ZGlmZiAtLWdpdCBhLy5naXRodWIvUFVMTF9SRVFVRVNUX1RFTVBMQVRFLm1kIGIvLmdpdGh1Yi9QVUxMX1JFUVVFU1RfVEVNUExBVEUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGNlODBkOAotLS0gL2Rldi9udWxsCisrKyBiLy5naXRodWIvUFVMTF9SRVFVRVNUX1RFTVBMQVRFLm1kCkBAIC0wLDAgKzEsOSBAQAorIyMgQ1B5dGhvbiBNaXJyb3IKKworaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9jcHl0aG9uIGlzIGEgY3B5dGhvbiBtaXJyb3IgcmVwb3NpdG9yeS4gUHVsbCByZXF1ZXN0cworYXJlIG5vdCBhY2NlcHRlZCBvbiB0aGlzIHJlcG8gYW5kIHdpbGwgYmUgYXV0b21hdGljYWxseSBjbG9zZWQuCisKKyMjIyBTdWJtaXQgcGF0Y2hlcyBhdCBodHRwczovL2J1Z3MucHl0aG9uLm9yZworCitGb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCBjb250cmlidXRpbmcgdG8gQ1B5dGhvbiwgc2VlIHRoZQorW2RldmVsb3BlcidzIGd1aWRlXShodHRwczovL2RvY3MucHl0aG9uLm9yZy9kZXZndWlkZS8jY29udHJpYnV0aW5nKS4KZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCmluZGV4IGQyNjdkMTUuLmVkNGViZmIgMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGlnbm9yZQpAQCAtMjEsOCArMjEsNiBAQAogTGliL2Rpc3R1dGlscy9jb21tYW5kLyoucGRiCiBMaWIvbGliMnRvMy8qLnBpY2tsZQogTGliL3Rlc3QvZGF0YS8qCi1MaWIvX3N5c2NvbmZpZ2RhdGEucHkKLUxpYi9wbGF0LW1hYy9lcnJvcnMucnNyYy5kZi5yc3JjCiBNYWtlZmlsZQogTWFrZWZpbGUucHJlCiBNaXNjL3B5dGhvbi5wYwpAQCAtNzMsNiArNzEsNyBAQAogaXBjaC8KIGxpYnB5dGhvbiouYQogbGlicHl0aG9uKi5zbyoKK2xpYnB5dGhvbiouZHlsaWIKIHBsYXRmb3JtCiBweWJ1aWxkZGlyLnR4dAogcHljb25maWcuaApkaWZmIC0tZ2l0IGEvLmhnaWdub3JlIGIvLmhnaWdub3JlCmluZGV4IGNmOTQ1M2EuLjkyODk2YjcgMTAwNjQ0Ci0tLSBhLy5oZ2lnbm9yZQorKysgYi8uaGdpZ25vcmUKQEAgLTIsNiArMiw3IEBACiAucHVyaWZ5CiAuc3ZuLwogXi5pZGVhLworXi52c2NvZGUvCiAuRFNfU3RvcmUKIE1ha2VmaWxlJAogTWFrZWZpbGUucHJlJApAQCAtMjUsNyArMjYsNiBAQAogcHl0aG9uLWNvbmZpZy5weSQKIHJlZmxvZy50eHQkCiB0YWdzJAotTGliL3BsYXQtbWFjL2Vycm9ycy5yc3JjLmRmLnJzcmMKIE1pc2MvcHl0aG9uLnBjCiBNaXNjL3B5dGhvbi1jb25maWcuc2gkCiBNb2R1bGVzL1NldHVwJApAQCAtNDMsNiArNDMsNyBAQAogc3ludGF4OiBnbG9iCiBsaWJweXRob24qLmEKIGxpYnB5dGhvbiouc28qCitsaWJweXRob24qLmR5bGliCiAqLnN3cAogKi5vCiAqLnB5YwpAQCAtNTQsNiArNTUsNyBAQAogKi5wcm9mY2xhbmc/CiAqLnByb2ZyYXcKICouZHluCitJbmNsdWRlL3B5ZHRyYWNlX3Byb2Jlcy5oCiBMaWIvZGlzdHV0aWxzL2NvbW1hbmQvKi5wZGIKIExpYi9saWIydG8zLyoucGlja2xlCiBMaWIvdGVzdC9kYXRhLyoKZGlmZiAtLWdpdCBhLy5oZ3RhZ3MgYi8uaGd0YWdzCmluZGV4IGVkNGZjOTIuLmY0OWI0ODMgMTAwNjQ0Ci0tLSBhLy5oZ3RhZ3MKKysrIGIvLmhndGFncwpAQCAtMTQ4LDYgKzE0OCw3IEBACiA3MzdlZmNhZGY1YTY3OGIxODRlMGZhNDMxYWFlMTEyNzZiZjA2NjQ4IHYzLjQuNAogMzYzMWJiNGEyNDkwMjkyZWJmODFkM2U5NDdhZTM2ZGExNDVkYTU2NCB2My40LjVyYzEKIDYxOWI2MWU1MDVkMGUyY2NjODUxNmIzNjZlNGRkZDE5NzFiNDZhNmYgdjMuNC41CiszNjMxYmI0YTI0OTAyOTJlYmY4MWQzZTk0N2FlMzZkYTE0NWRhNTY0IHYzLjQuNXJjMQogNWQ0YjZhNTdkNWZkNzU2NGJmNzNmM2RiMGU0NmZlNWVlYjAwYmNkOCB2My41LjBhMQogMDMzN2JkN2ViY2I2NTU5ZDY5Njc5YmM3MDI1MDU5YWQxY2U0ZjQzMiB2My41LjBhMgogODI2NTZlMjhiNWU1YzRhZTQ4ZDhkZDhiNWYwZDc5Njg5MDhhODJiNiB2My41LjBhMwpAQCAtMTY1LDMgKzE2NiwxMyBAQAogMzdhMDdjZWU1OTY5ZTZkMzY3MjU4MzE4N2E3M2NmNjM2ZmYyOGUxYiB2My41LjEKIDY4ZmVlYzY0ODhiMjYzMjdhODVhNjM0NjA1ZGQyOGVjYTRkYWE1ZjEgdjMuNS4ycmMxCiA0ZGVmMmEyOTAxYTU2MThlYTQ1YmNjOGYyYTE0MTFlZjMzYWYxOGFkIHYzLjUuMgorNTg5NmRhMzcyZmIwNDRlMzg1OTVmYjc0NDk1ZGUxZTFlN2M4ZmIzYyB2My42LjBhMQorMzc4ODkzNDIzNTUyMjNlMmZjMTQzOGRlM2RjN2ZmY2Q2MjVjNjBmNyB2My42LjBhMgorZjNlZGYxM2RjMzM5Yjg5NDJhZTZiMzA5NzcxYWIxOTdkZDhjZTZmYSB2My42LjBhMworMDE3Y2YyNjA5MzZiNDQ0Nzg4YzliNjcxZDE5NWI3YmZkODNkYmQyNSB2My42LjBhNAorNWIwY2E0ZWQ1ZTJmMDY2OWQ3NmVjZTdlZjk3NWM1NDQ1ODBmMTJiNCB2My42LjBiMQorYjlmYWRjN2QxYzNmOWMzYzc3ZjMyZjM1YWZiZTFhMWNjMzgwNzBlNiB2My42LjBiMgorODM0NWUwNjZjMGVkNzEzYzNlNTEwY2JjOGZhZmMxYzM4ZDZkMzA2YiB2My42LjBiMworMTg0OTZhYmRiM2Q1YzI3MzBhNjU5Yjc0N2E4OTI2MWIyMjE5ZmVjZiB2My42LjBiNAorMjlhMjczZWVlOWE1MjNlZTE3OGY2YTY2YzRhYzlkMzE3YzhmYzg0ZiB2My42LjByYzEKKzgwMGE2N2Y3ODA2ZGU0NWE3YWJkNTI3MzM1OWU3MDRiZjE0N2MwNzkgdjMuNi4wcmMyCmRpZmYgLS1naXQgYS9Eb2MvTWFrZWZpbGUgYi9Eb2MvTWFrZWZpbGUKaW5kZXggMTBjMzI4OC4uOTFmOTM3ZiAxMDA2NDQKLS0tIGEvRG9jL01ha2VmaWxlCisrKyBiL0RvYy9NYWtlZmlsZQpAQCAtMTUzLDcgKzE1Myw3IEBACiAJY3AgLXBQUiBidWlsZC9lcHViL1B5dGhvbi5lcHViIGRpc3QvcHl0aG9uLSQoRElTVFZFUlNJT04pLWRvY3MuZXB1YgogCiBjaGVjazoKLQkkKFBZVEhPTikgdG9vbHMvcnN0bGludC5weSAtaSB0b29scworCSQoUFlUSE9OKSB0b29scy9yc3RsaW50LnB5IC1pIHRvb2xzIC1pIHZlbnYKIAogc2VydmU6CiAJLi4vVG9vbHMvc2NyaXB0cy9zZXJ2ZS5weSBidWlsZC9odG1sCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvYXJnLnJzdCBiL0RvYy9jLWFwaS9hcmcucnN0CmluZGV4IDExMjM5NzIuLmU4ZTdlMGQgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9hcmcucnN0CisrKyBiL0RvYy9jLWFwaS9hcmcucnN0CkBAIC0yMjMsOCArMjIzLDcgQEAKICAgIDpjOmZ1bmM6YFB5QXJnX1BhcnNlVHVwbGVgIHdpbGwgdXNlIHRoaXMgbG9jYXRpb24gYXMgdGhlIGJ1ZmZlciBhbmQgaW50ZXJwcmV0IHRoZQogICAgaW5pdGlhbCB2YWx1ZSBvZiAqXCpidWZmZXJfbGVuZ3RoKiBhcyB0aGUgYnVmZmVyIHNpemUuICBJdCB3aWxsIHRoZW4gY29weSB0aGUKICAgIGVuY29kZWQgZGF0YSBpbnRvIHRoZSBidWZmZXIgYW5kIE5VTC10ZXJtaW5hdGUgaXQuICBJZiB0aGUgYnVmZmVyIGlzIG5vdCBsYXJnZQotICAgZW5vdWdoLCBhIDpleGM6YFR5cGVFcnJvcmAgd2lsbCBiZSBzZXQuCi0gICBOb3RlOiBzdGFydGluZyBmcm9tIFB5dGhvbiAzLjYgYSA6ZXhjOmBWYWx1ZUVycm9yYCB3aWxsIGJlIHNldC4KKyAgIGVub3VnaCwgYSA6ZXhjOmBWYWx1ZUVycm9yYCB3aWxsIGJlIHNldC4KIAogICAgSW4gYm90aCBjYXNlcywgKlwqYnVmZmVyX2xlbmd0aCogaXMgc2V0IHRvIHRoZSBsZW5ndGggb2YgdGhlIGVuY29kZWQgZGF0YQogICAgd2l0aG91dCB0aGUgdHJhaWxpbmcgTlVMIGJ5dGUuCkBAIC0yNjYsMTUgKzI2NSwxMiBAQAogICAgQ29udmVydCBhIFB5dGhvbiBpbnRlZ2VyIHRvIGEgQyA6Yzp0eXBlOmB1bnNpZ25lZCBsb25nYCB3aXRob3V0CiAgICBvdmVyZmxvdyBjaGVja2luZy4KIAotYGBMYGAgKDpjbGFzczpgaW50YCkgW1BZX0xPTkdfTE9OR10KLSAgIENvbnZlcnQgYSBQeXRob24gaW50ZWdlciB0byBhIEMgOmM6dHlwZTpgbG9uZyBsb25nYC4gIFRoaXMgZm9ybWF0IGlzIG9ubHkKLSAgIGF2YWlsYWJsZSBvbiBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0IDpjOnR5cGU6YGxvbmcgbG9uZ2AgKG9yIDpjOnR5cGU6YF9pbnQ2NGAgb24KLSAgIFdpbmRvd3MpLgorYGBMYGAgKDpjbGFzczpgaW50YCkgW2xvbmcgbG9uZ10KKyAgIENvbnZlcnQgYSBQeXRob24gaW50ZWdlciB0byBhIEMgOmM6dHlwZTpgbG9uZyBsb25nYC4KIAotYGBLYGAgKDpjbGFzczpgaW50YCkgW3Vuc2lnbmVkIFBZX0xPTkdfTE9OR10KK2BgS2BgICg6Y2xhc3M6YGludGApIFt1bnNpZ25lZCBsb25nIGxvbmddCiAgICBDb252ZXJ0IGEgUHl0aG9uIGludGVnZXIgdG8gYSBDIDpjOnR5cGU6YHVuc2lnbmVkIGxvbmcgbG9uZ2AKLSAgIHdpdGhvdXQgb3ZlcmZsb3cgY2hlY2tpbmcuICBUaGlzIGZvcm1hdCBpcyBvbmx5IGF2YWlsYWJsZSBvbiBwbGF0Zm9ybXMgdGhhdAotICAgc3VwcG9ydCA6Yzp0eXBlOmB1bnNpZ25lZCBsb25nIGxvbmdgIChvciA6Yzp0eXBlOmB1bnNpZ25lZCBfaW50NjRgIG9uIFdpbmRvd3MpLgorICAgd2l0aG91dCBvdmVyZmxvdyBjaGVja2luZy4KIAogYGBuYGAgKDpjbGFzczpgaW50YCkgW1B5X3NzaXplX3RdCiAgICBDb252ZXJ0IGEgUHl0aG9uIGludGVnZXIgdG8gYSBDIDpjOnR5cGU6YFB5X3NzaXplX3RgLgpAQCAtNDI0LDggKzQyMCwxNSBAQAogLi4gYzpmdW5jdGlvbjo6IGludCBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdywgY29uc3QgY2hhciAqZm9ybWF0LCBjaGFyICprZXl3b3Jkc1tdLCAuLi4pCiAKICAgIFBhcnNlIHRoZSBwYXJhbWV0ZXJzIG9mIGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBib3RoIHBvc2l0aW9uYWwgYW5kIGtleXdvcmQKLSAgIHBhcmFtZXRlcnMgaW50byBsb2NhbCB2YXJpYWJsZXMuICBSZXR1cm5zIHRydWUgb24gc3VjY2Vzczsgb24gZmFpbHVyZSwgaXQKLSAgIHJldHVybnMgZmFsc2UgYW5kIHJhaXNlcyB0aGUgYXBwcm9wcmlhdGUgZXhjZXB0aW9uLgorICAgcGFyYW1ldGVycyBpbnRvIGxvY2FsIHZhcmlhYmxlcy4gIFRoZSAqa2V5d29yZHMqIGFyZ3VtZW50IGlzIGEKKyAgICpOVUxMKi10ZXJtaW5hdGVkIGFycmF5IG9mIGtleXdvcmQgcGFyYW1ldGVyIG5hbWVzLiAgRW1wdHkgbmFtZXMgZGVub3RlCisgICA6cmVmOmBwb3NpdGlvbmFsLW9ubHkgcGFyYW1ldGVycyA8cG9zaXRpb25hbC1vbmx5X3BhcmFtZXRlcj5gLgorICAgUmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3M7IG9uIGZhaWx1cmUsIGl0IHJldHVybnMgZmFsc2UgYW5kIHJhaXNlcyB0aGUKKyAgIGFwcHJvcHJpYXRlIGV4Y2VwdGlvbi4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIDpyZWY6YHBvc2l0aW9uYWwtb25seSBwYXJhbWV0ZXJzCisgICAgICA8cG9zaXRpb25hbC1vbmx5X3BhcmFtZXRlcj5gLgogCiAKIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHMoUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdywgY29uc3QgY2hhciAqZm9ybWF0LCBjaGFyICprZXl3b3Jkc1tdLCB2YV9saXN0IHZhcmdzKQpAQCAtNTg4LDE1ICs1OTEsMTEgQEAKICAgIGBga2BgICg6Y2xhc3M6YGludGApIFt1bnNpZ25lZCBsb25nXQogICAgICAgQ29udmVydCBhIEMgOmM6dHlwZTpgdW5zaWduZWQgbG9uZ2AgdG8gYSBQeXRob24gaW50ZWdlciBvYmplY3QuCiAKLSAgIGBgTGBgICg6Y2xhc3M6YGludGApIFtQWV9MT05HX0xPTkddCi0gICAgICBDb252ZXJ0IGEgQyA6Yzp0eXBlOmBsb25nIGxvbmdgIHRvIGEgUHl0aG9uIGludGVnZXIgb2JqZWN0LiBPbmx5IGF2YWlsYWJsZQotICAgICAgb24gcGxhdGZvcm1zIHRoYXQgc3VwcG9ydCA6Yzp0eXBlOmBsb25nIGxvbmdgIChvciA6Yzp0eXBlOmBfaW50NjRgIG9uCi0gICAgICBXaW5kb3dzKS4KKyAgIGBgTGBgICg6Y2xhc3M6YGludGApIFtsb25nIGxvbmddCisgICAgICBDb252ZXJ0IGEgQyA6Yzp0eXBlOmBsb25nIGxvbmdgIHRvIGEgUHl0aG9uIGludGVnZXIgb2JqZWN0LgogCi0gICBgYEtgYCAoOmNsYXNzOmBpbnRgKSBbdW5zaWduZWQgUFlfTE9OR19MT05HXQotICAgICAgQ29udmVydCBhIEMgOmM6dHlwZTpgdW5zaWduZWQgbG9uZyBsb25nYCB0byBhIFB5dGhvbiBpbnRlZ2VyIG9iamVjdC4gT25seQotICAgICAgYXZhaWxhYmxlIG9uIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnQgOmM6dHlwZTpgdW5zaWduZWQgbG9uZyBsb25nYCAob3IKLSAgICAgIDpjOnR5cGU6YHVuc2lnbmVkIF9pbnQ2NGAgb24gV2luZG93cykuCisgICBgYEtgYCAoOmNsYXNzOmBpbnRgKSBbdW5zaWduZWQgbG9uZyBsb25nXQorICAgICAgQ29udmVydCBhIEMgOmM6dHlwZTpgdW5zaWduZWQgbG9uZyBsb25nYCB0byBhIFB5dGhvbiBpbnRlZ2VyIG9iamVjdC4KIAogICAgYGBuYGAgKDpjbGFzczpgaW50YCkgW1B5X3NzaXplX3RdCiAgICAgICBDb252ZXJ0IGEgQyA6Yzp0eXBlOmBQeV9zc2l6ZV90YCB0byBhIFB5dGhvbiBpbnRlZ2VyLgpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL2V4Y2VwdGlvbnMucnN0IGIvRG9jL2MtYXBpL2V4Y2VwdGlvbnMucnN0CmluZGV4IDE5Y2JiM2IuLmVlNTE3OTEgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9leGNlcHRpb25zLnJzdAorKysgYi9Eb2MvYy1hcGkvZXhjZXB0aW9ucy5yc3QKQEAgLTMwNiw2ICszMDYsMTMgQEAKICAgIDptb2Q6YHdhcm5pbmdzYCBtb2R1bGUgYW5kIHRoZSA6b3B0aW9uOmAtV2Agb3B0aW9uIGluIHRoZSBjb21tYW5kIGxpbmUKICAgIGRvY3VtZW50YXRpb24uICBUaGVyZSBpcyBubyBDIEFQSSBmb3Igd2FybmluZyBjb250cm9sLgogCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5RXJyX1NldEltcG9ydEVycm9yU3ViY2xhc3MoUHlPYmplY3QgKm1zZywgUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICpwYXRoKQorCisgICBNdWNoIGxpa2UgOmM6ZnVuYzpgUHlFcnJfU2V0SW1wb3J0RXJyb3JgIGJ1dCB0aGlzIGZ1bmN0aW9uIGFsbG93cyBmb3IKKyAgIHNwZWNpZnlpbmcgYSBzdWJjbGFzcyBvZiA6ZXhjOmBJbXBvcnRFcnJvcmAgdG8gcmFpc2UuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAKIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlFcnJfV2FybkV4cGxpY2l0T2JqZWN0KFB5T2JqZWN0ICpjYXRlZ29yeSwgUHlPYmplY3QgKm1lc3NhZ2UsIFB5T2JqZWN0ICpmaWxlbmFtZSwgaW50IGxpbmVubywgUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnJlZ2lzdHJ5KQogCkBAIC0zMzQsNiArMzQxLDE0IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAogCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5RXJyX1Jlc291cmNlV2FybmluZyhQeU9iamVjdCAqc291cmNlLCBQeV9zc2l6ZV90IHN0YWNrX2xldmVsLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKKworICAgRnVuY3Rpb24gc2ltaWxhciB0byA6YzpmdW5jOmBQeUVycl9XYXJuRm9ybWF0YCwgYnV0ICpjYXRlZ29yeSogaXMKKyAgIDpleGM6YFJlc291cmNlV2FybmluZ2AgYW5kIHBhc3MgKnNvdXJjZSogdG8gOmZ1bmM6YHdhcm5pbmdzLldhcm5pbmdNZXNzYWdlYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKwogUXVlcnlpbmcgdGhlIGVycm9yIGluZGljYXRvcgogPT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCkBAIC03NzQsNiArNzg5LDggQEAKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKIHwgOmM6ZGF0YTpgUHlFeGNfSW1wb3J0RXJyb3JgICAgICAgICAgICAgIHwgOmV4YzpgSW1wb3J0RXJyb3JgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfTW9kdWxlTm90Rm91bmRFcnJvcmAgICAgIHwgOmV4YzpgTW9kdWxlTm90Rm91bmRFcnJvcmAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKIHwgOmM6ZGF0YTpgUHlFeGNfSW5kZXhFcnJvcmAgICAgICAgICAgICAgIHwgOmV4YzpgSW5kZXhFcnJvcmAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKIHwgOmM6ZGF0YTpgUHlFeGNfSW50ZXJydXB0ZWRFcnJvcmAgICAgICAgIHwgOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAgICAgICAgICB8ICAgICAgICAgIHwKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9pbml0LnJzdCBiL0RvYy9jLWFwaS9pbml0LnJzdAppbmRleCA3MGI5OGFlLi4yOTY1YmM5IDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvaW5pdC5yc3QKKysrIGIvRG9jL2MtYXBpL2luaXQucnN0CkBAIC0yNSw3ICsyNSw3IEBACiAgICAgICB0cmlwbGU6IG1vZHVsZTsgc2VhcmNoOyBwYXRoCiAgICAgICBzaW5nbGU6IFB5U3lzX1NldEFyZ3YoKQogICAgICAgc2luZ2xlOiBQeVN5c19TZXRBcmd2RXgoKQotICAgICAgc2luZ2xlOiBQeV9GaW5hbGl6ZSgpCisgICAgICBzaW5nbGU6IFB5X0ZpbmFsaXplRXgoKQogCiAgICBJbml0aWFsaXplIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIuICBJbiBhbiBhcHBsaWNhdGlvbiBlbWJlZGRpbmcgIFB5dGhvbiwgdGhpcwogICAgc2hvdWxkIGJlIGNhbGxlZCBiZWZvcmUgdXNpbmcgYW55IG90aGVyIFB5dGhvbi9DIEFQSSBmdW5jdGlvbnM7IHdpdGggdGhlCkBAIC0zNCw3ICszNCw3IEBACiAgICBtb2R1bGVzIDptb2Q6YGJ1aWx0aW5zYCwgOm1vZDpgX19tYWluX19gIGFuZCA6bW9kOmBzeXNgLiAgSXQgYWxzbyBpbml0aWFsaXplcwogICAgdGhlIG1vZHVsZSBzZWFyY2ggcGF0aCAoYGBzeXMucGF0aGBgKS4gSXQgZG9lcyBub3Qgc2V0IGBgc3lzLmFyZ3ZgYDsgdXNlCiAgICA6YzpmdW5jOmBQeVN5c19TZXRBcmd2RXhgIGZvciB0aGF0LiAgVGhpcyBpcyBhIG5vLW9wIHdoZW4gY2FsbGVkIGZvciBhIHNlY29uZCB0aW1lCi0gICAod2l0aG91dCBjYWxsaW5nIDpjOmZ1bmM6YFB5X0ZpbmFsaXplYCBmaXJzdCkuICBUaGVyZSBpcyBubyByZXR1cm4gdmFsdWU7IGl0IGlzIGEKKyAgICh3aXRob3V0IGNhbGxpbmcgOmM6ZnVuYzpgUHlfRmluYWxpemVFeGAgZmlyc3QpLiAgVGhlcmUgaXMgbm8gcmV0dXJuIHZhbHVlOyBpdCBpcyBhCiAgICBmYXRhbCBlcnJvciBpZiB0aGUgaW5pdGlhbGl6YXRpb24gZmFpbHMuCiAKICAgIC4uIG5vdGU6OgpAQCAtNTIsMTkgKzUyLDIwIEBACiAuLiBjOmZ1bmN0aW9uOjogaW50IFB5X0lzSW5pdGlhbGl6ZWQoKQogCiAgICBSZXR1cm4gdHJ1ZSAobm9uemVybykgd2hlbiB0aGUgUHl0aG9uIGludGVycHJldGVyIGhhcyBiZWVuIGluaXRpYWxpemVkLCBmYWxzZQotICAgKHplcm8pIGlmIG5vdC4gIEFmdGVyIDpjOmZ1bmM6YFB5X0ZpbmFsaXplYCBpcyBjYWxsZWQsIHRoaXMgcmV0dXJucyBmYWxzZSB1bnRpbAorICAgKHplcm8pIGlmIG5vdC4gIEFmdGVyIDpjOmZ1bmM6YFB5X0ZpbmFsaXplRXhgIGlzIGNhbGxlZCwgdGhpcyByZXR1cm5zIGZhbHNlIHVudGlsCiAgICA6YzpmdW5jOmBQeV9Jbml0aWFsaXplYCBpcyBjYWxsZWQgYWdhaW4uCiAKIAotLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlfRmluYWxpemUoKQorLi4gYzpmdW5jdGlvbjo6IGludCBQeV9GaW5hbGl6ZUV4KCkKIAogICAgVW5kbyBhbGwgaW5pdGlhbGl6YXRpb25zIG1hZGUgYnkgOmM6ZnVuYzpgUHlfSW5pdGlhbGl6ZWAgYW5kIHN1YnNlcXVlbnQgdXNlIG9mCiAgICBQeXRob24vQyBBUEkgZnVuY3Rpb25zLCBhbmQgZGVzdHJveSBhbGwgc3ViLWludGVycHJldGVycyAoc2VlCiAgICA6YzpmdW5jOmBQeV9OZXdJbnRlcnByZXRlcmAgYmVsb3cpIHRoYXQgd2VyZSBjcmVhdGVkIGFuZCBub3QgeWV0IGRlc3Ryb3llZCBzaW5jZQogICAgdGhlIGxhc3QgY2FsbCB0byA6YzpmdW5jOmBQeV9Jbml0aWFsaXplYC4gIElkZWFsbHksIHRoaXMgZnJlZXMgYWxsIG1lbW9yeQogICAgYWxsb2NhdGVkIGJ5IHRoZSBQeXRob24gaW50ZXJwcmV0ZXIuICBUaGlzIGlzIGEgbm8tb3Agd2hlbiBjYWxsZWQgZm9yIGEgc2Vjb25kCi0gICB0aW1lICh3aXRob3V0IGNhbGxpbmcgOmM6ZnVuYzpgUHlfSW5pdGlhbGl6ZWAgYWdhaW4gZmlyc3QpLiAgVGhlcmUgaXMgbm8gcmV0dXJuCi0gICB2YWx1ZTsgZXJyb3JzIGR1cmluZyBmaW5hbGl6YXRpb24gYXJlIGlnbm9yZWQuCisgICB0aW1lICh3aXRob3V0IGNhbGxpbmcgOmM6ZnVuYzpgUHlfSW5pdGlhbGl6ZWAgYWdhaW4gZmlyc3QpLiAgTm9ybWFsbHkgdGhlCisgICByZXR1cm4gdmFsdWUgaXMgMC4gIElmIHRoZXJlIHdlcmUgZXJyb3JzIGR1cmluZyBmaW5hbGl6YXRpb24KKyAgIChmbHVzaGluZyBidWZmZXJlZCBkYXRhKSwgLTEgaXMgcmV0dXJuZWQuCiAKICAgIFRoaXMgZnVuY3Rpb24gaXMgcHJvdmlkZWQgZm9yIGEgbnVtYmVyIG9mIHJlYXNvbnMuICBBbiBlbWJlZGRpbmcgYXBwbGljYXRpb24KICAgIG1pZ2h0IHdhbnQgdG8gcmVzdGFydCBQeXRob24gd2l0aG91dCBoYXZpbmcgdG8gcmVzdGFydCB0aGUgYXBwbGljYXRpb24gaXRzZWxmLgpAQCAtODMsNyArODQsMTUgQEAKICAgIGZyZWVkLiAgU29tZSBtZW1vcnkgYWxsb2NhdGVkIGJ5IGV4dGVuc2lvbiBtb2R1bGVzIG1heSBub3QgYmUgZnJlZWQuICBTb21lCiAgICBleHRlbnNpb25zIG1heSBub3Qgd29yayBwcm9wZXJseSBpZiB0aGVpciBpbml0aWFsaXphdGlvbiByb3V0aW5lIGlzIGNhbGxlZCBtb3JlCiAgICB0aGFuIG9uY2U7IHRoaXMgY2FuIGhhcHBlbiBpZiBhbiBhcHBsaWNhdGlvbiBjYWxscyA6YzpmdW5jOmBQeV9Jbml0aWFsaXplYCBhbmQKLSAgIDpjOmZ1bmM6YFB5X0ZpbmFsaXplYCBtb3JlIHRoYW4gb25jZS4KKyAgIDpjOmZ1bmM6YFB5X0ZpbmFsaXplRXhgIG1vcmUgdGhhbiBvbmNlLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCisuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeV9GaW5hbGl6ZSgpCisKKyAgIFRoaXMgaXMgYSBiYWNrd2FyZHMtY29tcGF0aWJsZSB2ZXJzaW9uIG9mIDpjOmZ1bmM6YFB5X0ZpbmFsaXplRXhgIHRoYXQKKyAgIGRpc3JlZ2FyZHMgdGhlIHJldHVybiB2YWx1ZS4KIAogCiBQcm9jZXNzLXdpZGUgcGFyYW1ldGVycwpAQCAtMTExLDcgKzEyMCw3IEBACiAgICBOb3RlIHRoYXQgOmRhdGE6YHN5cy5zdGRlcnJgIGFsd2F5cyB1c2VzIHRoZSAiYmFja3NsYXNocmVwbGFjZSIgZXJyb3IKICAgIGhhbmRsZXIsIHJlZ2FyZGxlc3Mgb2YgdGhpcyAob3IgYW55IG90aGVyKSBzZXR0aW5nLgogCi0gICBJZiA6YzpmdW5jOmBQeV9GaW5hbGl6ZWAgaXMgY2FsbGVkLCB0aGlzIGZ1bmN0aW9uIHdpbGwgbmVlZCB0byBiZSBjYWxsZWQKKyAgIElmIDpjOmZ1bmM6YFB5X0ZpbmFsaXplRXhgIGlzIGNhbGxlZCwgdGhpcyBmdW5jdGlvbiB3aWxsIG5lZWQgdG8gYmUgY2FsbGVkCiAgICBhZ2FpbiBpbiBvcmRlciB0byBhZmZlY3Qgc3Vic2VxdWVudCBjYWxscyB0byA6YzpmdW5jOmBQeV9Jbml0aWFsaXplYC4KIAogICAgUmV0dXJucyBgYDBgYCBpZiBzdWNjZXNzZnVsLCBhIG5vbnplcm8gdmFsdWUgb24gZXJyb3IgKGUuZy4gY2FsbGluZyBhZnRlciB0aGUKQEAgLTkyMiw3ICs5MzEsNyBAQAogICAgZW50cnkuKQogCiAgICAuLiBpbmRleDo6Ci0gICAgICBzaW5nbGU6IFB5X0ZpbmFsaXplKCkKKyAgICAgIHNpbmdsZTogUHlfRmluYWxpemVFeCgpCiAgICAgICBzaW5nbGU6IFB5X0luaXRpYWxpemUoKQogCiAgICBFeHRlbnNpb24gbW9kdWxlcyBhcmUgc2hhcmVkIGJldHdlZW4gKHN1Yi0paW50ZXJwcmV0ZXJzIGFzIGZvbGxvd3M6IHRoZSBmaXJzdApAQCAtOTMyLDcgKzk0MSw3IEBACiAgICBhbmQgZmlsbGVkIHdpdGggdGhlIGNvbnRlbnRzIG9mIHRoaXMgY29weTsgdGhlIGV4dGVuc2lvbidzIGBgaW5pdGBgIGZ1bmN0aW9uIGlzCiAgICBub3QgY2FsbGVkLiAgTm90ZSB0aGF0IHRoaXMgaXMgZGlmZmVyZW50IGZyb20gd2hhdCBoYXBwZW5zIHdoZW4gYW4gZXh0ZW5zaW9uIGlzCiAgICBpbXBvcnRlZCBhZnRlciB0aGUgaW50ZXJwcmV0ZXIgaGFzIGJlZW4gY29tcGxldGVseSByZS1pbml0aWFsaXplZCBieSBjYWxsaW5nCi0gICA6YzpmdW5jOmBQeV9GaW5hbGl6ZWAgYW5kIDpjOmZ1bmM6YFB5X0luaXRpYWxpemVgOyBpbiB0aGF0IGNhc2UsIHRoZSBleHRlbnNpb24ncworICAgOmM6ZnVuYzpgUHlfRmluYWxpemVFeGAgYW5kIDpjOmZ1bmM6YFB5X0luaXRpYWxpemVgOyBpbiB0aGF0IGNhc2UsIHRoZSBleHRlbnNpb24ncwogICAgYGBpbml0bW9kdWxlYGAgZnVuY3Rpb24gKmlzKiBjYWxsZWQgYWdhaW4uCiAKICAgIC4uIGluZGV4Ojogc2luZ2xlOiBjbG9zZSgpIChpbiBtb2R1bGUgb3MpCkBAIC05NDAsMTQgKzk0OSwxNCBAQAogCiAuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeV9FbmRJbnRlcnByZXRlcihQeVRocmVhZFN0YXRlICp0c3RhdGUpCiAKLSAgIC4uIGluZGV4Ojogc2luZ2xlOiBQeV9GaW5hbGl6ZSgpCisgICAuLiBpbmRleDo6IHNpbmdsZTogUHlfRmluYWxpemVFeCgpCiAKICAgIERlc3Ryb3kgdGhlIChzdWItKWludGVycHJldGVyIHJlcHJlc2VudGVkIGJ5IHRoZSBnaXZlbiB0aHJlYWQgc3RhdGUuIFRoZSBnaXZlbgogICAgdGhyZWFkIHN0YXRlIG11c3QgYmUgdGhlIGN1cnJlbnQgdGhyZWFkIHN0YXRlLiAgU2VlIHRoZSBkaXNjdXNzaW9uIG9mIHRocmVhZAogICAgc3RhdGVzIGJlbG93LiAgV2hlbiB0aGUgY2FsbCByZXR1cm5zLCB0aGUgY3VycmVudCB0aHJlYWQgc3RhdGUgaXMgKk5VTEwqLiAgQWxsCiAgICB0aHJlYWQgc3RhdGVzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGludGVycHJldGVyIGFyZSBkZXN0cm95ZWQuICAoVGhlIGdsb2JhbAogICAgaW50ZXJwcmV0ZXIgbG9jayBtdXN0IGJlIGhlbGQgYmVmb3JlIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiBhbmQgaXMgc3RpbGwgaGVsZAotICAgd2hlbiBpdCByZXR1cm5zLikgIDpjOmZ1bmM6YFB5X0ZpbmFsaXplYCB3aWxsIGRlc3Ryb3kgYWxsIHN1Yi1pbnRlcnByZXRlcnMgdGhhdAorICAgd2hlbiBpdCByZXR1cm5zLikgIDpjOmZ1bmM6YFB5X0ZpbmFsaXplRXhgIHdpbGwgZGVzdHJveSBhbGwgc3ViLWludGVycHJldGVycyB0aGF0CiAgICBoYXZlbid0IGJlZW4gZXhwbGljaXRseSBkZXN0cm95ZWQgYXQgdGhhdCBwb2ludC4KIAogCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvaW50cm8ucnN0IGIvRG9jL2MtYXBpL2ludHJvLnJzdAppbmRleCBiYzNhNzUyLi43NDY4MWQyIDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvaW50cm8ucnN0CisrKyBiL0RvYy9jLWFwaS9pbnRyby5yc3QKQEAgLTY0LDkgKzY0LDEwIEBACiBsb2NhdGVkIGluIHRoZSBkaXJlY3RvcmllcyA6ZmlsZTpge3ByZWZpeH0vaW5jbHVkZS9weXRob252ZXJzaW9uL2AgYW5kCiA6ZmlsZTpge2V4ZWNfcHJlZml4fS9pbmNsdWRlL3B5dGhvbnZlcnNpb24vYCwgd2hlcmUgOmVudnZhcjpgcHJlZml4YCBhbmQKIDplbnZ2YXI6YGV4ZWNfcHJlZml4YCBhcmUgZGVmaW5lZCBieSB0aGUgY29ycmVzcG9uZGluZyBwYXJhbWV0ZXJzIHRvIFB5dGhvbidzCi06cHJvZ3JhbTpgY29uZmlndXJlYCBzY3JpcHQgYW5kICp2ZXJzaW9uKiBpcyBgYHN5cy52ZXJzaW9uWzozXWBgLiAgT24gV2luZG93cywKLXRoZSBoZWFkZXJzIGFyZSBpbnN0YWxsZWQgaW4gOmZpbGU6YHtwcmVmaXh9L2luY2x1ZGVgLCB3aGVyZSA6ZW52dmFyOmBwcmVmaXhgIGlzCi10aGUgaW5zdGFsbGF0aW9uIGRpcmVjdG9yeSBzcGVjaWZpZWQgdG8gdGhlIGluc3RhbGxlci4KKzpwcm9ncmFtOmBjb25maWd1cmVgIHNjcmlwdCBhbmQgKnZlcnNpb24qIGlzCitgYCclZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXWBgLiAgT24gV2luZG93cywgdGhlIGhlYWRlcnMgYXJlIGluc3RhbGxlZAoraW4gOmZpbGU6YHtwcmVmaXh9L2luY2x1ZGVgLCB3aGVyZSA6ZW52dmFyOmBwcmVmaXhgIGlzIHRoZSBpbnN0YWxsYXRpb24KK2RpcmVjdG9yeSBzcGVjaWZpZWQgdG8gdGhlIGluc3RhbGxlci4KIAogVG8gaW5jbHVkZSB0aGUgaGVhZGVycywgcGxhY2UgYm90aCBkaXJlY3RvcmllcyAoaWYgZGlmZmVyZW50KSBvbiB5b3VyIGNvbXBpbGVyJ3MKIHNlYXJjaCBwYXRoIGZvciBpbmNsdWRlcy4gIERvICpub3QqIHBsYWNlIHRoZSBwYXJlbnQgZGlyZWN0b3JpZXMgb24gdGhlIHNlYXJjaApAQCAtNTc4LDkgKzU3OSw5IEBACiBhcHBsaWNhdGlvbiBtYXkgd2FudCB0byBzdGFydCBvdmVyIChtYWtlIGFub3RoZXIgY2FsbCB0bwogOmM6ZnVuYzpgUHlfSW5pdGlhbGl6ZWApIG9yIHRoZSBhcHBsaWNhdGlvbiBpcyBzaW1wbHkgZG9uZSB3aXRoIGl0cyAgdXNlIG9mCiBQeXRob24gYW5kIHdhbnRzIHRvIGZyZWUgbWVtb3J5IGFsbG9jYXRlZCBieSBQeXRob24uICBUaGlzIGNhbiBiZSBhY2NvbXBsaXNoZWQKLWJ5IGNhbGxpbmcgOmM6ZnVuYzpgUHlfRmluYWxpemVgLiAgVGhlIGZ1bmN0aW9uIDpjOmZ1bmM6YFB5X0lzSW5pdGlhbGl6ZWRgIHJldHVybnMKK2J5IGNhbGxpbmcgOmM6ZnVuYzpgUHlfRmluYWxpemVFeGAuICBUaGUgZnVuY3Rpb24gOmM6ZnVuYzpgUHlfSXNJbml0aWFsaXplZGAgcmV0dXJucwogdHJ1ZSBpZiBQeXRob24gaXMgY3VycmVudGx5IGluIHRoZSBpbml0aWFsaXplZCBzdGF0ZS4gIE1vcmUgaW5mb3JtYXRpb24gYWJvdXQKLXRoZXNlIGZ1bmN0aW9ucyBpcyBnaXZlbiBpbiBhIGxhdGVyIGNoYXB0ZXIuIE5vdGljZSB0aGF0IDpjOmZ1bmM6YFB5X0ZpbmFsaXplYAordGhlc2UgZnVuY3Rpb25zIGlzIGdpdmVuIGluIGEgbGF0ZXIgY2hhcHRlci4gTm90aWNlIHRoYXQgOmM6ZnVuYzpgUHlfRmluYWxpemVFeGAKIGRvZXMgKm5vdCogZnJlZSBhbGwgbWVtb3J5IGFsbG9jYXRlZCBieSB0aGUgUHl0aG9uIGludGVycHJldGVyLCBlLmcuIG1lbW9yeQogYWxsb2NhdGVkIGJ5IGV4dGVuc2lvbiBtb2R1bGVzIGN1cnJlbnRseSBjYW5ub3QgYmUgcmVsZWFzZWQuCiAKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9sb25nLnJzdCBiL0RvYy9jLWFwaS9sb25nLnJzdAppbmRleCA2OGY2YThlLi5mNTkyY2I2IDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvbG9uZy5yc3QKKysrIGIvRG9jL2MtYXBpL2xvbmcucnN0CkBAIC02MiwxMyArNjIsMTMgQEAKICAgICpOVUxMKiBvbiBmYWlsdXJlLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlMb25nX0Zyb21Mb25nTG9uZyhQWV9MT05HX0xPTkcgdikKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlMb25nX0Zyb21Mb25nTG9uZyhsb25nIGxvbmcgdikKIAogICAgUmV0dXJuIGEgbmV3IDpjOnR5cGU6YFB5TG9uZ09iamVjdGAgb2JqZWN0IGZyb20gYSBDIDpjOnR5cGU6YGxvbmcgbG9uZ2AsIG9yICpOVUxMKgogICAgb24gZmFpbHVyZS4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZyh1bnNpZ25lZCBQWV9MT05HX0xPTkcgdikKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKHVuc2lnbmVkIGxvbmcgbG9uZyB2KQogCiAgICBSZXR1cm4gYSBuZXcgOmM6dHlwZTpgUHlMb25nT2JqZWN0YCBvYmplY3QgZnJvbSBhIEMgOmM6dHlwZTpgdW5zaWduZWQgbG9uZyBsb25nYCwKICAgIG9yICpOVUxMKiBvbiBmYWlsdXJlLgpAQCAtMTQ4LDcgKzE0OCw3IEBACiAgICBvY2N1cnMgc2V0ICpcKm92ZXJmbG93KiB0byBgYDBgYCBhbmQgcmV0dXJuIGBgLTFgYCBhcyB1c3VhbC4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUFlfTE9OR19MT05HIFB5TG9uZ19Bc0xvbmdMb25nKFB5T2JqZWN0ICpvYmopCisuLiBjOmZ1bmN0aW9uOjogbG9uZyBsb25nIFB5TG9uZ19Bc0xvbmdMb25nKFB5T2JqZWN0ICpvYmopCiAKICAgIC4uIGluZGV4OjoKICAgICAgIHNpbmdsZTogT3ZlcmZsb3dFcnJvciAoYnVpbHQtaW4gZXhjZXB0aW9uKQpAQCAtMTYxLDcgKzE2MSw3IEBACiAgICA6Yzp0eXBlOmBsb25nYC4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUFlfTE9OR19MT05HIFB5TG9uZ19Bc0xvbmdMb25nQW5kT3ZlcmZsb3coUHlPYmplY3QgKm9iaiwgaW50ICpvdmVyZmxvdykKKy4uIGM6ZnVuY3Rpb246OiBsb25nIGxvbmcgUHlMb25nX0FzTG9uZ0xvbmdBbmRPdmVyZmxvdyhQeU9iamVjdCAqb2JqLCBpbnQgKm92ZXJmbG93KQogCiAgICBSZXR1cm4gYSBDIDpjOnR5cGU6YGxvbmcgbG9uZ2AgcmVwcmVzZW50YXRpb24gb2YgKm9iaiouICBJZiAqb2JqKiBpcyBub3QgYW4KICAgIGluc3RhbmNlIG9mIDpjOnR5cGU6YFB5TG9uZ09iamVjdGAsIGZpcnN0IGNhbGwgaXRzIDptZXRoOmBfX2ludF9fYCBtZXRob2QKQEAgLTIxMCwxNiArMjEwLDE2IEBACiAgICA6Yzp0eXBlOmBzaXplX3RgLgogCiAKLS4uIGM6ZnVuY3Rpb246OiB1bnNpZ25lZCBQWV9MT05HX0xPTkcgUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZyhQeU9iamVjdCAqcHlsb25nKQorLi4gYzpmdW5jdGlvbjo6IHVuc2lnbmVkIGxvbmcgbG9uZyBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nKFB5T2JqZWN0ICpweWxvbmcpCiAKICAgIC4uIGluZGV4OjoKICAgICAgIHNpbmdsZTogT3ZlcmZsb3dFcnJvciAoYnVpbHQtaW4gZXhjZXB0aW9uKQogCi0gICBSZXR1cm4gYSBDIDpjOnR5cGU6YHVuc2lnbmVkIFBZX0xPTkdfTE9OR2AgcmVwcmVzZW50YXRpb24gb2YgKnB5bG9uZyouCi0gICAqcHlsb25nKiBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIDpjOnR5cGU6YFB5TG9uZ09iamVjdGAuCisgICBSZXR1cm4gYSBDIDpjOnR5cGU6YHVuc2lnbmVkIGxvbmcgbG9uZ2AgcmVwcmVzZW50YXRpb24gb2YgKnB5bG9uZyouICAqcHlsb25nKgorICAgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiA6Yzp0eXBlOmBQeUxvbmdPYmplY3RgLgogCiAgICBSYWlzZSA6ZXhjOmBPdmVyZmxvd0Vycm9yYCBpZiB0aGUgdmFsdWUgb2YgKnB5bG9uZyogaXMgb3V0IG9mIHJhbmdlIGZvciBhbgotICAgOmM6dHlwZTpgdW5zaWduZWQgUFlfTE9OR19MT05HYC4KKyAgIDpjOnR5cGU6YHVuc2lnbmVkIGxvbmcgbG9uZ2AuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4xCiAgICAgICBBIG5lZ2F0aXZlICpweWxvbmcqIG5vdyByYWlzZXMgOmV4YzpgT3ZlcmZsb3dFcnJvcmAsIG5vdCA6ZXhjOmBUeXBlRXJyb3JgLgpAQCAtMjM1LDcgKzIzNSw3IEBACiAgICByZXR1cm4gdGhlIHJlZHVjdGlvbiBvZiB0aGF0IHZhbHVlIG1vZHVsbyBgYFVMT05HX01BWCArIDFgYC4KIAogCi0uLiBjOmZ1bmN0aW9uOjogdW5zaWduZWQgUFlfTE9OR19MT05HIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrKFB5T2JqZWN0ICpvYmopCisuLiBjOmZ1bmN0aW9uOjogdW5zaWduZWQgbG9uZyBsb25nIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrKFB5T2JqZWN0ICpvYmopCiAKICAgIFJldHVybiBhIEMgOmM6dHlwZTpgdW5zaWduZWQgbG9uZyBsb25nYCByZXByZXNlbnRhdGlvbiBvZiAqb2JqKi4gIElmICpvYmoqCiAgICBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgOmM6dHlwZTpgUHlMb25nT2JqZWN0YCwgZmlyc3QgY2FsbCBpdHMgOm1ldGg6YF9faW50X19gCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvbWVtb3J5LnJzdCBiL0RvYy9jLWFwaS9tZW1vcnkucnN0CmluZGV4IDI5MGVmMDkuLjNmZjU0NTIgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9tZW1vcnkucnN0CisrKyBiL0RvYy9jLWFwaS9tZW1vcnkucnN0CkBAIC04NSw5ICs4NSwxMiBAQAogCiAuLiBzZWVhbHNvOjoKIAorICAgVGhlIDplbnZ2YXI6YFBZVEhPTk1BTExPQ2AgZW52aXJvbm1lbnQgdmFyaWFibGUgY2FuIGJlIHVzZWQgdG8gY29uZmlndXJlCisgICB0aGUgbWVtb3J5IGFsbG9jYXRvcnMgdXNlZCBieSBQeXRob24uCisKICAgIFRoZSA6ZW52dmFyOmBQWVRIT05NQUxMT0NTVEFUU2AgZW52aXJvbm1lbnQgdmFyaWFibGUgY2FuIGJlIHVzZWQgdG8gcHJpbnQKLSAgIG1lbW9yeSBhbGxvY2F0aW9uIHN0YXRpc3RpY3MgZXZlcnkgdGltZSBhIG5ldyBvYmplY3QgYXJlbmEgaXMgY3JlYXRlZCwgYW5kCi0gICBvbiBzaHV0ZG93bi4KKyAgIHN0YXRpc3RpY3Mgb2YgdGhlIDpyZWY6YHB5bWFsbG9jIG1lbW9yeSBhbGxvY2F0b3IgPHB5bWFsbG9jPmAgZXZlcnkgdGltZSBhCisgICBuZXcgcHltYWxsb2Mgb2JqZWN0IGFyZW5hIGlzIGNyZWF0ZWQsIGFuZCBvbiBzaHV0ZG93bi4KIAogCiBSYXcgTWVtb3J5IEludGVyZmFjZQpAQCAtMTYyLDE1ICsxNjUsMTcgQEAKIGJlaGF2aW9yIHdoZW4gcmVxdWVzdGluZyB6ZXJvIGJ5dGVzLCBhcmUgYXZhaWxhYmxlIGZvciBhbGxvY2F0aW5nIGFuZCByZWxlYXNpbmcKIG1lbW9yeSBmcm9tIHRoZSBQeXRob24gaGVhcC4KIAotVGhlIGRlZmF1bHQgbWVtb3J5IGJsb2NrIGFsbG9jYXRvciB1c2VzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOgotOmM6ZnVuYzpgbWFsbG9jYCwgOmM6ZnVuYzpgY2FsbG9jYCwgOmM6ZnVuYzpgcmVhbGxvY2AgYW5kIDpjOmZ1bmM6YGZyZWVgOyBjYWxsCi1gYG1hbGxvYygxKWBgIChvciBgYGNhbGxvYygxLCAxKWBgKSB3aGVuIHJlcXVlc3RpbmcgemVybyBieXRlcy4KK0J5IGRlZmF1bHQsIHRoZXNlIGZ1bmN0aW9ucyB1c2UgOnJlZjpgcHltYWxsb2MgbWVtb3J5IGFsbG9jYXRvciA8cHltYWxsb2M+YC4KIAogLi4gd2FybmluZzo6CiAKICAgIFRoZSA6dGVybTpgR0lMIDxnbG9iYWwgaW50ZXJwcmV0ZXIgbG9jaz5gIG11c3QgYmUgaGVsZCB3aGVuIHVzaW5nIHRoZXNlCiAgICBmdW5jdGlvbnMuCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisKKyAgIFRoZSBkZWZhdWx0IGFsbG9jYXRvciBpcyBub3cgcHltYWxsb2MgaW5zdGVhZCBvZiBzeXN0ZW0gOmM6ZnVuYzpgbWFsbG9jYC4KKwogLi4gYzpmdW5jdGlvbjo6IHZvaWQqIFB5TWVtX01hbGxvYyhzaXplX3QgbikKIAogICAgQWxsb2NhdGVzICpuKiBieXRlcyBhbmQgcmV0dXJucyBhIHBvaW50ZXIgb2YgdHlwZSA6Yzp0eXBlOmB2b2lkXCpgIHRvIHRoZQpAQCAtMjkyLDE1ICsyOTcsMzIgQEAKIAogICAgRW51bSB1c2VkIHRvIGlkZW50aWZ5IGFuIGFsbG9jYXRvciBkb21haW4uIERvbWFpbnM6CiAKLSAgICogOmM6ZGF0YTpgUFlNRU1fRE9NQUlOX1JBV2A6IGZ1bmN0aW9ucyA6YzpmdW5jOmBQeU1lbV9SYXdNYWxsb2NgLAotICAgICA6YzpmdW5jOmBQeU1lbV9SYXdSZWFsbG9jYCwgOmM6ZnVuYzpgUHlNZW1fUmF3Q2FsbG9jYCBhbmQKLSAgICAgOmM6ZnVuYzpgUHlNZW1fUmF3RnJlZWAKLSAgICogOmM6ZGF0YTpgUFlNRU1fRE9NQUlOX01FTWA6IGZ1bmN0aW9ucyA6YzpmdW5jOmBQeU1lbV9NYWxsb2NgLAotICAgICA6YzpmdW5jOmBQeU1lbV9SZWFsbG9jYCwgOmM6ZnVuYzpgUHlNZW1fQ2FsbG9jYCBhbmQgOmM6ZnVuYzpgUHlNZW1fRnJlZWAKLSAgICogOmM6ZGF0YTpgUFlNRU1fRE9NQUlOX09CSmA6IGZ1bmN0aW9ucyA6YzpmdW5jOmBQeU9iamVjdF9NYWxsb2NgLAotICAgICA6YzpmdW5jOmBQeU9iamVjdF9SZWFsbG9jYCwgOmM6ZnVuYzpgUHlPYmplY3RfQ2FsbG9jYCBhbmQKLSAgICAgOmM6ZnVuYzpgUHlPYmplY3RfRnJlZWAKKyAgIC4uIGM6dmFyOjogUFlNRU1fRE9NQUlOX1JBVwogCisgICAgICBGdW5jdGlvbnM6CisKKyAgICAgICogOmM6ZnVuYzpgUHlNZW1fUmF3TWFsbG9jYAorICAgICAgKiA6YzpmdW5jOmBQeU1lbV9SYXdSZWFsbG9jYAorICAgICAgKiA6YzpmdW5jOmBQeU1lbV9SYXdDYWxsb2NgCisgICAgICAqIDpjOmZ1bmM6YFB5TWVtX1Jhd0ZyZWVgCisKKyAgIC4uIGM6dmFyOjogUFlNRU1fRE9NQUlOX01FTQorCisgICAgICBGdW5jdGlvbnM6CisKKyAgICAgICogOmM6ZnVuYzpgUHlNZW1fTWFsbG9jYCwKKyAgICAgICogOmM6ZnVuYzpgUHlNZW1fUmVhbGxvY2AKKyAgICAgICogOmM6ZnVuYzpgUHlNZW1fQ2FsbG9jYAorICAgICAgKiA6YzpmdW5jOmBQeU1lbV9GcmVlYAorCisgICAuLiBjOnZhcjo6IFBZTUVNX0RPTUFJTl9PQkoKKworICAgICAgRnVuY3Rpb25zOgorCisgICAgICAqIDpjOmZ1bmM6YFB5T2JqZWN0X01hbGxvY2AKKyAgICAgICogOmM6ZnVuYzpgUHlPYmplY3RfUmVhbGxvY2AKKyAgICAgICogOmM6ZnVuYzpgUHlPYmplY3RfQ2FsbG9jYAorICAgICAgKiA6YzpmdW5jOmBQeU9iamVjdF9GcmVlYAogCiAuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeU1lbV9HZXRBbGxvY2F0b3IoUHlNZW1BbGxvY2F0b3JEb21haW4gZG9tYWluLCBQeU1lbUFsbG9jYXRvckV4ICphbGxvY2F0b3IpCiAKQEAgLTMyNSw0MyArMzQ3LDYyIEBACiAKIC4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5TWVtX1NldHVwRGVidWdIb29rcyh2b2lkKQogCi0gICBTZXR1cCBob29rcyB0byBkZXRlY3QgYnVncyBpbiB0aGUgZm9sbG93aW5nIFB5dGhvbiBtZW1vcnkgYWxsb2NhdG9yCi0gICBmdW5jdGlvbnM6Ci0KLSAgIC0gOmM6ZnVuYzpgUHlNZW1fUmF3TWFsbG9jYCwgOmM6ZnVuYzpgUHlNZW1fUmF3UmVhbGxvY2AsCi0gICAgIDpjOmZ1bmM6YFB5TWVtX1Jhd0NhbGxvY2AsIDpjOmZ1bmM6YFB5TWVtX1Jhd0ZyZWVgCi0gICAtIDpjOmZ1bmM6YFB5TWVtX01hbGxvY2AsIDpjOmZ1bmM6YFB5TWVtX1JlYWxsb2NgLCA6YzpmdW5jOmBQeU1lbV9DYWxsb2NgLAotICAgICA6YzpmdW5jOmBQeU1lbV9GcmVlYAotICAgLSA6YzpmdW5jOmBQeU9iamVjdF9NYWxsb2NgLCA6YzpmdW5jOmBQeU9iamVjdF9SZWFsbG9jYCwKLSAgICAgOmM6ZnVuYzpgUHlPYmplY3RfQ2FsbG9jYCwgOmM6ZnVuYzpgUHlPYmplY3RfRnJlZWAKKyAgIFNldHVwIGhvb2tzIHRvIGRldGVjdCBidWdzIGluIHRoZSBQeXRob24gbWVtb3J5IGFsbG9jYXRvciBmdW5jdGlvbnMuCiAKICAgIE5ld2x5IGFsbG9jYXRlZCBtZW1vcnkgaXMgZmlsbGVkIHdpdGggdGhlIGJ5dGUgYGAweENCYGAsIGZyZWVkIG1lbW9yeSBpcwotICAgZmlsbGVkIHdpdGggdGhlIGJ5dGUgYGAweERCYGAuIEFkZGl0aW9uYWwgY2hlY2tzOgorICAgZmlsbGVkIHdpdGggdGhlIGJ5dGUgYGAweERCYGAuCiAKLSAgIC0gZGV0ZWN0IEFQSSB2aW9sYXRpb25zLCBleDogOmM6ZnVuYzpgUHlPYmplY3RfRnJlZWAgY2FsbGVkIG9uIGEgYnVmZmVyCisgICBSdW50aW1lIGNoZWNrczoKKworICAgLSBEZXRlY3QgQVBJIHZpb2xhdGlvbnMsIGV4OiA6YzpmdW5jOmBQeU9iamVjdF9GcmVlYCBjYWxsZWQgb24gYSBidWZmZXIKICAgICAgYWxsb2NhdGVkIGJ5IDpjOmZ1bmM6YFB5TWVtX01hbGxvY2AKLSAgIC0gZGV0ZWN0IHdyaXRlIGJlZm9yZSB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlciAoYnVmZmVyIHVuZGVyZmxvdykKLSAgIC0gZGV0ZWN0IHdyaXRlIGFmdGVyIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciAoYnVmZmVyIG92ZXJmbG93KQorICAgLSBEZXRlY3Qgd3JpdGUgYmVmb3JlIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyIChidWZmZXIgdW5kZXJmbG93KQorICAgLSBEZXRlY3Qgd3JpdGUgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgYnVmZmVyIChidWZmZXIgb3ZlcmZsb3cpCisgICAtIENoZWNrIHRoYXQgdGhlIDp0ZXJtOmBHSUwgPGdsb2JhbCBpbnRlcnByZXRlciBsb2NrPmAgaXMgaGVsZCB3aGVuCisgICAgIGFsbG9jYXRvciBmdW5jdGlvbnMgb2YgOmM6ZGF0YTpgUFlNRU1fRE9NQUlOX09CSmAgKGV4OgorICAgICA6YzpmdW5jOmBQeU9iamVjdF9NYWxsb2NgKSBhbmQgOmM6ZGF0YTpgUFlNRU1fRE9NQUlOX01FTWAgKGV4OgorICAgICA6YzpmdW5jOmBQeU1lbV9NYWxsb2NgKSBkb21haW5zIGFyZSBjYWxsZWQKIAotICAgVGhlIGZ1bmN0aW9uIGRvZXMgbm90aGluZyBpZiBQeXRob24gaXMgbm90IGNvbXBpbGVkIGlzIGRlYnVnIG1vZGUuCisgICBPbiBlcnJvciwgdGhlIGRlYnVnIGhvb2tzIHVzZSB0aGUgOm1vZDpgdHJhY2VtYWxsb2NgIG1vZHVsZSB0byBnZXQgdGhlCisgICB0cmFjZWJhY2sgd2hlcmUgYSBtZW1vcnkgYmxvY2sgd2FzIGFsbG9jYXRlZC4gVGhlIHRyYWNlYmFjayBpcyBvbmx5CisgICBkaXNwbGF5ZWQgaWYgOm1vZDpgdHJhY2VtYWxsb2NgIGlzIHRyYWNpbmcgUHl0aG9uIG1lbW9yeSBhbGxvY2F0aW9ucyBhbmQgdGhlCisgICBtZW1vcnkgYmxvY2sgd2FzIHRyYWNlZC4KKworICAgVGhlc2UgaG9va3MgYXJlIGluc3RhbGxlZCBieSBkZWZhdWx0IGlmIFB5dGhvbiBpcyBjb21waWxlZCBpbiBkZWJ1ZworICAgbW9kZS4gVGhlIDplbnZ2YXI6YFBZVEhPTk1BTExPQ2AgZW52aXJvbm1lbnQgdmFyaWFibGUgY2FuIGJlIHVzZWQgdG8gaW5zdGFsbAorICAgZGVidWcgaG9va3Mgb24gYSBQeXRob24gY29tcGlsZWQgaW4gcmVsZWFzZSBtb2RlLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgVGhpcyBmdW5jdGlvbiBub3cgYWxzbyB3b3JrcyBvbiBQeXRob24gY29tcGlsZWQgaW4gcmVsZWFzZSBtb2RlLgorICAgICAgT24gZXJyb3IsIHRoZSBkZWJ1ZyBob29rcyBub3cgdXNlIDptb2Q6YHRyYWNlbWFsbG9jYCB0byBnZXQgdGhlIHRyYWNlYmFjaworICAgICAgd2hlcmUgYSBtZW1vcnkgYmxvY2sgd2FzIGFsbG9jYXRlZC4gVGhlIGRlYnVnIGhvb2tzIG5vdyBhbHNvIGNoZWNrCisgICAgICBpZiB0aGUgR0lMIGlzIGhlbGQgd2hlbiBmdW5jdGlvbnMgb2YgOmM6ZGF0YTpgUFlNRU1fRE9NQUlOX09CSmAgYW5kCisgICAgICA6YzpkYXRhOmBQWU1FTV9ET01BSU5fTUVNYCBkb21haW5zIGFyZSBjYWxsZWQuCiAKIAotQ3VzdG9taXplIFB5T2JqZWN0IEFyZW5hIEFsbG9jYXRvcgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLi4gX3B5bWFsbG9jOgogCi1QeXRob24gaGFzIGEgKnB5bWFsbG9jKiBhbGxvY2F0b3IgZm9yIGFsbG9jYXRpb25zIHNtYWxsZXIgdGhhbiA1MTIgYnl0ZXMuIFRoaXMKLWFsbG9jYXRvciBpcyBvcHRpbWl6ZWQgZm9yIHNtYWxsIG9iamVjdHMgd2l0aCBhIHNob3J0IGxpZmV0aW1lLiBJdCB1c2VzIG1lbW9yeQotbWFwcGluZ3MgY2FsbGVkICJhcmVuYXMiIHdpdGggYSBmaXhlZCBzaXplIG9mIDI1NiBLQi4gSXQgZmFsbHMgYmFjayB0bwotOmM6ZnVuYzpgUHlNZW1fUmF3TWFsbG9jYCBhbmQgOmM6ZnVuYzpgUHlNZW1fUmF3UmVhbGxvY2AgZm9yIGFsbG9jYXRpb25zIGxhcmdlcgotdGhhbiA1MTIgYnl0ZXMuICAqcHltYWxsb2MqIGlzIHRoZSBkZWZhdWx0IGFsbG9jYXRvciB1c2VkIGJ5Ci06YzpmdW5jOmBQeU9iamVjdF9NYWxsb2NgLgorVGhlIHB5bWFsbG9jIGFsbG9jYXRvcgorPT09PT09PT09PT09PT09PT09PT09PQogCi1UaGUgZGVmYXVsdCBhcmVuYSBhbGxvY2F0b3IgdXNlcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczoKK1B5dGhvbiBoYXMgYSAqcHltYWxsb2MqIGFsbG9jYXRvciBvcHRpbWl6ZWQgZm9yIHNtYWxsIG9iamVjdHMgKHNtYWxsZXIgb3IgZXF1YWwKK3RvIDUxMiBieXRlcykgd2l0aCBhIHNob3J0IGxpZmV0aW1lLiBJdCB1c2VzIG1lbW9yeSBtYXBwaW5ncyBjYWxsZWQgImFyZW5hcyIKK3dpdGggYSBmaXhlZCBzaXplIG9mIDI1NiBLQi4gSXQgZmFsbHMgYmFjayB0byA6YzpmdW5jOmBQeU1lbV9SYXdNYWxsb2NgIGFuZAorOmM6ZnVuYzpgUHlNZW1fUmF3UmVhbGxvY2AgZm9yIGFsbG9jYXRpb25zIGxhcmdlciB0aGFuIDUxMiBieXRlcy4KKworKnB5bWFsbG9jKiBpcyB0aGUgZGVmYXVsdCBhbGxvY2F0b3Igb2YgdGhlIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9NRU1gIChleDoKKzpjOmZ1bmM6YFB5T2JqZWN0X01hbGxvY2ApIGFuZCA6YzpkYXRhOmBQWU1FTV9ET01BSU5fT0JKYCAoZXg6Cis6YzpmdW5jOmBQeU9iamVjdF9NYWxsb2NgKSBkb21haW5zLgorCitUaGUgYXJlbmEgYWxsb2NhdG9yIHVzZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM6CiAKICogOmM6ZnVuYzpgVmlydHVhbEFsbG9jYCBhbmQgOmM6ZnVuYzpgVmlydHVhbEZyZWVgIG9uIFdpbmRvd3MsCiAqIDpjOmZ1bmM6YG1tYXBgIGFuZCA6YzpmdW5jOmBtdW5tYXBgIGlmIGF2YWlsYWJsZSwKICogOmM6ZnVuYzpgbWFsbG9jYCBhbmQgOmM6ZnVuYzpgZnJlZWAgb3RoZXJ3aXNlLgogCitDdXN0b21pemUgcHltYWxsb2MgQXJlbmEgQWxsb2NhdG9yCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogCiAuLiBjOnR5cGU6OiBQeU9iamVjdEFyZW5hQWxsb2NhdG9yCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvc3RydWN0dXJlcy5yc3QgYi9Eb2MvYy1hcGkvc3RydWN0dXJlcy5yc3QKaW5kZXggM2U4YTkwYy4uODM3YWM3ZCAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL3N0cnVjdHVyZXMucnN0CisrKyBiL0RvYy9jLWFwaS9zdHJ1Y3R1cmVzLnJzdApAQCAtMTUwLDggKzE1MCw5IEBACiBUaGUgOmF0dHI6YG1sX2ZsYWdzYCBmaWVsZCBpcyBhIGJpdGZpZWxkIHdoaWNoIGNhbiBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgZmxhZ3MuCiBUaGUgaW5kaXZpZHVhbCBmbGFncyBpbmRpY2F0ZSBlaXRoZXIgYSBjYWxsaW5nIGNvbnZlbnRpb24gb3IgYSBiaW5kaW5nCiBjb252ZW50aW9uLiAgT2YgdGhlIGNhbGxpbmcgY29udmVudGlvbiBmbGFncywgb25seSA6Y29uc3Q6YE1FVEhfVkFSQVJHU2AgYW5kCi06Y29uc3Q6YE1FVEhfS0VZV09SRFNgIGNhbiBiZSBjb21iaW5lZC4gQW55IG9mIHRoZSBjYWxsaW5nIGNvbnZlbnRpb24gZmxhZ3MKLWNhbiBiZSBjb21iaW5lZCB3aXRoIGEgYmluZGluZyBmbGFnLgorOmNvbnN0OmBNRVRIX0tFWVdPUkRTYCBjYW4gYmUgY29tYmluZWQgKGJ1dCBub3RlIHRoYXQgOmNvbnN0OmBNRVRIX0tFWVdPUkRTYAorYWxvbmUgaXMgZXF1aXZhbGVudCB0byBgYE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFNgYCkuIEFueSBvZiB0aGUgY2FsbGluZworY29udmVudGlvbiBmbGFncyBjYW4gYmUgY29tYmluZWQgd2l0aCBhIGJpbmRpbmcgZmxhZy4KIAogCiAuLiBkYXRhOjogTUVUSF9WQVJBUkdTCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvc3lzLnJzdCBiL0RvYy9jLWFwaS9zeXMucnN0CmluZGV4IDNkODNiMjcuLjAzNWNkYzEgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9zeXMucnN0CisrKyBiL0RvYy9jLWFwaS9zeXMucnN0CkBAIC01LDYgKzUsMTcgQEAKIE9wZXJhdGluZyBTeXN0ZW0gVXRpbGl0aWVzCiA9PT09PT09PT09PT09PT09PT09PT09PT09PQogCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5T1NfRlNQYXRoKFB5T2JqZWN0ICpwYXRoKQorCisgICBSZXR1cm4gdGhlIGZpbGUgc3lzdGVtIHJlcHJlc2VudGF0aW9uIGZvciAqcGF0aCouIElmIHRoZSBvYmplY3QgaXMgYQorICAgOmNsYXNzOmBzdHJgIG9yIDpjbGFzczpgYnl0ZXNgIG9iamVjdCwgdGhlbiBpdHMgcmVmZXJlbmNlIGNvdW50IGlzCisgICBpbmNyZW1lbnRlZC4gSWYgdGhlIG9iamVjdCBpbXBsZW1lbnRzIHRoZSA6Y2xhc3M6YG9zLlBhdGhMaWtlYCBpbnRlcmZhY2UsCisgICB0aGVuIDptZXRoOmB+b3MuUGF0aExpa2UuX19mc3BhdGhfX2AgaXMgcmV0dXJuZWQgYXMgbG9uZyBhcyBpdCBpcyBhCisgICA6Y2xhc3M6YHN0cmAgb3IgOmNsYXNzOmBieXRlc2Agb2JqZWN0LiBPdGhlcndpc2UgOmV4YzpgVHlwZUVycm9yYCBpcyByYWlzZWQKKyAgIGFuZCBgYE5VTExgYCBpcyByZXR1cm5lZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIAogLi4gYzpmdW5jdGlvbjo6IGludCBQeV9GZElzSW50ZXJhY3RpdmUoRklMRSAqZnAsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQogCkBAIC0yMTIsMjAgKzIyMywyNCBAQAogLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlfRXhpdChpbnQgc3RhdHVzKQogCiAgICAuLiBpbmRleDo6Ci0gICAgICBzaW5nbGU6IFB5X0ZpbmFsaXplKCkKKyAgICAgIHNpbmdsZTogUHlfRmluYWxpemVFeCgpCiAgICAgICBzaW5nbGU6IGV4aXQoKQogCi0gICBFeGl0IHRoZSBjdXJyZW50IHByb2Nlc3MuICBUaGlzIGNhbGxzIDpjOmZ1bmM6YFB5X0ZpbmFsaXplYCBhbmQgdGhlbiBjYWxscyB0aGUKLSAgIHN0YW5kYXJkIEMgbGlicmFyeSBmdW5jdGlvbiBgYGV4aXQoc3RhdHVzKWBgLgorICAgRXhpdCB0aGUgY3VycmVudCBwcm9jZXNzLiAgVGhpcyBjYWxscyA6YzpmdW5jOmBQeV9GaW5hbGl6ZUV4YCBhbmQgdGhlbiBjYWxscyB0aGUKKyAgIHN0YW5kYXJkIEMgbGlicmFyeSBmdW5jdGlvbiBgYGV4aXQoc3RhdHVzKWBgLiAgSWYgOmM6ZnVuYzpgUHlfRmluYWxpemVFeGAKKyAgIGluZGljYXRlcyBhbiBlcnJvciwgdGhlIGV4aXQgc3RhdHVzIGlzIHNldCB0byAxMjAuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBFcnJvcnMgZnJvbSBmaW5hbGl6YXRpb24gbm8gbG9uZ2VyIGlnbm9yZWQuCiAKIAogLi4gYzpmdW5jdGlvbjo6IGludCBQeV9BdEV4aXQodm9pZCAoKmZ1bmMpICgpKQogCiAgICAuLiBpbmRleDo6Ci0gICAgICBzaW5nbGU6IFB5X0ZpbmFsaXplKCkKKyAgICAgIHNpbmdsZTogUHlfRmluYWxpemVFeCgpCiAgICAgICBzaW5nbGU6IGNsZWFudXAgZnVuY3Rpb25zCiAKLSAgIFJlZ2lzdGVyIGEgY2xlYW51cCBmdW5jdGlvbiB0byBiZSBjYWxsZWQgYnkgOmM6ZnVuYzpgUHlfRmluYWxpemVgLiAgVGhlIGNsZWFudXAKKyAgIFJlZ2lzdGVyIGEgY2xlYW51cCBmdW5jdGlvbiB0byBiZSBjYWxsZWQgYnkgOmM6ZnVuYzpgUHlfRmluYWxpemVFeGAuICBUaGUgY2xlYW51cAogICAgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgd2l0aCBubyBhcmd1bWVudHMgYW5kIHNob3VsZCByZXR1cm4gbm8gdmFsdWUuICBBdCBtb3N0CiAgICAzMiBjbGVhbnVwIGZ1bmN0aW9ucyBjYW4gYmUgcmVnaXN0ZXJlZC4gIFdoZW4gdGhlIHJlZ2lzdHJhdGlvbiBpcyBzdWNjZXNzZnVsLAogICAgOmM6ZnVuYzpgUHlfQXRFeGl0YCByZXR1cm5zIGBgMGBgOyBvbiBmYWlsdXJlLCBpdCByZXR1cm5zIGBgLTFgYC4gIFRoZSBjbGVhbnVwCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvdW5pY29kZS5yc3QgYi9Eb2MvYy1hcGkvdW5pY29kZS5yc3QKaW5kZXggNDU3YTliZS4uYjMxZDY4OSAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL3VuaWNvZGUucnN0CisrKyBiL0RvYy9jLWFwaS91bmljb2RlLnJzdApAQCAtNDQwLDcgKzQ0MCw2IEBACiAgICAuLiAlIGJlY2F1c2Ugbm90IGFsbCBjb21waWxlcnMgc3VwcG9ydCB0aGUgJXogd2lkdGggbW9kaWZpZXIgLS0gd2UgZmFrZSBpdAogICAgLi4gJSB3aGVuIG5lY2Vzc2FyeSB2aWEgaW50ZXJwb2xhdGluZyBQWV9GT1JNQVRfU0laRV9ULgogICAgLi4gJSBTaW1pbGFyIGNvbW1lbnRzIGFwcGx5IHRvIHRoZSAlbGwgd2lkdGggbW9kaWZpZXIgYW5kCi0gICAuLiAlIFBZX0ZPUk1BVF9MT05HX0xPTkcuCiAKICAgIC4uIHRhYnVsYXJjb2x1bW5zOjogfGx8bHxMfAogCkBAIC01MjUsMTEgKzUyNCw2IEBACiAgICBjb3BpZWQgYXMtaXMgdG8gdGhlIHJlc3VsdCBzdHJpbmcsIGFuZCBhbnkgZXh0cmEgYXJndW1lbnRzIGRpc2NhcmRlZC4KIAogICAgLi4gbm90ZTo6Ci0KLSAgICAgIFRoZSBgIiVsbGQiYCBhbmQgYCIlbGx1ImAgZm9ybWF0IHNwZWNpZmllcnMgYXJlIG9ubHkgYXZhaWxhYmxlCi0gICAgICB3aGVuIDpjb25zdDpgSEFWRV9MT05HX0xPTkdgIGlzIGRlZmluZWQuCi0KLSAgIC4uIG5vdGU6OgogICAgICAgVGhlIHdpZHRoIGZvcm1hdHRlciB1bml0IGlzIG51bWJlciBvZiBjaGFyYWN0ZXJzIHJhdGhlciB0aGFuIGJ5dGVzLgogICAgICAgVGhlIHByZWNpc2lvbiBmb3JtYXR0ZXIgdW5pdCBpcyBudW1iZXIgb2YgYnl0ZXMgZm9yIGBgIiVzImBgIGFuZAogICAgICAgYGAiJVYiYGAgKGlmIHRoZSBgYFB5T2JqZWN0KmBgIGFyZ3VtZW50IGlzIE5VTEwpLCBhbmQgYSBudW1iZXIgb2YKQEAgLTgxMSwzOCArODA1LDQ3IEBACiAiIiIiIiIiIiIiIiIiIiIiIiIiIgogCiBUbyBlbmNvZGUgYW5kIGRlY29kZSBmaWxlIG5hbWVzIGFuZCBvdGhlciBlbnZpcm9ubWVudCBzdHJpbmdzLAotOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbUVuY29kaW5nYCBzaG91bGQgYmUgdXNlZCBhcyB0aGUgZW5jb2RpbmcsIGFuZAotYGAic3Vycm9nYXRlZXNjYXBlImBgIHNob3VsZCBiZSB1c2VkIGFzIHRoZSBlcnJvciBoYW5kbGVyICg6cGVwOmAzODNgKS4gVG8KLWVuY29kZSBmaWxlIG5hbWVzIGR1cmluZyBhcmd1bWVudCBwYXJzaW5nLCB0aGUgYGAiTyYiYGAgY29udmVydGVyIHNob3VsZCBiZQotdXNlZCwgcGFzc2luZyA6YzpmdW5jOmBQeVVuaWNvZGVfRlNDb252ZXJ0ZXJgIGFzIHRoZSBjb252ZXJzaW9uIGZ1bmN0aW9uOgorOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2Agc2hvdWxkIGJlIHVzZWQgYXMgdGhlIGVuY29kaW5nLCBhbmQKKzpjOmRhdGE6YFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RlRXJyb3JzYCBzaG91bGQgYmUgdXNlZCBhcyB0aGUgZXJyb3IgaGFuZGxlcgorKDpwZXA6YDM4M2AgYW5kIDpwZXA6YDUyOWApLiBUbyBlbmNvZGUgZmlsZSBuYW1lcyB0byA6Y2xhc3M6YGJ5dGVzYCBkdXJpbmcKK2FyZ3VtZW50IHBhcnNpbmcsIHRoZSBgYCJPJiJgYCBjb252ZXJ0ZXIgc2hvdWxkIGJlIHVzZWQsIHBhc3NpbmcKKzpjOmZ1bmM6YFB5VW5pY29kZV9GU0NvbnZlcnRlcmAgYXMgdGhlIGNvbnZlcnNpb24gZnVuY3Rpb246CiAKIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlVbmljb2RlX0ZTQ29udmVydGVyKFB5T2JqZWN0KiBvYmosIHZvaWQqIHJlc3VsdCkKIAotICAgUGFyc2VUdXBsZSBjb252ZXJ0ZXI6IGVuY29kZSA6Y2xhc3M6YHN0cmAgb2JqZWN0cyB0byA6Y2xhc3M6YGJ5dGVzYCB1c2luZworICAgUGFyc2VUdXBsZSBjb252ZXJ0ZXI6IGVuY29kZSA6Y2xhc3M6YHN0cmAgb2JqZWN0cyAtLSBvYnRhaW5lZCBkaXJlY3RseSBvcgorICAgdGhyb3VnaCB0aGUgOmNsYXNzOmBvcy5QYXRoTGlrZWAgaW50ZXJmYWNlIC0tIHRvIDpjbGFzczpgYnl0ZXNgIHVzaW5nCiAgICA6YzpmdW5jOmBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0YDsgOmNsYXNzOmBieXRlc2Agb2JqZWN0cyBhcmUgb3V0cHV0IGFzLWlzLgogICAgKnJlc3VsdCogbXVzdCBiZSBhIDpjOnR5cGU6YFB5Qnl0ZXNPYmplY3QqYCB3aGljaCBtdXN0IGJlIHJlbGVhc2VkIHdoZW4gaXQgaXMKICAgIG5vIGxvbmdlciB1c2VkLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjEKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCiAKLVRvIGRlY29kZSBmaWxlIG5hbWVzIGR1cmluZyBhcmd1bWVudCBwYXJzaW5nLCB0aGUgYGAiTyYiYGAgY29udmVydGVyIHNob3VsZCBiZQotdXNlZCwgcGFzc2luZyA6YzpmdW5jOmBQeVVuaWNvZGVfRlNEZWNvZGVyYCBhcyB0aGUgY29udmVyc2lvbiBmdW5jdGlvbjoKK1RvIGRlY29kZSBmaWxlIG5hbWVzIHRvIDpjbGFzczpgc3RyYCBkdXJpbmcgYXJndW1lbnQgcGFyc2luZywgdGhlIGBgIk8mImBgCitjb252ZXJ0ZXIgc2hvdWxkIGJlIHVzZWQsIHBhc3NpbmcgOmM6ZnVuYzpgUHlVbmljb2RlX0ZTRGVjb2RlcmAgYXMgdGhlCitjb252ZXJzaW9uIGZ1bmN0aW9uOgogCiAuLiBjOmZ1bmN0aW9uOjogaW50IFB5VW5pY29kZV9GU0RlY29kZXIoUHlPYmplY3QqIG9iaiwgdm9pZCogcmVzdWx0KQogCi0gICBQYXJzZVR1cGxlIGNvbnZlcnRlcjogZGVjb2RlIDpjbGFzczpgYnl0ZXNgIG9iamVjdHMgdG8gOmNsYXNzOmBzdHJgIHVzaW5nCi0gICA6YzpmdW5jOmBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZWA7IDpjbGFzczpgc3RyYCBvYmplY3RzIGFyZSBvdXRwdXQKLSAgIGFzLWlzLiAqcmVzdWx0KiBtdXN0IGJlIGEgOmM6dHlwZTpgUHlVbmljb2RlT2JqZWN0KmAgd2hpY2ggbXVzdCBiZSByZWxlYXNlZAotICAgd2hlbiBpdCBpcyBubyBsb25nZXIgdXNlZC4KKyAgIFBhcnNlVHVwbGUgY29udmVydGVyOiBkZWNvZGUgOmNsYXNzOmBieXRlc2Agb2JqZWN0cyAtLSBvYnRhaW5lZCBlaXRoZXIKKyAgIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgdGhyb3VnaCB0aGUgOmNsYXNzOmBvcy5QYXRoTGlrZWAgaW50ZXJmYWNlIC0tIHRvCisgICA6Y2xhc3M6YHN0cmAgdXNpbmcgOmM6ZnVuYzpgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemVgOyA6Y2xhc3M6YHN0cmAKKyAgIG9iamVjdHMgYXJlIG91dHB1dCBhcy1pcy4gKnJlc3VsdCogbXVzdCBiZSBhIDpjOnR5cGU6YFB5VW5pY29kZU9iamVjdCpgIHdoaWNoCisgICBtdXN0IGJlIHJlbGVhc2VkIHdoZW4gaXQgaXMgbm8gbG9uZ2VyIHVzZWQuCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSkKIAogICAgRGVjb2RlIGEgc3RyaW5nIHVzaW5nIDpjOmRhdGE6YFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmdgIGFuZCB0aGUKLSAgIGBgInN1cnJvZ2F0ZWVzY2FwZSJgYCBlcnJvciBoYW5kbGVyLCBvciBgYCJzdHJpY3QiYGAgb24gV2luZG93cy4KKyAgIDpjOmRhdGE6YFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RlRXJyb3JzYCBlcnJvciBoYW5kbGVyLgogCiAgICBJZiA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nYCBpcyBub3Qgc2V0LCBmYWxsIGJhY2sgdG8gdGhlCiAgICBsb2NhbGUgZW5jb2RpbmcuCkBAIC04NTYsMjggKzg1OSwyOCBAQAogCiAgICAgICBUaGUgOmM6ZnVuYzpgUHlfRGVjb2RlTG9jYWxlYCBmdW5jdGlvbi4KIAotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKLSAgICAgIFVzZSBgYCJzdHJpY3QiYGAgZXJyb3IgaGFuZGxlciBvbiBXaW5kb3dzLgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFVzZSA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9yc2AgZXJyb3IgaGFuZGxlci4KIAogCiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoY29uc3QgY2hhciAqcykKIAogICAgRGVjb2RlIGEgbnVsbC10ZXJtaW5hdGVkIHN0cmluZyB1c2luZyA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nYAotICAgYW5kIHRoZSBgYCJzdXJyb2dhdGVlc2NhcGUiYGAgZXJyb3IgaGFuZGxlciwgb3IgYGAic3RyaWN0ImBgIG9uIFdpbmRvd3MuCisgICBhbmQgdGhlIDpjOmRhdGE6YFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RlRXJyb3JzYCBlcnJvciBoYW5kbGVyLgogCiAgICBJZiA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nYCBpcyBub3Qgc2V0LCBmYWxsIGJhY2sgdG8gdGhlCiAgICBsb2NhbGUgZW5jb2RpbmcuCiAKICAgIFVzZSA6YzpmdW5jOmBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZWAgaWYgeW91IGtub3cgdGhlIHN0cmluZyBsZW5ndGguCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCi0gICAgICBVc2UgYGAic3RyaWN0ImBgIGVycm9yIGhhbmRsZXIgb24gV2luZG93cy4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBVc2UgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGVFcnJvcnNgIGVycm9yIGhhbmRsZXIuCiAKIAogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KFB5T2JqZWN0ICp1bmljb2RlKQogCiAgICBFbmNvZGUgYSBVbmljb2RlIG9iamVjdCB0byA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nYCB3aXRoIHRoZQotICAgYGAic3Vycm9nYXRlZXNjYXBlImBgIGVycm9yIGhhbmRsZXIsIG9yIGBgInN0cmljdCJgYCBvbiBXaW5kb3dzLCBhbmQgcmV0dXJuCisgICA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9yc2AgZXJyb3IgaGFuZGxlciwgYW5kIHJldHVybgogICAgOmNsYXNzOmBieXRlc2AuIE5vdGUgdGhhdCB0aGUgcmVzdWx0aW5nIDpjbGFzczpgYnl0ZXNgIG9iamVjdCBtYXkgY29udGFpbgogICAgbnVsbCBieXRlcy4KIApAQCAtODk0LDYgKzg5Nyw4IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgVXNlIDpjOmRhdGE6YFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RlRXJyb3JzYCBlcnJvciBoYW5kbGVyLgogCiB3Y2hhcl90IFN1cHBvcnQKICIiIiIiIiIiIiIiIiIiIgpkaWZmIC0tZ2l0IGEvRG9jL2RhdGEvcmVmY291bnRzLmRhdCBiL0RvYy9kYXRhL3JlZmNvdW50cy5kYXQKaW5kZXggZTM4ODE5NS4uOGI0NjlmNCAxMDA2NDQKLS0tIGEvRG9jL2RhdGEvcmVmY291bnRzLmRhdAorKysgYi9Eb2MvZGF0YS9yZWZjb3VudHMuZGF0CkBAIC05MjEsNiArOTIxLDkgQEAKIFB5T2JqZWN0X0FzRmlsZURlc2NyaXB0b3I6aW50Ojo6CiBQeU9iamVjdF9Bc0ZpbGVEZXNjcmlwdG9yOlB5T2JqZWN0KjpvOjA6CiAKK1B5T1NfRlNQYXRoOlB5T2JqZWN0Kjo6KzE6CitQeU9TX0ZTUGF0aDpQeU9iamVjdCo6cGF0aDowOgorCiBQeU9iamVjdF9DYWxsOlB5T2JqZWN0Kjo6KzE6CiBQeU9iamVjdF9DYWxsOlB5T2JqZWN0KjpjYWxsYWJsZV9vYmplY3Q6MDoKIFB5T2JqZWN0X0NhbGw6UHlPYmplY3QqOmFyZ3M6MDoKZGlmZiAtLWdpdCBhL0RvYy9leHRlbmRpbmcvZW1iZWRkaW5nLnJzdCBiL0RvYy9leHRlbmRpbmcvZW1iZWRkaW5nLnJzdAppbmRleCA2NDAzM2RjLi5hYjJmNjE2IDEwMDY0NAotLS0gYS9Eb2MvZXh0ZW5kaW5nL2VtYmVkZGluZy5yc3QKKysrIGIvRG9jL2V4dGVuZGluZy9lbWJlZGRpbmcucnN0CkBAIC02Nyw3ICs2Nyw5IEBACiAgICAgICAgUHlfSW5pdGlhbGl6ZSgpOwogICAgICAgIFB5UnVuX1NpbXBsZVN0cmluZygiZnJvbSB0aW1lIGltcG9ydCB0aW1lLGN0aW1lXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJwcmludCgnVG9kYXkgaXMnLCBjdGltZSh0aW1lKCkpKVxuIik7Ci0gICAgICAgUHlfRmluYWxpemUoKTsKKyAgICAgICBpZiAoUHlfRmluYWxpemVFeCgpIDwgMCkgeworICAgICAgICAgICBleGl0KDEyMCk7CisgICAgICAgfQogICAgICAgIFB5TWVtX1Jhd0ZyZWUocHJvZ3JhbSk7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CkBAIC03Niw3ICs3OCw3IEBACiA6YzpmdW5jOmBQeV9Jbml0aWFsaXplYCB0byBpbmZvcm0gdGhlIGludGVycHJldGVyIGFib3V0IHBhdGhzIHRvIFB5dGhvbiBydW4tdGltZQogbGlicmFyaWVzLiAgTmV4dCwgdGhlIFB5dGhvbiBpbnRlcnByZXRlciBpcyBpbml0aWFsaXplZCB3aXRoCiA6YzpmdW5jOmBQeV9Jbml0aWFsaXplYCwgZm9sbG93ZWQgYnkgdGhlIGV4ZWN1dGlvbiBvZiBhIGhhcmQtY29kZWQgUHl0aG9uIHNjcmlwdAotdGhhdCBwcmludHMgdGhlIGRhdGUgYW5kIHRpbWUuICBBZnRlcndhcmRzLCB0aGUgOmM6ZnVuYzpgUHlfRmluYWxpemVgIGNhbGwgc2h1dHMKK3RoYXQgcHJpbnRzIHRoZSBkYXRlIGFuZCB0aW1lLiAgQWZ0ZXJ3YXJkcywgdGhlIDpjOmZ1bmM6YFB5X0ZpbmFsaXplRXhgIGNhbGwgc2h1dHMKIHRoZSBpbnRlcnByZXRlciBkb3duLCBmb2xsb3dlZCBieSB0aGUgZW5kIG9mIHRoZSBwcm9ncmFtLiAgSW4gYSByZWFsIHByb2dyYW0sCiB5b3UgbWF5IHdhbnQgdG8gZ2V0IHRoZSBQeXRob24gc2NyaXB0IGZyb20gYW5vdGhlciBzb3VyY2UsIHBlcmhhcHMgYSB0ZXh0LWVkaXRvcgogcm91dGluZSwgYSBmaWxlLCBvciBhIGRhdGFiYXNlLiAgR2V0dGluZyB0aGUgUHl0aG9uIGNvZGUgZnJvbSBhIGZpbGUgY2FuIGJldHRlcgpkaWZmIC0tZ2l0IGEvRG9jL2ZhcS9kZXNpZ24ucnN0IGIvRG9jL2ZhcS9kZXNpZ24ucnN0CmluZGV4IDEwOGRmNmQuLjFiZDgwMGIgMTAwNjQ0Ci0tLSBhL0RvYy9mYXEvZGVzaWduLnJzdAorKysgYi9Eb2MvZmFxL2Rlc2lnbi5yc3QKQEAgLTM2NiwzMyArMzY2LDExIEBACiBDYW4gUHl0aG9uIGJlIGNvbXBpbGVkIHRvIG1hY2hpbmUgY29kZSwgQyBvciBzb21lIG90aGVyIGxhbmd1YWdlPwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUHJhY3RpY2FsIGFuc3dlcjoKLQotYEN5dGhvbiA8aHR0cDovL2N5dGhvbi5vcmcvPmBfIGFuZCBgUHlyZXggPGh0dHBzOi8vd3d3LmNvc2MuY2FudGVyYnVyeS5hYy5uei9ncmVnLmV3aW5nL3B5dGhvbi9QeXJleC8+YF8KLWNvbXBpbGUgYSBtb2RpZmllZCB2ZXJzaW9uIG9mIFB5dGhvbiB3aXRoIG9wdGlvbmFsIGFubm90YXRpb25zIGludG8gQwotZXh0ZW5zaW9ucy4gIGBXZWF2ZSA8aHR0cHM6Ly9zY2lweS5naXRodWIuaW8vZGV2ZG9jcy90dXRvcmlhbC93ZWF2ZS5odG1sPmBfIG1ha2VzIGl0IGVhc3kgdG8KLWludGVybWluZ2xlIFB5dGhvbiBhbmQgQyBjb2RlIGluIHZhcmlvdXMgd2F5cyB0byBpbmNyZWFzZSBwZXJmb3JtYW5jZS4KLWBOdWl0a2EgPGh0dHA6Ly93d3cubnVpdGthLm5ldC8+YF8gaXMgYW4gdXAtYW5kLWNvbWluZyBjb21waWxlciBvZiBQeXRob24KLWludG8gQysrIGNvZGUsIGFpbWluZyB0byBzdXBwb3J0IHRoZSBmdWxsIFB5dGhvbiBsYW5ndWFnZS4KLQotVGhlb3JldGljYWwgYW5zd2VyOgotCi0gICAuLiBYWFggbm90IHN1cmUgd2hhdCB0byBtYWtlIG9mIHRoaXMKLQotTm90IHRyaXZpYWxseS4gIFB5dGhvbidzIGhpZ2ggbGV2ZWwgZGF0YSB0eXBlcywgZHluYW1pYyB0eXBpbmcgb2Ygb2JqZWN0cyBhbmQKLXJ1bi10aW1lIGludm9jYXRpb24gb2YgdGhlIGludGVycHJldGVyICh1c2luZyA6ZnVuYzpgZXZhbGAgb3IgOmZ1bmM6YGV4ZWNgKQotdG9nZXRoZXIgbWVhbiB0aGF0IGEgbmHDr3ZlbHkgImNvbXBpbGVkIiBQeXRob24gcHJvZ3JhbSB3b3VsZCBwcm9iYWJseSBjb25zaXN0Ci1tb3N0bHkgb2YgY2FsbHMgaW50byB0aGUgUHl0aG9uIHJ1bi10aW1lIHN5c3RlbSwgZXZlbiBmb3Igc2VlbWluZ2x5IHNpbXBsZQotb3BlcmF0aW9ucyBsaWtlIGBgeCsxYGAuCi0KLVNldmVyYWwgcHJvamVjdHMgZGVzY3JpYmVkIGluIHRoZSBQeXRob24gbmV3c2dyb3VwIG9yIGF0IHBhc3QgYFB5dGhvbgotY29uZmVyZW5jZXMgPGh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvY29tbXVuaXR5L3dvcmtzaG9wcy8+YF8gaGF2ZSBzaG93biB0aGF0IHRoaXMKLWFwcHJvYWNoIGlzIGZlYXNpYmxlLCBhbHRob3VnaCB0aGUgc3BlZWR1cHMgcmVhY2hlZCBzbyBmYXIgYXJlIG9ubHkgbW9kZXN0Ci0oZS5nLiAyeCkuICBKeXRob24gdXNlcyB0aGUgc2FtZSBzdHJhdGVneSBmb3IgY29tcGlsaW5nIHRvIEphdmEgYnl0ZWNvZGUuICAoSmltCi1IdWd1bmluIGhhcyBkZW1vbnN0cmF0ZWQgdGhhdCBpbiBjb21iaW5hdGlvbiB3aXRoIHdob2xlLXByb2dyYW0gYW5hbHlzaXMsCi1zcGVlZHVwcyBvZiAxMDAweCBhcmUgZmVhc2libGUgZm9yIHNtYWxsIGRlbW8gcHJvZ3JhbXMuICBTZWUgdGhlIHByb2NlZWRpbmdzCi1mcm9tIHRoZSBgMTk5NyBQeXRob24gY29uZmVyZW5jZQotPGh0dHA6Ly9sZWdhY3kucHl0aG9uLm9yZy93b3Jrc2hvcHMvMTk5Ny0xMC9wcm9jZWVkaW5ncy8+YF8gZm9yIG1vcmUgaW5mb3JtYXRpb24uKQorYEN5dGhvbiA8aHR0cDovL2N5dGhvbi5vcmcvPmBfIGNvbXBpbGVzIGEgbW9kaWZpZWQgdmVyc2lvbiBvZiBQeXRob24gd2l0aAorb3B0aW9uYWwgYW5ub3RhdGlvbnMgaW50byBDIGV4dGVuc2lvbnMuICBgTnVpdGthIDxodHRwOi8vd3d3Lm51aXRrYS5uZXQvPmBfIGlzCithbiB1cC1hbmQtY29taW5nIGNvbXBpbGVyIG9mIFB5dGhvbiBpbnRvIEMrKyBjb2RlLCBhaW1pbmcgdG8gc3VwcG9ydCB0aGUgZnVsbAorUHl0aG9uIGxhbmd1YWdlLiBGb3IgY29tcGlsaW5nIHRvIEphdmEgeW91IGNhbiBjb25zaWRlcgorYFZPQyA8aHR0cHM6Ly92b2MucmVhZHRoZWRvY3MuaW8+YF8uCiAKIAogSG93IGRvZXMgUHl0aG9uIG1hbmFnZSBtZW1vcnk/CmRpZmYgLS1naXQgYS9Eb2MvZmFxL3Byb2dyYW1taW5nLnJzdCBiL0RvYy9mYXEvcHJvZ3JhbW1pbmcucnN0CmluZGV4IDY5NDc1M2UuLjljNWUyMGQgMTAwNjQ0Ci0tLSBhL0RvYy9mYXEvcHJvZ3JhbW1pbmcucnN0CisrKyBiL0RvYy9mYXEvcHJvZ3JhbW1pbmcucnN0CkBAIC04MzgsNyArODM4LDggQEAKIFRvIGNvbnZlcnQsIGUuZy4sIHRoZSBudW1iZXIgMTQ0IHRvIHRoZSBzdHJpbmcgJzE0NCcsIHVzZSB0aGUgYnVpbHQtaW4gdHlwZQogY29uc3RydWN0b3IgOmZ1bmM6YHN0cmAuICBJZiB5b3Ugd2FudCBhIGhleGFkZWNpbWFsIG9yIG9jdGFsIHJlcHJlc2VudGF0aW9uLCB1c2UKIHRoZSBidWlsdC1pbiBmdW5jdGlvbnMgOmZ1bmM6YGhleGAgb3IgOmZ1bmM6YG9jdGAuICBGb3IgZmFuY3kgZm9ybWF0dGluZywgc2VlCi10aGUgOnJlZjpgZm9ybWF0c3RyaW5nc2Agc2VjdGlvbiwgZS5nLiBgYCJ7OjA0ZH0iLmZvcm1hdCgxNDQpYGAgeWllbGRzCit0aGUgOnJlZjpgZi1zdHJpbmdzYCBhbmQgOnJlZjpgZm9ybWF0c3RyaW5nc2Agc2VjdGlvbnMsCitlLmcuIGBgIns6MDRkfSIuZm9ybWF0KDE0NClgYCB5aWVsZHMKIGBgJzAxNDQnYGAgYW5kIGBgIns6LjNmfSIuZm9ybWF0KDEuMC8zLjApYGAgeWllbGRzIGBgJzAuMzMzJ2BgLgogCiAKZGlmZiAtLWdpdCBhL0RvYy9nbG9zc2FyeS5yc3QgYi9Eb2MvZ2xvc3NhcnkucnN0CmluZGV4IDQ1Yjc5NGYuLjQxZWUzZDggMTAwNjQ0Ci0tLSBhL0RvYy9nbG9zc2FyeS5yc3QKKysrIGIvRG9jL2dsb3NzYXJ5LnJzdApAQCAtNzQsNiArNzQsMzQgQEAKICAgICAgIDprZXl3b3JkOmBhc3luYyB3aXRoYCBzdGF0ZW1lbnQgYnkgZGVmaW5pbmcgOm1ldGg6YF9fYWVudGVyX19gIGFuZAogICAgICAgOm1ldGg6YF9fYWV4aXRfX2AgbWV0aG9kcy4gIEludHJvZHVjZWQgYnkgOnBlcDpgNDkyYC4KIAorICAgYXN5bmNocm9ub3VzIGdlbmVyYXRvcgorICAgICAgQSBmdW5jdGlvbiB3aGljaCByZXR1cm5zIGFuIDp0ZXJtOmBhc3luY2hyb25vdXMgZ2VuZXJhdG9yIGl0ZXJhdG9yYC4gIEl0CisgICAgICBsb29rcyBsaWtlIGEgY29yb3V0aW5lIGZ1bmN0aW9uIGRlZmluZWQgd2l0aCA6a2V5d29yZDpgYXN5bmMgZGVmYCBleGNlcHQKKyAgICAgIHRoYXQgaXQgY29udGFpbnMgOmtleXdvcmQ6YHlpZWxkYCBleHByZXNzaW9ucyBmb3IgcHJvZHVjaW5nIGEgc2VyaWVzIG9mCisgICAgICB2YWx1ZXMgdXNhYmxlIGluIGFuIDprZXl3b3JkOmBhc3luYyBmb3JgIGxvb3AuCisKKyAgICAgIFVzdWFsbHkgcmVmZXJzIHRvIGEgYXN5bmNocm9ub3VzIGdlbmVyYXRvciBmdW5jdGlvbiwgYnV0IG1heSByZWZlciB0byBhbgorICAgICAgKmFzeW5jaHJvbm91cyBnZW5lcmF0b3IgaXRlcmF0b3IqIGluIHNvbWUgY29udGV4dHMuICBJbiBjYXNlcyB3aGVyZSB0aGUKKyAgICAgIGludGVuZGVkIG1lYW5pbmcgaXNuJ3QgY2xlYXIsIHVzaW5nIHRoZSBmdWxsIHRlcm1zIGF2b2lkcyBhbWJpZ3VpdHkuCisKKyAgICAgIEFuIGFzeW5jaHJvbm91cyBnZW5lcmF0b3IgZnVuY3Rpb24gbWF5IGNvbnRhaW4gOmtleXdvcmQ6YGF3YWl0YAorICAgICAgZXhwcmVzc2lvbnMgYXMgd2VsbCBhcyA6a2V5d29yZDpgYXN5bmMgZm9yYCwgYW5kIDprZXl3b3JkOmBhc3luYyB3aXRoYAorICAgICAgc3RhdGVtZW50cy4KKworICAgYXN5bmNocm9ub3VzIGdlbmVyYXRvciBpdGVyYXRvcgorICAgICAgQW4gb2JqZWN0IGNyZWF0ZWQgYnkgYSA6dGVybTpgYXN5bmNocm9ub3VzIGdlbmVyYXRvcmAgZnVuY3Rpb24uCisKKyAgICAgIFRoaXMgaXMgYW4gOnRlcm06YGFzeW5jaHJvbm91cyBpdGVyYXRvcmAgd2hpY2ggd2hlbiBjYWxsZWQgdXNpbmcgdGhlCisgICAgICA6bWV0aDpgX19hbmV4dF9fYCBtZXRob2QgcmV0dXJucyBhbiBhd2FpdGFibGUgb2JqZWN0IHdoaWNoIHdpbGwgZXhlY3V0ZQorICAgICAgdGhhdCB0aGUgYm9keSBvZiB0aGUgYXN5bmNocm9ub3VzIGdlbmVyYXRvciBmdW5jdGlvbiB1bnRpbCB0aGUKKyAgICAgIG5leHQgOmtleXdvcmQ6YHlpZWxkYCBleHByZXNzaW9uLgorCisgICAgICBFYWNoIDprZXl3b3JkOmB5aWVsZGAgdGVtcG9yYXJpbHkgc3VzcGVuZHMgcHJvY2Vzc2luZywgcmVtZW1iZXJpbmcgdGhlCisgICAgICBsb2NhdGlvbiBleGVjdXRpb24gc3RhdGUgKGluY2x1ZGluZyBsb2NhbCB2YXJpYWJsZXMgYW5kIHBlbmRpbmcKKyAgICAgIHRyeS1zdGF0ZW1lbnRzKS4gIFdoZW4gdGhlICphc3luY2hyb25vdXMgZ2VuZXJhdG9yIGl0ZXJhdG9yKiBlZmZlY3RpdmVseQorICAgICAgcmVzdW1lcyB3aXRoIGFub3RoZXIgYXdhaXRhYmxlIHJldHVybmVkIGJ5IDptZXRoOmBfX2FuZXh0X19gLCBpdAorICAgICAgcGlja3MtdXAgd2hlcmUgaXQgbGVmdC1vZmYuICBTZWUgOnBlcDpgNDkyYCBhbmQgOnBlcDpgNTI1YC4KKwogICAgYXN5bmNocm9ub3VzIGl0ZXJhYmxlCiAgICAgICBBbiBvYmplY3QsIHRoYXQgY2FuIGJlIHVzZWQgaW4gYW4gOmtleXdvcmQ6YGFzeW5jIGZvcmAgc3RhdGVtZW50LgogICAgICAgTXVzdCByZXR1cm4gYW4gOnRlcm06YGFzeW5jaHJvbm91cyBpdGVyYXRvcmAgZnJvbSBpdHMKQEAgLTcxOCw2ICs3NDYsOCBAQAogCiAgICAgICAgICAgIGRlZiBmdW5jKGZvbywgYmFyPU5vbmUpOiAuLi4KIAorICAgICAgLi4gX3Bvc2l0aW9uYWwtb25seV9wYXJhbWV0ZXI6CisKICAgICAgICogOmRmbjpgcG9zaXRpb25hbC1vbmx5YDogc3BlY2lmaWVzIGFuIGFyZ3VtZW50IHRoYXQgY2FuIGJlIHN1cHBsaWVkIG9ubHkKICAgICAgICAgYnkgcG9zaXRpb24uICBQeXRob24gaGFzIG5vIHN5bnRheCBmb3IgZGVmaW5pbmcgcG9zaXRpb25hbC1vbmx5CiAgICAgICAgIHBhcmFtZXRlcnMuICBIb3dldmVyLCBzb21lIGJ1aWx0LWluIGZ1bmN0aW9ucyBoYXZlIHBvc2l0aW9uYWwtb25seQpAQCAtNzc2LDYgKzgwNiwxNiBAQAogICAgICAgT25lIG9mIHRoZSBkZWZhdWx0IDp0ZXJtOmBtZXRhIHBhdGggZmluZGVycyA8bWV0YSBwYXRoIGZpbmRlcj5gIHdoaWNoCiAgICAgICBzZWFyY2hlcyBhbiA6dGVybTpgaW1wb3J0IHBhdGhgIGZvciBtb2R1bGVzLgogCisgICBwYXRoLWxpa2Ugb2JqZWN0CisgICAgICBBbiBvYmplY3QgcmVwcmVzZW50aW5nIGEgZmlsZSBzeXN0ZW0gcGF0aC4gQSBwYXRoLWxpa2Ugb2JqZWN0IGlzIGVpdGhlcgorICAgICAgYSA6Y2xhc3M6YHN0cmAgb3IgOmNsYXNzOmBieXRlc2Agb2JqZWN0IHJlcHJlc2VudGluZyBhIHBhdGgsIG9yIGFuIG9iamVjdAorICAgICAgaW1wbGVtZW50aW5nIHRoZSA6Y2xhc3M6YG9zLlBhdGhMaWtlYCBwcm90b2NvbC4gQW4gb2JqZWN0IHRoYXQgc3VwcG9ydHMKKyAgICAgIHRoZSA6Y2xhc3M6YG9zLlBhdGhMaWtlYCBwcm90b2NvbCBjYW4gYmUgY29udmVydGVkIHRvIGEgOmNsYXNzOmBzdHJgIG9yCisgICAgICA6Y2xhc3M6YGJ5dGVzYCBmaWxlIHN5c3RlbSBwYXRoIGJ5IGNhbGxpbmcgdGhlIDpmdW5jOmBvcy5mc3BhdGhgIGZ1bmN0aW9uOworICAgICAgOmZ1bmM6YG9zLmZzZGVjb2RlYCBhbmQgOmZ1bmM6YG9zLmZzZW5jb2RlYCBjYW4gYmUgdXNlZCB0byBndWFyYW50ZWUgYQorICAgICAgOmNsYXNzOmBzdHJgIG9yIDpjbGFzczpgYnl0ZXNgIHJlc3VsdCBpbnN0ZWFkLCByZXNwZWN0aXZlbHkuIEludHJvZHVjZWQKKyAgICAgIGJ5IDpwZXA6YDUxOWAuCisKICAgIHBvcnRpb24KICAgICAgIEEgc2V0IG9mIGZpbGVzIGluIGEgc2luZ2xlIGRpcmVjdG9yeSAocG9zc2libHkgc3RvcmVkIGluIGEgemlwIGZpbGUpCiAgICAgICB0aGF0IGNvbnRyaWJ1dGUgdG8gYSBuYW1lc3BhY2UgcGFja2FnZSwgYXMgZGVmaW5lZCBpbiA6cGVwOmA0MjBgLgpAQCAtOTUyLDEzICs5OTIsMjUgQEAKICAgICAgIGBgJ1xyJ2BgLiAgU2VlIDpwZXA6YDI3OGAgYW5kIDpwZXA6YDMxMTZgLCBhcyB3ZWxsIGFzCiAgICAgICA6ZnVuYzpgYnl0ZXMuc3BsaXRsaW5lc2AgZm9yIGFuIGFkZGl0aW9uYWwgdXNlLgogCisgICB2YXJpYWJsZSBhbm5vdGF0aW9uCisgICAgICBBIHR5cGUgbWV0YWRhdGEgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIGEgbW9kdWxlIGdsb2JhbCB2YXJpYWJsZSBvcgorICAgICAgYSBjbGFzcyBhdHRyaWJ1dGUuIEl0cyBzeW50YXggaXMgZXhwbGFpbmVkIGluIHNlY3Rpb24gOnJlZjpgYW5uYXNzaWduYC4KKyAgICAgIEFubm90YXRpb25zIGFyZSBzdG9yZWQgaW4gdGhlIDphdHRyOmBfX2Fubm90YXRpb25zX19gIHNwZWNpYWwKKyAgICAgIGF0dHJpYnV0ZSBvZiBhIGNsYXNzIG9yIG1vZHVsZSBvYmplY3QgYW5kIGNhbiBiZSBhY2Nlc3NlZCB1c2luZworICAgICAgOmZ1bmM6YHR5cGluZy5nZXRfdHlwZV9oaW50c2AuCisKKyAgICAgIFB5dGhvbiBpdHNlbGYgZG9lcyBub3QgYXNzaWduIGFueSBwYXJ0aWN1bGFyIG1lYW5pbmcgdG8gdmFyaWFibGUKKyAgICAgIGFubm90YXRpb25zLiBUaGV5IGFyZSBpbnRlbmRlZCB0byBiZSBpbnRlcnByZXRlZCBieSB0aGlyZC1wYXJ0eSBsaWJyYXJpZXMKKyAgICAgIG9yIHR5cGUgY2hlY2tpbmcgdG9vbHMuIFNlZSA6cGVwOmA1MjZgLCA6cGVwOmA0ODRgIHdoaWNoIGRlc2NyaWJlCisgICAgICBzb21lIG9mIHRoZWlyIHBvdGVudGlhbCB1c2VzLgorCiAgICB2aXJ0dWFsIGVudmlyb25tZW50CiAgICAgICBBIGNvb3BlcmF0aXZlbHkgaXNvbGF0ZWQgcnVudGltZSBlbnZpcm9ubWVudCB0aGF0IGFsbG93cyBQeXRob24gdXNlcnMKICAgICAgIGFuZCBhcHBsaWNhdGlvbnMgdG8gaW5zdGFsbCBhbmQgdXBncmFkZSBQeXRob24gZGlzdHJpYnV0aW9uIHBhY2thZ2VzCiAgICAgICB3aXRob3V0IGludGVyZmVyaW5nIHdpdGggdGhlIGJlaGF2aW91ciBvZiBvdGhlciBQeXRob24gYXBwbGljYXRpb25zCiAgICAgICBydW5uaW5nIG9uIHRoZSBzYW1lIHN5c3RlbS4KIAotICAgICAgU2VlIGFsc28gOnJlZjpgc2NyaXB0cy1weXZlbnZgLgorICAgICAgU2VlIGFsc28gOm1vZDpgdmVudmAuCiAKICAgIHZpcnR1YWwgbWFjaGluZQogICAgICAgQSBjb21wdXRlciBkZWZpbmVkIGVudGlyZWx5IGluIHNvZnR3YXJlLiAgUHl0aG9uJ3MgdmlydHVhbCBtYWNoaW5lCmRpZmYgLS1naXQgYS9Eb2MvaG93dG8vYXJncGFyc2UucnN0IGIvRG9jL2hvd3RvL2FyZ3BhcnNlLnJzdAppbmRleCAzYjc5YjkyLi43ZTE2MWE1IDEwMDY0NAotLS0gYS9Eb2MvaG93dG8vYXJncGFyc2UucnN0CisrKyBiL0RvYy9ob3d0by9hcmdwYXJzZS5yc3QKQEAgLTU0Nyw3ICs1NDcsOCBAQAogICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICBGaWxlICJwcm9nLnB5IiwgbGluZSAxMSwgaW4gPG1vZHVsZT4KICAgICAgICBpZiBhcmdzLnZlcmJvc2l0eSA+PSAyOgotICAgVHlwZUVycm9yOiB1bm9yZGVyYWJsZSB0eXBlczogTm9uZVR5cGUoKSA+PSBpbnQoKQorICAgVHlwZUVycm9yOiAnPj0nIG5vdCBzdXBwb3J0ZWQgYmV0d2VlbiBpbnN0YW5jZXMgb2YgJ05vbmVUeXBlJyBhbmQgJ2ludCcKKwogCiAqIEZpcnN0IG91dHB1dCB3ZW50IHdlbGwsIGFuZCBmaXhlcyB0aGUgYnVnIHdlIGhhZCBiZWZvcmUuCiAgIFRoYXQgaXMsIHdlIHdhbnQgYW55IHZhbHVlID49IDIgdG8gYmUgYXMgdmVyYm9zZSBhcyBwb3NzaWJsZS4KZGlmZiAtLWdpdCBhL0RvYy9ob3d0by9jbGluaWMucnN0IGIvRG9jL2hvd3RvL2NsaW5pYy5yc3QKaW5kZXggNDkxYzVhMi4uZWFhYjIwYSAxMDA2NDQKLS0tIGEvRG9jL2hvd3RvL2NsaW5pYy5yc3QKKysrIGIvRG9jL2hvd3RvL2NsaW5pYy5yc3QKQEAgLTgzNCw5ICs4MzQsOSBAQAogYGAnaSdgYCAgICAgYGBpbnRgYAogYGAnSSdgYCAgICAgYGB1bnNpZ25lZF9pbnQoYml0d2lzZT1UcnVlKWBgCiBgYCdrJ2BgICAgICBgYHVuc2lnbmVkX2xvbmcoYml0d2lzZT1UcnVlKWBgCi1gYCdLJ2BgICAgICBgYHVuc2lnbmVkX1BZX0xPTkdfTE9ORyhiaXR3aXNlPVRydWUpYGAKK2BgJ0snYGAgICAgIGBgdW5zaWduZWRfbG9uZ19sb25nKGJpdHdpc2U9VHJ1ZSlgYAogYGAnbCdgYCAgICAgYGBsb25nYGAKLWBgJ0wnYGAgICAgIGBgUFlfTE9OR19MT05HYGAKK2BgJ0wnYGAgICAgIGBgbG9uZyBsb25nYGAKIGBgJ24nYGAgICAgIGBgUHlfc3NpemVfdGBgCiBgYCdPJ2BgICAgICBgYG9iamVjdGBgCiBgYCdPISdgYCAgICBgYG9iamVjdChzdWJjbGFzc19vZj0nJlB5U29tZXRoaW5nX1R5cGUnKWBgCmRpZmYgLS1naXQgYS9Eb2MvaG93dG8vaW5kZXgucnN0IGIvRG9jL2hvd3RvL2luZGV4LnJzdAppbmRleCBkZTY1OTUwLi41OTMzNDFjIDEwMDY0NAotLS0gYS9Eb2MvaG93dG8vaW5kZXgucnN0CisrKyBiL0RvYy9ob3d0by9pbmRleC5yc3QKQEAgLTI4LDQgKzI4LDUgQEAKICAgIGFyZ3BhcnNlLnJzdAogICAgaXBhZGRyZXNzLnJzdAogICAgY2xpbmljLnJzdAorICAgaW5zdHJ1bWVudGF0aW9uLnJzdAogCmRpZmYgLS1naXQgYS9Eb2MvaG93dG8vaW5zdHJ1bWVudGF0aW9uLnJzdCBiL0RvYy9ob3d0by9pbnN0cnVtZW50YXRpb24ucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmY2E5YWEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvaG93dG8vaW5zdHJ1bWVudGF0aW9uLnJzdApAQCAtMCwwICsxLDQwOCBAQAorLi4gaGlnaGxpZ2h0Ojogc2hlbGwtc2Vzc2lvbgorCisuLiBfaW5zdHJ1bWVudGF0aW9uOgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorSW5zdHJ1bWVudGluZyBDUHl0aG9uIHdpdGggRFRyYWNlIGFuZCBTeXN0ZW1UYXAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKzphdXRob3I6IERhdmlkIE1hbGNvbG0KKzphdXRob3I6IMWBdWthc3ogTGFuZ2EKKworRFRyYWNlIGFuZCBTeXN0ZW1UYXAgYXJlIG1vbml0b3JpbmcgdG9vbHMsIGVhY2ggcHJvdmlkaW5nIGEgd2F5IHRvIGluc3BlY3QKK3doYXQgdGhlIHByb2Nlc3NlcyBvbiBhIGNvbXB1dGVyIHN5c3RlbSBhcmUgZG9pbmcuICBUaGV5IGJvdGggdXNlCitkb21haW4tc3BlY2lmaWMgbGFuZ3VhZ2VzIGFsbG93aW5nIGEgdXNlciB0byB3cml0ZSBzY3JpcHRzIHdoaWNoOgorCisgIC0gZmlsdGVyIHdoaWNoIHByb2Nlc3NlcyBhcmUgdG8gYmUgb2JzZXJ2ZWQKKyAgLSBnYXRoZXIgZGF0YSBmcm9tIHRoZSBwcm9jZXNzZXMgb2YgaW50ZXJlc3QKKyAgLSBnZW5lcmF0ZSByZXBvcnRzIG9uIHRoZSBkYXRhCisKK0FzIG9mIFB5dGhvbiAzLjYsIENQeXRob24gY2FuIGJlIGJ1aWx0IHdpdGggZW1iZWRkZWQgIm1hcmtlcnMiLCBhbHNvCitrbm93biBhcyAicHJvYmVzIiwgdGhhdCBjYW4gYmUgb2JzZXJ2ZWQgYnkgYSBEVHJhY2Ugb3IgU3lzdGVtVGFwIHNjcmlwdCwKK21ha2luZyBpdCBlYXNpZXIgdG8gbW9uaXRvciB3aGF0IHRoZSBDUHl0aG9uIHByb2Nlc3NlcyBvbiBhIHN5c3RlbSBhcmUKK2RvaW5nLgorCisuLiBpbXBsLWRldGFpbDo6CisKKyAgIERUcmFjZSBtYXJrZXJzIGFyZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIG9mIHRoZSBDUHl0aG9uIGludGVycHJldGVyLgorICAgTm8gZ3VhcmFudGVlcyBhcmUgbWFkZSBhYm91dCBwcm9iZSBjb21wYXRpYmlsaXR5IGJldHdlZW4gdmVyc2lvbnMgb2YKKyAgIENQeXRob24uIERUcmFjZSBzY3JpcHRzIGNhbiBzdG9wIHdvcmtpbmcgb3Igd29yayBpbmNvcnJlY3RseSB3aXRob3V0CisgICB3YXJuaW5nIHdoZW4gY2hhbmdpbmcgQ1B5dGhvbiB2ZXJzaW9ucy4KKworCitFbmFibGluZyB0aGUgc3RhdGljIG1hcmtlcnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCittYWNPUyBjb21lcyB3aXRoIGJ1aWx0LWluIHN1cHBvcnQgZm9yIERUcmFjZS4gIE9uIExpbnV4LCBpbiBvcmRlciB0bworYnVpbGQgQ1B5dGhvbiB3aXRoIHRoZSBlbWJlZGRlZCBtYXJrZXJzIGZvciBTeXN0ZW1UYXAsIHRoZSBTeXN0ZW1UYXAKK2RldmVsb3BtZW50IHRvb2xzIG11c3QgYmUgaW5zdGFsbGVkLgorCitPbiBhIExpbnV4IG1hY2hpbmUsIHRoaXMgY2FuIGJlIGRvbmUgdmlhOjoKKworICAgJCB5dW0gaW5zdGFsbCBzeXN0ZW10YXAtc2R0LWRldmVsCisKK29yOjoKKworICAgJCBzdWRvIGFwdC1nZXQgaW5zdGFsbCBzeXN0ZW10YXAtc2R0LWRldgorCisKK0NQeXRob24gbXVzdCB0aGVuIGJlIGNvbmZpZ3VyZWQgYGAtLXdpdGgtZHRyYWNlYGA6CisKKy4uIGNvZGUtYmxvY2s6OiBub25lCisKKyAgIGNoZWNraW5nIGZvciAtLXdpdGgtZHRyYWNlLi4uIHllcworCitPbiBtYWNPUywgeW91IGNhbiBsaXN0IGF2YWlsYWJsZSBEVHJhY2UgcHJvYmVzIGJ5IHJ1bm5pbmcgYSBQeXRob24KK3Byb2Nlc3MgaW4gdGhlIGJhY2tncm91bmQgYW5kIGxpc3RpbmcgYWxsIHByb2JlcyBtYWRlIGF2YWlsYWJsZSBieSB0aGUKK1B5dGhvbiBwcm92aWRlcjo6CisKKyAgICQgcHl0aG9uMy42IC1xICYKKyAgICQgc3VkbyBkdHJhY2UgLWwgLVAgcHl0aG9uJCEgICMgb3I6IGR0cmFjZSAtbCAtbSBweXRob24zLjYKKworICAgICAgSUQgICBQUk9WSURFUiAgICAgICAgICAgIE1PRFVMRSAgICAgICAgICAgICAgICAgICAgICAgICAgRlVOQ1RJT04gTkFNRQorICAgMjk1NjQgcHl0aG9uMTgwMzUgICAgICAgIHB5dGhvbjMuNiAgICAgICAgICBfUHlFdmFsX0V2YWxGcmFtZURlZmF1bHQgZnVuY3Rpb24tZW50cnkKKyAgIDI5NTY1IHB5dGhvbjE4MDM1ICAgICAgICBweXRob24zLjYgICAgICAgICAgICAgZHRyYWNlX2Z1bmN0aW9uX2VudHJ5IGZ1bmN0aW9uLWVudHJ5CisgICAyOTU2NiBweXRob24xODAzNSAgICAgICAgcHl0aG9uMy42ICAgICAgICAgIF9QeUV2YWxfRXZhbEZyYW1lRGVmYXVsdCBmdW5jdGlvbi1yZXR1cm4KKyAgIDI5NTY3IHB5dGhvbjE4MDM1ICAgICAgICBweXRob24zLjYgICAgICAgICAgICBkdHJhY2VfZnVuY3Rpb25fcmV0dXJuIGZ1bmN0aW9uLXJldHVybgorICAgMjk1NjggcHl0aG9uMTgwMzUgICAgICAgIHB5dGhvbjMuNiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxlY3QgZ2MtZG9uZQorICAgMjk1NjkgcHl0aG9uMTgwMzUgICAgICAgIHB5dGhvbjMuNiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxlY3QgZ2Mtc3RhcnQKKyAgIDI5NTcwIHB5dGhvbjE4MDM1ICAgICAgICBweXRob24zLjYgICAgICAgICAgX1B5RXZhbF9FdmFsRnJhbWVEZWZhdWx0IGxpbmUKKyAgIDI5NTcxIHB5dGhvbjE4MDM1ICAgICAgICBweXRob24zLjYgICAgICAgICAgICAgICAgIG1heWJlX2R0cmFjZV9saW5lIGxpbmUKKworT24gTGludXgsIHlvdSBjYW4gdmVyaWZ5IGlmIHRoZSBTeXN0ZW1UYXAgc3RhdGljIG1hcmtlcnMgYXJlIHByZXNlbnQgaW4KK3RoZSBidWlsdCBiaW5hcnkgYnkgc2VlaW5nIGlmIGl0IGNvbnRhaW5zIGEgIi5ub3RlLnN0YXBzZHQiIHNlY3Rpb24uCisKKzo6CisKKyAgICQgcmVhZGVsZiAtUyAuL3B5dGhvbiB8IGdyZXAgLm5vdGUuc3RhcHNkdAorICAgWzMwXSAubm90ZS5zdGFwc2R0ICAgICAgICBOT1RFICAgICAgICAgMDAwMDAwMDAwMDAwMDAwMCAwMDMwOGQ3OAorCitJZiB5b3UndmUgYnVpbHQgUHl0aG9uIGFzIGEgc2hhcmVkIGxpYnJhcnkgKHdpdGggLS1lbmFibGUtc2hhcmVkKSwgeW91CituZWVkIHRvIGxvb2sgaW5zdGVhZCB3aXRoaW4gdGhlIHNoYXJlZCBsaWJyYXJ5LiAgRm9yIGV4YW1wbGU6OgorCisgICAkIHJlYWRlbGYgLVMgbGlicHl0aG9uMy4zZG0uc28uMS4wIHwgZ3JlcCAubm90ZS5zdGFwc2R0CisgICBbMjldIC5ub3RlLnN0YXBzZHQgICAgICAgIE5PVEUgICAgICAgICAwMDAwMDAwMDAwMDAwMDAwIDAwMzY1YjY4CisKK1N1ZmZpY2llbnRseSBtb2Rlcm4gcmVhZGVsZiBjYW4gcHJpbnQgdGhlIG1ldGFkYXRhOjoKKworICAgICQgcmVhZGVsZiAtbiAuL3B5dGhvbgorCisgICAgRGlzcGxheWluZyBub3RlcyBmb3VuZCBhdCBmaWxlIG9mZnNldCAweDAwMDAwMjU0IHdpdGggbGVuZ3RoIDB4MDAwMDAwMjA6CisgICAgICAgIE93bmVyICAgICAgICAgICAgICAgICBEYXRhIHNpemUgICAgICAgICAgRGVzY3JpcHRpb24KKyAgICAgICAgR05VICAgICAgICAgICAgICAgICAgMHgwMDAwMDAxMCAgICAgICAgICBOVF9HTlVfQUJJX1RBRyAoQUJJIHZlcnNpb24gdGFnKQorICAgICAgICAgICAgT1M6IExpbnV4LCBBQkk6IDIuNi4zMgorCisgICAgRGlzcGxheWluZyBub3RlcyBmb3VuZCBhdCBmaWxlIG9mZnNldCAweDAwMDAwMjc0IHdpdGggbGVuZ3RoIDB4MDAwMDAwMjQ6CisgICAgICAgIE93bmVyICAgICAgICAgICAgICAgICBEYXRhIHNpemUgICAgICAgICAgRGVzY3JpcHRpb24KKyAgICAgICAgR05VICAgICAgICAgICAgICAgICAgMHgwMDAwMDAxNCAgICAgICAgICBOVF9HTlVfQlVJTERfSUQgKHVuaXF1ZSBidWlsZCBJRCBiaXRzdHJpbmcpCisgICAgICAgICAgICBCdWlsZCBJRDogZGY5MjRhMmIwOGE3ZTg5ZjZlMTEyNTFkNDYwMjAyMjk3N2FmMjY3MAorCisgICAgRGlzcGxheWluZyBub3RlcyBmb3VuZCBhdCBmaWxlIG9mZnNldCAweDAwMmQ2YzMwIHdpdGggbGVuZ3RoIDB4MDAwMDAxNDQ6CisgICAgICAgIE93bmVyICAgICAgICAgICAgICAgICBEYXRhIHNpemUgICAgICAgICAgRGVzY3JpcHRpb24KKyAgICAgICAgc3RhcHNkdCAgICAgICAgICAgICAgMHgwMDAwMDAzMSAgICAgICAgICBOVF9TVEFQU0RUIChTeXN0ZW1UYXAgcHJvYmUgZGVzY3JpcHRvcnMpCisgICAgICAgICAgICBQcm92aWRlcjogcHl0aG9uCisgICAgICAgICAgICBOYW1lOiBnY19fc3RhcnQKKyAgICAgICAgICAgIExvY2F0aW9uOiAweDAwMDAwMDAwMDA0MzcxYzMsIEJhc2U6IDB4MDAwMDAwMDAwMDYzMGNlMiwgU2VtYXBob3JlOiAweDAwMDAwMDAwMDA4ZDZiZjYKKyAgICAgICAgICAgIEFyZ3VtZW50czogLTRAJWVieAorICAgICAgICBzdGFwc2R0ICAgICAgICAgICAgICAweDAwMDAwMDMwICAgICAgICAgIE5UX1NUQVBTRFQgKFN5c3RlbVRhcCBwcm9iZSBkZXNjcmlwdG9ycykKKyAgICAgICAgICAgIFByb3ZpZGVyOiBweXRob24KKyAgICAgICAgICAgIE5hbWU6IGdjX19kb25lCisgICAgICAgICAgICBMb2NhdGlvbjogMHgwMDAwMDAwMDAwNDM3NGUxLCBCYXNlOiAweDAwMDAwMDAwMDA2MzBjZTIsIFNlbWFwaG9yZTogMHgwMDAwMDAwMDAwOGQ2YmY4CisgICAgICAgICAgICBBcmd1bWVudHM6IC04QCVyYXgKKyAgICAgICAgc3RhcHNkdCAgICAgICAgICAgICAgMHgwMDAwMDA0NSAgICAgICAgICBOVF9TVEFQU0RUIChTeXN0ZW1UYXAgcHJvYmUgZGVzY3JpcHRvcnMpCisgICAgICAgICAgICBQcm92aWRlcjogcHl0aG9uCisgICAgICAgICAgICBOYW1lOiBmdW5jdGlvbl9fZW50cnkKKyAgICAgICAgICAgIExvY2F0aW9uOiAweDAwMDAwMDAwMDA1M2RiNmMsIEJhc2U6IDB4MDAwMDAwMDAwMDYzMGNlMiwgU2VtYXBob3JlOiAweDAwMDAwMDAwMDA4ZDZiZTgKKyAgICAgICAgICAgIEFyZ3VtZW50czogOEAlcmJwIDhAJXIxMiAtNEAlZWF4CisgICAgICAgIHN0YXBzZHQgICAgICAgICAgICAgIDB4MDAwMDAwNDYgICAgICAgICAgTlRfU1RBUFNEVCAoU3lzdGVtVGFwIHByb2JlIGRlc2NyaXB0b3JzKQorICAgICAgICAgICAgUHJvdmlkZXI6IHB5dGhvbgorICAgICAgICAgICAgTmFtZTogZnVuY3Rpb25fX3JldHVybgorICAgICAgICAgICAgTG9jYXRpb246IDB4MDAwMDAwMDAwMDUzZGJhOCwgQmFzZTogMHgwMDAwMDAwMDAwNjMwY2UyLCBTZW1hcGhvcmU6IDB4MDAwMDAwMDAwMDhkNmJlYQorICAgICAgICAgICAgQXJndW1lbnRzOiA4QCVyYnAgOEAlcjEyIC00QCVlYXgKKworVGhlIGFib3ZlIG1ldGFkYXRhIGNvbnRhaW5zIGluZm9ybWF0aW9uIGZvciBTeXN0ZW1UYXAgZGVzY3JpYmluZyBob3cgaXQKK2NhbiBwYXRjaCBzdHJhdGVnaWNhbGx5LXBsYWNlZCBtYWNoaW5lIGNvZGUgaW5zdHJ1Y3Rpb25zIHRvIGVuYWJsZSB0aGUKK3RyYWNpbmcgaG9va3MgdXNlZCBieSBhIFN5c3RlbVRhcCBzY3JpcHQuCisKKworU3RhdGljIERUcmFjZSBwcm9iZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBmb2xsb3dpbmcgZXhhbXBsZSBEVHJhY2Ugc2NyaXB0IGNhbiBiZSB1c2VkIHRvIHNob3cgdGhlIGNhbGwvcmV0dXJuCitoaWVyYXJjaHkgb2YgYSBQeXRob24gc2NyaXB0LCBvbmx5IHRyYWNpbmcgd2l0aGluIHRoZSBpbnZvY2F0aW9uIG9mCithIGZ1bmN0aW9uIGNhbGxlZCAic3RhcnQiLiBJbiBvdGhlciB3b3JkcywgaW1wb3J0LXRpbWUgZnVuY3Rpb24KK2ludm9jYXRpb25zIGFyZSBub3QgZ29pbmcgdG8gYmUgbGlzdGVkOgorCisuLiBjb2RlLWJsb2NrOjogbm9uZQorCisgICAgc2VsZiBpbnQgaW5kZW50OworCisgICAgcHl0aG9uJHRhcmdldDo6OmZ1bmN0aW9uLWVudHJ5CisgICAgL2NvcHlpbnN0cihhcmcxKSA9PSAic3RhcnQiLworICAgIHsKKyAgICAgICAgICAgIHNlbGYtPnRyYWNlID0gMTsKKyAgICB9CisKKyAgICBweXRob24kdGFyZ2V0Ojo6ZnVuY3Rpb24tZW50cnkKKyAgICAvc2VsZi0+dHJhY2UvCisgICAgeworICAgICAgICAgICAgcHJpbnRmKCIlZFx0JSpzOiIsIHRpbWVzdGFtcCwgMTUsIHByb2JlbmFtZSk7CisgICAgICAgICAgICBwcmludGYoIiUqcyIsIHNlbGYtPmluZGVudCwgIiIpOworICAgICAgICAgICAgcHJpbnRmKCIlczolczolZFxuIiwgYmFzZW5hbWUoY29weWluc3RyKGFyZzApKSwgY29weWluc3RyKGFyZzEpLCBhcmcyKTsKKyAgICAgICAgICAgIHNlbGYtPmluZGVudCsrOworICAgIH0KKworICAgIHB5dGhvbiR0YXJnZXQ6OjpmdW5jdGlvbi1yZXR1cm4KKyAgICAvc2VsZi0+dHJhY2UvCisgICAgeworICAgICAgICAgICAgc2VsZi0+aW5kZW50LS07CisgICAgICAgICAgICBwcmludGYoIiVkXHQlKnM6IiwgdGltZXN0YW1wLCAxNSwgcHJvYmVuYW1lKTsKKyAgICAgICAgICAgIHByaW50ZigiJSpzIiwgc2VsZi0+aW5kZW50LCAiIik7CisgICAgICAgICAgICBwcmludGYoIiVzOiVzOiVkXG4iLCBiYXNlbmFtZShjb3B5aW5zdHIoYXJnMCkpLCBjb3B5aW5zdHIoYXJnMSksIGFyZzIpOworICAgIH0KKworICAgIHB5dGhvbiR0YXJnZXQ6OjpmdW5jdGlvbi1yZXR1cm4KKyAgICAvY29weWluc3RyKGFyZzEpID09ICJzdGFydCIvCisgICAgeworICAgICAgICAgICAgc2VsZi0+dHJhY2UgPSAwOworICAgIH0KKworSXQgY2FuIGJlIGludm9rZWQgbGlrZSB0aGlzOjoKKworICAkIHN1ZG8gZHRyYWNlIC1xIC1zIGNhbGxfc3RhY2suZCAtYyAicHl0aG9uMy42IHNjcmlwdC5weSIKKworVGhlIG91dHB1dCBsb29rcyBsaWtlIHRoaXM6CisKKy4uIGNvZGUtYmxvY2s6OiBub25lCisKKyAgICAxNTY2NDEzNjA1MDIyODAgIGZ1bmN0aW9uLWVudHJ5OmNhbGxfc3RhY2sucHk6c3RhcnQ6MjMKKyAgICAxNTY2NDEzNjA1MTg4MDQgIGZ1bmN0aW9uLWVudHJ5OiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzE6MQorICAgIDE1NjY0MTM2MDUzMjc5NyAgZnVuY3Rpb24tZW50cnk6ICBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzM6OQorICAgIDE1NjY0MTM2MDU0NjgwNyBmdW5jdGlvbi1yZXR1cm46ICBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzM6MTAKKyAgICAxNTY2NDEzNjA1NjMzNjcgZnVuY3Rpb24tcmV0dXJuOiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzE6MgorICAgIDE1NjY0MTM2MDU3ODM2NSAgZnVuY3Rpb24tZW50cnk6IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMjo1CisgICAgMTU2NjQxMzYwNTkxNzU3ICBmdW5jdGlvbi1lbnRyeTogIGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMToxCisgICAgMTU2NjQxMzYwNjA1NTU2ICBmdW5jdGlvbi1lbnRyeTogICBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzM6OQorICAgIDE1NjY0MTM2MDYxNzQ4MiBmdW5jdGlvbi1yZXR1cm46ICAgY2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjEwCisgICAgMTU2NjQxMzYwNjI5ODE0IGZ1bmN0aW9uLXJldHVybjogIGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMToyCisgICAgMTU2NjQxMzYwNjQyMjg1IGZ1bmN0aW9uLXJldHVybjogY2FsbF9zdGFjay5weTpmdW5jdGlvbl8yOjYKKyAgICAxNTY2NDEzNjA2NTY3NzAgIGZ1bmN0aW9uLWVudHJ5OiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzM6OQorICAgIDE1NjY0MTM2MDY2OTcwNyBmdW5jdGlvbi1yZXR1cm46IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMzoxMAorICAgIDE1NjY0MTM2MDY4Nzg1MyAgZnVuY3Rpb24tZW50cnk6IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fNDoxMworICAgIDE1NjY0MTM2MDcwMDcxOSBmdW5jdGlvbi1yZXR1cm46IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fNDoxNAorICAgIDE1NjY0MTM2MDcxOTY0MCAgZnVuY3Rpb24tZW50cnk6IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fNToxOAorICAgIDE1NjY0MTM2MDczMjU2NyBmdW5jdGlvbi1yZXR1cm46IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fNToyMQorICAgIDE1NjY0MTM2MDc0NzM3MCBmdW5jdGlvbi1yZXR1cm46Y2FsbF9zdGFjay5weTpzdGFydDoyOAorCisKK1N0YXRpYyBTeXN0ZW1UYXAgbWFya2VycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBsb3ctbGV2ZWwgd2F5IHRvIHVzZSB0aGUgU3lzdGVtVGFwIGludGVncmF0aW9uIGlzIHRvIHVzZSB0aGUgc3RhdGljCittYXJrZXJzIGRpcmVjdGx5LiAgVGhpcyByZXF1aXJlcyB5b3UgdG8gZXhwbGljaXRseSBzdGF0ZSB0aGUgYmluYXJ5IGZpbGUKK2NvbnRhaW5pbmcgdGhlbS4KKworRm9yIGV4YW1wbGUsIHRoaXMgU3lzdGVtVGFwIHNjcmlwdCBjYW4gYmUgdXNlZCB0byBzaG93IHRoZSBjYWxsL3JldHVybgoraGllcmFyY2h5IG9mIGEgUHl0aG9uIHNjcmlwdDoKKworLi4gY29kZS1ibG9jazo6IG5vbmUKKworICAgcHJvYmUgcHJvY2VzcygicHl0aG9uIikubWFyaygiZnVuY3Rpb25fX2VudHJ5IikgeworICAgICAgICBmaWxlbmFtZSA9IHVzZXJfc3RyaW5nKCRhcmcxKTsKKyAgICAgICAgZnVuY25hbWUgPSB1c2VyX3N0cmluZygkYXJnMik7CisgICAgICAgIGxpbmVubyA9ICRhcmczOworCisgICAgICAgIHByaW50ZigiJXMgPT4gJXMgaW4gJXM6JWRcXG4iLAorICAgICAgICAgICAgICAgdGhyZWFkX2luZGVudCgxKSwgZnVuY25hbWUsIGZpbGVuYW1lLCBsaW5lbm8pOworICAgfQorCisgICBwcm9iZSBwcm9jZXNzKCJweXRob24iKS5tYXJrKCJmdW5jdGlvbl9fcmV0dXJuIikgeworICAgICAgIGZpbGVuYW1lID0gdXNlcl9zdHJpbmcoJGFyZzEpOworICAgICAgIGZ1bmNuYW1lID0gdXNlcl9zdHJpbmcoJGFyZzIpOworICAgICAgIGxpbmVubyA9ICRhcmczOworCisgICAgICAgcHJpbnRmKCIlcyA8PSAlcyBpbiAlczolZFxcbiIsCisgICAgICAgICAgICAgIHRocmVhZF9pbmRlbnQoLTEpLCBmdW5jbmFtZSwgZmlsZW5hbWUsIGxpbmVubyk7CisgICB9CisKK0l0IGNhbiBiZSBpbnZva2VkIGxpa2UgdGhpczo6CisKKyAgICQgc3RhcCBcCisgICAgIHNob3ctY2FsbC1oaWVyYXJjaHkuc3RwIFwKKyAgICAgLWMgIi4vcHl0aG9uIHRlc3QucHkiCisKK1RoZSBvdXRwdXQgbG9va3MgbGlrZSB0aGlzOgorCisuLiBjb2RlLWJsb2NrOjogbm9uZQorCisgICAxMTQwOCBweXRob24oODI3NCk6ICAgICAgICA9PiBfX2NvbnRhaW5zX18gaW4gTGliL19hYmNvbGwucHk6MzYyCisgICAxMTQxNCBweXRob24oODI3NCk6ICAgICAgICAgPT4gX19nZXRpdGVtX18gaW4gTGliL29zLnB5OjQyNQorICAgMTE0MTggcHl0aG9uKDgyNzQpOiAgICAgICAgICA9PiBlbmNvZGUgaW4gTGliL29zLnB5OjQ5MAorICAgMTE0MjQgcHl0aG9uKDgyNzQpOiAgICAgICAgICA8PSBlbmNvZGUgaW4gTGliL29zLnB5OjQ5MworICAgMTE0MjggcHl0aG9uKDgyNzQpOiAgICAgICAgIDw9IF9fZ2V0aXRlbV9fIGluIExpYi9vcy5weTo0MjYKKyAgIDExNDMzIHB5dGhvbig4Mjc0KTogICAgICAgIDw9IF9fY29udGFpbnNfXyBpbiBMaWIvX2FiY29sbC5weTozNjYKKword2hlcmUgdGhlIGNvbHVtbnMgYXJlOgorCisgIC0gdGltZSBpbiBtaWNyb3NlY29uZHMgc2luY2Ugc3RhcnQgb2Ygc2NyaXB0CisKKyAgLSBuYW1lIG9mIGV4ZWN1dGFibGUKKworICAtIFBJRCBvZiBwcm9jZXNzCisKK2FuZCB0aGUgcmVtYWluZGVyIGluZGljYXRlcyB0aGUgY2FsbC9yZXR1cm4gaGllcmFyY2h5IGFzIHRoZSBzY3JpcHQgZXhlY3V0ZXMuCisKK0ZvciBhIGAtLWVuYWJsZS1zaGFyZWRgIGJ1aWxkIG9mIENQeXRob24sIHRoZSBtYXJrZXJzIGFyZSBjb250YWluZWQgd2l0aGluIHRoZQorbGlicHl0aG9uIHNoYXJlZCBsaWJyYXJ5LCBhbmQgdGhlIHByb2JlJ3MgZG90dGVkIHBhdGggbmVlZHMgdG8gcmVmbGVjdCB0aGlzLiBGb3IKK2V4YW1wbGUsIHRoaXMgbGluZSBmcm9tIHRoZSBhYm92ZSBleGFtcGxlOjoKKworICAgcHJvYmUgcHJvY2VzcygicHl0aG9uIikubWFyaygiZnVuY3Rpb25fX2VudHJ5IikgeworCitzaG91bGQgaW5zdGVhZCByZWFkOjoKKworICAgcHJvYmUgcHJvY2VzcygicHl0aG9uIikubGlicmFyeSgibGlicHl0aG9uMy42ZG0uc28uMS4wIikubWFyaygiZnVuY3Rpb25fX2VudHJ5IikgeworCisoYXNzdW1pbmcgYSBkZWJ1ZyBidWlsZCBvZiBDUHl0aG9uIDMuNikKKworCitBdmFpbGFibGUgc3RhdGljIG1hcmtlcnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiBJJ20gcmV1c2luZyB0aGUgImM6ZnVuY3Rpb24iIHR5cGUgZm9yIG1hcmtlcnMKKworLi4gYzpmdW5jdGlvbjo6IGZ1bmN0aW9uX19lbnRyeShzdHIgZmlsZW5hbWUsIHN0ciBmdW5jbmFtZSwgaW50IGxpbmVubykKKworICAgVGhpcyBtYXJrZXIgaW5kaWNhdGVzIHRoYXQgZXhlY3V0aW9uIG9mIGEgUHl0aG9uIGZ1bmN0aW9uIGhhcyBiZWd1bi4KKyAgIEl0IGlzIG9ubHkgdHJpZ2dlcmVkIGZvciBwdXJlLVB5dGhvbiAoYnl0ZWNvZGUpIGZ1bmN0aW9ucy4KKworICAgVGhlIGZpbGVuYW1lLCBmdW5jdGlvbiBuYW1lLCBhbmQgbGluZSBudW1iZXIgYXJlIHByb3ZpZGVkIGJhY2sgdG8gdGhlCisgICB0cmFjaW5nIHNjcmlwdCBhcyBwb3NpdGlvbmFsIGFyZ3VtZW50cywgd2hpY2ggbXVzdCBiZSBhY2Nlc3NlZCB1c2luZworICAgYGAkYXJnMWBgLCBgYCRhcmcyYGAsIGBgJGFyZzNgYDoKKworICAgICAgICogYGAkYXJnMWBgIDogYGAoY29uc3QgY2hhciAqKWBgIGZpbGVuYW1lLCBhY2Nlc3NpYmxlIHVzaW5nIGBgdXNlcl9zdHJpbmcoJGFyZzEpYGAKKworICAgICAgICogYGAkYXJnMmBgIDogYGAoY29uc3QgY2hhciAqKWBgIGZ1bmN0aW9uIG5hbWUsIGFjY2Vzc2libGUgdXNpbmcKKyAgICAgICAgIGBgdXNlcl9zdHJpbmcoJGFyZzIpYGAKKworICAgICAgICogYGAkYXJnM2BgIDogYGBpbnRgYCBsaW5lIG51bWJlcgorCisuLiBjOmZ1bmN0aW9uOjogZnVuY3Rpb25fX3JldHVybihzdHIgZmlsZW5hbWUsIHN0ciBmdW5jbmFtZSwgaW50IGxpbmVubykKKworICAgVGhpcyBtYXJrZXIgaXMgdGhlIGNvbnZlcnNlIG9mIDpjOmZ1bmM6YGZ1bmN0aW9uX19lbnRyeWAsIGFuZCBpbmRpY2F0ZXMgdGhhdAorICAgZXhlY3V0aW9uIG9mIGEgUHl0aG9uIGZ1bmN0aW9uIGhhcyBlbmRlZCAoZWl0aGVyIHZpYSBgYHJldHVybmBgLCBvciB2aWEgYW4KKyAgIGV4Y2VwdGlvbikuICBJdCBpcyBvbmx5IHRyaWdnZXJlZCBmb3IgcHVyZS1QeXRob24gKGJ5dGVjb2RlKSBmdW5jdGlvbnMuCisKKyAgIFRoZSBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIGZvciA6YzpmdW5jOmBmdW5jdGlvbl9fZW50cnlgCisKKy4uIGM6ZnVuY3Rpb246OiBsaW5lKHN0ciBmaWxlbmFtZSwgc3RyIGZ1bmNuYW1lLCBpbnQgbGluZW5vKQorCisgICBUaGlzIG1hcmtlciBpbmRpY2F0ZXMgYSBQeXRob24gbGluZSBpcyBhYm91dCB0byBiZSBleGVjdXRlZC4gIEl0IGlzCisgICB0aGUgZXF1aXZhbGVudCBvZiBsaW5lLWJ5LWxpbmUgdHJhY2luZyB3aXRoIGEgUHl0aG9uIHByb2ZpbGVyLiAgSXQgaXMKKyAgIG5vdCB0cmlnZ2VyZWQgd2l0aGluIEMgZnVuY3Rpb25zLgorCisgICBUaGUgYXJndW1lbnRzIGFyZSB0aGUgc2FtZSBhcyBmb3IgOmM6ZnVuYzpgZnVuY3Rpb25fX2VudHJ5YC4KKworLi4gYzpmdW5jdGlvbjo6IGdjX19zdGFydChpbnQgZ2VuZXJhdGlvbikKKworICAgRmlyZXMgd2hlbiB0aGUgUHl0aG9uIGludGVycHJldGVyIHN0YXJ0cyBhIGdhcmJhZ2UgY29sbGVjdGlvbiBjeWNsZS4KKyAgIGBgYXJnMGBgIGlzIHRoZSBnZW5lcmF0aW9uIHRvIHNjYW4sIGxpa2UgOmZ1bmM6YGdjLmNvbGxlY3QoKWAuCisKKy4uIGM6ZnVuY3Rpb246OiBnY19fZG9uZShsb25nIGNvbGxlY3RlZCkKKworICAgRmlyZXMgd2hlbiB0aGUgUHl0aG9uIGludGVycHJldGVyIGZpbmlzaGVzIGEgZ2FyYmFnZSBjb2xsZWN0aW9uCisgICBjeWNsZS4gYGBhcmcwYGAgaXMgdGhlIG51bWJlciBvZiBjb2xsZWN0ZWQgb2JqZWN0cy4KKworCitTeXN0ZW1UYXAgVGFwc2V0cworLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGhpZ2hlci1sZXZlbCB3YXkgdG8gdXNlIHRoZSBTeXN0ZW1UYXAgaW50ZWdyYXRpb24gaXMgdG8gdXNlIGEgInRhcHNldCI6CitTeXN0ZW1UYXAncyBlcXVpdmFsZW50IG9mIGEgbGlicmFyeSwgd2hpY2ggaGlkZXMgc29tZSBvZiB0aGUgbG93ZXItbGV2ZWwKK2RldGFpbHMgb2YgdGhlIHN0YXRpYyBtYXJrZXJzLgorCitIZXJlIGlzIGEgdGFwc2V0IGZpbGUsIGJhc2VkIG9uIGEgbm9uLXNoYXJlZCBidWlsZCBvZiBDUHl0aG9uOgorCisuLiBjb2RlLWJsb2NrOjogbm9uZQorCisgICAgLyoKKyAgICAgICBQcm92aWRlIGEgaGlnaGVyLWxldmVsIHdyYXBwaW5nIGFyb3VuZCB0aGUgZnVuY3Rpb25fX2VudHJ5IGFuZAorICAgICAgIGZ1bmN0aW9uX19yZXR1cm4gbWFya2VyczoKKyAgICAgXCovCisgICAgcHJvYmUgcHl0aG9uLmZ1bmN0aW9uLmVudHJ5ID0gcHJvY2VzcygicHl0aG9uIikubWFyaygiZnVuY3Rpb25fX2VudHJ5IikKKyAgICB7CisgICAgICAgIGZpbGVuYW1lID0gdXNlcl9zdHJpbmcoJGFyZzEpOworICAgICAgICBmdW5jbmFtZSA9IHVzZXJfc3RyaW5nKCRhcmcyKTsKKyAgICAgICAgbGluZW5vID0gJGFyZzM7CisgICAgICAgIGZyYW1lcHRyID0gJGFyZzQKKyAgICB9CisgICAgcHJvYmUgcHl0aG9uLmZ1bmN0aW9uLnJldHVybiA9IHByb2Nlc3MoInB5dGhvbiIpLm1hcmsoImZ1bmN0aW9uX19yZXR1cm4iKQorICAgIHsKKyAgICAgICAgZmlsZW5hbWUgPSB1c2VyX3N0cmluZygkYXJnMSk7CisgICAgICAgIGZ1bmNuYW1lID0gdXNlcl9zdHJpbmcoJGFyZzIpOworICAgICAgICBsaW5lbm8gPSAkYXJnMzsKKyAgICAgICAgZnJhbWVwdHIgPSAkYXJnNAorICAgIH0KKworSWYgdGhpcyBmaWxlIGlzIGluc3RhbGxlZCBpbiBTeXN0ZW1UYXAncyB0YXBzZXQgZGlyZWN0b3J5IChlLmcuCitgYC91c3Ivc2hhcmUvc3lzdGVtdGFwL3RhcHNldGBgKSwgdGhlbiB0aGVzZSBhZGRpdGlvbmFsIHByb2JlcG9pbnRzIGJlY29tZQorYXZhaWxhYmxlOgorCisuLiBjOmZ1bmN0aW9uOjogcHl0aG9uLmZ1bmN0aW9uLmVudHJ5KHN0ciBmaWxlbmFtZSwgc3RyIGZ1bmNuYW1lLCBpbnQgbGluZW5vLCBmcmFtZXB0cikKKworICAgVGhpcyBwcm9iZSBwb2ludCBpbmRpY2F0ZXMgdGhhdCBleGVjdXRpb24gb2YgYSBQeXRob24gZnVuY3Rpb24gaGFzIGJlZ3VuLgorICAgSXQgaXMgb25seSB0cmlnZ2VyZWQgZm9yIHB1cmUtcHl0aG9uIChieXRlY29kZSkgZnVuY3Rpb25zLgorCisuLiBjOmZ1bmN0aW9uOjogcHl0aG9uLmZ1bmN0aW9uLnJldHVybihzdHIgZmlsZW5hbWUsIHN0ciBmdW5jbmFtZSwgaW50IGxpbmVubywgZnJhbWVwdHIpCisKKyAgIFRoaXMgcHJvYmUgcG9pbnQgaXMgdGhlIGNvbnZlcnNlIG9mIDpjOmZ1bmM6YHB5dGhvbi5mdW5jdGlvbi5yZXR1cm5gLCBhbmQKKyAgIGluZGljYXRlcyB0aGF0IGV4ZWN1dGlvbiBvZiBhIFB5dGhvbiBmdW5jdGlvbiBoYXMgZW5kZWQgKGVpdGhlciB2aWEKKyAgIGBgcmV0dXJuYGAsIG9yIHZpYSBhbiBleGNlcHRpb24pLiAgSXQgaXMgb25seSB0cmlnZ2VyZWQgZm9yIHB1cmUtcHl0aG9uCisgICAoYnl0ZWNvZGUpIGZ1bmN0aW9ucy4KKworCitFeGFtcGxlcworLS0tLS0tLS0KK1RoaXMgU3lzdGVtVGFwIHNjcmlwdCB1c2VzIHRoZSB0YXBzZXQgYWJvdmUgdG8gbW9yZSBjbGVhbmx5IGltcGxlbWVudCB0aGUKK2V4YW1wbGUgZ2l2ZW4gYWJvdmUgb2YgdHJhY2luZyB0aGUgUHl0aG9uIGZ1bmN0aW9uLWNhbGwgaGllcmFyY2h5LCB3aXRob3V0CituZWVkaW5nIHRvIGRpcmVjdGx5IG5hbWUgdGhlIHN0YXRpYyBtYXJrZXJzOgorCisuLiBjb2RlLWJsb2NrOjogbm9uZQorCisgICAgcHJvYmUgcHl0aG9uLmZ1bmN0aW9uLmVudHJ5CisgICAgeworICAgICAgcHJpbnRmKCIlcyA9PiAlcyBpbiAlczolZFxuIiwKKyAgICAgICAgICAgICB0aHJlYWRfaW5kZW50KDEpLCBmdW5jbmFtZSwgZmlsZW5hbWUsIGxpbmVubyk7CisgICAgfQorCisgICAgcHJvYmUgcHl0aG9uLmZ1bmN0aW9uLnJldHVybgorICAgIHsKKyAgICAgIHByaW50ZigiJXMgPD0gJXMgaW4gJXM6JWRcbiIsCisgICAgICAgICAgICAgdGhyZWFkX2luZGVudCgtMSksIGZ1bmNuYW1lLCBmaWxlbmFtZSwgbGluZW5vKTsKKyAgICB9CisKKworVGhlIGZvbGxvd2luZyBzY3JpcHQgdXNlcyB0aGUgdGFwc2V0IGFib3ZlIHRvIHByb3ZpZGUgYSB0b3AtbGlrZSB2aWV3IG9mIGFsbAorcnVubmluZyBDUHl0aG9uIGNvZGUsIHNob3dpbmcgdGhlIHRvcCAyMCBtb3N0IGZyZXF1ZW50bHktZW50ZXJlZCBieXRlY29kZQorZnJhbWVzLCBlYWNoIHNlY29uZCwgYWNyb3NzIHRoZSB3aG9sZSBzeXN0ZW06CisKKy4uIGNvZGUtYmxvY2s6OiBub25lCisKKyAgICBnbG9iYWwgZm5fY2FsbHM7CisKKyAgICBwcm9iZSBweXRob24uZnVuY3Rpb24uZW50cnkKKyAgICB7CisgICAgICAgIGZuX2NhbGxzW3BpZCgpLCBmaWxlbmFtZSwgZnVuY25hbWUsIGxpbmVub10gKz0gMTsKKyAgICB9CisKKyAgICBwcm9iZSB0aW1lci5tcygxMDAwKSB7CisgICAgICAgIHByaW50ZigiXDAzM1sySlwwMzNbMTsxSCIpIC8qIGNsZWFyIHNjcmVlbiBcKi8KKyAgICAgICAgcHJpbnRmKCIlNnMgJTgwcyAlNnMgJTMwcyAlNnNcbiIsCisgICAgICAgICAgICAgICAiUElEIiwgIkZJTEVOQU1FIiwgIkxJTkUiLCAiRlVOQ1RJT04iLCAiQ0FMTFMiKQorICAgICAgICBmb3JlYWNoIChbcGlkLCBmaWxlbmFtZSwgZnVuY25hbWUsIGxpbmVub10gaW4gZm5fY2FsbHMtIGxpbWl0IDIwKSB7CisgICAgICAgICAgICBwcmludGYoIiU2ZCAlODBzICU2ZCAlMzBzICU2ZFxuIiwKKyAgICAgICAgICAgICAgICBwaWQsIGZpbGVuYW1lLCBsaW5lbm8sIGZ1bmNuYW1lLAorICAgICAgICAgICAgICAgIGZuX2NhbGxzW3BpZCwgZmlsZW5hbWUsIGZ1bmNuYW1lLCBsaW5lbm9dKTsKKyAgICAgICAgfQorICAgICAgICBkZWxldGUgZm5fY2FsbHM7CisgICAgfQorCmRpZmYgLS1naXQgYS9Eb2MvaW5jbHVkZXMvZW1haWwtYWx0ZXJuYXRpdmUtbmV3LWFwaS5weSBiL0RvYy9pbmNsdWRlcy9lbWFpbC1hbHRlcm5hdGl2ZS1uZXctYXBpLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMjFmNzI3Li4wMDAwMDAwCi0tLSBhL0RvYy9pbmNsdWRlcy9lbWFpbC1hbHRlcm5hdGl2ZS1uZXctYXBpLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwotCi1pbXBvcnQgc210cGxpYgotCi1mcm9tIGVtYWlsLm1lc3NhZ2UgaW1wb3J0IEVtYWlsTWVzc2FnZQotZnJvbSBlbWFpbC5oZWFkZXJyZWdpc3RyeSBpbXBvcnQgQWRkcmVzcwotZnJvbSBlbWFpbC51dGlscyBpbXBvcnQgbWFrZV9tc2dpZAotCi0jIENyZWF0ZSB0aGUgYmFzZSB0ZXh0IG1lc3NhZ2UuCi1tc2cgPSBFbWFpbE1lc3NhZ2UoKQotbXNnWydTdWJqZWN0J10gPSAiQXlvbnMgYXNwZXJnZXMgcG91ciBsZSBkw6lqZXVuZXIiCi1tc2dbJ0Zyb20nXSA9IEFkZHJlc3MoIlBlcMOpIExlIFBldyIsICJwZXBlIiwgImV4YW1wbGUuY29tIikKLW1zZ1snVG8nXSA9IChBZGRyZXNzKCJQZW5lbG9wZSBQdXNzeWNhdCIsICJwZW5lbG9wZSIsICJleGFtcGxlLmNvbSIpLAotICAgICAgICAgICAgIEFkZHJlc3MoIkZhYnJldHRlIFB1c3N5Y2F0IiwgImZhYnJldHRlIiwgImV4YW1wbGUuY29tIikpCi1tc2cuc2V0X2NvbnRlbnQoIiIiXAotU2FsdXQhCi0KLUNlbGEgcmVzc2VtYmxlIMOgIHVuIGV4Y2VsbGVudCByZWNpcGllWzFdIGTDqWpldW5lci4KLQotWzFdIGh0dHA6Ly93d3cueXVtbWx5LmNvbS9yZWNpcGUvUm9hc3RlZC1Bc3BhcmFndXMtRXBpY3VyaW91cy0yMDM3MTgKLQotLS1QZXDDqQotIiIiKQotCi0jIEFkZCB0aGUgaHRtbCB2ZXJzaW9uLiAgVGhpcyBjb252ZXJ0cyB0aGUgbWVzc2FnZSBpbnRvIGEgbXVsdGlwYXJ0L2FsdGVybmF0aXZlCi0jIGNvbnRhaW5lciwgd2l0aCB0aGUgb3JpZ2luYWwgdGV4dCBtZXNzYWdlIGFzIHRoZSBmaXJzdCBwYXJ0IGFuZCB0aGUgbmV3IGh0bWwKLSMgbWVzc2FnZSBhcyB0aGUgc2Vjb25kIHBhcnQuCi1hc3BhcmFndXNfY2lkID0gbWFrZV9tc2dpZCgpCi1tc2cuYWRkX2FsdGVybmF0aXZlKCIiIlwKLTxodG1sPgotICA8aGVhZD48L2hlYWQ+Ci0gIDxib2R5PgotICAgIDxwPlNhbHV0ITxccD4KLSAgICA8cD5DZWxhIHJlc3NlbWJsZSDDoCB1biBleGNlbGxlbnQKLSAgICAgICAgPGEgaHJlZj0iaHR0cDovL3d3dy55dW1tbHkuY29tL3JlY2lwZS9Sb2FzdGVkLUFzcGFyYWd1cy1FcGljdXJpb3VzLTIwMzcxOD4KLSAgICAgICAgICAgIHJlY2lwaWUKLSAgICAgICAgPC9hPiBkw6lqZXVuZXIuCi0gICAgPC9wPgotICAgIDxpbWcgc3JjPSJjaWQ6e2FzcGFyYWd1c19jaWR9IiBcPgotICA8L2JvZHk+Ci08L2h0bWw+Ci0iIiIuZm9ybWF0KGFzcGFyYWd1c19jaWQ9YXNwYXJhZ3VzX2NpZFsxOi0xXSksIHN1YnR5cGU9J2h0bWwnKQotIyBub3RlIHRoYXQgd2UgbmVlZGVkIHRvIHBlZWwgdGhlIDw+IG9mZiB0aGUgbXNnaWQgZm9yIHVzZSBpbiB0aGUgaHRtbC4KLQotIyBOb3cgYWRkIHRoZSByZWxhdGVkIGltYWdlIHRvIHRoZSBodG1sIHBhcnQuCi13aXRoIG9wZW4oInJvYXN0ZWQtYXNwYXJhZ3VzLmpwZyIsICdyYicpIGFzIGltZzoKLSAgICBtc2cuZ2V0X3BheWxvYWQoKVsxXS5hZGRfcmVsYXRlZChpbWcucmVhZCgpLCAnaW1hZ2UnLCAnanBlZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2lkPWFzcGFyYWd1c19jaWQpCi0KLSMgTWFrZSBhIGxvY2FsIGNvcHkgb2Ygd2hhdCB3ZSBhcmUgZ29pbmcgdG8gc2VuZC4KLXdpdGggb3Blbignb3V0Z29pbmcubXNnJywgJ3diJykgYXMgZjoKLSAgICBmLndyaXRlKGJ5dGVzKG1zZykpCi0KLSMgU2VuZCB0aGUgbWVzc2FnZSB2aWEgbG9jYWwgU01UUCBzZXJ2ZXIuCi13aXRoIHNtdHBsaWIuU01UUCgnbG9jYWxob3N0JykgYXMgczoKLSAgICBzLnNlbmRfbWVzc2FnZShtc2cpCmRpZmYgLS1naXQgYS9Eb2MvaW5jbHVkZXMvZW1haWwtYWx0ZXJuYXRpdmUucHkgYi9Eb2MvaW5jbHVkZXMvZW1haWwtYWx0ZXJuYXRpdmUucHkKb2xkIG1vZGUgMTAwNzU1Cm5ldyBtb2RlIDEwMDY0NAppbmRleCA4NTA3MGYzLi4yZTE0MmIxCi0tLSBhL0RvYy9pbmNsdWRlcy9lbWFpbC1hbHRlcm5hdGl2ZS5weQorKysgYi9Eb2MvaW5jbHVkZXMvZW1haWwtYWx0ZXJuYXRpdmUucHkKQEAgLTIsNDcgKzIsNTUgQEAKIAogaW1wb3J0IHNtdHBsaWIKIAotZnJvbSBlbWFpbC5taW1lLm11bHRpcGFydCBpbXBvcnQgTUlNRU11bHRpcGFydAotZnJvbSBlbWFpbC5taW1lLnRleHQgaW1wb3J0IE1JTUVUZXh0Citmcm9tIGVtYWlsLm1lc3NhZ2UgaW1wb3J0IEVtYWlsTWVzc2FnZQorZnJvbSBlbWFpbC5oZWFkZXJyZWdpc3RyeSBpbXBvcnQgQWRkcmVzcworZnJvbSBlbWFpbC51dGlscyBpbXBvcnQgbWFrZV9tc2dpZAogCi0jIG1lID09IG15IGVtYWlsIGFkZHJlc3MKLSMgeW91ID09IHJlY2lwaWVudCdzIGVtYWlsIGFkZHJlc3MKLW1lID0gIm15QGVtYWlsLmNvbSIKLXlvdSA9ICJ5b3VyQGVtYWlsLmNvbSIKKyMgQ3JlYXRlIHRoZSBiYXNlIHRleHQgbWVzc2FnZS4KK21zZyA9IEVtYWlsTWVzc2FnZSgpCittc2dbJ1N1YmplY3QnXSA9ICJBeW9ucyBhc3BlcmdlcyBwb3VyIGxlIGTDqWpldW5lciIKK21zZ1snRnJvbSddID0gQWRkcmVzcygiUGVww6kgTGUgUGV3IiwgInBlcGUiLCAiZXhhbXBsZS5jb20iKQorbXNnWydUbyddID0gKEFkZHJlc3MoIlBlbmVsb3BlIFB1c3N5Y2F0IiwgInBlbmVsb3BlIiwgImV4YW1wbGUuY29tIiksCisgICAgICAgICAgICAgQWRkcmVzcygiRmFicmV0dGUgUHVzc3ljYXQiLCAiZmFicmV0dGUiLCAiZXhhbXBsZS5jb20iKSkKK21zZy5zZXRfY29udGVudCgiIiJcCitTYWx1dCEKIAotIyBDcmVhdGUgbWVzc2FnZSBjb250YWluZXIgLSB0aGUgY29ycmVjdCBNSU1FIHR5cGUgaXMgbXVsdGlwYXJ0L2FsdGVybmF0aXZlLgotbXNnID0gTUlNRU11bHRpcGFydCgnYWx0ZXJuYXRpdmUnKQotbXNnWydTdWJqZWN0J10gPSAiTGluayIKLW1zZ1snRnJvbSddID0gbWUKLW1zZ1snVG8nXSA9IHlvdQorQ2VsYSByZXNzZW1ibGUgw6AgdW4gZXhjZWxsZW50IHJlY2lwaWVbMV0gZMOpamV1bmVyLgogCi0jIENyZWF0ZSB0aGUgYm9keSBvZiB0aGUgbWVzc2FnZSAoYSBwbGFpbi10ZXh0IGFuZCBhbiBIVE1MIHZlcnNpb24pLgotdGV4dCA9ICJIaSFcbkhvdyBhcmUgeW91P1xuSGVyZSBpcyB0aGUgbGluayB5b3Ugd2FudGVkOlxuaHR0cHM6Ly93d3cucHl0aG9uLm9yZyIKLWh0bWwgPSAiIiJcCitbMV0gaHR0cDovL3d3dy55dW1tbHkuY29tL3JlY2lwZS9Sb2FzdGVkLUFzcGFyYWd1cy1FcGljdXJpb3VzLTIwMzcxOAorCistLVBlcMOpCisiIiIpCisKKyMgQWRkIHRoZSBodG1sIHZlcnNpb24uICBUaGlzIGNvbnZlcnRzIHRoZSBtZXNzYWdlIGludG8gYSBtdWx0aXBhcnQvYWx0ZXJuYXRpdmUKKyMgY29udGFpbmVyLCB3aXRoIHRoZSBvcmlnaW5hbCB0ZXh0IG1lc3NhZ2UgYXMgdGhlIGZpcnN0IHBhcnQgYW5kIHRoZSBuZXcgaHRtbAorIyBtZXNzYWdlIGFzIHRoZSBzZWNvbmQgcGFydC4KK2FzcGFyYWd1c19jaWQgPSBtYWtlX21zZ2lkKCkKK21zZy5hZGRfYWx0ZXJuYXRpdmUoIiIiXAogPGh0bWw+CiAgIDxoZWFkPjwvaGVhZD4KICAgPGJvZHk+Ci0gICAgPHA+SGkhPGJyPgotICAgICAgIEhvdyBhcmUgeW91Pzxicj4KLSAgICAgICBIZXJlIGlzIHRoZSA8YSBocmVmPSJodHRwczovL3d3dy5weXRob24ub3JnIj5saW5rPC9hPiB5b3Ugd2FudGVkLgorICAgIDxwPlNhbHV0ITwvcD4KKyAgICA8cD5DZWxhIHJlc3NlbWJsZSDDoCB1biBleGNlbGxlbnQKKyAgICAgICAgPGEgaHJlZj0iaHR0cDovL3d3dy55dW1tbHkuY29tL3JlY2lwZS9Sb2FzdGVkLUFzcGFyYWd1cy1FcGljdXJpb3VzLTIwMzcxOD4KKyAgICAgICAgICAgIHJlY2lwaWUKKyAgICAgICAgPC9hPiBkw6lqZXVuZXIuCiAgICAgPC9wPgorICAgIDxpbWcgc3JjPSJjaWQ6e2FzcGFyYWd1c19jaWR9IiAvPgogICA8L2JvZHk+CiA8L2h0bWw+Ci0iIiIKKyIiIi5mb3JtYXQoYXNwYXJhZ3VzX2NpZD1hc3BhcmFndXNfY2lkWzE6LTFdKSwgc3VidHlwZT0naHRtbCcpCisjIG5vdGUgdGhhdCB3ZSBuZWVkZWQgdG8gcGVlbCB0aGUgPD4gb2ZmIHRoZSBtc2dpZCBmb3IgdXNlIGluIHRoZSBodG1sLgogCi0jIFJlY29yZCB0aGUgTUlNRSB0eXBlcyBvZiBib3RoIHBhcnRzIC0gdGV4dC9wbGFpbiBhbmQgdGV4dC9odG1sLgotcGFydDEgPSBNSU1FVGV4dCh0ZXh0LCAncGxhaW4nKQotcGFydDIgPSBNSU1FVGV4dChodG1sLCAnaHRtbCcpCisjIE5vdyBhZGQgdGhlIHJlbGF0ZWQgaW1hZ2UgdG8gdGhlIGh0bWwgcGFydC4KK3dpdGggb3Blbigicm9hc3RlZC1hc3BhcmFndXMuanBnIiwgJ3JiJykgYXMgaW1nOgorICAgIG1zZy5nZXRfcGF5bG9hZCgpWzFdLmFkZF9yZWxhdGVkKGltZy5yZWFkKCksICdpbWFnZScsICdqcGVnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaWQ9YXNwYXJhZ3VzX2NpZCkKIAotIyBBdHRhY2ggcGFydHMgaW50byBtZXNzYWdlIGNvbnRhaW5lci4KLSMgQWNjb3JkaW5nIHRvIFJGQyAyMDQ2LCB0aGUgbGFzdCBwYXJ0IG9mIGEgbXVsdGlwYXJ0IG1lc3NhZ2UsIGluIHRoaXMgY2FzZQotIyB0aGUgSFRNTCBtZXNzYWdlLCBpcyBiZXN0IGFuZCBwcmVmZXJyZWQuCi1tc2cuYXR0YWNoKHBhcnQxKQotbXNnLmF0dGFjaChwYXJ0MikKKyMgTWFrZSBhIGxvY2FsIGNvcHkgb2Ygd2hhdCB3ZSBhcmUgZ29pbmcgdG8gc2VuZC4KK3dpdGggb3Blbignb3V0Z29pbmcubXNnJywgJ3diJykgYXMgZjoKKyAgICBmLndyaXRlKGJ5dGVzKG1zZykpCiAKICMgU2VuZCB0aGUgbWVzc2FnZSB2aWEgbG9jYWwgU01UUCBzZXJ2ZXIuCi1zID0gc210cGxpYi5TTVRQKCdsb2NhbGhvc3QnKQotIyBzZW5kbWFpbCBmdW5jdGlvbiB0YWtlcyAzIGFyZ3VtZW50czogc2VuZGVyJ3MgYWRkcmVzcywgcmVjaXBpZW50J3MgYWRkcmVzcwotIyBhbmQgbWVzc2FnZSB0byBzZW5kIC0gaGVyZSBpdCBpcyBzZW50IGFzIG9uZSBzdHJpbmcuCi1zLnNlbmRtYWlsKG1lLCB5b3UsIG1zZy5hc19zdHJpbmcoKSkKLXMucXVpdCgpCit3aXRoIHNtdHBsaWIuU01UUCgnbG9jYWxob3N0JykgYXMgczoKKyAgICBzLnNlbmRfbWVzc2FnZShtc2cpCmRpZmYgLS1naXQgYS9Eb2MvaW5jbHVkZXMvZW1haWwtZGlyLnB5IGIvRG9jL2luY2x1ZGVzL2VtYWlsLWRpci5weQppbmRleCAzYzdjNzcwLi4wZGNmYmZiIDEwMDY0NAotLS0gYS9Eb2MvaW5jbHVkZXMvZW1haWwtZGlyLnB5CisrKyBiL0RvYy9pbmNsdWRlcy9lbWFpbC1kaXIucHkKQEAgLTMsMjIgKzMsMTQgQEAKICIiIlNlbmQgdGhlIGNvbnRlbnRzIG9mIGEgZGlyZWN0b3J5IGFzIGEgTUlNRSBtZXNzYWdlLiIiIgogCiBpbXBvcnQgb3MKLWltcG9ydCBzeXMKIGltcG9ydCBzbXRwbGliCiAjIEZvciBndWVzc2luZyBNSU1FIHR5cGUgYmFzZWQgb24gZmlsZSBuYW1lIGV4dGVuc2lvbgogaW1wb3J0IG1pbWV0eXBlcwogCiBmcm9tIGFyZ3BhcnNlIGltcG9ydCBBcmd1bWVudFBhcnNlcgogCi1mcm9tIGVtYWlsIGltcG9ydCBlbmNvZGVycwotZnJvbSBlbWFpbC5tZXNzYWdlIGltcG9ydCBNZXNzYWdlCi1mcm9tIGVtYWlsLm1pbWUuYXVkaW8gaW1wb3J0IE1JTUVBdWRpbwotZnJvbSBlbWFpbC5taW1lLmJhc2UgaW1wb3J0IE1JTUVCYXNlCi1mcm9tIGVtYWlsLm1pbWUuaW1hZ2UgaW1wb3J0IE1JTUVJbWFnZQotZnJvbSBlbWFpbC5taW1lLm11bHRpcGFydCBpbXBvcnQgTUlNRU11bHRpcGFydAotZnJvbSBlbWFpbC5taW1lLnRleHQgaW1wb3J0IE1JTUVUZXh0Ci0KLUNPTU1BU1BBQ0UgPSAnLCAnCitmcm9tIGVtYWlsLm1lc3NhZ2UgaW1wb3J0IEVtYWlsTWVzc2FnZQorZnJvbSBlbWFpbC5wb2xpY3kgaW1wb3J0IFNNVFAKIAogCiBkZWYgbWFpbigpOgpAQCAtNDcsMTIgKzM5LDEyIEBACiAgICAgZGlyZWN0b3J5ID0gYXJncy5kaXJlY3RvcnkKICAgICBpZiBub3QgZGlyZWN0b3J5OgogICAgICAgICBkaXJlY3RvcnkgPSAnLicKLSAgICAjIENyZWF0ZSB0aGUgZW5jbG9zaW5nIChvdXRlcikgbWVzc2FnZQotICAgIG91dGVyID0gTUlNRU11bHRpcGFydCgpCi0gICAgb3V0ZXJbJ1N1YmplY3QnXSA9ICdDb250ZW50cyBvZiBkaXJlY3RvcnkgJXMnICUgb3MucGF0aC5hYnNwYXRoKGRpcmVjdG9yeSkKLSAgICBvdXRlclsnVG8nXSA9IENPTU1BU1BBQ0Uuam9pbihhcmdzLnJlY2lwaWVudHMpCi0gICAgb3V0ZXJbJ0Zyb20nXSA9IGFyZ3Muc2VuZGVyCi0gICAgb3V0ZXIucHJlYW1ibGUgPSAnWW91IHdpbGwgbm90IHNlZSB0aGlzIGluIGEgTUlNRS1hd2FyZSBtYWlsIHJlYWRlci5cbicKKyAgICAjIENyZWF0ZSB0aGUgbWVzc2FnZQorICAgIG1zZyA9IEVtYWlsTWVzc2FnZSgpCisgICAgbXNnWydTdWJqZWN0J10gPSAnQ29udGVudHMgb2YgZGlyZWN0b3J5ICVzJyAlIG9zLnBhdGguYWJzcGF0aChkaXJlY3RvcnkpCisgICAgbXNnWydUbyddID0gJywgJy5qb2luKGFyZ3MucmVjaXBpZW50cykKKyAgICBtc2dbJ0Zyb20nXSA9IGFyZ3Muc2VuZGVyCisgICAgbXNnLnByZWFtYmxlID0gJ1lvdSB3aWxsIG5vdCBzZWUgdGhpcyBpbiBhIE1JTUUtYXdhcmUgbWFpbCByZWFkZXIuXG4nCiAKICAgICBmb3IgZmlsZW5hbWUgaW4gb3MubGlzdGRpcihkaXJlY3RvcnkpOgogICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKGRpcmVjdG9yeSwgZmlsZW5hbWUpCkBAIC02NywzMyArNTksMTggQEAKICAgICAgICAgICAgICMgdXNlIGEgZ2VuZXJpYyBiYWctb2YtYml0cyB0eXBlLgogICAgICAgICAgICAgY3R5cGUgPSAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJwogICAgICAgICBtYWludHlwZSwgc3VidHlwZSA9IGN0eXBlLnNwbGl0KCcvJywgMSkKLSAgICAgICAgaWYgbWFpbnR5cGUgPT0gJ3RleHQnOgotICAgICAgICAgICAgd2l0aCBvcGVuKHBhdGgpIGFzIGZwOgotICAgICAgICAgICAgICAgICMgTm90ZTogd2Ugc2hvdWxkIGhhbmRsZSBjYWxjdWxhdGluZyB0aGUgY2hhcnNldAotICAgICAgICAgICAgICAgIG1zZyA9IE1JTUVUZXh0KGZwLnJlYWQoKSwgX3N1YnR5cGU9c3VidHlwZSkKLSAgICAgICAgZWxpZiBtYWludHlwZSA9PSAnaW1hZ2UnOgotICAgICAgICAgICAgd2l0aCBvcGVuKHBhdGgsICdyYicpIGFzIGZwOgotICAgICAgICAgICAgICAgIG1zZyA9IE1JTUVJbWFnZShmcC5yZWFkKCksIF9zdWJ0eXBlPXN1YnR5cGUpCi0gICAgICAgIGVsaWYgbWFpbnR5cGUgPT0gJ2F1ZGlvJzoKLSAgICAgICAgICAgIHdpdGggb3BlbihwYXRoLCAncmInKSBhcyBmcDoKLSAgICAgICAgICAgICAgICBtc2cgPSBNSU1FQXVkaW8oZnAucmVhZCgpLCBfc3VidHlwZT1zdWJ0eXBlKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgd2l0aCBvcGVuKHBhdGgsICdyYicpIGFzIGZwOgotICAgICAgICAgICAgICAgIG1zZyA9IE1JTUVCYXNlKG1haW50eXBlLCBzdWJ0eXBlKQotICAgICAgICAgICAgICAgIG1zZy5zZXRfcGF5bG9hZChmcC5yZWFkKCkpCi0gICAgICAgICAgICAjIEVuY29kZSB0aGUgcGF5bG9hZCB1c2luZyBCYXNlNjQKLSAgICAgICAgICAgIGVuY29kZXJzLmVuY29kZV9iYXNlNjQobXNnKQotICAgICAgICAjIFNldCB0aGUgZmlsZW5hbWUgcGFyYW1ldGVyCi0gICAgICAgIG1zZy5hZGRfaGVhZGVyKCdDb250ZW50LURpc3Bvc2l0aW9uJywgJ2F0dGFjaG1lbnQnLCBmaWxlbmFtZT1maWxlbmFtZSkKLSAgICAgICAgb3V0ZXIuYXR0YWNoKG1zZykKKyAgICAgICAgd2l0aCBvcGVuKHBhdGgsICdyYicpIGFzIGZwOgorICAgICAgICAgICAgbXNnLmFkZF9hdHRhY2htZW50KGZwLnJlYWQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWludHlwZT1tYWludHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0eXBlPXN1YnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWU9ZmlsZW5hbWUpCiAgICAgIyBOb3cgc2VuZCBvciBzdG9yZSB0aGUgbWVzc2FnZQotICAgIGNvbXBvc2VkID0gb3V0ZXIuYXNfc3RyaW5nKCkKICAgICBpZiBhcmdzLm91dHB1dDoKLSAgICAgICAgd2l0aCBvcGVuKGFyZ3Mub3V0cHV0LCAndycpIGFzIGZwOgotICAgICAgICAgICAgZnAud3JpdGUoY29tcG9zZWQpCisgICAgICAgIHdpdGggb3BlbihhcmdzLm91dHB1dCwgJ3diJykgYXMgZnA6CisgICAgICAgICAgICBmcC53cml0ZShtc2cuYXNfYnl0ZXMocG9saWN5PVNNVFApKQogICAgIGVsc2U6CiAgICAgICAgIHdpdGggc210cGxpYi5TTVRQKCdsb2NhbGhvc3QnKSBhcyBzOgotICAgICAgICAgICAgcy5zZW5kbWFpbChhcmdzLnNlbmRlciwgYXJncy5yZWNpcGllbnRzLCBjb21wb3NlZCkKKyAgICAgICAgICAgIHMuc2VuZF9tZXNzYWdlKG1zZykKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvRG9jL2luY2x1ZGVzL2VtYWlsLWhlYWRlcnMucHkgYi9Eb2MvaW5jbHVkZXMvZW1haWwtaGVhZGVycy5weQppbmRleCA4OWM4ZjNhLi4yYzQyMTQ1IDEwMDY0NAotLS0gYS9Eb2MvaW5jbHVkZXMvZW1haWwtaGVhZGVycy5weQorKysgYi9Eb2MvaW5jbHVkZXMvZW1haWwtaGVhZGVycy5weQpAQCAtMSwxOCArMSwyNCBAQAogIyBJbXBvcnQgdGhlIGVtYWlsIG1vZHVsZXMgd2UnbGwgbmVlZAotZnJvbSBlbWFpbC5wYXJzZXIgaW1wb3J0IFBhcnNlcgorZnJvbSBlbWFpbC5wYXJzZXIgaW1wb3J0IEJ5dGVzUGFyc2VyLCBQYXJzZXIKK2Zyb20gZW1haWwucG9saWN5IGltcG9ydCBkZWZhdWx0CiAKICMgSWYgdGhlIGUtbWFpbCBoZWFkZXJzIGFyZSBpbiBhIGZpbGUsIHVuY29tbWVudCB0aGVzZSB0d28gbGluZXM6Ci0jIHdpdGggb3BlbihtZXNzYWdlZmlsZSkgYXMgZnA6Ci0jICAgICBoZWFkZXJzID0gUGFyc2VyKCkucGFyc2UoZnApCisjIHdpdGggb3BlbihtZXNzYWdlZmlsZSwgJ3JiJykgYXMgZnA6CisjICAgICBoZWFkZXJzID0gQnl0ZXNQYXJzZXIocG9saWN5PWRlZmF1bHQpLnBhcnNlKGZwKQogCi0jICBPciBmb3IgcGFyc2luZyBoZWFkZXJzIGluIGEgc3RyaW5nLCB1c2U6Ci1oZWFkZXJzID0gUGFyc2VyKCkucGFyc2VzdHIoJ0Zyb206IDx1c2VyQGV4YW1wbGUuY29tPlxuJworIyAgT3IgZm9yIHBhcnNpbmcgaGVhZGVycyBpbiBhIHN0cmluZyAodGhpcyBpcyBhbiB1bmNvbW1vbiBvcGVyYXRpb24pLCB1c2U6CitoZWFkZXJzID0gUGFyc2VyKHBvbGljeT1kZWZhdWx0KS5wYXJzZXN0cigKKyAgICAgICAgJ0Zyb206IEZvbyBCYXIgPHVzZXJAZXhhbXBsZS5jb20+XG4nCiAgICAgICAgICdUbzogPHNvbWVvbmVfZWxzZUBleGFtcGxlLmNvbT5cbicKICAgICAgICAgJ1N1YmplY3Q6IFRlc3QgbWVzc2FnZVxuJwogICAgICAgICAnXG4nCiAgICAgICAgICdCb2R5IHdvdWxkIGdvIGhlcmVcbicpCiAKICMgIE5vdyB0aGUgaGVhZGVyIGl0ZW1zIGNhbiBiZSBhY2Nlc3NlZCBhcyBhIGRpY3Rpb25hcnk6Ci1wcmludCgnVG86ICVzJyAlIGhlYWRlcnNbJ3RvJ10pCi1wcmludCgnRnJvbTogJXMnICUgaGVhZGVyc1snZnJvbSddKQotcHJpbnQoJ1N1YmplY3Q6ICVzJyAlIGhlYWRlcnNbJ3N1YmplY3QnXSkKK3ByaW50KCdUbzoge30nLmZvcm1hdChoZWFkZXJzWyd0byddKSkKK3ByaW50KCdGcm9tOiB7fScuZm9ybWF0KGhlYWRlcnNbJ2Zyb20nXSkpCitwcmludCgnU3ViamVjdDoge30nLmZvcm1hdChoZWFkZXJzWydzdWJqZWN0J10pKQorCisjIFlvdSBjYW4gYWxzbyBhY2Nlc3MgdGhlIHBhcnRzIG9mIHRoZSBhZGRyZXNzZXM6CitwcmludCgnUmVjaXBpZW50IHVzZXJuYW1lOiB7fScuZm9ybWF0KGhlYWRlcnNbJ3RvJ10uYWRkcmVzc2VzWzBdLnVzZXJuYW1lKSkKK3ByaW50KCdTZW5kZXIgbmFtZToge30nLmZvcm1hdChoZWFkZXJzWydmcm9tJ10uYWRkcmVzc2VzWzBdLmRpc3BsYXlfbmFtZSkpCmRpZmYgLS1naXQgYS9Eb2MvaW5jbHVkZXMvZW1haWwtbWltZS5weSBiL0RvYy9pbmNsdWRlcy9lbWFpbC1taW1lLnB5CmluZGV4IDYxZDA4MzAuLmM2MTAyNDIgMTAwNjQ0Ci0tLSBhL0RvYy9pbmNsdWRlcy9lbWFpbC1taW1lLnB5CisrKyBiL0RvYy9pbmNsdWRlcy9lbWFpbC1taW1lLnB5CkBAIC0xLDMwICsxLDI5IEBACiAjIEltcG9ydCBzbXRwbGliIGZvciB0aGUgYWN0dWFsIHNlbmRpbmcgZnVuY3Rpb24KIGltcG9ydCBzbXRwbGliCiAKKyMgQW5kIGltZ2hkciB0byBmaW5kIHRoZSB0eXBlcyBvZiBvdXIgaW1hZ2VzCitpbXBvcnQgaW1naGRyCisKICMgSGVyZSBhcmUgdGhlIGVtYWlsIHBhY2thZ2UgbW9kdWxlcyB3ZSdsbCBuZWVkCi1mcm9tIGVtYWlsLm1pbWUuaW1hZ2UgaW1wb3J0IE1JTUVJbWFnZQotZnJvbSBlbWFpbC5taW1lLm11bHRpcGFydCBpbXBvcnQgTUlNRU11bHRpcGFydAorZnJvbSBlbWFpbC5tZXNzYWdlIGltcG9ydCBFbWFpbE1lc3NhZ2UKIAotQ09NTUFTUEFDRSA9ICcsICcKLQotIyBDcmVhdGUgdGhlIGNvbnRhaW5lciAob3V0ZXIpIGVtYWlsIG1lc3NhZ2UuCi1tc2cgPSBNSU1FTXVsdGlwYXJ0KCkKKyMgQ3JlYXRlIHRoZSBjb250YWluZXIgZW1haWwgbWVzc2FnZS4KK21zZyA9IEVtYWlsTWVzc2FnZSgpCiBtc2dbJ1N1YmplY3QnXSA9ICdPdXIgZmFtaWx5IHJldW5pb24nCiAjIG1lID09IHRoZSBzZW5kZXIncyBlbWFpbCBhZGRyZXNzCiAjIGZhbWlseSA9IHRoZSBsaXN0IG9mIGFsbCByZWNpcGllbnRzJyBlbWFpbCBhZGRyZXNzZXMKIG1zZ1snRnJvbSddID0gbWUKLW1zZ1snVG8nXSA9IENPTU1BU1BBQ0Uuam9pbihmYW1pbHkpCittc2dbJ1RvJ10gPSAnLCAnLmpvaW4oZmFtaWx5KQogbXNnLnByZWFtYmxlID0gJ091ciBmYW1pbHkgcmV1bmlvbicKIAotIyBBc3N1bWUgd2Uga25vdyB0aGF0IHRoZSBpbWFnZSBmaWxlcyBhcmUgYWxsIGluIFBORyBmb3JtYXQKKyMgT3BlbiB0aGUgZmlsZXMgaW4gYmluYXJ5IG1vZGUuICBVc2UgaW1naGRyIHRvIGZpZ3VyZSBvdXQgdGhlCisjIE1JTUUgc3VidHlwZSBmb3IgZWFjaCBzcGVjaWZpYyBpbWFnZS4KIGZvciBmaWxlIGluIHBuZ2ZpbGVzOgotICAgICMgT3BlbiB0aGUgZmlsZXMgaW4gYmluYXJ5IG1vZGUuICBMZXQgdGhlIE1JTUVJbWFnZSBjbGFzcyBhdXRvbWF0aWNhbGx5Ci0gICAgIyBndWVzcyB0aGUgc3BlY2lmaWMgaW1hZ2UgdHlwZS4KICAgICB3aXRoIG9wZW4oZmlsZSwgJ3JiJykgYXMgZnA6Ci0gICAgICAgIGltZyA9IE1JTUVJbWFnZShmcC5yZWFkKCkpCi0gICAgbXNnLmF0dGFjaChpbWcpCisgICAgICAgIGltZ19kYXRhID0gZnAucmVhZCgpCisgICAgbXNnLmFkZF9hdHRhY2htZW50KGltZ19kYXRhLCBtYWludHlwZT0naW1hZ2UnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VidHlwZT1pbWdoZHIud2hhdChOb25lLCBpbWdfZGF0YSkpCiAKICMgU2VuZCB0aGUgZW1haWwgdmlhIG91ciBvd24gU01UUCBzZXJ2ZXIuCi1zID0gc210cGxpYi5TTVRQKCdsb2NhbGhvc3QnKQotcy5zZW5kX21lc3NhZ2UobXNnKQotcy5xdWl0KCkKK3dpdGggc210cGxpYi5TTVRQKCdsb2NhbGhvc3QnKSBhcyBzOgorICAgIHMuc2VuZF9tZXNzYWdlKG1zZykKZGlmZiAtLWdpdCBhL0RvYy9pbmNsdWRlcy9lbWFpbC1yZWFkLWFsdGVybmF0aXZlLW5ldy1hcGkucHkgYi9Eb2MvaW5jbHVkZXMvZW1haWwtcmVhZC1hbHRlcm5hdGl2ZS5weQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gRG9jL2luY2x1ZGVzL2VtYWlsLXJlYWQtYWx0ZXJuYXRpdmUtbmV3LWFwaS5weQpyZW5hbWUgdG8gRG9jL2luY2x1ZGVzL2VtYWlsLXJlYWQtYWx0ZXJuYXRpdmUucHkKZGlmZiAtLWdpdCBhL0RvYy9pbmNsdWRlcy9lbWFpbC1zaW1wbGUucHkgYi9Eb2MvaW5jbHVkZXMvZW1haWwtc2ltcGxlLnB5CmluZGV4IGI5YjhiNDEuLmY2OWVmNDAgMTAwNjQ0Ci0tLSBhL0RvYy9pbmNsdWRlcy9lbWFpbC1zaW1wbGUucHkKKysrIGIvRG9jL2luY2x1ZGVzL2VtYWlsLXNpbXBsZS5weQpAQCAtMiwxMyArMiwxMyBAQAogaW1wb3J0IHNtdHBsaWIKIAogIyBJbXBvcnQgdGhlIGVtYWlsIG1vZHVsZXMgd2UnbGwgbmVlZAotZnJvbSBlbWFpbC5taW1lLnRleHQgaW1wb3J0IE1JTUVUZXh0Citmcm9tIGVtYWlsLm1lc3NhZ2UgaW1wb3J0IEVtYWlsTWVzc2FnZQogCi0jIE9wZW4gYSBwbGFpbiB0ZXh0IGZpbGUgZm9yIHJlYWRpbmcuICBGb3IgdGhpcyBleGFtcGxlLCBhc3N1bWUgdGhhdAotIyB0aGUgdGV4dCBmaWxlIGNvbnRhaW5zIG9ubHkgQVNDSUkgY2hhcmFjdGVycy4KKyMgT3BlbiB0aGUgcGxhaW4gdGV4dCBmaWxlIHdob3NlIG5hbWUgaXMgaW4gdGV4dGZpbGUgZm9yIHJlYWRpbmcuCiB3aXRoIG9wZW4odGV4dGZpbGUpIGFzIGZwOgogICAgICMgQ3JlYXRlIGEgdGV4dC9wbGFpbiBtZXNzYWdlCi0gICAgbXNnID0gTUlNRVRleHQoZnAucmVhZCgpKQorICAgIG1zZyA9IEVtYWlsTWVzc2FnZSgpCisgICAgbXNnLnNldF9jb250ZW50KGZwLnJlYWQoKSkKIAogIyBtZSA9PSB0aGUgc2VuZGVyJ3MgZW1haWwgYWRkcmVzcwogIyB5b3UgPT0gdGhlIHJlY2lwaWVudCdzIGVtYWlsIGFkZHJlc3MKZGlmZiAtLWdpdCBhL0RvYy9pbmNsdWRlcy9lbWFpbC11bnBhY2sucHkgYi9Eb2MvaW5jbHVkZXMvZW1haWwtdW5wYWNrLnB5CmluZGV4IDU3NGEwYjYuLmUwYTdmMDEgMTAwNjQ0Ci0tLSBhL0RvYy9pbmNsdWRlcy9lbWFpbC11bnBhY2sucHkKKysrIGIvRG9jL2luY2x1ZGVzL2VtYWlsLXVucGFjay5weQpAQCAtMywxMSArMywxMSBAQAogIiIiVW5wYWNrIGEgTUlNRSBtZXNzYWdlIGludG8gYSBkaXJlY3Rvcnkgb2YgZmlsZXMuIiIiCiAKIGltcG9ydCBvcwotaW1wb3J0IHN5cwogaW1wb3J0IGVtYWlsCi1pbXBvcnQgZXJybm8KIGltcG9ydCBtaW1ldHlwZXMKIAorZnJvbSBlbWFpbC5wb2xpY3kgaW1wb3J0IGRlZmF1bHQKKwogZnJvbSBhcmdwYXJzZSBpbXBvcnQgQXJndW1lbnRQYXJzZXIKIAogCkBAIC0yMiw4ICsyMiw4IEBACiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnbXNnZmlsZScpCiAgICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKIAotICAgIHdpdGggb3BlbihhcmdzLm1zZ2ZpbGUpIGFzIGZwOgotICAgICAgICBtc2cgPSBlbWFpbC5tZXNzYWdlX2Zyb21fZmlsZShmcCkKKyAgICB3aXRoIG9wZW4oYXJncy5tc2dmaWxlLCAncmInKSBhcyBmcDoKKyAgICAgICAgbXNnID0gZW1haWwubWVzc2FnZV9mcm9tX2JpbmFyeV9maWxlKGZwLCBwb2xpY3k9ZGVmYXVsdCkKIAogICAgIHRyeToKICAgICAgICAgb3MubWtkaXIoYXJncy5kaXJlY3RvcnkpCmRpZmYgLS1naXQgYS9Eb2MvaW5jbHVkZXMvcnVuLWZ1bmMuYyBiL0RvYy9pbmNsdWRlcy9ydW4tZnVuYy5jCmluZGV4IDk4NmQ2NzAuLmVhZDdiZGQgMTAwNjQ0Ci0tLSBhL0RvYy9pbmNsdWRlcy9ydW4tZnVuYy5jCisrKyBiL0RvYy9pbmNsdWRlcy9ydW4tZnVuYy5jCkBAIC02Myw2ICs2Myw4IEBACiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGxvYWQgXCIlc1wiXG4iLCBhcmd2WzFdKTsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQotICAgIFB5X0ZpbmFsaXplKCk7CisgICAgaWYgKFB5X0ZpbmFsaXplRXgoKSA8IDApIHsKKyAgICAgICAgcmV0dXJuIDEyMDsKKyAgICB9CiAgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9Eb2MvaW5jbHVkZXMvdGVzdC5weSBiL0RvYy9pbmNsdWRlcy90ZXN0LnB5CmluZGV4IDdlYmY0NmEuLjllOWQ0YTYgMTAwNjQ0Ci0tLSBhL0RvYy9pbmNsdWRlcy90ZXN0LnB5CisrKyBiL0RvYy9pbmNsdWRlcy90ZXN0LnB5CkBAIC0yMDQsNyArMjA0LDcgQEAKIGltcG9ydCBvcwogaW1wb3J0IHN5cwogZnJvbSBkaXN0dXRpbHMudXRpbCBpbXBvcnQgZ2V0X3BsYXRmb3JtCi1QTEFUX1NQRUMgPSAiJXMtJXMiICUgKGdldF9wbGF0Zm9ybSgpLCBzeXMudmVyc2lvblswOjNdKQorUExBVF9TUEVDID0gIiVzLSVkLiVkIiAlIChnZXRfcGxhdGZvcm0oKSwgKnN5cy52ZXJzaW9uX2luZm9bOjJdKQogc3JjID0gb3MucGF0aC5qb2luKCJidWlsZCIsICJsaWIuJXMiICUgUExBVF9TUEVDKQogc3lzLnBhdGguYXBwZW5kKHNyYykKIApkaWZmIC0tZ2l0IGEvRG9jL2luY2x1ZGVzL3R6aW5mby1leGFtcGxlcy5weSBiL0RvYy9pbmNsdWRlcy90emluZm8tZXhhbXBsZXMucHkKaW5kZXggM2E4Y2Y0Ny4uYWU1YTUwOSAxMDA2NDQKLS0tIGEvRG9jL2luY2x1ZGVzL3R6aW5mby1leGFtcGxlcy5weQorKysgYi9Eb2MvaW5jbHVkZXMvdHppbmZvLWV4YW1wbGVzLnB5CkBAIC0xLDQ2ICsxLDEzIEBACi1mcm9tIGRhdGV0aW1lIGltcG9ydCB0emluZm8sIHRpbWVkZWx0YSwgZGF0ZXRpbWUKK2Zyb20gZGF0ZXRpbWUgaW1wb3J0IHR6aW5mbywgdGltZWRlbHRhLCBkYXRldGltZSwgdGltZXpvbmUKIAogWkVSTyA9IHRpbWVkZWx0YSgwKQogSE9VUiA9IHRpbWVkZWx0YShob3Vycz0xKQotCi0jIEEgVVRDIGNsYXNzLgotCi1jbGFzcyBVVEModHppbmZvKToKLSAgICAiIiJVVEMiIiIKLQotICAgIGRlZiB1dGNvZmZzZXQoc2VsZiwgZHQpOgotICAgICAgICByZXR1cm4gWkVSTwotCi0gICAgZGVmIHR6bmFtZShzZWxmLCBkdCk6Ci0gICAgICAgIHJldHVybiAiVVRDIgotCi0gICAgZGVmIGRzdChzZWxmLCBkdCk6Ci0gICAgICAgIHJldHVybiBaRVJPCi0KLXV0YyA9IFVUQygpCi0KLSMgQSBjbGFzcyBidWlsZGluZyB0emluZm8gb2JqZWN0cyBmb3IgZml4ZWQtb2Zmc2V0IHRpbWUgem9uZXMuCi0jIE5vdGUgdGhhdCBGaXhlZE9mZnNldCgwLCAiVVRDIikgaXMgYSBkaWZmZXJlbnQgd2F5IHRvIGJ1aWxkIGEKLSMgVVRDIHR6aW5mbyBvYmplY3QuCi0KLWNsYXNzIEZpeGVkT2Zmc2V0KHR6aW5mbyk6Ci0gICAgIiIiRml4ZWQgb2Zmc2V0IGluIG1pbnV0ZXMgZWFzdCBmcm9tIFVUQy4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvZmZzZXQsIG5hbWUpOgotICAgICAgICBzZWxmLl9fb2Zmc2V0ID0gdGltZWRlbHRhKG1pbnV0ZXM9b2Zmc2V0KQotICAgICAgICBzZWxmLl9fbmFtZSA9IG5hbWUKLQotICAgIGRlZiB1dGNvZmZzZXQoc2VsZiwgZHQpOgotICAgICAgICByZXR1cm4gc2VsZi5fX29mZnNldAotCi0gICAgZGVmIHR6bmFtZShzZWxmLCBkdCk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9fbmFtZQotCi0gICAgZGVmIGRzdChzZWxmLCBkdCk6Ci0gICAgICAgIHJldHVybiBaRVJPCitTRUNPTkQgPSB0aW1lZGVsdGEoc2Vjb25kcz0xKQogCiAjIEEgY2xhc3MgY2FwdHVyaW5nIHRoZSBwbGF0Zm9ybSdzIGlkZWEgb2YgbG9jYWwgdGltZS4KLQorIyAoTWF5IHJlc3VsdCBpbiB3cm9uZyB2YWx1ZXMgb24gaGlzdG9yaWNhbCB0aW1lcyBpbgorIyAgdGltZXpvbmVzIHdoZXJlIFVUQyBvZmZzZXQgYW5kL29yIHRoZSBEU1QgcnVsZXMgaGFkCisjICBjaGFuZ2VkIGluIHRoZSBwYXN0LikKIGltcG9ydCB0aW1lIGFzIF90aW1lCiAKIFNURE9GRlNFVCA9IHRpbWVkZWx0YShzZWNvbmRzID0gLV90aW1lLnRpbWV6b25lKQpAQCAtNTMsNiArMjAsMTYgQEAKIAogY2xhc3MgTG9jYWxUaW1lem9uZSh0emluZm8pOgogCisgICAgZGVmIGZyb211dGMoc2VsZiwgZHQpOgorICAgICAgICBhc3NlcnQgZHQudHppbmZvIGlzIHNlbGYKKyAgICAgICAgc3RhbXAgPSAoZHQgLSBkYXRldGltZSgxOTcwLCAxLCAxLCB0emluZm89c2VsZikpIC8vIFNFQ09ORAorICAgICAgICBhcmdzID0gX3RpbWUubG9jYWx0aW1lKHN0YW1wKVs6Nl0KKyAgICAgICAgZHN0X2RpZmYgPSBEU1RESUZGIC8vIFNFQ09ORAorICAgICAgICAjIERldGVjdCBmb2xkCisgICAgICAgIGZvbGQgPSAoYXJncyA9PSBfdGltZS5sb2NhbHRpbWUoc3RhbXAgLSBkc3RfZGlmZikpCisgICAgICAgIHJldHVybiBkYXRldGltZSgqYXJncywgbWljcm9zZWNvbmQ9ZHQubWljcm9zZWNvbmQsCisgICAgICAgICAgICAgICAgICAgICAgICB0emluZm89c2VsZiwgZm9sZD1mb2xkKQorCiAgICAgZGVmIHV0Y29mZnNldChzZWxmLCBkdCk6CiAgICAgICAgIGlmIHNlbGYuX2lzZHN0KGR0KToKICAgICAgICAgICAgIHJldHVybiBEU1RPRkZTRVQKQEAgLTk5LDIwICs3NiwzNyBAQAogIyBJbiB0aGUgVVMsIHNpbmNlIDIwMDcsIERTVCBzdGFydHMgYXQgMmFtIChzdGFuZGFyZCB0aW1lKSBvbiB0aGUgc2Vjb25kCiAjIFN1bmRheSBpbiBNYXJjaCwgd2hpY2ggaXMgdGhlIGZpcnN0IFN1bmRheSBvbiBvciBhZnRlciBNYXIgOC4KIERTVFNUQVJUXzIwMDcgPSBkYXRldGltZSgxLCAzLCA4LCAyKQotIyBhbmQgZW5kcyBhdCAyYW0gKERTVCB0aW1lOyAxYW0gc3RhbmRhcmQgdGltZSkgb24gdGhlIGZpcnN0IFN1bmRheSBvZiBOb3YuCi1EU1RFTkRfMjAwNyA9IGRhdGV0aW1lKDEsIDExLCAxLCAxKQorIyBhbmQgZW5kcyBhdCAyYW0gKERTVCB0aW1lKSBvbiB0aGUgZmlyc3QgU3VuZGF5IG9mIE5vdi4KK0RTVEVORF8yMDA3ID0gZGF0ZXRpbWUoMSwgMTEsIDEsIDIpCiAjIEZyb20gMTk4NyB0byAyMDA2LCBEU1QgdXNlZCB0byBzdGFydCBhdCAyYW0gKHN0YW5kYXJkIHRpbWUpIG9uIHRoZSBmaXJzdAotIyBTdW5kYXkgaW4gQXByaWwgYW5kIHRvIGVuZCBhdCAyYW0gKERTVCB0aW1lOyAxYW0gc3RhbmRhcmQgdGltZSkgb24gdGhlIGxhc3QKKyMgU3VuZGF5IGluIEFwcmlsIGFuZCB0byBlbmQgYXQgMmFtIChEU1QgdGltZSkgb24gdGhlIGxhc3QKICMgU3VuZGF5IG9mIE9jdG9iZXIsIHdoaWNoIGlzIHRoZSBmaXJzdCBTdW5kYXkgb24gb3IgYWZ0ZXIgT2N0IDI1LgogRFNUU1RBUlRfMTk4N18yMDA2ID0gZGF0ZXRpbWUoMSwgNCwgMSwgMikKLURTVEVORF8xOTg3XzIwMDYgPSBkYXRldGltZSgxLCAxMCwgMjUsIDEpCitEU1RFTkRfMTk4N18yMDA2ID0gZGF0ZXRpbWUoMSwgMTAsIDI1LCAyKQogIyBGcm9tIDE5NjcgdG8gMTk4NiwgRFNUIHVzZWQgdG8gc3RhcnQgYXQgMmFtIChzdGFuZGFyZCB0aW1lKSBvbiB0aGUgbGFzdAotIyBTdW5kYXkgaW4gQXByaWwgKHRoZSBvbmUgb24gb3IgYWZ0ZXIgQXByaWwgMjQpIGFuZCB0byBlbmQgYXQgMmFtIChEU1QgdGltZTsKLSMgMWFtIHN0YW5kYXJkIHRpbWUpIG9uIHRoZSBsYXN0IFN1bmRheSBvZiBPY3RvYmVyLCB3aGljaCBpcyB0aGUgZmlyc3QgU3VuZGF5CisjIFN1bmRheSBpbiBBcHJpbCAodGhlIG9uZSBvbiBvciBhZnRlciBBcHJpbCAyNCkgYW5kIHRvIGVuZCBhdCAyYW0gKERTVCB0aW1lKQorIyBvbiB0aGUgbGFzdCBTdW5kYXkgb2YgT2N0b2Jlciwgd2hpY2ggaXMgdGhlIGZpcnN0IFN1bmRheQogIyBvbiBvciBhZnRlciBPY3QgMjUuCiBEU1RTVEFSVF8xOTY3XzE5ODYgPSBkYXRldGltZSgxLCA0LCAyNCwgMikKIERTVEVORF8xOTY3XzE5ODYgPSBEU1RFTkRfMTk4N18yMDA2CiAKK2RlZiB1c19kc3RfcmFuZ2UoeWVhcik6CisgICAgIyBGaW5kIHN0YXJ0IGFuZCBlbmQgdGltZXMgZm9yIFVTIERTVC4gRm9yIHllYXJzIGJlZm9yZSAxOTY3LCByZXR1cm4KKyAgICAjIHN0YXJ0ID0gZW5kIGZvciBubyBEU1QuCisgICAgaWYgMjAwNiA8IHllYXI6CisgICAgICAgIGRzdHN0YXJ0LCBkc3RlbmQgPSBEU1RTVEFSVF8yMDA3LCBEU1RFTkRfMjAwNworICAgIGVsaWYgMTk4NiA8IHllYXIgPCAyMDA3OgorICAgICAgICBkc3RzdGFydCwgZHN0ZW5kID0gRFNUU1RBUlRfMTk4N18yMDA2LCBEU1RFTkRfMTk4N18yMDA2CisgICAgZWxpZiAxOTY2IDwgeWVhciA8IDE5ODc6CisgICAgICAgIGRzdHN0YXJ0LCBkc3RlbmQgPSBEU1RTVEFSVF8xOTY3XzE5ODYsIERTVEVORF8xOTY3XzE5ODYKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gKGRhdGV0aW1lKHllYXIsIDEsIDEpLCApICogMgorCisgICAgc3RhcnQgPSBmaXJzdF9zdW5kYXlfb25fb3JfYWZ0ZXIoZHN0c3RhcnQucmVwbGFjZSh5ZWFyPXllYXIpKQorICAgIGVuZCA9IGZpcnN0X3N1bmRheV9vbl9vcl9hZnRlcihkc3RlbmQucmVwbGFjZSh5ZWFyPXllYXIpKQorICAgIHJldHVybiBzdGFydCwgZW5kCisKKwogY2xhc3MgVVNUaW1lWm9uZSh0emluZm8pOgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvdXJzLCByZXBybmFtZSwgc3RkbmFtZSwgZHN0bmFtZSk6CkBAIC0xNDEsMjcgKzEzNSwzOSBAQAogICAgICAgICAgICAgIyBpbXBsZW1lbnRhdGlvbikgcGFzc2VzIGEgZGF0ZXRpbWUgd2l0aCBkdC50emluZm8gaXMgc2VsZi4KICAgICAgICAgICAgIHJldHVybiBaRVJPCiAgICAgICAgIGFzc2VydCBkdC50emluZm8gaXMgc2VsZgotCi0gICAgICAgICMgRmluZCBzdGFydCBhbmQgZW5kIHRpbWVzIGZvciBVUyBEU1QuIEZvciB5ZWFycyBiZWZvcmUgMTk2NywgcmV0dXJuCi0gICAgICAgICMgWkVSTyBmb3Igbm8gRFNULgotICAgICAgICBpZiAyMDA2IDwgZHQueWVhcjoKLSAgICAgICAgICAgIGRzdHN0YXJ0LCBkc3RlbmQgPSBEU1RTVEFSVF8yMDA3LCBEU1RFTkRfMjAwNwotICAgICAgICBlbGlmIDE5ODYgPCBkdC55ZWFyIDwgMjAwNzoKLSAgICAgICAgICAgIGRzdHN0YXJ0LCBkc3RlbmQgPSBEU1RTVEFSVF8xOTg3XzIwMDYsIERTVEVORF8xOTg3XzIwMDYKLSAgICAgICAgZWxpZiAxOTY2IDwgZHQueWVhciA8IDE5ODc6Ci0gICAgICAgICAgICBkc3RzdGFydCwgZHN0ZW5kID0gRFNUU1RBUlRfMTk2N18xOTg2LCBEU1RFTkRfMTk2N18xOTg2Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gWkVSTwotCi0gICAgICAgIHN0YXJ0ID0gZmlyc3Rfc3VuZGF5X29uX29yX2FmdGVyKGRzdHN0YXJ0LnJlcGxhY2UoeWVhcj1kdC55ZWFyKSkKLSAgICAgICAgZW5kID0gZmlyc3Rfc3VuZGF5X29uX29yX2FmdGVyKGRzdGVuZC5yZXBsYWNlKHllYXI9ZHQueWVhcikpCi0KKyAgICAgICAgc3RhcnQsIGVuZCA9IHVzX2RzdF9yYW5nZShkdC55ZWFyKQogICAgICAgICAjIENhbid0IGNvbXBhcmUgbmFpdmUgdG8gYXdhcmUgb2JqZWN0cywgc28gc3RyaXAgdGhlIHRpbWV6b25lIGZyb20KICAgICAgICAgIyBkdCBmaXJzdC4KLSAgICAgICAgaWYgc3RhcnQgPD0gZHQucmVwbGFjZSh0emluZm89Tm9uZSkgPCBlbmQ6CisgICAgICAgIGR0ID0gZHQucmVwbGFjZSh0emluZm89Tm9uZSkKKyAgICAgICAgaWYgc3RhcnQgKyBIT1VSIDw9IGR0IDwgZW5kIC0gSE9VUjoKKyAgICAgICAgICAgICMgRFNUIGlzIGluIGVmZmVjdC4KICAgICAgICAgICAgIHJldHVybiBIT1VSCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gWkVSTworICAgICAgICBpZiBlbmQgLSBIT1VSIDw9IGR0IDwgZW5kOgorICAgICAgICAgICAgIyBGb2xkIChhbiBhbWJpZ3VvdXMgaG91cik6IHVzZSBkdC5mb2xkIHRvIGRpc2FtYmlndWF0ZS4KKyAgICAgICAgICAgIHJldHVybiBaRVJPIGlmIGR0LmZvbGQgZWxzZSBIT1VSCisgICAgICAgIGlmIHN0YXJ0IDw9IGR0IDwgc3RhcnQgKyBIT1VSOgorICAgICAgICAgICAgIyBHYXAgKGEgbm9uLWV4aXN0ZW50IGhvdXIpOiByZXZlcnNlIHRoZSBmb2xkIHJ1bGUuCisgICAgICAgICAgICByZXR1cm4gSE9VUiBpZiBkdC5mb2xkIGVsc2UgWkVSTworICAgICAgICAjIERTVCBpcyBvZmYuCisgICAgICAgIHJldHVybiBaRVJPCisKKyAgICBkZWYgZnJvbXV0YyhzZWxmLCBkdCk6CisgICAgICAgIGFzc2VydCBkdC50emluZm8gaXMgc2VsZgorICAgICAgICBzdGFydCwgZW5kID0gdXNfZHN0X3JhbmdlKGR0LnllYXIpCisgICAgICAgIHN0YXJ0ID0gc3RhcnQucmVwbGFjZSh0emluZm89c2VsZikKKyAgICAgICAgZW5kID0gZW5kLnJlcGxhY2UodHppbmZvPXNlbGYpCisgICAgICAgIHN0ZF90aW1lID0gZHQgKyBzZWxmLnN0ZG9mZnNldAorICAgICAgICBkc3RfdGltZSA9IHN0ZF90aW1lICsgSE9VUgorICAgICAgICBpZiBlbmQgPD0gZHN0X3RpbWUgPCBlbmQgKyBIT1VSOgorICAgICAgICAgICAgIyBSZXBlYXRlZCBob3VyCisgICAgICAgICAgICByZXR1cm4gc3RkX3RpbWUucmVwbGFjZShmb2xkPTEpCisgICAgICAgIGlmIHN0ZF90aW1lIDwgc3RhcnQgb3IgZHN0X3RpbWUgPj0gZW5kOgorICAgICAgICAgICAgIyBTdGFuZGFyZCB0aW1lCisgICAgICAgICAgICByZXR1cm4gc3RkX3RpbWUKKyAgICAgICAgaWYgc3RhcnQgPD0gc3RkX3RpbWUgPCBlbmQgLSBIT1VSOgorICAgICAgICAgICAgIyBEYXlsaWdodCBzYXZpbmcgdGltZQorICAgICAgICAgICAgcmV0dXJuIGRzdF90aW1lCisKIAogRWFzdGVybiAgPSBVU1RpbWVab25lKC01LCAiRWFzdGVybiIsICAiRVNUIiwgIkVEVCIpCiBDZW50cmFsICA9IFVTVGltZVpvbmUoLTYsICJDZW50cmFsIiwgICJDU1QiLCAiQ0RUIikKZGlmZiAtLWdpdCBhL0RvYy9pbnN0YWxsaW5nL2luZGV4LnJzdCBiL0RvYy9pbnN0YWxsaW5nL2luZGV4LnJzdAppbmRleCAxZWYzMTQ5Li5iMjI0NjVkIDEwMDY0NAotLS0gYS9Eb2MvaW5zdGFsbGluZy9pbmRleC5yc3QKKysrIGIvRG9jL2luc3RhbGxpbmcvaW5kZXgucnN0CkBAIC0yLDkgKzIsOSBAQAogCiAuLiBfaW5zdGFsbGluZy1pbmRleDoKIAotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgSW5zdGFsbGluZyBQeXRob24gTW9kdWxlcwotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoqKioqKioqKioqKioqKioqKioqKioqKioKK0luc3RhbGxpbmcgUHl0aG9uIE1vZHVsZXMKKyoqKioqKioqKioqKioqKioqKioqKioqKioKIAogOkVtYWlsOiBkaXN0dXRpbHMtc2lnQHB5dGhvbi5vcmcKIApAQCAtMzQsMjQgKzM0LDI0IEBACiAKICogYGBwaXBgYCBpcyB0aGUgcHJlZmVycmVkIGluc3RhbGxlciBwcm9ncmFtLiBTdGFydGluZyB3aXRoIFB5dGhvbiAzLjQsIGl0CiAgIGlzIGluY2x1ZGVkIGJ5IGRlZmF1bHQgd2l0aCB0aGUgUHl0aG9uIGJpbmFyeSBpbnN0YWxsZXJzLgotKiBhIHZpcnR1YWwgZW52aXJvbm1lbnQgaXMgYSBzZW1pLWlzb2xhdGVkIFB5dGhvbiBlbnZpcm9ubWVudCB0aGF0IGFsbG93cworKiBBICp2aXJ0dWFsIGVudmlyb25tZW50KiBpcyBhIHNlbWktaXNvbGF0ZWQgUHl0aG9uIGVudmlyb25tZW50IHRoYXQgYWxsb3dzCiAgIHBhY2thZ2VzIHRvIGJlIGluc3RhbGxlZCBmb3IgdXNlIGJ5IGEgcGFydGljdWxhciBhcHBsaWNhdGlvbiwgcmF0aGVyIHRoYW4KLSAgYmVpbmcgaW5zdGFsbGVkIHN5c3RlbSB3aWRlCi0qIGBgcHl2ZW52YGAgaXMgdGhlIHN0YW5kYXJkIHRvb2wgZm9yIGNyZWF0aW5nIHZpcnR1YWwgZW52aXJvbm1lbnRzLCBhbmQgaGFzCisgIGJlaW5nIGluc3RhbGxlZCBzeXN0ZW0gd2lkZS4KKyogYGB2ZW52YGAgaXMgdGhlIHN0YW5kYXJkIHRvb2wgZm9yIGNyZWF0aW5nIHZpcnR1YWwgZW52aXJvbm1lbnRzLCBhbmQgaGFzCiAgIGJlZW4gcGFydCBvZiBQeXRob24gc2luY2UgUHl0aG9uIDMuMy4gU3RhcnRpbmcgd2l0aCBQeXRob24gMy40LCBpdAotICBkZWZhdWx0cyB0byBpbnN0YWxsaW5nIGBgcGlwYGAgaW50byBhbGwgY3JlYXRlZCB2aXJ0dWFsIGVudmlyb25tZW50cworICBkZWZhdWx0cyB0byBpbnN0YWxsaW5nIGBgcGlwYGAgaW50byBhbGwgY3JlYXRlZCB2aXJ0dWFsIGVudmlyb25tZW50cy4KICogYGB2aXJ0dWFsZW52YGAgaXMgYSB0aGlyZCBwYXJ0eSBhbHRlcm5hdGl2ZSAoYW5kIHByZWRlY2Vzc29yKSB0bwotICBgYHB5dmVudmBgLiBJdCBhbGxvd3MgdmlydHVhbCBlbnZpcm9ubWVudHMgdG8gYmUgdXNlZCBvbiB2ZXJzaW9ucyBvZgotICBQeXRob24gcHJpb3IgdG8gMy40LCB3aGljaCBlaXRoZXIgZG9uJ3QgcHJvdmlkZSBgYHB5dmVudmBgIGF0IGFsbCwgb3IKKyAgYGB2ZW52YGAuIEl0IGFsbG93cyB2aXJ0dWFsIGVudmlyb25tZW50cyB0byBiZSB1c2VkIG9uIHZlcnNpb25zIG9mCisgIFB5dGhvbiBwcmlvciB0byAzLjQsIHdoaWNoIGVpdGhlciBkb24ndCBwcm92aWRlIGBgdmVudmBgIGF0IGFsbCwgb3IKICAgYXJlbid0IGFibGUgdG8gYXV0b21hdGljYWxseSBpbnN0YWxsIGBgcGlwYGAgaW50byBjcmVhdGVkIGVudmlyb25tZW50cy4KLSogdGhlIGBQeXRob24gUGFja2FnaW5nIEluZGV4IDxodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpPmBfXyBpcyBhIHB1YmxpYworKiBUaGUgYFB5dGhvbiBQYWNrYWdpbmcgSW5kZXggPGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGk+YF9fIGlzIGEgcHVibGljCiAgIHJlcG9zaXRvcnkgb2Ygb3BlbiBzb3VyY2UgbGljZW5zZWQgcGFja2FnZXMgbWFkZSBhdmFpbGFibGUgZm9yIHVzZSBieQotICBvdGhlciBQeXRob24gdXNlcnMKKyAgb3RoZXIgUHl0aG9uIHVzZXJzLgogKiB0aGUgYFB5dGhvbiBQYWNrYWdpbmcgQXV0aG9yaXR5CiAgIDxodHRwczovL3d3dy5weXBhLmlvL2VuL2xhdGVzdC8+YF9fIGFyZSB0aGUgZ3JvdXAgb2YKICAgZGV2ZWxvcGVycyBhbmQgZG9jdW1lbnRhdGlvbiBhdXRob3JzIHJlc3BvbnNpYmxlIGZvciB0aGUgbWFpbnRlbmFuY2UgYW5kCiAgIGV2b2x1dGlvbiBvZiB0aGUgc3RhbmRhcmQgcGFja2FnaW5nIHRvb2xzIGFuZCB0aGUgYXNzb2NpYXRlZCBtZXRhZGF0YSBhbmQKLSAgZmlsZSBmb3JtYXQgc3RhbmRhcmRzLiBUaGV5IG1haW50YWluIGEgdmFyaWV0eSBvZiB0b29scywgZG9jdW1lbnRhdGlvbgorICBmaWxlIGZvcm1hdCBzdGFuZGFyZHMuIFRoZXkgbWFpbnRhaW4gYSB2YXJpZXR5IG9mIHRvb2xzLCBkb2N1bWVudGF0aW9uLAogICBhbmQgaXNzdWUgdHJhY2tlcnMgb24gYm90aCBgR2l0SHViIDxodHRwczovL2dpdGh1Yi5jb20vcHlwYT5gX18gYW5kCiAgIGBCaXRCdWNrZXQgPGh0dHBzOi8vYml0YnVja2V0Lm9yZy9weXBhLz5gX18uCiAqIGBgZGlzdHV0aWxzYGAgaXMgdGhlIG9yaWdpbmFsIGJ1aWxkIGFuZCBkaXN0cmlidXRpb24gc3lzdGVtIGZpcnN0IGFkZGVkIHRvCkBAIC02Miw2ICs2MiwxOSBAQAogICBvZiB0aGUgbWFpbGluZyBsaXN0IHVzZWQgdG8gY29vcmRpbmF0ZSBQeXRob24gcGFja2FnaW5nIHN0YW5kYXJkcwogICBkZXZlbG9wbWVudCkuCiAKKy4uIGRlcHJlY2F0ZWQ6OiAzLjYKKyAgIGBgcHl2ZW52YGAgd2FzIHRoZSByZWNvbW1lbmRlZCB0b29sIGZvciBjcmVhdGluZyB2aXJ0dWFsIGVudmlyb25tZW50cyBmb3IKKyAgIFB5dGhvbiAzLjMgYW5kIDMuNCwgYW5kIGlzIGBkZXByZWNhdGVkIGluIFB5dGhvbiAzLjYKKyAgIDxodHRwczovL2RvY3MucHl0aG9uLm9yZy9kZXYvd2hhdHNuZXcvMy42Lmh0bWwjZGVwcmVjYXRlZC1mZWF0dXJlcz5gXy4KKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgIFRoZSB1c2Ugb2YgYGB2ZW52YGAgaXMgbm93IHJlY29tbWVuZGVkIGZvciBjcmVhdGluZyB2aXJ0dWFsIGVudmlyb25tZW50cy4KKworLi4gc2VlYWxzbzo6CisKKyAgIGBQeXRob24gUGFja2FnaW5nIFVzZXIgR3VpZGU6IENyZWF0aW5nIGFuZCB1c2luZyB2aXJ0dWFsIGVudmlyb25tZW50cworICAgPGh0dHBzOi8vcGFja2FnaW5nLnB5dGhvbi5vcmcvaW5zdGFsbGluZy8jY3JlYXRpbmctdmlydHVhbC1lbnZpcm9ubWVudHM+YF9fCisKIAogQmFzaWMgdXNhZ2UKID09PT09PT09PT09CkBAIC0xMDAsMTMgKzExMywxNCBAQAogTW9yZSBpbmZvcm1hdGlvbiBhbmQgcmVzb3VyY2VzIHJlZ2FyZGluZyBgYHBpcGBgIGFuZCBpdHMgY2FwYWJpbGl0aWVzIGNhbiBiZQogZm91bmQgaW4gdGhlIGBQeXRob24gUGFja2FnaW5nIFVzZXIgR3VpZGUgPGh0dHBzOi8vcGFja2FnaW5nLnB5dGhvbi5vcmc+YF9fLgogCi1gYHB5dmVudmBgIGhhcyBpdHMgb3duIGRvY3VtZW50YXRpb24gYXQgOnJlZjpgc2NyaXB0cy1weXZlbnZgLiBJbnN0YWxsaW5nCi1pbnRvIGFuIGFjdGl2ZSB2aXJ0dWFsIGVudmlyb25tZW50IHVzZXMgdGhlIGNvbW1hbmRzIHNob3duIGFib3ZlLgorQ3JlYXRpb24gb2YgdmlydHVhbCBlbnZpcm9ubWVudHMgaXMgZG9uZSB0aHJvdWdoIHRoZSA6bW9kOmB2ZW52YCBtb2R1bGUuCitJbnN0YWxsaW5nIHBhY2thZ2VzIGludG8gYW4gYWN0aXZlIHZpcnR1YWwgZW52aXJvbm1lbnQgdXNlcyB0aGUgY29tbWFuZHMgc2hvd24KK2Fib3ZlLgogCiAuLiBzZWVhbHNvOjoKIAogICAgIGBQeXRob24gUGFja2FnaW5nIFVzZXIgR3VpZGU6IEluc3RhbGxpbmcgUHl0aG9uIERpc3RyaWJ1dGlvbiBQYWNrYWdlcwotICAgIDxodHRwczovL3BhY2thZ2luZy5weXRob24ub3JnL2VuL2xhdGVzdC9pbnN0YWxsaW5nLz5gX18KKyAgICA8aHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZy9pbnN0YWxsaW5nLz5gX18KIAogCiBIb3cgZG8gSSAuLi4/CkBAIC0xMjQsNyArMTM4LDcgQEAKIC4uIHNlZWFsc286OgogCiAgICBgUHl0aG9uIFBhY2thZ2luZyBVc2VyIEd1aWRlOiBSZXF1aXJlbWVudHMgZm9yIEluc3RhbGxpbmcgUGFja2FnZXMKLSAgIDxodHRwczovL3BhY2thZ2luZy5weXRob24ub3JnL2VuL2xhdGVzdC9pbnN0YWxsaW5nLyNyZXF1aXJlbWVudHMtZm9yLWluc3RhbGxpbmctcGFja2FnZXM+YF9fCisgICA8aHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZy9pbnN0YWxsaW5nLyNyZXF1aXJlbWVudHMtZm9yLWluc3RhbGxpbmctcGFja2FnZXM+YF9fCiAKIAogLi4gaW5zdGFsbGluZy1wZXItdXNlci1pbnN0YWxsYXRpb246CkBAIC0xNDIsMjAgKzE1NiwxOSBAQAogQSBudW1iZXIgb2Ygc2NpZW50aWZpYyBQeXRob24gcGFja2FnZXMgaGF2ZSBjb21wbGV4IGJpbmFyeSBkZXBlbmRlbmNpZXMsIGFuZAogYXJlbid0IGN1cnJlbnRseSBlYXN5IHRvIGluc3RhbGwgdXNpbmcgYGBwaXBgYCBkaXJlY3RseS4gQXQgdGhpcyBwb2ludCBpbgogdGltZSwgaXQgd2lsbCBvZnRlbiBiZSBlYXNpZXIgZm9yIHVzZXJzIHRvIGluc3RhbGwgdGhlc2UgcGFja2FnZXMgYnkKLWBvdGhlciBtZWFucwotPGh0dHBzOi8vcGFja2FnaW5nLnB5dGhvbi5vcmcvZW4vbGF0ZXN0L3NjaWVuY2UvPmBfXworYG90aGVyIG1lYW5zIDxodHRwczovL3BhY2thZ2luZy5weXRob24ub3JnL3NjaWVuY2UvPmBfXwogcmF0aGVyIHRoYW4gYXR0ZW1wdGluZyB0byBpbnN0YWxsIHRoZW0gd2l0aCBgYHBpcGBgLgogCiAuLiBzZWVhbHNvOjoKIAogICAgYFB5dGhvbiBQYWNrYWdpbmcgVXNlciBHdWlkZTogSW5zdGFsbGluZyBTY2llbnRpZmljIFBhY2thZ2VzCi0gICA8aHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZy9lbi9sYXRlc3Qvc2NpZW5jZS8+YF9fCisgICA8aHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZy9zY2llbmNlLz5gX18KIAogCiAuLi4gd29yayB3aXRoIG11bHRpcGxlIHZlcnNpb25zIG9mIFB5dGhvbiBpbnN0YWxsZWQgaW4gcGFyYWxsZWw/CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLU9uIExpbnV4LCBNYWMgT1MgWCBhbmQgb3RoZXIgUE9TSVggc3lzdGVtcywgdXNlIHRoZSB2ZXJzaW9uZWQgUHl0aG9uIGNvbW1hbmRzCitPbiBMaW51eCwgTWFjIE9TIFgsIGFuZCBvdGhlciBQT1NJWCBzeXN0ZW1zLCB1c2UgdGhlIHZlcnNpb25lZCBQeXRob24gY29tbWFuZHMKIGluIGNvbWJpbmF0aW9uIHdpdGggdGhlIGBgLW1gYCBzd2l0Y2ggdG8gcnVuIHRoZSBhcHByb3ByaWF0ZSBjb3B5IG9mCiBgYHBpcGBgOjoKIApAQCAtMTY0LDcgKzE3Nyw3IEBACiAgICBweXRob24zICAgLW0gcGlwIGluc3RhbGwgU29tZVBhY2thZ2UgICMgZGVmYXVsdCBQeXRob24gMwogICAgcHl0aG9uMy40IC1tIHBpcCBpbnN0YWxsIFNvbWVQYWNrYWdlICAjIHNwZWNpZmljYWxseSBQeXRob24gMy40CiAKLShhcHByb3ByaWF0ZWx5IHZlcnNpb25lZCBgYHBpcGBgIGNvbW1hbmRzIG1heSBhbHNvIGJlIGF2YWlsYWJsZSkKK0FwcHJvcHJpYXRlbHkgdmVyc2lvbmVkIGBgcGlwYGAgY29tbWFuZHMgbWF5IGFsc28gYmUgYXZhaWxhYmxlLgogCiBPbiBXaW5kb3dzLCB1c2UgdGhlIGBgcHlgYCBQeXRob24gbGF1bmNoZXIgaW4gY29tYmluYXRpb24gd2l0aCB0aGUgYGAtbWBgCiBzd2l0Y2g6OgpAQCAtMjEyLDExICsyMjUsMTEgQEAKIHRoYW4gbmVlZGluZyB0byBidWlsZCB0aGVtIHRoZW1zZWx2ZXMuCiAKIFNvbWUgb2YgdGhlIHNvbHV0aW9ucyBmb3IgaW5zdGFsbGluZyBgc2NpZW50aWZpYyBzb2Z0d2FyZQotPGh0dHBzOi8vcGFja2FnaW5nLnB5dGhvbi5vcmcvZW4vbGF0ZXN0L3NjaWVuY2UvPmBfXwotdGhhdCBpcyBub3QgeWV0IGF2YWlsYWJsZSBhcyBwcmUtYnVpbHQgYGB3aGVlbGBgIGZpbGVzIG1heSBhbHNvIGhlbHAgd2l0aAorPGh0dHBzOi8vcGFja2FnaW5nLnB5dGhvbi5vcmcvc2NpZW5jZS8+YF9fCit0aGF0IGFyZSBub3QgeWV0IGF2YWlsYWJsZSBhcyBwcmUtYnVpbHQgYGB3aGVlbGBgIGZpbGVzIG1heSBhbHNvIGhlbHAgd2l0aAogb2J0YWluaW5nIG90aGVyIGJpbmFyeSBleHRlbnNpb25zIHdpdGhvdXQgbmVlZGluZyB0byBidWlsZCB0aGVtIGxvY2FsbHkuCiAKIC4uIHNlZWFsc286OgogCiAgICBgUHl0aG9uIFBhY2thZ2luZyBVc2VyIEd1aWRlOiBCaW5hcnkgRXh0ZW5zaW9ucwotICAgPGh0dHBzOi8vcGFja2FnaW5nLnB5dGhvbi5vcmcvZW4vbGF0ZXN0L2V4dGVuc2lvbnMvPmBfXworICAgPGh0dHBzOi8vcGFja2FnaW5nLnB5dGhvbi5vcmcvZXh0ZW5zaW9ucy8+YF9fCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9hc3luY2hhdC5yc3QgYi9Eb2MvbGlicmFyeS9hc3luY2hhdC5yc3QKaW5kZXggYWU3MmQyNi4uOWU1MTQxNiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvYXN5bmNoYXQucnN0CisrKyBiL0RvYy9saWJyYXJ5L2FzeW5jaGF0LnJzdApAQCAtOSw2ICs5LDkgQEAKIAogKipTb3VyY2UgY29kZToqKiA6c291cmNlOmBMaWIvYXN5bmNoYXQucHlgCiAKKy4uIGRlcHJlY2F0ZWQ6OiAzLjYKKyAgIFBsZWFzZSB1c2UgOm1vZDpgYXN5bmNpb2AgaW5zdGVhZC4KKwogLS0tLS0tLS0tLS0tLS0KIAogLi4gbm90ZTo6CkBAIC01OCwxMyArNjEsMTMgQEAKICAgICAgIFRoZSBhc3luY2hyb25vdXMgb3V0cHV0IGJ1ZmZlciBzaXplIChkZWZhdWx0IGBgNDA5NmBgKS4KIAogICAgVW5saWtlIDpjbGFzczpgYXN5bmNvcmUuZGlzcGF0Y2hlcmAsIDpjbGFzczpgYXN5bmNfY2hhdGAgYWxsb3dzIHlvdSB0bwotICAgZGVmaW5lIGEgZmlyc3QtaW4tZmlyc3Qtb3V0IHF1ZXVlIChmaWZvKSBvZiAqcHJvZHVjZXJzKi4gQSBwcm9kdWNlciBuZWVkCisgICBkZWZpbmUgYSA6YWJicjpgRklGTyAoZmlyc3QtaW4sIGZpcnN0LW91dClgIHF1ZXVlIG9mICpwcm9kdWNlcnMqLiBBIHByb2R1Y2VyIG5lZWQKICAgIGhhdmUgb25seSBvbmUgbWV0aG9kLCA6bWV0aDpgbW9yZWAsIHdoaWNoIHNob3VsZCByZXR1cm4gZGF0YSB0byBiZQogICAgdHJhbnNtaXR0ZWQgb24gdGhlIGNoYW5uZWwuCiAgICBUaGUgcHJvZHVjZXIgaW5kaWNhdGVzIGV4aGF1c3Rpb24gKCppLmUuKiB0aGF0IGl0IGNvbnRhaW5zIG5vIG1vcmUgZGF0YSkgYnkKICAgIGhhdmluZyBpdHMgOm1ldGg6YG1vcmVgIG1ldGhvZCByZXR1cm4gdGhlIGVtcHR5IGJ5dGVzIG9iamVjdC4gQXQgdGhpcyBwb2ludAotICAgdGhlIDpjbGFzczpgYXN5bmNfY2hhdGAgb2JqZWN0IHJlbW92ZXMgdGhlIHByb2R1Y2VyIGZyb20gdGhlIGZpZm8gYW5kIHN0YXJ0cwotICAgdXNpbmcgdGhlIG5leHQgcHJvZHVjZXIsIGlmIGFueS4gV2hlbiB0aGUgcHJvZHVjZXIgZmlmbyBpcyBlbXB0eSB0aGUKKyAgIHRoZSA6Y2xhc3M6YGFzeW5jX2NoYXRgIG9iamVjdCByZW1vdmVzIHRoZSBwcm9kdWNlciBmcm9tIHRoZSBxdWV1ZSBhbmQgc3RhcnRzCisgICB1c2luZyB0aGUgbmV4dCBwcm9kdWNlciwgaWYgYW55LiBXaGVuIHRoZSBwcm9kdWNlciBxdWV1ZSBpcyBlbXB0eSB0aGUKICAgIDptZXRoOmBoYW5kbGVfd3JpdGVgIG1ldGhvZCBkb2VzIG5vdGhpbmcuIFlvdSB1c2UgdGhlIGNoYW5uZWwgb2JqZWN0J3MKICAgIDptZXRoOmBzZXRfdGVybWluYXRvcmAgbWV0aG9kIHRvIGRlc2NyaWJlIGhvdyB0byByZWNvZ25pemUgdGhlIGVuZCBvZiwgb3IKICAgIGFuIGltcG9ydGFudCBicmVha3BvaW50IGluLCBhbiBpbmNvbWluZyB0cmFuc21pc3Npb24gZnJvbSB0aGUgcmVtb3RlCkBAIC03OCw4ICs4MSw4IEBACiAKIC4uIG1ldGhvZDo6IGFzeW5jX2NoYXQuY2xvc2Vfd2hlbl9kb25lKCkKIAotICAgUHVzaGVzIGEgYGBOb25lYGAgb24gdG8gdGhlIHByb2R1Y2VyIGZpZm8uIFdoZW4gdGhpcyBwcm9kdWNlciBpcyBwb3BwZWQgb2ZmCi0gICB0aGUgZmlmbyBpdCBjYXVzZXMgdGhlIGNoYW5uZWwgdG8gYmUgY2xvc2VkLgorICAgUHVzaGVzIGEgYGBOb25lYGAgb24gdG8gdGhlIHByb2R1Y2VyIHF1ZXVlLiBXaGVuIHRoaXMgcHJvZHVjZXIgaXMgcG9wcGVkIG9mZgorICAgdGhlIHF1ZXVlIGl0IGNhdXNlcyB0aGUgY2hhbm5lbCB0byBiZSBjbG9zZWQuCiAKIAogLi4gbWV0aG9kOjogYXN5bmNfY2hhdC5jb2xsZWN0X2luY29taW5nX2RhdGEoZGF0YSkKQEAgLTkyLDcgKzk1LDcgQEAKIC4uIG1ldGhvZDo6IGFzeW5jX2NoYXQuZGlzY2FyZF9idWZmZXJzKCkKIAogICAgSW4gZW1lcmdlbmNpZXMgdGhpcyBtZXRob2Qgd2lsbCBkaXNjYXJkIGFueSBkYXRhIGhlbGQgaW4gdGhlIGlucHV0IGFuZC9vcgotICAgb3V0cHV0IGJ1ZmZlcnMgYW5kIHRoZSBwcm9kdWNlciBmaWZvLgorICAgb3V0cHV0IGJ1ZmZlcnMgYW5kIHRoZSBwcm9kdWNlciBxdWV1ZS4KIAogCiAuLiBtZXRob2Q6OiBhc3luY19jaGF0LmZvdW5kX3Rlcm1pbmF0b3IoKQpAQCAtMTEwLDcgKzExMyw3IEBACiAKIC4uIG1ldGhvZDo6IGFzeW5jX2NoYXQucHVzaChkYXRhKQogCi0gICBQdXNoZXMgZGF0YSBvbiB0byB0aGUgY2hhbm5lbCdzIGZpZm8gdG8gZW5zdXJlIGl0cyB0cmFuc21pc3Npb24uCisgICBQdXNoZXMgZGF0YSBvbiB0byB0aGUgY2hhbm5lbCdzIHF1ZXVlIHRvIGVuc3VyZSBpdHMgdHJhbnNtaXNzaW9uLgogICAgVGhpcyBpcyBhbGwgeW91IG5lZWQgdG8gZG8gdG8gaGF2ZSB0aGUgY2hhbm5lbCB3cml0ZSB0aGUgZGF0YSBvdXQgdG8gdGhlCiAgICBuZXR3b3JrLCBhbHRob3VnaCBpdCBpcyBwb3NzaWJsZSB0byB1c2UgeW91ciBvd24gcHJvZHVjZXJzIGluIG1vcmUgY29tcGxleAogICAgc2NoZW1lcyB0byBpbXBsZW1lbnQgZW5jcnlwdGlvbiBhbmQgY2h1bmtpbmcsIGZvciBleGFtcGxlLgpAQCAtMTE4LDcgKzEyMSw3IEBACiAKIC4uIG1ldGhvZDo6IGFzeW5jX2NoYXQucHVzaF93aXRoX3Byb2R1Y2VyKHByb2R1Y2VyKQogCi0gICBUYWtlcyBhIHByb2R1Y2VyIG9iamVjdCBhbmQgYWRkcyBpdCB0byB0aGUgcHJvZHVjZXIgZmlmbyBhc3NvY2lhdGVkIHdpdGgKKyAgIFRha2VzIGEgcHJvZHVjZXIgb2JqZWN0IGFuZCBhZGRzIGl0IHRvIHRoZSBwcm9kdWNlciBxdWV1ZSBhc3NvY2lhdGVkIHdpdGgKICAgIHRoZSBjaGFubmVsLiAgV2hlbiBhbGwgY3VycmVudGx5LXB1c2hlZCBwcm9kdWNlcnMgaGF2ZSBiZWVuIGV4aGF1c3RlZCB0aGUKICAgIGNoYW5uZWwgd2lsbCBjb25zdW1lIHRoaXMgcHJvZHVjZXIncyBkYXRhIGJ5IGNhbGxpbmcgaXRzIDptZXRoOmBtb3JlYAogICAgbWV0aG9kIGFuZCBzZW5kIHRoZSBkYXRhIHRvIHRoZSByZW1vdGUgZW5kcG9pbnQuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9hc3luY2lvLWV2ZW50bG9vcC5yc3QgYi9Eb2MvbGlicmFyeS9hc3luY2lvLWV2ZW50bG9vcC5yc3QKaW5kZXggZDcyMDE2MC4uZmE2YTI5NiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvYXN5bmNpby1ldmVudGxvb3AucnN0CisrKyBiL0RvYy9saWJyYXJ5L2FzeW5jaW8tZXZlbnRsb29wLnJzdApAQCAtODgsNiArODgsMjQgQEAKICAgIFRoaXMgaXMgaWRlbXBvdGVudCBhbmQgaXJyZXZlcnNpYmxlLiBObyBvdGhlciBtZXRob2RzIHNob3VsZCBiZSBjYWxsZWQgYWZ0ZXIKICAgIHRoaXMgb25lLgogCisKKy4uIGNvcm91dGluZW1ldGhvZDo6IEFic3RyYWN0RXZlbnRMb29wLnNodXRkb3duX2FzeW5jZ2VucygpCisKKyAgIFNjaGVkdWxlIGFsbCBjdXJyZW50bHkgb3BlbiA6dGVybTpgYXN5bmNocm9ub3VzIGdlbmVyYXRvcmAgb2JqZWN0cyB0bworICAgY2xvc2Ugd2l0aCBhbiA6bWV0aDpgfmFnZW4uYWNsb3NlKClgIGNhbGwuICBBZnRlciBjYWxsaW5nIHRoaXMgbWV0aG9kLAorICAgdGhlIGV2ZW50IGxvb3Agd2lsbCBpc3N1ZSBhIHdhcm5pbmcgd2hlbmV2ZXIgYSBuZXcgYXN5bmNocm9ub3VzIGdlbmVyYXRvcgorICAgaXMgaXRlcmF0ZWQuICBTaG91bGQgYmUgdXNlZCB0byBmaW5hbGl6ZSBhbGwgc2NoZWR1bGVkIGFzeW5jaHJvbm91cworICAgZ2VuZXJhdG9ycyByZWxpYWJseS4gIEV4YW1wbGU6OgorCisgICAgdHJ5OgorICAgICAgICBsb29wLnJ1bl9mb3JldmVyKCkKKyAgICBmaW5hbGx5OgorICAgICAgICBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZShsb29wLnNodXRkb3duX2FzeW5jZ2VucygpKQorICAgICAgICBsb29wLmNsb3NlKCkKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKwogLi4gX2FzeW5jaW8tcGFzcy1rZXl3b3JkczoKIAogQ2FsbHMKQEAgLTExMCw4ICsxMjgsOSBAQAogICAgY2FsbGVkIGFmdGVyIDptZXRoOmBjYWxsX3Nvb25gIHJldHVybnMsIHdoZW4gY29udHJvbCByZXR1cm5zIHRvIHRoZSBldmVudAogICAgbG9vcC4KIAotICAgVGhpcyBvcGVyYXRlcyBhcyBhIEZJRk8gcXVldWUsIGNhbGxiYWNrcyBhcmUgY2FsbGVkIGluIHRoZSBvcmRlciBpbgotICAgd2hpY2ggdGhleSBhcmUgcmVnaXN0ZXJlZC4gIEVhY2ggY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlLgorICAgVGhpcyBvcGVyYXRlcyBhcyBhIDphYmJyOmBGSUZPIChmaXJzdC1pbiwgZmlyc3Qtb3V0KWAgcXVldWUsIGNhbGxiYWNrcworICAgYXJlIGNhbGxlZCBpbiB0aGUgb3JkZXIgaW4gd2hpY2ggdGhleSBhcmUgcmVnaXN0ZXJlZC4gIEVhY2ggY2FsbGJhY2sKKyAgIHdpbGwgYmUgY2FsbGVkIGV4YWN0bHkgb25jZS4KIAogICAgQW55IHBvc2l0aW9uYWwgYXJndW1lbnRzIGFmdGVyIHRoZSBjYWxsYmFjayB3aWxsIGJlIHBhc3NlZCB0byB0aGUKICAgIGNhbGxiYWNrIHdoZW4gaXQgaXMgY2FsbGVkLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvYXN5bmNpby1wcm90b2NvbC5yc3QgYi9Eb2MvbGlicmFyeS9hc3luY2lvLXByb3RvY29sLnJzdAppbmRleCBjMDM0MmY3Li4zZmJmNTEwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9hc3luY2lvLXByb3RvY29sLnJzdAorKysgYi9Eb2MvbGlicmFyeS9hc3luY2lvLXByb3RvY29sLnJzdApAQCAtMjUsNiArMjUsOSBAQAogCiBUaGUgdHJhbnNwb3J0IGNsYXNzZXMgYXJlIDpyZWY6YG5vdCB0aHJlYWQgc2FmZSA8YXN5bmNpby1tdWx0aXRocmVhZGluZz5gLgogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgVGhlIHNvY2tldCBvcHRpb24gYGBUQ1BfTk9ERUxBWWBgIGlzIG5vdyBzZXQgYnkgZGVmYXVsdC4KKwogCiBCYXNlVHJhbnNwb3J0CiAtLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9hc3luY2lvLnJzdCBiL0RvYy9saWJyYXJ5L2FzeW5jaW8ucnN0CmluZGV4IDc2YmQ5ZTkuLmIwNzZiN2QgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2FzeW5jaW8ucnN0CisrKyBiL0RvYy9saWJyYXJ5L2FzeW5jaW8ucnN0CkBAIC04LDEzICs4LDYgQEAKIAogKipTb3VyY2UgY29kZToqKiA6c291cmNlOmBMaWIvYXN5bmNpby9gCiAKLS4uIG5vdGU6OgotCi0gICBUaGUgYXN5bmNpbyBwYWNrYWdlIGhhcyBiZWVuIGluY2x1ZGVkIGluIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IG9uIGEKLSAgIDp0ZXJtOmBwcm92aXNpb25hbCBiYXNpcyA8cHJvdmlzaW9uYWwgcGFja2FnZT5gLiBCYWNrd2FyZHMgaW5jb21wYXRpYmxlCi0gICBjaGFuZ2VzICh1cCB0byBhbmQgaW5jbHVkaW5nIHJlbW92YWwgb2YgdGhlIG1vZHVsZSkgbWF5IG9jY3VyIGlmIGRlZW1lZAotICAgbmVjZXNzYXJ5IGJ5IHRoZSBjb3JlIGRldmVsb3BlcnMuCi0KIC0tLS0tLS0tLS0tLS0tCiAKIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGluZnJhc3RydWN0dXJlIGZvciB3cml0aW5nIHNpbmdsZS10aHJlYWRlZCBjb25jdXJyZW50CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9hc3luY29yZS5yc3QgYi9Eb2MvbGlicmFyeS9hc3luY29yZS5yc3QKaW5kZXggYzgzOGJlNy4uMTFkMzYxNiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvYXN5bmNvcmUucnN0CisrKyBiL0RvYy9saWJyYXJ5L2FzeW5jb3JlLnJzdApAQCAtMTIsNiArMTIsOSBAQAogCiAqKlNvdXJjZSBjb2RlOioqIDpzb3VyY2U6YExpYi9hc3luY29yZS5weWAKIAorLi4gZGVwcmVjYXRlZDo6IDMuNgorICAgUGxlYXNlIHVzZSA6bW9kOmBhc3luY2lvYCBpbnN0ZWFkLgorCiAtLS0tLS0tLS0tLS0tLQogCiAuLiBub3RlOjoKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2JpbmFzY2lpLnJzdCBiL0RvYy9saWJyYXJ5L2JpbmFzY2lpLnJzdAppbmRleCA4NzhkOGRiLi40ZjVmMGYyIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9iaW5hc2NpaS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYmluYXNjaWkucnN0CkBAIC01MywxMyArNTMsMTQgQEAKICAgIHRoYW4gb25lIGxpbmUgbWF5IGJlIHBhc3NlZCBhdCBhIHRpbWUuCiAKIAotLi4gZnVuY3Rpb246OiBiMmFfYmFzZTY0KGRhdGEpCisuLiBmdW5jdGlvbjo6IGIyYV9iYXNlNjQoZGF0YSwgXCosIG5ld2xpbmU9VHJ1ZSkKIAogICAgQ29udmVydCBiaW5hcnkgZGF0YSB0byBhIGxpbmUgb2YgQVNDSUkgY2hhcmFjdGVycyBpbiBiYXNlNjQgY29kaW5nLiBUaGUgcmV0dXJuCi0gICB2YWx1ZSBpcyB0aGUgY29udmVydGVkIGxpbmUsIGluY2x1ZGluZyBhIG5ld2xpbmUgY2hhci4gIFRoZSBuZXdsaW5lIGlzCi0gICBhZGRlZCBiZWNhdXNlIHRoZSBvcmlnaW5hbCB1c2UgY2FzZSBmb3IgdGhpcyBmdW5jdGlvbiB3YXMgdG8gZmVlZCBpdCBhCi0gICBzZXJpZXMgb2YgNTcgYnl0ZSBpbnB1dCBsaW5lcyB0byBnZXQgb3V0cHV0IGxpbmVzIHRoYXQgY29uZm9ybSB0byB0aGUKLSAgIE1JTUUtYmFzZTY0IHN0YW5kYXJkLiAgT3RoZXJ3aXNlIHRoZSBvdXRwdXQgY29uZm9ybXMgdG8gOnJmYzpgMzU0OGAuCisgICB2YWx1ZSBpcyB0aGUgY29udmVydGVkIGxpbmUsIGluY2x1ZGluZyBhIG5ld2xpbmUgY2hhciBpZiAqbmV3bGluZSogaXMKKyAgIHRydWUuICBUaGUgb3V0cHV0IG9mIHRoaXMgZnVuY3Rpb24gY29uZm9ybXMgdG8gOnJmYzpgMzU0OGAuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBZGRlZCB0aGUgKm5ld2xpbmUqIHBhcmFtZXRlci4KIAogCiAuLiBmdW5jdGlvbjo6IGEyYl9xcChkYXRhLCBoZWFkZXI9RmFsc2UpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9iejIucnN0IGIvRG9jL2xpYnJhcnkvYnoyLnJzdAppbmRleCA2YzQ5ZDlmLi5kNWY2MjI1IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9iejIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2J6Mi5yc3QKQEAgLTYxLDYgKzYxLDkgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICBUaGUgYGAneCdgYCAoZXhjbHVzaXZlIGNyZWF0aW9uKSBtb2RlIHdhcyBhZGRlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gY2xhc3M6OiBCWjJGaWxlKGZpbGVuYW1lLCBtb2RlPSdyJywgYnVmZmVyaW5nPU5vbmUsIGNvbXByZXNzbGV2ZWw9OSkKIApAQCAtMTI4LDYgKzEzMSw5IEBACiAgICAgICBUaGUgOm1ldGg6YH5pby5CdWZmZXJlZElPQmFzZS5yZWFkYCBtZXRob2Qgbm93IGFjY2VwdHMgYW4gYXJndW1lbnQgb2YKICAgICAgIGBgTm9uZWBgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiBJbmNyZW1lbnRhbCAoZGUpY29tcHJlc3Npb24KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY21hdGgucnN0IGIvRG9jL2xpYnJhcnkvY21hdGgucnN0CmluZGV4IGUxMTNmZmMuLmM4MTlhNjYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NtYXRoLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jbWF0aC5yc3QKQEAgLTI1Myw2ICsyNTMsNDAgQEAKIAogICAgVGhlIG1hdGhlbWF0aWNhbCBjb25zdGFudCAqZSosIGFzIGEgZmxvYXQuCiAKKy4uIGRhdGE6OiB0YXUKKworICAgVGhlIG1hdGhlbWF0aWNhbCBjb25zdGFudCAqz4QqLCBhcyBhIGZsb2F0LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworLi4gZGF0YTo6IGluZgorCisgICBGbG9hdGluZy1wb2ludCBwb3NpdGl2ZSBpbmZpbml0eS4gRXF1aXZhbGVudCB0byBgYGZsb2F0KCdpbmYnKWBgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworLi4gZGF0YTo6IGluZmoKKworICAgQ29tcGxleCBudW1iZXIgd2l0aCB6ZXJvIHJlYWwgcGFydCBhbmQgcG9zaXRpdmUgaW5maW5pdHkgaW1hZ2luYXJ5CisgICBwYXJ0LiBFcXVpdmFsZW50IHRvIGBgY29tcGxleCgwLjAsIGZsb2F0KCdpbmYnKSlgYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKy4uIGRhdGE6OiBuYW4KKworICAgQSBmbG9hdGluZy1wb2ludCAibm90IGEgbnVtYmVyIiAoTmFOKSB2YWx1ZS4gIEVxdWl2YWxlbnQgdG8KKyAgIGBgZmxvYXQoJ25hbicpYGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisuLiBkYXRhOjogbmFuagorCisgICBDb21wbGV4IG51bWJlciB3aXRoIHplcm8gcmVhbCBwYXJ0IGFuZCBOYU4gaW1hZ2luYXJ5IHBhcnQuIEVxdWl2YWxlbnQgdG8KKyAgIGBgY29tcGxleCgwLjAsIGZsb2F0KCduYW4nKSlgYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKwogLi4gaW5kZXg6OiBtb2R1bGU6IG1hdGgKIAogTm90ZSB0aGF0IHRoZSBzZWxlY3Rpb24gb2YgZnVuY3Rpb25zIGlzIHNpbWlsYXIsIGJ1dCBub3QgaWRlbnRpY2FsLCB0byB0aGF0IGluCkBAIC0yNzYsNSArMzEwLDMgQEAKICAgIEthaGFuLCBXOiAgQnJhbmNoIGN1dHMgZm9yIGNvbXBsZXggZWxlbWVudGFyeSBmdW5jdGlvbnM7IG9yLCBNdWNoIGFkbyBhYm91dAogICAgbm90aGluZydzIHNpZ24gYml0LiAgSW4gSXNlcmxlcywgQS4sIGFuZCBQb3dlbGwsIE0uIChlZHMuKSwgVGhlIHN0YXRlIG9mIHRoZSBhcnQKICAgIGluIG51bWVyaWNhbCBhbmFseXNpcy4gQ2xhcmVuZG9uIFByZXNzICgxOTg3KSBwcDE2NS0tMjExLgotCi0KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NvZGUucnN0IGIvRG9jL2xpYnJhcnkvY29kZS5yc3QKaW5kZXggNDQzYWY2OS4uZTJjNDdiYSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY29kZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY29kZS5yc3QKQEAgLTMwLDE1ICszMCwxOSBAQAogICAgYGBzeXMucHMxYGAgYW5kIGBgc3lzLnBzMmBgLCBhbmQgaW5wdXQgYnVmZmVyaW5nLgogCiAKLS4uIGZ1bmN0aW9uOjogaW50ZXJhY3QoYmFubmVyPU5vbmUsIHJlYWRmdW5jPU5vbmUsIGxvY2FsPU5vbmUpCisuLiBmdW5jdGlvbjo6IGludGVyYWN0KGJhbm5lcj1Ob25lLCByZWFkZnVuYz1Ob25lLCBsb2NhbD1Ob25lLCBleGl0bXNnPU5vbmUpCiAKICAgIENvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIHJ1biBhIHJlYWQtZXZhbC1wcmludCBsb29wLiAgVGhpcyBjcmVhdGVzIGEgbmV3CiAgICBpbnN0YW5jZSBvZiA6Y2xhc3M6YEludGVyYWN0aXZlQ29uc29sZWAgYW5kIHNldHMgKnJlYWRmdW5jKiB0byBiZSB1c2VkIGFzCiAgICB0aGUgOm1ldGg6YEludGVyYWN0aXZlQ29uc29sZS5yYXdfaW5wdXRgIG1ldGhvZCwgaWYgcHJvdmlkZWQuICBJZiAqbG9jYWwqIGlzCiAgICBwcm92aWRlZCwgaXQgaXMgcGFzc2VkIHRvIHRoZSA6Y2xhc3M6YEludGVyYWN0aXZlQ29uc29sZWAgY29uc3RydWN0b3IgZm9yCiAgICB1c2UgYXMgdGhlIGRlZmF1bHQgbmFtZXNwYWNlIGZvciB0aGUgaW50ZXJwcmV0ZXIgbG9vcC4gIFRoZSA6bWV0aDpgaW50ZXJhY3RgCi0gICBtZXRob2Qgb2YgdGhlIGluc3RhbmNlIGlzIHRoZW4gcnVuIHdpdGggKmJhbm5lciogcGFzc2VkIGFzIHRoZSBiYW5uZXIgdG8KLSAgIHVzZSwgaWYgcHJvdmlkZWQuICBUaGUgY29uc29sZSBvYmplY3QgaXMgZGlzY2FyZGVkIGFmdGVyIHVzZS4KKyAgIG1ldGhvZCBvZiB0aGUgaW5zdGFuY2UgaXMgdGhlbiBydW4gd2l0aCAqYmFubmVyKiBhbmQgKmV4aXRtc2cqIHBhc3NlZCBhcyB0aGUKKyAgIGJhbm5lciBhbmQgZXhpdCBtZXNzYWdlIHRvIHVzZSwgaWYgcHJvdmlkZWQuICBUaGUgY29uc29sZSBvYmplY3QgaXMgZGlzY2FyZGVkCisgICBhZnRlciB1c2UuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBZGRlZCAqZXhpdG1zZyogcGFyYW1ldGVyLgogCiAKIC4uIGZ1bmN0aW9uOjogY29tcGlsZV9jb21tYW5kKHNvdXJjZSwgZmlsZW5hbWU9IjxpbnB1dD4iLCBzeW1ib2w9InNpbmdsZSIpCkBAIC0xMzYsNyArMTQwLDcgQEAKIGludGVycHJldGVyIG9iamVjdHMgYXMgd2VsbCBhcyB0aGUgZm9sbG93aW5nIGFkZGl0aW9ucy4KIAogCi0uLiBtZXRob2Q6OiBJbnRlcmFjdGl2ZUNvbnNvbGUuaW50ZXJhY3QoYmFubmVyPU5vbmUpCisuLiBtZXRob2Q6OiBJbnRlcmFjdGl2ZUNvbnNvbGUuaW50ZXJhY3QoYmFubmVyPU5vbmUsIGV4aXRtc2c9Tm9uZSkKIAogICAgQ2xvc2VseSBlbXVsYXRlIHRoZSBpbnRlcmFjdGl2ZSBQeXRob24gY29uc29sZS4gVGhlIG9wdGlvbmFsICpiYW5uZXIqIGFyZ3VtZW50CiAgICBzcGVjaWZ5IHRoZSBiYW5uZXIgdG8gcHJpbnQgYmVmb3JlIHRoZSBmaXJzdCBpbnRlcmFjdGlvbjsgYnkgZGVmYXVsdCBpdCBwcmludHMgYQpAQCAtMTQ0LDkgKzE0OCwxNiBAQAogICAgYnkgdGhlIGNsYXNzIG5hbWUgb2YgdGhlIGNvbnNvbGUgb2JqZWN0IGluIHBhcmVudGhlc2VzIChzbyBhcyBub3QgdG8gY29uZnVzZQogICAgdGhpcyB3aXRoIHRoZSByZWFsIGludGVycHJldGVyIC0tIHNpbmNlIGl0J3Mgc28gY2xvc2UhKS4KIAorICAgVGhlIG9wdGlvbmFsICpleGl0bXNnKiBhcmd1bWVudCBzcGVjaWZpZXMgYW4gZXhpdCBtZXNzYWdlIHByaW50ZWQgd2hlbiBleGl0aW5nLgorICAgUGFzcyB0aGUgZW1wdHkgc3RyaW5nIHRvIHN1cHByZXNzIHRoZSBleGl0IG1lc3NhZ2UuIElmICpleGl0bXNnKiBpcyBub3QgZ2l2ZW4gb3IKKyAgIGBgTm9uZWBgLCBhIGRlZmF1bHQgbWVzc2FnZSBpcyBwcmludGVkLgorCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgVG8gc3VwcHJlc3MgcHJpbnRpbmcgYW55IGJhbm5lciwgcGFzcyBhbiBlbXB0eSBzdHJpbmcuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBQcmludCBhbiBleGl0IG1lc3NhZ2Ugd2hlbiBleGl0aW5nLgorCiAKIC4uIG1ldGhvZDo6IEludGVyYWN0aXZlQ29uc29sZS5wdXNoKGxpbmUpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NvZGVjcy5yc3QgYi9Eb2MvbGlicmFyeS9jb2RlY3MucnN0CmluZGV4IGYzOGU0MWIuLjBlY2Q4OWIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NvZGVjcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY29kZWNzLnJzdApAQCAtMTI2MywxMCArMTI2MywxNiBAQAogfCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgT25seSBgYGVycm9ycz0nc3RyaWN0J2BgICB8CiB8ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCBpcyBzdXBwb3J0ZWQuICAgICAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBtYmNzICAgICAgICAgICAgICAgfCBkYmNzICAgIHwgV2luZG93cyBvbmx5OiBFbmNvZGUgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCBvcGVyYW5kIGFjY29yZGluZyB0byB0aGUgIHwKK3wgbWJjcyAgICAgICAgICAgICAgIHwgYW5zaSwgICB8IFdpbmRvd3Mgb25seTogRW5jb2RlICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgfCBkYmNzICAgIHwgb3BlcmFuZCBhY2NvcmRpbmcgdG8gdGhlICB8CiB8ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCBBTlNJIGNvZGVwYWdlIChDUF9BQ1ApICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBvZW0gICAgICAgICAgICAgICAgfCAgICAgICAgIHwgV2luZG93cyBvbmx5OiBFbmNvZGUgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCBvcGVyYW5kIGFjY29yZGluZyB0byB0aGUgIHwKK3wgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IE9FTSBjb2RlcGFnZSAoQ1BfT0VNQ1ApICAgfAorfCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogfCBwYWxtb3MgICAgICAgICAgICAgfCAgICAgICAgIHwgRW5jb2Rpbmcgb2YgUGFsbU9TIDMuNSAgICB8CiArLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIHwgcHVueWNvZGUgICAgICAgICAgIHwgICAgICAgICB8IEltcGxlbWVudHMgOnJmYzpgMzQ5MmAuICAgfApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29sbGVjdGlvbnMuYWJjLnJzdCBiL0RvYy9saWJyYXJ5L2NvbGxlY3Rpb25zLmFiYy5yc3QKaW5kZXggYWViNmE3My4uNThiMDNiOSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY29sbGVjdGlvbnMuYWJjLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jb2xsZWN0aW9ucy5hYmMucnN0CkBAIC00MSwxMyArNDEsMTYgQEAKIDpjbGFzczpgSGFzaGFibGVgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2hhc2hfX2BgCiA6Y2xhc3M6YEl0ZXJhYmxlYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19pdGVyX19gYAogOmNsYXNzOmBJdGVyYXRvcmAgICAgICAgICAgOmNsYXNzOmBJdGVyYWJsZWAgICAgICBgYF9fbmV4dF9fYGAgICAgICAgICAgICBgYF9faXRlcl9fYGAKKzpjbGFzczpgUmV2ZXJzaWJsZWAgICAgICAgIDpjbGFzczpgSXRlcmFibGVgICAgICAgYGBfX3JldmVyc2VkX19gYAogOmNsYXNzOmBHZW5lcmF0b3JgICAgICAgICAgOmNsYXNzOmBJdGVyYXRvcmAgICAgICBgYHNlbmRgYCwgYGB0aHJvd2BgICAgICBgYGNsb3NlYGAsIGBgX19pdGVyX19gYCwgYGBfX25leHRfX2BgCiA6Y2xhc3M6YFNpemVkYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19sZW5fX2BgCiA6Y2xhc3M6YENhbGxhYmxlYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19jYWxsX19gYAorOmNsYXNzOmBDb2xsZWN0aW9uYCAgICAgICAgOmNsYXNzOmBTaXplZGAsICAgICAgICBgYF9fY29udGFpbnNfX2BgLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBJdGVyYWJsZWAsICAgICBgYF9faXRlcl9fYGAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YENvbnRhaW5lcmAgICAgIGBgX19sZW5fX2BgCiAKLTpjbGFzczpgU2VxdWVuY2VgICAgICAgICAgIDpjbGFzczpgU2l6ZWRgLCAgICAgICAgYGBfX2dldGl0ZW1fX2BgLCAgICAgICAgYGBfX2NvbnRhaW5zX19gYCwgYGBfX2l0ZXJfX2BgLCBgYF9fcmV2ZXJzZWRfX2BgLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBJdGVyYWJsZWAsICAgICBgYF9fbGVuX19gYCAgICAgICAgICAgICBgYGluZGV4YGAsIGFuZCBgYGNvdW50YGAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzczpgQ29udGFpbmVyYAorOmNsYXNzOmBTZXF1ZW5jZWAgICAgICAgICAgOmNsYXNzOmBSZXZlcnNpYmxlYCwgICBgYF9fZ2V0aXRlbV9fYGAsICAgICAgICBgYF9fY29udGFpbnNfX2BgLCBgYF9faXRlcl9fYGAsIGBgX19yZXZlcnNlZF9fYGAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YENvbGxlY3Rpb25gICAgIGBgX19sZW5fX2BgICAgICAgICAgICAgIGBgaW5kZXhgYCwgYW5kIGBgY291bnRgYAogCiA6Y2xhc3M6YE11dGFibGVTZXF1ZW5jZWAgICA6Y2xhc3M6YFNlcXVlbmNlYCAgICAgIGBgX19nZXRpdGVtX19gYCwgICAgICAgIEluaGVyaXRlZCA6Y2xhc3M6YFNlcXVlbmNlYCBtZXRob2RzIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fc2V0aXRlbV9fYGAsICAgICAgICBgYGFwcGVuZGBgLCBgYHJldmVyc2VgYCwgYGBleHRlbmRgYCwgYGBwb3BgYCwKQEAgLTU4LDkgKzYxLDkgQEAKIDpjbGFzczpgQnl0ZVN0cmluZ2AgICAgICAgIDpjbGFzczpgU2VxdWVuY2VgICAgICAgYGBfX2dldGl0ZW1fX2BgLCAgICAgICAgSW5oZXJpdGVkIDpjbGFzczpgU2VxdWVuY2VgIG1ldGhvZHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2xlbl9fYGAKIAotOmNsYXNzOmBTZXRgICAgICAgICAgICAgICAgOmNsYXNzOmBTaXplZGAsICAgICAgICBgYF9fY29udGFpbnNfX2BgLCAgICAgICBgYF9fbGVfX2BgLCBgYF9fbHRfX2BgLCBgYF9fZXFfX2BgLCBgYF9fbmVfX2BgLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBJdGVyYWJsZWAsICAgICBgYF9faXRlcl9fYGAsICAgICAgICAgICBgYF9fZ3RfX2BgLCBgYF9fZ2VfX2BgLCBgYF9fYW5kX19gYCwgYGBfX29yX19gYCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzczpgQ29udGFpbmVyYCAgICAgYGBfX2xlbl9fYGAgICAgICAgICAgICAgYGBfX3N1Yl9fYGAsIGBgX194b3JfX2BgLCBhbmQgYGBpc2Rpc2pvaW50YGAKKzpjbGFzczpgU2V0YCAgICAgICAgICAgICAgIDpjbGFzczpgQ29sbGVjdGlvbmAgICAgYGBfX2NvbnRhaW5zX19gYCwgICAgICAgYGBfX2xlX19gYCwgYGBfX2x0X19gYCwgYGBfX2VxX19gYCwgYGBfX25lX19gYCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2l0ZXJfX2BgLCAgICAgICAgICAgYGBfX2d0X19gYCwgYGBfX2dlX19gYCwgYGBfX2FuZF9fYGAsIGBgX19vcl9fYGAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19sZW5fX2BgICAgICAgICAgICAgIGBgX19zdWJfX2BgLCBgYF9feG9yX19gYCwgYW5kIGBgaXNkaXNqb2ludGBgCiAKIDpjbGFzczpgTXV0YWJsZVNldGAgICAgICAgIDpjbGFzczpgU2V0YCAgICAgICAgICAgYGBfX2NvbnRhaW5zX19gYCwgICAgICAgSW5oZXJpdGVkIDpjbGFzczpgU2V0YCBtZXRob2RzIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9faXRlcl9fYGAsICAgICAgICAgICBgYGNsZWFyYGAsIGBgcG9wYGAsIGBgcmVtb3ZlYGAsIGBgX19pb3JfX2BgLApAQCAtNjgsOSArNzEsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYGFkZGBgLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYGRpc2NhcmRgYAogCi06Y2xhc3M6YE1hcHBpbmdgICAgICAgICAgICA6Y2xhc3M6YFNpemVkYCwgICAgICAgIGBgX19nZXRpdGVtX19gYCwgICAgICAgIGBgX19jb250YWluc19fYGAsIGBga2V5c2BgLCBgYGl0ZW1zYGAsIGBgdmFsdWVzYGAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YEl0ZXJhYmxlYCwgICAgIGBgX19pdGVyX19gYCwgICAgICAgICAgIGBgZ2V0YGAsIGBgX19lcV9fYGAsIGFuZCBgYF9fbmVfX2BgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YENvbnRhaW5lcmAgICAgIGBgX19sZW5fX2BgCis6Y2xhc3M6YE1hcHBpbmdgICAgICAgICAgICA6Y2xhc3M6YENvbGxlY3Rpb25gICAgIGBgX19nZXRpdGVtX19gYCwgICAgICAgIGBgX19jb250YWluc19fYGAsIGBga2V5c2BgLCBgYGl0ZW1zYGAsIGBgdmFsdWVzYGAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19pdGVyX19gYCwgICAgICAgICAgIGBgZ2V0YGAsIGBgX19lcV9fYGAsIGFuZCBgYF9fbmVfX2BgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19sZW5fX2BgCiAKIDpjbGFzczpgTXV0YWJsZU1hcHBpbmdgICAgIDpjbGFzczpgTWFwcGluZ2AgICAgICAgYGBfX2dldGl0ZW1fX2BgLCAgICAgICAgSW5oZXJpdGVkIDpjbGFzczpgTWFwcGluZ2AgbWV0aG9kcyBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX3NldGl0ZW1fX2BgLCAgICAgICAgYGBwb3BgYCwgYGBwb3BpdGVtYGAsIGBgY2xlYXJgYCwgYGB1cGRhdGVgYCwKQEAgLTg5LDYgKzkyLDcgQEAKIDpjbGFzczpgQ29yb3V0aW5lYCAgICAgICAgIDpjbGFzczpgQXdhaXRhYmxlYCAgICAgYGBzZW5kYGAsIGBgdGhyb3dgYCAgICAgYGBjbG9zZWBgCiA6Y2xhc3M6YEFzeW5jSXRlcmFibGVgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19haXRlcl9fYGAKIDpjbGFzczpgQXN5bmNJdGVyYXRvcmAgICAgIDpjbGFzczpgQXN5bmNJdGVyYWJsZWAgYGBfX2FuZXh0X19gYCAgICAgICAgICAgYGBfX2FpdGVyX19gYAorOmNsYXNzOmBBc3luY0dlbmVyYXRvcmAgICAgOmNsYXNzOmBBc3luY0l0ZXJhdG9yYCBgYGFzZW5kYGAsIGBgYXRocm93YGAgICBgYGFjbG9zZWBgLCBgYF9fYWl0ZXJfX2BgLCBgYF9fYW5leHRfX2BgCiA9PT09PT09PT09PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogCkBAIC0xMDUsMTIgKzEwOSwyNSBAQAogICAgQUJDIGZvciBjbGFzc2VzIHRoYXQgcHJvdmlkZSB0aGUgOm1ldGg6YF9faXRlcl9fYCBtZXRob2QuCiAgICBTZWUgYWxzbyB0aGUgZGVmaW5pdGlvbiBvZiA6dGVybTpgaXRlcmFibGVgLgogCisuLiBjbGFzczo6IENvbGxlY3Rpb24KKworICAgQUJDIGZvciBzaXplZCBpdGVyYWJsZSBjb250YWluZXIgY2xhc3Nlcy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIC4uIGNsYXNzOjogSXRlcmF0b3IKIAogICAgQUJDIGZvciBjbGFzc2VzIHRoYXQgcHJvdmlkZSB0aGUgOm1ldGg6YH5pdGVyYXRvci5fX2l0ZXJfX2AgYW5kCiAgICA6bWV0aDpgfml0ZXJhdG9yLl9fbmV4dF9fYCBtZXRob2RzLiAgU2VlIGFsc28gdGhlIGRlZmluaXRpb24gb2YKICAgIDp0ZXJtOmBpdGVyYXRvcmAuCiAKKy4uIGNsYXNzOjogUmV2ZXJzaWJsZQorCisgICBBQkMgZm9yIGl0ZXJhYmxlIGNsYXNzZXMgdGhhdCBhbHNvIHByb3ZpZGUgdGhlIDptZXRoOmBfX3JldmVyc2VkX19gCisgICBtZXRob2QuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAuLiBjbGFzczo6IEdlbmVyYXRvcgogCiAgICBBQkMgZm9yIGdlbmVyYXRvciBjbGFzc2VzIHRoYXQgaW1wbGVtZW50IHRoZSBwcm90b2NvbCBkZWZpbmVkIGluCkBAIC0yMDYsNiArMjIzLDEzIEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogCisuLiBjbGFzczo6IEFzeW5jR2VuZXJhdG9yCisKKyAgIEFCQyBmb3IgYXN5bmNocm9ub3VzIGdlbmVyYXRvciBjbGFzc2VzIHRoYXQgaW1wbGVtZW50IHRoZSBwcm90b2NvbAorICAgZGVmaW5lZCBpbiA6cGVwOmA1MjVgIGFuZCA6cGVwOmA0OTJgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogCiBUaGVzZSBBQkNzIGFsbG93IHVzIHRvIGFzayBjbGFzc2VzIG9yIGluc3RhbmNlcyBpZiB0aGV5IHByb3ZpZGUKIHBhcnRpY3VsYXIgZnVuY3Rpb25hbGl0eSwgZm9yIGV4YW1wbGU6OgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29sbGVjdGlvbnMucnN0IGIvRG9jL2xpYnJhcnkvY29sbGVjdGlvbnMucnN0CmluZGV4IGQwYWE2MmUuLjlmM2Y1ZGMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NvbGxlY3Rpb25zLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jb2xsZWN0aW9ucy5yc3QKQEAgLTc2Myw3ICs3NjMsNyBAQAogc2VsZi1kb2N1bWVudGluZyBjb2RlLiAgVGhleSBjYW4gYmUgdXNlZCB3aGVyZXZlciByZWd1bGFyIHR1cGxlcyBhcmUgdXNlZCwgYW5kCiB0aGV5IGFkZCB0aGUgYWJpbGl0eSB0byBhY2Nlc3MgZmllbGRzIGJ5IG5hbWUgaW5zdGVhZCBvZiBwb3NpdGlvbiBpbmRleC4KIAotLi4gZnVuY3Rpb246OiBuYW1lZHR1cGxlKHR5cGVuYW1lLCBmaWVsZF9uYW1lcywgdmVyYm9zZT1GYWxzZSwgcmVuYW1lPUZhbHNlKQorLi4gZnVuY3Rpb246OiBuYW1lZHR1cGxlKHR5cGVuYW1lLCBmaWVsZF9uYW1lcywgKiwgdmVyYm9zZT1GYWxzZSwgcmVuYW1lPUZhbHNlLCBtb2R1bGU9Tm9uZSkKIAogICAgIFJldHVybnMgYSBuZXcgdHVwbGUgc3ViY2xhc3MgbmFtZWQgKnR5cGVuYW1lKi4gIFRoZSBuZXcgc3ViY2xhc3MgaXMgdXNlZCB0bwogICAgIGNyZWF0ZSB0dXBsZS1saWtlIG9iamVjdHMgdGhhdCBoYXZlIGZpZWxkcyBhY2Nlc3NpYmxlIGJ5IGF0dHJpYnV0ZSBsb29rdXAgYXMKQEAgLTc5MCwxMiArNzkwLDIxIEBACiAgICAgYnVpbHQuICBUaGlzIG9wdGlvbiBpcyBvdXRkYXRlZDsgaW5zdGVhZCwgaXQgaXMgc2ltcGxlciB0byBwcmludCB0aGUKICAgICA6YXR0cjpgX3NvdXJjZWAgYXR0cmlidXRlLgogCisgICAgSWYgKm1vZHVsZSogaXMgZGVmaW5lZCwgdGhlIGBgX19tb2R1bGVfX2BgIGF0dHJpYnV0ZSBvZiB0aGUgbmFtZWQgdHVwbGUgaXMKKyAgICBzZXQgdG8gdGhhdCB2YWx1ZS4KKwogICAgIE5hbWVkIHR1cGxlIGluc3RhbmNlcyBkbyBub3QgaGF2ZSBwZXItaW5zdGFuY2UgZGljdGlvbmFyaWVzLCBzbyB0aGV5IGFyZQogICAgIGxpZ2h0d2VpZ2h0IGFuZCByZXF1aXJlIG5vIG1vcmUgbWVtb3J5IHRoYW4gcmVndWxhciB0dXBsZXMuCiAKICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMQotICAgICAgICBBZGRlZCBzdXBwb3J0IGZvciAqcmVuYW1lKi4KKyAgICAgICBBZGRlZCBzdXBwb3J0IGZvciAqcmVuYW1lKi4KIAorICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICAgVGhlICp2ZXJib3NlKiBhbmQgKnJlbmFtZSogcGFyYW1ldGVycyBiZWNhbWUKKyAgICAgICA6cmVmOmBrZXl3b3JkLW9ubHkgYXJndW1lbnRzIDxrZXl3b3JkLW9ubHlfcGFyYW1ldGVyPmAuCisKKyAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgIEFkZGVkIHRoZSAqbW9kdWxlKiBwYXJhbWV0ZXIuCiAKIC4uIGRvY3Rlc3Q6OgogICAgIDpvcHRpb25zOiArTk9STUFMSVpFX1dISVRFU1BBQ0UKQEAgLTg0Niw3ICs4NTUsOSBAQAogLi4gbWV0aG9kOjogc29tZW5hbWVkdHVwbGUuX2FzZGljdCgpCiAKICAgICBSZXR1cm4gYSBuZXcgOmNsYXNzOmBPcmRlcmVkRGljdGAgd2hpY2ggbWFwcyBmaWVsZCBuYW1lcyB0byB0aGVpciBjb3JyZXNwb25kaW5nCi0gICAgdmFsdWVzOjoKKyAgICB2YWx1ZXM6CisKKyAgICAuLiBkb2N0ZXN0OjoKIAogICAgICAgICA+Pj4gcCA9IFBvaW50KHg9MTEsIHk9MjIpCiAgICAgICAgID4+PiBwLl9hc2RpY3QoKQpAQCAtOTA4LDcgKzkxOSw5IEBACiBmdW5jdGlvbmFsaXR5IHdpdGggYSBzdWJjbGFzcy4gIEhlcmUgaXMgaG93IHRvIGFkZCBhIGNhbGN1bGF0ZWQgZmllbGQgYW5kCiBhIGZpeGVkLXdpZHRoIHByaW50IGZvcm1hdDoKIAotICAgID4+PiBjbGFzcyBQb2ludChuYW1lZHR1cGxlKCdQb2ludCcsICd4IHknKSk6CisuLiBkb2N0ZXN0OjoKKworICAgID4+PiBjbGFzcyBQb2ludChuYW1lZHR1cGxlKCdQb2ludCcsIFsneCcsICd5J10pKToKICAgICAuLi4gICAgIF9fc2xvdHNfXyA9ICgpCiAgICAgLi4uICAgICBAcHJvcGVydHkKICAgICAuLi4gICAgIGRlZiBoeXBvdChzZWxmKToKQEAgLTk1OSw2ICs5NzIsMTEgQEAKICAgICAgIGNvbnN0cnVjdG9yIHRoYXQgaXMgY29udmVuaWVudCBmb3IgdXNlIGNhc2VzIHdoZXJlIG5hbWVkIHR1cGxlcyBhcmUgYmVpbmcKICAgICAgIHN1YmNsYXNzZWQuCiAKKyAgICAqIFNlZSA6bWV0aDpgdHlwZXMuU2ltcGxlTmFtZXNwYWNlYCBmb3IgYSBtdXRhYmxlIG5hbWVzcGFjZSBiYXNlZCBvbiBhbgorICAgICAgdW5kZXJseWluZyBkaWN0aW9uYXJ5IGluc3RlYWQgb2YgYSB0dXBsZS4KKworICAgICogU2VlIDptZXRoOmB0eXBpbmcuTmFtZWRUdXBsZWAgZm9yIGEgd2F5IHRvIGFkZCB0eXBlIGhpbnRzIGZvciBuYW1lZCB0dXBsZXMuCisKIAogOmNsYXNzOmBPcmRlcmVkRGljdGAgb2JqZWN0cwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtOTgwLDggKzk5OCw5IEBACiAgICAgLi4gbWV0aG9kOjogcG9waXRlbShsYXN0PVRydWUpCiAKICAgICAgICAgVGhlIDptZXRoOmBwb3BpdGVtYCBtZXRob2QgZm9yIG9yZGVyZWQgZGljdGlvbmFyaWVzIHJldHVybnMgYW5kIHJlbW92ZXMgYQotICAgICAgICAoa2V5LCB2YWx1ZSkgcGFpci4gIFRoZSBwYWlycyBhcmUgcmV0dXJuZWQgaW4gTElGTyBvcmRlciBpZiAqbGFzdCogaXMgdHJ1ZQotICAgICAgICBvciBGSUZPIG9yZGVyIGlmIGZhbHNlLgorICAgICAgICAoa2V5LCB2YWx1ZSkgcGFpci4gIFRoZSBwYWlycyBhcmUgcmV0dXJuZWQgaW4KKyAgICAgICAgOmFiYnI6YExJRk8gKGxhc3QtaW4sIGZpcnN0LW91dClgIG9yZGVyIGlmICpsYXN0KiBpcyB0cnVlCisgICAgICAgIG9yIDphYmJyOmBGSUZPIChmaXJzdC1pbiwgZmlyc3Qtb3V0KWAgb3JkZXIgaWYgZmFsc2UuCiAKICAgICAuLiBtZXRob2Q6OiBtb3ZlX3RvX2VuZChrZXksIGxhc3Q9VHJ1ZSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29tcGlsZWFsbC5yc3QgYi9Eb2MvbGlicmFyeS9jb21waWxlYWxsLnJzdAppbmRleCA1MTFjNTgxLi5jMWFmMDJiIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jb21waWxlYWxsLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jb21waWxlYWxsLnJzdApAQCAtMTAyLDcgKzEwMiw4IEBACiAuLiBmdW5jdGlvbjo6IGNvbXBpbGVfZGlyKGRpciwgbWF4bGV2ZWxzPTEwLCBkZGlyPU5vbmUsIGZvcmNlPUZhbHNlLCByeD1Ob25lLCBxdWlldD0wLCBsZWdhY3k9RmFsc2UsIG9wdGltaXplPS0xLCB3b3JrZXJzPTEpCiAKICAgIFJlY3Vyc2l2ZWx5IGRlc2NlbmQgdGhlIGRpcmVjdG9yeSB0cmVlIG5hbWVkIGJ5ICpkaXIqLCBjb21waWxpbmcgYWxsIDpmaWxlOmAucHlgCi0gICBmaWxlcyBhbG9uZyB0aGUgd2F5LgorICAgZmlsZXMgYWxvbmcgdGhlIHdheS4gUmV0dXJuIGEgdHJ1ZSB2YWx1ZSBpZiBhbGwgdGhlIGZpbGVzIGNvbXBpbGVkIHN1Y2Nlc3NmdWxseSwKKyAgIGFuZCBhIGZhbHNlIHZhbHVlIG90aGVyd2lzZS4KIAogICAgVGhlICptYXhsZXZlbHMqIHBhcmFtZXRlciBpcyB1c2VkIHRvIGxpbWl0IHRoZSBkZXB0aCBvZiB0aGUgcmVjdXJzaW9uOyBpdAogICAgZGVmYXVsdHMgdG8gYGAxMGBgLgpAQCAtMTUyLDkgKzE1MywxMyBAQAogICAgICAgVGhlICpsZWdhY3kqIHBhcmFtZXRlciBvbmx5IHdyaXRlcyBvdXQgYGAucHljYGAgZmlsZXMsIG5vdCBgYC5weW9gYCBmaWxlcwogICAgICAgbm8gbWF0dGVyIHdoYXQgdGhlIHZhbHVlIG9mICpvcHRpbWl6ZSogaXMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAuLiBmdW5jdGlvbjo6IGNvbXBpbGVfZmlsZShmdWxsbmFtZSwgZGRpcj1Ob25lLCBmb3JjZT1GYWxzZSwgcng9Tm9uZSwgcXVpZXQ9MCwgbGVnYWN5PUZhbHNlLCBvcHRpbWl6ZT0tMSkKIAotICAgQ29tcGlsZSB0aGUgZmlsZSB3aXRoIHBhdGggKmZ1bGxuYW1lKi4KKyAgIENvbXBpbGUgdGhlIGZpbGUgd2l0aCBwYXRoICpmdWxsbmFtZSouIFJldHVybiBhIHRydWUgdmFsdWUgaWYgdGhlIGZpbGUKKyAgIGNvbXBpbGVkIHN1Y2Nlc3NmdWxseSwgYW5kIGEgZmFsc2UgdmFsdWUgb3RoZXJ3aXNlLgogCiAgICBJZiAqZGRpciogaXMgZ2l2ZW4sIGl0IGlzIHByZXBlbmRlZCB0byB0aGUgcGF0aCB0byB0aGUgZmlsZSBiZWluZyBjb21waWxlZAogICAgZm9yIHVzZSBpbiBjb21waWxhdGlvbiB0aW1lIHRyYWNlYmFja3MsIGFuZCBpcyBhbHNvIGNvbXBpbGVkIGluIHRvIHRoZQpAQCAtMTkwLDggKzE5NSwxMCBAQAogCiAuLiBmdW5jdGlvbjo6IGNvbXBpbGVfcGF0aChza2lwX2N1cmRpcj1UcnVlLCBtYXhsZXZlbHM9MCwgZm9yY2U9RmFsc2UsIHF1aWV0PTAsIGxlZ2FjeT1GYWxzZSwgb3B0aW1pemU9LTEpCiAKLSAgIEJ5dGUtY29tcGlsZSBhbGwgdGhlIDpmaWxlOmAucHlgIGZpbGVzIGZvdW5kIGFsb25nIGBgc3lzLnBhdGhgYC4gSWYKLSAgICpza2lwX2N1cmRpciogaXMgdHJ1ZSAodGhlIGRlZmF1bHQpLCB0aGUgY3VycmVudCBkaXJlY3RvcnkgaXMgbm90IGluY2x1ZGVkCisgICBCeXRlLWNvbXBpbGUgYWxsIHRoZSA6ZmlsZTpgLnB5YCBmaWxlcyBmb3VuZCBhbG9uZyBgYHN5cy5wYXRoYGAuIFJldHVybiBhCisgICB0cnVlIHZhbHVlIGlmIGFsbCB0aGUgZmlsZXMgY29tcGlsZWQgc3VjY2Vzc2Z1bGx5LCBhbmQgYSBmYWxzZSB2YWx1ZSBvdGhlcndpc2UuCisKKyAgIElmICpza2lwX2N1cmRpciogaXMgdHJ1ZSAodGhlIGRlZmF1bHQpLCB0aGUgY3VycmVudCBkaXJlY3RvcnkgaXMgbm90IGluY2x1ZGVkCiAgICBpbiB0aGUgc2VhcmNoLiAgQWxsIG90aGVyIHBhcmFtZXRlcnMgYXJlIHBhc3NlZCB0byB0aGUgOmZ1bmM6YGNvbXBpbGVfZGlyYAogICAgZnVuY3Rpb24uICBOb3RlIHRoYXQgdW5saWtlIHRoZSBvdGhlciBjb21waWxlIGZ1bmN0aW9ucywgYGBtYXhsZXZlbHNgYAogICAgZGVmYXVsdHMgdG8gYGAwYGAuCkBAIC0yMTcsNiArMjI0LDkgQEAKICAgIGltcG9ydCByZQogICAgY29tcGlsZWFsbC5jb21waWxlX2RpcignTGliLycsIHJ4PXJlLmNvbXBpbGUocidbL1xcXVsuXXN2bicpLCBmb3JjZT1UcnVlKQogCisgICAjIHBhdGhsaWIuUGF0aCBvYmplY3RzIGNhbiBhbHNvIGJlIHVzZWQuCisgICBpbXBvcnQgcGF0aGxpYgorICAgY29tcGlsZWFsbC5jb21waWxlX2RpcihwYXRobGliLlBhdGgoJ0xpYi8nKSwgZm9yY2U9VHJ1ZSkKIAogLi4gc2VlYWxzbzo6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NvbmN1cnJlbnQuZnV0dXJlcy5yc3QgYi9Eb2MvbGlicmFyeS9jb25jdXJyZW50LmZ1dHVyZXMucnN0CmluZGV4IGFlMDNmNGIuLmQ4NTU3NmIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NvbmN1cnJlbnQuZnV0dXJlcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY29uY3VycmVudC5mdXR1cmVzLnJzdApAQCAtMTI0LDcgKzEyNCw3IEBACiAgICBleGVjdXRvci5zdWJtaXQod2FpdF9vbl9mdXR1cmUpCiAKIAotLi4gY2xhc3M6OiBUaHJlYWRQb29sRXhlY3V0b3IobWF4X3dvcmtlcnM9Tm9uZSkKKy4uIGNsYXNzOjogVGhyZWFkUG9vbEV4ZWN1dG9yKG1heF93b3JrZXJzPU5vbmUsIHRocmVhZF9uYW1lX3ByZWZpeD0nJykKIAogICAgQW4gOmNsYXNzOmBFeGVjdXRvcmAgc3ViY2xhc3MgdGhhdCB1c2VzIGEgcG9vbCBvZiBhdCBtb3N0ICptYXhfd29ya2VycyoKICAgIHRocmVhZHMgdG8gZXhlY3V0ZSBjYWxscyBhc3luY2hyb25vdXNseS4KQEAgLTEzNyw2ICsxMzcsMTAgQEAKICAgICAgIHNob3VsZCBiZSBoaWdoZXIgdGhhbiB0aGUgbnVtYmVyIG9mIHdvcmtlcnMKICAgICAgIGZvciA6Y2xhc3M6YFByb2Nlc3NQb29sRXhlY3V0b3JgLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKyAgICAgIFRoZSAqdGhyZWFkX25hbWVfcHJlZml4KiBhcmd1bWVudCB3YXMgYWRkZWQgdG8gYWxsb3cgdXNlcnMgdG8KKyAgICAgIGNvbnRyb2wgdGhlIHRocmVhZGluZy5UaHJlYWQgbmFtZXMgZm9yIHdvcmtlciB0aHJlYWRzIGNyZWF0ZWQgYnkKKyAgICAgIHRoZSBwb29sIGZvciBlYXNpZXIgZGVidWdnaW5nLgogCiAuLiBfdGhyZWFkcG9vbGV4ZWN1dG9yLWV4YW1wbGU6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NvbnN0YW50cy5yc3QgYi9Eb2MvbGlicmFyeS9jb25zdGFudHMucnN0CmluZGV4IGQ1YTBmMDkuLmYwNzQyY2UgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NvbnN0YW50cy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY29uc3RhbnRzLnJzdApAQCAtMzMsMTYgKzMzLDIyIEBACiAgICAoZS5nLiA6bWV0aDpgX19pbXVsX19gLCA6bWV0aDpgX19pYW5kX19gLCBldGMuKSBmb3IgdGhlIHNhbWUgcHVycG9zZS4KICAgIEl0cyB0cnV0aCB2YWx1ZSBpcyB0cnVlLgogCi0uLiBub3RlOjoKKyAgIC4uIG5vdGU6OgogCi0gICBXaGVuIGBgTm90SW1wbGVtZW50ZWRgYCBpcyByZXR1cm5lZCwgdGhlIGludGVycHJldGVyIHdpbGwgdGhlbiB0cnkgdGhlCi0gICByZWZsZWN0ZWQgb3BlcmF0aW9uIG9uIHRoZSBvdGhlciB0eXBlLCBvciBzb21lIG90aGVyIGZhbGxiYWNrLCBkZXBlbmRpbmcKLSAgIG9uIHRoZSBvcGVyYXRvci4gIElmIGFsbCBhdHRlbXB0ZWQgb3BlcmF0aW9ucyByZXR1cm4gYGBOb3RJbXBsZW1lbnRlZGBgLCB0aGUKLSAgIGludGVycHJldGVyIHdpbGwgcmFpc2UgYW4gYXBwcm9wcmlhdGUgZXhjZXB0aW9uLgorICAgICAgV2hlbiBhIGJpbmFyeSAob3IgaW4tcGxhY2UpIG1ldGhvZCByZXR1cm5zIGBgTm90SW1wbGVtZW50ZWRgYCB0aGUKKyAgICAgIGludGVycHJldGVyIHdpbGwgdHJ5IHRoZSByZWZsZWN0ZWQgb3BlcmF0aW9uIG9uIHRoZSBvdGhlciB0eXBlIChvciBzb21lCisgICAgICBvdGhlciBmYWxsYmFjaywgZGVwZW5kaW5nIG9uIHRoZSBvcGVyYXRvcikuICBJZiBhbGwgYXR0ZW1wdHMgcmV0dXJuCisgICAgICBgYE5vdEltcGxlbWVudGVkYGAsIHRoZSBpbnRlcnByZXRlciB3aWxsIHJhaXNlIGFuIGFwcHJvcHJpYXRlIGV4Y2VwdGlvbi4KKyAgICAgIEluY29ycmVjdGx5IHJldHVybmluZyBgYE5vdEltcGxlbWVudGVkYGAgd2lsbCByZXN1bHQgaW4gYSBtaXNsZWFkaW5nCisgICAgICBlcnJvciBtZXNzYWdlIG9yIHRoZSBgYE5vdEltcGxlbWVudGVkYGAgdmFsdWUgYmVpbmcgcmV0dXJuZWQgdG8gUHl0aG9uIGNvZGUuCiAKLSAgIFNlZQotICAgOnJlZjpgaW1wbGVtZW50aW5nLXRoZS1hcml0aG1ldGljLW9wZXJhdGlvbnNgCi0gICBmb3IgbW9yZSBkZXRhaWxzLgorICAgICAgU2VlIDpyZWY6YGltcGxlbWVudGluZy10aGUtYXJpdGhtZXRpYy1vcGVyYXRpb25zYCBmb3IgZXhhbXBsZXMuCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBgYE5vdEltcGxlbnRlZEVycm9yYGAgYW5kIGBgTm90SW1wbGVtZW50ZWRgYCBhcmUgbm90IGludGVyY2hhbmdlYWJsZSwKKyAgICAgIGV2ZW4gdGhvdWdoIHRoZXkgaGF2ZSBzaW1pbGFyIG5hbWVzIGFuZCBwdXJwb3Nlcy4KKyAgICAgIFNlZSA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYCBmb3IgZGV0YWlscyBvbiB3aGVuIHRvIHVzZSBpdC4KIAogCiAuLiBkYXRhOjogRWxsaXBzaXMKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NvbnRleHRsaWIucnN0IGIvRG9jL2xpYnJhcnkvY29udGV4dGxpYi5yc3QKaW5kZXggY2Y4NWZjZC4uZGQzNGM5NiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY29udGV4dGxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY29udGV4dGxpYi5yc3QKQEAgLTE4LDYgKzE4LDE4IEBACiAKIEZ1bmN0aW9ucyBhbmQgY2xhc3NlcyBwcm92aWRlZDoKIAorLi4gY2xhc3M6OiBBYnN0cmFjdENvbnRleHRNYW5hZ2VyCisKKyAgIEFuIDp0ZXJtOmBhYnN0cmFjdCBiYXNlIGNsYXNzYCBmb3IgY2xhc3NlcyB0aGF0IGltcGxlbWVudAorICAgOm1ldGg6YG9iamVjdC5fX2VudGVyX19gIGFuZCA6bWV0aDpgb2JqZWN0Ll9fZXhpdF9fYC4gQSBkZWZhdWx0CisgICBpbXBsZW1lbnRhdGlvbiBmb3IgOm1ldGg6YG9iamVjdC5fX2VudGVyX19gIGlzIHByb3ZpZGVkIHdoaWNoIHJldHVybnMKKyAgIGBgc2VsZmBgIHdoaWxlIDptZXRoOmBvYmplY3QuX19leGl0X19gIGlzIGFuIGFic3RyYWN0IG1ldGhvZCB3aGljaCBieSBkZWZhdWx0CisgICByZXR1cm5zIGBgTm9uZWBgLiBTZWUgYWxzbyB0aGUgZGVmaW5pdGlvbiBvZiA6cmVmOmB0eXBlY29udGV4dG1hbmFnZXJgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCisKIC4uIGRlY29yYXRvcjo6IGNvbnRleHRtYW5hZ2VyCiAKICAgIFRoaXMgZnVuY3Rpb24gaXMgYSA6dGVybTpgZGVjb3JhdG9yYCB0aGF0IGNhbiBiZSB1c2VkIHRvIGRlZmluZSBhIGZhY3RvcnkKQEAgLTQ0Nyw5ICs0NTksOSBAQAogYWNxdWlzaXRpb24gYW5kIHJlbGVhc2UgZnVuY3Rpb25zLCBhbG9uZyB3aXRoIGFuIG9wdGlvbmFsIHZhbGlkYXRpb24gZnVuY3Rpb24sCiBhbmQgbWFwcyB0aGVtIHRvIHRoZSBjb250ZXh0IG1hbmFnZW1lbnQgcHJvdG9jb2w6OgogCi0gICBmcm9tIGNvbnRleHRsaWIgaW1wb3J0IGNvbnRleHRtYW5hZ2VyLCBFeGl0U3RhY2sKKyAgIGZyb20gY29udGV4dGxpYiBpbXBvcnQgY29udGV4dG1hbmFnZXIsIEFic3RyYWN0Q29udGV4dE1hbmFnZXIsIEV4aXRTdGFjawogCi0gICBjbGFzcyBSZXNvdXJjZU1hbmFnZXI6CisgICBjbGFzcyBSZXNvdXJjZU1hbmFnZXIoQWJzdHJhY3RDb250ZXh0TWFuYWdlcik6CiAKICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgYWNxdWlyZV9yZXNvdXJjZSwgcmVsZWFzZV9yZXNvdXJjZSwgY2hlY2tfcmVzb3VyY2Vfb2s9Tm9uZSk6CiAgICAgICAgICAgIHNlbGYuYWNxdWlyZV9yZXNvdXJjZSA9IGFjcXVpcmVfcmVzb3VyY2UKQEAgLTU3OCwxMCArNTkwLDEwIEBACiAgICAgICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCiAKICAgICAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKLSAgICAgICAgICAgIGxvZ2dpbmcuaW5mbygnRW50ZXJpbmc6IHt9Jy5mb3JtYXQoc2VsZi5uYW1lKSkKKyAgICAgICAgICAgIGxvZ2dpbmcuaW5mbygnRW50ZXJpbmc6ICVzJywgc2VsZi5uYW1lKQogCiAgICAgICAgIGRlZiBfX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjLCBleGNfdGIpOgotICAgICAgICAgICAgbG9nZ2luZy5pbmZvKCdFeGl0aW5nOiB7fScuZm9ybWF0KHNlbGYubmFtZSkpCisgICAgICAgICAgICBsb2dnaW5nLmluZm8oJ0V4aXRpbmc6ICVzJywgc2VsZi5uYW1lKQogCiBJbnN0YW5jZXMgb2YgdGhpcyBjbGFzcyBjYW4gYmUgdXNlZCBhcyBib3RoIGEgY29udGV4dCBtYW5hZ2VyOjoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY3J5cHQucnN0IGIvRG9jL2xpYnJhcnkvY3J5cHQucnN0CmluZGV4IGEyMWMxZTcuLmRiZDQyNzQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NyeXB0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9jcnlwdC5yc3QKQEAgLTY4LDcgKzY4LDcgQEAKIAogICAgQSBsaXN0IG9mIGF2YWlsYWJsZSBwYXNzd29yZCBoYXNoaW5nIGFsZ29yaXRobXMsIGFzCiAgICBgYGNyeXB0Lk1FVEhPRF8qYGAgb2JqZWN0cy4gIFRoaXMgbGlzdCBpcyBzb3J0ZWQgZnJvbSBzdHJvbmdlc3QgdG8KLSAgIHdlYWtlc3QsIGFuZCBpcyBndWFyYW50ZWVkIHRvIGhhdmUgYXQgbGVhc3QgYGBjcnlwdC5NRVRIT0RfQ1JZUFRgYC4KKyAgIHdlYWtlc3QuCiAKIAogTW9kdWxlIEZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY3J5cHRvLnJzdCBiL0RvYy9saWJyYXJ5L2NyeXB0by5yc3QKaW5kZXggMWVkZGZkYy4uOGViNGI4MSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY3J5cHRvLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jcnlwdG8ucnN0CkBAIC0xNSw0ICsxNSw2IEBACiAuLiB0b2N0cmVlOjoKIAogICAgaGFzaGxpYi5yc3QKKyAgIGhhc2hsaWItYmxha2UyLnJzdAogICAgaG1hYy5yc3QKKyAgIHNlY3JldHMucnN0CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jc3YucnN0IGIvRG9jL2xpYnJhcnkvY3N2LnJzdAppbmRleCA3ZmI0ZmM4Li5mOTE2NTcyIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jc3YucnN0CisrKyBiL0RvYy9saWJyYXJ5L2Nzdi5yc3QKQEAgLTE0OSwxOCArMTQ5LDI1IEBACiAuLiBjbGFzczo6IERpY3RSZWFkZXIoY3N2ZmlsZSwgZmllbGRuYW1lcz1Ob25lLCByZXN0a2V5PU5vbmUsIHJlc3R2YWw9Tm9uZSwgXAogICAgICAgICAgICAgICAgICAgICAgIGRpYWxlY3Q9J2V4Y2VsJywgKmFyZ3MsICoqa3dkcykKIAotICAgQ3JlYXRlIGFuIG9iamVjdCB3aGljaCBvcGVyYXRlcyBsaWtlIGEgcmVndWxhciByZWFkZXIgYnV0IG1hcHMgdGhlCi0gICBpbmZvcm1hdGlvbiByZWFkIGludG8gYSBkaWN0IHdob3NlIGtleXMgYXJlIGdpdmVuIGJ5IHRoZSBvcHRpb25hbAotICAgKmZpZWxkbmFtZXMqIHBhcmFtZXRlci4gIFRoZSAqZmllbGRuYW1lcyogcGFyYW1ldGVyIGlzIGEgOm1vZDpgc2VxdWVuY2UKLSAgIDxjb2xsZWN0aW9ucy5hYmM+YCB3aG9zZSBlbGVtZW50cyBhcmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBmaWVsZHMgb2YgdGhlCi0gICBpbnB1dCBkYXRhIGluIG9yZGVyLiBUaGVzZSBlbGVtZW50cyBiZWNvbWUgdGhlIGtleXMgb2YgdGhlIHJlc3VsdGluZwotICAgZGljdGlvbmFyeS4gIElmIHRoZSAqZmllbGRuYW1lcyogcGFyYW1ldGVyIGlzIG9taXR0ZWQsIHRoZSB2YWx1ZXMgaW4gdGhlCi0gICBmaXJzdCByb3cgb2YgdGhlICpjc3ZmaWxlKiB3aWxsIGJlIHVzZWQgYXMgdGhlIGZpZWxkbmFtZXMuICBJZiB0aGUgcm93IHJlYWQKLSAgIGhhcyBtb3JlIGZpZWxkcyB0aGFuIHRoZSBmaWVsZG5hbWVzIHNlcXVlbmNlLCB0aGUgcmVtYWluaW5nIGRhdGEgaXMgYWRkZWQgYXMKLSAgIGEgc2VxdWVuY2Uga2V5ZWQgYnkgdGhlIHZhbHVlIG9mICpyZXN0a2V5Ki4gIElmIHRoZSByb3cgcmVhZCBoYXMgZmV3ZXIKLSAgIGZpZWxkcyB0aGFuIHRoZSBmaWVsZG5hbWVzIHNlcXVlbmNlLCB0aGUgcmVtYWluaW5nIGtleXMgdGFrZSB0aGUgdmFsdWUgb2YKLSAgIHRoZSBvcHRpb25hbCAqcmVzdHZhbCogcGFyYW1ldGVyLiAgQW55IG90aGVyIG9wdGlvbmFsIG9yIGtleXdvcmQgYXJndW1lbnRzCi0gICBhcmUgcGFzc2VkIHRvIHRoZSB1bmRlcmx5aW5nIDpjbGFzczpgcmVhZGVyYCBpbnN0YW5jZS4KKyAgIENyZWF0ZSBhbiBvYmplY3QgdGhhdCBvcGVyYXRlcyBsaWtlIGEgcmVndWxhciByZWFkZXIgYnV0IG1hcHMgdGhlCisgICBpbmZvcm1hdGlvbiBpbiBlYWNoIHJvdyB0byBhbiA6bW9kOmBPcmRlcmVkRGljdCA8Y29sbGVjdGlvbnMuT3JkZXJlZERpY3Q+YAorICAgd2hvc2Uga2V5cyBhcmUgZ2l2ZW4gYnkgdGhlIG9wdGlvbmFsICpmaWVsZG5hbWVzKiBwYXJhbWV0ZXIuCisKKyAgIFRoZSAqZmllbGRuYW1lcyogcGFyYW1ldGVyIGlzIGEgOnRlcm06YHNlcXVlbmNlYC4gIElmICpmaWVsZG5hbWVzKiBpcworICAgb21pdHRlZCwgdGhlIHZhbHVlcyBpbiB0aGUgZmlyc3Qgcm93IG9mIHRoZSAqY3N2ZmlsZSogd2lsbCBiZSB1c2VkIGFzIHRoZQorICAgZmllbGRuYW1lcy4gIFJlZ2FyZGxlc3Mgb2YgaG93IHRoZSBmaWVsZG5hbWVzIGFyZSBkZXRlcm1pbmVkLCB0aGUgb3JkZXJlZAorICAgZGljdGlvbmFyeSBwcmVzZXJ2ZXMgdGhlaXIgb3JpZ2luYWwgb3JkZXJpbmcuCisKKyAgIElmIGEgcm93IGhhcyBtb3JlIGZpZWxkcyB0aGFuIGZpZWxkbmFtZXMsIHRoZSByZW1haW5pbmcgZGF0YSBpcyBwdXQgaW4gYQorICAgbGlzdCBhbmQgc3RvcmVkIHdpdGggdGhlIGZpZWxkbmFtZSBzcGVjaWZpZWQgYnkgKnJlc3RrZXkqICh3aGljaCBkZWZhdWx0cworICAgdG8gYGBOb25lYGApLiAgSWYgYSBub24tYmxhbmsgcm93IGhhcyBmZXdlciBmaWVsZHMgdGhhbiBmaWVsZG5hbWVzLCB0aGUKKyAgIG1pc3NpbmcgdmFsdWVzIGFyZSBmaWxsZWQtaW4gd2l0aCBgYE5vbmVgYC4KKworICAgQWxsIG90aGVyIG9wdGlvbmFsIG9yIGtleXdvcmQgYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gdGhlIHVuZGVybHlpbmcKKyAgIDpjbGFzczpgcmVhZGVyYCBpbnN0YW5jZS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFJldHVybmVkIHJvd3MgYXJlIG5vdyBvZiB0eXBlIDpjbGFzczpgT3JkZXJlZERpY3RgLgogCiAgICBBIHNob3J0IHVzYWdlIGV4YW1wbGU6OgogCkBAIC0xNzAsOSArMTc3LDExIEBACiAgICAgICAgLi4uICAgICBmb3Igcm93IGluIHJlYWRlcjoKICAgICAgICAuLi4gICAgICAgICBwcmludChyb3dbJ2ZpcnN0X25hbWUnXSwgcm93WydsYXN0X25hbWUnXSkKICAgICAgICAuLi4KLSAgICAgICBCYWtlZCBCZWFucwotICAgICAgIExvdmVseSBTcGFtCi0gICAgICAgV29uZGVyZnVsIFNwYW0KKyAgICAgICBFcmljIElkbGUKKyAgICAgICBKb2huIENsZWVzZQorCisgICAgICAgPj4+IHByaW50KHJvdykKKyAgICAgICBPcmRlcmVkRGljdChbKCdmaXJzdF9uYW1lJywgJ0pvaG4nKSwgKCdsYXN0X25hbWUnLCAnQ2xlZXNlJyldKQogCiAKIC4uIGNsYXNzOjogRGljdFdyaXRlcihjc3ZmaWxlLCBmaWVsZG5hbWVzLCByZXN0dmFsPScnLCBleHRyYXNhY3Rpb249J3JhaXNlJywgXApAQCAtMTg2LDEwICsxOTUsMTIgQEAKICAgIHdyaXR0ZW4gaWYgdGhlIGRpY3Rpb25hcnkgaXMgbWlzc2luZyBhIGtleSBpbiAqZmllbGRuYW1lcyouICBJZiB0aGUKICAgIGRpY3Rpb25hcnkgcGFzc2VkIHRvIHRoZSA6bWV0aDpgd3JpdGVyb3dgIG1ldGhvZCBjb250YWlucyBhIGtleSBub3QgZm91bmQgaW4KICAgICpmaWVsZG5hbWVzKiwgdGhlIG9wdGlvbmFsICpleHRyYXNhY3Rpb24qIHBhcmFtZXRlciBpbmRpY2F0ZXMgd2hhdCBhY3Rpb24gdG8KLSAgIHRha2UuICBJZiBpdCBpcyBzZXQgdG8gYGAncmFpc2UnYGAgYSA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQuICBJZiBpdCBpcwotICAgc2V0IHRvIGBgJ2lnbm9yZSdgYCwgZXh0cmEgdmFsdWVzIGluIHRoZSBkaWN0aW9uYXJ5IGFyZSBpZ25vcmVkLiAgQW55IG90aGVyCi0gICBvcHRpb25hbCBvciBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgcGFzc2VkIHRvIHRoZSB1bmRlcmx5aW5nIDpjbGFzczpgd3JpdGVyYAotICAgaW5zdGFuY2UuCisgICB0YWtlLgorICAgSWYgaXQgaXMgc2V0IHRvIGBgJ3JhaXNlJ2BgLCB0aGUgZGVmYXVsdCB2YWx1ZSwgYSA6ZXhjOmBWYWx1ZUVycm9yYAorICAgaXMgcmFpc2VkLgorICAgSWYgaXQgaXMgc2V0IHRvIGBgJ2lnbm9yZSdgYCwgZXh0cmEgdmFsdWVzIGluIHRoZSBkaWN0aW9uYXJ5IGFyZSBpZ25vcmVkLgorICAgQW55IG90aGVyIG9wdGlvbmFsIG9yIGtleXdvcmQgYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gdGhlIHVuZGVybHlpbmcKKyAgIDpjbGFzczpgd3JpdGVyYCBpbnN0YW5jZS4KIAogICAgTm90ZSB0aGF0IHVubGlrZSB0aGUgOmNsYXNzOmBEaWN0UmVhZGVyYCBjbGFzcywgdGhlICpmaWVsZG5hbWVzKiBwYXJhbWV0ZXIKICAgIG9mIHRoZSA6Y2xhc3M6YERpY3RXcml0ZXJgIGlzIG5vdCBvcHRpb25hbC4gIFNpbmNlIFB5dGhvbidzIDpjbGFzczpgZGljdGAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2N0eXBlcy5yc3QgYi9Eb2MvbGlicmFyeS9jdHlwZXMucnN0CmluZGV4IGIyNWZiYmIuLjM4NDA5MzUgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2N0eXBlcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY3R5cGVzLnJzdApAQCAtMTIzOSw5ICsxMjM5LDEwIEBACiBjb21waWxpbmcvbGlua2luZyBhIHByb2dyYW0sIGFuZCB3aGVuIHRoZSBwcm9ncmFtIGlzIHJ1bi4KIAogVGhlIHB1cnBvc2Ugb2YgdGhlIDpmdW5jOmBmaW5kX2xpYnJhcnlgIGZ1bmN0aW9uIGlzIHRvIGxvY2F0ZSBhIGxpYnJhcnkgaW4gYSB3YXkKLXNpbWlsYXIgdG8gd2hhdCB0aGUgY29tcGlsZXIgZG9lcyAob24gcGxhdGZvcm1zIHdpdGggc2V2ZXJhbCB2ZXJzaW9ucyBvZiBhCi1zaGFyZWQgbGlicmFyeSB0aGUgbW9zdCByZWNlbnQgc2hvdWxkIGJlIGxvYWRlZCksIHdoaWxlIHRoZSBjdHlwZXMgbGlicmFyeQotbG9hZGVycyBhY3QgbGlrZSB3aGVuIGEgcHJvZ3JhbSBpcyBydW4sIGFuZCBjYWxsIHRoZSBydW50aW1lIGxvYWRlciBkaXJlY3RseS4KK3NpbWlsYXIgdG8gd2hhdCB0aGUgY29tcGlsZXIgb3IgcnVudGltZSBsb2FkZXIgZG9lcyAob24gcGxhdGZvcm1zIHdpdGggc2V2ZXJhbAordmVyc2lvbnMgb2YgYSBzaGFyZWQgbGlicmFyeSB0aGUgbW9zdCByZWNlbnQgc2hvdWxkIGJlIGxvYWRlZCksIHdoaWxlIHRoZSBjdHlwZXMKK2xpYnJhcnkgbG9hZGVycyBhY3QgbGlrZSB3aGVuIGEgcHJvZ3JhbSBpcyBydW4sIGFuZCBjYWxsIHRoZSBydW50aW1lIGxvYWRlcgorZGlyZWN0bHkuCiAKIFRoZSA6bW9kOmBjdHlwZXMudXRpbGAgbW9kdWxlIHByb3ZpZGVzIGEgZnVuY3Rpb24gd2hpY2ggY2FuIGhlbHAgdG8gZGV0ZXJtaW5lCiB0aGUgbGlicmFyeSB0byBsb2FkLgpAQCAtMTI1OSw4ICsxMjYwLDE0IEBACiBUaGUgZXhhY3QgZnVuY3Rpb25hbGl0eSBpcyBzeXN0ZW0gZGVwZW5kZW50LgogCiBPbiBMaW51eCwgOmZ1bmM6YGZpbmRfbGlicmFyeWAgdHJpZXMgdG8gcnVuIGV4dGVybmFsIHByb2dyYW1zCi0oYGAvc2Jpbi9sZGNvbmZpZ2BgLCBgYGdjY2BgLCBhbmQgYGBvYmpkdW1wYGApIHRvIGZpbmQgdGhlIGxpYnJhcnkgZmlsZS4gIEl0Ci1yZXR1cm5zIHRoZSBmaWxlbmFtZSBvZiB0aGUgbGlicmFyeSBmaWxlLiAgSGVyZSBhcmUgc29tZSBleGFtcGxlczo6CisoYGAvc2Jpbi9sZGNvbmZpZ2BgLCBgYGdjY2BgLCBgYG9iamR1bXBgYCBhbmQgYGBsZGBgKSB0byBmaW5kIHRoZSBsaWJyYXJ5IGZpbGUuCitJdCByZXR1cm5zIHRoZSBmaWxlbmFtZSBvZiB0aGUgbGlicmFyeSBmaWxlLgorCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgT24gTGludXgsIHRoZSB2YWx1ZSBvZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgYGBMRF9MSUJSQVJZX1BBVEhgYCBpcyB1c2VkCisgICB3aGVuIHNlYXJjaGluZyBmb3IgbGlicmFyaWVzLCBpZiBhIGxpYnJhcnkgY2Fubm90IGJlIGZvdW5kIGJ5IGFueSBvdGhlciBtZWFucy4KKworSGVyZSBhcmUgc29tZSBleGFtcGxlczo6CiAKICAgID4+PiBmcm9tIGN0eXBlcy51dGlsIGltcG9ydCBmaW5kX2xpYnJhcnkKICAgID4+PiBmaW5kX2xpYnJhcnkoIm0iKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZGF0ZXRpbWUucnN0IGIvRG9jL2xpYnJhcnkvZGF0ZXRpbWUucnN0CmluZGV4IGI0MmUzOGQuLjlkYWIzNTMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2RhdGV0aW1lLnJzdAorKysgYi9Eb2MvbGlicmFyeS9kYXRldGltZS5yc3QKQEAgLTUyMiw3ICs1MjIsNyBAQAogCiBJbnN0YW5jZSBtZXRob2RzOgogCi0uLiBtZXRob2Q6OiBkYXRlLnJlcGxhY2UoeWVhciwgbW9udGgsIGRheSkKKy4uIG1ldGhvZDo6IGRhdGUucmVwbGFjZSh5ZWFyPXNlbGYueWVhciwgbW9udGg9c2VsZi5tb250aCwgZGF5PXNlbGYuZGF5KQogCiAgICBSZXR1cm4gYSBkYXRlIHdpdGggdGhlIHNhbWUgdmFsdWUsIGV4Y2VwdCBmb3IgdGhvc2UgcGFyYW1ldGVycyBnaXZlbiBuZXcKICAgIHZhbHVlcyBieSB3aGljaGV2ZXIga2V5d29yZCBhcmd1bWVudHMgYXJlIHNwZWNpZmllZC4gIEZvciBleGFtcGxlLCBpZiBgYGQgPT0KQEAgLTYxMCw3ICs2MTAsOCBAQAogLi4gbWV0aG9kOjogZGF0ZS5fX2Zvcm1hdF9fKGZvcm1hdCkKIAogICAgU2FtZSBhcyA6bWV0aDpgLmRhdGUuc3RyZnRpbWVgLiBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHNwZWNpZnkgYSBmb3JtYXQKLSAgIHN0cmluZyBmb3IgYSA6Y2xhc3M6YC5kYXRlYCBvYmplY3Qgd2hlbiB1c2luZyA6bWV0aDpgc3RyLmZvcm1hdGAuIEZvciBhCisgICBzdHJpbmcgZm9yIGEgOmNsYXNzOmAuZGF0ZWAgb2JqZWN0IGluIDpyZWY6YGZvcm1hdHRlZCBzdHJpbmcKKyAgIGxpdGVyYWxzIDxmLXN0cmluZ3M+YCBhbmQgd2hlbiB1c2luZyA6bWV0aDpgc3RyLmZvcm1hdGAuIEZvciBhCiAgICBjb21wbGV0ZSBsaXN0IG9mIGZvcm1hdHRpbmcgZGlyZWN0aXZlcywgc2VlCiAgICA6cmVmOmBzdHJmdGltZS1zdHJwdGltZS1iZWhhdmlvcmAuCiAKQEAgLTY4MiwyMiArNjgzLDI2IEBACiAKIENvbnN0cnVjdG9yOgogCi0uLiBjbGFzczo6IGRhdGV0aW1lKHllYXIsIG1vbnRoLCBkYXksIGhvdXI9MCwgbWludXRlPTAsIHNlY29uZD0wLCBtaWNyb3NlY29uZD0wLCB0emluZm89Tm9uZSkKKy4uIGNsYXNzOjogZGF0ZXRpbWUoeWVhciwgbW9udGgsIGRheSwgaG91cj0wLCBtaW51dGU9MCwgc2Vjb25kPTAsIG1pY3Jvc2Vjb25kPTAsIHR6aW5mbz1Ob25lLCAqLCBmb2xkPTApCiAKICAgIFRoZSB5ZWFyLCBtb250aCBhbmQgZGF5IGFyZ3VtZW50cyBhcmUgcmVxdWlyZWQuICAqdHppbmZvKiBtYXkgYmUgYGBOb25lYGAsIG9yIGFuCiAgICBpbnN0YW5jZSBvZiBhIDpjbGFzczpgdHppbmZvYCBzdWJjbGFzcy4gIFRoZSByZW1haW5pbmcgYXJndW1lbnRzIG1heSBiZSBpbnRlZ2VycywKICAgIGluIHRoZSBmb2xsb3dpbmcgcmFuZ2VzOgogCi0gICAqIGBgTUlOWUVBUiA8PSB5ZWFyIDw9IE1BWFlFQVJgYAotICAgKiBgYDEgPD0gbW9udGggPD0gMTJgYAotICAgKiBgYDEgPD0gZGF5IDw9IG51bWJlciBvZiBkYXlzIGluIHRoZSBnaXZlbiBtb250aCBhbmQgeWVhcmBgCi0gICAqIGBgMCA8PSBob3VyIDwgMjRgYAotICAgKiBgYDAgPD0gbWludXRlIDwgNjBgYAotICAgKiBgYDAgPD0gc2Vjb25kIDwgNjBgYAotICAgKiBgYDAgPD0gbWljcm9zZWNvbmQgPCAxMDAwMDAwYGAKKyAgICogYGBNSU5ZRUFSIDw9IHllYXIgPD0gTUFYWUVBUmBgLAorICAgKiBgYDEgPD0gbW9udGggPD0gMTJgYCwKKyAgICogYGAxIDw9IGRheSA8PSBudW1iZXIgb2YgZGF5cyBpbiB0aGUgZ2l2ZW4gbW9udGggYW5kIHllYXJgYCwKKyAgICogYGAwIDw9IGhvdXIgPCAyNGBgLAorICAgKiBgYDAgPD0gbWludXRlIDwgNjBgYCwKKyAgICogYGAwIDw9IHNlY29uZCA8IDYwYGAsCisgICAqIGBgMCA8PSBtaWNyb3NlY29uZCA8IDEwMDAwMDBgYCwKKyAgICogYGBmb2xkIGluIFswLCAxXWBgLgogCiAgICBJZiBhbiBhcmd1bWVudCBvdXRzaWRlIHRob3NlIHJhbmdlcyBpcyBnaXZlbiwgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKyAgICAgIEFkZGVkIHRoZSBgYGZvbGRgYCBhcmd1bWVudC4KKwogT3RoZXIgY29uc3RydWN0b3JzLCBhbGwgY2xhc3MgbWV0aG9kczoKIAogLi4gY2xhc3NtZXRob2Q6OiBkYXRldGltZS50b2RheSgpCkBAIC03NTcsNiArNzYyLDggQEAKICAgICAgIGluc3RlYWQgb2YgOmV4YzpgVmFsdWVFcnJvcmAgb24gOmM6ZnVuYzpgbG9jYWx0aW1lYCBvciA6YzpmdW5jOmBnbXRpbWVgCiAgICAgICBmYWlsdXJlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgOm1ldGg6YGZyb210aW1lc3RhbXBgIG1heSByZXR1cm4gaW5zdGFuY2VzIHdpdGggOmF0dHI6YC5mb2xkYCBzZXQgdG8gMS4KIAogLi4gY2xhc3NtZXRob2Q6OiBkYXRldGltZS51dGNmcm9tdGltZXN0YW1wKHRpbWVzdGFtcCkKIApAQCAtNzkzLDE2ICs4MDAsMjMgQEAKICAgIG1pY3Jvc2Vjb25kIG9mIHRoZSByZXN1bHQgYXJlIGFsbCAwLCBhbmQgOmF0dHI6YC50emluZm9gIGlzIGBgTm9uZWBgLgogCiAKLS4uIGNsYXNzbWV0aG9kOjogZGF0ZXRpbWUuY29tYmluZShkYXRlLCB0aW1lKQorLi4gY2xhc3NtZXRob2Q6OiBkYXRldGltZS5jb21iaW5lKGRhdGUsIHRpbWUsIHR6aW5mbz1zZWxmLnR6aW5mbykKIAogICAgUmV0dXJuIGEgbmV3IDpjbGFzczpgLmRhdGV0aW1lYCBvYmplY3Qgd2hvc2UgZGF0ZSBjb21wb25lbnRzIGFyZSBlcXVhbCB0byB0aGUKLSAgIGdpdmVuIDpjbGFzczpgZGF0ZWAgb2JqZWN0J3MsIGFuZCB3aG9zZSB0aW1lIGNvbXBvbmVudHMgYW5kIDphdHRyOmAudHppbmZvYAotICAgYXR0cmlidXRlcyBhcmUgZXF1YWwgdG8gdGhlIGdpdmVuIDpjbGFzczpgLnRpbWVgIG9iamVjdCdzLiBGb3IgYW55Ci0gICA6Y2xhc3M6YC5kYXRldGltZWAgb2JqZWN0ICpkKiwKLSAgIGBgZCA9PSBkYXRldGltZS5jb21iaW5lKGQuZGF0ZSgpLCBkLnRpbWV0eigpKWBgLiAgSWYgZGF0ZSBpcyBhCisgICBnaXZlbiA6Y2xhc3M6YGRhdGVgIG9iamVjdCdzLCBhbmQgd2hvc2UgdGltZSBjb21wb25lbnRzCisgICBhcmUgZXF1YWwgdG8gdGhlIGdpdmVuIDpjbGFzczpgLnRpbWVgIG9iamVjdCdzLiAgSWYgdGhlICp0emluZm8qCisgICBhcmd1bWVudCBpcyBwcm92aWRlZCwgaXRzIHZhbHVlIGlzIHVzZWQgdG8gc2V0IHRoZSA6YXR0cjpgLnR6aW5mb2AgYXR0cmlidXRlCisgICBvZiB0aGUgcmVzdWx0LCBvdGhlcndpc2UgdGhlIDphdHRyOmB+LnRpbWUudHppbmZvYCBhdHRyaWJ1dGUgb2YgdGhlICp0aW1lKiBhcmd1bWVudAorICAgaXMgdXNlZC4KKworICAgRm9yIGFueSA6Y2xhc3M6YC5kYXRldGltZWAgb2JqZWN0ICpkKiwKKyAgIGBgZCA9PSBkYXRldGltZS5jb21iaW5lKGQuZGF0ZSgpLCBkLnRpbWUoKSwgZC50emluZm8pYGAuICBJZiBkYXRlIGlzIGEKICAgIDpjbGFzczpgLmRhdGV0aW1lYCBvYmplY3QsIGl0cyB0aW1lIGNvbXBvbmVudHMgYW5kIDphdHRyOmAudHppbmZvYCBhdHRyaWJ1dGVzCiAgICBhcmUgaWdub3JlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFkZGVkIHRoZSAqdHppbmZvKiBhcmd1bWVudC4KKwogCiAuLiBjbGFzc21ldGhvZDo6IGRhdGV0aW1lLnN0cnB0aW1lKGRhdGVfc3RyaW5nLCBmb3JtYXQpCiAKQEAgLTg3OCw2ICs4OTIsMTYgQEAKICAgIG9yIGBgTm9uZWBgIGlmIG5vbmUgd2FzIHBhc3NlZC4KIAogCisuLiBhdHRyaWJ1dGU6OiBkYXRldGltZS5mb2xkCisKKyAgIEluIGBgWzAsIDFdYGAuICBVc2VkIHRvIGRpc2FtYmlndWF0ZSB3YWxsIHRpbWVzIGR1cmluZyBhIHJlcGVhdGVkIGludGVydmFsLiAgKEEKKyAgIHJlcGVhdGVkIGludGVydmFsIG9jY3VycyB3aGVuIGNsb2NrcyBhcmUgcm9sbGVkIGJhY2sgYXQgdGhlIGVuZCBvZiBkYXlsaWdodCBzYXZpbmcKKyAgIHRpbWUgb3Igd2hlbiB0aGUgVVRDIG9mZnNldCBmb3IgdGhlIGN1cnJlbnQgem9uZSBpcyBkZWNyZWFzZWQgZm9yIHBvbGl0aWNhbCByZWFzb25zLikKKyAgIFRoZSB2YWx1ZSAwICgxKSByZXByZXNlbnRzIHRoZSBlYXJsaWVyIChsYXRlcikgb2YgdGhlIHR3byBtb21lbnRzIHdpdGggdGhlIHNhbWUgd2FsbAorICAgdGltZSByZXByZXNlbnRhdGlvbi4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIFN1cHBvcnRlZCBvcGVyYXRpb25zOgogCiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwpAQCAtOTY2LDIzICs5OTAsMzQgQEAKIAogLi4gbWV0aG9kOjogZGF0ZXRpbWUudGltZSgpCiAKLSAgIFJldHVybiA6Y2xhc3M6YC50aW1lYCBvYmplY3Qgd2l0aCBzYW1lIGhvdXIsIG1pbnV0ZSwgc2Vjb25kIGFuZCBtaWNyb3NlY29uZC4KKyAgIFJldHVybiA6Y2xhc3M6YC50aW1lYCBvYmplY3Qgd2l0aCBzYW1lIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCBhbmQgZm9sZC4KICAgIDphdHRyOmAudHppbmZvYCBpcyBgYE5vbmVgYC4gIFNlZSBhbHNvIG1ldGhvZCA6bWV0aDpgdGltZXR6YC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFRoZSBmb2xkIHZhbHVlIGlzIGNvcGllZCB0byB0aGUgcmV0dXJuZWQgOmNsYXNzOmAudGltZWAgb2JqZWN0LgorCiAKIC4uIG1ldGhvZDo6IGRhdGV0aW1lLnRpbWV0eigpCiAKLSAgIFJldHVybiA6Y2xhc3M6YC50aW1lYCBvYmplY3Qgd2l0aCBzYW1lIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCwgYW5kCisgICBSZXR1cm4gOmNsYXNzOmAudGltZWAgb2JqZWN0IHdpdGggc2FtZSBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQsIGZvbGQsIGFuZAogICAgdHppbmZvIGF0dHJpYnV0ZXMuICBTZWUgYWxzbyBtZXRob2QgOm1ldGg6YHRpbWVgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgVGhlIGZvbGQgdmFsdWUgaXMgY29waWVkIHRvIHRoZSByZXR1cm5lZCA6Y2xhc3M6YC50aW1lYCBvYmplY3QuCiAKLS4uIG1ldGhvZDo6IGRhdGV0aW1lLnJlcGxhY2UoW3llYXJbLCBtb250aFssIGRheVssIGhvdXJbLCBtaW51dGVbLCBzZWNvbmRbLCBtaWNyb3NlY29uZFssIHR6aW5mb11dXV1dXV1dKQorCisuLiBtZXRob2Q6OiBkYXRldGltZS5yZXBsYWNlKHllYXI9c2VsZi55ZWFyLCBtb250aD1zZWxmLm1vbnRoLCBkYXk9c2VsZi5kYXksIFwKKyAgIGhvdXI9c2VsZi5ob3VyLCBtaW51dGU9c2VsZi5taW51dGUsIHNlY29uZD1zZWxmLnNlY29uZCwgbWljcm9zZWNvbmQ9c2VsZi5taWNyb3NlY29uZCwgXAorICAgdHppbmZvPXNlbGYudHppbmZvLCAqIGZvbGQ9MCkKIAogICAgUmV0dXJuIGEgZGF0ZXRpbWUgd2l0aCB0aGUgc2FtZSBhdHRyaWJ1dGVzLCBleGNlcHQgZm9yIHRob3NlIGF0dHJpYnV0ZXMgZ2l2ZW4KICAgIG5ldyB2YWx1ZXMgYnkgd2hpY2hldmVyIGtleXdvcmQgYXJndW1lbnRzIGFyZSBzcGVjaWZpZWQuICBOb3RlIHRoYXQKICAgIGBgdHppbmZvPU5vbmVgYCBjYW4gYmUgc3BlY2lmaWVkIHRvIGNyZWF0ZSBhIG5haXZlIGRhdGV0aW1lIGZyb20gYW4gYXdhcmUKICAgIGRhdGV0aW1lIHdpdGggbm8gY29udmVyc2lvbiBvZiBkYXRlIGFuZCB0aW1lIGRhdGEuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorICAgICAgQWRkZWQgdGhlIGBgZm9sZGBgIGFyZ3VtZW50LgorCiAKIC4uIG1ldGhvZDo6IGRhdGV0aW1lLmFzdGltZXpvbmUodHo9Tm9uZSkKIApAQCAtOTkxLDIzICsxMDI2LDIwIEBACiAgICAqc2VsZiosIGJ1dCBpbiAqdHoqJ3MgbG9jYWwgdGltZS4KIAogICAgSWYgcHJvdmlkZWQsICp0eiogbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBhIDpjbGFzczpgdHppbmZvYCBzdWJjbGFzcywgYW5kIGl0cwotICAgOm1ldGg6YHV0Y29mZnNldGAgYW5kIDptZXRoOmBkc3RgIG1ldGhvZHMgbXVzdCBub3QgcmV0dXJuIGBgTm9uZWBgLiAgKnNlbGYqIG11c3QKLSAgIGJlIGF3YXJlIChgYHNlbGYudHppbmZvYGAgbXVzdCBub3QgYmUgYGBOb25lYGAsIGFuZCBgYHNlbGYudXRjb2Zmc2V0KClgYCBtdXN0Ci0gICBub3QgcmV0dXJuIGBgTm9uZWBgKS4KKyAgIDptZXRoOmB1dGNvZmZzZXRgIGFuZCA6bWV0aDpgZHN0YCBtZXRob2RzIG11c3Qgbm90IHJldHVybiBgYE5vbmVgYC4gIElmICpzZWxmKgorICAgaXMgbmFpdmUgKGBgc2VsZi50emluZm8gaXMgTm9uZWBgKSwgaXQgaXMgcHJlc3VtZWQgdG8gcmVwcmVzZW50IHRpbWUgaW4gdGhlCisgICBzeXN0ZW0gdGltZXpvbmUuCiAKICAgIElmIGNhbGxlZCB3aXRob3V0IGFyZ3VtZW50cyAob3Igd2l0aCBgYHR6PU5vbmVgYCkgdGhlIHN5c3RlbSBsb2NhbAotICAgdGltZXpvbmUgaXMgYXNzdW1lZC4gIFRoZSBgYC50emluZm9gYCBhdHRyaWJ1dGUgb2YgdGhlIGNvbnZlcnRlZAorICAgdGltZXpvbmUgaXMgYXNzdW1lZCBmb3IgdGhlIHRhcmdldCB0aW1lem9uZS4gIFRoZSBgYC50emluZm9gYCBhdHRyaWJ1dGUgb2YgdGhlIGNvbnZlcnRlZAogICAgZGF0ZXRpbWUgaW5zdGFuY2Ugd2lsbCBiZSBzZXQgdG8gYW4gaW5zdGFuY2Ugb2YgOmNsYXNzOmB0aW1lem9uZWAKICAgIHdpdGggdGhlIHpvbmUgbmFtZSBhbmQgb2Zmc2V0IG9idGFpbmVkIGZyb20gdGhlIE9TLgogCiAgICBJZiBgYHNlbGYudHppbmZvYGAgaXMgKnR6KiwgYGBzZWxmLmFzdGltZXpvbmUodHopYGAgaXMgZXF1YWwgdG8gKnNlbGYqOiAgbm8KICAgIGFkanVzdG1lbnQgb2YgZGF0ZSBvciB0aW1lIGRhdGEgaXMgcGVyZm9ybWVkLiBFbHNlIHRoZSByZXN1bHQgaXMgbG9jYWwKLSAgIHRpbWUgaW4gdGltZSB6b25lICp0eiosIHJlcHJlc2VudGluZyB0aGUgc2FtZSBVVEMgdGltZSBhcyAqc2VsZio6ICBhZnRlcgotICAgYGBhc3R6ID0gZHQuYXN0aW1lem9uZSh0eilgYCwgYGBhc3R6IC0gYXN0ei51dGNvZmZzZXQoKWBgIHdpbGwgdXN1YWxseSBoYXZlCi0gICB0aGUgc2FtZSBkYXRlIGFuZCB0aW1lIGRhdGEgYXMgYGBkdCAtIGR0LnV0Y29mZnNldCgpYGAuIFRoZSBkaXNjdXNzaW9uCi0gICBvZiBjbGFzcyA6Y2xhc3M6YHR6aW5mb2AgZXhwbGFpbnMgdGhlIGNhc2VzIGF0IERheWxpZ2h0IFNhdmluZyBUaW1lIHRyYW5zaXRpb24KLSAgIGJvdW5kYXJpZXMgd2hlcmUgdGhpcyBjYW5ub3QgYmUgYWNoaWV2ZWQgKGFuIGlzc3VlIG9ubHkgaWYgKnR6KiBtb2RlbHMgYm90aAotICAgc3RhbmRhcmQgYW5kIGRheWxpZ2h0IHRpbWUpLgorICAgdGltZSBpbiB0aGUgdGltZXpvbmUgKnR6KiwgcmVwcmVzZW50aW5nIHRoZSBzYW1lIFVUQyB0aW1lIGFzICpzZWxmKjogIGFmdGVyCisgICBgYGFzdHogPSBkdC5hc3RpbWV6b25lKHR6KWBgLCBgYGFzdHogLSBhc3R6LnV0Y29mZnNldCgpYGAgd2lsbCBoYXZlCisgICB0aGUgc2FtZSBkYXRlIGFuZCB0aW1lIGRhdGEgYXMgYGBkdCAtIGR0LnV0Y29mZnNldCgpYGAuCiAKICAgIElmIHlvdSBtZXJlbHkgd2FudCB0byBhdHRhY2ggYSB0aW1lIHpvbmUgb2JqZWN0ICp0eiogdG8gYSBkYXRldGltZSAqZHQqIHdpdGhvdXQKICAgIGFkanVzdG1lbnQgb2YgZGF0ZSBhbmQgdGltZSBkYXRhLCB1c2UgYGBkdC5yZXBsYWNlKHR6aW5mbz10eilgYC4gIElmIHlvdQpAQCAtMTAyOSw2ICsxMDYxLDEwIEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwogICAgICAgKnR6KiBub3cgY2FuIGJlIG9taXR0ZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBUaGUgOm1ldGg6YGFzdGltZXpvbmVgIG1ldGhvZCBjYW4gbm93IGJlIGNhbGxlZCBvbiBuYWl2ZSBpbnN0YW5jZXMgdGhhdAorICAgICAgYXJlIHByZXN1bWVkIHRvIHJlcHJlc2VudCBzeXN0ZW0gbG9jYWwgdGltZS4KKwogCiAuLiBtZXRob2Q6OiBkYXRldGltZS51dGNvZmZzZXQoKQogCkBAIC0xMTA1LDYgKzExNDEsMTAgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBUaGUgOm1ldGg6YHRpbWVzdGFtcGAgbWV0aG9kIHVzZXMgdGhlIDphdHRyOmAuZm9sZGAgYXR0cmlidXRlIHRvCisgICAgICBkaXNhbWJpZ3VhdGUgdGhlIHRpbWVzIGR1cmluZyBhIHJlcGVhdGVkIGludGVydmFsLgorCiAgICAuLiBub3RlOjoKIAogICAgICAgVGhlcmUgaXMgbm8gbWV0aG9kIHRvIG9idGFpbiB0aGUgUE9TSVggdGltZXN0YW1wIGRpcmVjdGx5IGZyb20gYQpAQCAtMTEzOCw3ICsxMTc4LDcgQEAKICAgIGBgc2VsZi5kYXRlKCkuaXNvY2FsZW5kYXIoKWBgLgogCiAKLS4uIG1ldGhvZDo6IGRhdGV0aW1lLmlzb2Zvcm1hdChzZXA9J1QnKQorLi4gbWV0aG9kOjogZGF0ZXRpbWUuaXNvZm9ybWF0KHNlcD0nVCcsIHRpbWVzcGVjPSdhdXRvJykKIAogICAgUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgZGF0ZSBhbmQgdGltZSBpbiBJU08gODYwMSBmb3JtYXQsCiAgICBZWVlZLU1NLUREVEhIOk1NOlNTLm1tbW1tbSBvciwgaWYgOmF0dHI6YG1pY3Jvc2Vjb25kYCBpcyAwLApAQCAtMTE1OSw2ICsxMTk5LDM3IEBACiAgICAgICA+Pj4gZGF0ZXRpbWUoMjAwMiwgMTIsIDI1LCB0emluZm89VFooKSkuaXNvZm9ybWF0KCcgJykKICAgICAgICcyMDAyLTEyLTI1IDAwOjAwOjAwLTA2OjM5JwogCisgICBUaGUgb3B0aW9uYWwgYXJndW1lbnQgKnRpbWVzcGVjKiBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBhZGRpdGlvbmFsCisgICBjb21wb25lbnRzIG9mIHRoZSB0aW1lIHRvIGluY2x1ZGUgKHRoZSBkZWZhdWx0IGlzIGBgJ2F1dG8nYGApLgorICAgSXQgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgorCisgICAtIGBgJ2F1dG8nYGA6IFNhbWUgYXMgYGAnc2Vjb25kcydgYCBpZiA6YXR0cjpgbWljcm9zZWNvbmRgIGlzIDAsCisgICAgIHNhbWUgYXMgYGAnbWljcm9zZWNvbmRzJ2BgIG90aGVyd2lzZS4KKyAgIC0gYGAnaG91cnMnYGA6IEluY2x1ZGUgdGhlIDphdHRyOmBob3VyYCBpbiB0aGUgdHdvLWRpZ2l0IEhIIGZvcm1hdC4KKyAgIC0gYGAnbWludXRlcydgYDogSW5jbHVkZSA6YXR0cjpgaG91cmAgYW5kIDphdHRyOmBtaW51dGVgIGluIEhIOk1NIGZvcm1hdC4KKyAgIC0gYGAnc2Vjb25kcydgYDogSW5jbHVkZSA6YXR0cjpgaG91cmAsIDphdHRyOmBtaW51dGVgLCBhbmQgOmF0dHI6YHNlY29uZGAKKyAgICAgaW4gSEg6TU06U1MgZm9ybWF0LgorICAgLSBgYCdtaWxsaXNlY29uZHMnYGA6IEluY2x1ZGUgZnVsbCB0aW1lLCBidXQgdHJ1bmNhdGUgZnJhY3Rpb25hbCBzZWNvbmQKKyAgICAgcGFydCB0byBtaWxsaXNlY29uZHMuIEhIOk1NOlNTLnNzcyBmb3JtYXQuCisgICAtIGBgJ21pY3Jvc2Vjb25kcydgYDogSW5jbHVkZSBmdWxsIHRpbWUgaW4gSEg6TU06U1MubW1tbW1tIGZvcm1hdC4KKworICAgLi4gbm90ZTo6CisKKyAgICAgIEV4Y2x1ZGVkIHRpbWUgY29tcG9uZW50cyBhcmUgdHJ1bmNhdGVkLCBub3Qgcm91bmRlZC4KKworICAgOmV4YzpgVmFsdWVFcnJvcmAgd2lsbCBiZSByYWlzZWQgb24gYW4gaW52YWxpZCAqdGltZXNwZWMqIGFyZ3VtZW50LgorCisKKyAgICAgID4+PiBmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQorICAgICAgPj4+IGRhdGV0aW1lLm5vdygpLmlzb2Zvcm1hdCh0aW1lc3BlYz0nbWludXRlcycpCisgICAgICAnMjAwMi0xMi0yNVQwMDowMCcKKyAgICAgID4+PiBkdCA9IGRhdGV0aW1lKDIwMTUsIDEsIDEsIDEyLCAzMCwgNTksIDApCisgICAgICA+Pj4gZHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdtaWNyb3NlY29uZHMnKQorICAgICAgJzIwMTUtMDEtMDFUMTI6MzA6NTkuMDAwMDAwJworCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKyAgICAgIEFkZGVkIHRoZSAqdGltZXNwZWMqIGFyZ3VtZW50LgorCiAKIC4uIG1ldGhvZDo6IGRhdGV0aW1lLl9fc3RyX18oKQogCkBAIC0xMTg1LDcgKzEyNTYsOCBAQAogLi4gbWV0aG9kOjogZGF0ZXRpbWUuX19mb3JtYXRfXyhmb3JtYXQpCiAKICAgIFNhbWUgYXMgOm1ldGg6YC5kYXRldGltZS5zdHJmdGltZWAuICBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHNwZWNpZnkgYSBmb3JtYXQKLSAgIHN0cmluZyBmb3IgYSA6Y2xhc3M6YC5kYXRldGltZWAgb2JqZWN0IHdoZW4gdXNpbmcgOm1ldGg6YHN0ci5mb3JtYXRgLiAgRm9yIGEKKyAgIHN0cmluZyBmb3IgYSA6Y2xhc3M6YC5kYXRldGltZWAgb2JqZWN0IGluIDpyZWY6YGZvcm1hdHRlZCBzdHJpbmcKKyAgIGxpdGVyYWxzIDxmLXN0cmluZ3M+YCBhbmQgd2hlbiB1c2luZyA6bWV0aDpgc3RyLmZvcm1hdGAuICBGb3IgYQogICAgY29tcGxldGUgbGlzdCBvZiBmb3JtYXR0aW5nIGRpcmVjdGl2ZXMsIHNlZQogICAgOnJlZjpgc3RyZnRpbWUtc3RycHRpbWUtYmVoYXZpb3JgLgogCkBAIC0xMzAyLDE2ICsxMzc0LDE3IEBACiBBIHRpbWUgb2JqZWN0IHJlcHJlc2VudHMgYSAobG9jYWwpIHRpbWUgb2YgZGF5LCBpbmRlcGVuZGVudCBvZiBhbnkgcGFydGljdWxhcgogZGF5LCBhbmQgc3ViamVjdCB0byBhZGp1c3RtZW50IHZpYSBhIDpjbGFzczpgdHppbmZvYCBvYmplY3QuCiAKLS4uIGNsYXNzOjogdGltZShob3VyPTAsIG1pbnV0ZT0wLCBzZWNvbmQ9MCwgbWljcm9zZWNvbmQ9MCwgdHppbmZvPU5vbmUpCisuLiBjbGFzczo6IHRpbWUoaG91cj0wLCBtaW51dGU9MCwgc2Vjb25kPTAsIG1pY3Jvc2Vjb25kPTAsIHR6aW5mbz1Ob25lLCAqLCBmb2xkPTApCiAKICAgIEFsbCBhcmd1bWVudHMgYXJlIG9wdGlvbmFsLiAgKnR6aW5mbyogbWF5IGJlIGBgTm9uZWBgLCBvciBhbiBpbnN0YW5jZSBvZiBhCiAgICA6Y2xhc3M6YHR6aW5mb2Agc3ViY2xhc3MuICBUaGUgcmVtYWluaW5nIGFyZ3VtZW50cyBtYXkgYmUgaW50ZWdlcnMsIGluIHRoZQogICAgZm9sbG93aW5nIHJhbmdlczoKIAotICAgKiBgYDAgPD0gaG91ciA8IDI0YGAKLSAgICogYGAwIDw9IG1pbnV0ZSA8IDYwYGAKLSAgICogYGAwIDw9IHNlY29uZCA8IDYwYGAKLSAgICogYGAwIDw9IG1pY3Jvc2Vjb25kIDwgMTAwMDAwMGBgLgorICAgKiBgYDAgPD0gaG91ciA8IDI0YGAsCisgICAqIGBgMCA8PSBtaW51dGUgPCA2MGBgLAorICAgKiBgYDAgPD0gc2Vjb25kIDwgNjBgYCwKKyAgICogYGAwIDw9IG1pY3Jvc2Vjb25kIDwgMTAwMDAwMGBgLAorICAgKiBgYGZvbGQgaW4gWzAsIDFdYGAuCiAKICAgIElmIGFuIGFyZ3VtZW50IG91dHNpZGUgdGhvc2UgcmFuZ2VzIGlzIGdpdmVuLCA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQuICBBbGwKICAgIGRlZmF1bHQgdG8gYGAwYGAgZXhjZXB0ICp0emluZm8qLCB3aGljaCBkZWZhdWx0cyB0byA6Y29uc3Q6YE5vbmVgLgpAQCAtMTM2NCw2ICsxNDM3LDE3IEBACiAgICBgYE5vbmVgYCBpZiBub25lIHdhcyBwYXNzZWQuCiAKIAorLi4gYXR0cmlidXRlOjogdGltZS5mb2xkCisKKyAgIEluIGBgWzAsIDFdYGAuICBVc2VkIHRvIGRpc2FtYmlndWF0ZSB3YWxsIHRpbWVzIGR1cmluZyBhIHJlcGVhdGVkIGludGVydmFsLiAgKEEKKyAgIHJlcGVhdGVkIGludGVydmFsIG9jY3VycyB3aGVuIGNsb2NrcyBhcmUgcm9sbGVkIGJhY2sgYXQgdGhlIGVuZCBvZiBkYXlsaWdodCBzYXZpbmcKKyAgIHRpbWUgb3Igd2hlbiB0aGUgVVRDIG9mZnNldCBmb3IgdGhlIGN1cnJlbnQgem9uZSBpcyBkZWNyZWFzZWQgZm9yIHBvbGl0aWNhbCByZWFzb25zLikKKyAgIFRoZSB2YWx1ZSAwICgxKSByZXByZXNlbnRzIHRoZSBlYXJsaWVyIChsYXRlcikgb2YgdGhlIHR3byBtb21lbnRzIHdpdGggdGhlIHNhbWUgd2FsbAorICAgdGltZSByZXByZXNlbnRhdGlvbi4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKwogU3VwcG9ydGVkIG9wZXJhdGlvbnM6CiAKICogY29tcGFyaXNvbiBvZiA6Y2xhc3M6YC50aW1lYCB0byA6Y2xhc3M6YC50aW1lYCwgd2hlcmUgKmEqIGlzIGNvbnNpZGVyZWQgbGVzcwpAQCAtMTM5OSwyMSArMTQ4Myw1OCBAQAogCiBJbnN0YW5jZSBtZXRob2RzOgogCi0uLiBtZXRob2Q6OiB0aW1lLnJlcGxhY2UoW2hvdXJbLCBtaW51dGVbLCBzZWNvbmRbLCBtaWNyb3NlY29uZFssIHR6aW5mb11dXV1dKQorLi4gbWV0aG9kOjogdGltZS5yZXBsYWNlKGhvdXI9c2VsZi5ob3VyLCBtaW51dGU9c2VsZi5taW51dGUsIHNlY29uZD1zZWxmLnNlY29uZCwgXAorICAgbWljcm9zZWNvbmQ9c2VsZi5taWNyb3NlY29uZCwgdHppbmZvPXNlbGYudHppbmZvLCAqIGZvbGQ9MCkKIAogICAgUmV0dXJuIGEgOmNsYXNzOmAudGltZWAgd2l0aCB0aGUgc2FtZSB2YWx1ZSwgZXhjZXB0IGZvciB0aG9zZSBhdHRyaWJ1dGVzIGdpdmVuCiAgICBuZXcgdmFsdWVzIGJ5IHdoaWNoZXZlciBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgc3BlY2lmaWVkLiAgTm90ZSB0aGF0CiAgICBgYHR6aW5mbz1Ob25lYGAgY2FuIGJlIHNwZWNpZmllZCB0byBjcmVhdGUgYSBuYWl2ZSA6Y2xhc3M6YC50aW1lYCBmcm9tIGFuCiAgICBhd2FyZSA6Y2xhc3M6YC50aW1lYCwgd2l0aG91dCBjb252ZXJzaW9uIG9mIHRoZSB0aW1lIGRhdGEuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorICAgICAgQWRkZWQgdGhlIGBgZm9sZGBgIGFyZ3VtZW50LgogCi0uLiBtZXRob2Q6OiB0aW1lLmlzb2Zvcm1hdCgpCisKKy4uIG1ldGhvZDo6IHRpbWUuaXNvZm9ybWF0KHRpbWVzcGVjPSdhdXRvJykKIAogICAgUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgdGltZSBpbiBJU08gODYwMSBmb3JtYXQsIEhIOk1NOlNTLm1tbW1tbSBvciwgaWYKLSAgIHNlbGYubWljcm9zZWNvbmQgaXMgMCwgSEg6TU06U1MgSWYgOm1ldGg6YHV0Y29mZnNldGAgZG9lcyBub3QgcmV0dXJuIGBgTm9uZWBgLCBhCisgICA6YXR0cjpgbWljcm9zZWNvbmRgIGlzIDAsIEhIOk1NOlNTIElmIDptZXRoOmB1dGNvZmZzZXRgIGRvZXMgbm90IHJldHVybiBgYE5vbmVgYCwgYQogICAgNi1jaGFyYWN0ZXIgc3RyaW5nIGlzIGFwcGVuZGVkLCBnaXZpbmcgdGhlIFVUQyBvZmZzZXQgaW4gKHNpZ25lZCkgaG91cnMgYW5kCiAgICBtaW51dGVzOiBISDpNTTpTUy5tbW1tbW0rSEg6TU0gb3IsIGlmIHNlbGYubWljcm9zZWNvbmQgaXMgMCwgSEg6TU06U1MrSEg6TU0KIAorICAgVGhlIG9wdGlvbmFsIGFyZ3VtZW50ICp0aW1lc3BlYyogc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgYWRkaXRpb25hbAorICAgY29tcG9uZW50cyBvZiB0aGUgdGltZSB0byBpbmNsdWRlICh0aGUgZGVmYXVsdCBpcyBgYCdhdXRvJ2BgKS4KKyAgIEl0IGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZzoKKworICAgLSBgYCdhdXRvJ2BgOiBTYW1lIGFzIGBgJ3NlY29uZHMnYGAgaWYgOmF0dHI6YG1pY3Jvc2Vjb25kYCBpcyAwLAorICAgICBzYW1lIGFzIGBgJ21pY3Jvc2Vjb25kcydgYCBvdGhlcndpc2UuCisgICAtIGBgJ2hvdXJzJ2BgOiBJbmNsdWRlIHRoZSA6YXR0cjpgaG91cmAgaW4gdGhlIHR3by1kaWdpdCBISCBmb3JtYXQuCisgICAtIGBgJ21pbnV0ZXMnYGA6IEluY2x1ZGUgOmF0dHI6YGhvdXJgIGFuZCA6YXR0cjpgbWludXRlYCBpbiBISDpNTSBmb3JtYXQuCisgICAtIGBgJ3NlY29uZHMnYGA6IEluY2x1ZGUgOmF0dHI6YGhvdXJgLCA6YXR0cjpgbWludXRlYCwgYW5kIDphdHRyOmBzZWNvbmRgCisgICAgIGluIEhIOk1NOlNTIGZvcm1hdC4KKyAgIC0gYGAnbWlsbGlzZWNvbmRzJ2BgOiBJbmNsdWRlIGZ1bGwgdGltZSwgYnV0IHRydW5jYXRlIGZyYWN0aW9uYWwgc2Vjb25kCisgICAgIHBhcnQgdG8gbWlsbGlzZWNvbmRzLiBISDpNTTpTUy5zc3MgZm9ybWF0LgorICAgLSBgYCdtaWNyb3NlY29uZHMnYGA6IEluY2x1ZGUgZnVsbCB0aW1lIGluIEhIOk1NOlNTLm1tbW1tbSBmb3JtYXQuCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBFeGNsdWRlZCB0aW1lIGNvbXBvbmVudHMgYXJlIHRydW5jYXRlZCwgbm90IHJvdW5kZWQuCisKKyAgIDpleGM6YFZhbHVlRXJyb3JgIHdpbGwgYmUgcmFpc2VkIG9uIGFuIGludmFsaWQgKnRpbWVzcGVjKiBhcmd1bWVudC4KKworCisgICAgICA+Pj4gZnJvbSBkYXRldGltZSBpbXBvcnQgdGltZQorICAgICAgPj4+IHRpbWUoaG91cj0xMiwgbWludXRlPTM0LCBzZWNvbmQ9NTYsIG1pY3Jvc2Vjb25kPTEyMzQ1NikuaXNvZm9ybWF0KHRpbWVzcGVjPSdtaW51dGVzJykKKyAgICAgICcxMjozNCcKKyAgICAgID4+PiBkdCA9IHRpbWUoaG91cj0xMiwgbWludXRlPTM0LCBzZWNvbmQ9NTYsIG1pY3Jvc2Vjb25kPTApCisgICAgICA+Pj4gZHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdtaWNyb3NlY29uZHMnKQorICAgICAgJzEyOjM0OjU2LjAwMDAwMCcKKyAgICAgID4+PiBkdC5pc29mb3JtYXQodGltZXNwZWM9J2F1dG8nKQorICAgICAgJzEyOjM0OjU2JworCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKyAgICAgIEFkZGVkIHRoZSAqdGltZXNwZWMqIGFyZ3VtZW50LgorCiAKIC4uIG1ldGhvZDo6IHRpbWUuX19zdHJfXygpCiAKQEAgLTE0MzAsNyArMTU1MSw4IEBACiAuLiBtZXRob2Q6OiB0aW1lLl9fZm9ybWF0X18oZm9ybWF0KQogCiAgICBTYW1lIGFzIDptZXRoOmAudGltZS5zdHJmdGltZWAuIFRoaXMgbWFrZXMgaXQgcG9zc2libGUgdG8gc3BlY2lmeSBhIGZvcm1hdCBzdHJpbmcKLSAgIGZvciBhIDpjbGFzczpgLnRpbWVgIG9iamVjdCB3aGVuIHVzaW5nIDptZXRoOmBzdHIuZm9ybWF0YC4gIEZvciBhCisgICBmb3IgYSA6Y2xhc3M6YC50aW1lYCBvYmplY3QgaW4gOnJlZjpgZm9ybWF0dGVkIHN0cmluZworICAgbGl0ZXJhbHMgPGYtc3RyaW5ncz5gIGFuZCB3aGVuIHVzaW5nIDptZXRoOmBzdHIuZm9ybWF0YC4gIEZvciBhCiAgICBjb21wbGV0ZSBsaXN0IG9mIGZvcm1hdHRpbmcgZGlyZWN0aXZlcywgc2VlCiAgICA6cmVmOmBzdHJmdGltZS1zdHJwdGltZS1iZWhhdmlvcmAuCiAKQEAgLTE2ODAsOSArMTgwMiwxOSBAQAogV2hlbiBEU1Qgc3RhcnRzICh0aGUgInN0YXJ0IiBsaW5lKSwgdGhlIGxvY2FsIHdhbGwgY2xvY2sgbGVhcHMgZnJvbSAxOjU5IHRvCiAzOjAwLiAgQSB3YWxsIHRpbWUgb2YgdGhlIGZvcm0gMjpNTSBkb2Vzbid0IHJlYWxseSBtYWtlIHNlbnNlIG9uIHRoYXQgZGF5LCBzbwogYGBhc3RpbWV6b25lKEVhc3Rlcm4pYGAgd29uJ3QgZGVsaXZlciBhIHJlc3VsdCB3aXRoIGBgaG91ciA9PSAyYGAgb24gdGhlIGRheSBEU1QKLWJlZ2lucy4gIEluIG9yZGVyIGZvciA6bWV0aDpgYXN0aW1lem9uZWAgdG8gbWFrZSB0aGlzIGd1YXJhbnRlZSwgdGhlCi06bWV0aDpgdHppbmZvLmRzdGAgbWV0aG9kIG11c3QgY29uc2lkZXIgdGltZXMgaW4gdGhlICJtaXNzaW5nIGhvdXIiICgyOk1NIGZvcgotRWFzdGVybikgdG8gYmUgaW4gZGF5bGlnaHQgdGltZS4KK2JlZ2lucy4gIEZvciBleGFtcGxlLCBhdCB0aGUgU3ByaW5nIGZvcndhcmQgdHJhbnNpdGlvbiBvZiAyMDE2LCB3ZSBnZXQKKworICAgID4+PiB1MCA9IGRhdGV0aW1lKDIwMTYsIDMsIDEzLCA1LCB0emluZm89dGltZXpvbmUudXRjKQorICAgID4+PiBmb3IgaSBpbiByYW5nZSg0KToKKyAgICAuLi4gICAgIHUgPSB1MCArIGkqSE9VUgorICAgIC4uLiAgICAgdCA9IHUuYXN0aW1lem9uZShFYXN0ZXJuKQorICAgIC4uLiAgICAgcHJpbnQodS50aW1lKCksICdVVEMgPScsIHQudGltZSgpLCB0LnR6bmFtZSgpKQorICAgIC4uLgorICAgIDA1OjAwOjAwIFVUQyA9IDAwOjAwOjAwIEVTVAorICAgIDA2OjAwOjAwIFVUQyA9IDAxOjAwOjAwIEVTVAorICAgIDA3OjAwOjAwIFVUQyA9IDAzOjAwOjAwIEVEVAorICAgIDA4OjAwOjAwIFVUQyA9IDA0OjAwOjAwIEVEVAorCiAKIFdoZW4gRFNUIGVuZHMgKHRoZSAiZW5kIiBsaW5lKSwgdGhlcmUncyBhIHBvdGVudGlhbGx5IHdvcnNlIHByb2JsZW06IHRoZXJlJ3MgYW4KIGhvdXIgdGhhdCBjYW4ndCBiZSBzcGVsbGVkIHVuYW1iaWd1b3VzbHkgaW4gbG9jYWwgd2FsbCB0aW1lOiB0aGUgbGFzdCBob3VyIG9mCkBAIC0xNjkxLDI4ICsxODIzLDQxIEBACiB0byAxOjAwIChzdGFuZGFyZCB0aW1lKSBhZ2Fpbi4gTG9jYWwgdGltZXMgb2YgdGhlIGZvcm0gMTpNTSBhcmUgYW1iaWd1b3VzLgogOm1ldGg6YGFzdGltZXpvbmVgIG1pbWljcyB0aGUgbG9jYWwgY2xvY2sncyBiZWhhdmlvciBieSBtYXBwaW5nIHR3byBhZGphY2VudCBVVEMKIGhvdXJzIGludG8gdGhlIHNhbWUgbG9jYWwgaG91ciB0aGVuLiAgSW4gdGhlIEVhc3Rlcm4gZXhhbXBsZSwgVVRDIHRpbWVzIG9mIHRoZQotZm9ybSA1Ok1NIGFuZCA2Ok1NIGJvdGggbWFwIHRvIDE6TU0gd2hlbiBjb252ZXJ0ZWQgdG8gRWFzdGVybi4gIEluIG9yZGVyIGZvcgotOm1ldGg6YGFzdGltZXpvbmVgIHRvIG1ha2UgdGhpcyBndWFyYW50ZWUsIHRoZSA6bWV0aDpgdHppbmZvLmRzdGAgbWV0aG9kIG11c3QKLWNvbnNpZGVyIHRpbWVzIGluIHRoZSAicmVwZWF0ZWQgaG91ciIgdG8gYmUgaW4gc3RhbmRhcmQgdGltZS4gIFRoaXMgaXMgZWFzaWx5Ci1hcnJhbmdlZCwgYXMgaW4gdGhlIGV4YW1wbGUsIGJ5IGV4cHJlc3NpbmcgRFNUIHN3aXRjaCB0aW1lcyBpbiB0aGUgdGltZSB6b25lJ3MKLXN0YW5kYXJkIGxvY2FsIHRpbWUuCitmb3JtIDU6TU0gYW5kIDY6TU0gYm90aCBtYXAgdG8gMTpNTSB3aGVuIGNvbnZlcnRlZCB0byBFYXN0ZXJuLCBidXQgZWFybGllciB0aW1lcworaGF2ZSB0aGUgOmF0dHI6YH5kYXRldGltZS5mb2xkYCBhdHRyaWJ1dGUgc2V0IHRvIDAgYW5kIHRoZSBsYXRlciB0aW1lcyBoYXZlIGl0IHNldCB0byAxLgorRm9yIGV4YW1wbGUsIGF0IHRoZSBGYWxsIGJhY2sgdHJhbnNpdGlvbiBvZiAyMDE2LCB3ZSBnZXQKIAotQXBwbGljYXRpb25zIHRoYXQgY2FuJ3QgYmVhciBzdWNoIGFtYmlndWl0aWVzIHNob3VsZCBhdm9pZCB1c2luZyBoeWJyaWQKKyAgICA+Pj4gdTAgPSBkYXRldGltZSgyMDE2LCAxMSwgNiwgNCwgdHppbmZvPXRpbWV6b25lLnV0YykKKyAgICA+Pj4gZm9yIGkgaW4gcmFuZ2UoNCk6CisgICAgLi4uICAgICB1ID0gdTAgKyBpKkhPVVIKKyAgICAuLi4gICAgIHQgPSB1LmFzdGltZXpvbmUoRWFzdGVybikKKyAgICAuLi4gICAgIHByaW50KHUudGltZSgpLCAnVVRDID0nLCB0LnRpbWUoKSwgdC50em5hbWUoKSwgdC5mb2xkKQorICAgIC4uLgorICAgIDA0OjAwOjAwIFVUQyA9IDAwOjAwOjAwIEVEVCAwCisgICAgMDU6MDA6MDAgVVRDID0gMDE6MDA6MDAgRURUIDAKKyAgICAwNjowMDowMCBVVEMgPSAwMTowMDowMCBFU1QgMQorICAgIDA3OjAwOjAwIFVUQyA9IDAyOjAwOjAwIEVTVCAwCisKK05vdGUgdGhhdCB0aGUgOmNsYXNzOmBkYXRldGltZWAgaW5zdGFuY2VzIHRoYXQgZGlmZmVyIG9ubHkgYnkgdGhlIHZhbHVlIG9mIHRoZQorOmF0dHI6YH5kYXRldGltZS5mb2xkYCBhdHRyaWJ1dGUgYXJlIGNvbnNpZGVyZWQgZXF1YWwgaW4gY29tcGFyaXNvbnMuCisKK0FwcGxpY2F0aW9ucyB0aGF0IGNhbid0IGJlYXIgd2FsbC10aW1lIGFtYmlndWl0aWVzIHNob3VsZCBleHBsaWNpdGx5IGNoZWNrIHRoZQordmFsdWUgb2YgdGhlIDphdHRyOmB+ZGF0ZXRpbWUuZm9sZGAgYXR0cmlidXRlIG9yIGF2b2lkIHVzaW5nIGh5YnJpZAogOmNsYXNzOmB0emluZm9gIHN1YmNsYXNzZXM7IHRoZXJlIGFyZSBubyBhbWJpZ3VpdGllcyB3aGVuIHVzaW5nIDpjbGFzczpgdGltZXpvbmVgLAogb3IgYW55IG90aGVyIGZpeGVkLW9mZnNldCA6Y2xhc3M6YHR6aW5mb2Agc3ViY2xhc3MgKHN1Y2ggYXMgYSBjbGFzcyByZXByZXNlbnRpbmcKIG9ubHkgRVNUIChmaXhlZCBvZmZzZXQgLTUgaG91cnMpLCBvciBvbmx5IEVEVCAoZml4ZWQgb2Zmc2V0IC00IGhvdXJzKSkuCiAKIC4uIHNlZWFsc286OgogCi0gICBgcHl0eiA8aHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9weXR6Lz5gXworICAgYGRhdGV0dWlsLnR6IDxodHRwczovL2RhdGV1dGlsLnJlYWR0aGVkb2NzLmlvL2VuL3N0YWJsZS90ei5odG1sPmBfCiAgICAgICBUaGUgc3RhbmRhcmQgbGlicmFyeSBoYXMgOmNsYXNzOmB0aW1lem9uZWAgY2xhc3MgZm9yIGhhbmRsaW5nIGFyYml0cmFyeQogICAgICAgZml4ZWQgb2Zmc2V0cyBmcm9tIFVUQyBhbmQgOmF0dHI6YHRpbWV6b25lLnV0Y2AgYXMgVVRDIHRpbWV6b25lIGluc3RhbmNlLgogCi0gICAgICAqcHl0eiogbGlicmFyeSBicmluZ3MgdGhlICpJQU5BIHRpbWV6b25lIGRhdGFiYXNlKiAoYWxzbyBrbm93biBhcyB0aGUKKyAgICAgICpkYXRldHVpbC50eiogbGlicmFyeSBicmluZ3MgdGhlICpJQU5BIHRpbWV6b25lIGRhdGFiYXNlKiAoYWxzbyBrbm93biBhcyB0aGUKICAgICAgIE9sc29uIGRhdGFiYXNlKSB0byBQeXRob24gYW5kIGl0cyB1c2FnZSBpcyByZWNvbW1lbmRlZC4KIAogICAgYElBTkEgdGltZXpvbmUgZGF0YWJhc2UgPGh0dHBzOi8vd3d3LmlhbmEub3JnL3RpbWUtem9uZXM+YF8KLSAgICAgIFRoZSBUaW1lIFpvbmUgRGF0YWJhc2UgKG9mdGVuIGNhbGxlZCB0eiBvciB6b25laW5mbykgY29udGFpbnMgY29kZSBhbmQKKyAgICAgIFRoZSBUaW1lIFpvbmUgRGF0YWJhc2UgKG9mdGVuIGNhbGxlZCB0eiwgdHpkYXRhIG9yIHpvbmVpbmZvKSBjb250YWlucyBjb2RlIGFuZAogICAgICAgZGF0YSB0aGF0IHJlcHJlc2VudCB0aGUgaGlzdG9yeSBvZiBsb2NhbCB0aW1lIGZvciBtYW55IHJlcHJlc2VudGF0aXZlCiAgICAgICBsb2NhdGlvbnMgYXJvdW5kIHRoZSBnbG9iZS4gSXQgaXMgdXBkYXRlZCBwZXJpb2RpY2FsbHkgdG8gcmVmbGVjdCBjaGFuZ2VzCiAgICAgICBtYWRlIGJ5IHBvbGl0aWNhbCBib2RpZXMgdG8gdGltZSB6b25lIGJvdW5kYXJpZXMsIFVUQyBvZmZzZXRzLCBhbmQKQEAgLTE3MzIsNyArMTg3Nyw3IEBACiBtYWRlIHRvIGNpdmlsIHRpbWUuCiAKIAotLi4gY2xhc3M6OiB0aW1lem9uZShvZmZzZXRbLCBuYW1lXSkKKy4uIGNsYXNzOjogdGltZXpvbmUob2Zmc2V0LCBuYW1lPU5vbmUpCiAKICAgVGhlICpvZmZzZXQqIGFyZ3VtZW50IG11c3QgYmUgc3BlY2lmaWVkIGFzIGEgOmNsYXNzOmB0aW1lZGVsdGFgCiAgIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgbG9jYWwgdGltZSBhbmQgVVRDLiAgSXQgbXVzdApAQCAtMTc0MSwxMCArMTg4Niw3IEBACiAgIG90aGVyd2lzZSA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQuCiAKICAgVGhlICpuYW1lKiBhcmd1bWVudCBpcyBvcHRpb25hbC4gIElmIHNwZWNpZmllZCBpdCBtdXN0IGJlIGEgc3RyaW5nIHRoYXQKLSAgaXMgdXNlZCBhcyB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgdGhlIGBgdHpuYW1lKGR0KWBgIG1ldGhvZC4gIE90aGVyd2lzZSwKLSAgYGB0em5hbWUoZHQpYGAgcmV0dXJucyBhIHN0cmluZyAnVVRDc0hIOk1NJywgd2hlcmUgcyBpcyB0aGUgc2lnbiBvZgotICAqb2Zmc2V0KiwgSEggYW5kIE1NIGFyZSB0d28gZGlnaXRzIG9mIGBgb2Zmc2V0LmhvdXJzYGAgYW5kCi0gIGBgb2Zmc2V0Lm1pbnV0ZXNgYCByZXNwZWN0aXZlbHkuCisgIHdpbGwgYmUgdXNlZCBhcyB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgdGhlIDptZXRoOmBkYXRldGltZS50em5hbWVgIG1ldGhvZC4KIAogICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIApAQCAtMTc1NywxMSArMTg5OSwxOSBAQAogCiAuLiBtZXRob2Q6OiB0aW1lem9uZS50em5hbWUoZHQpCiAKLSAgUmV0dXJuIHRoZSBmaXhlZCB2YWx1ZSBzcGVjaWZpZWQgd2hlbiB0aGUgOmNsYXNzOmB0aW1lem9uZWAgaW5zdGFuY2UgaXMKLSAgY29uc3RydWN0ZWQgb3IgYSBzdHJpbmcgJ1VUQ3NISDpNTScsIHdoZXJlIHMgaXMgdGhlIHNpZ24gb2YKLSAgKm9mZnNldCosIEhIIGFuZCBNTSBhcmUgdHdvIGRpZ2l0cyBvZiBgYG9mZnNldC5ob3Vyc2BgIGFuZAorICBSZXR1cm4gdGhlIGZpeGVkIHZhbHVlIHNwZWNpZmllZCB3aGVuIHRoZSA6Y2xhc3M6YHRpbWV6b25lYCBpbnN0YW5jZQorICBpcyBjb25zdHJ1Y3RlZC4gIElmICpuYW1lKiBpcyBub3QgcHJvdmlkZWQgaW4gdGhlIGNvbnN0cnVjdG9yLCB0aGUKKyAgbmFtZSByZXR1cm5lZCBieSBgYHR6bmFtZShkdClgYCBpcyBnZW5lcmF0ZWQgZnJvbSB0aGUgdmFsdWUgb2YgdGhlCisgIGBgb2Zmc2V0YGAgYXMgZm9sbG93cy4gIElmICpvZmZzZXQqIGlzIGBgdGltZWRlbHRhKDApYGAsIHRoZSBuYW1lCisgIGlzICJVVEMiLCBvdGhlcndpc2UgaXQgaXMgYSBzdHJpbmcgJ1VUQ8KxSEg6TU0nLCB3aGVyZSDCsSBpcyB0aGUgc2lnbgorICBvZiBgYG9mZnNldGBgLCBISCBhbmQgTU0gYXJlIHR3byBkaWdpdHMgb2YgYGBvZmZzZXQuaG91cnNgYCBhbmQKICAgYGBvZmZzZXQubWludXRlc2BgIHJlc3BlY3RpdmVseS4KIAorICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICBOYW1lIGdlbmVyYXRlZCBmcm9tIGBgb2Zmc2V0PXRpbWVkZWx0YSgwKWBgIGlzIG5vdyBwbGFpbiAnVVRDJywgbm90CisgICAgICdVVEMrMDA6MDAnLgorCisKIC4uIG1ldGhvZDo6IHRpbWV6b25lLmRzdChkdCkKIAogICBBbHdheXMgcmV0dXJucyBgYE5vbmVgYC4KQEAgLTE5MTEsNiArMjA2MSwzNCBAQAogfCBgYCUlYGAgICAgfCBBIGxpdGVyYWwgYGAnJSdgYCBjaGFyYWN0ZXIuICAgfCAlICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAogKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwogCitTZXZlcmFsIGFkZGl0aW9uYWwgZGlyZWN0aXZlcyBub3QgcmVxdWlyZWQgYnkgdGhlIEM4OSBzdGFuZGFyZCBhcmUgaW5jbHVkZWQgZm9yCitjb252ZW5pZW5jZS4gVGhlc2UgcGFyYW1ldGVycyBhbGwgY29ycmVzcG9uZCB0byBJU08gODYwMSBkYXRlIHZhbHVlcy4gVGhlc2UKK21heSBub3QgYmUgYXZhaWxhYmxlIG9uIGFsbCBwbGF0Zm9ybXMgd2hlbiB1c2VkIHdpdGggdGhlIDptZXRoOmBzdHJmdGltZWAKK21ldGhvZC4gVGhlIElTTyA4NjAxIHllYXIgYW5kIElTTyA4NjAxIHdlZWsgZGlyZWN0aXZlcyBhcmUgbm90IGludGVyY2hhbmdlYWJsZQord2l0aCB0aGUgeWVhciBhbmQgd2VlayBudW1iZXIgZGlyZWN0aXZlcyBhYm92ZS4gQ2FsbGluZyA6bWV0aDpgc3RycHRpbWVgIHdpdGgKK2luY29tcGxldGUgb3IgYW1iaWd1b3VzIElTTyA4NjAxIGRpcmVjdGl2ZXMgd2lsbCByYWlzZSBhIDpleGM6YFZhbHVlRXJyb3JgLgorCisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IERpcmVjdGl2ZSB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICB8IEV4YW1wbGUgICAgICAgICAgICAgICAgfCBOb3RlcyB8CisrPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT0rCit8IGBgJUdgYCAgICB8IElTTyA4NjAxIHllYXIgd2l0aCBjZW50dXJ5ICAgICB8IDAwMDEsIDAwMDIsIC4uLiwgMjAxMywgfCBcKDgpICB8Cit8ICAgICAgICAgICB8IHJlcHJlc2VudGluZyB0aGUgeWVhciB0aGF0ICAgICB8IDIwMTQsIC4uLiwgOTk5OCwgOTk5OSAgfCAgICAgICB8Cit8ICAgICAgICAgICB8IGNvbnRhaW5zIHRoZSBncmVhdGVyIHBhcnQgb2YgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8Cit8ICAgICAgICAgICB8IHRoZSBJU08gd2VlayAoYGAlVmBgKS4gICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJXVgYCAgICB8IElTTyA4NjAxIHdlZWtkYXkgYXMgYSBkZWNpbWFsICB8IDEsIDIsIC4uLiwgNyAgICAgICAgICAgfCAgICAgICB8Cit8ICAgICAgICAgICB8IG51bWJlciB3aGVyZSAxIGlzIE1vbmRheS4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJVZgYCAgICB8IElTTyA4NjAxIHdlZWsgYXMgYSBkZWNpbWFsICAgICB8IDAxLCAwMiwgLi4uLCA1MyAgICAgICAgfCBcKDgpICB8Cit8ICAgICAgICAgICB8IG51bWJlciB3aXRoIE1vbmRheSBhcyAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8Cit8ICAgICAgICAgICB8IHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8Cit8ICAgICAgICAgICB8IFdlZWsgMDEgaXMgdGhlIHdlZWsgY29udGFpbmluZyB8ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8Cit8ICAgICAgICAgICB8IEphbiA0LiAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuNgorICAgYGAlR2BgLCBgYCV1YGAgYW5kIGBgJVZgYCB3ZXJlIGFkZGVkLgorCiBOb3RlczoKIAogKDEpCkBAIC0xOTc1LDcgKzIxNTMsMTQgQEAKIAogKDcpCiAgICBXaGVuIHVzZWQgd2l0aCB0aGUgOm1ldGg6YHN0cnB0aW1lYCBtZXRob2QsIGBgJVVgYCBhbmQgYGAlV2BgIGFyZSBvbmx5IHVzZWQKLSAgIGluIGNhbGN1bGF0aW9ucyB3aGVuIHRoZSBkYXkgb2YgdGhlIHdlZWsgYW5kIHRoZSB5ZWFyIGFyZSBzcGVjaWZpZWQuCisgICBpbiBjYWxjdWxhdGlvbnMgd2hlbiB0aGUgZGF5IG9mIHRoZSB3ZWVrIGFuZCB0aGUgY2FsZW5kYXIgeWVhciAoYGAlWWBgKQorICAgYXJlIHNwZWNpZmllZC4KKworKDgpCisgICBTaW1pbGFyIHRvIGBgJVVgYCBhbmQgYGAlV2BgLCBgYCVWYGAgaXMgb25seSB1c2VkIGluIGNhbGN1bGF0aW9ucyB3aGVuIHRoZQorICAgZGF5IG9mIHRoZSB3ZWVrIGFuZCB0aGUgSVNPIHllYXIgKGBgJUdgYCkgYXJlIHNwZWNpZmllZCBpbiBhCisgICA6bWV0aDpgc3RycHRpbWVgIGZvcm1hdCBzdHJpbmcuIEFsc28gbm90ZSB0aGF0IGBgJUdgYCBhbmQgYGAlWWBgIGFyZSBub3QKKyAgIGludGVyY2hhbmdlYWJsZS4KIAogLi4gcnVicmljOjogRm9vdG5vdGVzCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2RibS5yc3QgYi9Eb2MvbGlicmFyeS9kYm0ucnN0CmluZGV4IDJhMWRiOTEuLjMyZTgwYjIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2RibS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZGJtLnJzdApAQCAtMzUxLDYgKzM1MSwxMCBAQAogICAgICAgOmZ1bmM6YC5vcGVuYCBhbHdheXMgY3JlYXRlcyBhIG5ldyBkYXRhYmFzZSB3aGVuIHRoZSBmbGFnIGhhcyB0aGUgdmFsdWUKICAgICAgIGBgJ24nYGAuCiAKKyAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuNiAzLjgKKyAgICAgIENyZWF0aW5nIGRhdGFiYXNlIGluIGBgJ3InYGAgYW5kIGBgJ3cnYGAgbW9kZXMuICBNb2RpZnlpbmcgZGF0YWJhc2UgaW4KKyAgICAgIGBgJ3InYGAgbW9kZS4KKwogICAgSW4gYWRkaXRpb24gdG8gdGhlIG1ldGhvZHMgcHJvdmlkZWQgYnkgdGhlCiAgICA6Y2xhc3M6YGNvbGxlY3Rpb25zLmFiYy5NdXRhYmxlTWFwcGluZ2AgY2xhc3MsIDpjbGFzczpgZHVtYmRibWAgb2JqZWN0cwogICAgcHJvdmlkZSB0aGUgZm9sbG93aW5nIG1ldGhvZHM6CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9kZWNpbWFsLnJzdCBiL0RvYy9saWJyYXJ5L2RlY2ltYWwucnN0CmluZGV4IGI1Y2UwYjEuLmU5ODRlZGMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2RlY2ltYWwucnN0CisrKyBiL0RvYy9saWJyYXJ5L2RlY2ltYWwucnN0CkBAIC0zNDUsNyArMzQ1LDcgQEAKICAgICp2YWx1ZSogY2FuIGJlIGFuIGludGVnZXIsIHN0cmluZywgdHVwbGUsIDpjbGFzczpgZmxvYXRgLCBvciBhbm90aGVyIDpjbGFzczpgRGVjaW1hbGAKICAgIG9iamVjdC4gSWYgbm8gKnZhbHVlKiBpcyBnaXZlbiwgcmV0dXJucyBgYERlY2ltYWwoJzAnKWBgLiAgSWYgKnZhbHVlKiBpcyBhCiAgICBzdHJpbmcsIGl0IHNob3VsZCBjb25mb3JtIHRvIHRoZSBkZWNpbWFsIG51bWVyaWMgc3RyaW5nIHN5bnRheCBhZnRlciBsZWFkaW5nCi0gICBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIGFyZSByZW1vdmVkOjoKKyAgIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMsIGFzIHdlbGwgYXMgdW5kZXJzY29yZXMgdGhyb3VnaG91dCwgYXJlIHJlbW92ZWQ6OgogCiAgICAgICBzaWduICAgICAgICAgICA6Oj0gICcrJyB8ICctJwogICAgICAgZGlnaXQgICAgICAgICAgOjo9ICAnMCcgfCAnMScgfCAnMicgfCAnMycgfCAnNCcgfCAnNScgfCAnNicgfCAnNycgfCAnOCcgfCAnOScKQEAgLTM5NCw2ICszOTQsMTAgQEAKICAgICAgIDpjbGFzczpgZmxvYXRgIGFyZ3VtZW50cyByYWlzZSBhbiBleGNlcHRpb24gaWYgdGhlIDpleGM6YEZsb2F0T3BlcmF0aW9uYAogICAgICAgdHJhcCBpcyBzZXQuIEJ5IGRlZmF1bHQgdGhlIHRyYXAgaXMgb2ZmLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgVW5kZXJzY29yZXMgYXJlIGFsbG93ZWQgZm9yIGdyb3VwaW5nLCBhcyB3aXRoIGludGVncmFsIGFuZCBmbG9hdGluZy1wb2ludAorICAgICAgbGl0ZXJhbHMgaW4gY29kZS4KKwogICAgRGVjaW1hbCBmbG9hdGluZyBwb2ludCBvYmplY3RzIHNoYXJlIG1hbnkgcHJvcGVydGllcyB3aXRoIHRoZSBvdGhlciBidWlsdC1pbgogICAgbnVtZXJpYyB0eXBlcyBzdWNoIGFzIDpjbGFzczpgZmxvYXRgIGFuZCA6Y2xhc3M6YGludGAuICBBbGwgb2YgdGhlIHVzdWFsIG1hdGgKICAgIG9wZXJhdGlvbnMgYW5kIHNwZWNpYWwgbWV0aG9kcyBhcHBseS4gIExpa2V3aXNlLCBkZWNpbWFsIG9iamVjdHMgY2FuIGJlCkBAIC00NDcsNiArNDUxLDE5IEBACiAgICAgICBgYERlY2ltYWwoJzMyMWUrNScpLmFkanVzdGVkKClgYCByZXR1cm5zIHNldmVuLiAgVXNlZCBmb3IgZGV0ZXJtaW5pbmcgdGhlCiAgICAgICBwb3NpdGlvbiBvZiB0aGUgbW9zdCBzaWduaWZpY2FudCBkaWdpdCB3aXRoIHJlc3BlY3QgdG8gdGhlIGRlY2ltYWwgcG9pbnQuCiAKKyAgIC4uIG1ldGhvZDo6IGFzX2ludGVnZXJfcmF0aW8oKQorCisgICAgICBSZXR1cm4gYSBwYWlyIGBgKG4sIGQpYGAgb2YgaW50ZWdlcnMgdGhhdCByZXByZXNlbnQgdGhlIGdpdmVuCisgICAgICA6Y2xhc3M6YERlY2ltYWxgIGluc3RhbmNlIGFzIGEgZnJhY3Rpb24sIGluIGxvd2VzdCB0ZXJtcyBhbmQKKyAgICAgIHdpdGggYSBwb3NpdGl2ZSBkZW5vbWluYXRvcjo6CisKKyAgICAgICAgICA+Pj4gRGVjaW1hbCgnLTMuMTQnKS5hc19pbnRlZ2VyX3JhdGlvKCkKKyAgICAgICAgICAoLTE1NywgNTApCisKKyAgICAgIFRoZSBjb252ZXJzaW9uIGlzIGV4YWN0LiAgUmFpc2UgT3ZlcmZsb3dFcnJvciBvbiBpbmZpbml0aWVzIGFuZCBWYWx1ZUVycm9yCisgICAgICBvbiBOYU5zLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKIAogICAgLi4gbWV0aG9kOjogYXNfdHVwbGUoKQogCkBAIC0xMDYyLDggKzEwNzksOCBAQAogICAgICAgICAgRGVjaW1hbCgnNC40NCcpCiAKICAgICAgIFRoaXMgbWV0aG9kIGltcGxlbWVudHMgdGhlIHRvLW51bWJlciBvcGVyYXRpb24gb2YgdGhlIElCTSBzcGVjaWZpY2F0aW9uLgotICAgICAgSWYgdGhlIGFyZ3VtZW50IGlzIGEgc3RyaW5nLCBubyBsZWFkaW5nIG9yIHRyYWlsaW5nIHdoaXRlc3BhY2UgaXMKLSAgICAgIHBlcm1pdHRlZC4KKyAgICAgIElmIHRoZSBhcmd1bWVudCBpcyBhIHN0cmluZywgbm8gbGVhZGluZyBvciB0cmFpbGluZyB3aGl0ZXNwYWNlIG9yCisgICAgICB1bmRlcnNjb3JlcyBhcmUgcGVybWl0dGVkLgogCiAgICAuLiBtZXRob2Q6OiBjcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0KGYpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2Rpcy5yc3QgYi9Eb2MvbGlicmFyeS9kaXMucnN0CmluZGV4IGY4NjcyNWIuLmExNTY5MGIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2Rpcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZGlzLnJzdApAQCAtMzEsOSArMzEsOSBAQAogCiAgICA+Pj4gZGlzLmRpcyhteWZ1bmMpCiAgICAgIDIgICAgICAgICAgIDAgTE9BRF9HTE9CQUwgICAgICAgICAgICAgIDAgKGxlbikKLSAgICAgICAgICAgICAgICAgMyBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMCAoYWxpc3QpCi0gICAgICAgICAgICAgICAgIDYgQ0FMTF9GVU5DVElPTiAgICAgICAgICAgIDEKLSAgICAgICAgICAgICAgICAgOSBSRVRVUk5fVkFMVUUKKyAgICAgICAgICAgICAgICAgMiBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMCAoYWxpc3QpCisgICAgICAgICAgICAgICAgIDQgQ0FMTF9GVU5DVElPTiAgICAgICAgICAgIDEKKyAgICAgICAgICAgICAgICAgNiBSRVRVUk5fVkFMVUUKIAogKFRoZSAiMiIgaXMgYSBsaW5lIG51bWJlcikuCiAKQEAgLTYwNyw2ICs2MDcsMTQgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKKy4uIG9wY29kZTo6IFNFVFVQX0FOTk9UQVRJT05TCisKKyAgIENoZWNrcyB3aGV0aGVyIGBgX19hbm5vdGF0aW9uc19fYGAgaXMgZGVmaW5lZCBpbiBgYGxvY2FscygpYGAsIGlmIG5vdCBpdCBpcworICAgc2V0IHVwIHRvIGFuIGVtcHR5IGBgZGljdGBgLiBUaGlzIG9wY29kZSBpcyBvbmx5IGVtaXR0ZWQgaWYgYSBjbGFzcworICAgb3IgbW9kdWxlIGJvZHkgY29udGFpbnMgOnRlcm06YHZhcmlhYmxlIGFubm90YXRpb25zIDx2YXJpYWJsZSBhbm5vdGF0aW9uPmAKKyAgIHN0YXRpY2FsbHkuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgogCiAuLiBvcGNvZGU6OiBJTVBPUlRfU1RBUgogCkBAIC02ODIsOCArNjkwLDcgQEAKICAgIC4uIFhYWCBleHBsYWluIHRoZSBXSFkgc3R1ZmYhCiAKIAotQWxsIG9mIHRoZSBmb2xsb3dpbmcgb3Bjb2RlcyBleHBlY3QgYXJndW1lbnRzLiAgQW4gYXJndW1lbnQgaXMgdHdvIGJ5dGVzLCB3aXRoCi10aGUgbW9yZSBzaWduaWZpY2FudCBieXRlIGxhc3QuCitBbGwgb2YgdGhlIGZvbGxvd2luZyBvcGNvZGVzIHVzZSB0aGVpciBhcmd1bWVudHMuCiAKIC4uIG9wY29kZTo6IFNUT1JFX05BTUUgKG5hbWVpKQogCkBAIC03NjksNiArNzc2LDIzIEBACiAgICB0byBob2xkICpjb3VudCogZW50cmllcy4KIAogCisuLiBvcGNvZGU6OiBCVUlMRF9DT05TVF9LRVlfTUFQIChjb3VudCkKKworICAgVGhlIHZlcnNpb24gb2YgOm9wY29kZTpgQlVJTERfTUFQYCBzcGVjaWFsaXplZCBmb3IgY29uc3RhbnQga2V5cy4gICpjb3VudCoKKyAgIHZhbHVlcyBhcmUgY29uc3VtZWQgZnJvbSB0aGUgc3RhY2suICBUaGUgdG9wIGVsZW1lbnQgb24gdGhlIHN0YWNrIGNvbnRhaW5zCisgICBhIHR1cGxlIG9mIGtleXMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisKKy4uIG9wY29kZTo6IEJVSUxEX1NUUklORyAoY291bnQpCisKKyAgIENvbmNhdGVuYXRlcyAqY291bnQqIHN0cmluZ3MgZnJvbSB0aGUgc3RhY2sgYW5kIHB1c2hlcyB0aGUgcmVzdWx0aW5nIHN0cmluZworICAgb250byB0aGUgc3RhY2suCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisKIC4uIG9wY29kZTo6IExPQURfQVRUUiAobmFtZWkpCiAKICAgIFJlcGxhY2VzIFRPUyB3aXRoIGBgZ2V0YXR0cihUT1MsIGNvX25hbWVzW25hbWVpXSlgYC4KQEAgLTg3NCw2ICs4OTgsMTMgQEAKICAgIERlbGV0ZXMgbG9jYWwgYGBjb192YXJuYW1lc1t2YXJfbnVtXWBgLgogCiAKKy4uIG9wY29kZTo6IFNUT1JFX0FOTk9UQVRJT04gKG5hbWVpKQorCisgICBTdG9yZXMgVE9TIGFzIGBgbG9jYWxzKClbJ19fYW5ub3RhdGlvbnNfXyddW2NvX25hbWVzW25hbWVpXV0gPSBUT1NgYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKwogLi4gb3Bjb2RlOjogTE9BRF9DTE9TVVJFIChpKQogCiAgICBQdXNoZXMgYSByZWZlcmVuY2UgdG8gdGhlIGNlbGwgY29udGFpbmVkIGluIHNsb3QgKmkqIG9mIHRoZSBjZWxsIGFuZCBmcmVlCkBAIC05MjksMjcgKzk2MCwxNiBAQAogLi4gb3Bjb2RlOjogTUFLRV9GVU5DVElPTiAoYXJnYykKIAogICAgUHVzaGVzIGEgbmV3IGZ1bmN0aW9uIG9iamVjdCBvbiB0aGUgc3RhY2suICBGcm9tIGJvdHRvbSB0byB0b3AsIHRoZSBjb25zdW1lZAotICAgc3RhY2sgbXVzdCBjb25zaXN0IG9mCisgICBzdGFjayBtdXN0IGNvbnNpc3Qgb2YgdmFsdWVzIGlmIHRoZSBhcmd1bWVudCBjYXJyaWVzIGEgc3BlY2lmaWVkIGZsYWcgdmFsdWUKIAotICAgKiBgYGFyZ2MgJiAweEZGYGAgZGVmYXVsdCBhcmd1bWVudCBvYmplY3RzIGluIHBvc2l0aW9uYWwgb3JkZXIKLSAgICogYGAoYXJnYyA+PiA4KSAmIDB4RkZgYCBwYWlycyBvZiBuYW1lIGFuZCBkZWZhdWx0IGFyZ3VtZW50LCB3aXRoIHRoZSBuYW1lCi0gICAgIGp1c3QgYmVsb3cgdGhlIG9iamVjdCBvbiB0aGUgc3RhY2ssIGZvciBrZXl3b3JkLW9ubHkgcGFyYW1ldGVycwotICAgKiBgYChhcmdjID4+IDE2KSAmIDB4N0ZGRmBgIHBhcmFtZXRlciBhbm5vdGF0aW9uIG9iamVjdHMKLSAgICogYSB0dXBsZSBsaXN0aW5nIHRoZSBwYXJhbWV0ZXIgbmFtZXMgZm9yIHRoZSBhbm5vdGF0aW9ucyAob25seSBpZiB0aGVyZSBhcmUKLSAgICAgb255IGFubm90YXRpb24gb2JqZWN0cykKKyAgICogYGAweDAxYGAgYSB0dXBsZSBvZiBkZWZhdWx0IGFyZ3VtZW50IG9iamVjdHMgaW4gcG9zaXRpb25hbCBvcmRlcgorICAgKiBgYDB4MDJgYCBhIGRpY3Rpb25hcnkgb2Yga2V5d29yZC1vbmx5IHBhcmFtZXRlcnMnIGRlZmF1bHQgdmFsdWVzCisgICAqIGBgMHgwNGBgIGFuIGFubm90YXRpb24gZGljdGlvbmFyeQorICAgKiBgYDB4MDhgYCBhIHR1cGxlIGNvbnRhaW5pbmcgY2VsbHMgZm9yIGZyZWUgdmFyaWFibGVzLCBtYWtpbmcgYSBjbG9zdXJlCiAgICAqIHRoZSBjb2RlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZnVuY3Rpb24gKGF0IFRPUzEpCiAgICAqIHRoZSA6dGVybTpgcXVhbGlmaWVkIG5hbWVgIG9mIHRoZSBmdW5jdGlvbiAoYXQgVE9TKQogCiAKLS4uIG9wY29kZTo6IE1BS0VfQ0xPU1VSRSAoYXJnYykKLQotICAgQ3JlYXRlcyBhIG5ldyBmdW5jdGlvbiBvYmplY3QsIHNldHMgaXRzICpfX2Nsb3N1cmVfXyogc2xvdCwgYW5kIHB1c2hlcyBpdCBvbgotICAgdGhlIHN0YWNrLiAgVE9TIGlzIHRoZSA6dGVybTpgcXVhbGlmaWVkIG5hbWVgIG9mIHRoZSBmdW5jdGlvbiwgVE9TMSBpcyB0aGUKLSAgIGNvZGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBmdW5jdGlvbiwgYW5kIFRPUzIgaXMgdGhlIHR1cGxlIGNvbnRhaW5pbmcgY2VsbHMgZm9yCi0gICB0aGUgY2xvc3VyZSdzIGZyZWUgdmFyaWFibGVzLiAgKmFyZ2MqIGlzIGludGVycHJldGVkIGFzIGluIGBgTUFLRV9GVU5DVElPTmBgOwotICAgdGhlIGFubm90YXRpb25zIGFuZCBkZWZhdWx0cyBhcmUgYWxzbyBpbiB0aGUgc2FtZSBvcmRlciBiZWxvdyBUT1MyLgotCi0KIC4uIG9wY29kZTo6IEJVSUxEX1NMSUNFIChhcmdjKQogCiAgICAuLiBpbmRleDo6IGJ1aWx0aW46IHNsaWNlCkBAIC05ODksNiArMTAwOSwyOCBAQAogICAgYXJndW1lbnRzLgogCiAKKy4uIG9wY29kZTo6IEZPUk1BVF9WQUxVRSAoZmxhZ3MpCisKKyAgIFVzZWQgZm9yIGltcGxlbWVudGluZyBmb3JtYXR0ZWQgbGl0ZXJhbCBzdHJpbmdzIChmLXN0cmluZ3MpLiAgUG9wcworICAgYW4gb3B0aW9uYWwgKmZtdF9zcGVjKiBmcm9tIHRoZSBzdGFjaywgdGhlbiBhIHJlcXVpcmVkICp2YWx1ZSouCisgICAqZmxhZ3MqIGlzIGludGVycHJldGVkIGFzIGZvbGxvd3M6CisKKyAgICogYGAoZmxhZ3MgJiAweDAzKSA9PSAweDAwYGA6ICp2YWx1ZSogaXMgZm9ybWF0dGVkIGFzLWlzLgorICAgKiBgYChmbGFncyAmIDB4MDMpID09IDB4MDFgYDogY2FsbCA6ZnVuYzpgc3RyYCBvbiAqdmFsdWUqIGJlZm9yZQorICAgICBmb3JtYXR0aW5nIGl0LgorICAgKiBgYChmbGFncyAmIDB4MDMpID09IDB4MDJgYDogY2FsbCA6ZnVuYzpgcmVwcmAgb24gKnZhbHVlKiBiZWZvcmUKKyAgICAgZm9ybWF0dGluZyBpdC4KKyAgICogYGAoZmxhZ3MgJiAweDAzKSA9PSAweDAzYGA6IGNhbGwgOmZ1bmM6YGFzY2lpYCBvbiAqdmFsdWUqIGJlZm9yZQorICAgICBmb3JtYXR0aW5nIGl0LgorICAgKiBgYChmbGFncyAmIDB4MDQpID09IDB4MDRgYDogcG9wICpmbXRfc3BlYyogZnJvbSB0aGUgc3RhY2sgYW5kIHVzZQorICAgICBpdCwgZWxzZSB1c2UgYW4gZW1wdHkgKmZtdF9zcGVjKi4KKworICAgRm9ybWF0dGluZyBpcyBwZXJmb3JtZWQgdXNpbmcgOmM6ZnVuYzpgUHlPYmplY3RfRm9ybWF0YC4gIFRoZQorICAgcmVzdWx0IGlzIHB1c2hlZCBvbiB0aGUgc3RhY2suCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisKIC4uIG9wY29kZTo6IEhBVkVfQVJHVU1FTlQKIAogICAgVGhpcyBpcyBub3QgcmVhbGx5IGFuIG9wY29kZS4gIEl0IGlkZW50aWZpZXMgdGhlIGRpdmlkaW5nIGxpbmUgYmV0d2VlbgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwtZXhhbXBsZXMucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwtZXhhbXBsZXMucnN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZDkzYjVjLi4wMDAwMDAwCi0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLWV4YW1wbGVzLnJzdAorKysgL2Rldi9udWxsCkBAIC0xLDc4ICswLDAgQEAKLS4uIF9lbWFpbC1leGFtcGxlczoKLQotOm1vZDpgZW1haWxgOiBFeGFtcGxlcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1IZXJlIGFyZSBhIGZldyBleGFtcGxlcyBvZiBob3cgdG8gdXNlIHRoZSA6bW9kOmBlbWFpbGAgcGFja2FnZSB0byByZWFkLCB3cml0ZSwKLWFuZCBzZW5kIHNpbXBsZSBlbWFpbCBtZXNzYWdlcywgYXMgd2VsbCBhcyBtb3JlIGNvbXBsZXggTUlNRSBtZXNzYWdlcy4KLQotRmlyc3QsIGxldCdzIHNlZSBob3cgdG8gY3JlYXRlIGFuZCBzZW5kIGEgc2ltcGxlIHRleHQgbWVzc2FnZToKLQotLi4gbGl0ZXJhbGluY2x1ZGU6OiAuLi9pbmNsdWRlcy9lbWFpbC1zaW1wbGUucHkKLQotCi1BbmQgcGFyc2luZyBSRkM4MjIgaGVhZGVycyBjYW4gZWFzaWx5IGJlIGRvbmUgYnkgdGhlIHBhcnNlKGZpbGVuYW1lKSBvcgotcGFyc2VzdHIobWVzc2FnZV9hc19zdHJpbmcpIG1ldGhvZHMgb2YgdGhlIFBhcnNlcigpIGNsYXNzOgotCi0uLiBsaXRlcmFsaW5jbHVkZTo6IC4uL2luY2x1ZGVzL2VtYWlsLWhlYWRlcnMucHkKLQotCi1IZXJlJ3MgYW4gZXhhbXBsZSBvZiBob3cgdG8gc2VuZCBhIE1JTUUgbWVzc2FnZSBjb250YWluaW5nIGEgYnVuY2ggb2YgZmFtaWx5Ci1waWN0dXJlcyB0aGF0IG1heSBiZSByZXNpZGluZyBpbiBhIGRpcmVjdG9yeToKLQotLi4gbGl0ZXJhbGluY2x1ZGU6OiAuLi9pbmNsdWRlcy9lbWFpbC1taW1lLnB5Ci0KLQotSGVyZSdzIGFuIGV4YW1wbGUgb2YgaG93IHRvIHNlbmQgdGhlIGVudGlyZSBjb250ZW50cyBvZiBhIGRpcmVjdG9yeSBhcyBhbiBlbWFpbAotbWVzc2FnZTogWzFdXwotCi0uLiBsaXRlcmFsaW5jbHVkZTo6IC4uL2luY2x1ZGVzL2VtYWlsLWRpci5weQotCi0KLUhlcmUncyBhbiBleGFtcGxlIG9mIGhvdyB0byB1bnBhY2sgYSBNSU1FIG1lc3NhZ2UgbGlrZSB0aGUgb25lCi1hYm92ZSwgaW50byBhIGRpcmVjdG9yeSBvZiBmaWxlczoKLQotLi4gbGl0ZXJhbGluY2x1ZGU6OiAuLi9pbmNsdWRlcy9lbWFpbC11bnBhY2sucHkKLQotSGVyZSdzIGFuIGV4YW1wbGUgb2YgaG93IHRvIGNyZWF0ZSBhbiBIVE1MIG1lc3NhZ2Ugd2l0aCBhbiBhbHRlcm5hdGl2ZSBwbGFpbgotdGV4dCB2ZXJzaW9uOiBbMl1fCi0KLS4uIGxpdGVyYWxpbmNsdWRlOjogLi4vaW5jbHVkZXMvZW1haWwtYWx0ZXJuYXRpdmUucHkKLQotCi0uLiBfZW1haWwtY29udGVudG1hbmFnZXItYXBpLWV4YW1wbGVzOgotCi1FeGFtcGxlcyB1c2luZyB0aGUgUHJvdmlzaW9uYWwgQVBJCi1+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+Ci1IZXJlIGlzIGEgcmV3b3JraW5nIG9mIHRoZSBsYXN0IGV4YW1wbGUgdXNpbmcgdGhlIHByb3Zpc2lvbmFsIEFQSS4gIFRvIG1ha2UKLXRoaW5ncyBhIGJpdCBtb3JlIGludGVyZXN0aW5nLCB3ZSBpbmNsdWRlIGEgcmVsYXRlZCBpbWFnZSBpbiB0aGUgaHRtbCBwYXJ0LCBhbmQKLXdlIHNhdmUgYSBjb3B5IG9mIHdoYXQgd2UgYXJlIGdvaW5nIHRvIHNlbmQgdG8gZGlzaywgYXMgd2VsbCBhcyBzZW5kaW5nIGl0LgotCi1UaGlzIGV4YW1wbGUgYWxzbyBzaG93cyBob3cgZWFzeSBpdCBpcyB0byBpbmNsdWRlIG5vbi1BU0NJSSwgYW5kIHNpbXBsaWZpZXMgdGhlCi1zZW5kaW5nIG9mIHRoZSBtZXNzYWdlIHVzaW5nIHRoZSA6bWV0aDpgLnNlbmRfbWVzc2FnZWAgbWV0aG9kIG9mIHRoZQotOm1vZDpgc210cGxpYmAgbW9kdWxlLgotCi0uLiBsaXRlcmFsaW5jbHVkZTo6IC4uL2luY2x1ZGVzL2VtYWlsLWFsdGVybmF0aXZlLW5ldy1hcGkucHkKLQotSWYgd2Ugd2VyZSBpbnN0ZWFkIHNlbnQgdGhlIG1lc3NhZ2UgZnJvbSB0aGUgbGFzdCBleGFtcGxlLCBoZXJlIGlzIG9uZQotd2F5IHdlIGNvdWxkIHByb2Nlc3MgaXQ6Ci0KLS4uIGxpdGVyYWxpbmNsdWRlOjogLi4vaW5jbHVkZXMvZW1haWwtcmVhZC1hbHRlcm5hdGl2ZS1uZXctYXBpLnB5Ci0KLVVwIHRvIHRoZSBwcm9tcHQsIHRoZSBvdXRwdXQgZnJvbSB0aGUgYWJvdmUgaXM6Ci0KLS4uIGNvZGUtYmxvY2s6OiBub25lCi0KLSAgICBUbzogUGVuZWxvcGUgUHVzc3ljYXQgPHBlbmVsb3BlQGV4YW1wbGUuY29tPiwgRmFicmV0dGUgUHVzc3ljYXQgPGZhYnJldHRlQGV4YW1wbGUuY29tPgotICAgIEZyb206IFBlcMOpIExlIFBldyA8cGVwZUBleGFtcGxlLmNvbT4KLSAgICBTdWJqZWN0OiBBeW9ucyBhc3BlcmdlcyBwb3VyIGxlIGTDqWpldW5lcgotCi0gICAgU2FsdXQhCi0KLSAgICBDZWxhIHJlc3NlbWJsZSDDoCB1biBleGNlbGxlbnQgcmVjaXBpZVsxXSBkw6lqZXVuZXIuCi0KLQotLi4gcnVicmljOjogRm9vdG5vdGVzCi0KLS4uIFsxXSBUaGFua3MgdG8gTWF0dGhldyBEaXhvbiBDb3dsZXMgZm9yIHRoZSBvcmlnaW5hbCBpbnNwaXJhdGlvbiBhbmQgZXhhbXBsZXMuCi0uLiBbMl0gQ29udHJpYnV0ZWQgYnkgTWFydGluIE1hdGVqZWsuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbWFpbC5jaGFyc2V0LnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLmNoYXJzZXQucnN0CmluZGV4IDE2MWQ4NmEuLjA1MzQ2M2YgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLmNoYXJzZXQucnN0CisrKyBiL0RvYy9saWJyYXJ5L2VtYWlsLmNoYXJzZXQucnN0CkBAIC04LDYgKzgsMTEgQEAKIAogLS0tLS0tLS0tLS0tLS0KIAorVGhpcyBtb2R1bGUgaXMgcGFydCBvZiB0aGUgbGVnYWN5IChgYENvbXBhdDMyYGApIGVtYWlsIEFQSS4gIEluIHRoZSBuZXcKK0FQSSBvbmx5IHRoZSBhbGlhc2VzIHRhYmxlIGlzIHVzZWQuCisKK1RoZSByZW1haW5pbmcgdGV4dCBpbiB0aGlzIHNlY3Rpb24gaXMgdGhlIG9yaWdpbmFsIGRvY3VtZW50YXRpb24gb2YgdGhlIG1vZHVsZS4KKwogVGhpcyBtb2R1bGUgcHJvdmlkZXMgYSBjbGFzcyA6Y2xhc3M6YENoYXJzZXRgIGZvciByZXByZXNlbnRpbmcgY2hhcmFjdGVyIHNldHMKIGFuZCBjaGFyYWN0ZXIgc2V0IGNvbnZlcnNpb25zIGluIGVtYWlsIG1lc3NhZ2VzLCBhcyB3ZWxsIGFzIGEgY2hhcmFjdGVyIHNldAogcmVnaXN0cnkgYW5kIHNldmVyYWwgY29udmVuaWVuY2UgbWV0aG9kcyBmb3IgbWFuaXB1bGF0aW5nIHRoaXMgcmVnaXN0cnkuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbWFpbC5jb21wYXQzMi1tZXNzYWdlLnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLmNvbXBhdDMyLW1lc3NhZ2UucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjNjUwNzkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5jb21wYXQzMi1tZXNzYWdlLnJzdApAQCAtMCwwICsxLDc1NCBAQAorLi4gX2NvbXBhdDMyX21lc3NhZ2U6CisKKzptb2Q6YGVtYWlsLm1lc3NhZ2UuTWVzc2FnZWA6IFJlcHJlc2VudGluZyBhbiBlbWFpbCBtZXNzYWdlIHVzaW5nIHRoZSA6ZGF0YTpgfmVtYWlsLnBvbGljeS5jb21wYXQzMmAgQVBJCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiBtb2R1bGU6OiBlbWFpbC5tZXNzYWdlCisgICA6c3lub3BzaXM6IFRoZSBiYXNlIGNsYXNzIHJlcHJlc2VudGluZyBlbWFpbCBtZXNzYWdlcyBpbiBhIGZhc2hpb24KKyAgICAgICAgICAgICAgYmFja3dhcmQgY29tcGF0aWJsZSB3aXRoIHB5dGhvbjMuMgorCisKK1RoZSA6Y2xhc3M6YE1lc3NhZ2VgIGNsYXNzIGlzIHZlcnkgc2ltaWxhciB0byB0aGUKKzpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCBjbGFzcywgd2l0aG91dCB0aGUgbWV0aG9kcyBhZGRlZCBieSB0aGF0CitjbGFzcywgYW5kIHdpdGggdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgY2VydGFpbiBvdGhlciBtZXRob2RzIGJlaW5nIHNsaWdodGx5CitkaWZmZXJlbnQuICBXZSBhbHNvIGRvY3VtZW50IGhlcmUgc29tZSBtZXRob2RzIHRoYXQsIHdoaWxlIHN1cHBvcnRlZCBieSB0aGUKKzpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCBjbGFzcywgYXJlIG5vdCByZWNvbW1lbmRlZCB1bmxlc3MgeW91IGFyZQorZGVhbGluZyB3aXRoIGxlZ2FjeSBjb2RlLgorCitUaGUgcGhpbG9zb3BoeSBhbmQgc3RydWN0dXJlIG9mIHRoZSB0d28gY2xhc3NlcyBpcyBvdGhlcndpc2UgdGhlIHNhbWUuCisKK1RoaXMgZG9jdW1lbnQgZGVzY3JpYmVzIHRoZSBiZWhhdmlvciB1bmRlciB0aGUgZGVmYXVsdCAoZm9yIDpjbGFzczpgTWVzc2FnZWApCitwb2xpY3kgOmF0dHI6YH5lbWFpbC5wb2xpY3kuQ29tcGF0MzJgLiAgSWYgeW91IGFyZSBnb2luZyB0byB1c2UgYW5vdGhlciBwb2xpY3ksCit5b3Ugc2hvdWxkIGJlIHVzaW5nIHRoZSA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgY2xhc3MgaW5zdGVhZC4KKworQW4gZW1haWwgbWVzc2FnZSBjb25zaXN0cyBvZiAqaGVhZGVycyogYW5kIGEgKnBheWxvYWQqLiAgSGVhZGVycyBtdXN0IGJlCis6cmZjOmA1MjMzYCBzdHlsZSBuYW1lcyBhbmQgdmFsdWVzLCB3aGVyZSB0aGUgZmllbGQgbmFtZSBhbmQgdmFsdWUgYXJlCitzZXBhcmF0ZWQgYnkgYSBjb2xvbi4gIFRoZSBjb2xvbiBpcyBub3QgcGFydCBvZiBlaXRoZXIgdGhlIGZpZWxkIG5hbWUgb3IgdGhlCitmaWVsZCB2YWx1ZS4gIFRoZSBwYXlsb2FkIG1heSBiZSBhIHNpbXBsZSB0ZXh0IG1lc3NhZ2UsIG9yIGEgYmluYXJ5IG9iamVjdCwgb3IKK2Egc3RydWN0dXJlZCBzZXF1ZW5jZSBvZiBzdWItbWVzc2FnZXMgZWFjaCB3aXRoIHRoZWlyIG93biBzZXQgb2YgaGVhZGVycyBhbmQKK3RoZWlyIG93biBwYXlsb2FkLiAgVGhlIGxhdHRlciB0eXBlIG9mIHBheWxvYWQgaXMgaW5kaWNhdGVkIGJ5IHRoZSBtZXNzYWdlCitoYXZpbmcgYSBNSU1FIHR5cGUgc3VjaCBhcyA6bWltZXR5cGU6YG11bHRpcGFydC9cKmAgb3IKKzptaW1ldHlwZTpgbWVzc2FnZS9yZmM4MjJgLgorCitUaGUgY29uY2VwdHVhbCBtb2RlbCBwcm92aWRlZCBieSBhIDpjbGFzczpgTWVzc2FnZWAgb2JqZWN0IGlzIHRoYXQgb2YgYW4KK29yZGVyZWQgZGljdGlvbmFyeSBvZiBoZWFkZXJzIHdpdGggYWRkaXRpb25hbCBtZXRob2RzIGZvciBhY2Nlc3NpbmcgYm90aAorc3BlY2lhbGl6ZWQgaW5mb3JtYXRpb24gZnJvbSB0aGUgaGVhZGVycywgZm9yIGFjY2Vzc2luZyB0aGUgcGF5bG9hZCwgZm9yCitnZW5lcmF0aW5nIGEgc2VyaWFsaXplZCB2ZXJzaW9uIG9mIHRoZSBtc3NhZ2UsIGFuZCBmb3IgcmVjdXJzaXZlbHkgd2Fsa2luZyBvdmVyCit0aGUgb2JqZWN0IHRyZWUuICBOb3RlIHRoYXQgZHVwbGljYXRlIGhlYWRlcnMgYXJlIHN1cHBvcnRlZCBidXQgc3BlY2lhbCBtZXRob2RzCittdXN0IGJlIHVzZWQgdG8gYWNjZXNzIHRoZW0uCisKK1RoZSA6Y2xhc3M6YE1lc3NhZ2VgIHBzdWVkby1kaWN0aW9uYXJ5IGlzIGluZGV4ZWQgYnkgdGhlIGhlYWRlciBuYW1lcywgd2hpY2gKK211c3QgYmUgQVNDSUkgdmFsdWVzLiAgVGhlIHZhbHVlcyBvZiB0aGUgZGljdGlvbmFyeSBhcmUgc3RyaW5ncyB0aGF0IGFyZQorc3VwcG9zZWQgdG8gY29udGFpbiBvbmx5IEFTQ0lJIGNoYXJhY3RlcnM7IHRoZXJlIGlzIHNvbWUgc3BlY2lhbCBoYW5kbGluZyBmb3IKK25vbi1BU0NJSSBpbnB1dCwgYnV0IGl0IGRvZXNuJ3QgYWx3YXlzIHByb2R1Y2UgdGhlIGNvcnJlY3QgcmVzdWx0cy4gIEhlYWRlcnMKK2FyZSBzdG9yZWQgYW5kIHJldHVybmVkIGluIGNhc2UtcHJlc2VydmluZyBmb3JtLCBidXQgZmllbGQgbmFtZXMgYXJlIG1hdGNoZWQKK2Nhc2UtaW5zZW5zaXRpdmVseS4gIFRoZXJlIG1heSBhbHNvIGJlIGEgc2luZ2xlIGVudmVsb3BlIGhlYWRlciwgYWxzbyBrbm93biBhcwordGhlICpVbml4LUZyb20qIGhlYWRlciBvciB0aGUgYGBGcm9tX2BgIGhlYWRlci4gIFRoZSAqcGF5bG9hZCogaXMgZWl0aGVyIGEKK3N0cmluZyBvciBieXRlcywgaW4gdGhlIGNhc2Ugb2Ygc2ltcGxlIG1lc3NhZ2Ugb2JqZWN0cywgb3IgYSBsaXN0IG9mCis6Y2xhc3M6YE1lc3NhZ2VgIG9iamVjdHMsIGZvciBNSU1FIGNvbnRhaW5lciBkb2N1bWVudHMgKGUuZy4KKzptaW1ldHlwZTpgbXVsdGlwYXJ0L1wqYCBhbmQgOm1pbWV0eXBlOmBtZXNzYWdlL3JmYzgyMmApLgorCitIZXJlIGFyZSB0aGUgbWV0aG9kcyBvZiB0aGUgOmNsYXNzOmBNZXNzYWdlYCBjbGFzczoKKworCisuLiBjbGFzczo6IE1lc3NhZ2UocG9saWN5PWNvbXBhdDMyKQorCisgICBJZiAqcG9saWN5KiBpcyBzcGVjaWZpZWQgKGl0IG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgYSA6bW9kOmB+ZW1haWwucG9saWN5YAorICAgY2xhc3MpIHVzZSB0aGUgcnVsZXMgaXQgc3BlY2lmaWVzIHRvIHVwZGF0ZSBhbmQgc2VyaWFsaXplIHRoZSByZXByZXNlbnRhdGlvbgorICAgb2YgdGhlIG1lc3NhZ2UuICBJZiAqcG9saWN5KiBpcyBub3Qgc2V0LCB1c2UgdGhlIDpjbGFzczpgY29tcGF0MzIKKyAgIDxlbWFpbC5wb2xpY3kuQ29tcGF0MzI+YCBwb2xpY3ksIHdoaWNoIG1haW50YWlucyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGgKKyAgIHRoZSBQeXRob24gMy4yIHZlcnNpb24gb2YgdGhlIGVtYWlsIHBhY2thZ2UuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgdGhlCisgICA6bW9kOmB+ZW1haWwucG9saWN5YCBkb2N1bWVudGF0aW9uLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMyBUaGUgKnBvbGljeSoga2V5d29yZCBhcmd1bWVudCB3YXMgYWRkZWQuCisKKworICAgLi4gbWV0aG9kOjogYXNfc3RyaW5nKHVuaXhmcm9tPUZhbHNlLCBtYXhoZWFkZXJsZW49MCwgcG9saWN5PU5vbmUpCisKKyAgICAgIFJldHVybiB0aGUgZW50aXJlIG1lc3NhZ2UgZmxhdHRlbmVkIGFzIGEgc3RyaW5nLiAgV2hlbiBvcHRpb25hbCAqdW5peGZyb20qCisgICAgICBpcyB0cnVlLCB0aGUgZW52ZWxvcGUgaGVhZGVyIGlzIGluY2x1ZGVkIGluIHRoZSByZXR1cm5lZCBzdHJpbmcuCisgICAgICAqdW5peGZyb20qIGRlZmF1bHRzIHRvIGBgRmFsc2VgYC4gIEZvciBiYWNrd2FyZCBjb21wYWJpdGlsaXR5IHJlYXNvbnMsCisgICAgICAqbWF4aGVhZGVybGVuKiBkZWZhdWx0cyB0byBgYDBgYCwgc28gaWYgeW91IHdhbnQgYSBkaWZmZXJlbnQgdmFsdWUgeW91CisgICAgICBtdXN0IG92ZXJyaWRlIGl0IGV4cGxpY2l0bHkgKHRoZSB2YWx1ZSBzcGVjaWZpZWQgZm9yICptYXhfbGluZV9sZW5ndGgqIGluCisgICAgICB0aGUgcG9saWN5IHdpbGwgYmUgaWdub3JlZCBieSB0aGlzIG1ldGhvZCkuICBUaGUgKnBvbGljeSogYXJndW1lbnQgbWF5IGJlCisgICAgICB1c2VkIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHBvbGljeSBvYnRhaW5lZCBmcm9tIHRoZSBtZXNzYWdlIGluc3RhbmNlLgorICAgICAgVGhpcyBjYW4gYmUgdXNlZCB0byBjb250cm9sIHNvbWUgb2YgdGhlIGZvcm1hdHRpbmcgcHJvZHVjZWQgYnkgdGhlCisgICAgICBtZXRob2QsIHNpbmNlIHRoZSBzcGVjaWZpZWQgKnBvbGljeSogd2lsbCBiZSBwYXNzZWQgdG8gdGhlIGBgR2VuZXJhdG9yYGAuCisKKyAgICAgIEZsYXR0ZW5pbmcgdGhlIG1lc3NhZ2UgbWF5IHRyaWdnZXIgY2hhbmdlcyB0byB0aGUgOmNsYXNzOmBNZXNzYWdlYCBpZgorICAgICAgZGVmYXVsdHMgbmVlZCB0byBiZSBmaWxsZWQgaW4gdG8gY29tcGxldGUgdGhlIHRyYW5zZm9ybWF0aW9uIHRvIGEgc3RyaW5nCisgICAgICAoZm9yIGV4YW1wbGUsIE1JTUUgYm91bmRhcmllcyBtYXkgYmUgZ2VuZXJhdGVkIG9yIG1vZGlmaWVkKS4KKworICAgICAgTm90ZSB0aGF0IHRoaXMgbWV0aG9kIGlzIHByb3ZpZGVkIGFzIGEgY29udmVuaWVuY2UgYW5kIG1heSBub3QgYWx3YXlzCisgICAgICBmb3JtYXQgdGhlIG1lc3NhZ2UgdGhlIHdheSB5b3Ugd2FudC4gIEZvciBleGFtcGxlLCBieSBkZWZhdWx0IGl0IGRvZXMKKyAgICAgIG5vdCBkbyB0aGUgbWFuZ2xpbmcgb2YgbGluZXMgdGhhdCBiZWdpbiB3aXRoIGBgRnJvbWBgIHRoYXQgaXMKKyAgICAgIHJlcXVpcmVkIGJ5IHRoZSB1bml4IG1ib3ggZm9ybWF0LiAgRm9yIG1vcmUgZmxleGliaWxpdHksIGluc3RhbnRpYXRlIGEKKyAgICAgIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5HZW5lcmF0b3JgIGluc3RhbmNlIGFuZCB1c2UgaXRzCisgICAgICA6bWV0aDpgfmVtYWlsLmdlbmVyYXRvci5HZW5lcmF0b3IuZmxhdHRlbmAgbWV0aG9kIGRpcmVjdGx5LiAgRm9yIGV4YW1wbGU6OgorCisgICAgICAgICBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTworICAgICAgICAgZnJvbSBlbWFpbC5nZW5lcmF0b3IgaW1wb3J0IEdlbmVyYXRvcgorICAgICAgICAgZnAgPSBTdHJpbmdJTygpCisgICAgICAgICBnID0gR2VuZXJhdG9yKGZwLCBtYW5nbGVfZnJvbV89VHJ1ZSwgbWF4aGVhZGVybGVuPTYwKQorICAgICAgICAgZy5mbGF0dGVuKG1zZykKKyAgICAgICAgIHRleHQgPSBmcC5nZXR2YWx1ZSgpCisKKyAgICAgIElmIHRoZSBtZXNzYWdlIG9iamVjdCBjb250YWlucyBiaW5hcnkgZGF0YSB0aGF0IGlzIG5vdCBlbmNvZGVkIGFjY29yZGluZworICAgICAgdG8gUkZDIHN0YW5kYXJkcywgdGhlIG5vbi1jb21wbGlhbnQgZGF0YSB3aWxsIGJlIHJlcGxhY2VkIGJ5IHVuaWNvZGUKKyAgICAgICJ1bmtub3duIGNoYXJhY3RlciIgY29kZSBwb2ludHMuICAoU2VlIGFsc28gOm1ldGg6YC5hc19ieXRlc2AgYW5kCisgICAgICA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuQnl0ZXNHZW5lcmF0b3JgLikKKworICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQgdGhlICpwb2xpY3kqIGtleXdvcmQgYXJndW1lbnQgd2FzIGFkZGVkLgorCisKKyAgIC4uIG1ldGhvZDo6IF9fc3RyX18oKQorCisgICAgICBFcXVpdmFsZW50IHRvIDptZXRoOmAuYXNfc3RyaW5nKClgLiAgQWxsb3dzIGBgc3RyKG1zZylgYCB0byBwcm9kdWNlIGEKKyAgICAgIHN0cmluZyBjb250YWluaW5nIHRoZSBmb3JtYXR0ZWQgbWVzc2FnZS4KKworCisgICAuLiBtZXRob2Q6OiBhc19ieXRlcyh1bml4ZnJvbT1GYWxzZSwgcG9saWN5PU5vbmUpCisKKyAgICAgIFJldHVybiB0aGUgZW50aXJlIG1lc3NhZ2UgZmxhdHRlbmVkIGFzIGEgYnl0ZXMgb2JqZWN0LiAgV2hlbiBvcHRpb25hbAorICAgICAgKnVuaXhmcm9tKiBpcyB0cnVlLCB0aGUgZW52ZWxvcGUgaGVhZGVyIGlzIGluY2x1ZGVkIGluIHRoZSByZXR1cm5lZAorICAgICAgc3RyaW5nLiAgKnVuaXhmcm9tKiBkZWZhdWx0cyB0byBgYEZhbHNlYGAuICBUaGUgKnBvbGljeSogYXJndW1lbnQgbWF5IGJlCisgICAgICB1c2VkIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHBvbGljeSBvYnRhaW5lZCBmcm9tIHRoZSBtZXNzYWdlIGluc3RhbmNlLgorICAgICAgVGhpcyBjYW4gYmUgdXNlZCB0byBjb250cm9sIHNvbWUgb2YgdGhlIGZvcm1hdHRpbmcgcHJvZHVjZWQgYnkgdGhlCisgICAgICBtZXRob2QsIHNpbmNlIHRoZSBzcGVjaWZpZWQgKnBvbGljeSogd2lsbCBiZSBwYXNzZWQgdG8gdGhlCisgICAgICBgYEJ5dGVzR2VuZXJhdG9yYGAuCisKKyAgICAgIEZsYXR0ZW5pbmcgdGhlIG1lc3NhZ2UgbWF5IHRyaWdnZXIgY2hhbmdlcyB0byB0aGUgOmNsYXNzOmBNZXNzYWdlYCBpZgorICAgICAgZGVmYXVsdHMgbmVlZCB0byBiZSBmaWxsZWQgaW4gdG8gY29tcGxldGUgdGhlIHRyYW5zZm9ybWF0aW9uIHRvIGEgc3RyaW5nCisgICAgICAoZm9yIGV4YW1wbGUsIE1JTUUgYm91bmRhcmllcyBtYXkgYmUgZ2VuZXJhdGVkIG9yIG1vZGlmaWVkKS4KKworICAgICAgTm90ZSB0aGF0IHRoaXMgbWV0aG9kIGlzIHByb3ZpZGVkIGFzIGEgY29udmVuaWVuY2UgYW5kIG1heSBub3QgYWx3YXlzCisgICAgICBmb3JtYXQgdGhlIG1lc3NhZ2UgdGhlIHdheSB5b3Ugd2FudC4gIEZvciBleGFtcGxlLCBieSBkZWZhdWx0IGl0IGRvZXMKKyAgICAgIG5vdCBkbyB0aGUgbWFuZ2xpbmcgb2YgbGluZXMgdGhhdCBiZWdpbiB3aXRoIGBgRnJvbWBgIHRoYXQgaXMKKyAgICAgIHJlcXVpcmVkIGJ5IHRoZSB1bml4IG1ib3ggZm9ybWF0LiAgRm9yIG1vcmUgZmxleGliaWxpdHksIGluc3RhbnRpYXRlIGEKKyAgICAgIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5CeXRlc0dlbmVyYXRvcmAgaW5zdGFuY2UgYW5kIHVzZSBpdHMKKyAgICAgIDptZXRoOmB+ZW1haWwuZ2VuZXJhdG9yLkJ5dGVzR2VuZXJhdG9yLmZsYXR0ZW5gIG1ldGhvZCBkaXJlY3RseS4KKyAgICAgIEZvciBleGFtcGxlOjoKKworICAgICAgICAgZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTworICAgICAgICAgZnJvbSBlbWFpbC5nZW5lcmF0b3IgaW1wb3J0IEJ5dGVzR2VuZXJhdG9yCisgICAgICAgICBmcCA9IEJ5dGVzSU8oKQorICAgICAgICAgZyA9IEJ5dGVzR2VuZXJhdG9yKGZwLCBtYW5nbGVfZnJvbV89VHJ1ZSwgbWF4aGVhZGVybGVuPTYwKQorICAgICAgICAgZy5mbGF0dGVuKG1zZykKKyAgICAgICAgIHRleHQgPSBmcC5nZXR2YWx1ZSgpCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAorCisKKyAgIC4uIG1ldGhvZDo6IF9fYnl0ZXNfXygpCisKKyAgICAgIEVxdWl2YWxlbnQgdG8gOm1ldGg6YC5hc19ieXRlcygpYC4gIEFsbG93cyBgYGJ5dGVzKG1zZylgYCB0byBwcm9kdWNlIGEKKyAgICAgIGJ5dGVzIG9iamVjdCBjb250YWluaW5nIHRoZSBmb3JtYXR0ZWQgbWVzc2FnZS4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CisKKworICAgLi4gbWV0aG9kOjogaXNfbXVsdGlwYXJ0KCkKKworICAgICAgUmV0dXJuIGBgVHJ1ZWBgIGlmIHRoZSBtZXNzYWdlJ3MgcGF5bG9hZCBpcyBhIGxpc3Qgb2Ygc3ViLVwKKyAgICAgIDpjbGFzczpgTWVzc2FnZWAgb2JqZWN0cywgb3RoZXJ3aXNlIHJldHVybiBgYEZhbHNlYGAuICBXaGVuCisgICAgICA6bWV0aDpgaXNfbXVsdGlwYXJ0YCByZXR1cm5zIGBgRmFsc2VgYCwgdGhlIHBheWxvYWQgc2hvdWxkIGJlIGEgc3RyaW5nCisgICAgICBvYmplY3QgKHdoaWNoIG1pZ2h0IGJlIGEgQ1RFIGVuY29kZWQgYmluYXJ5IHBheWxvYWQuICAoTm90ZSB0aGF0CisgICAgICA6bWV0aDpgaXNfbXVsdGlwYXJ0YCByZXR1cm5pbmcgYGBUcnVlYGAgZG9lcyBub3QgbmVjZXNzYXJpbHkgbWVhbiB0aGF0CisgICAgICAibXNnLmdldF9jb250ZW50X21haW50eXBlKCkgPT0gJ211bHRpcGFydCciIHdpbGwgcmV0dXJuIHRoZSBgYFRydWVgYC4KKyAgICAgIEZvciBleGFtcGxlLCBgYGlzX211bHRpcGFydGBgIHdpbGwgcmV0dXJuIGBgVHJ1ZWBgIHdoZW4gdGhlCisgICAgICA6Y2xhc3M6YE1lc3NhZ2VgIGlzIG9mIHR5cGUgYGBtZXNzYWdlL3JmYzgyMmBgLikKKworCisgICAuLiBtZXRob2Q6OiBzZXRfdW5peGZyb20odW5peGZyb20pCisKKyAgICAgIFNldCB0aGUgbWVzc2FnZSdzIGVudmVsb3BlIGhlYWRlciB0byAqdW5peGZyb20qLCB3aGljaCBzaG91bGQgYmUgYSBzdHJpbmcuCisKKworICAgLi4gbWV0aG9kOjogZ2V0X3VuaXhmcm9tKCkKKworICAgICAgUmV0dXJuIHRoZSBtZXNzYWdlJ3MgZW52ZWxvcGUgaGVhZGVyLiAgRGVmYXVsdHMgdG8gYGBOb25lYGAgaWYgdGhlCisgICAgICBlbnZlbG9wZSBoZWFkZXIgd2FzIG5ldmVyIHNldC4KKworCisgICAuLiBtZXRob2Q6OiBhdHRhY2gocGF5bG9hZCkKKworICAgICAgQWRkIHRoZSBnaXZlbiAqcGF5bG9hZCogdG8gdGhlIGN1cnJlbnQgcGF5bG9hZCwgd2hpY2ggbXVzdCBiZSBgYE5vbmVgYCBvcgorICAgICAgYSBsaXN0IG9mIDpjbGFzczpgTWVzc2FnZWAgb2JqZWN0cyBiZWZvcmUgdGhlIGNhbGwuIEFmdGVyIHRoZSBjYWxsLCB0aGUKKyAgICAgIHBheWxvYWQgd2lsbCBhbHdheXMgYmUgYSBsaXN0IG9mIDpjbGFzczpgTWVzc2FnZWAgb2JqZWN0cy4gIElmIHlvdSB3YW50IHRvCisgICAgICBzZXQgdGhlIHBheWxvYWQgdG8gYSBzY2FsYXIgb2JqZWN0IChlLmcuIGEgc3RyaW5nKSwgdXNlCisgICAgICA6bWV0aDpgc2V0X3BheWxvYWRgIGluc3RlYWQuCisKKyAgICAgIFRoaXMgaXMgYSBsZWdhY3kgbWV0aG9kLiAgT24gdGhlCisgICAgICA6Y2xhc3M6YH5lbWFpbC5lbWFpbG1lc3NhZ2UuRW1haWxNZXNzYWdlYCBjbGFzcyBpdHMgZnVuY3Rpb25hbGl0eSBpcworICAgICAgcmVwbGFjZWQgYnkgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5zZXRfY29udGVudGAgYW5kIHRoZQorICAgICAgcmVhbHRlZCBgYG1ha2VgYCBhbmQgYGBhZGRgYCBtZXRob2RzLgorCisKKyAgIC4uIG1ldGhvZDo6IGdldF9wYXlsb2FkKGk9Tm9uZSwgZGVjb2RlPUZhbHNlKQorCisgICAgICBSZXR1cm4gdGhlIGN1cnJlbnQgcGF5bG9hZCwgd2hpY2ggd2lsbCBiZSBhIGxpc3Qgb2YKKyAgICAgIDpjbGFzczpgTWVzc2FnZWAgb2JqZWN0cyB3aGVuIDptZXRoOmBpc19tdWx0aXBhcnRgIGlzIGBgVHJ1ZWBgLCBvciBhCisgICAgICBzdHJpbmcgd2hlbiA6bWV0aDpgaXNfbXVsdGlwYXJ0YCBpcyBgYEZhbHNlYGAuICBJZiB0aGUgcGF5bG9hZCBpcyBhIGxpc3QKKyAgICAgIGFuZCB5b3UgbXV0YXRlIHRoZSBsaXN0IG9iamVjdCwgeW91IG1vZGlmeSB0aGUgbWVzc2FnZSdzIHBheWxvYWQgaW4gcGxhY2UuCisKKyAgICAgIFdpdGggb3B0aW9uYWwgYXJndW1lbnQgKmkqLCA6bWV0aDpgZ2V0X3BheWxvYWRgIHdpbGwgcmV0dXJuIHRoZSAqaSotdGgKKyAgICAgIGVsZW1lbnQgb2YgdGhlIHBheWxvYWQsIGNvdW50aW5nIGZyb20gemVybywgaWYgOm1ldGg6YGlzX211bHRpcGFydGAgaXMKKyAgICAgIGBgVHJ1ZWBgLiAgQW4gOmV4YzpgSW5kZXhFcnJvcmAgd2lsbCBiZSByYWlzZWQgaWYgKmkqIGlzIGxlc3MgdGhhbiAwIG9yCisgICAgICBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIG51bWJlciBvZiBpdGVtcyBpbiB0aGUgcGF5bG9hZC4gIElmIHRoZQorICAgICAgcGF5bG9hZCBpcyBhIHN0cmluZyAoaS5lLiAgOm1ldGg6YGlzX211bHRpcGFydGAgaXMgYGBGYWxzZWBgKSBhbmQgKmkqIGlzCisgICAgICBnaXZlbiwgYSA6ZXhjOmBUeXBlRXJyb3JgIGlzIHJhaXNlZC4KKworICAgICAgT3B0aW9uYWwgKmRlY29kZSogaXMgYSBmbGFnIGluZGljYXRpbmcgd2hldGhlciB0aGUgcGF5bG9hZCBzaG91bGQgYmUKKyAgICAgIGRlY29kZWQgb3Igbm90LCBhY2NvcmRpbmcgdG8gdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYAorICAgICAgaGVhZGVyLiBXaGVuIGBgVHJ1ZWBgIGFuZCB0aGUgbWVzc2FnZSBpcyBub3QgYSBtdWx0aXBhcnQsIHRoZSBwYXlsb2FkIHdpbGwKKyAgICAgIGJlIGRlY29kZWQgaWYgdGhpcyBoZWFkZXIncyB2YWx1ZSBpcyBgYHF1b3RlZC1wcmludGFibGVgYCBvciBgYGJhc2U2NGBgLgorICAgICAgSWYgc29tZSBvdGhlciBlbmNvZGluZyBpcyB1c2VkLCBvciA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2AKKyAgICAgIGhlYWRlciBpcyBtaXNzaW5nLCB0aGUgcGF5bG9hZCBpcworICAgICAgcmV0dXJuZWQgYXMtaXMgKHVuZGVjb2RlZCkuICBJbiBhbGwgY2FzZXMgdGhlIHJldHVybmVkIHZhbHVlIGlzIGJpbmFyeQorICAgICAgZGF0YS4gIElmIHRoZSBtZXNzYWdlIGlzIGEgbXVsdGlwYXJ0IGFuZCB0aGUgKmRlY29kZSogZmxhZyBpcyBgYFRydWVgYCwKKyAgICAgIHRoZW4gYGBOb25lYGAgaXMgcmV0dXJuZWQuICBJZiB0aGUgcGF5bG9hZCBpcyBiYXNlNjQgYW5kIGl0IHdhcyBub3QKKyAgICAgIHBlcmZlY3RseSBmb3JtZWQgKG1pc3NpbmcgcGFkZGluZywgY2hhcmFjdGVycyBvdXRzaWRlIHRoZSBiYXNlNjQKKyAgICAgIGFscGhhYmV0KSwgdGhlbiBhbiBhcHByb3ByaWF0ZSBkZWZlY3Qgd2lsbCBiZSBhZGRlZCB0byB0aGUgbWVzc2FnZSdzCisgICAgICBkZWZlY3QgcHJvcGVydHkgKDpjbGFzczpgfmVtYWlsLmVycm9ycy5JbnZhbGlkQmFzZTY0UGFkZGluZ0RlZmVjdGAgb3IKKyAgICAgIDpjbGFzczpgfmVtYWlsLmVycm9ycy5JbnZhbGlkQmFzZTY0Q2hhcmFjdGVyc0RlZmVjdGAsIHJlc3BlY3RpdmVseSkuCisKKyAgICAgIFdoZW4gKmRlY29kZSogaXMgYGBGYWxzZWBgICh0aGUgZGVmYXVsdCkgdGhlIGJvZHkgaXMgcmV0dXJuZWQgYXMgYSBzdHJpbmcKKyAgICAgIHdpdGhvdXQgZGVjb2RpbmcgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYC4gIEhvd2V2ZXIsCisgICAgICBmb3IgYSA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2Agb2YgOGJpdCwgYW4gYXR0ZW1wdCBpcyBtYWRlCisgICAgICB0byBkZWNvZGUgdGhlIG9yaWdpbmFsIGJ5dGVzIHVzaW5nIHRoZSBgYGNoYXJzZXRgYCBzcGVjaWZpZWQgYnkgdGhlCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIsIHVzaW5nIHRoZSBgYHJlcGxhY2VgYCBlcnJvciBoYW5kbGVyLgorICAgICAgSWYgbm8gYGBjaGFyc2V0YGAgaXMgc3BlY2lmaWVkLCBvciBpZiB0aGUgYGBjaGFyc2V0YGAgZ2l2ZW4gaXMgbm90CisgICAgICByZWNvZ25pemVkIGJ5IHRoZSBlbWFpbCBwYWNrYWdlLCB0aGUgYm9keSBpcyBkZWNvZGVkIHVzaW5nIHRoZSBkZWZhdWx0CisgICAgICBBU0NJSSBjaGFyc2V0LgorCisgICAgICBUaGlzIGlzIGEgbGVnYWN5IG1ldGhvZC4gIE9uIHRoZQorICAgICAgOmNsYXNzOmB+ZW1haWwuZW1haWxtZXNzYWdlLkVtYWlsTWVzc2FnZWAgY2xhc3MgaXRzIGZ1bmN0aW9uYWxpdHkgaXMKKyAgICAgIHJlcGxhY2VkIGJ5IDptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2UuZ2V0X2NvbnRlbnRgIGFuZAorICAgICAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5pdGVyX3BhcnRzYC4KKworCisgICAuLiBtZXRob2Q6OiBzZXRfcGF5bG9hZChwYXlsb2FkLCBjaGFyc2V0PU5vbmUpCisKKyAgICAgIFNldCB0aGUgZW50aXJlIG1lc3NhZ2Ugb2JqZWN0J3MgcGF5bG9hZCB0byAqcGF5bG9hZCouICBJdCBpcyB0aGUgY2xpZW50J3MKKyAgICAgIHJlc3BvbnNpYmlsaXR5IHRvIGVuc3VyZSB0aGUgcGF5bG9hZCBpbnZhcmlhbnRzLiAgT3B0aW9uYWwgKmNoYXJzZXQqIHNldHMKKyAgICAgIHRoZSBtZXNzYWdlJ3MgZGVmYXVsdCBjaGFyYWN0ZXIgc2V0OyBzZWUgOm1ldGg6YHNldF9jaGFyc2V0YCBmb3IgZGV0YWlscy4KKworICAgICAgVGhpcyBpcyBhIGxlZ2FjeSBtZXRob2QuICBPbiB0aGUKKyAgICAgIDpjbGFzczpgfmVtYWlsLmVtYWlsbWVzc2FnZS5FbWFpbE1lc3NhZ2VgIGNsYXNzIGl0cyBmdW5jdGlvbmFsaXR5IGlzCisgICAgICByZXBsYWNlZCBieSA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLnNldF9jb250ZW50YC4KKworCisgICAuLiBtZXRob2Q6OiBzZXRfY2hhcnNldChjaGFyc2V0KQorCisgICAgICBTZXQgdGhlIGNoYXJhY3RlciBzZXQgb2YgdGhlIHBheWxvYWQgdG8gKmNoYXJzZXQqLCB3aGljaCBjYW4gZWl0aGVyIGJlIGEKKyAgICAgIDpjbGFzczpgfmVtYWlsLmNoYXJzZXQuQ2hhcnNldGAgaW5zdGFuY2UgKHNlZSA6bW9kOmBlbWFpbC5jaGFyc2V0YCksIGEKKyAgICAgIHN0cmluZyBuYW1pbmcgYSBjaGFyYWN0ZXIgc2V0LCBvciBgYE5vbmVgYC4gIElmIGl0IGlzIGEgc3RyaW5nLCBpdCB3aWxsCisgICAgICBiZSBjb252ZXJ0ZWQgdG8gYSA6Y2xhc3M6YH5lbWFpbC5jaGFyc2V0LkNoYXJzZXRgIGluc3RhbmNlLiAgSWYgKmNoYXJzZXQqCisgICAgICBpcyBgYE5vbmVgYCwgdGhlIGBgY2hhcnNldGBgIHBhcmFtZXRlciB3aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUKKyAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciAodGhlIG1lc3NhZ2Ugd2lsbCBub3QgYmUgb3RoZXJ3aXNlCisgICAgICBtb2RpZmllZCkuICBBbnl0aGluZyBlbHNlIHdpbGwgZ2VuZXJhdGUgYSA6ZXhjOmBUeXBlRXJyb3JgLgorCisgICAgICBJZiB0aGVyZSBpcyBubyBleGlzdGluZyA6bWFpbGhlYWRlcjpgTUlNRS1WZXJzaW9uYCBoZWFkZXIgb25lIHdpbGwgYmUKKyAgICAgIGFkZGVkLiAgSWYgdGhlcmUgaXMgbm8gZXhpc3RpbmcgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLCBvbmUKKyAgICAgIHdpbGwgYmUgYWRkZWQgd2l0aCBhIHZhbHVlIG9mIDptaW1ldHlwZTpgdGV4dC9wbGFpbmAuICBXaGV0aGVyIHRoZQorICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGFscmVhZHkgZXhpc3RzIG9yIG5vdCwgaXRzIGBgY2hhcnNldGBgCisgICAgICBwYXJhbWV0ZXIgd2lsbCBiZSBzZXQgdG8gKmNoYXJzZXQub3V0cHV0X2NoYXJzZXQqLiAgIElmCisgICAgICAqY2hhcnNldC5pbnB1dF9jaGFyc2V0KiBhbmQgKmNoYXJzZXQub3V0cHV0X2NoYXJzZXQqIGRpZmZlciwgdGhlIHBheWxvYWQKKyAgICAgIHdpbGwgYmUgcmUtZW5jb2RlZCB0byB0aGUgKm91dHB1dF9jaGFyc2V0Ki4gIElmIHRoZXJlIGlzIG5vIGV4aXN0aW5nCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyLCB0aGVuIHRoZSBwYXlsb2FkIHdpbGwgYmUKKyAgICAgIHRyYW5zZmVyLWVuY29kZWQsIGlmIG5lZWRlZCwgdXNpbmcgdGhlIHNwZWNpZmllZAorICAgICAgOmNsYXNzOmB+ZW1haWwuY2hhcnNldC5DaGFyc2V0YCwgYW5kIGEgaGVhZGVyIHdpdGggdGhlIGFwcHJvcHJpYXRlIHZhbHVlCisgICAgICB3aWxsIGJlIGFkZGVkLiAgSWYgYSA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyCisgICAgICBhbHJlYWR5IGV4aXN0cywgdGhlIHBheWxvYWQgaXMgYXNzdW1lZCB0byBhbHJlYWR5IGJlIGNvcnJlY3RseSBlbmNvZGVkCisgICAgICB1c2luZyB0aGF0IDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYCBhbmQgaXMgbm90IG1vZGlmaWVkLgorCisgICAgICBUaGlzIGlzIGEgbGVnYWN5IG1ldGhvZC4gIE9uIHRoZQorICAgICAgOmNsYXNzOmB+ZW1haWwuZW1haWxtZXNzYWdlLkVtYWlsTWVzc2FnZWAgY2xhc3MgaXRzIGZ1bmN0aW9uYWxpdHkgaXMKKyAgICAgIHJlcGxhY2VkIGJ5IHRoZSAqY2hhcnNldCogcGFyYW1ldGVyIG9mIHRoZQorICAgICAgOm1ldGg6YGVtYWlsLmVtYWlsbWVzc2FnZS5FbWFpbE1lc3NhZ2Uuc2V0X2NvbnRlbnRgIG1ldGhvZC4KKworCisgICAuLiBtZXRob2Q6OiBnZXRfY2hhcnNldCgpCisKKyAgICAgIFJldHVybiB0aGUgOmNsYXNzOmB+ZW1haWwuY2hhcnNldC5DaGFyc2V0YCBpbnN0YW5jZSBhc3NvY2lhdGVkIHdpdGggdGhlCisgICAgICBtZXNzYWdlJ3MgcGF5bG9hZC4KKworICAgICAgVGhpcyBpcyBhIGxlZ2FjeSBtZXRob2QuICBPbiB0aGUKKyAgICAgIDpjbGFzczpgfmVtYWlsLmVtYWlsbWVzc2FnZS5FbWFpbE1lc3NhZ2VgIGNsYXNzIGl0IGFsd2F5cyByZXR1cm5zCisgICAgICBgYE5vbmVgYC4KKworCisgICBUaGUgZm9sbG93aW5nIG1ldGhvZHMgaW1wbGVtZW50IGEgbWFwcGluZy1saWtlIGludGVyZmFjZSBmb3IgYWNjZXNzaW5nIHRoZQorICAgbWVzc2FnZSdzIDpyZmM6YDI4MjJgIGhlYWRlcnMuICBOb3RlIHRoYXQgdGhlcmUgYXJlIHNvbWUgc2VtYW50aWMgZGlmZmVyZW5jZXMKKyAgIGJldHdlZW4gdGhlc2UgbWV0aG9kcyBhbmQgYSBub3JtYWwgbWFwcGluZyAoaS5lLiBkaWN0aW9uYXJ5KSBpbnRlcmZhY2UuICBGb3IKKyAgIGV4YW1wbGUsIGluIGEgZGljdGlvbmFyeSB0aGVyZSBhcmUgbm8gZHVwbGljYXRlIGtleXMsIGJ1dCBoZXJlIHRoZXJlIG1heSBiZQorICAgZHVwbGljYXRlIG1lc3NhZ2UgaGVhZGVycy4gIEFsc28sIGluIGRpY3Rpb25hcmllcyB0aGVyZSBpcyBubyBndWFyYW50ZWVkCisgICBvcmRlciB0byB0aGUga2V5cyByZXR1cm5lZCBieSA6bWV0aDpga2V5c2AsIGJ1dCBpbiBhIDpjbGFzczpgTWVzc2FnZWAgb2JqZWN0LAorICAgaGVhZGVycyBhcmUgYWx3YXlzIHJldHVybmVkIGluIHRoZSBvcmRlciB0aGV5IGFwcGVhcmVkIGluIHRoZSBvcmlnaW5hbAorICAgbWVzc2FnZSwgb3Igd2VyZSBhZGRlZCB0byB0aGUgbWVzc2FnZSBsYXRlci4gIEFueSBoZWFkZXIgZGVsZXRlZCBhbmQgdGhlbgorICAgcmUtYWRkZWQgYXJlIGFsd2F5cyBhcHBlbmRlZCB0byB0aGUgZW5kIG9mIHRoZSBoZWFkZXIgbGlzdC4KKworICAgVGhlc2Ugc2VtYW50aWMgZGlmZmVyZW5jZXMgYXJlIGludGVudGlvbmFsIGFuZCBhcmUgYmlhc2VkIHRvd2FyZCBtYXhpbWFsCisgICBjb252ZW5pZW5jZS4KKworICAgTm90ZSB0aGF0IGluIGFsbCBjYXNlcywgYW55IGVudmVsb3BlIGhlYWRlciBwcmVzZW50IGluIHRoZSBtZXNzYWdlIGlzIG5vdAorICAgaW5jbHVkZWQgaW4gdGhlIG1hcHBpbmcgaW50ZXJmYWNlLgorCisgICBJbiBhIG1vZGVsIGdlbmVyYXRlZCBmcm9tIGJ5dGVzLCBhbnkgaGVhZGVyIHZhbHVlcyB0aGF0IChpbiBjb250cmF2ZW50aW9uIG9mCisgICB0aGUgUkZDcykgY29udGFpbiBub24tQVNDSUkgYnl0ZXMgd2lsbCwgd2hlbiByZXRyaWV2ZWQgdGhyb3VnaCB0aGlzCisgICBpbnRlcmZhY2UsIGJlIHJlcHJlc2VudGVkIGFzIDpjbGFzczpgfmVtYWlsLmhlYWRlci5IZWFkZXJgIG9iamVjdHMgd2l0aAorICAgYSBjaGFyc2V0IG9mIGB1bmtub3duLThiaXRgLgorCisKKyAgIC4uIG1ldGhvZDo6IF9fbGVuX18oKQorCisgICAgICBSZXR1cm4gdGhlIHRvdGFsIG51bWJlciBvZiBoZWFkZXJzLCBpbmNsdWRpbmcgZHVwbGljYXRlcy4KKworCisgICAuLiBtZXRob2Q6OiBfX2NvbnRhaW5zX18obmFtZSkKKworICAgICAgUmV0dXJuIHRydWUgaWYgdGhlIG1lc3NhZ2Ugb2JqZWN0IGhhcyBhIGZpZWxkIG5hbWVkICpuYW1lKi4gTWF0Y2hpbmcgaXMKKyAgICAgIGRvbmUgY2FzZS1pbnNlbnNpdGl2ZWx5IGFuZCAqbmFtZSogc2hvdWxkIG5vdCBpbmNsdWRlIHRoZSB0cmFpbGluZyBjb2xvbi4KKyAgICAgIFVzZWQgZm9yIHRoZSBgYGluYGAgb3BlcmF0b3IsIGUuZy46OgorCisgICAgICAgICAgIGlmICdtZXNzYWdlLWlkJyBpbiBteU1lc3NhZ2U6CisgICAgICAgICAgICAgIHByaW50KCdNZXNzYWdlLUlEOicsIG15TWVzc2FnZVsnbWVzc2FnZS1pZCddKQorCisKKyAgIC4uIG1ldGhvZDo6IF9fZ2V0aXRlbV9fKG5hbWUpCisKKyAgICAgIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIG5hbWVkIGhlYWRlciBmaWVsZC4gICpuYW1lKiBzaG91bGQgbm90IGluY2x1ZGUgdGhlCisgICAgICBjb2xvbiBmaWVsZCBzZXBhcmF0b3IuICBJZiB0aGUgaGVhZGVyIGlzIG1pc3NpbmcsIGBgTm9uZWBgIGlzIHJldHVybmVkOyBhCisgICAgICA6ZXhjOmBLZXlFcnJvcmAgaXMgbmV2ZXIgcmFpc2VkLgorCisgICAgICBOb3RlIHRoYXQgaWYgdGhlIG5hbWVkIGZpZWxkIGFwcGVhcnMgbW9yZSB0aGFuIG9uY2UgaW4gdGhlIG1lc3NhZ2UncworICAgICAgaGVhZGVycywgZXhhY3RseSB3aGljaCBvZiB0aG9zZSBmaWVsZCB2YWx1ZXMgd2lsbCBiZSByZXR1cm5lZCBpcworICAgICAgdW5kZWZpbmVkLiAgVXNlIHRoZSA6bWV0aDpgZ2V0X2FsbGAgbWV0aG9kIHRvIGdldCB0aGUgdmFsdWVzIG9mIGFsbCB0aGUKKyAgICAgIGV4dGFudCBuYW1lZCBoZWFkZXJzLgorCisKKyAgIC4uIG1ldGhvZDo6IF9fc2V0aXRlbV9fKG5hbWUsIHZhbCkKKworICAgICAgQWRkIGEgaGVhZGVyIHRvIHRoZSBtZXNzYWdlIHdpdGggZmllbGQgbmFtZSAqbmFtZSogYW5kIHZhbHVlICp2YWwqLiAgVGhlCisgICAgICBmaWVsZCBpcyBhcHBlbmRlZCB0byB0aGUgZW5kIG9mIHRoZSBtZXNzYWdlJ3MgZXhpc3RpbmcgZmllbGRzLgorCisgICAgICBOb3RlIHRoYXQgdGhpcyBkb2VzICpub3QqIG92ZXJ3cml0ZSBvciBkZWxldGUgYW55IGV4aXN0aW5nIGhlYWRlciB3aXRoIHRoZSBzYW1lCisgICAgICBuYW1lLiAgSWYgeW91IHdhbnQgdG8gZW5zdXJlIHRoYXQgdGhlIG5ldyBoZWFkZXIgaXMgdGhlIG9ubHkgb25lIHByZXNlbnQgaW4gdGhlCisgICAgICBtZXNzYWdlIHdpdGggZmllbGQgbmFtZSAqbmFtZSosIGRlbGV0ZSB0aGUgZmllbGQgZmlyc3QsIGUuZy46OgorCisgICAgICAgICBkZWwgbXNnWydzdWJqZWN0J10KKyAgICAgICAgIG1zZ1snc3ViamVjdCddID0gJ1B5dGhvbiByb29seiEnCisKKworICAgLi4gbWV0aG9kOjogX19kZWxpdGVtX18obmFtZSkKKworICAgICAgRGVsZXRlIGFsbCBvY2N1cnJlbmNlcyBvZiB0aGUgZmllbGQgd2l0aCBuYW1lICpuYW1lKiBmcm9tIHRoZSBtZXNzYWdlJ3MKKyAgICAgIGhlYWRlcnMuICBObyBleGNlcHRpb24gaXMgcmFpc2VkIGlmIHRoZSBuYW1lZCBmaWVsZCBpc24ndCBwcmVzZW50IGluIHRoZQorICAgICAgaGVhZGVycy4KKworCisgICAuLiBtZXRob2Q6OiBrZXlzKCkKKworICAgICAgUmV0dXJuIGEgbGlzdCBvZiBhbGwgdGhlIG1lc3NhZ2UncyBoZWFkZXIgZmllbGQgbmFtZXMuCisKKworICAgLi4gbWV0aG9kOjogdmFsdWVzKCkKKworICAgICAgUmV0dXJuIGEgbGlzdCBvZiBhbGwgdGhlIG1lc3NhZ2UncyBmaWVsZCB2YWx1ZXMuCisKKworICAgLi4gbWV0aG9kOjogaXRlbXMoKQorCisgICAgICBSZXR1cm4gYSBsaXN0IG9mIDItdHVwbGVzIGNvbnRhaW5pbmcgYWxsIHRoZSBtZXNzYWdlJ3MgZmllbGQgaGVhZGVycyBhbmQKKyAgICAgIHZhbHVlcy4KKworCisgICAuLiBtZXRob2Q6OiBnZXQobmFtZSwgZmFpbG9iaj1Ob25lKQorCisgICAgICBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBuYW1lZCBoZWFkZXIgZmllbGQuICBUaGlzIGlzIGlkZW50aWNhbCB0bworICAgICAgOm1ldGg6YF9fZ2V0aXRlbV9fYCBleGNlcHQgdGhhdCBvcHRpb25hbCAqZmFpbG9iaiogaXMgcmV0dXJuZWQgaWYgdGhlCisgICAgICBuYW1lZCBoZWFkZXIgaXMgbWlzc2luZyAoZGVmYXVsdHMgdG8gYGBOb25lYGApLgorCisgICBIZXJlIGFyZSBzb21lIGFkZGl0aW9uYWwgdXNlZnVsIG1ldGhvZHM6CisKKworICAgLi4gbWV0aG9kOjogZ2V0X2FsbChuYW1lLCBmYWlsb2JqPU5vbmUpCisKKyAgICAgIFJldHVybiBhIGxpc3Qgb2YgYWxsIHRoZSB2YWx1ZXMgZm9yIHRoZSBmaWVsZCBuYW1lZCAqbmFtZSouIElmIHRoZXJlIGFyZQorICAgICAgbm8gc3VjaCBuYW1lZCBoZWFkZXJzIGluIHRoZSBtZXNzYWdlLCAqZmFpbG9iaiogaXMgcmV0dXJuZWQgKGRlZmF1bHRzIHRvCisgICAgICBgYE5vbmVgYCkuCisKKworICAgLi4gbWV0aG9kOjogYWRkX2hlYWRlcihfbmFtZSwgX3ZhbHVlLCAqKl9wYXJhbXMpCisKKyAgICAgIEV4dGVuZGVkIGhlYWRlciBzZXR0aW5nLiAgVGhpcyBtZXRob2QgaXMgc2ltaWxhciB0byA6bWV0aDpgX19zZXRpdGVtX19gCisgICAgICBleGNlcHQgdGhhdCBhZGRpdGlvbmFsIGhlYWRlciBwYXJhbWV0ZXJzIGNhbiBiZSBwcm92aWRlZCBhcyBrZXl3b3JkCisgICAgICBhcmd1bWVudHMuICAqX25hbWUqIGlzIHRoZSBoZWFkZXIgZmllbGQgdG8gYWRkIGFuZCAqX3ZhbHVlKiBpcyB0aGUKKyAgICAgICpwcmltYXJ5KiB2YWx1ZSBmb3IgdGhlIGhlYWRlci4KKworICAgICAgRm9yIGVhY2ggaXRlbSBpbiB0aGUga2V5d29yZCBhcmd1bWVudCBkaWN0aW9uYXJ5ICpfcGFyYW1zKiwgdGhlIGtleSBpcworICAgICAgdGFrZW4gYXMgdGhlIHBhcmFtZXRlciBuYW1lLCB3aXRoIHVuZGVyc2NvcmVzIGNvbnZlcnRlZCB0byBkYXNoZXMgKHNpbmNlCisgICAgICBkYXNoZXMgYXJlIGlsbGVnYWwgaW4gUHl0aG9uIGlkZW50aWZpZXJzKS4gIE5vcm1hbGx5LCB0aGUgcGFyYW1ldGVyIHdpbGwKKyAgICAgIGJlIGFkZGVkIGFzIGBga2V5PSJ2YWx1ZSJgYCB1bmxlc3MgdGhlIHZhbHVlIGlzIGBgTm9uZWBgLCBpbiB3aGljaCBjYXNlCisgICAgICBvbmx5IHRoZSBrZXkgd2lsbCBiZSBhZGRlZC4gIElmIHRoZSB2YWx1ZSBjb250YWlucyBub24tQVNDSUkgY2hhcmFjdGVycywKKyAgICAgIGl0IGNhbiBiZSBzcGVjaWZpZWQgYXMgYSB0aHJlZSB0dXBsZSBpbiB0aGUgZm9ybWF0CisgICAgICBgYChDSEFSU0VULCBMQU5HVUFHRSwgVkFMVUUpYGAsIHdoZXJlIGBgQ0hBUlNFVGBgIGlzIGEgc3RyaW5nIG5hbWluZyB0aGUKKyAgICAgIGNoYXJzZXQgdG8gYmUgdXNlZCB0byBlbmNvZGUgdGhlIHZhbHVlLCBgYExBTkdVQUdFYGAgY2FuIHVzdWFsbHkgYmUgc2V0CisgICAgICB0byBgYE5vbmVgYCBvciB0aGUgZW1wdHkgc3RyaW5nIChzZWUgOnJmYzpgMjIzMWAgZm9yIG90aGVyIHBvc3NpYmlsaXRpZXMpLAorICAgICAgYW5kIGBgVkFMVUVgYCBpcyB0aGUgc3RyaW5nIHZhbHVlIGNvbnRhaW5pbmcgbm9uLUFTQ0lJIGNvZGUgcG9pbnRzLiAgSWYKKyAgICAgIGEgdGhyZWUgdHVwbGUgaXMgbm90IHBhc3NlZCBhbmQgdGhlIHZhbHVlIGNvbnRhaW5zIG5vbi1BU0NJSSBjaGFyYWN0ZXJzLAorICAgICAgaXQgaXMgYXV0b21hdGljYWxseSBlbmNvZGVkIGluIDpyZmM6YDIyMzFgIGZvcm1hdCB1c2luZyBhIGBgQ0hBUlNFVGBgCisgICAgICBvZiBgYHV0Zi04YGAgYW5kIGEgYGBMQU5HVUFHRWBgIG9mIGBgTm9uZWBgLgorCisgICAgICBIZXJlJ3MgYW4gZXhhbXBsZTo6CisKKyAgICAgICAgIG1zZy5hZGRfaGVhZGVyKCdDb250ZW50LURpc3Bvc2l0aW9uJywgJ2F0dGFjaG1lbnQnLCBmaWxlbmFtZT0nYnVkLmdpZicpCisKKyAgICAgIFRoaXMgd2lsbCBhZGQgYSBoZWFkZXIgdGhhdCBsb29rcyBsaWtlIDo6CisKKyAgICAgICAgIENvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPSJidWQuZ2lmIgorCisgICAgICBBbiBleGFtcGxlIHdpdGggbm9uLUFTQ0lJIGNoYXJhY3RlcnM6OgorCisgICAgICAgICBtc2cuYWRkX2hlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbicsICdhdHRhY2htZW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lPSgnaXNvLTg4NTktMScsICcnLCAnRnXDn2JhbGxlci5wcHQnKSkKKworICAgICAgV2hpY2ggcHJvZHVjZXMgOjoKKworICAgICAgICAgQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWUqPSJpc28tODg1OS0xJydGdSVERmJhbGxlci5wcHQiCisKKworICAgLi4gbWV0aG9kOjogcmVwbGFjZV9oZWFkZXIoX25hbWUsIF92YWx1ZSkKKworICAgICAgUmVwbGFjZSBhIGhlYWRlci4gIFJlcGxhY2UgdGhlIGZpcnN0IGhlYWRlciBmb3VuZCBpbiB0aGUgbWVzc2FnZSB0aGF0CisgICAgICBtYXRjaGVzICpfbmFtZSosIHJldGFpbmluZyBoZWFkZXIgb3JkZXIgYW5kIGZpZWxkIG5hbWUgY2FzZS4gIElmIG5vCisgICAgICBtYXRjaGluZyBoZWFkZXIgd2FzIGZvdW5kLCBhIDpleGM6YEtleUVycm9yYCBpcyByYWlzZWQuCisKKworICAgLi4gbWV0aG9kOjogZ2V0X2NvbnRlbnRfdHlwZSgpCisKKyAgICAgIFJldHVybiB0aGUgbWVzc2FnZSdzIGNvbnRlbnQgdHlwZS4gIFRoZSByZXR1cm5lZCBzdHJpbmcgaXMgY29lcmNlZCB0bworICAgICAgbG93ZXIgY2FzZSBvZiB0aGUgZm9ybSA6bWltZXR5cGU6YG1haW50eXBlL3N1YnR5cGVgLiAgSWYgdGhlcmUgd2FzIG5vCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgaW4gdGhlIG1lc3NhZ2UgdGhlIGRlZmF1bHQgdHlwZSBhcyBnaXZlbgorICAgICAgYnkgOm1ldGg6YGdldF9kZWZhdWx0X3R5cGVgIHdpbGwgYmUgcmV0dXJuZWQuICBTaW5jZSBhY2NvcmRpbmcgdG8KKyAgICAgIDpyZmM6YDIwNDVgLCBtZXNzYWdlcyBhbHdheXMgaGF2ZSBhIGRlZmF1bHQgdHlwZSwgOm1ldGg6YGdldF9jb250ZW50X3R5cGVgCisgICAgICB3aWxsIGFsd2F5cyByZXR1cm4gYSB2YWx1ZS4KKworICAgICAgOnJmYzpgMjA0NWAgZGVmaW5lcyBhIG1lc3NhZ2UncyBkZWZhdWx0IHR5cGUgdG8gYmUgOm1pbWV0eXBlOmB0ZXh0L3BsYWluYAorICAgICAgdW5sZXNzIGl0IGFwcGVhcnMgaW5zaWRlIGEgOm1pbWV0eXBlOmBtdWx0aXBhcnQvZGlnZXN0YCBjb250YWluZXIsIGluCisgICAgICB3aGljaCBjYXNlIGl0IHdvdWxkIGJlIDptaW1ldHlwZTpgbWVzc2FnZS9yZmM4MjJgLiAgSWYgdGhlCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgaGFzIGFuIGludmFsaWQgdHlwZSBzcGVjaWZpY2F0aW9uLAorICAgICAgOnJmYzpgMjA0NWAgbWFuZGF0ZXMgdGhhdCB0aGUgZGVmYXVsdCB0eXBlIGJlIDptaW1ldHlwZTpgdGV4dC9wbGFpbmAuCisKKworICAgLi4gbWV0aG9kOjogZ2V0X2NvbnRlbnRfbWFpbnR5cGUoKQorCisgICAgICBSZXR1cm4gdGhlIG1lc3NhZ2UncyBtYWluIGNvbnRlbnQgdHlwZS4gIFRoaXMgaXMgdGhlIDptaW1ldHlwZTpgbWFpbnR5cGVgCisgICAgICBwYXJ0IG9mIHRoZSBzdHJpbmcgcmV0dXJuZWQgYnkgOm1ldGg6YGdldF9jb250ZW50X3R5cGVgLgorCisKKyAgIC4uIG1ldGhvZDo6IGdldF9jb250ZW50X3N1YnR5cGUoKQorCisgICAgICBSZXR1cm4gdGhlIG1lc3NhZ2UncyBzdWItY29udGVudCB0eXBlLiAgVGhpcyBpcyB0aGUgOm1pbWV0eXBlOmBzdWJ0eXBlYAorICAgICAgcGFydCBvZiB0aGUgc3RyaW5nIHJldHVybmVkIGJ5IDptZXRoOmBnZXRfY29udGVudF90eXBlYC4KKworCisgICAuLiBtZXRob2Q6OiBnZXRfZGVmYXVsdF90eXBlKCkKKworICAgICAgUmV0dXJuIHRoZSBkZWZhdWx0IGNvbnRlbnQgdHlwZS4gIE1vc3QgbWVzc2FnZXMgaGF2ZSBhIGRlZmF1bHQgY29udGVudAorICAgICAgdHlwZSBvZiA6bWltZXR5cGU6YHRleHQvcGxhaW5gLCBleGNlcHQgZm9yIG1lc3NhZ2VzIHRoYXQgYXJlIHN1YnBhcnRzIG9mCisgICAgICA6bWltZXR5cGU6YG11bHRpcGFydC9kaWdlc3RgIGNvbnRhaW5lcnMuICBTdWNoIHN1YnBhcnRzIGhhdmUgYSBkZWZhdWx0CisgICAgICBjb250ZW50IHR5cGUgb2YgOm1pbWV0eXBlOmBtZXNzYWdlL3JmYzgyMmAuCisKKworICAgLi4gbWV0aG9kOjogc2V0X2RlZmF1bHRfdHlwZShjdHlwZSkKKworICAgICAgU2V0IHRoZSBkZWZhdWx0IGNvbnRlbnQgdHlwZS4gICpjdHlwZSogc2hvdWxkIGVpdGhlciBiZQorICAgICAgOm1pbWV0eXBlOmB0ZXh0L3BsYWluYCBvciA6bWltZXR5cGU6YG1lc3NhZ2UvcmZjODIyYCwgYWx0aG91Z2ggdGhpcyBpcyBub3QKKyAgICAgIGVuZm9yY2VkLiAgVGhlIGRlZmF1bHQgY29udGVudCB0eXBlIGlzIG5vdCBzdG9yZWQgaW4gdGhlCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIuCisKKworICAgLi4gbWV0aG9kOjogZ2V0X3BhcmFtcyhmYWlsb2JqPU5vbmUsIGhlYWRlcj0nY29udGVudC10eXBlJywgdW5xdW90ZT1UcnVlKQorCisgICAgICBSZXR1cm4gdGhlIG1lc3NhZ2UncyA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBwYXJhbWV0ZXJzLCBhcyBhIGxpc3QuCisgICAgICBUaGUgZWxlbWVudHMgb2YgdGhlIHJldHVybmVkIGxpc3QgYXJlIDItdHVwbGVzIG9mIGtleS92YWx1ZSBwYWlycywgYXMKKyAgICAgIHNwbGl0IG9uIHRoZSBgYCc9J2BgIHNpZ24uICBUaGUgbGVmdCBoYW5kIHNpZGUgb2YgdGhlIGBgJz0nYGAgaXMgdGhlIGtleSwKKyAgICAgIHdoaWxlIHRoZSByaWdodCBoYW5kIHNpZGUgaXMgdGhlIHZhbHVlLiAgSWYgdGhlcmUgaXMgbm8gYGAnPSdgYCBzaWduIGluCisgICAgICB0aGUgcGFyYW1ldGVyIHRoZSB2YWx1ZSBpcyB0aGUgZW1wdHkgc3RyaW5nLCBvdGhlcndpc2UgdGhlIHZhbHVlIGlzIGFzCisgICAgICBkZXNjcmliZWQgaW4gOm1ldGg6YGdldF9wYXJhbWAgYW5kIGlzIHVucXVvdGVkIGlmIG9wdGlvbmFsICp1bnF1b3RlKiBpcworICAgICAgYGBUcnVlYGAgKHRoZSBkZWZhdWx0KS4KKworICAgICAgT3B0aW9uYWwgKmZhaWxvYmoqIGlzIHRoZSBvYmplY3QgdG8gcmV0dXJuIGlmIHRoZXJlIGlzIG5vCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIuICBPcHRpb25hbCAqaGVhZGVyKiBpcyB0aGUgaGVhZGVyIHRvCisgICAgICBzZWFyY2ggaW5zdGVhZCBvZiA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYC4KKworICAgICAgVGhpcyBpcyBhIGxlZ2FjeSBtZXRob2QuICBPbiB0aGUKKyAgICAgIDpjbGFzczpgfmVtYWlsLmVtYWlsbWVzc2FnZS5FbWFpbE1lc3NhZ2VgIGNsYXNzIGl0cyBmdW5jdGlvbmFsaXR5IGlzCisgICAgICByZXBsYWNlZCBieSB0aGUgKnBhcmFtcyogcHJvcGVydHkgb2YgdGhlIGluZGl2aWR1YWwgaGVhZGVyIG9iamVjdHMKKyAgICAgIHJldHVybmVkIGJ5IHRoZSBoZWFkZXIgYWNjZXNzIG1ldGhvZHMuCisKKworICAgLi4gbWV0aG9kOjogZ2V0X3BhcmFtKHBhcmFtLCBmYWlsb2JqPU5vbmUsIGhlYWRlcj0nY29udGVudC10eXBlJywgdW5xdW90ZT1UcnVlKQorCisgICAgICBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIncyBwYXJhbWV0ZXIKKyAgICAgICpwYXJhbSogYXMgYSBzdHJpbmcuICBJZiB0aGUgbWVzc2FnZSBoYXMgbm8gOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAKKyAgICAgIGhlYWRlciBvciBpZiB0aGVyZSBpcyBubyBzdWNoIHBhcmFtZXRlciwgdGhlbiAqZmFpbG9iaiogaXMgcmV0dXJuZWQKKyAgICAgIChkZWZhdWx0cyB0byBgYE5vbmVgYCkuCisKKyAgICAgIE9wdGlvbmFsICpoZWFkZXIqIGlmIGdpdmVuLCBzcGVjaWZpZXMgdGhlIG1lc3NhZ2UgaGVhZGVyIHRvIHVzZSBpbnN0ZWFkIG9mCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYC4KKworICAgICAgUGFyYW1ldGVyIGtleXMgYXJlIGFsd2F5cyBjb21wYXJlZCBjYXNlIGluc2Vuc2l0aXZlbHkuICBUaGUgcmV0dXJuIHZhbHVlCisgICAgICBjYW4gZWl0aGVyIGJlIGEgc3RyaW5nLCBvciBhIDMtdHVwbGUgaWYgdGhlIHBhcmFtZXRlciB3YXMgOnJmYzpgMjIzMWAKKyAgICAgIGVuY29kZWQuICBXaGVuIGl0J3MgYSAzLXR1cGxlLCB0aGUgZWxlbWVudHMgb2YgdGhlIHZhbHVlIGFyZSBvZiB0aGUgZm9ybQorICAgICAgYGAoQ0hBUlNFVCwgTEFOR1VBR0UsIFZBTFVFKWBgLiAgTm90ZSB0aGF0IGJvdGggYGBDSEFSU0VUYGAgYW5kCisgICAgICBgYExBTkdVQUdFYGAgY2FuIGJlIGBgTm9uZWBgLCBpbiB3aGljaCBjYXNlIHlvdSBzaG91bGQgY29uc2lkZXIgYGBWQUxVRWBgCisgICAgICB0byBiZSBlbmNvZGVkIGluIHRoZSBgYHVzLWFzY2lpYGAgY2hhcnNldC4gIFlvdSBjYW4gdXN1YWxseSBpZ25vcmUKKyAgICAgIGBgTEFOR1VBR0VgYC4KKworICAgICAgSWYgeW91ciBhcHBsaWNhdGlvbiBkb2Vzbid0IGNhcmUgd2hldGhlciB0aGUgcGFyYW1ldGVyIHdhcyBlbmNvZGVkIGFzIGluCisgICAgICA6cmZjOmAyMjMxYCwgeW91IGNhbiBjb2xsYXBzZSB0aGUgcGFyYW1ldGVyIHZhbHVlIGJ5IGNhbGxpbmcKKyAgICAgIDpmdW5jOmBlbWFpbC51dGlscy5jb2xsYXBzZV9yZmMyMjMxX3ZhbHVlYCwgcGFzc2luZyBpbiB0aGUgcmV0dXJuIHZhbHVlCisgICAgICBmcm9tIDptZXRoOmBnZXRfcGFyYW1gLiAgVGhpcyB3aWxsIHJldHVybiBhIHN1aXRhYmx5IGRlY29kZWQgVW5pY29kZQorICAgICAgc3RyaW5nIHdoZW4gdGhlIHZhbHVlIGlzIGEgdHVwbGUsIG9yIHRoZSBvcmlnaW5hbCBzdHJpbmcgdW5xdW90ZWQgaWYgaXQKKyAgICAgIGlzbid0LiAgRm9yIGV4YW1wbGU6OgorCisgICAgICAgICByYXdwYXJhbSA9IG1zZy5nZXRfcGFyYW0oJ2ZvbycpCisgICAgICAgICBwYXJhbSA9IGVtYWlsLnV0aWxzLmNvbGxhcHNlX3JmYzIyMzFfdmFsdWUocmF3cGFyYW0pCisKKyAgICAgIEluIGFueSBjYXNlLCB0aGUgcGFyYW1ldGVyIHZhbHVlIChlaXRoZXIgdGhlIHJldHVybmVkIHN0cmluZywgb3IgdGhlCisgICAgICBgYFZBTFVFYGAgaXRlbSBpbiB0aGUgMy10dXBsZSkgaXMgYWx3YXlzIHVucXVvdGVkLCB1bmxlc3MgKnVucXVvdGUqIGlzIHNldAorICAgICAgdG8gYGBGYWxzZWBgLgorCisgICAgICBUaGlzIGlzIGEgbGVnYWN5IG1ldGhvZC4gIE9uIHRoZQorICAgICAgOmNsYXNzOmB+ZW1haWwuZW1haWxtZXNzYWdlLkVtYWlsTWVzc2FnZWAgY2xhc3MgaXRzIGZ1bmN0aW9uYWxpdHkgaXMKKyAgICAgIHJlcGxhY2VkIGJ5IHRoZSAqcGFyYW1zKiBwcm9wZXJ0eSBvZiB0aGUgaW5kaXZpZHVhbCBoZWFkZXIgb2JqZWN0cworICAgICAgcmV0dXJuZWQgYnkgdGhlIGhlYWRlciBhY2Nlc3MgbWV0aG9kcy4KKworCisgICAuLiBtZXRob2Q6OiBzZXRfcGFyYW0ocGFyYW0sIHZhbHVlLCBoZWFkZXI9J0NvbnRlbnQtVHlwZScsIHJlcXVvdGU9VHJ1ZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJzZXQ9Tm9uZSwgbGFuZ3VhZ2U9JycsIHJlcGxhY2U9RmFsc2UpCisKKyAgICAgIFNldCBhIHBhcmFtZXRlciBpbiB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLiAgSWYgdGhlCisgICAgICBwYXJhbWV0ZXIgYWxyZWFkeSBleGlzdHMgaW4gdGhlIGhlYWRlciwgaXRzIHZhbHVlIHdpbGwgYmUgcmVwbGFjZWQgd2l0aAorICAgICAgKnZhbHVlKi4gIElmIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgYXMgbm90IHlldCBiZWVuIGRlZmluZWQKKyAgICAgIGZvciB0aGlzIG1lc3NhZ2UsIGl0IHdpbGwgYmUgc2V0IHRvIDptaW1ldHlwZTpgdGV4dC9wbGFpbmAgYW5kIHRoZSBuZXcKKyAgICAgIHBhcmFtZXRlciB2YWx1ZSB3aWxsIGJlIGFwcGVuZGVkIGFzIHBlciA6cmZjOmAyMDQ1YC4KKworICAgICAgT3B0aW9uYWwgKmhlYWRlciogc3BlY2lmaWVzIGFuIGFsdGVybmF0aXZlIGhlYWRlciB0bworICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAsIGFuZCBhbGwgcGFyYW1ldGVycyB3aWxsIGJlIHF1b3RlZCBhcyBuZWNlc3NhcnkKKyAgICAgIHVubGVzcyBvcHRpb25hbCAqcmVxdW90ZSogaXMgYGBGYWxzZWBgICh0aGUgZGVmYXVsdCBpcyBgYFRydWVgYCkuCisKKyAgICAgIElmIG9wdGlvbmFsICpjaGFyc2V0KiBpcyBzcGVjaWZpZWQsIHRoZSBwYXJhbWV0ZXIgd2lsbCBiZSBlbmNvZGVkCisgICAgICBhY2NvcmRpbmcgdG8gOnJmYzpgMjIzMWAuIE9wdGlvbmFsICpsYW5ndWFnZSogc3BlY2lmaWVzIHRoZSBSRkMgMjIzMQorICAgICAgbGFuZ3VhZ2UsIGRlZmF1bHRpbmcgdG8gdGhlIGVtcHR5IHN0cmluZy4gIEJvdGggKmNoYXJzZXQqIGFuZCAqbGFuZ3VhZ2UqCisgICAgICBzaG91bGQgYmUgc3RyaW5ncy4KKworICAgICAgSWYgKnJlcGxhY2UqIGlzIGBgRmFsc2VgYCAodGhlIGRlZmF1bHQpIHRoZSBoZWFkZXIgaXMgbW92ZWQgdG8gdGhlCisgICAgICBlbmQgb2YgdGhlIGxpc3Qgb2YgaGVhZGVycy4gIElmICpyZXBsYWNlKiBpcyBgYFRydWVgYCwgdGhlIGhlYWRlcgorICAgICAgd2lsbCBiZSB1cGRhdGVkIGluIHBsYWNlLgorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNCBgYHJlcGxhY2VgYCBrZXl3b3JkIHdhcyBhZGRlZC4KKworCisgICAuLiBtZXRob2Q6OiBkZWxfcGFyYW0ocGFyYW0sIGhlYWRlcj0nY29udGVudC10eXBlJywgcmVxdW90ZT1UcnVlKQorCisgICAgICBSZW1vdmUgdGhlIGdpdmVuIHBhcmFtZXRlciBjb21wbGV0ZWx5IGZyb20gdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgCisgICAgICBoZWFkZXIuICBUaGUgaGVhZGVyIHdpbGwgYmUgcmUtd3JpdHRlbiBpbiBwbGFjZSB3aXRob3V0IHRoZSBwYXJhbWV0ZXIgb3IKKyAgICAgIGl0cyB2YWx1ZS4gIEFsbCB2YWx1ZXMgd2lsbCBiZSBxdW90ZWQgYXMgbmVjZXNzYXJ5IHVubGVzcyAqcmVxdW90ZSogaXMKKyAgICAgIGBgRmFsc2VgYCAodGhlIGRlZmF1bHQgaXMgYGBUcnVlYGApLiAgT3B0aW9uYWwgKmhlYWRlciogc3BlY2lmaWVzIGFuCisgICAgICBhbHRlcm5hdGl2ZSB0byA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYC4KKworCisgICAuLiBtZXRob2Q6OiBzZXRfdHlwZSh0eXBlLCBoZWFkZXI9J0NvbnRlbnQtVHlwZScsIHJlcXVvdGU9VHJ1ZSkKKworICAgICAgU2V0IHRoZSBtYWluIHR5cGUgYW5kIHN1YnR5cGUgZm9yIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYAorICAgICAgaGVhZGVyLiAqdHlwZSogbXVzdCBiZSBhIHN0cmluZyBpbiB0aGUgZm9ybSA6bWltZXR5cGU6YG1haW50eXBlL3N1YnR5cGVgLAorICAgICAgb3RoZXJ3aXNlIGEgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkLgorCisgICAgICBUaGlzIG1ldGhvZCByZXBsYWNlcyB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLCBrZWVwaW5nIGFsbAorICAgICAgdGhlIHBhcmFtZXRlcnMgaW4gcGxhY2UuICBJZiAqcmVxdW90ZSogaXMgYGBGYWxzZWBgLCB0aGlzIGxlYXZlcyB0aGUKKyAgICAgIGV4aXN0aW5nIGhlYWRlcidzIHF1b3RpbmcgYXMgaXMsIG90aGVyd2lzZSB0aGUgcGFyYW1ldGVycyB3aWxsIGJlIHF1b3RlZAorICAgICAgKHRoZSBkZWZhdWx0KS4KKworICAgICAgQW4gYWx0ZXJuYXRpdmUgaGVhZGVyIGNhbiBiZSBzcGVjaWZpZWQgaW4gdGhlICpoZWFkZXIqIGFyZ3VtZW50LiBXaGVuIHRoZQorICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGlzIHNldCBhIDptYWlsaGVhZGVyOmBNSU1FLVZlcnNpb25gCisgICAgICBoZWFkZXIgaXMgYWxzbyBhZGRlZC4KKworICAgICAgVGhpcyBpcyBhIGxlZ2FjeSBtZXRob2QuICBPbiB0aGUKKyAgICAgIDpjbGFzczpgfmVtYWlsLmVtYWlsbWVzc2FnZS5FbWFpbE1lc3NhZ2VgIGNsYXNzIGl0cyBmdW5jdGlvbmFsaXR5IGlzCisgICAgICByZXBsYWNlZCBieSB0aGUgYGBtYWtlX2BgIGFuZCBgYGFkZF9gYCBtZXRob2RzLgorCisKKyAgIC4uIG1ldGhvZDo6IGdldF9maWxlbmFtZShmYWlsb2JqPU5vbmUpCisKKyAgICAgIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGBgZmlsZW5hbWVgYCBwYXJhbWV0ZXIgb2YgdGhlCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbmAgaGVhZGVyIG9mIHRoZSBtZXNzYWdlLiAgSWYgdGhlIGhlYWRlcgorICAgICAgZG9lcyBub3QgaGF2ZSBhIGBgZmlsZW5hbWVgYCBwYXJhbWV0ZXIsIHRoaXMgbWV0aG9kIGZhbGxzIGJhY2sgdG8gbG9va2luZworICAgICAgZm9yIHRoZSBgYG5hbWVgYCBwYXJhbWV0ZXIgb24gdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlci4gIElmCisgICAgICBuZWl0aGVyIGlzIGZvdW5kLCBvciB0aGUgaGVhZGVyIGlzIG1pc3NpbmcsIHRoZW4gKmZhaWxvYmoqIGlzIHJldHVybmVkLgorICAgICAgVGhlIHJldHVybmVkIHN0cmluZyB3aWxsIGFsd2F5cyBiZSB1bnF1b3RlZCBhcyBwZXIKKyAgICAgIDpmdW5jOmBlbWFpbC51dGlscy51bnF1b3RlYC4KKworCisgICAuLiBtZXRob2Q6OiBnZXRfYm91bmRhcnkoZmFpbG9iaj1Ob25lKQorCisgICAgICBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBgYGJvdW5kYXJ5YGAgcGFyYW1ldGVyIG9mIHRoZQorICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIG9mIHRoZSBtZXNzYWdlLCBvciAqZmFpbG9iaiogaWYgZWl0aGVyCisgICAgICB0aGUgaGVhZGVyIGlzIG1pc3NpbmcsIG9yIGhhcyBubyBgYGJvdW5kYXJ5YGAgcGFyYW1ldGVyLiAgVGhlIHJldHVybmVkCisgICAgICBzdHJpbmcgd2lsbCBhbHdheXMgYmUgdW5xdW90ZWQgYXMgcGVyIDpmdW5jOmBlbWFpbC51dGlscy51bnF1b3RlYC4KKworCisgICAuLiBtZXRob2Q6OiBzZXRfYm91bmRhcnkoYm91bmRhcnkpCisKKyAgICAgIFNldCB0aGUgYGBib3VuZGFyeWBgIHBhcmFtZXRlciBvZiB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIHRvCisgICAgICAqYm91bmRhcnkqLiAgOm1ldGg6YHNldF9ib3VuZGFyeWAgd2lsbCBhbHdheXMgcXVvdGUgKmJvdW5kYXJ5KiBpZgorICAgICAgbmVjZXNzYXJ5LiAgQSA6ZXhjOmB+ZW1haWwuZXJyb3JzLkhlYWRlclBhcnNlRXJyb3JgIGlzIHJhaXNlZCBpZiB0aGUKKyAgICAgIG1lc3NhZ2Ugb2JqZWN0IGhhcyBubyA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIuCisKKyAgICAgIE5vdGUgdGhhdCB1c2luZyB0aGlzIG1ldGhvZCBpcyBzdWJ0bHkgZGlmZmVyZW50IHRoYW4gZGVsZXRpbmcgdGhlIG9sZAorICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGFuZCBhZGRpbmcgYSBuZXcgb25lIHdpdGggdGhlIG5ldworICAgICAgYm91bmRhcnkgdmlhIDptZXRoOmBhZGRfaGVhZGVyYCwgYmVjYXVzZSA6bWV0aDpgc2V0X2JvdW5kYXJ5YCBwcmVzZXJ2ZXMKKyAgICAgIHRoZSBvcmRlciBvZiB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGluIHRoZSBsaXN0IG9mCisgICAgICBoZWFkZXJzLiBIb3dldmVyLCBpdCBkb2VzICpub3QqIHByZXNlcnZlIGFueSBjb250aW51YXRpb24gbGluZXMgd2hpY2ggbWF5CisgICAgICBoYXZlIGJlZW4gcHJlc2VudCBpbiB0aGUgb3JpZ2luYWwgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLgorCisKKyAgIC4uIG1ldGhvZDo6IGdldF9jb250ZW50X2NoYXJzZXQoZmFpbG9iaj1Ob25lKQorCisgICAgICBSZXR1cm4gdGhlIGBgY2hhcnNldGBgIHBhcmFtZXRlciBvZiB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLAorICAgICAgY29lcmNlZCB0byBsb3dlciBjYXNlLiAgSWYgdGhlcmUgaXMgbm8gOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLCBvciBpZgorICAgICAgdGhhdCBoZWFkZXIgaGFzIG5vIGBgY2hhcnNldGBgIHBhcmFtZXRlciwgKmZhaWxvYmoqIGlzIHJldHVybmVkLgorCisgICAgICBOb3RlIHRoYXQgdGhpcyBtZXRob2QgZGlmZmVycyBmcm9tIDptZXRoOmBnZXRfY2hhcnNldGAgd2hpY2ggcmV0dXJucyB0aGUKKyAgICAgIDpjbGFzczpgfmVtYWlsLmNoYXJzZXQuQ2hhcnNldGAgaW5zdGFuY2UgZm9yIHRoZSBkZWZhdWx0IGVuY29kaW5nIG9mIHRoZSBtZXNzYWdlIGJvZHkuCisKKworICAgLi4gbWV0aG9kOjogZ2V0X2NoYXJzZXRzKGZhaWxvYmo9Tm9uZSkKKworICAgICAgUmV0dXJuIGEgbGlzdCBjb250YWluaW5nIHRoZSBjaGFyYWN0ZXIgc2V0IG5hbWVzIGluIHRoZSBtZXNzYWdlLiAgSWYgdGhlCisgICAgICBtZXNzYWdlIGlzIGEgOm1pbWV0eXBlOmBtdWx0aXBhcnRgLCB0aGVuIHRoZSBsaXN0IHdpbGwgY29udGFpbiBvbmUgZWxlbWVudAorICAgICAgZm9yIGVhY2ggc3VicGFydCBpbiB0aGUgcGF5bG9hZCwgb3RoZXJ3aXNlLCBpdCB3aWxsIGJlIGEgbGlzdCBvZiBsZW5ndGggMS4KKworICAgICAgRWFjaCBpdGVtIGluIHRoZSBsaXN0IHdpbGwgYmUgYSBzdHJpbmcgd2hpY2ggaXMgdGhlIHZhbHVlIG9mIHRoZQorICAgICAgYGBjaGFyc2V0YGAgcGFyYW1ldGVyIGluIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgZm9yIHRoZQorICAgICAgcmVwcmVzZW50ZWQgc3VicGFydC4gIEhvd2V2ZXIsIGlmIHRoZSBzdWJwYXJ0IGhhcyBubworICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLCBubyBgYGNoYXJzZXRgYCBwYXJhbWV0ZXIsIG9yIGlzIG5vdCBvZgorICAgICAgdGhlIDptaW1ldHlwZTpgdGV4dGAgbWFpbiBNSU1FIHR5cGUsIHRoZW4gdGhhdCBpdGVtIGluIHRoZSByZXR1cm5lZCBsaXN0CisgICAgICB3aWxsIGJlICpmYWlsb2JqKi4KKworCisgICAuLiBtZXRob2Q6OiBnZXRfY29udGVudF9kaXNwb3NpdGlvbigpCisKKyAgICAgIFJldHVybiB0aGUgbG93ZXJjYXNlZCB2YWx1ZSAod2l0aG91dCBwYXJhbWV0ZXJzKSBvZiB0aGUgbWVzc2FnZSdzCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbmAgaGVhZGVyIGlmIGl0IGhhcyBvbmUsIG9yIGBgTm9uZWBgLiAgVGhlCisgICAgICBwb3NzaWJsZSB2YWx1ZXMgZm9yIHRoaXMgbWV0aG9kIGFyZSAqaW5saW5lKiwgKmF0dGFjaG1lbnQqIG9yIGBgTm9uZWBgCisgICAgICBpZiB0aGUgbWVzc2FnZSBmb2xsb3dzIDpyZmM6YDIxODNgLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworICAgLi4gbWV0aG9kOjogd2FsaygpCisKKyAgICAgIFRoZSA6bWV0aDpgd2Fsa2AgbWV0aG9kIGlzIGFuIGFsbC1wdXJwb3NlIGdlbmVyYXRvciB3aGljaCBjYW4gYmUgdXNlZCB0bworICAgICAgaXRlcmF0ZSBvdmVyIGFsbCB0aGUgcGFydHMgYW5kIHN1YnBhcnRzIG9mIGEgbWVzc2FnZSBvYmplY3QgdHJlZSwgaW4KKyAgICAgIGRlcHRoLWZpcnN0IHRyYXZlcnNhbCBvcmRlci4gIFlvdSB3aWxsIHR5cGljYWxseSB1c2UgOm1ldGg6YHdhbGtgIGFzIHRoZQorICAgICAgaXRlcmF0b3IgaW4gYSBgYGZvcmBgIGxvb3A7IGVhY2ggaXRlcmF0aW9uIHJldHVybnMgdGhlIG5leHQgc3VicGFydC4KKworICAgICAgSGVyZSdzIGFuIGV4YW1wbGUgdGhhdCBwcmludHMgdGhlIE1JTUUgdHlwZSBvZiBldmVyeSBwYXJ0IG9mIGEgbXVsdGlwYXJ0CisgICAgICBtZXNzYWdlIHN0cnVjdHVyZToKKworICAgICAgLi4gdGVzdHNldHVwOjoKKworICAgICAgICAgPj4+IGZyb20gZW1haWwgaW1wb3J0IG1lc3NhZ2VfZnJvbV9iaW5hcnlfZmlsZQorICAgICAgICAgPj4+IHdpdGggb3BlbignTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18xNi50eHQnLCAncmInKSBhcyBmOgorICAgICAgICAgLi4uICAgICBtc2cgPSBtZXNzYWdlX2Zyb21fYmluYXJ5X2ZpbGUoZikKKyAgICAgICAgID4+PiBmcm9tIGVtYWlsLml0ZXJhdG9ycyBpbXBvcnQgX3N0cnVjdHVyZQorCisgICAgICAuLiBkb2N0ZXN0OjoKKworICAgICAgICAgPj4+IGZvciBwYXJ0IGluIG1zZy53YWxrKCk6CisgICAgICAgICAuLi4gICAgIHByaW50KHBhcnQuZ2V0X2NvbnRlbnRfdHlwZSgpKQorICAgICAgICAgbXVsdGlwYXJ0L3JlcG9ydAorICAgICAgICAgdGV4dC9wbGFpbgorICAgICAgICAgbWVzc2FnZS9kZWxpdmVyeS1zdGF0dXMKKyAgICAgICAgIHRleHQvcGxhaW4KKyAgICAgICAgIHRleHQvcGxhaW4KKyAgICAgICAgIG1lc3NhZ2UvcmZjODIyCisgICAgICAgICB0ZXh0L3BsYWluCisKKyAgICAgIGBgd2Fsa2BgIGl0ZXJhdGVzIG92ZXIgdGhlIHN1YnBhcnRzIG9mIGFueSBwYXJ0IHdoZXJlCisgICAgICA6bWV0aDpgaXNfbXVsdGlwYXJ0YCByZXR1cm5zIGBgVHJ1ZWBgLCBldmVuIHRob3VnaAorICAgICAgYGBtc2cuZ2V0X2NvbnRlbnRfbWFpbnR5cGUoKSA9PSAnbXVsdGlwYXJ0J2BgIG1heSByZXR1cm4gYGBGYWxzZWBgLiAgV2UKKyAgICAgIGNhbiBzZWUgdGhpcyBpbiBvdXIgZXhhbXBsZSBieSBtYWtpbmcgdXNlIG9mIHRoZSBgYF9zdHJ1Y3R1cmVgYCBkZWJ1ZworICAgICAgaGVscGVyIGZ1bmN0aW9uOgorCisgICAgICAuLiBkb2N0ZXN0OjoKKworICAgICAgICAgPj4+IGZvciBwYXJ0IGluIG1zZy53YWxrKCk6CisgICAgICAgICAuLi4gICAgIHByaW50KHBhcnQuZ2V0X2NvbnRlbnRfbWFpbnR5cGUoKSA9PSAnbXVsdGlwYXJ0JyksCisgICAgICAgICAuLi4gICAgICAgICAgIHBhcnQuaXNfbXVsdGlwYXJ0KCkpCisgICAgICAgICBUcnVlIFRydWUKKyAgICAgICAgIEZhbHNlIEZhbHNlCisgICAgICAgICBGYWxzZSBUcnVlCisgICAgICAgICBGYWxzZSBGYWxzZQorICAgICAgICAgRmFsc2UgRmFsc2UKKyAgICAgICAgIEZhbHNlIFRydWUKKyAgICAgICAgIEZhbHNlIEZhbHNlCisgICAgICAgICA+Pj4gX3N0cnVjdHVyZShtc2cpCisgICAgICAgICBtdWx0aXBhcnQvcmVwb3J0CisgICAgICAgICAgICAgdGV4dC9wbGFpbgorICAgICAgICAgbWVzc2FnZS9kZWxpdmVyeS1zdGF0dXMKKyAgICAgICAgICAgICB0ZXh0L3BsYWluCisgICAgICAgICAgICAgdGV4dC9wbGFpbgorICAgICAgICAgbWVzc2FnZS9yZmM4MjIKKyAgICAgICAgICAgICB0ZXh0L3BsYWluCisKKyAgICAgIEhlcmUgdGhlIGBgbWVzc2FnZWBgIHBhcnRzIGFyZSBub3QgYGBtdWx0aXBhcnRzYGAsIGJ1dCB0aGV5IGRvIGNvbnRhaW4KKyAgICAgIHN1YnBhcnRzLiBgYGlzX211bHRpcGFydCgpYGAgcmV0dXJucyBgYFRydWVgYCBhbmQgYGB3YWxrYGAgZGVzY2VuZHMKKyAgICAgIGludG8gdGhlIHN1YnBhcnRzLgorCisKKyAgIDpjbGFzczpgTWVzc2FnZWAgb2JqZWN0cyBjYW4gYWxzbyBvcHRpb25hbGx5IGNvbnRhaW4gdHdvIGluc3RhbmNlIGF0dHJpYnV0ZXMsCisgICB3aGljaCBjYW4gYmUgdXNlZCB3aGVuIGdlbmVyYXRpbmcgdGhlIHBsYWluIHRleHQgb2YgYSBNSU1FIG1lc3NhZ2UuCisKKworICAgLi4gYXR0cmlidXRlOjogcHJlYW1ibGUKKworICAgICAgVGhlIGZvcm1hdCBvZiBhIE1JTUUgZG9jdW1lbnQgYWxsb3dzIGZvciBzb21lIHRleHQgYmV0d2VlbiB0aGUgYmxhbmsgbGluZQorICAgICAgZm9sbG93aW5nIHRoZSBoZWFkZXJzLCBhbmQgdGhlIGZpcnN0IG11bHRpcGFydCBib3VuZGFyeSBzdHJpbmcuIE5vcm1hbGx5LAorICAgICAgdGhpcyB0ZXh0IGlzIG5ldmVyIHZpc2libGUgaW4gYSBNSU1FLWF3YXJlIG1haWwgcmVhZGVyIGJlY2F1c2UgaXQgZmFsbHMKKyAgICAgIG91dHNpZGUgdGhlIHN0YW5kYXJkIE1JTUUgYXJtb3IuICBIb3dldmVyLCB3aGVuIHZpZXdpbmcgdGhlIHJhdyB0ZXh0IG9mCisgICAgICB0aGUgbWVzc2FnZSwgb3Igd2hlbiB2aWV3aW5nIHRoZSBtZXNzYWdlIGluIGEgbm9uLU1JTUUgYXdhcmUgcmVhZGVyLCB0aGlzCisgICAgICB0ZXh0IGNhbiBiZWNvbWUgdmlzaWJsZS4KKworICAgICAgVGhlICpwcmVhbWJsZSogYXR0cmlidXRlIGNvbnRhaW5zIHRoaXMgbGVhZGluZyBleHRyYS1hcm1vciB0ZXh0IGZvciBNSU1FCisgICAgICBkb2N1bWVudHMuICBXaGVuIHRoZSA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuUGFyc2VyYCBkaXNjb3ZlcnMgc29tZSB0ZXh0CisgICAgICBhZnRlciB0aGUgaGVhZGVycyBidXQgYmVmb3JlIHRoZSBmaXJzdCBib3VuZGFyeSBzdHJpbmcsIGl0IGFzc2lnbnMgdGhpcworICAgICAgdGV4dCB0byB0aGUgbWVzc2FnZSdzICpwcmVhbWJsZSogYXR0cmlidXRlLiAgV2hlbiB0aGUKKyAgICAgIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5HZW5lcmF0b3JgIGlzIHdyaXRpbmcgb3V0IHRoZSBwbGFpbiB0ZXh0CisgICAgICByZXByZXNlbnRhdGlvbiBvZiBhIE1JTUUgbWVzc2FnZSwgYW5kIGl0IGZpbmRzIHRoZQorICAgICAgbWVzc2FnZSBoYXMgYSAqcHJlYW1ibGUqIGF0dHJpYnV0ZSwgaXQgd2lsbCB3cml0ZSB0aGlzIHRleHQgaW4gdGhlIGFyZWEKKyAgICAgIGJldHdlZW4gdGhlIGhlYWRlcnMgYW5kIHRoZSBmaXJzdCBib3VuZGFyeS4gIFNlZSA6bW9kOmBlbWFpbC5wYXJzZXJgIGFuZAorICAgICAgOm1vZDpgZW1haWwuZ2VuZXJhdG9yYCBmb3IgZGV0YWlscy4KKworICAgICAgTm90ZSB0aGF0IGlmIHRoZSBtZXNzYWdlIG9iamVjdCBoYXMgbm8gcHJlYW1ibGUsIHRoZSAqcHJlYW1ibGUqIGF0dHJpYnV0ZQorICAgICAgd2lsbCBiZSBgYE5vbmVgYC4KKworCisgICAuLiBhdHRyaWJ1dGU6OiBlcGlsb2d1ZQorCisgICAgICBUaGUgKmVwaWxvZ3VlKiBhdHRyaWJ1dGUgYWN0cyB0aGUgc2FtZSB3YXkgYXMgdGhlICpwcmVhbWJsZSogYXR0cmlidXRlLAorICAgICAgZXhjZXB0IHRoYXQgaXQgY29udGFpbnMgdGV4dCB0aGF0IGFwcGVhcnMgYmV0d2VlbiB0aGUgbGFzdCBib3VuZGFyeSBhbmQKKyAgICAgIHRoZSBlbmQgb2YgdGhlIG1lc3NhZ2UuCisKKyAgICAgIFlvdSBkbyBub3QgbmVlZCB0byBzZXQgdGhlIGVwaWxvZ3VlIHRvIHRoZSBlbXB0eSBzdHJpbmcgaW4gb3JkZXIgZm9yIHRoZQorICAgICAgOmNsYXNzOmB+ZW1haWwuZ2VuZXJhdG9yLkdlbmVyYXRvcmAgdG8gcHJpbnQgYSBuZXdsaW5lIGF0IHRoZSBlbmQgb2YgdGhlCisgICAgICBmaWxlLgorCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGRlZmVjdHMKKworICAgICAgVGhlICpkZWZlY3RzKiBhdHRyaWJ1dGUgY29udGFpbnMgYSBsaXN0IG9mIGFsbCB0aGUgcHJvYmxlbXMgZm91bmQgd2hlbgorICAgICAgcGFyc2luZyB0aGlzIG1lc3NhZ2UuICBTZWUgOm1vZDpgZW1haWwuZXJyb3JzYCBmb3IgYSBkZXRhaWxlZCBkZXNjcmlwdGlvbgorICAgICAgb2YgdGhlIHBvc3NpYmxlIHBhcnNpbmcgZGVmZWN0cy4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLmNvbnRlbnRtYW5hZ2VyLnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLmNvbnRlbnRtYW5hZ2VyLnJzdAppbmRleCBhOWMwNzhiLi41Nzc0M2Q1IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9lbWFpbC5jb250ZW50bWFuYWdlci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwuY29udGVudG1hbmFnZXIucnN0CkBAIC03LDI1MSArNywxMiBAQAogLi4gbW9kdWxlYXV0aG9yOjogUi4gRGF2aWQgTXVycmF5IDxyZG11cnJheUBiaXRkYW5jZS5jb20+CiAuLiBzZWN0aW9uYXV0aG9yOjogUi4gRGF2aWQgTXVycmF5IDxyZG11cnJheUBiaXRkYW5jZS5jb20+CiAKLS4uIHZlcnNpb25hZGRlZDo6IDMuNAotICAgYXMgYSA6dGVybTpgcHJvdmlzaW9uYWwgbW9kdWxlIDxwcm92aXNpb25hbCBwYWNrYWdlPmAuCi0KICoqU291cmNlIGNvZGU6KiogOnNvdXJjZTpgTGliL2VtYWlsL2NvbnRlbnRtYW5hZ2VyLnB5YAogCi0uLiBub3RlOjoKKy0tLS0tLS0tLS0tLQogCi0gICBUaGUgY29udGVudG1hbmFnZXIgbW9kdWxlIGhhcyBiZWVuIGluY2x1ZGVkIGluIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IG9uIGEKLSAgIDp0ZXJtOmBwcm92aXNpb25hbCBiYXNpcyA8cHJvdmlzaW9uYWwgcGFja2FnZT5gLiBCYWNrd2FyZHMgaW5jb21wYXRpYmxlCi0gICBjaGFuZ2VzICh1cCB0byBhbmQgaW5jbHVkaW5nIHJlbW92YWwgb2YgdGhlIG1vZHVsZSkgbWF5IG9jY3VyIGlmIGRlZW1lZAotICAgbmVjZXNzYXJ5IGJ5IHRoZSBjb3JlIGRldmVsb3BlcnMuCi0KLS0tLS0tLS0tLS0tLS0tCi0KLVRoZSA6bW9kOmB+ZW1haWwubWVzc2FnZWAgbW9kdWxlIHByb3ZpZGVzIGEgY2xhc3MgdGhhdCBjYW4gcmVwcmVzZW50IGFuCi1hcmJpdHJhcnkgZW1haWwgbWVzc2FnZS4gIFRoYXQgYmFzaWMgbWVzc2FnZSBtb2RlbCBoYXMgYSB1c2VmdWwgYW5kIGZsZXhpYmxlCi1BUEksIGJ1dCBpdCBwcm92aWRlcyBvbmx5IGEgbG93ZXItbGV2ZWwgQVBJIGZvciBpbnRlcmFjdGluZyB3aXRoIHRoZSBnZW5lcmljCi1wYXJ0cyBvZiBhIG1lc3NhZ2UgKHRoZSBoZWFkZXJzLCBnZW5lcmljIGhlYWRlciBwYXJhbWV0ZXJzLCBhbmQgdGhlIHBheWxvYWQsCi13aGljaCBtYXkgYmUgYSBsaXN0IG9mIHN1Yi1wYXJ0cykuICBUaGlzIG1vZHVsZSBwcm92aWRlcyBjbGFzc2VzIGFuZCB0b29scwotdGhhdCBwcm92aWRlIGFuIGVuaGFuY2VkIGFuZCBleHRlbnNpYmxlIEFQSSBmb3IgZGVhbGluZyB3aXRoIHZhcmlvdXMgc3BlY2lmaWMKLXR5cGVzIG9mIGNvbnRlbnQsIGluY2x1ZGluZyB0aGUgYWJpbGl0eSB0byByZXRyaWV2ZSB0aGUgY29udGVudCBvZiB0aGUgbWVzc2FnZQotYXMgYSBzcGVjaWFsaXplZCBvYmplY3QgdHlwZSByYXRoZXIgdGhhbiBhcyBhIHNpbXBsZSBieXRlcyBvYmplY3QuICBUaGUgbW9kdWxlCi1hdXRvbWF0aWNhbGx5IHRha2VzIGNhcmUgb2YgdGhlIFJGQy1zcGVjaWZpZWQgTUlNRSBkZXRhaWxzIChyZXF1aXJlZCBoZWFkZXJzCi1hbmQgcGFyYW1ldGVycywgZXRjLikgZm9yIHRoZSBjZXJ0YWluIGNvbW1vbiBjb250ZW50IHR5cGVzIGNvbnRlbnQgcHJvcGVydGllcywKLWFuZCBzdXBwb3J0IGZvciBhZGRpdGlvbmFsIHR5cGVzIGNhbiBiZSBhZGRlZCBieSBhbiBhcHBsaWNhdGlvbiB1c2luZyB0aGUKLWV4dGVuc2lvbiBtZWNoYW5pc21zLgotCi1UaGlzIG1vZHVsZSBkZWZpbmVzIHRoZSBlcG9ueW1vdXMgIkNvbnRlbnQgTWFuYWdlciIgY2xhc3Nlcy4gIFRoZSBiYXNlCi06Y2xhc3M6YC5Db250ZW50TWFuYWdlcmAgY2xhc3MgZGVmaW5lcyBhbiBBUEkgZm9yIHJlZ2lzdGVyaW5nIGNvbnRlbnQKLW1hbmFnZW1lbnQgZnVuY3Rpb25zIHdoaWNoIGV4dHJhY3QgZGF0YSBmcm9tIGBgTWVzc2FnZWBgIG9iamVjdHMgb3IgaW5zZXJ0IGRhdGEKLWFuZCBoZWFkZXJzIGludG8gYGBNZXNzYWdlYGAgb2JqZWN0cywgdGh1cyBwcm92aWRpbmcgYSB3YXkgb2YgY29udmVydGluZwotYmV0d2VlbiBgYE1lc3NhZ2VgYCBvYmplY3RzIGNvbnRhaW5pbmcgZGF0YSBhbmQgb3RoZXIgcmVwcmVzZW50YXRpb25zIG9mIHRoYXQKLWRhdGEgKFB5dGhvbiBkYXRhIHR5cGVzLCBzcGVjaWFsaXplZCBQeXRob24gb2JqZWN0cywgZXh0ZXJuYWwgZmlsZXMsIGV0YykuICBUaGUKLW1vZHVsZSBhbHNvIGRlZmluZXMgb25lIGNvbmNyZXRlIGNvbnRlbnQgbWFuYWdlcjogOmRhdGE6YHJhd19kYXRhX21hbmFnZXJgCi1jb252ZXJ0cyBiZXR3ZWVuIE1JTUUgY29udGVudCB0eXBlcyBhbmQgYGBzdHJgYCBvciBgYGJ5dGVzYGAgZGF0YS4gIEl0IGFsc28KLXByb3ZpZGVzIGEgY29udmVuaWVudCBBUEkgZm9yIG1hbmFnaW5nIHRoZSBNSU1FIHBhcmFtZXRlcnMgd2hlbiBpbnNlcnRpbmcKLWNvbnRlbnQgaW50byBgYE1lc3NhZ2VgYFwgcy4gIEl0IGFsc28gaGFuZGxlcyBpbnNlcnRpbmcgYW5kIGV4dHJhY3RpbmcKLWBgTWVzc2FnZWBgIG9iamVjdHMgd2hlbiBkZWFsaW5nIHdpdGggdGhlIGBgbWVzc2FnZS9yZmM4MjJgYCBjb250ZW50IHR5cGUuCi0KLUFub3RoZXIgcGFydCBvZiB0aGUgZW5oYW5jZWQgaW50ZXJmYWNlIGlzIHN1YmNsYXNzZXMgb2YKLTpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgdGhhdCBwcm92aWRlIG5ldyBjb252ZW5pZW5jZSBBUEkgZnVuY3Rpb25zLAotaW5jbHVkaW5nIGNvbnZlbmllbmNlIG1ldGhvZHMgZm9yIGNhbGxpbmcgdGhlIENvbnRlbnQgTWFuYWdlcnMgZGVyaXZlZCBmcm9tCi10aGlzIG1vZHVsZS4KLQotLi4gbm90ZTo6Ci0KLSAgIEFsdGhvdWdoIDpjbGFzczpgLkVtYWlsTWVzc2FnZWAgYW5kIDpjbGFzczpgLk1JTUVQYXJ0YCBhcmUgY3VycmVudGx5Ci0gICBkb2N1bWVudGVkIGluIHRoaXMgbW9kdWxlIGJlY2F1c2Ugb2YgdGhlIHByb3Zpc2lvbmFsIG5hdHVyZSBvZiB0aGUgY29kZSwgdGhlCi0gICBpbXBsZW1lbnRhdGlvbiBsaXZlcyBpbiB0aGUgOm1vZDpgZW1haWwubWVzc2FnZWAgbW9kdWxlLgotCi0uLiBjdXJyZW50bW9kdWxlOjogZW1haWwubWVzc2FnZQotCi0uLiBjbGFzczo6IEVtYWlsTWVzc2FnZShwb2xpY3k9ZGVmYXVsdCkKLQotICAgSWYgKnBvbGljeSogaXMgc3BlY2lmaWVkIChpdCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIGEgOm1vZDpgfmVtYWlsLnBvbGljeWAKLSAgIGNsYXNzKSB1c2UgdGhlIHJ1bGVzIGl0IHNwZWNpZmllcyB0byB1ZHBhdGUgYW5kIHNlcmlhbGl6ZSB0aGUgcmVwcmVzZW50YXRpb24KLSAgIG9mIHRoZSBtZXNzYWdlLiAgSWYgKnBvbGljeSogaXMgbm90IHNldCwgdXNlIHRoZQotICAgOmNsYXNzOmB+ZW1haWwucG9saWN5LmRlZmF1bHRgIHBvbGljeSwgd2hpY2ggZm9sbG93cyB0aGUgcnVsZXMgb2YgdGhlIGVtYWlsCi0gICBSRkNzIGV4Y2VwdCBmb3IgbGluZSBlbmRpbmdzIChpbnN0ZWFkIG9mIHRoZSBSRkMgbWFuZGF0ZWQgYGBcclxuYGAsIGl0IHVzZXMKLSAgIHRoZSBQeXRob24gc3RhbmRhcmQgYGBcbmBgIGxpbmUgZW5kaW5ncykuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgdGhlCi0gICA6bW9kOmB+ZW1haWwucG9saWN5YCBkb2N1bWVudGF0aW9uLgotCi0gICBUaGlzIGNsYXNzIGlzIGEgc3ViY2xhc3Mgb2YgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYC4gIEl0IGFkZHMKLSAgIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKLQotCi0gICAuLiBtZXRob2Q6OiBpc19hdHRhY2htZW50Ci0KLSAgICAgIFJldHVybiBgYFRydWVgYCBpZiB0aGVyZSBpcyBhIDptYWlsaGVhZGVyOmBDb250ZW50LURpc3Bvc2l0aW9uYCBoZWFkZXIKLSAgICAgIGFuZCBpdHMgKGNhc2UgaW5zZW5zaXRpdmUpIHZhbHVlIGlzIGBgYXR0YWNobWVudGBgLCBgYEZhbHNlYGAgb3RoZXJ3aXNlLgotCi0gICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNC4yCi0gICAgICAgICBpc19hdHRhY2htZW50IGlzIG5vdyBhIG1ldGhvZCBpbnN0ZWFkIG9mIGEgcHJvcGVydHksIGZvciBjb25zaXN0ZW5jeQotICAgICAgICAgd2l0aCA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5pc19tdWx0aXBhcnRgLgotCi0KLSAgIC4uIG1ldGhvZDo6IGdldF9ib2R5KHByZWZlcmVuY2VsaXN0PSgncmVsYXRlZCcsICdodG1sJywgJ3BsYWluJykpCi0KLSAgICAgIFJldHVybiB0aGUgTUlNRSBwYXJ0IHRoYXQgaXMgdGhlIGJlc3QgY2FuZGlkYXRlIHRvIGJlIHRoZSAiYm9keSIgb2YgdGhlCi0gICAgICBtZXNzYWdlLgotCi0gICAgICAqcHJlZmVyZW5jZWxpc3QqIG11c3QgYmUgYSBzZXF1ZW5jZSBvZiBzdHJpbmdzIGZyb20gdGhlIHNldCBgYHJlbGF0ZWRgYCwKLSAgICAgIGBgaHRtbGBgLCBhbmQgYGBwbGFpbmBgLCBhbmQgaW5kaWNhdGVzIHRoZSBvcmRlciBvZiBwcmVmZXJlbmNlIGZvciB0aGUKLSAgICAgIGNvbnRlbnQgdHlwZSBvZiB0aGUgcGFydCByZXR1cm5lZC4KLQotICAgICAgU3RhcnQgbG9va2luZyBmb3IgY2FuZGlkYXRlIG1hdGNoZXMgd2l0aCB0aGUgb2JqZWN0IG9uIHdoaWNoIHRoZQotICAgICAgYGBnZXRfYm9keWBgIG1ldGhvZCBpcyBjYWxsZWQuCi0KLSAgICAgIElmIGBgcmVsYXRlZGBgIGlzIG5vdCBpbmNsdWRlZCBpbiAqcHJlZmVyZW5jZWxpc3QqLCBjb25zaWRlciB0aGUgcm9vdAotICAgICAgcGFydCAob3Igc3VicGFydCBvZiB0aGUgcm9vdCBwYXJ0KSBvZiBhbnkgcmVsYXRlZCBlbmNvdW50ZXJlZCBhcyBhCi0gICAgICBjYW5kaWRhdGUgaWYgdGhlIChzdWItKXBhcnQgbWF0Y2hlcyBhIHByZWZlcmVuY2UuCi0KLSAgICAgIFdoZW4gZW5jb3VudGVyaW5nIGEgYGBtdWx0aXBhcnQvcmVsYXRlZGBgLCBjaGVjayB0aGUgYGBzdGFydGBgIHBhcmFtZXRlcgotICAgICAgYW5kIGlmIGEgcGFydCB3aXRoIGEgbWF0Y2hpbmcgOm1haWxoZWFkZXI6YENvbnRlbnQtSURgIGlzIGZvdW5kLCBjb25zaWRlcgotICAgICAgb25seSBpdCB3aGVuIGxvb2tpbmcgZm9yIGNhbmRpZGF0ZSBtYXRjaGVzLiAgT3RoZXJ3aXNlIGNvbnNpZGVyIG9ubHkgdGhlCi0gICAgICBmaXJzdCAoZGVmYXVsdCByb290KSBwYXJ0IG9mIHRoZSBgYG11bHRpcGFydC9yZWxhdGVkYGAuCi0KLSAgICAgIElmIGEgcGFydCBoYXMgYSA6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbmAgaGVhZGVyLCBvbmx5IGNvbnNpZGVyCi0gICAgICB0aGUgcGFydCBhIGNhbmRpZGF0ZSBtYXRjaCBpZiB0aGUgdmFsdWUgb2YgdGhlIGhlYWRlciBpcyBgYGlubGluZWBgLgotCi0gICAgICBJZiBub25lIG9mIHRoZSBjYW5kaWRhdGVzIG1hdGNoZXMgYW55IG9mIHRoZSBwcmVmZXJlbmNlcyBpbgotICAgICAgKnByZWZlcm5lY2xpc3QqLCByZXR1cm4gYGBOb25lYGAuCi0KLSAgICAgIE5vdGVzOiAoMSkgRm9yIG1vc3QgYXBwbGljYXRpb25zIHRoZSBvbmx5ICpwcmVmZXJlbmNlbGlzdCogY29tYmluYXRpb25zCi0gICAgICB0aGF0IHJlYWxseSBtYWtlIHNlbnNlIGFyZSBgYCgncGxhaW4nLClgYCwgYGAoJ2h0bWwnLCAncGxhaW4nKWBgLCBhbmQgdGhlCi0gICAgICBkZWZhdWx0LCBgYCgncmVsYXRlZCcsICdodG1sJywgJ3BsYWluJylgYC4gICgyKSBCZWNhdXNlIG1hdGNoaW5nIHN0YXJ0cwotICAgICAgd2l0aCB0aGUgb2JqZWN0IG9uIHdoaWNoIGBgZ2V0X2JvZHlgYCBpcyBjYWxsZWQsIGNhbGxpbmcgYGBnZXRfYm9keWBgIG9uCi0gICAgICBhIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCB3aWxsIHJldHVybiB0aGUgb2JqZWN0IGl0c2VsZiB1bmxlc3MKLSAgICAgICpwcmVmZXJlbmNlbGlzdCogaGFzIGEgbm9uLWRlZmF1bHQgdmFsdWUuICgzKSBNZXNzYWdlcyAob3IgbWVzc2FnZSBwYXJ0cykKLSAgICAgIHRoYXQgZG8gbm90IHNwZWNpZnkgYSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBvciB3aG9zZQotICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGlzIGludmFsaWQgd2lsbCBiZSB0cmVhdGVkIGFzIGlmIHRoZXkKLSAgICAgIGFyZSBvZiB0eXBlIGBgdGV4dC9wbGFpbmBgLCB3aGljaCBtYXkgb2NjYXNpb25hbGx5IGNhdXNlIGBgZ2V0X2JvZHlgYCB0bwotICAgICAgcmV0dXJuIHVuZXhwZWN0ZWQgcmVzdWx0cy4KLQotCi0gICAuLiBtZXRob2Q6OiBpdGVyX2F0dGFjaG1lbnRzKCkKLQotICAgICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgYWxsIG9mIHRoZSBwYXJ0cyBvZiB0aGUgbWVzc2FnZSB0aGF0IGFyZSBub3QKLSAgICAgIGNhbmRpZGF0ZSAiYm9keSIgcGFydHMuICBUaGF0IGlzLCBza2lwIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIGVhY2ggb2YKLSAgICAgIGBgdGV4dC9wbGFpbmBgLCBgYHRleHQvaHRtbGBgLCBgYG11bHRpcGFydC9yZWxhdGVkYGAsIG9yCi0gICAgICBgYG11bHRpcGFydC9hbHRlcm5hdGl2ZWBgICh1bmxlc3MgdGhleSBhcmUgZXhwbGljaXRseSBtYXJrZWQgYXMKLSAgICAgIGF0dGFjaG1lbnRzIHZpYSA6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudGApLCBhbmQKLSAgICAgIHJldHVybiBhbGwgcmVtYWluaW5nIHBhcnRzLiAgV2hlbiBhcHBsaWVkIGRpcmVjdGx5IHRvIGEKLSAgICAgIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCwgcmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgdGhlIGFsbCB0aGUgcmVsYXRlZCBwYXJ0cwotICAgICAgZXhjZXB0IHRoZSByb290IHBhcnQgKGllOiB0aGUgcGFydCBwb2ludGVkIHRvIGJ5IHRoZSBgYHN0YXJ0YGAgcGFyYW1ldGVyLAotICAgICAgb3IgdGhlIGZpcnN0IHBhcnQgaWYgdGhlcmUgaXMgbm8gYGBzdGFydGBgIHBhcmFtZXRlciBvciB0aGUgYGBzdGFydGBgCi0gICAgICBwYXJhbWV0ZXIgZG9lc24ndCBtYXRjaCB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtSURgIG9mIGFueSBvZiB0aGUKLSAgICAgIHBhcnRzKS4gIFdoZW4gYXBwbGllZCBkaXJlY3RseSB0byBhIGBgbXVsdGlwYXJ0L2FsdGVybmF0aXZlYGAgb3IgYQotICAgICAgbm9uLWBgbXVsdGlwYXJ0YGAsIHJldHVybiBhbiBlbXB0eSBpdGVyYXRvci4KLQotCi0gICAuLiBtZXRob2Q6OiBpdGVyX3BhcnRzKCkKLQotICAgICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgYWxsIG9mIHRoZSBpbW1lZGlhdGUgc3ViLXBhcnRzIG9mIHRoZSBtZXNzYWdlLAotICAgICAgd2hpY2ggd2lsbCBiZSBlbXB0eSBmb3IgYSBub24tYGBtdWx0aXBhcnRgYC4gIChTZWUgYWxzbwotICAgICAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLndhbGtgLikKLQotCi0gICAuLiBtZXRob2Q6OiBnZXRfY29udGVudCgqYXJncywgY29udGVudF9tYW5hZ2VyPU5vbmUsICoqa3cpCi0KLSAgICAgIENhbGwgdGhlIGBgZ2V0X2NvbnRlbnRgYCBtZXRob2Qgb2YgdGhlICpjb250ZW50X21hbmFnZXIqLCBwYXNzaW5nIHNlbGYKLSAgICAgIGFzIHRoZSBtZXNzYWdlIG9iamVjdCwgYW5kIHBhc3NpbmcgYWxvbmcgYW55IG90aGVyIGFyZ3VtZW50cyBvciBrZXl3b3JkcwotICAgICAgYXMgYWRkaXRpb25hbCBhcmd1bWVudHMuICBJZiAqY29udGVudF9tYW5hZ2VyKiBpcyBub3Qgc3BlY2lmaWVkLCB1c2UKLSAgICAgIHRoZSBgYGNvbnRlbnRfbWFuYWdlcmBgIHNwZWNpZmllZCBieSB0aGUgY3VycmVudCA6bW9kOmB+ZW1haWwucG9saWN5YC4KLQotCi0gICAuLiBtZXRob2Q6OiBzZXRfY29udGVudCgqYXJncywgY29udGVudF9tYW5hZ2VyPU5vbmUsICoqa3cpCi0KLSAgICAgIENhbGwgdGhlIGBgc2V0X2NvbnRlbnRgYCBtZXRob2Qgb2YgdGhlICpjb250ZW50X21hbmFnZXIqLCBwYXNzaW5nIHNlbGYKLSAgICAgIGFzIHRoZSBtZXNzYWdlIG9iamVjdCwgYW5kIHBhc3NpbmcgYWxvbmcgYW55IG90aGVyIGFyZ3VtZW50cyBvciBrZXl3b3JkcwotICAgICAgYXMgYWRkaXRpb25hbCBhcmd1bWVudHMuICBJZiAqY29udGVudF9tYW5hZ2VyKiBpcyBub3Qgc3BlY2lmaWVkLCB1c2UKLSAgICAgIHRoZSBgYGNvbnRlbnRfbWFuYWdlcmBgIHNwZWNpZmllZCBieSB0aGUgY3VycmVudCA6bW9kOmB+ZW1haWwucG9saWN5YC4KLQotCi0gICAuLiBtZXRob2Q6OiBtYWtlX3JlbGF0ZWQoYm91bmRhcnk9Tm9uZSkKLQotICAgICAgQ29udmVydCBhIG5vbi1gYG11bHRpcGFydGBgIG1lc3NhZ2UgaW50byBhIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCBtZXNzYWdlLAotICAgICAgbW92aW5nIGFueSBleGlzdGluZyA6bWFpbGhlYWRlcjpgQ29udGVudC1gIGhlYWRlcnMgYW5kIHBheWxvYWQgaW50byBhCi0gICAgICAobmV3KSBmaXJzdCBwYXJ0IG9mIHRoZSBgYG11bHRpcGFydGBgLiAgSWYgKmJvdW5kYXJ5KiBpcyBzcGVjaWZpZWQsIHVzZQotICAgICAgaXQgYXMgdGhlIGJvdW5kYXJ5IHN0cmluZyBpbiB0aGUgbXVsdGlwYXJ0LCBvdGhlcndpc2UgbGVhdmUgdGhlIGJvdW5kYXJ5Ci0gICAgICB0byBiZSBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgd2hlbiBpdCBpcyBuZWVkZWQgKGZvciBleGFtcGxlLCB3aGVuIHRoZQotICAgICAgbWVzc2FnZSBpcyBzZXJpYWxpemVkKS4KLQotCi0gICAuLiBtZXRob2Q6OiBtYWtlX2FsdGVybmF0aXZlKGJvdW5kYXJ5PU5vbmUpCi0KLSAgICAgIENvbnZlcnQgYSBub24tYGBtdWx0aXBhcnRgYCBvciBhIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCBpbnRvIGEKLSAgICAgIGBgbXVsdGlwYXJ0L2FsdGVybmF0aXZlYGAsIG1vdmluZyBhbnkgZXhpc3RpbmcgOm1haWxoZWFkZXI6YENvbnRlbnQtYAotICAgICAgaGVhZGVycyBhbmQgcGF5bG9hZCBpbnRvIGEgKG5ldykgZmlyc3QgcGFydCBvZiB0aGUgYGBtdWx0aXBhcnRgYC4gIElmCi0gICAgICAqYm91bmRhcnkqIGlzIHNwZWNpZmllZCwgdXNlIGl0IGFzIHRoZSBib3VuZGFyeSBzdHJpbmcgaW4gdGhlIG11bHRpcGFydCwKLSAgICAgIG90aGVyd2lzZSBsZWF2ZSB0aGUgYm91bmRhcnkgdG8gYmUgYXV0b21hdGljYWxseSBjcmVhdGVkIHdoZW4gaXQgaXMKLSAgICAgIG5lZWRlZCAoZm9yIGV4YW1wbGUsIHdoZW4gdGhlIG1lc3NhZ2UgaXMgc2VyaWFsaXplZCkuCi0KLQotICAgLi4gbWV0aG9kOjogbWFrZV9taXhlZChib3VuZGFyeT1Ob25lKQotCi0gICAgICBDb252ZXJ0IGEgbm9uLWBgbXVsdGlwYXJ0YGAsIGEgYGBtdWx0aXBhcnQvcmVsYXRlZGBgLCBvciBhCi0gICAgICBgYG11bHRpcGFydC1hbHRlcm5hdGl2ZWBgIGludG8gYSBgYG11bHRpcGFydC9taXhlZGBgLCBtb3ZpbmcgYW55IGV4aXN0aW5nCi0gICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1gIGhlYWRlcnMgYW5kIHBheWxvYWQgaW50byBhIChuZXcpIGZpcnN0IHBhcnQgb2YgdGhlCi0gICAgICBgYG11bHRpcGFydGBgLiAgSWYgKmJvdW5kYXJ5KiBpcyBzcGVjaWZpZWQsIHVzZSBpdCBhcyB0aGUgYm91bmRhcnkgc3RyaW5nCi0gICAgICBpbiB0aGUgbXVsdGlwYXJ0LCBvdGhlcndpc2UgbGVhdmUgdGhlIGJvdW5kYXJ5IHRvIGJlIGF1dG9tYXRpY2FsbHkKLSAgICAgIGNyZWF0ZWQgd2hlbiBpdCBpcyBuZWVkZWQgKGZvciBleGFtcGxlLCB3aGVuIHRoZSBtZXNzYWdlIGlzIHNlcmlhbGl6ZWQpLgotCi0KLSAgIC4uIG1ldGhvZDo6IGFkZF9yZWxhdGVkKCphcmdzLCBjb250ZW50X21hbmFnZXI9Tm9uZSwgKiprdykKLQotICAgICAgSWYgdGhlIG1lc3NhZ2UgaXMgYSBgYG11bHRpcGFydC9yZWxhdGVkYGAsIGNyZWF0ZSBhIG5ldyBtZXNzYWdlCi0gICAgICBvYmplY3QsIHBhc3MgYWxsIG9mIHRoZSBhcmd1bWVudHMgdG8gaXRzIDptZXRoOmBzZXRfY29udGVudGAgbWV0aG9kLAotICAgICAgYW5kIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmF0dGFjaGAgaXQgdG8gdGhlIGBgbXVsdGlwYXJ0YGAuICBJZgotICAgICAgdGhlIG1lc3NhZ2UgaXMgYSBub24tYGBtdWx0aXBhcnRgYCwgY2FsbCA6bWV0aDpgbWFrZV9yZWxhdGVkYCBhbmQgdGhlbgotICAgICAgcHJvY2VlZCBhcyBhYm92ZS4gIElmIHRoZSBtZXNzYWdlIGlzIGFueSBvdGhlciB0eXBlIG9mIGBgbXVsdGlwYXJ0YGAsCi0gICAgICByYWlzZSBhIDpleGM6YFR5cGVFcnJvcmAuIElmICpjb250ZW50X21hbmFnZXIqIGlzIG5vdCBzcGVjaWZpZWQsIHVzZQotICAgICAgdGhlIGBgY29udGVudF9tYW5hZ2VyYGAgc3BlY2lmaWVkIGJ5IHRoZSBjdXJyZW50IDptb2Q6YH5lbWFpbC5wb2xpY3lgLgotICAgICAgSWYgdGhlIGFkZGVkIHBhcnQgaGFzIG5vIDptYWlsaGVhZGVyOmBDb250ZW50LURpc3Bvc2l0aW9uYCBoZWFkZXIsCi0gICAgICBhZGQgb25lIHdpdGggdGhlIHZhbHVlIGBgaW5saW5lYGAuCi0KLQotICAgLi4gbWV0aG9kOjogYWRkX2FsdGVybmF0aXZlKCphcmdzLCBjb250ZW50X21hbmFnZXI9Tm9uZSwgKiprdykKLQotICAgICAgSWYgdGhlIG1lc3NhZ2UgaXMgYSBgYG11bHRpcGFydC9hbHRlcm5hdGl2ZWBgLCBjcmVhdGUgYSBuZXcgbWVzc2FnZQotICAgICAgb2JqZWN0LCBwYXNzIGFsbCBvZiB0aGUgYXJndW1lbnRzIHRvIGl0cyA6bWV0aDpgc2V0X2NvbnRlbnRgIG1ldGhvZCwgYW5kCi0gICAgICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5hdHRhY2hgIGl0IHRvIHRoZSBgYG11bHRpcGFydGBgLiAgSWYgdGhlCi0gICAgICBtZXNzYWdlIGlzIGEgbm9uLWBgbXVsdGlwYXJ0YGAgb3IgYGBtdWx0aXBhcnQvcmVsYXRlZGBgLCBjYWxsCi0gICAgICA6bWV0aDpgbWFrZV9hbHRlcm5hdGl2ZWAgYW5kIHRoZW4gcHJvY2VlZCBhcyBhYm92ZS4gIElmIHRoZSBtZXNzYWdlIGlzCi0gICAgICBhbnkgb3RoZXIgdHlwZSBvZiBgYG11bHRpcGFydGBgLCByYWlzZSBhIDpleGM6YFR5cGVFcnJvcmAuIElmCi0gICAgICAqY29udGVudF9tYW5hZ2VyKiBpcyBub3Qgc3BlY2lmaWVkLCB1c2UgdGhlIGBgY29udGVudF9tYW5hZ2VyYGAgc3BlY2lmaWVkCi0gICAgICBieSB0aGUgY3VycmVudCA6bW9kOmB+ZW1haWwucG9saWN5YC4KLQotCi0gICAuLiBtZXRob2Q6OiBhZGRfYXR0YWNobWVudCgqYXJncywgY29udGVudF9tYW5hZ2VyPU5vbmUsICoqa3cpCi0KLSAgICAgIElmIHRoZSBtZXNzYWdlIGlzIGEgYGBtdWx0aXBhcnQvbWl4ZWRgYCwgY3JlYXRlIGEgbmV3IG1lc3NhZ2Ugb2JqZWN0LAotICAgICAgcGFzcyBhbGwgb2YgdGhlIGFyZ3VtZW50cyB0byBpdHMgOm1ldGg6YHNldF9jb250ZW50YCBtZXRob2QsIGFuZAotICAgICAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuYXR0YWNoYCBpdCB0byB0aGUgYGBtdWx0aXBhcnRgYC4gIElmIHRoZQotICAgICAgbWVzc2FnZSBpcyBhIG5vbi1gYG11bHRpcGFydGBgLCBgYG11bHRpcGFydC9yZWxhdGVkYGAsIG9yCi0gICAgICBgYG11bHRpcGFydC9hbHRlcm5hdGl2ZWBgLCBjYWxsIDptZXRoOmBtYWtlX21peGVkYCBhbmQgdGhlbiBwcm9jZWVkIGFzCi0gICAgICBhYm92ZS4gSWYgKmNvbnRlbnRfbWFuYWdlciogaXMgbm90IHNwZWNpZmllZCwgdXNlIHRoZSBgYGNvbnRlbnRfbWFuYWdlcmBgCi0gICAgICBzcGVjaWZpZWQgYnkgdGhlIGN1cnJlbnQgOm1vZDpgfmVtYWlsLnBvbGljeWAuICBJZiB0aGUgYWRkZWQgcGFydAotICAgICAgaGFzIG5vIDptYWlsaGVhZGVyOmBDb250ZW50LURpc3Bvc2l0aW9uYCBoZWFkZXIsIGFkZCBvbmUgd2l0aCB0aGUgdmFsdWUKLSAgICAgIGBgYXR0YWNobWVudGBgLiAgVGhpcyBtZXRob2QgY2FuIGJlIHVzZWQgYm90aCBmb3IgZXhwbGljaXQgYXR0YWNobWVudHMKLSAgICAgICg6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudGAgYW5kIGBgaW5saW5lYGAgYXR0YWNobWVudHMKLSAgICAgICg6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbjogaW5saW5lYCksIGJ5IHBhc3NpbmcgYXBwcm9wcmlhdGUKLSAgICAgIG9wdGlvbnMgdG8gdGhlIGBgY29udGVudF9tYW5hZ2VyYGAuCi0KLQotICAgLi4gbWV0aG9kOjogY2xlYXIoKQotCi0gICAgICBSZW1vdmUgdGhlIHBheWxvYWQgYW5kIGFsbCBvZiB0aGUgaGVhZGVycy4KLQotCi0gICAuLiBtZXRob2Q6OiBjbGVhcl9jb250ZW50KCkKLQotICAgICAgUmVtb3ZlIHRoZSBwYXlsb2FkIGFuZCBhbGwgb2YgdGhlIDpleGM6YENvbnRlbnQtYCBoZWFkZXJzLCBsZWF2aW5nCi0gICAgICBhbGwgb3RoZXIgaGVhZGVycyBpbnRhY3QgYW5kIGluIHRoZWlyIG9yaWdpbmFsIG9yZGVyLgotCi0KLS4uIGNsYXNzOjogTUlNRVBhcnQocG9saWN5PWRlZmF1bHQpCi0KLSAgICBUaGlzIGNsYXNzIHJlcHJlc2VudHMgYSBzdWJwYXJ0IG9mIGEgTUlNRSBtZXNzYWdlLiAgSXQgaXMgaWRlbnRpY2FsIHRvCi0gICAgOmNsYXNzOmBFbWFpbE1lc3NhZ2VgLCBleGNlcHQgdGhhdCBubyA6bWFpbGhlYWRlcjpgTUlNRS1WZXJzaW9uYCBoZWFkZXJzIGFyZQotICAgIGFkZGVkIHdoZW4gOm1ldGg6YH5FbWFpbE1lc3NhZ2Uuc2V0X2NvbnRlbnRgIGlzIGNhbGxlZCwgc2luY2Ugc3ViLXBhcnRzIGRvCi0gICAgbm90IG5lZWQgdGhlaXIgb3duIDptYWlsaGVhZGVyOmBNSU1FLVZlcnNpb25gIGhlYWRlcnMuCi0KKy4uIHZlcnNpb25hZGRlZDo6IDMuNiBbMV1fCiAKLS4uIGN1cnJlbnRtb2R1bGU6OiBlbWFpbC5jb250ZW50bWFuYWdlcgogCiAuLiBjbGFzczo6IENvbnRlbnRNYW5hZ2VyKCkKIApAQCAtMzYyLDcgKzEyMyw3IEBACiAgICAgICAgICAgICAgICBzZXRfY29udGVudChtc2csIDwnYnl0ZXMnPiwgbWFpbnR5cGUsIHN1YnR5cGUsIGN0ZT0iYmFzZTY0IiwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcG9zaXRpb249Tm9uZSwgZmlsZW5hbWU9Tm9uZSwgY2lkPU5vbmUsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcz1Ob25lLCBoZWFkZXJzPU5vbmUpCi0gICAgICAgICAgICAgICBzZXRfY29udGVudChtc2csIDwnTWVzc2FnZSc+LCBjdGU9Tm9uZSwgXAorICAgICAgICAgICAgICAgc2V0X2NvbnRlbnQobXNnLCA8J0VtYWlsTWVzc2FnZSc+LCBjdGU9Tm9uZSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcG9zaXRpb249Tm9uZSwgZmlsZW5hbWU9Tm9uZSwgY2lkPU5vbmUsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcz1Ob25lLCBoZWFkZXJzPU5vbmUpCiAgICAgICAgICAgICAgICBzZXRfY29udGVudChtc2csIDwnbGlzdCc+LCBzdWJ0eXBlPSdtaXhlZCcsIFwKQEAgLTM3OCwxNCArMTM5LDE0IEBACiAgICAgICAgICAgICAgc3VidHlwZSB0byAqc3VidHlwZSogaWYgaXQgaXMgc3BlY2lmaWVkLCBvciBgYHBsYWluYGAgaWYgaXQgaXMgbm90LgogICAgICAgICAgICAqIEZvciBgYGJ5dGVzYGAsIHVzZSB0aGUgc3BlY2lmaWVkICptYWludHlwZSogYW5kICpzdWJ0eXBlKiwgb3IKICAgICAgICAgICAgICByYWlzZSBhIDpleGM6YFR5cGVFcnJvcmAgaWYgdGhleSBhcmUgbm90IHNwZWNpZmllZC4KLSAgICAgICAgICAgKiBGb3IgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBvYmplY3RzLCBzZXQgdGhlIG1haW50eXBlIHRvCi0gICAgICAgICAgICAgYGBtZXNzYWdlYGAsIGFuZCBzZXQgdGhlIHN1YnR5cGUgdG8gKnN1YnR5cGUqIGlmIGl0IGlzIHNwZWNpZmllZAotICAgICAgICAgICAgIG9yIGBgcmZjODIyYGAgaWYgaXQgaXMgbm90LiAgSWYgKnN1YnR5cGUqIGlzIGBgcGFydGlhbGBgLCByYWlzZSBhbgotICAgICAgICAgICAgIGVycm9yIChgYGJ5dGVzYGAgb2JqZWN0cyBtdXN0IGJlIHVzZWQgdG8gY29uc3RydWN0Ci0gICAgICAgICAgICAgYGBtZXNzYWdlL3BhcnRpYWxgYCBwYXJ0cykuCisgICAgICAgICAgICogRm9yIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCBvYmplY3RzLCBzZXQgdGhlIG1haW50eXBlCisgICAgICAgICAgICAgdG8gYGBtZXNzYWdlYGAsIGFuZCBzZXQgdGhlIHN1YnR5cGUgdG8gKnN1YnR5cGUqIGlmIGl0IGlzCisgICAgICAgICAgICAgc3BlY2lmaWVkIG9yIGBgcmZjODIyYGAgaWYgaXQgaXMgbm90LiAgSWYgKnN1YnR5cGUqIGlzCisgICAgICAgICAgICAgYGBwYXJ0aWFsYGAsIHJhaXNlIGFuIGVycm9yIChgYGJ5dGVzYGAgb2JqZWN0cyBtdXN0IGJlIHVzZWQgdG8KKyAgICAgICAgICAgICBjb25zdHJ1Y3QgYGBtZXNzYWdlL3BhcnRpYWxgYCBwYXJ0cykuCiAgICAgICAgICAgICogRm9yICo8J2xpc3QnPiosIHdoaWNoIHNob3VsZCBiZSBhIGxpc3Qgb2YKLSAgICAgICAgICAgICA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIG9iamVjdHMsIHNldCB0aGUgYGBtYWludHlwZWBgIHRvCi0gICAgICAgICAgICAgYGBtdWx0aXBhcnRgYCwgYW5kIHRoZSBgYHN1YnR5cGVgYCB0byAqc3VidHlwZSogaWYgaXQgaXMKKyAgICAgICAgICAgICA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgb2JqZWN0cywgc2V0IHRoZSBgYG1haW50eXBlYGAKKyAgICAgICAgICAgICB0byBgYG11bHRpcGFydGBgLCBhbmQgdGhlIGBgc3VidHlwZWBgIHRvICpzdWJ0eXBlKiBpZiBpdCBpcwogICAgICAgICAgICAgIHNwZWNpZmllZCwgYW5kIGBgbWl4ZWRgYCBpZiBpdCBpcyBub3QuICBJZiB0aGUgbWVzc2FnZSBwYXJ0cyBpbgogICAgICAgICAgICAgIHRoZSAqPCdsaXN0Jz4qIGhhdmUgOm1haWxoZWFkZXI6YE1JTUUtVmVyc2lvbmAgaGVhZGVycywgcmVtb3ZlCiAgICAgICAgICAgICAgdGhlbS4KQEAgLTM5NywzMiArMTU4LDM1IEBACiAKICAgICAgICBJZiAqY3RlKiBpcyBzZXQsIGVuY29kZSB0aGUgcGF5bG9hZCB1c2luZyB0aGUgc3BlY2lmaWVkIGNvbnRlbnQgdHJhbnNmZXIKICAgICAgICBlbmNvZGluZywgYW5kIHNldCB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5kY29kaW5nYCBoZWFkZXIgdG8KLSAgICAgICB0aGF0IHZhbHVlLiAgRm9yIGBgc3RyYGAgb2JqZWN0cywgaWYgaXQgaXMgbm90IHNldCB1c2UgaGV1cmlzdGljcyB0bwotICAgICAgIGRldGVybWluZSB0aGUgbW9zdCBjb21wYWN0IGVuY29kaW5nLiAgUG9zc2libGUgdmFsdWVzIGZvciAqY3RlKiBhcmUKLSAgICAgICBgYHF1b3RlZC1wcmludGFibGVgYCwgYGBiYXNlNjRgYCwgYGA3Yml0YGAsIGBgOGJpdGBgLCBhbmQgYGBiaW5hcnlgYC4KLSAgICAgICBJZiB0aGUgaW5wdXQgY2Fubm90IGJlIGVuY29kZWQgaW4gdGhlIHNwZWNpZmllZCBlbmNvZGluZyAoZWc6IGBgN2JpdGBgKSwKLSAgICAgICByYWlzZSBhIDpleGM6YFZhbHVlRXJyb3JgLiAgRm9yIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAsIHBlcgotICAgICAgIDpyZmM6YDIwNDZgLCByYWlzZSBhbiBlcnJvciBpZiBhICpjdGUqIG9mIGBgcXVvdGVkLXByaW50YWJsZWBgIG9yCi0gICAgICAgYGBiYXNlNjRgYCBpcyByZXF1ZXN0ZWQgZm9yICpzdWJ0eXBlKiBgYHJmYzgyMmBgLCBhbmQgZm9yIGFueSAqY3RlKgotICAgICAgIG90aGVyIHRoYW4gYGA3Yml0YGAgZm9yICpzdWJ0eXBlKiBgYGV4dGVybmFsLWJvZHlgYC4gIEZvcgotICAgICAgIGBgbWVzc2FnZS9yZmM4MjJgYCwgdXNlIGBgOGJpdGBgIGlmICpjdGUqIGlzIG5vdCBzcGVjaWZpZWQuICBGb3IgYWxsCi0gICAgICAgb3RoZXIgdmFsdWVzIG9mICpzdWJ0eXBlKiwgdXNlIGBgN2JpdGBgLgorICAgICAgIHRoYXQgdmFsdWUuICBQb3NzaWJsZSB2YWx1ZXMgZm9yICpjdGUqIGFyZSBgYHF1b3RlZC1wcmludGFibGVgYCwKKyAgICAgICBgYGJhc2U2NGBgLCBgYDdiaXRgYCwgYGA4Yml0YGAsIGFuZCBgYGJpbmFyeWBgLiAgSWYgdGhlIGlucHV0IGNhbm5vdCBiZQorICAgICAgIGVuY29kZWQgaW4gdGhlIHNwZWNpZmllZCBlbmNvZGluZyAoZm9yIGV4YW1wbGUsIHNwZWNpZnlpbmcgYSAqY3RlKiBvZgorICAgICAgIGBgN2JpdGBgIGZvciBhbiBpbnB1dCB0aGF0IGNvbnRhaW5zIG5vbi1BU0NJSSB2YWx1ZXMpLCByYWlzZSBhCisgICAgICAgOmV4YzpgVmFsdWVFcnJvcmAuCisKKyAgICAgICAgICAgICogRm9yIGBgc3RyYGAgb2JqZWN0cywgaWYgKmN0ZSogaXMgbm90IHNldCB1c2UgaGV1cmlzdGljcyB0bworICAgICAgICAgICAgICBkZXRlcm1pbmUgdGhlIG1vc3QgY29tcGFjdCBlbmNvZGluZy4KKyAgICAgICAgICAgICogRm9yIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCwgcGVyIDpyZmM6YDIwNDZgLCByYWlzZQorICAgICAgICAgICAgICBhbiBlcnJvciBpZiBhICpjdGUqIG9mIGBgcXVvdGVkLXByaW50YWJsZWBgIG9yIGBgYmFzZTY0YGAgaXMKKyAgICAgICAgICAgICAgcmVxdWVzdGVkIGZvciAqc3VidHlwZSogYGByZmM4MjJgYCwgYW5kIGZvciBhbnkgKmN0ZSogb3RoZXIgdGhhbgorICAgICAgICAgICAgICBgYDdiaXRgYCBmb3IgKnN1YnR5cGUqIGBgZXh0ZXJuYWwtYm9keWBgLiAgRm9yCisgICAgICAgICAgICAgIGBgbWVzc2FnZS9yZmM4MjJgYCwgdXNlIGBgOGJpdGBgIGlmICpjdGUqIGlzIG5vdCBzcGVjaWZpZWQuICBGb3IKKyAgICAgICAgICAgICAgYWxsIG90aGVyIHZhbHVlcyBvZiAqc3VidHlwZSosIHVzZSBgYDdiaXRgYC4KIAogICAgICAgIC4uIG5vdGU6OiBBICpjdGUqIG9mIGBgYmluYXJ5YGAgZG9lcyBub3QgYWN0dWFsbHkgd29yayBjb3JyZWN0bHkgeWV0LgotICAgICAgICAgIFRoZSBgYE1lc3NhZ2VgYCBvYmplY3QgYXMgbW9kaWZpZWQgYnkgYGBzZXRfY29udGVudGBgIGlzIGNvcnJlY3QsIGJ1dAotICAgICAgICAgIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5CeXRlc0dlbmVyYXRvcmAgZG9lcyBub3Qgc2VyaWFsaXplIGl0Ci0gICAgICAgICAgY29ycmVjdGx5LgorICAgICAgICAgIFRoZSBgYEVtYWlsTWVzc2FnZWBgIG9iamVjdCBhcyBtb2RpZmllZCBieSBgYHNldF9jb250ZW50YGAgaXMKKyAgICAgICAgICBjb3JyZWN0LCBidXQgOmNsYXNzOmB+ZW1haWwuZ2VuZXJhdG9yLkJ5dGVzR2VuZXJhdG9yYCBkb2VzIG5vdAorICAgICAgICAgIHNlcmlhbGl6ZSBpdCBjb3JyZWN0bHkuCiAKICAgICAgICBJZiAqZGlzcG9zaXRpb24qIGlzIHNldCwgdXNlIGl0IGFzIHRoZSB2YWx1ZSBvZiB0aGUKICAgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbmAgaGVhZGVyLiAgSWYgbm90IHNwZWNpZmllZCwgYW5kCiAgICAgICAgKmZpbGVuYW1lKiBpcyBzcGVjaWZpZWQsIGFkZCB0aGUgaGVhZGVyIHdpdGggdGhlIHZhbHVlIGBgYXR0YWNobWVudGBgLgotICAgICAgIElmIGl0IGlzIG5vdCBzcGVjaWZpZWQgYW5kICpmaWxlbmFtZSogaXMgYWxzbyBub3Qgc3BlY2lmaWVkLCBkbyBub3QgYWRkCi0gICAgICAgdGhlIGhlYWRlci4gIFRoZSBvbmx5IHZhbGlkIHZhbHVlcyBmb3IgKmRpc3Bvc2l0aW9uKiBhcmUgYGBhdHRhY2htZW50YGAKLSAgICAgICBhbmQgYGBpbmxpbmVgYC4KKyAgICAgICBJZiAqZGlzcG9zaXRpb24qIGlzIG5vdCBzcGVjaWZpZWQgYW5kICpmaWxlbmFtZSogaXMgYWxzbyBub3Qgc3BlY2lmaWVkLAorICAgICAgIGRvIG5vdCBhZGQgdGhlIGhlYWRlci4gIFRoZSBvbmx5IHZhbGlkIHZhbHVlcyBmb3IgKmRpc3Bvc2l0aW9uKiBhcmUKKyAgICAgICBgYGF0dGFjaG1lbnRgYCBhbmQgYGBpbmxpbmVgYC4KIAogICAgICAgIElmICpmaWxlbmFtZSogaXMgc3BlY2lmaWVkLCB1c2UgaXQgYXMgdGhlIHZhbHVlIG9mIHRoZSBgYGZpbGVuYW1lYGAKLSAgICAgICBwYXJhbWV0ZXIgb2YgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LURpc3Bvc2l0aW9uYCBoZWFkZXIuICBUaGVyZSBpcyBubwotICAgICAgIGRlZmF1bHQuCisgICAgICAgcGFyYW1ldGVyIG9mIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbmAgaGVhZGVyLgogCiAgICAgICAgSWYgKmNpZCogaXMgc3BlY2lmaWVkLCBhZGQgYSA6bWFpbGhlYWRlcjpgQ29udGVudC1JRGAgaGVhZGVyIHdpdGgKICAgICAgICAqY2lkKiBhcyBpdHMgdmFsdWUuCkBAIC00MzUsMyArMTk5LDkgQEAKICAgICAgICBgYGhlYWRlcm5hbWU6IGhlYWRlcnZhbHVlYGAgb3IgYSBsaXN0IG9mIGBgaGVhZGVyYGAgb2JqZWN0cwogICAgICAgIChkaXN0aW5ndWlzaGVkIGZyb20gc3RyaW5ncyBieSBoYXZpbmcgYSBgYG5hbWVgYCBhdHRyaWJ1dGUpLCBhZGQgdGhlCiAgICAgICAgaGVhZGVycyB0byAqbXNnKi4KKworCisuLiBydWJyaWM6OiBGb290bm90ZXMKKworLi4gWzFdIE9yaW5nYWxseSBhZGRlZCBpbiAzLjQgYXMgYSA6dGVybTpgcHJvdmlzaW9uYWwgbW9kdWxlIDxwcm92aXNpb25hbAorICAgICAgIHBhY2thZ2U+YApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwuZW5jb2RlcnMucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwuZW5jb2RlcnMucnN0CmluZGV4IDlkN2Y5YmYuLmUyNGFjN2IgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLmVuY29kZXJzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5lbmNvZGVycy5yc3QKQEAgLTgsNiArOCwxMiBAQAogCiAtLS0tLS0tLS0tLS0tLQogCitUaGlzIG1vZHVsZSBpcyBwYXJ0IG9mIHRoZSBsZWdhY3kgKGBgQ29tcGF0MzJgYCkgZW1haWwgQVBJLiAgSW4gdGhlCituZXcgQVBJIHRoZSBmdW5jdGlvbmFsaXR5IGlzIHByb3ZpZGVkIGJ5IHRoZSAqY3RlKiBwYXJhbWV0ZXIgb2YKK3RoZSA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLnNldF9jb250ZW50YCBtZXRob2QuCisKK1RoZSByZW1haW5pbmcgdGV4dCBpbiB0aGlzIHNlY3Rpb24gaXMgdGhlIG9yaWdpbmFsIGRvY3VtZW50YXRpb24gb2YgdGhlIG1vZHVsZS4KKwogV2hlbiBjcmVhdGluZyA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIG9iamVjdHMgZnJvbSBzY3JhdGNoLCB5b3Ugb2Z0ZW4KIG5lZWQgdG8gZW5jb2RlIHRoZSBwYXlsb2FkcyBmb3IgdHJhbnNwb3J0IHRocm91Z2ggY29tcGxpYW50IG1haWwgc2VydmVycy4gVGhpcwogaXMgZXNwZWNpYWxseSB0cnVlIGZvciA6bWltZXR5cGU6YGltYWdlL1wqYCBhbmQgOm1pbWV0eXBlOmB0ZXh0L1wqYCB0eXBlIG1lc3NhZ2VzCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbWFpbC5lcnJvcnMucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwuZXJyb3JzLnJzdAppbmRleCA4NDcwNzgzLi4yZDBkMTkyIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9lbWFpbC5lcnJvcnMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2VtYWlsLmVycm9ycy5yc3QKQEAgLTIwLDMzICsyMCwyNyBAQAogCiAuLiBleGNlcHRpb246OiBNZXNzYWdlUGFyc2VFcnJvcigpCiAKLSAgIFRoaXMgaXMgdGhlIGJhc2UgY2xhc3MgZm9yIGV4Y2VwdGlvbnMgcmFpc2VkIGJ5IHRoZSA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuUGFyc2VyYAotICAgY2xhc3MuICBJdCBpcyBkZXJpdmVkIGZyb20gOmV4YzpgTWVzc2FnZUVycm9yYC4KKyAgIFRoaXMgaXMgdGhlIGJhc2UgY2xhc3MgZm9yIGV4Y2VwdGlvbnMgcmFpc2VkIGJ5IHRoZQorICAgOmNsYXNzOmB+ZW1haWwucGFyc2VyLlBhcnNlcmAgY2xhc3MuICBJdCBpcyBkZXJpdmVkIGZyb20KKyAgIDpleGM6YE1lc3NhZ2VFcnJvcmAuICBUaGlzIGNsYXNzIGlzIGFsc28gdXNlZCBpbnRlcm5hbGx5IGJ5IHRoZSBwYXJzZXIgdXNlZAorICAgYnkgOm1vZDpgfmVtYWlsLmhlYWRlcnJlZ2lzdHJ5YC4KIAogCiAuLiBleGNlcHRpb246OiBIZWFkZXJQYXJzZUVycm9yKCkKIAotICAgUmFpc2VkIHVuZGVyIHNvbWUgZXJyb3IgY29uZGl0aW9ucyB3aGVuIHBhcnNpbmcgdGhlIDpyZmM6YDI4MjJgIGhlYWRlcnMgb2YgYQotICAgbWVzc2FnZSwgdGhpcyBjbGFzcyBpcyBkZXJpdmVkIGZyb20gOmV4YzpgTWVzc2FnZVBhcnNlRXJyb3JgLiBJdCBjYW4gYmUgcmFpc2VkCi0gICBmcm9tIHRoZSA6bWV0aDpgUGFyc2VyLnBhcnNlIDxlbWFpbC5wYXJzZXIuUGFyc2VyLnBhcnNlPmAgb3IKLSAgIDptZXRoOmBQYXJzZXIucGFyc2VzdHIgPGVtYWlsLnBhcnNlci5QYXJzZXIucGFyc2VzdHI+YCBtZXRob2RzLgotCi0gICBTaXR1YXRpb25zIHdoZXJlIGl0IGNhbiBiZSByYWlzZWQgaW5jbHVkZSBmaW5kaW5nIGFuIGVudmVsb3BlIGhlYWRlciBhZnRlciB0aGUKLSAgIGZpcnN0IDpyZmM6YDI4MjJgIGhlYWRlciBvZiB0aGUgbWVzc2FnZSwgZmluZGluZyBhIGNvbnRpbnVhdGlvbiBsaW5lIGJlZm9yZSB0aGUKLSAgIGZpcnN0IDpyZmM6YDI4MjJgIGhlYWRlciBpcyBmb3VuZCwgb3IgZmluZGluZyBhIGxpbmUgaW4gdGhlIGhlYWRlcnMgd2hpY2ggaXMKLSAgIG5laXRoZXIgYSBoZWFkZXIgb3IgYSBjb250aW51YXRpb24gbGluZS4KKyAgIFJhaXNlZCB1bmRlciBzb21lIGVycm9yIGNvbmRpdGlvbnMgd2hlbiBwYXJzaW5nIHRoZSA6cmZjOmA1MzIyYCBoZWFkZXJzIG9mIGEKKyAgIG1lc3NhZ2UsIHRoaXMgY2xhc3MgaXMgZGVyaXZlZCBmcm9tIDpleGM6YE1lc3NhZ2VQYXJzZUVycm9yYC4gIFRoZQorICAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5zZXRfYm91bmRhcnlgIG1ldGhvZCB3aWxsIHJhaXNlIHRoaXMKKyAgIGVycm9yIGlmIHRoZSBjb250ZW50IHR5cGUgaXMgdW5rbm93biB3aGVuIHRoZSBtZXRob2QgaXMgY2FsbGVkLgorICAgOmNsYXNzOmB+ZW1haWwuaGVhZGVyLkhlYWRlcmAgbWF5IHJhaXNlIHRoaXMgZXJyb3IgZm9yIGNlcnRhaW4gYmFzZTY0CisgICBkZWNvZGluZyBlcnJvcnMsIGFuZCB3aGVuIGFuIGF0dGVtcHQgaXMgbWFkZSB0byBjcmVhdGUgYSBoZWFkZXIgdGhhdCBhcHBlYXJzCisgICB0byBjb250YWluIGFuIGVtYmVkZGVkIGhlYWRlciAodGhhdCBpcywgdGhlcmUgaXMgd2hhdCBpcyBzdXBwb3NlZCB0byBiZSBhCisgICBjb250aW51YXRpb24gbGluZSB0aGF0IGhhcyBubyBsZWFkaW5nIHdoaXRlc3BhY2UgYW5kIGxvb2tzIGxpa2UgYSBoZWFkZXIpLgogCiAKIC4uIGV4Y2VwdGlvbjo6IEJvdW5kYXJ5RXJyb3IoKQogCi0gICBSYWlzZWQgdW5kZXIgc29tZSBlcnJvciBjb25kaXRpb25zIHdoZW4gcGFyc2luZyB0aGUgOnJmYzpgMjgyMmAgaGVhZGVycyBvZiBhCi0gICBtZXNzYWdlLCB0aGlzIGNsYXNzIGlzIGRlcml2ZWQgZnJvbSA6ZXhjOmBNZXNzYWdlUGFyc2VFcnJvcmAuIEl0IGNhbiBiZSByYWlzZWQKLSAgIGZyb20gdGhlIDptZXRoOmBQYXJzZXIucGFyc2UgPGVtYWlsLnBhcnNlci5QYXJzZXIucGFyc2U+YCBvcgotICAgOm1ldGg6YFBhcnNlci5wYXJzZXN0ciA8ZW1haWwucGFyc2VyLlBhcnNlci5wYXJzZXN0cj5gIG1ldGhvZHMuCi0KLSAgIFNpdHVhdGlvbnMgd2hlcmUgaXQgY2FuIGJlIHJhaXNlZCBpbmNsdWRlIG5vdCBiZWluZyBhYmxlIHRvIGZpbmQgdGhlIHN0YXJ0aW5nIG9yCi0gICB0ZXJtaW5hdGluZyBib3VuZGFyeSBpbiBhIDptaW1ldHlwZTpgbXVsdGlwYXJ0L1wqYCBtZXNzYWdlIHdoZW4gc3RyaWN0IHBhcnNpbmcKLSAgIGlzIHVzZWQuCisgICBEZXByZWNhdGVkIGFuZCBubyBsb25nZXIgdXNlZC4KIAogCiAuLiBleGNlcHRpb246OiBNdWx0aXBhcnRDb252ZXJzaW9uRXJyb3IoKQpAQCAtNjQsMTQgKzU4LDE0IEBACiAgICA6Y2xhc3M6YH5lbWFpbC5taW1lLm5vbm11bHRpcGFydC5NSU1FTm9uTXVsdGlwYXJ0YCAoZS5nLgogICAgOmNsYXNzOmB+ZW1haWwubWltZS5pbWFnZS5NSU1FSW1hZ2VgKS4KIAotSGVyZSdzIHRoZSBsaXN0IG9mIHRoZSBkZWZlY3RzIHRoYXQgdGhlIDpjbGFzczpgfmVtYWlsLnBhcnNlci5GZWVkUGFyc2VyYAorCitIZXJlIGlzIHRoZSBsaXN0IG9mIHRoZSBkZWZlY3RzIHRoYXQgdGhlIDpjbGFzczpgfmVtYWlsLnBhcnNlci5GZWVkUGFyc2VyYAogY2FuIGZpbmQgd2hpbGUgcGFyc2luZyBtZXNzYWdlcy4gIE5vdGUgdGhhdCB0aGUgZGVmZWN0cyBhcmUgYWRkZWQgdG8gdGhlIG1lc3NhZ2UKIHdoZXJlIHRoZSBwcm9ibGVtIHdhcyBmb3VuZCwgc28gZm9yIGV4YW1wbGUsIGlmIGEgbWVzc2FnZSBuZXN0ZWQgaW5zaWRlIGEKIDptaW1ldHlwZTpgbXVsdGlwYXJ0L2FsdGVybmF0aXZlYCBoYWQgYSBtYWxmb3JtZWQgaGVhZGVyLCB0aGF0IG5lc3RlZCBtZXNzYWdlCiBvYmplY3Qgd291bGQgaGF2ZSBhIGRlZmVjdCwgYnV0IHRoZSBjb250YWluaW5nIG1lc3NhZ2VzIHdvdWxkIG5vdC4KIAotQWxsIGRlZmVjdCBjbGFzc2VzIGFyZSBzdWJjbGFzc2VkIGZyb20gOmNsYXNzOmBlbWFpbC5lcnJvcnMuTWVzc2FnZURlZmVjdGAsIGJ1dAotdGhpcyBjbGFzcyBpcyAqbm90KiBhbiBleGNlcHRpb24hCitBbGwgZGVmZWN0IGNsYXNzZXMgYXJlIHN1YmNsYXNzZWQgZnJvbSA6Y2xhc3M6YGVtYWlsLmVycm9ycy5NZXNzYWdlRGVmZWN0YC4KIAogKiA6Y2xhc3M6YE5vQm91bmRhcnlJbk11bHRpcGFydERlZmVjdGAgLS0gQSBtZXNzYWdlIGNsYWltZWQgdG8gYmUgYSBtdWx0aXBhcnQsCiAgIGJ1dCBoYWQgbm8gOm1pbWV0eXBlOmBib3VuZGFyeWAgcGFyYW1ldGVyLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwuZXhhbXBsZXMucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwuZXhhbXBsZXMucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0ZTlhZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5leGFtcGxlcy5yc3QKQEAgLTAsMCArMSw2NyBAQAorLi4gX2VtYWlsLWV4YW1wbGVzOgorCis6bW9kOmBlbWFpbGA6IEV4YW1wbGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0hlcmUgYXJlIGEgZmV3IGV4YW1wbGVzIG9mIGhvdyB0byB1c2UgdGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlIHRvIHJlYWQsIHdyaXRlLAorYW5kIHNlbmQgc2ltcGxlIGVtYWlsIG1lc3NhZ2VzLCBhcyB3ZWxsIGFzIG1vcmUgY29tcGxleCBNSU1FIG1lc3NhZ2VzLgorCitGaXJzdCwgbGV0J3Mgc2VlIGhvdyB0byBjcmVhdGUgYW5kIHNlbmQgYSBzaW1wbGUgdGV4dCBtZXNzYWdlIChib3RoIHRoZQordGV4dCBjb250ZW50IGFuZCB0aGUgYWRkcmVzc2VzIG1heSBjb250YWluIHVuaWNvZGUgY2hhcmFjdGVycyk6CisKKy4uIGxpdGVyYWxpbmNsdWRlOjogLi4vaW5jbHVkZXMvZW1haWwtc2ltcGxlLnB5CisKKworUGFyc2luZyBSRkM4MjIgaGVhZGVycyBjYW4gZWFzaWx5IGJlIGRvbmUgYnkgdGhlIHVzaW5nIHRoZSBjbGFzc2VzCitmcm9tIHRoZSA6bW9kOmB+ZW1haWwucGFyc2VyYCBtb2R1bGU6CisKKy4uIGxpdGVyYWxpbmNsdWRlOjogLi4vaW5jbHVkZXMvZW1haWwtaGVhZGVycy5weQorCisKK0hlcmUncyBhbiBleGFtcGxlIG9mIGhvdyB0byBzZW5kIGEgTUlNRSBtZXNzYWdlIGNvbnRhaW5pbmcgYSBidW5jaCBvZiBmYW1pbHkKK3BpY3R1cmVzIHRoYXQgbWF5IGJlIHJlc2lkaW5nIGluIGEgZGlyZWN0b3J5OgorCisuLiBsaXRlcmFsaW5jbHVkZTo6IC4uL2luY2x1ZGVzL2VtYWlsLW1pbWUucHkKKworCitIZXJlJ3MgYW4gZXhhbXBsZSBvZiBob3cgdG8gc2VuZCB0aGUgZW50aXJlIGNvbnRlbnRzIG9mIGEgZGlyZWN0b3J5IGFzIGFuIGVtYWlsCittZXNzYWdlOiBbMV1fCisKKy4uIGxpdGVyYWxpbmNsdWRlOjogLi4vaW5jbHVkZXMvZW1haWwtZGlyLnB5CisKKworSGVyZSdzIGFuIGV4YW1wbGUgb2YgaG93IHRvIHVucGFjayBhIE1JTUUgbWVzc2FnZSBsaWtlIHRoZSBvbmUKK2Fib3ZlLCBpbnRvIGEgZGlyZWN0b3J5IG9mIGZpbGVzOgorCisuLiBsaXRlcmFsaW5jbHVkZTo6IC4uL2luY2x1ZGVzL2VtYWlsLXVucGFjay5weQorCisKK0hlcmUncyBhbiBleGFtcGxlIG9mIGhvdyB0byBjcmVhdGUgYW4gSFRNTCBtZXNzYWdlIHdpdGggYW4gYWx0ZXJuYXRpdmUgcGxhaW4KK3RleHQgdmVyc2lvbi4gIFRvIG1ha2UgdGhpbmdzIGEgYml0IG1vcmUgaW50ZXJlc3RpbmcsIHdlIGluY2x1ZGUgYSByZWxhdGVkCitpbWFnZSBpbiB0aGUgaHRtbCBwYXJ0LCBhbmQgd2Ugc2F2ZSBhIGNvcHkgb2Ygd2hhdCB3ZSBhcmUgZ29pbmcgdG8gc2VuZCB0bworZGlzaywgYXMgd2VsbCBhcyBzZW5kaW5nIGl0LgorCisuLiBsaXRlcmFsaW5jbHVkZTo6IC4uL2luY2x1ZGVzL2VtYWlsLWFsdGVybmF0aXZlLnB5CisKKworSWYgd2Ugd2VyZSBzZW50IHRoZSBtZXNzYWdlIGZyb20gdGhlIGxhc3QgZXhhbXBsZSwgaGVyZSBpcyBvbmUgd2F5IHdlIGNvdWxkCitwcm9jZXNzIGl0OgorCisuLiBsaXRlcmFsaW5jbHVkZTo6IC4uL2luY2x1ZGVzL2VtYWlsLXJlYWQtYWx0ZXJuYXRpdmUucHkKKworVXAgdG8gdGhlIHByb21wdCwgdGhlIG91dHB1dCBmcm9tIHRoZSBhYm92ZSBpczoKKworLi4gY29kZS1ibG9jazo6IG5vbmUKKworICAgIFRvOiBQZW5lbG9wZSBQdXNzeWNhdCA8cGVuZWxvcGVAZXhhbXBsZS5jb20+LCBGYWJyZXR0ZSBQdXNzeWNhdCA8ZmFicmV0dGVAZXhhbXBsZS5jb20+CisgICAgRnJvbTogUGVww6kgTGUgUGV3IDxwZXBlQGV4YW1wbGUuY29tPgorICAgIFN1YmplY3Q6IEF5b25zIGFzcGVyZ2VzIHBvdXIgbGUgZMOpamV1bmVyCisKKyAgICBTYWx1dCEKKworICAgIENlbGEgcmVzc2VtYmxlIMOgIHVuIGV4Y2VsbGVudCByZWNpcGllWzFdIGTDqWpldW5lci4KKworCisuLiBydWJyaWM6OiBGb290bm90ZXMKKworLi4gWzFdIFRoYW5rcyB0byBNYXR0aGV3IERpeG9uIENvd2xlcyBmb3IgdGhlIG9yaWdpbmFsIGluc3BpcmF0aW9uIGFuZCBleGFtcGxlcy4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLmdlbmVyYXRvci5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5nZW5lcmF0b3IucnN0CmluZGV4IGQ1OTZlZDguLmFiMGZiYzIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLmdlbmVyYXRvci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwuZ2VuZXJhdG9yLnJzdApAQCAtOCwyMTAgKzgsMjQ0IEBACiAKIC0tLS0tLS0tLS0tLS0tCiAKLU9uZSBvZiB0aGUgbW9zdCBjb21tb24gdGFza3MgaXMgdG8gZ2VuZXJhdGUgdGhlIGZsYXQgdGV4dCBvZiB0aGUgZW1haWwgbWVzc2FnZQotcmVwcmVzZW50ZWQgYnkgYSBtZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmUuICBZb3Ugd2lsbCBuZWVkIHRvIGRvIHRoaXMgaWYgeW91IHdhbnQKLXRvIHNlbmQgeW91ciBtZXNzYWdlIHZpYSB0aGUgOm1vZDpgc210cGxpYmAgbW9kdWxlIG9yIHRoZSA6bW9kOmBubnRwbGliYCBtb2R1bGUsCi1vciBwcmludCB0aGUgbWVzc2FnZSBvbiB0aGUgY29uc29sZS4gIFRha2luZyBhIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSBhbmQKLXByb2R1Y2luZyBhIGZsYXQgdGV4dCBkb2N1bWVudCBpcyB0aGUgam9iIG9mIHRoZSA6Y2xhc3M6YEdlbmVyYXRvcmAgY2xhc3MuCitPbmUgb2YgdGhlIG1vc3QgY29tbW9uIHRhc2tzIGlzIHRvIGdlbmVyYXRlIHRoZSBmbGF0IChzZXJpYWxpemVkKSB2ZXJzaW9uIG9mCit0aGUgZW1haWwgbWVzc2FnZSByZXByZXNlbnRlZCBieSBhIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZS4gIFlvdSB3aWxsIG5lZWQgdG8KK2RvIHRoaXMgaWYgeW91IHdhbnQgdG8gc2VuZCB5b3VyIG1lc3NhZ2UgdmlhIDptZXRoOmBzbXRwbGliLlNNVFAuc2VuZG1haWxgIG9yCit0aGUgOm1vZDpgbm50cGxpYmAgbW9kdWxlLCBvciBwcmludCB0aGUgbWVzc2FnZSBvbiB0aGUgY29uc29sZS4gIFRha2luZyBhCittZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmUgYW5kIHByb2R1Y2luZyBhIHNlcmlhbGl6ZWQgcmVwcmVzZW50YXRpb24gaXMgdGhlIGpvYgorb2YgdGhlIGdlbmVyYXRvciBjbGFzc2VzLgogCi1BZ2FpbiwgYXMgd2l0aCB0aGUgOm1vZDpgZW1haWwucGFyc2VyYCBtb2R1bGUsIHlvdSBhcmVuJ3QgbGltaXRlZCB0byB0aGUKLWZ1bmN0aW9uYWxpdHkgb2YgdGhlIGJ1bmRsZWQgZ2VuZXJhdG9yOyB5b3UgY291bGQgd3JpdGUgb25lIGZyb20gc2NyYXRjaAoteW91cnNlbGYuICBIb3dldmVyIHRoZSBidW5kbGVkIGdlbmVyYXRvciBrbm93cyBob3cgdG8gZ2VuZXJhdGUgbW9zdCBlbWFpbCBpbiBhCi1zdGFuZGFyZHMtY29tcGxpYW50IHdheSwgc2hvdWxkIGhhbmRsZSBNSU1FIGFuZCBub24tTUlNRSBlbWFpbCBtZXNzYWdlcyBqdXN0Ci1maW5lLCBhbmQgaXMgZGVzaWduZWQgc28gdGhhdCB0aGUgdHJhbnNmb3JtYXRpb24gZnJvbSBmbGF0IHRleHQsIHRvIGEgbWVzc2FnZQotc3RydWN0dXJlIHZpYSB0aGUgOmNsYXNzOmB+ZW1haWwucGFyc2VyLlBhcnNlcmAgY2xhc3MsIGFuZCBiYWNrIHRvIGZsYXQgdGV4dCwKLWlzIGlkZW1wb3RlbnQgKHRoZSBpbnB1dCBpcyBpZGVudGljYWwgdG8gdGhlIG91dHB1dCkgWyNdXy4gIE9uIHRoZSBvdGhlciBoYW5kLAotdXNpbmcgdGhlIEdlbmVyYXRvciBvbiBhIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgY29uc3RydWN0ZWQgYnkgcHJvZ3JhbQotbWF5IHJlc3VsdCBpbiBjaGFuZ2VzIHRvIHRoZSA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIG9iamVjdCBhcyBkZWZhdWx0cwotYXJlIGZpbGxlZCBpbi4KK0FzIHdpdGggdGhlIDptb2Q6YGVtYWlsLnBhcnNlcmAgbW9kdWxlLCB5b3UgYXJlbid0IGxpbWl0ZWQgdG8gdGhlIGZ1bmN0aW9uYWxpdHkKK29mIHRoZSBidW5kbGVkIGdlbmVyYXRvcjsgeW91IGNvdWxkIHdyaXRlIG9uZSBmcm9tIHNjcmF0Y2ggeW91cnNlbGYuICBIb3dldmVyCit0aGUgYnVuZGxlZCBnZW5lcmF0b3Iga25vd3MgaG93IHRvIGdlbmVyYXRlIG1vc3QgZW1haWwgaW4gYSBzdGFuZGFyZHMtY29tcGxpYW50Cit3YXksIHNob3VsZCBoYW5kbGUgTUlNRSBhbmQgbm9uLU1JTUUgZW1haWwgbWVzc2FnZXMganVzdCBmaW5lLCBhbmQgaXMgZGVzaWduZWQKK3NvIHRoYXQgdGhlIGJ5dGVzLW9yaWVudGVkIHBhcnNpbmcgYW5kIGdlbmVyYXRpb24gb3BlcmF0aW9ucyBhcmUgaW52ZXJzZXMsCithc3N1bWluZyB0aGUgc2FtZSBub24tdHJhbnNmb3JtaW5nIDptb2Q6YH5lbWFpbC5wb2xpY3lgIGlzIHVzZWQgZm9yIGJvdGguICBUaGF0CitpcywgcGFyc2luZyB0aGUgc2VyaWFsaXplZCBieXRlIHN0cmVhbSB2aWEgdGhlCis6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuQnl0ZXNQYXJzZXJgIGNsYXNzIGFuZCB0aGVuIHJlZ2VuZXJhdGluZyB0aGUgc2VyaWFsaXplZAorYnl0ZSBzdHJlYW0gdXNpbmcgOmNsYXNzOmBCeXRlc0dlbmVyYXRvcmAgc2hvdWxkIHByb2R1Y2Ugb3V0cHV0IGlkZW50aWNhbCB0bwordGhlIGlucHV0IFsjXV8uICAoT24gdGhlIG90aGVyIGhhbmQsIHVzaW5nIHRoZSBnZW5lcmF0b3Igb24gYW4KKzpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCBjb25zdHJ1Y3RlZCBieSBwcm9ncmFtIG1heSByZXN1bHQgaW4KK2NoYW5nZXMgdG8gdGhlIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCBvYmplY3QgYXMgZGVmYXVsdHMgYXJlCitmaWxsZWQgaW4uKQogCi06Y2xhc3M6YGJ5dGVzYCBvdXRwdXQgY2FuIGJlIGdlbmVyYXRlZCB1c2luZyB0aGUgOmNsYXNzOmBCeXRlc0dlbmVyYXRvcmAgY2xhc3MuCi1JZiB0aGUgbWVzc2FnZSBvYmplY3Qgc3RydWN0dXJlIGNvbnRhaW5zIG5vbi1BU0NJSSBieXRlcywgdGhpcyBnZW5lcmF0b3IncwotOm1ldGg6YH5CeXRlc0dlbmVyYXRvci5mbGF0dGVuYCBtZXRob2Qgd2lsbCBlbWl0IHRoZSBvcmlnaW5hbCBieXRlcy4gIFBhcnNpbmcgYQotYmluYXJ5IG1lc3NhZ2UgYW5kIHRoZW4gZmxhdHRlbmluZyBpdCB3aXRoIDpjbGFzczpgQnl0ZXNHZW5lcmF0b3JgIHNob3VsZCBiZQotaWRlbXBvdGVudCBmb3Igc3RhbmRhcmRzIGNvbXBsaWFudCBtZXNzYWdlcy4KLQotSGVyZSBhcmUgdGhlIHB1YmxpYyBtZXRob2RzIG9mIHRoZSA6Y2xhc3M6YEdlbmVyYXRvcmAgY2xhc3MsIGltcG9ydGVkIGZyb20gdGhlCi06bW9kOmBlbWFpbC5nZW5lcmF0b3JgIG1vZHVsZToKK1RoZSA6Y2xhc3M6YEdlbmVyYXRvcmAgY2xhc3MgY2FuIGJlIHVzZWQgdG8gZmxhdHRlbiBhIG1lc3NhZ2UgaW50byBhIHRleHQgKGFzCitvcHBvc2VkIHRvIGJpbmFyeSkgc2VyaWFsaXplZCByZXByZXNlbnRhdGlvbiwgYnV0IHNpbmNlIFVuaWNvZGUgY2Fubm90CityZXByZXNlbnQgYmluYXJ5IGRhdGEgZGlyZWN0bHksIHRoZSBtZXNzYWdlIGlzIG9mIG5lY2Vzc2l0eSB0cmFuc2Zvcm1lZCBpbnRvCitzb21ldGhpbmcgdGhhdCBjb250YWlucyBvbmx5IEFTQ0lJIGNoYXJhY3RlcnMsIHVzaW5nIHRoZSBzdGFuZGFyZCBlbWFpbCBSRkMKK0NvbnRlbnQgVHJhbnNmZXIgRW5jb2RpbmcgdGVjaG5pcXVlcyBmb3IgZW5jb2RpbmcgZW1haWwgbWVzc2FnZXMgZm9yIHRyYW5zcG9ydAorb3ZlciBjaGFubmVscyB0aGF0IGFyZSBub3QgIjggYml0IGNsZWFuIi4KIAogCi0uLiBjbGFzczo6IEdlbmVyYXRvcihvdXRmcCwgbWFuZ2xlX2Zyb21fPVRydWUsIG1heGhlYWRlcmxlbj03OCwgKiwgcG9saWN5PU5vbmUpCi0KLSAgIFRoZSBjb25zdHJ1Y3RvciBmb3IgdGhlIDpjbGFzczpgR2VuZXJhdG9yYCBjbGFzcyB0YWtlcyBhIDp0ZXJtOmBmaWxlLWxpa2Ugb2JqZWN0YAotICAgY2FsbGVkICpvdXRmcCogZm9yIGFuIGFyZ3VtZW50LiAgKm91dGZwKiBtdXN0IHN1cHBvcnQgdGhlIDptZXRoOmB3cml0ZWAgbWV0aG9kCi0gICBhbmQgYmUgdXNhYmxlIGFzIHRoZSBvdXRwdXQgZmlsZSBmb3IgdGhlIDpmdW5jOmBwcmludGAgZnVuY3Rpb24uCi0KLSAgIE9wdGlvbmFsICptYW5nbGVfZnJvbV8qIGlzIGEgZmxhZyB0aGF0LCB3aGVuIGBgVHJ1ZWBgLCBwdXRzIGEgYGA+YGAgY2hhcmFjdGVyIGluCi0gICBmcm9udCBvZiBhbnkgbGluZSBpbiB0aGUgYm9keSB0aGF0IHN0YXJ0cyBleGFjdGx5IGFzIGBgRnJvbWBgLCBpLmUuIGBgRnJvbWBgCi0gICBmb2xsb3dlZCBieSBhIHNwYWNlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGxpbmUuICBUaGlzIGlzIHRoZSBvbmx5IGd1YXJhbnRlZWQKLSAgIHBvcnRhYmxlIHdheSB0byBhdm9pZCBoYXZpbmcgc3VjaCBsaW5lcyBiZSBtaXN0YWtlbiBmb3IgYSBVbml4IG1haWxib3ggZm9ybWF0Ci0gICBlbnZlbG9wZSBoZWFkZXIgc2VwYXJhdG9yIChzZWUgYFdIWSBUSEUgQ09OVEVOVC1MRU5HVEggRk9STUFUIElTIEJBRAotICAgPGh0dHBzOi8vd3d3Lmp3ei5vcmcvZG9jL2NvbnRlbnQtbGVuZ3RoLmh0bWw+YF8gZm9yIGRldGFpbHMpLiAgKm1hbmdsZV9mcm9tXyoKLSAgIGRlZmF1bHRzIHRvIGBgVHJ1ZWBgLCBidXQgeW91IG1pZ2h0IHdhbnQgdG8gc2V0IHRoaXMgdG8gYGBGYWxzZWBgIGlmIHlvdSBhcmUgbm90Ci0gICB3cml0aW5nIFVuaXggbWFpbGJveCBmb3JtYXQgZmlsZXMuCi0KLSAgIE9wdGlvbmFsICptYXhoZWFkZXJsZW4qIHNwZWNpZmllcyB0aGUgbG9uZ2VzdCBsZW5ndGggZm9yIGEgbm9uLWNvbnRpbnVlZCBoZWFkZXIuCi0gICBXaGVuIGEgaGVhZGVyIGxpbmUgaXMgbG9uZ2VyIHRoYW4gKm1heGhlYWRlcmxlbiogKGluIGNoYXJhY3RlcnMsIHdpdGggdGFicwotICAgZXhwYW5kZWQgdG8gOCBzcGFjZXMpLCB0aGUgaGVhZGVyIHdpbGwgYmUgc3BsaXQgYXMgZGVmaW5lZCBpbiB0aGUKLSAgIDpjbGFzczpgfmVtYWlsLmhlYWRlci5IZWFkZXJgIGNsYXNzLiAgU2V0IHRvIHplcm8gdG8gZGlzYWJsZSBoZWFkZXIgd3JhcHBpbmcuCi0gICBUaGUgZGVmYXVsdCBpcyA3OCwgYXMgcmVjb21tZW5kZWQgKGJ1dCBub3QgcmVxdWlyZWQpIGJ5IDpyZmM6YDI4MjJgLgotCi0gICBUaGUgKnBvbGljeSoga2V5d29yZCBzcGVjaWZpZXMgYSA6bW9kOmB+ZW1haWwucG9saWN5YCBvYmplY3QgdGhhdCBjb250cm9scyBhCi0gICBudW1iZXIgb2YgYXNwZWN0cyBvZiB0aGUgZ2VuZXJhdG9yJ3Mgb3BlcmF0aW9uLiAgSWYgbm8gKnBvbGljeSogaXMgc3BlY2lmaWVkLAotICAgdGhlbiB0aGUgKnBvbGljeSogYXR0YWNoZWQgdG8gdGhlIG1lc3NhZ2Ugb2JqZWN0IHBhc3NlZCB0byA6YXR0cjpgZmxhdHRlbmAKLSAgIGlzIHVzZWQuCi0KLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgotCi0gICBUaGUgb3RoZXIgcHVibGljIDpjbGFzczpgR2VuZXJhdG9yYCBtZXRob2RzIGFyZToKLQotCi0gICAuLiBtZXRob2Q6OiBmbGF0dGVuKG1zZywgdW5peGZyb209RmFsc2UsIGxpbmVzZXA9Tm9uZSkKLQotICAgICAgUHJpbnQgdGhlIHRleHR1YWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSByb290ZWQgYXQKLSAgICAgICptc2cqIHRvIHRoZSBvdXRwdXQgZmlsZSBzcGVjaWZpZWQgd2hlbiB0aGUgOmNsYXNzOmBHZW5lcmF0b3JgIGluc3RhbmNlCi0gICAgICB3YXMgY3JlYXRlZC4gIFN1YnBhcnRzIGFyZSB2aXNpdGVkIGRlcHRoLWZpcnN0IGFuZCB0aGUgcmVzdWx0aW5nIHRleHQgd2lsbAotICAgICAgYmUgcHJvcGVybHkgTUlNRSBlbmNvZGVkLgotCi0gICAgICBPcHRpb25hbCAqdW5peGZyb20qIGlzIGEgZmxhZyB0aGF0IGZvcmNlcyB0aGUgcHJpbnRpbmcgb2YgdGhlIGVudmVsb3BlCi0gICAgICBoZWFkZXIgZGVsaW1pdGVyIGJlZm9yZSB0aGUgZmlyc3QgOnJmYzpgMjgyMmAgaGVhZGVyIG9mIHRoZSByb290IG1lc3NhZ2UKLSAgICAgIG9iamVjdC4gIElmIHRoZSByb290IG9iamVjdCBoYXMgbm8gZW52ZWxvcGUgaGVhZGVyLCBhIHN0YW5kYXJkIG9uZSBpcwotICAgICAgY3JhZnRlZC4gIEJ5IGRlZmF1bHQsIHRoaXMgaXMgc2V0IHRvIGBgRmFsc2VgYCB0byBpbmhpYml0IHRoZSBwcmludGluZyBvZgotICAgICAgdGhlIGVudmVsb3BlIGRlbGltaXRlci4KLQotICAgICAgTm90ZSB0aGF0IGZvciBzdWJwYXJ0cywgbm8gZW52ZWxvcGUgaGVhZGVyIGlzIGV2ZXIgcHJpbnRlZC4KLQotICAgICAgT3B0aW9uYWwgKmxpbmVzZXAqIHNwZWNpZmllcyB0aGUgbGluZSBzZXBhcmF0b3IgY2hhcmFjdGVyIHVzZWQgdG8KLSAgICAgIHRlcm1pbmF0ZSBsaW5lcyBpbiB0aGUgb3V0cHV0LiAgSWYgc3BlY2lmaWVkIGl0IG92ZXJyaWRlcyB0aGUgdmFsdWUKLSAgICAgIHNwZWNpZmllZCBieSB0aGUgKm1zZypcJ3Mgb3IgYGBHZW5lcmF0b3JgYFwncyBgYHBvbGljeWBgLgotCi0gICAgICBCZWNhdXNlIHN0cmluZ3MgY2Fubm90IHJlcHJlc2VudCBub24tQVNDSUkgYnl0ZXMsIGlmIHRoZSBwb2xpY3kgdGhhdAotICAgICAgYXBwbGllcyB3aGVuIGBgZmxhdHRlbmBgIGlzIHJ1biBoYXMgOmF0dHI6YH5lbWFpbC5wb2xpY3kuUG9saWN5LmN0ZV90eXBlYAotICAgICAgc2V0IHRvIGBgOGJpdGBgLCBgYEdlbmVyYXRvcmBgIHdpbGwgb3BlcmF0ZSBhcyBpZiBpdCB3ZXJlIHNldCB0bwotICAgICAgYGA3Yml0YGAuICBUaGlzIG1lYW5zIHRoYXQgbWVzc2FnZXMgcGFyc2VkIHdpdGggYSBCeXRlcyBwYXJzZXIgdGhhdCBoYXZlCi0gICAgICBhIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYCBvZiBgYDhiaXRgYCB3aWxsIGJlIGNvbnZlcnRlZAotICAgICAgdG8gYSB1c2UgYSBgYDdiaXRgYCBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nLiAgTm9uLUFTQ0lJIGJ5dGVzIGluIHRoZQotICAgICAgaGVhZGVycyB3aWxsIGJlIDpyZmM6YDIwNDdgIGVuY29kZWQgd2l0aCBhIGNoYXJzZXQgb2YgYGB1bmtub3duLThiaXRgYC4KLQotICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKLSAgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHJlLWVuY29kaW5nIGBgOGJpdGBgIG1lc3NhZ2UgYm9kaWVzLCBhbmQgdGhlCi0gICAgICAgICAqbGluZXNlcCogYXJndW1lbnQuCi0KLSAgIC4uIG1ldGhvZDo6IGNsb25lKGZwKQotCi0gICAgICBSZXR1cm4gYW4gaW5kZXBlbmRlbnQgY2xvbmUgb2YgdGhpcyA6Y2xhc3M6YEdlbmVyYXRvcmAgaW5zdGFuY2Ugd2l0aCB0aGUKLSAgICAgIGV4YWN0IHNhbWUgb3B0aW9ucy4KLQotICAgLi4gbWV0aG9kOjogd3JpdGUocykKLQotICAgICAgV3JpdGUgdGhlIHN0cmluZyAqcyogdG8gdGhlIHVuZGVybHlpbmcgZmlsZSBvYmplY3QsIGkuZS4gKm91dGZwKiBwYXNzZWQgdG8KLSAgICAgIDpjbGFzczpgR2VuZXJhdG9yYCdzIGNvbnN0cnVjdG9yLiAgVGhpcyBwcm92aWRlcyBqdXN0IGVub3VnaCBmaWxlLWxpa2UgQVBJCi0gICAgICBmb3IgOmNsYXNzOmBHZW5lcmF0b3JgIGluc3RhbmNlcyB0byBiZSB1c2VkIGluIHRoZSA6ZnVuYzpgcHJpbnRgIGZ1bmN0aW9uLgotCi1BcyBhIGNvbnZlbmllbmNlLCBzZWUgdGhlIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgbWV0aG9kcwotOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuYXNfc3RyaW5nYCBhbmQgYGBzdHIoYU1lc3NhZ2UpYGAsIGEuay5hLgotOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuX19zdHJfX2AsIHdoaWNoIHNpbXBsaWZ5IHRoZSBnZW5lcmF0aW9uIG9mIGEKLWZvcm1hdHRlZCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBtZXNzYWdlIG9iamVjdC4gIEZvciBtb3JlIGRldGFpbCwgc2VlCi06bW9kOmBlbWFpbC5tZXNzYWdlYC4KLQotLi4gY2xhc3M6OiBCeXRlc0dlbmVyYXRvcihvdXRmcCwgbWFuZ2xlX2Zyb21fPVRydWUsIG1heGhlYWRlcmxlbj03OCwgKiwgXAorLi4gY2xhc3M6OiBCeXRlc0dlbmVyYXRvcihvdXRmcCwgbWFuZ2xlX2Zyb21fPU5vbmUsIG1heGhlYWRlcmxlbj1Ob25lLCAqLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeT1Ob25lKQogCi0gICBUaGUgY29uc3RydWN0b3IgZm9yIHRoZSA6Y2xhc3M6YEJ5dGVzR2VuZXJhdG9yYCBjbGFzcyB0YWtlcyBhIGJpbmFyeQotICAgOnRlcm06YGZpbGUtbGlrZSBvYmplY3RgIGNhbGxlZCAqb3V0ZnAqIGZvciBhbiBhcmd1bWVudC4gICpvdXRmcCogbXVzdAotICAgc3VwcG9ydCBhIDptZXRoOmB3cml0ZWAgbWV0aG9kIHRoYXQgYWNjZXB0cyBiaW5hcnkgZGF0YS4KKyAgIFJldHVybiBhIDpjbGFzczpgQnl0ZXNHZW5lcmF0b3JgIG9iamVjdCB0aGF0IHdpbGwgd3JpdGUgYW55IG1lc3NhZ2UgcHJvdmlkZWQKKyAgIHRvIHRoZSA6bWV0aDpgZmxhdHRlbmAgbWV0aG9kLCBvciBhbnkgc3Vycm9nYXRlZXNjYXBlIGVuY29kZWQgdGV4dCBwcm92aWRlZAorICAgdG8gdGhlIDptZXRoOmB3cml0ZWAgbWV0aG9kLCB0byB0aGUgOnRlcm06YGZpbGUtbGlrZSBvYmplY3RgICpvdXRmcCouCisgICAqb3V0ZnAqIG11c3Qgc3VwcG9ydCBhIGBgd3JpdGVgYCBtZXRob2QgdGhhdCBhY2NlcHRzIGJpbmFyeSBkYXRhLgogCi0gICBPcHRpb25hbCAqbWFuZ2xlX2Zyb21fKiBpcyBhIGZsYWcgdGhhdCwgd2hlbiBgYFRydWVgYCwgcHV0cyBhIGBgPmBgCi0gICBjaGFyYWN0ZXIgaW4gZnJvbnQgb2YgYW55IGxpbmUgaW4gdGhlIGJvZHkgdGhhdCBzdGFydHMgZXhhY3RseSBhcyBgYEZyb21gYCwKLSAgIGkuZS4gYGBGcm9tYGAgZm9sbG93ZWQgYnkgYSBzcGFjZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsaW5lLiAgVGhpcyBpcyB0aGUKLSAgIG9ubHkgZ3VhcmFudGVlZCBwb3J0YWJsZSB3YXkgdG8gYXZvaWQgaGF2aW5nIHN1Y2ggbGluZXMgYmUgbWlzdGFrZW4gZm9yIGEKLSAgIFVuaXggbWFpbGJveCBmb3JtYXQgZW52ZWxvcGUgaGVhZGVyIHNlcGFyYXRvciAoc2VlIGBXSFkgVEhFIENPTlRFTlQtTEVOR1RICi0gICBGT1JNQVQgSVMgQkFEIDxodHRwczovL3d3dy5qd3oub3JnL2RvYy9jb250ZW50LWxlbmd0aC5odG1sPmBfIGZvciBkZXRhaWxzKS4KLSAgICptYW5nbGVfZnJvbV8qIGRlZmF1bHRzIHRvIGBgVHJ1ZWBgLCBidXQgeW91IG1pZ2h0IHdhbnQgdG8gc2V0IHRoaXMgdG8KLSAgIGBgRmFsc2VgYCBpZiB5b3UgYXJlIG5vdCB3cml0aW5nIFVuaXggbWFpbGJveCBmb3JtYXQgZmlsZXMuCisgICBJZiBvcHRpb25hbCAqbWFuZ2xlX2Zyb21fKiBpcyBgYFRydWVgYCwgcHV0IGEgYGA+YGAgY2hhcmFjdGVyIGluIGZyb250IG9mCisgICBhbnkgbGluZSBpbiB0aGUgYm9keSB0aGF0IHN0YXJ0cyB3aXRoIHRoZSBleGFjdCBzdHJpbmcgYGAiRnJvbSAiYGAsIHRoYXQgaXMKKyAgIGBgRnJvbWBgIGZvbGxvd2VkIGJ5IGEgc3BhY2UgYXQgdGhlIGJlZ2lubmluZyBvZiBhIGxpbmUuICAqbWFuZ2xlX2Zyb21fKgorICAgZGVmYXVsdHMgdG8gdGhlIHZhbHVlIG9mIHRoZSA6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kubWFuZ2xlX2Zyb21fYAorICAgc2V0dGluZyBvZiB0aGUgKnBvbGljeSogKHdoaWNoIGlzIGBgVHJ1ZWBgIGZvciB0aGUKKyAgIDpkYXRhOmB+ZW1haWwucG9saWN5LmNvbXBhdDMyYCBwb2xpY3kgYW5kIGBgRmFsc2VgYCBmb3IgYWxsIG90aGVycykuCisgICAqbWFuZ2xlX2Zyb21fKiBpcyBpbnRlbmRlZCBmb3IgdXNlIHdoZW4gbWVzc2FnZXMgYXJlIHN0b3JlZCBpbiB1bml4IG1ib3gKKyAgIGZvcm1hdCAoc2VlIDptb2Q6YG1haWxib3hgIGFuZCBgV0hZIFRIRSBDT05URU5ULUxFTkdUSCBGT1JNQVQgSVMgQkFECisgICA8aHR0cDovL3d3dy5qd3oub3JnL2RvYy9jb250ZW50LWxlbmd0aC5odG1sPmBfKS4KIAotICAgT3B0aW9uYWwgKm1heGhlYWRlcmxlbiogc3BlY2lmaWVzIHRoZSBsb25nZXN0IGxlbmd0aCBmb3IgYSBub24tY29udGludWVkCi0gICBoZWFkZXIuICBXaGVuIGEgaGVhZGVyIGxpbmUgaXMgbG9uZ2VyIHRoYW4gKm1heGhlYWRlcmxlbiogKGluIGNoYXJhY3RlcnMsCi0gICB3aXRoIHRhYnMgZXhwYW5kZWQgdG8gOCBzcGFjZXMpLCB0aGUgaGVhZGVyIHdpbGwgYmUgc3BsaXQgYXMgZGVmaW5lZCBpbiB0aGUKLSAgIDpjbGFzczpgfmVtYWlsLmhlYWRlci5IZWFkZXJgIGNsYXNzLiAgU2V0IHRvIHplcm8gdG8gZGlzYWJsZSBoZWFkZXIKLSAgIHdyYXBwaW5nLiAgVGhlIGRlZmF1bHQgaXMgNzgsIGFzIHJlY29tbWVuZGVkIChidXQgbm90IHJlcXVpcmVkKSBieQotICAgOnJmYzpgMjgyMmAuCisgICBJZiAqbWF4aGVhZGVybGVuKiBpcyBub3QgYGBOb25lYGAsIHJlZm9sZCBhbnkgaGVhZGVyIGxpbmVzIHRoYXQgYXJlIGxvbmdlcgorICAgdGhhbiAqbWF4aGVhZGVybGVuKiwgb3IgaWYgYGAwYGAsIGRvIG5vdCByZXdyYXAgYW55IGhlYWRlcnMuICBJZgorICAgKm1hbmhlYWRlcmxlbiogaXMgYGBOb25lYGAgKHRoZSBkZWZhdWx0KSwgd3JhcCBoZWFkZXJzIGFuZCBvdGhlciBtZXNzYWdlCisgICBsaW5lcyBhY2NvcmRpbmcgdG8gdGhlICpwb2xpY3kqIHNldHRpbmdzLgogCisgICBJZiAqcG9saWN5KiBpcyBzcGVjaWZpZWQsIHVzZSB0aGF0IHBvbGljeSB0byBjb250cm9sIG1lc3NhZ2UgZ2VuZXJhdGlvbi4gIElmCisgICAqcG9saWN5KiBpcyBgYE5vbmVgYCAodGhlIGRlZmF1bHQpLCB1c2UgdGhlIHBvbGljeSBhc3NvY2lhdGVkIHdpdGggdGhlCisgICA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIG9yIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYAorICAgb2JqZWN0IHBhc3NlZCB0byBgYGZsYXR0ZW5gYCB0byBjb250cm9sIHRoZSBtZXNzYWdlIGdlbmVyYXRpb24uICBTZWUKKyAgIDptb2Q6YGVtYWlsLnBvbGljeWAgZm9yIGRldGFpbHMgb24gd2hhdCAqcG9saWN5KiBjb250cm9scy4KIAotICAgVGhlICpwb2xpY3kqIGtleXdvcmQgc3BlY2lmaWVzIGEgOm1vZDpgfmVtYWlsLnBvbGljeWAgb2JqZWN0IHRoYXQgY29udHJvbHMgYQotICAgbnVtYmVyIG9mIGFzcGVjdHMgb2YgdGhlIGdlbmVyYXRvcidzIG9wZXJhdGlvbi4gIElmIG5vICpwb2xpY3kqIGlzIHNwZWNpZmllZCwKLSAgIHRoZW4gdGhlICpwb2xpY3kqIGF0dGFjaGVkIHRvIHRoZSBtZXNzYWdlIG9iamVjdCBwYXNzZWQgdG8gOmF0dHI6YGZsYXR0ZW5gCi0gICBpcyB1c2VkLgorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgogCi0gICBUaGUgb3RoZXIgcHVibGljIDpjbGFzczpgQnl0ZXNHZW5lcmF0b3JgIG1ldGhvZHMgYXJlOgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYgVGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgdGhlICptYW5nbGVfZnJvbV8qCisgICAgICBhbmQgKm1heGhlYWRlcmxlbiogcGFyYW1ldGVycyBpcyB0byBmb2xsb3cgdGhlIHBvbGljeS4KIAogCiAgICAuLiBtZXRob2Q6OiBmbGF0dGVuKG1zZywgdW5peGZyb209RmFsc2UsIGxpbmVzZXA9Tm9uZSkKIAogICAgICAgUHJpbnQgdGhlIHRleHR1YWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSByb290ZWQKICAgICAgIGF0ICptc2cqIHRvIHRoZSBvdXRwdXQgZmlsZSBzcGVjaWZpZWQgd2hlbiB0aGUgOmNsYXNzOmBCeXRlc0dlbmVyYXRvcmAKLSAgICAgIGluc3RhbmNlIHdhcyBjcmVhdGVkLiAgU3VicGFydHMgYXJlIHZpc2l0ZWQgZGVwdGgtZmlyc3QgYW5kIHRoZSByZXN1bHRpbmcKLSAgICAgIHRleHQgd2lsbCBiZSBwcm9wZXJseSBNSU1FIGVuY29kZWQuICBJZiB0aGUgOm1vZDpgfmVtYWlsLnBvbGljeWAgb3B0aW9uCi0gICAgICA6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kuY3RlX3R5cGVgIGlzIGBgOGJpdGBgICh0aGUgZGVmYXVsdCksCi0gICAgICB0aGVuIGFueSBieXRlcyB3aXRoIHRoZSBoaWdoIGJpdCBzZXQgaW4gdGhlIG9yaWdpbmFsIHBhcnNlZCBtZXNzYWdlIHRoYXQKLSAgICAgIGhhdmUgbm90IGJlZW4gbW9kaWZpZWQgd2lsbCBiZSBjb3BpZWQgZmFpdGhmdWxseSB0byB0aGUgb3V0cHV0LiAgSWYKLSAgICAgIGBgY3RlX3R5cGVgYCBpcyBgYDdiaXRgYCwgdGhlIGJ5dGVzIHdpbGwgYmUgY29udmVydGVkIGFzIG5lZWRlZAotICAgICAgdXNpbmcgYW4gQVNDSUktY29tcGF0aWJsZSBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nLiAgSW4gcGFydGljdWxhciwKLSAgICAgIFJGQy1pbnZhbGlkIG5vbi1BU0NJSSBieXRlcyBpbiBoZWFkZXJzIHdpbGwgYmUgZW5jb2RlZCB1c2luZyB0aGUgTUlNRQotICAgICAgYGB1bmtub3duLThiaXRgYCBjaGFyYWN0ZXIgc2V0LCB0aHVzIHJlbmRlcmluZyB0aGVtIFJGQy1jb21wbGlhbnQuCisgICAgICBpbnN0YW5jZSB3YXMgY3JlYXRlZC4KIAotICAgICAgLi4gWFhYOiBUaGVyZSBzaG91bGQgYmUgYSBjb21wbGVtZW50YXJ5IG9wdGlvbiB0aGF0IGp1c3QgZG9lcyB0aGUgUkZDCi0gICAgICAgICBjb21wbGlhbmNlIHRyYW5zZm9ybWF0aW9uIGJ1dCBsZWF2ZXMgQ1RFIDhiaXQgcGFydHMgYWxvbmUuCisgICAgICBJZiB0aGUgOm1vZDpgfmVtYWlsLnBvbGljeWAgb3B0aW9uIDphdHRyOmB+ZW1haWwucG9saWN5LlBvbGljeS5jdGVfdHlwZWAKKyAgICAgIGlzIGBgOGJpdGBgICh0aGUgZGVmYXVsdCksIGNvcHkgYW55IGhlYWRlcnMgaW4gdGhlIG9yaWdpbmFsIHBhcnNlZAorICAgICAgbWVzc2FnZSB0aGF0IGhhdmUgbm90IGJlZW4gbW9kaWZpZWQgdG8gdGhlIG91dHB1dCB3aXRoIGFueSBieXRlcyB3aXRoIHRoZQorICAgICAgaGlnaCBiaXQgc2V0IHJlcHJvZHVjZWQgYXMgaW4gdGhlIG9yaWdpbmFsLCBhbmQgcHJlc2VydmUgdGhlIG5vbi1BU0NJSQorICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgIG9mIGFueSBib2R5IHBhcnRzIHRoYXQgaGF2ZSB0aGVtLgorICAgICAgSWYgYGBjdGVfdHlwZWBgIGlzIGBgN2JpdGBgLCBjb252ZXJ0IHRoZSBieXRlcyB3aXRoIHRoZSBoaWdoIGJpdCBzZXQgYXMKKyAgICAgIG5lZWRlZCB1c2luZyBhbiBBU0NJSS1jb21wYXRpYmxlIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYC4KKyAgICAgIFRoYXQgaXMsIHRyYW5zZm9ybSBwYXJ0cyB3aXRoIG5vbi1BU0NJSQorICAgICAgOm1haWxoZWFkZXI6YENvdG5lbnQtVHJhbnNmZXItRW5jb2RpbmdgCisgICAgICAoOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXRgKSB0byBhbiBBU0NJSSBjb21wYXRpYmlsZQorICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgLCBhbmQgZW5jb2RlIFJGQy1pbnZhbGlkIG5vbi1BU0NJSQorICAgICAgYnl0ZXMgaW4gaGVhZGVycyB1c2luZyB0aGUgTUlNRSBgYHVua25vd24tOGJpdGBgIGNoYXJhY3RlciBzZXQsIHRodXMKKyAgICAgIHJlbmRlcmluZyB0aGVtIFJGQy1jb21wbGlhbnQuCiAKLSAgICAgIE1lc3NhZ2VzIHBhcnNlZCB3aXRoIGEgQnl0ZXMgcGFyc2VyIHRoYXQgaGF2ZSBhCi0gICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2Agb2YgOGJpdCB3aWxsIGJlIHJlY29uc3RydWN0ZWQKLSAgICAgIGFzIDhiaXQgaWYgdGhleSBoYXZlIG5vdCBiZWVuIG1vZGlmaWVkLgorICAgICAgLi4gWFhYOiBUaGVyZSBzaG91bGQgYmUgYW4gb3B0aW9uIHRoYXQganVzdCBkb2VzIHRoZSBSRkMKKyAgICAgICAgIGNvbXBsaWFuY2UgdHJhbnNmb3JtYXRpb24gb24gaGVhZGVycyBidXQgbGVhdmVzIENURSA4Yml0IHBhcnRzIGFsb25lLgogCi0gICAgICBPcHRpb25hbCAqdW5peGZyb20qIGlzIGEgZmxhZyB0aGF0IGZvcmNlcyB0aGUgcHJpbnRpbmcgb2YgdGhlIGVudmVsb3BlCi0gICAgICBoZWFkZXIgZGVsaW1pdGVyIGJlZm9yZSB0aGUgZmlyc3QgOnJmYzpgMjgyMmAgaGVhZGVyIG9mIHRoZSByb290IG1lc3NhZ2UKLSAgICAgIG9iamVjdC4gIElmIHRoZSByb290IG9iamVjdCBoYXMgbm8gZW52ZWxvcGUgaGVhZGVyLCBhIHN0YW5kYXJkIG9uZSBpcwotICAgICAgY3JhZnRlZC4gIEJ5IGRlZmF1bHQsIHRoaXMgaXMgc2V0IHRvIGBgRmFsc2VgYCB0byBpbmhpYml0IHRoZSBwcmludGluZyBvZgotICAgICAgdGhlIGVudmVsb3BlIGRlbGltaXRlci4KLQorICAgICAgSWYgKnVuaXhmcm9tKiBpcyBgYFRydWVgYCwgcHJpbnQgdGhlIGVudmVsb3BlIGhlYWRlciBkZWxpbWl0ZXIgdXNlZCBieQorICAgICAgdGhlIFVuaXggbWFpbGJveCBmb3JtYXQgKHNlZSA6bW9kOmBtYWlsYm94YCkgYmVmb3JlIHRoZSBmaXJzdCBvZiB0aGUKKyAgICAgIDpyZmM6YDUzMjJgIGhlYWRlcnMgb2YgdGhlIHJvb3QgbWVzc2FnZSBvYmplY3QuICBJZiB0aGUgcm9vdCBvYmplY3QgaGFzCisgICAgICBubyBlbnZlbG9wZSBoZWFkZXIsIGNyYWZ0IGEgc3RhbmRhcmQgb25lLiAgVGhlIGRlZmF1bHQgaXMgYGBGYWxzZWBgLgogICAgICAgTm90ZSB0aGF0IGZvciBzdWJwYXJ0cywgbm8gZW52ZWxvcGUgaGVhZGVyIGlzIGV2ZXIgcHJpbnRlZC4KIAotICAgICAgT3B0aW9uYWwgKmxpbmVzZXAqIHNwZWNpZmllcyB0aGUgbGluZSBzZXBhcmF0b3IgY2hhcmFjdGVyIHVzZWQgdG8KLSAgICAgIHRlcm1pbmF0ZSBsaW5lcyBpbiB0aGUgb3V0cHV0LiAgSWYgc3BlY2lmaWVkIGl0IG92ZXJyaWRlcyB0aGUgdmFsdWUKLSAgICAgIHNwZWNpZmllZCBieSB0aGUgYGBHZW5lcmF0b3JgYFwgb3IgKm1zZypcICdzIGBgcG9saWN5YGAuCisgICAgICBJZiAqbGluZXNlcCogaXMgbm90IGBgTm9uZWBgLCB1c2UgaXQgYXMgdGhlIHNlcGFyYXRvciBjaGFyYWN0ZXIgYmV0d2VlbgorICAgICAgYWxsIHRoZSBsaW5lcyBvZiB0aGUgZmxhdHRlbmVkIG1lc3NhZ2UuICBJZiAqbGluZXNlcCogaXMgYGBOb25lYGAgKHRoZQorICAgICAgZGVmYXVsdCksIHVzZSB0aGUgdmFsdWUgc3BlY2lmaWVkIGluIHRoZSAqcG9saWN5Ki4KKworICAgICAgLi4gWFhYOiBmbGF0dGVuIHNob3VsZCB0YWtlIGEgKnBvbGljeSoga2V5d29yZC4KKwogCiAgICAuLiBtZXRob2Q6OiBjbG9uZShmcCkKIAogICAgICAgUmV0dXJuIGFuIGluZGVwZW5kZW50IGNsb25lIG9mIHRoaXMgOmNsYXNzOmBCeXRlc0dlbmVyYXRvcmAgaW5zdGFuY2Ugd2l0aAotICAgICAgdGhlIGV4YWN0IHNhbWUgb3B0aW9ucy4KKyAgICAgIHRoZSBleGFjdCBzYW1lIG9wdGlvbiBzZXR0aW5ncywgYW5kICpmcCogYXMgdGhlIG5ldyAqb3V0ZnAqLgorCiAKICAgIC4uIG1ldGhvZDo6IHdyaXRlKHMpCiAKLSAgICAgIFdyaXRlIHRoZSBzdHJpbmcgKnMqIHRvIHRoZSB1bmRlcmx5aW5nIGZpbGUgb2JqZWN0LiAgKnMqIGlzIGVuY29kZWQgdXNpbmcKLSAgICAgIHRoZSBgYEFTQ0lJYGAgY29kZWMgYW5kIHdyaXR0ZW4gdG8gdGhlICp3cml0ZSogbWV0aG9kIG9mIHRoZSAgKm91dGZwKgotICAgICAgKm91dGZwKiBwYXNzZWQgdG8gdGhlIDpjbGFzczpgQnl0ZXNHZW5lcmF0b3JgJ3MgY29uc3RydWN0b3IuICBUaGlzCi0gICAgICBwcm92aWRlcyBqdXN0IGVub3VnaCBmaWxlLWxpa2UgQVBJIGZvciA6Y2xhc3M6YEJ5dGVzR2VuZXJhdG9yYCBpbnN0YW5jZXMKLSAgICAgIHRvIGJlIHVzZWQgaW4gdGhlIDpmdW5jOmBwcmludGAgZnVuY3Rpb24uCi0KLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgotCi1UaGUgOm1vZDpgZW1haWwuZ2VuZXJhdG9yYCBtb2R1bGUgYWxzbyBwcm92aWRlcyBhIGRlcml2ZWQgY2xhc3MsIGNhbGxlZAotOmNsYXNzOmBEZWNvZGVkR2VuZXJhdG9yYCB3aGljaCBpcyBsaWtlIHRoZSA6Y2xhc3M6YEdlbmVyYXRvcmAgYmFzZSBjbGFzcywKLWV4Y2VwdCB0aGF0IG5vbi1cIDptaW1ldHlwZTpgdGV4dGAgcGFydHMgYXJlIHN1YnN0aXR1dGVkIHdpdGggYSBmb3JtYXQgc3RyaW5nCi1yZXByZXNlbnRpbmcgdGhlIHBhcnQuCisgICAgICBFbmNvZGUgKnMqIHVzaW5nIHRoZSBgYEFTQ0lJYGAgY29kZWMgYW5kIHRoZSBgYHN1cnJvZ2F0ZWVzY2FwZWBgIGVycm9yCisgICAgICBoYW5kbGVyLCBhbmQgcGFzcyBpdCB0byB0aGUgKndyaXRlKiBtZXRob2Qgb2YgdGhlICpvdXRmcCogcGFzc2VkIHRvIHRoZQorICAgICAgOmNsYXNzOmBCeXRlc0dlbmVyYXRvcmAncyBjb25zdHJ1Y3Rvci4KIAogCi0uLiBjbGFzczo6IERlY29kZWRHZW5lcmF0b3Iob3V0ZnAsIG1hbmdsZV9mcm9tXz1UcnVlLCBtYXhoZWFkZXJsZW49NzgsIGZtdD1Ob25lKQorQXMgYSBjb252ZW5pZW5jZSwgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgIHByb3ZpZGVzIHRoZSBtZXRob2RzCis6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLmFzX2J5dGVzYCBhbmQgYGBieXRlcyhhTWVzc2FnZSlgYCAoYS5rLmEuCis6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLl9fYnl0ZXNfX2ApLCB3aGljaCBzaW1wbGlmeSB0aGUgZ2VuZXJhdGlvbiBvZgorYSBzZXJpYWxpemVkIGJpbmFyeSByZXByZXNlbnRhdGlvbiBvZiBhIG1lc3NhZ2Ugb2JqZWN0LiAgRm9yIG1vcmUgZGV0YWlsLCBzZWUKKzptb2Q6YGVtYWlsLm1lc3NhZ2VgLgogCi0gICBUaGlzIGNsYXNzLCBkZXJpdmVkIGZyb20gOmNsYXNzOmBHZW5lcmF0b3JgIHdhbGtzIHRocm91Z2ggYWxsIHRoZSBzdWJwYXJ0cyBvZiBhCi0gICBtZXNzYWdlLiAgSWYgdGhlIHN1YnBhcnQgaXMgb2YgbWFpbiB0eXBlIDptaW1ldHlwZTpgdGV4dGAsIHRoZW4gaXQgcHJpbnRzIHRoZQotICAgZGVjb2RlZCBwYXlsb2FkIG9mIHRoZSBzdWJwYXJ0LiBPcHRpb25hbCAqX21hbmdsZV9mcm9tXyogYW5kICptYXhoZWFkZXJsZW4qIGFyZQotICAgYXMgd2l0aCB0aGUgOmNsYXNzOmBHZW5lcmF0b3JgIGJhc2UgY2xhc3MuCiAKLSAgIElmIHRoZSBzdWJwYXJ0IGlzIG5vdCBvZiBtYWluIHR5cGUgOm1pbWV0eXBlOmB0ZXh0YCwgb3B0aW9uYWwgKmZtdCogaXMgYSBmb3JtYXQKLSAgIHN0cmluZyB0aGF0IGlzIHVzZWQgaW5zdGVhZCBvZiB0aGUgbWVzc2FnZSBwYXlsb2FkLiAqZm10KiBpcyBleHBhbmRlZCB3aXRoIHRoZQotICAgZm9sbG93aW5nIGtleXdvcmRzLCBgYCUoa2V5d29yZClzYGAgZm9ybWF0OgorQmVjYXVzZSBzdHJpbmdzIGNhbm5vdCByZXByZXNlbnQgYmluYXJ5IGRhdGEsIHRoZSA6Y2xhc3M6YEdlbmVyYXRvcmAgY2xhc3MgbXVzdAorY29udmVydCBhbnkgYmluYXJ5IGRhdGEgaW4gYW55IG1lc3NhZ2UgaXQgZmxhdHRlbnMgdG8gYW4gQVNDSUkgY29tcGF0aWJsZQorZm9ybWF0LCBieSBjb252ZXJ0aW5nIHRoZW0gdG8gYW4gQVNDSUkgY29tcGF0aWJsZQorOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXJfRW5jb2RpbmdgLiAgVXNpbmcgdGhlIHRlcm1pbm9sb2d5IG9mIHRoZSBlbWFpbAorUkZDcywgeW91IGNhbiB0aGluayBvZiB0aGlzIGFzIDpjbGFzczpgR2VuZXJhdG9yYCBzZXJpYWxpemluZyB0byBhbiBJL08gc3RyZWFtCit0aGF0IGlzIG5vdCAiOCBiaXQgY2xlYW4iLiAgSW4gb3RoZXIgd29yZHMsIG1vc3QgYXBwbGljYXRpb25zIHdpbGwgd2FudAordG8gYmUgdXNpbmcgOmNsYXNzOmBCeXRlc0dlbmVyYXRvcmAsIGFuZCBub3QgOmNsYXNzOmBHZW5lcmF0b3JgLgorCisuLiBjbGFzczo6IEdlbmVyYXRvcihvdXRmcCwgbWFuZ2xlX2Zyb21fPU5vbmUsIG1heGhlYWRlcmxlbj1Ob25lLCAqLCBcCisgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9Tm9uZSkKKworICAgUmV0dXJuIGEgOmNsYXNzOmBHZW5lcmF0b3JgIG9iamVjdCB0aGF0IHdpbGwgd3JpdGUgYW55IG1lc3NhZ2UgcHJvdmlkZWQKKyAgIHRvIHRoZSA6bWV0aDpgZmxhdHRlbmAgbWV0aG9kLCBvciBhbnkgdGV4dCBwcm92aWRlZCB0byB0aGUgOm1ldGg6YHdyaXRlYAorICAgbWV0aG9kLCB0byB0aGUgOnRlcm06YGZpbGUtbGlrZSBvYmplY3RgICpvdXRmcCouICAqb3V0ZnAqIG11c3Qgc3VwcG9ydCBhCisgICBgYHdyaXRlYGAgbWV0aG9kIHRoYXQgYWNjZXB0cyBzdHJpbmcgZGF0YS4KKworICAgSWYgb3B0aW9uYWwgKm1hbmdsZV9mcm9tXyogaXMgYGBUcnVlYGAsIHB1dCBhIGBgPmBgIGNoYXJhY3RlciBpbiBmcm9udCBvZgorICAgYW55IGxpbmUgaW4gdGhlIGJvZHkgdGhhdCBzdGFydHMgd2l0aCB0aGUgZXhhY3Qgc3RyaW5nIGBgIkZyb20gImBgLCB0aGF0IGlzCisgICBgYEZyb21gYCBmb2xsb3dlZCBieSBhIHNwYWNlIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBsaW5lLiAgKm1hbmdsZV9mcm9tXyoKKyAgIGRlZmF1bHRzIHRvIHRoZSB2YWx1ZSBvZiB0aGUgOmF0dHI6YH5lbWFpbC5wb2xpY3kuUG9saWN5Lm1hbmdsZV9mcm9tX2AKKyAgIHNldHRpbmcgb2YgdGhlICpwb2xpY3kqICh3aGljaCBpcyBgYFRydWVgYCBmb3IgdGhlCisgICA6ZGF0YTpgfmVtYWlsLnBvbGljeS5jb21wYXQzMmAgcG9saWN5IGFuZCBgYEZhbHNlYGAgZm9yIGFsbCBvdGhlcnMpLgorICAgKm1hbmdsZV9mcm9tXyogaXMgaW50ZW5kZWQgZm9yIHVzZSB3aGVuIG1lc3NhZ2VzIGFyZSBzdG9yZWQgaW4gdW5peCBtYm94CisgICBmb3JtYXQgKHNlZSA6bW9kOmBtYWlsYm94YCBhbmQgYFdIWSBUSEUgQ09OVEVOVC1MRU5HVEggRk9STUFUIElTIEJBRAorICAgPGh0dHA6Ly93d3cuand6Lm9yZy9kb2MvY29udGVudC1sZW5ndGguaHRtbD5gXykuCisKKyAgIElmICptYXhoZWFkZXJsZW4qIGlzIG5vdCBgYE5vbmVgYCwgcmVmb2xkIGFueSBoZWFkZXIgbGluZXMgdGhhdCBhcmUgbG9uZ2VyCisgICB0aGFuICptYXhoZWFkZXJsZW4qLCBvciBpZiBgYDBgYCwgZG8gbm90IHJld3JhcCBhbnkgaGVhZGVycy4gIElmCisgICAqbWFuaGVhZGVybGVuKiBpcyBgYE5vbmVgYCAodGhlIGRlZmF1bHQpLCB3cmFwIGhlYWRlcnMgYW5kIG90aGVyIG1lc3NhZ2UKKyAgIGxpbmVzIGFjY29yZGluZyB0byB0aGUgKnBvbGljeSogc2V0dGluZ3MuCisKKyAgIElmICpwb2xpY3kqIGlzIHNwZWNpZmllZCwgdXNlIHRoYXQgcG9saWN5IHRvIGNvbnRyb2wgbWVzc2FnZSBnZW5lcmF0aW9uLiAgSWYKKyAgICpwb2xpY3kqIGlzIGBgTm9uZWBgICh0aGUgZGVmYXVsdCksIHVzZSB0aGUgcG9saWN5IGFzc29jaWF0ZWQgd2l0aCB0aGUKKyAgIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgb3IgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgCisgICBvYmplY3QgcGFzc2VkIHRvIGBgZmxhdHRlbmBgIHRvIGNvbnRyb2wgdGhlIG1lc3NhZ2UgZ2VuZXJhdGlvbi4gIFNlZQorICAgOm1vZDpgZW1haWwucG9saWN5YCBmb3IgZGV0YWlscyBvbiB3aGF0ICpwb2xpY3kqIGNvbnRyb2xzLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMyBBZGRlZCB0aGUgKnBvbGljeSoga2V5d29yZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYgVGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgdGhlICptYW5nbGVfZnJvbV8qCisgICAgICBhbmQgKm1heGhlYWRlcmxlbiogcGFyYW1ldGVycyBpcyB0byBmb2xsb3cgdGhlIHBvbGljeS4KKworCisgICAuLiBtZXRob2Q6OiBmbGF0dGVuKG1zZywgdW5peGZyb209RmFsc2UsIGxpbmVzZXA9Tm9uZSkKKworICAgICAgUHJpbnQgdGhlIHRleHR1YWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSByb290ZWQKKyAgICAgIGF0ICptc2cqIHRvIHRoZSBvdXRwdXQgZmlsZSBzcGVjaWZpZWQgd2hlbiB0aGUgOmNsYXNzOmBHZW5lcmF0b3JgCisgICAgICBpbnN0YW5jZSB3YXMgY3JlYXRlZC4KKworICAgICAgSWYgdGhlIDptb2Q6YH5lbWFpbC5wb2xpY3lgIG9wdGlvbiA6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kuY3RlX3R5cGVgCisgICAgICBpcyBgYDhiaXRgYCwgZ2VuZXJhdGUgdGhlIG1lc3NhZ2UgYXMgaWYgdGhlIG9wdGlvbiB3ZXJlIHNldCB0byBgYDdiaXRgYC4KKyAgICAgIChUaGlzIGlzIHJlcXVpcmVkIGJlY2F1c2Ugc3RyaW5ncyBjYW5ub3QgcmVwcmVzZW50IG5vbi1BU0NJSSBieXRlcy4pCisgICAgICBDb252ZXJ0IGFueSBieXRlcyB3aXRoIHRoZSBoaWdoIGJpdCBzZXQgYXMgbmVlZGVkIHVzaW5nIGFuCisgICAgICBBU0NJSS1jb21wYXRpYmxlIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYC4gIFRoYXQgaXMsCisgICAgICB0cmFuc2Zvcm0gcGFydHMgd2l0aCBub24tQVNDSUkgOm1haWxoZWFkZXI6YENvdG5lbnQtVHJhbnNmZXItRW5jb2RpbmdgCisgICAgICAoOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXRgKSB0byBhbiBBU0NJSSBjb21wYXRpYmlsZQorICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgLCBhbmQgZW5jb2RlIFJGQy1pbnZhbGlkIG5vbi1BU0NJSQorICAgICAgYnl0ZXMgaW4gaGVhZGVycyB1c2luZyB0aGUgTUlNRSBgYHVua25vd24tOGJpdGBgIGNoYXJhY3RlciBzZXQsIHRodXMKKyAgICAgIHJlbmRlcmluZyB0aGVtIFJGQy1jb21wbGlhbnQuCisKKyAgICAgIElmICp1bml4ZnJvbSogaXMgYGBUcnVlYGAsIHByaW50IHRoZSBlbnZlbG9wZSBoZWFkZXIgZGVsaW1pdGVyIHVzZWQgYnkKKyAgICAgIHRoZSBVbml4IG1haWxib3ggZm9ybWF0IChzZWUgOm1vZDpgbWFpbGJveGApIGJlZm9yZSB0aGUgZmlyc3Qgb2YgdGhlCisgICAgICA6cmZjOmA1MzIyYCBoZWFkZXJzIG9mIHRoZSByb290IG1lc3NhZ2Ugb2JqZWN0LiAgSWYgdGhlIHJvb3Qgb2JqZWN0IGhhcworICAgICAgbm8gZW52ZWxvcGUgaGVhZGVyLCBjcmFmdCBhIHN0YW5kYXJkIG9uZS4gIFRoZSBkZWZhdWx0IGlzIGBgRmFsc2VgYC4KKyAgICAgIE5vdGUgdGhhdCBmb3Igc3VicGFydHMsIG5vIGVudmVsb3BlIGhlYWRlciBpcyBldmVyIHByaW50ZWQuCisKKyAgICAgIElmICpsaW5lc2VwKiBpcyBub3QgYGBOb25lYGAsIHVzZSBpdCBhcyB0aGUgc2VwYXJhdG9yIGNoYXJhY3RlciBiZXR3ZWVuCisgICAgICBhbGwgdGhlIGxpbmVzIG9mIHRoZSBmbGF0dGVuZWQgbWVzc2FnZS4gIElmICpsaW5lc2VwKiBpcyBgYE5vbmVgYCAodGhlCisgICAgICBkZWZhdWx0KSwgdXNlIHRoZSB2YWx1ZSBzcGVjaWZpZWQgaW4gdGhlICpwb2xpY3kqLgorCisgICAgICAuLiBYWFg6IGZsYXR0ZW4gc2hvdWxkIHRha2UgYSAqcG9saWN5KiBrZXl3b3JkLgorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgorICAgICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgcmUtZW5jb2RpbmcgYGA4Yml0YGAgbWVzc2FnZSBib2RpZXMsIGFuZCB0aGUKKyAgICAgICAgICpsaW5lc2VwKiBhcmd1bWVudC4KKworCisgICAuLiBtZXRob2Q6OiBjbG9uZShmcCkKKworICAgICAgUmV0dXJuIGFuIGluZGVwZW5kZW50IGNsb25lIG9mIHRoaXMgOmNsYXNzOmBHZW5lcmF0b3JgIGluc3RhbmNlIHdpdGggdGhlCisgICAgICBleGFjdCBzYW1lIG9wdGlvbnMsIGFuZCAqZnAqIGFzIHRoZSBuZXcgKm91dGZwKi4KKworCisgICAuLiBtZXRob2Q6OiB3cml0ZShzKQorCisgICAgICBXcml0ZSAqcyogdG8gdGhlICp3cml0ZSogbWV0aG9kIG9mIHRoZSAqb3V0ZnAqIHBhc3NlZCB0byB0aGUKKyAgICAgIDpjbGFzczpgR2VuZXJhdG9yYCdzIGNvbnN0cnVjdG9yLiAgVGhpcyBwcm92aWRlcyBqdXN0IGVub3VnaCBmaWxlLWxpa2UKKyAgICAgIEFQSSBmb3IgOmNsYXNzOmBHZW5lcmF0b3JgIGluc3RhbmNlcyB0byBiZSB1c2VkIGluIHRoZSA6ZnVuYzpgcHJpbnRgCisgICAgICBmdW5jdGlvbi4KKworCitBcyBhIGNvbnZlbmllbmNlLCA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgcHJvdmlkZXMgdGhlIG1ldGhvZHMKKzptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2UuYXNfc3RyaW5nYCBhbmQgYGBzdHIoYU1lc3NhZ2UpYGAgKGEuay5hLgorOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5fX3N0cl9fYCksIHdoaWNoIHNpbXBsaWZ5IHRoZSBnZW5lcmF0aW9uIG9mCithIGZvcm1hdHRlZCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBtZXNzYWdlIG9iamVjdC4gIEZvciBtb3JlIGRldGFpbCwgc2VlCis6bW9kOmBlbWFpbC5tZXNzYWdlYC4KKworCitUaGUgOm1vZDpgZW1haWwuZ2VuZXJhdG9yYCBtb2R1bGUgYWxzbyBwcm92aWRlcyBhIGRlcml2ZWQgY2xhc3MsCis6Y2xhc3M6YERlY29kZWRHZW5lcmF0b3JgLCB3aGljaCBpcyBsaWtlIHRoZSA6Y2xhc3M6YEdlbmVyYXRvcmAgYmFzZSBjbGFzcywKK2V4Y2VwdCB0aGF0IG5vbi1cIDptaW1ldHlwZTpgdGV4dGAgcGFydHMgYXJlIG5vdCBzZXJpYWxpemVkLCBidXQgYXJlIGluc3RlYWQKK3JlcHJlc2VudGVkIGluIHRoZSBvdXRwdXQgc3RyZWFtIGJ5IGEgc3RyaW5nIGRlcml2ZWQgZnJvbSBhIHRlbXBsYXRlIGZpbGxlZAoraW4gd2l0aCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcGFydC4KKworLi4gY2xhc3M6OiBEZWNvZGVkR2VuZXJhdG9yKG91dGZwLCBtYW5nbGVfZnJvbV89Tm9uZSwgbWF4aGVhZGVybGVuPU5vbmUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbXQ9Tm9uZSwgKiwgcG9saWN5PU5vbmUpCisKKyAgIEFjdCBsaWtlIDpjbGFzczpgR2VuZXJhdG9yYCwgZXhjZXB0IHRoYXQgZm9yIGFueSBzdWJwYXJ0IG9mIHRoZSBtZXNzYWdlCisgICBwYXNzZWQgdG8gOm1ldGg6YEdlbmVyYXRvci5mbGF0dGVuYCwgaWYgdGhlIHN1YnBhcnQgaXMgb2YgbWFpbiB0eXBlCisgICA6bWltZXR5cGU6YHRleHRgLCBwcmludCB0aGUgZGVjb2RlZCBwYXlsb2FkIG9mIHRoZSBzdWJwYXJ0LCBhbmQgaWYgdGhlIG1haW4KKyAgIHR5cGUgaXMgbm90IDptaW1ldHlwZTpgdGV4dGAsIGluc3RlYWQgb2YgcHJpbnRpbmcgaXQgZmlsbCBpbiB0aGUgc3RyaW5nCisgICAqZm10KiB1c2luZyBpbmZvcm1hdGlvbiBmcm9tIHRoZSBwYXJ0IGFuZCBwcmludCB0aGUgcmVzdWx0aW5nCisgICBmaWxsZWQtaW4gc3RyaW5nLgorCisgICBUbyBmaWxsIGluICpmbXQqLCBleGVjdXRlIGBgZm10ICUgcGFydF9pbmZvYGAsIHdoZXJlIGBgcGFydF9pbmZvYGAKKyAgIGlzIGEgZGljdGlvbmFyeSBjb21wb3NlZCBvZiB0aGUgZm9sbG93aW5nIGtleXMgYW5kIHZhbHVlczoKIAogICAgKiBgYHR5cGVgYCAtLSBGdWxsIE1JTUUgdHlwZSBvZiB0aGUgbm9uLVwgOm1pbWV0eXBlOmB0ZXh0YCBwYXJ0CiAKQEAgLTIyNSwxNSArMjU5LDIxIEBACiAKICAgICogYGBlbmNvZGluZ2BgIC0tIENvbnRlbnQgdHJhbnNmZXIgZW5jb2Rpbmcgb2YgdGhlIG5vbi1cIDptaW1ldHlwZTpgdGV4dGAgcGFydAogCi0gICBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgKmZtdCogaXMgYGBOb25lYGAsIG1lYW5pbmcgOjoKKyAgIElmICpmbXQqIGlzIGBgTm9uZWBgLCB1c2UgdGhlIGZvbGxvd2luZyBkZWZhdWx0ICpmbXQqOgogCi0gICAgICBbTm9uLXRleHQgKCUodHlwZSlzKSBwYXJ0IG9mIG1lc3NhZ2Ugb21pdHRlZCwgZmlsZW5hbWUgJShmaWxlbmFtZSlzXQorICAgICAgIltOb24tdGV4dCAoJSh0eXBlKXMpIHBhcnQgb2YgbWVzc2FnZSBvbWl0dGVkLCBmaWxlbmFtZSAlKGZpbGVuYW1lKXNdIgorCisgICBPcHRpb25hbCAqX21hbmdsZV9mcm9tXyogYW5kICptYXhoZWFkZXJsZW4qIGFyZSBhcyB3aXRoIHRoZQorICAgOmNsYXNzOmBHZW5lcmF0b3JgIGJhc2UgY2xhc3MuCiAKIAogLi4gcnVicmljOjogRm9vdG5vdGVzCiAKLS4uIFsjXSBUaGlzIHN0YXRlbWVudCBhc3N1bWVzIHRoYXQgeW91IHVzZSB0aGUgYXBwcm9wcmlhdGUgc2V0dGluZyBmb3IgdGhlCi0gICAgICAgYGB1bml4ZnJvbWBgIGFyZ3VtZW50LCBhbmQgdGhhdCB5b3Ugc2V0IG1heGhlYWRlcmxlbj0wICh3aGljaCB3aWxsCi0gICAgICAgcHJlc2VydmUgd2hhdGV2ZXIgdGhlIGlucHV0IGxpbmUgbGVuZ3RocyB3ZXJlKS4gIEl0IGlzIGFsc28gbm90IHN0cmljdGx5Ci0gICAgICAgdHJ1ZSwgc2luY2UgaW4gbWFueSBjYXNlcyBydW5zIG9mIHdoaXRlc3BhY2UgaW4gaGVhZGVycyBhcmUgY29sbGFwc2VkCi0gICAgICAgaW50byBzaW5nbGUgYmxhbmtzLiAgVGhlIGxhdHRlciBpcyBhIGJ1ZyB0aGF0IHdpbGwgZXZlbnR1YWxseSBiZSBmaXhlZC4KKy4uIFsjXSBUaGlzIHN0YXRlbWVudCBhc3N1bWVzIHRoYXQgeW91IHVzZSB0aGUgYXBwcm9wcmlhdGUgc2V0dGluZyBmb3IKKyAgICAgICBgYHVuaXhmcm9tYGAsIGFuZCB0aGF0IHRoZXJlIGFyZSBubyA6bW9kOmBwb2xpY3lgIHNldHRpbmdzIGNhbGxpbmcgZm9yCisgICAgICAgYXV0b21hdGljIGFkanVzdG1lbnRzIChmb3IgZXhhbXBsZSwKKyAgICAgICA6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kucmVmb2xkX3NvdXJjZWAgbXVzdCBiZSBgYG5vbmVgYCwgd2hpY2ggaXMKKyAgICAgICAqbm90KiB0aGUgZGVmYXVsdCkuICBJdCBpcyBhbHNvIG5vdCAxMDAlIHRydWUsIHNpbmNlIGlmIHRoZSBtZXNzYWdlCisgICAgICAgZG9lcyBub3QgY29uZm9ybSB0byB0aGUgUkZDIHN0YW5kYXJkcyBvY2Nhc2lvbmFsbHkgaW5mb3JtYXRpb24gYWJvdXQgdGhlCisgICAgICAgZXhhY3Qgb3JpZ2luYWwgdGV4dCBpcyBsb3N0IGR1cmluZyBwYXJzaW5nIGVycm9yIHJlY292ZXJ5LiAgSXQgaXMgYSBnb2FsCisgICAgICAgdG8gZml4IHRoZXNlIGxhdHRlciBlZGdlIGNhc2VzIHdoZW4gcG9zc2libGUuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbWFpbC5oZWFkZXIucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwuaGVhZGVyLnJzdAppbmRleCBlOTQ4MzdjLi4wNzE1MmMyIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9lbWFpbC5oZWFkZXIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2VtYWlsLmhlYWRlci5yc3QKQEAgLTgsNiArOCwxNCBAQAogCiAtLS0tLS0tLS0tLS0tLQogCitUaGlzIG1vZHVsZSBpcyBwYXJ0IG9mIHRoZSBsZWdhY3kgKGBgQ29tcGF0MzJgYCkgZW1haWwgQVBJLiAgSW4gdGhlIGN1cnJlbnQgQVBJCitlbmNvZGluZyBhbmQgZGVjb2Rpbmcgb2YgaGVhZGVycyBpcyBoYW5kbGVkIHRyYW5zcGFyZW50bHkgYnkgdGhlCitkaWN0aW9uYXJ5LWxpa2UgQVBJIG9mIHRoZSA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgY2xhc3MuICBJbgorYWRkaXRpb24gdG8gdXNlcyBpbiBsZWdhY3kgY29kZSwgdGhpcyBtb2R1bGUgY2FuIGJlIHVzZWZ1bCBpbiBhcHBsaWNhdGlvbnMgdGhhdAorbmVlZCB0byBjb21wbGV0ZWx5IGNvbnRyb2wgdGhlIGNoYXJhY3RlciBzZXRzIHVzZWQgd2hlbiBlbmNvZGluZyBoZWFkZXJzLgorCitUaGUgcmVtYWluaW5nIHRleHQgaW4gdGhpcyBzZWN0aW9uIGlzIHRoZSBvcmlnaW5hbCBkb2N1bWVudGF0aW9uIG9mIHRoZSBtb2R1bGUuCisKIDpyZmM6YDI4MjJgIGlzIHRoZSBiYXNlIHN0YW5kYXJkIHRoYXQgZGVzY3JpYmVzIHRoZSBmb3JtYXQgb2YgZW1haWwgbWVzc2FnZXMuCiBJdCBkZXJpdmVzIGZyb20gdGhlIG9sZGVyIDpyZmM6YDgyMmAgc3RhbmRhcmQgd2hpY2ggY2FtZSBpbnRvIHdpZGVzcHJlYWQgdXNlIGF0CiBhIHRpbWUgd2hlbiBtb3N0IGVtYWlsIHdhcyBjb21wb3NlZCBvZiBBU0NJSSBjaGFyYWN0ZXJzIG9ubHkuICA6cmZjOmAyODIyYCBpcyBhCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbWFpbC5oZWFkZXJyZWdpc3RyeS5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5oZWFkZXJyZWdpc3RyeS5yc3QKaW5kZXggMDcwN2JkOC4uMmM4MzBjZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZW1haWwuaGVhZGVycmVnaXN0cnkucnN0CisrKyBiL0RvYy9saWJyYXJ5L2VtYWlsLmhlYWRlcnJlZ2lzdHJ5LnJzdApAQCAtNywyMCArNywxMiBAQAogLi4gbW9kdWxlYXV0aG9yOjogUi4gRGF2aWQgTXVycmF5IDxyZG11cnJheUBiaXRkYW5jZS5jb20+CiAuLiBzZWN0aW9uYXV0aG9yOjogUi4gRGF2aWQgTXVycmF5IDxyZG11cnJheUBiaXRkYW5jZS5jb20+CiAKLS4uIHZlcnNpb25hZGRlZDo6IDMuMwotICAgYXMgYSA6dGVybTpgcHJvdmlzaW9uYWwgbW9kdWxlIDxwcm92aXNpb25hbCBwYWNrYWdlPmAuCi0KICoqU291cmNlIGNvZGU6KiogOnNvdXJjZTpgTGliL2VtYWlsL2hlYWRlcnJlZ2lzdHJ5LnB5YAogCi0uLiBub3RlOjoKLQotICAgVGhlIGhlYWRlcnJlZ2lzdHJ5IG1vZHVsZSBoYXMgYmVlbiBpbmNsdWRlZCBpbiB0aGUgc3RhbmRhcmQgbGlicmFyeSBvbiBhCi0gICA6dGVybTpgcHJvdmlzaW9uYWwgYmFzaXMgPHByb3Zpc2lvbmFsIHBhY2thZ2U+YC4gQmFja3dhcmRzIGluY29tcGF0aWJsZQotICAgY2hhbmdlcyAodXAgdG8gYW5kIGluY2x1ZGluZyByZW1vdmFsIG9mIHRoZSBtb2R1bGUpIG1heSBvY2N1ciBpZiBkZWVtZWQKLSAgIG5lY2Vzc2FyeSBieSB0aGUgY29yZSBkZXZlbG9wZXJzLgotCiAtLS0tLS0tLS0tLS0tLQogCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYgWzFdXworCiBIZWFkZXJzIGFyZSByZXByZXNlbnRlZCBieSBjdXN0b21pemVkIHN1YmNsYXNzZXMgb2YgOmNsYXNzOmBzdHJgLiAgVGhlCiBwYXJ0aWN1bGFyIGNsYXNzIHVzZWQgdG8gcmVwcmVzZW50IGEgZ2l2ZW4gaGVhZGVyIGlzIGRldGVybWluZWQgYnkgdGhlCiA6YXR0cjpgfmVtYWlsLnBvbGljeS5FbWFpbFBvbGljeS5oZWFkZXJfZmFjdG9yeWAgb2YgdGhlIDptb2Q6YH5lbWFpbC5wb2xpY3lgIGluCkBAIC04NiwxMCArNzgsMTEgQEAKICAgIC4uIG1ldGhvZDo6IGZvbGQoKiwgcG9saWN5KQogCiAgICAgICBSZXR1cm4gYSBzdHJpbmcgY29udGFpbmluZyA6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kubGluZXNlcGAKLSAgICAgIGNoYXJhY3RlcnMgYXMgcmVxdWlyZWQgdG8gY29ycmVjdGx5IGZvbGQgdGhlIGhlYWRlciBhY2NvcmRpbmcKLSAgICAgIHRvICpwb2xpY3kqLiAgQSA6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kuY3RlX3R5cGVgIG9mCi0gICAgICBgYDhiaXRgYCB3aWxsIGJlIHRyZWF0ZWQgYXMgaWYgaXQgd2VyZSBgYDdiaXRgYCwgc2luY2Ugc3RyaW5ncwotICAgICAgbWF5IG5vdCBjb250YWluIGJpbmFyeSBkYXRhLgorICAgICAgY2hhcmFjdGVycyBhcyByZXF1aXJlZCB0byBjb3JyZWN0bHkgZm9sZCB0aGUgaGVhZGVyIGFjY29yZGluZyB0bworICAgICAgKnBvbGljeSouICBBIDphdHRyOmB+ZW1haWwucG9saWN5LlBvbGljeS5jdGVfdHlwZWAgb2YgYGA4Yml0YGAgd2lsbCBiZQorICAgICAgdHJlYXRlZCBhcyBpZiBpdCB3ZXJlIGBgN2JpdGBgLCBzaW5jZSBoZWFkZXJzIG1heSBub3QgY29udGFpbiBhcmJpdHJhcnkKKyAgICAgIGJpbmFyeSBkYXRhLiAgSWYgOmF0dHI6YH5lbWFpbC5wb2xpY3kuRW1haWxQb2xpY3kudXRmOGAgaXMgYGBGYWxzZWBgLAorICAgICAgbm9uLUFTQ0lJIGRhdGEgd2lsbCBiZSA6cmZjOmAyMDQ3YCBlbmNvZGVkLgogCiAKICAgIGBgQmFzZUhlYWRlcmBgIGJ5IGl0c2VsZiBjYW5ub3QgYmUgdXNlZCB0byBjcmVhdGUgYSBoZWFkZXIgb2JqZWN0LiAgSXQKQEAgLTEwNiw3ICs5OSw3IEBACiAgICB2YWx1ZXMgZm9yIGF0IGxlYXN0IHRoZSBrZXlzIGBgZGVjb2RlZGBgIGFuZCBgYGRlZmVjdHNgYC4gIGBgZGVjb2RlZGBgCiAgICBzaG91bGQgYmUgdGhlIHN0cmluZyB2YWx1ZSBmb3IgdGhlIGhlYWRlciAodGhhdCBpcywgdGhlIGhlYWRlciB2YWx1ZSBmdWxseQogICAgZGVjb2RlZCB0byB1bmljb2RlKS4gIFRoZSBwYXJzZSBtZXRob2Qgc2hvdWxkIGFzc3VtZSB0aGF0ICpzdHJpbmcqIG1heQotICAgY29udGFpbiB0cmFuc3BvcnQgZW5jb2RlZCBwYXJ0cywgYnV0IHNob3VsZCBjb3JyZWN0bHkgaGFuZGxlIGFsbCB2YWxpZAorICAgY29udGFpbiBjb250ZW50LXRyYW5zZmVyLWVuY29kZWQgcGFydHMsIGJ1dCBzaG91bGQgY29ycmVjdGx5IGhhbmRsZSBhbGwgdmFsaWQKICAgIHVuaWNvZGUgY2hhcmFjdGVycyBhcyB3ZWxsIHNvIHRoYXQgaXQgY2FuIHBhcnNlIHVuLWVuY29kZWQgaGVhZGVyIHZhbHVlcy4KIAogICAgYGBCYXNlSGVhZGVyYGAncyBgYF9fbmV3X19gYCB0aGVuIGNyZWF0ZXMgdGhlIGhlYWRlciBpbnN0YW5jZSwgYW5kIGNhbGxzIGl0cwpAQCAtMTM1LDExICsxMjgsMTAgQEAKICAgIG1lY2hhbmlzbSBmb3IgZW5jb2Rpbmcgbm9uLUFTQ0lJIHRleHQgYXMgQVNDSUkgY2hhcmFjdGVycyB3aXRoaW4gYSBoZWFkZXIKICAgIHZhbHVlLiAgV2hlbiBhICp2YWx1ZSogY29udGFpbmluZyBlbmNvZGVkIHdvcmRzIGlzIHBhc3NlZCB0byB0aGUKICAgIGNvbnN0cnVjdG9yLCB0aGUgYGBVbnN0cnVjdHVyZWRIZWFkZXJgYCBwYXJzZXIgY29udmVydHMgc3VjaCBlbmNvZGVkIHdvcmRzCi0gICBiYWNrIGluIHRvIHRoZSBvcmlnaW5hbCB1bmljb2RlLCBmb2xsb3dpbmcgdGhlIDpyZmM6YDIwNDdgIHJ1bGVzIGZvcgotICAgdW5zdHJ1Y3R1cmVkIHRleHQuICBUaGUgcGFyc2VyIHVzZXMgaGV1cmlzdGljcyB0byBhdHRlbXB0IHRvIGRlY29kZSBjZXJ0YWluCi0gICBub24tY29tcGxpYW50IGVuY29kZWQgd29yZHMuICBEZWZlY3RzIGFyZSByZWdpc3RlcmVkIGluIHN1Y2ggY2FzZXMsIGFzIHdlbGwKLSAgIGFzIGRlZmVjdHMgZm9yIGlzc3VlcyBzdWNoIGFzIGludmFsaWQgY2hhcmFjdGVycyB3aXRoaW4gdGhlIGVuY29kZWQgd29yZHMgb3IKLSAgIHRoZSBub24tZW5jb2RlZCB0ZXh0LgorICAgaW50byB1bmljb2RlLCBmb2xsb3dpbmcgdGhlIDpyZmM6YDIwNDdgIHJ1bGVzIGZvciB1bnN0cnVjdHVyZWQgdGV4dC4gIFRoZQorICAgcGFyc2VyIHVzZXMgaGV1cmlzdGljcyB0byBhdHRlbXB0IHRvIGRlY29kZSBjZXJ0YWluIG5vbi1jb21wbGlhbnQgZW5jb2RlZAorICAgd29yZHMuICBEZWZlY3RzIGFyZSByZWdpc3RlcmVkIGluIHN1Y2ggY2FzZXMsIGFzIHdlbGwgYXMgZGVmZWN0cyBmb3IgaXNzdWVzCisgICBzdWNoIGFzIGludmFsaWQgY2hhcmFjdGVycyB3aXRoaW4gdGhlIGVuY29kZWQgd29yZHMgb3IgdGhlIG5vbi1lbmNvZGVkIHRleHQuCiAKICAgIFRoaXMgaGVhZGVyIHR5cGUgcHJvdmlkZXMgbm8gYWRkaXRpb25hbCBhdHRyaWJ1dGVzLgogCkBAIC0yMTMsMTUgKzIwNSwxNiBAQAogICAgICAgdGhlIGxpc3Qgb2YgYWRkcmVzc2VzIGlzICJmbGF0dGVuZWQiIGludG8gYSBvbmUgZGltZW5zaW9uYWwgbGlzdCkuCiAKICAgIFRoZSBgYGRlY29kZWRgYCB2YWx1ZSBvZiB0aGUgaGVhZGVyIHdpbGwgaGF2ZSBhbGwgZW5jb2RlZCB3b3JkcyBkZWNvZGVkIHRvCi0gICB1bmljb2RlLiAgOmNsYXNzOmB+ZW5jb2RpbmdzLmlkbmFgIGVuY29kZWQgZG9tYWluIG5hbWVzIGFyZSBhbHNvIGRlY29kZWQgdG8gdW5pY29kZS4gIFRoZQotICAgYGBkZWNvZGVkYGAgdmFsdWUgaXMgc2V0IGJ5IDphdHRyOmB+c3RyLmpvaW5gXCBpbmcgdGhlIDpjbGFzczpgc3RyYCB2YWx1ZSBvZgotICAgdGhlIGVsZW1lbnRzIG9mIHRoZSBgYGdyb3Vwc2BgIGF0dHJpYnV0ZSB3aXRoIGBgJywgJ2BgLgorICAgdW5pY29kZS4gIDpjbGFzczpgfmVuY29kaW5ncy5pZG5hYCBlbmNvZGVkIGRvbWFpbiBuYW1lcyBhcmUgYWxzbyBkZWNvZGVkIHRvCisgICB1bmljb2RlLiAgVGhlIGBgZGVjb2RlZGBgIHZhbHVlIGlzIHNldCBieSA6YXR0cjpgfnN0ci5qb2luYFwgaW5nIHRoZQorICAgOmNsYXNzOmBzdHJgIHZhbHVlIG9mIHRoZSBlbGVtZW50cyBvZiB0aGUgYGBncm91cHNgYCBhdHRyaWJ1dGUgd2l0aCBgYCcsCisgICAnYGAuCiAKICAgIEEgbGlzdCBvZiA6Y2xhc3M6YC5BZGRyZXNzYCBhbmQgOmNsYXNzOmAuR3JvdXBgIG9iamVjdHMgaW4gYW55IGNvbWJpbmF0aW9uCiAgICBtYXkgYmUgdXNlZCB0byBzZXQgdGhlIHZhbHVlIG9mIGFuIGFkZHJlc3MgaGVhZGVyLiAgYGBHcm91cGBgIG9iamVjdHMgd2hvc2UKICAgIGBgZGlzcGxheV9uYW1lYGAgaXMgYGBOb25lYGAgd2lsbCBiZSBpbnRlcnByZXRlZCBhcyBzaW5nbGUgYWRkcmVzc2VzLCB3aGljaAogICAgYWxsb3dzIGFuIGFkZHJlc3MgbGlzdCB0byBiZSBjb3BpZWQgd2l0aCBncm91cHMgaW50YWN0IGJ5IHVzaW5nIHRoZSBsaXN0Ci0gICBvYnRhaW5lZCBgYGdyb3Vwc2BgIGF0dHJpYnV0ZSBvZiB0aGUgc291cmNlIGhlYWRlci4KKyAgIG9idGFpbmVkIGZyb20gdGhlIGBgZ3JvdXBzYGAgYXR0cmlidXRlIG9mIHRoZSBzb3VyY2UgaGVhZGVyLgogCiAKIC4uIGNsYXNzOjogU2luZ2xlQWRkcmVzc0hlYWRlcgpAQCAtMjY3LDcgKzI2MCw3IEBACiAKIC4uIGNsYXNzOjogUGFyYW1ldGVyaXplZE1JTUVIZWFkZXIKIAotICAgIE1PTUUgaGVhZGVycyBhbGwgc3RhcnQgd2l0aCB0aGUgcHJlZml4ICdDb250ZW50LScuICBFYWNoIHNwZWNpZmljIGhlYWRlciBoYXMKKyAgICBNSU1FIGhlYWRlcnMgYWxsIHN0YXJ0IHdpdGggdGhlIHByZWZpeCAnQ29udGVudC0nLiAgRWFjaCBzcGVjaWZpYyBoZWFkZXIgaGFzCiAgICAgYSBjZXJ0YWluIHZhbHVlLCBkZXNjcmliZWQgdW5kZXIgdGhlIGNsYXNzIGZvciB0aGF0IGhlYWRlci4gIFNvbWUgY2FuCiAgICAgYWxzbyB0YWtlIGEgbGlzdCBvZiBzdXBwbGVtZW50YWwgcGFyYW1ldGVycywgd2hpY2ggaGF2ZSBhIGNvbW1vbiBmb3JtYXQuCiAgICAgVGhpcyBjbGFzcyBzZXJ2ZXMgYXMgYSBiYXNlIGZvciBhbGwgdGhlIE1JTUUgaGVhZGVycyB0aGF0IHRha2UgcGFyYW1ldGVycy4KQEAgLTQ1NCwzICs0NDcsOSBAQAogICAgICAgYGBkaXNwbGF5X25hbWVgYCBpcyBub25lIGFuZCB0aGVyZSBpcyBhIHNpbmdsZSBgYEFkZHJlc3NgYCBpbiB0aGUKICAgICAgIGBgYWRkcmVzc2VzYGAgbGlzdCwgdGhlIGBgc3RyYGAgdmFsdWUgd2lsbCBiZSB0aGUgc2FtZSBhcyB0aGUgYGBzdHJgYCBvZgogICAgICAgdGhhdCBzaW5nbGUgYGBBZGRyZXNzYGAuCisKKworLi4gcnVicmljOjogRm9vdG5vdGVzCisKKy4uIFsxXSBPcmluZ2FsbHkgYWRkZWQgaW4gMy4zIGFzIGEgOnRlcm06YHByb3Zpc2lvbmFsIG1vZHVsZSA8cHJvdmlzaW9uYWwKKyAgICAgICBwYWNrYWdlPmAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLm1lc3NhZ2UucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwubWVzc2FnZS5yc3QKaW5kZXggMjkwNzk3NS4uMzI4NTJlNyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZW1haWwubWVzc2FnZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwubWVzc2FnZS5yc3QKQEAgLTMsOTEgKzMsMTAyIEBACiAKIC4uIG1vZHVsZTo6IGVtYWlsLm1lc3NhZ2UKICAgIDpzeW5vcHNpczogVGhlIGJhc2UgY2xhc3MgcmVwcmVzZW50aW5nIGVtYWlsIG1lc3NhZ2VzLgorLi4gbW9kdWxlYXV0aG9yOjogUi4gRGF2aWQgTXVycmF5IDxyZG11cnJheUBiaXRkYW5jZS5jb20+CisuLiBzZWN0aW9uYXV0aG9yOjogUi4gRGF2aWQgTXVycmF5IDxyZG11cnJheUBiaXRkYW5jZS5jb20+LAorICAgICAgICAgICAgICAgICAgIEJhcnJ5IEEuIFdhcnNhdyA8YmFycnlAcHl0aG9uLm9yZz4KIAogKipTb3VyY2UgY29kZToqKiA6c291cmNlOmBMaWIvZW1haWwvbWVzc2FnZS5weWAKIAogLS0tLS0tLS0tLS0tLS0KIAotVGhlIGNlbnRyYWwgY2xhc3MgaW4gdGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlIGlzIHRoZSA6Y2xhc3M6YE1lc3NhZ2VgIGNsYXNzLAotaW1wb3J0ZWQgZnJvbSB0aGUgOm1vZDpgZW1haWwubWVzc2FnZWAgbW9kdWxlLiAgSXQgaXMgdGhlIGJhc2UgY2xhc3MgZm9yIHRoZQotOm1vZDpgZW1haWxgIG9iamVjdCBtb2RlbC4gIDpjbGFzczpgTWVzc2FnZWAgcHJvdmlkZXMgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSBmb3IKLXNldHRpbmcgYW5kIHF1ZXJ5aW5nIGhlYWRlciBmaWVsZHMsIGFuZCBmb3IgYWNjZXNzaW5nIG1lc3NhZ2UgYm9kaWVzLgorLi4gdmVyc2lvbmFkZGVkOjogMy42IFsxXV8KIAotQ29uY2VwdHVhbGx5LCBhIDpjbGFzczpgTWVzc2FnZWAgb2JqZWN0IGNvbnNpc3RzIG9mICpoZWFkZXJzKiBhbmQgKnBheWxvYWRzKi4KLUhlYWRlcnMgYXJlIDpyZmM6YDI4MjJgIHN0eWxlIGZpZWxkIG5hbWVzIGFuZCB2YWx1ZXMgd2hlcmUgdGhlIGZpZWxkIG5hbWUgYW5kCi12YWx1ZSBhcmUgc2VwYXJhdGVkIGJ5IGEgY29sb24uICBUaGUgY29sb24gaXMgbm90IHBhcnQgb2YgZWl0aGVyIHRoZSBmaWVsZCBuYW1lCi1vciB0aGUgZmllbGQgdmFsdWUuCitUaGUgY2VudHJhbCBjbGFzcyBpbiB0aGUgOm1vZDpgZW1haWxgIHBhY2thZ2UgaXMgdGhlIDpjbGFzczpgRW1haWxNZXNzYWdlYAorY2xhc3MsIGltcG9ydGVkIGZyb20gdGhlIDptb2Q6YGVtYWlsLm1lc3NhZ2VgIG1vZHVsZS4gIEl0IGlzIHRoZSBiYXNlIGNsYXNzIGZvcgordGhlIDptb2Q6YGVtYWlsYCBvYmplY3QgbW9kZWwuICA6Y2xhc3M6YEVtYWlsTWVzc2FnZWAgcHJvdmlkZXMgdGhlIGNvcmUKK2Z1bmN0aW9uYWxpdHkgZm9yIHNldHRpbmcgYW5kIHF1ZXJ5aW5nIGhlYWRlciBmaWVsZHMsIGZvciBhY2Nlc3NpbmcgbWVzc2FnZQorYm9kaWVzLCBhbmQgZm9yIGNyZWF0aW5nIG9yIG1vZGlmeWluZyBzdHJ1Y3R1cmVkIG1lc3NhZ2VzLgogCi1IZWFkZXJzIGFyZSBzdG9yZWQgYW5kIHJldHVybmVkIGluIGNhc2UtcHJlc2VydmluZyBmb3JtIGJ1dCBhcmUgbWF0Y2hlZAotY2FzZS1pbnNlbnNpdGl2ZWx5LiAgVGhlcmUgbWF5IGFsc28gYmUgYSBzaW5nbGUgZW52ZWxvcGUgaGVhZGVyLCBhbHNvIGtub3duIGFzCi10aGUgKlVuaXgtRnJvbSogaGVhZGVyIG9yIHRoZSBgYEZyb21fYGAgaGVhZGVyLiAgVGhlIHBheWxvYWQgaXMgZWl0aGVyIGEgc3RyaW5nCi1pbiB0aGUgY2FzZSBvZiBzaW1wbGUgbWVzc2FnZSBvYmplY3RzIG9yIGEgbGlzdCBvZiA6Y2xhc3M6YE1lc3NhZ2VgIG9iamVjdHMgZm9yCi1NSU1FIGNvbnRhaW5lciBkb2N1bWVudHMgKGUuZy4gOm1pbWV0eXBlOmBtdWx0aXBhcnQvXCpgIGFuZAotOm1pbWV0eXBlOmBtZXNzYWdlL3JmYzgyMmApLgorQW4gZW1haWwgbWVzc2FnZSBjb25zaXN0cyBvZiAqaGVhZGVycyogYW5kIGEgKnBheWxvYWQqICh3aGljaCBpcyBhbHNvIHJlZmVycmVkCit0byBhcyB0aGUgKmNvbnRlbnQqKS4gIEhlYWRlcnMgYXJlIDpyZmM6YDUzMjJgIG9yIDpyZmM6YDY1MzJgIHN0eWxlIGZpZWxkIG5hbWVzCithbmQgdmFsdWVzLCB3aGVyZSB0aGUgZmllbGQgbmFtZSBhbmQgdmFsdWUgYXJlIHNlcGFyYXRlZCBieSBhIGNvbG9uLiAgVGhlIGNvbG9uCitpcyBub3QgcGFydCBvZiBlaXRoZXIgdGhlIGZpZWxkIG5hbWUgb3IgdGhlIGZpZWxkIHZhbHVlLiAgVGhlIHBheWxvYWQgbWF5IGJlIGEKK3NpbXBsZSB0ZXh0IG1lc3NhZ2UsIG9yIGEgYmluYXJ5IG9iamVjdCwgb3IgYSBzdHJ1Y3R1cmVkIHNlcXVlbmNlIG9mCitzdWItbWVzc2FnZXMgZWFjaCB3aXRoIHRoZWlyIG93biBzZXQgb2YgaGVhZGVycyBhbmQgdGhlaXIgb3duIHBheWxvYWQuICBUaGUKK2xhdHRlciB0eXBlIG9mIHBheWxvYWQgaXMgaW5kaWNhdGVkIGJ5IHRoZSBtZXNzYWdlIGhhdmluZyBhIE1JTUUgdHlwZSBzdWNoIGFzCis6bWltZXR5cGU6YG11bHRpcGFydC9cKmAgb3IgOm1pbWV0eXBlOmBtZXNzYWdlL3JmYzgyMmAuCiAKLTpjbGFzczpgTWVzc2FnZWAgb2JqZWN0cyBwcm92aWRlIGEgbWFwcGluZyBzdHlsZSBpbnRlcmZhY2UgZm9yIGFjY2Vzc2luZyB0aGUKLW1lc3NhZ2UgaGVhZGVycywgYW5kIGFuIGV4cGxpY2l0IGludGVyZmFjZSBmb3IgYWNjZXNzaW5nIGJvdGggdGhlIGhlYWRlcnMgYW5kCi10aGUgcGF5bG9hZC4gIEl0IHByb3ZpZGVzIGNvbnZlbmllbmNlIG1ldGhvZHMgZm9yIGdlbmVyYXRpbmcgYSBmbGF0IHRleHQKLXJlcHJlc2VudGF0aW9uIG9mIHRoZSBtZXNzYWdlIG9iamVjdCB0cmVlLCBmb3IgYWNjZXNzaW5nIGNvbW1vbmx5IHVzZWQgaGVhZGVyCi1wYXJhbWV0ZXJzLCBhbmQgZm9yIHJlY3Vyc2l2ZWx5IHdhbGtpbmcgb3ZlciB0aGUgb2JqZWN0IHRyZWUuCitUaGUgY29uY2VwdHVhbCBtb2RlbCBwcm92aWRlZCBieSBhbiA6Y2xhc3M6YEVtYWlsTWVzc2FnZWAgb2JqZWN0IGlzIHRoYXQgb2YgYW4KK29yZGVyZWQgZGljdGlvbmFyeSBvZiBoZWFkZXJzIGNvdXBsZWQgd2l0aCBhICpwYXlsb2FkKiB0aGF0IHJlcHJlc2VudHMgdGhlCis6cmZjOmA1MzIyYCBib2R5IG9mIHRoZSBtZXNzYWdlLCB3aGljaCBtaWdodCBiZSBhIGxpc3Qgb2Ygc3ViLWBgRW1haWxNZXNzYWdlYGAKK29iamVjdHMuICBJbiBhZGRpdGlvbiB0byB0aGUgbm9ybWFsIGRpY3Rpb25hcnkgbWV0aG9kcyBmb3IgYWNjZXNzaW5nIHRoZSBoZWFkZXIKK25hbWVzIGFuZCB2YWx1ZXMsIHRoZXJlIGFyZSBtZXRob2RzIGZvciBhY2Nlc3Npbmcgc3BlY2lhbGl6ZWQgaW5mb3JtYXRpb24gZnJvbQordGhlIGhlYWRlcnMgKGZvciBleGFtcGxlIHRoZSBNSU1FIGNvbnRlbnQgdHlwZSksIGZvciBvcGVyYXRpbmcgb24gdGhlIHBheWxvYWQsCitmb3IgZ2VuZXJhdGluZyBhIHNlcmlhbGl6ZWQgdmVyc2lvbiBvZiB0aGUgbWVzc2FnZSwgYW5kIGZvciByZWN1cnNpdmVseSB3YWxraW5nCitvdmVyIHRoZSBvYmplY3QgdHJlZS4KIAotSGVyZSBhcmUgdGhlIG1ldGhvZHMgb2YgdGhlIDpjbGFzczpgTWVzc2FnZWAgY2xhc3M6CitUaGUgOmNsYXNzOmBFbWFpbE1lc3NhZ2VgIGRpY3Rpb25hcnktbGlrZSBpbnRlcmZhY2UgaXMgaW5kZXhlZCBieSB0aGUgaGVhZGVyCituYW1lcywgd2hpY2ggbXVzdCBiZSBBU0NJSSB2YWx1ZXMuICBUaGUgdmFsdWVzIG9mIHRoZSBkaWN0aW9uYXJ5IGFyZSBzdHJpbmdzCit3aXRoIHNvbWUgZXh0cmEgbWV0aG9kcy4gIEhlYWRlcnMgYXJlIHN0b3JlZCBhbmQgcmV0dXJuZWQgaW4gY2FzZS1wcmVzZXJ2aW5nCitmb3JtLCBidXQgZmllbGQgbmFtZXMgYXJlIG1hdGNoZWQgY2FzZS1pbnNlbnNpdGl2ZWx5LiAgVW5saWtlIGEgcmVhbCBkaWN0LAordGhlcmUgaXMgYW4gb3JkZXJpbmcgdG8gdGhlIGtleXMsIGFuZCB0aGVyZSBjYW4gYmUgZHVwbGljYXRlIGtleXMuICBBZGRpdGlvbmFsCittZXRob2RzIGFyZSBwcm92aWRlZCBmb3Igd29ya2luZyB3aXRoIGhlYWRlcnMgdGhhdCBoYXZlIGR1cGxpY2F0ZSBrZXlzLgorCitUaGUgKnBheWxvYWQqIGlzIGVpdGhlciBhIHN0cmluZyBvciBieXRlcyBvYmplY3QsIGluIHRoZSBjYXNlIG9mIHNpbXBsZSBtZXNzYWdlCitvYmplY3RzLCBvciBhIGxpc3Qgb2YgOmNsYXNzOmBFbWFpbE1lc3NhZ2VgIG9iamVjdHMsIGZvciBNSU1FIGNvbnRhaW5lcgorZG9jdW1lbnRzIHN1Y2ggYXMgOm1pbWV0eXBlOmBtdWx0aXBhcnQvXCpgIGFuZCA6bWltZXR5cGU6YG1lc3NhZ2UvcmZjODIyYAorbWVzc2FnZSBvYmplY3RzLgogCiAKLS4uIGNsYXNzOjogTWVzc2FnZShwb2xpY3k9Y29tcGF0MzIpCisuLiBjbGFzczo6IEVtYWlsTWVzc2FnZShwb2xpY3k9ZGVmYXVsdCkKIAotICAgSWYgKnBvbGljeSogaXMgc3BlY2lmaWVkIChpdCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIGEgOm1vZDpgfmVtYWlsLnBvbGljeWAKLSAgIGNsYXNzKSB1c2UgdGhlIHJ1bGVzIGl0IHNwZWNpZmllcyB0byB1cGRhdGUgYW5kIHNlcmlhbGl6ZSB0aGUgcmVwcmVzZW50YXRpb24KLSAgIG9mIHRoZSBtZXNzYWdlLiAgSWYgKnBvbGljeSogaXMgbm90IHNldCwgdXNlIHRoZSA6Y2xhc3M6YGNvbXBhdDMyCi0gICA8ZW1haWwucG9saWN5LkNvbXBhdDMyPmAgcG9saWN5LCB3aGljaCBtYWludGFpbnMgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoCi0gICB0aGUgUHl0aG9uIDMuMiB2ZXJzaW9uIG9mIHRoZSBlbWFpbCBwYWNrYWdlLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIHRoZQorICAgSWYgKnBvbGljeSogaXMgc3BlY2lmaWVkIHVzZSB0aGUgcnVsZXMgaXQgc3BlY2lmaWVzIHRvIHVkcGF0ZSBhbmQgc2VyaWFsaXplCisgICB0aGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1lc3NhZ2UuICBJZiAqcG9saWN5KiBpcyBub3Qgc2V0LCB1c2UgdGhlCisgICA6Y2xhc3M6YH5lbWFpbC5wb2xpY3kuZGVmYXVsdGAgcG9saWN5LCB3aGljaCBmb2xsb3dzIHRoZSBydWxlcyBvZiB0aGUgZW1haWwKKyAgIFJGQ3MgZXhjZXB0IGZvciBsaW5lIGVuZGluZ3MgKGluc3RlYWQgb2YgdGhlIFJGQyBtYW5kYXRlZCBgYFxyXG5gYCwgaXQgdXNlcworICAgdGhlIFB5dGhvbiBzdGFuZGFyZCBgYFxuYGAgbGluZSBlbmRpbmdzKS4gIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSB0aGUKICAgIDptb2Q6YH5lbWFpbC5wb2xpY3lgIGRvY3VtZW50YXRpb24uCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zIFRoZSAqcG9saWN5KiBrZXl3b3JkIGFyZ3VtZW50IHdhcyBhZGRlZC4KKyAgIC4uIG1ldGhvZDo6IGFzX3N0cmluZyh1bml4ZnJvbT1GYWxzZSwgbWF4aGVhZGVybGVuPU5vbmUsIHBvbGljeT1Ob25lKQogCisgICAgICBSZXR1cm4gdGhlIGVudGlyZSBtZXNzYWdlIGZsYXR0ZW5lZCBhcyBhIHN0cmluZy4gIFdoZW4gb3B0aW9uYWwKKyAgICAgICp1bml4ZnJvbSogaXMgdHJ1ZSwgdGhlIGVudmVsb3BlIGhlYWRlciBpcyBpbmNsdWRlZCBpbiB0aGUgcmV0dXJuZWQKKyAgICAgIHN0cmluZy4gICp1bml4ZnJvbSogZGVmYXVsdHMgdG8gYGBGYWxzZWBgLiAgRm9yIGJhY2t3YXJkIGNvbXBhYml0aWxpdHkKKyAgICAgIHdpdGggdGhlIGJhc2UgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBjbGFzcyAqbWF4aGVhZGVybGVuKiBpcworICAgICAgYWNjZXB0ZWQsIGJ1dCBkZWZhdWx0cyB0byBgYE5vbmVgYCwgd2hpY2ggbWVhbnMgdGhhdCBieSBkZWZhdWx0IHRoZSBsaW5lCisgICAgICBsZW5ndGggaXMgY29udHJvbGxlZCBieSB0aGUKKyAgICAgIDphdHRyOmB+ZW1haWwucG9saWN5LkVtYWlsUG9saWN5Lm1heF9saW5lX2xlbmd0aGAgb2YgdGhlIHBvbGljeS4gIFRoZQorICAgICAgKnBvbGljeSogYXJndW1lbnQgbWF5IGJlIHVzZWQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgcG9saWN5IG9idGFpbmVkCisgICAgICBmcm9tIHRoZSBtZXNzYWdlIGluc3RhbmNlLiAgVGhpcyBjYW4gYmUgdXNlZCB0byBjb250cm9sIHNvbWUgb2YgdGhlCisgICAgICBmb3JtYXR0aW5nIHByb2R1Y2VkIGJ5IHRoZSBtZXRob2QsIHNpbmNlIHRoZSBzcGVjaWZpZWQgKnBvbGljeSogd2lsbCBiZQorICAgICAgcGFzc2VkIHRvIHRoZSA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuR2VuZXJhdG9yYC4KIAotICAgLi4gbWV0aG9kOjogYXNfc3RyaW5nKHVuaXhmcm9tPUZhbHNlLCBtYXhoZWFkZXJsZW49MCwgcG9saWN5PU5vbmUpCisgICAgICBGbGF0dGVuaW5nIHRoZSBtZXNzYWdlIG1heSB0cmlnZ2VyIGNoYW5nZXMgdG8gdGhlIDpjbGFzczpgRW1haWxNZXNzYWdlYAorICAgICAgaWYgZGVmYXVsdHMgbmVlZCB0byBiZSBmaWxsZWQgaW4gdG8gY29tcGxldGUgdGhlIHRyYW5zZm9ybWF0aW9uIHRvIGEKKyAgICAgIHN0cmluZyAoZm9yIGV4YW1wbGUsIE1JTUUgYm91bmRhcmllcyBtYXkgYmUgZ2VuZXJhdGVkIG9yIG1vZGlmaWVkKS4KIAotICAgICAgUmV0dXJuIHRoZSBlbnRpcmUgbWVzc2FnZSBmbGF0dGVuZWQgYXMgYSBzdHJpbmcuICBXaGVuIG9wdGlvbmFsICp1bml4ZnJvbSoKLSAgICAgIGlzIHRydWUsIHRoZSBlbnZlbG9wZSBoZWFkZXIgaXMgaW5jbHVkZWQgaW4gdGhlIHJldHVybmVkIHN0cmluZy4KLSAgICAgICp1bml4ZnJvbSogZGVmYXVsdHMgdG8gYGBGYWxzZWBgLiAgRm9yIGJhY2t3YXJkIGNvbXBhYml0aWxpdHkgcmVhc29ucywKLSAgICAgICptYXhoZWFkZXJsZW4qIGRlZmF1bHRzIHRvIGBgMGBgLCBzbyBpZiB5b3Ugd2FudCBhIGRpZmZlcmVudCB2YWx1ZSB5b3UKLSAgICAgIG11c3Qgb3ZlcnJpZGUgaXQgZXhwbGljaXRseSAodGhlIHZhbHVlIHNwZWNpZmllZCBmb3IgKm1heF9saW5lX2xlbmd0aCogaW4KLSAgICAgIHRoZSBwb2xpY3kgd2lsbCBiZSBpZ25vcmVkIGJ5IHRoaXMgbWV0aG9kKS4gIFRoZSAqcG9saWN5KiBhcmd1bWVudCBtYXkgYmUKLSAgICAgIHVzZWQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgcG9saWN5IG9idGFpbmVkIGZyb20gdGhlIG1lc3NhZ2UgaW5zdGFuY2UuCi0gICAgICBUaGlzIGNhbiBiZSB1c2VkIHRvIGNvbnRyb2wgc29tZSBvZiB0aGUgZm9ybWF0dGluZyBwcm9kdWNlZCBieSB0aGUKLSAgICAgIG1ldGhvZCwgc2luY2UgdGhlIHNwZWNpZmllZCAqcG9saWN5KiB3aWxsIGJlIHBhc3NlZCB0byB0aGUgYGBHZW5lcmF0b3JgYC4KKyAgICAgIE5vdGUgdGhhdCB0aGlzIG1ldGhvZCBpcyBwcm92aWRlZCBhcyBhIGNvbnZlbmllbmNlIGFuZCBtYXkgbm90IGJlIHRoZQorICAgICAgbW9zdCB1c2VmdWwgd2F5IHRvIHNlcmlhbGl6ZSBtZXNzYWdlcyBpbiB5b3VyIGFwcGxpY2F0aW9uLCBlc3BlY2lhbGx5IGlmCisgICAgICB5b3UgYXJlIGRlYWxpbmcgd2l0aCBtdWx0aXBsZSBtZXNzYWdlcy4gIFNlZQorICAgICAgOmNsYXNzOmBlbWFpbC5nZW5lcmF0b3IuR2VuZXJhdG9yYCBmb3IgYSBtb3JlIGZsZXhpYmxlIEFQSSBmb3IKKyAgICAgIHNlcmlhbGl6aW5nIG1lc3NhZ2VzLiAgTm90ZSBhbHNvIHRoYXQgdGhpcyBtZXRob2QgaXMgcmVzdHJpY3RlZCB0bworICAgICAgcHJvZHVjaW5nIG1lc3NhZ2VzIHNlcmlhbGl6ZWQgYXMgIjcgYml0IGNsZWFuIiB3aGVuCisgICAgICA6YXR0cjpgfmVtYWlsLnBvbGljeS5FbWFpbFBvbGljeS51dGY4YCBpcyBgYEZhbHNlYGAsIHdoaWNoIGlzIHRoZSBkZWZhdWx0LgogCi0gICAgICBGbGF0dGVuaW5nIHRoZSBtZXNzYWdlIG1heSB0cmlnZ2VyIGNoYW5nZXMgdG8gdGhlIDpjbGFzczpgTWVzc2FnZWAgaWYKLSAgICAgIGRlZmF1bHRzIG5lZWQgdG8gYmUgZmlsbGVkIGluIHRvIGNvbXBsZXRlIHRoZSB0cmFuc2Zvcm1hdGlvbiB0byBhIHN0cmluZwotICAgICAgKGZvciBleGFtcGxlLCBNSU1FIGJvdW5kYXJpZXMgbWF5IGJlIGdlbmVyYXRlZCBvciBtb2RpZmllZCkuCi0KLSAgICAgIE5vdGUgdGhhdCB0aGlzIG1ldGhvZCBpcyBwcm92aWRlZCBhcyBhIGNvbnZlbmllbmNlIGFuZCBtYXkgbm90IGFsd2F5cwotICAgICAgZm9ybWF0IHRoZSBtZXNzYWdlIHRoZSB3YXkgeW91IHdhbnQuICBGb3IgZXhhbXBsZSwgYnkgZGVmYXVsdCBpdCBkb2VzCi0gICAgICBub3QgZG8gdGhlIG1hbmdsaW5nIG9mIGxpbmVzIHRoYXQgYmVnaW4gd2l0aCBgYEZyb21gYCB0aGF0IGlzCi0gICAgICByZXF1aXJlZCBieSB0aGUgdW5peCBtYm94IGZvcm1hdC4gIEZvciBtb3JlIGZsZXhpYmlsaXR5LCBpbnN0YW50aWF0ZSBhCi0gICAgICA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuR2VuZXJhdG9yYCBpbnN0YW5jZSBhbmQgdXNlIGl0cwotICAgICAgOm1ldGg6YH5lbWFpbC5nZW5lcmF0b3IuR2VuZXJhdG9yLmZsYXR0ZW5gIG1ldGhvZCBkaXJlY3RseS4gIEZvciBleGFtcGxlOjoKLQotICAgICAgICAgZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KLSAgICAgICAgIGZyb20gZW1haWwuZ2VuZXJhdG9yIGltcG9ydCBHZW5lcmF0b3IKLSAgICAgICAgIGZwID0gU3RyaW5nSU8oKQotICAgICAgICAgZyA9IEdlbmVyYXRvcihmcCwgbWFuZ2xlX2Zyb21fPVRydWUsIG1heGhlYWRlcmxlbj02MCkKLSAgICAgICAgIGcuZmxhdHRlbihtc2cpCi0gICAgICAgICB0ZXh0ID0gZnAuZ2V0dmFsdWUoKQotCi0gICAgICBJZiB0aGUgbWVzc2FnZSBvYmplY3QgY29udGFpbnMgYmluYXJ5IGRhdGEgdGhhdCBpcyBub3QgZW5jb2RlZCBhY2NvcmRpbmcKLSAgICAgIHRvIFJGQyBzdGFuZGFyZHMsIHRoZSBub24tY29tcGxpYW50IGRhdGEgd2lsbCBiZSByZXBsYWNlZCBieSB1bmljb2RlCi0gICAgICAidW5rbm93biBjaGFyYWN0ZXIiIGNvZGUgcG9pbnRzLiAgKFNlZSBhbHNvIDptZXRoOmAuYXNfYnl0ZXNgIGFuZAotICAgICAgOmNsYXNzOmB+ZW1haWwuZ2VuZXJhdG9yLkJ5dGVzR2VuZXJhdG9yYC4pCi0KLSAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40IHRoZSAqcG9saWN5KiBrZXl3b3JkIGFyZ3VtZW50IHdhcyBhZGRlZC4KKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42IHRoZSBkZWZhdWx0IGJlaGF2aW9yIHdoZW4gKm1heGhlYWRlcmxlbioKKyAgICAgICAgIGlzIG5vdCBzcGVjaWZpZWQgd2FzIGNoYW5nZWQgZnJvbSBkZWZhdWx0aW5nIHRvIDAgdG8gZGVmYXVsdGluZworICAgICAgICAgdG8gdGhlIHZhbHVlIG9mICptYXhfbGluZV9sZW5ndGgqIGZyb20gdGhlIHBvbGljeS4KIAogCiAgICAuLiBtZXRob2Q6OiBfX3N0cl9fKCkKIAotICAgICAgRXF1aXZhbGVudCB0byA6bWV0aDpgLmFzX3N0cmluZygpYC4gIEFsbG93cyBgYHN0cihtc2cpYGAgdG8gcHJvZHVjZSBhCi0gICAgICBzdHJpbmcgY29udGFpbmluZyB0aGUgZm9ybWF0dGVkIG1lc3NhZ2UuCisgICAgICBFcXVpdmFsZW50IHRvIGBhc19zdHJpbmcocG9saWN5PXNlbGYucG9saWN5LmNsb25lKHV0Zjg9VHJ1ZSlgLiAgQWxsb3dzCisgICAgICBgYHN0cihtc2cpYGAgdG8gcHJvZHVjZSBhIHN0cmluZyBjb250YWluaW5nIHRoZSBzZXJpYWxpemVkIG1lc3NhZ2UgaW4gYQorICAgICAgcmVhZGFibGUgZm9ybWF0LgorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNCB0aGUgbWV0aG9kIHdhcyBjaGFuZ2VkIHRvIHVzZSBgYHV0Zjg9VHJ1ZWBgLAorICAgICAgICAgdGh1cyBwcm9kdWNpbmcgYW4gOnJmYzpgNjUzMWAtbGlrZSBtZXNzYWdlIHJlcHJlc2VudGF0aW9uLCBpbnN0ZWFkIG9mCisgICAgICAgICBiZWluZyBhIGRpcmVjdCBhbGlhcyBmb3IgOm1ldGg6YGFzX3N0cmluZ2AuCiAKIAogICAgLi4gbWV0aG9kOjogYXNfYnl0ZXModW5peGZyb209RmFsc2UsIHBvbGljeT1Ob25lKQpAQCAtOTgsNTIgKzEwOSw0MiBAQAogICAgICAgdXNlZCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBwb2xpY3kgb2J0YWluZWQgZnJvbSB0aGUgbWVzc2FnZSBpbnN0YW5jZS4KICAgICAgIFRoaXMgY2FuIGJlIHVzZWQgdG8gY29udHJvbCBzb21lIG9mIHRoZSBmb3JtYXR0aW5nIHByb2R1Y2VkIGJ5IHRoZQogICAgICAgbWV0aG9kLCBzaW5jZSB0aGUgc3BlY2lmaWVkICpwb2xpY3kqIHdpbGwgYmUgcGFzc2VkIHRvIHRoZQotICAgICAgYGBCeXRlc0dlbmVyYXRvcmBgLgorICAgICAgOmNsYXNzOmB+ZW1haWwuZ2VuZXJhdG9yLkJ5dGVzR2VuZXJhdG9yYC4KIAotICAgICAgRmxhdHRlbmluZyB0aGUgbWVzc2FnZSBtYXkgdHJpZ2dlciBjaGFuZ2VzIHRvIHRoZSA6Y2xhc3M6YE1lc3NhZ2VgIGlmCi0gICAgICBkZWZhdWx0cyBuZWVkIHRvIGJlIGZpbGxlZCBpbiB0byBjb21wbGV0ZSB0aGUgdHJhbnNmb3JtYXRpb24gdG8gYSBzdHJpbmcKLSAgICAgIChmb3IgZXhhbXBsZSwgTUlNRSBib3VuZGFyaWVzIG1heSBiZSBnZW5lcmF0ZWQgb3IgbW9kaWZpZWQpLgorICAgICAgRmxhdHRlbmluZyB0aGUgbWVzc2FnZSBtYXkgdHJpZ2dlciBjaGFuZ2VzIHRvIHRoZSA6Y2xhc3M6YEVtYWlsTWVzc2FnZWAKKyAgICAgIGlmIGRlZmF1bHRzIG5lZWQgdG8gYmUgZmlsbGVkIGluIHRvIGNvbXBsZXRlIHRoZSB0cmFuc2Zvcm1hdGlvbiB0byBhCisgICAgICBzdHJpbmcgKGZvciBleGFtcGxlLCBNSU1FIGJvdW5kYXJpZXMgbWF5IGJlIGdlbmVyYXRlZCBvciBtb2RpZmllZCkuCiAKLSAgICAgIE5vdGUgdGhhdCB0aGlzIG1ldGhvZCBpcyBwcm92aWRlZCBhcyBhIGNvbnZlbmllbmNlIGFuZCBtYXkgbm90IGFsd2F5cwotICAgICAgZm9ybWF0IHRoZSBtZXNzYWdlIHRoZSB3YXkgeW91IHdhbnQuICBGb3IgZXhhbXBsZSwgYnkgZGVmYXVsdCBpdCBkb2VzCi0gICAgICBub3QgZG8gdGhlIG1hbmdsaW5nIG9mIGxpbmVzIHRoYXQgYmVnaW4gd2l0aCBgYEZyb21gYCB0aGF0IGlzCi0gICAgICByZXF1aXJlZCBieSB0aGUgdW5peCBtYm94IGZvcm1hdC4gIEZvciBtb3JlIGZsZXhpYmlsaXR5LCBpbnN0YW50aWF0ZSBhCi0gICAgICA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuQnl0ZXNHZW5lcmF0b3JgIGluc3RhbmNlIGFuZCB1c2UgaXRzCi0gICAgICA6bWV0aDpgfmVtYWlsLmdlbmVyYXRvci5CeXRlc0dlbmVyYXRvci5mbGF0dGVuYCBtZXRob2QgZGlyZWN0bHkuCi0gICAgICBGb3IgZXhhbXBsZTo6Ci0KLSAgICAgICAgIGZyb20gaW8gaW1wb3J0IEJ5dGVzSU8KLSAgICAgICAgIGZyb20gZW1haWwuZ2VuZXJhdG9yIGltcG9ydCBCeXRlc0dlbmVyYXRvcgotICAgICAgICAgZnAgPSBCeXRlc0lPKCkKLSAgICAgICAgIGcgPSBCeXRlc0dlbmVyYXRvcihmcCwgbWFuZ2xlX2Zyb21fPVRydWUsIG1heGhlYWRlcmxlbj02MCkKLSAgICAgICAgIGcuZmxhdHRlbihtc2cpCi0gICAgICAgICB0ZXh0ID0gZnAuZ2V0dmFsdWUoKQotCi0gICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKKyAgICAgIE5vdGUgdGhhdCB0aGlzIG1ldGhvZCBpcyBwcm92aWRlZCBhcyBhIGNvbnZlbmllbmNlIGFuZCBtYXkgbm90IGJlIHRoZQorICAgICAgbW9zdCB1c2VmdWwgd2F5IHRvIHNlcmlhbGl6ZSBtZXNzYWdlcyBpbiB5b3VyIGFwcGxpY2F0aW9uLCBlc3BlY2lhbGx5IGlmCisgICAgICB5b3UgYXJlIGRlYWxpbmcgd2l0aCBtdWx0aXBsZSBtZXNzYWdlcy4gIFNlZQorICAgICAgOmNsYXNzOmBlbWFpbC5nZW5lcmF0b3IuQnl0ZXNHZW5lcmF0b3JgIGZvciBhIG1vcmUgZmxleGlibGUgQVBJIGZvcgorICAgICAgc2VyaWFsaXppbmcgbWVzc2FnZXMuCiAKIAogICAgLi4gbWV0aG9kOjogX19ieXRlc19fKCkKIAogICAgICAgRXF1aXZhbGVudCB0byA6bWV0aDpgLmFzX2J5dGVzKClgLiAgQWxsb3dzIGBgYnl0ZXMobXNnKWBgIHRvIHByb2R1Y2UgYQotICAgICAgYnl0ZXMgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGZvcm1hdHRlZCBtZXNzYWdlLgotCi0gICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKKyAgICAgIGJ5dGVzIG9iamVjdCBjb250YWluaW5nIHRoZSBzZXJpYWxpemVkIG1lc3NhZ2UuCiAKIAogICAgLi4gbWV0aG9kOjogaXNfbXVsdGlwYXJ0KCkKIAogICAgICAgUmV0dXJuIGBgVHJ1ZWBgIGlmIHRoZSBtZXNzYWdlJ3MgcGF5bG9hZCBpcyBhIGxpc3Qgb2Ygc3ViLVwKLSAgICAgIDpjbGFzczpgTWVzc2FnZWAgb2JqZWN0cywgb3RoZXJ3aXNlIHJldHVybiBgYEZhbHNlYGAuICBXaGVuCisgICAgICA6Y2xhc3M6YEVtYWlsTWVzc2FnZWAgb2JqZWN0cywgb3RoZXJ3aXNlIHJldHVybiBgYEZhbHNlYGAuICBXaGVuCiAgICAgICA6bWV0aDpgaXNfbXVsdGlwYXJ0YCByZXR1cm5zIGBgRmFsc2VgYCwgdGhlIHBheWxvYWQgc2hvdWxkIGJlIGEgc3RyaW5nCi0gICAgICBvYmplY3QuICAoTm90ZSB0aGF0IDptZXRoOmBpc19tdWx0aXBhcnRgIHJldHVybmluZyBgYFRydWVgYCBkb2VzIG5vdAotICAgICAgbmVjZXNzYXJpbHkgbWVhbiB0aGF0ICJtc2cuZ2V0X2NvbnRlbnRfbWFpbnR5cGUoKSA9PSAnbXVsdGlwYXJ0JyIgd2lsbAotICAgICAgcmV0dXJuIHRoZSBgYFRydWVgYC4gICBGb3IgZXhhbXBsZSwgYGBpc19tdWx0aXBhcnRgYCB3aWxsIHJldHVybiBgYFRydWVgYAotICAgICAgd2hlbiB0aGUgOmNsYXNzOmBNZXNzYWdlYCBpcyBvZiB0eXBlIGBgbWVzc2FnZS9yZmM4MjJgYC4pCisgICAgICBvYmplY3QgKHdoaWNoIG1pZ2h0IGJlIGEgQ1RFIGVuY29kZWQgYmluYXJ5IHBheWxvYWQpLiAgTm90ZSB0aGF0CisgICAgICA6bWV0aDpgaXNfbXVsdGlwYXJ0YCByZXR1cm5pbmcgYGBUcnVlYGAgZG9lcyBub3QgbmVjZXNzYXJpbHkgbWVhbiB0aGF0CisgICAgICAibXNnLmdldF9jb250ZW50X21haW50eXBlKCkgPT0gJ211bHRpcGFydCciIHdpbGwgcmV0dXJuIHRoZSBgYFRydWVgYC4KKyAgICAgIEZvciBleGFtcGxlLCBgYGlzX211bHRpcGFydGBgIHdpbGwgcmV0dXJuIGBgVHJ1ZWBgIHdoZW4gdGhlCisgICAgICA6Y2xhc3M6YEVtYWlsTWVzc2FnZWAgaXMgb2YgdHlwZSBgYG1lc3NhZ2UvcmZjODIyYGAuCiAKIAogICAgLi4gbWV0aG9kOjogc2V0X3VuaXhmcm9tKHVuaXhmcm9tKQogCi0gICAgICBTZXQgdGhlIG1lc3NhZ2UncyBlbnZlbG9wZSBoZWFkZXIgdG8gKnVuaXhmcm9tKiwgd2hpY2ggc2hvdWxkIGJlIGEgc3RyaW5nLgorICAgICAgU2V0IHRoZSBtZXNzYWdlJ3MgZW52ZWxvcGUgaGVhZGVyIHRvICp1bml4ZnJvbSosIHdoaWNoIHNob3VsZCBiZSBhCisgICAgICBzdHJpbmcuICAoU2VlIDpjbGFzczpgfm1haWxib3gubWJveE1lc3NhZ2VgIGZvciBhIGJyaWVmIGRlc2NyaXB0aW9uIG9mCisgICAgICB0aGlzIGhlYWRlci4pCiAKIAogICAgLi4gbWV0aG9kOjogZ2V0X3VuaXhmcm9tKCkKQEAgLTE1MiwxMDkgKzE1MywyMyBAQAogICAgICAgZW52ZWxvcGUgaGVhZGVyIHdhcyBuZXZlciBzZXQuCiAKIAotICAgLi4gbWV0aG9kOjogYXR0YWNoKHBheWxvYWQpCi0KLSAgICAgIEFkZCB0aGUgZ2l2ZW4gKnBheWxvYWQqIHRvIHRoZSBjdXJyZW50IHBheWxvYWQsIHdoaWNoIG11c3QgYmUgYGBOb25lYGAgb3IKLSAgICAgIGEgbGlzdCBvZiA6Y2xhc3M6YE1lc3NhZ2VgIG9iamVjdHMgYmVmb3JlIHRoZSBjYWxsLiBBZnRlciB0aGUgY2FsbCwgdGhlCi0gICAgICBwYXlsb2FkIHdpbGwgYWx3YXlzIGJlIGEgbGlzdCBvZiA6Y2xhc3M6YE1lc3NhZ2VgIG9iamVjdHMuICBJZiB5b3Ugd2FudCB0bwotICAgICAgc2V0IHRoZSBwYXlsb2FkIHRvIGEgc2NhbGFyIG9iamVjdCAoZS5nLiBhIHN0cmluZyksIHVzZQotICAgICAgOm1ldGg6YHNldF9wYXlsb2FkYCBpbnN0ZWFkLgotCi0KLSAgIC4uIG1ldGhvZDo6IGdldF9wYXlsb2FkKGk9Tm9uZSwgZGVjb2RlPUZhbHNlKQotCi0gICAgICBSZXR1cm4gdGhlIGN1cnJlbnQgcGF5bG9hZCwgd2hpY2ggd2lsbCBiZSBhIGxpc3Qgb2YKLSAgICAgIDpjbGFzczpgTWVzc2FnZWAgb2JqZWN0cyB3aGVuIDptZXRoOmBpc19tdWx0aXBhcnRgIGlzIGBgVHJ1ZWBgLCBvciBhCi0gICAgICBzdHJpbmcgd2hlbiA6bWV0aDpgaXNfbXVsdGlwYXJ0YCBpcyBgYEZhbHNlYGAuICBJZiB0aGUgcGF5bG9hZCBpcyBhIGxpc3QKLSAgICAgIGFuZCB5b3UgbXV0YXRlIHRoZSBsaXN0IG9iamVjdCwgeW91IG1vZGlmeSB0aGUgbWVzc2FnZSdzIHBheWxvYWQgaW4gcGxhY2UuCi0KLSAgICAgIFdpdGggb3B0aW9uYWwgYXJndW1lbnQgKmkqLCA6bWV0aDpgZ2V0X3BheWxvYWRgIHdpbGwgcmV0dXJuIHRoZSAqaSotdGgKLSAgICAgIGVsZW1lbnQgb2YgdGhlIHBheWxvYWQsIGNvdW50aW5nIGZyb20gemVybywgaWYgOm1ldGg6YGlzX211bHRpcGFydGAgaXMKLSAgICAgIGBgVHJ1ZWBgLiAgQW4gOmV4YzpgSW5kZXhFcnJvcmAgd2lsbCBiZSByYWlzZWQgaWYgKmkqIGlzIGxlc3MgdGhhbiAwIG9yCi0gICAgICBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIG51bWJlciBvZiBpdGVtcyBpbiB0aGUgcGF5bG9hZC4gIElmIHRoZQotICAgICAgcGF5bG9hZCBpcyBhIHN0cmluZyAoaS5lLiAgOm1ldGg6YGlzX211bHRpcGFydGAgaXMgYGBGYWxzZWBgKSBhbmQgKmkqIGlzCi0gICAgICBnaXZlbiwgYSA6ZXhjOmBUeXBlRXJyb3JgIGlzIHJhaXNlZC4KLQotICAgICAgT3B0aW9uYWwgKmRlY29kZSogaXMgYSBmbGFnIGluZGljYXRpbmcgd2hldGhlciB0aGUgcGF5bG9hZCBzaG91bGQgYmUKLSAgICAgIGRlY29kZWQgb3Igbm90LCBhY2NvcmRpbmcgdG8gdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYAotICAgICAgaGVhZGVyLiBXaGVuIGBgVHJ1ZWBgIGFuZCB0aGUgbWVzc2FnZSBpcyBub3QgYSBtdWx0aXBhcnQsIHRoZSBwYXlsb2FkIHdpbGwKLSAgICAgIGJlIGRlY29kZWQgaWYgdGhpcyBoZWFkZXIncyB2YWx1ZSBpcyBgYHF1b3RlZC1wcmludGFibGVgYCBvciBgYGJhc2U2NGBgLgotICAgICAgSWYgc29tZSBvdGhlciBlbmNvZGluZyBpcyB1c2VkLCBvciA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2AKLSAgICAgIGhlYWRlciBpcyBtaXNzaW5nLCB0aGUgcGF5bG9hZCBpcwotICAgICAgcmV0dXJuZWQgYXMtaXMgKHVuZGVjb2RlZCkuICBJbiBhbGwgY2FzZXMgdGhlIHJldHVybmVkIHZhbHVlIGlzIGJpbmFyeQotICAgICAgZGF0YS4gIElmIHRoZSBtZXNzYWdlIGlzIGEgbXVsdGlwYXJ0IGFuZCB0aGUgKmRlY29kZSogZmxhZyBpcyBgYFRydWVgYCwKLSAgICAgIHRoZW4gYGBOb25lYGAgaXMgcmV0dXJuZWQuICBJZiB0aGUgcGF5bG9hZCBpcyBiYXNlNjQgYW5kIGl0IHdhcyBub3QKLSAgICAgIHBlcmZlY3RseSBmb3JtZWQgKG1pc3NpbmcgcGFkZGluZywgY2hhcmFjdGVycyBvdXRzaWRlIHRoZSBiYXNlNjQKLSAgICAgIGFscGhhYmV0KSwgdGhlbiBhbiBhcHByb3ByaWF0ZSBkZWZlY3Qgd2lsbCBiZSBhZGRlZCB0byB0aGUgbWVzc2FnZSdzCi0gICAgICBkZWZlY3QgcHJvcGVydHkgKDpjbGFzczpgfmVtYWlsLmVycm9ycy5JbnZhbGlkQmFzZTY0UGFkZGluZ0RlZmVjdGAgb3IKLSAgICAgIDpjbGFzczpgfmVtYWlsLmVycm9ycy5JbnZhbGlkQmFzZTY0Q2hhcmFjdGVyc0RlZmVjdGAsIHJlc3BlY3RpdmVseSkuCi0KLSAgICAgIFdoZW4gKmRlY29kZSogaXMgYGBGYWxzZWBgICh0aGUgZGVmYXVsdCkgdGhlIGJvZHkgaXMgcmV0dXJuZWQgYXMgYSBzdHJpbmcKLSAgICAgIHdpdGhvdXQgZGVjb2RpbmcgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYC4gIEhvd2V2ZXIsCi0gICAgICBmb3IgYSA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2Agb2YgOGJpdCwgYW4gYXR0ZW1wdCBpcyBtYWRlCi0gICAgICB0byBkZWNvZGUgdGhlIG9yaWdpbmFsIGJ5dGVzIHVzaW5nIHRoZSBgYGNoYXJzZXRgYCBzcGVjaWZpZWQgYnkgdGhlCi0gICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIsIHVzaW5nIHRoZSBgYHJlcGxhY2VgYCBlcnJvciBoYW5kbGVyLgotICAgICAgSWYgbm8gYGBjaGFyc2V0YGAgaXMgc3BlY2lmaWVkLCBvciBpZiB0aGUgYGBjaGFyc2V0YGAgZ2l2ZW4gaXMgbm90Ci0gICAgICByZWNvZ25pemVkIGJ5IHRoZSBlbWFpbCBwYWNrYWdlLCB0aGUgYm9keSBpcyBkZWNvZGVkIHVzaW5nIHRoZSBkZWZhdWx0Ci0gICAgICBBU0NJSSBjaGFyc2V0LgotCi0KLSAgIC4uIG1ldGhvZDo6IHNldF9wYXlsb2FkKHBheWxvYWQsIGNoYXJzZXQ9Tm9uZSkKLQotICAgICAgU2V0IHRoZSBlbnRpcmUgbWVzc2FnZSBvYmplY3QncyBwYXlsb2FkIHRvICpwYXlsb2FkKi4gIEl0IGlzIHRoZSBjbGllbnQncwotICAgICAgcmVzcG9uc2liaWxpdHkgdG8gZW5zdXJlIHRoZSBwYXlsb2FkIGludmFyaWFudHMuICBPcHRpb25hbCAqY2hhcnNldCogc2V0cwotICAgICAgdGhlIG1lc3NhZ2UncyBkZWZhdWx0IGNoYXJhY3RlciBzZXQ7IHNlZSA6bWV0aDpgc2V0X2NoYXJzZXRgIGZvciBkZXRhaWxzLgotCi0gICAuLiBtZXRob2Q6OiBzZXRfY2hhcnNldChjaGFyc2V0KQotCi0gICAgICBTZXQgdGhlIGNoYXJhY3RlciBzZXQgb2YgdGhlIHBheWxvYWQgdG8gKmNoYXJzZXQqLCB3aGljaCBjYW4gZWl0aGVyIGJlIGEKLSAgICAgIDpjbGFzczpgfmVtYWlsLmNoYXJzZXQuQ2hhcnNldGAgaW5zdGFuY2UgKHNlZSA6bW9kOmBlbWFpbC5jaGFyc2V0YCksIGEKLSAgICAgIHN0cmluZyBuYW1pbmcgYSBjaGFyYWN0ZXIgc2V0LCBvciBgYE5vbmVgYC4gIElmIGl0IGlzIGEgc3RyaW5nLCBpdCB3aWxsCi0gICAgICBiZSBjb252ZXJ0ZWQgdG8gYSA6Y2xhc3M6YH5lbWFpbC5jaGFyc2V0LkNoYXJzZXRgIGluc3RhbmNlLiAgSWYgKmNoYXJzZXQqCi0gICAgICBpcyBgYE5vbmVgYCwgdGhlIGBgY2hhcnNldGBgIHBhcmFtZXRlciB3aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUKLSAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciAodGhlIG1lc3NhZ2Ugd2lsbCBub3QgYmUgb3RoZXJ3aXNlCi0gICAgICBtb2RpZmllZCkuICBBbnl0aGluZyBlbHNlIHdpbGwgZ2VuZXJhdGUgYSA6ZXhjOmBUeXBlRXJyb3JgLgotCi0gICAgICBJZiB0aGVyZSBpcyBubyBleGlzdGluZyA6bWFpbGhlYWRlcjpgTUlNRS1WZXJzaW9uYCBoZWFkZXIgb25lIHdpbGwgYmUKLSAgICAgIGFkZGVkLiAgSWYgdGhlcmUgaXMgbm8gZXhpc3RpbmcgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLCBvbmUKLSAgICAgIHdpbGwgYmUgYWRkZWQgd2l0aCBhIHZhbHVlIG9mIDptaW1ldHlwZTpgdGV4dC9wbGFpbmAuICBXaGV0aGVyIHRoZQotICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGFscmVhZHkgZXhpc3RzIG9yIG5vdCwgaXRzIGBgY2hhcnNldGBgCi0gICAgICBwYXJhbWV0ZXIgd2lsbCBiZSBzZXQgdG8gKmNoYXJzZXQub3V0cHV0X2NoYXJzZXQqLiAgIElmCi0gICAgICAqY2hhcnNldC5pbnB1dF9jaGFyc2V0KiBhbmQgKmNoYXJzZXQub3V0cHV0X2NoYXJzZXQqIGRpZmZlciwgdGhlIHBheWxvYWQKLSAgICAgIHdpbGwgYmUgcmUtZW5jb2RlZCB0byB0aGUgKm91dHB1dF9jaGFyc2V0Ki4gIElmIHRoZXJlIGlzIG5vIGV4aXN0aW5nCi0gICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyLCB0aGVuIHRoZSBwYXlsb2FkIHdpbGwgYmUKLSAgICAgIHRyYW5zZmVyLWVuY29kZWQsIGlmIG5lZWRlZCwgdXNpbmcgdGhlIHNwZWNpZmllZAotICAgICAgOmNsYXNzOmB+ZW1haWwuY2hhcnNldC5DaGFyc2V0YCwgYW5kIGEgaGVhZGVyIHdpdGggdGhlIGFwcHJvcHJpYXRlIHZhbHVlCi0gICAgICB3aWxsIGJlIGFkZGVkLiAgSWYgYSA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyCi0gICAgICBhbHJlYWR5IGV4aXN0cywgdGhlIHBheWxvYWQgaXMgYXNzdW1lZCB0byBhbHJlYWR5IGJlIGNvcnJlY3RseSBlbmNvZGVkCi0gICAgICB1c2luZyB0aGF0IDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYCBhbmQgaXMgbm90IG1vZGlmaWVkLgotCi0gICAuLiBtZXRob2Q6OiBnZXRfY2hhcnNldCgpCi0KLSAgICAgIFJldHVybiB0aGUgOmNsYXNzOmB+ZW1haWwuY2hhcnNldC5DaGFyc2V0YCBpbnN0YW5jZSBhc3NvY2lhdGVkIHdpdGggdGhlCi0gICAgICBtZXNzYWdlJ3MgcGF5bG9hZC4KLQotICAgVGhlIGZvbGxvd2luZyBtZXRob2RzIGltcGxlbWVudCBhIG1hcHBpbmctbGlrZSBpbnRlcmZhY2UgZm9yIGFjY2Vzc2luZyB0aGUKLSAgIG1lc3NhZ2UncyA6cmZjOmAyODIyYCBoZWFkZXJzLiAgTm90ZSB0aGF0IHRoZXJlIGFyZSBzb21lIHNlbWFudGljIGRpZmZlcmVuY2VzCisgICBUaGUgZm9sbG93aW5nIG1ldGhvZHMgaW1wbGVtZW50IHRoZSBtYXBwaW5nLWxpa2UgaW50ZXJmYWNlIGZvciBhY2Nlc3NpbmcgdGhlCisgICBtZXNzYWdlJ3MgaGVhZGVycy4gIE5vdGUgdGhhdCB0aGVyZSBhcmUgc29tZSBzZW1hbnRpYyBkaWZmZXJlbmNlcwogICAgYmV0d2VlbiB0aGVzZSBtZXRob2RzIGFuZCBhIG5vcm1hbCBtYXBwaW5nIChpLmUuIGRpY3Rpb25hcnkpIGludGVyZmFjZS4gIEZvcgogICAgZXhhbXBsZSwgaW4gYSBkaWN0aW9uYXJ5IHRoZXJlIGFyZSBubyBkdXBsaWNhdGUga2V5cywgYnV0IGhlcmUgdGhlcmUgbWF5IGJlCiAgICBkdXBsaWNhdGUgbWVzc2FnZSBoZWFkZXJzLiAgQWxzbywgaW4gZGljdGlvbmFyaWVzIHRoZXJlIGlzIG5vIGd1YXJhbnRlZWQKLSAgIG9yZGVyIHRvIHRoZSBrZXlzIHJldHVybmVkIGJ5IDptZXRoOmBrZXlzYCwgYnV0IGluIGEgOmNsYXNzOmBNZXNzYWdlYCBvYmplY3QsCi0gICBoZWFkZXJzIGFyZSBhbHdheXMgcmV0dXJuZWQgaW4gdGhlIG9yZGVyIHRoZXkgYXBwZWFyZWQgaW4gdGhlIG9yaWdpbmFsCi0gICBtZXNzYWdlLCBvciB3ZXJlIGFkZGVkIHRvIHRoZSBtZXNzYWdlIGxhdGVyLiAgQW55IGhlYWRlciBkZWxldGVkIGFuZCB0aGVuCi0gICByZS1hZGRlZCBhcmUgYWx3YXlzIGFwcGVuZGVkIHRvIHRoZSBlbmQgb2YgdGhlIGhlYWRlciBsaXN0LgorICAgb3JkZXIgdG8gdGhlIGtleXMgcmV0dXJuZWQgYnkgOm1ldGg6YGtleXNgLCBidXQgaW4gYW4gOmNsYXNzOmBFbWFpbE1lc3NhZ2VgCisgICBvYmplY3QsIGhlYWRlcnMgYXJlIGFsd2F5cyByZXR1cm5lZCBpbiB0aGUgb3JkZXIgdGhleSBhcHBlYXJlZCBpbiB0aGUKKyAgIG9yaWdpbmFsIG1lc3NhZ2UsIG9yIGluIHdoaWNoIHRoZXkgd2VyZSBhZGRlZCB0byB0aGUgbWVzc2FnZSBsYXRlci4gIEFueQorICAgaGVhZGVyIGRlbGV0ZWQgYW5kIHRoZW4gcmUtYWRkZWQgaXMgYWx3YXlzIGFwcGVuZGVkIHRvIHRoZSBlbmQgb2YgdGhlCisgICBoZWFkZXIgbGlzdC4KIAotICAgVGhlc2Ugc2VtYW50aWMgZGlmZmVyZW5jZXMgYXJlIGludGVudGlvbmFsIGFuZCBhcmUgYmlhc2VkIHRvd2FyZCBtYXhpbWFsCi0gICBjb252ZW5pZW5jZS4KKyAgIFRoZXNlIHNlbWFudGljIGRpZmZlcmVuY2VzIGFyZSBpbnRlbnRpb25hbCBhbmQgYXJlIGJpYXNlZCB0b3dhcmQKKyAgIGNvbnZlbmllbmNlIGluIHRoZSBtb3N0IGNvbW1vbiB1c2UgY2FzZXMuCiAKICAgIE5vdGUgdGhhdCBpbiBhbGwgY2FzZXMsIGFueSBlbnZlbG9wZSBoZWFkZXIgcHJlc2VudCBpbiB0aGUgbWVzc2FnZSBpcyBub3QKICAgIGluY2x1ZGVkIGluIHRoZSBtYXBwaW5nIGludGVyZmFjZS4KIAotICAgSW4gYSBtb2RlbCBnZW5lcmF0ZWQgZnJvbSBieXRlcywgYW55IGhlYWRlciB2YWx1ZXMgdGhhdCAoaW4gY29udHJhdmVudGlvbiBvZgotICAgdGhlIFJGQ3MpIGNvbnRhaW4gbm9uLUFTQ0lJIGJ5dGVzIHdpbGwsIHdoZW4gcmV0cmlldmVkIHRocm91Z2ggdGhpcwotICAgaW50ZXJmYWNlLCBiZSByZXByZXNlbnRlZCBhcyA6Y2xhc3M6YH5lbWFpbC5oZWFkZXIuSGVhZGVyYCBvYmplY3RzIHdpdGgKLSAgIGEgY2hhcnNldCBvZiBgdW5rbm93bi04Yml0YC4KLQogCiAgICAuLiBtZXRob2Q6OiBfX2xlbl9fKCkKIApAQCAtMjY0LDggKzE3OSw4IEBACiAgICAuLiBtZXRob2Q6OiBfX2NvbnRhaW5zX18obmFtZSkKIAogICAgICAgUmV0dXJuIHRydWUgaWYgdGhlIG1lc3NhZ2Ugb2JqZWN0IGhhcyBhIGZpZWxkIG5hbWVkICpuYW1lKi4gTWF0Y2hpbmcgaXMKLSAgICAgIGRvbmUgY2FzZS1pbnNlbnNpdGl2ZWx5IGFuZCAqbmFtZSogc2hvdWxkIG5vdCBpbmNsdWRlIHRoZSB0cmFpbGluZyBjb2xvbi4KLSAgICAgIFVzZWQgZm9yIHRoZSBgYGluYGAgb3BlcmF0b3IsIGUuZy46OgorICAgICAgZG9uZSB3aXRob3V0IHJlZ2FyZCB0byBjYXNlIGFuZCAqbmFtZSogZG9lcyBub3QgaW5jbHVkZSB0aGUgdHJhaWxpbmcKKyAgICAgIGNvbG9uLiAgVXNlZCBmb3IgdGhlIGBgaW5gYCBvcGVyYXRvci4gIEZvciBleGFtcGxlOjoKIAogICAgICAgICAgICBpZiAnbWVzc2FnZS1pZCcgaW4gbXlNZXNzYWdlOgogICAgICAgICAgICAgICBwcmludCgnTWVzc2FnZS1JRDonLCBteU1lc3NhZ2VbJ21lc3NhZ2UtaWQnXSkKQEAgLTI3MywyMCArMTg4LDIzIEBACiAKICAgIC4uIG1ldGhvZDo6IF9fZ2V0aXRlbV9fKG5hbWUpCiAKLSAgICAgIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIG5hbWVkIGhlYWRlciBmaWVsZC4gICpuYW1lKiBzaG91bGQgbm90IGluY2x1ZGUgdGhlCisgICAgICBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBuYW1lZCBoZWFkZXIgZmllbGQuICAqbmFtZSogZG9lcyBub3QgaW5jbHVkZSB0aGUKICAgICAgIGNvbG9uIGZpZWxkIHNlcGFyYXRvci4gIElmIHRoZSBoZWFkZXIgaXMgbWlzc2luZywgYGBOb25lYGAgaXMgcmV0dXJuZWQ7IGEKICAgICAgIDpleGM6YEtleUVycm9yYCBpcyBuZXZlciByYWlzZWQuCiAKICAgICAgIE5vdGUgdGhhdCBpZiB0aGUgbmFtZWQgZmllbGQgYXBwZWFycyBtb3JlIHRoYW4gb25jZSBpbiB0aGUgbWVzc2FnZSdzCiAgICAgICBoZWFkZXJzLCBleGFjdGx5IHdoaWNoIG9mIHRob3NlIGZpZWxkIHZhbHVlcyB3aWxsIGJlIHJldHVybmVkIGlzCiAgICAgICB1bmRlZmluZWQuICBVc2UgdGhlIDptZXRoOmBnZXRfYWxsYCBtZXRob2QgdG8gZ2V0IHRoZSB2YWx1ZXMgb2YgYWxsIHRoZQotICAgICAgZXh0YW50IG5hbWVkIGhlYWRlcnMuCisgICAgICBleHRhbnQgaGVhZGVycyBuYW1lZCAqbmFtZSouCisKKyAgICAgIFVzaW5nIHRoZSBzdGFuZGFyZCAobm9uLWBgY29tcGF0MzJgYCkgcG9saWNpZXMsIHRoZSByZXR1cm5lZCB2YWx1ZSBpcyBhbgorICAgICAgaW5zdGFuY2Ugb2YgYSBzdWJjbGFzcyBvZiA6Y2xhc3M6YGVtYWlsLmhlYWRlcnJlZ2lzdHJ5LkJhc2VIZWFkZXJgLgogCiAKICAgIC4uIG1ldGhvZDo6IF9fc2V0aXRlbV9fKG5hbWUsIHZhbCkKIAogICAgICAgQWRkIGEgaGVhZGVyIHRvIHRoZSBtZXNzYWdlIHdpdGggZmllbGQgbmFtZSAqbmFtZSogYW5kIHZhbHVlICp2YWwqLiAgVGhlCi0gICAgICBmaWVsZCBpcyBhcHBlbmRlZCB0byB0aGUgZW5kIG9mIHRoZSBtZXNzYWdlJ3MgZXhpc3RpbmcgZmllbGRzLgorICAgICAgZmllbGQgaXMgYXBwZW5kZWQgdG8gdGhlIGVuZCBvZiB0aGUgbWVzc2FnZSdzIGV4aXN0aW5nIGhlYWRlcnMuCiAKICAgICAgIE5vdGUgdGhhdCB0aGlzIGRvZXMgKm5vdCogb3ZlcndyaXRlIG9yIGRlbGV0ZSBhbnkgZXhpc3RpbmcgaGVhZGVyIHdpdGggdGhlIHNhbWUKICAgICAgIG5hbWUuICBJZiB5b3Ugd2FudCB0byBlbnN1cmUgdGhhdCB0aGUgbmV3IGhlYWRlciBpcyB0aGUgb25seSBvbmUgcHJlc2VudCBpbiB0aGUKQEAgLTI5NSw2ICsyMTMsMTMgQEAKICAgICAgICAgIGRlbCBtc2dbJ3N1YmplY3QnXQogICAgICAgICAgbXNnWydzdWJqZWN0J10gPSAnUHl0aG9uIHJvb2x6IScKIAorICAgICAgSWYgdGhlIDptb2Q6YHBvbGljeWAgZGVmaW5lcyBjZXJ0YWluIGhhZGVycyB0byBiZSB1bmlxdWUgKGFzIHRoZSBzdGFuZGFyZAorICAgICAgcG9saWNpZXMgZG8pLCB0aGlzIG1ldGhvZCBtYXkgcmFpc2UgYSA6ZXhjOmBWYWx1ZUVycm9yYCB3aGVuIGFuIGF0dGVtcHQKKyAgICAgIGlzIG1hZGUgdG8gYXNzaWduIGEgdmFsdWUgdG8gc3VjaCBhIGhlYWRlciB3aGVuIG9uZSBhbHJlYWR5IGV4aXN0cy4gIFRoaXMKKyAgICAgIGJlaGF2aW9yIGlzIGludGVudGlvbmFsIGZvciBjb25zaXN0ZW5jeSdzIHNha2UsIGJ1dCBkbyBub3QgZGVwZW5kIG9uIGl0CisgICAgICBhcyB3ZSBtYXkgY2hvb3NlIHRvIG1ha2Ugc3VjaCBhc3NpZ25tZW50cyBkbyBhbiBhdXRvbWF0aWMgZGVsZXRpb24gb2YgdGhlCisgICAgICBleGlzdGluZyBoZWFkZXIgaW4gdGhlIGZ1dHVyZS4KKwogCiAgICAuLiBtZXRob2Q6OiBfX2RlbGl0ZW1fXyhuYW1lKQogCkBAIC0zMjMsOSArMjQ4LDEwIEBACiAKICAgICAgIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIG5hbWVkIGhlYWRlciBmaWVsZC4gIFRoaXMgaXMgaWRlbnRpY2FsIHRvCiAgICAgICA6bWV0aDpgX19nZXRpdGVtX19gIGV4Y2VwdCB0aGF0IG9wdGlvbmFsICpmYWlsb2JqKiBpcyByZXR1cm5lZCBpZiB0aGUKLSAgICAgIG5hbWVkIGhlYWRlciBpcyBtaXNzaW5nIChkZWZhdWx0cyB0byBgYE5vbmVgYCkuCisgICAgICBuYW1lZCBoZWFkZXIgaXMgbWlzc2luZyAoKmZhaWxvYmoqIGRlZmF1bHRzIHRvIGBgTm9uZWBgKS4KIAotICAgSGVyZSBhcmUgc29tZSBhZGRpdGlvbmFsIHVzZWZ1bCBtZXRob2RzOgorCisgICBIZXJlIGFyZSBzb21lIGFkZGl0aW9uYWwgdXNlZnVsIGhlYWRlciByZWxhdGVkIG1ldGhvZHM6CiAKIAogICAgLi4gbWV0aG9kOjogZ2V0X2FsbChuYW1lLCBmYWlsb2JqPU5vbmUpCkBAIC0zNDYsMTcgKzI3MiwxOSBAQAogICAgICAgdGFrZW4gYXMgdGhlIHBhcmFtZXRlciBuYW1lLCB3aXRoIHVuZGVyc2NvcmVzIGNvbnZlcnRlZCB0byBkYXNoZXMgKHNpbmNlCiAgICAgICBkYXNoZXMgYXJlIGlsbGVnYWwgaW4gUHl0aG9uIGlkZW50aWZpZXJzKS4gIE5vcm1hbGx5LCB0aGUgcGFyYW1ldGVyIHdpbGwKICAgICAgIGJlIGFkZGVkIGFzIGBga2V5PSJ2YWx1ZSJgYCB1bmxlc3MgdGhlIHZhbHVlIGlzIGBgTm9uZWBgLCBpbiB3aGljaCBjYXNlCi0gICAgICBvbmx5IHRoZSBrZXkgd2lsbCBiZSBhZGRlZC4gIElmIHRoZSB2YWx1ZSBjb250YWlucyBub24tQVNDSUkgY2hhcmFjdGVycywKLSAgICAgIGl0IGNhbiBiZSBzcGVjaWZpZWQgYXMgYSB0aHJlZSB0dXBsZSBpbiB0aGUgZm9ybWF0Ci0gICAgICBgYChDSEFSU0VULCBMQU5HVUFHRSwgVkFMVUUpYGAsIHdoZXJlIGBgQ0hBUlNFVGBgIGlzIGEgc3RyaW5nIG5hbWluZyB0aGUKLSAgICAgIGNoYXJzZXQgdG8gYmUgdXNlZCB0byBlbmNvZGUgdGhlIHZhbHVlLCBgYExBTkdVQUdFYGAgY2FuIHVzdWFsbHkgYmUgc2V0Ci0gICAgICB0byBgYE5vbmVgYCBvciB0aGUgZW1wdHkgc3RyaW5nIChzZWUgOnJmYzpgMjIzMWAgZm9yIG90aGVyIHBvc3NpYmlsaXRpZXMpLAotICAgICAgYW5kIGBgVkFMVUVgYCBpcyB0aGUgc3RyaW5nIHZhbHVlIGNvbnRhaW5pbmcgbm9uLUFTQ0lJIGNvZGUgcG9pbnRzLiAgSWYKLSAgICAgIGEgdGhyZWUgdHVwbGUgaXMgbm90IHBhc3NlZCBhbmQgdGhlIHZhbHVlIGNvbnRhaW5zIG5vbi1BU0NJSSBjaGFyYWN0ZXJzLAotICAgICAgaXQgaXMgYXV0b21hdGljYWxseSBlbmNvZGVkIGluIDpyZmM6YDIyMzFgIGZvcm1hdCB1c2luZyBhIGBgQ0hBUlNFVGBgCi0gICAgICBvZiBgYHV0Zi04YGAgYW5kIGEgYGBMQU5HVUFHRWBgIG9mIGBgTm9uZWBgLgorICAgICAgb25seSB0aGUga2V5IHdpbGwgYmUgYWRkZWQuCiAKLSAgICAgIEhlcmUncyBhbiBleGFtcGxlOjoKKyAgICAgIElmIHRoZSB2YWx1ZSBjb250YWlucyBub24tQVNDSUkgY2hhcmFjdGVycywgdGhlIGNoYXJzZXQgYW5kIGxhbmd1YWdlIG1heQorICAgICAgYmUgZXhwbGljaXRseSBjb250cm9sbGVkIGJ5IHNwZWNpZnlpbmcgdGhlIHZhbHVlIGFzIGEgdGhyZWUgdHVwbGUgaW4gdGhlCisgICAgICBmb3JtYXQgYGAoQ0hBUlNFVCwgTEFOR1VBR0UsIFZBTFVFKWBgLCB3aGVyZSBgYENIQVJTRVRgYCBpcyBhIHN0cmluZworICAgICAgbmFtaW5nIHRoZSBjaGFyc2V0IHRvIGJlIHVzZWQgdG8gZW5jb2RlIHRoZSB2YWx1ZSwgYGBMQU5HVUFHRWBgIGNhbgorICAgICAgdXN1YWxseSBiZSBzZXQgdG8gYGBOb25lYGAgb3IgdGhlIGVtcHR5IHN0cmluZyAoc2VlIDpyZmM6YDIyMzFgIGZvciBvdGhlcgorICAgICAgcG9zc2liaWxpdGllcyksIGFuZCBgYFZBTFVFYGAgaXMgdGhlIHN0cmluZyB2YWx1ZSBjb250YWluaW5nIG5vbi1BU0NJSQorICAgICAgY29kZSBwb2ludHMuICBJZiBhIHRocmVlIHR1cGxlIGlzIG5vdCBwYXNzZWQgYW5kIHRoZSB2YWx1ZSBjb250YWlucworICAgICAgbm9uLUFTQ0lJIGNoYXJhY3RlcnMsIGl0IGlzIGF1dG9tYXRpY2FsbHkgZW5jb2RlZCBpbiA6cmZjOmAyMjMxYCBmb3JtYXQKKyAgICAgIHVzaW5nIGEgYGBDSEFSU0VUYGAgb2YgYGB1dGYtOGBgIGFuZCBhIGBgTEFOR1VBR0VgYCBvZiBgYE5vbmVgYC4KKworICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOjoKIAogICAgICAgICAgbXNnLmFkZF9oZWFkZXIoJ0NvbnRlbnQtRGlzcG9zaXRpb24nLCAnYXR0YWNobWVudCcsIGZpbGVuYW1lPSdidWQuZ2lmJykKIApAQCAtMzY0LDM3ICsyOTIsMzUgQEAKIAogICAgICAgICAgQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9ImJ1ZC5naWYiCiAKLSAgICAgIEFuIGV4YW1wbGUgd2l0aCBub24tQVNDSUkgY2hhcmFjdGVyczo6CisgICAgICBBbiBleGFtcGxlIG9mIHRoZSBleHRlbmRlZCBpbnRlcmZhY2Ugd2l0aCBub24tQVNDSUkgY2hhcmFjdGVyczo6CiAKICAgICAgICAgIG1zZy5hZGRfaGVhZGVyKCdDb250ZW50LURpc3Bvc2l0aW9uJywgJ2F0dGFjaG1lbnQnLAogICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWU9KCdpc28tODg1OS0xJywgJycsICdGdcOfYmFsbGVyLnBwdCcpKQogCi0gICAgICBXaGljaCBwcm9kdWNlcyA6OgotCi0gICAgICAgICBDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZSo9Imlzby04ODU5LTEnJ0Z1JURGYmFsbGVyLnBwdCIKLQogCiAgICAuLiBtZXRob2Q6OiByZXBsYWNlX2hlYWRlcihfbmFtZSwgX3ZhbHVlKQogCiAgICAgICBSZXBsYWNlIGEgaGVhZGVyLiAgUmVwbGFjZSB0aGUgZmlyc3QgaGVhZGVyIGZvdW5kIGluIHRoZSBtZXNzYWdlIHRoYXQKLSAgICAgIG1hdGNoZXMgKl9uYW1lKiwgcmV0YWluaW5nIGhlYWRlciBvcmRlciBhbmQgZmllbGQgbmFtZSBjYXNlLiAgSWYgbm8KLSAgICAgIG1hdGNoaW5nIGhlYWRlciB3YXMgZm91bmQsIGEgOmV4YzpgS2V5RXJyb3JgIGlzIHJhaXNlZC4KKyAgICAgIG1hdGNoZXMgKl9uYW1lKiwgcmV0YWluaW5nIGhlYWRlciBvcmRlciBhbmQgZmllbGQgbmFtZSBjYXNlIG9mIHRoZQorICAgICAgb3JpZ2luYWwgaGVhZGVyLiAgSWYgbm8gbWF0Y2hpbmcgaGVhZGVyIGlzIGZvdW5kLCByYWlzZSBhCisgICAgICA6ZXhjOmBLZXlFcnJvcmAuCiAKIAogICAgLi4gbWV0aG9kOjogZ2V0X2NvbnRlbnRfdHlwZSgpCiAKLSAgICAgIFJldHVybiB0aGUgbWVzc2FnZSdzIGNvbnRlbnQgdHlwZS4gIFRoZSByZXR1cm5lZCBzdHJpbmcgaXMgY29lcmNlZCB0bwotICAgICAgbG93ZXIgY2FzZSBvZiB0aGUgZm9ybSA6bWltZXR5cGU6YG1haW50eXBlL3N1YnR5cGVgLiAgSWYgdGhlcmUgd2FzIG5vCi0gICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgaW4gdGhlIG1lc3NhZ2UgdGhlIGRlZmF1bHQgdHlwZSBhcyBnaXZlbgotICAgICAgYnkgOm1ldGg6YGdldF9kZWZhdWx0X3R5cGVgIHdpbGwgYmUgcmV0dXJuZWQuICBTaW5jZSBhY2NvcmRpbmcgdG8KLSAgICAgIDpyZmM6YDIwNDVgLCBtZXNzYWdlcyBhbHdheXMgaGF2ZSBhIGRlZmF1bHQgdHlwZSwgOm1ldGg6YGdldF9jb250ZW50X3R5cGVgCi0gICAgICB3aWxsIGFsd2F5cyByZXR1cm4gYSB2YWx1ZS4KKyAgICAgIFJldHVybiB0aGUgbWVzc2FnZSdzIGNvbnRlbnQgdHlwZSwgY29lcmNlZCB0byBsb3dlciBjYXNlIG9mIHRoZSBmb3JtCisgICAgICA6bWltZXR5cGU6YG1haW50eXBlL3N1YnR5cGVgLiAgSWYgdGhlcmUgaXMgbm8gOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAKKyAgICAgIGhlYWRlciBpbiB0aGUgbWVzc2FnZSByZXR1cm4gdGhlIHZhbHVlIHJldHVybmVkIGJ5CisgICAgICA6bWV0aDpgZ2V0X2RlZmF1bHRfdHlwZWAuICBJZiB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGlzCisgICAgICBpbnZhbGlkLCByZXR1cm4gYGB0ZXh0L3BsYWluYGAuCiAKLSAgICAgIDpyZmM6YDIwNDVgIGRlZmluZXMgYSBtZXNzYWdlJ3MgZGVmYXVsdCB0eXBlIHRvIGJlIDptaW1ldHlwZTpgdGV4dC9wbGFpbmAKLSAgICAgIHVubGVzcyBpdCBhcHBlYXJzIGluc2lkZSBhIDptaW1ldHlwZTpgbXVsdGlwYXJ0L2RpZ2VzdGAgY29udGFpbmVyLCBpbgotICAgICAgd2hpY2ggY2FzZSBpdCB3b3VsZCBiZSA6bWltZXR5cGU6YG1lc3NhZ2UvcmZjODIyYC4gIElmIHRoZQotICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGhhcyBhbiBpbnZhbGlkIHR5cGUgc3BlY2lmaWNhdGlvbiwKLSAgICAgIDpyZmM6YDIwNDVgIG1hbmRhdGVzIHRoYXQgdGhlIGRlZmF1bHQgdHlwZSBiZSA6bWltZXR5cGU6YHRleHQvcGxhaW5gLgorICAgICAgKEFjY29yZGluZyB0byA6cmZjOmAyMDQ1YCwgbWVzc2FnZXMgYWx3YXlzIGhhdmUgYSBkZWZhdWx0IHR5cGUsCisgICAgICA6bWV0aDpgZ2V0X2NvbnRlbnRfdHlwZWAgd2lsbCBhbHdheXMgcmV0dXJuIGEgdmFsdWUuICA6cmZjOmAyMDQ1YCBkZWZpbmVzCisgICAgICBhIG1lc3NhZ2UncyBkZWZhdWx0IHR5cGUgdG8gYmUgOm1pbWV0eXBlOmB0ZXh0L3BsYWluYCB1bmxlc3MgaXQgYXBwZWFycworICAgICAgaW5zaWRlIGEgOm1pbWV0eXBlOmBtdWx0aXBhcnQvZGlnZXN0YCBjb250YWluZXIsIGluIHdoaWNoIGNhc2UgaXQgd291bGQKKyAgICAgIGJlIDptaW1ldHlwZTpgbWVzc2FnZS9yZmM4MjJgLiAgSWYgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlcgorICAgICAgaGFzIGFuIGludmFsaWQgdHlwZSBzcGVjaWZpY2F0aW9uLCA6cmZjOmAyMDQ1YCBtYW5kYXRlcyB0aGF0IHRoZSBkZWZhdWx0CisgICAgICB0eXBlIGJlIDptaW1ldHlwZTpgdGV4dC9wbGFpbmAuKQogCiAKICAgIC4uIG1ldGhvZDo6IGdldF9jb250ZW50X21haW50eXBlKCkKQEAgLTQyMCw4MSArMzQ2LDQxIEBACiAgICAuLiBtZXRob2Q6OiBzZXRfZGVmYXVsdF90eXBlKGN0eXBlKQogCiAgICAgICBTZXQgdGhlIGRlZmF1bHQgY29udGVudCB0eXBlLiAgKmN0eXBlKiBzaG91bGQgZWl0aGVyIGJlCi0gICAgICA6bWltZXR5cGU6YHRleHQvcGxhaW5gIG9yIDptaW1ldHlwZTpgbWVzc2FnZS9yZmM4MjJgLCBhbHRob3VnaCB0aGlzIGlzIG5vdAotICAgICAgZW5mb3JjZWQuICBUaGUgZGVmYXVsdCBjb250ZW50IHR5cGUgaXMgbm90IHN0b3JlZCBpbiB0aGUKLSAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlci4KLQotCi0gICAuLiBtZXRob2Q6OiBnZXRfcGFyYW1zKGZhaWxvYmo9Tm9uZSwgaGVhZGVyPSdjb250ZW50LXR5cGUnLCB1bnF1b3RlPVRydWUpCi0KLSAgICAgIFJldHVybiB0aGUgbWVzc2FnZSdzIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIHBhcmFtZXRlcnMsIGFzIGEgbGlzdC4KLSAgICAgIFRoZSBlbGVtZW50cyBvZiB0aGUgcmV0dXJuZWQgbGlzdCBhcmUgMi10dXBsZXMgb2Yga2V5L3ZhbHVlIHBhaXJzLCBhcwotICAgICAgc3BsaXQgb24gdGhlIGBgJz0nYGAgc2lnbi4gIFRoZSBsZWZ0IGhhbmQgc2lkZSBvZiB0aGUgYGAnPSdgYCBpcyB0aGUga2V5LAotICAgICAgd2hpbGUgdGhlIHJpZ2h0IGhhbmQgc2lkZSBpcyB0aGUgdmFsdWUuICBJZiB0aGVyZSBpcyBubyBgYCc9J2BgIHNpZ24gaW4KLSAgICAgIHRoZSBwYXJhbWV0ZXIgdGhlIHZhbHVlIGlzIHRoZSBlbXB0eSBzdHJpbmcsIG90aGVyd2lzZSB0aGUgdmFsdWUgaXMgYXMKLSAgICAgIGRlc2NyaWJlZCBpbiA6bWV0aDpgZ2V0X3BhcmFtYCBhbmQgaXMgdW5xdW90ZWQgaWYgb3B0aW9uYWwgKnVucXVvdGUqIGlzCi0gICAgICBgYFRydWVgYCAodGhlIGRlZmF1bHQpLgotCi0gICAgICBPcHRpb25hbCAqZmFpbG9iaiogaXMgdGhlIG9iamVjdCB0byByZXR1cm4gaWYgdGhlcmUgaXMgbm8KLSAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlci4gIE9wdGlvbmFsICpoZWFkZXIqIGlzIHRoZSBoZWFkZXIgdG8KLSAgICAgIHNlYXJjaCBpbnN0ZWFkIG9mIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgLgotCi0KLSAgIC4uIG1ldGhvZDo6IGdldF9wYXJhbShwYXJhbSwgZmFpbG9iaj1Ob25lLCBoZWFkZXI9J2NvbnRlbnQtdHlwZScsIHVucXVvdGU9VHJ1ZSkKLQotICAgICAgUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyJ3MgcGFyYW1ldGVyCi0gICAgICAqcGFyYW0qIGFzIGEgc3RyaW5nLiAgSWYgdGhlIG1lc3NhZ2UgaGFzIG5vIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgCi0gICAgICBoZWFkZXIgb3IgaWYgdGhlcmUgaXMgbm8gc3VjaCBwYXJhbWV0ZXIsIHRoZW4gKmZhaWxvYmoqIGlzIHJldHVybmVkCi0gICAgICAoZGVmYXVsdHMgdG8gYGBOb25lYGApLgotCi0gICAgICBPcHRpb25hbCAqaGVhZGVyKiBpZiBnaXZlbiwgc3BlY2lmaWVzIHRoZSBtZXNzYWdlIGhlYWRlciB0byB1c2UgaW5zdGVhZCBvZgotICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAuCi0KLSAgICAgIFBhcmFtZXRlciBrZXlzIGFyZSBhbHdheXMgY29tcGFyZWQgY2FzZSBpbnNlbnNpdGl2ZWx5LiAgVGhlIHJldHVybiB2YWx1ZQotICAgICAgY2FuIGVpdGhlciBiZSBhIHN0cmluZywgb3IgYSAzLXR1cGxlIGlmIHRoZSBwYXJhbWV0ZXIgd2FzIDpyZmM6YDIyMzFgCi0gICAgICBlbmNvZGVkLiAgV2hlbiBpdCdzIGEgMy10dXBsZSwgdGhlIGVsZW1lbnRzIG9mIHRoZSB2YWx1ZSBhcmUgb2YgdGhlIGZvcm0KLSAgICAgIGBgKENIQVJTRVQsIExBTkdVQUdFLCBWQUxVRSlgYC4gIE5vdGUgdGhhdCBib3RoIGBgQ0hBUlNFVGBgIGFuZAotICAgICAgYGBMQU5HVUFHRWBgIGNhbiBiZSBgYE5vbmVgYCwgaW4gd2hpY2ggY2FzZSB5b3Ugc2hvdWxkIGNvbnNpZGVyIGBgVkFMVUVgYAotICAgICAgdG8gYmUgZW5jb2RlZCBpbiB0aGUgYGB1cy1hc2NpaWBgIGNoYXJzZXQuICBZb3UgY2FuIHVzdWFsbHkgaWdub3JlCi0gICAgICBgYExBTkdVQUdFYGAuCi0KLSAgICAgIElmIHlvdXIgYXBwbGljYXRpb24gZG9lc24ndCBjYXJlIHdoZXRoZXIgdGhlIHBhcmFtZXRlciB3YXMgZW5jb2RlZCBhcyBpbgotICAgICAgOnJmYzpgMjIzMWAsIHlvdSBjYW4gY29sbGFwc2UgdGhlIHBhcmFtZXRlciB2YWx1ZSBieSBjYWxsaW5nCi0gICAgICA6ZnVuYzpgZW1haWwudXRpbHMuY29sbGFwc2VfcmZjMjIzMV92YWx1ZWAsIHBhc3NpbmcgaW4gdGhlIHJldHVybiB2YWx1ZQotICAgICAgZnJvbSA6bWV0aDpgZ2V0X3BhcmFtYC4gIFRoaXMgd2lsbCByZXR1cm4gYSBzdWl0YWJseSBkZWNvZGVkIFVuaWNvZGUKLSAgICAgIHN0cmluZyB3aGVuIHRoZSB2YWx1ZSBpcyBhIHR1cGxlLCBvciB0aGUgb3JpZ2luYWwgc3RyaW5nIHVucXVvdGVkIGlmIGl0Ci0gICAgICBpc24ndC4gIEZvciBleGFtcGxlOjoKLQotICAgICAgICAgcmF3cGFyYW0gPSBtc2cuZ2V0X3BhcmFtKCdmb28nKQotICAgICAgICAgcGFyYW0gPSBlbWFpbC51dGlscy5jb2xsYXBzZV9yZmMyMjMxX3ZhbHVlKHJhd3BhcmFtKQotCi0gICAgICBJbiBhbnkgY2FzZSwgdGhlIHBhcmFtZXRlciB2YWx1ZSAoZWl0aGVyIHRoZSByZXR1cm5lZCBzdHJpbmcsIG9yIHRoZQotICAgICAgYGBWQUxVRWBgIGl0ZW0gaW4gdGhlIDMtdHVwbGUpIGlzIGFsd2F5cyB1bnF1b3RlZCwgdW5sZXNzICp1bnF1b3RlKiBpcyBzZXQKLSAgICAgIHRvIGBgRmFsc2VgYC4KKyAgICAgIDptaW1ldHlwZTpgdGV4dC9wbGFpbmAgb3IgOm1pbWV0eXBlOmBtZXNzYWdlL3JmYzgyMmAsIGFsdGhvdWdoIHRoaXMgaXMKKyAgICAgIG5vdCBlbmZvcmNlZC4gIFRoZSBkZWZhdWx0IGNvbnRlbnQgdHlwZSBpcyBub3Qgc3RvcmVkIGluIHRoZQorICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLCBzbyBpdCBvbmx5IGFmZmVjdHMgdGhlIHJldHVybiB2YWx1ZSBvZgorICAgICAgdGhlIGBgZ2V0X2NvbnRlbnRfdHlwZWBgIG1ldGhvZHMgd2hlbiBubyA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYAorICAgICAgaGVhZGVyIGlzIHByZXNlbnQgaW4gdGhlIG1lc3NhZ2UuCiAKIAogICAgLi4gbWV0aG9kOjogc2V0X3BhcmFtKHBhcmFtLCB2YWx1ZSwgaGVhZGVyPSdDb250ZW50LVR5cGUnLCByZXF1b3RlPVRydWUsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyc2V0PU5vbmUsIGxhbmd1YWdlPScnLCByZXBsYWNlPUZhbHNlKQogCiAgICAgICBTZXQgYSBwYXJhbWV0ZXIgaW4gdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlci4gIElmIHRoZQotICAgICAgcGFyYW1ldGVyIGFscmVhZHkgZXhpc3RzIGluIHRoZSBoZWFkZXIsIGl0cyB2YWx1ZSB3aWxsIGJlIHJlcGxhY2VkIHdpdGgKLSAgICAgICp2YWx1ZSouICBJZiB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGFzIG5vdCB5ZXQgYmVlbiBkZWZpbmVkCi0gICAgICBmb3IgdGhpcyBtZXNzYWdlLCBpdCB3aWxsIGJlIHNldCB0byA6bWltZXR5cGU6YHRleHQvcGxhaW5gIGFuZCB0aGUgbmV3Ci0gICAgICBwYXJhbWV0ZXIgdmFsdWUgd2lsbCBiZSBhcHBlbmRlZCBhcyBwZXIgOnJmYzpgMjA0NWAuCisgICAgICBwYXJhbWV0ZXIgYWxyZWFkeSBleGlzdHMgaW4gdGhlIGhlYWRlciwgcmVwbGFjZSBpdHMgdmFsdWUgd2l0aCAqdmFsdWUqLgorICAgICAgV2hlbiAqaGVhZGVyKiBpcyBgYENvbnRlbnQtVHlwZWBgICh0aGUgZGVmYXVsdCkgYW5kIHRoZSBoZWFkZXIgZG9lcyBub3QKKyAgICAgIHlldCBleGlzdCBpbiB0aGUgbWVzc2FnZSwgYWRkIGl0LCBzZXQgaXRzIHZhbHVlIHRvCisgICAgICA6bWltZXR5cGU6YHRleHQvcGxhaW5gLCBhbmQgYXBwZW5kIHRoZSBuZXcgcGFyYW1ldGVyIHZhbHVlLiAgT3B0aW9uYWwKKyAgICAgICpoZWFkZXIqIHNwZWNpZmllcyBhbiBhbHRlcm5hdGl2ZSBoZWFkZXIgdG8gOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAuCiAKLSAgICAgIE9wdGlvbmFsICpoZWFkZXIqIHNwZWNpZmllcyBhbiBhbHRlcm5hdGl2ZSBoZWFkZXIgdG8KLSAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgLCBhbmQgYWxsIHBhcmFtZXRlcnMgd2lsbCBiZSBxdW90ZWQgYXMgbmVjZXNzYXJ5Ci0gICAgICB1bmxlc3Mgb3B0aW9uYWwgKnJlcXVvdGUqIGlzIGBgRmFsc2VgYCAodGhlIGRlZmF1bHQgaXMgYGBUcnVlYGApLgotCi0gICAgICBJZiBvcHRpb25hbCAqY2hhcnNldCogaXMgc3BlY2lmaWVkLCB0aGUgcGFyYW1ldGVyIHdpbGwgYmUgZW5jb2RlZAotICAgICAgYWNjb3JkaW5nIHRvIDpyZmM6YDIyMzFgLiBPcHRpb25hbCAqbGFuZ3VhZ2UqIHNwZWNpZmllcyB0aGUgUkZDIDIyMzEKLSAgICAgIGxhbmd1YWdlLCBkZWZhdWx0aW5nIHRvIHRoZSBlbXB0eSBzdHJpbmcuICBCb3RoICpjaGFyc2V0KiBhbmQgKmxhbmd1YWdlKgotICAgICAgc2hvdWxkIGJlIHN0cmluZ3MuCisgICAgICBJZiB0aGUgdmFsdWUgY29udGFpbnMgbm9uLUFTQ0lJIGNoYXJhY3RlcnMsIHRoZSBjaGFyc2V0IGFuZCBsYW5ndWFnZSBtYXkKKyAgICAgIGJlIGV4cGxpY2l0eSBzcGVjaWZpZWQgdXNpbmcgdGhlIG9wdGlvbmFsICpjaGFyc2V0KiBhbmQgKmxhbmd1YWdlKgorICAgICAgcGFyYW1ldGVycy4gIE9wdGlvbmFsICpsYW5ndWFnZSogc3BlY2lmaWVzIHRoZSA6cmZjOmAyMjMxYCBsYW5ndWFnZSwKKyAgICAgIGRlZmF1bHRpbmcgdG8gdGhlIGVtcHR5IHN0cmluZy4gIEJvdGggKmNoYXJzZXQqIGFuZCAqbGFuZ3VhZ2UqIHNob3VsZCBiZQorICAgICAgc3RyaW5ncy4gIFRoZSBkZWZhdWx0IGlzIHRvIHVzZSB0aGUgYGB1dGY4YGAgKmNoYXJzZXQqIGFuZCBgYE5vbmVgYCBmb3IKKyAgICAgIHRoZSAqbGFuZ3VhZ2UqLgogCiAgICAgICBJZiAqcmVwbGFjZSogaXMgYGBGYWxzZWBgICh0aGUgZGVmYXVsdCkgdGhlIGhlYWRlciBpcyBtb3ZlZCB0byB0aGUKICAgICAgIGVuZCBvZiB0aGUgbGlzdCBvZiBoZWFkZXJzLiAgSWYgKnJlcGxhY2UqIGlzIGBgVHJ1ZWBgLCB0aGUgaGVhZGVyCiAgICAgICB3aWxsIGJlIHVwZGF0ZWQgaW4gcGxhY2UuCiAKKyAgICAgIFVzZSBvZiB0aGUgKnJlcXVvdGUqIHBhcmFtZXRlciB3aXRoIDpjbGFzczpgRW1haWxNZXNzYWdlYCBvYmplY3RzIGlzCisgICAgICBkZXByZWNhdGVkLgorCisgICAgICBOb3RlIHRoYXQgZXhpc3RpbmcgcGFyYW1ldGVyIHZhbHVlcyBvZiBoZWFkZXJzIG1heSBiZSBhY2Nlc3NlZCB0aHJvdWdoCisgICAgICB0aGUgOmF0dHI6YH5lbWFpbC5oZWFkZXJyZWdpc3RyeS5CYXNlSGVhZGVyLnBhcmFtc2AgYXR0cmlidXRlIG9mIHRoZQorICAgICAgaGVhZGVyIHZhbHVlIChmb3IgZXhhbXBsZSwgYGBtc2dbJ0NvbnRlbnQtVHlwZSddLnBhcmFtc1snY2hhcnNldCddYGAuCisKICAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40IGBgcmVwbGFjZWBgIGtleXdvcmQgd2FzIGFkZGVkLgogCiAKQEAgLTUwMiwyNSArMzg4LDExIEBACiAKICAgICAgIFJlbW92ZSB0aGUgZ2l2ZW4gcGFyYW1ldGVyIGNvbXBsZXRlbHkgZnJvbSB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAKICAgICAgIGhlYWRlci4gIFRoZSBoZWFkZXIgd2lsbCBiZSByZS13cml0dGVuIGluIHBsYWNlIHdpdGhvdXQgdGhlIHBhcmFtZXRlciBvcgotICAgICAgaXRzIHZhbHVlLiAgQWxsIHZhbHVlcyB3aWxsIGJlIHF1b3RlZCBhcyBuZWNlc3NhcnkgdW5sZXNzICpyZXF1b3RlKiBpcwotICAgICAgYGBGYWxzZWBgICh0aGUgZGVmYXVsdCBpcyBgYFRydWVgYCkuICBPcHRpb25hbCAqaGVhZGVyKiBzcGVjaWZpZXMgYW4KLSAgICAgIGFsdGVybmF0aXZlIHRvIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgLgorICAgICAgaXRzIHZhbHVlLiAgT3B0aW9uYWwgKmhlYWRlciogc3BlY2lmaWVzIGFuIGFsdGVybmF0aXZlIHRvCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYC4KIAotCi0gICAuLiBtZXRob2Q6OiBzZXRfdHlwZSh0eXBlLCBoZWFkZXI9J0NvbnRlbnQtVHlwZScsIHJlcXVvdGU9VHJ1ZSkKLQotICAgICAgU2V0IHRoZSBtYWluIHR5cGUgYW5kIHN1YnR5cGUgZm9yIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYAotICAgICAgaGVhZGVyLiAqdHlwZSogbXVzdCBiZSBhIHN0cmluZyBpbiB0aGUgZm9ybSA6bWltZXR5cGU6YG1haW50eXBlL3N1YnR5cGVgLAotICAgICAgb3RoZXJ3aXNlIGEgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkLgotCi0gICAgICBUaGlzIG1ldGhvZCByZXBsYWNlcyB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLCBrZWVwaW5nIGFsbAotICAgICAgdGhlIHBhcmFtZXRlcnMgaW4gcGxhY2UuICBJZiAqcmVxdW90ZSogaXMgYGBGYWxzZWBgLCB0aGlzIGxlYXZlcyB0aGUKLSAgICAgIGV4aXN0aW5nIGhlYWRlcidzIHF1b3RpbmcgYXMgaXMsIG90aGVyd2lzZSB0aGUgcGFyYW1ldGVycyB3aWxsIGJlIHF1b3RlZAotICAgICAgKHRoZSBkZWZhdWx0KS4KLQotICAgICAgQW4gYWx0ZXJuYXRpdmUgaGVhZGVyIGNhbiBiZSBzcGVjaWZpZWQgaW4gdGhlICpoZWFkZXIqIGFyZ3VtZW50LiBXaGVuIHRoZQotICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGlzIHNldCBhIDptYWlsaGVhZGVyOmBNSU1FLVZlcnNpb25gCi0gICAgICBoZWFkZXIgaXMgYWxzbyBhZGRlZC4KKyAgICAgIFVzZSBvZiB0aGUgKnJlcXVvdGUqIHBhcmFtZXRlciB3aXRoIDpjbGFzczpgRW1haWxNZXNzYWdlYCBvYmplY3RzIGlzCisgICAgICBkZXByZWNhdGVkLgogCiAKICAgIC4uIG1ldGhvZDo6IGdldF9maWxlbmFtZShmYWlsb2JqPU5vbmUpCkBAIC01NDksMTIgKzQyMSwxMSBAQAogICAgICAgbmVjZXNzYXJ5LiAgQSA6ZXhjOmB+ZW1haWwuZXJyb3JzLkhlYWRlclBhcnNlRXJyb3JgIGlzIHJhaXNlZCBpZiB0aGUKICAgICAgIG1lc3NhZ2Ugb2JqZWN0IGhhcyBubyA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIuCiAKLSAgICAgIE5vdGUgdGhhdCB1c2luZyB0aGlzIG1ldGhvZCBpcyBzdWJ0bHkgZGlmZmVyZW50IHRoYW4gZGVsZXRpbmcgdGhlIG9sZAorICAgICAgTm90ZSB0aGF0IHVzaW5nIHRoaXMgbWV0aG9kIGlzIHN1YnRseSBkaWZmZXJlbnQgZnJvbSBkZWxldGluZyB0aGUgb2xkCiAgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgYW5kIGFkZGluZyBhIG5ldyBvbmUgd2l0aCB0aGUgbmV3CiAgICAgICBib3VuZGFyeSB2aWEgOm1ldGg6YGFkZF9oZWFkZXJgLCBiZWNhdXNlIDptZXRoOmBzZXRfYm91bmRhcnlgIHByZXNlcnZlcwogICAgICAgdGhlIG9yZGVyIG9mIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgaW4gdGhlIGxpc3Qgb2YKLSAgICAgIGhlYWRlcnMuIEhvd2V2ZXIsIGl0IGRvZXMgKm5vdCogcHJlc2VydmUgYW55IGNvbnRpbnVhdGlvbiBsaW5lcyB3aGljaCBtYXkKLSAgICAgIGhhdmUgYmVlbiBwcmVzZW50IGluIHRoZSBvcmlnaW5hbCA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIuCisgICAgICBoZWFkZXJzLgogCiAKICAgIC4uIG1ldGhvZDo6IGdldF9jb250ZW50X2NoYXJzZXQoZmFpbG9iaj1Ob25lKQpAQCAtNTYzLDkgKzQzNCw2IEBACiAgICAgICBjb2VyY2VkIHRvIGxvd2VyIGNhc2UuICBJZiB0aGVyZSBpcyBubyA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIsIG9yIGlmCiAgICAgICB0aGF0IGhlYWRlciBoYXMgbm8gYGBjaGFyc2V0YGAgcGFyYW1ldGVyLCAqZmFpbG9iaiogaXMgcmV0dXJuZWQuCiAKLSAgICAgIE5vdGUgdGhhdCB0aGlzIG1ldGhvZCBkaWZmZXJzIGZyb20gOm1ldGg6YGdldF9jaGFyc2V0YCB3aGljaCByZXR1cm5zIHRoZQotICAgICAgOmNsYXNzOmB+ZW1haWwuY2hhcnNldC5DaGFyc2V0YCBpbnN0YW5jZSBmb3IgdGhlIGRlZmF1bHQgZW5jb2Rpbmcgb2YgdGhlIG1lc3NhZ2UgYm9keS4KLQogCiAgICAuLiBtZXRob2Q6OiBnZXRfY2hhcnNldHMoZmFpbG9iaj1Ob25lKQogCkBAIC01NzUsMTAgKzQ0MywxOSBAQAogCiAgICAgICBFYWNoIGl0ZW0gaW4gdGhlIGxpc3Qgd2lsbCBiZSBhIHN0cmluZyB3aGljaCBpcyB0aGUgdmFsdWUgb2YgdGhlCiAgICAgICBgYGNoYXJzZXRgYCBwYXJhbWV0ZXIgaW4gdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciBmb3IgdGhlCi0gICAgICByZXByZXNlbnRlZCBzdWJwYXJ0LiAgSG93ZXZlciwgaWYgdGhlIHN1YnBhcnQgaGFzIG5vCi0gICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIsIG5vIGBgY2hhcnNldGBgIHBhcmFtZXRlciwgb3IgaXMgbm90IG9mCi0gICAgICB0aGUgOm1pbWV0eXBlOmB0ZXh0YCBtYWluIE1JTUUgdHlwZSwgdGhlbiB0aGF0IGl0ZW0gaW4gdGhlIHJldHVybmVkIGxpc3QKLSAgICAgIHdpbGwgYmUgKmZhaWxvYmoqLgorICAgICAgcmVwcmVzZW50ZWQgc3VicGFydC4gIElmIHRoZSBzdWJwYXJ0IGhhcyBubyA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYAorICAgICAgaGVhZGVyLCBubyBgYGNoYXJzZXRgYCBwYXJhbWV0ZXIsIG9yIGlzIG5vdCBvZiB0aGUgOm1pbWV0eXBlOmB0ZXh0YCBtYWluCisgICAgICBNSU1FIHR5cGUsIHRoZW4gdGhhdCBpdGVtIGluIHRoZSByZXR1cm5lZCBsaXN0IHdpbGwgYmUgKmZhaWxvYmoqLgorCisKKyAgIC4uIG1ldGhvZDo6IGlzX2F0dGFjaG1lbnQKKworICAgICAgUmV0dXJuIGBgVHJ1ZWBgIGlmIHRoZXJlIGlzIGEgOm1haWxoZWFkZXI6YENvbnRlbnQtRGlzcG9zaXRpb25gIGhlYWRlcgorICAgICAgYW5kIGl0cyAoY2FzZSBpbnNlbnNpdGl2ZSkgdmFsdWUgaXMgYGBhdHRhY2htZW50YGAsIGBgRmFsc2VgYCBvdGhlcndpc2UuCisKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40LjIKKyAgICAgICAgIGlzX2F0dGFjaG1lbnQgaXMgbm93IGEgbWV0aG9kIGluc3RlYWQgb2YgYSBwcm9wZXJ0eSwgZm9yIGNvbnNpc3RlbmN5CisgICAgICAgICB3aXRoIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmlzX211bHRpcGFydGAuCiAKIAogICAgLi4gbWV0aG9kOjogZ2V0X2NvbnRlbnRfZGlzcG9zaXRpb24oKQpAQCAtNTkwLDYgKzQ2NywxMSBAQAogCiAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKIAorCisgICBUaGUgZm9sbG93aW5nIG1ldGhvZHMgcmVsYXRlIHRvIGludGVycm9nYXRpbmcgYW5kIG1hbmlwdWxhdGluZyB0aGUgY29udGVudAorICAgKHBheWxvYWQpIG9mIHRoZSBtZXNzYWdlLgorCisKICAgIC4uIG1ldGhvZDo6IHdhbGsoKQogCiAgICAgICBUaGUgOm1ldGg6YHdhbGtgIG1ldGhvZCBpcyBhbiBhbGwtcHVycG9zZSBnZW5lcmF0b3Igd2hpY2ggY2FuIGJlIHVzZWQgdG8KQEAgLTY1MSw4ICs1MzMsMTY5IEBACiAgICAgICBpbnRvIHRoZSBzdWJwYXJ0cy4KIAogCi0gICA6Y2xhc3M6YE1lc3NhZ2VgIG9iamVjdHMgY2FuIGFsc28gb3B0aW9uYWxseSBjb250YWluIHR3byBpbnN0YW5jZSBhdHRyaWJ1dGVzLAotICAgd2hpY2ggY2FuIGJlIHVzZWQgd2hlbiBnZW5lcmF0aW5nIHRoZSBwbGFpbiB0ZXh0IG9mIGEgTUlNRSBtZXNzYWdlLgorICAgLi4gbWV0aG9kOjogZ2V0X2JvZHkocHJlZmVyZW5jZWxpc3Q9KCdyZWxhdGVkJywgJ2h0bWwnLCAncGxhaW4nKSkKKworICAgICAgUmV0dXJuIHRoZSBNSU1FIHBhcnQgdGhhdCBpcyB0aGUgYmVzdCBjYW5kaWRhdGUgdG8gYmUgdGhlICJib2R5IiBvZiB0aGUKKyAgICAgIG1lc3NhZ2UuCisKKyAgICAgICpwcmVmZXJlbmNlbGlzdCogbXVzdCBiZSBhIHNlcXVlbmNlIG9mIHN0cmluZ3MgZnJvbSB0aGUgc2V0IGBgcmVsYXRlZGBgLAorICAgICAgYGBodG1sYGAsIGFuZCBgYHBsYWluYGAsIGFuZCBpbmRpY2F0ZXMgdGhlIG9yZGVyIG9mIHByZWZlcmVuY2UgZm9yIHRoZQorICAgICAgY29udGVudCB0eXBlIG9mIHRoZSBwYXJ0IHJldHVybmVkLgorCisgICAgICBTdGFydCBsb29raW5nIGZvciBjYW5kaWRhdGUgbWF0Y2hlcyB3aXRoIHRoZSBvYmplY3Qgb24gd2hpY2ggdGhlCisgICAgICBgYGdldF9ib2R5YGAgbWV0aG9kIGlzIGNhbGxlZC4KKworICAgICAgSWYgYGByZWxhdGVkYGAgaXMgbm90IGluY2x1ZGVkIGluICpwcmVmZXJlbmNlbGlzdCosIGNvbnNpZGVyIHRoZSByb290CisgICAgICBwYXJ0IChvciBzdWJwYXJ0IG9mIHRoZSByb290IHBhcnQpIG9mIGFueSByZWxhdGVkIGVuY291bnRlcmVkIGFzIGEKKyAgICAgIGNhbmRpZGF0ZSBpZiB0aGUgKHN1Yi0pcGFydCBtYXRjaGVzIGEgcHJlZmVyZW5jZS4KKworICAgICAgV2hlbiBlbmNvdW50ZXJpbmcgYSBgYG11bHRpcGFydC9yZWxhdGVkYGAsIGNoZWNrIHRoZSBgYHN0YXJ0YGAgcGFyYW1ldGVyCisgICAgICBhbmQgaWYgYSBwYXJ0IHdpdGggYSBtYXRjaGluZyA6bWFpbGhlYWRlcjpgQ29udGVudC1JRGAgaXMgZm91bmQsIGNvbnNpZGVyCisgICAgICBvbmx5IGl0IHdoZW4gbG9va2luZyBmb3IgY2FuZGlkYXRlIG1hdGNoZXMuICBPdGhlcndpc2UgY29uc2lkZXIgb25seSB0aGUKKyAgICAgIGZpcnN0IChkZWZhdWx0IHJvb3QpIHBhcnQgb2YgdGhlIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYC4KKworICAgICAgSWYgYSBwYXJ0IGhhcyBhIDptYWlsaGVhZGVyOmBDb250ZW50LURpc3Bvc2l0aW9uYCBoZWFkZXIsIG9ubHkgY29uc2lkZXIKKyAgICAgIHRoZSBwYXJ0IGEgY2FuZGlkYXRlIG1hdGNoIGlmIHRoZSB2YWx1ZSBvZiB0aGUgaGVhZGVyIGlzIGBgaW5saW5lYGAuCisKKyAgICAgIElmIG5vbmUgb2YgdGhlIGNhbmRpZGF0ZXMgbWF0Y2hlcyBhbnkgb2YgdGhlIHByZWZlcmVuY2VzIGluCisgICAgICAqcHJlZmVybmVjbGlzdCosIHJldHVybiBgYE5vbmVgYC4KKworICAgICAgTm90ZXM6ICgxKSBGb3IgbW9zdCBhcHBsaWNhdGlvbnMgdGhlIG9ubHkgKnByZWZlcmVuY2VsaXN0KiBjb21iaW5hdGlvbnMKKyAgICAgIHRoYXQgcmVhbGx5IG1ha2Ugc2Vuc2UgYXJlIGBgKCdwbGFpbicsKWBgLCBgYCgnaHRtbCcsICdwbGFpbicpYGAsIGFuZCB0aGUKKyAgICAgIGRlZmF1bHQgYGAoJ3JlbGF0ZWQnLCAnaHRtbCcsICdwbGFpbicpYGAuICAoMikgQmVjYXVzZSBtYXRjaGluZyBzdGFydHMKKyAgICAgIHdpdGggdGhlIG9iamVjdCBvbiB3aGljaCBgYGdldF9ib2R5YGAgaXMgY2FsbGVkLCBjYWxsaW5nIGBgZ2V0X2JvZHlgYCBvbgorICAgICAgYSBgYG11bHRpcGFydC9yZWxhdGVkYGAgd2lsbCByZXR1cm4gdGhlIG9iamVjdCBpdHNlbGYgdW5sZXNzCisgICAgICAqcHJlZmVyZW5jZWxpc3QqIGhhcyBhIG5vbi1kZWZhdWx0IHZhbHVlLiAoMykgTWVzc2FnZXMgKG9yIG1lc3NhZ2UgcGFydHMpCisgICAgICB0aGF0IGRvIG5vdCBzcGVjaWZ5IGEgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgb3Igd2hvc2UKKyAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciBpcyBpbnZhbGlkIHdpbGwgYmUgdHJlYXRlZCBhcyBpZiB0aGV5CisgICAgICBhcmUgb2YgdHlwZSBgYHRleHQvcGxhaW5gYCwgd2hpY2ggbWF5IG9jY2FzaW9uYWxseSBjYXVzZSBgYGdldF9ib2R5YGAgdG8KKyAgICAgIHJldHVybiB1bmV4cGVjdGVkIHJlc3VsdHMuCisKKworICAgLi4gbWV0aG9kOjogaXRlcl9hdHRhY2htZW50cygpCisKKyAgICAgIFJldHVybiBhbiBpdGVyYXRvciBvdmVyIGFsbCBvZiB0aGUgaW1tZWRpYXRlIHN1Yi1wYXJ0cyBvZiB0aGUgbWVzc2FnZQorICAgICAgdGhhdCBhcmUgbm90IGNhbmRpZGF0ZSAiYm9keSIgcGFydHMuICBUaGF0IGlzLCBza2lwIHRoZSBmaXJzdCBvY2N1cnJlbmNlCisgICAgICBvZiBlYWNoIG9mIGBgdGV4dC9wbGFpbmBgLCBgYHRleHQvaHRtbGBgLCBgYG11bHRpcGFydC9yZWxhdGVkYGAsIG9yCisgICAgICBgYG11bHRpcGFydC9hbHRlcm5hdGl2ZWBgICh1bmxlc3MgdGhleSBhcmUgZXhwbGljaXRseSBtYXJrZWQgYXMKKyAgICAgIGF0dGFjaG1lbnRzIHZpYSA6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudGApLCBhbmQKKyAgICAgIHJldHVybiBhbGwgcmVtYWluaW5nIHBhcnRzLiAgV2hlbiBhcHBsaWVkIGRpcmVjdGx5IHRvIGEKKyAgICAgIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCwgcmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgdGhlIGFsbCB0aGUgcmVsYXRlZCBwYXJ0cworICAgICAgZXhjZXB0IHRoZSByb290IHBhcnQgKGllOiB0aGUgcGFydCBwb2ludGVkIHRvIGJ5IHRoZSBgYHN0YXJ0YGAgcGFyYW1ldGVyLAorICAgICAgb3IgdGhlIGZpcnN0IHBhcnQgaWYgdGhlcmUgaXMgbm8gYGBzdGFydGBgIHBhcmFtZXRlciBvciB0aGUgYGBzdGFydGBgCisgICAgICBwYXJhbWV0ZXIgZG9lc24ndCBtYXRjaCB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtSURgIG9mIGFueSBvZiB0aGUKKyAgICAgIHBhcnRzKS4gIFdoZW4gYXBwbGllZCBkaXJlY3RseSB0byBhIGBgbXVsdGlwYXJ0L2FsdGVybmF0aXZlYGAgb3IgYQorICAgICAgbm9uLWBgbXVsdGlwYXJ0YGAsIHJldHVybiBhbiBlbXB0eSBpdGVyYXRvci4KKworCisgICAuLiBtZXRob2Q6OiBpdGVyX3BhcnRzKCkKKworICAgICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgYWxsIG9mIHRoZSBpbW1lZGlhdGUgc3ViLXBhcnRzIG9mIHRoZSBtZXNzYWdlLAorICAgICAgd2hpY2ggd2lsbCBiZSBlbXB0eSBmb3IgYSBub24tYGBtdWx0aXBhcnRgYC4gIChTZWUgYWxzbworICAgICAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS53YWxrYC4pCisKKworICAgLi4gbWV0aG9kOjogZ2V0X2NvbnRlbnQoKmFyZ3MsIGNvbnRlbnRfbWFuYWdlcj1Ob25lLCAqKmt3KQorCisgICAgICBDYWxsIHRoZSA6bWV0aDpgfmVtYWlsLmNvbnRlbnRtYW5hZ2VyLkNvbnRlbnRNYW5hZ2VyLmdldF9jb250ZW50YCBtZXRob2QKKyAgICAgIG9mIHRoZSAqY29udGVudF9tYW5hZ2VyKiwgcGFzc2luZyBzZWxmIGFzIHRoZSBtZXNzYWdlIG9iamVjdCwgYW5kIHBhc3NpbmcKKyAgICAgIGFsb25nIGFueSBvdGhlciBhcmd1bWVudHMgb3Iga2V5d29yZHMgYXMgYWRkaXRpb25hbCBhcmd1bWVudHMuICBJZgorICAgICAgKmNvbnRlbnRfbWFuYWdlciogaXMgbm90IHNwZWNpZmllZCwgdXNlIHRoZSBgYGNvbnRlbnRfbWFuYWdlcmBgIHNwZWNpZmllZAorICAgICAgYnkgdGhlIGN1cnJlbnQgOm1vZDpgfmVtYWlsLnBvbGljeWAuCisKKworICAgLi4gbWV0aG9kOjogc2V0X2NvbnRlbnQoKmFyZ3MsIGNvbnRlbnRfbWFuYWdlcj1Ob25lLCAqKmt3KQorCisgICAgICBDYWxsIHRoZSA6bWV0aDpgfmVtYWlsLmNvbnRlbnRtYW5hZ2VyLkNvbnRlbnRNYW5hZ2VyLnNldF9jb250ZW50YCBtZXRob2QKKyAgICAgIG9mIHRoZSAqY29udGVudF9tYW5hZ2VyKiwgcGFzc2luZyBzZWxmIGFzIHRoZSBtZXNzYWdlIG9iamVjdCwgYW5kIHBhc3NpbmcKKyAgICAgIGFsb25nIGFueSBvdGhlciBhcmd1bWVudHMgb3Iga2V5d29yZHMgYXMgYWRkaXRpb25hbCBhcmd1bWVudHMuICBJZgorICAgICAgKmNvbnRlbnRfbWFuYWdlciogaXMgbm90IHNwZWNpZmllZCwgdXNlIHRoZSBgYGNvbnRlbnRfbWFuYWdlcmBgIHNwZWNpZmllZAorICAgICAgYnkgdGhlIGN1cnJlbnQgOm1vZDpgfmVtYWlsLnBvbGljeWAuCisKKworICAgLi4gbWV0aG9kOjogbWFrZV9yZWxhdGVkKGJvdW5kYXJ5PU5vbmUpCisKKyAgICAgIENvbnZlcnQgYSBub24tYGBtdWx0aXBhcnRgYCBtZXNzYWdlIGludG8gYSBgYG11bHRpcGFydC9yZWxhdGVkYGAgbWVzc2FnZSwKKyAgICAgIG1vdmluZyBhbnkgZXhpc3RpbmcgOm1haWxoZWFkZXI6YENvbnRlbnQtYCBoZWFkZXJzIGFuZCBwYXlsb2FkIGludG8gYQorICAgICAgKG5ldykgZmlyc3QgcGFydCBvZiB0aGUgYGBtdWx0aXBhcnRgYC4gIElmICpib3VuZGFyeSogaXMgc3BlY2lmaWVkLCB1c2UKKyAgICAgIGl0IGFzIHRoZSBib3VuZGFyeSBzdHJpbmcgaW4gdGhlIG11bHRpcGFydCwgb3RoZXJ3aXNlIGxlYXZlIHRoZSBib3VuZGFyeQorICAgICAgdG8gYmUgYXV0b21hdGljYWxseSBjcmVhdGVkIHdoZW4gaXQgaXMgbmVlZGVkIChmb3IgZXhhbXBsZSwgd2hlbiB0aGUKKyAgICAgIG1lc3NhZ2UgaXMgc2VyaWFsaXplZCkuCisKKworICAgLi4gbWV0aG9kOjogbWFrZV9hbHRlcm5hdGl2ZShib3VuZGFyeT1Ob25lKQorCisgICAgICBDb252ZXJ0IGEgbm9uLWBgbXVsdGlwYXJ0YGAgb3IgYSBgYG11bHRpcGFydC9yZWxhdGVkYGAgaW50byBhCisgICAgICBgYG11bHRpcGFydC9hbHRlcm5hdGl2ZWBgLCBtb3ZpbmcgYW55IGV4aXN0aW5nIDptYWlsaGVhZGVyOmBDb250ZW50LWAKKyAgICAgIGhlYWRlcnMgYW5kIHBheWxvYWQgaW50byBhIChuZXcpIGZpcnN0IHBhcnQgb2YgdGhlIGBgbXVsdGlwYXJ0YGAuICBJZgorICAgICAgKmJvdW5kYXJ5KiBpcyBzcGVjaWZpZWQsIHVzZSBpdCBhcyB0aGUgYm91bmRhcnkgc3RyaW5nIGluIHRoZSBtdWx0aXBhcnQsCisgICAgICBvdGhlcndpc2UgbGVhdmUgdGhlIGJvdW5kYXJ5IHRvIGJlIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCB3aGVuIGl0IGlzCisgICAgICBuZWVkZWQgKGZvciBleGFtcGxlLCB3aGVuIHRoZSBtZXNzYWdlIGlzIHNlcmlhbGl6ZWQpLgorCisKKyAgIC4uIG1ldGhvZDo6IG1ha2VfbWl4ZWQoYm91bmRhcnk9Tm9uZSkKKworICAgICAgQ29udmVydCBhIG5vbi1gYG11bHRpcGFydGBgLCBhIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCwgb3IgYQorICAgICAgYGBtdWx0aXBhcnQtYWx0ZXJuYXRpdmVgYCBpbnRvIGEgYGBtdWx0aXBhcnQvbWl4ZWRgYCwgbW92aW5nIGFueSBleGlzdGluZworICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtYCBoZWFkZXJzIGFuZCBwYXlsb2FkIGludG8gYSAobmV3KSBmaXJzdCBwYXJ0IG9mIHRoZQorICAgICAgYGBtdWx0aXBhcnRgYC4gIElmICpib3VuZGFyeSogaXMgc3BlY2lmaWVkLCB1c2UgaXQgYXMgdGhlIGJvdW5kYXJ5IHN0cmluZworICAgICAgaW4gdGhlIG11bHRpcGFydCwgb3RoZXJ3aXNlIGxlYXZlIHRoZSBib3VuZGFyeSB0byBiZSBhdXRvbWF0aWNhbGx5CisgICAgICBjcmVhdGVkIHdoZW4gaXQgaXMgbmVlZGVkIChmb3IgZXhhbXBsZSwgd2hlbiB0aGUgbWVzc2FnZSBpcyBzZXJpYWxpemVkKS4KKworCisgICAuLiBtZXRob2Q6OiBhZGRfcmVsYXRlZCgqYXJncywgY29udGVudF9tYW5hZ2VyPU5vbmUsICoqa3cpCisKKyAgICAgIElmIHRoZSBtZXNzYWdlIGlzIGEgYGBtdWx0aXBhcnQvcmVsYXRlZGBgLCBjcmVhdGUgYSBuZXcgbWVzc2FnZQorICAgICAgb2JqZWN0LCBwYXNzIGFsbCBvZiB0aGUgYXJndW1lbnRzIHRvIGl0cyA6bWV0aDpgc2V0X2NvbnRlbnRgIG1ldGhvZCwKKyAgICAgIGFuZCA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5hdHRhY2hgIGl0IHRvIHRoZSBgYG11bHRpcGFydGBgLiAgSWYKKyAgICAgIHRoZSBtZXNzYWdlIGlzIGEgbm9uLWBgbXVsdGlwYXJ0YGAsIGNhbGwgOm1ldGg6YG1ha2VfcmVsYXRlZGAgYW5kIHRoZW4KKyAgICAgIHByb2NlZWQgYXMgYWJvdmUuICBJZiB0aGUgbWVzc2FnZSBpcyBhbnkgb3RoZXIgdHlwZSBvZiBgYG11bHRpcGFydGBgLAorICAgICAgcmFpc2UgYSA6ZXhjOmBUeXBlRXJyb3JgLiBJZiAqY29udGVudF9tYW5hZ2VyKiBpcyBub3Qgc3BlY2lmaWVkLCB1c2UKKyAgICAgIHRoZSBgYGNvbnRlbnRfbWFuYWdlcmBgIHNwZWNpZmllZCBieSB0aGUgY3VycmVudCA6bW9kOmB+ZW1haWwucG9saWN5YC4KKyAgICAgIElmIHRoZSBhZGRlZCBwYXJ0IGhhcyBubyA6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbmAgaGVhZGVyLAorICAgICAgYWRkIG9uZSB3aXRoIHRoZSB2YWx1ZSBgYGlubGluZWBgLgorCisKKyAgIC4uIG1ldGhvZDo6IGFkZF9hbHRlcm5hdGl2ZSgqYXJncywgY29udGVudF9tYW5hZ2VyPU5vbmUsICoqa3cpCisKKyAgICAgIElmIHRoZSBtZXNzYWdlIGlzIGEgYGBtdWx0aXBhcnQvYWx0ZXJuYXRpdmVgYCwgY3JlYXRlIGEgbmV3IG1lc3NhZ2UKKyAgICAgIG9iamVjdCwgcGFzcyBhbGwgb2YgdGhlIGFyZ3VtZW50cyB0byBpdHMgOm1ldGg6YHNldF9jb250ZW50YCBtZXRob2QsIGFuZAorICAgICAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuYXR0YWNoYCBpdCB0byB0aGUgYGBtdWx0aXBhcnRgYC4gIElmIHRoZQorICAgICAgbWVzc2FnZSBpcyBhIG5vbi1gYG11bHRpcGFydGBgIG9yIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCwgY2FsbAorICAgICAgOm1ldGg6YG1ha2VfYWx0ZXJuYXRpdmVgIGFuZCB0aGVuIHByb2NlZWQgYXMgYWJvdmUuICBJZiB0aGUgbWVzc2FnZSBpcworICAgICAgYW55IG90aGVyIHR5cGUgb2YgYGBtdWx0aXBhcnRgYCwgcmFpc2UgYSA6ZXhjOmBUeXBlRXJyb3JgLiBJZgorICAgICAgKmNvbnRlbnRfbWFuYWdlciogaXMgbm90IHNwZWNpZmllZCwgdXNlIHRoZSBgYGNvbnRlbnRfbWFuYWdlcmBgIHNwZWNpZmllZAorICAgICAgYnkgdGhlIGN1cnJlbnQgOm1vZDpgfmVtYWlsLnBvbGljeWAuCisKKworICAgLi4gbWV0aG9kOjogYWRkX2F0dGFjaG1lbnQoKmFyZ3MsIGNvbnRlbnRfbWFuYWdlcj1Ob25lLCAqKmt3KQorCisgICAgICBJZiB0aGUgbWVzc2FnZSBpcyBhIGBgbXVsdGlwYXJ0L21peGVkYGAsIGNyZWF0ZSBhIG5ldyBtZXNzYWdlIG9iamVjdCwKKyAgICAgIHBhc3MgYWxsIG9mIHRoZSBhcmd1bWVudHMgdG8gaXRzIDptZXRoOmBzZXRfY29udGVudGAgbWV0aG9kLCBhbmQKKyAgICAgIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmF0dGFjaGAgaXQgdG8gdGhlIGBgbXVsdGlwYXJ0YGAuICBJZiB0aGUKKyAgICAgIG1lc3NhZ2UgaXMgYSBub24tYGBtdWx0aXBhcnRgYCwgYGBtdWx0aXBhcnQvcmVsYXRlZGBgLCBvcgorICAgICAgYGBtdWx0aXBhcnQvYWx0ZXJuYXRpdmVgYCwgY2FsbCA6bWV0aDpgbWFrZV9taXhlZGAgYW5kIHRoZW4gcHJvY2VlZCBhcworICAgICAgYWJvdmUuIElmICpjb250ZW50X21hbmFnZXIqIGlzIG5vdCBzcGVjaWZpZWQsIHVzZSB0aGUgYGBjb250ZW50X21hbmFnZXJgYAorICAgICAgc3BlY2lmaWVkIGJ5IHRoZSBjdXJyZW50IDptb2Q6YH5lbWFpbC5wb2xpY3lgLiAgSWYgdGhlIGFkZGVkIHBhcnQKKyAgICAgIGhhcyBubyA6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbmAgaGVhZGVyLCBhZGQgb25lIHdpdGggdGhlIHZhbHVlCisgICAgICBgYGF0dGFjaG1lbnRgYC4gIFRoaXMgbWV0aG9kIGNhbiBiZSB1c2VkIGJvdGggZm9yIGV4cGxpY2l0IGF0dGFjaG1lbnRzCisgICAgICAoOm1haWxoZWFkZXI6YENvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnRgIGFuZCBgYGlubGluZWBgIGF0dGFjaG1lbnRzCisgICAgICAoOm1haWxoZWFkZXI6YENvbnRlbnQtRGlzcG9zaXRpb246IGlubGluZWApLCBieSBwYXNzaW5nIGFwcHJvcHJpYXRlCisgICAgICBvcHRpb25zIHRvIHRoZSBgYGNvbnRlbnRfbWFuYWdlcmBgLgorCisKKyAgIC4uIG1ldGhvZDo6IGNsZWFyKCkKKworICAgICAgUmVtb3ZlIHRoZSBwYXlsb2FkIGFuZCBhbGwgb2YgdGhlIGhlYWRlcnMuCisKKworICAgLi4gbWV0aG9kOjogY2xlYXJfY29udGVudCgpCisKKyAgICAgIFJlbW92ZSB0aGUgcGF5bG9hZCBhbmQgYWxsIG9mIHRoZSA6ZXhjOmBDb250ZW50LWAgaGVhZGVycywgbGVhdmluZworICAgICAgYWxsIG90aGVyIGhlYWRlcnMgaW50YWN0IGFuZCBpbiB0aGVpciBvcmlnaW5hbCBvcmRlci4KKworCisgICA6Y2xhc3M6YEVtYWlsTWVzc2FnZWAgb2JqZWN0cyBoYXZlIHRoZSBmb2xsb3dpbmcgaW5zdGFuY2UgYXR0cmlidXRlczoKIAogCiAgICAuLiBhdHRyaWJ1dGU6OiBwcmVhbWJsZQpAQCAtNjgyLDExICs3MjUsOCBAQAogCiAgICAgICBUaGUgKmVwaWxvZ3VlKiBhdHRyaWJ1dGUgYWN0cyB0aGUgc2FtZSB3YXkgYXMgdGhlICpwcmVhbWJsZSogYXR0cmlidXRlLAogICAgICAgZXhjZXB0IHRoYXQgaXQgY29udGFpbnMgdGV4dCB0aGF0IGFwcGVhcnMgYmV0d2VlbiB0aGUgbGFzdCBib3VuZGFyeSBhbmQKLSAgICAgIHRoZSBlbmQgb2YgdGhlIG1lc3NhZ2UuCi0KLSAgICAgIFlvdSBkbyBub3QgbmVlZCB0byBzZXQgdGhlIGVwaWxvZ3VlIHRvIHRoZSBlbXB0eSBzdHJpbmcgaW4gb3JkZXIgZm9yIHRoZQotICAgICAgOmNsYXNzOmB+ZW1haWwuZ2VuZXJhdG9yLkdlbmVyYXRvcmAgdG8gcHJpbnQgYSBuZXdsaW5lIGF0IHRoZSBlbmQgb2YgdGhlCi0gICAgICBmaWxlLgorICAgICAgdGhlIGVuZCBvZiB0aGUgbWVzc2FnZS4gIEFzIHdpdGggdGhlIDphdHRyOmB+RW1haWxNZXNzYWdlLnByZWFtYmxlYCwKKyAgICAgIGlmIHRoZXJlIGlzIG5vIGVwaWxvZyB0ZXh0IHRoaXMgYXR0cmlidXRlIHdpbGwgYmUgYGBOb25lYGAuCiAKIAogICAgLi4gYXR0cmlidXRlOjogZGVmZWN0cwpAQCAtNjk0LDMgKzczNCwxOCBAQAogICAgICAgVGhlICpkZWZlY3RzKiBhdHRyaWJ1dGUgY29udGFpbnMgYSBsaXN0IG9mIGFsbCB0aGUgcHJvYmxlbXMgZm91bmQgd2hlbgogICAgICAgcGFyc2luZyB0aGlzIG1lc3NhZ2UuICBTZWUgOm1vZDpgZW1haWwuZXJyb3JzYCBmb3IgYSBkZXRhaWxlZCBkZXNjcmlwdGlvbgogICAgICAgb2YgdGhlIHBvc3NpYmxlIHBhcnNpbmcgZGVmZWN0cy4KKworCisuLiBjbGFzczo6IE1JTUVQYXJ0KHBvbGljeT1kZWZhdWx0KQorCisgICAgVGhpcyBjbGFzcyByZXByZXNlbnRzIGEgc3VicGFydCBvZiBhIE1JTUUgbWVzc2FnZS4gIEl0IGlzIGlkZW50aWNhbCB0bworICAgIDpjbGFzczpgRW1haWxNZXNzYWdlYCwgZXhjZXB0IHRoYXQgbm8gOm1haWxoZWFkZXI6YE1JTUUtVmVyc2lvbmAgaGVhZGVycyBhcmUKKyAgICBhZGRlZCB3aGVuIDptZXRoOmB+RW1haWxNZXNzYWdlLnNldF9jb250ZW50YCBpcyBjYWxsZWQsIHNpbmNlIHN1Yi1wYXJ0cyBkbworICAgIG5vdCBuZWVkIHRoZWlyIG93biA6bWFpbGhlYWRlcjpgTUlNRS1WZXJzaW9uYCBoZWFkZXJzLgorCisKKy4uIHJ1YnJpYzo6IEZvb3Rub3RlcworCisuLiBbMV0gT3JpbmdhbGx5IGFkZGVkIGluIDMuNCBhcyBhIDp0ZXJtOmBwcm92aXNpb25hbCBtb2R1bGUgPHByb3Zpc2lvbmFsCisgICAgICAgcGFja2FnZT5gLiAgRG9jcyBmb3IgbGVnYWN5IG1lc3NhZ2UgY2xhc3MgbW92ZWQgdG8KKyAgICAgICA6cmVmOmBjb21wYXQzMl9tZXNzYWdlYC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLm1pbWUucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwubWltZS5yc3QKaW5kZXggODI5N2RlYS4uZDlkYWU5ZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZW1haWwubWltZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwubWltZS5yc3QKQEAgLTgsNiArOCwxMSBAQAogCiAtLS0tLS0tLS0tLS0tLQogCitUaGlzIG1vZHVsZSBpcyBwYXJ0IG9mIHRoZSBsZWdhY3kgKGBgQ29tcGF0MzJgYCkgZW1haWwgQVBJLiAgSXRzIGZ1bmN0aW9uYWxpdHkKK2lzIHBhcnRpYWxseSByZXBsYWNlZCBieSB0aGUgOm1vZDpgfmVtYWlsLmNvbnRlbnRtYW5hZ2VyYCBpbiB0aGUgbmV3IEFQSSwgYnV0CitpbiBjZXJ0YWluIGFwcGxpY2F0aW9ucyB0aGVzZSBjbGFzc2VzIG1heSBzdGlsbCBiZSB1c2VmdWwsIGV2ZW4gaW4gbm9uLWxlZ2FjeQorY29kZS4KKwogT3JkaW5hcmlseSwgeW91IGdldCBhIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSBieSBwYXNzaW5nIGEgZmlsZSBvciBzb21lIHRleHQgdG8KIGEgcGFyc2VyLCB3aGljaCBwYXJzZXMgdGhlIHRleHQgYW5kIHJldHVybnMgdGhlIHJvb3QgbWVzc2FnZSBvYmplY3QuICBIb3dldmVyCiB5b3UgY2FuIGFsc28gYnVpbGQgYSBjb21wbGV0ZSBtZXNzYWdlIHN0cnVjdHVyZSBmcm9tIHNjcmF0Y2gsIG9yIGV2ZW4gaW5kaXZpZHVhbApAQCAtMjUsNyArMzAsNyBAQAogCiAuLiBjdXJyZW50bW9kdWxlOjogZW1haWwubWltZS5iYXNlCiAKLS4uIGNsYXNzOjogTUlNRUJhc2UoX21haW50eXBlLCBfc3VidHlwZSwgKipfcGFyYW1zKQorLi4gY2xhc3M6OiBNSU1FQmFzZShfbWFpbnR5cGUsIF9zdWJ0eXBlLCAqLCBwb2xpY3k9Y29tcGF0MzIsICoqX3BhcmFtcykKIAogICAgTW9kdWxlOiA6bW9kOmBlbWFpbC5taW1lLmJhc2VgCiAKQEAgLTQxLDEwICs0NiwxNyBAQAogICAga2V5L3ZhbHVlIGRpY3Rpb25hcnkgYW5kIGlzIHBhc3NlZCBkaXJlY3RseSB0byA6bWV0aDpgTWVzc2FnZS5hZGRfaGVhZGVyCiAgICA8ZW1haWwubWVzc2FnZS5NZXNzYWdlLmFkZF9oZWFkZXI+YC4KIAorICAgSWYgKnBvbGljeSogaXMgc3BlY2lmaWVkLCAoZGVmYXVsdHMgdG8gdGhlCisgICA6Y2xhc3M6YGNvbXBhdDMyIDxlbWFpbC5wb2xpY3kuQ29tcGF0MzI+YCBwb2xpY3kpIGl0IHdpbGwgYmUgcGFzc2VkIHRvCisgICA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgLgorCiAgICBUaGUgOmNsYXNzOmBNSU1FQmFzZWAgY2xhc3MgYWx3YXlzIGFkZHMgYSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIKICAgIChiYXNlZCBvbiAqX21haW50eXBlKiwgKl9zdWJ0eXBlKiwgYW5kICpfcGFyYW1zKiksIGFuZCBhCiAgICA6bWFpbGhlYWRlcjpgTUlNRS1WZXJzaW9uYCBoZWFkZXIgKGFsd2F5cyBzZXQgdG8gYGAxLjBgYCkuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBZGRlZCAqcG9saWN5KiBrZXl3b3JkLW9ubHkgcGFyYW1ldGVyLgorCiAKIC4uIGN1cnJlbnRtb2R1bGU6OiBlbWFpbC5taW1lLm5vbm11bHRpcGFydAogCkBAIC02Miw3ICs3NCw4IEBACiAKIC4uIGN1cnJlbnRtb2R1bGU6OiBlbWFpbC5taW1lLm11bHRpcGFydAogCi0uLiBjbGFzczo6IE1JTUVNdWx0aXBhcnQoX3N1YnR5cGU9J21peGVkJywgYm91bmRhcnk9Tm9uZSwgX3N1YnBhcnRzPU5vbmUsICoqX3BhcmFtcykKKy4uIGNsYXNzOjogTUlNRU11bHRpcGFydChfc3VidHlwZT0nbWl4ZWQnLCBib3VuZGFyeT1Ob25lLCBfc3VicGFydHM9Tm9uZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICosIHBvbGljeT1jb21wYXQzMiwgKipfcGFyYW1zKQogCiAgICBNb2R1bGU6IDptb2Q6YGVtYWlsLm1pbWUubXVsdGlwYXJ0YAogCkBAIC04MiwxNCArOTUsMjAgQEAKICAgIHRvIHRoZSBtZXNzYWdlIGJ5IHVzaW5nIHRoZSA6bWV0aDpgTWVzc2FnZS5hdHRhY2gKICAgIDxlbWFpbC5tZXNzYWdlLk1lc3NhZ2UuYXR0YWNoPmAgbWV0aG9kLgogCisgICBPcHRpb25hbCAqcG9saWN5KiBhcmd1bWVudCBkZWZhdWx0cyB0byA6Y2xhc3M6YGNvbXBhdDMyIDxlbWFpbC5wb2xpY3kuQ29tcGF0MzI+YC4KKwogICAgQWRkaXRpb25hbCBwYXJhbWV0ZXJzIGZvciB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGFyZSB0YWtlbiBmcm9tCiAgICB0aGUga2V5d29yZCBhcmd1bWVudHMsIG9yIHBhc3NlZCBpbnRvIHRoZSAqX3BhcmFtcyogYXJndW1lbnQsIHdoaWNoIGlzIGEga2V5d29yZAogICAgZGljdGlvbmFyeS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFkZGVkICpwb2xpY3kqIGtleXdvcmQtb25seSBwYXJhbWV0ZXIuCiAKIC4uIGN1cnJlbnRtb2R1bGU6OiBlbWFpbC5taW1lLmFwcGxpY2F0aW9uCiAKLS4uIGNsYXNzOjogTUlNRUFwcGxpY2F0aW9uKF9kYXRhLCBfc3VidHlwZT0nb2N0ZXQtc3RyZWFtJywgX2VuY29kZXI9ZW1haWwuZW5jb2RlcnMuZW5jb2RlX2Jhc2U2NCwgKipfcGFyYW1zKQorLi4gY2xhc3M6OiBNSU1FQXBwbGljYXRpb24oX2RhdGEsIF9zdWJ0eXBlPSdvY3RldC1zdHJlYW0nLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBfZW5jb2Rlcj1lbWFpbC5lbmNvZGVycy5lbmNvZGVfYmFzZTY0LCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAqLCBwb2xpY3k9Y29tcGF0MzIsICoqX3BhcmFtcykKIAogICAgTW9kdWxlOiA6bW9kOmBlbWFpbC5taW1lLmFwcGxpY2F0aW9uYAogCkBAIC0xMDksMTIgKzEyOCwxOCBAQAogICAgb2JqZWN0IGFzIG5lY2Vzc2FyeS4gIFRoZSBkZWZhdWx0IGVuY29kaW5nIGlzIGJhc2U2NC4gIFNlZSB0aGUKICAgIDptb2Q6YGVtYWlsLmVuY29kZXJzYCBtb2R1bGUgZm9yIGEgbGlzdCBvZiB0aGUgYnVpbHQtaW4gZW5jb2RlcnMuCiAKKyAgIE9wdGlvbmFsICpwb2xpY3kqIGFyZ3VtZW50IGRlZmF1bHRzIHRvIDpjbGFzczpgY29tcGF0MzIgPGVtYWlsLnBvbGljeS5Db21wYXQzMj5gLgorCiAgICAqX3BhcmFtcyogYXJlIHBhc3NlZCBzdHJhaWdodCB0aHJvdWdoIHRvIHRoZSBiYXNlIGNsYXNzIGNvbnN0cnVjdG9yLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWRkZWQgKnBvbGljeSoga2V5d29yZC1vbmx5IHBhcmFtZXRlci4KIAogLi4gY3VycmVudG1vZHVsZTo6IGVtYWlsLm1pbWUuYXVkaW8KIAotLi4gY2xhc3M6OiBNSU1FQXVkaW8oX2F1ZGlvZGF0YSwgX3N1YnR5cGU9Tm9uZSwgX2VuY29kZXI9ZW1haWwuZW5jb2RlcnMuZW5jb2RlX2Jhc2U2NCwgKipfcGFyYW1zKQorLi4gY2xhc3M6OiBNSU1FQXVkaW8oX2F1ZGlvZGF0YSwgX3N1YnR5cGU9Tm9uZSwgXAorICAgICAgICAgICAgICAgICAgICAgX2VuY29kZXI9ZW1haWwuZW5jb2RlcnMuZW5jb2RlX2Jhc2U2NCwgXAorICAgICAgICAgICAgICAgICAgICAgKiwgcG9saWN5PWNvbXBhdDMyLCAqKl9wYXJhbXMpCiAKICAgIE1vZHVsZTogOm1vZDpgZW1haWwubWltZS5hdWRpb2AKIApAQCAtMTM3LDEyICsxNjIsMTggQEAKICAgIG9iamVjdCBhcyBuZWNlc3NhcnkuICBUaGUgZGVmYXVsdCBlbmNvZGluZyBpcyBiYXNlNjQuICBTZWUgdGhlCiAgICA6bW9kOmBlbWFpbC5lbmNvZGVyc2AgbW9kdWxlIGZvciBhIGxpc3Qgb2YgdGhlIGJ1aWx0LWluIGVuY29kZXJzLgogCisgICBPcHRpb25hbCAqcG9saWN5KiBhcmd1bWVudCBkZWZhdWx0cyB0byA6Y2xhc3M6YGNvbXBhdDMyIDxlbWFpbC5wb2xpY3kuQ29tcGF0MzI+YC4KKwogICAgKl9wYXJhbXMqIGFyZSBwYXNzZWQgc3RyYWlnaHQgdGhyb3VnaCB0byB0aGUgYmFzZSBjbGFzcyBjb25zdHJ1Y3Rvci4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFkZGVkICpwb2xpY3kqIGtleXdvcmQtb25seSBwYXJhbWV0ZXIuCiAKIC4uIGN1cnJlbnRtb2R1bGU6OiBlbWFpbC5taW1lLmltYWdlCiAKLS4uIGNsYXNzOjogTUlNRUltYWdlKF9pbWFnZWRhdGEsIF9zdWJ0eXBlPU5vbmUsIF9lbmNvZGVyPWVtYWlsLmVuY29kZXJzLmVuY29kZV9iYXNlNjQsICoqX3BhcmFtcykKKy4uIGNsYXNzOjogTUlNRUltYWdlKF9pbWFnZWRhdGEsIF9zdWJ0eXBlPU5vbmUsIFwKKyAgICAgICAgICAgICAgICAgICAgIF9lbmNvZGVyPWVtYWlsLmVuY29kZXJzLmVuY29kZV9iYXNlNjQsIFwKKyAgICAgICAgICAgICAgICAgICAgKiwgcG9saWN5PWNvbXBhdDMyLCAqKl9wYXJhbXMpCiAKICAgIE1vZHVsZTogOm1vZDpgZW1haWwubWltZS5pbWFnZWAKIApAQCAtMTY1LDEzICsxOTYsMTcgQEAKICAgIG9iamVjdCBhcyBuZWNlc3NhcnkuICBUaGUgZGVmYXVsdCBlbmNvZGluZyBpcyBiYXNlNjQuICBTZWUgdGhlCiAgICA6bW9kOmBlbWFpbC5lbmNvZGVyc2AgbW9kdWxlIGZvciBhIGxpc3Qgb2YgdGhlIGJ1aWx0LWluIGVuY29kZXJzLgogCisgICBPcHRpb25hbCAqcG9saWN5KiBhcmd1bWVudCBkZWZhdWx0cyB0byA6Y2xhc3M6YGNvbXBhdDMyIDxlbWFpbC5wb2xpY3kuQ29tcGF0MzI+YC4KKwogICAgKl9wYXJhbXMqIGFyZSBwYXNzZWQgc3RyYWlnaHQgdGhyb3VnaCB0byB0aGUgOmNsYXNzOmB+ZW1haWwubWltZS5iYXNlLk1JTUVCYXNlYAogICAgY29uc3RydWN0b3IuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBZGRlZCAqcG9saWN5KiBrZXl3b3JkLW9ubHkgcGFyYW1ldGVyLgogCiAuLiBjdXJyZW50bW9kdWxlOjogZW1haWwubWltZS5tZXNzYWdlCiAKLS4uIGNsYXNzOjogTUlNRU1lc3NhZ2UoX21zZywgX3N1YnR5cGU9J3JmYzgyMicpCisuLiBjbGFzczo6IE1JTUVNZXNzYWdlKF9tc2csIF9zdWJ0eXBlPSdyZmM4MjInLCAqLCBwb2xpY3k9Y29tcGF0MzIpCiAKICAgIE1vZHVsZTogOm1vZDpgZW1haWwubWltZS5tZXNzYWdlYAogCkBAIC0xODQsMTAgKzIxOSwxNCBAQAogICAgT3B0aW9uYWwgKl9zdWJ0eXBlKiBzZXRzIHRoZSBzdWJ0eXBlIG9mIHRoZSBtZXNzYWdlOyBpdCBkZWZhdWx0cyB0bwogICAgOm1pbWV0eXBlOmByZmM4MjJgLgogCisgICBPcHRpb25hbCAqcG9saWN5KiBhcmd1bWVudCBkZWZhdWx0cyB0byA6Y2xhc3M6YGNvbXBhdDMyIDxlbWFpbC5wb2xpY3kuQ29tcGF0MzI+YC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFkZGVkICpwb2xpY3kqIGtleXdvcmQtb25seSBwYXJhbWV0ZXIuCiAKIC4uIGN1cnJlbnRtb2R1bGU6OiBlbWFpbC5taW1lLnRleHQKIAotLi4gY2xhc3M6OiBNSU1FVGV4dChfdGV4dCwgX3N1YnR5cGU9J3BsYWluJywgX2NoYXJzZXQ9Tm9uZSkKKy4uIGNsYXNzOjogTUlNRVRleHQoX3RleHQsIF9zdWJ0eXBlPSdwbGFpbicsIF9jaGFyc2V0PU5vbmUsICosIHBvbGljeT1jb21wYXQzMikKIAogICAgTW9kdWxlOiA6bW9kOmBlbWFpbC5taW1lLnRleHRgCiAKQEAgLTIxMSw1ICsyNTAsMTAgQEAKICAgIHdpbGwgYXV0b21hdGljYWxseSBlbmNvZGUgdGhlIG5ldyBwYXlsb2FkIChhbmQgYWRkIGEgbmV3CiAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyKS4KIAorICAgT3B0aW9uYWwgKnBvbGljeSogYXJndW1lbnQgZGVmYXVsdHMgdG8gOmNsYXNzOmBjb21wYXQzMiA8ZW1haWwucG9saWN5LkNvbXBhdDMyPmAuCisKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CiAgICAgICAqX2NoYXJzZXQqIGFsc28gYWNjZXB0cyA6Y2xhc3M6YH5lbWFpbC5jaGFyc2V0LkNoYXJzZXRgIGluc3RhbmNlcy4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFkZGVkICpwb2xpY3kqIGtleXdvcmQtb25seSBwYXJhbWV0ZXIuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbWFpbC5wYXJzZXIucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwucGFyc2VyLnJzdAppbmRleCBiOGViN2M1Li5jMzIzZWJjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9lbWFpbC5wYXJzZXIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2VtYWlsLnBhcnNlci5yc3QKQEAgLTgsMTkwICs4LDE1OCBAQAogCiAtLS0tLS0tLS0tLS0tLQogCi1NZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmVzIGNhbiBiZSBjcmVhdGVkIGluIG9uZSBvZiB0d28gd2F5czogdGhleSBjYW4gYmUgY3JlYXRlZAotZnJvbSB3aG9sZSBjbG90aCBieSBpbnN0YW50aWF0aW5nIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgb2JqZWN0cyBhbmQKLXN0cmluZ2luZyB0aGVtIHRvZ2V0aGVyIHZpYSA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5hdHRhY2hgIGFuZAotOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2Uuc2V0X3BheWxvYWRgIGNhbGxzLCBvciB0aGV5Ci1jYW4gYmUgY3JlYXRlZCBieSBwYXJzaW5nIGEgZmxhdCB0ZXh0IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBlbWFpbCBtZXNzYWdlLgorTWVzc2FnZSBvYmplY3Qgc3RydWN0dXJlcyBjYW4gYmUgY3JlYXRlZCBpbiBvbmUgb2YgdHdvIHdheXM6IHRoZXkgY2FuIGJlCitjcmVhdGVkIGZyb20gd2hvbGUgY2xvdGggYnkgY3JlYXRpbmcgYW4gOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgCitvYmplY3QsIGFkZGluZyBoZWFkZXJzIHVzaW5nIHRoZSBkaWN0aW9uYXJ5IGludGVyZmFjZSwgYW5kIGFkZGluZyBwYXlsb2FkKHMpCit1c2luZyA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLnNldF9jb250ZW50YCBhbmQgcmVsYXRlZCBtZXRob2RzLCBvcgordGhleSBjYW4gYmUgY3JlYXRlZCBieSBwYXJzaW5nIGEgc2VyaWFsaXplZCByZXByZXNlbnRhdGlvbiBvZiB0aGUgZW1haWwKK21lc3NhZ2UuCiAKIFRoZSA6bW9kOmBlbWFpbGAgcGFja2FnZSBwcm92aWRlcyBhIHN0YW5kYXJkIHBhcnNlciB0aGF0IHVuZGVyc3RhbmRzIG1vc3QgZW1haWwKLWRvY3VtZW50IHN0cnVjdHVyZXMsIGluY2x1ZGluZyBNSU1FIGRvY3VtZW50cy4gIFlvdSBjYW4gcGFzcyB0aGUgcGFyc2VyIGEgc3RyaW5nCi1vciBhIGZpbGUgb2JqZWN0LCBhbmQgdGhlIHBhcnNlciB3aWxsIHJldHVybiB0byB5b3UgdGhlIHJvb3QKLTpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgaW5zdGFuY2Ugb2YgdGhlIG9iamVjdCBzdHJ1Y3R1cmUuICBGb3Igc2ltcGxlLAotbm9uLU1JTUUgbWVzc2FnZXMgdGhlIHBheWxvYWQgb2YgdGhpcyByb290IG9iamVjdCB3aWxsIGxpa2VseSBiZSBhIHN0cmluZwotY29udGFpbmluZyB0aGUgdGV4dCBvZiB0aGUgbWVzc2FnZS4gIEZvciBNSU1FIG1lc3NhZ2VzLCB0aGUgcm9vdCBvYmplY3Qgd2lsbAotcmV0dXJuIGBgVHJ1ZWBgIGZyb20gaXRzIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmlzX211bHRpcGFydGAgbWV0aG9kLCBhbmQKLXRoZSBzdWJwYXJ0cyBjYW4gYmUgYWNjZXNzZWQgdmlhIHRoZSA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5nZXRfcGF5bG9hZGAKLWFuZCA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS53YWxrYCBtZXRob2RzLgorZG9jdW1lbnQgc3RydWN0dXJlcywgaW5jbHVkaW5nIE1JTUUgZG9jdW1lbnRzLiAgWW91IGNhbiBwYXNzIHRoZSBwYXJzZXIgYQorYnl0ZXMsIHN0cmluZyBvciBmaWxlIG9iamVjdCwgYW5kIHRoZSBwYXJzZXIgd2lsbCByZXR1cm4gdG8geW91IHRoZSByb290Cis6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgaW5zdGFuY2Ugb2YgdGhlIG9iamVjdCBzdHJ1Y3R1cmUuICBGb3IKK3NpbXBsZSwgbm9uLU1JTUUgbWVzc2FnZXMgdGhlIHBheWxvYWQgb2YgdGhpcyByb290IG9iamVjdCB3aWxsIGxpa2VseSBiZSBhCitzdHJpbmcgY29udGFpbmluZyB0aGUgdGV4dCBvZiB0aGUgbWVzc2FnZS4gIEZvciBNSU1FIG1lc3NhZ2VzLCB0aGUgcm9vdCBvYmplY3QKK3dpbGwgcmV0dXJuIGBgVHJ1ZWBgIGZyb20gaXRzIDptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2UuaXNfbXVsdGlwYXJ0YAorbWV0aG9kLCBhbmQgdGhlIHN1YnBhcnRzIGNhbiBiZSBhY2Nlc3NlZCB2aWEgdGhlIHBheWxvYWQgbWFuaXB1bGF0aW9uIG1ldGhvZHMsCitzdWNoIGFzIDptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2UuZ2V0X2JvZHlgLAorOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5pdGVyX3BhcnRzYCwgYW5kCis6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLndhbGtgLgogCi1UaGVyZSBhcmUgYWN0dWFsbHkgdHdvIHBhcnNlciBpbnRlcmZhY2VzIGF2YWlsYWJsZSBmb3IgdXNlLCB0aGUgY2xhc3NpYwotOmNsYXNzOmBQYXJzZXJgIEFQSSBhbmQgdGhlIGluY3JlbWVudGFsIDpjbGFzczpgRmVlZFBhcnNlcmAgQVBJLiAgVGhlIGNsYXNzaWMKLTpjbGFzczpgUGFyc2VyYCBBUEkgaXMgZmluZSBpZiB5b3UgaGF2ZSB0aGUgZW50aXJlIHRleHQgb2YgdGhlIG1lc3NhZ2UgaW4gbWVtb3J5Ci1hcyBhIHN0cmluZywgb3IgaWYgdGhlIGVudGlyZSBtZXNzYWdlIGxpdmVzIGluIGEgZmlsZSBvbiB0aGUgZmlsZSBzeXN0ZW0uCi06Y2xhc3M6YEZlZWRQYXJzZXJgIGlzIG1vcmUgYXBwcm9wcmlhdGUgZm9yIHdoZW4geW91J3JlIHJlYWRpbmcgdGhlIG1lc3NhZ2UgZnJvbQotYSBzdHJlYW0gd2hpY2ggbWlnaHQgYmxvY2sgd2FpdGluZyBmb3IgbW9yZSBpbnB1dCAoZS5nLiByZWFkaW5nIGFuIGVtYWlsIG1lc3NhZ2UKLWZyb20gYSBzb2NrZXQpLiAgVGhlIDpjbGFzczpgRmVlZFBhcnNlcmAgY2FuIGNvbnN1bWUgYW5kIHBhcnNlIHRoZSBtZXNzYWdlCi1pbmNyZW1lbnRhbGx5LCBhbmQgb25seSByZXR1cm5zIHRoZSByb290IG9iamVjdCB3aGVuIHlvdSBjbG9zZSB0aGUgcGFyc2VyIFsjXV8uCitUaGVyZSBhcmUgYWN0dWFsbHkgdHdvIHBhcnNlciBpbnRlcmZhY2VzIGF2YWlsYWJsZSBmb3IgdXNlLCB0aGUgOmNsYXNzOmBQYXJzZXJgCitBUEkgYW5kIHRoZSBpbmNyZW1lbnRhbCA6Y2xhc3M6YEZlZWRQYXJzZXJgIEFQSS4gIFRoZSA6Y2xhc3M6YFBhcnNlcmAgQVBJIGlzCittb3N0IHVzZWZ1bCBpZiB5b3UgaGF2ZSB0aGUgZW50aXJlIHRleHQgb2YgdGhlIG1lc3NhZ2UgaW4gbWVtb3J5LCBvciBpZiB0aGUKK2VudGlyZSBtZXNzYWdlIGxpdmVzIGluIGEgZmlsZSBvbiB0aGUgZmlsZSBzeXN0ZW0uICA6Y2xhc3M6YEZlZWRQYXJzZXJgIGlzIG1vcmUKK2FwcHJvcHJpYXRlIHdoZW4geW91IGFyZSByZWFkaW5nIHRoZSBtZXNzYWdlIGZyb20gYSBzdHJlYW0gd2hpY2ggbWlnaHQgYmxvY2sKK3dhaXRpbmcgZm9yIG1vcmUgaW5wdXQgKHN1Y2ggYXMgcmVhZGluZyBhbiBlbWFpbCBtZXNzYWdlIGZyb20gYSBzb2NrZXQpLiAgVGhlCis6Y2xhc3M6YEZlZWRQYXJzZXJgIGNhbiBjb25zdW1lIGFuZCBwYXJzZSB0aGUgbWVzc2FnZSBpbmNyZW1lbnRhbGx5LCBhbmQgb25seQorcmV0dXJucyB0aGUgcm9vdCBvYmplY3Qgd2hlbiB5b3UgY2xvc2UgdGhlIHBhcnNlci4KIAogTm90ZSB0aGF0IHRoZSBwYXJzZXIgY2FuIGJlIGV4dGVuZGVkIGluIGxpbWl0ZWQgd2F5cywgYW5kIG9mIGNvdXJzZSB5b3UgY2FuCi1pbXBsZW1lbnQgeW91ciBvd24gcGFyc2VyIGNvbXBsZXRlbHkgZnJvbSBzY3JhdGNoLiAgVGhlcmUgaXMgbm8gbWFnaWNhbAotY29ubmVjdGlvbiBiZXR3ZWVuIHRoZSA6bW9kOmBlbWFpbGAgcGFja2FnZSdzIGJ1bmRsZWQgcGFyc2VyIGFuZCB0aGUKLTpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgY2xhc3MsIHNvIHlvdXIgY3VzdG9tIHBhcnNlciBjYW4gY3JlYXRlIG1lc3NhZ2UKLW9iamVjdCB0cmVlcyBhbnkgd2F5IGl0IGZpbmRzIG5lY2Vzc2FyeS4KK2ltcGxlbWVudCB5b3VyIG93biBwYXJzZXIgY29tcGxldGVseSBmcm9tIHNjcmF0Y2guICBBbGwgb2YgdGhlIGxvZ2ljIHRoYXQKK2Nvbm5lY3RzIHRoZSA6bW9kOmBlbWFpbGAgcGFja2FnZSdzIGJ1bmRsZWQgcGFyc2VyIGFuZCB0aGUKKzpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCBjbGFzcyBpcyBlbWJvZGllZCBpbiB0aGUgOm1vZDpgcG9saWN5YAorY2xhc3MsIHNvIGEgY3VzdG9tIHBhcnNlciBjYW4gY3JlYXRlIG1lc3NhZ2Ugb2JqZWN0IHRyZWVzIGFueSB3YXkgaXQgZmluZHMKK25lY2Vzc2FyeSBieSBpbXBsZW1lbnRpbmcgY3VzdG9tIHZlcnNpb25zIG9mIHRoZSBhcHByb3ByaWF0ZSA6bW9kOmBwb2xpY3lgCittZXRob2RzLgogCiAKIEZlZWRQYXJzZXIgQVBJCiBeXl5eXl5eXl5eXl5eXgogCi1UaGUgOmNsYXNzOmBGZWVkUGFyc2VyYCwgaW1wb3J0ZWQgZnJvbSB0aGUgOm1vZDpgZW1haWwuZmVlZHBhcnNlcmAgbW9kdWxlLAotcHJvdmlkZXMgYW4gQVBJIHRoYXQgaXMgY29uZHVjaXZlIHRvIGluY3JlbWVudGFsIHBhcnNpbmcgb2YgZW1haWwgbWVzc2FnZXMsIHN1Y2gKLWFzIHdvdWxkIGJlIG5lY2Vzc2FyeSB3aGVuIHJlYWRpbmcgdGhlIHRleHQgb2YgYW4gZW1haWwgbWVzc2FnZSBmcm9tIGEgc291cmNlCi10aGF0IGNhbiBibG9jayAoZS5nLiBhIHNvY2tldCkuICBUaGUgOmNsYXNzOmBGZWVkUGFyc2VyYCBjYW4gb2YgY291cnNlIGJlIHVzZWQKLXRvIHBhcnNlIGFuIGVtYWlsIG1lc3NhZ2UgZnVsbHkgY29udGFpbmVkIGluIGEgc3RyaW5nIG9yIGEgZmlsZSwgYnV0IHRoZSBjbGFzc2ljCi06Y2xhc3M6YFBhcnNlcmAgQVBJIG1heSBiZSBtb3JlIGNvbnZlbmllbnQgZm9yIHN1Y2ggdXNlIGNhc2VzLiAgVGhlIHNlbWFudGljcwotYW5kIHJlc3VsdHMgb2YgdGhlIHR3byBwYXJzZXIgQVBJcyBhcmUgaWRlbnRpY2FsLgorVGhlIDpjbGFzczpgQnl0ZXNGZWVkUGFyc2VyYCwgaW1wb3J0ZWQgZnJvbSB0aGUgOm1vZDpgZW1haWwuZmVlZHBhcnNlcmAgbW9kdWxlLAorcHJvdmlkZXMgYW4gQVBJIHRoYXQgaXMgY29uZHVjaXZlIHRvIGluY3JlbWVudGFsIHBhcnNpbmcgb2YgZW1haWwgbWVzc2FnZXMsCitzdWNoIGFzIHdvdWxkIGJlIG5lY2Vzc2FyeSB3aGVuIHJlYWRpbmcgdGhlIHRleHQgb2YgYW4gZW1haWwgbWVzc2FnZSBmcm9tIGEKK3NvdXJjZSB0aGF0IGNhbiBibG9jayAoc3VjaCBhcyBhIHNvY2tldCkuICBUaGUgOmNsYXNzOmBCeXRlc0ZlZWRQYXJzZXJgIGNhbiBvZgorY291cnNlIGJlIHVzZWQgdG8gcGFyc2UgYW4gZW1haWwgbWVzc2FnZSBmdWxseSBjb250YWluZWQgaW4gYSA6dGVybTpgYnl0ZXMtbGlrZQorb2JqZWN0YCwgc3RyaW5nLCBvciBmaWxlLCBidXQgdGhlIDpjbGFzczpgQnl0ZXNQYXJzZXJgIEFQSSBtYXkgYmUgbW9yZQorY29udmVuaWVudCBmb3Igc3VjaCB1c2UgY2FzZXMuICBUaGUgc2VtYW50aWNzIGFuZCByZXN1bHRzIG9mIHRoZSB0d28gcGFyc2VyCitBUElzIGFyZSBpZGVudGljYWwuCiAKLVRoZSA6Y2xhc3M6YEZlZWRQYXJzZXJgJ3MgQVBJIGlzIHNpbXBsZTsgeW91IGNyZWF0ZSBhbiBpbnN0YW5jZSwgZmVlZCBpdCBhIGJ1bmNoCi1vZiB0ZXh0IHVudGlsIHRoZXJlJ3Mgbm8gbW9yZSB0byBmZWVkIGl0LCB0aGVuIGNsb3NlIHRoZSBwYXJzZXIgdG8gcmV0cmlldmUgdGhlCi1yb290IG1lc3NhZ2Ugb2JqZWN0LiAgVGhlIDpjbGFzczpgRmVlZFBhcnNlcmAgaXMgZXh0cmVtZWx5IGFjY3VyYXRlIHdoZW4gcGFyc2luZwotc3RhbmRhcmRzLWNvbXBsaWFudCBtZXNzYWdlcywgYW5kIGl0IGRvZXMgYSB2ZXJ5IGdvb2Qgam9iIG9mIHBhcnNpbmcKLW5vbi1jb21wbGlhbnQgbWVzc2FnZXMsIHByb3ZpZGluZyBpbmZvcm1hdGlvbiBhYm91dCBob3cgYSBtZXNzYWdlIHdhcyBkZWVtZWQKLWJyb2tlbi4gIEl0IHdpbGwgcG9wdWxhdGUgYSBtZXNzYWdlIG9iamVjdCdzICpkZWZlY3RzKiBhdHRyaWJ1dGUgd2l0aCBhIGxpc3Qgb2YKLWFueSBwcm9ibGVtcyBpdCBmb3VuZCBpbiBhIG1lc3NhZ2UuICBTZWUgdGhlIDptb2Q6YGVtYWlsLmVycm9yc2AgbW9kdWxlIGZvciB0aGUKK1RoZSA6Y2xhc3M6YEJ5dGVzRmVlZFBhcnNlcmAncyBBUEkgaXMgc2ltcGxlOyB5b3UgY3JlYXRlIGFuIGluc3RhbmNlLCBmZWVkIGl0IGEKK2J1bmNoIG9mIGJ5dGVzIHVudGlsIHRoZXJlJ3Mgbm8gbW9yZSB0byBmZWVkIGl0LCB0aGVuIGNsb3NlIHRoZSBwYXJzZXIgdG8KK3JldHJpZXZlIHRoZSByb290IG1lc3NhZ2Ugb2JqZWN0LiAgVGhlIDpjbGFzczpgQnl0ZXNGZWVkUGFyc2VyYCBpcyBleHRyZW1lbHkKK2FjY3VyYXRlIHdoZW4gcGFyc2luZyBzdGFuZGFyZHMtY29tcGxpYW50IG1lc3NhZ2VzLCBhbmQgaXQgZG9lcyBhIHZlcnkgZ29vZCBqb2IKK29mIHBhcnNpbmcgbm9uLWNvbXBsaWFudCBtZXNzYWdlcywgcHJvdmlkaW5nIGluZm9ybWF0aW9uIGFib3V0IGhvdyBhIG1lc3NhZ2UKK3dhcyBkZWVtZWQgYnJva2VuLiAgSXQgd2lsbCBwb3B1bGF0ZSBhIG1lc3NhZ2Ugb2JqZWN0J3MKKzphdHRyOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2UuZGVmZWN0c2AgYXR0cmlidXRlIHdpdGggYSBsaXN0IG9mIGFueQorcHJvYmxlbXMgaXQgZm91bmQgaW4gYSBtZXNzYWdlLiAgU2VlIHRoZSA6bW9kOmBlbWFpbC5lcnJvcnNgIG1vZHVsZSBmb3IgdGhlCiBsaXN0IG9mIGRlZmVjdHMgdGhhdCBpdCBjYW4gZmluZC4KIAotSGVyZSBpcyB0aGUgQVBJIGZvciB0aGUgOmNsYXNzOmBGZWVkUGFyc2VyYDoKK0hlcmUgaXMgdGhlIEFQSSBmb3IgdGhlIDpjbGFzczpgQnl0ZXNGZWVkUGFyc2VyYDoKIAogCi0uLiBjbGFzczo6IEZlZWRQYXJzZXIoX2ZhY3Rvcnk9ZW1haWwubWVzc2FnZS5NZXNzYWdlLCAqLCBwb2xpY3k9cG9saWN5LmNvbXBhdDMyKQorLi4gY2xhc3M6OiBCeXRlc0ZlZWRQYXJzZXIoX2ZhY3Rvcnk9Tm9uZSwgKiwgcG9saWN5PXBvbGljeS5jb21wYXQzMikKIAotICAgQ3JlYXRlIGEgOmNsYXNzOmBGZWVkUGFyc2VyYCBpbnN0YW5jZS4gIE9wdGlvbmFsICpfZmFjdG9yeSogaXMgYSBuby1hcmd1bWVudAotICAgY2FsbGFibGUgdGhhdCB3aWxsIGJlIGNhbGxlZCB3aGVuZXZlciBhIG5ldyBtZXNzYWdlIG9iamVjdCBpcyBuZWVkZWQuICBJdAotICAgZGVmYXVsdHMgdG8gdGhlIDpjbGFzczpgZW1haWwubWVzc2FnZS5NZXNzYWdlYCBjbGFzcy4KKyAgIENyZWF0ZSBhIDpjbGFzczpgQnl0ZXNGZWVkUGFyc2VyYCBpbnN0YW5jZS4gIE9wdGlvbmFsICpfZmFjdG9yeSogaXMgYQorICAgbm8tYXJndW1lbnQgY2FsbGFibGU7IGlmIG5vdCBzcGVjaWZpZWQgdXNlIHRoZQorICAgOmF0dHI6YH5lbWFpbC5wb2xpY3kuUG9saWN5Lm1lc3NhZ2VfZmFjdG9yeWAgZnJvbSB0aGUgKnBvbGljeSouICBDYWxsCisgICAqX2ZhY3RvcnkqIHdoZW5ldmVyIGEgbmV3IG1lc3NhZ2Ugb2JqZWN0IGlzIG5lZWRlZC4KIAotICAgSWYgKnBvbGljeSogaXMgc3BlY2lmaWVkIChpdCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIGEgOm1vZDpgfmVtYWlsLnBvbGljeWAKLSAgIGNsYXNzKSB1c2UgdGhlIHJ1bGVzIGl0IHNwZWNpZmllcyB0byB1cGRhdGUgdGhlIHJlcHJlc2VudGF0aW9uIG9mIHRoZQotICAgbWVzc2FnZS4gIElmICpwb2xpY3kqIGlzIG5vdCBzZXQsIHVzZSB0aGUgOmNsYXNzOmBjb21wYXQzMgotICAgPGVtYWlsLnBvbGljeS5Db21wYXQzMj5gIHBvbGljeSwgd2hpY2ggbWFpbnRhaW5zIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aAotICAgdGhlIFB5dGhvbiAzLjIgdmVyc2lvbiBvZiB0aGUgZW1haWwgcGFja2FnZS4gIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSB0aGUKKyAgIElmICpwb2xpY3kqIGlzIHNwZWNpZmllZCB1c2UgdGhlIHJ1bGVzIGl0IHNwZWNpZmllcyB0byB1cGRhdGUgdGhlCisgICByZXByZXNlbnRhdGlvbiBvZiB0aGUgbWVzc2FnZS4gIElmICpwb2xpY3kqIGlzIG5vdCBzZXQsIHVzZSB0aGUKKyAgIDpjbGFzczpgY29tcGF0MzIgPGVtYWlsLnBvbGljeS5Db21wYXQzMj5gIHBvbGljeSwgd2hpY2ggbWFpbnRhaW5zIGJhY2t3YXJkCisgICBjb21wYXRpYmlsaXR5IHdpdGggdGhlIFB5dGhvbiAzLjIgdmVyc2lvbiBvZiB0aGUgZW1haWwgcGFja2FnZSBhbmQgcHJvdmlkZXMKKyAgIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgYXMgdGhlIGRlZmF1bHQgZmFjdG9yeS4gIEFsbCBvdGhlciBwb2xpY2llcworICAgcHJvdmlkZSA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgYXMgdGhlIGRlZmF1bHQgKl9mYWN0b3J5Ki4gRm9yCisgICBtb3JlIGluZm9ybWF0aW9uIG9uIHdoYXQgZWxzZSAqcG9saWN5KiBjb250cm9scywgc2VlIHRoZQogICAgOm1vZDpgfmVtYWlsLnBvbGljeWAgZG9jdW1lbnRhdGlvbi4KIAotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMgQWRkZWQgdGhlICpwb2xpY3kqIGtleXdvcmQuCi0KLSAgIC4uIG1ldGhvZDo6IGZlZWQoZGF0YSkKLQotICAgICAgRmVlZCB0aGUgOmNsYXNzOmBGZWVkUGFyc2VyYCBzb21lIG1vcmUgZGF0YS4gICpkYXRhKiBzaG91bGQgYmUgYSBzdHJpbmcKLSAgICAgIGNvbnRhaW5pbmcgb25lIG9yIG1vcmUgbGluZXMuICBUaGUgbGluZXMgY2FuIGJlIHBhcnRpYWwgYW5kIHRoZQotICAgICAgOmNsYXNzOmBGZWVkUGFyc2VyYCB3aWxsIHN0aXRjaCBzdWNoIHBhcnRpYWwgbGluZXMgdG9nZXRoZXIgcHJvcGVybHkuICBUaGUKLSAgICAgIGxpbmVzIGluIHRoZSBzdHJpbmcgY2FuIGhhdmUgYW55IG9mIHRoZSBjb21tb24gdGhyZWUgbGluZSBlbmRpbmdzLAotICAgICAgY2FycmlhZ2UgcmV0dXJuLCBuZXdsaW5lLCBvciBjYXJyaWFnZSByZXR1cm4gYW5kIG5ld2xpbmUgKHRoZXkgY2FuIGV2ZW4gYmUKLSAgICAgIG1peGVkKS4KLQotICAgLi4gbWV0aG9kOjogY2xvc2UoKQotCi0gICAgICBDbG9zaW5nIGEgOmNsYXNzOmBGZWVkUGFyc2VyYCBjb21wbGV0ZXMgdGhlIHBhcnNpbmcgb2YgYWxsIHByZXZpb3VzbHkgZmVkCi0gICAgICBkYXRhLCBhbmQgcmV0dXJucyB0aGUgcm9vdCBtZXNzYWdlIG9iamVjdC4gIEl0IGlzIHVuZGVmaW5lZCB3aGF0IGhhcHBlbnMKLSAgICAgIGlmIHlvdSBmZWVkIG1vcmUgZGF0YSB0byBhIGNsb3NlZCA6Y2xhc3M6YEZlZWRQYXJzZXJgLgotCi0KLS4uIGNsYXNzOjogQnl0ZXNGZWVkUGFyc2VyKF9mYWN0b3J5PWVtYWlsLm1lc3NhZ2UuTWVzc2FnZSkKLQotICAgV29ya3MgZXhhY3RseSBsaWtlIDpjbGFzczpgRmVlZFBhcnNlcmAgZXhjZXB0IHRoYXQgdGhlIGlucHV0IHRvIHRoZQotICAgOm1ldGg6YH5GZWVkUGFyc2VyLmZlZWRgIG1ldGhvZCBtdXN0IGJlIGJ5dGVzIGFuZCBub3Qgc3RyaW5nLgorICAgTm90ZTogKipUaGUgcG9saWN5IGtleXdvcmQgc2hvdWxkIGFsd2F5cyBiZSBzcGVjaWZpZWQqKjsgVGhlIGRlZmF1bHQgd2lsbAorICAgY2hhbmdlIHRvIDpkYXRhOmBlbWFpbC5wb2xpY3kuZGVmYXVsdGAgaW4gYSBmdXR1cmUgdmVyc2lvbiBvZiBQeXRob24uCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMyBBZGRlZCB0aGUgKnBvbGljeSoga2V5d29yZC4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42ICpfZmFjdG9yeSogZGVmYXVsdHMgdG8gdGhlIHBvbGljeSBgYG1lc3NhZ2VfZmFjdG9yeWBgLgogCi1QYXJzZXIgY2xhc3MgQVBJCi1eXl5eXl5eXl5eXl5eXl5eCiAKLVRoZSA6Y2xhc3M6YFBhcnNlcmAgY2xhc3MsIGltcG9ydGVkIGZyb20gdGhlIDptb2Q6YGVtYWlsLnBhcnNlcmAgbW9kdWxlLAorICAgLi4gbWV0aG9kOjogZmVlZChkYXRhKQorCisgICAgICBGZWVkIHRoZSBwYXJzZXIgc29tZSBtb3JlIGRhdGEuICAqZGF0YSogc2hvdWxkIGJlIGEgOnRlcm06YGJ5dGVzLWxpa2UKKyAgICAgIG9iamVjdGAgY29udGFpbmluZyBvbmUgb3IgbW9yZSBsaW5lcy4gIFRoZSBsaW5lcyBjYW4gYmUgcGFydGlhbCBhbmQgdGhlCisgICAgICBwYXJzZXIgd2lsbCBzdGl0Y2ggc3VjaCBwYXJ0aWFsIGxpbmVzIHRvZ2V0aGVyIHByb3Blcmx5LiAgVGhlIGxpbmVzIGNhbgorICAgICAgaGF2ZSBhbnkgb2YgdGhlIHRocmVlIGNvbW1vbiBsaW5lIGVuZGluZ3M6IGNhcnJpYWdlIHJldHVybiwgbmV3bGluZSwgb3IKKyAgICAgIGNhcnJpYWdlIHJldHVybiBhbmQgbmV3bGluZSAodGhleSBjYW4gZXZlbiBiZSBtaXhlZCkuCisKKworICAgLi4gbWV0aG9kOjogY2xvc2UoKQorCisgICAgICBDb21wbGV0ZSB0aGUgcGFyc2luZyBvZiBhbGwgcHJldmlvdXNseSBmZWQgZGF0YSBhbmQgcmV0dXJuIHRoZSByb290CisgICAgICBtZXNzYWdlIG9iamVjdC4gIEl0IGlzIHVuZGVmaW5lZCB3aGF0IGhhcHBlbnMgaWYgOm1ldGg6YH5mZWVkYCBpcyBjYWxsZWQKKyAgICAgIGFmdGVyIHRoaXMgbWV0aG9kIGhhcyBiZWVuIGNhbGxlZC4KKworCisuLiBjbGFzczo6IEZlZWRQYXJzZXIoX2ZhY3Rvcnk9Tm9uZSwgKiwgcG9saWN5PXBvbGljeS5jb21wYXQzMikKKworICAgV29ya3MgbGlrZSA6Y2xhc3M6YEJ5dGVzRmVlZFBhcnNlcmAgZXhjZXB0IHRoYXQgdGhlIGlucHV0IHRvIHRoZQorICAgOm1ldGg6YH5CeXRlc0ZlZWRQYXJzZXIuZmVlZGAgbWV0aG9kIG11c3QgYmUgYSBzdHJpbmcuICBUaGlzIGlzIG9mIGxpbWl0ZWQKKyAgIHV0aWxpdHksIHNpbmNlIHRoZSBvbmx5IHdheSBmb3Igc3VjaCBhIG1lc3NhZ2UgdG8gYmUgdmFsaWQgaXMgZm9yIGl0IHRvCisgICBjb250YWluIG9ubHkgQVNDSUkgdGV4dCBvciwgaWYgOmF0dHI6YH5lbWFpbC5wb2xpY3kuUG9saWN5LnV0ZjhgIGlzCisgICBgYFRydWVgYCwgbm8gYmluYXJ5IGF0dGFjaG1lbnRzLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMyBBZGRlZCB0aGUgKnBvbGljeSoga2V5d29yZC4KKworCitQYXJzZXIgQVBJCiteXl5eXl5eXl5eCisKK1RoZSA6Y2xhc3M6YEJ5dGVzUGFyc2VyYCBjbGFzcywgaW1wb3J0ZWQgZnJvbSB0aGUgOm1vZDpgZW1haWwucGFyc2VyYCBtb2R1bGUsCiBwcm92aWRlcyBhbiBBUEkgdGhhdCBjYW4gYmUgdXNlZCB0byBwYXJzZSBhIG1lc3NhZ2Ugd2hlbiB0aGUgY29tcGxldGUgY29udGVudHMKLW9mIHRoZSBtZXNzYWdlIGFyZSBhdmFpbGFibGUgaW4gYSBzdHJpbmcgb3IgZmlsZS4gIFRoZSA6bW9kOmBlbWFpbC5wYXJzZXJgCi1tb2R1bGUgYWxzbyBwcm92aWRlcyBoZWFkZXItb25seSBwYXJzZXJzLCBjYWxsZWQgOmNsYXNzOmBIZWFkZXJQYXJzZXJgIGFuZAotOmNsYXNzOmBCeXRlc0hlYWRlclBhcnNlcmAsIHdoaWNoIGNhbiBiZSB1c2VkIGlmIHlvdSdyZSBvbmx5IGludGVyZXN0ZWQgaW4gdGhlCi1oZWFkZXJzIG9mIHRoZSBtZXNzYWdlLiAgOmNsYXNzOmBIZWFkZXJQYXJzZXJgIGFuZCA6Y2xhc3M6YEJ5dGVzSGVhZGVyUGFyc2VyYAorb2YgdGhlIG1lc3NhZ2UgYXJlIGF2YWlsYWJsZSBpbiBhIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAgb3IgZmlsZS4gIFRoZQorOm1vZDpgZW1haWwucGFyc2VyYCBtb2R1bGUgYWxzbyBwcm92aWRlcyA6Y2xhc3M6YFBhcnNlcmAgZm9yIHBhcnNpbmcgc3RyaW5ncywKK2FuZCBoZWFkZXItb25seSBwYXJzZXJzLCA6Y2xhc3M6YEJ5dGVzSGVhZGVyUGFyc2VyYCBhbmQKKzpjbGFzczpgSGVhZGVyUGFyc2VyYCwgd2hpY2ggY2FuIGJlIHVzZWQgaWYgeW91J3JlIG9ubHkgaW50ZXJlc3RlZCBpbiB0aGUKK2hlYWRlcnMgb2YgdGhlIG1lc3NhZ2UuICA6Y2xhc3M6YEJ5dGVzSGVhZGVyUGFyc2VyYCBhbmQgOmNsYXNzOmBIZWFkZXJQYXJzZXJgCiBjYW4gYmUgbXVjaCBmYXN0ZXIgaW4gdGhlc2Ugc2l0dWF0aW9ucywgc2luY2UgdGhleSBkbyBub3QgYXR0ZW1wdCB0byBwYXJzZSB0aGUKLW1lc3NhZ2UgYm9keSwgaW5zdGVhZCBzZXR0aW5nIHRoZSBwYXlsb2FkIHRvIHRoZSByYXcgYm9keSBhcyBhIHN0cmluZy4gIFRoZXkKLWhhdmUgdGhlIHNhbWUgQVBJIGFzIHRoZSA6Y2xhc3M6YFBhcnNlcmAgYW5kIDpjbGFzczpgQnl0ZXNQYXJzZXJgIGNsYXNzZXMuCi0KLS4uIHZlcnNpb25hZGRlZDo6IDMuMwotICAgVGhlIEJ5dGVzSGVhZGVyUGFyc2VyIGNsYXNzLgorbWVzc2FnZSBib2R5LCBpbnN0ZWFkIHNldHRpbmcgdGhlIHBheWxvYWQgdG8gdGhlIHJhdyBib2R5LgogCiAKLS4uIGNsYXNzOjogUGFyc2VyKF9jbGFzcz1lbWFpbC5tZXNzYWdlLk1lc3NhZ2UsICosIHBvbGljeT1wb2xpY3kuY29tcGF0MzIpCisuLiBjbGFzczo6IEJ5dGVzUGFyc2VyKF9jbGFzcz1Ob25lLCAqLCBwb2xpY3k9cG9saWN5LmNvbXBhdDMyKQogCi0gICBUaGUgY29uc3RydWN0b3IgZm9yIHRoZSA6Y2xhc3M6YFBhcnNlcmAgY2xhc3MgdGFrZXMgYW4gb3B0aW9uYWwgYXJndW1lbnQKLSAgICpfY2xhc3MqLiAgVGhpcyBtdXN0IGJlIGEgY2FsbGFibGUgZmFjdG9yeSAoc3VjaCBhcyBhIGZ1bmN0aW9uIG9yIGEgY2xhc3MpLCBhbmQKLSAgIGl0IGlzIHVzZWQgd2hlbmV2ZXIgYSBzdWItbWVzc2FnZSBvYmplY3QgbmVlZHMgdG8gYmUgY3JlYXRlZC4gIEl0IGRlZmF1bHRzIHRvCi0gICA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIChzZWUgOm1vZDpgZW1haWwubWVzc2FnZWApLiAgVGhlIGZhY3Rvcnkgd2lsbAotICAgYmUgY2FsbGVkIHdpdGhvdXQgYXJndW1lbnRzLgorICAgQ3JlYXRlIGEgOmNsYXNzOmBCeXRlc1BhcnNlcmAgaW5zdGFuY2UuICBUaGUgKl9jbGFzcyogYW5kICpwb2xpY3kqCisgICBhcmd1bWVudHMgaGF2ZSB0aGUgc2FtZSBtZWFuaW5nIGFuZCBzZW1hdG5pY3MgYXMgdGhlICpfZmFjdG9yeSoKKyAgIGFuZCAqcG9saWN5KiBhcmd1bWVudHMgb2YgOmNsYXNzOmBCeXRlc0ZlZWRQYXJzZXJgLgogCi0gICBJZiAqcG9saWN5KiBpcyBzcGVjaWZpZWQgKGl0IG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgYSA6bW9kOmB+ZW1haWwucG9saWN5YAotICAgY2xhc3MpIHVzZSB0aGUgcnVsZXMgaXQgc3BlY2lmaWVzIHRvIHVwZGF0ZSB0aGUgcmVwcmVzZW50YXRpb24gb2YgdGhlCi0gICBtZXNzYWdlLiAgSWYgKnBvbGljeSogaXMgbm90IHNldCwgdXNlIHRoZSA6Y2xhc3M6YGNvbXBhdDMyCi0gICA8ZW1haWwucG9saWN5LkNvbXBhdDMyPmAgcG9saWN5LCB3aGljaCBtYWludGFpbnMgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoCi0gICB0aGUgUHl0aG9uIDMuMiB2ZXJzaW9uIG9mIHRoZSBlbWFpbCBwYWNrYWdlLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIHRoZQotICAgOm1vZDpgfmVtYWlsLnBvbGljeWAgZG9jdW1lbnRhdGlvbi4KKyAgIE5vdGU6ICoqVGhlIHBvbGljeSBrZXl3b3JkIHNob3VsZCBhbHdheXMgYmUgc3BlY2lmaWVkKio7IFRoZSBkZWZhdWx0IHdpbGwKKyAgIGNoYW5nZSB0byA6ZGF0YTpgZW1haWwucG9saWN5LmRlZmF1bHRgIGluIGEgZnV0dXJlIHZlcnNpb24gb2YgUHl0aG9uLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwogICAgICAgUmVtb3ZlZCB0aGUgKnN0cmljdCogYXJndW1lbnQgdGhhdCB3YXMgZGVwcmVjYXRlZCBpbiAyLjQuICBBZGRlZCB0aGUKICAgICAgICpwb2xpY3kqIGtleXdvcmQuCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNiAqX2NsYXNzKiBkZWZhdWx0cyB0byB0aGUgcG9saWN5IGBgbWVzc2FnZV9mYWN0b3J5YGAuCiAKLSAgIFRoZSBvdGhlciBwdWJsaWMgOmNsYXNzOmBQYXJzZXJgIG1ldGhvZHMgYXJlOgotCi0KLSAgIC4uIG1ldGhvZDo6IHBhcnNlKGZwLCBoZWFkZXJzb25seT1GYWxzZSkKLQotICAgICAgUmVhZCBhbGwgdGhlIGRhdGEgZnJvbSB0aGUgZmlsZS1saWtlIG9iamVjdCAqZnAqLCBwYXJzZSB0aGUgcmVzdWx0aW5nCi0gICAgICB0ZXh0LCBhbmQgcmV0dXJuIHRoZSByb290IG1lc3NhZ2Ugb2JqZWN0LiAgKmZwKiBtdXN0IHN1cHBvcnQgYm90aCB0aGUKLSAgICAgIDptZXRoOmB+aW8uVGV4dElPQmFzZS5yZWFkbGluZWAgYW5kIHRoZSA6bWV0aDpgfmlvLlRleHRJT0Jhc2UucmVhZGAKLSAgICAgIG1ldGhvZHMgb24gZmlsZS1saWtlIG9iamVjdHMuCi0KLSAgICAgIFRoZSB0ZXh0IGNvbnRhaW5lZCBpbiAqZnAqIG11c3QgYmUgZm9ybWF0dGVkIGFzIGEgYmxvY2sgb2YgOnJmYzpgMjgyMmAKLSAgICAgIHN0eWxlIGhlYWRlcnMgYW5kIGhlYWRlciBjb250aW51YXRpb24gbGluZXMsIG9wdGlvbmFsbHkgcHJlY2VkZWQgYnkgYW4KLSAgICAgIGVudmVsb3BlIGhlYWRlci4gIFRoZSBoZWFkZXIgYmxvY2sgaXMgdGVybWluYXRlZCBlaXRoZXIgYnkgdGhlIGVuZCBvZiB0aGUKLSAgICAgIGRhdGEgb3IgYnkgYSBibGFuayBsaW5lLiAgRm9sbG93aW5nIHRoZSBoZWFkZXIgYmxvY2sgaXMgdGhlIGJvZHkgb2YgdGhlCi0gICAgICBtZXNzYWdlICh3aGljaCBtYXkgY29udGFpbiBNSU1FLWVuY29kZWQgc3VicGFydHMpLgotCi0gICAgICBPcHRpb25hbCAqaGVhZGVyc29ubHkqIGlzIGEgZmxhZyBzcGVjaWZ5aW5nIHdoZXRoZXIgdG8gc3RvcCBwYXJzaW5nIGFmdGVyCi0gICAgICByZWFkaW5nIHRoZSBoZWFkZXJzIG9yIG5vdC4gIFRoZSBkZWZhdWx0IGlzIGBgRmFsc2VgYCwgbWVhbmluZyBpdCBwYXJzZXMKLSAgICAgIHRoZSBlbnRpcmUgY29udGVudHMgb2YgdGhlIGZpbGUuCi0KLSAgIC4uIG1ldGhvZDo6IHBhcnNlc3RyKHRleHQsIGhlYWRlcnNvbmx5PUZhbHNlKQotCi0gICAgICBTaW1pbGFyIHRvIHRoZSA6bWV0aDpgcGFyc2VgIG1ldGhvZCwgZXhjZXB0IGl0IHRha2VzIGEgc3RyaW5nIG9iamVjdAotICAgICAgaW5zdGVhZCBvZiBhIGZpbGUtbGlrZSBvYmplY3QuICBDYWxsaW5nIHRoaXMgbWV0aG9kIG9uIGEgc3RyaW5nIGlzIGV4YWN0bHkKLSAgICAgIGVxdWl2YWxlbnQgdG8gd3JhcHBpbmcgKnRleHQqIGluIGEgOmNsYXNzOmB+aW8uU3RyaW5nSU9gIGluc3RhbmNlIGZpcnN0IGFuZAotICAgICAgY2FsbGluZyA6bWV0aDpgcGFyc2VgLgotCi0gICAgICBPcHRpb25hbCAqaGVhZGVyc29ubHkqIGlzIGFzIHdpdGggdGhlIDptZXRoOmBwYXJzZWAgbWV0aG9kLgotCi0KLS4uIGNsYXNzOjogQnl0ZXNQYXJzZXIoX2NsYXNzPWVtYWlsLm1lc3NhZ2UuTWVzc2FnZSwgKiwgcG9saWN5PXBvbGljeS5jb21wYXQzMikKLQotICAgVGhpcyBjbGFzcyBpcyBleGFjdGx5IHBhcmFsbGVsIHRvIDpjbGFzczpgUGFyc2VyYCwgYnV0IGhhbmRsZXMgYnl0ZXMgaW5wdXQuCi0gICBUaGUgKl9jbGFzcyogYW5kICpzdHJpY3QqIGFyZ3VtZW50cyBhcmUgaW50ZXJwcmV0ZWQgaW4gdGhlIHNhbWUgd2F5IGFzIGZvcgotICAgdGhlIDpjbGFzczpgUGFyc2VyYCBjb25zdHJ1Y3Rvci4KLQotICAgSWYgKnBvbGljeSogaXMgc3BlY2lmaWVkIChpdCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIGEgOm1vZDpgfmVtYWlsLnBvbGljeWAKLSAgIGNsYXNzKSB1c2UgdGhlIHJ1bGVzIGl0IHNwZWNpZmllcyB0byB1cGRhdGUgdGhlIHJlcHJlc2VudGF0aW9uIG9mIHRoZQotICAgbWVzc2FnZS4gIElmICpwb2xpY3kqIGlzIG5vdCBzZXQsIHVzZSB0aGUgOmNsYXNzOmBjb21wYXQzMgotICAgPGVtYWlsLnBvbGljeS5Db21wYXQzMj5gIHBvbGljeSwgd2hpY2ggbWFpbnRhaW5zIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aAotICAgdGhlIFB5dGhvbiAzLjIgdmVyc2lvbiBvZiB0aGUgZW1haWwgcGFja2FnZS4gIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSB0aGUKLSAgIDptb2Q6YH5lbWFpbC5wb2xpY3lgIGRvY3VtZW50YXRpb24uCi0KLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCi0gICAgICBSZW1vdmVkIHRoZSAqc3RyaWN0KiBhcmd1bWVudC4gIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgogCiAgICAuLiBtZXRob2Q6OiBwYXJzZShmcCwgaGVhZGVyc29ubHk9RmFsc2UpCiAKICAgICAgIFJlYWQgYWxsIHRoZSBkYXRhIGZyb20gdGhlIGJpbmFyeSBmaWxlLWxpa2Ugb2JqZWN0ICpmcCosIHBhcnNlIHRoZQogICAgICAgcmVzdWx0aW5nIGJ5dGVzLCBhbmQgcmV0dXJuIHRoZSBtZXNzYWdlIG9iamVjdC4gICpmcCogbXVzdCBzdXBwb3J0CiAgICAgICBib3RoIHRoZSA6bWV0aDpgfmlvLklPQmFzZS5yZWFkbGluZWAgYW5kIHRoZSA6bWV0aDpgfmlvLklPQmFzZS5yZWFkYAotICAgICAgbWV0aG9kcyBvbiBmaWxlLWxpa2Ugb2JqZWN0cy4KKyAgICAgIG1ldGhvZHMuCiAKLSAgICAgIFRoZSBieXRlcyBjb250YWluZWQgaW4gKmZwKiBtdXN0IGJlIGZvcm1hdHRlZCBhcyBhIGJsb2NrIG9mIDpyZmM6YDI4MjJgCisgICAgICBUaGUgYnl0ZXMgY29udGFpbmVkIGluICpmcCogbXVzdCBiZSBmb3JtYXR0ZWQgYXMgYSBibG9jayBvZiA6cmZjOmA1MzIyYAorICAgICAgKG9yLCBpZiA6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kudXRmOGAgaXMgYGBUcnVlYGAsIDpyZmM6YDY1MzJgKQogICAgICAgc3R5bGUgaGVhZGVycyBhbmQgaGVhZGVyIGNvbnRpbnVhdGlvbiBsaW5lcywgb3B0aW9uYWxseSBwcmVjZWRlZCBieSBhbgogICAgICAgZW52ZWxvcGUgaGVhZGVyLiAgVGhlIGhlYWRlciBibG9jayBpcyB0ZXJtaW5hdGVkIGVpdGhlciBieSB0aGUgZW5kIG9mIHRoZQogICAgICAgZGF0YSBvciBieSBhIGJsYW5rIGxpbmUuICBGb2xsb3dpbmcgdGhlIGhlYWRlciBibG9jayBpcyB0aGUgYm9keSBvZiB0aGUKQEAgLTIwMiw3MyArMTcwLDEyMSBAQAogICAgICAgcmVhZGluZyB0aGUgaGVhZGVycyBvciBub3QuICBUaGUgZGVmYXVsdCBpcyBgYEZhbHNlYGAsIG1lYW5pbmcgaXQgcGFyc2VzCiAgICAgICB0aGUgZW50aXJlIGNvbnRlbnRzIG9mIHRoZSBmaWxlLgogCi0gICAuLiBtZXRob2Q6OiBwYXJzZWJ5dGVzKHRleHQsIGhlYWRlcnNvbmx5PUZhbHNlKQorCisgICAuLiBtZXRob2Q6OiBwYXJzZWJ5dGVzKGJ5dGVzLCBoZWFkZXJzb25seT1GYWxzZSkKIAogICAgICAgU2ltaWxhciB0byB0aGUgOm1ldGg6YHBhcnNlYCBtZXRob2QsIGV4Y2VwdCBpdCB0YWtlcyBhIDp0ZXJtOmBieXRlcy1saWtlCi0gICAgICBvYmplY3RgIGluc3RlYWQgb2YgYSBmaWxlLWxpa2Ugb2JqZWN0LiAgQ2FsbGluZyB0aGlzIG1ldGhvZCBpcyBlcXVpdmFsZW50Ci0gICAgICB0byB3cmFwcGluZyAqdGV4dCogaW4gYSA6Y2xhc3M6YH5pby5CeXRlc0lPYCBpbnN0YW5jZSBmaXJzdCBhbmQgY2FsbGluZwotICAgICAgOm1ldGg6YHBhcnNlYC4KKyAgICAgIG9iamVjdGAgaW5zdGVhZCBvZiBhIGZpbGUtbGlrZSBvYmplY3QuICBDYWxsaW5nIHRoaXMgbWV0aG9kIG9uIGEKKyAgICAgIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAgaXMgZXF1aXZhbGVudCB0byB3cmFwcGluZyAqYnl0ZXMqIGluIGEKKyAgICAgIDpjbGFzczpgfmlvLkJ5dGVzSU9gIGluc3RhbmNlIGZpcnN0IGFuZCBjYWxsaW5nIDptZXRoOmBwYXJzZWAuCiAKICAgICAgIE9wdGlvbmFsICpoZWFkZXJzb25seSogaXMgYXMgd2l0aCB0aGUgOm1ldGg6YHBhcnNlYCBtZXRob2QuCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCiAKKy4uIGNsYXNzOjogQnl0ZXNIZWFkZXJQYXJzZXIoX2NsYXNzPU5vbmUsICosIHBvbGljeT1wb2xpY3kuY29tcGF0MzIpCisKKyAgIEV4YWN0bHkgbGlrZSA6Y2xhc3M6YEJ5dGVzUGFyc2VyYCwgZXhjZXB0IHRoYXQgKmhlYWRlcnNvbmx5KgorICAgZGVmYXVsdHMgdG8gYGBUcnVlYGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGNsYXNzOjogUGFyc2VyKF9jbGFzcz1Ob25lLCAqLCBwb2xpY3k9cG9saWN5LmNvbXBhdDMyKQorCisgICBUaGlzIGNsYXNzIGlzIHBhcmFsbGVsIHRvIDpjbGFzczpgQnl0ZXNQYXJzZXJgLCBidXQgaGFuZGxlcyBzdHJpbmcgaW5wdXQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBSZW1vdmVkIHRoZSAqc3RyaWN0KiBhcmd1bWVudC4gIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYgKl9jbGFzcyogZGVmYXVsdHMgdG8gdGhlIHBvbGljeSBgYG1lc3NhZ2VfZmFjdG9yeWBgLgorCisKKyAgIC4uIG1ldGhvZDo6IHBhcnNlKGZwLCBoZWFkZXJzb25seT1GYWxzZSkKKworICAgICAgUmVhZCBhbGwgdGhlIGRhdGEgZnJvbSB0aGUgdGV4dC1tb2RlIGZpbGUtbGlrZSBvYmplY3QgKmZwKiwgcGFyc2UgdGhlCisgICAgICByZXN1bHRpbmcgdGV4dCwgYW5kIHJldHVybiB0aGUgcm9vdCBtZXNzYWdlIG9iamVjdC4gICpmcCogbXVzdCBzdXBwb3J0CisgICAgICBib3RoIHRoZSA6bWV0aDpgfmlvLlRleHRJT0Jhc2UucmVhZGxpbmVgIGFuZCB0aGUKKyAgICAgIDptZXRoOmB+aW8uVGV4dElPQmFzZS5yZWFkYCBtZXRob2RzIG9uIGZpbGUtbGlrZSBvYmplY3RzLgorCisgICAgICBPdGhlciB0aGFuIHRoZSB0ZXh0IG1vZGUgcmVxdWlyZW1lbnQsIHRoaXMgbWV0aG9kIG9wZXJhdGVzIGxpa2UKKyAgICAgIDptZXRoOmBCeXRlc1BhcnNlci5wYXJzZWAuCisKKworICAgLi4gbWV0aG9kOjogcGFyc2VzdHIodGV4dCwgaGVhZGVyc29ubHk9RmFsc2UpCisKKyAgICAgIFNpbWlsYXIgdG8gdGhlIDptZXRoOmBwYXJzZWAgbWV0aG9kLCBleGNlcHQgaXQgdGFrZXMgYSBzdHJpbmcgb2JqZWN0CisgICAgICBpbnN0ZWFkIG9mIGEgZmlsZS1saWtlIG9iamVjdC4gIENhbGxpbmcgdGhpcyBtZXRob2Qgb24gYSBzdHJpbmcgaXMKKyAgICAgIGVxdWl2YWxlbnQgdG8gd3JhcHBpbmcgKnRleHQqIGluIGEgOmNsYXNzOmB+aW8uU3RyaW5nSU9gIGluc3RhbmNlIGZpcnN0CisgICAgICBhbmQgY2FsbGluZyA6bWV0aDpgcGFyc2VgLgorCisgICAgICBPcHRpb25hbCAqaGVhZGVyc29ubHkqIGlzIGFzIHdpdGggdGhlIDptZXRoOmBwYXJzZWAgbWV0aG9kLgorCisKKy4uIGNsYXNzOjogSGVhZGVyUGFyc2VyKF9jbGFzcz1Ob25lLCAqLCBwb2xpY3k9cG9saWN5LmNvbXBhdDMyKQorCisgICBFeGFjdGx5IGxpa2UgOmNsYXNzOmBQYXJzZXJgLCBleGNlcHQgdGhhdCAqaGVhZGVyc29ubHkqCisgICBkZWZhdWx0cyB0byBgYFRydWVgYC4KKworCiBTaW5jZSBjcmVhdGluZyBhIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSBmcm9tIGEgc3RyaW5nIG9yIGEgZmlsZSBvYmplY3QgaXMgc3VjaAogYSBjb21tb24gdGFzaywgZm91ciBmdW5jdGlvbnMgYXJlIHByb3ZpZGVkIGFzIGEgY29udmVuaWVuY2UuICBUaGV5IGFyZSBhdmFpbGFibGUKIGluIHRoZSB0b3AtbGV2ZWwgOm1vZDpgZW1haWxgIHBhY2thZ2UgbmFtZXNwYWNlLgogCiAuLiBjdXJyZW50bW9kdWxlOjogZW1haWwKIAotLi4gZnVuY3Rpb246OiBtZXNzYWdlX2Zyb21fc3RyaW5nKHMsIF9jbGFzcz1lbWFpbC5tZXNzYWdlLk1lc3NhZ2UsICosIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9cG9saWN5LmNvbXBhdDMyKQogCi0gICBSZXR1cm4gYSBtZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmUgZnJvbSBhIHN0cmluZy4gIFRoaXMgaXMgZXhhY3RseSBlcXVpdmFsZW50IHRvCisuLiBmdW5jdGlvbjo6IG1lc3NhZ2VfZnJvbV9ieXRlcyhzLCBfY2xhc3M9Tm9uZSwgKiwgcG9saWN5PXBvbGljeS5jb21wYXQzMikKKworICAgUmV0dXJuIGEgbWVzc2FnZSBvYmplY3Qgc3RydWN0dXJlIGZyb20gYSA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgLiAgVGhpcyBpcworICAgZXF1aXZhbGVudCB0byBgYEJ5dGVzUGFyc2VyKCkucGFyc2VieXRlcyhzKWBgLiAgT3B0aW9uYWwgKl9jbGFzcyogYW5kCisgICAqc3RyaWN0KiBhcmUgaW50ZXJwcmV0ZWQgYXMgd2l0aCB0aGUgOmNsYXNzOmB+ZW1haWwucGFyc2VyLkJ5dGVzUGFyc2VyYCBjbGFzcworICAgY29uc3RydWN0b3IuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFJlbW92ZWQgdGhlICpzdHJpY3QqIGFyZ3VtZW50LiAgQWRkZWQgdGhlICpwb2xpY3kqIGtleXdvcmQuCisKKworLi4gZnVuY3Rpb246OiBtZXNzYWdlX2Zyb21fYmluYXJ5X2ZpbGUoZnAsIF9jbGFzcz1Ob25lLCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5PXBvbGljeS5jb21wYXQzMikKKworICAgUmV0dXJuIGEgbWVzc2FnZSBvYmplY3Qgc3RydWN0dXJlIHRyZWUgZnJvbSBhbiBvcGVuIGJpbmFyeSA6dGVybTpgZmlsZQorICAgb2JqZWN0YC4gIFRoaXMgaXMgZXF1aXZhbGVudCB0byBgYEJ5dGVzUGFyc2VyKCkucGFyc2UoZnApYGAuICAqX2NsYXNzKiBhbmQKKyAgICpwb2xpY3kqIGFyZSBpbnRlcnByZXRlZCBhcyB3aXRoIHRoZSA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuQnl0ZXNQYXJzZXJgIGNsYXNzCisgICBjb25zdHJ1Y3Rvci4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgUmVtb3ZlZCB0aGUgKnN0cmljdCogYXJndW1lbnQuICBBZGRlZCB0aGUgKnBvbGljeSoga2V5d29yZC4KKworCisuLiBmdW5jdGlvbjo6IG1lc3NhZ2VfZnJvbV9zdHJpbmcocywgX2NsYXNzPU5vbmUsICosIHBvbGljeT1wb2xpY3kuY29tcGF0MzIpCisKKyAgIFJldHVybiBhIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSBmcm9tIGEgc3RyaW5nLiAgVGhpcyBpcyBlcXVpdmFsZW50IHRvCiAgICBgYFBhcnNlcigpLnBhcnNlc3RyKHMpYGAuICAqX2NsYXNzKiBhbmQgKnBvbGljeSogYXJlIGludGVycHJldGVkIGFzCiAgICB3aXRoIHRoZSA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuUGFyc2VyYCBjbGFzcyBjb25zdHJ1Y3Rvci4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKICAgICAgIFJlbW92ZWQgdGhlICpzdHJpY3QqIGFyZ3VtZW50LiAgQWRkZWQgdGhlICpwb2xpY3kqIGtleXdvcmQuCiAKLS4uIGZ1bmN0aW9uOjogbWVzc2FnZV9mcm9tX2J5dGVzKHMsIF9jbGFzcz1lbWFpbC5tZXNzYWdlLk1lc3NhZ2UsICosIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeT1wb2xpY3kuY29tcGF0MzIpCiAKLSAgIFJldHVybiBhIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSBmcm9tIGEgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YC4gIFRoaXMgaXMgZXhhY3RseQotICAgZXF1aXZhbGVudCB0byBgYEJ5dGVzUGFyc2VyKCkucGFyc2VieXRlcyhzKWBgLiAgT3B0aW9uYWwgKl9jbGFzcyogYW5kCi0gICAqc3RyaWN0KiBhcmUgaW50ZXJwcmV0ZWQgYXMgd2l0aCB0aGUgOmNsYXNzOmB+ZW1haWwucGFyc2VyLlBhcnNlcmAgY2xhc3MKLSAgIGNvbnN0cnVjdG9yLgotCi0gICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCi0gICAgICBSZW1vdmVkIHRoZSAqc3RyaWN0KiBhcmd1bWVudC4gIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgotCi0uLiBmdW5jdGlvbjo6IG1lc3NhZ2VfZnJvbV9maWxlKGZwLCBfY2xhc3M9ZW1haWwubWVzc2FnZS5NZXNzYWdlLCAqLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeT1wb2xpY3kuY29tcGF0MzIpCisuLiBmdW5jdGlvbjo6IG1lc3NhZ2VfZnJvbV9maWxlKGZwLCBfY2xhc3M9Tm9uZSwgKiwgcG9saWN5PXBvbGljeS5jb21wYXQzMikKIAogICAgUmV0dXJuIGEgbWVzc2FnZSBvYmplY3Qgc3RydWN0dXJlIHRyZWUgZnJvbSBhbiBvcGVuIDp0ZXJtOmBmaWxlIG9iamVjdGAuCi0gICBUaGlzIGlzIGV4YWN0bHkgZXF1aXZhbGVudCB0byBgYFBhcnNlcigpLnBhcnNlKGZwKWBgLiAgKl9jbGFzcyoKLSAgIGFuZCAqcG9saWN5KiBhcmUgaW50ZXJwcmV0ZWQgYXMgd2l0aCB0aGUgOmNsYXNzOmB+ZW1haWwucGFyc2VyLlBhcnNlcmAgY2xhc3MKLSAgIGNvbnN0cnVjdG9yLgorICAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIGBgUGFyc2VyKCkucGFyc2UoZnApYGAuICAqX2NsYXNzKiBhbmQgKnBvbGljeSogYXJlCisgICBpbnRlcnByZXRlZCBhcyB3aXRoIHRoZSA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuUGFyc2VyYCBjbGFzcyBjb25zdHJ1Y3Rvci4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKICAgICAgIFJlbW92ZWQgdGhlICpzdHJpY3QqIGFyZ3VtZW50LiAgQWRkZWQgdGhlICpwb2xpY3kqIGtleXdvcmQuCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNiAqX2NsYXNzKiBkZWZhdWx0cyB0byB0aGUgcG9saWN5IGBgbWVzc2FnZV9mYWN0b3J5YGAuCiAKLS4uIGZ1bmN0aW9uOjogbWVzc2FnZV9mcm9tX2JpbmFyeV9maWxlKGZwLCBfY2xhc3M9ZW1haWwubWVzc2FnZS5NZXNzYWdlLCAqLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9cG9saWN5LmNvbXBhdDMyKQogCi0gICBSZXR1cm4gYSBtZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmUgdHJlZSBmcm9tIGFuIG9wZW4gYmluYXJ5IDp0ZXJtOmBmaWxlCi0gICBvYmplY3RgLiAgVGhpcyBpcyBleGFjdGx5IGVxdWl2YWxlbnQgdG8gYGBCeXRlc1BhcnNlcigpLnBhcnNlKGZwKWBgLgotICAgKl9jbGFzcyogYW5kICpwb2xpY3kqIGFyZSBpbnRlcnByZXRlZCBhcyB3aXRoIHRoZQotICAgOmNsYXNzOmB+ZW1haWwucGFyc2VyLlBhcnNlcmAgY2xhc3MgY29uc3RydWN0b3IuCi0KLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKLSAgICAgIFJlbW92ZWQgdGhlICpzdHJpY3QqIGFyZ3VtZW50LiAgQWRkZWQgdGhlICpwb2xpY3kqIGtleXdvcmQuCi0KLUhlcmUncyBhbiBleGFtcGxlIG9mIGhvdyB5b3UgbWlnaHQgdXNlIHRoaXMgYXQgYW4gaW50ZXJhY3RpdmUgUHl0aG9uIHByb21wdDo6CitIZXJlJ3MgYW4gZXhhbXBsZSBvZiBob3cgeW91IG1pZ2h0IHVzZSA6ZnVuYzpgbWVzc2FnZV9mcm9tX2J5dGVzYCBhdCBhbgoraW50ZXJhY3RpdmUgUHl0aG9uIHByb21wdDo6CiAKICAgID4+PiBpbXBvcnQgZW1haWwKLSAgID4+PiBtc2cgPSBlbWFpbC5tZXNzYWdlX2Zyb21fc3RyaW5nKG15U3RyaW5nKSAgIyBkb2N0ZXN0OiArU0tJUAorICAgPj4+IG1zZyA9IGVtYWlsLm1lc3NhZ2VfZnJvbV9ieXRlcyhteUJ5dGVzKSAgIyBkb2N0ZXN0OiArU0tJUAogCiAKIEFkZGl0aW9uYWwgbm90ZXMKQEAgLTI3OCwzNSArMjk0LDI3IEBACiAKICogTW9zdCBub24tXCA6bWltZXR5cGU6YG11bHRpcGFydGAgdHlwZSBtZXNzYWdlcyBhcmUgcGFyc2VkIGFzIGEgc2luZ2xlIG1lc3NhZ2UKICAgb2JqZWN0IHdpdGggYSBzdHJpbmcgcGF5bG9hZC4gIFRoZXNlIG9iamVjdHMgd2lsbCByZXR1cm4gYGBGYWxzZWBgIGZvcgotICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5pc19tdWx0aXBhcnRgLiAgVGhlaXIKLSAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuZ2V0X3BheWxvYWRgIG1ldGhvZCB3aWxsIHJldHVybiBhIHN0cmluZyBvYmplY3QuCisgIDptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2UuaXNfbXVsdGlwYXJ0YCwgYW5kCisgIDptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2UuaXRlcl9wYXJ0c2Agd2lsbCB5aWVsZCBhbiBlbXB0eSBsaXN0LgogCiAqIEFsbCA6bWltZXR5cGU6YG11bHRpcGFydGAgdHlwZSBtZXNzYWdlcyB3aWxsIGJlIHBhcnNlZCBhcyBhIGNvbnRhaW5lciBtZXNzYWdlCiAgIG9iamVjdCB3aXRoIGEgbGlzdCBvZiBzdWItbWVzc2FnZSBvYmplY3RzIGZvciB0aGVpciBwYXlsb2FkLiAgVGhlIG91dGVyCiAgIGNvbnRhaW5lciBtZXNzYWdlIHdpbGwgcmV0dXJuIGBgVHJ1ZWBgIGZvcgotICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5pc19tdWx0aXBhcnRgIGFuZCB0aGVpcgotICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5nZXRfcGF5bG9hZGAgbWV0aG9kIHdpbGwgcmV0dXJuIHRoZSBsaXN0IG9mCi0gIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgc3VicGFydHMuCisgIDptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2UuaXNfbXVsdGlwYXJ0YCwgYW5kCisgIDptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2UuaXRlcl9wYXJ0c2Agd2lsbCB5aWVsZCBhIGxpc3Qgb2Ygc3VicGFydHMuCiAKLSogTW9zdCBtZXNzYWdlcyB3aXRoIGEgY29udGVudCB0eXBlIG9mIDptaW1ldHlwZTpgbWVzc2FnZS9cKmAgKGUuZy4KLSAgOm1pbWV0eXBlOmBtZXNzYWdlL2RlbGl2ZXJ5LXN0YXR1c2AgYW5kIDptaW1ldHlwZTpgbWVzc2FnZS9yZmM4MjJgKSB3aWxsIGFsc28gYmUKLSAgcGFyc2VkIGFzIGNvbnRhaW5lciBvYmplY3QgY29udGFpbmluZyBhIGxpc3QgcGF5bG9hZCBvZiBsZW5ndGggMS4gIFRoZWlyCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmlzX211bHRpcGFydGAgbWV0aG9kIHdpbGwgcmV0dXJuIGBgVHJ1ZWBgLgotICBUaGUgc2luZ2xlIGVsZW1lbnQgaW4gdGhlIGxpc3QgcGF5bG9hZCB3aWxsIGJlIGEgc3ViLW1lc3NhZ2Ugb2JqZWN0LgorKiBNb3N0IG1lc3NhZ2VzIHdpdGggYSBjb250ZW50IHR5cGUgb2YgOm1pbWV0eXBlOmBtZXNzYWdlL1wqYCAoc3VjaCBhcworICA6bWltZXR5cGU6YG1lc3NhZ2UvZGVsaXZlcnktc3RhdHVzYCBhbmQgOm1pbWV0eXBlOmBtZXNzYWdlL3JmYzgyMmApIHdpbGwgYWxzbworICBiZSBwYXJzZWQgYXMgY29udGFpbmVyIG9iamVjdCBjb250YWluaW5nIGEgbGlzdCBwYXlsb2FkIG9mIGxlbmd0aCAxLiAgVGhlaXIKKyAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5pc19tdWx0aXBhcnRgIG1ldGhvZCB3aWxsIHJldHVybiBgYFRydWVgYC4KKyAgVGhlIHNpbmdsZSBlbGVtZW50IHlpZWxkZWQgYnkgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5pdGVyX3BhcnRzYAorICB3aWxsIGJlIGEgc3ViLW1lc3NhZ2Ugb2JqZWN0LgogCi0qIFNvbWUgbm9uLXN0YW5kYXJkcyBjb21wbGlhbnQgbWVzc2FnZXMgbWF5IG5vdCBiZSBpbnRlcm5hbGx5IGNvbnNpc3RlbnQgYWJvdXQKKyogU29tZSBub24tc3RhbmRhcmRzLWNvbXBsaWFudCBtZXNzYWdlcyBtYXkgbm90IGJlIGludGVybmFsbHkgY29uc2lzdGVudCBhYm91dAogICB0aGVpciA6bWltZXR5cGU6YG11bHRpcGFydGBcIC1lZG5lc3MuICBTdWNoIG1lc3NhZ2VzIG1heSBoYXZlIGEKICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIG9mIHR5cGUgOm1pbWV0eXBlOmBtdWx0aXBhcnRgLCBidXQgdGhlaXIKLSAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuaXNfbXVsdGlwYXJ0YCBtZXRob2QgbWF5IHJldHVybiBgYEZhbHNlYGAuCisgIDptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2UuaXNfbXVsdGlwYXJ0YCBtZXRob2QgbWF5IHJldHVybiBgYEZhbHNlYGAuCiAgIElmIHN1Y2ggbWVzc2FnZXMgd2VyZSBwYXJzZWQgd2l0aCB0aGUgOmNsYXNzOmB+ZW1haWwucGFyc2VyLkZlZWRQYXJzZXJgLAogICB0aGV5IHdpbGwgaGF2ZSBhbiBpbnN0YW5jZSBvZiB0aGUKICAgOmNsYXNzOmB+ZW1haWwuZXJyb3JzLk11bHRpcGFydEludmFyaWFudFZpb2xhdGlvbkRlZmVjdGAgY2xhc3MgaW4gdGhlaXIKICAgKmRlZmVjdHMqIGF0dHJpYnV0ZSBsaXN0LiAgU2VlIDptb2Q6YGVtYWlsLmVycm9yc2AgZm9yIGRldGFpbHMuCi0KLS4uIHJ1YnJpYzo6IEZvb3Rub3RlcwotCi0uLiBbI10gQXMgb2YgZW1haWwgcGFja2FnZSB2ZXJzaW9uIDMuMCwgaW50cm9kdWNlZCBpbiBQeXRob24gMi40LCB0aGUgY2xhc3NpYwotICAgOmNsYXNzOmB+ZW1haWwucGFyc2VyLlBhcnNlcmAgd2FzIHJlLWltcGxlbWVudGVkIGluIHRlcm1zIG9mIHRoZQotICAgOmNsYXNzOmB+ZW1haWwucGFyc2VyLkZlZWRQYXJzZXJgLCBzbyB0aGUgc2VtYW50aWNzIGFuZCByZXN1bHRzIGFyZQotICAgaWRlbnRpY2FsIGJldHdlZW4gdGhlIHR3byBwYXJzZXJzLgotCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbWFpbC5wb2xpY3kucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwucG9saWN5LnJzdAppbmRleCAyYTYwNDdkLi44YTQxODc3IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9lbWFpbC5wb2xpY3kucnN0CisrKyBiL0RvYy9saWJyYXJ5L2VtYWlsLnBvbGljeS5yc3QKQEAgLTE4LDkgKzE4LDEyIEBACiBlbWFpbCBtZXNzYWdlcyAoYSBibG9jayBvZiBoZWFkZXIgZmllbGRzIGVhY2ggY29uc2lzdGluZyBvZiBhIG5hbWUgZm9sbG93ZWQgYnkKIGEgY29sb24gZm9sbG93ZWQgYnkgYSB2YWx1ZSwgdGhlIHdob2xlIGJsb2NrIGZvbGxvd2VkIGJ5IGEgYmxhbmsgbGluZSBhbmQgYW4KIGFyYml0cmFyeSAnYm9keScpLCBpcyBhIGZvcm1hdCB0aGF0IGhhcyBmb3VuZCB1dGlsaXR5IG91dHNpZGUgb2YgdGhlIHJlYWxtIG9mCi1lbWFpbC4gIFNvbWUgb2YgdGhlc2UgdXNlcyBjb25mb3JtIGZhaXJseSBjbG9zZWx5IHRvIHRoZSBtYWluIFJGQ3MsIHNvbWUgZG8KLW5vdC4gIEFuZCBldmVuIHdoZW4gd29ya2luZyB3aXRoIGVtYWlsLCB0aGVyZSBhcmUgdGltZXMgd2hlbiBpdCBpcyBkZXNpcmFibGUgdG8KLWJyZWFrIHN0cmljdCBjb21wbGlhbmNlIHdpdGggdGhlIFJGQ3MuCitlbWFpbC4gIFNvbWUgb2YgdGhlc2UgdXNlcyBjb25mb3JtIGZhaXJseSBjbG9zZWx5IHRvIHRoZSBtYWluIGVtYWlsIFJGQ3MsIHNvbWUKK2RvIG5vdC4gIEV2ZW4gd2hlbiB3b3JraW5nIHdpdGggZW1haWwsIHRoZXJlIGFyZSB0aW1lcyB3aGVuIGl0IGlzIGRlc2lyYWJsZSB0bworYnJlYWsgc3RyaWN0IGNvbXBsaWFuY2Ugd2l0aCB0aGUgUkZDcywgc3VjaCBhcyBnZW5lcmF0aW5nIGVtYWlscyB0aGF0CitpbnRlcm9wZXJhdGUgd2l0aCBlbWFpbCBzZXJ2ZXJzIHRoYXQgZG8gbm90IHRoZW1zZWx2ZXMgZm9sbG93IHRoZSBzdGFuZGFyZHMsIG9yCit0aGF0IGltcGxlbWVudCBleHRlbnNpb25zIHlvdSB3YW50IHRvIHVzZSBpbiB3YXlzIHRoYXQgdmlvbGF0ZSB0aGUKK3N0YW5kYXJkcy4KIAogUG9saWN5IG9iamVjdHMgZ2l2ZSB0aGUgZW1haWwgcGFja2FnZSB0aGUgZmxleGliaWxpdHkgdG8gaGFuZGxlIGFsbCB0aGVzZQogZGlzcGFyYXRlIHVzZSBjYXNlcy4KQEAgLTMxLDI3ICszNCw0MCBAQAogZW1haWwgcGFja2FnZSB0byBhbHRlciB0aGUgZGVmYXVsdCBiZWhhdmlvci4gIFRoZSBzZXR0YWJsZSB2YWx1ZXMgYW5kIHRoZWlyCiBkZWZhdWx0cyBhcmUgZGVzY3JpYmVkIGJlbG93LgogCi1UaGVyZSBpcyBhIGRlZmF1bHQgcG9saWN5IHVzZWQgYnkgYWxsIGNsYXNzZXMgaW4gdGhlIGVtYWlsIHBhY2thZ2UuICBUaGlzCi1wb2xpY3kgaXMgbmFtZWQgOmNsYXNzOmBDb21wYXQzMmAsIHdpdGggYSBjb3JyZXNwb25kaW5nIHByZS1kZWZpbmVkIGluc3RhbmNlCi1uYW1lZCA6Y29uc3Q6YGNvbXBhdDMyYC4gIEl0IHByb3ZpZGVzIGZvciBjb21wbGV0ZSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IChpbgotc29tZSBjYXNlcywgaW5jbHVkaW5nIGJ1ZyBjb21wYXRpYmlsaXR5KSB3aXRoIHRoZSBwcmUtUHl0aG9uMy4zIHZlcnNpb24gb2YgdGhlCi1lbWFpbCBwYWNrYWdlLgorVGhlcmUgaXMgYSBkZWZhdWx0IHBvbGljeSB1c2VkIGJ5IGFsbCBjbGFzc2VzIGluIHRoZSBlbWFpbCBwYWNrYWdlLiAgRm9yIGFsbCBvZgordGhlIDptb2Q6YH5lbWFpbC5wYXJzZXJgIGNsYXNzZXMgYW5kIHRoZSByZWxhdGVkIGNvbnZlbmllbmNlIGZ1bmN0aW9ucywgYW5kIGZvcgordGhlIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgY2xhc3MsIHRoaXMgaXMgdGhlIDpjbGFzczpgQ29tcGF0MzJgCitwb2xpY3ksIHZpYSBpdHMgY29ycmVzcG9uZGluZyBwcmUtZGVmaW5lZCBpbnN0YW5jZSA6Y29uc3Q6YGNvbXBhdDMyYC4gIFRoaXMKK3BvbGljeSBwcm92aWRlcyBmb3IgY29tcGxldGUgYmFja3dhcmQgY29tcGF0aWJpbGl0eSAoaW4gc29tZSBjYXNlcywgaW5jbHVkaW5nCitidWcgY29tcGF0aWJpbGl0eSkgd2l0aCB0aGUgcHJlLVB5dGhvbjMuMyB2ZXJzaW9uIG9mIHRoZSBlbWFpbCBwYWNrYWdlLgorCitUaGlzIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSAqcG9saWN5KiBrZXl3b3JkIHRvCis6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgaXMgdGhlIDpjbGFzczpgRW1haWxQb2xpY3lgIHBvbGljeSwgdmlhCitpdHMgcHJlLWRlZmluZWQgaW5zdGFuY2UgOmRhdGE6YH5kZWZhdWx0YC4KKworV2hlbiBhIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgb3IgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgCitvYmplY3QgaXMgY3JlYXRlZCwgaXQgYWNxdWlyZXMgYSBwb2xpY3kuICBJZiB0aGUgbWVzc2FnZSBpcyBjcmVhdGVkIGJ5IGEKKzptb2Q6YH5lbWFpbC5wYXJzZXJgLCBhIHBvbGljeSBwYXNzZWQgdG8gdGhlIHBhcnNlciB3aWxsIGJlIHRoZSBwb2xpY3kgdXNlZCBieQordGhlIG1lc3NhZ2UgaXQgY3JlYXRlcy4gIElmIHRoZSBtZXNzYWdlIGlzIGNyZWF0ZWQgYnkgdGhlIHByb2dyYW0sIHRoZW4gdGhlCitwb2xpY3kgY2FuIGJlIHNwZWNpZmllZCB3aGVuIGl0IGlzIGNyZWF0ZWQuICBXaGVuIGEgbWVzc2FnZSBpcyBwYXNzZWQgdG8gYQorOm1vZDpgfmVtYWlsLmdlbmVyYXRvcmAsIHRoZSBnZW5lcmF0b3IgdXNlcyB0aGUgcG9saWN5IGZyb20gdGhlIG1lc3NhZ2UgYnkKK2RlZmF1bHQsIGJ1dCB5b3UgY2FuIGFsc28gcGFzcyBhIHNwZWNpZmljIHBvbGljeSB0byB0aGUgZ2VuZXJhdG9yIHRoYXQgd2lsbAorb3ZlcnJpZGUgdGhlIG9uZSBzdG9yZWQgb24gdGhlIG1lc3NhZ2Ugb2JqZWN0LgorCitUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlICpwb2xpY3kqIGtleXdvcmQgZm9yIHRoZSA6bW9kOmBlbWFpbC5wYXJzZXJgIGNsYXNzZXMKK2FuZCB0aGUgcGFyc2VyIGNvbnZlbmllbmNlIGZ1bmN0aW9ucyAqKndpbGwgYmUgY2hhbmdpbmcqKiBpbiBhIGZ1dHVyZSB2ZXJzaW9uIG9mCitQeXRob24uICBUaGVyZWZvcmUgeW91IHNob3VsZCAqKmFsd2F5cyBzcGVjaWZ5IGV4cGxpY2l0bHkgd2hpY2ggcG9saWN5IHlvdSB3YW50Cit0byB1c2UqKiB3aGVuIGNhbGxpbmcgYW55IG9mIHRoZSBjbGFzc2VzIGFuZCBmdW5jdGlvbnMgZGVzY3JpYmVkIGluIHRoZQorOm1vZDpgfmVtYWlsLnBhcnNlcmAgbW9kdWxlLgogCiBUaGUgZmlyc3QgcGFydCBvZiB0aGlzIGRvY3VtZW50YXRpb24gY292ZXJzIHRoZSBmZWF0dXJlcyBvZiA6Y2xhc3M6YFBvbGljeWAsIGFuCi06dGVybTpgYWJzdHJhY3QgYmFzZSBjbGFzc2AgIHRoYXQgZGVmaW5lcyB0aGUgZmVhdHVyZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbAorOnRlcm06YGFic3RyYWN0IGJhc2UgY2xhc3NgIHRoYXQgZGVmaW5lcyB0aGUgZmVhdHVyZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbAogcG9saWN5IG9iamVjdHMsIGluY2x1ZGluZyA6Y29uc3Q6YGNvbXBhdDMyYC4gIFRoaXMgaW5jbHVkZXMgY2VydGFpbiBob29rCiBtZXRob2RzIHRoYXQgYXJlIGNhbGxlZCBpbnRlcm5hbGx5IGJ5IHRoZSBlbWFpbCBwYWNrYWdlLCB3aGljaCBhIGN1c3RvbSBwb2xpY3kKLWNvdWxkIG92ZXJyaWRlIHRvIG9idGFpbiBkaWZmZXJlbnQgYmVoYXZpb3IuCi0KLVdoZW4gYSA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIG9iamVjdCBpcyBjcmVhdGVkLCBpdCBhY3F1aXJlcyBhIHBvbGljeS4KLUJ5IGRlZmF1bHQgdGhpcyB3aWxsIGJlIDpjb25zdDpgY29tcGF0MzJgLCBidXQgYSBkaWZmZXJlbnQgcG9saWN5IGNhbiBiZQotc3BlY2lmaWVkLiAgSWYgdGhlIGBgTWVzc2FnZWBgIGlzIGNyZWF0ZWQgYnkgYSA6bW9kOmB+ZW1haWwucGFyc2VyYCwgYSBwb2xpY3kKLXBhc3NlZCB0byB0aGUgcGFyc2VyIHdpbGwgYmUgdGhlIHBvbGljeSB1c2VkIGJ5IHRoZSBgYE1lc3NhZ2VgYCBpdCBjcmVhdGVzLiAgSWYKLXRoZSBgYE1lc3NhZ2VgYCBpcyBjcmVhdGVkIGJ5IHRoZSBwcm9ncmFtLCB0aGVuIHRoZSBwb2xpY3kgY2FuIGJlIHNwZWNpZmllZAotd2hlbiBpdCBpcyBjcmVhdGVkLiAgV2hlbiBhIGBgTWVzc2FnZWBgIGlzIHBhc3NlZCB0byBhIDptb2Q6YH5lbWFpbC5nZW5lcmF0b3JgLAotdGhlIGdlbmVyYXRvciB1c2VzIHRoZSBwb2xpY3kgZnJvbSB0aGUgYGBNZXNzYWdlYGAgYnkgZGVmYXVsdCwgYnV0IHlvdSBjYW4gYWxzbwotcGFzcyBhIHNwZWNpZmljIHBvbGljeSB0byB0aGUgZ2VuZXJhdG9yIHRoYXQgd2lsbCBvdmVycmlkZSB0aGUgb25lIHN0b3JlZCBvbgotdGhlIGBgTWVzc2FnZWBgIG9iamVjdC4KK2NvdWxkIG92ZXJyaWRlIHRvIG9idGFpbiBkaWZmZXJlbnQgYmVoYXZpb3IuICBUaGUgc2Vjb25kIHBhcnQgZGVzY3JpYmVzIHRoZQorY29uY3JldGUgY2xhc3NlcyA6Y2xhc3M6YEVtYWlsUG9saWN5YCBhbmQgOmNsYXNzOmBDb21wYXQzMmAsIHdoaWNoIGltcGxlbWVudAordGhlIGhvb2tzIHRoYXQgcHJvdmlkZSB0aGUgc3RhbmRhcmQgYmVoYXZpb3IgYW5kIHRoZSBiYWNrd2FyZCBjb21wYXRpYmxlCitiZWhhdmlvciBhbmQgZmVhdHVyZXMsIHJlc3BlY3RpdmVseS4KIAogOmNsYXNzOmBQb2xpY3lgIGluc3RhbmNlcyBhcmUgaW1tdXRhYmxlLCBidXQgdGhleSBjYW4gYmUgY2xvbmVkLCBhY2NlcHRpbmcgdGhlCiBzYW1lIGtleXdvcmQgYXJndW1lbnRzIGFzIHRoZSBjbGFzcyBjb25zdHJ1Y3RvciBhbmQgcmV0dXJuaW5nIGEgbmV3CkBAIC0xNDcsNiArMTYzLDcgQEAKICAgIFRoaXMgY2xhc3MgZGVmaW5lcyB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXMsIGFuZCB0aHVzIHZhbHVlcyBmb3IgdGhlCiAgICBmb2xsb3dpbmcgbWF5IGJlIHBhc3NlZCBpbiB0aGUgY29uc3RydWN0b3Igb2YgYW55IHBvbGljeSBjbGFzczoKIAorCiAgICAuLiBhdHRyaWJ1dGU6OiBtYXhfbGluZV9sZW5ndGgKIAogICAgICAgVGhlIG1heGltdW0gbGVuZ3RoIG9mIGFueSBsaW5lIGluIHRoZSBzZXJpYWxpemVkIG91dHB1dCwgbm90IGNvdW50aW5nIHRoZQpAQCAtMTU0LDEyICsxNzEsMTQgQEAKICAgICAgIGBgMGBgIG9yIDpjb25zdDpgTm9uZWAgaW5kaWNhdGVzIHRoYXQgbm8gbGluZSB3cmFwcGluZyBzaG91bGQgYmUKICAgICAgIGRvbmUgYXQgYWxsLgogCisKICAgIC4uIGF0dHJpYnV0ZTo6IGxpbmVzZXAKIAogICAgICAgVGhlIHN0cmluZyB0byBiZSB1c2VkIHRvIHRlcm1pbmF0ZSBsaW5lcyBpbiBzZXJpYWxpemVkIG91dHB1dC4gIFRoZQogICAgICAgZGVmYXVsdCBpcyBgYFxuYGAgYmVjYXVzZSB0aGF0J3MgdGhlIGludGVybmFsIGVuZC1vZi1saW5lIGRpc2NpcGxpbmUgdXNlZAogICAgICAgYnkgUHl0aG9uLCB0aG91Z2ggYGBcclxuYGAgaXMgcmVxdWlyZWQgYnkgdGhlIFJGQ3MuCiAKKwogICAgLi4gYXR0cmlidXRlOjogY3RlX3R5cGUKIAogICAgICAgQ29udHJvbHMgdGhlIHR5cGUgb2YgQ29udGVudCBUcmFuc2ZlciBFbmNvZGluZ3MgdGhhdCBtYXkgYmUgb3IgYXJlCkBAIC0xNzQsOCArMTkzLDggQEAKIAogICAgICAgYGA4Yml0YGAgIGRhdGEgaXMgbm90IGNvbnN0cmFpbmVkIHRvIGJlIDcgYml0IGNsZWFuLiAgRGF0YSBpbiBoZWFkZXJzIGlzCiAgICAgICAgICAgICAgICAgc3RpbGwgcmVxdWlyZWQgdG8gYmUgQVNDSUktb25seSBhbmQgc28gd2lsbCBiZSBlbmNvZGVkIChzZWUKLSAgICAgICAgICAgICAgICAnYmluYXJ5X2ZvbGQnIGJlbG93IGZvciBhbiBleGNlcHRpb24pLCBidXQgYm9keSBwYXJ0cyBtYXkgdXNlCi0gICAgICAgICAgICAgICAgdGhlIGBgOGJpdGBgIENURS4KKyAgICAgICAgICAgICAgICA6bWV0aDpgZm9sZF9iaW5hcnlgIGFuZCA6YXR0cjpgfkVtYWlsUG9saWN5LnV0ZjhgIGJlbG93IGZvcgorICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMpLCBidXQgYm9keSBwYXJ0cyBtYXkgdXNlIHRoZSBgYDhiaXRgYCBDVEUuCiAgICAgICA9PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKICAgICAgIEEgYGBjdGVfdHlwZWBgIHZhbHVlIG9mIGBgOGJpdGBgIG9ubHkgd29ya3Mgd2l0aCBgYEJ5dGVzR2VuZXJhdG9yYGAsIG5vdApAQCAtMTgzLDYgKzIwMiw3IEBACiAgICAgICBgYEdlbmVyYXRvcmBgIGlzIG9wZXJhdGluZyB1bmRlciBhIHBvbGljeSB0aGF0IHNwZWNpZmllcwogICAgICAgYGBjdGVfdHlwZT04Yml0YGAsIGl0IHdpbGwgYWN0IGFzIGlmIGBgY3RlX3R5cGVgYCBpcyBgYDdiaXRgYC4KIAorCiAgICAuLiBhdHRyaWJ1dGU6OiByYWlzZV9vbl9kZWZlY3QKIAogICAgICAgSWYgOmNvbnN0OmBUcnVlYCwgYW55IGRlZmVjdHMgZW5jb3VudGVyZWQgd2lsbCBiZSByYWlzZWQgYXMgZXJyb3JzLiAgSWYKQEAgLTE5MCw3ICsyMTAsNiBAQAogICAgICAgOm1ldGg6YHJlZ2lzdGVyX2RlZmVjdGAgbWV0aG9kLgogCiAKLQogICAgLi4gYXR0cmlidXRlOjogbWFuZ2xlX2Zyb21cXwogCiAgICAgICBJZiA6Y29uc3Q6YFRydWVgLCBsaW5lcyBzdGFydGluZyB3aXRoICoiRnJvbSAiKiBpbiB0aGUgYm9keSBhcmUKQEAgLTIwMSwxOSArMjIwLDMxIEBACiAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKICAgICAgICAgIFRoZSAqbWFuZ2xlX2Zyb21fKiBwYXJhbWV0ZXIuCiAKKworICAgLi4gYXR0cmlidXRlOjogbWVzc2FnZV9mYWN0b3J5CisKKyAgICAgIEEgZmFjdG9yeSBmdW5jdGlvbiBmb3IgY29uc3RydWN0aW5nIGEgbmV3IGVtcHR5IG1lc3NhZ2Ugb2JqZWN0LiAgVXNlZAorICAgICAgYnkgdGhlIHBhcnNlciB3aGVuIGJ1aWxkaW5nIG1lc3NhZ2VzLiAgRGVmYXVsdHMgdG8gYGBOb25lYGAsIGluCisgICAgICB3aGljaCBjYXNlIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgaXMgdXNlZC4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKICAgIFRoZSBmb2xsb3dpbmcgOmNsYXNzOmBQb2xpY3lgIG1ldGhvZCBpcyBpbnRlbmRlZCB0byBiZSBjYWxsZWQgYnkgY29kZSB1c2luZwogICAgdGhlIGVtYWlsIGxpYnJhcnkgdG8gY3JlYXRlIHBvbGljeSBpbnN0YW5jZXMgd2l0aCBjdXN0b20gc2V0dGluZ3M6CiAKKwogICAgLi4gbWV0aG9kOjogY2xvbmUoKiprdykKIAogICAgICAgUmV0dXJuIGEgbmV3IDpjbGFzczpgUG9saWN5YCBpbnN0YW5jZSB3aG9zZSBhdHRyaWJ1dGVzIGhhdmUgdGhlIHNhbWUKICAgICAgIHZhbHVlcyBhcyB0aGUgY3VycmVudCBpbnN0YW5jZSwgZXhjZXB0IHdoZXJlIHRob3NlIGF0dHJpYnV0ZXMgYXJlCiAgICAgICBnaXZlbiBuZXcgdmFsdWVzIGJ5IHRoZSBrZXl3b3JkIGFyZ3VtZW50cy4KIAorCiAgICBUaGUgcmVtYWluaW5nIDpjbGFzczpgUG9saWN5YCBtZXRob2RzIGFyZSBjYWxsZWQgYnkgdGhlIGVtYWlsIHBhY2thZ2UgY29kZSwKICAgIGFuZCBhcmUgbm90IGludGVuZGVkIHRvIGJlIGNhbGxlZCBieSBhbiBhcHBsaWNhdGlvbiB1c2luZyB0aGUgZW1haWwgcGFja2FnZS4KICAgIEEgY3VzdG9tIHBvbGljeSBtdXN0IGltcGxlbWVudCBhbGwgb2YgdGhlc2UgbWV0aG9kcy4KIAorCiAgICAuLiBtZXRob2Q6OiBoYW5kbGVfZGVmZWN0KG9iaiwgZGVmZWN0KQogCiAgICAgICBIYW5kbGUgYSAqZGVmZWN0KiBmb3VuZCBvbiAqb2JqKi4gIFdoZW4gdGhlIGVtYWlsIHBhY2thZ2UgY2FsbHMgdGhpcwpAQCAtMjI0LDYgKzI1NSw3IEBACiAgICAgICBpdCBpcyBgYFRydWVgYCwgKmRlZmVjdCogaXMgcmFpc2VkIGFzIGFuIGV4Y2VwdGlvbi4gIElmIGl0IGlzIGBgRmFsc2VgYAogICAgICAgKHRoZSBkZWZhdWx0KSwgKm9iaiogYW5kICpkZWZlY3QqIGFyZSBwYXNzZWQgdG8gOm1ldGg6YHJlZ2lzdGVyX2RlZmVjdGAuCiAKKwogICAgLi4gbWV0aG9kOjogcmVnaXN0ZXJfZGVmZWN0KG9iaiwgZGVmZWN0KQogCiAgICAgICBSZWdpc3RlciBhICpkZWZlY3QqIG9uICpvYmoqLiAgSW4gdGhlIGVtYWlsIHBhY2thZ2UsICpkZWZlY3QqIHdpbGwgYWx3YXlzCkBAIC0yMzYsMTQgKzI2OCwxNiBAQAogICAgICAgY3VzdG9tIGBgTWVzc2FnZWBgIG9iamVjdHMpIHNob3VsZCBhbHNvIHByb3ZpZGUgc3VjaCBhbiBhdHRyaWJ1dGUsCiAgICAgICBvdGhlcndpc2UgZGVmZWN0cyBpbiBwYXJzZWQgbWVzc2FnZXMgd2lsbCByYWlzZSB1bmV4cGVjdGVkIGVycm9ycy4KIAorCiAgICAuLiBtZXRob2Q6OiBoZWFkZXJfbWF4X2NvdW50KG5hbWUpCiAKICAgICAgIFJldHVybiB0aGUgbWF4aW11bSBhbGxvd2VkIG51bWJlciBvZiBoZWFkZXJzIG5hbWVkICpuYW1lKi4KIAotICAgICAgQ2FsbGVkIHdoZW4gYSBoZWFkZXIgaXMgYWRkZWQgdG8gYSA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgCi0gICAgICBvYmplY3QuICBJZiB0aGUgcmV0dXJuZWQgdmFsdWUgaXMgbm90IGBgMGBgIG9yIGBgTm9uZWBgLCBhbmQgdGhlcmUgYXJlCi0gICAgICBhbHJlYWR5IGEgbnVtYmVyIG9mIGhlYWRlcnMgd2l0aCB0aGUgbmFtZSAqbmFtZSogZXF1YWwgdG8gdGhlIHZhbHVlCi0gICAgICByZXR1cm5lZCwgYSA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQuCisgICAgICBDYWxsZWQgd2hlbiBhIGhlYWRlciBpcyBhZGRlZCB0byBhbiA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAKKyAgICAgIG9yIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgb2JqZWN0LiAgSWYgdGhlIHJldHVybmVkIHZhbHVlIGlzIG5vdAorICAgICAgYGAwYGAgb3IgYGBOb25lYGAsIGFuZCB0aGVyZSBhcmUgYWxyZWFkeSBhIG51bWJlciBvZiBoZWFkZXJzIHdpdGggdGhlCisgICAgICBuYW1lICpuYW1lKiBncmVhdGhlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSB2YWx1ZSByZXR1cm5lZCwgYQorICAgICAgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkLgogCiAgICAgICBCZWNhdXNlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIGBgTWVzc2FnZS5fX3NldGl0ZW1fX2BgIGlzIHRvIGFwcGVuZCB0aGUKICAgICAgIHZhbHVlIHRvIHRoZSBsaXN0IG9mIGhlYWRlcnMsIGl0IGlzIGVhc3kgdG8gY3JlYXRlIGR1cGxpY2F0ZSBoZWFkZXJzCkBAIC0yNTUsNiArMjg5LDcgQEAKIAogICAgICAgVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBgYE5vbmVgYCBmb3IgYWxsIGhlYWRlciBuYW1lcy4KIAorCiAgICAuLiBtZXRob2Q6OiBoZWFkZXJfc291cmNlX3BhcnNlKHNvdXJjZWxpbmVzKQogCiAgICAgICBUaGUgZW1haWwgcGFja2FnZSBjYWxscyB0aGlzIG1ldGhvZCB3aXRoIGEgbGlzdCBvZiBzdHJpbmdzLCBlYWNoIHN0cmluZwpAQCAtMjc0LDYgKzMwOSw3IEBACiAKICAgICAgIFRoZXJlIGlzIG5vIGRlZmF1bHQgaW1wbGVtZW50YXRpb24KIAorCiAgICAuLiBtZXRob2Q6OiBoZWFkZXJfc3RvcmVfcGFyc2UobmFtZSwgdmFsdWUpCiAKICAgICAgIFRoZSBlbWFpbCBwYWNrYWdlIGNhbGxzIHRoaXMgbWV0aG9kIHdpdGggdGhlIG5hbWUgYW5kIHZhbHVlIHByb3ZpZGVkIGJ5CkBAIC0yODksNiArMzI1LDcgQEAKIAogICAgICAgVGhlcmUgaXMgbm8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbgogCisKICAgIC4uIG1ldGhvZDo6IGhlYWRlcl9mZXRjaF9wYXJzZShuYW1lLCB2YWx1ZSkKIAogICAgICAgVGhlIGVtYWlsIHBhY2thZ2UgY2FsbHMgdGhpcyBtZXRob2Qgd2l0aCB0aGUgKm5hbWUqIGFuZCAqdmFsdWUqIGN1cnJlbnRseQpAQCAtMzA0LDYgKzM0MSw3IEBACiAKICAgICAgIFRoZXJlIGlzIG5vIGRlZmF1bHQgaW1wbGVtZW50YXRpb24KIAorCiAgICAuLiBtZXRob2Q6OiBmb2xkKG5hbWUsIHZhbHVlKQogCiAgICAgICBUaGUgZW1haWwgcGFja2FnZSBjYWxscyB0aGlzIG1ldGhvZCB3aXRoIHRoZSAqbmFtZSogYW5kICp2YWx1ZSogY3VycmVudGx5CkBAIC0zMTYsNiArMzU0LDcgQEAKICAgICAgICp2YWx1ZSogbWF5IGNvbnRhaW4gc3Vycm9nYXRlZXNjYXBlZCBiaW5hcnkgZGF0YS4gIFRoZXJlIHNob3VsZCBiZSBubwogICAgICAgc3Vycm9nYXRlZXNjYXBlZCBiaW5hcnkgZGF0YSBpbiB0aGUgc3RyaW5nIHJldHVybmVkIGJ5IHRoZSBtZXRob2QuCiAKKwogICAgLi4gbWV0aG9kOjogZm9sZF9iaW5hcnkobmFtZSwgdmFsdWUpCiAKICAgICAgIFRoZSBzYW1lIGFzIDptZXRoOmBmb2xkYCwgZXhjZXB0IHRoYXQgdGhlIHJldHVybmVkIHZhbHVlIHNob3VsZCBiZSBhCkBAIC0zMjUsNzMgKzM2NCw2IEBACiAgICAgICBjb252ZXJ0ZWQgYmFjayBpbnRvIGJpbmFyeSBkYXRhIGluIHRoZSByZXR1cm5lZCBieXRlcyBvYmplY3QuCiAKIAotLi4gY2xhc3M6OiBDb21wYXQzMigqKmt3KQotCi0gICBUaGlzIGNvbmNyZXRlIDpjbGFzczpgUG9saWN5YCBpcyB0aGUgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBwb2xpY3kuICBJdAotICAgcmVwbGljYXRlcyB0aGUgYmVoYXZpb3Igb2YgdGhlIGVtYWlsIHBhY2thZ2UgaW4gUHl0aG9uIDMuMi4gIFRoZQotICAgOm1vZDpgfmVtYWlsLnBvbGljeWAgbW9kdWxlIGFsc28gZGVmaW5lcyBhbiBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzLAotICAgOmNvbnN0OmBjb21wYXQzMmAsIHRoYXQgaXMgdXNlZCBhcyB0aGUgZGVmYXVsdCBwb2xpY3kuICBUaHVzIHRoZSBkZWZhdWx0Ci0gICBiZWhhdmlvciBvZiB0aGUgZW1haWwgcGFja2FnZSBpcyB0byBtYWludGFpbiBjb21wYXRpYmlsaXR5IHdpdGggUHl0aG9uIDMuMi4KLQotICAgVGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzIGhhdmUgdmFsdWVzIHRoYXQgYXJlIGRpZmZlcmVudCBmcm9tIHRoZQotICAgOmNsYXNzOmBQb2xpY3lgIGRlZmF1bHQ6Ci0KLSAgIC4uIGF0dHJpYnV0ZTo6IG1hbmdsZV9mcm9tXwotCi0gICAgICBUaGUgZGVmYXVsdCBpcyBgYFRydWVgYC4KLQotICAgVGhlIGNsYXNzIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgY29uY3JldGUgaW1wbGVtZW50YXRpb25zIG9mIHRoZQotICAgYWJzdHJhY3QgbWV0aG9kcyBvZiA6Y2xhc3M6YFBvbGljeWA6Ci0KLSAgIC4uIG1ldGhvZDo6IGhlYWRlcl9zb3VyY2VfcGFyc2Uoc291cmNlbGluZXMpCi0KLSAgICAgIFRoZSBuYW1lIGlzIHBhcnNlZCBhcyBldmVyeXRoaW5nIHVwIHRvIHRoZSAnYGA6YGAnIGFuZCByZXR1cm5lZAotICAgICAgdW5tb2RpZmllZC4gIFRoZSB2YWx1ZSBpcyBkZXRlcm1pbmVkIGJ5IHN0cmlwcGluZyBsZWFkaW5nIHdoaXRlc3BhY2Ugb2ZmCi0gICAgICB0aGUgcmVtYWluZGVyIG9mIHRoZSBmaXJzdCBsaW5lLCBqb2luaW5nIGFsbCBzdWJzZXF1ZW50IGxpbmVzIHRvZ2V0aGVyLAotICAgICAgYW5kIHN0cmlwcGluZyBhbnkgdHJhaWxpbmcgY2FycmlhZ2UgcmV0dXJuIG9yIGxpbmVmZWVkIGNoYXJhY3RlcnMuCi0KLSAgIC4uIG1ldGhvZDo6IGhlYWRlcl9zdG9yZV9wYXJzZShuYW1lLCB2YWx1ZSkKLQotICAgICAgVGhlIG5hbWUgYW5kIHZhbHVlIGFyZSByZXR1cm5lZCB1bm1vZGlmaWVkLgotCi0gICAuLiBtZXRob2Q6OiBoZWFkZXJfZmV0Y2hfcGFyc2UobmFtZSwgdmFsdWUpCi0KLSAgICAgIElmIHRoZSB2YWx1ZSBjb250YWlucyBiaW5hcnkgZGF0YSwgaXQgaXMgY29udmVydGVkIGludG8gYQotICAgICAgOmNsYXNzOmB+ZW1haWwuaGVhZGVyLkhlYWRlcmAgb2JqZWN0IHVzaW5nIHRoZSBgYHVua25vd24tOGJpdGBgIGNoYXJzZXQuCi0gICAgICBPdGhlcndpc2UgaXQgaXMgcmV0dXJuZWQgdW5tb2RpZmllZC4KLQotICAgLi4gbWV0aG9kOjogZm9sZChuYW1lLCB2YWx1ZSkKLQotICAgICAgSGVhZGVycyBhcmUgZm9sZGVkIHVzaW5nIHRoZSA6Y2xhc3M6YH5lbWFpbC5oZWFkZXIuSGVhZGVyYCBmb2xkaW5nCi0gICAgICBhbGdvcml0aG0sIHdoaWNoIHByZXNlcnZlcyBleGlzdGluZyBsaW5lIGJyZWFrcyBpbiB0aGUgdmFsdWUsIGFuZCB3cmFwcwotICAgICAgZWFjaCByZXN1bHRpbmcgbGluZSB0byB0aGUgYGBtYXhfbGluZV9sZW5ndGhgYC4gIE5vbi1BU0NJSSBiaW5hcnkgZGF0YSBhcmUKLSAgICAgIENURSBlbmNvZGVkIHVzaW5nIHRoZSBgYHVua25vd24tOGJpdGBgIGNoYXJzZXQuCi0KLSAgIC4uIG1ldGhvZDo6IGZvbGRfYmluYXJ5KG5hbWUsIHZhbHVlKQotCi0gICAgICBIZWFkZXJzIGFyZSBmb2xkZWQgdXNpbmcgdGhlIDpjbGFzczpgfmVtYWlsLmhlYWRlci5IZWFkZXJgIGZvbGRpbmcKLSAgICAgIGFsZ29yaXRobSwgd2hpY2ggcHJlc2VydmVzIGV4aXN0aW5nIGxpbmUgYnJlYWtzIGluIHRoZSB2YWx1ZSwgYW5kIHdyYXBzCi0gICAgICBlYWNoIHJlc3VsdGluZyBsaW5lIHRvIHRoZSBgYG1heF9saW5lX2xlbmd0aGBgLiAgSWYgYGBjdGVfdHlwZWBgIGlzCi0gICAgICBgYDdiaXRgYCwgbm9uLWFzY2lpIGJpbmFyeSBkYXRhIGlzIENURSBlbmNvZGVkIHVzaW5nIHRoZSBgYHVua25vd24tOGJpdGBgCi0gICAgICBjaGFyc2V0LiAgT3RoZXJ3aXNlIHRoZSBvcmlnaW5hbCBzb3VyY2UgaGVhZGVyIGlzIHVzZWQsIHdpdGggaXRzIGV4aXN0aW5nCi0gICAgICBsaW5lIGJyZWFrcyBhbmQgYW55IChSRkMgaW52YWxpZCkgYmluYXJ5IGRhdGEgaXQgbWF5IGNvbnRhaW4uCi0KLQotQW4gaW5zdGFuY2Ugb2YgOmNsYXNzOmBDb21wYXQzMmAgaXMgcHJvdmlkZWQgYXMgYSBtb2R1bGUgY29uc3RhbnQ6Ci0KLS4uIGRhdGE6OiBjb21wYXQzMgotCi0gICBBbiBpbnN0YW5jZSBvZiA6Y2xhc3M6YENvbXBhdDMyYCwgcHJvdmlkaW5nICBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggdGhlCi0gICBiZWhhdmlvciBvZiB0aGUgZW1haWwgcGFja2FnZSBpbiBQeXRob24gMy4yLgotCi0KLS4uIG5vdGU6OgotCi0gICBUaGUgZG9jdW1lbnRhdGlvbiBiZWxvdyBkZXNjcmliZXMgbmV3IHBvbGljaWVzIHRoYXQgYXJlIGluY2x1ZGVkIGluIHRoZQotICAgc3RhbmRhcmQgbGlicmFyeSBvbiBhIDp0ZXJtOmBwcm92aXNpb25hbCBiYXNpcyA8cHJvdmlzaW9uYWwgcGFja2FnZT5gLgotICAgQmFja3dhcmRzIGluY29tcGF0aWJsZSBjaGFuZ2VzICh1cCB0byBhbmQgaW5jbHVkaW5nIHJlbW92YWwgb2YgdGhlIGZlYXR1cmUpCi0gICBtYXkgb2NjdXIgaWYgZGVlbWVkIG5lY2Vzc2FyeSBieSB0aGUgY29yZSBkZXZlbG9wZXJzLgotCiAKIC4uIGNsYXNzOjogRW1haWxQb2xpY3koKiprdykKIApAQCAtNDA0LDkgKzM3NiwxNSBAQAogICAgb24gdGhlIHR5cGUgb2YgdGhlIGZpZWxkLiAgVGhlIHBhcnNpbmcgYW5kIGZvbGRpbmcgYWxnb3JpdGhtIGZ1bGx5IGltcGxlbWVudAogICAgOnJmYzpgMjA0N2AgYW5kIDpyZmM6YDUzMjJgLgogCisgICBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIDphdHRyOmB+ZW1haWwucG9saWN5LlBvbGljeS5tZXNzYWdlX2ZhY3RvcnlgCisgICBhdHRyaWJ1dGUgaXMgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgLgorCiAgICBJbiBhZGRpdGlvbiB0byB0aGUgc2V0dGFibGUgYXR0cmlidXRlcyBsaXN0ZWQgYWJvdmUgdGhhdCBhcHBseSB0byBhbGwKICAgIHBvbGljaWVzLCB0aGlzIHBvbGljeSBhZGRzIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBhdHRyaWJ1dGVzOgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYgWzFdXworCisKICAgIC4uIGF0dHJpYnV0ZTo6IHV0ZjgKIAogICAgICAgSWYgYGBGYWxzZWBgLCBmb2xsb3cgOnJmYzpgNTMyMmAsIHN1cHBvcnRpbmcgbm9uLUFTQ0lJIGNoYXJhY3RlcnMgaW4KQEAgLTQxNSwxMyArMzkzLDE0IEBACiAgICAgICBmb3JtYXR0ZWQgaW4gdGhpcyB3YXkgbWF5IGJlIHBhc3NlZCB0byBTTVRQIHNlcnZlcnMgdGhhdCBzdXBwb3J0CiAgICAgICB0aGUgYGBTTVRQVVRGOGBgIGV4dGVuc2lvbiAoOnJmYzpgNjUzMWApLgogCisKICAgIC4uIGF0dHJpYnV0ZTo6IHJlZm9sZF9zb3VyY2UKIAogICAgICAgSWYgdGhlIHZhbHVlIGZvciBhIGhlYWRlciBpbiB0aGUgYGBNZXNzYWdlYGAgb2JqZWN0IG9yaWdpbmF0ZWQgZnJvbSBhCiAgICAgICA6bW9kOmB+ZW1haWwucGFyc2VyYCAoYXMgb3Bwb3NlZCB0byBiZWluZyBzZXQgYnkgYSBwcm9ncmFtKSwgdGhpcwogICAgICAgYXR0cmlidXRlIGluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCBhIGdlbmVyYXRvciBzaG91bGQgcmVmb2xkIHRoYXQgdmFsdWUKLSAgICAgIHdoZW4gdHJhbnNmb3JtaW5nIHRoZSBtZXNzYWdlIGJhY2sgaW50byBzdHJlYW0gZm9ybS4gIFRoZSBwb3NzaWJsZSB2YWx1ZXMKLSAgICAgIGFyZToKKyAgICAgIHdoZW4gdHJhbnNmb3JtaW5nIHRoZSBtZXNzYWdlIGJhY2sgaW50byBzZXJpYWxpemVkIGZvcm0uICBUaGUgcG9zc2libGUKKyAgICAgIHZhbHVlcyBhcmU6CiAKICAgICAgID09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgIGBgbm9uZWBgICBhbGwgc291cmNlIHZhbHVlcyB1c2Ugb3JpZ2luYWwgZm9sZGluZwpAQCAtNDM0LDIzICs0MTMsMjQgQEAKIAogICAgICAgVGhlIGRlZmF1bHQgaXMgYGBsb25nYGAuCiAKKwogICAgLi4gYXR0cmlidXRlOjogaGVhZGVyX2ZhY3RvcnkKIAogICAgICAgQSBjYWxsYWJsZSB0aGF0IHRha2VzIHR3byBhcmd1bWVudHMsIGBgbmFtZWBgIGFuZCBgYHZhbHVlYGAsIHdoZXJlCiAgICAgICBgYG5hbWVgYCBpcyBhIGhlYWRlciBmaWVsZCBuYW1lIGFuZCBgYHZhbHVlYGAgaXMgYW4gdW5mb2xkZWQgaGVhZGVyIGZpZWxkCiAgICAgICB2YWx1ZSwgYW5kIHJldHVybnMgYSBzdHJpbmcgc3ViY2xhc3MgdGhhdCByZXByZXNlbnRzIHRoYXQgaGVhZGVyLiAgQQogICAgICAgZGVmYXVsdCBgYGhlYWRlcl9mYWN0b3J5YGAgKHNlZSA6bW9kOmB+ZW1haWwuaGVhZGVycmVnaXN0cnlgKSBpcyBwcm92aWRlZAotICAgICAgdGhhdCB1bmRlcnN0YW5kcyBzb21lIG9mIHRoZSA6UkZDOmA1MzIyYCBoZWFkZXIgZmllbGQgdHlwZXMuICAoQ3VycmVudGx5Ci0gICAgICBhZGRyZXNzIGZpZWxkcyBhbmQgZGF0ZSBmaWVsZHMgaGF2ZSBzcGVjaWFsIHRyZWF0bWVudCwgd2hpbGUgYWxsIG90aGVyCi0gICAgICBmaWVsZHMgYXJlIHRyZWF0ZWQgYXMgdW5zdHJ1Y3R1cmVkLiAgVGhpcyBsaXN0IHdpbGwgYmUgY29tcGxldGVkIGJlZm9yZQotICAgICAgdGhlIGV4dGVuc2lvbiBpcyBtYXJrZWQgc3RhYmxlLikKKyAgICAgIHRoYXQgc3VwcG9ydHMgY3VzdG9tIHBhcnNpbmcgZm9yIHRoZSB2YXJpb3VzIGFkZHJlc3MgYW5kIGRhdGUgOlJGQzpgNTMyMmAKKyAgICAgIGhlYWRlciBmaWVsZCB0eXBlcywgYW5kIHRoZSBtYWpvciBNSU1FIGhlYWRlciBmaWVsZCBzdHlwZXMuICBTdXBwb3J0IGZvcgorICAgICAgYWRkaXRpb25hbCBjdXN0b20gcGFyc2luZyB3aWxsIGJlIGFkZGVkIGluIHRoZSBmdXR1cmUuCisKIAogICAgLi4gYXR0cmlidXRlOjogY29udGVudF9tYW5hZ2VyCiAKICAgICAgIEFuIG9iamVjdCB3aXRoIGF0IGxlYXN0IHR3byBtZXRob2RzOiBnZXRfY29udGVudCBhbmQgc2V0X2NvbnRlbnQuICBXaGVuCi0gICAgICB0aGUgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuZ2V0X2NvbnRlbnRgIG9yCi0gICAgICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5zZXRfY29udGVudGAgbWV0aG9kIG9mIGEKLSAgICAgIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgb2JqZWN0IGlzIGNhbGxlZCwgaXQgY2FsbHMgdGhlCisgICAgICB0aGUgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5nZXRfY29udGVudGAgb3IKKyAgICAgIDptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2Uuc2V0X2NvbnRlbnRgIG1ldGhvZCBvZiBhbgorICAgICAgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgIG9iamVjdCBpcyBjYWxsZWQsIGl0IGNhbGxzIHRoZQogICAgICAgY29ycmVzcG9uZGluZyBtZXRob2Qgb2YgdGhpcyBvYmplY3QsIHBhc3NpbmcgaXQgdGhlIG1lc3NhZ2Ugb2JqZWN0IGFzIGl0cwogICAgICAgZmlyc3QgYXJndW1lbnQsIGFuZCBhbnkgYXJndW1lbnRzIG9yIGtleXdvcmRzIHRoYXQgd2VyZSBwYXNzZWQgdG8gaXQgYXMKICAgICAgIGFkZGl0aW9uYWwgYXJndW1lbnRzLiAgQnkgZGVmYXVsdCBgYGNvbnRlbnRfbWFuYWdlcmBgIGlzIHNldCB0bwpAQCAtNDYyLDE2ICs0NDIsMjIgQEAKICAgIFRoZSBjbGFzcyBwcm92aWRlcyB0aGUgZm9sbG93aW5nIGNvbmNyZXRlIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgYWJzdHJhY3QKICAgIG1ldGhvZHMgb2YgOmNsYXNzOmBQb2xpY3lgOgogCisKICAgIC4uIG1ldGhvZDo6IGhlYWRlcl9tYXhfY291bnQobmFtZSkKIAogICAgICAgUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlCiAgICAgICA6YXR0cjpgfmVtYWlsLmhlYWRlcnJlZ2lzdHJ5LkJhc2VIZWFkZXIubWF4X2NvdW50YCBhdHRyaWJ1dGUgb2YgdGhlCiAgICAgICBzcGVjaWFsaXplZCBjbGFzcyB1c2VkIHRvIHJlcHJlc2VudCB0aGUgaGVhZGVyIHdpdGggdGhlIGdpdmVuIG5hbWUuCiAKKwogICAgLi4gbWV0aG9kOjogaGVhZGVyX3NvdXJjZV9wYXJzZShzb3VyY2VsaW5lcykKIAotICAgICAgVGhlIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgbWV0aG9kIGlzIHRoZSBzYW1lIGFzIHRoYXQgZm9yIHRoZQotICAgICAgOmNsYXNzOmBDb21wYXQzMmAgcG9saWN5LgorCisgICAgICBUaGUgbmFtZSBpcyBwYXJzZWQgYXMgZXZlcnl0aGluZyB1cCB0byB0aGUgJ2BgOmBgJyBhbmQgcmV0dXJuZWQKKyAgICAgIHVubW9kaWZpZWQuICBUaGUgdmFsdWUgaXMgZGV0ZXJtaW5lZCBieSBzdHJpcHBpbmcgbGVhZGluZyB3aGl0ZXNwYWNlIG9mZgorICAgICAgdGhlIHJlbWFpbmRlciBvZiB0aGUgZmlyc3QgbGluZSwgam9pbmluZyBhbGwgc3Vic2VxdWVudCBsaW5lcyB0b2dldGhlciwKKyAgICAgIGFuZCBzdHJpcHBpbmcgYW55IHRyYWlsaW5nIGNhcnJpYWdlIHJldHVybiBvciBsaW5lZmVlZCBjaGFyYWN0ZXJzLgorCiAKICAgIC4uIG1ldGhvZDo6IGhlYWRlcl9zdG9yZV9wYXJzZShuYW1lLCB2YWx1ZSkKIApAQCAtNDgyLDYgKzQ2OCw3IEBACiAgICAgICB0aGUgdmFsdWUuICBJbiB0aGlzIGNhc2UgYSBgYFZhbHVlRXJyb3JgYCBpcyByYWlzZWQgaWYgdGhlIGlucHV0IHZhbHVlCiAgICAgICBjb250YWlucyBDUiBvciBMRiBjaGFyYWN0ZXJzLgogCisKICAgIC4uIG1ldGhvZDo6IGhlYWRlcl9mZXRjaF9wYXJzZShuYW1lLCB2YWx1ZSkKIAogICAgICAgSWYgdGhlIHZhbHVlIGhhcyBhIGBgbmFtZWBgIGF0dHJpYnV0ZSwgaXQgaXMgcmV0dXJuZWQgdG8gdW5tb2RpZmllZC4KQEAgLTQ5MCw2ICs0NzcsNyBAQAogICAgICAgaGVhZGVyIG9iamVjdCBpcyByZXR1cm5lZC4gIEFueSBzdXJyb2dhdGVlc2NhcGVkIGJ5dGVzIGdldCB0dXJuZWQgaW50bwogICAgICAgdGhlIHVuaWNvZGUgdW5rbm93bi1jaGFyYWN0ZXIgZ2x5cGguCiAKKwogICAgLi4gbWV0aG9kOjogZm9sZChuYW1lLCB2YWx1ZSkKIAogICAgICAgSGVhZGVyIGZvbGRpbmcgaXMgY29udHJvbGxlZCBieSB0aGUgOmF0dHI6YHJlZm9sZF9zb3VyY2VgIHBvbGljeSBzZXR0aW5nLgpAQCAtNTA4LDYgKzQ5Niw3IEBACiAgICAgICByZWdhcmRsZXNzIG9mIHRoZSBgYHJlZm9sZF9zb3VyY2VgYCBzZXR0aW5nLCB3aGljaCBjYXVzZXMgdGhlIGJpbmFyeSBkYXRhCiAgICAgICB0byBiZSBDVEUgZW5jb2RlZCB1c2luZyB0aGUgYGB1bmtub3duLThiaXRgYCBjaGFyc2V0LgogCisKICAgIC4uIG1ldGhvZDo6IGZvbGRfYmluYXJ5KG5hbWUsIHZhbHVlKQogCiAgICAgICBUaGUgc2FtZSBhcyA6bWV0aDpgZm9sZGAgaWYgOmF0dHI6YH5Qb2xpY3kuY3RlX3R5cGVgIGlzIGBgN2JpdGBgLCBleGNlcHQKQEAgLTUxOSwyMyArNTA4LDI3IEBACiAgICAgICBgYHJlZm9sZF9oZWFkZXJgYCBzZXR0aW5nLCBzaW5jZSB0aGVyZSBpcyBubyB3YXkgdG8ga25vdyB3aGV0aGVyIHRoZQogICAgICAgYmluYXJ5IGRhdGEgY29uc2lzdHMgb2Ygc2luZ2xlIGJ5dGUgY2hhcmFjdGVycyBvciBtdWx0aWJ5dGUgY2hhcmFjdGVycy4KIAorCiBUaGUgZm9sbG93aW5nIGluc3RhbmNlcyBvZiA6Y2xhc3M6YEVtYWlsUG9saWN5YCBwcm92aWRlIGRlZmF1bHRzIHN1aXRhYmxlIGZvcgogc3BlY2lmaWMgYXBwbGljYXRpb24gZG9tYWlucy4gIE5vdGUgdGhhdCBpbiB0aGUgZnV0dXJlIHRoZSBiZWhhdmlvciBvZiB0aGVzZQogaW5zdGFuY2VzIChpbiBwYXJ0aWN1bGFyIHRoZSBgYEhUVFBgYCBpbnN0YW5jZSkgbWF5IGJlIGFkanVzdGVkIHRvIGNvbmZvcm0gZXZlbgogbW9yZSBjbG9zZWx5IHRvIHRoZSBSRkNzIHJlbGV2YW50IHRvIHRoZWlyIGRvbWFpbnMuCiAKKwogLi4gZGF0YTo6IGRlZmF1bHQKIAogICAgQW4gaW5zdGFuY2Ugb2YgYGBFbWFpbFBvbGljeWBgIHdpdGggYWxsIGRlZmF1bHRzIHVuY2hhbmdlZC4gIFRoaXMgcG9saWN5CiAgICB1c2VzIHRoZSBzdGFuZGFyZCBQeXRob24gYGBcbmBgIGxpbmUgZW5kaW5ncyByYXRoZXIgdGhhbiB0aGUgUkZDLWNvcnJlY3QKICAgIGBgXHJcbmBgLgogCisKIC4uIGRhdGE6OiBTTVRQCiAKICAgIFN1aXRhYmxlIGZvciBzZXJpYWxpemluZyBtZXNzYWdlcyBpbiBjb25mb3JtYW5jZSB3aXRoIHRoZSBlbWFpbCBSRkNzLgogICAgTGlrZSBgYGRlZmF1bHRgYCwgYnV0IHdpdGggYGBsaW5lc2VwYGAgc2V0IHRvIGBgXHJcbmBgLCB3aGljaCBpcyBSRkMKICAgIGNvbXBsaWFudC4KIAorCiAuLiBkYXRhOjogU01UUFVURjgKIAogICAgVGhlIHNhbWUgYXMgYGBTTVRQYGAgZXhjZXB0IHRoYXQgOmF0dHI6YH5FbWFpbFBvbGljeS51dGY4YCBpcyBgYFRydWVgYC4KQEAgLTU0NCwxMSArNTM3LDEzIEBACiAgICBzZW5kZXIgb3IgcmVjaXBpZW50IGFkZHJlc3NlcyBoYXZlIG5vbi1BU0NJSSBjaGFyYWN0ZXJzICh0aGUKICAgIDptZXRoOmBzbXRwbGliLlNNVFAuc2VuZF9tZXNzYWdlYCBtZXRob2QgaGFuZGxlcyB0aGlzIGF1dG9tYXRpY2FsbHkpLgogCisKIC4uIGRhdGE6OiBIVFRQCiAKICAgIFN1aXRhYmxlIGZvciBzZXJpYWxpemluZyBoZWFkZXJzIHdpdGggZm9yIHVzZSBpbiBIVFRQIHRyYWZmaWMuICBMaWtlCiAgICBgYFNNVFBgYCBleGNlcHQgdGhhdCBgYG1heF9saW5lX2xlbmd0aGBgIGlzIHNldCB0byBgYE5vbmVgYCAodW5saW1pdGVkKS4KIAorCiAuLiBkYXRhOjogc3RyaWN0CiAKICAgIENvbnZlbmllbmNlIGluc3RhbmNlLiAgVGhlIHNhbWUgYXMgYGBkZWZhdWx0YGAgZXhjZXB0IHRoYXQKQEAgLTU1Nyw2ICs1NTIsNyBAQAogCiAgICAgICAgIHNvbWVwb2xpY3kgKyBwb2xpY3kuc3RyaWN0CiAKKwogV2l0aCBhbGwgb2YgdGhlc2UgOmNsYXNzOmBFbWFpbFBvbGljaWVzIDwuRW1haWxQb2xpY3k+YCwgdGhlIGVmZmVjdGl2ZSBBUEkgb2YKIHRoZSBlbWFpbCBwYWNrYWdlIGlzIGNoYW5nZWQgZnJvbSB0aGUgUHl0aG9uIDMuMiBBUEkgaW4gdGhlIGZvbGxvd2luZyB3YXlzOgogCkBAIC01NzMsNyArNTY5LDcgQEAKICAgICAgYW5kIGFsbG93ZWQuCiAKIEZyb20gdGhlIGFwcGxpY2F0aW9uIHZpZXcsIHRoaXMgbWVhbnMgdGhhdCBhbnkgaGVhZGVyIG9idGFpbmVkIHRocm91Z2ggdGhlCi06Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIGlzIGEgaGVhZGVyIG9iamVjdCB3aXRoIGV4dHJhCis6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgaXMgYSBoZWFkZXIgb2JqZWN0IHdpdGggZXh0cmEKIGF0dHJpYnV0ZXMsIHdob3NlIHN0cmluZyB2YWx1ZSBpcyB0aGUgZnVsbHkgZGVjb2RlZCB1bmljb2RlIHZhbHVlIG9mIHRoZQogaGVhZGVyLiAgTGlrZXdpc2UsIGEgaGVhZGVyIG1heSBiZSBhc3NpZ25lZCBhIG5ldyB2YWx1ZSwgb3IgYSBuZXcgaGVhZGVyCiBjcmVhdGVkLCB1c2luZyBhIHVuaWNvZGUgc3RyaW5nLCBhbmQgdGhlIHBvbGljeSB3aWxsIHRha2UgY2FyZSBvZiBjb252ZXJ0aW5nCkBAIC01ODEsMyArNTc3LDc1IEBACiAKIFRoZSBoZWFkZXIgb2JqZWN0cyBhbmQgdGhlaXIgYXR0cmlidXRlcyBhcmUgZGVzY3JpYmVkIGluCiA6bW9kOmB+ZW1haWwuaGVhZGVycmVnaXN0cnlgLgorCisKKworLi4gY2xhc3M6OiBDb21wYXQzMigqKmt3KQorCisgICBUaGlzIGNvbmNyZXRlIDpjbGFzczpgUG9saWN5YCBpcyB0aGUgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBwb2xpY3kuICBJdAorICAgcmVwbGljYXRlcyB0aGUgYmVoYXZpb3Igb2YgdGhlIGVtYWlsIHBhY2thZ2UgaW4gUHl0aG9uIDMuMi4gIFRoZQorICAgOm1vZDpgfmVtYWlsLnBvbGljeWAgbW9kdWxlIGFsc28gZGVmaW5lcyBhbiBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzLAorICAgOmNvbnN0OmBjb21wYXQzMmAsIHRoYXQgaXMgdXNlZCBhcyB0aGUgZGVmYXVsdCBwb2xpY3kuICBUaHVzIHRoZSBkZWZhdWx0CisgICBiZWhhdmlvciBvZiB0aGUgZW1haWwgcGFja2FnZSBpcyB0byBtYWludGFpbiBjb21wYXRpYmlsaXR5IHdpdGggUHl0aG9uIDMuMi4KKworICAgVGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzIGhhdmUgdmFsdWVzIHRoYXQgYXJlIGRpZmZlcmVudCBmcm9tIHRoZQorICAgOmNsYXNzOmBQb2xpY3lgIGRlZmF1bHQ6CisKKworICAgLi4gYXR0cmlidXRlOjogbWFuZ2xlX2Zyb21fCisKKyAgICAgIFRoZSBkZWZhdWx0IGlzIGBgVHJ1ZWBgLgorCisKKyAgIFRoZSBjbGFzcyBwcm92aWRlcyB0aGUgZm9sbG93aW5nIGNvbmNyZXRlIGltcGxlbWVudGF0aW9ucyBvZiB0aGUKKyAgIGFic3RyYWN0IG1ldGhvZHMgb2YgOmNsYXNzOmBQb2xpY3lgOgorCisKKyAgIC4uIG1ldGhvZDo6IGhlYWRlcl9zb3VyY2VfcGFyc2Uoc291cmNlbGluZXMpCisKKyAgICAgIFRoZSBuYW1lIGlzIHBhcnNlZCBhcyBldmVyeXRoaW5nIHVwIHRvIHRoZSAnYGA6YGAnIGFuZCByZXR1cm5lZAorICAgICAgdW5tb2RpZmllZC4gIFRoZSB2YWx1ZSBpcyBkZXRlcm1pbmVkIGJ5IHN0cmlwcGluZyBsZWFkaW5nIHdoaXRlc3BhY2Ugb2ZmCisgICAgICB0aGUgcmVtYWluZGVyIG9mIHRoZSBmaXJzdCBsaW5lLCBqb2luaW5nIGFsbCBzdWJzZXF1ZW50IGxpbmVzIHRvZ2V0aGVyLAorICAgICAgYW5kIHN0cmlwcGluZyBhbnkgdHJhaWxpbmcgY2FycmlhZ2UgcmV0dXJuIG9yIGxpbmVmZWVkIGNoYXJhY3RlcnMuCisKKworICAgLi4gbWV0aG9kOjogaGVhZGVyX3N0b3JlX3BhcnNlKG5hbWUsIHZhbHVlKQorCisgICAgICBUaGUgbmFtZSBhbmQgdmFsdWUgYXJlIHJldHVybmVkIHVubW9kaWZpZWQuCisKKworICAgLi4gbWV0aG9kOjogaGVhZGVyX2ZldGNoX3BhcnNlKG5hbWUsIHZhbHVlKQorCisgICAgICBJZiB0aGUgdmFsdWUgY29udGFpbnMgYmluYXJ5IGRhdGEsIGl0IGlzIGNvbnZlcnRlZCBpbnRvIGEKKyAgICAgIDpjbGFzczpgfmVtYWlsLmhlYWRlci5IZWFkZXJgIG9iamVjdCB1c2luZyB0aGUgYGB1bmtub3duLThiaXRgYCBjaGFyc2V0LgorICAgICAgT3RoZXJ3aXNlIGl0IGlzIHJldHVybmVkIHVubW9kaWZpZWQuCisKKworICAgLi4gbWV0aG9kOjogZm9sZChuYW1lLCB2YWx1ZSkKKworICAgICAgSGVhZGVycyBhcmUgZm9sZGVkIHVzaW5nIHRoZSA6Y2xhc3M6YH5lbWFpbC5oZWFkZXIuSGVhZGVyYCBmb2xkaW5nCisgICAgICBhbGdvcml0aG0sIHdoaWNoIHByZXNlcnZlcyBleGlzdGluZyBsaW5lIGJyZWFrcyBpbiB0aGUgdmFsdWUsIGFuZCB3cmFwcworICAgICAgZWFjaCByZXN1bHRpbmcgbGluZSB0byB0aGUgYGBtYXhfbGluZV9sZW5ndGhgYC4gIE5vbi1BU0NJSSBiaW5hcnkgZGF0YSBhcmUKKyAgICAgIENURSBlbmNvZGVkIHVzaW5nIHRoZSBgYHVua25vd24tOGJpdGBgIGNoYXJzZXQuCisKKworICAgLi4gbWV0aG9kOjogZm9sZF9iaW5hcnkobmFtZSwgdmFsdWUpCisKKyAgICAgIEhlYWRlcnMgYXJlIGZvbGRlZCB1c2luZyB0aGUgOmNsYXNzOmB+ZW1haWwuaGVhZGVyLkhlYWRlcmAgZm9sZGluZworICAgICAgYWxnb3JpdGhtLCB3aGljaCBwcmVzZXJ2ZXMgZXhpc3RpbmcgbGluZSBicmVha3MgaW4gdGhlIHZhbHVlLCBhbmQgd3JhcHMKKyAgICAgIGVhY2ggcmVzdWx0aW5nIGxpbmUgdG8gdGhlIGBgbWF4X2xpbmVfbGVuZ3RoYGAuICBJZiBgYGN0ZV90eXBlYGAgaXMKKyAgICAgIGBgN2JpdGBgLCBub24tYXNjaWkgYmluYXJ5IGRhdGEgaXMgQ1RFIGVuY29kZWQgdXNpbmcgdGhlIGBgdW5rbm93bi04Yml0YGAKKyAgICAgIGNoYXJzZXQuICBPdGhlcndpc2UgdGhlIG9yaWdpbmFsIHNvdXJjZSBoZWFkZXIgaXMgdXNlZCwgd2l0aCBpdHMgZXhpc3RpbmcKKyAgICAgIGxpbmUgYnJlYWtzIGFuZCBhbnkgKFJGQyBpbnZhbGlkKSBiaW5hcnkgZGF0YSBpdCBtYXkgY29udGFpbi4KKworCisuLiBkYXRhOjogY29tcGF0MzIKKworICAgQW4gaW5zdGFuY2Ugb2YgOmNsYXNzOmBDb21wYXQzMmAsIHByb3ZpZGluZyAgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoIHRoZQorICAgYmVoYXZpb3Igb2YgdGhlIGVtYWlsIHBhY2thZ2UgaW4gUHl0aG9uIDMuMi4KKworCisuLiBydWJyaWM6OiBGb290bm90ZXMKKworLi4gWzFdIE9yaW5nYWxseSBhZGRlZCBpbiAzLjMgYXMgYSA6dGVybTpgcHJvdmlzaW9uYWwgZmVhdHVyZSA8cHJvdmlzaW9uYWwKKyAgICAgICBwYWNrYWdlPmAuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbWFpbC5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5yc3QKaW5kZXggZThiYjAyYi4uYzQxODdkZCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZW1haWwucnN0CisrKyBiL0RvYy9saWJyYXJ5L2VtYWlsLnJzdApAQCAtMyw1MCArMywxMDQgQEAKIAogLi4gbW9kdWxlOjogZW1haWwKICAgIDpzeW5vcHNpczogUGFja2FnZSBzdXBwb3J0aW5nIHRoZSBwYXJzaW5nLCBtYW5pcHVsYXRpbmcsIGFuZCBnZW5lcmF0aW5nCi0gICAgICAgICAgICAgIGVtYWlsIG1lc3NhZ2VzLCBpbmNsdWRpbmcgTUlNRSBkb2N1bWVudHMuCi0KLS4uIG1vZHVsZWF1dGhvcjo6IEJhcnJ5IEEuIFdhcnNhdyA8YmFycnlAcHl0aG9uLm9yZz4KLS4uIHNlY3Rpb25hdXRob3I6OiBCYXJyeSBBLiBXYXJzYXcgPGJhcnJ5QHB5dGhvbi5vcmc+Ci0uLiBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxMCBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbgorICAgICAgICAgICAgICBlbWFpbCBtZXNzYWdlcy4KKy4uIG1vZHVsZWF1dGhvcjo6IEJhcnJ5IEEuIFdhcnNhdyA8YmFycnlAcHl0aG9uLm9yZz4sCisgICAgICAgICAgICAgICAgICBSLiBEYXZpZCBNdXJyYXkgPHJkbXVycmF5QGJpdGRhbmNlLmNvbT4KKy4uIHNlY3Rpb25hdXRob3I6OiBSLiBEYXZpZCBNdXJyYXkgPHJkbXVycmF5QGJpdGRhbmNlLmNvbT4KIAogKipTb3VyY2UgY29kZToqKiA6c291cmNlOmBMaWIvZW1haWwvX19pbml0X18ucHlgCiAKIC0tLS0tLS0tLS0tLS0tCiAKLVRoZSA6bW9kOmBlbWFpbGAgcGFja2FnZSBpcyBhIGxpYnJhcnkgZm9yIG1hbmFnaW5nIGVtYWlsIG1lc3NhZ2VzLCBpbmNsdWRpbmcKLU1JTUUgYW5kIG90aGVyIDpyZmM6YDI4MjJgXCAtYmFzZWQgbWVzc2FnZSBkb2N1bWVudHMuICBJdCBpcyBzcGVjaWZpY2FsbHkgKm5vdCoKLWRlc2lnbmVkIHRvIGRvIGFueSBzZW5kaW5nIG9mIGVtYWlsIG1lc3NhZ2VzIHRvIFNNVFAgKDpyZmM6YDI4MjFgKSwgTk5UUCwgb3IKLW90aGVyIHNlcnZlcnM7IHRob3NlIGFyZSBmdW5jdGlvbnMgb2YgbW9kdWxlcyBzdWNoIGFzIDptb2Q6YHNtdHBsaWJgIGFuZAotOm1vZDpgbm50cGxpYmAuIFRoZSA6bW9kOmBlbWFpbGAgcGFja2FnZSBhdHRlbXB0cyB0byBiZSBhcyBSRkMtY29tcGxpYW50IGFzCi1wb3NzaWJsZSwgc3VwcG9ydGluZyBpbiBhZGRpdGlvbiB0byA6cmZjOmAyODIyYCwgc3VjaCBNSU1FLXJlbGF0ZWQgUkZDcyBhcwotOnJmYzpgMjA0NWAsIDpyZmM6YDIwNDZgLCA6cmZjOmAyMDQ3YCwgYW5kIDpyZmM6YDIyMzFgLgorVGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlIGlzIGEgbGlicmFyeSBmb3IgbWFuYWdpbmcgZW1haWwgbWVzc2FnZXMuICBJdCBpcworc3BlY2lmaWNhbGx5ICpub3QqIGRlc2lnbmVkIHRvIGRvIGFueSBzZW5kaW5nIG9mIGVtYWlsIG1lc3NhZ2VzIHRvIFNNVFAKKyg6cmZjOmAyODIxYCksIE5OVFAsIG9yIG90aGVyIHNlcnZlcnM7IHRob3NlIGFyZSBmdW5jdGlvbnMgb2YgbW9kdWxlcyBzdWNoIGFzCis6bW9kOmBzbXRwbGliYCBhbmQgOm1vZDpgbm50cGxpYmAuICBUaGUgOm1vZDpgZW1haWxgIHBhY2thZ2UgYXR0ZW1wdHMgdG8gYmUgYXMKK1JGQy1jb21wbGlhbnQgYXMgcG9zc2libGUsIHN1cHBvcnRpbmcgOnJmYzpgNTIzM2AgYW5kIDpyZmM6YDY1MzJgLCBhcyB3ZWxsIGFzCitzdWNoIE1JTUUtcmVsYXRlZCBSRkNzIGFzIDpyZmM6YDIwNDVgLCA6cmZjOmAyMDQ2YCwgOnJmYzpgMjA0N2AsIDpyZmM6YDIxODNgLAorYW5kIDpyZmM6YDIyMzFgLgogCi1UaGUgcHJpbWFyeSBkaXN0aW5ndWlzaGluZyBmZWF0dXJlIG9mIHRoZSA6bW9kOmBlbWFpbGAgcGFja2FnZSBpcyB0aGF0IGl0IHNwbGl0cwotdGhlIHBhcnNpbmcgYW5kIGdlbmVyYXRpbmcgb2YgZW1haWwgbWVzc2FnZXMgZnJvbSB0aGUgaW50ZXJuYWwgKm9iamVjdCBtb2RlbCoKLXJlcHJlc2VudGF0aW9uIG9mIGVtYWlsLiAgQXBwbGljYXRpb25zIHVzaW5nIHRoZSA6bW9kOmBlbWFpbGAgcGFja2FnZSBkZWFsCi1wcmltYXJpbHkgd2l0aCBvYmplY3RzOyB5b3UgY2FuIGFkZCBzdWItb2JqZWN0cyB0byBtZXNzYWdlcywgcmVtb3ZlIHN1Yi1vYmplY3RzCi1mcm9tIG1lc3NhZ2VzLCBjb21wbGV0ZWx5IHJlLWFycmFuZ2UgdGhlIGNvbnRlbnRzLCBldGMuICBUaGVyZSBpcyBhIHNlcGFyYXRlCi1wYXJzZXIgYW5kIGEgc2VwYXJhdGUgZ2VuZXJhdG9yIHdoaWNoIGhhbmRsZXMgdGhlIHRyYW5zZm9ybWF0aW9uIGZyb20gZmxhdCB0ZXh0Ci10byB0aGUgb2JqZWN0IG1vZGVsLCBhbmQgdGhlbiBiYWNrIHRvIGZsYXQgdGV4dCBhZ2Fpbi4gIFRoZXJlIGFyZSBhbHNvIGhhbmR5Ci1zdWJjbGFzc2VzIGZvciBzb21lIGNvbW1vbiBNSU1FIG9iamVjdCB0eXBlcywgYW5kIGEgZmV3IG1pc2NlbGxhbmVvdXMgdXRpbGl0aWVzCi10aGF0IGhlbHAgd2l0aCBzdWNoIGNvbW1vbiB0YXNrcyBhcyBleHRyYWN0aW5nIGFuZCBwYXJzaW5nIG1lc3NhZ2UgZmllbGQgdmFsdWVzLAotY3JlYXRpbmcgUkZDLWNvbXBsaWFudCBkYXRlcywgZXRjLgorVGhlIG92ZXJhbGwgc3RydWN0dXJlIG9mIHRoZSBlbWFpbCBwYWNrYWdlIGNhbiBiZSBkaXZpZGVkIGludG8gdGhyZWUgbWFqb3IKK2NvbXBvbmVudHMsIHBsdXMgYSBmb3VydGggY29tcG9uZW50IHRoYXQgY29udHJvbHMgdGhlIGJlaGF2aW9yIG9mIHRoZSBvdGhlcgorY29tcG9uZW50cy4KKworVGhlIGNlbnRyYWwgY29tcG9uZW50IG9mIHRoZSBwYWNrYWdlIGlzIGFuICJvYmplY3QgbW9kZWwiIHRoYXQgcmVwcmVzZW50cyBlbWFpbAorbWVzc2FnZXMuICBBbiBhcHBsaWNhdGlvbiBpbnRlcmFjdHMgd2l0aCB0aGUgcGFja2FnZSBwcmltYXJpbHkgdGhyb3VnaCB0aGUKK29iamVjdCBtb2RlbCBpbnRlcmZhY2UgZGVmaW5lZCBpbiB0aGUgOm1vZDpgfmVtYWlsLm1lc3NhZ2VgIHN1Yi1tb2R1bGUuICBUaGUKK2FwcGxpY2F0aW9uIGNhbiB1c2UgdGhpcyBBUEkgdG8gYXNrIHF1ZXN0aW9ucyBhYm91dCBhbiBleGlzdGluZyBlbWFpbCwgdG8KK2NvbnN0cnVjdCBhIG5ldyBlbWFpbCwgb3IgdG8gYWRkIG9yIHJlbW92ZSBlbWFpbCBzdWJjb21wb25lbnRzIHRoYXQgdGhlbXNlbHZlcwordXNlIHRoZSBzYW1lIG9iamVjdCBtb2RlbCBpbnRlcmZhY2UuICBUaGF0IGlzLCBmb2xsb3dpbmcgdGhlIG5hdHVyZSBvZiBlbWFpbAorbWVzc2FnZXMgYW5kIHRoZWlyIE1JTUUgc3ViY29tcG9uZW50cywgdGhlIGVtYWlsIG9iamVjdCBtb2RlbCBpcyBhIHRyZWUKK3N0cnVjdHVyZSBvZiBvYmplY3RzIHRoYXQgYWxsIHByb3ZpZGUgdGhlIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYAorQVBJLgorCitUaGUgb3RoZXIgdHdvIG1ham9yIGNvbXBvbmVudHMgb2YgdGhlIHBhY2thZ2UgYXJlIHRoZSA6bW9kOmB+ZW1haWwucGFyc2VyYCBhbmQKK3RoZSA6bW9kOmB+ZW1haWwuZ2VuZXJhdG9yYC4gIFRoZSBwYXJzZXIgdGFrZXMgdGhlIHNlcmlhbGl6ZWQgdmVyc2lvbiBvZiBhbgorZW1haWwgbWVzc2FnZSAoYSBzdHJlYW0gb2YgYnl0ZXMpIGFuZCBjb252ZXJ0cyBpdCBpbnRvIGEgdHJlZSBvZgorOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgIG9iamVjdHMuICBUaGUgZ2VuZXJhdG9yIHRha2VzIGFuCis6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgYW5kIHR1cm5zIGl0IGJhY2sgaW50byBhIHNlcmlhbGl6ZWQgYnl0ZQorc3RyZWFtLiAgKFRoZSBwYXJzZXIgYW5kIGdlbmVyYXRvciBhbHNvIGhhbmRsZSBzdHJlYW1zIG9mIHRleHQgY2hhcmFjdGVycywgYnV0Cit0aGlzIHVzYWdlIGlzIGRpc2NvdXJhZ2VkIGFzIGl0IGlzIHRvbyBlYXN5IHRvIGVuZCB1cCB3aXRoIG1lc3NhZ2VzIHRoYXQgYXJlCitub3QgdmFsaWQgaW4gb25lIHdheSBvciBhbm90aGVyLikKKworVGhlIGNvbnRyb2wgY29tcG9uZW50IGlzIHRoZSA6bW9kOmB+ZW1haWwucG9saWN5YCBtb2R1bGUuICBFdmVyeQorOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgLCBldmVyeSA6bW9kOmB+ZW1haWwuZ2VuZXJhdG9yYCwgYW5kIGV2ZXJ5Cis6bW9kOmB+ZW1haWwucGFyc2VyYCBoYXMgYW4gYXNzb2NpYXRlZCA6bW9kOmB+ZW1haWwucG9saWN5YCBvYmplY3QgdGhhdAorY29udHJvbHMgaXRzIGJlaGF2aW9yLiAgVXN1YWxseSBhbiBhcHBsaWNhdGlvbiBvbmx5IG5lZWRzIHRvIHNwZWNpZnkgdGhlIHBvbGljeQord2hlbiBhbiA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgaXMgY3JlYXRlZCwgZWl0aGVyIGJ5IGRpcmVjdGx5CitpbnN0YW50aWF0aW5nIGFuIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCAgdG8gY3JlYXRlIGEgbmV3IGVtYWlsLAorb3IgYnkgcGFyc2luZyBhbiBpbnB1dCBzdHJlYW0gdXNpbmcgYSA6bW9kOmB+ZW1haWwucGFyc2VyYC4gIEJ1dCB0aGUgcG9saWN5IGNhbgorYmUgY2hhbmdlZCB3aGVuIHRoZSBtZXNzYWdlIGlzIHNlcmlhbGl6ZWQgdXNpbmcgYSA6bW9kOmB+ZW1haWwuZ2VuZXJhdG9yYC4KK1RoaXMgYWxsb3dzLCBmb3IgZXhhbXBsZSwgYSBnZW5lcmljIGVtYWlsIG1lc3NhZ2UgdG8gYmUgcGFyc2VkIGZyb20gZGlzaywgYnV0Cit0byBzZXJpYWxpemUgaXQgdXNpbmcgc3RhbmRhcmQgU01UUCBzZXR0aW5ncyB3aGVuIHNlbmRpbmcgaXQgdG8gYW4gZW1haWwKK3NlcnZlci4KKworVGhlIGVtYWlsIHBhY2thZ2UgZG9lcyBpdHMgYmVzdCB0byBoaWRlIHRoZSBkZXRhaWxzIG9mIHRoZSB2YXJpb3VzIGdvdmVybmluZworUkZDcyBmcm9tIHRoZSBhcHBsaWNhdGlvbi4gIENvbmNlcHR1YWxseSB0aGUgYXBwbGljYXRpb24gc2hvdWxkIGJlIGFibGUgdG8KK3RyZWF0IHRoZSBlbWFpbCBtZXNzYWdlIGFzIGEgc3RydWN0dXJlZCB0cmVlIG9mIHVuaWNvZGUgdGV4dCBhbmQgYmluYXJ5CithdHRhY2htZW50cywgd2l0aG91dCBoYXZpbmcgdG8gd29ycnkgYWJvdXQgaG93IHRoZXNlIGFyZSByZXByZXNlbnRlZCB3aGVuCitzZXJpYWxpemVkLiAgSW4gcHJhY3RpY2UsIGhvd2V2ZXIsIGl0IGlzIG9mdGVuIG5lY2Vzc2FyeSB0byBiZSBhd2FyZSBvZiBhdAorbGVhc3Qgc29tZSBvZiB0aGUgcnVsZXMgZ292ZXJuaW5nIE1JTUUgbWVzc2FnZXMgYW5kIHRoZWlyIHN0cnVjdHVyZSwKK3NwZWNpZmljYWxseSB0aGUgbmFtZXMgYW5kIG5hdHVyZSBvZiB0aGUgTUlNRSAiY29udGVudCB0eXBlcyIgYW5kIGhvdyB0aGV5CitpZGVudGlmeSBtdWx0aXBhcnQgZG9jdW1lbnRzLiAgRm9yIHRoZSBtb3N0IHBhcnQgdGhpcyBrbm93bGVkZ2Ugc2hvdWxkIG9ubHkgYmUKK3JlcXVpcmVkIGZvciBtb3JlIGNvbXBsZXggYXBwbGljYXRpb25zLCBhbmQgZXZlbiB0aGVuIGl0IHNob3VsZCBvbmx5IGJlIHRoZQoraGlnaCBsZXZlbCBzdHJ1Y3R1cmUgaW4gcXVlc3Rpb24sIGFuZCBub3QgdGhlIGRldGFpbHMgb2YgaG93IHRob3NlIHN0cnVjdHVyZXMKK2FyZSByZXByZXNlbnRlZC4gIFNpbmNlIE1JTUUgY29udGVudCB0eXBlcyBhcmUgdXNlZCB3aWRlbHkgaW4gbW9kZXJuIGludGVybmV0Citzb2Z0d2FyZSAobm90IGp1c3QgZW1haWwpLCB0aGlzIHdpbGwgYmUgYSBmYW1pbGlhciBjb25jZXB0IHRvIG1hbnkgcHJvZ3JhbW1lcnMuCiAKIFRoZSBmb2xsb3dpbmcgc2VjdGlvbnMgZGVzY3JpYmUgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlLgotVGhlIG9yZGVyaW5nIGZvbGxvd3MgYSBwcm9ncmVzc2lvbiB0aGF0IHNob3VsZCBiZSBjb21tb24gaW4gYXBwbGljYXRpb25zOiBhbgotZW1haWwgbWVzc2FnZSBpcyByZWFkIGFzIGZsYXQgdGV4dCBmcm9tIGEgZmlsZSBvciBvdGhlciBzb3VyY2UsIHRoZSB0ZXh0IGlzCi1wYXJzZWQgdG8gcHJvZHVjZSB0aGUgb2JqZWN0IHN0cnVjdHVyZSBvZiB0aGUgZW1haWwgbWVzc2FnZSwgdGhpcyBzdHJ1Y3R1cmUgaXMKLW1hbmlwdWxhdGVkLCBhbmQgZmluYWxseSwgdGhlIG9iamVjdCB0cmVlIGlzIHJlbmRlcmVkIGJhY2sgaW50byBmbGF0IHRleHQuCitXZSBzdGFydCB3aXRoIHRoZSA6bW9kOmB+ZW1haWwubWVzc2FnZWAgb2JqZWN0IG1vZGVsLCB3aGljaCBpcyB0aGUgcHJpbWFyeQoraW50ZXJmYWNlIGFuIGFwcGxpY2F0aW9uIHdpbGwgdXNlLCBhbmQgZm9sbG93IHRoYXQgd2l0aCB0aGUKKzptb2Q6YH5lbWFpbC5wYXJzZXJgIGFuZCA6bW9kOmB+ZW1haWwuZ2VuZXJhdG9yYCBjb21wb25lbnRzLiAgVGhlbiB3ZSBjb3ZlciB0aGUKKzptb2Q6YH5lbWFpbC5wb2xpY3lgIGNvbnRyb2xzLCB3aGljaCBjb21wbGV0ZXMgdGhlIHRyZWF0bWVudCBvZiB0aGUgbWFpbgorY29tcG9uZW50cyBvZiB0aGUgbGlicmFyeS4KIAotSXQgaXMgcGVyZmVjdGx5IGZlYXNpYmxlIHRvIGNyZWF0ZSB0aGUgb2JqZWN0IHN0cnVjdHVyZSBvdXQgb2Ygd2hvbGUgY2xvdGggLS0tCi1pLmUuIGNvbXBsZXRlbHkgZnJvbSBzY3JhdGNoLiAgRnJvbSB0aGVyZSwgYSBzaW1pbGFyIHByb2dyZXNzaW9uIGNhbiBiZSB0YWtlbiBhcwotYWJvdmUuCitUaGUgbmV4dCB0aHJlZSBzZWN0aW9ucyBjb3ZlciB0aGUgZXhjZXB0aW9ucyB0aGUgcGFja2FnZSBtYXkgcmFpc2UgYW5kIHRoZQorZGVmZWN0cyAobm9uLWNvbXBsaWFuY2Ugd2l0aCB0aGUgUkZDcykgdGhhdCB0aGUgOm1vZDpgfmVtYWlsLnBhcnNlcmAgbWF5CitkZXRlY3QuICBUaGVuIHdlIGNvdmVyIHRoZSA6bW9kOmB+ZW1haWwuaGVhZGVycmVnaXN0cnlgIGFuZCB0aGUKKzptb2Q6YH5lbWFpbC5jb250ZW50bWFuYWdlcmAgc3ViLWNvbXBvbmVudHMsIHdoaWNoIHByb3ZpZGUgdG9vbHMgZm9yIGRvaW5nIG1vcmUKK2RldGFpbGVkIG1hbmlwdWxhdGlvbiBvZiBoZWFkZXJzIGFuZCBwYXlsb2FkcywgcmVzcGVjdGl2ZWx5LiAgQm90aCBvZiB0aGVzZQorY29tcG9uZW50cyBjb250YWluIGZlYXR1cmVzIHJlbGV2YW50IHRvIGNvbnN1bWluZyBhbmQgcHJvZHVjaW5nIG5vbi10cml2aWFsCittZXNzYWdlcywgYnV0IGFsc28gZG9jdW1lbnQgdGhlaXIgZXh0ZW5zaWJpbGl0eSBBUElzLCB3aGljaCB3aWxsIGJlIG9mIGludGVyZXN0Cit0byBhZHZhbmNlZCBhcHBsaWNhdGlvbnMuCiAKLUFsc28gaW5jbHVkZWQgYXJlIGRldGFpbGVkIHNwZWNpZmljYXRpb25zIG9mIGFsbCB0aGUgY2xhc3NlcyBhbmQgbW9kdWxlcyB0aGF0Ci10aGUgOm1vZDpgZW1haWxgIHBhY2thZ2UgcHJvdmlkZXMsIHRoZSBleGNlcHRpb24gY2xhc3NlcyB5b3UgbWlnaHQgZW5jb3VudGVyCi13aGlsZSB1c2luZyB0aGUgOm1vZDpgZW1haWxgIHBhY2thZ2UsIHNvbWUgYXV4aWxpYXJ5IHV0aWxpdGllcywgYW5kIGEgZmV3Ci1leGFtcGxlcy4gIEZvciB1c2VycyBvZiB0aGUgb2xkZXIgOm1vZDpgbWltZWxpYmAgcGFja2FnZSwgb3IgcHJldmlvdXMgdmVyc2lvbnMKLW9mIHRoZSA6bW9kOmBlbWFpbGAgcGFja2FnZSwgYSBzZWN0aW9uIG9uIGRpZmZlcmVuY2VzIGFuZCBwb3J0aW5nIGlzIHByb3ZpZGVkLgorRm9sbG93aW5nIHRob3NlIGlzIGEgc2V0IG9mIGV4YW1wbGVzIG9mIHVzaW5nIHRoZSBmdW5kYW1lbnRhbCBwYXJ0cyBvZiB0aGUgQVBJcworY292ZXJlZCBpbiB0aGUgcHJlY2VkaW5nIHNlY3Rpb25zLgorCitUaGUgZm9yZ29pbmcgcmVwcmVzZW50IHRoZSBtb2Rlcm4gKHVuaWNvZGUgZnJpZW5kbHkpIEFQSSBvZiB0aGUgZW1haWwgcGFja2FnZS4KK1RoZSByZW1haW5pbmcgc2VjdGlvbnMsIHN0YXJ0aW5nIHdpdGggdGhlIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAKK2NsYXNzLCBjb3ZlciB0aGUgbGVnYWN5IDpkYXRhOmB+ZW1haWwucG9saWN5LmNvbXBhdDMyYCBBUEkgdGhhdCBkZWFscyBtdWNoIG1vcmUKK2RpcmVjdGx5IHdpdGggdGhlIGRldGFpbHMgb2YgaG93IGVtYWlsIG1lc3NhZ2VzIGFyZSByZXByZXNlbnRlZC4gIFRoZQorOmRhdGE6YH5lbWFpbC5wb2xpY3kuY29tcGF0MzJgIEFQSSBkb2VzICpub3QqIGhpZGUgdGhlIGRldGFpbHMgb2YgdGhlIFJGQ3MgZnJvbQordGhlIGFwcGxpY2F0aW9uLCBidXQgZm9yIGFwcGxpY2F0aW9ucyB0aGF0IG5lZWQgdG8gb3BlcmF0ZSBhdCB0aGF0IGxldmVsLCB0aGV5CitjYW4gYmUgdXNlZnVsIHRvb2xzLiAgVGhpcyBkb2N1bWVudGF0aW9uIGlzIGFsc28gcmVsZXZhbnQgZm9yIGFwcGxpY2F0aW9ucyB0aGF0CithcmUgc3RpbGwgdXNpbmcgdGhlIDptb2Q6YH5lbWFpbC5wb2xpY3kuY29tcGF0MzJgIEFQSSBmb3IgYmFja3dhcmQKK2NvbXBhdGliaWxpdHkgcmVhc29ucy4KKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgIERvY3MgcmVvcmdhbml6ZWQgYW5kIHJld3JpdHRlbiB0byBwcm9tb3RlIHRoZSBuZXcKKyAgIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYC86Y2xhc3M6YH5lbWFpbC5wb2xpY3kuRW1haWxQb2xpY3lgCisgICBBUEkuCiAKIENvbnRlbnRzIG9mIHRoZSA6bW9kOmBlbWFpbGAgcGFja2FnZSBkb2N1bWVudGF0aW9uOgogCkBAIC01NiwzMzUgKzExMCw0MyBAQAogICAgZW1haWwucGFyc2VyLnJzdAogICAgZW1haWwuZ2VuZXJhdG9yLnJzdAogICAgZW1haWwucG9saWN5LnJzdAorCisgICBlbWFpbC5lcnJvcnMucnN0CiAgICBlbWFpbC5oZWFkZXJyZWdpc3RyeS5yc3QKICAgIGVtYWlsLmNvbnRlbnRtYW5hZ2VyLnJzdAorCisgICBlbWFpbC5leGFtcGxlcy5yc3QKKworTGVnYWN5IEFQSToKKworLi4gdG9jdHJlZTo6CisKKyAgIGVtYWlsLmNvbXBhdDMyLW1lc3NhZ2UucnN0CiAgICBlbWFpbC5taW1lLnJzdAogICAgZW1haWwuaGVhZGVyLnJzdAogICAgZW1haWwuY2hhcnNldC5yc3QKICAgIGVtYWlsLmVuY29kZXJzLnJzdAotICAgZW1haWwuZXJyb3JzLnJzdAogICAgZW1haWwudXRpbC5yc3QKICAgIGVtYWlsLml0ZXJhdG9ycy5yc3QKLSAgIGVtYWlsLWV4YW1wbGVzLnJzdAogCiAKIC4uIHNlZWFsc286OgogCiAgICBNb2R1bGUgOm1vZDpgc210cGxpYmAKLSAgICAgIFNNVFAgcHJvdG9jb2wgY2xpZW50CisgICAgICBTTVRQIChTaW1wbGUgTWFpbCBUcmFuc3BvcnQgUHJvdGNvbCkgY2xpZW50CisKKyAgIE1vZHVsZSA6bW9kOmBwb3BsaWJgCisgICAgICBQT1AgKFBvc3QgT2ZmaWNlIFByb3RvY29sKSBjbGllbnQKKworICAgTW9kdWxlIDptb2Q6YGltYXBsaWJgCisgICAgICBJTUFQIChJbnRlcm5ldCBNZXNzYWdlIEFjY2VzcyBQcm90b2NvbCkgY2xpZW50CiAKICAgIE1vZHVsZSA6bW9kOmBubnRwbGliYAotICAgICAgTk5UUCBwcm90b2NvbCBjbGllbnQKKyAgICAgIE5OVFAgKE5ldCBOZXdzIFRyYW5zcG9ydCBQcm90b2NvbCkgY2xpZW50CiAKKyAgIE1vZHVsZSA6bW9kOmBtYWlsYm94YAorICAgICAgVG9vbHMgZm9yIGNyZWF0aW5nLCByZWFkaW5nLCBhbmQgbWFuYWdpbmcgY29sbGVjdGlvbnMgb2YgbWVzc2FnZXMgb24gZGlzaworICAgICAgdXNpbmcgYSB2YXJpZXR5IHN0YW5kYXJkIGZvcm1hdHMuCiAKLS4uIF9lbWFpbC1wa2ctaGlzdG9yeToKLQotUGFja2FnZSBIaXN0b3J5Ci0tLS0tLS0tLS0tLS0tLS0KLQotVGhpcyB0YWJsZSBkZXNjcmliZXMgdGhlIHJlbGVhc2UgaGlzdG9yeSBvZiB0aGUgZW1haWwgcGFja2FnZSwgY29ycmVzcG9uZGluZyB0bwotdGhlIHZlcnNpb24gb2YgUHl0aG9uIHRoYXQgdGhlIHBhY2thZ2Ugd2FzIHJlbGVhc2VkIHdpdGguICBGb3IgcHVycG9zZXMgb2YgdGhpcwotZG9jdW1lbnQsIHdoZW4geW91IHNlZSBhIG5vdGUgYWJvdXQgY2hhbmdlIG9yIGFkZGVkIHZlcnNpb25zLCB0aGVzZSByZWZlciB0byB0aGUKLVB5dGhvbiB2ZXJzaW9uIHRoZSBjaGFuZ2Ugd2FzIG1hZGUgaW4sICpub3QqIHRoZSBlbWFpbCBwYWNrYWdlIHZlcnNpb24uICBUaGlzCi10YWJsZSBhbHNvIGRlc2NyaWJlcyB0aGUgUHl0aG9uIGNvbXBhdGliaWxpdHkgb2YgZWFjaCB2ZXJzaW9uIG9mIHRoZSBwYWNrYWdlLgotCi0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgZW1haWwgdmVyc2lvbiB8IGRpc3RyaWJ1dGVkIHdpdGggICAgICAgICAgICAgfCBjb21wYXRpYmxlIHdpdGggICAgICAgfAotKz09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT0rCi18IDpjb25zdDpgMS54YCAgfCBQeXRob24gMi4yLjAgdG8gUHl0aG9uIDIuMi4xIHwgKm5vIGxvbmdlciBzdXBwb3J0ZWQqIHwKLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YDIuNWAgIHwgUHl0aG9uIDIuMi4yKyBhbmQgUHl0aG9uIDIuMyB8IFB5dGhvbiAyLjEgdG8gMi41ICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmAzLjBgICB8IFB5dGhvbiAyLjQgYW5kIFB5dGhvbiAyLjUgICAgfCBQeXRob24gMi4zIHRvIDIuNiAgICAgfAotKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgNC4wYCAgfCBQeXRob24gMi41IHRvIFB5dGhvbiAyLjcgICAgIHwgUHl0aG9uIDIuMyB0byAyLjcgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YDUuMGAgIHwgUHl0aG9uIDMuMCBhbmQgUHl0aG9uIDMuMSAgICB8IFB5dGhvbiAzLjAgdG8gMy4yICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmA1LjFgICB8IFB5dGhvbiAzLjIgICAgICAgICAgICAgICAgICAgfCBQeXRob24gMy4yICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0KLUFmdGVyIFZlcnNpb24gNS4xIChQeXRob24gMy4yKSwgdGhlIGVtYWlsIHBhY2thZ2Ugbm8gbG9uZ2VyIGhhcyBhIHZlcnNpb24gdGhhdAotaXMgc2VwYXJhdGUgZnJvbSB0aGUgUHl0aG9uIHZlcnNpb24uICAoU2VlIHRoZSA6cmVmOmB3aGF0c25ldy1pbmRleGAgZG9jdW1lbnRzCi1mb3IgdGhlIHJlc3BlY3RpdmUgUHl0aG9uIHZlcnNpb25zIGZvciBkZXRhaWxzIG9uIGNoYW5nZXMuKQotCi1IZXJlIGFyZSB0aGUgbWFqb3IgZGlmZmVyZW5jZXMgYmV0d2VlbiA6bW9kOmBlbWFpbGAgdmVyc2lvbiA1LjEgYW5kCi12ZXJzaW9uIDUuMDoKLQotKiBJdCBpcyBvbmNlIGFnYWluIHBvc3NpYmxlIHRvIHBhcnNlIG1lc3NhZ2VzIGNvbnRhaW5pbmcgbm9uLUFTQ0lJIGJ5dGVzLAotICBhbmQgdG8gcmVwcm9kdWNlIHN1Y2ggbWVzc2FnZXMgaWYgdGhlIGRhdGEgY29udGFpbmluZyB0aGUgbm9uLUFTQ0lJCi0gIGJ5dGVzIGlzIG5vdCBtb2RpZmllZC4KLQotKiBOZXcgZnVuY3Rpb25zIDpmdW5jOmBtZXNzYWdlX2Zyb21fYnl0ZXNgIGFuZCA6ZnVuYzpgbWVzc2FnZV9mcm9tX2JpbmFyeV9maWxlYCwKLSAgYW5kIG5ldyBjbGFzc2VzIDpjbGFzczpgfmVtYWlsLnBhcnNlci5CeXRlc0ZlZWRQYXJzZXJgIGFuZAotICA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuQnl0ZXNQYXJzZXJgIGFsbG93IGJpbmFyeSBtZXNzYWdlIGRhdGEgdG8gYmUgcGFyc2VkCi0gIGludG8gbW9kZWwgb2JqZWN0cy4KLQotKiBHaXZlbiBieXRlcyBpbnB1dCB0byB0aGUgbW9kZWwsIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmdldF9wYXlsb2FkYAotICB3aWxsIGJ5IGRlZmF1bHQgZGVjb2RlIGEgbWVzc2FnZSBib2R5IHRoYXQgaGFzIGEKLSAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgIG9mIGBgOGJpdGBgIHVzaW5nIHRoZSBjaGFyc2V0Ci0gIHNwZWNpZmllZCBpbiB0aGUgTUlNRSBoZWFkZXJzIGFuZCByZXR1cm4gdGhlIHJlc3VsdGluZyBzdHJpbmcuCi0KLSogR2l2ZW4gYnl0ZXMgaW5wdXQgdG8gdGhlIG1vZGVsLCA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuR2VuZXJhdG9yYCB3aWxsCi0gIGNvbnZlcnQgbWVzc2FnZSBib2RpZXMgdGhhdCBoYXZlIGEgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgIG9mCi0gIDhiaXQgdG8gaW5zdGVhZCBoYXZlIGEgN2JpdCBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nLgotCi0qIE5ldyBjbGFzcyA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuQnl0ZXNHZW5lcmF0b3JgIHByb2R1Y2VzIGJ5dGVzCi0gIGFzIG91dHB1dCwgcHJlc2VydmluZyBhbnkgdW5jaGFuZ2VkIG5vbi1BU0NJSSBkYXRhIHRoYXQgd2FzCi0gIHByZXNlbnQgaW4gdGhlIGlucHV0IHVzZWQgdG8gYnVpbGQgdGhlIG1vZGVsLCBpbmNsdWRpbmcgbWVzc2FnZSBib2RpZXMKLSAgd2l0aCBhIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYCBvZiA4Yml0LgotCi1IZXJlIGFyZSB0aGUgbWFqb3IgZGlmZmVyZW5jZXMgYmV0d2VlbiA6bW9kOmBlbWFpbGAgdmVyc2lvbiA1LjAgYW5kIHZlcnNpb24gNDoKLQotKiBBbGwgb3BlcmF0aW9ucyBhcmUgb24gdW5pY29kZSBzdHJpbmdzLiAgVGV4dCBpbnB1dHMgbXVzdCBiZSBzdHJpbmdzLAotICB0ZXh0IG91dHB1dHMgYXJlIHN0cmluZ3MuICBPdXRwdXRzIGFyZSBsaW1pdGVkIHRvIHRoZSBBU0NJSSBjaGFyYWN0ZXIKLSAgc2V0IGFuZCBzbyBjYW4gYmUgZW5jb2RlZCB0byBBU0NJSSBmb3IgdHJhbnNtaXNzaW9uLiAgSW5wdXRzIGFyZSBhbHNvCi0gIGxpbWl0ZWQgdG8gQVNDSUk7IHRoaXMgaXMgYW4gYWNrbm93bGVkZ2VkIGxpbWl0YXRpb24gb2YgZW1haWwgNS4wIGFuZAotICBtZWFucyBpdCBjYW4gb25seSBiZSB1c2VkIHRvIHBhcnNlIGVtYWlsIHRoYXQgaXMgN2JpdCBjbGVhbi4KLQotSGVyZSBhcmUgdGhlIG1ham9yIGRpZmZlcmVuY2VzIGJldHdlZW4gOm1vZDpgZW1haWxgIHZlcnNpb24gNCBhbmQgdmVyc2lvbiAzOgotCi0qIEFsbCBtb2R1bGVzIGhhdmUgYmVlbiByZW5hbWVkIGFjY29yZGluZyB0byA6cGVwOmA4YCBzdGFuZGFyZHMuICBGb3IgZXhhbXBsZSwKLSAgdGhlIHZlcnNpb24gMyBtb2R1bGUgOm1vZDpgZW1haWwuTWVzc2FnZWAgd2FzIHJlbmFtZWQgdG8gOm1vZDpgZW1haWwubWVzc2FnZWAgaW4KLSAgdmVyc2lvbiA0LgotCi0qIEEgbmV3IHN1YnBhY2thZ2UgOm1vZDpgZW1haWwubWltZWAgd2FzIGFkZGVkIGFuZCBhbGwgdGhlIHZlcnNpb24gMwotICA6bW9kOmBlbWFpbC5NSU1FXCpgIG1vZHVsZXMgd2VyZSByZW5hbWVkIGFuZCBzaXR1YXRlZCBpbnRvIHRoZSA6bW9kOmBlbWFpbC5taW1lYAotICBzdWJwYWNrYWdlLiAgRm9yIGV4YW1wbGUsIHRoZSB2ZXJzaW9uIDMgbW9kdWxlIDptb2Q6YGVtYWlsLk1JTUVUZXh0YCB3YXMgcmVuYW1lZAotICB0byA6bW9kOmBlbWFpbC5taW1lLnRleHRgLgotCi0gICpOb3RlIHRoYXQgdGhlIHZlcnNpb24gMyBuYW1lcyB3aWxsIGNvbnRpbnVlIHRvIHdvcmsgdW50aWwgUHl0aG9uIDIuNiouCi0KLSogVGhlIDptb2Q6YGVtYWlsLm1pbWUuYXBwbGljYXRpb25gIG1vZHVsZSB3YXMgYWRkZWQsIHdoaWNoIGNvbnRhaW5zIHRoZQotICA6Y2xhc3M6YH5lbWFpbC5taW1lLmFwcGxpY2F0aW9uLk1JTUVBcHBsaWNhdGlvbmAgY2xhc3MuCi0KLSogTWV0aG9kcyB0aGF0IHdlcmUgZGVwcmVjYXRlZCBpbiB2ZXJzaW9uIDMgaGF2ZSBiZWVuIHJlbW92ZWQuICBUaGVzZSBpbmNsdWRlCi0gIDptZXRoOmBHZW5lcmF0b3IuX19jYWxsX19gLCA6bWV0aDpgTWVzc2FnZS5nZXRfdHlwZWAsCi0gIDptZXRoOmBNZXNzYWdlLmdldF9tYWluX3R5cGVgLCA6bWV0aDpgTWVzc2FnZS5nZXRfc3VidHlwZWAuCi0KLSogRml4ZXMgaGF2ZSBiZWVuIGFkZGVkIGZvciA6cmZjOmAyMjMxYCBzdXBwb3J0IHdoaWNoIGNhbiBjaGFuZ2Ugc29tZSBvZiB0aGUKLSAgcmV0dXJuIHR5cGVzIGZvciA6ZnVuYzpgTWVzc2FnZS5nZXRfcGFyYW0gPGVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5nZXRfcGFyYW0+YAotICBhbmQgZnJpZW5kcy4gIFVuZGVyIHNvbWUKLSAgY2lyY3Vtc3RhbmNlcywgdmFsdWVzIHdoaWNoIHVzZWQgdG8gcmV0dXJuIGEgMy10dXBsZSBub3cgcmV0dXJuIHNpbXBsZSBzdHJpbmdzCi0gIChzcGVjaWZpY2FsbHksIGlmIGFsbCBleHRlbmRlZCBwYXJhbWV0ZXIgc2VnbWVudHMgd2VyZSB1bmVuY29kZWQsIHRoZXJlIGlzIG5vCi0gIGxhbmd1YWdlIGFuZCBjaGFyc2V0IGRlc2lnbmF0aW9uIGV4cGVjdGVkLCBzbyB0aGUgcmV0dXJuIHR5cGUgaXMgbm93IGEgc2ltcGxlCi0gIHN0cmluZykuICBBbHNvLCAlLWRlY29kaW5nIHVzZWQgdG8gYmUgZG9uZSBmb3IgYm90aCBlbmNvZGVkIGFuZCB1bmVuY29kZWQKLSAgc2VnbWVudHM7IHRoaXMgZGVjb2RpbmcgaXMgbm93IGRvbmUgb25seSBmb3IgZW5jb2RlZCBzZWdtZW50cy4KLQotSGVyZSBhcmUgdGhlIG1ham9yIGRpZmZlcmVuY2VzIGJldHdlZW4gOm1vZDpgZW1haWxgIHZlcnNpb24gMyBhbmQgdmVyc2lvbiAyOgotCi0qIFRoZSA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuRmVlZFBhcnNlcmAgY2xhc3Mgd2FzIGludHJvZHVjZWQsIGFuZCB0aGUKLSAgOmNsYXNzOmB+ZW1haWwucGFyc2VyLlBhcnNlcmAgY2xhc3Mgd2FzIGltcGxlbWVudGVkIGluIHRlcm1zIG9mIHRoZQotICA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuRmVlZFBhcnNlcmAuICBBbGwgcGFyc2luZyB0aGVyZWZvcmUgaXMKLSAgbm9uLXN0cmljdCwgYW5kIHBhcnNpbmcgd2lsbCBtYWtlIGEgYmVzdCBlZmZvcnQgbmV2ZXIgdG8gcmFpc2UgYW4gZXhjZXB0aW9uLgotICBQcm9ibGVtcyBmb3VuZCB3aGlsZSBwYXJzaW5nIG1lc3NhZ2VzIGFyZSBzdG9yZWQgaW4gdGhlIG1lc3NhZ2UncyAqZGVmZWN0KgotICBhdHRyaWJ1dGUuCi0KLSogQWxsIGFzcGVjdHMgb2YgdGhlIEFQSSB3aGljaCByYWlzZWQgOmV4YzpgRGVwcmVjYXRpb25XYXJuaW5nYFwgcyBpbiB2ZXJzaW9uIDIKLSAgaGF2ZSBiZWVuIHJlbW92ZWQuICBUaGVzZSBpbmNsdWRlIHRoZSAqX2VuY29kZXIqIGFyZ3VtZW50IHRvIHRoZQotICA6Y2xhc3M6YH5lbWFpbC5taW1lLnRleHQuTUlNRVRleHRgIGNvbnN0cnVjdG9yLCB0aGUKLSAgOm1ldGg6YE1lc3NhZ2UuYWRkX3BheWxvYWRgIG1ldGhvZCwgdGhlIDpmdW5jOmBVdGlscy5kdW1wX2FkZHJlc3NfcGFpcmAKLSAgZnVuY3Rpb24sIGFuZCB0aGUgZnVuY3Rpb25zIDpmdW5jOmBVdGlscy5kZWNvZGVgIGFuZCA6ZnVuYzpgVXRpbHMuZW5jb2RlYC4KLQotKiBOZXcgOmV4YzpgRGVwcmVjYXRpb25XYXJuaW5nYFwgcyBoYXZlIGJlZW4gYWRkZWQgdG86Ci0gIDptZXRoOmBHZW5lcmF0b3IuX19jYWxsX19gLCA6bWV0aDpgTWVzc2FnZS5nZXRfdHlwZWAsCi0gIDptZXRoOmBNZXNzYWdlLmdldF9tYWluX3R5cGVgLCA6bWV0aDpgTWVzc2FnZS5nZXRfc3VidHlwZWAsIGFuZCB0aGUgKnN0cmljdCoKLSAgYXJndW1lbnQgdG8gdGhlIDpjbGFzczpgfmVtYWlsLnBhcnNlci5QYXJzZXJgIGNsYXNzLiAgVGhlc2UgYXJlIGV4cGVjdGVkIHRvCi0gIGJlIHJlbW92ZWQgaW4gZnV0dXJlIHZlcnNpb25zLgotCi0qIFN1cHBvcnQgZm9yIFB5dGhvbnMgZWFybGllciB0aGFuIDIuMyBoYXMgYmVlbiByZW1vdmVkLgotCi1IZXJlIGFyZSB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiA6bW9kOmBlbWFpbGAgdmVyc2lvbiAyIGFuZCB2ZXJzaW9uIDE6Ci0KLSogVGhlIDptb2Q6YGVtYWlsLkhlYWRlcmAgYW5kIDptb2Q6YGVtYWlsLkNoYXJzZXRgIG1vZHVsZXMgaGF2ZSBiZWVuIGFkZGVkLgotCi0qIFRoZSBwaWNrbGUgZm9ybWF0IGZvciA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIGluc3RhbmNlcyBoYXMgY2hhbmdlZC4KLSAgU2luY2UgdGhpcyB3YXMgbmV2ZXIgKGFuZCBzdGlsbCBpc24ndCkgZm9ybWFsbHkgZGVmaW5lZCwgdGhpcyBpc24ndAotICBjb25zaWRlcmVkIGEgYmFja3dhcmQgaW5jb21wYXRpYmlsaXR5LiAgSG93ZXZlciBpZiB5b3VyIGFwcGxpY2F0aW9uIHBpY2tsZXMKLSAgYW5kIHVucGlja2xlcyA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIGluc3RhbmNlcywgYmUgYXdhcmUgdGhhdCBpbgotICA6bW9kOmBlbWFpbGAgdmVyc2lvbiAyLCA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIGluc3RhbmNlcyBub3cgaGF2ZQotICBwcml2YXRlIHZhcmlhYmxlcyAqX2NoYXJzZXQqIGFuZCAqX2RlZmF1bHRfdHlwZSouCi0KLSogU2V2ZXJhbCBtZXRob2RzIGluIHRoZSA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIGNsYXNzIGhhdmUgYmVlbgotICBkZXByZWNhdGVkLCBvciB0aGVpciBzaWduYXR1cmVzIGNoYW5nZWQuICBBbHNvLCBtYW55IG5ldyBtZXRob2RzIGhhdmUgYmVlbgotICBhZGRlZC4gIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgY2xhc3MKLSAgZm9yIGRldGFpbHMuICBUaGUgY2hhbmdlcyBzaG91bGQgYmUgY29tcGxldGVseSBiYWNrd2FyZCBjb21wYXRpYmxlLgotCi0qIFRoZSBvYmplY3Qgc3RydWN0dXJlIGhhcyBjaGFuZ2VkIGluIHRoZSBmYWNlIG9mIDptaW1ldHlwZTpgbWVzc2FnZS9yZmM4MjJgCi0gIGNvbnRlbnQgdHlwZXMuICBJbiA6bW9kOmBlbWFpbGAgdmVyc2lvbiAxLCBzdWNoIGEgdHlwZSB3b3VsZCBiZSByZXByZXNlbnRlZAotICBieSBhIHNjYWxhciBwYXlsb2FkLCBpLmUuIHRoZSBjb250YWluZXIgbWVzc2FnZSdzCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmlzX211bHRpcGFydGAgcmV0dXJuZWQgZmFsc2UsCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmdldF9wYXlsb2FkYCB3YXMgbm90IGEgbGlzdCBvYmplY3QsIGJ1dCBhCi0gIHNpbmdsZSA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIGluc3RhbmNlLgotCi0gIFRoaXMgc3RydWN0dXJlIHdhcyBpbmNvbnNpc3RlbnQgd2l0aCB0aGUgcmVzdCBvZiB0aGUgcGFja2FnZSwgc28gdGhlIG9iamVjdAotICByZXByZXNlbnRhdGlvbiBmb3IgOm1pbWV0eXBlOmBtZXNzYWdlL3JmYzgyMmAgY29udGVudCB0eXBlcyB3YXMgY2hhbmdlZC4gIEluCi0gIDptb2Q6YGVtYWlsYCB2ZXJzaW9uIDIsIHRoZSBjb250YWluZXIgKmRvZXMqIHJldHVybiBgYFRydWVgYCBmcm9tCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmlzX211bHRpcGFydGAsIGFuZAotICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5nZXRfcGF5bG9hZGAgcmV0dXJucyBhIGxpc3QgY29udGFpbmluZyBhIHNpbmdsZQotICA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIGl0ZW0uCi0KLSAgTm90ZSB0aGF0IHRoaXMgaXMgb25lIHBsYWNlIHRoYXQgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBjb3VsZCBub3QgYmUKLSAgY29tcGxldGVseSBtYWludGFpbmVkLiAgSG93ZXZlciwgaWYgeW91J3JlIGFscmVhZHkgdGVzdGluZyB0aGUgcmV0dXJuIHR5cGUgb2YKLSAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuZ2V0X3BheWxvYWRgLCB5b3Ugc2hvdWxkIGJlIGZpbmUuICBZb3UganVzdCBuZWVkCi0gIHRvIG1ha2Ugc3VyZSB5b3VyIGNvZGUgZG9lc24ndCBkbyBhIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLnNldF9wYXlsb2FkYAotICB3aXRoIGEgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBpbnN0YW5jZSBvbiBhIGNvbnRhaW5lciB3aXRoIGEgY29udGVudAotICB0eXBlIG9mIDptaW1ldHlwZTpgbWVzc2FnZS9yZmM4MjJgLgotCi0qIFRoZSA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuUGFyc2VyYCBjb25zdHJ1Y3RvcidzICpzdHJpY3QqIGFyZ3VtZW50IHdhcyBhZGRlZCwKLSAgYW5kIGl0cyA6bWV0aDpgfmVtYWlsLnBhcnNlci5QYXJzZXIucGFyc2VgIGFuZAotICA6bWV0aDpgfmVtYWlsLnBhcnNlci5QYXJzZXIucGFyc2VzdHJgIG1ldGhvZHMgZ3JldyBhICpoZWFkZXJzb25seSogYXJndW1lbnQuCi0gIFRoZSAqc3RyaWN0KiBmbGFnIHdhcyBhbHNvIGFkZGVkIHRvIGZ1bmN0aW9ucyA6ZnVuYzpgZW1haWwubWVzc2FnZV9mcm9tX2ZpbGVgCi0gIGFuZCA6ZnVuYzpgZW1haWwubWVzc2FnZV9mcm9tX3N0cmluZ2AuCi0KLSogOm1ldGg6YEdlbmVyYXRvci5fX2NhbGxfX2AgaXMgZGVwcmVjYXRlZDsgdXNlIDptZXRoOmBHZW5lcmF0b3IuZmxhdHRlbgotICA8ZW1haWwuZ2VuZXJhdG9yLkdlbmVyYXRvci5mbGF0dGVuPmAgaW5zdGVhZC4gIFRoZQotICA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuR2VuZXJhdG9yYCBjbGFzcyBoYXMgYWxzbyBncm93biB0aGUKLSAgOm1ldGg6YH5lbWFpbC5nZW5lcmF0b3IuR2VuZXJhdG9yLmNsb25lYCBtZXRob2QuCi0KLSogVGhlIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5EZWNvZGVkR2VuZXJhdG9yYCBjbGFzcyBpbiB0aGUKLSAgOm1vZDpgZW1haWwuZ2VuZXJhdG9yYCBtb2R1bGUgd2FzIGFkZGVkLgotCi0qIFRoZSBpbnRlcm1lZGlhdGUgYmFzZSBjbGFzc2VzCi0gIDpjbGFzczpgfmVtYWlsLm1pbWUubm9ubXVsdGlwYXJ0Lk1JTUVOb25NdWx0aXBhcnRgIGFuZAotICA6Y2xhc3M6YH5lbWFpbC5taW1lLm11bHRpcGFydC5NSU1FTXVsdGlwYXJ0YCBoYXZlIGJlZW4gYWRkZWQsIGFuZCBpbnRlcnBvc2VkCi0gIGluIHRoZSBjbGFzcyBoaWVyYXJjaHkgZm9yIG1vc3Qgb2YgdGhlIG90aGVyIE1JTUUtcmVsYXRlZCBkZXJpdmVkIGNsYXNzZXMuCi0KLSogVGhlICpfZW5jb2RlciogYXJndW1lbnQgdG8gdGhlIDpjbGFzczpgfmVtYWlsLm1pbWUudGV4dC5NSU1FVGV4dGAgY29uc3RydWN0b3IKLSAgaGFzIGJlZW4gZGVwcmVjYXRlZC4gIEVuY29kaW5nICBub3cgaGFwcGVucyBpbXBsaWNpdGx5IGJhc2VkIG9uIHRoZQotICAqX2NoYXJzZXQqIGFyZ3VtZW50LgotCi0qIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGluIHRoZSA6bW9kOmBlbWFpbC5VdGlsc2AgbW9kdWxlIGhhdmUgYmVlbiBkZXByZWNhdGVkOgotICA6ZnVuYzpgZHVtcF9hZGRyZXNzX3BhaXJzYCwgOmZ1bmM6YGRlY29kZWAsIGFuZCA6ZnVuYzpgZW5jb2RlYC4gIFRoZSBmb2xsb3dpbmcKLSAgZnVuY3Rpb25zIGhhdmUgYmVlbiBhZGRlZCB0byB0aGUgbW9kdWxlOiA6ZnVuYzpgbWFrZV9tc2dpZGAsCi0gIDpmdW5jOmBkZWNvZGVfcmZjMjIzMWAsIDpmdW5jOmBlbmNvZGVfcmZjMjIzMWAsIGFuZCA6ZnVuYzpgZGVjb2RlX3BhcmFtc2AuCi0KLSogVGhlIG5vbi1wdWJsaWMgZnVuY3Rpb24gOmZ1bmM6YGVtYWlsLkl0ZXJhdG9ycy5fc3RydWN0dXJlYCB3YXMgYWRkZWQuCi0KLQotRGlmZmVyZW5jZXMgZnJvbSA6bW9kOmBtaW1lbGliYAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1UaGUgOm1vZDpgZW1haWxgIHBhY2thZ2Ugd2FzIG9yaWdpbmFsbHkgcHJvdG90eXBlZCBhcyBhIHNlcGFyYXRlIGxpYnJhcnkgY2FsbGVkCi1gbWltZWxpYiA8aHR0cDovL21pbWVsaWIuc291cmNlZm9yZ2UubmV0Lz5gXy4gQ2hhbmdlcyBoYXZlIGJlZW4gbWFkZSBzbyB0aGF0IG1ldGhvZCBuYW1lcwotYXJlIG1vcmUgY29uc2lzdGVudCwgYW5kIHNvbWUgbWV0aG9kcyBvciBtb2R1bGVzIGhhdmUgZWl0aGVyIGJlZW4gYWRkZWQgb3IKLXJlbW92ZWQuICBUaGUgc2VtYW50aWNzIG9mIHNvbWUgb2YgdGhlIG1ldGhvZHMgaGF2ZSBhbHNvIGNoYW5nZWQuICBGb3IgdGhlIG1vc3QKLXBhcnQsIGFueSBmdW5jdGlvbmFsaXR5IGF2YWlsYWJsZSBpbiA6bW9kOmBtaW1lbGliYCBpcyBzdGlsbCBhdmFpbGFibGUgaW4gdGhlCi06bW9kOmBlbWFpbGAgcGFja2FnZSwgYWxiZWl0IG9mdGVuIGluIGEgZGlmZmVyZW50IHdheS4gIEJhY2t3YXJkIGNvbXBhdGliaWxpdHkKLWJldHdlZW4gdGhlIDptb2Q6YG1pbWVsaWJgIHBhY2thZ2UgYW5kIHRoZSA6bW9kOmBlbWFpbGAgcGFja2FnZSB3YXMgbm90IGEKLXByaW9yaXR5LgotCi1IZXJlIGlzIGEgYnJpZWYgZGVzY3JpcHRpb24gb2YgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIDptb2Q6YG1pbWVsaWJgIGFuZAotdGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlcywgYWxvbmcgd2l0aCBoaW50cyBvbiBob3cgdG8gcG9ydCB5b3VyIGFwcGxpY2F0aW9ucy4KLQotT2YgY291cnNlLCB0aGUgbW9zdCB2aXNpYmxlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgdHdvIHBhY2thZ2VzIGlzIHRoYXQgdGhlCi1wYWNrYWdlIG5hbWUgaGFzIGJlZW4gY2hhbmdlZCB0byA6bW9kOmBlbWFpbGAuICBJbiBhZGRpdGlvbiwgdGhlIHRvcC1sZXZlbAotcGFja2FnZSBoYXMgdGhlIGZvbGxvd2luZyBkaWZmZXJlbmNlczoKLQotKiA6ZnVuYzpgbWVzc2FnZUZyb21TdHJpbmdgIGhhcyBiZWVuIHJlbmFtZWQgdG8gOmZ1bmM6YG1lc3NhZ2VfZnJvbV9zdHJpbmdgLgotCi0qIDpmdW5jOmBtZXNzYWdlRnJvbUZpbGVgIGhhcyBiZWVuIHJlbmFtZWQgdG8gOmZ1bmM6YG1lc3NhZ2VfZnJvbV9maWxlYC4KLQotVGhlIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgY2xhc3MgaGFzIHRoZSBmb2xsb3dpbmcgZGlmZmVyZW5jZXM6Ci0KLSogVGhlIG1ldGhvZCA6bWV0aDpgYXNTdHJpbmdgIHdhcyByZW5hbWVkIHRvCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmFzX3N0cmluZ2AuCi0KLSogVGhlIG1ldGhvZCA6bWV0aDpgaXNtdWx0aXBhcnRgIHdhcyByZW5hbWVkIHRvCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmlzX211bHRpcGFydGAuCi0KLSogVGhlIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmdldF9wYXlsb2FkYCBtZXRob2QgaGFzIGdyb3duIGEgKmRlY29kZSoKLSAgb3B0aW9uYWwgYXJndW1lbnQuCi0KLSogVGhlIG1ldGhvZCA6bWV0aDpgZ2V0YWxsYCB3YXMgcmVuYW1lZCB0bwotICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5nZXRfYWxsYC4KLQotKiBUaGUgbWV0aG9kIDptZXRoOmBhZGRoZWFkZXJgIHdhcyByZW5hbWVkIHRvCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmFkZF9oZWFkZXJgLgotCi0qIFRoZSBtZXRob2QgOm1ldGg6YGdldHR5cGVgIHdhcyByZW5hbWVkIHRvIDptZXRoOmBnZXRfdHlwZWAuCi0KLSogVGhlIG1ldGhvZCA6bWV0aDpgZ2V0bWFpbnR5cGVgIHdhcyByZW5hbWVkIHRvIDptZXRoOmBnZXRfbWFpbl90eXBlYC4KLQotKiBUaGUgbWV0aG9kIDptZXRoOmBnZXRzdWJ0eXBlYCB3YXMgcmVuYW1lZCB0byA6bWV0aDpgZ2V0X3N1YnR5cGVgLgotCi0qIFRoZSBtZXRob2QgOm1ldGg6YGdldHBhcmFtc2Agd2FzIHJlbmFtZWQgdG8KLSAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuZ2V0X3BhcmFtc2AuIEFsc28sIHdoZXJlYXMgOm1ldGg6YGdldHBhcmFtc2AKLSAgcmV0dXJuZWQgYSBsaXN0IG9mIHN0cmluZ3MsIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmdldF9wYXJhbXNgIHJldHVybnMKLSAgYSBsaXN0IG9mIDItdHVwbGVzLCBlZmZlY3RpdmVseSB0aGUga2V5L3ZhbHVlIHBhaXJzIG9mIHRoZSBwYXJhbWV0ZXJzLCBzcGxpdAotICBvbiB0aGUgYGAnPSdgYCBzaWduLgotCi0qIFRoZSBtZXRob2QgOm1ldGg6YGdldHBhcmFtYCB3YXMgcmVuYW1lZCB0bwotICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5nZXRfcGFyYW1gLgotCi0qIFRoZSBtZXRob2QgOm1ldGg6YGdldGNoYXJzZXRzYCB3YXMgcmVuYW1lZCB0bwotICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5nZXRfY2hhcnNldHNgLgotCi0qIFRoZSBtZXRob2QgOm1ldGg6YGdldGZpbGVuYW1lYCB3YXMgcmVuYW1lZCB0bwotICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5nZXRfZmlsZW5hbWVgLgotCi0qIFRoZSBtZXRob2QgOm1ldGg6YGdldGJvdW5kYXJ5YCB3YXMgcmVuYW1lZCB0bwotICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5nZXRfYm91bmRhcnlgLgotCi0qIFRoZSBtZXRob2QgOm1ldGg6YHNldGJvdW5kYXJ5YCB3YXMgcmVuYW1lZCB0bwotICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5zZXRfYm91bmRhcnlgLgotCi0qIFRoZSBtZXRob2QgOm1ldGg6YGdldGRlY29kZWRwYXlsb2FkYCB3YXMgcmVtb3ZlZC4gIFRvIGdldCBzaW1pbGFyCi0gIGZ1bmN0aW9uYWxpdHksIHBhc3MgdGhlIHZhbHVlIDEgdG8gdGhlICpkZWNvZGUqIGZsYWcgb2YgdGhlCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmdldF9wYXlsb2FkYCBtZXRob2QuCi0KLSogVGhlIG1ldGhvZCA6bWV0aDpgZ2V0cGF5bG9hZGFzdGV4dGAgd2FzIHJlbW92ZWQuICBTaW1pbGFyIGZ1bmN0aW9uYWxpdHkgaXMKLSAgc3VwcG9ydGVkIGJ5IHRoZSA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuRGVjb2RlZEdlbmVyYXRvcmAgY2xhc3MgaW4gdGhlCi0gIDptb2Q6YGVtYWlsLmdlbmVyYXRvcmAgbW9kdWxlLgotCi0qIFRoZSBtZXRob2QgOm1ldGg6YGdldGJvZHlhc3RleHRgIHdhcyByZW1vdmVkLiAgWW91IGNhbiBnZXQgc2ltaWxhcgotICBmdW5jdGlvbmFsaXR5IGJ5IGNyZWF0aW5nIGFuIGl0ZXJhdG9yIHdpdGgKLSAgOmZ1bmM6YH5lbWFpbC5pdGVyYXRvcnMudHlwZWRfc3VicGFydF9pdGVyYXRvcmAgaW4gdGhlIDptb2Q6YGVtYWlsLml0ZXJhdG9yc2AKLSAgbW9kdWxlLgotCi1UaGUgOmNsYXNzOmB+ZW1haWwucGFyc2VyLlBhcnNlcmAgY2xhc3MgaGFzIG5vIGRpZmZlcmVuY2VzIGluIGl0cyBwdWJsaWMKLWludGVyZmFjZS4gSXQgZG9lcyBoYXZlIHNvbWUgYWRkaXRpb25hbCBzbWFydHMgdG8gcmVjb2duaXplCi06bWltZXR5cGU6YG1lc3NhZ2UvZGVsaXZlcnktc3RhdHVzYCB0eXBlIG1lc3NhZ2VzLCB3aGljaCBpdCByZXByZXNlbnRzIGFzIGEKLTpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgaW5zdGFuY2UgY29udGFpbmluZyBzZXBhcmF0ZQotOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBzdWJwYXJ0cyBmb3IgZWFjaCBoZWFkZXIgYmxvY2sgaW4gdGhlIGRlbGl2ZXJ5Ci1zdGF0dXMgbm90aWZpY2F0aW9uIFsjXV8uCi0KLVRoZSA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuR2VuZXJhdG9yYCBjbGFzcyBoYXMgbm8gZGlmZmVyZW5jZXMgaW4gaXRzIHB1YmxpYwotaW50ZXJmYWNlLiAgVGhlcmUgaXMgYSBuZXcgY2xhc3MgaW4gdGhlIDptb2Q6YGVtYWlsLmdlbmVyYXRvcmAgbW9kdWxlIHRob3VnaCwKLWNhbGxlZCA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuRGVjb2RlZEdlbmVyYXRvcmAgd2hpY2ggcHJvdmlkZXMgbW9zdCBvZiB0aGUKLWZ1bmN0aW9uYWxpdHkgcHJldmlvdXNseSBhdmFpbGFibGUgaW4gdGhlIDptZXRoOmBNZXNzYWdlLmdldHBheWxvYWRhc3RleHRgCi1tZXRob2QuCi0KLVRoZSBmb2xsb3dpbmcgbW9kdWxlcyBhbmQgY2xhc3NlcyBoYXZlIGJlZW4gY2hhbmdlZDoKLQotKiBUaGUgOmNsYXNzOmB+ZW1haWwubWltZS5iYXNlLk1JTUVCYXNlYCBjbGFzcyBjb25zdHJ1Y3RvciBhcmd1bWVudHMgKl9tYWpvcioKLSAgYW5kICpfbWlub3IqIGhhdmUgY2hhbmdlZCB0byAqX21haW50eXBlKiBhbmQgKl9zdWJ0eXBlKiByZXNwZWN0aXZlbHkuCi0KLSogVGhlIGBgSW1hZ2VgYCBjbGFzcy9tb2R1bGUgaGFzIGJlZW4gcmVuYW1lZCB0byBgYE1JTUVJbWFnZWBgLiAgVGhlICpfbWlub3IqCi0gIGFyZ3VtZW50IGhhcyBiZWVuIHJlbmFtZWQgdG8gKl9zdWJ0eXBlKi4KLQotKiBUaGUgYGBUZXh0YGAgY2xhc3MvbW9kdWxlIGhhcyBiZWVuIHJlbmFtZWQgdG8gYGBNSU1FVGV4dGBgLiAgVGhlICpfbWlub3IqCi0gIGFyZ3VtZW50IGhhcyBiZWVuIHJlbmFtZWQgdG8gKl9zdWJ0eXBlKi4KLQotKiBUaGUgYGBNZXNzYWdlUkZDODIyYGAgY2xhc3MvbW9kdWxlIGhhcyBiZWVuIHJlbmFtZWQgdG8gYGBNSU1FTWVzc2FnZWBgLiAgTm90ZQotICB0aGF0IGFuIGVhcmxpZXIgdmVyc2lvbiBvZiA6bW9kOmBtaW1lbGliYCBjYWxsZWQgdGhpcyBjbGFzcy9tb2R1bGUgYGBSRkM4MjJgYCwKLSAgYnV0IHRoYXQgY2xhc2hlZCB3aXRoIHRoZSBQeXRob24gc3RhbmRhcmQgbGlicmFyeSBtb2R1bGUgOm1vZDpgcmZjODIyYCBvbiBzb21lCi0gIGNhc2UtaW5zZW5zaXRpdmUgZmlsZSBzeXN0ZW1zLgotCi0gIEFsc28sIHRoZSA6Y2xhc3M6YH5lbWFpbC5taW1lLm1lc3NhZ2UuTUlNRU1lc3NhZ2VgIGNsYXNzIG5vdyByZXByZXNlbnRzIGFueQotICBraW5kIG9mIE1JTUUgbWVzc2FnZQotICB3aXRoIG1haW4gdHlwZSA6bWltZXR5cGU6YG1lc3NhZ2VgLiAgSXQgdGFrZXMgYW4gb3B0aW9uYWwgYXJndW1lbnQgKl9zdWJ0eXBlKgotICB3aGljaCBpcyB1c2VkIHRvIHNldCB0aGUgTUlNRSBzdWJ0eXBlLiAgKl9zdWJ0eXBlKiBkZWZhdWx0cyB0bwotICA6bWltZXR5cGU6YHJmYzgyMmAuCi0KLTptb2Q6YG1pbWVsaWJgIHByb3ZpZGVkIHNvbWUgdXRpbGl0eSBmdW5jdGlvbnMgaW4gaXRzIDptb2Q6YGFkZHJlc3NgIGFuZAotOm1vZDpgZGF0ZWAgbW9kdWxlcy4gIEFsbCBvZiB0aGVzZSBmdW5jdGlvbnMgaGF2ZSBiZWVuIG1vdmVkIHRvIHRoZQotOm1vZDpgZW1haWwudXRpbHNgIG1vZHVsZS4KLQotVGhlIGBgTXNnUmVhZGVyYGAgY2xhc3MvbW9kdWxlIGhhcyBiZWVuIHJlbW92ZWQuICBJdHMgZnVuY3Rpb25hbGl0eSBpcyBtb3N0Ci1jbG9zZWx5IHN1cHBvcnRlZCBpbiB0aGUgOmZ1bmM6YH5lbWFpbC5pdGVyYXRvcnMuYm9keV9saW5lX2l0ZXJhdG9yYCBmdW5jdGlvbgotaW4gdGhlIDptb2Q6YGVtYWlsLml0ZXJhdG9yc2AgbW9kdWxlLgotCi0uLiBydWJyaWM6OiBGb290bm90ZXMKLQotLi4gWyNdIERlbGl2ZXJ5IFN0YXR1cyBOb3RpZmljYXRpb25zIChEU04pIGFyZSBkZWZpbmVkIGluIDpyZmM6YDE4OTRgLgorICAgTW9kdWxlIDptb2Q6YHNtdHBkYAorICAgICAgU01UUCBzZXJ2ZXIgZnJhbWV3b3JrIChwcmltYXJpbHkgdXNlZnVsIGZvciB0ZXN0aW5nKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwudXRpbC5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC51dGlsLnJzdAppbmRleCA1Y2ZmNzQ2Li42M2ZhZTJhIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9lbWFpbC51dGlsLnJzdAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC51dGlsLnJzdApAQCAtOCw3ICs4LDQzIEBACiAKIC0tLS0tLS0tLS0tLS0tCiAKLVRoZXJlIGFyZSBzZXZlcmFsIHVzZWZ1bCB1dGlsaXRpZXMgcHJvdmlkZWQgaW4gdGhlIDptb2Q6YGVtYWlsLnV0aWxzYCBtb2R1bGU6CitUaGVyZSBhcmUgYSBjb3VwbGUgb2YgdXNlZnVsIHV0aWxpdGllcyBwcm92aWRlZCBpbiB0aGUgOm1vZDpgZW1haWwudXRpbHNgCittb2R1bGU6CisKKy4uIGZ1bmN0aW9uOjogbG9jYWx0aW1lKGR0PU5vbmUpCisKKyAgICBSZXR1cm4gbG9jYWwgdGltZSBhcyBhbiBhd2FyZSBkYXRldGltZSBvYmplY3QuICBJZiBjYWxsZWQgd2l0aG91dAorICAgIGFyZ3VtZW50cywgcmV0dXJuIGN1cnJlbnQgdGltZS4gIE90aGVyd2lzZSAqZHQqIGFyZ3VtZW50IHNob3VsZCBiZSBhCisgICAgOmNsYXNzOmB+ZGF0ZXRpbWUuZGF0ZXRpbWVgIGluc3RhbmNlLCBhbmQgaXQgaXMgY29udmVydGVkIHRvIHRoZSBsb2NhbCB0aW1lCisgICAgem9uZSBhY2NvcmRpbmcgdG8gdGhlIHN5c3RlbSB0aW1lIHpvbmUgZGF0YWJhc2UuICBJZiAqZHQqIGlzIG5haXZlICh0aGF0CisgICAgaXMsIGBgZHQudHppbmZvYGAgaXMgYGBOb25lYGApLCBpdCBpcyBhc3N1bWVkIHRvIGJlIGluIGxvY2FsIHRpbWUuICBJbiB0aGlzCisgICAgY2FzZSwgYSBwb3NpdGl2ZSBvciB6ZXJvIHZhbHVlIGZvciAqaXNkc3QqIGNhdXNlcyBgYGxvY2FsdGltZWBgIHRvIHByZXN1bWUKKyAgICBpbml0aWFsbHkgdGhhdCBzdW1tZXIgdGltZSAoZm9yIGV4YW1wbGUsIERheWxpZ2h0IFNhdmluZyBUaW1lKSBpcyBvciBpcyBub3QKKyAgICAocmVzcGVjdGl2ZWx5KSBpbiBlZmZlY3QgZm9yIHRoZSBzcGVjaWZpZWQgdGltZS4gIEEgbmVnYXRpdmUgdmFsdWUgZm9yCisgICAgKmlzZHN0KiBjYXVzZXMgdGhlIGBgbG9jYWx0aW1lYGAgdG8gYXR0ZW1wdCB0byBkaXZpbmUgd2hldGhlciBzdW1tZXIgdGltZQorICAgIGlzIGluIGVmZmVjdCBmb3IgdGhlIHNwZWNpZmllZCB0aW1lLgorCisgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZnVuY3Rpb246OiBtYWtlX21zZ2lkKGlkc3RyaW5nPU5vbmUsIGRvbWFpbj1Ob25lKQorCisgICBSZXR1cm5zIGEgc3RyaW5nIHN1aXRhYmxlIGZvciBhbiA6cmZjOmAyODIyYFwgLWNvbXBsaWFudAorICAgOm1haWxoZWFkZXI6YE1lc3NhZ2UtSURgIGhlYWRlci4gIE9wdGlvbmFsICppZHN0cmluZyogaWYgZ2l2ZW4sIGlzIGEgc3RyaW5nCisgICB1c2VkIHRvIHN0cmVuZ3RoZW4gdGhlIHVuaXF1ZW5lc3Mgb2YgdGhlIG1lc3NhZ2UgaWQuICBPcHRpb25hbCAqZG9tYWluKiBpZgorICAgZ2l2ZW4gcHJvdmlkZXMgdGhlIHBvcnRpb24gb2YgdGhlIG1zZ2lkIGFmdGVyIHRoZSAnQCcuICBUaGUgZGVmYXVsdCBpcyB0aGUKKyAgIGxvY2FsIGhvc3RuYW1lLiAgSXQgaXMgbm90IG5vcm1hbGx5IG5lY2Vzc2FyeSB0byBvdmVycmlkZSB0aGlzIGRlZmF1bHQsIGJ1dAorICAgbWF5IGJlIHVzZWZ1bCBjZXJ0YWluIGNhc2VzLCBzdWNoIGFzIGEgY29uc3RydWN0aW5nIGRpc3RyaWJ1dGVkIHN5c3RlbSB0aGF0CisgICB1c2VzIGEgY29uc2lzdGVudCBkb21haW4gbmFtZSBhY3Jvc3MgbXVsdGlwbGUgaG9zdHMuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCisgICAgICBBZGRlZCB0aGUgKmRvbWFpbioga2V5d29yZC4KKworCitUaGUgcmVtYWluaW5nIGZ1bmN0aW9ucyBhcmUgcGFydCBvZiB0aGUgbGVnYWN5IChgYENvbXBhdDMyYGApIGVtYWlsIEFQSS4gIFRoZXJlCitpcyBubyBuZWVkIHRvIGRpcmVjdGx5IHVzZSB0aGVzZSB3aXRoIHRoZSBuZXcgQVBJLCBzaW5jZSB0aGUgcGFyc2luZyBhbmQKK2Zvcm1hdHRpbmcgdGhleSBwcm92aWRlIGlzIGRvbmUgYXV0b21hdGljYWxseSBieSB0aGUgaGVhZGVyIHBhcnNpbmcgbWFjaGluZXJ5CitvZiB0aGUgbmV3IEFQSS4KIAogCiAuLiBmdW5jdGlvbjo6IHF1b3RlKHN0cikKQEAgLTE0MSwzNiArMTc3LDYgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAKLS4uIGZ1bmN0aW9uOjogbG9jYWx0aW1lKGR0PU5vbmUpCi0KLSAgICBSZXR1cm4gbG9jYWwgdGltZSBhcyBhbiBhd2FyZSBkYXRldGltZSBvYmplY3QuICBJZiBjYWxsZWQgd2l0aG91dAotICAgIGFyZ3VtZW50cywgcmV0dXJuIGN1cnJlbnQgdGltZS4gIE90aGVyd2lzZSAqZHQqIGFyZ3VtZW50IHNob3VsZCBiZSBhCi0gICAgOmNsYXNzOmB+ZGF0ZXRpbWUuZGF0ZXRpbWVgIGluc3RhbmNlLCBhbmQgaXQgaXMgY29udmVydGVkIHRvIHRoZSBsb2NhbCB0aW1lCi0gICAgem9uZSBhY2NvcmRpbmcgdG8gdGhlIHN5c3RlbSB0aW1lIHpvbmUgZGF0YWJhc2UuICBJZiAqZHQqIGlzIG5haXZlICh0aGF0Ci0gICAgaXMsIGBgZHQudHppbmZvYGAgaXMgYGBOb25lYGApLCBpdCBpcyBhc3N1bWVkIHRvIGJlIGluIGxvY2FsIHRpbWUuICBJbiB0aGlzCi0gICAgY2FzZSwgYSBwb3NpdGl2ZSBvciB6ZXJvIHZhbHVlIGZvciAqaXNkc3QqIGNhdXNlcyBgYGxvY2FsdGltZWBgIHRvIHByZXN1bWUKLSAgICBpbml0aWFsbHkgdGhhdCBzdW1tZXIgdGltZSAoZm9yIGV4YW1wbGUsIERheWxpZ2h0IFNhdmluZyBUaW1lKSBpcyBvciBpcyBub3QKLSAgICAocmVzcGVjdGl2ZWx5KSBpbiBlZmZlY3QgZm9yIHRoZSBzcGVjaWZpZWQgdGltZS4gIEEgbmVnYXRpdmUgdmFsdWUgZm9yCi0gICAgKmlzZHN0KiBjYXVzZXMgdGhlIGBgbG9jYWx0aW1lYGAgdG8gYXR0ZW1wdCB0byBkaXZpbmUgd2hldGhlciBzdW1tZXIgdGltZQotICAgIGlzIGluIGVmZmVjdCBmb3IgdGhlIHNwZWNpZmllZCB0aW1lLgotCi0gICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCi0KLQotLi4gZnVuY3Rpb246OiBtYWtlX21zZ2lkKGlkc3RyaW5nPU5vbmUsIGRvbWFpbj1Ob25lKQotCi0gICBSZXR1cm5zIGEgc3RyaW5nIHN1aXRhYmxlIGZvciBhbiA6cmZjOmAyODIyYFwgLWNvbXBsaWFudAotICAgOm1haWxoZWFkZXI6YE1lc3NhZ2UtSURgIGhlYWRlci4gIE9wdGlvbmFsICppZHN0cmluZyogaWYgZ2l2ZW4sIGlzIGEgc3RyaW5nCi0gICB1c2VkIHRvIHN0cmVuZ3RoZW4gdGhlIHVuaXF1ZW5lc3Mgb2YgdGhlIG1lc3NhZ2UgaWQuICBPcHRpb25hbCAqZG9tYWluKiBpZgotICAgZ2l2ZW4gcHJvdmlkZXMgdGhlIHBvcnRpb24gb2YgdGhlIG1zZ2lkIGFmdGVyIHRoZSAnQCcuICBUaGUgZGVmYXVsdCBpcyB0aGUKLSAgIGxvY2FsIGhvc3RuYW1lLiAgSXQgaXMgbm90IG5vcm1hbGx5IG5lY2Vzc2FyeSB0byBvdmVycmlkZSB0aGlzIGRlZmF1bHQsIGJ1dAotICAgbWF5IGJlIHVzZWZ1bCBjZXJ0YWluIGNhc2VzLCBzdWNoIGFzIGEgY29uc3RydWN0aW5nIGRpc3RyaWJ1dGVkIHN5c3RlbSB0aGF0Ci0gICB1c2VzIGEgY29uc2lzdGVudCBkb21haW4gbmFtZSBhY3Jvc3MgbXVsdGlwbGUgaG9zdHMuCi0KLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCi0gICAgICBBZGRlZCB0aGUgKmRvbWFpbioga2V5d29yZC4KLQotCiAuLiBmdW5jdGlvbjo6IGRlY29kZV9yZmMyMjMxKHMpCiAKICAgIERlY29kZSB0aGUgc3RyaW5nICpzKiBhY2NvcmRpbmcgdG8gOnJmYzpgMjIzMWAuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbnVtLnJzdCBiL0RvYy9saWJyYXJ5L2VudW0ucnN0CmluZGV4IGEzZDVhZmMuLmRkY2MyODYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VudW0ucnN0CisrKyBiL0RvYy9saWJyYXJ5L2VudW0ucnN0CkBAIC0yMyw5ICsyMywxMCBAQAogTW9kdWxlIENvbnRlbnRzCiAtLS0tLS0tLS0tLS0tLS0KIAotVGhpcyBtb2R1bGUgZGVmaW5lcyB0d28gZW51bWVyYXRpb24gY2xhc3NlcyB0aGF0IGNhbiBiZSB1c2VkIHRvIGRlZmluZSB1bmlxdWUKLXNldHMgb2YgbmFtZXMgYW5kIHZhbHVlczogOmNsYXNzOmBFbnVtYCBhbmQgOmNsYXNzOmBJbnRFbnVtYC4gIEl0IGFsc28gZGVmaW5lcwotb25lIGRlY29yYXRvciwgOmZ1bmM6YHVuaXF1ZWAuCitUaGlzIG1vZHVsZSBkZWZpbmVzIGZvdXIgZW51bWVyYXRpb24gY2xhc3NlcyB0aGF0IGNhbiBiZSB1c2VkIHRvIGRlZmluZSB1bmlxdWUKK3NldHMgb2YgbmFtZXMgYW5kIHZhbHVlczogOmNsYXNzOmBFbnVtYCwgOmNsYXNzOmBJbnRFbnVtYCwgYW5kCis6Y2xhc3M6YEludEZsYWdzYC4gIEl0IGFsc28gZGVmaW5lcyBvbmUgZGVjb3JhdG9yLCA6ZnVuYzpgdW5pcXVlYCwgYW5kIG9uZQoraGVscGVyLCA6Y2xhc3M6YGF1dG9gLgogCiAuLiBjbGFzczo6IEVudW0KIApAQCAtMzcsMTAgKzM4LDI3IEBACiAgICAgQmFzZSBjbGFzcyBmb3IgY3JlYXRpbmcgZW51bWVyYXRlZCBjb25zdGFudHMgdGhhdCBhcmUgYWxzbwogICAgIHN1YmNsYXNzZXMgb2YgOmNsYXNzOmBpbnRgLgogCisuLiBjbGFzczo6IEludEZsYWcKKworICAgIEJhc2UgY2xhc3MgZm9yIGNyZWF0aW5nIGVudW1lcmF0ZWQgY29uc3RhbnRzIHRoYXQgY2FuIGJlIGNvbWJpbmVkIHVzaW5nCisgICAgdGhlIGJpdHdpc2Ugb3BlcmF0b3JzIHdpdGhvdXQgbG9zaW5nIHRoZWlyIDpjbGFzczpgSW50RmxhZ2AgbWVtYmVyc2hpcC4KKyAgICA6Y2xhc3M6YEludEZsYWdgIG1lbWJlcnMgYXJlIGFsc28gc3ViY2xhc3NlcyBvZiA6Y2xhc3M6YGludGAuCisKKy4uIGNsYXNzOjogRmxhZworCisgICAgQmFzZSBjbGFzcyBmb3IgY3JlYXRpbmcgZW51bWVyYXRlZCBjb25zdGFudHMgdGhhdCBjYW4gYmUgY29tYmluZWQgdXNpbmcKKyAgICB0aGUgYml0d2lzZSBvcGVyYXRpb25zIHdpdGhvdXQgbG9zaW5nIHRoZWlyIDpjbGFzczpgRmxhZ2AgbWVtYmVyc2hpcC4KKwogLi4gZnVuY3Rpb246OiB1bmlxdWUKIAogICAgIEVudW0gY2xhc3MgZGVjb3JhdG9yIHRoYXQgZW5zdXJlcyBvbmx5IG9uZSBuYW1lIGlzIGJvdW5kIHRvIGFueSBvbmUgdmFsdWUuCiAKKy4uIGNsYXNzOjogYXV0bworCisgICAgSW5zdGFuY2VzIGFyZSByZXBsYWNlZCB3aXRoIGFuIGFwcHJvcHJpYXRlIHZhbHVlIGZvciBFbnVtIG1lbWJlcnMuCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuNiAgYGBGbGFnYGAsIGBgSW50RmxhZ2BgLCBgYGF1dG9gYAorCiAKIENyZWF0aW5nIGFuIEVudW0KIC0tLS0tLS0tLS0tLS0tLS0KQEAgLTUyLDE4ICs3MCwyNSBAQAogCiAgICAgPj4+IGZyb20gZW51bSBpbXBvcnQgRW51bQogICAgID4+PiBjbGFzcyBDb2xvcihFbnVtKToKLSAgICAuLi4gICAgIHJlZCA9IDEKLSAgICAuLi4gICAgIGdyZWVuID0gMgotICAgIC4uLiAgICAgYmx1ZSA9IDMKKyAgICAuLi4gICAgIFJFRCA9IDEKKyAgICAuLi4gICAgIEdSRUVOID0gMgorICAgIC4uLiAgICAgQkxVRSA9IDMKICAgICAuLi4KIAorLi4gbm90ZTo6IEVudW0gbWVtYmVyIHZhbHVlcworCisgICAgTWVtYmVyIHZhbHVlcyBjYW4gYmUgYW55dGhpbmc6IDpjbGFzczpgaW50YCwgOmNsYXNzOmBzdHJgLCBldGMuLiAgSWYKKyAgICB0aGUgZXhhY3QgdmFsdWUgaXMgdW5pbXBvcnRhbnQgeW91IG1heSB1c2UgOmNsYXNzOmBhdXRvYCBpbnN0YW5jZXMgYW5kIGFuCisgICAgYXBwcm9wcmlhdGUgdmFsdWUgd2lsbCBiZSBjaG9zZW4gZm9yIHlvdS4gIENhcmUgbXVzdCBiZSB0YWtlbiBpZiB5b3UgbWl4CisgICAgOmNsYXNzOmBhdXRvYCB3aXRoIG90aGVyIHZhbHVlcy4KKwogLi4gbm90ZTo6IE5vbWVuY2xhdHVyZQogCiAgIC0gVGhlIGNsYXNzIDpjbGFzczpgQ29sb3JgIGlzIGFuICplbnVtZXJhdGlvbiogKG9yICplbnVtKikKLSAgLSBUaGUgYXR0cmlidXRlcyA6YXR0cjpgQ29sb3IucmVkYCwgOmF0dHI6YENvbG9yLmdyZWVuYCwgZXRjLiwgYXJlCi0gICAgKmVudW1lcmF0aW9uIG1lbWJlcnMqIChvciAqZW51bSBtZW1iZXJzKikuCisgIC0gVGhlIGF0dHJpYnV0ZXMgOmF0dHI6YENvbG9yLlJFRGAsIDphdHRyOmBDb2xvci5HUkVFTmAsIGV0Yy4sIGFyZQorICAgICplbnVtZXJhdGlvbiBtZW1iZXJzKiAob3IgKmVudW0gbWVtYmVycyopIGFuZCBhcmUgZnVuY3Rpb25hbGx5IGNvbnN0YW50cy4KICAgLSBUaGUgZW51bSBtZW1iZXJzIGhhdmUgKm5hbWVzKiBhbmQgKnZhbHVlcyogKHRoZSBuYW1lIG9mCi0gICAgOmF0dHI6YENvbG9yLnJlZGAgaXMgYGByZWRgYCwgdGhlIHZhbHVlIG9mIDphdHRyOmBDb2xvci5ibHVlYCBpcworICAgIDphdHRyOmBDb2xvci5SRURgIGlzIGBgUkVEYGAsIHRoZSB2YWx1ZSBvZiA6YXR0cjpgQ29sb3IuQkxVRWAgaXMKICAgICBgYDNgYCwgZXRjLikKIAogLi4gbm90ZTo6CkBAIC03NCw0OSArOTksNDkgQEAKIAogRW51bWVyYXRpb24gbWVtYmVycyBoYXZlIGh1bWFuIHJlYWRhYmxlIHN0cmluZyByZXByZXNlbnRhdGlvbnM6OgogCi0gICAgPj4+IHByaW50KENvbG9yLnJlZCkKLSAgICBDb2xvci5yZWQKKyAgICA+Pj4gcHJpbnQoQ29sb3IuUkVEKQorICAgIENvbG9yLlJFRAogCiAuLi53aGlsZSB0aGVpciBgYHJlcHJgYCBoYXMgbW9yZSBpbmZvcm1hdGlvbjo6CiAKLSAgICA+Pj4gcHJpbnQocmVwcihDb2xvci5yZWQpKQotICAgIDxDb2xvci5yZWQ6IDE+CisgICAgPj4+IHByaW50KHJlcHIoQ29sb3IuUkVEKSkKKyAgICA8Q29sb3IuUkVEOiAxPgogCiBUaGUgKnR5cGUqIG9mIGFuIGVudW1lcmF0aW9uIG1lbWJlciBpcyB0aGUgZW51bWVyYXRpb24gaXQgYmVsb25ncyB0bzo6CiAKLSAgICA+Pj4gdHlwZShDb2xvci5yZWQpCisgICAgPj4+IHR5cGUoQ29sb3IuUkVEKQogICAgIDxlbnVtICdDb2xvcic+Ci0gICAgPj4+IGlzaW5zdGFuY2UoQ29sb3IuZ3JlZW4sIENvbG9yKQorICAgID4+PiBpc2luc3RhbmNlKENvbG9yLkdSRUVOLCBDb2xvcikKICAgICBUcnVlCiAgICAgPj4+CiAKIEVudW0gbWVtYmVycyBhbHNvIGhhdmUgYSBwcm9wZXJ0eSB0aGF0IGNvbnRhaW5zIGp1c3QgdGhlaXIgaXRlbSBuYW1lOjoKIAotICAgID4+PiBwcmludChDb2xvci5yZWQubmFtZSkKLSAgICByZWQKKyAgICA+Pj4gcHJpbnQoQ29sb3IuUkVELm5hbWUpCisgICAgUkVECiAKIEVudW1lcmF0aW9ucyBzdXBwb3J0IGl0ZXJhdGlvbiwgaW4gZGVmaW5pdGlvbiBvcmRlcjo6CiAKICAgICA+Pj4gY2xhc3MgU2hha2UoRW51bSk6Ci0gICAgLi4uICAgICB2YW5pbGxhID0gNwotICAgIC4uLiAgICAgY2hvY29sYXRlID0gNAotICAgIC4uLiAgICAgY29va2llcyA9IDkKLSAgICAuLi4gICAgIG1pbnQgPSAzCisgICAgLi4uICAgICBWQU5JTExBID0gNworICAgIC4uLiAgICAgQ0hPQ09MQVRFID0gNAorICAgIC4uLiAgICAgQ09PS0lFUyA9IDkKKyAgICAuLi4gICAgIE1JTlQgPSAzCiAgICAgLi4uCiAgICAgPj4+IGZvciBzaGFrZSBpbiBTaGFrZToKICAgICAuLi4gICAgIHByaW50KHNoYWtlKQogICAgIC4uLgotICAgIFNoYWtlLnZhbmlsbGEKLSAgICBTaGFrZS5jaG9jb2xhdGUKLSAgICBTaGFrZS5jb29raWVzCi0gICAgU2hha2UubWludAorICAgIFNoYWtlLlZBTklMTEEKKyAgICBTaGFrZS5DSE9DT0xBVEUKKyAgICBTaGFrZS5DT09LSUVTCisgICAgU2hha2UuTUlOVAogCiBFbnVtZXJhdGlvbiBtZW1iZXJzIGFyZSBoYXNoYWJsZSwgc28gdGhleSBjYW4gYmUgdXNlZCBpbiBkaWN0aW9uYXJpZXMgYW5kIHNldHM6OgogCiAgICAgPj4+IGFwcGxlcyA9IHt9Ci0gICAgPj4+IGFwcGxlc1tDb2xvci5yZWRdID0gJ3JlZCBkZWxpY2lvdXMnCi0gICAgPj4+IGFwcGxlc1tDb2xvci5ncmVlbl0gPSAnZ3Jhbm55IHNtaXRoJwotICAgID4+PiBhcHBsZXMgPT0ge0NvbG9yLnJlZDogJ3JlZCBkZWxpY2lvdXMnLCBDb2xvci5ncmVlbjogJ2dyYW5ueSBzbWl0aCd9CisgICAgPj4+IGFwcGxlc1tDb2xvci5SRURdID0gJ3JlZCBkZWxpY2lvdXMnCisgICAgPj4+IGFwcGxlc1tDb2xvci5HUkVFTl0gPSAnZ3Jhbm55IHNtaXRoJworICAgID4+PiBhcHBsZXMgPT0ge0NvbG9yLlJFRDogJ3JlZCBkZWxpY2lvdXMnLCBDb2xvci5HUkVFTjogJ2dyYW5ueSBzbWl0aCd9CiAgICAgVHJ1ZQogCiAKQEAgLTEyNCwyNiArMTQ5LDI2IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogU29tZXRpbWVzIGl0J3MgdXNlZnVsIHRvIGFjY2VzcyBtZW1iZXJzIGluIGVudW1lcmF0aW9ucyBwcm9ncmFtbWF0aWNhbGx5IChpLmUuCi1zaXR1YXRpb25zIHdoZXJlIGBgQ29sb3IucmVkYGAgd29uJ3QgZG8gYmVjYXVzZSB0aGUgZXhhY3QgY29sb3IgaXMgbm90IGtub3duCitzaXR1YXRpb25zIHdoZXJlIGBgQ29sb3IuUkVEYGAgd29uJ3QgZG8gYmVjYXVzZSB0aGUgZXhhY3QgY29sb3IgaXMgbm90IGtub3duCiBhdCBwcm9ncmFtLXdyaXRpbmcgdGltZSkuICBgYEVudW1gYCBhbGxvd3Mgc3VjaCBhY2Nlc3M6OgogCiAgICAgPj4+IENvbG9yKDEpCi0gICAgPENvbG9yLnJlZDogMT4KKyAgICA8Q29sb3IuUkVEOiAxPgogICAgID4+PiBDb2xvcigzKQotICAgIDxDb2xvci5ibHVlOiAzPgorICAgIDxDb2xvci5CTFVFOiAzPgogCiBJZiB5b3Ugd2FudCB0byBhY2Nlc3MgZW51bSBtZW1iZXJzIGJ5ICpuYW1lKiwgdXNlIGl0ZW0gYWNjZXNzOjoKIAotICAgID4+PiBDb2xvclsncmVkJ10KLSAgICA8Q29sb3IucmVkOiAxPgotICAgID4+PiBDb2xvclsnZ3JlZW4nXQotICAgIDxDb2xvci5ncmVlbjogMj4KKyAgICA+Pj4gQ29sb3JbJ1JFRCddCisgICAgPENvbG9yLlJFRDogMT4KKyAgICA+Pj4gQ29sb3JbJ0dSRUVOJ10KKyAgICA8Q29sb3IuR1JFRU46IDI+CiAKIElmIHlvdSBoYXZlIGFuIGVudW0gbWVtYmVyIGFuZCBuZWVkIGl0cyA6YXR0cjpgbmFtZWAgb3IgOmF0dHI6YHZhbHVlYDo6CiAKLSAgICA+Pj4gbWVtYmVyID0gQ29sb3IucmVkCisgICAgPj4+IG1lbWJlciA9IENvbG9yLlJFRAogICAgID4+PiBtZW1iZXIubmFtZQotICAgICdyZWQnCisgICAgJ1JFRCcKICAgICA+Pj4gbWVtYmVyLnZhbHVlCiAgICAgMQogCkBAIC0xNTQsMTIgKzE3OSwxMiBAQAogSGF2aW5nIHR3byBlbnVtIG1lbWJlcnMgd2l0aCB0aGUgc2FtZSBuYW1lIGlzIGludmFsaWQ6OgogCiAgICAgPj4+IGNsYXNzIFNoYXBlKEVudW0pOgotICAgIC4uLiAgICAgc3F1YXJlID0gMgotICAgIC4uLiAgICAgc3F1YXJlID0gMworICAgIC4uLiAgICAgU1FVQVJFID0gMgorICAgIC4uLiAgICAgU1FVQVJFID0gMwogICAgIC4uLgogICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAuLi4KLSAgICBUeXBlRXJyb3I6IEF0dGVtcHRlZCB0byByZXVzZSBrZXk6ICdzcXVhcmUnCisgICAgVHlwZUVycm9yOiBBdHRlbXB0ZWQgdG8gcmV1c2Uga2V5OiAnU1FVQVJFJwogCiBIb3dldmVyLCB0d28gZW51bSBtZW1iZXJzIGFyZSBhbGxvd2VkIHRvIGhhdmUgdGhlIHNhbWUgdmFsdWUuICBHaXZlbiB0d28gbWVtYmVycwogQSBhbmQgQiB3aXRoIHRoZSBzYW1lIHZhbHVlIChhbmQgQSBkZWZpbmVkIGZpcnN0KSwgQiBpcyBhbiBhbGlhcyB0byBBLiAgQnktdmFsdWUKQEAgLTE2NywxNyArMTkyLDE3IEBACiByZXR1cm4gQTo6CiAKICAgICA+Pj4gY2xhc3MgU2hhcGUoRW51bSk6Ci0gICAgLi4uICAgICBzcXVhcmUgPSAyCi0gICAgLi4uICAgICBkaWFtb25kID0gMQotICAgIC4uLiAgICAgY2lyY2xlID0gMwotICAgIC4uLiAgICAgYWxpYXNfZm9yX3NxdWFyZSA9IDIKKyAgICAuLi4gICAgIFNRVUFSRSA9IDIKKyAgICAuLi4gICAgIERJQU1PTkQgPSAxCisgICAgLi4uICAgICBDSVJDTEUgPSAzCisgICAgLi4uICAgICBBTElBU19GT1JfU1FVQVJFID0gMgogICAgIC4uLgotICAgID4+PiBTaGFwZS5zcXVhcmUKLSAgICA8U2hhcGUuc3F1YXJlOiAyPgotICAgID4+PiBTaGFwZS5hbGlhc19mb3Jfc3F1YXJlCi0gICAgPFNoYXBlLnNxdWFyZTogMj4KKyAgICA+Pj4gU2hhcGUuU1FVQVJFCisgICAgPFNoYXBlLlNRVUFSRTogMj4KKyAgICA+Pj4gU2hhcGUuQUxJQVNfRk9SX1NRVUFSRQorICAgIDxTaGFwZS5TUVVBUkU6IDI+CiAgICAgPj4+IFNoYXBlKDIpCi0gICAgPFNoYXBlLnNxdWFyZTogMj4KKyAgICA8U2hhcGUuU1FVQVJFOiAyPgogCiAuLiBub3RlOjoKIApAQCAtMjAyLDIzICsyMjcsNTkgQEAKICAgICA+Pj4gZnJvbSBlbnVtIGltcG9ydCBFbnVtLCB1bmlxdWUKICAgICA+Pj4gQHVuaXF1ZQogICAgIC4uLiBjbGFzcyBNaXN0YWtlKEVudW0pOgotICAgIC4uLiAgICAgb25lID0gMQotICAgIC4uLiAgICAgdHdvID0gMgotICAgIC4uLiAgICAgdGhyZWUgPSAzCi0gICAgLi4uICAgICBmb3VyID0gMworICAgIC4uLiAgICAgT05FID0gMQorICAgIC4uLiAgICAgVFdPID0gMgorICAgIC4uLiAgICAgVEhSRUUgPSAzCisgICAgLi4uICAgICBGT1VSID0gMwogICAgIC4uLgogICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAuLi4KLSAgICBWYWx1ZUVycm9yOiBkdXBsaWNhdGUgdmFsdWVzIGZvdW5kIGluIDxlbnVtICdNaXN0YWtlJz46IGZvdXIgLT4gdGhyZWUKKyAgICBWYWx1ZUVycm9yOiBkdXBsaWNhdGUgdmFsdWVzIGZvdW5kIGluIDxlbnVtICdNaXN0YWtlJz46IEZPVVIgLT4gVEhSRUUKIAogCitVc2luZyBhdXRvbWF0aWMgdmFsdWVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0lmIHRoZSBleGFjdCB2YWx1ZSBpcyB1bmltcG9ydGFudCB5b3UgY2FuIHVzZSA6Y2xhc3M6YGF1dG9gOjoKKworICAgID4+PiBmcm9tIGVudW0gaW1wb3J0IEVudW0sIGF1dG8KKyAgICA+Pj4gY2xhc3MgQ29sb3IoRW51bSk6CisgICAgLi4uICAgICBSRUQgPSBhdXRvKCkKKyAgICAuLi4gICAgIEJMVUUgPSBhdXRvKCkKKyAgICAuLi4gICAgIEdSRUVOID0gYXV0bygpCisgICAgLi4uCisgICAgPj4+IGxpc3QoQ29sb3IpCisgICAgWzxDb2xvci5SRUQ6IDE+LCA8Q29sb3IuQkxVRTogMj4sIDxDb2xvci5HUkVFTjogMz5dCisKK1RoZSB2YWx1ZXMgYXJlIGNob3NlbiBieSA6ZnVuYzpgX2dlbmVyYXRlX25leHRfdmFsdWVfYCwgd2hpY2ggY2FuIGJlCitvdmVycmlkZGVuOjoKKworICAgID4+PiBjbGFzcyBBdXRvTmFtZShFbnVtKToKKyAgICAuLi4gICAgIGRlZiBfZ2VuZXJhdGVfbmV4dF92YWx1ZV8obmFtZSwgc3RhcnQsIGNvdW50LCBsYXN0X3ZhbHVlcyk6CisgICAgLi4uICAgICAgICAgcmV0dXJuIG5hbWUKKyAgICAuLi4KKyAgICA+Pj4gY2xhc3MgT3JkaW5hbChBdXRvTmFtZSk6CisgICAgLi4uICAgICBOT1JUSCA9IGF1dG8oKQorICAgIC4uLiAgICAgU09VVEggPSBhdXRvKCkKKyAgICAuLi4gICAgIEVBU1QgPSBhdXRvKCkKKyAgICAuLi4gICAgIFdFU1QgPSBhdXRvKCkKKyAgICAuLi4KKyAgICA+Pj4gbGlzdChPcmRpbmFsKQorICAgIFs8T3JkaW5hbC5OT1JUSDogJ05PUlRIJz4sIDxPcmRpbmFsLlNPVVRIOiAnU09VVEgnPiwgPE9yZGluYWwuRUFTVDogJ0VBU1QnPiwgPE9yZGluYWwuV0VTVDogJ1dFU1QnPl0KKworLi4gbm90ZTo6CisKKyAgICBUaGUgZ29hbCBvZiB0aGUgZGVmYXVsdCA6bWV0aDpgX2dlbmVyYXRlX25leHRfdmFsdWVfYCBtZXRob2RzIGlzIHRvIHByb3ZpZGUKKyAgICB0aGUgbmV4dCA6Y2xhc3M6YGludGAgaW4gc2VxdWVuY2Ugd2l0aCB0aGUgbGFzdCA6Y2xhc3M6YGludGAgcHJvdmlkZWQsIGJ1dAorICAgIHRoZSB3YXkgaXQgZG9lcyB0aGlzIGlzIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCBhbmQgbWF5IGNoYW5nZS4KKwogSXRlcmF0aW9uCiAtLS0tLS0tLS0KIAogSXRlcmF0aW5nIG92ZXIgdGhlIG1lbWJlcnMgb2YgYW4gZW51bSBkb2VzIG5vdCBwcm92aWRlIHRoZSBhbGlhc2VzOjoKIAogICAgID4+PiBsaXN0KFNoYXBlKQotICAgIFs8U2hhcGUuc3F1YXJlOiAyPiwgPFNoYXBlLmRpYW1vbmQ6IDE+LCA8U2hhcGUuY2lyY2xlOiAzPl0KKyAgICBbPFNoYXBlLlNRVUFSRTogMj4sIDxTaGFwZS5ESUFNT05EOiAxPiwgPFNoYXBlLkNJUkNMRTogMz5dCiAKIFRoZSBzcGVjaWFsIGF0dHJpYnV0ZSBgYF9fbWVtYmVyc19fYGAgaXMgYW4gb3JkZXJlZCBkaWN0aW9uYXJ5IG1hcHBpbmcgbmFtZXMKIHRvIG1lbWJlcnMuICBJdCBpbmNsdWRlcyBhbGwgbmFtZXMgZGVmaW5lZCBpbiB0aGUgZW51bWVyYXRpb24sIGluY2x1ZGluZyB0aGUKQEAgLTIyNywxNiArMjg4LDE2IEBACiAgICAgPj4+IGZvciBuYW1lLCBtZW1iZXIgaW4gU2hhcGUuX19tZW1iZXJzX18uaXRlbXMoKToKICAgICAuLi4gICAgIG5hbWUsIG1lbWJlcgogICAgIC4uLgotICAgICgnc3F1YXJlJywgPFNoYXBlLnNxdWFyZTogMj4pCi0gICAgKCdkaWFtb25kJywgPFNoYXBlLmRpYW1vbmQ6IDE+KQotICAgICgnY2lyY2xlJywgPFNoYXBlLmNpcmNsZTogMz4pCi0gICAgKCdhbGlhc19mb3Jfc3F1YXJlJywgPFNoYXBlLnNxdWFyZTogMj4pCisgICAgKCdTUVVBUkUnLCA8U2hhcGUuU1FVQVJFOiAyPikKKyAgICAoJ0RJQU1PTkQnLCA8U2hhcGUuRElBTU9ORDogMT4pCisgICAgKCdDSVJDTEUnLCA8U2hhcGUuQ0lSQ0xFOiAzPikKKyAgICAoJ0FMSUFTX0ZPUl9TUVVBUkUnLCA8U2hhcGUuU1FVQVJFOiAyPikKIAogVGhlIGBgX19tZW1iZXJzX19gYCBhdHRyaWJ1dGUgY2FuIGJlIHVzZWQgZm9yIGRldGFpbGVkIHByb2dyYW1tYXRpYyBhY2Nlc3MgdG8KIHRoZSBlbnVtZXJhdGlvbiBtZW1iZXJzLiAgRm9yIGV4YW1wbGUsIGZpbmRpbmcgYWxsIHRoZSBhbGlhc2VzOjoKIAogICAgID4+PiBbbmFtZSBmb3IgbmFtZSwgbWVtYmVyIGluIFNoYXBlLl9fbWVtYmVyc19fLml0ZW1zKCkgaWYgbWVtYmVyLm5hbWUgIT0gbmFtZV0KLSAgICBbJ2FsaWFzX2Zvcl9zcXVhcmUnXQorICAgIFsnQUxJQVNfRk9SX1NRVUFSRSddCiAKIAogQ29tcGFyaXNvbnMKQEAgLTI0NCwzNSArMzA1LDM1IEBACiAKIEVudW1lcmF0aW9uIG1lbWJlcnMgYXJlIGNvbXBhcmVkIGJ5IGlkZW50aXR5OjoKIAotICAgID4+PiBDb2xvci5yZWQgaXMgQ29sb3IucmVkCisgICAgPj4+IENvbG9yLlJFRCBpcyBDb2xvci5SRUQKICAgICBUcnVlCi0gICAgPj4+IENvbG9yLnJlZCBpcyBDb2xvci5ibHVlCisgICAgPj4+IENvbG9yLlJFRCBpcyBDb2xvci5CTFVFCiAgICAgRmFsc2UKLSAgICA+Pj4gQ29sb3IucmVkIGlzIG5vdCBDb2xvci5ibHVlCisgICAgPj4+IENvbG9yLlJFRCBpcyBub3QgQ29sb3IuQkxVRQogICAgIFRydWUKIAogT3JkZXJlZCBjb21wYXJpc29ucyBiZXR3ZWVuIGVudW1lcmF0aW9uIHZhbHVlcyBhcmUgKm5vdCogc3VwcG9ydGVkLiAgRW51bQogbWVtYmVycyBhcmUgbm90IGludGVnZXJzIChidXQgc2VlIGBJbnRFbnVtYF8gYmVsb3cpOjoKIAotICAgID4+PiBDb2xvci5yZWQgPCBDb2xvci5ibHVlCisgICAgPj4+IENvbG9yLlJFRCA8IENvbG9yLkJMVUUKICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgotICAgIFR5cGVFcnJvcjogdW5vcmRlcmFibGUgdHlwZXM6IENvbG9yKCkgPCBDb2xvcigpCisgICAgVHlwZUVycm9yOiAnPCcgbm90IHN1cHBvcnRlZCBiZXR3ZWVuIGluc3RhbmNlcyBvZiAnQ29sb3InIGFuZCAnQ29sb3InCiAKIEVxdWFsaXR5IGNvbXBhcmlzb25zIGFyZSBkZWZpbmVkIHRob3VnaDo6CiAKLSAgICA+Pj4gQ29sb3IuYmx1ZSA9PSBDb2xvci5yZWQKKyAgICA+Pj4gQ29sb3IuQkxVRSA9PSBDb2xvci5SRUQKICAgICBGYWxzZQotICAgID4+PiBDb2xvci5ibHVlICE9IENvbG9yLnJlZAorICAgID4+PiBDb2xvci5CTFVFICE9IENvbG9yLlJFRAogICAgIFRydWUKLSAgICA+Pj4gQ29sb3IuYmx1ZSA9PSBDb2xvci5ibHVlCisgICAgPj4+IENvbG9yLkJMVUUgPT0gQ29sb3IuQkxVRQogICAgIFRydWUKIAogQ29tcGFyaXNvbnMgYWdhaW5zdCBub24tZW51bWVyYXRpb24gdmFsdWVzIHdpbGwgYWx3YXlzIGNvbXBhcmUgbm90IGVxdWFsCiAoYWdhaW4sIDpjbGFzczpgSW50RW51bWAgd2FzIGV4cGxpY2l0bHkgZGVzaWduZWQgdG8gYmVoYXZlIGRpZmZlcmVudGx5LCBzZWUKIGJlbG93KTo6CiAKLSAgICA+Pj4gQ29sb3IuYmx1ZSA9PSAyCisgICAgPj4+IENvbG9yLkJMVUUgPT0gMgogICAgIEZhbHNlCiAKIApAQCAtMjg5LDggKzM1MCw4IEBACiB1c3VhbC4gIElmIHdlIGhhdmUgdGhpcyBlbnVtZXJhdGlvbjo6CiAKICAgICA+Pj4gY2xhc3MgTW9vZChFbnVtKToKLSAgICAuLi4gICAgIGZ1bmt5ID0gMQotICAgIC4uLiAgICAgaGFwcHkgPSAzCisgICAgLi4uICAgICBGVU5LWSA9IDEKKyAgICAuLi4gICAgIEhBUFBZID0gMwogICAgIC4uLgogICAgIC4uLiAgICAgZGVmIGRlc2NyaWJlKHNlbGYpOgogICAgIC4uLiAgICAgICAgICMgc2VsZiBpcyB0aGUgbWVtYmVyIGhlcmUKQEAgLTMwMiwxNiArMzYzLDE2IEBACiAgICAgLi4uICAgICBAY2xhc3NtZXRob2QKICAgICAuLi4gICAgIGRlZiBmYXZvcml0ZV9tb29kKGNscyk6CiAgICAgLi4uICAgICAgICAgIyBjbHMgaGVyZSBpcyB0aGUgZW51bWVyYXRpb24KLSAgICAuLi4gICAgICAgICByZXR1cm4gY2xzLmhhcHB5CisgICAgLi4uICAgICAgICAgcmV0dXJuIGNscy5IQVBQWQogICAgIC4uLgogCiBUaGVuOjoKIAogICAgID4+PiBNb29kLmZhdm9yaXRlX21vb2QoKQotICAgIDxNb29kLmhhcHB5OiAzPgotICAgID4+PiBNb29kLmhhcHB5LmRlc2NyaWJlKCkKLSAgICAoJ2hhcHB5JywgMykKLSAgICA+Pj4gc3RyKE1vb2QuZnVua3kpCisgICAgPE1vb2QuSEFQUFk6IDM+CisgICAgPj4+IE1vb2QuSEFQUFkuZGVzY3JpYmUoKQorICAgICgnSEFQUFknLCAzKQorICAgID4+PiBzdHIoTW9vZC5GVU5LWSkKICAgICAnbXkgY3VzdG9tIHN0ciEgMScKIAogVGhlIHJ1bGVzIGZvciB3aGF0IGlzIGFsbG93ZWQgYXJlIGFzIGZvbGxvd3M6IG5hbWVzIHRoYXQgc3RhcnQgYW5kIGVuZCB3aXRoCkBAIC0zMzIsNyArMzkzLDcgQEAKIGFueSBtZW1iZXJzLiAgU28gdGhpcyBpcyBmb3JiaWRkZW46OgogCiAgICAgPj4+IGNsYXNzIE1vcmVDb2xvcihDb2xvcik6Ci0gICAgLi4uICAgICBwaW5rID0gMTcKKyAgICAuLi4gICAgIFBJTksgPSAxNwogICAgIC4uLgogICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAuLi4KQEAgLTM0NSw4ICs0MDYsOCBAQAogICAgIC4uLiAgICAgICAgIHBhc3MKICAgICAuLi4KICAgICA+Pj4gY2xhc3MgQmFyKEZvbyk6Ci0gICAgLi4uICAgICBoYXBweSA9IDEKLSAgICAuLi4gICAgIHNhZCA9IDIKKyAgICAuLi4gICAgIEhBUFBZID0gMQorICAgIC4uLiAgICAgU0FEID0gMgogICAgIC4uLgogCiBBbGxvd2luZyBzdWJjbGFzc2luZyBvZiBlbnVtcyB0aGF0IGRlZmluZSBtZW1iZXJzIHdvdWxkIGxlYWQgdG8gYSB2aW9sYXRpb24gb2YKQEAgLTM2Miw3ICs0MjMsNyBAQAogCiAgICAgPj4+IGZyb20gdGVzdC50ZXN0X2VudW0gaW1wb3J0IEZydWl0CiAgICAgPj4+IGZyb20gcGlja2xlIGltcG9ydCBkdW1wcywgbG9hZHMKLSAgICA+Pj4gRnJ1aXQudG9tYXRvIGlzIGxvYWRzKGR1bXBzKEZydWl0LnRvbWF0bykpCisgICAgPj4+IEZydWl0LlRPTUFUTyBpcyBsb2FkcyhkdW1wcyhGcnVpdC5UT01BVE8pKQogICAgIFRydWUKIAogVGhlIHVzdWFsIHJlc3RyaWN0aW9ucyBmb3IgcGlja2xpbmcgYXBwbHk6IHBpY2tsYWJsZSBlbnVtcyBtdXN0IGJlIGRlZmluZWQgaW4KQEAgLTM4MywxNSArNDQ0LDE1IEBACiAKIFRoZSA6Y2xhc3M6YEVudW1gIGNsYXNzIGlzIGNhbGxhYmxlLCBwcm92aWRpbmcgdGhlIGZvbGxvd2luZyBmdW5jdGlvbmFsIEFQSTo6CiAKLSAgICA+Pj4gQW5pbWFsID0gRW51bSgnQW5pbWFsJywgJ2FudCBiZWUgY2F0IGRvZycpCisgICAgPj4+IEFuaW1hbCA9IEVudW0oJ0FuaW1hbCcsICdBTlQgQkVFIENBVCBET0cnKQogICAgID4+PiBBbmltYWwKICAgICA8ZW51bSAnQW5pbWFsJz4KLSAgICA+Pj4gQW5pbWFsLmFudAotICAgIDxBbmltYWwuYW50OiAxPgotICAgID4+PiBBbmltYWwuYW50LnZhbHVlCisgICAgPj4+IEFuaW1hbC5BTlQKKyAgICA8QW5pbWFsLkFOVDogMT4KKyAgICA+Pj4gQW5pbWFsLkFOVC52YWx1ZQogICAgIDEKICAgICA+Pj4gbGlzdChBbmltYWwpCi0gICAgWzxBbmltYWwuYW50OiAxPiwgPEFuaW1hbC5iZWU6IDI+LCA8QW5pbWFsLmNhdDogMz4sIDxBbmltYWwuZG9nOiA0Pl0KKyAgICBbPEFuaW1hbC5BTlQ6IDE+LCA8QW5pbWFsLkJFRTogMj4sIDxBbmltYWwuQ0FUOiAzPiwgPEFuaW1hbC5ET0c6IDQ+XQogCiBUaGUgc2VtYW50aWNzIG9mIHRoaXMgQVBJIHJlc2VtYmxlIDpjbGFzczpgfmNvbGxlY3Rpb25zLm5hbWVkdHVwbGVgLiBUaGUgZmlyc3QKIGFyZ3VtZW50IG9mIHRoZSBjYWxsIHRvIDpjbGFzczpgRW51bWAgaXMgdGhlIG5hbWUgb2YgdGhlIGVudW1lcmF0aW9uLgpAQCAtNDA2LDEwICs0NjcsMTAgQEAKIGFzc2lnbm1lbnQgdG8gOmNsYXNzOmBBbmltYWxgIGlzIGVxdWl2YWxlbnQgdG86OgogCiAgICAgPj4+IGNsYXNzIEFuaW1hbChFbnVtKToKLSAgICAuLi4gICAgIGFudCA9IDEKLSAgICAuLi4gICAgIGJlZSA9IDIKLSAgICAuLi4gICAgIGNhdCA9IDMKLSAgICAuLi4gICAgIGRvZyA9IDQKKyAgICAuLi4gICAgIEFOVCA9IDEKKyAgICAuLi4gICAgIEJFRSA9IDIKKyAgICAuLi4gICAgIENBVCA9IDMKKyAgICAuLi4gICAgIERPRyA9IDQKICAgICAuLi4KIAogVGhlIHJlYXNvbiBmb3IgZGVmYXVsdGluZyB0byBgYDFgYCBhcyB0aGUgc3RhcnRpbmcgbnVtYmVyIGFuZCBub3QgYGAwYGAgaXMKQEAgLTQyMiw3ICs0ODMsNyBAQAogZnVuY3Rpb24gaW4gc2VwYXJhdGUgbW9kdWxlLCBhbmQgYWxzbyBtYXkgbm90IHdvcmsgb24gSXJvblB5dGhvbiBvciBKeXRob24pLgogVGhlIHNvbHV0aW9uIGlzIHRvIHNwZWNpZnkgdGhlIG1vZHVsZSBuYW1lIGV4cGxpY2l0bHkgYXMgZm9sbG93czo6CiAKLSAgICA+Pj4gQW5pbWFsID0gRW51bSgnQW5pbWFsJywgJ2FudCBiZWUgY2F0IGRvZycsIG1vZHVsZT1fX25hbWVfXykKKyAgICA+Pj4gQW5pbWFsID0gRW51bSgnQW5pbWFsJywgJ0FOVCBCRUUgQ0FUIERPRycsIG1vZHVsZT1fX25hbWVfXykKIAogLi4gd2FybmluZzo6CiAKQEAgLTQzNSw3ICs0OTYsNyBAQAogdG8gZmluZCB0aGUgY2xhc3MuICBGb3IgZXhhbXBsZSwgaWYgdGhlIGNsYXNzIHdhcyBtYWRlIGF2YWlsYWJsZSBpbiBjbGFzcwogU29tZURhdGEgaW4gdGhlIGdsb2JhbCBzY29wZTo6CiAKLSAgICA+Pj4gQW5pbWFsID0gRW51bSgnQW5pbWFsJywgJ2FudCBiZWUgY2F0IGRvZycsIHF1YWxuYW1lPSdTb21lRGF0YS5BbmltYWwnKQorICAgID4+PiBBbmltYWwgPSBFbnVtKCdBbmltYWwnLCAnQU5UIEJFRSBDQVQgRE9HJywgcXVhbG5hbWU9J1NvbWVEYXRhLkFuaW1hbCcpCiAKIFRoZSBjb21wbGV0ZSBzaWduYXR1cmUgaXM6OgogCkBAIC00NDYsMTkgKzUwNywxOSBAQAogOm5hbWVzOiBUaGUgRW51bSBtZW1iZXJzLiAgVGhpcyBjYW4gYmUgYSB3aGl0ZXNwYWNlIG9yIGNvbW1hIHNlcGFyYXRlZCBzdHJpbmcKICAgKHZhbHVlcyB3aWxsIHN0YXJ0IGF0IDEgdW5sZXNzIG90aGVyd2lzZSBzcGVjaWZpZWQpOjoKIAotICAgICdyZWQgZ3JlZW4gYmx1ZScgfCAncmVkLGdyZWVuLGJsdWUnIHwgJ3JlZCwgZ3JlZW4sIGJsdWUnCisgICAgJ1JFRCBHUkVFTiBCTFVFJyB8ICdSRUQsR1JFRU4sQkxVRScgfCAnUkVELCBHUkVFTiwgQkxVRScKIAogICBvciBhbiBpdGVyYXRvciBvZiBuYW1lczo6CiAKLSAgICBbJ3JlZCcsICdncmVlbicsICdibHVlJ10KKyAgICBbJ1JFRCcsICdHUkVFTicsICdCTFVFJ10KIAogICBvciBhbiBpdGVyYXRvciBvZiAobmFtZSwgdmFsdWUpIHBhaXJzOjoKIAotICAgIFsoJ2N5YW4nLCA0KSwgKCdtYWdlbnRhJywgNSksICgneWVsbG93JywgNildCisgICAgWygnQ1lBTicsIDQpLCAoJ01BR0VOVEEnLCA1KSwgKCdZRUxMT1cnLCA2KV0KIAogICBvciBhIG1hcHBpbmc6OgogCi0gICAgeydjaGFydHJldXNlJzogNywgJ3NlYV9ncmVlbic6IDExLCAncm9zZW1hcnknOiA0Mn0KKyAgICB7J0NIQVJUUkVVU0UnOiA3LCAnU0VBX0dSRUVOJzogMTEsICdST1NFTUFSWSc6IDQyfQogCiA6bW9kdWxlOiBuYW1lIG9mIG1vZHVsZSB3aGVyZSBuZXcgRW51bSBjbGFzcyBjYW4gYmUgZm91bmQuCiAKQEAgLTQ3OCw1NiArNTM5LDE2NyBAQAogSW50RW51bQogXl5eXl5eXgogCi1BIHZhcmlhdGlvbiBvZiA6Y2xhc3M6YEVudW1gIGlzIHByb3ZpZGVkIHdoaWNoIGlzIGFsc28gYSBzdWJjbGFzcyBvZgorVGhlIGZpcnN0IHZhcmlhdGlvbiBvZiA6Y2xhc3M6YEVudW1gIHRoYXQgaXMgcHJvdmlkZWQgaXMgYWxzbyBhIHN1YmNsYXNzIG9mCiA6Y2xhc3M6YGludGAuICBNZW1iZXJzIG9mIGFuIDpjbGFzczpgSW50RW51bWAgY2FuIGJlIGNvbXBhcmVkIHRvIGludGVnZXJzOwogYnkgZXh0ZW5zaW9uLCBpbnRlZ2VyIGVudW1lcmF0aW9ucyBvZiBkaWZmZXJlbnQgdHlwZXMgY2FuIGFsc28gYmUgY29tcGFyZWQKIHRvIGVhY2ggb3RoZXI6OgogCiAgICAgPj4+IGZyb20gZW51bSBpbXBvcnQgSW50RW51bQogICAgID4+PiBjbGFzcyBTaGFwZShJbnRFbnVtKToKLSAgICAuLi4gICAgIGNpcmNsZSA9IDEKLSAgICAuLi4gICAgIHNxdWFyZSA9IDIKKyAgICAuLi4gICAgIENJUkNMRSA9IDEKKyAgICAuLi4gICAgIFNRVUFSRSA9IDIKICAgICAuLi4KICAgICA+Pj4gY2xhc3MgUmVxdWVzdChJbnRFbnVtKToKLSAgICAuLi4gICAgIHBvc3QgPSAxCi0gICAgLi4uICAgICBnZXQgPSAyCisgICAgLi4uICAgICBQT1NUID0gMQorICAgIC4uLiAgICAgR0VUID0gMgogICAgIC4uLgogICAgID4+PiBTaGFwZSA9PSAxCiAgICAgRmFsc2UKLSAgICA+Pj4gU2hhcGUuY2lyY2xlID09IDEKKyAgICA+Pj4gU2hhcGUuQ0lSQ0xFID09IDEKICAgICBUcnVlCi0gICAgPj4+IFNoYXBlLmNpcmNsZSA9PSBSZXF1ZXN0LnBvc3QKKyAgICA+Pj4gU2hhcGUuQ0lSQ0xFID09IFJlcXVlc3QuUE9TVAogICAgIFRydWUKIAogSG93ZXZlciwgdGhleSBzdGlsbCBjYW4ndCBiZSBjb21wYXJlZCB0byBzdGFuZGFyZCA6Y2xhc3M6YEVudW1gIGVudW1lcmF0aW9uczo6CiAKICAgICA+Pj4gY2xhc3MgU2hhcGUoSW50RW51bSk6Ci0gICAgLi4uICAgICBjaXJjbGUgPSAxCi0gICAgLi4uICAgICBzcXVhcmUgPSAyCisgICAgLi4uICAgICBDSVJDTEUgPSAxCisgICAgLi4uICAgICBTUVVBUkUgPSAyCiAgICAgLi4uCiAgICAgPj4+IGNsYXNzIENvbG9yKEVudW0pOgotICAgIC4uLiAgICAgcmVkID0gMQotICAgIC4uLiAgICAgZ3JlZW4gPSAyCisgICAgLi4uICAgICBSRUQgPSAxCisgICAgLi4uICAgICBHUkVFTiA9IDIKICAgICAuLi4KLSAgICA+Pj4gU2hhcGUuY2lyY2xlID09IENvbG9yLnJlZAorICAgID4+PiBTaGFwZS5DSVJDTEUgPT0gQ29sb3IuUkVECiAgICAgRmFsc2UKIAogOmNsYXNzOmBJbnRFbnVtYCB2YWx1ZXMgYmVoYXZlIGxpa2UgaW50ZWdlcnMgaW4gb3RoZXIgd2F5cyB5b3UnZCBleHBlY3Q6OgogCi0gICAgPj4+IGludChTaGFwZS5jaXJjbGUpCisgICAgPj4+IGludChTaGFwZS5DSVJDTEUpCiAgICAgMQotICAgID4+PiBbJ2EnLCAnYicsICdjJ11bU2hhcGUuY2lyY2xlXQorICAgID4+PiBbJ2EnLCAnYicsICdjJ11bU2hhcGUuQ0lSQ0xFXQogICAgICdiJwotICAgID4+PiBbaSBmb3IgaSBpbiByYW5nZShTaGFwZS5zcXVhcmUpXQorICAgID4+PiBbaSBmb3IgaSBpbiByYW5nZShTaGFwZS5TUVVBUkUpXQogICAgIFswLCAxXQogCi1Gb3IgdGhlIHZhc3QgbWFqb3JpdHkgb2YgY29kZSwgOmNsYXNzOmBFbnVtYCBpcyBzdHJvbmdseSByZWNvbW1lbmRlZCwKLXNpbmNlIDpjbGFzczpgSW50RW51bWAgYnJlYWtzIHNvbWUgc2VtYW50aWMgcHJvbWlzZXMgb2YgYW4gZW51bWVyYXRpb24gKGJ5Ci1iZWluZyBjb21wYXJhYmxlIHRvIGludGVnZXJzLCBhbmQgdGh1cyBieSB0cmFuc2l0aXZpdHkgdG8gb3RoZXIKLXVucmVsYXRlZCBlbnVtZXJhdGlvbnMpLiAgSXQgc2hvdWxkIGJlIHVzZWQgb25seSBpbiBzcGVjaWFsIGNhc2VzIHdoZXJlCi10aGVyZSdzIG5vIG90aGVyIGNob2ljZTsgZm9yIGV4YW1wbGUsIHdoZW4gaW50ZWdlciBjb25zdGFudHMgYXJlCi1yZXBsYWNlZCB3aXRoIGVudW1lcmF0aW9ucyBhbmQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgaXMgcmVxdWlyZWQgd2l0aCBjb2RlCi10aGF0IHN0aWxsIGV4cGVjdHMgaW50ZWdlcnMuCisKK0ludEZsYWcKK15eXl5eXl4KKworVGhlIG5leHQgdmFyaWF0aW9uIG9mIDpjbGFzczpgRW51bWAgcHJvdmlkZWQsIDpjbGFzczpgSW50RmxhZ2AsIGlzIGFsc28gYmFzZWQKK29uIDpjbGFzczpgaW50YC4gIFRoZSBkaWZmZXJlbmNlIGJlaW5nIDpjbGFzczpgSW50RmxhZ2AgbWVtYmVycyBjYW4gYmUgY29tYmluZWQKK3VzaW5nIHRoZSBiaXR3aXNlIG9wZXJhdG9ycyAoJiwgXHwsIF4sIH4pIGFuZCB0aGUgcmVzdWx0IGlzIHN0aWxsIGFuCis6Y2xhc3M6YEludEZsYWdgIG1lbWJlci4gIEhvd2V2ZXIsIGFzIHRoZSBuYW1lIGltcGxpZXMsIDpjbGFzczpgSW50RmxhZ2AKK21lbWJlcnMgYWxzbyBzdWJjbGFzcyA6Y2xhc3M6YGludGAgYW5kIGNhbiBiZSB1c2VkIHdoZXJldmVyIGFuIDpjbGFzczpgaW50YCBpcwordXNlZC4gIEFueSBvcGVyYXRpb24gb24gYW4gOmNsYXNzOmBJbnRGbGFnYCBtZW1iZXIgYmVzaWRlcyB0aGUgYml0LXdpc2UKK29wZXJhdGlvbnMgd2lsbCBsb3NlIHRoZSA6Y2xhc3M6YEludEZsYWdgIG1lbWJlcnNoaXAuCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuNgorCitTYW1wbGUgOmNsYXNzOmBJbnRGbGFnYCBjbGFzczo6CisKKyAgICA+Pj4gZnJvbSBlbnVtIGltcG9ydCBJbnRGbGFnCisgICAgPj4+IGNsYXNzIFBlcm0oSW50RmxhZyk6CisgICAgLi4uICAgICBSID0gNAorICAgIC4uLiAgICAgVyA9IDIKKyAgICAuLi4gICAgIFggPSAxCisgICAgLi4uCisgICAgPj4+IFBlcm0uUiB8IFBlcm0uVworICAgIDxQZXJtLlJ8VzogNj4KKyAgICA+Pj4gUGVybS5SICsgUGVybS5XCisgICAgNgorICAgID4+PiBSVyA9IFBlcm0uUiB8IFBlcm0uVworICAgID4+PiBQZXJtLlIgaW4gUlcKKyAgICBUcnVlCisKK0l0IGlzIGFsc28gcG9zc2libGUgdG8gbmFtZSB0aGUgY29tYmluYXRpb25zOjoKKworICAgID4+PiBjbGFzcyBQZXJtKEludEZsYWcpOgorICAgIC4uLiAgICAgUiA9IDQKKyAgICAuLi4gICAgIFcgPSAyCisgICAgLi4uICAgICBYID0gMQorICAgIC4uLiAgICAgUldYID0gNworICAgID4+PiBQZXJtLlJXWAorICAgIDxQZXJtLlJXWDogNz4KKyAgICA+Pj4gflBlcm0uUldYCisgICAgPFBlcm0uLTg6IC04PgorCitBbm90aGVyIGltcG9ydGFudCBkaWZmZXJlbmNlIGJldHdlZW4gOmNsYXNzOmBJbnRGbGFnYCBhbmQgOmNsYXNzOmBFbnVtYCBpcyB0aGF0CitpZiBubyBmbGFncyBhcmUgc2V0ICh0aGUgdmFsdWUgaXMgMCksIGl0cyBib29sZWFuIGV2YWx1YXRpb24gaXMgOmRhdGE6YEZhbHNlYDo6CisKKyAgICA+Pj4gUGVybS5SICYgUGVybS5YCisgICAgPFBlcm0uMDogMD4KKyAgICA+Pj4gYm9vbChQZXJtLlIgJiBQZXJtLlgpCisgICAgRmFsc2UKKworQmVjYXVzZSA6Y2xhc3M6YEludEZsYWdgIG1lbWJlcnMgYXJlIGFsc28gc3ViY2xhc3NlcyBvZiA6Y2xhc3M6YGludGAgdGhleSBjYW4KK2JlIGNvbWJpbmVkIHdpdGggdGhlbTo6CisKKyAgICA+Pj4gUGVybS5YIHwgOAorICAgIDxQZXJtLjh8WDogOT4KKworCitGbGFnCiteXl5eCisKK1RoZSBsYXN0IHZhcmlhdGlvbiBpcyA6Y2xhc3M6YEZsYWdgLiAgTGlrZSA6Y2xhc3M6YEludEZsYWdgLCA6Y2xhc3M6YEZsYWdgCittZW1iZXJzIGNhbiBiZSBjb21iaW5lZCB1c2luZyB0aGUgYml0d2lzZSBvcGVyYXRvcnMgKCYsIFx8LCBeLCB+KS4gIFVubGlrZQorOmNsYXNzOmBJbnRGbGFnYCwgdGhleSBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCwgbm9yIGNvbXBhcmVkIGFnYWluc3QsIGFueQorb3RoZXIgOmNsYXNzOmBGbGFnYCBlbnVtZXJhdGlvbiwgbm9yIDpjbGFzczpgaW50YC4gIFdoaWxlIGl0IGlzIHBvc3NpYmxlIHRvCitzcGVjaWZ5IHRoZSB2YWx1ZXMgZGlyZWN0bHkgaXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlIDpjbGFzczpgYXV0b2AgYXMgdGhlCit2YWx1ZSBhbmQgbGV0IDpjbGFzczpgRmxhZ2Agc2VsZWN0IGFuIGFwcHJvcHJpYXRlIHZhbHVlLgorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworTGlrZSA6Y2xhc3M6YEludEZsYWdgLCBpZiBhIGNvbWJpbmF0aW9uIG9mIDpjbGFzczpgRmxhZ2AgbWVtYmVycyByZXN1bHRzIGluIG5vCitmbGFncyBiZWluZyBzZXQsIHRoZSBib29sZWFuIGV2YWx1YXRpb24gaXMgOmRhdGE6YEZhbHNlYDo6CisKKyAgICA+Pj4gZnJvbSBlbnVtIGltcG9ydCBGbGFnCisgICAgPj4+IGNsYXNzIENvbG9yKEZsYWcpOgorICAgIC4uLiAgICAgUkVEID0gYXV0bygpCisgICAgLi4uICAgICBCTFVFID0gYXV0bygpCisgICAgLi4uICAgICBHUkVFTiA9IGF1dG8oKQorICAgIC4uLgorICAgID4+PiBDb2xvci5SRUQgJiBDb2xvci5HUkVFTgorICAgIDxDb2xvci4wOiAwPgorICAgID4+PiBib29sKENvbG9yLlJFRCAmIENvbG9yLkdSRUVOKQorICAgIEZhbHNlCisKK0luZGl2aWR1YWwgZmxhZ3Mgc2hvdWxkIGhhdmUgdmFsdWVzIHRoYXQgYXJlIHBvd2VycyBvZiB0d28gKDEsIDIsIDQsIDgsIC4uLiksCit3aGlsZSBjb21iaW5hdGlvbnMgb2YgZmxhZ3Mgd29uJ3Q6OgorCisgICAgPj4+IGNsYXNzIENvbG9yKEZsYWcpOgorICAgIC4uLiAgICAgUkVEID0gYXV0bygpCisgICAgLi4uICAgICBCTFVFID0gYXV0bygpCisgICAgLi4uICAgICBHUkVFTiA9IGF1dG8oKQorICAgIC4uLiAgICAgV0hJVEUgPSBSRUQgfCBCTFVFIHwgR1JFRU4KKyAgICAuLi4KKyAgICA+Pj4gQ29sb3IuV0hJVEUKKyAgICA8Q29sb3IuV0hJVEU6IDc+CisKK0dpdmluZyBhIG5hbWUgdG8gdGhlICJubyBmbGFncyBzZXQiIGNvbmRpdGlvbiBkb2VzIG5vdCBjaGFuZ2UgaXRzIGJvb2xlYW4KK3ZhbHVlOjoKKworICAgID4+PiBjbGFzcyBDb2xvcihGbGFnKToKKyAgICAuLi4gICAgIEJMQUNLID0gMAorICAgIC4uLiAgICAgUkVEID0gYXV0bygpCisgICAgLi4uICAgICBCTFVFID0gYXV0bygpCisgICAgLi4uICAgICBHUkVFTiA9IGF1dG8oKQorICAgIC4uLgorICAgID4+PiBDb2xvci5CTEFDSworICAgIDxDb2xvci5CTEFDSzogMD4KKyAgICA+Pj4gYm9vbChDb2xvci5CTEFDSykKKyAgICBGYWxzZQorCisuLiBub3RlOjoKKworICAgIEZvciB0aGUgbWFqb3JpdHkgb2YgbmV3IGNvZGUsIDpjbGFzczpgRW51bWAgYW5kIDpjbGFzczpgRmxhZ2AgYXJlIHN0cm9uZ2x5CisgICAgcmVjb21tZW5kZWQsIHNpbmNlIDpjbGFzczpgSW50RW51bWAgYW5kIDpjbGFzczpgSW50RmxhZ2AgYnJlYWsgc29tZQorICAgIHNlbWFudGljIHByb21pc2VzIG9mIGFuIGVudW1lcmF0aW9uIChieSBiZWluZyBjb21wYXJhYmxlIHRvIGludGVnZXJzLCBhbmQKKyAgICB0aHVzIGJ5IHRyYW5zaXRpdml0eSB0byBvdGhlciB1bnJlbGF0ZWQgZW51bWVyYXRpb25zKS4gIDpjbGFzczpgSW50RW51bWAKKyAgICBhbmQgOmNsYXNzOmBJbnRGbGFnYCBzaG91bGQgYmUgdXNlZCBvbmx5IGluIGNhc2VzIHdoZXJlIDpjbGFzczpgRW51bWAgYW5kCisgICAgOmNsYXNzOmBGbGFnYCB3aWxsIG5vdCBkbzsgZm9yIGV4YW1wbGUsIHdoZW4gaW50ZWdlciBjb25zdGFudHMgYXJlIHJlcGxhY2VkCisgICAgd2l0aCBlbnVtZXJhdGlvbnMsIG9yIGZvciBpbnRlcm9wZXJhYmlsaXR5IHdpdGggb3RoZXIgc3lzdGVtcy4KIAogCiBPdGhlcnMKQEAgLTU1OCw3ICs3MzAsOCBAQAogNC4gJS1zdHlsZSBmb3JtYXR0aW5nOiAgYCVzYCBhbmQgYCVyYCBjYWxsIHRoZSA6Y2xhc3M6YEVudW1gIGNsYXNzJ3MKICAgIDptZXRoOmBfX3N0cl9fYCBhbmQgOm1ldGg6YF9fcmVwcl9fYCByZXNwZWN0aXZlbHk7IG90aGVyIGNvZGVzIChzdWNoIGFzCiAgICBgJWlgIG9yIGAlaGAgZm9yIEludEVudW0pIHRyZWF0IHRoZSBlbnVtIG1lbWJlciBhcyBpdHMgbWl4ZWQtaW4gdHlwZS4KLTUuIDptZXRoOmBzdHIuZm9ybWF0YCAob3IgOmZ1bmM6YGZvcm1hdGApIHdpbGwgdXNlIHRoZSBtaXhlZC1pbgorNS4gOnJlZjpgRm9ybWF0dGVkIHN0cmluZyBsaXRlcmFscyA8Zi1zdHJpbmdzPmAsIDptZXRoOmBzdHIuZm9ybWF0YCwKKyAgIGFuZCA6ZnVuYzpgZm9ybWF0YCB3aWxsIHVzZSB0aGUgbWl4ZWQtaW4KICAgIHR5cGUncyA6bWV0aDpgX19mb3JtYXRfX2AuICBJZiB0aGUgOmNsYXNzOmBFbnVtYCBjbGFzcydzIDpmdW5jOmBzdHJgIG9yCiAgICA6ZnVuYzpgcmVwcmAgaXMgZGVzaXJlZCwgdXNlIHRoZSBgIXNgIG9yIGAhcmAgZm9ybWF0IGNvZGVzLgogCkBAIC01NjYsMTggKzczOSw4NyBAQAogSW50ZXJlc3RpbmcgZXhhbXBsZXMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVdoaWxlIDpjbGFzczpgRW51bWAgYW5kIDpjbGFzczpgSW50RW51bWAgYXJlIGV4cGVjdGVkIHRvIGNvdmVyIHRoZSBtYWpvcml0eSBvZgotdXNlLWNhc2VzLCB0aGV5IGNhbm5vdCBjb3ZlciB0aGVtIGFsbC4gIEhlcmUgYXJlIHJlY2lwZXMgZm9yIHNvbWUgZGlmZmVyZW50Ci10eXBlcyBvZiBlbnVtZXJhdGlvbnMgdGhhdCBjYW4gYmUgdXNlZCBkaXJlY3RseSwgb3IgYXMgZXhhbXBsZXMgZm9yIGNyZWF0aW5nCi1vbmUncyBvd24uCitXaGlsZSA6Y2xhc3M6YEVudW1gLCA6Y2xhc3M6YEludEVudW1gLCA6Y2xhc3M6YEludEZsYWdgLCBhbmQgOmNsYXNzOmBGbGFnYCBhcmUKK2V4cGVjdGVkIHRvIGNvdmVyIHRoZSBtYWpvcml0eSBvZiB1c2UtY2FzZXMsIHRoZXkgY2Fubm90IGNvdmVyIHRoZW0gYWxsLiAgSGVyZQorYXJlIHJlY2lwZXMgZm9yIHNvbWUgZGlmZmVyZW50IHR5cGVzIG9mIGVudW1lcmF0aW9ucyB0aGF0IGNhbiBiZSB1c2VkIGRpcmVjdGx5LAorb3IgYXMgZXhhbXBsZXMgZm9yIGNyZWF0aW5nIG9uZSdzIG93bi4KIAogCi1BdXRvTnVtYmVyCi1eXl5eXl5eXl5eCitPbWl0dGluZyB2YWx1ZXMKK15eXl5eXl5eXl5eXl5eXgogCi1Bdm9pZHMgaGF2aW5nIHRvIHNwZWNpZnkgdGhlIHZhbHVlIGZvciBlYWNoIGVudW1lcmF0aW9uIG1lbWJlcjo6CitJbiBtYW55IHVzZS1jYXNlcyBvbmUgZG9lc24ndCBjYXJlIHdoYXQgdGhlIGFjdHVhbCB2YWx1ZSBvZiBhbiBlbnVtZXJhdGlvbgoraXMuIFRoZXJlIGFyZSBzZXZlcmFsIHdheXMgdG8gZGVmaW5lIHRoaXMgdHlwZSBvZiBzaW1wbGUgZW51bWVyYXRpb246CiAKLSAgICA+Pj4gY2xhc3MgQXV0b051bWJlcihFbnVtKToKKy0gdXNlIGluc3RhbmNlcyBvZiA6Y2xhc3M6YGF1dG9gIGZvciB0aGUgdmFsdWUKKy0gdXNlIGluc3RhbmNlcyBvZiA6Y2xhc3M6YG9iamVjdGAgYXMgdGhlIHZhbHVlCistIHVzZSBhIGRlc2NyaXB0aXZlIHN0cmluZyBhcyB0aGUgdmFsdWUKKy0gdXNlIGEgdHVwbGUgYXMgdGhlIHZhbHVlIGFuZCBhIGN1c3RvbSA6bWV0aDpgX19uZXdfX2AgdG8gcmVwbGFjZSB0aGUKKyAgdHVwbGUgd2l0aCBhbiA6Y2xhc3M6YGludGAgdmFsdWUKKworVXNpbmcgYW55IG9mIHRoZXNlIG1ldGhvZHMgc2lnbmlmaWVzIHRvIHRoZSB1c2VyIHRoYXQgdGhlc2UgdmFsdWVzIGFyZSBub3QKK2ltcG9ydGFudCwgYW5kIGFsc28gZW5hYmxlcyBvbmUgdG8gYWRkLCByZW1vdmUsIG9yIHJlb3JkZXIgbWVtYmVycyB3aXRob3V0CitoYXZpbmcgdG8gcmVudW1iZXIgdGhlIHJlbWFpbmluZyBtZW1iZXJzLgorCitXaGljaGV2ZXIgbWV0aG9kIHlvdSBjaG9vc2UsIHlvdSBzaG91bGQgcHJvdmlkZSBhIDptZXRoOmByZXByYCB0aGF0IGFsc28gaGlkZXMKK3RoZSAodW5pbXBvcnRhbnQpIHZhbHVlOjoKKworICAgID4+PiBjbGFzcyBOb1ZhbHVlKEVudW0pOgorICAgIC4uLiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgIC4uLiAgICAgICAgIHJldHVybiAnPCVzLiVzPicgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYubmFtZSkKKyAgICAuLi4KKworCitVc2luZyA6Y2xhc3M6YGF1dG9gCisiIiIiIiIiIiIiIiIiIiIiIiIiCisKK1VzaW5nIDpjbGFzczpgb2JqZWN0YCB3b3VsZCBsb29rIGxpa2U6OgorCisgICAgPj4+IGNsYXNzIENvbG9yKE5vVmFsdWUpOgorICAgIC4uLiAgICAgUkVEID0gYXV0bygpCisgICAgLi4uICAgICBCTFVFID0gYXV0bygpCisgICAgLi4uICAgICBHUkVFTiA9IGF1dG8oKQorICAgIC4uLgorICAgID4+PiBDb2xvci5HUkVFTgorICAgIDxDb2xvci5HUkVFTj4KKworCitVc2luZyA6Y2xhc3M6YG9iamVjdGAKKyIiIiIiIiIiIiIiIiIiIiIiIiIiIgorCitVc2luZyA6Y2xhc3M6YG9iamVjdGAgd291bGQgbG9vayBsaWtlOjoKKworICAgID4+PiBjbGFzcyBDb2xvcihOb1ZhbHVlKToKKyAgICAuLi4gICAgIFJFRCA9IG9iamVjdCgpCisgICAgLi4uICAgICBHUkVFTiA9IG9iamVjdCgpCisgICAgLi4uICAgICBCTFVFID0gb2JqZWN0KCkKKyAgICAuLi4KKyAgICA+Pj4gQ29sb3IuR1JFRU4KKyAgICA8Q29sb3IuR1JFRU4+CisKKworVXNpbmcgYSBkZXNjcmlwdGl2ZSBzdHJpbmcKKyIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiCisKK1VzaW5nIGEgc3RyaW5nIGFzIHRoZSB2YWx1ZSB3b3VsZCBsb29rIGxpa2U6OgorCisgICAgPj4+IGNsYXNzIENvbG9yKE5vVmFsdWUpOgorICAgIC4uLiAgICAgUkVEID0gJ3N0b3AnCisgICAgLi4uICAgICBHUkVFTiA9ICdnbycKKyAgICAuLi4gICAgIEJMVUUgPSAndG9vIGZhc3QhJworICAgIC4uLgorICAgID4+PiBDb2xvci5HUkVFTgorICAgIDxDb2xvci5HUkVFTj4KKyAgICA+Pj4gQ29sb3IuR1JFRU4udmFsdWUKKyAgICAnZ28nCisKKworVXNpbmcgYSBjdXN0b20gOm1ldGg6YF9fbmV3X19gCisiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIKKworVXNpbmcgYW4gYXV0by1udW1iZXJpbmcgOm1ldGg6YF9fbmV3X19gIHdvdWxkIGxvb2sgbGlrZTo6CisKKyAgICA+Pj4gY2xhc3MgQXV0b051bWJlcihOb1ZhbHVlKToKICAgICAuLi4gICAgIGRlZiBfX25ld19fKGNscyk6CiAgICAgLi4uICAgICAgICAgdmFsdWUgPSBsZW4oY2xzLl9fbWVtYmVyc19fKSArIDEKICAgICAuLi4gICAgICAgICBvYmogPSBvYmplY3QuX19uZXdfXyhjbHMpCkBAIC01ODUsMTIgKzgyNywxNSBAQAogICAgIC4uLiAgICAgICAgIHJldHVybiBvYmoKICAgICAuLi4KICAgICA+Pj4gY2xhc3MgQ29sb3IoQXV0b051bWJlcik6Ci0gICAgLi4uICAgICByZWQgPSAoKQotICAgIC4uLiAgICAgZ3JlZW4gPSAoKQotICAgIC4uLiAgICAgYmx1ZSA9ICgpCisgICAgLi4uICAgICBSRUQgPSAoKQorICAgIC4uLiAgICAgR1JFRU4gPSAoKQorICAgIC4uLiAgICAgQkxVRSA9ICgpCiAgICAgLi4uCi0gICAgPj4+IENvbG9yLmdyZWVuLnZhbHVlID09IDIKLSAgICBUcnVlCisgICAgPj4+IENvbG9yLkdSRUVOCisgICAgPENvbG9yLkdSRUVOPgorICAgID4+PiBDb2xvci5HUkVFTi52YWx1ZQorICAgIDIKKwogCiAuLiBub3RlOjoKIApAQCAtNjUyLDE0ICs4OTcsMTQgQEAKICAgICAuLi4gICAgICAgICAgICAgICAgICUgKGEsIGUpKQogICAgIC4uLgogICAgID4+PiBjbGFzcyBDb2xvcihEdXBsaWNhdGVGcmVlRW51bSk6Ci0gICAgLi4uICAgICByZWQgPSAxCi0gICAgLi4uICAgICBncmVlbiA9IDIKLSAgICAuLi4gICAgIGJsdWUgPSAzCi0gICAgLi4uICAgICBncmVuZSA9IDIKKyAgICAuLi4gICAgIFJFRCA9IDEKKyAgICAuLi4gICAgIEdSRUVOID0gMgorICAgIC4uLiAgICAgQkxVRSA9IDMKKyAgICAuLi4gICAgIEdSRU5FID0gMgogICAgIC4uLgogICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAuLi4KLSAgICBWYWx1ZUVycm9yOiBhbGlhc2VzIG5vdCBhbGxvd2VkIGluIER1cGxpY2F0ZUZyZWVFbnVtOiAgJ2dyZW5lJyAtLT4gJ2dyZWVuJworICAgIFZhbHVlRXJyb3I6IGFsaWFzZXMgbm90IGFsbG93ZWQgaW4gRHVwbGljYXRlRnJlZUVudW06ICAnR1JFTkUnIC0tPiAnR1JFRU4nCiAKIC4uIG5vdGU6OgogCkBAIC03MzAsMTAgKzk3NSw2MSBAQAogRmluZXIgUG9pbnRzCiBeXl5eXl5eXl5eXl4KIAotOmNsYXNzOmBFbnVtYCBtZW1iZXJzIGFyZSBpbnN0YW5jZXMgb2YgYW4gOmNsYXNzOmBFbnVtYCBjbGFzcywgYW5kIGV2ZW4KLXRob3VnaCB0aGV5IGFyZSBhY2Nlc3NpYmxlIGFzIGBFbnVtQ2xhc3MubWVtYmVyYCwgdGhleSBzaG91bGQgbm90IGJlIGFjY2Vzc2VkCi1kaXJlY3RseSBmcm9tIHRoZSBtZW1iZXIgYXMgdGhhdCBsb29rdXAgbWF5IGZhaWwgb3IsIHdvcnNlLCByZXR1cm4gc29tZXRoaW5nCi1iZXNpZGVzIHRoZSA6Y2xhc3M6YEVudW1gIG1lbWJlciB5b3UgbG9va2luZyBmb3I6OgorU3VwcG9ydGVkIGBgX19kdW5kZXJfX2BgIG5hbWVzCisiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIKKworOmF0dHI6YF9fbWVtYmVyc19fYCBpcyBhbiA6Y2xhc3M6YE9yZGVyZWREaWN0YCBvZiBgYG1lbWJlcl9uYW1lYGA6YGBtZW1iZXJgYAoraXRlbXMuICBJdCBpcyBvbmx5IGF2YWlsYWJsZSBvbiB0aGUgY2xhc3MuCisKKzptZXRoOmBfX25ld19fYCwgaWYgc3BlY2lmaWVkLCBtdXN0IGNyZWF0ZSBhbmQgcmV0dXJuIHRoZSBlbnVtIG1lbWJlcnM7IGl0IGlzCithbHNvIGEgdmVyeSBnb29kIGlkZWEgdG8gc2V0IHRoZSBtZW1iZXIncyA6YXR0cjpgX3ZhbHVlX2AgYXBwcm9wcmlhdGVseS4gIE9uY2UKK2FsbCB0aGUgbWVtYmVycyBhcmUgY3JlYXRlZCBpdCBpcyBubyBsb25nZXIgdXNlZC4KKworCitTdXBwb3J0ZWQgYGBfc3VuZGVyX2BgIG5hbWVzCisiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiCisKKy0gYGBfbmFtZV9gYCAtLSBuYW1lIG9mIHRoZSBtZW1iZXIKKy0gYGBfdmFsdWVfYGAgLS0gdmFsdWUgb2YgdGhlIG1lbWJlcjsgY2FuIGJlIHNldCAvIG1vZGlmaWVkIGluIGBgX19uZXdfX2BgCisKKy0gYGBfbWlzc2luZ19gYCAtLSBhIGxvb2t1cCBmdW5jdGlvbiB1c2VkIHdoZW4gYSB2YWx1ZSBpcyBub3QgZm91bmQ7IG1heSBiZQorICBvdmVycmlkZGVuCistIGBgX29yZGVyX2BgIC0tIHVzZWQgaW4gUHl0aG9uIDIvMyBjb2RlIHRvIGVuc3VyZSBtZW1iZXIgb3JkZXIgaXMgY29uc2lzdGVudAorICAoY2xhc3MgYXR0cmlidXRlLCByZW1vdmVkIGR1cmluZyBjbGFzcyBjcmVhdGlvbikKKy0gYGBfZ2VuZXJhdGVfbmV4dF92YWx1ZV9gYCAtLSB1c2VkIGJ5IHRoZSBgRnVuY3Rpb25hbCBBUElgXyBhbmQgYnkKKyAgOmNsYXNzOmBhdXRvYCB0byBnZXQgYW4gYXBwcm9wcmlhdGUgdmFsdWUgZm9yIGFuIGVudW0gbWVtYmVyOyBtYXkgYmUKKyAgb3ZlcnJpZGRlbgorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYgYGBfbWlzc2luZ19gYCwgYGBfb3JkZXJfYGAsIGBgX2dlbmVyYXRlX25leHRfdmFsdWVfYGAKKworVG8gaGVscCBrZWVwIFB5dGhvbiAyIC8gUHl0aG9uIDMgY29kZSBpbiBzeW5jIGFuIDphdHRyOmBfb3JkZXJfYCBhdHRyaWJ1dGUgY2FuCitiZSBwcm92aWRlZC4gIEl0IHdpbGwgYmUgY2hlY2tlZCBhZ2FpbnN0IHRoZSBhY3R1YWwgb3JkZXIgb2YgdGhlIGVudW1lcmF0aW9uCithbmQgcmFpc2UgYW4gZXJyb3IgaWYgdGhlIHR3byBkbyBub3QgbWF0Y2g6OgorCisgICAgPj4+IGNsYXNzIENvbG9yKEVudW0pOgorICAgIC4uLiAgICAgX29yZGVyXyA9ICdSRUQgR1JFRU4gQkxVRScKKyAgICAuLi4gICAgIFJFRCA9IDEKKyAgICAuLi4gICAgIEJMVUUgPSAzCisgICAgLi4uICAgICBHUkVFTiA9IDIKKyAgICAuLi4KKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgLi4uCisgICAgVHlwZUVycm9yOiBtZW1iZXIgb3JkZXIgZG9lcyBub3QgbWF0Y2ggX29yZGVyXworCisuLiBub3RlOjoKKworICAgIEluIFB5dGhvbiAyIGNvZGUgdGhlIDphdHRyOmBfb3JkZXJfYCBhdHRyaWJ1dGUgaXMgbmVjZXNzYXJ5IGFzIGRlZmluaXRpb24KKyAgICBvcmRlciBpcyBsb3N0IGJlZm9yZSBpdCBjYW4gYmUgcmVjb3JkZWQuCisKK2BgRW51bWBgIG1lbWJlciB0eXBlCisiIiIiIiIiIiIiIiIiIiIiIiIiIgorCis6Y2xhc3M6YEVudW1gIG1lbWJlcnMgYXJlIGluc3RhbmNlcyBvZiB0aGVpciA6Y2xhc3M6YEVudW1gIGNsYXNzLCBhbmQgYXJlCitub3JtYWxseSBhY2Nlc3NlZCBhcyBgYEVudW1DbGFzcy5tZW1iZXJgYC4gIFVuZGVyIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcyB0aGV5CitjYW4gYWxzbyBiZSBhY2Nlc3NlZCBhcyBgYEVudW1DbGFzcy5tZW1iZXIubWVtYmVyYGAsIGJ1dCB5b3Ugc2hvdWxkIG5ldmVyIGRvCit0aGlzIGFzIHRoYXQgbG9va3VwIG1heSBmYWlsIG9yLCB3b3JzZSwgcmV0dXJuIHNvbWV0aGluZyBiZXNpZGVzIHRoZQorOmNsYXNzOmBFbnVtYCBtZW1iZXIgeW91IGFyZSBsb29raW5nIGZvciAodGhpcyBpcyBhbm90aGVyIGdvb2QgcmVhc29uIHRvIHVzZQorYWxsLXVwcGVyY2FzZSBuYW1lcyBmb3IgbWVtYmVycyk6OgogCiAgICAgPj4+IGNsYXNzIEZpZWxkVHlwZXMoRW51bSk6CiAgICAgLi4uICAgICBuYW1lID0gMApAQCAtNzQ3LDcgKzEwNDMsMjQgQEAKIAogLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKIAotVGhlIDphdHRyOmBfX21lbWJlcnNfX2AgYXR0cmlidXRlIGlzIG9ubHkgYXZhaWxhYmxlIG9uIHRoZSBjbGFzcy4KKworQm9vbGVhbiB2YWx1ZSBvZiBgYEVudW1gYCBjbGFzc2VzIGFuZCBtZW1iZXJzCisiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIKKworOmNsYXNzOmBFbnVtYCBtZW1iZXJzIHRoYXQgYXJlIG1peGVkIHdpdGggbm9uLTpjbGFzczpgRW51bWAgdHlwZXMgKHN1Y2ggYXMKKzpjbGFzczpgaW50YCwgOmNsYXNzOmBzdHJgLCBldGMuKSBhcmUgZXZhbHVhdGVkIGFjY29yZGluZyB0byB0aGUgbWl4ZWQtaW4KK3R5cGUncyBydWxlczsgb3RoZXJ3aXNlLCBhbGwgbWVtYmVycyBldmFsdWF0ZSBhcyA6ZGF0YTpgVHJ1ZWAuICBUbyBtYWtlIHlvdXIKK293biBFbnVtJ3MgYm9vbGVhbiBldmFsdWF0aW9uIGRlcGVuZCBvbiB0aGUgbWVtYmVyJ3MgdmFsdWUgYWRkIHRoZSBmb2xsb3dpbmcgdG8KK3lvdXIgY2xhc3M6OgorCisgICAgZGVmIF9fYm9vbF9fKHNlbGYpOgorICAgICAgICByZXR1cm4gYm9vbChzZWxmLnZhbHVlKQorCis6Y2xhc3M6YEVudW1gIGNsYXNzZXMgYWx3YXlzIGV2YWx1YXRlIGFzIDpkYXRhOmBUcnVlYC4KKworCitgYEVudW1gYCBjbGFzc2VzIHdpdGggbWV0aG9kcworIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIKIAogSWYgeW91IGdpdmUgeW91ciA6Y2xhc3M6YEVudW1gIHN1YmNsYXNzIGV4dHJhIG1ldGhvZHMsIGxpa2UgdGhlIGBQbGFuZXRgXwogY2xhc3MgYWJvdmUsIHRob3NlIG1ldGhvZHMgd2lsbCBzaG93IHVwIGluIGEgOmZ1bmM6YGRpcmAgb2YgdGhlIG1lbWJlciwKQEAgLTc1OCwxMSArMTA3MSwyMyBAQAogICAgID4+PiBkaXIoUGxhbmV0LkVBUlRIKQogICAgIFsnX19jbGFzc19fJywgJ19fZG9jX18nLCAnX19tb2R1bGVfXycsICduYW1lJywgJ3N1cmZhY2VfZ3Jhdml0eScsICd2YWx1ZSddCiAKLVRoZSA6bWV0aDpgX19uZXdfX2AgbWV0aG9kIHdpbGwgb25seSBiZSB1c2VkIGZvciB0aGUgY3JlYXRpb24gb2YgdGhlCi06Y2xhc3M6YEVudW1gIG1lbWJlcnMgLS0gYWZ0ZXIgdGhhdCBpdCBpcyByZXBsYWNlZC4gIEFueSBjdXN0b20gOm1ldGg6YF9fbmV3X19gCi1tZXRob2QgbXVzdCBjcmVhdGUgdGhlIG9iamVjdCBhbmQgc2V0IHRoZSA6YXR0cjpgX3ZhbHVlX2AgYXR0cmlidXRlCi1hcHByb3ByaWF0ZWx5LgogCi1JZiB5b3Ugd2lzaCB0byBjaGFuZ2UgaG93IDpjbGFzczpgRW51bWAgbWVtYmVycyBhcmUgbG9va2VkIHVwIHlvdSBzaG91bGQgZWl0aGVyCi13cml0ZSBhIGhlbHBlciBmdW5jdGlvbiBvciBhIDpmdW5jOmBjbGFzc21ldGhvZGAgZm9yIHRoZSA6Y2xhc3M6YEVudW1gCi1zdWJjbGFzcy4KK0NvbWJpbmluZyBtZW1iZXJzIG9mIGBgRmxhZ2BgCisiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgorCitJZiBhIGNvbWJpbmF0aW9uIG9mIEZsYWcgbWVtYmVycyBpcyBub3QgbmFtZWQsIHRoZSA6ZnVuYzpgcmVwcmAgd2lsbCBpbmNsdWRlCithbGwgbmFtZWQgZmxhZ3MgYW5kIGFsbCBuYW1lZCBjb21iaW5hdGlvbnMgb2YgZmxhZ3MgdGhhdCBhcmUgaW4gdGhlIHZhbHVlOjoKKworICAgID4+PiBjbGFzcyBDb2xvcihGbGFnKToKKyAgICAuLi4gICAgIFJFRCA9IGF1dG8oKQorICAgIC4uLiAgICAgR1JFRU4gPSBhdXRvKCkKKyAgICAuLi4gICAgIEJMVUUgPSBhdXRvKCkKKyAgICAuLi4gICAgIE1BR0VOVEEgPSBSRUQgfCBCTFVFCisgICAgLi4uICAgICBZRUxMT1cgPSBSRUQgfCBHUkVFTgorICAgIC4uLiAgICAgQ1lBTiA9IEdSRUVOIHwgQkxVRQorICAgIC4uLgorICAgID4+PiBDb2xvcigzKSAgIyBuYW1lZCBjb21iaW5hdGlvbgorICAgIDxDb2xvci5ZRUxMT1c6IDM+CisgICAgPj4+IENvbG9yKDcpICAgICAgIyBub3QgbmFtZWQgY29tYmluYXRpb24KKyAgICA8Q29sb3IuQ1lBTnxNQUdFTlRBfEJMVUV8WUVMTE9XfEdSRUVOfFJFRDogNz4KKwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZXhjZXB0aW9ucy5yc3QgYi9Eb2MvbGlicmFyeS9leGNlcHRpb25zLnJzdAppbmRleCA1YTcxOTMzLi5hNDI4ZjUxIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9leGNlcHRpb25zLnJzdAorKysgYi9Eb2MvbGlicmFyeS9leGNlcHRpb25zLnJzdApAQCAtMTcwLDggKzE3MCw5IEBACiAKIC4uIGV4Y2VwdGlvbjo6IEltcG9ydEVycm9yCiAKLSAgIFJhaXNlZCB3aGVuIGFuIDprZXl3b3JkOmBpbXBvcnRgIHN0YXRlbWVudCBmYWlscyB0byBmaW5kIHRoZSBtb2R1bGUgZGVmaW5pdGlvbgotICAgb3Igd2hlbiBhIGBgZnJvbSAuLi4gaW1wb3J0YGAgZmFpbHMgdG8gZmluZCBhIG5hbWUgdGhhdCBpcyB0byBiZSBpbXBvcnRlZC4KKyAgIFJhaXNlZCB3aGVuIHRoZSA6a2V5d29yZDpgaW1wb3J0YCBzdGF0ZW1lbnQgaGFzIHRyb3VibGVzIHRyeWluZyB0bworICAgbG9hZCBhIG1vZHVsZS4gIEFsc28gcmFpc2VkIHdoZW4gdGhlICJmcm9tIGxpc3QiIGluIGBgZnJvbSAuLi4gaW1wb3J0YGAKKyAgIGhhcyBhIG5hbWUgdGhhdCBjYW5ub3QgYmUgZm91bmQuCiAKICAgIFRoZSA6YXR0cjpgbmFtZWAgYW5kIDphdHRyOmBwYXRoYCBhdHRyaWJ1dGVzIGNhbiBiZSBzZXQgdXNpbmcga2V5d29yZC1vbmx5CiAgICBhcmd1bWVudHMgdG8gdGhlIGNvbnN0cnVjdG9yLiBXaGVuIHNldCB0aGV5IHJlcHJlc2VudCB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlCkBAIC0xODEsNiArMTgyLDE0IEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwogICAgICAgQWRkZWQgdGhlIDphdHRyOmBuYW1lYCBhbmQgOmF0dHI6YHBhdGhgIGF0dHJpYnV0ZXMuCiAKKy4uIGV4Y2VwdGlvbjo6IE1vZHVsZU5vdEZvdW5kRXJyb3IKKworICAgQSBzdWJjbGFzcyBvZiA6ZXhjOmBJbXBvcnRFcnJvcmAgd2hpY2ggaXMgcmFpc2VkIGJ5IDprZXl3b3JkOmBpbXBvcnRgCisgICB3aGVuIGEgbW9kdWxlIGNvdWxkIG5vdCBiZSBsb2NhdGVkLiAgSXQgaXMgYWxzbyByYWlzZWQgd2hlbiBgYE5vbmVgYAorICAgaXMgZm91bmQgaW4gOmRhdGE6YHN5cy5tb2R1bGVzYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIAogLi4gZXhjZXB0aW9uOjogSW5kZXhFcnJvcgogCkBAIC0yMjgsOSArMjM3LDIxIEBACiAuLiBleGNlcHRpb246OiBOb3RJbXBsZW1lbnRlZEVycm9yCiAKICAgIFRoaXMgZXhjZXB0aW9uIGlzIGRlcml2ZWQgZnJvbSA6ZXhjOmBSdW50aW1lRXJyb3JgLiAgSW4gdXNlciBkZWZpbmVkIGJhc2UKLSAgIGNsYXNzZXMsIGFic3RyYWN0IG1ldGhvZHMgc2hvdWxkIHJhaXNlIHRoaXMgZXhjZXB0aW9uIHdoZW4gdGhleSByZXF1aXJlIGRlcml2ZWQKLSAgIGNsYXNzZXMgdG8gb3ZlcnJpZGUgdGhlIG1ldGhvZC4KKyAgIGNsYXNzZXMsIGFic3RyYWN0IG1ldGhvZHMgc2hvdWxkIHJhaXNlIHRoaXMgZXhjZXB0aW9uIHdoZW4gdGhleSByZXF1aXJlCisgICBkZXJpdmVkIGNsYXNzZXMgdG8gb3ZlcnJpZGUgdGhlIG1ldGhvZCwgb3Igd2hpbGUgdGhlIGNsYXNzIGlzIGJlaW5nCisgICBkZXZlbG9wZWQgdG8gaW5kaWNhdGUgdGhhdCB0aGUgcmVhbCBpbXBsZW1lbnRhdGlvbiBzdGlsbCBuZWVkcyB0byBiZSBhZGRlZC4KIAorICAgLi4gbm90ZTo6CisKKyAgICAgIEl0IHNob3VsZCBub3QgYmUgdXNlZCB0byBpbmRpY2F0ZSB0aGF0IGFuIG9wZXJhdGVyIG9yIG1ldGhvZCBpcyBub3QKKyAgICAgIG1lYW50IHRvIGJlIHN1cHBvcnRlZCBhdCBhbGwgLS0gaW4gdGhhdCBjYXNlIGVpdGhlciBsZWF2ZSB0aGUgb3BlcmF0b3IgLworICAgICAgbWV0aG9kIHVuZGVmaW5lZCBvciwgaWYgYSBzdWJjbGFzcywgc2V0IGl0IHRvIDpkYXRhOmBOb25lYC4KKworICAgLi4gbm90ZTo6CisKKyAgICAgIGBgTm90SW1wbGVtZW50ZWRFcnJvcmBgIGFuZCBgYE5vdEltcGxlbWVudGVkYGAgYXJlIG5vdCBpbnRlcmNoYW5nZWFibGUsCisgICAgICBldmVuIHRob3VnaCB0aGV5IGhhdmUgc2ltaWxhciBuYW1lcyBhbmQgcHVycG9zZXMuICBTZWUKKyAgICAgIDpkYXRhOmBOb3RJbXBsZW1lbnRlZGAgZm9yIGRldGFpbHMgb24gd2hlbiB0byB1c2UgaXQuCiAKIC4uIGV4Y2VwdGlvbjo6IE9TRXJyb3IoW2FyZ10pCiAgICAgICAgICAgICAgICBPU0Vycm9yKGVycm5vLCBzdHJlcnJvclssIGZpbGVuYW1lWywgd2luZXJyb3JbLCBmaWxlbmFtZTJdXV0pCkBAIC00MzYsNiArNDU3LDE1IEBACiAgICBSYWlzZWQgd2hlbiBhbiBvcGVyYXRpb24gb3IgZnVuY3Rpb24gaXMgYXBwbGllZCB0byBhbiBvYmplY3Qgb2YgaW5hcHByb3ByaWF0ZQogICAgdHlwZS4gIFRoZSBhc3NvY2lhdGVkIHZhbHVlIGlzIGEgc3RyaW5nIGdpdmluZyBkZXRhaWxzIGFib3V0IHRoZSB0eXBlIG1pc21hdGNoLgogCisgICBUaGlzIGV4Y2VwdGlvbiBtYXkgYmUgcmFpc2VkIGJ5IHVzZXIgY29kZSB0byBpbmRpY2F0ZSB0aGF0IGFuIGF0dGVtcHRlZAorICAgb3BlcmF0aW9uIG9uIGFuIG9iamVjdCBpcyBub3Qgc3VwcG9ydGVkLCBhbmQgaXMgbm90IG1lYW50IHRvIGJlLiBJZiBhbiBvYmplY3QKKyAgIGlzIG1lYW50IHRvIHN1cHBvcnQgYSBnaXZlbiBvcGVyYXRpb24gYnV0IGhhcyBub3QgeWV0IHByb3ZpZGVkIGFuCisgICBpbXBsZW1lbnRhdGlvbiwgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgaXMgdGhlIHByb3BlciBleGNlcHRpb24gdG8gcmFpc2UuCisKKyAgIFBhc3NpbmcgYXJndW1lbnRzIG9mIHRoZSB3cm9uZyB0eXBlIChlLmcuIHBhc3NpbmcgYSA6Y2xhc3M6YGxpc3RgIHdoZW4gYW4KKyAgIDpjbGFzczpgaW50YCBpcyBleHBlY3RlZCkgc2hvdWxkIHJlc3VsdCBpbiBhIDpleGM6YFR5cGVFcnJvcmAsIGJ1dCBwYXNzaW5nCisgICBhcmd1bWVudHMgd2l0aCB0aGUgd3JvbmcgdmFsdWUgKGUuZy4gYSBudW1iZXIgb3V0c2lkZSBleHBlY3RlZCBib3VuZGFyaWVzKQorICAgc2hvdWxkIHJlc3VsdCBpbiBhIDpleGM6YFZhbHVlRXJyb3JgLgogCiAuLiBleGNlcHRpb246OiBVbmJvdW5kTG9jYWxFcnJvcgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9mYXVsdGhhbmRsZXIucnN0IGIvRG9jL2xpYnJhcnkvZmF1bHRoYW5kbGVyLnJzdAppbmRleCBkZWVkZWExLi5kMGM0Y2QwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9mYXVsdGhhbmRsZXIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2ZhdWx0aGFuZGxlci5yc3QKQEAgLTcwLDYgKzcwLDkgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBwYXNzaW5nIGZpbGUgZGVzY3JpcHRvciB0byB0aGlzIGZ1bmN0aW9uLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgT24gV2luZG93cywgYSBoYW5kbGVyIGZvciBXaW5kb3dzIGV4Y2VwdGlvbiBpcyBhbHNvIGluc3RhbGxlZC4KKwogLi4gZnVuY3Rpb246OiBkaXNhYmxlKCkKIAogICAgRGlzYWJsZSB0aGUgZmF1bHQgaGFuZGxlcjogdW5pbnN0YWxsIHRoZSBzaWduYWwgaGFuZGxlcnMgaW5zdGFsbGVkIGJ5CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9maWxlaW5wdXQucnN0IGIvRG9jL2xpYnJhcnkvZmlsZWlucHV0LnJzdAppbmRleCBhYTRjNTI5Li41ODgxZmVmIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9maWxlaW5wdXQucnN0CisrKyBiL0RvYy9saWJyYXJ5L2ZpbGVpbnB1dC5yc3QKQEAgLTcyLDkgKzcyLDggQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBDYW4gYmUgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlci4KIAotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUuMgotICAgICAgVGhlICpidWZzaXplKiBwYXJhbWV0ZXIgaXMgbm8gbG9uZ2VyIHVzZWQuCi0KKyAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuNiAzLjgKKyAgICAgIFRoZSAqYnVmc2l6ZSogcGFyYW1ldGVyLgogCiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyB1c2UgdGhlIGdsb2JhbCBzdGF0ZSBjcmVhdGVkIGJ5IDpmdW5jOmBmaWxlaW5wdXQuaW5wdXRgOwogaWYgdGhlcmUgaXMgbm8gYWN0aXZlIHN0YXRlLCA6ZXhjOmBSdW50aW1lRXJyb3JgIGlzIHJhaXNlZC4KQEAgLTE2Nyw4ICsxNjYsOCBAQAogICAgLi4gZGVwcmVjYXRlZDo6IDMuNAogICAgICAgVGhlIGBgJ3JVJ2BgIGFuZCBgYCdVJ2BgIG1vZGVzLgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNS4yCi0gICAgICBUaGUgKmJ1ZnNpemUqIHBhcmFtZXRlciBpcyBubyBsb25nZXIgdXNlZC4KKyAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuNiAzLjgKKyAgICAgIFRoZSAqYnVmc2l6ZSogcGFyYW1ldGVyLgogCiAKICoqT3B0aW9uYWwgaW4tcGxhY2UgZmlsdGVyaW5nOioqIGlmIHRoZSBrZXl3b3JkIGFyZ3VtZW50IGBgaW5wbGFjZT1UcnVlYGAgaXMKQEAgLTE5NSwxMCArMTk0LDE0IEBACiAgICBVc2FnZSBleGFtcGxlOiAgYGBmaSA9IGZpbGVpbnB1dC5GaWxlSW5wdXQob3Blbmhvb2s9ZmlsZWlucHV0Lmhvb2tfY29tcHJlc3NlZClgYAogCiAKLS4uIGZ1bmN0aW9uOjogaG9va19lbmNvZGVkKGVuY29kaW5nKQorLi4gZnVuY3Rpb246OiBob29rX2VuY29kZWQoZW5jb2RpbmcsIGVycm9ycz1Ob25lKQogCiAgICBSZXR1cm5zIGEgaG9vayB3aGljaCBvcGVucyBlYWNoIGZpbGUgd2l0aCA6ZnVuYzpgb3BlbmAsIHVzaW5nIHRoZSBnaXZlbgotICAgKmVuY29kaW5nKiB0byByZWFkIHRoZSBmaWxlLgorICAgKmVuY29kaW5nKiBhbmQgKmVycm9ycyogdG8gcmVhZCB0aGUgZmlsZS4KIAogICAgVXNhZ2UgZXhhbXBsZTogYGBmaSA9Ci0gICBmaWxlaW5wdXQuRmlsZUlucHV0KG9wZW5ob29rPWZpbGVpbnB1dC5ob29rX2VuY29kZWQoImlzby04ODU5LTEiKSlgYAorICAgZmlsZWlucHV0LkZpbGVJbnB1dChvcGVuaG9vaz1maWxlaW5wdXQuaG9va19lbmNvZGVkKCJ1dGYtOCIsCisgICAic3Vycm9nYXRlZXNjYXBlIikpYGAKKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFkZGVkIHRoZSBvcHRpb25hbCAqZXJyb3JzKiBwYXJhbWV0ZXIuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9mbm1hdGNoLnJzdCBiL0RvYy9saWJyYXJ5L2ZubWF0Y2gucnN0CmluZGV4IDlmYzljN2MuLmMwM2E5ZDMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2ZubWF0Y2gucnN0CisrKyBiL0RvYy9saWJyYXJ5L2ZubWF0Y2gucnN0CkBAIC04Myw3ICs4Myw3IEBACiAgICAgICA+Pj4KICAgICAgID4+PiByZWdleCA9IGZubWF0Y2gudHJhbnNsYXRlKCcqLnR4dCcpCiAgICAgICA+Pj4gcmVnZXgKLSAgICAgICcuKlxcLnR4dFxcWig/bXMpJworICAgICAgJyg/czouKlxcLnR4dClcXFonCiAgICAgICA+Pj4gcmVvYmogPSByZS5jb21waWxlKHJlZ2V4KQogICAgICAgPj4+IHJlb2JqLm1hdGNoKCdmb29iYXIudHh0JykKICAgICAgIDxfc3JlLlNSRV9NYXRjaCBvYmplY3Q7IHNwYW49KDAsIDEwKSwgbWF0Y2g9J2Zvb2Jhci50eHQnPgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZnRwbGliLnJzdCBiL0RvYy9saWJyYXJ5L2Z0cGxpYi5yc3QKaW5kZXggMWUzNWYzNy4uYjhjMWRjZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZnRwbGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9mdHBsaWIucnN0CkBAIC05Nyw2ICs5NywxMyBAQAogICAgICAgOmF0dHI6YHNzbC5TU0xDb250ZXh0LmNoZWNrX2hvc3RuYW1lYCBhbmQgKlNlcnZlciBOYW1lIEluZGljYXRpb24qIChzZWUKICAgICAgIDpkYXRhOmBzc2wuSEFTX1NOSWApLgogCisgICAuLiBkZXByZWNhdGVkOjogMy42CisKKyAgICAgICAqa2V5ZmlsZSogYW5kICpjZXJ0ZmlsZSogYXJlIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgKmNvbnRleHQqLgorICAgICAgIFBsZWFzZSB1c2UgOm1ldGg6YHNzbC5TU0xDb250ZXh0LmxvYWRfY2VydF9jaGFpbmAgaW5zdGVhZCwgb3IgbGV0CisgICAgICAgOmZ1bmM6YHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0YCBzZWxlY3QgdGhlIHN5c3RlbSdzIHRydXN0ZWQgQ0EKKyAgICAgICBjZXJ0aWZpY2F0ZXMgZm9yIHlvdS4KKwogICAgSGVyZSdzIGEgc2FtcGxlIHNlc3Npb24gdXNpbmcgdGhlIDpjbGFzczpgRlRQX1RMU2AgY2xhc3M6OgogCiAgICAgICA+Pj4gZnRwcyA9IEZUUF9UTFMoJ2Z0cC5wdXJlZnRwZC5vcmcnKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZnVuY3Rpb25zLnJzdCBiL0RvYy9saWJyYXJ5L2Z1bmN0aW9ucy5yc3QKaW5kZXggMmYxNDk0OS4uYzI2MDM3YiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZnVuY3Rpb25zLnJzdAorKysgYi9Eb2MvbGlicmFyeS9mdW5jdGlvbnMucnN0CkBAIC0yNzEsNiArMjcxLDkgQEAKIAogICAgVGhlIGNvbXBsZXggdHlwZSBpcyBkZXNjcmliZWQgaW4gOnJlZjpgdHlwZXNudW1lcmljYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEdyb3VwaW5nIGRpZ2l0cyB3aXRoIHVuZGVyc2NvcmVzIGFzIGluIGNvZGUgbGl0ZXJhbHMgaXMgYWxsb3dlZC4KKwogCiAuLiBmdW5jdGlvbjo6IGRlbGF0dHIob2JqZWN0LCBuYW1lKQogCkBAIC01MzEsMTEgKzUzNCwxNCBAQAogCiAgICBUaGUgZmxvYXQgdHlwZSBpcyBkZXNjcmliZWQgaW4gOnJlZjpgdHlwZXNudW1lcmljYC4KIAotICAgLi4gaW5kZXg6OgotICAgICAgc2luZ2xlOiBfX2Zvcm1hdF9fCi0gICAgICBzaW5nbGU6IHN0cmluZzsgZm9ybWF0KCkgKGJ1aWx0LWluIGZ1bmN0aW9uKQorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEdyb3VwaW5nIGRpZ2l0cyB3aXRoIHVuZGVyc2NvcmVzIGFzIGluIGNvZGUgbGl0ZXJhbHMgaXMgYWxsb3dlZC4KIAogCisuLiBpbmRleDo6CisgICBzaW5nbGU6IF9fZm9ybWF0X18KKyAgIHNpbmdsZTogc3RyaW5nOyBmb3JtYXQoKSAoYnVpbHQtaW4gZnVuY3Rpb24pCisKIC4uIGZ1bmN0aW9uOjogZm9ybWF0KHZhbHVlWywgZm9ybWF0X3NwZWNdKQogCiAgICBDb252ZXJ0IGEgKnZhbHVlKiB0byBhICJmb3JtYXR0ZWQiIHJlcHJlc2VudGF0aW9uLCBhcyBjb250cm9sbGVkIGJ5CkBAIC03MDIsNiArNzA4LDEwIEBACiAgICAgICA6bWV0aDpgYmFzZS5fX2ludF9fIDxvYmplY3QuX19pbnRfXz5gIGluc3RlYWQgb2YgOm1ldGg6YGJhc2UuX19pbmRleF9fCiAgICAgICA8b2JqZWN0Ll9faW5kZXhfXz5gLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgR3JvdXBpbmcgZGlnaXRzIHdpdGggdW5kZXJzY29yZXMgYXMgaW4gY29kZSBsaXRlcmFscyBpcyBhbGxvd2VkLgorCisKIC4uIGZ1bmN0aW9uOjogaXNpbnN0YW5jZShvYmplY3QsIGNsYXNzaW5mbykKIAogICAgUmV0dXJuIHRydWUgaWYgdGhlICpvYmplY3QqIGFyZ3VtZW50IGlzIGFuIGluc3RhbmNlIG9mIHRoZSAqY2xhc3NpbmZvKgpAQCAtODc4LDExICs4ODgsMTEgQEAKICAgIE9wZW4gKmZpbGUqIGFuZCByZXR1cm4gYSBjb3JyZXNwb25kaW5nIDp0ZXJtOmBmaWxlIG9iamVjdGAuICBJZiB0aGUgZmlsZQogICAgY2Fubm90IGJlIG9wZW5lZCwgYW4gOmV4YzpgT1NFcnJvcmAgaXMgcmFpc2VkLgogCi0gICAqZmlsZSogaXMgZWl0aGVyIGEgc3RyaW5nIG9yIGJ5dGVzIG9iamVjdCBnaXZpbmcgdGhlIHBhdGhuYW1lIChhYnNvbHV0ZSBvcgotICAgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkpIG9mIHRoZSBmaWxlIHRvIGJlIG9wZW5lZCBvcgotICAgYW4gaW50ZWdlciBmaWxlIGRlc2NyaXB0b3Igb2YgdGhlIGZpbGUgdG8gYmUgd3JhcHBlZC4gIChJZiBhIGZpbGUgZGVzY3JpcHRvcgotICAgaXMgZ2l2ZW4sIGl0IGlzIGNsb3NlZCB3aGVuIHRoZSByZXR1cm5lZCBJL08gb2JqZWN0IGlzIGNsb3NlZCwgdW5sZXNzCi0gICAqY2xvc2VmZCogaXMgc2V0IHRvIGBgRmFsc2VgYC4pCisgICAqZmlsZSogaXMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAgZ2l2aW5nIHRoZSBwYXRobmFtZSAoYWJzb2x1dGUgb3IKKyAgIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5KSBvZiB0aGUgZmlsZSB0byBiZSBvcGVuZWQgb3IgYW4KKyAgIGludGVnZXIgZmlsZSBkZXNjcmlwdG9yIG9mIHRoZSBmaWxlIHRvIGJlIHdyYXBwZWQuICAoSWYgYSBmaWxlIGRlc2NyaXB0b3IgaXMKKyAgIGdpdmVuLCBpdCBpcyBjbG9zZWQgd2hlbiB0aGUgcmV0dXJuZWQgSS9PIG9iamVjdCBpcyBjbG9zZWQsIHVubGVzcyAqY2xvc2VmZCoKKyAgIGlzIHNldCB0byBgYEZhbHNlYGAuKQogCiAgICAqbW9kZSogaXMgYW4gb3B0aW9uYWwgc3RyaW5nIHRoYXQgc3BlY2lmaWVzIHRoZSBtb2RlIGluIHdoaWNoIHRoZSBmaWxlIGlzCiAgICBvcGVuZWQuICBJdCBkZWZhdWx0cyB0byBgYCdyJ2BgIHdoaWNoIG1lYW5zIG9wZW4gZm9yIHJlYWRpbmcgaW4gdGV4dCBtb2RlLgpAQCAtMTA1NSwyNyArMTA2NSwzOCBAQAogICAgKHdoZXJlIDpmdW5jOmBvcGVuYCBpcyBkZWNsYXJlZCksIDptb2Q6YG9zYCwgOm1vZDpgb3MucGF0aGAsIDptb2Q6YHRlbXBmaWxlYCwKICAgIGFuZCA6bW9kOmBzaHV0aWxgLgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwotICAgICAgVGhlICpvcGVuZXIqIHBhcmFtZXRlciB3YXMgYWRkZWQuCi0gICAgICBUaGUgYGAneCdgYCBtb2RlIHdhcyBhZGRlZC4KLSAgICAgIDpleGM6YElPRXJyb3JgIHVzZWQgdG8gYmUgcmFpc2VkLCBpdCBpcyBub3cgYW4gYWxpYXMgb2YgOmV4YzpgT1NFcnJvcmAuCi0gICAgICA6ZXhjOmBGaWxlRXhpc3RzRXJyb3JgIGlzIG5vdyByYWlzZWQgaWYgdGhlIGZpbGUgb3BlbmVkIGluIGV4Y2x1c2l2ZQotICAgICAgY3JlYXRpb24gbW9kZSAoYGAneCdgYCkgYWxyZWFkeSBleGlzdHMuCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6CisgICAgICAzLjMKIAotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKLSAgICAgIFRoZSBmaWxlIGlzIG5vdyBub24taW5oZXJpdGFibGUuCisgICAgICAgICAqIFRoZSAqb3BlbmVyKiBwYXJhbWV0ZXIgd2FzIGFkZGVkLgorICAgICAgICAgKiBUaGUgYGAneCdgYCBtb2RlIHdhcyBhZGRlZC4KKyAgICAgICAgICogOmV4YzpgSU9FcnJvcmAgdXNlZCB0byBiZSByYWlzZWQsIGl0IGlzIG5vdyBhbiBhbGlhcyBvZiA6ZXhjOmBPU0Vycm9yYC4KKyAgICAgICAgICogOmV4YzpgRmlsZUV4aXN0c0Vycm9yYCBpcyBub3cgcmFpc2VkIGlmIHRoZSBmaWxlIG9wZW5lZCBpbiBleGNsdXNpdmUKKyAgICAgICAgICogY3JlYXRpb24gbW9kZSAoYGAneCdgYCkgYWxyZWFkeSBleGlzdHMuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjoKKyAgICAgIDMuNAorCisgICAgICAgICAqIFRoZSBmaWxlIGlzIG5vdyBub24taW5oZXJpdGFibGUuCiAKICAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuNCA0LjAKIAogICAgICAgVGhlIGBgJ1UnYGAgbW9kZS4KIAotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKLSAgICAgIElmIHRoZSBzeXN0ZW0gY2FsbCBpcyBpbnRlcnJ1cHRlZCBhbmQgdGhlIHNpZ25hbCBoYW5kbGVyIGRvZXMgbm90IHJhaXNlIGFuCi0gICAgICBleGNlcHRpb24sIHRoZSBmdW5jdGlvbiBub3cgcmV0cmllcyB0aGUgc3lzdGVtIGNhbGwgaW5zdGVhZCBvZiByYWlzaW5nIGFuCi0gICAgICA6ZXhjOmBJbnRlcnJ1cHRlZEVycm9yYCBleGNlcHRpb24gKHNlZSA6cGVwOmA0NzVgIGZvciB0aGUgcmF0aW9uYWxlKS4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjoKKyAgICAgIDMuNQogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQotICAgICAgVGhlIGBgJ25hbWVyZXBsYWNlJ2BgIGVycm9yIGhhbmRsZXIgd2FzIGFkZGVkLgorICAgICAgICAgKiBJZiB0aGUgc3lzdGVtIGNhbGwgaXMgaW50ZXJydXB0ZWQgYW5kIHRoZSBzaWduYWwgaGFuZGxlciBkb2VzIG5vdCByYWlzZSBhbgorICAgICAgICAgICBleGNlcHRpb24sIHRoZSBmdW5jdGlvbiBub3cgcmV0cmllcyB0aGUgc3lzdGVtIGNhbGwgaW5zdGVhZCBvZiByYWlzaW5nIGFuCisgICAgICAgICAgIDpleGM6YEludGVycnVwdGVkRXJyb3JgIGV4Y2VwdGlvbiAoc2VlIDpwZXA6YDQ3NWAgZm9yIHRoZSByYXRpb25hbGUpLgorICAgICAgICAgKiBUaGUgYGAnbmFtZXJlcGxhY2UnYGAgZXJyb3IgaGFuZGxlciB3YXMgYWRkZWQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjoKKyAgICAgIDMuNgorCisgICAgICAgICAqIFN1cHBvcnQgYWRkZWQgdG8gYWNjZXB0IG9iamVjdHMgaW1wbGVtZW50aW5nIDpjbGFzczpgb3MuUGF0aExpa2VgLgorICAgICAgICAgKiBPbiBXaW5kb3dzLCBvcGVuaW5nIGEgY29uc29sZSBidWZmZXIgbWF5IHJldHVybiBhIHN1YmNsYXNzIG9mCisgICAgICAgICAgIDpjbGFzczpgaW8uUmF3SU9CYXNlYCBvdGhlciB0aGFuIDpjbGFzczpgaW8uRmlsZUlPYC4KIAogLi4gZnVuY3Rpb246OiBvcmQoYykKIApAQCAtMTQ2MCw2ICsxNDgxLDkgQEAKIAogICAgU2VlIGFsc28gOnJlZjpgYmx0aW4tdHlwZS1vYmplY3RzYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFN1YmNsYXNzZXMgb2YgOmNsYXNzOmB0eXBlYCB3aGljaCBkb24ndCBvdmVycmlkZSBgYHR5cGUuX19uZXdfX2BgIG1heSBubworICAgICAgbG9uZ2VyIHVzZSB0aGUgb25lLWFyZ3VtZW50IGZvcm0gdG8gZ2V0IHRoZSB0eXBlIG9mIGFuIG9iamVjdC4KIAogLi4gZnVuY3Rpb246OiB2YXJzKFtvYmplY3RdKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9nbG9iLnJzdCBiL0RvYy9saWJyYXJ5L2dsb2IucnN0CmluZGV4IDMyOGVlZjMuLmE4YTVhNTAgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2dsb2IucnN0CisrKyBiL0RvYy9saWJyYXJ5L2dsb2IucnN0CkBAIC0xNCw3ICsxNCw3IEBACiBhY2NvcmRpbmcgdG8gdGhlIHJ1bGVzIHVzZWQgYnkgdGhlIFVuaXggc2hlbGwsIGFsdGhvdWdoIHJlc3VsdHMgYXJlIHJldHVybmVkIGluCiBhcmJpdHJhcnkgb3JkZXIuICBObyB0aWxkZSBleHBhbnNpb24gaXMgZG9uZSwgYnV0IGBgKmBgLCBgYD9gYCwgYW5kIGNoYXJhY3RlcgogcmFuZ2VzIGV4cHJlc3NlZCB3aXRoIGBgW11gYCB3aWxsIGJlIGNvcnJlY3RseSBtYXRjaGVkLiAgVGhpcyBpcyBkb25lIGJ5IHVzaW5nCi10aGUgOmZ1bmM6YG9zLmxpc3RkaXJgIGFuZCA6ZnVuYzpgZm5tYXRjaC5mbm1hdGNoYCBmdW5jdGlvbnMgaW4gY29uY2VydCwgYW5kCit0aGUgOmZ1bmM6YG9zLnNjYW5kaXJgIGFuZCA6ZnVuYzpgZm5tYXRjaC5mbm1hdGNoYCBmdW5jdGlvbnMgaW4gY29uY2VydCwgYW5kCiBub3QgYnkgYWN0dWFsbHkgaW52b2tpbmcgYSBzdWJzaGVsbC4gIE5vdGUgdGhhdCB1bmxpa2UgOmZ1bmM6YGZubWF0Y2guZm5tYXRjaGAsCiA6bW9kOmBnbG9iYCB0cmVhdHMgZmlsZW5hbWVzIGJlZ2lubmluZyB3aXRoIGEgZG90IChgYC5gYCkgYXMgc3BlY2lhbCBjYXNlcy4KIChGb3IgdGlsZGUgYW5kIHNoZWxsIHZhcmlhYmxlIGV4cGFuc2lvbiwgdXNlIDpmdW5jOmBvcy5wYXRoLmV4cGFuZHVzZXJgIGFuZApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZ3JwLnJzdCBiL0RvYy9saWJyYXJ5L2dycC5yc3QKaW5kZXggYTMwZTYyMi4uNzRkZTNmOSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZ3JwLnJzdAorKysgYi9Eb2MvbGlicmFyeS9ncnAucnN0CkBAIC00Myw2ICs0Myw5IEBACiAgICBSZXR1cm4gdGhlIGdyb3VwIGRhdGFiYXNlIGVudHJ5IGZvciB0aGUgZ2l2ZW4gbnVtZXJpYyBncm91cCBJRC4gOmV4YzpgS2V5RXJyb3JgCiAgICBpcyByYWlzZWQgaWYgdGhlIGVudHJ5IGFza2VkIGZvciBjYW5ub3QgYmUgZm91bmQuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjYKKyAgICAgIFNpbmNlIFB5dGhvbiAzLjYgdGhlIHN1cHBvcnQgb2Ygbm9uLWludGVnZXIgYXJndW1lbnRzIGxpa2UgZmxvYXRzIG9yCisgICAgICBzdHJpbmdzIGluIDpmdW5jOmBnZXRncmdpZGAgaXMgZGVwcmVjYXRlZC4KIAogLi4gZnVuY3Rpb246OiBnZXRncm5hbShuYW1lKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9nemlwLnJzdCBiL0RvYy9saWJyYXJ5L2d6aXAucnN0CmluZGV4IDc5MmQ1N2EuLjljNmI3MjIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2d6aXAucnN0CisrKyBiL0RvYy9saWJyYXJ5L2d6aXAucnN0CkBAIC01Niw2ICs1Niw4IEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgdGhlIGBgJ3gnYGAsIGBgJ3hiJ2BgIGFuZCBgYCd4dCdgYCBtb2Rlcy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCiAKIC4uIGNsYXNzOjogR3ppcEZpbGUoZmlsZW5hbWU9Tm9uZSwgbW9kZT1Ob25lLCBjb21wcmVzc2xldmVsPTksIGZpbGVvYmo9Tm9uZSwgbXRpbWU9Tm9uZSkKIApAQCAtMTUxLDYgKzE1Myw5IEBACiAgICAgICBUaGUgOm1ldGg6YH5pby5CdWZmZXJlZElPQmFzZS5yZWFkYCBtZXRob2Qgbm93IGFjY2VwdHMgYW4gYXJndW1lbnQgb2YKICAgICAgIGBgTm9uZWBgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGNvbXByZXNzKGRhdGEsIGNvbXByZXNzbGV2ZWw9OSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaGFzaGxpYi1ibGFrZTItdHJlZS5wbmcgYi9Eb2MvbGlicmFyeS9oYXNobGliLWJsYWtlMi10cmVlLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMTBkY2JhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jL2xpYnJhcnkvaGFzaGxpYi1ibGFrZTItdHJlZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaGFzaGxpYi1ibGFrZTIucnN0IGIvRG9jL2xpYnJhcnkvaGFzaGxpYi1ibGFrZTIucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzNmFhNGYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvbGlicmFyeS9oYXNobGliLWJsYWtlMi5yc3QKQEAgLTAsMCArMSw0NDQgQEAKKy4uIF9oYXNobGliLWJsYWtlMjoKKworOm1vZDpgaGFzaGxpYmAgLS0tIEJMQUtFMiBoYXNoIGZ1bmN0aW9ucworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisuLiBtb2R1bGU6OiBoYXNobGliCisgICA6c3lub3BzaXM6IEJMQUtFMiBoYXNoIGZ1bmN0aW9uIGZvciBQeXRob24KKy4uIHNlY3Rpb25hdXRob3I6OiBEbWl0cnkgQ2hlc3RueWtoCisKKy4uIGluZGV4OjoKKyAgIHNpbmdsZTogYmxha2UyYiwgYmxha2UycworCitCTEFLRTJfIGlzIGEgY3J5cHRvZ3JhcGhpYyBoYXNoIGZ1bmN0aW9uIGRlZmluZWQgaW4gUkZDLTc2OTNfIHRoYXQgY29tZXMgaW4gdHdvCitmbGF2b3JzOgorCisqICoqQkxBS0UyYioqLCBvcHRpbWl6ZWQgZm9yIDY0LWJpdCBwbGF0Zm9ybXMgYW5kIHByb2R1Y2VzIGRpZ2VzdHMgb2YgYW55IHNpemUKKyAgYmV0d2VlbiAxIGFuZCA2NCBieXRlcywKKworKiAqKkJMQUtFMnMqKiwgb3B0aW1pemVkIGZvciA4LSB0byAzMi1iaXQgcGxhdGZvcm1zIGFuZCBwcm9kdWNlcyBkaWdlc3RzIG9mIGFueQorICBzaXplIGJldHdlZW4gMSBhbmQgMzIgYnl0ZXMuCisKK0JMQUtFMiBzdXBwb3J0cyAqKmtleWVkIG1vZGUqKiAoYSBmYXN0ZXIgYW5kIHNpbXBsZXIgcmVwbGFjZW1lbnQgZm9yIEhNQUNfKSwKKyoqc2FsdGVkIGhhc2hpbmcqKiwgKipwZXJzb25hbGl6YXRpb24qKiwgYW5kICoqdHJlZSBoYXNoaW5nKiouCisKK0hhc2ggb2JqZWN0cyBmcm9tIHRoaXMgbW9kdWxlIGZvbGxvdyB0aGUgQVBJIG9mIHN0YW5kYXJkIGxpYnJhcnkncworOm1vZDpgaGFzaGxpYmAgb2JqZWN0cy4KKworCitNb2R1bGUKKz09PT09PQorCitDcmVhdGluZyBoYXNoIG9iamVjdHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitOZXcgaGFzaCBvYmplY3RzIGFyZSBjcmVhdGVkIGJ5IGNhbGxpbmcgY29uc3RydWN0b3IgZnVuY3Rpb25zOgorCisKKy4uIGZ1bmN0aW9uOjogYmxha2UyYihkYXRhPWInJywgZGlnZXN0X3NpemU9NjQsIGtleT1iJycsIHNhbHQ9YicnLCBcCisgICAgICAgICAgICAgICAgcGVyc29uPWInJywgZmFub3V0PTEsIGRlcHRoPTEsIGxlYWZfc2l6ZT0wLCBub2RlX29mZnNldD0wLCAgXAorICAgICAgICAgICAgICAgIG5vZGVfZGVwdGg9MCwgaW5uZXJfc2l6ZT0wLCBsYXN0X25vZGU9RmFsc2UpCisKKy4uIGZ1bmN0aW9uOjogYmxha2UycyhkYXRhPWInJywgZGlnZXN0X3NpemU9MzIsIGtleT1iJycsIHNhbHQ9YicnLCBcCisgICAgICAgICAgICAgICAgcGVyc29uPWInJywgZmFub3V0PTEsIGRlcHRoPTEsIGxlYWZfc2l6ZT0wLCBub2RlX29mZnNldD0wLCAgXAorICAgICAgICAgICAgICAgIG5vZGVfZGVwdGg9MCwgaW5uZXJfc2l6ZT0wLCBsYXN0X25vZGU9RmFsc2UpCisKKworVGhlc2UgZnVuY3Rpb25zIHJldHVybiB0aGUgY29ycmVzcG9uZGluZyBoYXNoIG9iamVjdHMgZm9yIGNhbGN1bGF0aW5nCitCTEFLRTJiIG9yIEJMQUtFMnMuIFRoZXkgb3B0aW9uYWxseSB0YWtlIHRoZXNlIGdlbmVyYWwgcGFyYW1ldGVyczoKKworKiAqZGF0YSo6IGluaXRpYWwgY2h1bmsgb2YgZGF0YSB0byBoYXNoLCB3aGljaCBtdXN0IGJlIGludGVycHJldGFibGUgYXMgYnVmZmVyCisgIG9mIGJ5dGVzLgorCisqICpkaWdlc3Rfc2l6ZSo6IHNpemUgb2Ygb3V0cHV0IGRpZ2VzdCBpbiBieXRlcy4KKworKiAqa2V5Kjoga2V5IGZvciBrZXllZCBoYXNoaW5nICh1cCB0byA2NCBieXRlcyBmb3IgQkxBS0UyYiwgdXAgdG8gMzIgYnl0ZXMgZm9yCisgIEJMQUtFMnMpLgorCisqICpzYWx0Kjogc2FsdCBmb3IgcmFuZG9taXplZCBoYXNoaW5nICh1cCB0byAxNiBieXRlcyBmb3IgQkxBS0UyYiwgdXAgdG8gOAorICBieXRlcyBmb3IgQkxBS0UycykuCisKKyogKnBlcnNvbio6IHBlcnNvbmFsaXphdGlvbiBzdHJpbmcgKHVwIHRvIDE2IGJ5dGVzIGZvciBCTEFLRTJiLCB1cCB0byA4IGJ5dGVzCisgIGZvciBCTEFLRTJzKS4KKworVGhlIGZvbGxvd2luZyB0YWJsZSBzaG93cyBsaW1pdHMgZm9yIGdlbmVyYWwgcGFyYW1ldGVycyAoaW4gYnl0ZXMpOgorCis9PT09PT09ID09PT09PT09PT09ID09PT09PT09ID09PT09PT09PSA9PT09PT09PT09PQorSGFzaCAgICBkaWdlc3Rfc2l6ZSBsZW4oa2V5KSBsZW4oc2FsdCkgbGVuKHBlcnNvbikKKz09PT09PT0gPT09PT09PT09PT0gPT09PT09PT0gPT09PT09PT09ID09PT09PT09PT09CitCTEFLRTJiICAgICA2NCAgICAgICAgIDY0ICAgICAgIDE2ICAgICAgICAxNgorQkxBS0UycyAgICAgMzIgICAgICAgICAzMiAgICAgICA4ICAgICAgICAgOAorPT09PT09PSA9PT09PT09PT09PSA9PT09PT09PSA9PT09PT09PT0gPT09PT09PT09PT0KKworLi4gbm90ZTo6CisKKyAgICBCTEFLRTIgc3BlY2lmaWNhdGlvbiBkZWZpbmVzIGNvbnN0YW50IGxlbmd0aHMgZm9yIHNhbHQgYW5kIHBlcnNvbmFsaXphdGlvbgorICAgIHBhcmFtZXRlcnMsIGhvd2V2ZXIsIGZvciBjb252ZW5pZW5jZSwgdGhpcyBpbXBsZW1lbnRhdGlvbiBhY2NlcHRzIGJ5dGUKKyAgICBzdHJpbmdzIG9mIGFueSBzaXplIHVwIHRvIHRoZSBzcGVjaWZpZWQgbGVuZ3RoLiBJZiB0aGUgbGVuZ3RoIG9mIHRoZQorICAgIHBhcmFtZXRlciBpcyBsZXNzIHRoYW4gc3BlY2lmaWVkLCBpdCBpcyBwYWRkZWQgd2l0aCB6ZXJvcywgdGh1cywgZm9yCisgICAgZXhhbXBsZSwgYGBiJ3NhbHQnYGAgYW5kIGBgYidzYWx0XHgwMCdgYCBpcyB0aGUgc2FtZSB2YWx1ZS4gKFRoaXMgaXMgbm90CisgICAgdGhlIGNhc2UgZm9yICprZXkqLikKKworVGhlc2Ugc2l6ZXMgYXJlIGF2YWlsYWJsZSBhcyBtb2R1bGUgYGNvbnN0YW50c2BfIGRlc2NyaWJlZCBiZWxvdy4KKworQ29uc3RydWN0b3IgZnVuY3Rpb25zIGFsc28gYWNjZXB0IHRoZSBmb2xsb3dpbmcgdHJlZSBoYXNoaW5nIHBhcmFtZXRlcnM6CisKKyogKmZhbm91dCo6IGZhbm91dCAoMCB0byAyNTUsIDAgaWYgdW5saW1pdGVkLCAxIGluIHNlcXVlbnRpYWwgbW9kZSkuCisKKyogKmRlcHRoKjogbWF4aW1hbCBkZXB0aCBvZiB0cmVlICgxIHRvIDI1NSwgMjU1IGlmIHVubGltaXRlZCwgMSBpbgorICBzZXF1ZW50aWFsIG1vZGUpLgorCisqICpsZWFmX3NpemUqOiBtYXhpbWFsIGJ5dGUgbGVuZ3RoIG9mIGxlYWYgKDAgdG8gMioqMzItMSwgMCBpZiB1bmxpbWl0ZWQgb3IgaW4KKyAgc2VxdWVudGlhbCBtb2RlKS4KKworKiAqbm9kZV9vZmZzZXQqOiBub2RlIG9mZnNldCAoMCB0byAyKio2NC0xIGZvciBCTEFLRTJiLCAwIHRvIDIqKjQ4LTEgZm9yCisgIEJMQUtFMnMsIDAgZm9yIHRoZSBmaXJzdCwgbGVmdG1vc3QsIGxlYWYsIG9yIGluIHNlcXVlbnRpYWwgbW9kZSkuCisKKyogKm5vZGVfZGVwdGgqOiBub2RlIGRlcHRoICgwIHRvIDI1NSwgMCBmb3IgbGVhdmVzLCBvciBpbiBzZXF1ZW50aWFsIG1vZGUpLgorCisqICppbm5lcl9zaXplKjogaW5uZXIgZGlnZXN0IHNpemUgKDAgdG8gNjQgZm9yIEJMQUtFMmIsIDAgdG8gMzIgZm9yCisgIEJMQUtFMnMsIDAgaW4gc2VxdWVudGlhbCBtb2RlKS4KKworKiAqbGFzdF9ub2RlKjogYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHByb2Nlc3NlZCBub2RlIGlzIHRoZSBsYXN0CisgIG9uZSAoYEZhbHNlYCBmb3Igc2VxdWVudGlhbCBtb2RlKS4KKworLi4gZmlndXJlOjogaGFzaGxpYi1ibGFrZTItdHJlZS5wbmcKKyAgIDphbHQ6IEV4cGxhbmF0aW9uIG9mIHRyZWUgbW9kZSBwYXJhbWV0ZXJzLgorCitTZWUgc2VjdGlvbiAyLjEwIGluIGBCTEFLRTIgc3BlY2lmaWNhdGlvbgorPGh0dHBzOi8vYmxha2UyLm5ldC9ibGFrZTJfMjAxMzAxMjkucGRmPmBfIGZvciBjb21wcmVoZW5zaXZlIHJldmlldyBvZiB0cmVlCitoYXNoaW5nLgorCisKK0NvbnN0YW50cworLS0tLS0tLS0tCisKKy4uIGRhdGE6OiBibGFrZTJiLlNBTFRfU0laRQorLi4gZGF0YTo6IGJsYWtlMnMuU0FMVF9TSVpFCisKK1NhbHQgbGVuZ3RoIChtYXhpbXVtIGxlbmd0aCBhY2NlcHRlZCBieSBjb25zdHJ1Y3RvcnMpLgorCisKKy4uIGRhdGE6OiBibGFrZTJiLlBFUlNPTl9TSVpFCisuLiBkYXRhOjogYmxha2Uycy5QRVJTT05fU0laRQorCitQZXJzb25hbGl6YXRpb24gc3RyaW5nIGxlbmd0aCAobWF4aW11bSBsZW5ndGggYWNjZXB0ZWQgYnkgY29uc3RydWN0b3JzKS4KKworCisuLiBkYXRhOjogYmxha2UyYi5NQVhfS0VZX1NJWkUKKy4uIGRhdGE6OiBibGFrZTJzLk1BWF9LRVlfU0laRQorCitNYXhpbXVtIGtleSBzaXplLgorCisKKy4uIGRhdGE6OiBibGFrZTJiLk1BWF9ESUdFU1RfU0laRQorLi4gZGF0YTo6IGJsYWtlMnMuTUFYX0RJR0VTVF9TSVpFCisKK01heGltdW0gZGlnZXN0IHNpemUgdGhhdCB0aGUgaGFzaCBmdW5jdGlvbiBjYW4gb3V0cHV0LgorCisKK0V4YW1wbGVzCis9PT09PT09PQorCitTaW1wbGUgaGFzaGluZworLS0tLS0tLS0tLS0tLS0KKworVG8gY2FsY3VsYXRlIGhhc2ggb2Ygc29tZSBkYXRhLCB5b3Ugc2hvdWxkIGZpcnN0IGNvbnN0cnVjdCBhIGhhc2ggb2JqZWN0IGJ5CitjYWxsaW5nIHRoZSBhcHByb3ByaWF0ZSBjb25zdHJ1Y3RvciBmdW5jdGlvbiAoOmZ1bmM6YGJsYWtlMmJgIG9yCis6ZnVuYzpgYmxha2Uyc2ApLCB0aGVuIHVwZGF0ZSBpdCB3aXRoIHRoZSBkYXRhIGJ5IGNhbGxpbmcgOm1ldGg6YHVwZGF0ZWAgb24gdGhlCitvYmplY3QsIGFuZCwgZmluYWxseSwgZ2V0IHRoZSBkaWdlc3Qgb3V0IG9mIHRoZSBvYmplY3QgYnkgY2FsbGluZworOm1ldGg6YGRpZ2VzdGAgKG9yIDptZXRoOmBoZXhkaWdlc3RgIGZvciBoZXgtZW5jb2RlZCBzdHJpbmcpLgorCisgICAgPj4+IGZyb20gaGFzaGxpYiBpbXBvcnQgYmxha2UyYgorICAgID4+PiBoID0gYmxha2UyYigpCisgICAgPj4+IGgudXBkYXRlKGInSGVsbG8gd29ybGQnKQorICAgID4+PiBoLmhleGRpZ2VzdCgpCisgICAgJzZmZjg0M2JhNjg1ODQyYWE4MjAzMWQzZjUzYzQ4YjY2MzI2ZGY3NjM5YTYzZDEyODk3NGM1YzE0ZjMxYTBmMzMzNDNhOGM2NTU1MTEzNGVkMWFlMGYyYjBkZDJiYjQ5NWRjODEwMzllM2VlYjBhYTFiYjAzODhiYmVhYzI5MTgzJworCisKK0FzIGEgc2hvcnRjdXQsIHlvdSBjYW4gcGFzcyB0aGUgZmlyc3QgY2h1bmsgb2YgZGF0YSB0byB1cGRhdGUgZGlyZWN0bHkgdG8gdGhlCitjb25zdHJ1Y3RvciBhcyB0aGUgZmlyc3QgYXJndW1lbnQgKG9yIGFzICpkYXRhKiBrZXl3b3JkIGFyZ3VtZW50KToKKworICAgID4+PiBmcm9tIGhhc2hsaWIgaW1wb3J0IGJsYWtlMmIKKyAgICA+Pj4gYmxha2UyYihiJ0hlbGxvIHdvcmxkJykuaGV4ZGlnZXN0KCkKKyAgICAnNmZmODQzYmE2ODU4NDJhYTgyMDMxZDNmNTNjNDhiNjYzMjZkZjc2MzlhNjNkMTI4OTc0YzVjMTRmMzFhMGYzMzM0M2E4YzY1NTUxMTM0ZWQxYWUwZjJiMGRkMmJiNDk1ZGM4MTAzOWUzZWViMGFhMWJiMDM4OGJiZWFjMjkxODMnCisKK1lvdSBjYW4gY2FsbCA6bWV0aDpgaGFzaC51cGRhdGVgIGFzIG1hbnkgdGltZXMgYXMgeW91IG5lZWQgdG8gaXRlcmF0aXZlbHkKK3VwZGF0ZSB0aGUgaGFzaDoKKworICAgID4+PiBmcm9tIGhhc2hsaWIgaW1wb3J0IGJsYWtlMmIKKyAgICA+Pj4gaXRlbXMgPSBbYidIZWxsbycsIGInICcsIGInd29ybGQnXQorICAgID4+PiBoID0gYmxha2UyYigpCisgICAgPj4+IGZvciBpdGVtIGluIGl0ZW1zOgorICAgIC4uLiAgICAgaC51cGRhdGUoaXRlbSkKKyAgICA+Pj4gaC5oZXhkaWdlc3QoKQorICAgICc2ZmY4NDNiYTY4NTg0MmFhODIwMzFkM2Y1M2M0OGI2NjMyNmRmNzYzOWE2M2QxMjg5NzRjNWMxNGYzMWEwZjMzMzQzYThjNjU1NTExMzRlZDFhZTBmMmIwZGQyYmI0OTVkYzgxMDM5ZTNlZWIwYWExYmIwMzg4YmJlYWMyOTE4MycKKworCitVc2luZyBkaWZmZXJlbnQgZGlnZXN0IHNpemVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0JMQUtFMiBoYXMgY29uZmlndXJhYmxlIHNpemUgb2YgZGlnZXN0cyB1cCB0byA2NCBieXRlcyBmb3IgQkxBS0UyYiBhbmQgdXAgdG8gMzIKK2J5dGVzIGZvciBCTEFLRTJzLiBGb3IgZXhhbXBsZSwgdG8gcmVwbGFjZSBTSEEtMSB3aXRoIEJMQUtFMmIgd2l0aG91dCBjaGFuZ2luZwordGhlIHNpemUgb2Ygb3V0cHV0LCB3ZSBjYW4gdGVsbCBCTEFLRTJiIHRvIHByb2R1Y2UgMjAtYnl0ZSBkaWdlc3RzOgorCisgICAgPj4+IGZyb20gaGFzaGxpYiBpbXBvcnQgYmxha2UyYgorICAgID4+PiBoID0gYmxha2UyYihkaWdlc3Rfc2l6ZT0yMCkKKyAgICA+Pj4gaC51cGRhdGUoYidSZXBsYWNpbmcgU0hBMSB3aXRoIHRoZSBtb3JlIHNlY3VyZSBmdW5jdGlvbicpCisgICAgPj4+IGguaGV4ZGlnZXN0KCkKKyAgICAnZDI0ZjI2Y2Y4ZGU2NjQ3MmQ1OGQ0ZTFiMTc3NGI0YzkxNThiMWY0YycKKyAgICA+Pj4gaC5kaWdlc3Rfc2l6ZQorICAgIDIwCisgICAgPj4+IGxlbihoLmRpZ2VzdCgpKQorICAgIDIwCisKK0hhc2ggb2JqZWN0cyB3aXRoIGRpZmZlcmVudCBkaWdlc3Qgc2l6ZXMgaGF2ZSBjb21wbGV0ZWx5IGRpZmZlcmVudCBvdXRwdXRzCisoc2hvcnRlciBoYXNoZXMgYXJlICpub3QqIHByZWZpeGVzIG9mIGxvbmdlciBoYXNoZXMpOyBCTEFLRTJiIGFuZCBCTEFLRTJzCitwcm9kdWNlIGRpZmZlcmVudCBvdXRwdXRzIGV2ZW4gaWYgdGhlIG91dHB1dCBsZW5ndGggaXMgdGhlIHNhbWU6CisKKyAgICA+Pj4gZnJvbSBoYXNobGliIGltcG9ydCBibGFrZTJiLCBibGFrZTJzCisgICAgPj4+IGJsYWtlMmIoZGlnZXN0X3NpemU9MTApLmhleGRpZ2VzdCgpCisgICAgJzZmYTFkOGZjZmQ3MTkwNDZkNzYyJworICAgID4+PiBibGFrZTJiKGRpZ2VzdF9zaXplPTExKS5oZXhkaWdlc3QoKQorICAgICdlYjZlYzE1ZGFmOTU0NjI1NGYwODA5JworICAgID4+PiBibGFrZTJzKGRpZ2VzdF9zaXplPTEwKS5oZXhkaWdlc3QoKQorICAgICcxYmYyMWE5OGM3OGExYzM3NmFlOScKKyAgICA+Pj4gYmxha2UycyhkaWdlc3Rfc2l6ZT0xMSkuaGV4ZGlnZXN0KCkKKyAgICAnNTY3MDA0YmY5NmU0YTI1NzczZWJmNCcKKworCitLZXllZCBoYXNoaW5nCistLS0tLS0tLS0tLS0tCisKK0tleWVkIGhhc2hpbmcgY2FuIGJlIHVzZWQgZm9yIGF1dGhlbnRpY2F0aW9uIGFzIGEgZmFzdGVyIGFuZCBzaW1wbGVyCityZXBsYWNlbWVudCBmb3IgYEhhc2gtYmFzZWQgbWVzc2FnZSBhdXRoZW50aWNhdGlvbiBjb2RlCis8aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IYXNoLWJhc2VkX21lc3NhZ2VfYXV0aGVudGljYXRpb25fY29kZT5gXyAoSE1BQykuCitCTEFLRTIgY2FuIGJlIHNlY3VyZWx5IHVzZWQgaW4gcHJlZml4LU1BQyBtb2RlIHRoYW5rcyB0byB0aGUKK2luZGlmZmVyZW50aWFiaWxpdHkgcHJvcGVydHkgaW5oZXJpdGVkIGZyb20gQkxBS0UuCisKK1RoaXMgZXhhbXBsZSBzaG93cyBob3cgdG8gZ2V0IGEgKGhleC1lbmNvZGVkKSAxMjgtYml0IGF1dGhlbnRpY2F0aW9uIGNvZGUgZm9yCittZXNzYWdlIGBgYidtZXNzYWdlIGRhdGEnYGAgd2l0aCBrZXkgYGBiJ3BzZXVkb3JhbmRvbSBrZXknYGA6OgorCisgICAgPj4+IGZyb20gaGFzaGxpYiBpbXBvcnQgYmxha2UyYgorICAgID4+PiBoID0gYmxha2UyYihrZXk9Yidwc2V1ZG9yYW5kb20ga2V5JywgZGlnZXN0X3NpemU9MTYpCisgICAgPj4+IGgudXBkYXRlKGInbWVzc2FnZSBkYXRhJykKKyAgICA+Pj4gaC5oZXhkaWdlc3QoKQorICAgICczZDM2M2ZmNzQwMWUwMjAyNmY0YTQ2ODdkNDg2M2NlZCcKKworCitBcyBhIHByYWN0aWNhbCBleGFtcGxlLCBhIHdlYiBhcHBsaWNhdGlvbiBjYW4gc3ltbWV0cmljYWxseSBzaWduIGNvb2tpZXMgc2VudAordG8gdXNlcnMgYW5kIGxhdGVyIHZlcmlmeSB0aGVtIHRvIG1ha2Ugc3VyZSB0aGV5IHdlcmVuJ3QgdGFtcGVyZWQgd2l0aDo6CisKKyAgICA+Pj4gZnJvbSBoYXNobGliIGltcG9ydCBibGFrZTJiCisgICAgPj4+IGZyb20gaG1hYyBpbXBvcnQgY29tcGFyZV9kaWdlc3QKKyAgICA+Pj4KKyAgICA+Pj4gU0VDUkVUX0tFWSA9IGIncHNldWRvcmFuZG9tbHkgZ2VuZXJhdGVkIHNlcnZlciBzZWNyZXQga2V5JworICAgID4+PiBBVVRIX1NJWkUgPSAxNgorICAgID4+PgorICAgID4+PiBkZWYgc2lnbihjb29raWUpOgorICAgIC4uLiAgICAgaCA9IGJsYWtlMmIoZGF0YT1jb29raWUsIGRpZ2VzdF9zaXplPUFVVEhfU0laRSwga2V5PVNFQ1JFVF9LRVkpCisgICAgLi4uICAgICByZXR1cm4gaC5oZXhkaWdlc3QoKQorICAgID4+PgorICAgID4+PiBjb29raWUgPSBiJ3VzZXI6dmF0cm9nYXNhYycKKyAgICA+Pj4gc2lnID0gc2lnbihjb29raWUpCisgICAgPj4+IHByaW50KCJ7MH0sezF9Ii5mb3JtYXQoY29va2llLmRlY29kZSgndXRmLTgnKSwgc2lnKSkKKyAgICB1c2VyOnZhdHJvZ2FzYWMsMzQ5Y2Y5MDQ1MzM3NjdlZDJkNzU1Mjc5YThkZjg0ZDAKKyAgICA+Pj4gY29tcGFyZV9kaWdlc3QoY29va2llLCBzaWcpCisgICAgVHJ1ZQorICAgID4+PiBjb21wYXJlX2RpZ2VzdChiJ3VzZXI6cG9saWNhamFjJywgc2lnKQorICAgIEZhbHNlCisgICAgPj4+IGNvbXBhcmVfZGlnZXN0eShjb29raWUsICcwMTAyMDMwNDA1MDYwNzA4MDkwYTBiMGMwZDBlMGYwMCcpCisgICAgRmFsc2UKKworRXZlbiB0aG91Z2ggdGhlcmUncyBhIG5hdGl2ZSBrZXllZCBoYXNoaW5nIG1vZGUsIEJMQUtFMiBjYW4sIG9mIGNvdXJzZSwgYmUgdXNlZAoraW4gSE1BQyBjb25zdHJ1Y3Rpb24gd2l0aCA6bW9kOmBobWFjYCBtb2R1bGU6OgorCisgICAgPj4+IGltcG9ydCBobWFjLCBoYXNobGliCisgICAgPj4+IG0gPSBobWFjLm5ldyhiJ3NlY3JldCBrZXknLCBkaWdlc3Rtb2Q9aGFzaGxpYi5ibGFrZTJzKQorICAgID4+PiBtLnVwZGF0ZShiJ21lc3NhZ2UnKQorICAgID4+PiBtLmhleGRpZ2VzdCgpCisgICAgJ2UzYzgxMDI4NjhkMjhiNWZmODVmYzM1ZGRhMDczMjk5NzBkMWEwMWUyNzNjMzc0ODEzMjZmZTBjODYxYzgxNDInCisKKworUmFuZG9taXplZCBoYXNoaW5nCistLS0tLS0tLS0tLS0tLS0tLS0KKworQnkgc2V0dGluZyAqc2FsdCogcGFyYW1ldGVyIHVzZXJzIGNhbiBpbnRyb2R1Y2UgcmFuZG9taXphdGlvbiB0byB0aGUgaGFzaAorZnVuY3Rpb24uIFJhbmRvbWl6ZWQgaGFzaGluZyBpcyB1c2VmdWwgZm9yIHByb3RlY3RpbmcgYWdhaW5zdCBjb2xsaXNpb24gYXR0YWNrcworb24gdGhlIGhhc2ggZnVuY3Rpb24gdXNlZCBpbiBkaWdpdGFsIHNpZ25hdHVyZXMuCisKKyAgICBSYW5kb21pemVkIGhhc2hpbmcgaXMgZGVzaWduZWQgZm9yIHNpdHVhdGlvbnMgd2hlcmUgb25lIHBhcnR5LCB0aGUgbWVzc2FnZQorICAgIHByZXBhcmVyLCBnZW5lcmF0ZXMgYWxsIG9yIHBhcnQgb2YgYSBtZXNzYWdlIHRvIGJlIHNpZ25lZCBieSBhIHNlY29uZAorICAgIHBhcnR5LCB0aGUgbWVzc2FnZSBzaWduZXIuIElmIHRoZSBtZXNzYWdlIHByZXBhcmVyIGlzIGFibGUgdG8gZmluZAorICAgIGNyeXB0b2dyYXBoaWMgaGFzaCBmdW5jdGlvbiBjb2xsaXNpb25zIChpLmUuLCB0d28gbWVzc2FnZXMgcHJvZHVjaW5nIHRoZQorICAgIHNhbWUgaGFzaCB2YWx1ZSksIHRoZW4gc2hlIG1pZ2h0IHByZXBhcmUgbWVhbmluZ2Z1bCB2ZXJzaW9ucyBvZiB0aGUgbWVzc2FnZQorICAgIHRoYXQgd291bGQgcHJvZHVjZSB0aGUgc2FtZSBoYXNoIHZhbHVlIGFuZCBkaWdpdGFsIHNpZ25hdHVyZSwgYnV0IHdpdGgKKyAgICBkaWZmZXJlbnQgcmVzdWx0cyAoZS5nLiwgdHJhbnNmZXJyaW5nICQxLDAwMCwwMDAgdG8gYW4gYWNjb3VudCwgcmF0aGVyIHRoYW4KKyAgICAkMTApLiBDcnlwdG9ncmFwaGljIGhhc2ggZnVuY3Rpb25zIGhhdmUgYmVlbiBkZXNpZ25lZCB3aXRoIGNvbGxpc2lvbgorICAgIHJlc2lzdGFuY2UgYXMgYSBtYWpvciBnb2FsLCBidXQgdGhlIGN1cnJlbnQgY29uY2VudHJhdGlvbiBvbiBhdHRhY2tpbmcKKyAgICBjcnlwdG9ncmFwaGljIGhhc2ggZnVuY3Rpb25zIG1heSByZXN1bHQgaW4gYSBnaXZlbiBjcnlwdG9ncmFwaGljIGhhc2gKKyAgICBmdW5jdGlvbiBwcm92aWRpbmcgbGVzcyBjb2xsaXNpb24gcmVzaXN0YW5jZSB0aGFuIGV4cGVjdGVkLiBSYW5kb21pemVkCisgICAgaGFzaGluZyBvZmZlcnMgdGhlIHNpZ25lciBhZGRpdGlvbmFsIHByb3RlY3Rpb24gYnkgcmVkdWNpbmcgdGhlIGxpa2VsaWhvb2QKKyAgICB0aGF0IGEgcHJlcGFyZXIgY2FuIGdlbmVyYXRlIHR3byBvciBtb3JlIG1lc3NhZ2VzIHRoYXQgdWx0aW1hdGVseSB5aWVsZCB0aGUKKyAgICBzYW1lIGhhc2ggdmFsdWUgZHVyaW5nIHRoZSBkaWdpdGFsIHNpZ25hdHVyZSBnZW5lcmF0aW9uIHByb2Nlc3MgLS0tIGV2ZW4gaWYKKyAgICBpdCBpcyBwcmFjdGljYWwgdG8gZmluZCBjb2xsaXNpb25zIGZvciB0aGUgaGFzaCBmdW5jdGlvbi4gSG93ZXZlciwgdGhlIHVzZQorICAgIG9mIHJhbmRvbWl6ZWQgaGFzaGluZyBtYXkgcmVkdWNlIHRoZSBhbW91bnQgb2Ygc2VjdXJpdHkgcHJvdmlkZWQgYnkgYQorICAgIGRpZ2l0YWwgc2lnbmF0dXJlIHdoZW4gYWxsIHBvcnRpb25zIG9mIHRoZSBtZXNzYWdlIGFyZSBwcmVwYXJlZAorICAgIGJ5IHRoZSBzaWduZXIuCisKKyAgICAoYE5JU1QgU1AtODAwLTEwNiAiUmFuZG9taXplZCBIYXNoaW5nIGZvciBEaWdpdGFsIFNpZ25hdHVyZXMiCisgICAgPGh0dHA6Ly9jc3JjLm5pc3QuZ292L3B1YmxpY2F0aW9ucy9uaXN0cHVicy84MDAtMTA2L05JU1QtU1AtODAwLTEwNi5wZGY+YF8pCisKK0luIEJMQUtFMiB0aGUgc2FsdCBpcyBwcm9jZXNzZWQgYXMgYSBvbmUtdGltZSBpbnB1dCB0byB0aGUgaGFzaCBmdW5jdGlvbiBkdXJpbmcKK2luaXRpYWxpemF0aW9uLCByYXRoZXIgdGhhbiBhcyBhbiBpbnB1dCB0byBlYWNoIGNvbXByZXNzaW9uIGZ1bmN0aW9uLgorCisuLiB3YXJuaW5nOjoKKworICAgICpTYWx0ZWQgaGFzaGluZyogKG9yIGp1c3QgaGFzaGluZykgd2l0aCBCTEFLRTIgb3IgYW55IG90aGVyIGdlbmVyYWwtcHVycG9zZQorICAgIGNyeXB0b2dyYXBoaWMgaGFzaCBmdW5jdGlvbiwgc3VjaCBhcyBTSEEtMjU2LCBpcyBub3Qgc3VpdGFibGUgZm9yIGhhc2hpbmcKKyAgICBwYXNzd29yZHMuICBTZWUgYEJMQUtFMiBGQVEgPGh0dHBzOi8vYmxha2UyLm5ldC8jcWE+YF8gZm9yIG1vcmUKKyAgICBpbmZvcm1hdGlvbi4KKy4uCisKKyAgICA+Pj4gaW1wb3J0IG9zCisgICAgPj4+IGZyb20gaGFzaGxpYiBpbXBvcnQgYmxha2UyYgorICAgID4+PiBtc2cgPSBiJ3NvbWUgbWVzc2FnZScKKyAgICA+Pj4gIyBDYWxjdWxhdGUgdGhlIGZpcnN0IGhhc2ggd2l0aCBhIHJhbmRvbSBzYWx0LgorICAgID4+PiBzYWx0MSA9IG9zLnVyYW5kb20oYmxha2UyYi5TQUxUX1NJWkUpCisgICAgPj4+IGgxID0gYmxha2UyYihzYWx0PXNhbHQxKQorICAgID4+PiBoMS51cGRhdGUobXNnKQorICAgID4+PiAjIENhbGN1bGF0ZSB0aGUgc2Vjb25kIGhhc2ggd2l0aCBhIGRpZmZlcmVudCByYW5kb20gc2FsdC4KKyAgICA+Pj4gc2FsdDIgPSBvcy51cmFuZG9tKGJsYWtlMmIuU0FMVF9TSVpFKQorICAgID4+PiBoMiA9IGJsYWtlMmIoc2FsdD1zYWx0MikKKyAgICA+Pj4gaDIudXBkYXRlKG1zZykKKyAgICA+Pj4gIyBUaGUgZGlnZXN0cyBhcmUgZGlmZmVyZW50LgorICAgID4+PiBoMS5kaWdlc3QoKSAhPSBoMi5kaWdlc3QoKQorICAgIFRydWUKKworCitQZXJzb25hbGl6YXRpb24KKy0tLS0tLS0tLS0tLS0tLQorCitTb21ldGltZXMgaXQgaXMgdXNlZnVsIHRvIGZvcmNlIGhhc2ggZnVuY3Rpb24gdG8gcHJvZHVjZSBkaWZmZXJlbnQgZGlnZXN0cyBmb3IKK3RoZSBzYW1lIGlucHV0IGZvciBkaWZmZXJlbnQgcHVycG9zZXMuIFF1b3RpbmcgdGhlIGF1dGhvcnMgb2YgdGhlIFNrZWluIGhhc2gKK2Z1bmN0aW9uOgorCisgICAgV2UgcmVjb21tZW5kIHRoYXQgYWxsIGFwcGxpY2F0aW9uIGRlc2lnbmVycyBzZXJpb3VzbHkgY29uc2lkZXIgZG9pbmcgdGhpczsKKyAgICB3ZSBoYXZlIHNlZW4gbWFueSBwcm90b2NvbHMgd2hlcmUgYSBoYXNoIHRoYXQgaXMgY29tcHV0ZWQgaW4gb25lIHBhcnQgb2YKKyAgICB0aGUgcHJvdG9jb2wgY2FuIGJlIHVzZWQgaW4gYW4gZW50aXJlbHkgZGlmZmVyZW50IHBhcnQgYmVjYXVzZSB0d28gaGFzaAorICAgIGNvbXB1dGF0aW9ucyB3ZXJlIGRvbmUgb24gc2ltaWxhciBvciByZWxhdGVkIGRhdGEsIGFuZCB0aGUgYXR0YWNrZXIgY2FuCisgICAgZm9yY2UgdGhlIGFwcGxpY2F0aW9uIHRvIG1ha2UgdGhlIGhhc2ggaW5wdXRzIHRoZSBzYW1lLiBQZXJzb25hbGl6aW5nIGVhY2gKKyAgICBoYXNoIGZ1bmN0aW9uIHVzZWQgaW4gdGhlIHByb3RvY29sIHN1bW1hcmlseSBzdG9wcyB0aGlzIHR5cGUgb2YgYXR0YWNrLgorCisgICAgKGBUaGUgU2tlaW4gSGFzaCBGdW5jdGlvbiBGYW1pbHkKKyAgICA8aHR0cDovL3d3dy5za2Vpbi1oYXNoLmluZm8vc2l0ZXMvZGVmYXVsdC9maWxlcy9za2VpbjEuMy5wZGY+YF8sCisgICAgcC4gMjEpCisKK0JMQUtFMiBjYW4gYmUgcGVyc29uYWxpemVkIGJ5IHBhc3NpbmcgYnl0ZXMgdG8gdGhlICpwZXJzb24qIGFyZ3VtZW50OjoKKworICAgID4+PiBmcm9tIGhhc2hsaWIgaW1wb3J0IGJsYWtlMmIKKyAgICA+Pj4gRklMRVNfSEFTSF9QRVJTT04gPSBiJ015QXBwIEZpbGVzIEhhc2gnCisgICAgPj4+IEJMT0NLX0hBU0hfUEVSU09OID0gYidNeUFwcCBCbG9jayBIYXNoJworICAgID4+PiBoID0gYmxha2UyYihkaWdlc3Rfc2l6ZT0zMiwgcGVyc29uPUZJTEVTX0hBU0hfUEVSU09OKQorICAgID4+PiBoLnVwZGF0ZShiJ3RoZSBzYW1lIGNvbnRlbnQnKQorICAgID4+PiBoLmhleGRpZ2VzdCgpCisgICAgJzIwZDljZDAyNGQ0ZmIwODZhYWU4MTlhMTQzMmRkMjQ2NmRlMTI5NDc4MzFiNzVjNWEzMGNmMjY3NjA5NWQzYjQnCisgICAgPj4+IGggPSBibGFrZTJiKGRpZ2VzdF9zaXplPTMyLCBwZXJzb249QkxPQ0tfSEFTSF9QRVJTT04pCisgICAgPj4+IGgudXBkYXRlKGIndGhlIHNhbWUgY29udGVudCcpCisgICAgPj4+IGguaGV4ZGlnZXN0KCkKKyAgICAnY2Y2OGZiNTc2MWI5YzQ0ZTc4NzhiZmIyYzRjOWFlYTUyMjY0YTgwYjc1MDA1ZTY1NjE5Nzc4ZGU1OWYzODNhMycKKworUGVyc29uYWxpemF0aW9uIHRvZ2V0aGVyIHdpdGggdGhlIGtleWVkIG1vZGUgY2FuIGFsc28gYmUgdXNlZCB0byBkZXJpdmUgZGlmZmVyZW50CitrZXlzIGZyb20gYSBzaW5nbGUgb25lLgorCisgICAgPj4+IGZyb20gaGFzaGxpYiBpbXBvcnQgYmxha2UycworICAgID4+PiBmcm9tIGJhc2U2NCBpbXBvcnQgYjY0ZGVjb2RlLCBiNjRlbmNvZGUKKyAgICA+Pj4gb3JpZ19rZXkgPSBiNjRkZWNvZGUoYidSbTVFUEphaTcycWNLM1JHQnBXM3ZQTmZaeTVPWm90aFkra0hZNmgyMUtNPScpCisgICAgPj4+IGVuY19rZXkgPSBibGFrZTJzKGtleT1vcmlnX2tleSwgcGVyc29uPWIna0VuY3J5cHQnKS5kaWdlc3QoKQorICAgID4+PiBtYWNfa2V5ID0gYmxha2UycyhrZXk9b3JpZ19rZXksIHBlcnNvbj1iJ2tNQUMnKS5kaWdlc3QoKQorICAgID4+PiBwcmludChiNjRlbmNvZGUoZW5jX2tleSkuZGVjb2RlKCd1dGYtOCcpKQorICAgIHJiUGIxNVMvWjl0K2FnZmZubzV3dWhCNzdWYlJpNkY5SXYycUl4VTdXSHc9CisgICAgPj4+IHByaW50KGI2NGVuY29kZShtYWNfa2V5KS5kZWNvZGUoJ3V0Zi04JykpCisgICAgRzlHdEhGRTFZbHVYWTF6V1BsWWsxZS9uV2Z1MFdTRWIwS1JjamhEZVAvbz0KKworVHJlZSBtb2RlCistLS0tLS0tLS0KKworSGVyZSdzIGFuIGV4YW1wbGUgb2YgaGFzaGluZyBhIG1pbmltYWwgdHJlZSB3aXRoIHR3byBsZWFmIG5vZGVzOjoKKworICAgICAgIDEwCisgICAgICAvICBcCisgICAgIDAwICAwMQorCitUaGlzIGV4YW1wbGUgdXNlcyA2NC1ieXRlIGludGVybmFsIGRpZ2VzdHMsIGFuZCByZXR1cm5zIHRoZSAzMi1ieXRlIGZpbmFsCitkaWdlc3Q6OgorCisgICAgPj4+IGZyb20gaGFzaGxpYiBpbXBvcnQgYmxha2UyYgorICAgID4+PgorICAgID4+PiBGQU5PVVQgPSAyCisgICAgPj4+IERFUFRIID0gMgorICAgID4+PiBMRUFGX1NJWkUgPSA0MDk2CisgICAgPj4+IElOTkVSX1NJWkUgPSA2NAorICAgID4+PgorICAgID4+PiBidWYgPSBieXRlYXJyYXkoNjAwMCkKKyAgICA+Pj4KKyAgICA+Pj4gIyBMZWZ0IGxlYWYKKyAgICAuLi4gaDAwID0gYmxha2UyYihidWZbMDpMRUFGX1NJWkVdLCBmYW5vdXQ9RkFOT1VULCBkZXB0aD1ERVBUSCwKKyAgICAuLi4gICAgICAgICAgICAgICBsZWFmX3NpemU9TEVBRl9TSVpFLCBpbm5lcl9zaXplPUlOTkVSX1NJWkUsCisgICAgLi4uICAgICAgICAgICAgICAgbm9kZV9vZmZzZXQ9MCwgbm9kZV9kZXB0aD0wLCBsYXN0X25vZGU9RmFsc2UpCisgICAgPj4+ICMgUmlnaHQgbGVhZgorICAgIC4uLiBoMDEgPSBibGFrZTJiKGJ1ZltMRUFGX1NJWkU6XSwgZmFub3V0PUZBTk9VVCwgZGVwdGg9REVQVEgsCisgICAgLi4uICAgICAgICAgICAgICAgbGVhZl9zaXplPUxFQUZfU0laRSwgaW5uZXJfc2l6ZT1JTk5FUl9TSVpFLAorICAgIC4uLiAgICAgICAgICAgICAgIG5vZGVfb2Zmc2V0PTEsIG5vZGVfZGVwdGg9MCwgbGFzdF9ub2RlPVRydWUpCisgICAgPj4+ICMgUm9vdCBub2RlCisgICAgLi4uIGgxMCA9IGJsYWtlMmIoZGlnZXN0X3NpemU9MzIsIGZhbm91dD1GQU5PVVQsIGRlcHRoPURFUFRILAorICAgIC4uLiAgICAgICAgICAgICAgIGxlYWZfc2l6ZT1MRUFGX1NJWkUsIGlubmVyX3NpemU9SU5ORVJfU0laRSwKKyAgICAuLi4gICAgICAgICAgICAgICBub2RlX29mZnNldD0wLCBub2RlX2RlcHRoPTEsIGxhc3Rfbm9kZT1UcnVlKQorICAgID4+PiBoMTAudXBkYXRlKGgwMC5kaWdlc3QoKSkKKyAgICA+Pj4gaDEwLnVwZGF0ZShoMDEuZGlnZXN0KCkpCisgICAgPj4+IGgxMC5oZXhkaWdlc3QoKQorICAgICczYWQyYTliMzdjNjA3MGUzNzRjN2E4YzUwOGZlMjBjYTg2YjZlZDU0ZTI4NmU5M2EwMzE4ZTk1ZTg4MWRiNWFhJworCitDcmVkaXRzCis9PT09PT09CisKK0JMQUtFMl8gd2FzIGRlc2lnbmVkIGJ5ICpKZWFuLVBoaWxpcHBlIEF1bWFzc29uKiwgKlNhbXVlbCBOZXZlcyosICpab29rbworV2lsY294LU8nSGVhcm4qLCBhbmQgKkNocmlzdGlhbiBXaW5uZXJsZWluKiBiYXNlZCBvbiBTSEEtM18gZmluYWxpc3QgQkxBS0VfCitjcmVhdGVkIGJ5ICpKZWFuLVBoaWxpcHBlIEF1bWFzc29uKiwgKkx1Y2EgSGVuemVuKiwgKldpbGxpIE1laWVyKiwgYW5kCisqUmFwaGFlbCBDLi1XLiBQaGFuKi4KKworSXQgdXNlcyBjb3JlIGFsZ29yaXRobSBmcm9tIENoYUNoYV8gY2lwaGVyIGRlc2lnbmVkIGJ5ICpEYW5pZWwgSi4gIEJlcm5zdGVpbiouCisKK1RoZSBzdGRsaWIgaW1wbGVtZW50YXRpb24gaXMgYmFzZWQgb24gcHlibGFrZTJfIG1vZHVsZS4gSXQgd2FzIHdyaXR0ZW4gYnkKKypEbWl0cnkgQ2hlc3RueWtoKiBiYXNlZCBvbiBDIGltcGxlbWVudGF0aW9uIHdyaXR0ZW4gYnkgKlNhbXVlbCBOZXZlcyouIFRoZQorZG9jdW1lbnRhdGlvbiB3YXMgY29waWVkIGZyb20gcHlibGFrZTJfIGFuZCB3cml0dGVuIGJ5ICpEbWl0cnkgQ2hlc3RueWtoKi4KKworVGhlIEMgY29kZSB3YXMgcGFydGx5IHJld3JpdHRlbiBmb3IgUHl0aG9uIGJ5ICpDaHJpc3RpYW4gSGVpbWVzKi4KKworVGhlIGZvbGxvd2luZyBwdWJsaWMgZG9tYWluIGRlZGljYXRpb24gYXBwbGllcyBmb3IgYm90aCBDIGhhc2ggZnVuY3Rpb24KK2ltcGxlbWVudGF0aW9uLCBleHRlbnNpb24gY29kZSwgYW5kIHRoaXMgZG9jdW1lbnRhdGlvbjoKKworICAgVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBhdXRob3IocykgaGF2ZSBkZWRpY2F0ZWQgYWxsIGNvcHlyaWdodAorICAgYW5kIHJlbGF0ZWQgYW5kIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGlzIHNvZnR3YXJlIHRvIHRoZSBwdWJsaWMgZG9tYWluCisgICB3b3JsZHdpZGUuIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgd2l0aG91dCBhbnkgd2FycmFudHkuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIENDMCBQdWJsaWMgRG9tYWluIERlZGljYXRpb24gYWxvbmcKKyAgIHdpdGggdGhpcyBzb2Z0d2FyZS4gSWYgbm90LCBzZWUKKyAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8uCisKK1RoZSBmb2xsb3dpbmcgcGVvcGxlIGhhdmUgaGVscGVkIHdpdGggZGV2ZWxvcG1lbnQgb3IgY29udHJpYnV0ZWQgdGhlaXIgY2hhbmdlcwordG8gdGhlIHByb2plY3QgYW5kIHRoZSBwdWJsaWMgZG9tYWluIGFjY29yZGluZyB0byB0aGUgQ3JlYXRpdmUgQ29tbW9ucyBQdWJsaWMKK0RvbWFpbiBEZWRpY2F0aW9uIDEuMCBVbml2ZXJzYWw6CisKKyogKkFsZXhhbmRyIFNva29sb3Zza2l5KgorCisuLiBzZWVhbHNvOjogT2ZmaWNpYWwgQkxBS0UyIHdlYnNpdGU6IGh0dHBzOi8vYmxha2UyLm5ldAorCisuLiBfUkZDLTc2OTM6IGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3NjkzCisuLiBfQkxBS0UyOiBodHRwczovL2JsYWtlMi5uZXQKKy4uIF9ITUFDOiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IYXNoLWJhc2VkX21lc3NhZ2VfYXV0aGVudGljYXRpb25fY29kZQorLi4gX0JMQUtFOiBodHRwczovLzEzMTAwMi5uZXQvYmxha2UvCisuLiBfU0hBLTM6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL05JU1RfaGFzaF9mdW5jdGlvbl9jb21wZXRpdGlvbgorLi4gX0NoYUNoYTogaHR0cHM6Ly9jci55cC50by9jaGFjaGEuaHRtbAorLi4gX3B5Ymxha2UyOiBodHRwczovL3B5dGhvbmhvc3RlZC5vcmcvcHlibGFrZTIvCisKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2hhc2hsaWIucnN0IGIvRG9jL2xpYnJhcnkvaGFzaGxpYi5yc3QKaW5kZXggYTJlOTZjYS4uMmNiM2M3OCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaGFzaGxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaGFzaGxpYi5yc3QKQEAgLTQ0LDggKzQ0LDggQEAKIC0tLS0tLS0tLS0tLS0tLQogCiBUaGVyZSBpcyBvbmUgY29uc3RydWN0b3IgbWV0aG9kIG5hbWVkIGZvciBlYWNoIHR5cGUgb2YgOmRmbjpgaGFzaGAuICBBbGwgcmV0dXJuCi1hIGhhc2ggb2JqZWN0IHdpdGggdGhlIHNhbWUgc2ltcGxlIGludGVyZmFjZS4gRm9yIGV4YW1wbGU6IHVzZSA6ZnVuYzpgc2hhMWAgdG8KLWNyZWF0ZSBhIFNIQTEgaGFzaCBvYmplY3QuIFlvdSBjYW4gbm93IGZlZWQgdGhpcyBvYmplY3Qgd2l0aCA6dGVybTpgYnl0ZXMtbGlrZQorYSBoYXNoIG9iamVjdCB3aXRoIHRoZSBzYW1lIHNpbXBsZSBpbnRlcmZhY2UuIEZvciBleGFtcGxlOiB1c2UgOmZ1bmM6YHNoYTI1NmAgdG8KK2NyZWF0ZSBhIFNIQS0yNTYgaGFzaCBvYmplY3QuIFlvdSBjYW4gbm93IGZlZWQgdGhpcyBvYmplY3Qgd2l0aCA6dGVybTpgYnl0ZXMtbGlrZQogb2JqZWN0cyA8Ynl0ZXMtbGlrZSBvYmplY3Q+YCAobm9ybWFsbHkgOmNsYXNzOmBieXRlc2ApIHVzaW5nIHRoZSA6bWV0aDpgdXBkYXRlYCBtZXRob2QuCiBBdCBhbnkgcG9pbnQgeW91IGNhbiBhc2sgaXQgZm9yIHRoZSA6ZGZuOmBkaWdlc3RgIG9mIHRoZQogY29uY2F0ZW5hdGlvbiBvZiB0aGUgZGF0YSBmZWQgdG8gaXQgc28gZmFyIHVzaW5nIHRoZSA6bWV0aDpgZGlnZXN0YCBvcgpAQCAtNjQsMjEgKzY0LDMzIEBACiAuLiBpbmRleDo6IHNpbmdsZTogT3BlblNTTDsgKHVzZSBpbiBtb2R1bGUgaGFzaGxpYikKIAogQ29uc3RydWN0b3JzIGZvciBoYXNoIGFsZ29yaXRobXMgdGhhdCBhcmUgYWx3YXlzIHByZXNlbnQgaW4gdGhpcyBtb2R1bGUgYXJlCi06ZnVuYzpgbWQ1YCwgOmZ1bmM6YHNoYTFgLCA6ZnVuYzpgc2hhMjI0YCwgOmZ1bmM6YHNoYTI1NmAsIDpmdW5jOmBzaGEzODRgLAotYW5kIDpmdW5jOmBzaGE1MTJgLiBBZGRpdGlvbmFsIGFsZ29yaXRobXMgbWF5IGFsc28gYmUgYXZhaWxhYmxlIGRlcGVuZGluZyB1cG9uCi10aGUgT3BlblNTTCBsaWJyYXJ5IHRoYXQgUHl0aG9uIHVzZXMgb24geW91ciBwbGF0Zm9ybS4KKzpmdW5jOmBzaGExYCwgOmZ1bmM6YHNoYTIyNGAsIDpmdW5jOmBzaGEyNTZgLCA6ZnVuYzpgc2hhMzg0YCwKKzpmdW5jOmBzaGE1MTJgLCA6ZnVuYzpgYmxha2UyYmAsIGFuZCA6ZnVuYzpgYmxha2Uyc2AuCis6ZnVuYzpgbWQ1YCBpcyBub3JtYWxseSBhdmFpbGFibGUgYXMgd2VsbCwgdGhvdWdoIGl0CittYXkgYmUgbWlzc2luZyBpZiB5b3UgYXJlIHVzaW5nIGEgcmFyZSAiRklQUyBjb21wbGlhbnQiIGJ1aWxkIG9mIFB5dGhvbi4KK0FkZGl0aW9uYWwgYWxnb3JpdGhtcyBtYXkgYWxzbyBiZSBhdmFpbGFibGUgZGVwZW5kaW5nIHVwb24gdGhlIE9wZW5TU0wKK2xpYnJhcnkgdGhhdCBQeXRob24gdXNlcyBvbiB5b3VyIHBsYXRmb3JtLiBPbiBtb3N0IHBsYXRmb3JtcyB0aGUKKzpmdW5jOmBzaGEzXzIyNGAsIDpmdW5jOmBzaGEzXzI1NmAsIDpmdW5jOmBzaGEzXzM4NGAsIDpmdW5jOmBzaGEzXzUxMmAsCis6ZnVuYzpgc2hha2VfMTI4YCwgOmZ1bmM6YHNoYWtlXzI1NmAgYXJlIGFsc28gYXZhaWxhYmxlLgorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKyAgIFNIQTMgKEtlY2NhaykgYW5kIFNIQUtFIGNvbnN0cnVjdG9ycyA6ZnVuYzpgc2hhM18yMjRgLCA6ZnVuYzpgc2hhM18yNTZgLAorICAgOmZ1bmM6YHNoYTNfMzg0YCwgOmZ1bmM6YHNoYTNfNTEyYCwgOmZ1bmM6YHNoYWtlXzEyOGAsIDpmdW5jOmBzaGFrZV8yNTZgLgorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKyAgIDpmdW5jOmBibGFrZTJiYCBhbmQgOmZ1bmM6YGJsYWtlMnNgIHdlcmUgYWRkZWQuCiAKIEZvciBleGFtcGxlLCB0byBvYnRhaW4gdGhlIGRpZ2VzdCBvZiB0aGUgYnl0ZSBzdHJpbmcgYGBiJ05vYm9keSBpbnNwZWN0cyB0aGUKIHNwYW1taXNoIHJlcGV0aXRpb24nYGA6OgogCiAgICA+Pj4gaW1wb3J0IGhhc2hsaWIKLSAgID4+PiBtID0gaGFzaGxpYi5tZDUoKQorICAgPj4+IG0gPSBoYXNobGliLnNoYTI1NigpCiAgICA+Pj4gbS51cGRhdGUoYiJOb2JvZHkgaW5zcGVjdHMiKQogICAgPj4+IG0udXBkYXRlKGIiIHRoZSBzcGFtbWlzaCByZXBldGl0aW9uIikKICAgID4+PiBtLmRpZ2VzdCgpCi0gICBiJ1x4YmJkXHg5Y1x4ODNceGRkXHgxZVx4YTVceGM5XHhkOVx4ZGVceGM5XHhhMVx4OGRceGYwXHhmZlx4ZTknCisgICBiJ1x4MDNceDFlXHhkZH1BZVx4MTVceDkzXHhjNVx4ZmVcXFx4MDBvXHhhNXUrN1x4ZmRceGRmXHhmN1x4YmNOXHg4NDpceGE2XHhhZlx4MGNceDk1XHgwZktceDk0XHgwNicKICAgID4+PiBtLmRpZ2VzdF9zaXplCi0gICAxNgorICAgMzIKICAgID4+PiBtLmJsb2NrX3NpemUKICAgIDY0CiAKQEAgLTEwNyw3ICsxMTksOSBAQAogLi4gZGF0YTo6IGFsZ29yaXRobXNfZ3VhcmFudGVlZAogCiAgICBBIHNldCBjb250YWluaW5nIHRoZSBuYW1lcyBvZiB0aGUgaGFzaCBhbGdvcml0aG1zIGd1YXJhbnRlZWQgdG8gYmUgc3VwcG9ydGVkCi0gICBieSB0aGlzIG1vZHVsZSBvbiBhbGwgcGxhdGZvcm1zLgorICAgYnkgdGhpcyBtb2R1bGUgb24gYWxsIHBsYXRmb3Jtcy4gIE5vdGUgdGhhdCAnbWQ1JyBpcyBpbiB0aGlzIGxpc3QgZGVzcGl0ZQorICAgc29tZSB1cHN0cmVhbSB2ZW5kb3JzIG9mZmVyaW5nIGFuIG9kZCAiRklQUyBjb21wbGlhbnQiIFB5dGhvbiBidWlsZCB0aGF0CisgICBleGNsdWRlcyBpdC4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKQEAgLTE4MSw2ICsxOTUsMjggQEAKICAgIGNvbXB1dGUgdGhlIGRpZ2VzdHMgb2YgZGF0YSBzaGFyaW5nIGEgY29tbW9uIGluaXRpYWwgc3Vic3RyaW5nLgogCiAKK1NIQUtFIHZhcmlhYmxlIGxlbmd0aCBkaWdlc3RzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgOmZ1bmM6YHNoYWtlXzEyOGAgYW5kIDpmdW5jOmBzaGFrZV8yNTZgIGFsZ29yaXRobXMgcHJvdmlkZSB2YXJpYWJsZQorbGVuZ3RoIGRpZ2VzdHMgd2l0aCBsZW5ndGhfaW5fYml0cy8vMiB1cCB0byAxMjggb3IgMjU2IGJpdHMgb2Ygc2VjdXJpdHkuCitBcyBzdWNoLCB0aGVpciBkaWdlc3QgbWV0aG9kcyByZXF1aXJlIGEgbGVuZ3RoLiBNYXhpbXVtIGxlbmd0aCBpcyBub3QgbGltaXRlZAorYnkgdGhlIFNIQUtFIGFsZ29yaXRobS4KKworLi4gbWV0aG9kOjogc2hha2UuZGlnZXN0KGxlbmd0aCkKKworICAgUmV0dXJuIHRoZSBkaWdlc3Qgb2YgdGhlIGRhdGEgcGFzc2VkIHRvIHRoZSA6bWV0aDpgdXBkYXRlYCBtZXRob2Qgc28gZmFyLgorICAgVGhpcyBpcyBhIGJ5dGVzIG9iamVjdCBvZiBzaXplIGBgbGVuZ3RoYGAgd2hpY2ggbWF5IGNvbnRhaW4gYnl0ZXMgaW4KKyAgIHRoZSB3aG9sZSByYW5nZSBmcm9tIDAgdG8gMjU1LgorCisKKy4uIG1ldGhvZDo6IHNoYWtlLmhleGRpZ2VzdChsZW5ndGgpCisKKyAgIExpa2UgOm1ldGg6YGRpZ2VzdGAgZXhjZXB0IHRoZSBkaWdlc3QgaXMgcmV0dXJuZWQgYXMgYSBzdHJpbmcgb2JqZWN0IG9mCisgICBkb3VibGUgbGVuZ3RoLCBjb250YWluaW5nIG9ubHkgaGV4YWRlY2ltYWwgZGlnaXRzLiAgVGhpcyBtYXkgYmUgdXNlZCB0bworICAgZXhjaGFuZ2UgdGhlIHZhbHVlIHNhZmVseSBpbiBlbWFpbCBvciBvdGhlciBub24tYmluYXJ5IGVudmlyb25tZW50cy4KKworCiBLZXkgZGVyaXZhdGlvbgogLS0tLS0tLS0tLS0tLS0KIApAQCAtMjIxLDYgKzI1NywyOSBAQAogICAgICAgUHl0aG9uIGltcGxlbWVudGF0aW9uIHVzZXMgYW4gaW5saW5lIHZlcnNpb24gb2YgOm1vZDpgaG1hY2AuIEl0IGlzIGFib3V0CiAgICAgICB0aHJlZSB0aW1lcyBzbG93ZXIgYW5kIGRvZXNuJ3QgcmVsZWFzZSB0aGUgR0lMLgogCisuLiBmdW5jdGlvbjo6IHNjcnlwdChwYXNzd29yZCwgKiwgc2FsdCwgbiwgciwgcCwgbWF4bWVtPTAsIGRrbGVuPTY0KQorCisgICBUaGUgZnVuY3Rpb24gcHJvdmlkZXMgc2NyeXB0IHBhc3N3b3JkLWJhc2VkIGtleSBkZXJpdmF0aW9uIGZ1bmN0aW9uIGFzCisgICBkZWZpbmVkIGluIDpyZmM6YDc5MTRgLgorCisgICAqcGFzc3dvcmQqIGFuZCAqc2FsdCogbXVzdCBiZSBieXRlcy1saWtlIG9iamVjdHMuIEFwcGxpY2F0aW9ucyBhbmQKKyAgIGxpYnJhcmllcyBzaG91bGQgbGltaXQgKnBhc3N3b3JkKiB0byBhIHNlbnNpYmxlIGxlbmd0aCAoZS5nLiAxMDI0KS4gKnNhbHQqCisgICBzaG91bGQgYmUgYWJvdXQgMTYgb3IgbW9yZSBieXRlcyBmcm9tIGEgcHJvcGVyIHNvdXJjZSwgZS5nLiA6ZnVuYzpgb3MudXJhbmRvbWAuCisKKyAgICpuKiBpcyB0aGUgQ1BVL01lbW9yeSBjb3N0IGZhY3RvciwgKnIqIHRoZSBibG9jayBzaXplLCAqcCogcGFyYWxsZWxpemF0aW9uCisgICBmYWN0b3IgYW5kICptYXhtZW0qIGxpbWl0cyBtZW1vcnkgKE9wZW5TU0wgMS4xLjAgZGVmYXVsdHMgdG8gMzIgTUIpLgorICAgKmRrbGVuKiBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBkZXJpdmVkIGtleS4KKworICAgQXZhaWxhYmlsaXR5OiBPcGVuU1NMIDEuMSsKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKworQkxBS0UyCistLS0tLS0KKworQkxBS0UyIHRha2VzIGFkZGl0aW9uYWwgYXJndW1lbnRzLCBzZWUgOnJlZjpgaGFzaGxpYi1ibGFrZTJgLgorCiAKIC4uIHNlZWFsc286OgogCkBAIC0yMzAsNiArMjg5LDggQEAKICAgIE1vZHVsZSA6bW9kOmBiYXNlNjRgCiAgICAgICBBbm90aGVyIHdheSB0byBlbmNvZGUgYmluYXJ5IGhhc2hlcyBmb3Igbm9uLWJpbmFyeSBlbnZpcm9ubWVudHMuCiAKKyAgIFNlZSA6cmVmOmBoYXNobGliLWJsYWtlMmAuCisKICAgIGh0dHA6Ly9jc3JjLm5pc3QuZ292L3B1YmxpY2F0aW9ucy9maXBzL2ZpcHMxODAtMi9maXBzMTgwLTIucGRmCiAgICAgICBUaGUgRklQUyAxODAtMiBwdWJsaWNhdGlvbiBvbiBTZWN1cmUgSGFzaCBBbGdvcml0aG1zLgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9odHRwLmNsaWVudC5yc3QgYi9Eb2MvbGlicmFyeS9odHRwLmNsaWVudC5yc3QKaW5kZXggZTFhY2Y5Mi4uMmY1OWVjZSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaHR0cC5jbGllbnQucnN0CisrKyBiL0RvYy9saWJyYXJ5L2h0dHAuY2xpZW50LnJzdApAQCAtNjksMTMgKzY5LDYgQEAKICAgIG11c3QgYmUgYSA6Y2xhc3M6YHNzbC5TU0xDb250ZXh0YCBpbnN0YW5jZSBkZXNjcmliaW5nIHRoZSB2YXJpb3VzIFNTTAogICAgb3B0aW9ucy4KIAotICAgKmtleV9maWxlKiBhbmQgKmNlcnRfZmlsZSogYXJlIGRlcHJlY2F0ZWQsIHBsZWFzZSB1c2UKLSAgIDptZXRoOmBzc2wuU1NMQ29udGV4dC5sb2FkX2NlcnRfY2hhaW5gIGluc3RlYWQsIG9yIGxldAotICAgOmZ1bmM6YHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0YCBzZWxlY3QgdGhlIHN5c3RlbSdzIHRydXN0ZWQgQ0EKLSAgIGNlcnRpZmljYXRlcyBmb3IgeW91LiAgVGhlICpjaGVja19ob3N0bmFtZSogcGFyYW1ldGVyIGlzIGFsc28gZGVwcmVjYXRlZDsgdGhlCi0gICA6YXR0cjpgc3NsLlNTTENvbnRleHQuY2hlY2tfaG9zdG5hbWVgIGF0dHJpYnV0ZSBvZiAqY29udGV4dCogc2hvdWxkIGJlIHVzZWQKLSAgIGluc3RlYWQuCi0KICAgIFBsZWFzZSByZWFkIDpyZWY6YHNzbC1zZWN1cml0eWAgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gYmVzdCBwcmFjdGljZXMuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCkBAIC05NSw2ICs4OCwxNyBAQAogICAgICAgOmZ1bmM6YHNzbC5fY3JlYXRlX3VudmVyaWZpZWRfY29udGV4dGAgY2FuIGJlIHBhc3NlZCB0byB0aGUgKmNvbnRleHQqCiAgICAgICBwYXJhbWV0ZXIuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjYKKworICAgICAgICprZXlfZmlsZSogYW5kICpjZXJ0X2ZpbGUqIGFyZSBkZXByZWNhdGVkIGluIGZhdm9yIG9mICpjb250ZXh0Ki4KKyAgICAgICBQbGVhc2UgdXNlIDptZXRoOmBzc2wuU1NMQ29udGV4dC5sb2FkX2NlcnRfY2hhaW5gIGluc3RlYWQsIG9yIGxldAorICAgICAgIDpmdW5jOmBzc2wuY3JlYXRlX2RlZmF1bHRfY29udGV4dGAgc2VsZWN0IHRoZSBzeXN0ZW0ncyB0cnVzdGVkIENBCisgICAgICAgY2VydGlmaWNhdGVzIGZvciB5b3UuCisKKyAgICAgICBUaGUgKmNoZWNrX2hvc3RuYW1lKiBwYXJhbWV0ZXIgaXMgYWxzbyBkZXByZWNhdGVkOyB0aGUKKyAgICAgICA6YXR0cjpgc3NsLlNTTENvbnRleHQuY2hlY2tfaG9zdG5hbWVgIGF0dHJpYnV0ZSBvZiAqY29udGV4dCogc2hvdWxkCisgICAgICAgYmUgdXNlZCBpbnN0ZWFkLgorCiAKIC4uIGNsYXNzOjogSFRUUFJlc3BvbnNlKHNvY2ssIGRlYnVnbGV2ZWw9MCwgbWV0aG9kPU5vbmUsIHVybD1Ob25lKQogCkBAIC0yMTcsMzkgKzIyMSw2MSBAQAogOmNsYXNzOmBIVFRQQ29ubmVjdGlvbmAgaW5zdGFuY2VzIGhhdmUgdGhlIGZvbGxvd2luZyBtZXRob2RzOgogCiAKLS4uIG1ldGhvZDo6IEhUVFBDb25uZWN0aW9uLnJlcXVlc3QobWV0aG9kLCB1cmwsIGJvZHk9Tm9uZSwgaGVhZGVycz17fSkKKy4uIG1ldGhvZDo6IEhUVFBDb25uZWN0aW9uLnJlcXVlc3QobWV0aG9kLCB1cmwsIGJvZHk9Tm9uZSwgaGVhZGVycz17fSwgKiwgXAorICAgICAgICAgICAgZW5jb2RlX2NodW5rZWQ9RmFsc2UpCiAKICAgIFRoaXMgd2lsbCBzZW5kIGEgcmVxdWVzdCB0byB0aGUgc2VydmVyIHVzaW5nIHRoZSBIVFRQIHJlcXVlc3QKICAgIG1ldGhvZCAqbWV0aG9kKiBhbmQgdGhlIHNlbGVjdG9yICp1cmwqLgogCiAgICBJZiAqYm9keSogaXMgc3BlY2lmaWVkLCB0aGUgc3BlY2lmaWVkIGRhdGEgaXMgc2VudCBhZnRlciB0aGUgaGVhZGVycyBhcmUKLSAgIGZpbmlzaGVkLiAgSXQgbWF5IGJlIGEgc3RyaW5nLCBhIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAsIGFuIG9wZW4KLSAgIDp0ZXJtOmBmaWxlIG9iamVjdGAsIG9yIGFuIGl0ZXJhYmxlIG9mIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGBccy4gIElmCi0gICAqYm9keSogaXMgYSBzdHJpbmcsIGl0IGlzIGVuY29kZWQgYXMgSVNPLTg4NTktMSwgdGhlIGRlZmF1bHQgZm9yIEhUVFAuICBJZgotICAgaXQgaXMgYSBieXRlcy1saWtlIG9iamVjdCB0aGUgYnl0ZXMgYXJlIHNlbnQgYXMgaXMuICBJZiBpdCBpcyBhIDp0ZXJtOmBmaWxlCi0gICBvYmplY3RgLCB0aGUgY29udGVudHMgb2YgdGhlIGZpbGUgaXMgc2VudDsgdGhpcyBmaWxlIG9iamVjdCBzaG91bGQgc3VwcG9ydAotICAgYXQgbGVhc3QgdGhlIGBgcmVhZCgpYGAgbWV0aG9kLiAgSWYgdGhlIGZpbGUgb2JqZWN0IGhhcyBhIGBgbW9kZWBgCi0gICBhdHRyaWJ1dGUsIHRoZSBkYXRhIHJldHVybmVkIGJ5IHRoZSBgYHJlYWQoKWBgIG1ldGhvZCB3aWxsIGJlIGVuY29kZWQgYXMKLSAgIElTTy04ODU5LTEgdW5sZXNzIHRoZSBgYG1vZGVgYCBhdHRyaWJ1dGUgY29udGFpbnMgdGhlIHN1YnN0cmluZyBgYGJgYCwKLSAgIG90aGVyd2lzZSB0aGUgZGF0YSByZXR1cm5lZCBieSBgYHJlYWQoKWBgIGlzIHNlbnQgYXMgaXMuICBJZiAqYm9keSogaXMgYW4KLSAgIGl0ZXJhYmxlLCB0aGUgZWxlbWVudHMgb2YgdGhlIGl0ZXJhYmxlIGFyZSBzZW50IGFzIGlzIHVudGlsIHRoZSBpdGVyYWJsZSBpcwotICAgZXhoYXVzdGVkLgorICAgZmluaXNoZWQuICBJdCBtYXkgYmUgYSA6Y2xhc3M6YHN0cmAsIGEgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCwgYW4KKyAgIG9wZW4gOnRlcm06YGZpbGUgb2JqZWN0YCwgb3IgYW4gaXRlcmFibGUgb2YgOmNsYXNzOmBieXRlc2AuICBJZiAqYm9keSoKKyAgIGlzIGEgc3RyaW5nLCBpdCBpcyBlbmNvZGVkIGFzIElTTy04ODU5LTEsIHRoZSBkZWZhdWx0IGZvciBIVFRQLiAgSWYgaXQKKyAgIGlzIGEgYnl0ZXMtbGlrZSBvYmplY3QsIHRoZSBieXRlcyBhcmUgc2VudCBhcyBpcy4gIElmIGl0IGlzIGEgOnRlcm06YGZpbGUKKyAgIG9iamVjdGAsIHRoZSBjb250ZW50cyBvZiB0aGUgZmlsZSBpcyBzZW50OyB0aGlzIGZpbGUgb2JqZWN0IHNob3VsZAorICAgc3VwcG9ydCBhdCBsZWFzdCB0aGUgYGByZWFkKClgYCBtZXRob2QuICBJZiB0aGUgZmlsZSBvYmplY3QgaXMgYW4KKyAgIGluc3RhbmNlIG9mIDpjbGFzczpgaW8uVGV4dElPQmFzZWAsIHRoZSBkYXRhIHJldHVybmVkIGJ5IHRoZSBgYHJlYWQoKWBgCisgICBtZXRob2Qgd2lsbCBiZSBlbmNvZGVkIGFzIElTTy04ODU5LTEsIG90aGVyd2lzZSB0aGUgZGF0YSByZXR1cm5lZCBieQorICAgYGByZWFkKClgYCBpcyBzZW50IGFzIGlzLiAgSWYgKmJvZHkqIGlzIGFuIGl0ZXJhYmxlLCB0aGUgZWxlbWVudHMgb2YgdGhlCisgICBpdGVyYWJsZSBhcmUgc2VudCBhcyBpcyB1bnRpbCB0aGUgaXRlcmFibGUgaXMgZXhoYXVzdGVkLgogCi0gICBUaGUgKmhlYWRlcnMqIGFyZ3VtZW50IHNob3VsZCBiZSBhIG1hcHBpbmcgb2YgZXh0cmEgSFRUUAotICAgaGVhZGVycyB0byBzZW5kIHdpdGggdGhlIHJlcXVlc3QuCisgICBUaGUgKmhlYWRlcnMqIGFyZ3VtZW50IHNob3VsZCBiZSBhIG1hcHBpbmcgb2YgZXh0cmEgSFRUUCBoZWFkZXJzIHRvIHNlbmQKKyAgIHdpdGggdGhlIHJlcXVlc3QuCiAKLSAgIElmICpoZWFkZXJzKiBkb2VzIG5vdCBjb250YWluIGEgQ29udGVudC1MZW5ndGggaXRlbSwgb25lIGlzIGFkZGVkCi0gICBhdXRvbWF0aWNhbGx5IGlmIHBvc3NpYmxlLiAgSWYgKmJvZHkqIGlzIGBgTm9uZWBgLCB0aGUgQ29udGVudC1MZW5ndGggaGVhZGVyCi0gICBpcyBzZXQgdG8gYGAwYGAgZm9yIG1ldGhvZHMgdGhhdCBleHBlY3QgYSBib2R5IChgYFBVVGBgLCBgYFBPU1RgYCwgYW5kCi0gICBgYFBBVENIYGApLiAgSWYgKmJvZHkqIGlzIGEgc3RyaW5nIG9yIGJ5dGVzIG9iamVjdCwgdGhlIENvbnRlbnQtTGVuZ3RoCi0gICBoZWFkZXIgaXMgc2V0IHRvIGl0cyBsZW5ndGguICBJZiAqYm9keSogaXMgYSA6dGVybTpgZmlsZSBvYmplY3RgIGFuZCBpdAotICAgd29ya3MgdG8gY2FsbCA6ZnVuYzpgfm9zLmZzdGF0YCBvbiB0aGUgcmVzdWx0IG9mIGl0cyBgYGZpbGVubygpYGAgbWV0aG9kLAotICAgdGhlbiB0aGUgQ29udGVudC1MZW5ndGggaGVhZGVyIGlzIHNldCB0byB0aGUgYGBzdF9zaXplYGAgcmVwb3J0ZWQgYnkgdGhlCi0gICBgYGZzdGF0YGAgY2FsbC4gIE90aGVyd2lzZSBubyBDb250ZW50LUxlbmd0aCBoZWFkZXIgaXMgYWRkZWQuCisgICBJZiAqaGVhZGVycyogY29udGFpbnMgbmVpdGhlciBDb250ZW50LUxlbmd0aCBub3IgVHJhbnNmZXItRW5jb2RpbmcsCisgICBidXQgdGhlcmUgaXMgYSByZXF1ZXN0IGJvZHksIG9uZSBvZiB0aG9zZQorICAgaGVhZGVyIGZpZWxkcyB3aWxsIGJlIGFkZGVkIGF1dG9tYXRpY2FsbHkuICBJZgorICAgKmJvZHkqIGlzIGBgTm9uZWBgLCB0aGUgQ29udGVudC1MZW5ndGggaGVhZGVyIGlzIHNldCB0byBgYDBgYCBmb3IKKyAgIG1ldGhvZHMgdGhhdCBleHBlY3QgYSBib2R5IChgYFBVVGBgLCBgYFBPU1RgYCwgYW5kIGBgUEFUQ0hgYCkuICBJZgorICAgKmJvZHkqIGlzIGEgc3RyaW5nIG9yIGEgYnl0ZXMtbGlrZSBvYmplY3QgdGhhdCBpcyBub3QgYWxzbyBhCisgICA6dGVybTpgZmlsZSA8ZmlsZSBvYmplY3Q+YCwgdGhlIENvbnRlbnQtTGVuZ3RoIGhlYWRlciBpcworICAgc2V0IHRvIGl0cyBsZW5ndGguICBBbnkgb3RoZXIgdHlwZSBvZiAqYm9keSogKGZpbGVzCisgICBhbmQgaXRlcmFibGVzIGluIGdlbmVyYWwpIHdpbGwgYmUgY2h1bmstZW5jb2RlZCwgYW5kIHRoZQorICAgVHJhbnNmZXItRW5jb2RpbmcgaGVhZGVyIHdpbGwgYXV0b21hdGljYWxseSBiZSBzZXQgaW5zdGVhZCBvZgorICAgQ29udGVudC1MZW5ndGguCisKKyAgIFRoZSAqZW5jb2RlX2NodW5rZWQqIGFyZ3VtZW50IGlzIG9ubHkgcmVsZXZhbnQgaWYgVHJhbnNmZXItRW5jb2RpbmcgaXMKKyAgIHNwZWNpZmllZCBpbiAqaGVhZGVycyouICBJZiAqZW5jb2RlX2NodW5rZWQqIGlzIGBgRmFsc2VgYCwgdGhlCisgICBIVFRQQ29ubmVjdGlvbiBvYmplY3QgYXNzdW1lcyB0aGF0IGFsbCBlbmNvZGluZyBpcyBoYW5kbGVkIGJ5IHRoZQorICAgY2FsbGluZyBjb2RlLiAgSWYgaXQgaXMgYGBUcnVlYGAsIHRoZSBib2R5IHdpbGwgYmUgY2h1bmstZW5jb2RlZC4KKworICAgLi4gbm90ZTo6CisgICAgICBDaHVua2VkIHRyYW5zZmVyIGVuY29kaW5nIGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBIVFRQIHByb3RvY29sCisgICAgICB2ZXJzaW9uIDEuMS4gIFVubGVzcyB0aGUgSFRUUCBzZXJ2ZXIgaXMga25vd24gdG8gaGFuZGxlIEhUVFAgMS4xLAorICAgICAgdGhlIGNhbGxlciBtdXN0IGVpdGhlciBzcGVjaWZ5IHRoZSBDb250ZW50LUxlbmd0aCwgb3IgbXVzdCBwYXNzIGEKKyAgICAgIDpjbGFzczpgc3RyYCBvciBieXRlcy1saWtlIG9iamVjdCB0aGF0IGlzIG5vdCBhbHNvIGEgZmlsZSBhcyB0aGUKKyAgICAgIGJvZHkgcmVwcmVzZW50YXRpb24uCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogICAgICAgKmJvZHkqIGNhbiBub3cgYmUgYW4gaXRlcmFibGUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBJZiBuZWl0aGVyIENvbnRlbnQtTGVuZ3RoIG5vciBUcmFuc2Zlci1FbmNvZGluZyBhcmUgc2V0IGluCisgICAgICAqaGVhZGVycyosIGZpbGUgYW5kIGl0ZXJhYmxlICpib2R5KiBvYmplY3RzIGFyZSBub3cgY2h1bmstZW5jb2RlZC4KKyAgICAgIFRoZSAqZW5jb2RlX2NodW5rZWQqIGFyZ3VtZW50IHdhcyBhZGRlZC4KKyAgICAgIE5vIGF0dGVtcHQgaXMgbWFkZSB0byBkZXRlcm1pbmUgdGhlIENvbnRlbnQtTGVuZ3RoIGZvciBmaWxlCisgICAgICBvYmplY3RzLgorCiAuLiBtZXRob2Q6OiBIVFRQQ29ubmVjdGlvbi5nZXRyZXNwb25zZSgpCiAKICAgIFNob3VsZCBiZSBjYWxsZWQgYWZ0ZXIgYSByZXF1ZXN0IGlzIHNlbnQgdG8gZ2V0IHRoZSByZXNwb25zZSBmcm9tIHRoZSBzZXJ2ZXIuCkBAIC0zMzUsMTMgKzM2MSwzMiBAQAogICAgYW4gYXJndW1lbnQuCiAKIAotLi4gbWV0aG9kOjogSFRUUENvbm5lY3Rpb24uZW5kaGVhZGVycyhtZXNzYWdlX2JvZHk9Tm9uZSkKKy4uIG1ldGhvZDo6IEhUVFBDb25uZWN0aW9uLmVuZGhlYWRlcnMobWVzc2FnZV9ib2R5PU5vbmUsICosIGVuY29kZV9jaHVua2VkPUZhbHNlKQogCiAgICBTZW5kIGEgYmxhbmsgbGluZSB0byB0aGUgc2VydmVyLCBzaWduYWxsaW5nIHRoZSBlbmQgb2YgdGhlIGhlYWRlcnMuIFRoZQogICAgb3B0aW9uYWwgKm1lc3NhZ2VfYm9keSogYXJndW1lbnQgY2FuIGJlIHVzZWQgdG8gcGFzcyBhIG1lc3NhZ2UgYm9keQotICAgYXNzb2NpYXRlZCB3aXRoIHRoZSByZXF1ZXN0LiAgVGhlIG1lc3NhZ2UgYm9keSB3aWxsIGJlIHNlbnQgaW4gdGhlIHNhbWUKLSAgIHBhY2tldCBhcyB0aGUgbWVzc2FnZSBoZWFkZXJzIGlmIGl0IGlzIHN0cmluZywgb3RoZXJ3aXNlIGl0IGlzIHNlbnQgaW4gYQotICAgc2VwYXJhdGUgcGFja2V0LgorICAgYXNzb2NpYXRlZCB3aXRoIHRoZSByZXF1ZXN0LgorCisgICBJZiAqZW5jb2RlX2NodW5rZWQqIGlzIGBgVHJ1ZWBgLCB0aGUgcmVzdWx0IG9mIGVhY2ggaXRlcmF0aW9uIG9mCisgICAqbWVzc2FnZV9ib2R5KiB3aWxsIGJlIGNodW5rLWVuY29kZWQgYXMgc3BlY2lmaWVkIGluIDpyZmM6YDcyMzBgLAorICAgU2VjdGlvbiAzLjMuMS4gIEhvdyB0aGUgZGF0YSBpcyBlbmNvZGVkIGlzIGRlcGVuZGVudCBvbiB0aGUgdHlwZSBvZgorICAgKm1lc3NhZ2VfYm9keSouICBJZiAqbWVzc2FnZV9ib2R5KiBpbXBsZW1lbnRzIHRoZSA6cmVmOmBidWZmZXIgaW50ZXJmYWNlCisgICA8YnVmZmVyb2JqZWN0cz5gIHRoZSBlbmNvZGluZyB3aWxsIHJlc3VsdCBpbiBhIHNpbmdsZSBjaHVuay4KKyAgIElmICptZXNzYWdlX2JvZHkqIGlzIGEgOmNsYXNzOmBjb2xsZWN0aW9ucy5JdGVyYWJsZWAsIGVhY2ggaXRlcmF0aW9uCisgICBvZiAqbWVzc2FnZV9ib2R5KiB3aWxsIHJlc3VsdCBpbiBhIGNodW5rLiAgSWYgKm1lc3NhZ2VfYm9keSogaXMgYQorICAgOnRlcm06YGZpbGUgb2JqZWN0YCwgZWFjaCBjYWxsIHRvIGBgLnJlYWQoKWBgIHdpbGwgcmVzdWx0IGluIGEgY2h1bmsuCisgICBUaGUgbWV0aG9kIGF1dG9tYXRpY2FsbHkgc2lnbmFscyB0aGUgZW5kIG9mIHRoZSBjaHVuay1lbmNvZGVkIGRhdGEKKyAgIGltbWVkaWF0ZWx5IGFmdGVyICptZXNzYWdlX2JvZHkqLgorCisgICAuLiBub3RlOjogRHVlIHRvIHRoZSBjaHVua2VkIGVuY29kaW5nIHNwZWNpZmljYXRpb24sIGVtcHR5IGNodW5rcworICAgICAgeWllbGRlZCBieSBhbiBpdGVyYXRvciBib2R5IHdpbGwgYmUgaWdub3JlZCBieSB0aGUgY2h1bmstZW5jb2Rlci4KKyAgICAgIFRoaXMgaXMgdG8gYXZvaWQgcHJlbWF0dXJlIHRlcm1pbmF0aW9uIG9mIHRoZSByZWFkIG9mIHRoZSByZXF1ZXN0IGJ5CisgICAgICB0aGUgdGFyZ2V0IHNlcnZlciBkdWUgdG8gbWFsZm9ybWVkIGVuY29kaW5nLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKyAgICAgIENodW5rZWQgZW5jb2Rpbmcgc3VwcG9ydC4gIFRoZSAqZW5jb2RlX2NodW5rZWQqIHBhcmFtZXRlciB3YXMKKyAgICAgIGFkZGVkLgorCiAKIC4uIG1ldGhvZDo6IEhUVFBDb25uZWN0aW9uLnNlbmQoZGF0YSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaHR0cC5zZXJ2ZXIucnN0IGIvRG9jL2xpYnJhcnkvaHR0cC5zZXJ2ZXIucnN0CmluZGV4IGFlN2ZiOTcuLmZiNWMxZGYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2h0dHAuc2VydmVyLnJzdAorKysgYi9Eb2MvbGlicmFyeS9odHRwLnNlcnZlci5yc3QKQEAgLTk4LDggKzk4LDggQEAKIAogICAgLi4gYXR0cmlidXRlOjogcmZpbGUKIAotICAgICAgQ29udGFpbnMgYW4gaW5wdXQgc3RyZWFtLCBwb3NpdGlvbmVkIGF0IHRoZSBzdGFydCBvZiB0aGUgb3B0aW9uYWwgaW5wdXQKLSAgICAgIGRhdGEuCisgICAgICBBbiA6Y2xhc3M6YGlvLkJ1ZmZlcmVkSU9CYXNlYCBpbnB1dCBzdHJlYW0sIHJlYWR5IHRvIHJlYWQgZnJvbQorICAgICAgdGhlIHN0YXJ0IG9mIHRoZSBvcHRpb25hbCBpbnB1dCBkYXRhLgogCiAgICAuLiBhdHRyaWJ1dGU6OiB3ZmlsZQogCkBAIC0xMDcsNiArMTA3LDkgQEAKICAgICAgIGNsaWVudC4gUHJvcGVyIGFkaGVyZW5jZSB0byB0aGUgSFRUUCBwcm90b2NvbCBtdXN0IGJlIHVzZWQgd2hlbiB3cml0aW5nIHRvCiAgICAgICB0aGlzIHN0cmVhbS4KIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgICAgIFRoaXMgaXMgYW4gOmNsYXNzOmBpby5CdWZmZXJlZElPQmFzZWAgc3RyZWFtLgorCiAgICA6Y2xhc3M6YEJhc2VIVFRQUmVxdWVzdEhhbmRsZXJgIGhhcyB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXM6CiAKICAgIC4uIGF0dHJpYnV0ZTo6IHNlcnZlcl92ZXJzaW9uCkBAIC0zNjksMTAgKzM3Miw5IEBACiAKICAgIEhhbmRsZXIgPSBodHRwLnNlcnZlci5TaW1wbGVIVFRQUmVxdWVzdEhhbmRsZXIKIAotICAgaHR0cGQgPSBzb2NrZXRzZXJ2ZXIuVENQU2VydmVyKCgiIiwgUE9SVCksIEhhbmRsZXIpCi0KLSAgIHByaW50KCJzZXJ2aW5nIGF0IHBvcnQiLCBQT1JUKQotICAgaHR0cGQuc2VydmVfZm9yZXZlcigpCisgICB3aXRoIHNvY2tldHNlcnZlci5UQ1BTZXJ2ZXIoKCIiLCBQT1JUKSwgSGFuZGxlcikgYXMgaHR0cGQ6CisgICAgICAgcHJpbnQoInNlcnZpbmcgYXQgcG9ydCIsIFBPUlQpCisgICAgICAgaHR0cGQuc2VydmVfZm9yZXZlcigpCiAKIC4uIF9odHRwLXNlcnZlci1jbGk6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2ltYXBsaWIucnN0IGIvRG9jL2xpYnJhcnkvaW1hcGxpYi5yc3QKaW5kZXggNzcxY2E0My4uMTYzMmViNyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaW1hcGxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaW1hcGxpYi5yc3QKQEAgLTEwMyw2ICsxMDMsMTQgQEAKICAgICAgIDphdHRyOmBzc2wuU1NMQ29udGV4dC5jaGVja19ob3N0bmFtZWAgYW5kICpTZXJ2ZXIgTmFtZSBJbmRpY2F0aW9uKiAoc2VlCiAgICAgICA6ZGF0YTpgc3NsLkhBU19TTklgKS4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuNgorCisgICAgICAgKmtleWZpbGUqIGFuZCAqY2VydGZpbGUqIGFyZSBkZXByZWNhdGVkIGluIGZhdm9yIG9mICpzc2xfY29udGV4dCouCisgICAgICAgUGxlYXNlIHVzZSA6bWV0aDpgc3NsLlNTTENvbnRleHQubG9hZF9jZXJ0X2NoYWluYCBpbnN0ZWFkLCBvciBsZXQKKyAgICAgICA6ZnVuYzpgc3NsLmNyZWF0ZV9kZWZhdWx0X2NvbnRleHRgIHNlbGVjdCB0aGUgc3lzdGVtJ3MgdHJ1c3RlZCBDQQorICAgICAgIGNlcnRpZmljYXRlcyBmb3IgeW91LgorCisKIFRoZSBzZWNvbmQgc3ViY2xhc3MgYWxsb3dzIGZvciBjb25uZWN0aW9ucyBjcmVhdGVkIGJ5IGEgY2hpbGQgcHJvY2VzczoKIAogCkBAIC01MDAsNiArNTA4LDE3IEBACiAgICAgICAgICBNLnN0b3JlKG51bSwgJytGTEFHUycsICdcXERlbGV0ZWQnKQogICAgICAgTS5leHB1bmdlKCkKIAorICAgLi4gbm90ZTo6CisKKyAgICAgIENyZWF0aW5nIGZsYWdzIGNvbnRhaW5pbmcgJ10nIChmb3IgZXhhbXBsZTogIlt0ZXN0XSIpIHZpb2xhdGVzCisgICAgICA6cmZjOmAzNTAxYCAodGhlIElNQVAgcHJvdG9jb2wpLiAgSG93ZXZlciwgaW1hcGxpYiBoYXMgaGlzdG9yaWNhbGx5CisgICAgICBhbGxvd2VkIGNyZWF0aW9uIG9mIHN1Y2ggdGFncywgYW5kIHBvcHVsYXIgSU1BUCBzZXJ2ZXJzLCBzdWNoIGFzIEdtYWlsLAorICAgICAgYWNjZXB0IGFuZCBwcm9kdWNlIHN1Y2ggZmxhZ3MuICBUaGVyZSBhcmUgbm9uLVB5dGhvbiBwcm9ncmFtcyB3aGljaCBhbHNvCisgICAgICBjcmVhdGUgc3VjaCB0YWdzLiAgQWx0aG91Z2ggaXQgaXMgYW4gUkZDIHZpb2xhdGlvbiBhbmQgSU1BUCBjbGllbnRzIGFuZAorICAgICAgc2VydmVycyBhcmUgc3VwcG9zZWQgdG8gYmUgc3RyaWN0LCBpbWFwbGliIG5vbmV0aGVsZXNzIGNvbnRpbnVlcyB0byBhbGxvdworICAgICAgc3VjaCB0YWdzIHRvIGJlIGNyZWF0ZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgcmVhc29ucywgYW5kIGFzIG9mCisgICAgICBweXRob24gMy42LCBoYW5kbGVzIHRoZW0gaWYgdGhleSBhcmUgc2VudCBmcm9tIHRoZSBzZXJ2ZXIsIHNpbmNlIHRoaXMKKyAgICAgIGltcHJvdmVzIHJlYWwtd29ybGQgY29tcGF0aWJpbGl0eS4KIAogLi4gbWV0aG9kOjogSU1BUDQuc3Vic2NyaWJlKG1haWxib3gpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2ltZ2hkci5yc3QgYi9Eb2MvbGlicmFyeS9pbWdoZHIucnN0CmluZGV4IGYxMWY2ZGMuLjgwMGU5MTkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2ltZ2hkci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaW1naGRyLnJzdApAQCAtMjAsNiArMjAsOSBAQAogICAgc3RyaW5nIGRlc2NyaWJpbmcgdGhlIGltYWdlIHR5cGUuICBJZiBvcHRpb25hbCAqaCogaXMgcHJvdmlkZWQsIHRoZSAqZmlsZW5hbWUqCiAgICBpcyBpZ25vcmVkIGFuZCAqaCogaXMgYXNzdW1lZCB0byBjb250YWluIHRoZSBieXRlIHN0cmVhbSB0byB0ZXN0LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogVGhlIGZvbGxvd2luZyBpbWFnZSB0eXBlcyBhcmUgcmVjb2duaXplZCwgYXMgbGlzdGVkIGJlbG93IHdpdGggdGhlIHJldHVybiB2YWx1ZQogZnJvbSA6ZnVuYzpgd2hhdGA6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2ltcC5yc3QgYi9Eb2MvbGlicmFyeS9pbXAucnN0CmluZGV4IDk4MjhiYTYuLmNjZjVmOTIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2ltcC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaW1wLnJzdApAQCAtODUsNyArODUsOSBAQAogICAgLi4gZGVwcmVjYXRlZDo6IDMuMwogICAgICAgVXNlIDpmdW5jOmBpbXBvcnRsaWIudXRpbC5maW5kX3NwZWNgIGluc3RlYWQgdW5sZXNzIFB5dGhvbiAzLjMKICAgICAgIGNvbXBhdGliaWxpdHkgaXMgcmVxdWlyZWQsIGluIHdoaWNoIGNhc2UgdXNlCi0gICAgICA6ZnVuYzpgaW1wb3J0bGliLmZpbmRfbG9hZGVyYC4KKyAgICAgIDpmdW5jOmBpbXBvcnRsaWIuZmluZF9sb2FkZXJgLiBGb3IgZXhhbXBsZSB1c2FnZSBvZiB0aGUgZm9ybWVyIGNhc2UsCisgICAgICBzZWUgdGhlIDpyZWY6YGltcG9ydGxpYi1leGFtcGxlc2Agc2VjdGlvbiBvZiB0aGUgOm1vZDpgaW1wb3J0bGliYAorICAgICAgZG9jdW1lbnRhdGlvbi4KIAogCiAuLiBmdW5jdGlvbjo6IGxvYWRfbW9kdWxlKG5hbWUsIGZpbGUsIHBhdGhuYW1lLCBkZXNjcmlwdGlvbikKQEAgLTExMiw5ICsxMTQsMTIgQEAKICAgICAgIElmIHByZXZpb3VzbHkgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIDpmdW5jOmBpbXAuZmluZF9tb2R1bGVgIHRoZW4KICAgICAgIGNvbnNpZGVyIHVzaW5nIDpmdW5jOmBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZWAsIG90aGVyd2lzZSB1c2UgdGhlIGxvYWRlcgogICAgICAgcmV0dXJuZWQgYnkgdGhlIHJlcGxhY2VtZW50IHlvdSBjaG9zZSBmb3IgOmZ1bmM6YGltcC5maW5kX21vZHVsZWAuIElmIHlvdQotICAgICAgY2FsbGVkIDpmdW5jOmBpbXAubG9hZF9tb2R1bGVgIGFuZCByZWxhdGVkIGZ1bmN0aW9ucyBkaXJlY3RseSB0aGVuIHVzZSB0aGUKLSAgICAgIGNsYXNzZXMgaW4gOm1vZDpgaW1wb3J0bGliLm1hY2hpbmVyeWAsIGUuZy4KLSAgICAgIGBgaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKG5hbWUsIHBhdGgpLmxvYWRfbW9kdWxlKClgYC4KKyAgICAgIGNhbGxlZCA6ZnVuYzpgaW1wLmxvYWRfbW9kdWxlYCBhbmQgcmVsYXRlZCBmdW5jdGlvbnMgZGlyZWN0bHkgd2l0aCBmaWxlCisgICAgICBwYXRoIGFyZ3VtZW50cyB0aGVuIHVzZSBhIGNvbWJpbmF0aW9uIG9mCisgICAgICA6ZnVuYzpgaW1wb3J0bGliLnV0aWwuc3BlY19mcm9tX2ZpbGVfbG9jYXRpb25gIGFuZAorICAgICAgOmZ1bmM6YGltcG9ydGxpYi51dGlsLm1vZHVsZV9mcm9tX3NwZWNgLiBTZWUgdGhlIDpyZWY6YGltcG9ydGxpYi1leGFtcGxlc2AKKyAgICAgIHNlY3Rpb24gb2YgdGhlIDptb2Q6YGltcG9ydGxpYmAgZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscyBvZiB0aGUgdmFyaW91cworICAgICAgYXBwcm9hY2hlcy4KIAogCiAuLiBmdW5jdGlvbjo6IG5ld19tb2R1bGUobmFtZSkKQEAgLTEyMyw3ICsxMjgsNyBAQAogICAgaW4gYGBzeXMubW9kdWxlc2BgLgogCiAgICAuLiBkZXByZWNhdGVkOjogMy40Ci0gICAgICBVc2UgOmNsYXNzOmB0eXBlcy5Nb2R1bGVUeXBlYCBpbnN0ZWFkLgorICAgICAgVXNlIDpmdW5jOmBpbXBvcnRsaWIudXRpbC5tb2R1bGVfZnJvbV9zcGVjYCBpbnN0ZWFkLgogCiAKIC4uIGZ1bmN0aW9uOjogcmVsb2FkKG1vZHVsZSkKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2ltcG9ydGxpYi5yc3QgYi9Eb2MvbGlicmFyeS9pbXBvcnRsaWIucnN0CmluZGV4IDUyNmM5ZjMuLjFmZDU2OTggMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2ltcG9ydGxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaW1wb3J0bGliLnJzdApAQCAtMjY3LDcgKzI2Nyw3IEBACiAgICAgICBtb2R1bGUgYW5kICpwYXRoKiB3aWxsIGJlIHRoZSB2YWx1ZSBvZiA6YXR0cjpgX19wYXRoX19gIGZyb20gdGhlCiAgICAgICBwYXJlbnQgcGFja2FnZS4gSWYgYSBzcGVjIGNhbm5vdCBiZSBmb3VuZCwgYGBOb25lYGAgaXMgcmV0dXJuZWQuCiAgICAgICBXaGVuIHBhc3NlZCBpbiwgYGB0YXJnZXRgYCBpcyBhIG1vZHVsZSBvYmplY3QgdGhhdCB0aGUgZmluZGVyIG1heQotICAgICAgdXNlIHRvIG1ha2UgYSBtb3JlIGVkdWNhdGVkIGFib3V0IHdoYXQgc3BlYyB0byByZXR1cm4uCisgICAgICB1c2UgdG8gbWFrZSBhIG1vcmUgZWR1Y2F0ZWQgZ3Vlc3MgYWJvdXQgd2hhdCBzcGVjIHRvIHJldHVybi4KIAogICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKQEAgLTMxNyw3ICszMTcsNyBAQAogICAgICAgd2l0aGluIHRoZSA6dGVybTpgcGF0aCBlbnRyeWAgdG8gd2hpY2ggaXQgaXMgYXNzaWduZWQuICBJZiBhIHNwZWMKICAgICAgIGNhbm5vdCBiZSBmb3VuZCwgYGBOb25lYGAgaXMgcmV0dXJuZWQuICBXaGVuIHBhc3NlZCBpbiwgYGB0YXJnZXRgYAogICAgICAgaXMgYSBtb2R1bGUgb2JqZWN0IHRoYXQgdGhlIGZpbmRlciBtYXkgdXNlIHRvIG1ha2UgYSBtb3JlIGVkdWNhdGVkCi0gICAgICBhYm91dCB3aGF0IHNwZWMgdG8gcmV0dXJuLgorICAgICAgZ3Vlc3MgYWJvdXQgd2hhdCBzcGVjIHRvIHJldHVybi4KIAogICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKQEAgLTM3OSwxMCArMzc5LDE0IEBACiAKICAgICAgICBBbiBhYnN0cmFjdCBtZXRob2QgdGhhdCBleGVjdXRlcyB0aGUgbW9kdWxlIGluIGl0cyBvd24gbmFtZXNwYWNlCiAgICAgICAgd2hlbiBhIG1vZHVsZSBpcyBpbXBvcnRlZCBvciByZWxvYWRlZC4gIFRoZSBtb2R1bGUgc2hvdWxkIGFscmVhZHkKLSAgICAgICBiZSBpbml0aWFsaXplZCB3aGVuIGV4ZWNfbW9kdWxlKCkgaXMgY2FsbGVkLgorICAgICAgIGJlIGluaXRpYWxpemVkIHdoZW4gYGBleGVjX21vZHVsZSgpYGAgaXMgY2FsbGVkLiBXaGVuIHRoaXMgbWV0aG9kIGV4aXN0cywKKyAgICAgICA6bWV0aDpgfmltcG9ydGxpYi5hYmMuTG9hZGVyLmNyZWF0ZV9tb2R1bGVgIG11c3QgYmUgZGVmaW5lZC4KIAogICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogCisgICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgICAgICA6bWV0aDpgfmltcG9ydGxpYi5hYmMuTG9hZGVyLmNyZWF0ZV9tb2R1bGVgIG11c3QgYWxzbyBiZSBkZWZpbmVkLgorCiAgICAgLi4gbWV0aG9kOjogbG9hZF9tb2R1bGUoZnVsbG5hbWUpCiAKICAgICAgICAgQSBsZWdhY3kgbWV0aG9kIGZvciBsb2FkaW5nIGEgbW9kdWxlLiBJZiB0aGUgbW9kdWxlIGNhbm5vdCBiZQpAQCAtODAyLDYgKzgwNiwxMCBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuNgorICAgICAgVXNlIDptb2Q6YHNpdGVgIGNvbmZpZ3VyYXRpb24gaW5zdGVhZC4gRnV0dXJlIHZlcnNpb25zIG9mIFB5dGhvbiBtYXkKKyAgICAgIG5vdCBlbmFibGUgdGhpcyBmaW5kZXIgYnkgZGVmYXVsdC4KKwogCiAuLiBjbGFzczo6IFBhdGhGaW5kZXIKIApAQCAtOTM2LDYgKzk0NCwxMCBAQAogICAgICAgQ29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgOm1ldGg6YGltcG9ydGxpYi5hYmMuTG9hZGVyLmxvYWRfbW9kdWxlYCB3aGVyZQogICAgICAgc3BlY2lmeWluZyB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRvIGxvYWQgaXMgb3B0aW9uYWwuCiAKKyAgICAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjYKKworICAgICAgICAgVXNlIDptZXRoOmBpbXBvcnRsaWIuYWJjLkxvYWRlci5leGVjX21vZHVsZWAgaW5zdGVhZC4KKwogCiAuLiBjbGFzczo6IFNvdXJjZWxlc3NGaWxlTG9hZGVyKGZ1bGxuYW1lLCBwYXRoKQogCkBAIC05NzUsNiArOTg3LDEwIEBACiAgICBDb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiA6bWV0aDpgaW1wb3J0bGliLmFiYy5Mb2FkZXIubG9hZF9tb2R1bGVgIHdoZXJlCiAgICBzcGVjaWZ5aW5nIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdG8gbG9hZCBpcyBvcHRpb25hbC4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuNgorCisgICAgICBVc2UgOm1ldGg6YGltcG9ydGxpYi5hYmMuTG9hZGVyLmV4ZWNfbW9kdWxlYCBpbnN0ZWFkLgorCiAKIC4uIGNsYXNzOjogRXh0ZW5zaW9uRmlsZUxvYWRlcihmdWxsbmFtZSwgcGF0aCkKIApAQCAtMTEzNyw2ICsxMTUzLDkgQEAKICAgICAgIFRoZSAqb3B0aW1pemF0aW9uKiBwYXJhbWV0ZXIgd2FzIGFkZGVkIGFuZCB0aGUgKmRlYnVnX292ZXJyaWRlKiBwYXJhbWV0ZXIKICAgICAgIHdhcyBkZXByZWNhdGVkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IHNvdXJjZV9mcm9tX2NhY2hlKHBhdGgpCiAKQEAgLTExNTAsNiArMTE2OSw5IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogLi4gZnVuY3Rpb246OiBkZWNvZGVfc291cmNlKHNvdXJjZV9ieXRlcykKIAogICAgRGVjb2RlIHRoZSBnaXZlbiBieXRlcyByZXByZXNlbnRpbmcgc291cmNlIGNvZGUgYW5kIHJldHVybiBpdCBhcyBhIHN0cmluZwpAQCAtMTE5MiwxMiArMTIxNCwxMyBAQAogCiAuLiBmdW5jdGlvbjo6IG1vZHVsZV9mcm9tX3NwZWMoc3BlYykKIAotICAgQ3JlYXRlIGEgbmV3IG1vZHVsZSBiYXNlZCBvbiAqKnNwZWMqKiBhbmQgYGBzcGVjLmxvYWRlci5jcmVhdGVfbW9kdWxlKClgYC4KKyAgIENyZWF0ZSBhIG5ldyBtb2R1bGUgYmFzZWQgb24gKipzcGVjKiogYW5kCisgICA6bWV0aDpgc3BlYy5sb2FkZXIuY3JlYXRlX21vZHVsZSA8aW1wb3J0bGliLmFiYy5Mb2FkZXIuY3JlYXRlX21vZHVsZT5gLgogCi0gICBJZiBgYHNwZWMubG9hZGVyLmNyZWF0ZV9tb2R1bGUoKWBgIGRvZXMgbm90IHJldHVybiBgYE5vbmVgYCwgdGhlbiBhbnkKLSAgIHByZS1leGlzdGluZyBhdHRyaWJ1dGVzIHdpbGwgbm90IGJlIHJlc2V0LiBBbHNvLCBubyA6ZXhjOmBBdHRyaWJ1dGVFcnJvcmAKLSAgIHdpbGwgYmUgcmFpc2VkIGlmIHRyaWdnZXJlZCB3aGlsZSBhY2Nlc3NpbmcgKipzcGVjKiogb3Igc2V0dGluZyBhbiBhdHRyaWJ1dGUKLSAgIG9uIHRoZSBtb2R1bGUuCisgICBJZiA6bWV0aDpgc3BlYy5sb2FkZXIuY3JlYXRlX21vZHVsZSA8aW1wb3J0bGliLmFiYy5Mb2FkZXIuY3JlYXRlX21vZHVsZT5gCisgICBkb2VzIG5vdCByZXR1cm4gYGBOb25lYGAsIHRoZW4gYW55IHByZS1leGlzdGluZyBhdHRyaWJ1dGVzIHdpbGwgbm90IGJlIHJlc2V0LgorICAgQWxzbywgbm8gOmV4YzpgQXR0cmlidXRlRXJyb3JgIHdpbGwgYmUgcmFpc2VkIGlmIHRyaWdnZXJlZCB3aGlsZSBhY2Nlc3NpbmcKKyAgICoqc3BlYyoqIG9yIHNldHRpbmcgYW4gYXR0cmlidXRlIG9uIHRoZSBtb2R1bGUuCiAKICAgIFRoaXMgZnVuY3Rpb24gaXMgcHJlZmVycmVkIG92ZXIgdXNpbmcgOmNsYXNzOmB0eXBlcy5Nb2R1bGVUeXBlYCB0byBjcmVhdGUgYQogICAgbmV3IG1vZHVsZSBhcyAqKnNwZWMqKiBpcyB1c2VkIHRvIHNldCBhcyBtYW55IGltcG9ydC1jb250cm9sbGVkIGF0dHJpYnV0ZXMgb24KQEAgLTEyNTksNyArMTI4Miw4IEBACiAKIC4uIGRlY29yYXRvcjo6IHNldF9wYWNrYWdlCiAKLSAgIEEgOnRlcm06YGRlY29yYXRvcmAgZm9yIDptZXRoOmBpbXBvcnRsaWIuYWJjLkxvYWRlci5sb2FkX21vZHVsZWAgdG8gc2V0IHRoZSA6YXR0cjpgX19wYWNrYWdlX19gIGF0dHJpYnV0ZSBvbiB0aGUgcmV0dXJuZWQgbW9kdWxlLiBJZiA6YXR0cjpgX19wYWNrYWdlX19gCisgICBBIDp0ZXJtOmBkZWNvcmF0b3JgIGZvciA6bWV0aDpgaW1wb3J0bGliLmFiYy5Mb2FkZXIubG9hZF9tb2R1bGVgIHRvIHNldCB0aGUKKyAgIDphdHRyOmBfX3BhY2thZ2VfX2AgYXR0cmlidXRlIG9uIHRoZSByZXR1cm5lZCBtb2R1bGUuIElmIDphdHRyOmBfX3BhY2thZ2VfX2AKICAgIGlzIHNldCBhbmQgaGFzIGEgdmFsdWUgb3RoZXIgdGhhbiBgYE5vbmVgYCBpdCB3aWxsIG5vdCBiZSBjaGFuZ2VkLgogCiAgICAuLiBkZXByZWNhdGVkOjogMy40CkBAIC0xMjg0LDYgKzEzMDgsOSBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIC4uIGNsYXNzOjogTGF6eUxvYWRlcihsb2FkZXIpCiAKICAgIEEgY2xhc3Mgd2hpY2ggcG9zdHBvbmVzIHRoZSBleGVjdXRpb24gb2YgdGhlIGxvYWRlciBvZiBhIG1vZHVsZSB1bnRpbCB0aGUKQEAgLTEyOTIsMTMgKzEzMTksMTIgQEAKICAgIFRoaXMgY2xhc3MgKipvbmx5Kiogd29ya3Mgd2l0aCBsb2FkZXJzIHRoYXQgZGVmaW5lCiAgICA6bWV0aDpgfmltcG9ydGxpYi5hYmMuTG9hZGVyLmV4ZWNfbW9kdWxlYCBhcyBjb250cm9sIG92ZXIgd2hhdCBtb2R1bGUgdHlwZQogICAgaXMgdXNlZCBmb3IgdGhlIG1vZHVsZSBpcyByZXF1aXJlZC4gRm9yIHRob3NlIHNhbWUgcmVhc29ucywgdGhlIGxvYWRlcidzCi0gICA6bWV0aDpgfmltcG9ydGxpYi5hYmMuTG9hZGVyLmNyZWF0ZV9tb2R1bGVgIG1ldGhvZCB3aWxsIGJlIGlnbm9yZWQgKGkuZS4sIHRoZQotICAgbG9hZGVyJ3MgbWV0aG9kIHNob3VsZCBvbmx5IHJldHVybiBgYE5vbmVgYDsgdGhpcyBleGNsdWRlcwotICAgOmNsYXNzOmBCdWlsdGluSW1wb3J0ZXJgIGFuZCA6Y2xhc3M6YEV4dGVuc2lvbkZpbGVMb2FkZXJgKS4gRmluYWxseSwKLSAgIG1vZHVsZXMgd2hpY2ggc3Vic3RpdHV0ZSB0aGUgb2JqZWN0IHBsYWNlZCBpbnRvIDphdHRyOmBzeXMubW9kdWxlc2Agd2lsbAotICAgbm90IHdvcmsgYXMgdGhlcmUgaXMgbm8gd2F5IHRvIHByb3Blcmx5IHJlcGxhY2UgdGhlIG1vZHVsZSByZWZlcmVuY2VzCi0gICB0aHJvdWdob3V0IHRoZSBpbnRlcnByZXRlciBzYWZlbHk7IDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZCBpZiBzdWNoIGEKLSAgIHN1YnN0aXR1dGlvbiBpcyBkZXRlY3RlZC4KKyAgIDptZXRoOmB+aW1wb3J0bGliLmFiYy5Mb2FkZXIuY3JlYXRlX21vZHVsZWAgbWV0aG9kIG11c3QgcmV0dXJuIGBgTm9uZWBgIG9yIGEKKyAgIHR5cGUgZm9yIHdoaWNoIGl0cyBgYF9fY2xhc3NfX2BgIGF0dHJpYnV0ZSBjYW4gYmUgbXV0YXRlZCBhbG9uZyB3aXRoIG5vdAorICAgdXNpbmcgOnRlcm06YHNsb3RzIDxfX3Nsb3RzX18+YC4gRmluYWxseSwgbW9kdWxlcyB3aGljaCBzdWJzdGl0dXRlIHRoZSBvYmplY3QKKyAgIHBsYWNlZCBpbnRvIDphdHRyOmBzeXMubW9kdWxlc2Agd2lsbCBub3Qgd29yayBhcyB0aGVyZSBpcyBubyB3YXkgdG8gcHJvcGVybHkKKyAgIHJlcGxhY2UgdGhlIG1vZHVsZSByZWZlcmVuY2VzIHRocm91Z2hvdXQgdGhlIGludGVycHJldGVyIHNhZmVseTsKKyAgIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZCBpZiBzdWNoIGEgc3Vic3RpdHV0aW9uIGlzIGRldGVjdGVkLgogCiAgICAuLiBub3RlOjoKICAgICAgIEZvciBwcm9qZWN0cyB3aGVyZSBzdGFydHVwIHRpbWUgaXMgY3JpdGljYWwsIHRoaXMgY2xhc3MgYWxsb3dzIGZvcgpAQCAtMTMwOSw2ICsxMzM1LDExIEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQmVnYW4gY2FsbGluZyA6bWV0aDpgfmltcG9ydGxpYi5hYmMuTG9hZGVyLmNyZWF0ZV9tb2R1bGVgLCByZW1vdmluZyB0aGUKKyAgICAgIGNvbXBhdGliaWxpdHkgd2FybmluZyBmb3IgOmNsYXNzOmBpbXBvcnRsaWIubWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlcmAgYW5kCisgICAgICA6Y2xhc3M6YGltcG9ydGxpYi5tYWNoaW5lcnkuRXh0ZW5zaW9uRmlsZUxvYWRlcmAuCisKICAgIC4uIGNsYXNzbWV0aG9kOjogZmFjdG9yeShsb2FkZXIpCiAKICAgICAgIEEgc3RhdGljIG1ldGhvZCB3aGljaCByZXR1cm5zIGEgY2FsbGFibGUgdGhhdCBjcmVhdGVzIGEgbGF6eSBsb2FkZXIuIFRoaXMKQEAgLTEzMjAsMyArMTM1MSwxMzkgQEAKICAgICAgICAgbG9hZGVyID0gaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyCiAgICAgICAgIGxhenlfbG9hZGVyID0gaW1wb3J0bGliLnV0aWwuTGF6eUxvYWRlci5mYWN0b3J5KGxvYWRlcikKICAgICAgICAgZmluZGVyID0gaW1wb3J0bGliLm1hY2hpbmVyeS5GaWxlRmluZGVyKHBhdGgsIChsYXp5X2xvYWRlciwgc3VmZml4ZXMpKQorCisuLiBfaW1wb3J0bGliLWV4YW1wbGVzOgorCitFeGFtcGxlcworLS0tLS0tLS0KKworSW1wb3J0aW5nIHByb2dyYW1tYXRpY2FsbHkKKycnJycnJycnJycnJycnJycnJycnJycnJycnCisKK1RvIHByb2dyYW1tYXRpY2FsbHkgaW1wb3J0IGEgbW9kdWxlLCB1c2UgOmZ1bmM6YGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlYC4KKzo6CisKKyAgaW1wb3J0IGltcG9ydGxpYgorCisgIGl0ZXJ0b29scyA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCdpdGVydG9vbHMnKQorCisKK0NoZWNraW5nIGlmIGEgbW9kdWxlIGNhbiBiZSBpbXBvcnRlZAorJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnCisKK0lmIHlvdSBuZWVkIHRvIGZpbmQgb3V0IGlmIGEgbW9kdWxlIGNhbiBiZSBpbXBvcnRlZCB3aXRob3V0IGFjdHVhbGx5IGRvaW5nIHRoZQoraW1wb3J0LCB0aGVuIHlvdSBzaG91bGQgdXNlIDpmdW5jOmBpbXBvcnRsaWIudXRpbC5maW5kX3NwZWNgLgorOjoKKworICBpbXBvcnQgaW1wb3J0bGliLnV0aWwKKyAgaW1wb3J0IHN5cworCisgICMgRm9yIGlsbHVzdHJhdGl2ZSBwdXJwb3Nlcy4KKyAgbmFtZSA9ICdpdGVydG9vbHMnCisKKyAgc3BlYyA9IGltcG9ydGxpYi51dGlsLmZpbmRfc3BlYyhuYW1lKQorICBpZiBzcGVjIGlzIE5vbmU6CisgICAgICBwcmludCgiY2FuJ3QgZmluZCB0aGUgaXRlcnRvb2xzIG1vZHVsZSIpCisgIGVsc2U6CisgICAgICAjIElmIHlvdSBjaG9zZSB0byBwZXJmb3JtIHRoZSBhY3R1YWwgaW1wb3J0IC4uLgorICAgICAgbW9kdWxlID0gaW1wb3J0bGliLnV0aWwubW9kdWxlX2Zyb21fc3BlYyhzcGVjKQorICAgICAgc3BlYy5sb2FkZXIuZXhlY19tb2R1bGUobW9kdWxlKQorICAgICAgIyBBZGRpbmcgdGhlIG1vZHVsZSB0byBzeXMubW9kdWxlcyBpcyBvcHRpb25hbC4KKyAgICAgIHN5cy5tb2R1bGVzW25hbWVdID0gbW9kdWxlCisKKworSW1wb3J0aW5nIGEgc291cmNlIGZpbGUgZGlyZWN0bHkKKycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnCisKK1RvIGltcG9ydCBhIFB5dGhvbiBzb3VyY2UgZmlsZSBkaXJlY3RseSwgdXNlIHRoZSBmb2xsb3dpbmcgcmVjaXBlCisoUHl0aG9uIDMuNCBhbmQgbmV3ZXIgb25seSk6OgorCisgIGltcG9ydCBpbXBvcnRsaWIudXRpbAorICBpbXBvcnQgc3lzCisKKyAgIyBGb3IgaWxsdXN0cmF0aXZlIHB1cnBvc2VzLgorICBpbXBvcnQgdG9rZW5pemUKKyAgZmlsZV9wYXRoID0gdG9rZW5pemUuX19maWxlX18KKyAgbW9kdWxlX25hbWUgPSB0b2tlbml6ZS5fX25hbWVfXworCisgIHNwZWMgPSBpbXBvcnRsaWIudXRpbC5zcGVjX2Zyb21fZmlsZV9sb2NhdGlvbihtb2R1bGVfbmFtZSwgZmlsZV9wYXRoKQorICBtb2R1bGUgPSBpbXBvcnRsaWIudXRpbC5tb2R1bGVfZnJvbV9zcGVjKHNwZWMpCisgIHNwZWMubG9hZGVyLmV4ZWNfbW9kdWxlKG1vZHVsZSkKKyAgIyBPcHRpb25hbDsgb25seSBuZWNlc3NhcnkgaWYgeW91IHdhbnQgdG8gYmUgYWJsZSB0byBpbXBvcnQgdGhlIG1vZHVsZQorICAjIGJ5IG5hbWUgbGF0ZXIuCisgIHN5cy5tb2R1bGVzW21vZHVsZV9uYW1lXSA9IG1vZHVsZQorCisKK1NldHRpbmcgdXAgYW4gaW1wb3J0ZXIKKycnJycnJycnJycnJycnJycnJycnJycKKworRm9yIGRlZXAgY3VzdG9taXphdGlvbnMgb2YgaW1wb3J0LCB5b3UgdHlwaWNhbGx5IHdhbnQgdG8gaW1wbGVtZW50IGFuCis6dGVybTpgaW1wb3J0ZXJgLiBUaGlzIG1lYW5zIG1hbmFnaW5nIGJvdGggdGhlIDp0ZXJtOmBmaW5kZXJgIGFuZCA6dGVybTpgbG9hZGVyYAorc2lkZSBvZiB0aGluZ3MuIEZvciBmaW5kZXJzIHRoZXJlIGFyZSB0d28gZmxhdm91cnMgdG8gY2hvb3NlIGZyb20gZGVwZW5kaW5nIG9uCit5b3VyIG5lZWRzOiBhIDp0ZXJtOmBtZXRhIHBhdGggZmluZGVyYCBvciBhIDp0ZXJtOmBwYXRoIGVudHJ5IGZpbmRlcmAuIFRoZQorZm9ybWVyIGlzIHdoYXQgeW91IHdvdWxkIHB1dCBvbiA6YXR0cjpgc3lzLm1ldGFfcGF0aGAgd2hpbGUgdGhlIGxhdHRlciBpcyB3aGF0Cit5b3UgY3JlYXRlIHVzaW5nIGEgOnRlcm06YHBhdGggZW50cnkgaG9va2Agb24gOmF0dHI6YHN5cy5wYXRoX2hvb2tzYCB3aGljaCB3b3Jrcword2l0aCA6YXR0cjpgc3lzLnBhdGhgIGVudHJpZXMgdG8gcG90ZW50aWFsbHkgY3JlYXRlIGEgZmluZGVyLiBUaGlzIGV4YW1wbGUgd2lsbAorc2hvdyB5b3UgaG93IHRvIHJlZ2lzdGVyIHlvdXIgb3duIGltcG9ydGVycyBzbyB0aGF0IGltcG9ydCB3aWxsIHVzZSB0aGVtIChmb3IKK2NyZWF0aW5nIGFuIGltcG9ydGVyIGZvciB5b3Vyc2VsZiwgcmVhZCB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGFwcHJvcHJpYXRlCitjbGFzc2VzIGRlZmluZWQgd2l0aGluIHRoaXMgcGFja2FnZSk6OgorCisgIGltcG9ydCBpbXBvcnRsaWIubWFjaGluZXJ5CisgIGltcG9ydCBzeXMKKworICAjIEZvciBpbGx1c3RyYXRpdmUgcHVycG9zZXMgb25seS4KKyAgU3BhbU1ldGFQYXRoRmluZGVyID0gaW1wb3J0bGliLm1hY2hpbmVyeS5QYXRoRmluZGVyCisgIFNwYW1QYXRoRW50cnlGaW5kZXIgPSBpbXBvcnRsaWIubWFjaGluZXJ5LkZpbGVGaW5kZXIKKyAgbG9hZGVyX2RldGFpbHMgPSAoaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyLAorICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LlNPVVJDRV9TVUZGSVhFUykKKworICAjIFNldHRpbmcgdXAgYSBtZXRhIHBhdGggZmluZGVyLgorICAjIE1ha2Ugc3VyZSB0byBwdXQgdGhlIGZpbmRlciBpbiB0aGUgcHJvcGVyIGxvY2F0aW9uIGluIHRoZSBsaXN0IGluIHRlcm1zIG9mCisgICMgcHJpb3JpdHkuCisgIHN5cy5tZXRhX3BhdGguYXBwZW5kKFNwYW1NZXRhUGF0aEZpbmRlcikKKworICAjIFNldHRpbmcgdXAgYSBwYXRoIGVudHJ5IGZpbmRlci4KKyAgIyBNYWtlIHN1cmUgdG8gcHV0IHRoZSBwYXRoIGhvb2sgaW4gdGhlIHByb3BlciBsb2NhdGlvbiBpbiB0aGUgbGlzdCBpbiB0ZXJtcworICAjIG9mIHByaW9yaXR5LgorICBzeXMucGF0aF9ob29rcy5hcHBlbmQoU3BhbVBhdGhFbnRyeUZpbmRlci5wYXRoX2hvb2sobG9hZGVyX2RldGFpbHMpKQorCisKK0FwcHJveGltYXRpbmcgOmZ1bmM6YGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlYAorJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnCisKK0ltcG9ydCBpdHNlbGYgaXMgaW1wbGVtZW50ZWQgaW4gUHl0aG9uIGNvZGUsIG1ha2luZyBpdCBwb3NzaWJsZSB0bworZXhwb3NlIG1vc3Qgb2YgdGhlIGltcG9ydCBtYWNoaW5lcnkgdGhyb3VnaCBpbXBvcnRsaWIuIFRoZSBmb2xsb3dpbmcKK2hlbHBzIGlsbHVzdHJhdGUgdGhlIHZhcmlvdXMgQVBJcyB0aGF0IGltcG9ydGxpYiBleHBvc2VzIGJ5IHByb3ZpZGluZyBhbgorYXBwcm94aW1hdGUgaW1wbGVtZW50YXRpb24gb2YKKzpmdW5jOmBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZWAgKFB5dGhvbiAzLjQgYW5kIG5ld2VyIGZvciB0aGUgaW1wb3J0bGliIHVzYWdlLAorUHl0aG9uIDMuNiBhbmQgbmV3ZXIgZm9yIG90aGVyIHBhcnRzIG9mIHRoZSBjb2RlKS4KKzo6CisKKyAgaW1wb3J0IGltcG9ydGxpYi51dGlsCisgIGltcG9ydCBzeXMKKworICBkZWYgaW1wb3J0X21vZHVsZShuYW1lLCBwYWNrYWdlPU5vbmUpOgorICAgICAgIiIiQW4gYXBwcm94aW1hdGUgaW1wbGVtZW50YXRpb24gb2YgaW1wb3J0LiIiIgorICAgICAgYWJzb2x1dGVfbmFtZSA9IGltcG9ydGxpYi51dGlsLnJlc29sdmVfbmFtZShuYW1lLCBwYWNrYWdlKQorICAgICAgdHJ5OgorICAgICAgICAgIHJldHVybiBzeXMubW9kdWxlc1thYnNvbHV0ZV9uYW1lXQorICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgIHBhc3MKKworICAgICAgcGF0aCA9IE5vbmUKKyAgICAgIGlmICcuJyBpbiBhYnNvbHV0ZV9uYW1lOgorICAgICAgICAgIHBhcmVudF9uYW1lLCBfLCBjaGlsZF9uYW1lID0gYWJzb2x1dGVfbmFtZS5ycGFydGl0aW9uKCcuJykKKyAgICAgICAgICBwYXJlbnRfbW9kdWxlID0gaW1wb3J0X21vZHVsZShwYXJlbnRfbmFtZSkKKyAgICAgICAgICBwYXRoID0gcGFyZW50X21vZHVsZS5zcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zCisgICAgICBmb3IgZmluZGVyIGluIHN5cy5tZXRhX3BhdGg6CisgICAgICAgICAgc3BlYyA9IGZpbmRlci5maW5kX3NwZWMoYWJzb2x1dGVfbmFtZSwgcGF0aCkKKyAgICAgICAgICBpZiBzcGVjIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICBicmVhaworICAgICAgZWxzZToKKyAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihmJ05vIG1vZHVsZSBuYW1lZCB7YWJzb2x1dGVfbmFtZSFyfScpCisgICAgICBtb2R1bGUgPSBpbXBvcnRsaWIudXRpbC5tb2R1bGVfZnJvbV9zcGVjKHNwZWMpCisgICAgICBzcGVjLmxvYWRlci5leGVjX21vZHVsZShtb2R1bGUpCisgICAgICBzeXMubW9kdWxlc1thYnNvbHV0ZV9uYW1lXSA9IG1vZHVsZQorICAgICAgaWYgcGF0aCBpcyBub3QgTm9uZToKKyAgICAgICAgICBzZXRhdHRyKHBhcmVudF9tb2R1bGUsIGNoaWxkX25hbWUsIG1vZHVsZSkKKyAgICAgIHJldHVybiBtb2R1bGUKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2luc3BlY3QucnN0IGIvRG9jL2xpYnJhcnkvaW5zcGVjdC5yc3QKaW5kZXggNjJhMzk4OC4uNDFhNzg0ZCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaW5zcGVjdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaW5zcGVjdC5yc3QKQEAgLTIzNSwyNCArMjM1LDYgQEAKICAgICAgIGxpc3RlZCBpbiB0aGUgbWV0YWNsYXNzJyBjdXN0b20gOm1ldGg6YF9fZGlyX19gLgogCiAKLS4uIGZ1bmN0aW9uOjogZ2V0bW9kdWxlaW5mbyhwYXRoKQotCi0gICBSZXR1cm5zIGEgOnRlcm06YG5hbWVkIHR1cGxlYCBgYE1vZHVsZUluZm8obmFtZSwgc3VmZml4LCBtb2RlLCBtb2R1bGVfdHlwZSlgYAotICAgb2YgdmFsdWVzIHRoYXQgZGVzY3JpYmUgaG93IFB5dGhvbiB3aWxsIGludGVycHJldCB0aGUgZmlsZSBpZGVudGlmaWVkIGJ5Ci0gICAqcGF0aCogaWYgaXQgaXMgYSBtb2R1bGUsIG9yIGBgTm9uZWBgIGlmIGl0IHdvdWxkIG5vdCBiZSBpZGVudGlmaWVkIGFzIGEKLSAgIG1vZHVsZS4gIEluIHRoYXQgdHVwbGUsICpuYW1lKiBpcyB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIHdpdGhvdXQgdGhlIG5hbWUgb2YKLSAgIGFueSBlbmNsb3NpbmcgcGFja2FnZSwgKnN1ZmZpeCogaXMgdGhlIHRyYWlsaW5nIHBhcnQgb2YgdGhlIGZpbGUgbmFtZSAod2hpY2gKLSAgIG1heSBub3QgYmUgYSBkb3QtZGVsaW1pdGVkIGV4dGVuc2lvbiksICptb2RlKiBpcyB0aGUgOmZ1bmM6YG9wZW5gIG1vZGUgdGhhdAotICAgd291bGQgYmUgdXNlZCAoYGAncidgYCBvciBgYCdyYidgYCksIGFuZCAqbW9kdWxlX3R5cGUqIGlzIGFuIGludGVnZXIgZ2l2aW5nCi0gICB0aGUgdHlwZSBvZiB0aGUgbW9kdWxlLiAgKm1vZHVsZV90eXBlKiB3aWxsIGhhdmUgYSB2YWx1ZSB3aGljaCBjYW4gYmUKLSAgIGNvbXBhcmVkIHRvIHRoZSBjb25zdGFudHMgZGVmaW5lZCBpbiB0aGUgOm1vZDpgaW1wYCBtb2R1bGU7IHNlZSB0aGUKLSAgIGRvY3VtZW50YXRpb24gZm9yIHRoYXQgbW9kdWxlIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIG1vZHVsZSB0eXBlcy4KLQotICAgLi4gZGVwcmVjYXRlZDo6IDMuMwotICAgICAgWW91IG1heSBjaGVjayB0aGUgZmlsZSBwYXRoJ3Mgc3VmZml4IGFnYWluc3QgdGhlIHN1cHBvcnRlZCBzdWZmaXhlcwotICAgICAgbGlzdGVkIGluIDptb2Q6YGltcG9ydGxpYi5tYWNoaW5lcnlgIHRvIGluZmVyIHRoZSBzYW1lIGluZm9ybWF0aW9uLgotCi0KIC4uIGZ1bmN0aW9uOjogZ2V0bW9kdWxlbmFtZShwYXRoKQogCiAgICBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSBuYW1lZCBieSB0aGUgZmlsZSAqcGF0aCosIHdpdGhvdXQgaW5jbHVkaW5nIHRoZQpAQCAtMjY2LDggKzI0OCw3IEBACiAgICBzdGlsbCByZXR1cm4gYGBOb25lYGAuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCi0gICAgICBUaGlzIGZ1bmN0aW9uIGlzIG5vdyBiYXNlZCBkaXJlY3RseSBvbiA6bW9kOmBpbXBvcnRsaWJgIHJhdGhlciB0aGFuIHRoZQotICAgICAgZGVwcmVjYXRlZCA6ZnVuYzpgZ2V0bW9kdWxlaW5mb2AuCisgICAgICBUaGUgZnVuY3Rpb24gaXMgYmFzZWQgZGlyZWN0bHkgb24gOm1vZDpgaW1wb3J0bGliYC4KIAogCiAuLiBmdW5jdGlvbjo6IGlzbW9kdWxlKG9iamVjdCkKQEAgLTMzNyw2ICszMTgsMjcgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogCiAKKy4uIGZ1bmN0aW9uOjogaXNhc3luY2dlbmZ1bmN0aW9uKG9iamVjdCkKKworICAgUmV0dXJuIHRydWUgaWYgdGhlIG9iamVjdCBpcyBhbiA6dGVybTpgYXN5bmNocm9ub3VzIGdlbmVyYXRvcmAgZnVuY3Rpb24sCisgICBmb3IgZXhhbXBsZTo6CisKKyAgICA+Pj4gYXN5bmMgZGVmIGFnZW4oKToKKyAgICAuLi4gICAgIHlpZWxkIDEKKyAgICAuLi4KKyAgICA+Pj4gaW5zcGVjdC5pc2FzeW5jZ2VuZnVuY3Rpb24oYWdlbikKKyAgICBUcnVlCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisKKy4uIGZ1bmN0aW9uOjogaXNhc3luY2dlbihvYmplY3QpCisKKyAgIFJldHVybiB0cnVlIGlmIHRoZSBvYmplY3QgaXMgYW4gOnRlcm06YGFzeW5jaHJvbm91cyBnZW5lcmF0b3IgaXRlcmF0b3JgCisgICBjcmVhdGVkIGJ5IGFuIDp0ZXJtOmBhc3luY2hyb25vdXMgZ2VuZXJhdG9yYCBmdW5jdGlvbi4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIC4uIGZ1bmN0aW9uOjogaXN0cmFjZWJhY2sob2JqZWN0KQogCiAgICBSZXR1cm4gdHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIGEgdHJhY2ViYWNrLgpAQCAtNjQ2LDYgKzY0OCwxNiBAQAogICAgICAgVGhlIG5hbWUgb2YgdGhlIHBhcmFtZXRlciBhcyBhIHN0cmluZy4gIFRoZSBuYW1lIG11c3QgYmUgYSB2YWxpZAogICAgICAgUHl0aG9uIGlkZW50aWZpZXIuCiAKKyAgICAgIC4uIGltcGwtZGV0YWlsOjoKKworICAgICAgICAgQ1B5dGhvbiBnZW5lcmF0ZXMgaW1wbGljaXQgcGFyYW1ldGVyIG5hbWVzIG9mIHRoZSBmb3JtIGBgLjBgYCBvbiB0aGUKKyAgICAgICAgIGNvZGUgb2JqZWN0cyB1c2VkIHRvIGltcGxlbWVudCBjb21wcmVoZW5zaW9ucyBhbmQgZ2VuZXJhdG9yCisgICAgICAgICBleHByZXNzaW9ucy4KKworICAgICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgICAgICAgIFRoZXNlIHBhcmFtZXRlciBuYW1lcyBhcmUgZXhwb3NlZCBieSB0aGlzIG1vZHVsZSBhcyBuYW1lcyBsaWtlCisgICAgICAgICAgICBgYGltcGxpY2l0MGBgLgorCiAgICAuLiBhdHRyaWJ1dGU6OiBQYXJhbWV0ZXIuZGVmYXVsdAogCiAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIHBhcmFtZXRlci4gIElmIHRoZSBwYXJhbWV0ZXIgaGFzIG5vIGRlZmF1bHQKQEAgLTgyNCw0NyArODM2LDY1IEBACiAKIC4uIGZ1bmN0aW9uOjogZ2V0YXJnc3BlYyhmdW5jKQogCi0gICBHZXQgdGhlIG5hbWVzIGFuZCBkZWZhdWx0IHZhbHVlcyBvZiBhIFB5dGhvbiBmdW5jdGlvbidzIGFyZ3VtZW50cy4gQQorICAgR2V0IHRoZSBuYW1lcyBhbmQgZGVmYXVsdCB2YWx1ZXMgb2YgYSBQeXRob24gZnVuY3Rpb24ncyBwYXJhbWV0ZXJzLiBBCiAgICA6dGVybTpgbmFtZWQgdHVwbGVgIGBgQXJnU3BlYyhhcmdzLCB2YXJhcmdzLCBrZXl3b3JkcywgZGVmYXVsdHMpYGAgaXMKLSAgIHJldHVybmVkLiAqYXJncyogaXMgYSBsaXN0IG9mIHRoZSBhcmd1bWVudCBuYW1lcy4gKnZhcmFyZ3MqIGFuZCAqa2V5d29yZHMqCi0gICBhcmUgdGhlIG5hbWVzIG9mIHRoZSBgYCpgYCBhbmQgYGAqKmBgIGFyZ3VtZW50cyBvciBgYE5vbmVgYC4gKmRlZmF1bHRzKiBpcyBhCisgICByZXR1cm5lZC4gKmFyZ3MqIGlzIGEgbGlzdCBvZiB0aGUgcGFyYW1ldGVyIG5hbWVzLiAqdmFyYXJncyogYW5kICprZXl3b3JkcyoKKyAgIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGBgKmBgIGFuZCBgYCoqYGAgcGFyYW1ldGVycyBvciBgYE5vbmVgYC4gKmRlZmF1bHRzKiBpcyBhCiAgICB0dXBsZSBvZiBkZWZhdWx0IGFyZ3VtZW50IHZhbHVlcyBvciBgYE5vbmVgYCBpZiB0aGVyZSBhcmUgbm8gZGVmYXVsdAogICAgYXJndW1lbnRzOyBpZiB0aGlzIHR1cGxlIGhhcyAqbiogZWxlbWVudHMsIHRoZXkgY29ycmVzcG9uZCB0byB0aGUgbGFzdAogICAgKm4qIGVsZW1lbnRzIGxpc3RlZCBpbiAqYXJncyouCiAKICAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjAKLSAgICAgIFVzZSA6ZnVuYzpgc2lnbmF0dXJlYCBhbmQKKyAgICAgIFVzZSA6ZnVuYzpgZ2V0ZnVsbGFyZ3NwZWNgIGZvciBhbiB1cGRhdGVkIEFQSSB0aGF0IGlzIHVzdWFsbHkgYSBkcm9wLWluCisgICAgICByZXBsYWNlbWVudCwgYnV0IGFsc28gY29ycmVjdGx5IGhhbmRsZXMgZnVuY3Rpb24gYW5ub3RhdGlvbnMgYW5kCisgICAgICBrZXl3b3JkLW9ubHkgcGFyYW1ldGVycy4KKworICAgICAgQWx0ZXJuYXRpdmVseSwgdXNlIDpmdW5jOmBzaWduYXR1cmVgIGFuZAogICAgICAgOnJlZjpgU2lnbmF0dXJlIE9iamVjdCA8aW5zcGVjdC1zaWduYXR1cmUtb2JqZWN0PmAsIHdoaWNoIHByb3ZpZGUgYQotICAgICAgYmV0dGVyIGludHJvc3BlY3RpbmcgQVBJIGZvciBjYWxsYWJsZXMuCisgICAgICBtb3JlIHN0cnVjdHVyZWQgaW50cm9zcGVjdGlvbiBBUEkgZm9yIGNhbGxhYmxlcy4KIAogCiAuLiBmdW5jdGlvbjo6IGdldGZ1bGxhcmdzcGVjKGZ1bmMpCiAKLSAgIEdldCB0aGUgbmFtZXMgYW5kIGRlZmF1bHQgdmFsdWVzIG9mIGEgUHl0aG9uIGZ1bmN0aW9uJ3MgYXJndW1lbnRzLiAgQQorICAgR2V0IHRoZSBuYW1lcyBhbmQgZGVmYXVsdCB2YWx1ZXMgb2YgYSBQeXRob24gZnVuY3Rpb24ncyBwYXJhbWV0ZXJzLiAgQQogICAgOnRlcm06YG5hbWVkIHR1cGxlYCBpcyByZXR1cm5lZDoKIAogICAgYGBGdWxsQXJnU3BlYyhhcmdzLCB2YXJhcmdzLCB2YXJrdywgZGVmYXVsdHMsIGt3b25seWFyZ3MsIGt3b25seWRlZmF1bHRzLAogICAgYW5ub3RhdGlvbnMpYGAKIAotICAgKmFyZ3MqIGlzIGEgbGlzdCBvZiB0aGUgYXJndW1lbnQgbmFtZXMuICAqdmFyYXJncyogYW5kICp2YXJrdyogYXJlIHRoZSBuYW1lcwotICAgb2YgdGhlIGBgKmBgIGFuZCBgYCoqYGAgYXJndW1lbnRzIG9yIGBgTm9uZWBgLiAgKmRlZmF1bHRzKiBpcyBhbiAqbiotdHVwbGUKLSAgIG9mIHRoZSBkZWZhdWx0IHZhbHVlcyBvZiB0aGUgbGFzdCAqbiogYXJndW1lbnRzLCBvciBgYE5vbmVgYCBpZiB0aGVyZSBhcmUgbm8KLSAgIGRlZmF1bHQgYXJndW1lbnRzLiAgKmt3b25seWFyZ3MqIGlzIGEgbGlzdCBvZgotICAga2V5d29yZC1vbmx5IGFyZ3VtZW50IG5hbWVzLiAgKmt3b25seWRlZmF1bHRzKiBpcyBhIGRpY3Rpb25hcnkgbWFwcGluZyBuYW1lcwotICAgZnJvbSBrd29ubHlhcmdzIHRvIGRlZmF1bHRzLiAgKmFubm90YXRpb25zKiBpcyBhIGRpY3Rpb25hcnkgbWFwcGluZyBhcmd1bWVudAotICAgbmFtZXMgdG8gYW5ub3RhdGlvbnMuCisgICAqYXJncyogaXMgYSBsaXN0IG9mIHRoZSBwb3NpdGlvbmFsIHBhcmFtZXRlciBuYW1lcy4KKyAgICp2YXJhcmdzKiBpcyB0aGUgbmFtZSBvZiB0aGUgYGAqYGAgcGFyYW1ldGVyIG9yIGBgTm9uZWBgIGlmIGFyYml0cmFyeQorICAgcG9zaXRpb25hbCBhcmd1bWVudHMgYXJlIG5vdCBhY2NlcHRlZC4KKyAgICp2YXJrdyogaXMgdGhlIG5hbWUgb2YgdGhlIGBgKipgYCBwYXJhbWV0ZXIgb3IgYGBOb25lYGAgaWYgYXJiaXRyYXJ5CisgICBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgbm90IGFjY2VwdGVkLgorICAgKmRlZmF1bHRzKiBpcyBhbiAqbiotdHVwbGUgb2YgZGVmYXVsdCBhcmd1bWVudCB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byB0aGUKKyAgIGxhc3QgKm4qIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgb3IgYGBOb25lYGAgaWYgdGhlcmUgYXJlIG5vIHN1Y2ggZGVmYXVsdHMKKyAgIGRlZmluZWQuCisgICAqa3dvbmx5YXJncyogaXMgYSBsaXN0IG9mIGtleXdvcmQtb25seSBwYXJhbWV0ZXIgbmFtZXMuCisgICAqa3dvbmx5ZGVmYXVsdHMqIGlzIGEgZGljdGlvbmFyeSBtYXBwaW5nIHBhcmFtZXRlciBuYW1lcyBmcm9tICprd29ubHlhcmdzKgorICAgdG8gdGhlIGRlZmF1bHQgdmFsdWVzIHVzZWQgaWYgbm8gYXJndW1lbnQgaXMgc3VwcGxpZWQuCisgICAqYW5ub3RhdGlvbnMqIGlzIGEgZGljdGlvbmFyeSBtYXBwaW5nIHBhcmFtZXRlciBuYW1lcyB0byBhbm5vdGF0aW9ucy4KKyAgIFRoZSBzcGVjaWFsIGtleSBgYCJyZXR1cm4iYGAgaXMgdXNlZCB0byByZXBvcnQgdGhlIGZ1bmN0aW9uIHJldHVybiB2YWx1ZQorICAgYW5ub3RhdGlvbiAoaWYgYW55KS4KIAotICAgVGhlIGZpcnN0IGZvdXIgaXRlbXMgaW4gdGhlIHR1cGxlIGNvcnJlc3BvbmQgdG8gOmZ1bmM6YGdldGFyZ3NwZWNgLgorICAgTm90ZSB0aGF0IDpmdW5jOmBzaWduYXR1cmVgIGFuZAorICAgOnJlZjpgU2lnbmF0dXJlIE9iamVjdCA8aW5zcGVjdC1zaWduYXR1cmUtb2JqZWN0PmAgcHJvdmlkZSB0aGUgcmVjb21tZW5kZWQKKyAgIEFQSSBmb3IgY2FsbGFibGUgaW50cm9zcGVjdGlvbiwgYW5kIHN1cHBvcnQgYWRkaXRpb25hbCBiZWhhdmlvdXJzIChsaWtlCisgICBwb3NpdGlvbmFsLW9ubHkgYXJndW1lbnRzKSB0aGF0IGFyZSBzb21ldGltZXMgZW5jb3VudGVyZWQgaW4gZXh0ZW5zaW9uIG1vZHVsZQorICAgQVBJcy4gVGhpcyBmdW5jdGlvbiBpcyByZXRhaW5lZCBwcmltYXJpbHkgZm9yIHVzZSBpbiBjb2RlIHRoYXQgbmVlZHMgdG8KKyAgIG1haW50YWluIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgUHl0aG9uIDIgYGBpbnNwZWN0YGAgbW9kdWxlIEFQSS4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgbm93IGJhc2VkIG9uIDpmdW5jOmBzaWduYXR1cmVgLCBidXQgc3RpbGwgaWdub3JlcwogICAgICAgYGBfX3dyYXBwZWRfX2BgIGF0dHJpYnV0ZXMgYW5kIGluY2x1ZGVzIHRoZSBhbHJlYWR5IGJvdW5kIGZpcnN0CiAgICAgICBwYXJhbWV0ZXIgaW4gdGhlIHNpZ25hdHVyZSBvdXRwdXQgZm9yIGJvdW5kIG1ldGhvZHMuCiAKLSAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjUKLSAgICAgIFVzZSA6ZnVuYzpgc2lnbmF0dXJlYCBhbmQKLSAgICAgIDpyZWY6YFNpZ25hdHVyZSBPYmplY3QgPGluc3BlY3Qtc2lnbmF0dXJlLW9iamVjdD5gLCB3aGljaCBwcm92aWRlIGEKLSAgICAgIGJldHRlciBpbnRyb3NwZWN0aW5nIEFQSSBmb3IgY2FsbGFibGVzLgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFRoaXMgbWV0aG9kIHdhcyBwcmV2aW91c2x5IGRvY3VtZW50ZWQgYXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YKKyAgICAgIDpmdW5jOmBzaWduYXR1cmVgIGluIFB5dGhvbiAzLjUsIGJ1dCB0aGF0IGRlY2lzaW9uIGhhcyBiZWVuIHJldmVyc2VkCisgICAgICBpbiBvcmRlciB0byByZXN0b3JlIGEgY2xlYXJseSBzdXBwb3J0ZWQgc3RhbmRhcmQgaW50ZXJmYWNlIGZvcgorICAgICAgc2luZ2xlLXNvdXJjZSBQeXRob24gMi8zIGNvZGUgbWlncmF0aW5nIGF3YXkgZnJvbSB0aGUgbGVnYWN5CisgICAgICA6ZnVuYzpgZ2V0YXJnc3BlY2AgQVBJLgogCiAKIC4uIGZ1bmN0aW9uOjogZ2V0YXJndmFsdWVzKGZyYW1lKQpAQCAtODg0LDcgKzkxNCw3IEBACiAuLiBmdW5jdGlvbjo6IGZvcm1hdGFyZ3NwZWMoYXJnc1ssIHZhcmFyZ3MsIHZhcmt3LCBkZWZhdWx0cywga3dvbmx5YXJncywga3dvbmx5ZGVmYXVsdHMsIGFubm90YXRpb25zWywgZm9ybWF0YXJnLCBmb3JtYXR2YXJhcmdzLCBmb3JtYXR2YXJrdywgZm9ybWF0dmFsdWUsIGZvcm1hdHJldHVybnMsIGZvcm1hdGFubm90YXRpb25zXV0pCiAKICAgIEZvcm1hdCBhIHByZXR0eSBhcmd1bWVudCBzcGVjIGZyb20gdGhlIHZhbHVlcyByZXR1cm5lZCBieQotICAgOmZ1bmM6YGdldGFyZ3NwZWNgIG9yIDpmdW5jOmBnZXRmdWxsYXJnc3BlY2AuCisgICA6ZnVuYzpgZ2V0ZnVsbGFyZ3NwZWNgLgogCiAgICBUaGUgZmlyc3Qgc2V2ZW4gYXJndW1lbnRzIGFyZSAoYGBhcmdzYGAsIGBgdmFyYXJnc2BgLCBgYHZhcmt3YGAsCiAgICBgYGRlZmF1bHRzYGAsIGBga3dvbmx5YXJnc2BgLCBgYGt3b25seWRlZmF1bHRzYGAsIGBgYW5ub3RhdGlvbnNgYCkuCkBAIC0xMjY0LDIwICsxMjk0LDI5IEBACiAKIC4uIGRhdGE6OiBDT19DT1JPVVRJTkUKIAotICAgVGhlIGZsYWcgaXMgc2V0IHdoZW4gdGhlIGNvZGUgb2JqZWN0IGlzIGEgY29yb3V0aW5lIGZ1bmN0aW9uLCBpLmUuCi0gICBhIGNvcm91dGluZSBvYmplY3QgaXMgcmV0dXJuZWQgd2hlbiB0aGUgY29kZSBvYmplY3QgaXMgZXhlY3V0ZWQuICBTZWUKLSAgIDpwZXA6YDQ5MmAgZm9yIG1vcmUgZGV0YWlscy4KKyAgIFRoZSBmbGFnIGlzIHNldCB3aGVuIHRoZSBjb2RlIG9iamVjdCBpcyBhIGNvcm91dGluZSBmdW5jdGlvbi4KKyAgIFdoZW4gdGhlIGNvZGUgb2JqZWN0IGlzIGV4ZWN1dGVkIGl0IHJldHVybnMgYSBjb3JvdXRpbmUgb2JqZWN0LgorICAgU2VlIDpwZXA6YDQ5MmAgZm9yIG1vcmUgZGV0YWlscy4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CiAKIC4uIGRhdGE6OiBDT19JVEVSQUJMRV9DT1JPVVRJTkUKIAotICAgVXNlZCB0byB0dXJuIGdlbmVyYXRvcnMgaW50byBnZW5lcmF0b3ItYmFzZWQgY29yb3V0aW5lcy4gIEdlbmVyYXRvcgotICAgb2JqZWN0cyB3aXRoIHRoaXMgZmxhZyBjYW4gYmUgdXNlZCBpbiBgYGF3YWl0YGAgZXhwcmVzc2lvbiwgYW5kIGNhbgotICAgYGB5aWVsZCBmcm9tYGAgY29yb3V0aW5lIG9iamVjdHMuICBTZWUgOnBlcDpgNDkyYCBmb3IgbW9yZSBkZXRhaWxzLgorICAgVGhlIGZsYWcgaXMgdXNlZCB0byB0cmFuc2Zvcm0gZ2VuZXJhdG9ycyBpbnRvIGdlbmVyYXRvci1iYXNlZAorICAgY29yb3V0aW5lcy4gIEdlbmVyYXRvciBvYmplY3RzIHdpdGggdGhpcyBmbGFnIGNhbiBiZSB1c2VkIGluCisgICBgYGF3YWl0YGAgZXhwcmVzc2lvbiwgYW5kIGNhbiBgYHlpZWxkIGZyb21gYCBjb3JvdXRpbmUgb2JqZWN0cy4KKyAgIFNlZSA6cGVwOmA0OTJgIGZvciBtb3JlIGRldGFpbHMuCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogCisuLiBkYXRhOjogQ09fQVNZTkNfR0VORVJBVE9SCisKKyAgIFRoZSBmbGFnIGlzIHNldCB3aGVuIHRoZSBjb2RlIG9iamVjdCBpcyBhbiBhc3luY2hyb25vdXMgZ2VuZXJhdG9yCisgICBmdW5jdGlvbi4gIFdoZW4gdGhlIGNvZGUgb2JqZWN0IGlzIGV4ZWN1dGVkIGl0IHJldHVybnMgYW4KKyAgIGFzeW5jaHJvbm91cyBnZW5lcmF0b3Igb2JqZWN0LiAgU2VlIDpwZXA6YDUyNWAgZm9yIG1vcmUgZGV0YWlscy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIC4uIG5vdGU6OgogICAgVGhlIGZsYWdzIGFyZSBzcGVjaWZpYyB0byBDUHl0aG9uLCBhbmQgbWF5IG5vdCBiZSBkZWZpbmVkIGluIG90aGVyCiAgICBQeXRob24gaW1wbGVtZW50YXRpb25zLiAgRnVydGhlcm1vcmUsIHRoZSBmbGFncyBhcmUgYW4gaW1wbGVtZW50YXRpb24KQEAgLTEyODYsNyArMTMyNSw2IEBACiAgICBmb3IgYW55IGludHJvc3BlY3Rpb24gbmVlZHMuCiAKIAotCiAuLiBfaW5zcGVjdC1tb2R1bGUtY2xpOgogCiBDb21tYW5kIExpbmUgSW50ZXJmYWNlCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9pdGVydG9vbHMucnN0IGIvRG9jL2xpYnJhcnkvaXRlcnRvb2xzLnJzdAppbmRleCBkZmMxZGRjLi5iMGQwYThjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9pdGVydG9vbHMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2l0ZXJ0b29scy5yc3QKQEAgLTU5MSw3ICs1OTEsMTMgQEAKIAogLi4gZnVuY3Rpb246OiB0ZWUoaXRlcmFibGUsIG49MikKIAotICAgUmV0dXJuICpuKiBpbmRlcGVuZGVudCBpdGVyYXRvcnMgZnJvbSBhIHNpbmdsZSBpdGVyYWJsZS4gIFJvdWdobHkgZXF1aXZhbGVudCB0bzo6CisgICBSZXR1cm4gKm4qIGluZGVwZW5kZW50IGl0ZXJhdG9ycyBmcm9tIGEgc2luZ2xlIGl0ZXJhYmxlLgorCisgICBUaGUgZm9sbG93aW5nIFB5dGhvbiBjb2RlIGhlbHBzIGV4cGxhaW4gd2hhdCAqdGVlKiBkb2VzIChhbHRob3VnaCB0aGUgYWN0dWFsCisgICBpbXBsZW1lbnRhdGlvbiBpcyBtb3JlIGNvbXBsZXggYW5kIHVzZXMgb25seSBhIHNpbmdsZSB1bmRlcmx5aW5nCisgICA6YWJicjpgRklGTyAoZmlyc3QtaW4sIGZpcnN0LW91dClgIHF1ZXVlKS4KKworICAgUm91Z2hseSBlcXVpdmFsZW50IHRvOjoKIAogICAgICAgICBkZWYgdGVlKGl0ZXJhYmxlLCBuPTIpOgogICAgICAgICAgICAgaXQgPSBpdGVyKGl0ZXJhYmxlKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvanNvbi5yc3QgYi9Eb2MvbGlicmFyeS9qc29uLnJzdAppbmRleCBmNDg3NTM1Li43NmU5MzZmIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9qc29uLnJzdAorKysgYi9Eb2MvbGlicmFyeS9qc29uLnJzdApAQCAtMTI2LDcgKzEyNiw3IEBACiBCYXNpYyBVc2FnZQogLS0tLS0tLS0tLS0KIAotLi4gZnVuY3Rpb246OiBkdW1wKG9iaiwgZnAsIHNraXBrZXlzPUZhbHNlLCBlbnN1cmVfYXNjaWk9VHJ1ZSwgXAorLi4gZnVuY3Rpb246OiBkdW1wKG9iaiwgZnAsICosIHNraXBrZXlzPUZhbHNlLCBlbnN1cmVfYXNjaWk9VHJ1ZSwgXAogICAgICAgICAgICAgICAgICAgIGNoZWNrX2NpcmN1bGFyPVRydWUsIGFsbG93X25hbj1UcnVlLCBjbHM9Tm9uZSwgXAogICAgICAgICAgICAgICAgICAgIGluZGVudD1Ob25lLCBzZXBhcmF0b3JzPU5vbmUsIGRlZmF1bHQ9Tm9uZSwgXAogICAgICAgICAgICAgICAgICAgIHNvcnRfa2V5cz1GYWxzZSwgKiprdykKQEAgLTE4Nyw4ICsxODcsMTEgQEAKICAgIDptZXRoOmBkZWZhdWx0YCBtZXRob2QgdG8gc2VyaWFsaXplIGFkZGl0aW9uYWwgdHlwZXMpLCBzcGVjaWZ5IGl0IHdpdGggdGhlCiAgICAqY2xzKiBrd2FyZzsgb3RoZXJ3aXNlIDpjbGFzczpgSlNPTkVuY29kZXJgIGlzIHVzZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBbGwgb3B0aW9uYWwgcGFyYW1ldGVycyBhcmUgbm93IDpyZWY6YGtleXdvcmQtb25seSA8a2V5d29yZC1vbmx5X3BhcmFtZXRlcj5gLgogCi0uLiBmdW5jdGlvbjo6IGR1bXBzKG9iaiwgc2tpcGtleXM9RmFsc2UsIGVuc3VyZV9hc2NpaT1UcnVlLCBcCisKKy4uIGZ1bmN0aW9uOjogZHVtcHMob2JqLCAqLCBza2lwa2V5cz1GYWxzZSwgZW5zdXJlX2FzY2lpPVRydWUsIFwKICAgICAgICAgICAgICAgICAgICAgY2hlY2tfY2lyY3VsYXI9VHJ1ZSwgYWxsb3dfbmFuPVRydWUsIGNscz1Ob25lLCBcCiAgICAgICAgICAgICAgICAgICAgIGluZGVudD1Ob25lLCBzZXBhcmF0b3JzPU5vbmUsIGRlZmF1bHQ9Tm9uZSwgXAogICAgICAgICAgICAgICAgICAgICBzb3J0X2tleXM9RmFsc2UsICoqa3cpCkBAIC0yMTIsNyArMjE1LDcgQEAKICAgICAgIHRoZSBvcmlnaW5hbCBvbmUuIFRoYXQgaXMsIGBgbG9hZHMoZHVtcHMoeCkpICE9IHhgYCBpZiB4IGhhcyBub24tc3RyaW5nCiAgICAgICBrZXlzLgogCi0uLiBmdW5jdGlvbjo6IGxvYWQoZnAsIGNscz1Ob25lLCBvYmplY3RfaG9vaz1Ob25lLCBwYXJzZV9mbG9hdD1Ob25lLCBwYXJzZV9pbnQ9Tm9uZSwgcGFyc2VfY29uc3RhbnQ9Tm9uZSwgb2JqZWN0X3BhaXJzX2hvb2s9Tm9uZSwgKiprdykKKy4uIGZ1bmN0aW9uOjogbG9hZChmcCwgKiwgY2xzPU5vbmUsIG9iamVjdF9ob29rPU5vbmUsIHBhcnNlX2Zsb2F0PU5vbmUsIHBhcnNlX2ludD1Ob25lLCBwYXJzZV9jb25zdGFudD1Ob25lLCBvYmplY3RfcGFpcnNfaG9vaz1Ob25lLCAqKmt3KQogCiAgICBEZXNlcmlhbGl6ZSAqZnAqIChhIGBgLnJlYWQoKWBgLXN1cHBvcnRpbmcgOnRlcm06YGZpbGUtbGlrZSBvYmplY3RgCiAgICBjb250YWluaW5nIGEgSlNPTiBkb2N1bWVudCkgdG8gYSBQeXRob24gb2JqZWN0IHVzaW5nIHRoaXMgOnJlZjpgY29udmVyc2lvbgpAQCAtMjYwLDEwICsyNjMsMTQgQEAKICAgIElmIHRoZSBkYXRhIGJlaW5nIGRlc2VyaWFsaXplZCBpcyBub3QgYSB2YWxpZCBKU09OIGRvY3VtZW50LCBhCiAgICA6ZXhjOmBKU09ORGVjb2RlRXJyb3JgIHdpbGwgYmUgcmFpc2VkLgogCi0uLiBmdW5jdGlvbjo6IGxvYWRzKHMsIGVuY29kaW5nPU5vbmUsIGNscz1Ob25lLCBvYmplY3RfaG9vaz1Ob25lLCBwYXJzZV9mbG9hdD1Ob25lLCBwYXJzZV9pbnQ9Tm9uZSwgcGFyc2VfY29uc3RhbnQ9Tm9uZSwgb2JqZWN0X3BhaXJzX2hvb2s9Tm9uZSwgKiprdykKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBbGwgb3B0aW9uYWwgcGFyYW1ldGVycyBhcmUgbm93IDpyZWY6YGtleXdvcmQtb25seSA8a2V5d29yZC1vbmx5X3BhcmFtZXRlcj5gLgogCi0gICBEZXNlcmlhbGl6ZSAqcyogKGEgOmNsYXNzOmBzdHJgIGluc3RhbmNlIGNvbnRhaW5pbmcgYSBKU09OIGRvY3VtZW50KSB0byBhCi0gICBQeXRob24gb2JqZWN0IHVzaW5nIHRoaXMgOnJlZjpgY29udmVyc2lvbiB0YWJsZSA8anNvbi10by1weS10YWJsZT5gLgorLi4gZnVuY3Rpb246OiBsb2FkcyhzLCAqLCBlbmNvZGluZz1Ob25lLCBjbHM9Tm9uZSwgb2JqZWN0X2hvb2s9Tm9uZSwgcGFyc2VfZmxvYXQ9Tm9uZSwgcGFyc2VfaW50PU5vbmUsIHBhcnNlX2NvbnN0YW50PU5vbmUsIG9iamVjdF9wYWlyc19ob29rPU5vbmUsICoqa3cpCisKKyAgIERlc2VyaWFsaXplICpzKiAoYSA6Y2xhc3M6YHN0cmAsIDpjbGFzczpgYnl0ZXNgIG9yIDpjbGFzczpgYnl0ZWFycmF5YAorICAgaW5zdGFuY2UgY29udGFpbmluZyBhIEpTT04gZG9jdW1lbnQpIHRvIGEgUHl0aG9uIG9iamVjdCB1c2luZyB0aGlzCisgICA6cmVmOmBjb252ZXJzaW9uIHRhYmxlIDxqc29uLXRvLXB5LXRhYmxlPmAuCiAKICAgIFRoZSBvdGhlciBhcmd1bWVudHMgaGF2ZSB0aGUgc2FtZSBtZWFuaW5nIGFzIGluIDpmdW5jOmBsb2FkYCwgZXhjZXB0CiAgICAqZW5jb2RpbmcqIHdoaWNoIGlzIGlnbm9yZWQgYW5kIGRlcHJlY2F0ZWQuCkBAIC0yNzQsNyArMjgxLDcgQEAKIEVuY29kZXJzIGFuZCBEZWNvZGVycwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLS4uIGNsYXNzOjogSlNPTkRlY29kZXIob2JqZWN0X2hvb2s9Tm9uZSwgcGFyc2VfZmxvYXQ9Tm9uZSwgcGFyc2VfaW50PU5vbmUsIHBhcnNlX2NvbnN0YW50PU5vbmUsIHN0cmljdD1UcnVlLCBvYmplY3RfcGFpcnNfaG9vaz1Ob25lKQorLi4gY2xhc3M6OiBKU09ORGVjb2RlcigqLCBvYmplY3RfaG9vaz1Ob25lLCBwYXJzZV9mbG9hdD1Ob25lLCBwYXJzZV9pbnQ9Tm9uZSwgcGFyc2VfY29uc3RhbnQ9Tm9uZSwgc3RyaWN0PVRydWUsIG9iamVjdF9wYWlyc19ob29rPU5vbmUpCiAKICAgIFNpbXBsZSBKU09OIGRlY29kZXIuCiAKQEAgLTM0NCw2ICszNTEsOSBAQAogICAgSWYgdGhlIGRhdGEgYmVpbmcgZGVzZXJpYWxpemVkIGlzIG5vdCBhIHZhbGlkIEpTT04gZG9jdW1lbnQsIGEKICAgIDpleGM6YEpTT05EZWNvZGVFcnJvcmAgd2lsbCBiZSByYWlzZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBbGwgcGFyYW1ldGVycyBhcmUgbm93IDpyZWY6YGtleXdvcmQtb25seSA8a2V5d29yZC1vbmx5X3BhcmFtZXRlcj5gLgorCiAgICAuLiBtZXRob2Q6OiBkZWNvZGUocykKIAogICAgICAgUmV0dXJuIHRoZSBQeXRob24gcmVwcmVzZW50YXRpb24gb2YgKnMqIChhIDpjbGFzczpgc3RyYCBpbnN0YW5jZQpAQCAtMzYyLDcgKzM3Miw3IEBACiAgICAgICBleHRyYW5lb3VzIGRhdGEgYXQgdGhlIGVuZC4KIAogCi0uLiBjbGFzczo6IEpTT05FbmNvZGVyKHNraXBrZXlzPUZhbHNlLCBlbnN1cmVfYXNjaWk9VHJ1ZSwgY2hlY2tfY2lyY3VsYXI9VHJ1ZSwgYWxsb3dfbmFuPVRydWUsIHNvcnRfa2V5cz1GYWxzZSwgaW5kZW50PU5vbmUsIHNlcGFyYXRvcnM9Tm9uZSwgZGVmYXVsdD1Ob25lKQorLi4gY2xhc3M6OiBKU09ORW5jb2RlcigqLCBza2lwa2V5cz1GYWxzZSwgZW5zdXJlX2FzY2lpPVRydWUsIGNoZWNrX2NpcmN1bGFyPVRydWUsIGFsbG93X25hbj1UcnVlLCBzb3J0X2tleXM9RmFsc2UsIGluZGVudD1Ob25lLCBzZXBhcmF0b3JzPU5vbmUsIGRlZmF1bHQ9Tm9uZSkKIAogICAgRXh0ZW5zaWJsZSBKU09OIGVuY29kZXIgZm9yIFB5dGhvbiBkYXRhIHN0cnVjdHVyZXMuCiAKQEAgLTQ0Myw2ICs0NTMsOSBAQAogICAgdGhlIG9iamVjdCBvciByYWlzZSBhIDpleGM6YFR5cGVFcnJvcmAuICBJZiBub3Qgc3BlY2lmaWVkLCA6ZXhjOmBUeXBlRXJyb3JgCiAgICBpcyByYWlzZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBbGwgcGFyYW1ldGVycyBhcmUgbm93IDpyZWY6YGtleXdvcmQtb25seSA8a2V5d29yZC1vbmx5X3BhcmFtZXRlcj5gLgorCiAKICAgIC4uIG1ldGhvZDo6IGRlZmF1bHQobykKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbG9nZ2luZy5oYW5kbGVycy5yc3QgYi9Eb2MvbGlicmFyeS9sb2dnaW5nLmhhbmRsZXJzLnJzdAppbmRleCAwYzAyZDNkLi42YmUzMjc5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9sb2dnaW5nLmhhbmRsZXJzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9sb2dnaW5nLmhhbmRsZXJzLnJzdApAQCAtODQsNiArODQsOSBAQAogICAgd2l0aCB0aGF0IGVuY29kaW5nLiAgSWYgKmRlbGF5KiBpcyB0cnVlLCB0aGVuIGZpbGUgb3BlbmluZyBpcyBkZWZlcnJlZCB1bnRpbCB0aGUKICAgIGZpcnN0IGNhbGwgdG8gOm1ldGg6YGVtaXRgLiBCeSBkZWZhdWx0LCB0aGUgZmlsZSBncm93cyBpbmRlZmluaXRlbHkuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBcyB3ZWxsIGFzIHN0cmluZyB2YWx1ZXMsIDpjbGFzczpgfnBhdGhsaWIuUGF0aGAgb2JqZWN0cyBhcmUgYWxzbyBhY2NlcHRlZAorICAgICAgZm9yIHRoZSAqZmlsZW5hbWUqIGFyZ3VtZW50LgogCiAgICAuLiBtZXRob2Q6OiBjbG9zZSgpCiAKQEAgLTE2MCwxMiArMTYzLDIzIEBACiAgICB3aXRoIHRoYXQgZW5jb2RpbmcuICBJZiAqZGVsYXkqIGlzIHRydWUsIHRoZW4gZmlsZSBvcGVuaW5nIGlzIGRlZmVycmVkIHVudGlsIHRoZQogICAgZmlyc3QgY2FsbCB0byA6bWV0aDpgZW1pdGAuICBCeSBkZWZhdWx0LCB0aGUgZmlsZSBncm93cyBpbmRlZmluaXRlbHkuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBcyB3ZWxsIGFzIHN0cmluZyB2YWx1ZXMsIDpjbGFzczpgfnBhdGhsaWIuUGF0aGAgb2JqZWN0cyBhcmUgYWxzbyBhY2NlcHRlZAorICAgICAgZm9yIHRoZSAqZmlsZW5hbWUqIGFyZ3VtZW50LgorCisgICAuLiBtZXRob2Q6OiByZW9wZW5JZk5lZWRlZCgpCisKKyAgICAgIENoZWNrcyB0byBzZWUgaWYgdGhlIGZpbGUgaGFzIGNoYW5nZWQuICBJZiBpdCBoYXMsIHRoZSBleGlzdGluZyBzdHJlYW0gaXMKKyAgICAgIGZsdXNoZWQgYW5kIGNsb3NlZCBhbmQgdGhlIGZpbGUgb3BlbmVkIGFnYWluLCB0eXBpY2FsbHkgYXMgYSBwcmVjdXJzb3IgdG8KKyAgICAgIG91dHB1dHRpbmcgdGhlIHJlY29yZCB0byB0aGUgZmlsZS4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIAogICAgLi4gbWV0aG9kOjogZW1pdChyZWNvcmQpCiAKLSAgICAgIE91dHB1dHMgdGhlIHJlY29yZCB0byB0aGUgZmlsZSwgYnV0IGZpcnN0IGNoZWNrcyB0byBzZWUgaWYgdGhlIGZpbGUgaGFzCi0gICAgICBjaGFuZ2VkLiAgSWYgaXQgaGFzLCB0aGUgZXhpc3Rpbmcgc3RyZWFtIGlzIGZsdXNoZWQgYW5kIGNsb3NlZCBhbmQgdGhlCi0gICAgICBmaWxlIG9wZW5lZCBhZ2FpbiwgYmVmb3JlIG91dHB1dHRpbmcgdGhlIHJlY29yZCB0byB0aGUgZmlsZS4KKyAgICAgIE91dHB1dHMgdGhlIHJlY29yZCB0byB0aGUgZmlsZSwgYnV0IGZpcnN0IGNhbGxzIDptZXRoOmByZW9wZW5JZk5lZWRlZGAgdG8KKyAgICAgIHJlb3BlbiB0aGUgZmlsZSBpZiBpdCBoYXMgY2hhbmdlZC4KIAogLi4gX2Jhc2Utcm90YXRpbmctaGFuZGxlcjoKIApAQCAtMjc5LDYgKzI5Myw5IEBACiAgICA6ZmlsZTpgYXBwLmxvZy4yYCwgZXRjLiAgZXhpc3QsIHRoZW4gdGhleSBhcmUgcmVuYW1lZCB0byA6ZmlsZTpgYXBwLmxvZy4yYCwKICAgIDpmaWxlOmBhcHAubG9nLjNgIGV0Yy4gIHJlc3BlY3RpdmVseS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFzIHdlbGwgYXMgc3RyaW5nIHZhbHVlcywgOmNsYXNzOmB+cGF0aGxpYi5QYXRoYCBvYmplY3RzIGFyZSBhbHNvIGFjY2VwdGVkCisgICAgICBmb3IgdGhlICpmaWxlbmFtZSogYXJndW1lbnQuCiAKICAgIC4uIG1ldGhvZDo6IGRvUm9sbG92ZXIoKQogCkBAIC0zMTAsMjEgKzMyNywyNCBAQAogICAgWW91IGNhbiB1c2UgdGhlICp3aGVuKiB0byBzcGVjaWZ5IHRoZSB0eXBlIG9mICppbnRlcnZhbCouIFRoZSBsaXN0IG9mIHBvc3NpYmxlCiAgICB2YWx1ZXMgaXMgYmVsb3cuICBOb3RlIHRoYXQgdGhleSBhcmUgbm90IGNhc2Ugc2Vuc2l0aXZlLgogCi0gICArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgVmFsdWUgICAgICAgICAgfCBUeXBlIG9mIGludGVydmFsICAgICAgfAotICAgKz09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT0rCi0gICB8IGBgJ1MnYGAgICAgICAgIHwgU2Vjb25kcyAgICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCBgYCdNJ2BgICAgICAgICB8IE1pbnV0ZXMgICAgICAgICAgICAgICB8Ci0gICArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgYGAnSCdgYCAgICAgICAgfCBIb3VycyAgICAgICAgICAgICAgICAgfAotICAgKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IGBgJ0QnYGAgICAgICAgIHwgRGF5cyAgICAgICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCBgYCdXMCctJ1c2J2BgICB8IFdlZWtkYXkgKDA9TW9uZGF5KSAgICB8Ci0gICArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgYGAnbWlkbmlnaHQnYGAgfCBSb2xsIG92ZXIgYXQgbWlkbmlnaHQgfAotICAgKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IFZhbHVlICAgICAgICAgIHwgVHlwZSBvZiBpbnRlcnZhbCAgICAgICAgICAgfCBJZi9ob3cgKmF0VGltZSogaXMgdXNlZCB8CisgICArPT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT0rCisgICB8IGBgJ1MnYGAgICAgICAgIHwgU2Vjb25kcyAgICAgICAgICAgICAgICAgICAgfCBJZ25vcmVkICAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IGBgJ00nYGAgICAgICAgIHwgTWludXRlcyAgICAgICAgICAgICAgICAgICAgfCBJZ25vcmVkICAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IGBgJ0gnYGAgICAgICAgIHwgSG91cnMgICAgICAgICAgICAgICAgICAgICAgfCBJZ25vcmVkICAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IGBgJ0QnYGAgICAgICAgIHwgRGF5cyAgICAgICAgICAgICAgICAgICAgICAgfCBJZ25vcmVkICAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IGBgJ1cwJy0nVzYnYGAgIHwgV2Vla2RheSAoMD1Nb25kYXkpICAgICAgICAgfCBVc2VkIHRvIGNvbXB1dGUgaW5pdGlhbCB8CisgICB8ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByb2xsb3ZlciB0aW1lICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IGBgJ21pZG5pZ2h0J2BgIHwgUm9sbCBvdmVyIGF0IG1pZG5pZ2h0LCBpZiAgfCBVc2VkIHRvIGNvbXB1dGUgaW5pdGlhbCB8CisgICB8ICAgICAgICAgICAgICAgIHwgKmF0VGltZSogbm90IHNwZWNpZmllZCwgICAgfCByb2xsb3ZlciB0aW1lICAgICAgICAgICB8CisgICB8ICAgICAgICAgICAgICAgIHwgZWxzZSBhdCB0aW1lICphdFRpbWUqICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAKICAgIFdoZW4gdXNpbmcgd2Vla2RheS1iYXNlZCByb3RhdGlvbiwgc3BlY2lmeSAnVzAnIGZvciBNb25kYXksICdXMScgZm9yCiAgICBUdWVzZGF5LCBhbmQgc28gb24gdXAgdG8gJ1c2JyBmb3IgU3VuZGF5LiBJbiB0aGlzIGNhc2UsIHRoZSB2YWx1ZSBwYXNzZWQgZm9yCkBAIC0zNTIsMTYgKzM3MiwzNSBAQAogCiAgICBJZiAqYXRUaW1lKiBpcyBub3QgYGBOb25lYGAsIGl0IG11c3QgYmUgYSBgYGRhdGV0aW1lLnRpbWVgYCBpbnN0YW5jZSB3aGljaAogICAgc3BlY2lmaWVzIHRoZSB0aW1lIG9mIGRheSB3aGVuIHJvbGxvdmVyIG9jY3VycywgZm9yIHRoZSBjYXNlcyB3aGVyZSByb2xsb3ZlcgotICAgaXMgc2V0IHRvIGhhcHBlbiAiYXQgbWlkbmlnaHQiIG9yICJvbiBhIHBhcnRpY3VsYXIgd2Vla2RheSIuCisgICBpcyBzZXQgdG8gaGFwcGVuICJhdCBtaWRuaWdodCIgb3IgIm9uIGEgcGFydGljdWxhciB3ZWVrZGF5Ii4gTm90ZSB0aGF0IGluCisgICB0aGVzZSBjYXNlcywgdGhlICphdFRpbWUqIHZhbHVlIGlzIGVmZmVjdGl2ZWx5IHVzZWQgdG8gY29tcHV0ZSB0aGUgKmluaXRpYWwqCisgICByb2xsb3ZlciwgYW5kIHN1YnNlcXVlbnQgcm9sbG92ZXJzIHdvdWxkIGJlIGNhbGN1bGF0ZWQgdmlhIHRoZSBub3JtYWwKKyAgIGludGVydmFsIGNhbGN1bGF0aW9uLgorCisgICAuLiBub3RlOjogQ2FsY3VsYXRpb24gb2YgdGhlIGluaXRpYWwgcm9sbG92ZXIgdGltZSBpcyBkb25lIHdoZW4gdGhlIGhhbmRsZXIKKyAgICAgIGlzIGluaXRpYWxpc2VkLiBDYWxjdWxhdGlvbiBvZiBzdWJzZXF1ZW50IHJvbGxvdmVyIHRpbWVzIGlzIGRvbmUgb25seQorICAgICAgd2hlbiByb2xsb3ZlciBvY2N1cnMsIGFuZCByb2xsb3ZlciBvY2N1cnMgb25seSB3aGVuIGVtaXR0aW5nIG91dHB1dC4gSWYKKyAgICAgIHRoaXMgaXMgbm90IGtlcHQgaW4gbWluZCwgaXQgbWlnaHQgbGVhZCB0byBzb21lIGNvbmZ1c2lvbi4gRm9yIGV4YW1wbGUsCisgICAgICBpZiBhbiBpbnRlcnZhbCBvZiAiZXZlcnkgbWludXRlIiBpcyBzZXQsIHRoYXQgZG9lcyBub3QgbWVhbiB5b3Ugd2lsbAorICAgICAgYWx3YXlzIHNlZSBsb2cgZmlsZXMgd2l0aCB0aW1lcyAoaW4gdGhlIGZpbGVuYW1lKSBzZXBhcmF0ZWQgYnkgYSBtaW51dGU7CisgICAgICBpZiwgZHVyaW5nIGFwcGxpY2F0aW9uIGV4ZWN1dGlvbiwgbG9nZ2luZyBvdXRwdXQgaXMgZ2VuZXJhdGVkIG1vcmUKKyAgICAgIGZyZXF1ZW50bHkgdGhhbiBvbmNlIGEgbWludXRlLCAqdGhlbiogeW91IGNhbiBleHBlY3QgdG8gc2VlIGxvZyBmaWxlcworICAgICAgd2l0aCB0aW1lcyBzZXBhcmF0ZWQgYnkgYSBtaW51dGUuIElmLCBvbiB0aGUgb3RoZXIgaGFuZCwgbG9nZ2luZyBtZXNzYWdlcworICAgICAgYXJlIG9ubHkgb3V0cHV0IG9uY2UgZXZlcnkgZml2ZSBtaW51dGVzIChzYXkpLCB0aGVuIHRoZXJlIHdpbGwgYmUgZ2FwcyBpbgorICAgICAgdGhlIGZpbGUgdGltZXMgY29ycmVzcG9uZGluZyB0byB0aGUgbWludXRlcyB3aGVyZSBubyBvdXRwdXQgKGFuZCBoZW5jZSBubworICAgICAgcm9sbG92ZXIpIG9jY3VycmVkLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgKmF0VGltZSogcGFyYW1ldGVyIHdhcyBhZGRlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFzIHdlbGwgYXMgc3RyaW5nIHZhbHVlcywgOmNsYXNzOmB+cGF0aGxpYi5QYXRoYCBvYmplY3RzIGFyZSBhbHNvIGFjY2VwdGVkCisgICAgICBmb3IgdGhlICpmaWxlbmFtZSogYXJndW1lbnQuCisKICAgIC4uIG1ldGhvZDo6IGRvUm9sbG92ZXIoKQogCiAgICAgICBEb2VzIGEgcm9sbG92ZXIsIGFzIGRlc2NyaWJlZCBhYm92ZS4KIAotCiAgICAuLiBtZXRob2Q6OiBlbWl0KHJlY29yZCkKIAogICAgICAgT3V0cHV0cyB0aGUgcmVjb3JkIHRvIHRoZSBmaWxlLCBjYXRlcmluZyBmb3Igcm9sbG92ZXIgYXMgZGVzY3JpYmVkIGFib3ZlLgpAQCAtNzk4LDEyICs4MzcsMTggQEAKICAgICAgIG92ZXJyaWRkZW4gdG8gaW1wbGVtZW50IGN1c3RvbSBmbHVzaGluZyBzdHJhdGVnaWVzLgogCiAKLS4uIGNsYXNzOjogTWVtb3J5SGFuZGxlcihjYXBhY2l0eSwgZmx1c2hMZXZlbD1FUlJPUiwgdGFyZ2V0PU5vbmUpCisuLiBjbGFzczo6IE1lbW9yeUhhbmRsZXIoY2FwYWNpdHksIGZsdXNoTGV2ZWw9RVJST1IsIHRhcmdldD1Ob25lLCBmbHVzaE9uQ2xvc2U9VHJ1ZSkKIAogICAgUmV0dXJucyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgOmNsYXNzOmBNZW1vcnlIYW5kbGVyYCBjbGFzcy4gVGhlIGluc3RhbmNlIGlzCiAgICBpbml0aWFsaXplZCB3aXRoIGEgYnVmZmVyIHNpemUgb2YgKmNhcGFjaXR5Ki4gSWYgKmZsdXNoTGV2ZWwqIGlzIG5vdCBzcGVjaWZpZWQsCiAgICA6Y29uc3Q6YEVSUk9SYCBpcyB1c2VkLiBJZiBubyAqdGFyZ2V0KiBpcyBzcGVjaWZpZWQsIHRoZSB0YXJnZXQgd2lsbCBuZWVkIHRvIGJlCi0gICBzZXQgdXNpbmcgOm1ldGg6YHNldFRhcmdldGAgYmVmb3JlIHRoaXMgaGFuZGxlciBkb2VzIGFueXRoaW5nIHVzZWZ1bC4KKyAgIHNldCB1c2luZyA6bWV0aDpgc2V0VGFyZ2V0YCBiZWZvcmUgdGhpcyBoYW5kbGVyIGRvZXMgYW55dGhpbmcgdXNlZnVsLiBJZgorICAgKmZsdXNoT25DbG9zZSogaXMgc3BlY2lmaWVkIGFzIGBgRmFsc2VgYCwgdGhlbiB0aGUgYnVmZmVyIGlzICpub3QqIGZsdXNoZWQgd2hlbgorICAgdGhlIGhhbmRsZXIgaXMgY2xvc2VkLiBJZiBub3Qgc3BlY2lmaWVkIG9yIHNwZWNpZmllZCBhcyBgYFRydWVgYCwgdGhlIHByZXZpb3VzCisgICBiZWhhdmlvdXIgb2YgZmx1c2hpbmcgdGhlIGJ1ZmZlciB3aWxsIG9jY3VyIHdoZW4gdGhlIGhhbmRsZXIgaXMgY2xvc2VkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgVGhlICpmbHVzaE9uQ2xvc2UqIHBhcmFtZXRlciB3YXMgYWRkZWQuCiAKIAogICAgLi4gbWV0aG9kOjogY2xvc2UoKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbHptYS5yc3QgYi9Eb2MvbGlicmFyeS9sem1hLnJzdAppbmRleCA2MWIzYmEzLi41ZWRiMjNkIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9sem1hLnJzdAorKysgYi9Eb2MvbGlicmFyeS9sem1hLnJzdApAQCAtMzksOCArMzksOSBAQAogICAgb2JqZWN0YC4KIAogICAgVGhlICpmaWxlbmFtZSogYXJndW1lbnQgY2FuIGJlIGVpdGhlciBhbiBhY3R1YWwgZmlsZSBuYW1lIChnaXZlbiBhcyBhCi0gICA6Y2xhc3M6YHN0cmAgb3IgOmNsYXNzOmBieXRlc2Agb2JqZWN0KSwgaW4gd2hpY2ggY2FzZSB0aGUgbmFtZWQgZmlsZSBpcwotICAgb3BlbmVkLCBvciBpdCBjYW4gYmUgYW4gZXhpc3RpbmcgZmlsZSBvYmplY3QgdG8gcmVhZCBmcm9tIG9yIHdyaXRlIHRvLgorICAgOmNsYXNzOmBzdHJgLCA6Y2xhc3M6YGJ5dGVzYCBvciA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAgb2JqZWN0KSwgaW4KKyAgIHdoaWNoIGNhc2UgdGhlIG5hbWVkIGZpbGUgaXMgb3BlbmVkLCBvciBpdCBjYW4gYmUgYW4gZXhpc3RpbmcgZmlsZSBvYmplY3QKKyAgIHRvIHJlYWQgZnJvbSBvciB3cml0ZSB0by4KIAogICAgVGhlICptb2RlKiBhcmd1bWVudCBjYW4gYmUgYW55IG9mIGBgInIiYGAsIGBgInJiImBgLCBgYCJ3ImBgLCBgYCJ3YiJgYCwKICAgIGBgIngiYGAsIGBgInhiImBgLCBgYCJhImBgIG9yIGBgImFiImBgIGZvciBiaW5hcnkgbW9kZSwgb3IgYGAicnQiYGAsCkBAIC02NCw2ICs2NSw5IEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgdGhlIGBgIngiYGAsIGBgInhiImBgIGFuZCBgYCJ4dCJgYCBtb2Rlcy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gY2xhc3M6OiBMWk1BRmlsZShmaWxlbmFtZT1Ob25lLCBtb2RlPSJyIiwgXCosIGZvcm1hdD1Ob25lLCBjaGVjaz0tMSwgcHJlc2V0PU5vbmUsIGZpbHRlcnM9Tm9uZSkKIApAQCAtNzEsOSArNzUsMTAgQEAKIAogICAgQW4gOmNsYXNzOmBMWk1BRmlsZWAgY2FuIHdyYXAgYW4gYWxyZWFkeS1vcGVuIDp0ZXJtOmBmaWxlIG9iamVjdGAsIG9yIG9wZXJhdGUKICAgIGRpcmVjdGx5IG9uIGEgbmFtZWQgZmlsZS4gVGhlICpmaWxlbmFtZSogYXJndW1lbnQgc3BlY2lmaWVzIGVpdGhlciB0aGUgZmlsZQotICAgb2JqZWN0IHRvIHdyYXAsIG9yIHRoZSBuYW1lIG9mIHRoZSBmaWxlIHRvIG9wZW4gKGFzIGEgOmNsYXNzOmBzdHJgIG9yCi0gICA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QpLiBXaGVuIHdyYXBwaW5nIGFuIGV4aXN0aW5nIGZpbGUgb2JqZWN0LCB0aGUgd3JhcHBlZAotICAgZmlsZSB3aWxsIG5vdCBiZSBjbG9zZWQgd2hlbiB0aGUgOmNsYXNzOmBMWk1BRmlsZWAgaXMgY2xvc2VkLgorICAgb2JqZWN0IHRvIHdyYXAsIG9yIHRoZSBuYW1lIG9mIHRoZSBmaWxlIHRvIG9wZW4gKGFzIGEgOmNsYXNzOmBzdHJgLAorICAgOmNsYXNzOmBieXRlc2Agb3IgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgIG9iamVjdCkuIFdoZW4gd3JhcHBpbmcgYW4KKyAgIGV4aXN0aW5nIGZpbGUgb2JqZWN0LCB0aGUgd3JhcHBlZCBmaWxlIHdpbGwgbm90IGJlIGNsb3NlZCB3aGVuIHRoZQorICAgOmNsYXNzOmBMWk1BRmlsZWAgaXMgY2xvc2VkLgogCiAgICBUaGUgKm1vZGUqIGFyZ3VtZW50IGNhbiBiZSBlaXRoZXIgYGAiciJgYCBmb3IgcmVhZGluZyAoZGVmYXVsdCksIGBgInciYGAgZm9yCiAgICBvdmVyd3JpdGluZywgYGAieCJgYCBmb3IgZXhjbHVzaXZlIGNyZWF0aW9uLCBvciBgYCJhImBgIGZvciBhcHBlbmRpbmcuIFRoZXNlCkBAIC0xMTgsNiArMTIzLDkgQEAKICAgICAgIFRoZSA6bWV0aDpgfmlvLkJ1ZmZlcmVkSU9CYXNlLnJlYWRgIG1ldGhvZCBub3cgYWNjZXB0cyBhbiBhcmd1bWVudCBvZgogICAgICAgYGBOb25lYGAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIENvbXByZXNzaW5nIGFuZCBkZWNvbXByZXNzaW5nIGRhdGEgaW4gbWVtb3J5CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbWF0aC5yc3QgYi9Eb2MvbGlicmFyeS9tYXRoLnJzdAppbmRleCAzZmRlYTE4Li5kYTJiOGNjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9tYXRoLnJzdAorKysgYi9Eb2MvbGlicmFyeS9tYXRoLnJzdApAQCAtNDI2LDYgKzQyNiwxNSBAQAogCiAgICBUaGUgbWF0aGVtYXRpY2FsIGNvbnN0YW50IGUgPSAyLjcxODI4MS4uLiwgdG8gYXZhaWxhYmxlIHByZWNpc2lvbi4KIAorLi4gZGF0YTo6IHRhdQorCisgICBUaGUgbWF0aGVtYXRpY2FsIGNvbnN0YW50IM+EID0gNi4yODMxODUuLi4sIHRvIGF2YWlsYWJsZSBwcmVjaXNpb24uCisgICBUYXUgaXMgYSBjaXJjbGUgY29uc3RhbnQgZXF1YWwgdG8gMs+ALCB0aGUgcmF0aW8gb2YgYSBjaXJjbGUncyBjaXJjdW1mZXJlbmNlIHRvCisgICBpdHMgcmFkaXVzLiBUbyBsZWFybiBtb3JlIGFib3V0IFRhdSwgY2hlY2sgb3V0IFZpIEhhcnQncyB2aWRlbyBgUGkgaXMgKHN0aWxsKQorICAgV3JvbmcgPGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9akc3dmhNTVhhZ1E+YF8sIGFuZCBzdGFydCBjZWxlYnJhdGluZworICAgYFRhdSBkYXkgPGh0dHA6Ly90YXVkYXkuY29tLz5gXyBieSBlYXRpbmcgdHdpY2UgYXMgbXVjaCBwaWUhCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgogCiAuLiBkYXRhOjogaW5mCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L21tYXAucnN0IGIvRG9jL2xpYnJhcnkvbW1hcC5yc3QKaW5kZXggMmYyOTQ1Zi4uZjQ2YmY2NiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbW1hcC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvbW1hcC5yc3QKQEAgLTI2NCwxMyArMjY0LDE4IEBACiAgICAuLiBtZXRob2Q6OiB3cml0ZShieXRlcykKIAogICAgICAgV3JpdGUgdGhlIGJ5dGVzIGluICpieXRlcyogaW50byBtZW1vcnkgYXQgdGhlIGN1cnJlbnQgcG9zaXRpb24gb2YgdGhlCi0gICAgICBmaWxlIHBvaW50ZXI7IHRoZSBmaWxlIHBvc2l0aW9uIGlzIHVwZGF0ZWQgdG8gcG9pbnQgYWZ0ZXIgdGhlIGJ5dGVzIHRoYXQKLSAgICAgIHdlcmUgd3JpdHRlbi4gSWYgdGhlIG1tYXAgd2FzIGNyZWF0ZWQgd2l0aCA6Y29uc3Q6YEFDQ0VTU19SRUFEYCwgdGhlbgorICAgICAgZmlsZSBwb2ludGVyIGFuZCByZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuIChuZXZlciBsZXNzIHRoYW4KKyAgICAgIGBgbGVuKGJ5dGVzKWBgLCBzaW5jZSBpZiB0aGUgd3JpdGUgZmFpbHMsIGEgOmV4YzpgVmFsdWVFcnJvcmAgd2lsbCBiZQorICAgICAgcmFpc2VkKS4gIFRoZSBmaWxlIHBvc2l0aW9uIGlzIHVwZGF0ZWQgdG8gcG9pbnQgYWZ0ZXIgdGhlIGJ5dGVzIHRoYXQKKyAgICAgIHdlcmUgd3JpdHRlbi4gIElmIHRoZSBtbWFwIHdhcyBjcmVhdGVkIHdpdGggOmNvbnN0OmBBQ0NFU1NfUkVBRGAsIHRoZW4KICAgICAgIHdyaXRpbmcgdG8gaXQgd2lsbCByYWlzZSBhIDpleGM6YFR5cGVFcnJvcmAgZXhjZXB0aW9uLgogCiAgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQogICAgICAgICAgV3JpdGFibGUgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCBpcyBub3cgYWNjZXB0ZWQuCiAKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICAgICBUaGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4gaXMgbm93IHJldHVybmVkLgorCiAKICAgIC4uIG1ldGhvZDo6IHdyaXRlX2J5dGUoYnl0ZSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLnJzdCBiL0RvYy9saWJyYXJ5L211bHRpcHJvY2Vzc2luZy5yc3QKaW5kZXggZDQ1YmMyMC4uOTZkMTQyNCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLnJzdAorKysgYi9Eb2MvbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcucnN0CkBAIC02NTAsOCArNjUwLDkgQEAKIEZvciBwYXNzaW5nIG1lc3NhZ2VzIG9uZSBjYW4gdXNlIDpmdW5jOmBQaXBlYCAoZm9yIGEgY29ubmVjdGlvbiBiZXR3ZWVuIHR3bwogcHJvY2Vzc2VzKSBvciBhIHF1ZXVlICh3aGljaCBhbGxvd3MgbXVsdGlwbGUgcHJvZHVjZXJzIGFuZCBjb25zdW1lcnMpLgogCi1UaGUgOmNsYXNzOmBRdWV1ZWAsIDpjbGFzczpgU2ltcGxlUXVldWVgIGFuZCA6Y2xhc3M6YEpvaW5hYmxlUXVldWVgIHR5cGVzIGFyZSBtdWx0aS1wcm9kdWNlciwKLW11bHRpLWNvbnN1bWVyIEZJRk8gcXVldWVzIG1vZGVsbGVkIG9uIHRoZSA6Y2xhc3M6YHF1ZXVlLlF1ZXVlYCBjbGFzcyBpbiB0aGUKK1RoZSA6Y2xhc3M6YFF1ZXVlYCwgOmNsYXNzOmBTaW1wbGVRdWV1ZWAgYW5kIDpjbGFzczpgSm9pbmFibGVRdWV1ZWAgdHlwZXMKK2FyZSBtdWx0aS1wcm9kdWNlciwgbXVsdGktY29uc3VtZXIgOmFiYnI6YEZJRk8gKGZpcnN0LWluLCBmaXJzdC1vdXQpYAorcXVldWVzIG1vZGVsbGVkIG9uIHRoZSA6Y2xhc3M6YHF1ZXVlLlF1ZXVlYCBjbGFzcyBpbiB0aGUKIHN0YW5kYXJkIGxpYnJhcnkuICBUaGV5IGRpZmZlciBpbiB0aGF0IDpjbGFzczpgUXVldWVgIGxhY2tzIHRoZQogOm1ldGg6YH5xdWV1ZS5RdWV1ZS50YXNrX2RvbmVgIGFuZCA6bWV0aDpgfnF1ZXVlLlF1ZXVlLmpvaW5gIG1ldGhvZHMgaW50cm9kdWNlZAogaW50byBQeXRob24gMi41J3MgOmNsYXNzOmBxdWV1ZS5RdWV1ZWAgY2xhc3MuCkBAIC04ODksOCArODkwLDEzIEBACiAKIC4uIGZ1bmN0aW9uOjogY3B1X2NvdW50KCkKIAotICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgQ1BVcyBpbiB0aGUgc3lzdGVtLiAgTWF5IHJhaXNlCi0gICA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYC4KKyAgIFJldHVybiB0aGUgbnVtYmVyIG9mIENQVXMgaW4gdGhlIHN5c3RlbS4KKworICAgVGhpcyBudW1iZXIgaXMgbm90IGVxdWl2YWxlbnQgdG8gdGhlIG51bWJlciBvZiBDUFVzIHRoZSBjdXJyZW50IHByb2Nlc3MgY2FuCisgICB1c2UuICBUaGUgbnVtYmVyIG9mIHVzYWJsZSBDUFVzIGNhbiBiZSBvYnRhaW5lZCB3aXRoCisgICBgYGxlbihvcy5zY2hlZF9nZXRhZmZpbml0eSgwKSlgYAorCisgICBNYXkgcmFpc2UgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAuCiAKICAgIC4uIHNlZWFsc286OgogICAgICAgOmZ1bmM6YG9zLmNwdV9jb3VudGAKQEAgLTE2NzksNyArMTY4NSw5IEBACiAgICBvZiBwcm9jZXNzZXMuICBPYmplY3RzIG9mIHRoaXMgdHlwZSBhcmUgcmV0dXJuZWQgYnkKICAgIDpmdW5jOmBtdWx0aXByb2Nlc3NpbmcuTWFuYWdlcmAuCiAKLSAgIEl0IGFsc28gc3VwcG9ydHMgY3JlYXRpb24gb2Ygc2hhcmVkIGxpc3RzIGFuZCBkaWN0aW9uYXJpZXMuCisgICBJdHMgbWV0aG9kcyBjcmVhdGUgYW5kIHJldHVybiA6cmVmOmBtdWx0aXByb2Nlc3NpbmctcHJveHlfb2JqZWN0c2AgZm9yIGEKKyAgIG51bWJlciBvZiBjb21tb25seSB1c2VkIGRhdGEgdHlwZXMgdG8gYmUgc3luY2hyb25pemVkIGFjcm9zcyBwcm9jZXNzZXMuCisgICBUaGlzIG5vdGFibHkgaW5jbHVkZXMgc2hhcmVkIGxpc3RzIGFuZCBkaWN0aW9uYXJpZXMuCiAKICAgIC4uIG1ldGhvZDo6IEJhcnJpZXIocGFydGllc1ssIGFjdGlvblssIHRpbWVvdXRdXSkKIApAQCAtMTc0MiwzMSArMTc1MCwxNyBAQAogICAgICAgICAgICAgICAgZGljdChtYXBwaW5nKQogICAgICAgICAgICAgICAgZGljdChzZXF1ZW5jZSkKIAotICAgICAgQ3JlYXRlIGEgc2hhcmVkIGBgZGljdGBgIG9iamVjdCBhbmQgcmV0dXJuIGEgcHJveHkgZm9yIGl0LgorICAgICAgQ3JlYXRlIGEgc2hhcmVkIDpjbGFzczpgZGljdGAgb2JqZWN0IGFuZCByZXR1cm4gYSBwcm94eSBmb3IgaXQuCiAKICAgIC4uIG1ldGhvZDo6IGxpc3QoKQogICAgICAgICAgICAgICAgbGlzdChzZXF1ZW5jZSkKIAotICAgICAgQ3JlYXRlIGEgc2hhcmVkIGBgbGlzdGBgIG9iamVjdCBhbmQgcmV0dXJuIGEgcHJveHkgZm9yIGl0LgorICAgICAgQ3JlYXRlIGEgc2hhcmVkIDpjbGFzczpgbGlzdGAgb2JqZWN0IGFuZCByZXR1cm4gYSBwcm94eSBmb3IgaXQuCiAKLSAgIC4uIG5vdGU6OgotCi0gICAgICBNb2RpZmljYXRpb25zIHRvIG11dGFibGUgdmFsdWVzIG9yIGl0ZW1zIGluIGRpY3QgYW5kIGxpc3QgcHJveGllcyB3aWxsIG5vdAotICAgICAgYmUgcHJvcGFnYXRlZCB0aHJvdWdoIHRoZSBtYW5hZ2VyLCBiZWNhdXNlIHRoZSBwcm94eSBoYXMgbm8gd2F5IG9mIGtub3dpbmcKLSAgICAgIHdoZW4gaXRzIHZhbHVlcyBvciBpdGVtcyBhcmUgbW9kaWZpZWQuICBUbyBtb2RpZnkgc3VjaCBhbiBpdGVtLCB5b3UgY2FuCi0gICAgICByZS1hc3NpZ24gdGhlIG1vZGlmaWVkIG9iamVjdCB0byB0aGUgY29udGFpbmVyIHByb3h5OjoKLQotICAgICAgICAgIyBjcmVhdGUgYSBsaXN0IHByb3h5IGFuZCBhcHBlbmQgYSBtdXRhYmxlIG9iamVjdCAoYSBkaWN0aW9uYXJ5KQotICAgICAgICAgbHByb3h5ID0gbWFuYWdlci5saXN0KCkKLSAgICAgICAgIGxwcm94eS5hcHBlbmQoe30pCi0gICAgICAgICAjIG5vdyBtdXRhdGUgdGhlIGRpY3Rpb25hcnkKLSAgICAgICAgIGQgPSBscHJveHlbMF0KLSAgICAgICAgIGRbJ2EnXSA9IDEKLSAgICAgICAgIGRbJ2InXSA9IDIKLSAgICAgICAgICMgYXQgdGhpcyBwb2ludCwgdGhlIGNoYW5nZXMgdG8gZCBhcmUgbm90IHlldCBzeW5jZWQsIGJ1dCBieQotICAgICAgICAgIyByZWFzc2lnbmluZyB0aGUgZGljdGlvbmFyeSwgdGhlIHByb3h5IGlzIG5vdGlmaWVkIG9mIHRoZSBjaGFuZ2UKLSAgICAgICAgIGxwcm94eVswXSA9IGQKLQorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFNoYXJlZCBvYmplY3RzIGFyZSBjYXBhYmxlIG9mIGJlaW5nIG5lc3RlZC4gIEZvciBleGFtcGxlLCBhIHNoYXJlZAorICAgICAgY29udGFpbmVyIG9iamVjdCBzdWNoIGFzIGEgc2hhcmVkIGxpc3QgY2FuIGNvbnRhaW4gb3RoZXIgc2hhcmVkIG9iamVjdHMKKyAgICAgIHdoaWNoIHdpbGwgYWxsIGJlIG1hbmFnZWQgYW5kIHN5bmNocm9uaXplZCBieSB0aGUgOmNsYXNzOmBTeW5jTWFuYWdlcmAuCiAKIC4uIGNsYXNzOjogTmFtZXNwYWNlCiAKQEAgLTE4NzgsNiArMTg3Miw4IEBACiAgICAgPj4+IHMgPSBtLmdldF9zZXJ2ZXIoKQogICAgID4+PiBzLnNlcnZlX2ZvcmV2ZXIoKQogCisuLiBfbXVsdGlwcm9jZXNzaW5nLXByb3h5X29iamVjdHM6CisKIFByb3h5IE9iamVjdHMKIH5+fn5+fn5+fn5+fn4KIApAQCAtMTg4Nyw4ICsxODgzLDcgQEAKIAogQSBwcm94eSBvYmplY3QgaGFzIG1ldGhvZHMgd2hpY2ggaW52b2tlIGNvcnJlc3BvbmRpbmcgbWV0aG9kcyBvZiBpdHMgcmVmZXJlbnQKIChhbHRob3VnaCBub3QgZXZlcnkgbWV0aG9kIG9mIHRoZSByZWZlcmVudCB3aWxsIG5lY2Vzc2FyaWx5IGJlIGF2YWlsYWJsZSB0aHJvdWdoCi10aGUgcHJveHkpLiAgQSBwcm94eSBjYW4gdXN1YWxseSBiZSB1c2VkIGluIG1vc3Qgb2YgdGhlIHNhbWUgd2F5cyB0aGF0IGl0cwotcmVmZXJlbnQgY2FuOgordGhlIHByb3h5KS4gIEluIHRoaXMgd2F5LCBhIHByb3h5IGNhbiBiZSB1c2VkIGp1c3QgbGlrZSBpdHMgcmVmZXJlbnQgY2FuOgogCiAuLiBkb2N0ZXN0OjoKIApAQCAtMTkwOSw5ICsxOTA0LDkgQEAKIHRoZSBwcm94eS4KIAogQW4gaW1wb3J0YW50IGZlYXR1cmUgb2YgcHJveHkgb2JqZWN0cyBpcyB0aGF0IHRoZXkgYXJlIHBpY2tsYWJsZSBzbyB0aGV5IGNhbiBiZQotcGFzc2VkIGJldHdlZW4gcHJvY2Vzc2VzLiAgTm90ZSwgaG93ZXZlciwgdGhhdCBpZiBhIHByb3h5IGlzIHNlbnQgdG8gdGhlCi1jb3JyZXNwb25kaW5nIG1hbmFnZXIncyBwcm9jZXNzIHRoZW4gdW5waWNrbGluZyBpdCB3aWxsIHByb2R1Y2UgdGhlIHJlZmVyZW50Ci1pdHNlbGYuICBUaGlzIG1lYW5zLCBmb3IgZXhhbXBsZSwgdGhhdCBvbmUgc2hhcmVkIG9iamVjdCBjYW4gY29udGFpbiBhIHNlY29uZDoKK3Bhc3NlZCBiZXR3ZWVuIHByb2Nlc3Nlcy4gIEFzIHN1Y2gsIGEgcmVmZXJlbnQgY2FuIGNvbnRhaW4KKzpyZWY6YG11bHRpcHJvY2Vzc2luZy1wcm94eV9vYmplY3RzYC4gIFRoaXMgcGVybWl0cyBuZXN0aW5nIG9mIHRoZXNlIG1hbmFnZWQKK2xpc3RzLCBkaWN0cywgYW5kIG90aGVyIDpyZWY6YG11bHRpcHJvY2Vzc2luZy1wcm94eV9vYmplY3RzYDoKIAogLi4gZG9jdGVzdDo6CiAKQEAgLTE5MTksMTAgKzE5MTQsNDYgQEAKICAgID4+PiBiID0gbWFuYWdlci5saXN0KCkKICAgID4+PiBhLmFwcGVuZChiKSAgICAgICAgICMgcmVmZXJlbnQgb2YgYSBub3cgY29udGFpbnMgcmVmZXJlbnQgb2YgYgogICAgPj4+IHByaW50KGEsIGIpCi0gICBbW11dIFtdCisgICBbPExpc3RQcm94eSBvYmplY3QsIHR5cGVpZCAnbGlzdCcgYXQgLi4uPl0gW10KICAgID4+PiBiLmFwcGVuZCgnaGVsbG8nKQotICAgPj4+IHByaW50KGEsIGIpCi0gICBbWydoZWxsbyddXSBbJ2hlbGxvJ10KKyAgID4+PiBwcmludChhWzBdLCBiKQorICAgWydoZWxsbyddIFsnaGVsbG8nXQorCitTaW1pbGFybHksIGRpY3QgYW5kIGxpc3QgcHJveGllcyBtYXkgYmUgbmVzdGVkIGluc2lkZSBvbmUgYW5vdGhlcjo6CisKKyAgID4+PiBsX291dGVyID0gbWFuYWdlci5saXN0KFsgbWFuYWdlci5kaWN0KCkgZm9yIGkgaW4gcmFuZ2UoMikgXSkKKyAgID4+PiBkX2ZpcnN0X2lubmVyID0gbF9vdXRlclswXQorICAgPj4+IGRfZmlyc3RfaW5uZXJbJ2EnXSA9IDEKKyAgID4+PiBkX2ZpcnN0X2lubmVyWydiJ10gPSAyCisgICA+Pj4gbF9vdXRlclsxXVsnYyddID0gMworICAgPj4+IGxfb3V0ZXJbMV1bJ3onXSA9IDI2CisgICA+Pj4gcHJpbnQobF9vdXRlclswXSkKKyAgIHsnYSc6IDEsICdiJzogMn0KKyAgID4+PiBwcmludChsX291dGVyWzFdKQorICAgeydjJzogMywgJ3onOiAyNn0KKworSWYgc3RhbmRhcmQgKG5vbi1wcm94eSkgOmNsYXNzOmBsaXN0YCBvciA6Y2xhc3M6YGRpY3RgIG9iamVjdHMgYXJlIGNvbnRhaW5lZAoraW4gYSByZWZlcmVudCwgbW9kaWZpY2F0aW9ucyB0byB0aG9zZSBtdXRhYmxlIHZhbHVlcyB3aWxsIG5vdCBiZSBwcm9wYWdhdGVkCit0aHJvdWdoIHRoZSBtYW5hZ2VyIGJlY2F1c2UgdGhlIHByb3h5IGhhcyBubyB3YXkgb2Yga25vd2luZyB3aGVuIHRoZSB2YWx1ZXMKK2NvbnRhaW5lZCB3aXRoaW4gYXJlIG1vZGlmaWVkLiAgSG93ZXZlciwgc3RvcmluZyBhIHZhbHVlIGluIGEgY29udGFpbmVyIHByb3h5Cisod2hpY2ggdHJpZ2dlcnMgYSBgYF9fc2V0aXRlbV9fYGAgb24gdGhlIHByb3h5IG9iamVjdCkgZG9lcyBwcm9wYWdhdGUgdGhyb3VnaAordGhlIG1hbmFnZXIgYW5kIHNvIHRvIGVmZmVjdGl2ZWx5IG1vZGlmeSBzdWNoIGFuIGl0ZW0sIG9uZSBjb3VsZCByZS1hc3NpZ24gdGhlCittb2RpZmllZCB2YWx1ZSB0byB0aGUgY29udGFpbmVyIHByb3h5OjoKKworICAgIyBjcmVhdGUgYSBsaXN0IHByb3h5IGFuZCBhcHBlbmQgYSBtdXRhYmxlIG9iamVjdCAoYSBkaWN0aW9uYXJ5KQorICAgbHByb3h5ID0gbWFuYWdlci5saXN0KCkKKyAgIGxwcm94eS5hcHBlbmQoe30pCisgICAjIG5vdyBtdXRhdGUgdGhlIGRpY3Rpb25hcnkKKyAgIGQgPSBscHJveHlbMF0KKyAgIGRbJ2EnXSA9IDEKKyAgIGRbJ2InXSA9IDIKKyAgICMgYXQgdGhpcyBwb2ludCwgdGhlIGNoYW5nZXMgdG8gZCBhcmUgbm90IHlldCBzeW5jZWQsIGJ1dCBieQorICAgIyB1cGRhdGluZyB0aGUgZGljdGlvbmFyeSwgdGhlIHByb3h5IGlzIG5vdGlmaWVkIG9mIHRoZSBjaGFuZ2UKKyAgIGxwcm94eVswXSA9IGQKKworVGhpcyBhcHByb2FjaCBpcyBwZXJoYXBzIGxlc3MgY29udmVuaWVudCB0aGFuIGVtcGxveWluZyBuZXN0ZWQKKzpyZWY6YG11bHRpcHJvY2Vzc2luZy1wcm94eV9vYmplY3RzYCBmb3IgbW9zdCB1c2UgY2FzZXMgYnV0IGFsc28KK2RlbW9uc3RyYXRlcyBhIGxldmVsIG9mIGNvbnRyb2wgb3ZlciB0aGUgc3luY2hyb25pemF0aW9uLgogCiAuLiBub3RlOjoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvb3MucGF0aC5yc3QgYi9Eb2MvbGlicmFyeS9vcy5wYXRoLnJzdAppbmRleCBiZjBkZmFjLi40MDYwNTRlIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9vcy5wYXRoLnJzdAorKysgYi9Eb2MvbGlicmFyeS9vcy5wYXRoLnJzdApAQCAtNjEsNiArNjEsOSBAQAogICAgcGxhdGZvcm1zLCB0aGlzIGlzIGVxdWl2YWxlbnQgdG8gY2FsbGluZyB0aGUgZnVuY3Rpb24gOmZ1bmM6YG5vcm1wYXRoYCBhcwogICAgZm9sbG93czogYGBub3JtcGF0aChqb2luKG9zLmdldGN3ZCgpLCBwYXRoKSlgYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBiYXNlbmFtZShwYXRoKQogCkBAIC03MSw2ICs3NCw5IEBACiAgICBgYCcvZm9vL2Jhci8nYGAgcmV0dXJucyBgYCdiYXInYGAsIHRoZSA6ZnVuYzpgYmFzZW5hbWVgIGZ1bmN0aW9uIHJldHVybnMgYW4KICAgIGVtcHR5IHN0cmluZyAoYGAnJ2BgKS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBjb21tb25wYXRoKHBhdGhzKQogCkBAIC04Myw2ICs4OSw5IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIHNlcXVlbmNlIG9mIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0cyA8cGF0aC1saWtlIG9iamVjdD5gLgorCiAKIC4uIGZ1bmN0aW9uOjogY29tbW9ucHJlZml4KGxpc3QpCiAKQEAgLTEwNCwxMiArMTEzLDE4IEBACiAgICAgICAgID4+PiBvcy5wYXRoLmNvbW1vbnBhdGgoWycvdXNyL2xpYicsICcvdXNyL2xvY2FsL2xpYiddKQogICAgICAgICAnL3VzcicKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBkaXJuYW1lKHBhdGgpCiAKICAgIFJldHVybiB0aGUgZGlyZWN0b3J5IG5hbWUgb2YgcGF0aG5hbWUgKnBhdGgqLiAgVGhpcyBpcyB0aGUgZmlyc3QgZWxlbWVudCBvZgogICAgdGhlIHBhaXIgcmV0dXJuZWQgYnkgcGFzc2luZyAqcGF0aCogdG8gdGhlIGZ1bmN0aW9uIDpmdW5jOmBzcGxpdGAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogZXhpc3RzKHBhdGgpCiAKQEAgLTEyMyw2ICsxMzgsOSBAQAogICAgICAgKnBhdGgqIGNhbiBub3cgYmUgYW4gaW50ZWdlcjogYGBUcnVlYGAgaXMgcmV0dXJuZWQgaWYgaXQgaXMgYW4KICAgICAgICBvcGVuIGZpbGUgZGVzY3JpcHRvciwgYGBGYWxzZWBgIG90aGVyd2lzZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBsZXhpc3RzKHBhdGgpCiAKQEAgLTEzMCw2ICsxNDgsOSBAQAogICAgYnJva2VuIHN5bWJvbGljIGxpbmtzLiAgIEVxdWl2YWxlbnQgdG8gOmZ1bmM6YGV4aXN0c2Agb24gcGxhdGZvcm1zIGxhY2tpbmcKICAgIDpmdW5jOmBvcy5sc3RhdGAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogZXhwYW5kdXNlcihwYXRoKQogCkBAIC0xNTEsNiArMTcyLDkgQEAKICAgIElmIHRoZSBleHBhbnNpb24gZmFpbHMgb3IgaWYgdGhlIHBhdGggZG9lcyBub3QgYmVnaW4gd2l0aCBhIHRpbGRlLCB0aGUgcGF0aCBpcwogICAgcmV0dXJuZWQgdW5jaGFuZ2VkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGV4cGFuZHZhcnMocGF0aCkKIApAQCAtMTYyLDYgKzE4Niw5IEBACiAgICBPbiBXaW5kb3dzLCBgYCVuYW1lJWBgIGV4cGFuc2lvbnMgYXJlIHN1cHBvcnRlZCBpbiBhZGRpdGlvbiB0byBgYCRuYW1lYGAgYW5kCiAgICBgYCR7bmFtZX1gYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBnZXRhdGltZShwYXRoKQogCkBAIC0xODIsNiArMjA5LDkgQEAKICAgIElmIDpmdW5jOmBvcy5zdGF0X2Zsb2F0X3RpbWVzYCByZXR1cm5zIGBgVHJ1ZWBgLCB0aGUgcmVzdWx0IGlzIGEgZmxvYXRpbmcgcG9pbnQKICAgIG51bWJlci4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBnZXRjdGltZShwYXRoKQogCkBAIC0xOTEsMTIgKzIyMSwxOCBAQAogICAgdGhlICA6bW9kOmB0aW1lYCBtb2R1bGUpLiAgUmFpc2UgOmV4YzpgT1NFcnJvcmAgaWYgdGhlIGZpbGUgZG9lcyBub3QgZXhpc3Qgb3IKICAgIGlzIGluYWNjZXNzaWJsZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBnZXRzaXplKHBhdGgpCiAKICAgIFJldHVybiB0aGUgc2l6ZSwgaW4gYnl0ZXMsIG9mICpwYXRoKi4gIFJhaXNlIDpleGM6YE9TRXJyb3JgIGlmIHRoZSBmaWxlIGRvZXMKICAgIG5vdCBleGlzdCBvciBpcyBpbmFjY2Vzc2libGUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogaXNhYnMocGF0aCkKIApAQCAtMjA0LDI0ICsyNDAsMzYgQEAKICAgIGJlZ2lucyB3aXRoIGEgc2xhc2gsIG9uIFdpbmRvd3MgdGhhdCBpdCBiZWdpbnMgd2l0aCBhIChiYWNrKXNsYXNoIGFmdGVyIGNob3BwaW5nCiAgICBvZmYgYSBwb3RlbnRpYWwgZHJpdmUgbGV0dGVyLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGlzZmlsZShwYXRoKQogCiAgICBSZXR1cm4gYGBUcnVlYGAgaWYgKnBhdGgqIGlzIGFuIGV4aXN0aW5nIHJlZ3VsYXIgZmlsZS4gIFRoaXMgZm9sbG93cyBzeW1ib2xpYwogICAgbGlua3MsIHNvIGJvdGggOmZ1bmM6YGlzbGlua2AgYW5kIDpmdW5jOmBpc2ZpbGVgIGNhbiBiZSB0cnVlIGZvciB0aGUgc2FtZSBwYXRoLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGlzZGlyKHBhdGgpCiAKICAgIFJldHVybiBgYFRydWVgYCBpZiAqcGF0aCogaXMgYW4gZXhpc3RpbmcgZGlyZWN0b3J5LiAgVGhpcyBmb2xsb3dzIHN5bWJvbGljCiAgICBsaW5rcywgc28gYm90aCA6ZnVuYzpgaXNsaW5rYCBhbmQgOmZ1bmM6YGlzZGlyYCBjYW4gYmUgdHJ1ZSBmb3IgdGhlIHNhbWUgcGF0aC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBpc2xpbmsocGF0aCkKIAogICAgUmV0dXJuIGBgVHJ1ZWBgIGlmICpwYXRoKiByZWZlcnMgdG8gYSBkaXJlY3RvcnkgZW50cnkgdGhhdCBpcyBhIHN5bWJvbGljIGxpbmsuCiAgICBBbHdheXMgYGBGYWxzZWBgIGlmIHN5bWJvbGljIGxpbmtzIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBQeXRob24gcnVudGltZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBpc21vdW50KHBhdGgpCiAKQEAgLTIzNyw2ICsyODUsOSBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAgICAgICBTdXBwb3J0IGZvciBkZXRlY3Rpbmcgbm9uLXJvb3QgbW91bnQgcG9pbnRzIG9uIFdpbmRvd3MuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogam9pbihwYXRoLCAqcGF0aHMpCiAKQEAgLTI1NSwxMyArMzA2LDIwIEBACiAgICBgYG9zLnBhdGguam9pbigiYzoiLCAiZm9vIilgYCByZXByZXNlbnRzIGEgcGF0aCByZWxhdGl2ZSB0byB0aGUgY3VycmVudAogICAgZGlyZWN0b3J5IG9uIGRyaXZlIDpmaWxlOmBDOmAgKDpmaWxlOmBjOmZvb2ApLCBub3QgOmZpbGU6YGM6XFxmb29gLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YCBmb3IgKnBhdGgqIGFuZCAqcGF0aHMqLgorCiAKIC4uIGZ1bmN0aW9uOjogbm9ybWNhc2UocGF0aCkKIAogICAgTm9ybWFsaXplIHRoZSBjYXNlIG9mIGEgcGF0aG5hbWUuICBPbiBVbml4IGFuZCBNYWMgT1MgWCwgdGhpcyByZXR1cm5zIHRoZQogICAgcGF0aCB1bmNoYW5nZWQ7IG9uIGNhc2UtaW5zZW5zaXRpdmUgZmlsZXN5c3RlbXMsIGl0IGNvbnZlcnRzIHRoZSBwYXRoIHRvCiAgICBsb3dlcmNhc2UuICBPbiBXaW5kb3dzLCBpdCBhbHNvIGNvbnZlcnRzIGZvcndhcmQgc2xhc2hlcyB0byBiYWNrd2FyZCBzbGFzaGVzLgotICAgUmFpc2UgYSBUeXBlRXJyb3IgaWYgdGhlIHR5cGUgb2YgKnBhdGgqIGlzIG5vdCBgYHN0cmBgIG9yIGBgYnl0ZXNgYC4KKyAgIFJhaXNlIGEgVHlwZUVycm9yIGlmIHRoZSB0eXBlIG9mICpwYXRoKiBpcyBub3QgYGBzdHJgYCBvciBgYGJ5dGVzYGAgKGRpcmVjdGx5CisgICBvciBpbmRpcmVjdGx5IHRocm91Z2ggdGhlIDpjbGFzczpgb3MuUGF0aExpa2VgIGludGVyZmFjZSkuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgogCiAKIC4uIGZ1bmN0aW9uOjogbm9ybXBhdGgocGF0aCkKQEAgLTI3MiwxMiArMzMwLDE4IEBACiAgICB0aGF0IGNvbnRhaW5zIHN5bWJvbGljIGxpbmtzLiAgT24gV2luZG93cywgaXQgY29udmVydHMgZm9yd2FyZCBzbGFzaGVzIHRvCiAgICBiYWNrd2FyZCBzbGFzaGVzLiBUbyBub3JtYWxpemUgY2FzZSwgdXNlIDpmdW5jOmBub3JtY2FzZWAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogcmVhbHBhdGgocGF0aCkKIAogICAgUmV0dXJuIHRoZSBjYW5vbmljYWwgcGF0aCBvZiB0aGUgc3BlY2lmaWVkIGZpbGVuYW1lLCBlbGltaW5hdGluZyBhbnkgc3ltYm9saWMKICAgIGxpbmtzIGVuY291bnRlcmVkIGluIHRoZSBwYXRoIChpZiB0aGV5IGFyZSBzdXBwb3J0ZWQgYnkgdGhlIG9wZXJhdGluZyBzeXN0ZW0pLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IHJlbHBhdGgocGF0aCwgc3RhcnQ9b3MuY3VyZGlyKQogCkBAIC0yOTAsNiArMzU0LDkgQEAKIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IHNhbWVmaWxlKHBhdGgxLCBwYXRoMikKIApAQCAtMzA1LDYgKzM3Miw5IEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgV2luZG93cyBub3cgdXNlcyB0aGUgc2FtZSBpbXBsZW1lbnRhdGlvbiBhcyBhbGwgb3RoZXIgcGxhdGZvcm1zLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IHNhbWVvcGVuZmlsZShmcDEsIGZwMikKIApAQCAtMzE1LDYgKzM4NSw5IEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgQWRkZWQgV2luZG93cyBzdXBwb3J0LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IHNhbWVzdGF0KHN0YXQxLCBzdGF0MikKIApAQCAtMzI4LDYgKzQwMSw5IEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgQWRkZWQgV2luZG93cyBzdXBwb3J0LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IHNwbGl0KHBhdGgpCiAKQEAgLTM0MSw2ICs0MTcsOSBAQAogICAgKGJ1dCB0aGUgc3RyaW5ncyBtYXkgZGlmZmVyKS4gIEFsc28gc2VlIHRoZSBmdW5jdGlvbnMgOmZ1bmM6YGRpcm5hbWVgIGFuZAogICAgOmZ1bmM6YGJhc2VuYW1lYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBzcGxpdGRyaXZlKHBhdGgpCiAKQEAgLTM1OSw2ICs0MzgsOSBAQAogICAgYW5kIHNoYXJlLCB1cCB0byBidXQgbm90IGluY2x1ZGluZyB0aGUgZm91cnRoIHNlcGFyYXRvci4KICAgIGUuZy4gYGBzcGxpdGRyaXZlKCIvL2hvc3QvY29tcHV0ZXIvZGlyIilgYCByZXR1cm5zIGBgKCIvL2hvc3QvY29tcHV0ZXIiLCAiL2RpciIpYGAKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBzcGxpdGV4dChwYXRoKQogCkBAIC0zNjcsNiArNDQ5LDkgQEAKICAgIHBlcmlvZC4gTGVhZGluZyBwZXJpb2RzIG9uIHRoZSBiYXNlbmFtZSBhcmUgIGlnbm9yZWQ7IGBgc3BsaXRleHQoJy5jc2hyYycpYGAKICAgIHJldHVybnMgIGBgKCcuY3NocmMnLCAnJylgYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBzcGxpdHVuYyhwYXRoKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9vcy5yc3QgYi9Eb2MvbGlicmFyeS9vcy5yc3QKaW5kZXggNWE2N2Y5My4uOTg4Y2I3YyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvb3MucnN0CisrKyBiL0RvYy9saWJyYXJ5L29zLnJzdApAQCAtNTcsNyArNTcsNyBAQAogCiAgICBUaGUgbmFtZSBvZiB0aGUgb3BlcmF0aW5nIHN5c3RlbSBkZXBlbmRlbnQgbW9kdWxlIGltcG9ydGVkLiAgVGhlIGZvbGxvd2luZwogICAgbmFtZXMgaGF2ZSBjdXJyZW50bHkgYmVlbiByZWdpc3RlcmVkOiBgYCdwb3NpeCdgYCwgYGAnbnQnYGAsCi0gICBgYCdjZSdgYCwgYGAnamF2YSdgYC4KKyAgIGBgJ2phdmEnYGAuCiAKICAgIC4uIHNlZWFsc286OgogICAgICAgOmF0dHI6YHN5cy5wbGF0Zm9ybWAgaGFzIGEgZmluZXIgZ3JhbnVsYXJpdHkuICA6ZnVuYzpgb3MudW5hbWVgIGdpdmVzCkBAIC0xNzEsMjMgKzE3MSw2MCBAQAogCiAuLiBmdW5jdGlvbjo6IGZzZW5jb2RlKGZpbGVuYW1lKQogCi0gICBFbmNvZGUgKmZpbGVuYW1lKiB0byB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZyB3aXRoIGBgJ3N1cnJvZ2F0ZWVzY2FwZSdgYAotICAgZXJyb3IgaGFuZGxlciwgb3IgYGAnc3RyaWN0J2BgIG9uIFdpbmRvd3M7IHJldHVybiA6Y2xhc3M6YGJ5dGVzYCB1bmNoYW5nZWQuCisgICBFbmNvZGUgOnRlcm06YHBhdGgtbGlrZSA8cGF0aC1saWtlIG9iamVjdD5gICpmaWxlbmFtZSogdG8gdGhlIGZpbGVzeXN0ZW0KKyAgIGVuY29kaW5nIHdpdGggYGAnc3Vycm9nYXRlZXNjYXBlJ2BgIGVycm9yIGhhbmRsZXIsIG9yIGBgJ3N0cmljdCdgYCBvbgorICAgV2luZG93czsgcmV0dXJuIDpjbGFzczpgYnl0ZXNgIHVuY2hhbmdlZC4KIAogICAgOmZ1bmM6YGZzZGVjb2RlYCBpcyB0aGUgcmV2ZXJzZSBmdW5jdGlvbi4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBTdXBwb3J0IGFkZGVkIHRvIGFjY2VwdCBvYmplY3RzIGltcGxlbWVudGluZyB0aGUgOmNsYXNzOmBvcy5QYXRoTGlrZWAKKyAgICAgIGludGVyZmFjZS4KKwogCiAuLiBmdW5jdGlvbjo6IGZzZGVjb2RlKGZpbGVuYW1lKQogCi0gICBEZWNvZGUgKmZpbGVuYW1lKiBmcm9tIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nIHdpdGggYGAnc3Vycm9nYXRlZXNjYXBlJ2BgCi0gICBlcnJvciBoYW5kbGVyLCBvciBgYCdzdHJpY3QnYGAgb24gV2luZG93czsgcmV0dXJuIDpjbGFzczpgc3RyYCB1bmNoYW5nZWQuCisgICBEZWNvZGUgdGhlIDp0ZXJtOmBwYXRoLWxpa2UgPHBhdGgtbGlrZSBvYmplY3Q+YCAqZmlsZW5hbWUqIGZyb20gdGhlCisgICBmaWxlc3lzdGVtIGVuY29kaW5nIHdpdGggYGAnc3Vycm9nYXRlZXNjYXBlJ2BgIGVycm9yIGhhbmRsZXIsIG9yIGBgJ3N0cmljdCdgYAorICAgb24gV2luZG93czsgcmV0dXJuIDpjbGFzczpgc3RyYCB1bmNoYW5nZWQuCiAKICAgIDpmdW5jOmBmc2VuY29kZWAgaXMgdGhlIHJldmVyc2UgZnVuY3Rpb24uCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgU3VwcG9ydCBhZGRlZCB0byBhY2NlcHQgb2JqZWN0cyBpbXBsZW1lbnRpbmcgdGhlIDpjbGFzczpgb3MuUGF0aExpa2VgCisgICAgICBpbnRlcmZhY2UuCisKKworLi4gZnVuY3Rpb246OiBmc3BhdGgocGF0aCkKKworICAgUmV0dXJuIHRoZSBmaWxlIHN5c3RlbSByZXByZXNlbnRhdGlvbiBvZiB0aGUgcGF0aC4KKworICAgSWYgOmNsYXNzOmBzdHJgIG9yIDpjbGFzczpgYnl0ZXNgIGlzIHBhc3NlZCBpbiwgaXQgaXMgcmV0dXJuZWQgdW5jaGFuZ2VkLgorICAgT3RoZXJ3aXNlIDptZXRoOmB+b3MuUGF0aExpa2UuX19mc3BhdGhfX2AgaXMgY2FsbGVkIGFuZCBpdHMgdmFsdWUgaXMKKyAgIHJldHVybmVkIGFzIGxvbmcgYXMgaXQgaXMgYSA6Y2xhc3M6YHN0cmAgb3IgOmNsYXNzOmBieXRlc2Agb2JqZWN0LgorICAgSW4gYWxsIG90aGVyIGNhc2VzLCA6ZXhjOmBUeXBlRXJyb3JgIGlzIHJhaXNlZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKworLi4gY2xhc3M6OiBQYXRoTGlrZQorCisgICBBbiA6dGVybTpgYWJzdHJhY3QgYmFzZSBjbGFzc2AgZm9yIG9iamVjdHMgcmVwcmVzZW50aW5nIGEgZmlsZSBzeXN0ZW0gcGF0aCwKKyAgIGUuZy4gOmNsYXNzOmBwYXRobGliLlB1cmVQYXRoYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKyAgIC4uIGFic3RyYWN0bWV0aG9kOjogX19mc3BhdGhfXygpCisKKyAgICAgIFJldHVybiB0aGUgZmlsZSBzeXN0ZW0gcGF0aCByZXByZXNlbnRhdGlvbiBvZiB0aGUgb2JqZWN0LgorCisgICAgICBUaGUgbWV0aG9kIHNob3VsZCBvbmx5IHJldHVybiBhIDpjbGFzczpgc3RyYCBvciA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QsCisgICAgICB3aXRoIHRoZSBwcmVmZXJlbmNlIGJlaW5nIGZvciA6Y2xhc3M6YHN0cmAuCisKIAogLi4gZnVuY3Rpb246OiBnZXRlbnYoa2V5LCBkZWZhdWx0PU5vbmUpCiAKQEAgLTg5Niw2ICs5MzMsOSBAQAogICAgICAgZXhjZXB0aW9uLCB0aGUgZnVuY3Rpb24gbm93IHJldHJpZXMgdGhlIHN5c3RlbSBjYWxsIGluc3RlYWQgb2YgcmFpc2luZyBhbgogICAgICAgOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAgZXhjZXB0aW9uIChzZWUgOnBlcDpgNDc1YCBmb3IgdGhlIHJhdGlvbmFsZSkuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiBUaGUgZm9sbG93aW5nIGNvbnN0YW50cyBhcmUgb3B0aW9ucyBmb3IgdGhlICpmbGFncyogcGFyYW1ldGVyIHRvIHRoZQogOmZ1bmM6YH5vcy5vcGVuYCBmdW5jdGlvbi4gIFRoZXkgY2FuIGJlIGNvbWJpbmVkIHVzaW5nIHRoZSBiaXR3aXNlIE9SIG9wZXJhdG9yCiBgYHxgYC4gIFNvbWUgb2YgdGhlbSBhcmUgbm90IGF2YWlsYWJsZSBvbiBhbGwgcGxhdGZvcm1zLiAgRm9yIGRlc2NyaXB0aW9ucyBvZgpAQCAtMTM5Miw2ICsxNDMyLDkgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCiAgICAgICBBZGRlZCB0aGUgKmRpcl9mZCosICplZmZlY3RpdmVfaWRzKiwgYW5kICpmb2xsb3dfc3ltbGlua3MqIHBhcmFtZXRlcnMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGRhdGE6OiBGX09LCiAgICAgICAgICAgUl9PSwpAQCAtMTQxNiw2ICsxNDU5LDkgQEAKICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgKnBhdGgqIGFzIGEgZmlsZSBkZXNjcmlwdG9yCiAgICAgICBvbiBzb21lIHBsYXRmb3Jtcy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBjaGZsYWdzKHBhdGgsIGZsYWdzLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKIApAQCAtMTQ0Miw2ICsxNDg4LDkgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogICAgICAgVGhlICpmb2xsb3dfc3ltbGlua3MqIGFyZ3VtZW50LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGNobW9kKHBhdGgsIG1vZGUsICosIGRpcl9mZD1Ob25lLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKIApAQCAtMTQ4Myw2ICsxNTMyLDkgQEAKICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgKnBhdGgqIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLAogICAgICAgYW5kIHRoZSAqZGlyX2ZkKiBhbmQgKmZvbGxvd19zeW1saW5rcyogYXJndW1lbnRzLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGNob3duKHBhdGgsIHVpZCwgZ2lkLCAqLCBkaXJfZmQ9Tm9uZSwgZm9sbG93X3N5bWxpbmtzPVRydWUpCiAKQEAgLTE1MDIsNiArMTU1NCw5IEBACiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yIGZvciAqcGF0aCosCiAgICAgICBhbmQgdGhlICpkaXJfZmQqIGFuZCAqZm9sbG93X3N5bWxpbmtzKiBhcmd1bWVudHMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBTdXBwb3J0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGNocm9vdChwYXRoKQogCkBAIC0xNTA5LDYgKzE1NjQsOSBAQAogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogZmNoZGlyKGZkKQogCkBAIC0xNTM3LDYgKzE1OTUsOSBAQAogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogbGNobW9kKHBhdGgsIG1vZGUpCiAKQEAgLTE1NDcsNiArMTYwOCw4IEBACiAKICAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCiAKIC4uIGZ1bmN0aW9uOjogbGNob3duKHBhdGgsIHVpZCwgZ2lkKQogCkBAIC0xNTU2LDYgKzE2MTksOSBAQAogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogbGluayhzcmMsIGRzdCwgKiwgc3JjX2Rpcl9mZD1Ob25lLCBkc3RfZGlyX2ZkPU5vbmUsIGZvbGxvd19zeW1saW5rcz1UcnVlKQogCkBAIC0xNTczLDYgKzE2MzksOSBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAgICAgICBBZGRlZCB0aGUgKnNyY19kaXJfZmQqLCAqZHN0X2Rpcl9mZCosIGFuZCAqZm9sbG93X3N5bWxpbmtzKiBhcmd1bWVudHMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgIGZvciAqc3JjKiBhbmQgKmRzdCouCisKIAogLi4gZnVuY3Rpb246OiBsaXN0ZGlyKHBhdGg9Jy4nKQogCkBAIC0xNTgwLDggKzE2NDksOSBAQAogICAgKnBhdGgqLiAgVGhlIGxpc3QgaXMgaW4gYXJiaXRyYXJ5IG9yZGVyLCBhbmQgZG9lcyBub3QgaW5jbHVkZSB0aGUgc3BlY2lhbAogICAgZW50cmllcyBgYCcuJ2BgIGFuZCBgYCcuLidgYCBldmVuIGlmIHRoZXkgYXJlIHByZXNlbnQgaW4gdGhlIGRpcmVjdG9yeS4KIAotICAgKnBhdGgqIG1heSBiZSBlaXRoZXIgb2YgdHlwZSBgYHN0cmBgIG9yIG9mIHR5cGUgYGBieXRlc2BgLiAgSWYgKnBhdGgqCi0gICBpcyBvZiB0eXBlIGBgYnl0ZXNgYCwgdGhlIGZpbGVuYW1lcyByZXR1cm5lZCB3aWxsIGFsc28gYmUgb2YgdHlwZSBgYGJ5dGVzYGA7CisgICAqcGF0aCogbWF5IGJlIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLiAgSWYgKnBhdGgqIGlzIG9mIHR5cGUgYGBieXRlc2BgCisgICAoZGlyZWN0bHkgb3IgaW5kaXJlY3RseSB0aHJvdWdoIHRoZSA6Y2xhc3M6YFBhdGhMaWtlYCBpbnRlcmZhY2UpLAorICAgdGhlIGZpbGVuYW1lcyByZXR1cm5lZCB3aWxsIGFsc28gYmUgb2YgdHlwZSBgYGJ5dGVzYGA7CiAgICBpbiBhbGwgb3RoZXIgY2lyY3Vtc3RhbmNlcywgdGhleSB3aWxsIGJlIG9mIHR5cGUgYGBzdHJgYC4KIAogICAgVGhpcyBmdW5jdGlvbiBjYW4gYWxzbyBzdXBwb3J0IDpyZWY6YHNwZWNpZnlpbmcgYSBmaWxlIGRlc2NyaXB0b3IKQEAgLTE2MDIsNiArMTY3Miw5IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgZm9yICpwYXRoKi4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBsc3RhdChwYXRoLCBcKiwgZGlyX2ZkPU5vbmUpCiAKQEAgLTE2MjgsNiArMTcwMSw5IEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwogICAgICAgQWRkZWQgdGhlICpkaXJfZmQqIHBhcmFtZXRlci4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAgZm9yICpzcmMqIGFuZCAqZHN0Ki4KKwogCiAuLiBmdW5jdGlvbjo6IG1rZGlyKHBhdGgsIG1vZGU9MG83NzcsICosIGRpcl9mZD1Ob25lKQogCkBAIC0xNjUyLDYgKzE3MjgsOSBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAgICAgICBUaGUgKmRpcl9mZCogYXJndW1lbnQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogbWFrZWRpcnMobmFtZSwgbW9kZT0wbzc3NywgZXhpc3Rfb2s9RmFsc2UpCiAKQEAgLTE2ODUsNiArMTc2NCw5IEBACiAgICAgICBtb2RlIG9mIHRoZSBleGlzdGluZyBkaXJlY3RvcnkuIFNpbmNlIHRoaXMgYmVoYXZpb3Igd2FzIGltcG9zc2libGUgdG8KICAgICAgIGltcGxlbWVudCBzYWZlbHksIGl0IHdhcyByZW1vdmVkIGluIFB5dGhvbiAzLjQuMS4gU2VlIDppc3N1ZTpgMjEwODJgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IG1rZmlmbyhwYXRoLCBtb2RlPTBvNjY2LCAqLCBkaXJfZmQ9Tm9uZSkKIApAQCAtMTcwNSw2ICsxNzg3LDkgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogICAgICAgVGhlICpkaXJfZmQqIGFyZ3VtZW50LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IG1rbm9kKHBhdGgsIG1vZGU9MG82MDAsIGRldmljZT0wLCAqLCBkaXJfZmQ9Tm9uZSkKIApAQCAtMTcyNCw2ICsxODA5LDkgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogICAgICAgVGhlICpkaXJfZmQqIGFyZ3VtZW50LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IG1ham9yKGRldmljZSkKIApAQCAtMTc2Miw2ICsxODUwLDkgQEAKIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBkYXRhOjogcGF0aGNvbmZfbmFtZXMKIApAQCAtMTc3OSw5ICsxODcwLDEwIEBACiAgICBtYXkgYmUgY29udmVydGVkIHRvIGFuIGFic29sdXRlIHBhdGhuYW1lIHVzaW5nCiAgICBgYG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUocGF0aCksIHJlc3VsdClgYC4KIAotICAgSWYgdGhlICpwYXRoKiBpcyBhIHN0cmluZyBvYmplY3QsIHRoZSByZXN1bHQgd2lsbCBhbHNvIGJlIGEgc3RyaW5nIG9iamVjdCwKKyAgIElmIHRoZSAqcGF0aCogaXMgYSBzdHJpbmcgb2JqZWN0IChkaXJlY3RseSBvciBpbmRpcmVjdGx5IHRocm91Z2ggYQorICAgOmNsYXNzOmBQYXRoTGlrZWAgaW50ZXJmYWNlKSwgdGhlIHJlc3VsdCB3aWxsIGFsc28gYmUgYSBzdHJpbmcgb2JqZWN0LAogICAgYW5kIHRoZSBjYWxsIG1heSByYWlzZSBhIFVuaWNvZGVEZWNvZGVFcnJvci4gSWYgdGhlICpwYXRoKiBpcyBhIGJ5dGVzCi0gICBvYmplY3QsIHRoZSByZXN1bHQgd2lsbCBiZSBhIGJ5dGVzIG9iamVjdC4KKyAgIG9iamVjdCAoZGlyZWN0IG9yIGluZGlyZWN0bHkpLCB0aGUgcmVzdWx0IHdpbGwgYmUgYSBieXRlcyBvYmplY3QuCiAKICAgIFRoaXMgZnVuY3Rpb24gY2FuIGFsc28gc3VwcG9ydCA6cmVmOmBwYXRocyByZWxhdGl2ZSB0byBkaXJlY3RvcnkgZGVzY3JpcHRvcnMKICAgIDxkaXJfZmQ+YC4KQEAgLTE3OTQsNiArMTg4Niw5IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKICAgICAgIFRoZSAqZGlyX2ZkKiBhcmd1bWVudC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiByZW1vdmUocGF0aCwgKiwgZGlyX2ZkPU5vbmUpCiAKQEAgLTE4MTIsNiArMTkwNyw5IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKICAgICAgIFRoZSAqZGlyX2ZkKiBhcmd1bWVudC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiByZW1vdmVkaXJzKG5hbWUpCiAKQEAgLTE4MjYsNiArMTkyNCw5IEBACiAgICB0aGV5IGFyZSBlbXB0eS4gUmFpc2VzIDpleGM6YE9TRXJyb3JgIGlmIHRoZSBsZWFmIGRpcmVjdG9yeSBjb3VsZCBub3QgYmUKICAgIHN1Y2Nlc3NmdWxseSByZW1vdmVkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IHJlbmFtZShzcmMsIGRzdCwgKiwgc3JjX2Rpcl9mZD1Ob25lLCBkc3RfZGlyX2ZkPU5vbmUpCiAKQEAgLTE4NDUsNiArMTk0Niw5IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKICAgICAgIFRoZSAqc3JjX2Rpcl9mZCogYW5kICpkc3RfZGlyX2ZkKiBhcmd1bWVudHMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgIGZvciAqc3JjKiBhbmQgKmRzdCouCisKIAogLi4gZnVuY3Rpb246OiByZW5hbWVzKG9sZCwgbmV3KQogCkBAIC0xODU4LDYgKzE5NjIsOSBAQAogICAgICAgVGhpcyBmdW5jdGlvbiBjYW4gZmFpbCB3aXRoIHRoZSBuZXcgZGlyZWN0b3J5IHN0cnVjdHVyZSBtYWRlIGlmIHlvdSBsYWNrCiAgICAgICBwZXJtaXNzaW9ucyBuZWVkZWQgdG8gcmVtb3ZlIHRoZSBsZWFmIGRpcmVjdG9yeSBvciBmaWxlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YCBmb3IgKm9sZCogYW5kICpuZXcqLgorCiAKIC4uIGZ1bmN0aW9uOjogcmVwbGFjZShzcmMsIGRzdCwgKiwgc3JjX2Rpcl9mZD1Ob25lLCBkc3RfZGlyX2ZkPU5vbmUpCiAKQEAgLTE4NzIsNiArMTk3OSw5IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YCBmb3IgKnNyYyogYW5kICpkc3QqLgorCiAKIC4uIGZ1bmN0aW9uOjogcm1kaXIocGF0aCwgKiwgZGlyX2ZkPU5vbmUpCiAKQEAgLTE4ODUsMzggKzE5OTUsNTYgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogICAgICAgVGhlICpkaXJfZmQqIHBhcmFtZXRlci4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBzY2FuZGlyKHBhdGg9Jy4nKQogCi0gICBSZXR1cm4gYW4gaXRlcmF0b3Igb2YgOmNsYXNzOmBEaXJFbnRyeWAgb2JqZWN0cyBjb3JyZXNwb25kaW5nIHRvIHRoZSBlbnRyaWVzCi0gICBpbiB0aGUgZGlyZWN0b3J5IGdpdmVuIGJ5ICpwYXRoKi4gVGhlIGVudHJpZXMgYXJlIHlpZWxkZWQgaW4gYXJiaXRyYXJ5Ci0gICBvcmRlciwgYW5kIHRoZSBzcGVjaWFsIGVudHJpZXMgYGAnLidgYCBhbmQgYGAnLi4nYGAgYXJlIG5vdCBpbmNsdWRlZC4KKyAgIFJldHVybiBhbiBpdGVyYXRvciBvZiA6Y2xhc3M6YG9zLkRpckVudHJ5YCBvYmplY3RzIGNvcnJlc3BvbmRpbmcgdG8gdGhlCisgICBlbnRyaWVzIGluIHRoZSBkaXJlY3RvcnkgZ2l2ZW4gYnkgKnBhdGgqLiBUaGUgZW50cmllcyBhcmUgeWllbGRlZCBpbgorICAgYXJiaXRyYXJ5IG9yZGVyLCBhbmQgdGhlIHNwZWNpYWwgZW50cmllcyBgYCcuJ2BgIGFuZCBgYCcuLidgYCBhcmUgbm90CisgICBpbmNsdWRlZC4KIAogICAgVXNpbmcgOmZ1bmM6YHNjYW5kaXJgIGluc3RlYWQgb2YgOmZ1bmM6YGxpc3RkaXJgIGNhbiBzaWduaWZpY2FudGx5CiAgICBpbmNyZWFzZSB0aGUgcGVyZm9ybWFuY2Ugb2YgY29kZSB0aGF0IGFsc28gbmVlZHMgZmlsZSB0eXBlIG9yIGZpbGUKLSAgIGF0dHJpYnV0ZSBpbmZvcm1hdGlvbiwgYmVjYXVzZSA6Y2xhc3M6YERpckVudHJ5YCBvYmplY3RzIGV4cG9zZSB0aGlzCisgICBhdHRyaWJ1dGUgaW5mb3JtYXRpb24sIGJlY2F1c2UgOmNsYXNzOmBvcy5EaXJFbnRyeWAgb2JqZWN0cyBleHBvc2UgdGhpcwogICAgaW5mb3JtYXRpb24gaWYgdGhlIG9wZXJhdGluZyBzeXN0ZW0gcHJvdmlkZXMgaXQgd2hlbiBzY2FubmluZyBhIGRpcmVjdG9yeS4KLSAgIEFsbCA6Y2xhc3M6YERpckVudHJ5YCBtZXRob2RzIG1heSBwZXJmb3JtIGEgc3lzdGVtIGNhbGwsIGJ1dAotICAgOmZ1bmM6YH5EaXJFbnRyeS5pc19kaXJgIGFuZCA6ZnVuYzpgfkRpckVudHJ5LmlzX2ZpbGVgIHVzdWFsbHkgb25seQotICAgcmVxdWlyZSBhIHN5c3RlbSBjYWxsIGZvciBzeW1ib2xpYyBsaW5rczsgOmZ1bmM6YERpckVudHJ5LnN0YXRgCisgICBBbGwgOmNsYXNzOmBvcy5EaXJFbnRyeWAgbWV0aG9kcyBtYXkgcGVyZm9ybSBhIHN5c3RlbSBjYWxsLCBidXQKKyAgIDpmdW5jOmB+b3MuRGlyRW50cnkuaXNfZGlyYCBhbmQgOmZ1bmM6YH5vcy5EaXJFbnRyeS5pc19maWxlYCB1c3VhbGx5IG9ubHkKKyAgIHJlcXVpcmUgYSBzeXN0ZW0gY2FsbCBmb3Igc3ltYm9saWMgbGlua3M7IDpmdW5jOmBvcy5EaXJFbnRyeS5zdGF0YAogICAgYWx3YXlzIHJlcXVpcmVzIGEgc3lzdGVtIGNhbGwgb24gVW5peCBidXQgb25seSByZXF1aXJlcyBvbmUgZm9yCiAgICBzeW1ib2xpYyBsaW5rcyBvbiBXaW5kb3dzLgogCi0gICBPbiBVbml4LCAqcGF0aCogY2FuIGJlIG9mIHR5cGUgOmNsYXNzOmBzdHJgIG9yIDpjbGFzczpgYnl0ZXNgICh1c2UKLSAgIDpmdW5jOmB+b3MuZnNlbmNvZGVgIGFuZCA6ZnVuYzpgfm9zLmZzZGVjb2RlYCB0byBlbmNvZGUgYW5kIGRlY29kZQotICAgOmNsYXNzOmBieXRlc2AgcGF0aHMpLiBPbiBXaW5kb3dzLCAqcGF0aCogbXVzdCBiZSBvZiB0eXBlIDpjbGFzczpgc3RyYC4KLSAgIE9uIGJvdGggc3lzdGVtcywgdGhlIHR5cGUgb2YgdGhlIDphdHRyOmB+RGlyRW50cnkubmFtZWAgYW5kCi0gICA6YXR0cjpgfkRpckVudHJ5LnBhdGhgIGF0dHJpYnV0ZXMgb2YgZWFjaCA6Y2xhc3M6YERpckVudHJ5YCB3aWxsIGJlIG9mCi0gICB0aGUgc2FtZSB0eXBlIGFzICpwYXRoKi4KKyAgICpwYXRoKiBtYXkgYmUgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuICBJZiAqcGF0aCogaXMgb2YgdHlwZSBgYGJ5dGVzYGAKKyAgIChkaXJlY3RseSBvciBpbmRpcmVjdGx5IHRocm91Z2ggdGhlIDpjbGFzczpgUGF0aExpa2VgIGludGVyZmFjZSksCisgICB0aGUgdHlwZSBvZiB0aGUgOmF0dHI6YH5vcy5EaXJFbnRyeS5uYW1lYCBhbmQgOmF0dHI6YH5vcy5EaXJFbnRyeS5wYXRoYAorICAgYXR0cmlidXRlcyBvZiBlYWNoIDpjbGFzczpgb3MuRGlyRW50cnlgIHdpbGwgYmUgYGBieXRlc2BgOyBpbiBhbGwgb3RoZXIKKyAgIGNpcmN1bXN0YW5jZXMsIHRoZXkgd2lsbCBiZSBvZiB0eXBlIGBgc3RyYGAuCisKKyAgIFRoZSA6ZnVuYzpgc2NhbmRpcmAgaXRlcmF0b3Igc3VwcG9ydHMgdGhlIDp0ZXJtOmBjb250ZXh0IG1hbmFnZXJgIHByb3RvY29sCisgICBhbmQgaGFzIHRoZSBmb2xsb3dpbmcgbWV0aG9kOgorCisgICAuLiBtZXRob2Q6OiBzY2FuZGlyLmNsb3NlKCkKKworICAgICAgQ2xvc2UgdGhlIGl0ZXJhdG9yIGFuZCBmcmVlIGFjcXVpcmVkIHJlc291cmNlcy4KKworICAgICAgVGhpcyBpcyBjYWxsZWQgYXV0b21hdGljYWxseSB3aGVuIHRoZSBpdGVyYXRvciBpcyBleGhhdXN0ZWQgb3IgZ2FyYmFnZQorICAgICAgY29sbGVjdGVkLCBvciB3aGVuIGFuIGVycm9yIGhhcHBlbnMgZHVyaW5nIGl0ZXJhdGluZy4gIEhvd2V2ZXIgaXQKKyAgICAgIGlzIGFkdmlzYWJsZSB0byBjYWxsIGl0IGV4cGxpY2l0bHkgb3IgdXNlIHRoZSA6a2V5d29yZDpgd2l0aGAKKyAgICAgIHN0YXRlbWVudC4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CiAKICAgIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBzaG93cyBhIHNpbXBsZSB1c2Ugb2YgOmZ1bmM6YHNjYW5kaXJgIHRvIGRpc3BsYXkgYWxsCiAgICB0aGUgZmlsZXMgKGV4Y2x1ZGluZyBkaXJlY3RvcmllcykgaW4gdGhlIGdpdmVuICpwYXRoKiB0aGF0IGRvbid0IHN0YXJ0IHdpdGgKICAgIGBgJy4nYGAuIFRoZSBgYGVudHJ5LmlzX2ZpbGUoKWBgIGNhbGwgd2lsbCBnZW5lcmFsbHkgbm90IG1ha2UgYW4gYWRkaXRpb25hbAogICAgc3lzdGVtIGNhbGw6OgogCi0gICAgICBmb3IgZW50cnkgaW4gb3Muc2NhbmRpcihwYXRoKToKLSAgICAgICAgIGlmIG5vdCBlbnRyeS5uYW1lLnN0YXJ0c3dpdGgoJy4nKSBhbmQgZW50cnkuaXNfZmlsZSgpOgotICAgICAgICAgICAgIHByaW50KGVudHJ5Lm5hbWUpCisgICAgICB3aXRoIG9zLnNjYW5kaXIocGF0aCkgYXMgaXQ6CisgICAgICAgICAgZm9yIGVudHJ5IGluIGl0OgorICAgICAgICAgICAgICBpZiBub3QgZW50cnkubmFtZS5zdGFydHN3aXRoKCcuJykgYW5kIGVudHJ5LmlzX2ZpbGUoKToKKyAgICAgICAgICAgICAgICAgIHByaW50KGVudHJ5Lm5hbWUpCiAKICAgIC4uIG5vdGU6OgogCkBAIC0xOTMyLDYgKzIwNjAsMTQgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgdGhlIDp0ZXJtOmBjb250ZXh0IG1hbmFnZXJgIHByb3RvY29sIGFuZCB0aGUKKyAgICAgIDpmdW5jOmB+c2NhbmRpci5jbG9zZSgpYCBtZXRob2QuICBJZiBhIDpmdW5jOmBzY2FuZGlyYCBpdGVyYXRvciBpcyBuZWl0aGVyCisgICAgICBleGhhdXN0ZWQgbm9yIGV4cGxpY2l0bHkgY2xvc2VkIGEgOmV4YzpgUmVzb3VyY2VXYXJuaW5nYCB3aWxsIGJlIGVtaXR0ZWQKKyAgICAgIGluIGl0cyBkZXN0cnVjdG9yLgorCisgICAgICBUaGUgZnVuY3Rpb24gYWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBjbGFzczo6IERpckVudHJ5CiAKQEAgLTE5NDAsMjcgKzIwNzYsMzAgQEAKIAogICAgOmZ1bmM6YHNjYW5kaXJgIHdpbGwgcHJvdmlkZSBhcyBtdWNoIG9mIHRoaXMgaW5mb3JtYXRpb24gYXMgcG9zc2libGUgd2l0aG91dAogICAgbWFraW5nIGFkZGl0aW9uYWwgc3lzdGVtIGNhbGxzLiBXaGVuIGEgYGBzdGF0KClgYCBvciBgYGxzdGF0KClgYCBzeXN0ZW0gY2FsbAotICAgaXMgbWFkZSwgdGhlIGBgRGlyRW50cnlgYCBvYmplY3Qgd2lsbCBjYWNoZSB0aGUgcmVzdWx0LgorICAgaXMgbWFkZSwgdGhlIGBgb3MuRGlyRW50cnlgYCBvYmplY3Qgd2lsbCBjYWNoZSB0aGUgcmVzdWx0LgogCi0gICBgYERpckVudHJ5YGAgaW5zdGFuY2VzIGFyZSBub3QgaW50ZW5kZWQgdG8gYmUgc3RvcmVkIGluIGxvbmctbGl2ZWQgZGF0YQorICAgYGBvcy5EaXJFbnRyeWBgIGluc3RhbmNlcyBhcmUgbm90IGludGVuZGVkIHRvIGJlIHN0b3JlZCBpbiBsb25nLWxpdmVkIGRhdGEKICAgIHN0cnVjdHVyZXM7IGlmIHlvdSBrbm93IHRoZSBmaWxlIG1ldGFkYXRhIGhhcyBjaGFuZ2VkIG9yIGlmIGEgbG9uZyB0aW1lIGhhcwogICAgZWxhcHNlZCBzaW5jZSBjYWxsaW5nIDpmdW5jOmBzY2FuZGlyYCwgY2FsbCBgYG9zLnN0YXQoZW50cnkucGF0aClgYCB0byBmZXRjaAogICAgdXAtdG8tZGF0ZSBpbmZvcm1hdGlvbi4KIAotICAgQmVjYXVzZSB0aGUgYGBEaXJFbnRyeWBgIG1ldGhvZHMgY2FuIG1ha2Ugb3BlcmF0aW5nIHN5c3RlbSBjYWxscywgdGhleSBtYXkKKyAgIEJlY2F1c2UgdGhlIGBgb3MuRGlyRW50cnlgYCBtZXRob2RzIGNhbiBtYWtlIG9wZXJhdGluZyBzeXN0ZW0gY2FsbHMsIHRoZXkgbWF5CiAgICBhbHNvIHJhaXNlIDpleGM6YE9TRXJyb3JgLiBJZiB5b3UgbmVlZCB2ZXJ5IGZpbmUtZ3JhaW5lZAogICAgY29udHJvbCBvdmVyIGVycm9ycywgeW91IGNhbiBjYXRjaCA6ZXhjOmBPU0Vycm9yYCB3aGVuIGNhbGxpbmcgb25lIG9mIHRoZQotICAgYGBEaXJFbnRyeWBgIG1ldGhvZHMgYW5kIGhhbmRsZSBhcyBhcHByb3ByaWF0ZS4KKyAgIGBgb3MuRGlyRW50cnlgYCBtZXRob2RzIGFuZCBoYW5kbGUgYXMgYXBwcm9wcmlhdGUuCiAKLSAgIEF0dHJpYnV0ZXMgYW5kIG1ldGhvZHMgb24gYSBgYERpckVudHJ5YGAgaW5zdGFuY2UgYXJlIGFzIGZvbGxvd3M6CisgICBUbyBiZSBkaXJlY3RseSB1c2FibGUgYXMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAsIGBgb3MuRGlyRW50cnlgYAorICAgaW1wbGVtZW50cyB0aGUgOmNsYXNzOmBQYXRoTGlrZWAgaW50ZXJmYWNlLgorCisgICBBdHRyaWJ1dGVzIGFuZCBtZXRob2RzIG9uIGEgYGBvcy5EaXJFbnRyeWBgIGluc3RhbmNlIGFyZSBhcyBmb2xsb3dzOgogCiAgICAuLiBhdHRyaWJ1dGU6OiBuYW1lCiAKICAgICAgIFRoZSBlbnRyeSdzIGJhc2UgZmlsZW5hbWUsIHJlbGF0aXZlIHRvIHRoZSA6ZnVuYzpgc2NhbmRpcmAgKnBhdGgqCiAgICAgICBhcmd1bWVudC4KIAotICAgICAgVGhlIDphdHRyOmBuYW1lYCBhdHRyaWJ1dGUgd2lsbCBiZSBvZiB0aGUgc2FtZSB0eXBlIChgYHN0cmBgIG9yCi0gICAgICBgYGJ5dGVzYGApIGFzIHRoZSA6ZnVuYzpgc2NhbmRpcmAgKnBhdGgqIGFyZ3VtZW50LiBVc2UKKyAgICAgIFRoZSA6YXR0cjpgbmFtZWAgYXR0cmlidXRlIHdpbGwgYmUgYGBieXRlc2BgIGlmIHRoZSA6ZnVuYzpgc2NhbmRpcmAKKyAgICAgICpwYXRoKiBhcmd1bWVudCBpcyBvZiB0eXBlIGBgYnl0ZXNgYCBhbmQgYGBzdHJgYCBvdGhlcndpc2UuICBVc2UKICAgICAgIDpmdW5jOmB+b3MuZnNkZWNvZGVgIHRvIGRlY29kZSBieXRlIGZpbGVuYW1lcy4KIAogICAgLi4gYXR0cmlidXRlOjogcGF0aApAQCAtMTk3MCwxNiArMjEwOSwxNyBAQAogICAgICAgYXJndW1lbnQuICBUaGUgcGF0aCBpcyBvbmx5IGFic29sdXRlIGlmIHRoZSA6ZnVuYzpgc2NhbmRpcmAgKnBhdGgqCiAgICAgICBhcmd1bWVudCB3YXMgYWJzb2x1dGUuCiAKLSAgICAgIFRoZSA6YXR0cjpgcGF0aGAgYXR0cmlidXRlIHdpbGwgYmUgb2YgdGhlIHNhbWUgdHlwZSAoYGBzdHJgYCBvcgotICAgICAgYGBieXRlc2BgKSBhcyB0aGUgOmZ1bmM6YHNjYW5kaXJgICpwYXRoKiBhcmd1bWVudC4gVXNlCisgICAgICBUaGUgOmF0dHI6YHBhdGhgIGF0dHJpYnV0ZSB3aWxsIGJlIGBgYnl0ZXNgYCBpZiB0aGUgOmZ1bmM6YHNjYW5kaXJgCisgICAgICAqcGF0aCogYXJndW1lbnQgaXMgb2YgdHlwZSBgYGJ5dGVzYGAgYW5kIGBgc3RyYGAgb3RoZXJ3aXNlLiAgVXNlCiAgICAgICA6ZnVuYzpgfm9zLmZzZGVjb2RlYCB0byBkZWNvZGUgYnl0ZSBmaWxlbmFtZXMuCiAKICAgIC4uIG1ldGhvZDo6IGlub2RlKCkKIAogICAgICAgUmV0dXJuIHRoZSBpbm9kZSBudW1iZXIgb2YgdGhlIGVudHJ5LgogCi0gICAgICBUaGUgcmVzdWx0IGlzIGNhY2hlZCBvbiB0aGUgYGBEaXJFbnRyeWBgIG9iamVjdC4gVXNlIGBgb3Muc3RhdChlbnRyeS5wYXRoLAotICAgICAgZm9sbG93X3N5bWxpbmtzPUZhbHNlKS5zdF9pbm9gYCB0byBmZXRjaCB1cC10by1kYXRlIGluZm9ybWF0aW9uLgorICAgICAgVGhlIHJlc3VsdCBpcyBjYWNoZWQgb24gdGhlIGBgb3MuRGlyRW50cnlgYCBvYmplY3QuIFVzZQorICAgICAgYGBvcy5zdGF0KGVudHJ5LnBhdGgsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkuc3RfaW5vYGAgdG8gZmV0Y2ggdXAtdG8tZGF0ZQorICAgICAgaW5mb3JtYXRpb24uCiAKICAgICAgIE9uIHRoZSBmaXJzdCwgdW5jYWNoZWQgY2FsbCwgYSBzeXN0ZW0gY2FsbCBpcyByZXF1aXJlZCBvbiBXaW5kb3dzIGJ1dAogICAgICAgbm90IG9uIFVuaXguCkBAIC0xOTk0LDcgKzIxMzQsNyBAQAogICAgICAgaXMgYSBkaXJlY3RvcnkgKHdpdGhvdXQgZm9sbG93aW5nIHN5bWxpbmtzKTsgcmV0dXJuIGBgRmFsc2VgYCBpZiB0aGUKICAgICAgIGVudHJ5IGlzIGFueSBvdGhlciBraW5kIG9mIGZpbGUgb3IgaWYgaXQgZG9lc24ndCBleGlzdCBhbnltb3JlLgogCi0gICAgICBUaGUgcmVzdWx0IGlzIGNhY2hlZCBvbiB0aGUgYGBEaXJFbnRyeWBgIG9iamVjdCwgd2l0aCBhIHNlcGFyYXRlIGNhY2hlCisgICAgICBUaGUgcmVzdWx0IGlzIGNhY2hlZCBvbiB0aGUgYGBvcy5EaXJFbnRyeWBgIG9iamVjdCwgd2l0aCBhIHNlcGFyYXRlIGNhY2hlCiAgICAgICBmb3IgKmZvbGxvd19zeW1saW5rcyogYGBUcnVlYGAgYW5kIGBgRmFsc2VgYC4gQ2FsbCA6ZnVuYzpgb3Muc3RhdGAgYWxvbmcKICAgICAgIHdpdGggOmZ1bmM6YHN0YXQuU19JU0RJUmAgdG8gZmV0Y2ggdXAtdG8tZGF0ZSBpbmZvcm1hdGlvbi4KIApAQCAtMjAxOCw4ICsyMTU4LDggQEAKICAgICAgIGlzIGEgZmlsZSAod2l0aG91dCBmb2xsb3dpbmcgc3ltbGlua3MpOyByZXR1cm4gYGBGYWxzZWBgIGlmIHRoZSBlbnRyeSBpcwogICAgICAgYSBkaXJlY3Rvcnkgb3Igb3RoZXIgbm9uLWZpbGUgZW50cnksIG9yIGlmIGl0IGRvZXNuJ3QgZXhpc3QgYW55bW9yZS4KIAotICAgICAgVGhlIHJlc3VsdCBpcyBjYWNoZWQgb24gdGhlIGBgRGlyRW50cnlgYCBvYmplY3QuIENhY2hpbmcsIHN5c3RlbSBjYWxscwotICAgICAgbWFkZSwgYW5kIGV4Y2VwdGlvbnMgcmFpc2VkIGFyZSBhcyBwZXIgOmZ1bmM6YH5EaXJFbnRyeS5pc19kaXJgLgorICAgICAgVGhlIHJlc3VsdCBpcyBjYWNoZWQgb24gdGhlIGBgb3MuRGlyRW50cnlgYCBvYmplY3QuIENhY2hpbmcsIHN5c3RlbSBjYWxscworICAgICAgbWFkZSwgYW5kIGV4Y2VwdGlvbnMgcmFpc2VkIGFyZSBhcyBwZXIgOmZ1bmM6YH5vcy5EaXJFbnRyeS5pc19kaXJgLgogCiAgICAuLiBtZXRob2Q6OiBpc19zeW1saW5rKCkKIApAQCAtMjAyNyw3ICsyMTY3LDcgQEAKICAgICAgIHJldHVybiBgYEZhbHNlYGAgaWYgdGhlIGVudHJ5IHBvaW50cyB0byBhIGRpcmVjdG9yeSBvciBhbnkga2luZCBvZiBmaWxlLAogICAgICAgb3IgaWYgaXQgZG9lc24ndCBleGlzdCBhbnltb3JlLgogCi0gICAgICBUaGUgcmVzdWx0IGlzIGNhY2hlZCBvbiB0aGUgYGBEaXJFbnRyeWBgIG9iamVjdC4gQ2FsbAorICAgICAgVGhlIHJlc3VsdCBpcyBjYWNoZWQgb24gdGhlIGBgb3MuRGlyRW50cnlgYCBvYmplY3QuIENhbGwKICAgICAgIDpmdW5jOmBvcy5wYXRoLmlzbGlua2AgdG8gZmV0Y2ggdXAtdG8tZGF0ZSBpbmZvcm1hdGlvbi4KIAogICAgICAgT24gdGhlIGZpcnN0LCB1bmNhY2hlZCBjYWxsLCBubyBzeXN0ZW0gY2FsbCBpcyByZXF1aXJlZCBpbiBtb3N0IGNhc2VzLgpAQCAtMjA1MiwyMyArMjE5MiwyOSBAQAogICAgICAgOmNsYXNzOmBzdGF0X3Jlc3VsdGAgYXJlIGFsd2F5cyBzZXQgdG8gemVyby4gQ2FsbCA6ZnVuYzpgb3Muc3RhdGAgdG8KICAgICAgIGdldCB0aGVzZSBhdHRyaWJ1dGVzLgogCi0gICAgICBUaGUgcmVzdWx0IGlzIGNhY2hlZCBvbiB0aGUgYGBEaXJFbnRyeWBgIG9iamVjdCwgd2l0aCBhIHNlcGFyYXRlIGNhY2hlCisgICAgICBUaGUgcmVzdWx0IGlzIGNhY2hlZCBvbiB0aGUgYGBvcy5EaXJFbnRyeWBgIG9iamVjdCwgd2l0aCBhIHNlcGFyYXRlIGNhY2hlCiAgICAgICBmb3IgKmZvbGxvd19zeW1saW5rcyogYGBUcnVlYGAgYW5kIGBgRmFsc2VgYC4gQ2FsbCA6ZnVuYzpgb3Muc3RhdGAgdG8KICAgICAgIGZldGNoIHVwLXRvLWRhdGUgaW5mb3JtYXRpb24uCiAKICAgIE5vdGUgdGhhdCB0aGVyZSBpcyBhIG5pY2UgY29ycmVzcG9uZGVuY2UgYmV0d2VlbiBzZXZlcmFsIGF0dHJpYnV0ZXMKLSAgIGFuZCBtZXRob2RzIG9mIGBgRGlyRW50cnlgYCBhbmQgb2YgOmNsYXNzOmBwYXRobGliLlBhdGhgLiAgSW4KLSAgIHBhcnRpY3VsYXIsIHRoZSBgYG5hbWVgYCBhdHRyaWJ1dGUgaGFzIHRoZSBzYW1lIG1lYW5pbmcsIGFzIGRvIHRoZQotICAgYGBpc19kaXIoKWBgLCBgYGlzX2ZpbGUoKWBgLCBgYGlzX3N5bWxpbmsoKWBgIGFuZCBgYHN0YXQoKWBgIG1ldGhvZHMuCisgICBhbmQgbWV0aG9kcyBvZiBgYG9zLkRpckVudHJ5YGAgYW5kIG9mIDpjbGFzczpgcGF0aGxpYi5QYXRoYC4gIEluCisgICBwYXJ0aWN1bGFyLCB0aGUgYGBuYW1lYGAgYXR0cmlidXRlIGhhcyB0aGUgc2FtZQorICAgbWVhbmluZywgYXMgZG8gdGhlIGBgaXNfZGlyKClgYCwgYGBpc19maWxlKClgYCwgYGBpc19zeW1saW5rKClgYAorICAgYW5kIGBgc3RhdCgpYGAgbWV0aG9kcy4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBZGRlZCBzdXBwb3J0IGZvciB0aGUgOmNsYXNzOmB+b3MuUGF0aExpa2VgIGludGVyZmFjZS4gIEFkZGVkIHN1cHBvcnQKKyAgICAgIGZvciA6Y2xhc3M6YGJ5dGVzYCBwYXRocyBvbiBXaW5kb3dzLgorCiAKIC4uIGZ1bmN0aW9uOjogc3RhdChwYXRoLCBcKiwgZGlyX2ZkPU5vbmUsIGZvbGxvd19zeW1saW5rcz1UcnVlKQogCiAgICBHZXQgdGhlIHN0YXR1cyBvZiBhIGZpbGUgb3IgYSBmaWxlIGRlc2NyaXB0b3IuIFBlcmZvcm0gdGhlIGVxdWl2YWxlbnQgb2YgYQogICAgOmM6ZnVuYzpgc3RhdGAgc3lzdGVtIGNhbGwgb24gdGhlIGdpdmVuIHBhdGguICpwYXRoKiBtYXkgYmUgc3BlY2lmaWVkIGFzCi0gICBlaXRoZXIgYSBzdHJpbmcgb3IgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuIFJldHVybiBhIDpjbGFzczpgc3RhdF9yZXN1bHRgCisgICBlaXRoZXIgYSBzdHJpbmcgLS0gZGlyZWN0bHkgb3IgaW5kaXJlY3RseSB0aHJvdWdoIHRoZSA6Y2xhc3M6YFBhdGhMaWtlYAorICAgaW50ZXJmYWNlIC0tIG9yIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLiBSZXR1cm4gYSA6Y2xhc3M6YHN0YXRfcmVzdWx0YAogICAgb2JqZWN0LgogCiAgICBUaGlzIGZ1bmN0aW9uIG5vcm1hbGx5IGZvbGxvd3Mgc3ltbGlua3M7IHRvIHN0YXQgYSBzeW1saW5rIGFkZCB0aGUgYXJndW1lbnQKQEAgLTIwOTgsNiArMjI0NCw5IEBACiAgICAgICBBZGRlZCB0aGUgKmRpcl9mZCogYW5kICpmb2xsb3dfc3ltbGlua3MqIGFyZ3VtZW50cywgc3BlY2lmeWluZyBhIGZpbGUKICAgICAgIGRlc2NyaXB0b3IgaW5zdGVhZCBvZiBhIHBhdGguCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGNsYXNzOjogc3RhdF9yZXN1bHQKIApAQCAtMjMxOSwxOSArMjQ2OCwyMiBAQAogCiAgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IDpyZWY6YHNwZWNpZnlpbmcgYSBmaWxlIGRlc2NyaXB0b3IgPHBhdGhfZmQ+YC4KIAorICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgVGhlIDpjb25zdDpgU1RfUkRPTkxZYCBhbmQgOmNvbnN0OmBTVF9OT1NVSURgIGNvbnN0YW50cyB3ZXJlIGFkZGVkLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgZm9yICpwYXRoKi4KKwogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKICAgICAgIFRoZSA6Y29uc3Q6YFNUX05PREVWYCwgOmNvbnN0OmBTVF9OT0VYRUNgLCA6Y29uc3Q6YFNUX1NZTkNIUk9OT1VTYCwKICAgICAgIDpjb25zdDpgU1RfTUFORExPQ0tgLCA6Y29uc3Q6YFNUX1dSSVRFYCwgOmNvbnN0OmBTVF9BUFBFTkRgLAogICAgICAgOmNvbnN0OmBTVF9JTU1VVEFCTEVgLCA6Y29uc3Q6YFNUX05PQVRJTUVgLCA6Y29uc3Q6YFNUX05PRElSQVRJTUVgLAogICAgICAgYW5kIDpjb25zdDpgU1RfUkVMQVRJTUVgIGNvbnN0YW50cyB3ZXJlIGFkZGVkLgogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXguCi0KLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwotICAgICAgQWRkZWQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciBmb3IgKnBhdGgqLgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCiAKIAogLi4gZGF0YTo6IHN1cHBvcnRzX2Rpcl9mZApAQCAtMjQ1Miw2ICsyNjA0LDkgQEAKICAgICAgIEFkZGVkIHRoZSAqZGlyX2ZkKiBhcmd1bWVudCwgYW5kIG5vdyBhbGxvdyAqdGFyZ2V0X2lzX2RpcmVjdG9yeSoKICAgICAgIG9uIG5vbi1XaW5kb3dzIHBsYXRmb3Jtcy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAgZm9yICpzcmMqIGFuZCAqZHN0Ki4KKwogCiAuLiBmdW5jdGlvbjo6IHN5bmMoKQogCkBAIC0yNDc2LDYgKzI2MzEsMTAgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBXaW5kb3dzCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCisKIC4uIGZ1bmN0aW9uOjogdW5saW5rKHBhdGgsICosIGRpcl9mZD1Ob25lKQogCiAgICBSZW1vdmUgKGRlbGV0ZSkgdGhlIGZpbGUgKnBhdGgqLiAgVGhpcyBmdW5jdGlvbiBpcyBzZW1hbnRpY2FsbHkKQEAgLTI0ODYsNiArMjY0NSw5IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKICAgICAgIFRoZSAqZGlyX2ZkKiBwYXJhbWV0ZXIuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogdXRpbWUocGF0aCwgdGltZXM9Tm9uZSwgKlssIG5zXSwgZGlyX2ZkPU5vbmUsIGZvbGxvd19zeW1saW5rcz1UcnVlKQogCkBAIC0yNTIzLDYgKzI2ODUsOSBAQAogICAgICAgQWRkZWQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciBmb3IgKnBhdGgqLAogICAgICAgYW5kIHRoZSAqZGlyX2ZkKiwgKmZvbGxvd19zeW1saW5rcyosIGFuZCAqbnMqIHBhcmFtZXRlcnMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogd2Fsayh0b3AsIHRvcGRvd249VHJ1ZSwgb25lcnJvcj1Ob25lLCBmb2xsb3dsaW5rcz1GYWxzZSkKIApAQCAtMjYxMyw2ICsyNzc4LDkgQEAKICAgICAgIFRoaXMgZnVuY3Rpb24gbm93IGNhbGxzIDpmdW5jOmBvcy5zY2FuZGlyYCBpbnN0ZWFkIG9mIDpmdW5jOmBvcy5saXN0ZGlyYCwKICAgICAgIG1ha2luZyBpdCBmYXN0ZXIgYnkgcmVkdWNpbmcgdGhlIG51bWJlciBvZiBjYWxscyB0byA6ZnVuYzpgb3Muc3RhdGAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogZndhbGsodG9wPScuJywgdG9wZG93bj1UcnVlLCBvbmVycm9yPU5vbmUsICosIGZvbGxvd19zeW1saW5rcz1GYWxzZSwgZGlyX2ZkPU5vbmUpCiAKQEAgLTI2NjksNiArMjgzNyw5IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiBMaW51eCBleHRlbmRlZCBhdHRyaWJ1dGVzCiB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CkBAIC0yNjgwLDEyICsyODUxLDE2IEBACiAuLiBmdW5jdGlvbjo6IGdldHhhdHRyKHBhdGgsIGF0dHJpYnV0ZSwgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpCiAKICAgIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGV4dGVuZGVkIGZpbGVzeXN0ZW0gYXR0cmlidXRlICphdHRyaWJ1dGUqIGZvcgotICAgKnBhdGgqLiAqYXR0cmlidXRlKiBjYW4gYmUgYnl0ZXMgb3Igc3RyLiBJZiBpdCBpcyBzdHIsIGl0IGlzIGVuY29kZWQKLSAgIHdpdGggdGhlIGZpbGVzeXN0ZW0gZW5jb2RpbmcuCisgICAqcGF0aCouICphdHRyaWJ1dGUqIGNhbiBiZSBieXRlcyBvciBzdHIgKGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgdGhyb3VnaCB0aGUKKyAgIDpjbGFzczpgUGF0aExpa2VgIGludGVyZmFjZSkuIElmIGl0IGlzIHN0ciwgaXQgaXMgZW5jb2RlZCB3aXRoIHRoZSBmaWxlc3lzdGVtCisgICBlbmNvZGluZy4KIAogICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBzcGVjaWZ5aW5nIGEgZmlsZSBkZXNjcmlwdG9yIDxwYXRoX2ZkPmAgYW5kCiAgICA6cmVmOmBub3QgZm9sbG93aW5nIHN5bWxpbmtzIDxmb2xsb3dfc3ltbGlua3M+YC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAgZnByICpwYXRoKiBhbmQgKmF0dHJpYnV0ZSouCisKIAogLi4gZnVuY3Rpb246OiBsaXN0eGF0dHIocGF0aD1Ob25lLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKIApAQCAtMjY5NywyMSArMjg3MiwyOSBAQAogICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBzcGVjaWZ5aW5nIGEgZmlsZSBkZXNjcmlwdG9yIDxwYXRoX2ZkPmAgYW5kCiAgICA6cmVmOmBub3QgZm9sbG93aW5nIHN5bWxpbmtzIDxmb2xsb3dfc3ltbGlua3M+YC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiByZW1vdmV4YXR0cihwYXRoLCBhdHRyaWJ1dGUsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKQogCiAgICBSZW1vdmVzIHRoZSBleHRlbmRlZCBmaWxlc3lzdGVtIGF0dHJpYnV0ZSAqYXR0cmlidXRlKiBmcm9tICpwYXRoKi4KLSAgICphdHRyaWJ1dGUqIHNob3VsZCBiZSBieXRlcyBvciBzdHIuIElmIGl0IGlzIGEgc3RyaW5nLCBpdCBpcyBlbmNvZGVkCisgICAqYXR0cmlidXRlKiBzaG91bGQgYmUgYnl0ZXMgb3Igc3RyIChkaXJlY3RseSBvciBpbmRpcmVjdGx5IHRocm91Z2ggdGhlCisgICA6Y2xhc3M6YFBhdGhMaWtlYCBpbnRlcmZhY2UpLiBJZiBpdCBpcyBhIHN0cmluZywgaXQgaXMgZW5jb2RlZAogICAgd2l0aCB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZy4KIAogICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBzcGVjaWZ5aW5nIGEgZmlsZSBkZXNjcmlwdG9yIDxwYXRoX2ZkPmAgYW5kCiAgICA6cmVmOmBub3QgZm9sbG93aW5nIHN5bWxpbmtzIDxmb2xsb3dfc3ltbGlua3M+YC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAgZm9yICpwYXRoKiBhbmQgKmF0dHJpYnV0ZSouCisKIAogLi4gZnVuY3Rpb246OiBzZXR4YXR0cihwYXRoLCBhdHRyaWJ1dGUsIHZhbHVlLCBmbGFncz0wLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKIAogICAgU2V0IHRoZSBleHRlbmRlZCBmaWxlc3lzdGVtIGF0dHJpYnV0ZSAqYXR0cmlidXRlKiBvbiAqcGF0aCogdG8gKnZhbHVlKi4KLSAgICphdHRyaWJ1dGUqIG11c3QgYmUgYSBieXRlcyBvciBzdHIgd2l0aCBubyBlbWJlZGRlZCBOVUxzLiBJZiBpdCBpcyBhIHN0ciwKKyAgICphdHRyaWJ1dGUqIG11c3QgYmUgYSBieXRlcyBvciBzdHIgd2l0aCBubyBlbWJlZGRlZCBOVUxzIChkaXJlY3RseSBvcgorICAgaW5kaXJlY3RseSB0aHJvdWdoIHRoZSA6Y2xhc3M6YFBhdGhMaWtlYCBpbnRlcmZhY2UpLiBJZiBpdCBpcyBhIHN0ciwKICAgIGl0IGlzIGVuY29kZWQgd2l0aCB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZy4gICpmbGFncyogbWF5IGJlCiAgICA6ZGF0YTpgWEFUVFJfUkVQTEFDRWAgb3IgOmRhdGE6YFhBVFRSX0NSRUFURWAuIElmIDpkYXRhOmBYQVRUUl9SRVBMQUNFYCBpcwogICAgZ2l2ZW4gYW5kIHRoZSBhdHRyaWJ1dGUgZG9lcyBub3QgZXhpc3QsIGBgRUVYSVNUU2BgIHdpbGwgYmUgcmFpc2VkLgpAQCAtMjcyNiw2ICsyOTA5LDkgQEAKICAgICAgIEEgYnVnIGluIExpbnV4IGtlcm5lbCB2ZXJzaW9ucyBsZXNzIHRoYW4gMi42LjM5IGNhdXNlZCB0aGUgZmxhZ3MgYXJndW1lbnQKICAgICAgIHRvIGJlIGlnbm9yZWQgb24gc29tZSBmaWxlc3lzdGVtcy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAgZm9yICpwYXRoKiBhbmQgKmF0dHJpYnV0ZSouCisKIAogLi4gZGF0YTo6IFhBVFRSX1NJWkVfTUFYCiAKQEAgLTI4MjcsNiArMzAxMyw5IEBACiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yIGZvciAqcGF0aCoKICAgICAgIGZvciA6ZnVuYzpgZXhlY3ZlYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIC4uIGZ1bmN0aW9uOjogX2V4aXQobikKIAogICAgRXhpdCB0aGUgcHJvY2VzcyB3aXRoIHN0YXR1cyAqbiosIHdpdGhvdXQgY2FsbGluZyBjbGVhbnVwIGhhbmRsZXJzLCBmbHVzaGluZwpAQCAtMzEzNyw2ICszMzI2LDkgQEAKICAgIDpmdW5jOmBzcGF3bnZlYCBhcmUgbm90IHRocmVhZC1zYWZlIG9uIFdpbmRvd3M7IHdlIGFkdmlzZSB5b3UgdG8gdXNlIHRoZQogICAgOm1vZDpgc3VicHJvY2Vzc2AgbW9kdWxlIGluc3RlYWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGRhdGE6OiBQX05PV0FJVAogICAgICAgICAgIFBfTk9XQUlUTwpAQCAtMzYyMyw2ICszODE1LDExIEBACiAKICAgIFJldHVybiB0aGUgbnVtYmVyIG9mIENQVXMgaW4gdGhlIHN5c3RlbS4gUmV0dXJucyBgYE5vbmVgYCBpZiB1bmRldGVybWluZWQuCiAKKyAgIFRoaXMgbnVtYmVyIGlzIG5vdCBlcXVpdmFsZW50IHRvIHRoZSBudW1iZXIgb2YgQ1BVcyB0aGUgY3VycmVudCBwcm9jZXNzIGNhbgorICAgdXNlLiAgVGhlIG51bWJlciBvZiB1c2FibGUgQ1BVcyBjYW4gYmUgb2J0YWluZWQgd2l0aAorICAgYGBsZW4ob3Muc2NoZWRfZ2V0YWZmaW5pdHkoMCkpYGAKKworCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAogCkBAIC0zNzM4LDM1ICszOTM1LDg5IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCi0uLiBfb3MtbWlzY2Z1bmM6CiAKLU1pc2NlbGxhbmVvdXMgRnVuY3Rpb25zCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUmFuZG9tIG51bWJlcnMKKy0tLS0tLS0tLS0tLS0tCiAKIAotLi4gZnVuY3Rpb246OiB1cmFuZG9tKG4pCisuLiBmdW5jdGlvbjo6IGdldHJhbmRvbShzaXplLCBmbGFncz0wKQogCi0gICBSZXR1cm4gYSBzdHJpbmcgb2YgKm4qIHJhbmRvbSBieXRlcyBzdWl0YWJsZSBmb3IgY3J5cHRvZ3JhcGhpYyB1c2UuCisgICBHZXQgdXAgdG8gKnNpemUqIHJhbmRvbSBieXRlcy4gVGhlIGZ1bmN0aW9uIGNhbiByZXR1cm4gbGVzcyBieXRlcyB0aGFuCisgICByZXF1ZXN0ZWQuCisKKyAgIFRoZXNlIGJ5dGVzIGNhbiBiZSB1c2VkIHRvIHNlZWQgdXNlci1zcGFjZSByYW5kb20gbnVtYmVyIGdlbmVyYXRvcnMgb3IgZm9yCisgICBjcnlwdG9ncmFwaGljIHB1cnBvc2VzLgorCisgICBgYGdldHJhbmRvbSgpYGAgcmVsaWVzIG9uIGVudHJvcHkgZ2F0aGVyZWQgZnJvbSBkZXZpY2UgZHJpdmVycyBhbmQgb3RoZXIKKyAgIHNvdXJjZXMgb2YgZW52aXJvbm1lbnRhbCBub2lzZS4gVW5uZWNlc3NhcmlseSByZWFkaW5nIGxhcmdlIHF1YW50aXRpZXMgb2YKKyAgIGRhdGEgd2lsbCBoYXZlIGEgbmVnYXRpdmUgaW1wYWN0IG9uICBvdGhlciB1c2VycyAgb2YgdGhlIGBgL2Rldi9yYW5kb21gYCBhbmQKKyAgIGBgL2Rldi91cmFuZG9tYGAgZGV2aWNlcy4KKworICAgVGhlIGZsYWdzIGFyZ3VtZW50IGlzIGEgYml0IG1hc2sgdGhhdCBjYW4gY29udGFpbiB6ZXJvIG9yIG1vcmUgb2YgdGhlCisgICBmb2xsb3dpbmcgdmFsdWVzIE9SZWQgdG9nZXRoZXI6IDpweTpkYXRhOmBvcy5HUk5EX1JBTkRPTWAgYW5kCisgICA6cHk6ZGF0YTpgR1JORF9OT05CTE9DS2AuCisKKyAgIFNlZSBhbHNvIHRoZSBgTGludXggZ2V0cmFuZG9tKCkgbWFudWFsIHBhZ2UKKyAgIDxodHRwOi8vbWFuNy5vcmcvbGludXgvbWFuLXBhZ2VzL21hbjIvZ2V0cmFuZG9tLjIuaHRtbD5gXy4KKworICAgQXZhaWxhYmlsaXR5OiBMaW51eCAzLjE3IGFuZCBuZXdlci4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKy4uIGZ1bmN0aW9uOjogdXJhbmRvbShzaXplKQorCisgICBSZXR1cm4gYSBzdHJpbmcgb2YgKnNpemUqIHJhbmRvbSBieXRlcyBzdWl0YWJsZSBmb3IgY3J5cHRvZ3JhcGhpYyB1c2UuCiAKICAgIFRoaXMgZnVuY3Rpb24gcmV0dXJucyByYW5kb20gYnl0ZXMgZnJvbSBhbiBPUy1zcGVjaWZpYyByYW5kb21uZXNzIHNvdXJjZS4gIFRoZQogICAgcmV0dXJuZWQgZGF0YSBzaG91bGQgYmUgdW5wcmVkaWN0YWJsZSBlbm91Z2ggZm9yIGNyeXB0b2dyYXBoaWMgYXBwbGljYXRpb25zLAogICAgdGhvdWdoIGl0cyBleGFjdCBxdWFsaXR5IGRlcGVuZHMgb24gdGhlIE9TIGltcGxlbWVudGF0aW9uLgogCi0gICBPbiBMaW51eCwgYGBnZXRyYW5kb20oKWBgIHN5c2NhbGwgaXMgdXNlZCBpZiBhdmFpbGFibGUgYW5kIHRoZSB1cmFuZG9tCi0gICBlbnRyb3B5IHBvb2wgaXMgaW5pdGlhbGl6ZWQgKGBgZ2V0cmFuZG9tKClgYCBkb2VzIG5vdCBibG9jaykuCi0gICBPbiBhIFVuaXgtbGlrZSBzeXN0ZW0gdGhpcyB3aWxsIHF1ZXJ5IGBgL2Rldi91cmFuZG9tYGAuIE9uIFdpbmRvd3MsIGl0Ci0gICB3aWxsIHVzZSBgYENyeXB0R2VuUmFuZG9tKClgYC4gIElmIGEgcmFuZG9tbmVzcyBzb3VyY2UgaXMgbm90IGZvdW5kLAotICAgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgd2lsbCBiZSByYWlzZWQuCisgICBPbiBMaW51eCwgaWYgdGhlIGBgZ2V0cmFuZG9tKClgYCBzeXNjYWxsIGlzIGF2YWlsYWJsZSwgaXQgaXMgdXNlZCBpbgorICAgYmxvY2tpbmcgbW9kZTogYmxvY2sgdW50aWwgdGhlIHN5c3RlbSB1cmFuZG9tIGVudHJvcHkgcG9vbCBpcyBpbml0aWFsaXplZAorICAgKDEyOCBiaXRzIG9mIGVudHJvcHkgYXJlIGNvbGxlY3RlZCBieSB0aGUga2VybmVsKS4gU2VlIHRoZSA6cGVwOmA1MjRgIGZvcgorICAgdGhlIHJhdGlvbmFsZS4gT24gTGludXgsIHRoZSA6ZnVuYzpgZ2V0cmFuZG9tYCBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byBnZXQKKyAgIHJhbmRvbSBieXRlcyBpbiBub24tYmxvY2tpbmcgbW9kZSAodXNpbmcgdGhlIDpkYXRhOmBHUk5EX05PTkJMT0NLYCBmbGFnKSBvcgorICAgdG8gcG9sbCB1bnRpbCB0aGUgc3lzdGVtIHVyYW5kb20gZW50cm9weSBwb29sIGlzIGluaXRpYWxpemVkLgogCi0gICBGb3IgYW4gZWFzeS10by11c2UgaW50ZXJmYWNlIHRvIHRoZSByYW5kb20gbnVtYmVyIGdlbmVyYXRvcgotICAgcHJvdmlkZWQgYnkgeW91ciBwbGF0Zm9ybSwgcGxlYXNlIHNlZSA6Y2xhc3M6YHJhbmRvbS5TeXN0ZW1SYW5kb21gLgorICAgT24gYSBVbml4LWxpa2Ugc3lzdGVtLCByYW5kb20gYnl0ZXMgYXJlIHJlYWQgZnJvbSB0aGUgYGAvZGV2L3VyYW5kb21gYAorICAgZGV2aWNlLiBJZiB0aGUgYGAvZGV2L3VyYW5kb21gYCBkZXZpY2UgaXMgbm90IGF2YWlsYWJsZSBvciBub3QgcmVhZGFibGUsIHRoZQorICAgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgZXhjZXB0aW9uIGlzIHJhaXNlZC4KKworICAgT24gV2luZG93cywgaXQgd2lsbCB1c2UgYGBDcnlwdEdlblJhbmRvbSgpYGAuCisKKyAgIC4uIHNlZWFsc286OgorICAgICAgVGhlIDptb2Q6YHNlY3JldHNgIG1vZHVsZSBwcm92aWRlcyBoaWdoZXIgbGV2ZWwgZnVuY3Rpb25zLiBGb3IgYW4KKyAgICAgIGVhc3ktdG8tdXNlIGludGVyZmFjZSB0byB0aGUgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IgcHJvdmlkZWQgYnkgeW91cgorICAgICAgcGxhdGZvcm0sIHBsZWFzZSBzZWUgOmNsYXNzOmByYW5kb20uU3lzdGVtUmFuZG9tYC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYuMAorICAgICAgT24gTGludXgsIGBgZ2V0cmFuZG9tKClgYCBpcyBub3cgdXNlZCBpbiBibG9ja2luZyBtb2RlIHRvIGluY3JlYXNlIHRoZQorICAgICAgc2VjdXJpdHkuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41LjIKLSAgICAgIE9uIExpbnV4LCBpZiBgYGdldHJhbmRvbSgpYGAgYmxvY2tzICh0aGUgdXJhbmRvbSBlbnRyb3B5IHBvb2wgaXMgbm90Ci0gICAgICBpbml0aWFsaXplZCB5ZXQpLCBmYWxsIGJhY2sgb24gcmVhZGluZyBgYC9kZXYvdXJhbmRvbWBgLgorICAgICAgT24gTGludXgsIGlmIHRoZSBgYGdldHJhbmRvbSgpYGAgc3lzY2FsbCBibG9ja3MgKHRoZSB1cmFuZG9tIGVudHJvcHkgcG9vbAorICAgICAgaXMgbm90IGluaXRpYWxpemVkIHlldCksIGZhbGwgYmFjayBvbiByZWFkaW5nIGBgL2Rldi91cmFuZG9tYGAuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CiAgICAgICBPbiBMaW51eCAzLjE3IGFuZCBuZXdlciwgdGhlIGBgZ2V0cmFuZG9tKClgYCBzeXNjYWxsIGlzIG5vdyB1c2VkCiAgICAgICB3aGVuIGF2YWlsYWJsZS4gIE9uIE9wZW5CU0QgNS42IGFuZCBuZXdlciwgdGhlIEMgYGBnZXRlbnRyb3B5KClgYAogICAgICAgZnVuY3Rpb24gaXMgbm93IHVzZWQuIFRoZXNlIGZ1bmN0aW9ucyBhdm9pZCB0aGUgdXNhZ2Ugb2YgYW4gaW50ZXJuYWwgZmlsZQogICAgICAgZGVzY3JpcHRvci4KKworLi4gZGF0YTo6IEdSTkRfTk9OQkxPQ0sKKworICAgQnkgIGRlZmF1bHQsIHdoZW4gcmVhZGluZyBmcm9tIGBgL2Rldi9yYW5kb21gYCwgOmZ1bmM6YGdldHJhbmRvbWAgYmxvY2tzIGlmCisgICBubyByYW5kb20gYnl0ZXMgYXJlIGF2YWlsYWJsZSwgYW5kIHdoZW4gcmVhZGluZyBmcm9tIGBgL2Rldi91cmFuZG9tYGAsIGl0IGJsb2NrcworICAgaWYgdGhlIGVudHJvcHkgcG9vbCBoYXMgbm90IHlldCBiZWVuIGluaXRpYWxpemVkLgorCisgICBJZiB0aGUgOnB5OmRhdGE6YEdSTkRfTk9OQkxPQ0tgIGZsYWcgaXMgc2V0LCB0aGVuIDpmdW5jOmBnZXRyYW5kb21gIGRvZXMgbm90CisgICBibG9jayBpbiB0aGVzZSBjYXNlcywgYnV0IGluc3RlYWQgaW1tZWRpYXRlbHkgcmFpc2VzIDpleGM6YEJsb2NraW5nSU9FcnJvcmAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisuLiBkYXRhOjogR1JORF9SQU5ET00KKworICAgSWYgIHRoaXMgIGJpdCAgaXMgIHNldCwgIHRoZW4gIHJhbmRvbSBieXRlcyBhcmUgZHJhd24gZnJvbSB0aGUKKyAgIGBgL2Rldi9yYW5kb21gYCBwb29sIGluc3RlYWQgb2YgdGhlIGBgL2Rldi91cmFuZG9tYGAgcG9vbC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9wYXRobGliLnJzdCBiL0RvYy9saWJyYXJ5L3BhdGhsaWIucnN0CmluZGV4IDdiOTBhMWYuLjM0YWIzYjggMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3BhdGhsaWIucnN0CisrKyBiL0RvYy9saWJyYXJ5L3BhdGhsaWIucnN0CkBAIC0zNSwxMiArMzUsNiBAQAogICAgYWNjZXNzaW5nIHRoZSBPUy4gSW4gdGhpcyBjYXNlLCBpbnN0YW50aWF0aW5nIG9uZSBvZiB0aGUgcHVyZSBjbGFzc2VzIG1heSBiZQogICAgdXNlZnVsIHNpbmNlIHRob3NlIHNpbXBseSBkb24ndCBoYXZlIGFueSBPUy1hY2Nlc3Npbmcgb3BlcmF0aW9ucy4KIAotLi4gbm90ZTo6Ci0gICBUaGlzIG1vZHVsZSBoYXMgYmVlbiBpbmNsdWRlZCBpbiB0aGUgc3RhbmRhcmQgbGlicmFyeSBvbiBhCi0gICA6dGVybTpgcHJvdmlzaW9uYWwgYmFzaXMgPHByb3Zpc2lvbmFsIHBhY2thZ2U+YC4gQmFja3dhcmRzIGluY29tcGF0aWJsZQotICAgY2hhbmdlcyAodXAgdG8gYW5kIGluY2x1ZGluZyByZW1vdmFsIG9mIHRoZSBwYWNrYWdlKSBtYXkgb2NjdXIgaWYgZGVlbWVkCi0gICBuZWNlc3NhcnkgYnkgdGhlIGNvcmUgZGV2ZWxvcGVycy4KLQogLi4gc2VlYWxzbzo6CiAgICA6cGVwOmA0MjhgOiBUaGUgcGF0aGxpYiBtb2R1bGUgLS0gb2JqZWN0LW9yaWVudGVkIGZpbGVzeXN0ZW0gcGF0aHMuCiAKQEAgLTExMSw3ICsxMDUsOCBAQAogICAgICAgUHVyZVBvc2l4UGF0aCgnc2V0dXAucHknKQogCiAgICBFYWNoIGVsZW1lbnQgb2YgKnBhdGhzZWdtZW50cyogY2FuIGJlIGVpdGhlciBhIHN0cmluZyByZXByZXNlbnRpbmcgYQotICAgcGF0aCBzZWdtZW50LCBvciBhbm90aGVyIHBhdGggb2JqZWN0OjoKKyAgIHBhdGggc2VnbWVudCwgYW4gb2JqZWN0IGltcGxlbWVudGluZyB0aGUgOmNsYXNzOmBvcy5QYXRoTGlrZWAgaW50ZXJmYWNlCisgICB3aGljaCByZXR1cm5zIGEgc3RyaW5nLCBvciBhbm90aGVyIHBhdGggb2JqZWN0OjoKIAogICAgICAgPj4+IFB1cmVQYXRoKCdmb28nLCAnc29tZS9wYXRoJywgJ2JhcicpCiAgICAgICBQdXJlUG9zaXhQYXRoKCdmb28vc29tZS9wYXRoL2JhcicpCkBAIC0xNTIsNiArMTQ3LDEyIEBACiAgICB0byBgYFB1cmVQb3NpeFBhdGgoJ2JhcicpYGAsIHdoaWNoIGlzIHdyb25nIGlmIGBgZm9vYGAgaXMgYSBzeW1ib2xpYyBsaW5rCiAgICB0byBhbm90aGVyIGRpcmVjdG9yeSkKIAorICAgUHVyZSBwYXRoIG9iamVjdHMgaW1wbGVtZW50IHRoZSA6Y2xhc3M6YG9zLlBhdGhMaWtlYCBpbnRlcmZhY2UsIGFsbG93aW5nIHRoZW0KKyAgIHRvIGJlIHVzZWQgYW55d2hlcmUgdGhlIGludGVyZmFjZSBpcyBhY2NlcHRlZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHRoZSA6Y2xhc3M6YG9zLlBhdGhMaWtlYCBpbnRlcmZhY2UuCisKIC4uIGNsYXNzOjogUHVyZVBvc2l4UGF0aCgqcGF0aHNlZ21lbnRzKQogCiAgICBBIHN1YmNsYXNzIG9mIDpjbGFzczpgUHVyZVBhdGhgLCB0aGlzIHBhdGggZmxhdm91ciByZXByZXNlbnRzIG5vbi1XaW5kb3dzCkBAIC0xOTksNyArMjAwLDcgQEAKICAgID4+PiBQdXJlV2luZG93c1BhdGgoJ2ZvbycpIDwgUHVyZVBvc2l4UGF0aCgnZm9vJykKICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KLSAgIFR5cGVFcnJvcjogdW5vcmRlcmFibGUgdHlwZXM6IFB1cmVXaW5kb3dzUGF0aCgpIDwgUHVyZVBvc2l4UGF0aCgpCisgICBUeXBlRXJyb3I6ICc8JyBub3Qgc3VwcG9ydGVkIGJldHdlZW4gaW5zdGFuY2VzIG9mICdQdXJlV2luZG93c1BhdGgnIGFuZCAnUHVyZVBvc2l4UGF0aCcKIAogCiBPcGVyYXRvcnMKQEAgLTIxNiw2ICsyMTcsMTQgQEAKICAgID4+PiAnL3VzcicgLyBxCiAgICBQdXJlUG9zaXhQYXRoKCcvdXNyL2JpbicpCiAKK0EgcGF0aCBvYmplY3QgY2FuIGJlIHVzZWQgYW55d2hlcmUgYW4gb2JqZWN0IGltcGxlbWVudGluZyA6Y2xhc3M6YG9zLlBhdGhMaWtlYAoraXMgYWNjZXB0ZWQ6OgorCisgICA+Pj4gaW1wb3J0IG9zCisgICA+Pj4gcCA9IFB1cmVQYXRoKCcvZXRjJykKKyAgID4+PiBvcy5mc3BhdGgocCkKKyAgICcvZXRjJworCiBUaGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgcGF0aCBpcyB0aGUgcmF3IGZpbGVzeXN0ZW0gcGF0aCBpdHNlbGYKIChpbiBuYXRpdmUgZm9ybSwgZS5nLiB3aXRoIGJhY2tzbGFzaGVzIHVuZGVyIFdpbmRvd3MpLCB3aGljaCB5b3UgY2FuCiBwYXNzIHRvIGFueSBmdW5jdGlvbiB0YWtpbmcgYSBmaWxlIHBhdGggYXMgYSBzdHJpbmc6OgpAQCAtOTEwLDcgKzkxOSw3IEBACiAgICB0byBhbiBleGlzdGluZyBmaWxlIG9yIGRpcmVjdG9yeSwgaXQgd2lsbCBiZSB1bmNvbmRpdGlvbmFsbHkgcmVwbGFjZWQuCiAKIAotLi4gbWV0aG9kOjogUGF0aC5yZXNvbHZlKCkKKy4uIG1ldGhvZDo6IFBhdGgucmVzb2x2ZShzdHJpY3Q9RmFsc2UpCiAKICAgIE1ha2UgdGhlIHBhdGggYWJzb2x1dGUsIHJlc29sdmluZyBhbnkgc3ltbGlua3MuICBBIG5ldyBwYXRoIG9iamVjdCBpcwogICAgcmV0dXJuZWQ6OgpAQCAtOTI3LDEwICs5MzYsMTQgQEAKICAgICAgID4+PiBwLnJlc29sdmUoKQogICAgICAgUG9zaXhQYXRoKCcvaG9tZS9hbnRvaW5lL3BhdGhsaWIvc2V0dXAucHknKQogCi0gICBJZiB0aGUgcGF0aCBkb2Vzbid0IGV4aXN0LCA6ZXhjOmBGaWxlTm90Rm91bmRFcnJvcmAgaXMgcmFpc2VkLiAgSWYgYW4KLSAgIGluZmluaXRlIGxvb3AgaXMgZW5jb3VudGVyZWQgYWxvbmcgdGhlIHJlc29sdXRpb24gcGF0aCwKLSAgIDpleGM6YFJ1bnRpbWVFcnJvcmAgaXMgcmFpc2VkLgorICAgSWYgdGhlIHBhdGggZG9lc24ndCBleGlzdCBhbmQgKnN0cmljdCogaXMgYGBUcnVlYGAsIDpleGM6YEZpbGVOb3RGb3VuZEVycm9yYAorICAgaXMgcmFpc2VkLiAgSWYgKnN0cmljdCogaXMgYGBGYWxzZWBgLCB0aGUgcGF0aCBpcyByZXNvbHZlZCBhcyBmYXIgYXMgcG9zc2libGUKKyAgIGFuZCBhbnkgcmVtYWluZGVyIGlzIGFwcGVuZGVkIHdpdGhvdXQgY2hlY2tpbmcgd2hldGhlciBpdCBleGlzdHMuICBJZiBhbgorICAgaW5maW5pdGUgbG9vcCBpcyBlbmNvdW50ZXJlZCBhbG9uZyB0aGUgcmVzb2x1dGlvbiBwYXRoLCA6ZXhjOmBSdW50aW1lRXJyb3JgCisgICBpcyByYWlzZWQuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorICAgICAgVGhlICpzdHJpY3QqIGFyZ3VtZW50LgogCiAuLiBtZXRob2Q6OiBQYXRoLnJnbG9iKHBhdHRlcm4pCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3BkYi5yc3QgYi9Eb2MvbGlicmFyeS9wZGIucnN0CmluZGV4IGJhOWU1NDcuLjdjMzdiYjcgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3BkYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcGRiLnJzdApAQCAtMTQ0LDcgKzE0NCw3IEBACiBhY2Nlc3MgZnVydGhlciBmZWF0dXJlcywgeW91IGhhdmUgdG8gZG8gdGhpcyB5b3Vyc2VsZjoKIAogLi4gY2xhc3M6OiBQZGIoY29tcGxldGVrZXk9J3RhYicsIHN0ZGluPU5vbmUsIHN0ZG91dD1Ob25lLCBza2lwPU5vbmUsIFwKLSAgICAgICAgICAgICAgIG5vc2lnaW50PUZhbHNlKQorICAgICAgICAgICAgICAgbm9zaWdpbnQ9RmFsc2UsIHJlYWRyYz1UcnVlKQogCiAgICA6Y2xhc3M6YFBkYmAgaXMgdGhlIGRlYnVnZ2VyIGNsYXNzLgogCkBAIC0xNjAsNiArMTYwLDkgQEAKICAgIFRoaXMgYWxsb3dzIHlvdSB0byBicmVhayBpbnRvIHRoZSBkZWJ1Z2dlciBhZ2FpbiBieSBwcmVzc2luZyA6a2JkOmBDdHJsLUNgLiAgSWYgeW91CiAgICB3YW50IFBkYiBub3QgdG8gdG91Y2ggdGhlIFNJR0lOVCBoYW5kbGVyLCBzZXQgKm5vc2lnaW50KiB0byB0cnVlLgogCisgICBUaGUgKnJlYWRyYyogYXJndW1lbnQgZGVmYXVsdHMgdG8gdHJ1ZSBhbmQgY29udHJvbHMgd2hldGhlciBQZGIgd2lsbCBsb2FkCisgICAucGRicmMgZmlsZXMgZnJvbSB0aGUgZmlsZXN5c3RlbS4KKwogICAgRXhhbXBsZSBjYWxsIHRvIGVuYWJsZSB0cmFjaW5nIHdpdGggKnNraXAqOjoKIAogICAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihza2lwPVsnZGphbmdvLionXSkuc2V0X3RyYWNlKCkKQEAgLTE3MSw2ICsxNzQsOSBAQAogICAgICAgVGhlICpub3NpZ2ludCogYXJndW1lbnQuICBQcmV2aW91c2x5LCBhIFNJR0lOVCBoYW5kbGVyIHdhcyBuZXZlciBzZXQgYnkKICAgICAgIFBkYi4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFRoZSAqcmVhZHJjKiBhcmd1bWVudC4KKwogICAgLi4gbWV0aG9kOjogcnVuKHN0YXRlbWVudCwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSkKICAgICAgICAgICAgICAgIHJ1bmV2YWwoZXhwcmVzc2lvbiwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSkKICAgICAgICAgICAgICAgIHJ1bmNhbGwoZnVuY3Rpb24sICphcmdzLCAqKmt3ZHMpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9waWNrbGUucnN0IGIvRG9jL2xpYnJhcnkvcGlja2xlLnJzdAppbmRleCAwZDY0MTkxLi42ZTg0MzBmIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9waWNrbGUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3BpY2tsZS5yc3QKQEAgLTQ5Miw3ICs0OTIsNyBAQAogCiAuLiBtZXRob2Q6OiBvYmplY3QuX19nZXRuZXdhcmdzX2V4X18oKQogCi0gICBJbiBwcm90b2NvbHMgNCBhbmQgbmV3ZXIsIGNsYXNzZXMgdGhhdCBpbXBsZW1lbnRzIHRoZQorICAgSW4gcHJvdG9jb2xzIDIgYW5kIG5ld2VyLCBjbGFzc2VzIHRoYXQgaW1wbGVtZW50cyB0aGUKICAgIDptZXRoOmBfX2dldG5ld2FyZ3NfZXhfX2AgbWV0aG9kIGNhbiBkaWN0YXRlIHRoZSB2YWx1ZXMgcGFzc2VkIHRvIHRoZQogICAgOm1ldGg6YF9fbmV3X19gIG1ldGhvZCB1cG9uIHVucGlja2xpbmcuICBUaGUgbWV0aG9kIG11c3QgcmV0dXJuIGEgcGFpcgogICAgYGAoYXJncywga3dhcmdzKWBgIHdoZXJlICphcmdzKiBpcyBhIHR1cGxlIG9mIHBvc2l0aW9uYWwgYXJndW1lbnRzCkBAIC01MDQsMTUgKzUwNCwyMiBAQAogICAgY2xhc3MgcmVxdWlyZXMga2V5d29yZC1vbmx5IGFyZ3VtZW50cy4gIE90aGVyd2lzZSwgaXQgaXMgcmVjb21tZW5kZWQgZm9yCiAgICBjb21wYXRpYmlsaXR5IHRvIGltcGxlbWVudCA6bWV0aDpgX19nZXRuZXdhcmdzX19gLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgOm1ldGg6YF9fZ2V0bmV3YXJnc19leF9fYCBpcyBub3cgdXNlZCBpbiBwcm90b2NvbHMgMiBhbmQgMy4KKwogCiAuLiBtZXRob2Q6OiBvYmplY3QuX19nZXRuZXdhcmdzX18oKQogCi0gICBUaGlzIG1ldGhvZCBzZXJ2ZSBhIHNpbWlsYXIgcHVycG9zZSBhcyA6bWV0aDpgX19nZXRuZXdhcmdzX2V4X19gIGJ1dAotICAgZm9yIHByb3RvY29scyAyIGFuZCBuZXdlci4gIEl0IG11c3QgcmV0dXJuIGEgdHVwbGUgb2YgYXJndW1lbnRzIGBgYXJnc2BgCi0gICB3aGljaCB3aWxsIGJlIHBhc3NlZCB0byB0aGUgOm1ldGg6YF9fbmV3X19gIG1ldGhvZCB1cG9uIHVucGlja2xpbmcuCisgICBUaGlzIG1ldGhvZCBzZXJ2ZSBhIHNpbWlsYXIgcHVycG9zZSBhcyA6bWV0aDpgX19nZXRuZXdhcmdzX2V4X19gLCBidXQKKyAgIHN1cHBvcnRzIG9ubHkgcG9zaXRpb25hbCBhcmd1bWVudHMuICBJdCBtdXN0IHJldHVybiBhIHR1cGxlIG9mIGFyZ3VtZW50cworICAgYGBhcmdzYGAgd2hpY2ggd2lsbCBiZSBwYXNzZWQgdG8gdGhlIDptZXRoOmBfX25ld19fYCBtZXRob2QgdXBvbiB1bnBpY2tsaW5nLgogCi0gICBJbiBwcm90b2NvbHMgNCBhbmQgbmV3ZXIsIDptZXRoOmBfX2dldG5ld2FyZ3NfX2Agd2lsbCBub3QgYmUgY2FsbGVkIGlmCi0gICA6bWV0aDpgX19nZXRuZXdhcmdzX2V4X19gIGlzIGRlZmluZWQuCisgICA6bWV0aDpgX19nZXRuZXdhcmdzX19gIHdpbGwgbm90IGJlIGNhbGxlZCBpZiA6bWV0aDpgX19nZXRuZXdhcmdzX2V4X19gIGlzCisgICBkZWZpbmVkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQmVmb3JlIFB5dGhvbiAzLjYsIDptZXRoOmBfX2dldG5ld2FyZ3NfX2Agd2FzIGNhbGxlZCBpbnN0ZWFkIG9mCisgICAgICA6bWV0aDpgX19nZXRuZXdhcmdzX2V4X19gIGluIHByb3RvY29scyAyIGFuZCAzLgogCiAKIC4uIG1ldGhvZDo6IG9iamVjdC5fX2dldHN0YXRlX18oKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcGtndXRpbC5yc3QgYi9Eb2MvbGlicmFyeS9wa2d1dGlsLnJzdAppbmRleCBiOWU3NmY3Li5mYmEwZWE2IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9wa2d1dGlsLnJzdAorKysgYi9Eb2MvbGlicmFyeS9wa2d1dGlsLnJzdApAQCAtMTEsNiArMTEsMTEgQEAKIFRoaXMgbW9kdWxlIHByb3ZpZGVzIHV0aWxpdGllcyBmb3IgdGhlIGltcG9ydCBzeXN0ZW0sIGluIHBhcnRpY3VsYXIgcGFja2FnZQogc3VwcG9ydC4KIAorLi4gY2xhc3M6OiBNb2R1bGVJbmZvKG1vZHVsZV9maW5kZXIsIG5hbWUsIGlzcGtnKQorCisgICAgQSBuYW1lZHR1cGxlIHRoYXQgaG9sZHMgYSBicmllZiBzdW1tYXJ5IG9mIGEgbW9kdWxlJ3MgaW5mby4KKworICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgogCiAuLiBmdW5jdGlvbjo6IGV4dGVuZF9wYXRoKHBhdGgsIG5hbWUpCiAKQEAgLTEzOSw3ICsxNDQsNyBAQAogCiAuLiBmdW5jdGlvbjo6IGl0ZXJfbW9kdWxlcyhwYXRoPU5vbmUsIHByZWZpeD0nJykKIAotICAgWWllbGRzIGBgKG1vZHVsZV9maW5kZXIsIG5hbWUsIGlzcGtnKWBgIGZvciBhbGwgc3VibW9kdWxlcyBvbiAqcGF0aCosIG9yLCBpZgorICAgWWllbGRzIDpjbGFzczpgTW9kdWxlSW5mb2AgZm9yIGFsbCBzdWJtb2R1bGVzIG9uICpwYXRoKiwgb3IsIGlmCiAgICAqcGF0aCogaXMgYGBOb25lYGAsIGFsbCB0b3AtbGV2ZWwgbW9kdWxlcyBvbiBgYHN5cy5wYXRoYGAuCiAKICAgICpwYXRoKiBzaG91bGQgYmUgZWl0aGVyIGBgTm9uZWBgIG9yIGEgbGlzdCBvZiBwYXRocyB0byBsb29rIGZvciBtb2R1bGVzIGluLgpAQCAtMTYwLDcgKzE2NSw3IEBACiAKIC4uIGZ1bmN0aW9uOjogd2Fsa19wYWNrYWdlcyhwYXRoPU5vbmUsIHByZWZpeD0nJywgb25lcnJvcj1Ob25lKQogCi0gICBZaWVsZHMgYGAobW9kdWxlX2ZpbmRlciwgbmFtZSwgaXNwa2cpYGAgZm9yIGFsbCBtb2R1bGVzIHJlY3Vyc2l2ZWx5IG9uCisgICBZaWVsZHMgOmNsYXNzOmBNb2R1bGVJbmZvYCBmb3IgYWxsIG1vZHVsZXMgcmVjdXJzaXZlbHkgb24KICAgICpwYXRoKiwgb3IsIGlmICpwYXRoKiBpcyBgYE5vbmVgYCwgYWxsIGFjY2Vzc2libGUgbW9kdWxlcy4KIAogICAgKnBhdGgqIHNob3VsZCBiZSBlaXRoZXIgYGBOb25lYGAgb3IgYSBsaXN0IG9mIHBhdGhzIHRvIGxvb2sgZm9yIG1vZHVsZXMgaW4uCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9wb3BsaWIucnN0IGIvRG9jL2xpYnJhcnkvcG9wbGliLnJzdAppbmRleCBmZmFiYzMyLi5kNzJiNjYwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9wb3BsaWIucnN0CisrKyBiL0RvYy9saWJyYXJ5L3BvcGxpYi5yc3QKQEAgLTYyLDYgKzYyLDEzIEBACiAgICAgICA6YXR0cjpgc3NsLlNTTENvbnRleHQuY2hlY2tfaG9zdG5hbWVgIGFuZCAqU2VydmVyIE5hbWUgSW5kaWNhdGlvbiogKHNlZQogICAgICAgOmRhdGE6YHNzbC5IQVNfU05JYCkuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjYKKworICAgICAgICprZXlmaWxlKiBhbmQgKmNlcnRmaWxlKiBhcmUgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiAqY29udGV4dCouCisgICAgICAgUGxlYXNlIHVzZSA6bWV0aDpgc3NsLlNTTENvbnRleHQubG9hZF9jZXJ0X2NoYWluYCBpbnN0ZWFkLCBvciBsZXQKKyAgICAgICA6ZnVuYzpgc3NsLmNyZWF0ZV9kZWZhdWx0X2NvbnRleHRgIHNlbGVjdCB0aGUgc3lzdGVtJ3MgdHJ1c3RlZCBDQQorICAgICAgIGNlcnRpZmljYXRlcyBmb3IgeW91LgorCiBPbmUgZXhjZXB0aW9uIGlzIGRlZmluZWQgYXMgYW4gYXR0cmlidXRlIG9mIHRoZSA6bW9kOmBwb3BsaWJgIG1vZHVsZToKIAogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9xdWV1ZS5yc3QgYi9Eb2MvbGlicmFyeS9xdWV1ZS5yc3QKaW5kZXggOTI0YmU1YS4uYmQwZmMyZCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcXVldWUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3F1ZXVlLnJzdApAQCAtMTYsOCArMTYsOSBAQAogbW9kdWxlLgogCiBUaGUgbW9kdWxlIGltcGxlbWVudHMgdGhyZWUgdHlwZXMgb2YgcXVldWUsIHdoaWNoIGRpZmZlciBvbmx5IGluIHRoZSBvcmRlciBpbgotd2hpY2ggdGhlIGVudHJpZXMgYXJlIHJldHJpZXZlZC4gIEluIGEgRklGTyBxdWV1ZSwgdGhlIGZpcnN0IHRhc2tzIGFkZGVkIGFyZQotdGhlIGZpcnN0IHJldHJpZXZlZC4gSW4gYSBMSUZPIHF1ZXVlLCB0aGUgbW9zdCByZWNlbnRseSBhZGRlZCBlbnRyeSBpcword2hpY2ggdGhlIGVudHJpZXMgYXJlIHJldHJpZXZlZC4gIEluIGEgOmFiYnI6YEZJRk8gKGZpcnN0LWluLCBmaXJzdC1vdXQpYAorcXVldWUsIHRoZSBmaXJzdCB0YXNrcyBhZGRlZCBhcmUgdGhlIGZpcnN0IHJldHJpZXZlZC4gSW4gYQorOmFiYnI6YExJRk8gKGxhc3QtaW4sIGZpcnN0LW91dClgIHF1ZXVlLCB0aGUgbW9zdCByZWNlbnRseSBhZGRlZCBlbnRyeSBpcwogdGhlIGZpcnN0IHJldHJpZXZlZCAob3BlcmF0aW5nIGxpa2UgYSBzdGFjaykuICBXaXRoIGEgcHJpb3JpdHkgcXVldWUsCiB0aGUgZW50cmllcyBhcmUga2VwdCBzb3J0ZWQgKHVzaW5nIHRoZSA6bW9kOmBoZWFwcWAgbW9kdWxlKSBhbmQgdGhlCiBsb3dlc3QgdmFsdWVkIGVudHJ5IGlzIHJldHJpZXZlZCBmaXJzdC4KQEAgLTI5LDE0ICszMCwxNiBAQAogCiAuLiBjbGFzczo6IFF1ZXVlKG1heHNpemU9MCkKIAotICAgQ29uc3RydWN0b3IgZm9yIGEgRklGTyBxdWV1ZS4gICptYXhzaXplKiBpcyBhbiBpbnRlZ2VyIHRoYXQgc2V0cyB0aGUgdXBwZXJib3VuZAorICAgQ29uc3RydWN0b3IgZm9yIGEgOmFiYnI6YEZJRk8gKGZpcnN0LWluLCBmaXJzdC1vdXQpYCBxdWV1ZS4gICptYXhzaXplKiBpcworICAgYW4gaW50ZWdlciB0aGF0IHNldHMgdGhlIHVwcGVyYm91bmQKICAgIGxpbWl0IG9uIHRoZSBudW1iZXIgb2YgaXRlbXMgdGhhdCBjYW4gYmUgcGxhY2VkIGluIHRoZSBxdWV1ZS4gIEluc2VydGlvbiB3aWxsCiAgICBibG9jayBvbmNlIHRoaXMgc2l6ZSBoYXMgYmVlbiByZWFjaGVkLCB1bnRpbCBxdWV1ZSBpdGVtcyBhcmUgY29uc3VtZWQuICBJZgogICAgKm1heHNpemUqIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB6ZXJvLCB0aGUgcXVldWUgc2l6ZSBpcyBpbmZpbml0ZS4KIAogLi4gY2xhc3M6OiBMaWZvUXVldWUobWF4c2l6ZT0wKQogCi0gICBDb25zdHJ1Y3RvciBmb3IgYSBMSUZPIHF1ZXVlLiAgKm1heHNpemUqIGlzIGFuIGludGVnZXIgdGhhdCBzZXRzIHRoZSB1cHBlcmJvdW5kCisgICBDb25zdHJ1Y3RvciBmb3IgYSA6YWJicjpgTElGTyAobGFzdC1pbiwgZmlyc3Qtb3V0KWAgcXVldWUuICAqbWF4c2l6ZSogaXMKKyAgIGFuIGludGVnZXIgdGhhdCBzZXRzIHRoZSB1cHBlcmJvdW5kCiAgICBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIGl0ZW1zIHRoYXQgY2FuIGJlIHBsYWNlZCBpbiB0aGUgcXVldWUuICBJbnNlcnRpb24gd2lsbAogICAgYmxvY2sgb25jZSB0aGlzIHNpemUgaGFzIGJlZW4gcmVhY2hlZCwgdW50aWwgcXVldWUgaXRlbXMgYXJlIGNvbnN1bWVkLiAgSWYKICAgICptYXhzaXplKiBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gemVybywgdGhlIHF1ZXVlIHNpemUgaXMgaW5maW5pdGUuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9yYW5kb20ucnN0IGIvRG9jL2xpYnJhcnkvcmFuZG9tLnJzdAppbmRleCA4YWUyNDJjLi40ZjI1MTU3IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9yYW5kb20ucnN0CisrKyBiL0RvYy9saWJyYXJ5L3JhbmRvbS5yc3QKQEAgLTQ2LDEwICs0NiwyNCBAQAogLi4gd2FybmluZzo6CiAKICAgIFRoZSBwc2V1ZG8tcmFuZG9tIGdlbmVyYXRvcnMgb2YgdGhpcyBtb2R1bGUgc2hvdWxkIG5vdCBiZSB1c2VkIGZvcgotICAgc2VjdXJpdHkgcHVycG9zZXMuCisgICBzZWN1cml0eSBwdXJwb3Nlcy4gIEZvciBzZWN1cml0eSBvciBjcnlwdG9ncmFwaGljIHVzZXMsIHNlZSB0aGUKKyAgIDptb2Q6YHNlY3JldHNgIG1vZHVsZS4KKworLi4gc2VlYWxzbzo6CisKKyAgIE0uIE1hdHN1bW90byBhbmQgVC4gTmlzaGltdXJhLCAiTWVyc2VubmUgVHdpc3RlcjogQSA2MjMtZGltZW5zaW9uYWxseQorICAgZXF1aWRpc3RyaWJ1dGVkIHVuaWZvcm0gcHNldWRvcmFuZG9tIG51bWJlciBnZW5lcmF0b3IiLCBBQ00gVHJhbnNhY3Rpb25zIG9uCisgICBNb2RlbGluZyBhbmQgQ29tcHV0ZXIgU2ltdWxhdGlvbiBWb2wuIDgsIE5vLiAxLCBKYW51YXJ5IHBwLjMtLTMwIDE5OTguCiAKIAotQm9va2tlZXBpbmcgZnVuY3Rpb25zOgorICAgYENvbXBsZW1lbnRhcnktTXVsdGlwbHktd2l0aC1DYXJyeSByZWNpcGUKKyAgIDxodHRwczovL2NvZGUuYWN0aXZlc3RhdGUuY29tL3JlY2lwZXMvNTc2NzA3Lz5gXyBmb3IgYSBjb21wYXRpYmxlIGFsdGVybmF0aXZlCisgICByYW5kb20gbnVtYmVyIGdlbmVyYXRvciB3aXRoIGEgbG9uZyBwZXJpb2QgYW5kIGNvbXBhcmF0aXZlbHkgc2ltcGxlIHVwZGF0ZQorICAgb3BlcmF0aW9ucy4KKworCitCb29ra2VlcGluZyBmdW5jdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAuLiBmdW5jdGlvbjo6IHNlZWQoYT1Ob25lLCB2ZXJzaW9uPTIpCiAKQEAgLTkzLDcgKzEwNyw4IEBACiAgICA6bWV0aDpgcmFuZHJhbmdlYCB0byBoYW5kbGUgYXJiaXRyYXJpbHkgbGFyZ2UgcmFuZ2VzLgogCiAKLUZ1bmN0aW9ucyBmb3IgaW50ZWdlcnM6CitGdW5jdGlvbnMgZm9yIGludGVnZXJzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC4uIGZ1bmN0aW9uOjogcmFuZHJhbmdlKHN0b3ApCiAgICAgICAgICAgICAgIHJhbmRyYW5nZShzdGFydCwgc3RvcFssIHN0ZXBdKQpAQCAtMTE2LDIzICsxMzEsNTUgQEAKICAgIGBgcmFuZHJhbmdlKGEsIGIrMSlgYC4KIAogCi1GdW5jdGlvbnMgZm9yIHNlcXVlbmNlczoKK0Z1bmN0aW9ucyBmb3Igc2VxdWVuY2VzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAuLiBmdW5jdGlvbjo6IGNob2ljZShzZXEpCiAKICAgIFJldHVybiBhIHJhbmRvbSBlbGVtZW50IGZyb20gdGhlIG5vbi1lbXB0eSBzZXF1ZW5jZSAqc2VxKi4gSWYgKnNlcSogaXMgZW1wdHksCiAgICByYWlzZXMgOmV4YzpgSW5kZXhFcnJvcmAuCiAKKy4uIGZ1bmN0aW9uOjogY2hvaWNlcyhwb3B1bGF0aW9uLCB3ZWlnaHRzPU5vbmUsICosIGN1bV93ZWlnaHRzPU5vbmUsIGs9MSkKKworICAgUmV0dXJuIGEgKmsqIHNpemVkIGxpc3Qgb2YgZWxlbWVudHMgY2hvc2VuIGZyb20gdGhlICpwb3B1bGF0aW9uKiB3aXRoIHJlcGxhY2VtZW50LgorICAgSWYgdGhlICpwb3B1bGF0aW9uKiBpcyBlbXB0eSwgcmFpc2VzIDpleGM6YEluZGV4RXJyb3JgLgorCisgICBJZiBhICp3ZWlnaHRzKiBzZXF1ZW5jZSBpcyBzcGVjaWZpZWQsIHNlbGVjdGlvbnMgYXJlIG1hZGUgYWNjb3JkaW5nIHRvIHRoZQorICAgcmVsYXRpdmUgd2VpZ2h0cy4gIEFsdGVybmF0aXZlbHksIGlmIGEgKmN1bV93ZWlnaHRzKiBzZXF1ZW5jZSBpcyBnaXZlbiwgdGhlCisgICBzZWxlY3Rpb25zIGFyZSBtYWRlIGFjY29yZGluZyB0byB0aGUgY3VtdWxhdGl2ZSB3ZWlnaHRzIChwZXJoYXBzIGNvbXB1dGVkCisgICB1c2luZyA6ZnVuYzpgaXRlcnRvb2xzLmFjY3VtdWxhdGVgKS4gIEZvciBleGFtcGxlLCB0aGUgcmVsYXRpdmUgd2VpZ2h0cworICAgYGBbMTAsIDUsIDMwLCA1XWBgIGFyZSBlcXVpdmFsZW50IHRvIHRoZSBjdW11bGF0aXZlIHdlaWdodHMKKyAgIGBgWzEwLCAxNSwgNDUsIDUwXWBgLiAgSW50ZXJuYWxseSwgdGhlIHJlbGF0aXZlIHdlaWdodHMgYXJlIGNvbnZlcnRlZCB0bworICAgY3VtdWxhdGl2ZSB3ZWlnaHRzIGJlZm9yZSBtYWtpbmcgc2VsZWN0aW9ucywgc28gc3VwcGx5aW5nIHRoZSBjdW11bGF0aXZlCisgICB3ZWlnaHRzIHNhdmVzIHdvcmsuCisKKyAgIElmIG5laXRoZXIgKndlaWdodHMqIG5vciAqY3VtX3dlaWdodHMqIGFyZSBzcGVjaWZpZWQsIHNlbGVjdGlvbnMgYXJlIG1hZGUKKyAgIHdpdGggZXF1YWwgcHJvYmFiaWxpdHkuICBJZiBhIHdlaWdodHMgc2VxdWVuY2UgaXMgc3VwcGxpZWQsIGl0IG11c3QgYmUKKyAgIHRoZSBzYW1lIGxlbmd0aCBhcyB0aGUgKnBvcHVsYXRpb24qIHNlcXVlbmNlLiAgSXQgaXMgYSA6ZXhjOmBUeXBlRXJyb3JgCisgICB0byBzcGVjaWZ5IGJvdGggKndlaWdodHMqIGFuZCAqY3VtX3dlaWdodHMqLgorCisgICBUaGUgKndlaWdodHMqIG9yICpjdW1fd2VpZ2h0cyogY2FuIHVzZSBhbnkgbnVtZXJpYyB0eXBlIHRoYXQgaW50ZXJvcGVyYXRlcworICAgd2l0aCB0aGUgOmNsYXNzOmBmbG9hdGAgdmFsdWVzIHJldHVybmVkIGJ5IDpmdW5jOmByYW5kb21gICh0aGF0IGluY2x1ZGVzCisgICBpbnRlZ2VycywgZmxvYXRzLCBhbmQgZnJhY3Rpb25zIGJ1dCBleGNsdWRlcyBkZWNpbWFscykuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAKIC4uIGZ1bmN0aW9uOjogc2h1ZmZsZSh4WywgcmFuZG9tXSkKIAotICAgU2h1ZmZsZSB0aGUgc2VxdWVuY2UgKngqIGluIHBsYWNlLiBUaGUgb3B0aW9uYWwgYXJndW1lbnQgKnJhbmRvbSogaXMgYQotICAgMC1hcmd1bWVudCBmdW5jdGlvbiByZXR1cm5pbmcgYSByYW5kb20gZmxvYXQgaW4gWzAuMCwgMS4wKTsgYnkgZGVmYXVsdCwgdGhpcyBpcwotICAgdGhlIGZ1bmN0aW9uIDpmdW5jOmAucmFuZG9tYC4KKyAgIFNodWZmbGUgdGhlIHNlcXVlbmNlICp4KiBpbiBwbGFjZS4KIAotICAgTm90ZSB0aGF0IGZvciBldmVuIHJhdGhlciBzbWFsbCBgYGxlbih4KWBgLCB0aGUgdG90YWwgbnVtYmVyIG9mIHBlcm11dGF0aW9ucyBvZgotICAgKngqIGlzIGxhcmdlciB0aGFuIHRoZSBwZXJpb2Qgb2YgbW9zdCByYW5kb20gbnVtYmVyIGdlbmVyYXRvcnM7IHRoaXMgaW1wbGllcwotICAgdGhhdCBtb3N0IHBlcm11dGF0aW9ucyBvZiBhIGxvbmcgc2VxdWVuY2UgY2FuIG5ldmVyIGJlIGdlbmVyYXRlZC4KKyAgIFRoZSBvcHRpb25hbCBhcmd1bWVudCAqcmFuZG9tKiBpcyBhIDAtYXJndW1lbnQgZnVuY3Rpb24gcmV0dXJuaW5nIGEgcmFuZG9tCisgICBmbG9hdCBpbiBbMC4wLCAxLjApOyBieSBkZWZhdWx0LCB0aGlzIGlzIHRoZSBmdW5jdGlvbiA6ZnVuYzpgLnJhbmRvbWAuCisKKyAgIFRvIHNodWZmbGUgYW4gaW1tdXRhYmxlIHNlcXVlbmNlIGFuZCByZXR1cm4gYSBuZXcgc2h1ZmZsZWQgbGlzdCwgdXNlCisgICBgYHNhbXBsZSh4LCBrPWxlbih4KSlgYCBpbnN0ZWFkLgorCisgICBOb3RlIHRoYXQgZXZlbiBmb3Igc21hbGwgYGBsZW4oeClgYCwgdGhlIHRvdGFsIG51bWJlciBvZiBwZXJtdXRhdGlvbnMgb2YgKngqCisgICBjYW4gcXVpY2tseSBncm93IGxhcmdlciB0aGFuIHRoZSBwZXJpb2Qgb2YgbW9zdCByYW5kb20gbnVtYmVyIGdlbmVyYXRvcnMuCisgICBUaGlzIGltcGxpZXMgdGhhdCBtb3N0IHBlcm11dGF0aW9ucyBvZiBhIGxvbmcgc2VxdWVuY2UgY2FuIG5ldmVyIGJlCisgICBnZW5lcmF0ZWQuICBGb3IgZXhhbXBsZSwgYSBzZXF1ZW5jZSBvZiBsZW5ndGggMjA4MCBpcyB0aGUgbGFyZ2VzdCB0aGF0CisgICBjYW4gZml0IHdpdGhpbiB0aGUgcGVyaW9kIG9mIHRoZSBNZXJzZW5uZSBUd2lzdGVyIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yLgogCiAKIC4uIGZ1bmN0aW9uOjogc2FtcGxlKHBvcHVsYXRpb24sIGspCkBAIC0xNDksMTMgKzE5NiwxNiBAQAogICAgTWVtYmVycyBvZiB0aGUgcG9wdWxhdGlvbiBuZWVkIG5vdCBiZSA6dGVybTpgaGFzaGFibGVgIG9yIHVuaXF1ZS4gIElmIHRoZSBwb3B1bGF0aW9uCiAgICBjb250YWlucyByZXBlYXRzLCB0aGVuIGVhY2ggb2NjdXJyZW5jZSBpcyBhIHBvc3NpYmxlIHNlbGVjdGlvbiBpbiB0aGUgc2FtcGxlLgogCi0gICBUbyBjaG9vc2UgYSBzYW1wbGUgZnJvbSBhIHJhbmdlIG9mIGludGVnZXJzLCB1c2UgYW4gOmZ1bmM6YHJhbmdlYCBvYmplY3QgYXMgYW4KKyAgIFRvIGNob29zZSBhIHNhbXBsZSBmcm9tIGEgcmFuZ2Ugb2YgaW50ZWdlcnMsIHVzZSBhIDpmdW5jOmByYW5nZWAgb2JqZWN0IGFzIGFuCiAgICBhcmd1bWVudC4gIFRoaXMgaXMgZXNwZWNpYWxseSBmYXN0IGFuZCBzcGFjZSBlZmZpY2llbnQgZm9yIHNhbXBsaW5nIGZyb20gYSBsYXJnZQotICAgcG9wdWxhdGlvbjogIGBgc2FtcGxlKHJhbmdlKDEwMDAwMDAwKSwgNjApYGAuCisgICBwb3B1bGF0aW9uOiAgYGBzYW1wbGUocmFuZ2UoMTAwMDAwMDApLCBrPTYwKWBgLgogCiAgICBJZiB0aGUgc2FtcGxlIHNpemUgaXMgbGFyZ2VyIHRoYW4gdGhlIHBvcHVsYXRpb24gc2l6ZSwgYSA6ZXhjOmBWYWx1ZUVycm9yYAogICAgaXMgcmFpc2VkLgogCitSZWFsLXZhbHVlZCBkaXN0cmlidXRpb25zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGdlbmVyYXRlIHNwZWNpZmljIHJlYWwtdmFsdWVkIGRpc3RyaWJ1dGlvbnMuIEZ1bmN0aW9uCiBwYXJhbWV0ZXJzIGFyZSBuYW1lZCBhZnRlciB0aGUgY29ycmVzcG9uZGluZyB2YXJpYWJsZXMgaW4gdGhlIGRpc3RyaWJ1dGlvbidzCiBlcXVhdGlvbiwgYXMgdXNlZCBpbiBjb21tb24gbWF0aGVtYXRpY2FsIHByYWN0aWNlOyBtb3N0IG9mIHRoZXNlIGVxdWF0aW9ucyBjYW4KQEAgLTI1MCw3ICszMDAsOCBAQAogICAgcGFyYW1ldGVyLgogCiAKLUFsdGVybmF0aXZlIEdlbmVyYXRvcjoKK0FsdGVybmF0aXZlIEdlbmVyYXRvcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC4uIGNsYXNzOjogU3lzdGVtUmFuZG9tKFtzZWVkXSkKIApAQCAtMjYyLDE5ICszMTMsNiBAQAogICAgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgaWYgY2FsbGVkLgogCiAKLS4uIHNlZWFsc286OgotCi0gICBNLiBNYXRzdW1vdG8gYW5kIFQuIE5pc2hpbXVyYSwgIk1lcnNlbm5lIFR3aXN0ZXI6IEEgNjIzLWRpbWVuc2lvbmFsbHkKLSAgIGVxdWlkaXN0cmlidXRlZCB1bmlmb3JtIHBzZXVkb3JhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIiwgQUNNIFRyYW5zYWN0aW9ucyBvbgotICAgTW9kZWxpbmcgYW5kIENvbXB1dGVyIFNpbXVsYXRpb24gVm9sLiA4LCBOby4gMSwgSmFudWFyeSBwcC4zLS0zMCAxOTk4LgotCi0KLSAgIGBDb21wbGVtZW50YXJ5LU11bHRpcGx5LXdpdGgtQ2FycnkgcmVjaXBlCi0gICA8aHR0cHM6Ly9jb2RlLmFjdGl2ZXN0YXRlLmNvbS9yZWNpcGVzLzU3NjcwNy8+YF8gZm9yIGEgY29tcGF0aWJsZSBhbHRlcm5hdGl2ZQotICAgcmFuZG9tIG51bWJlciBnZW5lcmF0b3Igd2l0aCBhIGxvbmcgcGVyaW9kIGFuZCBjb21wYXJhdGl2ZWx5IHNpbXBsZSB1cGRhdGUKLSAgIG9wZXJhdGlvbnMuCi0KLQogTm90ZXMgb24gUmVwcm9kdWNpYmlsaXR5CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApAQCAtMjk2LDUzICszMzQsMTQ2IEBACiBFeGFtcGxlcyBhbmQgUmVjaXBlcwogLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotQmFzaWMgdXNhZ2U6OgorQmFzaWMgZXhhbXBsZXM6OgogCi0gICA+Pj4gcmFuZG9tLnJhbmRvbSgpICAgICAgICAgICAgICAgICAgICAgICMgUmFuZG9tIGZsb2F0IHgsIDAuMCA8PSB4IDwgMS4wCisgICA+Pj4gcmFuZG9tKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgUmFuZG9tIGZsb2F0OiAgMC4wIDw9IHggPCAxLjAKICAgIDAuMzc0NDQ4ODcxNzU2NDY2NDYKIAotICAgPj4+IHJhbmRvbS51bmlmb3JtKDEsIDEwKSAgICAgICAgICAgICAgICAjIFJhbmRvbSBmbG9hdCB4LCAxLjAgPD0geCA8IDEwLjAKLSAgIDEuMTgwMDE0NjA3MzExNzUyMworICAgPj4+IHVuaWZvcm0oMi41LCAxMC4wKSAgICAgICAgICAgICAgICAgICAjIFJhbmRvbSBmbG9hdDogIDIuNSA8PSB4IDwgMTAuMAorICAgMy4xODAwMTQ2MDczMTE3NTIzCiAKLSAgID4+PiByYW5kb20ucmFuZHJhbmdlKDEwKSAgICAgICAgICAgICAgICAgIyBJbnRlZ2VyIGZyb20gMCB0byA5CisgICA+Pj4gZXhwb3ZhcmlhdGUoMSAvIDUpICAgICAgICAgICAgICAgICAgICMgSW50ZXJ2YWwgYmV0d2VlbiBhcnJpdmFscyBhdmVyYWdpbmcgNSBzZWNvbmRzCisgICA1LjE0ODk1NzU3MTg2NTAzMQorCisgICA+Pj4gcmFuZHJhbmdlKDEwKSAgICAgICAgICAgICAgICAgICAgICAgICMgSW50ZWdlciBmcm9tIDAgdG8gOSBpbmNsdXNpdmUKICAgIDcKIAotICAgPj4+IHJhbmRvbS5yYW5kcmFuZ2UoMCwgMTAxLCAyKSAgICAgICAgICAjIEV2ZW4gaW50ZWdlciBmcm9tIDAgdG8gMTAwCisgICA+Pj4gcmFuZHJhbmdlKDAsIDEwMSwgMikgICAgICAgICAgICAgICAgICMgRXZlbiBpbnRlZ2VyIGZyb20gMCB0byAxMDAgaW5jbHVzaXZlCiAgICAyNgogCi0gICA+Pj4gcmFuZG9tLmNob2ljZSgnYWJjZGVmZ2hpaicpICAgICAgICAgICMgU2luZ2xlIHJhbmRvbSBlbGVtZW50Ci0gICAnYycKKyAgID4+PiBjaG9pY2UoWyd3aW4nLCAnbG9zZScsICdkcmF3J10pICAgICAgIyBTaW5nbGUgcmFuZG9tIGVsZW1lbnQgZnJvbSBhIHNlcXVlbmNlCisgICAnZHJhdycKIAotICAgPj4+IGl0ZW1zID0gWzEsIDIsIDMsIDQsIDUsIDYsIDddCi0gICA+Pj4gcmFuZG9tLnNodWZmbGUoaXRlbXMpCi0gICA+Pj4gaXRlbXMKLSAgIFs3LCAzLCAyLCA1LCA2LCA0LCAxXQorICAgPj4+IGRlY2sgPSAnYWNlIHR3byB0aHJlZSBmb3VyJy5zcGxpdCgpCisgICA+Pj4gc2h1ZmZsZShkZWNrKSAgICAgICAgICAgICAgICAgICAgICAgICMgU2h1ZmZsZSBhIGxpc3QKKyAgID4+PiBkZWNrCisgICBbJ2ZvdXInLCAndHdvJywgJ2FjZScsICd0aHJlZSddCiAKLSAgID4+PiByYW5kb20uc2FtcGxlKFsxLCAyLCAzLCA0LCA1XSwgIDMpICAgIyBUaHJlZSBzYW1wbGVzIHdpdGhvdXQgcmVwbGFjZW1lbnQKLSAgIFs0LCAxLCA1XQorICAgPj4+IHNhbXBsZShbMTAsIDIwLCAzMCwgNDAsIDUwXSwgaz00KSAgICAjIEZvdXIgc2FtcGxlcyB3aXRob3V0IHJlcGxhY2VtZW50CisgICBbNDAsIDEwLCA1MCwgMzBdCiAKLUEgY29tbW9uIHRhc2sgaXMgdG8gbWFrZSBhIDpmdW5jOmByYW5kb20uY2hvaWNlYCB3aXRoIHdlaWdodGVkIHByb2JhYmlsaXRpZXMuCitTaW11bGF0aW9uczo6CiAKLUlmIHRoZSB3ZWlnaHRzIGFyZSBzbWFsbCBpbnRlZ2VyIHJhdGlvcywgYSBzaW1wbGUgdGVjaG5pcXVlIGlzIHRvIGJ1aWxkIGEgc2FtcGxlCi1wb3B1bGF0aW9uIHdpdGggcmVwZWF0czo6CisgICA+Pj4gIyBTaXggcm91bGV0dGUgd2hlZWwgc3BpbnMgKHdlaWdodGVkIHNhbXBsaW5nIHdpdGggcmVwbGFjZW1lbnQpCisgICA+Pj4gY2hvaWNlcyhbJ3JlZCcsICdibGFjaycsICdncmVlbiddLCBbMTgsIDE4LCAyXSwgaz02KQorICAgWydyZWQnLCAnZ3JlZW4nLCAnYmxhY2snLCAnYmxhY2snLCAncmVkJywgJ2JsYWNrJ10KIAotICAgID4+PiB3ZWlnaHRlZF9jaG9pY2VzID0gWygnUmVkJywgMyksICgnQmx1ZScsIDIpLCAoJ1llbGxvdycsIDEpLCAoJ0dyZWVuJywgNCldCi0gICAgPj4+IHBvcHVsYXRpb24gPSBbdmFsIGZvciB2YWwsIGNudCBpbiB3ZWlnaHRlZF9jaG9pY2VzIGZvciBpIGluIHJhbmdlKGNudCldCi0gICAgPj4+IHBvcHVsYXRpb24KLSAgICBbJ1JlZCcsICdSZWQnLCAnUmVkJywgJ0JsdWUnLCAnQmx1ZScsICdZZWxsb3cnLCAnR3JlZW4nLCAnR3JlZW4nLCAnR3JlZW4nLCAnR3JlZW4nXQorICAgPj4+ICMgRGVhbCAyMCBjYXJkcyB3aXRob3V0IHJlcGxhY2VtZW50IGZyb20gYSBkZWNrIG9mIDUyIHBsYXlpbmcgY2FyZHMKKyAgID4+PiAjIGFuZCBkZXRlcm1pbmUgdGhlIHByb3BvcnRpb24gb2YgY2FyZHMgd2l0aCBhIHRlbi12YWx1ZQorICAgPj4+ICMgKGEgdGVuLCBqYWNrLCBxdWVlbiwgb3Iga2luZykuCisgICA+Pj4gZGVjayA9IGNvbGxlY3Rpb25zLkNvdW50ZXIodGVucz0xNiwgbG93X2NhcmRzPTM2KQorICAgPj4+IHNlZW4gPSBzYW1wbGUobGlzdChkZWNrLmVsZW1lbnRzKCkpLCBrPTIwKQorICAgPj4+IHNlZW4uY291bnQoJ3RlbnMnKSAvIDIwCisgICAwLjE1CiAKLSAgICA+Pj4gcmFuZG9tLmNob2ljZShwb3B1bGF0aW9uKQotICAgICdHcmVlbicKKyAgID4+PiAjIEVzdGltYXRlIHRoZSBwcm9iYWJpbGl0eSBvZiBnZXR0aW5nIDUgb3IgbW9yZSBoZWFkcyBmcm9tIDcgc3BpbnMKKyAgID4+PiAjIG9mIGEgYmlhc2VkIGNvaW4gdGhhdCBzZXR0bGVzIG9uIGhlYWRzIDYwJSBvZiB0aGUgdGltZS4KKyAgID4+PiB0cmlhbCA9IGxhbWJkYTogY2hvaWNlcygnSFQnLCBjdW1fd2VpZ2h0cz0oMC42MCwgMS4wMCksIGs9NykuY291bnQoJ0gnKSA+PSA1CisgICA+Pj4gc3VtKHRyaWFsKCkgZm9yIGkgaW4gcmFuZ2UoMTAwMDApKSAvIDEwMDAwCisgICAwLjQxNjkKIAotQSBtb3JlIGdlbmVyYWwgYXBwcm9hY2ggaXMgdG8gYXJyYW5nZSB0aGUgd2VpZ2h0cyBpbiBhIGN1bXVsYXRpdmUgZGlzdHJpYnV0aW9uCi13aXRoIDpmdW5jOmBpdGVydG9vbHMuYWNjdW11bGF0ZWAsIGFuZCB0aGVuIGxvY2F0ZSB0aGUgcmFuZG9tIHZhbHVlIHdpdGgKLTpmdW5jOmBiaXNlY3QuYmlzZWN0YDo6CisgICA+Pj4gIyBQcm9iYWJpbGl0eSBvZiB0aGUgbWVkaWFuIG9mIDUgc2FtcGxlcyBiZWluZyBpbiBtaWRkbGUgdHdvIHF1YXJ0aWxlcworICAgPj4+IHRyaWFsID0gbGFtYmRhIDogMjUwMCA8PSBzb3J0ZWQoY2hvaWNlcyhyYW5nZSgxMDAwMCksIGs9NSkpWzJdICA8IDc1MDAKKyAgID4+PiBzdW0odHJpYWwoKSBmb3IgaSBpbiByYW5nZSgxMDAwMCkpIC8gMTAwMDAKKyAgIDAuNzk1OAogCi0gICAgPj4+IGNob2ljZXMsIHdlaWdodHMgPSB6aXAoKndlaWdodGVkX2Nob2ljZXMpCi0gICAgPj4+IGN1bWRpc3QgPSBsaXN0KGl0ZXJ0b29scy5hY2N1bXVsYXRlKHdlaWdodHMpKQotICAgID4+PiBjdW1kaXN0ICAgICAgICAgICAgIyBbMywgMysyLCAzKzIrMSwgMysyKzErNF0KLSAgICBbMywgNSwgNiwgMTBdCitFeGFtcGxlIG9mIGBzdGF0aXN0aWNhbCBib290c3RyYXBwaW5nCis8aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQm9vdHN0cmFwcGluZ18oc3RhdGlzdGljcyk+YF8gdXNpbmcgcmVzYW1wbGluZword2l0aCByZXBsYWNlbWVudCB0byBlc3RpbWF0ZSBhIGNvbmZpZGVuY2UgaW50ZXJ2YWwgZm9yIHRoZSBtZWFuIG9mIGEgc2FtcGxlIG9mCitzaXplIGZpdmU6OgogCi0gICAgPj4+IHggPSByYW5kb20ucmFuZG9tKCkgKiBjdW1kaXN0Wy0xXQotICAgID4+PiBjaG9pY2VzW2Jpc2VjdC5iaXNlY3QoY3VtZGlzdCwgeCldCi0gICAgJ0JsdWUnCisgICAjIGh0dHA6Ly9zdGF0aXN0aWNzLmFib3V0LmNvbS9vZC9BcHBsaWNhdGlvbnMvYS9FeGFtcGxlLU9mLUJvb3RzdHJhcHBpbmcuaHRtCisgICBmcm9tIHN0YXRpc3RpY3MgaW1wb3J0IG1lYW4KKyAgIGZyb20gcmFuZG9tIGltcG9ydCBjaG9pY2VzCisKKyAgIGRhdGEgPSAxLCAyLCA0LCA0LCAxMAorICAgbWVhbnMgPSBzb3J0ZWQobWVhbihjaG9pY2VzKGRhdGEsIGs9NSkpIGZvciBpIGluIHJhbmdlKDIwKSkKKyAgIHByaW50KGYnVGhlIHNhbXBsZSBtZWFuIG9mIHttZWFuKGRhdGEpOi4xZn0gaGFzIGEgOTAlIGNvbmZpZGVuY2UgJworICAgICAgICAgZidpbnRlcnZhbCBmcm9tIHttZWFuc1sxXTouMWZ9IHRvIHttZWFuc1stMl06LjFmfScpCisKK0V4YW1wbGUgb2YgYSBgcmVzYW1wbGluZyBwZXJtdXRhdGlvbiB0ZXN0Cis8aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUmVzYW1wbGluZ18oc3RhdGlzdGljcykjUGVybXV0YXRpb25fdGVzdHM+YF8KK3RvIGRldGVybWluZSB0aGUgc3RhdGlzdGljYWwgc2lnbmlmaWNhbmNlIG9yIGBwLXZhbHVlCis8aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUC12YWx1ZT5gXyBvZiBhbiBvYnNlcnZlZCBkaWZmZXJlbmNlCitiZXR3ZWVuIHRoZSBlZmZlY3RzIG9mIGEgZHJ1ZyB2ZXJzdXMgYSBwbGFjZWJvOjoKKworICAgICMgRXhhbXBsZSBmcm9tICJTdGF0aXN0aWNzIGlzIEVhc3kiIGJ5IERlbm5pcyBTaGFzaGEgYW5kIE1hbmRhIFdpbHNvbgorICAgIGZyb20gc3RhdGlzdGljcyBpbXBvcnQgbWVhbgorICAgIGZyb20gcmFuZG9tIGltcG9ydCBzaHVmZmxlCisKKyAgICBkcnVnID0gWzU0LCA3MywgNTMsIDcwLCA3MywgNjgsIDUyLCA2NSwgNjVdCisgICAgcGxhY2VibyA9IFs1NCwgNTEsIDU4LCA0NCwgNTUsIDUyLCA0MiwgNDcsIDU4LCA0Nl0KKyAgICBvYnNlcnZlZF9kaWZmID0gbWVhbihkcnVnKSAtIG1lYW4ocGxhY2VibykKKworICAgIG4gPSAxMDAwMAorICAgIGNvdW50ID0gMAorICAgIGNvbWJpbmVkID0gZHJ1ZyArIHBsYWNlYm8KKyAgICBmb3IgaSBpbiByYW5nZShuKToKKyAgICAgICAgc2h1ZmZsZShjb21iaW5lZCkKKyAgICAgICAgbmV3X2RpZmYgPSBtZWFuKGNvbWJpbmVkWzpsZW4oZHJ1ZyldKSAtIG1lYW4oY29tYmluZWRbbGVuKGRydWcpOl0pCisgICAgICAgIGNvdW50ICs9IChuZXdfZGlmZiA+PSBvYnNlcnZlZF9kaWZmKQorCisgICAgcHJpbnQoZid7bn0gbGFiZWwgcmVzaHVmZmxpbmdzIHByb2R1Y2VkIG9ubHkge2NvdW50fSBpbnN0YW5jZXMgd2l0aCBhIGRpZmZlcmVuY2UnKQorICAgIHByaW50KGYnYXQgbGVhc3QgYXMgZXh0cmVtZSBhcyB0aGUgb2JzZXJ2ZWQgZGlmZmVyZW5jZSBvZiB7b2JzZXJ2ZWRfZGlmZjouMWZ9LicpCisgICAgcHJpbnQoZidUaGUgb25lLXNpZGVkIHAtdmFsdWUgb2Yge2NvdW50IC8gbjouNGZ9IGxlYWRzIHVzIHRvIHJlamVjdCB0aGUgbnVsbCcpCisgICAgcHJpbnQoZidoeXBvdGhlc2lzIHRoYXQgdGhlcmUgaXMgbm8gZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBkcnVnIGFuZCB0aGUgcGxhY2Viby4nKQorCitTaW11bGF0aW9uIG9mIGFycml2YWwgdGltZXMgYW5kIHNlcnZpY2UgZGVsaXZlcmllcyBpbiBhIHNpbmdsZSBzZXJ2ZXIgcXVldWU6OgorCisgICAgZnJvbSByYW5kb20gaW1wb3J0IGV4cG92YXJpYXRlLCBnYXVzcworICAgIGZyb20gc3RhdGlzdGljcyBpbXBvcnQgbWVhbiwgbWVkaWFuLCBzdGRldgorCisgICAgYXZlcmFnZV9hcnJpdmFsX2ludGVydmFsID0gNS42CisgICAgYXZlcmFnZV9zZXJ2aWNlX3RpbWUgPSA1LjAKKyAgICBzdGRldl9zZXJ2aWNlX3RpbWUgPSAwLjUKKworICAgIG51bV93YWl0aW5nID0gMAorICAgIGFycml2YWxzID0gW10KKyAgICBzdGFydHMgPSBbXQorICAgIGFycml2YWwgPSBzZXJ2aWNlX2VuZCA9IDAuMAorICAgIGZvciBpIGluIHJhbmdlKDIwMDAwKToKKyAgICAgICAgaWYgYXJyaXZhbCA8PSBzZXJ2aWNlX2VuZDoKKyAgICAgICAgICAgIG51bV93YWl0aW5nICs9IDEKKyAgICAgICAgICAgIGFycml2YWwgKz0gZXhwb3ZhcmlhdGUoMS4wIC8gYXZlcmFnZV9hcnJpdmFsX2ludGVydmFsKQorICAgICAgICAgICAgYXJyaXZhbHMuYXBwZW5kKGFycml2YWwpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBudW1fd2FpdGluZyAtPSAxCisgICAgICAgICAgICBzZXJ2aWNlX3N0YXJ0ID0gc2VydmljZV9lbmQgaWYgbnVtX3dhaXRpbmcgZWxzZSBhcnJpdmFsCisgICAgICAgICAgICBzZXJ2aWNlX3RpbWUgPSBnYXVzcyhhdmVyYWdlX3NlcnZpY2VfdGltZSwgc3RkZXZfc2VydmljZV90aW1lKQorICAgICAgICAgICAgc2VydmljZV9lbmQgPSBzZXJ2aWNlX3N0YXJ0ICsgc2VydmljZV90aW1lCisgICAgICAgICAgICBzdGFydHMuYXBwZW5kKHNlcnZpY2Vfc3RhcnQpCisKKyAgICB3YWl0cyA9IFtzdGFydCAtIGFycml2YWwgZm9yIGFycml2YWwsIHN0YXJ0IGluIHppcChhcnJpdmFscywgc3RhcnRzKV0KKyAgICBwcmludChmJ01lYW4gd2FpdDoge21lYW4od2FpdHMpOi4xZn0uICBTdGRldiB3YWl0OiB7c3RkZXYod2FpdHMpOi4xZn0uJykKKyAgICBwcmludChmJ01lZGlhbiB3YWl0OiB7bWVkaWFuKHdhaXRzKTouMWZ9LiAgTWF4IHdhaXQ6IHttYXgod2FpdHMpOi4xZn0uJykKKworLi4gc2VlYWxzbzo6CisKKyAgIGBTdGF0aXN0aWNzIGZvciBIYWNrZXJzIDxodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PUlxOUR6TjZtdllBPmBfCisgICBhIHZpZGVvIHR1dG9yaWFsIGJ5CisgICBgSmFrZSBWYW5kZXJwbGFzIDxodHRwczovL3VzLnB5Y29uLm9yZy8yMDE2L3NwZWFrZXIvcHJvZmlsZS8yOTUvPmBfCisgICBvbiBzdGF0aXN0aWNhbCBhbmFseXNpcyB1c2luZyBqdXN0IGEgZmV3IGZ1bmRhbWVudGFsIGNvbmNlcHRzCisgICBpbmNsdWRpbmcgc2ltdWxhdGlvbiwgc2FtcGxpbmcsIHNodWZmbGluZywgYW5kIGNyb3NzLXZhbGlkYXRpb24uCisKKyAgIGBFY29ub21pY3MgU2ltdWxhdGlvbgorICAgPGh0dHA6Ly9uYnZpZXdlci5qdXB5dGVyLm9yZy91cmwvbm9ydmlnLmNvbS9pcHl0aG9uL0Vjb25vbWljcy5pcHluYj5gXworICAgYSBzaW11bGF0aW9uIG9mIGEgbWFya2V0cGxhY2UgYnkKKyAgIGBQZXRlciBOb3J2aWcgPGh0dHA6Ly9ub3J2aWcuY29tL2Jpby5odG1sPmBfIHRoYXQgc2hvd3MgZWZmZWN0aXZlCisgICB1c2Ugb2YgbWFueSBvZiB0aGUgdG9vbHMgYW5kIGRpc3RyaWJ1dGlvbnMgcHJvdmlkZWQgYnkgdGhpcyBtb2R1bGUKKyAgIChnYXVzcywgdW5pZm9ybSwgc2FtcGxlLCBiZXRhdmFyaWF0ZSwgY2hvaWNlLCB0cmlhbmd1bGFyLCBhbmQgcmFuZHJhbmdlKS4KKworICAgYEEgQ29uY3JldGUgSW50cm9kdWN0aW9uIHRvIFByb2JhYmlsaXR5ICh1c2luZyBQeXRob24pCisgICA8aHR0cDovL25idmlld2VyLmp1cHl0ZXIub3JnL3VybC9ub3J2aWcuY29tL2lweXRob24vUHJvYmFiaWxpdHkuaXB5bmI+YF8KKyAgIGEgdHV0b3JpYWwgYnkgYFBldGVyIE5vcnZpZyA8aHR0cDovL25vcnZpZy5jb20vYmlvLmh0bWw+YF8gY292ZXJpbmcKKyAgIHRoZSBiYXNpY3Mgb2YgcHJvYmFiaWxpdHkgdGhlb3J5LCBob3cgdG8gd3JpdGUgc2ltdWxhdGlvbnMsIGFuZAorICAgaG93IHRvIHBlcmZvcm0gZGF0YSBhbmFseXNpcyB1c2luZyBQeXRob24uCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9yZS5yc3QgYi9Eb2MvbGlicmFyeS9yZS5yc3QKaW5kZXggMWNhNjIxZS4uN2VmNGNiZSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcmUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3JlLnJzdApAQCAtMjMwLDEyICsyMzAsOCBAQAogICAgZmxhZ3MgYXJlIGRlc2NyaWJlZCBpbiA6cmVmOmBjb250ZW50cy1vZi1tb2R1bGUtcmVgLikgVGhpcwogICAgaXMgdXNlZnVsIGlmIHlvdSB3aXNoIHRvIGluY2x1ZGUgdGhlIGZsYWdzIGFzIHBhcnQgb2YgdGhlIHJlZ3VsYXIKICAgIGV4cHJlc3Npb24sIGluc3RlYWQgb2YgcGFzc2luZyBhICpmbGFnKiBhcmd1bWVudCB0byB0aGUKLSAgIDpmdW5jOmByZS5jb21waWxlYCBmdW5jdGlvbi4KLQotICAgTm90ZSB0aGF0IHRoZSBgYCg/eClgYCBmbGFnIGNoYW5nZXMgaG93IHRoZSBleHByZXNzaW9uIGlzIHBhcnNlZC4gSXQgc2hvdWxkIGJlCi0gICB1c2VkIGZpcnN0IGluIHRoZSBleHByZXNzaW9uIHN0cmluZywgb3IgYWZ0ZXIgb25lIG9yIG1vcmUgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzLgotICAgSWYgdGhlcmUgYXJlIG5vbi13aGl0ZXNwYWNlIGNoYXJhY3RlcnMgYmVmb3JlIHRoZSBmbGFnLCB0aGUgcmVzdWx0cyBhcmUKLSAgIHVuZGVmaW5lZC4KKyAgIDpmdW5jOmByZS5jb21waWxlYCBmdW5jdGlvbi4gIEZsYWdzIHNob3VsZCBiZSB1c2VkIGZpcnN0IGluIHRoZQorICAgZXhwcmVzc2lvbiBzdHJpbmcuCiAKIGBgKD86Li4uKWBgCiAgICBBIG5vbi1jYXB0dXJpbmcgdmVyc2lvbiBvZiByZWd1bGFyIHBhcmVudGhlc2VzLiAgTWF0Y2hlcyB3aGF0ZXZlciByZWd1bGFyCkBAIC0yNDMsNiArMjM5LDE2IEBACiAgICAqY2Fubm90KiBiZSByZXRyaWV2ZWQgYWZ0ZXIgcGVyZm9ybWluZyBhIG1hdGNoIG9yIHJlZmVyZW5jZWQgbGF0ZXIgaW4gdGhlCiAgICBwYXR0ZXJuLgogCitgYCg/aW1zeC1pbXN4Oi4uLilgYAorICAgKFplcm8gb3IgbW9yZSBsZXR0ZXJzIGZyb20gdGhlIHNldCBgYCdpJ2BgLCBgYCdtJ2BgLCBgYCdzJ2BgLCBgYCd4J2BgLAorICAgb3B0aW9uYWxseSBmb2xsb3dlZCBieSBgYCctJ2BgIGZvbGxvd2VkIGJ5IG9uZSBvciBtb3JlIGxldHRlcnMgZnJvbSB0aGUKKyAgIHNhbWUgc2V0LikgIFRoZSBsZXR0ZXJzIHNldCBvciByZW1vdmVzIHRoZSBjb3JyZXNwb25kaW5nIGZsYWdzOgorICAgOmNvbnN0OmByZS5JYCAoaWdub3JlIGNhc2UpLCA6Y29uc3Q6YHJlLk1gIChtdWx0aS1saW5lKSwgOmNvbnN0OmByZS5TYAorICAgKGRvdCBtYXRjaGVzIGFsbCksIGFuZCA6Y29uc3Q6YHJlLlhgICh2ZXJib3NlKSwgZm9yIHRoZSBwYXJ0IG9mIHRoZQorICAgZXhwcmVzc2lvbi4gIChUaGUgZmxhZ3MgYXJlIGRlc2NyaWJlZCBpbiA6cmVmOmBjb250ZW50cy1vZi1tb2R1bGUtcmVgLikKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIGBgKD9QPG5hbWU+Li4uKWBgCiAgICBTaW1pbGFyIHRvIHJlZ3VsYXIgcGFyZW50aGVzZXMsIGJ1dCB0aGUgc3Vic3RyaW5nIG1hdGNoZWQgYnkgdGhlIGdyb3VwIGlzCiAgICBhY2Nlc3NpYmxlIHZpYSB0aGUgc3ltYm9saWMgZ3JvdXAgbmFtZSAqbmFtZSouICBHcm91cCBuYW1lcyBtdXN0IGJlIHZhbGlkCkBAIC0zMjcsOCArMzMzLDkgQEAKIAogCiBUaGUgc3BlY2lhbCBzZXF1ZW5jZXMgY29uc2lzdCBvZiBgYCdcJ2BgIGFuZCBhIGNoYXJhY3RlciBmcm9tIHRoZSBsaXN0IGJlbG93LgotSWYgdGhlIG9yZGluYXJ5IGNoYXJhY3RlciBpcyBub3Qgb24gdGhlIGxpc3QsIHRoZW4gdGhlIHJlc3VsdGluZyBSRSB3aWxsIG1hdGNoCi10aGUgc2Vjb25kIGNoYXJhY3Rlci4gIEZvciBleGFtcGxlLCBgYFwkYGAgbWF0Y2hlcyB0aGUgY2hhcmFjdGVyIGBgJyQnYGAuCitJZiB0aGUgb3JkaW5hcnkgY2hhcmFjdGVyIGlzIG5vdCBhbiBBU0NJSSBkaWdpdCBvciBhbiBBU0NJSSBsZXR0ZXIsIHRoZW4gdGhlCityZXN1bHRpbmcgUkUgd2lsbCBtYXRjaCB0aGUgc2Vjb25kIGNoYXJhY3Rlci4gIEZvciBleGFtcGxlLCBgYFwkYGAgbWF0Y2hlcyB0aGUKK2NoYXJhY3RlciBgYCckJ2BgLgogCiBgYFxudW1iZXJgYAogICAgTWF0Y2hlcyB0aGUgY29udGVudHMgb2YgdGhlIGdyb3VwIG9mIHRoZSBzYW1lIG51bWJlci4gIEdyb3VwcyBhcmUgbnVtYmVyZWQKQEAgLTQ0OCw5ICs0NTUsOCBAQAogLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKICAgIFRoZSBgYCdcdSdgYCBhbmQgYGAnXFUnYGAgZXNjYXBlIHNlcXVlbmNlcyBoYXZlIGJlZW4gYWRkZWQuCiAKLS4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuNSAzLjYKLSAgIFVua25vd24gZXNjYXBlcyBjb25zaXN0aW5nIG9mIGBgJ1wnYGAgYW5kIEFTQ0lJIGxldHRlciBub3cgcmFpc2UgYQotICAgZGVwcmVjYXRpb24gd2FybmluZyBhbmQgd2lsbCBiZSBmb3JiaWRkZW4gaW4gUHl0aG9uIDMuNi4KKy4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICBVbmtub3duIGVzY2FwZXMgY29uc2lzdGluZyBvZiBgYCdcJ2BgIGFuZCBhbiBBU0NJSSBsZXR0ZXIgbm93IGFyZSBlcnJvcnMuCiAKIAogLi4gc2VlYWxzbzo6CkBAIC00NzIsNiArNDc4LDkgQEAKIHJlZ3VsYXIgZXhwcmVzc2lvbnMuICBNb3N0IG5vbi10cml2aWFsIGFwcGxpY2F0aW9ucyBhbHdheXMgdXNlIHRoZSBjb21waWxlZAogZm9ybS4KIAorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgIEZsYWcgY29uc3RhbnRzIGFyZSBub3cgaW5zdGFuY2VzIG9mIDpjbGFzczpgUmVnZXhGbGFnYCwgd2hpY2ggaXMgYSBzdWJjbGFzcyBvZgorICAgOmNsYXNzOmBlbnVtLkludEZsYWdgLgogCiAuLiBmdW5jdGlvbjo6IGNvbXBpbGUocGF0dGVybiwgZmxhZ3M9MCkKIApAQCAtNTM4LDExICs1NDcsMTEgQEAKICAgIGN1cnJlbnQgbG9jYWxlLiBUaGUgdXNlIG9mIHRoaXMgZmxhZyBpcyBkaXNjb3VyYWdlZCBhcyB0aGUgbG9jYWxlIG1lY2hhbmlzbQogICAgaXMgdmVyeSB1bnJlbGlhYmxlLCBhbmQgaXQgb25seSBoYW5kbGVzIG9uZSAiY3VsdHVyZSIgYXQgYSB0aW1lIGFueXdheTsKICAgIHlvdSBzaG91bGQgdXNlIFVuaWNvZGUgbWF0Y2hpbmcgaW5zdGVhZCwgd2hpY2ggaXMgdGhlIGRlZmF1bHQgaW4gUHl0aG9uIDMKLSAgIGZvciBVbmljb2RlIChzdHIpIHBhdHRlcm5zLiBUaGlzIGZsYWcgbWFrZXMgc2Vuc2Ugb25seSB3aXRoIGJ5dGVzIHBhdHRlcm5zLgorICAgZm9yIFVuaWNvZGUgKHN0cikgcGF0dGVybnMuIFRoaXMgZmxhZyBjYW4gYmUgdXNlZCBvbmx5IHdpdGggYnl0ZXMgcGF0dGVybnMuCiAKLSAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuNSAzLjYKLSAgICAgIERlcHJlY2F0ZWQgdGhlIHVzZSBvZiAgOmNvbnN0OmByZS5MT0NBTEVgIHdpdGggc3RyaW5nIHBhdHRlcm5zIG9yCi0gICAgICA6Y29uc3Q6YHJlLkFTQ0lJYC4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICA6Y29uc3Q6YHJlLkxPQ0FMRWAgY2FuIGJlIHVzZWQgb25seSB3aXRoIGJ5dGVzIHBhdHRlcm5zIGFuZCBpcworICAgICAgbm90IGNvbXBhdGlibGUgd2l0aCA6Y29uc3Q6YHJlLkFTQ0lJYC4KIAogCiAuLiBkYXRhOjogTQpAQCAtNzQ4LDkgKzc1NywxMyBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKICAgICAgIFVubWF0Y2hlZCBncm91cHMgYXJlIHJlcGxhY2VkIHdpdGggYW4gZW1wdHkgc3RyaW5nLgogCi0gICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjUgMy42Ci0gICAgICBVbmtub3duIGVzY2FwZXMgY29uc2lzdCBvZiBgYCdcJ2BgIGFuZCBBU0NJSSBsZXR0ZXIgbm93IHJhaXNlIGEKLSAgICAgIGRlcHJlY2F0aW9uIHdhcm5pbmcgYW5kIHdpbGwgYmUgZm9yYmlkZGVuIGluIFB5dGhvbiAzLjYuCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgVW5rbm93biBlc2NhcGVzIGluICpwYXR0ZXJuKiBjb25zaXN0aW5nIG9mIGBgJ1wnYGAgYW5kIGFuIEFTQ0lJIGxldHRlcgorICAgICAgbm93IGFyZSBlcnJvcnMuCisKKyAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuNSAzLjcKKyAgICAgIFVua25vd24gZXNjYXBlcyBpbiAqcmVwbCogY29uc2lzdGluZyBvZiBgYCdcJ2BgIGFuZCBhbiBBU0NJSSBsZXR0ZXIgbm93IHJhaXNlCisgICAgICBhIGRlcHJlY2F0aW9uIHdhcm5pbmcgYW5kIHdpbGwgYmUgZm9yYmlkZGVuIGluIFB5dGhvbiAzLjcuCiAKIAogLi4gZnVuY3Rpb246OiBzdWJuKHBhdHRlcm4sIHJlcGwsIHN0cmluZywgY291bnQ9MCwgZmxhZ3M9MCkKQEAgLTEwMTYsNiArMTAyOSwyMiBAQAogICAgICAgJ2MzJwogCiAKKy4uIG1ldGhvZDo6IG1hdGNoLl9fZ2V0aXRlbV9fKGcpCisKKyAgIFRoaXMgaXMgaWRlbnRpY2FsIHRvIGBgbS5ncm91cChnKWBgLiAgVGhpcyBhbGxvd3MgZWFzaWVyIGFjY2VzcyB0bworICAgYW4gaW5kaXZpZHVhbCBncm91cCBmcm9tIGEgbWF0Y2g6CisKKyAgICAgID4+PiBtID0gcmUubWF0Y2gociIoXHcrKSAoXHcrKSIsICJJc2FhYyBOZXd0b24sIHBoeXNpY2lzdCIpCisgICAgICA+Pj4gbVswXSAgICAgICAjIFRoZSBlbnRpcmUgbWF0Y2gKKyAgICAgICdJc2FhYyBOZXd0b24nCisgICAgICA+Pj4gbVsxXSAgICAgICAjIFRoZSBmaXJzdCBwYXJlbnRoZXNpemVkIHN1Ymdyb3VwLgorICAgICAgJ0lzYWFjJworICAgICAgPj4+IG1bMl0gICAgICAgIyBUaGUgc2Vjb25kIHBhcmVudGhlc2l6ZWQgc3ViZ3JvdXAuCisgICAgICAnTmV3dG9uJworCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCiAuLiBtZXRob2Q6OiBtYXRjaC5ncm91cHMoZGVmYXVsdD1Ob25lKQogCiAgICBSZXR1cm4gYSB0dXBsZSBjb250YWluaW5nIGFsbCB0aGUgc3ViZ3JvdXBzIG9mIHRoZSBtYXRjaCwgZnJvbSAxIHVwIHRvIGhvd2V2ZXIKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3JlYWRsaW5lLnJzdCBiL0RvYy9saWJyYXJ5L3JlYWRsaW5lLnJzdAppbmRleCA0ZDNjMDk5Li41NGM1NGI0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9yZWFkbGluZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcmVhZGxpbmUucnN0CkBAIC0xNjcsNiArMTY3LDIwIEBACiAgICBUaGlzIGNhbGxzIDpjOmZ1bmM6YGFkZF9oaXN0b3J5YCBpbiB0aGUgdW5kZXJseWluZyBsaWJyYXJ5LgogCiAKKy4uIGZ1bmN0aW9uOjogc2V0X2F1dG9faGlzdG9yeShlbmFibGVkKQorCisgICBFbmFibGUgb3IgZGlzYWJsZSBhdXRvbWF0aWMgY2FsbHMgdG8gOmM6ZnVuYzpgYWRkX2hpc3RvcnlgIHdoZW4gcmVhZGluZworICAgaW5wdXQgdmlhIHJlYWRsaW5lLiAgVGhlICplbmFibGVkKiBhcmd1bWVudCBzaG91bGQgYmUgYSBCb29sZWFuIHZhbHVlCisgICB0aGF0IHdoZW4gdHJ1ZSwgZW5hYmxlcyBhdXRvIGhpc3RvcnksIGFuZCB0aGF0IHdoZW4gZmFsc2UsIGRpc2FibGVzCisgICBhdXRvIGhpc3RvcnkuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisgICAuLiBpbXBsLWRldGFpbDo6CisgICAgICBBdXRvIGhpc3RvcnkgaXMgZW5hYmxlZCBieSBkZWZhdWx0LCBhbmQgY2hhbmdlcyB0byB0aGlzIGRvIG5vdCBwZXJzaXN0CisgICAgICBhY3Jvc3MgbXVsdGlwbGUgc2Vzc2lvbnMuCisKKwogU3RhcnR1cCBob29rcwogLS0tLS0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zZWNyZXRzLnJzdCBiL0RvYy9saWJyYXJ5L3NlY3JldHMucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliZjg0OGYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvbGlicmFyeS9zZWNyZXRzLnJzdApAQCAtMCwwICsxLDE5OCBAQAorOm1vZDpgc2VjcmV0c2AgLS0tIEdlbmVyYXRlIHNlY3VyZSByYW5kb20gbnVtYmVycyBmb3IgbWFuYWdpbmcgc2VjcmV0cworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisuLiBtb2R1bGU6OiBzZWNyZXRzCisgICA6c3lub3BzaXM6IEdlbmVyYXRlIHNlY3VyZSByYW5kb20gbnVtYmVycyBmb3IgbWFuYWdpbmcgc2VjcmV0cy4KKworLi4gbW9kdWxlYXV0aG9yOjogU3RldmVuIEQnQXByYW5vIDxzdGV2ZStweXRob25AcGVhcndvb2QuaW5mbz4KKy4uIHNlY3Rpb25hdXRob3I6OiBTdGV2ZW4gRCdBcHJhbm8gPHN0ZXZlK3B5dGhvbkBwZWFyd29vZC5pbmZvPgorLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKy4uIHRlc3RzZXR1cDo6CisKKyAgIGZyb20gc2VjcmV0cyBpbXBvcnQgKgorICAgX19uYW1lX18gPSAnPGRvY3Rlc3Q+JworCisqKlNvdXJjZSBjb2RlOioqIDpzb3VyY2U6YExpYi9zZWNyZXRzLnB5YAorCistLS0tLS0tLS0tLS0tCisKK1RoZSA6bW9kOmBzZWNyZXRzYCBtb2R1bGUgaXMgdXNlZCBmb3IgZ2VuZXJhdGluZyBjcnlwdG9ncmFwaGljYWxseSBzdHJvbmcKK3JhbmRvbSBudW1iZXJzIHN1aXRhYmxlIGZvciBtYW5hZ2luZyBkYXRhIHN1Y2ggYXMgcGFzc3dvcmRzLCBhY2NvdW50CithdXRoZW50aWNhdGlvbiwgc2VjdXJpdHkgdG9rZW5zLCBhbmQgcmVsYXRlZCBzZWNyZXRzLgorCitJbiBwYXJ0aWN1bGFybHksIDptb2Q6YHNlY3JldHNgIHNob3VsZCBiZSB1c2VkIGluIHByZWZlcmVuY2UgdG8gdGhlCitkZWZhdWx0IHBzZXVkby1yYW5kb20gbnVtYmVyIGdlbmVyYXRvciBpbiB0aGUgOm1vZDpgcmFuZG9tYCBtb2R1bGUsIHdoaWNoCitpcyBkZXNpZ25lZCBmb3IgbW9kZWxsaW5nIGFuZCBzaW11bGF0aW9uLCBub3Qgc2VjdXJpdHkgb3IgY3J5cHRvZ3JhcGh5LgorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgNTA2YAorCisKK1JhbmRvbSBudW1iZXJzCistLS0tLS0tLS0tLS0tLQorCitUaGUgOm1vZDpgc2VjcmV0c2AgbW9kdWxlIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgbW9zdCBzZWN1cmUgc291cmNlIG9mCityYW5kb21uZXNzIHRoYXQgeW91ciBvcGVyYXRpbmcgc3lzdGVtIHByb3ZpZGVzLgorCisuLiBjbGFzczo6IFN5c3RlbVJhbmRvbQorCisgICBBIGNsYXNzIGZvciBnZW5lcmF0aW5nIHJhbmRvbSBudW1iZXJzIHVzaW5nIHRoZSBoaWdoZXN0LXF1YWxpdHkKKyAgIHNvdXJjZXMgcHJvdmlkZWQgYnkgdGhlIG9wZXJhdGluZyBzeXN0ZW0uICBTZWUKKyAgIDpjbGFzczpgcmFuZG9tLlN5c3RlbVJhbmRvbWAgZm9yIGFkZGl0aW9uYWwgZGV0YWlscy4KKworLi4gZnVuY3Rpb246OiBjaG9pY2Uoc2VxdWVuY2UpCisKKyAgIFJldHVybiBhIHJhbmRvbWx5LWNob3NlbiBlbGVtZW50IGZyb20gYSBub24tZW1wdHkgc2VxdWVuY2UuCisKKy4uIGZ1bmN0aW9uOjogcmFuZGJlbG93KG4pCisKKyAgIFJldHVybiBhIHJhbmRvbSBpbnQgaW4gdGhlIHJhbmdlIFswLCAqbiopLgorCisuLiBmdW5jdGlvbjo6IHJhbmRiaXRzKGspCisKKyAgIFJldHVybiBhbiBpbnQgd2l0aCAqayogcmFuZG9tIGJpdHMuCisKKworR2VuZXJhdGluZyB0b2tlbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSA6bW9kOmBzZWNyZXRzYCBtb2R1bGUgcHJvdmlkZXMgZnVuY3Rpb25zIGZvciBnZW5lcmF0aW5nIHNlY3VyZQordG9rZW5zLCBzdWl0YWJsZSBmb3IgYXBwbGljYXRpb25zIHN1Y2ggYXMgcGFzc3dvcmQgcmVzZXRzLAoraGFyZC10by1ndWVzcyBVUkxzLCBhbmQgc2ltaWxhci4KKworLi4gZnVuY3Rpb246OiB0b2tlbl9ieXRlcyhbbmJ5dGVzPU5vbmVdKQorCisgICBSZXR1cm4gYSByYW5kb20gYnl0ZSBzdHJpbmcgY29udGFpbmluZyAqbmJ5dGVzKiBudW1iZXIgb2YgYnl0ZXMuCisgICBJZiAqbmJ5dGVzKiBpcyBgYE5vbmVgYCBvciBub3Qgc3VwcGxpZWQsIGEgcmVhc29uYWJsZSBkZWZhdWx0IGlzCisgICB1c2VkLgorCisgICAuLiBkb2N0ZXN0OjoKKworICAgICAgPj4+IHRva2VuX2J5dGVzKDE2KSAgI2RvY3Rlc3Q6K1NLSVAKKyAgICAgIGInXHhlYnJceDE3RCp0XHhhZVx4ZDRceGUzU1x4YjZceGUyXHhlYlAxXHg4YicKKworCisuLiBmdW5jdGlvbjo6IHRva2VuX2hleChbbmJ5dGVzPU5vbmVdKQorCisgICBSZXR1cm4gYSByYW5kb20gdGV4dCBzdHJpbmcsIGluIGhleGFkZWNpbWFsLiAgVGhlIHN0cmluZyBoYXMgKm5ieXRlcyoKKyAgIHJhbmRvbSBieXRlcywgZWFjaCBieXRlIGNvbnZlcnRlZCB0byB0d28gaGV4IGRpZ2l0cy4gIElmICpuYnl0ZXMqIGlzCisgICBgYE5vbmVgYCBvciBub3Qgc3VwcGxpZWQsIGEgcmVhc29uYWJsZSBkZWZhdWx0IGlzIHVzZWQuCisKKyAgIC4uIGRvY3Rlc3Q6OgorCisgICAgICA+Pj4gdG9rZW5faGV4KDE2KSAgI2RvY3Rlc3Q6K1NLSVAKKyAgICAgICdmOWJmNzhiOWExOGNlNmQ0NmEwY2QyYjBiODZkZjlkYScKKworLi4gZnVuY3Rpb246OiB0b2tlbl91cmxzYWZlKFtuYnl0ZXM9Tm9uZV0pCisKKyAgIFJldHVybiBhIHJhbmRvbSBVUkwtc2FmZSB0ZXh0IHN0cmluZywgY29udGFpbmluZyAqbmJ5dGVzKiByYW5kb20KKyAgIGJ5dGVzLiAgVGhlIHRleHQgaXMgQmFzZTY0IGVuY29kZWQsIHNvIG9uIGF2ZXJhZ2UgZWFjaCBieXRlIHJlc3VsdHMKKyAgIGluIGFwcHJveGltYXRlbHkgMS4zIGNoYXJhY3RlcnMuICBJZiAqbmJ5dGVzKiBpcyBgYE5vbmVgYCBvciBub3QKKyAgIHN1cHBsaWVkLCBhIHJlYXNvbmFibGUgZGVmYXVsdCBpcyB1c2VkLgorCisgICAuLiBkb2N0ZXN0OjoKKworICAgICAgPj4+IHRva2VuX3VybHNhZmUoMTYpICAjZG9jdGVzdDorU0tJUAorICAgICAgJ0RybWh6ZTZFUGN2MGZOXzgxQmotbkEnCisKKworSG93IG1hbnkgYnl0ZXMgc2hvdWxkIHRva2VucyB1c2U/CiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworVG8gYmUgc2VjdXJlIGFnYWluc3QKK2BicnV0ZS1mb3JjZSBhdHRhY2tzIDxodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CcnV0ZS1mb3JjZV9hdHRhY2s+YF8sCit0b2tlbnMgbmVlZCB0byBoYXZlIHN1ZmZpY2llbnQgcmFuZG9tbmVzcy4gIFVuZm9ydHVuYXRlbHksIHdoYXQgaXMKK2NvbnNpZGVyZWQgc3VmZmljaWVudCB3aWxsIG5lY2Vzc2FyaWx5IGluY3JlYXNlIGFzIGNvbXB1dGVycyBnZXQgbW9yZQorcG93ZXJmdWwgYW5kIGFibGUgdG8gbWFrZSBtb3JlIGd1ZXNzZXMgaW4gYSBzaG9ydGVyIHBlcmlvZC4gIEFzIG9mIDIwMTUsCitpdCBpcyBiZWxpZXZlZCB0aGF0IDMyIGJ5dGVzICgyNTYgYml0cykgb2YgcmFuZG9tbmVzcyBpcyBzdWZmaWNpZW50IGZvcgordGhlIHR5cGljYWwgdXNlLWNhc2UgZXhwZWN0ZWQgZm9yIHRoZSA6bW9kOmBzZWNyZXRzYCBtb2R1bGUuCisKK0ZvciB0aG9zZSB3aG8gd2FudCB0byBtYW5hZ2UgdGhlaXIgb3duIHRva2VuIGxlbmd0aCwgeW91IGNhbiBleHBsaWNpdGx5CitzcGVjaWZ5IGhvdyBtdWNoIHJhbmRvbW5lc3MgaXMgdXNlZCBmb3IgdG9rZW5zIGJ5IGdpdmluZyBhbiA6Y2xhc3M6YGludGAKK2FyZ3VtZW50IHRvIHRoZSB2YXJpb3VzIGBgdG9rZW5fKmBgIGZ1bmN0aW9ucy4gIFRoYXQgYXJndW1lbnQgaXMgdGFrZW4KK2FzIHRoZSBudW1iZXIgb2YgYnl0ZXMgb2YgcmFuZG9tbmVzcyB0byB1c2UuCisKK090aGVyd2lzZSwgaWYgbm8gYXJndW1lbnQgaXMgcHJvdmlkZWQsIG9yIGlmIHRoZSBhcmd1bWVudCBpcyBgYE5vbmVgYCwKK3RoZSBgYHRva2VuXypgYCBmdW5jdGlvbnMgd2lsbCB1c2UgYSByZWFzb25hYmxlIGRlZmF1bHQgaW5zdGVhZC4KKworLi4gbm90ZTo6CisKKyAgIFRoYXQgZGVmYXVsdCBpcyBzdWJqZWN0IHRvIGNoYW5nZSBhdCBhbnkgdGltZSwgaW5jbHVkaW5nIGR1cmluZworICAgbWFpbnRlbmFuY2UgcmVsZWFzZXMuCisKKworT3RoZXIgZnVuY3Rpb25zCistLS0tLS0tLS0tLS0tLS0KKworLi4gZnVuY3Rpb246OiBjb21wYXJlX2RpZ2VzdChhLCBiKQorCisgICBSZXR1cm4gYGBUcnVlYGAgaWYgc3RyaW5ncyAqYSogYW5kICpiKiBhcmUgZXF1YWwsIG90aGVyd2lzZSBgYEZhbHNlYGAsCisgICBpbiBzdWNoIGEgd2F5IGFzIHRvIHJlZHVjZSB0aGUgcmlzayBvZgorICAgYHRpbWluZyBhdHRhY2tzIDxodHRwOi8vY29kYWhhbGUuY29tL2EtbGVzc29uLWluLXRpbWluZy1hdHRhY2tzLz5gXy4KKyAgIFNlZSA6ZnVuYzpgaG1hYy5jb21wYXJlX2RpZ2VzdGAgZm9yIGFkZGl0aW9uYWwgZGV0YWlscy4KKworCitSZWNpcGVzIGFuZCBiZXN0IHByYWN0aWNlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhpcyBzZWN0aW9uIHNob3dzIHJlY2lwZXMgYW5kIGJlc3QgcHJhY3RpY2VzIGZvciB1c2luZyA6bW9kOmBzZWNyZXRzYAordG8gbWFuYWdlIGEgYmFzaWMgbGV2ZWwgb2Ygc2VjdXJpdHkuCisKK0dlbmVyYXRlIGFuIGVpZ2h0LWNoYXJhY3RlciBhbHBoYW51bWVyaWMgcGFzc3dvcmQ6CisKKy4uIHRlc3Rjb2RlOjoKKworICAgaW1wb3J0IHN0cmluZworICAgYWxwaGFiZXQgPSBzdHJpbmcuYXNjaWlfbGV0dGVycyArIHN0cmluZy5kaWdpdHMKKyAgIHBhc3N3b3JkID0gJycuam9pbihjaG9pY2UoYWxwaGFiZXQpIGZvciBpIGluIHJhbmdlKDgpKQorCisKKy4uIG5vdGU6OgorCisgICBBcHBsaWNhdGlvbnMgc2hvdWxkIG5vdAorICAgYHN0b3JlIHBhc3N3b3JkcyBpbiBhIHJlY292ZXJhYmxlIGZvcm1hdCA8aHR0cDovL2N3ZS5taXRyZS5vcmcvZGF0YS9kZWZpbml0aW9ucy8yNTcuaHRtbD5gXywKKyAgIHdoZXRoZXIgcGxhaW4gdGV4dCBvciBlbmNyeXB0ZWQuICBUaGV5IHNob3VsZCBiZSBzYWx0ZWQgYW5kIGhhc2hlZAorICAgdXNpbmcgYSBjcnlwdG9ncmFwaGljYWxseS1zdHJvbmcgb25lLXdheSAoaXJyZXZlcnNpYmxlKSBoYXNoIGZ1bmN0aW9uLgorCisKK0dlbmVyYXRlIGEgdGVuLWNoYXJhY3RlciBhbHBoYW51bWVyaWMgcGFzc3dvcmQgd2l0aCBhdCBsZWFzdCBvbmUKK2xvd2VyY2FzZSBjaGFyYWN0ZXIsIGF0IGxlYXN0IG9uZSB1cHBlcmNhc2UgY2hhcmFjdGVyLCBhbmQgYXQgbGVhc3QKK3RocmVlIGRpZ2l0czoKKworLi4gdGVzdGNvZGU6OgorCisgICBpbXBvcnQgc3RyaW5nCisgICBhbHBoYWJldCA9IHN0cmluZy5hc2NpaV9sZXR0ZXJzICsgc3RyaW5nLmRpZ2l0cworICAgd2hpbGUgVHJ1ZToKKyAgICAgICBwYXNzd29yZCA9ICcnLmpvaW4oY2hvaWNlKGFscGhhYmV0KSBmb3IgaSBpbiByYW5nZSgxMCkpCisgICAgICAgaWYgKGFueShjLmlzbG93ZXIoKSBmb3IgYyBpbiBwYXNzd29yZCkKKyAgICAgICAgICAgICAgIGFuZCBhbnkoYy5pc3VwcGVyKCkgZm9yIGMgaW4gcGFzc3dvcmQpCisgICAgICAgICAgICAgICBhbmQgc3VtKGMuaXNkaWdpdCgpIGZvciBjIGluIHBhc3N3b3JkKSA+PSAzKToKKyAgICAgICAgICAgYnJlYWsKKworCitHZW5lcmF0ZSBhbiBgWEtDRC1zdHlsZSBwYXNzcGhyYXNlIDxodHRwOi8veGtjZC5jb20vOTM2Lz5gXzoKKworLi4gdGVzdGNvZGU6OgorCisgICAjIE9uIHN0YW5kYXJkIExpbnV4IHN5c3RlbXMsIHVzZSBhIGNvbnZlbmllbnQgZGljdGlvbmFyeSBmaWxlLgorICAgIyBPdGhlciBwbGF0Zm9ybXMgbWF5IG5lZWQgdG8gcHJvdmlkZSB0aGVpciBvd24gd29yZC1saXN0LgorICAgd2l0aCBvcGVuKCcvdXNyL3NoYXJlL2RpY3Qvd29yZHMnKSBhcyBmOgorICAgICAgIHdvcmRzID0gW3dvcmQuc3RyaXAoKSBmb3Igd29yZCBpbiBmXQorICAgICAgIHBhc3N3b3JkID0gJyAnLmpvaW4oY2hvaWNlKHdvcmRzKSBmb3IgaSBpbiByYW5nZSg0KSkKKworCitHZW5lcmF0ZSBhIGhhcmQtdG8tZ3Vlc3MgdGVtcG9yYXJ5IFVSTCBjb250YWluaW5nIGEgc2VjdXJpdHkgdG9rZW4KK3N1aXRhYmxlIGZvciBwYXNzd29yZCByZWNvdmVyeSBhcHBsaWNhdGlvbnM6CisKKy4uIHRlc3Rjb2RlOjoKKworICAgdXJsID0gJ2h0dHBzOi8vbXlkb21haW4uY29tL3Jlc2V0PScgKyB0b2tlbl91cmxzYWZlKCkKKworCisKKy4uCisgICAjIFRoaXMgbW9kZWxpbmUgbXVzdCBhcHBlYXIgd2l0aGluIHRoZSBsYXN0IHRlbiBsaW5lcyBvZiB0aGUgZmlsZS4KKyAgIGthdGU6IGluZGVudC13aWR0aCAzOyByZW1vdmUtdHJhaWxpbmctc3BhY2Ugb247IHJlcGxhY2UtdGFicyBvbjsgZW5jb2RpbmcgdXRmLTg7CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zZWxlY3QucnN0IGIvRG9jL2xpYnJhcnkvc2VsZWN0LnJzdAppbmRleCBhODEzODZhLi5mOTcxMThlIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zZWxlY3QucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NlbGVjdC5yc3QKQEAgLTI2OCwzNSArMjY4LDQzIEBACiAKICAgICpldmVudG1hc2sqCiAKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgQ29uc3RhbnQgICAgICAgICAgICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICs9PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKLSAgIHwgOmNvbnN0OmBFUE9MTElOYCAgICAgIHwgQXZhaWxhYmxlIGZvciByZWFkICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmBFUE9MTE9VVGAgICAgIHwgQXZhaWxhYmxlIGZvciB3cml0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmBFUE9MTFBSSWAgICAgIHwgVXJnZW50IGRhdGEgZm9yIHJlYWQgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmBFUE9MTEVSUmAgICAgIHwgRXJyb3IgY29uZGl0aW9uIGhhcHBlbmVkIG9uIHRoZSBhc3NvYy4gZmQgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmBFUE9MTEhVUGAgICAgIHwgSGFuZyB1cCBoYXBwZW5lZCBvbiB0aGUgYXNzb2MuIGZkICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmBFUE9MTEVUYCAgICAgIHwgU2V0IEVkZ2UgVHJpZ2dlciBiZWhhdmlvciwgdGhlIGRlZmF1bHQgaXMgICAgIHwKLSAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwgTGV2ZWwgVHJpZ2dlciBiZWhhdmlvciAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmBFUE9MTE9ORVNIT1RgIHwgU2V0IG9uZS1zaG90IGJlaGF2aW9yLiBBZnRlciBvbmUgZXZlbnQgaXMgICAgIHwKLSAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwgcHVsbGVkIG91dCwgdGhlIGZkIGlzIGludGVybmFsbHkgZGlzYWJsZWQgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmBFUE9MTFJETk9STWAgIHwgRXF1aXZhbGVudCB0byA6Y29uc3Q6YEVQT0xMSU5gICAgICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmBFUE9MTFJEQkFORGAgIHwgUHJpb3JpdHkgZGF0YSBiYW5kIGNhbiBiZSByZWFkLiAgICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmBFUE9MTFdSTk9STWAgIHwgRXF1aXZhbGVudCB0byA6Y29uc3Q6YEVQT0xMT1VUYCAgICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmBFUE9MTFdSQkFORGAgIHwgUHJpb3JpdHkgZGF0YSBtYXkgYmUgd3JpdHRlbi4gICAgICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmBFUE9MTE1TR2AgICAgIHwgSWdub3JlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCBDb25zdGFudCAgICAgICAgICAgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICArPT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKKyAgIHwgOmNvbnN0OmBFUE9MTElOYCAgICAgICAgfCBBdmFpbGFibGUgZm9yIHJlYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IDpjb25zdDpgRVBPTExPVVRgICAgICAgIHwgQXZhaWxhYmxlIGZvciB3cml0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCA6Y29uc3Q6YEVQT0xMUFJJYCAgICAgICB8IFVyZ2VudCBkYXRhIGZvciByZWFkICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmNvbnN0OmBFUE9MTEVSUmAgICAgICAgfCBFcnJvciBjb25kaXRpb24gaGFwcGVuZWQgb24gdGhlIGFzc29jLiBmZCAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IDpjb25zdDpgRVBPTExIVVBgICAgICAgIHwgSGFuZyB1cCBoYXBwZW5lZCBvbiB0aGUgYXNzb2MuIGZkICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCA6Y29uc3Q6YEVQT0xMRVRgICAgICAgICB8IFNldCBFZGdlIFRyaWdnZXIgYmVoYXZpb3IsIHRoZSBkZWZhdWx0IGlzICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgTGV2ZWwgVHJpZ2dlciBiZWhhdmlvciAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCA6Y29uc3Q6YEVQT0xMT05FU0hPVGAgICB8IFNldCBvbmUtc2hvdCBiZWhhdmlvci4gQWZ0ZXIgb25lIGV2ZW50IGlzICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcHVsbGVkIG91dCwgdGhlIGZkIGlzIGludGVybmFsbHkgZGlzYWJsZWQgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCA6Y29uc3Q6YEVQT0xMRVhDTFVTSVZFYCB8IFdha2Ugb25seSBvbmUgZXBvbGwgb2JqZWN0IHdoZW4gdGhlICAgICAgICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXNzb2NpYXRlZCBmZCBoYXMgYW4gZXZlbnQuIFRoZSBkZWZhdWx0IChpZiAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aGlzIGZsYWcgaXMgbm90IHNldCkgaXMgdG8gd2FrZSBhbGwgZXBvbGwgICAgfAorICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8IG9iamVjdHMgcG9sbGluZyBvbiBvbiBhIGZkLiAgICAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmNvbnN0OmBFUE9MTFJESFVQYCAgICAgfCBTdHJlYW0gc29ja2V0IHBlZXIgY2xvc2VkIGNvbm5lY3Rpb24gb3Igc2h1dCAgfAorICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8IGRvd24gd3JpdGluZyBoYWxmIG9mIGNvbm5lY3Rpb24uICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmNvbnN0OmBFUE9MTFJETk9STWAgICAgfCBFcXVpdmFsZW50IHRvIDpjb25zdDpgRVBPTExJTmAgICAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IDpjb25zdDpgRVBPTExSREJBTkRgICAgIHwgUHJpb3JpdHkgZGF0YSBiYW5kIGNhbiBiZSByZWFkLiAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCA6Y29uc3Q6YEVQT0xMV1JOT1JNYCAgICB8IEVxdWl2YWxlbnQgdG8gOmNvbnN0OmBFUE9MTE9VVGAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmNvbnN0OmBFUE9MTFdSQkFORGAgICAgfCBQcmlvcml0eSBkYXRhIG1heSBiZSB3cml0dGVuLiAgICAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IDpjb25zdDpgRVBPTExNU0dgICAgICAgIHwgSWdub3JlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogCiAKIC4uIG1ldGhvZDo6IGVwb2xsLmNsb3NlKCkKQEAgLTM4NSw2ICszOTMsOSBAQAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogICAgfCA6Y29uc3Q6YFBPTExIVVBgICB8IEh1bmcgdXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCA6Y29uc3Q6YFBPTExSREhVUGB8IFN0cmVhbSBzb2NrZXQgcGVlciBjbG9zZWQgY29ubmVjdGlvbiwgb3IgfAorICAgfCAgICAgICAgICAgICAgICAgICB8IHNodXQgZG93biB3cml0aW5nIGhhbGYgb2YgY29ubmVjdGlvbiAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogICAgfCA6Y29uc3Q6YFBPTExOVkFMYCB8IEludmFsaWQgcmVxdWVzdDogZGVzY3JpcHRvciBub3Qgb3BlbiAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zaGxleC5yc3QgYi9Eb2MvbGlicmFyeS9zaGxleC5yc3QKaW5kZXggZTgxZjk4Mi4uMWE4OWJmNiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc2hsZXgucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NobGV4LnJzdApAQCAtNzMsMTEgKzczLDExIEBACiBUaGUgOm1vZDpgc2hsZXhgIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgY2xhc3M6CiAKIAotLi4gY2xhc3M6OiBzaGxleChpbnN0cmVhbT1Ob25lLCBpbmZpbGU9Tm9uZSwgcG9zaXg9RmFsc2UpCisuLiBjbGFzczo6IHNobGV4KGluc3RyZWFtPU5vbmUsIGluZmlsZT1Ob25lLCBwb3NpeD1GYWxzZSwgcHVuY3R1YXRpb25fY2hhcnM9RmFsc2UpCiAKICAgIEEgOmNsYXNzOmB+c2hsZXguc2hsZXhgIGluc3RhbmNlIG9yIHN1YmNsYXNzIGluc3RhbmNlIGlzIGEgbGV4aWNhbCBhbmFseXplcgogICAgb2JqZWN0LiAgVGhlIGluaXRpYWxpemF0aW9uIGFyZ3VtZW50LCBpZiBwcmVzZW50LCBzcGVjaWZpZXMgd2hlcmUgdG8gcmVhZAotICAgY2hhcmFjdGVycyBmcm9tLiBJdCBtdXN0IGJlIGEgZmlsZS0vc3RyZWFtLWxpa2Ugb2JqZWN0IHdpdGgKKyAgIGNoYXJhY3RlcnMgZnJvbS4gIEl0IG11c3QgYmUgYSBmaWxlLS9zdHJlYW0tbGlrZSBvYmplY3Qgd2l0aAogICAgOm1ldGg6YH5pby5UZXh0SU9CYXNlLnJlYWRgIGFuZCA6bWV0aDpgfmlvLlRleHRJT0Jhc2UucmVhZGxpbmVgIG1ldGhvZHMsIG9yCiAgICBhIHN0cmluZy4gIElmIG5vIGFyZ3VtZW50IGlzIGdpdmVuLCBpbnB1dCB3aWxsIGJlIHRha2VuIGZyb20gYGBzeXMuc3RkaW5gYC4KICAgIFRoZSBzZWNvbmQgb3B0aW9uYWwgYXJndW1lbnQgaXMgYSBmaWxlbmFtZSBzdHJpbmcsIHdoaWNoIHNldHMgdGhlIGluaXRpYWwKQEAgLTg3LDggKzg3LDE5IEBACiAgICB3aGVuICpwb3NpeCogaXMgbm90IHRydWUgKGRlZmF1bHQpLCB0aGUgOmNsYXNzOmB+c2hsZXguc2hsZXhgIGluc3RhbmNlIHdpbGwKICAgIG9wZXJhdGUgaW4gY29tcGF0aWJpbGl0eSBtb2RlLiAgV2hlbiBvcGVyYXRpbmcgaW4gUE9TSVggbW9kZSwKICAgIDpjbGFzczpgfnNobGV4LnNobGV4YCB3aWxsIHRyeSB0byBiZSBhcyBjbG9zZSBhcyBwb3NzaWJsZSB0byB0aGUgUE9TSVggc2hlbGwKLSAgIHBhcnNpbmcgcnVsZXMuCisgICBwYXJzaW5nIHJ1bGVzLiAgVGhlICpwdW5jdHVhdGlvbl9jaGFycyogYXJndW1lbnQgcHJvdmlkZXMgYSB3YXkgdG8gbWFrZSB0aGUKKyAgIGJlaGF2aW91ciBldmVuIGNsb3NlciB0byBob3cgcmVhbCBzaGVsbHMgcGFyc2UuICBUaGlzIGNhbiB0YWtlIGEgbnVtYmVyIG9mCisgICB2YWx1ZXM6IHRoZSBkZWZhdWx0IHZhbHVlLCBgYEZhbHNlYGAsIHByZXNlcnZlcyB0aGUgYmVoYXZpb3VyIHNlZW4gdW5kZXIKKyAgIFB5dGhvbiAzLjUgYW5kIGVhcmxpZXIuICBJZiBzZXQgdG8gYGBUcnVlYGAsIHRoZW4gcGFyc2luZyBvZiB0aGUgY2hhcmFjdGVycworICAgYGAoKTs8PnwmYGAgaXMgY2hhbmdlZDogYW55IHJ1biBvZiB0aGVzZSBjaGFyYWN0ZXJzIChjb25zaWRlcmVkIHB1bmN0dWF0aW9uCisgICBjaGFyYWN0ZXJzKSBpcyByZXR1cm5lZCBhcyBhIHNpbmdsZSB0b2tlbi4gIElmIHNldCB0byBhIG5vbi1lbXB0eSBzdHJpbmcgb2YKKyAgIGNoYXJhY3RlcnMsIHRob3NlIGNoYXJhY3RlcnMgd2lsbCBiZSB1c2VkIGFzIHRoZSBwdW5jdHVhdGlvbiBjaGFyYWN0ZXJzLiAgQW55CisgICBjaGFyYWN0ZXJzIGluIHRoZSA6YXR0cjpgd29yZGNoYXJzYCBhdHRyaWJ1dGUgdGhhdCBhcHBlYXIgaW4KKyAgICpwdW5jdHVhdGlvbl9jaGFycyogd2lsbCBiZSByZW1vdmVkIGZyb20gOmF0dHI6YHdvcmRjaGFyc2AuICBTZWUKKyAgIDpyZWY6YGltcHJvdmVkLXNoZWxsLWNvbXBhdGliaWxpdHlgIGZvciBtb3JlIGluZm9ybWF0aW9uLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgVGhlICpwdW5jdHVhdGlvbl9jaGFycyogcGFyYW1ldGVyIHdhcyBhZGRlZC4KIAogLi4gc2VlYWxzbzo6CiAKQEAgLTE5MSw3ICsyMDIsMTMgQEAKIC4uIGF0dHJpYnV0ZTo6IHNobGV4LndvcmRjaGFycwogCiAgICBUaGUgc3RyaW5nIG9mIGNoYXJhY3RlcnMgdGhhdCB3aWxsIGFjY3VtdWxhdGUgaW50byBtdWx0aS1jaGFyYWN0ZXIgdG9rZW5zLiAgQnkKLSAgIGRlZmF1bHQsIGluY2x1ZGVzIGFsbCBBU0NJSSBhbHBoYW51bWVyaWNzIGFuZCB1bmRlcnNjb3JlLgorICAgZGVmYXVsdCwgaW5jbHVkZXMgYWxsIEFTQ0lJIGFscGhhbnVtZXJpY3MgYW5kIHVuZGVyc2NvcmUuICBJbiBQT1NJWCBtb2RlLCB0aGUKKyAgIGFjY2VudGVkIGNoYXJhY3RlcnMgaW4gdGhlIExhdGluLTEgc2V0IGFyZSBhbHNvIGluY2x1ZGVkLiAgSWYKKyAgIDphdHRyOmBwdW5jdHVhdGlvbl9jaGFyc2AgaXMgbm90IGVtcHR5LCB0aGUgY2hhcmFjdGVycyBgYH4tLi8qPz1gYCwgd2hpY2ggY2FuCisgICBhcHBlYXIgaW4gZmlsZW5hbWUgc3BlY2lmaWNhdGlvbnMgYW5kIGNvbW1hbmQgbGluZSBwYXJhbWV0ZXJzLCB3aWxsIGFsc28gYmUKKyAgIGluY2x1ZGVkIGluIHRoaXMgYXR0cmlidXRlLCBhbmQgYW55IGNoYXJhY3RlcnMgd2hpY2ggYXBwZWFyIGluCisgICBgYHB1bmN0dWF0aW9uX2NoYXJzYGAgd2lsbCBiZSByZW1vdmVkIGZyb20gYGB3b3JkY2hhcnNgYCBpZiB0aGV5IGFyZSBwcmVzZW50CisgICB0aGVyZS4KIAogCiAuLiBhdHRyaWJ1dGU6OiBzaGxleC53aGl0ZXNwYWNlCkBAIC0yMjIsOSArMjM5LDEzIEBACiAKIC4uIGF0dHJpYnV0ZTo6IHNobGV4LndoaXRlc3BhY2Vfc3BsaXQKIAotICAgSWYgYGBUcnVlYGAsIHRva2VucyB3aWxsIG9ubHkgYmUgc3BsaXQgaW4gd2hpdGVzcGFjZXMuIFRoaXMgaXMgdXNlZnVsLCBmb3IKKyAgIElmIGBgVHJ1ZWBgLCB0b2tlbnMgd2lsbCBvbmx5IGJlIHNwbGl0IGluIHdoaXRlc3BhY2VzLiAgVGhpcyBpcyB1c2VmdWwsIGZvcgogICAgZXhhbXBsZSwgZm9yIHBhcnNpbmcgY29tbWFuZCBsaW5lcyB3aXRoIDpjbGFzczpgfnNobGV4LnNobGV4YCwgZ2V0dGluZwotICAgdG9rZW5zIGluIGEgc2ltaWxhciB3YXkgdG8gc2hlbGwgYXJndW1lbnRzLgorICAgdG9rZW5zIGluIGEgc2ltaWxhciB3YXkgdG8gc2hlbGwgYXJndW1lbnRzLiAgSWYgdGhpcyBhdHRyaWJ1dGUgaXMgYGBUcnVlYGAsCisgICA6YXR0cjpgcHVuY3R1YXRpb25fY2hhcnNgIHdpbGwgaGF2ZSBubyBlZmZlY3QsIGFuZCBzcGxpdHRpbmcgd2lsbCBoYXBwZW4KKyAgIG9ubHkgb24gd2hpdGVzcGFjZXMuICBXaGVuIHVzaW5nIDphdHRyOmBwdW5jdHVhdGlvbl9jaGFyc2AsIHdoaWNoIGlzCisgICBpbnRlbmRlZCB0byBwcm92aWRlIHBhcnNpbmcgY2xvc2VyIHRvIHRoYXQgaW1wbGVtZW50ZWQgYnkgc2hlbGxzLCBpdCBpcworICAgYWR2aXNhYmxlIHRvIGxlYXZlIGBgd2hpdGVzcGFjZV9zcGxpdGBgIGFzIGBgRmFsc2VgYCAodGhlIGRlZmF1bHQgdmFsdWUpLgogCiAKIC4uIGF0dHJpYnV0ZTo6IHNobGV4LmluZmlsZQpAQCAtMjQ1LDEwICsyNjYsOSBAQAogICAgVGhpcyBhdHRyaWJ1dGUgaXMgYGBOb25lYGAgYnkgZGVmYXVsdC4gIElmIHlvdSBhc3NpZ24gYSBzdHJpbmcgdG8gaXQsIHRoYXQKICAgIHN0cmluZyB3aWxsIGJlIHJlY29nbml6ZWQgYXMgYSBsZXhpY2FsLWxldmVsIGluY2x1c2lvbiByZXF1ZXN0IHNpbWlsYXIgdG8gdGhlCiAgICBgYHNvdXJjZWBgIGtleXdvcmQgaW4gdmFyaW91cyBzaGVsbHMuICBUaGF0IGlzLCB0aGUgaW1tZWRpYXRlbHkgZm9sbG93aW5nIHRva2VuCi0gICB3aWxsIGJlIG9wZW5lZCBhcyBhIGZpbGVuYW1lIGFuZCBpbnB1dCB3aWxsCi0gICBiZSB0YWtlbiBmcm9tIHRoYXQgc3RyZWFtIHVudGlsIEVPRiwgYXQgd2hpY2gKLSAgIHBvaW50IHRoZSA6bWV0aDpgfmlvLklPQmFzZS5jbG9zZWAgbWV0aG9kIG9mIHRoYXQgc3RyZWFtIHdpbGwgYmUgY2FsbGVkIGFuZAotICAgdGhlIGlucHV0IHNvdXJjZSB3aWxsIGFnYWluIGJlY29tZSB0aGUgb3JpZ2luYWwgaW5wdXQgc3RyZWFtLiAgU291cmNlCisgICB3aWxsIGJlIG9wZW5lZCBhcyBhIGZpbGVuYW1lIGFuZCBpbnB1dCB3aWxsIGJlIHRha2VuIGZyb20gdGhhdCBzdHJlYW0gdW50aWwKKyAgIEVPRiwgYXQgd2hpY2ggcG9pbnQgdGhlIDptZXRoOmB+aW8uSU9CYXNlLmNsb3NlYCBtZXRob2Qgb2YgdGhhdCBzdHJlYW0gd2lsbCBiZQorICAgY2FsbGVkIGFuZCB0aGUgaW5wdXQgc291cmNlIHdpbGwgYWdhaW4gYmVjb21lIHRoZSBvcmlnaW5hbCBpbnB1dCBzdHJlYW0uICBTb3VyY2UKICAgIHJlcXVlc3RzIG1heSBiZSBzdGFja2VkIGFueSBudW1iZXIgb2YgbGV2ZWxzIGRlZXAuCiAKIApAQCAtMjc1LDYgKzI5NSwxNiBAQAogICAgKGBgJydgYCksIGluIG5vbi1QT1NJWCBtb2RlLCBhbmQgdG8gYGBOb25lYGAgaW4gUE9TSVggbW9kZS4KIAogCisuLiBhdHRyaWJ1dGU6OiBzaGxleC5wdW5jdHVhdGlvbl9jaGFycworCisgICBDaGFyYWN0ZXJzIHRoYXQgd2lsbCBiZSBjb25zaWRlcmVkIHB1bmN0dWF0aW9uLiBSdW5zIG9mIHB1bmN0dWF0aW9uCisgICBjaGFyYWN0ZXJzIHdpbGwgYmUgcmV0dXJuZWQgYXMgYSBzaW5nbGUgdG9rZW4uIEhvd2V2ZXIsIG5vdGUgdGhhdCBubworICAgc2VtYW50aWMgdmFsaWRpdHkgY2hlY2tpbmcgd2lsbCBiZSBwZXJmb3JtZWQ6IGZvciBleGFtcGxlLCAnPj4+JyBjb3VsZCBiZQorICAgcmV0dXJuZWQgYXMgYSB0b2tlbiwgZXZlbiB0aG91Z2ggaXQgbWF5IG5vdCBiZSByZWNvZ25pc2VkIGFzIHN1Y2ggYnkgc2hlbGxzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCiAuLiBfc2hsZXgtcGFyc2luZy1ydWxlczoKIAogUGFyc2luZyBSdWxlcwpAQCAtMzI3LDMgKzM1Nyw2MiBAQAogKiBFT0YgaXMgc2lnbmFsZWQgd2l0aCBhIDpjb25zdDpgTm9uZWAgdmFsdWU7CiAKICogUXVvdGVkIGVtcHR5IHN0cmluZ3MgKGBgJydgYCkgYXJlIGFsbG93ZWQuCisKKy4uIF9pbXByb3ZlZC1zaGVsbC1jb21wYXRpYmlsaXR5OgorCitJbXByb3ZlZCBDb21wYXRpYmlsaXR5IHdpdGggU2hlbGxzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuNgorCitUaGUgOmNsYXNzOmBzaGxleGAgY2xhc3MgcHJvdmlkZXMgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBwYXJzaW5nIHBlcmZvcm1lZCBieQorY29tbW9uIFVuaXggc2hlbGxzIGxpa2UgYGBiYXNoYGAsIGBgZGFzaGBgLCBhbmQgYGBzaGBgLiAgVG8gdGFrZSBhZHZhbnRhZ2Ugb2YKK3RoaXMgY29tcGF0aWJpbGl0eSwgc3BlY2lmeSB0aGUgYGBwdW5jdHVhdGlvbl9jaGFyc2BgIGFyZ3VtZW50IGluIHRoZQorY29uc3RydWN0b3IuICBUaGlzIGRlZmF1bHRzIHRvIGBgRmFsc2VgYCwgd2hpY2ggcHJlc2VydmVzIHByZS0zLjYgYmVoYXZpb3VyLgorSG93ZXZlciwgaWYgaXQgaXMgc2V0IHRvIGBgVHJ1ZWBgLCB0aGVuIHBhcnNpbmcgb2YgdGhlIGNoYXJhY3RlcnMgYGAoKTs8PnwmYGAKK2lzIGNoYW5nZWQ6IGFueSBydW4gb2YgdGhlc2UgY2hhcmFjdGVycyBpcyByZXR1cm5lZCBhcyBhIHNpbmdsZSB0b2tlbi4gIFdoaWxlCit0aGlzIGlzIHNob3J0IG9mIGEgZnVsbCBwYXJzZXIgZm9yIHNoZWxscyAod2hpY2ggd291bGQgYmUgb3V0IG9mIHNjb3BlIGZvciB0aGUKK3N0YW5kYXJkIGxpYnJhcnksIGdpdmVuIHRoZSBtdWx0aXBsaWNpdHkgb2Ygc2hlbGxzIG91dCB0aGVyZSksIGl0IGRvZXMgYWxsb3cKK3lvdSB0byBwZXJmb3JtIHByb2Nlc3Npbmcgb2YgY29tbWFuZCBsaW5lcyBtb3JlIGVhc2lseSB0aGFuIHlvdSBjb3VsZAorb3RoZXJ3aXNlLiAgVG8gaWxsdXN0cmF0ZSwgeW91IGNhbiBzZWUgdGhlIGRpZmZlcmVuY2UgaW4gdGhlIGZvbGxvd2luZyBzbmlwcGV0OjoKKworICAgIGltcG9ydCBzaGxleAorCisgICAgZm9yIHB1bmN0IGluIChGYWxzZSwgVHJ1ZSk6CisgICAgICAgIGlmIHB1bmN0OgorICAgICAgICAgICAgbWVzc2FnZSA9ICdPbGQnCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBtZXNzYWdlID0gJ05ldycKKyAgICAgICAgdGV4dCA9ICJhICYmIGI7IGMgJiYgZCB8fCBlOyBmID4nYWJjJzsgKGRlZiBcImdoaVwiKSIKKyAgICAgICAgcyA9IHNobGV4LnNobGV4KHRleHQsIHB1bmN0dWF0aW9uX2NoYXJzPXB1bmN0KQorICAgICAgICBwcmludCgnJXM6ICVzJyAlIChtZXNzYWdlLCBsaXN0KHMpKSkKKword2hpY2ggcHJpbnRzIG91dDo6CisKKyAgICBPbGQ6IFsnYScsICcmJywgJyYnLCAnYicsICc7JywgJ2MnLCAnJicsICcmJywgJ2QnLCAnfCcsICd8JywgJ2UnLCAnOycsICdmJywgJz4nLCAiJ2FiYyciLCAnOycsICcoJywgJ2RlZicsICciZ2hpIicsICcpJ10KKyAgICBOZXc6IFsnYScsICcmJicsICdiJywgJzsnLCAnYycsICcmJicsICdkJywgJ3x8JywgJ2UnLCAnOycsICdmJywgJz4nLCAiJ2FiYyciLCAnOycsICcoJywgJ2RlZicsICciZ2hpIicsICcpJ10KKworT2YgY291cnNlLCB0b2tlbnMgd2lsbCBiZSByZXR1cm5lZCB3aGljaCBhcmUgbm90IHZhbGlkIGZvciBzaGVsbHMsIGFuZCB5b3UnbGwKK25lZWQgdG8gaW1wbGVtZW50IHlvdXIgb3duIGVycm9yIGNoZWNrcyBvbiB0aGUgcmV0dXJuZWQgdG9rZW5zLgorCitJbnN0ZWFkIG9mIHBhc3NpbmcgYGBUcnVlYGAgYXMgdGhlIHZhbHVlIGZvciB0aGUgcHVuY3R1YXRpb25fY2hhcnMgcGFyYW1ldGVyLAoreW91IGNhbiBwYXNzIGEgc3RyaW5nIHdpdGggc3BlY2lmaWMgY2hhcmFjdGVycywgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGRldGVybWluZQord2hpY2ggY2hhcmFjdGVycyBjb25zdGl0dXRlIHB1bmN0dWF0aW9uLiBGb3IgZXhhbXBsZTo6CisKKyAgICA+Pj4gaW1wb3J0IHNobGV4CisgICAgPj4+IHMgPSBzaGxleC5zaGxleCgiYSAmJiBiIHx8IGMiLCBwdW5jdHVhdGlvbl9jaGFycz0ifCIpCisgICAgPj4+IGxpc3QocykKKyAgICBbJ2EnLCAnJicsICcmJywgJ2InLCAnfHwnLCAnYyddCisKKy4uIG5vdGU6OiBXaGVuIGBgcHVuY3R1YXRpb25fY2hhcnNgYCBpcyBzcGVjaWZpZWQsIHRoZSA6YXR0cjpgfnNobGV4LndvcmRjaGFyc2AKKyAgIGF0dHJpYnV0ZSBpcyBhdWdtZW50ZWQgd2l0aCB0aGUgY2hhcmFjdGVycyBgYH4tLi8qPz1gYC4gIFRoYXQgaXMgYmVjYXVzZSB0aGVzZQorICAgY2hhcmFjdGVycyBjYW4gYXBwZWFyIGluIGZpbGUgbmFtZXMgKGluY2x1ZGluZyB3aWxkY2FyZHMpIGFuZCBjb21tYW5kLWxpbmUKKyAgIGFyZ3VtZW50cyAoZS5nLiBgYC0tY29sb3I9YXV0b2BgKS4gSGVuY2U6OgorCisgICAgICA+Pj4gaW1wb3J0IHNobGV4CisgICAgICA+Pj4gcyA9IHNobGV4LnNobGV4KCd+L2EgJiYgYi1jIC0tY29sb3I9YXV0byB8fCBkICoucHk/JywKKyAgICAgIC4uLiAgICAgICAgICAgICAgICAgcHVuY3R1YXRpb25fY2hhcnM9VHJ1ZSkKKyAgICAgID4+PiBsaXN0KHMpCisgICAgICBbJ34vYScsICcmJicsICdiLWMnLCAnLS1jb2xvcj1hdXRvJywgJ3x8JywgJ2QnLCAnKi5weT8nXQorCisKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NodXRpbC5yc3QgYi9Eb2MvbGlicmFyeS9zaHV0aWwucnN0CmluZGV4IDY2OTQ3NWYuLjM0NTE1OTcgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NodXRpbC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc2h1dGlsLnJzdApAQCAtNDI1LDcgKzQyNSw3IEBACiAgICBpbXBvcnQgbG9nZ2luZwogCiAgICBkZWYgX2xvZ3BhdGgocGF0aCwgbmFtZXMpOgotICAgICAgIGxvZ2dpbmcuaW5mbygnV29ya2luZyBpbiAlcycgJSBwYXRoKQorICAgICAgIGxvZ2dpbmcuaW5mbygnV29ya2luZyBpbiAlcycsIHBhdGgpCiAgICAgICAgcmV0dXJuIFtdICAgIyBub3RoaW5nIHdpbGwgYmUgaWdub3JlZAogCiAgICBjb3B5dHJlZShzb3VyY2UsIGRlc3RpbmF0aW9uLCBpZ25vcmU9X2xvZ3BhdGgpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zaXRlLnJzdCBiL0RvYy9saWJyYXJ5L3NpdGUucnN0CmluZGV4IDBhNzNmNWEuLjQzZGFmNzkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NpdGUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NpdGUucnN0CkBAIC01Miw3ICs1Miw4IEBACiBBIHBhdGggY29uZmlndXJhdGlvbiBmaWxlIGlzIGEgZmlsZSB3aG9zZSBuYW1lIGhhcyB0aGUgZm9ybSA6ZmlsZTpge25hbWV9LnB0aGAKIGFuZCBleGlzdHMgaW4gb25lIG9mIHRoZSBmb3VyIGRpcmVjdG9yaWVzIG1lbnRpb25lZCBhYm92ZTsgaXRzIGNvbnRlbnRzIGFyZQogYWRkaXRpb25hbCBpdGVtcyAob25lIHBlciBsaW5lKSB0byBiZSBhZGRlZCB0byBgYHN5cy5wYXRoYGAuICBOb24tZXhpc3RpbmcgaXRlbXMKLWFyZSBuZXZlciBhZGRlZCB0byBgYHN5cy5wYXRoYGAuICBObyBpdGVtIGlzIGFkZGVkIHRvIGBgc3lzLnBhdGhgYCBtb3JlIHRoYW4KK2FyZSBuZXZlciBhZGRlZCB0byBgYHN5cy5wYXRoYGAsIGFuZCBubyBjaGVjayBpcyBtYWRlIHRoYXQgdGhlIGl0ZW0gcmVmZXJzIHRvIGEKK2RpcmVjdG9yeSByYXRoZXIgdGhhbiBhIGZpbGUuICBObyBpdGVtIGlzIGFkZGVkIHRvIGBgc3lzLnBhdGhgYCBtb3JlIHRoYW4KIG9uY2UuICBCbGFuayBsaW5lcyBhbmQgbGluZXMgYmVnaW5uaW5nIHdpdGggYGAjYGAgYXJlIHNraXBwZWQuICBMaW5lcyBzdGFydGluZwogd2l0aCBgYGltcG9ydGBgIChmb2xsb3dlZCBieSBzcGFjZSBvciB0YWIpIGFyZSBleGVjdXRlZC4KIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc210cGQucnN0IGIvRG9jL2xpYnJhcnkvc210cGQucnN0CmluZGV4IGEwOTZkZTAuLmUzODMyMDEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NtdHBkLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zbXRwZC5yc3QKQEAgLTI5LDcgKzI5LDcgQEAKIAogCiAuLiBjbGFzczo6IFNNVFBTZXJ2ZXIobG9jYWxhZGRyLCByZW1vdGVhZGRyLCBkYXRhX3NpemVfbGltaXQ9MzM1NTQ0MzIsXAotICAgICAgICAgICAgICAgICAgICAgIG1hcD1Ob25lLCBlbmFibGVfU01UUFVURjg9RmFsc2UsIGRlY29kZV9kYXRhPVRydWUpCisgICAgICAgICAgICAgICAgICAgICAgbWFwPU5vbmUsIGVuYWJsZV9TTVRQVVRGOD1GYWxzZSwgZGVjb2RlX2RhdGE9RmFsc2UpCiAKICAgIENyZWF0ZSBhIG5ldyA6Y2xhc3M6YFNNVFBTZXJ2ZXJgIG9iamVjdCwgd2hpY2ggYmluZHMgdG8gbG9jYWwgYWRkcmVzcwogICAgKmxvY2FsYWRkciouICBJdCB3aWxsIHRyZWF0ICpyZW1vdGVhZGRyKiBhcyBhbiB1cHN0cmVhbSBTTVRQIHJlbGF5ZXIuICBCb3RoCkBAIC00NiwyMCArNDYsMTkgQEAKICAgIGdsb2JhbCBzb2NrZXQgbWFwIGlzIHVzZWQuCiAKICAgICplbmFibGVfU01UUFVURjgqIGRldGVybWluZXMgd2hldGhlciB0aGUgYGBTTVRQVVRGOGBgIGV4dGVuc2lvbiAoYXMgZGVmaW5lZAotICAgaW4gOlJGQzpgNjUzMWApIHNob3VsZCBiZSBlbmFibGVkLiAgVGhlIGRlZmF1bHQgaXMgYGBGYWxzZWBgLiAgSWYgc2V0IHRvCi0gICBgYFRydWVgYCwgKmRlY29kZV9kYXRhKiBtdXN0IGJlIGBgRmFsc2VgYCAob3RoZXJ3aXNlIGFuIGVycm9yIGlzIHJhaXNlZCkuCisgICBpbiA6UkZDOmA2NTMxYCkgc2hvdWxkIGJlIGVuYWJsZWQuICBUaGUgZGVmYXVsdCBpcyBgYEZhbHNlYGAuCiAgICBXaGVuIGBgVHJ1ZWBgLCBgYFNNVFBVVEY4YGAgaXMgYWNjZXB0ZWQgYXMgYSBwYXJhbWV0ZXIgdG8gdGhlIGBgTUFJTGBgCiAgICBjb21tYW5kIGFuZCB3aGVuIHByZXNlbnQgaXMgcGFzc2VkIHRvIDptZXRoOmBwcm9jZXNzX21lc3NhZ2VgIGluIHRoZQotICAgYGBrd2FyZ3NbJ21haWxfb3B0aW9ucyddYGAgbGlzdC4KKyAgIGBga3dhcmdzWydtYWlsX29wdGlvbnMnXWBgIGxpc3QuICAqZGVjb2RlX2RhdGEqIGFuZCAqZW5hYmxlX1NNVFBVVEY4KgorICAgY2Fubm90IGJlIHNldCB0byBgYFRydWVgYCBhdCB0aGUgc2FtZSB0aW1lLgogCiAgICAqZGVjb2RlX2RhdGEqIHNwZWNpZmllcyB3aGV0aGVyIHRoZSBkYXRhIHBvcnRpb24gb2YgdGhlIFNNVFAgdHJhbnNhY3Rpb24KLSAgIHNob3VsZCBiZSBkZWNvZGVkIHVzaW5nIFVURi04LiAgVGhlIGRlZmF1bHQgaXMgYGBUcnVlYGAgZm9yIGJhY2t3YXJkCi0gICBjb21wYXRpYmlsaXR5IHJlYXNvbnMsIGJ1dCB3aWxsIGNoYW5nZSB0byBgYEZhbHNlYGAgaW4gUHl0aG9uIDMuNjsgc3BlY2lmeQotICAgdGhlIGtleXdvcmQgdmFsdWUgZXhwbGljaXRseSB0byBhdm9pZCB0aGUgOmV4YzpgRGVwcmVjYXRpb25XYXJuaW5nYC4gIFdoZW4KLSAgICpkZWNvZGVfZGF0YSogaXMgc2V0IHRvIGBgRmFsc2VgYCB0aGUgc2VydmVyIGFkdmVydGlzZXMgdGhlIGBgOEJJVE1JTUVgYAorICAgc2hvdWxkIGJlIGRlY29kZWQgdXNpbmcgVVRGLTguICBXaGVuICpkZWNvZGVfZGF0YSogaXMgYGBGYWxzZWBgICh0aGUKKyAgIGRlZmF1bHQpLCB0aGUgc2VydmVyIGFkdmVydGlzZXMgdGhlIGBgOEJJVE1JTUVgYAogICAgZXh0ZW5zaW9uICg6cmZjOmA2MTUyYCksIGFjY2VwdHMgdGhlIGBgQk9EWT04QklUTUlNRWBgIHBhcmFtZXRlciB0bwogICAgdGhlIGBgTUFJTGBgIGNvbW1hbmQsIGFuZCB3aGVuIHByZXNlbnQgcGFzc2VzIGl0IHRvIDptZXRoOmBwcm9jZXNzX21lc3NhZ2VgCi0gICBpbiB0aGUgYGBrd2FyZ3NbJ21haWxfb3B0aW9ucyddYGAgbGlzdC4KKyAgIGluIHRoZSBgYGt3YXJnc1snbWFpbF9vcHRpb25zJ11gYCBsaXN0LiAqZGVjb2RlX2RhdGEqIGFuZCAqZW5hYmxlX1NNVFBVVEY4KgorICAgY2Fubm90IGJlIHNldCB0byBgYFRydWVgYCBhdCB0aGUgc2FtZSB0aW1lLgogCiAgICAuLiBtZXRob2Q6OiBwcm9jZXNzX21lc3NhZ2UocGVlciwgbWFpbGZyb20sIHJjcHR0b3MsIGRhdGEsICoqa3dhcmdzKQogCkBAIC03Niw5ICs3NSw4IEBACiAgICAgICB3aWxsIGJlIGEgYnl0ZXMgb2JqZWN0LgogCiAgICAgICAqa3dhcmdzKiBpcyBhIGRpY3Rpb25hcnkgY29udGFpbmluZyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLiBJdCBpcyBlbXB0eQotICAgICAgdW5sZXNzIGF0IGxlYXN0IG9uZSBvZiBgYGRlY29kZV9kYXRhPUZhbHNlYGAgb3IgYGBlbmFibGVfU01UUFVURjg9VHJ1ZWBgCi0gICAgICB3YXMgZ2l2ZW4gYXMgYW4gaW5pdCBwYXJhbWV0ZXIsIGluIHdoaWNoIGNhc2UgaXQgY29udGFpbnMgdGhlIGZvbGxvd2luZwotICAgICAga2V5czoKKyAgICAgIGlmIGBgZGVjb2RlX2RhdGE9VHJ1ZWBgIHdhcyBnaXZlbiBhcyBhbiBpbml0IGFyZ3VtZW50LCBvdGhlcndpc2UKKyAgICAgIGl0IGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcga2V5czoKIAogICAgICAgICAgICptYWlsX29wdGlvbnMqOgogICAgICAgICAgICAgIGEgbGlzdCBvZiBhbGwgcmVjZWl2ZWQgcGFyYW1ldGVycyB0byB0aGUgYGBNQUlMYGAKQEAgLTEwOSw5ICsxMDcsMTIgQEAKICAgICAgICpsb2NhbGFkZHIqIGFuZCAqcmVtb3RlYWRkciogbWF5IG5vdyBjb250YWluIElQdjYgYWRkcmVzc2VzLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKLSAgICAgIHRoZSAqZGVjb2RlX2RhdGEqIGFuZCAqZW5hYmxlX1NNVFBVVEY4KiBjb25zdHJ1Y3RvciBhcmd1bWVudHMsIGFuZCB0aGUKLSAgICAgICprd2FyZ3MqIGFyZ3VtZW50IHRvIDptZXRoOmBwcm9jZXNzX21lc3NhZ2VgIHdoZW4gb25lIG9yIG1vcmUgb2YgdGhlc2UgaXMKLSAgICAgIHNwZWNpZmllZC4KKyAgICAgIFRoZSAqZGVjb2RlX2RhdGEqIGFuZCAqZW5hYmxlX1NNVFBVVEY4KiBjb25zdHJ1Y3RvciBwYXJhbWV0ZXJzLCBhbmQgdGhlCisgICAgICAqa3dhcmdzKiBwYXJhbWV0ZXIgdG8gOm1ldGg6YHByb2Nlc3NfbWVzc2FnZWAgd2hlbiAqZGVjb2RlX2RhdGEqIGlzCisgICAgICBgYEZhbHNlYGAuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICAqZGVjb2RlX2RhdGEqIGlzIG5vdyBgYEZhbHNlYGAgYnkgZGVmYXVsdC4KIAogCiBEZWJ1Z2dpbmdTZXJ2ZXIgT2JqZWN0cwpAQCAtMTUxLDcgKzE1Miw3IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC4uIGNsYXNzOjogU01UUENoYW5uZWwoc2VydmVyLCBjb25uLCBhZGRyLCBkYXRhX3NpemVfbGltaXQ9MzM1NTQ0MzIsXAotICAgICAgICAgICAgICAgICAgICAgICBtYXA9Tm9uZSwgZW5hYmxlX1NNVFBVVEY4PUZhbHNlLCBkZWNvZGVfZGF0YT1UcnVlKQorICAgICAgICAgICAgICAgICAgICAgICBtYXA9Tm9uZSwgZW5hYmxlX1NNVFBVVEY4PUZhbHNlLCBkZWNvZGVfZGF0YT1GYWxzZSkKIAogICAgQ3JlYXRlIGEgbmV3IDpjbGFzczpgU01UUENoYW5uZWxgIG9iamVjdCB3aGljaCBtYW5hZ2VzIHRoZSBjb21tdW5pY2F0aW9uCiAgICBiZXR3ZWVuIHRoZSBzZXJ2ZXIgYW5kIGEgc2luZ2xlIFNNVFAgY2xpZW50LgpAQCAtMTYzLDIyICsxNjQsMjUgQEAKICAgIGxpbWl0LgogCiAgICAqZW5hYmxlX1NNVFBVVEY4KiBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGBgU01UUFVURjhgYCBleHRlbnNpb24gKGFzIGRlZmluZWQKLSAgIGluIDpSRkM6YDY1MzFgKSBzaG91bGQgYmUgZW5hYmxlZC4gIFRoZSBkZWZhdWx0IGlzIGBgRmFsc2VgYC4gIEEKLSAgIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZCBpZiBib3RoICplbmFibGVfU01UUFVURjgqIGFuZCAqZGVjb2RlX2RhdGEqIGFyZQotICAgc2V0IHRvIGBgVHJ1ZWBgIGF0IHRoZSBzYW1lIHRpbWUuCisgICBpbiA6UkZDOmA2NTMxYCkgc2hvdWxkIGJlIGVuYWJsZWQuICBUaGUgZGVmYXVsdCBpcyBgYEZhbHNlYGAuCisgICAqZGVjb2RlX2RhdGEqIGFuZCAqZW5hYmxlX1NNVFBVVEY4KiBjYW5ub3QgYmUgc2V0IHRvIGBgVHJ1ZWBgIGF0IHRoZSBzYW1lCisgICB0aW1lLgogCiAgICBBIGRpY3Rpb25hcnkgY2FuIGJlIHNwZWNpZmllZCBpbiAqbWFwKiB0byBhdm9pZCB1c2luZyBhIGdsb2JhbCBzb2NrZXQgbWFwLgogCiAgICAqZGVjb2RlX2RhdGEqIHNwZWNpZmllcyB3aGV0aGVyIHRoZSBkYXRhIHBvcnRpb24gb2YgdGhlIFNNVFAgdHJhbnNhY3Rpb24KLSAgIHNob3VsZCBiZSBkZWNvZGVkIHVzaW5nIFVURi04LiAgVGhlIGRlZmF1bHQgaXMgYGBUcnVlYGAgZm9yIGJhY2t3YXJkCi0gICBjb21wYXRpYmlsaXR5IHJlYXNvbnMsIGJ1dCB3aWxsIGNoYW5nZSB0byBgYEZhbHNlYGAgaW4gUHl0aG9uIDMuNi4gIFNwZWNpZnkKLSAgIHRoZSBrZXl3b3JkIHZhbHVlIGV4cGxpY2l0bHkgdG8gYXZvaWQgdGhlIDpleGM6YERlcHJlY2F0aW9uV2FybmluZ2AuCisgICBzaG91bGQgYmUgZGVjb2RlZCB1c2luZyBVVEYtOC4gIFRoZSBkZWZhdWx0IGlzIGBgRmFsc2VgYC4KKyAgICpkZWNvZGVfZGF0YSogYW5kICplbmFibGVfU01UUFVURjgqIGNhbm5vdCBiZSBzZXQgdG8gYGBUcnVlYGAgYXQgdGhlIHNhbWUKKyAgIHRpbWUuCiAKICAgIFRvIHVzZSBhIGN1c3RvbSBTTVRQQ2hhbm5lbCBpbXBsZW1lbnRhdGlvbiB5b3UgbmVlZCB0byBvdmVycmlkZSB0aGUKICAgIDphdHRyOmBTTVRQU2VydmVyLmNoYW5uZWxfY2xhc3NgIG9mIHlvdXIgOmNsYXNzOmBTTVRQU2VydmVyYC4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKLSAgICAgIHRoZSAqZGVjb2RlX2RhdGEqIGFuZCAqZW5hYmxlX1NNVFBVVEY4KiBhcmd1bWVudHMgd2VyZSBhZGRlZC4KKyAgICAgIFRoZSAqZGVjb2RlX2RhdGEqIGFuZCAqZW5hYmxlX1NNVFBVVEY4KiBwYXJhbWV0ZXJzIHdlcmUgYWRkZWQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICAqZGVjb2RlX2RhdGEqIGlzIG5vdyBgYEZhbHNlYGAgYnkgZGVmYXVsdC4KIAogICAgVGhlIDpjbGFzczpgU01UUENoYW5uZWxgIGhhcyB0aGUgZm9sbG93aW5nIGluc3RhbmNlIHZhcmlhYmxlczoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc210cGxpYi5yc3QgYi9Eb2MvbGlicmFyeS9zbXRwbGliLnJzdAppbmRleCA4Yjk4Y2NmLi44NmU3NjllIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zbXRwbGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zbXRwbGliLnJzdApAQCAtOTUsNiArOTUsMTQgQEAKICAgICAgIDphdHRyOmBzc2wuU1NMQ29udGV4dC5jaGVja19ob3N0bmFtZWAgYW5kICpTZXJ2ZXIgTmFtZSBJbmRpY2F0aW9uKiAoc2VlCiAgICAgICA6ZGF0YTpgc3NsLkhBU19TTklgKS4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuNgorCisgICAgICAgKmtleWZpbGUqIGFuZCAqY2VydGZpbGUqIGFyZSBkZXByZWNhdGVkIGluIGZhdm9yIG9mICpjb250ZXh0Ki4KKyAgICAgICBQbGVhc2UgdXNlIDptZXRoOmBzc2wuU1NMQ29udGV4dC5sb2FkX2NlcnRfY2hhaW5gIGluc3RlYWQsIG9yIGxldAorICAgICAgIDpmdW5jOmBzc2wuY3JlYXRlX2RlZmF1bHRfY29udGV4dGAgc2VsZWN0IHRoZSBzeXN0ZW0ncyB0cnVzdGVkIENBCisgICAgICAgY2VydGlmaWNhdGVzIGZvciB5b3UuCisKKwogLi4gY2xhc3M6OiBMTVRQKGhvc3Q9JycsIHBvcnQ9TE1UUF9QT1JULCBsb2NhbF9ob3N0bmFtZT1Ob25lLCBzb3VyY2VfYWRkcmVzcz1Ob25lKQogCiAgICBUaGUgTE1UUCBwcm90b2NvbCwgd2hpY2ggaXMgdmVyeSBzaW1pbGFyIHRvIEVTTVRQLCBpcyBoZWF2aWx5IGJhc2VkIG9uIHRoZQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc29ja2V0LnJzdCBiL0RvYy9saWJyYXJ5L3NvY2tldC5yc3QKaW5kZXggNTMwMDAwYi4uOWMxMDg2NyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc29ja2V0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9zb2NrZXQucnN0CkBAIC0xMzMsNiArMTMzLDIyIEBACiAgICAgc3RyaW5nIGZvcm1hdC4gKGV4LiBgYGInMTI6MjM6MzQ6NDU6NTY6NjcnYGApIFRoaXMgcHJvdG9jb2wgaXMgbm90CiAgICAgc3VwcG9ydGVkIHVuZGVyIEZyZWVCU0QuCiAKKy0gOmNvbnN0OmBBRl9BTEdgIGlzIGEgTGludXgtb25seSBzb2NrZXQgYmFzZWQgaW50ZXJmYWNlIHRvIEtlcm5lbAorICBjcnlwdG9ncmFwaHkuIEFuIGFsZ29yaXRobSBzb2NrZXQgaXMgY29uZmlndXJlZCB3aXRoIGEgdHVwbGUgb2YgdHdvIHRvIGZvdXIKKyAgZWxlbWVudHMgYGAodHlwZSwgbmFtZSBbLCBmZWF0IFssIG1hc2tdXSlgYCwgd2hlcmU6CisKKyAgLSAqdHlwZSogaXMgdGhlIGFsZ29yaXRobSB0eXBlIGFzIHN0cmluZywgZS5nLiBgYGFlYWRgYCwgYGBoYXNoYGAsCisgICAgYGBza2NpcGhlcmBgIG9yIGBgcm5nYGAuCisKKyAgLSAqbmFtZSogaXMgdGhlIGFsZ29yaXRobSBuYW1lIGFuZCBvcGVyYXRpb24gbW9kZSBhcyBzdHJpbmcsIGUuZy4KKyAgICBgYHNoYTI1NmBgLCBgYGhtYWMoc2hhMjU2KWBgLCBgYGNiYyhhZXMpYGAgb3IgYGBkcmJnX25vcHJfY3RyX2FlczI1NmBgLgorCisgIC0gKmZlYXQqIGFuZCAqbWFzayogYXJlIHVuc2lnbmVkIDMyYml0IGludGVnZXJzLgorCisgIEF2YWlsYWJpbGl0eSBMaW51eCAyLjYuMzgsIHNvbWUgYWxnb3JpdGhtIHR5cGVzIHJlcXVpcmUgbW9yZSByZWNlbnQgS2VybmVscy4KKworICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogLSBDZXJ0YWluIG90aGVyIGFkZHJlc3MgZmFtaWxpZXMgKDpjb25zdDpgQUZfUEFDS0VUYCwgOmNvbnN0OmBBRl9DQU5gKQogICBzdXBwb3J0IHNwZWNpZmljIHJlcHJlc2VudGF0aW9ucy4KIApAQCAtMjgzLDYgKzI5OSwxMCBAQAogICAgaW4gdGhlIFVuaXggaGVhZGVyIGZpbGVzIGFyZSBkZWZpbmVkOyBmb3IgYSBmZXcgc3ltYm9scywgZGVmYXVsdCB2YWx1ZXMgYXJlCiAgICBwcm92aWRlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIGBgU09fRE9NQUlOYGAsIGBgU09fUFJPVE9DT0xgYCwgYGBTT19QRUVSU0VDYGAsIGBgU09fUEFTU1NFQ2BgCisgICAgICB3ZXJlIGFkZGVkLgorCiAuLiBkYXRhOjogQUZfQ0FOCiAgICAgICAgICAgUEZfQ0FOCiAgICAgICAgICAgU09MX0NBTl8qCkBAIC0zMzEsMTggKzM1MSwzMyBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIAotLi4gZGF0YTo6IFNJT18qCisuLiBkYXRhOjogU0lPX1JDVkFMTAorICAgICAgICAgIFNJT19LRUVQQUxJVkVfVkFMUworICAgICAgICAgIFNJT19MT09QQkFDS19GQVNUX1BBVEgKICAgICAgICAgICBSQ1ZBTExfKgogCiAgICBDb25zdGFudHMgZm9yIFdpbmRvd3MnIFdTQUlvY3RsKCkuIFRoZSBjb25zdGFudHMgYXJlIHVzZWQgYXMgYXJndW1lbnRzIHRvIHRoZQogICAgOm1ldGg6YH5zb2NrZXQuc29ja2V0LmlvY3RsYCBtZXRob2Qgb2Ygc29ja2V0IG9iamVjdHMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBgYFNJT19MT09QQkFDS19GQVNUX1BBVEhgYCB3YXMgYWRkZWQuCisKIAogLi4gZGF0YTo6IFRJUENfKgogCiAgICBUSVBDIHJlbGF0ZWQgY29uc3RhbnRzLCBtYXRjaGluZyB0aGUgb25lcyBleHBvcnRlZCBieSB0aGUgQyBzb2NrZXQgQVBJLiBTZWUKICAgIHRoZSBUSVBDIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAKKy4uIGRhdGE6OiBBRl9BTEcKKyAgICAgICAgICBTT0xfQUxHCisgICAgICAgICAgQUxHXyoKKworICAgQ29uc3RhbnRzIGZvciBMaW51eCBLZXJuZWwgY3J5cHRvZ3JhcGh5LgorCisgICBBdmFpbGFiaWxpdHk6IExpbnV4ID49IDIuNi4zOC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIC4uIGRhdGE6OiBBRl9MSU5LCiAKICAgQXZhaWxhYmlsaXR5OiBCU0QsIE9TWC4KQEAgLTg3NCw2ICs5MDksMTAgQEAKICAgIGl0IGlzIHJlY29tbWVuZGVkIHRvIDptZXRoOmBjbG9zZWAgdGhlbSBleHBsaWNpdGx5LCBvciB0byB1c2UgYQogICAgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudCBhcm91bmQgdGhlbS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIDpleGM6YE9TRXJyb3JgIGlzIG5vdyByYWlzZWQgaWYgYW4gZXJyb3Igb2NjdXJzIHdoZW4gdGhlIHVuZGVybHlpbmcKKyAgICAgIDpjOmZ1bmM6YGNsb3NlYCBjYWxsIGlzIG1hZGUuCisKICAgIC4uIG5vdGU6OgogCiAgICAgICA6bWV0aDpgY2xvc2UoKWAgcmVsZWFzZXMgdGhlIHJlc291cmNlIGFzc29jaWF0ZWQgd2l0aCBhIGNvbm5lY3Rpb24gYnV0CkBAIC05OTQsNiArMTAzMywxMiBAQAogICAgT24gb3RoZXIgcGxhdGZvcm1zLCB0aGUgZ2VuZXJpYyA6ZnVuYzpgZmNudGwuZmNudGxgIGFuZCA6ZnVuYzpgZmNudGwuaW9jdGxgCiAgICBmdW5jdGlvbnMgbWF5IGJlIHVzZWQ7IHRoZXkgYWNjZXB0IGEgc29ja2V0IG9iamVjdCBhcyB0aGVpciBmaXJzdCBhcmd1bWVudC4KIAorICAgQ3VycmVudGx5IG9ubHkgdGhlIGZvbGxvd2luZyBjb250cm9sIGNvZGVzIGFyZSBzdXBwb3J0ZWQ6CisgICBgYFNJT19SQ1ZBTExgYCwgYGBTSU9fS0VFUEFMSVZFX1ZBTFNgYCwgYW5kIGBgU0lPX0xPT1BCQUNLX0ZBU1RfUEFUSGBgLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgYGBTSU9fTE9PUEJBQ0tfRkFTVF9QQVRIYGAgd2FzIGFkZGVkLgorCiAuLiBtZXRob2Q6OiBzb2NrZXQubGlzdGVuKFtiYWNrbG9nXSkKIAogICAgRW5hYmxlIGEgc2VydmVyIHRvIGFjY2VwdCBjb25uZWN0aW9ucy4gIElmICpiYWNrbG9nKiBpcyBzcGVjaWZpZWQsIGl0IG11c3QKQEAgLTEyNzcsNiArMTMyMiwxNSBAQAogICAgICAgYW4gZXhjZXB0aW9uLCB0aGUgbWV0aG9kIG5vdyByZXRyaWVzIHRoZSBzeXN0ZW0gY2FsbCBpbnN0ZWFkIG9mIHJhaXNpbmcKICAgICAgIGFuIDpleGM6YEludGVycnVwdGVkRXJyb3JgIGV4Y2VwdGlvbiAoc2VlIDpwZXA6YDQ3NWAgZm9yIHRoZSByYXRpb25hbGUpLgogCisuLiBtZXRob2Q6OiBzb2NrZXQuc2VuZG1zZ19hZmFsZyhbbXNnXSwgKiwgb3BbLCBpdlssIGFzc29jbGVuWywgZmxhZ3NdXV0pCisKKyAgIFNwZWNpYWxpemVkIHZlcnNpb24gb2YgOm1ldGg6YH5zb2NrZXQuc2VuZG1zZ2AgZm9yIDpjb25zdDpgQUZfQUxHYCBzb2NrZXQuCisgICBTZXQgbW9kZSwgSVYsIEFFQUQgYXNzb2NpYXRlZCBkYXRhIGxlbmd0aCBhbmQgZmxhZ3MgZm9yIDpjb25zdDpgQUZfQUxHYCBzb2NrZXQuCisKKyAgIEF2YWlsYWJpbGl0eTogTGludXggPj0gMi42LjM4CisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAuLiBtZXRob2Q6OiBzb2NrZXQuc2VuZGZpbGUoZmlsZSwgb2Zmc2V0PTAsIGNvdW50PU5vbmUpCiAKICAgIFNlbmQgYSBmaWxlIHVudGlsIEVPRiBpcyByZWFjaGVkIGJ5IHVzaW5nIGhpZ2gtcGVyZm9ybWFuY2UKQEAgLTEzMjUsMjEgKzEzNzksMjkgQEAKICAgIEZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLCBwbGVhc2UgY29uc3VsdCB0aGUgOnJlZjpgbm90ZXMgb24gc29ja2V0IHRpbWVvdXRzIDxzb2NrZXQtdGltZW91dHM+YC4KIAogCi0uLiBtZXRob2Q6OiBzb2NrZXQuc2V0c29ja29wdChsZXZlbCwgb3B0bmFtZSwgdmFsdWUpCisuLiBtZXRob2Q6OiBzb2NrZXQuc2V0c29ja29wdChsZXZlbCwgb3B0bmFtZSwgdmFsdWU6IGludCkKKy4uIG1ldGhvZDo6IHNvY2tldC5zZXRzb2Nrb3B0KGxldmVsLCBvcHRuYW1lLCB2YWx1ZTogYnVmZmVyKQorLi4gbWV0aG9kOjogc29ja2V0LnNldHNvY2tvcHQobGV2ZWwsIG9wdG5hbWUsIE5vbmUsIG9wdGxlbjogaW50KQogCiAgICAuLiBpbmRleDo6IG1vZHVsZTogc3RydWN0CiAKICAgIFNldCB0aGUgdmFsdWUgb2YgdGhlIGdpdmVuIHNvY2tldCBvcHRpb24gKHNlZSB0aGUgVW5peCBtYW51YWwgcGFnZQogICAgOm1hbnBhZ2U6YHNldHNvY2tvcHQoMilgKS4gIFRoZSBuZWVkZWQgc3ltYm9saWMgY29uc3RhbnRzIGFyZSBkZWZpbmVkIGluIHRoZQotICAgOm1vZDpgc29ja2V0YCBtb2R1bGUgKDpjb25zdDpgU09fXCpgIGV0Yy4pLiAgVGhlIHZhbHVlIGNhbiBiZSBhbiBpbnRlZ2VyIG9yCi0gICBhIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAgcmVwcmVzZW50aW5nIGEgYnVmZmVyLiAgSW4gdGhlIGxhdHRlciBjYXNlIGl0IGlzCi0gICB1cCB0byB0aGUgY2FsbGVyIHRvCi0gICBlbnN1cmUgdGhhdCB0aGUgYnl0ZXN0cmluZyBjb250YWlucyB0aGUgcHJvcGVyIGJpdHMgKHNlZSB0aGUgb3B0aW9uYWwgYnVpbHQtaW4KLSAgIG1vZHVsZSA6bW9kOmBzdHJ1Y3RgIGZvciBhIHdheSB0byBlbmNvZGUgQyBzdHJ1Y3R1cmVzIGFzIGJ5dGVzdHJpbmdzKS4KKyAgIDptb2Q6YHNvY2tldGAgbW9kdWxlICg6Y29uc3Q6YFNPX1wqYCBldGMuKS4gIFRoZSB2YWx1ZSBjYW4gYmUgYW4gaW50ZWdlciwKKyAgIGBgTm9uZWBgIG9yIGEgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCByZXByZXNlbnRpbmcgYSBidWZmZXIuIEluIHRoZSBsYXRlcgorICAgY2FzZSBpdCBpcyB1cCB0byB0aGUgY2FsbGVyIHRvIGVuc3VyZSB0aGF0IHRoZSBieXRlc3RyaW5nIGNvbnRhaW5zIHRoZQorICAgcHJvcGVyIGJpdHMgKHNlZSB0aGUgb3B0aW9uYWwgYnVpbHQtaW4gbW9kdWxlIDptb2Q6YHN0cnVjdGAgZm9yIGEgd2F5IHRvCisgICBlbmNvZGUgQyBzdHJ1Y3R1cmVzIGFzIGJ5dGVzdHJpbmdzKS4gV2hlbiB2YWx1ZSBpcyBzZXQgdG8gYGBOb25lYGAsCisgICBvcHRsZW4gYXJndW1lbnQgaXMgcmVxdWlyZWQuIEl0J3MgZXF1aXZhbGVudCB0byBjYWxsIHNldHNvY2tvcHQgQworICAgZnVuY3Rpb24gd2l0aCBvcHR2YWw9TlVMTCBhbmQgb3B0bGVuPW9wdGxlbi4KKwogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQogICAgICAgV3JpdGFibGUgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCBpcyBub3cgYWNjZXB0ZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBzZXRzb2Nrb3B0KGxldmVsLCBvcHRuYW1lLCBOb25lLCBvcHRsZW46IGludCkgZm9ybSBhZGRlZC4KKwogCiAuLiBtZXRob2Q6OiBzb2NrZXQuc2h1dGRvd24oaG93KQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zb2NrZXRzZXJ2ZXIucnN0IGIvRG9jL2xpYnJhcnkvc29ja2V0c2VydmVyLnJzdAppbmRleCAwODdmNGUwLi4yMThhMzFjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zb2NrZXRzZXJ2ZXIucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NvY2tldHNlcnZlci5yc3QKQEAgLTUyLDExICs1MiwxMiBAQAogb3ZlcnJpZGluZyBpdHMgOm1ldGg6YH5CYXNlUmVxdWVzdEhhbmRsZXIuaGFuZGxlYCBtZXRob2Q7CiB0aGlzIG1ldGhvZCB3aWxsIHByb2Nlc3MgaW5jb21pbmcKIHJlcXVlc3RzLiAgU2Vjb25kLCB5b3UgbXVzdCBpbnN0YW50aWF0ZSBvbmUgb2YgdGhlIHNlcnZlciBjbGFzc2VzLCBwYXNzaW5nIGl0Ci10aGUgc2VydmVyJ3MgYWRkcmVzcyBhbmQgdGhlIHJlcXVlc3QgaGFuZGxlciBjbGFzcy4gIFRoZW4gY2FsbCB0aGUKK3RoZSBzZXJ2ZXIncyBhZGRyZXNzIGFuZCB0aGUgcmVxdWVzdCBoYW5kbGVyIGNsYXNzLiBJdCBpcyByZWNvbW1lbmRlZCB0byB1c2UKK3RoZSBzZXJ2ZXIgaW4gYSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50LiBUaGVuIGNhbGwgdGhlCiA6bWV0aDpgfkJhc2VTZXJ2ZXIuaGFuZGxlX3JlcXVlc3RgIG9yCiA6bWV0aDpgfkJhc2VTZXJ2ZXIuc2VydmVfZm9yZXZlcmAgbWV0aG9kIG9mIHRoZSBzZXJ2ZXIgb2JqZWN0IHRvCiBwcm9jZXNzIG9uZSBvciBtYW55IHJlcXVlc3RzLiAgRmluYWxseSwgY2FsbCA6bWV0aDpgfkJhc2VTZXJ2ZXIuc2VydmVyX2Nsb3NlYAotdG8gY2xvc2UgdGhlIHNvY2tldC4KK3RvIGNsb3NlIHRoZSBzb2NrZXQgKHVubGVzcyB5b3UgdXNlZCBhIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQpLgogCiBXaGVuIGluaGVyaXRpbmcgZnJvbSA6Y2xhc3M6YFRocmVhZGluZ01peEluYCBmb3IgdGhyZWFkZWQgY29ubmVjdGlvbiBiZWhhdmlvciwKIHlvdSBzaG91bGQgZXhwbGljaXRseSBkZWNsYXJlIGhvdyB5b3Ugd2FudCB5b3VyIHRocmVhZHMgdG8gYmVoYXZlIG9uIGFuIGFicnVwdApAQCAtMTExLDYgKzExMiw4IEBACiAgICA6Y2xhc3M6YFVEUFNlcnZlcmAuICBTZXR0aW5nIHRoZSB2YXJpb3VzIGF0dHJpYnV0ZXMgYWxzbyBjaGFuZ2VzIHRoZQogICAgYmVoYXZpb3Igb2YgdGhlIHVuZGVybHlpbmcgc2VydmVyIG1lY2hhbmlzbS4KIAorICAgOmNsYXNzOmBGb3JraW5nTWl4SW5gIGFuZCB0aGUgRm9ya2luZyBjbGFzc2VzIG1lbnRpb25lZCBiZWxvdyBhcmUKKyAgIG9ubHkgYXZhaWxhYmxlIG9uIFBPU0lYIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnQgOmZ1bmM6YH5vcy5mb3JrYC4KIAogLi4gY2xhc3M6OiBGb3JraW5nVENQU2VydmVyCiAgICAgICAgICAgIEZvcmtpbmdVRFBTZXJ2ZXIKQEAgLTMwNCw3ICszMDcsMTEgQEAKICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGlmIHRoZSA6bWV0aDpgfkJhc2VSZXF1ZXN0SGFuZGxlci5oYW5kbGVgCiAgICAgICBtZXRob2Qgb2YgYSA6YXR0cjpgUmVxdWVzdEhhbmRsZXJDbGFzc2AgaW5zdGFuY2UgcmFpc2VzCiAgICAgICBhbiBleGNlcHRpb24uICBUaGUgZGVmYXVsdCBhY3Rpb24gaXMgdG8gcHJpbnQgdGhlIHRyYWNlYmFjayB0bwotICAgICAgc3RhbmRhcmQgb3V0cHV0IGFuZCBjb250aW51ZSBoYW5kbGluZyBmdXJ0aGVyIHJlcXVlc3RzLgorICAgICAgc3RhbmRhcmQgZXJyb3IgYW5kIGNvbnRpbnVlIGhhbmRsaW5nIGZ1cnRoZXIgcmVxdWVzdHMuCisKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICAgICBOb3cgb25seSBjYWxsZWQgZm9yIGV4Y2VwdGlvbnMgZGVyaXZlZCBmcm9tIHRoZSA6ZXhjOmBFeGNlcHRpb25gCisgICAgICAgICBjbGFzcy4KIAogCiAgICAuLiBtZXRob2Q6OiBoYW5kbGVfdGltZW91dCgpCkBAIC0zNDksNiArMzU2LDExIEBACiAgICAgICBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGFsd2F5cyByZXR1cm5zIDpjb25zdDpgVHJ1ZWAuCiAKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFN1cHBvcnQgZm9yIHRoZSA6dGVybTpgY29udGV4dCBtYW5hZ2VyYCBwcm90b2NvbCB3YXMgYWRkZWQuICBFeGl0aW5nIHRoZQorICAgICAgY29udGV4dCBtYW5hZ2VyIGlzIGVxdWl2YWxlbnQgdG8gY2FsbGluZyA6bWV0aDpgc2VydmVyX2Nsb3NlYC4KKworCiBSZXF1ZXN0IEhhbmRsZXIgT2JqZWN0cwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApAQCAtMzk3LDYgKzQwOSwxNSBAQAogICAgcmVhZCBvciB3cml0dGVuLCByZXNwZWN0aXZlbHksIHRvIGdldCB0aGUgcmVxdWVzdCBkYXRhIG9yIHJldHVybiBkYXRhCiAgICB0byB0aGUgY2xpZW50LgogCisgICBUaGUgOmF0dHI6YHJmaWxlYCBhdHRyaWJ1dGVzIG9mIGJvdGggY2xhc3NlcyBzdXBwb3J0IHRoZQorICAgOmNsYXNzOmBpby5CdWZmZXJlZElPQmFzZWAgcmVhZGFibGUgaW50ZXJmYWNlLCBhbmQKKyAgIDphdHRyOmBEYXRhZ3JhbVJlcXVlc3RIYW5kbGVyLndmaWxlYCBzdXBwb3J0cyB0aGUKKyAgIDpjbGFzczpgaW8uQnVmZmVyZWRJT0Jhc2VgIHdyaXRhYmxlIGludGVyZmFjZS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIDphdHRyOmBTdHJlYW1SZXF1ZXN0SGFuZGxlci53ZmlsZWAgYWxzbyBzdXBwb3J0cyB0aGUKKyAgICAgIDpjbGFzczpgaW8uQnVmZmVyZWRJT0Jhc2VgIHdyaXRhYmxlIGludGVyZmFjZS4KKwogCiBFeGFtcGxlcwogLS0tLS0tLS0KQEAgLTQyOSwxMSArNDUwLDEwIEBACiAgICAgICAgSE9TVCwgUE9SVCA9ICJsb2NhbGhvc3QiLCA5OTk5CiAKICAgICAgICAjIENyZWF0ZSB0aGUgc2VydmVyLCBiaW5kaW5nIHRvIGxvY2FsaG9zdCBvbiBwb3J0IDk5OTkKLSAgICAgICBzZXJ2ZXIgPSBzb2NrZXRzZXJ2ZXIuVENQU2VydmVyKChIT1NULCBQT1JUKSwgTXlUQ1BIYW5kbGVyKQotCi0gICAgICAgIyBBY3RpdmF0ZSB0aGUgc2VydmVyOyB0aGlzIHdpbGwga2VlcCBydW5uaW5nIHVudGlsIHlvdQotICAgICAgICMgaW50ZXJydXB0IHRoZSBwcm9ncmFtIHdpdGggQ3RybC1DCi0gICAgICAgc2VydmVyLnNlcnZlX2ZvcmV2ZXIoKQorICAgICAgIHdpdGggc29ja2V0c2VydmVyLlRDUFNlcnZlcigoSE9TVCwgUE9SVCksIE15VENQSGFuZGxlcikgYXMgc2VydmVyOgorICAgICAgICAgICAjIEFjdGl2YXRlIHRoZSBzZXJ2ZXI7IHRoaXMgd2lsbCBrZWVwIHJ1bm5pbmcgdW50aWwgeW91CisgICAgICAgICAgICMgaW50ZXJydXB0IHRoZSBwcm9ncmFtIHdpdGggQ3RybC1DCisgICAgICAgICAgIHNlcnZlci5zZXJ2ZV9mb3JldmVyKCkKIAogQW4gYWx0ZXJuYXRpdmUgcmVxdWVzdCBoYW5kbGVyIGNsYXNzIHRoYXQgbWFrZXMgdXNlIG9mIHN0cmVhbXMgKGZpbGUtbGlrZQogb2JqZWN0cyB0aGF0IHNpbXBsaWZ5IGNvbW11bmljYXRpb24gYnkgcHJvdmlkaW5nIHRoZSBzdGFuZGFyZCBmaWxlIGludGVyZmFjZSk6OgpAQCAtNTI1LDggKzU0NSw4IEBACiAKICAgIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgICAgSE9TVCwgUE9SVCA9ICJsb2NhbGhvc3QiLCA5OTk5Ci0gICAgICAgc2VydmVyID0gc29ja2V0c2VydmVyLlVEUFNlcnZlcigoSE9TVCwgUE9SVCksIE15VURQSGFuZGxlcikKLSAgICAgICBzZXJ2ZXIuc2VydmVfZm9yZXZlcigpCisgICAgICAgd2l0aCBzb2NrZXRzZXJ2ZXIuVURQU2VydmVyKChIT1NULCBQT1JUKSwgTXlVRFBIYW5kbGVyKSBhcyBzZXJ2ZXI6CisgICAgICAgICAgIHNlcnZlci5zZXJ2ZV9mb3JldmVyKCkKIAogVGhpcyBpcyB0aGUgY2xpZW50IHNpZGU6OgogCkBAIC01ODUsMjIgKzYwNSwyMiBAQAogICAgICAgIEhPU1QsIFBPUlQgPSAibG9jYWxob3N0IiwgMAogCiAgICAgICAgc2VydmVyID0gVGhyZWFkZWRUQ1BTZXJ2ZXIoKEhPU1QsIFBPUlQpLCBUaHJlYWRlZFRDUFJlcXVlc3RIYW5kbGVyKQotICAgICAgIGlwLCBwb3J0ID0gc2VydmVyLnNlcnZlcl9hZGRyZXNzCisgICAgICAgd2l0aCBzZXJ2ZXI6CisgICAgICAgICAgIGlwLCBwb3J0ID0gc2VydmVyLnNlcnZlcl9hZGRyZXNzCiAKLSAgICAgICAjIFN0YXJ0IGEgdGhyZWFkIHdpdGggdGhlIHNlcnZlciAtLSB0aGF0IHRocmVhZCB3aWxsIHRoZW4gc3RhcnQgb25lCi0gICAgICAgIyBtb3JlIHRocmVhZCBmb3IgZWFjaCByZXF1ZXN0Ci0gICAgICAgc2VydmVyX3RocmVhZCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNlcnZlci5zZXJ2ZV9mb3JldmVyKQotICAgICAgICMgRXhpdCB0aGUgc2VydmVyIHRocmVhZCB3aGVuIHRoZSBtYWluIHRocmVhZCB0ZXJtaW5hdGVzCi0gICAgICAgc2VydmVyX3RocmVhZC5kYWVtb24gPSBUcnVlCi0gICAgICAgc2VydmVyX3RocmVhZC5zdGFydCgpCi0gICAgICAgcHJpbnQoIlNlcnZlciBsb29wIHJ1bm5pbmcgaW4gdGhyZWFkOiIsIHNlcnZlcl90aHJlYWQubmFtZSkKKyAgICAgICAgICAgIyBTdGFydCBhIHRocmVhZCB3aXRoIHRoZSBzZXJ2ZXIgLS0gdGhhdCB0aHJlYWQgd2lsbCB0aGVuIHN0YXJ0IG9uZQorICAgICAgICAgICAjIG1vcmUgdGhyZWFkIGZvciBlYWNoIHJlcXVlc3QKKyAgICAgICAgICAgc2VydmVyX3RocmVhZCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNlcnZlci5zZXJ2ZV9mb3JldmVyKQorICAgICAgICAgICAjIEV4aXQgdGhlIHNlcnZlciB0aHJlYWQgd2hlbiB0aGUgbWFpbiB0aHJlYWQgdGVybWluYXRlcworICAgICAgICAgICBzZXJ2ZXJfdGhyZWFkLmRhZW1vbiA9IFRydWUKKyAgICAgICAgICAgc2VydmVyX3RocmVhZC5zdGFydCgpCisgICAgICAgICAgIHByaW50KCJTZXJ2ZXIgbG9vcCBydW5uaW5nIGluIHRocmVhZDoiLCBzZXJ2ZXJfdGhyZWFkLm5hbWUpCiAKLSAgICAgICBjbGllbnQoaXAsIHBvcnQsICJIZWxsbyBXb3JsZCAxIikKLSAgICAgICBjbGllbnQoaXAsIHBvcnQsICJIZWxsbyBXb3JsZCAyIikKLSAgICAgICBjbGllbnQoaXAsIHBvcnQsICJIZWxsbyBXb3JsZCAzIikKKyAgICAgICAgICAgY2xpZW50KGlwLCBwb3J0LCAiSGVsbG8gV29ybGQgMSIpCisgICAgICAgICAgIGNsaWVudChpcCwgcG9ydCwgIkhlbGxvIFdvcmxkIDIiKQorICAgICAgICAgICBjbGllbnQoaXAsIHBvcnQsICJIZWxsbyBXb3JsZCAzIikKIAotICAgICAgIHNlcnZlci5zaHV0ZG93bigpCi0gICAgICAgc2VydmVyLnNlcnZlcl9jbG9zZSgpCisgICAgICAgICAgIHNlcnZlci5zaHV0ZG93bigpCiAKIAogVGhlIG91dHB1dCBvZiB0aGUgZXhhbXBsZSBzaG91bGQgbG9vayBzb21ldGhpbmcgbGlrZSB0aGlzOgpAQCAtNjE2LDMgKzYzNiw1IEBACiAKIFRoZSA6Y2xhc3M6YEZvcmtpbmdNaXhJbmAgY2xhc3MgaXMgdXNlZCBpbiB0aGUgc2FtZSB3YXksIGV4Y2VwdCB0aGF0IHRoZSBzZXJ2ZXIKIHdpbGwgc3Bhd24gYSBuZXcgcHJvY2VzcyBmb3IgZWFjaCByZXF1ZXN0LgorQXZhaWxhYmxlIG9ubHkgb24gUE9TSVggcGxhdGZvcm1zIHRoYXQgc3VwcG9ydCA6ZnVuYzpgfm9zLmZvcmtgLgorCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zcHdkLnJzdCBiL0RvYy9saWJyYXJ5L3Nwd2QucnN0CmluZGV4IGZkM2M5YWQuLmM2Y2FkMmEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3Nwd2QucnN0CisrKyBiL0RvYy9saWJyYXJ5L3Nwd2QucnN0CkBAIC01NSw2ICs1NSw5IEBACiAKICAgIFJldHVybiB0aGUgc2hhZG93IHBhc3N3b3JkIGRhdGFiYXNlIGVudHJ5IGZvciB0aGUgZ2l2ZW4gdXNlciBuYW1lLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgUmFpc2VzIGEgOmV4YzpgUGVybWlzc2lvbkVycm9yYCBpbnN0ZWFkIG9mIDpleGM6YEtleUVycm9yYCBpZiB0aGUgdXNlcgorICAgICAgZG9lc24ndCBoYXZlIHByaXZpbGVnZXMuCiAKIC4uIGZ1bmN0aW9uOjogZ2V0c3BhbGwoKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zcWxpdGUzLnJzdCBiL0RvYy9saWJyYXJ5L3NxbGl0ZTMucnN0CmluZGV4IDg0YTQ3ODMuLjU2MzU1NzcgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NxbGl0ZTMucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NxbGl0ZTMucnN0CkBAIC02MjksOSArNjI5LDE2IEBACiAgICAuLiBhdHRyaWJ1dGU6OiBsYXN0cm93aWQKIAogICAgICAgVGhpcyByZWFkLW9ubHkgYXR0cmlidXRlIHByb3ZpZGVzIHRoZSByb3dpZCBvZiB0aGUgbGFzdCBtb2RpZmllZCByb3cuIEl0IGlzCi0gICAgICBvbmx5IHNldCBpZiB5b3UgaXNzdWVkIGFuIGBgSU5TRVJUYGAgc3RhdGVtZW50IHVzaW5nIHRoZSA6bWV0aDpgZXhlY3V0ZWAKLSAgICAgIG1ldGhvZC4gRm9yIG9wZXJhdGlvbnMgb3RoZXIgdGhhbiBgYElOU0VSVGBgIG9yIHdoZW4gOm1ldGg6YGV4ZWN1dGVtYW55YCBpcwotICAgICAgY2FsbGVkLCA6YXR0cjpgbGFzdHJvd2lkYCBpcyBzZXQgdG8gOmNvbnN0OmBOb25lYC4KKyAgICAgIG9ubHkgc2V0IGlmIHlvdSBpc3N1ZWQgYW4gYGBJTlNFUlRgYCBvciBhIGBgUkVQTEFDRWBgIHN0YXRlbWVudCB1c2luZyB0aGUKKyAgICAgIDptZXRoOmBleGVjdXRlYCBtZXRob2QuICBGb3Igb3BlcmF0aW9ucyBvdGhlciB0aGFuIGBgSU5TRVJUYGAgb3IKKyAgICAgIGBgUkVQTEFDRWBgIG9yIHdoZW4gOm1ldGg6YGV4ZWN1dGVtYW55YCBpcyBjYWxsZWQsIDphdHRyOmBsYXN0cm93aWRgIGlzCisgICAgICBzZXQgdG8gOmNvbnN0OmBOb25lYC4KKworICAgICAgSWYgdGhlIGBgSU5TRVJUYGAgb3IgYGBSRVBMQUNFYGAgc3RhdGVtZW50IGZhaWxlZCB0byBpbnNlcnQgdGhlIHByZXZpb3VzCisgICAgICBzdWNjZXNzZnVsIHJvd2lkIGlzIHJldHVybmVkLgorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgdGhlIGBgUkVQTEFDRWBgIHN0YXRlbWVudC4KIAogICAgLi4gYXR0cmlidXRlOjogZGVzY3JpcHRpb24KIApAQCAtOTE4LDkgKzkyNSw3IEBACiAKIEJ5IGRlZmF1bHQsIHRoZSA6bW9kOmBzcWxpdGUzYCBtb2R1bGUgb3BlbnMgdHJhbnNhY3Rpb25zIGltcGxpY2l0bHkgYmVmb3JlIGEKIERhdGEgTW9kaWZpY2F0aW9uIExhbmd1YWdlIChETUwpICBzdGF0ZW1lbnQgKGkuZS4KLWBgSU5TRVJUYGAvYGBVUERBVEVgYC9gYERFTEVURWBgL2BgUkVQTEFDRWBgKSwgYW5kIGNvbW1pdHMgdHJhbnNhY3Rpb25zCi1pbXBsaWNpdGx5IGJlZm9yZSBhIG5vbi1ETUwsIG5vbi1xdWVyeSBzdGF0ZW1lbnQgKGkuIGUuCi1hbnl0aGluZyBvdGhlciB0aGFuIGBgU0VMRUNUYGAgb3IgdGhlIGFmb3JlbWVudGlvbmVkKS4KK2BgSU5TRVJUYGAvYGBVUERBVEVgYC9gYERFTEVURWBgL2BgUkVQTEFDRWBgKS4KIAogU28gaWYgeW91IGFyZSB3aXRoaW4gYSB0cmFuc2FjdGlvbiBhbmQgaXNzdWUgYSBjb21tYW5kIGxpa2UgYGBDUkVBVEUgVEFCTEUKIC4uLmBgLCBgYFZBQ1VVTWBgLCBgYFBSQUdNQWBgLCB0aGUgOm1vZDpgc3FsaXRlM2AgbW9kdWxlIHdpbGwgY29tbWl0IGltcGxpY2l0bHkKQEAgLTk0MCw2ICs5NDUsOSBAQAogc3RhdGVtZW50LCBvciBzZXQgaXQgdG8gb25lIG9mIFNRTGl0ZSdzIHN1cHBvcnRlZCBpc29sYXRpb24gbGV2ZWxzOiAiREVGRVJSRUQiLAogIklNTUVESUFURSIgb3IgIkVYQ0xVU0lWRSIuCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICA6bW9kOmBzcWxpdGUzYCB1c2VkIHRvIGltcGxpY2l0bHkgY29tbWl0IGFuIG9wZW4gdHJhbnNhY3Rpb24gYmVmb3JlIERETAorICAgc3RhdGVtZW50cy4gIFRoaXMgaXMgbm8gbG9uZ2VyIHRoZSBjYXNlLgogCiAKIFVzaW5nIDptb2Q6YHNxbGl0ZTNgIGVmZmljaWVudGx5CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zc2wucnN0IGIvRG9jL2xpYnJhcnkvc3NsLnJzdAppbmRleCBhMmYwMDgzLi5lZWU0ODQ5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zc2wucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NzbC5yc3QKQEAgLTQ5LDYgKzQ5LDEyIEBACiBoZWxwcyBtYW5hZ2Ugc2V0dGluZ3MgYW5kIGNlcnRpZmljYXRlcywgd2hpY2ggY2FuIHRoZW4gYmUgaW5oZXJpdGVkCiBieSBTU0wgc29ja2V0cyBjcmVhdGVkIHRocm91Z2ggdGhlIDptZXRoOmBTU0xDb250ZXh0LndyYXBfc29ja2V0YCBtZXRob2QuCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisKKyAgIE9wZW5TU0wgMC45LjgsIDEuMC4wIGFuZCAxLjAuMSBhcmUgZGVwcmVjYXRlZCBhbmQgbm8gbG9uZ2VyIHN1cHBvcnRlZC4KKyAgIEluIHRoZSBmdXR1cmUgdGhlIHNzbCBtb2R1bGUgd2lsbCByZXF1aXJlIGF0IGxlYXN0IE9wZW5TU0wgMS4wLjIgb3IKKyAgIDEuMS4wLgorCiAKIEZ1bmN0aW9ucywgQ29uc3RhbnRzLCBhbmQgRXhjZXB0aW9ucwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xODYsMTYgKzE5MiwyMCBAQAogCiAgICAgIC4uIHRhYmxlOjoKIAotICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09ICA9PT09PT09PT0gID09PT09PT09PT0gID09PT09PT09PSAgPT09PT09PT09PT0gID09PT09PT09PT09Ci0gICAgICAgICpjbGllbnQqIC8gKipzZXJ2ZXIqKiAgICAqKlNTTHYyKiogICoqU1NMdjMqKiAgKipUTFMqKiAgICAgKipUTFN2MSoqICAqKlRMU3YxLjEqKiAgKipUTFN2MS4yKioKLSAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIC0tLS0tLS0tLSAgLS0tLS0tLS0tICAtLS0tLS0tLS0tICAtLS0tLS0tLS0gIC0tLS0tLS0tLS0tICAtLS0tLS0tLS0tLQotICAgICAgICAqU1NMdjIqICAgICAgICAgICAgICAgICAgICB5ZXMgICAgICAgIG5vICAgICAgICAgeWVzICAgICAgICAgbm8gICAgICAgICBubyAgICAgICAgIG5vCi0gICAgICAgICpTU0x2MyogICAgICAgICAgICAgICAgICAgIG5vICAgICAgICAgeWVzICAgICAgICB5ZXMgICAgICAgICBubyAgICAgICAgIG5vICAgICAgICAgbm8KLSAgICAgICAgKlRMUyogKCpTU0x2MjMqKSAgICAgICAgICAgbm8gICAgICAgICB5ZXMgICAgICAgIHllcyAgICAgICAgIHllcyAgICAgICAgeWVzICAgICAgICB5ZXMKLSAgICAgICAgKlRMU3YxKiAgICAgICAgICAgICAgICAgICAgbm8gICAgICAgICBubyAgICAgICAgIHllcyAgICAgICAgIHllcyAgICAgICAgbm8gICAgICAgICBubwotICAgICAgICAqVExTdjEuMSogICAgICAgICAgICAgICAgICBubyAgICAgICAgIG5vICAgICAgICAgeWVzICAgICAgICAgbm8gICAgICAgICB5ZXMgICAgICAgIG5vCi0gICAgICAgICpUTFN2MS4yKiAgICAgICAgICAgICAgICAgIG5vICAgICAgICAgbm8gICAgICAgICB5ZXMgICAgICAgICBubyAgICAgICAgIG5vICAgICAgICAgeWVzCi0gICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT0gID09PT09PT09PSAgPT09PT09PT09PSAgPT09PT09PT09ICA9PT09PT09PT09PSAgPT09PT09PT09PT0KKyAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PSAgPT09PT09PT09PT09ICA9PT09PT09PT09PT09ICA9PT09PT09PT0gID09PT09PT09PT09ICA9PT09PT09PT09PQorICAgICAgICAqY2xpZW50KiAvICoqc2VydmVyKiogICAgKipTU0x2MioqICAgICAqKlNTTHYzKiogICAgICoqVExTKiogICAgICAgICoqVExTdjEqKiAgKipUTFN2MS4xKiogICoqVExTdjEuMioqCisgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAtLS0tLS0tLS0tLS0gIC0tLS0tLS0tLS0tLSAgLS0tLS0tLS0tLS0tLSAgLS0tLS0tLS0tICAtLS0tLS0tLS0tLSAgLS0tLS0tLS0tLS0KKyAgICAgICAgKlNTTHYyKiAgICAgICAgICAgICAgICAgICAgeWVzICAgICAgICAgICBubyAgICAgICAgICAgIG5vIFsxXV8gICAgICAgIG5vICAgICAgICAgbm8gICAgICAgICBubworICAgICAgICAqU1NMdjMqICAgICAgICAgICAgICAgICAgICBubyAgICAgICAgICAgIHllcyAgICAgICAgICAgbm8gWzJdXyAgICAgICAgbm8gICAgICAgICBubyAgICAgICAgIG5vCisgICAgICAgICpUTFMqICgqU1NMdjIzKikgICAgICAgICAgIG5vIFsxXV8gICAgICAgbm8gWzJdXyAgICAgICB5ZXMgICAgICAgICAgICB5ZXMgICAgICAgIHllcyAgICAgICAgeWVzCisgICAgICAgICpUTFN2MSogICAgICAgICAgICAgICAgICAgIG5vICAgICAgICAgICAgbm8gICAgICAgICAgICB5ZXMgICAgICAgICAgICB5ZXMgICAgICAgIG5vICAgICAgICAgbm8KKyAgICAgICAgKlRMU3YxLjEqICAgICAgICAgICAgICAgICAgbm8gICAgICAgICAgICBubyAgICAgICAgICAgIHllcyAgICAgICAgICAgIG5vICAgICAgICAgeWVzICAgICAgICBubworICAgICAgICAqVExTdjEuMiogICAgICAgICAgICAgICAgICBubyAgICAgICAgICAgIG5vICAgICAgICAgICAgeWVzICAgICAgICAgICAgbm8gICAgICAgICBubyAgICAgICAgIHllcworICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09ICA9PT09PT09PT09PT0gID09PT09PT09PT09PT0gID09PT09PT09PSAgPT09PT09PT09PT0gID09PT09PT09PT09CisKKyAgIC4uIHJ1YnJpYzo6IEZvb3Rub3RlcworICAgLi4gWzFdIDpjbGFzczpgU1NMQ29udGV4dGAgZGlzYWJsZXMgU1NMdjIgd2l0aCA6ZGF0YTpgT1BfTk9fU1NMdjJgIGJ5IGRlZmF1bHQuCisgICAuLiBbMl0gOmNsYXNzOmBTU0xDb250ZXh0YCBkaXNhYmxlcyBTU0x2MyB3aXRoIDpkYXRhOmBPUF9OT19TU0x2M2AgYnkgZGVmYXVsdC4KIAogICAgLi4gbm90ZTo6CiAKQEAgLTIyNCw3ICsyMzQsNiBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIE5ldyBvcHRpb25hbCBhcmd1bWVudCAqY2lwaGVycyouCiAKLQogQ29udGV4dCBjcmVhdGlvbgogXl5eXl5eXl5eXl5eXl5eXgogCkBAIC0yNzksNyArMjg4LDcgQEAKIAogICAgICBSQzQgd2FzIGRyb3BwZWQgZnJvbSB0aGUgZGVmYXVsdCBjaXBoZXIgc3RyaW5nLgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNS4zCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgogCiAgICAgIENoYUNoYTIwL1BvbHkxMzA1IHdhcyBhZGRlZCB0byB0aGUgZGVmYXVsdCBjaXBoZXIgc3RyaW5nLgogCkBAIC0zMjIsNyArMzMxLDcgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKLSAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjUuMworICAgLi4gZGVwcmVjYXRlZDo6IDMuNgogCiAgICAgICBPcGVuU1NMIGhhcyBkZXByZWNhdGVkIDpmdW5jOmBzc2wuUkFORF9wc2V1ZG9fYnl0ZXNgLCB1c2UKICAgICAgIDpmdW5jOmBzc2wuUkFORF9ieXRlc2AgaW5zdGVhZC4KQEAgLTUwOSw2ICs1MTgsMTAgQEAKIENvbnN0YW50cwogXl5eXl5eXl5eCiAKKyAgIEFsbCBjb25zdGFudHMgYXJlIG5vdyA6Y2xhc3M6YGVudW0uSW50RW51bWAgb3IgOmNsYXNzOmBlbnVtLkludEZsYWdgIGNvbGxlY3Rpb25zLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogLi4gZGF0YTo6IENFUlRfTk9ORQogCiAgICBQb3NzaWJsZSB2YWx1ZSBmb3IgOmF0dHI6YFNTTENvbnRleHQudmVyaWZ5X21vZGVgLCBvciB0aGUgYGBjZXJ0X3JlcXNgYApAQCAtNTQyLDYgKzU1NSwxMiBAQAogICAgYmUgcGFzc2VkLCBlaXRoZXIgdG8gOm1ldGg6YFNTTENvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zYCBvciBhcyBhCiAgICB2YWx1ZSBvZiB0aGUgYGBjYV9jZXJ0c2BgIHBhcmFtZXRlciB0byA6ZnVuYzpgd3JhcF9zb2NrZXRgLgogCisuLiBjbGFzczo6IFZlcmlmeU1vZGUKKworICAgOmNsYXNzOmBlbnVtLkludEVudW1gIGNvbGxlY3Rpb24gb2YgQ0VSVF8qIGNvbnN0YW50cy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIC4uIGRhdGE6OiBWRVJJRllfREVGQVVMVAogCiAgICBQb3NzaWJsZSB2YWx1ZSBmb3IgOmF0dHI6YFNTTENvbnRleHQudmVyaWZ5X2ZsYWdzYC4gSW4gdGhpcyBtb2RlLCBjZXJ0aWZpY2F0ZQpAQCAtNTgyLDE4ICs2MDEsNDAgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy40LjQKIAorLi4gY2xhc3M6OiBWZXJpZnlGbGFncworCisgICA6Y2xhc3M6YGVudW0uSW50RmxhZ2AgY29sbGVjdGlvbiBvZiBWRVJJRllfKiBjb25zdGFudHMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAuLiBkYXRhOjogUFJPVE9DT0xfVExTCiAKICAgIFNlbGVjdHMgdGhlIGhpZ2hlc3QgcHJvdG9jb2wgdmVyc2lvbiB0aGF0IGJvdGggdGhlIGNsaWVudCBhbmQgc2VydmVyIHN1cHBvcnQuCiAgICBEZXNwaXRlIHRoZSBuYW1lLCB0aGlzIG9wdGlvbiBjYW4gc2VsZWN0ICJUTFMiIHByb3RvY29scyBhcyB3ZWxsIGFzICJTU0wiLgogCi0gICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUuMworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKy4uIGRhdGE6OiBQUk9UT0NPTF9UTFNfQ0xJRU5UCisKKyAgIEF1dG8tbmVnb3RpYXRlIHRoZSB0aGUgaGlnaGVzdCBwcm90b2NvbCB2ZXJzaW9uIGxpa2UgOmRhdGE6YFBST1RPQ09MX1NTTHYyM2AsCisgICBidXQgb25seSBzdXBwb3J0IGNsaWVudC1zaWRlIDpjbGFzczpgU1NMU29ja2V0YCBjb25uZWN0aW9ucy4gVGhlIHByb3RvY29sCisgICBlbmFibGVzIDpkYXRhOmBDRVJUX1JFUVVJUkVEYCBhbmQgOmF0dHI6YH5TU0xDb250ZXh0LmNoZWNrX2hvc3RuYW1lYCBieQorICAgZGVmYXVsdC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKy4uIGRhdGE6OiBQUk9UT0NPTF9UTFNfU0VSVkVSCisKKyAgIEF1dG8tbmVnb3RpYXRlIHRoZSB0aGUgaGlnaGVzdCBwcm90b2NvbCB2ZXJzaW9uIGxpa2UgOmRhdGE6YFBST1RPQ09MX1NTTHYyM2AsCisgICBidXQgb25seSBzdXBwb3J0IHNlcnZlci1zaWRlIDpjbGFzczpgU1NMU29ja2V0YCBjb25uZWN0aW9ucy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CiAKIC4uIGRhdGE6OiBQUk9UT0NPTF9TU0x2MjMKIAogICAgQWxpYXMgZm9yIGRhdGE6YFBST1RPQ09MX1RMU2AuCiAKLSAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjUuMworICAgLi4gZGVwcmVjYXRlZDo6IDMuNgogCiAgICAgICBVc2UgZGF0YTpgUFJPVE9DT0xfVExTYCBpbnN0ZWFkLgogCkBAIC02MDgsNyArNjQ5LDcgQEAKIAogICAgICAgU1NMIHZlcnNpb24gMiBpcyBpbnNlY3VyZS4gIEl0cyB1c2UgaXMgaGlnaGx5IGRpc2NvdXJhZ2VkLgogCi0gICAuLiBkZXByZWNhdGVkOjogMy41LjMKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjYKIAogICAgICAgT3BlblNTTCBoYXMgcmVtb3ZlZCBzdXBwb3J0IGZvciBTU0x2Mi4KIApAQCAtNjIzLDcgKzY2NCw3IEBACiAKICAgICAgIFNTTCB2ZXJzaW9uIDMgaXMgaW5zZWN1cmUuICBJdHMgdXNlIGlzIGhpZ2hseSBkaXNjb3VyYWdlZC4KIAotICAgLi4gZGVwcmVjYXRlZDo6IDMuNS4zCisgICAuLiBkZXByZWNhdGVkOjogMy42CiAKICAgICAgIE9wZW5TU0wgaGFzIGRlcHJlY2F0ZWQgYWxsIHZlcnNpb24gc3BlY2lmaWMgcHJvdG9jb2xzLiBVc2UgdGhlIGRlZmF1bHQKICAgICAgIHByb3RvY29sIGRhdGE6YFBST1RPQ09MX1RMU2Agd2l0aCBmbGFncyBsaWtlIGRhdGE6YE9QX05PX1NTTHYzYCBpbnN0ZWFkLgpAQCAtNjMyLDcgKzY3Myw3IEBACiAKICAgIFNlbGVjdHMgVExTIHZlcnNpb24gMS4wIGFzIHRoZSBjaGFubmVsIGVuY3J5cHRpb24gcHJvdG9jb2wuCiAKLSAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjUuMworICAgLi4gZGVwcmVjYXRlZDo6IDMuNgogCiAgICAgICBPcGVuU1NMIGhhcyBkZXByZWNhdGVkIGFsbCB2ZXJzaW9uIHNwZWNpZmljIHByb3RvY29scy4gVXNlIHRoZSBkZWZhdWx0CiAgICAgICBwcm90b2NvbCBkYXRhOmBQUk9UT0NPTF9UTFNgIHdpdGggZmxhZ3MgbGlrZSBkYXRhOmBPUF9OT19TU0x2M2AgaW5zdGVhZC4KQEAgLTY0NCw3ICs2ODUsNyBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAotICAgLi4gZGVwcmVjYXRlZDo6IDMuNS4zCisgICAuLiBkZXByZWNhdGVkOjogMy42CiAKICAgICAgIE9wZW5TU0wgaGFzIGRlcHJlY2F0ZWQgYWxsIHZlcnNpb24gc3BlY2lmaWMgcHJvdG9jb2xzLiBVc2UgdGhlIGRlZmF1bHQKICAgICAgIHByb3RvY29sIGRhdGE6YFBST1RPQ09MX1RMU2Agd2l0aCBmbGFncyBsaWtlIGRhdGE6YE9QX05PX1NTTHYzYCBpbnN0ZWFkLgpAQCAtNjU3LDcgKzY5OCw3IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogCi0gICAuLiBkZXByZWNhdGVkOjogMy41LjMKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjYKIAogICAgICAgT3BlblNTTCBoYXMgZGVwcmVjYXRlZCBhbGwgdmVyc2lvbiBzcGVjaWZpYyBwcm90b2NvbHMuIFVzZSB0aGUgZGVmYXVsdAogICAgICAgcHJvdG9jb2wgZGF0YTpgUFJPVE9DT0xfVExTYCB3aXRoIGZsYWdzIGxpa2UgZGF0YTpgT1BfTk9fU1NMdjNgIGluc3RlYWQuCkBAIC02NzgsNyArNzE5LDcgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKLSAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjUuMworICAgLi4gZGVwcmVjYXRlZDo6IDMuNgogCiAgICAgICBTU0x2MiBpcyBkZXByZWNhdGVkCiAKQEAgLTY5MSw3ICs3MzIsNyBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAotICAgLi4gZGVwcmVjYXRlZDo6IDMuNS4zCisgICAuLiBkZXByZWNhdGVkOjogMy42CiAKICAgICAgIFNTTHYzIGlzIGRlcHJlY2F0ZWQKIApAQCAtNzUxLDYgKzc5MiwxNiBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAorLi4gY2xhc3M6OiBPcHRpb25zCisKKyAgIDpjbGFzczpgZW51bS5JbnRGbGFnYCBjb2xsZWN0aW9uIG9mIE9QXyogY29uc3RhbnRzLgorCisuLiBkYXRhOjogT1BfTk9fVElDS0VUCisKKyAgIFByZXZlbnQgY2xpZW50IHNpZGUgZnJvbSByZXF1ZXN0aW5nIGEgc2Vzc2lvbiB0aWNrZXQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAuLiBkYXRhOjogSEFTX0FMUE4KIAogICAgV2hldGhlciB0aGUgT3BlblNTTCBsaWJyYXJ5IGhhcyBidWlsdC1pbiBzdXBwb3J0IGZvciB0aGUgKkFwcGxpY2F0aW9uLUxheWVyCkBAIC04MzMsNiArODg0LDEyIEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogCisuLiBjbGFzczo6IEFsZXJ0RGVzY3JpcHRpb24KKworICAgOmNsYXNzOmBlbnVtLkludEVudW1gIGNvbGxlY3Rpb24gb2YgQUxFUlRfREVTQ1JJUFRJT05fKiBjb25zdGFudHMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAuLiBkYXRhOjogUHVycG9zZS5TRVJWRVJfQVVUSAogCiAgICBPcHRpb24gZm9yIDpmdW5jOmBjcmVhdGVfZGVmYXVsdF9jb250ZXh0YCBhbmQKQEAgLTg1MSw2ICs5MDgsMTIgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKKy4uIGNsYXNzOjogU1NMRXJyb3JOdW1iZXIKKworICAgOmNsYXNzOmBlbnVtLkludEVudW1gIGNvbGxlY3Rpb24gb2YgU1NMX0VSUk9SXyogY29uc3RhbnRzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogCiBTU0wgU29ja2V0cwogLS0tLS0tLS0tLS0KQEAgLTg4NSw3ICs5NDgsNyBAQAogICAgOnJlZjpgbm90ZXMgb24gbm9uLWJsb2NraW5nIHNvY2tldHMgPHNzbC1ub25ibG9ja2luZz5gLgogCiAgICBVc3VhbGx5LCA6Y2xhc3M6YFNTTFNvY2tldGAgYXJlIG5vdCBjcmVhdGVkIGRpcmVjdGx5LCBidXQgdXNpbmcgdGhlCi0gICA6ZnVuYzpgd3JhcF9zb2NrZXRgIGZ1bmN0aW9uIG9yIHRoZSA6bWV0aDpgU1NMQ29udGV4dC53cmFwX3NvY2tldGAgbWV0aG9kLgorICAgdGhlIDptZXRoOmBTU0xDb250ZXh0LndyYXBfc29ja2V0YCBtZXRob2QuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CiAgICAgICBUaGUgOm1ldGg6YHNlbmRmaWxlYCBtZXRob2Qgd2FzIGFkZGVkLgpAQCAtODk1LDYgKzk1OCwxMCBAQAogICAgICAgYXJlIHJlY2VpdmVkIG9yIHNlbnQuIFRoZSBzb2NrZXQgdGltZW91dCBpcyBub3cgdG8gbWF4aW11bSB0b3RhbCBkdXJhdGlvbgogICAgICAgb2YgdGhlIHNodXRkb3duLgogCisgICAuLiBkZXByZWNhdGVkOjogMy42CisgICAgICBJdCBpcyBkZXByZWNhdGVkIHRvIGNyZWF0ZSBhIDpjbGFzczpgU1NMU29ja2V0YCBpbnN0YW5jZSBkaXJlY3RseSwgdXNlCisgICAgICA6bWV0aDpgU1NMQ29udGV4dC53cmFwX3NvY2tldGAgdG8gd3JhcCBhIHNvY2tldC4KKwogCiBTU0wgc29ja2V0cyBhbHNvIGhhdmUgdGhlIGZvbGxvd2luZyBhZGRpdGlvbmFsIG1ldGhvZHMgYW5kIGF0dHJpYnV0ZXM6CiAKQEAgLTkxNSw2ICs5ODIsOSBAQAogICAgICAgVGhlIHNvY2tldCB0aW1lb3V0IGlzIG5vdyB0byBtYXhpbXVtIHRvdGFsIGR1cmF0aW9uIHRvIHJlYWQgdXAgdG8gKmxlbioKICAgICAgIGJ5dGVzLgogCisgICAuLiBkZXByZWNhdGVkOjogMy42CisgICAgICBVc2UgOm1ldGg6YH5TU0xTb2NrZXQucmVjdmAgaW5zdGVhZCBvZiA6bWV0aDpgflNTTFNvY2tldC5yZWFkYC4KKwogLi4gbWV0aG9kOjogU1NMU29ja2V0LndyaXRlKGJ1ZikKIAogICAgV3JpdGUgKmJ1ZiogdG8gdGhlIFNTTCBzb2NrZXQgYW5kIHJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4uIFRoZQpAQCAtOTMwLDYgKzEwMDAsOSBAQAogICAgICAgVGhlIHNvY2tldCB0aW1lb3V0IGlzIG5vIG1vcmUgcmVzZXQgZWFjaCB0aW1lIGJ5dGVzIGFyZSByZWNlaXZlZCBvciBzZW50LgogICAgICAgVGhlIHNvY2tldCB0aW1lb3V0IGlzIG5vdyB0byBtYXhpbXVtIHRvdGFsIGR1cmF0aW9uIHRvIHdyaXRlICpidWYqLgogCisgICAuLiBkZXByZWNhdGVkOjogMy42CisgICAgICBVc2UgOm1ldGg6YH5TU0xTb2NrZXQuc2VuZGAgaW5zdGVhZCBvZiA6bWV0aDpgflNTTFNvY2tldC53cml0ZWAuCisKIC4uIG5vdGU6OgogCiAgICBUaGUgOm1ldGg6YH5TU0xTb2NrZXQucmVhZGAgYW5kIDptZXRoOmB+U1NMU29ja2V0LndyaXRlYCBtZXRob2RzIGFyZSB0aGUKQEAgLTExMjcsNiArMTIwMCwxOSBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAorLi4gYXR0cmlidXRlOjogU1NMU29ja2V0LnNlc3Npb24KKworICAgVGhlIDpjbGFzczpgU1NMU2Vzc2lvbmAgZm9yIHRoaXMgU1NMIGNvbm5lY3Rpb24uIFRoZSBzZXNzaW9uIGlzIGF2YWlsYWJsZQorICAgZm9yIGNsaWVudCBhbmQgc2VydmVyIHNpZGUgc29ja2V0cyBhZnRlciB0aGUgVExTIGhhbmRzaGFrZSBoYXMgYmVlbgorICAgcGVyZm9ybWVkLiBGb3IgY2xpZW50IHNvY2tldHMgdGhlIHNlc3Npb24gY2FuIGJlIHNldCBiZWZvcmUKKyAgIDptZXRoOmB+U1NMU29ja2V0LmRvX2hhbmRzaGFrZWAgaGFzIGJlZW4gY2FsbGVkIHRvIHJldXNlIGEgc2Vzc2lvbi4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKy4uIGF0dHJpYnV0ZTo6IFNTTFNvY2tldC5zZXNzaW9uX3JldXNlZAorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogCiBTU0wgQ29udGV4dHMKIC0tLS0tLS0tLS0tLQpAQCAtMTE0OSw5ICsxMjM1LDE2IEBACiAgICAgICA6ZnVuYzpgY3JlYXRlX2RlZmF1bHRfY29udGV4dGAgbGV0cyB0aGUgOm1vZDpgc3NsYCBtb2R1bGUgY2hvb3NlCiAgICAgICBzZWN1cml0eSBzZXR0aW5ncyBmb3IgYSBnaXZlbiBwdXJwb3NlLgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNS4zCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgogCi0gICAgICA6ZGF0YTpgUFJPVE9DT0xfVExTYCBpcyB0aGUgZGVmYXVsdCB2YWx1ZS4KKyAgICAgIFRoZSBjb250ZXh0IGlzIGNyZWF0ZWQgd2l0aCBzZWN1cmUgZGVmYXVsdCB2YWx1ZXMuIFRoZSBvcHRpb25zCisgICAgICA6ZGF0YTpgT1BfTk9fQ09NUFJFU1NJT05gLCA6ZGF0YTpgT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFYCwKKyAgICAgIDpkYXRhOmBPUF9TSU5HTEVfREhfVVNFYCwgOmRhdGE6YE9QX1NJTkdMRV9FQ0RIX1VTRWAsCisgICAgICA6ZGF0YTpgT1BfTk9fU1NMdjJgIChleGNlcHQgZm9yIDpkYXRhOmBQUk9UT0NPTF9TU0x2MmApLAorICAgICAgYW5kIDpkYXRhOmBPUF9OT19TU0x2M2AgKGV4Y2VwdCBmb3IgOmRhdGE6YFBST1RPQ09MX1NTTHYzYCkgYXJlCisgICAgICBzZXQgYnkgZGVmYXVsdC4gVGhlIGluaXRpYWwgY2lwaGVyIHN1aXRlIGxpc3QgY29udGFpbnMgb25seSBgYEhJR0hgYAorICAgICAgY2lwaGVycywgbm8gYGBOVUxMYGAgY2lwaGVycyBhbmQgbm8gYGBNRDVgYCBjaXBoZXJzIChleGNlcHQgZm9yCisgICAgICA6ZGF0YTpgUFJPVE9DT0xfU1NMdjJgKS4KIAogCiA6Y2xhc3M6YFNTTENvbnRleHRgIG9iamVjdHMgaGF2ZSB0aGUgZm9sbG93aW5nIG1ldGhvZHMgYW5kIGF0dHJpYnV0ZXM6CkBAIC0xMjU5LDYgKzEzNTIsNjIgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKKy4uIG1ldGhvZDo6IFNTTENvbnRleHQuZ2V0X2NpcGhlcnMoKQorCisgICBHZXQgYSBsaXN0IG9mIGVuYWJsZWQgY2lwaGVycy4gVGhlIGxpc3QgaXMgaW4gb3JkZXIgb2YgY2lwaGVyIHByaW9yaXR5LgorICAgU2VlIDptZXRoOmBTU0xDb250ZXh0LnNldF9jaXBoZXJzYC4KKworICAgRXhhbXBsZTo6CisKKyAgICAgICA+Pj4gY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICA+Pj4gY3R4LnNldF9jaXBoZXJzKCdFQ0RIRStBRVNHQ006IUVDRFNBJykKKyAgICAgICA+Pj4gY3R4LmdldF9jaXBoZXJzKCkgICMgT3BlblNTTCAxLjAueAorICAgICAgIFt7J2FsZ19iaXRzJzogMjU2LAorICAgICAgICAgJ2Rlc2NyaXB0aW9uJzogJ0VDREhFLVJTQS1BRVMyNTYtR0NNLVNIQTM4NCBUTFN2MS4yIEt4PUVDREggICAgIEF1PVJTQSAgJworICAgICAgICAgICAgICAgICAgICAgICAgJ0VuYz1BRVNHQ00oMjU2KSBNYWM9QUVBRCcsCisgICAgICAgICAnaWQnOiA1MDM4MDg0OCwKKyAgICAgICAgICduYW1lJzogJ0VDREhFLVJTQS1BRVMyNTYtR0NNLVNIQTM4NCcsCisgICAgICAgICAncHJvdG9jb2wnOiAnVExTdjEvU1NMdjMnLAorICAgICAgICAgJ3N0cmVuZ3RoX2JpdHMnOiAyNTZ9LAorICAgICAgICB7J2FsZ19iaXRzJzogMTI4LAorICAgICAgICAgJ2Rlc2NyaXB0aW9uJzogJ0VDREhFLVJTQS1BRVMxMjgtR0NNLVNIQTI1NiBUTFN2MS4yIEt4PUVDREggICAgIEF1PVJTQSAgJworICAgICAgICAgICAgICAgICAgICAgICAgJ0VuYz1BRVNHQ00oMTI4KSBNYWM9QUVBRCcsCisgICAgICAgICAnaWQnOiA1MDM4MDg0NywKKyAgICAgICAgICduYW1lJzogJ0VDREhFLVJTQS1BRVMxMjgtR0NNLVNIQTI1NicsCisgICAgICAgICAncHJvdG9jb2wnOiAnVExTdjEvU1NMdjMnLAorICAgICAgICAgJ3N0cmVuZ3RoX2JpdHMnOiAxMjh9XQorCisgICBPbiBPcGVuU1NMIDEuMSBhbmQgbmV3ZXIgdGhlIGNpcGhlciBkaWN0IGNvbnRhaW5zIGFkZGl0aW9uYWwgZmllbGRzOjoKKyAgICAgICA+Pj4gY3R4LmdldF9jaXBoZXJzKCkgICMgT3BlblNTTCAxLjErCisgICAgICAgW3snYWVhZCc6IFRydWUsCisgICAgICAgICAnYWxnX2JpdHMnOiAyNTYsCisgICAgICAgICAnYXV0aCc6ICdhdXRoLXJzYScsCisgICAgICAgICAnZGVzY3JpcHRpb24nOiAnRUNESEUtUlNBLUFFUzI1Ni1HQ00tU0hBMzg0IFRMU3YxLjIgS3g9RUNESCAgICAgQXU9UlNBICAnCisgICAgICAgICAgICAgICAgICAgICAgICAnRW5jPUFFU0dDTSgyNTYpIE1hYz1BRUFEJywKKyAgICAgICAgICdkaWdlc3QnOiBOb25lLAorICAgICAgICAgJ2lkJzogNTAzODA4NDgsCisgICAgICAgICAna2VhJzogJ2t4LWVjZGhlJywKKyAgICAgICAgICduYW1lJzogJ0VDREhFLVJTQS1BRVMyNTYtR0NNLVNIQTM4NCcsCisgICAgICAgICAncHJvdG9jb2wnOiAnVExTdjEuMicsCisgICAgICAgICAnc3RyZW5ndGhfYml0cyc6IDI1NiwKKyAgICAgICAgICdzeW1tZXRyaWMnOiAnYWVzLTI1Ni1nY20nfSwKKyAgICAgICAgeydhZWFkJzogVHJ1ZSwKKyAgICAgICAgICdhbGdfYml0cyc6IDEyOCwKKyAgICAgICAgICdhdXRoJzogJ2F1dGgtcnNhJywKKyAgICAgICAgICdkZXNjcmlwdGlvbic6ICdFQ0RIRS1SU0EtQUVTMTI4LUdDTS1TSEEyNTYgVExTdjEuMiBLeD1FQ0RIICAgICBBdT1SU0EgICcKKyAgICAgICAgICAgICAgICAgICAgICAgICdFbmM9QUVTR0NNKDEyOCkgTWFjPUFFQUQnLAorICAgICAgICAgJ2RpZ2VzdCc6IE5vbmUsCisgICAgICAgICAnaWQnOiA1MDM4MDg0NywKKyAgICAgICAgICdrZWEnOiAna3gtZWNkaGUnLAorICAgICAgICAgJ25hbWUnOiAnRUNESEUtUlNBLUFFUzEyOC1HQ00tU0hBMjU2JywKKyAgICAgICAgICdwcm90b2NvbCc6ICdUTFN2MS4yJywKKyAgICAgICAgICdzdHJlbmd0aF9iaXRzJzogMTI4LAorICAgICAgICAgJ3N5bW1ldHJpYyc6ICdhZXMtMTI4LWdjbSd9XQorCisgICBBdmFpbGFiaWxpdHk6IE9wZW5TU0wgMS4wLjIrCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAuLiBtZXRob2Q6OiBTU0xDb250ZXh0LnNldF9kZWZhdWx0X3ZlcmlmeV9wYXRocygpCiAKICAgIExvYWQgYSBzZXQgb2YgZGVmYXVsdCAiY2VydGlmaWNhdGlvbiBhdXRob3JpdHkiIChDQSkgY2VydGlmaWNhdGVzIGZyb20KQEAgLTEzOTcsNyArMTU0Niw3IEBACiAKIC4uIG1ldGhvZDo6IFNTTENvbnRleHQud3JhcF9zb2NrZXQoc29jaywgc2VydmVyX3NpZGU9RmFsc2UsIFwKICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PVRydWUsIHN1cHByZXNzX3JhZ2dlZF9lb2ZzPVRydWUsIFwKLSAgICAgIHNlcnZlcl9ob3N0bmFtZT1Ob25lKQorICAgICAgc2VydmVyX2hvc3RuYW1lPU5vbmUsIHNlc3Npb249Tm9uZSkKIAogICAgV3JhcCBhbiBleGlzdGluZyBQeXRob24gc29ja2V0ICpzb2NrKiBhbmQgcmV0dXJuIGFuIDpjbGFzczpgU1NMU29ja2V0YAogICAgb2JqZWN0LiAgKnNvY2sqIG11c3QgYmUgYSA6ZGF0YTpgfnNvY2tldC5TT0NLX1NUUkVBTWAgc29ja2V0OyBvdGhlciBzb2NrZXQKQEAgLTE0MTQsMTkgKzE1NjMsMjcgQEAKICAgIHF1aXRlIHNpbWlsYXJseSB0byBIVFRQIHZpcnR1YWwgaG9zdHMuIFNwZWNpZnlpbmcgKnNlcnZlcl9ob3N0bmFtZSogd2lsbAogICAgcmFpc2UgYSA6ZXhjOmBWYWx1ZUVycm9yYCBpZiAqc2VydmVyX3NpZGUqIGlzIHRydWUuCiAKKyAgICpzZXNzaW9uKiwgc2VlIDphdHRyOmB+U1NMU29ja2V0LnNlc3Npb25gLgorCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQogICAgICAgQWx3YXlzIGFsbG93IGEgc2VydmVyX2hvc3RuYW1lIHRvIGJlIHBhc3NlZCwgZXZlbiBpZiBPcGVuU1NMIGRvZXMgbm90CiAgICAgICBoYXZlIFNOSS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgICpzZXNzaW9uKiBhcmd1bWVudCB3YXMgYWRkZWQuCisKIC4uIG1ldGhvZDo6IFNTTENvbnRleHQud3JhcF9iaW8oaW5jb21pbmcsIG91dGdvaW5nLCBzZXJ2ZXJfc2lkZT1GYWxzZSwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9Tm9uZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPU5vbmUsIHNlc3Npb249Tm9uZSkKIAogICAgQ3JlYXRlIGEgbmV3IDpjbGFzczpgU1NMT2JqZWN0YCBpbnN0YW5jZSBieSB3cmFwcGluZyB0aGUgQklPIG9iamVjdHMKICAgICppbmNvbWluZyogYW5kICpvdXRnb2luZyouIFRoZSBTU0wgcm91dGluZXMgd2lsbCByZWFkIGlucHV0IGRhdGEgZnJvbSB0aGUKICAgIGluY29taW5nIEJJTyBhbmQgd3JpdGUgZGF0YSB0byB0aGUgb3V0Z29pbmcgQklPLgogCi0gICBUaGUgKnNlcnZlcl9zaWRlKiBhbmQgKnNlcnZlcl9ob3N0bmFtZSogcGFyYW1ldGVycyBoYXZlIHRoZSBzYW1lIG1lYW5pbmcgYXMKLSAgIGluIDptZXRoOmBTU0xDb250ZXh0LndyYXBfc29ja2V0YC4KKyAgIFRoZSAqc2VydmVyX3NpZGUqLCAqc2VydmVyX2hvc3RuYW1lKiBhbmQgKnNlc3Npb24qIHBhcmFtZXRlcnMgaGF2ZSB0aGUKKyAgIHNhbWUgbWVhbmluZyBhcyBpbiA6bWV0aDpgU1NMQ29udGV4dC53cmFwX3NvY2tldGAuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICAqc2Vzc2lvbiogYXJndW1lbnQgd2FzIGFkZGVkLgogCiAuLiBtZXRob2Q6OiBTU0xDb250ZXh0LnNlc3Npb25fc3RhdHMoKQogCkBAIC0xNDc4LDYgKzE2MzUsMTIgQEAKICAgICAgIHRvIHNldCBvcHRpb25zLCBub3QgdG8gY2xlYXIgdGhlbS4gIEF0dGVtcHRpbmcgdG8gY2xlYXIgYW4gb3B0aW9uCiAgICAgICAoYnkgcmVzZXR0aW5nIHRoZSBjb3JyZXNwb25kaW5nIGJpdHMpIHdpbGwgcmFpc2UgYSBgYFZhbHVlRXJyb3JgYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIDphdHRyOmBTU0xDb250ZXh0Lm9wdGlvbnNgIHJldHVybnMgOmNsYXNzOmBPcHRpb25zYCBmbGFnczoKKworICAgICAgICAgPj4+IHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0KCkub3B0aW9ucworICAgICAgICAgPE9wdGlvbnMuT1BfQUxMfE9QX05PX1NTTHYzfE9QX05PX1NTTHYyfE9QX05PX0NPTVBSRVNTSU9OOiAyMTk3OTQ3MzkxPgorCiAuLiBhdHRyaWJ1dGU6OiBTU0xDb250ZXh0LnByb3RvY29sCiAKICAgIFRoZSBwcm90b2NvbCB2ZXJzaW9uIGNob3NlbiB3aGVuIGNvbnN0cnVjdGluZyB0aGUgY29udGV4dC4gIFRoaXMgYXR0cmlidXRlCkBAIC0xNDkyLDEyICsxNjU1LDIzIEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgOmF0dHI6YFNTTENvbnRleHQudmVyaWZ5X2ZsYWdzYCByZXR1cm5zIDpjbGFzczpgVmVyaWZ5RmxhZ3NgIGZsYWdzOgorCisgICAgICAgICA+Pj4gc3NsLmNyZWF0ZV9kZWZhdWx0X2NvbnRleHQoKS52ZXJpZnlfZmxhZ3MKKyAgICAgICAgIDxWZXJpZnlGbGFncy5WRVJJRllfWDUwOV9UUlVTVEVEX0ZJUlNUOiAzMjc2OD4KKwogLi4gYXR0cmlidXRlOjogU1NMQ29udGV4dC52ZXJpZnlfbW9kZQogCiAgICBXaGV0aGVyIHRvIHRyeSB0byB2ZXJpZnkgb3RoZXIgcGVlcnMnIGNlcnRpZmljYXRlcyBhbmQgaG93IHRvIGJlaGF2ZQogICAgaWYgdmVyaWZpY2F0aW9uIGZhaWxzLiAgVGhpcyBhdHRyaWJ1dGUgbXVzdCBiZSBvbmUgb2YKICAgIDpkYXRhOmBDRVJUX05PTkVgLCA6ZGF0YTpgQ0VSVF9PUFRJT05BTGAgb3IgOmRhdGE6YENFUlRfUkVRVUlSRURgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgOmF0dHI6YFNTTENvbnRleHQudmVyaWZ5X21vZGVgIHJldHVybnMgOmNsYXNzOmBWZXJpZnlNb2RlYCBlbnVtOgorCisgICAgICAgICA+Pj4gc3NsLmNyZWF0ZV9kZWZhdWx0X2NvbnRleHQoKS52ZXJpZnlfbW9kZQorICAgICAgICAgPFZlcmlmeU1vZGUuQ0VSVF9SRVFVSVJFRDogMj4KIAogLi4gaW5kZXg6OiBzaW5nbGU6IGNlcnRpZmljYXRlcwogCkBAIC0xOTE2LDYgKzIwOTAsOCBAQAogICAgLSA6YXR0cjpgflNTTFNvY2tldC5jb250ZXh0YAogICAgLSA6YXR0cjpgflNTTFNvY2tldC5zZXJ2ZXJfc2lkZWAKICAgIC0gOmF0dHI6YH5TU0xTb2NrZXQuc2VydmVyX2hvc3RuYW1lYAorICAgLSA6YXR0cjpgflNTTFNvY2tldC5zZXNzaW9uYAorICAgLSA6YXR0cjpgflNTTFNvY2tldC5zZXNzaW9uX3JldXNlZGAKICAgIC0gOm1ldGg6YH5TU0xTb2NrZXQucmVhZGAKICAgIC0gOm1ldGg6YH5TU0xTb2NrZXQud3JpdGVgCiAgICAtIDptZXRoOmB+U1NMU29ja2V0LmdldHBlZXJjZXJ0YApAQCAtMTk5Nyw2ICsyMTczLDIyIEBACiAgICAgICBiZWNvbWUgdHJ1ZSBhZnRlciBhbGwgZGF0YSBjdXJyZW50bHkgaW4gdGhlIGJ1ZmZlciBoYXMgYmVlbiByZWFkLgogCiAKK1NTTCBzZXNzaW9uCistLS0tLS0tLS0tLQorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworLi4gY2xhc3M6OiBTU0xTZXNzaW9uCisKKyAgIFNlc3Npb24gb2JqZWN0IHVzZWQgYnkgOmF0dHI6YH5TU0xTb2NrZXQuc2Vzc2lvbmAuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGlkCisgICAuLiBhdHRyaWJ1dGU6OiB0aW1lCisgICAuLiBhdHRyaWJ1dGU6OiB0aW1lb3V0CisgICAuLiBhdHRyaWJ1dGU6OiB0aWNrZXRfbGlmZXRpbWVfaGludAorICAgLi4gYXR0cmlidXRlOjogaGFzX3RpY2tldAorCisKIC4uIF9zc2wtc2VjdXJpdHk6CiAKIFNlY3VyaXR5IGNvbnNpZGVyYXRpb25zCkBAIC0yMDYzLDE4ICsyMjU1LDIwIEBACiAKIFNTTCB2ZXJzaW9ucyAyIGFuZCAzIGFyZSBjb25zaWRlcmVkIGluc2VjdXJlIGFuZCBhcmUgdGhlcmVmb3JlIGRhbmdlcm91cyB0bwogdXNlLiAgSWYgeW91IHdhbnQgbWF4aW11bSBjb21wYXRpYmlsaXR5IGJldHdlZW4gY2xpZW50cyBhbmQgc2VydmVycywgaXQgaXMKLXJlY29tbWVuZGVkIHRvIHVzZSA6Y29uc3Q6YFBST1RPQ09MX1RMU2AgYXMgdGhlIHByb3RvY29sIHZlcnNpb24gYW5kIHRoZW4KLWRpc2FibGUgU1NMdjIgYW5kIFNTTHYzIGV4cGxpY2l0bHkgdXNpbmcgdGhlIDpkYXRhOmBTU0xDb250ZXh0Lm9wdGlvbnNgCi1hdHRyaWJ1dGU6OgorcmVjb21tZW5kZWQgdG8gdXNlIDpjb25zdDpgUFJPVE9DT0xfVExTX0NMSUVOVGAgb3IKKzpjb25zdDpgUFJPVE9DT0xfVExTX1NFUlZFUmAgYXMgdGhlIHByb3RvY29sIHZlcnNpb24uIFNTTHYyIGFuZCBTU0x2MyBhcmUKK2Rpc2FibGVkIGJ5IGRlZmF1bHQuCiAKLSAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTKQotICAgY29udGV4dC5vcHRpb25zIHw9IHNzbC5PUF9OT19TU0x2MgotICAgY29udGV4dC5vcHRpb25zIHw9IHNzbC5PUF9OT19TU0x2MwotICAgY29udGV4dC5vcHRpb25zIHw9IHNzbC5PUF9OT19UTFN2MQotICAgY29udGV4dC5vcHRpb25zIHw9IHNzbC5PUF9OT19UTFN2MV8xCisgICA+Pj4gY2xpZW50X2NvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTX0NMSUVOVCkKKyAgID4+PiBjbGllbnRfY29udGV4dC5vcHRpb25zIHw9IHNzbC5PUF9OT19UTFN2MQorICAgPj4+IGNsaWVudF9jb250ZXh0Lm9wdGlvbnMgfD0gc3NsLk9QX05PX1RMU3YxXzEKKwogCiBUaGUgU1NMIGNvbnRleHQgY3JlYXRlZCBhYm92ZSB3aWxsIG9ubHkgYWxsb3cgVExTdjEuMiBhbmQgbGF0ZXIgKGlmCi1zdXBwb3J0ZWQgYnkgeW91ciBzeXN0ZW0pIGNvbm5lY3Rpb25zLgorc3VwcG9ydGVkIGJ5IHlvdXIgc3lzdGVtKSBjb25uZWN0aW9ucyB0byBhIHNlcnZlci4gOmNvbnN0OmBQUk9UT0NPTF9UTFNfQ0xJRU5UYAoraW1wbGllcyBjZXJ0aWZpY2F0ZSB2YWxpZGF0aW9uIGFuZCBob3N0bmFtZSBjaGVja3MgYnkgZGVmYXVsdC4gWW91IGhhdmUgdG8KK2xvYWQgY2VydGlmaWNhdGVzIGludG8gdGhlIGNvbnRleHQuCisKIAogQ2lwaGVyIHNlbGVjdGlvbgogJycnJycnJycnJycnJycnJwpAQCAtMjA4NSw4ICsyMjc5LDkgQEAKIHNzbCBtb2R1bGUgZGlzYWJsZXMgY2VydGFpbiB3ZWFrIGNpcGhlcnMgYnkgZGVmYXVsdCwgYnV0IHlvdSBtYXkgd2FudAogdG8gZnVydGhlciByZXN0cmljdCB0aGUgY2lwaGVyIGNob2ljZS4gQmUgc3VyZSB0byByZWFkIE9wZW5TU0wncyBkb2N1bWVudGF0aW9uCiBhYm91dCB0aGUgYGNpcGhlciBsaXN0IGZvcm1hdCA8aHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvZG9jcy9hcHBzL2NpcGhlcnMuaHRtbCNDSVBIRVItTElTVC1GT1JNQVQ+YF8uCi1JZiB5b3Ugd2FudCB0byBjaGVjayB3aGljaCBjaXBoZXJzIGFyZSBlbmFibGVkIGJ5IGEgZ2l2ZW4gY2lwaGVyIGxpc3QsIHVzZSB0aGUKLWBgb3BlbnNzbCBjaXBoZXJzYGAgY29tbWFuZCBvbiB5b3VyIHN5c3RlbS4KK0lmIHlvdSB3YW50IHRvIGNoZWNrIHdoaWNoIGNpcGhlcnMgYXJlIGVuYWJsZWQgYnkgYSBnaXZlbiBjaXBoZXIgbGlzdCwgdXNlCis6bWV0aDpgU1NMQ29udGV4dC5nZXRfY2lwaGVyc2Agb3IgdGhlIGBgb3BlbnNzbCBjaXBoZXJzYGAgY29tbWFuZCBvbiB5b3VyCitzeXN0ZW0uCiAKIE11bHRpLXByb2Nlc3NpbmcKIF5eXl5eXl5eXl5eXl5eXl4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3N0YXRpc3RpY3MucnN0IGIvRG9jL2xpYnJhcnkvc3RhdGlzdGljcy5yc3QKaW5kZXggNzY4NTYyMS4uMmFhNzc4YyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc3RhdGlzdGljcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3RhdGlzdGljcy5yc3QKQEAgLTM5LDYgKzM5LDcgQEAKIAogPT09PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogOmZ1bmM6YG1lYW5gICAgICAgICAgICAgIEFyaXRobWV0aWMgbWVhbiAoImF2ZXJhZ2UiKSBvZiBkYXRhLgorOmZ1bmM6YGhhcm1vbmljX21lYW5gICAgIEhhcm1vbmljIG1lYW4gb2YgZGF0YS4KIDpmdW5jOmBtZWRpYW5gICAgICAgICAgICBNZWRpYW4gKG1pZGRsZSB2YWx1ZSkgb2YgZGF0YS4KIDpmdW5jOmBtZWRpYW5fbG93YCAgICAgICBMb3cgbWVkaWFuIG9mIGRhdGEuCiA6ZnVuYzpgbWVkaWFuX2hpZ2hgICAgICAgSGlnaCBtZWRpYW4gb2YgZGF0YS4KQEAgLTY4LDggKzY5LDcgQEAKIAogLi4gZnVuY3Rpb246OiBtZWFuKGRhdGEpCiAKLSAgIFJldHVybiB0aGUgc2FtcGxlIGFyaXRobWV0aWMgbWVhbiBvZiAqZGF0YSosIGEgc2VxdWVuY2Ugb3IgaXRlcmF0b3Igb2YKLSAgIHJlYWwtdmFsdWVkIG51bWJlcnMuCisgICBSZXR1cm4gdGhlIHNhbXBsZSBhcml0aG1ldGljIG1lYW4gb2YgKmRhdGEqIHdoaWNoIGNhbiBiZSBhIHNlcXVlbmNlIG9yIGl0ZXJhdG9yLgogCiAgICBUaGUgYXJpdGhtZXRpYyBtZWFuIGlzIHRoZSBzdW0gb2YgdGhlIGRhdGEgZGl2aWRlZCBieSB0aGUgbnVtYmVyIG9mIGRhdGEKICAgIHBvaW50cy4gIEl0IGlzIGNvbW1vbmx5IGNhbGxlZCAidGhlIGF2ZXJhZ2UiLCBhbHRob3VnaCBpdCBpcyBvbmx5IG9uZSBvZiBtYW55CkBAIC0xMTEsMTAgKzExMSw0MyBAQAogICAgICAgYGBtZWFuKGRhdGEpYGAgaXMgZXF1aXZhbGVudCB0byBjYWxjdWxhdGluZyB0aGUgdHJ1ZSBwb3B1bGF0aW9uIG1lYW4gzrwuCiAKIAorLi4gZnVuY3Rpb246OiBoYXJtb25pY19tZWFuKGRhdGEpCisKKyAgIFJldHVybiB0aGUgaGFybW9uaWMgbWVhbiBvZiAqZGF0YSosIGEgc2VxdWVuY2Ugb3IgaXRlcmF0b3Igb2YKKyAgIHJlYWwtdmFsdWVkIG51bWJlcnMuCisKKyAgIFRoZSBoYXJtb25pYyBtZWFuLCBzb21ldGltZXMgY2FsbGVkIHRoZSBzdWJjb250cmFyeSBtZWFuLCBpcyB0aGUKKyAgIHJlY2lwcm9jYWwgb2YgdGhlIGFyaXRobWV0aWMgOmZ1bmM6YG1lYW5gIG9mIHRoZSByZWNpcHJvY2FscyBvZiB0aGUKKyAgIGRhdGEuIEZvciBleGFtcGxlLCB0aGUgaGFybW9uaWMgbWVhbiBvZiB0aHJlZSB2YWx1ZXMgKmEqLCAqYiogYW5kICpjKgorICAgd2lsbCBiZSBlcXVpdmFsZW50IHRvIGBgMy8oMS9hICsgMS9iICsgMS9jKWBgLgorCisgICBUaGUgaGFybW9uaWMgbWVhbiBpcyBhIHR5cGUgb2YgYXZlcmFnZSwgYSBtZWFzdXJlIG9mIHRoZSBjZW50cmFsCisgICBsb2NhdGlvbiBvZiB0aGUgZGF0YS4gIEl0IGlzIG9mdGVuIGFwcHJvcHJpYXRlIHdoZW4gYXZlcmFnaW5nIHF1YW50aXRpZXMKKyAgIHdoaWNoIGFyZSByYXRlcyBvciByYXRpb3MsIGZvciBleGFtcGxlIHNwZWVkcy4gRm9yIGV4YW1wbGU6CisKKyAgIFN1cHBvc2UgYW4gaW52ZXN0b3IgcHVyY2hhc2VzIGFuIGVxdWFsIHZhbHVlIG9mIHNoYXJlcyBpbiBlYWNoIG9mCisgICB0aHJlZSBjb21wYW5pZXMsIHdpdGggUC9FIChwcmljZS9lYXJuaW5nKSByYXRpb3Mgb2YgMi41LCAzIGFuZCAxMC4KKyAgIFdoYXQgaXMgdGhlIGF2ZXJhZ2UgUC9FIHJhdGlvIGZvciB0aGUgaW52ZXN0b3IncyBwb3J0Zm9saW8/CisKKyAgIC4uIGRvY3Rlc3Q6OgorCisgICAgICA+Pj4gaGFybW9uaWNfbWVhbihbMi41LCAzLCAxMF0pICAjIEZvciBhbiBlcXVhbCBpbnZlc3RtZW50IHBvcnRmb2xpby4KKyAgICAgIDMuNgorCisgICBVc2luZyB0aGUgYXJpdGhtZXRpYyBtZWFuIHdvdWxkIGdpdmUgYW4gYXZlcmFnZSBvZiBhYm91dCA1LjE2Nywgd2hpY2gKKyAgIGlzIHRvbyBoaWdoLgorCisgICA6ZXhjOmBTdGF0aXN0aWNzRXJyb3JgIGlzIHJhaXNlZCBpZiAqZGF0YSogaXMgZW1wdHksIG9yIGFueSBlbGVtZW50CisgICBpcyBsZXNzIHRoYW4gemVyby4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKwogLi4gZnVuY3Rpb246OiBtZWRpYW4oZGF0YSkKIAogICAgUmV0dXJuIHRoZSBtZWRpYW4gKG1pZGRsZSB2YWx1ZSkgb2YgbnVtZXJpYyBkYXRhLCB1c2luZyB0aGUgY29tbW9uICJtZWFuIG9mCiAgICBtaWRkbGUgdHdvIiBtZXRob2QuICBJZiAqZGF0YSogaXMgZW1wdHksIDpleGM6YFN0YXRpc3RpY3NFcnJvcmAgaXMgcmFpc2VkLgorICAgKmRhdGEqIGNhbiBiZSBhIHNlcXVlbmNlIG9yIGl0ZXJhdG9yLgogCiAgICBUaGUgbWVkaWFuIGlzIGEgcm9idXN0IG1lYXN1cmUgb2YgY2VudHJhbCBsb2NhdGlvbiwgYW5kIGlzIGxlc3MgYWZmZWN0ZWQgYnkKICAgIHRoZSBwcmVzZW5jZSBvZiBvdXRsaWVycyBpbiB5b3VyIGRhdGEuICBXaGVuIHRoZSBudW1iZXIgb2YgZGF0YSBwb2ludHMgaXMKQEAgLTE0Miw3ICsxNzUsNyBAQAogLi4gZnVuY3Rpb246OiBtZWRpYW5fbG93KGRhdGEpCiAKICAgIFJldHVybiB0aGUgbG93IG1lZGlhbiBvZiBudW1lcmljIGRhdGEuICBJZiAqZGF0YSogaXMgZW1wdHksCi0gICA6ZXhjOmBTdGF0aXN0aWNzRXJyb3JgIGlzIHJhaXNlZC4KKyAgIDpleGM6YFN0YXRpc3RpY3NFcnJvcmAgaXMgcmFpc2VkLiAgKmRhdGEqIGNhbiBiZSBhIHNlcXVlbmNlIG9yIGl0ZXJhdG9yLgogCiAgICBUaGUgbG93IG1lZGlhbiBpcyBhbHdheXMgYSBtZW1iZXIgb2YgdGhlIGRhdGEgc2V0LiAgV2hlbiB0aGUgbnVtYmVyIG9mIGRhdGEKICAgIHBvaW50cyBpcyBvZGQsIHRoZSBtaWRkbGUgdmFsdWUgaXMgcmV0dXJuZWQuICBXaGVuIGl0IGlzIGV2ZW4sIHRoZSBzbWFsbGVyIG9mCkBAIC0xNjIsNyArMTk1LDcgQEAKIC4uIGZ1bmN0aW9uOjogbWVkaWFuX2hpZ2goZGF0YSkKIAogICAgUmV0dXJuIHRoZSBoaWdoIG1lZGlhbiBvZiBkYXRhLiAgSWYgKmRhdGEqIGlzIGVtcHR5LCA6ZXhjOmBTdGF0aXN0aWNzRXJyb3JgCi0gICBpcyByYWlzZWQuCisgICBpcyByYWlzZWQuICAqZGF0YSogY2FuIGJlIGEgc2VxdWVuY2Ugb3IgaXRlcmF0b3IuCiAKICAgIFRoZSBoaWdoIG1lZGlhbiBpcyBhbHdheXMgYSBtZW1iZXIgb2YgdGhlIGRhdGEgc2V0LiAgV2hlbiB0aGUgbnVtYmVyIG9mIGRhdGEKICAgIHBvaW50cyBpcyBvZGQsIHRoZSBtaWRkbGUgdmFsdWUgaXMgcmV0dXJuZWQuICBXaGVuIGl0IGlzIGV2ZW4sIHRoZSBsYXJnZXIgb2YKQEAgLTE4Myw3ICsyMTYsNyBAQAogCiAgICBSZXR1cm4gdGhlIG1lZGlhbiBvZiBncm91cGVkIGNvbnRpbnVvdXMgZGF0YSwgY2FsY3VsYXRlZCBhcyB0aGUgNTB0aAogICAgcGVyY2VudGlsZSwgdXNpbmcgaW50ZXJwb2xhdGlvbi4gIElmICpkYXRhKiBpcyBlbXB0eSwgOmV4YzpgU3RhdGlzdGljc0Vycm9yYAotICAgaXMgcmFpc2VkLgorICAgaXMgcmFpc2VkLiAgKmRhdGEqIGNhbiBiZSBhIHNlcXVlbmNlIG9yIGl0ZXJhdG9yLgogCiAgICAuLiBkb2N0ZXN0OjoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3RkdHlwZXMucnN0IGIvRG9jL2xpYnJhcnkvc3RkdHlwZXMucnN0CmluZGV4IDFlMTlmZDQuLjFlNjY1YWYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3N0ZHR5cGVzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zdGR0eXBlcy5yc3QKQEAgLTEzNjMsNiArMTM2MywxMSBAQAogICAgVGhlIDphdHRyOmB+cmFuZ2Uuc3RhcnRgLCA6YXR0cjpgfnJhbmdlLnN0b3BgIGFuZCA6YXR0cjpgfnJhbmdlLnN0ZXBgCiAgICBhdHRyaWJ1dGVzLgogCisuLiBzZWVhbHNvOjoKKworICAgKiBUaGUgYGxpbnNwYWNlIHJlY2lwZSA8aHR0cDovL2NvZGUuYWN0aXZlc3RhdGUuY29tL3JlY2lwZXMvNTc5MDAwLz5gXworICAgICBzaG93cyBob3cgdG8gaW1wbGVtZW50IGEgbGF6eSB2ZXJzaW9uIG9mIHJhbmdlIHRoYXQgc3VpdGFibGUgZm9yIGZsb2F0aW5nCisgICAgIHBvaW50IGFwcGxpY2F0aW9ucy4KIAogLi4gaW5kZXg6OgogICAgc2luZ2xlOiBzdHJpbmc7IHRleHQgc2VxdWVuY2UgdHlwZQpAQCAtMTQ1Myw4ICsxNDU4LDggQEAKIAogICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIGBgc3RyYGAgY2xhc3MgYW5kIGl0cyBtZXRob2RzLCBzZWUKICAgIDpyZWY6YHRleHRzZXFgIGFuZCB0aGUgOnJlZjpgc3RyaW5nLW1ldGhvZHNgIHNlY3Rpb24gYmVsb3cuICBUbyBvdXRwdXQKLSAgIGZvcm1hdHRlZCBzdHJpbmdzLCBzZWUgdGhlIDpyZWY6YGZvcm1hdHN0cmluZ3NgIHNlY3Rpb24uICBJbiBhZGRpdGlvbiwKLSAgIHNlZSB0aGUgOnJlZjpgc3RyaW5nc2VydmljZXNgIHNlY3Rpb24uCisgICBmb3JtYXR0ZWQgc3RyaW5ncywgc2VlIHRoZSA6cmVmOmBmLXN0cmluZ3NgIGFuZCA6cmVmOmBmb3JtYXRzdHJpbmdzYAorICAgc2VjdGlvbnMuICBJbiBhZGRpdGlvbiwgc2VlIHRoZSA6cmVmOmBzdHJpbmdzZXJ2aWNlc2Agc2VjdGlvbi4KIAogCiAuLiBpbmRleDo6CkBAIC0yMDU4LDggKzIwNjMsOCBAQAogLi4gaW5kZXg6OgogICAgc2luZ2xlOiBmb3JtYXR0aW5nLCBzdHJpbmcgKCUpCiAgICBzaW5nbGU6IGludGVycG9sYXRpb24sIHN0cmluZyAoJSkKLSAgIHNpbmdsZTogc3RyaW5nOyBmb3JtYXR0aW5nCi0gICBzaW5nbGU6IHN0cmluZzsgaW50ZXJwb2xhdGlvbgorICAgc2luZ2xlOiBzdHJpbmc7IGZvcm1hdHRpbmcsIHByaW50ZgorICAgc2luZ2xlOiBzdHJpbmc7IGludGVycG9sYXRpb24sIHByaW50ZgogICAgc2luZ2xlOiBwcmludGYtc3R5bGUgZm9ybWF0dGluZwogICAgc2luZ2xlOiBzcHJpbnRmLXN0eWxlIGZvcm1hdHRpbmcKICAgIHNpbmdsZTogJSBmb3JtYXR0aW5nCkBAIC0yMDY5LDkgKzIwNzQsMTAgQEAKIAogICAgVGhlIGZvcm1hdHRpbmcgb3BlcmF0aW9ucyBkZXNjcmliZWQgaGVyZSBleGhpYml0IGEgdmFyaWV0eSBvZiBxdWlya3MgdGhhdAogICAgbGVhZCB0byBhIG51bWJlciBvZiBjb21tb24gZXJyb3JzIChzdWNoIGFzIGZhaWxpbmcgdG8gZGlzcGxheSB0dXBsZXMgYW5kCi0gICBkaWN0aW9uYXJpZXMgY29ycmVjdGx5KS4gIFVzaW5nIHRoZSBuZXdlciA6bWV0aDpgc3RyLmZvcm1hdGAgaW50ZXJmYWNlCi0gICBoZWxwcyBhdm9pZCB0aGVzZSBlcnJvcnMsIGFuZCBhbHNvIHByb3ZpZGVzIGEgZ2VuZXJhbGx5IG1vcmUgcG93ZXJmdWwsCi0gICBmbGV4aWJsZSBhbmQgZXh0ZW5zaWJsZSBhcHByb2FjaCB0byBmb3JtYXR0aW5nIHRleHQuCisgICBkaWN0aW9uYXJpZXMgY29ycmVjdGx5KS4gIFVzaW5nIHRoZSBuZXdlciA6cmVmOmBmb3JtYXR0ZWQKKyAgIHN0cmluZyBsaXRlcmFscyA8Zi1zdHJpbmdzPmAgb3IgdGhlIDptZXRoOmBzdHIuZm9ybWF0YCBpbnRlcmZhY2UKKyAgIGhlbHBzIGF2b2lkIHRoZXNlIGVycm9ycy4gIFRoZXNlIGFsdGVybmF0aXZlcyBhbHNvIHByb3ZpZGUgbW9yZSBwb3dlcmZ1bCwKKyAgIGZsZXhpYmxlIGFuZCBleHRlbnNpYmxlIGFwcHJvYWNoZXMgdG8gZm9ybWF0dGluZyB0ZXh0LgogCiBTdHJpbmcgb2JqZWN0cyBoYXZlIG9uZSB1bmlxdWUgYnVpbHQtaW4gb3BlcmF0aW9uOiB0aGUgYGAlYGAgb3BlcmF0b3IgKG1vZHVsbykuCiBUaGlzIGlzIGFsc28ga25vd24gYXMgdGhlIHN0cmluZyAqZm9ybWF0dGluZyogb3IgKmludGVycG9sYXRpb24qIG9wZXJhdG9yLgpAQCAtMjYyOCw4ICsyNjM0LDggQEAKICAgIFRoZSBwcmVmaXgoZXMpIHRvIHNlYXJjaCBmb3IgbWF5IGJlIGFueSA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgLgogCiAKLS4uIG1ldGhvZDo6IGJ5dGVzLnRyYW5zbGF0ZSh0YWJsZVssIGRlbGV0ZV0pCi0gICAgICAgICAgICBieXRlYXJyYXkudHJhbnNsYXRlKHRhYmxlWywgZGVsZXRlXSkKKy4uIG1ldGhvZDo6IGJ5dGVzLnRyYW5zbGF0ZSh0YWJsZSwgZGVsZXRlPWInJykKKyAgICAgICAgICAgIGJ5dGVhcnJheS50cmFuc2xhdGUodGFibGUsIGRlbGV0ZT1iJycpCiAKICAgIFJldHVybiBhIGNvcHkgb2YgdGhlIGJ5dGVzIG9yIGJ5dGVhcnJheSBvYmplY3Qgd2hlcmUgYWxsIGJ5dGVzIG9jY3VycmluZyBpbgogICAgdGhlIG9wdGlvbmFsIGFyZ3VtZW50ICpkZWxldGUqIGFyZSByZW1vdmVkLCBhbmQgdGhlIHJlbWFpbmluZyBieXRlcyBoYXZlCkBAIC0yNjQ1LDYgKzI2NTEsOSBAQAogICAgICAgPj4+IGIncmVhZCB0aGlzIHNob3J0IHRleHQnLnRyYW5zbGF0ZShOb25lLCBiJ2FlaW91JykKICAgICAgIGIncmQgdGhzIHNocnQgdHh0JwogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgKmRlbGV0ZSogaXMgbm93IHN1cHBvcnRlZCBhcyBhIGtleXdvcmQgYXJndW1lbnQuCisKIAogVGhlIGZvbGxvd2luZyBtZXRob2RzIG9uIGJ5dGVzIGFuZCBieXRlYXJyYXkgb2JqZWN0cyBoYXZlIGRlZmF1bHQgYmVoYXZpb3VycwogdGhhdCBhc3N1bWUgdGhlIHVzZSBvZiBBU0NJSSBjb21wYXRpYmxlIGJpbmFyeSBmb3JtYXRzLCBidXQgY2FuIHN0aWxsIGJlIHVzZWQKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3N0cmluZy5yc3QgYi9Eb2MvbGlicmFyeS9zdHJpbmcucnN0CmluZGV4IDA1NDE4YTkuLmEwOTc3YjYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3N0cmluZy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3RyaW5nLnJzdApAQCAtMTg4LDcgKzE4OCw5IEBACiAKIFRoZSA6bWV0aDpgc3RyLmZvcm1hdGAgbWV0aG9kIGFuZCB0aGUgOmNsYXNzOmBGb3JtYXR0ZXJgIGNsYXNzIHNoYXJlIHRoZSBzYW1lCiBzeW50YXggZm9yIGZvcm1hdCBzdHJpbmdzIChhbHRob3VnaCBpbiB0aGUgY2FzZSBvZiA6Y2xhc3M6YEZvcm1hdHRlcmAsCi1zdWJjbGFzc2VzIGNhbiBkZWZpbmUgdGhlaXIgb3duIGZvcm1hdCBzdHJpbmcgc3ludGF4KS4KK3N1YmNsYXNzZXMgY2FuIGRlZmluZSB0aGVpciBvd24gZm9ybWF0IHN0cmluZyBzeW50YXgpLiAgVGhlIHN5bnRheCBpcworcmVsYXRlZCB0byB0aGF0IG9mIDpyZWY6YGZvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbHMgPGYtc3RyaW5ncz5gLCBidXQKK3RoZXJlIGFyZSBkaWZmZXJlbmNlcy4KIAogRm9ybWF0IHN0cmluZ3MgY29udGFpbiAicmVwbGFjZW1lbnQgZmllbGRzIiBzdXJyb3VuZGVkIGJ5IGN1cmx5IGJyYWNlcyBgYHt9YGAuCiBBbnl0aGluZyB0aGF0IGlzIG5vdCBjb250YWluZWQgaW4gYnJhY2VzIGlzIGNvbnNpZGVyZWQgbGl0ZXJhbCB0ZXh0LCB3aGljaCBpcwpAQCAtMjgzLDcgKzI4NSw4IEBACiAKICJGb3JtYXQgc3BlY2lmaWNhdGlvbnMiIGFyZSB1c2VkIHdpdGhpbiByZXBsYWNlbWVudCBmaWVsZHMgY29udGFpbmVkIHdpdGhpbiBhCiBmb3JtYXQgc3RyaW5nIHRvIGRlZmluZSBob3cgaW5kaXZpZHVhbCB2YWx1ZXMgYXJlIHByZXNlbnRlZCAoc2VlCi06cmVmOmBmb3JtYXRzdHJpbmdzYCkuICBUaGV5IGNhbiBhbHNvIGJlIHBhc3NlZCBkaXJlY3RseSB0byB0aGUgYnVpbHQtaW4KKzpyZWY6YGZvcm1hdHN0cmluZ3NgIGFuZCA6cmVmOmBmLXN0cmluZ3NgKS4KK1RoZXkgY2FuIGFsc28gYmUgcGFzc2VkIGRpcmVjdGx5IHRvIHRoZSBidWlsdC1pbgogOmZ1bmM6YGZvcm1hdGAgZnVuY3Rpb24uICBFYWNoIGZvcm1hdHRhYmxlIHR5cGUgbWF5IGRlZmluZSBob3cgdGhlIGZvcm1hdAogc3BlY2lmaWNhdGlvbiBpcyB0byBiZSBpbnRlcnByZXRlZC4KIApAQCAtMjk3LDE4ICszMDAsMjAgQEAKIFRoZSBnZW5lcmFsIGZvcm0gb2YgYSAqc3RhbmRhcmQgZm9ybWF0IHNwZWNpZmllciogaXM6CiAKIC4uIHByb2R1Y3Rpb25saXN0Ojogc2YKLSAgIGZvcm1hdF9zcGVjOiBbW2BmaWxsYF1gYWxpZ25gXVtgc2lnbmBdWyNdWzBdW2B3aWR0aGBdWyxdWy5gcHJlY2lzaW9uYF1bYHR5cGVgXQorICAgZm9ybWF0X3NwZWM6IFtbYGZpbGxgXWBhbGlnbmBdW2BzaWduYF1bI11bMF1bYHdpZHRoYF1bYGdyb3VwaW5nX29wdGlvbmBdWy5gcHJlY2lzaW9uYF1bYHR5cGVgXQogICAgZmlsbDogPGFueSBjaGFyYWN0ZXI+CiAgICBhbGlnbjogIjwiIHwgIj4iIHwgIj0iIHwgIl4iCiAgICBzaWduOiAiKyIgfCAiLSIgfCAiICIKICAgIHdpZHRoOiBgaW50ZWdlcmAKKyAgIGdyb3VwaW5nX29wdGlvbjogIl8iIHwgIiwiCiAgICBwcmVjaXNpb246IGBpbnRlZ2VyYAogICAgdHlwZTogImIiIHwgImMiIHwgImQiIHwgImUiIHwgIkUiIHwgImYiIHwgIkYiIHwgImciIHwgIkciIHwgIm4iIHwgIm8iIHwgInMiIHwgIngiIHwgIlgiIHwgIiUiCiAKIElmIGEgdmFsaWQgKmFsaWduKiB2YWx1ZSBpcyBzcGVjaWZpZWQsIGl0IGNhbiBiZSBwcmVjZWRlZCBieSBhICpmaWxsKgogY2hhcmFjdGVyIHRoYXQgY2FuIGJlIGFueSBjaGFyYWN0ZXIgYW5kIGRlZmF1bHRzIHRvIGEgc3BhY2UgaWYgb21pdHRlZC4KIEl0IGlzIG5vdCBwb3NzaWJsZSB0byB1c2UgYSBsaXRlcmFsIGN1cmx5IGJyYWNlICgiYGB7YGAiIG9yICJgYH1gYCIpIGFzCi10aGUgKmZpbGwqIGNoYXJhY3RlciB3aGVuIHVzaW5nIHRoZSA6bWV0aDpgc3RyLmZvcm1hdGAKK3RoZSAqZmlsbCogY2hhcmFjdGVyIGluIGEgOnJlZjpgZm9ybWF0dGVkIHN0cmluZyBsaXRlcmFsCis8Zi1zdHJpbmdzPmAgb3Igd2hlbiB1c2luZyB0aGUgOm1ldGg6YHN0ci5mb3JtYXRgCiBtZXRob2QuICBIb3dldmVyLCBpdCBpcyBwb3NzaWJsZSB0byBpbnNlcnQgYSBjdXJseSBicmFjZQogd2l0aCBhIG5lc3RlZCByZXBsYWNlbWVudCBmaWVsZC4gIFRoaXMgbGltaXRhdGlvbiBkb2Vzbid0CiBhZmZlY3QgdGhlIDpmdW5jOmBmb3JtYXRgIGZ1bmN0aW9uLgpAQCAtMzc0LDYgKzM3OSwxNiBAQAogLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjEKICAgIEFkZGVkIHRoZSBgYCcsJ2BgIG9wdGlvbiAoc2VlIGFsc28gOnBlcDpgMzc4YCkuCiAKK1RoZSBgYCdfJ2BgIG9wdGlvbiBzaWduYWxzIHRoZSB1c2Ugb2YgYW4gdW5kZXJzY29yZSBmb3IgYSB0aG91c2FuZHMKK3NlcGFyYXRvciBmb3IgZmxvYXRpbmcgcG9pbnQgcHJlc2VudGF0aW9uIHR5cGVzIGFuZCBmb3IgaW50ZWdlcgorcHJlc2VudGF0aW9uIHR5cGUgYGAnZCdgYC4gIEZvciBpbnRlZ2VyIHByZXNlbnRhdGlvbiB0eXBlcyBgYCdiJ2BgLAorYGAnbydgYCwgYGAneCdgYCwgYW5kIGBgJ1gnYGAsIHVuZGVyc2NvcmVzIHdpbGwgYmUgaW5zZXJ0ZWQgZXZlcnkgNAorZGlnaXRzLiAgRm9yIG90aGVyIHByZXNlbnRhdGlvbiB0eXBlcywgc3BlY2lmeWluZyB0aGlzIG9wdGlvbiBpcyBhbgorZXJyb3IuCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICBBZGRlZCB0aGUgYGAnXydgYCBvcHRpb24gKHNlZSBhbHNvIDpwZXA6YDUxNWApLgorCiAqd2lkdGgqIGlzIGEgZGVjaW1hbCBpbnRlZ2VyIGRlZmluaW5nIHRoZSBtaW5pbXVtIGZpZWxkIHdpZHRoLiAgSWYgbm90CiBzcGVjaWZpZWQsIHRoZW4gdGhlIGZpZWxkIHdpZHRoIHdpbGwgYmUgZGV0ZXJtaW5lZCBieSB0aGUgY29udGVudC4KIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3RydWN0LnJzdCBiL0RvYy9saWJyYXJ5L3N0cnVjdC5yc3QKaW5kZXggYWUyZTM4Zi4uY2MzMDE3YiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc3RydWN0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9zdHJ1Y3QucnN0CkBAIC0yMTYsNiArMjE2LDggQEAKICstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsKIHwgYGBOYGAgIHwgOmM6dHlwZTpgc2l6ZV90YCAgICAgICAgIHwgaW50ZWdlciAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgfCBcKDQpICAgICAgIHwKICstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsKK3wgYGBlYGAgIHwgXCg3KSAgICAgICAgICAgICAgICAgICAgIHwgZmxvYXQgICAgICAgICAgICAgIHwgMiAgICAgICAgICAgICAgfCBcKDUpICAgICAgIHwKKystLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsKIHwgYGBmYGAgIHwgOmM6dHlwZTpgZmxvYXRgICAgICAgICAgIHwgZmxvYXQgICAgICAgICAgICAgIHwgNCAgICAgICAgICAgICAgfCBcKDUpICAgICAgIHwKICstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsKIHwgYGBkYGAgIHwgOmM6dHlwZTpgZG91YmxlYCAgICAgICAgIHwgZmxvYXQgICAgICAgICAgICAgIHwgOCAgICAgICAgICAgICAgfCBcKDUpICAgICAgIHwKQEAgLTIzMCw2ICsyMzIsMTAgQEAKIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCiAgICBBZGRlZCBzdXBwb3J0IGZvciB0aGUgYGAnbidgYCBhbmQgYGAnTidgYCBmb3JtYXRzLgogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgQWRkZWQgc3VwcG9ydCBmb3IgdGhlIGBgJ2UnYGAgZm9ybWF0LgorCisKIE5vdGVzOgogCiAoMSkKQEAgLTI1Nyw5ICsyNjMsMTAgQEAKICAgIGZpdHMgeW91ciBhcHBsaWNhdGlvbi4KIAogKDUpCi0gICBGb3IgdGhlIGBgJ2YnYGAgYW5kIGBgJ2QnYGAgY29udmVyc2lvbiBjb2RlcywgdGhlIHBhY2tlZCByZXByZXNlbnRhdGlvbiB1c2VzCi0gICB0aGUgSUVFRSA3NTQgYmluYXJ5MzIgKGZvciBgYCdmJ2BgKSBvciBiaW5hcnk2NCAoZm9yIGBgJ2QnYGApIGZvcm1hdCwKLSAgIHJlZ2FyZGxlc3Mgb2YgdGhlIGZsb2F0aW5nLXBvaW50IGZvcm1hdCB1c2VkIGJ5IHRoZSBwbGF0Zm9ybS4KKyAgIEZvciB0aGUgYGAnZidgYCwgYGAnZCdgYCBhbmQgYGAnZSdgYCBjb252ZXJzaW9uIGNvZGVzLCB0aGUgcGFja2VkCisgICByZXByZXNlbnRhdGlvbiB1c2VzIHRoZSBJRUVFIDc1NCBiaW5hcnkzMiwgYmluYXJ5NjQgb3IgYmluYXJ5MTYgZm9ybWF0IChmb3IKKyAgIGBgJ2YnYGAsIGBgJ2QnYGAgb3IgYGAnZSdgYCByZXNwZWN0aXZlbHkpLCByZWdhcmRsZXNzIG9mIHRoZSBmbG9hdGluZy1wb2ludAorICAgZm9ybWF0IHVzZWQgYnkgdGhlIHBsYXRmb3JtLgogCiAoNikKICAgIFRoZSBgYCdQJ2BgIGZvcm1hdCBjaGFyYWN0ZXIgaXMgb25seSBhdmFpbGFibGUgZm9yIHRoZSBuYXRpdmUgYnl0ZSBvcmRlcmluZwpAQCAtMjY4LDYgKzI3NSwxNiBAQAogICAgb24gdGhlIGhvc3Qgc3lzdGVtLiBUaGUgc3RydWN0IG1vZHVsZSBkb2VzIG5vdCBpbnRlcnByZXQgdGhpcyBhcyBuYXRpdmUKICAgIG9yZGVyaW5nLCBzbyB0aGUgYGAnUCdgYCBmb3JtYXQgaXMgbm90IGF2YWlsYWJsZS4KIAorKDcpCisgICBUaGUgSUVFRSA3NTQgYmluYXJ5MTYgImhhbGYgcHJlY2lzaW9uIiB0eXBlIHdhcyBpbnRyb2R1Y2VkIGluIHRoZSAyMDA4CisgICByZXZpc2lvbiBvZiB0aGUgYElFRUUgNzU0IHN0YW5kYXJkIDxpZWVlIDc1NCBzdGFuZGFyZF8+YF8uIEl0IGhhcyBhIHNpZ24KKyAgIGJpdCwgYSA1LWJpdCBleHBvbmVudCBhbmQgMTEtYml0IHByZWNpc2lvbiAod2l0aCAxMCBiaXRzIGV4cGxpY2l0bHkgc3RvcmVkKSwKKyAgIGFuZCBjYW4gcmVwcmVzZW50IG51bWJlcnMgYmV0d2VlbiBhcHByb3hpbWF0ZWx5IGBgNi4xZS0wNWBgIGFuZCBgYDYuNWUrMDRgYAorICAgYXQgZnVsbCBwcmVjaXNpb24uIFRoaXMgdHlwZSBpcyBub3Qgd2lkZWx5IHN1cHBvcnRlZCBieSBDIGNvbXBpbGVyczogb24gYQorICAgdHlwaWNhbCBtYWNoaW5lLCBhbiB1bnNpZ25lZCBzaG9ydCBjYW4gYmUgdXNlZCBmb3Igc3RvcmFnZSwgYnV0IG5vdCBmb3IgbWF0aAorICAgb3BlcmF0aW9ucy4gU2VlIHRoZSBXaWtpcGVkaWEgcGFnZSBvbiB0aGUgYGhhbGYtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50CisgICBmb3JtYXQgPGhhbGYgcHJlY2lzaW9uIGZvcm1hdF8+YF8gZm9yIG1vcmUgaW5mb3JtYXRpb24uCisKIAogQSBmb3JtYXQgY2hhcmFjdGVyIG1heSBiZSBwcmVjZWRlZCBieSBhbiBpbnRlZ3JhbCByZXBlYXQgY291bnQuICBGb3IgZXhhbXBsZSwKIHRoZSBmb3JtYXQgc3RyaW5nIGBgJzRoJ2BgIG1lYW5zIGV4YWN0bHkgdGhlIHNhbWUgYXMgYGAnaGhoaCdgYC4KQEAgLTQzMCwzICs0NDcsNyBAQAogICAgICAgVGhlIGNhbGN1bGF0ZWQgc2l6ZSBvZiB0aGUgc3RydWN0IChhbmQgaGVuY2Ugb2YgdGhlIGJ5dGVzIG9iamVjdCBwcm9kdWNlZAogICAgICAgYnkgdGhlIDptZXRoOmBwYWNrYCBtZXRob2QpIGNvcnJlc3BvbmRpbmcgdG8gOmF0dHI6YGZvcm1hdGAuCiAKKworLi4gX2hhbGYgcHJlY2lzaW9uIGZvcm1hdDogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGFsZi1wcmVjaXNpb25fZmxvYXRpbmctcG9pbnRfZm9ybWF0CisKKy4uIF9pZWVlIDc1NCBzdGFuZGFyZDogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSUVFRV9mbG9hdGluZ19wb2ludCNJRUVFXzc1NC0yMDA4CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zdWJwcm9jZXNzLnJzdCBiL0RvYy9saWJyYXJ5L3N1YnByb2Nlc3MucnN0CmluZGV4IGMxYjI4ZjguLmFkMmFiZTggMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3N1YnByb2Nlc3MucnN0CisrKyBiL0RvYy9saWJyYXJ5L3N1YnByb2Nlc3MucnN0CkBAIC0zOCw3ICszOCw4IEBACiAKIAogLi4gZnVuY3Rpb246OiBydW4oYXJncywgKiwgc3RkaW49Tm9uZSwgaW5wdXQ9Tm9uZSwgc3Rkb3V0PU5vbmUsIHN0ZGVycj1Ob25lLFwKLSAgICAgICAgICAgICAgICAgIHNoZWxsPUZhbHNlLCB0aW1lb3V0PU5vbmUsIGNoZWNrPUZhbHNlKQorICAgICAgICAgICAgICAgICAgc2hlbGw9RmFsc2UsIHRpbWVvdXQ9Tm9uZSwgY2hlY2s9RmFsc2UsIFwKKyAgICAgICAgICAgICAgICAgIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lKQogCiAgICBSdW4gdGhlIGNvbW1hbmQgZGVzY3JpYmVkIGJ5ICphcmdzKi4gIFdhaXQgZm9yIGNvbW1hbmQgdG8gY29tcGxldGUsIHRoZW4KICAgIHJldHVybiBhIDpjbGFzczpgQ29tcGxldGVkUHJvY2Vzc2AgaW5zdGFuY2UuCkBAIC02MCwxNSArNjEsMjAgQEAKIAogICAgVGhlICppbnB1dCogYXJndW1lbnQgaXMgcGFzc2VkIHRvIDptZXRoOmBQb3Blbi5jb21tdW5pY2F0ZWAgYW5kIHRodXMgdG8gdGhlCiAgICBzdWJwcm9jZXNzJ3Mgc3RkaW4uICBJZiB1c2VkIGl0IG11c3QgYmUgYSBieXRlIHNlcXVlbmNlLCBvciBhIHN0cmluZyBpZgotICAgYGB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZWBgLiAgV2hlbiB1c2VkLCB0aGUgaW50ZXJuYWwgOmNsYXNzOmBQb3BlbmAgb2JqZWN0Ci0gICBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgd2l0aCBgYHN0ZGluPVBJUEVgYCwgYW5kIHRoZSAqc3RkaW4qIGFyZ3VtZW50IG1heQotICAgbm90IGJlIHVzZWQgYXMgd2VsbC4KKyAgICplbmNvZGluZyogb3IgKmVycm9ycyogaXMgc3BlY2lmaWVkIG9yICp1bml2ZXJzYWxfbmV3bGluZXMqIGlzIHRydWUuICBXaGVuCisgICB1c2VkLCB0aGUgaW50ZXJuYWwgOmNsYXNzOmBQb3BlbmAgb2JqZWN0IGlzIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCB3aXRoCisgICBgYHN0ZGluPVBJUEVgYCwgYW5kIHRoZSAqc3RkaW4qIGFyZ3VtZW50IG1heSBub3QgYmUgdXNlZCBhcyB3ZWxsLgogCiAgICBJZiAqY2hlY2sqIGlzIHRydWUsIGFuZCB0aGUgcHJvY2VzcyBleGl0cyB3aXRoIGEgbm9uLXplcm8gZXhpdCBjb2RlLCBhCiAgICA6ZXhjOmBDYWxsZWRQcm9jZXNzRXJyb3JgIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZC4gQXR0cmlidXRlcyBvZiB0aGF0CiAgICBleGNlcHRpb24gaG9sZCB0aGUgYXJndW1lbnRzLCB0aGUgZXhpdCBjb2RlLCBhbmQgc3Rkb3V0IGFuZCBzdGRlcnIgaWYgdGhleQogICAgd2VyZSBjYXB0dXJlZC4KIAorICAgSWYgKmVuY29kaW5nKiBvciAqZXJyb3JzKiBhcmUgc3BlY2lmaWVkLCBvciAqdW5pdmVyc2FsX25ld2xpbmVzKiBpcyB0cnVlLAorICAgZmlsZSBvYmplY3RzIGZvciBzdGRpbiwgc3Rkb3V0IGFuZCBzdGRlcnIgYXJlIG9wZW5lZCBpbiB0ZXh0IG1vZGUgdXNpbmcgdGhlCisgICBzcGVjaWZpZWQgKmVuY29kaW5nKiBhbmQgKmVycm9ycyogb3IgdGhlIDpjbGFzczpgaW8uVGV4dElPV3JhcHBlcmAgZGVmYXVsdC4KKyAgIE90aGVyd2lzZSwgZmlsZSBvYmplY3RzIGFyZSBvcGVuZWQgaW4gYmluYXJ5IG1vZGUuCisKICAgIEV4YW1wbGVzOjoKIAogICAgICAgPj4+IHN1YnByb2Nlc3MucnVuKFsibHMiLCAiLWwiXSkgICMgZG9lc24ndCBjYXB0dXJlIG91dHB1dApAQCAtODUsNiArOTEsMTAgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisKKyAgICAgIEFkZGVkICplbmNvZGluZyogYW5kICplcnJvcnMqIHBhcmFtZXRlcnMKKwogLi4gY2xhc3M6OiBDb21wbGV0ZWRQcm9jZXNzCiAKICAgIFRoZSByZXR1cm4gdmFsdWUgZnJvbSA6ZnVuYzpgcnVuYCwgcmVwcmVzZW50aW5nIGEgcHJvY2VzcyB0aGF0IGhhcyBmaW5pc2hlZC4KQEAgLTEwNCw4ICsxMTQsOCBAQAogICAgLi4gYXR0cmlidXRlOjogc3Rkb3V0CiAKICAgICAgIENhcHR1cmVkIHN0ZG91dCBmcm9tIHRoZSBjaGlsZCBwcm9jZXNzLiBBIGJ5dGVzIHNlcXVlbmNlLCBvciBhIHN0cmluZyBpZgotICAgICAgOmZ1bmM6YHJ1bmAgd2FzIGNhbGxlZCB3aXRoIGBgdW5pdmVyc2FsX25ld2xpbmVzPVRydWVgYC4gYGBOb25lYGAgaWYgc3Rkb3V0Ci0gICAgICB3YXMgbm90IGNhcHR1cmVkLgorICAgICAgOmZ1bmM6YHJ1bmAgd2FzIGNhbGxlZCB3aXRoIGFuIGVuY29kaW5nIG9yIGVycm9ycy4gYGBOb25lYGAgaWYgc3Rkb3V0IHdhcyBub3QKKyAgICAgIGNhcHR1cmVkLgogCiAgICAgICBJZiB5b3UgcmFuIHRoZSBwcm9jZXNzIHdpdGggYGBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVRgYCwgc3Rkb3V0IGFuZAogICAgICAgc3RkZXJyIHdpbGwgYmUgY29tYmluZWQgaW4gdGhpcyBhdHRyaWJ1dGUsIGFuZCA6YXR0cjpgc3RkZXJyYCB3aWxsIGJlCkBAIC0xMTQsOCArMTI0LDggQEAKICAgIC4uIGF0dHJpYnV0ZTo6IHN0ZGVycgogCiAgICAgICBDYXB0dXJlZCBzdGRlcnIgZnJvbSB0aGUgY2hpbGQgcHJvY2Vzcy4gQSBieXRlcyBzZXF1ZW5jZSwgb3IgYSBzdHJpbmcgaWYKLSAgICAgIDpmdW5jOmBydW5gIHdhcyBjYWxsZWQgd2l0aCBgYHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlYGAuIGBgTm9uZWBgIGlmIHN0ZGVycgotICAgICAgd2FzIG5vdCBjYXB0dXJlZC4KKyAgICAgIDpmdW5jOmBydW5gIHdhcyBjYWxsZWQgd2l0aCBhbiBlbmNvZGluZyBvciBlcnJvcnMuIGBgTm9uZWBgIGlmIHN0ZGVyciB3YXMgbm90CisgICAgICBjYXB0dXJlZC4KIAogICAgLi4gbWV0aG9kOjogY2hlY2tfcmV0dXJuY29kZSgpCiAKQEAgLTI0OSwxOSArMjU5LDIyIEBACiAgICAuLiBpbmRleDo6CiAgICAgICBzaW5nbGU6IHVuaXZlcnNhbCBuZXdsaW5lczsgc3VicHJvY2VzcyBtb2R1bGUKIAotICAgSWYgKnVuaXZlcnNhbF9uZXdsaW5lcyogaXMgYGBGYWxzZWBgIHRoZSBmaWxlIG9iamVjdHMgKnN0ZGluKiwgKnN0ZG91dCogYW5kCi0gICAqc3RkZXJyKiB3aWxsIGJlIG9wZW5lZCBhcyBiaW5hcnkgc3RyZWFtcywgYW5kIG5vIGxpbmUgZW5kaW5nIGNvbnZlcnNpb24gaXMKLSAgIGRvbmUuCisgICBJZiAqZW5jb2RpbmcqIG9yICplcnJvcnMqIGFyZSBzcGVjaWZpZWQsIG9yICp1bml2ZXJzYWxfbmV3bGluZXMqIGlzIHRydWUsCisgICB0aGUgZmlsZSBvYmplY3RzICpzdGRpbiosICpzdGRvdXQqIGFuZCAqc3RkZXJyKiB3aWxsIGJlIG9wZW5lZCBpbiB0ZXh0CisgICBtb2RlIHVzaW5nIHRoZSAqZW5jb2RpbmcqIGFuZCAqZXJyb3JzKiBzcGVjaWZpZWQgaW4gdGhlIGNhbGwgb3IgdGhlCisgICBkZWZhdWx0cyBmb3IgOmNsYXNzOmBpby5UZXh0SU9XcmFwcGVyYC4KIAotICAgSWYgKnVuaXZlcnNhbF9uZXdsaW5lcyogaXMgYGBUcnVlYGAsIHRoZXNlIGZpbGUgb2JqZWN0cwotICAgd2lsbCBiZSBvcGVuZWQgYXMgdGV4dCBzdHJlYW1zIGluIDp0ZXJtOmB1bml2ZXJzYWwgbmV3bGluZXNgIG1vZGUKLSAgIHVzaW5nIHRoZSBlbmNvZGluZyByZXR1cm5lZCBieSA6ZnVuYzpgbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKQotICAgPGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZz5gLiAgRm9yICpzdGRpbiosIGxpbmUgZW5kaW5nIGNoYXJhY3RlcnMKLSAgIGBgJ1xuJ2BgIGluIHRoZSBpbnB1dCB3aWxsIGJlIGNvbnZlcnRlZCB0byB0aGUgZGVmYXVsdCBsaW5lIHNlcGFyYXRvcgotICAgOmRhdGE6YG9zLmxpbmVzZXBgLiAgRm9yICpzdGRvdXQqIGFuZCAqc3RkZXJyKiwgYWxsIGxpbmUgZW5kaW5ncyBpbiB0aGUKLSAgIG91dHB1dCB3aWxsIGJlIGNvbnZlcnRlZCB0byBgYCdcbidgYC4gIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSB0aGUKLSAgIGRvY3VtZW50YXRpb24gb2YgdGhlIDpjbGFzczpgaW8uVGV4dElPV3JhcHBlcmAgY2xhc3Mgd2hlbiB0aGUgKm5ld2xpbmUqCi0gICBhcmd1bWVudCB0byBpdHMgY29uc3RydWN0b3IgaXMgYGBOb25lYGAuCisgICBGb3IgKnN0ZGluKiwgbGluZSBlbmRpbmcgY2hhcmFjdGVycyBgYCdcbidgYCBpbiB0aGUgaW5wdXQgd2lsbCBiZSBjb252ZXJ0ZWQKKyAgIHRvIHRoZSBkZWZhdWx0IGxpbmUgc2VwYXJhdG9yIDpkYXRhOmBvcy5saW5lc2VwYC4gRm9yICpzdGRvdXQqIGFuZCAqc3RkZXJyKiwKKyAgIGFsbCBsaW5lIGVuZGluZ3MgaW4gdGhlIG91dHB1dCB3aWxsIGJlIGNvbnZlcnRlZCB0byBgYCdcbidgYC4gIEZvciBtb3JlCisgICBpbmZvcm1hdGlvbiBzZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgdGhlIDpjbGFzczpgaW8uVGV4dElPV3JhcHBlcmAgY2xhc3MKKyAgIHdoZW4gdGhlICpuZXdsaW5lKiBhcmd1bWVudCB0byBpdHMgY29uc3RydWN0b3IgaXMgYGBOb25lYGAuCisKKyAgIElmIHRleHQgbW9kZSBpcyBub3QgdXNlZCwgKnN0ZGluKiwgKnN0ZG91dCogYW5kICpzdGRlcnIqIHdpbGwgYmUgb3BlbmVkIGFzCisgICBiaW5hcnkgc3RyZWFtcy4gTm8gZW5jb2Rpbmcgb3IgbGluZSBlbmRpbmcgY29udmVyc2lvbiBpcyBwZXJmb3JtZWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorICAgICAgQWRkZWQgKmVuY29kaW5nKiBhbmQgKmVycm9ycyogcGFyYW1ldGVycy4KIAogICAgLi4gbm90ZTo6CiAKQEAgLTMwNiw3ICszMTksOCBAQAogICAgICAgICAgICAgICAgICBzdGRlcnI9Tm9uZSwgcHJlZXhlY19mbj1Ob25lLCBjbG9zZV9mZHM9VHJ1ZSwgc2hlbGw9RmFsc2UsIFwKICAgICAgICAgICAgICAgICAgY3dkPU5vbmUsIGVudj1Ob25lLCB1bml2ZXJzYWxfbmV3bGluZXM9RmFsc2UsIFwKICAgICAgICAgICAgICAgICAgc3RhcnR1cGluZm89Tm9uZSwgY3JlYXRpb25mbGFncz0wLCByZXN0b3JlX3NpZ25hbHM9VHJ1ZSwgXAotICAgICAgICAgICAgICAgICBzdGFydF9uZXdfc2Vzc2lvbj1GYWxzZSwgcGFzc19mZHM9KCkpCisgICAgICAgICAgICAgICAgIHN0YXJ0X25ld19zZXNzaW9uPUZhbHNlLCBwYXNzX2Zkcz0oKSwgKiwgXAorICAgICAgICAgICAgICAgICBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSkKIAogICAgRXhlY3V0ZSBhIGNoaWxkIHByb2dyYW0gaW4gYSBuZXcgcHJvY2Vzcy4gIE9uIFBPU0lYLCB0aGUgY2xhc3MgdXNlcwogICAgOm1ldGg6YG9zLmV4ZWN2cGAtbGlrZSBiZWhhdmlvciB0byBleGVjdXRlIHRoZSBjaGlsZCBwcm9ncmFtLiAgT24gV2luZG93cywKQEAgLTQ4MiwxMCArNDk2LDE0IEBACiAKICAgIC4uIF9zaWRlLWJ5LXNpZGUgYXNzZW1ibHk6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NpZGUtYnktU2lkZV9Bc3NlbWJseQogCi0gICBJZiAqdW5pdmVyc2FsX25ld2xpbmVzKiBpcyBgYFRydWVgYCwgdGhlIGZpbGUgb2JqZWN0cyAqc3RkaW4qLCAqc3Rkb3V0KgotICAgYW5kICpzdGRlcnIqIGFyZSBvcGVuZWQgYXMgdGV4dCBzdHJlYW1zIGluIHVuaXZlcnNhbCBuZXdsaW5lcyBtb2RlLCBhcwotICAgZGVzY3JpYmVkIGFib3ZlIGluIDpyZWY6YGZyZXF1ZW50bHktdXNlZC1hcmd1bWVudHNgLCBvdGhlcndpc2UgdGhleSBhcmUKLSAgIG9wZW5lZCBhcyBiaW5hcnkgc3RyZWFtcy4KKyAgIElmICplbmNvZGluZyogb3IgKmVycm9ycyogYXJlIHNwZWNpZmllZCwgdGhlIGZpbGUgb2JqZWN0cyAqc3RkaW4qLCAqc3Rkb3V0KgorICAgYW5kICpzdGRlcnIqIGFyZSBvcGVuZWQgaW4gdGV4dCBtb2RlIHdpdGggdGhlIHNwZWNpZmllZCBlbmNvZGluZyBhbmQKKyAgICplcnJvcnMqLCBhcyBkZXNjcmliZWQgYWJvdmUgaW4gOnJlZjpgZnJlcXVlbnRseS11c2VkLWFyZ3VtZW50c2AuIElmCisgICAqdW5pdmVyc2FsX25ld2xpbmVzKiBpcyBgYFRydWVgYCwgdGhleSBhcmUgb3BlbmVkIGluIHRleHQgbW9kZSB3aXRoIGRlZmF1bHQKKyAgIGVuY29kaW5nLiBPdGhlcndpc2UsIHRoZXkgYXJlIG9wZW5lZCBhcyBiaW5hcnkgc3RyZWFtcy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisgICAgICAqZW5jb2RpbmcqIGFuZCAqZXJyb3JzKiB3ZXJlIGFkZGVkLgogCiAgICBJZiBnaXZlbiwgKnN0YXJ0dXBpbmZvKiB3aWxsIGJlIGEgOmNsYXNzOmBTVEFSVFVQSU5GT2Agb2JqZWN0LCB3aGljaCBpcwogICAgcGFzc2VkIHRvIHRoZSB1bmRlcmx5aW5nIGBgQ3JlYXRlUHJvY2Vzc2BgIGZ1bmN0aW9uLgpAQCAtNTAyLDYgKzUyMCwxMCBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIEFkZGVkIGNvbnRleHQgbWFuYWdlciBzdXBwb3J0LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgUG9wZW4gZGVzdHJ1Y3RvciBub3cgZW1pdHMgYSA6ZXhjOmBSZXNvdXJjZVdhcm5pbmdgIHdhcm5pbmcgaWYgdGhlIGNoaWxkCisgICAgICBwcm9jZXNzIGlzIHN0aWxsIHJ1bm5pbmcuCisKIAogRXhjZXB0aW9ucwogXl5eXl5eXl5eXgpAQCAtNTk3LDExICs2MTksMTIgQEAKICAgIEludGVyYWN0IHdpdGggcHJvY2VzczogU2VuZCBkYXRhIHRvIHN0ZGluLiAgUmVhZCBkYXRhIGZyb20gc3Rkb3V0IGFuZCBzdGRlcnIsCiAgICB1bnRpbCBlbmQtb2YtZmlsZSBpcyByZWFjaGVkLiAgV2FpdCBmb3IgcHJvY2VzcyB0byB0ZXJtaW5hdGUuICBUaGUgb3B0aW9uYWwKICAgICppbnB1dCogYXJndW1lbnQgc2hvdWxkIGJlIGRhdGEgdG8gYmUgc2VudCB0byB0aGUgY2hpbGQgcHJvY2Vzcywgb3IKLSAgIGBgTm9uZWBgLCBpZiBubyBkYXRhIHNob3VsZCBiZSBzZW50IHRvIHRoZSBjaGlsZC4gIFRoZSB0eXBlIG9mICppbnB1dCoKLSAgIG11c3QgYmUgYnl0ZXMgb3IsIGlmICp1bml2ZXJzYWxfbmV3bGluZXMqIHdhcyBgYFRydWVgYCwgYSBzdHJpbmcuCisgICBgYE5vbmVgYCwgaWYgbm8gZGF0YSBzaG91bGQgYmUgc2VudCB0byB0aGUgY2hpbGQuICBJZiBzdHJlYW1zIHdlcmUgb3BlbmVkIGluCisgICB0ZXh0IG1vZGUsICppbnB1dCogbXVzdCBiZSBhIHN0cmluZy4gIE90aGVyd2lzZSwgaXQgbXVzdCBiZSBieXRlcy4KIAogICAgOm1ldGg6YGNvbW11bmljYXRlYCByZXR1cm5zIGEgdHVwbGUgYGAoc3Rkb3V0X2RhdGEsIHN0ZGVycl9kYXRhKWBgLgotICAgVGhlIGRhdGEgd2lsbCBiZSBieXRlcyBvciwgaWYgKnVuaXZlcnNhbF9uZXdsaW5lcyogd2FzIGBgVHJ1ZWBgLCBzdHJpbmdzLgorICAgVGhlIGRhdGEgd2lsbCBiZSBzdHJpbmdzIGlmIHN0cmVhbXMgd2VyZSBvcGVuZWQgaW4gdGV4dCBtb2RlOyBvdGhlcndpc2UsCisgICBieXRlcy4KIAogICAgTm90ZSB0aGF0IGlmIHlvdSB3YW50IHRvIHNlbmQgZGF0YSB0byB0aGUgcHJvY2VzcydzIHN0ZGluLCB5b3UgbmVlZCB0byBjcmVhdGUKICAgIHRoZSBQb3BlbiBvYmplY3Qgd2l0aCBgYHN0ZGluPVBJUEVgYC4gIFNpbWlsYXJseSwgdG8gZ2V0IGFueXRoaW5nIG90aGVyIHRoYW4KQEAgLTY2OCwyOCArNjkxLDMwIEBACiAuLiBhdHRyaWJ1dGU6OiBQb3Blbi5zdGRpbgogCiAgICBJZiB0aGUgKnN0ZGluKiBhcmd1bWVudCB3YXMgOmRhdGE6YFBJUEVgLCB0aGlzIGF0dHJpYnV0ZSBpcyBhIHdyaXRlYWJsZQotICAgc3RyZWFtIG9iamVjdCBhcyByZXR1cm5lZCBieSA6ZnVuYzpgb3BlbmAuIElmIHRoZSAqdW5pdmVyc2FsX25ld2xpbmVzKgotICAgYXJndW1lbnQgd2FzIGBgVHJ1ZWBgLCB0aGUgc3RyZWFtIGlzIGEgdGV4dCBzdHJlYW0sIG90aGVyd2lzZSBpdCBpcyBhIGJ5dGUKLSAgIHN0cmVhbS4gSWYgdGhlICpzdGRpbiogYXJndW1lbnQgd2FzIG5vdCA6ZGF0YTpgUElQRWAsIHRoaXMgYXR0cmlidXRlIGlzCi0gICBgYE5vbmVgYC4KKyAgIHN0cmVhbSBvYmplY3QgYXMgcmV0dXJuZWQgYnkgOmZ1bmM6YG9wZW5gLiBJZiB0aGUgKmVuY29kaW5nKiBvciAqZXJyb3JzKgorICAgYXJndW1lbnRzIHdlcmUgc3BlY2lmaWVkIG9yIHRoZSAqdW5pdmVyc2FsX25ld2xpbmVzKiBhcmd1bWVudCB3YXMgYGBUcnVlYGAsCisgICB0aGUgc3RyZWFtIGlzIGEgdGV4dCBzdHJlYW0sIG90aGVyd2lzZSBpdCBpcyBhIGJ5dGUgc3RyZWFtLiBJZiB0aGUgKnN0ZGluKgorICAgYXJndW1lbnQgd2FzIG5vdCA6ZGF0YTpgUElQRWAsIHRoaXMgYXR0cmlidXRlIGlzIGBgTm9uZWBgLgogCiAKIC4uIGF0dHJpYnV0ZTo6IFBvcGVuLnN0ZG91dAogCiAgICBJZiB0aGUgKnN0ZG91dCogYXJndW1lbnQgd2FzIDpkYXRhOmBQSVBFYCwgdGhpcyBhdHRyaWJ1dGUgaXMgYSByZWFkYWJsZQogICAgc3RyZWFtIG9iamVjdCBhcyByZXR1cm5lZCBieSA6ZnVuYzpgb3BlbmAuIFJlYWRpbmcgZnJvbSB0aGUgc3RyZWFtIHByb3ZpZGVzCi0gICBvdXRwdXQgZnJvbSB0aGUgY2hpbGQgcHJvY2Vzcy4gSWYgdGhlICp1bml2ZXJzYWxfbmV3bGluZXMqIGFyZ3VtZW50IHdhcwotICAgYGBUcnVlYGAsIHRoZSBzdHJlYW0gaXMgYSB0ZXh0IHN0cmVhbSwgb3RoZXJ3aXNlIGl0IGlzIGEgYnl0ZSBzdHJlYW0uIElmIHRoZQotICAgKnN0ZG91dCogYXJndW1lbnQgd2FzIG5vdCA6ZGF0YTpgUElQRWAsIHRoaXMgYXR0cmlidXRlIGlzIGBgTm9uZWBgLgorICAgb3V0cHV0IGZyb20gdGhlIGNoaWxkIHByb2Nlc3MuIElmIHRoZSAqZW5jb2RpbmcqIG9yICplcnJvcnMqIGFyZ3VtZW50cyB3ZXJlCisgICBzcGVjaWZpZWQgb3IgdGhlICp1bml2ZXJzYWxfbmV3bGluZXMqIGFyZ3VtZW50IHdhcyBgYFRydWVgYCwgdGhlIHN0cmVhbSBpcyBhCisgICB0ZXh0IHN0cmVhbSwgb3RoZXJ3aXNlIGl0IGlzIGEgYnl0ZSBzdHJlYW0uIElmIHRoZSAqc3Rkb3V0KiBhcmd1bWVudCB3YXMgbm90CisgICA6ZGF0YTpgUElQRWAsIHRoaXMgYXR0cmlidXRlIGlzIGBgTm9uZWBgLgogCiAKIC4uIGF0dHJpYnV0ZTo6IFBvcGVuLnN0ZGVycgogCiAgICBJZiB0aGUgKnN0ZGVyciogYXJndW1lbnQgd2FzIDpkYXRhOmBQSVBFYCwgdGhpcyBhdHRyaWJ1dGUgaXMgYSByZWFkYWJsZQogICAgc3RyZWFtIG9iamVjdCBhcyByZXR1cm5lZCBieSA6ZnVuYzpgb3BlbmAuIFJlYWRpbmcgZnJvbSB0aGUgc3RyZWFtIHByb3ZpZGVzCi0gICBlcnJvciBvdXRwdXQgZnJvbSB0aGUgY2hpbGQgcHJvY2Vzcy4gSWYgdGhlICp1bml2ZXJzYWxfbmV3bGluZXMqIGFyZ3VtZW50IHdhcwotICAgYGBUcnVlYGAsIHRoZSBzdHJlYW0gaXMgYSB0ZXh0IHN0cmVhbSwgb3RoZXJ3aXNlIGl0IGlzIGEgYnl0ZSBzdHJlYW0uIElmIHRoZQotICAgKnN0ZGVyciogYXJndW1lbnQgd2FzIG5vdCA6ZGF0YTpgUElQRWAsIHRoaXMgYXR0cmlidXRlIGlzIGBgTm9uZWBgLgorICAgZXJyb3Igb3V0cHV0IGZyb20gdGhlIGNoaWxkIHByb2Nlc3MuIElmIHRoZSAqZW5jb2RpbmcqIG9yICplcnJvcnMqIGFyZ3VtZW50cworICAgd2VyZSBzcGVjaWZpZWQgb3IgdGhlICp1bml2ZXJzYWxfbmV3bGluZXMqIGFyZ3VtZW50IHdhcyBgYFRydWVgYCwgdGhlIHN0cmVhbQorICAgaXMgYSB0ZXh0IHN0cmVhbSwgb3RoZXJ3aXNlIGl0IGlzIGEgYnl0ZSBzdHJlYW0uIElmIHRoZSAqc3RkZXJyKiBhcmd1bWVudCB3YXMKKyAgIG5vdCA6ZGF0YTpgUElQRWAsIHRoaXMgYXR0cmlidXRlIGlzIGBgTm9uZWBgLgogCiAuLiB3YXJuaW5nOjoKIApAQCAtODgyLDcgKzkwNyw5IEBACiAgICAgICAqdGltZW91dCogd2FzIGFkZGVkLgogCiAKLS4uIGZ1bmN0aW9uOjogY2hlY2tfb3V0cHV0KGFyZ3MsICosIHN0ZGluPU5vbmUsIHN0ZGVycj1Ob25lLCBzaGVsbD1GYWxzZSwgdW5pdmVyc2FsX25ld2xpbmVzPUZhbHNlLCB0aW1lb3V0PU5vbmUpCisuLiBmdW5jdGlvbjo6IGNoZWNrX291dHB1dChhcmdzLCAqLCBzdGRpbj1Ob25lLCBzdGRlcnI9Tm9uZSwgc2hlbGw9RmFsc2UsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml2ZXJzYWxfbmV3bGluZXM9RmFsc2UsIHRpbWVvdXQ9Tm9uZSkKIAogICAgUnVuIGNvbW1hbmQgd2l0aCBhcmd1bWVudHMgYW5kIHJldHVybiBpdHMgb3V0cHV0LgogCkBAIC0xMTM4LDcgKzExNjUsNyBAQAogICAgUmV0dXJuIGBgKHN0YXR1cywgb3V0cHV0KWBgIG9mIGV4ZWN1dGluZyAqY21kKiBpbiBhIHNoZWxsLgogCiAgICBFeGVjdXRlIHRoZSBzdHJpbmcgKmNtZCogaW4gYSBzaGVsbCB3aXRoIDptZXRoOmBQb3Blbi5jaGVja19vdXRwdXRgIGFuZAotICAgcmV0dXJuIGEgMi10dXBsZSBgYChzdGF0dXMsIG91dHB1dClgYC4gVW5pdmVyc2FsIG5ld2xpbmVzIG1vZGUgaXMgdXNlZDsKKyAgIHJldHVybiBhIDItdHVwbGUgYGAoc3RhdHVzLCBvdXRwdXQpYGAuIFRoZSBsb2NhbGUgZW5jb2RpbmcgaXMgdXNlZDsKICAgIHNlZSB0aGUgbm90ZXMgb24gOnJlZjpgZnJlcXVlbnRseS11c2VkLWFyZ3VtZW50c2AgZm9yIG1vcmUgZGV0YWlscy4KIAogICAgQSB0cmFpbGluZyBuZXdsaW5lIGlzIHN0cmlwcGVkIGZyb20gdGhlIG91dHB1dC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3N5cy5yc3QgYi9Eb2MvbGlicmFyeS9zeXMucnN0CmluZGV4IGQyOGVhNWQuLmRkNTFmZmQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3N5cy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3lzLnJzdApAQCAtMjY5LDYgKzI2OSwxMSBAQAogICAgdGhlIHByb2Nlc3Mgd2hlbiBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQsIGFuZCB0aGUgZXhjZXB0aW9uIGlzIG5vdAogICAgaW50ZXJjZXB0ZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBJZiBhbiBlcnJvciBvY2N1cnMgaW4gdGhlIGNsZWFudXAgYWZ0ZXIgdGhlIFB5dGhvbiBpbnRlcnByZXRlcgorICAgICAgaGFzIGNhdWdodCA6ZXhjOmBTeXN0ZW1FeGl0YCAoc3VjaCBhcyBhbiBlcnJvciBmbHVzaGluZyBidWZmZXJlZCBkYXRhCisgICAgICBpbiB0aGUgc3RhbmRhcmQgc3RyZWFtcyksIHRoZSBleGl0IHN0YXR1cyBpcyBjaGFuZ2VkIHRvIDEyMC4KKwogCiAuLiBkYXRhOjogZmxhZ3MKIApAQCAtNDIzLDI1ICs0MjgsNDIgQEAKIAogLi4gZnVuY3Rpb246OiBnZXRmaWxlc3lzdGVtZW5jb2RpbmcoKQogCi0gICBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGVuY29kaW5nIHVzZWQgdG8gY29udmVydCBVbmljb2RlIGZpbGVuYW1lcyBpbnRvCi0gICBzeXN0ZW0gZmlsZSBuYW1lcy4gVGhlIHJlc3VsdCB2YWx1ZSBkZXBlbmRzIG9uIHRoZSBvcGVyYXRpbmcgc3lzdGVtOgorICAgUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBlbmNvZGluZyB1c2VkIHRvIGNvbnZlcnQgYmV0d2VlbiBVbmljb2RlCisgICBmaWxlbmFtZXMgYW5kIGJ5dGVzIGZpbGVuYW1lcy4gRm9yIGJlc3QgY29tcGF0aWJpbGl0eSwgc3RyIHNob3VsZCBiZQorICAgdXNlZCBmb3IgZmlsZW5hbWVzIGluIGFsbCBjYXNlcywgYWx0aG91Z2ggcmVwcmVzZW50aW5nIGZpbGVuYW1lcyBhcyBieXRlcworICAgaXMgYWxzbyBzdXBwb3J0ZWQuIEZ1bmN0aW9ucyBhY2NlcHRpbmcgb3IgcmV0dXJuaW5nIGZpbGVuYW1lcyBzaG91bGQgc3VwcG9ydAorICAgZWl0aGVyIHN0ciBvciBieXRlcyBhbmQgaW50ZXJuYWxseSBjb252ZXJ0IHRvIHRoZSBzeXN0ZW0ncyBwcmVmZXJyZWQKKyAgIHJlcHJlc2VudGF0aW9uLgorCisgICBUaGlzIGVuY29kaW5nIGlzIGFsd2F5cyBBU0NJSS1jb21wYXRpYmxlLgorCisgICA6ZnVuYzpgb3MuZnNlbmNvZGVgIGFuZCA6ZnVuYzpgb3MuZnNkZWNvZGVgIHNob3VsZCBiZSB1c2VkIHRvIGVuc3VyZSB0aGF0CisgICB0aGUgY29ycmVjdCBlbmNvZGluZyBhbmQgZXJyb3JzIG1vZGUgYXJlIHVzZWQuCiAKICAgICogT24gTWFjIE9TIFgsIHRoZSBlbmNvZGluZyBpcyBgYCd1dGYtOCdgYC4KIAotICAgKiBPbiBVbml4LCB0aGUgZW5jb2RpbmcgaXMgdGhlIHVzZXIncyBwcmVmZXJlbmNlIGFjY29yZGluZyB0byB0aGUgcmVzdWx0IG9mCi0gICAgIG5sX2xhbmdpbmZvKENPREVTRVQpLgorICAgKiBPbiBVbml4LCB0aGUgZW5jb2RpbmcgaXMgdGhlIGxvY2FsZSBlbmNvZGluZy4KIAotICAgKiBPbiBXaW5kb3dzIE5UKywgZmlsZSBuYW1lcyBhcmUgVW5pY29kZSBuYXRpdmVseSwgc28gbm8gY29udmVyc2lvbiBpcwotICAgICBwZXJmb3JtZWQuIDpmdW5jOmBnZXRmaWxlc3lzdGVtZW5jb2RpbmdgIHN0aWxsIHJldHVybnMgYGAnbWJjcydgYCwgYXMKLSAgICAgdGhpcyBpcyB0aGUgZW5jb2RpbmcgdGhhdCBhcHBsaWNhdGlvbnMgc2hvdWxkIHVzZSB3aGVuIHRoZXkgZXhwbGljaXRseQotICAgICB3YW50IHRvIGNvbnZlcnQgVW5pY29kZSBzdHJpbmdzIHRvIGJ5dGUgc3RyaW5ncyB0aGF0IGFyZSBlcXVpdmFsZW50IHdoZW4KLSAgICAgdXNlZCBhcyBmaWxlIG5hbWVzLgotCi0gICAqIE9uIFdpbmRvd3MgOXgsIHRoZSBlbmNvZGluZyBpcyBgYCdtYmNzJ2BgLgorICAgKiBPbiBXaW5kb3dzLCB0aGUgZW5jb2RpbmcgbWF5IGJlIGBgJ3V0Zi04J2BgIG9yIGBgJ21iY3MnYGAsIGRlcGVuZGluZworICAgICBvbiB1c2VyIGNvbmZpZ3VyYXRpb24uCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICA6ZnVuYzpgZ2V0ZmlsZXN5c3RlbWVuY29kaW5nYCByZXN1bHQgY2Fubm90IGJlIGBgTm9uZWBgIGFueW1vcmUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBXaW5kb3dzIGlzIG5vIGxvbmdlciBndWFyYW50ZWVkIHRvIHJldHVybiBgYCdtYmNzJ2BgLiBTZWUgOnBlcDpgNTI5YAorICAgICAgYW5kIDpmdW5jOmBfZW5hYmxlbGVnYWN5d2luZG93c2ZzZW5jb2RpbmdgIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCisuLiBmdW5jdGlvbjo6IGdldGZpbGVzeXN0ZW1lbmNvZGVlcnJvcnMoKQorCisgICBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGVycm9yIG1vZGUgdXNlZCB0byBjb252ZXJ0IGJldHdlZW4gVW5pY29kZSBmaWxlbmFtZXMKKyAgIGFuZCBieXRlcyBmaWxlbmFtZXMuIFRoZSBlbmNvZGluZyBuYW1lIGlzIHJldHVybmVkIGZyb20KKyAgIDpmdW5jOmBnZXRmaWxlc3lzdGVtZW5jb2RpbmdgLgorCisgICA6ZnVuYzpgb3MuZnNlbmNvZGVgIGFuZCA6ZnVuYzpgb3MuZnNkZWNvZGVgIHNob3VsZCBiZSB1c2VkIHRvIGVuc3VyZSB0aGF0CisgICB0aGUgY29ycmVjdCBlbmNvZGluZyBhbmQgZXJyb3JzIG1vZGUgYXJlIHVzZWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgogCiAuLiBmdW5jdGlvbjo6IGdldHJlZmNvdW50KG9iamVjdCkKIApAQCAtNTMwLDI2ICs1NTIsMTUgQEAKICAgIFJldHVybiBhIG5hbWVkIHR1cGxlIGRlc2NyaWJpbmcgdGhlIFdpbmRvd3MgdmVyc2lvbgogICAgY3VycmVudGx5IHJ1bm5pbmcuICBUaGUgbmFtZWQgZWxlbWVudHMgYXJlICptYWpvciosICptaW5vciosCiAgICAqYnVpbGQqLCAqcGxhdGZvcm0qLCAqc2VydmljZV9wYWNrKiwgKnNlcnZpY2VfcGFja19taW5vciosCi0gICAqc2VydmljZV9wYWNrX21ham9yKiwgKnN1aXRlX21hc2sqLCBhbmQgKnByb2R1Y3RfdHlwZSouCi0gICAqc2VydmljZV9wYWNrKiBjb250YWlucyBhIHN0cmluZyB3aGlsZSBhbGwgb3RoZXIgdmFsdWVzIGFyZQorICAgKnNlcnZpY2VfcGFja19tYWpvciosICpzdWl0ZV9tYXNrKiwgKnByb2R1Y3RfdHlwZSogYW5kCisgICAqcGxhdGZvcm1fdmVyc2lvbiouICpzZXJ2aWNlX3BhY2sqIGNvbnRhaW5zIGEgc3RyaW5nLAorICAgKnBsYXRmb3JtX3ZlcnNpb24qIGEgMy10dXBsZSBhbmQgYWxsIG90aGVyIHZhbHVlcyBhcmUKICAgIGludGVnZXJzLiBUaGUgY29tcG9uZW50cyBjYW4gYWxzbyBiZSBhY2Nlc3NlZCBieSBuYW1lLCBzbwogICAgYGBzeXMuZ2V0d2luZG93c3ZlcnNpb24oKVswXWBgIGlzIGVxdWl2YWxlbnQgdG8KICAgIGBgc3lzLmdldHdpbmRvd3N2ZXJzaW9uKCkubWFqb3JgYC4gRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBwcmlvcgogICAgdmVyc2lvbnMsIG9ubHkgdGhlIGZpcnN0IDUgZWxlbWVudHMgYXJlIHJldHJpZXZhYmxlIGJ5IGluZGV4aW5nLgogCi0gICAqcGxhdGZvcm0qIG1heSBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6Ci0KLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCBDb25zdGFudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQbGF0Zm9ybSAgICAgICAgICAgICAgICB8Ci0gICArPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PSsKLSAgIHwgOmNvbnN0OmAwIChWRVJfUExBVEZPUk1fV0lOMzJzKWAgICAgICAgIHwgV2luMzJzIG9uIFdpbmRvd3MgMy4xICAgfAotICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IDpjb25zdDpgMSAoVkVSX1BMQVRGT1JNX1dJTjMyX1dJTkRPV1MpYCB8IFdpbmRvd3MgOTUvOTgvTUUgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCA6Y29uc3Q6YDIgKFZFUl9QTEFURk9STV9XSU4zMl9OVClgICAgICAgfCBXaW5kb3dzIE5ULzIwMDAvWFAveDY0ICB8Ci0gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmAzIChWRVJfUExBVEZPUk1fV0lOMzJfQ0UpYCAgICAgIHwgV2luZG93cyBDRSAgICAgICAgICAgICAgfAotICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAqcGxhdGZvcm0qIHdpbGwgYmUgOmNvbnN0OmAyIChWRVJfUExBVEZPUk1fV0lOMzJfTlQpYC4KIAogICAgKnByb2R1Y3RfdHlwZSogbWF5IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKIApAQCAtNTY1LDE3ICs1NzYsNDEgQEAKICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGEgZG9tYWluIGNvbnRyb2xsZXIuICAgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAKLQogICAgVGhpcyBmdW5jdGlvbiB3cmFwcyB0aGUgV2luMzIgOmM6ZnVuYzpgR2V0VmVyc2lvbkV4YCBmdW5jdGlvbjsgc2VlIHRoZQogICAgTWljcm9zb2Z0IGRvY3VtZW50YXRpb24gb24gOmM6ZnVuYzpgT1NWRVJTSU9OSU5GT0VYYCBmb3IgbW9yZSBpbmZvcm1hdGlvbgogICAgYWJvdXQgdGhlc2UgZmllbGRzLgogCisgICAqcGxhdGZvcm1fdmVyc2lvbiogcmV0dXJucyB0aGUgYWNjdXJhdGUgbWFqb3IgdmVyc2lvbiwgbWlub3IgdmVyc2lvbiBhbmQKKyAgIGJ1aWxkIG51bWJlciBvZiB0aGUgY3VycmVudCBvcGVyYXRpbmcgc3lzdGVtLCByYXRoZXIgdGhhbiB0aGUgdmVyc2lvbiB0aGF0CisgICBpcyBiZWluZyBlbXVsYXRlZCBmb3IgdGhlIHByb2Nlc3MuIEl0IGlzIGludGVuZGVkIGZvciB1c2UgaW4gbG9nZ2luZyByYXRoZXIKKyAgIHRoYW4gZm9yIGZlYXR1cmUgZGV0ZWN0aW9uLgorCiAgICBBdmFpbGFiaWxpdHk6IFdpbmRvd3MuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBDaGFuZ2VkIHRvIGEgbmFtZWQgdHVwbGUgYW5kIGFkZGVkICpzZXJ2aWNlX3BhY2tfbWlub3IqLAogICAgICAgKnNlcnZpY2VfcGFja19tYWpvciosICpzdWl0ZV9tYXNrKiwgYW5kICpwcm9kdWN0X3R5cGUqLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWRkZWQgKnBsYXRmb3JtX3ZlcnNpb24qCisKKworLi4gZnVuY3Rpb246OiBnZXRfYXN5bmNnZW5faG9va3MoKQorCisgICBSZXR1cm5zIGFuICphc3luY2dlbl9ob29rcyogb2JqZWN0LCB3aGljaCBpcyBzaW1pbGFyIHRvIGEKKyAgIDpjbGFzczpgfmNvbGxlY3Rpb25zLm5hbWVkdHVwbGVgIG9mIHRoZSBmb3JtIGAoZmlyc3RpdGVyLCBmaW5hbGl6ZXIpYCwKKyAgIHdoZXJlICpmaXJzdGl0ZXIqIGFuZCAqZmluYWxpemVyKiBhcmUgZXhwZWN0ZWQgdG8gYmUgZWl0aGVyIGBgTm9uZWBgIG9yCisgICBmdW5jdGlvbnMgd2hpY2ggdGFrZSBhbiA6dGVybTpgYXN5bmNocm9ub3VzIGdlbmVyYXRvciBpdGVyYXRvcmAgYXMgYW4KKyAgIGFyZ3VtZW50LCBhbmQgYXJlIHVzZWQgdG8gc2NoZWR1bGUgZmluYWxpemF0aW9uIG9mIGFuIGFzeWNocm9ub3VzCisgICBnZW5lcmF0b3IgYnkgYW4gZXZlbnQgbG9vcC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisgICAgICBTZWUgOnBlcDpgNTI1YCBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAuLiBub3RlOjoKKyAgICAgIFRoaXMgZnVuY3Rpb24gaGFzIGJlZW4gYWRkZWQgb24gYSBwcm92aXNpb25hbCBiYXNpcyAoc2VlIDpwZXA6YDQxMWAKKyAgICAgIGZvciBkZXRhaWxzLikKKwogCiAuLiBmdW5jdGlvbjo6IGdldF9jb3JvdXRpbmVfd3JhcHBlcigpCiAKQEAgLTEwODEsMTcgKzExMTYsMjMgQEAKICAgICAgIGltcGxlbWVudGF0aW9uIHBsYXRmb3JtLCByYXRoZXIgdGhhbiBwYXJ0IG9mIHRoZSBsYW5ndWFnZSBkZWZpbml0aW9uLCBhbmQKICAgICAgIHRodXMgbWF5IG5vdCBiZSBhdmFpbGFibGUgaW4gYWxsIFB5dGhvbiBpbXBsZW1lbnRhdGlvbnMuCiAKKy4uIGZ1bmN0aW9uOjogc2V0X2FzeW5jZ2VuX2hvb2tzKGZpcnN0aXRlciwgZmluYWxpemVyKQogCi0uLiBmdW5jdGlvbjo6IHNldHRzY2R1bXAob25fZmxhZykKKyAgIEFjY2VwdHMgdHdvIG9wdGlvbmFsIGtleXdvcmQgYXJndW1lbnRzIHdoaWNoIGFyZSBjYWxsYWJsZXMgdGhhdCBhY2NlcHQgYW4KKyAgIDp0ZXJtOmBhc3luY2hyb25vdXMgZ2VuZXJhdG9yIGl0ZXJhdG9yYCBhcyBhbiBhcmd1bWVudC4gVGhlICpmaXJzdGl0ZXIqCisgICBjYWxsYWJsZSB3aWxsIGJlIGNhbGxlZCB3aGVuIGFuIGFzeW5jaHJvbm91cyBnZW5lcmF0b3IgaXMgaXRlcmF0ZWQgZm9yIHRoZQorICAgZmlyc3QgdGltZS4gVGhlICpmaW5hbGl6ZXIqIHdpbGwgYmUgY2FsbGVkIHdoZW4gYW4gYXN5bmNocm9ub3VzIGdlbmVyYXRvcgorICAgaXMgYWJvdXQgdG8gYmUgZ2FyYmFnZSBjb2xsZWN0ZWQuCiAKLSAgIEFjdGl2YXRlIGR1bXBpbmcgb2YgVk0gbWVhc3VyZW1lbnRzIHVzaW5nIHRoZSBQZW50aXVtIHRpbWVzdGFtcCBjb3VudGVyLCBpZgotICAgKm9uX2ZsYWcqIGlzIHRydWUuIERlYWN0aXZhdGUgdGhlc2UgZHVtcHMgaWYgKm9uX2ZsYWcqIGlzIG9mZi4gVGhlIGZ1bmN0aW9uIGlzCi0gICBhdmFpbGFibGUgb25seSBpZiBQeXRob24gd2FzIGNvbXBpbGVkIHdpdGggYGAtLXdpdGgtdHNjYGAuIFRvIHVuZGVyc3RhbmQKLSAgIHRoZSBvdXRwdXQgb2YgdGhpcyBkdW1wLCByZWFkIDpmaWxlOmBQeXRob24vY2V2YWwuY2AgaW4gdGhlIFB5dGhvbiBzb3VyY2VzLgorICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisgICAgICBTZWUgOnBlcDpgNTI1YCBmb3IgbW9yZSBkZXRhaWxzLCBhbmQgZm9yIGEgcmVmZXJlbmNlIGV4YW1wbGUgb2YgYQorICAgICAgKmZpbmFsaXplciogbWV0aG9kIHNlZSB0aGUgaW1wbGVtZW50YXRpb24gb2YKKyAgICAgIGBgYXN5bmNpby5Mb29wLnNodXRkb3duX2FzeW5jZ2Vuc2BgIGluCisgICAgICA6c291cmNlOmBMaWIvYXN5bmNpby9iYXNlX2V2ZW50cy5weWAKIAotICAgLi4gaW1wbC1kZXRhaWw6OgotICAgICAgVGhpcyBmdW5jdGlvbiBpcyBpbnRpbWF0ZWx5IGJvdW5kIHRvIENQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlscyBhbmQKLSAgICAgIHRodXMgbm90IGxpa2VseSB0byBiZSBpbXBsZW1lbnRlZCBlbHNld2hlcmUuCisgICAuLiBub3RlOjoKKyAgICAgIFRoaXMgZnVuY3Rpb24gaGFzIGJlZW4gYWRkZWQgb24gYSBwcm92aXNpb25hbCBiYXNpcyAoc2VlIDpwZXA6YDQxMWAKKyAgICAgIGZvciBkZXRhaWxzLikKIAogCiAuLiBmdW5jdGlvbjo6IHNldF9jb3JvdXRpbmVfd3JhcHBlcih3cmFwcGVyKQpAQCAtMTEzMyw2ICsxMTc0LDE4IEBACiAgICAgICBUaGlzIGZ1bmN0aW9uIGhhcyBiZWVuIGFkZGVkIG9uIGEgcHJvdmlzaW9uYWwgYmFzaXMgKHNlZSA6cGVwOmA0MTFgCiAgICAgICBmb3IgZGV0YWlscy4pICBVc2UgaXQgb25seSBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLgogCisuLiBmdW5jdGlvbjo6IF9lbmFibGVsZWdhY3l3aW5kb3dzZnNlbmNvZGluZygpCisKKyAgIENoYW5nZXMgdGhlIGRlZmF1bHQgZmlsZXN5c3RlbSBlbmNvZGluZyBhbmQgZXJyb3JzIG1vZGUgdG8gJ21iY3MnIGFuZAorICAgJ3JlcGxhY2UnIHJlc3BlY3RpdmVseSwgZm9yIGNvbnNpc3RlbmN5IHdpdGggdmVyc2lvbnMgb2YgUHl0aG9uIHByaW9yIHRvIDMuNi4KKworICAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIGRlZmluaW5nIHRoZSA6ZW52dmFyOmBQWVRIT05MRUdBQ1lXSU5ET1dTRlNFTkNPRElOR2AKKyAgIGVudmlyb25tZW50IHZhcmlhYmxlIGJlZm9yZSBsYXVuY2hpbmcgUHl0aG9uLgorCisgICBBdmFpbGFiaWxpdHk6IFdpbmRvd3MKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisgICAgICBTZWUgOnBlcDpgNTI5YCBmb3IgbW9yZSBkZXRhaWxzLgogCiAuLiBkYXRhOjogc3RkaW4KICAgICAgICAgICBzdGRvdXQKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3N5c2NvbmZpZy5yc3QgYi9Eb2MvbGlicmFyeS9zeXNjb25maWcucnN0CmluZGV4IDAyYWFhYjMuLjA4Yjc0YTkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3N5c2NvbmZpZy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3lzY29uZmlnLnJzdApAQCAtMTY0LDcgKzE2NCw3IEBACiAuLiBmdW5jdGlvbjo6IGdldF9weXRob25fdmVyc2lvbigpCiAKICAgIFJldHVybiB0aGUgYGBNQUpPUi5NSU5PUmBgIFB5dGhvbiB2ZXJzaW9uIG51bWJlciBhcyBhIHN0cmluZy4gIFNpbWlsYXIgdG8KLSAgIGBgc3lzLnZlcnNpb25bOjNdYGAuCisgICBgYCclZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXWBgLgogCiAKIC4uIGZ1bmN0aW9uOjogZ2V0X3BsYXRmb3JtKCkKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3RlbG5ldGxpYi5yc3QgYi9Eb2MvbGlicmFyeS90ZWxuZXRsaWIucnN0CmluZGV4IGI5NTBlNDEuLmY5YzUxNTMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3RlbG5ldGxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdGVsbmV0bGliLnJzdApAQCAtNDMsNiArNDMsMTcgQEAKICAgIDpleGM6YEVPRkVycm9yYCB3aGVuIHRoZSBlbmQgb2YgdGhlIGNvbm5lY3Rpb24gaXMgcmVhZCwgYmVjYXVzZSB0aGV5IGNhbiByZXR1cm4KICAgIGFuIGVtcHR5IHN0cmluZyBmb3Igb3RoZXIgcmVhc29ucy4gIFNlZSB0aGUgaW5kaXZpZHVhbCBkZXNjcmlwdGlvbnMgYmVsb3cuCiAKKyAgIEEgOmNsYXNzOmBUZWxuZXRgIG9iamVjdCBpcyBhIGNvbnRleHQgbWFuYWdlciBhbmQgY2FuIGJlIHVzZWQgaW4gYQorICAgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudC4gIFdoZW4gdGhlIDprZXl3b3JkOmB3aXRoYCBibG9jayBlbmRzLCB0aGUKKyAgIDptZXRoOmBjbG9zZWAgbWV0aG9kIGlzIGNhbGxlZDo6CisKKyAgICAgICA+Pj4gZnJvbSB0ZWxuZXRsaWIgaW1wb3J0IFRlbG5ldAorICAgICAgID4+PiB3aXRoIFRlbG5ldCgnbG9jYWxob3N0JywgMjMpIGFzIHRuOgorICAgICAgIC4uLiAgICAgdG4uaW50ZXJhY3QoKQorICAgICAgIC4uLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNiBDb250ZXh0IG1hbmFnZXIgc3VwcG9ydCBhZGRlZAorCiAKIC4uIHNlZWFsc286OgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90ZXN0LnJzdCBiL0RvYy9saWJyYXJ5L3Rlc3QucnN0CmluZGV4IDU5NTc3ZjAuLmZhYjNlMWYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3Rlc3QucnN0CisrKyBiL0RvYy9saWJyYXJ5L3Rlc3QucnN0CkBAIC01ODIsNiArNTgyLDQ4IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKIAogCisuLiBmdW5jdGlvbjo6IGNoZWNrX19hbGxfXyh0ZXN0X2Nhc2UsIG1vZHVsZSwgbmFtZV9vZl9tb2R1bGU9Tm9uZSwgZXh0cmE9KCksIGJsYWNrbGlzdD0oKSkKKworICAgQXNzZXJ0IHRoYXQgdGhlIGBgX19hbGxfX2BgIHZhcmlhYmxlIG9mICptb2R1bGUqIGNvbnRhaW5zIGFsbCBwdWJsaWMgbmFtZXMuCisKKyAgIFRoZSBtb2R1bGUncyBwdWJsaWMgbmFtZXMgKGl0cyBBUEkpIGFyZSBkZXRlY3RlZCBhdXRvbWF0aWNhbGx5CisgICBiYXNlZCBvbiB3aGV0aGVyIHRoZXkgbWF0Y2ggdGhlIHB1YmxpYyBuYW1lIGNvbnZlbnRpb24gYW5kIHdlcmUgZGVmaW5lZCBpbgorICAgKm1vZHVsZSouCisKKyAgIFRoZSAqbmFtZV9vZl9tb2R1bGUqIGFyZ3VtZW50IGNhbiBzcGVjaWZ5IChhcyBhIHN0cmluZyBvciB0dXBsZSB0aGVyZW9mKSB3aGF0CisgICBtb2R1bGUocykgYW4gQVBJIGNvdWxkIGJlIGRlZmluZWQgaW4gaW4gb3JkZXIgdG8gYmUgZGV0ZWN0ZWQgYXMgYSBwdWJsaWMKKyAgIEFQSS4gT25lIGNhc2UgZm9yIHRoaXMgaXMgd2hlbiAqbW9kdWxlKiBpbXBvcnRzIHBhcnQgb2YgaXRzIHB1YmxpYyBBUEkgZnJvbQorICAgb3RoZXIgbW9kdWxlcywgcG9zc2libHkgYSBDIGJhY2tlbmQgKGxpa2UgYGBjc3ZgYCBhbmQgaXRzIGBgX2NzdmBgKS4KKworICAgVGhlICpleHRyYSogYXJndW1lbnQgY2FuIGJlIGEgc2V0IG9mIG5hbWVzIHRoYXQgd291bGRuJ3Qgb3RoZXJ3aXNlIGJlIGF1dG9tYXRpY2FsbHkKKyAgIGRldGVjdGVkIGFzICJwdWJsaWMiLCBsaWtlIG9iamVjdHMgd2l0aG91dCBhIHByb3BlciBgYF9fbW9kdWxlX19gYAorICAgYXR0cmlidXRlLiBJZiBwcm92aWRlZCwgaXQgd2lsbCBiZSBhZGRlZCB0byB0aGUgYXV0b21hdGljYWxseSBkZXRlY3RlZCBvbmVzLgorCisgICBUaGUgKmJsYWNrbGlzdCogYXJndW1lbnQgY2FuIGJlIGEgc2V0IG9mIG5hbWVzIHRoYXQgbXVzdCBub3QgYmUgdHJlYXRlZCBhcyBwYXJ0IG9mCisgICB0aGUgcHVibGljIEFQSSBldmVuIHRob3VnaCB0aGVpciBuYW1lcyBpbmRpY2F0ZSBvdGhlcndpc2UuCisKKyAgIEV4YW1wbGUgdXNlOjoKKworICAgICAgaW1wb3J0IGJhcgorICAgICAgaW1wb3J0IGZvbworICAgICAgaW1wb3J0IHVuaXR0ZXN0CisgICAgICBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKKworICAgICAgY2xhc3MgTWlzY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIGZvbykKKworICAgICAgY2xhc3MgT3RoZXJUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICAgICAgICBleHRyYSA9IHsnQkFSX0NPTlNUJywgJ0ZPT19DT05TVCd9CisgICAgICAgICAgICAgIGJsYWNrbGlzdCA9IHsnYmF6J30gICMgVW5kb2N1bWVudGVkIG5hbWUuCisgICAgICAgICAgICAgICMgYmFyIGltcG9ydHMgcGFydCBvZiBpdHMgQVBJIGZyb20gX2Jhci4KKyAgICAgICAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgYmFyLCAoJ2JhcicsICdfYmFyJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhPWV4dHJhLCBibGFja2xpc3Q9YmxhY2tsaXN0KQorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCiBUaGUgOm1vZDpgdGVzdC5zdXBwb3J0YCBtb2R1bGUgZGVmaW5lcyB0aGUgZm9sbG93aW5nIGNsYXNzZXM6CiAKIC4uIGNsYXNzOjogVHJhbnNpZW50UmVzb3VyY2UoZXhjLCAqKmt3YXJncykKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3RpbWUucnN0IGIvRG9jL2xpYnJhcnkvdGltZS5yc3QKaW5kZXggZTY2MjZmMi4uYWUxN2Y2ZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdGltZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdGltZS5yc3QKQEAgLTgzLDYgKzgzLDEwIEBACiAgICAgIGFuZCA6YXR0cjpgdG1fem9uZWAgYXR0cmlidXRlcyB3aGVuIHBsYXRmb3JtIHN1cHBvcnRzIGNvcnJlc3BvbmRpbmcKICAgICAgYGBzdHJ1Y3QgdG1gYCBtZW1iZXJzLgogCisgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgIFRoZSA6Y2xhc3M6YHN0cnVjdF90aW1lYCBhdHRyaWJ1dGVzIDphdHRyOmB0bV9nbXRvZmZgIGFuZCA6YXR0cjpgdG1fem9uZWAKKyAgICAgYXJlIG5vdyBhdmFpbGFibGUgb24gYWxsIHBsYXRmb3Jtcy4KKwogKiBVc2UgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgdG8gY29udmVydCBiZXR3ZWVuIHRpbWUgcmVwcmVzZW50YXRpb25zOgogCiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKQEAgLTU2NiwxMCArNTcwLDYgQEAKICAgIDpjbGFzczpgc3RydWN0X3RpbWVgLCBvciBoYXZpbmcgZWxlbWVudHMgb2YgdGhlIHdyb25nIHR5cGUsIGEKICAgIDpleGM6YFR5cGVFcnJvcmAgaXMgcmFpc2VkLgogCi0gIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCi0gICAgIDphdHRyOmB0bV9nbXRvZmZgIGFuZCA6YXR0cjpgdG1fem9uZWAgYXR0cmlidXRlcyBhcmUgYXZhaWxhYmxlIG9uIHBsYXRmb3JtcwotICAgICB3aXRoIEMgbGlicmFyeSBzdXBwb3J0aW5nIHRoZSBjb3JyZXNwb25kaW5nIGZpZWxkcyBpbiBgYHN0cnVjdCB0bWBgLgotCiAuLiBmdW5jdGlvbjo6IHRpbWUoKQogCiAgICBSZXR1cm4gdGhlIHRpbWUgaW4gc2Vjb25kcyBzaW5jZSB0aGUgZXBvY2ggYXMgYSBmbG9hdGluZyBwb2ludCBudW1iZXIuCkBAIC02MzcsMTEgKzYzNywxMSBAQAogICAgICAgICAgaXQgaXMgcG9zc2libGUgdG8gcmVmZXIgdG8gRmVicnVhcnkgMjkuCiAKICAgICAgIDpzYW1wOmBNe219LntufS57ZH1gCi0gICAgICAgICBUaGUgKmQqJ3RoIGRheSAoMCA8PSAqZCogPD0gNikgb3Igd2VlayAqbiogb2YgbW9udGggKm0qIG9mIHRoZSB5ZWFyICgxCisgICAgICAgICBUaGUgKmQqJ3RoIGRheSAoMCA8PSAqZCogPD0gNikgb2Ygd2VlayAqbiogb2YgbW9udGggKm0qIG9mIHRoZSB5ZWFyICgxCiAgICAgICAgICA8PSAqbiogPD0gNSwgMSA8PSAqbSogPD0gMTIsIHdoZXJlIHdlZWsgNSBtZWFucyAidGhlIGxhc3QgKmQqIGRheSBpbgogICAgICAgICAgbW9udGggKm0qIiB3aGljaCBtYXkgb2NjdXIgaW4gZWl0aGVyIHRoZSBmb3VydGggb3IgdGhlIGZpZnRoCiAgICAgICAgICB3ZWVrKS4gV2VlayAxIGlzIHRoZSBmaXJzdCB3ZWVrIGluIHdoaWNoIHRoZSAqZCondGggZGF5IG9jY3Vycy4gRGF5Ci0gICAgICAgICB6ZXJvIGlzIFN1bmRheS4KKyAgICAgICAgIHplcm8gaXMgYSBTdW5kYXkuCiAKICAgICAgIGBgdGltZWBgIGhhcyB0aGUgc2FtZSBmb3JtYXQgYXMgYGBvZmZzZXRgYCBleGNlcHQgdGhhdCBubyBsZWFkaW5nIHNpZ24KICAgICAgICgnLScgb3IgJysnKSBpcyBhbGxvd2VkLiBUaGUgZGVmYXVsdCwgaWYgdGltZSBpcyBub3QgZ2l2ZW4sIGlzIDAyOjAwOjAwLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdGltZWl0LnJzdCBiL0RvYy9saWJyYXJ5L3RpbWVpdC5yc3QKaW5kZXggNTdhNDgzNC4uM2I3NzI3NiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdGltZWl0LnJzdAorKysgYi9Eb2MvbGlicmFyeS90aW1laXQucnN0CkBAIC0xMDAsOCArMTAwLDggQEAKICAgIGNhbiBiZSBjb250cm9sbGVkIGJ5IHBhc3NpbmcgYSBuYW1lc3BhY2UgdG8gKmdsb2JhbHMqLgogCiAgICBUbyBtZWFzdXJlIHRoZSBleGVjdXRpb24gdGltZSBvZiB0aGUgZmlyc3Qgc3RhdGVtZW50LCB1c2UgdGhlIDptZXRoOmAudGltZWl0YAotICAgbWV0aG9kLiAgVGhlIDptZXRoOmAucmVwZWF0YCBtZXRob2QgaXMgYSBjb252ZW5pZW5jZSB0byBjYWxsIDptZXRoOmAudGltZWl0YAotICAgbXVsdGlwbGUgdGltZXMgYW5kIHJldHVybiBhIGxpc3Qgb2YgcmVzdWx0cy4KKyAgIG1ldGhvZC4gIFRoZSA6bWV0aDpgLnJlcGVhdGAgYW5kIDptZXRoOmAuYXV0b3JhbmdlYCBtZXRob2RzIGFyZSBjb252ZW5pZW5jZQorICAgbWV0aG9kcyB0byBjYWxsIDptZXRoOmAudGltZWl0YCBtdWx0aXBsZSB0aW1lcy4KIAogICAgVGhlIGV4ZWN1dGlvbiB0aW1lIG9mICpzZXR1cCogaXMgZXhjbHVkZWQgZnJvbSB0aGUgb3ZlcmFsbCB0aW1lZCBleGVjdXRpb24gcnVuLgogCkBAIC0xMzQsNiArMTM0LDIzIEBACiAgICAgICAgICAgICB0aW1laXQuVGltZXIoJ2ZvciBpIGluIHJhbmdlKDEwKTogb2N0KGkpJywgJ2djLmVuYWJsZSgpJykudGltZWl0KCkKIAogCisgICAgLi4gbWV0aG9kOjogVGltZXIuYXV0b3JhbmdlKGNhbGxiYWNrPU5vbmUpCisKKyAgICAgICBBdXRvbWF0aWNhbGx5IGRldGVybWluZSBob3cgbWFueSB0aW1lcyB0byBjYWxsIDptZXRoOmAudGltZWl0YC4KKworICAgICAgIFRoaXMgaXMgYSBjb252ZW5pZW5jZSBmdW5jdGlvbiB0aGF0IGNhbGxzIDptZXRoOmAudGltZWl0YCByZXBlYXRlZGx5CisgICAgICAgc28gdGhhdCB0aGUgdG90YWwgdGltZSA+PSAwLjIgc2Vjb25kLCByZXR1cm5pbmcgdGhlIGV2ZW50dWFsCisgICAgICAgKG51bWJlciBvZiBsb29wcywgdGltZSB0YWtlbiBmb3IgdGhhdCBudW1iZXIgb2YgbG9vcHMpLiBJdCBjYWxscworICAgICAgIDptZXRoOmAudGltZWl0YCB3aXRoICpudW1iZXIqIHNldCB0byBzdWNjZXNzaXZlIHBvd2VycyBvZiB0ZW4gKDEwLAorICAgICAgIDEwMCwgMTAwMCwgLi4uKSB1cCB0byBhIG1heGltdW0gb2Ygb25lIGJpbGxpb24sIHVudGlsIHRoZSB0aW1lIHRha2VuCisgICAgICAgaXMgYXQgbGVhc3QgMC4yIHNlY29uZCwgb3IgdGhlIG1heGltdW0gaXMgcmVhY2hlZC4KKworICAgICAgICBJZiAqY2FsbGJhY2sqIGlzIGdpdmVuIGFuZCBpcyBub3QgYGBOb25lYGAsIGl0IHdpbGwgYmUgY2FsbGVkIGFmdGVyCisgICAgICAgIGVhY2ggdHJpYWwgd2l0aCB0d28gYXJndW1lbnRzOiBgYGNhbGxiYWNrKG51bWJlciwgdGltZV90YWtlbilgYC4KKworICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCiAgICAuLiBtZXRob2Q6OiBUaW1lci5yZXBlYXQocmVwZWF0PTMsIG51bWJlcj0xMDAwMDAwKQogCiAgICAgICBDYWxsIDptZXRoOmAudGltZWl0YCBhIGZldyB0aW1lcy4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3RraW50ZXIudGl4LnJzdCBiL0RvYy9saWJyYXJ5L3RraW50ZXIudGl4LnJzdAppbmRleCA0MWYyMGRkLi4xMWVkNzU1IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90a2ludGVyLnRpeC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdGtpbnRlci50aXgucnN0CkBAIC0xMCw2ICsxMCwxMCBAQAogCiAuLiBpbmRleDo6IHNpbmdsZTogVGl4CiAKKy4uIGRlcHJlY2F0ZWQ6OiAzLjYKKyAgIFRoaXMgVGsgZXh0ZW5zaW9uIGlzIHVubWFpbnRhaW5lZCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkIGluIG5ldyBjb2RlLiAgVXNlCisgICA6bW9kOmB0a2ludGVyLnR0a2AgaW5zdGVhZC4KKwogLS0tLS0tLS0tLS0tLS0KIAogVGhlIDptb2Q6YHRraW50ZXIudGl4YCAoVGsgSW50ZXJmYWNlIEV4dGVuc2lvbikgbW9kdWxlIHByb3ZpZGVzIGFuIGFkZGl0aW9uYWwKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3RyYWNlYmFjay5yc3QgYi9Eb2MvbGlicmFyeS90cmFjZWJhY2sucnN0CmluZGV4IDNjMWQ5YmIuLjA2NmVlOTYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3RyYWNlYmFjay5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdHJhY2ViYWNrLnJzdApAQCAtMjkxLDYgKzI5MSwyMCBAQAogICAgICAgb2YgdHVwbGVzLiBFYWNoIHR1cGxlIHNob3VsZCBiZSBhIDQtdHVwbGUgd2l0aCBmaWxlbmFtZSwgbGluZW5vLCBuYW1lLAogICAgICAgbGluZSBhcyB0aGUgZWxlbWVudHMuCiAKKyAgIC4uIG1ldGhvZDo6IGZvcm1hdCgpCisKKyAgICAgIFJldHVybnMgYSBsaXN0IG9mIHN0cmluZ3MgcmVhZHkgZm9yIHByaW50aW5nLiAgRWFjaCBzdHJpbmcgaW4gdGhlCisgICAgICByZXN1bHRpbmcgbGlzdCBjb3JyZXNwb25kcyB0byBhIHNpbmdsZSBmcmFtZSBmcm9tIHRoZSBzdGFjay4KKyAgICAgIEVhY2ggc3RyaW5nIGVuZHMgaW4gYSBuZXdsaW5lOyB0aGUgc3RyaW5ncyBtYXkgY29udGFpbiBpbnRlcm5hbAorICAgICAgbmV3bGluZXMgYXMgd2VsbCwgZm9yIHRob3NlIGl0ZW1zIHdpdGggc291cmNlIHRleHQgbGluZXMuCisKKyAgICAgIEZvciBsb25nIHNlcXVlbmNlcyBvZiB0aGUgc2FtZSBmcmFtZSBhbmQgbGluZSwgdGhlIGZpcnN0IGZldworICAgICAgcmVwZXRpdGlvbnMgYXJlIHNob3duLCBmb2xsb3dlZCBieSBhIHN1bW1hcnkgbGluZSBzdGF0aW5nIHRoZSBleGFjdAorICAgICAgbnVtYmVyIG9mIGZ1cnRoZXIgcmVwZXRpdGlvbnMuCisKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICAgICBMb25nIHNlcXVlbmNlcyBvZiByZXBlYXRlZCBmcmFtZXMgYXJlIG5vdyBhYmJyZXZpYXRlZC4KKwogCiA6Y2xhc3M6YEZyYW1lU3VtbWFyeWAgT2JqZWN0cwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3RyYWNlbWFsbG9jLnJzdCBiL0RvYy9saWJyYXJ5L3RyYWNlbWFsbG9jLnJzdAppbmRleCAzYTBiMWUwLi5mNTZmMjdiIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90cmFjZW1hbGxvYy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdHJhY2VtYWxsb2MucnN0CkBAIC0zNTksMTAgKzM1OSwzMiBAQAogICAgU2VlIGFsc28gdGhlIDpmdW5jOmBnZXRfb2JqZWN0X3RyYWNlYmFja2AgZnVuY3Rpb24uCiAKIAorRG9tYWluRmlsdGVyCiteXl5eXl5eXl5eXl4KKworLi4gY2xhc3M6OiBEb21haW5GaWx0ZXIoaW5jbHVzaXZlOiBib29sLCBkb21haW46IGludCkKKworICAgRmlsdGVyIHRyYWNlcyBvZiBtZW1vcnkgYmxvY2tzIGJ5IHRoZWlyIGFkZHJlc3Mgc3BhY2UgKGRvbWFpbikuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisgICAuLiBhdHRyaWJ1dGU6OiBpbmNsdXNpdmUKKworICAgICAgSWYgKmluY2x1c2l2ZSogaXMgYGBUcnVlYGAgKGluY2x1ZGUpLCBtYXRjaCBtZW1vcnkgYmxvY2tzIGFsbG9jYXRlZAorICAgICAgaW4gdGhlIGFkZHJlc3Mgc3BhY2UgOmF0dHI6YGRvbWFpbmAuCisKKyAgICAgIElmICppbmNsdXNpdmUqIGlzIGBgRmFsc2VgYCAoZXhjbHVkZSksIG1hdGNoIG1lbW9yeSBibG9ja3Mgbm90IGFsbG9jYXRlZAorICAgICAgaW4gdGhlIGFkZHJlc3Mgc3BhY2UgOmF0dHI6YGRvbWFpbmAuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGRvbWFpbgorCisgICAgICBBZGRyZXNzIHNwYWNlIG9mIGEgbWVtb3J5IGJsb2NrIChgYGludGBgKS4gUmVhZC1vbmx5IHByb3BlcnR5LgorCisKIEZpbHRlcgogXl5eXl5eCiAKLS4uIGNsYXNzOjogRmlsdGVyKGluY2x1c2l2ZTogYm9vbCwgZmlsZW5hbWVfcGF0dGVybjogc3RyLCBsaW5lbm86IGludD1Ob25lLCBhbGxfZnJhbWVzOiBib29sPUZhbHNlKQorLi4gY2xhc3M6OiBGaWx0ZXIoaW5jbHVzaXZlOiBib29sLCBmaWxlbmFtZV9wYXR0ZXJuOiBzdHIsIGxpbmVubzogaW50PU5vbmUsIGFsbF9mcmFtZXM6IGJvb2w9RmFsc2UsIGRvbWFpbjogaW50PU5vbmUpCiAKICAgIEZpbHRlciBvbiB0cmFjZXMgb2YgbWVtb3J5IGJsb2Nrcy4KIApAQCAtMzgyLDkgKzQwNCwxNyBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKICAgICAgIFRoZSBgYCcucHlvJ2BgIGZpbGUgZXh0ZW5zaW9uIGlzIG5vIGxvbmdlciByZXBsYWNlZCB3aXRoIGBgJy5weSdgYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFkZGVkIHRoZSA6YXR0cjpgZG9tYWluYCBhdHRyaWJ1dGUuCisKKworICAgLi4gYXR0cmlidXRlOjogZG9tYWluCisKKyAgICAgIEFkZHJlc3Mgc3BhY2Ugb2YgYSBtZW1vcnkgYmxvY2sgKGBgaW50YGAgb3IgYGBOb25lYGApLgorCiAgICAuLiBhdHRyaWJ1dGU6OiBpbmNsdXNpdmUKIAotICAgICAgSWYgKmluY2x1c2l2ZSogaXMgYGBUcnVlYGAgKGluY2x1ZGUpLCBvbmx5IHRyYWNlIG1lbW9yeSBibG9ja3MgYWxsb2NhdGVkCisgICAgICBJZiAqaW5jbHVzaXZlKiBpcyBgYFRydWVgYCAoaW5jbHVkZSksIG9ubHkgbWF0Y2ggbWVtb3J5IGJsb2NrcyBhbGxvY2F0ZWQKICAgICAgIGluIGEgZmlsZSB3aXRoIGEgbmFtZSBtYXRjaGluZyA6YXR0cjpgZmlsZW5hbWVfcGF0dGVybmAgYXQgbGluZSBudW1iZXIKICAgICAgIDphdHRyOmBsaW5lbm9gLgogCkBAIC0zOTksNyArNDI5LDcgQEAKIAogICAgLi4gYXR0cmlidXRlOjogZmlsZW5hbWVfcGF0dGVybgogCi0gICAgICBGaWxlbmFtZSBwYXR0ZXJuIG9mIHRoZSBmaWx0ZXIgKGBgc3RyYGApLgorICAgICAgRmlsZW5hbWUgcGF0dGVybiBvZiB0aGUgZmlsdGVyIChgYHN0cmBgKS4gUmVhZC1vbmx5IHByb3BlcnR5LgogCiAgICAuLiBhdHRyaWJ1dGU6OiBhbGxfZnJhbWVzCiAKQEAgLTQ2MiwxNCArNDkyLDE3IEBACiAgICAuLiBtZXRob2Q6OiBmaWx0ZXJfdHJhY2VzKGZpbHRlcnMpCiAKICAgICAgIENyZWF0ZSBhIG5ldyA6Y2xhc3M6YFNuYXBzaG90YCBpbnN0YW5jZSB3aXRoIGEgZmlsdGVyZWQgOmF0dHI6YHRyYWNlc2AKLSAgICAgIHNlcXVlbmNlLCAqZmlsdGVycyogaXMgYSBsaXN0IG9mIDpjbGFzczpgRmlsdGVyYCBpbnN0YW5jZXMuICBJZiAqZmlsdGVycyoKLSAgICAgIGlzIGFuIGVtcHR5IGxpc3QsIHJldHVybiBhIG5ldyA6Y2xhc3M6YFNuYXBzaG90YCBpbnN0YW5jZSB3aXRoIGEgY29weSBvZgotICAgICAgdGhlIHRyYWNlcy4KKyAgICAgIHNlcXVlbmNlLCAqZmlsdGVycyogaXMgYSBsaXN0IG9mIDpjbGFzczpgRG9tYWluRmlsdGVyYCBhbmQKKyAgICAgIDpjbGFzczpgRmlsdGVyYCBpbnN0YW5jZXMuICBJZiAqZmlsdGVycyogaXMgYW4gZW1wdHkgbGlzdCwgcmV0dXJuIGEgbmV3CisgICAgICA6Y2xhc3M6YFNuYXBzaG90YCBpbnN0YW5jZSB3aXRoIGEgY29weSBvZiB0aGUgdHJhY2VzLgogCiAgICAgICBBbGwgaW5jbHVzaXZlIGZpbHRlcnMgYXJlIGFwcGxpZWQgYXQgb25jZSwgYSB0cmFjZSBpcyBpZ25vcmVkIGlmIG5vCiAgICAgICBpbmNsdXNpdmUgZmlsdGVycyBtYXRjaCBpdC4gQSB0cmFjZSBpcyBpZ25vcmVkIGlmIGF0IGxlYXN0IG9uZSBleGNsdXNpdmUKICAgICAgIGZpbHRlciBtYXRjaGVzIGl0LgogCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgICAgOmNsYXNzOmBEb21haW5GaWx0ZXJgIGluc3RhbmNlcyBhcmUgbm93IGFsc28gYWNjZXB0ZWQgaW4gKmZpbHRlcnMqLgorCiAKICAgIC4uIGNsYXNzbWV0aG9kOjogbG9hZChmaWxlbmFtZSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdHlwZXMucnN0IGIvRG9jL2xpYnJhcnkvdHlwZXMucnN0CmluZGV4IDExOGJjNGMuLjBjNTYxOWMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3R5cGVzLnJzdAorKysgYi9Eb2MvbGlicmFyeS90eXBlcy5yc3QKQEAgLTU1LDYgKzU1LDEyIEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorCisgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIGBgbmFtZXNwYWNlYGAgZWxlbWVudCBvZiB0aGUgcmV0dXJuZWQKKyAgICAgIHR1cGxlIGhhcyBjaGFuZ2VkLiAgTm93IGFuIGluc2VydGlvbi1vcmRlci1wcmVzZXJ2aW5nIG1hcHBpbmcgaXMKKyAgICAgIHVzZWQgd2hlbiB0aGUgbWV0YWNsYXNzIGRvZXMgbm90IGhhdmUgYSBgYF9fcHJlcGFyZV9fYGAgbWV0aG9kLAorCiAuLiBzZWVhbHNvOjoKIAogICAgOnJlZjpgbWV0YWNsYXNzZXNgCkBAIC05OCw2ICsxMDQsMTQgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogCiAKKy4uIGRhdGE6OiBBc3luY0dlbmVyYXRvclR5cGUKKworICAgVGhlIHR5cGUgb2YgOnRlcm06YGFzeW5jaHJvbm91cyBnZW5lcmF0b3JgLWl0ZXJhdG9yIG9iamVjdHMsIGNyZWF0ZWQgYnkKKyAgIGFzeW5jaHJvbm91cyBnZW5lcmF0b3IgZnVuY3Rpb25zLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCiAuLiBkYXRhOjogQ29kZVR5cGUKIAogICAgLi4gaW5kZXg6OiBidWlsdGluOiBjb21waWxlCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90eXBpbmcucnN0IGIvRG9jL2xpYnJhcnkvdHlwaW5nLnJzdAppbmRleCA5MjNjYmI4Li4yYmFjNmY4IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90eXBpbmcucnN0CisrKyBiL0RvYy9saWJyYXJ5L3R5cGluZy5yc3QKQEAgLTEwLDggKzEwLDggQEAKIAogLS0tLS0tLS0tLS0tLS0KIAotVGhpcyBtb2R1bGUgc3VwcG9ydHMgdHlwZSBoaW50cyBhcyBzcGVjaWZpZWQgYnkgOnBlcDpgNDg0YC4gIFRoZSBtb3N0Ci1mdW5kYW1lbnRhbCBzdXBwb3J0IGNvbnNpc3RzIG9mIHRoZSB0eXBlcyA6ZGF0YTpgQW55YCwgOmRhdGE6YFVuaW9uYCwKK1RoaXMgbW9kdWxlIHN1cHBvcnRzIHR5cGUgaGludHMgYXMgc3BlY2lmaWVkIGJ5IDpwZXA6YDQ4NGAgYW5kIDpwZXA6YDUyNmAuCitUaGUgbW9zdCBmdW5kYW1lbnRhbCBzdXBwb3J0IGNvbnNpc3RzIG9mIHRoZSB0eXBlcyA6ZGF0YTpgQW55YCwgOmRhdGE6YFVuaW9uYCwKIDpkYXRhOmBUdXBsZWAsIDpkYXRhOmBDYWxsYWJsZWAsIDpjbGFzczpgVHlwZVZhcmAsIGFuZAogOmNsYXNzOmBHZW5lcmljYC4gIEZvciBmdWxsIHNwZWNpZmljYXRpb24gcGxlYXNlIHNlZSA6cGVwOmA0ODRgLiAgRm9yCiBhIHNpbXBsaWZpZWQgaW50cm9kdWN0aW9uIHRvIHR5cGUgaGludHMgc2VlIDpwZXA6YDQ4M2AuCkBAIC01MjMsNyArNTIzLDEzIEBACiAKICAgIEFuIGFsaWFzIHRvIDpjbGFzczpgY29sbGVjdGlvbnMuYWJjLlNpemVkYAogCi0uLiBjbGFzczo6IEFic3RyYWN0U2V0KFNpemVkLCBJdGVyYWJsZVtUX2NvXSwgQ29udGFpbmVyW1RfY29dKQorLi4gY2xhc3M6OiBDb2xsZWN0aW9uKFNpemVkLCBJdGVyYWJsZVtUX2NvXSwgQ29udGFpbmVyW1RfY29dKQorCisgICBBIGdlbmVyaWMgdmVyc2lvbiBvZiA6Y2xhc3M6YGNvbGxlY3Rpb25zLmFiYy5Db2xsZWN0aW9uYAorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworLi4gY2xhc3M6OiBBYnN0cmFjdFNldChTaXplZCwgQ29sbGVjdGlvbltUX2NvXSkKIAogICAgIEEgZ2VuZXJpYyB2ZXJzaW9uIG9mIDpjbGFzczpgY29sbGVjdGlvbnMuYWJjLlNldGAuCiAKQEAgLTUzMSw3ICs1MzcsNyBAQAogCiAgICAgQSBnZW5lcmljIHZlcnNpb24gb2YgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuTXV0YWJsZVNldGAuCiAKLS4uIGNsYXNzOjogTWFwcGluZyhTaXplZCwgSXRlcmFibGVbS1RdLCBDb250YWluZXJbS1RdLCBHZW5lcmljW1ZUX2NvXSkKKy4uIGNsYXNzOjogTWFwcGluZyhTaXplZCwgQ29sbGVjdGlvbltLVF0sIEdlbmVyaWNbVlRfY29dKQogCiAgICAgQSBnZW5lcmljIHZlcnNpb24gb2YgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuTWFwcGluZ2AuCiAKQEAgLTUzOSw3ICs1NDUsNyBAQAogCiAgICAgQSBnZW5lcmljIHZlcnNpb24gb2YgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuTXV0YWJsZU1hcHBpbmdgLgogCi0uLiBjbGFzczo6IFNlcXVlbmNlKFNpemVkLCBJdGVyYWJsZVtUX2NvXSwgQ29udGFpbmVyW1RfY29dKQorLi4gY2xhc3M6OiBTZXF1ZW5jZShSZXZlcnNpYmxlW1RfY29dLCBDb2xsZWN0aW9uW1RfY29dKQogCiAgICAgQSBnZW5lcmljIHZlcnNpb24gb2YgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuU2VxdWVuY2VgLgogCkBAIC02MjMsNiArNjI5LDEyIEBACiAKICAgQSBnZW5lcmljIHZlcnNpb24gb2YgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuQXN5bmNJdGVyYXRvcmAuCiAKKy4uIGNsYXNzOjogQ29udGV4dE1hbmFnZXIoR2VuZXJpY1tUX2NvXSkKKworICAgQSBnZW5lcmljIHZlcnNpb24gb2YgOmNsYXNzOmBjb250ZXh0bGliLkFic3RyYWN0Q29udGV4dE1hbmFnZXJgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogLi4gY2xhc3M6OiBEaWN0KGRpY3QsIE11dGFibGVNYXBwaW5nW0tULCBWVF0pCiAKICAgIEEgZ2VuZXJpYyB2ZXJzaW9uIG9mIDpjbGFzczpgZGljdGAuCkBAIC02OTgsMjMgKzcxMCwzMiBAQAogICAgYGBQYXR0ZXJuW3N0cl1gYCwgYGBQYXR0ZXJuW2J5dGVzXWBgLCBgYE1hdGNoW3N0cl1gYCwgb3IKICAgIGBgTWF0Y2hbYnl0ZXNdYGAuCiAKLS4uIGZ1bmN0aW9uOjogTmFtZWRUdXBsZSh0eXBlbmFtZSwgZmllbGRzKQorLi4gY2xhc3M6OiBOYW1lZFR1cGxlCiAKICAgIFR5cGVkIHZlcnNpb24gb2YgbmFtZWR0dXBsZS4KIAogICAgVXNhZ2U6OgogCi0gICAgICAgRW1wbG95ZWUgPSB0eXBpbmcuTmFtZWRUdXBsZSgnRW1wbG95ZWUnLCBbKCduYW1lJywgc3RyKSwgKCdpZCcsIGludCldKQorICAgICAgIGNsYXNzIEVtcGxveWVlKE5hbWVkVHVwbGUpOgorICAgICAgICAgICBuYW1lOiBzdHIKKyAgICAgICAgICAgaWQ6IGludAogCiAgICBUaGlzIGlzIGVxdWl2YWxlbnQgdG86OgogCiAgICAgICAgRW1wbG95ZWUgPSBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCdFbXBsb3llZScsIFsnbmFtZScsICdpZCddKQogCi0gICBUaGUgcmVzdWx0aW5nIGNsYXNzIGhhcyBvbmUgZXh0cmEgYXR0cmlidXRlOiBfZmllbGRfdHlwZXMsCisgICBUaGUgcmVzdWx0aW5nIGNsYXNzIGhhcyBvbmUgZXh0cmEgYXR0cmlidXRlOiBgYF9maWVsZF90eXBlc2BgLAogICAgZ2l2aW5nIGEgZGljdCBtYXBwaW5nIGZpZWxkIG5hbWVzIHRvIHR5cGVzLiAgKFRoZSBmaWVsZCBuYW1lcwotICAgYXJlIGluIHRoZSBfZmllbGRzIGF0dHJpYnV0ZSwgd2hpY2ggaXMgcGFydCBvZiB0aGUgbmFtZWR0dXBsZQorICAgYXJlIGluIHRoZSBgYF9maWVsZHNgYCBhdHRyaWJ1dGUsIHdoaWNoIGlzIHBhcnQgb2YgdGhlIG5hbWVkdHVwbGUKICAgIEFQSS4pCiAKKyAgIEJhY2t3YXJkLWNvbXBhdGlibGUgdXNhZ2U6OgorCisgICAgICAgRW1wbG95ZWUgPSBOYW1lZFR1cGxlKCdFbXBsb3llZScsIFsoJ25hbWUnLCBzdHIpLCAoJ2lkJywgaW50KV0pCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBZGRlZCBzdXBwb3J0IGZvciA6cGVwOmA1MjZgIHZhcmlhYmxlIGFubm90YXRpb24gc3ludGF4LgorCiAuLiBmdW5jdGlvbjo6IE5ld1R5cGUodHlwKQogCiAgICBBIGhlbHBlciBmdW5jdGlvbiB0byBpbmRpY2F0ZSBhIGRpc3RpbmN0IHR5cGVzIHRvIGEgdHlwZWNoZWNrZXIsCkBAIC04ODQsOCArOTA1LDggQEAKICAgIGFuZCBzaG91bGQgbm90IGJlIHNldCBvbiBpbnN0YW5jZXMgb2YgdGhhdCBjbGFzcy4gVXNhZ2U6OgogCiAgICAgICBjbGFzcyBTdGFyc2hpcDoKLSAgICAgICAgICBzdGF0cyA9IHt9ICAjIHR5cGU6IENsYXNzVmFyW0RpY3Rbc3RyLCBpbnRdXSAjIGNsYXNzIHZhcmlhYmxlCi0gICAgICAgICAgZGFtYWdlID0gMTAgIyB0eXBlOiBpbnQgICAgICAgICAgICAgICAgICAgICAgIyBpbnN0YW5jZSB2YXJpYWJsZQorICAgICAgICAgIHN0YXRzOiBDbGFzc1ZhcltEaWN0W3N0ciwgaW50XV0gPSB7fSAjIGNsYXNzIHZhcmlhYmxlCisgICAgICAgICAgZGFtYWdlOiBpbnQgPSAxMCAgICAgICAgICAgICAgICAgICAgICMgaW5zdGFuY2UgdmFyaWFibGUKIAogICAgOmRhdGE6YENsYXNzVmFyYCBhY2NlcHRzIG9ubHkgdHlwZXMgYW5kIGNhbm5vdCBiZSBmdXJ0aGVyIHN1YnNjcmliZWQuCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3VuZG9jLnJzdCBiL0RvYy9saWJyYXJ5L3VuZG9jLnJzdAppbmRleCAyMDgzMGUyLi4yNDQ0MDgwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS91bmRvYy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdW5kb2MucnN0CkBAIC0yMCw3ICsyMCw3IEBACiBkb2N1bWVudGVkIGJleW9uZCB0aGlzIG1lbnRpb24uICBUaGVyZSdzIGxpdHRsZSBuZWVkIHRvIGRvY3VtZW50IHRoZXNlLgogCiA6bW9kOmBudHBhdGhgCi0gICAtLS0gSW1wbGVtZW50YXRpb24gb2YgOm1vZDpgb3MucGF0aGAgb24gV2luMzIsIFdpbjY0LCBhbmQgV2luQ0UgcGxhdGZvcm1zLgorICAgLS0tIEltcGxlbWVudGF0aW9uIG9mIDptb2Q6YG9zLnBhdGhgIG9uIFdpbjMyIGFuZCBXaW42NCBwbGF0Zm9ybXMuCiAKIDptb2Q6YHBvc2l4cGF0aGAKICAgIC0tLSBJbXBsZW1lbnRhdGlvbiBvZiA6bW9kOmBvcy5wYXRoYCBvbiBQT1NJWC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3VuaWNvZGVkYXRhLnJzdCBiL0RvYy9saWJyYXJ5L3VuaWNvZGVkYXRhLnJzdAppbmRleCA2Y2Q4MTMyLi42NDMxODA5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS91bmljb2RlZGF0YS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdW5pY29kZWRhdGEucnN0CkBAIC0xNyw4ICsxNyw4IEBACiAKIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgVW5pY29kZSBDaGFyYWN0ZXIgRGF0YWJhc2UgKFVDRCkgd2hpY2gKIGRlZmluZXMgY2hhcmFjdGVyIHByb3BlcnRpZXMgZm9yIGFsbCBVbmljb2RlIGNoYXJhY3RlcnMuIFRoZSBkYXRhIGNvbnRhaW5lZCBpbgotdGhpcyBkYXRhYmFzZSBpcyBjb21waWxlZCBmcm9tIHRoZSBgVUNEIHZlcnNpb24gOC4wLjAKLTxodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy84LjAuMC91Y2Q+YF8uCit0aGlzIGRhdGFiYXNlIGlzIGNvbXBpbGVkIGZyb20gdGhlIGBVQ0QgdmVyc2lvbiA5LjAuMAorPGh0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljLzkuMC4wL3VjZD5gXy4KIAogVGhlIG1vZHVsZSB1c2VzIHRoZSBzYW1lIG5hbWVzIGFuZCBzeW1ib2xzIGFzIGRlZmluZWQgYnkgVW5pY29kZQogU3RhbmRhcmQgQW5uZXggIzQ0LCBgIlVuaWNvZGUgQ2hhcmFjdGVyIERhdGFiYXNlIgpAQCAtMTY4LDYgKzE2OCw2IEBACiAKIC4uIHJ1YnJpYzo6IEZvb3Rub3RlcwogCi0uLiBbI10gaHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvOC4wLjAvdWNkL05hbWVBbGlhc2VzLnR4dAorLi4gWyNdIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljLzkuMC4wL3VjZC9OYW1lQWxpYXNlcy50eHQKIAotLi4gWyNdIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljLzguMC4wL3VjZC9OYW1lZFNlcXVlbmNlcy50eHQKKy4uIFsjXSBodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy85LjAuMC91Y2QvTmFtZWRTZXF1ZW5jZXMudHh0CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS91bml0dGVzdC5tb2NrLnJzdCBiL0RvYy9saWJyYXJ5L3VuaXR0ZXN0Lm1vY2sucnN0CmluZGV4IGVmMzBjMDEuLjNjYzIyZmQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3VuaXR0ZXN0Lm1vY2sucnN0CisrKyBiL0RvYy9saWJyYXJ5L3VuaXR0ZXN0Lm1vY2sucnN0CkBAIC0yNjIsNiArMjYyLDM0IEBACiAgICAgdXNlZCB0byBzZXQgYXR0cmlidXRlcyBvbiB0aGUgbW9jayBhZnRlciBpdCBpcyBjcmVhdGVkLiBTZWUgdGhlCiAgICAgOm1ldGg6YGNvbmZpZ3VyZV9tb2NrYCBtZXRob2QgZm9yIGRldGFpbHMuCiAKKyAgICAuLiBtZXRob2Q6OiBhc3NlcnRfY2FsbGVkKCphcmdzLCAqKmt3YXJncykKKworICAgICAgICBBc3NlcnQgdGhhdCB0aGUgbW9jayB3YXMgY2FsbGVkIGF0IGxlYXN0IG9uY2UuCisKKyAgICAgICAgICAgID4+PiBtb2NrID0gTW9jaygpCisgICAgICAgICAgICA+Pj4gbW9jay5tZXRob2QoKQorICAgICAgICAgICAgPE1vY2sgbmFtZT0nbW9jay5tZXRob2QoKScgaWQ9Jy4uLic+CisgICAgICAgICAgICA+Pj4gbW9jay5tZXRob2QuYXNzZXJ0X2NhbGxlZCgpCisKKyAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKyAgICAuLiBtZXRob2Q6OiBhc3NlcnRfY2FsbGVkX29uY2UoKmFyZ3MsICoqa3dhcmdzKQorCisgICAgICAgIEFzc2VydCB0aGF0IHRoZSBtb2NrIHdhcyBjYWxsZWQgZXhhY3RseSBvbmNlLgorCisgICAgICAgICAgICA+Pj4gbW9jayA9IE1vY2soKQorICAgICAgICAgICAgPj4+IG1vY2subWV0aG9kKCkKKyAgICAgICAgICAgIDxNb2NrIG5hbWU9J21vY2subWV0aG9kKCknIGlkPScuLi4nPgorICAgICAgICAgICAgPj4+IG1vY2subWV0aG9kLmFzc2VydF9jYWxsZWRfb25jZSgpCisgICAgICAgICAgICA+Pj4gbW9jay5tZXRob2QoKQorICAgICAgICAgICAgPE1vY2sgbmFtZT0nbW9jay5tZXRob2QoKScgaWQ9Jy4uLic+CisgICAgICAgICAgICA+Pj4gbW9jay5tZXRob2QuYXNzZXJ0X2NhbGxlZF9vbmNlKCkKKyAgICAgICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgQXNzZXJ0aW9uRXJyb3I6IEV4cGVjdGVkICdtZXRob2QnIHRvIGhhdmUgYmVlbiBjYWxsZWQgb25jZS4gQ2FsbGVkIDIgdGltZXMuCisKKyAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIAogICAgIC4uIG1ldGhvZDo6IGFzc2VydF9jYWxsZWRfd2l0aCgqYXJncywgKiprd2FyZ3MpCiAKQEAgLTMzOSw3ICszNjcsNyBAQAogICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKIAogCi0gICAgLi4gbWV0aG9kOjogcmVzZXRfbW9jaygpCisgICAgLi4gbWV0aG9kOjogcmVzZXRfbW9jaygqLCByZXR1cm5fdmFsdWU9RmFsc2UsIHNpZGVfZWZmZWN0PUZhbHNlKQogCiAgICAgICAgIFRoZSByZXNldF9tb2NrIG1ldGhvZCByZXNldHMgYWxsIHRoZSBjYWxsIGF0dHJpYnV0ZXMgb24gYSBtb2NrIG9iamVjdDoKIApAQCAtMzUxLDEyICszNzksMjAgQEAKICAgICAgICAgICAgID4+PiBtb2NrLmNhbGxlZAogICAgICAgICAgICAgRmFsc2UKIAorICAgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgICAgICBBZGRlZCB0d28ga2V5d29yZCBvbmx5IGFyZ3VtZW50IHRvIHRoZSByZXNldF9tb2NrIGZ1bmN0aW9uLgorCiAgICAgICAgIFRoaXMgY2FuIGJlIHVzZWZ1bCB3aGVyZSB5b3Ugd2FudCB0byBtYWtlIGEgc2VyaWVzIG9mIGFzc2VydGlvbnMgdGhhdAogICAgICAgICByZXVzZSB0aGUgc2FtZSBvYmplY3QuIE5vdGUgdGhhdCA6bWV0aDpgcmVzZXRfbW9ja2AgKmRvZXNuJ3QqIGNsZWFyIHRoZQogICAgICAgICByZXR1cm4gdmFsdWUsIDphdHRyOmBzaWRlX2VmZmVjdGAgb3IgYW55IGNoaWxkIGF0dHJpYnV0ZXMgeW91IGhhdmUKLSAgICAgICAgc2V0IHVzaW5nIG5vcm1hbCBhc3NpZ25tZW50LiBDaGlsZCBtb2NrcyBhbmQgdGhlIHJldHVybiB2YWx1ZSBtb2NrCisgICAgICAgIHNldCB1c2luZyBub3JtYWwgYXNzaWdubWVudCBieSBkZWZhdWx0LiBJbiBjYXNlIHlvdSB3YW50IHRvIHJlc2V0CisgICAgICAgICpyZXR1cm5fdmFsdWUqIG9yIDphdHRyOmBzaWRlX2VmZmVjdGAsIHRoZW4gcGFzcyB0aGUgY29ycmVzcG9uZGluZworICAgICAgICBwYXJhbWV0ZXIgYXMgYGBUcnVlYGAuIENoaWxkIG1vY2tzIGFuZCB0aGUgcmV0dXJuIHZhbHVlIG1vY2sKICAgICAgICAgKGlmIGFueSkgYXJlIHJlc2V0IGFzIHdlbGwuCiAKKyAgICAgICAgLi4gbm90ZTo6ICpyZXR1cm5fdmFsdWUqLCBhbmQgOmF0dHI6YHNpZGVfZWZmZWN0YCBhcmUga2V5d29yZCBvbmx5CisgICAgICAgICAgICAgICAgICBhcmd1bWVudC4KKwogCiAgICAgLi4gbWV0aG9kOjogbW9ja19hZGRfc3BlYyhzcGVjLCBzcGVjX3NldD1GYWxzZSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdW5pdHRlc3QucnN0IGIvRG9jL2xpYnJhcnkvdW5pdHRlc3QucnN0CmluZGV4IGFjMTIyNGMuLmMxM2E3MzEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3VuaXR0ZXN0LnJzdAorKysgYi9Eb2MvbGlicmFyeS91bml0dGVzdC5yc3QKQEAgLTEzOTEsOSArMTM5MSw5IEBACiAKICAgICAgIEFkZCBhIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBhZnRlciA6bWV0aDpgdGVhckRvd25gIHRvIGNsZWFudXAgcmVzb3VyY2VzCiAgICAgICB1c2VkIGR1cmluZyB0aGUgdGVzdC4gRnVuY3Rpb25zIHdpbGwgYmUgY2FsbGVkIGluIHJldmVyc2Ugb3JkZXIgdG8gdGhlCi0gICAgICBvcmRlciB0aGV5IGFyZSBhZGRlZCAoTElGTykuIFRoZXkgYXJlIGNhbGxlZCB3aXRoIGFueSBhcmd1bWVudHMgYW5kCi0gICAgICBrZXl3b3JkIGFyZ3VtZW50cyBwYXNzZWQgaW50byA6bWV0aDpgYWRkQ2xlYW51cGAgd2hlbiB0aGV5IGFyZQotICAgICAgYWRkZWQuCisgICAgICBvcmRlciB0aGV5IGFyZSBhZGRlZCAoOmFiYnI6YExJRk8gKGxhc3QtaW4sIGZpcnN0LW91dClgKS4gIFRoZXkKKyAgICAgIGFyZSBjYWxsZWQgd2l0aCBhbnkgYXJndW1lbnRzIGFuZCBrZXl3b3JkIGFyZ3VtZW50cyBwYXNzZWQgaW50bworICAgICAgOm1ldGg6YGFkZENsZWFudXBgIHdoZW4gdGhleSBhcmUgYWRkZWQuCiAKICAgICAgIElmIDptZXRoOmBzZXRVcGAgZmFpbHMsIG1lYW5pbmcgdGhhdCA6bWV0aDpgdGVhckRvd25gIGlzIG5vdCBjYWxsZWQsCiAgICAgICB0aGVuIGFueSBjbGVhbnVwIGZ1bmN0aW9ucyBhZGRlZCB3aWxsIHN0aWxsIGJlIGNhbGxlZC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3VybGxpYi5wYXJzZS5yc3QgYi9Eb2MvbGlicmFyeS91cmxsaWIucGFyc2UucnN0CmluZGV4IDQ5OWIyMTEuLjY3NjMyMWIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3VybGxpYi5wYXJzZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdXJsbGliLnBhcnNlLnJzdApAQCAtMTE0LDggKzExNCw5IEBACiAgICB8ICAgICAgICAgICAgICAgICAgfCAgICAgICB8IGlmIHByZXNlbnQgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogCi0gICBTZWUgc2VjdGlvbiA6cmVmOmB1cmxwYXJzZS1yZXN1bHQtb2JqZWN0YCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgcmVzdWx0Ci0gICBvYmplY3QuCisgICBSZWFkaW5nIHRoZSA6YXR0cjpgcG9ydGAgYXR0cmlidXRlIHdpbGwgcmFpc2UgYSA6ZXhjOmBWYWx1ZUVycm9yYCBpZgorICAgYW4gaW52YWxpZCBwb3J0IGlzIHNwZWNpZmllZCBpbiB0aGUgVVJMLiAgU2VlIHNlY3Rpb24KKyAgIDpyZWY6YHVybHBhcnNlLXJlc3VsdC1vYmplY3RgIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSByZXN1bHQgb2JqZWN0LgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgQWRkZWQgSVB2NiBVUkwgcGFyc2luZyBjYXBhYmlsaXRpZXMuCkBAIC0xMjUsNiArMTI2LDEwIEBACiAgICAgICBmYWxzZSksIGluIGFjY29yZGFuY2Ugd2l0aCA6cmZjOmAzOTg2YC4gIFByZXZpb3VzbHksIGEgd2hpdGVsaXN0IG9mCiAgICAgICBzY2hlbWVzIHRoYXQgc3VwcG9ydCBmcmFnbWVudHMgZXhpc3RlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIE91dC1vZi1yYW5nZSBwb3J0IG51bWJlcnMgbm93IHJhaXNlIDpleGM6YFZhbHVlRXJyb3JgLCBpbnN0ZWFkIG9mCisgICAgICByZXR1cm5pbmcgOmNvbnN0OmBOb25lYC4KKwogCiAuLiBmdW5jdGlvbjo6IHBhcnNlX3FzKHFzLCBrZWVwX2JsYW5rX3ZhbHVlcz1GYWxzZSwgc3RyaWN0X3BhcnNpbmc9RmFsc2UsIGVuY29kaW5nPSd1dGYtOCcsIGVycm9ycz0ncmVwbGFjZScpCiAKQEAgLTIyNyw4ICsyMzIsMTMgQEAKICAgIHwgICAgICAgICAgICAgICAgICB8ICAgICAgIHwgaWYgcHJlc2VudCAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogCi0gICBTZWUgc2VjdGlvbiA6cmVmOmB1cmxwYXJzZS1yZXN1bHQtb2JqZWN0YCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgcmVzdWx0Ci0gICBvYmplY3QuCisgICBSZWFkaW5nIHRoZSA6YXR0cjpgcG9ydGAgYXR0cmlidXRlIHdpbGwgcmFpc2UgYSA6ZXhjOmBWYWx1ZUVycm9yYCBpZgorICAgYW4gaW52YWxpZCBwb3J0IGlzIHNwZWNpZmllZCBpbiB0aGUgVVJMLiAgU2VlIHNlY3Rpb24KKyAgIDpyZWY6YHVybHBhcnNlLXJlc3VsdC1vYmplY3RgIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSByZXN1bHQgb2JqZWN0LgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgT3V0LW9mLXJhbmdlIHBvcnQgbnVtYmVycyBub3cgcmFpc2UgOmV4YzpgVmFsdWVFcnJvcmAsIGluc3RlYWQgb2YKKyAgICAgIHJldHVybmluZyA6Y29uc3Q6YE5vbmVgLgogCiAKIC4uIGZ1bmN0aW9uOjogdXJsdW5zcGxpdChwYXJ0cykKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3VybGxpYi5yZXF1ZXN0LnJzdCBiL0RvYy9saWJyYXJ5L3VybGxpYi5yZXF1ZXN0LnJzdAppbmRleCA2MThjNjlkLi40NzNlZmZjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS91cmxsaWIucmVxdWVzdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdXJsbGliLnJlcXVlc3QucnN0CkBAIC0zMCwxOCArMzAsOSBAQAogICAgT3BlbiB0aGUgVVJMICp1cmwqLCB3aGljaCBjYW4gYmUgZWl0aGVyIGEgc3RyaW5nIG9yIGEKICAgIDpjbGFzczpgUmVxdWVzdGAgb2JqZWN0LgogCi0gICAqZGF0YSogbXVzdCBiZSBhIGJ5dGVzIG9iamVjdCBzcGVjaWZ5aW5nIGFkZGl0aW9uYWwgZGF0YSB0byBiZSBzZW50IHRvIHRoZQotICAgc2VydmVyLCBvciBgYE5vbmVgYCBpZiBubyBzdWNoIGRhdGEgaXMgbmVlZGVkLiAqZGF0YSogbWF5IGFsc28gYmUgYW4KLSAgIGl0ZXJhYmxlIG9iamVjdCBhbmQgaW4gdGhhdCBjYXNlIENvbnRlbnQtTGVuZ3RoIHZhbHVlIG11c3QgYmUgc3BlY2lmaWVkIGluCi0gICB0aGUgaGVhZGVycy4gQ3VycmVudGx5IEhUVFAgcmVxdWVzdHMgYXJlIHRoZSBvbmx5IG9uZXMgdGhhdCB1c2UgKmRhdGEqOyB0aGUKLSAgIEhUVFAgcmVxdWVzdCB3aWxsIGJlIGEgUE9TVCBpbnN0ZWFkIG9mIGEgR0VUIHdoZW4gdGhlICpkYXRhKiBwYXJhbWV0ZXIgaXMKLSAgIHByb3ZpZGVkLgotCi0gICAqZGF0YSogc2hvdWxkIGJlIGEgYnVmZmVyIGluIHRoZSBzdGFuZGFyZAotICAgOm1pbWV0eXBlOmBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRgIGZvcm1hdC4gIFRoZQotICAgOmZ1bmM6YHVybGxpYi5wYXJzZS51cmxlbmNvZGVgIGZ1bmN0aW9uIHRha2VzIGEgbWFwcGluZyBvciBzZXF1ZW5jZSBvZgotICAgMi10dXBsZXMgYW5kIHJldHVybnMgYW4gQVNDSUkgdGV4dCBzdHJpbmcgaW4gdGhpcyBmb3JtYXQuIEl0IHNob3VsZAotICAgYmUgZW5jb2RlZCB0byBieXRlcyBiZWZvcmUgYmVpbmcgdXNlZCBhcyB0aGUgKmRhdGEqIHBhcmFtZXRlci4KKyAgICpkYXRhKiBtdXN0IGJlIGFuIG9iamVjdCBzcGVjaWZ5aW5nIGFkZGl0aW9uYWwgZGF0YSB0byBiZSBzZW50IHRvIHRoZQorICAgc2VydmVyLCBvciBgYE5vbmVgYCBpZiBubyBzdWNoIGRhdGEgaXMgbmVlZGVkLiAgU2VlIDpjbGFzczpgUmVxdWVzdGAKKyAgIGZvciBkZXRhaWxzLgogCiAgICB1cmxsaWIucmVxdWVzdCBtb2R1bGUgdXNlcyBIVFRQLzEuMSBhbmQgaW5jbHVkZXMgYGBDb25uZWN0aW9uOmNsb3NlYGAgaGVhZGVyCiAgICBpbiBpdHMgSFRUUCByZXF1ZXN0cy4KQEAgLTEyMCw2ICsxMTEsMTIgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40LjMKICAgICAgICpjb250ZXh0KiB3YXMgYWRkZWQuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjYKKworICAgICAgICpjYWZpbGUqLCAqY2FwYXRoKiBhbmQgKmNhZGVmYXVsdCogYXJlIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgKmNvbnRleHQqLgorICAgICAgIFBsZWFzZSB1c2UgOm1ldGg6YHNzbC5TU0xDb250ZXh0LmxvYWRfY2VydF9jaGFpbmAgaW5zdGVhZCwgb3IgbGV0CisgICAgICAgOmZ1bmM6YHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0YCBzZWxlY3QgdGhlIHN5c3RlbSdzIHRydXN0ZWQgQ0EKKyAgICAgICBjZXJ0aWZpY2F0ZXMgZm9yIHlvdS4KIAogLi4gZnVuY3Rpb246OiBpbnN0YWxsX29wZW5lcihvcGVuZXIpCiAKQEAgLTE5MiwxNCArMTg5LDIxIEBACiAKICAgICp1cmwqIHNob3VsZCBiZSBhIHN0cmluZyBjb250YWluaW5nIGEgdmFsaWQgVVJMLgogCi0gICAqZGF0YSogbXVzdCBiZSBhIGJ5dGVzIG9iamVjdCBzcGVjaWZ5aW5nIGFkZGl0aW9uYWwgZGF0YSB0byBzZW5kIHRvIHRoZQotICAgc2VydmVyLCBvciBgYE5vbmVgYCBpZiBubyBzdWNoIGRhdGEgaXMgbmVlZGVkLiAgQ3VycmVudGx5IEhUVFAgcmVxdWVzdHMgYXJlCi0gICB0aGUgb25seSBvbmVzIHRoYXQgdXNlICpkYXRhKjsgdGhlIEhUVFAgcmVxdWVzdCB3aWxsIGJlIGEgUE9TVCBpbnN0ZWFkIG9mIGEKLSAgIEdFVCB3aGVuIHRoZSAqZGF0YSogcGFyYW1ldGVyIGlzIHByb3ZpZGVkLiAgKmRhdGEqIHNob3VsZCBiZSBhIGJ1ZmZlciBpbiB0aGUKLSAgIHN0YW5kYXJkIDptaW1ldHlwZTpgYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkYCBmb3JtYXQuCi0gICBUaGUgOmZ1bmM6YHVybGxpYi5wYXJzZS51cmxlbmNvZGVgIGZ1bmN0aW9uIHRha2VzIGEgbWFwcGluZyBvciBzZXF1ZW5jZSBvZgotICAgMi10dXBsZXMgYW5kIHJldHVybnMgYW4gQVNDSUkgc3RyaW5nIGluIHRoaXMgZm9ybWF0LiBJdCBzaG91bGQgYmUKLSAgIGVuY29kZWQgdG8gYnl0ZXMgYmVmb3JlIGJlaW5nIHVzZWQgYXMgdGhlICpkYXRhKiBwYXJhbWV0ZXIuCisgICAqZGF0YSogbXVzdCBiZSBhbiBvYmplY3Qgc3BlY2lmeWluZyBhZGRpdGlvbmFsIGRhdGEgdG8gc2VuZCB0byB0aGUKKyAgIHNlcnZlciwgb3IgYGBOb25lYGAgaWYgbm8gc3VjaCBkYXRhIGlzIG5lZWRlZC4gIEN1cnJlbnRseSBIVFRQCisgICByZXF1ZXN0cyBhcmUgdGhlIG9ubHkgb25lcyB0aGF0IHVzZSAqZGF0YSouICBUaGUgc3VwcG9ydGVkIG9iamVjdAorICAgdHlwZXMgaW5jbHVkZSBieXRlcywgZmlsZS1saWtlIG9iamVjdHMsIGFuZCBpdGVyYWJsZXMuICBJZiBubworICAgYGBDb250ZW50LUxlbmd0aGBgIG5vciBgYFRyYW5zZmVyLUVuY29kaW5nYGAgaGVhZGVyIGZpZWxkCisgICBoYXMgYmVlbiBwcm92aWRlZCwgOmNsYXNzOmBIVFRQSGFuZGxlcmAgd2lsbCBzZXQgdGhlc2UgaGVhZGVycyBhY2NvcmRpbmcKKyAgIHRvIHRoZSB0eXBlIG9mICpkYXRhKi4gIGBgQ29udGVudC1MZW5ndGhgYCB3aWxsIGJlIHVzZWQgdG8gc2VuZAorICAgYnl0ZXMgb2JqZWN0cywgd2hpbGUgYGBUcmFuc2Zlci1FbmNvZGluZzogY2h1bmtlZGBgIGFzIHNwZWNpZmllZCBpbgorICAgOnJmYzpgNzIzMGAsIFNlY3Rpb24gMy4zLjEgd2lsbCBiZSB1c2VkIHRvIHNlbmQgZmlsZXMgYW5kIG90aGVyIGl0ZXJhYmxlcy4KKworICAgRm9yIGFuIEhUVFAgUE9TVCByZXF1ZXN0IG1ldGhvZCwgKmRhdGEqIHNob3VsZCBiZSBhIGJ1ZmZlciBpbiB0aGUKKyAgIHN0YW5kYXJkIDptaW1ldHlwZTpgYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkYCBmb3JtYXQuICBUaGUKKyAgIDpmdW5jOmB1cmxsaWIucGFyc2UudXJsZW5jb2RlYCBmdW5jdGlvbiB0YWtlcyBhIG1hcHBpbmcgb3Igc2VxdWVuY2UKKyAgIG9mIDItdHVwbGVzIGFuZCByZXR1cm5zIGFuIEFTQ0lJIHN0cmluZyBpbiB0aGlzIGZvcm1hdC4gSXQgc2hvdWxkCisgICBiZSBlbmNvZGVkIHRvIGJ5dGVzIGJlZm9yZSBiZWluZyB1c2VkIGFzIHRoZSAqZGF0YSogcGFyYW1ldGVyLgogCiAgICAqaGVhZGVycyogc2hvdWxkIGJlIGEgZGljdGlvbmFyeSwgYW5kIHdpbGwgYmUgdHJlYXRlZCBhcyBpZgogICAgOm1ldGg6YGFkZF9oZWFkZXJgIHdhcyBjYWxsZWQgd2l0aCBlYWNoIGtleSBhbmQgdmFsdWUgYXMgYXJndW1lbnRzLgpAQCAtMjExLDggKzIxNSwxMCBAQAogICAgOm1vZDpgdXJsbGliYCdzIGRlZmF1bHQgdXNlciBhZ2VudCBzdHJpbmcgaXMKICAgIGBgIlB5dGhvbi11cmxsaWIvMi42ImBgIChvbiBQeXRob24gMi42KS4KIAotICAgQW4gZXhhbXBsZSBvZiB1c2luZyBgYENvbnRlbnQtVHlwZWBgIGhlYWRlciB3aXRoICpkYXRhKiBhcmd1bWVudCB3b3VsZCBiZQotICAgc2VuZGluZyBhIGRpY3Rpb25hcnkgbGlrZSBgYHsiQ29udGVudC1UeXBlIjogImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCJ9YGAuCisgICBBbiBhcHByb3ByaWF0ZSBgYENvbnRlbnQtVHlwZWBgIGhlYWRlciBzaG91bGQgYmUgaW5jbHVkZWQgaWYgdGhlICpkYXRhKgorICAgYXJndW1lbnQgaXMgcHJlc2VudC4gIElmIHRoaXMgaGVhZGVyIGhhcyBub3QgYmVlbiBwcm92aWRlZCBhbmQgKmRhdGEqCisgICBpcyBub3QgTm9uZSwgYGBDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZGBgIHdpbGwKKyAgIGJlIGFkZGVkIGFzIGEgZGVmYXVsdC4KIAogICAgVGhlIGZpbmFsIHR3byBhcmd1bWVudHMgYXJlIG9ubHkgb2YgaW50ZXJlc3QgZm9yIGNvcnJlY3QgaGFuZGxpbmcKICAgIG9mIHRoaXJkLXBhcnR5IEhUVFAgY29va2llczoKQEAgLTIzNSwxNSArMjQxLDI4IEBACiAgICAqbWV0aG9kKiBzaG91bGQgYmUgYSBzdHJpbmcgdGhhdCBpbmRpY2F0ZXMgdGhlIEhUVFAgcmVxdWVzdCBtZXRob2QgdGhhdAogICAgd2lsbCBiZSB1c2VkIChlLmcuIGBgJ0hFQUQnYGApLiAgSWYgcHJvdmlkZWQsIGl0cyB2YWx1ZSBpcyBzdG9yZWQgaW4gdGhlCiAgICA6YXR0cjpgflJlcXVlc3QubWV0aG9kYCBhdHRyaWJ1dGUgYW5kIGlzIHVzZWQgYnkgOm1ldGg6YGdldF9tZXRob2QoKWAuCi0gICBTdWJjbGFzc2VzIG1heSBpbmRpY2F0ZSBhIGRlZmF1bHQgbWV0aG9kIGJ5IHNldHRpbmcgdGhlCisgICBUaGUgZGVmYXVsdCBpcyBgYCdHRVQnYGAgaWYgKmRhdGEqIGlzIGBgTm9uZWBgIG9yIGBgJ1BPU1QnYGAgb3RoZXJ3aXNlLgorICAgU3ViY2xhc3NlcyBtYXkgaW5kaWNhdGUgYSBkaWZmZXJlbnQgZGVmYXVsdCBtZXRob2QgYnkgc2V0dGluZyB0aGUKICAgIDphdHRyOmB+UmVxdWVzdC5tZXRob2RgIGF0dHJpYnV0ZSBpbiB0aGUgY2xhc3MgaXRzZWxmLgogCisgICAuLiBub3RlOjoKKyAgICAgIFRoZSByZXF1ZXN0IHdpbGwgbm90IHdvcmsgYXMgZXhwZWN0ZWQgaWYgdGhlIGRhdGEgb2JqZWN0IGlzIHVuYWJsZQorICAgICAgdG8gZGVsaXZlciBpdHMgY29udGVudCBtb3JlIHRoYW4gb25jZSAoZS5nLiBhIGZpbGUgb3IgYW4gaXRlcmFibGUKKyAgICAgIHRoYXQgY2FuIHByb2R1Y2UgdGhlIGNvbnRlbnQgb25seSBvbmNlKSBhbmQgdGhlIHJlcXVlc3QgaXMgcmV0cmllZAorICAgICAgZm9yIEhUVFAgcmVkaXJlY3RzIG9yIGF1dGhlbnRpY2F0aW9uLiAgVGhlICpkYXRhKiBpcyBzZW50IHRvIHRoZQorICAgICAgSFRUUCBzZXJ2ZXIgcmlnaHQgYXdheSBhZnRlciB0aGUgaGVhZGVycy4gIFRoZXJlIGlzIG5vIHN1cHBvcnQgZm9yCisgICAgICBhIDEwMC1jb250aW51ZSBleHBlY3RhdGlvbiBpbiB0aGUgbGlicmFyeS4KKwogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKICAgICAgIDphdHRyOmBSZXF1ZXN0Lm1ldGhvZGAgYXJndW1lbnQgaXMgYWRkZWQgdG8gdGhlIFJlcXVlc3QgY2xhc3MuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICBEZWZhdWx0IDphdHRyOmBSZXF1ZXN0Lm1ldGhvZGAgbWF5IGJlIGluZGljYXRlZCBhdCB0aGUgY2xhc3MgbGV2ZWwuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBEbyBub3QgcmFpc2UgYW4gZXJyb3IgaWYgdGhlIGBgQ29udGVudC1MZW5ndGhgYCBoYXMgbm90IGJlZW4KKyAgICAgIHByb3ZpZGVkIGFuZCAqZGF0YSogaXMgbmVpdGhlciBgYE5vbmVgYCBub3IgYSBieXRlcyBvYmplY3QuCisgICAgICBGYWxsIGJhY2sgdG8gdXNlIGNodW5rZWQgdHJhbnNmZXIgZW5jb2RpbmcgaW5zdGVhZC4KIAogLi4gY2xhc3M6OiBPcGVuZXJEaXJlY3RvcigpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3VybGxpYi5yb2JvdHBhcnNlci5yc3QgYi9Eb2MvbGlicmFyeS91cmxsaWIucm9ib3RwYXJzZXIucnN0CmluZGV4IGJhNzAxYzMuLjdkMzE5MzIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3VybGxpYi5yb2JvdHBhcnNlci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdXJsbGliLnJvYm90cGFyc2VyLnJzdApAQCAtNTcsMTUgKzU3LDQxIEBACiAgICAgICBTZXRzIHRoZSB0aW1lIHRoZSBgYHJvYm90cy50eHRgYCBmaWxlIHdhcyBsYXN0IGZldGNoZWQgdG8gdGhlIGN1cnJlbnQKICAgICAgIHRpbWUuCiAKKyAgIC4uIG1ldGhvZDo6IGNyYXdsX2RlbGF5KHVzZXJhZ2VudCkKIAotVGhlIGZvbGxvd2luZyBleGFtcGxlIGRlbW9uc3RyYXRlcyBiYXNpYyB1c2Ugb2YgdGhlIFJvYm90RmlsZVBhcnNlciBjbGFzcy4KKyAgICAgIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBgYENyYXdsLWRlbGF5YGAgcGFyYW1ldGVyIGZyb20gYGByb2JvdHMudHh0YGAKKyAgICAgIGZvciB0aGUgKnVzZXJhZ2VudCogaW4gcXVlc3Rpb24uICBJZiB0aGVyZSBpcyBubyBzdWNoIHBhcmFtZXRlciBvciBpdAorICAgICAgZG9lc24ndCBhcHBseSB0byB0aGUgKnVzZXJhZ2VudCogc3BlY2lmaWVkIG9yIHRoZSBgYHJvYm90cy50eHRgYCBlbnRyeQorICAgICAgZm9yIHRoaXMgcGFyYW1ldGVyIGhhcyBpbnZhbGlkIHN5bnRheCwgcmV0dXJuIGBgTm9uZWBgLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworICAgLi4gbWV0aG9kOjogcmVxdWVzdF9yYXRlKHVzZXJhZ2VudCkKKworICAgICAgUmV0dXJucyB0aGUgY29udGVudHMgb2YgdGhlIGBgUmVxdWVzdC1yYXRlYGAgcGFyYW1ldGVyIGZyb20KKyAgICAgIGBgcm9ib3RzLnR4dGBgIGluIHRoZSBmb3JtIG9mIGEgOmZ1bmM6YH5jb2xsZWN0aW9ucy5uYW1lZHR1cGxlYAorICAgICAgYGAocmVxdWVzdHMsIHNlY29uZHMpYGAuICBJZiB0aGVyZSBpcyBubyBzdWNoIHBhcmFtZXRlciBvciBpdCBkb2Vzbid0CisgICAgICBhcHBseSB0byB0aGUgKnVzZXJhZ2VudCogc3BlY2lmaWVkIG9yIHRoZSBgYHJvYm90cy50eHRgYCBlbnRyeSBmb3IgdGhpcworICAgICAgcGFyYW1ldGVyIGhhcyBpbnZhbGlkIHN5bnRheCwgcmV0dXJuIGBgTm9uZWBgLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCitUaGUgZm9sbG93aW5nIGV4YW1wbGUgZGVtb25zdHJhdGVzIGJhc2ljIHVzZSBvZiB0aGUgOmNsYXNzOmBSb2JvdEZpbGVQYXJzZXJgCitjbGFzczo6CiAKICAgID4+PiBpbXBvcnQgdXJsbGliLnJvYm90cGFyc2VyCiAgICA+Pj4gcnAgPSB1cmxsaWIucm9ib3RwYXJzZXIuUm9ib3RGaWxlUGFyc2VyKCkKICAgID4+PiBycC5zZXRfdXJsKCJodHRwOi8vd3d3Lm11c2ktY2FsLmNvbS9yb2JvdHMudHh0IikKICAgID4+PiBycC5yZWFkKCkKKyAgID4+PiBycmF0ZSA9IHJwLnJlcXVlc3RfcmF0ZSgiKiIpCisgICA+Pj4gcnJhdGUucmVxdWVzdHMKKyAgIDMKKyAgID4+PiBycmF0ZS5zZWNvbmRzCisgICAyMAorICAgPj4+IHJwLmNyYXdsX2RlbGF5KCIqIikKKyAgIDYKICAgID4+PiBycC5jYW5fZmV0Y2goIioiLCAiaHR0cDovL3d3dy5tdXNpLWNhbC5jb20vY2dpLWJpbi9zZWFyY2g/Y2l0eT1TYW4rRnJhbmNpc2NvIikKICAgIEZhbHNlCiAgICA+Pj4gcnAuY2FuX2ZldGNoKCIqIiwgImh0dHA6Ly93d3cubXVzaS1jYWwuY29tLyIpCiAgICBUcnVlCi0KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3ZlbnYucnN0IGIvRG9jL2xpYnJhcnkvdmVudi5yc3QKaW5kZXggMDMyNzczNy4uMTdjODBjOCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdmVudi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdmVudi5yc3QKQEAgLTM3LDQ0ICszNyw1MCBAQAogCiAuLiBfdmVudi1kZWY6CiAKLS4uIG5vdGU6OiBBIHZpcnR1YWwgZW52aXJvbm1lbnQgKGFsc28gY2FsbGVkIGEgYGB2ZW52YGApIGlzIGEgUHl0aG9uCi0gICBlbnZpcm9ubWVudCBzdWNoIHRoYXQgdGhlIFB5dGhvbiBpbnRlcnByZXRlciwgbGlicmFyaWVzIGFuZCBzY3JpcHRzCi0gICBpbnN0YWxsZWQgaW50byBpdCBhcmUgaXNvbGF0ZWQgZnJvbSB0aG9zZSBpbnN0YWxsZWQgaW4gb3RoZXIgdmlydHVhbAotICAgZW52aXJvbm1lbnRzLCBhbmQgKGJ5IGRlZmF1bHQpIGFueSBsaWJyYXJpZXMgaW5zdGFsbGVkIGluIGEgInN5c3RlbSIgUHl0aG9uLAotICAgaS5lLiBvbmUgd2hpY2ggaXMgaW5zdGFsbGVkIGFzIHBhcnQgb2YgeW91ciBvcGVyYXRpbmcgc3lzdGVtLgorLi4gbm90ZTo6IEEgdmlydHVhbCBlbnZpcm9ubWVudCBpcyBhIFB5dGhvbiBlbnZpcm9ubWVudCBzdWNoIHRoYXQgdGhlIFB5dGhvbgorICAgaW50ZXJwcmV0ZXIsIGxpYnJhcmllcyBhbmQgc2NyaXB0cyBpbnN0YWxsZWQgaW50byBpdCBhcmUgaXNvbGF0ZWQgZnJvbSB0aG9zZQorICAgaW5zdGFsbGVkIGluIG90aGVyIHZpcnR1YWwgZW52aXJvbm1lbnRzLCBhbmQgKGJ5IGRlZmF1bHQpIGFueSBsaWJyYXJpZXMKKyAgIGluc3RhbGxlZCBpbiBhICJzeXN0ZW0iIFB5dGhvbiwgaS5lLiwgb25lIHdoaWNoIGlzIGluc3RhbGxlZCBhcyBwYXJ0IG9mIHlvdXIKKyAgIG9wZXJhdGluZyBzeXN0ZW0uCiAKLSAgIEEgdmVudiBpcyBhIGRpcmVjdG9yeSB0cmVlIHdoaWNoIGNvbnRhaW5zIFB5dGhvbiBleGVjdXRhYmxlIGZpbGVzIGFuZAotICAgb3RoZXIgZmlsZXMgd2hpY2ggaW5kaWNhdGUgdGhhdCBpdCBpcyBhIHZlbnYuCisgICBBIHZpcnR1YWwgZW52aXJvbm1lbnQgaXMgYSBkaXJlY3RvcnkgdHJlZSB3aGljaCBjb250YWlucyBQeXRob24gZXhlY3V0YWJsZQorICAgZmlsZXMgYW5kIG90aGVyIGZpbGVzIHdoaWNoIGluZGljYXRlIHRoYXQgaXQgaXMgYSB2aXJ0dWFsIGVudmlyb25tZW50LgogCiAgICBDb21tb24gaW5zdGFsbGF0aW9uIHRvb2xzIHN1Y2ggYXMgYGBTZXR1cHRvb2xzYGAgYW5kIGBgcGlwYGAgd29yayBhcwotICAgZXhwZWN0ZWQgd2l0aCB2ZW52cyAtIGkuZS4gd2hlbiBhIHZlbnYgaXMgYWN0aXZlLCB0aGV5IGluc3RhbGwgUHl0aG9uCi0gICBwYWNrYWdlcyBpbnRvIHRoZSB2ZW52IHdpdGhvdXQgbmVlZGluZyB0byBiZSB0b2xkIHRvIGRvIHNvIGV4cGxpY2l0bHkuCisgICBleHBlY3RlZCB3aXRoIHZpcnR1YWwgZW52aXJvbm1lbnRzLiBJbiBvdGhlciB3b3Jkcywgd2hlbiBhIHZpcnR1YWwKKyAgIGVudmlyb25tZW50IGlzIGFjdGl2ZSwgdGhleSBpbnN0YWxsIFB5dGhvbiBwYWNrYWdlcyBpbnRvIHRoZSB2aXJ0dWFsCisgICBlbnZpcm9ubWVudCB3aXRob3V0IG5lZWRpbmcgdG8gYmUgdG9sZCB0byBkbyBzbyBleHBsaWNpdGx5LgogCi0gICBXaGVuIGEgdmVudiBpcyBhY3RpdmUgKGkuZS4gdGhlIHZlbnYncyBQeXRob24gaW50ZXJwcmV0ZXIgaXMgcnVubmluZyksIHRoZQotICAgYXR0cmlidXRlcyA6YXR0cjpgc3lzLnByZWZpeGAgYW5kIDphdHRyOmBzeXMuZXhlY19wcmVmaXhgIHBvaW50IHRvIHRoZSBiYXNlCi0gICBkaXJlY3Rvcnkgb2YgdGhlIHZlbnYsIHdoZXJlYXMgOmF0dHI6YHN5cy5iYXNlX3ByZWZpeGAgYW5kCi0gICA6YXR0cjpgc3lzLmJhc2VfZXhlY19wcmVmaXhgIHBvaW50IHRvIHRoZSBub24tdmVudiBQeXRob24gaW5zdGFsbGF0aW9uCi0gICB3aGljaCB3YXMgdXNlZCB0byBjcmVhdGUgdGhlIHZlbnYuIElmIGEgdmVudiBpcyBub3QgYWN0aXZlLCB0aGVuCi0gICA6YXR0cjpgc3lzLnByZWZpeGAgaXMgdGhlIHNhbWUgYXMgOmF0dHI6YHN5cy5iYXNlX3ByZWZpeGAgYW5kCi0gICA6YXR0cjpgc3lzLmV4ZWNfcHJlZml4YCBpcyB0aGUgc2FtZSBhcyA6YXR0cjpgc3lzLmJhc2VfZXhlY19wcmVmaXhgICh0aGV5Ci0gICBhbGwgcG9pbnQgdG8gYSBub24tdmVudiBQeXRob24gaW5zdGFsbGF0aW9uKS4KKyAgIFdoZW4gYSB2aXJ0dWFsIGVudmlyb25tZW50IGlzIGFjdGl2ZSAoaS5lLiwgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQncyBQeXRob24KKyAgIGludGVycHJldGVyIGlzIHJ1bm5pbmcpLCB0aGUgYXR0cmlidXRlcyA6YXR0cjpgc3lzLnByZWZpeGAgYW5kCisgICA6YXR0cjpgc3lzLmV4ZWNfcHJlZml4YCBwb2ludCB0byB0aGUgYmFzZSBkaXJlY3Rvcnkgb2YgdGhlIHZpcnR1YWwKKyAgIGVudmlyb25tZW50LCB3aGVyZWFzIDphdHRyOmBzeXMuYmFzZV9wcmVmaXhgIGFuZAorICAgOmF0dHI6YHN5cy5iYXNlX2V4ZWNfcHJlZml4YCBwb2ludCB0byB0aGUgbm9uLXZpcnR1YWwgZW52aXJvbm1lbnQgUHl0aG9uCisgICBpbnN0YWxsYXRpb24gd2hpY2ggd2FzIHVzZWQgdG8gY3JlYXRlIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50LiBJZiBhIHZpcnR1YWwKKyAgIGVudmlyb25tZW50IGlzIG5vdCBhY3RpdmUsIHRoZW4gOmF0dHI6YHN5cy5wcmVmaXhgIGlzIHRoZSBzYW1lIGFzCisgICA6YXR0cjpgc3lzLmJhc2VfcHJlZml4YCBhbmQgOmF0dHI6YHN5cy5leGVjX3ByZWZpeGAgaXMgdGhlIHNhbWUgYXMKKyAgIDphdHRyOmBzeXMuYmFzZV9leGVjX3ByZWZpeGAgKHRoZXkgYWxsIHBvaW50IHRvIGEgbm9uLXZpcnR1YWwgZW52aXJvbm1lbnQKKyAgIFB5dGhvbiBpbnN0YWxsYXRpb24pLgogCi0gICBXaGVuIGEgdmVudiBpcyBhY3RpdmUsIGFueSBvcHRpb25zIHRoYXQgY2hhbmdlIHRoZSBpbnN0YWxsYXRpb24gcGF0aCB3aWxsIGJlCi0gICBpZ25vcmVkIGZyb20gYWxsIGRpc3R1dGlscyBjb25maWd1cmF0aW9uIGZpbGVzIHRvIHByZXZlbnQgcHJvamVjdHMgYmVpbmcKLSAgIGluYWR2ZXJ0ZW50bHkgaW5zdGFsbGVkIG91dHNpZGUgb2YgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQuCisgICBXaGVuIGEgdmlydHVhbCBlbnZpcm9ubWVudCBpcyBhY3RpdmUsIGFueSBvcHRpb25zIHRoYXQgY2hhbmdlIHRoZQorICAgaW5zdGFsbGF0aW9uIHBhdGggd2lsbCBiZSBpZ25vcmVkIGZyb20gYWxsIGRpc3R1dGlscyBjb25maWd1cmF0aW9uIGZpbGVzIHRvCisgICBwcmV2ZW50IHByb2plY3RzIGJlaW5nIGluYWR2ZXJ0ZW50bHkgaW5zdGFsbGVkIG91dHNpZGUgb2YgdGhlIHZpcnR1YWwKKyAgIGVudmlyb25tZW50LgogCi0gICBXaGVuIHdvcmtpbmcgaW4gYSBjb21tYW5kIHNoZWxsLCB1c2VycyBjYW4gbWFrZSBhIHZlbnYgYWN0aXZlIGJ5IHJ1bm5pbmcgYW4KLSAgIGBgYWN0aXZhdGVgYCBzY3JpcHQgaW4gdGhlIHZlbnYncyBleGVjdXRhYmxlcyBkaXJlY3RvcnkgKHRoZSBwcmVjaXNlIGZpbGVuYW1lCi0gICBpcyBzaGVsbC1kZXBlbmRlbnQpLCB3aGljaCBwcmVwZW5kcyB0aGUgdmVudidzIGRpcmVjdG9yeSBmb3IgZXhlY3V0YWJsZXMgdG8KLSAgIHRoZSBgYFBBVEhgYCBlbnZpcm9ubWVudCB2YXJpYWJsZSBmb3IgdGhlIHJ1bm5pbmcgc2hlbGwuIFRoZXJlIHNob3VsZCBiZSBubwotICAgbmVlZCBpbiBvdGhlciBjaXJjdW1zdGFuY2VzIHRvIGFjdGl2YXRlIGEgdmVudiAtLSBzY3JpcHRzIGluc3RhbGxlZCBpbnRvCi0gICB2ZW52cyBoYXZlIGEgc2hlYmFuZyBsaW5lIHdoaWNoIHBvaW50cyB0byB0aGUgdmVudidzIFB5dGhvbiBpbnRlcnByZXRlci4gVGhpcwotICAgbWVhbnMgdGhhdCB0aGUgc2NyaXB0IHdpbGwgcnVuIHdpdGggdGhhdCBpbnRlcnByZXRlciByZWdhcmRsZXNzIG9mIHRoZSB2YWx1ZQotICAgb2YgYGBQQVRIYGAuIE9uIFdpbmRvd3MsIHNoZWJhbmcgbGluZSBwcm9jZXNzaW5nIGlzIHN1cHBvcnRlZCBpZiB5b3UgaGF2ZSB0aGUKLSAgIFB5dGhvbiBMYXVuY2hlciBmb3IgV2luZG93cyBpbnN0YWxsZWQgKHRoaXMgd2FzIGFkZGVkIHRvIFB5dGhvbiBpbiAzLjMgLSBzZWUKLSAgIDpwZXA6YDM5N2AgZm9yIG1vcmUgZGV0YWlscykuIFRodXMsIGRvdWJsZS1jbGlja2luZyBhbiBpbnN0YWxsZWQgc2NyaXB0IGluCi0gICBhIFdpbmRvd3MgRXhwbG9yZXIgd2luZG93IHNob3VsZCBydW4gdGhlIHNjcmlwdCB3aXRoIHRoZSBjb3JyZWN0IGludGVycHJldGVyCi0gICB3aXRob3V0IHRoZXJlIG5lZWRpbmcgdG8gYmUgYW55IHJlZmVyZW5jZSB0byBpdHMgdmVudiBpbiBgYFBBVEhgYC4KKyAgIFdoZW4gd29ya2luZyBpbiBhIGNvbW1hbmQgc2hlbGwsIHVzZXJzIGNhbiBtYWtlIGEgdmlydHVhbCBlbnZpcm9ubWVudCBhY3RpdmUKKyAgIGJ5IHJ1bm5pbmcgYW4gYGBhY3RpdmF0ZWBgIHNjcmlwdCBpbiB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCdzIGV4ZWN1dGFibGVzCisgICBkaXJlY3RvcnkgKHRoZSBwcmVjaXNlIGZpbGVuYW1lIGlzIHNoZWxsLWRlcGVuZGVudCksIHdoaWNoIHByZXBlbmRzIHRoZQorICAgdmlydHVhbCBlbnZpcm9ubWVudCdzIGRpcmVjdG9yeSBmb3IgZXhlY3V0YWJsZXMgdG8gdGhlIGBgUEFUSGBgIGVudmlyb25tZW50CisgICB2YXJpYWJsZSBmb3IgdGhlIHJ1bm5pbmcgc2hlbGwuIFRoZXJlIHNob3VsZCBiZSBubyBuZWVkIGluIG90aGVyCisgICBjaXJjdW1zdGFuY2VzIHRvIGFjdGl2YXRlIGEgdmlydHVhbCBlbnZpcm9ubWVudOKAlHNjcmlwdHMgaW5zdGFsbGVkIGludG8KKyAgIHZpcnR1YWwgZW52aXJvbm1lbnRzIGhhdmUgYSAic2hlYmFuZyIgbGluZSB3aGljaCBwb2ludHMgdG8gdGhlIHZpcnR1YWwKKyAgIGVudmlyb25tZW50J3MgUHl0aG9uIGludGVycHJldGVyLiBUaGlzIG1lYW5zIHRoYXQgdGhlIHNjcmlwdCB3aWxsIHJ1biB3aXRoCisgICB0aGF0IGludGVycHJldGVyIHJlZ2FyZGxlc3Mgb2YgdGhlIHZhbHVlIG9mIGBgUEFUSGBgLiBPbiBXaW5kb3dzLCAic2hlYmFuZyIKKyAgIGxpbmUgcHJvY2Vzc2luZyBpcyBzdXBwb3J0ZWQgaWYgeW91IGhhdmUgdGhlIFB5dGhvbiBMYXVuY2hlciBmb3IgV2luZG93cworICAgaW5zdGFsbGVkICh0aGlzIHdhcyBhZGRlZCB0byBQeXRob24gaW4gMy4zIC0gc2VlIDpwZXA6YDM5N2AgZm9yIG1vcmUKKyAgIGRldGFpbHMpLiBUaHVzLCBkb3VibGUtY2xpY2tpbmcgYW4gaW5zdGFsbGVkIHNjcmlwdCBpbiBhIFdpbmRvd3MgRXhwbG9yZXIKKyAgIHdpbmRvdyBzaG91bGQgcnVuIHRoZSBzY3JpcHQgd2l0aCB0aGUgY29ycmVjdCBpbnRlcnByZXRlciB3aXRob3V0IHRoZXJlCisgICBuZWVkaW5nIHRvIGJlIGFueSByZWZlcmVuY2UgdG8gaXRzIHZpcnR1YWwgZW52aXJvbm1lbnQgaW4gYGBQQVRIYGAuCiAKIAogLi4gX3ZlbnYtYXBpOgpAQCAtODksNyArOTUsOCBAQAogY3JlYXRpb24gYWNjb3JkaW5nIHRvIHRoZWlyIG5lZWRzLCB0aGUgOmNsYXNzOmBFbnZCdWlsZGVyYCBjbGFzcy4KIAogLi4gY2xhc3M6OiBFbnZCdWlsZGVyKHN5c3RlbV9zaXRlX3BhY2thZ2VzPUZhbHNlLCBjbGVhcj1GYWxzZSwgXAotICAgICAgICAgICAgICAgICAgICAgIHN5bWxpbmtzPUZhbHNlLCB1cGdyYWRlPUZhbHNlLCB3aXRoX3BpcD1GYWxzZSkKKyAgICAgICAgICAgICAgICAgICAgICBzeW1saW5rcz1GYWxzZSwgdXBncmFkZT1GYWxzZSwgd2l0aF9waXA9RmFsc2UsIFwKKyAgICAgICAgICAgICAgICAgICAgICBwcm9tcHQ9Tm9uZSkKIAogICAgIFRoZSA6Y2xhc3M6YEVudkJ1aWxkZXJgIGNsYXNzIGFjY2VwdHMgdGhlIGZvbGxvd2luZyBrZXl3b3JkIGFyZ3VtZW50cyBvbgogICAgIGluc3RhbnRpYXRpb246CkBAIC0xMTMsOSArMTIwLDE2IEBACiAgICAgICBpbnN0YWxsZWQgaW4gdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQuIFRoaXMgdXNlcyA6bW9kOmBlbnN1cmVwaXBgIHdpdGgKICAgICAgIHRoZSBgYC0tZGVmYXVsdC1waXBgYCBvcHRpb24uCiAKKyAgICAqIGBgcHJvbXB0YGAgLS0gYSBTdHJpbmcgdG8gYmUgdXNlZCBhZnRlciB2aXJ0dWFsIGVudmlyb25tZW50IGlzIGFjdGl2YXRlZAorICAgICAgKGRlZmF1bHRzIHRvIGBgTm9uZWBgIHdoaWNoIG1lYW5zIGRpcmVjdG9yeSBuYW1lIG9mIHRoZSBlbnZpcm9ubWVudCB3b3VsZAorICAgICAgYmUgdXNlZCkuCisKICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgIEFkZGVkIHRoZSBgYHdpdGhfcGlwYGAgcGFyYW1ldGVyCiAKKyAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKyAgICAgICBBZGRlZCB0aGUgYGBwcm9tcHRgYCBwYXJhbWV0ZXIKKwogCiAgICAgQ3JlYXRvcnMgb2YgdGhpcmQtcGFydHkgdmlydHVhbCBlbnZpcm9ubWVudCB0b29scyB3aWxsIGJlIGZyZWUgdG8gdXNlIHRoZQogICAgIHByb3ZpZGVkIGBgRW52QnVpbGRlcmBgIGNsYXNzIGFzIGEgYmFzZSBjbGFzcy4KQEAgLTIyNSw3ICsyMzksNyBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogVGhlIGZvbGxvd2luZyBzY3JpcHQgc2hvd3MgaG93IHRvIGV4dGVuZCA6Y2xhc3M6YEVudkJ1aWxkZXJgIGJ5IGltcGxlbWVudGluZyBhCi1zdWJjbGFzcyB3aGljaCBpbnN0YWxscyBzZXR1cHRvb2xzIGFuZCBwaXAgaW50byBhIGNyZWF0ZWQgdmVudjo6CitzdWJjbGFzcyB3aGljaCBpbnN0YWxscyBzZXR1cHRvb2xzIGFuZCBwaXAgaW50byBhIGNyZWF0ZWQgdmlydHVhbCBlbnZpcm9ubWVudDo6CiAKICAgICBpbXBvcnQgb3MKICAgICBpbXBvcnQgb3MucGF0aApAQCAtMjM5LDEyICsyNTMsMTIgQEAKICAgICBjbGFzcyBFeHRlbmRlZEVudkJ1aWxkZXIodmVudi5FbnZCdWlsZGVyKToKICAgICAgICAgIiIiCiAgICAgICAgIFRoaXMgYnVpbGRlciBpbnN0YWxscyBzZXR1cHRvb2xzIGFuZCBwaXAgc28gdGhhdCB5b3UgY2FuIHBpcCBvcgotICAgICAgICBlYXN5X2luc3RhbGwgb3RoZXIgcGFja2FnZXMgaW50byB0aGUgY3JlYXRlZCBlbnZpcm9ubWVudC4KKyAgICAgICAgZWFzeV9pbnN0YWxsIG90aGVyIHBhY2thZ2VzIGludG8gdGhlIGNyZWF0ZWQgdmlydHVhbCBlbnZpcm9ubWVudC4KIAogICAgICAgICA6cGFyYW0gbm9kaXN0OiBJZiBUcnVlLCBzZXR1cHRvb2xzIGFuZCBwaXAgYXJlIG5vdCBpbnN0YWxsZWQgaW50byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZCBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZCB2aXJ0dWFsIGVudmlyb25tZW50LgogICAgICAgICA6cGFyYW0gbm9waXA6IElmIFRydWUsIHBpcCBpcyBub3QgaW5zdGFsbGVkIGludG8gdGhlIGNyZWF0ZWQKLSAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgICAgICAgICAgICB2aXJ0dWFsIGVudmlyb25tZW50LgogICAgICAgICA6cGFyYW0gcHJvZ3Jlc3M6IElmIHNldHVwdG9vbHMgb3IgcGlwIGFyZSBpbnN0YWxsZWQsIHRoZSBwcm9ncmVzcyBvZiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsYXRpb24gY2FuIGJlIG1vbml0b3JlZCBieSBwYXNzaW5nIGEgcHJvZ3Jlc3MKICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYWJsZS4gSWYgc3BlY2lmaWVkLCBpdCBpcyBjYWxsZWQgd2l0aCB0d28KQEAgLTI3MCwxMCArMjg0LDEwIEBACiAgICAgICAgIGRlZiBwb3N0X3NldHVwKHNlbGYsIGNvbnRleHQpOgogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBTZXQgdXAgYW55IHBhY2thZ2VzIHdoaWNoIG5lZWQgdG8gYmUgcHJlLWluc3RhbGxlZCBpbnRvIHRoZQotICAgICAgICAgICAgZW52aXJvbm1lbnQgYmVpbmcgY3JlYXRlZC4KKyAgICAgICAgICAgIHZpcnR1YWwgZW52aXJvbm1lbnQgYmVpbmcgY3JlYXRlZC4KIAotICAgICAgICAgICAgOnBhcmFtIGNvbnRleHQ6IFRoZSBpbmZvcm1hdGlvbiBmb3IgdGhlIGVudmlyb25tZW50IGNyZWF0aW9uIHJlcXVlc3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWluZyBwcm9jZXNzZWQuCisgICAgICAgICAgICA6cGFyYW0gY29udGV4dDogVGhlIGluZm9ybWF0aW9uIGZvciB0aGUgdmlydHVhbCBlbnZpcm9ubWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0aW9uIHJlcXVlc3QgYmVpbmcgcHJvY2Vzc2VkLgogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBvcy5lbnZpcm9uWydWSVJUVUFMX0VOViddID0gY29udGV4dC5lbnZfZGlyCiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5ub2Rpc3Q6CkBAIC0zMDcsNyArMzIxLDcgQEAKICAgICAgICAgICAgIGZuID0gb3MucGF0aC5zcGxpdChwYXRoKVstMV0KICAgICAgICAgICAgIGJpbnBhdGggPSBjb250ZXh0LmJpbl9wYXRoCiAgICAgICAgICAgICBkaXN0cGF0aCA9IG9zLnBhdGguam9pbihiaW5wYXRoLCBmbikKLSAgICAgICAgICAgICMgRG93bmxvYWQgc2NyaXB0IGludG8gdGhlIGVudidzIGJpbmFyaWVzIGZvbGRlcgorICAgICAgICAgICAgIyBEb3dubG9hZCBzY3JpcHQgaW50byB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCdzIGJpbmFyaWVzIGZvbGRlcgogICAgICAgICAgICAgdXJscmV0cmlldmUodXJsLCBkaXN0cGF0aCkKICAgICAgICAgICAgIHByb2dyZXNzID0gc2VsZi5wcm9ncmVzcwogICAgICAgICAgICAgaWYgc2VsZi52ZXJib3NlOgpAQCAtMzE5LDcgKzMzMyw3IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ0luc3RhbGxpbmcgJXMgLi4uJXMnICUgKG5hbWUsIHRlcm0pKQogICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIuZmx1c2goKQotICAgICAgICAgICAgIyBJbnN0YWxsIGluIHRoZSBlbnYKKyAgICAgICAgICAgICMgSW5zdGFsbCBpbiB0aGUgdmlydHVhbCBlbnZpcm9ubWVudAogICAgICAgICAgICAgYXJncyA9IFtjb250ZXh0LmVudl9leGUsIGZuXQogICAgICAgICAgICAgcCA9IFBvcGVuKGFyZ3MsIHN0ZG91dD1QSVBFLCBzdGRlcnI9UElQRSwgY3dkPWJpbnBhdGgpCiAgICAgICAgICAgICB0MSA9IFRocmVhZCh0YXJnZXQ9c2VsZi5yZWFkZXIsIGFyZ3M9KHAuc3Rkb3V0LCAnc3Rkb3V0JykpCkBAIC0zMzgsMTAgKzM1MiwxMCBAQAogCiAgICAgICAgIGRlZiBpbnN0YWxsX3NldHVwdG9vbHMoc2VsZiwgY29udGV4dCk6CiAgICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIEluc3RhbGwgc2V0dXB0b29scyBpbiB0aGUgZW52aXJvbm1lbnQuCisgICAgICAgICAgICBJbnN0YWxsIHNldHVwdG9vbHMgaW4gdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQuCiAKLSAgICAgICAgICAgIDpwYXJhbSBjb250ZXh0OiBUaGUgaW5mb3JtYXRpb24gZm9yIHRoZSBlbnZpcm9ubWVudCBjcmVhdGlvbiByZXF1ZXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVpbmcgcHJvY2Vzc2VkLgorICAgICAgICAgICAgOnBhcmFtIGNvbnRleHQ6IFRoZSBpbmZvcm1hdGlvbiBmb3IgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGlvbiByZXF1ZXN0IGJlaW5nIHByb2Nlc3NlZC4KICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgdXJsID0gJ2h0dHBzOi8vYml0YnVja2V0Lm9yZy9weXBhL3NldHVwdG9vbHMvZG93bmxvYWRzL2V6X3NldHVwLnB5JwogICAgICAgICAgICAgc2VsZi5pbnN0YWxsX3NjcmlwdChjb250ZXh0LCAnc2V0dXB0b29scycsIHVybCkKQEAgLTM1NCwxMCArMzY4LDEwIEBACiAKICAgICAgICAgZGVmIGluc3RhbGxfcGlwKHNlbGYsIGNvbnRleHQpOgogICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBJbnN0YWxsIHBpcCBpbiB0aGUgZW52aXJvbm1lbnQuCisgICAgICAgICAgICBJbnN0YWxsIHBpcCBpbiB0aGUgdmlydHVhbCBlbnZpcm9ubWVudC4KIAotICAgICAgICAgICAgOnBhcmFtIGNvbnRleHQ6IFRoZSBpbmZvcm1hdGlvbiBmb3IgdGhlIGVudmlyb25tZW50IGNyZWF0aW9uIHJlcXVlc3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWluZyBwcm9jZXNzZWQuCisgICAgICAgICAgICA6cGFyYW0gY29udGV4dDogVGhlIGluZm9ybWF0aW9uIGZvciB0aGUgdmlydHVhbCBlbnZpcm9ubWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0aW9uIHJlcXVlc3QgYmVpbmcgcHJvY2Vzc2VkLgogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICB1cmwgPSAnaHR0cHM6Ly9yYXcuZ2l0aHViLmNvbS9weXBhL3BpcC9tYXN0ZXIvY29udHJpYi9nZXQtcGlwLnB5JwogICAgICAgICAgICAgc2VsZi5pbnN0YWxsX3NjcmlwdChjb250ZXh0LCAncGlwJywgdXJsKQpAQCAtMzgwLDcgKzM5NCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9yZSB0YXJnZXQgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RpcmVjdG9yaWVzLicpCiAgICAgICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdkaXJzJywgbWV0YXZhcj0nRU5WX0RJUicsIG5hcmdzPScrJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nQSBkaXJlY3RvcnkgdG8gY3JlYXRlIHRoZSBlbnZpcm9ubWVudCBpbi4nKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdBIGRpcmVjdG9yeSBpbiB3aGljaCB0byBjcmVhdGUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZpcnR1YWwgZW52aXJvbm1lbnQuJykKICAgICAgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tbm8tc2V0dXB0b29scycsIGRlZmF1bHQ9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlc3Q9J25vZGlzdCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkRvbid0IGluc3RhbGwgc2V0dXB0b29scyBvciBwaXAgaW4gdGhlICIKQEAgLTQwNCwxNCArNDE5LDE3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoZSBwbGF0Zm9ybS4nKQogICAgICAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1jbGVhcicsIGRlZmF1bHQ9RmFsc2UsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J2NsZWFyJywgaGVscD0nRGVsZXRlIHRoZSBjb250ZW50cyBvZiB0aGUgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Vudmlyb25tZW50IGRpcmVjdG9yeSBpZiBpdCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWxyZWFkeSBleGlzdHMsIGJlZm9yZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmlydHVhbCBlbnZpcm9ubWVudCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlyZWN0b3J5IGlmIGl0IGFscmVhZHkgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4aXN0cywgYmVmb3JlIHZpcnR1YWwgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Vudmlyb25tZW50IGNyZWF0aW9uLicpCiAgICAgICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXVwZ3JhZGUnLCBkZWZhdWx0PUZhbHNlLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSd1cGdyYWRlJywgaGVscD0nVXBncmFkZSB0aGUgZW52aXJvbm1lbnQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RpcmVjdG9yeSB0byB1c2UgdGhpcyB2ZXJzaW9uICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvZiBQeXRob24sIGFzc3VtaW5nIFB5dGhvbiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGFzIGJlZW4gdXBncmFkZWQgaW4tcGxhY2UuJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ndXBncmFkZScsIGhlbHA9J1VwZ3JhZGUgdGhlIHZpcnR1YWwgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZW52aXJvbm1lbnQgZGlyZWN0b3J5IHRvICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZSB0aGlzIHZlcnNpb24gb2YgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUHl0aG9uLCBhc3N1bWluZyBQeXRob24gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGFzIGJlZW4gdXBncmFkZWQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW4tcGxhY2UuJykKICAgICAgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tdmVyYm9zZScsIGRlZmF1bHQ9RmFsc2UsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3ZlcmJvc2UnLCBoZWxwPSdEaXNwbGF5IHRoZSBvdXRwdXQgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zyb20gdGhlIHNjcmlwdHMgd2hpY2ggJwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvd2FybmluZ3MucnN0IGIvRG9jL2xpYnJhcnkvd2FybmluZ3MucnN0CmluZGV4IGNlYzU1ZjEuLmY2N2Y0YmMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3dhcm5pbmdzLnJzdAorKysgYi9Eb2MvbGlicmFyeS93YXJuaW5ncy5yc3QKQEAgLTMwMSw3ICszMDEsNyBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAKLS4uIGZ1bmN0aW9uOjogd2FybihtZXNzYWdlLCBjYXRlZ29yeT1Ob25lLCBzdGFja2xldmVsPTEpCisuLiBmdW5jdGlvbjo6IHdhcm4obWVzc2FnZSwgY2F0ZWdvcnk9Tm9uZSwgc3RhY2tsZXZlbD0xLCBzb3VyY2U9Tm9uZSkKIAogICAgSXNzdWUgYSB3YXJuaW5nLCBvciBtYXliZSBpZ25vcmUgaXQgb3IgcmFpc2UgYW4gZXhjZXB0aW9uLiAgVGhlICpjYXRlZ29yeSoKICAgIGFyZ3VtZW50LCBpZiBnaXZlbiwgbXVzdCBiZSBhIHdhcm5pbmcgY2F0ZWdvcnkgY2xhc3MgKHNlZSBhYm92ZSk7IGl0IGRlZmF1bHRzIHRvCkBAIC0zMTksOCArMzE5LDE0IEBACiAgICBzb3VyY2Ugb2YgOmZ1bmM6YGRlcHJlY2F0aW9uYCBpdHNlbGYgKHNpbmNlIHRoZSBsYXR0ZXIgd291bGQgZGVmZWF0IHRoZSBwdXJwb3NlCiAgICBvZiB0aGUgd2FybmluZyBtZXNzYWdlKS4KIAorICAgKnNvdXJjZSosIGlmIHN1cHBsaWVkLCBpcyB0aGUgZGVzdHJveWVkIG9iamVjdCB3aGljaCBlbWl0dGVkIGEKKyAgIDpleGM6YFJlc291cmNlV2FybmluZ2AuCiAKLS4uIGZ1bmN0aW9uOjogd2Fybl9leHBsaWNpdChtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUsIGxpbmVubywgbW9kdWxlPU5vbmUsIHJlZ2lzdHJ5PU5vbmUsIG1vZHVsZV9nbG9iYWxzPU5vbmUpCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWRkZWQgKnNvdXJjZSogcGFyYW1ldGVyLgorCisKKy4uIGZ1bmN0aW9uOjogd2Fybl9leHBsaWNpdChtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUsIGxpbmVubywgbW9kdWxlPU5vbmUsIHJlZ2lzdHJ5PU5vbmUsIG1vZHVsZV9nbG9iYWxzPU5vbmUsIHNvdXJjZT1Ob25lKQogCiAgICBUaGlzIGlzIGEgbG93LWxldmVsIGludGVyZmFjZSB0byB0aGUgZnVuY3Rpb25hbGl0eSBvZiA6ZnVuYzpgd2FybmAsIHBhc3NpbmcgaW4KICAgIGV4cGxpY2l0bHkgdGhlIG1lc3NhZ2UsIGNhdGVnb3J5LCBmaWxlbmFtZSBhbmQgbGluZSBudW1iZXIsIGFuZCBvcHRpb25hbGx5IHRoZQpAQCAtMzM2LDYgKzM0MiwxMiBAQAogICAgc291cmNlIGZvciBtb2R1bGVzIGZvdW5kIGluIHppcGZpbGVzIG9yIG90aGVyIG5vbi1maWxlc3lzdGVtIGltcG9ydAogICAgc291cmNlcykuCiAKKyAgICpzb3VyY2UqLCBpZiBzdXBwbGllZCwgaXMgdGhlIGRlc3Ryb3llZCBvYmplY3Qgd2hpY2ggZW1pdHRlZCBhCisgICA6ZXhjOmBSZXNvdXJjZVdhcm5pbmdgLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWRkIHRoZSAqc291cmNlKiBwYXJhbWV0ZXIuCisKIAogLi4gZnVuY3Rpb246OiBzaG93d2FybmluZyhtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUsIGxpbmVubywgZmlsZT1Ob25lLCBsaW5lPU5vbmUpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3dpbnJlZy5yc3QgYi9Eb2MvbGlicmFyeS93aW5yZWcucnN0CmluZGV4IDc2N2VhMzEuLjE0Zjc4OTYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3dpbnJlZy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvd2lucmVnLnJzdApAQCAtNjM1LDcgKzYzNSw3IEBACiAKIC4uIGRhdGE6OiBSRUdfRFdPUkRfTElUVExFX0VORElBTgogCi0gICBBIDMyLWJpdCBudW1iZXIgaW4gbGl0dGxlLWVuZGlhbiBmb3JtYXQuCisgICBBIDMyLWJpdCBudW1iZXIgaW4gbGl0dGxlLWVuZGlhbiBmb3JtYXQuIEVxdWl2YWxlbnQgdG8gOmNvbnN0OmBSRUdfRFdPUkRgLgogCiAuLiBkYXRhOjogUkVHX0RXT1JEX0JJR19FTkRJQU4KIApAQCAtNjU5LDYgKzY1OSwxOCBAQAogCiAgICBObyBkZWZpbmVkIHZhbHVlIHR5cGUuCiAKKy4uIGRhdGE6OiBSRUdfUVdPUkQKKworICAgQSA2NC1iaXQgbnVtYmVyLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworLi4gZGF0YTo6IFJFR19RV09SRF9MSVRUTEVfRU5ESUFOCisKKyAgIEEgNjQtYml0IG51bWJlciBpbiBsaXR0bGUtZW5kaWFuIGZvcm1hdC4gRXF1aXZhbGVudCB0byA6Y29uc3Q6YFJFR19RV09SRGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAuLiBkYXRhOjogUkVHX1JFU09VUkNFX0xJU1QKIAogICAgQSBkZXZpY2UtZHJpdmVyIHJlc291cmNlIGxpc3QuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS93aW5zb3VuZC5yc3QgYi9Eb2MvbGlicmFyeS93aW5zb3VuZC5yc3QKaW5kZXggZDJjNDIxMC4uMzcyZjc5MiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvd2luc291bmQucnN0CisrKyBiL0RvYy9saWJyYXJ5L3dpbnNvdW5kLnJzdApAQCAtMjUsNyArMjUsOCBAQAogLi4gZnVuY3Rpb246OiBQbGF5U291bmQoc291bmQsIGZsYWdzKQogCiAgICBDYWxsIHRoZSB1bmRlcmx5aW5nIDpjOmZ1bmM6YFBsYXlTb3VuZGAgZnVuY3Rpb24gZnJvbSB0aGUgUGxhdGZvcm0gQVBJLiAgVGhlCi0gICAqc291bmQqIHBhcmFtZXRlciBtYXkgYmUgYSBmaWxlbmFtZSwgYXVkaW8gZGF0YSBhcyBhIHN0cmluZywgb3IgYGBOb25lYGAuICBJdHMKKyAgICpzb3VuZCogcGFyYW1ldGVyIG1heSBiZSBhIGZpbGVuYW1lLCBhIHN5c3RlbSBzb3VuZCBhbGlhcywgYXVkaW8gZGF0YSBhcyBhCisgICA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgLCBvciBgYE5vbmVgYC4gIEl0cwogICAgaW50ZXJwcmV0YXRpb24gZGVwZW5kcyBvbiB0aGUgdmFsdWUgb2YgKmZsYWdzKiwgd2hpY2ggY2FuIGJlIGEgYml0d2lzZSBPUmVkCiAgICBjb21iaW5hdGlvbiBvZiB0aGUgY29uc3RhbnRzIGRlc2NyaWJlZCBiZWxvdy4gSWYgdGhlICpzb3VuZCogcGFyYW1ldGVyIGlzCiAgICBgYE5vbmVgYCwgYW55IGN1cnJlbnRseSBwbGF5aW5nIHdhdmVmb3JtIHNvdW5kIGlzIHN0b3BwZWQuIElmIHRoZSBzeXN0ZW0KQEAgLTM5LDcgKzQwLDggQEAKICAgIHNvdW5kIHRvIHBsYXk7IHBvc3NpYmxlIHZhbHVlcyBhcmUgYGAtMWBgLCBgYE1CX0lDT05BU1RFUklTS2BgLAogICAgYGBNQl9JQ09ORVhDTEFNQVRJT05gYCwgYGBNQl9JQ09OSEFORGBgLCBgYE1CX0lDT05RVUVTVElPTmBgLCBhbmQgYGBNQl9PS2BgLCBhbGwKICAgIGRlc2NyaWJlZCBiZWxvdy4gIFRoZSB2YWx1ZSBgYC0xYGAgcHJvZHVjZXMgYSAic2ltcGxlIGJlZXAiOyB0aGlzIGlzIHRoZSBmaW5hbAotICAgZmFsbGJhY2sgaWYgYSBzb3VuZCBjYW5ub3QgYmUgcGxheWVkIG90aGVyd2lzZS4KKyAgIGZhbGxiYWNrIGlmIGEgc291bmQgY2Fubm90IGJlIHBsYXllZCBvdGhlcndpc2UuICBJZiB0aGUgc3lzdGVtIGluZGljYXRlcyBhbgorICAgZXJyb3IsIDpleGM6YFJ1bnRpbWVFcnJvcmAgaXMgcmFpc2VkLgogCiAKIC4uIGRhdGE6OiBTTkRfRklMRU5BTUUKQEAgLTkyLDcgKzk0LDcgQEAKIC4uIGRhdGE6OiBTTkRfTUVNT1JZCiAKICAgIFRoZSAqc291bmQqIHBhcmFtZXRlciB0byA6ZnVuYzpgUGxheVNvdW5kYCBpcyBhIG1lbW9yeSBpbWFnZSBvZiBhIFdBViBmaWxlLCBhcyBhCi0gICBzdHJpbmcuCisgICA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgLgogCiAgICAuLiBub3RlOjoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvd3NnaXJlZi5yc3QgYi9Eb2MvbGlicmFyeS93c2dpcmVmLnJzdAppbmRleCBhYWQyN2E4Li5hMWQ0NDY5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS93c2dpcmVmLnJzdAorKysgYi9Eb2MvbGlicmFyeS93c2dpcmVmLnJzdApAQCAtMTMzLDkgKzEzMyw5IEBACiAgICAgICAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGVudmlyb24uaXRlbXMoKV0KICAgICAgICAgICByZXR1cm4gcmV0CiAKLSAgICAgIGh0dHBkID0gbWFrZV9zZXJ2ZXIoJycsIDgwMDAsIHNpbXBsZV9hcHApCi0gICAgICBwcmludCgiU2VydmluZyBvbiBwb3J0IDgwMDAuLi4iKQotICAgICAgaHR0cGQuc2VydmVfZm9yZXZlcigpCisgICAgICB3aXRoIG1ha2Vfc2VydmVyKCcnLCA4MDAwLCBzaW1wbGVfYXBwKSBhcyBodHRwZDoKKyAgICAgICAgICBwcmludCgiU2VydmluZyBvbiBwb3J0IDgwMDAuLi4iKQorICAgICAgICAgIGh0dHBkLnNlcnZlX2ZvcmV2ZXIoKQogCiAKIEluIGFkZGl0aW9uIHRvIHRoZSBlbnZpcm9ubWVudCBmdW5jdGlvbnMgYWJvdmUsIHRoZSA6bW9kOmB3c2dpcmVmLnV0aWxgIG1vZHVsZQpAQCAtMjg1LDE0ICsyODUsMTQgQEAKIAogICAgICAgZnJvbSB3c2dpcmVmLnNpbXBsZV9zZXJ2ZXIgaW1wb3J0IG1ha2Vfc2VydmVyLCBkZW1vX2FwcAogCi0gICAgICBodHRwZCA9IG1ha2Vfc2VydmVyKCcnLCA4MDAwLCBkZW1vX2FwcCkKLSAgICAgIHByaW50KCJTZXJ2aW5nIEhUVFAgb24gcG9ydCA4MDAwLi4uIikKKyAgICAgIHdpdGggbWFrZV9zZXJ2ZXIoJycsIDgwMDAsIGRlbW9fYXBwKSBhcyBodHRwZDoKKyAgICAgICAgICBwcmludCgiU2VydmluZyBIVFRQIG9uIHBvcnQgODAwMC4uLiIpCiAKLSAgICAgICMgUmVzcG9uZCB0byByZXF1ZXN0cyB1bnRpbCBwcm9jZXNzIGlzIGtpbGxlZAotICAgICAgaHR0cGQuc2VydmVfZm9yZXZlcigpCisgICAgICAgICAgIyBSZXNwb25kIHRvIHJlcXVlc3RzIHVudGlsIHByb2Nlc3MgaXMga2lsbGVkCisgICAgICAgICAgaHR0cGQuc2VydmVfZm9yZXZlcigpCiAKLSAgICAgICMgQWx0ZXJuYXRpdmU6IHNlcnZlIG9uZSByZXF1ZXN0LCB0aGVuIGV4aXQKLSAgICAgIGh0dHBkLmhhbmRsZV9yZXF1ZXN0KCkKKyAgICAgICAgICAjIEFsdGVybmF0aXZlOiBzZXJ2ZSBvbmUgcmVxdWVzdCwgdGhlbiBleGl0CisgICAgICAgICAgaHR0cGQuaGFuZGxlX3JlcXVlc3QoKQogCiAKIC4uIGZ1bmN0aW9uOjogZGVtb19hcHAoZW52aXJvbiwgc3RhcnRfcmVzcG9uc2UpCkBAIC00MzIsOSArNDMyLDkgQEAKICAgICAgICMgVGhpcyBpcyB0aGUgYXBwbGljYXRpb24gd3JhcHBlZCBpbiBhIHZhbGlkYXRvcgogICAgICAgdmFsaWRhdG9yX2FwcCA9IHZhbGlkYXRvcihzaW1wbGVfYXBwKQogCi0gICAgICBodHRwZCA9IG1ha2Vfc2VydmVyKCcnLCA4MDAwLCB2YWxpZGF0b3JfYXBwKQotICAgICAgcHJpbnQoIkxpc3RlbmluZyBvbiBwb3J0IDgwMDAuLi4uIikKLSAgICAgIGh0dHBkLnNlcnZlX2ZvcmV2ZXIoKQorICAgICAgd2l0aCBtYWtlX3NlcnZlcignJywgODAwMCwgdmFsaWRhdG9yX2FwcCkgYXMgaHR0cGQ6CisgICAgICAgICAgcHJpbnQoIkxpc3RlbmluZyBvbiBwb3J0IDgwMDAuLi4uIikKKyAgICAgICAgICBodHRwZC5zZXJ2ZV9mb3JldmVyKCkKIAogCiA6bW9kOmB3c2dpcmVmLmhhbmRsZXJzYCAtLSBzZXJ2ZXIvZ2F0ZXdheSBiYXNlIGNsYXNzZXMKQEAgLTc3NCw4ICs3NzQsOCBAQAogICAgICAgICMgVGhlIHJldHVybmVkIG9iamVjdCBpcyBnb2luZyB0byBiZSBwcmludGVkCiAgICAgICAgcmV0dXJuIFtiIkhlbGxvIFdvcmxkIl0KIAotICAgaHR0cGQgPSBtYWtlX3NlcnZlcignJywgODAwMCwgaGVsbG9fd29ybGRfYXBwKQotICAgcHJpbnQoIlNlcnZpbmcgb24gcG9ydCA4MDAwLi4uIikKKyAgIHdpdGggbWFrZV9zZXJ2ZXIoJycsIDgwMDAsIGhlbGxvX3dvcmxkX2FwcCkgYXMgaHR0cGQ6CisgICAgICAgcHJpbnQoIlNlcnZpbmcgb24gcG9ydCA4MDAwLi4uIikKIAotICAgIyBTZXJ2ZSB1bnRpbCBwcm9jZXNzIGlzIGtpbGxlZAotICAgaHR0cGQuc2VydmVfZm9yZXZlcigpCisgICAgICAgIyBTZXJ2ZSB1bnRpbCBwcm9jZXNzIGlzIGtpbGxlZAorICAgICAgIGh0dHBkLnNlcnZlX2ZvcmV2ZXIoKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkveG1scnBjLmNsaWVudC5yc3QgYi9Eb2MvbGlicmFyeS94bWxycGMuY2xpZW50LnJzdAppbmRleCBkYWQ3YTAyLi4zOTA4MjhlIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS94bWxycGMuY2xpZW50LnJzdAorKysgYi9Eb2MvbGlicmFyeS94bWxycGMuY2xpZW50LnJzdApAQCAtODgsOSArODgsMTMgQEAKICAgICs9PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rCiAgICB8IGBgYm9vbGVhbmBgICAgICAgICAgIHwgOmNsYXNzOmBib29sYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgYGBpbnRgYCBvciBgYGk0YGAgICAgfCA6Y2xhc3M6YGludGAgaW4gcmFuZ2UgZnJvbSAtMjE0NzQ4MzY0OCB0byAyMTQ3NDgzNjQ3LiB8CisgICB8IGBgaW50YGAsIGBgaTFgYCwgICAgIHwgOmNsYXNzOmBpbnRgIGluIHJhbmdlIGZyb20gLTIxNDc0ODM2NDggdG8gMjE0NzQ4MzY0Ny4gfAorICAgfCBgYGkyYGAsICBgYGk0YGAsICAgICB8IFZhbHVlcyBnZXQgdGhlIGBgPGludD5gYCB0YWcuICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgIHwgYGBpOGBgIG9yICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICB8IGBgYmlnaW50ZWdlcmBgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgYGBkb3VibGVgYCAgICAgICAgICAgfCA6Y2xhc3M6YGZsb2F0YCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICB8IGBgZG91YmxlYGAgb3IgICAgICAgIHwgOmNsYXNzOmBmbG9hdGAuICBWYWx1ZXMgZ2V0IHRoZSBgYDxkb3VibGU+YGAgdGFnLiAgICAgfAorICAgfCBgYGZsb2F0YGAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICB8IGBgc3RyaW5nYGAgICAgICAgICAgIHwgOmNsYXNzOmBzdHJgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKQEAgLTExNCw2ICsxMTgsOCBAQAogICAgfCBgYG5pbGBgICAgICAgICAgICAgICB8IFRoZSBgYE5vbmVgYCBjb25zdGFudC4gIFBhc3NpbmcgaXMgYWxsb3dlZCBvbmx5IGlmICAgIHwKICAgIHwgICAgICAgICAgICAgICAgICAgICAgfCAqYWxsb3dfbm9uZSogaXMgdHJ1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCBgYGJpZ2RlY2ltYWxgYCAgICAgICB8IDpjbGFzczpgZGVjaW1hbC5EZWNpbWFsYC4gIFJldHVybmVkIHR5cGUgb25seS4gICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAKICAgIFRoaXMgaXMgdGhlIGZ1bGwgc2V0IG9mIGRhdGEgdHlwZXMgc3VwcG9ydGVkIGJ5IFhNTC1SUEMuICBNZXRob2QgY2FsbHMgbWF5IGFsc28KICAgIHJhaXNlIGEgc3BlY2lhbCA6ZXhjOmBGYXVsdGAgaW5zdGFuY2UsIHVzZWQgdG8gc2lnbmFsIFhNTC1SUEMgc2VydmVyIGVycm9ycywgb3IKQEAgLTEzNyw2ICsxNDMsMTMgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CiAgICAgICBBZGRlZCB0aGUgKmNvbnRleHQqIGFyZ3VtZW50LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWRkZWQgc3VwcG9ydCBvZiB0eXBlIHRhZ3Mgd2l0aCBwcmVmaXhlcyAoZS5nLiBgYGV4Om5pbGBgKS4KKyAgICAgIEFkZGVkIHN1cHBvcnQgb2YgdW5tYXJzYWxsaW5nIGFkZGl0aW9uYWwgdHlwZXMgdXNlZCBieSBBcGFjaGUgWE1MLVJQQworICAgICAgaW1wbGVtZW50YXRpb24gZm9yIG51bWVyaWNzOiBgYGkxYGAsIGBgaTJgYCwgYGBpOGBgLCBgYGJpZ2ludGVnZXJgYCwKKyAgICAgIGBgZmxvYXRgYCBhbmQgYGBiaWdkZWNpbWFsYGAuCisgICAgICBTZWUgaHR0cDovL3dzLmFwYWNoZS5vcmcveG1scnBjL3R5cGVzLmh0bWwgZm9yIGEgZGVzY3JpcHRpb24uCisKIAogLi4gc2VlYWxzbzo6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3htbHJwYy5zZXJ2ZXIucnN0IGIvRG9jL2xpYnJhcnkveG1scnBjLnNlcnZlci5yc3QKaW5kZXggMWM3N2U4NC4uMDUxMWRkZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkveG1scnBjLnNlcnZlci5yc3QKKysrIGIvRG9jL2xpYnJhcnkveG1scnBjLnNlcnZlci5yc3QKQEAgLTE0OCwyOSArMTQ4LDI5IEBACiAgICAgICAgcnBjX3BhdGhzID0gKCcvUlBDMicsKQogCiAgICAjIENyZWF0ZSBzZXJ2ZXIKLSAgIHNlcnZlciA9IFNpbXBsZVhNTFJQQ1NlcnZlcigoImxvY2FsaG9zdCIsIDgwMDApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RIYW5kbGVyPVJlcXVlc3RIYW5kbGVyKQotICAgc2VydmVyLnJlZ2lzdGVyX2ludHJvc3BlY3Rpb25fZnVuY3Rpb25zKCkKKyAgIHdpdGggU2ltcGxlWE1MUlBDU2VydmVyKCgibG9jYWxob3N0IiwgODAwMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SGFuZGxlcj1SZXF1ZXN0SGFuZGxlcikgYXMgc2VydmVyOgorICAgICAgIHNlcnZlci5yZWdpc3Rlcl9pbnRyb3NwZWN0aW9uX2Z1bmN0aW9ucygpCiAKLSAgICMgUmVnaXN0ZXIgcG93KCkgZnVuY3Rpb247IHRoaXMgd2lsbCB1c2UgdGhlIHZhbHVlIG9mCi0gICAjIHBvdy5fX25hbWVfXyBhcyB0aGUgbmFtZSwgd2hpY2ggaXMganVzdCAncG93Jy4KLSAgIHNlcnZlci5yZWdpc3Rlcl9mdW5jdGlvbihwb3cpCisgICAgICAgIyBSZWdpc3RlciBwb3coKSBmdW5jdGlvbjsgdGhpcyB3aWxsIHVzZSB0aGUgdmFsdWUgb2YKKyAgICAgICAjIHBvdy5fX25hbWVfXyBhcyB0aGUgbmFtZSwgd2hpY2ggaXMganVzdCAncG93Jy4KKyAgICAgICBzZXJ2ZXIucmVnaXN0ZXJfZnVuY3Rpb24ocG93KQogCi0gICAjIFJlZ2lzdGVyIGEgZnVuY3Rpb24gdW5kZXIgYSBkaWZmZXJlbnQgbmFtZQotICAgZGVmIGFkZGVyX2Z1bmN0aW9uKHgseSk6Ci0gICAgICAgcmV0dXJuIHggKyB5Ci0gICBzZXJ2ZXIucmVnaXN0ZXJfZnVuY3Rpb24oYWRkZXJfZnVuY3Rpb24sICdhZGQnKQorICAgICAgICMgUmVnaXN0ZXIgYSBmdW5jdGlvbiB1bmRlciBhIGRpZmZlcmVudCBuYW1lCisgICAgICAgZGVmIGFkZGVyX2Z1bmN0aW9uKHgseSk6CisgICAgICAgICAgIHJldHVybiB4ICsgeQorICAgICAgIHNlcnZlci5yZWdpc3Rlcl9mdW5jdGlvbihhZGRlcl9mdW5jdGlvbiwgJ2FkZCcpCiAKLSAgICMgUmVnaXN0ZXIgYW4gaW5zdGFuY2U7IGFsbCB0aGUgbWV0aG9kcyBvZiB0aGUgaW5zdGFuY2UgYXJlCi0gICAjIHB1Ymxpc2hlZCBhcyBYTUwtUlBDIG1ldGhvZHMgKGluIHRoaXMgY2FzZSwganVzdCAnbXVsJykuCi0gICBjbGFzcyBNeUZ1bmNzOgotICAgICAgIGRlZiBtdWwoc2VsZiwgeCwgeSk6Ci0gICAgICAgICAgIHJldHVybiB4ICogeQorICAgICAgICMgUmVnaXN0ZXIgYW4gaW5zdGFuY2U7IGFsbCB0aGUgbWV0aG9kcyBvZiB0aGUgaW5zdGFuY2UgYXJlCisgICAgICAgIyBwdWJsaXNoZWQgYXMgWE1MLVJQQyBtZXRob2RzIChpbiB0aGlzIGNhc2UsIGp1c3QgJ211bCcpLgorICAgICAgIGNsYXNzIE15RnVuY3M6CisgICAgICAgICAgIGRlZiBtdWwoc2VsZiwgeCwgeSk6CisgICAgICAgICAgICAgICByZXR1cm4geCAqIHkKIAotICAgc2VydmVyLnJlZ2lzdGVyX2luc3RhbmNlKE15RnVuY3MoKSkKKyAgICAgICBzZXJ2ZXIucmVnaXN0ZXJfaW5zdGFuY2UoTXlGdW5jcygpKQogCi0gICAjIFJ1biB0aGUgc2VydmVyJ3MgbWFpbiBsb29wCi0gICBzZXJ2ZXIuc2VydmVfZm9yZXZlcigpCisgICAgICAgIyBSdW4gdGhlIHNlcnZlcidzIG1haW4gbG9vcAorICAgICAgIHNlcnZlci5zZXJ2ZV9mb3JldmVyKCkKIAogVGhlIGZvbGxvd2luZyBjbGllbnQgY29kZSB3aWxsIGNhbGwgdGhlIG1ldGhvZHMgbWFkZSBhdmFpbGFibGUgYnkgdGhlIHByZWNlZGluZwogc2VydmVyOjoKQEAgLTIwNywxOCArMjA3LDE3IEBACiAgICAgICAgICAgICBkZWYgZ2V0Q3VycmVudFRpbWUoKToKICAgICAgICAgICAgICAgICByZXR1cm4gZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkKIAotICAgIHNlcnZlciA9IFNpbXBsZVhNTFJQQ1NlcnZlcigoImxvY2FsaG9zdCIsIDgwMDApKQotICAgIHNlcnZlci5yZWdpc3Rlcl9mdW5jdGlvbihwb3cpCi0gICAgc2VydmVyLnJlZ2lzdGVyX2Z1bmN0aW9uKGxhbWJkYSB4LHk6IHgreSwgJ2FkZCcpCi0gICAgc2VydmVyLnJlZ2lzdGVyX2luc3RhbmNlKEV4YW1wbGVTZXJ2aWNlKCksIGFsbG93X2RvdHRlZF9uYW1lcz1UcnVlKQotICAgIHNlcnZlci5yZWdpc3Rlcl9tdWx0aWNhbGxfZnVuY3Rpb25zKCkKLSAgICBwcmludCgnU2VydmluZyBYTUwtUlBDIG9uIGxvY2FsaG9zdCBwb3J0IDgwMDAnKQotICAgIHRyeToKLSAgICAgICAgc2VydmVyLnNlcnZlX2ZvcmV2ZXIoKQotICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKLSAgICAgICAgcHJpbnQoIlxuS2V5Ym9hcmQgaW50ZXJydXB0IHJlY2VpdmVkLCBleGl0aW5nLiIpCi0gICAgICAgIHNlcnZlci5zZXJ2ZXJfY2xvc2UoKQotICAgICAgICBzeXMuZXhpdCgwKQorICAgIHdpdGggU2ltcGxlWE1MUlBDU2VydmVyKCgibG9jYWxob3N0IiwgODAwMCkpIGFzIHNlcnZlcjoKKyAgICAgICAgc2VydmVyLnJlZ2lzdGVyX2Z1bmN0aW9uKHBvdykKKyAgICAgICAgc2VydmVyLnJlZ2lzdGVyX2Z1bmN0aW9uKGxhbWJkYSB4LHk6IHgreSwgJ2FkZCcpCisgICAgICAgIHNlcnZlci5yZWdpc3Rlcl9pbnN0YW5jZShFeGFtcGxlU2VydmljZSgpLCBhbGxvd19kb3R0ZWRfbmFtZXM9VHJ1ZSkKKyAgICAgICAgc2VydmVyLnJlZ2lzdGVyX211bHRpY2FsbF9mdW5jdGlvbnMoKQorICAgICAgICBwcmludCgnU2VydmluZyBYTUwtUlBDIG9uIGxvY2FsaG9zdCBwb3J0IDgwMDAnKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZXJ2ZXIuc2VydmVfZm9yZXZlcigpCisgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKKyAgICAgICAgICAgIHByaW50KCJcbktleWJvYXJkIGludGVycnVwdCByZWNlaXZlZCwgZXhpdGluZy4iKQorICAgICAgICAgICAgc3lzLmV4aXQoMCkKIAogVGhpcyBFeGFtcGxlU2VydmljZSBkZW1vIGNhbiBiZSBpbnZva2VkIGZyb20gdGhlIGNvbW1hbmQgbGluZTo6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3ppcGZpbGUucnN0IGIvRG9jL2xpYnJhcnkvemlwZmlsZS5yc3QKaW5kZXggYmY0ODJkMi4uOTA1NjQ4OSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvemlwZmlsZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvemlwZmlsZS5yc3QKQEAgLTE0NywxMCArMTQ3LDEwIEBACiAgICAqY29tcHJlc3Npb24qIGlzIHRoZSBaSVAgY29tcHJlc3Npb24gbWV0aG9kIHRvIHVzZSB3aGVuIHdyaXRpbmcgdGhlIGFyY2hpdmUsCiAgICBhbmQgc2hvdWxkIGJlIDpjb25zdDpgWklQX1NUT1JFRGAsIDpjb25zdDpgWklQX0RFRkxBVEVEYCwKICAgIDpjb25zdDpgWklQX0JaSVAyYCBvciA6Y29uc3Q6YFpJUF9MWk1BYDsgdW5yZWNvZ25pemVkCi0gICB2YWx1ZXMgd2lsbCBjYXVzZSA6ZXhjOmBSdW50aW1lRXJyb3JgIHRvIGJlIHJhaXNlZC4gIElmIDpjb25zdDpgWklQX0RFRkxBVEVEYCwKKyAgIHZhbHVlcyB3aWxsIGNhdXNlIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgIHRvIGJlIHJhaXNlZC4gIElmIDpjb25zdDpgWklQX0RFRkxBVEVEYCwKICAgIDpjb25zdDpgWklQX0JaSVAyYCBvciA6Y29uc3Q6YFpJUF9MWk1BYCBpcyBzcGVjaWZpZWQgYnV0IHRoZSBjb3JyZXNwb25kaW5nIG1vZHVsZQogICAgKDptb2Q6YHpsaWJgLCA6bW9kOmBiejJgIG9yIDptb2Q6YGx6bWFgKSBpcyBub3QgYXZhaWxhYmxlLCA6ZXhjOmBSdW50aW1lRXJyb3JgCi0gICBpcyBhbHNvIHJhaXNlZC4gVGhlIGRlZmF1bHQgaXMgOmNvbnN0OmBaSVBfU1RPUkVEYC4gIElmICphbGxvd1ppcDY0KiBpcworICAgaXMgcmFpc2VkLiBUaGUgZGVmYXVsdCBpcyA6Y29uc3Q6YFpJUF9TVE9SRURgLiAgSWYgKmFsbG93WmlwNjQqIGlzCiAgICBgYFRydWVgYCAodGhlIGRlZmF1bHQpIHppcGZpbGUgd2lsbCBjcmVhdGUgWklQIGZpbGVzIHRoYXQgdXNlIHRoZSBaSVA2NAogICAgZXh0ZW5zaW9ucyB3aGVuIHRoZSB6aXBmaWxlIGlzIGxhcmdlciB0aGFuIDIgR2lCLiBJZiBpdCBpcyAgZmFsc2UgOm1vZDpgemlwZmlsZWAKICAgIHdpbGwgcmFpc2UgYW4gZXhjZXB0aW9uIHdoZW4gdGhlIFpJUCBmaWxlIHdvdWxkIHJlcXVpcmUgWklQNjQgZXh0ZW5zaW9ucy4KQEAgLTE3OSw2ICsxNzksMTAgQEAKICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHdyaXRpbmcgdG8gdW5zZWVrYWJsZSBzdHJlYW1zLgogICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgdGhlIGBgJ3gnYGAgbW9kZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFByZXZpb3VzbHksIGEgcGxhaW4gOmV4YzpgUnVudGltZUVycm9yYCB3YXMgcmFpc2VkIGZvciB1bnJlY29nbml6ZWQKKyAgICAgIGNvbXByZXNzaW9uIHZhbHVlcy4KKwogCiAuLiBtZXRob2Q6OiBaaXBGaWxlLmNsb3NlKCkKIApAQCAtMjA1LDE4ICsyMDksMTIgQEAKICAgIFJldHVybiBhIGxpc3Qgb2YgYXJjaGl2ZSBtZW1iZXJzIGJ5IG5hbWUuCiAKIAotLi4gaW5kZXg6OgotICAgc2luZ2xlOiB1bml2ZXJzYWwgbmV3bGluZXM7IHppcGZpbGUuWmlwRmlsZS5vcGVuIG1ldGhvZAorLi4gbWV0aG9kOjogWmlwRmlsZS5vcGVuKG5hbWUsIG1vZGU9J3InLCBwd2Q9Tm9uZSwgKiwgZm9yY2VfemlwNjQ9RmFsc2UpCiAKLS4uIG1ldGhvZDo6IFppcEZpbGUub3BlbihuYW1lLCBtb2RlPSdyJywgcHdkPU5vbmUpCi0KLSAgIEV4dHJhY3QgYSBtZW1iZXIgZnJvbSB0aGUgYXJjaGl2ZSBhcyBhIGZpbGUtbGlrZSBvYmplY3QgKFppcEV4dEZpbGUpLiAqbmFtZSoKLSAgIGlzIHRoZSBuYW1lIG9mIHRoZSBmaWxlIGluIHRoZSBhcmNoaXZlLCBvciBhIDpjbGFzczpgWmlwSW5mb2Agb2JqZWN0LiBUaGUKLSAgICptb2RlKiBwYXJhbWV0ZXIsIGlmIGluY2x1ZGVkLCBtdXN0IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOiBgYCdyJ2BgICh0aGUKLSAgIGRlZmF1bHQpLCBgYCdVJ2BgLCBvciBgYCdyVSdgYC4gQ2hvb3NpbmcgYGAnVSdgYCBvciAgYGAnclUnYGAgd2lsbCBlbmFibGUKLSAgIDp0ZXJtOmB1bml2ZXJzYWwgbmV3bGluZXNgIHN1cHBvcnQgaW4gdGhlIHJlYWQtb25seSBvYmplY3QuICAqcHdkKiBpcyB0aGUKLSAgIHBhc3N3b3JkIHVzZWQgZm9yIGVuY3J5cHRlZCBmaWxlcy4gIENhbGxpbmcgIDptZXRoOmAub3BlbmAgb24gYSBjbG9zZWQKLSAgIFppcEZpbGUgd2lsbCByYWlzZSBhICA6ZXhjOmBSdW50aW1lRXJyb3JgLgorICAgQWNjZXNzIGEgbWVtYmVyIG9mIHRoZSBhcmNoaXZlIGFzIGEgYmluYXJ5IGZpbGUtbGlrZSBvYmplY3QuICAqbmFtZSoKKyAgIGNhbiBiZSBlaXRoZXIgdGhlIG5hbWUgb2YgYSBmaWxlIHdpdGhpbiB0aGUgYXJjaGl2ZSBvciBhIDpjbGFzczpgWmlwSW5mb2AKKyAgIG9iamVjdC4gIFRoZSAqbW9kZSogcGFyYW1ldGVyLCBpZiBpbmNsdWRlZCwgbXVzdCBiZSBgYCdyJ2BgICh0aGUgZGVmYXVsdCkKKyAgIG9yIGBgJ3cnYGAuICAqcHdkKiBpcyB0aGUgcGFzc3dvcmQgdXNlZCB0byBkZWNyeXB0IGVuY3J5cHRlZCBaSVAgZmlsZXMuCiAKICAgIDptZXRoOmB+WmlwRmlsZS5vcGVuYCBpcyBhbHNvIGEgY29udGV4dCBtYW5hZ2VyIGFuZCB0aGVyZWZvcmUgc3VwcG9ydHMgdGhlCiAgICA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50OjoKQEAgLTIyNSwxNyArMjIzLDIzIEBACiAgICAgICAgICAgd2l0aCBteXppcC5vcGVuKCdlZ2dzLnR4dCcpIGFzIG15ZmlsZToKICAgICAgICAgICAgICAgcHJpbnQobXlmaWxlLnJlYWQoKSkKIAotICAgLi4gbm90ZTo6CisgICBXaXRoICptb2RlKiBgYCdyJ2BgIHRoZSBmaWxlLWxpa2Ugb2JqZWN0CisgICAoYGBaaXBFeHRGaWxlYGApIGlzIHJlYWQtb25seSBhbmQgcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBtZXRob2RzOgorICAgOm1ldGg6YH5pby5CdWZmZXJlZElPQmFzZS5yZWFkYCwgOm1ldGg6YH5pby5JT0Jhc2UucmVhZGxpbmVgLAorICAgOm1ldGg6YH5pby5JT0Jhc2UucmVhZGxpbmVzYCwgOm1ldGg6YF9faXRlcl9fYCwKKyAgIDptZXRoOmB+aXRlcmF0b3IuX19uZXh0X19gLiAgVGhlc2Ugb2JqZWN0cyBjYW4gb3BlcmF0ZSBpbmRlcGVuZGVudGx5IG9mCisgICB0aGUgWmlwRmlsZS4KIAotICAgICAgVGhlIGZpbGUtbGlrZSBvYmplY3QgaXMgcmVhZC1vbmx5IGFuZCBwcm92aWRlcyB0aGUgZm9sbG93aW5nIG1ldGhvZHM6Ci0gICAgICA6bWV0aDpgfmlvLkJ1ZmZlcmVkSU9CYXNlLnJlYWRgLCA6bWV0aDpgfmlvLklPQmFzZS5yZWFkbGluZWAsCi0gICAgICA6bWV0aDpgfmlvLklPQmFzZS5yZWFkbGluZXNgLCA6bWV0aDpgX19pdGVyX19gLAotICAgICAgOm1ldGg6YH5pdGVyYXRvci5fX25leHRfX2AuCisgICBXaXRoIGBgbW9kZT0ndydgYCwgYSB3cml0YWJsZSBmaWxlIGhhbmRsZSBpcyByZXR1cm5lZCwgd2hpY2ggc3VwcG9ydHMgdGhlCisgICA6bWV0aDpgfmlvLkJ1ZmZlcmVkSU9CYXNlLndyaXRlYCBtZXRob2QuICBXaGlsZSBhIHdyaXRhYmxlIGZpbGUgaGFuZGxlIGlzIG9wZW4sCisgICBhdHRlbXB0aW5nIHRvIHJlYWQgb3Igd3JpdGUgb3RoZXIgZmlsZXMgaW4gdGhlIFpJUCBmaWxlIHdpbGwgcmFpc2UgYQorICAgOmV4YzpgVmFsdWVFcnJvcmAuCiAKLSAgIC4uIG5vdGU6OgotCi0gICAgICBPYmplY3RzIHJldHVybmVkIGJ5IDptZXRoOmAub3BlbmAgY2FuIG9wZXJhdGUgaW5kZXBlbmRlbnRseSBvZiB0aGUKLSAgICAgIFppcEZpbGUuCisgICBXaGVuIHdyaXRpbmcgYSBmaWxlLCBpZiB0aGUgZmlsZSBzaXplIGlzIG5vdCBrbm93biBpbiBhZHZhbmNlIGJ1dCBtYXkgZXhjZWVkCisgICAyIEdpQiwgcGFzcyBgYGZvcmNlX3ppcDY0PVRydWVgYCB0byBlbnN1cmUgdGhhdCB0aGUgaGVhZGVyIGZvcm1hdCBpcworICAgY2FwYWJsZSBvZiBzdXBwb3J0aW5nIGxhcmdlIGZpbGVzLiAgSWYgdGhlIGZpbGUgc2l6ZSBpcyBrbm93biBpbiBhZHZhbmNlLAorICAgY29uc3RydWN0IGEgOmNsYXNzOmBaaXBJbmZvYCBvYmplY3Qgd2l0aCA6YXR0cjpgflppcEluZm8uZmlsZV9zaXplYCBzZXQsIGFuZAorICAgdXNlIHRoYXQgYXMgdGhlICpuYW1lKiBwYXJhbWV0ZXIuCiAKICAgIC4uIG5vdGU6OgogCkBAIC0yNDMsMTAgKzI0NywxOSBAQAogICAgICAgb3IgYSA6Y2xhc3M6YFppcEluZm9gIG9iamVjdC4gIFlvdSB3aWxsIGFwcHJlY2lhdGUgdGhpcyB3aGVuIHRyeWluZyB0byByZWFkIGEKICAgICAgIFpJUCBmaWxlIHRoYXQgY29udGFpbnMgbWVtYmVycyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4KIAotICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy40IDMuNgotICAgICAgVGhlIGBgJ1UnYGAgb3IgIGBgJ3JVJ2BgIG1vZGUuICBVc2UgOmNsYXNzOmBpby5UZXh0SU9XcmFwcGVyYCBmb3IgcmVhZGluZworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFJlbW92ZWQgc3VwcG9ydCBvZiBgYG1vZGU9J1UnYGAuICBVc2UgOmNsYXNzOmBpby5UZXh0SU9XcmFwcGVyYCBmb3IgcmVhZGluZwogICAgICAgY29tcHJlc3NlZCB0ZXh0IGZpbGVzIGluIDp0ZXJtOmB1bml2ZXJzYWwgbmV3bGluZXNgIG1vZGUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICA6bWV0aDpgb3BlbmAgY2FuIG5vdyBiZSB1c2VkIHRvIHdyaXRlIGZpbGVzIGludG8gdGhlIGFyY2hpdmUgd2l0aCB0aGUKKyAgICAgIGBgbW9kZT0ndydgYCBvcHRpb24uCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBDYWxsaW5nIDptZXRoOmAub3BlbmAgb24gYSBjbG9zZWQgWmlwRmlsZSB3aWxsIHJhaXNlIGEgOmV4YzpgVmFsdWVFcnJvcmAuCisgICAgICBQcmV2aW91c2x5LCBhIDpleGM6YFJ1bnRpbWVFcnJvcmAgd2FzIHJhaXNlZC4KKworCiAuLiBtZXRob2Q6OiBaaXBGaWxlLmV4dHJhY3QobWVtYmVyLCBwYXRoPU5vbmUsIHB3ZD1Ob25lKQogCiAgICBFeHRyYWN0IGEgbWVtYmVyIGZyb20gdGhlIGFyY2hpdmUgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3Rvcnk7ICptZW1iZXIqCkBAIC0yNjcsNiArMjgwLDEwIEBACiAgICAgICBjaGFyYWN0ZXJzIChgYDpgYCwgYGA8YGAsIGBgPmBgLCBgYHxgYCwgYGAiYGAsIGBgP2BgLCBhbmQgYGAqYGApCiAgICAgICByZXBsYWNlZCBieSB1bmRlcnNjb3JlIChgYF9gYCkuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBDYWxsaW5nIDptZXRoOmBleHRyYWN0YCBvbiBhIGNsb3NlZCBaaXBGaWxlIHdpbGwgcmFpc2UgYQorICAgICAgOmV4YzpgVmFsdWVFcnJvcmAuICBQcmV2aW91c2x5LCBhIDpleGM6YFJ1bnRpbWVFcnJvcmAgd2FzIHJhaXNlZC4KKwogCiAuLiBtZXRob2Q6OiBaaXBGaWxlLmV4dHJhY3RhbGwocGF0aD1Ob25lLCBtZW1iZXJzPU5vbmUsIHB3ZD1Ob25lKQogCkBAIC0yODMsNiArMzAwLDEwIEBACiAgICAgICBkb3RzIGBgIi4uImBgLiAgVGhpcyBtb2R1bGUgYXR0ZW1wdHMgdG8gcHJldmVudCB0aGF0LgogICAgICAgU2VlIDptZXRoOmBleHRyYWN0YCBub3RlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQ2FsbGluZyA6bWV0aDpgZXh0cmFjdGFsbGAgb24gYSBjbG9zZWQgWmlwRmlsZSB3aWxsIHJhaXNlIGEKKyAgICAgIDpleGM6YFZhbHVlRXJyb3JgLiAgUHJldmlvdXNseSwgYSA6ZXhjOmBSdW50aW1lRXJyb3JgIHdhcyByYWlzZWQuCisKIAogLi4gbWV0aG9kOjogWmlwRmlsZS5wcmludGRpcigpCiAKQEAgLTMwMCwxOCArMzIxLDI0IEBACiAgICBmaWxlIGluIHRoZSBhcmNoaXZlLCBvciBhIDpjbGFzczpgWmlwSW5mb2Agb2JqZWN0LiAgVGhlIGFyY2hpdmUgbXVzdCBiZSBvcGVuIGZvcgogICAgcmVhZCBvciBhcHBlbmQuICpwd2QqIGlzIHRoZSBwYXNzd29yZCB1c2VkIGZvciBlbmNyeXB0ZWQgIGZpbGVzIGFuZCwgaWYgc3BlY2lmaWVkLAogICAgaXQgd2lsbCBvdmVycmlkZSB0aGUgZGVmYXVsdCBwYXNzd29yZCBzZXQgd2l0aCA6bWV0aDpgc2V0cGFzc3dvcmRgLiAgQ2FsbGluZwotICAgOm1ldGg6YHJlYWRgIG9uIGEgY2xvc2VkIFppcEZpbGUgIHdpbGwgcmFpc2UgYSA6ZXhjOmBSdW50aW1lRXJyb3JgLiBDYWxsaW5nCiAgICA6bWV0aDpgcmVhZGAgb24gYSBaaXBGaWxlIHRoYXQgdXNlcyBhIGNvbXByZXNzaW9uIG1ldGhvZCBvdGhlciB0aGFuCiAgICA6Y29uc3Q6YFpJUF9TVE9SRURgLCA6Y29uc3Q6YFpJUF9ERUZMQVRFRGAsIDpjb25zdDpgWklQX0JaSVAyYCBvcgogICAgOmNvbnN0OmBaSVBfTFpNQWAgd2lsbCByYWlzZSBhIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgLiBBbiBlcnJvciB3aWxsIGFsc28KICAgIGJlIHJhaXNlZCBpZiB0aGUgY29ycmVzcG9uZGluZyBjb21wcmVzc2lvbiBtb2R1bGUgaXMgbm90IGF2YWlsYWJsZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIENhbGxpbmcgOm1ldGg6YHJlYWRgIG9uIGEgY2xvc2VkIFppcEZpbGUgd2lsbCByYWlzZSBhIDpleGM6YFZhbHVlRXJyb3JgLgorICAgICAgUHJldmlvdXNseSwgYSA6ZXhjOmBSdW50aW1lRXJyb3JgIHdhcyByYWlzZWQuCisKIAogLi4gbWV0aG9kOjogWmlwRmlsZS50ZXN0emlwKCkKIAogICAgUmVhZCBhbGwgdGhlIGZpbGVzIGluIHRoZSBhcmNoaXZlIGFuZCBjaGVjayB0aGVpciBDUkMncyBhbmQgZmlsZSBoZWFkZXJzLgotICAgUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBmaXJzdCBiYWQgZmlsZSwgb3IgZWxzZSByZXR1cm4gYGBOb25lYGAuIENhbGxpbmcKLSAgIDptZXRoOmB0ZXN0emlwYCBvbiBhIGNsb3NlZCBaaXBGaWxlIHdpbGwgcmFpc2UgYSA6ZXhjOmBSdW50aW1lRXJyb3JgLgorICAgUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBmaXJzdCBiYWQgZmlsZSwgb3IgZWxzZSByZXR1cm4gYGBOb25lYGAuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBDYWxsaW5nIDptZXRoOmB0ZXN0ZmlsZWAgb24gYSBjbG9zZWQgWmlwRmlsZSB3aWxsIHJhaXNlIGEKKyAgICAgIDpleGM6YFZhbHVlRXJyb3JgLiAgUHJldmlvdXNseSwgYSA6ZXhjOmBSdW50aW1lRXJyb3JgIHdhcyByYWlzZWQuCiAKIAogLi4gbWV0aG9kOjogWmlwRmlsZS53cml0ZShmaWxlbmFtZSwgYXJjbmFtZT1Ob25lLCBjb21wcmVzc190eXBlPU5vbmUpCkBAIC0zMjEsMTAgKzM0OCw3IEBACiAgICBsZXR0ZXIgYW5kIHdpdGggbGVhZGluZyBwYXRoIHNlcGFyYXRvcnMgcmVtb3ZlZCkuICBJZiBnaXZlbiwgKmNvbXByZXNzX3R5cGUqCiAgICBvdmVycmlkZXMgdGhlIHZhbHVlIGdpdmVuIGZvciB0aGUgKmNvbXByZXNzaW9uKiBwYXJhbWV0ZXIgdG8gdGhlIGNvbnN0cnVjdG9yIGZvcgogICAgdGhlIG5ldyBlbnRyeS4KLSAgIFRoZSBhcmNoaXZlIG11c3QgYmUgb3BlbiB3aXRoIG1vZGUgYGAndydgYCwgYGAneCdgYCBvciBgYCdhJ2BgIC0tIGNhbGxpbmcKLSAgIDptZXRoOmB3cml0ZWAgb24gYSBaaXBGaWxlIGNyZWF0ZWQgd2l0aCBtb2RlIGBgJ3InYGAgd2lsbCByYWlzZSBhCi0gICA6ZXhjOmBSdW50aW1lRXJyb3JgLiAgQ2FsbGluZyAgOm1ldGg6YHdyaXRlYCBvbiBhIGNsb3NlZCBaaXBGaWxlIHdpbGwgcmFpc2UgYQotICAgOmV4YzpgUnVudGltZUVycm9yYC4KKyAgIFRoZSBhcmNoaXZlIG11c3QgYmUgb3BlbiB3aXRoIG1vZGUgYGAndydgYCwgYGAneCdgYCBvciBgYCdhJ2BgLgogCiAgICAuLiBub3RlOjoKIApAQCAtMzQzLDE2ICszNjcsMTkgQEAKICAgICAgIElmIGBgYXJjbmFtZWBgIChvciBgYGZpbGVuYW1lYGAsIGlmIGBgYXJjbmFtZWBgIGlzICBub3QgZ2l2ZW4pIGNvbnRhaW5zIGEgbnVsbAogICAgICAgYnl0ZSwgdGhlIG5hbWUgb2YgdGhlIGZpbGUgaW4gdGhlIGFyY2hpdmUgd2lsbCBiZSB0cnVuY2F0ZWQgYXQgdGhlIG51bGwgYnl0ZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIENhbGxpbmcgOm1ldGg6YHdyaXRlYCBvbiBhIFppcEZpbGUgY3JlYXRlZCB3aXRoIG1vZGUgYGAncidgYCBvcgorICAgICAgYSBjbG9zZWQgWmlwRmlsZSB3aWxsIHJhaXNlIGEgOmV4YzpgVmFsdWVFcnJvcmAuICBQcmV2aW91c2x5LAorICAgICAgYSA6ZXhjOmBSdW50aW1lRXJyb3JgIHdhcyByYWlzZWQuCisKKwogLi4gbWV0aG9kOjogWmlwRmlsZS53cml0ZXN0cih6aW5mb19vcl9hcmNuYW1lLCBkYXRhWywgY29tcHJlc3NfdHlwZV0pCiAKICAgIFdyaXRlIHRoZSBzdHJpbmcgKmRhdGEqIHRvIHRoZSBhcmNoaXZlOyAqemluZm9fb3JfYXJjbmFtZSogaXMgZWl0aGVyIHRoZSBmaWxlCiAgICBuYW1lIGl0IHdpbGwgYmUgZ2l2ZW4gaW4gdGhlIGFyY2hpdmUsIG9yIGEgOmNsYXNzOmBaaXBJbmZvYCBpbnN0YW5jZS4gIElmIGl0J3MKICAgIGFuIGluc3RhbmNlLCBhdCBsZWFzdCB0aGUgZmlsZW5hbWUsIGRhdGUsIGFuZCB0aW1lIG11c3QgYmUgZ2l2ZW4uICBJZiBpdCdzIGEKICAgIG5hbWUsIHRoZSBkYXRlIGFuZCB0aW1lIGlzIHNldCB0byB0aGUgY3VycmVudCBkYXRlIGFuZCB0aW1lLgotICAgVGhlIGFyY2hpdmUgbXVzdCBiZSBvcGVuZWQgd2l0aCBtb2RlIGBgJ3cnYGAsIGBgJ3gnYGAgb3IgYGAnYSdgYCAtLSBjYWxsaW5nCi0gICA6bWV0aDpgd3JpdGVzdHJgIG9uIGEgWmlwRmlsZSBjcmVhdGVkIHdpdGggbW9kZSBgYCdyJ2BgIHdpbGwgcmFpc2UgYQotICAgOmV4YzpgUnVudGltZUVycm9yYC4gIENhbGxpbmcgOm1ldGg6YHdyaXRlc3RyYCBvbiBhIGNsb3NlZCBaaXBGaWxlIHdpbGwKLSAgIHJhaXNlIGEgOmV4YzpgUnVudGltZUVycm9yYC4KKyAgIFRoZSBhcmNoaXZlIG11c3QgYmUgb3BlbmVkIHdpdGggbW9kZSBgYCd3J2BgLCBgYCd4J2BgIG9yIGBgJ2EnYGAuCiAKICAgIElmIGdpdmVuLCAqY29tcHJlc3NfdHlwZSogb3ZlcnJpZGVzIHRoZSB2YWx1ZSBnaXZlbiBmb3IgdGhlICpjb21wcmVzc2lvbioKICAgIHBhcmFtZXRlciB0byB0aGUgY29uc3RydWN0b3IgZm9yIHRoZSBuZXcgZW50cnksIG9yIGluIHRoZSAqemluZm9fb3JfYXJjbmFtZSoKQEAgLTM2OCw2ICszOTUsMTIgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBUaGUgKmNvbXByZXNzX3R5cGUqIGFyZ3VtZW50LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQ2FsbGluZyA6bWV0aDpgd3JpdGVzdHJgIG9uIGEgWmlwRmlsZSBjcmVhdGVkIHdpdGggbW9kZSBgYCdyJ2BgIG9yCisgICAgICBhIGNsb3NlZCBaaXBGaWxlIHdpbGwgcmFpc2UgYSA6ZXhjOmBWYWx1ZUVycm9yYC4gIFByZXZpb3VzbHksCisgICAgICBhIDpleGM6YFJ1bnRpbWVFcnJvcmAgd2FzIHJhaXNlZC4KKworCiBUaGUgZm9sbG93aW5nIGRhdGEgYXR0cmlidXRlcyBhcmUgYWxzbyBhdmFpbGFibGU6CiAKIApAQCAtNDY1LDcgKzQ5OCwzMSBAQAogOm1ldGg6YC5pbmZvbGlzdGAgbWV0aG9kcyBvZiA6Y2xhc3M6YFppcEZpbGVgIG9iamVjdHMuICBFYWNoIG9iamVjdCBzdG9yZXMKIGluZm9ybWF0aW9uIGFib3V0IGEgc2luZ2xlIG1lbWJlciBvZiB0aGUgWklQIGFyY2hpdmUuCiAKLUluc3RhbmNlcyBoYXZlIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlczoKK1RoZXJlIGlzIG9uZSBjbGFzc21ldGhvZCB0byBtYWtlIGEgOmNsYXNzOmBaaXBJbmZvYCBpbnN0YW5jZSBmb3IgYSBmaWxlc3lzdGVtCitmaWxlOgorCisuLiBjbGFzc21ldGhvZDo6IFppcEluZm8uZnJvbV9maWxlKGZpbGVuYW1lLCBhcmNuYW1lPU5vbmUpCisKKyAgIENvbnN0cnVjdCBhIDpjbGFzczpgWmlwSW5mb2AgaW5zdGFuY2UgZm9yIGEgZmlsZSBvbiB0aGUgZmlsZXN5c3RlbSwgaW4KKyAgIHByZXBhcmF0aW9uIGZvciBhZGRpbmcgaXQgdG8gYSB6aXAgZmlsZS4KKworICAgKmZpbGVuYW1lKiBzaG91bGQgYmUgdGhlIHBhdGggdG8gYSBmaWxlIG9yIGRpcmVjdG9yeSBvbiB0aGUgZmlsZXN5c3RlbS4KKworICAgSWYgKmFyY25hbWUqIGlzIHNwZWNpZmllZCwgaXQgaXMgdXNlZCBhcyB0aGUgbmFtZSB3aXRoaW4gdGhlIGFyY2hpdmUuCisgICBJZiAqYXJjbmFtZSogaXMgbm90IHNwZWNpZmllZCwgdGhlIG5hbWUgd2lsbCBiZSB0aGUgc2FtZSBhcyAqZmlsZW5hbWUqLCBidXQKKyAgIHdpdGggYW55IGRyaXZlIGxldHRlciBhbmQgbGVhZGluZyBwYXRoIHNlcGFyYXRvcnMgcmVtb3ZlZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKK0luc3RhbmNlcyBoYXZlIHRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhbmQgYXR0cmlidXRlczoKKworLi4gbWV0aG9kOjogWmlwSW5mby5pc19kaXIoKQorCisgICBSZXR1cm4gYGBUcnVlYGAgaWYgdGhpcyBhcmNoaXZlIG1lbWJlciBpcyBhIGRpcmVjdG9yeS4KKworICAgVGhpcyB1c2VzIHRoZSBlbnRyeSdzIG5hbWU6IGRpcmVjdG9yaWVzIHNob3VsZCBhbHdheXMgZW5kIHdpdGggYGAvYGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgogCiAKIC4uIGF0dHJpYnV0ZTo6IFppcEluZm8uZmlsZW5hbWUKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3psaWIucnN0IGIvRG9jL2xpYnJhcnkvemxpYi5yc3QKaW5kZXggMWRlN2JhZS4uM2Q3NDJhYiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvemxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvemxpYi5yc3QKQEAgLTQ3LDE0ICs0NywxOSBAQAogICAgICAgcGxhdGZvcm1zLCB1c2UgYGBhZGxlcjMyKGRhdGEpICYgMHhmZmZmZmZmZmBgLgogCiAKLS4uIGZ1bmN0aW9uOjogY29tcHJlc3MoZGF0YVssIGxldmVsXSkKKy4uIGZ1bmN0aW9uOjogY29tcHJlc3MoZGF0YSwgbGV2ZWw9LTEpCiAKICAgIENvbXByZXNzZXMgdGhlIGJ5dGVzIGluICpkYXRhKiwgcmV0dXJuaW5nIGEgYnl0ZXMgb2JqZWN0IGNvbnRhaW5pbmcgY29tcHJlc3NlZCBkYXRhLgotICAgKmxldmVsKiBpcyBhbiBpbnRlZ2VyIGZyb20gYGAwYGAgdG8gYGA5YGAgY29udHJvbGxpbmcgdGhlIGxldmVsIG9mIGNvbXByZXNzaW9uOworICAgKmxldmVsKiBpcyBhbiBpbnRlZ2VyIGZyb20gYGAwYGAgdG8gYGA5YGAgb3IgYGAtMWBgIGNvbnRyb2xsaW5nIHRoZSBsZXZlbCBvZiBjb21wcmVzc2lvbjsKICAgIGBgMWBgIGlzIGZhc3Rlc3QgYW5kIHByb2R1Y2VzIHRoZSBsZWFzdCBjb21wcmVzc2lvbiwgYGA5YGAgaXMgc2xvd2VzdCBhbmQKLSAgIHByb2R1Y2VzIHRoZSBtb3N0LiAgYGAwYGAgaXMgbm8gY29tcHJlc3Npb24uICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBgYDZgYC4KKyAgIHByb2R1Y2VzIHRoZSBtb3N0LiAgYGAwYGAgaXMgbm8gY29tcHJlc3Npb24uICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBgYC0xYGAKKyAgIChaX0RFRkFVTFRfQ09NUFJFU1NJT04pLiAgWl9ERUZBVUxUX0NPTVBSRVNTSU9OIHJlcHJlc2VudHMgYSBkZWZhdWx0CisgICBjb21wcm9taXNlIGJldHdlZW4gc3BlZWQgYW5kIGNvbXByZXNzaW9uIChjdXJyZW50bHkgZXF1aXZhbGVudCB0byBsZXZlbCA2KS4KICAgIFJhaXNlcyB0aGUgOmV4YzpgZXJyb3JgIGV4Y2VwdGlvbiBpZiBhbnkgZXJyb3Igb2NjdXJzLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgKmxldmVsKiBjYW4gbm93IGJlIHVzZWQgYXMgYSBrZXl3b3JkIHBhcmFtZXRlci4KKwogCiAuLiBmdW5jdGlvbjo6IGNvbXByZXNzb2JqKGxldmVsPS0xLCBtZXRob2Q9REVGTEFURUQsIHdiaXRzPTE1LCBtZW1MZXZlbD04LCBzdHJhdGVneT1aX0RFRkFVTFRfU1RSQVRFR1lbLCB6ZGljdF0pCiAKQEAgLTEyNCw3ICsxMjksNyBAQAogICAgICAgcGxhdGZvcm1zLCB1c2UgYGBjcmMzMihkYXRhKSAmIDB4ZmZmZmZmZmZgYC4KIAogCi0uLiBmdW5jdGlvbjo6IGRlY29tcHJlc3MoZGF0YVssIHdiaXRzWywgYnVmc2l6ZV1dKQorLi4gZnVuY3Rpb246OiBkZWNvbXByZXNzKGRhdGEsIHdiaXRzPU1BWF9XQklUUywgYnVmc2l6ZT1ERUZfQlVGX1NJWkUpCiAKICAgIERlY29tcHJlc3NlcyB0aGUgYnl0ZXMgaW4gKmRhdGEqLCByZXR1cm5pbmcgYSBieXRlcyBvYmplY3QgY29udGFpbmluZyB0aGUKICAgIHVuY29tcHJlc3NlZCBkYXRhLiAgVGhlICp3Yml0cyogcGFyYW1ldGVyIGRlcGVuZHMgb24KQEAgLTE1OSwxNCArMTY0LDE2IEBACiAgICBXaGVuIGRlY29tcHJlc3NpbmcgYSBzdHJlYW0sIHRoZSB3aW5kb3cgc2l6ZSBtdXN0IG5vdCBiZSBzbWFsbGVyCiAgICB0aGFuIHRoZSBzaXplIG9yaWdpbmFsbHkgdXNlZCB0byBjb21wcmVzcyB0aGUgc3RyZWFtOyB1c2luZyBhIHRvby1zbWFsbAogICAgdmFsdWUgbWF5IHJlc3VsdCBpbiBhbiA6ZXhjOmBlcnJvcmAgZXhjZXB0aW9uLiBUaGUgZGVmYXVsdCAqd2JpdHMqIHZhbHVlCi0gICBpcyAxNSwgd2hpY2ggY29ycmVzcG9uZHMgdG8gdGhlIGxhcmdlc3Qgd2luZG93IHNpemUgYW5kIHJlcXVpcmVzIGEgemxpYgotICAgaGVhZGVyIGFuZCB0cmFpbGVyIHRvIGJlIGluY2x1ZGVkLgorICAgY29ycmVzcG9uZHMgdG8gdGhlIGxhcmdlc3Qgd2luZG93IHNpemUgYW5kIHJlcXVpcmVzIGEgemxpYiBoZWFkZXIgYW5kCisgICB0cmFpbGVyIHRvIGJlIGluY2x1ZGVkLgogCiAgICAqYnVmc2l6ZSogaXMgdGhlIGluaXRpYWwgc2l6ZSBvZiB0aGUgYnVmZmVyIHVzZWQgdG8gaG9sZCBkZWNvbXByZXNzZWQgZGF0YS4gIElmCiAgICBtb3JlIHNwYWNlIGlzIHJlcXVpcmVkLCB0aGUgYnVmZmVyIHNpemUgd2lsbCBiZSBpbmNyZWFzZWQgYXMgbmVlZGVkLCBzbyB5b3UKICAgIGRvbid0IGhhdmUgdG8gZ2V0IHRoaXMgdmFsdWUgZXhhY3RseSByaWdodDsgdHVuaW5nIGl0IHdpbGwgb25seSBzYXZlIGEgZmV3IGNhbGxzCi0gICB0byA6YzpmdW5jOmBtYWxsb2NgLiAgVGhlIGRlZmF1bHQgc2l6ZSBpcyAxNjM4NC4KKyAgIHRvIDpjOmZ1bmM6YG1hbGxvY2AuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICAqd2JpdHMqIGFuZCAqYnVmc2l6ZSogY2FuIGJlIHVzZWQgYXMga2V5d29yZCBhcmd1bWVudHMuCiAKIC4uIGZ1bmN0aW9uOjogZGVjb21wcmVzc29iaih3Yml0cz0xNVssIHpkaWN0XSkKIApAQCAtMjUyLDcgKzI1OSw3IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogCi0uLiBtZXRob2Q6OiBEZWNvbXByZXNzLmRlY29tcHJlc3MoZGF0YVssIG1heF9sZW5ndGhdKQorLi4gbWV0aG9kOjogRGVjb21wcmVzcy5kZWNvbXByZXNzKGRhdGEsIG1heF9sZW5ndGg9MCkKIAogICAgRGVjb21wcmVzcyAqZGF0YSosIHJldHVybmluZyBhIGJ5dGVzIG9iamVjdCBjb250YWluaW5nIHRoZSB1bmNvbXByZXNzZWQgZGF0YQogICAgY29ycmVzcG9uZGluZyB0byBhdCBsZWFzdCBwYXJ0IG9mIHRoZSBkYXRhIGluICpzdHJpbmcqLiAgVGhpcyBkYXRhIHNob3VsZCBiZQpAQCAtMjY0LDkgKzI3MSwxMSBAQAogICAgbm8gbG9uZ2VyIHRoYW4gKm1heF9sZW5ndGgqLiBUaGlzIG1heSBtZWFuIHRoYXQgbm90IGFsbCBvZiB0aGUgY29tcHJlc3NlZCBpbnB1dAogICAgY2FuIGJlIHByb2Nlc3NlZDsgYW5kIHVuY29uc3VtZWQgZGF0YSB3aWxsIGJlIHN0b3JlZCBpbiB0aGUgYXR0cmlidXRlCiAgICA6YXR0cjpgdW5jb25zdW1lZF90YWlsYC4gVGhpcyBieXRlc3RyaW5nIG11c3QgYmUgcGFzc2VkIHRvIGEgc3Vic2VxdWVudCBjYWxsIHRvCi0gICA6bWV0aDpgZGVjb21wcmVzc2AgaWYgZGVjb21wcmVzc2lvbiBpcyB0byBjb250aW51ZS4gIElmICptYXhfbGVuZ3RoKiBpcyBub3QKLSAgIHN1cHBsaWVkIHRoZW4gdGhlIHdob2xlIGlucHV0IGlzIGRlY29tcHJlc3NlZCwgYW5kIDphdHRyOmB1bmNvbnN1bWVkX3RhaWxgIGlzCi0gICBlbXB0eS4KKyAgIDptZXRoOmBkZWNvbXByZXNzYCBpZiBkZWNvbXByZXNzaW9uIGlzIHRvIGNvbnRpbnVlLiAgSWYgKm1heF9sZW5ndGgqIGlzIHplcm8KKyAgIHRoZW4gdGhlIHdob2xlIGlucHV0IGlzIGRlY29tcHJlc3NlZCwgYW5kIDphdHRyOmB1bmNvbnN1bWVkX3RhaWxgIGlzIGVtcHR5LgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgKm1heF9sZW5ndGgqIGNhbiBiZSB1c2VkIGFzIGEga2V5d29yZCBhcmd1bWVudC4KIAogCiAuLiBtZXRob2Q6OiBEZWNvbXByZXNzLmZsdXNoKFtsZW5ndGhdKQpkaWZmIC0tZ2l0IGEvRG9jL21ha2UuYmF0IGIvRG9jL21ha2UuYmF0CmluZGV4IDVhYjgwODUuLmRhMWY4NzYgMTAwNjQ0Ci0tLSBhL0RvYy9tYWtlLmJhdAorKysgYi9Eb2MvbWFrZS5iYXQKQEAgLTQwLDcgKzQwLDcgQEAKICAgICBnb3RvIGVuZA0KICkNCiANCi0lU1BISU5YQlVJTEQlIDI+IG51bA0KKyVTUEhJTlhCVUlMRCUgPm51bCAyPiBudWwNCiBpZiBlcnJvcmxldmVsIDkwMDkgKA0KICAgICBlY2hvLg0KICAgICBlY2hvLlRoZSAnc3BoaW54LWJ1aWxkJyBjb21tYW5kIHdhcyBub3QgZm91bmQuIE1ha2Ugc3VyZSB5b3UgaGF2ZSBTcGhpbngNCmRpZmYgLS1naXQgYS9Eb2MvcmVmZXJlbmNlL2NvbXBvdW5kX3N0bXRzLnJzdCBiL0RvYy9yZWZlcmVuY2UvY29tcG91bmRfc3RtdHMucnN0CmluZGV4IDg4Yjk0ZWEuLjRiNDI1YTQgMTAwNjQ0Ci0tLSBhL0RvYy9yZWZlcmVuY2UvY29tcG91bmRfc3RtdHMucnN0CisrKyBiL0RvYy9yZWZlcmVuY2UvY29tcG91bmRfc3RtdHMucnN0CkBAIC00NzEsMTAgKzQ3MSwxMCBAQAogICAgZGVjb3JhdG9yczogYGRlY29yYXRvcmArCiAgICBkZWNvcmF0b3I6ICJAIiBgZG90dGVkX25hbWVgIFsiKCIgW2Bhcmd1bWVudF9saXN0YCBbIiwiXV0gIikiXSBORVdMSU5FCiAgICBkb3R0ZWRfbmFtZTogYGlkZW50aWZpZXJgICgiLiIgYGlkZW50aWZpZXJgKSoKLSAgIHBhcmFtZXRlcl9saXN0OiAoYGRlZnBhcmFtZXRlcmAgIiwiKSoKLSAgICAgICAgICAgICAgICAgOiB8ICIqIiBbYHBhcmFtZXRlcmBdICgiLCIgYGRlZnBhcmFtZXRlcmApKiBbIiwiICIqKiIgYHBhcmFtZXRlcmBdCi0gICAgICAgICAgICAgICAgIDogfCAiKioiIGBwYXJhbWV0ZXJgCi0gICAgICAgICAgICAgICAgIDogfCBgZGVmcGFyYW1ldGVyYCBbIiwiXSApCisgICBwYXJhbWV0ZXJfbGlzdDogYGRlZnBhcmFtZXRlcmAgKCIsIiBgZGVmcGFyYW1ldGVyYCkqIFsiLCIgW2BwYXJhbWV0ZXJfbGlzdF9zdGFyYXJnc2BdXQorICAgICAgICAgICAgICAgICA6IHwgYHBhcmFtZXRlcl9saXN0X3N0YXJhcmdzYAorICAgcGFyYW1ldGVyX2xpc3Rfc3RhcmFyZ3M6ICIqIiBbYHBhcmFtZXRlcmBdICgiLCIgYGRlZnBhcmFtZXRlcmApKiBbIiwiIFsiKioiIGBwYXJhbWV0ZXJgIFsiLCJdXV0KKyAgICAgICAgICAgICAgICAgICAgICAgICA6IHwgIioqIiBgcGFyYW1ldGVyYCBbIiwiXQogICAgcGFyYW1ldGVyOiBgaWRlbnRpZmllcmAgWyI6IiBgZXhwcmVzc2lvbmBdCiAgICBkZWZwYXJhbWV0ZXI6IGBwYXJhbWV0ZXJgIFsiPSIgYGV4cHJlc3Npb25gXQogICAgZnVuY25hbWU6IGBpZGVudGlmaWVyYApAQCAtNTQ2LDExICs1NDYsMTIgQEAKIGZ1bmN0aW9uIGNhbGwgYWx3YXlzIGFzc2lnbnMgdmFsdWVzIHRvIGFsbCBwYXJhbWV0ZXJzIG1lbnRpb25lZCBpbiB0aGUgcGFyYW1ldGVyCiBsaXN0LCBlaXRoZXIgZnJvbSBwb3NpdGlvbiBhcmd1bWVudHMsIGZyb20ga2V5d29yZCBhcmd1bWVudHMsIG9yIGZyb20gZGVmYXVsdAogdmFsdWVzLiAgSWYgdGhlIGZvcm0gImBgKmlkZW50aWZpZXJgYCIgaXMgcHJlc2VudCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gYSB0dXBsZQotcmVjZWl2aW5nIGFueSBleGNlc3MgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBkZWZhdWx0aW5nIHRvIHRoZSBlbXB0eSB0dXBsZS4gIElmCi10aGUgZm9ybSAiYGAqKmlkZW50aWZpZXJgYCIgaXMgcHJlc2VudCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gYSBuZXcgZGljdGlvbmFyeQotcmVjZWl2aW5nIGFueSBleGNlc3Mga2V5d29yZCBhcmd1bWVudHMsIGRlZmF1bHRpbmcgdG8gYSBuZXcgZW1wdHkgZGljdGlvbmFyeS4KLVBhcmFtZXRlcnMgYWZ0ZXIgImBgKmBgIiBvciAiYGAqaWRlbnRpZmllcmBgIiBhcmUga2V5d29yZC1vbmx5IHBhcmFtZXRlcnMgYW5kCi1tYXkgb25seSBiZSBwYXNzZWQgdXNlZCBrZXl3b3JkIGFyZ3VtZW50cy4KK3JlY2VpdmluZyBhbnkgZXhjZXNzIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgZGVmYXVsdGluZyB0byB0aGUgZW1wdHkgdHVwbGUuCitJZiB0aGUgZm9ybSAiYGAqKmlkZW50aWZpZXJgYCIgaXMgcHJlc2VudCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gYSBuZXcKK29yZGVyZWQgbWFwcGluZyByZWNlaXZpbmcgYW55IGV4Y2VzcyBrZXl3b3JkIGFyZ3VtZW50cywgZGVmYXVsdGluZyB0byBhCituZXcgZW1wdHkgbWFwcGluZyBvZiB0aGUgc2FtZSB0eXBlLiAgUGFyYW1ldGVycyBhZnRlciAiYGAqYGAiIG9yCisiYGAqaWRlbnRpZmllcmBgIiBhcmUga2V5d29yZC1vbmx5IHBhcmFtZXRlcnMgYW5kIG1heSBvbmx5IGJlIHBhc3NlZAordXNlZCBrZXl3b3JkIGFyZ3VtZW50cy4KIAogLi4gaW5kZXg6OiBwYWlyOiBmdW5jdGlvbjsgYW5ub3RhdGlvbnMKIApAQCAtNjMyLDYgKzYzMywxMSBAQAogZGljdGlvbmFyeS4gIFRoZSBjbGFzcyBuYW1lIGlzIGJvdW5kIHRvIHRoaXMgY2xhc3Mgb2JqZWN0IGluIHRoZSBvcmlnaW5hbCBsb2NhbAogbmFtZXNwYWNlLgogCitUaGUgb3JkZXIgaW4gd2hpY2ggYXR0cmlidXRlcyBhcmUgZGVmaW5lZCBpbiB0aGUgY2xhc3MgYm9keSBpcyBwcmVzZXJ2ZWQKK2luIHRoZSBuZXcgY2xhc3MncyBgYF9fZGljdF9fYGAuICBOb3RlIHRoYXQgdGhpcyBpcyByZWxpYWJsZSBvbmx5IHJpZ2h0CithZnRlciB0aGUgY2xhc3MgaXMgY3JlYXRlZCBhbmQgb25seSBmb3IgY2xhc3NlcyB0aGF0IHdlcmUgZGVmaW5lZCB1c2luZwordGhlIGRlZmluaXRpb24gc3ludGF4LgorCiBDbGFzcyBjcmVhdGlvbiBjYW4gYmUgY3VzdG9taXplZCBoZWF2aWx5IHVzaW5nIDpyZWY6YG1ldGFjbGFzc2VzIDxtZXRhY2xhc3Nlcz5gLgogCiBDbGFzc2VzIGNhbiBhbHNvIGJlIGRlY29yYXRlZDoganVzdCBsaWtlIHdoZW4gZGVjb3JhdGluZyBmdW5jdGlvbnMsIDo6CkBAIC02OTEsNyArNjk3LDcgQEAKIEZ1bmN0aW9ucyBkZWZpbmVkIHdpdGggYGBhc3luYyBkZWZgYCBzeW50YXggYXJlIGFsd2F5cyBjb3JvdXRpbmUgZnVuY3Rpb25zLAogZXZlbiBpZiB0aGV5IGRvIG5vdCBjb250YWluIGBgYXdhaXRgYCBvciBgYGFzeW5jYGAga2V5d29yZHMuCiAKLUl0IGlzIGEgOmV4YzpgU3ludGF4RXJyb3JgIHRvIHVzZSA6a2V5d29yZDpgeWllbGRgIGV4cHJlc3Npb25zIGluCitJdCBpcyBhIDpleGM6YFN5bnRheEVycm9yYCB0byB1c2UgYGB5aWVsZCBmcm9tYGAgZXhwcmVzc2lvbnMgaW4KIGBgYXN5bmMgZGVmYGAgY29yb3V0aW5lcy4KIAogQW4gZXhhbXBsZSBvZiBhIGNvcm91dGluZSBmdW5jdGlvbjo6CmRpZmYgLS1naXQgYS9Eb2MvcmVmZXJlbmNlL2RhdGFtb2RlbC5yc3QgYi9Eb2MvcmVmZXJlbmNlL2RhdGFtb2RlbC5yc3QKaW5kZXggNzNlZWMxYy4uZjJhMmIxMiAxMDA2NDQKLS0tIGEvRG9jL3JlZmVyZW5jZS9kYXRhbW9kZWwucnN0CisrKyBiL0RvYy9yZWZlcmVuY2UvZGF0YW1vZGVsLnJzdApAQCAtNjI3LDYgKzYyNywyNSBAQAogICAgICAgYXMgd2VsbCBhcyA6a2V5d29yZDpgYXN5bmMgd2l0aGAgYW5kIDprZXl3b3JkOmBhc3luYyBmb3JgIHN0YXRlbWVudHMuIFNlZQogICAgICAgYWxzbyB0aGUgOnJlZjpgY29yb3V0aW5lLW9iamVjdHNgIHNlY3Rpb24uCiAKKyAgIEFzeW5jaHJvbm91cyBnZW5lcmF0b3IgZnVuY3Rpb25zCisgICAgICAuLiBpbmRleDo6CisgICAgICAgICBzaW5nbGU6IGFzeW5jaHJvbm91cyBnZW5lcmF0b3I7IGZ1bmN0aW9uCisgICAgICAgICBzaW5nbGU6IGFzeW5jaHJvbm91cyBnZW5lcmF0b3I7IGFzeW5jaHJvbm91cyBpdGVyYXRvcgorCisgICAgICBBIGZ1bmN0aW9uIG9yIG1ldGhvZCB3aGljaCBpcyBkZWZpbmVkIHVzaW5nIDprZXl3b3JkOmBhc3luYyBkZWZgIGFuZAorICAgICAgd2hpY2ggdXNlcyB0aGUgOmtleXdvcmQ6YHlpZWxkYCBzdGF0ZW1lbnQgaXMgY2FsbGVkIGEKKyAgICAgIDpkZm46YGFzeW5jaHJvbm91cyBnZW5lcmF0b3IgZnVuY3Rpb25gLiAgU3VjaCBhIGZ1bmN0aW9uLCB3aGVuIGNhbGxlZCwKKyAgICAgIHJldHVybnMgYW4gYXN5bmNocm9ub3VzIGl0ZXJhdG9yIG9iamVjdCB3aGljaCBjYW4gYmUgdXNlZCBpbiBhbgorICAgICAgOmtleXdvcmQ6YGFzeW5jIGZvcmAgc3RhdGVtZW50IHRvIGV4ZWN1dGUgdGhlIGJvZHkgb2YgdGhlIGZ1bmN0aW9uLgorCisgICAgICBDYWxsaW5nIHRoZSBhc3luY2hyb25vdXMgaXRlcmF0b3IncyA6bWV0aDpgYWl0ZXJhdG9yLl9fYW5leHRfX2AgbWV0aG9kCisgICAgICB3aWxsIHJldHVybiBhbiA6dGVybTpgYXdhaXRhYmxlYCB3aGljaCB3aGVuIGF3YWl0ZWQKKyAgICAgIHdpbGwgZXhlY3V0ZSB1bnRpbCBpdCBwcm92aWRlcyBhIHZhbHVlIHVzaW5nIHRoZSA6a2V5d29yZDpgeWllbGRgCisgICAgICBleHByZXNzaW9uLiAgV2hlbiB0aGUgZnVuY3Rpb24gZXhlY3V0ZXMgYW4gZW1wdHkgOmtleXdvcmQ6YHJldHVybmAKKyAgICAgIHN0YXRlbWVudCBvciBmYWxscyBvZmYgdGhlIGVuZCwgYSA6ZXhjOmBTdG9wQXN5bmNJdGVyYXRpb25gIGV4Y2VwdGlvbgorICAgICAgaXMgcmFpc2VkIGFuZCB0aGUgYXN5bmNocm9ub3VzIGl0ZXJhdG9yIHdpbGwgaGF2ZSByZWFjaGVkIHRoZSBlbmQgb2YKKyAgICAgIHRoZSBzZXQgb2YgdmFsdWVzIHRvIGJlIHlpZWxkZWQuCisKICAgIEJ1aWx0LWluIGZ1bmN0aW9ucwogICAgICAgLi4gaW5kZXg6OgogICAgICAgICAgb2JqZWN0OiBidWlsdC1pbiBmdW5jdGlvbgpAQCAtNjg2LDEwICs3MDUsMjggQEAKICAgIEF0dHJpYnV0ZSBhc3NpZ25tZW50IHVwZGF0ZXMgdGhlIG1vZHVsZSdzIG5hbWVzcGFjZSBkaWN0aW9uYXJ5LCBlLmcuLAogICAgYGBtLnggPSAxYGAgaXMgZXF1aXZhbGVudCB0byBgYG0uX19kaWN0X19bIngiXSA9IDFgYC4KIAorICAgLi4gaW5kZXg6OgorICAgICAgc2luZ2xlOiBfX25hbWVfXyAobW9kdWxlIGF0dHJpYnV0ZSkKKyAgICAgIHNpbmdsZTogX19kb2NfXyAobW9kdWxlIGF0dHJpYnV0ZSkKKyAgICAgIHNpbmdsZTogX19maWxlX18gKG1vZHVsZSBhdHRyaWJ1dGUpCisgICAgICBzaW5nbGU6IF9fYW5ub3RhdGlvbnNfXyAobW9kdWxlIGF0dHJpYnV0ZSkKKyAgICAgIHBhaXI6IG1vZHVsZTsgbmFtZXNwYWNlCisKKyAgIFByZWRlZmluZWQgKHdyaXRhYmxlKSBhdHRyaWJ1dGVzOiA6YXR0cjpgX19uYW1lX19gIGlzIHRoZSBtb2R1bGUncyBuYW1lOworICAgOmF0dHI6YF9fZG9jX19gIGlzIHRoZSBtb2R1bGUncyBkb2N1bWVudGF0aW9uIHN0cmluZywgb3IgYGBOb25lYGAgaWYKKyAgIHVuYXZhaWxhYmxlOyA6YXR0cjpgX19hbm5vdGF0aW9uc19fYCAob3B0aW9uYWwpIGlzIGEgZGljdGlvbmFyeSBjb250YWluaW5nCisgICA6dGVybTpgdmFyaWFibGUgYW5ub3RhdGlvbnMgPHZhcmlhYmxlIGFubm90YXRpb24+YCBjb2xsZWN0ZWQgZHVyaW5nIG1vZHVsZQorICAgYm9keSBleGVjdXRpb247IDphdHRyOmBfX2ZpbGVfX2AgaXMgdGhlIHBhdGhuYW1lIG9mIHRoZSBmaWxlIGZyb20gd2hpY2ggdGhlCisgICBtb2R1bGUgd2FzIGxvYWRlZCwgaWYgaXQgd2FzIGxvYWRlZCBmcm9tIGEgZmlsZS4gVGhlIDphdHRyOmBfX2ZpbGVfX2AKKyAgIGF0dHJpYnV0ZSBtYXkgYmUgbWlzc2luZyBmb3IgY2VydGFpbiB0eXBlcyBvZiBtb2R1bGVzLCBzdWNoIGFzIEMgbW9kdWxlcworICAgdGhhdCBhcmUgc3RhdGljYWxseSBsaW5rZWQgaW50byB0aGUgaW50ZXJwcmV0ZXI7IGZvciBleHRlbnNpb24gbW9kdWxlcworICAgbG9hZGVkIGR5bmFtaWNhbGx5IGZyb20gYSBzaGFyZWQgbGlicmFyeSwgaXQgaXMgdGhlIHBhdGhuYW1lIG9mIHRoZSBzaGFyZWQKKyAgIGxpYnJhcnkgZmlsZS4KKwogICAgLi4gaW5kZXg6OiBzaW5nbGU6IF9fZGljdF9fIChtb2R1bGUgYXR0cmlidXRlKQogCi0gICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGU6IDphdHRyOmB+b2JqZWN0Ll9fZGljdF9fYCBpcyB0aGUgbW9kdWxlJ3MgbmFtZXNwYWNlIGFzIGEKLSAgIGRpY3Rpb25hcnkgb2JqZWN0LgorICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlOiA6YXR0cjpgfm9iamVjdC5fX2RpY3RfX2AgaXMgdGhlIG1vZHVsZSdzCisgICBuYW1lc3BhY2UgYXMgYSBkaWN0aW9uYXJ5IG9iamVjdC4KIAogICAgLi4gaW1wbC1kZXRhaWw6OgogCkBAIC02OTgsMjEgKzczNSw2IEBACiAgICAgICBkaWN0aW9uYXJ5IHN0aWxsIGhhcyBsaXZlIHJlZmVyZW5jZXMuICBUbyBhdm9pZCB0aGlzLCBjb3B5IHRoZSBkaWN0aW9uYXJ5CiAgICAgICBvciBrZWVwIHRoZSBtb2R1bGUgYXJvdW5kIHdoaWxlIHVzaW5nIGl0cyBkaWN0aW9uYXJ5IGRpcmVjdGx5LgogCi0gICAuLiBpbmRleDo6Ci0gICAgICBzaW5nbGU6IF9fbmFtZV9fIChtb2R1bGUgYXR0cmlidXRlKQotICAgICAgc2luZ2xlOiBfX2RvY19fIChtb2R1bGUgYXR0cmlidXRlKQotICAgICAgc2luZ2xlOiBfX2ZpbGVfXyAobW9kdWxlIGF0dHJpYnV0ZSkKLSAgICAgIHBhaXI6IG1vZHVsZTsgbmFtZXNwYWNlCi0KLSAgIFByZWRlZmluZWQgKHdyaXRhYmxlKSBhdHRyaWJ1dGVzOiA6YXR0cjpgX19uYW1lX19gIGlzIHRoZSBtb2R1bGUncyBuYW1lOwotICAgOmF0dHI6YF9fZG9jX19gIGlzIHRoZSBtb2R1bGUncyBkb2N1bWVudGF0aW9uIHN0cmluZywgb3IgYGBOb25lYGAgaWYKLSAgIHVuYXZhaWxhYmxlOyA6YXR0cjpgX19maWxlX19gIGlzIHRoZSBwYXRobmFtZSBvZiB0aGUgZmlsZSBmcm9tIHdoaWNoIHRoZQotICAgbW9kdWxlIHdhcyBsb2FkZWQsIGlmIGl0IHdhcyBsb2FkZWQgZnJvbSBhIGZpbGUuIFRoZSA6YXR0cjpgX19maWxlX19gCi0gICBhdHRyaWJ1dGUgbWF5IGJlIG1pc3NpbmcgZm9yIGNlcnRhaW4gdHlwZXMgb2YgbW9kdWxlcywgc3VjaCBhcyBDIG1vZHVsZXMKLSAgIHRoYXQgYXJlIHN0YXRpY2FsbHkgbGlua2VkIGludG8gdGhlIGludGVycHJldGVyOyBmb3IgZXh0ZW5zaW9uIG1vZHVsZXMKLSAgIGxvYWRlZCBkeW5hbWljYWxseSBmcm9tIGEgc2hhcmVkIGxpYnJhcnksIGl0IGlzIHRoZSBwYXRobmFtZSBvZiB0aGUgc2hhcmVkCi0gICBsaWJyYXJ5IGZpbGUuCi0KIEN1c3RvbSBjbGFzc2VzCiAgICBDdXN0b20gY2xhc3MgdHlwZXMgYXJlIHR5cGljYWxseSBjcmVhdGVkIGJ5IGNsYXNzIGRlZmluaXRpb25zIChzZWUgc2VjdGlvbgogICAgOnJlZjpgY2xhc3NgKS4gIEEgY2xhc3MgaGFzIGEgbmFtZXNwYWNlIGltcGxlbWVudGVkIGJ5IGEgZGljdGlvbmFyeSBvYmplY3QuCkBAIC03NjEsMTMgKzc4MywxNyBAQAogICAgICAgc2luZ2xlOiBfX2RpY3RfXyAoY2xhc3MgYXR0cmlidXRlKQogICAgICAgc2luZ2xlOiBfX2Jhc2VzX18gKGNsYXNzIGF0dHJpYnV0ZSkKICAgICAgIHNpbmdsZTogX19kb2NfXyAoY2xhc3MgYXR0cmlidXRlKQorICAgICAgc2luZ2xlOiBfX2Fubm90YXRpb25zX18gKGNsYXNzIGF0dHJpYnV0ZSkKIAogICAgU3BlY2lhbCBhdHRyaWJ1dGVzOiA6YXR0cjpgfmRlZmluaXRpb24uX19uYW1lX19gIGlzIHRoZSBjbGFzcyBuYW1lOyA6YXR0cjpgX19tb2R1bGVfX2AgaXMKICAgIHRoZSBtb2R1bGUgbmFtZSBpbiB3aGljaCB0aGUgY2xhc3Mgd2FzIGRlZmluZWQ7IDphdHRyOmB+b2JqZWN0Ll9fZGljdF9fYCBpcyB0aGUKICAgIGRpY3Rpb25hcnkgY29udGFpbmluZyB0aGUgY2xhc3MncyBuYW1lc3BhY2U7IDphdHRyOmB+Y2xhc3MuX19iYXNlc19fYCBpcyBhCiAgICB0dXBsZSAocG9zc2libHkgZW1wdHkgb3IgYSBzaW5nbGV0b24pIGNvbnRhaW5pbmcgdGhlIGJhc2UgY2xhc3NlcywgaW4gdGhlCiAgICBvcmRlciBvZiB0aGVpciBvY2N1cnJlbmNlIGluIHRoZSBiYXNlIGNsYXNzIGxpc3Q7IDphdHRyOmBfX2RvY19fYCBpcyB0aGUKLSAgIGNsYXNzJ3MgZG9jdW1lbnRhdGlvbiBzdHJpbmcsIG9yIGBgTm9uZWBgIGlmIHVuZGVmaW5lZC4KKyAgIGNsYXNzJ3MgZG9jdW1lbnRhdGlvbiBzdHJpbmcsIG9yIGBgTm9uZWBgIGlmIHVuZGVmaW5lZDsKKyAgIDphdHRyOmBfX2Fubm90YXRpb25zX19gIChvcHRpb25hbCkgaXMgYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcKKyAgIDp0ZXJtOmB2YXJpYWJsZSBhbm5vdGF0aW9ucyA8dmFyaWFibGUgYW5ub3RhdGlvbj5gIGNvbGxlY3RlZCBkdXJpbmcKKyAgIGNsYXNzIGJvZHkgZXhlY3V0aW9uLgogCiBDbGFzcyBpbnN0YW5jZXMKICAgIC4uIGluZGV4OjoKQEAgLTEwNjMsNiArMTA4OSwxMiBAQAogb3BlcmF0aW9uIHJhaXNlIGFuIGV4Y2VwdGlvbiB3aGVuIG5vIGFwcHJvcHJpYXRlIG1ldGhvZCBpcyBkZWZpbmVkICh0eXBpY2FsbHkKIDpleGM6YEF0dHJpYnV0ZUVycm9yYCBvciA6ZXhjOmBUeXBlRXJyb3JgKS4KIAorU2V0dGluZyBhIHNwZWNpYWwgbWV0aG9kIHRvIGBgTm9uZWBgIGluZGljYXRlcyB0aGF0IHRoZSBjb3JyZXNwb25kaW5nCitvcGVyYXRpb24gaXMgbm90IGF2YWlsYWJsZS4gIEZvciBleGFtcGxlLCBpZiBhIGNsYXNzIHNldHMKKzptZXRoOmBfX2l0ZXJfX2AgdG8gYGBOb25lYGAsIHRoZSBjbGFzcyBpcyBub3QgaXRlcmFibGUsIHNvIGNhbGxpbmcKKzpmdW5jOmBpdGVyYCBvbiBpdHMgaW5zdGFuY2VzIHdpbGwgcmFpc2UgYSA6ZXhjOmBUeXBlRXJyb3JgICh3aXRob3V0CitmYWxsaW5nIGJhY2sgdG8gOm1ldGg6YF9fZ2V0aXRlbV9fYCkuIFsjXV8KKwogV2hlbiBpbXBsZW1lbnRpbmcgYSBjbGFzcyB0aGF0IGVtdWxhdGVzIGFueSBidWlsdC1pbiB0eXBlLCBpdCBpcyBpbXBvcnRhbnQgdGhhdAogdGhlIGVtdWxhdGlvbiBvbmx5IGJlIGltcGxlbWVudGVkIHRvIHRoZSBkZWdyZWUgdGhhdCBpdCBtYWtlcyBzZW5zZSBmb3IgdGhlCiBvYmplY3QgYmVpbmcgbW9kZWxsZWQuICBGb3IgZXhhbXBsZSwgc29tZSBzZXF1ZW5jZXMgbWF5IHdvcmsgd2VsbCB3aXRoIHJldHJpZXZhbApAQCAtMTIzMyw4ICsxMjY1LDkgQEAKIAogLi4gbWV0aG9kOjogb2JqZWN0Ll9fZm9ybWF0X18oc2VsZiwgZm9ybWF0X3NwZWMpCiAKLSAgIENhbGxlZCBieSB0aGUgOmZ1bmM6YGZvcm1hdGAgYnVpbHQtaW4gZnVuY3Rpb24gKGFuZCBieSBleHRlbnNpb24sIHRoZQotICAgOm1ldGg6YHN0ci5mb3JtYXRgIG1ldGhvZCBvZiBjbGFzcyA6Y2xhc3M6YHN0cmApIHRvIHByb2R1Y2UgYSAiZm9ybWF0dGVkIgorICAgQ2FsbGVkIGJ5IHRoZSA6ZnVuYzpgZm9ybWF0YCBidWlsdC1pbiBmdW5jdGlvbiwKKyAgIGFuZCBieSBleHRlbnNpb24sIGV2YWx1YXRpb24gb2YgOnJlZjpgZm9ybWF0dGVkIHN0cmluZyBsaXRlcmFscworICAgPGYtc3RyaW5ncz5gIGFuZCB0aGUgOm1ldGg6YHN0ci5mb3JtYXRgIG1ldGhvZCwgdG8gcHJvZHVjZSBhICJmb3JtYXR0ZWQiCiAgICBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LiBUaGUgYGBmb3JtYXRfc3BlY2BgIGFyZ3VtZW50IGlzCiAgICBhIHN0cmluZyB0aGF0IGNvbnRhaW5zIGEgZGVzY3JpcHRpb24gb2YgdGhlIGZvcm1hdHRpbmcgb3B0aW9ucyBkZXNpcmVkLgogICAgVGhlIGludGVycHJldGF0aW9uIG9mIHRoZSBgYGZvcm1hdF9zcGVjYGAgYXJndW1lbnQgaXMgdXAgdG8gdGhlIHR5cGUKQEAgLTE0OTQsNiArMTUyNywxNCBAQAogICAgQ2FsbGVkIHRvIGRlbGV0ZSB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogb2YgdGhlIG93bmVyIGNsYXNzLgogCiAKKy4uIG1ldGhvZDo6IG9iamVjdC5fX3NldF9uYW1lX18oc2VsZiwgb3duZXIsIG5hbWUpCisKKyAgIENhbGxlZCBhdCB0aGUgdGltZSB0aGUgb3duaW5nIGNsYXNzICpvd25lciogaXMgY3JlYXRlZC4gVGhlCisgICBkZXNjcmlwdG9yIGhhcyBiZWVuIGFzc2lnbmVkIHRvICpuYW1lKi4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKwogVGhlIGF0dHJpYnV0ZSA6YXR0cjpgX19vYmpjbGFzc19fYCBpcyBpbnRlcnByZXRlZCBieSB0aGUgOm1vZDpgaW5zcGVjdGAgbW9kdWxlCiBhcyBzcGVjaWZ5aW5nIHRoZSBjbGFzcyB3aGVyZSB0aGlzIG9iamVjdCB3YXMgZGVmaW5lZCAoc2V0dGluZyB0aGlzCiBhcHByb3ByaWF0ZWx5IGNhbiBhc3Npc3QgaW4gcnVudGltZSBpbnRyb3NwZWN0aW9uIG9mIGR5bmFtaWMgY2xhc3MgYXR0cmlidXRlcykuCkBAIC0xNjMxLDExICsxNjcyLDYwIEBACiAqICpfX2NsYXNzX18qIGFzc2lnbm1lbnQgd29ya3Mgb25seSBpZiBib3RoIGNsYXNzZXMgaGF2ZSB0aGUgc2FtZSAqX19zbG90c19fKi4KIAogCi0uLiBfbWV0YWNsYXNzZXM6CisuLiBfY2xhc3MtY3VzdG9taXphdGlvbjoKIAogQ3VzdG9taXppbmcgY2xhc3MgY3JlYXRpb24KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKK1doZW5ldmVyIGEgY2xhc3MgaW5oZXJpdHMgZnJvbSBhbm90aGVyIGNsYXNzLCAqX19pbml0X3N1YmNsYXNzX18qIGlzCitjYWxsZWQgb24gdGhhdCBjbGFzcy4gVGhpcyB3YXksIGl0IGlzIHBvc3NpYmxlIHRvIHdyaXRlIGNsYXNzZXMgd2hpY2gKK2NoYW5nZSB0aGUgYmVoYXZpb3Igb2Ygc3ViY2xhc3Nlcy4gVGhpcyBpcyBjbG9zZWx5IHJlbGF0ZWQgdG8gY2xhc3MKK2RlY29yYXRvcnMsIGJ1dCB3aGVyZSBjbGFzcyBkZWNvcmF0b3JzIG9ubHkgYWZmZWN0IHRoZSBzcGVjaWZpYyBjbGFzcyB0aGV5J3JlCithcHBsaWVkIHRvLCBgYF9faW5pdF9zdWJjbGFzc19fYGAgc29sZWx5IGFwcGxpZXMgdG8gZnV0dXJlIHN1YmNsYXNzZXMgb2YgdGhlCitjbGFzcyBkZWZpbmluZyB0aGUgbWV0aG9kLgorCisuLiBjbGFzc21ldGhvZDo6IG9iamVjdC5fX2luaXRfc3ViY2xhc3NfXyhjbHMpCisKKyAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuZXZlciB0aGUgY29udGFpbmluZyBjbGFzcyBpcyBzdWJjbGFzc2VkLgorICAgKmNscyogaXMgdGhlbiB0aGUgbmV3IHN1YmNsYXNzLiBJZiBkZWZpbmVkIGFzIGEgbm9ybWFsIGluc3RhbmNlIG1ldGhvZCwKKyAgIHRoaXMgbWV0aG9kIGlzIGltcGxpY2l0bHkgY29udmVydGVkIHRvIGEgY2xhc3MgbWV0aG9kLgorCisgICBLZXl3b3JkIGFyZ3VtZW50cyB3aGljaCBhcmUgZ2l2ZW4gdG8gYSBuZXcgY2xhc3MgYXJlIHBhc3NlZCB0bworICAgdGhlIHBhcmVudCdzIGNsYXNzIGBgX19pbml0X3N1YmNsYXNzX19gYC4gRm9yIGNvbXBhdGliaWxpdHkgd2l0aAorICAgb3RoZXIgY2xhc3NlcyB1c2luZyBgYF9faW5pdF9zdWJjbGFzc19fYGAsIG9uZSBzaG91bGQgdGFrZSBvdXQgdGhlCisgICBuZWVkZWQga2V5d29yZCBhcmd1bWVudHMgYW5kIHBhc3MgdGhlIG90aGVycyBvdmVyIHRvIHRoZSBiYXNlCisgICBjbGFzcywgYXMgaW46OgorCisgICAgICAgY2xhc3MgUGhpbG9zb3BoZXI6CisgICAgICAgICAgIGRlZiBfX2luaXRfc3ViY2xhc3NfXyhjbHMsIGRlZmF1bHRfbmFtZSwgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfc3ViY2xhc3NfXygqKmt3YXJncykKKyAgICAgICAgICAgICAgIGNscy5kZWZhdWx0X25hbWUgPSBkZWZhdWx0X25hbWUKKworICAgICAgIGNsYXNzIEF1c3RyYWxpYW5QaGlsb3NvcGhlcihQaGlsb3NvcGhlciwgZGVmYXVsdF9uYW1lPSJCcnVjZSIpOgorICAgICAgICAgICBwYXNzCisKKyAgIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGBgb2JqZWN0Ll9faW5pdF9zdWJjbGFzc19fYGAgZG9lcworICAgbm90aGluZywgYnV0IHJhaXNlcyBhbiBlcnJvciBpZiBpdCBpcyBjYWxsZWQgd2l0aCBhbnkgYXJndW1lbnRzLgorCisgICAuLiBub3RlOjoKKworICAgICAgVGhlIG1ldGFjbGFzcyBoaW50IGBgbWV0YWNsYXNzYGAgaXMgY29uc3VtZWQgYnkgdGhlIHJlc3Qgb2YgdGhlIHR5cGUKKyAgICAgIG1hY2hpbmVyeSwgYW5kIGlzIG5ldmVyIHBhc3NlZCB0byBgYF9faW5pdF9zdWJjbGFzc19fYGAgaW1wbGVtZW50YXRpb25zLgorICAgICAgVGhlIGFjdHVhbCBtZXRhY2xhc3MgKHJhdGhlciB0aGFuIHRoZSBleHBsaWNpdCBoaW50KSBjYW4gYmUgYWNjZXNzZWQgYXMKKyAgICAgIGBgdHlwZShjbHMpYGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisKKy4uIF9tZXRhY2xhc3NlczoKKworTWV0YWNsYXNzZXMKK15eXl5eXl5eXl5eCisKKy4uIGluZGV4OjoKKyAgICBzaW5nbGU6IG1ldGFjbGFzcworICAgIGJ1aWx0aW46IHR5cGUKKwogQnkgZGVmYXVsdCwgY2xhc3NlcyBhcmUgY29uc3RydWN0ZWQgdXNpbmcgOmZ1bmM6YHR5cGVgLiBUaGUgY2xhc3MgYm9keSBpcwogZXhlY3V0ZWQgaW4gYSBuZXcgbmFtZXNwYWNlIGFuZCB0aGUgY2xhc3MgbmFtZSBpcyBib3VuZCBsb2NhbGx5IHRvIHRoZQogcmVzdWx0IG9mIGBgdHlwZShuYW1lLCBiYXNlcywgbmFtZXNwYWNlKWBgLgpAQCAtMTY2Niw2ICsxNzU2LDggQEAKIAogRGV0ZXJtaW5pbmcgdGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcwogXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorLi4gaW5kZXg6OgorICAgIHNpbmdsZTogbWV0YWNsYXNzIGhpbnQKIAogVGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcyBmb3IgYSBjbGFzcyBkZWZpbml0aW9uIGlzIGRldGVybWluZWQgYXMgZm9sbG93czoKIApAQCAtMTY4NywxMyArMTc3OSwxNiBAQAogUHJlcGFyaW5nIHRoZSBjbGFzcyBuYW1lc3BhY2UKIF5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCiAKKy4uIGluZGV4OjoKKyAgICBzaW5nbGU6IF9fcHJlcGFyZV9fIChtZXRhY2xhc3MgbWV0aG9kKQorCiBPbmNlIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MgaGFzIGJlZW4gaWRlbnRpZmllZCwgdGhlbiB0aGUgY2xhc3MgbmFtZXNwYWNlCiBpcyBwcmVwYXJlZC4gSWYgdGhlIG1ldGFjbGFzcyBoYXMgYSBgYF9fcHJlcGFyZV9fYGAgYXR0cmlidXRlLCBpdCBpcyBjYWxsZWQKIGFzIGBgbmFtZXNwYWNlID0gbWV0YWNsYXNzLl9fcHJlcGFyZV9fKG5hbWUsIGJhc2VzLCAqKmt3ZHMpYGAgKHdoZXJlIHRoZQogYWRkaXRpb25hbCBrZXl3b3JkIGFyZ3VtZW50cywgaWYgYW55LCBjb21lIGZyb20gdGhlIGNsYXNzIGRlZmluaXRpb24pLgogCiBJZiB0aGUgbWV0YWNsYXNzIGhhcyBubyBgYF9fcHJlcGFyZV9fYGAgYXR0cmlidXRlLCB0aGVuIHRoZSBjbGFzcyBuYW1lc3BhY2UKLWlzIGluaXRpYWxpc2VkIGFzIGFuIGVtcHR5IDpmdW5jOmBkaWN0YCBpbnN0YW5jZS4KK2lzIGluaXRpYWxpc2VkIGFzIGFuIGVtcHR5IG9yZGVyZWQgbWFwcGluZy4KIAogLi4gc2VlYWxzbzo6CiAKQEAgLTE3MDQsNiArMTc5OSw5IEBACiBFeGVjdXRpbmcgdGhlIGNsYXNzIGJvZHkKIF5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgogCisuLiBpbmRleDo6CisgICAgc2luZ2xlOiBjbGFzczsgYm9keQorCiBUaGUgY2xhc3MgYm9keSBpcyBleGVjdXRlZCAoYXBwcm94aW1hdGVseSkgYXMKIGBgZXhlYyhib2R5LCBnbG9iYWxzKCksIG5hbWVzcGFjZSlgYC4gVGhlIGtleSBkaWZmZXJlbmNlIGZyb20gYSBub3JtYWwKIGNhbGwgdG8gOmZ1bmM6YGV4ZWNgIGlzIHRoYXQgbGV4aWNhbCBzY29waW5nIGFsbG93cyB0aGUgY2xhc3MgYm9keSAoaW5jbHVkaW5nCkBAIC0xNzEzLDEyICsxODExLDE5IEBACiBIb3dldmVyLCBldmVuIHdoZW4gdGhlIGNsYXNzIGRlZmluaXRpb24gb2NjdXJzIGluc2lkZSB0aGUgZnVuY3Rpb24sIG1ldGhvZHMKIGRlZmluZWQgaW5zaWRlIHRoZSBjbGFzcyBzdGlsbCBjYW5ub3Qgc2VlIG5hbWVzIGRlZmluZWQgYXQgdGhlIGNsYXNzIHNjb3BlLgogQ2xhc3MgdmFyaWFibGVzIG11c3QgYmUgYWNjZXNzZWQgdGhyb3VnaCB0aGUgZmlyc3QgcGFyYW1ldGVyIG9mIGluc3RhbmNlIG9yCi1jbGFzcyBtZXRob2RzLCBhbmQgY2Fubm90IGJlIGFjY2Vzc2VkIGF0IGFsbCBmcm9tIHN0YXRpYyBtZXRob2RzLgorY2xhc3MgbWV0aG9kcywgb3IgdGhyb3VnaCB0aGUgaW1wbGljaXQgbGV4aWNhbGx5IHNjb3BlZCBgYF9fY2xhc3NfX2BgIHJlZmVyZW5jZQorZGVzY3JpYmVkIGluIHRoZSBuZXh0IHNlY3Rpb24uCiAKKy4uIF9jbGFzcy1vYmplY3QtY3JlYXRpb246CiAKIENyZWF0aW5nIHRoZSBjbGFzcyBvYmplY3QKIF5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KIAorLi4gaW5kZXg6OgorICAgIHNpbmdsZTogX19jbGFzc19fIChtZXRob2QgY2VsbCkKKyAgICBzaW5nbGU6IF9fY2xhc3NjZWxsX18gKGNsYXNzIG5hbWVzcGFjZSBlbnRyeSkKKworCiBPbmNlIHRoZSBjbGFzcyBuYW1lc3BhY2UgaGFzIGJlZW4gcG9wdWxhdGVkIGJ5IGV4ZWN1dGluZyB0aGUgY2xhc3MgYm9keSwKIHRoZSBjbGFzcyBvYmplY3QgaXMgY3JlYXRlZCBieSBjYWxsaW5nCiBgYG1ldGFjbGFzcyhuYW1lLCBiYXNlcywgbmFtZXNwYWNlLCAqKmt3ZHMpYGAgKHRoZSBhZGRpdGlvbmFsIGtleXdvcmRzCkBAIC0xNzMyLDE0ICsxODM3LDM0IEBACiBsZXhpY2FsIHNjb3BpbmcsIHdoaWxlIHRoZSBjbGFzcyBvciBpbnN0YW5jZSB0aGF0IHdhcyB1c2VkIHRvIG1ha2UgdGhlCiBjdXJyZW50IGNhbGwgaXMgaWRlbnRpZmllZCBiYXNlZCBvbiB0aGUgZmlyc3QgYXJndW1lbnQgcGFzc2VkIHRvIHRoZSBtZXRob2QuCiAKKy4uIGltcGwtZGV0YWlsOjoKKworICAgSW4gQ1B5dGhvbiAzLjYgYW5kIGxhdGVyLCB0aGUgYGBfX2NsYXNzX19gYCBjZWxsIGlzIHBhc3NlZCB0byB0aGUgbWV0YWNsYXNzCisgICBhcyBhIGBgX19jbGFzc2NlbGxfX2BgIGVudHJ5IGluIHRoZSBjbGFzcyBuYW1lc3BhY2UuIElmIHByZXNlbnQsIHRoaXMgbXVzdAorICAgYmUgcHJvcGFnYXRlZCB1cCB0byB0aGUgYGB0eXBlLl9fbmV3X19gYCBjYWxsIGluIG9yZGVyIGZvciB0aGUgY2xhc3MgdG8gYmUKKyAgIGluaXRpYWxpc2VkIGNvcnJlY3RseS4KKyAgIEZhaWxpbmcgdG8gZG8gc28gd2lsbCByZXN1bHQgaW4gYSA6ZXhjOmBEZXByZWNhdGlvbldhcm5pbmdgIGluIFB5dGhvbiAzLjYsCisgICBhbmQgYSA6ZXhjOmBSdW50aW1lV2FybmluZ2AgaW4gdGhlIGZ1dHVyZS4KKworV2hlbiB1c2luZyB0aGUgZGVmYXVsdCBtZXRhY2xhc3MgOmNsYXNzOmB0eXBlYCwgb3IgYW55IG1ldGFjbGFzcyB0aGF0IHVsdGltYXRlbHkKK2NhbGxzIGBgdHlwZS5fX25ld19fYGAsIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBjdXN0b21pc2F0aW9uIHN0ZXBzIGFyZQoraW52b2tlZCBhZnRlciBjcmVhdGluZyB0aGUgY2xhc3Mgb2JqZWN0OgorCisqIGZpcnN0LCBgYHR5cGUuX19uZXdfX2BgIGNvbGxlY3RzIGFsbCBvZiB0aGUgZGVzY3JpcHRvcnMgaW4gdGhlIGNsYXNzCisgIG5hbWVzcGFjZSB0aGF0IGRlZmluZSBhIDptZXRoOmB+b2JqZWN0Ll9fc2V0X25hbWVfX2AgbWV0aG9kOworKiBzZWNvbmQsIGFsbCBvZiB0aGVzZSBgYF9fc2V0X25hbWVfX2BgIG1ldGhvZHMgYXJlIGNhbGxlZCB3aXRoIHRoZSBjbGFzcworICBiZWluZyBkZWZpbmVkIGFuZCB0aGUgYXNzaWduZWQgbmFtZSBvZiB0aGF0IHBhcnRpY3VsYXIgZGVzY3JpcHRvcjsgYW5kCisqIGZpbmFsbHksIHRoZSA6bWV0aDpgfm9iamVjdC5fX2luaXRfc3ViY2xhc3NfX2AgaG9vayBpcyBjYWxsZWQgb24gdGhlCisgIGltbWVkaWF0ZSBwYXJlbnQgb2YgdGhlIG5ldyBjbGFzcyBpbiBpdHMgbWV0aG9kIHJlc29sdXRpb24gb3JkZXIuCisKIEFmdGVyIHRoZSBjbGFzcyBvYmplY3QgaXMgY3JlYXRlZCwgaXQgaXMgcGFzc2VkIHRvIHRoZSBjbGFzcyBkZWNvcmF0b3JzCiBpbmNsdWRlZCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiAoaWYgYW55KSBhbmQgdGhlIHJlc3VsdGluZyBvYmplY3QgaXMgYm91bmQKIGluIHRoZSBsb2NhbCBuYW1lc3BhY2UgYXMgdGhlIGRlZmluZWQgY2xhc3MuCiAKIFdoZW4gYSBuZXcgY2xhc3MgaXMgY3JlYXRlZCBieSBgYHR5cGUuX19uZXdfX2BgLCB0aGUgb2JqZWN0IHByb3ZpZGVkIGFzIHRoZQotbmFtZXNwYWNlIHBhcmFtZXRlciBpcyBjb3BpZWQgdG8gYSBzdGFuZGFyZCBQeXRob24gZGljdGlvbmFyeSBhbmQgdGhlIG9yaWdpbmFsCi1vYmplY3QgaXMgZGlzY2FyZGVkLiBUaGUgbmV3IGNvcHkgYmVjb21lcyB0aGUgOmF0dHI6YH5vYmplY3QuX19kaWN0X19gIGF0dHJpYnV0ZQotb2YgdGhlIGNsYXNzIG9iamVjdC4KK25hbWVzcGFjZSBwYXJhbWV0ZXIgaXMgY29waWVkIHRvIGEgbmV3IG9yZGVyZWQgbWFwcGluZyBhbmQgdGhlIG9yaWdpbmFsCitvYmplY3QgaXMgZGlzY2FyZGVkLiBUaGUgbmV3IGNvcHkgaXMgd3JhcHBlZCBpbiBhIHJlYWQtb25seSBwcm94eSwgd2hpY2gKK2JlY29tZXMgdGhlIDphdHRyOmB+b2JqZWN0Ll9fZGljdF9fYCBhdHRyaWJ1dGUgb2YgdGhlIGNsYXNzIG9iamVjdC4KIAogLi4gc2VlYWxzbzo6CiAKQEAgLTIwNjIsNyArMjE4Nyw3IEBACiAgICAoYGArYGAsIGBgLWBgLCBgYCpgYCwgYGBAYGAsIGBgL2BgLCBgYC8vYGAsIGBgJWBgLCA6ZnVuYzpgZGl2bW9kYCwKICAgIDpmdW5jOmBwb3dgLCBgYCoqYGAsIGBgPDxgYCwgYGA+PmBgLCBgYCZgYCwgYGBeYGAsIGBgfGBgKSB3aXRoIHJlZmxlY3RlZAogICAgKHN3YXBwZWQpIG9wZXJhbmRzLiAgVGhlc2UgZnVuY3Rpb25zIGFyZSBvbmx5IGNhbGxlZCBpZiB0aGUgbGVmdCBvcGVyYW5kIGRvZXMKLSAgIG5vdCBzdXBwb3J0IHRoZSBjb3JyZXNwb25kaW5nIG9wZXJhdGlvbiBhbmQgdGhlIG9wZXJhbmRzIGFyZSBvZiBkaWZmZXJlbnQKKyAgIG5vdCBzdXBwb3J0IHRoZSBjb3JyZXNwb25kaW5nIG9wZXJhdGlvbiBbI11fIGFuZCB0aGUgb3BlcmFuZHMgYXJlIG9mIGRpZmZlcmVudAogICAgdHlwZXMuIFsjXV8gRm9yIGluc3RhbmNlLCB0byBldmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiBgYHggLSB5YGAsIHdoZXJlICp5KiBpcwogICAgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB0aGF0IGhhcyBhbiA6bWV0aDpgX19yc3ViX19gIG1ldGhvZCwgYGB5Ll9fcnN1Yl9fKHgpYGAKICAgIGlzIGNhbGxlZCBpZiBgYHguX19zdWJfXyh5KWBgIHJldHVybnMgKk5vdEltcGxlbWVudGVkKi4KQEAgLTI0NzgsNiArMjYwMywxNyBAQAogICAgY29udHJvbGxlZCBjb25kaXRpb25zLiBJdCBnZW5lcmFsbHkgaXNuJ3QgYSBnb29kIGlkZWEgdGhvdWdoLCBzaW5jZSBpdCBjYW4KICAgIGxlYWQgdG8gc29tZSB2ZXJ5IHN0cmFuZ2UgYmVoYXZpb3VyIGlmIGl0IGlzIGhhbmRsZWQgaW5jb3JyZWN0bHkuCiAKKy4uIFsjXSBUaGUgOm1ldGg6YF9faGFzaF9fYCwgOm1ldGg6YF9faXRlcl9fYCwgOm1ldGg6YF9fcmV2ZXJzZWRfX2AsIGFuZAorICAgOm1ldGg6YF9fY29udGFpbnNfX2AgbWV0aG9kcyBoYXZlIHNwZWNpYWwgaGFuZGxpbmcgZm9yIHRoaXM7IG90aGVycworICAgd2lsbCBzdGlsbCByYWlzZSBhIDpleGM6YFR5cGVFcnJvcmAsIGJ1dCBtYXkgZG8gc28gYnkgcmVseWluZyBvbgorICAgdGhlIGJlaGF2aW9yIHRoYXQgYGBOb25lYGAgaXMgbm90IGNhbGxhYmxlLgorCisuLiBbI10gIkRvZXMgbm90IHN1cHBvcnQiIGhlcmUgbWVhbnMgdGhhdCB0aGUgY2xhc3MgaGFzIG5vIHN1Y2ggbWV0aG9kLCBvcgorICAgdGhlIG1ldGhvZCByZXR1cm5zIGBgTm90SW1wbGVtZW50ZWRgYC4gIERvIG5vdCBzZXQgdGhlIG1ldGhvZCB0bworICAgYGBOb25lYGAgaWYgeW91IHdhbnQgdG8gZm9yY2UgZmFsbGJhY2sgdG8gdGhlIHJpZ2h0IG9wZXJhbmQncyByZWZsZWN0ZWQKKyAgIG1ldGhvZOKAlHRoYXQgd2lsbCBpbnN0ZWFkIGhhdmUgdGhlIG9wcG9zaXRlIGVmZmVjdCBvZiBleHBsaWNpdGx5CisgICAqYmxvY2tpbmcqIHN1Y2ggZmFsbGJhY2suCisKIC4uIFsjXSBGb3Igb3BlcmFuZHMgb2YgdGhlIHNhbWUgdHlwZSwgaXQgaXMgYXNzdW1lZCB0aGF0IGlmIHRoZSBub24tcmVmbGVjdGVkIG1ldGhvZAogICAgKHN1Y2ggYXMgOm1ldGg6YF9fYWRkX19gKSBmYWlscyB0aGUgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQsIHdoaWNoIGlzIHdoeSB0aGUKICAgIHJlZmxlY3RlZCBtZXRob2QgaXMgbm90IGNhbGxlZC4KZGlmZiAtLWdpdCBhL0RvYy9yZWZlcmVuY2UvZXhwcmVzc2lvbnMucnN0IGIvRG9jL3JlZmVyZW5jZS9leHByZXNzaW9ucy5yc3QKaW5kZXggMDg5MzhiMi4uMzljMzNiYyAxMDA2NDQKLS0tIGEvRG9jL3JlZmVyZW5jZS9leHByZXNzaW9ucy5yc3QKKysrIGIvRG9jL3JlZmVyZW5jZS9leHByZXNzaW9ucy5yc3QKQEAgLTE3Miw3ICsxNzIsNyBAQAogCiAuLiBwcm9kdWN0aW9ubGlzdDo6CiAgICBjb21wcmVoZW5zaW9uOiBgZXhwcmVzc2lvbmAgYGNvbXBfZm9yYAotICAgY29tcF9mb3I6ICJmb3IiIGB0YXJnZXRfbGlzdGAgImluIiBgb3JfdGVzdGAgW2Bjb21wX2l0ZXJgXQorICAgY29tcF9mb3I6IFtBU1lOQ10gImZvciIgYHRhcmdldF9saXN0YCAiaW4iIGBvcl90ZXN0YCBbYGNvbXBfaXRlcmBdCiAgICBjb21wX2l0ZXI6IGBjb21wX2ZvcmAgfCBgY29tcF9pZmAKICAgIGNvbXBfaWY6ICJpZiIgYGV4cHJlc3Npb25fbm9jb25kYCBbYGNvbXBfaXRlcmBdCiAKQEAgLTE4Niw2ICsxODYsMTcgQEAKIE5vdGUgdGhhdCB0aGUgY29tcHJlaGVuc2lvbiBpcyBleGVjdXRlZCBpbiBhIHNlcGFyYXRlIHNjb3BlLCBzbyBuYW1lcyBhc3NpZ25lZAogdG8gaW4gdGhlIHRhcmdldCBsaXN0IGRvbid0ICJsZWFrIiBpbnRvIHRoZSBlbmNsb3Npbmcgc2NvcGUuCiAKK1NpbmNlIFB5dGhvbiAzLjYsIGluIGFuIDprZXl3b3JkOmBhc3luYyBkZWZgIGZ1bmN0aW9uLCBhbiA6a2V5d29yZDpgYXN5bmMgZm9yYAorY2xhdXNlIG1heSBiZSB1c2VkIHRvIGl0ZXJhdGUgb3ZlciBhIDp0ZXJtOmBhc3luY2hyb25vdXMgaXRlcmF0b3JgLgorQSBjb21wcmVoZW5zaW9uIGluIGFuIDprZXl3b3JkOmBhc3luYyBkZWZgIGZ1bmN0aW9uIG1heSBjb25zaXN0IG9mIGVpdGhlciBhCis6a2V5d29yZDpgZm9yYCBvciA6a2V5d29yZDpgYXN5bmMgZm9yYCBjbGF1c2UgZm9sbG93aW5nIHRoZSBsZWFkaW5nCitleHByZXNzaW9uLCBtYXkgY29udGFuIGFkZGl0b25hbCA6a2V5d29yZDpgZm9yYCBvciA6a2V5d29yZDpgYXN5bmMgZm9yYAorY2xhdXNlcywgYW5kIG1heSBhbHNvIHVzZSA6a2V5d29yZDpgYXdhaXRgIGV4cHJlc3Npb25zLgorSWYgYSBjb21wcmVoZW5zaW9uIGNvbnRhaW5zIGVpdGhlciA6a2V5d29yZDpgYXN5bmMgZm9yYCBjbGF1c2VzCitvciA6a2V5d29yZDpgYXdhaXRgIGV4cHJlc3Npb25zIGl0IGlzIGNhbGxlZCBhbgorOmRmbjpgYXN5bmNocm9ub3VzIGNvbXByZWhlbnNpb25gLiAgQW4gYXN5bmNocm9ub3VzIGNvbXByZWhlbnNpb24gbWF5CitzdXNwZW5kIHRoZSBleGVjdXRpb24gb2YgdGhlIGNvcm91dGluZSBmdW5jdGlvbiBpbiB3aGljaCBpdCBhcHBlYXJzLgorU2VlIGFsc28gOnBlcDpgNTMwYC4KIAogLi4gX2xpc3RzOgogCkBAIC0zMTUsNiArMzI2LDE0IEBACiBUaGUgcGFyZW50aGVzZXMgY2FuIGJlIG9taXR0ZWQgb24gY2FsbHMgd2l0aCBvbmx5IG9uZSBhcmd1bWVudC4gIFNlZSBzZWN0aW9uCiA6cmVmOmBjYWxsc2AgZm9yIGRldGFpbHMuCiAKK1NpbmNlIFB5dGhvbiAzLjYsIGlmIHRoZSBnZW5lcmF0b3IgYXBwZWFycyBpbiBhbiA6a2V5d29yZDpgYXN5bmMgZGVmYCBmdW5jdGlvbiwKK3RoZW4gOmtleXdvcmQ6YGFzeW5jIGZvcmAgY2xhdXNlcyBhbmQgOmtleXdvcmQ6YGF3YWl0YCBleHByZXNzaW9ucyBhcmUgcGVybWl0dGVkCithcyB3aXRoIGFuIGFzeW5jaHJvbm91cyBjb21wcmVoZW5zaW9uLiAgSWYgYSBnZW5lcmF0b3IgZXhwcmVzc2lvbgorY29udGFpbnMgZWl0aGVyIDprZXl3b3JkOmBhc3luYyBmb3JgIGNsYXVzZXMgb3IgOmtleXdvcmQ6YGF3YWl0YCBleHByZXNzaW9ucworaXQgaXMgY2FsbGVkIGFuIDpkZm46YGFzeW5jaHJvbm91cyBnZW5lcmF0b3IgZXhwcmVzc2lvbmAuCitBbiBhc3luY2hyb25vdXMgZ2VuZXJhdG9yIGV4cHJlc3Npb24geWllbGRzIGEgbmV3IGFzeW5jaHJvbm91cworZ2VuZXJhdG9yIG9iamVjdCwgd2hpY2ggaXMgYW4gYXN5bmNocm9ub3VzIGl0ZXJhdG9yCisoc2VlIDpyZWY6YGFzeW5jLWl0ZXJhdG9yc2ApLgogCiAuLiBfeWllbGRleHByOgogCkBAIC0zMzAsOSArMzQ5LDIyIEBACiAgICB5aWVsZF9hdG9tOiAiKCIgYHlpZWxkX2V4cHJlc3Npb25gICIpIgogICAgeWllbGRfZXhwcmVzc2lvbjogInlpZWxkIiBbYGV4cHJlc3Npb25fbGlzdGAgfCAiZnJvbSIgYGV4cHJlc3Npb25gXQogCi1UaGUgeWllbGQgZXhwcmVzc2lvbiBpcyBvbmx5IHVzZWQgd2hlbiBkZWZpbmluZyBhIDp0ZXJtOmBnZW5lcmF0b3JgIGZ1bmN0aW9uIGFuZAorVGhlIHlpZWxkIGV4cHJlc3Npb24gaXMgdXNlZCB3aGVuIGRlZmluaW5nIGEgOnRlcm06YGdlbmVyYXRvcmAgZnVuY3Rpb24KK29yIGFuIDp0ZXJtOmBhc3luY2hyb25vdXMgZ2VuZXJhdG9yYCBmdW5jdGlvbiBhbmQKIHRodXMgY2FuIG9ubHkgYmUgdXNlZCBpbiB0aGUgYm9keSBvZiBhIGZ1bmN0aW9uIGRlZmluaXRpb24uICBVc2luZyBhIHlpZWxkCi1leHByZXNzaW9uIGluIGEgZnVuY3Rpb24ncyBib2R5IGNhdXNlcyB0aGF0IGZ1bmN0aW9uIHRvIGJlIGEgZ2VuZXJhdG9yLgorZXhwcmVzc2lvbiBpbiBhIGZ1bmN0aW9uJ3MgYm9keSBjYXVzZXMgdGhhdCBmdW5jdGlvbiB0byBiZSBhIGdlbmVyYXRvciwKK2FuZCB1c2luZyBpdCBpbiBhbiA6a2V5d29yZDpgYXN5bmMgZGVmYCBmdW5jdGlvbidzIGJvZHkgY2F1c2VzIHRoYXQKK2Nvcm91dGluZSBmdW5jdGlvbiB0byBiZSBhbiBhc3luY2hyb25vdXMgZ2VuZXJhdG9yLiBGb3IgZXhhbXBsZTo6CisKKyAgICBkZWYgZ2VuKCk6ICAjIGRlZmluZXMgYSBnZW5lcmF0b3IgZnVuY3Rpb24KKyAgICAgICAgeWllbGQgMTIzCisKKyAgICBhc3luYyBkZWYgYWdlbigpOiAjIGRlZmluZXMgYW4gYXN5bmNocm9ub3VzIGdlbmVyYXRvciBmdW5jdGlvbiAoUEVQIDUyNSkKKyAgICAgICAgeWllbGQgMTIzCisKK0dlbmVyYXRvciBmdW5jdGlvbnMgYXJlIGRlc2NyaWJlZCBiZWxvdywgd2hpbGUgYXN5bmNocm9ub3VzIGdlbmVyYXRvcgorZnVuY3Rpb25zIGFyZSBkZXNjcmliZWQgc2VwYXJhdGVseSBpbiBzZWN0aW9uCis6cmVmOmBhc3luY2hyb25vdXMtZ2VuZXJhdG9yLWZ1bmN0aW9uc2AuCiAKIFdoZW4gYSBnZW5lcmF0b3IgZnVuY3Rpb24gaXMgY2FsbGVkLCBpdCByZXR1cm5zIGFuIGl0ZXJhdG9yIGtub3duIGFzIGEKIGdlbmVyYXRvci4gIFRoYXQgZ2VuZXJhdG9yIHRoZW4gY29udHJvbHMgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgZ2VuZXJhdG9yIGZ1bmN0aW9uLgpAQCAtNDk2LDYgKzUyOCwxMzQgQEAKIEZvciBleGFtcGxlcyB1c2luZyBgYHlpZWxkIGZyb21gYCwgc2VlIDpyZWY6YHBlcC0zODBgIGluICJXaGF0J3MgTmV3IGluCiBQeXRob24uIgogCisuLiBfYXN5bmNocm9ub3VzLWdlbmVyYXRvci1mdW5jdGlvbnM6CisKK0FzeW5jaHJvbm91cyBnZW5lcmF0b3IgZnVuY3Rpb25zCiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorCitUaGUgcHJlc2VuY2Ugb2YgYSB5aWVsZCBleHByZXNzaW9uIGluIGEgZnVuY3Rpb24gb3IgbWV0aG9kIGRlZmluZWQgdXNpbmcKKzprZXl3b3JkOmBhc3luYyBkZWZgIGZ1cnRoZXIgZGVmaW5lcyB0aGUgZnVuY3Rpb24gYXMgYQorOnRlcm06YGFzeW5jaHJvbm91cyBnZW5lcmF0b3JgIGZ1bmN0aW9uLgorCitXaGVuIGFuIGFzeW5jaHJvbm91cyBnZW5lcmF0b3IgZnVuY3Rpb24gaXMgY2FsbGVkLCBpdCByZXR1cm5zIGFuCithc3luY2hyb25vdXMgaXRlcmF0b3Iga25vd24gYXMgYW4gYXN5bmNocm9ub3VzIGdlbmVyYXRvciBvYmplY3QuCitUaGF0IG9iamVjdCB0aGVuIGNvbnRyb2xzIHRoZSBleGVjdXRpb24gb2YgdGhlIGdlbmVyYXRvciBmdW5jdGlvbi4KK0FuIGFzeW5jaHJvbm91cyBnZW5lcmF0b3Igb2JqZWN0IGlzIHR5cGljYWxseSB1c2VkIGluIGFuCis6a2V5d29yZDpgYXN5bmMgZm9yYCBzdGF0ZW1lbnQgaW4gYSBjb3JvdXRpbmUgZnVuY3Rpb24gYW5hbG9nb3VzbHkgdG8KK2hvdyBhIGdlbmVyYXRvciBvYmplY3Qgd291bGQgYmUgdXNlZCBpbiBhIDprZXl3b3JkOmBmb3JgIHN0YXRlbWVudC4KKworQ2FsbGluZyBvbmUgb2YgdGhlIGFzeW5jaHJvbm91cyBnZW5lcmF0b3IncyBtZXRob2RzIHJldHVybnMgYW4KKzp0ZXJtOmBhd2FpdGFibGVgIG9iamVjdCwgYW5kIHRoZSBleGVjdXRpb24gc3RhcnRzIHdoZW4gdGhpcyBvYmplY3QKK2lzIGF3YWl0ZWQgb24uIEF0IHRoYXQgdGltZSwgdGhlIGV4ZWN1dGlvbiBwcm9jZWVkcyB0byB0aGUgZmlyc3QgeWllbGQKK2V4cHJlc3Npb24sIHdoZXJlIGl0IGlzIHN1c3BlbmRlZCBhZ2FpbiwgcmV0dXJuaW5nIHRoZSB2YWx1ZSBvZgorOnRva2VuOmBleHByZXNzaW9uX2xpc3RgIHRvIHRoZSBhd2FpdGluZyBjb3JvdXRpbmUuIEFzIHdpdGggYSBnZW5lcmF0b3IsCitzdXNwZW5zaW9uIG1lYW5zIHRoYXQgYWxsIGxvY2FsIHN0YXRlIGlzIHJldGFpbmVkLCBpbmNsdWRpbmcgdGhlCitjdXJyZW50IGJpbmRpbmdzIG9mIGxvY2FsIHZhcmlhYmxlcywgdGhlIGluc3RydWN0aW9uIHBvaW50ZXIsIHRoZSBpbnRlcm5hbAorZXZhbHVhdGlvbiBzdGFjaywgYW5kIHRoZSBzdGF0ZSBvZiBhbnkgZXhjZXB0aW9uIGhhbmRsaW5nLiAgV2hlbiB0aGUgZXhlY3V0aW9uCitpcyByZXN1bWVkIGJ5IGF3YWl0aW5nIG9uIHRoZSBuZXh0IG9iamVjdCByZXR1cm5lZCBieSB0aGUgYXN5bmNocm9ub3VzCitnZW5lcmF0b3IncyBtZXRob2RzLCB0aGUgZnVuY3Rpb24gY2FuIHByb2NlZWQgZXhhY3RseSBhcyBpZiB0aGUgeWllbGQKK2V4cHJlc3Npb24gd2VyZSBqdXN0IGFub3RoZXIgZXh0ZXJuYWwgY2FsbC4gVGhlIHZhbHVlIG9mIHRoZSB5aWVsZCBleHByZXNzaW9uCithZnRlciByZXN1bWluZyBkZXBlbmRzIG9uIHRoZSBtZXRob2Qgd2hpY2ggcmVzdW1lZCB0aGUgZXhlY3V0aW9uLiAgSWYKKzptZXRoOmB+YWdlbi5fX2FuZXh0X19gIGlzIHVzZWQgdGhlbiB0aGUgcmVzdWx0IGlzIDpjb25zdDpgTm9uZWAuIE90aGVyd2lzZSwgaWYKKzptZXRoOmB+YWdlbi5hc2VuZGAgaXMgdXNlZCwgdGhlbiB0aGUgcmVzdWx0IHdpbGwgYmUgdGhlIHZhbHVlIHBhc3NlZCBpbiB0bwordGhhdCBtZXRob2QuCisKK0luIGFuIGFzeW5jaHJvbm91cyBnZW5lcmF0b3IgZnVuY3Rpb24sIHlpZWxkIGV4cHJlc3Npb25zIGFyZSBhbGxvd2VkIGFueXdoZXJlCitpbiBhIDprZXl3b3JkOmB0cnlgIGNvbnN0cnVjdC4gSG93ZXZlciwgaWYgYW4gYXN5bmNocm9ub3VzIGdlbmVyYXRvciBpcyBub3QKK3Jlc3VtZWQgYmVmb3JlIGl0IGlzIGZpbmFsaXplZCAoYnkgcmVhY2hpbmcgYSB6ZXJvIHJlZmVyZW5jZSBjb3VudCBvciBieQorYmVpbmcgZ2FyYmFnZSBjb2xsZWN0ZWQpLCB0aGVuIGEgeWllbGQgZXhwcmVzc2lvbiB3aXRoaW4gYSA6a2V5d29yZDpgdHJ5YAorY29uc3RydWN0IGNvdWxkIHJlc3VsdCBpbiBhIGZhaWx1cmUgdG8gZXhlY3V0ZSBwZW5kaW5nIDprZXl3b3JkOmBmaW5hbGx5YAorY2xhdXNlcy4gIEluIHRoaXMgY2FzZSwgaXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBldmVudCBsb29wIG9yCitzY2hlZHVsZXIgcnVubmluZyB0aGUgYXN5bmNocm9ub3VzIGdlbmVyYXRvciB0byBjYWxsIHRoZSBhc3luY2hyb25vdXMKK2dlbmVyYXRvci1pdGVyYXRvcidzIDptZXRoOmB+YWdlbi5hY2xvc2VgIG1ldGhvZCBhbmQgcnVuIHRoZSByZXN1bHRpbmcKK2Nvcm91dGluZSBvYmplY3QsIHRodXMgYWxsb3dpbmcgYW55IHBlbmRpbmcgOmtleXdvcmQ6YGZpbmFsbHlgIGNsYXVzZXMKK3RvIGV4ZWN1dGUuCisKK1RvIHRha2UgY2FyZSBvZiBmaW5hbGl6YXRpb24sIGFuIGV2ZW50IGxvb3Agc2hvdWxkIGRlZmluZQorYSAqZmluYWxpemVyKiBmdW5jdGlvbiB3aGljaCB0YWtlcyBhbiBhc3luY2hyb25vdXMgZ2VuZXJhdG9yLWl0ZXJhdG9yCithbmQgcHJlc3VtYWJseSBjYWxscyA6bWV0aDpgfmFnZW4uYWNsb3NlYCBhbmQgZXhlY3V0ZXMgdGhlIGNvcm91dGluZS4KK1RoaXMgICpmaW5hbGl6ZXIqIG1heSBiZSByZWdpc3RlcmVkIGJ5IGNhbGxpbmcgOmZ1bmM6YHN5cy5zZXRfYXN5bmNnZW5faG9va3NgLgorV2hlbiBmaXJzdCBpdGVyYXRlZCBvdmVyLCBhbiBhc3luY2hyb25vdXMgZ2VuZXJhdG9yLWl0ZXJhdG9yIHdpbGwgc3RvcmUgdGhlCityZWdpc3RlcmVkICpmaW5hbGl6ZXIqIHRvIGJlIGNhbGxlZCB1cG9uIGZpbmFsaXphdGlvbi4gRm9yIGEgcmVmZXJlbmNlIGV4YW1wbGUKK29mIGEgKmZpbmFsaXplciogbWV0aG9kIHNlZSB0aGUgaW1wbGVtZW50YXRpb24gb2YKK2BgYXN5bmNpby5Mb29wLnNodXRkb3duX2FzeW5jZ2Vuc2BgIGluIDpzb3VyY2U6YExpYi9hc3luY2lvL2Jhc2VfZXZlbnRzLnB5YC4KKworVGhlIGV4cHJlc3Npb24gYGB5aWVsZCBmcm9tIDxleHByPmBgIGlzIGEgc3ludGF4IGVycm9yIHdoZW4gdXNlZCBpbiBhbgorYXN5bmNocm9ub3VzIGdlbmVyYXRvciBmdW5jdGlvbi4KKworLi4gaW5kZXg6OiBvYmplY3Q6IGFzeW5jaHJvbm91cy1nZW5lcmF0b3IKKy4uIF9hc3luY2hyb25vdXMtZ2VuZXJhdG9yLW1ldGhvZHM6CisKK0FzeW5jaHJvbm91cyBnZW5lcmF0b3ItaXRlcmF0b3IgbWV0aG9kcworXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKK1RoaXMgc3Vic2VjdGlvbiBkZXNjcmliZXMgdGhlIG1ldGhvZHMgb2YgYW4gYXN5bmNocm9ub3VzIGdlbmVyYXRvciBpdGVyYXRvciwKK3doaWNoIGFyZSB1c2VkIHRvIGNvbnRyb2wgdGhlIGV4ZWN1dGlvbiBvZiBhIGdlbmVyYXRvciBmdW5jdGlvbi4KKworCisuLiBpbmRleDo6IGV4Y2VwdGlvbjogU3RvcEFzeW5jSXRlcmF0aW9uCisKKy4uIGNvcm91dGluZW1ldGhvZDo6IGFnZW4uX19hbmV4dF9fKCkKKworICAgUmV0dXJucyBhbiBhd2FpdGFibGUgd2hpY2ggd2hlbiBydW4gc3RhcnRzIHRvIGV4ZWN1dGUgdGhlIGFzeW5jaHJvbm91cworICAgZ2VuZXJhdG9yIG9yIHJlc3VtZXMgaXQgYXQgdGhlIGxhc3QgZXhlY3V0ZWQgeWllbGQgZXhwcmVzc2lvbi4gIFdoZW4gYW4KKyAgIGFzeW5jaHJvbm91cyBnZW5lcmF0b3IgZnVuY3Rpb24gaXMgcmVzdW1lZCB3aXRoIGEgOm1ldGg6YH5hZ2VuLl9fYW5leHRfX2AKKyAgIG1ldGhvZCwgdGhlIGN1cnJlbnQgeWllbGQgZXhwcmVzc2lvbiBhbHdheXMgZXZhbHVhdGVzIHRvIDpjb25zdDpgTm9uZWAgaW4KKyAgIHRoZSByZXR1cm5lZCBhd2FpdGFibGUsIHdoaWNoIHdoZW4gcnVuIHdpbGwgY29udGludWUgdG8gdGhlIG5leHQgeWllbGQKKyAgIGV4cHJlc3Npb24uIFRoZSB2YWx1ZSBvZiB0aGUgOnRva2VuOmBleHByZXNzaW9uX2xpc3RgIG9mIHRoZSB5aWVsZAorICAgZXhwcmVzc2lvbiBpcyB0aGUgdmFsdWUgb2YgdGhlIDpleGM6YFN0b3BJdGVyYXRpb25gIGV4Y2VwdGlvbiByYWlzZWQgYnkKKyAgIHRoZSBjb21wbGV0aW5nIGNvcm91dGluZS4gIElmIHRoZSBhc3luY2hyb25vdXMgZ2VuZXJhdG9yIGV4aXRzIHdpdGhvdXQKKyAgIHlpZWxkaW5nIGFub3RoZXIgdmFsdWUsIHRoZSBhd2FpdGFibGUgaW5zdGVhZCByYWlzZXMgYW4KKyAgIDpleGM6YFN0b3BBc3luY0l0ZXJhdGlvbmAgZXhjZXB0aW9uLCBzaWduYWxsaW5nIHRoYXQgdGhlIGFzeW5jaHJvbm91cworICAgaXRlcmF0aW9uIGhhcyBjb21wbGV0ZWQuCisKKyAgIFRoaXMgbWV0aG9kIGlzIG5vcm1hbGx5IGNhbGxlZCBpbXBsaWNpdGx5IGJ5IGEgOmtleXdvcmQ6YGFzeW5jIGZvcmAgbG9vcC4KKworCisuLiBjb3JvdXRpbmVtZXRob2Q6OiBhZ2VuLmFzZW5kKHZhbHVlKQorCisgICBSZXR1cm5zIGFuIGF3YWl0YWJsZSB3aGljaCB3aGVuIHJ1biByZXN1bWVzIHRoZSBleGVjdXRpb24gb2YgdGhlCisgICBhc3luY2hyb25vdXMgZ2VuZXJhdG9yLiBBcyB3aXRoIHRoZSA6bWV0aDpgfmdlbmVyYXRvci5zZW5kKClgIG1ldGhvZCBmb3IgYQorICAgZ2VuZXJhdG9yLCB0aGlzICJzZW5kcyIgYSB2YWx1ZSBpbnRvIHRoZSBhc3luY2hyb25vdXMgZ2VuZXJhdG9yIGZ1bmN0aW9uLAorICAgYW5kIHRoZSAqdmFsdWUqIGFyZ3VtZW50IGJlY29tZXMgdGhlIHJlc3VsdCBvZiB0aGUgY3VycmVudCB5aWVsZCBleHByZXNzaW9uLgorICAgVGhlIGF3YWl0YWJsZSByZXR1cm5lZCBieSB0aGUgOm1ldGg6YGFzZW5kYCBtZXRob2Qgd2lsbCByZXR1cm4gdGhlIG5leHQKKyAgIHZhbHVlIHlpZWxkZWQgYnkgdGhlIGdlbmVyYXRvciBhcyB0aGUgdmFsdWUgb2YgdGhlIHJhaXNlZAorICAgOmV4YzpgU3RvcEl0ZXJhdGlvbmAsIG9yIHJhaXNlcyA6ZXhjOmBTdG9wQXN5bmNJdGVyYXRpb25gIGlmIHRoZQorICAgYXN5bmNocm9ub3VzIGdlbmVyYXRvciBleGl0cyB3aXRob3V0IHlpZWxkaW5nIGFub3RoZXIgdmFsdWUuICBXaGVuCisgICA6bWV0aDpgYXNlbmRgIGlzIGNhbGxlZCB0byBzdGFydCB0aGUgYXN5bmNocm9ub3VzCisgICBnZW5lcmF0b3IsIGl0IG11c3QgYmUgY2FsbGVkIHdpdGggOmNvbnN0OmBOb25lYCBhcyB0aGUgYXJndW1lbnQsCisgICBiZWNhdXNlIHRoZXJlIGlzIG5vIHlpZWxkIGV4cHJlc3Npb24gdGhhdCBjb3VsZCByZWNlaXZlIHRoZSB2YWx1ZS4KKworCisuLiBjb3JvdXRpbmVtZXRob2Q6OiBhZ2VuLmF0aHJvdyh0eXBlWywgdmFsdWVbLCB0cmFjZWJhY2tdXSkKKworICAgUmV0dXJucyBhbiBhd2FpdGFibGUgdGhhdCByYWlzZXMgYW4gZXhjZXB0aW9uIG9mIHR5cGUgYGB0eXBlYGAgYXQgdGhlIHBvaW50CisgICB3aGVyZSB0aGUgYXN5bmNocm9ub3VzIGdlbmVyYXRvciB3YXMgcGF1c2VkLCBhbmQgcmV0dXJucyB0aGUgbmV4dCB2YWx1ZQorICAgeWllbGRlZCBieSB0aGUgZ2VuZXJhdG9yIGZ1bmN0aW9uIGFzIHRoZSB2YWx1ZSBvZiB0aGUgcmFpc2VkCisgICA6ZXhjOmBTdG9wSXRlcmF0aW9uYCBleGNlcHRpb24uICBJZiB0aGUgYXN5bmNocm9ub3VzIGdlbmVyYXRvciBleGl0cworICAgd2l0aG91dCB5aWVsZGluZyBhbm90aGVyIHZhbHVlLCBhbiA6ZXhjOmBTdG9wQXN5bmNJdGVyYXRpb25gIGV4Y2VwdGlvbiBpcworICAgcmFpc2VkIGJ5IHRoZSBhd2FpdGFibGUuCisgICBJZiB0aGUgZ2VuZXJhdG9yIGZ1bmN0aW9uIGRvZXMgbm90IGNhdGNoIHRoZSBwYXNzZWQtaW4gZXhjZXB0aW9uLCBvcgorICAgcmFpc2VzIGEgZGlmZmVyZW50IGV4Y2VwdGlvbiwgdGhlbiB3aGVuIHRoZSBhd2FpdGFsYmUgaXMgcnVuIHRoYXQgZXhjZXB0aW9uCisgICBwcm9wYWdhdGVzIHRvIHRoZSBjYWxsZXIgb2YgdGhlIGF3YWl0YWJsZS4KKworLi4gaW5kZXg6OiBleGNlcHRpb246IEdlbmVyYXRvckV4aXQKKworCisuLiBjb3JvdXRpbmVtZXRob2Q6OiBhZ2VuLmFjbG9zZSgpCisKKyAgIFJldHVybnMgYW4gYXdhaXRhYmxlIHRoYXQgd2hlbiBydW4gd2lsbCB0aHJvdyBhIDpleGM6YEdlbmVyYXRvckV4aXRgIGludG8KKyAgIHRoZSBhc3luY2hyb25vdXMgZ2VuZXJhdG9yIGZ1bmN0aW9uIGF0IHRoZSBwb2ludCB3aGVyZSBpdCB3YXMgcGF1c2VkLgorICAgSWYgdGhlIGFzeW5jaHJvbm91cyBnZW5lcmF0b3IgZnVuY3Rpb24gdGhlbiBleGl0cyBncmFjZWZ1bGx5LCBpcyBhbHJlYWR5CisgICBjbG9zZWQsIG9yIHJhaXNlcyA6ZXhjOmBHZW5lcmF0b3JFeGl0YCAoYnkgbm90IGNhdGNoaW5nIHRoZSBleGNlcHRpb24pLAorICAgdGhlbiB0aGUgcmV0dXJuZWQgYXdhaXRhYmxlIHdpbGwgcmFpc2UgYSA6ZXhjOmBTdG9wSXRlcmF0aW9uYCBleGNlcHRpb24uCisgICBBbnkgZnVydGhlciBhd2FpdGFibGVzIHJldHVybmVkIGJ5IHN1YnNlcXVlbnQgY2FsbHMgdG8gdGhlIGFzeW5jaHJvbm91cworICAgZ2VuZXJhdG9yIHdpbGwgcmFpc2UgYSA6ZXhjOmBTdG9wQXN5bmNJdGVyYXRpb25gIGV4Y2VwdGlvbi4gIElmIHRoZQorICAgYXN5bmNocm9ub3VzIGdlbmVyYXRvciB5aWVsZHMgYSB2YWx1ZSwgYSA6ZXhjOmBSdW50aW1lRXJyb3JgIGlzIHJhaXNlZAorICAgYnkgdGhlIGF3YWl0YWJsZS4gIElmIHRoZSBhc3luY2hyb25vdXMgZ2VuZXJhdG9yIHJhaXNlcyBhbnkgb3RoZXIgZXhjZXB0aW9uLAorICAgaXQgaXMgcHJvcGFnYXRlZCB0byB0aGUgY2FsbGVyIG9mIHRoZSBhd2FpdGFibGUuICBJZiB0aGUgYXN5bmNocm9ub3VzCisgICBnZW5lcmF0b3IgaGFzIGFscmVhZHkgZXhpdGVkIGR1ZSB0byBhbiBleGNlcHRpb24gb3Igbm9ybWFsIGV4aXQsIHRoZW4KKyAgIGZ1cnRoZXIgY2FsbHMgdG8gOm1ldGg6YGFjbG9zZWAgd2lsbCByZXR1cm4gYW4gYXdhaXRhYmxlIHRoYXQgZG9lcyBub3RoaW5nLgogCiAuLiBfcHJpbWFyaWVzOgogCmRpZmYgLS1naXQgYS9Eb2MvcmVmZXJlbmNlL2ltcG9ydC5yc3QgYi9Eb2MvcmVmZXJlbmNlL2ltcG9ydC5yc3QKaW5kZXggNjQzMDJiOC4uNWUyYzFjOCAxMDA2NDQKLS0tIGEvRG9jL3JlZmVyZW5jZS9pbXBvcnQucnN0CisrKyBiL0RvYy9yZWZlcmVuY2UvaW1wb3J0LnJzdApAQCAtMzYsNyArMzYsNyBAQAogCiBXaGVuIGEgbW9kdWxlIGlzIGZpcnN0IGltcG9ydGVkLCBQeXRob24gc2VhcmNoZXMgZm9yIHRoZSBtb2R1bGUgYW5kIGlmIGZvdW5kLAogaXQgY3JlYXRlcyBhIG1vZHVsZSBvYmplY3QgWyNmbm1vXV8sIGluaXRpYWxpemluZyBpdC4gIElmIHRoZSBuYW1lZCBtb2R1bGUKLWNhbm5vdCBiZSBmb3VuZCwgYW4gOmV4YzpgSW1wb3J0RXJyb3JgIGlzIHJhaXNlZC4gIFB5dGhvbiBpbXBsZW1lbnRzIHZhcmlvdXMKK2Nhbm5vdCBiZSBmb3VuZCwgYW4gOmV4YzpgTW9kdWxlTm90Rm91bmRFcnJvcmAgaXMgcmFpc2VkLiAgUHl0aG9uIGltcGxlbWVudHMgdmFyaW91cwogc3RyYXRlZ2llcyB0byBzZWFyY2ggZm9yIHRoZSBuYW1lZCBtb2R1bGUgd2hlbiB0aGUgaW1wb3J0IG1hY2hpbmVyeSBpcwogaW52b2tlZC4gIFRoZXNlIHN0cmF0ZWdpZXMgY2FuIGJlIG1vZGlmaWVkIGFuZCBleHRlbmRlZCBieSB1c2luZyB2YXJpb3VzIGhvb2tzCiBkZXNjcmliZWQgaW4gdGhlIHNlY3Rpb25zIGJlbG93LgpAQCAtMTY3LDcgKzE2Nyw3IEBACiBUaGlzIG5hbWUgd2lsbCBiZSB1c2VkIGluIHZhcmlvdXMgcGhhc2VzIG9mIHRoZSBpbXBvcnQgc2VhcmNoLCBhbmQgaXQgbWF5IGJlCiB0aGUgZG90dGVkIHBhdGggdG8gYSBzdWJtb2R1bGUsIGUuZy4gYGBmb28uYmFyLmJhemBgLiAgSW4gdGhpcyBjYXNlLCBQeXRob24KIGZpcnN0IHRyaWVzIHRvIGltcG9ydCBgYGZvb2BgLCB0aGVuIGBgZm9vLmJhcmBgLCBhbmQgZmluYWxseSBgYGZvby5iYXIuYmF6YGAuCi1JZiBhbnkgb2YgdGhlIGludGVybWVkaWF0ZSBpbXBvcnRzIGZhaWwsIGFuIDpleGM6YEltcG9ydEVycm9yYCBpcyByYWlzZWQuCitJZiBhbnkgb2YgdGhlIGludGVybWVkaWF0ZSBpbXBvcnRzIGZhaWwsIGFuIDpleGM6YE1vZHVsZU5vdEZvdW5kRXJyb3JgIGlzIHJhaXNlZC4KIAogCiBUaGUgbW9kdWxlIGNhY2hlCkBAIC0xODYsNyArMTg2LDcgQEAKIER1cmluZyBpbXBvcnQsIHRoZSBtb2R1bGUgbmFtZSBpcyBsb29rZWQgdXAgaW4gOmRhdGE6YHN5cy5tb2R1bGVzYCBhbmQgaWYKIHByZXNlbnQsIHRoZSBhc3NvY2lhdGVkIHZhbHVlIGlzIHRoZSBtb2R1bGUgc2F0aXNmeWluZyB0aGUgaW1wb3J0LCBhbmQgdGhlCiBwcm9jZXNzIGNvbXBsZXRlcy4gIEhvd2V2ZXIsIGlmIHRoZSB2YWx1ZSBpcyBgYE5vbmVgYCwgdGhlbiBhbgotOmV4YzpgSW1wb3J0RXJyb3JgIGlzIHJhaXNlZC4gIElmIHRoZSBtb2R1bGUgbmFtZSBpcyBtaXNzaW5nLCBQeXRob24gd2lsbAorOmV4YzpgTW9kdWxlTm90Rm91bmRFcnJvcmAgaXMgcmFpc2VkLiAgSWYgdGhlIG1vZHVsZSBuYW1lIGlzIG1pc3NpbmcsIFB5dGhvbiB3aWxsCiBjb250aW51ZSBzZWFyY2hpbmcgZm9yIHRoZSBtb2R1bGUuCiAKIDpkYXRhOmBzeXMubW9kdWxlc2AgaXMgd3JpdGFibGUuICBEZWxldGluZyBhIGtleSBtYXkgbm90IGRlc3Ryb3kgdGhlCkBAIC0xOTQsNyArMTk0LDcgQEAKIGJ1dCBpdCB3aWxsIGludmFsaWRhdGUgdGhlIGNhY2hlIGVudHJ5IGZvciB0aGUgbmFtZWQgbW9kdWxlLCBjYXVzaW5nCiBQeXRob24gdG8gc2VhcmNoIGFuZXcgZm9yIHRoZSBuYW1lZCBtb2R1bGUgdXBvbiBpdHMgbmV4dAogaW1wb3J0LiBUaGUga2V5IGNhbiBhbHNvIGJlIGFzc2lnbmVkIHRvIGBgTm9uZWBgLCBmb3JjaW5nIHRoZSBuZXh0IGltcG9ydAotb2YgdGhlIG1vZHVsZSB0byByZXN1bHQgaW4gYW4gOmV4YzpgSW1wb3J0RXJyb3JgLgorb2YgdGhlIG1vZHVsZSB0byByZXN1bHQgaW4gYW4gOmV4YzpgTW9kdWxlTm90Rm91bmRFcnJvcmAuCiAKIEJld2FyZSB0aG91Z2gsIGFzIGlmIHlvdSBrZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBtb2R1bGUgb2JqZWN0LAogaW52YWxpZGF0ZSBpdHMgY2FjaGUgZW50cnkgaW4gOmRhdGE6YHN5cy5tb2R1bGVzYCwgYW5kIHRoZW4gcmUtaW1wb3J0IHRoZQpAQCAtMjg4LDggKzI4OCw4IEBACiBJZiB0aGUgbWV0YSBwYXRoIGZpbmRlciBrbm93cyBob3cgdG8gaGFuZGxlIHRoZSBuYW1lZCBtb2R1bGUsIGl0IHJldHVybnMgYQogc3BlYyBvYmplY3QuICBJZiBpdCBjYW5ub3QgaGFuZGxlIHRoZSBuYW1lZCBtb2R1bGUsIGl0IHJldHVybnMgYGBOb25lYGAuICBJZgogOmRhdGE6YHN5cy5tZXRhX3BhdGhgIHByb2Nlc3NpbmcgcmVhY2hlcyB0aGUgZW5kIG9mIGl0cyBsaXN0IHdpdGhvdXQgcmV0dXJuaW5nCi1hIHNwZWMsIHRoZW4gYW4gOmV4YzpgSW1wb3J0RXJyb3JgIGlzIHJhaXNlZC4gIEFueSBvdGhlciBleGNlcHRpb25zIHJhaXNlZAotYXJlIHNpbXBseSBwcm9wYWdhdGVkIHVwLCBhYm9ydGluZyB0aGUgaW1wb3J0IHByb2Nlc3MuCithIHNwZWMsIHRoZW4gYSA6ZXhjOmBNb2R1bGVOb3RGb3VuZEVycm9yYCBpcyByYWlzZWQuICBBbnkgb3RoZXIgZXhjZXB0aW9ucworcmFpc2VkIGFyZSBzaW1wbHkgcHJvcGFnYXRlZCB1cCwgYWJvcnRpbmcgdGhlIGltcG9ydCBwcm9jZXNzLgogCiBUaGUgOm1ldGg6YH5pbXBvcnRsaWIuYWJjLk1ldGFQYXRoRmluZGVyLmZpbmRfc3BlYygpYCBtZXRob2Qgb2YgbWV0YSBwYXRoCiBmaW5kZXJzIGlzIGNhbGxlZCB3aXRoIHR3byBvciB0aHJlZSBhcmd1bWVudHMuICBUaGUgZmlyc3QgaXMgdGhlIGZ1bGx5CkBAIC0yOTgsOSArMjk4LDkgQEAKIHRvcC1sZXZlbCBtb2R1bGVzLCB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIGBgTm9uZWBgLCBidXQgZm9yIHN1Ym1vZHVsZXMgb3IKIHN1YnBhY2thZ2VzLCB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIHRoZSB2YWx1ZSBvZiB0aGUgcGFyZW50IHBhY2thZ2UncwogYGBfX3BhdGhfX2BgIGF0dHJpYnV0ZS4gSWYgdGhlIGFwcHJvcHJpYXRlIGBgX19wYXRoX19gYCBhdHRyaWJ1dGUgY2Fubm90Ci1iZSBhY2Nlc3NlZCwgYW4gOmV4YzpgSW1wb3J0RXJyb3JgIGlzIHJhaXNlZC4gIFRoZSB0aGlyZCBhcmd1bWVudCBpcyBhbgotZXhpc3RpbmcgbW9kdWxlIG9iamVjdCB0aGF0IHdpbGwgYmUgdGhlIHRhcmdldCBvZiBsb2FkaW5nIGxhdGVyLiAgVGhlCi1pbXBvcnQgc3lzdGVtIHBhc3NlcyBpbiBhIHRhcmdldCBtb2R1bGUgb25seSBkdXJpbmcgcmVsb2FkLgorYmUgYWNjZXNzZWQsIGFuIDpleGM6YE1vZHVsZU5vdEZvdW5kRXJyb3JgIGlzIHJhaXNlZC4gIFRoZSB0aGlyZCBhcmd1bWVudAoraXMgYW4gZXhpc3RpbmcgbW9kdWxlIG9iamVjdCB0aGF0IHdpbGwgYmUgdGhlIHRhcmdldCBvZiBsb2FkaW5nIGxhdGVyLgorVGhlIGltcG9ydCBzeXN0ZW0gcGFzc2VzIGluIGEgdGFyZ2V0IG1vZHVsZSBvbmx5IGR1cmluZyByZWxvYWQuCiAKIFRoZSBtZXRhIHBhdGggbWF5IGJlIHRyYXZlcnNlZCBtdWx0aXBsZSB0aW1lcyBmb3IgYSBzaW5nbGUgaW1wb3J0IHJlcXVlc3QuCiBGb3IgZXhhbXBsZSwgYXNzdW1pbmcgbm9uZSBvZiB0aGUgbW9kdWxlcyBpbnZvbHZlZCBoYXMgYWxyZWFkeSBiZWVuIGNhY2hlZCwKQEAgLTU1NCwxOSArNTU0LDMwIEBACiAgICBkZXRhaWxzLgogCiAgICBUaGlzIGF0dHJpYnV0ZSBpcyB1c2VkIGluc3RlYWQgb2YgYGBfX25hbWVfX2BgIHRvIGNhbGN1bGF0ZSBleHBsaWNpdAotICAgcmVsYXRpdmUgaW1wb3J0cyBmb3IgbWFpbiBtb2R1bGVzLCBhcyBkZWZpbmVkIGluIDpwZXA6YDM2NmAuCisgICByZWxhdGl2ZSBpbXBvcnRzIGZvciBtYWluIG1vZHVsZXMsIGFzIGRlZmluZWQgaW4gOnBlcDpgMzY2YC4gSXQgaXMKKyAgIGV4cGVjdGVkIHRvIGhhdmUgdGhlIHNhbWUgdmFsdWUgYXMgYGBfX3NwZWNfXy5wYXJlbnRgYC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFRoZSB2YWx1ZSBvZiBgYF9fcGFja2FnZV9fYGAgaXMgZXhwZWN0ZWQgdG8gYmUgdGhlIHNhbWUgYXMKKyAgICAgIGBgX19zcGVjX18ucGFyZW50YGAuCiAKIC4uIGF0dHJpYnV0ZTo6IF9fc3BlY19fCiAKICAgIFRoZSBgYF9fc3BlY19fYGAgYXR0cmlidXRlIG11c3QgYmUgc2V0IHRvIHRoZSBtb2R1bGUgc3BlYyB0aGF0IHdhcwotICAgdXNlZCB3aGVuIGltcG9ydGluZyB0aGUgbW9kdWxlLiAgVGhpcyBpcyB1c2VkIHByaW1hcmlseSBmb3IKLSAgIGludHJvc3BlY3Rpb24gYW5kIGR1cmluZyByZWxvYWRpbmcuICBTZXR0aW5nIGBgX19zcGVjX19gYAorICAgdXNlZCB3aGVuIGltcG9ydGluZyB0aGUgbW9kdWxlLiBTZXR0aW5nIGBgX19zcGVjX19gYAogICAgYXBwcm9wcmlhdGVseSBhcHBsaWVzIGVxdWFsbHkgdG8gOnJlZjpgbW9kdWxlcyBpbml0aWFsaXplZCBkdXJpbmcKICAgIGludGVycHJldGVyIHN0YXJ0dXAgPHByb2dyYW1zPmAuICBUaGUgb25lIGV4Y2VwdGlvbiBpcyBgYF9fbWFpbl9fYGAsCiAgICB3aGVyZSBgYF9fc3BlY19fYGAgaXMgOnJlZjpgc2V0IHRvIE5vbmUgaW4gc29tZSBjYXNlcyA8bWFpbl9zcGVjPmAuCiAKKyAgIFdoZW4gYGBfX3BhY2thZ2VfX2BgIGlzIG5vdCBkZWZpbmVkLCBgYF9fc3BlY19fLnBhcmVudGBgIGlzIHVzZWQgYXMKKyAgIGEgZmFsbGJhY2suCisKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgYGBfX3NwZWNfXy5wYXJlbnRgYCBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgd2hlbiBgYF9fcGFja2FnZV9fYGAgaXMKKyAgICAgIG5vdCBkZWZpbmVkLgorCiAuLiBhdHRyaWJ1dGU6OiBfX3BhdGhfXwogCiAgICBJZiB0aGUgbW9kdWxlIGlzIGEgcGFja2FnZSAoZWl0aGVyIHJlZ3VsYXIgb3IgbmFtZXNwYWNlKSwgdGhlIG1vZHVsZQpAQCAtODc2LDcgKzg4Nyw3IEBACiAKIFRvIHNlbGVjdGl2ZWx5IHByZXZlbnQgaW1wb3J0IG9mIHNvbWUgbW9kdWxlcyBmcm9tIGEgaG9vayBlYXJseSBvbiB0aGUKIG1ldGEgcGF0aCAocmF0aGVyIHRoYW4gZGlzYWJsaW5nIHRoZSBzdGFuZGFyZCBpbXBvcnQgc3lzdGVtIGVudGlyZWx5KSwKLWl0IGlzIHN1ZmZpY2llbnQgdG8gcmFpc2UgOmV4YzpgSW1wb3J0RXJyb3JgIGRpcmVjdGx5IGZyb20KK2l0IGlzIHN1ZmZpY2llbnQgdG8gcmFpc2UgOmV4YzpgTW9kdWxlTm9Gb3VuZEVycm9yYCBkaXJlY3RseSBmcm9tCiA6bWV0aDpgfmltcG9ydGxpYi5hYmMuTWV0YVBhdGhGaW5kZXIuZmluZF9zcGVjYCBpbnN0ZWFkIG9mIHJldHVybmluZwogYGBOb25lYGAuIFRoZSBsYXR0ZXIgaW5kaWNhdGVzIHRoYXQgdGhlIG1ldGEgcGF0aCBzZWFyY2ggc2hvdWxkIGNvbnRpbnVlLAogd2hpbGUgcmFpc2luZyBhbiBleGNlcHRpb24gdGVybWluYXRlcyBpdCBpbW1lZGlhdGVseS4KZGlmZiAtLWdpdCBhL0RvYy9yZWZlcmVuY2UvbGV4aWNhbF9hbmFseXNpcy5yc3QgYi9Eb2MvcmVmZXJlbmNlL2xleGljYWxfYW5hbHlzaXMucnN0CmluZGV4IDM3ZjI1ZjEuLmRhNzAxN2EgMTAwNjQ0Ci0tLSBhL0RvYy9yZWZlcmVuY2UvbGV4aWNhbF9hbmFseXNpcy5yc3QKKysrIGIvRG9jL3JlZmVyZW5jZS9sZXhpY2FsX2FuYWx5c2lzLnJzdApAQCAtNDA1LDcgKzQwNSw4IEBACiAKIC4uIHByb2R1Y3Rpb25saXN0OjoKICAgIHN0cmluZ2xpdGVyYWw6IFtgc3RyaW5ncHJlZml4YF0oYHNob3J0c3RyaW5nYCB8IGBsb25nc3RyaW5nYCkKLSAgIHN0cmluZ3ByZWZpeDogInIiIHwgInUiIHwgIlIiIHwgIlUiCisgICBzdHJpbmdwcmVmaXg6ICJyIiB8ICJ1IiB8ICJSIiB8ICJVIiB8ICJmIiB8ICJGIgorICAgICAgICAgICAgICAgOiB8ICJmciIgfCAiRnIiIHwgImZSIiB8ICJGUiIgfCAicmYiIHwgInJGIiB8ICJSZiIgfCAiUkYiCiAgICBzaG9ydHN0cmluZzogIiciIGBzaG9ydHN0cmluZ2l0ZW1gKiAiJyIgfCAnIicgYHNob3J0c3RyaW5naXRlbWAqICciJwogICAgbG9uZ3N0cmluZzogIicnJyIgYGxvbmdzdHJpbmdpdGVtYCogIicnJyIgfCAnIiIiJyBgbG9uZ3N0cmluZ2l0ZW1gKiAnIiIiJwogICAgc2hvcnRzdHJpbmdpdGVtOiBgc2hvcnRzdHJpbmdjaGFyYCB8IGBzdHJpbmdlc2NhcGVzZXFgCkBAIC00NjQsNiArNDY1LDExIEBACiAgICB0byBzaW1wbGlmeSB0aGUgbWFpbnRlbmFuY2Ugb2YgZHVhbCBQeXRob24gMi54IGFuZCAzLnggY29kZWJhc2VzLgogICAgU2VlIDpwZXA6YDQxNGAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAKK0Egc3RyaW5nIGxpdGVyYWwgd2l0aCBgYCdmJ2BgIG9yIGBgJ0YnYGAgaW4gaXRzIHByZWZpeCBpcyBhCis6ZGZuOmBmb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWxgOyBzZWUgOnJlZjpgZi1zdHJpbmdzYC4gIFRoZSBgYCdmJ2BgIG1heSBiZQorY29tYmluZWQgd2l0aCBgYCdyJ2BgLCBidXQgbm90IHdpdGggYGAnYidgYCBvciBgYCd1J2BgLCB0aGVyZWZvcmUgcmF3Citmb3JtYXR0ZWQgc3RyaW5ncyBhcmUgcG9zc2libGUsIGJ1dCBmb3JtYXR0ZWQgYnl0ZXMgbGl0ZXJhbHMgYXJlIG5vdC4KKwogSW4gdHJpcGxlLXF1b3RlZCBsaXRlcmFscywgdW5lc2NhcGVkIG5ld2xpbmVzIGFuZCBxdW90ZXMgYXJlIGFsbG93ZWQgKGFuZCBhcmUKIHJldGFpbmVkKSwgZXhjZXB0IHRoYXQgdGhyZWUgdW5lc2NhcGVkIHF1b3RlcyBpbiBhIHJvdyB0ZXJtaW5hdGUgdGhlIGxpdGVyYWwuICAoQQogInF1b3RlIiBpcyB0aGUgY2hhcmFjdGVyIHVzZWQgdG8gb3BlbiB0aGUgbGl0ZXJhbCwgaS5lLiBlaXRoZXIgYGAnYGAgb3IgYGAiYGAuKQpAQCAtNTU0LDYgKzU2MCwxMCBAQAogZXNjYXBlIHNlcXVlbmNlcyBvbmx5IHJlY29nbml6ZWQgaW4gc3RyaW5nIGxpdGVyYWxzIGZhbGwgaW50byB0aGUgY2F0ZWdvcnkgb2YKIHVucmVjb2duaXplZCBlc2NhcGVzIGZvciBieXRlcyBsaXRlcmFscy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFVucmVjb2duaXplZCBlc2NhcGUgc2VxdWVuY2VzIHByb2R1Y2UgYSBEZXByZWNhdGlvbldhcm5pbmcuICBJbgorICAgICAgc29tZSBmdXR1cmUgdmVyc2lvbiBvZiBQeXRob24gdGhleSB3aWxsIGJlIGEgU3ludGF4RXJyb3IuCisKIEV2ZW4gaW4gYSByYXcgbGl0ZXJhbCwgcXVvdGVzIGNhbiBiZSBlc2NhcGVkIHdpdGggYSBiYWNrc2xhc2gsIGJ1dCB0aGUKIGJhY2tzbGFzaCByZW1haW5zIGluIHRoZSByZXN1bHQ7IGZvciBleGFtcGxlLCBgYHIiXCIiYGAgaXMgYSB2YWxpZCBzdHJpbmcKIGxpdGVyYWwgY29uc2lzdGluZyBvZiB0d28gY2hhcmFjdGVyczogYSBiYWNrc2xhc2ggYW5kIGEgZG91YmxlIHF1b3RlOyBgYHIiXCJgYApAQCAtNTgzLDcgKzU5MywxMTEgQEAKIE5vdGUgdGhhdCB0aGlzIGZlYXR1cmUgaXMgZGVmaW5lZCBhdCB0aGUgc3ludGFjdGljYWwgbGV2ZWwsIGJ1dCBpbXBsZW1lbnRlZCBhdAogY29tcGlsZSB0aW1lLiAgVGhlICcrJyBvcGVyYXRvciBtdXN0IGJlIHVzZWQgdG8gY29uY2F0ZW5hdGUgc3RyaW5nIGV4cHJlc3Npb25zCiBhdCBydW4gdGltZS4gIEFsc28gbm90ZSB0aGF0IGxpdGVyYWwgY29uY2F0ZW5hdGlvbiBjYW4gdXNlIGRpZmZlcmVudCBxdW90aW5nCi1zdHlsZXMgZm9yIGVhY2ggY29tcG9uZW50IChldmVuIG1peGluZyByYXcgc3RyaW5ncyBhbmQgdHJpcGxlIHF1b3RlZCBzdHJpbmdzKS4KK3N0eWxlcyBmb3IgZWFjaCBjb21wb25lbnQgKGV2ZW4gbWl4aW5nIHJhdyBzdHJpbmdzIGFuZCB0cmlwbGUgcXVvdGVkIHN0cmluZ3MpLAorYW5kIGZvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbHMgbWF5IGJlIGNvbmNhdGVuYXRlZCB3aXRoIHBsYWluIHN0cmluZyBsaXRlcmFscy4KKworCisuLiBpbmRleDo6CisgICBzaW5nbGU6IGZvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbAorICAgc2luZ2xlOiBpbnRlcnBvbGF0ZWQgc3RyaW5nIGxpdGVyYWwKKyAgIHNpbmdsZTogc3RyaW5nOyBmb3JtYXR0ZWQgbGl0ZXJhbAorICAgc2luZ2xlOiBzdHJpbmc7IGludGVycG9sYXRlZCBsaXRlcmFsCisgICBzaW5nbGU6IGYtc3RyaW5nCisuLiBfZi1zdHJpbmdzOgorCitGb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWxzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuNgorCitBIDpkZm46YGZvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbGAgb3IgOmRmbjpgZi1zdHJpbmdgIGlzIGEgc3RyaW5nIGxpdGVyYWwKK3RoYXQgaXMgcHJlZml4ZWQgd2l0aCBgYCdmJ2BgIG9yIGBgJ0YnYGAuICBUaGVzZSBzdHJpbmdzIG1heSBjb250YWluCityZXBsYWNlbWVudCBmaWVsZHMsIHdoaWNoIGFyZSBleHByZXNzaW9ucyBkZWxpbWl0ZWQgYnkgY3VybHkgYnJhY2VzIGBge31gYC4KK1doaWxlIG90aGVyIHN0cmluZyBsaXRlcmFscyBhbHdheXMgaGF2ZSBhIGNvbnN0YW50IHZhbHVlLCBmb3JtYXR0ZWQgc3RyaW5ncworYXJlIHJlYWxseSBleHByZXNzaW9ucyBldmFsdWF0ZWQgYXQgcnVuIHRpbWUuCisKK0VzY2FwZSBzZXF1ZW5jZXMgYXJlIGRlY29kZWQgbGlrZSBpbiBvcmRpbmFyeSBzdHJpbmcgbGl0ZXJhbHMgKGV4Y2VwdCB3aGVuCithIGxpdGVyYWwgaXMgYWxzbyBtYXJrZWQgYXMgYSByYXcgc3RyaW5nKS4gIEFmdGVyIGRlY29kaW5nLCB0aGUgZ3JhbW1hcgorZm9yIHRoZSBjb250ZW50cyBvZiB0aGUgc3RyaW5nIGlzOgorCisuLiBwcm9kdWN0aW9ubGlzdDo6CisgICBmX3N0cmluZzogKGBsaXRlcmFsX2NoYXJgIHwgInt7IiB8ICJ9fSIgfCBgcmVwbGFjZW1lbnRfZmllbGRgKSoKKyAgIHJlcGxhY2VtZW50X2ZpZWxkOiAieyIgYGZfZXhwcmVzc2lvbmAgWyIhIiBgY29udmVyc2lvbmBdIFsiOiIgYGZvcm1hdF9zcGVjYF0gIn0iCisgICBmX2V4cHJlc3Npb246IChgY29uZGl0aW9uYWxfZXhwcmVzc2lvbmAgfCAiKiIgYG9yX2V4cHJgKQorICAgICAgICAgICAgICAgOiAgICgiLCIgYGNvbmRpdGlvbmFsX2V4cHJlc3Npb25gIHwgIiwiICIqIiBgb3JfZXhwcmApKiBbIiwiXQorICAgICAgICAgICAgICAgOiB8IGB5aWVsZF9leHByZXNzaW9uYAorICAgY29udmVyc2lvbjogInMiIHwgInIiIHwgImEiCisgICBmb3JtYXRfc3BlYzogKGBsaXRlcmFsX2NoYXJgIHwgTlVMTCB8IGByZXBsYWNlbWVudF9maWVsZGApKgorICAgbGl0ZXJhbF9jaGFyOiA8YW55IGNvZGUgcG9pbnQgZXhjZXB0ICJ7IiwgIn0iIG9yIE5VTEw+CisKK1RoZSBwYXJ0cyBvZiB0aGUgc3RyaW5nIG91dHNpZGUgY3VybHkgYnJhY2VzIGFyZSB0cmVhdGVkIGxpdGVyYWxseSwKK2V4Y2VwdCB0aGF0IGFueSBkb3VibGVkIGN1cmx5IGJyYWNlcyBgYCd7eydgYCBvciBgYCd9fSdgYCBhcmUgcmVwbGFjZWQKK3dpdGggdGhlIGNvcnJlc3BvbmRpbmcgc2luZ2xlIGN1cmx5IGJyYWNlLiAgQSBzaW5nbGUgb3BlbmluZyBjdXJseQorYnJhY2tldCBgYCd7J2BgIG1hcmtzIGEgcmVwbGFjZW1lbnQgZmllbGQsIHdoaWNoIHN0YXJ0cyB3aXRoIGEKK1B5dGhvbiBleHByZXNzaW9uLiAgQWZ0ZXIgdGhlIGV4cHJlc3Npb24sIHRoZXJlIG1heSBiZSBhIGNvbnZlcnNpb24gZmllbGQsCitpbnRyb2R1Y2VkIGJ5IGFuIGV4Y2xhbWF0aW9uIHBvaW50IGBgJyEnYGAuICBBIGZvcm1hdCBzcGVjaWZpZXIgbWF5IGFsc28KK2JlIGFwcGVuZGVkLCBpbnRyb2R1Y2VkIGJ5IGEgY29sb24gYGAnOidgYC4gIEEgcmVwbGFjZW1lbnQgZmllbGQgZW5kcword2l0aCBhIGNsb3NpbmcgY3VybHkgYnJhY2tldCBgYCd9J2BgLgorCitFeHByZXNzaW9ucyBpbiBmb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWxzIGFyZSB0cmVhdGVkIGxpa2UgcmVndWxhcgorUHl0aG9uIGV4cHJlc3Npb25zIHN1cnJvdW5kZWQgYnkgcGFyZW50aGVzZXMsIHdpdGggYSBmZXcgZXhjZXB0aW9ucy4KK0FuIGVtcHR5IGV4cHJlc3Npb24gaXMgbm90IGFsbG93ZWQsIGFuZCBhIDprZXl3b3JkOmBsYW1iZGFgIGV4cHJlc3Npb24KK211c3QgYmUgc3Vycm91bmRlZCBieSBleHBsaWNpdCBwYXJlbnRoZXNlcy4gIFJlcGxhY2VtZW50IGV4cHJlc3Npb25zCitjYW4gY29udGFpbiBsaW5lIGJyZWFrcyAoZS5nLiBpbiB0cmlwbGUtcXVvdGVkIHN0cmluZ3MpLCBidXQgdGhleQorY2Fubm90IGNvbnRhaW4gY29tbWVudHMuICBFYWNoIGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkIGluIHRoZSBjb250ZXh0Cit3aGVyZSB0aGUgZm9ybWF0dGVkIHN0cmluZyBsaXRlcmFsIGFwcGVhcnMsIGluIG9yZGVyIGZyb20gbGVmdCB0byByaWdodC4KKworSWYgYSBjb252ZXJzaW9uIGlzIHNwZWNpZmllZCwgdGhlIHJlc3VsdCBvZiBldmFsdWF0aW5nIHRoZSBleHByZXNzaW9uCitpcyBjb252ZXJ0ZWQgYmVmb3JlIGZvcm1hdHRpbmcuICBDb252ZXJzaW9uIGBgJyFzJ2BgIGNhbGxzIDpmdW5jOmBzdHJgIG9uCit0aGUgcmVzdWx0LCBgYCchcidgYCBjYWxscyA6ZnVuYzpgcmVwcmAsIGFuZCBgYCchYSdgYCBjYWxscyA6ZnVuYzpgYXNjaWlgLgorCitUaGUgcmVzdWx0IGlzIHRoZW4gZm9ybWF0dGVkIHVzaW5nIHRoZSA6ZnVuYzpgZm9ybWF0YCBwcm90b2NvbC4gIFRoZQorZm9ybWF0IHNwZWNpZmllciBpcyBwYXNzZWQgdG8gdGhlIDptZXRoOmBfX2Zvcm1hdF9fYCBtZXRob2Qgb2YgdGhlCitleHByZXNzaW9uIG9yIGNvbnZlcnNpb24gcmVzdWx0LiAgQW4gZW1wdHkgc3RyaW5nIGlzIHBhc3NlZCB3aGVuIHRoZQorZm9ybWF0IHNwZWNpZmllciBpcyBvbWl0dGVkLiAgVGhlIGZvcm1hdHRlZCByZXN1bHQgaXMgdGhlbiBpbmNsdWRlZCBpbgordGhlIGZpbmFsIHZhbHVlIG9mIHRoZSB3aG9sZSBzdHJpbmcuCisKK1RvcC1sZXZlbCBmb3JtYXQgc3BlY2lmaWVycyBtYXkgaW5jbHVkZSBuZXN0ZWQgcmVwbGFjZW1lbnQgZmllbGRzLgorVGhlc2UgbmVzdGVkIGZpZWxkcyBtYXkgaW5jbHVkZSB0aGVpciBvd24gY29udmVyc2lvbiBmaWVsZHMgYW5kCitmb3JtYXQgc3BlY2lmaWVycywgYnV0IG1heSBub3QgaW5jbHVkZSBtb3JlIGRlZXBseS1uZXN0ZWQgcmVwbGFjZW1lbnQgZmllbGRzLgorCitGb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWxzIG1heSBiZSBjb25jYXRlbmF0ZWQsIGJ1dCByZXBsYWNlbWVudCBmaWVsZHMKK2Nhbm5vdCBiZSBzcGxpdCBhY3Jvc3MgbGl0ZXJhbHMuCisKK1NvbWUgZXhhbXBsZXMgb2YgZm9ybWF0dGVkIHN0cmluZyBsaXRlcmFsczo6CisKKyAgID4+PiBuYW1lID0gIkZyZWQiCisgICA+Pj4gZiJIZSBzYWlkIGhpcyBuYW1lIGlzIHtuYW1lIXJ9LiIKKyAgICJIZSBzYWlkIGhpcyBuYW1lIGlzICdGcmVkJy4iCisgICA+Pj4gZiJIZSBzYWlkIGhpcyBuYW1lIGlzIHtyZXByKG5hbWUpfS4iICAjIHJlcHIoKSBpcyBlcXVpdmFsZW50IHRvICFyCisgICAiSGUgc2FpZCBoaXMgbmFtZSBpcyAnRnJlZCcuIgorICAgPj4+IHdpZHRoID0gMTAKKyAgID4+PiBwcmVjaXNpb24gPSA0CisgICA+Pj4gdmFsdWUgPSBkZWNpbWFsLkRlY2ltYWwoIjEyLjM0NTY3IikKKyAgID4+PiBmInJlc3VsdDoge3ZhbHVlOnt3aWR0aH0ue3ByZWNpc2lvbn19IiAgIyBuZXN0ZWQgZmllbGRzCisgICAncmVzdWx0OiAgICAgIDEyLjM1JworCitBIGNvbnNlcXVlbmNlIG9mIHNoYXJpbmcgdGhlIHNhbWUgc3ludGF4IGFzIHJlZ3VsYXIgc3RyaW5nIGxpdGVyYWxzIGlzCit0aGF0IGNoYXJhY3RlcnMgaW4gdGhlIHJlcGxhY2VtZW50IGZpZWxkcyBtdXN0IG5vdCBjb25mbGljdCB3aXRoIHRoZQorcXVvdGluZyB1c2VkIGluIHRoZSBvdXRlciBmb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWw6OgorCisgICBmImFiYyB7YVsieCJdfSBkZWYiICAgICMgZXJyb3I6IG91dGVyIHN0cmluZyBsaXRlcmFsIGVuZGVkIHByZW1hdHVyZWx5CisgICBmImFiYyB7YVsneCddfSBkZWYiICAgICMgd29ya2Fyb3VuZDogdXNlIGRpZmZlcmVudCBxdW90aW5nCisKK0JhY2tzbGFzaGVzIGFyZSBub3QgYWxsb3dlZCBpbiBmb3JtYXQgZXhwcmVzc2lvbnMgYW5kIHdpbGwgcmFpc2UKK2FuIGVycm9yOjoKKworICAgZiJuZXdsaW5lOiB7b3JkKCdcbicpfSIgICMgcmFpc2VzIFN5bnRheEVycm9yCisKK1RvIGluY2x1ZGUgYSB2YWx1ZSBpbiB3aGljaCBhIGJhY2tzbGFzaCBlc2NhcGUgaXMgcmVxdWlyZWQsIGNyZWF0ZQorYSB0ZW1wb3JhcnkgdmFyaWFibGUuCisKKyAgID4+PiBuZXdsaW5lID0gb3JkKCdcbicpCisgICA+Pj4gZiJuZXdsaW5lOiB7bmV3bGluZX0iCisgICAnbmV3bGluZTogMTAnCisKK1NlZSBhbHNvIDpwZXA6YDQ5OGAgZm9yIHRoZSBwcm9wb3NhbCB0aGF0IGFkZGVkIGZvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbHMsCithbmQgOm1ldGg6YHN0ci5mb3JtYXRgLCB3aGljaCB1c2VzIGEgcmVsYXRlZCBmb3JtYXQgc3RyaW5nIG1lY2hhbmlzbS4KIAogCiAuLiBfbnVtYmVyczoKQEAgLTYxMiwyMCArNzI2LDI0IEBACiBJbnRlZ2VyIGxpdGVyYWxzIGFyZSBkZXNjcmliZWQgYnkgdGhlIGZvbGxvd2luZyBsZXhpY2FsIGRlZmluaXRpb25zOgogCiAuLiBwcm9kdWN0aW9ubGlzdDo6Ci0gICBpbnRlZ2VyOiBgZGVjaW1hbGludGVnZXJgIHwgYG9jdGludGVnZXJgIHwgYGhleGludGVnZXJgIHwgYGJpbmludGVnZXJgCi0gICBkZWNpbWFsaW50ZWdlcjogYG5vbnplcm9kaWdpdGAgYGRpZ2l0YCogfCAiMCIrCisgICBpbnRlZ2VyOiBgZGVjaW50ZWdlcmAgfCBgYmluaW50ZWdlcmAgfCBgb2N0aW50ZWdlcmAgfCBgaGV4aW50ZWdlcmAKKyAgIGRlY2ludGVnZXI6IGBub256ZXJvZGlnaXRgIChbIl8iXSBgZGlnaXRgKSogfCAiMCIrIChbIl8iXSAiMCIpKgorICAgYmluaW50ZWdlcjogIjAiICgiYiIgfCAiQiIpIChbIl8iXSBgYmluZGlnaXRgKSsKKyAgIG9jdGludGVnZXI6ICIwIiAoIm8iIHwgIk8iKSAoWyJfIl0gYG9jdGRpZ2l0YCkrCisgICBoZXhpbnRlZ2VyOiAiMCIgKCJ4IiB8ICJYIikgKFsiXyJdIGBoZXhkaWdpdGApKwogICAgbm9uemVyb2RpZ2l0OiAiMSIuLi4iOSIKICAgIGRpZ2l0OiAiMCIuLi4iOSIKLSAgIG9jdGludGVnZXI6ICIwIiAoIm8iIHwgIk8iKSBgb2N0ZGlnaXRgKwotICAgaGV4aW50ZWdlcjogIjAiICgieCIgfCAiWCIpIGBoZXhkaWdpdGArCi0gICBiaW5pbnRlZ2VyOiAiMCIgKCJiIiB8ICJCIikgYGJpbmRpZ2l0YCsKKyAgIGJpbmRpZ2l0OiAiMCIgfCAiMSIKICAgIG9jdGRpZ2l0OiAiMCIuLi4iNyIKICAgIGhleGRpZ2l0OiBgZGlnaXRgIHwgImEiLi4uImYiIHwgIkEiLi4uIkYiCi0gICBiaW5kaWdpdDogIjAiIHwgIjEiCiAKIFRoZXJlIGlzIG5vIGxpbWl0IGZvciB0aGUgbGVuZ3RoIG9mIGludGVnZXIgbGl0ZXJhbHMgYXBhcnQgZnJvbSB3aGF0IGNhbiBiZQogc3RvcmVkIGluIGF2YWlsYWJsZSBtZW1vcnkuCiAKK1VuZGVyc2NvcmVzIGFyZSBpZ25vcmVkIGZvciBkZXRlcm1pbmluZyB0aGUgbnVtZXJpYyB2YWx1ZSBvZiB0aGUgbGl0ZXJhbC4gIFRoZXkKK2NhbiBiZSB1c2VkIHRvIGdyb3VwIGRpZ2l0cyBmb3IgZW5oYW5jZWQgcmVhZGFiaWxpdHkuICBPbmUgdW5kZXJzY29yZSBjYW4gb2NjdXIKK2JldHdlZW4gZGlnaXRzLCBhbmQgYWZ0ZXIgYmFzZSBzcGVjaWZpZXJzIGxpa2UgYGAweGBgLgorCiBOb3RlIHRoYXQgbGVhZGluZyB6ZXJvcyBpbiBhIG5vbi16ZXJvIGRlY2ltYWwgbnVtYmVyIGFyZSBub3QgYWxsb3dlZC4gVGhpcyBpcwogZm9yIGRpc2FtYmlndWF0aW9uIHdpdGggQy1zdHlsZSBvY3RhbCBsaXRlcmFscywgd2hpY2ggUHl0aG9uIHVzZWQgYmVmb3JlIHZlcnNpb24KIDMuMC4KQEAgLTYzNCw2ICs3NTIsMTAgQEAKIAogICAgNyAgICAgMjE0NzQ4MzY0NyAgICAgICAgICAgICAgICAgICAgICAgIDBvMTc3ICAgIDBiMTAwMTEwMTExCiAgICAzICAgICA3OTIyODE2MjUxNDI2NDMzNzU5MzU0Mzk1MDMzNiAgICAgMG8zNzcgICAgMHhkZWFkYmVlZgorICAgICAgICAgMTAwXzAwMF8wMDBfMDAwICAgICAgICAgICAgICAgICAgIDBiXzExMTBfMDEwMQorCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgVW5kZXJzY29yZXMgYXJlIG5vdyBhbGxvd2VkIGZvciBncm91cGluZyBwdXJwb3NlcyBpbiBsaXRlcmFscy4KIAogCiAuLiBfZmxvYXRpbmc6CkBAIC02NDUsMjMgKzc2NywyOCBAQAogCiAuLiBwcm9kdWN0aW9ubGlzdDo6CiAgICBmbG9hdG51bWJlcjogYHBvaW50ZmxvYXRgIHwgYGV4cG9uZW50ZmxvYXRgCi0gICBwb2ludGZsb2F0OiBbYGludHBhcnRgXSBgZnJhY3Rpb25gIHwgYGludHBhcnRgICIuIgotICAgZXhwb25lbnRmbG9hdDogKGBpbnRwYXJ0YCB8IGBwb2ludGZsb2F0YCkgYGV4cG9uZW50YAotICAgaW50cGFydDogYGRpZ2l0YCsKLSAgIGZyYWN0aW9uOiAiLiIgYGRpZ2l0YCsKLSAgIGV4cG9uZW50OiAoImUiIHwgIkUiKSBbIisiIHwgIi0iXSBgZGlnaXRgKworICAgcG9pbnRmbG9hdDogW2BkaWdpdHBhcnRgXSBgZnJhY3Rpb25gIHwgYGRpZ2l0cGFydGAgIi4iCisgICBleHBvbmVudGZsb2F0OiAoYGRpZ2l0cGFydGAgfCBgcG9pbnRmbG9hdGApIGBleHBvbmVudGAKKyAgIGRpZ2l0cGFydDogYGRpZ2l0YCAoWyJfIl0gYGRpZ2l0YCkqCisgICBmcmFjdGlvbjogIi4iIGBkaWdpdHBhcnRgCisgICBleHBvbmVudDogKCJlIiB8ICJFIikgWyIrIiB8ICItIl0gYGRpZ2l0cGFydGAKIAogTm90ZSB0aGF0IHRoZSBpbnRlZ2VyIGFuZCBleHBvbmVudCBwYXJ0cyBhcmUgYWx3YXlzIGludGVycHJldGVkIHVzaW5nIHJhZGl4IDEwLgogRm9yIGV4YW1wbGUsIGBgMDc3ZTAxMGBgIGlzIGxlZ2FsLCBhbmQgZGVub3RlcyB0aGUgc2FtZSBudW1iZXIgYXMgYGA3N2UxMGBgLiBUaGUKLWFsbG93ZWQgcmFuZ2Ugb2YgZmxvYXRpbmcgcG9pbnQgbGl0ZXJhbHMgaXMgaW1wbGVtZW50YXRpb24tZGVwZW5kZW50LiBTb21lCi1leGFtcGxlcyBvZiBmbG9hdGluZyBwb2ludCBsaXRlcmFsczo6CithbGxvd2VkIHJhbmdlIG9mIGZsb2F0aW5nIHBvaW50IGxpdGVyYWxzIGlzIGltcGxlbWVudGF0aW9uLWRlcGVuZGVudC4gIEFzIGluCitpbnRlZ2VyIGxpdGVyYWxzLCB1bmRlcnNjb3JlcyBhcmUgc3VwcG9ydGVkIGZvciBkaWdpdCBncm91cGluZy4KIAotICAgMy4xNCAgICAxMC4gICAgLjAwMSAgICAxZTEwMCAgICAzLjE0ZS0xMCAgICAwZTAKK1NvbWUgZXhhbXBsZXMgb2YgZmxvYXRpbmcgcG9pbnQgbGl0ZXJhbHM6OgorCisgICAzLjE0ICAgIDEwLiAgICAuMDAxICAgIDFlMTAwICAgIDMuMTRlLTEwICAgIDBlMCAgICAzLjE0XzE1XzkzCiAKIE5vdGUgdGhhdCBudW1lcmljIGxpdGVyYWxzIGRvIG5vdCBpbmNsdWRlIGEgc2lnbjsgYSBwaHJhc2UgbGlrZSBgYC0xYGAgaXMKIGFjdHVhbGx5IGFuIGV4cHJlc3Npb24gY29tcG9zZWQgb2YgdGhlIHVuYXJ5IG9wZXJhdG9yIGBgLWBgIGFuZCB0aGUgbGl0ZXJhbAogYGAxYGAuCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICBVbmRlcnNjb3JlcyBhcmUgbm93IGFsbG93ZWQgZm9yIGdyb3VwaW5nIHB1cnBvc2VzIGluIGxpdGVyYWxzLgorCiAKIC4uIF9pbWFnaW5hcnk6CiAKQEAgLTY3MSw3ICs3OTgsNyBAQAogSW1hZ2luYXJ5IGxpdGVyYWxzIGFyZSBkZXNjcmliZWQgYnkgdGhlIGZvbGxvd2luZyBsZXhpY2FsIGRlZmluaXRpb25zOgogCiAuLiBwcm9kdWN0aW9ubGlzdDo6Ci0gICBpbWFnbnVtYmVyOiAoYGZsb2F0bnVtYmVyYCB8IGBpbnRwYXJ0YCkgKCJqIiB8ICJKIikKKyAgIGltYWdudW1iZXI6IChgZmxvYXRudW1iZXJgIHwgYGRpZ2l0cGFydGApICgiaiIgfCAiSiIpCiAKIEFuIGltYWdpbmFyeSBsaXRlcmFsIHlpZWxkcyBhIGNvbXBsZXggbnVtYmVyIHdpdGggYSByZWFsIHBhcnQgb2YgMC4wLiAgQ29tcGxleAogbnVtYmVycyBhcmUgcmVwcmVzZW50ZWQgYXMgYSBwYWlyIG9mIGZsb2F0aW5nIHBvaW50IG51bWJlcnMgYW5kIGhhdmUgdGhlIHNhbWUKQEAgLTY3OSw3ICs4MDYsNyBAQAogcGFydCwgYWRkIGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIHRvIGl0LCBlLmcuLCBgYCgzKzRqKWBgLiAgU29tZSBleGFtcGxlcyBvZgogaW1hZ2luYXJ5IGxpdGVyYWxzOjoKIAotICAgMy4xNGogICAxMC5qICAgIDEwaiAgICAgLjAwMWogICAxZTEwMGogIDMuMTRlLTEwagorICAgMy4xNGogICAxMC5qICAgIDEwaiAgICAgLjAwMWogICAxZTEwMGogICAzLjE0ZS0xMGogICAzLjE0XzE1XzkzagogCiAKIC4uIF9vcGVyYXRvcnM6CmRpZmYgLS1naXQgYS9Eb2MvcmVmZXJlbmNlL3NpbXBsZV9zdG10cy5yc3QgYi9Eb2MvcmVmZXJlbmNlL3NpbXBsZV9zdG10cy5yc3QKaW5kZXggZDQwM2M0ZC4uZTE1MmIxNiAxMDA2NDQKLS0tIGEvRG9jL3JlZmVyZW5jZS9zaW1wbGVfc3RtdHMucnN0CisrKyBiL0RvYy9yZWZlcmVuY2Uvc2ltcGxlX3N0bXRzLnJzdApAQCAtMTYsNiArMTYsNyBAQAogICAgICAgICAgICAgICA6IHwgYGFzc2VydF9zdG10YAogICAgICAgICAgICAgICA6IHwgYGFzc2lnbm1lbnRfc3RtdGAKICAgICAgICAgICAgICAgOiB8IGBhdWdtZW50ZWRfYXNzaWdubWVudF9zdG10YAorICAgICAgICAgICAgICA6IHwgYGFubm90YXRlZF9hc3NpZ25tZW50X3N0bXRgCiAgICAgICAgICAgICAgIDogfCBgcGFzc19zdG10YAogICAgICAgICAgICAgICA6IHwgYGRlbF9zdG10YAogICAgICAgICAgICAgICA6IHwgYHJldHVybl9zdG10YApAQCAtODQsNyArODUsNyBAQAogICAgYXNzaWdubWVudF9zdG10OiAoYHRhcmdldF9saXN0YCAiPSIpKyAoYHN0YXJyZWRfZXhwcmVzc2lvbmAgfCBgeWllbGRfZXhwcmVzc2lvbmApCiAgICB0YXJnZXRfbGlzdDogYHRhcmdldGAgKCIsIiBgdGFyZ2V0YCkqIFsiLCJdCiAgICB0YXJnZXQ6IGBpZGVudGlmaWVyYAotICAgICAgICAgOiB8ICIoIiBgdGFyZ2V0X2xpc3RgICIpIgorICAgICAgICAgOiB8ICIoIiBbYHRhcmdldF9saXN0YF0gIikiCiAgICAgICAgICA6IHwgIlsiIFtgdGFyZ2V0X2xpc3RgXSAiXSIKICAgICAgICAgIDogfCBgYXR0cmlidXRlcmVmYAogICAgICAgICAgOiB8IGBzdWJzY3JpcHRpb25gCkBAIC0zMTIsNiArMzEzLDUwIEBACiBhbmQgaW5zdGFuY2UgYXR0cmlidXRlcyA8YXR0ci10YXJnZXQtbm90ZT5gIGFwcGxpZXMgYXMgZm9yIHJlZ3VsYXIgYXNzaWdubWVudHMuCiAKIAorLi4gX2FubmFzc2lnbjoKKworQW5ub3RhdGVkIGFzc2lnbm1lbnQgc3RhdGVtZW50cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiBpbmRleDo6CisgICBwYWlyOiBhbm5vdGF0ZWQ7IGFzc2lnbm1lbnQKKyAgIHNpbmdsZTogc3RhdGVtZW50OyBhc3NpZ25tZW50LCBhbm5vdGF0ZWQKKworQW5ub3RhdGlvbiBhc3NpZ25tZW50IGlzIHRoZSBjb21iaW5hdGlvbiwgaW4gYSBzaW5nbGUgc3RhdGVtZW50LAorb2YgYSB2YXJpYWJsZSBvciBhdHRyaWJ1dGUgYW5ub3RhdGlvbiBhbmQgYW4gb3B0aW9uYWwgYXNzaWdubWVudCBzdGF0ZW1lbnQ6CisKKy4uIHByb2R1Y3Rpb25saXN0OjoKKyAgIGFubm90YXRlZF9hc3NpZ25tZW50X3N0bXQ6IGBhdWd0YXJnZXRgICI6IiBgZXhwcmVzc2lvbmAgWyI9IiBgZXhwcmVzc2lvbmBdCisKK1RoZSBkaWZmZXJlbmNlIGZyb20gbm9ybWFsIDpyZWY6YGFzc2lnbm1lbnRgIGlzIHRoYXQgb25seSBzaW5nbGUgdGFyZ2V0IGFuZAorb25seSBzaW5nbGUgcmlnaHQgaGFuZCBzaWRlIHZhbHVlIGlzIGFsbG93ZWQuCisKK0ZvciBzaW1wbGUgbmFtZXMgYXMgYXNzaWdubWVudCB0YXJnZXRzLCBpZiBpbiBjbGFzcyBvciBtb2R1bGUgc2NvcGUsCit0aGUgYW5ub3RhdGlvbnMgYXJlIGV2YWx1YXRlZCBhbmQgc3RvcmVkIGluIGEgc3BlY2lhbCBjbGFzcyBvciBtb2R1bGUKK2F0dHJpYnV0ZSA6YXR0cjpgX19hbm5vdGF0aW9uc19fYAordGhhdCBpcyBhIGRpY3Rpb25hcnkgbWFwcGluZyBmcm9tIHZhcmlhYmxlIG5hbWVzIChtYW5nbGVkIGlmIHByaXZhdGUpIHRvCitldmFsdWF0ZWQgYW5ub3RhdGlvbnMuIFRoaXMgYXR0cmlidXRlIGlzIHdyaXRhYmxlIGFuZCBpcyBhdXRvbWF0aWNhbGx5CitjcmVhdGVkIGF0IHRoZSBzdGFydCBvZiBjbGFzcyBvciBtb2R1bGUgYm9keSBleGVjdXRpb24sIGlmIGFubm90YXRpb25zCithcmUgZm91bmQgc3RhdGljYWxseS4KKworRm9yIGV4cHJlc3Npb25zIGFzIGFzc2lnbm1lbnQgdGFyZ2V0cywgdGhlIGFubm90YXRpb25zIGFyZSBldmFsdWF0ZWQgaWYKK2luIGNsYXNzIG9yIG1vZHVsZSBzY29wZSwgYnV0IG5vdCBzdG9yZWQuCisKK0lmIGEgbmFtZSBpcyBhbm5vdGF0ZWQgaW4gYSBmdW5jdGlvbiBzY29wZSwgdGhlbiB0aGlzIG5hbWUgaXMgbG9jYWwgZm9yCit0aGF0IHNjb3BlLiBBbm5vdGF0aW9ucyBhcmUgbmV2ZXIgZXZhbHVhdGVkIGFuZCBzdG9yZWQgaW4gZnVuY3Rpb24gc2NvcGVzLgorCitJZiB0aGUgcmlnaHQgaGFuZCBzaWRlIGlzIHByZXNlbnQsIGFuIGFubm90YXRlZAorYXNzaWdubWVudCBwZXJmb3JtcyB0aGUgYWN0dWFsIGFzc2lnbm1lbnQgYmVmb3JlIGV2YWx1YXRpbmcgYW5ub3RhdGlvbnMKKyh3aGVyZSBhcHBsaWNhYmxlKS4gSWYgdGhlIHJpZ2h0IGhhbmQgc2lkZSBpcyBub3QgcHJlc2VudCBmb3IgYW4gZXhwcmVzc2lvbgordGFyZ2V0LCB0aGVuIHRoZSBpbnRlcnByZXRlciBldmFsdWF0ZXMgdGhlIHRhcmdldCBleGNlcHQgZm9yIHRoZSBsYXN0Cis6bWV0aDpgX19zZXRpdGVtX19gIG9yIDptZXRoOmBfX3NldGF0dHJfX2AgY2FsbC4KKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDUyNmAgLSBWYXJpYWJsZSBhbmQgYXR0cmlidXRlIGFubm90YXRpb24gc3ludGF4CisgICA6cGVwOmA0ODRgIC0gVHlwZSBoaW50cworCisKIC4uIF9hc3NlcnQ6CiAKIFRoZSA6a2V5d29yZDpgYXNzZXJ0YCBzdGF0ZW1lbnQKQEAgLTQ0Nyw2ICs0OTIsMTAgQEAKIHZhbHVlIChpZiBhbnkpIGlzIHVzZWQgYXMgYW4gYXJndW1lbnQgdG8gY29uc3RydWN0IDpleGM6YFN0b3BJdGVyYXRpb25gIGFuZAogYmVjb21lcyB0aGUgOmF0dHI6YFN0b3BJdGVyYXRpb24udmFsdWVgIGF0dHJpYnV0ZS4KIAorSW4gYW4gYXN5bmNocm9ub3VzIGdlbmVyYXRvciBmdW5jdGlvbiwgYW4gZW1wdHkgOmtleXdvcmQ6YHJldHVybmAgc3RhdGVtZW50CitpbmRpY2F0ZXMgdGhhdCB0aGUgYXN5bmNocm9ub3VzIGdlbmVyYXRvciBpcyBkb25lIGFuZCB3aWxsIGNhdXNlCis6ZXhjOmBTdG9wQXN5bmNJdGVyYXRpb25gIHRvIGJlIHJhaXNlZC4gIEEgbm9uLWVtcHR5IDprZXl3b3JkOmByZXR1cm5gCitzdGF0ZW1lbnQgaXMgYSBzeW50YXggZXJyb3IgaW4gYW4gYXN5bmNocm9ub3VzIGdlbmVyYXRvciBmdW5jdGlvbi4KIAogLi4gX3lpZWxkOgogCkBAIC04NTksMTEgKzkwOCwxMiBAQAogCiBOYW1lcyBsaXN0ZWQgaW4gYSA6a2V5d29yZDpgZ2xvYmFsYCBzdGF0ZW1lbnQgbXVzdCBub3QgYmUgZGVmaW5lZCBhcyBmb3JtYWwKIHBhcmFtZXRlcnMgb3IgaW4gYSA6a2V5d29yZDpgZm9yYCBsb29wIGNvbnRyb2wgdGFyZ2V0LCA6a2V5d29yZDpgY2xhc3NgCi1kZWZpbml0aW9uLCBmdW5jdGlvbiBkZWZpbml0aW9uLCBvciA6a2V5d29yZDpgaW1wb3J0YCBzdGF0ZW1lbnQuCitkZWZpbml0aW9uLCBmdW5jdGlvbiBkZWZpbml0aW9uLCA6a2V5d29yZDpgaW1wb3J0YCBzdGF0ZW1lbnQsIG9yIHZhcmlhYmxlCithbm5vdGF0aW9uLgogCiAuLiBpbXBsLWRldGFpbDo6CiAKLSAgIFRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIGRvZXMgbm90IGVuZm9yY2UgdGhlIHR3byByZXN0cmljdGlvbnMsIGJ1dAorICAgVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gZG9lcyBub3QgZW5mb3JjZSBzb21lIG9mIHRoZXNlIHJlc3RyaWN0aW9uLCBidXQKICAgIHByb2dyYW1zIHNob3VsZCBub3QgYWJ1c2UgdGhpcyBmcmVlZG9tLCBhcyBmdXR1cmUgaW1wbGVtZW50YXRpb25zIG1heSBlbmZvcmNlCiAgICB0aGVtIG9yIHNpbGVudGx5IGNoYW5nZSB0aGUgbWVhbmluZyBvZiB0aGUgcHJvZ3JhbS4KIApkaWZmIC0tZ2l0IGEvRG9jL3Rvb2xzL2V4dGVuc2lvbnMvcHlzcGVjaWZpYy5weSBiL0RvYy90b29scy9leHRlbnNpb25zL3B5c3BlY2lmaWMucHkKaW5kZXggNjMxMTI4My4uMjczMTkxYiAxMDA2NDQKLS0tIGEvRG9jL3Rvb2xzL2V4dGVuc2lvbnMvcHlzcGVjaWZpYy5weQorKysgYi9Eb2MvdG9vbHMvZXh0ZW5zaW9ucy9weXNwZWNpZmljLnB5CkBAIC0zNCw3ICszNCw3IEBACiAKIAogSVNTVUVfVVJJID0gJ2h0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlJXMnCi1TT1VSQ0VfVVJJID0gJ2h0dHBzOi8vaGcucHl0aG9uLm9yZy9jcHl0aG9uL2ZpbGUvMy41LyVzJworU09VUkNFX1VSSSA9ICdodHRwczovL2hnLnB5dGhvbi5vcmcvY3B5dGhvbi9maWxlLzMuNi8lcycKIAogIyBtb25rZXktcGF0Y2ggcmVTVCBwYXJzZXIgdG8gZGlzYWJsZSBhbHBoYWJldGljIGFuZCByb21hbiBlbnVtZXJhdGVkIGxpc3RzCiBmcm9tIGRvY3V0aWxzLnBhcnNlcnMucnN0LnN0YXRlcyBpbXBvcnQgQm9keQpkaWZmIC0tZ2l0IGEvRG9jL3Rvb2xzL3JzdGxpbnQucHkgYi9Eb2MvdG9vbHMvcnN0bGludC5weQppbmRleCBkZTc4MDQxLi4yYzE4MTZlIDEwMDc1NQotLS0gYS9Eb2MvdG9vbHMvcnN0bGludC5weQorKysgYi9Eb2MvdG9vbHMvcnN0bGludC5weQpAQCAtOSw4ICs5LDYgQEAKICMgVE9ETzogLSB3cm9uZyB2ZXJzaW9ucyBpbiB2ZXJzaW9uYWRkZWQvY2hhbmdlZAogIyAgICAgICAtIHdyb25nIG1hcmt1cCBhZnRlciB2ZXJzaW9uY2hhbmdlZCBkaXJlY3RpdmUKIAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVudAotCiBpbXBvcnQgb3MKIGltcG9ydCByZQogaW1wb3J0IHN5cwpkaWZmIC0tZ2l0IGEvRG9jL3Rvb2xzL3N1c3AtaWdub3JlZC5jc3YgYi9Eb2MvdG9vbHMvc3VzcC1pZ25vcmVkLmNzdgppbmRleCBkYmE5M2JmLi45NjQ4M2M0IDEwMDY0NAotLS0gYS9Eb2MvdG9vbHMvc3VzcC1pZ25vcmVkLmNzdgorKysgYi9Eb2MvdG9vbHMvc3VzcC1pZ25vcmVkLmNzdgpAQCAtMjUsNiArMjUsMzAgQEAKIGhvd3RvL2N1cnNlcywsOm1hZ2VudGEsIjI6Z3JlZW4sIDM6eWVsbG93LCA0OmJsdWUsIDU6bWFnZW50YSwgNjpjeWFuLCBhbmQgNzp3aGl0ZS4gIFRoZSIKIGhvd3RvL2N1cnNlcywsOmN5YW4sIjI6Z3JlZW4sIDM6eWVsbG93LCA0OmJsdWUsIDU6bWFnZW50YSwgNjpjeWFuLCBhbmQgNzp3aGl0ZS4gIFRoZSIKIGhvd3RvL2N1cnNlcywsOndoaXRlLCIyOmdyZWVuLCAzOnllbGxvdywgNDpibHVlLCA1Om1hZ2VudGEsIDY6Y3lhbiwgYW5kIDc6d2hpdGUuICBUaGUiCitob3d0by9pbnN0cnVtZW50YXRpb24sLDo6LHB5dGhvbiR0YXJnZXQ6OjpmdW5jdGlvbi1lbnRyeQoraG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6ZnVuY3Rpb24scHl0aG9uJHRhcmdldDo6OmZ1bmN0aW9uLWVudHJ5Citob3d0by9pbnN0cnVtZW50YXRpb24sLDo6LHB5dGhvbiR0YXJnZXQ6OjpmdW5jdGlvbi1yZXR1cm4KK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOmZ1bmN0aW9uLHB5dGhvbiR0YXJnZXQ6OjpmdW5jdGlvbi1yZXR1cm4KK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOmNhbGwsMTU2NjQxMzYwNTAyMjgwICBmdW5jdGlvbi1lbnRyeTpjYWxsX3N0YWNrLnB5OnN0YXJ0OjIzCitob3d0by9pbnN0cnVtZW50YXRpb24sLDpzdGFydCwxNTY2NDEzNjA1MDIyODAgIGZ1bmN0aW9uLWVudHJ5OmNhbGxfc3RhY2sucHk6c3RhcnQ6MjMKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOmZ1bmN0aW9uLDE1NjY0MTM2MDUxODgwNCAgZnVuY3Rpb24tZW50cnk6IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMToxCitob3d0by9pbnN0cnVtZW50YXRpb24sLDpmdW5jdGlvbiwxNTY2NDEzNjA1MzI3OTcgIGZ1bmN0aW9uLWVudHJ5OiAgY2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjkKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOmZ1bmN0aW9uLDE1NjY0MTM2MDU0NjgwNyBmdW5jdGlvbi1yZXR1cm46ICBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzM6MTAKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOmZ1bmN0aW9uLDE1NjY0MTM2MDU2MzM2NyBmdW5jdGlvbi1yZXR1cm46IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMToyCitob3d0by9pbnN0cnVtZW50YXRpb24sLDpmdW5jdGlvbiwxNTY2NDEzNjA1NzgzNjUgIGZ1bmN0aW9uLWVudHJ5OiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzI6NQoraG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6ZnVuY3Rpb24sMTU2NjQxMzYwNTkxNzU3ICBmdW5jdGlvbi1lbnRyeTogIGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMToxCitob3d0by9pbnN0cnVtZW50YXRpb24sLDpmdW5jdGlvbiwxNTY2NDEzNjA2MDU1NTYgIGZ1bmN0aW9uLWVudHJ5OiAgIGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMzo5Citob3d0by9pbnN0cnVtZW50YXRpb24sLDpmdW5jdGlvbiwxNTY2NDEzNjA2MTc0ODIgZnVuY3Rpb24tcmV0dXJuOiAgIGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMzoxMAoraG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6ZnVuY3Rpb24sMTU2NjQxMzYwNjI5ODE0IGZ1bmN0aW9uLXJldHVybjogIGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMToyCitob3d0by9pbnN0cnVtZW50YXRpb24sLDpmdW5jdGlvbiwxNTY2NDEzNjA2NDIyODUgZnVuY3Rpb24tcmV0dXJuOiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzI6NgoraG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6ZnVuY3Rpb24sMTU2NjQxMzYwNjU2NzcwICBmdW5jdGlvbi1lbnRyeTogY2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjkKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOmZ1bmN0aW9uLDE1NjY0MTM2MDY2OTcwNyBmdW5jdGlvbi1yZXR1cm46IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMzoxMAoraG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6ZnVuY3Rpb24sMTU2NjQxMzYwNjg3ODUzICBmdW5jdGlvbi1lbnRyeTogY2FsbF9zdGFjay5weTpmdW5jdGlvbl80OjEzCitob3d0by9pbnN0cnVtZW50YXRpb24sLDpmdW5jdGlvbiwxNTY2NDEzNjA3MDA3MTkgZnVuY3Rpb24tcmV0dXJuOiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzQ6MTQKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOmZ1bmN0aW9uLDE1NjY0MTM2MDcxOTY0MCAgZnVuY3Rpb24tZW50cnk6IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fNToxOAoraG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6ZnVuY3Rpb24sMTU2NjQxMzYwNzMyNTY3IGZ1bmN0aW9uLXJldHVybjogY2FsbF9zdGFjay5weTpmdW5jdGlvbl81OjIxCitob3d0by9pbnN0cnVtZW50YXRpb24sLDpjYWxsLDE1NjY0MTM2MDc0NzM3MCBmdW5jdGlvbi1yZXR1cm46Y2FsbF9zdGFjay5weTpzdGFydDoyOAoraG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6c3RhcnQsMTU2NjQxMzYwNzQ3MzcwIGZ1bmN0aW9uLXJldHVybjpjYWxsX3N0YWNrLnB5OnN0YXJ0OjI4CiBob3d0by9pcGFkZHJlc3MsLDpEQjgsPj4+IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcyMDAxOkRCODo6MScpCiBob3d0by9pcGFkZHJlc3MsLDo6LD4+PiBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMjAwMTpEQjg6OjEnKQogaG93dG8vaXBhZGRyZXNzLCw6ZGI4LElQdjZBZGRyZXNzKCcyMDAxOmRiODo6MScpCkBAIC0xMDYsNiArMTMwLDEwIEBACiBsaWJyYXJ5L2Z1bmN0aW9ucywsOnN0ZXAsYVtzdGFydDpzdG9wOnN0ZXBdCiBsaWJyYXJ5L2Z1bmN0aW9ucywsOnN0b3AsImFbc3RhcnQ6c3RvcCwgaV0iCiBsaWJyYXJ5L2Z1bmN0aW9ucywsOnN0b3AsYVtzdGFydDpzdG9wOnN0ZXBdCitsaWJyYXJ5L2hhc2hsaWItYmxha2UyLCw6dmF0cm9nYXNhYyw+Pj4gY29va2llID0gYid1c2VyOnZhdHJvZ2FzYWMnCitsaWJyYXJ5L2hhc2hsaWItYmxha2UyLCw6dmF0cm9nYXNhYywidXNlcjp2YXRyb2dhc2FjLDM0OWNmOTA0NTMzNzY3ZWQyZDc1NTI3OWE4ZGY4NGQwIgorbGlicmFyeS9oYXNobGliLWJsYWtlMiwsOnBvbGljYWphYywiPj4+IGNvbXBhcmVfZGlnZXN0KGIndXNlcjpwb2xpY2FqYWMnLCBzaWcpIgorbGlicmFyeS9oYXNobGliLWJsYWtlMiwsOkxFQUYsImgwMCA9IGJsYWtlMmIoYnVmWzA6TEVBRl9TSVpFXSwgZmFub3V0PUZBTk9VVCwgZGVwdGg9REVQVEgsIgogbGlicmFyeS9odHRwLmNsaWVudCwsOnBvcnQsaG9zdDpwb3J0CiBsaWJyYXJ5L2h0dHAuY29va2llcywsYCwhIyQlJicqKy0uXl9gfH46CiBsaWJyYXJ5L2ltYXBsaWIsLDpNTSwiIiJERC1NbW0tWVlZWSBISDpNTTpTUyIKQEAgLTE2MSw2ICsxODksNyBAQAogbGlicmFyeS9wcm9maWxlLCw6bGluZW5vLGZpbGVuYW1lOmxpbmVubyhmdW5jdGlvbikKIGxpYnJhcnkvcHlleHBhdCwsOmVsZW0xLDxweTplbGVtMSAvPgogbGlicmFyeS9weWV4cGF0LCw6cHksInhtbG5zOnB5ID0gIiJodHRwOi8vd3d3LnB5dGhvbi5vcmcvbnMvIiI+IgorbGlicmFyeS9yYW5kb20sLDpsZW4sbmV3X2RpZmYgPSBtZWFuKGNvbWJpbmVkWzpsZW4oZHJ1ZyldKSAtIG1lYW4oY29tYmluZWRbbGVuKGRydWcpOl0pCiBsaWJyYXJ5L3NtdHBsaWIsLDpwb3J0LG1ldGhvZCBtdXN0IHN1cHBvcnQgdGhhdCBhcyB3ZWxsIGFzIGEgcmVndWxhciBob3N0OnBvcnQKIGxpYnJhcnkvc29ja2V0LCw6OiwnNWFlZjoyYjo6OCcKIGxpYnJhcnkvc29ja2V0LCw6Y2FuLCJyZXR1cm4gKGNhbl9pZCwgY2FuX2RsYywgZGF0YVs6Y2FuX2RsY10pIgpAQCAtMjA1LDcgKzIzNCw4IEBACiBsaWJyYXJ5L3ZlbnYsLDpwYXJhbSwiOnBhcmFtIG5vZGlzdDogSWYgVHJ1ZSwgc2V0dXB0b29scyBhbmQgcGlwIGFyZSBub3QgaW5zdGFsbGVkIGludG8gdGhlIgogbGlicmFyeS92ZW52LCw6cGFyYW0sIjpwYXJhbSBwcm9ncmVzczogSWYgc2V0dXB0b29scyBvciBwaXAgYXJlIGluc3RhbGxlZCwgdGhlIHByb2dyZXNzIG9mIHRoZSIKIGxpYnJhcnkvdmVudiwsOnBhcmFtLCI6cGFyYW0gbm9waXA6IElmIFRydWUsIHBpcCBpcyBub3QgaW5zdGFsbGVkIGludG8gdGhlIGNyZWF0ZWQiCi1saWJyYXJ5L3ZlbnYsLDpwYXJhbSw6cGFyYW0gY29udGV4dDogVGhlIGluZm9ybWF0aW9uIGZvciB0aGUgZW52aXJvbm1lbnQgY3JlYXRpb24gcmVxdWVzdAorbGlicmFyeS92ZW52LCw6cGFyYW0sOnBhcmFtIGNvbnRleHQ6IFRoZSBpbmZvcm1hdGlvbiBmb3IgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQKK2xpYnJhcnkveG1scnBjLmNsaWVudCwsOm5pbCxleDpuaWwKIGxpYnJhcnkveG1scnBjLmNsaWVudCwsOnBhc3MsaHR0cDovL3VzZXI6cGFzc0Bob3N0OnBvcnQvcGF0aAogbGlicmFyeS94bWxycGMuY2xpZW50LCw6cGFzcyx1c2VyOnBhc3MKIGxpYnJhcnkveG1scnBjLmNsaWVudCwsOnBvcnQsaHR0cDovL3VzZXI6cGFzc0Bob3N0OnBvcnQvcGF0aApAQCAtMjM5LDcgKzI2OSw3IEBACiB1c2luZy9jbWRsaW5lLCw6bWVzc2FnZSxhY3Rpb246bWVzc2FnZTpjYXRlZ29yeTptb2R1bGU6bGluZQogdXNpbmcvY21kbGluZSwsOm1vZHVsZSxhY3Rpb246bWVzc2FnZTpjYXRlZ29yeTptb2R1bGU6bGluZQogdXNpbmcvdW5peCwsOlBhY2thZ2luZyxodHRwczovL2VuLm9wZW5zdXNlLm9yZy9Qb3J0YWw6UGFja2FnaW5nCi13aGF0c25ldy8yLjAsNDE4LDpsZW4sCit3aGF0c25ldy8yLjAsLDpsZW4sCiB3aGF0c25ldy8yLjMsLDo6LAogd2hhdHNuZXcvMi4zLCw6Y29uZmlnLAogd2hhdHNuZXcvMi4zLCw6Q3JpdGljYWwsCkBAIC0yNzIsMjcgKzMwMiwyOCBAQAogd2hhdHNuZXcvMy4yLCw6Z3osIj4+PiB3aXRoIHRhcmZpbGUub3BlbihuYW1lPSdteWFyY2hpdmUudGFyLmd6JywgbW9kZT0ndzpneicpIGFzIHRmOiIKIHdoYXRzbmV3LzMuMiwsOmxvY2F0aW9uLHpvcGU5LWxvY2F0aW9uID0gJHt6b3BlOTpsb2NhdGlvbn0KIHdoYXRzbmV3LzMuMiwsOnByZWZpeCx6b3BlLWNvbmYgPSAke2N1c3RvbTpwcmVmaXh9L2V0Yy96b3BlLmNvbmYKLXdoYXRzbmV3L2NoYW5nZWxvZywsOmd6LCI6IFRhckZpbGUgb3BlbmVkIHdpdGggZXh0ZXJuYWwgZmlsZW9iaiBhbmQgIiJ3Omd6IiIgbW9kZSBkaWRuJ3QiCi13aGF0c25ldy9jaGFuZ2Vsb2csLDo6LCI6IFVzZSAiIjEyNy4wLjAuMSIiIG9yICIiOjoxIiIgaW5zdGVhZCBvZiAiImxvY2FsaG9zdCIiIGFzIG11Y2ggYXMiCi1saWJyYXJ5L3RhcmZpbGUsMTQ5LDp4eiwneDp4eicKLWxpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLDI5MCw6c29tZXRhZyxwcmVmaXg6c29tZXRhZwotbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsMzAxLDpmaWN0aW9uYWwsIjxhY3RvcnMgeG1sbnM6ZmljdGlvbmFsPSIiaHR0cDovL2NoYXJhY3RlcnMuZXhhbXBsZS5jb20iIiIKLWxpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLDMwMSw6Y2hhcmFjdGVyLDxmaWN0aW9uYWw6Y2hhcmFjdGVyPkxhbmNlbG90PC9maWN0aW9uYWw6Y2hhcmFjdGVyPgotbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsMzAxLDpjaGFyYWN0ZXIsPGZpY3Rpb25hbDpjaGFyYWN0ZXI+QXJjaGllIExlYWNoPC9maWN0aW9uYWw6Y2hhcmFjdGVyPgotbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsMzAxLDpjaGFyYWN0ZXIsPGZpY3Rpb25hbDpjaGFyYWN0ZXI+U2lyIFJvYmluPC9maWN0aW9uYWw6Y2hhcmFjdGVyPgotbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsMzAxLDpjaGFyYWN0ZXIsPGZpY3Rpb25hbDpjaGFyYWN0ZXI+R3VudGhlcjwvZmljdGlvbmFsOmNoYXJhY3Rlcj4KLWxpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLDMwMSw6Y2hhcmFjdGVyLDxmaWN0aW9uYWw6Y2hhcmFjdGVyPkNvbW1hbmRlciBDbGVtZW50PC9maWN0aW9uYWw6Y2hhcmFjdGVyPgorbGlicmFyeS90YXJmaWxlLCw6eHosJ3g6eHonCitsaWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwsOnNvbWV0YWcscHJlZml4OnNvbWV0YWcKK2xpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLCw6ZmljdGlvbmFsLCI8YWN0b3JzIHhtbG5zOmZpY3Rpb25hbD0iImh0dHA6Ly9jaGFyYWN0ZXJzLmV4YW1wbGUuY29tIiIiCitsaWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwsOmNoYXJhY3Rlciw8ZmljdGlvbmFsOmNoYXJhY3Rlcj5MYW5jZWxvdDwvZmljdGlvbmFsOmNoYXJhY3Rlcj4KK2xpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLCw6Y2hhcmFjdGVyLDxmaWN0aW9uYWw6Y2hhcmFjdGVyPkFyY2hpZSBMZWFjaDwvZmljdGlvbmFsOmNoYXJhY3Rlcj4KK2xpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLCw6Y2hhcmFjdGVyLDxmaWN0aW9uYWw6Y2hhcmFjdGVyPlNpciBSb2JpbjwvZmljdGlvbmFsOmNoYXJhY3Rlcj4KK2xpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLCw6Y2hhcmFjdGVyLDxmaWN0aW9uYWw6Y2hhcmFjdGVyPkd1bnRoZXI8L2ZpY3Rpb25hbDpjaGFyYWN0ZXI+CitsaWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwsOmNoYXJhY3Rlciw8ZmljdGlvbmFsOmNoYXJhY3Rlcj5Db21tYW5kZXIgQ2xlbWVudDwvZmljdGlvbmFsOmNoYXJhY3Rlcj4KIGxpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLCw6YWN0b3IsImZvciBhY3RvciBpbiByb290LmZpbmRhbGwoJ3JlYWxfcGVyc29uOmFjdG9yJywgbnMpOiIKIGxpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLCw6bmFtZSwibmFtZSA9IGFjdG9yLmZpbmQoJ3JlYWxfcGVyc29uOm5hbWUnLCBucykiCiBsaWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwsOmNoYXJhY3RlciwiZm9yIGNoYXIgaW4gYWN0b3IuZmluZGFsbCgncm9sZTpjaGFyYWN0ZXInLCBucyk6IgotbGlicmFyeS96aXBhcHAsMzEsOm1haW4sIiQgcHl0aG9uIC1tIHppcGFwcCBteWFwcCAtbSAiIm15YXBwOm1haW4iIiIKLWxpYnJhcnkvemlwYXBwLDgyLDpmbiwiYXJndW1lbnQgc2hvdWxkIGhhdmUgdGhlIGZvcm0gIiJwa2cubW9kOmZuIiIsIHdoZXJlICIicGtnLm1vZCIiIGlzIGEiCi1saWJyYXJ5L3ppcGFwcCwxNTUsOmNhbGxhYmxlLCIiInBrZy5tb2R1bGU6Y2FsbGFibGUiIiBhbmQgdGhlIGFyY2hpdmUgd2lsbCBiZSBydW4gYnkgaW1wb3J0aW5nIgorbGlicmFyeS96aXBhcHAsLDptYWluLCIkIHB5dGhvbiAtbSB6aXBhcHAgbXlhcHAgLW0gIiJteWFwcDptYWluIiIiCitsaWJyYXJ5L3ppcGFwcCwsOmZuLCJhcmd1bWVudCBzaG91bGQgaGF2ZSB0aGUgZm9ybSAiInBrZy5tb2Q6Zm4iIiwgd2hlcmUgIiJwa2cubW9kIiIgaXMgYSIKK2xpYnJhcnkvemlwYXBwLCw6Y2FsbGFibGUsIiIicGtnLm1vZHVsZTpjYWxsYWJsZSIiIGFuZCB0aGUgYXJjaGl2ZSB3aWxsIGJlIHJ1biBieSBpbXBvcnRpbmciCiBsaWJyYXJ5L3N0ZHR5cGVzLCw6Oiw+Pj4gbVs6OjJdLnRvbGlzdCgpCiBsaWJyYXJ5L3N5cywsYCwjIGBgd3JhcHBlcmBgIGNyZWF0ZXMgYSBgYHdyYXAoY29ybylgYCBjb3JvdXRpbmU6Ci10dXRvcmlhbC92ZW52LDc3LDpjN2I5NjQ1YTZmMzUsIlB5dGhvbiAzLjQuMysgKDMuNDpjN2I5NjQ1YTZmMzUrLCBNYXkgMjIgMjAxNSwgMDk6MzE6MjUpIgogd2hhdHNuZXcvMy41LCw6cm9vdCwnV0FSTklORzpyb290Ondhcm5pbmdcbicKIHdoYXRzbmV3LzMuNSwsOndhcm5pbmcsJ1dBUk5JTkc6cm9vdDp3YXJuaW5nXG4nCiB3aGF0c25ldy8zLjUsLDo6LD4+PiBhZGRyNiA9IGlwYWRkcmVzcy5JUHY2QWRkcmVzcygnOjoxJykKIHdoYXRzbmV3LzMuNSwsOnJvb3QsRVJST1I6cm9vdDpleGNlcHRpb24KIHdoYXRzbmV3LzMuNSwsOmV4Y2VwdGlvbixFUlJPUjpyb290OmV4Y2VwdGlvbgord2hhdHNuZXcvY2hhbmdlbG9nLCw6dmVyc2lvbixpbXBvcnQgc3lzOyBJID0gdmVyc2lvbls6dmVyc2lvbi5pbmRleCgnICcpXQord2hhdHNuZXcvY2hhbmdlbG9nLCw6Z3osIjogVGFyRmlsZSBvcGVuZWQgd2l0aCBleHRlcm5hbCBmaWxlb2JqIGFuZCAiInc6Z3oiIiBtb2RlIGRpZG4ndCIKK3doYXRzbmV3L2NoYW5nZWxvZywsOjosIjogVXNlICIiMTI3LjAuMC4xIiIgb3IgIiI6OjEiIiBpbnN0ZWFkIG9mICIibG9jYWxob3N0IiIgYXMgbXVjaCBhcyIKK3doYXRzbmV3L2NoYW5nZWxvZywsYCwiZm9yIHJlYWRhYmlsaXR5ICh3YXMgIiJgIiIpLiIKZGlmZiAtLWdpdCBhL0RvYy90b29scy90ZW1wbGF0ZXMvaW5kZXhzaWRlYmFyLmh0bWwgYi9Eb2MvdG9vbHMvdGVtcGxhdGVzL2luZGV4c2lkZWJhci5odG1sCmluZGV4IGUyMjJhNDYuLjQxM2MwYTcgMTAwNjQ0Ci0tLSBhL0RvYy90b29scy90ZW1wbGF0ZXMvaW5kZXhzaWRlYmFyLmh0bWwKKysrIGIvRG9jL3Rvb2xzL3RlbXBsYXRlcy9pbmRleHNpZGViYXIuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoMz57JSB0cmFucyAlfURvY3MgZm9yIG90aGVyIHZlcnNpb25zeyUgZW5kdHJhbnMgJX08L2gzPgogPHVsPgogICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMi43LyI+eyUgdHJhbnMgJX1QeXRob24gMi43IChzdGFibGUpeyUgZW5kdHJhbnMgJX08L2E+PC9saT4KLSAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMuNi8iPnslIHRyYW5zICV9UHl0aG9uIDMuNiAocHJlLXJlbGVhc2UpeyUgZW5kdHJhbnMgJX08L2E+PC9saT4KKyAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMuNS8iPnslIHRyYW5zICV9UHl0aG9uIDMuNSAoc3RhYmxlKXslIGVuZHRyYW5zICV9PC9hPjwvbGk+CiAgIDxsaT48YSBocmVmPSJodHRwczovL2RvY3MucHl0aG9uLm9yZy8zLjcvIj57JSB0cmFucyAlfVB5dGhvbiAzLjcgKGluIGRldmVsb3BtZW50KXslIGVuZHRyYW5zICV9PC9hPjwvbGk+CiAgIDxsaT48YSBocmVmPSJodHRwczovL3d3dy5weXRob24ub3JnL2RvYy92ZXJzaW9ucy8iPnslIHRyYW5zICV9T2xkIHZlcnNpb25zeyUgZW5kdHJhbnMgJX08L2E+PC9saT4KIDwvdWw+CmRpZmYgLS1naXQgYS9Eb2MvdHV0b3JpYWwvY29udHJvbGZsb3cucnN0IGIvRG9jL3R1dG9yaWFsL2NvbnRyb2xmbG93LnJzdAppbmRleCAxMjk4OWIyLi5kNDM0NjE4IDEwMDY0NAotLS0gYS9Eb2MvdHV0b3JpYWwvY29udHJvbGZsb3cucnN0CisrKyBiL0RvYy90dXRvcmlhbC9jb250cm9sZmxvdy5yc3QKQEAgLTc4LDYgKzc4LDkgQEAKICAgID4+PiB3b3JkcwogICAgWydkZWZlbmVzdHJhdGUnLCAnY2F0JywgJ3dpbmRvdycsICdkZWZlbmVzdHJhdGUnXQogCitXaXRoIGBgZm9yIHcgaW4gd29yZHM6YGAsIHRoZSBleGFtcGxlIHdvdWxkIGF0dGVtcHQgdG8gY3JlYXRlIGFuIGluZmluaXRlIGxpc3QsCitpbnNlcnRpbmcgYGBkZWZlbmVzdHJhdGVgYCBvdmVyIGFuZCBvdmVyIGFnYWluLgorCiAKIC4uIF90dXQtcmFuZ2U6CiAKZGlmZiAtLWdpdCBhL0RvYy90dXRvcmlhbC9kYXRhc3RydWN0dXJlcy5yc3QgYi9Eb2MvdHV0b3JpYWwvZGF0YXN0cnVjdHVyZXMucnN0CmluZGV4IGIzOWJkZjQuLjk1M2E2OGIgMTAwNjQ0Ci0tLSBhL0RvYy90dXRvcmlhbC9kYXRhc3RydWN0dXJlcy5yc3QKKysrIGIvRG9jL3R1dG9yaWFsL2RhdGFzdHJ1Y3R1cmVzLnJzdApAQCAtNjAsMTEgKzYwLDE2IEBACiAgICBSZW1vdmUgYWxsIGl0ZW1zIGZyb20gdGhlIGxpc3QuICBFcXVpdmFsZW50IHRvIGBgZGVsIGFbOl1gYC4KIAogCi0uLiBtZXRob2Q6OiBsaXN0LmluZGV4KHgpCisuLiBtZXRob2Q6OiBsaXN0LmluZGV4KHhbLCBzdGFydFssIGVuZF1dKQogICAgOm5vaW5kZXg6CiAKLSAgIFJldHVybiB0aGUgaW5kZXggaW4gdGhlIGxpc3Qgb2YgdGhlIGZpcnN0IGl0ZW0gd2hvc2UgdmFsdWUgaXMgKngqLiBJdCBpcyBhbgotICAgZXJyb3IgaWYgdGhlcmUgaXMgbm8gc3VjaCBpdGVtLgorICAgUmV0dXJuIHplcm8tYmFzZWQgaW5kZXggaW4gdGhlIGxpc3Qgb2YgdGhlIGZpcnN0IGl0ZW0gd2hvc2UgdmFsdWUgaXMgKngqLgorICAgUmFpc2VzIGEgOmV4YzpgVmFsdWVFcnJvcmAgaWYgdGhlcmUgaXMgbm8gc3VjaCBpdGVtLgorCisgICBUaGUgb3B0aW9uYWwgYXJndW1lbnRzICpzdGFydCogYW5kICplbmQqIGFyZSBpbnRlcnByZXRlZCBhcyBpbiB0aGUgc2xpY2UKKyAgIG5vdGF0aW9uIGFuZCBhcmUgdXNlZCB0byBsaW1pdCB0aGUgc2VhcmNoIHRvIGEgcGFydGljdWxhciBzdWJzZXF1ZW5jZSBvZgorICAgKngqLiAgVGhlIHJldHVybmVkIGluZGV4IGlzIGNvbXB1dGVkIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZ1bGwKKyAgIHNlcXVlbmNlIHJhdGhlciB0aGFuIHRoZSAqc3RhcnQqIGFyZ3VtZW50LgogCiAKIC4uIG1ldGhvZDo6IGxpc3QuY291bnQoeCkKQEAgLTk0LDI4ICs5OSwyNiBAQAogCiBBbiBleGFtcGxlIHRoYXQgdXNlcyBtb3N0IG9mIHRoZSBsaXN0IG1ldGhvZHM6OgogCi0gICA+Pj4gYSA9IFs2Ni4yNSwgMzMzLCAzMzMsIDEsIDEyMzQuNV0KLSAgID4+PiBwcmludChhLmNvdW50KDMzMyksIGEuY291bnQoNjYuMjUpLCBhLmNvdW50KCd4JykpCi0gICAyIDEgMAotICAgPj4+IGEuaW5zZXJ0KDIsIC0xKQotICAgPj4+IGEuYXBwZW5kKDMzMykKLSAgID4+PiBhCi0gICBbNjYuMjUsIDMzMywgLTEsIDMzMywgMSwgMTIzNC41LCAzMzNdCi0gICA+Pj4gYS5pbmRleCgzMzMpCi0gICAxCi0gICA+Pj4gYS5yZW1vdmUoMzMzKQotICAgPj4+IGEKLSAgIFs2Ni4yNSwgLTEsIDMzMywgMSwgMTIzNC41LCAzMzNdCi0gICA+Pj4gYS5yZXZlcnNlKCkKLSAgID4+PiBhCi0gICBbMzMzLCAxMjM0LjUsIDEsIDMzMywgLTEsIDY2LjI1XQotICAgPj4+IGEuc29ydCgpCi0gICA+Pj4gYQotICAgWy0xLCAxLCA2Ni4yNSwgMzMzLCAzMzMsIDEyMzQuNV0KLSAgID4+PiBhLnBvcCgpCi0gICAxMjM0LjUKLSAgID4+PiBhCi0gICBbLTEsIDEsIDY2LjI1LCAzMzMsIDMzM10KKyAgICA+Pj4gZnJ1aXRzID0gWydvcmFuZ2UnLCAnYXBwbGUnLCAncGVhcicsICdiYW5hbmEnLCAna2l3aScsICdhcHBsZScsICdiYW5hbmEnXQorICAgID4+PiBmcnVpdHMuY291bnQoJ2FwcGxlJykKKyAgICAyCisgICAgPj4+IGZydWl0cy5jb3VudCgndGFuZ2VyaW5lJykKKyAgICAwCisgICAgPj4+IGZydWl0cy5pbmRleCgnYmFuYW5hJykKKyAgICAzCisgICAgPj4+IGZydWl0cy5pbmRleCgnYmFuYW5hJywgNCkgICMgRmluZCBuZXh0IGJhbmFuYSBzdGFydGluZyBhIHBvc2l0aW9uIDQKKyAgICA2CisgICAgPj4+IGZydWl0cy5yZXZlcnNlKCkKKyAgICA+Pj4gZnJ1aXRzCisgICAgWydiYW5hbmEnLCAnYXBwbGUnLCAna2l3aScsICdiYW5hbmEnLCAncGVhcicsICdhcHBsZScsICdvcmFuZ2UnXQorICAgID4+PiBmcnVpdHMuYXBwZW5kKCdncmFwZScpCisgICAgPj4+IGZydWl0cworICAgIFsnYmFuYW5hJywgJ2FwcGxlJywgJ2tpd2knLCAnYmFuYW5hJywgJ3BlYXInLCAnYXBwbGUnLCAnb3JhbmdlJywgJ2dyYXBlJ10KKyAgICA+Pj4gZnJ1aXRzLnNvcnQoKQorICAgID4+PiBmcnVpdHMKKyAgICBbJ2FwcGxlJywgJ2FwcGxlJywgJ2JhbmFuYScsICdiYW5hbmEnLCAnZ3JhcGUnLCAna2l3aScsICdvcmFuZ2UnLCAncGVhciddCisgICAgPj4+IGZydWl0cy5wb3AoKQorICAgICdwZWFyJwogCiBZb3UgbWlnaHQgaGF2ZSBub3RpY2VkIHRoYXQgbWV0aG9kcyBsaWtlIGBgaW5zZXJ0YGAsIGBgcmVtb3ZlYGAgb3IgYGBzb3J0YGAgdGhhdAogb25seSBtb2RpZnkgdGhlIGxpc3QgaGF2ZSBubyByZXR1cm4gdmFsdWUgcHJpbnRlZCAtLSB0aGV5IHJldHVybiB0aGUgZGVmYXVsdApkaWZmIC0tZ2l0IGEvRG9jL3R1dG9yaWFsL2Vycm9ycy5yc3QgYi9Eb2MvdHV0b3JpYWwvZXJyb3JzLnJzdAppbmRleCA3NTk1ODhmLi5hYmE2MWRhIDEwMDY0NAotLS0gYS9Eb2MvdHV0b3JpYWwvZXJyb3JzLnJzdAorKysgYi9Eb2MvdHV0b3JpYWwvZXJyb3JzLnJzdApAQCAtMTc0LDcgKzE3NCw3IEBACiAgICBmb3IgYXJnIGluIHN5cy5hcmd2WzE6XToKICAgICAgICB0cnk6CiAgICAgICAgICAgIGYgPSBvcGVuKGFyZywgJ3InKQotICAgICAgIGV4Y2VwdCBJT0Vycm9yOgorICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICBwcmludCgnY2Fubm90IG9wZW4nLCBhcmcpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcHJpbnQoYXJnLCAnaGFzJywgbGVuKGYucmVhZGxpbmVzKCkpLCAnbGluZXMnKQpkaWZmIC0tZ2l0IGEvRG9jL3R1dG9yaWFsL2lucHV0b3V0cHV0LnJzdCBiL0RvYy90dXRvcmlhbC9pbnB1dG91dHB1dC5yc3QKaW5kZXggZGQ5YzdjZC4uYmVlYWFjMyAxMDA2NDQKLS0tIGEvRG9jL3R1dG9yaWFsL2lucHV0b3V0cHV0LnJzdAorKysgYi9Eb2MvdHV0b3JpYWwvaW5wdXRvdXRwdXQucnN0CkBAIC0yNSw3ICsyNSw4IEBACiBjb25jYXRlbmF0aW9uIG9wZXJhdGlvbnMgeW91IGNhbiBjcmVhdGUgYW55IGxheW91dCB5b3UgY2FuIGltYWdpbmUuICBUaGUKIHN0cmluZyB0eXBlIGhhcyBzb21lIG1ldGhvZHMgdGhhdCBwZXJmb3JtIHVzZWZ1bCBvcGVyYXRpb25zIGZvciBwYWRkaW5nCiBzdHJpbmdzIHRvIGEgZ2l2ZW4gY29sdW1uIHdpZHRoOyB0aGVzZSB3aWxsIGJlIGRpc2N1c3NlZCBzaG9ydGx5LiAgVGhlIHNlY29uZAotd2F5IGlzIHRvIHVzZSB0aGUgOm1ldGg6YHN0ci5mb3JtYXRgIG1ldGhvZC4KK3dheSBpcyB0byB1c2UgOnJlZjpgZm9ybWF0dGVkIHN0cmluZyBsaXRlcmFscyA8Zi1zdHJpbmdzPmAsIG9yIHRoZQorOm1ldGg6YHN0ci5mb3JtYXRgIG1ldGhvZC4KIAogVGhlIDptb2Q6YHN0cmluZ2AgbW9kdWxlIGNvbnRhaW5zIGEgOmNsYXNzOmB+c3RyaW5nLlRlbXBsYXRlYCBjbGFzcyB3aGljaCBvZmZlcnMKIHlldCBhbm90aGVyIHdheSB0byBzdWJzdGl0dXRlIHZhbHVlcyBpbnRvIHN0cmluZ3MuCmRpZmYgLS1naXQgYS9Eb2MvdHV0b3JpYWwvaW50ZXJwcmV0ZXIucnN0IGIvRG9jL3R1dG9yaWFsL2ludGVycHJldGVyLnJzdAppbmRleCBlOGQ4ZTJiLi5mYWY1N2EzIDEwMDY0NAotLS0gYS9Eb2MvdHV0b3JpYWwvaW50ZXJwcmV0ZXIucnN0CisrKyBiL0RvYy90dXRvcmlhbC9pbnRlcnByZXRlci5yc3QKQEAgLTEwLDEzICsxMCwxMyBAQAogSW52b2tpbmcgdGhlIEludGVycHJldGVyCiA9PT09PT09PT09PT09PT09PT09PT09PT0KIAotVGhlIFB5dGhvbiBpbnRlcnByZXRlciBpcyB1c3VhbGx5IGluc3RhbGxlZCBhcyA6ZmlsZTpgL3Vzci9sb2NhbC9iaW4vcHl0aG9uMy41YAorVGhlIFB5dGhvbiBpbnRlcnByZXRlciBpcyB1c3VhbGx5IGluc3RhbGxlZCBhcyA6ZmlsZTpgL3Vzci9sb2NhbC9iaW4vcHl0aG9uMy42YAogb24gdGhvc2UgbWFjaGluZXMgd2hlcmUgaXQgaXMgYXZhaWxhYmxlOyBwdXR0aW5nIDpmaWxlOmAvdXNyL2xvY2FsL2JpbmAgaW4geW91cgogVW5peCBzaGVsbCdzIHNlYXJjaCBwYXRoIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHN0YXJ0IGl0IGJ5IHR5cGluZyB0aGUgY29tbWFuZDoKIAogLi4gY29kZS1ibG9jazo6IHRleHQKIAotICAgcHl0aG9uMy41CisgICBweXRob24zLjYKIAogdG8gdGhlIHNoZWxsLiBbI11fIFNpbmNlIHRoZSBjaG9pY2Ugb2YgdGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgaW50ZXJwcmV0ZXIgbGl2ZXMKIGlzIGFuIGluc3RhbGxhdGlvbiBvcHRpb24sIG90aGVyIHBsYWNlcyBhcmUgcG9zc2libGU7IGNoZWNrIHdpdGggeW91ciBsb2NhbApAQCAtMjQsMTEgKzI0LDExIEBACiBwb3B1bGFyIGFsdGVybmF0aXZlIGxvY2F0aW9uLikKIAogT24gV2luZG93cyBtYWNoaW5lcywgdGhlIFB5dGhvbiBpbnN0YWxsYXRpb24gaXMgdXN1YWxseSBwbGFjZWQgaW4KLTpmaWxlOmBDOlxcUHl0aG9uMzVgLCB0aG91Z2ggeW91IGNhbiBjaGFuZ2UgdGhpcyB3aGVuIHlvdSdyZSBydW5uaW5nIHRoZQorOmZpbGU6YEM6XFxQeXRob24zNmAsIHRob3VnaCB5b3UgY2FuIGNoYW5nZSB0aGlzIHdoZW4geW91J3JlIHJ1bm5pbmcgdGhlCiBpbnN0YWxsZXIuICBUbyBhZGQgdGhpcyBkaXJlY3RvcnkgdG8geW91ciBwYXRoLCAgeW91IGNhbiB0eXBlIHRoZSBmb2xsb3dpbmcKIGNvbW1hbmQgaW50byB0aGUgY29tbWFuZCBwcm9tcHQgaW4gYSBET1MgYm94OjoKIAotICAgc2V0IHBhdGg9JXBhdGglO0M6XHB5dGhvbjM1CisgICBzZXQgcGF0aD0lcGF0aCU7QzpccHl0aG9uMzYKIAogVHlwaW5nIGFuIGVuZC1vZi1maWxlIGNoYXJhY3RlciAoOmtiZDpgQ29udHJvbC1EYCBvbiBVbml4LCA6a2JkOmBDb250cm9sLVpgIG9uCiBXaW5kb3dzKSBhdCB0aGUgcHJpbWFyeSBwcm9tcHQgY2F1c2VzIHRoZSBpbnRlcnByZXRlciB0byBleGl0IHdpdGggYSB6ZXJvIGV4aXQKQEAgLTk4LDggKzk4LDggQEAKIAogLi4gY29kZS1ibG9jazo6IHNoZWxsLXNlc3Npb24KIAotICAgJCBweXRob24zLjUKLSAgIFB5dGhvbiAzLjUgKGRlZmF1bHQsIFNlcCAxNiAyMDE1LCAwOToyNTowNCkKKyAgICQgcHl0aG9uMy42CisgICBQeXRob24gMy42IChkZWZhdWx0LCBTZXAgMTYgMjAxNSwgMDk6MjU6MDQpCiAgICBbR0NDIDQuOC4yXSBvbiBsaW51eAogICAgVHlwZSAiaGVscCIsICJjb3B5cmlnaHQiLCAiY3JlZGl0cyIgb3IgImxpY2Vuc2UiIGZvciBtb3JlIGluZm9ybWF0aW9uLgogICAgPj4+CmRpZmYgLS1naXQgYS9Eb2MvdHV0b3JpYWwvaW50cm9kdWN0aW9uLnJzdCBiL0RvYy90dXRvcmlhbC9pbnRyb2R1Y3Rpb24ucnN0CmluZGV4IDIxNDAzMjkuLjdlOGVlM2UgMTAwNjQ0Ci0tLSBhL0RvYy90dXRvcmlhbC9pbnRyb2R1Y3Rpb24ucnN0CisrKyBiL0RvYy90dXRvcmlhbC9pbnRyb2R1Y3Rpb24ucnN0CkBAIC0zNTIsNiArMzUyLDkgQEAKICAgICAgIFN0cmluZ3Mgc3VwcG9ydCBhIGxhcmdlIG51bWJlciBvZiBtZXRob2RzIGZvcgogICAgICAgYmFzaWMgdHJhbnNmb3JtYXRpb25zIGFuZCBzZWFyY2hpbmcuCiAKKyAgIDpyZWY6YGYtc3RyaW5nc2AKKyAgICAgIFN0cmluZyBsaXRlcmFscyB0aGF0IGhhdmUgZW1iZWRkZWQgZXhwcmVzc2lvbnMuCisKICAgIDpyZWY6YGZvcm1hdHN0cmluZ3NgCiAgICAgICBJbmZvcm1hdGlvbiBhYm91dCBzdHJpbmcgZm9ybWF0dGluZyB3aXRoIDptZXRoOmBzdHIuZm9ybWF0YC4KIApkaWZmIC0tZ2l0IGEvRG9jL3R1dG9yaWFsL3N0ZGxpYi5yc3QgYi9Eb2MvdHV0b3JpYWwvc3RkbGliLnJzdAppbmRleCA1MmZmZGJlLi4xZGQwNmMyIDEwMDY0NAotLS0gYS9Eb2MvdHV0b3JpYWwvc3RkbGliLnJzdAorKysgYi9Eb2MvdHV0b3JpYWwvc3RkbGliLnJzdApAQCAtMTUsNyArMTUsNyBAQAogCiAgICA+Pj4gaW1wb3J0IG9zCiAgICA+Pj4gb3MuZ2V0Y3dkKCkgICAgICAjIFJldHVybiB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeQotICAgJ0M6XFxQeXRob24zNScKKyAgICdDOlxcUHl0aG9uMzYnCiAgICA+Pj4gb3MuY2hkaXIoJy9zZXJ2ZXIvYWNjZXNzbG9ncycpICAgIyBDaGFuZ2UgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeQogICAgPj4+IG9zLnN5c3RlbSgnbWtkaXIgdG9kYXknKSAgICMgUnVuIHRoZSBjb21tYW5kIG1rZGlyIGluIHRoZSBzeXN0ZW0gc2hlbGwKICAgIDAKZGlmZiAtLWdpdCBhL0RvYy90dXRvcmlhbC9zdGRsaWIyLnJzdCBiL0RvYy90dXRvcmlhbC9zdGRsaWIyLnJzdAppbmRleCBmNzMzZmZjLi5iZjAyYzcxIDEwMDY0NAotLS0gYS9Eb2MvdHV0b3JpYWwvc3RkbGliMi5yc3QKKysrIGIvRG9jL3R1dG9yaWFsL3N0ZGxpYjIucnN0CkBAIC0yNzgsNyArMjc4LDcgQEAKICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KICAgICAgICBkWydwcmltYXJ5J10gICAgICAgICAgICAgICAgIyBlbnRyeSB3YXMgYXV0b21hdGljYWxseSByZW1vdmVkCi0gICAgIEZpbGUgIkM6L3B5dGhvbjM1L2xpYi93ZWFrcmVmLnB5IiwgbGluZSA0NiwgaW4gX19nZXRpdGVtX18KKyAgICAgRmlsZSAiQzovcHl0aG9uMzYvbGliL3dlYWtyZWYucHkiLCBsaW5lIDQ2LCBpbiBfX2dldGl0ZW1fXwogICAgICAgIG8gPSBzZWxmLmRhdGFba2V5XSgpCiAgICBLZXlFcnJvcjogJ3ByaW1hcnknCiAKZGlmZiAtLWdpdCBhL0RvYy90dXRvcmlhbC92ZW52LnJzdCBiL0RvYy90dXRvcmlhbC92ZW52LnJzdAppbmRleCAzYjJlZTJlLi5lMmRkNTdkIDEwMDY0NAotLS0gYS9Eb2MvdHV0b3JpYWwvdmVudi5yc3QKKysrIGIvRG9jL3R1dG9yaWFsL3ZlbnYucnN0CkBAIC0yMCwxNSArMjAsMTQgQEAKIHRoZSByZXF1aXJlbWVudHMgYXJlIGluIGNvbmZsaWN0IGFuZCBpbnN0YWxsaW5nIGVpdGhlciB2ZXJzaW9uIDEuMCBvciAyLjAKIHdpbGwgbGVhdmUgb25lIGFwcGxpY2F0aW9uIHVuYWJsZSB0byBydW4uCiAKLVRoZSBzb2x1dGlvbiBmb3IgdGhpcyBwcm9ibGVtIGlzIHRvIGNyZWF0ZSBhIDp0ZXJtOmB2aXJ0dWFsCi1lbnZpcm9ubWVudGAgKG9mdGVuIHNob3J0ZW5lZCB0byAidmlydHVhbGVudiIpLCBhIHNlbGYtY29udGFpbmVkCi1kaXJlY3RvcnkgdHJlZSB0aGF0IGNvbnRhaW5zIGEgUHl0aG9uIGluc3RhbGxhdGlvbiBmb3IgYSBwYXJ0aWN1bGFyCi12ZXJzaW9uIG9mIFB5dGhvbiwgcGx1cyBhIG51bWJlciBvZiBhZGRpdGlvbmFsIHBhY2thZ2VzLgorVGhlIHNvbHV0aW9uIGZvciB0aGlzIHByb2JsZW0gaXMgdG8gY3JlYXRlIGEgOnRlcm06YHZpcnR1YWwgZW52aXJvbm1lbnRgLCBhCitzZWxmLWNvbnRhaW5lZCBkaXJlY3RvcnkgdHJlZSB0aGF0IGNvbnRhaW5zIGEgUHl0aG9uIGluc3RhbGxhdGlvbiBmb3IgYQorcGFydGljdWxhciB2ZXJzaW9uIG9mIFB5dGhvbiwgcGx1cyBhIG51bWJlciBvZiBhZGRpdGlvbmFsIHBhY2thZ2VzLgogCiBEaWZmZXJlbnQgYXBwbGljYXRpb25zIGNhbiB0aGVuIHVzZSBkaWZmZXJlbnQgdmlydHVhbCBlbnZpcm9ubWVudHMuCiBUbyByZXNvbHZlIHRoZSBlYXJsaWVyIGV4YW1wbGUgb2YgY29uZmxpY3RpbmcgcmVxdWlyZW1lbnRzLAogYXBwbGljYXRpb24gQSBjYW4gaGF2ZSBpdHMgb3duIHZpcnR1YWwgZW52aXJvbm1lbnQgd2l0aCB2ZXJzaW9uIDEuMAotaW5zdGFsbGVkIHdoaWxlIGFwcGxpY2F0aW9uIEIgaGFzIGFub3RoZXIgdmlydHVhbGVudiB3aXRoIHZlcnNpb24gMi4wLgoraW5zdGFsbGVkIHdoaWxlIGFwcGxpY2F0aW9uIEIgaGFzIGFub3RoZXIgdmlydHVhbCBlbnZpcm9ubWVudCB3aXRoIHZlcnNpb24gMi4wLgogSWYgYXBwbGljYXRpb24gQiByZXF1aXJlcyBhIGxpYnJhcnkgYmUgdXBncmFkZWQgdG8gdmVyc2lvbiAzLjAsIHRoaXMgd2lsbAogbm90IGFmZmVjdCBhcHBsaWNhdGlvbiBBJ3MgZW52aXJvbm1lbnQuCiAKQEAgLTM2LDI5ICszNSwyNiBAQAogQ3JlYXRpbmcgVmlydHVhbCBFbnZpcm9ubWVudHMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLVRoZSBzY3JpcHQgdXNlZCB0byBjcmVhdGUgYW5kIG1hbmFnZSB2aXJ0dWFsIGVudmlyb25tZW50cyBpcyBjYWxsZWQKLTpwcm9ncmFtOmBweXZlbnZgLiAgOnByb2dyYW06YHB5dmVudmAgd2lsbCB1c3VhbGx5IGluc3RhbGwgdGhlIG1vc3QKLXJlY2VudCB2ZXJzaW9uIG9mIFB5dGhvbiB0aGF0IHlvdSBoYXZlIGF2YWlsYWJsZTsgdGhlIHNjcmlwdCBpcyBhbHNvCi1pbnN0YWxsZWQgd2l0aCBhIHZlcnNpb24gbnVtYmVyLCBzbyBpZiB5b3UgaGF2ZSBtdWx0aXBsZSB2ZXJzaW9ucyBvZgotUHl0aG9uIG9uIHlvdXIgc3lzdGVtIHlvdSBjYW4gc2VsZWN0IGEgc3BlY2lmaWMgUHl0aG9uIHZlcnNpb24gYnkKLXJ1bm5pbmcgYGBweXZlbnYtMy40YGAgb3Igd2hpY2hldmVyIHZlcnNpb24geW91IHdhbnQuCitUaGUgbW9kdWxlIHVzZWQgdG8gY3JlYXRlIGFuZCBtYW5hZ2UgdmlydHVhbCBlbnZpcm9ubWVudHMgaXMgY2FsbGVkCis6bW9kOmB2ZW52YC4gIDptb2Q6YHZlbnZgIHdpbGwgdXN1YWxseSBpbnN0YWxsIHRoZSBtb3N0IHJlY2VudCB2ZXJzaW9uIG9mCitQeXRob24gdGhhdCB5b3UgaGF2ZSBhdmFpbGFibGUuIElmIHlvdSBoYXZlIG11bHRpcGxlIHZlcnNpb25zIG9mIFB5dGhvbiBvbiB5b3VyCitzeXN0ZW0sIHlvdSBjYW4gc2VsZWN0IGEgc3BlY2lmaWMgUHl0aG9uIHZlcnNpb24gYnkgcnVubmluZyBgYHB5dGhvbjNgYCBvcgord2hpY2hldmVyIHZlcnNpb24geW91IHdhbnQuCiAKLVRvIGNyZWF0ZSBhIHZpcnR1YWxlbnYsIGRlY2lkZSB1cG9uIGEgZGlyZWN0b3J5Ci13aGVyZSB5b3Ugd2FudCB0byBwbGFjZSBpdCBhbmQgcnVuIDpwcm9ncmFtOmBweXZlbnZgIHdpdGggdGhlCi1kaXJlY3RvcnkgcGF0aDo6CitUbyBjcmVhdGUgYSB2aXJ0dWFsIGVudmlyb25tZW50LCBkZWNpZGUgdXBvbiBhIGRpcmVjdG9yeSB3aGVyZSB5b3Ugd2FudCB0bworcGxhY2UgaXQsIGFuZCBydW4gdGhlIDptb2Q6YHZlbnZgIG1vZHVsZSBhcyBhIHNjcmlwdCB3aXRoIHRoZSBkaXJlY3RvcnkgcGF0aDo6CiAKLSAgIHB5dmVudiB0dXRvcmlhbC1lbnYKKyAgIHB5dGhvbjMgLW0gdmVudiB0dXRvcmlhbC1lbnYKIAogVGhpcyB3aWxsIGNyZWF0ZSB0aGUgYGB0dXRvcmlhbC1lbnZgYCBkaXJlY3RvcnkgaWYgaXQgZG9lc24ndCBleGlzdCwKIGFuZCBhbHNvIGNyZWF0ZSBkaXJlY3RvcmllcyBpbnNpZGUgaXQgY29udGFpbmluZyBhIGNvcHkgb2YgdGhlIFB5dGhvbgogaW50ZXJwcmV0ZXIsIHRoZSBzdGFuZGFyZCBsaWJyYXJ5LCBhbmQgdmFyaW91cyBzdXBwb3J0aW5nIGZpbGVzLgogCi1PbmNlIHlvdSd2ZSBjcmVhdGVkIGEgdmlydHVhbCBlbnZpcm9ubWVudCwgeW91IG5lZWQgdG8KLWFjdGl2YXRlIGl0LgorT25jZSB5b3UndmUgY3JlYXRlZCBhIHZpcnR1YWwgZW52aXJvbm1lbnQsIHlvdSBtYXkgYWN0aXZhdGUgaXQuCiAKIE9uIFdpbmRvd3MsIHJ1bjo6CiAKLSAgdHV0b3JpYWwtZW52L1NjcmlwdHMvYWN0aXZhdGUKKyAgdHV0b3JpYWwtZW52XFNjcmlwdHNcYWN0aXZhdGUuYmF0CiAKIE9uIFVuaXggb3IgTWFjT1MsIHJ1bjo6CiAKQEAgLTY5LDMzICs2NSwzNiBAQAogYGBhY3RpdmF0ZS5jc2hgYCBhbmQgYGBhY3RpdmF0ZS5maXNoYGAgc2NyaXB0cyB5b3Ugc2hvdWxkIHVzZQogaW5zdGVhZC4pCiAKLUFjdGl2YXRpbmcgdGhlIHZpcnR1YWxlbnYgd2lsbCBjaGFuZ2UgeW91ciBzaGVsbCdzIHByb21wdCB0byBzaG93IHdoYXQKLXZpcnR1YWxlbnYgeW91J3JlIHVzaW5nLCBhbmQgbW9kaWZ5IHRoZSBlbnZpcm9ubWVudCBzbyB0aGF0IHJ1bm5pbmcKLWBgcHl0aG9uYGAgd2lsbCBnZXQgeW91IHRoYXQgcGFydGljdWxhciB2ZXJzaW9uIGFuZCBpbnN0YWxsYXRpb24gb2YKLVB5dGhvbi4gIEZvciBleGFtcGxlOjoKK0FjdGl2YXRpbmcgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQgd2lsbCBjaGFuZ2UgeW91ciBzaGVsbCdzIHByb21wdCB0byBzaG93IHdoYXQKK3ZpcnR1YWwgZW52aXJvbm1lbnQgeW91J3JlIHVzaW5nLCBhbmQgbW9kaWZ5IHRoZSBlbnZpcm9ubWVudCBzbyB0aGF0IHJ1bm5pbmcKK2BgcHl0aG9uYGAgd2lsbCBnZXQgeW91IHRoYXQgcGFydGljdWxhciB2ZXJzaW9uIGFuZCBpbnN0YWxsYXRpb24gb2YgUHl0aG9uLgorRm9yIGV4YW1wbGU6CiAKLSAgLT4gc291cmNlIH4vZW52cy90dXRvcmlhbC1lbnYvYmluL2FjdGl2YXRlCi0gICh0dXRvcmlhbC1lbnYpIC0+IHB5dGhvbgotICBQeXRob24gMy40LjMrICgzLjQ6YzdiOTY0NWE2ZjM1KywgTWF5IDIyIDIwMTUsIDA5OjMxOjI1KQorLi4gY29kZS1ibG9jazo6IGJhc2gKKworICAkIHNvdXJjZSB+L2VudnMvdHV0b3JpYWwtZW52L2Jpbi9hY3RpdmF0ZQorICAodHV0b3JpYWwtZW52KSAkIHB5dGhvbgorICBQeXRob24gMy41LjEgKGRlZmF1bHQsIE1heSAgNiAyMDE2LCAxMDo1OTozNikKICAgICAuLi4KICAgPj4+IGltcG9ydCBzeXMKICAgPj4+IHN5cy5wYXRoCi0gIFsnJywgJy91c3IvbG9jYWwvbGliL3B5dGhvbjM0LnppcCcsIC4uLiwKLSAgJ34vZW52cy90dXRvcmlhbC1lbnYvbGliL3B5dGhvbjMuNC9zaXRlLXBhY2thZ2VzJ10KKyAgWycnLCAnL3Vzci9sb2NhbC9saWIvcHl0aG9uMzUuemlwJywgLi4uLAorICAnfi9lbnZzL3R1dG9yaWFsLWVudi9saWIvcHl0aG9uMy41L3NpdGUtcGFja2FnZXMnXQogICA+Pj4KIAogCiBNYW5hZ2luZyBQYWNrYWdlcyB3aXRoIHBpcAogPT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotT25jZSB5b3UndmUgYWN0aXZhdGVkIGEgdmlydHVhbCBlbnZpcm9ubWVudCwgeW91IGNhbiBpbnN0YWxsLCB1cGdyYWRlLAotYW5kIHJlbW92ZSBwYWNrYWdlcyB1c2luZyBhIHByb2dyYW0gY2FsbGVkIDpwcm9ncmFtOmBwaXBgLiAgQnkgZGVmYXVsdAotYGBwaXBgYCB3aWxsIGluc3RhbGwgcGFja2FnZXMgZnJvbSB0aGUgUHl0aG9uIFBhY2thZ2UgSW5kZXgsCi08aHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaT4uICBZb3UgY2FuIGJyb3dzZSB0aGUgUHl0aG9uIFBhY2thZ2UgSW5kZXgKLWJ5IGdvaW5nIHRvIGl0IGluIHlvdXIgd2ViIGJyb3dzZXIsIG9yIHlvdSBjYW4gdXNlIGBgcGlwYGAncwotbGltaXRlZCBzZWFyY2ggZmVhdHVyZTo6CitZb3UgY2FuIGluc3RhbGwsIHVwZ3JhZGUsIGFuZCByZW1vdmUgcGFja2FnZXMgdXNpbmcgYSBwcm9ncmFtIGNhbGxlZAorOnByb2dyYW06YHBpcGAuICBCeSBkZWZhdWx0IGBgcGlwYGAgd2lsbCBpbnN0YWxsIHBhY2thZ2VzIGZyb20gdGhlIFB5dGhvbgorUGFja2FnZSBJbmRleCwgPGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGk+LiAgWW91IGNhbiBicm93c2UgdGhlIFB5dGhvbgorUGFja2FnZSBJbmRleCBieSBnb2luZyB0byBpdCBpbiB5b3VyIHdlYiBicm93c2VyLCBvciB5b3UgY2FuIHVzZSBgYHBpcGBgJ3MKK2xpbWl0ZWQgc2VhcmNoIGZlYXR1cmU6CiAKLSAgKHR1dG9yaWFsLWVudikgLT4gcGlwIHNlYXJjaCBhc3Ryb25vbXkKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCisKKyAgKHR1dG9yaWFsLWVudikgJCBwaXAgc2VhcmNoIGFzdHJvbm9teQogICBza3lmaWVsZCAgICAgICAgICAgICAgIC0gRWxlZ2FudCBhc3Ryb25vbXkgZm9yIFB5dGhvbgogICBnYXJ5ICAgICAgICAgICAgICAgICAgIC0gR2FsYWN0aWMgYXN0cm9ub215IGFuZCBncmF2aXRhdGlvbmFsIGR5bmFtaWNzLgogICBub3ZhcyAgICAgICAgICAgICAgICAgIC0gVGhlIFVuaXRlZCBTdGF0ZXMgTmF2YWwgT2JzZXJ2YXRvcnkgTk9WQVMgYXN0cm9ub215IGxpYnJhcnkKQEAgLTEwNyw5ICsxMDYsMTEgQEAKICJmcmVlemUiLCBldGMuICAoQ29uc3VsdCB0aGUgOnJlZjpgaW5zdGFsbGluZy1pbmRleGAgZ3VpZGUgZm9yCiBjb21wbGV0ZSBkb2N1bWVudGF0aW9uIGZvciBgYHBpcGBgLikKIAotWW91IGNhbiBpbnN0YWxsIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBhIHBhY2thZ2UgYnkgc3BlY2lmeWluZyBhIHBhY2thZ2UncyBuYW1lOjoKK1lvdSBjYW4gaW5zdGFsbCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgYSBwYWNrYWdlIGJ5IHNwZWNpZnlpbmcgYSBwYWNrYWdlJ3MgbmFtZToKIAotICAtPiBwaXAgaW5zdGFsbCBub3ZhcworLi4gY29kZS1ibG9jazo6IGJhc2gKKworICAodHV0b3JpYWwtZW52KSAkIHBpcCBpbnN0YWxsIG5vdmFzCiAgIENvbGxlY3Rpbmcgbm92YXMKICAgICBEb3dubG9hZGluZyBub3Zhcy0zLjEuMS4zLnRhci5neiAoMTM2a0IpCiAgIEluc3RhbGxpbmcgY29sbGVjdGVkIHBhY2thZ2VzOiBub3ZhcwpAQCAtMTE3LDkgKzExOCwxMSBAQAogICBTdWNjZXNzZnVsbHkgaW5zdGFsbGVkIG5vdmFzLTMuMS4xLjMKIAogWW91IGNhbiBhbHNvIGluc3RhbGwgYSBzcGVjaWZpYyB2ZXJzaW9uIG9mIGEgcGFja2FnZSBieSBnaXZpbmcgdGhlCi1wYWNrYWdlIG5hbWUgIGZvbGxvd2VkIGJ5IGBgPT1gYCBhbmQgdGhlIHZlcnNpb24gbnVtYmVyOjoKK3BhY2thZ2UgbmFtZSAgZm9sbG93ZWQgYnkgYGA9PWBgIGFuZCB0aGUgdmVyc2lvbiBudW1iZXI6CiAKLSAgLT4gcGlwIGluc3RhbGwgcmVxdWVzdHM9PTIuNi4wCisuLiBjb2RlLWJsb2NrOjogYmFzaAorCisgICh0dXRvcmlhbC1lbnYpICQgcGlwIGluc3RhbGwgcmVxdWVzdHM9PTIuNi4wCiAgIENvbGxlY3RpbmcgcmVxdWVzdHM9PTIuNi4wCiAgICAgVXNpbmcgY2FjaGVkIHJlcXVlc3RzLTIuNi4wLXB5Mi5weTMtbm9uZS1hbnkud2hsCiAgIEluc3RhbGxpbmcgY29sbGVjdGVkIHBhY2thZ2VzOiByZXF1ZXN0cwpAQCAtMTI4LDkgKzEzMSwxMSBAQAogSWYgeW91IHJlLXJ1biB0aGlzIGNvbW1hbmQsIGBgcGlwYGAgd2lsbCBub3RpY2UgdGhhdCB0aGUgcmVxdWVzdGVkCiB2ZXJzaW9uIGlzIGFscmVhZHkgaW5zdGFsbGVkIGFuZCBkbyBub3RoaW5nLiAgWW91IGNhbiBzdXBwbHkgYQogZGlmZmVyZW50IHZlcnNpb24gbnVtYmVyIHRvIGdldCB0aGF0IHZlcnNpb24sIG9yIHlvdSBjYW4gcnVuIGBgcGlwCi1pbnN0YWxsIC0tdXBncmFkZWBgIHRvIHVwZ3JhZGUgdGhlIHBhY2thZ2UgdG8gdGhlIGxhdGVzdCB2ZXJzaW9uOjoKK2luc3RhbGwgLS11cGdyYWRlYGAgdG8gdXBncmFkZSB0aGUgcGFja2FnZSB0byB0aGUgbGF0ZXN0IHZlcnNpb246CiAKLSAgLT4gcGlwIGluc3RhbGwgLS11cGdyYWRlIHJlcXVlc3RzCisuLiBjb2RlLWJsb2NrOjogYmFzaAorCisgICh0dXRvcmlhbC1lbnYpICQgcGlwIGluc3RhbGwgLS11cGdyYWRlIHJlcXVlc3RzCiAgIENvbGxlY3RpbmcgcmVxdWVzdHMKICAgSW5zdGFsbGluZyBjb2xsZWN0ZWQgcGFja2FnZXM6IHJlcXVlc3RzCiAgICAgRm91bmQgZXhpc3RpbmcgaW5zdGFsbGF0aW9uOiByZXF1ZXN0cyAyLjYuMApAQCAtMTQxLDkgKzE0NiwxMSBAQAogYGBwaXAgdW5pbnN0YWxsYGAgZm9sbG93ZWQgYnkgb25lIG9yIG1vcmUgcGFja2FnZSBuYW1lcyB3aWxsIHJlbW92ZSB0aGUKIHBhY2thZ2VzIGZyb20gdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQuCiAKLWBgcGlwIHNob3dgYCB3aWxsIGRpc3BsYXkgaW5mb3JtYXRpb24gYWJvdXQgYSBwYXJ0aWN1bGFyIHBhY2thZ2U6OgorYGBwaXAgc2hvd2BgIHdpbGwgZGlzcGxheSBpbmZvcm1hdGlvbiBhYm91dCBhIHBhcnRpY3VsYXIgcGFja2FnZToKIAotICAodHV0b3JpYWwtZW52KSAtPiBwaXAgc2hvdyByZXF1ZXN0cworLi4gY29kZS1ibG9jazo6IGJhc2gKKworICAodHV0b3JpYWwtZW52KSAkIHBpcCBzaG93IHJlcXVlc3RzCiAgIC0tLQogICBNZXRhZGF0YS1WZXJzaW9uOiAyLjAKICAgTmFtZTogcmVxdWVzdHMKQEAgLTE1Nyw5ICsxNjQsMTEgQEAKICAgUmVxdWlyZXM6CiAKIGBgcGlwIGxpc3RgYCB3aWxsIGRpc3BsYXkgYWxsIG9mIHRoZSBwYWNrYWdlcyBpbnN0YWxsZWQgaW4gdGhlIHZpcnR1YWwKLWVudmlyb25tZW50OjoKK2Vudmlyb25tZW50OgogCi0gICh0dXRvcmlhbC1lbnYpIC0+IHBpcCBsaXN0CisuLiBjb2RlLWJsb2NrOjogYmFzaAorCisgICh0dXRvcmlhbC1lbnYpICQgcGlwIGxpc3QKICAgbm92YXMgKDMuMS4xLjMpCiAgIG51bXB5ICgxLjkuMikKICAgcGlwICg3LjAuMykKQEAgLTE2OCwxOSArMTc3LDIzIEBACiAKIGBgcGlwIGZyZWV6ZWBgIHdpbGwgcHJvZHVjZSBhIHNpbWlsYXIgbGlzdCBvZiB0aGUgaW5zdGFsbGVkIHBhY2thZ2VzLAogYnV0IHRoZSBvdXRwdXQgdXNlcyB0aGUgZm9ybWF0IHRoYXQgYGBwaXAgaW5zdGFsbGBgIGV4cGVjdHMuCi1BIGNvbW1vbiBjb252ZW50aW9uIGlzIHRvIHB1dCB0aGlzIGxpc3QgaW4gYSBgYHJlcXVpcmVtZW50cy50eHRgYCBmaWxlOjoKK0EgY29tbW9uIGNvbnZlbnRpb24gaXMgdG8gcHV0IHRoaXMgbGlzdCBpbiBhIGBgcmVxdWlyZW1lbnRzLnR4dGBgIGZpbGU6CiAKLSAgKHR1dG9yaWFsLWVudikgLT4gcGlwIGZyZWV6ZSA+IHJlcXVpcmVtZW50cy50eHQKLSAgKHR1dG9yaWFsLWVudikgLT4gY2F0IHJlcXVpcmVtZW50cy50eHQKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCisKKyAgKHR1dG9yaWFsLWVudikgJCBwaXAgZnJlZXplID4gcmVxdWlyZW1lbnRzLnR4dAorICAodHV0b3JpYWwtZW52KSAkIGNhdCByZXF1aXJlbWVudHMudHh0CiAgIG5vdmFzPT0zLjEuMS4zCiAgIG51bXB5PT0xLjkuMgogICByZXF1ZXN0cz09Mi43LjAKIAogVGhlIGBgcmVxdWlyZW1lbnRzLnR4dGBgIGNhbiB0aGVuIGJlIGNvbW1pdHRlZCB0byB2ZXJzaW9uIGNvbnRyb2wgYW5kCiBzaGlwcGVkIGFzIHBhcnQgb2YgYW4gYXBwbGljYXRpb24uICBVc2VycyBjYW4gdGhlbiBpbnN0YWxsIGFsbCB0aGUKLW5lY2Vzc2FyeSBwYWNrYWdlcyB3aXRoIGBgaW5zdGFsbCAtcmBgOjoKK25lY2Vzc2FyeSBwYWNrYWdlcyB3aXRoIGBgaW5zdGFsbCAtcmBgOgogCi0gIC0+IHBpcCBpbnN0YWxsIC1yIHJlcXVpcmVtZW50cy50eHQKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCisKKyAgKHR1dG9yaWFsLWVudikgJCBwaXAgaW5zdGFsbCAtciByZXF1aXJlbWVudHMudHh0CiAgIENvbGxlY3Rpbmcgbm92YXM9PTMuMS4xLjMgKGZyb20gLXIgcmVxdWlyZW1lbnRzLnR4dCAobGluZSAxKSkKICAgICAuLi4KICAgQ29sbGVjdGluZyBudW1weT09MS45LjIgKGZyb20gLXIgcmVxdWlyZW1lbnRzLnR4dCAobGluZSAyKSkKZGlmZiAtLWdpdCBhL0RvYy91c2luZy9jbWRsaW5lLnJzdCBiL0RvYy91c2luZy9jbWRsaW5lLnJzdAppbmRleCA2MTE3Nzk2Li5jMGU2NGQ2IDEwMDY0NAotLS0gYS9Eb2MvdXNpbmcvY21kbGluZS5yc3QKKysrIGIvRG9jL3VzaW5nL2NtZGxpbmUucnN0CkBAIC0xODAsOCArMTgwLDE1IEBACiAKICAgIFByaW50IHRoZSBQeXRob24gdmVyc2lvbiBudW1iZXIgYW5kIGV4aXQuICBFeGFtcGxlIG91dHB1dCBjb3VsZCBiZTo6CiAKLSAgICAgICBQeXRob24gMy4wCisgICAgICAgUHl0aG9uIDMuNi4wYjIrCiAKKyAgIFdoZW4gZ2l2ZW4gdHdpY2UsIHByaW50IG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGJ1aWxkLCBsaWtlOjoKKworICAgICAgIFB5dGhvbiAzLjYuMGIyKyAoMy42Ojg0YTNjNTAwMzUxMCssIE9jdCAyNiAyMDE2LCAwMjozMzo1NSkKKyAgICAgICBbR0NDIDYuMi4wIDIwMTYxMDA1XQorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKyAgICAgIFRoZSBgYC1WVmBgIG9wdGlvbi4KIAogLi4gX3VzaW5nLW9uLW1pc2Mtb3B0aW9uczoKIApAQCAtMzk2LDYgKzQwMyw4IEBACiAgICAgIHN0b3JlZCBpbiBhIHRyYWNlYmFjayBvZiBhIHRyYWNlLiBVc2UgYGAtWCB0cmFjZW1hbGxvYz1ORlJBTUVgYCB0byBzdGFydAogICAgICB0cmFjaW5nIHdpdGggYSB0cmFjZWJhY2sgbGltaXQgb2YgKk5GUkFNRSogZnJhbWVzLiBTZWUgdGhlCiAgICAgIDpmdW5jOmB0cmFjZW1hbGxvYy5zdGFydGAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAqIGBgLVggc2hvd2FsbG9jY291bnRgYCB0byBlbmFibGUgdGhlIG91dHB1dCBvZiB0aGUgdG90YWwgY291bnQgb2YgYWxsb2NhdGVkCisgICAgIG9iamVjdHMgZm9yIGVhY2ggdHlwZSAob25seSB3b3JrcyB3aGVuIGJ1aWx0IHdpdGggYGBDT1VOVF9BTExPQ1NgYCBkZWZpbmVkKTsKIAogICAgSXQgYWxzbyBhbGxvd3MgcGFzc2luZyBhcmJpdHJhcnkgdmFsdWVzIGFuZCByZXRyaWV2aW5nIHRoZW0gdGhyb3VnaCB0aGUKICAgIDpkYXRhOmBzeXMuX3hvcHRpb25zYCBkaWN0aW9uYXJ5LgpAQCAtNDA5LDYgKzQxOCw5IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKICAgICAgIFRoZSBgYC1YIHNob3dyZWZjb3VudGBgIGFuZCBgYC1YIHRyYWNlbWFsbG9jYGAgb3B0aW9ucy4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisgICAgICBUaGUgYGAtWCBzaG93YWxsb2Njb3VudGBgIG9wdGlvbi4KKwogCiBPcHRpb25zIHlvdSBzaG91bGRuJ3QgdXNlCiB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CkBAIC01NTUsNiArNTY3LDEwIEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgVGhlIGBgZW5jb2RpbmduYW1lYGAgcGFydCBpcyBub3cgb3B0aW9uYWwuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBPbiBXaW5kb3dzLCB0aGUgZW5jb2Rpbmcgc3BlY2lmaWVkIGJ5IHRoaXMgdmFyaWFibGUgaXMgaWdub3JlZCBmb3IgaW50ZXJhY3RpdmUKKyAgICAgIGNvbnNvbGUgYnVmZmVycyB1bmxlc3MgOmVudnZhcjpgUFlUSE9OTEVHQUNZV0lORE9XU0lPRU5DT0RJTkdgIGlzIGFsc28gc3BlY2lmaWVkLgorICAgICAgRmlsZXMgYW5kIHBpcGVzIHJlZGlyZWN0ZWQgdGhyb3VnaCB0aGUgc3RhbmRhcmQgc3RyZWFtcyBhcmUgbm90IGFmZmVjdGVkLgogCiAuLiBlbnZ2YXI6OiBQWVRIT05OT1VTRVJTSVRFCiAKQEAgLTYyMCw2ICs2MzYsODEgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogCiAKKy4uIGVudnZhcjo6IFBZVEhPTk1BTExPQworCisgICBTZXQgdGhlIFB5dGhvbiBtZW1vcnkgYWxsb2NhdG9ycyBhbmQvb3IgaW5zdGFsbCBkZWJ1ZyBob29rcy4KKworICAgU2V0IHRoZSBmYW1pbHkgb2YgbWVtb3J5IGFsbG9jYXRvcnMgdXNlZCBieSBQeXRob246CisKKyAgICogYGBtYWxsb2NgYDogdXNlIHRoZSA6YzpmdW5jOmBtYWxsb2NgIGZ1bmN0aW9uIG9mIHRoZSBDIGxpYnJhcnkKKyAgICAgZm9yIGFsbCBkb21haW5zICg6YzpkYXRhOmBQWU1FTV9ET01BSU5fUkFXYCwgOmM6ZGF0YTpgUFlNRU1fRE9NQUlOX01FTWAsCisgICAgIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9PQkpgKS4KKyAgICogYGBweW1hbGxvY2BgOiB1c2UgdGhlIDpyZWY6YHB5bWFsbG9jIGFsbG9jYXRvciA8cHltYWxsb2M+YCBmb3IKKyAgICAgOmM6ZGF0YTpgUFlNRU1fRE9NQUlOX01FTWAgYW5kIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9PQkpgIGRvbWFpbnMgYW5kIHVzZQorICAgICB0aGUgOmM6ZnVuYzpgbWFsbG9jYCBmdW5jdGlvbiBmb3IgdGhlIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9SQVdgIGRvbWFpbi4KKworICAgSW5zdGFsbCBkZWJ1ZyBob29rczoKKworICAgKiBgYGRlYnVnYGA6IGluc3RhbGwgZGVidWcgaG9va3Mgb24gdG9wIG9mIHRoZSBkZWZhdWx0IG1lbW9yeSBhbGxvY2F0b3IKKyAgICogYGBtYWxsb2NfZGVidWdgYDogc2FtZSBhcyBgYG1hbGxvY2BgIGJ1dCBhbHNvIGluc3RhbGwgZGVidWcgaG9va3MKKyAgICogYGBweW1hbGxvY19kZWJ1Z2BgOiBzYW1lIGFzIGBgcHltYWxsb2NgYCBidXQgYWxzbyBpbnN0YWxsIGRlYnVnIGhvb2tzCisKKyAgIFdoZW4gUHl0aG9uIGlzIGNvbXBpbGVkIGluIHJlbGVhc2UgbW9kZSwgdGhlIGRlZmF1bHQgaXMgYGBweW1hbGxvY2BgLiBXaGVuCisgICBjb21waWxlZCBpbiBkZWJ1ZyBtb2RlLCB0aGUgZGVmYXVsdCBpcyBgYHB5bWFsbG9jX2RlYnVnYGAgYW5kIHRoZSBkZWJ1ZyBob29rcworICAgYXJlIHVzZWQgYXV0b21hdGljYWxseS4KKworICAgSWYgUHl0aG9uIGlzIGNvbmZpZ3VyZWQgd2l0aG91dCBgYHB5bWFsbG9jYGAgc3VwcG9ydCwgYGBweW1hbGxvY2BgIGFuZAorICAgYGBweW1hbGxvY19kZWJ1Z2BgIGFyZSBub3QgYXZhaWxhYmxlLCB0aGUgZGVmYXVsdCBpcyBgYG1hbGxvY2BgIGluIHJlbGVhc2UKKyAgIG1vZGUgYW5kIGBgbWFsbG9jX2RlYnVnYGAgaW4gZGVidWcgbW9kZS4KKworICAgU2VlIHRoZSA6YzpmdW5jOmBQeU1lbV9TZXR1cERlYnVnSG9va3NgIGZ1bmN0aW9uIGZvciBkZWJ1ZyBob29rcyBvbiBQeXRob24KKyAgIG1lbW9yeSBhbGxvY2F0b3JzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCisuLiBlbnZ2YXI6OiBQWVRIT05NQUxMT0NTVEFUUworCisgICBJZiBzZXQgdG8gYSBub24tZW1wdHkgc3RyaW5nLCBQeXRob24gd2lsbCBwcmludCBzdGF0aXN0aWNzIG9mIHRoZQorICAgOnJlZjpgcHltYWxsb2MgbWVtb3J5IGFsbG9jYXRvciA8cHltYWxsb2M+YCBldmVyeSB0aW1lIGEgbmV3IHB5bWFsbG9jIG9iamVjdAorICAgYXJlbmEgaXMgY3JlYXRlZCwgYW5kIG9uIHNodXRkb3duLgorCisgICBUaGlzIHZhcmlhYmxlIGlzIGlnbm9yZWQgaWYgdGhlIDplbnZ2YXI6YFBZVEhPTk1BTExPQ2AgZW52aXJvbm1lbnQgdmFyaWFibGUKKyAgIGlzIHVzZWQgdG8gZm9yY2UgdGhlIDpjOmZ1bmM6YG1hbGxvY2AgYWxsb2NhdG9yIG9mIHRoZSBDIGxpYnJhcnksIG9yIGlmCisgICBQeXRob24gaXMgY29uZmlndXJlZCB3aXRob3V0IGBgcHltYWxsb2NgYCBzdXBwb3J0LgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgVGhpcyB2YXJpYWJsZSBjYW4gbm93IGFsc28gYmUgdXNlZCBvbiBQeXRob24gY29tcGlsZWQgaW4gcmVsZWFzZSBtb2RlLgorICAgICAgSXQgbm93IGhhcyBubyBlZmZlY3QgaWYgc2V0IHRvIGFuIGVtcHR5IHN0cmluZy4KKworCisuLiBlbnZ2YXI6OiBQWVRIT05MRUdBQ1lXSU5ET1dTRlNFTkNPRElORworCisgICBJZiBzZXQgdG8gYSBub24tZW1wdHkgc3RyaW5nLCB0aGUgZGVmYXVsdCBmaWxlc3lzdGVtIGVuY29kaW5nIGFuZCBlcnJvcnMgbW9kZQorICAgd2lsbCByZXZlcnQgdG8gdGhlaXIgcHJlLTMuNiB2YWx1ZXMgb2YgJ21iY3MnIGFuZCAncmVwbGFjZScsIHJlc3BlY3RpdmVseS4KKyAgIE90aGVyd2lzZSwgdGhlIG5ldyBkZWZhdWx0cyAndXRmLTgnIGFuZCAnc3Vycm9nYXRlcGFzcycgYXJlIHVzZWQuCisKKyAgIFRoaXMgbWF5IGFsc28gYmUgZW5hYmxlZCBhdCBydW50aW1lIHdpdGgKKyAgIDpmdW5jOmBzeXMuX2VuYWJsZWxlZ2FjeXdpbmRvd3Nmc2VuY29kaW5nKClgLgorCisgICBBdmFpbGFiaWxpdHk6IFdpbmRvd3MKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisgICAgICBTZWUgOnBlcDpgNTI5YCBmb3IgbW9yZSBkZXRhaWxzLgorCisuLiBlbnZ2YXI6OiBQWVRIT05MRUdBQ1lXSU5ET1dTSU9FTkNPRElORworCisgICBJZiBzZXQgdG8gYSBub24tZW1wdHkgc3RyaW5nLCBkb2VzIG5vdCB1c2UgdGhlIG5ldyBjb25zb2xlIHJlYWRlciBhbmQKKyAgIHdyaXRlci4gVGhpcyBtZWFucyB0aGF0IFVuaWNvZGUgY2hhcmFjdGVycyB3aWxsIGJlIGVuY29kZWQgYWNjb3JkaW5nIHRvCisgICB0aGUgYWN0aXZlIGNvbnNvbGUgY29kZSBwYWdlLCByYXRoZXIgdGhhbiB1c2luZyB1dGYtOC4KKworICAgVGhpcyB2YXJpYWJsZSBpcyBpZ25vcmVkIGlmIHRoZSBzdGFuZGFyZCBzdHJlYW1zIGFyZSByZWRpcmVjdGVkICh0byBmaWxlcworICAgb3IgcGlwZXMpIHJhdGhlciB0aGFuIHJlZmVycmluZyB0byBjb25zb2xlIGJ1ZmZlcnMuCisKKyAgIEF2YWlsYWJpbGl0eTogV2luZG93cworCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogRGVidWctbW9kZSB2YXJpYWJsZXMKIH5+fn5+fn5+fn5+fn5+fn5+fn5+CiAKQEAgLTYzNSw5ICs3MjYsMyBAQAogCiAgICBJZiBzZXQsIFB5dGhvbiB3aWxsIGR1bXAgb2JqZWN0cyBhbmQgcmVmZXJlbmNlIGNvdW50cyBzdGlsbCBhbGl2ZSBhZnRlcgogICAgc2h1dHRpbmcgZG93biB0aGUgaW50ZXJwcmV0ZXIuCi0KLQotLi4gZW52dmFyOjogUFlUSE9OTUFMTE9DU1RBVFMKLQotICAgSWYgc2V0LCBQeXRob24gd2lsbCBwcmludCBtZW1vcnkgYWxsb2NhdGlvbiBzdGF0aXN0aWNzIGV2ZXJ5IHRpbWUgYSBuZXcKLSAgIG9iamVjdCBhcmVuYSBpcyBjcmVhdGVkLCBhbmQgb24gc2h1dGRvd24uCmRpZmYgLS1naXQgYS9Eb2MvdXNpbmcvaW5kZXgucnN0IGIvRG9jL3VzaW5nL2luZGV4LnJzdAppbmRleCA1MDJhZmE5Li5hNWRmNzEzIDEwMDY0NAotLS0gYS9Eb2MvdXNpbmcvaW5kZXgucnN0CisrKyBiL0RvYy91c2luZy9pbmRleC5yc3QKQEAgLTE3LDQgKzE3LDMgQEAKICAgIHVuaXgucnN0CiAgICB3aW5kb3dzLnJzdAogICAgbWFjLnJzdAotICAgc2NyaXB0cy5yc3QKZGlmZiAtLWdpdCBhL0RvYy91c2luZy9tYWMucnN0IGIvRG9jL3VzaW5nL21hYy5yc3QKaW5kZXggMDVjOTFiYi4uOGYxYWMzZiAxMDA2NDQKLS0tIGEvRG9jL3VzaW5nL21hYy5yc3QKKysrIGIvRG9jL3VzaW5nL21hYy5yc3QKQEAgLTI1LDcgKzI1LDcgQEAKIAogV2hhdCB5b3UgZ2V0IGFmdGVyIGluc3RhbGxpbmcgaXMgYSBudW1iZXIgb2YgdGhpbmdzOgogCi0qIEEgOmZpbGU6YE1hY1B5dGhvbiAzLjVgIGZvbGRlciBpbiB5b3VyIDpmaWxlOmBBcHBsaWNhdGlvbnNgIGZvbGRlci4gSW4gaGVyZQorKiBBIDpmaWxlOmBNYWNQeXRob24gMy42YCBmb2xkZXIgaW4geW91ciA6ZmlsZTpgQXBwbGljYXRpb25zYCBmb2xkZXIuIEluIGhlcmUKICAgeW91IGZpbmQgSURMRSwgdGhlIGRldmVsb3BtZW50IGVudmlyb25tZW50IHRoYXQgaXMgYSBzdGFuZGFyZCBwYXJ0IG9mIG9mZmljaWFsCiAgIFB5dGhvbiBkaXN0cmlidXRpb25zOyBQeXRob25MYXVuY2hlciwgd2hpY2ggaGFuZGxlcyBkb3VibGUtY2xpY2tpbmcgUHl0aG9uCiAgIHNjcmlwdHMgZnJvbSB0aGUgRmluZGVyOyBhbmQgdGhlICJCdWlsZCBBcHBsZXQiIHRvb2wsIHdoaWNoIGFsbG93cyB5b3UgdG8KQEAgLTkzLDcgKzkzLDcgQEAKIGFueXRoaW5nIHRoYXQgaGFzIGEgR1VJKSBuZWVkIHRvIGJlIHJ1biBpbiBhIHNwZWNpYWwgd2F5LiBVc2UgOnByb2dyYW06YHB5dGhvbndgCiBpbnN0ZWFkIG9mIDpwcm9ncmFtOmBweXRob25gIHRvIHN0YXJ0IHN1Y2ggc2NyaXB0cy4KIAotV2l0aCBQeXRob24gMy41LCB5b3UgY2FuIHVzZSBlaXRoZXIgOnByb2dyYW06YHB5dGhvbmAgb3IgOnByb2dyYW06YHB5dGhvbndgLgorV2l0aCBQeXRob24gMy42LCB5b3UgY2FuIHVzZSBlaXRoZXIgOnByb2dyYW06YHB5dGhvbmAgb3IgOnByb2dyYW06YHB5dGhvbndgLgogCiAKIENvbmZpZ3VyYXRpb24KQEAgLTE1OSw3ICsxNTksNyBAQAogRGlzdHJpYnV0aW5nIFB5dGhvbiBBcHBsaWNhdGlvbnMgb24gdGhlIE1hYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCi1UaGUgIkJ1aWxkIEFwcGxldCIgdG9vbCB0aGF0IGlzIHBsYWNlZCBpbiB0aGUgTWFjUHl0aG9uIDMuNSBmb2xkZXIgaXMgZmluZSBmb3IKK1RoZSAiQnVpbGQgQXBwbGV0IiB0b29sIHRoYXQgaXMgcGxhY2VkIGluIHRoZSBNYWNQeXRob24gMy42IGZvbGRlciBpcyBmaW5lIGZvcgogcGFja2FnaW5nIHNtYWxsIFB5dGhvbiBzY3JpcHRzIG9uIHlvdXIgb3duIG1hY2hpbmUgdG8gcnVuIGFzIGEgc3RhbmRhcmQgTWFjCiBhcHBsaWNhdGlvbi4gVGhpcyB0b29sLCBob3dldmVyLCBpcyBub3Qgcm9idXN0IGVub3VnaCB0byBkaXN0cmlidXRlIFB5dGhvbgogYXBwbGljYXRpb25zIHRvIG90aGVyIHVzZXJzLgpkaWZmIC0tZ2l0IGEvRG9jL3VzaW5nL3NjcmlwdHMucnN0IGIvRG9jL3VzaW5nL3NjcmlwdHMucnN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYzg3NDE2Li4wMDAwMDAwCi0tLSBhL0RvYy91c2luZy9zY3JpcHRzLnJzdAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLS4uIF90b29scy1hbmQtc2NyaXB0czoKLQotQWRkaXRpb25hbCBUb29scyBhbmQgU2NyaXB0cwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0uLiBfc2NyaXB0cy1weXZlbnY6Ci0KLXB5dmVudiAtIENyZWF0aW5nIHZpcnR1YWwgZW52aXJvbm1lbnRzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0uLiBpbmNsdWRlOjogdmVudi1jcmVhdGUuaW5jCi0KZGlmZiAtLWdpdCBhL0RvYy91c2luZy92ZW52LWNyZWF0ZS5pbmMgYi9Eb2MvdXNpbmcvdmVudi1jcmVhdGUuaW5jCmluZGV4IDdhZDMwMDguLjUzZjQzMWIgMTAwNjQ0Ci0tLSBhL0RvYy91c2luZy92ZW52LWNyZWF0ZS5pbmMKKysrIGIvRG9jL3VzaW5nL3ZlbnYtY3JlYXRlLmluYwpAQCAtMSwzMSArMSwzOSBAQAogQ3JlYXRpb24gb2YgOnJlZjpgdmlydHVhbCBlbnZpcm9ubWVudHMgPHZlbnYtZGVmPmAgaXMgZG9uZSBieSBleGVjdXRpbmcgdGhlCi1gYHB5dmVudmBgIHNjcmlwdDo6Citjb21tYW5kIGBgdmVudmBgOjoKIAotICAgIHB5dmVudiAvcGF0aC90by9uZXcvdmlydHVhbC9lbnZpcm9ubWVudAorICAgIHB5dGhvbjMgLW0gdmVudiAvcGF0aC90by9uZXcvdmlydHVhbC9lbnZpcm9ubWVudAogCiBSdW5uaW5nIHRoaXMgY29tbWFuZCBjcmVhdGVzIHRoZSB0YXJnZXQgZGlyZWN0b3J5IChjcmVhdGluZyBhbnkgcGFyZW50CiBkaXJlY3RvcmllcyB0aGF0IGRvbid0IGV4aXN0IGFscmVhZHkpIGFuZCBwbGFjZXMgYSBgYHB5dmVudi5jZmdgYCBmaWxlIGluIGl0Ci13aXRoIGEgYGBob21lYGAga2V5IHBvaW50aW5nIHRvIHRoZSBQeXRob24gaW5zdGFsbGF0aW9uIHRoZSBjb21tYW5kIHdhcyBydW4KLWZyb20uICBJdCBhbHNvIGNyZWF0ZXMgYSBgYGJpbmBgIChvciBgYFNjcmlwdHNgYCBvbiBXaW5kb3dzKSBzdWJkaXJlY3RvcnkKK3dpdGggYSBgYGhvbWVgYCBrZXkgcG9pbnRpbmcgdG8gdGhlIFB5dGhvbiBpbnN0YWxsYXRpb24gZnJvbSB3aGljaCB0aGUgY29tbWFuZAord2FzIHJ1bi4gIEl0IGFsc28gY3JlYXRlcyBhIGBgYmluYGAgKG9yIGBgU2NyaXB0c2BgIG9uIFdpbmRvd3MpIHN1YmRpcmVjdG9yeQogY29udGFpbmluZyBhIGNvcHkgb2YgdGhlIGBgcHl0aG9uYGAgYmluYXJ5IChvciBiaW5hcmllcywgaW4gdGhlIGNhc2Ugb2YKIFdpbmRvd3MpLiAgSXQgYWxzbyBjcmVhdGVzIGFuIChpbml0aWFsbHkgZW1wdHkpIGBgbGliL3B5dGhvblguWS9zaXRlLXBhY2thZ2VzYGAKIHN1YmRpcmVjdG9yeSAob24gV2luZG93cywgdGhpcyBpcyBgYExpYlxzaXRlLXBhY2thZ2VzYGApLgogCisuLiBkZXByZWNhdGVkOjogMy42CisgICBgYHB5dmVudmBgIHdhcyB0aGUgcmVjb21tZW5kZWQgdG9vbCBmb3IgY3JlYXRpbmcgdmlydHVhbCBlbnZpcm9ubWVudHMgZm9yCisgICBQeXRob24gMy4zIGFuZCAzLjQsIGFuZCBpcyBgZGVwcmVjYXRlZCBpbiBQeXRob24gMy42CisgICA8aHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvZGV2L3doYXRzbmV3LzMuNi5odG1sI2RlcHJlY2F0ZWQtZmVhdHVyZXM+YF8uCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICBUaGUgdXNlIG9mIGBgdmVudmBgIGlzIG5vdyByZWNvbW1lbmRlZCBmb3IgY3JlYXRpbmcgdmlydHVhbCBlbnZpcm9ubWVudHMuCisKIC4uIHNlZWFsc286OgogCiAgICBgUHl0aG9uIFBhY2thZ2luZyBVc2VyIEd1aWRlOiBDcmVhdGluZyBhbmQgdXNpbmcgdmlydHVhbCBlbnZpcm9ubWVudHMKLSAgIDxodHRwczovL3BhY2thZ2luZy5weXRob24ub3JnL2VuL2xhdGVzdC9pbnN0YWxsaW5nLyNjcmVhdGluZy12aXJ0dWFsLWVudmlyb25tZW50cz5gX18KKyAgIDxodHRwczovL3BhY2thZ2luZy5weXRob24ub3JnL2luc3RhbGxpbmcvI2NyZWF0aW5nLXZpcnR1YWwtZW52aXJvbm1lbnRzPmBfXwogCiAuLiBoaWdobGlnaHQ6OiBub25lCiAKLU9uIFdpbmRvd3MsIHlvdSBtYXkgaGF2ZSB0byBpbnZva2UgdGhlIGBgcHl2ZW52YGAgc2NyaXB0IGFzIGZvbGxvd3MsIGlmIHlvdQotZG9uJ3QgaGF2ZSB0aGUgcmVsZXZhbnQgUEFUSCBhbmQgUEFUSEVYVCBzZXR0aW5nczo6CitPbiBXaW5kb3dzLCBpbnZva2UgdGhlIGBgdmVudmBgIGNvbW1hbmQgYXMgZm9sbG93czo6CiAKLSAgICBjOlxUZW1wPmM6XFB5dGhvbjM1XHB5dGhvbiBjOlxQeXRob24zNVxUb29sc1xTY3JpcHRzXHB5dmVudi5weSBteWVudgorICAgIGM6XD5jOlxQeXRob24zNVxweXRob24gLW0gdmVudiBjOlxwYXRoXHRvXG15ZW52CiAKLW9yIGVxdWl2YWxlbnRseTo6CitBbHRlcm5hdGl2ZWx5LCBpZiB5b3UgY29uZmlndXJlZCB0aGUgYGBQQVRIYGAgYW5kIGBgUEFUSEVYVGBgIHZhcmlhYmxlcyBmb3IKK3lvdXIgOnJlZjpgUHl0aG9uIGluc3RhbGxhdGlvbiA8dXNpbmctb24td2luZG93cz5gOjoKIAotICAgIGM6XFRlbXA+YzpcUHl0aG9uMzVccHl0aG9uIC1tIHZlbnYgbXllbnYKKyAgICBjOlw+cHl0aG9uIC1tIHZlbnYgbXllbnYgYzpccGF0aFx0b1xteWVudgogCiBUaGUgY29tbWFuZCwgaWYgcnVuIHdpdGggYGAtaGBgLCB3aWxsIHNob3cgdGhlIGF2YWlsYWJsZSBvcHRpb25zOjoKIApAQCAtMzYsMjUgKzQ0LDI2IEBACiAgICAgQ3JlYXRlcyB2aXJ0dWFsIFB5dGhvbiBlbnZpcm9ubWVudHMgaW4gb25lIG9yIG1vcmUgdGFyZ2V0IGRpcmVjdG9yaWVzLgogCiAgICAgcG9zaXRpb25hbCBhcmd1bWVudHM6Ci0gICAgICBFTlZfRElSICAgICAgICAgICAgIEEgZGlyZWN0b3J5IHRvIGNyZWF0ZSB0aGUgZW52aXJvbm1lbnQgaW4uCisgICAgICBFTlZfRElSICAgICAgICAgICAgICAgQSBkaXJlY3RvcnkgdG8gY3JlYXRlIHRoZSBlbnZpcm9ubWVudCBpbi4KIAogICAgIG9wdGlvbmFsIGFyZ3VtZW50czoKLSAgICAgIC1oLCAtLWhlbHAgICAgICAgICAgICAgc2hvdyB0aGlzIGhlbHAgbWVzc2FnZSBhbmQgZXhpdAotICAgICAgLS1zeXN0ZW0tc2l0ZS1wYWNrYWdlcyBHaXZlIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50IGFjY2VzcyB0byB0aGUgc3lzdGVtCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdGUtcGFja2FnZXMgZGlyLgotICAgICAgLS1zeW1saW5rcyAgICAgICAgICAgICBUcnkgdG8gdXNlIHN5bWxpbmtzIHJhdGhlciB0aGFuIGNvcGllcywgd2hlbiBzeW1saW5rcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmUgbm90IHRoZSBkZWZhdWx0IGZvciB0aGUgcGxhdGZvcm0uCi0gICAgICAtLWNvcGllcyAgICAgICAgICAgICAgIFRyeSB0byB1c2UgY29waWVzIHJhdGhlciB0aGFuIHN5bWxpbmtzLCBldmVuIHdoZW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ltbGlua3MgYXJlIHRoZSBkZWZhdWx0IGZvciB0aGUgcGxhdGZvcm0uCi0gICAgICAtLWNsZWFyICAgICAgICAgICAgICAgIERlbGV0ZSB0aGUgY29udGVudHMgb2YgdGhlIGVudmlyb25tZW50IGRpcmVjdG9yeSBpZiBpdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHJlYWR5IGV4aXN0cywgYmVmb3JlIGVudmlyb25tZW50IGNyZWF0aW9uLgotICAgICAgLS11cGdyYWRlICAgICAgICAgICAgICBVcGdyYWRlIHRoZSBlbnZpcm9ubWVudCBkaXJlY3RvcnkgdG8gdXNlIHRoaXMgdmVyc2lvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBQeXRob24sIGFzc3VtaW5nIFB5dGhvbiBoYXMgYmVlbiB1cGdyYWRlZCBpbi1wbGFjZS4KLSAgICAgIC0td2l0aG91dC1waXAgICAgICAgICAgU2tpcHMgaW5zdGFsbGluZyBvciB1cGdyYWRpbmcgcGlwIGluIHRoZSB2aXJ0dWFsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50IChwaXAgaXMgYm9vdHN0cmFwcGVkIGJ5IGRlZmF1bHQpCisgICAgICAtaCwgLS1oZWxwICAgICAgICAgICAgc2hvdyB0aGlzIGhlbHAgbWVzc2FnZSBhbmQgZXhpdAorICAgICAgLS1zeXN0ZW0tc2l0ZS1wYWNrYWdlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdpdmUgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQgYWNjZXNzIHRvIHRoZSBzeXN0ZW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXRlLXBhY2thZ2VzIGRpci4KKyAgICAgIC0tc3ltbGlua3MgICAgICAgICAgICBUcnkgdG8gdXNlIHN5bWxpbmtzIHJhdGhlciB0aGFuIGNvcGllcywgd2hlbiBzeW1saW5rcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBub3QgdGhlIGRlZmF1bHQgZm9yIHRoZSBwbGF0Zm9ybS4KKyAgICAgIC0tY29waWVzICAgICAgICAgICAgICBUcnkgdG8gdXNlIGNvcGllcyByYXRoZXIgdGhhbiBzeW1saW5rcywgZXZlbiB3aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ltbGlua3MgYXJlIHRoZSBkZWZhdWx0IGZvciB0aGUgcGxhdGZvcm0uCisgICAgICAtLWNsZWFyICAgICAgICAgICAgICAgRGVsZXRlIHRoZSBjb250ZW50cyBvZiB0aGUgZW52aXJvbm1lbnQgZGlyZWN0b3J5IGlmIGl0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxyZWFkeSBleGlzdHMsIGJlZm9yZSBlbnZpcm9ubWVudCBjcmVhdGlvbi4KKyAgICAgIC0tdXBncmFkZSAgICAgICAgICAgICBVcGdyYWRlIHRoZSBlbnZpcm9ubWVudCBkaXJlY3RvcnkgdG8gdXNlIHRoaXMgdmVyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIFB5dGhvbiwgYXNzdW1pbmcgUHl0aG9uIGhhcyBiZWVuIHVwZ3JhZGVkIGluLXBsYWNlLgorICAgICAgLS13aXRob3V0LXBpcCAgICAgICAgIFNraXBzIGluc3RhbGxpbmcgb3IgdXBncmFkaW5nIHBpcCBpbiB0aGUgdmlydHVhbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50IChwaXAgaXMgYm9vdHN0cmFwcGVkIGJ5IGRlZmF1bHQpCiAKLURlcGVuZGluZyBvbiBob3cgdGhlIGBgdmVudmBgIGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4gaW52b2tlZCwgdGhlIHVzYWdlIG1lc3NhZ2UKLW1heSB2YXJ5IHNsaWdodGx5LCBlLmcuIHJlZmVyZW5jaW5nIGBgcHl2ZW52YGAgcmF0aGVyIHRoYW4gYGB2ZW52YGAuCisgICAgT25jZSBhbiBlbnZpcm9ubWVudCBoYXMgYmVlbiBjcmVhdGVkLCB5b3UgbWF5IHdpc2ggdG8gYWN0aXZhdGUgaXQsIGUuZy4gYnkKKyAgICBzb3VyY2luZyBhbiBhY3RpdmF0ZSBzY3JpcHQgaW4gaXRzIGJpbiBkaXJlY3RvcnkuCiAKIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICBJbnN0YWxscyBwaXAgYnkgZGVmYXVsdCwgYWRkZWQgdGhlIGBgLS13aXRob3V0LXBpcGBgICBhbmQgYGAtLWNvcGllc2BgCkBAIC03MywxMiArODIsMTMgQEAKIFVubGVzcyB0aGUgYGAtLXdpdGhvdXQtcGlwYGAgb3B0aW9uIGlzIGdpdmVuLCA6bW9kOmBlbnN1cmVwaXBgIHdpbGwgYmUKIGludm9rZWQgdG8gYm9vdHN0cmFwIGBgcGlwYGAgaW50byB0aGUgdmlydHVhbCBlbnZpcm9ubWVudC4KIAotTXVsdGlwbGUgcGF0aHMgY2FuIGJlIGdpdmVuIHRvIGBgcHl2ZW52YGAsIGluIHdoaWNoIGNhc2UgYW4gaWRlbnRpY2FsCi12aXJ0dWFsZW52IHdpbGwgYmUgY3JlYXRlZCwgYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiBvcHRpb25zLCBhdCBlYWNoCi1wcm92aWRlZCBwYXRoLgorTXVsdGlwbGUgcGF0aHMgY2FuIGJlIGdpdmVuIHRvIGBgdmVudmBgLCBpbiB3aGljaCBjYXNlIGFuIGlkZW50aWNhbCB2aXJ0dWFsCitlbnZpcm9ubWVudCB3aWxsIGJlIGNyZWF0ZWQsIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gb3B0aW9ucywgYXQgZWFjaCBwcm92aWRlZAorcGF0aC4KIAotT25jZSBhIHZlbnYgaGFzIGJlZW4gY3JlYXRlZCwgaXQgY2FuIGJlICJhY3RpdmF0ZWQiIHVzaW5nIGEgc2NyaXB0IGluIHRoZQotdmVudidzIGJpbmFyeSBkaXJlY3RvcnkuIFRoZSBpbnZvY2F0aW9uIG9mIHRoZSBzY3JpcHQgaXMgcGxhdGZvcm0tc3BlY2lmaWM6CitPbmNlIGEgdmlydHVhbCBlbnZpcm9ubWVudCBoYXMgYmVlbiBjcmVhdGVkLCBpdCBjYW4gYmUgImFjdGl2YXRlZCIgdXNpbmcgYQorc2NyaXB0IGluIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50J3MgYmluYXJ5IGRpcmVjdG9yeS4gVGhlIGludm9jYXRpb24gb2YgdGhlCitzY3JpcHQgaXMgcGxhdGZvcm0tc3BlY2lmaWM6CiAKICstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogfCBQbGF0Zm9ybSAgICB8IFNoZWxsICAgICAgICAgICB8IENvbW1hbmQgdG8gYWN0aXZhdGUgdmlydHVhbCBlbnZpcm9ubWVudCB8CkBAIC05NSwxNiArMTA1LDE3IEBACiArLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIAogWW91IGRvbid0IHNwZWNpZmljYWxseSAqbmVlZCogdG8gYWN0aXZhdGUgYW4gZW52aXJvbm1lbnQ7IGFjdGl2YXRpb24ganVzdAotcHJlcGVuZHMgdGhlIHZlbnYncyBiaW5hcnkgZGlyZWN0b3J5IHRvIHlvdXIgcGF0aCwgc28gdGhhdCAicHl0aG9uIiBpbnZva2VzIHRoZQotdmVudidzIFB5dGhvbiBpbnRlcnByZXRlciBhbmQgeW91IGNhbiBydW4gaW5zdGFsbGVkIHNjcmlwdHMgd2l0aG91dCBoYXZpbmcgdG8KLXVzZSB0aGVpciBmdWxsIHBhdGguIEhvd2V2ZXIsIGFsbCBzY3JpcHRzIGluc3RhbGxlZCBpbiBhIHZlbnYgc2hvdWxkIGJlCi1ydW5uYWJsZSB3aXRob3V0IGFjdGl2YXRpbmcgaXQsIGFuZCBydW4gd2l0aCB0aGUgdmVudidzIFB5dGhvbiBhdXRvbWF0aWNhbGx5LgorcHJlcGVuZHMgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQncyBiaW5hcnkgZGlyZWN0b3J5IHRvIHlvdXIgcGF0aCwgc28gdGhhdAorInB5dGhvbiIgaW52b2tlcyB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCdzIFB5dGhvbiBpbnRlcnByZXRlciBhbmQgeW91IGNhbiBydW4KK2luc3RhbGxlZCBzY3JpcHRzIHdpdGhvdXQgaGF2aW5nIHRvIHVzZSB0aGVpciBmdWxsIHBhdGguIEhvd2V2ZXIsIGFsbCBzY3JpcHRzCitpbnN0YWxsZWQgaW4gYSB2aXJ0dWFsIGVudmlyb25tZW50IHNob3VsZCBiZSBydW5uYWJsZSB3aXRob3V0IGFjdGl2YXRpbmcgaXQsCithbmQgcnVuIHdpdGggdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQncyBQeXRob24gYXV0b21hdGljYWxseS4KIAotWW91IGNhbiBkZWFjdGl2YXRlIGEgdmVudiBieSB0eXBpbmcgImRlYWN0aXZhdGUiIGluIHlvdXIgc2hlbGwuIFRoZSBleGFjdAotbWVjaGFuaXNtIGlzIHBsYXRmb3JtLXNwZWNpZmljOiBmb3IgZXhhbXBsZSwgdGhlIEJhc2ggYWN0aXZhdGlvbiBzY3JpcHQgZGVmaW5lcwotYSAiZGVhY3RpdmF0ZSIgZnVuY3Rpb24sIHdoZXJlYXMgb24gV2luZG93cyB0aGVyZSBhcmUgc2VwYXJhdGUgc2NyaXB0cyBjYWxsZWQKLWBgZGVhY3RpdmF0ZS5iYXRgYCBhbmQgYGBEZWFjdGl2YXRlLnBzMWBgIHdoaWNoIGFyZSBpbnN0YWxsZWQgd2hlbiB0aGUgdmVudiBpcwotY3JlYXRlZC4KK1lvdSBjYW4gZGVhY3RpdmF0ZSBhIHZpcnR1YWwgZW52aXJvbm1lbnQgYnkgdHlwaW5nICJkZWFjdGl2YXRlIiBpbiB5b3VyIHNoZWxsLgorVGhlIGV4YWN0IG1lY2hhbmlzbSBpcyBwbGF0Zm9ybS1zcGVjaWZpYzogZm9yIGV4YW1wbGUsIHRoZSBCYXNoIGFjdGl2YXRpb24KK3NjcmlwdCBkZWZpbmVzIGEgImRlYWN0aXZhdGUiIGZ1bmN0aW9uLCB3aGVyZWFzIG9uIFdpbmRvd3MgdGhlcmUgYXJlIHNlcGFyYXRlCitzY3JpcHRzIGNhbGxlZCBgYGRlYWN0aXZhdGUuYmF0YGAgYW5kIGBgRGVhY3RpdmF0ZS5wczFgYCB3aGljaCBhcmUgaW5zdGFsbGVkCit3aGVuIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50IGlzIGNyZWF0ZWQuCiAKIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogICAgYGBmaXNoYGAgYW5kIGBgY3NoYGAgYWN0aXZhdGlvbiBzY3JpcHRzLgpkaWZmIC0tZ2l0IGEvRG9jL3VzaW5nL3dpbmRvd3MucnN0IGIvRG9jL3VzaW5nL3dpbmRvd3MucnN0CmluZGV4IGE0YTZhMzAuLjNlNGI3MGUgMTAwNjQ0Ci0tLSBhL0RvYy91c2luZy93aW5kb3dzLnJzdAorKysgYi9Eb2MvdXNpbmcvd2luZG93cy5yc3QKQEAgLTI5LDE1ICsyOSwxNSBAQAogCiBBcyBzcGVjaWZpZWQgaW4gOnBlcDpgMTFgLCBhIFB5dGhvbiByZWxlYXNlIG9ubHkgc3VwcG9ydHMgYSBXaW5kb3dzIHBsYXRmb3JtCiB3aGlsZSBNaWNyb3NvZnQgY29uc2lkZXJzIHRoZSBwbGF0Zm9ybSB1bmRlciBleHRlbmRlZCBzdXBwb3J0LiBUaGlzIG1lYW5zIHRoYXQKLVB5dGhvbiAzLjUgc3VwcG9ydHMgV2luZG93cyBWaXN0YSBhbmQgbmV3ZXIuIElmIHlvdSByZXF1aXJlIFdpbmRvd3MgWFAgc3VwcG9ydAotdGhlbiBwbGVhc2UgaW5zdGFsbCBQeXRob24gMy40LgorUHl0aG9uIHx2ZXJzaW9ufCBzdXBwb3J0cyBXaW5kb3dzIFZpc3RhIGFuZCBuZXdlci4gSWYgeW91IHJlcXVpcmUgV2luZG93cyBYUAorc3VwcG9ydCB0aGVuIHBsZWFzZSBpbnN0YWxsIFB5dGhvbiAzLjQuCiAKIEluc3RhbGxhdGlvbiBTdGVwcwogLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUZvdXIgUHl0aG9uIDMuNSBpbnN0YWxsZXJzIGFyZSBhdmFpbGFibGUgZm9yIGRvd25sb2FkIC0gdHdvIGVhY2ggZm9yIHRoZSAzMi1iaXQKLWFuZCA2NC1iaXQgdmVyc2lvbnMgb2YgdGhlIGludGVycHJldGVyLiBUaGUgKndlYiBpbnN0YWxsZXIqIGlzIGEgc21hbGwgaW5pdGlhbAotZG93bmxvYWQsIGFuZCBpdCB3aWxsIGF1dG9tYXRpY2FsbHkgZG93bmxvYWQgdGhlIHJlcXVpcmVkIGNvbXBvbmVudHMgYXMKK0ZvdXIgUHl0aG9uIHx2ZXJzaW9ufCBpbnN0YWxsZXJzIGFyZSBhdmFpbGFibGUgZm9yIGRvd25sb2FkIC0gdHdvIGVhY2ggZm9yIHRoZQorMzItYml0IGFuZCA2NC1iaXQgdmVyc2lvbnMgb2YgdGhlIGludGVycHJldGVyLiBUaGUgKndlYiBpbnN0YWxsZXIqIGlzIGEgc21hbGwKK2luaXRpYWwgZG93bmxvYWQsIGFuZCBpdCB3aWxsIGF1dG9tYXRpY2FsbHkgZG93bmxvYWQgdGhlIHJlcXVpcmVkIGNvbXBvbmVudHMgYXMKIG5lY2Vzc2FyeS4gVGhlICpvZmZsaW5lIGluc3RhbGxlciogaW5jbHVkZXMgdGhlIGNvbXBvbmVudHMgbmVjZXNzYXJ5IGZvciBhCiBkZWZhdWx0IGluc3RhbGxhdGlvbiBhbmQgb25seSByZXF1aXJlcyBhbiBpbnRlcm5ldCBjb25uZWN0aW9uIGZvciBvcHRpb25hbAogZmVhdHVyZXMuIFNlZSA6cmVmOmBpbnN0YWxsLWxheW91dC1vcHRpb25gIGZvciBvdGhlciB3YXlzIHRvIGF2b2lkIGRvd25sb2FkaW5nCkBAIC03NCw2ICs3NCwzMSBAQAogKiBJZiBzZWxlY3RlZCwgdGhlIGluc3RhbGwgZGlyZWN0b3J5IHdpbGwgYmUgYWRkZWQgdG8gdGhlIHN5c3RlbSA6ZW52dmFyOmBQQVRIYAogKiBTaG9ydGN1dHMgYXJlIGF2YWlsYWJsZSBmb3IgYWxsIHVzZXJzCiAKKy4uIF9tYXgtcGF0aDoKKworUmVtb3ZpbmcgdGhlIE1BWF9QQVRIIExpbWl0YXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1dpbmRvd3MgaGlzdG9yaWNhbGx5IGhhcyBsaW1pdGVkIHBhdGggbGVuZ3RocyB0byAyNjAgY2hhcmFjdGVycy4gVGhpcyBtZWFudCB0aGF0CitwYXRocyBsb25nZXIgdGhhbiB0aGlzIHdvdWxkIG5vdCByZXNvbHZlIGFuZCBlcnJvcnMgd291bGQgcmVzdWx0LgorCitJbiB0aGUgbGF0ZXN0IHZlcnNpb25zIG9mIFdpbmRvd3MsIHRoaXMgbGltaXRhdGlvbiBjYW4gYmUgZXhwYW5kZWQgdG8KK2FwcHJveGltYXRlbHkgMzIsMDAwIGNoYXJhY3RlcnMuIFlvdXIgYWRtaW5pc3RyYXRvciB3aWxsIG5lZWQgdG8gYWN0aXZhdGUgdGhlCisiRW5hYmxlIFdpbjMyIGxvbmcgcGF0aHMiIGdyb3VwIHBvbGljeSwgb3Igc2V0IHRoZSByZWdpc3RyeSB2YWx1ZQorYGBIS0VZX0xPQ0FMX01BQ0hJTkVcU1lTVEVNXEN1cnJlbnRDb250cm9sU2V0XENvbnRyb2xcRmlsZVN5c3RlbUBMb25nUGF0aHNFbmFibGVkYGAKK3RvIGBgMWBgLgorCitUaGlzIGFsbG93cyB0aGUgOmZ1bmM6YG9wZW5gIGZ1bmN0aW9uLCB0aGUgOm1vZDpgb3NgIG1vZHVsZSBhbmQgbW9zdCBvdGhlcgorcGF0aCBmdW5jdGlvbmFsaXR5IHRvIGFjY2VwdCBhbmQgcmV0dXJuIHBhdGhzIGxvbmdlciB0aGFuIDI2MCBjaGFyYWN0ZXJzIHdoZW4KK3VzaW5nIHN0cmluZ3MuIChVc2Ugb2YgYnl0ZXMgYXMgcGF0aHMgaXMgZGVwcmVjYXRlZCBvbiBXaW5kb3dzLCBhbmQgdGhpcyBmZWF0dXJlCitpcyBub3QgYXZhaWxhYmxlIHdoZW4gdXNpbmcgYnl0ZXMuKQorCitBZnRlciBjaGFuZ2luZyB0aGUgYWJvdmUgb3B0aW9uLCBubyBmdXJ0aGVyIGNvbmZpZ3VyYXRpb24gaXMgcmVxdWlyZWQuCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisKKyAgIFN1cHBvcnQgZm9yIGxvbmcgcGF0aHMgd2FzIGVuYWJsZWQgaW4gUHl0aG9uLgorCiAuLiBfaW5zdGFsbC1xdWlldC1vcHRpb246CiAKIEluc3RhbGxpbmcgV2l0aG91dCBVSQpAQCAtMTY4LDEzICsxOTMsMTMgQEAKIEZvciBleGFtcGxlLCB0byBzaWxlbnRseSBpbnN0YWxsIGEgZGVmYXVsdCwgc3lzdGVtLXdpZGUgUHl0aG9uIGluc3RhbGxhdGlvbiwKIHlvdSBjb3VsZCB1c2UgdGhlIGZvbGxvd2luZyBjb21tYW5kIChmcm9tIGFuIGVsZXZhdGVkIGNvbW1hbmQgcHJvbXB0KTo6CiAKLSAgICBweXRob24tMy41LjAuZXhlIC9xdWlldCBJbnN0YWxsQWxsVXNlcnM9MSBQcmVwZW5kUGF0aD0xIEluY2x1ZGVfdGVzdD0wCisgICAgcHl0aG9uLTMuNi4wLmV4ZSAvcXVpZXQgSW5zdGFsbEFsbFVzZXJzPTEgUHJlcGVuZFBhdGg9MSBJbmNsdWRlX3Rlc3Q9MAogCiBUbyBhbGxvdyB1c2VycyB0byBlYXNpbHkgaW5zdGFsbCBhIHBlcnNvbmFsIGNvcHkgb2YgUHl0aG9uIHdpdGhvdXQgdGhlIHRlc3QKIHN1aXRlLCB5b3UgY291bGQgcHJvdmlkZSBhIHNob3J0Y3V0IHdpdGggdGhlIGZvbGxvd2luZyBjb21tYW5kLiBUaGlzIHdpbGwKIGRpc3BsYXkgYSBzaW1wbGlmaWVkIGluaXRpYWwgcGFnZSBhbmQgZGlzYWxsb3cgY3VzdG9taXphdGlvbjo6CiAKLSAgICBweXRob24tMy41LjAuZXhlIEluc3RhbGxBbGxVc2Vycz0wIEluY2x1ZGVfbGF1bmNoZXI9MCBJbmNsdWRlX3Rlc3Q9MAorICAgIHB5dGhvbi0zLjYuMC5leGUgSW5zdGFsbEFsbFVzZXJzPTAgSW5jbHVkZV9sYXVuY2hlcj0wIEluY2x1ZGVfdGVzdD0wCiAgICAgICAgIFNpbXBsZUluc3RhbGw9MSBTaW1wbGVJbnN0YWxsRGVzY3JpcHRpb249Ikp1c3QgZm9yIG1lLCBubyB0ZXN0IHN1aXRlLiIKIAogKE5vdGUgdGhhdCBvbWl0dGluZyB0aGUgbGF1bmNoZXIgYWxzbyBvbWl0cyBmaWxlIGFzc29jaWF0aW9ucywgYW5kIGlzIG9ubHkKQEAgLTIwOSwxMyArMjM0LDEzIEBACiB1c2VmdWwgdG8gaGF2ZSBhIGxvY2FsbHkgY2FjaGVkIGNvcHkuCiAKIEV4ZWN1dGUgdGhlIGZvbGxvd2luZyBjb21tYW5kIGZyb20gQ29tbWFuZCBQcm9tcHQgdG8gZG93bmxvYWQgYWxsIHBvc3NpYmxlCi1yZXF1aXJlZCBmaWxlcy4gIFJlbWVtYmVyIHRvIHN1YnN0aXR1dGUgYGBweXRob24tMy41LjAuZXhlYGAgZm9yIHRoZSBhY3R1YWwKK3JlcXVpcmVkIGZpbGVzLiAgUmVtZW1iZXIgdG8gc3Vic3RpdHV0ZSBgYHB5dGhvbi0zLjYuMC5leGVgYCBmb3IgdGhlIGFjdHVhbAogbmFtZSBvZiB5b3VyIGluc3RhbGxlciwgYW5kIHRvIGNyZWF0ZSBsYXlvdXRzIGluIHRoZWlyIG93biBkaXJlY3RvcmllcyB0bwogYXZvaWQgY29sbGlzaW9ucyBiZXR3ZWVuIGZpbGVzIHdpdGggdGhlIHNhbWUgbmFtZS4KIAogOjoKIAotICAgIHB5dGhvbi0zLjUuMC5leGUgL2xheW91dCBbb3B0aW9uYWwgdGFyZ2V0IGRpcmVjdG9yeV0KKyAgICBweXRob24tMy42LjAuZXhlIC9sYXlvdXQgW29wdGlvbmFsIHRhcmdldCBkaXJlY3RvcnldCiAKIFlvdSBtYXkgYWxzbyBzcGVjaWZ5IHRoZSBgYC9xdWlldGBgIG9wdGlvbiB0byBoaWRlIHRoZSBwcm9ncmVzcyBkaXNwbGF5LgogCkBAIC0zMjAsNyArMzQ1LDcgQEAKIFRvIHRlbXBvcmFyaWx5IHNldCBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIG9wZW4gQ29tbWFuZCBQcm9tcHQgYW5kIHVzZSB0aGUKIDpjb21tYW5kOmBzZXRgIGNvbW1hbmQ6OgogCi0gICAgQzpcPnNldCBQQVRIPUM6XFByb2dyYW0gRmlsZXNcUHl0aG9uIDMuNTslUEFUSCUKKyAgICBDOlw+c2V0IFBBVEg9QzpcUHJvZ3JhbSBGaWxlc1xQeXRob24gMy42OyVQQVRIJQogICAgIEM6XD5zZXQgUFlUSE9OUEFUSD0lUFlUSE9OUEFUSCU7QzpcTXlfcHl0aG9uX2xpYgogICAgIEM6XD5weXRob24KIApAQCAtMzc2LDEwICs0MDEsMTAgQEAKIAogQmVzaWRlcyB1c2luZyB0aGUgYXV0b21hdGljYWxseSBjcmVhdGVkIHN0YXJ0IG1lbnUgZW50cnkgZm9yIHRoZSBQeXRob24KIGludGVycHJldGVyLCB5b3UgbWlnaHQgd2FudCB0byBzdGFydCBQeXRob24gaW4gdGhlIGNvbW1hbmQgcHJvbXB0LiBUaGUKLWluc3RhbGxlciBmb3IgUHl0aG9uIDMuNSBhbmQgbGF0ZXIgaGFzIGFuIG9wdGlvbiB0byBzZXQgdGhhdCB1cCBmb3IgeW91LgoraW5zdGFsbGVyIGhhcyBhbiBvcHRpb24gdG8gc2V0IHRoYXQgdXAgZm9yIHlvdS4KIAotT24gdGhlIGZpcnN0IHBhZ2Ugb2YgdGhlIGluc3RhbGxlciwgYW4gb3B0aW9uIGxhYmVsbGVkICJBZGQgUHl0aG9uIDMuNSB0bwotUEFUSCIgY2FuIGJlIHNlbGVjdGVkIHRvIGhhdmUgdGhlIGluc3RhbGxlciBhZGQgdGhlIGluc3RhbGwgbG9jYXRpb24gaW50byB0aGUKK09uIHRoZSBmaXJzdCBwYWdlIG9mIHRoZSBpbnN0YWxsZXIsIGFuIG9wdGlvbiBsYWJlbGxlZCAiQWRkIFB5dGhvbiB0byBQQVRIIgorbWF5IGJlIHNlbGVjdGVkIHRvIGhhdmUgdGhlIGluc3RhbGxlciBhZGQgdGhlIGluc3RhbGwgbG9jYXRpb24gaW50byB0aGUKIDplbnZ2YXI6YFBBVEhgLiAgVGhlIGxvY2F0aW9uIG9mIHRoZSA6ZmlsZTpgU2NyaXB0c1xcYCBmb2xkZXIgaXMgYWxzbyBhZGRlZC4KIFRoaXMgYWxsb3dzIHlvdSB0byB0eXBlIDpjb21tYW5kOmBweXRob25gIHRvIHJ1biB0aGUgaW50ZXJwcmV0ZXIsIGFuZAogOmNvbW1hbmQ6YHBpcGAgZm9yIHRoZSBwYWNrYWdlIGluc3RhbGxlci4gVGh1cywgeW91IGNhbiBhbHNvIGV4ZWN1dGUgeW91cgpAQCAtMzkzLDcgKzQxOCw3IEBACiBleGFtcGxlIHZhcmlhYmxlIGNvdWxkIGxvb2sgbGlrZSB0aGlzIChhc3N1bWluZyB0aGUgZmlyc3QgdHdvIGVudHJpZXMgYWxyZWFkeQogZXhpc3RlZCk6OgogCi0gICAgQzpcV0lORE9XU1xzeXN0ZW0zMjtDOlxXSU5ET1dTO0M6XFByb2dyYW0gRmlsZXNcUHl0aG9uIDMuNQorICAgIEM6XFdJTkRPV1Ncc3lzdGVtMzI7QzpcV0lORE9XUztDOlxQcm9ncmFtIEZpbGVzXFB5dGhvbiAzLjYKIAogLi4gX2xhdW5jaGVyOgogCkBAIC00MTgsNiArNDQzLDggQEAKIEZyb20gdGhlIGNvbW1hbmQtbGluZQogXl5eXl5eXl5eXl5eXl5eXl5eXl5eCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisKIFN5c3RlbS13aWRlIGluc3RhbGxhdGlvbnMgb2YgUHl0aG9uIDMuMyBhbmQgbGF0ZXIgd2lsbCBwdXQgdGhlIGxhdW5jaGVyIG9uIHlvdXIKIDplbnZ2YXI6YFBBVEhgLiBUaGUgbGF1bmNoZXIgaXMgY29tcGF0aWJsZSB3aXRoIGFsbCBhdmFpbGFibGUgdmVyc2lvbnMgb2YKIFB5dGhvbiwgc28gaXQgZG9lcyBub3QgbWF0dGVyIHdoaWNoIHZlcnNpb24gaXMgaW5zdGFsbGVkLiBUbyBjaGVjayB0aGF0IHRoZQpAQCAtNDI3LDI1ICs0NTQsMjYgQEAKIAogICBweQogCi1Zb3Ugc2hvdWxkIGZpbmQgdGhhdCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgUHl0aG9uIDIueCB5b3UgaGF2ZSBpbnN0YWxsZWQgaXMKK1lvdSBzaG91bGQgZmluZCB0aGF0IHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBQeXRob24geW91IGhhdmUgaW5zdGFsbGVkIGlzCiBzdGFydGVkIC0gaXQgY2FuIGJlIGV4aXRlZCBhcyBub3JtYWwsIGFuZCBhbnkgYWRkaXRpb25hbCBjb21tYW5kLWxpbmUKIGFyZ3VtZW50cyBzcGVjaWZpZWQgd2lsbCBiZSBzZW50IGRpcmVjdGx5IHRvIFB5dGhvbi4KIAotSWYgeW91IGhhdmUgbXVsdGlwbGUgdmVyc2lvbnMgb2YgUHl0aG9uIDIueCBpbnN0YWxsZWQgKGUuZy4sIDIuNiBhbmQgMi43KSB5b3UKLXdpbGwgaGF2ZSBub3RpY2VkIHRoYXQgUHl0aG9uIDIuNyB3YXMgc3RhcnRlZCAtIHRvIGxhdW5jaCBQeXRob24gMi42LCB0cnkgdGhlCitJZiB5b3UgaGF2ZSBtdWx0aXBsZSB2ZXJzaW9ucyBvZiBQeXRob24gaW5zdGFsbGVkIChlLmcuLCAyLjcgYW5kIHx2ZXJzaW9ufCkgeW91Cit3aWxsIGhhdmUgbm90aWNlZCB0aGF0IFB5dGhvbiB8dmVyc2lvbnwgd2FzIHN0YXJ0ZWQgLSB0byBsYXVuY2ggUHl0aG9uIDIuNywgdHJ5Cit0aGUgY29tbWFuZDoKKworOjoKKworICBweSAtMi43CisKK0lmIHlvdSB3YW50IHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBQeXRob24gMi54IHlvdSBoYXZlIGluc3RhbGxlZCwgdHJ5IHRoZQogY29tbWFuZDoKIAogOjoKIAotICBweSAtMi42CisgIHB5IC0yCiAKLUlmIHlvdSBoYXZlIGEgUHl0aG9uIDMueCBpbnN0YWxsZWQsIHRyeSB0aGUgY29tbWFuZDoKLQotOjoKLQotICBweSAtMwotCi1Zb3Ugc2hvdWxkIGZpbmQgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIFB5dGhvbiAzLnggc3RhcnRzLgorWW91IHNob3VsZCBmaW5kIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBQeXRob24gMi54IHN0YXJ0cy4KIAogSWYgeW91IHNlZSB0aGUgZm9sbG93aW5nIGVycm9yLCB5b3UgZG8gbm90IGhhdmUgdGhlIGxhdW5jaGVyIGluc3RhbGxlZDoKIApAQCAtNTAwLDYgKzUyOCwxMSBAQAogZmlyc3QgbGluZSB0byBgYCMhIHB5dGhvbjIuNmBgIGFuZCB5b3Ugc2hvdWxkIGZpbmQgdGhlIDIuNiB2ZXJzaW9uCiBpbmZvcm1hdGlvbiBwcmludGVkLgogCitOb3RlIHRoYXQgdW5saWtlIGludGVyYWN0aXZlIHVzZSwgYSBiYXJlICJweXRob24iIHdpbGwgdXNlIHRoZSBsYXRlc3QKK3ZlcnNpb24gb2YgUHl0aG9uIDIueCB0aGF0IHlvdSBoYXZlIGluc3RhbGxlZC4gIFRoaXMgaXMgZm9yIGJhY2t3YXJkCitjb21wYXRpYmlsaXR5IGFuZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIFVuaXgsIHdoZXJlIHRoZSBjb21tYW5kIGBgcHl0aG9uYGAKK3R5cGljYWxseSByZWZlcnMgdG8gUHl0aG9uIDIuCisKIEZyb20gZmlsZSBhc3NvY2lhdGlvbnMKIF5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KIApAQCAtNjc2LDcgKzcwOSw3IEBACiAKIAogCi0uLiBmaW5kaW5nX21vZHVsZXM6CisuLiBfZmluZGluZ19tb2R1bGVzOgogCiBGaW5kaW5nIG1vZHVsZXMKID09PT09PT09PT09PT09PQpAQCAtNjg3LDcgKzcyMCwyNCBAQAogOmZpbGU6YEM6XFxQeXRob25cXExpYlxcYCBhbmQgdGhpcmQtcGFydHkgbW9kdWxlcyBzaG91bGQgYmUgc3RvcmVkIGluCiA6ZmlsZTpgQzpcXFB5dGhvblxcTGliXFxzaXRlLXBhY2thZ2VzXFxgLgogCi1UaGlzIGlzIGhvdyA6ZGF0YTpgc3lzLnBhdGhgIGlzIHBvcHVsYXRlZCBvbiBXaW5kb3dzOgorVG8gY29tcGxldGVseSBvdmVycmlkZSA6ZGF0YTpgc3lzLnBhdGhgLCBjcmVhdGUgYSBgYC5fcHRoYGAgZmlsZSB3aXRoIHRoZSBzYW1lCituYW1lIGFzIHRoZSBETEwgKGBgcHl0aG9uMzYuX3B0aGBgKSBvciB0aGUgZXhlY3V0YWJsZSAoYGBweXRob24uX3B0aGBgKSBhbmQKK3NwZWNpZnkgb25lIGxpbmUgZm9yIGVhY2ggcGF0aCB0byBhZGQgdG8gOmRhdGE6YHN5cy5wYXRoYC4gVGhlIGZpbGUgYmFzZWQgb24gdGhlCitETEwgbmFtZSBvdmVycmlkZXMgdGhlIG9uZSBiYXNlZCBvbiB0aGUgZXhlY3V0YWJsZSwgd2hpY2ggYWxsb3dzIHBhdGhzIHRvIGJlCityZXN0cmljdGVkIGZvciBhbnkgcHJvZ3JhbSBsb2FkaW5nIHRoZSBydW50aW1lIGlmIGRlc2lyZWQuCisKK1doZW4gdGhlIGZpbGUgZXhpc3RzLCBhbGwgcmVnaXN0cnkgYW5kIGVudmlyb25tZW50IHZhcmlhYmxlcyBhcmUgaWdub3JlZCwKK2lzb2xhdGVkIG1vZGUgaXMgZW5hYmxlZCwgYW5kIDptb2Q6YHNpdGVgIGlzIG5vdCBpbXBvcnRlZCB1bmxlc3Mgb25lIGxpbmUgaW4gdGhlCitmaWxlIHNwZWNpZmllcyBgYGltcG9ydCBzaXRlYGAuIEJsYW5rIHBhdGhzIGFuZCBsaW5lcyBzdGFydGluZyB3aXRoIGBgI2BgIGFyZQoraWdub3JlZC4gRWFjaCBwYXRoIG1heSBiZSBhYnNvbHV0ZSBvciByZWxhdGl2ZSB0byB0aGUgbG9jYXRpb24gb2YgdGhlIGZpbGUuCitJbXBvcnQgc3RhdGVtZW50cyBvdGhlciB0aGFuIHRvIGBgc2l0ZWBgIGFyZSBub3QgcGVybWl0dGVkLCBhbmQgYXJiaXRyYXJ5IGNvZGUKK2Nhbm5vdCBiZSBzcGVjaWZpZWQuCisKK05vdGUgdGhhdCBgYC5wdGhgYCBmaWxlcyAod2l0aG91dCBsZWFkaW5nIHVuZGVyc2NvcmUpIHdpbGwgYmUgcHJvY2Vzc2VkIG5vcm1hbGx5CitieSB0aGUgOm1vZDpgc2l0ZWAgbW9kdWxlLgorCitXaGVuIG5vIGBgLl9wdGhgYCBmaWxlIGlzIGZvdW5kLCB0aGlzIGlzIGhvdyA6ZGF0YTpgc3lzLnBhdGhgIGlzIHBvcHVsYXRlZCBvbgorV2luZG93czoKIAogKiBBbiBlbXB0eSBlbnRyeSBpcyBhZGRlZCBhdCB0aGUgc3RhcnQsIHdoaWNoIGNvcnJlc3BvbmRzIHRvIHRoZSBjdXJyZW50CiAgIGRpcmVjdG9yeS4KQEAgLTcwNiwxMCArNzU2LDExIEBACiAKICogSWYgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIDplbnZ2YXI6YFBZVEhPTkhPTUVgIGlzIHNldCwgaXQgaXMgYXNzdW1lZCBhcwogICAiUHl0aG9uIEhvbWUiLiAgT3RoZXJ3aXNlLCB0aGUgcGF0aCBvZiB0aGUgbWFpbiBQeXRob24gZXhlY3V0YWJsZSBpcyB1c2VkIHRvCi0gIGxvY2F0ZSBhICJsYW5kbWFyayBmaWxlIiAoYGBMaWJcb3MucHlgYCkgdG8gZGVkdWNlIHRoZSAiUHl0aG9uIEhvbWUiLiAgSWYgYQotICBQeXRob24gaG9tZSBpcyBmb3VuZCwgdGhlIHJlbGV2YW50IHN1Yi1kaXJlY3RvcmllcyBhZGRlZCB0byA6ZGF0YTpgc3lzLnBhdGhgCi0gIChgYExpYmBgLCBgYHBsYXQtd2luYGAsIGV0YykgYXJlIGJhc2VkIG9uIHRoYXQgZm9sZGVyLiAgT3RoZXJ3aXNlLCB0aGUgY29yZQotICBQeXRob24gcGF0aCBpcyBjb25zdHJ1Y3RlZCBmcm9tIHRoZSBQeXRob25QYXRoIHN0b3JlZCBpbiB0aGUgcmVnaXN0cnkuCisgIGxvY2F0ZSBhICJsYW5kbWFyayBmaWxlIiAoZWl0aGVyIGBgTGliXG9zLnB5YGAgb3IgYGBweXRob25YWS56aXBgYCkgdG8gZGVkdWNlCisgIHRoZSAiUHl0aG9uIEhvbWUiLiAgSWYgYSBQeXRob24gaG9tZSBpcyBmb3VuZCwgdGhlIHJlbGV2YW50IHN1Yi1kaXJlY3RvcmllcworICBhZGRlZCB0byA6ZGF0YTpgc3lzLnBhdGhgIChgYExpYmBgLCBgYHBsYXQtd2luYGAsIGV0YykgYXJlIGJhc2VkIG9uIHRoYXQKKyAgZm9sZGVyLiAgT3RoZXJ3aXNlLCB0aGUgY29yZSBQeXRob24gcGF0aCBpcyBjb25zdHJ1Y3RlZCBmcm9tIHRoZSBQeXRob25QYXRoCisgIHN0b3JlZCBpbiB0aGUgcmVnaXN0cnkuCiAKICogSWYgdGhlIFB5dGhvbiBIb21lIGNhbm5vdCBiZSBsb2NhdGVkLCBubyA6ZW52dmFyOmBQWVRIT05QQVRIYCBpcyBzcGVjaWZpZWQgaW4KICAgdGhlIGVudmlyb25tZW50LCBhbmQgbm8gcmVnaXN0cnkgZW50cmllcyBjYW4gYmUgZm91bmQsIGEgZGVmYXVsdCBwYXRoIHdpdGgKQEAgLTcyMiwxMCArNzczLDYgQEAKICAgcGF0aCBpcyB1c2VkIGluc3RlYWQgb2YgdGhlIHBhdGggdG8gdGhlIG1haW4gZXhlY3V0YWJsZSB3aGVuIGRlZHVjaW5nIHRoZQogICBob21lIGxvY2F0aW9uLgogCi0qIElmIGBgYXBwbG9jYWxgYCBpcyBzZXQgdG8gdHJ1ZSwgdGhlIGBgaG9tZWBgIHByb3BlcnR5IG9yIHRoZSBtYWluIGV4ZWN1dGFibGUKLSAgaXMgYWx3YXlzIHVzZWQgYXMgdGhlIGhvbWUgcGF0aCwgYW5kIGFsbCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgb3IgcmVnaXN0cnkKLSAgdmFsdWVzIGFmZmVjdGluZyB0aGUgcGF0aCBhcmUgaWdub3JlZC4gVGhlIGxhbmRtYXJrIGZpbGUgaXMgbm90IGNoZWNrZWQuCi0KIFRoZSBlbmQgcmVzdWx0IG9mIGFsbCB0aGlzIGlzOgogCiAqIFdoZW4gcnVubmluZyA6ZmlsZTpgcHl0aG9uLmV4ZWAsIG9yIGFueSBvdGhlciAuZXhlIGluIHRoZSBtYWluIFB5dGhvbgpAQCAtNzQ0LDEzICs3OTEsMTIgQEAKIEZvciB0aG9zZSB3aG8gd2FudCB0byBidW5kbGUgUHl0aG9uIGludG8gdGhlaXIgYXBwbGljYXRpb24gb3IgZGlzdHJpYnV0aW9uLCB0aGUKIGZvbGxvd2luZyBhZHZpY2Ugd2lsbCBwcmV2ZW50IGNvbmZsaWN0cyB3aXRoIG90aGVyIGluc3RhbGxhdGlvbnM6CiAKLSogSW5jbHVkZSBhIGBgcHl2ZW52LmNmZ2BgIGZpbGUgYWxvbmdzaWRlIHlvdXIgZXhlY3V0YWJsZSBjb250YWluaW5nCi0gIGBgYXBwbG9jYWwgPSB0cnVlYGAuIFRoaXMgd2lsbCBlbnN1cmUgdGhhdCB5b3VyIG93biBkaXJlY3Rvcnkgd2lsbCBiZSB1c2VkIHRvCi0gIHJlc29sdmUgcGF0aHMgZXZlbiBpZiB5b3UgaGF2ZSBpbmNsdWRlZCB0aGUgc3RhbmRhcmQgbGlicmFyeSBpbiBhIFpJUCBmaWxlLgotICBJdCB3aWxsIGFsc28gaWdub3JlIHVzZXIgc2l0ZS1wYWNrYWdlcyBhbmQgb3RoZXIgcGF0aHMgbGlzdGVkIGluIHRoZQotICByZWdpc3RyeS4KKyogSW5jbHVkZSBhIGBgLl9wdGhgYCBmaWxlIGFsb25nc2lkZSB5b3VyIGV4ZWN1dGFibGUgY29udGFpbmluZyB0aGUKKyAgZGlyZWN0b3JpZXMgdG8gaW5jbHVkZS4gVGhpcyB3aWxsIGlnbm9yZSBwYXRocyBsaXN0ZWQgaW4gdGhlIHJlZ2lzdHJ5IGFuZAorICBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIGFuZCBhbHNvIGlnbm9yZSA6bW9kOmBzaXRlYCB1bmxlc3MgYGBpbXBvcnQgc2l0ZWBgIGlzCisgIGxpc3RlZC4KIAotKiBJZiB5b3UgYXJlIGxvYWRpbmcgOmZpbGU6YHB5dGhvbjMuZGxsYCBvciA6ZmlsZTpgcHl0aG9uMzUuZGxsYCBpbiB5b3VyIG93bgorKiBJZiB5b3UgYXJlIGxvYWRpbmcgOmZpbGU6YHB5dGhvbjMuZGxsYCBvciA6ZmlsZTpgcHl0aG9uMzYuZGxsYCBpbiB5b3VyIG93bgogICBleGVjdXRhYmxlLCBleHBsaWNpdGx5IGNhbGwgOmM6ZnVuYzpgUHlfU2V0UGF0aGAgb3IgKGF0IGxlYXN0KQogICA6YzpmdW5jOmBQeV9TZXRQcm9ncmFtTmFtZWAgYmVmb3JlIDpjOmZ1bmM6YFB5X0luaXRpYWxpemVgLgogCkBAIC03NjAsNyArODA2LDggQEAKICogSWYgeW91IGNhbm5vdCB1c2UgdGhlIHByZXZpb3VzIHN1Z2dlc3Rpb25zIChmb3IgZXhhbXBsZSwgeW91IGFyZSBhCiAgIGRpc3RyaWJ1dGlvbiB0aGF0IGFsbG93cyBwZW9wbGUgdG8gcnVuIDpmaWxlOmBweXRob24uZXhlYCBkaXJlY3RseSksIGVuc3VyZQogICB0aGF0IHRoZSBsYW5kbWFyayBmaWxlICg6ZmlsZTpgTGliXFxvcy5weWApIGV4aXN0cyBpbiB5b3VyIGluc3RhbGwgZGlyZWN0b3J5LgotICAoTm90ZSB0aGF0IGl0IHdpbGwgbm90IGJlIGRldGVjdGVkIGluc2lkZSBhIFpJUCBmaWxlLikKKyAgKE5vdGUgdGhhdCBpdCB3aWxsIG5vdCBiZSBkZXRlY3RlZCBpbnNpZGUgYSBaSVAgZmlsZSwgYnV0IGEgY29ycmVjdGx5IG5hbWVkCisgIFpJUCBmaWxlIHdpbGwgYmUgZGV0ZWN0ZWQgaW5zdGVhZC4pCiAKIFRoZXNlIHdpbGwgZW5zdXJlIHRoYXQgdGhlIGZpbGVzIGluIGEgc3lzdGVtLXdpZGUgaW5zdGFsbGF0aW9uIHdpbGwgbm90IHRha2UKIHByZWNlZGVuY2Ugb3ZlciB0aGUgY29weSBvZiB0aGUgc3RhbmRhcmQgbGlicmFyeSBidW5kbGVkIHdpdGggeW91ciBhcHBsaWNhdGlvbi4KQEAgLTc2OCw2ICs4MTUsMjIgQEAKIHRoZSBmaXJzdCBzdWdnZXN0aW9uIGlzIHRoZSBiZXN0LCBhcyB0aGUgb3RoZXIgbWF5IHN0aWxsIGJlIHN1c2NlcHRpYmxlIHRvCiBub24tc3RhbmRhcmQgcGF0aHMgaW4gdGhlIHJlZ2lzdHJ5IGFuZCB1c2VyIHNpdGUtcGFja2FnZXMuCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjoKKyAgIDMuNgorCisgICAgICAqIEFkZHMgYGAuX3B0aGBgIGZpbGUgc3VwcG9ydCBhbmQgcmVtb3ZlcyBgYGFwcGxvY2FsYGAgb3B0aW9uIGZyb20KKyAgICAgICAgYGBweXZlbnYuY2ZnYGAuCisgICAgICAqIEFkZHMgYGBweXRob25YWC56aXBgYCBhcyBhIHBvdGVudGlhbCBsYW5kbWFyayB3aGVuIGRpcmVjdGx5IGFkamFjZW50CisgICAgICAgIHRvIHRoZSBleGVjdXRhYmxlLgorCisuLiBkZXByZWNhdGVkOjoKKyAgIDMuNgorCisgICAgICBNb2R1bGVzIHNwZWNpZmllZCBpbiB0aGUgcmVnaXN0cnkgdW5kZXIgYGBNb2R1bGVzYGAgKG5vdCBgYFB5dGhvblBhdGhgYCkKKyAgICAgIG1heSBiZSBpbXBvcnRlZCBieSA6Y2xhc3M6YGltcG9ydGxpYi5tYWNoaW5lcnkuV2luZG93c1JlZ2lzdHJ5RmluZGVyYC4KKyAgICAgIFRoaXMgZmluZGVyIGlzIGVuYWJsZWQgb24gV2luZG93cyBpbiAzLjYuMCBhbmQgZWFybGllciwgYnV0IG1heSBuZWVkIHRvCisgICAgICBiZSBleHBsaWNpdGx5IGFkZGVkIHRvIDphdHRyOmBzeXMubWV0YV9wYXRoYCBpbiB0aGUgZnV0dXJlLgorCiBBZGRpdGlvbmFsIG1vZHVsZXMKID09PT09PT09PT09PT09PT09PQogCkBAIC04NjcsNyArOTMwLDcgQEAKIFdoZW4gZXh0cmFjdGVkLCB0aGUgZW1iZWRkZWQgZGlzdHJpYnV0aW9uIGlzIChhbG1vc3QpIGZ1bGx5IGlzb2xhdGVkIGZyb20gdGhlCiB1c2VyJ3Mgc3lzdGVtLCBpbmNsdWRpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzLCBzeXN0ZW0gcmVnaXN0cnkgc2V0dGluZ3MsIGFuZAogaW5zdGFsbGVkIHBhY2thZ2VzLiBUaGUgc3RhbmRhcmQgbGlicmFyeSBpcyBpbmNsdWRlZCBhcyBwcmUtY29tcGlsZWQgYW5kCi1vcHRpbWl6ZWQgYGAucHljYGAgZmlsZXMgaW4gYSBaSVAsIGFuZCBgYHB5dGhvbjMuZGxsYGAsIGBgcHl0aG9uMzUuZGxsYGAsCitvcHRpbWl6ZWQgYGAucHljYGAgZmlsZXMgaW4gYSBaSVAsIGFuZCBgYHB5dGhvbjMuZGxsYGAsIGBgcHl0aG9uMzYuZGxsYGAsCiBgYHB5dGhvbi5leGVgYCBhbmQgYGBweXRob253LmV4ZWBgIGFyZSBhbGwgcHJvdmlkZWQuIFRjbC90ayAoaW5jbHVkaW5nIGFsbAogZGVwZW5kYW50cywgc3VjaCBhcyBJZGxlKSwgcGlwIGFuZCB0aGUgUHl0aG9uIGRvY3VtZW50YXRpb24gYXJlIG5vdCBpbmNsdWRlZC4KIApkaWZmIC0tZ2l0IGEvRG9jL3doYXRzbmV3LzIuMS5yc3QgYi9Eb2Mvd2hhdHNuZXcvMi4xLnJzdAppbmRleCAwMDE1MWQ3Li4zODBlZGVjIDEwMDY0NAotLS0gYS9Eb2Mvd2hhdHNuZXcvMi4xLnJzdAorKysgYi9Eb2Mvd2hhdHNuZXcvMi4xLnJzdApAQCAtMzY3LDcgKzM2Nyw3IEBACiAKIFRoaXMgdmVyc2lvbiB3b3JrcyBmb3Igc2ltcGxlIHRoaW5ncyBzdWNoIGFzIGludGVnZXJzLCBidXQgaXQgaGFzIGEgc2lkZSBlZmZlY3Q7CiB0aGUgYGBfY2FjaGVgYCBkaWN0aW9uYXJ5IGhvbGRzIGEgcmVmZXJlbmNlIHRvIHRoZSByZXR1cm4gdmFsdWVzLCBzbyB0aGV5J2xsCi1uZXZlciBiZSBkZWFsbG9jYXRlZCB1bnRpbCB0aGUgUHl0aG9uIHByb2Nlc3MgZXhpdHMgYW5kIGNsZWFucyB1cCBUaGlzIGlzbid0CituZXZlciBiZSBkZWFsbG9jYXRlZCB1bnRpbCB0aGUgUHl0aG9uIHByb2Nlc3MgZXhpdHMgYW5kIGNsZWFucyB1cC4gVGhpcyBpc24ndAogdmVyeSBub3RpY2VhYmxlIGZvciBpbnRlZ2VycywgYnV0IGlmIDpmdW5jOmBmYCByZXR1cm5zIGFuIG9iamVjdCwgb3IgYSBkYXRhCiBzdHJ1Y3R1cmUgdGhhdCB0YWtlcyB1cCBhIGxvdCBvZiBtZW1vcnksIHRoaXMgY2FuIGJlIGEgcHJvYmxlbS4KIApkaWZmIC0tZ2l0IGEvRG9jL3doYXRzbmV3LzMuMi5yc3QgYi9Eb2Mvd2hhdHNuZXcvMy4yLnJzdAppbmRleCA5YWNjNzM0Li5iOTAwZTc3IDEwMDY0NAotLS0gYS9Eb2Mvd2hhdHNuZXcvMy4yLnJzdAorKysgYi9Eb2Mvd2hhdHNuZXcvMy4yLnJzdApAQCAtMTI1Myw5ICsxMjUzLDkgQEAKIAogICAgIEBjb250ZXh0bWFuYWdlcgogICAgIGRlZiB0cmFja19lbnRyeV9hbmRfZXhpdChuYW1lKToKLSAgICAgICAgbG9nZ2luZy5pbmZvKCdFbnRlcmluZzoge30nLmZvcm1hdChuYW1lKSkKKyAgICAgICAgbG9nZ2luZy5pbmZvKCdFbnRlcmluZzogJXMnLCBuYW1lKQogICAgICAgICB5aWVsZAotICAgICAgICBsb2dnaW5nLmluZm8oJ0V4aXRpbmc6IHt9Jy5mb3JtYXQobmFtZSkpCisgICAgICAgIGxvZ2dpbmcuaW5mbygnRXhpdGluZzogJXMnLCBuYW1lKQogCiBGb3JtZXJseSwgdGhpcyB3b3VsZCBoYXZlIG9ubHkgYmVlbiB1c2FibGUgYXMgYSBjb250ZXh0IG1hbmFnZXI6OgogCmRpZmYgLS1naXQgYS9Eb2Mvd2hhdHNuZXcvMy4zLnJzdCBiL0RvYy93aGF0c25ldy8zLjMucnN0CmluZGV4IDBjOWYyYmIuLjkzYjI5N2MgMTAwNjQ0Ci0tLSBhL0RvYy93aGF0c25ldy8zLjMucnN0CisrKyBiL0RvYy93aGF0c25ldy8zLjMucnN0CkBAIC0xMDgsNyArMTA4LDcgQEAKIHdpdGggdGhlIGludGVycHJldGVyIGNvcmUuCiAKIFRoaXMgUEVQIGFkZHMgdGhlIDptb2Q6YHZlbnZgIG1vZHVsZSBmb3IgcHJvZ3JhbW1hdGljIGFjY2VzcywgYW5kIHRoZQotOnJlZjpgcHl2ZW52IDxzY3JpcHRzLXB5dmVudj5gIHNjcmlwdCBmb3IgY29tbWFuZC1saW5lIGFjY2VzcyBhbmQKK2BgcHl2ZW52YGAgc2NyaXB0IGZvciBjb21tYW5kLWxpbmUgYWNjZXNzIGFuZAogYWRtaW5pc3RyYXRpb24uICBUaGUgUHl0aG9uIGludGVycHJldGVyIGNoZWNrcyBmb3IgYSBgYHB5dmVudi5jZmdgYCwKIGZpbGUgd2hvc2UgZXhpc3RlbmNlIHNpZ25hbHMgdGhlIGJhc2Ugb2YgYSB2aXJ0dWFsIGVudmlyb25tZW50J3MgZGlyZWN0b3J5CiB0cmVlLgpkaWZmIC0tZ2l0IGEvRG9jL3doYXRzbmV3LzMuNC5yc3QgYi9Eb2Mvd2hhdHNuZXcvMy40LnJzdAppbmRleCAxZTVjOWQxLi43MjM5OGY5IDEwMDY0NAotLS0gYS9Eb2Mvd2hhdHNuZXcvMy40LnJzdAorKysgYi9Eb2Mvd2hhdHNuZXcvMy40LnJzdApAQCAtMTk3LDcgKzE5Nyw3IEBACiBgYHBpcGBgIGNvbW1hbmQgdHlwaWNhbGx5IHJlZmVycyB0byB0aGUgc2VwYXJhdGVseSBpbnN0YWxsZWQgUHl0aG9uIDIKIHZlcnNpb24uCiAKLVRoZSA6cmVmOmBweXZlbnYgPHNjcmlwdHMtcHl2ZW52PmAgY29tbWFuZCBsaW5lIHV0aWxpdHkgYW5kIHRoZSA6bW9kOmB2ZW52YAorVGhlIGBgcHl2ZW52YGAgY29tbWFuZCBsaW5lIHV0aWxpdHkgYW5kIHRoZSA6bW9kOmB2ZW52YAogbW9kdWxlIG1ha2UgdXNlIG9mIHRoZSA6bW9kOmBlbnN1cmVwaXBgIG1vZHVsZSB0byBtYWtlIGBgcGlwYGAgcmVhZGlseQogYXZhaWxhYmxlIGluIHZpcnR1YWwgZW52aXJvbm1lbnRzLiBXaGVuIHVzaW5nIHRoZSBjb21tYW5kIGxpbmUgdXRpbGl0eSwKIGBgcGlwYGAgaXMgaW5zdGFsbGVkIGJ5IGRlZmF1bHQsIHdoaWxlIHdoZW4gdXNpbmcgdGhlIDptb2Q6YHZlbnZgIG1vZHVsZQpAQCAtODI0LDcgKzgyNCw3IEBACiA6dGVybTpgcHJvdmlzaW9uYWwgQVBJYC4gIFRoZXNlIGNsYXNzZXMgcHJvdmlkZSBhIG51bWJlciBvZiBuZXcgbWV0aG9kcyB0aGF0CiBtYWtlIGV4dHJhY3RpbmcgY29udGVudCBmcm9tIGFuZCBpbnNlcnRpbmcgY29udGVudCBpbnRvIGVtYWlsIG1lc3NhZ2VzIG11Y2gKIGVhc2llci4gIEZvciBkZXRhaWxzLCBzZWUgdGhlIDptb2Q6YH5lbWFpbC5jb250ZW50bWFuYWdlcmAgZG9jdW1lbnRhdGlvbiBhbmQKLXRoZSA6cmVmOmBlbWFpbC1jb250ZW50bWFuYWdlci1hcGktZXhhbXBsZXNgLiAgVGhlc2UgQVBJIGFkZGl0aW9ucyBjb21wbGV0ZSB0aGUKK3RoZSA6cmVmOmBlbWFpbC1leGFtcGxlc2AuICBUaGVzZSBBUEkgYWRkaXRpb25zIGNvbXBsZXRlIHRoZQogYnVsayBvZiB0aGUgd29yayB0aGF0IHdhcyBwbGFubmVkIGFzIHBhcnQgb2YgdGhlIGVtYWlsNiBwcm9qZWN0LiAgVGhlIGN1cnJlbnRseQogcHJvdmlzaW9uYWwgQVBJIGlzIHNjaGVkdWxlZCB0byBiZWNvbWUgZmluYWwgaW4gUHl0aG9uIDMuNSAocG9zc2libHkgd2l0aCBhIGZldwogbWlub3IgYWRkaXRpb25zIGluIHRoZSBhcmVhIG9mIGVycm9yIGhhbmRsaW5nKS4gIChDb250cmlidXRlZCBieSBSLiBEYXZpZApAQCAtMTk4OSwxMSArMTk4OSwxMSBAQAogICBTdGlubmVyIHVzaW5nIGhpcyA6cGVwOmA0NDVgLWJhc2VkIGBgcHlmYWlsbWFsbG9jYGAgdG9vbCAoOmlzc3VlOmAxODQwOGAsCiAgIDppc3N1ZTpgMTg1MjBgKS4KIAotKiBUaGUgOnJlZjpgcHl2ZW52IDxzY3JpcHRzLXB5dmVudj5gIGNvbW1hbmQgbm93IGFjY2VwdHMgYSBgYC0tY29waWVzYGAgb3B0aW9uCisqIFRoZSBgYHB5dmVudmBgIGNvbW1hbmQgbm93IGFjY2VwdHMgYSBgYC0tY29waWVzYGAgb3B0aW9uCiAgIHRvIHVzZSBjb3BpZXMgcmF0aGVyIHRoYW4gc3ltbGlua3MgZXZlbiBvbiBzeXN0ZW1zIHdoZXJlIHN5bWxpbmtzIGFyZSB0aGUKICAgZGVmYXVsdC4gIChDb250cmlidXRlZCBieSBWaW5heSBTYWppcCBpbiA6aXNzdWU6YDE4ODA3YC4pCiAKLSogVGhlIDpyZWY6YHB5dmVudiA8c2NyaXB0cy1weXZlbnY+YCBjb21tYW5kIGFsc28gYWNjZXB0cyBhIGBgLS13aXRob3V0LXBpcGBgCisqIFRoZSBgYHB5dmVudmBgIGNvbW1hbmQgYWxzbyBhY2NlcHRzIGEgYGAtLXdpdGhvdXQtcGlwYGAKICAgb3B0aW9uIHRvIHN1cHByZXNzIHRoZSBvdGhlcndpc2UtYXV0b21hdGljIGJvb3RzdHJhcHBpbmcgb2YgcGlwIGludG8KICAgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQuICAoQ29udHJpYnV0ZWQgYnkgTmljayBDb2dobGFuIGluIDppc3N1ZTpgMTk1NTJgCiAgIGFzIHBhcnQgb2YgdGhlIDpwZXA6YDQ1M2AgaW1wbGVtZW50YXRpb24uKQpAQCAtMjQ1OSw3ICsyNDU5LDcgQEAKICAgc3RyZWFtIGluIDptb2Q6YH5pby5UZXh0SU9XcmFwcGVyYCB0byB1c2UgaXRzICpuZXdsaW5lKiBhcmd1bWVudAogICAoOmlzc3VlOmAxNTIwNGApLgogCi0qIElmIHlvdSB1c2UgOnJlZjpgcHl2ZW52IDxzY3JpcHRzLXB5dmVudj5gIGluIGEgc2NyaXB0IGFuZCBkZXNpcmUgdGhhdCBwaXAKKyogSWYgeW91IHVzZSBgYHB5dmVudmBgIGluIGEgc2NyaXB0IGFuZCBkZXNpcmUgdGhhdCBwaXAKICAgKm5vdCogYmUgaW5zdGFsbGVkLCB5b3UgbXVzdCBhZGQgYGAtLXdpdGhvdXQtcGlwYGAgdG8geW91ciBjb21tYW5kCiAgIGludm9jYXRpb24uCiAKZGlmZiAtLWdpdCBhL0RvYy93aGF0c25ldy8zLjUucnN0IGIvRG9jL3doYXRzbmV3LzMuNS5yc3QKaW5kZXggYWI2MWQ3YS4uZWRiNzRmMCAxMDA2NDQKLS0tIGEvRG9jL3doYXRzbmV3LzMuNS5yc3QKKysrIGIvRG9jL3doYXRzbmV3LzMuNS5yc3QKQEAgLTQ2LDcgKzQ2LDggQEAKIAogVGhpcyBhcnRpY2xlIGV4cGxhaW5zIHRoZSBuZXcgZmVhdHVyZXMgaW4gUHl0aG9uIDMuNSwgY29tcGFyZWQgdG8gMy40LgogUHl0aG9uIDMuNSB3YXMgcmVsZWFzZWQgb24gU2VwdGVtYmVyIDEzLCAyMDE1LiDCoFNlZSB0aGUKLTpyZWY6YGNoYW5nZWxvZyA8Y2hhbmdlbG9nPmAgZm9yIGEgZnVsbCBsaXN0IG9mIGNoYW5nZXMuCitgY2hhbmdlbG9nIDxodHRwczovL2RvY3MucHl0aG9uLm9yZy8zLjUvd2hhdHNuZXcvY2hhbmdlbG9nLmh0bWw+YF8gZm9yIGEgZnVsbAorbGlzdCBvZiBjaGFuZ2VzLgogCiAuLiBzZWVhbHNvOjoKIApAQCAtMjE3NSw4ICsyMTc2LDcgQEAKIAogKiA6YzpmdW5jOmBQeU1lbV9SYXdDYWxsb2NgLAogKiA6YzpmdW5jOmBQeU1lbV9DYWxsb2NgLAotKiA6YzpmdW5jOmBQeU9iamVjdF9DYWxsb2NgLAotKiA6YzpmdW5jOmBfUHlPYmplY3RfR0NfQ2FsbG9jYC4KKyogOmM6ZnVuYzpgUHlPYmplY3RfQ2FsbG9jYC4KIAogKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgMjEyMzNgLikKIApkaWZmIC0tZ2l0IGEvRG9jL3doYXRzbmV3LzMuNi5yc3QgYi9Eb2Mvd2hhdHNuZXcvMy42LnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hM2MzZDg5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jL3doYXRzbmV3LzMuNi5yc3QKQEAgLTAsMCArMSwyMzAyIEBACisqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgIFdoYXQncyBOZXcgSW4gUHl0aG9uIDMuNgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCis6UmVsZWFzZTogfHJlbGVhc2V8Cis6RGF0ZTogfHRvZGF5fAorOkVkaXRvcnM6IEVsdmlzIFByYW5za2V2aWNodXMgPGVsdmlzQG1hZ2ljLmlvPiwgWXVyeSBTZWxpdmFub3YgPHl1cnlAbWFnaWMuaW8+CisKKy4uIFJ1bGVzIGZvciBtYWludGVuYW5jZToKKworICAgKiBBbnlvbmUgY2FuIGFkZCB0ZXh0IHRvIHRoaXMgZG9jdW1lbnQuICBEbyBub3Qgc3BlbmQgdmVyeSBtdWNoIHRpbWUKKyAgIG9uIHRoZSB3b3JkaW5nIG9mIHlvdXIgY2hhbmdlcywgYmVjYXVzZSB5b3VyIHRleHQgd2lsbCBwcm9iYWJseQorICAgZ2V0IHJld3JpdHRlbiB0byBzb21lIGRlZ3JlZS4KKworICAgKiBUaGUgbWFpbnRhaW5lciB3aWxsIGdvIHRocm91Z2ggTWlzYy9ORVdTIHBlcmlvZGljYWxseSBhbmQgYWRkCisgICBjaGFuZ2VzOyBpdCdzIHRoZXJlZm9yZSBtb3JlIGltcG9ydGFudCB0byBhZGQgeW91ciBjaGFuZ2VzIHRvCisgICBNaXNjL05FV1MgdGhhbiB0byB0aGlzIGZpbGUuCisKKyAgICogVGhpcyBpcyBub3QgYSBjb21wbGV0ZSBsaXN0IG9mIGV2ZXJ5IHNpbmdsZSBjaGFuZ2U7IGNvbXBsZXRlbmVzcworICAgaXMgdGhlIHB1cnBvc2Ugb2YgTWlzYy9ORVdTLiAgU29tZSBjaGFuZ2VzIEkgY29uc2lkZXIgdG9vIHNtYWxsCisgICBvciBlc290ZXJpYyB0byBpbmNsdWRlLiAgSWYgc3VjaCBhIGNoYW5nZSBpcyBhZGRlZCB0byB0aGUgdGV4dCwKKyAgIEknbGwganVzdCByZW1vdmUgaXQuICAoVGhpcyBpcyBhbm90aGVyIHJlYXNvbiB5b3Ugc2hvdWxkbid0IHNwZW5kCisgICB0b28gbXVjaCB0aW1lIG9uIHdyaXRpbmcgeW91ciBhZGRpdGlvbi4pCisKKyAgICogSWYgeW91IHdhbnQgdG8gZHJhdyB5b3VyIG5ldyB0ZXh0IHRvIHRoZSBhdHRlbnRpb24gb2YgdGhlCisgICBtYWludGFpbmVyLCBhZGQgJ1hYWCcgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgcGFyYWdyYXBoIG9yCisgICBzZWN0aW9uLgorCisgICAqIEl0J3MgT0sgdG8ganVzdCBhZGQgYSBmcmFnbWVudGFyeSBub3RlIGFib3V0IGEgY2hhbmdlLiAgRm9yCisgICBleGFtcGxlOiAiWFhYIERlc2NyaWJlIHRoZSB0cmFuc21vZ3JpZnkoKSBmdW5jdGlvbiBhZGRlZCB0byB0aGUKKyAgIHNvY2tldCBtb2R1bGUuIiAgVGhlIG1haW50YWluZXIgd2lsbCByZXNlYXJjaCB0aGUgY2hhbmdlIGFuZAorICAgd3JpdGUgdGhlIG5lY2Vzc2FyeSB0ZXh0LgorCisgICAqIFlvdSBjYW4gY29tbWVudCBvdXQgeW91ciBhZGRpdGlvbnMgaWYgeW91IGxpa2UsIGJ1dCBpdCdzIG5vdAorICAgbmVjZXNzYXJ5IChlc3BlY2lhbGx5IHdoZW4gYSBmaW5hbCByZWxlYXNlIGlzIHNvbWUgbW9udGhzIGF3YXkpLgorCisgICAqIENyZWRpdCB0aGUgYXV0aG9yIG9mIGEgcGF0Y2ggb3IgYnVnZml4LiAgIEp1c3QgdGhlIG5hbWUgaXMKKyAgIHN1ZmZpY2llbnQ7IHRoZSBlLW1haWwgYWRkcmVzcyBpc24ndCBuZWNlc3NhcnkuCisKKyAgICogSXQncyBoZWxwZnVsIHRvIGFkZCB0aGUgYnVnL3BhdGNoIG51bWJlciBhcyBhIGNvbW1lbnQ6CisKKyAgIFhYWCBEZXNjcmliZSB0aGUgdHJhbnNtb2dyaWZ5KCkgZnVuY3Rpb24gYWRkZWQgdG8gdGhlIHNvY2tldAorICAgbW9kdWxlLgorICAgKENvbnRyaWJ1dGVkIGJ5IFAuWS4gRGV2ZWxvcGVyIGluIDppc3N1ZTpgMTIzNDVgLikKKworICAgVGhpcyBzYXZlcyB0aGUgbWFpbnRhaW5lciB0aGUgZWZmb3J0IG9mIGdvaW5nIHRocm91Z2ggdGhlIE1lcmN1cmlhbCBsb2cKKyAgIHdoZW4gcmVzZWFyY2hpbmcgYSBjaGFuZ2UuCisKK1RoaXMgYXJ0aWNsZSBleHBsYWlucyB0aGUgbmV3IGZlYXR1cmVzIGluIFB5dGhvbiAzLjYsIGNvbXBhcmVkIHRvIDMuNS4KKworLi4gc2VlYWxzbzo6CisKKyAgICA6cGVwOmA0OTRgIC0gUHl0aG9uIDMuNiBSZWxlYXNlIFNjaGVkdWxlCisKKworU3VtbWFyeSAtLSBSZWxlYXNlIGhpZ2hsaWdodHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK05ldyBzeW50YXggZmVhdHVyZXM6CisKKyogOnJlZjpgUEVQIDQ5OCA8d2hhdHNuZXczNi1wZXA0OTg+YCwgZm9ybWF0dGVkIHN0cmluZyBsaXRlcmFscy4KKworKiA6cmVmOmBQRVAgNTE1IDx3aGF0c25ldzM2LXBlcDUxNT5gLCB1bmRlcnNjb3JlcyBpbiBudW1lcmljIGxpdGVyYWxzLgorCisqIDpyZWY6YFBFUCA1MjYgPHdoYXRzbmV3MzYtcGVwNTI2PmAsIHN5bnRheCBmb3IgdmFyaWFibGUgYW5ub3RhdGlvbnMuCisKKyogOnJlZjpgUEVQIDUyNSA8d2hhdHNuZXczNi1wZXA1MjU+YCwgYXN5bmNocm9ub3VzIGdlbmVyYXRvcnMuCisKKyogOnJlZjpgUEVQIDUzMCA8d2hhdHNuZXczNi1wZXA1MzA+YDogYXN5bmNocm9ub3VzIGNvbXByZWhlbnNpb25zLgorCisKK05ldyBsaWJyYXJ5IG1vZHVsZXM6CisKKyogOm1vZDpgc2VjcmV0c2A6IDpyZWY6YFBFUCA1MDYgLS0gQWRkaW5nIEEgU2VjcmV0cyBNb2R1bGUgVG8gVGhlIFN0YW5kYXJkIExpYnJhcnkgPHdoYXRzbmV3MzYtcGVwNTA2PmAuCisKKworQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBpbXByb3ZlbWVudHM6CisKKyogVGhlIDpyZWY6YGRpY3QgPHR5cGVzbWFwcGluZz5gIHR5cGUgaGFzIGJlZW4gcmVpbXBsZW1lbnRlZCB0byB1c2UKKyAgYSA6cmVmOmBtb3JlIGNvbXBhY3QgcmVwcmVzZW50YXRpb24gPHdoYXRzbmV3MzYtY29tcGFjdGRpY3Q+YAorICBzaW1pbGFyIHRvIHRoZSBgUHlQeSBkaWN0IGltcGxlbWVudGF0aW9uYF8uICBUaGlzIHJlc3VsdGVkIGluIGRpY3Rpb25hcmllcworICB1c2luZyAyMCUgdG8gMjUlIGxlc3MgbWVtb3J5IHdoZW4gY29tcGFyZWQgdG8gUHl0aG9uIDMuNS4KKworKiBDdXN0b21pemF0aW9uIG9mIGNsYXNzIGNyZWF0aW9uIGhhcyBiZWVuIHNpbXBsaWZpZWQgd2l0aCB0aGUKKyAgOnJlZjpgbmV3IHByb3RvY29sIDx3aGF0c25ldzM2LXBlcDQ4Nz5gLgorCisqIFRoZSBjbGFzcyBhdHRyaWJ1dGUgZGVmaW5pdGlvbiBvcmRlciBpcworICA6cmVmOmBub3cgcHJlc2VydmVkICA8d2hhdHNuZXczNi1wZXA1MjA+YC4KKworKiBUaGUgb3JkZXIgb2YgZWxlbWVudHMgaW4gYGAqKmt3YXJnc2BgIG5vdworICA6cmVmOmBjb3JyZXNwb25kcyB0byB0aGUgb3JkZXIgPHdoYXRzbmV3MzYtcGVwNDY4PmAgaW4gd2hpY2gga2V5d29yZAorICBhcmd1bWVudHMgd2VyZSBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uLgorCisqIERUcmFjZSBhbmQgU3lzdGVtVGFwIDpyZWY6YHByb2Jpbmcgc3VwcG9ydCA8d2hhdHNuZXczNi10cmFjaW5nPmAgaGFzCisgIGJlZW4gYWRkZWQuCisKKyogVGhlIG5ldyA6cmVmOmBQWVRIT05NQUxMT0MgPHdoYXRzbmV3MzYtcHl0aG9ubWFsbG9jPmAgZW52aXJvbm1lbnQgdmFyaWFibGUKKyAgY2FuIG5vdyBiZSB1c2VkIHRvIGRlYnVnIHRoZSBpbnRlcnByZXRlciBtZW1vcnkgYWxsb2NhdGlvbiBhbmQgYWNjZXNzCisgIGVycm9ycy4KKworCitTaWduaWZpY2FudCBpbXByb3ZlbWVudHMgaW4gdGhlIHN0YW5kYXJkIGxpYnJhcnk6CisKKyogVGhlIDptb2Q6YGFzeW5jaW9gIG1vZHVsZSBoYXMgcmVjZWl2ZWQgbmV3IGZlYXR1cmVzLCBzaWduaWZpY2FudAorICB1c2FiaWxpdHkgYW5kIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50cywgYW5kIGEgZmFpciBhbW91bnQgb2YgYnVnIGZpeGVzLgorICBTdGFydGluZyB3aXRoIFB5dGhvbiAzLjYgdGhlIGBgYXN5bmNpb2BgIG1vZHVsZSBpcyBubyBsb25nZXIgcHJvdmlzaW9uYWwKKyAgYW5kIGl0cyBBUEkgaXMgY29uc2lkZXJlZCBzdGFibGUuCisKKyogQSBuZXcgOnJlZjpgZmlsZSBzeXN0ZW0gcGF0aCBwcm90b2NvbCA8d2hhdHNuZXczNi1wZXA1MTk+YCBoYXMgYmVlbgorICBpbXBsZW1lbnRlZCB0byBzdXBwb3J0IDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0cyA8cGF0aC1saWtlIG9iamVjdD5gLgorICBBbGwgc3RhbmRhcmQgbGlicmFyeSBmdW5jdGlvbnMgb3BlcmF0aW5nIG9uIHBhdGhzIGhhdmUgYmVlbiB1cGRhdGVkIHRvCisgIHdvcmsgd2l0aCB0aGUgbmV3IHByb3RvY29sLgorCisqIFRoZSA6bW9kOmBkYXRldGltZWAgbW9kdWxlIGhhcyBnYWluZWQgc3VwcG9ydCBmb3IKKyAgOnJlZjpgTG9jYWwgVGltZSBEaXNhbWJpZ3VhdGlvbiA8d2hhdHNuZXczNi1wZXA0OTU+YC4KKworKiBUaGUgOm1vZDpgdHlwaW5nYCBtb2R1bGUgcmVjZWl2ZWQgYSBudW1iZXIgb2YKKyAgOnJlZjpgaW1wcm92ZW1lbnRzIDx3aGF0c25ldzM2LXR5cGluZz5gIGFuZCBpcyBubyBsb25nZXIgcHJvdmlzaW9uYWwuCisKKyogVGhlIDptb2Q6YHRyYWNlbWFsbG9jYCBtb2R1bGUgaGFzIGJlZW4gc2lnbmlmaWNhbnRseSByZXdvcmtlZAorICBhbmQgaXMgbm93IHVzZWQgdG8gcHJvdmlkZSBiZXR0ZXIgb3V0cHV0IGZvciA6ZXhjOmBSZXNvdXJjZVdhcm5pbmdgCisgIGFzIHdlbGwgYXMgcHJvdmlkZSBiZXR0ZXIgZGlhZ25vc3RpY3MgZm9yIG1lbW9yeSBhbGxvY2F0aW9uIGVycm9ycy4KKyAgU2VlIHRoZSA6cmVmOmBQWVRIT05NQUxMT0Mgc2VjdGlvbiA8d2hhdHNuZXczNi1weXRob25tYWxsb2M+YCBmb3IgbW9yZQorICBpbmZvcm1hdGlvbi4KKworCitTZWN1cml0eSBpbXByb3ZlbWVudHM6CisKKyogVGhlIG5ldyA6bW9kOmBzZWNyZXRzYCBtb2R1bGUgaGFzIGJlZW4gYWRkZWQgdG8gc2ltcGxpZnkgdGhlIGdlbmVyYXRpb24gb2YKKyAgY3J5cHRvZ3JhcGhpY2FsbHkgc3Ryb25nIHBzZXVkby1yYW5kb20gbnVtYmVycyBzdWl0YWJsZSBmb3IKKyAgbWFuYWdpbmcgc2VjcmV0cyBzdWNoIGFzIGFjY291bnQgYXV0aGVudGljYXRpb24sIHRva2VucywgYW5kIHNpbWlsYXIuCisKKyogT24gTGludXgsIDpmdW5jOmBvcy51cmFuZG9tYCBub3cgYmxvY2tzIHVudGlsIHRoZSBzeXN0ZW0gdXJhbmRvbSBlbnRyb3B5CisgIHBvb2wgaXMgaW5pdGlhbGl6ZWQgdG8gaW5jcmVhc2UgdGhlIHNlY3VyaXR5LiBTZWUgdGhlIDpwZXA6YDUyNGAgZm9yIHRoZQorICByYXRpb25hbGUuCisKKyogVGhlIDptb2Q6YGhhc2hsaWJgIGFuZCA6bW9kOmBzc2xgIG1vZHVsZXMgbm93IHN1cHBvcnQgT3BlblNTTCAxLjEuMC4KKworKiBUaGUgZGVmYXVsdCBzZXR0aW5ncyBhbmQgZmVhdHVyZSBzZXQgb2YgdGhlIDptb2Q6YHNzbGAgbW9kdWxlIGhhdmUgYmVlbgorICBpbXByb3ZlZC4KKworKiBUaGUgOm1vZDpgaGFzaGxpYmAgbW9kdWxlIHJlY2VpdmVkIHN1cHBvcnQgZm9yIHRoZSBCTEFLRTIsIFNIQS0zIGFuZCBTSEFLRQorICBoYXNoIGFsZ29yaXRobXMgYW5kIHRoZSA6ZnVuYzpgfmhhc2hsaWIuc2NyeXB0YCBrZXkgZGVyaXZhdGlvbiBmdW5jdGlvbi4KKworCitXaW5kb3dzIGltcHJvdmVtZW50czoKKworKiA6cmVmOmBQRVAgNTI4IDx3aGF0c25ldzM2LXBlcDUyOT5gIGFuZCA6cmVmOmBQRVAgNTI5IDx3aGF0c25ldzM2LXBlcDUyOT5gLAorICBXaW5kb3dzIGZpbGVzeXN0ZW0gYW5kIGNvbnNvbGUgZW5jb2RpbmcgY2hhbmdlZCB0byBVVEYtOC4KKworKiBUaGUgYGBweS5leGVgYCBsYXVuY2hlciwgd2hlbiB1c2VkIGludGVyYWN0aXZlbHksIG5vIGxvbmdlciBwcmVmZXJzCisgIFB5dGhvbiAyIG92ZXIgUHl0aG9uIDMgd2hlbiB0aGUgdXNlciBkb2Vzbid0IHNwZWNpZnkgYSB2ZXJzaW9uICh2aWEKKyAgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyBvciBhIGNvbmZpZyBmaWxlKS4gIEhhbmRsaW5nIG9mIHNoZWJhbmcgbGluZXMKKyAgcmVtYWlucyB1bmNoYW5nZWQgLSAicHl0aG9uIiByZWZlcnMgdG8gUHl0aG9uIDIgaW4gdGhhdCBjYXNlLgorCisqIGBgcHl0aG9uLmV4ZWBgIGFuZCBgYHB5dGhvbncuZXhlYGAgaGF2ZSBiZWVuIG1hcmtlZCBhcyBsb25nLXBhdGggYXdhcmUsCisgIHdoaWNoIG1lYW5zIHRoYXQgdGhlIDI2MCBjaGFyYWN0ZXIgcGF0aCBsaW1pdCBtYXkgbm8gbG9uZ2VyIGFwcGx5LgorICBTZWUgOnJlZjpgcmVtb3ZpbmcgdGhlIE1BWF9QQVRIIGxpbWl0YXRpb24gPG1heC1wYXRoPmAgZm9yIGRldGFpbHMuCisKKyogQSBgYC5fcHRoYGAgZmlsZSBjYW4gYmUgYWRkZWQgdG8gZm9yY2UgaXNvbGF0ZWQgbW9kZSBhbmQgZnVsbHkgc3BlY2lmeQorICBhbGwgc2VhcmNoIHBhdGhzIHRvIGF2b2lkIHJlZ2lzdHJ5IGFuZCBlbnZpcm9ubWVudCBsb29rdXAuIFNlZQorICA6cmVmOmB0aGUgZG9jdW1lbnRhdGlvbiA8ZmluZGluZ19tb2R1bGVzPmAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisKKyogQSBgYHB5dGhvbjM2LnppcGBgIGZpbGUgbm93IHdvcmtzIGFzIGEgbGFuZG1hcmsgdG8gaW5mZXIKKyAgOmVudnZhcjpgUFlUSE9OSE9NRWAuIFNlZSA6cmVmOmB0aGUgZG9jdW1lbnRhdGlvbiA8ZmluZGluZ19tb2R1bGVzPmAgZm9yCisgIG1vcmUgaW5mb3JtYXRpb24uCisKKworLi4gX1B5UHkgZGljdCBpbXBsZW1lbnRhdGlvbjogaHR0cHM6Ly9tb3JlcHlweS5ibG9nc3BvdC5jb20vMjAxNS8wMS9mYXN0ZXItbW9yZS1tZW1vcnktZWZmaWNpZW50LWFuZC1tb3JlLmh0bWwKKworCitOZXcgRmVhdHVyZXMKKz09PT09PT09PT09PQorCisuLiBfd2hhdHNuZXczNi1wZXA0OTg6CisKK1BFUCA0OTg6IEZvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworOnBlcDpgNDk4YCBpbnRyb2R1Y2VzIGEgbmV3IGtpbmQgb2Ygc3RyaW5nIGxpdGVyYWxzOiAqZi1zdHJpbmdzKiwgb3IKKzpyZWY6YGZvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbHMgPGYtc3RyaW5ncz5gLgorCitGb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWxzIGFyZSBwcmVmaXhlZCB3aXRoIGBgJ2YnYGAgYW5kIGFyZSBzaW1pbGFyIHRvCit0aGUgZm9ybWF0IHN0cmluZ3MgYWNjZXB0ZWQgYnkgOm1ldGg6YHN0ci5mb3JtYXRgLiAgVGhleSBjb250YWluIHJlcGxhY2VtZW50CitmaWVsZHMgc3Vycm91bmRlZCBieSBjdXJseSBicmFjZXMuICBUaGUgcmVwbGFjZW1lbnQgZmllbGRzIGFyZSBleHByZXNzaW9ucywKK3doaWNoIGFyZSBldmFsdWF0ZWQgYXQgcnVuIHRpbWUsIGFuZCB0aGVuIGZvcm1hdHRlZCB1c2luZyB0aGUKKzpmdW5jOmBmb3JtYXRgIHByb3RvY29sOjoKKworICAgID4+PiBuYW1lID0gIkZyZWQiCisgICAgPj4+IGYiSGUgc2FpZCBoaXMgbmFtZSBpcyB7bmFtZX0uIgorICAgICdIZSBzYWlkIGhpcyBuYW1lIGlzIEZyZWQuJworICAgID4+PiB3aWR0aCA9IDEwCisgICAgPj4+IHByZWNpc2lvbiA9IDQKKyAgICA+Pj4gdmFsdWUgPSBkZWNpbWFsLkRlY2ltYWwoIjEyLjM0NTY3IikKKyAgICA+Pj4gZiJyZXN1bHQ6IHt2YWx1ZTp7d2lkdGh9LntwcmVjaXNpb259fSIgICMgbmVzdGVkIGZpZWxkcworICAgICdyZXN1bHQ6ICAgICAgMTIuMzUnCisKKy4uIHNlZWFsc286OgorCisgICAgOnBlcDpgNDk4YCAtLSBMaXRlcmFsIFN0cmluZyBJbnRlcnBvbGF0aW9uLgorICAgICAgIFBFUCB3cml0dGVuIGFuZCBpbXBsZW1lbnRlZCBieSBFcmljIFYuIFNtaXRoLgorCisgICAgOnJlZjpgRmVhdHVyZSBkb2N1bWVudGF0aW9uIDxmLXN0cmluZ3M+YC4KKworCisuLiBfd2hhdHNuZXczNi1wZXA1MjY6CisKK1BFUCA1MjY6IFN5bnRheCBmb3IgdmFyaWFibGUgYW5ub3RhdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworOnBlcDpgNDg0YCBpbnRyb2R1Y2VkIHRoZSBzdGFuZGFyZCBmb3IgdHlwZSBhbm5vdGF0aW9ucyBvZiBmdW5jdGlvbgorcGFyYW1ldGVycywgYS5rLmEuIHR5cGUgaGludHMuIFRoaXMgUEVQIGFkZHMgc3ludGF4IHRvIFB5dGhvbiBmb3IgYW5ub3RhdGluZwordGhlIHR5cGVzIG9mIHZhcmlhYmxlcyBpbmNsdWRpbmcgY2xhc3MgdmFyaWFibGVzIGFuZCBpbnN0YW5jZSB2YXJpYWJsZXM6OgorCisgICAgcHJpbWVzOiBMaXN0W2ludF0gPSBbXQorCisgICAgY2FwdGFpbjogc3RyICAjIE5vdGU6IG5vIGluaXRpYWwgdmFsdWUhCisKKyAgICBjbGFzcyBTdGFyc2hpcDoKKyAgICAgICAgc3RhdHM6IERpY3Rbc3RyLCBpbnRdID0ge30KKworSnVzdCBhcyBmb3IgZnVuY3Rpb24gYW5ub3RhdGlvbnMsIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIgZG9lcyBub3QgYXR0YWNoIGFueQorcGFydGljdWxhciBtZWFuaW5nIHRvIHZhcmlhYmxlIGFubm90YXRpb25zIGFuZCBvbmx5IHN0b3JlcyB0aGVtIGluIHRoZQorYGBfX2Fubm90YXRpb25zX19gYCBhdHRyaWJ1dGUgb2YgYSBjbGFzcyBvciBtb2R1bGUuCisKK0luIGNvbnRyYXN0IHRvIHZhcmlhYmxlIGRlY2xhcmF0aW9ucyBpbiBzdGF0aWNhbGx5IHR5cGVkIGxhbmd1YWdlcywKK3RoZSBnb2FsIG9mIGFubm90YXRpb24gc3ludGF4IGlzIHRvIHByb3ZpZGUgYW4gZWFzeSB3YXkgdG8gc3BlY2lmeSBzdHJ1Y3R1cmVkCit0eXBlIG1ldGFkYXRhIGZvciB0aGlyZCBwYXJ0eSB0b29scyBhbmQgbGlicmFyaWVzIHZpYSB0aGUgYWJzdHJhY3Qgc3ludGF4IHRyZWUKK2FuZCB0aGUgYGBfX2Fubm90YXRpb25zX19gYCBhdHRyaWJ1dGUuCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmA1MjZgIC0tIFN5bnRheCBmb3IgdmFyaWFibGUgYW5ub3RhdGlvbnMuCisgICAgICBQRVAgd3JpdHRlbiBieSBSeWFuIEdvbnphbGV6LCBQaGlsaXAgSG91c2UsIEl2YW4gTGV2a2l2c2t5aSwgTGlzYSBSb2FjaCwKKyAgICAgIGFuZCBHdWlkbyB2YW4gUm9zc3VtLiBJbXBsZW1lbnRlZCBieSBJdmFuIExldmtpdnNreWkuCisKKyAgIFRvb2xzIHRoYXQgdXNlIG9yIHdpbGwgdXNlIHRoZSBuZXcgc3ludGF4OgorICAgYG15cHkgPGh0dHA6Ly9naXRodWIuY29tL3B5dGhvbi9teXB5PmBfLAorICAgYHB5dHlwZSA8aHR0cDovL2dpdGh1Yi5jb20vZ29vZ2xlL3B5dHlwZT5gXywgUHlDaGFybSwgZXRjLgorCisKKy4uIF93aGF0c25ldzM2LXBlcDUxNToKKworUEVQIDUxNTogVW5kZXJzY29yZXMgaW4gTnVtZXJpYyBMaXRlcmFscworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCis6cGVwOmA1MTVgIGFkZHMgdGhlIGFiaWxpdHkgdG8gdXNlIHVuZGVyc2NvcmVzIGluIG51bWVyaWMgbGl0ZXJhbHMgZm9yCitpbXByb3ZlZCByZWFkYWJpbGl0eS4gIEZvciBleGFtcGxlOjoKKworICAgID4+PiAxXzAwMF8wMDBfMDAwXzAwMF8wMDAKKyAgICAxMDAwMDAwMDAwMDAwMDAwCisgICAgPj4+IDB4X0ZGX0ZGX0ZGX0ZGCisgICAgNDI5NDk2NzI5NQorCitTaW5nbGUgdW5kZXJzY29yZXMgYXJlIGFsbG93ZWQgYmV0d2VlbiBkaWdpdHMgYW5kIGFmdGVyIGFueSBiYXNlCitzcGVjaWZpZXIuICBMZWFkaW5nLCB0cmFpbGluZywgb3IgbXVsdGlwbGUgdW5kZXJzY29yZXMgaW4gYSByb3cgYXJlIG5vdAorYWxsb3dlZC4KKworVGhlIDpyZWY6YHN0cmluZyBmb3JtYXR0aW5nIDxmb3JtYXRzcGVjPmAgbGFuZ3VhZ2UgYWxzbyBub3cgaGFzIHN1cHBvcnQKK2ZvciB0aGUgYGAnXydgYCBvcHRpb24gdG8gc2lnbmFsIHRoZSB1c2Ugb2YgYW4gdW5kZXJzY29yZSBmb3IgYSB0aG91c2FuZHMKK3NlcGFyYXRvciBmb3IgZmxvYXRpbmcgcG9pbnQgcHJlc2VudGF0aW9uIHR5cGVzIGFuZCBmb3IgaW50ZWdlcgorcHJlc2VudGF0aW9uIHR5cGUgYGAnZCdgYC4gIEZvciBpbnRlZ2VyIHByZXNlbnRhdGlvbiB0eXBlcyBgYCdiJ2BgLAorYGAnbydgYCwgYGAneCdgYCwgYW5kIGBgJ1gnYGAsIHVuZGVyc2NvcmVzIHdpbGwgYmUgaW5zZXJ0ZWQgZXZlcnkgNAorZGlnaXRzOjoKKworICAgID4+PiAnezpffScuZm9ybWF0KDEwMDAwMDApCisgICAgJzFfMDAwXzAwMCcKKyAgICA+Pj4gJ3s6X3h9Jy5mb3JtYXQoMHhGRkZGRkZGRikKKyAgICAnZmZmZl9mZmZmJworCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgNTE1YCAtLSBVbmRlcnNjb3JlcyBpbiBOdW1lcmljIExpdGVyYWxzCisgICAgICBQRVAgd3JpdHRlbiBieSBHZW9yZyBCcmFuZGwgYW5kIFNlcmhpeSBTdG9yY2hha2EuCisKKworLi4gX3doYXRzbmV3MzYtcGVwNTI1OgorCitQRVAgNTI1OiBBc3luY2hyb25vdXMgR2VuZXJhdG9ycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworOnBlcDpgNDkyYCBpbnRyb2R1Y2VkIHN1cHBvcnQgZm9yIG5hdGl2ZSBjb3JvdXRpbmVzIGFuZCBgYGFzeW5jYGAgLyBgYGF3YWl0YGAKK3N5bnRheCB0byBQeXRob24gMy41LiAgQSBub3RhYmxlIGxpbWl0YXRpb24gb2YgdGhlIFB5dGhvbiAzLjUgaW1wbGVtZW50YXRpb24KK2lzIHRoYXQgaXQgd2FzIG5vdCBwb3NzaWJsZSB0byB1c2UgYGBhd2FpdGBgIGFuZCBgYHlpZWxkYGAgaW4gdGhlIHNhbWUKK2Z1bmN0aW9uIGJvZHkuICBJbiBQeXRob24gMy42IHRoaXMgcmVzdHJpY3Rpb24gaGFzIGJlZW4gbGlmdGVkLCBtYWtpbmcgaXQKK3Bvc3NpYmxlIHRvIGRlZmluZSAqYXN5bmNocm9ub3VzIGdlbmVyYXRvcnMqOjoKKworICAgIGFzeW5jIGRlZiB0aWNrZXIoZGVsYXksIHRvKToKKyAgICAgICAgIiIiWWllbGQgbnVtYmVycyBmcm9tIDAgdG8gKnRvKiBldmVyeSAqZGVsYXkqIHNlY29uZHMuIiIiCisgICAgICAgIGZvciBpIGluIHJhbmdlKHRvKToKKyAgICAgICAgICAgIHlpZWxkIGkKKyAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoZGVsYXkpCisKK1RoZSBuZXcgc3ludGF4IGFsbG93cyBmb3IgZmFzdGVyIGFuZCBtb3JlIGNvbmNpc2UgY29kZS4KKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDUyNWAgLS0gQXN5bmNocm9ub3VzIEdlbmVyYXRvcnMKKyAgICAgIFBFUCB3cml0dGVuIGFuZCBpbXBsZW1lbnRlZCBieSBZdXJ5IFNlbGl2YW5vdi4KKworCisuLiBfd2hhdHNuZXczNi1wZXA1MzA6CisKK1BFUCA1MzA6IEFzeW5jaHJvbm91cyBDb21wcmVoZW5zaW9ucworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKzpwZXA6YDUzMGAgYWRkcyBzdXBwb3J0IGZvciB1c2luZyBgYGFzeW5jIGZvcmBgIGluIGxpc3QsIHNldCwgZGljdAorY29tcHJlaGVuc2lvbnMgYW5kIGdlbmVyYXRvciBleHByZXNzaW9uczo6CisKKyAgICByZXN1bHQgPSBbaSBhc3luYyBmb3IgaSBpbiBhaXRlcigpIGlmIGkgJSAyXQorCitBZGRpdGlvbmFsbHksIGBgYXdhaXRgYCBleHByZXNzaW9ucyBhcmUgc3VwcG9ydGVkIGluIGFsbCBraW5kcworb2YgY29tcHJlaGVuc2lvbnM6OgorCisgICAgcmVzdWx0ID0gW2F3YWl0IGZ1bigpIGZvciBmdW4gaW4gZnVuY3MgaWYgYXdhaXQgY29uZGl0aW9uKCldCisKKy4uIHNlZWFsc286OgorCisgOnBlcDpgNTMwYCAtLSBBc3luY2hyb25vdXMgQ29tcHJlaGVuc2lvbnMKKyAgICBQRVAgd3JpdHRlbiBhbmQgaW1wbGVtZW50ZWQgYnkgWXVyeSBTZWxpdmFub3YuCisKKworLi4gX3doYXRzbmV3MzYtcGVwNDg3OgorCitQRVAgNDg3OiBTaW1wbGVyIGN1c3RvbWl6YXRpb24gb2YgY2xhc3MgY3JlYXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitJdCBpcyBub3cgcG9zc2libGUgdG8gY3VzdG9taXplIHN1YmNsYXNzIGNyZWF0aW9uIHdpdGhvdXQgdXNpbmcgYSBtZXRhY2xhc3MuCitUaGUgbmV3IGBgX19pbml0X3N1YmNsYXNzX19gYCBjbGFzc21ldGhvZCB3aWxsIGJlIGNhbGxlZCBvbiB0aGUgYmFzZSBjbGFzcword2hlbmV2ZXIgYSBuZXcgc3ViY2xhc3MgaXMgY3JlYXRlZDo6CisKKyAgICBjbGFzcyBQbHVnaW5CYXNlOgorICAgICAgICBzdWJjbGFzc2VzID0gW10KKworICAgICAgICBkZWYgX19pbml0X3N1YmNsYXNzX18oY2xzLCAqKmt3YXJncyk6CisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9zdWJjbGFzc19fKCoqa3dhcmdzKQorICAgICAgICAgICAgY2xzLnN1YmNsYXNzZXMuYXBwZW5kKGNscykKKworICAgIGNsYXNzIFBsdWdpbjEoUGx1Z2luQmFzZSk6CisgICAgICAgIHBhc3MKKworICAgIGNsYXNzIFBsdWdpbjIoUGx1Z2luQmFzZSk6CisgICAgICAgIHBhc3MKKworSW4gb3JkZXIgdG8gYWxsb3cgemVyby1hcmd1bWVudCA6ZnVuYzpgc3VwZXJgIGNhbGxzIHRvIHdvcmsgY29ycmVjdGx5IGZyb20KKzptZXRoOmB+b2JqZWN0Ll9faW5pdF9zdWJjbGFzc19fYCBpbXBsZW1lbnRhdGlvbnMsIGN1c3RvbSBtZXRhY2xhc3NlcyBtdXN0CitlbnN1cmUgdGhhdCB0aGUgbmV3IGBgX19jbGFzc2NlbGxfX2BgIG5hbWVzcGFjZSBlbnRyeSBpcyBwcm9wYWdhdGVkIHRvCitgYHR5cGUuX19uZXdfX2BgIChhcyBkZXNjcmliZWQgaW4gOnJlZjpgY2xhc3Mtb2JqZWN0LWNyZWF0aW9uYCkuCisKKy4uIHNlZWFsc286OgorCisgOnBlcDpgNDg3YCAtLSBTaW1wbGVyIGN1c3RvbWl6YXRpb24gb2YgY2xhc3MgY3JlYXRpb24KKyAgICBQRVAgd3JpdHRlbiBhbmQgaW1wbGVtZW50ZWQgYnkgTWFydGluIFRlaWNobWFubi4KKworIDpyZWY6YEZlYXR1cmUgZG9jdW1lbnRhdGlvbiA8Y2xhc3MtY3VzdG9taXphdGlvbj5gCisKKworLi4gX3doYXRzbmV3MzYtcGVwNDg3LWRlc2NyaXB0b3JzOgorCitQRVAgNDg3OiBEZXNjcmlwdG9yIFByb3RvY29sIEVuaGFuY2VtZW50cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworOnBlcDpgNDg3YCBleHRlbmRzIHRoZSBkZXNjcmlwdG9yIHByb3RvY29sIHRvIGluY2x1ZGUgdGhlIG5ldyBvcHRpb25hbAorOm1ldGg6YH5vYmplY3QuX19zZXRfbmFtZV9fYCBtZXRob2QuICBXaGVuZXZlciBhIG5ldyBjbGFzcyBpcyBkZWZpbmVkLCB0aGUgbmV3CittZXRob2Qgd2lsbCBiZSBjYWxsZWQgb24gYWxsIGRlc2NyaXB0b3JzIGluY2x1ZGVkIGluIHRoZSBkZWZpbml0aW9uLCBwcm92aWRpbmcKK3RoZW0gd2l0aCBhIHJlZmVyZW5jZSB0byB0aGUgY2xhc3MgYmVpbmcgZGVmaW5lZCBhbmQgdGhlIG5hbWUgZ2l2ZW4gdG8gdGhlCitkZXNjcmlwdG9yIHdpdGhpbiB0aGUgY2xhc3MgbmFtZXNwYWNlLiAgSW4gb3RoZXIgd29yZHMsIGluc3RhbmNlcyBvZgorZGVzY3JpcHRvcnMgY2FuIG5vdyBrbm93IHRoZSBhdHRyaWJ1dGUgbmFtZSBvZiB0aGUgZGVzY3JpcHRvciBpbiB0aGUKK293bmVyIGNsYXNzOjoKKworICAgIGNsYXNzIEludEZpZWxkOgorICAgICAgICBkZWYgX19nZXRfXyhzZWxmLCBpbnN0YW5jZSwgb3duZXIpOgorICAgICAgICAgICAgcmV0dXJuIGluc3RhbmNlLl9fZGljdF9fW3NlbGYubmFtZV0KKworICAgICAgICBkZWYgX19zZXRfXyhzZWxmLCBpbnN0YW5jZSwgdmFsdWUpOgorICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodmFsdWUsIGludCk6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihmJ2V4cGVjdGluZyBpbnRlZ2VyIGluIHtzZWxmLm5hbWV9JykKKyAgICAgICAgICAgIGluc3RhbmNlLl9fZGljdF9fW3NlbGYubmFtZV0gPSB2YWx1ZQorCisgICAgICAgICMgdGhpcyBpcyB0aGUgbmV3IGluaXRpYWxpemVyOgorICAgICAgICBkZWYgX19zZXRfbmFtZV9fKHNlbGYsIG93bmVyLCBuYW1lKToKKyAgICAgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKworICAgIGNsYXNzIE1vZGVsOgorICAgICAgICBpbnRfZmllbGQgPSBJbnRGaWVsZCgpCisKKworLi4gc2VlYWxzbzo6CisKKyAgICA6cGVwOmA0ODdgIC0tIFNpbXBsZXIgY3VzdG9taXphdGlvbiBvZiBjbGFzcyBjcmVhdGlvbgorICAgICAgICBQRVAgd3JpdHRlbiBhbmQgaW1wbGVtZW50ZWQgYnkgTWFydGluIFRlaWNobWFubi4KKworICAgIDpyZWY6YEZlYXR1cmUgZG9jdW1lbnRhdGlvbiA8ZGVzY3JpcHRvcnM+YAorCisKKy4uIF93aGF0c25ldzM2LXBlcDUxOToKKworUEVQIDUxOTogQWRkaW5nIGEgZmlsZSBzeXN0ZW0gcGF0aCBwcm90b2NvbAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitGaWxlIHN5c3RlbSBwYXRocyBoYXZlIGhpc3RvcmljYWxseSBiZWVuIHJlcHJlc2VudGVkIGFzIDpjbGFzczpgc3RyYAorb3IgOmNsYXNzOmBieXRlc2Agb2JqZWN0cy4gVGhpcyBoYXMgbGVkIHRvIHBlb3BsZSB3aG8gd3JpdGUgY29kZSB3aGljaAorb3BlcmF0ZSBvbiBmaWxlIHN5c3RlbSBwYXRocyB0byBhc3N1bWUgdGhhdCBzdWNoIG9iamVjdHMgYXJlIG9ubHkgb25lCitvZiB0aG9zZSB0d28gdHlwZXMgKGFuIDpjbGFzczpgaW50YCByZXByZXNlbnRpbmcgYSBmaWxlIGRlc2NyaXB0b3IKK2RvZXMgbm90IGNvdW50IGFzIHRoYXQgaXMgbm90IGEgZmlsZSBwYXRoKS4gVW5mb3J0dW5hdGVseSB0aGF0Cithc3N1bXB0aW9uIHByZXZlbnRzIGFsdGVybmF0aXZlIG9iamVjdCByZXByZXNlbnRhdGlvbnMgb2YgZmlsZSBzeXN0ZW0KK3BhdGhzIGxpa2UgOm1vZDpgcGF0aGxpYmAgZnJvbSB3b3JraW5nIHdpdGggcHJlLWV4aXN0aW5nIGNvZGUsCitpbmNsdWRpbmcgUHl0aG9uJ3Mgc3RhbmRhcmQgbGlicmFyeS4KKworVG8gZml4IHRoaXMgc2l0dWF0aW9uLCBhIG5ldyBpbnRlcmZhY2UgcmVwcmVzZW50ZWQgYnkKKzpjbGFzczpgb3MuUGF0aExpa2VgIGhhcyBiZWVuIGRlZmluZWQuIEJ5IGltcGxlbWVudGluZyB0aGUKKzptZXRoOmB+b3MuUGF0aExpa2UuX19mc3BhdGhfX2AgbWV0aG9kLCBhbiBvYmplY3Qgc2lnbmFscyB0aGF0IGl0CityZXByZXNlbnRzIGEgcGF0aC4gQW4gb2JqZWN0IGNhbiB0aGVuIHByb3ZpZGUgYSBsb3ctbGV2ZWwKK3JlcHJlc2VudGF0aW9uIG9mIGEgZmlsZSBzeXN0ZW0gcGF0aCBhcyBhIDpjbGFzczpgc3RyYCBvcgorOmNsYXNzOmBieXRlc2Agb2JqZWN0LiBUaGlzIG1lYW5zIGFuIG9iamVjdCBpcyBjb25zaWRlcmVkCis6dGVybTpgcGF0aC1saWtlIDxwYXRoLWxpa2Ugb2JqZWN0PmAgaWYgaXQgaW1wbGVtZW50cworOmNsYXNzOmBvcy5QYXRoTGlrZWAgb3IgaXMgYSA6Y2xhc3M6YHN0cmAgb3IgOmNsYXNzOmBieXRlc2Agb2JqZWN0Cit3aGljaCByZXByZXNlbnRzIGEgZmlsZSBzeXN0ZW0gcGF0aC4gQ29kZSBjYW4gdXNlIDpmdW5jOmBvcy5mc3BhdGhgLAorOmZ1bmM6YG9zLmZzZGVjb2RlYCwgb3IgOmZ1bmM6YG9zLmZzZW5jb2RlYCB0byBleHBsaWNpdGx5IGdldCBhCis6Y2xhc3M6YHN0cmAgYW5kL29yIDpjbGFzczpgYnl0ZXNgIHJlcHJlc2VudGF0aW9uIG9mIGEgcGF0aC1saWtlCitvYmplY3QuCisKK1RoZSBidWlsdC1pbiA6ZnVuYzpgb3BlbmAgZnVuY3Rpb24gaGFzIGJlZW4gdXBkYXRlZCB0byBhY2NlcHQKKzpjbGFzczpgb3MuUGF0aExpa2VgIG9iamVjdHMsIGFzIGhhdmUgYWxsIHJlbGV2YW50IGZ1bmN0aW9ucyBpbiB0aGUKKzptb2Q6YG9zYCBhbmQgOm1vZDpgb3MucGF0aGAgbW9kdWxlcywgYW5kIG1vc3Qgb3RoZXIgZnVuY3Rpb25zIGFuZAorY2xhc3NlcyBpbiB0aGUgc3RhbmRhcmQgbGlicmFyeS4gIFRoZSA6Y2xhc3M6YG9zLkRpckVudHJ5YCBjbGFzcworYW5kIHJlbGV2YW50IGNsYXNzZXMgaW4gOm1vZDpgcGF0aGxpYmAgaGF2ZSBhbHNvIGJlZW4gdXBkYXRlZCB0bworaW1wbGVtZW50IDpjbGFzczpgb3MuUGF0aExpa2VgLgorCitUaGUgaG9wZSBpcyB0aGF0IHVwZGF0aW5nIHRoZSBmdW5kYW1lbnRhbCBmdW5jdGlvbnMgZm9yIG9wZXJhdGluZworb24gZmlsZSBzeXN0ZW0gcGF0aHMgd2lsbCBsZWFkIHRvIHRoaXJkLXBhcnR5IGNvZGUgdG8gaW1wbGljaXRseQorc3VwcG9ydCBhbGwgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RzIDxwYXRoLWxpa2Ugb2JqZWN0PmAgd2l0aG91dCBhbnkKK2NvZGUgY2hhbmdlcywgb3IgYXQgbGVhc3QgdmVyeSBtaW5pbWFsIG9uZXMgKGUuZy4gY2FsbGluZworOmZ1bmM6YG9zLmZzcGF0aGAgYXQgdGhlIGJlZ2lubmluZyBvZiBjb2RlIGJlZm9yZSBvcGVyYXRpbmcgb24gYQorcGF0aC1saWtlIG9iamVjdCkuCisKK0hlcmUgYXJlIHNvbWUgZXhhbXBsZXMgb2YgaG93IHRoZSBuZXcgaW50ZXJmYWNlIGFsbG93cyBmb3IKKzpjbGFzczpgcGF0aGxpYi5QYXRoYCB0byBiZSB1c2VkIG1vcmUgZWFzaWx5IGFuZCB0cmFuc3BhcmVudGx5IHdpdGgKK3ByZS1leGlzdGluZyBjb2RlOjoKKworICA+Pj4gaW1wb3J0IHBhdGhsaWIKKyAgPj4+IHdpdGggb3BlbihwYXRobGliLlBhdGgoIlJFQURNRSIpKSBhcyBmOgorICAuLi4gICAgIGNvbnRlbnRzID0gZi5yZWFkKCkKKyAgLi4uCisgID4+PiBpbXBvcnQgb3MucGF0aAorICA+Pj4gb3MucGF0aC5zcGxpdGV4dChwYXRobGliLlBhdGgoInNvbWVfZmlsZS50eHQiKSkKKyAgKCdzb21lX2ZpbGUnLCAnLnR4dCcpCisgID4+PiBvcy5wYXRoLmpvaW4oIi9hL2IiLCBwYXRobGliLlBhdGgoImMiKSkKKyAgJy9hL2IvYycKKyAgPj4+IGltcG9ydCBvcworICA+Pj4gb3MuZnNwYXRoKHBhdGhsaWIuUGF0aCgic29tZV9maWxlLnR4dCIpKQorICAnc29tZV9maWxlLnR4dCcKKworKEltcGxlbWVudGVkIGJ5IEJyZXR0IENhbm5vbiwgRXRoYW4gRnVybWFuLCBEdXN0eSBQaGlsbGlwcywgYW5kIEplbGxlIFppamxzdHJhLikKKworLi4gc2VlYWxzbzo6CisKKyAgICA6cGVwOmA1MTlgIC0tIEFkZGluZyBhIGZpbGUgc3lzdGVtIHBhdGggcHJvdG9jb2wKKyAgICAgICBQRVAgd3JpdHRlbiBieSBCcmV0dCBDYW5ub24gYW5kIEtvb3MgWmV2ZW5ob3Zlbi4KKworCisuLiBfd2hhdHNuZXczNi1wZXA0OTU6CisKK1BFUCA0OTU6IExvY2FsIFRpbWUgRGlzYW1iaWd1YXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSW4gbW9zdCB3b3JsZCBsb2NhdGlvbnMsIHRoZXJlIGhhdmUgYmVlbiBhbmQgd2lsbCBiZSB0aW1lcyB3aGVuIGxvY2FsIGNsb2NrcworYXJlIG1vdmVkIGJhY2suICBJbiB0aG9zZSB0aW1lcywgaW50ZXJ2YWxzIGFyZSBpbnRyb2R1Y2VkIGluIHdoaWNoIGxvY2FsCitjbG9ja3Mgc2hvdyB0aGUgc2FtZSB0aW1lIHR3aWNlIGluIHRoZSBzYW1lIGRheS4gSW4gdGhlc2Ugc2l0dWF0aW9ucywgdGhlCitpbmZvcm1hdGlvbiBkaXNwbGF5ZWQgb24gYSBsb2NhbCBjbG9jayAob3Igc3RvcmVkIGluIGEgUHl0aG9uIGRhdGV0aW1lCitpbnN0YW5jZSkgaXMgaW5zdWZmaWNpZW50IHRvIGlkZW50aWZ5IGEgcGFydGljdWxhciBtb21lbnQgaW4gdGltZS4KKworOnBlcDpgNDk1YCBhZGRzIHRoZSBuZXcgKmZvbGQqIGF0dHJpYnV0ZSB0byBpbnN0YW5jZXMgb2YKKzpjbGFzczpgZGF0ZXRpbWUuZGF0ZXRpbWVgIGFuZCA6Y2xhc3M6YGRhdGV0aW1lLnRpbWVgIGNsYXNzZXMgdG8gZGlmZmVyZW50aWF0ZQorYmV0d2VlbiB0d28gbW9tZW50cyBpbiB0aW1lIGZvciB3aGljaCBsb2NhbCB0aW1lcyBhcmUgdGhlIHNhbWU6OgorCisgICAgPj4+IHUwID0gZGF0ZXRpbWUoMjAxNiwgMTEsIDYsIDQsIHR6aW5mbz10aW1lem9uZS51dGMpCisgICAgPj4+IGZvciBpIGluIHJhbmdlKDQpOgorICAgIC4uLiAgICAgdSA9IHUwICsgaSpIT1VSCisgICAgLi4uICAgICB0ID0gdS5hc3RpbWV6b25lKEVhc3Rlcm4pCisgICAgLi4uICAgICBwcmludCh1LnRpbWUoKSwgJ1VUQyA9JywgdC50aW1lKCksIHQudHpuYW1lKCksIHQuZm9sZCkKKyAgICAuLi4KKyAgICAwNDowMDowMCBVVEMgPSAwMDowMDowMCBFRFQgMAorICAgIDA1OjAwOjAwIFVUQyA9IDAxOjAwOjAwIEVEVCAwCisgICAgMDY6MDA6MDAgVVRDID0gMDE6MDA6MDAgRVNUIDEKKyAgICAwNzowMDowMCBVVEMgPSAwMjowMDowMCBFU1QgMAorCitUaGUgdmFsdWVzIG9mIHRoZSA6YXR0cjpgZm9sZCA8ZGF0ZXRpbWUuZGF0ZXRpbWUuZm9sZD5gIGF0dHJpYnV0ZSBoYXZlIHRoZQordmFsdWUgYGAwYGAgZm9yIGFsbCBpbnN0YW5jZXMgZXhjZXB0IHRob3NlIHRoYXQgcmVwcmVzZW50IHRoZSBzZWNvbmQKKyhjaHJvbm9sb2dpY2FsbHkpIG1vbWVudCBpbiB0aW1lIGluIGFuIGFtYmlndW91cyBjYXNlLgorCisuLiBzZWVhbHNvOjoKKworICA6cGVwOmA0OTVgIC0tIExvY2FsIFRpbWUgRGlzYW1iaWd1YXRpb24KKyAgICAgUEVQIHdyaXR0ZW4gYnkgQWxleGFuZGVyIEJlbG9wb2xza3kgYW5kIFRpbSBQZXRlcnMsIGltcGxlbWVudGF0aW9uCisgICAgIGJ5IEFsZXhhbmRlciBCZWxvcG9sc2t5LgorCisKKy4uIF93aGF0c25ldzM2LXBlcDUyOToKKworUEVQIDUyOTogQ2hhbmdlIFdpbmRvd3MgZmlsZXN5c3RlbSBlbmNvZGluZyB0byBVVEYtOAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitSZXByZXNlbnRpbmcgZmlsZXN5c3RlbSBwYXRocyBpcyBiZXN0IHBlcmZvcm1lZCB3aXRoIHN0ciAoVW5pY29kZSkgcmF0aGVyIHRoYW4KK2J5dGVzLiBIb3dldmVyLCB0aGVyZSBhcmUgc29tZSBzaXR1YXRpb25zIHdoZXJlIHVzaW5nIGJ5dGVzIGlzIHN1ZmZpY2llbnQgYW5kCitjb3JyZWN0LgorCitQcmlvciB0byBQeXRob24gMy42LCBkYXRhIGxvc3MgY291bGQgcmVzdWx0IHdoZW4gdXNpbmcgYnl0ZXMgcGF0aHMgb24gV2luZG93cy4KK1dpdGggdGhpcyBjaGFuZ2UsIHVzaW5nIGJ5dGVzIHRvIHJlcHJlc2VudCBwYXRocyBpcyBub3cgc3VwcG9ydGVkIG9uIFdpbmRvd3MsCitwcm92aWRlZCB0aG9zZSBieXRlcyBhcmUgZW5jb2RlZCB3aXRoIHRoZSBlbmNvZGluZyByZXR1cm5lZCBieQorOmZ1bmM6YHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKWAsIHdoaWNoIG5vdyBkZWZhdWx0cyB0byBgYCd1dGYtOCdgYC4KKworQXBwbGljYXRpb25zIHRoYXQgZG8gbm90IHVzZSBzdHIgdG8gcmVwcmVzZW50IHBhdGhzIHNob3VsZCB1c2UKKzpmdW5jOmBvcy5mc2VuY29kZSgpYCBhbmQgOmZ1bmM6YG9zLmZzZGVjb2RlKClgIHRvIGVuc3VyZSB0aGVpciBieXRlcyBhcmUKK2NvcnJlY3RseSBlbmNvZGVkLiBUbyByZXZlcnQgdG8gdGhlIHByZXZpb3VzIGJlaGF2aW91ciwgc2V0Cis6ZW52dmFyOmBQWVRIT05MRUdBQ1lXSU5ET1dTRlNFTkNPRElOR2Agb3IgY2FsbAorOmZ1bmM6YHN5cy5fZW5hYmxlbGVnYWN5d2luZG93c2ZzZW5jb2RpbmdgLgorCitTZWUgOnBlcDpgNTI5YCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhbmQgZGlzY3Vzc2lvbiBvZiBjb2RlIG1vZGlmaWNhdGlvbnMgdGhhdAorbWF5IGJlIHJlcXVpcmVkLgorCisKKy4uIF93aGF0c25ldzM2LXBlcDUyODoKKworUEVQIDUyODogQ2hhbmdlIFdpbmRvd3MgY29uc29sZSBlbmNvZGluZyB0byBVVEYtOAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZGVmYXVsdCBjb25zb2xlIG9uIFdpbmRvd3Mgd2lsbCBub3cgYWNjZXB0IGFsbCBVbmljb2RlIGNoYXJhY3RlcnMgYW5kCitwcm92aWRlIGNvcnJlY3RseSByZWFkIHN0ciBvYmplY3RzIHRvIFB5dGhvbiBjb2RlLiBgYHN5cy5zdGRpbmBgLAorYGBzeXMuc3Rkb3V0YGAgYW5kIGBgc3lzLnN0ZGVycmBgIG5vdyBkZWZhdWx0IHRvIHV0Zi04IGVuY29kaW5nLgorCitUaGlzIGNoYW5nZSBvbmx5IGFwcGxpZXMgd2hlbiB1c2luZyBhbiBpbnRlcmFjdGl2ZSBjb25zb2xlLCBhbmQgbm90IHdoZW4KK3JlZGlyZWN0aW5nIGZpbGVzIG9yIHBpcGVzLiBUbyByZXZlcnQgdG8gdGhlIHByZXZpb3VzIGJlaGF2aW91ciBmb3IgaW50ZXJhY3RpdmUKK2NvbnNvbGUgdXNlLCBzZXQgOmVudnZhcjpgUFlUSE9OTEVHQUNZV0lORE9XU0lPRU5DT0RJTkdgLgorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgNTI4YCAtLSBDaGFuZ2UgV2luZG93cyBjb25zb2xlIGVuY29kaW5nIHRvIFVURi04CisgICAgICBQRVAgd3JpdHRlbiBhbmQgaW1wbGVtZW50ZWQgYnkgU3RldmUgRG93ZXIuCisKKworLi4gX3doYXRzbmV3MzYtcGVwNTIwOgorCitQRVAgNTIwOiBQcmVzZXJ2aW5nIENsYXNzIEF0dHJpYnV0ZSBEZWZpbml0aW9uIE9yZGVyCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0F0dHJpYnV0ZXMgaW4gYSBjbGFzcyBkZWZpbml0aW9uIGJvZHkgaGF2ZSBhIG5hdHVyYWwgb3JkZXJpbmc6IHRoZSBzYW1lCitvcmRlciBpbiB3aGljaCB0aGUgbmFtZXMgYXBwZWFyIGluIHRoZSBzb3VyY2UuICBUaGlzIG9yZGVyIGlzIG5vdworcHJlc2VydmVkIGluIHRoZSBuZXcgY2xhc3MncyA6YXR0cjpgfm9iamVjdC5fX2RpY3RfX2AgYXR0cmlidXRlLgorCitBbHNvLCB0aGUgZWZmZWN0aXZlIGRlZmF1bHQgY2xhc3MgKmV4ZWN1dGlvbiogbmFtZXNwYWNlIChyZXR1cm5lZCBmcm9tCis6cmVmOmB0eXBlLl9fcHJlcGFyZV9fKCkgPHByZXBhcmU+YCkgaXMgbm93IGFuIGluc2VydGlvbi1vcmRlci1wcmVzZXJ2aW5nCittYXBwaW5nLgorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgNTIwYCAtLSBQcmVzZXJ2aW5nIENsYXNzIEF0dHJpYnV0ZSBEZWZpbml0aW9uIE9yZGVyCisgICAgICBQRVAgd3JpdHRlbiBhbmQgaW1wbGVtZW50ZWQgYnkgRXJpYyBTbm93LgorCisKKy4uIF93aGF0c25ldzM2LXBlcDQ2ODoKKworUEVQIDQ2ODogUHJlc2VydmluZyBLZXl3b3JkIEFyZ3VtZW50IE9yZGVyCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworYGAqKmt3YXJnc2BgIGluIGEgZnVuY3Rpb24gc2lnbmF0dXJlIGlzIG5vdyBndWFyYW50ZWVkIHRvIGJlIGFuCitpbnNlcnRpb24tb3JkZXItcHJlc2VydmluZyBtYXBwaW5nLgorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgNDY4YCAtLSBQcmVzZXJ2aW5nIEtleXdvcmQgQXJndW1lbnQgT3JkZXIKKyAgICAgIFBFUCB3cml0dGVuIGFuZCBpbXBsZW1lbnRlZCBieSBFcmljIFNub3cuCisKKworLi4gX3doYXRzbmV3MzYtY29tcGFjdGRpY3Q6CisKK05ldyA6cmVmOmBkaWN0IDx0eXBlc21hcHBpbmc+YCBpbXBsZW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSA6cmVmOmBkaWN0IDx0eXBlc21hcHBpbmc+YCB0eXBlIG5vdyB1c2VzIGEgImNvbXBhY3QiIHJlcHJlc2VudGF0aW9uCitgcGlvbmVlcmVkIGJ5IFB5UHkgPGh0dHBzOi8vbW9yZXB5cHkuYmxvZ3Nwb3QuY29tLzIwMTUvMDEvZmFzdGVyLW1vcmUtbWVtb3J5LWVmZmljaWVudC1hbmQtbW9yZS5odG1sPmBfLgorVGhlIG1lbW9yeSB1c2FnZSBvZiB0aGUgbmV3IDpmdW5jOmBkaWN0YCBpcyBiZXR3ZWVuIDIwJSBhbmQgMjUlIHNtYWxsZXIKK2NvbXBhcmVkIHRvIFB5dGhvbiAzLjUuCisKK1RoZSBvcmRlci1wcmVzZXJ2aW5nIGFzcGVjdCBvZiB0aGlzIG5ldyBpbXBsZW1lbnRhdGlvbiBpcyBjb25zaWRlcmVkIGFuCitpbXBsZW1lbnRhdGlvbiBkZXRhaWwgYW5kIHNob3VsZCBub3QgYmUgcmVsaWVkIHVwb24gKHRoaXMgbWF5IGNoYW5nZSBpbgordGhlIGZ1dHVyZSwgYnV0IGl0IGlzIGRlc2lyZWQgdG8gaGF2ZSB0aGlzIG5ldyBkaWN0IGltcGxlbWVudGF0aW9uIGluCit0aGUgbGFuZ3VhZ2UgZm9yIGEgZmV3IHJlbGVhc2VzIGJlZm9yZSBjaGFuZ2luZyB0aGUgbGFuZ3VhZ2Ugc3BlYyB0byBtYW5kYXRlCitvcmRlci1wcmVzZXJ2aW5nIHNlbWFudGljcyBmb3IgYWxsIGN1cnJlbnQgYW5kIGZ1dHVyZSBQeXRob24KK2ltcGxlbWVudGF0aW9uczsgdGhpcyBhbHNvIGhlbHBzIHByZXNlcnZlIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5Cit3aXRoIG9sZGVyIHZlcnNpb25zIG9mIHRoZSBsYW5ndWFnZSB3aGVyZSByYW5kb20gaXRlcmF0aW9uIG9yZGVyIGlzCitzdGlsbCBpbiBlZmZlY3QsIGUuZy4gUHl0aG9uIDMuNSkuCisKKyhDb250cmlidXRlZCBieSBJTkFEQSBOYW9raSBpbiA6aXNzdWU6YDI3MzUwYC4gSWRlYQorYG9yaWdpbmFsbHkgc3VnZ2VzdGVkIGJ5IFJheW1vbmQgSGV0dGluZ2VyCis8aHR0cHM6Ly9tYWlsLnB5dGhvbi5vcmcvcGlwZXJtYWlsL3B5dGhvbi1kZXYvMjAxMi1EZWNlbWJlci8xMjMwMjguaHRtbD5gXy4pCisKKworLi4gX3doYXRzbmV3MzYtcGVwNTIzOgorCitQRVAgNTIzOiBBZGRpbmcgYSBmcmFtZSBldmFsdWF0aW9uIEFQSSB0byBDUHl0aG9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1doaWxlIFB5dGhvbiBwcm92aWRlcyBleHRlbnNpdmUgc3VwcG9ydCB0byBjdXN0b21pemUgaG93IGNvZGUKK2V4ZWN1dGVzLCBvbmUgcGxhY2UgaXQgaGFzIG5vdCBkb25lIHNvIGlzIGluIHRoZSBldmFsdWF0aW9uIG9mIGZyYW1lCitvYmplY3RzLiAgSWYgeW91IHdhbnRlZCBzb21lIHdheSB0byBpbnRlcmNlcHQgZnJhbWUgZXZhbHVhdGlvbiBpbgorUHl0aG9uIHRoZXJlIHJlYWxseSB3YXNuJ3QgYW55IHdheSB3aXRob3V0IGRpcmVjdGx5IG1hbmlwdWxhdGluZworZnVuY3Rpb24gcG9pbnRlcnMgZm9yIGRlZmluZWQgZnVuY3Rpb25zLgorCis6cGVwOmA1MjNgIGNoYW5nZXMgdGhpcyBieSBwcm92aWRpbmcgYW4gQVBJIHRvIG1ha2UgZnJhbWUKK2V2YWx1YXRpb24gcGx1Z2dhYmxlIGF0IHRoZSBDIGxldmVsLiBUaGlzIHdpbGwgYWxsb3cgZm9yIHRvb2xzIHN1Y2gKK2FzIGRlYnVnZ2VycyBhbmQgSklUcyB0byBpbnRlcmNlcHQgZnJhbWUgZXZhbHVhdGlvbiBiZWZvcmUgdGhlCitleGVjdXRpb24gb2YgUHl0aG9uIGNvZGUgYmVnaW5zLiBUaGlzIGVuYWJsZXMgdGhlIHVzZSBvZiBhbHRlcm5hdGl2ZQorZXZhbHVhdGlvbiBpbXBsZW1lbnRhdGlvbnMgZm9yIFB5dGhvbiBjb2RlLCB0cmFja2luZyBmcmFtZQorZXZhbHVhdGlvbiwgZXRjLgorCitUaGlzIEFQSSBpcyBub3QgcGFydCBvZiB0aGUgbGltaXRlZCBDIEFQSSBhbmQgaXMgbWFya2VkIGFzIHByaXZhdGUgdG8KK3NpZ25hbCB0aGF0IHVzYWdlIG9mIHRoaXMgQVBJIGlzIGV4cGVjdGVkIHRvIGJlIGxpbWl0ZWQgYW5kIG9ubHkKK2FwcGxpY2FibGUgdG8gdmVyeSBzZWxlY3QsIGxvdy1sZXZlbCB1c2UtY2FzZXMuIFNlbWFudGljcyBvZiB0aGUKK0FQSSB3aWxsIGNoYW5nZSB3aXRoIFB5dGhvbiBhcyBuZWNlc3NhcnkuCisKKy4uIHNlZWFsc286OgorCisgIDpwZXA6YDUyM2AgLS0gQWRkaW5nIGEgZnJhbWUgZXZhbHVhdGlvbiBBUEkgdG8gQ1B5dGhvbgorICAgICBQRVAgd3JpdHRlbiBieSBCcmV0dCBDYW5ub24gYW5kIERpbm8gVmllaGxhbmQuCisKKworLi4gX3doYXRzbmV3MzYtcHl0aG9ubWFsbG9jOgorCitQWVRIT05NQUxMT0MgZW52aXJvbm1lbnQgdmFyaWFibGUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgbmV3IDplbnZ2YXI6YFBZVEhPTk1BTExPQ2AgZW52aXJvbm1lbnQgdmFyaWFibGUgYWxsb3dzIHNldHRpbmcgdGhlIFB5dGhvbgorbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGluc3RhbGxpbmcgZGVidWcgaG9va3MuCisKK0l0IGlzIG5vdyBwb3NzaWJsZSB0byBpbnN0YWxsIGRlYnVnIGhvb2tzIG9uIFB5dGhvbiBtZW1vcnkgYWxsb2NhdG9ycyBvbiBQeXRob24KK2NvbXBpbGVkIGluIHJlbGVhc2UgbW9kZSB1c2luZyBgYFBZVEhPTk1BTExPQz1kZWJ1Z2BgLiBFZmZlY3RzIG9mIGRlYnVnIGhvb2tzOgorCisqIE5ld2x5IGFsbG9jYXRlZCBtZW1vcnkgaXMgZmlsbGVkIHdpdGggdGhlIGJ5dGUgYGAweENCYGAKKyogRnJlZWQgbWVtb3J5IGlzIGZpbGxlZCB3aXRoIHRoZSBieXRlIGBgMHhEQmBgCisqIERldGVjdCB2aW9sYXRpb25zIG9mIHRoZSBQeXRob24gbWVtb3J5IGFsbG9jYXRvciBBUEkuIEZvciBleGFtcGxlLAorICA6YzpmdW5jOmBQeU9iamVjdF9GcmVlYCBjYWxsZWQgb24gYSBtZW1vcnkgYmxvY2sgYWxsb2NhdGVkIGJ5CisgIDpjOmZ1bmM6YFB5TWVtX01hbGxvY2AuCisqIERldGVjdCB3cml0ZXMgYmVmb3JlIHRoZSBzdGFydCBvZiBhIGJ1ZmZlciAoYnVmZmVyIHVuZGVyZmxvd3MpCisqIERldGVjdCB3cml0ZXMgYWZ0ZXIgdGhlIGVuZCBvZiBhIGJ1ZmZlciAoYnVmZmVyIG92ZXJmbG93cykKKyogQ2hlY2sgdGhhdCB0aGUgOnRlcm06YEdJTCA8Z2xvYmFsIGludGVycHJldGVyIGxvY2s+YCBpcyBoZWxkIHdoZW4gYWxsb2NhdG9yCisgIGZ1bmN0aW9ucyBvZiA6YzpkYXRhOmBQWU1FTV9ET01BSU5fT0JKYCAoZXg6IDpjOmZ1bmM6YFB5T2JqZWN0X01hbGxvY2ApIGFuZAorICA6YzpkYXRhOmBQWU1FTV9ET01BSU5fTUVNYCAoZXg6IDpjOmZ1bmM6YFB5TWVtX01hbGxvY2ApIGRvbWFpbnMgYXJlIGNhbGxlZC4KKworQ2hlY2tpbmcgaWYgdGhlIEdJTCBpcyBoZWxkIGlzIGFsc28gYSBuZXcgZmVhdHVyZSBvZiBQeXRob24gMy42LgorCitTZWUgdGhlIDpjOmZ1bmM6YFB5TWVtX1NldHVwRGVidWdIb29rc2AgZnVuY3Rpb24gZm9yIGRlYnVnIGhvb2tzIG9uIFB5dGhvbgorbWVtb3J5IGFsbG9jYXRvcnMuCisKK0l0IGlzIG5vdyBhbHNvIHBvc3NpYmxlIHRvIGZvcmNlIHRoZSB1c2FnZSBvZiB0aGUgOmM6ZnVuYzpgbWFsbG9jYCBhbGxvY2F0b3Igb2YKK3RoZSBDIGxpYnJhcnkgZm9yIGFsbCBQeXRob24gbWVtb3J5IGFsbG9jYXRpb25zIHVzaW5nIGBgUFlUSE9OTUFMTE9DPW1hbGxvY2BgLgorVGhpcyBpcyBoZWxwZnVsIHdoZW4gdXNpbmcgZXh0ZXJuYWwgbWVtb3J5IGRlYnVnZ2VycyBsaWtlIFZhbGdyaW5kIG9uCithIFB5dGhvbiBjb21waWxlZCBpbiByZWxlYXNlIG1vZGUuCisKK09uIGVycm9yLCB0aGUgZGVidWcgaG9va3Mgb24gUHl0aG9uIG1lbW9yeSBhbGxvY2F0b3JzIG5vdyB1c2UgdGhlCis6bW9kOmB0cmFjZW1hbGxvY2AgbW9kdWxlIHRvIGdldCB0aGUgdHJhY2ViYWNrIHdoZXJlIGEgbWVtb3J5IGJsb2NrIHdhcworYWxsb2NhdGVkLgorCitFeGFtcGxlIG9mIGZhdGFsIGVycm9yIG9uIGJ1ZmZlciBvdmVyZmxvdyB1c2luZworYGBweXRob24zLjYgLVggdHJhY2VtYWxsb2M9NWBgIChzdG9yZSA1IGZyYW1lcyBpbiB0cmFjZXMpOjoKKworICAgIERlYnVnIG1lbW9yeSBibG9jayBhdCBhZGRyZXNzIHA9MHg3ZmJjZDQxNjY2Zjg6IEFQSSAnbycKKyAgICAgICAgNCBieXRlcyBvcmlnaW5hbGx5IHJlcXVlc3RlZAorICAgICAgICBUaGUgNyBwYWQgYnl0ZXMgYXQgcC03IGFyZSBGT1JCSURERU5CWVRFLCBhcyBleHBlY3RlZC4KKyAgICAgICAgVGhlIDggcGFkIGJ5dGVzIGF0IHRhaWw9MHg3ZmJjZDQxNjY2ZmMgYXJlIG5vdCBhbGwgRk9SQklEREVOQllURSAoMHhmYik6CisgICAgICAgICAgICBhdCB0YWlsKzA6IDB4MDIgKioqIE9VQ0gKKyAgICAgICAgICAgIGF0IHRhaWwrMTogMHhmYgorICAgICAgICAgICAgYXQgdGFpbCsyOiAweGZiCisgICAgICAgICAgICBhdCB0YWlsKzM6IDB4ZmIKKyAgICAgICAgICAgIGF0IHRhaWwrNDogMHhmYgorICAgICAgICAgICAgYXQgdGFpbCs1OiAweGZiCisgICAgICAgICAgICBhdCB0YWlsKzY6IDB4ZmIKKyAgICAgICAgICAgIGF0IHRhaWwrNzogMHhmYgorICAgICAgICBUaGUgYmxvY2sgd2FzIG1hZGUgYnkgY2FsbCAjMTIzMzMyOSB0byBkZWJ1ZyBtYWxsb2MvcmVhbGxvYy4KKyAgICAgICAgRGF0YSBhdCBwOiAxYSAyYiAzMCAwMAorCisgICAgTWVtb3J5IGJsb2NrIGFsbG9jYXRlZCBhdCAobW9zdCByZWNlbnQgY2FsbCBmaXJzdCk6CisgICAgICBGaWxlICJ0ZXN0L3Rlc3RfYnl0ZXMucHkiLCBsaW5lIDMyMworICAgICAgRmlsZSAidW5pdHRlc3QvY2FzZS5weSIsIGxpbmUgNjAwCisgICAgICBGaWxlICJ1bml0dGVzdC9jYXNlLnB5IiwgbGluZSA2NDgKKyAgICAgIEZpbGUgInVuaXR0ZXN0L3N1aXRlLnB5IiwgbGluZSAxMjIKKyAgICAgIEZpbGUgInVuaXR0ZXN0L3N1aXRlLnB5IiwgbGluZSA4NAorCisgICAgRmF0YWwgUHl0aG9uIGVycm9yOiBiYWQgdHJhaWxpbmcgcGFkIGJ5dGUKKworICAgIEN1cnJlbnQgdGhyZWFkIDB4MDAwMDdmYmNkYmQzMjcwMCAobW9zdCByZWNlbnQgY2FsbCBmaXJzdCk6CisgICAgICBGaWxlICJ0ZXN0L3Rlc3RfYnl0ZXMucHkiLCBsaW5lIDMyMyBpbiB0ZXN0X2hleAorICAgICAgRmlsZSAidW5pdHRlc3QvY2FzZS5weSIsIGxpbmUgNjAwIGluIHJ1bgorICAgICAgRmlsZSAidW5pdHRlc3QvY2FzZS5weSIsIGxpbmUgNjQ4IGluIF9fY2FsbF9fCisgICAgICBGaWxlICJ1bml0dGVzdC9zdWl0ZS5weSIsIGxpbmUgMTIyIGluIHJ1bgorICAgICAgRmlsZSAidW5pdHRlc3Qvc3VpdGUucHkiLCBsaW5lIDg0IGluIF9fY2FsbF9fCisgICAgICBGaWxlICJ1bml0dGVzdC9zdWl0ZS5weSIsIGxpbmUgMTIyIGluIHJ1bgorICAgICAgRmlsZSAidW5pdHRlc3Qvc3VpdGUucHkiLCBsaW5lIDg0IGluIF9fY2FsbF9fCisgICAgICAuLi4KKworKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgMjY1MTZgIGFuZCA6aXNzdWU6YDI2NTY0YC4pCisKKworLi4gX3doYXRzbmV3MzYtdHJhY2luZzoKKworRFRyYWNlIGFuZCBTeXN0ZW1UYXAgcHJvYmluZyBzdXBwb3J0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUHl0aG9uIGNhbiBub3cgYmUgYnVpbHQgYGAtLXdpdGgtZHRyYWNlYGAgd2hpY2ggZW5hYmxlcyBzdGF0aWMgbWFya2VycworZm9yIHRoZSBmb2xsb3dpbmcgZXZlbnRzIGluIHRoZSBpbnRlcnByZXRlcjoKKworKiBmdW5jdGlvbiBjYWxsL3JldHVybgorCisqIGdhcmJhZ2UgY29sbGVjdGlvbiBzdGFydGVkL2ZpbmlzaGVkCisKKyogbGluZSBvZiBjb2RlIGV4ZWN1dGVkLgorCitUaGlzIGNhbiBiZSB1c2VkIHRvIGluc3RydW1lbnQgcnVubmluZyBpbnRlcnByZXRlcnMgaW4gcHJvZHVjdGlvbiwKK3dpdGhvdXQgdGhlIG5lZWQgdG8gcmVjb21waWxlIHNwZWNpZmljIGRlYnVnIGJ1aWxkcyBvciBwcm92aWRpbmcKK2FwcGxpY2F0aW9uLXNwZWNpZmljIHByb2ZpbGluZy9kZWJ1Z2dpbmcgY29kZS4KKworTW9yZSBkZXRhaWxzIGluIDpyZWY6YGluc3RydW1lbnRhdGlvbmAuCisKK1RoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIGlzIHRlc3RlZCBvbiBMaW51eCBhbmQgbWFjT1MuICBBZGRpdGlvbmFsCittYXJrZXJzIG1heSBiZSBhZGRlZCBpbiB0aGUgZnV0dXJlLgorCisoQ29udHJpYnV0ZWQgYnkgxYF1a2FzeiBMYW5nYSBpbiA6aXNzdWU6YDIxNTkwYCwgYmFzZWQgb24gcGF0Y2hlcyBieQorSmVzw7pzIENlYSBBdmnDs24sIERhdmlkIE1hbGNvbG0sIGFuZCBOaWtoaWwgQmVuZXNjaC4pCisKKworT3RoZXIgTGFuZ3VhZ2UgQ2hhbmdlcworPT09PT09PT09PT09PT09PT09PT09PQorCitTb21lIHNtYWxsZXIgY2hhbmdlcyBtYWRlIHRvIHRoZSBjb3JlIFB5dGhvbiBsYW5ndWFnZSBhcmU6CisKKyogQSBgYGdsb2JhbGBgIG9yIGBgbm9ubG9jYWxgYCBzdGF0ZW1lbnQgbXVzdCBub3cgdGV4dHVhbGx5IGFwcGVhcgorICBiZWZvcmUgdGhlIGZpcnN0IHVzZSBvZiB0aGUgYWZmZWN0ZWQgbmFtZSBpbiB0aGUgc2FtZSBzY29wZS4KKyAgUHJldmlvdXNseSB0aGlzIHdhcyBhIGBgU3ludGF4V2FybmluZ2BgLgorCisqIEl0IGlzIG5vdyBwb3NzaWJsZSB0byBzZXQgYSA6cmVmOmBzcGVjaWFsIG1ldGhvZCA8c3BlY2lhbG5hbWVzPmAgdG8KKyAgYGBOb25lYGAgdG8gaW5kaWNhdGUgdGhhdCB0aGUgY29ycmVzcG9uZGluZyBvcGVyYXRpb24gaXMgbm90IGF2YWlsYWJsZS4KKyAgRm9yIGV4YW1wbGUsIGlmIGEgY2xhc3Mgc2V0cyA6bWV0aDpgX19pdGVyX19gIHRvIGBgTm9uZWBgLCB0aGUgY2xhc3MKKyAgaXMgbm90IGl0ZXJhYmxlLgorICAoQ29udHJpYnV0ZWQgYnkgQW5kcmV3IEJhcm5lcnQgYW5kIEl2YW4gTGV2a2l2c2t5aSBpbiA6aXNzdWU6YDI1OTU4YC4pCisKKyogTG9uZyBzZXF1ZW5jZXMgb2YgcmVwZWF0ZWQgdHJhY2ViYWNrIGxpbmVzIGFyZSBub3cgYWJicmV2aWF0ZWQgYXMKKyAgYGAiW1ByZXZpb3VzIGxpbmUgcmVwZWF0ZWQge2NvdW50fSBtb3JlIHRpbWVzXSJgYCAoc2VlCisgIDpyZWY6YHdoYXRzbmV3MzYtdHJhY2ViYWNrYCBmb3IgYW4gZXhhbXBsZSkuCisgIChDb250cmlidXRlZCBieSBFbWFudWVsIEJhcnJ5IGluIDppc3N1ZTpgMjY4MjNgLikKKworKiBJbXBvcnQgbm93IHJhaXNlcyB0aGUgbmV3IGV4Y2VwdGlvbiA6ZXhjOmBNb2R1bGVOb3RGb3VuZEVycm9yYAorICAoc3ViY2xhc3Mgb2YgOmV4YzpgSW1wb3J0RXJyb3JgKSB3aGVuIGl0IGNhbm5vdCBmaW5kIGEgbW9kdWxlLiAgQ29kZQorICB0aGF0IGN1cnJlbnRseSBjaGVja3MgZm9yIEltcG9ydEVycm9yIChpbiB0cnktZXhjZXB0KSB3aWxsIHN0aWxsIHdvcmsuCisgIChDb250cmlidXRlZCBieSBFcmljIFNub3cgaW4gOmlzc3VlOmAxNTc2N2AuKQorCisqIENsYXNzIG1ldGhvZHMgcmVseWluZyBvbiB6ZXJvLWFyZ3VtZW50IGBgc3VwZXIoKWBgIHdpbGwgbm93IHdvcmsgY29ycmVjdGx5CisgIHdoZW4gY2FsbGVkIGZyb20gbWV0YWNsYXNzIG1ldGhvZHMgZHVyaW5nIGNsYXNzIGNyZWF0aW9uLgorICAoQ29udHJpYnV0ZWQgYnkgTWFydGluIFRlaWNobWFubiBpbiA6aXNzdWU6YDIzNzIyYC4pCisKKworTmV3IE1vZHVsZXMKKz09PT09PT09PT09CisKKy4uIF93aGF0c25ldzM2LXBlcDUwNjoKKworc2VjcmV0cworLS0tLS0tLQorCitUaGUgbWFpbiBwdXJwb3NlIG9mIHRoZSBuZXcgOm1vZDpgc2VjcmV0c2AgbW9kdWxlIGlzIHRvIHByb3ZpZGUgYW4gb2J2aW91cyB3YXkKK3RvIHJlbGlhYmx5IGdlbmVyYXRlIGNyeXB0b2dyYXBoaWNhbGx5IHN0cm9uZyBwc2V1ZG8tcmFuZG9tIHZhbHVlcyBzdWl0YWJsZQorZm9yIG1hbmFnaW5nIHNlY3JldHMsIHN1Y2ggYXMgYWNjb3VudCBhdXRoZW50aWNhdGlvbiwgdG9rZW5zLCBhbmQgc2ltaWxhci4KKworLi4gd2FybmluZzo6CisKKyAgTm90ZSB0aGF0IHRoZSBwc2V1ZG8tcmFuZG9tIGdlbmVyYXRvcnMgaW4gdGhlIDptb2Q6YHJhbmRvbWAgbW9kdWxlCisgIHNob3VsZCAqTk9UKiBiZSB1c2VkIGZvciBzZWN1cml0eSBwdXJwb3Nlcy4gIFVzZSA6bW9kOmBzZWNyZXRzYAorICBvbiBQeXRob24gMy42KyBhbmQgOmZ1bmM6YG9zLnVyYW5kb20oKWAgb24gUHl0aG9uIDMuNSBhbmQgZWFybGllci4KKworLi4gc2VlYWxzbzo6CisKKyAgICA6cGVwOmA1MDZgIC0tIEFkZGluZyBBIFNlY3JldHMgTW9kdWxlIFRvIFRoZSBTdGFuZGFyZCBMaWJyYXJ5CisgICAgICBQRVAgd3JpdHRlbiBhbmQgaW1wbGVtZW50ZWQgYnkgU3RldmVuIEQnQXByYW5vLgorCisKK0ltcHJvdmVkIE1vZHVsZXMKKz09PT09PT09PT09PT09PT0KKworYXJyYXkKKy0tLS0tCisKK0V4aGF1c3RlZCBpdGVyYXRvcnMgb2YgOmNsYXNzOmBhcnJheS5hcnJheWAgd2lsbCBub3cgc3RheSBleGhhdXN0ZWQgZXZlbgoraWYgdGhlIGl0ZXJhdGVkIGFycmF5IGlzIGV4dGVuZGVkLiAgVGhpcyBpcyBjb25zaXN0ZW50IHdpdGggdGhlIGJlaGF2aW9yCitvZiBvdGhlciBtdXRhYmxlIHNlcXVlbmNlcy4KKworQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDI2NDkyYC4KKworYXN0CistLS0KKworVGhlIG5ldyA6Y2xhc3M6YGFzdC5Db25zdGFudGAgQVNUIG5vZGUgaGFzIGJlZW4gYWRkZWQuICBJdCBjYW4gYmUgdXNlZAorYnkgZXh0ZXJuYWwgQVNUIG9wdGltaXplcnMgZm9yIHRoZSBwdXJwb3NlcyBvZiBjb25zdGFudCBmb2xkaW5nLgorCitDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lciBpbiA6aXNzdWU6YDI2MTQ2YC4KKworCithc3luY2lvCistLS0tLS0tCisKK1N0YXJ0aW5nIHdpdGggUHl0aG9uIDMuNiB0aGUgYGBhc3luY2lvYGAgbW9kdWxlIGlzIG5vIGxvbmdlciBwcm92aXNpb25hbCBhbmQgaXRzCitBUEkgaXMgY29uc2lkZXJlZCBzdGFibGUuCisKK05vdGFibGUgY2hhbmdlcyBpbiB0aGUgOm1vZDpgYXN5bmNpb2AgbW9kdWxlIHNpbmNlIFB5dGhvbiAzLjUuMAorKGFsbCBiYWNrcG9ydGVkIHRvIDMuNS54IGR1ZSB0byB0aGUgcHJvdmlzaW9uYWwgc3RhdHVzKToKKworKiBUaGUgOmZ1bmM6YH5hc3luY2lvLmdldF9ldmVudF9sb29wYCBmdW5jdGlvbiBoYXMgYmVlbiBjaGFuZ2VkIHRvCisgIGFsd2F5cyByZXR1cm4gdGhlIGN1cnJlbnRseSBydW5uaW5nIGxvb3Agd2hlbiBjYWxsZWQgZnJvbSBjb3Vyb3V0aW5lcworICBhbmQgY2FsbGJhY2tzLgorICAoQ29udHJpYnV0ZWQgYnkgWXVyeSBTZWxpdmFub3YgaW4gOmlzc3VlOmAyODYxM2AuKQorCisqIFRoZSA6ZnVuYzpgfmFzeW5jaW8uZW5zdXJlX2Z1dHVyZWAgZnVuY3Rpb24gYW5kIGFsbCBmdW5jdGlvbnMgdGhhdAorICB1c2UgaXQsIHN1Y2ggYXMgOm1ldGg6YGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKCkgPGFzeW5jaW8uQmFzZUV2ZW50TG9vcC5ydW5fdW50aWxfY29tcGxldGU+YCwKKyAgbm93IGFjY2VwdCBhbGwga2luZHMgb2YgOnRlcm06YGF3YWl0YWJsZSBvYmplY3RzIDxhd2FpdGFibGU+YC4KKyAgKENvbnRyaWJ1dGVkIGJ5IFl1cnkgU2VsaXZhbm92LikKKworKiBOZXcgOmZ1bmM6YH5hc3luY2lvLnJ1bl9jb3JvdXRpbmVfdGhyZWFkc2FmZWAgZnVuY3Rpb24gdG8gc3VibWl0CisgIGNvcm91dGluZXMgdG8gZXZlbnQgbG9vcHMgZnJvbSBvdGhlciB0aHJlYWRzLgorICAoQ29udHJpYnV0ZWQgYnkgVmluY2VudCBNaWNoZWwuKQorCisqIE5ldyA6bWV0aDpgVHJhbnNwb3J0LmlzX2Nsb3NpbmcoKSA8YXN5bmNpby5CYXNlVHJhbnNwb3J0LmlzX2Nsb3Npbmc+YAorICBtZXRob2QgdG8gY2hlY2sgaWYgdGhlIHRyYW5zcG9ydCBpcyBjbG9zaW5nIG9yIGNsb3NlZC4KKyAgKENvbnRyaWJ1dGVkIGJ5IFl1cnkgU2VsaXZhbm92LikKKworKiBUaGUgOm1ldGg6YGxvb3AuY3JlYXRlX3NlcnZlcigpIDxhc3luY2lvLkJhc2VFdmVudExvb3AuY3JlYXRlX3NlcnZlcj5gCisgIG1ldGhvZCBjYW4gbm93IGFjY2VwdCBhIGxpc3Qgb2YgaG9zdHMuCisgIChDb250cmlidXRlZCBieSBZYW5uIFNpb25uZWF1LikKKworKiBOZXcgOm1ldGg6YGxvb3AuY3JlYXRlX2Z1dHVyZSgpIDxhc3luY2lvLkJhc2VFdmVudExvb3AuY3JlYXRlX2Z1dHVyZT5gCisgIG1ldGhvZCB0byBjcmVhdGUgRnV0dXJlIG9iamVjdHMuICBUaGlzIGFsbG93cyBhbHRlcm5hdGl2ZSBldmVudAorICBsb29wIGltcGxlbWVudGF0aW9ucywgc3VjaCBhcworICBgdXZsb29wIDxodHRwczovL2dpdGh1Yi5jb20vTWFnaWNTdGFjay91dmxvb3A+YF8sIHRvIHByb3ZpZGUgYSBmYXN0ZXIKKyAgOmNsYXNzOmBhc3luY2lvLkZ1dHVyZWAgaW1wbGVtZW50YXRpb24uCisgIChDb250cmlidXRlZCBieSBZdXJ5IFNlbGl2YW5vdiBpbiA6aXNzdWU6YDI3MDQxYC4pCisKKyogTmV3IDptZXRoOmBsb29wLmdldF9leGNlcHRpb25faGFuZGxlcigpIDxhc3luY2lvLkJhc2VFdmVudExvb3AuZ2V0X2V4Y2VwdGlvbl9oYW5kbGVyPmAKKyAgbWV0aG9kIHRvIGdldCB0aGUgY3VycmVudCBleGNlcHRpb24gaGFuZGxlci4KKyAgKENvbnRyaWJ1dGVkIGJ5IFl1cnkgU2VsaXZhbm92IGluIDppc3N1ZTpgMjcwNDBgLikKKworKiBOZXcgOm1ldGg6YFN0cmVhbVJlYWRlci5yZWFkdW50aWwoKSA8YXN5bmNpby5TdHJlYW1SZWFkZXIucmVhZHVudGlsPmAKKyAgbWV0aG9kIHRvIHJlYWQgZGF0YSBmcm9tIHRoZSBzdHJlYW0gdW50aWwgYSBzZXBhcmF0b3IgYnl0ZXMKKyAgc2VxdWVuY2UgYXBwZWFycy4KKyAgKENvbnRyaWJ1dGVkIGJ5IE1hcmsgS29yZW5iZXJnLikKKworKiBUaGUgcGVyZm9ybWFuY2Ugb2YgOm1ldGg6YFN0cmVhbVJlYWRlci5yZWFkZXhhY3RseSgpIDxhc3luY2lvLlN0cmVhbVJlYWRlci5yZWFkZXhhY3RseT5gCisgIGhhcyBiZWVuIGltcHJvdmVkLgorICAoQ29udHJpYnV0ZWQgYnkgTWFyayBLb3JlbmJlcmcgaW4gOmlzc3VlOmAyODM3MGAuKQorCisqIFRoZSA6bWV0aDpgbG9vcC5nZXRhZGRyaW5mbygpIDxhc3luY2lvLkJhc2VFdmVudExvb3AuZ2V0YWRkcmluZm8+YAorICBtZXRob2QgaXMgb3B0aW1pemVkIHRvIGF2b2lkIGNhbGxpbmcgdGhlIHN5c3RlbSBgYGdldGFkZHJpbmZvYGAKKyAgZnVuY3Rpb24gaWYgdGhlIGFkZHJlc3MgaXMgYWxyZWFkeSByZXNvbHZlZC4KKyAgKENvbnRyaWJ1dGVkIGJ5IEEuIEplc3NlIEppcnl1IERhdmlzLikKKworKiBUaGUgOm1ldGg6YGxvb3Auc3RvcCgpIDxhc3luY2lvLkJhc2VFdmVudExvb3Auc3RvcD5gCisgIG1ldGhvZCBoYXMgYmVlbiBjaGFuZ2VkIHRvIHN0b3AgdGhlIGxvb3AgaW1tZWRpYXRlbHkgYWZ0ZXIKKyAgdGhlIGN1cnJlbnQgaXRlcmF0aW9uLiAgQW55IG5ldyBjYWxsYmFja3Mgc2NoZWR1bGVkIGFzIGEgcmVzdWx0CisgIG9mIHRoZSBsYXN0IGl0ZXJhdGlvbiB3aWxsIGJlIGRpc2NhcmRlZC4KKyAgKENvbnRyaWJ1dGVkIGJ5IEd1aWRvIHZhbiBSb3NzdW0gaW4gOmlzc3VlOmAyNTU5M2AuKQorCisqIDptZXRoOmBGdXR1cmUuc2V0X2V4Y2VwdGlvbiA8YXN5bmNpby5mdXR1cmVzLkZ1dHVyZS5zZXRfZXhjZXB0aW9uPmAKKyAgd2lsbCBub3cgcmFpc2UgOmV4YzpgVHlwZUVycm9yYCB3aGVuIHBhc3NlZCBhbiBpbnN0YW5jZSBvZgorICB0aGUgOmV4YzpgU3RvcEl0ZXJhdGlvbmAgZXhjZXB0aW9uLgorICAoQ29udHJpYnV0ZWQgYnkgQ2hyaXMgQW5nZWxpY28gaW4gOmlzc3VlOmAyNjIyMWAuKQorCisqIE5ldyA6bWV0aDpgbG9vcC5jb25uZWN0X2FjY2VwdGVkX3NvY2tldCgpIDxhc3luY2lvLkJhc2VFdmVudExvb3AuY29ubmVjdF9hY2NlcHRlZF9zb2NrZXQ+YAorICBtZXRob2QgdG8gYmUgdXNlZCBieSBzZXJ2ZXJzIHRoYXQgYWNjZXB0IGNvbm5lY3Rpb25zIG91dHNpZGUgb2YgYXN5bmNpbywKKyAgYnV0IHRoYXQgdXNlIGFzeW5jaW8gdG8gaGFuZGxlIHRoZW0uCisgIChDb250cmlidXRlZCBieSBKaW0gRnVsdG9uIGluIDppc3N1ZTpgMjczOTJgLikKKworKiBgYFRDUF9OT0RFTEFZYGAgZmxhZyBpcyBub3cgc2V0IGZvciBhbGwgVENQIHRyYW5zcG9ydHMgYnkgZGVmYXVsdC4KKyAgKENvbnRyaWJ1dGVkIGJ5IFl1cnkgU2VsaXZhbm92IGluIDppc3N1ZTpgMjc0NTZgLikKKworKiBOZXcgOm1ldGg6YGxvb3Auc2h1dGRvd25fYXN5bmNnZW5zKCkgPGFzeW5jaW8uQWJzdHJhY3RFdmVudExvb3Auc2h1dGRvd25fYXN5bmNnZW5zPmAKKyAgdG8gcHJvcGVybHkgY2xvc2UgcGVuZGluZyBhc3luY2hyb25vdXMgZ2VuZXJhdG9ycyBiZWZvcmUgY2xvc2luZyB0aGUKKyAgbG9vcC4KKyAgKENvbnRyaWJ1dGVkIGJ5IFl1cnkgU2VsaXZhbm92IGluIDppc3N1ZTpgMjgwMDNgLikKKworKiA6Y2xhc3M6YEZ1dHVyZSA8YXN5bmNpby5GdXR1cmU+YCBhbmQgOmNsYXNzOmBUYXNrIDxhc3luY2lvLlRhc2s+YAorICBjbGFzc2VzIG5vdyBoYXZlIGFuIG9wdGltaXplZCBDIGltcGxlbWVudGF0aW9uIHdoaWNoIG1ha2VzIGFzeW5jaW8KKyAgY29kZSB1cCB0byAzMCUgZmFzdGVyLgorICAoQ29udHJpYnV0ZWQgYnkgWXVyeSBTZWxpdmFub3YgYW5kIElOQURBIE5hb2tpIGluIDppc3N1ZTpgMjYwODFgCisgIGFuZCA6aXNzdWU6YDI4NTQ0YC4pCisKKworYmluYXNjaWkKKy0tLS0tLS0tCisKK1RoZSA6ZnVuYzpgfmJpbmFzY2lpLmIyYV9iYXNlNjRgIGZ1bmN0aW9uIG5vdyBhY2NlcHRzIGFuIG9wdGlvbmFsICpuZXdsaW5lKgora2V5d29yZCBhcmd1bWVudCB0byBjb250cm9sIHdoZXRoZXIgdGhlIG5ld2xpbmUgY2hhcmFjdGVyIGlzIGFwcGVuZGVkIHRvIHRoZQorcmV0dXJuIHZhbHVlLgorKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgMjUzNTdgLikKKworCitjbWF0aAorLS0tLS0KKworVGhlIG5ldyA6Y29uc3Q6YGNtYXRoLnRhdWAgKM+EKSBjb25zdGFudCBoYXMgYmVlbiBhZGRlZC4KKyhDb250cmlidXRlZCBieSBMaXNhIFJvYWNoIGluIDppc3N1ZTpgMTIzNDVgLCBzZWUgOnBlcDpgNjI4YCBmb3IgZGV0YWlscy4pCisKK05ldyBjb25zdGFudHM6IDpjb25zdDpgY21hdGguaW5mYCBhbmQgOmNvbnN0OmBjbWF0aC5uYW5gIHRvCittYXRjaCA6Y29uc3Q6YG1hdGguaW5mYCBhbmQgOmNvbnN0OmBtYXRoLm5hbmAsIGFuZCBhbHNvIDpjb25zdDpgY21hdGguaW5mamAKK2FuZCA6Y29uc3Q6YGNtYXRoLm5hbmpgIHRvIG1hdGNoIHRoZSBmb3JtYXQgdXNlZCBieSBjb21wbGV4IHJlcHIuCisoQ29udHJpYnV0ZWQgYnkgTWFyayBEaWNraW5zb24gaW4gOmlzc3VlOmAyMzIyOWAuKQorCisKK2NvbGxlY3Rpb25zCistLS0tLS0tLS0tLQorCitUaGUgbmV3IDpjbGFzczpgfmNvbGxlY3Rpb25zLmFiYy5Db2xsZWN0aW9uYCBhYnN0cmFjdCBiYXNlIGNsYXNzIGhhcyBiZWVuCithZGRlZCB0byByZXByZXNlbnQgc2l6ZWQgaXRlcmFibGUgY29udGFpbmVyIGNsYXNzZXMuCisoQ29udHJpYnV0ZWQgYnkgSXZhbiBMZXZraXZza3lpLCBkb2NzIGJ5IE5laWwgR2lyZGhhciBpbiA6aXNzdWU6YDI3NTk4YC4pCisKK1RoZSBuZXcgOmNsYXNzOmB+Y29sbGVjdGlvbnMuYWJjLlJldmVyc2libGVgIGFic3RyYWN0IGJhc2UgY2xhc3MgcmVwcmVzZW50cworaXRlcmFibGUgY2xhc3NlcyB0aGF0IGFsc28gcHJvdmlkZSB0aGUgOm1ldGg6YF9fcmV2ZXJzZWRfX2AgbWV0aG9kLgorKENvbnRyaWJ1dGVkIGJ5IEl2YW4gTGV2a2l2c2t5aSBpbiA6aXNzdWU6YDI1OTg3YC4pCisKK1RoZSBuZXcgOmNsYXNzOmB+Y29sbGVjdGlvbnMuYWJjLkFzeW5jR2VuZXJhdG9yYCBhYnN0cmFjdCBiYXNlIGNsYXNzIHJlcHJlc2VudHMKK2FzeW5jaHJvbm91cyBnZW5lcmF0b3JzLgorKENvbnRyaWJ1dGVkIGJ5IFl1cnkgU2VsaXZhbm92IGluIDppc3N1ZTpgMjg3MjBgLikKKworVGhlIDpmdW5jOmB+Y29sbGVjdGlvbnMubmFtZWR0dXBsZWAgZnVuY3Rpb24gbm93IGFjY2VwdHMgYW4gb3B0aW9uYWwKK2tleXdvcmQgYXJndW1lbnQgKm1vZHVsZSosIHdoaWNoLCB3aGVuIHNwZWNpZmllZCwgaXMgdXNlZCBmb3IKK3RoZSBgYF9fbW9kdWxlX19gYCBhdHRyaWJ1dGUgb2YgdGhlIHJldHVybmVkIG5hbWVkIHR1cGxlIGNsYXNzLgorKENvbnRyaWJ1dGVkIGJ5IFJheW1vbmQgSGV0dGluZ2VyIGluIDppc3N1ZTpgMTc5NDFgLikKKworVGhlICp2ZXJib3NlKiBhbmQgKnJlbmFtZSogYXJndW1lbnRzIGZvcgorOmZ1bmM6YH5jb2xsZWN0aW9ucy5uYW1lZHR1cGxlYCBhcmUgbm93IGtleXdvcmQtb25seS4KKyhDb250cmlidXRlZCBieSBSYXltb25kIEhldHRpbmdlciBpbiA6aXNzdWU6YDI1NjI4YC4pCisKK1JlY3Vyc2l2ZSA6Y2xhc3M6YGNvbGxlY3Rpb25zLmRlcXVlYCBpbnN0YW5jZXMgY2FuIG5vdyBiZSBwaWNrbGVkLgorKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyNjQ4MmAuKQorCisKK2NvbmN1cnJlbnQuZnV0dXJlcworLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSA6Y2xhc3M6YFRocmVhZFBvb2xFeGVjdXRvciA8Y29uY3VycmVudC5mdXR1cmVzLlRocmVhZFBvb2xFeGVjdXRvcj5gCitjbGFzcyBjb25zdHJ1Y3RvciBub3cgYWNjZXB0cyBhbiBvcHRpb25hbCAqdGhyZWFkX25hbWVfcHJlZml4KiBhcmd1bWVudAordG8gbWFrZSBpdCBwb3NzaWJsZSB0byBjdXN0b21pemUgdGhlIG5hbWVzIG9mIHRoZSB0aHJlYWRzIGNyZWF0ZWQgYnkgdGhlCitwb29sLgorKENvbnRyaWJ1dGVkIGJ5IEdyZWdvcnkgUC4gU21pdGggaW4gOmlzc3VlOmAyNzY2NGAuKQorCisKK2NvbnRleHRsaWIKKy0tLS0tLS0tLS0KKworVGhlIDpjbGFzczpgY29udGV4dGxpYi5BYnN0cmFjdENvbnRleHRNYW5hZ2VyYCBjbGFzcyBoYXMgYmVlbiBhZGRlZCB0bworcHJvdmlkZSBhbiBhYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBjb250ZXh0IG1hbmFnZXJzLiAgSXQgcHJvdmlkZXMgYQorc2Vuc2libGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBmb3IgYF9fZW50ZXJfXygpYCB3aGljaCByZXR1cm5zCitgYHNlbGZgYCBhbmQgbGVhdmVzIGBfX2V4aXRfXygpYCBhbiBhYnN0cmFjdCBtZXRob2QuICBBIG1hdGNoaW5nCitjbGFzcyBoYXMgYmVlbiBhZGRlZCB0byB0aGUgOm1vZDpgdHlwaW5nYCBtb2R1bGUgYXMKKzpjbGFzczpgdHlwaW5nLkNvbnRleHRNYW5hZ2VyYC4KKyhDb250cmlidXRlZCBieSBCcmV0dCBDYW5ub24gaW4gOmlzc3VlOmAyNTYwOWAuKQorCisKK2RhdGV0aW1lCistLS0tLS0tLQorCitUaGUgOmNsYXNzOmB+ZGF0ZXRpbWUuZGF0ZXRpbWVgIGFuZCA6Y2xhc3M6YH5kYXRldGltZS50aW1lYCBjbGFzc2VzIGhhdmUKK3RoZSBuZXcgOmF0dHI6YH50aW1lLmZvbGRgIGF0dHJpYnV0ZSB1c2VkIHRvIGRpc2FtYmlndWF0ZSBsb2NhbCB0aW1lCit3aGVuIG5lY2Vzc2FyeS4gIE1hbnkgZnVuY3Rpb25zIGluIHRoZSA6bW9kOmBkYXRldGltZWAgaGF2ZSBiZWVuCit1cGRhdGVkIHRvIHN1cHBvcnQgbG9jYWwgdGltZSBkaXNhbWJpZ3VhdGlvbi4KK1NlZSA6cmVmOmBMb2NhbCBUaW1lIERpc2FtYmlndWF0aW9uIDx3aGF0c25ldzM2LXBlcDQ5NT5gIHNlY3Rpb24gZm9yIG1vcmUKK2luZm9ybWF0aW9uLgorKENvbnRyaWJ1dGVkIGJ5IEFsZXhhbmRlciBCZWxvcG9sc2t5IGluIDppc3N1ZTpgMjQ3NzNgLikKKworVGhlIDptZXRoOmBkYXRldGltZS5zdHJmdGltZSgpIDxkYXRldGltZS5kYXRldGltZS5zdHJmdGltZT5gIGFuZAorOm1ldGg6YGRhdGUuc3RyZnRpbWUoKSA8ZGF0ZXRpbWUuZGF0ZS5zdHJmdGltZT5gIG1ldGhvZHMgbm93IHN1cHBvcnQKK0lTTyA4NjAxIGRhdGUgZGlyZWN0aXZlcyBgYCVHYGAsIGBgJXVgYCBhbmQgYGAlVmBgLgorKENvbnRyaWJ1dGVkIGJ5IEFzaGxleSBBbmRlcnNvbiBpbiA6aXNzdWU6YDEyMDA2YC4pCisKK1RoZSA6ZnVuYzpgZGF0ZXRpbWUuaXNvZm9ybWF0KCkgPGRhdGV0aW1lLmRhdGV0aW1lLmlzb2Zvcm1hdD5gIGZ1bmN0aW9uCitub3cgYWNjZXB0cyBhbiBvcHRpb25hbCAqdGltZXNwZWMqIGFyZ3VtZW50IHRoYXQgc3BlY2lmaWVzIHRoZSBudW1iZXIKK29mIGFkZGl0aW9uYWwgY29tcG9uZW50cyBvZiB0aGUgdGltZSB2YWx1ZSB0byBpbmNsdWRlLgorKENvbnRyaWJ1dGVkIGJ5IEFsZXNzYW5kcm8gQ3VjY2kgYW5kIEFsZXhhbmRlciBCZWxvcG9sc2t5IGluIDppc3N1ZTpgMTk0NzVgLikKKworVGhlIDptZXRoOmBkYXRldGltZS5jb21iaW5lKCkgPGRhdGV0aW1lLmRhdGV0aW1lLmNvbWJpbmU+YCBub3cKK2FjY2VwdHMgYW4gb3B0aW9uYWwgKnR6aW5mbyogYXJndW1lbnQuCisoQ29udHJpYnV0ZWQgYnkgQWxleGFuZGVyIEJlbG9wb2xza3kgaW4gOmlzc3VlOmAyNzY2MWAuKQorCisKK2RlY2ltYWwKKy0tLS0tLS0KKworTmV3IDptZXRoOmBEZWNpbWFsLmFzX2ludGVnZXJfcmF0aW8oKSA8ZGVjaW1hbC5EZWNpbWFsLmFzX2ludGVnZXJfcmF0aW8+YAorbWV0aG9kIHRoYXQgcmV0dXJucyBhIHBhaXIgYGAobiwgZClgYCBvZiBpbnRlZ2VycyB0aGF0IHJlcHJlc2VudCB0aGUgZ2l2ZW4KKzpjbGFzczpgfmRlY2ltYWwuRGVjaW1hbGAgaW5zdGFuY2UgYXMgYSBmcmFjdGlvbiwgaW4gbG93ZXN0IHRlcm1zIGFuZAord2l0aCBhIHBvc2l0aXZlIGRlbm9taW5hdG9yOjoKKworICAgID4+PiBEZWNpbWFsKCctMy4xNCcpLmFzX2ludGVnZXJfcmF0aW8oKQorICAgICgtMTU3LCA1MCkKKworKENvbnRyaWJ1dGVkIGJ5IFN0ZWZhbiBLcmFoIGFtZCBNYXJrIERpY2tpbnNvbiBpbiA6aXNzdWU6YDI1OTI4YC4pCisKKworCitkaXN0dXRpbHMKKy0tLS0tLS0tLQorCitUaGUgYGBkZWZhdWx0X2Zvcm1hdGBgIGF0dHJpYnV0ZSBoYXMgYmVlbiByZW1vdmVkIGZyb20KKzpjbGFzczpgZGlzdHV0aWxzLmNvbW1hbmQuc2Rpc3Quc2Rpc3RgIGFuZCB0aGUgYGBmb3JtYXRzYGAKK2F0dHJpYnV0ZSBkZWZhdWx0cyB0byBgYFsnZ3p0YXInXWBgLiBBbHRob3VnaCBub3QgYW50aWNpcGF0ZWQsCithbnkgY29kZSByZWx5aW5nIG9uIHRoZSBwcmVzZW5jZSBvZiBgYGRlZmF1bHRfZm9ybWF0YGAgbWF5CituZWVkIHRvIGJlIGFkYXB0ZWQuIFNlZSA6aXNzdWU6YDI3ODE5YCBmb3IgbW9yZSBkZXRhaWxzLgorCisKK2VtYWlsCistLS0tLQorCitUaGUgbmV3IGVtYWlsIEFQSSwgZW5hYmxlZCB2aWEgdGhlICpwb2xpY3kqIGtleXdvcmQgdG8gdmFyaW91cyBjb25zdHJ1Y3RvcnMsIGlzCitubyBsb25nZXIgcHJvdmlzaW9uYWwuICBUaGUgOm1vZDpgZW1haWxgIGRvY3VtZW50YXRpb24gaGFzIGJlZW4gcmVvcmdhbml6ZWQgYW5kCityZXdyaXR0ZW4gdG8gZm9jdXMgb24gdGhlIG5ldyBBUEksIHdoaWxlIHJldGFpbmluZyB0aGUgb2xkIGRvY3VtZW50YXRpb24gZm9yCit0aGUgbGVnYWN5IEFQSS4gIChDb250cmlidXRlZCBieSBSLiBEYXZpZCBNdXJyYXkgaW4gOmlzc3VlOmAyNDI3N2AuKQorCitUaGUgOm1vZDpgZW1haWwubWltZWAgY2xhc3NlcyBub3cgYWxsIGFjY2VwdCBhbiBvcHRpb25hbCAqcG9saWN5KiBrZXl3b3JkLgorKENvbnRyaWJ1dGVkIGJ5IEJlcmtlciBQZWtzYWcgaW4gOmlzc3VlOmAyNzMzMWAuKQorCitUaGUgOmNsYXNzOmB+ZW1haWwuZ2VuZXJhdG9yLkRlY29kZWRHZW5lcmF0b3JgIG5vdyBzdXBwb3J0cyB0aGUgKnBvbGljeSoKK2tleXdvcmQuCisKK1RoZXJlIGlzIGEgbmV3IDptb2Q6YH5lbWFpbC5wb2xpY3lgIGF0dHJpYnV0ZSwKKzphdHRyOmB+ZW1haWwucG9saWN5LlBvbGljeS5tZXNzYWdlX2ZhY3RvcnlgLCB0aGF0IGNvbnRyb2xzIHdoYXQgY2xhc3MgaXMgdXNlZAorYnkgZGVmYXVsdCB3aGVuIHRoZSBwYXJzZXIgY3JlYXRlcyBuZXcgbWVzc2FnZSBvYmplY3RzLiAgRm9yIHRoZQorOmF0dHI6YGVtYWlsLnBvbGljeS5jb21wYXQzMmAgcG9saWN5IHRoaXMgaXMgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCwKK2ZvciB0aGUgbmV3IHBvbGljaWVzIGl0IGlzIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYC4KKyhDb250cmlidXRlZCBieSBSLiBEYXZpZCBNdXJyYXkgaW4gOmlzc3VlOmAyMDQ3NmAuKQorCisKK2VuY29kaW5ncworLS0tLS0tLS0tCisKK09uIFdpbmRvd3MsIGFkZGVkIHRoZSBgYCdvZW0nYGAgZW5jb2RpbmcgdG8gdXNlIGBgQ1BfT0VNQ1BgYCwgYW5kIHRoZSBgYCdhbnNpJ2BgCithbGlhcyBmb3IgdGhlIGV4aXN0aW5nIGBgJ21iY3MnYGAgZW5jb2RpbmcsIHdoaWNoIHVzZXMgdGhlIGBgQ1BfQUNQYGAgY29kZSBwYWdlLgorKENvbnRyaWJ1dGVkIGJ5IFN0ZXZlIERvd2VyIGluIDppc3N1ZTpgMjc5NTlgLikKKworCitlbnVtCistLS0tCisKK1R3byBuZXcgZW51bWVyYXRpb24gYmFzZSBjbGFzc2VzIGhhdmUgYmVlbiBhZGRlZCB0byB0aGUgOm1vZDpgZW51bWAgbW9kdWxlOgorOmNsYXNzOmB+ZW51bS5GbGFnYCBhbmQgOmNsYXNzOmB+ZW51bS5JbnRGbGFnc2AuICBCb3RoIGFyZSB1c2VkIHRvIGRlZmluZQorY29uc3RhbnRzIHRoYXQgY2FuIGJlIGNvbWJpbmVkIHVzaW5nIHRoZSBiaXR3aXNlIG9wZXJhdG9ycy4KKyhDb250cmlidXRlZCBieSBFdGhhbiBGdXJtYW4gaW4gOmlzc3VlOmAyMzU5MWAuKQorCitNYW55IHN0YW5kYXJkIGxpYnJhcnkgbW9kdWxlcyBoYXZlIGJlZW4gdXBkYXRlZCB0byB1c2UgdGhlCis6Y2xhc3M6YH5lbnVtLkludEZsYWdzYCBjbGFzcyBmb3IgdGhlaXIgY29uc3RhbnRzLgorCitUaGUgbmV3IDpjbGFzczpgZW51bS5hdXRvYCB2YWx1ZSBjYW4gYmUgdXNlZCB0byBhc3NpZ24gdmFsdWVzIHRvIGVudW0KK21lbWJlcnMgYXV0b21hdGljYWxseTo6CisKKyAgICA+Pj4gZnJvbSBlbnVtIGltcG9ydCBFbnVtLCBhdXRvCisgICAgPj4+IGNsYXNzIENvbG9yKEVudW0pOgorICAgIC4uLiAgICAgcmVkID0gYXV0bygpCisgICAgLi4uICAgICBibHVlID0gYXV0bygpCisgICAgLi4uICAgICBncmVlbiA9IGF1dG8oKQorICAgIC4uLgorICAgID4+PiBsaXN0KENvbG9yKQorICAgIFs8Q29sb3IucmVkOiAxPiwgPENvbG9yLmJsdWU6IDI+LCA8Q29sb3IuZ3JlZW46IDM+XQorCisKK2ZhdWx0aGFuZGxlcgorLS0tLS0tLS0tLS0tCisKK09uIFdpbmRvd3MsIHRoZSA6bW9kOmBmYXVsdGhhbmRsZXJgIG1vZHVsZSBub3cgaW5zdGFsbHMgYSBoYW5kbGVyIGZvciBXaW5kb3dzCitleGNlcHRpb25zOiBzZWUgOmZ1bmM6YGZhdWx0aGFuZGxlci5lbmFibGVgLiAoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIgaW4KKzppc3N1ZTpgMjM4NDhgLikKKworCitmaWxlaW5wdXQKKy0tLS0tLS0tLQorCis6ZnVuYzpgfmZpbGVpbnB1dC5ob29rX2VuY29kZWRgIG5vdyBzdXBwb3J0cyB0aGUgKmVycm9ycyogYXJndW1lbnQuCisoQ29udHJpYnV0ZWQgYnkgSm9zZXBoIEhhY2ttYW4gaW4gOmlzc3VlOmAyNTc4OGAuKQorCisKK2hhc2hsaWIKKy0tLS0tLS0KKworOm1vZDpgaGFzaGxpYmAgc3VwcG9ydHMgT3BlblNTTCAxLjEuMC4gIFRoZSBtaW5pbXVtIHJlY29tbWVuZCB2ZXJzaW9uIGlzIDEuMC4yLgorKENvbnRyaWJ1dGVkIGJ5IENocmlzdGlhbiBIZWltZXMgaW4gOmlzc3VlOmAyNjQ3MGAuKQorCitCTEFLRTIgaGFzaCBmdW5jdGlvbnMgd2VyZSBhZGRlZCB0byB0aGUgbW9kdWxlLiA6ZnVuYzpgfmhhc2hsaWIuYmxha2UyYmAKK2FuZCA6ZnVuYzpgfmhhc2hsaWIuYmxha2Uyc2AgYXJlIGFsd2F5cyBhdmFpbGFibGUgYW5kIHN1cHBvcnQgdGhlIGZ1bGwKK2ZlYXR1cmUgc2V0IG9mIEJMQUtFMi4KKyhDb250cmlidXRlZCBieSBDaHJpc3RpYW4gSGVpbWVzIGluIDppc3N1ZTpgMjY3OThgIGJhc2VkIG9uIGNvZGUgYnkKK0RtaXRyeSBDaGVzdG55a2ggYW5kIFNhbXVlbCBOZXZlcy4gRG9jdW1lbnRhdGlvbiB3cml0dGVuIGJ5IERtaXRyeSBDaGVzdG55a2guKQorCitUaGUgU0hBLTMgaGFzaCBmdW5jdGlvbnMgOmZ1bmM6YH5oYXNobGliLnNoYTNfMjI0YCwgOmZ1bmM6YH5oYXNobGliLnNoYTNfMjU2YCwKKzpmdW5jOmB+aGFzaGxpYi5zaGEzXzM4NGAsIDpmdW5jOmB+aGFzaGxpYi5zaGEzXzUxMmAsIGFuZCBTSEFLRSBoYXNoIGZ1bmN0aW9ucworOmZ1bmM6YH5oYXNobGliLnNoYWtlXzEyOGAgYW5kIDpmdW5jOmB+aGFzaGxpYi5zaGFrZV8yNTZgIHdlcmUgYWRkZWQuCisoQ29udHJpYnV0ZWQgYnkgQ2hyaXN0aWFuIEhlaW1lcyBpbiA6aXNzdWU6YDE2MTEzYC4gS2VjY2FrIENvZGUgUGFja2FnZQorYnkgR3VpZG8gQmVydG9uaSwgSm9hbiBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMsIEdpbGxlcyBWYW4gQXNzY2hlLCBhbmQKK1Jvbm55IFZhbiBLZWVyLikKKworVGhlIHBhc3N3b3JkLWJhc2VkIGtleSBkZXJpdmF0aW9uIGZ1bmN0aW9uIDpmdW5jOmB+aGFzaGxpYi5zY3J5cHRgIGlzIG5vdworYXZhaWxhYmxlIHdpdGggT3BlblNTTCAxLjEuMCBhbmQgbmV3ZXIuCisoQ29udHJpYnV0ZWQgYnkgQ2hyaXN0aWFuIEhlaW1lcyBpbiA6aXNzdWU6YDI3OTI4YC4pCisKK2h0dHAuY2xpZW50CistLS0tLS0tLS0tLQorCis6bWV0aDpgSFRUUENvbm5lY3Rpb24ucmVxdWVzdCgpIDxodHRwLmNsaWVudC5IVFRQQ29ubmVjdGlvbi5yZXF1ZXN0PmAgYW5kCis6bWV0aDpgfmh0dHAuY2xpZW50LkhUVFBDb25uZWN0aW9uLmVuZGhlYWRlcnNgIGJvdGggbm93IHN1cHBvcnQKK2NodW5rZWQgZW5jb2RpbmcgcmVxdWVzdCBib2RpZXMuCisoQ29udHJpYnV0ZWQgYnkgRGVtaWFuIEJyZWNodCBhbmQgUm9sZiBLcmFobCBpbiA6aXNzdWU6YDEyMzE5YC4pCisKKworaWRsZWxpYiBhbmQgSURMRQorLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgaWRsZWxpYiBwYWNrYWdlIGlzIGJlaW5nIG1vZGVybml6ZWQgYW5kIHJlZmFjdG9yZWQgdG8gbWFrZSBJRExFIGxvb2sgYW5kCit3b3JrIGJldHRlciBhbmQgdG8gbWFrZSB0aGUgY29kZSBlYXNpZXIgdG8gdW5kZXJzdGFuZCwgdGVzdCwgYW5kIGltcHJvdmUuIFBhcnQKK29mIG1ha2luZyBJRExFIGxvb2sgYmV0dGVyLCBlc3BlY2lhbGx5IG9uIExpbnV4IGFuZCBNYWMsIGlzIHVzaW5nIHR0ayB3aWRnZXRzLAorbW9zdGx5IGluIHRoZSBkaWFsb2dzLiAgQXMgYSByZXN1bHQsIElETEUgbm8gbG9uZ2VyIHJ1bnMgd2l0aCB0Y2wvdGsgOC40LiAgSXQKK25vdyByZXF1aXJlcyB0Y2wvdGsgOC41IG9yIDguNi4gIFdlIHJlY29tbWVuZCBydW5uaW5nIHRoZSBsYXRlc3QgcmVsZWFzZSBvZgorZWl0aGVyLgorCisnTW9kZXJuaXppbmcnIGluY2x1ZGVzIHJlbmFtaW5nIGFuZCBjb25zb2xpZGF0aW9uIG9mIGlkbGVsaWIgbW9kdWxlcy4gVGhlCityZW5hbWluZyBvZiBmaWxlcyB3aXRoIHBhcnRpYWwgdXBwZXJjYXNlIG5hbWVzIGlzIHNpbWlsYXIgdG8gdGhlIHJlbmFtaW5nIG9mLAorZm9yIGluc3RhbmNlLCBUa2ludGVyIGFuZCBUa0ZvbnQgdG8gdGtpbnRlciBhbmQgdGtpbnRlci5mb250IGluIDMuMC4gIEFzIGEKK3Jlc3VsdCwgaW1wb3J0cyBvZiBpZGxlbGliIGZpbGVzIHRoYXQgd29ya2VkIGluIDMuNSB3aWxsIHVzdWFsbHkgbm90IHdvcmsgaW4KKzMuNi4gIEF0IGxlYXN0IGEgbW9kdWxlIG5hbWUgY2hhbmdlIHdpbGwgYmUgbmVlZGVkIChzZWUgaWRsZWxpYi9SRUFETUUudHh0KSwKK3NvbWV0aW1lcyBtb3JlLiAgKE5hbWUgY2hhbmdlcyBjb250cmlidXRlZCBieSBBbCBTd2llZ2FydCBhbmQgVGVycnkgUmVlZHkgaW4KKzppc3N1ZTpgMjQyMjVgLiAgTW9zdCBpZGxlbGliIHBhdGNoZXMgc2luY2UgaGF2ZSBiZWVuIGFuZCB3aWxsIGJlIHBhcnQgb2YgdGhlCitwcm9jZXNzLikKKworSW4gY29tcGVuc2F0aW9uLCB0aGUgZXZlbnR1YWwgcmVzdWx0IHdpdGggYmUgdGhhdCBzb21lIGlkbGVsaWIgY2xhc3NlcyB3aWxsIGJlCitlYXNpZXIgdG8gdXNlLCB3aXRoIGJldHRlciBBUElzIGFuZCBkb2NzdHJpbmdzIGV4cGxhaW5pbmcgdGhlbS4gIEFkZGl0aW9uYWwKK3VzZWZ1bCBpbmZvcm1hdGlvbiB3aWxsIGJlIGFkZGVkIHRvIGlkbGVsaWIgd2hlbiBhdmFpbGFibGUuCisKKworaW1wb3J0bGliCistLS0tLS0tLS0KKworSW1wb3J0IG5vdyByYWlzZXMgdGhlIG5ldyBleGNlcHRpb24gOmV4YzpgTW9kdWxlTm90Rm91bmRFcnJvcmAKKyhzdWJjbGFzcyBvZiA6ZXhjOmBJbXBvcnRFcnJvcmApIHdoZW4gaXQgY2Fubm90IGZpbmQgYSBtb2R1bGUuICBDb2RlCit0aGF0IGN1cnJlbnQgY2hlY2tzIGZvciBgYEltcG9ydEVycm9yYGAgKGluIHRyeS1leGNlcHQpIHdpbGwgc3RpbGwgd29yay4KKyhDb250cmlidXRlZCBieSBFcmljIFNub3cgaW4gOmlzc3VlOmAxNTc2N2AuKQorCis6Y2xhc3M6YGltcG9ydGxpYi51dGlsLkxhenlMb2FkZXJgIG5vdyBjYWxscworOm1ldGg6YH5pbXBvcnRsaWIuYWJjLkxvYWRlci5jcmVhdGVfbW9kdWxlYCBvbiB0aGUgd3JhcHBlZCBsb2FkZXIsIHJlbW92aW5nIHRoZQorcmVzdHJpY3Rpb24gdGhhdCA6Y2xhc3M6YGltcG9ydGxpYi5tYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyYCBhbmQKKzpjbGFzczpgaW1wb3J0bGliLm1hY2hpbmVyeS5FeHRlbnNpb25GaWxlTG9hZGVyYCBjb3VsZG4ndCBiZSB1c2VkIHdpdGgKKzpjbGFzczpgaW1wb3J0bGliLnV0aWwuTGF6eUxvYWRlcmAuCisKKzpmdW5jOmBpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZWAsCis6ZnVuYzpgaW1wb3J0bGliLnV0aWwuc291cmNlX2Zyb21fY2FjaGVgLCBhbmQKKzpmdW5jOmBpbXBvcnRsaWIudXRpbC5zcGVjX2Zyb21fZmlsZV9sb2NhdGlvbmAgbm93IGFjY2VwdCBhCis6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKKworaW5zcGVjdAorLS0tLS0tLQorCitUaGUgOmZ1bmM6YGluc3BlY3Quc2lnbmF0dXJlKCkgPGluc3BlY3Quc2lnbmF0dXJlPmAgZnVuY3Rpb24gbm93IHJlcG9ydHMgdGhlCitpbXBsaWNpdCBgYC4wYGAgcGFyYW1ldGVycyBnZW5lcmF0ZWQgYnkgdGhlIGNvbXBpbGVyIGZvciBjb21wcmVoZW5zaW9uIGFuZAorZ2VuZXJhdG9yIGV4cHJlc3Npb24gc2NvcGVzIGFzIGlmIHRoZXkgd2VyZSBwb3NpdGlvbmFsLW9ubHkgcGFyYW1ldGVycyBjYWxsZWQKK2BgaW1wbGljaXQwYGAuIChDb250cmlidXRlZCBieSBKZWxsZSBaaWpsc3RyYSBpbiA6aXNzdWU6YDE5NjExYC4pCisKK1RvIHJlZHVjZSBjb2RlIGNodXJuIHdoZW4gdXBncmFkaW5nIGZyb20gUHl0aG9uIDIuNyBhbmQgdGhlIGxlZ2FjeQorOmZ1bmM6YGluc3BlY3QuZ2V0YXJnc3BlY2AgQVBJLCB0aGUgcHJldmlvdXNseSBkb2N1bWVudGVkIGRlcHJlY2F0aW9uIG9mCis6ZnVuYzpgaW5zcGVjdC5nZXRmdWxsYXJnc3BlY2AgaGFzIGJlZW4gcmV2ZXJzZWQuIFdoaWxlIHRoaXMgZnVuY3Rpb24gaXMKK2NvbnZlbmllbnQgZm9yIHNpbmdsZS9zb3VyY2UgUHl0aG9uIDIvMyBjb2RlIGJhc2VzLCB0aGUgcmljaGVyCis6ZnVuYzpgaW5zcGVjdC5zaWduYXR1cmVgIGludGVyZmFjZSByZW1haW5zIHRoZSByZWNvbW1lbmRlZCBhcHByb2FjaCBmb3IgbmV3Citjb2RlLiAoQ29udHJpYnV0ZWQgYnkgTmljayBDb2dobGFuIGluIDppc3N1ZTpgMjcxNzJgKQorCisKK2pzb24KKy0tLS0KKworOmZ1bmM6YGpzb24ubG9hZGAgYW5kIDpmdW5jOmBqc29uLmxvYWRzYCBub3cgc3VwcG9ydCBiaW5hcnkgaW5wdXQuICBFbmNvZGVkCitKU09OIHNob3VsZCBiZSByZXByZXNlbnRlZCB1c2luZyBlaXRoZXIgVVRGLTgsIFVURi0xNiwgb3IgVVRGLTMyLgorKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAxNzkwOWAuKQorCisKK2xvZ2dpbmcKKy0tLS0tLS0KKworVGhlIG5ldyA6bWV0aDpgV2F0Y2hlZEZpbGVIYW5kbGVyLnJlb3BlbklmTmVlZGVkKCkgPGxvZ2dpbmcuaGFuZGxlcnMuV2F0Y2hlZEZpbGVIYW5kbGVyLnJlb3BlbklmTmVlZGVkPmAKK21ldGhvZCBoYXMgYmVlbiBhZGRlZCB0byBhZGQgdGhlIGFiaWxpdHkgdG8gY2hlY2sgaWYgdGhlIGxvZyBmaWxlIG5lZWRzIHRvCitiZSByZW9wZW5lZC4KKyhDb250cmlidXRlZCBieSBNYXJpYW4gSG9yYmFuIGluIDppc3N1ZTpgMjQ4ODRgLikKKworCittYXRoCistLS0tCisKK1RoZSB0YXUgKM+EKSBjb25zdGFudCBoYXMgYmVlbiBhZGRlZCB0byB0aGUgOm1vZDpgbWF0aGAgYW5kIDptb2Q6YGNtYXRoYAorbW9kdWxlcy4KKyhDb250cmlidXRlZCBieSBMaXNhIFJvYWNoIGluIDppc3N1ZTpgMTIzNDVgLCBzZWUgOnBlcDpgNjI4YCBmb3IgZGV0YWlscy4pCisKKworbXVsdGlwcm9jZXNzaW5nCistLS0tLS0tLS0tLS0tLS0KKworOnJlZjpgUHJveHkgT2JqZWN0cyA8bXVsdGlwcm9jZXNzaW5nLXByb3h5X29iamVjdHM+YCByZXR1cm5lZCBieQorOmZ1bmM6YG11bHRpcHJvY2Vzc2luZy5NYW5hZ2VyYCBjYW4gbm93IGJlIG5lc3RlZC4KKyhDb250cmlidXRlZCBieSBEYXZpbiBQb3R0cyBpbiA6aXNzdWU6YDY3NjZgLikKKworCitvcworLS0KKworU2VlIHRoZSBzdW1tYXJ5IG9mIDpyZWY6YFBFUCA1MTkgPHdoYXRzbmV3MzYtcGVwNTE5PmAgZm9yIGRldGFpbHMgb24gaG93IHRoZQorOm1vZDpgb3NgIGFuZCA6bW9kOmBvcy5wYXRoYCBtb2R1bGVzIG5vdyBzdXBwb3J0Cis6dGVybTpgcGF0aC1saWtlIG9iamVjdHMgPHBhdGgtbGlrZSBvYmplY3Q+YC4KKworOmZ1bmM6YH5vcy5zY2FuZGlyYCBub3cgc3VwcG9ydHMgOmNsYXNzOmBieXRlc2AgcGF0aHMgb24gV2luZG93cy4KKworQSBuZXcgOm1ldGg6YH5vcy5zY2FuZGlyLmNsb3NlYCBtZXRob2QgYWxsb3dzIGV4cGxpY2l0bHkgY2xvc2luZyBhCis6ZnVuYzpgfm9zLnNjYW5kaXJgIGl0ZXJhdG9yLiAgVGhlIDpmdW5jOmB+b3Muc2NhbmRpcmAgaXRlcmF0b3Igbm93CitzdXBwb3J0cyB0aGUgOnRlcm06YGNvbnRleHQgbWFuYWdlcmAgcHJvdG9jb2wuICBJZiBhIDpmdW5jOmBzY2FuZGlyYAoraXRlcmF0b3IgaXMgbmVpdGhlciBleGhhdXN0ZWQgbm9yIGV4cGxpY2l0bHkgY2xvc2VkIGEgOmV4YzpgUmVzb3VyY2VXYXJuaW5nYAord2lsbCBiZSBlbWl0dGVkIGluIGl0cyBkZXN0cnVjdG9yLgorKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyNTk5NGAuKQorCitPbiBMaW51eCwgOmZ1bmM6YG9zLnVyYW5kb21gIG5vdyBibG9ja3MgdW50aWwgdGhlIHN5c3RlbSB1cmFuZG9tIGVudHJvcHkgcG9vbAoraXMgaW5pdGlhbGl6ZWQgdG8gaW5jcmVhc2UgdGhlIHNlY3VyaXR5LiBTZWUgdGhlIDpwZXA6YDUyNGAgZm9yIHRoZSByYXRpb25hbGUuCisKK1RoZSBMaW51eCBgYGdldHJhbmRvbSgpYGAgc3lzY2FsbCAoZ2V0IHJhbmRvbSBieXRlcykgaXMgbm93IGV4cG9zZWQgYXMgdGhlIG5ldworOmZ1bmM6YG9zLmdldHJhbmRvbWAgZnVuY3Rpb24uCisoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIsIHBhcnQgb2YgdGhlIDpwZXA6YDUyNGApCisKKworcGF0aGxpYgorLS0tLS0tLQorCis6bW9kOmBwYXRobGliYCBub3cgc3VwcG9ydHMgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RzIDxwYXRoLWxpa2Ugb2JqZWN0PmAuCisoQ29udHJpYnV0ZWQgYnkgQnJldHQgQ2Fubm9uIGluIDppc3N1ZTpgMjcxODZgLikKKworU2VlIHRoZSBzdW1tYXJ5IG9mIDpyZWY6YFBFUCA1MTkgPHdoYXRzbmV3MzYtcGVwNTE5PmAgZm9yIGRldGFpbHMuCisKKworcGRiCistLS0KKworVGhlIDpjbGFzczpgfnBkYi5QZGJgIGNsYXNzIGNvbnN0cnVjdG9yIGhhcyBhIG5ldyBvcHRpb25hbCAqcmVhZHJjKiBhcmd1bWVudAordG8gY29udHJvbCB3aGV0aGVyIGBgLnBkYnJjYGAgZmlsZXMgc2hvdWxkIGJlIHJlYWQuCisKKworcGlja2xlCistLS0tLS0KKworT2JqZWN0cyB0aGF0IG5lZWQgYGBfX25ld19fYGAgY2FsbGVkIHdpdGgga2V5d29yZCBhcmd1bWVudHMgY2FuIG5vdyBiZSBwaWNrbGVkCit1c2luZyA6cmVmOmBwaWNrbGUgcHJvdG9jb2xzIDxwaWNrbGUtcHJvdG9jb2xzPmAgb2xkZXIgdGhhbiBwcm90b2NvbCB2ZXJzaW9uIDQuCitQcm90b2NvbCB2ZXJzaW9uIDQgYWxyZWFkeSBzdXBwb3J0cyB0aGlzIGNhc2UuICAoQ29udHJpYnV0ZWQgYnkgU2VyaGl5CitTdG9yY2hha2EgaW4gOmlzc3VlOmAyNDE2NGAuKQorCisKK3BpY2tsZXRvb2xzCistLS0tLS0tLS0tLQorCis6ZnVuYzpgcGlja2xldG9vbHMuZGlzKClgIG5vdyBvdXRwdXRzIHRoZSBpbXBsaWNpdCBtZW1vIGluZGV4IGZvciB0aGUKK2BgTUVNT0laRWBgIG9wY29kZS4KKyhDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjUzODJgLikKKworCitweWRvYworLS0tLS0KKworVGhlIDptb2Q6YHB5ZG9jYCBtb2R1bGUgaGFzIGxlYXJuZWQgdG8gcmVzcGVjdCB0aGUgYGBNQU5QQUdFUmBgCitlbnZpcm9ubWVudCB2YXJpYWJsZS4KKyhDb250cmlidXRlZCBieSBNYXR0aGlhcyBLbG9zZSBpbiA6aXNzdWU6YDg2MzdgLikKKworOmZ1bmM6YGhlbHBgIGFuZCA6bW9kOmBweWRvY2AgY2FuIG5vdyBsaXN0IG5hbWVkIHR1cGxlIGZpZWxkcyBpbiB0aGUKK29yZGVyIHRoZXkgd2VyZSBkZWZpbmVkIHJhdGhlciB0aGFuIGFscGhhYmV0aWNhbGx5LgorKENvbnRyaWJ1dGVkIGJ5IFJheW1vbmQgSGV0dGluZ2VyIGluIDppc3N1ZTpgMjQ4NzlgLikKKworCityYW5kb20KKy0tLS0tLS0KKworVGhlIG5ldyA6ZnVuYzpgfnJhbmRvbS5jaG9pY2VzYCBmdW5jdGlvbiByZXR1cm5zIGEgbGlzdCBvZiBlbGVtZW50cyBvZgorc3BlY2lmaWVkIHNpemUgZnJvbSB0aGUgZ2l2ZW4gcG9wdWxhdGlvbiB3aXRoIG9wdGlvbmFsIHdlaWdodHMuCisoQ29udHJpYnV0ZWQgYnkgUmF5bW9uZCBIZXR0aW5nZXIgaW4gOmlzc3VlOmAxODg0NGAuKQorCisKK3JlCistLQorCitBZGRlZCBzdXBwb3J0IG9mIG1vZGlmaWVyIHNwYW5zIGluIHJlZ3VsYXIgZXhwcmVzc2lvbnMuICBFeGFtcGxlczoKK2BgJyg/aTpwKXl0aG9uJ2BgIG1hdGNoZXMgYGAncHl0aG9uJ2BgIGFuZCBgYCdQeXRob24nYGAsIGJ1dCBub3QgYGAnUFlUSE9OJ2BgOworYGAnKD9pKWcoPy1pOnYpcidgYCBtYXRjaGVzIGBgJ0d2UidgYCBhbmQgYGAnZ3ZyJ2BgLCBidXQgbm90IGBgJ0dWUidgYC4KKyhDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgNDMzMDI4YC4pCisKK01hdGNoIG9iamVjdCBncm91cHMgY2FuIGJlIGFjY2Vzc2VkIGJ5IGBgX19nZXRpdGVtX19gYCwgd2hpY2ggaXMKK2VxdWl2YWxlbnQgdG8gYGBncm91cCgpYGAuICBTbyBgYG1vWyduYW1lJ11gYCBpcyBub3cgZXF1aXZhbGVudCB0bworYGBtby5ncm91cCgnbmFtZScpYGAuICAoQ29udHJpYnV0ZWQgYnkgRXJpYyBTbWl0aCBpbiA6aXNzdWU6YDI0NDU0YC4pCisKKzpjbGFzczpgfnJlLk1hdGNoYCBvYmplY3RzIG5vdyBzdXBwb3J0Cis6bWV0aDpgaW5kZXgtbGlrZSBvYmplY3RzIDxvYmplY3QuX19pbmRleF9fPmAgYXMgZ3JvdXAKK2luZGljZXMuCisoQ29udHJpYnV0ZWQgYnkgSmVyb2VuIERlbWV5ZXIgYW5kIFhpYW5nIFpoYW5nIGluIDppc3N1ZTpgMjcxNzdgLikKKworCityZWFkbGluZQorLS0tLS0tLS0KKworQWRkZWQgOmZ1bmM6YH5yZWFkbGluZS5zZXRfYXV0b19oaXN0b3J5YCB0byBlbmFibGUgb3IgZGlzYWJsZQorYXV0b21hdGljIGFkZGl0aW9uIG9mIGlucHV0IHRvIHRoZSBoaXN0b3J5IGxpc3QuICAoQ29udHJpYnV0ZWQgYnkKK1R5bGVyIENyb21wdG9uIGluIDppc3N1ZTpgMjY4NzBgLikKKworCitybGNvbXBsZXRlcgorLS0tLS0tLS0tLS0KKworUHJpdmF0ZSBhbmQgc3BlY2lhbCBhdHRyaWJ1dGUgbmFtZXMgbm93IGFyZSBvbWl0dGVkIHVubGVzcyB0aGUgcHJlZml4IHN0YXJ0cword2l0aCB1bmRlcnNjb3Jlcy4gIEEgc3BhY2Ugb3IgYSBjb2xvbiBpcyBhZGRlZCBhZnRlciBzb21lIGNvbXBsZXRlZCBrZXl3b3Jkcy4KKyhDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjUwMTFgIGFuZCA6aXNzdWU6YDI1MjA5YC4pCisKKworc2hsZXgKKy0tLS0tCisKK1RoZSA6Y2xhc3M6YH5zaGxleC5zaGxleGAgaGFzIG11Y2gKKzpyZWY6YGltcHJvdmVkIHNoZWxsIGNvbXBhdGliaWxpdHkgPGltcHJvdmVkLXNoZWxsLWNvbXBhdGliaWxpdHk+YAordGhyb3VnaCB0aGUgbmV3ICpwdW5jdHVhdGlvbl9jaGFycyogYXJndW1lbnQgdG8gY29udHJvbCB3aGljaCBjaGFyYWN0ZXJzCithcmUgdHJlYXRlZCBhcyBwdW5jdHVhdGlvbi4KKyhDb250cmlidXRlZCBieSBWaW5heSBTYWppcCBpbiA6aXNzdWU6YDE1MjE5NTBgLikKKworCitzaXRlCistLS0tCisKK1doZW4gc3BlY2lmeWluZyBwYXRocyB0byBhZGQgdG8gOmF0dHI6YHN5cy5wYXRoYCBpbiBhIGAucHRoYCBmaWxlLAoreW91IG1heSBub3cgc3BlY2lmeSBmaWxlIHBhdGhzIG9uIHRvcCBvZiBkaXJlY3RvcmllcyAoZS5nLiB6aXAgZmlsZXMpLgorKENvbnRyaWJ1dGVkIGJ5IFdvbGZnYW5nIExhbmduZXIgaW4gOmlzc3VlOmAyNjU4N2ApLgorCisKK3NxbGl0ZTMKKy0tLS0tLS0KKworOmF0dHI6YHNxbGl0ZTMuQ3Vyc29yLmxhc3Ryb3dpZGAgbm93IHN1cHBvcnRzIHRoZSBgYFJFUExBQ0VgYCBzdGF0ZW1lbnQuCisoQ29udHJpYnV0ZWQgYnkgQWxleCBMb3JkVGhvcnNlbiBpbiA6aXNzdWU6YDE2ODY0YC4pCisKKworc29ja2V0CistLS0tLS0KKworVGhlIDpmdW5jOmB+c29ja2V0LnNvY2tldC5pb2N0bGAgZnVuY3Rpb24gbm93IHN1cHBvcnRzIHRoZQorOmRhdGE6YH5zb2NrZXQuU0lPX0xPT1BCQUNLX0ZBU1RfUEFUSGAgY29udHJvbCBjb2RlLgorKENvbnRyaWJ1dGVkIGJ5IERhbmllbCBTdG9rZXMgaW4gOmlzc3VlOmAyNjUzNmAuKQorCitUaGUgOm1ldGg6YH5zb2NrZXQuc29ja2V0LmdldHNvY2tvcHRgIGNvbnN0YW50cyBgYFNPX0RPTUFJTmBgLAorYGBTT19QUk9UT0NPTGBgLCBgYFNPX1BFRVJTRUNgYCwgYW5kIGBgU09fUEFTU1NFQ2BgIGFyZSBub3cgc3VwcG9ydGVkLgorKENvbnRyaWJ1dGVkIGJ5IENocmlzdGlhbiBIZWltZXMgaW4gOmlzc3VlOmAyNjkwN2AuKQorCitUaGUgOm1ldGg6YH5zb2NrZXQuc29ja2V0LnNldHNvY2tvcHRgIG5vdyBzdXBwb3J0cyB0aGUKK2Bgc2V0c29ja29wdChsZXZlbCwgb3B0bmFtZSwgTm9uZSwgb3B0bGVuOiBpbnQpYGAgZm9ybS4KKyhDb250cmlidXRlZCBieSBDaHJpc3RpYW4gSGVpbWVzIGluIDppc3N1ZTpgMjc3NDRgLikKKworVGhlIHNvY2tldCBtb2R1bGUgbm93IHN1cHBvcnRzIHRoZSBhZGRyZXNzIGZhbWlseQorOmRhdGE6YH5zb2NrZXQuQUZfQUxHYCB0byBpbnRlcmZhY2Ugd2l0aCBMaW51eCBLZXJuZWwgY3J5cHRvIEFQSS4gYGBBTEdfKmBgLAorYGBTT0xfQUxHYGAgYW5kIDptZXRoOmB+c29ja2V0LnNvY2tldC5zZW5kbXNnX2FmYWxnYCB3ZXJlIGFkZGVkLgorKENvbnRyaWJ1dGVkIGJ5IENocmlzdGlhbiBIZWltZXMgaW4gOmlzc3VlOmAyNzc0NGAgd2l0aCBzdXBwb3J0IGZyb20KK1ZpY3RvciBTdGlubmVyLikKKworCitzb2NrZXRzZXJ2ZXIKKy0tLS0tLS0tLS0tLQorCitTZXJ2ZXJzIGJhc2VkIG9uIHRoZSA6bW9kOmBzb2NrZXRzZXJ2ZXJgIG1vZHVsZSwgaW5jbHVkaW5nIHRob3NlCitkZWZpbmVkIGluIDptb2Q6YGh0dHAuc2VydmVyYCwgOm1vZDpgeG1scnBjLnNlcnZlcmAgYW5kCis6bW9kOmB3c2dpcmVmLnNpbXBsZV9zZXJ2ZXJgLCBub3cgc3VwcG9ydCB0aGUgOnRlcm06YGNvbnRleHQgbWFuYWdlcmAKK3Byb3RvY29sLgorKENvbnRyaWJ1dGVkIGJ5IEF2aXYgUGFsaXZvZGEgaW4gOmlzc3VlOmAyNjQwNGAuKQorCitUaGUgOmF0dHI6YH5zb2NrZXRzZXJ2ZXIuU3RyZWFtUmVxdWVzdEhhbmRsZXIud2ZpbGVgIGF0dHJpYnV0ZSBvZgorOmNsYXNzOmB+c29ja2V0c2VydmVyLlN0cmVhbVJlcXVlc3RIYW5kbGVyYCBjbGFzc2VzIG5vdyBpbXBsZW1lbnRzCit0aGUgOmNsYXNzOmBpby5CdWZmZXJlZElPQmFzZWAgd3JpdGFibGUgaW50ZXJmYWNlLiAgSW4gcGFydGljdWxhciwKK2NhbGxpbmcgOm1ldGg6YH5pby5CdWZmZXJlZElPQmFzZS53cml0ZWAgaXMgbm93IGd1YXJhbnRlZWQgdG8gc2VuZCB0aGUKK2RhdGEgaW4gZnVsbC4gIChDb250cmlidXRlZCBieSBNYXJ0aW4gUGFudGVyIGluIDppc3N1ZTpgMjY3MjFgLikKKworCitzc2wKKy0tLQorCis6bW9kOmBzc2xgIHN1cHBvcnRzIE9wZW5TU0wgMS4xLjAuICBUaGUgbWluaW11bSByZWNvbW1lbmQgdmVyc2lvbiBpcyAxLjAuMi4KKyhDb250cmlidXRlZCBieSBDaHJpc3RpYW4gSGVpbWVzIGluIDppc3N1ZTpgMjY0NzBgLikKKworM0RFUyBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIGRlZmF1bHQgY2lwaGVyIHN1aXRlcyBhbmQgQ2hhQ2hhMjAgUG9seTEzMDUKK2NpcGhlciBzdWl0ZXMgaGF2ZSBiZWVuIGFkZGVkLgorKENvbnRyaWJ1dGVkIGJ5IENocmlzdGlhbiBIZWltZXMgaW4gOmlzc3VlOmAyNzg1MGAgYW5kIDppc3N1ZTpgMjc3NjZgLikKKworOmNsYXNzOmB+c3NsLlNTTENvbnRleHRgIGhhcyBiZXR0ZXIgZGVmYXVsdCBjb25maWd1cmF0aW9uIGZvciBvcHRpb25zCithbmQgY2lwaGVycy4KKyhDb250cmlidXRlZCBieSBDaHJpc3RpYW4gSGVpbWVzIGluIDppc3N1ZTpgMjgwNDNgLikKKworU1NMIHNlc3Npb24gY2FuIGJlIGNvcGllZCBmcm9tIG9uZSBjbGllbnQtc2lkZSBjb25uZWN0aW9uIHRvIGFub3RoZXIKK3dpdGggdGhlIG5ldyA6Y2xhc3M6YH5zc2wuU1NMU2Vzc2lvbmAgY2xhc3MuICBUTFMgc2Vzc2lvbiByZXN1bXB0aW9uIGNhbgorc3BlZWQgdXAgdGhlIGluaXRpYWwgaGFuZHNoYWtlLCByZWR1Y2UgbGF0ZW5jeSBhbmQgaW1wcm92ZSBwZXJmb3JtYW5jZQorKENvbnRyaWJ1dGVkIGJ5IENocmlzdGlhbiBIZWltZXMgaW4gOmlzc3VlOmAxOTUwMGAgYmFzZWQgb24gYSBkcmFmdCBieQorQWxleCBXYXJoYXdrLikKKworVGhlIG5ldyA6bWV0aDpgfnNzbC5TU0xDb250ZXh0LmdldF9jaXBoZXJzYCBtZXRob2QgY2FuIGJlIHVzZWQgdG8KK2dldCBhIGxpc3Qgb2YgZW5hYmxlZCBjaXBoZXJzIGluIG9yZGVyIG9mIGNpcGhlciBwcmlvcml0eS4KKworQWxsIGNvbnN0YW50cyBhbmQgZmxhZ3MgaGF2ZSBiZWVuIGNvbnZlcnRlZCB0byA6Y2xhc3M6YH5lbnVtLkludEVudW1gIGFuZAorOmNsYXNzOmB+ZW51bS5JbnRGbGFnc2AuCisoQ29udHJpYnV0ZWQgYnkgQ2hyaXN0aWFuIEhlaW1lcyBpbiA6aXNzdWU6YDI4MDI1YC4pCisKK1NlcnZlciBhbmQgY2xpZW50LXNpZGUgc3BlY2lmaWMgVExTIHByb3RvY29scyBmb3IgOmNsYXNzOmB+c3NsLlNTTENvbnRleHRgCit3ZXJlIGFkZGVkLgorKENvbnRyaWJ1dGVkIGJ5IENocmlzdGlhbiBIZWltZXMgaW4gOmlzc3VlOmAyODA4NWAuKQorCisKK3N0YXRpc3RpY3MKKy0tLS0tLS0tLS0KKworQSBuZXcgOmZ1bmM6YH5zdGF0aXN0aWNzLmhhcm1vbmljX21lYW5gIGZ1bmN0aW9uIGhhcyBiZWVuIGFkZGVkLgorKENvbnRyaWJ1dGVkIGJ5IFN0ZXZlbiBEJ0FwcmFubyBpbiA6aXNzdWU6YDI3MTgxYC4pCisKKworc3RydWN0CistLS0tLS0KKworOm1vZDpgc3RydWN0YCBub3cgc3VwcG9ydHMgSUVFRSA3NTQgaGFsZi1wcmVjaXNpb24gZmxvYXRzIHZpYSB0aGUgYGAnZSdgYAorZm9ybWF0IHNwZWNpZmllci4KKyhDb250cmlidXRlZCBieSBFbGkgU3RldmVucywgTWFyayBEaWNraW5zb24gaW4gOmlzc3VlOmAxMTczNGAuKQorCisKK3N1YnByb2Nlc3MKKy0tLS0tLS0tLS0KKworOmNsYXNzOmBzdWJwcm9jZXNzLlBvcGVuYCBkZXN0cnVjdG9yIG5vdyBlbWl0cyBhIDpleGM6YFJlc291cmNlV2FybmluZ2Agd2FybmluZworaWYgdGhlIGNoaWxkIHByb2Nlc3MgaXMgc3RpbGwgcnVubmluZy4gVXNlIHRoZSBjb250ZXh0IG1hbmFnZXIgcHJvdG9jb2wgKGBgd2l0aAorcHJvYzogLi4uYGApIG9yIGV4cGxpY2l0bHkgY2FsbCB0aGUgOm1ldGg6YH5zdWJwcm9jZXNzLlBvcGVuLndhaXRgIG1ldGhvZCB0bworcmVhZCB0aGUgZXhpdCBzdGF0dXMgb2YgdGhlIGNoaWxkIHByb2Nlc3MuIChDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lciBpbgorOmlzc3VlOmAyNjc0MWAuKQorCitUaGUgOmNsYXNzOmBzdWJwcm9jZXNzLlBvcGVuYCBjb25zdHJ1Y3RvciBhbmQgYWxsIGZ1bmN0aW9ucyB0aGF0IHBhc3MgYXJndW1lbnRzCit0aHJvdWdoIHRvIGl0IG5vdyBhY2NlcHQgKmVuY29kaW5nKiBhbmQgKmVycm9ycyogYXJndW1lbnRzLiBTcGVjaWZ5aW5nIGVpdGhlcgorb2YgdGhlc2Ugd2lsbCBlbmFibGUgdGV4dCBtb2RlIGZvciB0aGUgKnN0ZGluKiwgKnN0ZG91dCogYW5kICpzdGRlcnIqIHN0cmVhbXMuCisoQ29udHJpYnV0ZWQgYnkgU3RldmUgRG93ZXIgaW4gOmlzc3VlOmA2MTM1YC4pCisKKworc3lzCistLS0KKworVGhlIG5ldyA6ZnVuYzpgfnN5cy5nZXRmaWxlc3lzdGVtZW5jb2RlZXJyb3JzYCBmdW5jdGlvbiByZXR1cm5zIHRoZSBuYW1lIG9mCit0aGUgZXJyb3IgbW9kZSB1c2VkIHRvIGNvbnZlcnQgYmV0d2VlbiBVbmljb2RlIGZpbGVuYW1lcyBhbmQgYnl0ZXMgZmlsZW5hbWVzLgorKENvbnRyaWJ1dGVkIGJ5IFN0ZXZlIERvd2VyIGluIDppc3N1ZTpgMjc3ODFgLikKKworT24gV2luZG93cyB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSA6ZnVuYzpgfnN5cy5nZXR3aW5kb3dzdmVyc2lvbmAgZnVuY3Rpb24KK25vdyBpbmNsdWRlcyB0aGUgKnBsYXRmb3JtX3ZlcnNpb24qIGZpZWxkIHdoaWNoIGNvbnRhaW5zIHRoZSBhY2N1cmF0ZSBtYWpvcgordmVyc2lvbiwgbWlub3IgdmVyc2lvbiBhbmQgYnVpbGQgbnVtYmVyIG9mIHRoZSBjdXJyZW50IG9wZXJhdGluZyBzeXN0ZW0sCityYXRoZXIgdGhhbiB0aGUgdmVyc2lvbiB0aGF0IGlzIGJlaW5nIGVtdWxhdGVkIGZvciB0aGUgcHJvY2VzcworKENvbnRyaWJ1dGVkIGJ5IFN0ZXZlIERvd2VyIGluIDppc3N1ZTpgMjc5MzJgLikKKworCit0ZWxuZXRsaWIKKy0tLS0tLS0tLQorCis6Y2xhc3M6YH50ZWxuZXRsaWIuVGVsbmV0YCBpcyBub3cgYSBjb250ZXh0IG1hbmFnZXIgKGNvbnRyaWJ1dGVkIGJ5CitTdMOpcGhhbmUgV2lydGVsIGluIDppc3N1ZTpgMjU0ODVgKS4KKworCit0aW1lCistLS0tCisKK1RoZSA6Y2xhc3M6YH50aW1lLnN0cnVjdF90aW1lYCBhdHRyaWJ1dGVzIDphdHRyOmB0bV9nbXRvZmZgIGFuZAorOmF0dHI6YHRtX3pvbmVgIGFyZSBub3cgYXZhaWxhYmxlIG9uIGFsbCBwbGF0Zm9ybXMuCisKKwordGltZWl0CistLS0tLS0KKworVGhlIG5ldyA6bWV0aDpgVGltZXIuYXV0b3JhbmdlKCkgPHRpbWVpdC5UaW1lci5hdXRvcmFuZ2U+YCBjb252ZW5pZW5jZQorbWV0aG9kIGhhcyBiZWVuIGFkZGVkIHRvIGNhbGwgOm1ldGg6YFRpbWVyLnRpbWVpdCgpIDx0aW1laXQuVGltZXIudGltZWl0PmAKK3JlcGVhdGVkbHkgc28gdGhhdCB0aGUgdG90YWwgcnVuIHRpbWUgaXMgZ3JlYXRlciBvciBlcXVhbCB0byAyMDAgbWlsbGlzZWNvbmRzLgorKENvbnRyaWJ1dGVkIGJ5IFN0ZXZlbiBEJ0FwcmFubyBpbiA6aXNzdWU6YDY0MjJgLikKKworOm1vZDpgdGltZWl0YCBub3cgd2FybnMgd2hlbiB0aGVyZSBpcyBzdWJzdGFudGlhbCAoNHgpIHZhcmlhbmNlCitiZXR3ZWVuIGJlc3QgYW5kIHdvcnN0IHRpbWVzLgorKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyMzU1MmAuKQorCisKK3RraW50ZXIKKy0tLS0tLS0KKworQWRkZWQgbWV0aG9kcyA6bWV0aDpgfnRraW50ZXIuVmFyaWFibGUudHJhY2VfYWRkYCwKKzptZXRoOmB+dGtpbnRlci5WYXJpYWJsZS50cmFjZV9yZW1vdmVgIGFuZCA6bWV0aDpgfnRraW50ZXIuVmFyaWFibGUudHJhY2VfaW5mb2AKK2luIHRoZSA6Y2xhc3M6YHRraW50ZXIuVmFyaWFibGVgIGNsYXNzLiAgVGhleSByZXBsYWNlIG9sZCBtZXRob2RzCis6bWV0aDpgfnRraW50ZXIuVmFyaWFibGUudHJhY2VfdmFyaWFibGVgLCA6bWV0aDpgfnRraW50ZXIuVmFyaWFibGUudHJhY2VgLAorOm1ldGg6YH50a2ludGVyLlZhcmlhYmxlLnRyYWNlX3ZkZWxldGVgIGFuZAorOm1ldGg6YH50a2ludGVyLlZhcmlhYmxlLnRyYWNlX3ZpbmZvYCB0aGF0IHVzZSBvYnNvbGV0ZSBUY2wgY29tbWFuZHMgYW5kIG1pZ2h0Citub3Qgd29yayBpbiBmdXR1cmUgdmVyc2lvbnMgb2YgVGNsLgorKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyMjExNWApLgorCisKKy4uIF93aGF0c25ldzM2LXRyYWNlYmFjazoKKwordHJhY2ViYWNrCistLS0tLS0tLS0KKworQm90aCB0aGUgdHJhY2ViYWNrIG1vZHVsZSBhbmQgdGhlIGludGVycHJldGVyJ3MgYnVpbHRpbiBleGNlcHRpb24gZGlzcGxheSBub3cKK2FiYnJldmlhdGUgbG9uZyBzZXF1ZW5jZXMgb2YgcmVwZWF0ZWQgbGluZXMgaW4gdHJhY2ViYWNrcyBhcyBzaG93biBpbiB0aGUKK2ZvbGxvd2luZyBleGFtcGxlOjoKKworICAgID4+PiBkZWYgZigpOiBmKCkKKyAgICAuLi4KKyAgICA+Pj4gZigpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KKyAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIGYKKyAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIGYKKyAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIGYKKyAgICAgIFtQcmV2aW91cyBsaW5lIHJlcGVhdGVkIDk5NSBtb3JlIHRpbWVzXQorICAgIFJlY3Vyc2lvbkVycm9yOiBtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aCBleGNlZWRlZAorCisoQ29udHJpYnV0ZWQgYnkgRW1hbnVlbCBCYXJyeSBpbiA6aXNzdWU6YDI2ODIzYC4pCisKKwordHJhY2VtYWxsb2MKKy0tLS0tLS0tLS0tCisKK1RoZSA6bW9kOmB0cmFjZW1hbGxvY2AgbW9kdWxlIG5vdyBzdXBwb3J0cyB0cmFjaW5nIG1lbW9yeSBhbGxvY2F0aW9ucyBpbgorbXVsdGlwbGUgZGlmZmVyZW50IGFkZHJlc3Mgc3BhY2VzLgorCitUaGUgbmV3IDpjbGFzczpgfnRyYWNlbWFsbG9jLkRvbWFpbkZpbHRlcmAgZmlsdGVyIGNsYXNzIGhhcyBiZWVuIGFkZGVkCit0byBmaWx0ZXIgYmxvY2sgdHJhY2VzIGJ5IHRoZWlyIGFkZHJlc3Mgc3BhY2UgKGRvbWFpbikuCisKKyhDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lciBpbiA6aXNzdWU6YDI2NTg4YC4pCisKKworLi4gX3doYXRzbmV3MzYtdHlwaW5nOgorCit0eXBpbmcKKy0tLS0tLQorCitTdGFydGluZyB3aXRoIFB5dGhvbiAzLjYgdGhlIDptb2Q6YHR5cGluZ2AgbW9kdWxlIGlzIG5vIGxvbmdlciBwcm92aXNpb25hbAorYW5kIGl0cyBBUEkgaXMgY29uc2lkZXJlZCBzdGFibGUuCisKK1NpbmNlIHRoZSA6bW9kOmB0eXBpbmdgIG1vZHVsZSB3YXMgOnRlcm06YHByb3Zpc2lvbmFsIDxwcm92aXNpb25hbCBhcGk+YAoraW4gUHl0aG9uIDMuNSwgYWxsIGNoYW5nZXMgaW50cm9kdWNlZCBpbiBQeXRob24gMy42IGhhdmUgYWxzbyBiZWVuCitiYWNrcG9ydGVkIHRvIFB5dGhvbiAzLjUueC4KKworVGhlIDptb2Q6YHR5cGluZ2AgbW9kdWxlIGhhcyBhIG11Y2ggaW1wcm92ZWQgc3VwcG9ydCBmb3IgZ2VuZXJpYyB0eXBlCithbGlhc2VzLiAgRm9yIGV4YW1wbGUgYGBEaWN0W3N0ciwgVHVwbGVbUywgVF1dYGAgaXMgbm93IGEgdmFsaWQKK3R5cGUgYW5ub3RhdGlvbi4KKyhDb250cmlidXRlZCBieSBHdWlkbyB2YW4gUm9zc3VtIGluIGBHaXRodWIgIzE5NQorPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vdHlwaW5nL3B1bGwvMTk1PmBfLikKKworVGhlIDpjbGFzczpgdHlwaW5nLkNvbnRleHRNYW5hZ2VyYCBjbGFzcyBoYXMgYmVlbiBhZGRlZCBmb3IKK3JlcHJlc2VudGluZyA6Y2xhc3M6YGNvbnRleHRsaWIuQWJzdHJhY3RDb250ZXh0TWFuYWdlcmAuCisoQ29udHJpYnV0ZWQgYnkgQnJldHQgQ2Fubm9uIGluIDppc3N1ZTpgMjU2MDlgLikKKworVGhlIDpjbGFzczpgdHlwaW5nLkNvbGxlY3Rpb25gIGNsYXNzIGhhcyBiZWVuIGFkZGVkIGZvcgorcmVwcmVzZW50aW5nIDpjbGFzczpgY29sbGVjdGlvbnMuYWJjLkNvbGxlY3Rpb25gLgorKENvbnRyaWJ1dGVkIGJ5IEl2YW4gTGV2a2l2c2t5aSBpbiA6aXNzdWU6YDI3NTk4YC4pCisKK1RoZSA6Y29uc3Q6YHR5cGluZy5DbGFzc1ZhcmAgdHlwZSBjb25zdHJ1Y3QgaGFzIGJlZW4gYWRkZWQgdG8KK21hcmsgY2xhc3MgdmFyaWFibGVzLiAgQXMgaW50cm9kdWNlZCBpbiA6cGVwOmA1MjZgLCBhIHZhcmlhYmxlIGFubm90YXRpb24KK3dyYXBwZWQgaW4gQ2xhc3NWYXIgaW5kaWNhdGVzIHRoYXQgYSBnaXZlbiBhdHRyaWJ1dGUgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBhcworYSBjbGFzcyB2YXJpYWJsZSBhbmQgc2hvdWxkIG5vdCBiZSBzZXQgb24gaW5zdGFuY2VzIG9mIHRoYXQgY2xhc3MuCisoQ29udHJpYnV0ZWQgYnkgSXZhbiBMZXZraXZza3lpIGluIGBHaXRodWIgIzI4MAorPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vdHlwaW5nL2lzc3Vlcy8yODA+YF8uKQorCitBIG5ldyA6Y29uc3Q6YH50eXBpbmcuVFlQRV9DSEVDS0lOR2AgY29uc3RhbnQgdGhhdCBpcyBhc3N1bWVkIHRvIGJlCitgYFRydWVgYCBieSB0aGUgc3RhdGljIHR5cGUgY2hla2VycywgYnV0IGlzIGBgRmFsc2VgYCBhdCBydW50aW1lLgorKENvbnRyaWJ1dGVkIGJ5IEd1aWRvIHZhbiBSb3NzdW0gaW4gYEdpdGh1YiAjMjMwCis8aHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi90eXBpbmcvaXNzdWVzLzIzMD5gXy4pCisKK0EgbmV3IDpmdW5jOmB+dHlwaW5nLk5ld1R5cGVgIGhlbHBlciBmdW5jdGlvbiBoYXMgYmVlbiBhZGRlZCB0byBjcmVhdGUKK2xpZ2h0d2VpZ2h0IGRpc3RpbmN0IHR5cGVzIGZvciBhbm5vdGF0aW9uczo6CisKKyAgICBmcm9tIHR5cGluZyBpbXBvcnQgTmV3VHlwZQorCisgICAgVXNlcklkID0gTmV3VHlwZSgnVXNlcklkJywgaW50KQorICAgIHNvbWVfaWQgPSBVc2VySWQoNTI0MzEzKQorCitUaGUgc3RhdGljIHR5cGUgY2hlY2tlciB3aWxsIHRyZWF0IHRoZSBuZXcgdHlwZSBhcyBpZiBpdCB3ZXJlIGEgc3ViY2xhc3MKK29mIHRoZSBvcmlnaW5hbCB0eXBlLiAgKENvbnRyaWJ1dGVkIGJ5IEl2YW4gTGV2a2l2c2t5aSBpbiBgR2l0aHViICMxODkKKzxodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL3R5cGluZy9pc3N1ZXMvMTg5PmBfLikKKworCit1bmljb2RlZGF0YQorLS0tLS0tLS0tLS0KKworVGhlIDptb2Q6YHVuaWNvZGVkYXRhYCBtb2R1bGUgbm93IHVzZXMgZGF0YSBmcm9tIGBVbmljb2RlIDkuMC4wCis8aHR0cDovL3VuaWNvZGUub3JnL3ZlcnNpb25zL1VuaWNvZGU5LjAuMC8+YF8uCisoQ29udHJpYnV0ZWQgYnkgQmVuamFtaW4gUGV0ZXJzb24uKQorCisKK3VuaXR0ZXN0Lm1vY2sKKy0tLS0tLS0tLS0tLS0KKworVGhlIDpjbGFzczpgfnVuaXR0ZXN0Lm1vY2suTW9ja2AgY2xhc3MgaGFzIHRoZSBmb2xsb3dpbmcgaW1wcm92ZW1lbnRzOgorCisqIFR3byBuZXcgbWV0aG9kcywgOm1ldGg6YE1vY2suYXNzZXJ0X2NhbGxlZCgpCisgIDx1bml0dGVzdC5tb2NrLk1vY2suYXNzZXJ0X2NhbGxlZD5gIGFuZCA6bWV0aDpgTW9jay5hc3NlcnRfY2FsbGVkX29uY2UoKQorICA8dW5pdHRlc3QubW9jay5Nb2NrLmFzc2VydF9jYWxsZWRfb25jZT5gIHRvIGNoZWNrIGlmIHRoZSBtb2NrIG9iamVjdAorICB3YXMgY2FsbGVkLgorICAoQ29udHJpYnV0ZWQgYnkgQW1pdCBTYWhhIGluIDppc3N1ZTpgMjYzMjNgLikKKworKiBUaGUgOm1ldGg6YE1vY2sucmVzZXRfbW9jaygpIDx1bml0dGVzdC5tb2NrLk1vY2sucmVzZXRfbW9jaz5gIG1ldGhvZAorICBub3cgaGFzIHR3byBvcHRpb25hbCBrZXl3b3JkIG9ubHkgYXJndW1lbnRzOiAqcmV0dXJuX3ZhbHVlKiBhbmQKKyAgKnNpZGVfZWZmZWN0Ki4KKyAgKENvbnRyaWJ1dGVkIGJ5IEt1c2hhbCBEYXMgaW4gOmlzc3VlOmAyMTI3MWAuKQorCisKK3VybGxpYi5yZXF1ZXN0CistLS0tLS0tLS0tLS0tLQorCitJZiBhIEhUVFAgcmVxdWVzdCBoYXMgYSBmaWxlIG9yIGl0ZXJhYmxlIGJvZHkgKG90aGVyIHRoYW4gYQorYnl0ZXMgb2JqZWN0KSBidXQgbm8gYGBDb250ZW50LUxlbmd0aGBgIGhlYWRlciwgcmF0aGVyIHRoYW4KK3Rocm93aW5nIGFuIGVycm9yLCA6Y2xhc3M6YH51cmxsaWIucmVxdWVzdC5BYnN0cmFjdEhUVFBIYW5kbGVyYCBub3cKK2ZhbGxzIGJhY2sgdG8gdXNlIGNodW5rZWQgdHJhbnNmZXIgZW5jb2RpbmcuCisoQ29udHJpYnV0ZWQgYnkgRGVtaWFuIEJyZWNodCBhbmQgUm9sZiBLcmFobCBpbiA6aXNzdWU6YDEyMzE5YC4pCisKKwordXJsbGliLnJvYm90cGFyc2VyCistLS0tLS0tLS0tLS0tLS0tLS0KKworOmNsYXNzOmB+dXJsbGliLnJvYm90cGFyc2VyLlJvYm90RmlsZVBhcnNlcmAgbm93IHN1cHBvcnRzIHRoZSBgYENyYXdsLWRlbGF5YGAgYW5kCitgYFJlcXVlc3QtcmF0ZWBgIGV4dGVuc2lvbnMuCisoQ29udHJpYnV0ZWQgYnkgTmlrb2xheSBCb2dveWNoZXYgaW4gOmlzc3VlOmAxNjA5OWAuKQorCisKK3ZlbnYKKy0tLS0KKworOm1vZDpgdmVudmAgYWNjZXB0cyBhIG5ldyBwYXJhbWV0ZXIgYGAtLXByb21wdGBgLiBUaGlzIHBhcmFtZXRlciBwcm92aWRlcyBhbgorYWx0ZXJuYXRpdmUgcHJlZml4IGZvciB0aGUgdmlydHVhbCBlbnZpcm9ubWVudC4gKFByb3Bvc2VkIGJ5IMWBdWthc3ogQmFsY2VyemFrCithbmQgcG9ydGVkIHRvIDMuNiBieSBTdMOpcGhhbmUgV2lydGVsIGluIDppc3N1ZTpgMjI4MjlgLikKKworCit3YXJuaW5ncworLS0tLS0tLS0KKworQSBuZXcgb3B0aW9uYWwgKnNvdXJjZSogcGFyYW1ldGVyIGhhcyBiZWVuIGFkZGVkIHRvIHRoZQorOmZ1bmM6YHdhcm5pbmdzLndhcm5fZXhwbGljaXRgIGZ1bmN0aW9uOiB0aGUgZGVzdHJveWVkIG9iamVjdCB3aGljaCBlbWl0dGVkIGEKKzpleGM6YFJlc291cmNlV2FybmluZ2AuIEEgKnNvdXJjZSogYXR0cmlidXRlIGhhcyBhbHNvIGJlZW4gYWRkZWQgdG8KKzpjbGFzczpgd2FybmluZ3MuV2FybmluZ01lc3NhZ2VgIChjb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lciBpbgorOmlzc3VlOmAyNjU2OGAgYW5kIDppc3N1ZTpgMjY1NjdgKS4KKworV2hlbiBhIDpleGM6YFJlc291cmNlV2FybmluZ2Agd2FybmluZyBpcyBsb2dnZWQsIHRoZSA6bW9kOmB0cmFjZW1hbGxvY2AgbW9kdWxlIGlzIG5vdwordXNlZCB0byB0cnkgdG8gcmV0cmlldmUgdGhlIHRyYWNlYmFjayB3aGVyZSB0aGUgZGVzdHJveWVkIG9iamVjdCB3YXMgYWxsb2NhdGVkLgorCitFeGFtcGxlIHdpdGggdGhlIHNjcmlwdCBgYGV4YW1wbGUucHlgYDo6CisKKyAgICBpbXBvcnQgd2FybmluZ3MKKworICAgIGRlZiBmdW5jKCk6CisgICAgICAgIHJldHVybiBvcGVuKF9fZmlsZV9fKQorCisgICAgZiA9IGZ1bmMoKQorICAgIGYgPSBOb25lCisKK091dHB1dCBvZiB0aGUgY29tbWFuZCBgYHB5dGhvbjMuNiAtV2QgLVggdHJhY2VtYWxsb2M9NSBleGFtcGxlLnB5YGA6OgorCisgICAgZXhhbXBsZS5weTo3OiBSZXNvdXJjZVdhcm5pbmc6IHVuY2xvc2VkIGZpbGUgPF9pby5UZXh0SU9XcmFwcGVyIG5hbWU9J2V4YW1wbGUucHknIG1vZGU9J3InIGVuY29kaW5nPSdVVEYtOCc+CisgICAgICBmID0gTm9uZQorICAgIE9iamVjdCBhbGxvY2F0ZWQgYXQgKG1vc3QgcmVjZW50IGNhbGwgZmlyc3QpOgorICAgICAgRmlsZSAiZXhhbXBsZS5weSIsIGxpbmVubyA0CisgICAgICAgIHJldHVybiBvcGVuKF9fZmlsZV9fKQorICAgICAgRmlsZSAiZXhhbXBsZS5weSIsIGxpbmVubyA2CisgICAgICAgIGYgPSBmdW5jKCkKKworVGhlICJPYmplY3QgYWxsb2NhdGVkIGF0IiB0cmFjZWJhY2sgaXMgbmV3IGFuZCBpcyBvbmx5IGRpc3BsYXllZCBpZgorOm1vZDpgdHJhY2VtYWxsb2NgIGlzIHRyYWNpbmcgUHl0aG9uIG1lbW9yeSBhbGxvY2F0aW9ucyBhbmQgaWYgdGhlCis6bW9kOmB3YXJuaW5nc2AgbW9kdWxlIHdhcyBhbHJlYWR5IGltcG9ydGVkLgorCisKK3dpbnJlZworLS0tLS0tCisKK0FkZGVkIHRoZSA2NC1iaXQgaW50ZWdlciB0eXBlIDpkYXRhOmBSRUdfUVdPUkQgPHdpbnJlZy5SRUdfUVdPUkQ+YC4KKyhDb250cmlidXRlZCBieSBDbGVtZW50IFJvdWF1bHQgaW4gOmlzc3VlOmAyMzAyNmAuKQorCisKK3dpbnNvdW5kCistLS0tLS0tLQorCitBbGxvd2VkIGtleXdvcmQgYXJndW1lbnRzIHRvIGJlIHBhc3NlZCB0byA6ZnVuYzpgQmVlcCA8d2luc291bmQuQmVlcD5gLAorOmZ1bmM6YE1lc3NhZ2VCZWVwIDx3aW5zb3VuZC5NZXNzYWdlQmVlcD5gLCBhbmQgOmZ1bmM6YFBsYXlTb3VuZAorPHdpbnNvdW5kLlBsYXlTb3VuZD5gICg6aXNzdWU6YDI3OTgyYCkuCisKKworeG1scnBjLmNsaWVudAorLS0tLS0tLS0tLS0tLQorCitUaGUgOm1vZDpgeG1scnBjLmNsaWVudGAgbW9kdWxlIG5vdyBzdXBwb3J0cyB1bm1hcnNoYWxsaW5nCithZGRpdGlvbmFsIGRhdGEgdHlwZXMgdXNlZCBieSB0aGUgQXBhY2hlIFhNTC1SUEMgaW1wbGVtZW50YXRpb24KK2ZvciBudW1lcmljcyBhbmQgYGBOb25lYGAuCisoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDI2ODg1YC4pCisKKworemlwZmlsZQorLS0tLS0tLQorCitBIG5ldyA6bWV0aDpgWmlwSW5mby5mcm9tX2ZpbGUoKSA8emlwZmlsZS5aaXBJbmZvLmZyb21fZmlsZT5gIGNsYXNzIG1ldGhvZAorYWxsb3dzIG1ha2luZyBhIDpjbGFzczpgfnppcGZpbGUuWmlwSW5mb2AgaW5zdGFuY2UgZnJvbSBhIGZpbGVzeXN0ZW0gZmlsZS4KK0EgbmV3IDptZXRoOmBaaXBJbmZvLmlzX2RpcigpIDx6aXBmaWxlLlppcEluZm8uaXNfZGlyPmAgbWV0aG9kIGNhbiBiZSB1c2VkCit0byBjaGVjayBpZiB0aGUgOmNsYXNzOmB+emlwZmlsZS5aaXBJbmZvYCBpbnN0YW5jZSByZXByZXNlbnRzIGEgZGlyZWN0b3J5LgorKENvbnRyaWJ1dGVkIGJ5IFRob21hcyBLbHV5dmVyIGluIDppc3N1ZTpgMjYwMzlgLikKKworVGhlIDptZXRoOmBaaXBGaWxlLm9wZW4oKSA8emlwZmlsZS5aaXBGaWxlLm9wZW4+YCBtZXRob2QgY2FuIG5vdyBiZSB1c2VkIHRvCit3cml0ZSBkYXRhIGludG8gYSBaSVAgZmlsZSwgYXMgd2VsbCBhcyBmb3IgZXh0cmFjdGluZyBkYXRhLgorKENvbnRyaWJ1dGVkIGJ5IFRob21hcyBLbHV5dmVyIGluIDppc3N1ZTpgMjYwMzlgLikKKworCit6bGliCistLS0tCisKK1RoZSA6ZnVuYzpgfnpsaWIuY29tcHJlc3NgIGFuZCA6ZnVuYzpgfnpsaWIuZGVjb21wcmVzc2AgZnVuY3Rpb25zIG5vdyBhY2NlcHQKK2tleXdvcmQgYXJndW1lbnRzLgorKENvbnRyaWJ1dGVkIGJ5IEF2aXYgUGFsaXZvZGEgaW4gOmlzc3VlOmAyNjI0M2AgYW5kCitYaWFuZyBaaGFuZyBpbiA6aXNzdWU6YDE2NzY0YCByZXNwZWN0aXZlbHkuKQorCisKK09wdGltaXphdGlvbnMKKz09PT09PT09PT09PT0KKworKiBUaGUgUHl0aG9uIGludGVycHJldGVyIG5vdyB1c2VzIGEgMTYtYml0IHdvcmRjb2RlIGluc3RlYWQgb2YgYnl0ZWNvZGUgd2hpY2gKKyAgbWFkZSBhIG51bWJlciBvZiBvcGNvZGUgb3B0aW1pemF0aW9ucyBwb3NzaWJsZS4KKyAgKENvbnRyaWJ1dGVkIGJ5IERlbXVyIFJ1bWVkIHdpdGggaW5wdXQgYW5kIHJldmlld3MgZnJvbQorICBTZXJoaXkgU3RvcmNoYWthIGFuZCBWaWN0b3IgU3Rpbm5lciBpbiA6aXNzdWU6YDI2NjQ3YCBhbmQgOmlzc3VlOmAyODA1MGAuKQorCisqIFRoZSA6Y2xhc3M6YGFzeW5jaW8uRnV0dXJlYCBjbGFzcyBub3cgaGFzIGFuIG9wdGltaXplZCBDIGltcGxlbWVudGF0aW9uLgorICAoQ29udHJpYnV0ZWQgYnkgWXVyeSBTZWxpdmFub3YgYW5kIElOQURBIE5hb2tpIGluIDppc3N1ZTpgMjYwODFgLikKKworKiBUaGUgOmNsYXNzOmBhc3luY2lvLlRhc2tgIGNsYXNzIG5vdyBoYXMgYW4gb3B0aW1pemVkCisgIEMgaW1wbGVtZW50YXRpb24uIChDb250cmlidXRlZCBieSBZdXJ5IFNlbGl2YW5vdiBpbiA6aXNzdWU6YDI4NTQ0YC4pCisKKyogVmFyaW91cyBpbXBsZW1lbnRhdGlvbiBpbXByb3ZlbWVudHMgaW4gdGhlIDptb2Q6YHR5cGluZ2AgbW9kdWxlCisgIChzdWNoIGFzIGNhY2hpbmcgb2YgZ2VuZXJpYyB0eXBlcykgYWxsb3cgdXAgdG8gMzAgdGltZXMgcGVyZm9ybWFuY2UKKyAgaW1wcm92ZW1lbnRzIGFuZCByZWR1Y2VkIG1lbW9yeSBmb290cHJpbnQuCisKKyogVGhlIEFTQ0lJIGRlY29kZXIgaXMgbm93IHVwIHRvIDYwIHRpbWVzIGFzIGZhc3QgZm9yIGVycm9yIGhhbmRsZXJzCisgIGBgc3Vycm9nYXRlZXNjYXBlYGAsIGBgaWdub3JlYGAgYW5kIGBgcmVwbGFjZWBgIChDb250cmlidXRlZAorICBieSBWaWN0b3IgU3Rpbm5lciBpbiA6aXNzdWU6YDI0ODcwYCkuCisKKyogVGhlIEFTQ0lJIGFuZCB0aGUgTGF0aW4xIGVuY29kZXJzIGFyZSBub3cgdXAgdG8gMyB0aW1lcyBhcyBmYXN0IGZvciB0aGUKKyAgZXJyb3IgaGFuZGxlciBgYHN1cnJvZ2F0ZWVzY2FwZWBgCisgIChDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lciBpbiA6aXNzdWU6YDI1MjI3YCkuCisKKyogVGhlIFVURi04IGVuY29kZXIgaXMgbm93IHVwIHRvIDc1IHRpbWVzIGFzIGZhc3QgZm9yIGVycm9yIGhhbmRsZXJzCisgIGBgaWdub3JlYGAsIGBgcmVwbGFjZWBgLCBgYHN1cnJvZ2F0ZWVzY2FwZWBgLCBgYHN1cnJvZ2F0ZXBhc3NgYCAoQ29udHJpYnV0ZWQKKyAgYnkgVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAyNTI2N2ApLgorCisqIFRoZSBVVEYtOCBkZWNvZGVyIGlzIG5vdyB1cCB0byAxNSB0aW1lcyBhcyBmYXN0IGZvciBlcnJvciBoYW5kbGVycworICBgYGlnbm9yZWBgLCBgYHJlcGxhY2VgYCBhbmQgYGBzdXJyb2dhdGVlc2NhcGVgYCAoQ29udHJpYnV0ZWQKKyAgYnkgVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAyNTMwMWApLgorCisqIGBgYnl0ZXMgJSBhcmdzYGAgaXMgbm93IHVwIHRvIDIgdGltZXMgZmFzdGVyLiAoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIKKyAgaW4gOmlzc3VlOmAyNTM0OWApLgorCisqIGBgYnl0ZWFycmF5ICUgYXJnc2BgIGlzIG5vdyBiZXR3ZWVuIDIuNSBhbmQgNSB0aW1lcyBmYXN0ZXIuIChDb250cmlidXRlZCBieQorICBWaWN0b3IgU3Rpbm5lciBpbiA6aXNzdWU6YDI1Mzk5YCkuCisKKyogT3B0aW1pemUgOm1ldGg6YGJ5dGVzLmZyb21oZXhgIGFuZCA6bWV0aDpgYnl0ZWFycmF5LmZyb21oZXhgOiB0aGV5IGFyZSBub3cKKyAgYmV0d2VlbiAyeCBhbmQgMy41eCBmYXN0ZXIuIChDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lciBpbiA6aXNzdWU6YDI1NDAxYCkuCisKKyogT3B0aW1pemUgYGBieXRlcy5yZXBsYWNlKGInJywgYicuJylgYCBhbmQgYGBieXRlYXJyYXkucmVwbGFjZShiJycsIGInLicpYGA6CisgIHVwIHRvIDgwJSBmYXN0ZXIuIChDb250cmlidXRlZCBieSBKb3NoIFNuaWRlciBpbiA6aXNzdWU6YDI2NTc0YCkuCisKKyogQWxsb2NhdG9yIGZ1bmN0aW9ucyBvZiB0aGUgOmM6ZnVuYzpgUHlNZW1fTWFsbG9jYCBkb21haW4KKyAgKDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9NRU1gKSBub3cgdXNlIHRoZSA6cmVmOmBweW1hbGxvYyBtZW1vcnkgYWxsb2NhdG9yCisgIDxweW1hbGxvYz5gIGluc3RlYWQgb2YgOmM6ZnVuYzpgbWFsbG9jYCBmdW5jdGlvbiBvZiB0aGUgQyBsaWJyYXJ5LiBUaGUKKyAgcHltYWxsb2MgYWxsb2NhdG9yIGlzIG9wdGltaXplZCBmb3Igb2JqZWN0cyBzbWFsbGVyIG9yIGVxdWFsIHRvIDUxMiBieXRlcworICB3aXRoIGEgc2hvcnQgbGlmZXRpbWUsIGFuZCB1c2UgOmM6ZnVuYzpgbWFsbG9jYCBmb3IgbGFyZ2VyIG1lbW9yeSBibG9ja3MuCisgIChDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lciBpbiA6aXNzdWU6YDI2MjQ5YCkuCisKKyogOmZ1bmM6YHBpY2tsZS5sb2FkYCBhbmQgOmZ1bmM6YHBpY2tsZS5sb2Fkc2AgYXJlIG5vdyB1cCB0byAxMCUgZmFzdGVyIHdoZW4KKyAgZGVzZXJpYWxpemluZyBtYW55IHNtYWxsIG9iamVjdHMgKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyIGluCisgIDppc3N1ZTpgMjcwNTZgKS4KKworKiBQYXNzaW5nIDp0ZXJtOmBrZXl3b3JkIGFyZ3VtZW50cyA8a2V5d29yZCBhcmd1bWVudD5gIHRvIGEgZnVuY3Rpb24gaGFzIGFuCisgIG92ZXJoZWFkIGluIGNvbXBhcmlzb24gd2l0aCBwYXNzaW5nIDp0ZXJtOmBwb3NpdGlvbmFsIGFyZ3VtZW50cworICA8cG9zaXRpb25hbCBhcmd1bWVudD5gLiAgTm93IGluIGV4dGVuc2lvbiBmdW5jdGlvbnMgaW1wbGVtZW50ZWQgd2l0aCB1c2luZworICBBcmd1bWVudCBDbGluaWMgdGhpcyBvdmVyaGVhZCBpcyBzaWduaWZpY2FudGx5IGRlY3JlYXNlZC4KKyAgKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyNzU3NGApLgorCisqIE9wdGltaXplZCA6ZnVuYzpgfmdsb2IuZ2xvYmAgYW5kIDpmdW5jOmB+Z2xvYi5pZ2xvYmAgZnVuY3Rpb25zIGluIHRoZQorICA6bW9kOmBnbG9iYCBtb2R1bGU7IHRoZXkgYXJlIG5vdyBhYm91dCAzLS02IHRpbWVzIGZhc3Rlci4KKyAgKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyNTU5NmApLgorCisqIE9wdGltaXplZCBnbG9iYmluZyBpbiA6bW9kOmBwYXRobGliYCBieSB1c2luZyA6ZnVuYzpgb3Muc2NhbmRpcmA7CisgIGl0IGlzIG5vdyBhYm91dCAxLjUtLTQgdGltZXMgZmFzdGVyLgorICAoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDI2MDMyYCkuCisKKyogOmNsYXNzOmB4bWwuZXRyZWUuRWxlbWVudFRyZWVgIHBhcnNpbmcsIGl0ZXJhdGlvbiBhbmQgZGVlcGNvcHkgcGVyZm9ybWFuY2UKKyAgaGFzIGJlZW4gc2lnbmlmaWNhbnRseSBpbXByb3ZlZC4KKyAgKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyNTYzOGAsIDppc3N1ZTpgMjU4NzNgLAorICBhbmQgOmlzc3VlOmAyNTg2OWAuKQorCisqIENyZWF0aW9uIG9mIDpjbGFzczpgZnJhY3Rpb25zLkZyYWN0aW9uYCBpbnN0YW5jZXMgZnJvbSBmbG9hdHMgYW5kCisgIGRlY2ltYWxzIGlzIG5vdyAyIHRvIDMgdGltZXMgZmFzdGVyLgorICAoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDI1OTcxYC4pCisKKworQnVpbGQgYW5kIEMgQVBJIENoYW5nZXMKKz09PT09PT09PT09PT09PT09PT09PT09CisKKyogUHl0aG9uIG5vdyByZXF1aXJlcyBzb21lIEM5OSBzdXBwb3J0IGluIHRoZSB0b29sY2hhaW4gdG8gYnVpbGQuCisgIE1vc3Qgbm90YWJseSwgUHl0aG9uIG5vdyB1c2VzIHN0YW5kYXJkIGludGVnZXIgdHlwZXMgYW5kIG1hY3JvcyBpbgorICBwbGFjZSBvZiBjdXN0b20gbWFjcm9zIGxpa2UgYGBQWV9MT05HX0xPTkdgYC4KKyAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSA6cGVwOmA3YCBhbmQgOmlzc3VlOmAxNzg4NGAuCisKKyogQ3Jvc3MtY29tcGlsaW5nIENQeXRob24gd2l0aCB0aGUgQW5kcm9pZCBOREsgYW5kIHRoZSBBbmRyb2lkIEFQSSBsZXZlbCBzZXQgdG8KKyAgMjEgKEFuZHJvaWQgNS4wIExvbGxpbG9wKSBvciBncmVhdGVyIHJ1bnMgc3VjY2Vzc2Z1bGx5LiBXaGlsZSBBbmRyb2lkIGlzIG5vdAorICB5ZXQgYSBzdXBwb3J0ZWQgcGxhdGZvcm0sIHRoZSBQeXRob24gdGVzdCBzdWl0ZSBydW5zIG9uIHRoZSBBbmRyb2lkIGVtdWxhdG9yCisgIHdpdGggb25seSBhYm91dCAxNiB0ZXN0cyBmYWlsdXJlcy4gU2VlIHRoZSBBbmRyb2lkIG1ldGEtaXNzdWUgOmlzc3VlOmAyNjg2NWAuCisKKyogVGhlIGBgLS1lbmFibGUtb3B0aW1pemF0aW9uc2BgIGNvbmZpZ3VyZSBmbGFnIGhhcyBiZWVuIGFkZGVkLiBUdXJuaW5nIGl0IG9uCisgIHdpbGwgYWN0aXZhdGUgZXhwZW5zaXZlIG9wdGltaXphdGlvbnMgbGlrZSBQR08uCisgIChPcmlnaW5hbCBwYXRjaCBieSBBbGVjc2FuZHJ1IFBhdHJhc2N1IG9mIEludGVsIGluIDppc3N1ZTpgMjY1MzlgLikKKworKiBUaGUgOnRlcm06YEdJTCA8Z2xvYmFsIGludGVycHJldGVyIGxvY2s+YCBtdXN0IG5vdyBiZSBoZWxkIHdoZW4gYWxsb2NhdG9yCisgIGZ1bmN0aW9ucyBvZiA6YzpkYXRhOmBQWU1FTV9ET01BSU5fT0JKYCAoZXg6IDpjOmZ1bmM6YFB5T2JqZWN0X01hbGxvY2ApIGFuZAorICA6YzpkYXRhOmBQWU1FTV9ET01BSU5fTUVNYCAoZXg6IDpjOmZ1bmM6YFB5TWVtX01hbGxvY2ApIGRvbWFpbnMgYXJlIGNhbGxlZC4KKworKiBOZXcgOmM6ZnVuYzpgUHlfRmluYWxpemVFeGAgQVBJIHdoaWNoIGluZGljYXRlcyBpZiBmbHVzaGluZyBidWZmZXJlZCBkYXRhCisgIGZhaWxlZC4KKyAgKENvbnRyaWJ1dGVkIGJ5IE1hcnRpbiBQYW50ZXIgaW4gOmlzc3VlOmA1MzE5YC4pCisKKyogOmM6ZnVuYzpgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzYCBub3cgc3VwcG9ydHMgOnJlZjpgcG9zaXRpb25hbC1vbmx5CisgIHBhcmFtZXRlcnMgPHBvc2l0aW9uYWwtb25seV9wYXJhbWV0ZXI+YC4gIFBvc2l0aW9uYWwtb25seSBwYXJhbWV0ZXJzIGFyZQorICBkZWZpbmVkIGJ5IGVtcHR5IG5hbWVzLgorICAoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDI2MjgyYCkuCisKKyogYGBQeVRyYWNlYmFja19QcmludGBgIG1ldGhvZCBub3cgYWJicmV2aWF0ZXMgbG9uZyBzZXF1ZW5jZXMgb2YgcmVwZWF0ZWQgbGluZXMKKyAgYXMgYGAiW1ByZXZpb3VzIGxpbmUgcmVwZWF0ZWQge2NvdW50fSBtb3JlIHRpbWVzXSJgYC4KKyAgKENvbnRyaWJ1dGVkIGJ5IEVtYW51ZWwgQmFycnkgaW4gOmlzc3VlOmAyNjgyM2AuKQorCisqIFRoZSBuZXcgOmM6ZnVuYzpgUHlFcnJfU2V0SW1wb3J0RXJyb3JTdWJjbGFzc2AgZnVuY3Rpb24gYWxsb3dzIGZvcgorICBzcGVjaWZ5aW5nIGEgc3ViY2xhc3Mgb2YgOmV4YzpgSW1wb3J0RXJyb3JgIHRvIHJhaXNlLgorICAoQ29udHJpYnV0ZWQgYnkgRXJpYyBTbm93IGluIDppc3N1ZTpgMTU3NjdgLikKKworKiBUaGUgbmV3IDpjOmZ1bmM6YFB5RXJyX1Jlc291cmNlV2FybmluZ2AgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gZ2VuZXJhdGUKKyAgYSA6ZXhjOmBSZXNvdXJjZVdhcm5pbmdgIHByb3ZpZGluZyB0aGUgc291cmNlIG9mIHRoZSByZXNvdXJjZSBhbGxvY2F0aW9uLgorICAoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAyNjU2N2AuKQorCisqIFRoZSBuZXcgOmM6ZnVuYzpgUHlPU19GU1BhdGhgIGZ1bmN0aW9uIHJldHVybnMgdGhlIGZpbGUgc3lzdGVtCisgIHJlcHJlc2VudGF0aW9uIG9mIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorICAoQ29udHJpYnV0ZWQgYnkgQnJldHQgQ2Fubm9uIGluIDppc3N1ZTpgMjcxODZgLikKKworKiBUaGUgOmM6ZnVuYzpgUHlVbmljb2RlX0ZTQ29udmVydGVyYCBhbmQgOmM6ZnVuYzpgUHlVbmljb2RlX0ZTRGVjb2RlcmAKKyAgZnVuY3Rpb25zIHdpbGwgbm93IGFjY2VwdCA6dGVybTpgcGF0aC1saWtlIG9iamVjdHMgPHBhdGgtbGlrZSBvYmplY3Q+YC4KKworCitPdGhlciBJbXByb3ZlbWVudHMKKz09PT09PT09PT09PT09PT09PQorCisqIFdoZW4gOm9wdGlvbjpgLS12ZXJzaW9uYCAoc2hvcnQgZm9ybTogOm9wdGlvbjpgLVZgKSBpcyBzdXBwbGllZCB0d2ljZSwKKyAgUHl0aG9uIHByaW50cyA6ZGF0YTpgc3lzLnZlcnNpb25gIGZvciBkZXRhaWxlZCBpbmZvcm1hdGlvbi4KKworICAuLiBjb2RlLWJsb2NrOjogc2hlbGwtc2Vzc2lvbgorCisgICAgJCAuL3B5dGhvbiAtVlYKKyAgICBQeXRob24gMy42LjBiNCsgKDMuNjoyMjM5NjdiNDllNDkrLCBOb3YgMjEgMjAxNiwgMjA6NTU6MDQpCisgICAgW0dDQyA0LjIuMSBDb21wYXRpYmxlIEFwcGxlIExMVk0gOC4wLjAgKGNsYW5nLTgwMC4wLjQyLjEpXQorCisKK0RlcHJlY2F0ZWQKKz09PT09PT09PT0KKworTmV3IEtleXdvcmRzCistLS0tLS0tLS0tLS0KKworYGBhc3luY2BgIGFuZCBgYGF3YWl0YGAgYXJlIG5vdCByZWNvbW1lbmRlZCB0byBiZSB1c2VkIGFzIHZhcmlhYmxlLCBjbGFzcywKK2Z1bmN0aW9uIG9yIG1vZHVsZSBuYW1lcy4gIEludHJvZHVjZWQgYnkgOnBlcDpgNDkyYCBpbiBQeXRob24gMy41LCB0aGV5IHdpbGwKK2JlY29tZSBwcm9wZXIga2V5d29yZHMgaW4gUHl0aG9uIDMuNy4gIFN0YXJ0aW5nIGluIFB5dGhvbiAzLjYsIHRoZSB1c2Ugb2YKK2BgYXN5bmNgYCBvciBgYGF3YWl0YGAgYXMgbmFtZXMgd2lsbCBnZW5lcmF0ZSBhIDpleGM6YERlcHJlY2F0aW9uV2FybmluZ2AuCisKKworRGVwcmVjYXRlZCBQeXRob24gYmVoYXZpb3IKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1JhaXNpbmcgdGhlIDpleGM6YFN0b3BJdGVyYXRpb25gIGV4Y2VwdGlvbiBpbnNpZGUgYSBnZW5lcmF0b3Igd2lsbCBub3cKK2dlbmVyYXRlIGEgOmV4YzpgRGVwcmVjYXRpb25XYXJuaW5nYCwgYW5kIHdpbGwgdHJpZ2dlciBhIDpleGM6YFJ1bnRpbWVFcnJvcmAKK2luIFB5dGhvbiAzLjcuICBTZWUgOnJlZjpgd2hhdHNuZXctcGVwLTQ3OWAgZm9yIGRldGFpbHMuCisKK1RoZSA6bWV0aDpgX19haXRlcl9fYCBtZXRob2QgaXMgbm93IGV4cGVjdGVkIHRvIHJldHVybiBhbiBhc3luY2hyb25vdXMKK2l0ZXJhdG9yIGRpcmVjdGx5IGluc3RlYWQgb2YgcmV0dXJuaW5nIGFuIGF3YWl0YWJsZSBhcyBwcmV2aW91c2x5LgorRG9pbmcgdGhlIGZvcm1lciB3aWxsIHRyaWdnZXIgYSA6ZXhjOmBEZXByZWNhdGlvbldhcm5pbmdgLiAgQmFja3dhcmQKK2NvbXBhdGliaWxpdHkgd2lsbCBiZSByZW1vdmVkIGluIFB5dGhvbiAzLjcuCisoQ29udHJpYnV0ZWQgYnkgWXVyeSBTZWxpdmFub3YgaW4gOmlzc3VlOmAyNzI0M2AuKQorCitBIGJhY2tzbGFzaC1jaGFyYWN0ZXIgcGFpciB0aGF0IGlzIG5vdCBhIHZhbGlkIGVzY2FwZSBzZXF1ZW5jZSBub3cgZ2VuZXJhdGVzCithIDpleGM6YERlcHJlY2F0aW9uV2FybmluZ2AuICBBbHRob3VnaCB0aGlzIHdpbGwgZXZlbnR1YWxseSBiZWNvbWUgYQorOmV4YzpgU3ludGF4RXJyb3JgLCB0aGF0IHdpbGwgbm90IGJlIGZvciBzZXZlcmFsIFB5dGhvbiByZWxlYXNlcy4KKyhDb250cmlidXRlZCBieSBFbWFudWVsIEJhcnJ5IGluIDppc3N1ZTpgMjczNjRgLikKKworV2hlbiBwZXJmb3JtaW5nIGEgcmVsYXRpdmUgaW1wb3J0LCBmYWxsaW5nIGJhY2sgb24gYGBfX25hbWVfX2BgIGFuZAorYGBfX3BhdGhfX2BgIGZyb20gdGhlIGNhbGxpbmcgbW9kdWxlIHdoZW4gYGBfX3NwZWNfX2BgIG9yCitgYF9fcGFja2FnZV9fYGAgYXJlIG5vdCBkZWZpbmVkIG5vdyByYWlzZXMgYW4gOmV4YzpgSW1wb3J0V2FybmluZ2AuCisoQ29udHJpYnV0ZWQgYnkgUm9zZSBBbWVzIGluIDppc3N1ZTpgMjU3OTFgLikKKworCitEZXByZWNhdGVkIFB5dGhvbiBtb2R1bGVzLCBmdW5jdGlvbnMgYW5kIG1ldGhvZHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCithc3luY2hhdAorfn5+fn5+fn4KKworVGhlIDptb2Q6YGFzeW5jaGF0YCBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm9yIG9mIDptb2Q6YGFzeW5jaW9gLgorKENvbnRyaWJ1dGVkIGJ5IE1hcmlhdHRhIGluIDppc3N1ZTpgMjUwMDJgLikKKworCithc3luY29yZQorfn5+fn5+fn4KKworVGhlIDptb2Q6YGFzeW5jb3JlYCBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm9yIG9mIDptb2Q6YGFzeW5jaW9gLgorKENvbnRyaWJ1dGVkIGJ5IE1hcmlhdHRhIGluIDppc3N1ZTpgMjUwMDJgLikKKworCitkYm0KK35+fgorCitVbmxpa2Ugb3RoZXIgOm1vZDpgZGJtYCBpbXBsZW1lbnRhdGlvbnMsIHRoZSA6bW9kOmBkYm0uZHVtYmAgbW9kdWxlCitjcmVhdGVzIGRhdGFiYXNlcyB3aXRoIHRoZSBgYCdydydgYCBtb2RlIGFuZCBhbGxvd3MgbW9kaWZ5aW5nIHRoZSBkYXRhYmFzZQorb3BlbmVkIHdpdGggdGhlIGBgJ3InYGAgbW9kZS4gIFRoaXMgYmVoYXZpb3IgaXMgbm93IGRlcHJlY2F0ZWQgYW5kIHdpbGwKK2JlIHJlbW92ZWQgaW4gMy44LgorKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyMTcwOGAuKQorCisKK2Rpc3R1dGlscworfn5+fn5+fn5+CisKK1RoZSB1bmRvY3VtZW50ZWQgYGBleHRyYV9wYXRoYGAgYXJndW1lbnQgdG8gdGhlCis6Y2xhc3M6YH5kaXN0dXRpbHMuRGlzdHJpYnV0aW9uYCBjb25zdHJ1Y3RvciBpcyBub3cgY29uc2lkZXJlZCBkZXByZWNhdGVkCithbmQgd2lsbCByYWlzZSBhIHdhcm5pbmcgaWYgc2V0LiAgIFN1cHBvcnQgZm9yIHRoaXMgcGFyYW1ldGVyIHdpbGwgYmUKK3JlbW92ZWQgaW4gYSBmdXR1cmUgUHl0aG9uIHJlbGVhc2UuICBTZWUgOmlzc3VlOmAyNzkxOWAgZm9yIGRldGFpbHMuCisKKworZ3JwCit+fn4KKworVGhlIHN1cHBvcnQgb2Ygbm9uLWludGVnZXIgYXJndW1lbnRzIGluIDpmdW5jOmB+Z3JwLmdldGdyZ2lkYCBoYXMgYmVlbgorZGVwcmVjYXRlZC4KKyhDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjYxMjlgLikKKworCitpbXBvcnRsaWIKK35+fn5+fn5+fgorCitUaGUgOm1ldGg6YGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlci5sb2FkX21vZHVsZWAgYW5kCis6bWV0aDpgaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VsZXNzRmlsZUxvYWRlci5sb2FkX21vZHVsZWAgbWV0aG9kcworYXJlIG5vdyBkZXByZWNhdGVkLiBUaGV5IHdlcmUgdGhlIG9ubHkgcmVtYWluaW5nIGltcGxlbWVudGF0aW9ucyBvZgorOm1ldGg6YGltcG9ydGxpYi5hYmMuTG9hZGVyLmxvYWRfbW9kdWxlYCBpbiA6bW9kOmBpbXBvcnRsaWJgIHRoYXQgaGFkIG5vdAorYmVlbiBkZXByZWNhdGVkIGluIHByZXZpb3VzIHZlcnNpb25zIG9mIFB5dGhvbiBpbiBmYXZvdXIgb2YKKzptZXRoOmBpbXBvcnRsaWIuYWJjLkxvYWRlci5leGVjX21vZHVsZWAuCisKK1RoZSA6Y2xhc3M6YGltcG9ydGxpYi5tYWNoaW5lcnkuV2luZG93c1JlZ2lzdHJ5RmluZGVyYCBjbGFzcyBpcyBub3cKK2RlcHJlY2F0ZWQuIEFzIG9mIDMuNi4wLCBpdCBpcyBzdGlsbCBhZGRlZCB0byA6YXR0cjpgc3lzLm1ldGFfcGF0aGAgYnkKK2RlZmF1bHQgKG9uIFdpbmRvd3MpLCBidXQgdGhpcyBtYXkgY2hhbmdlIGluIGZ1dHVyZSByZWxlYXNlcy4KKworb3MKK35+CisKK1VuZG9jdW1lbnRlZCBzdXBwb3J0IG9mIGdlbmVyYWwgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0cyA8Ynl0ZXMtbGlrZSBvYmplY3Q+YAorYXMgcGF0aHMgaW4gOm1vZDpgb3NgIGZ1bmN0aW9ucywgOmZ1bmM6YGNvbXBpbGVgIGFuZCBzaW1pbGFyIGZ1bmN0aW9ucyBpcworbm93IGRlcHJlY2F0ZWQuCisoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDI1NzkxYCBhbmQgOmlzc3VlOmAyNjc1NGAuKQorCityZQorfn4KKworU3VwcG9ydCBmb3IgaW5saW5lIGZsYWdzIGBgKD9sZXR0ZXJzKWBgIGluIHRoZSBtaWRkbGUgb2YgdGhlIHJlZ3VsYXIKK2V4cHJlc3Npb24gaGFzIGJlZW4gZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIFB5dGhvbgordmVyc2lvbi4gIEZsYWdzIGF0IHRoZSBzdGFydCBvZiBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBhcmUgc3RpbGwgYWxsb3dlZC4KKyhDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjI0OTNgLikKKworc3NsCit+fn4KKworT3BlblNTTCAwLjkuOCwgMS4wLjAgYW5kIDEuMC4xIGFyZSBkZXByZWNhdGVkIGFuZCBubyBsb25nZXIgc3VwcG9ydGVkLgorSW4gdGhlIGZ1dHVyZSB0aGUgOm1vZDpgc3NsYCBtb2R1bGUgd2lsbCByZXF1aXJlIGF0IGxlYXN0IE9wZW5TU0wgMS4wLjIgb3IKKzEuMS4wLgorCitTU0wtcmVsYXRlZCBhcmd1bWVudHMgbGlrZSBgYGNlcnRmaWxlYGAsIGBga2V5ZmlsZWBgIGFuZCBgYGNoZWNrX2hvc3RuYW1lYGAKK2luIDptb2Q6YGZ0cGxpYmAsIDptb2Q6YGh0dHAuY2xpZW50YCwgOm1vZDpgaW1hcGxpYmAsIDptb2Q6YHBvcGxpYmAsCithbmQgOm1vZDpgc210cGxpYmAgaGF2ZSBiZWVuIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgYGBjb250ZXh0YGAuCisoQ29udHJpYnV0ZWQgYnkgQ2hyaXN0aWFuIEhlaW1lcyBpbiA6aXNzdWU6YDI4MDIyYC4pCisKK0EgY291cGxlIG9mIHByb3RvY29scyBhbmQgZnVuY3Rpb25zIG9mIHRoZSA6bW9kOmBzc2xgIG1vZHVsZSBhcmUgbm93CitkZXByZWNhdGVkLiBTb21lIGZlYXR1cmVzIHdpbGwgbm8gbG9uZ2VyIGJlIGF2YWlsYWJsZSBpbiBmdXR1cmUgdmVyc2lvbnMKK29mIE9wZW5TU0wuIE90aGVyIGZlYXR1cmVzIGFyZSBkZXByZWNhdGVkIGluIGZhdm9yIG9mIGEgZGlmZmVyZW50IEFQSS4KKyhDb250cmlidXRlZCBieSBDaHJpc3RpYW4gSGVpbWVzIGluIDppc3N1ZTpgMjgwMjJgIGFuZCA6aXNzdWU6YDI2NDcwYC4pCisKK3RraW50ZXIKK35+fn5+fn4KKworVGhlIDptb2Q6YHRraW50ZXIudGl4YCBtb2R1bGUgaXMgbm93IGRlcHJlY2F0ZWQuICA6bW9kOmB0a2ludGVyYCB1c2Vycworc2hvdWxkIHVzZSA6bW9kOmB0a2ludGVyLnR0a2AgaW5zdGVhZC4KKwordmVudgorfn5+fgorCitUaGUgYGBweXZlbnZgYCBzY3JpcHQgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgYGBweXRob24zIC1tIHZlbnZgYC4KK1RoaXMgcHJldmVudHMgY29uZnVzaW9uIGFzIHRvIHdoYXQgUHl0aG9uIGludGVycHJldGVyIGBgcHl2ZW52YGAgaXMKK2Nvbm5lY3RlZCB0byBhbmQgdGh1cyB3aGF0IFB5dGhvbiBpbnRlcnByZXRlciB3aWxsIGJlIHVzZWQgYnkgdGhlIHZpcnR1YWwKK2Vudmlyb25tZW50LiAgKENvbnRyaWJ1dGVkIGJ5IEJyZXR0IENhbm5vbiBpbiA6aXNzdWU6YDI1MTU0YC4pCisKKworRGVwcmVjYXRlZCBmdW5jdGlvbnMgYW5kIHR5cGVzIG9mIHRoZSBDIEFQSQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitVbmRvY3VtZW50ZWQgZnVuY3Rpb25zIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc0VuY29kZWRPYmplY3RgLAorOmM6ZnVuYzpgUHlVbmljb2RlX0FzRGVjb2RlZE9iamVjdGAsIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc0VuY29kZWRVbmljb2RlYAorYW5kIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc0RlY29kZWRVbmljb2RlYCBhcmUgZGVwcmVjYXRlZCBub3cuCitVc2UgdGhlIDpyZWY6YGdlbmVyaWMgY29kZWMgYmFzZWQgQVBJIDxjb2RlYy1yZWdpc3RyeT5gIGluc3RlYWQuCisKKworRGVwcmVjYXRlZCBCdWlsZCBPcHRpb25zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGBgLS13aXRoLXN5c3RlbS1mZmlgYCBjb25maWd1cmUgZmxhZyBpcyBub3cgb24gYnkgZGVmYXVsdCBvbiBub24tbWFjT1MKK1VOSVggcGxhdGZvcm1zLiAgSXQgbWF5IGJlIGRpc2FibGVkIGJ5IHVzaW5nIGBgLS13aXRob3V0LXN5c3RlbS1mZmlgYCwgYnV0Cit1c2luZyB0aGUgZmxhZyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIG5vdCBiZSBhY2NlcHRlZCBpbiBQeXRob24gMy43LgorbWFjT1MgaXMgdW5hZmZlY3RlZCBieSB0aGlzIGNoYW5nZS4gIE5vdGUgdGhhdCBtYW55IE9TIGRpc3RyaWJ1dG9ycyBhbHJlYWR5Cit1c2UgdGhlIGBgLS13aXRoLXN5c3RlbS1mZmlgYCBmbGFnIHdoZW4gYnVpbGRpbmcgdGhlaXIgc3lzdGVtIFB5dGhvbi4KKworCitSZW1vdmVkCis9PT09PT09CisKK0FQSSBhbmQgRmVhdHVyZSBSZW1vdmFscworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyogVW5rbm93biBlc2NhcGVzIGNvbnNpc3Rpbmcgb2YgYGAnXCdgYCBhbmQgYW4gQVNDSUkgbGV0dGVyIGluCisgIHJlZ3VsYXIgZXhwcmVzc2lvbnMgd2lsbCBub3cgY2F1c2UgYW4gZXJyb3IuICBJbiByZXBsYWNlbWVudCB0ZW1wbGF0ZXMgZm9yCisgIDpmdW5jOmByZS5zdWJgIHRoZXkgYXJlIHN0aWxsIGFsbG93ZWQsIGJ1dCBkZXByZWNhdGVkLgorICBUaGUgOmNvbnN0OmByZS5MT0NBTEVgIGZsYWcgY2FuIG5vdyBvbmx5IGJlIHVzZWQgd2l0aCBiaW5hcnkgcGF0dGVybnMuCisKKyogYGBpbnNwZWN0LmdldG1vZHVsZWluZm8oKWBgIHdhcyByZW1vdmVkICh3YXMgZGVwcmVjYXRlZCBzaW5jZSBDUHl0aG9uIDMuMykuCisgIDpmdW5jOmBpbnNwZWN0LmdldG1vZHVsZW5hbWVgIHNob3VsZCBiZSB1c2VkIGZvciBvYnRhaW5pbmcgdGhlIG1vZHVsZQorICBuYW1lIGZvciBhIGdpdmVuIHBhdGguCisgIChDb250cmlidXRlZCBieSBZdXJ5IFNlbGl2YW5vdiBpbiA6aXNzdWU6YDEzMjQ4YC4pCisKKyogYGB0cmFjZWJhY2suSWdub3JlYGAgY2xhc3MgYW5kIGBgdHJhY2ViYWNrLnVzYWdlYGAsIGBgdHJhY2ViYWNrLm1vZG5hbWVgYCwKKyAgYGB0cmFjZWJhY2suZnVsbG1vZG5hbWVgYCwgYGB0cmFjZWJhY2suZmluZF9saW5lc19mcm9tX2NvZGVgYCwKKyAgYGB0cmFjZWJhY2suZmluZF9saW5lc2BgLCBgYHRyYWNlYmFjay5maW5kX3N0cmluZ3NgYCwKKyAgYGB0cmFjZWJhY2suZmluZF9leGVjdXRhYmxlX2xpbmVzYGAgbWV0aG9kcyB3ZXJlIHJlbW92ZWQgZnJvbSB0aGUKKyAgOm1vZDpgdHJhY2ViYWNrYCBtb2R1bGUuIFRoZXkgd2VyZSB1bmRvY3VtZW50ZWQgbWV0aG9kcyBkZXByZWNhdGVkIHNpbmNlCisgIFB5dGhvbiAzLjIgYW5kIGVxdWl2YWxlbnQgZnVuY3Rpb25hbGl0eSBpcyBhdmFpbGFibGUgZnJvbSBwcml2YXRlIG1ldGhvZHMuCisKKyogVGhlIGBgdGtfbWVudUJhcigpYGAgYW5kIGBgdGtfYmluZEZvclRyYXZlcnNhbCgpYGAgZHVtbXkgbWV0aG9kcyBpbgorICA6bW9kOmB0a2ludGVyYCB3aWRnZXQgY2xhc3NlcyB3ZXJlIHJlbW92ZWQgKGNvcnJlc3BvbmRpbmcgVGsgY29tbWFuZHMKKyAgd2VyZSBvYnNvbGV0ZSBzaW5jZSBUayA0LjApLgorCisqIFRoZSA6bWV0aDpgfnppcGZpbGUuWmlwRmlsZS5vcGVuYCBtZXRob2Qgb2YgdGhlIDpjbGFzczpgemlwZmlsZS5aaXBGaWxlYAorICBjbGFzcyBubyBsb25nZXIgc3VwcG9ydHMgdGhlIGBgJ1UnYGAgbW9kZSAod2FzIGRlcHJlY2F0ZWQgc2luY2UgUHl0aG9uIDMuNCkuCisgIFVzZSA6Y2xhc3M6YGlvLlRleHRJT1dyYXBwZXJgIGZvciByZWFkaW5nIGNvbXByZXNzZWQgdGV4dCBmaWxlcyBpbgorICA6dGVybTpgdW5pdmVyc2FsIG5ld2xpbmVzYCBtb2RlLgorCisqIFRoZSB1bmRvY3VtZW50ZWQgYGBJTmBgLCBgYENEUk9NYGAsIGBgRExGQ05gYCwgYGBUWVBFU2BgLCBgYENESU9gYCwgYW5kCisgIGBgU1RST1BUU2BgIG1vZHVsZXMgaGF2ZSBiZWVuIHJlbW92ZWQuICBUaGV5IGhhZCBiZWVuIGF2YWlsYWJsZSBpbiB0aGUKKyAgcGxhdGZvcm0gc3BlY2lmaWMgYGBMaWIvcGxhdC0qL2BgIGRpcmVjdG9yaWVzLCBidXQgd2VyZSBjaHJvbmljYWxseSBvdXQgb2YKKyAgZGF0ZSwgaW5jb25zaXN0ZW50bHkgYXZhaWxhYmxlIGFjcm9zcyBwbGF0Zm9ybXMsIGFuZCB1bm1haW50YWluZWQuICBUaGUKKyAgc2NyaXB0IHRoYXQgY3JlYXRlZCB0aGVzZSBtb2R1bGVzIGlzIHN0aWxsIGF2YWlsYWJsZSBpbiB0aGUgc291cmNlCisgIGRpc3RyaWJ1dGlvbiBhdCA6c291cmNlOmBUb29scy9zY3JpcHRzL2gycHkucHlgLgorCisqIFRoZSBkZXByZWNhdGVkIGBgYXN5bmNoYXQuZmlmb2BgIGNsYXNzIGhhcyBiZWVuIHJlbW92ZWQuCisKKworUG9ydGluZyB0byBQeXRob24gMy42Cis9PT09PT09PT09PT09PT09PT09PT0KKworVGhpcyBzZWN0aW9uIGxpc3RzIHByZXZpb3VzbHkgZGVzY3JpYmVkIGNoYW5nZXMgYW5kIG90aGVyIGJ1Z2ZpeGVzCit0aGF0IG1heSByZXF1aXJlIGNoYW5nZXMgdG8geW91ciBjb2RlLgorCitDaGFuZ2VzIGluICdweXRob24nIENvbW1hbmQgQmVoYXZpb3IKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisqIFRoZSBvdXRwdXQgb2YgYSBzcGVjaWFsIFB5dGhvbiBidWlsZCB3aXRoIGRlZmluZWQgYGBDT1VOVF9BTExPQ1NgYCwKKyAgYGBTSE9XX0FMTE9DX0NPVU5UYGAgb3IgYGBTSE9XX1RSQUNLX0NPVU5UYGAgbWFjcm9zIGlzIG5vdyBvZmYgYnkKKyAgZGVmYXVsdC4gIEl0IGNhbiBiZSByZS1lbmFibGVkIHVzaW5nIHRoZSBgYC1YIHNob3dhbGxvY2NvdW50YGAgb3B0aW9uLgorICBJdCBub3cgb3V0cHV0cyB0byBgYHN0ZGVycmBgIGluc3RlYWQgb2YgYGBzdGRvdXRgYC4KKyAgKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyMzAzNGAuKQorCisKK0NoYW5nZXMgaW4gdGhlIFB5dGhvbiBBUEkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKiA6ZnVuYzpgb3BlbigpIDxvcGVuPmAgd2lsbCBubyBsb25nZXIgYWxsb3cgY29tYmluaW5nIHRoZSBgYCdVJ2BgIG1vZGUgZmxhZworICB3aXRoIGBgJysnYGAuCisgIChDb250cmlidXRlZCBieSBKZWZmIEJhbG9naCBhbmQgSm9obiBPJ0Nvbm5vciBpbiA6aXNzdWU6YDIwOTFgLikKKworKiA6bW9kOmBzcWxpdGUzYCBubyBsb25nZXIgaW1wbGljaXRseSBjb21taXRzIGFuIG9wZW4gdHJhbnNhY3Rpb24gYmVmb3JlIERETAorICBzdGF0ZW1lbnRzLgorCisqIE9uIExpbnV4LCA6ZnVuYzpgb3MudXJhbmRvbWAgbm93IGJsb2NrcyB1bnRpbCB0aGUgc3lzdGVtIHVyYW5kb20gZW50cm9weSBwb29sCisgIGlzIGluaXRpYWxpemVkIHRvIGluY3JlYXNlIHRoZSBzZWN1cml0eS4KKworKiBXaGVuIDptZXRoOmBpbXBvcnRsaWIuYWJjLkxvYWRlci5leGVjX21vZHVsZWAgaXMgZGVmaW5lZCwKKyAgOm1ldGg6YGltcG9ydGxpYi5hYmMuTG9hZGVyLmNyZWF0ZV9tb2R1bGVgIG11c3QgYWxzbyBiZSBkZWZpbmVkLgorCisqIDpjOmZ1bmM6YFB5RXJyX1NldEltcG9ydEVycm9yYCBub3cgc2V0cyA6ZXhjOmBUeXBlRXJyb3JgIHdoZW4gaXRzICoqbXNnKioKKyAgYXJndW1lbnQgaXMgbm90IHNldC4gUHJldmlvdXNseSBvbmx5IGBgTlVMTGBgIHdhcyByZXR1cm5lZC4KKworKiBUaGUgZm9ybWF0IG9mIHRoZSBgYGNvX2xub3RhYmBgIGF0dHJpYnV0ZSBvZiBjb2RlIG9iamVjdHMgY2hhbmdlZCB0byBzdXBwb3J0CisgIGEgbmVnYXRpdmUgbGluZSBudW1iZXIgZGVsdGEuIEJ5IGRlZmF1bHQsIFB5dGhvbiBkb2VzIG5vdCBlbWl0IGJ5dGVjb2RlIHdpdGgKKyAgYSBuZWdhdGl2ZSBsaW5lIG51bWJlciBkZWx0YS4gRnVuY3Rpb25zIHVzaW5nIGBgZnJhbWUuZl9saW5lbm9gYCwKKyAgYGBQeUZyYW1lX0dldExpbmVOdW1iZXIoKWBgIG9yIGBgUHlDb2RlX0FkZHIyTGluZSgpYGAgYXJlIG5vdCBhZmZlY3RlZC4KKyAgRnVuY3Rpb25zIGRpcmVjdGx5IGRlY29kaW5nIGBgY29fbG5vdGFiYGAgc2hvdWxkIGJlIHVwZGF0ZWQgdG8gdXNlIGEgc2lnbmVkCisgIDgtYml0IGludGVnZXIgdHlwZSBmb3IgdGhlIGxpbmUgbnVtYmVyIGRlbHRhLCBidXQgdGhpcyBpcyBvbmx5IHJlcXVpcmVkIHRvCisgIHN1cHBvcnQgYXBwbGljYXRpb25zIHVzaW5nIGEgbmVnYXRpdmUgbGluZSBudW1iZXIgZGVsdGEuIFNlZQorICBgYE9iamVjdHMvbG5vdGFiX25vdGVzLnR4dGBgIGZvciB0aGUgYGBjb19sbm90YWJgYCBmb3JtYXQgYW5kIGhvdyB0byBkZWNvZGUKKyAgaXQsIGFuZCBzZWUgdGhlIDpwZXA6YDUxMWAgZm9yIHRoZSByYXRpb25hbGUuCisKKyogVGhlIGZ1bmN0aW9ucyBpbiB0aGUgOm1vZDpgY29tcGlsZWFsbGAgbW9kdWxlIG5vdyByZXR1cm4gYm9vbGVhbnMgaW5zdGVhZAorICBvZiBgYDFgYCBvciBgYDBgYCB0byByZXByZXNlbnQgc3VjY2VzcyBvciBmYWlsdXJlLCByZXNwZWN0aXZlbHkuIFRoYW5rcyB0bworICBib29sZWFucyBiZWluZyBhIHN1YmNsYXNzIG9mIGludGVnZXJzLCB0aGlzIHNob3VsZCBvbmx5IGJlIGFuIGlzc3VlIGlmIHlvdQorICB3ZXJlIGRvaW5nIGlkZW50aXR5IGNoZWNrcyBmb3IgYGAxYGAgb3IgYGAwYGAuIFNlZSA6aXNzdWU6YDI1NzY4YC4KKworKiBSZWFkaW5nIHRoZSA6YXR0cjpgfnVybGxpYi5wYXJzZS5TcGxpdFJlc3VsdC5wb3J0YCBhdHRyaWJ1dGUgb2YKKyAgOmZ1bmM6YHVybGxpYi5wYXJzZS51cmxzcGxpdGAgYW5kIDpmdW5jOmB+dXJsbGliLnBhcnNlLnVybHBhcnNlYCByZXN1bHRzCisgIG5vdyByYWlzZXMgOmV4YzpgVmFsdWVFcnJvcmAgZm9yIG91dC1vZi1yYW5nZSB2YWx1ZXMsIHJhdGhlciB0aGFuCisgIHJldHVybmluZyA6Y29uc3Q6YE5vbmVgLiAgU2VlIDppc3N1ZTpgMjAwNTlgLgorCisqIFRoZSA6bW9kOmBpbXBgIG1vZHVsZSBub3cgcmFpc2VzIGEgOmV4YzpgRGVwcmVjYXRpb25XYXJuaW5nYCBpbnN0ZWFkIG9mCisgIDpleGM6YFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmdgLgorCisqIFRoZSBmb2xsb3dpbmcgbW9kdWxlcyBoYXZlIGhhZCBtaXNzaW5nIEFQSXMgYWRkZWQgdG8gdGhlaXIgOmF0dHI6YF9fYWxsX19gCisgIGF0dHJpYnV0ZXMgdG8gbWF0Y2ggdGhlIGRvY3VtZW50ZWQgQVBJczoKKyAgOm1vZDpgY2FsZW5kYXJgLCA6bW9kOmBjZ2lgLCA6bW9kOmBjc3ZgLAorICA6bW9kOmB+eG1sLmV0cmVlLkVsZW1lbnRUcmVlYCwgOm1vZDpgZW51bWAsCisgIDptb2Q6YGZpbGVpbnB1dGAsIDptb2Q6YGZ0cGxpYmAsIDptb2Q6YGxvZ2dpbmdgLCA6bW9kOmBtYWlsYm94YCwKKyAgOm1vZDpgbWltZXR5cGVzYCwgOm1vZDpgb3B0cGFyc2VgLCA6bW9kOmBwbGlzdGxpYmAsIDptb2Q6YHNtdHBkYCwKKyAgOm1vZDpgc3VicHJvY2Vzc2AsIDptb2Q6YHRhcmZpbGVgLCA6bW9kOmB0aHJlYWRpbmdgIGFuZAorICA6bW9kOmB3YXZlYC4gIFRoaXMgbWVhbnMgdGhleSB3aWxsIGV4cG9ydCBuZXcgc3ltYm9scyB3aGVuIGBgaW1wb3J0ICpgYAorICBpcyB1c2VkLgorICAoQ29udHJpYnV0ZWQgYnkgSm9lbCBUYWRkZWkgYW5kIEphY2VrIEtvxYJvZHppZWogaW4gOmlzc3VlOmAyMzg4M2AuKQorCisqIFdoZW4gcGVyZm9ybWluZyBhIHJlbGF0aXZlIGltcG9ydCwgaWYgYGBfX3BhY2thZ2VfX2BgIGRvZXMgbm90IGNvbXBhcmUgZXF1YWwKKyAgdG8gYGBfX3NwZWNfXy5wYXJlbnRgYCB0aGVuIDpleGM6YEltcG9ydFdhcm5pbmdgIGlzIHJhaXNlZC4KKyAgKENvbnRyaWJ1dGVkIGJ5IEJyZXR0IENhbm5vbiBpbiA6aXNzdWU6YDI1NzkxYC4pCisKKyogV2hlbiBhIHJlbGF0aXZlIGltcG9ydCBpcyBwZXJmb3JtZWQgYW5kIG5vIHBhcmVudCBwYWNrYWdlIGlzIGtub3duLCB0aGVuCisgIDpleGM6YEltcG9ydEVycm9yYCB3aWxsIGJlIHJhaXNlZC4gUHJldmlvdXNseSwgOmV4YzpgU3lzdGVtRXJyb3JgIGNvdWxkIGJlCisgIHJhaXNlZC4gKENvbnRyaWJ1dGVkIGJ5IEJyZXR0IENhbm5vbiBpbiA6aXNzdWU6YDE4MDE4YC4pCisKKyogU2VydmVycyBiYXNlZCBvbiB0aGUgOm1vZDpgc29ja2V0c2VydmVyYCBtb2R1bGUsIGluY2x1ZGluZyB0aG9zZQorICBkZWZpbmVkIGluIDptb2Q6YGh0dHAuc2VydmVyYCwgOm1vZDpgeG1scnBjLnNlcnZlcmAgYW5kCisgIDptb2Q6YHdzZ2lyZWYuc2ltcGxlX3NlcnZlcmAsIG5vdyBvbmx5IGNhdGNoIGV4Y2VwdGlvbnMgZGVyaXZlZAorICBmcm9tIDpleGM6YEV4Y2VwdGlvbmAuIFRoZXJlZm9yZSBpZiBhIHJlcXVlc3QgaGFuZGxlciByYWlzZXMKKyAgYW4gZXhjZXB0aW9uIGxpa2UgOmV4YzpgU3lzdGVtRXhpdGAgb3IgOmV4YzpgS2V5Ym9hcmRJbnRlcnJ1cHRgLAorICA6bWV0aDpgfnNvY2tldHNlcnZlci5CYXNlU2VydmVyLmhhbmRsZV9lcnJvcmAgaXMgbm8gbG9uZ2VyIGNhbGxlZCwgYW5kCisgIHRoZSBleGNlcHRpb24gd2lsbCBzdG9wIGEgc2luZ2xlLXRocmVhZGVkIHNlcnZlci4gKENvbnRyaWJ1dGVkIGJ5CisgIE1hcnRpbiBQYW50ZXIgaW4gOmlzc3VlOmAyMzQzMGAuKQorCisqIDpmdW5jOmBzcHdkLmdldHNwbmFtYCBub3cgcmFpc2VzIGEgOmV4YzpgUGVybWlzc2lvbkVycm9yYCBpbnN0ZWFkIG9mCisgIDpleGM6YEtleUVycm9yYCBpZiB0aGUgdXNlciBkb2Vzbid0IGhhdmUgcHJpdmlsZWdlcy4KKworKiBUaGUgOm1ldGg6YHNvY2tldC5zb2NrZXQuY2xvc2VgIG1ldGhvZCBub3cgcmFpc2VzIGFuIGV4Y2VwdGlvbiBpZgorICBhbiBlcnJvciAoZS5nLiBgYEVCQURGYGApIHdhcyByZXBvcnRlZCBieSB0aGUgdW5kZXJseWluZyBzeXN0ZW0gY2FsbC4KKyAgKENvbnRyaWJ1dGVkIGJ5IE1hcnRpbiBQYW50ZXIgaW4gOmlzc3VlOmAyNjY4NWAuKQorCisqIFRoZSAqZGVjb2RlX2RhdGEqIGFyZ3VtZW50IGZvciB0aGUgOmNsYXNzOmBzbXRwZC5TTVRQQ2hhbm5lbGAgYW5kCisgIDpjbGFzczpgc210cGQuU01UUFNlcnZlcmAgY29uc3RydWN0b3JzIGlzIG5vdyBgYEZhbHNlYGAgYnkgZGVmYXVsdC4KKyAgVGhpcyBtZWFucyB0aGF0IHRoZSBhcmd1bWVudCBwYXNzZWQgdG8KKyAgOm1ldGg6YH5zbXRwZC5TTVRQU2VydmVyLnByb2Nlc3NfbWVzc2FnZWAgaXMgbm93IGEgYnl0ZXMgb2JqZWN0IGJ5CisgIGRlZmF1bHQsIGFuZCBgYHByb2Nlc3NfbWVzc2FnZSgpYGAgd2lsbCBiZSBwYXNzZWQga2V5d29yZCBhcmd1bWVudHMuCisgIENvZGUgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIHVwZGF0ZWQgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBkZXByZWNhdGlvbgorICB3YXJuaW5nIGdlbmVyYXRlZCBieSAzLjUgd2lsbCBub3QgYmUgYWZmZWN0ZWQuCisKKyogQWxsIG9wdGlvbmFsIGFyZ3VtZW50cyBvZiB0aGUgOmZ1bmM6YH5qc29uLmR1bXBgLCA6ZnVuYzpgfmpzb24uZHVtcHNgLAorICA6ZnVuYzpgfmpzb24ubG9hZGAgYW5kIDpmdW5jOmB+anNvbi5sb2Fkc2AgZnVuY3Rpb25zIGFuZAorICA6Y2xhc3M6YH5qc29uLkpTT05FbmNvZGVyYCBhbmQgOmNsYXNzOmB+anNvbi5KU09ORGVjb2RlcmAgY2xhc3MKKyAgY29uc3RydWN0b3JzIGluIHRoZSA6bW9kOmBqc29uYCBtb2R1bGUgYXJlIG5vdyA6cmVmOmBrZXl3b3JkLW9ubHkKKyAgPGtleXdvcmQtb25seV9wYXJhbWV0ZXI+YC4KKyAgKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAxODcyNmAuKQorCisqIFN1YmNsYXNzZXMgb2YgOmNsYXNzOmB0eXBlYCB3aGljaCBkb24ndCBvdmVycmlkZSBgYHR5cGUuX19uZXdfX2BgIG1heSBubworICBsb25nZXIgdXNlIHRoZSBvbmUtYXJndW1lbnQgZm9ybSB0byBnZXQgdGhlIHR5cGUgb2YgYW4gb2JqZWN0LgorCisqIEFzIHBhcnQgb2YgOnBlcDpgNDg3YCwgdGhlIGhhbmRsaW5nIG9mIGtleXdvcmQgYXJndW1lbnRzIHBhc3NlZCB0bworICA6Y2xhc3M6YHR5cGVgIChvdGhlciB0aGFuIHRoZSBtZXRhY2xhc3MgaGludCwgYGBtZXRhY2xhc3NgYCkgaXMgbm93CisgIGNvbnNpc3RlbnRseSBkZWxlZ2F0ZWQgdG8gOm1ldGg6YG9iamVjdC5fX2luaXRfc3ViY2xhc3NfX2AuIFRoaXMgbWVhbnMgdGhhdAorICA6bWV0aDpgdHlwZS5fX25ld19fYCBhbmQgOm1ldGg6YHR5cGUuX19pbml0X19gIGJvdGggbm93IGFjY2VwdCBhcmJpdHJhcnkKKyAga2V5d29yZCBhcmd1bWVudHMsIGJ1dCA6bWV0aDpgb2JqZWN0Ll9faW5pdF9zdWJjbGFzc19fYCAod2hpY2ggaXMgY2FsbGVkIGZyb20KKyAgOm1ldGg6YHR5cGUuX19uZXdfX2ApIHdpbGwgcmVqZWN0IHRoZW0gYnkgZGVmYXVsdC4gQ3VzdG9tIG1ldGFjbGFzc2VzCisgIGFjY2VwdGluZyBhZGRpdGlvbmFsIGtleXdvcmQgYXJndW1lbnRzIHdpbGwgbmVlZCB0byBhZGp1c3QgdGhlaXIgY2FsbHMgdG8KKyAgOm1ldGg6YHR5cGUuX19uZXdfX2AgKHdoZXRoZXIgZGlyZWN0IG9yIHZpYSA6Y2xhc3M6YHN1cGVyYCkgYWNjb3JkaW5nbHkuCisKKyogSW4gOmNsYXNzOmBkaXN0dXRpbHMuY29tbWFuZC5zZGlzdC5zZGlzdGAsIHRoZSBgYGRlZmF1bHRfZm9ybWF0YGAKKyAgYXR0cmlidXRlIGhhcyBiZWVuIHJlbW92ZWQgYW5kIGlzIG5vIGxvbmdlciBob25vcmVkLiBJbnN0ZWFkLCB0aGUKKyAgZ3ppcHBlZCB0YXJmaWxlIGZvcm1hdCBpcyB0aGUgZGVmYXVsdCBvbiBhbGwgcGxhdGZvcm1zIGFuZCBubworICBwbGF0Zm9ybS1zcGVjaWZpYyBzZWxlY3Rpb24gaXMgbWFkZS4KKyAgSW4gZW52aXJvbm1lbnRzIHdoZXJlIGRpc3RyaWJ1dGlvbnMgYXJlCisgIGJ1aWx0IG9uIFdpbmRvd3MgYW5kIHppcCBkaXN0cmlidXRpb25zIGFyZSByZXF1aXJlZCwgY29uZmlndXJlCisgIHRoZSBwcm9qZWN0IHdpdGggYSBgYHNldHVwLmNmZ2BgIGZpbGUgY29udGFpbmluZyB0aGUgZm9sbG93aW5nOjoKKworICAgIFtzZGlzdF0KKyAgICBmb3JtYXRzPXppcAorCisgIFRoaXMgYmVoYXZpb3IgaGFzIGFsc28gYmVlbiBiYWNrcG9ydGVkIHRvIGVhcmxpZXIgUHl0aG9uIHZlcnNpb25zCisgIGJ5IFNldHVwdG9vbHMgMjYuMC4wLgorCisqIEluIHRoZSA6bW9kOmB1cmxsaWIucmVxdWVzdGAgbW9kdWxlIGFuZCB0aGUKKyAgOm1ldGg6YGh0dHAuY2xpZW50LkhUVFBDb25uZWN0aW9uLnJlcXVlc3RgIG1ldGhvZCwgaWYgbm8gQ29udGVudC1MZW5ndGgKKyAgaGVhZGVyIGZpZWxkIGhhcyBiZWVuIHNwZWNpZmllZCBhbmQgdGhlIHJlcXVlc3QgYm9keSBpcyBhIGZpbGUgb2JqZWN0LAorICBpdCBpcyBub3cgc2VudCB3aXRoIEhUVFAgMS4xIGNodW5rZWQgZW5jb2RpbmcuIElmIGEgZmlsZSBvYmplY3QgaGFzIHRvCisgIGJlIHNlbnQgdG8gYSBIVFRQIDEuMCBzZXJ2ZXIsIHRoZSBDb250ZW50LUxlbmd0aCB2YWx1ZSBub3cgaGFzIHRvIGJlCisgIHNwZWNpZmllZCBieSB0aGUgY2FsbGVyLgorICAoQ29udHJpYnV0ZWQgYnkgRGVtaWFuIEJyZWNodCBhbmQgUm9sZiBLcmFobCB3aXRoIHR3ZWFrcyBmcm9tCisgIE1hcnRpbiBQYW50ZXIgaW4gOmlzc3VlOmAxMjMxOWAuKQorCisqIFRoZSA6Y2xhc3M6YH5jc3YuRGljdFJlYWRlcmAgbm93IHJldHVybnMgcm93cyBvZiB0eXBlCisgIDpjbGFzczpgfmNvbGxlY3Rpb25zLk9yZGVyZWREaWN0YC4KKyAgKENvbnRyaWJ1dGVkIGJ5IFN0ZXZlIEhvbGRlbiBpbiA6aXNzdWU6YDI3ODQyYC4pCisKKyogVGhlIDpjb25zdDpgY3J5cHQuTUVUSE9EX0NSWVBUYCB3aWxsIG5vIGxvbmdlciBiZSBhZGRlZCB0byBgYGNyeXB0Lm1ldGhvZHNgYAorICBpZiB1bnN1cHBvcnRlZCBieSB0aGUgcGxhdGZvcm0uCisgIChDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lciBpbiA6aXNzdWU6YDI1Mjg3YC4pCisKKyogVGhlICp2ZXJib3NlKiBhbmQgKnJlbmFtZSogYXJndW1lbnRzIGZvcgorICA6ZnVuYzpgfmNvbGxlY3Rpb25zLm5hbWVkdHVwbGVgIGFyZSBub3cga2V5d29yZC1vbmx5LgorICAoQ29udHJpYnV0ZWQgYnkgUmF5bW9uZCBIZXR0aW5nZXIgaW4gOmlzc3VlOmAyNTYyOGAuKQorCisqIE9uIExpbnV4LCA6ZnVuYzpgY3R5cGVzLnV0aWwuZmluZF9saWJyYXJ5YCBub3cgbG9va3MgaW4KKyAgYGBMRF9MSUJSQVJZX1BBVEhgYCBmb3Igc2hhcmVkIGxpYnJhcmllcy4KKyAgKENvbnRyaWJ1dGVkIGJ5IFZpbmF5IFNhamlwIGluIDppc3N1ZTpgOTk5OGAuKQorCisqIFRoZSA6Y2xhc3M6YGltYXBsaWIuSU1BUDRgIGNsYXNzIG5vdyBoYW5kbGVzIGZsYWdzIGNvbnRhaW5pbmcgdGhlCisgIGBgJ10nYGAgY2hhcmFjdGVyIGluIG1lc3NhZ2VzIHNlbnQgZnJvbSB0aGUgc2VydmVyIHRvIGltcHJvdmUKKyAgcmVhbC13b3JsZCBjb21wYXRpYmlsaXR5LgorICAoQ29udHJpYnV0ZWQgYnkgTGl0YSBDaG8gaW4gOmlzc3VlOmAyMTgxNWAuKQorCisqIFRoZSA6ZnVuYzpgbW1hcC53cml0ZSgpIDxtbWFwLndyaXRlPmAgZnVuY3Rpb24gbm93IHJldHVybnMgdGhlIG51bWJlcgorICBvZiBieXRlcyB3cml0dGVuIGxpa2Ugb3RoZXIgd3JpdGUgbWV0aG9kcy4KKyAgKENvbnRyaWJ1dGVkIGJ5IEpha3ViIFN0YXNpYWsgaW4gOmlzc3VlOmAyNjMzNWAuKQorCisqIFRoZSA6ZnVuYzpgcGtndXRpbC5pdGVyX21vZHVsZXNgIGFuZCA6ZnVuYzpgcGtndXRpbC53YWxrX3BhY2thZ2VzYAorICBmdW5jdGlvbnMgbm93IHJldHVybiA6Y2xhc3M6YH5wa2d1dGlsLk1vZHVsZUluZm9gIG5hbWVkIHR1cGxlcy4KKyAgKENvbnRyaWJ1dGVkIGJ5IFJhbWNoYW5kcmEgQXB0ZSBpbiA6aXNzdWU6YDE3MjExYC4pCisKKyogOmZ1bmM6YHJlLnN1YmAgbm93IHJhaXNlcyBhbiBlcnJvciBmb3IgaW52YWxpZCBudW1lcmljYWwgZ3JvdXAKKyAgcmVmZXJlbmNlcyBpbiByZXBsYWNlbWVudCB0ZW1wbGF0ZXMgZXZlbiBpZiB0aGUgcGF0dGVybiBpcyBub3QKKyAgZm91bmQgaW4gdGhlIHN0cmluZy4gIFRoZSBlcnJvciBtZXNzYWdlIGZvciBpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZXMKKyAgbm93IGluY2x1ZGVzIHRoZSBncm91cCBpbmRleCBhbmQgdGhlIHBvc2l0aW9uIG9mIHRoZSByZWZlcmVuY2UuCisgIChDb250cmlidXRlZCBieSBTaWxlbnRHaG9zdCwgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDI1OTUzYC4pCisKKyogOmNsYXNzOmB6aXBmaWxlLlppcEZpbGVgIHdpbGwgbm93IHJhaXNlIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgIGZvcgorICB1bnJlY29nbml6ZWQgY29tcHJlc3Npb24gdmFsdWVzLiAgUHJldmlvdXNseSBhIHBsYWluIDpleGM6YFJ1bnRpbWVFcnJvcmAKKyAgd2FzIHJhaXNlZC4gIEFkZGl0aW9uYWxseSwgY2FsbGluZyA6Y2xhc3M6YH56aXBmaWxlLlppcEZpbGVgIG1ldGhvZHMKKyAgb24gYSBjbG9zZWQgWmlwRmlsZSBvciBjYWxsaW5nIHRoZSA6bWV0aDpgfnppcGZpbGUuWmlwRmlsZS53cml0ZWAgbWV0aG9kCisgIG9uIGEgWmlwRmlsZSBjcmVhdGVkIHdpdGggbW9kZSBgYCdyJ2BgIHdpbGwgcmFpc2UgYSA6ZXhjOmBWYWx1ZUVycm9yYC4KKyAgUHJldmlvdXNseSwgYSA6ZXhjOmBSdW50aW1lRXJyb3JgIHdhcyByYWlzZWQgaW4gdGhvc2Ugc2NlbmFyaW9zLgorCisqIHdoZW4gY3VzdG9tIG1ldGFjbGFzc2VzIGFyZSBjb21iaW5lZCB3aXRoIHplcm8tYXJndW1lbnQgOmZ1bmM6YHN1cGVyYCBvcgorICBkaXJlY3QgcmVmZXJlbmNlcyBmcm9tIG1ldGhvZHMgdG8gdGhlIGltcGxpY2l0IGBgX19jbGFzc19fYGAgY2xvc3VyZQorICB2YXJpYWJsZSwgdGhlIGltcGxpY2l0IGBgX19jbGFzc2NlbGxfX2BgIG5hbWVzcGFjZSBlbnRyeSBtdXN0IG5vdyBiZSBwYXNzZWQKKyAgdXAgdG8gYGB0eXBlLl9fbmV3X19gYCBmb3IgaW5pdGlhbGlzYXRpb24uIEZhaWxpbmcgdG8gZG8gc28gd2lsbCByZXN1bHQgaW4KKyAgYSA6ZXhjOmBEZXByZWNhdGlvbldhcm5pbmdgIGluIDMuNiBhbmQgYSA6ZXhjOmBSdW50aW1lV2FybmluZ2AgaW4gdGhlIGZ1dHVyZS4KKworQ2hhbmdlcyBpbiB0aGUgQyBBUEkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyogVGhlIDpjOmZ1bmM6YFB5TWVtX01hbGxvY2AgYWxsb2NhdG9yIGZhbWlseSBub3cgdXNlcyB0aGUgOnJlZjpgcHltYWxsb2MgYWxsb2NhdG9yCisgIDxweW1hbGxvYz5gIHJhdGhlciB0aGFuIHRoZSBzeXN0ZW0gOmM6ZnVuYzpgbWFsbG9jYC4gQXBwbGljYXRpb25zIGNhbGxpbmcKKyAgOmM6ZnVuYzpgUHlNZW1fTWFsbG9jYCB3aXRob3V0IGhvbGRpbmcgdGhlIEdJTCBjYW4gbm93IGNyYXNoLiBTZXQgdGhlCisgIDplbnZ2YXI6YFBZVEhPTk1BTExPQ2AgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYGBkZWJ1Z2BgIHRvIHZhbGlkYXRlIHRoZQorICB1c2FnZSBvZiBtZW1vcnkgYWxsb2NhdG9ycyBpbiB5b3VyIGFwcGxpY2F0aW9uLiBTZWUgOmlzc3VlOmAyNjI0OWAuCisKKyogOmM6ZnVuYzpgUHlfRXhpdGAgKGFuZCB0aGUgbWFpbiBpbnRlcnByZXRlcikgbm93IG92ZXJyaWRlIHRoZSBleGl0IHN0YXR1cworICB3aXRoIDEyMCBpZiBmbHVzaGluZyBidWZmZXJlZCBkYXRhIGZhaWxlZC4gIFNlZSA6aXNzdWU6YDUzMTlgLgorCisKK0NQeXRob24gYnl0ZWNvZGUgY2hhbmdlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZXJlIGhhdmUgYmVlbiBzZXZlcmFsIG1ham9yIGNoYW5nZXMgdG8gdGhlIDp0ZXJtOmBieXRlY29kZWAgaW4gUHl0aG9uIDMuNi4KKworKiBUaGUgUHl0aG9uIGludGVycHJldGVyIG5vdyB1c2VzIGEgMTYtYml0IHdvcmRjb2RlIGluc3RlYWQgb2YgYnl0ZWNvZGUuCisgIChDb250cmlidXRlZCBieSBEZW11ciBSdW1lZCB3aXRoIGlucHV0IGFuZCByZXZpZXdzIGZyb20KKyAgU2VyaGl5IFN0b3JjaGFrYSBhbmQgVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAyNjY0N2AgYW5kIDppc3N1ZTpgMjgwNTBgLikKKworKiBUaGUgbmV3IDpvcGNvZGU6YEZPUk1BVF9WQUxVRWAgYW5kIDpvcGNvZGU6YEJVSUxEX1NUUklOR2Agb3Bjb2RlcyBhcyBwYXJ0CisgIG9mIHRoZSAgOnJlZjpgZm9ybWF0dGVkIHN0cmluZyBsaXRlcmFsIDx3aGF0c25ldzM2LXBlcDQ5OD5gIGltcGxlbWVudGF0aW9uLgorICAoQ29udHJpYnV0ZWQgYnkgRXJpYyBTbWl0aCBpbiA6aXNzdWU6YDI1NDgzYCBhbmQKKyAgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDI3MDc4YC4pCisKKyogVGhlIG5ldyA6b3Bjb2RlOmBCVUlMRF9DT05TVF9LRVlfTUFQYCBvcGNvZGUgdG8gb3B0aW1pemUgdGhlIGNyZWF0aW9uCisgIG9mIGRpY3Rpb25hcmllcyB3aXRoIGNvbnN0YW50IGtleXMuCisgIChDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjcxNDBgLikKKworKiBUaGUgZnVuY3Rpb24gY2FsbCBvcGNvZGVzIGhhdmUgYmVlbiBoZWF2aWx5IHJld29ya2VkIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UKKyAgYW5kIHNpbXBsZXIgaW1wbGVtZW50YXRpb24uCisgIFRoZSA6b3Bjb2RlOmBNQUtFX0ZVTkNUSU9OYCwgOm9wY29kZTpgQ0FMTF9GVU5DVElPTmAsCisgIDpvcGNvZGU6YENBTExfRlVOQ1RJT05fS1dgIGFuZCA6b3Bjb2RlOmBCVUlMRF9NQVBfVU5QQUNLX1dJVEhfQ0FMTGAgb3Bjb2RlcworICBoYXZlIGJlZW4gbW9kaWZpZWQsIHRoZSBuZXcgOm9wY29kZTpgQ0FMTF9GVU5DVElPTl9FWGAgYW5kCisgIDpvcGNvZGU6YEJVSUxEX1RVUExFX1VOUEFDS19XSVRIX0NBTExgIGhhdmUgYmVlbiBhZGRlZCwgYW5kCisgIGBgQ0FMTF9GVU5DVElPTl9WQVJgYCwgYGBDQUxMX0ZVTkNUSU9OX1ZBUl9LV2BgIGFuZCBgYE1BS0VfQ0xPU1VSRWBgIG9wY29kZXMKKyAgaGF2ZSBiZWVuIHJlbW92ZWQuCisgIChDb250cmlidXRlZCBieSBEZW11ciBSdW1lZCBpbiA6aXNzdWU6YDI3MDk1YCwgYW5kIFNlcmhpeSBTdG9yY2hha2EgaW4KKyAgOmlzc3VlOmAyNzIxM2AsIDppc3N1ZTpgMjgyNTdgLikKKworKiBUaGUgbmV3IDpvcGNvZGU6YFNFVFVQX0FOTk9UQVRJT05TYCBhbmQgOm9wY29kZTpgU1RPUkVfQU5OT1RBVElPTmAgb3Bjb2RlcworICBoYXZlIGJlZW4gYWRkZWQgdG8gc3VwcG9ydCB0aGUgbmV3IDp0ZXJtOmB2YXJpYWJsZSBhbm5vdGF0aW9uYCBzeW50YXguCisgIChDb250cmlidXRlZCBieSBJdmFuIExldmtpdnNreWkgaW4gOmlzc3VlOmAyNzk4NWAuKQpkaWZmIC0tZ2l0IGEvRG9jL3doYXRzbmV3L2luZGV4LnJzdCBiL0RvYy93aGF0c25ldy9pbmRleC5yc3QKaW5kZXggZWRiNTUwMi4uN2M5MjUyNCAxMDA2NDQKLS0tIGEvRG9jL3doYXRzbmV3L2luZGV4LnJzdAorKysgYi9Eb2Mvd2hhdHNuZXcvaW5kZXgucnN0CkBAIC0xMSw2ICsxMSw3IEBACiAuLiB0b2N0cmVlOjoKICAgIDptYXhkZXB0aDogMgogCisgICAzLjYucnN0CiAgICAzLjUucnN0CiAgICAzLjQucnN0CiAgICAzLjMucnN0CmRpZmYgLS1naXQgYS9HcmFtbWFyL0dyYW1tYXIgYi9HcmFtbWFyL0dyYW1tYXIKaW5kZXggNDMwNzUyMy4uYjEzOWU5ZiAxMDA2NDQKLS0tIGEvR3JhbW1hci9HcmFtbWFyCisrKyBiL0dyYW1tYXIvR3JhbW1hcgpAQCAtMjcsMjUgKzI3LDMxIEBACiBmdW5jZGVmOiAnZGVmJyBOQU1FIHBhcmFtZXRlcnMgWyctPicgdGVzdF0gJzonIHN1aXRlCiAKIHBhcmFtZXRlcnM6ICcoJyBbdHlwZWRhcmdzbGlzdF0gJyknCi10eXBlZGFyZ3NsaXN0OiAodGZwZGVmIFsnPScgdGVzdF0gKCcsJyB0ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcKLSAgICAgICBbJyonIFt0ZnBkZWZdICgnLCcgdGZwZGVmIFsnPScgdGVzdF0pKiBbJywnICcqKicgdGZwZGVmXSB8ICcqKicgdGZwZGVmXV0KLSAgICAgfCAgJyonIFt0ZnBkZWZdICgnLCcgdGZwZGVmIFsnPScgdGVzdF0pKiBbJywnICcqKicgdGZwZGVmXSB8ICcqKicgdGZwZGVmKQordHlwZWRhcmdzbGlzdDogKHRmcGRlZiBbJz0nIHRlc3RdICgnLCcgdGZwZGVmIFsnPScgdGVzdF0pKiBbJywnIFsKKyAgICAgICAgJyonIFt0ZnBkZWZdICgnLCcgdGZwZGVmIFsnPScgdGVzdF0pKiBbJywnIFsnKionIHRmcGRlZiBbJywnXV1dCisgICAgICB8ICcqKicgdGZwZGVmIFsnLCddXV0KKyAgfCAnKicgW3RmcGRlZl0gKCcsJyB0ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcgWycqKicgdGZwZGVmIFsnLCddXV0KKyAgfCAnKionIHRmcGRlZiBbJywnXSkKIHRmcGRlZjogTkFNRSBbJzonIHRlc3RdCi12YXJhcmdzbGlzdDogKHZmcGRlZiBbJz0nIHRlc3RdICgnLCcgdmZwZGVmIFsnPScgdGVzdF0pKiBbJywnCi0gICAgICAgWycqJyBbdmZwZGVmXSAoJywnIHZmcGRlZiBbJz0nIHRlc3RdKSogWycsJyAnKionIHZmcGRlZl0gfCAnKionIHZmcGRlZl1dCi0gICAgIHwgICcqJyBbdmZwZGVmXSAoJywnIHZmcGRlZiBbJz0nIHRlc3RdKSogWycsJyAnKionIHZmcGRlZl0gfCAnKionIHZmcGRlZikKK3ZhcmFyZ3NsaXN0OiAodmZwZGVmIFsnPScgdGVzdF0gKCcsJyB2ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcgWworICAgICAgICAnKicgW3ZmcGRlZl0gKCcsJyB2ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcgWycqKicgdmZwZGVmIFsnLCddXV0KKyAgICAgIHwgJyoqJyB2ZnBkZWYgWycsJ11dXQorICB8ICcqJyBbdmZwZGVmXSAoJywnIHZmcGRlZiBbJz0nIHRlc3RdKSogWycsJyBbJyoqJyB2ZnBkZWYgWycsJ11dXQorICB8ICcqKicgdmZwZGVmIFsnLCddCispCiB2ZnBkZWY6IE5BTUUKIAogc3RtdDogc2ltcGxlX3N0bXQgfCBjb21wb3VuZF9zdG10CiBzaW1wbGVfc3RtdDogc21hbGxfc3RtdCAoJzsnIHNtYWxsX3N0bXQpKiBbJzsnXSBORVdMSU5FCiBzbWFsbF9zdG10OiAoZXhwcl9zdG10IHwgZGVsX3N0bXQgfCBwYXNzX3N0bXQgfCBmbG93X3N0bXQgfAogICAgICAgICAgICAgIGltcG9ydF9zdG10IHwgZ2xvYmFsX3N0bXQgfCBub25sb2NhbF9zdG10IHwgYXNzZXJ0X3N0bXQpCi1leHByX3N0bXQ6IHRlc3RsaXN0X3N0YXJfZXhwciAoYXVnYXNzaWduICh5aWVsZF9leHByfHRlc3RsaXN0KSB8CitleHByX3N0bXQ6IHRlc3RsaXN0X3N0YXJfZXhwciAoYW5uYXNzaWduIHwgYXVnYXNzaWduICh5aWVsZF9leHByfHRlc3RsaXN0KSB8CiAgICAgICAgICAgICAgICAgICAgICAoJz0nICh5aWVsZF9leHByfHRlc3RsaXN0X3N0YXJfZXhwcikpKikKK2FubmFzc2lnbjogJzonIHRlc3QgWyc9JyB0ZXN0XQogdGVzdGxpc3Rfc3Rhcl9leHByOiAodGVzdHxzdGFyX2V4cHIpICgnLCcgKHRlc3R8c3Rhcl9leHByKSkqIFsnLCddCiBhdWdhc3NpZ246ICgnKz0nIHwgJy09JyB8ICcqPScgfCAnQD0nIHwgJy89JyB8ICclPScgfCAnJj0nIHwgJ3w9JyB8ICdePScgfAogICAgICAgICAgICAgJzw8PScgfCAnPj49JyB8ICcqKj0nIHwgJy8vPScpCi0jIEZvciBub3JtYWwgYXNzaWdubWVudHMsIGFkZGl0aW9uYWwgcmVzdHJpY3Rpb25zIGVuZm9yY2VkIGJ5IHRoZSBpbnRlcnByZXRlcgorIyBGb3Igbm9ybWFsIGFuZCBhbm5vdGF0ZWQgYXNzaWdubWVudHMsIGFkZGl0aW9uYWwgcmVzdHJpY3Rpb25zIGVuZm9yY2VkIGJ5IHRoZSBpbnRlcnByZXRlcgogZGVsX3N0bXQ6ICdkZWwnIGV4cHJsaXN0CiBwYXNzX3N0bXQ6ICdwYXNzJwogZmxvd19zdG10OiBicmVha19zdG10IHwgY29udGludWVfc3RtdCB8IHJldHVybl9zdG10IHwgcmFpc2Vfc3RtdCB8IHlpZWxkX3N0bXQKQEAgLTE0MCw3ICsxNDYsNyBAQAogICAgICAgICAgICAgJyonIHRlc3QgKQogCiBjb21wX2l0ZXI6IGNvbXBfZm9yIHwgY29tcF9pZgotY29tcF9mb3I6ICdmb3InIGV4cHJsaXN0ICdpbicgb3JfdGVzdCBbY29tcF9pdGVyXQorY29tcF9mb3I6IFtBU1lOQ10gJ2ZvcicgZXhwcmxpc3QgJ2luJyBvcl90ZXN0IFtjb21wX2l0ZXJdCiBjb21wX2lmOiAnaWYnIHRlc3Rfbm9jb25kIFtjb21wX2l0ZXJdCiAKICMgbm90IHVzZWQgaW4gZ3JhbW1hciwgYnV0IG1heSBhcHBlYXIgaW4gIm5vZGUiIHBhc3NlZCBmcm9tIFBhcnNlciB0byBDb21waWxlcgpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9QeXRob24tYXN0LmggYi9JbmNsdWRlL1B5dGhvbi1hc3QuaAppbmRleCAyZDNlYWNiLi43MDQ5NGI3IDEwMDY0NAotLS0gYS9JbmNsdWRlL1B5dGhvbi1hc3QuaAorKysgYi9JbmNsdWRlL1B5dGhvbi1hc3QuaApAQCAtNjUsMTEgKzY1LDEyIEBACiAKIGVudW0gX3N0bXRfa2luZCB7RnVuY3Rpb25EZWZfa2luZD0xLCBBc3luY0Z1bmN0aW9uRGVmX2tpbmQ9MiwgQ2xhc3NEZWZfa2luZD0zLAogICAgICAgICAgICAgICAgICAgUmV0dXJuX2tpbmQ9NCwgRGVsZXRlX2tpbmQ9NSwgQXNzaWduX2tpbmQ9NiwKLSAgICAgICAgICAgICAgICAgIEF1Z0Fzc2lnbl9raW5kPTcsIEZvcl9raW5kPTgsIEFzeW5jRm9yX2tpbmQ9OSwgV2hpbGVfa2luZD0xMCwKLSAgICAgICAgICAgICAgICAgIElmX2tpbmQ9MTEsIFdpdGhfa2luZD0xMiwgQXN5bmNXaXRoX2tpbmQ9MTMsIFJhaXNlX2tpbmQ9MTQsCi0gICAgICAgICAgICAgICAgICBUcnlfa2luZD0xNSwgQXNzZXJ0X2tpbmQ9MTYsIEltcG9ydF9raW5kPTE3LAotICAgICAgICAgICAgICAgICAgSW1wb3J0RnJvbV9raW5kPTE4LCBHbG9iYWxfa2luZD0xOSwgTm9ubG9jYWxfa2luZD0yMCwKLSAgICAgICAgICAgICAgICAgIEV4cHJfa2luZD0yMSwgUGFzc19raW5kPTIyLCBCcmVha19raW5kPTIzLCBDb250aW51ZV9raW5kPTI0fTsKKyAgICAgICAgICAgICAgICAgIEF1Z0Fzc2lnbl9raW5kPTcsIEFubkFzc2lnbl9raW5kPTgsIEZvcl9raW5kPTksCisgICAgICAgICAgICAgICAgICBBc3luY0Zvcl9raW5kPTEwLCBXaGlsZV9raW5kPTExLCBJZl9raW5kPTEyLCBXaXRoX2tpbmQ9MTMsCisgICAgICAgICAgICAgICAgICBBc3luY1dpdGhfa2luZD0xNCwgUmFpc2Vfa2luZD0xNSwgVHJ5X2tpbmQ9MTYsCisgICAgICAgICAgICAgICAgICBBc3NlcnRfa2luZD0xNywgSW1wb3J0X2tpbmQ9MTgsIEltcG9ydEZyb21fa2luZD0xOSwKKyAgICAgICAgICAgICAgICAgIEdsb2JhbF9raW5kPTIwLCBOb25sb2NhbF9raW5kPTIxLCBFeHByX2tpbmQ9MjIsIFBhc3Nfa2luZD0yMywKKyAgICAgICAgICAgICAgICAgIEJyZWFrX2tpbmQ9MjQsIENvbnRpbnVlX2tpbmQ9MjV9Owogc3RydWN0IF9zdG10IHsKICAgICBlbnVtIF9zdG10X2tpbmQga2luZDsKICAgICB1bmlvbiB7CkBAIC0xMTgsNiArMTE5LDEzIEBACiAgICAgICAgIAogICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgZXhwcl90eSB0YXJnZXQ7CisgICAgICAgICAgICBleHByX3R5IGFubm90YXRpb247CisgICAgICAgICAgICBleHByX3R5IHZhbHVlOworICAgICAgICAgICAgaW50IHNpbXBsZTsKKyAgICAgICAgfSBBbm5Bc3NpZ247CisgICAgICAgIAorICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgZXhwcl90eSB0YXJnZXQ7CiAgICAgICAgICAgICBleHByX3R5IGl0ZXI7CiAgICAgICAgICAgICBhc2RsX3NlcSAqYm9keTsKICAgICAgICAgICAgIGFzZGxfc2VxICpvcmVsc2U7CkBAIC0yMDEsOSArMjA5LDEwIEBACiAgICAgICAgICAgICAgICAgICBTZXRDb21wX2tpbmQ9OSwgRGljdENvbXBfa2luZD0xMCwgR2VuZXJhdG9yRXhwX2tpbmQ9MTEsCiAgICAgICAgICAgICAgICAgICBBd2FpdF9raW5kPTEyLCBZaWVsZF9raW5kPTEzLCBZaWVsZEZyb21fa2luZD0xNCwKICAgICAgICAgICAgICAgICAgIENvbXBhcmVfa2luZD0xNSwgQ2FsbF9raW5kPTE2LCBOdW1fa2luZD0xNywgU3RyX2tpbmQ9MTgsCi0gICAgICAgICAgICAgICAgICBCeXRlc19raW5kPTE5LCBOYW1lQ29uc3RhbnRfa2luZD0yMCwgRWxsaXBzaXNfa2luZD0yMSwKLSAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZV9raW5kPTIyLCBTdWJzY3JpcHRfa2luZD0yMywgU3RhcnJlZF9raW5kPTI0LAotICAgICAgICAgICAgICAgICAgTmFtZV9raW5kPTI1LCBMaXN0X2tpbmQ9MjYsIFR1cGxlX2tpbmQ9Mjd9OworICAgICAgICAgICAgICAgICAgRm9ybWF0dGVkVmFsdWVfa2luZD0xOSwgSm9pbmVkU3RyX2tpbmQ9MjAsIEJ5dGVzX2tpbmQ9MjEsCisgICAgICAgICAgICAgICAgICBOYW1lQ29uc3RhbnRfa2luZD0yMiwgRWxsaXBzaXNfa2luZD0yMywgQ29uc3RhbnRfa2luZD0yNCwKKyAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZV9raW5kPTI1LCBTdWJzY3JpcHRfa2luZD0yNiwgU3RhcnJlZF9raW5kPTI3LAorICAgICAgICAgICAgICAgICAgTmFtZV9raW5kPTI4LCBMaXN0X2tpbmQ9MjksIFR1cGxlX2tpbmQ9MzB9Owogc3RydWN0IF9leHByIHsKICAgICBlbnVtIF9leHByX2tpbmQga2luZDsKICAgICB1bmlvbiB7CkBAIC0yOTcsNiArMzA2LDE2IEBACiAgICAgICAgIH0gU3RyOwogICAgICAgICAKICAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIGV4cHJfdHkgdmFsdWU7CisgICAgICAgICAgICBpbnQgY29udmVyc2lvbjsKKyAgICAgICAgICAgIGV4cHJfdHkgZm9ybWF0X3NwZWM7CisgICAgICAgIH0gRm9ybWF0dGVkVmFsdWU7CisgICAgICAgIAorICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgYXNkbF9zZXEgKnZhbHVlczsKKyAgICAgICAgfSBKb2luZWRTdHI7CisgICAgICAgIAorICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgYnl0ZXMgczsKICAgICAgICAgfSBCeXRlczsKICAgICAgICAgCkBAIC0zMDUsNiArMzI0LDEwIEBACiAgICAgICAgIH0gTmFtZUNvbnN0YW50OwogICAgICAgICAKICAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIGNvbnN0YW50IHZhbHVlOworICAgICAgICB9IENvbnN0YW50OworICAgICAgICAKKyAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgIGV4cHJfdHkgdmFsdWU7CiAgICAgICAgICAgICBpZGVudGlmaWVyIGF0dHI7CiAgICAgICAgICAgICBleHByX2NvbnRleHRfdHkgY3R4OwpAQCAtMzY2LDYgKzM4OSw3IEBACiAgICAgZXhwcl90eSB0YXJnZXQ7CiAgICAgZXhwcl90eSBpdGVyOwogICAgIGFzZGxfc2VxICppZnM7CisgICAgaW50IGlzX2FzeW5jOwogfTsKIAogZW51bSBfZXhjZXB0aGFuZGxlcl9raW5kIHtFeGNlcHRIYW5kbGVyX2tpbmQ9MX07CkBAIC00NDYsNiArNDcwLDkgQEAKICNkZWZpbmUgQXVnQXNzaWduKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpIF9QeV9BdWdBc3NpZ24oYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkKIHN0bXRfdHkgX1B5X0F1Z0Fzc2lnbihleHByX3R5IHRhcmdldCwgb3BlcmF0b3JfdHkgb3AsIGV4cHJfdHkgdmFsdWUsIGludAogICAgICAgICAgICAgICAgICAgICAgIGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKKyNkZWZpbmUgQW5uQXNzaWduKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KSBfUHlfQW5uQXNzaWduKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KQorc3RtdF90eSBfUHlfQW5uQXNzaWduKGV4cHJfdHkgdGFyZ2V0LCBleHByX3R5IGFubm90YXRpb24sIGV4cHJfdHkgdmFsdWUsIGludAorICAgICAgICAgICAgICAgICAgICAgIHNpbXBsZSwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKICNkZWZpbmUgRm9yKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KSBfUHlfRm9yKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KQogc3RtdF90eSBfUHlfRm9yKGV4cHJfdHkgdGFyZ2V0LCBleHByX3R5IGl0ZXIsIGFzZGxfc2VxICogYm9keSwgYXNkbF9zZXEgKgogICAgICAgICAgICAgICAgIG9yZWxzZSwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKQEAgLTU0Myw2ICs1NzAsMTIgQEAKIGV4cHJfdHkgX1B5X051bShvYmplY3QgbiwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKICNkZWZpbmUgU3RyKGEwLCBhMSwgYTIsIGEzKSBfUHlfU3RyKGEwLCBhMSwgYTIsIGEzKQogZXhwcl90eSBfUHlfU3RyKHN0cmluZyBzLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOworI2RlZmluZSBGb3JtYXR0ZWRWYWx1ZShhMCwgYTEsIGEyLCBhMywgYTQsIGE1KSBfUHlfRm9ybWF0dGVkVmFsdWUoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkKK2V4cHJfdHkgX1B5X0Zvcm1hdHRlZFZhbHVlKGV4cHJfdHkgdmFsdWUsIGludCBjb252ZXJzaW9uLCBleHByX3R5IGZvcm1hdF9zcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKKyNkZWZpbmUgSm9pbmVkU3RyKGEwLCBhMSwgYTIsIGEzKSBfUHlfSm9pbmVkU3RyKGEwLCBhMSwgYTIsIGEzKQorZXhwcl90eSBfUHlfSm9pbmVkU3RyKGFzZGxfc2VxICogdmFsdWVzLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYQorICAgICAgICAgICAgICAgICAgICAgICphcmVuYSk7CiAjZGVmaW5lIEJ5dGVzKGEwLCBhMSwgYTIsIGEzKSBfUHlfQnl0ZXMoYTAsIGExLCBhMiwgYTMpCiBleHByX3R5IF9QeV9CeXRlcyhieXRlcyBzLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOwogI2RlZmluZSBOYW1lQ29uc3RhbnQoYTAsIGExLCBhMiwgYTMpIF9QeV9OYW1lQ29uc3RhbnQoYTAsIGExLCBhMiwgYTMpCkBAIC01NTAsNiArNTgzLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAqYXJlbmEpOwogI2RlZmluZSBFbGxpcHNpcyhhMCwgYTEsIGEyKSBfUHlfRWxsaXBzaXMoYTAsIGExLCBhMikKIGV4cHJfdHkgX1B5X0VsbGlwc2lzKGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7CisjZGVmaW5lIENvbnN0YW50KGEwLCBhMSwgYTIsIGEzKSBfUHlfQ29uc3RhbnQoYTAsIGExLCBhMiwgYTMpCitleHByX3R5IF9QeV9Db25zdGFudChjb25zdGFudCB2YWx1ZSwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEKKyAgICAgICAgICAgICAgICAgICAgICphcmVuYSk7CiAjZGVmaW5lIEF0dHJpYnV0ZShhMCwgYTEsIGEyLCBhMywgYTQsIGE1KSBfUHlfQXR0cmlidXRlKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpCiBleHByX3R5IF9QeV9BdHRyaWJ1dGUoZXhwcl90eSB2YWx1ZSwgaWRlbnRpZmllciBhdHRyLCBleHByX2NvbnRleHRfdHkgY3R4LCBpbnQKICAgICAgICAgICAgICAgICAgICAgICBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7CkBAIC01NzQsOSArNjEwLDkgQEAKIHNsaWNlX3R5IF9QeV9FeHRTbGljZShhc2RsX3NlcSAqIGRpbXMsIFB5QXJlbmEgKmFyZW5hKTsKICNkZWZpbmUgSW5kZXgoYTAsIGExKSBfUHlfSW5kZXgoYTAsIGExKQogc2xpY2VfdHkgX1B5X0luZGV4KGV4cHJfdHkgdmFsdWUsIFB5QXJlbmEgKmFyZW5hKTsKLSNkZWZpbmUgY29tcHJlaGVuc2lvbihhMCwgYTEsIGEyLCBhMykgX1B5X2NvbXByZWhlbnNpb24oYTAsIGExLCBhMiwgYTMpCisjZGVmaW5lIGNvbXByZWhlbnNpb24oYTAsIGExLCBhMiwgYTMsIGE0KSBfUHlfY29tcHJlaGVuc2lvbihhMCwgYTEsIGEyLCBhMywgYTQpCiBjb21wcmVoZW5zaW9uX3R5IF9QeV9jb21wcmVoZW5zaW9uKGV4cHJfdHkgdGFyZ2V0LCBleHByX3R5IGl0ZXIsIGFzZGxfc2VxICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZzLCBQeUFyZW5hICphcmVuYSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmcywgaW50IGlzX2FzeW5jLCBQeUFyZW5hICphcmVuYSk7CiAjZGVmaW5lIEV4Y2VwdEhhbmRsZXIoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkgX1B5X0V4Y2VwdEhhbmRsZXIoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkKIGV4Y2VwdGhhbmRsZXJfdHkgX1B5X0V4Y2VwdEhhbmRsZXIoZXhwcl90eSB0eXBlLCBpZGVudGlmaWVyIG5hbWUsIGFzZGxfc2VxICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keSwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEKZGlmZiAtLWdpdCBhL0luY2x1ZGUvUHl0aG9uLmggYi9JbmNsdWRlL1B5dGhvbi5oCmluZGV4IDg1OGRiZDEuLjRjN2M5YTQgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvUHl0aG9uLmgKKysrIGIvSW5jbHVkZS9QeXRob24uaApAQCAtMTE2LDYgKzExNiw3IEBACiAjaW5jbHVkZSAicHlsaWZlY3ljbGUuaCIKICNpbmNsdWRlICJjZXZhbC5oIgogI2luY2x1ZGUgInN5c21vZHVsZS5oIgorI2luY2x1ZGUgIm9zbW9kdWxlLmgiCiAjaW5jbHVkZSAiaW50cmNoZWNrLmgiCiAjaW5jbHVkZSAiaW1wb3J0LmgiCiAKZGlmZiAtLWdpdCBhL0luY2x1ZGUvYWJzdHJhY3QuaCBiL0luY2x1ZGUvYWJzdHJhY3QuaAppbmRleCA3ZGJiYjc0Li4wM2Y4ZGJiIDEwMDY0NAotLS0gYS9JbmNsdWRlL2Fic3RyYWN0LmgKKysrIGIvSW5jbHVkZS9hYnN0cmFjdC5oCkBAIC03LDcgKzcsOSBAQAogI2lmZGVmIFBZX1NTSVpFX1RfQ0xFQU4KICNkZWZpbmUgUHlPYmplY3RfQ2FsbEZ1bmN0aW9uIF9QeU9iamVjdF9DYWxsRnVuY3Rpb25fU2l6ZVQKICNkZWZpbmUgUHlPYmplY3RfQ2FsbE1ldGhvZCBfUHlPYmplY3RfQ2FsbE1ldGhvZF9TaXplVAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogI2RlZmluZSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkIF9QeU9iamVjdF9DYWxsTWV0aG9kSWRfU2l6ZVQKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KICNlbmRpZgogCiAvKiBBYnN0cmFjdCBPYmplY3QgSW50ZXJmYWNlIChtYW55IHRoYW5rcyB0byBKaW0gRnVsdG9uKSAqLwpAQCAtMjY0LDE5ICsyNjYsOTcgQEAKICAgICAgICAqLwogCiAgICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlPYmplY3RfQ2FsbChQeU9iamVjdCAqY2FsbGFibGVfb2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncyk7CiAKICAgICAgICAvKgogICAgICBDYWxsIGEgY2FsbGFibGUgUHl0aG9uIG9iamVjdCwgY2FsbGFibGVfb2JqZWN0LCB3aXRoCiAgICAgIGFyZ3VtZW50cyBhbmQga2V5d29yZHMgYXJndW1lbnRzLiAgVGhlICdhcmdzJyBhcmd1bWVudCBjYW4gbm90IGJlCi0gICAgIE5VTEwsIGJ1dCB0aGUgJ2t3JyBhcmd1bWVudCBjYW4gYmUgTlVMTC4KKyAgICAgTlVMTC4KICAgICAgICAqLwogCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCisgICAgUHlBUElfRlVOQyhQeU9iamVjdCopIF9QeVN0YWNrX0FzVHVwbGUoCisgICAgICAgIFB5T2JqZWN0ICoqc3RhY2ssCisgICAgICAgIFB5X3NzaXplX3QgbmFyZ3MpOworCisgICAgLyogQ29udmVydCBrZXl3b3JkIGFyZ3VtZW50cyBmcm9tIHRoZSAoc3RhY2ssIGt3bmFtZXMpIGZvcm1hdCB0byBhIFB5dGhvbgorICAgICAgIGRpY3Rpb25hcnkuCisKKyAgICAgICBrd25hbWVzIG11c3Qgb25seSBjb250YWlucyBzdHIgc3RyaW5ncywgbm8gc3ViY2xhc3MsIGFuZCBhbGwga2V5cyBtdXN0CisgICAgICAgYmUgdW5pcXVlLiBrd25hbWVzIGlzIG5vdCBjaGVja2VkLCB1c3VhbGx5IHRoZXNlIGNoZWNrcyBhcmUgZG9uZSBiZWZvcmUgb3IgbGF0ZXIKKyAgICAgICBjYWxsaW5nIF9QeVN0YWNrX0FzRGljdCgpLiBGb3IgZXhhbXBsZSwgX1B5QXJnX1BhcnNlU3RhY2soKSByYWlzZXMgYW4KKyAgICAgICBlcnJvciBpZiBhIGtleSBpcyBub3QgYSBzdHJpbmcuICovCisgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlTdGFja19Bc0RpY3QoCisgICAgICAgIFB5T2JqZWN0ICoqdmFsdWVzLAorICAgICAgICBQeU9iamVjdCAqa3duYW1lcyk7CisKKyAgICAvKiBDb252ZXJ0IChhcmdzLCBuYXJncywga3dhcmdzKSBpbnRvIGEgKHN0YWNrLCBuYXJncywga3duYW1lcykuCisKKyAgICAgICBSZXR1cm4gYSBuZXcgc3RhY2sgd2hpY2ggc2hvdWxkIGJlIHJlbGVhc2VkIGJ5IFB5TWVtX0ZyZWUoKSwgb3IgcmV0dXJuCisgICAgICAgYXJncyB1bmNoYW5nZWQgaWYga3dhcmdzIGlzIE5VTEwgb3IgYW4gZW1wdHkgZGljdGlvbmFyeS4KKworICAgICAgIFRoZSBzdGFjayB1c2VzIGJvcnJvd2VkIHJlZmVyZW5jZXMuCisKKyAgICAgICBUaGUgdHlwZSBvZiBrZXl3b3JkIGtleXMgaXMgbm90IGNoZWNrZWQsIHRoZXNlIGNoZWNrcyBzaG91bGQgYmUgZG9uZQorICAgICAgIGxhdGVyIChleDogX1B5QXJnX1BhcnNlU3RhY2spLiAqLworICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QgKiopIF9QeVN0YWNrX1VucGFja0RpY3QoCisgICAgICAgIFB5T2JqZWN0ICoqYXJncywKKyAgICAgICAgUHlfc3NpemVfdCBuYXJncywKKyAgICAgICAgUHlPYmplY3QgKmt3YXJncywKKyAgICAgICAgUHlPYmplY3QgKiprd25hbWVzLAorICAgICAgICBQeU9iamVjdCAqZnVuYyk7CisKKyAgICAvKiBDYWxsIHRoZSBjYWxsYWJsZSBvYmplY3QgZnVuYyB3aXRoIHRoZSAiZmFzdCBjYWxsIiBjYWxsaW5nIGNvbnZlbnRpb246CisgICAgICAgYXJncyBpcyBhIEMgYXJyYXkgZm9yIHBvc2l0aW9uYWwgYXJndW1lbnRzIChuYXJncyBpcyB0aGUgbnVtYmVyIG9mCisgICAgICAgcG9zaXRpb25hbCBhcmd1bWVudHMpLCBrd2FyZ3MgaXMgYSBkaWN0aW9uYXJ5IGZvciBrZXl3b3JkIGFyZ3VtZW50cy4KKworICAgICAgIElmIG5hcmdzIGlzIGVxdWFsIHRvIHplcm8sIGFyZ3MgY2FuIGJlIE5VTEwuIGt3YXJncyBjYW4gYmUgTlVMTC4KKyAgICAgICBuYXJncyBtdXN0IGJlIGdyZWF0ZXIgb3IgZXF1YWwgdG8gemVyby4KKworICAgICAgIFJldHVybiB0aGUgcmVzdWx0IG9uIHN1Y2Nlc3MuIFJhaXNlIGFuIGV4Y2VwdGlvbiBvbiByZXR1cm4gTlVMTCBvbgorICAgICAgIGVycm9yLiAqLworICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5T2JqZWN0X0Zhc3RDYWxsRGljdChQeU9iamVjdCAqZnVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqa3dhcmdzKTsKKworICAgIC8qIENhbGwgdGhlIGNhbGxhYmxlIG9iamVjdCBmdW5jIHdpdGggdGhlICJmYXN0IGNhbGwiIGNhbGxpbmcgY29udmVudGlvbjoKKyAgICAgICBhcmdzIGlzIGEgQyBhcnJheSBmb3IgcG9zaXRpb25hbCBhcmd1bWVudHMgZm9sbG93ZWQgYnkgdmFsdWVzIG9mCisgICAgICAga2V5d29yZCBhcmd1bWVudHMuIEtleXMgb2Yga2V5d29yZCBhcmd1bWVudHMgYXJlIHN0b3JlZCBhcyBhIHR1cGxlCisgICAgICAgb2Ygc3RyaW5ncyBpbiBrd25hbWVzLiBuYXJncyBpcyB0aGUgbnVtYmVyIG9mIHBvc2l0aW9uYWwgcGFyYW1ldGVycyBhdAorICAgICAgIHRoZSBiZWdpbm5pbmcgb2Ygc3RhY2suIFRoZSBzaXplIG9mIGt3bmFtZXMgZ2l2ZXMgdGhlIG51bWJlciBvZiBrZXl3b3JkCisgICAgICAgdmFsdWVzIGluIHRoZSBzdGFjayBhZnRlciBwb3NpdGlvbmFsIGFyZ3VtZW50cy4KKworICAgICAgIGt3bmFtZXMgbXVzdCBvbmx5IGNvbnRhaW5zIHN0ciBzdHJpbmdzLCBubyBzdWJjbGFzcywgYW5kIGFsbCBrZXlzIG11c3QKKyAgICAgICBiZSB1bmlxdWUuCisKKyAgICAgICBJZiBuYXJncyBpcyBlcXVhbCB0byB6ZXJvIGFuZCB0aGVyZSBpcyBubyBrZXl3b3JkIGFyZ3VtZW50IChrd25hbWVzIGlzCisgICAgICAgTlVMTCBvciBpdHMgc2l6ZSBpcyB6ZXJvKSwgYXJncyBjYW4gYmUgTlVMTC4KKworICAgICAgIFJldHVybiB0aGUgcmVzdWx0IG9uIHN1Y2Nlc3MuIFJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIE5VTEwgb24KKyAgICAgICBlcnJvci4gKi8KKyAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU9iamVjdF9GYXN0Q2FsbEtleXdvcmRzCisgICAgICAgKFB5T2JqZWN0ICpmdW5jLAorICAgICAgICBQeU9iamVjdCAqKmFyZ3MsCisgICAgICAgIFB5X3NzaXplX3QgbmFyZ3MsCisgICAgICAgIFB5T2JqZWN0ICprd25hbWVzKTsKKworI2RlZmluZSBfUHlPYmplY3RfRmFzdENhbGwoZnVuYywgYXJncywgbmFyZ3MpIFwKKyAgICBfUHlPYmplY3RfRmFzdENhbGxEaWN0KChmdW5jKSwgKGFyZ3MpLCAobmFyZ3MpLCBOVUxMKQorCisjZGVmaW5lIF9QeU9iamVjdF9DYWxsTm9BcmcoZnVuYykgXAorICAgIF9QeU9iamVjdF9GYXN0Q2FsbCgoZnVuYyksIE5VTEwsIDApCisKKyNkZWZpbmUgX1B5T2JqZWN0X0NhbGxBcmcxKGZ1bmMsIGFyZykgXAorICAgIF9QeU9iamVjdF9GYXN0Q2FsbCgoZnVuYyksICYoYXJnKSwgMSkKKworICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5T2JqZWN0X0NhbGxfUHJlcGVuZChQeU9iamVjdCAqZnVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprd2FyZ3MpOworCiAgICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5X0NoZWNrRnVuY3Rpb25SZXN1bHQoUHlPYmplY3QgKmZ1bmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnJlc3VsdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp3aGVyZSk7Ci0jZW5kaWYKKyNlbmRpZiAgIC8qIFB5X0xJTUlURURfQVBJICovCiAKICAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU9iamVjdF9DYWxsT2JqZWN0KFB5T2JqZWN0ICpjYWxsYWJsZV9vYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncyk7CkBAIC0zMTUsNiArMzk1LDcgQEAKICAgICAgUHl0aG9uIGV4cHJlc3Npb246IG8ubWV0aG9kKGFyZ3MpLgogICAgICAgICovCiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKICAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKFB5T2JqZWN0ICpvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X0lkZW50aWZpZXIgKm1ldGhvZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKTsKQEAgLTMyMyw2ICs0MDQsNyBAQAogICAgICAgICAgTGlrZSBQeU9iamVjdF9DYWxsTWV0aG9kLCBidXQgZXhwZWN0IGEgX1B5X0lkZW50aWZpZXIqIGFzIHRoZQogICAgICAgICAgbWV0aG9kIG5hbWUuCiAgICAgICAgKi8KKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU9iamVjdF9DYWxsRnVuY3Rpb25fU2l6ZVQoUHlPYmplY3QgKmNhbGxhYmxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZm9ybWF0LApAQCAtMzMxLDEwICs0MTMsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pOworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU9iamVjdF9DYWxsTWV0aG9kSWRfU2l6ZVQoUHlPYmplY3QgKm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X0lkZW50aWZpZXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLik7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAKICAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKFB5T2JqZWN0ICpjYWxsYWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLik7CkBAIC0zNTAsOSArNDM0LDExIEBACiAKICAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncyhQeU9iamVjdCAqbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWV0aG9kLCAuLi4pOworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU9iamVjdF9DYWxsTWV0aG9kSWRPYmpBcmdzKFB5T2JqZWN0ICpvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKm1ldGhvZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogICAgICAgIC8qCiAgICAgIENhbGwgdGhlIG1ldGhvZCBuYW1lZCBtIG9mIG9iamVjdCBvIHdpdGggYSB2YXJpYWJsZSBudW1iZXIgb2YKQEAgLTEyNzAsMTMgKzEzNTYsMTMgQEAKIFB5QVBJX0ZVTkMoY2hhciAqY29uc3QgKikgX1B5U2VxdWVuY2VfQnl0ZXNUb0NoYXJwQXJyYXkoUHlPYmplY3QqIHNlbGYpOwogCiBQeUFQSV9GVU5DKHZvaWQpIF9QeV9GcmVlQ2hhclBBcnJheShjaGFyICpjb25zdCBhcnJheVtdKTsKLSNlbmRpZgogCiAvKiBGb3IgaW50ZXJuYWwgdXNlIGJ5IGJ1ZmZlciBBUEkgZnVuY3Rpb25zICovCiBQeUFQSV9GVU5DKHZvaWQpIF9QeV9hZGRfb25lX3RvX2luZGV4X0YoaW50IG5kLCBQeV9zc2l6ZV90ICppbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQeV9zc2l6ZV90ICpzaGFwZSk7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeV9hZGRfb25lX3RvX2luZGV4X0MoaW50IG5kLCBQeV9zc2l6ZV90ICppbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQeV9zc2l6ZV90ICpzaGFwZSk7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAKIAogI2lmZGVmIF9fY3BsdXNwbHVzCmRpZmYgLS1naXQgYS9JbmNsdWRlL2FzZGwuaCBiL0luY2x1ZGUvYXNkbC5oCmluZGV4IDQ5NTE1M2MuLjM1ZTlmYTEgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvYXNkbC5oCisrKyBiL0luY2x1ZGUvYXNkbC5oCkBAIC02LDYgKzYsNyBAQAogdHlwZWRlZiBQeU9iamVjdCAqIGJ5dGVzOwogdHlwZWRlZiBQeU9iamVjdCAqIG9iamVjdDsKIHR5cGVkZWYgUHlPYmplY3QgKiBzaW5nbGV0b247Cit0eXBlZGVmIFB5T2JqZWN0ICogY29uc3RhbnQ7CiAKIC8qIEl0IHdvdWxkIGJlIG5pY2UgaWYgdGhlIGNvZGUgZ2VuZXJhdGVkIGJ5IGFzZGxfYy5weSB3YXMgY29tcGxldGVseQogICAgaW5kZXBlbmRlbnQgb2YgUHl0aG9uLCBidXQgaXQgaXMgYSBnb2FsIHRoZSByZXF1aXJlcyB0b28gbXVjaCB3b3JrCmRpZmYgLS1naXQgYS9JbmNsdWRlL2J5dGVzX21ldGhvZHMuaCBiL0luY2x1ZGUvYnl0ZXNfbWV0aG9kcy5oCmluZGV4IDExZDVmNDIuLjdmYTc1NDAgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvYnl0ZXNfbWV0aG9kcy5oCisrKyBiL0luY2x1ZGUvYnl0ZXNfbWV0aG9kcy5oCkBAIC0xNyw5ICsxNywxOCBAQAogLyogVGhlc2Ugc3RvcmUgdGhlaXIgbGVuIHNpemVkIGFuc3dlciBpbiB0aGUgZ2l2ZW4gcHJlYWxsb2NhdGVkICpyZXN1bHQgYXJnLiAqLwogZXh0ZXJuIHZvaWQgX1B5X2J5dGVzX2xvd2VyKGNoYXIgKnJlc3VsdCwgY29uc3QgY2hhciAqY3B0ciwgUHlfc3NpemVfdCBsZW4pOwogZXh0ZXJuIHZvaWQgX1B5X2J5dGVzX3VwcGVyKGNoYXIgKnJlc3VsdCwgY29uc3QgY2hhciAqY3B0ciwgUHlfc3NpemVfdCBsZW4pOwotZXh0ZXJuIHZvaWQgX1B5X2J5dGVzX3RpdGxlKGNoYXIgKnJlc3VsdCwgY2hhciAqcywgUHlfc3NpemVfdCBsZW4pOwotZXh0ZXJuIHZvaWQgX1B5X2J5dGVzX2NhcGl0YWxpemUoY2hhciAqcmVzdWx0LCBjaGFyICpzLCBQeV9zc2l6ZV90IGxlbik7Ci1leHRlcm4gdm9pZCBfUHlfYnl0ZXNfc3dhcGNhc2UoY2hhciAqcmVzdWx0LCBjaGFyICpzLCBQeV9zc2l6ZV90IGxlbik7CitleHRlcm4gdm9pZCBfUHlfYnl0ZXNfdGl0bGUoY2hhciAqcmVzdWx0LCBjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IGxlbik7CitleHRlcm4gdm9pZCBfUHlfYnl0ZXNfY2FwaXRhbGl6ZShjaGFyICpyZXN1bHQsIGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3QgbGVuKTsKK2V4dGVybiB2b2lkIF9QeV9ieXRlc19zd2FwY2FzZShjaGFyICpyZXN1bHQsIGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3QgbGVuKTsKKworZXh0ZXJuIFB5T2JqZWN0ICpfUHlfYnl0ZXNfZmluZChjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLCBQeU9iamVjdCAqYXJncyk7CitleHRlcm4gUHlPYmplY3QgKl9QeV9ieXRlc19pbmRleChjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLCBQeU9iamVjdCAqYXJncyk7CitleHRlcm4gUHlPYmplY3QgKl9QeV9ieXRlc19yZmluZChjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLCBQeU9iamVjdCAqYXJncyk7CitleHRlcm4gUHlPYmplY3QgKl9QeV9ieXRlc19yaW5kZXgoY29uc3QgY2hhciAqc3RyLCBQeV9zc2l6ZV90IGxlbiwgUHlPYmplY3QgKmFyZ3MpOworZXh0ZXJuIFB5T2JqZWN0ICpfUHlfYnl0ZXNfY291bnQoY29uc3QgY2hhciAqc3RyLCBQeV9zc2l6ZV90IGxlbiwgUHlPYmplY3QgKmFyZ3MpOworZXh0ZXJuIGludCBfUHlfYnl0ZXNfY29udGFpbnMoY29uc3QgY2hhciAqc3RyLCBQeV9zc2l6ZV90IGxlbiwgUHlPYmplY3QgKmFyZyk7CitleHRlcm4gUHlPYmplY3QgKl9QeV9ieXRlc19zdGFydHN3aXRoKGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sIFB5T2JqZWN0ICphcmdzKTsKK2V4dGVybiBQeU9iamVjdCAqX1B5X2J5dGVzX2VuZHN3aXRoKGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sIFB5T2JqZWN0ICphcmdzKTsKIAogLyogVGhlIG1ha2V0cmFucygpIHN0YXRpYyBtZXRob2QuICovCiBleHRlcm4gUHlPYmplY3QqIF9QeV9ieXRlc19tYWtldHJhbnMoUHlfYnVmZmVyICpmcm0sIFB5X2J1ZmZlciAqdG8pOwpAQCAtMzcsNyArNDYsMTkgQEAKIGV4dGVybiBjb25zdCBjaGFyIF9QeV90aXRsZV9fZG9jX19bXTsKIGV4dGVybiBjb25zdCBjaGFyIF9QeV9jYXBpdGFsaXplX19kb2NfX1tdOwogZXh0ZXJuIGNvbnN0IGNoYXIgX1B5X3N3YXBjYXNlX19kb2NfX1tdOworZXh0ZXJuIGNvbnN0IGNoYXIgX1B5X2NvdW50X19kb2NfX1tdOworZXh0ZXJuIGNvbnN0IGNoYXIgX1B5X2ZpbmRfX2RvY19fW107CitleHRlcm4gY29uc3QgY2hhciBfUHlfaW5kZXhfX2RvY19fW107CitleHRlcm4gY29uc3QgY2hhciBfUHlfcmZpbmRfX2RvY19fW107CitleHRlcm4gY29uc3QgY2hhciBfUHlfcmluZGV4X19kb2NfX1tdOworZXh0ZXJuIGNvbnN0IGNoYXIgX1B5X3N0YXJ0c3dpdGhfX2RvY19fW107CitleHRlcm4gY29uc3QgY2hhciBfUHlfZW5kc3dpdGhfX2RvY19fW107CiBleHRlcm4gY29uc3QgY2hhciBfUHlfbWFrZXRyYW5zX19kb2NfX1tdOworZXh0ZXJuIGNvbnN0IGNoYXIgX1B5X2V4cGFuZHRhYnNfX2RvY19fW107CitleHRlcm4gY29uc3QgY2hhciBfUHlfbGp1c3RfX2RvY19fW107CitleHRlcm4gY29uc3QgY2hhciBfUHlfcmp1c3RfX2RvY19fW107CitleHRlcm4gY29uc3QgY2hhciBfUHlfY2VudGVyX19kb2NfX1tdOworZXh0ZXJuIGNvbnN0IGNoYXIgX1B5X3pmaWxsX19kb2NfX1tdOwogCiAvKiB0aGlzIGlzIG5lZWRlZCBiZWNhdXNlIHNvbWUgZG9jcyBhcmUgc2hhcmVkIGZyb20gdGhlIC5vLCBub3Qgc3RhdGljICovCiAjZGVmaW5lIFB5RG9jX1NUUlZBUl9zaGFyZWQobmFtZSxzdHIpIGNvbnN0IGNoYXIgbmFtZVtdID0gUHlEb2NfU1RSKHN0cikKZGlmZiAtLWdpdCBhL0luY2x1ZGUvYnl0ZXNvYmplY3QuaCBiL0luY2x1ZGUvYnl0ZXNvYmplY3QuaAppbmRleCA2YzFlMGMzLi45OGUyOWI2IDEwMDY0NAotLS0gYS9JbmNsdWRlL2J5dGVzb2JqZWN0LmgKKysrIGIvSW5jbHVkZS9ieXRlc29iamVjdC5oCkBAIC02MiwxMSArNjIsMjMgQEAKIFB5QVBJX0ZVTkModm9pZCkgUHlCeXRlc19Db25jYXRBbmREZWwoUHlPYmplY3QgKiosIFB5T2JqZWN0ICopOwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhpbnQpIF9QeUJ5dGVzX1Jlc2l6ZShQeU9iamVjdCAqKiwgUHlfc3NpemVfdCk7Ci1QeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeUJ5dGVzX0Zvcm1hdChQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBfUHlCeXRlc19Gb3JtYXRFeCgKKyAgICBjb25zdCBjaGFyICpmb3JtYXQsCisgICAgUHlfc3NpemVfdCBmb3JtYXRfbGVuLAorICAgIFB5T2JqZWN0ICphcmdzLAorICAgIGludCB1c2VfYnl0ZWFycmF5KTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBfUHlCeXRlc19Gcm9tSGV4KAorICAgIFB5T2JqZWN0ICpzdHJpbmcsCisgICAgaW50IHVzZV9ieXRlYXJyYXkpOwogI2VuZGlmCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5Qnl0ZXNfRGVjb2RlRXNjYXBlKGNvbnN0IGNoYXIgKiwgUHlfc3NpemVfdCwKIAkJCQkJCSAgIGNvbnN0IGNoYXIgKiwgUHlfc3NpemVfdCwKIAkJCQkJCSAgIGNvbnN0IGNoYXIgKik7CisvKiBIZWxwZXIgZm9yIFB5Qnl0ZXNfRGVjb2RlRXNjYXBlIHRoYXQgZGV0ZWN0cyBpbnZhbGlkIGVzY2FwZSBjaGFycy4gKi8KK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5Qnl0ZXNfRGVjb2RlRXNjYXBlKGNvbnN0IGNoYXIgKiwgUHlfc3NpemVfdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiwgUHlfc3NpemVfdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiopOwogCiAvKiBNYWNybywgdHJhZGluZyBzYWZldHkgZm9yIHNwZWVkICovCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCkBAIC0xMjMsNiArMTM1LDg3IEBACiAjZGVmaW5lIEZfQUxUCSgxPDwzKQogI2RlZmluZSBGX1pFUk8JKDE8PDQpCiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKKy8qIFRoZSBfUHlCeXRlc1dyaXRlciBzdHJ1Y3R1cmUgaXMgYmlnOiBpdCBjb250YWlucyBhbiBlbWJlZGRlZCAic3RhY2sgYnVmZmVyIi4KKyAgIEEgX1B5Qnl0ZXNXcml0ZXIgdmFyaWFibGUgbXVzdCBiZSBkZWNsYXJlZCBhdCB0aGUgZW5kIG9mIHZhcmlhYmxlcyBpbiBhCisgICBmdW5jdGlvbiB0byBvcHRpbWl6ZSB0aGUgbWVtb3J5IGFsbG9jYXRpb24gb24gdGhlIHN0YWNrLiAqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIC8qIGJ5dGVzLCBieXRlYXJyYXkgb3IgTlVMTCAod2hlbiB0aGUgc21hbGwgYnVmZmVyIGlzIHVzZWQpICovCisgICAgUHlPYmplY3QgKmJ1ZmZlcjsKKworICAgIC8qIE51bWJlciBvZiBhbGxvY2F0ZWQgc2l6ZS4gKi8KKyAgICBQeV9zc2l6ZV90IGFsbG9jYXRlZDsKKworICAgIC8qIE1pbmltdW0gbnVtYmVyIG9mIGFsbG9jYXRlZCBieXRlcywKKyAgICAgICBpbmNyZW1lbnRlZCBieSBfUHlCeXRlc1dyaXRlcl9QcmVwYXJlKCkgKi8KKyAgICBQeV9zc2l6ZV90IG1pbl9zaXplOworCisgICAgLyogSWYgbm9uLXplcm8sIHVzZSBhIGJ5dGVhcnJheSBpbnN0ZWFkIG9mIGEgYnl0ZXMgb2JqZWN0IGZvciBidWZmZXIuICovCisgICAgaW50IHVzZV9ieXRlYXJyYXk7CisKKyAgICAvKiBJZiBub24temVybywgb3ZlcmFsbG9jYXRlIHRoZSBidWZmZXIgKGRlZmF1bHQ6IDApLgorICAgICAgIFRoaXMgZmxhZyBtdXN0IGJlIHplcm8gaWYgdXNlX2J5dGVhcnJheSBpcyBub24temVyby4gKi8KKyAgICBpbnQgb3ZlcmFsbG9jYXRlOworCisgICAgLyogU3RhY2sgYnVmZmVyICovCisgICAgaW50IHVzZV9zbWFsbF9idWZmZXI7CisgICAgY2hhciBzbWFsbF9idWZmZXJbNTEyXTsKK30gX1B5Qnl0ZXNXcml0ZXI7CisKKy8qIEluaXRpYWxpemUgYSBieXRlcyB3cml0ZXIKKworICAgQnkgZGVmYXVsdCwgdGhlIG92ZXJhbGxvY2F0aW9uIGlzIGRpc2FibGVkLiBTZXQgdGhlIG92ZXJhbGxvY2F0ZSBhdHRyaWJ1dGUKKyAgIHRvIGNvbnRyb2wgdGhlIGFsbG9jYXRpb24gb2YgdGhlIGJ1ZmZlci4gKi8KK1B5QVBJX0ZVTkModm9pZCkgX1B5Qnl0ZXNXcml0ZXJfSW5pdChfUHlCeXRlc1dyaXRlciAqd3JpdGVyKTsKKworLyogR2V0IHRoZSBidWZmZXIgY29udGVudCBhbmQgcmVzZXQgdGhlIHdyaXRlci4KKyAgIFJldHVybiBhIGJ5dGVzIG9iamVjdCwgb3IgYSBieXRlYXJyYXkgb2JqZWN0IGlmIHVzZV9ieXRlYXJyYXkgaXMgbm9uLXplcm8uCisgICBSYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiBOVUxMIG9uIGVycm9yLiAqLworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlCeXRlc1dyaXRlcl9GaW5pc2goX1B5Qnl0ZXNXcml0ZXIgKndyaXRlciwKKyAgICB2b2lkICpzdHIpOworCisvKiBEZWFsbG9jYXRlIG1lbW9yeSBvZiBhIHdyaXRlciAoY2xlYXIgaXRzIGludGVybmFsIGJ1ZmZlcikuICovCitQeUFQSV9GVU5DKHZvaWQpIF9QeUJ5dGVzV3JpdGVyX0RlYWxsb2MoX1B5Qnl0ZXNXcml0ZXIgKndyaXRlcik7CisKKy8qIEFsbG9jYXRlIHRoZSBidWZmZXIgdG8gd3JpdGUgc2l6ZSBieXRlcy4KKyAgIFJldHVybiB0aGUgcG9pbnRlciB0byB0aGUgYmVnaW5uaW5nIG9mIGJ1ZmZlciBkYXRhLgorICAgUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gTlVMTCBvbiBlcnJvci4gKi8KK1B5QVBJX0ZVTkModm9pZCopIF9QeUJ5dGVzV3JpdGVyX0FsbG9jKF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsCisgICAgUHlfc3NpemVfdCBzaXplKTsKKworLyogRW5zdXJlIHRoYXQgdGhlIGJ1ZmZlciBpcyBsYXJnZSBlbm91Z2ggdG8gd3JpdGUgKnNpemUqIGJ5dGVzLgorICAgQWRkIHNpemUgdG8gdGhlIHdyaXRlciBtaW5pbXVtIHNpemUgKG1pbl9zaXplIGF0dHJpYnV0ZSkuCisKKyAgIHN0ciBpcyB0aGUgY3VycmVudCBwb2ludGVyIGluc2lkZSB0aGUgYnVmZmVyLgorICAgUmV0dXJuIHRoZSB1cGRhdGVkIGN1cnJlbnQgcG9pbnRlciBpbnNpZGUgdGhlIGJ1ZmZlci4KKyAgIFJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIE5VTEwgb24gZXJyb3IuICovCitQeUFQSV9GVU5DKHZvaWQqKSBfUHlCeXRlc1dyaXRlcl9QcmVwYXJlKF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsCisgICAgdm9pZCAqc3RyLAorICAgIFB5X3NzaXplX3Qgc2l6ZSk7CisKKy8qIFJlc2l6ZSB0aGUgYnVmZmVyIHRvIG1ha2UgaXQgbGFyZ2VyLgorICAgVGhlIG5ldyBidWZmZXIgbWF5IGJlIGxhcmdlciB0aGFuIHNpemUgYnl0ZXMgYmVjYXVzZSBvZiBvdmVyYWxsb2NhdGlvbi4KKyAgIFJldHVybiB0aGUgdXBkYXRlZCBjdXJyZW50IHBvaW50ZXIgaW5zaWRlIHRoZSBidWZmZXIuCisgICBSYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiBOVUxMIG9uIGVycm9yLgorCisgICBOb3RlOiBzaXplIG11c3QgYmUgZ3JlYXRlciB0aGFuIHRoZSBudW1iZXIgb2YgYWxsb2NhdGVkIGJ5dGVzIGluIHRoZSB3cml0ZXIuCisKKyAgIFRoaXMgZnVuY3Rpb24gZG9lc24ndCB1c2UgdGhlIHdyaXRlciBtaW5pbXVtIHNpemUgKG1pbl9zaXplIGF0dHJpYnV0ZSkuCisKKyAgIFNlZSBhbHNvIF9QeUJ5dGVzV3JpdGVyX1ByZXBhcmUoKS4KKyAgICovCitQeUFQSV9GVU5DKHZvaWQqKSBfUHlCeXRlc1dyaXRlcl9SZXNpemUoX1B5Qnl0ZXNXcml0ZXIgKndyaXRlciwKKyAgICB2b2lkICpzdHIsCisgICAgUHlfc3NpemVfdCBzaXplKTsKKworLyogV3JpdGUgYnl0ZXMuCisgICBSYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiBOVUxMIG9uIGVycm9yLiAqLworUHlBUElfRlVOQyh2b2lkKikgX1B5Qnl0ZXNXcml0ZXJfV3JpdGVCeXRlcyhfUHlCeXRlc1dyaXRlciAqd3JpdGVyLAorICAgIHZvaWQgKnN0ciwKKyAgICBjb25zdCB2b2lkICpieXRlcywKKyAgICBQeV9zc2l6ZV90IHNpemUpOworI2VuZGlmICAgLyogUHlfTElNSVRFRF9BUEkgKi8KKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL0luY2x1ZGUvY2V2YWwuaCBiL0luY2x1ZGUvY2V2YWwuaAppbmRleCBiNTM3M2E5Li44OWM2MDYyIDEwMDY0NAotLS0gYS9JbmNsdWRlL2NldmFsLmgKKysrIGIvSW5jbHVkZS9jZXZhbC5oCkBAIC04LDcgKzgsNyBAQAogLyogSW50ZXJmYWNlIHRvIHJhbmRvbSBwYXJ0cyBpbiBjZXZhbC5jICovCiAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlFdmFsX0NhbGxPYmplY3RXaXRoS2V5d29yZHMoCi0gICAgUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CisgICAgUHlPYmplY3QgKmZ1bmMsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKTsKIAogLyogSW5saW5lIHRoaXMgKi8KICNkZWZpbmUgUHlFdmFsX0NhbGxPYmplY3QoZnVuYyxhcmcpIFwKQEAgLTI1LDYgKzI1LDEwIEBACiBQeUFQSV9GVU5DKHZvaWQpIFB5RXZhbF9TZXRUcmFjZShQeV90cmFjZWZ1bmMsIFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyh2b2lkKSBfUHlFdmFsX1NldENvcm91dGluZVdyYXBwZXIoUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeUV2YWxfR2V0Q29yb3V0aW5lV3JhcHBlcih2b2lkKTsKK1B5QVBJX0ZVTkModm9pZCkgX1B5RXZhbF9TZXRBc3luY0dlbkZpcnN0aXRlcihQeU9iamVjdCAqKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5RXZhbF9HZXRBc3luY0dlbkZpcnN0aXRlcih2b2lkKTsKK1B5QVBJX0ZVTkModm9pZCkgX1B5RXZhbF9TZXRBc3luY0dlbkZpbmFsaXplcihQeU9iamVjdCAqKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5RXZhbF9HZXRBc3luY0dlbkZpbmFsaXplcih2b2lkKTsKICNlbmRpZgogCiBzdHJ1Y3QgX2ZyYW1lOyAvKiBBdm9pZCBpbmNsdWRpbmcgZnJhbWVvYmplY3QuaCAqLwpAQCAtMTE5LDYgKzEyMyw5IEBACiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RXZhbF9HZXRDYWxsU3RhdHMoUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RXZhbF9FdmFsRnJhbWUoc3RydWN0IF9mcmFtZSAqKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlFdmFsX0V2YWxGcmFtZUV4KHN0cnVjdCBfZnJhbWUgKmYsIGludCBleGMpOworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlFdmFsX0V2YWxGcmFtZURlZmF1bHQoc3RydWN0IF9mcmFtZSAqZiwgaW50IGV4Yyk7CisjZW5kaWYKIAogLyogSW50ZXJmYWNlIGZvciB0aHJlYWRzLgogCkBAIC0xNzIsNyArMTc5LDkgQEAKIAogUHlBUElfRlVOQyhpbnQpICBQeUV2YWxfVGhyZWFkc0luaXRpYWxpemVkKHZvaWQpOwogUHlBUElfRlVOQyh2b2lkKSBQeUV2YWxfSW5pdFRocmVhZHModm9pZCk7CisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKHZvaWQpIF9QeUV2YWxfRmluaVRocmVhZHModm9pZCk7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiBQeUFQSV9GVU5DKHZvaWQpIFB5RXZhbF9BY3F1aXJlTG9jayh2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlFdmFsX1JlbGVhc2VMb2NrKHZvaWQpOwogUHlBUElfRlVOQyh2b2lkKSBQeUV2YWxfQWNxdWlyZVRocmVhZChQeVRocmVhZFN0YXRlICp0c3RhdGUpOwpAQCAtMTg0LDYgKzE5MywxMCBAQAogUHlBUElfRlVOQyh1bnNpZ25lZCBsb25nKSBfUHlFdmFsX0dldFN3aXRjaEludGVydmFsKHZvaWQpOwogI2VuZGlmCiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkMoUHlfc3NpemVfdCkgX1B5RXZhbF9SZXF1ZXN0Q29kZUV4dHJhSW5kZXgoZnJlZWZ1bmMpOworI2VuZGlmCisKICNkZWZpbmUgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUyB7IFwKICAgICAgICAgICAgICAgICAgICAgICAgIFB5VGhyZWFkU3RhdGUgKl9zYXZlOyBcCiAgICAgICAgICAgICAgICAgICAgICAgICBfc2F2ZSA9IFB5RXZhbF9TYXZlVGhyZWFkKCk7CkBAIC0yMDYsNiArMjE5LDE0IEBACiBQeUFQSV9GVU5DKHZvaWQpIF9QeUV2YWxfU2lnbmFsQXN5bmNFeGModm9pZCk7CiAjZW5kaWYKIAorLyogTWFza3MgYW5kIHZhbHVlcyB1c2VkIGJ5IEZPUk1BVF9WQUxVRSBvcGNvZGUuICovCisjZGVmaW5lIEZWQ19NQVNLICAgICAgMHgzCisjZGVmaW5lIEZWQ19OT05FICAgICAgMHgwCisjZGVmaW5lIEZWQ19TVFIgICAgICAgMHgxCisjZGVmaW5lIEZWQ19SRVBSICAgICAgMHgyCisjZGVmaW5lIEZWQ19BU0NJSSAgICAgMHgzCisjZGVmaW5lIEZWU19NQVNLICAgICAgMHg0CisjZGVmaW5lIEZWU19IQVZFX1NQRUMgMHg0CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9jb2RlLmggYi9JbmNsdWRlL2NvZGUuaAppbmRleCA4ZWNmMzhhLi5jNWZjZTNjIDEwMDY0NAotLS0gYS9JbmNsdWRlL2NvZGUuaAorKysgYi9JbmNsdWRlL2NvZGUuaApAQCAtNyw2ICs3LDE2IEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCit0eXBlZGVmIHVpbnQxNl90IF9QeV9DT0RFVU5JVDsKKworI2lmZGVmIFdPUkRTX0JJR0VORElBTgorIyAgZGVmaW5lIF9QeV9PUENPREUod29yZCkgKCh3b3JkKSA+PiA4KQorIyAgZGVmaW5lIF9QeV9PUEFSRyh3b3JkKSAoKHdvcmQpICYgMjU1KQorI2Vsc2UKKyMgIGRlZmluZSBfUHlfT1BDT0RFKHdvcmQpICgod29yZCkgJiAyNTUpCisjICBkZWZpbmUgX1B5X09QQVJHKHdvcmQpICgod29yZCkgPj4gOCkKKyNlbmRpZgorCiAvKiBCeXRlY29kZSBvYmplY3QgKi8KIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECkBAIC0xNSwyNiArMjUsMjkgQEAKICAgICBpbnQgY29fbmxvY2FsczsJCS8qICNsb2NhbCB2YXJpYWJsZXMgKi8KICAgICBpbnQgY29fc3RhY2tzaXplOwkJLyogI2VudHJpZXMgbmVlZGVkIGZvciBldmFsdWF0aW9uIHN0YWNrICovCiAgICAgaW50IGNvX2ZsYWdzOwkJLyogQ09fLi4uLCBzZWUgYmVsb3cgKi8KKyAgICBpbnQgY29fZmlyc3RsaW5lbm87ICAgLyogZmlyc3Qgc291cmNlIGxpbmUgbnVtYmVyICovCiAgICAgUHlPYmplY3QgKmNvX2NvZGU7CQkvKiBpbnN0cnVjdGlvbiBvcGNvZGVzICovCiAgICAgUHlPYmplY3QgKmNvX2NvbnN0czsJLyogbGlzdCAoY29uc3RhbnRzIHVzZWQpICovCiAgICAgUHlPYmplY3QgKmNvX25hbWVzOwkJLyogbGlzdCBvZiBzdHJpbmdzIChuYW1lcyB1c2VkKSAqLwogICAgIFB5T2JqZWN0ICpjb192YXJuYW1lczsJLyogdHVwbGUgb2Ygc3RyaW5ncyAobG9jYWwgdmFyaWFibGUgbmFtZXMpICovCiAgICAgUHlPYmplY3QgKmNvX2ZyZWV2YXJzOwkvKiB0dXBsZSBvZiBzdHJpbmdzIChmcmVlIHZhcmlhYmxlIG5hbWVzKSAqLwogICAgIFB5T2JqZWN0ICpjb19jZWxsdmFyczsgICAgICAvKiB0dXBsZSBvZiBzdHJpbmdzIChjZWxsIHZhcmlhYmxlIG5hbWVzKSAqLwotICAgIC8qIFRoZSByZXN0IGFyZW4ndCB1c2VkIGluIGVpdGhlciBoYXNoIG9yIGNvbXBhcmlzb25zLCBleGNlcHQgZm9yCi0gICAgICAgY29fbmFtZSAodXNlZCBpbiBib3RoKSBhbmQgY29fZmlyc3RsaW5lbm8gKHVzZWQgb25seSBpbgotICAgICAgIGNvbXBhcmlzb25zKS4gIFRoaXMgaXMgZG9uZSB0byBwcmVzZXJ2ZSB0aGUgbmFtZSBhbmQgbGluZSBudW1iZXIKKyAgICAvKiBUaGUgcmVzdCBhcmVuJ3QgdXNlZCBpbiBlaXRoZXIgaGFzaCBvciBjb21wYXJpc29ucywgZXhjZXB0IGZvciBjb19uYW1lLAorICAgICAgIHVzZWQgaW4gYm90aC4gVGhpcyBpcyBkb25lIHRvIHByZXNlcnZlIHRoZSBuYW1lIGFuZCBsaW5lIG51bWJlcgogICAgICAgIGZvciB0cmFjZWJhY2tzIGFuZCBkZWJ1Z2dlcnM7IG90aGVyd2lzZSwgY29uc3RhbnQgZGUtZHVwbGljYXRpb24KICAgICAgICB3b3VsZCBjb2xsYXBzZSBpZGVudGljYWwgZnVuY3Rpb25zL2xhbWJkYXMgZGVmaW5lZCBvbiBkaWZmZXJlbnQgbGluZXMuCiAgICAgKi8KICAgICB1bnNpZ25lZCBjaGFyICpjb19jZWxsMmFyZzsgLyogTWFwcyBjZWxsIHZhcnMgd2hpY2ggYXJlIGFyZ3VtZW50cy4gKi8KICAgICBQeU9iamVjdCAqY29fZmlsZW5hbWU7CS8qIHVuaWNvZGUgKHdoZXJlIGl0IHdhcyBsb2FkZWQgZnJvbSkgKi8KICAgICBQeU9iamVjdCAqY29fbmFtZTsJCS8qIHVuaWNvZGUgKG5hbWUsIGZvciByZWZlcmVuY2UpICovCi0gICAgaW50IGNvX2ZpcnN0bGluZW5vOwkJLyogZmlyc3Qgc291cmNlIGxpbmUgbnVtYmVyICovCiAgICAgUHlPYmplY3QgKmNvX2xub3RhYjsJLyogc3RyaW5nIChlbmNvZGluZyBhZGRyPC0+bGluZW5vIG1hcHBpbmcpIFNlZQogCQkJCSAgIE9iamVjdHMvbG5vdGFiX25vdGVzLnR4dCBmb3IgZGV0YWlscy4gKi8KICAgICB2b2lkICpjb196b21iaWVmcmFtZTsgICAgIC8qIGZvciBvcHRpbWl6YXRpb24gb25seSAoc2VlIGZyYW1lb2JqZWN0LmMpICovCiAgICAgUHlPYmplY3QgKmNvX3dlYWtyZWZsaXN0OyAgIC8qIHRvIHN1cHBvcnQgd2Vha3JlZnMgdG8gY29kZSBvYmplY3RzICovCisgICAgLyogU2NyYXRjaCBzcGFjZSBmb3IgZXh0cmEgZGF0YSByZWxhdGluZyB0byB0aGUgY29kZSBvYmplY3QuCisgICAgICAgVHlwZSBpcyBhIHZvaWQqIHRvIGtlZXAgdGhlIGZvcm1hdCBwcml2YXRlIGluIGNvZGVvYmplY3QuYyB0byBmb3JjZQorICAgICAgIHBlb3BsZSB0byBnbyB0aHJvdWdoIHRoZSBwcm9wZXIgQVBJcy4gKi8KKyAgICB2b2lkICpjb19leHRyYTsKIH0gUHlDb2RlT2JqZWN0OwogCiAvKiBNYXNrcyBmb3IgY29fZmxhZ3MgYWJvdmUgKi8KQEAgLTU1LDYgKzY4LDcgQEAKICAgIGBgYXN5bmMgZGVmYGAga2V5d29yZHMpICovCiAjZGVmaW5lIENPX0NPUk9VVElORSAgICAgICAgICAgIDB4MDA4MAogI2RlZmluZSBDT19JVEVSQUJMRV9DT1JPVVRJTkUgICAweDAxMDAKKyNkZWZpbmUgQ09fQVNZTkNfR0VORVJBVE9SICAgICAgMHgwMjAwCiAKIC8qIFRoZXNlIGFyZSBubyBsb25nZXIgdXNlZC4gKi8KICNpZiAwCkBAIC0xMjYsNyArMTQwLDE1IEBACiAjZW5kaWYKIAogUHlBUElfRlVOQyhQeU9iamVjdCopIFB5Q29kZV9PcHRpbWl6ZShQeU9iamVjdCAqY29kZSwgUHlPYmplY3QqIGNvbnN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm5hbWVzLCBQeU9iamVjdCAqbGluZW5vX29iaik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lcywgUHlPYmplY3QgKmxub3RhYik7CisKKworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyhpbnQpIF9QeUNvZGVfR2V0RXh0cmEoUHlPYmplY3QgKmNvZGUsIFB5X3NzaXplX3QgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICoqZXh0cmEpOworUHlBUElfRlVOQyhpbnQpIF9QeUNvZGVfU2V0RXh0cmEoUHlPYmplY3QgKmNvZGUsIFB5X3NzaXplX3QgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpleHRyYSk7CisjZW5kaWYKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9JbmNsdWRlL2RhdGV0aW1lLmggYi9JbmNsdWRlL2RhdGV0aW1lLmgKaW5kZXggMDZjYmM0YS4uM2JmMzVjYiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9kYXRldGltZS5oCisrKyBiL0luY2x1ZGUvZGF0ZXRpbWUuaApAQCAtODEsNiArODEsNyBAQAogdHlwZWRlZiBzdHJ1Y3QKIHsKICAgICBfUHlEYXRlVGltZV9USU1FSEVBRAorICAgIHVuc2lnbmVkIGNoYXIgZm9sZDsKICAgICBQeU9iamVjdCAqdHppbmZvOwogfSBQeURhdGVUaW1lX1RpbWU7ICAgICAgICAgICAgICAvKiBoYXN0emluZm8gdHJ1ZSAqLwogCkBAIC0xMDgsNiArMTA5LDcgQEAKIHR5cGVkZWYgc3RydWN0CiB7CiAgICAgX1B5RGF0ZVRpbWVfREFURVRJTUVIRUFECisgICAgdW5zaWduZWQgY2hhciBmb2xkOwogICAgIFB5T2JqZWN0ICp0emluZm87CiB9IFB5RGF0ZVRpbWVfRGF0ZVRpbWU7ICAgICAgICAgIC8qIGhhc3R6aW5mbyB0cnVlICovCiAKQEAgLTEyNSw2ICsxMjcsNyBAQAogICAgICgoKChQeURhdGVUaW1lX0RhdGVUaW1lKilvKS0+ZGF0YVs3XSA8PCAxNikgfCAgICAgICBcCiAgICAgICgoKFB5RGF0ZVRpbWVfRGF0ZVRpbWUqKW8pLT5kYXRhWzhdIDw8IDgpICB8ICAgICAgIFwKICAgICAgICgoUHlEYXRlVGltZV9EYXRlVGltZSopbyktPmRhdGFbOV0pCisjZGVmaW5lIFB5RGF0ZVRpbWVfREFURV9HRVRfRk9MRChvKSAgICAgICAgKCgoUHlEYXRlVGltZV9EYXRlVGltZSopbyktPmZvbGQpCiAKIC8qIEFwcGx5IGZvciB0aW1lIGluc3RhbmNlcy4gKi8KICNkZWZpbmUgUHlEYXRlVGltZV9USU1FX0dFVF9IT1VSKG8pICAgICAgICAoKChQeURhdGVUaW1lX1RpbWUqKW8pLT5kYXRhWzBdKQpAQCAtMTM0LDYgKzEzNyw3IEBACiAgICAgKCgoKFB5RGF0ZVRpbWVfVGltZSopbyktPmRhdGFbM10gPDwgMTYpIHwgICAgICAgICAgIFwKICAgICAgKCgoUHlEYXRlVGltZV9UaW1lKilvKS0+ZGF0YVs0XSA8PCA4KSAgfCAgICAgICAgICAgXAogICAgICAgKChQeURhdGVUaW1lX1RpbWUqKW8pLT5kYXRhWzVdKQorI2RlZmluZSBQeURhdGVUaW1lX1RJTUVfR0VUX0ZPTEQobykgICAgICAgICgoKFB5RGF0ZVRpbWVfVGltZSopbyktPmZvbGQpCiAKIC8qIEFwcGx5IGZvciB0aW1lIGRlbHRhIGluc3RhbmNlcyAqLwogI2RlZmluZSBQeURhdGVUaW1lX0RFTFRBX0dFVF9EQVlTKG8pICAgICAgICAgKCgoUHlEYXRlVGltZV9EZWx0YSopbyktPmRheXMpCkBAIC0xNjIsNiArMTY2LDExIEBACiAgICAgUHlPYmplY3QgKigqRGF0ZVRpbWVfRnJvbVRpbWVzdGFtcCkoUHlPYmplY3QqLCBQeU9iamVjdCosIFB5T2JqZWN0Kik7CiAgICAgUHlPYmplY3QgKigqRGF0ZV9Gcm9tVGltZXN0YW1wKShQeU9iamVjdCosIFB5T2JqZWN0Kik7CiAKKyAgICAvKiBQRVAgNDk1IGNvbnN0cnVjdG9ycyAqLworICAgIFB5T2JqZWN0ICooKkRhdGVUaW1lX0Zyb21EYXRlQW5kVGltZUFuZEZvbGQpKGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwKKyAgICAgICAgUHlPYmplY3QqLCBpbnQsIFB5VHlwZU9iamVjdCopOworICAgIFB5T2JqZWN0ICooKlRpbWVfRnJvbVRpbWVBbmRGb2xkKShpbnQsIGludCwgaW50LCBpbnQsIFB5T2JqZWN0KiwgaW50LCBQeVR5cGVPYmplY3QqKTsKKwogfSBQeURhdGVUaW1lX0NBUEk7CiAKICNkZWZpbmUgUHlEYXRlVGltZV9DQVBTVUxFX05BTUUgImRhdGV0aW1lLmRhdGV0aW1lX0NBUEkiCkBAIC0yMTcsMTAgKzIyNiwxOCBAQAogICAgIFB5RGF0ZVRpbWVBUEktPkRhdGVUaW1lX0Zyb21EYXRlQW5kVGltZSh5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBcCiAgICAgICAgIG1pbiwgc2VjLCB1c2VjLCBQeV9Ob25lLCBQeURhdGVUaW1lQVBJLT5EYXRlVGltZVR5cGUpCiAKKyNkZWZpbmUgUHlEYXRlVGltZV9Gcm9tRGF0ZUFuZFRpbWVBbmRGb2xkKHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbiwgc2VjLCB1c2VjLCBmb2xkKSBcCisgICAgUHlEYXRlVGltZUFQSS0+RGF0ZVRpbWVfRnJvbURhdGVBbmRUaW1lQW5kRm9sZCh5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBcCisgICAgICAgIG1pbiwgc2VjLCB1c2VjLCBQeV9Ob25lLCBmb2xkLCBQeURhdGVUaW1lQVBJLT5EYXRlVGltZVR5cGUpCisKICNkZWZpbmUgUHlUaW1lX0Zyb21UaW1lKGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCB1c2Vjb25kKSBcCiAgICAgUHlEYXRlVGltZUFQSS0+VGltZV9Gcm9tVGltZShob3VyLCBtaW51dGUsIHNlY29uZCwgdXNlY29uZCwgXAogICAgICAgICBQeV9Ob25lLCBQeURhdGVUaW1lQVBJLT5UaW1lVHlwZSkKIAorI2RlZmluZSBQeVRpbWVfRnJvbVRpbWVBbmRGb2xkKGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCB1c2Vjb25kLCBmb2xkKSBcCisgICAgUHlEYXRlVGltZUFQSS0+VGltZV9Gcm9tVGltZUFuZEZvbGQoaG91ciwgbWludXRlLCBzZWNvbmQsIHVzZWNvbmQsIFwKKyAgICAgICAgUHlfTm9uZSwgZm9sZCwgUHlEYXRlVGltZUFQSS0+VGltZVR5cGUpCisKICNkZWZpbmUgUHlEZWx0YV9Gcm9tRFNVKGRheXMsIHNlY29uZHMsIHVzZWNvbmRzKSBcCiAgICAgUHlEYXRlVGltZUFQSS0+RGVsdGFfRnJvbURlbHRhKGRheXMsIHNlY29uZHMsIHVzZWNvbmRzLCAxLCBcCiAgICAgICAgIFB5RGF0ZVRpbWVBUEktPkRlbHRhVHlwZSkKZGlmZiAtLWdpdCBhL0luY2x1ZGUvZGVzY3JvYmplY3QuaCBiL0luY2x1ZGUvZGVzY3JvYmplY3QuaAppbmRleCBlMmJhOTdmLi44ZjNlODRjIDEwMDY0NAotLS0gYS9JbmNsdWRlL2Rlc2Nyb2JqZWN0LmgKKysrIGIvSW5jbHVkZS9kZXNjcm9iamVjdC5oCkBAIC03OCw3ICs3OCw5IEBACiBQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgUHlNZXRob2REZXNjcl9UeXBlOwogUHlBUElfREFUQShQeVR5cGVPYmplY3QpIFB5V3JhcHBlckRlc2NyX1R5cGU7CiBQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgUHlEaWN0UHJveHlfVHlwZTsKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBfUHlNZXRob2RXcmFwcGVyX1R5cGU7CisjZW5kaWYgLyogUHlfTElNSVRFRF9BUEkgKi8KIAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeURlc2NyX05ld01ldGhvZChQeVR5cGVPYmplY3QgKiwgUHlNZXRob2REZWYgKik7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RGVzY3JfTmV3Q2xhc3NNZXRob2QoUHlUeXBlT2JqZWN0ICosIFB5TWV0aG9kRGVmICopOwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9kaWN0b2JqZWN0LmggYi9JbmNsdWRlL2RpY3RvYmplY3QuaAppbmRleCBiYTkwYWFmLi4zMGYxMTRlIDEwMDY0NAotLS0gYS9JbmNsdWRlL2RpY3RvYmplY3QuaAorKysgYi9JbmNsdWRlL2RpY3RvYmplY3QuaApAQCAtMjIsOCArMjIsMjEgQEAKICAqLwogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKKworICAgIC8qIE51bWJlciBvZiBpdGVtcyBpbiB0aGUgZGljdGlvbmFyeSAqLwogICAgIFB5X3NzaXplX3QgbWFfdXNlZDsKKworICAgIC8qIERpY3Rpb25hcnkgdmVyc2lvbjogZ2xvYmFsbHkgdW5pcXVlLCB2YWx1ZSBjaGFuZ2UgZWFjaCB0aW1lCisgICAgICAgdGhlIGRpY3Rpb25hcnkgaXMgbW9kaWZpZWQgKi8KKyAgICB1aW50NjRfdCBtYV92ZXJzaW9uX3RhZzsKKwogICAgIFB5RGljdEtleXNPYmplY3QgKm1hX2tleXM7CisKKyAgICAvKiBJZiBtYV92YWx1ZXMgaXMgTlVMTCwgdGhlIHRhYmxlIGlzICJjb21iaW5lZCI6IGtleXMgYW5kIHZhbHVlcworICAgICAgIGFyZSBzdG9yZWQgaW4gbWFfa2V5cy4KKworICAgICAgIElmIG1hX3ZhbHVlcyBpcyBub3QgTlVMTCwgdGhlIHRhYmxlIGlzIHNwbGl0dGVkOgorICAgICAgIGtleXMgYXJlIHN0b3JlZCBpbiBtYV9rZXlzIGFuZCB2YWx1ZXMgYXJlIHN0b3JlZCBpbiBtYV92YWx1ZXMgKi8KICAgICBQeU9iamVjdCAqKm1hX3ZhbHVlczsKIH0gUHlEaWN0T2JqZWN0OwogCkBAIC02MCw5ICs3Myw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCk7CiAjZW5kaWYKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3IoUHlPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5KTsKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5RGljdF9HZXRJdGVtSWRXaXRoRXJyb3IoUHlPYmplY3QgKmRwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKmtleSk7Ci0jaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RGljdF9TZXREZWZhdWx0KAogICAgIFB5T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKmRlZmF1bHRvYmopOwogI2VuZGlmCkBAIC05OSw3ICsxMTIsNyBAQAogUHlBUElfRlVOQyhpbnQpIF9QeURpY3RfSGFzT25seVN0cmluZ0tleXMoUHlPYmplY3QgKm1wKTsKIFB5X3NzaXplX3QgX1B5RGljdF9LZXlzU2l6ZShQeURpY3RLZXlzT2JqZWN0ICprZXlzKTsKIFB5X3NzaXplX3QgX1B5RGljdF9TaXplT2YoUHlEaWN0T2JqZWN0ICopOwotUHlPYmplY3QgKl9QeURpY3RfUG9wKFB5RGljdE9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5RGljdF9Qb3AoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiBQeU9iamVjdCAqX1B5RGljdF9Gcm9tS2V5cyhQeU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKICNkZWZpbmUgX1B5RGljdF9IYXNTcGxpdFRhYmxlKGQpICgoZCktPm1hX3ZhbHVlcyAhPSBOVUxMKQogCkBAIC0xMTksNiArMTMyLDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBvdmVycmlkZSk7CiAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKKy8qIExpa2UgUHlEaWN0X01lcmdlLCBidXQgb3ZlcnJpZGUgY2FuIGJlIDAsIDEgb3IgMi4gIElmIG92ZXJyaWRlIGlzIDAsCisgICB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBhIGtleSB3aW5zLCBpZiBvdmVycmlkZSBpcyAxLCB0aGUgbGFzdCBvY2N1cnJlbmNlCisgICBvZiBhIGtleSB3aW5zLCBpZiBvdmVycmlkZSBpcyAyLCBhIEtleUVycm9yIHdpdGggY29uZmxpY3Rpbmcga2V5IGFzCisgICBhcmd1bWVudCBpcyByYWlzZWQuCisqLworUHlBUElfRlVOQyhpbnQpIF9QeURpY3RfTWVyZ2VFeChQeU9iamVjdCAqbXAsIFB5T2JqZWN0ICpvdGhlciwgaW50IG92ZXJyaWRlKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5RGljdFZpZXdfSW50ZXJzZWN0KFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCAqb3RoZXIpOwogI2VuZGlmCiAKQEAgLTEzMiw5ICsxNTEsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgb3ZlcnJpZGUpOwogCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RGljdF9HZXRJdGVtU3RyaW5nKFB5T2JqZWN0ICpkcCwgY29uc3QgY2hhciAqa2V5KTsKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5RGljdF9HZXRJdGVtSWQoUHlPYmplY3QgKmRwLCBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKmtleSk7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiBQeUFQSV9GVU5DKGludCkgUHlEaWN0X1NldEl0ZW1TdHJpbmcoUHlPYmplY3QgKmRwLCBjb25zdCBjaGFyICprZXksIFB5T2JqZWN0ICppdGVtKTsKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoaW50KSBfUHlEaWN0X1NldEl0ZW1JZChQeU9iamVjdCAqZHAsIHN0cnVjdCBfUHlfSWRlbnRpZmllciAqa2V5LCBQeU9iamVjdCAqaXRlbSk7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiBQeUFQSV9GVU5DKGludCkgUHlEaWN0X0RlbEl0ZW1TdHJpbmcoUHlPYmplY3QgKmRwLCBjb25zdCBjaGFyICprZXkpOwogCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCmRpZmYgLS1naXQgYS9JbmNsdWRlL2ZpbGVvYmplY3QuaCBiL0luY2x1ZGUvZmlsZW9iamVjdC5oCmluZGV4IDAzMTU1ZDMuLjAzOTg0YmEgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZmlsZW9iamVjdC5oCisrKyBiL0luY2x1ZGUvZmlsZW9iamVjdC5oCkBAIC0yMyw2ICsyMyw3IEBACiAgICBJZiBub24tTlVMTCwgdGhpcyBpcyBkaWZmZXJlbnQgdGhhbiB0aGUgZGVmYXVsdCBlbmNvZGluZyBmb3Igc3RyaW5ncwogKi8KIFB5QVBJX0RBVEEoY29uc3QgY2hhciAqKSBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nOworUHlBUElfREFUQShjb25zdCBjaGFyICopIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RlRXJyb3JzOwogUHlBUElfREFUQShpbnQpIFB5X0hhc0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2Rpbmc7CiAKIC8qIEludGVybmFsIEFQSQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9maWxldXRpbHMuaCBiL0luY2x1ZGUvZmlsZXV0aWxzLmgKaW5kZXggYjRhNjgzYy4uNDAxNjQzMSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9maWxldXRpbHMuaAorKysgYi9JbmNsdWRlL2ZpbGV1dGlscy5oCkBAIC01LDggKzUsNiBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAotUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlfZGV2aWNlX2VuY29kaW5nKGludCk7Ci0KIFB5QVBJX0ZVTkMod2NoYXJfdCAqKSBQeV9EZWNvZGVMb2NhbGUoCiAgICAgY29uc3QgY2hhciAqYXJnLAogICAgIHNpemVfdCAqc2l6ZSk7CkBAIC0xNyw2ICsxNSw4IEBACiAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIAorUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlfZGV2aWNlX2VuY29kaW5nKGludCk7CisKICNpZmRlZiBNU19XSU5ET1dTCiBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0IHsKICAgICB1bnNpZ25lZCBsb25nIHN0X2RldjsKQEAgLTQ2LDEzICs0NiwxMSBAQAogUHlBUElfRlVOQyhpbnQpIF9QeV9mc3RhdF9ub3JhaXNlKAogICAgIGludCBmZCwKICAgICBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0ICpzdGF0dXMpOwotI2VuZGlmICAgLyogUHlfTElNSVRFRF9BUEkgKi8KIAogUHlBUElfRlVOQyhpbnQpIF9QeV9zdGF0KAogICAgIFB5T2JqZWN0ICpwYXRoLAogICAgIHN0cnVjdCBzdGF0ICpzdGF0dXMpOwogCi0jaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKGludCkgX1B5X29wZW4oCiAgICAgY29uc3QgY2hhciAqcGF0aG5hbWUsCiAgICAgaW50IGZsYWdzKTsKQEAgLTYwLDcgKzU4LDYgQEAKIFB5QVBJX0ZVTkMoaW50KSBfUHlfb3Blbl9ub3JhaXNlKAogICAgIGNvbnN0IGNoYXIgKnBhdGhuYW1lLAogICAgIGludCBmbGFncyk7Ci0jZW5kaWYKIAogUHlBUElfRlVOQyhGSUxFICopIF9QeV93Zm9wZW4oCiAgICAgY29uc3Qgd2NoYXJfdCAqcGF0aCwKQEAgLTEwNyw3ICsxMDQsNiBAQAogICAgIHdjaGFyX3QgKmJ1ZiwKICAgICBzaXplX3Qgc2l6ZSk7CiAKLSNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoaW50KSBfUHlfZ2V0X2luaGVyaXRhYmxlKGludCBmZCk7CiAKIFB5QVBJX0ZVTkMoaW50KSBfUHlfc2V0X2luaGVyaXRhYmxlKGludCBmZCwgaW50IGluaGVyaXRhYmxlLApAQCAtMTIxLDE4ICsxMTcsNiBAQAogUHlBUElfRlVOQyhpbnQpIF9QeV9zZXRfYmxvY2tpbmcoaW50IGZkLCBpbnQgYmxvY2tpbmcpOwogI2VuZGlmICAgLyogIU1TX1dJTkRPV1MgKi8KIAotI2lmIGRlZmluZWQgX01TQ19WRVIgJiYgX01TQ19WRVIgPj0gMTQwMCAmJiBfTVNDX1ZFUiA8IDE5MDAKLS8qIEEgcm91dGluZSB0byBjaGVjayBpZiBhIGZpbGUgZGVzY3JpcHRvciBpcyB2YWxpZCBvbiBXaW5kb3dzLiAgUmV0dXJucyAwCi0gKiBhbmQgc2V0cyBlcnJubyB0byBFQkFERiBpZiBpdCBpc24ndC4gIFRoaXMgaXMgdG8gYXZvaWQgQXNzZXJ0aW9ucwotICogZnJvbSB2YXJpb3VzIGZ1bmN0aW9ucyBpbiB0aGUgV2luZG93cyBDUlQgYmVnaW5uaW5nIHdpdGgKLSAqIFZpc3VhbCBTdHVkaW8gMjAwNQotICovCi1pbnQgX1B5VmVyaWZ5X2ZkKGludCBmZCk7Ci0KLSNlbHNlCi0jZGVmaW5lIF9QeVZlcmlmeV9mZChBKSAoMSkgLyogZHVtbXkgKi8KLSNlbmRpZgotCiAjZW5kaWYgICAvKiBQeV9MSU1JVEVEX0FQSSAqLwogCiAjaWZkZWYgX19jcGx1c3BsdXMKZGlmZiAtLWdpdCBhL0luY2x1ZGUvZmxvYXRvYmplY3QuaCBiL0luY2x1ZGUvZmxvYXRvYmplY3QuaAppbmRleCBlMjQwZmRiLi5mMTA0NGQ2IDEwMDY0NAotLS0gYS9JbmNsdWRlL2Zsb2F0b2JqZWN0LmgKKysrIGIvSW5jbHVkZS9mbG9hdG9iamVjdC5oCkBAIC03NCw5ICs3NCw5IEBACiAgKiBoYXBwZW5zIGluIHN1Y2ggY2FzZXMgaXMgcGFydGx5IGFjY2lkZW50YWwgKGFsYXMpLgogICovCiAKLS8qIFRoZSBwYWNrIHJvdXRpbmVzIHdyaXRlIDQgb3IgOCBieXRlcywgc3RhcnRpbmcgYXQgcC4gIGxlIGlzIGEgYm9vbAorLyogVGhlIHBhY2sgcm91dGluZXMgd3JpdGUgMiwgNCBvciA4IGJ5dGVzLCBzdGFydGluZyBhdCBwLiAgbGUgaXMgYSBib29sCiAgKiBhcmd1bWVudCwgdHJ1ZSBpZiB5b3Ugd2FudCB0aGUgc3RyaW5nIGluIGxpdHRsZS1lbmRpYW4gZm9ybWF0IChleHBvbmVudAotICogbGFzdCwgYXQgcCszIG9yIHArNyksIGZhbHNlIGlmIHlvdSB3YW50IGJpZy1lbmRpYW4gZm9ybWF0IChleHBvbmVudAorICogbGFzdCwgYXQgcCsxLCBwKzMgb3IgcCs3KSwgZmFsc2UgaWYgeW91IHdhbnQgYmlnLWVuZGlhbiBmb3JtYXQgKGV4cG9uZW50CiAgKiBmaXJzdCwgYXQgcCkuCiAgKiBSZXR1cm4gdmFsdWU6ICAwIGlmIGFsbCBpcyBPSywgLTEgaWYgZXJyb3IgKGFuZCBhbiBleGNlcHRpb24gaXMKICAqIHNldCwgbW9zdCBsaWtlbHkgT3ZlcmZsb3dFcnJvcikuCkBAIC04NCw2ICs4NCw3IEBACiAgKiAxKTogIFdoYXQgdGhpcyBkb2VzIGlzIHVuZGVmaW5lZCBpZiB4IGlzIGEgTmFOIG9yIGluZmluaXR5LgogICogMik6ICAtMC4wIGFuZCArMC4wIHByb2R1Y2UgdGhlIHNhbWUgc3RyaW5nLgogICovCitQeUFQSV9GVU5DKGludCkgX1B5RmxvYXRfUGFjazIoZG91YmxlIHgsIHVuc2lnbmVkIGNoYXIgKnAsIGludCBsZSk7CiBQeUFQSV9GVU5DKGludCkgX1B5RmxvYXRfUGFjazQoZG91YmxlIHgsIHVuc2lnbmVkIGNoYXIgKnAsIGludCBsZSk7CiBQeUFQSV9GVU5DKGludCkgX1B5RmxvYXRfUGFjazgoZG91YmxlIHgsIHVuc2lnbmVkIGNoYXIgKnAsIGludCBsZSk7CiAKQEAgLTk2LDE0ICs5NywxNSBAQAogUHlBUElfRlVOQyhpbnQpIF9QeUZsb2F0X0RpZ2l0cyhjaGFyICpidWYsIGRvdWJsZSB2LCBpbnQgKnNpZ251bSk7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeUZsb2F0X0RpZ2l0c0luaXQodm9pZCk7CiAKLS8qIFRoZSB1bnBhY2sgcm91dGluZXMgcmVhZCA0IG9yIDggYnl0ZXMsIHN0YXJ0aW5nIGF0IHAuICBsZSBpcyBhIGJvb2wKKy8qIFRoZSB1bnBhY2sgcm91dGluZXMgcmVhZCAyLCA0IG9yIDggYnl0ZXMsIHN0YXJ0aW5nIGF0IHAuICBsZSBpcyBhIGJvb2wKICAqIGFyZ3VtZW50LCB0cnVlIGlmIHRoZSBzdHJpbmcgaXMgaW4gbGl0dGxlLWVuZGlhbiBmb3JtYXQgKGV4cG9uZW50Ci0gKiBsYXN0LCBhdCBwKzMgb3IgcCs3KSwgZmFsc2UgaWYgYmlnLWVuZGlhbiAoZXhwb25lbnQgZmlyc3QsIGF0IHApLgorICogbGFzdCwgYXQgcCsxLCBwKzMgb3IgcCs3KSwgZmFsc2UgaWYgYmlnLWVuZGlhbiAoZXhwb25lbnQgZmlyc3QsIGF0IHApLgogICogUmV0dXJuIHZhbHVlOiAgVGhlIHVucGFja2VkIGRvdWJsZS4gIE9uIGVycm9yLCB0aGlzIGlzIC0xLjAgYW5kCiAgKiBQeUVycl9PY2N1cnJlZCgpIGlzIHRydWUgKGFuZCBhbiBleGNlcHRpb24gaXMgc2V0LCBtb3N0IGxpa2VseQogICogT3ZlcmZsb3dFcnJvcikuICBOb3RlIHRoYXQgb24gYSBub24tSUVFRSBwbGF0Zm9ybSB0aGlzIHdpbGwgcmVmdXNlCiAgKiB0byB1bnBhY2sgYSBzdHJpbmcgdGhhdCByZXByZXNlbnRzIGEgTmFOIG9yIGluZmluaXR5LgogICovCitQeUFQSV9GVU5DKGRvdWJsZSkgX1B5RmxvYXRfVW5wYWNrMihjb25zdCB1bnNpZ25lZCBjaGFyICpwLCBpbnQgbGUpOwogUHlBUElfRlVOQyhkb3VibGUpIF9QeUZsb2F0X1VucGFjazQoY29uc3QgdW5zaWduZWQgY2hhciAqcCwgaW50IGxlKTsKIFB5QVBJX0ZVTkMoZG91YmxlKSBfUHlGbG9hdF9VbnBhY2s4KGNvbnN0IHVuc2lnbmVkIGNoYXIgKnAsIGludCBsZSk7CiAKZGlmZiAtLWdpdCBhL0luY2x1ZGUvZnVuY29iamVjdC5oIGIvSW5jbHVkZS9mdW5jb2JqZWN0LmgKaW5kZXggY2MxNDI2Yy4uNzdiYjhjMyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9mdW5jb2JqZWN0LmgKKysrIGIvSW5jbHVkZS9mdW5jb2JqZWN0LmgKQEAgLTU4LDYgKzU4LDIwIEBACiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RnVuY3Rpb25fR2V0QW5ub3RhdGlvbnMoUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKGludCkgUHlGdW5jdGlvbl9TZXRBbm5vdGF0aW9ucyhQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlGdW5jdGlvbl9GYXN0Q2FsbERpY3QoCisgICAgUHlPYmplY3QgKmZ1bmMsCisgICAgUHlPYmplY3QgKiphcmdzLAorICAgIFB5X3NzaXplX3QgbmFyZ3MsCisgICAgUHlPYmplY3QgKmt3YXJncyk7CisKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5RnVuY3Rpb25fRmFzdENhbGxLZXl3b3JkcygKKyAgICBQeU9iamVjdCAqZnVuYywKKyAgICBQeU9iamVjdCAqKnN0YWNrLAorICAgIFB5X3NzaXplX3QgbmFyZ3MsCisgICAgUHlPYmplY3QgKmt3bmFtZXMpOworI2VuZGlmCisKIC8qIE1hY3JvcyBmb3IgZGlyZWN0IGFjY2VzcyB0byB0aGVzZSB2YWx1ZXMuIFR5cGUgY2hlY2tzIGFyZSAqbm90KgogICAgZG9uZSwgc28gdXNlIHdpdGggY2FyZS4gKi8KICNkZWZpbmUgUHlGdW5jdGlvbl9HRVRfQ09ERShmdW5jKSBcCmRpZmYgLS1naXQgYS9JbmNsdWRlL2dlbm9iamVjdC5oIGIvSW5jbHVkZS9nZW5vYmplY3QuaAppbmRleCA2MWU3MDhhLi44YzE4MjVmIDEwMDY0NAotLS0gYS9JbmNsdWRlL2dlbm9iamVjdC5oCisrKyBiL0luY2x1ZGUvZ2Vub2JqZWN0LmgKQEAgLTQzLDcgKzQzLDcgQEAKIFB5QVBJX0ZVTkMoaW50KSBQeUdlbl9OZWVkc0ZpbmFsaXppbmcoUHlHZW5PYmplY3QgKik7CiBQeUFQSV9GVU5DKGludCkgX1B5R2VuX1NldFN0b3BJdGVyYXRpb25WYWx1ZShQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkMoaW50KSBfUHlHZW5fRmV0Y2hTdG9wSXRlcmF0aW9uVmFsdWUoUHlPYmplY3QgKiopOwotUHlPYmplY3QgKl9QeUdlbl9TZW5kKFB5R2VuT2JqZWN0ICosIFB5T2JqZWN0ICopOworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlHZW5fU2VuZChQeUdlbk9iamVjdCAqLCBQeU9iamVjdCAqKTsKIFB5T2JqZWN0ICpfUHlHZW5feWYoUHlHZW5PYmplY3QgKik7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeUdlbl9GaW5hbGl6ZShQeU9iamVjdCAqc2VsZik7CiAKQEAgLTYyLDYgKzYyLDM3IEBACiBQeU9iamVjdCAqX1B5Q29yb19HZXRBd2FpdGFibGVJdGVyKFB5T2JqZWN0ICpvKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlDb3JvX05ldyhzdHJ1Y3QgX2ZyYW1lICosCiAgICAgUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICpxdWFsbmFtZSk7CisKKy8qIEFzeW5jaHJvbm91cyBHZW5lcmF0b3JzICovCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBfUHlHZW5PYmplY3RfSEVBRChhZykKKyAgICBQeU9iamVjdCAqYWdfZmluYWxpemVyOworCisgICAgLyogRmxhZyBpcyBzZXQgdG8gMSB3aGVuIGhvb2tzIHNldCB1cCBieSBzeXMuc2V0X2FzeW5jZ2VuX2hvb2tzCisgICAgICAgd2VyZSBjYWxsZWQgb24gdGhlIGdlbmVyYXRvciwgdG8gYXZvaWQgY2FsbGluZyB0aGVtIG1vcmUKKyAgICAgICB0aGFuIG9uY2UuICovCisgICAgaW50IGFnX2hvb2tzX2luaXRlZDsKKworICAgIC8qIEZsYWcgaXMgc2V0IHRvIDEgd2hlbiBhY2xvc2UoKSBpcyBjYWxsZWQgZm9yIHRoZSBmaXJzdCB0aW1lLCBvcgorICAgICAgIHdoZW4gYSBTdG9wQXN5bmNJdGVyYXRpb24gZXhjZXB0aW9uIGlzIHJhaXNlZC4gKi8KKyAgICBpbnQgYWdfY2xvc2VkOworfSBQeUFzeW5jR2VuT2JqZWN0OworCitQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgUHlBc3luY0dlbl9UeXBlOworUHlBUElfREFUQShQeVR5cGVPYmplY3QpIF9QeUFzeW5jR2VuQVNlbmRfVHlwZTsKK1B5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBfUHlBc3luY0dlbldyYXBwZWRWYWx1ZV9UeXBlOworUHlBUElfREFUQShQeVR5cGVPYmplY3QpIF9QeUFzeW5jR2VuQVRocm93X1R5cGU7CisKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlBc3luY0dlbl9OZXcoc3RydWN0IF9mcmFtZSAqLAorICAgIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqcXVhbG5hbWUpOworCisjZGVmaW5lIFB5QXN5bmNHZW5fQ2hlY2tFeGFjdChvcCkgKFB5X1RZUEUob3ApID09ICZQeUFzeW5jR2VuX1R5cGUpCisKK1B5T2JqZWN0ICpfUHlBc3luY0dlblZhbHVlV3JhcHBlck5ldyhQeU9iamVjdCAqKTsKKworaW50IFB5QXN5bmNHZW5fQ2xlYXJGcmVlTGlzdHModm9pZCk7CisKICNlbmRpZgogCiAjdW5kZWYgX1B5R2VuT2JqZWN0X0hFQUQKZGlmZiAtLWdpdCBhL0luY2x1ZGUvZ3JhbWluaXQuaCBiL0luY2x1ZGUvZ3JhbWluaXQuaAppbmRleCBkMDMwYmMzLi5lOWI0YTkzIDEwMDY0NAotLS0gYS9JbmNsdWRlL2dyYW1pbml0LmgKKysrIGIvSW5jbHVkZS9ncmFtaW5pdC5oCkBAIC0xNyw3MSArMTcsNzIgQEAKICNkZWZpbmUgc2ltcGxlX3N0bXQgMjcwCiAjZGVmaW5lIHNtYWxsX3N0bXQgMjcxCiAjZGVmaW5lIGV4cHJfc3RtdCAyNzIKLSNkZWZpbmUgdGVzdGxpc3Rfc3Rhcl9leHByIDI3MwotI2RlZmluZSBhdWdhc3NpZ24gMjc0Ci0jZGVmaW5lIGRlbF9zdG10IDI3NQotI2RlZmluZSBwYXNzX3N0bXQgMjc2Ci0jZGVmaW5lIGZsb3dfc3RtdCAyNzcKLSNkZWZpbmUgYnJlYWtfc3RtdCAyNzgKLSNkZWZpbmUgY29udGludWVfc3RtdCAyNzkKLSNkZWZpbmUgcmV0dXJuX3N0bXQgMjgwCi0jZGVmaW5lIHlpZWxkX3N0bXQgMjgxCi0jZGVmaW5lIHJhaXNlX3N0bXQgMjgyCi0jZGVmaW5lIGltcG9ydF9zdG10IDI4MwotI2RlZmluZSBpbXBvcnRfbmFtZSAyODQKLSNkZWZpbmUgaW1wb3J0X2Zyb20gMjg1Ci0jZGVmaW5lIGltcG9ydF9hc19uYW1lIDI4NgotI2RlZmluZSBkb3R0ZWRfYXNfbmFtZSAyODcKLSNkZWZpbmUgaW1wb3J0X2FzX25hbWVzIDI4OAotI2RlZmluZSBkb3R0ZWRfYXNfbmFtZXMgMjg5Ci0jZGVmaW5lIGRvdHRlZF9uYW1lIDI5MAotI2RlZmluZSBnbG9iYWxfc3RtdCAyOTEKLSNkZWZpbmUgbm9ubG9jYWxfc3RtdCAyOTIKLSNkZWZpbmUgYXNzZXJ0X3N0bXQgMjkzCi0jZGVmaW5lIGNvbXBvdW5kX3N0bXQgMjk0Ci0jZGVmaW5lIGFzeW5jX3N0bXQgMjk1Ci0jZGVmaW5lIGlmX3N0bXQgMjk2Ci0jZGVmaW5lIHdoaWxlX3N0bXQgMjk3Ci0jZGVmaW5lIGZvcl9zdG10IDI5OAotI2RlZmluZSB0cnlfc3RtdCAyOTkKLSNkZWZpbmUgd2l0aF9zdG10IDMwMAotI2RlZmluZSB3aXRoX2l0ZW0gMzAxCi0jZGVmaW5lIGV4Y2VwdF9jbGF1c2UgMzAyCi0jZGVmaW5lIHN1aXRlIDMwMwotI2RlZmluZSB0ZXN0IDMwNAotI2RlZmluZSB0ZXN0X25vY29uZCAzMDUKLSNkZWZpbmUgbGFtYmRlZiAzMDYKLSNkZWZpbmUgbGFtYmRlZl9ub2NvbmQgMzA3Ci0jZGVmaW5lIG9yX3Rlc3QgMzA4Ci0jZGVmaW5lIGFuZF90ZXN0IDMwOQotI2RlZmluZSBub3RfdGVzdCAzMTAKLSNkZWZpbmUgY29tcGFyaXNvbiAzMTEKLSNkZWZpbmUgY29tcF9vcCAzMTIKLSNkZWZpbmUgc3Rhcl9leHByIDMxMwotI2RlZmluZSBleHByIDMxNAotI2RlZmluZSB4b3JfZXhwciAzMTUKLSNkZWZpbmUgYW5kX2V4cHIgMzE2Ci0jZGVmaW5lIHNoaWZ0X2V4cHIgMzE3Ci0jZGVmaW5lIGFyaXRoX2V4cHIgMzE4Ci0jZGVmaW5lIHRlcm0gMzE5Ci0jZGVmaW5lIGZhY3RvciAzMjAKLSNkZWZpbmUgcG93ZXIgMzIxCi0jZGVmaW5lIGF0b21fZXhwciAzMjIKLSNkZWZpbmUgYXRvbSAzMjMKLSNkZWZpbmUgdGVzdGxpc3RfY29tcCAzMjQKLSNkZWZpbmUgdHJhaWxlciAzMjUKLSNkZWZpbmUgc3Vic2NyaXB0bGlzdCAzMjYKLSNkZWZpbmUgc3Vic2NyaXB0IDMyNwotI2RlZmluZSBzbGljZW9wIDMyOAotI2RlZmluZSBleHBybGlzdCAzMjkKLSNkZWZpbmUgdGVzdGxpc3QgMzMwCi0jZGVmaW5lIGRpY3RvcnNldG1ha2VyIDMzMQotI2RlZmluZSBjbGFzc2RlZiAzMzIKLSNkZWZpbmUgYXJnbGlzdCAzMzMKLSNkZWZpbmUgYXJndW1lbnQgMzM0Ci0jZGVmaW5lIGNvbXBfaXRlciAzMzUKLSNkZWZpbmUgY29tcF9mb3IgMzM2Ci0jZGVmaW5lIGNvbXBfaWYgMzM3Ci0jZGVmaW5lIGVuY29kaW5nX2RlY2wgMzM4Ci0jZGVmaW5lIHlpZWxkX2V4cHIgMzM5Ci0jZGVmaW5lIHlpZWxkX2FyZyAzNDAKKyNkZWZpbmUgYW5uYXNzaWduIDI3MworI2RlZmluZSB0ZXN0bGlzdF9zdGFyX2V4cHIgMjc0CisjZGVmaW5lIGF1Z2Fzc2lnbiAyNzUKKyNkZWZpbmUgZGVsX3N0bXQgMjc2CisjZGVmaW5lIHBhc3Nfc3RtdCAyNzcKKyNkZWZpbmUgZmxvd19zdG10IDI3OAorI2RlZmluZSBicmVha19zdG10IDI3OQorI2RlZmluZSBjb250aW51ZV9zdG10IDI4MAorI2RlZmluZSByZXR1cm5fc3RtdCAyODEKKyNkZWZpbmUgeWllbGRfc3RtdCAyODIKKyNkZWZpbmUgcmFpc2Vfc3RtdCAyODMKKyNkZWZpbmUgaW1wb3J0X3N0bXQgMjg0CisjZGVmaW5lIGltcG9ydF9uYW1lIDI4NQorI2RlZmluZSBpbXBvcnRfZnJvbSAyODYKKyNkZWZpbmUgaW1wb3J0X2FzX25hbWUgMjg3CisjZGVmaW5lIGRvdHRlZF9hc19uYW1lIDI4OAorI2RlZmluZSBpbXBvcnRfYXNfbmFtZXMgMjg5CisjZGVmaW5lIGRvdHRlZF9hc19uYW1lcyAyOTAKKyNkZWZpbmUgZG90dGVkX25hbWUgMjkxCisjZGVmaW5lIGdsb2JhbF9zdG10IDI5MgorI2RlZmluZSBub25sb2NhbF9zdG10IDI5MworI2RlZmluZSBhc3NlcnRfc3RtdCAyOTQKKyNkZWZpbmUgY29tcG91bmRfc3RtdCAyOTUKKyNkZWZpbmUgYXN5bmNfc3RtdCAyOTYKKyNkZWZpbmUgaWZfc3RtdCAyOTcKKyNkZWZpbmUgd2hpbGVfc3RtdCAyOTgKKyNkZWZpbmUgZm9yX3N0bXQgMjk5CisjZGVmaW5lIHRyeV9zdG10IDMwMAorI2RlZmluZSB3aXRoX3N0bXQgMzAxCisjZGVmaW5lIHdpdGhfaXRlbSAzMDIKKyNkZWZpbmUgZXhjZXB0X2NsYXVzZSAzMDMKKyNkZWZpbmUgc3VpdGUgMzA0CisjZGVmaW5lIHRlc3QgMzA1CisjZGVmaW5lIHRlc3Rfbm9jb25kIDMwNgorI2RlZmluZSBsYW1iZGVmIDMwNworI2RlZmluZSBsYW1iZGVmX25vY29uZCAzMDgKKyNkZWZpbmUgb3JfdGVzdCAzMDkKKyNkZWZpbmUgYW5kX3Rlc3QgMzEwCisjZGVmaW5lIG5vdF90ZXN0IDMxMQorI2RlZmluZSBjb21wYXJpc29uIDMxMgorI2RlZmluZSBjb21wX29wIDMxMworI2RlZmluZSBzdGFyX2V4cHIgMzE0CisjZGVmaW5lIGV4cHIgMzE1CisjZGVmaW5lIHhvcl9leHByIDMxNgorI2RlZmluZSBhbmRfZXhwciAzMTcKKyNkZWZpbmUgc2hpZnRfZXhwciAzMTgKKyNkZWZpbmUgYXJpdGhfZXhwciAzMTkKKyNkZWZpbmUgdGVybSAzMjAKKyNkZWZpbmUgZmFjdG9yIDMyMQorI2RlZmluZSBwb3dlciAzMjIKKyNkZWZpbmUgYXRvbV9leHByIDMyMworI2RlZmluZSBhdG9tIDMyNAorI2RlZmluZSB0ZXN0bGlzdF9jb21wIDMyNQorI2RlZmluZSB0cmFpbGVyIDMyNgorI2RlZmluZSBzdWJzY3JpcHRsaXN0IDMyNworI2RlZmluZSBzdWJzY3JpcHQgMzI4CisjZGVmaW5lIHNsaWNlb3AgMzI5CisjZGVmaW5lIGV4cHJsaXN0IDMzMAorI2RlZmluZSB0ZXN0bGlzdCAzMzEKKyNkZWZpbmUgZGljdG9yc2V0bWFrZXIgMzMyCisjZGVmaW5lIGNsYXNzZGVmIDMzMworI2RlZmluZSBhcmdsaXN0IDMzNAorI2RlZmluZSBhcmd1bWVudCAzMzUKKyNkZWZpbmUgY29tcF9pdGVyIDMzNgorI2RlZmluZSBjb21wX2ZvciAzMzcKKyNkZWZpbmUgY29tcF9pZiAzMzgKKyNkZWZpbmUgZW5jb2RpbmdfZGVjbCAzMzkKKyNkZWZpbmUgeWllbGRfZXhwciAzNDAKKyNkZWZpbmUgeWllbGRfYXJnIDM0MQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9ncmFtbWFyLmggYi9JbmNsdWRlL2dyYW1tYXIuaAppbmRleCA4NTEyMGI5Li5mNzc1Zjk2IDEwMDY0NAotLS0gYS9JbmNsdWRlL2dyYW1tYXIuaAorKysgYi9JbmNsdWRlL2dyYW1tYXIuaApAQCAtNjksNiArNjksNyBAQAogLyogRlVOQ1RJT05TICovCiAKIGdyYW1tYXIgKm5ld2dyYW1tYXIoaW50IHN0YXJ0KTsKK3ZvaWQgZnJlZWdyYW1tYXIoZ3JhbW1hciAqZyk7CiBkZmEgKmFkZGRmYShncmFtbWFyICpnLCBpbnQgdHlwZSwgY29uc3QgY2hhciAqbmFtZSk7CiBpbnQgYWRkc3RhdGUoZGZhICpkKTsKIHZvaWQgYWRkYXJjKGRmYSAqZCwgaW50IGZyb20sIGludCB0bywgaW50IGxibCk7CmRpZmYgLS1naXQgYS9JbmNsdWRlL2ltcG9ydC5oIGIvSW5jbHVkZS9pbXBvcnQuaAppbmRleCBhZmRmYWMyLi40NmMwZDhlIDEwMDY0NAotLS0gYS9JbmNsdWRlL2ltcG9ydC5oCisrKyBiL0luY2x1ZGUvaW1wb3J0LmgKQEAgLTcsNyArNyw5IEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKHZvaWQpIF9QeUltcG9ydFppcF9Jbml0KHZvaWQpOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogCiBQeU1PRElOSVRfRlVOQyBQeUluaXRfaW1wKHZvaWQpOwogUHlBUElfRlVOQyhsb25nKSBQeUltcG9ydF9HZXRNYWdpY051bWJlcih2b2lkKTsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvaW50cmNoZWNrLmggYi9JbmNsdWRlL2ludHJjaGVjay5oCmluZGV4IGY1M2ZlZTEuLjhmYjk2Y2YgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvaW50cmNoZWNrLmgKKysrIGIvSW5jbHVkZS9pbnRyY2hlY2suaApAQCAtOCwxMiArOCwxNSBAQAogUHlBUElfRlVOQyhpbnQpIFB5T1NfSW50ZXJydXB0T2NjdXJyZWQodm9pZCk7CiBQeUFQSV9GVU5DKHZvaWQpIFB5T1NfSW5pdEludGVycnVwdHModm9pZCk7CiBQeUFQSV9GVU5DKHZvaWQpIFB5T1NfQWZ0ZXJGb3JrKHZvaWQpOworCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKGludCkgX1B5T1NfSXNNYWluVGhyZWFkKHZvaWQpOwogCiAjaWZkZWYgTVNfV0lORE9XUwogLyogd2luZG93cy5oIGlzIG5vdCBpbmNsdWRlZCBieSBQeXRob24uaCBzbyB1c2Ugdm9pZCogaW5zdGVhZCBvZiBIQU5ETEUgKi8KIFB5QVBJX0ZVTkModm9pZCopIF9QeU9TX1NpZ2ludEV2ZW50KHZvaWQpOwogI2VuZGlmCisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9sb25naW50cmVwci5oIGIvSW5jbHVkZS9sb25naW50cmVwci5oCmluZGV4IGJiYmE0ZDguLmEzYjc0YjQgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvbG9uZ2ludHJlcHIuaAorKysgYi9JbmNsdWRlL2xvbmdpbnRyZXByLmgKQEAgLTQyLDE0ICs0MiwxMCBAQAogKi8KIAogI2lmIFBZTE9OR19CSVRTX0lOX0RJR0lUID09IDMwCi0jaWYgIShkZWZpbmVkIEhBVkVfVUlOVDY0X1QgJiYgZGVmaW5lZCBIQVZFX1VJTlQzMl9UICYmICAgICAgICAgIFwKLSAgICAgIGRlZmluZWQgSEFWRV9JTlQ2NF9UICYmIGRlZmluZWQgSEFWRV9JTlQzMl9UKQotI2Vycm9yICIzMC1iaXQgbG9uZyBkaWdpdHMgcmVxdWVzdGVkLCBidXQgdGhlIG5lY2Vzc2FyeSB0eXBlcyBhcmUgbm90IGF2YWlsYWJsZSBvbiB0aGlzIHBsYXRmb3JtIgotI2VuZGlmCi10eXBlZGVmIFBZX1VJTlQzMl9UIGRpZ2l0OwotdHlwZWRlZiBQWV9JTlQzMl9UIHNkaWdpdDsgLyogc2lnbmVkIHZhcmlhbnQgb2YgZGlnaXQgKi8KLXR5cGVkZWYgUFlfVUlOVDY0X1QgdHdvZGlnaXRzOwotdHlwZWRlZiBQWV9JTlQ2NF9UIHN0d29kaWdpdHM7IC8qIHNpZ25lZCB2YXJpYW50IG9mIHR3b2RpZ2l0cyAqLwordHlwZWRlZiB1aW50MzJfdCBkaWdpdDsKK3R5cGVkZWYgaW50MzJfdCBzZGlnaXQ7IC8qIHNpZ25lZCB2YXJpYW50IG9mIGRpZ2l0ICovCit0eXBlZGVmIHVpbnQ2NF90IHR3b2RpZ2l0czsKK3R5cGVkZWYgaW50NjRfdCBzdHdvZGlnaXRzOyAvKiBzaWduZWQgdmFyaWFudCBvZiB0d29kaWdpdHMgKi8KICNkZWZpbmUgUHlMb25nX1NISUZUCTMwCiAjZGVmaW5lIF9QeUxvbmdfREVDSU1BTF9TSElGVAk5IC8qIG1heChlIHN1Y2ggdGhhdCAxMCoqZSBmaXRzIGluIGEgZGlnaXQpICovCiAjZGVmaW5lIF9QeUxvbmdfREVDSU1BTF9CQVNFCSgoZGlnaXQpMTAwMDAwMDAwMCkgLyogMTAgKiogREVDSU1BTF9TSElGVCAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9sb25nb2JqZWN0LmggYi9JbmNsdWRlL2xvbmdvYmplY3QuaAppbmRleCAyYTJlZWNmLi5lZmQ0MDljIDEwMDY0NAotLS0gYS9JbmNsdWRlL2xvbmdvYmplY3QuaAorKysgYi9JbmNsdWRlL2xvbmdvYmplY3QuaApAQCAtNjUsNyArNjUsOCBAQAogIyAgZXJyb3IgInZvaWQqIGRpZmZlcmVudCBpbiBzaXplIGZyb20gaW50LCBsb25nIGFuZCBsb25nIGxvbmciCiAjZW5kaWYgLyogU0laRU9GX1ZPSURfUCAqLwogCi0vKiBVc2VkIGJ5IFB5dGhvbi9teXN0cnRvdWwuYy4gKi8KKy8qIFVzZWQgYnkgUHl0aG9uL215c3RydG91bC5jLCBfUHlCeXRlc19Gcm9tSGV4KCksCisgICBfUHlCeXRlc19EZWNvZGVFc2NhcGVSZWNvZGUoKSwgZXRjLiAqLwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfREFUQSh1bnNpZ25lZCBjaGFyKSBfUHlMb25nX0RpZ2l0VmFsdWVbMjU2XTsKICNlbmRpZgpAQCAtODQsMTQgKzg1LDEyIEBACiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5TG9uZ19Gcm9tVm9pZFB0cih2b2lkICopOwogUHlBUElfRlVOQyh2b2lkICopIFB5TG9uZ19Bc1ZvaWRQdHIoUHlPYmplY3QgKik7CiAKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUxvbmdfRnJvbUxvbmdMb25nKFBZX0xPTkdfTE9ORyk7Ci1QeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZyh1bnNpZ25lZCBQWV9MT05HX0xPTkcpOwotUHlBUElfRlVOQyhQWV9MT05HX0xPTkcpIFB5TG9uZ19Bc0xvbmdMb25nKFB5T2JqZWN0ICopOwotUHlBUElfRlVOQyh1bnNpZ25lZCBQWV9MT05HX0xPTkcpIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcoUHlPYmplY3QgKik7Ci1QeUFQSV9GVU5DKHVuc2lnbmVkIFBZX0xPTkdfTE9ORykgUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZ01hc2soUHlPYmplY3QgKik7Ci1QeUFQSV9GVU5DKFBZX0xPTkdfTE9ORykgUHlMb25nX0FzTG9uZ0xvbmdBbmRPdmVyZmxvdyhQeU9iamVjdCAqLCBpbnQgKik7Ci0jZW5kaWYgLyogSEFWRV9MT05HX0xPTkcgKi8KK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlMb25nX0Zyb21Mb25nTG9uZyhsb25nIGxvbmcpOworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcodW5zaWduZWQgbG9uZyBsb25nKTsKK1B5QVBJX0ZVTkMobG9uZyBsb25nKSBQeUxvbmdfQXNMb25nTG9uZyhQeU9iamVjdCAqKTsKK1B5QVBJX0ZVTkModW5zaWduZWQgbG9uZyBsb25nKSBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nKFB5T2JqZWN0ICopOworUHlBUElfRlVOQyh1bnNpZ25lZCBsb25nIGxvbmcpIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrKFB5T2JqZWN0ICopOworUHlBUElfRlVOQyhsb25nIGxvbmcpIFB5TG9uZ19Bc0xvbmdMb25nQW5kT3ZlcmZsb3coUHlPYmplY3QgKiwgaW50ICopOwogCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5TG9uZ19Gcm9tU3RyaW5nKGNvbnN0IGNoYXIgKiwgY2hhciAqKiwgaW50KTsKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKQEAgLTE4Miw2ICsxODEsMTMgQEAKICAgICBpbnQgYmFzZSwKICAgICBpbnQgYWx0ZXJuYXRlKTsKIAorUHlBUElfRlVOQyhjaGFyKikgX1B5TG9uZ19Gb3JtYXRCeXRlc1dyaXRlcigKKyAgICBfUHlCeXRlc1dyaXRlciAqd3JpdGVyLAorICAgIGNoYXIgKnN0ciwKKyAgICBQeU9iamVjdCAqb2JqLAorICAgIGludCBiYXNlLAorICAgIGludCBhbHRlcm5hdGUpOworCiAvKiBGb3JtYXQgdGhlIG9iamVjdCBiYXNlZCBvbiB0aGUgZm9ybWF0X3NwZWMsIGFzIGRlZmluZWQgaW4gUEVQIDMxMDEKICAgIChBZHZhbmNlZCBTdHJpbmcgRm9ybWF0dGluZykuICovCiBQeUFQSV9GVU5DKGludCkgX1B5TG9uZ19Gb3JtYXRBZHZhbmNlZFdyaXRlcigKQEAgLTE5OCw4ICsyMDQsMTAgQEAKIFB5QVBJX0ZVTkModW5zaWduZWQgbG9uZykgUHlPU19zdHJ0b3VsKGNvbnN0IGNoYXIgKiwgY2hhciAqKiwgaW50KTsKIFB5QVBJX0ZVTkMobG9uZykgUHlPU19zdHJ0b2woY29uc3QgY2hhciAqLCBjaGFyICoqLCBpbnQpOwogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAvKiBGb3IgdXNlIGJ5IHRoZSBnY2QgZnVuY3Rpb24gaW4gbWF0aG1vZHVsZS5jICovCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeUxvbmdfR0NEKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL0luY2x1ZGUvbWV0aG9kb2JqZWN0LmggYi9JbmNsdWRlL21ldGhvZG9iamVjdC5oCmluZGV4IGUyYWQ4MDQuLjc5ZmFkODIgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvbWV0aG9kb2JqZWN0LmgKKysrIGIvSW5jbHVkZS9tZXRob2RvYmplY3QuaApAQCAtMTYsNiArMTYsOCBAQAogI2RlZmluZSBQeUNGdW5jdGlvbl9DaGVjayhvcCkgKFB5X1RZUEUob3ApID09ICZQeUNGdW5jdGlvbl9UeXBlKQogCiB0eXBlZGVmIFB5T2JqZWN0ICooKlB5Q0Z1bmN0aW9uKShQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKK3R5cGVkZWYgUHlPYmplY3QgKigqX1B5Q0Z1bmN0aW9uRmFzdCkgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcyk7CiB0eXBlZGVmIFB5T2JqZWN0ICooKlB5Q0Z1bmN0aW9uV2l0aEtleXdvcmRzKShQeU9iamVjdCAqLCBQeU9iamVjdCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKik7CiB0eXBlZGVmIFB5T2JqZWN0ICooKlB5Tm9BcmdzRnVuY3Rpb24pKFB5T2JqZWN0ICopOwpAQCAtMzcsNiArMzksMTggQEAKICNlbmRpZgogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUNGdW5jdGlvbl9DYWxsKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeUNGdW5jdGlvbl9GYXN0Q2FsbERpY3QoUHlPYmplY3QgKmZ1bmMsCisgICAgUHlPYmplY3QgKiphcmdzLAorICAgIFB5X3NzaXplX3QgbmFyZ3MsCisgICAgUHlPYmplY3QgKmt3YXJncyk7CisKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5Q0Z1bmN0aW9uX0Zhc3RDYWxsS2V5d29yZHMoUHlPYmplY3QgKmZ1bmMsCisgICAgUHlPYmplY3QgKipzdGFjaywKKyAgICBQeV9zc2l6ZV90IG5hcmdzLAorICAgIFB5T2JqZWN0ICprd25hbWVzKTsKKyNlbmRpZgorCiBzdHJ1Y3QgUHlNZXRob2REZWYgewogICAgIGNvbnN0IGNoYXIgICptbF9uYW1lOyAgIC8qIFRoZSBuYW1lIG9mIHRoZSBidWlsdC1pbiBmdW5jdGlvbi9tZXRob2QgKi8KICAgICBQeUNGdW5jdGlvbiBtbF9tZXRoOyAgICAvKiBUaGUgQyBmdW5jdGlvbiB0aGF0IGltcGxlbWVudHMgaXQgKi8KQEAgLTcyLDYgKzg2LDggQEAKICNkZWZpbmUgTUVUSF9DT0VYSVNUICAgMHgwMDQwCiAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKKyNkZWZpbmUgTUVUSF9GQVNUQ0FMTCAgMHgwMDgwCisKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECiAgICAgUHlNZXRob2REZWYgKm1fbWw7IC8qIERlc2NyaXB0aW9uIG9mIHRoZSBDIGZ1bmN0aW9uIHRvIGNhbGwgKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvbW9kc3VwcG9ydC5oIGIvSW5jbHVkZS9tb2RzdXBwb3J0LmgKaW5kZXggODI5YWFmOC4uODMzZTMzZCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9tb2RzdXBwb3J0LmgKKysrIGIvSW5jbHVkZS9tb2RzdXBwb3J0LmgKQEAgLTE1LDEyICsxNSwxNiBAQAogI2RlZmluZSBQeUFyZ19QYXJzZSAgICAgICAgICAgICAgICAgICAgIF9QeUFyZ19QYXJzZV9TaXplVAogI2RlZmluZSBQeUFyZ19QYXJzZVR1cGxlICAgICAgICAgICAgICAgIF9QeUFyZ19QYXJzZVR1cGxlX1NpemVUCiAjZGVmaW5lIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyAgICAgX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogI2RlZmluZSBQeUFyZ19WYVBhcnNlICAgICAgICAgICAgICAgICAgIF9QeUFyZ19WYVBhcnNlX1NpemVUCiAjZGVmaW5lIFB5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzICAgX1B5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUCisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAjZGVmaW5lIFB5X0J1aWxkVmFsdWUgICAgICAgICAgICAgICAgICAgX1B5X0J1aWxkVmFsdWVfU2l6ZVQKICNkZWZpbmUgUHlfVmFCdWlsZFZhbHVlICAgICAgICAgICAgICAgICBfUHlfVmFCdWlsZFZhbHVlX1NpemVUCiAjZWxzZQorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlfVmFCdWlsZFZhbHVlX1NpemVUKGNvbnN0IGNoYXIgKiwgdmFfbGlzdCk7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAjZW5kaWYKIAogLyogRHVlIHRvIGEgZ2xpdGNoIGluIDMuMiwgdGhlIF9TaXplVCB2ZXJzaW9ucyB3ZXJlbid0IGV4cG9ydGVkIGZyb20gdGhlIERMTC4gKi8KQEAgLTQ0LDYgKzQ4LDMyIEBACiAjZW5kaWYKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlfVmFCdWlsZFZhbHVlKGNvbnN0IGNoYXIgKiwgdmFfbGlzdCk7CiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK3R5cGVkZWYgc3RydWN0IF9QeUFyZ19QYXJzZXIgeworICAgIGNvbnN0IGNoYXIgKmZvcm1hdDsKKyAgICBjb25zdCBjaGFyICogY29uc3QgKmtleXdvcmRzOworICAgIGNvbnN0IGNoYXIgKmZuYW1lOworICAgIGNvbnN0IGNoYXIgKmN1c3RvbV9tc2c7CisgICAgaW50IHBvczsgICAgICAgICAgICAvKiBudW1iZXIgb2YgcG9zaXRpb25hbC1vbmx5IGFyZ3VtZW50cyAqLworICAgIGludCBtaW47ICAgICAgICAgICAgLyogbWluaW1hbCBudW1iZXIgb2YgYXJndW1lbnRzICovCisgICAgaW50IG1heDsgICAgICAgICAgICAvKiBtYXhpbWFsIG51bWJlciBvZiBwb3NpdGlvbmFsIGFyZ3VtZW50cyAqLworICAgIFB5T2JqZWN0ICprd3R1cGxlOyAgLyogdHVwbGUgb2Yga2V5d29yZCBwYXJhbWV0ZXIgbmFtZXMgKi8KKyAgICBzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqbmV4dDsKK30gX1B5QXJnX1BhcnNlcjsKKyNpZmRlZiBQWV9TU0laRV9UX0NMRUFOCisjZGVmaW5lIF9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0ICBfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdF9TaXplVAorI2RlZmluZSBfUHlBcmdfUGFyc2VTdGFjayAgX1B5QXJnX1BhcnNlU3RhY2tfU2l6ZVQKKyNkZWZpbmUgX1B5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdCAgX1B5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdF9TaXplVAorI2VuZGlmCitQeUFQSV9GVU5DKGludCkgX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqLCAuLi4pOworUHlBUElfRlVOQyhpbnQpIF9QeUFyZ19QYXJzZVN0YWNrKFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9QeUFyZ19QYXJzZXIgKiwgLi4uKTsKK1B5QVBJX0ZVTkMoaW50KSBfUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqLCB2YV9saXN0KTsKK3ZvaWQgX1B5QXJnX0Zpbmkodm9pZCk7CisjZW5kaWYKKwogUHlBUElfRlVOQyhpbnQpIFB5TW9kdWxlX0FkZE9iamVjdChQeU9iamVjdCAqLCBjb25zdCBjaGFyICosIFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhpbnQpIFB5TW9kdWxlX0FkZEludENvbnN0YW50KFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKiwgbG9uZyk7CiBQeUFQSV9GVU5DKGludCkgUHlNb2R1bGVfQWRkU3RyaW5nQ29uc3RhbnQoUHlPYmplY3QgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9uYW1lc3BhY2VvYmplY3QuaCBiL0luY2x1ZGUvbmFtZXNwYWNlb2JqZWN0LmgKaW5kZXggYTQxMmYwNS4uMGM4ZDk1YyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9uYW1lc3BhY2VvYmplY3QuaAorKysgYi9JbmNsdWRlL25hbWVzcGFjZW9iamVjdC5oCkBAIC03LDkgKzcsMTEgQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBfUHlOYW1lc3BhY2VfVHlwZTsKIAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlOYW1lc3BhY2VfTmV3KFB5T2JqZWN0ICprd2RzKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9JbmNsdWRlL29iamVjdC5oIGIvSW5jbHVkZS9vYmplY3QuaAppbmRleCA1MGQ5NzQ3Li4zMzhlYzFiIDEwMDY0NAotLS0gYS9JbmNsdWRlL29iamVjdC5oCisrKyBiL0luY2x1ZGUvb2JqZWN0LmgKQEAgLTExOCw2ICsxMTgsNyBAQAogI2RlZmluZSBQeV9UWVBFKG9iKSAgICAgICAgICAgICAoKChQeU9iamVjdCopKG9iKSktPm9iX3R5cGUpCiAjZGVmaW5lIFB5X1NJWkUob2IpICAgICAgICAgICAgICgoKFB5VmFyT2JqZWN0Kikob2IpKS0+b2Jfc2l6ZSkKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogLyoqKioqKioqKioqKioqKioqKioqKiBTdHJpbmcgTGl0ZXJhbHMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIC8qIFRoaXMgc3RydWN0dXJlIGhlbHBzIG1hbmFnaW5nIHN0YXRpYyBzdHJpbmdzLiBUaGUgYmFzaWMgdXNhZ2UgZ29lcyBsaWtlIHRoaXM6CiAgICBJbnN0ZWFkIG9mIGRvaW5nCkBAIC0xNDQsMTAgKzE0NSwxMiBAQAogICAgIFB5T2JqZWN0ICpvYmplY3Q7CiB9IF9QeV9JZGVudGlmaWVyOwogCi0jZGVmaW5lIF9QeV9zdGF0aWNfc3RyaW5nX2luaXQodmFsdWUpIHsgMCwgdmFsdWUsIDAgfQorI2RlZmluZSBfUHlfc3RhdGljX3N0cmluZ19pbml0KHZhbHVlKSB7IC5uZXh0ID0gTlVMTCwgLnN0cmluZyA9IHZhbHVlLCAub2JqZWN0ID0gTlVMTCB9CiAjZGVmaW5lIF9QeV9zdGF0aWNfc3RyaW5nKHZhcm5hbWUsIHZhbHVlKSAgc3RhdGljIF9QeV9JZGVudGlmaWVyIHZhcm5hbWUgPSBfUHlfc3RhdGljX3N0cmluZ19pbml0KHZhbHVlKQogI2RlZmluZSBfUHlfSURFTlRJRklFUih2YXJuYW1lKSBfUHlfc3RhdGljX3N0cmluZyhQeUlkXyMjdmFybmFtZSwgI3Zhcm5hbWUpCiAKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KKwogLyoKIFR5cGUgb2JqZWN0cyBjb250YWluIGEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIHR5cGUgbmFtZSAodG8gaGVscCBzb21ld2hhdAogaW4gZGVidWdnaW5nKSwgdGhlIGFsbG9jYXRpb24gcGFyYW1ldGVycyAoc2VlIFB5T2JqZWN0X05ldygpIGFuZApAQCAtNTEyLDggKzUxNSw4IEBACiAjZW5kaWYKIAogLyogR2VuZXJpYyBvcGVyYXRpb25zIG9uIG9iamVjdHMgKi8KLXN0cnVjdCBfUHlfSWRlbnRpZmllcjsKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK3N0cnVjdCBfUHlfSWRlbnRpZmllcjsKIFB5QVBJX0ZVTkMoaW50KSBQeU9iamVjdF9QcmludChQeU9iamVjdCAqLCBGSUxFICosIGludCk7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeV9CcmVha1BvaW50KHZvaWQpOwogUHlBUElfRlVOQyh2b2lkKSBfUHlPYmplY3RfRHVtcChQeU9iamVjdCAqKTsKQEAgLTUzMCwxMSArNTMzLDExIEBACiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5T2JqZWN0X0dldEF0dHIoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKGludCkgUHlPYmplY3RfU2V0QXR0cihQeU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkMoaW50KSBQeU9iamVjdF9IYXNBdHRyKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhpbnQpIF9QeU9iamVjdF9Jc0Fic3RyYWN0KFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlPYmplY3RfR2V0QXR0cklkKFB5T2JqZWN0ICosIHN0cnVjdCBfUHlfSWRlbnRpZmllciAqKTsKIFB5QVBJX0ZVTkMoaW50KSBfUHlPYmplY3RfU2V0QXR0cklkKFB5T2JqZWN0ICosIHN0cnVjdCBfUHlfSWRlbnRpZmllciAqLCBQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkMoaW50KSBfUHlPYmplY3RfSGFzQXR0cklkKFB5T2JqZWN0ICosIHN0cnVjdCBfUHlfSWRlbnRpZmllciAqKTsKLSNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKiopIF9QeU9iamVjdF9HZXREaWN0UHRyKFB5T2JqZWN0ICopOwogI2VuZGlmCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5T2JqZWN0X1NlbGZJdGVyKFB5T2JqZWN0ICopOwpAQCAtNTU3LDYgKzU2MCw3IEBACiBQeUFQSV9GVU5DKGludCkgUHlPYmplY3RfQ2FsbEZpbmFsaXplckZyb21EZWFsbG9jKFB5T2JqZWN0ICopOwogI2VuZGlmCiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIC8qIFNhbWUgYXMgUHlPYmplY3RfR2VuZXJpY3tHZXQsU2V0fUF0dHIsIGJ1dCBwYXNzaW5nIHRoZSBhdHRyaWJ1dGVzCiAgICBkaWN0IGFzIHRoZSBsYXN0IHBhcmFtZXRlci4gKi8KIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikKQEAgLTU2NCw2ICs1NjgsNyBAQAogUHlBUElfRlVOQyhpbnQpCiBfUHlPYmplY3RfR2VuZXJpY1NldEF0dHJXaXRoRGljdChQeU9iamVjdCAqLCBQeU9iamVjdCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAKIC8qIEhlbHBlciB0byBsb29rIHVwIGEgYnVpbHRpbiBvYmplY3QgKi8KICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKQEAgLTcwOCw3ICs3MTMsNiBAQAogUHlBUElfREFUQShQeV9zc2l6ZV90KSBfUHlfUmVmVG90YWw7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeV9OZWdhdGl2ZVJlZmNvdW50KGNvbnN0IGNoYXIgKmZuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGluZW5vLCBQeU9iamVjdCAqb3ApOwotUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlEaWN0X0R1bW15KHZvaWQpOwogUHlBUElfRlVOQyhQeV9zc2l6ZV90KSBfUHlfR2V0UmVmVG90YWwodm9pZCk7CiAjZGVmaW5lIF9QeV9JTkNfUkVGVE9UQUwgICAgICAgIF9QeV9SZWZUb3RhbCsrCiAjZGVmaW5lIF9QeV9ERUNfUkVGVE9UQUwgICAgICAgIF9QeV9SZWZUb3RhbC0tCkBAIC03ODUsNyArNzg5LDcgQEAKICAgICAgICAgLS0oX3B5X2RlY3JlZl90bXApLT5vYl9yZWZjbnQgIT0gMCkgICAgICAgICAgICAgXAogICAgICAgICAgICAgX1B5X0NIRUNLX1JFRkNOVChfcHlfZGVjcmVmX3RtcCkgICAgICAgICAgICBcCiAgICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgX1B5X0RlYWxsb2MoX3B5X2RlY3JlZl90bXApOyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgX1B5X0RlYWxsb2MoX3B5X2RlY3JlZl90bXApOyAgICAgICAgICAgICAgICBcCiAgICAgfSB3aGlsZSAoMCkKIAogLyogU2FmZWx5IGRlY3JlZiBgb3BgIGFuZCBzZXQgYG9wYCB0byBOVUxMLCBlc3BlY2lhbGx5IHVzZWZ1bCBpbiB0cF9jbGVhcgpAQCAtODg5LDggKzg5MywxMCBAQAogUHlBUElfRlVOQyh2b2lkKSBQeV9JbmNSZWYoUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKHZvaWQpIFB5X0RlY1JlZihQeU9iamVjdCAqKTsKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfREFUQShQeVR5cGVPYmplY3QpIF9QeU5vbmVfVHlwZTsKIFB5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBfUHlOb3RJbXBsZW1lbnRlZF9UeXBlOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogCiAvKgogX1B5X05vbmVTdHJ1Y3QgaXMgYW4gb2JqZWN0IG9mIHVuZGVmaW5lZCB0eXBlIHdoaWNoIGNhbiBiZSB1c2VkIGluIGNvbnRleHRzCkBAIC05MjMsMTAgKzkyOSwxMiBAQAogI2RlZmluZSBQeV9HVCA0CiAjZGVmaW5lIFB5X0dFIDUKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogLyogTWFwcyBQeV9MVCB0byBQeV9HVCwgLi4uLCBQeV9HRSB0byBQeV9MRS4KICAqIERlZmluZWQgaW4gb2JqZWN0LmMuCiAgKi8KIFB5QVBJX0RBVEEoaW50KSBfUHlfU3dhcHBlZE9wW107CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAKIAogLyoKQEAgLTEwMjMsMTIgKzEwMzEsMTQgQEAKIHdpdGggdGhlIGNhbGwgc3RhY2sgbmV2ZXIgZXhjZWVkaW5nIGEgZGVwdGggb2YgUHlUcmFzaF9VTldJTkRfTEVWRUwuCiAqLwogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAvKiBUaGlzIGlzIHRoZSBvbGQgcHJpdmF0ZSBBUEksIGludm9rZWQgYnkgdGhlIG1hY3JvcyBiZWZvcmUgMy4yLjQuCiAgICBLZXB0IGZvciBiaW5hcnkgY29tcGF0aWJpbGl0eSBvZiBleHRlbnNpb25zIHVzaW5nIHRoZSBzdGFibGUgQUJJLiAqLwogUHlBUElfRlVOQyh2b2lkKSBfUHlUcmFzaF9kZXBvc2l0X29iamVjdChQeU9iamVjdCopOwogUHlBUElfRlVOQyh2b2lkKSBfUHlUcmFzaF9kZXN0cm95X2NoYWluKHZvaWQpOwogUHlBUElfREFUQShpbnQpIF9QeVRyYXNoX2RlbGV0ZV9uZXN0aW5nOwogUHlBUElfREFUQShQeU9iamVjdCAqKSBfUHlUcmFzaF9kZWxldGVfbGF0ZXI7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAKIC8qIFRoZSBuZXcgdGhyZWFkLXNhZmUgcHJpdmF0ZSBBUEksIGludm9rZWQgYnkgdGhlIG1hY3JvcyBiZWxvdy4gKi8KIFB5QVBJX0ZVTkModm9pZCkgX1B5VHJhc2hfdGhyZWFkX2RlcG9zaXRfb2JqZWN0KFB5T2JqZWN0Kik7CmRpZmYgLS1naXQgYS9JbmNsdWRlL29iamltcGwuaCBiL0luY2x1ZGUvb2JqaW1wbC5oCmluZGV4IDY1YjZkOTEuLmMwZWQ5YjcgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvb2JqaW1wbC5oCisrKyBiL0luY2x1ZGUvb2JqaW1wbC5oCkBAIC05OSw4ICs5OSwxMCBAQAogUHlBUElfRlVOQyh2b2lkICopIFB5T2JqZWN0X1JlYWxsb2Modm9pZCAqcHRyLCBzaXplX3QgbmV3X3NpemUpOwogUHlBUElfRlVOQyh2b2lkKSBQeU9iamVjdF9GcmVlKHZvaWQgKnB0cik7CiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIC8qIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgbnVtYmVyIG9mIGFsbG9jYXRlZCBtZW1vcnkgYmxvY2tzLCByZWdhcmRsZXNzIG9mIHNpemUgKi8KIFB5QVBJX0ZVTkMoUHlfc3NpemVfdCkgX1B5X0dldEFsbG9jYXRlZEJsb2Nrcyh2b2lkKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogLyogTWFjcm9zICovCiAjaWZkZWYgV0lUSF9QWU1BTExPQwpAQCAtMjI0LDExICsyMjYsMTIgQEAKICAqID09PT09PT09PT09PT09PT09PT09PT09PT09CiAgKi8KIAotLyogQyBlcXVpdmFsZW50IG9mIGdjLmNvbGxlY3QoKS4gKi8KKy8qIEMgZXF1aXZhbGVudCBvZiBnYy5jb2xsZWN0KCkgd2hpY2ggaWdub3JlcyB0aGUgc3RhdGUgb2YgZ2MuZW5hYmxlZC4gKi8KIFB5QVBJX0ZVTkMoUHlfc3NpemVfdCkgUHlHQ19Db2xsZWN0KHZvaWQpOwogCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKFB5X3NzaXplX3QpIF9QeUdDX0NvbGxlY3ROb0ZhaWwodm9pZCk7CitQeUFQSV9GVU5DKFB5X3NzaXplX3QpIF9QeUdDX0NvbGxlY3RJZkVuYWJsZWQodm9pZCk7CiAjZW5kaWYKIAogLyogVGVzdCBpZiBhIHR5cGUgaGFzIGEgR0MgaGVhZCAqLwpAQCAtMzIyLDggKzMyNSwxMCBAQAogICAgICAgICAoIVB5VHVwbGVfQ2hlY2tFeGFjdChvYmopIHx8IF9QeU9iamVjdF9HQ19JU19UUkFDS0VEKG9iaikpKQogI2VuZGlmIC8qIFB5X0xJTUlURURfQVBJICovCiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5T2JqZWN0X0dDX01hbGxvYyhzaXplX3Qgc2l6ZSk7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU9iamVjdF9HQ19DYWxsb2Moc2l6ZV90IHNpemUpOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlPYmplY3RfR0NfTmV3KFB5VHlwZU9iamVjdCAqKTsKIFB5QVBJX0ZVTkMoUHlWYXJPYmplY3QgKikgX1B5T2JqZWN0X0dDX05ld1ZhcihQeVR5cGVPYmplY3QgKiwgUHlfc3NpemVfdCk7CiBQeUFQSV9GVU5DKHZvaWQpIFB5T2JqZWN0X0dDX1RyYWNrKHZvaWQgKik7CmRpZmYgLS1naXQgYS9JbmNsdWRlL29wY29kZS5oIGIvSW5jbHVkZS9vcGNvZGUuaAppbmRleCAzZjkxN2ZiLi5iZTM2MGUxIDEwMDY0NAotLS0gYS9JbmNsdWRlL29wY29kZS5oCisrKyBiL0luY2x1ZGUvb3Bjb2RlLmgKQEAgLTYwLDYgKzYwLDcgQEAKICNkZWZpbmUgV0lUSF9DTEVBTlVQX0ZJTklTSCAgICAgIDgyCiAjZGVmaW5lIFJFVFVSTl9WQUxVRSAgICAgICAgICAgICA4MwogI2RlZmluZSBJTVBPUlRfU1RBUiAgICAgICAgICAgICAgODQKKyNkZWZpbmUgU0VUVVBfQU5OT1RBVElPTlMgICAgICAgIDg1CiAjZGVmaW5lIFlJRUxEX1ZBTFVFICAgICAgICAgICAgICA4NgogI2RlZmluZSBQT1BfQkxPQ0sgICAgICAgICAgICAgICAgODcKICNkZWZpbmUgRU5EX0ZJTkFMTFkgICAgICAgICAgICAgIDg4CkBAIC05OCwxOCArOTksMTcgQEAKICNkZWZpbmUgTE9BRF9GQVNUICAgICAgICAgICAgICAgMTI0CiAjZGVmaW5lIFNUT1JFX0ZBU1QgICAgICAgICAgICAgIDEyNQogI2RlZmluZSBERUxFVEVfRkFTVCAgICAgICAgICAgICAxMjYKKyNkZWZpbmUgU1RPUkVfQU5OT1RBVElPTiAgICAgICAgMTI3CiAjZGVmaW5lIFJBSVNFX1ZBUkFSR1MgICAgICAgICAgIDEzMAogI2RlZmluZSBDQUxMX0ZVTkNUSU9OICAgICAgICAgICAxMzEKICNkZWZpbmUgTUFLRV9GVU5DVElPTiAgICAgICAgICAgMTMyCiAjZGVmaW5lIEJVSUxEX1NMSUNFICAgICAgICAgICAgIDEzMwotI2RlZmluZSBNQUtFX0NMT1NVUkUgICAgICAgICAgICAxMzQKICNkZWZpbmUgTE9BRF9DTE9TVVJFICAgICAgICAgICAgMTM1CiAjZGVmaW5lIExPQURfREVSRUYgICAgICAgICAgICAgIDEzNgogI2RlZmluZSBTVE9SRV9ERVJFRiAgICAgICAgICAgICAxMzcKICNkZWZpbmUgREVMRVRFX0RFUkVGICAgICAgICAgICAgMTM4Ci0jZGVmaW5lIENBTExfRlVOQ1RJT05fVkFSICAgICAgIDE0MAogI2RlZmluZSBDQUxMX0ZVTkNUSU9OX0tXICAgICAgICAxNDEKLSNkZWZpbmUgQ0FMTF9GVU5DVElPTl9WQVJfS1cgICAgMTQyCisjZGVmaW5lIENBTExfRlVOQ1RJT05fRVggICAgICAgIDE0MgogI2RlZmluZSBTRVRVUF9XSVRIICAgICAgICAgICAgICAxNDMKICNkZWZpbmUgRVhURU5ERURfQVJHICAgICAgICAgICAgMTQ0CiAjZGVmaW5lIExJU1RfQVBQRU5EICAgICAgICAgICAgIDE0NQpAQCAtMTIyLDYgKzEyMiwxMCBAQAogI2RlZmluZSBCVUlMRF9UVVBMRV9VTlBBQ0sgICAgICAxNTIKICNkZWZpbmUgQlVJTERfU0VUX1VOUEFDSyAgICAgICAgMTUzCiAjZGVmaW5lIFNFVFVQX0FTWU5DX1dJVEggICAgICAgIDE1NAorI2RlZmluZSBGT1JNQVRfVkFMVUUgICAgICAgICAgICAxNTUKKyNkZWZpbmUgQlVJTERfQ09OU1RfS0VZX01BUCAgICAgMTU2CisjZGVmaW5lIEJVSUxEX1NUUklORyAgICAgICAgICAgIDE1NworI2RlZmluZSBCVUlMRF9UVVBMRV9VTlBBQ0tfV0lUSF9DQUxMIDE1OAogCiAvKiBFWENFUFRfSEFORExFUiBpcyBhIHNwZWNpYWwsIGltcGxpY2l0IGJsb2NrIHR5cGUgd2hpY2ggaXMgY3JlYXRlZCB3aGVuCiAgICBlbnRlcmluZyBhbiBleGNlcHQgaGFuZGxlci4gSXQgaXMgbm90IGFuIG9wY29kZSBidXQgd2UgZGVmaW5lIGl0IGhlcmUKZGlmZiAtLWdpdCBhL0luY2x1ZGUvb3Ntb2R1bGUuaCBiL0luY2x1ZGUvb3Ntb2R1bGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTQ2NzU3Ci0tLSAvZGV2L251bGwKKysrIGIvSW5jbHVkZS9vc21vZHVsZS5oCkBAIC0wLDAgKzEsMTUgQEAKKworLyogb3MgbW9kdWxlIGludGVyZmFjZSAqLworCisjaWZuZGVmIFB5X09TTU9EVUxFX0gKKyNkZWZpbmUgUHlfT1NNT0RVTEVfSAorI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5T1NfRlNQYXRoKFB5T2JqZWN0ICpwYXRoKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAvKiAhUHlfT1NNT0RVTEVfSCAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9wYXRjaGxldmVsLmggYi9JbmNsdWRlL3BhdGNobGV2ZWwuaAppbmRleCA0NWU1NzM2Li40OTkzMGU4IDEwMDY0NAotLS0gYS9JbmNsdWRlL3BhdGNobGV2ZWwuaAorKysgYi9JbmNsdWRlL3BhdGNobGV2ZWwuaApAQCAtMTcsMTMgKzE3LDEzIEBACiAvKiBWZXJzaW9uIHBhcnNlZCBvdXQgaW50byBudW1lcmljIHZhbHVlcyAqLwogLyotLXN0YXJ0IGNvbnN0YW50cy0tKi8KICNkZWZpbmUgUFlfTUFKT1JfVkVSU0lPTgkzCi0jZGVmaW5lIFBZX01JTk9SX1ZFUlNJT04JNQotI2RlZmluZSBQWV9NSUNST19WRVJTSU9OCTIKKyNkZWZpbmUgUFlfTUlOT1JfVkVSU0lPTgk2CisjZGVmaW5lIFBZX01JQ1JPX1ZFUlNJT04JMAogI2RlZmluZSBQWV9SRUxFQVNFX0xFVkVMCVBZX1JFTEVBU0VfTEVWRUxfRklOQUwKICNkZWZpbmUgUFlfUkVMRUFTRV9TRVJJQUwJMAogCiAvKiBWZXJzaW9uIGFzIGEgc3RyaW5nICovCi0jZGVmaW5lIFBZX1ZFUlNJT04gICAgICAJIjMuNS4yKyIKKyNkZWZpbmUgUFlfVkVSU0lPTiAgICAgIAkiMy42LjArIgogLyotLWVuZCBjb25zdGFudHMtLSovCiAKIC8qIFZlcnNpb24gYXMgYSBzaW5nbGUgNC1ieXRlIGhleCBudW1iZXIsIGUuZy4gMHgwMTA1MDJCMiA9PSAxLjUuMmIyLgpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9wZ2VuaGVhZGVycy5oIGIvSW5jbHVkZS9wZ2VuaGVhZGVycy5oCmluZGV4IDIwNDlhZTMuLjQ4NDNkZTYgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcGdlbmhlYWRlcnMuaAorKysgYi9JbmNsdWRlL3BnZW5oZWFkZXJzLmgKQEAgLTIzLDYgKzIzLDcgQEAKICNkZWZpbmUgZGVsYml0c2V0IF9QeV9kZWxiaXRzZXQKICNkZWZpbmUgZHVtcHRyZWUgX1B5X2R1bXB0cmVlCiAjZGVmaW5lIGZpbmRsYWJlbCBfUHlfZmluZGxhYmVsCisjZGVmaW5lIGZyZWVncmFtbWFyIF9QeV9mcmVlZ3JhbW1hcgogI2RlZmluZSBtZXJnZWJpdHNldCBfUHlfbWVyZ2ViaXRzZXQKICNkZWZpbmUgbWV0YV9ncmFtbWFyIF9QeV9tZXRhX2dyYW1tYXIKICNkZWZpbmUgbmV3Yml0c2V0IF9QeV9uZXdiaXRzZXQKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHlfY3Vyc2VzLmggYi9JbmNsdWRlL3B5X2N1cnNlcy5oCmluZGV4IGYyYzA4ZjYuLjNjMjE2OTcgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHlfY3Vyc2VzLmgKKysrIGIvSW5jbHVkZS9weV9jdXJzZXMuaApAQCAtMTAzLDggKzEwMyw4IEBACiAjZW5kaWYKIAogLyogZ2VuZXJhbCBlcnJvciBtZXNzYWdlcyAqLwotc3RhdGljIGNoYXIgKmNhdGNoYWxsX0VSUiAgPSAiY3Vyc2VzIGZ1bmN0aW9uIHJldHVybmVkIEVSUiI7Ci1zdGF0aWMgY2hhciAqY2F0Y2hhbGxfTlVMTCA9ICJjdXJzZXMgZnVuY3Rpb24gcmV0dXJuZWQgTlVMTCI7CitzdGF0aWMgY29uc3QgY2hhciBjYXRjaGFsbF9FUlJbXSAgPSAiY3Vyc2VzIGZ1bmN0aW9uIHJldHVybmVkIEVSUiI7CitzdGF0aWMgY29uc3QgY2hhciBjYXRjaGFsbF9OVUxMW10gPSAiY3Vyc2VzIGZ1bmN0aW9uIHJldHVybmVkIE5VTEwiOwogCiAvKiBGdW5jdGlvbiBQcm90b3R5cGUgTWFjcm9zIC0gVGhleSBhcmUgdWdseSBidXQgdmVyeSwgdmVyeSB1c2VmdWwuIDstKQogCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5YXRvbWljLmggYi9JbmNsdWRlL3B5YXRvbWljLmgKaW5kZXggODkwMjhlZi4uODkzZDMwZCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weWF0b21pYy5oCisrKyBiL0luY2x1ZGUvcHlhdG9taWMuaApAQCAtNjEsNyArNjEsNyBAQAogfSBfUHlfbWVtb3J5X29yZGVyOwogCiB0eXBlZGVmIHN0cnVjdCBfUHlfYXRvbWljX2FkZHJlc3MgewotICAgIFB5X3VpbnRwdHJfdCBfdmFsdWU7CisgICAgdWludHB0cl90IF92YWx1ZTsKIH0gX1B5X2F0b21pY19hZGRyZXNzOwogCiB0eXBlZGVmIHN0cnVjdCBfUHlfYXRvbWljX2ludCB7CkBAIC05OCw3ICs5OCw3IEBACiB9IF9QeV9tZW1vcnlfb3JkZXI7CiAKIHR5cGVkZWYgc3RydWN0IF9QeV9hdG9taWNfYWRkcmVzcyB7Ci0gICAgUHlfdWludHB0cl90IF92YWx1ZTsKKyAgICB1aW50cHRyX3QgX3ZhbHVlOwogfSBfUHlfYXRvbWljX2FkZHJlc3M7CiAKIHR5cGVkZWYgc3RydWN0IF9QeV9hdG9taWNfaW50IHsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHlkZWJ1Zy5oIGIvSW5jbHVkZS9weWRlYnVnLmgKaW5kZXggMTliZWMyYi4uNmUyM2E4OSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weWRlYnVnLmgKKysrIGIvSW5jbHVkZS9weWRlYnVnLmgKQEAgLTI0LDYgKzI0LDEwIEBACiBQeUFQSV9EQVRBKGludCkgUHlfSGFzaFJhbmRvbWl6YXRpb25GbGFnOwogUHlBUElfREFUQShpbnQpIFB5X0lzb2xhdGVkRmxhZzsKIAorI2lmZGVmIE1TX1dJTkRPV1MKK1B5QVBJX0RBVEEoaW50KSBQeV9MZWdhY3lXaW5kb3dzU3RkaW9GbGFnOworI2VuZGlmCisKIC8qIHRoaXMgaXMgYSB3cmFwcGVyIGFyb3VuZCBnZXRlbnYoKSB0aGF0IHBheXMgYXR0ZW50aW9uIHRvCiAgICBQeV9JZ25vcmVFbnZpcm9ubWVudEZsYWcuICBJdCBzaG91bGQgYmUgdXNlZCBmb3IgZ2V0dGluZyB2YXJpYWJsZXMgbGlrZQogICAgUFlUSE9OUEFUSCBhbmQgUFlUSE9OSE9NRSBmcm9tIHRoZSBlbnZpcm9ubWVudCAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weWR0cmFjZS5kIGIvSW5jbHVkZS9weWR0cmFjZS5kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4MzYwNTUKLS0tIC9kZXYvbnVsbAorKysgYi9JbmNsdWRlL3B5ZHRyYWNlLmQKQEAgLTAsMCArMSwxOSBAQAorLyogUHl0aG9uIERUcmFjZSBwcm92aWRlciAqLworCitwcm92aWRlciBweXRob24geworICAgIHByb2JlIGZ1bmN0aW9uX19lbnRyeShjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgaW50KTsKKyAgICBwcm9iZSBmdW5jdGlvbl9fcmV0dXJuKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBpbnQpOworICAgIHByb2JlIGluc3RhbmNlX19uZXdfX3N0YXJ0KGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKKyAgICBwcm9iZSBpbnN0YW5jZV9fbmV3X19kb25lKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKKyAgICBwcm9iZSBpbnN0YW5jZV9fZGVsZXRlX19zdGFydChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CisgICAgcHJvYmUgaW5zdGFuY2VfX2RlbGV0ZV9fZG9uZShjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CisgICAgcHJvYmUgbGluZShjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgaW50KTsKKyAgICBwcm9iZSBnY19fc3RhcnQoaW50KTsKKyAgICBwcm9iZSBnY19fZG9uZShsb25nKTsKK307CisKKyNwcmFnbWEgRCBhdHRyaWJ1dGVzIEV2b2x2aW5nL0V2b2x2aW5nL0NvbW1vbiBwcm92aWRlciBweXRob24gcHJvdmlkZXIKKyNwcmFnbWEgRCBhdHRyaWJ1dGVzIEV2b2x2aW5nL0V2b2x2aW5nL0NvbW1vbiBwcm92aWRlciBweXRob24gbW9kdWxlCisjcHJhZ21hIEQgYXR0cmlidXRlcyBFdm9sdmluZy9Fdm9sdmluZy9Db21tb24gcHJvdmlkZXIgcHl0aG9uIGZ1bmN0aW9uCisjcHJhZ21hIEQgYXR0cmlidXRlcyBFdm9sdmluZy9Fdm9sdmluZy9Db21tb24gcHJvdmlkZXIgcHl0aG9uIG5hbWUKKyNwcmFnbWEgRCBhdHRyaWJ1dGVzIEV2b2x2aW5nL0V2b2x2aW5nL0NvbW1vbiBwcm92aWRlciBweXRob24gYXJncwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weWR0cmFjZS5oIGIvSW5jbHVkZS9weWR0cmFjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0M2EyNTMKLS0tIC9kZXYvbnVsbAorKysgYi9JbmNsdWRlL3B5ZHRyYWNlLmgKQEAgLTAsMCArMSw1MyBAQAorLyogU3RhdGljIERUcmFjZSBwcm9iZXMgaW50ZXJmYWNlICovCisKKyNpZm5kZWYgUHlfRFRSQUNFX0gKKyNkZWZpbmUgUHlfRFRSQUNFX0gKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworI2lmZGVmIFdJVEhfRFRSQUNFCisKKyNpbmNsdWRlICJweWR0cmFjZV9wcm9iZXMuaCIKKworLyogcHlkdHJhY2VfcHJvYmVzLmgsIG9uIHN5c3RlbXMgd2l0aCBEVHJhY2UsIGlzIGF1dG8tZ2VuZXJhdGVkIHRvIGluY2x1ZGUKKyAgIGBQeURUcmFjZV97UFJPQkV9YCBhbmQgYFB5RFRyYWNlX3tQUk9CRX1fRU5BQkxFRCgpYCBtYWNyb3MgZm9yIGV2ZXJ5IHByb2JlCisgICBkZWZpbmVkIGluIHB5ZHRyYWNlX3Byb3ZpZGVyLmQuCisKKyAgIENhbGxpbmcgdGhlc2UgZnVuY3Rpb25zIG11c3QgYmUgZ3VhcmRlZCBieSBhIGBQeURUcmFjZV97UFJPQkV9X0VOQUJMRUQoKWAKKyAgIGNoZWNrIHRvIG1pbmltaXplIHBlcmZvcm1hbmNlIGltcGFjdCB3aGVuIHByb2JpbmcgaXMgb2ZmLiBGb3IgZXhhbXBsZToKKworICAgICAgIGlmIChQeURUcmFjZV9GVU5DVElPTl9FTlRSWV9FTkFCTEVEKCkpCisgICAgICAgICAgIFB5RFRyYWNlX0ZVTkNUSU9OX0VOVFJZKGYpOworKi8KKworI2Vsc2UKKworLyogV2l0aG91dCBEVHJhY2UsIGNvbXBpbGUgdG8gbm90aGluZy4gKi8KKworc3RhdGljIGlubGluZSB2b2lkIFB5RFRyYWNlX0xJTkUoY29uc3QgY2hhciAqYXJnMCwgY29uc3QgY2hhciAqYXJnMSwgaW50IGFyZzIpIHt9CitzdGF0aWMgaW5saW5lIHZvaWQgUHlEVHJhY2VfRlVOQ1RJT05fRU5UUlkoY29uc3QgY2hhciAqYXJnMCwgY29uc3QgY2hhciAqYXJnMSwgaW50IGFyZzIpICB7fQorc3RhdGljIGlubGluZSB2b2lkIFB5RFRyYWNlX0ZVTkNUSU9OX1JFVFVSTihjb25zdCBjaGFyICphcmcwLCBjb25zdCBjaGFyICphcmcxLCBpbnQgYXJnMikge30KK3N0YXRpYyBpbmxpbmUgdm9pZCBQeURUcmFjZV9HQ19TVEFSVChpbnQgYXJnMCkge30KK3N0YXRpYyBpbmxpbmUgdm9pZCBQeURUcmFjZV9HQ19ET05FKGludCBhcmcwKSB7fQorc3RhdGljIGlubGluZSB2b2lkIFB5RFRyYWNlX0lOU1RBTkNFX05FV19TVEFSVChpbnQgYXJnMCkge30KK3N0YXRpYyBpbmxpbmUgdm9pZCBQeURUcmFjZV9JTlNUQU5DRV9ORVdfRE9ORShpbnQgYXJnMCkge30KK3N0YXRpYyBpbmxpbmUgdm9pZCBQeURUcmFjZV9JTlNUQU5DRV9ERUxFVEVfU1RBUlQoaW50IGFyZzApIHt9CitzdGF0aWMgaW5saW5lIHZvaWQgUHlEVHJhY2VfSU5TVEFOQ0VfREVMRVRFX0RPTkUoaW50IGFyZzApIHt9CisKK3N0YXRpYyBpbmxpbmUgaW50IFB5RFRyYWNlX0xJTkVfRU5BQkxFRCh2b2lkKSB7IHJldHVybiAwOyB9CitzdGF0aWMgaW5saW5lIGludCBQeURUcmFjZV9GVU5DVElPTl9FTlRSWV9FTkFCTEVEKHZvaWQpIHsgcmV0dXJuIDA7IH0KK3N0YXRpYyBpbmxpbmUgaW50IFB5RFRyYWNlX0ZVTkNUSU9OX1JFVFVSTl9FTkFCTEVEKHZvaWQpIHsgcmV0dXJuIDA7IH0KK3N0YXRpYyBpbmxpbmUgaW50IFB5RFRyYWNlX0dDX1NUQVJUX0VOQUJMRUQodm9pZCkgeyByZXR1cm4gMDsgfQorc3RhdGljIGlubGluZSBpbnQgUHlEVHJhY2VfR0NfRE9ORV9FTkFCTEVEKHZvaWQpIHsgcmV0dXJuIDA7IH0KK3N0YXRpYyBpbmxpbmUgaW50IFB5RFRyYWNlX0lOU1RBTkNFX05FV19TVEFSVF9FTkFCTEVEKHZvaWQpIHsgcmV0dXJuIDA7IH0KK3N0YXRpYyBpbmxpbmUgaW50IFB5RFRyYWNlX0lOU1RBTkNFX05FV19ET05FX0VOQUJMRUQodm9pZCkgeyByZXR1cm4gMDsgfQorc3RhdGljIGlubGluZSBpbnQgUHlEVHJhY2VfSU5TVEFOQ0VfREVMRVRFX1NUQVJUX0VOQUJMRUQodm9pZCkgeyByZXR1cm4gMDsgfQorc3RhdGljIGlubGluZSBpbnQgUHlEVHJhY2VfSU5TVEFOQ0VfREVMRVRFX0RPTkVfRU5BQkxFRCh2b2lkKSB7IHJldHVybiAwOyB9CisKKyNlbmRpZiAvKiAhV0lUSF9EVFJBQ0UgKi8KKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAvKiAhUHlfRFRSQUNFX0ggKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHllcnJvcnMuaCBiL0luY2x1ZGUvcHllcnJvcnMuaAppbmRleCAzNWFlZGI3Li5mOWY3NGMwIDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5ZXJyb3JzLmgKKysrIGIvSW5jbHVkZS9weWVycm9ycy5oCkBAIC0xNjAsNiArMTYwLDcgQEAKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfRmxvYXRpbmdQb2ludEVycm9yOwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19PU0Vycm9yOwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19JbXBvcnRFcnJvcjsKK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfTW9kdWxlTm90Rm91bmRFcnJvcjsKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfSW5kZXhFcnJvcjsKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfS2V5RXJyb3I7CiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0tleWJvYXJkSW50ZXJydXB0OwpAQCAtMjU0LDYgKzI1NSwxNyBAQAogICAgIHZhX2xpc3QgdmFyZ3MpOwogI2VuZGlmCiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKKy8qIExpa2UgUHlFcnJfRm9ybWF0KCksIGJ1dCBzYXZlcyBjdXJyZW50IGV4Y2VwdGlvbiBhcyBfX2NvbnRleHRfXyBhbmQKKyAgIF9fY2F1c2VfXy4KKyAqLworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlFcnJfRm9ybWF0RnJvbUNhdXNlKAorICAgIFB5T2JqZWN0ICpleGNlcHRpb24sCisgICAgY29uc3QgY2hhciAqZm9ybWF0LCAgIC8qIEFTQ0lJLWVuY29kZWQgc3RyaW5nICAqLworICAgIC4uLgorICAgICk7CisjZW5kaWYKKwogI2lmZGVmIE1TX1dJTkRPV1MKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWUoCiAgICAgaW50IGllcnIsCkBAIC0yODMsNiArMjk1LDkgQEAKIAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUVycl9TZXRFeGNXaXRoQXJnc0t3YXJncyhQeU9iamVjdCAqLCBQeU9iamVjdCAqLAogICAgIFB5T2JqZWN0ICopOworCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RXJyX1NldEltcG9ydEVycm9yU3ViY2xhc3MoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKKyAgICBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlFcnJfU2V0SW1wb3J0RXJyb3IoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKICAgICBQeU9iamVjdCAqKTsKIApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weWdldG9wdC5oIGIvSW5jbHVkZS9weWdldG9wdC5oCmluZGV4IDQyNWM3ZGQuLjk2MjcyMGMgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHlnZXRvcHQuaAorKysgYi9JbmNsdWRlL3B5Z2V0b3B0LmgKQEAgLTExLDkgKzExLDkgQEAKIFB5QVBJX0RBVEEod2NoYXJfdCAqKSBfUHlPU19vcHRhcmc7CiAKIFB5QVBJX0ZVTkModm9pZCkgX1B5T1NfUmVzZXRHZXRPcHQodm9pZCk7Ci0jZW5kaWYKIAogUHlBUElfRlVOQyhpbnQpIF9QeU9TX0dldE9wdChpbnQgYXJnYywgd2NoYXJfdCAqKmFyZ3YsIHdjaGFyX3QgKm9wdHN0cmluZyk7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weWhhc2guaCBiL0luY2x1ZGUvcHloYXNoLmgKaW5kZXggYTdjYTkzNy4uYTgxNGFmNiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weWhhc2guaAorKysgYi9JbmNsdWRlL3B5aGFzaC5oCkBAIC0zNiwxNCArMzYsMTQgQEAKICAqIG1lbW9yeSBsYXlvdXQgb24gNjQgYml0IHN5c3RlbXMKICAqICAgY2NjY2NjY2MgY2NjY2NjY2MgY2NjY2NjY2MgIHVjIC0tIHVuc2lnbmVkIGNoYXJbMjRdCiAgKiAgIHBwcHBwcHBwIHNzc3Nzc3NzIC4uLi4uLi4uICBmbnYgLS0gdHdvIFB5X2hhc2hfdAotICogICBrMGswazBrMCBrMWsxazFrMSAuLi4uLi4uLiAgc2lwaGFzaCAtLSB0d28gUFlfVUlOVDY0X1QKKyAqICAgazBrMGswazAgazFrMWsxazEgLi4uLi4uLi4gIHNpcGhhc2ggLS0gdHdvIHVpbnQ2NF90CiAgKiAgIC4uLi4uLi4uIC4uLi4uLi4uIHNzc3Nzc3NzICBkamJ4MzNhIC0tIDE2IGJ5dGVzIHBhZGRpbmcgKyBvbmUgUHlfaGFzaF90CiAgKiAgIC4uLi4uLi4uIC4uLi4uLi4uIGVlZWVlZWVlICBweWV4cGF0IFhNTCBoYXNoIHNhbHQKICAqCiAgKiBtZW1vcnkgbGF5b3V0IG9uIDMyIGJpdCBzeXN0ZW1zCiAgKiAgIGNjY2NjY2NjIGNjY2NjY2NjIGNjY2NjY2NjICB1YwogICogICBwcHBwc3NzcyAuLi4uLi4uLiAuLi4uLi4uLiAgZm52IC0tIHR3byBQeV9oYXNoX3QKLSAqICAgazBrMGswazAgazFrMWsxazEgLi4uLi4uLi4gIHNpcGhhc2ggLS0gdHdvIFBZX1VJTlQ2NF9UICgqKQorICogICBrMGswazBrMCBrMWsxazFrMSAuLi4uLi4uLiAgc2lwaGFzaCAtLSB0d28gdWludDY0X3QgKCopCiAgKiAgIC4uLi4uLi4uIC4uLi4uLi4uIHNzc3MuLi4uICBkamJ4MzNhIC0tIDE2IGJ5dGVzIHBhZGRpbmcgKyBvbmUgUHlfaGFzaF90CiAgKiAgIC4uLi4uLi4uIC4uLi4uLi4uIGVlZWUuLi4uICBweWV4cGF0IFhNTCBoYXNoIHNhbHQKICAqCkBAIC01OSwxMyArNTksMTEgQEAKICAgICAgICAgUHlfaGFzaF90IHByZWZpeDsKICAgICAgICAgUHlfaGFzaF90IHN1ZmZpeDsKICAgICB9IGZudjsKLSNpZmRlZiBQWV9VSU5UNjRfVAogICAgIC8qIHR3byB1aW50NjQgZm9yIFNpcEhhc2gyNCAqLwogICAgIHN0cnVjdCB7Ci0gICAgICAgIFBZX1VJTlQ2NF9UIGswOwotICAgICAgICBQWV9VSU5UNjRfVCBrMTsKKyAgICAgICAgdWludDY0X3QgazA7CisgICAgICAgIHVpbnQ2NF90IGsxOwogICAgIH0gc2lwaGFzaDsKLSNlbmRpZgogICAgIC8qIGEgZGlmZmVyZW50ICghKSBQeV9oYXNoX3QgZm9yIHNtYWxsIHN0cmluZyBvcHRpbWl6YXRpb24gKi8KICAgICBzdHJ1Y3QgewogICAgICAgICB1bnNpZ25lZCBjaGFyIHBhZGRpbmdbMTZdOwpAQCAtMTIxLDggKzExOSw3IEBACiAgKiBjb25maWd1cmUgc2NyaXB0LgogICoKICAqIC0gRk5WIGlzIGF2YWlsYWJsZSBvbiBhbGwgcGxhdGZvcm1zIGFuZCBhcmNoaXRlY3R1cmVzLgotICogLSBTSVBIQVNIMjQgb25seSB3b3JrcyBvbiBwbGFmb3JtcyB0aGF0IHByb3ZpZGUgUFlfVUlOVDY0X1QgYW5kIGRvZXNuJ3QKLSAqICAgcmVxdWlyZSBhbGlnbmVkIG1lbW9yeSBmb3IgaW50ZWdlcnMuCisgKiAtIFNJUEhBU0gyNCBvbmx5IHdvcmtzIG9uIHBsYWZvcm1zIHRoYXQgZG9uJ3QgcmVxdWlyZSBhbGlnbmVkIG1lbW9yeSBmb3IgaW50ZWdlcnMuCiAgKiAtIFdpdGggRVhURVJOQUwgZW1iZWRkZXJzIGNhbiBwcm92aWRlIGFuIGFsdGVybmF0aXZlIGltcGxlbWVudGF0aW9uIHdpdGg6OgogICoKICAqICAgICBQeUhhc2hfRnVuY0RlZiBQeUhhc2hfRnVuYyA9IHsuLi59OwpAQCAtMTM0LDggKzEzMSw3IEBACiAjZGVmaW5lIFB5X0hBU0hfRk5WIDIKIAogI2lmbmRlZiBQeV9IQVNIX0FMR09SSVRITQotIyAgaWYgKGRlZmluZWQoUFlfVUlOVDY0X1QpICYmIGRlZmluZWQoUFlfVUlOVDMyX1QpIFwKLSAgICAgICAmJiAhZGVmaW5lZChIQVZFX0FMSUdORURfUkVRVUlSRUQpKQorIyAgaWZuZGVmIEhBVkVfQUxJR05FRF9SRVFVSVJFRAogIyAgICBkZWZpbmUgUHlfSEFTSF9BTEdPUklUSE0gUHlfSEFTSF9TSVBIQVNIMjQKICMgIGVsc2UKICMgICAgZGVmaW5lIFB5X0hBU0hfQUxHT1JJVEhNIFB5X0hBU0hfRk5WCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5bGlmZWN5Y2xlLmggYi9JbmNsdWRlL3B5bGlmZWN5Y2xlLmgKaW5kZXggY2NkZWJlMi4uNWE2NzY2NiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weWxpZmVjeWNsZS5oCisrKyBiL0luY2x1ZGUvcHlsaWZlY3ljbGUuaApAQCAtMjcsNiArMjcsNyBAQAogUHlBUElfRlVOQyh2b2lkKSBfUHlfSW5pdGlhbGl6ZUV4X1ByaXZhdGUoaW50LCBpbnQpOwogI2VuZGlmCiBQeUFQSV9GVU5DKHZvaWQpIFB5X0ZpbmFsaXplKHZvaWQpOworUHlBUElfRlVOQyhpbnQpIFB5X0ZpbmFsaXplRXgodm9pZCk7CiBQeUFQSV9GVU5DKGludCkgUHlfSXNJbml0aWFsaXplZCh2b2lkKTsKIFB5QVBJX0ZVTkMoUHlUaHJlYWRTdGF0ZSAqKSBQeV9OZXdJbnRlcnByZXRlcih2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlfRW5kSW50ZXJwcmV0ZXIoUHlUaHJlYWRTdGF0ZSAqKTsKQEAgLTEwNiw2ICsxMDcsNyBAQAogUHlBUElfRlVOQyh2b2lkKSBQeVNsaWNlX0Zpbmkodm9pZCk7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeVR5cGVfRmluaSh2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5UmFuZG9tX0Zpbmkodm9pZCk7CitQeUFQSV9GVU5DKHZvaWQpIFB5QXN5bmNHZW5fRmluaSh2b2lkKTsKIAogUHlBUElfREFUQShQeVRocmVhZFN0YXRlICopIF9QeV9GaW5hbGl6aW5nOwogI2VuZGlmCkBAIC0xMTUsOCArMTE3LDExIEBACiBQeUFQSV9GVU5DKFB5T1Nfc2lnaGFuZGxlcl90KSBQeU9TX2dldHNpZyhpbnQpOwogUHlBUElfRlVOQyhQeU9TX3NpZ2hhbmRsZXJfdCkgUHlPU19zZXRzaWcoaW50LCBQeU9TX3NpZ2hhbmRsZXJfdCk7CiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIC8qIFJhbmRvbSAqLwotUHlBUElfRlVOQyhpbnQpIF9QeU9TX1VSYW5kb20gKHZvaWQgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplKTsKK1B5QVBJX0ZVTkMoaW50KSBfUHlPU19VUmFuZG9tKHZvaWQgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplKTsKK1B5QVBJX0ZVTkMoaW50KSBfUHlPU19VUmFuZG9tTm9uYmxvY2sodm9pZCAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUpOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHltYWNyby5oIGIvSW5jbHVkZS9weW1hY3JvLmgKaW5kZXggM2Y2ZjVkYy4uMmE4MzlhYiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weW1hY3JvLmgKKysrIGIvSW5jbHVkZS9weW1hY3JvLmgKQEAgLTE4LDYgKzE4LDkgQEAKICAgIGJ5ICJfX0xJTkVfXyIuICovCiAjZGVmaW5lIFB5X1NUUklOR0lGWSh4KSBfUHlfWFNUUklOR0lGWSh4KQogCisvKiBHZXQgdGhlIHNpemUgb2YgYSBzdHJ1Y3R1cmUgbWVtYmVyIGluIGJ5dGVzICovCisjZGVmaW5lIFB5X01FTUJFUl9TSVpFKHR5cGUsIG1lbWJlcikgc2l6ZW9mKCgodHlwZSAqKTApLT5tZW1iZXIpCisKIC8qIEFyZ3VtZW50IG11c3QgYmUgYSBjaGFyIG9yIGFuIGludCBpbiBbLTEyOCwgMTI3XSBvciBbMCwgMjU1XS4gKi8KICNkZWZpbmUgUHlfQ0hBUk1BU0soYykgKCh1bnNpZ25lZCBjaGFyKSgoYykgJiAweGZmKSkKIApAQCAtMzYsNiArMzksMTAgQEAKICNkZWZpbmUgUHlfQlVJTERfQVNTRVJUX0VYUFIoY29uZCkgXAogICAgIChzaXplb2YoY2hhciBbMSAtIDIqIShjb25kKV0pIC0gMSkKIAorI2RlZmluZSBQeV9CVUlMRF9BU1NFUlQoY29uZCkgIGRvIHsgICAgICAgICBcCisgICAgICAgICh2b2lkKVB5X0JVSUxEX0FTU0VSVF9FWFBSKGNvbmQpOyAgIFwKKyAgICB9IHdoaWxlKDApCisKIC8qIEdldCB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIGEgdmlzaWJsZSBhcnJheQogCiAgICBUaGlzIGRvZXMgbm90IHdvcmsgb24gcG9pbnRlcnMsIG9yIGFycmF5cyBkZWNsYXJlZCBhcyBbXSwgb3IgZnVuY3Rpb24KQEAgLTc1LDEyICs4MiwxMiBAQAogI2RlZmluZSBfUHlfU0laRV9ST1VORF9VUChuLCBhKSAoKChzaXplX3QpKG4pICsgXAogICAgICAgICAoc2l6ZV90KSgoYSkgLSAxKSkgJiB+KHNpemVfdCkoKGEpIC0gMSkpCiAvKiBSb3VuZCBwb2ludGVyICJwIiBkb3duIHRvIHRoZSBjbG9zZXN0ICJhIi1hbGlnbmVkIGFkZHJlc3MgPD0gInAiLiAqLwotI2RlZmluZSBfUHlfQUxJR05fRE9XTihwLCBhKSAoKHZvaWQgKikoKFB5X3VpbnRwdHJfdCkocCkgJiB+KFB5X3VpbnRwdHJfdCkoKGEpIC0gMSkpKQorI2RlZmluZSBfUHlfQUxJR05fRE9XTihwLCBhKSAoKHZvaWQgKikoKHVpbnRwdHJfdCkocCkgJiB+KHVpbnRwdHJfdCkoKGEpIC0gMSkpKQogLyogUm91bmQgcG9pbnRlciAicCIgdXAgdG8gdGhlIGNsb3Nlc3QgImEiLWFsaWduZWQgYWRkcmVzcyA+PSAicCIuICovCi0jZGVmaW5lIF9QeV9BTElHTl9VUChwLCBhKSAoKHZvaWQgKikoKChQeV91aW50cHRyX3QpKHApICsgXAotICAgICAgICAoUHlfdWludHB0cl90KSgoYSkgLSAxKSkgJiB+KFB5X3VpbnRwdHJfdCkoKGEpIC0gMSkpKQorI2RlZmluZSBfUHlfQUxJR05fVVAocCwgYSkgKCh2b2lkICopKCgodWludHB0cl90KShwKSArIFwKKyAgICAgICAgKHVpbnRwdHJfdCkoKGEpIC0gMSkpICYgfih1aW50cHRyX3QpKChhKSAtIDEpKSkKIC8qIENoZWNrIGlmIHBvaW50ZXIgInAiIGlzIGFsaWduZWQgdG8gImEiLWJ5dGVzIGJvdW5kYXJ5LiAqLwotI2RlZmluZSBfUHlfSVNfQUxJR05FRChwLCBhKSAoISgoUHlfdWludHB0cl90KShwKSAmIChQeV91aW50cHRyX3QpKChhKSAtIDEpKSkKKyNkZWZpbmUgX1B5X0lTX0FMSUdORUQocCwgYSkgKCEoKHVpbnRwdHJfdCkocCkgJiAodWludHB0cl90KSgoYSkgLSAxKSkpCiAKICNpZmRlZiBfX0dOVUNfXwogI2RlZmluZSBQeV9VTlVTRUQobmFtZSkgX3VudXNlZF8gIyMgbmFtZSBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weW1hdGguaCBiL0luY2x1ZGUvcHltYXRoLmgKaW5kZXggMWM4ZDcxOC4uNzIxNmEwOSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weW1hdGguaAorKysgYi9JbmNsdWRlL3B5bWF0aC5oCkBAIC01NSw2ICs1NSwxMiBAQAogI2RlZmluZSBQeV9NQVRIX0UgMi43MTgyODE4Mjg0NTkwNDUyMzU0CiAjZW5kaWYKIAorLyogVGF1ICgycGkpIHRvIDQwIGRpZ2l0cywgdGFrZW4gZnJvbSB0YXVkYXkuY29tL3RhdS1kaWdpdHMuICovCisjaWZuZGVmIFB5X01BVEhfVEFVCisjZGVmaW5lIFB5X01BVEhfVEFVIDYuMjgzMTg1MzA3MTc5NTg2NDc2OTI1Mjg2NzY2NTU5MDA1NzY4Mzk0M0wKKyNlbmRpZgorCisKIC8qIE9uIHg4NiwgUHlfRk9SQ0VfRE9VQkxFIGZvcmNlcyBhIGZsb2F0aW5nLXBvaW50IG51bWJlciBvdXQgb2YgYW4geDg3IEZQVQogICAgcmVnaXN0ZXIgYW5kIGludG8gYSA2NC1iaXQgbWVtb3J5IGxvY2F0aW9uLCByb3VuZGluZyBmcm9tIGV4dGVuZGVkCiAgICBwcmVjaXNpb24gdG8gZG91YmxlIHByZWNpc2lvbiBpbiB0aGUgcHJvY2Vzcy4gIE9uIG90aGVyIHBsYXRmb3JtcyBpdCBkb2VzCkBAIC0xNjksNyArMTc1LDcgQEAKICAgICAgICAgI3ByYWdtYSBmbG9hdF9jb250cm9sIChwb3ApCiAgICAgICAgICNkZWZpbmUgUHlfTkFOIF9faWNjX25hbigpCiAgICAgI2Vsc2UgLyogSUNDX05BTl9SRUxBWEVEIGFzIGRlZmF1bHQgZm9yIEludGVsIENvbXBpbGVyICovCi0gICAgICAgIHN0YXRpYyB1bmlvbiB7IHVuc2lnbmVkIGNoYXIgYnVmWzhdOyBkb3VibGUgX19pY2NfbmFuOyB9IF9fbmFuX3N0b3JlID0gezAsMCwwLDAsMCwwLDB4ZjgsMHg3Zn07CisgICAgICAgIHN0YXRpYyBjb25zdCB1bmlvbiB7IHVuc2lnbmVkIGNoYXIgYnVmWzhdOyBkb3VibGUgX19pY2NfbmFuOyB9IF9fbmFuX3N0b3JlID0gezAsMCwwLDAsMCwwLDB4ZjgsMHg3Zn07CiAgICAgICAgICNkZWZpbmUgUHlfTkFOIChfX25hbl9zdG9yZS5fX2ljY19uYW4pCiAgICAgI2VuZGlmIC8qIElDQ19OQU5fU1RSSUNUICovCiAjZW5kaWYgLyogX19JTlRFTF9DT01QSUxFUiAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weW1lbS5oIGIvSW5jbHVkZS9weW1lbS5oCmluZGV4IDA0M2RiNjQuLmNlNjNiZjggMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHltZW0uaAorKysgYi9JbmNsdWRlL3B5bWVtLmgKQEAgLTE2LDggKzE2LDUxIEBACiBQeUFQSV9GVU5DKHZvaWQgKikgUHlNZW1fUmF3Q2FsbG9jKHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSk7CiBQeUFQSV9GVU5DKHZvaWQgKikgUHlNZW1fUmF3UmVhbGxvYyh2b2lkICpwdHIsIHNpemVfdCBuZXdfc2l6ZSk7CiBQeUFQSV9GVU5DKHZvaWQpIFB5TWVtX1Jhd0ZyZWUodm9pZCAqcHRyKTsKKworLyogQ29uZmlndXJlIHRoZSBQeXRob24gbWVtb3J5IGFsbG9jYXRvcnMuIFBhc3MgTlVMTCB0byB1c2UgZGVmYXVsdAorICAgYWxsb2NhdG9ycy4gKi8KK1B5QVBJX0ZVTkMoaW50KSBfUHlNZW1fU2V0dXBBbGxvY2F0b3JzKGNvbnN0IGNoYXIgKm9wdCk7CisKKyNpZmRlZiBXSVRIX1BZTUFMTE9DCitQeUFQSV9GVU5DKGludCkgX1B5TWVtX1B5bWFsbG9jRW5hYmxlZCh2b2lkKTsKICNlbmRpZgogCisvKiBJZGVudGlmaWVyIG9mIGFuIGFkZHJlc3Mgc3BhY2UgKGRvbWFpbikgaW4gdHJhY2VtYWxsb2MgKi8KK3R5cGVkZWYgdW5zaWduZWQgaW50IF9QeVRyYWNlTWFsbG9jX2RvbWFpbl90OworCisvKiBUcmFjayBhbiBhbGxvY2F0ZWQgbWVtb3J5IGJsb2NrIGluIHRoZSB0cmFjZW1hbGxvYyBtb2R1bGUuCisgICBSZXR1cm4gMCBvbiBzdWNjZXNzLCByZXR1cm4gLTEgb24gZXJyb3IgKGZhaWxlZCB0byBhbGxvY2F0ZSBtZW1vcnkgdG8gc3RvcmUKKyAgIHRoZSB0cmFjZSkuCisKKyAgIFJldHVybiAtMiBpZiB0cmFjZW1hbGxvYyBpcyBkaXNhYmxlZC4KKworICAgSWYgbWVtb3J5IGJsb2NrIGlzIGFscmVhZHkgdHJhY2tlZCwgdXBkYXRlIHRoZSBleGlzdGluZyB0cmFjZS4gKi8KK1B5QVBJX0ZVTkMoaW50KSBfUHlUcmFjZU1hbGxvY19UcmFjaygKKyAgICBfUHlUcmFjZU1hbGxvY19kb21haW5fdCBkb21haW4sCisgICAgdWludHB0cl90IHB0ciwKKyAgICBzaXplX3Qgc2l6ZSk7CisKKy8qIFVudHJhY2sgYW4gYWxsb2NhdGVkIG1lbW9yeSBibG9jayBpbiB0aGUgdHJhY2VtYWxsb2MgbW9kdWxlLgorICAgRG8gbm90aGluZyBpZiB0aGUgYmxvY2sgd2FzIG5vdCB0cmFja2VkLgorCisgICBSZXR1cm4gLTIgaWYgdHJhY2VtYWxsb2MgaXMgZGlzYWJsZWQsIG90aGVyd2lzZSByZXR1cm4gMC4gKi8KK1B5QVBJX0ZVTkMoaW50KSBfUHlUcmFjZU1hbGxvY19VbnRyYWNrKAorICAgIF9QeVRyYWNlTWFsbG9jX2RvbWFpbl90IGRvbWFpbiwKKyAgICB1aW50cHRyX3QgcHRyKTsKKworLyogR2V0IHRoZSB0cmFjZWJhY2sgd2hlcmUgYSBtZW1vcnkgYmxvY2sgd2FzIGFsbG9jYXRlZC4KKworICAgUmV0dXJuIGEgdHVwbGUgb2YgKGZpbGVuYW1lOiBzdHIsIGxpbmVubzogaW50KSB0dXBsZXMuCisKKyAgIFJldHVybiBOb25lIGlmIHRoZSB0cmFjZW1hbGxvYyBtb2R1bGUgaXMgZGlzYWJsZWQgb3IgaWYgdGhlIG1lbW9yeSBibG9jaworICAgaXMgbm90IHRyYWNrZWQgYnkgdHJhY2VtYWxsb2MuCisKKyAgIFJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIE5VTEwgb24gZXJyb3IuICovCitQeUFQSV9GVU5DKFB5T2JqZWN0KikgX1B5VHJhY2VNYWxsb2NfR2V0VHJhY2ViYWNrKAorICAgIF9QeVRyYWNlTWFsbG9jX2RvbWFpbl90IGRvbWFpbiwKKyAgICB1aW50cHRyX3QgcHRyKTsKKyNlbmRpZiAgIC8qICFQeV9MSU1JVEVEX0FQSSAqLworCiAKIC8qIEJFV0FSRToKIApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weXBvcnQuaCBiL0luY2x1ZGUvcHlwb3J0LmgKaW5kZXggZTdlNTE3OC4uMjhiZjRiMiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weXBvcnQuaAorKysgYi9JbmNsdWRlL3B5cG9ydC5oCkBAIC0zLDE1ICszLDcgQEAKIAogI2luY2x1ZGUgInB5Y29uZmlnLmgiIC8qIGluY2x1ZGUgZm9yIGRlZmluZXMgKi8KIAotLyogU29tZSB2ZXJzaW9ucyBvZiBIUC1VWCAmIFNvbGFyaXMgbmVlZCBpbnR0eXBlcy5oIGZvciBpbnQzMl90LAotICAgSU5UMzJfTUFYLCBldGMuICovCi0jaWZkZWYgSEFWRV9JTlRUWVBFU19ICiAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSNlbmRpZgotCi0jaWZkZWYgSEFWRV9TVERJTlRfSAotI2luY2x1ZGUgPHN0ZGludC5oPgotI2VuZGlmCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogU3ltYm9scyBhbmQgbWFjcm9zIHRvIHN1cHBseSBwbGF0Zm9ybS1pbmRlcGVuZGVudCBpbnRlcmZhY2VzIHRvIGJhc2ljCkBAIC0zMSwxNCArMjMsNiBAQAogTWVhbmluZzogIEV4dHJhIGNoZWNrcyBjb21waWxlZCBpbiBmb3IgZGVidWcgbW9kZS4KIFVzZWQgaW46ICBQeV9TQUZFX0RPV05DQVNUCiAKLUhBVkVfVUlOVFBUUl9UCi1NZWFuaW5nOiAgVGhlIEM5WCB0eXBlIHVpbnRwdHJfdCBpcyBzdXBwb3J0ZWQgYnkgdGhlIGNvbXBpbGVyCi1Vc2VkIGluOiAgUHlfdWludHB0cl90Ci0KLUhBVkVfTE9OR19MT05HCi1NZWFuaW5nOiAgVGhlIGNvbXBpbGVyIHN1cHBvcnRzIHRoZSBDIHR5cGUgImxvbmcgbG9uZyIKLVVzZWQgaW46ICBQWV9MT05HX0xPTkcKLQogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8qIHR5cGVkZWZzIGZvciBzb21lIEM5WC1kZWZpbmVkIHN5bm9ueW1zIGZvciBpbnRlZ3JhbCB0eXBlcy4KQEAgLTUzLDkxICszNywzMSBAQAogICogaW50ZWdyYWwgc3lub255bXMuICBPbmx5IGRlZmluZSB0aGUgb25lcyB3ZSBhY3R1YWxseSBuZWVkLgogICovCiAKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORworLy8gbG9uZyBsb25nIGlzIHJlcXVpcmVkLiBFbnN1cmUgSEFWRV9MT05HX0xPTkcgaXMgZGVmaW5lZCBmb3IgY29tcGF0aWJpbGl0eS4KKyNpZm5kZWYgSEFWRV9MT05HX0xPTkcKKyNkZWZpbmUgSEFWRV9MT05HX0xPTkcKKyNlbmRpZgogI2lmbmRlZiBQWV9MT05HX0xPTkcKICNkZWZpbmUgUFlfTE9OR19MT05HIGxvbmcgbG9uZwotI2lmIGRlZmluZWQoTExPTkdfTUFYKQogLyogSWYgTExPTkdfTUFYIGlzIGRlZmluZWQgaW4gbGltaXRzLmgsIHVzZSB0aGF0LiAqLwogI2RlZmluZSBQWV9MTE9OR19NSU4gTExPTkdfTUlOCiAjZGVmaW5lIFBZX0xMT05HX01BWCBMTE9OR19NQVgKICNkZWZpbmUgUFlfVUxMT05HX01BWCBVTExPTkdfTUFYCi0jZWxpZiBkZWZpbmVkKF9fTE9OR19MT05HX01BWF9fKQotLyogT3RoZXJ3aXNlLCBpZiBHQ0MgaGFzIGEgYnVpbHRpbiBkZWZpbmUsIHVzZSB0aGF0LiAgKERlZmluaXRpb24gb2YKLSAqIFBZX0xMT05HX01JTiBhc3N1bWVzIHR3bydzIGNvbXBsZW1lbnQgd2l0aCBubyB0cmFwIHJlcHJlc2VudGF0aW9uLikgKi8KLSNkZWZpbmUgUFlfTExPTkdfTUFYIF9fTE9OR19MT05HX01BWF9fCi0jZGVmaW5lIFBZX0xMT05HX01JTiAoLVBZX0xMT05HX01BWCAtIDEpCi0jZGVmaW5lIFBZX1VMTE9OR19NQVggKFBZX0xMT05HX01BWCAqIFB5X1VMTCgyKSArIDEpCi0jZWxpZiBkZWZpbmVkKFNJWkVPRl9MT05HX0xPTkcpCi0vKiBPdGhlcndpc2UgY29tcHV0ZSBmcm9tIFNJWkVPRl9MT05HX0xPTkcsIGFzc3VtaW5nIHR3bydzIGNvbXBsZW1lbnQsIG5vCi0gICBwYWRkaW5nIGJpdHMsIGFuZCBubyB0cmFwIHJlcHJlc2VudGF0aW9uLiAgTm90ZTogUFlfVUxMT05HX01BWCB3YXMKLSAgIHByZXZpb3VzbHkgI2RlZmluZWQgYXMgKH4wVUxMKSBoZXJlOyBidXQgdGhhdCdsbCBnaXZlIHRoZSB3cm9uZyB2YWx1ZSBpbiBhCi0gICBwcmVwcm9jZXNzb3IgZXhwcmVzc2lvbiBvbiBzeXN0ZW1zIHdoZXJlIGxvbmcgbG9uZyAhPSBpbnRtYXhfdC4gKi8KLSNkZWZpbmUgUFlfTExPTkdfTUFYICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAoMSArIDIgKiAoKFB5X0xMKDEpIDw8IChDSEFSX0JJVCAqIFNJWkVPRl9MT05HX0xPTkcgLSAyKSkgLSAxKSkKLSNkZWZpbmUgUFlfTExPTkdfTUlOICgtUFlfTExPTkdfTUFYIC0gMSkKLSNkZWZpbmUgUFlfVUxMT05HX01BWCAoUFlfTExPTkdfTUFYICogUHlfVUxMKDIpICsgMSkKLSNlbmRpZiAvKiBMTE9OR19NQVggKi8KLSNlbmRpZgotI2VuZGlmIC8qIEhBVkVfTE9OR19MT05HICovCi0KLS8qIGEgYnVpbGQgd2l0aCAzMC1iaXQgZGlnaXRzIGZvciBQeXRob24gaW50ZWdlcnMgbmVlZHMgYW4gZXhhY3Qtd2lkdGgKLSAqIDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyIHR5cGUgdG8gc3RvcmUgdGhvc2UgZGlnaXRzLiAgKFdlIGNvdWxkIGp1c3QgdXNlCi0gKiB0eXBlICd1bnNpZ25lZCBsb25nJywgYnV0IHRoYXQgd291bGQgYmUgd2FzdGVmdWwgb24gYSBzeXN0ZW0gd2hlcmUgbG9uZ3MKLSAqIGFyZSA2NC1iaXRzLikgIE9uIFVuaXggc3lzdGVtcywgdGhlIGF1dG9jb25mIG1hY3JvIEFDX1RZUEVfVUlOVDMyX1QgZGVmaW5lcwotICogdWludDMyX3QgdG8gYmUgc3VjaCBhIHR5cGUgdW5sZXNzIHN0ZGludC5oIG9yIGludHR5cGVzLmggZGVmaW5lcyB1aW50MzJfdC4KLSAqIEhvd2V2ZXIsIGl0IGRvZXNuJ3Qgc2V0IEhBVkVfVUlOVDMyX1QsIHNvIHdlIGRvIHRoYXQgaGVyZS4KLSAqLwotI2lmZGVmIHVpbnQzMl90Ci0jZGVmaW5lIEhBVkVfVUlOVDMyX1QgMQogI2VuZGlmCiAKLSNpZmRlZiBIQVZFX1VJTlQzMl9UCi0jaWZuZGVmIFBZX1VJTlQzMl9UCiAjZGVmaW5lIFBZX1VJTlQzMl9UIHVpbnQzMl90Ci0jZW5kaWYKLSNlbmRpZgotCi0vKiBNYWNyb3MgZm9yIGEgNjQtYml0IHVuc2lnbmVkIGludGVnZXIgdHlwZTsgdXNlZCBmb3IgdHlwZSAndHdvZGlnaXRzJyBpbiB0aGUKLSAqIGludGVnZXIgaW1wbGVtZW50YXRpb24sIHdoZW4gMzAtYml0IGRpZ2l0cyBhcmUgZW5hYmxlZC4KLSAqLwotI2lmZGVmIHVpbnQ2NF90Ci0jZGVmaW5lIEhBVkVfVUlOVDY0X1QgMQotI2VuZGlmCi0KLSNpZmRlZiBIQVZFX1VJTlQ2NF9UCi0jaWZuZGVmIFBZX1VJTlQ2NF9UCiAjZGVmaW5lIFBZX1VJTlQ2NF9UIHVpbnQ2NF90Ci0jZW5kaWYKLSNlbmRpZgogCiAvKiBTaWduZWQgdmFyaWFudHMgb2YgdGhlIGFib3ZlICovCi0jaWZkZWYgaW50MzJfdAotI2RlZmluZSBIQVZFX0lOVDMyX1QgMQotI2VuZGlmCi0KLSNpZmRlZiBIQVZFX0lOVDMyX1QKLSNpZm5kZWYgUFlfSU5UMzJfVAogI2RlZmluZSBQWV9JTlQzMl9UIGludDMyX3QKLSNlbmRpZgotI2VuZGlmCi0KLSNpZmRlZiBpbnQ2NF90Ci0jZGVmaW5lIEhBVkVfSU5UNjRfVCAxCi0jZW5kaWYKLQotI2lmZGVmIEhBVkVfSU5UNjRfVAotI2lmbmRlZiBQWV9JTlQ2NF9UCiAjZGVmaW5lIFBZX0lOVDY0X1QgaW50NjRfdAotI2VuZGlmCi0jZW5kaWYKIAogLyogSWYgUFlMT05HX0JJVFNfSU5fRElHSVQgaXMgbm90IGRlZmluZWQgdGhlbiB3ZSdsbCB1c2UgMzAtYml0IGRpZ2l0cyBpZiBhbGwKICAgIHRoZSBuZWNlc3NhcnkgaW50ZWdlciB0eXBlcyBhcmUgYXZhaWxhYmxlLCBhbmQgd2UncmUgb24gYSA2NC1iaXQgcGxhdGZvcm0KICAgIChhcyBkZXRlcm1pbmVkIGJ5IFNJWkVPRl9WT0lEX1ApOyBvdGhlcndpc2Ugd2UgdXNlIDE1LWJpdCBkaWdpdHMuICovCiAKICNpZm5kZWYgUFlMT05HX0JJVFNfSU5fRElHSVQKLSNpZiAoZGVmaW5lZCBIQVZFX1VJTlQ2NF9UICYmIGRlZmluZWQgSEFWRV9JTlQ2NF9UICYmIFwKLSAgICAgZGVmaW5lZCBIQVZFX1VJTlQzMl9UICYmIGRlZmluZWQgSEFWRV9JTlQzMl9UICYmIFNJWkVPRl9WT0lEX1AgPj0gOCkKKyNpZiBTSVpFT0ZfVk9JRF9QID49IDgKICNkZWZpbmUgUFlMT05HX0JJVFNfSU5fRElHSVQgMzAKICNlbHNlCiAjZGVmaW5lIFBZTE9OR19CSVRTX0lOX0RJR0lUIDE1CkBAIC0xNDksMjYgKzczLDkgQEAKICAqIHdpdGhvdXQgbG9zcyBvZiBpbmZvcm1hdGlvbi4gIFNpbWlsYXJseSBmb3IgaW50cHRyX3QsIHdydCBhIHNpZ25lZAogICogaW50ZWdyYWwgdHlwZS4KICAqLwotI2lmZGVmIEhBVkVfVUlOVFBUUl9UCiB0eXBlZGVmIHVpbnRwdHJfdCAgICAgICBQeV91aW50cHRyX3Q7CiB0eXBlZGVmIGludHB0cl90ICAgICAgICBQeV9pbnRwdHJfdDsKIAotI2VsaWYgU0laRU9GX1ZPSURfUCA8PSBTSVpFT0ZfSU5UCi10eXBlZGVmIHVuc2lnbmVkIGludCAgICBQeV91aW50cHRyX3Q7Ci10eXBlZGVmIGludCAgICAgICAgICAgICBQeV9pbnRwdHJfdDsKLQotI2VsaWYgU0laRU9GX1ZPSURfUCA8PSBTSVpFT0ZfTE9ORwotdHlwZWRlZiB1bnNpZ25lZCBsb25nICAgUHlfdWludHB0cl90OwotdHlwZWRlZiBsb25nICAgICAgICAgICAgUHlfaW50cHRyX3Q7Ci0KLSNlbGlmIGRlZmluZWQoSEFWRV9MT05HX0xPTkcpICYmIChTSVpFT0ZfVk9JRF9QIDw9IFNJWkVPRl9MT05HX0xPTkcpCi10eXBlZGVmIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyAgIFB5X3VpbnRwdHJfdDsKLXR5cGVkZWYgUFlfTE9OR19MT05HICAgICAgICAgICAgUHlfaW50cHRyX3Q7Ci0KLSNlbHNlCi0jICAgZXJyb3IgIlB5dGhvbiBuZWVkcyBhIHR5cGVkZWYgZm9yIFB5X3VpbnRwdHJfdCBpbiBweXBvcnQuaC4iCi0jZW5kaWYgLyogSEFWRV9VSU5UUFRSX1QgKi8KLQogLyogUHlfc3NpemVfdCBpcyBhIHNpZ25lZCBpbnRlZ3JhbCB0eXBlIHN1Y2ggdGhhdCBzaXplb2YoUHlfc3NpemVfdCkgPT0KICAqIHNpemVvZihzaXplX3QpLiAgQzk5IGRvZXNuJ3QgZGVmaW5lIHN1Y2ggYSB0aGluZyBkaXJlY3RseSAoc2l6ZV90IGlzIGFuCiAgKiB1bnNpZ25lZCBpbnRlZ3JhbCB0eXBlKS4gIFNlZSBQRVAgMzUzIGZvciBkZXRhaWxzLgpAQCAtMTk1LDE2ICsxMDIsOCBAQAogdHlwZWRlZiBpbnQgUHlfc3NpemVfY2xlYW5fdDsKICNlbmRpZgogCi0vKiBMYXJnZXN0IHBvc3NpYmxlIHZhbHVlIG9mIHNpemVfdC4KLSAgIFNJWkVfTUFYIGlzIHBhcnQgb2YgQzk5LCBzbyBpdCBtaWdodCBiZSBkZWZpbmVkIG9uIHNvbWUKLSAgIHBsYXRmb3Jtcy4gSWYgaXQgaXMgbm90IGRlZmluZWQsIChzaXplX3QpLTEgaXMgYSBwb3J0YWJsZQotICAgZGVmaW5pdGlvbiBmb3IgQzg5LCBkdWUgdG8gdGhlIHdheSBzaWduZWQtPnVuc2lnbmVkCi0gICBjb252ZXJzaW9uIGlzIGRlZmluZWQuICovCi0jaWZkZWYgU0laRV9NQVgKKy8qIExhcmdlc3QgcG9zc2libGUgdmFsdWUgb2Ygc2l6ZV90LiAqLwogI2RlZmluZSBQWV9TSVpFX01BWCBTSVpFX01BWAotI2Vsc2UKLSNkZWZpbmUgUFlfU0laRV9NQVggKChzaXplX3QpLTEpCi0jZW5kaWYKIAogLyogTGFyZ2VzdCBwb3NpdGl2ZSB2YWx1ZSBvZiB0eXBlIFB5X3NzaXplX3QuICovCiAjZGVmaW5lIFBZX1NTSVpFX1RfTUFYICgoUHlfc3NpemVfdCkoKChzaXplX3QpLTEpPj4xKSkKQEAgLTI0NywyMiArMTQ2LDYgQEAKICMgICBlbmRpZgogI2VuZGlmCiAKLS8qIFBZX0ZPUk1BVF9MT05HX0xPTkcgaXMgYW5hbG9nb3VzIHRvIFBZX0ZPUk1BVF9TSVpFX1QgYWJvdmUsIGJ1dCBmb3IKLSAqIHRoZSBsb25nIGxvbmcgdHlwZSBpbnN0ZWFkIG9mIHRoZSBzaXplX3QgdHlwZS4gIEl0J3Mgb25seSBhdmFpbGFibGUKLSAqIHdoZW4gSEFWRV9MT05HX0xPTkcgaXMgZGVmaW5lZC4gVGhlICJoaWdoIGxldmVsIiBQeXRob24gZm9ybWF0Ci0gKiBmdW5jdGlvbnMgbGlzdGVkIGFib3ZlIHdpbGwgaW50ZXJwcmV0ICJsbGQiIG9yICJsbHUiIGNvcnJlY3RseSBvbgotICogYWxsIHBsYXRmb3Jtcy4KLSAqLwotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0jICAgaWZuZGVmIFBZX0ZPUk1BVF9MT05HX0xPTkcKLSMgICAgICAgaWZkZWYgTVNfV0lORE9XUwotIyAgICAgICAgICAgZGVmaW5lIFBZX0ZPUk1BVF9MT05HX0xPTkcgIkk2NCIKLSMgICAgICAgZWxzZQotIyAgICAgICAgICAgZXJyb3IgIlRoaXMgcGxhdGZvcm0ncyBweWNvbmZpZy5oIG5lZWRzIHRvIGRlZmluZSBQWV9GT1JNQVRfTE9OR19MT05HIgotIyAgICAgICBlbmRpZgotIyAgIGVuZGlmCi0jZW5kaWYKLQogLyogUHlfTE9DQUwgY2FuIGJlIHVzZWQgaW5zdGVhZCBvZiBzdGF0aWMgdG8gZ2V0IHRoZSBmYXN0ZXN0IHBvc3NpYmxlIGNhbGxpbmcKICAqIGNvbnZlbnRpb24gZm9yIGZ1bmN0aW9ucyB0aGF0IGFyZSBsb2NhbCB0byBhIGdpdmVuIG1vZHVsZS4KICAqCkBAIC0yOTgsMjYgKzE4MSw5IEBACiAjZGVmaW5lIFB5X0xPQ0FMX0lOTElORSh0eXBlKSBzdGF0aWMgdHlwZQogI2VuZGlmCiAKLS8qIFB5X01FTUNQWSBjYW4gYmUgdXNlZCBpbnN0ZWFkIG9mIG1lbWNweSBpbiBjYXNlcyB3aGVyZSB0aGUgY29waWVkIGJsb2NrcwotICogYXJlIG9mdGVuIHZlcnkgc2hvcnQuICBXaGlsZSBtb3N0IHBsYXRmb3JtcyBoYXZlIGhpZ2hseSBvcHRpbWl6ZWQgY29kZSBmb3IKLSAqIGxhcmdlIHRyYW5zZmVycywgdGhlIHNldHVwIGNvc3RzIGZvciBtZW1jcHkgYXJlIG9mdGVuIHF1aXRlIGhpZ2guICBNRU1DUFkKLSAqIHNvbHZlcyB0aGlzIGJ5IGRvaW5nIHNob3J0IGNvcGllcyAiaW4gbGluZSIuCi0gKi8KLQotI2lmIGRlZmluZWQoX01TQ19WRVIpCi0jZGVmaW5lIFB5X01FTUNQWSh0YXJnZXQsIHNvdXJjZSwgbGVuZ3RoKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHNpemVfdCBpXywgbl8gPSAobGVuZ3RoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGNoYXIgKnRfID0gKHZvaWQqKSAodGFyZ2V0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGNvbnN0IGNoYXIgKnNfID0gKHZvaWQqKSAoc291cmNlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGlmIChuXyA+PSAxNikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBtZW1jcHkodF8sIHNfLCBuXyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBmb3IgKGlfID0gMDsgaV8gPCBuXzsgaV8rKykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgdF9baV9dID0gc19baV9dOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfSB3aGlsZSAoMCkKLSNlbHNlCisvKiBQeV9NRU1DUFkgaXMga2VwdCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksCisgKiBzZWUgaHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyODEyNiAqLwogI2RlZmluZSBQeV9NRU1DUFkgbWVtY3B5Ci0jZW5kaWYKIAogI2luY2x1ZGUgPHN0ZGxpYi5oPgogCkBAIC01NzAsMTggKzQzNiwxOCBAQAogI2RlZmluZSBIQVZFX1BZX1NFVF81M0JJVF9QUkVDSVNJT04gMQogI2RlZmluZSBfUHlfU0VUXzUzQklUX1BSRUNJU0lPTl9IRUFERVIgXAogICB1bnNpZ25lZCBpbnQgb2xkX2ZwY3IsIG5ld19mcGNyCi0jZGVmaW5lIF9QeV9TRVRfNTNCSVRfUFJFQ0lTSU9OX1NUQVJUCQkJCQlcCi0gIGRvIHsJCQkJCQkJCQlcCi0gICAgX19hc21fXyAoImZtb3ZlLmwgJSVmcGNyLCUwIiA6ICI9ZyIgKG9sZF9mcGNyKSk7CQkJXAotICAgIC8qIFNldCBkb3VibGUgcHJlY2lzaW9uIC8gcm91bmQgdG8gbmVhcmVzdC4gICovCQkJXAotICAgIG5ld19mcGNyID0gKG9sZF9mcGNyICYgfjB4ZjApIHwgMHg4MDsJCQkJXAotICAgIGlmIChuZXdfZnBjciAhPSBvbGRfZnBjcikJCQkJCQlcCi0gICAgICBfX2FzbV9fIHZvbGF0aWxlICgiZm1vdmUubCAlMCwlJWZwY3IiIDogOiAiZyIgKG5ld19mcGNyKSk7CVwKKyNkZWZpbmUgX1B5X1NFVF81M0JJVF9QUkVDSVNJT05fU1RBUlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBfX2FzbV9fICgiZm1vdmUubCAlJWZwY3IsJTAiIDogIj1nIiAob2xkX2ZwY3IpKTsgICAgICAgICAgICAgICAgICAgIFwKKyAgICAvKiBTZXQgZG91YmxlIHByZWNpc2lvbiAvIHJvdW5kIHRvIG5lYXJlc3QuICAqLyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBuZXdfZnBjciA9IChvbGRfZnBjciAmIH4weGYwKSB8IDB4ODA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAobmV3X2ZwY3IgIT0gb2xkX2ZwY3IpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIF9fYXNtX18gdm9sYXRpbGUgKCJmbW92ZS5sICUwLCUlZnBjciIgOiA6ICJnIiAobmV3X2ZwY3IpKTsgICAgICAgIFwKICAgfSB3aGlsZSAoMCkKLSNkZWZpbmUgX1B5X1NFVF81M0JJVF9QUkVDSVNJT05fRU5ECQkJCQlcCi0gIGRvIHsJCQkJCQkJCQlcCi0gICAgaWYgKG5ld19mcGNyICE9IG9sZF9mcGNyKQkJCQkJCVwKLSAgICAgIF9fYXNtX18gdm9sYXRpbGUgKCJmbW92ZS5sICUwLCUlZnBjciIgOiA6ICJnIiAob2xkX2ZwY3IpKTsJXAorI2RlZmluZSBfUHlfU0VUXzUzQklUX1BSRUNJU0lPTl9FTkQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmIChuZXdfZnBjciAhPSBvbGRfZnBjcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgX19hc21fXyB2b2xhdGlsZSAoImZtb3ZlLmwgJTAsJSVmcGNyIiA6IDogImciIChvbGRfZnBjcikpOyAgICAgICAgXAogICB9IHdoaWxlICgwKQogI2VuZGlmCiAKQEAgLTg1MCwxMCArNzE2LDYgQEAKICNwcmFnbWEgZXJyb3JfbWVzc2FnZXMgKG9mZixFX0VORF9PRl9MT09QX0NPREVfTk9UX1JFQUNIRUQpCiAjZW5kaWYKIAotLyoKLSAqIE9sZGVyIE1pY3Jvc29mdCBjb21waWxlcnMgZG9uJ3Qgc3VwcG9ydCB0aGUgQzk5IGxvbmcgbG9uZyBsaXRlcmFsIHN1ZmZpeGVzLAotICogc28gdGhlc2Ugd2lsbCBiZSBkZWZpbmVkIGluIFBDL3B5Y29uZmlnLmggZm9yIHRob3NlIGNvbXBpbGVycy4KLSAqLwogI2lmbmRlZiBQeV9MTAogI2RlZmluZSBQeV9MTCh4KSB4IyNMTAogI2VuZGlmCkBAIC04NjIsMTUgKzcyNCw3IEBACiAjZGVmaW5lIFB5X1VMTCh4KSBQeV9MTCh4IyNVKQogI2VuZGlmCiAKLSNpZmRlZiBWQV9MSVNUX0lTX0FSUkFZCi0jZGVmaW5lIFB5X1ZBX0NPUFkoeCwgeSkgUHlfTUVNQ1BZKCh4KSwgKHkpLCBzaXplb2YodmFfbGlzdCkpCi0jZWxzZQotI2lmZGVmIF9fdmFfY29weQotI2RlZmluZSBQeV9WQV9DT1BZIF9fdmFfY29weQotI2Vsc2UKLSNkZWZpbmUgUHlfVkFfQ09QWSh4LCB5KSAoeCkgPSAoeSkKLSNlbmRpZgotI2VuZGlmCisjZGVmaW5lIFB5X1ZBX0NPUFkgdmFfY29weQogCiAvKgogICogQ29udmVuaWVudCBtYWNyb3MgdG8gZGVhbCB3aXRoIGVuZGlhbm5lc3Mgb2YgdGhlIHBsYXRmb3JtLiBXT1JEU19CSUdFTkRJQU4gaXMKQEAgLTkwNiw0ICs3NjAsOCBAQAogI2VuZGlmIC8qIF9NU0NfVkVSID49IDE5MDAgKi8KICNlbmRpZiAvKiBQeV9CVUlMRF9DT1JFICovCiAKKyNpZmRlZiBfX0FORFJPSURfXworI2luY2x1ZGUgPGFuZHJvaWQvYXBpLWxldmVsLmg+CisjZW5kaWYKKwogI2VuZGlmIC8qIFB5X1BZUE9SVF9IICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5c3RhdGUuaCBiL0luY2x1ZGUvcHlzdGF0ZS5oCmluZGV4IDA0OTlhNzQuLmFmYzNjMGMgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHlzdGF0ZS5oCisrKyBiL0luY2x1ZGUvcHlzdGF0ZS5oCkBAIC04LDE0ICs4LDIxIEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCisvKiBUaGlzIGxpbWl0YXRpb24gaXMgZm9yIHBlcmZvcm1hbmNlIGFuZCBzaW1wbGljaXR5LiBJZiBuZWVkZWQgaXQgY2FuIGJlCityZW1vdmVkICh3aXRoIGVmZm9ydCkuICovCisjZGVmaW5lIE1BWF9DT19FWFRSQV9VU0VSUyAyNTUKKwogLyogU3RhdGUgc2hhcmVkIGJldHdlZW4gdGhyZWFkcyAqLwogCiBzdHJ1Y3QgX3RzOyAvKiBGb3J3YXJkICovCiBzdHJ1Y3QgX2lzOyAvKiBGb3J3YXJkICovCitzdHJ1Y3QgX2ZyYW1lOyAvKiBGb3J3YXJkIGRlY2xhcmF0aW9uIGZvciBQeUZyYW1lT2JqZWN0LiAqLwogCiAjaWZkZWYgUHlfTElNSVRFRF9BUEkKIHR5cGVkZWYgc3RydWN0IF9pcyBQeUludGVycHJldGVyU3RhdGU7CiAjZWxzZQordHlwZWRlZiBQeU9iamVjdCogKCpfUHlGcmFtZUV2YWxGdW5jdGlvbikoc3RydWN0IF9mcmFtZSAqLCBpbnQpOworCiB0eXBlZGVmIHN0cnVjdCBfaXMgewogCiAgICAgc3RydWN0IF9pcyAqbmV4dDsKQEAgLTM2LDE5ICs0MywxNyBAQAogI2lmZGVmIEhBVkVfRExPUEVOCiAgICAgaW50IGRsb3BlbmZsYWdzOwogI2VuZGlmCi0jaWZkZWYgV0lUSF9UU0MKLSAgICBpbnQgdHNjZHVtcDsKLSNlbmRpZgogCiAgICAgUHlPYmplY3QgKmJ1aWx0aW5zX2NvcHk7CisgICAgUHlPYmplY3QgKmltcG9ydF9mdW5jOworICAgIC8qIEluaXRpYWxpemVkIHRvIFB5RXZhbF9FdmFsRnJhbWVEZWZhdWx0KCkuICovCisgICAgX1B5RnJhbWVFdmFsRnVuY3Rpb24gZXZhbF9mcmFtZTsKIH0gUHlJbnRlcnByZXRlclN0YXRlOwogI2VuZGlmCiAKIAogLyogU3RhdGUgdW5pcXVlIHBlciB0aHJlYWQgKi8KIAotc3RydWN0IF9mcmFtZTsgLyogQXZvaWQgaW5jbHVkaW5nIGZyYW1lb2JqZWN0LmggKi8KLQogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogLyogUHlfdHJhY2VmdW5jIHJldHVybiAtMSB3aGVuIHJhaXNpbmcgYW4gZXhjZXB0aW9uLCBvciAwIGZvciBzdWNjZXNzLiAqLwogdHlwZWRlZiBpbnQgKCpQeV90cmFjZWZ1bmMpKFB5T2JqZWN0ICosIHN0cnVjdCBfZnJhbWUgKiwgaW50LCBQeU9iamVjdCAqKTsKQEAgLTEzNyw2ICsxNDIsMTIgQEAKICAgICBQeU9iamVjdCAqY29yb3V0aW5lX3dyYXBwZXI7CiAgICAgaW50IGluX2Nvcm91dGluZV93cmFwcGVyOwogCisgICAgUHlfc3NpemVfdCBjb19leHRyYV91c2VyX2NvdW50OworICAgIGZyZWVmdW5jIGNvX2V4dHJhX2ZyZWVmdW5jc1tNQVhfQ09fRVhUUkFfVVNFUlNdOworCisgICAgUHlPYmplY3QgKmFzeW5jX2dlbl9maXJzdGl0ZXI7CisgICAgUHlPYmplY3QgKmFzeW5jX2dlbl9maW5hbGl6ZXI7CisKICAgICAvKiBYWFggc2lnbmFsIGhhbmRsZXJzIHNob3VsZCBhbHNvIGJlIGhlcmUgKi8KIAogfSBQeVRocmVhZFN0YXRlOwpAQCAtMTQ2LDcgKzE1Nyw5IEBACiBQeUFQSV9GVU5DKFB5SW50ZXJwcmV0ZXJTdGF0ZSAqKSBQeUludGVycHJldGVyU3RhdGVfTmV3KHZvaWQpOwogUHlBUElfRlVOQyh2b2lkKSBQeUludGVycHJldGVyU3RhdGVfQ2xlYXIoUHlJbnRlcnByZXRlclN0YXRlICopOwogUHlBUElfRlVOQyh2b2lkKSBQeUludGVycHJldGVyU3RhdGVfRGVsZXRlKFB5SW50ZXJwcmV0ZXJTdGF0ZSAqKTsKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoaW50KSBfUHlTdGF0ZV9BZGRNb2R1bGUoUHlPYmplY3QqLCBzdHJ1Y3QgUHlNb2R1bGVEZWYqKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KICNpZiAhZGVmaW5lZChQeV9MSU1JVEVEX0FQSSkgfHwgUHlfTElNSVRFRF9BUEkrMCA+PSAweDAzMDMwMDAwCiAvKiBOZXcgaW4gMy4zICovCiBQeUFQSV9GVU5DKGludCkgUHlTdGF0ZV9BZGRNb2R1bGUoUHlPYmplY3QqLCBzdHJ1Y3QgUHlNb2R1bGVEZWYqKTsKQEAgLTE1OCwxNCArMTcxLDIwIEBACiAjZW5kaWYKIAogUHlBUElfRlVOQyhQeVRocmVhZFN0YXRlICopIFB5VGhyZWFkU3RhdGVfTmV3KFB5SW50ZXJwcmV0ZXJTdGF0ZSAqKTsKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoUHlUaHJlYWRTdGF0ZSAqKSBfUHlUaHJlYWRTdGF0ZV9QcmVhbGxvYyhQeUludGVycHJldGVyU3RhdGUgKik7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeVRocmVhZFN0YXRlX0luaXQoUHlUaHJlYWRTdGF0ZSAqKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIFB5QVBJX0ZVTkModm9pZCkgUHlUaHJlYWRTdGF0ZV9DbGVhcihQeVRocmVhZFN0YXRlICopOwogUHlBUElfRlVOQyh2b2lkKSBQeVRocmVhZFN0YXRlX0RlbGV0ZShQeVRocmVhZFN0YXRlICopOworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyh2b2lkKSBfUHlUaHJlYWRTdGF0ZV9EZWxldGVFeGNlcHQoUHlUaHJlYWRTdGF0ZSAqdHN0YXRlKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KICNpZmRlZiBXSVRIX1RIUkVBRAogUHlBUElfRlVOQyh2b2lkKSBQeVRocmVhZFN0YXRlX0RlbGV0ZUN1cnJlbnQodm9pZCk7CisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKHZvaWQpIF9QeUdJTFN0YXRlX1JlaW5pdCh2b2lkKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KICNlbmRpZgogCiAvKiBSZXR1cm4gdGhlIGN1cnJlbnQgdGhyZWFkIHN0YXRlLiBUaGUgZ2xvYmFsIGludGVycHJldGVyIGxvY2sgbXVzdCBiZSBoZWxkLgpAQCAtMTczLDkgKzE5MiwxMSBAQAogICogdGhlIGNhbGxlciBuZWVkbid0IGNoZWNrIGZvciBOVUxMKS4gKi8KIFB5QVBJX0ZVTkMoUHlUaHJlYWRTdGF0ZSAqKSBQeVRocmVhZFN0YXRlX0dldCh2b2lkKTsKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogLyogU2ltaWxhciB0byBQeVRocmVhZFN0YXRlX0dldCgpLCBidXQgZG9uJ3QgaXNzdWUgYSBmYXRhbCBlcnJvcgogICogaWYgaXQgaXMgTlVMTC4gKi8KIFB5QVBJX0ZVTkMoUHlUaHJlYWRTdGF0ZSAqKSBfUHlUaHJlYWRTdGF0ZV9VbmNoZWNrZWRHZXQodm9pZCk7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAKIFB5QVBJX0ZVTkMoUHlUaHJlYWRTdGF0ZSAqKSBQeVRocmVhZFN0YXRlX1N3YXAoUHlUaHJlYWRTdGF0ZSAqKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlUaHJlYWRTdGF0ZV9HZXREaWN0KHZvaWQpOwpAQCAtMjQxLDExICsyNjIsMjMgQEAKICovCiBQeUFQSV9GVU5DKFB5VGhyZWFkU3RhdGUgKikgUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUodm9pZCk7CiAKLS8qIEhlbHBlci9kaWFnbm9zdGljIGZ1bmN0aW9uIC0gcmV0dXJuIDEgaWYgdGhlIGN1cnJlbnQgdGhyZWFkCi0gKiBjdXJyZW50bHkgaG9sZHMgdGhlIEdJTCwgMCBvdGhlcndpc2UKLSAqLwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorLyogSXNzdWUgIzI2NTU4OiBGbGFnIHRvIGRpc2FibGUgUHlHSUxTdGF0ZV9DaGVjaygpLgorICAgSWYgc2V0IHRvIG5vbi16ZXJvLCBQeUdJTFN0YXRlX0NoZWNrKCkgYWx3YXlzIHJldHVybiAxLiAqLworUHlBUElfREFUQShpbnQpIF9QeUdJTFN0YXRlX2NoZWNrX2VuYWJsZWQ7CisKKy8qIEhlbHBlci9kaWFnbm9zdGljIGZ1bmN0aW9uIC0gcmV0dXJuIDEgaWYgdGhlIGN1cnJlbnQgdGhyZWFkCisgICBjdXJyZW50bHkgaG9sZHMgdGhlIEdJTCwgMCBvdGhlcndpc2UuCisKKyAgIFRoZSBmdW5jdGlvbiByZXR1cm5zIDEgaWYgX1B5R0lMU3RhdGVfY2hlY2tfZW5hYmxlZCBpcyBub24temVyby4gKi8KIFB5QVBJX0ZVTkMoaW50KSBQeUdJTFN0YXRlX0NoZWNrKHZvaWQpOworCisvKiBVbnNhZmUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBzaW5nbGUgUHlJbnRlcnByZXRlclN0YXRlIHVzZWQgYnkgdGhpcyBwcm9jZXNzJworICAgR0lMU3RhdGUgaW1wbGVtZW50YXRpb24uCisKKyAgIFJldHVybiBOVUxMIGJlZm9yZSBfUHlHSUxTdGF0ZV9Jbml0KCkgaXMgY2FsbGVkIGFuZCBhZnRlciBfUHlHSUxTdGF0ZV9GaW5pKCkKKyAgIGlzIGNhbGxlZC4gKi8KK1B5QVBJX0ZVTkMoUHlJbnRlcnByZXRlclN0YXRlICopIF9QeUdJTFN0YXRlX0dldEludGVycHJldGVyU3RhdGVVbnNhZmUodm9pZCk7CiAjZW5kaWYKIAogI2VuZGlmICAgLyogI2lmZGVmIFdJVEhfVEhSRUFEICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5c3RyaGV4LmggYi9JbmNsdWRlL3B5c3RyaGV4LmgKaW5kZXggMWRjMTI1NS4uNjZhMzBlMiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weXN0cmhleC5oCisrKyBiL0luY2x1ZGUvcHlzdHJoZXguaApAQCAtNSwxMCArNSwxMiBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogLyogUmV0dXJucyBhIHN0cigpIGNvbnRhaW5pbmcgdGhlIGhleCByZXByZXNlbnRhdGlvbiBvZiBhcmdidWYuICovCiBQeUFQSV9GVU5DKFB5T2JqZWN0KikgX1B5X3N0cmhleChjb25zdCBjaGFyKiBhcmdidWYsIGNvbnN0IFB5X3NzaXplX3QgYXJnbGVuKTsKIC8qIFJldHVybnMgYSBieXRlcygpIGNvbnRhaW5pbmcgdGhlIEFTQ0lJIGhleCByZXByZXNlbnRhdGlvbiBvZiBhcmdidWYuICovCiBQeUFQSV9GVU5DKFB5T2JqZWN0KikgX1B5X3N0cmhleF9ieXRlcyhjb25zdCBjaGFyKiBhcmdidWYsIGNvbnN0IFB5X3NzaXplX3QgYXJnbGVuKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5c3RydG9kLmggYi9JbmNsdWRlL3B5c3RydG9kLmgKaW5kZXggMjNmZDFjNi4uYzFlODRkZSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weXN0cnRvZC5oCisrKyBiL0luY2x1ZGUvcHlzdHJ0b2QuaApAQCAtMTksNiArMTksMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICp0eXBlKTsKIAogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlfc3RyaW5nX3RvX251bWJlcl93aXRoX3VuZGVyc2NvcmVzKAorICAgIGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sIGNvbnN0IGNoYXIgKndoYXQsIFB5T2JqZWN0ICpvYmosIHZvaWQgKmFyZywKKyAgICBQeU9iamVjdCAqKCppbm5lcmZ1bmMpKGNvbnN0IGNoYXIgKiwgUHlfc3NpemVfdCwgdm9pZCAqKSk7CisKIFB5QVBJX0ZVTkMoZG91YmxlKSBfUHlfcGFyc2VfaW5mX29yX25hbihjb25zdCBjaGFyICpwLCBjaGFyICoqZW5kcHRyKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5dGhvbnJ1bi5oIGIvSW5jbHVkZS9weXRob25ydW4uaAppbmRleCA5YzJlODEzLi5jZmEwYTlmIDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5dGhvbnJ1bi5oCisrKyBiL0luY2x1ZGUvcHl0aG9ucnVuLmgKQEAgLTY2LDggKzY2LDggQEAKICAgICBjb25zdCBjaGFyICpmaWxlbmFtZSwgICAgICAgLyogZGVjb2RlZCBmcm9tIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nICovCiAgICAgY29uc3QgY2hhciogZW5jLAogICAgIGludCBzdGFydCwKLSAgICBjaGFyICpwczEsCi0gICAgY2hhciAqcHMyLAorICAgIGNvbnN0IGNoYXIgKnBzMSwKKyAgICBjb25zdCBjaGFyICpwczIsCiAgICAgUHlDb21waWxlckZsYWdzICpmbGFncywKICAgICBpbnQgKmVycmNvZGUsCiAgICAgUHlBcmVuYSAqYXJlbmEpOwpAQCAtNzYsOCArNzYsOCBAQAogICAgIFB5T2JqZWN0ICpmaWxlbmFtZSwKICAgICBjb25zdCBjaGFyKiBlbmMsCiAgICAgaW50IHN0YXJ0LAotICAgIGNoYXIgKnBzMSwKLSAgICBjaGFyICpwczIsCisgICAgY29uc3QgY2hhciAqcHMxLAorICAgIGNvbnN0IGNoYXIgKnBzMiwKICAgICBQeUNvbXBpbGVyRmxhZ3MgKmZsYWdzLAogICAgIGludCAqZXJyY29kZSwKICAgICBQeUFyZW5hICphcmVuYSk7CmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5dGhyZWFkLmggYi9JbmNsdWRlL3B5dGhyZWFkLmgKaW5kZXggNmU5ZjMwMy4uZGQ2ODFiZSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weXRocmVhZC5oCisrKyBiL0luY2x1ZGUvcHl0aHJlYWQuaApAQCAtMzcsMTkgKzM3LDE0IEBACiAgICBtb2R1bGUgZXhwb3NlcyBhIGhpZ2hlci1sZXZlbCBBUEksIHdpdGggdGltZW91dHMgZXhwcmVzc2VkIGluIHNlY29uZHMKICAgIGFuZCBmbG9hdGluZy1wb2ludCBudW1iZXJzIGFsbG93ZWQuCiAqLwotI2lmIGRlZmluZWQoSEFWRV9MT05HX0xPTkcpCi0jZGVmaW5lIFBZX1RJTUVPVVRfVCBQWV9MT05HX0xPTkcKKyNkZWZpbmUgUFlfVElNRU9VVF9UIGxvbmcgbG9uZwogI2RlZmluZSBQWV9USU1FT1VUX01BWCBQWV9MTE9OR19NQVgKLSNlbHNlCi0jZGVmaW5lIFBZX1RJTUVPVVRfVCBsb25nCi0jZGVmaW5lIFBZX1RJTUVPVVRfTUFYIExPTkdfTUFYCi0jZW5kaWYKIAogLyogSW4gdGhlIE5UIEFQSSwgdGhlIHRpbWVvdXQgaXMgYSBEV09SRCBhbmQgaXMgZXhwcmVzc2VkIGluIG1pbGxpc2Vjb25kcyAqLwogI2lmIGRlZmluZWQgKE5UX1RIUkVBRFMpCi0jaWYgKFB5X0xMKDB4RkZGRkZGRkYpICogMTAwMCA8IFBZX1RJTUVPVVRfTUFYKQorI2lmIDB4RkZGRkZGRkZMTCAqIDEwMDAgPCBQWV9USU1FT1VUX01BWAogI3VuZGVmIFBZX1RJTUVPVVRfTUFYCi0jZGVmaW5lIFBZX1RJTUVPVVRfTUFYIChQeV9MTCgweEZGRkZGRkZGKSAqIDEwMDApCisjZGVmaW5lIFBZX1RJTUVPVVRfTUFYICgweEZGRkZGRkZGTEwgKiAxMDAwKQogI2VuZGlmCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weXRpbWUuaCBiL0luY2x1ZGUvcHl0aW1lLmgKaW5kZXggNDk0MzIyYy4uODdhYzdmYyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weXRpbWUuaAorKysgYi9JbmNsdWRlL3B5dGltZS5oCkBAIC0xMywxNiArMTMsMTIgQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKLSNpZmRlZiBQWV9JTlQ2NF9UCiAvKiBfUHlUaW1lX3Q6IFB5dGhvbiB0aW1lc3RhbXAgd2l0aCBzdWJzZWNvbmQgcHJlY2lzaW9uLiBJdCBjYW4gYmUgdXNlZCB0bwogICAgc3RvcmUgYSBkdXJhdGlvbiwgYW5kIHNvIGluZGlyZWN0bHkgYSBkYXRlIChyZWxhdGVkIHRvIGFub3RoZXIgZGF0ZSwgbGlrZQogICAgVU5JWCBlcG9jaCkuICovCi10eXBlZGVmIFBZX0lOVDY0X1QgX1B5VGltZV90OwordHlwZWRlZiBpbnQ2NF90IF9QeVRpbWVfdDsKICNkZWZpbmUgX1B5VGltZV9NSU4gUFlfTExPTkdfTUlOCiAjZGVmaW5lIF9QeVRpbWVfTUFYIFBZX0xMT05HX01BWAotI2Vsc2UKLSMgIGVycm9yICJfUHlUaW1lX3QgbmVlZCBzaWduZWQgNjQtYml0IGludGVnZXIgdHlwZSIKLSNlbmRpZgogCiB0eXBlZGVmIGVudW0gewogICAgIC8qIFJvdW5kIHRvd2FyZHMgbWludXMgaW5maW5pdHkgKC1pbmYpLgpAQCAtMzAsNyArMjYsMTAgQEAKICAgICBfUHlUaW1lX1JPVU5EX0ZMT09SPTAsCiAgICAgLyogUm91bmQgdG93YXJkcyBpbmZpbml0eSAoK2luZikuCiAgICAgICAgRm9yIGV4YW1wbGUsIHVzZWQgZm9yIHRpbWVvdXQgdG8gd2FpdCAiYXQgbGVhc3QiIE4gc2Vjb25kcy4gKi8KLSAgICBfUHlUaW1lX1JPVU5EX0NFSUxJTkcKKyAgICBfUHlUaW1lX1JPVU5EX0NFSUxJTkc9MSwKKyAgICAvKiBSb3VuZCB0byBuZWFyZXN0IHdpdGggdGllcyBnb2luZyB0byBuZWFyZXN0IGV2ZW4gaW50ZWdlci4KKyAgICAgICBGb3IgZXhhbXBsZSwgdXNlZCB0byByb3VuZCBmcm9tIGEgUHl0aG9uIGZsb2F0LiAqLworICAgIF9QeVRpbWVfUk9VTkRfSEFMRl9FVkVOCiB9IF9QeVRpbWVfcm91bmRfdDsKIAogLyogQ29udmVydCBhIHRpbWVfdCB0byBhIFB5TG9uZy4gKi8KQEAgLTc1LDcgKzc0LDcgQEAKICAgICAgICAgICAgICgoX1B5VGltZV90KShzZWNvbmRzKSAqICgxMDAwICogMTAwMCAqIDEwMDApKQogCiAvKiBDcmVhdGUgYSB0aW1lc3RhbXAgZnJvbSBhIG51bWJlciBvZiBuYW5vc2Vjb25kcy4gKi8KLVB5QVBJX0ZVTkMoX1B5VGltZV90KSBfUHlUaW1lX0Zyb21OYW5vc2Vjb25kcyhQWV9MT05HX0xPTkcgbnMpOworUHlBUElfRlVOQyhfUHlUaW1lX3QpIF9QeVRpbWVfRnJvbU5hbm9zZWNvbmRzKGxvbmcgbG9uZyBucyk7CiAKIC8qIENvbnZlcnQgYSBudW1iZXIgb2Ygc2Vjb25kcyAoUHl0aG9uIGZsb2F0IG9yIGludCkgdG8gYSB0aW1ldGFtcC4KICAgIFJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLCByZXR1cm4gMCBvbiBzdWNjZXNzLiAqLwpAQCAtMTg1LDYgKzE4NCwxNCBAQAogICAgUmV0dXJuIDAgb24gc3VjY2VzcywgcmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IuICovCiBQeUFQSV9GVU5DKGludCkgX1B5VGltZV9Jbml0KHZvaWQpOwogCisvKiBDb252ZXJ0cyBhIHRpbWVzdGFtcCB0byB0aGUgR3JlZ29yaWFuIHRpbWUsIHVzaW5nIHRoZSBsb2NhbCB0aW1lIHpvbmUuCisgICBSZXR1cm4gMCBvbiBzdWNjZXNzLCByYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBvbiBlcnJvci4gKi8KK1B5QVBJX0ZVTkMoaW50KSBfUHlUaW1lX2xvY2FsdGltZSh0aW1lX3QgdCwgc3RydWN0IHRtICp0bSk7CisKKy8qIENvbnZlcnRzIGEgdGltZXN0YW1wIHRvIHRoZSBHcmVnb3JpYW4gdGltZSwgYXNzdW1pbmcgVVRDLgorICAgUmV0dXJuIDAgb24gc3VjY2VzcywgcmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IuICovCitQeUFQSV9GVU5DKGludCkgX1B5VGltZV9nbXRpbWUodGltZV90IHQsIHN0cnVjdCB0bSAqdG0pOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9zZXRvYmplY3QuaCBiL0luY2x1ZGUvc2V0b2JqZWN0LmgKaW5kZXggZjE3YmMxYi4uODdlYzFjOCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9zZXRvYmplY3QuaAorKysgYi9JbmNsdWRlL3NldG9iamVjdC5oCkBAIC0xMCwxMiArMTAsMTMgQEAKIAogLyogVGhlcmUgYXJlIHRocmVlIGtpbmRzIG9mIGVudHJpZXMgaW4gdGhlIHRhYmxlOgogCi0xLiBVbnVzZWQ6ICBrZXkgPT0gTlVMTAotMi4gQWN0aXZlOiAga2V5ICE9IE5VTEwgYW5kIGtleSAhPSBkdW1teQotMy4gRHVtbXk6ICAga2V5ID09IGR1bW15CisxLiBVbnVzZWQ6ICBrZXkgPT0gTlVMTCBhbmQgaGFzaCA9PSAwCisyLiBEdW1teTogICBrZXkgPT0gZHVtbXkgYW5kIGhhc2ggPT0gLTEKKzMuIEFjdGl2ZTogIGtleSAhPSBOVUxMIGFuZCBrZXkgIT0gZHVtbXkgYW5kIGhhc2ggIT0gLTEKIAotVGhlIGhhc2ggZmllbGQgb2YgVW51c2VkIHNsb3RzIGhhdmUgbm8gbWVhbmluZy4KLVRoZSBoYXNoIGZpZWxkIG9mIER1bW1ueSBzbG90cyBhcmUgc2V0IHRvIC0xCitUaGUgaGFzaCBmaWVsZCBvZiBVbnVzZWQgc2xvdHMgaXMgYWx3YXlzIHplcm8uCisKK1RoZSBoYXNoIGZpZWxkIG9mIER1bW15IHNsb3RzIGFyZSBzZXQgdG8gLTEKIG1lYW5pbmcgdGhhdCBkdW1teSBlbnRyaWVzIGNhbiBiZSBkZXRlY3RlZCBieQogZWl0aGVyIGVudHJ5LT5rZXk9PWR1bW15IG9yIGJ5IGVudHJ5LT5oYXNoPT0tMS4KICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL3N0cnVjdG1lbWJlci5oIGIvSW5jbHVkZS9zdHJ1Y3RtZW1iZXIuaAppbmRleCA5NDhmNjkwLi41ZGE4YTQ2IDEwMDY0NAotLS0gYS9JbmNsdWRlL3N0cnVjdG1lbWJlci5oCisrKyBiL0luY2x1ZGUvc3RydWN0bWVtYmVyLmgKQEAgLTQ5LDEwICs0OSw4IEBACiAjZGVmaW5lIFRfT0JKRUNUX0VYIDE2ICAvKiBMaWtlIFRfT0JKRUNULCBidXQgcmFpc2VzIEF0dHJpYnV0ZUVycm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHRoZSB2YWx1ZSBpcyBOVUxMLCBpbnN0ZWFkIG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0aW5nIHRvIE5vbmUuICovCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKICNkZWZpbmUgVF9MT05HTE9ORyAgICAgIDE3CiAjZGVmaW5lIFRfVUxPTkdMT05HICAgICAxOAotI2VuZGlmIC8qIEhBVkVfTE9OR19MT05HICovCiAKICNkZWZpbmUgVF9QWVNTSVpFVCAgICAgIDE5ICAgICAgLyogUHlfc3NpemVfdCAqLwogI2RlZmluZSBUX05PTkUgICAgICAgICAgMjAgICAgICAvKiBWYWx1ZSBpcyBhbHdheXMgTm9uZSAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9zeW10YWJsZS5oIGIvSW5jbHVkZS9zeW10YWJsZS5oCmluZGV4IDE0MDljZDkuLjg2YWUzYzIgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvc3ltdGFibGUuaAorKysgYi9JbmNsdWRlL3N5bXRhYmxlLmgKQEAgLTQ4LDYgKzQ4LDcgQEAKICAgICB1bnNpZ25lZCBzdGVfY2hpbGRfZnJlZSA6IDE7ICAvKiB0cnVlIGlmIGEgY2hpbGQgYmxvY2sgaGFzIGZyZWUgdmFycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgZnJlZSByZWZzIHRvIGdsb2JhbHMgKi8KICAgICB1bnNpZ25lZCBzdGVfZ2VuZXJhdG9yIDogMTsgICAvKiB0cnVlIGlmIG5hbWVzcGFjZSBpcyBhIGdlbmVyYXRvciAqLworICAgIHVuc2lnbmVkIHN0ZV9jb3JvdXRpbmUgOiAxOyAgIC8qIHRydWUgaWYgbmFtZXNwYWNlIGlzIGEgY29yb3V0aW5lICovCiAgICAgdW5zaWduZWQgc3RlX3ZhcmFyZ3MgOiAxOyAgICAgLyogdHJ1ZSBpZiBibG9jayBoYXMgdmFyYXJncyAqLwogICAgIHVuc2lnbmVkIHN0ZV92YXJrZXl3b3JkcyA6IDE7IC8qIHRydWUgaWYgYmxvY2sgaGFzIHZhcmtleXdvcmRzICovCiAgICAgdW5zaWduZWQgc3RlX3JldHVybnNfdmFsdWUgOiAxOyAgLyogdHJ1ZSBpZiBuYW1lc3BhY2UgdXNlcyByZXR1cm4gd2l0aApAQCAtOTEsNiArOTIsNyBAQAogI2RlZmluZSBERUZfRlJFRSAyPDw0ICAgICAgICAgIC8qIG5hbWUgdXNlZCBidXQgbm90IGRlZmluZWQgaW4gbmVzdGVkIGJsb2NrICovCiAjZGVmaW5lIERFRl9GUkVFX0NMQVNTIDI8PDUgICAgLyogZnJlZSB2YXJpYWJsZSBmcm9tIGNsYXNzJ3MgbWV0aG9kICovCiAjZGVmaW5lIERFRl9JTVBPUlQgMjw8NiAgICAgICAgLyogYXNzaWdubWVudCBvY2N1cnJlZCB2aWEgaW1wb3J0ICovCisjZGVmaW5lIERFRl9BTk5PVCAyPDw3ICAgICAgICAgLyogdGhpcyBuYW1lIGlzIGFubm90YXRlZCAqLwogCiAjZGVmaW5lIERFRl9CT1VORCAoREVGX0xPQ0FMIHwgREVGX1BBUkFNIHwgREVGX0lNUE9SVCkKIApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9zeXNtb2R1bGUuaCBiL0luY2x1ZGUvc3lzbW9kdWxlLmgKaW5kZXggY2RlMTBhYy4uYzU1NDdmZiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9zeXNtb2R1bGUuaAorKysgYi9JbmNsdWRlL3N5c21vZHVsZS5oCkBAIC04LDExICs4LDExIEBACiAjZW5kaWYKIAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeVN5c19HZXRPYmplY3QoY29uc3QgY2hhciAqKTsKK1B5QVBJX0ZVTkMoaW50KSBQeVN5c19TZXRPYmplY3QoY29uc3QgY2hhciAqLCBQeU9iamVjdCAqKTsKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5U3lzX0dldE9iamVjdElkKF9QeV9JZGVudGlmaWVyICprZXkpOwotI2VuZGlmCi1QeUFQSV9GVU5DKGludCkgUHlTeXNfU2V0T2JqZWN0KGNvbnN0IGNoYXIgKiwgUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKGludCkgX1B5U3lzX1NldE9iamVjdElkKF9QeV9JZGVudGlmaWVyICprZXksIFB5T2JqZWN0ICopOworI2VuZGlmCiAKIFB5QVBJX0ZVTkModm9pZCkgUHlTeXNfU2V0QXJndihpbnQsIHdjaGFyX3QgKiopOwogUHlBUElfRlVOQyh2b2lkKSBQeVN5c19TZXRBcmd2RXgoaW50LCB3Y2hhcl90ICoqLCBpbnQpOwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS90cmFjZWJhY2suaCBiL0luY2x1ZGUvdHJhY2ViYWNrLmgKaW5kZXggYzNlY2JlMi4uYjU4NzQxMCAxMDA2NDQKLS0tIGEvSW5jbHVkZS90cmFjZWJhY2suaAorKysgYi9JbmNsdWRlL3RyYWNlYmFjay5oCkBAIC0zMSw2ICszMSw3IEBACiBQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgUHlUcmFjZUJhY2tfVHlwZTsKICNkZWZpbmUgUHlUcmFjZUJhY2tfQ2hlY2sodikgKFB5X1RZUEUodikgPT0gJlB5VHJhY2VCYWNrX1R5cGUpCiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIC8qIFdyaXRlIHRoZSBQeXRob24gdHJhY2ViYWNrIGludG8gdGhlIGZpbGUgJ2ZkJy4gRm9yIGV4YW1wbGU6CiAKICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgZmlyc3QpOgpAQCAtNTMsMTkgKzU0LDY0IEBACiAgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlKTsKIAogLyogV3JpdGUgdGhlIHRyYWNlYmFjayBvZiBhbGwgdGhyZWFkcyBpbnRvIHRoZSBmaWxlICdmZCcuIGN1cnJlbnRfdGhyZWFkIGNhbiBiZQotICAgTlVMTC4gUmV0dXJuIE5VTEwgb24gc3VjY2Vzcywgb3IgYW4gZXJyb3IgbWVzc2FnZSBvbiBlcnJvci4KKyAgIE5VTEwuCisKKyAgIFJldHVybiBOVUxMIG9uIHN1Y2Nlc3MsIG9yIGFuIGVycm9yIG1lc3NhZ2Ugb24gZXJyb3IuCiAKICAgIFRoaXMgZnVuY3Rpb24gaXMgd3JpdHRlbiBmb3IgZGVidWcgcHVycG9zZSBvbmx5LiBJdCBjYWxscwogICAgX1B5X0R1bXBUcmFjZWJhY2soKSBmb3IgZWFjaCB0aHJlYWQsIGFuZCBzbyBoYXMgdGhlIHNhbWUgbGltaXRhdGlvbnMuIEl0CiAgICBvbmx5IHdyaXRlIHRoZSB0cmFjZWJhY2sgb2YgdGhlIGZpcnN0IDEwMCB0aHJlYWRzOiB3cml0ZSAiLi4uIiBpZiB0aGVyZSBhcmUKICAgIG1vcmUgdGhyZWFkcy4KIAorICAgSWYgY3VycmVudF90c3RhdGUgaXMgTlVMTCwgdGhlIGZ1bmN0aW9uIHRyaWVzIHRvIGdldCB0aGUgUHl0aG9uIHRocmVhZCBzdGF0ZQorICAgb2YgdGhlIGN1cnJlbnQgdGhyZWFkLiBJdCBpcyBub3QgYW4gZXJyb3IgaWYgdGhlIGZ1bmN0aW9uIGlzIHVuYWJsZSB0byBnZXQKKyAgIHRoZSBjdXJyZW50IFB5dGhvbiB0aHJlYWQgc3RhdGUuCisKKyAgIElmIGludGVycCBpcyBOVUxMLCB0aGUgZnVuY3Rpb24gdHJpZXMgdG8gZ2V0IHRoZSBpbnRlcnByZXRlciBzdGF0ZSBmcm9tCisgICB0aGUgY3VycmVudCBQeXRob24gdGhyZWFkIHN0YXRlLCBvciBmcm9tCisgICBfUHlHSUxTdGF0ZV9HZXRJbnRlcnByZXRlclN0YXRlVW5zYWZlKCkgaW4gbGFzdCByZXNvcnQuCisKKyAgIEl0IGlzIGJldHRlciB0byBwYXNzIE5VTEwgdG8gaW50ZXJwIGFuZCBjdXJyZW50X3RzdGF0ZSwgdGhlIGZ1bmN0aW9uIHRyaWVzCisgICBkaWZmZXJlbnQgb3B0aW9ucyB0byByZXRyaWV2ZSB0aGVzZSBpbmZvcm1hdGlvbnMuCisKICAgIFRoaXMgZnVuY3Rpb24gaXMgc2lnbmFsIHNhZmUuICovCiAKIFB5QVBJX0ZVTkMoY29uc3QgY2hhciopIF9QeV9EdW1wVHJhY2ViYWNrVGhyZWFkcygKLSAgICBpbnQgZmQsIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwLAotICAgIFB5VGhyZWFkU3RhdGUgKmN1cnJlbnRfdGhyZWFkKTsKKyAgICBpbnQgZmQsCisgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAsCisgICAgUHlUaHJlYWRTdGF0ZSAqY3VycmVudF90c3RhdGUpOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCisKKy8qIFdyaXRlIGEgVW5pY29kZSBvYmplY3QgaW50byB0aGUgZmlsZSBkZXNjcmlwdG9yIGZkLiBFbmNvZGUgdGhlIHN0cmluZyB0bworICAgQVNDSUkgdXNpbmcgdGhlIGJhY2tzbGFzaHJlcGxhY2UgZXJyb3IgaGFuZGxlci4KKworICAgRG8gbm90aGluZyBpZiB0ZXh0IGlzIG5vdCBhIFVuaWNvZGUgb2JqZWN0LiBUaGUgZnVuY3Rpb24gYWNjZXB0cyBVbmljb2RlCisgICBzdHJpbmcgd2hpY2ggaXMgbm90IHJlYWR5IChQeVVuaWNvZGVfV0NIQVJfS0lORCkuCisKKyAgIFRoaXMgZnVuY3Rpb24gaXMgc2lnbmFsIHNhZmUuICovCitQeUFQSV9GVU5DKHZvaWQpIF9QeV9EdW1wQVNDSUkoaW50IGZkLCBQeU9iamVjdCAqdGV4dCk7CisKKy8qIEZvcm1hdCBhbiBpbnRlZ2VyIGFzIGRlY2ltYWwgaW50byB0aGUgZmlsZSBkZXNjcmlwdG9yIGZkLgorCisgICBUaGlzIGZ1bmN0aW9uIGlzIHNpZ25hbCBzYWZlLiAqLworUHlBUElfRlVOQyh2b2lkKSBfUHlfRHVtcERlY2ltYWwoCisgICAgaW50IGZkLAorICAgIHVuc2lnbmVkIGxvbmcgdmFsdWUpOworCisvKiBGb3JtYXQgYW4gaW50ZWdlciBhcyBoZXhhZGVjaW1hbCBpbnRvIHRoZSBmaWxlIGRlc2NyaXB0b3IgZmQgd2l0aCBhdCBsZWFzdAorICAgd2lkdGggZGlnaXRzLgorCisgICBUaGUgbWF4aW11bSB3aWR0aCBpcyBzaXplb2YodW5zaWduZWQgbG9uZykqMiBkaWdpdHMuCisKKyAgIFRoaXMgZnVuY3Rpb24gaXMgc2lnbmFsIHNhZmUuICovCitQeUFQSV9GVU5DKHZvaWQpIF9QeV9EdW1wSGV4YWRlY2ltYWwoCisgICAgaW50IGZkLAorICAgIHVuc2lnbmVkIGxvbmcgdmFsdWUsCisgICAgUHlfc3NpemVfdCB3aWR0aCk7CisKKyNlbmRpZiAgIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL0luY2x1ZGUvdW5pY29kZW9iamVjdC5oIGIvSW5jbHVkZS91bmljb2Rlb2JqZWN0LmgKaW5kZXggOTMwOGE2YS4uNzkyZDBlOCAxMDA2NDQKLS0tIGEvSW5jbHVkZS91bmljb2Rlb2JqZWN0LmgKKysrIGIvSW5jbHVkZS91bmljb2Rlb2JqZWN0LmgKQEAgLTEwMywxMCArMTAzLDYgQEAKICMgZW5kaWYKICNlbmRpZgogCi0jaWYgZGVmaW5lZChNU19XSU5ET1dTKQotIyAgZGVmaW5lIEhBVkVfTUJDUwotI2VuZGlmCi0KICNpZmRlZiBIQVZFX1dDSEFSX0gKIC8qIFdvcmsgYXJvdW5kIGEgY29zbWV0aWMgYnVnIGluIEJTREkgNC54IHdjaGFyLmg7IHRoYW5rcyB0byBUaG9tYXMgV291dGVycyAqLwogIyBpZmRlZiBfSEFWRV9CU0RJCkBAIC0xMTcsMjEgKzExMyw5IEBACiAKIC8qIFB5X1VDUzQgYW5kIFB5X1VDUzIgYXJlIHR5cGVkZWZzIGZvciB0aGUgcmVzcGVjdGl2ZQogICAgdW5pY29kZSByZXByZXNlbnRhdGlvbnMuICovCi0jaWYgU0laRU9GX0lOVCA9PSA0Ci10eXBlZGVmIHVuc2lnbmVkIGludCBQeV9VQ1M0OwotI2VsaWYgU0laRU9GX0xPTkcgPT0gNAotdHlwZWRlZiB1bnNpZ25lZCBsb25nIFB5X1VDUzQ7Ci0jZWxzZQotI2Vycm9yICJDb3VsZCBub3QgZmluZCBhIHByb3BlciB0eXBlZGVmIGZvciBQeV9VQ1M0IgotI2VuZGlmCi0KLSNpZiBTSVpFT0ZfU0hPUlQgPT0gMgotdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBQeV9VQ1MyOwotI2Vsc2UKLSNlcnJvciAiQ291bGQgbm90IGZpbmQgYSBwcm9wZXIgdHlwZWRlZiBmb3IgUHlfVUNTMiIKLSNlbmRpZgotCi10eXBlZGVmIHVuc2lnbmVkIGNoYXIgUHlfVUNTMTsKK3R5cGVkZWYgdWludDMyX3QgUHlfVUNTNDsKK3R5cGVkZWYgdWludDE2X3QgUHlfVUNTMjsKK3R5cGVkZWYgdWludDhfdCBQeV9VQ1MxOwogCiAvKiAtLS0gSW50ZXJuYWwgVW5pY29kZSBPcGVyYXRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIApAQCAtMTcyLDcgKzE1Niw3IEBACiAgICAgUHlfVU5JQ09ERV9JU05VTUVSSUMoY2gpKQogCiAjZGVmaW5lIFB5X1VOSUNPREVfQ09QWSh0YXJnZXQsIHNvdXJjZSwgbGVuZ3RoKSBcCi0gICAgUHlfTUVNQ1BZKCh0YXJnZXQpLCAoc291cmNlKSwgKGxlbmd0aCkqc2l6ZW9mKFB5X1VOSUNPREUpKQorICAgIG1lbWNweSgodGFyZ2V0KSwgKHNvdXJjZSksIChsZW5ndGgpKnNpemVvZihQeV9VTklDT0RFKSkKIAogI2RlZmluZSBQeV9VTklDT0RFX0ZJTEwodGFyZ2V0LCB2YWx1ZSwgbGVuZ3RoKSBcCiAgICAgZG8ge1B5X3NzaXplX3QgaV87IFB5X1VOSUNPREUgKnRfID0gKHRhcmdldCk7IFB5X1VOSUNPREUgdl8gPSAodmFsdWUpO1wKQEAgLTkwMCw3ICs4ODQsNyBAQAogICAgIC8qIG1pbmltdW0gY2hhcmFjdGVyIChkZWZhdWx0OiAxMjcsIEFTQ0lJKSAqLwogICAgIFB5X1VDUzQgbWluX2NoYXI7CiAKLSAgICAvKiBJZiBub24temVybywgb3ZlcmFsbG9jYXRlIHRoZSBidWZmZXIgYnkgMjUlIChkZWZhdWx0OiAwKS4gKi8KKyAgICAvKiBJZiBub24temVybywgb3ZlcmFsbG9jYXRlIHRoZSBidWZmZXIgKGRlZmF1bHQ6IDApLiAqLwogICAgIHVuc2lnbmVkIGNoYXIgb3ZlcmFsbG9jYXRlOwogCiAgICAgLyogSWYgcmVhZG9ubHkgaXMgMSwgYnVmZmVyIGlzIGEgc2hhcmVkIHN0cmluZyAoY2Fubm90IGJlIG1vZGlmaWVkKQpAQCAtOTM0LDYgKzkxOCwyMyBAQAogX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlSW50ZXJuYWwoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW5ndGgsIFB5X1VDUzQgbWF4Y2hhcik7CiAKKy8qIFByZXBhcmUgdGhlIGJ1ZmZlciB0byBoYXZlIGF0IGxlYXN0IHRoZSBraW5kIEtJTkQuCisgICBGb3IgZXhhbXBsZSwga2luZD1QeVVuaWNvZGVfMkJZVEVfS0lORCBlbnN1cmVzIHRoYXQgdGhlIHdyaXRlciB3aWxsCisgICBzdXBwb3J0IGNoYXJhY3RlcnMgaW4gcmFuZ2UgVSswMDAtVStGRkZGLgorCisgICBSZXR1cm4gMCBvbiBzdWNjZXNzLCByYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBvbiBlcnJvci4gKi8KKyNkZWZpbmUgX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlS2luZChXUklURVIsIEtJTkQpICAgICAgICAgICAgICAgICAgICBcCisgICAgKGFzc2VydCgoS0lORCkgIT0gUHlVbmljb2RlX1dDSEFSX0tJTkQpLCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAoS0lORCkgPD0gKFdSSVRFUiktPmtpbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgPyAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIDogX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlS2luZEludGVybmFsKChXUklURVIpLCAoS0lORCkpKQorCisvKiBEb24ndCBjYWxsIHRoaXMgZnVuY3Rpb24gZGlyZWN0bHksIHVzZSB0aGUgX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlS2luZCgpCisgICBtYWNybyBpbnN0ZWFkLiAqLworUHlBUElfRlVOQyhpbnQpCitfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmVLaW5kSW50ZXJuYWwoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZCk7CisKIC8qIEFwcGVuZCBhIFVuaWNvZGUgY2hhcmFjdGVyLgogICAgUmV0dXJuIDAgb24gc3VjY2VzcywgcmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IuICovCiBQeUFQSV9GVU5DKGludCkKQEAgLTExNzAsMjIgKzExNzEsMzAgQEAKICAgICApOwogCiAvKiBEZWNvZGUgYSBVbmljb2RlIG9iamVjdCB1bmljb2RlIGFuZCByZXR1cm4gdGhlIHJlc3VsdCBhcyBQeXRob24KLSAgIG9iamVjdC4gKi8KKyAgIG9iamVjdC4KKworICAgVGhpcyBBUEkgaXMgREVQUkVDQVRFRC4gVGhlIG9ubHkgc3VwcG9ydGVkIHN0YW5kYXJkIGVuY29kaW5nIGlzIHJvdDEzLgorICAgVXNlIFB5Q29kZWNfRGVjb2RlKCkgdG8gZGVjb2RlIHdpdGggcm90MTMgYW5kIG5vbi1zdGFuZGFyZCBjb2RlY3MKKyAgIHRoYXQgZGVjb2RlIGZyb20gc3RyLiAqLwogCiBQeUFQSV9GVU5DKFB5T2JqZWN0KikgUHlVbmljb2RlX0FzRGVjb2RlZE9iamVjdCgKICAgICBQeU9iamVjdCAqdW5pY29kZSwgICAgICAgICAgLyogVW5pY29kZSBvYmplY3QgKi8KICAgICBjb25zdCBjaGFyICplbmNvZGluZywgICAgICAgLyogZW5jb2RpbmcgKi8KICAgICBjb25zdCBjaGFyICplcnJvcnMgICAgICAgICAgLyogZXJyb3IgaGFuZGxpbmcgKi8KLSAgICApOworICAgICkgUHlfREVQUkVDQVRFRCgzLjYpOwogCiAvKiBEZWNvZGUgYSBVbmljb2RlIG9iamVjdCB1bmljb2RlIGFuZCByZXR1cm4gdGhlIHJlc3VsdCBhcyBVbmljb2RlCi0gICBvYmplY3QuICovCisgICBvYmplY3QuCisKKyAgIFRoaXMgQVBJIGlzIERFUFJFQ0FURUQuIFRoZSBvbmx5IHN1cHBvcnRlZCBzdGFuZGFyZCBlbmNvZGluZyBpcyByb3QxMy4KKyAgIFVzZSBQeUNvZGVjX0RlY29kZSgpIHRvIGRlY29kZSB3aXRoIHJvdDEzIGFuZCBub24tc3RhbmRhcmQgY29kZWNzCisgICB0aGF0IGRlY29kZSBmcm9tIHN0ciB0byBzdHIuICovCiAKIFB5QVBJX0ZVTkMoUHlPYmplY3QqKSBQeVVuaWNvZGVfQXNEZWNvZGVkVW5pY29kZSgKICAgICBQeU9iamVjdCAqdW5pY29kZSwgICAgICAgICAgLyogVW5pY29kZSBvYmplY3QgKi8KICAgICBjb25zdCBjaGFyICplbmNvZGluZywgICAgICAgLyogZW5jb2RpbmcgKi8KICAgICBjb25zdCBjaGFyICplcnJvcnMgICAgICAgICAgLyogZXJyb3IgaGFuZGxpbmcgKi8KLSAgICApOworICAgICkgUHlfREVQUkVDQVRFRCgzLjYpOwogCiAvKiBFbmNvZGVzIGEgUHlfVU5JQ09ERSBidWZmZXIgb2YgdGhlIGdpdmVuIHNpemUgYW5kIHJldHVybnMgYQogICAgUHl0aG9uIHN0cmluZyBvYmplY3QuICovCkBAIC0xMjAwLDEzICsxMjA5LDE4IEBACiAjZW5kaWYKIAogLyogRW5jb2RlcyBhIFVuaWNvZGUgb2JqZWN0IGFuZCByZXR1cm5zIHRoZSByZXN1bHQgYXMgUHl0aG9uCi0gICBvYmplY3QuICovCisgICBvYmplY3QuCisKKyAgIFRoaXMgQVBJIGlzIERFUFJFQ0FURUQuICBJdCBpcyBzdXBlcmNlZWRlZCBieSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKCkKKyAgIHNpbmNlIGFsbCBzdGFuZGFyZCBlbmNvZGluZ3MgKGV4Y2VwdCByb3QxMykgZW5jb2RlIHN0ciB0byBieXRlcy4KKyAgIFVzZSBQeUNvZGVjX0VuY29kZSgpIGZvciBlbmNvZGluZyB3aXRoIHJvdDEzIGFuZCBub24tc3RhbmRhcmQgY29kZWNzCisgICB0aGF0IGVuY29kZSBmb3JtIHN0ciB0byBub24tYnl0ZXMuICovCiAKIFB5QVBJX0ZVTkMoUHlPYmplY3QqKSBQeVVuaWNvZGVfQXNFbmNvZGVkT2JqZWN0KAogICAgIFB5T2JqZWN0ICp1bmljb2RlLCAgICAgICAgICAvKiBVbmljb2RlIG9iamVjdCAqLwogICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLCAgICAgICAvKiBlbmNvZGluZyAqLwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyAgICAgICAgICAvKiBlcnJvciBoYW5kbGluZyAqLwotICAgICk7CisgICAgKSBQeV9ERVBSRUNBVEVEKDMuNik7CiAKIC8qIEVuY29kZXMgYSBVbmljb2RlIG9iamVjdCBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IGFzIFB5dGhvbiBzdHJpbmcKICAgIG9iamVjdC4gKi8KQEAgLTEyMTgsMTMgKzEyMzIsMTcgQEAKICAgICApOwogCiAvKiBFbmNvZGVzIGEgVW5pY29kZSBvYmplY3QgYW5kIHJldHVybnMgdGhlIHJlc3VsdCBhcyBVbmljb2RlCi0gICBvYmplY3QuICovCisgICBvYmplY3QuCisKKyAgIFRoaXMgQVBJIGlzIERFUFJFQ0FURUQuICBUaGUgb25seSBzdXBwb3J0ZWQgc3RhbmRhcmQgZW5jb2RpbmdzIGlzIHJvdDEzLgorICAgVXNlIFB5Q29kZWNfRW5jb2RlKCkgdG8gZW5jb2RlIHdpdGggcm90MTMgYW5kIG5vbi1zdGFuZGFyZCBjb2RlY3MKKyAgIHRoYXQgZW5jb2RlIGZyb20gc3RyIHRvIHN0ci4gKi8KIAogUHlBUElfRlVOQyhQeU9iamVjdCopIFB5VW5pY29kZV9Bc0VuY29kZWRVbmljb2RlKAogICAgIFB5T2JqZWN0ICp1bmljb2RlLCAgICAgICAgICAvKiBVbmljb2RlIG9iamVjdCAqLwogICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLCAgICAgICAvKiBlbmNvZGluZyAqLwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyAgICAgICAgICAvKiBlcnJvciBoYW5kbGluZyAqLwotICAgICk7CisgICAgKSBQeV9ERVBSRUNBVEVEKDMuNik7CiAKIC8qIEJ1aWxkIGFuIGVuY29kaW5nIG1hcC4gKi8KIApAQCAtMTQ2OCw2ICsxNDg2LDE3IEBACiAgICAgY29uc3QgY2hhciAqZXJyb3JzICAgICAgICAgIC8qIGVycm9yIGhhbmRsaW5nICovCiAgICAgKTsKIAorLyogSGVscGVyIGZvciBQeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZSB0aGF0IGRldGVjdHMgaW52YWxpZCBlc2NhcGUKKyAgIGNoYXJzLiAqLworUHlBUElfRlVOQyhQeU9iamVjdCopIF9QeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZSgKKyAgICAgICAgY29uc3QgY2hhciAqc3RyaW5nLCAgICAgLyogVW5pY29kZS1Fc2NhcGUgZW5jb2RlZCBzdHJpbmcgKi8KKyAgICAgICAgUHlfc3NpemVfdCBsZW5ndGgsICAgICAgLyogc2l6ZSBvZiBzdHJpbmcgKi8KKyAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCAgICAgLyogZXJyb3IgaGFuZGxpbmcgKi8KKyAgICAgICAgY29uc3QgY2hhciAqKmZpcnN0X2ludmFsaWRfZXNjYXBlICAvKiBvbiByZXR1cm4sIHBvaW50cyB0byBmaXJzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludmFsaWQgZXNjYXBlZCBjaGFyIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nLiAqLworKTsKKwogUHlBUElfRlVOQyhQeU9iamVjdCopIFB5VW5pY29kZV9Bc1VuaWNvZGVFc2NhcGVTdHJpbmcoCiAgICAgUHlPYmplY3QgKnVuaWNvZGUgICAgICAgICAgIC8qIFVuaWNvZGUgb2JqZWN0ICovCiAgICAgKTsKQEAgLTE2NDAsMTMgKzE2NjksMTMgQEAKICAgICApOwogI2VuZGlmCiAKLSNpZmRlZiBIQVZFX01CQ1MKKyNpZmRlZiBNU19XSU5ET1dTCiAKIC8qIC0tLSBNQkNTIGNvZGVjcyBmb3IgV2luZG93cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiBQeUFQSV9GVU5DKFB5T2JqZWN0KikgUHlVbmljb2RlX0RlY29kZU1CQ1MoCiAgICAgY29uc3QgY2hhciAqc3RyaW5nLCAgICAgICAgIC8qIE1CQ1MgZW5jb2RlZCBzdHJpbmcgKi8KLSAgICBQeV9zc2l6ZV90IGxlbmd0aCwgICAgICAgICAgICAgIC8qIHNpemUgb2Ygc3RyaW5nICovCisgICAgUHlfc3NpemVfdCBsZW5ndGgsICAgICAgICAgIC8qIHNpemUgb2Ygc3RyaW5nICovCiAgICAgY29uc3QgY2hhciAqZXJyb3JzICAgICAgICAgIC8qIGVycm9yIGhhbmRsaW5nICovCiAgICAgKTsKIApAQCAtMTY4Myw3ICsxNzEyLDcgQEAKICAgICBjb25zdCBjaGFyICplcnJvcnMgICAgICAgICAgLyogZXJyb3IgaGFuZGxpbmcgKi8KICAgICApOwogCi0jZW5kaWYgLyogSEFWRV9NQkNTICovCisjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogCiAvKiAtLS0gRGVjaW1hbCBFbmNvZGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIApAQCAtMTkzOCw2ICsxOTY3LDE0IEBACiAgICAgUHlPYmplY3QgKnNlcSAgICAgICAgICAgICAgIC8qIFNlcXVlbmNlIG9iamVjdCAqLwogICAgICk7CiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5VW5pY29kZV9Kb2luQXJyYXkoCisgICAgUHlPYmplY3QgKnNlcGFyYXRvciwKKyAgICBQeU9iamVjdCAqKml0ZW1zLAorICAgIFB5X3NzaXplX3Qgc2VxbGVuCisgICAgKTsKKyNlbmRpZiAvKiBQeV9MSU1JVEVEX0FQSSAqLworCiAvKiBSZXR1cm4gMSBpZiBzdWJzdHIgbWF0Y2hlcyBzdHJbc3RhcnQ6ZW5kXSBhdCB0aGUgZ2l2ZW4gdGFpbCBlbmQsIDAKICAgIG90aGVyd2lzZS4gKi8KIApAQCAtMjAwMCwxNyArMjAzNyw4IEBACiAgICAgKTsKIAogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQotLyogQ29tcGFyZSBhIHN0cmluZyB3aXRoIGFuIGlkZW50aWZpZXIgYW5kIHJldHVybiAtMSwgMCwgMSBmb3IgbGVzcyB0aGFuLAotICAgZXF1YWwsIGFuZCBncmVhdGVyIHRoYW4sIHJlc3BlY3RpdmVseS4KLSAgIFJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLiAqLwotCi1QeUFQSV9GVU5DKGludCkgX1B5VW5pY29kZV9Db21wYXJlV2l0aElkKAotICAgIFB5T2JqZWN0ICpsZWZ0LCAgICAgICAgICAgICAvKiBMZWZ0IHN0cmluZyAqLwotICAgIF9QeV9JZGVudGlmaWVyICpyaWdodCAgICAgICAvKiBSaWdodCBpZGVudGlmaWVyICovCi0gICAgKTsKLQogLyogVGVzdCB3aGV0aGVyIGEgdW5pY29kZSBpcyBlcXVhbCB0byBBU0NJSSBpZGVudGlmaWVyLiAgUmV0dXJuIDEgaWYgdHJ1ZSwKLSAgIDAgb3RoZXJ3aXNlLiAgUmV0dXJuIDAgaWYgYW55IGFyZ3VtZW50IGNvbnRhaW5zIG5vbi1BU0NJSSBjaGFyYWN0ZXJzLgorICAgMCBvdGhlcndpc2UuICBUaGUgcmlnaHQgYXJndW1lbnQgbXVzdCBiZSBBU0NJSSBpZGVudGlmaWVyLgogICAgQW55IGVycm9yIG9jY3VycyBpbnNpZGUgd2lsbCBiZSBjbGVhcmVkIGJlZm9yZSByZXR1cm4uICovCiAKIFB5QVBJX0ZVTkMoaW50KSBfUHlVbmljb2RlX0VxdWFsVG9BU0NJSUlkKApAQCAtMjAzMiw3ICsyMDYwLDcgQEAKIAogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogLyogVGVzdCB3aGV0aGVyIGEgdW5pY29kZSBpcyBlcXVhbCB0byBBU0NJSSBzdHJpbmcuICBSZXR1cm4gMSBpZiB0cnVlLAotICAgMCBvdGhlcndpc2UuICBSZXR1cm4gMCBpZiBhbnkgYXJndW1lbnQgY29udGFpbnMgbm9uLUFTQ0lJIGNoYXJhY3RlcnMuCisgICAwIG90aGVyd2lzZS4gIFRoZSByaWdodCBhcmd1bWVudCBtdXN0IGJlIEFTQ0lJLWVuY29kZWQgc3RyaW5nLgogICAgQW55IGVycm9yIG9jY3VycyBpbnNpZGUgd2lsbCBiZSBjbGVhcmVkIGJlZm9yZSByZXR1cm4uICovCiAKIFB5QVBJX0ZVTkMoaW50KSBfUHlVbmljb2RlX0VxdWFsVG9BU0NJSVN0cmluZygKQEAgLTIyNzQsMTEgKzIzMDIsMTcgQEAKICAgICBpbnQgY2hlY2tfY29udGVudCk7CiAjZW5kaWYKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogLyogUmV0dXJuIGFuIGludGVybmVkIFVuaWNvZGUgb2JqZWN0IGZvciBhbiBJZGVudGlmaWVyOyBtYXkgZmFpbCBpZiB0aGVyZSBpcyBubyBtZW1vcnkuKi8KIFB5QVBJX0ZVTkMoUHlPYmplY3QqKSBfUHlVbmljb2RlX0Zyb21JZChfUHlfSWRlbnRpZmllciopOwogLyogQ2xlYXIgYWxsIHN0YXRpYyBzdHJpbmdzLiAqLwogUHlBUElfRlVOQyh2b2lkKSBfUHlVbmljb2RlX0NsZWFyU3RhdGljU3RyaW5ncyh2b2lkKTsKIAorLyogRmFzdCBlcXVhbGl0eSBjaGVjayB3aGVuIHRoZSBpbnB1dHMgYXJlIGtub3duIHRvIGJlIGV4YWN0IHVuaWNvZGUgdHlwZXMKKyAgIGFuZCB3aGVyZSB0aGUgaGFzaCB2YWx1ZXMgYXJlIGVxdWFsIChpLmUuIGEgdmVyeSBwcm9iYWJsZSBtYXRjaCkgKi8KK1B5QVBJX0ZVTkMoaW50KSBfUHlVbmljb2RlX0VRKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvSW5jbHVkZS93YXJuaW5ncy5oIGIvSW5jbHVkZS93YXJuaW5ncy5oCmluZGV4IGVmZmI5ZmFkLi5jMWM2OTkyIDEwMDY0NAotLS0gYS9JbmNsdWRlL3dhcm5pbmdzLmgKKysrIGIvSW5jbHVkZS93YXJuaW5ncy5oCkBAIC0xNyw2ICsxNywxMyBAQAogICAgIFB5X3NzaXplX3Qgc3RhY2tfbGV2ZWwsCiAgICAgY29uc3QgY2hhciAqZm9ybWF0LCAgICAgICAgIC8qIEFTQ0lJLWVuY29kZWQgc3RyaW5nICAqLwogICAgIC4uLik7CisKKy8qIEVtaXQgYSBSZXNvdXJjZVdhcm5pbmcgd2FybmluZyAqLworUHlBUElfRlVOQyhpbnQpIFB5RXJyX1Jlc291cmNlV2FybmluZygKKyAgICBQeU9iamVjdCAqc291cmNlLAorICAgIFB5X3NzaXplX3Qgc3RhY2tfbGV2ZWwsCisgICAgY29uc3QgY2hhciAqZm9ybWF0LCAgICAgICAgIC8qIEFTQ0lJLWVuY29kZWQgc3RyaW5nICAqLworICAgIC4uLik7CiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKGludCkgUHlFcnJfV2FybkV4cGxpY2l0T2JqZWN0KAogICAgIFB5T2JqZWN0ICpjYXRlZ29yeSwKZGlmZiAtLWdpdCBhL0xpYi9fY29sbGVjdGlvbnNfYWJjLnB5IGIvTGliL19jb2xsZWN0aW9uc19hYmMucHkKaW5kZXggOGJlYmQ2OS4uYjE3MmYzZiAxMDA2NDQKLS0tIGEvTGliL19jb2xsZWN0aW9uc19hYmMucHkKKysrIGIvTGliL19jb2xsZWN0aW9uc19hYmMucHkKQEAgLTksOSArOSwxMCBAQAogZnJvbSBhYmMgaW1wb3J0IEFCQ01ldGEsIGFic3RyYWN0bWV0aG9kCiBpbXBvcnQgc3lzCiAKLV9fYWxsX18gPSBbIkF3YWl0YWJsZSIsICJDb3JvdXRpbmUiLCAiQXN5bmNJdGVyYWJsZSIsICJBc3luY0l0ZXJhdG9yIiwKLSAgICAgICAgICAgIkhhc2hhYmxlIiwgIkl0ZXJhYmxlIiwgIkl0ZXJhdG9yIiwgIkdlbmVyYXRvciIsCi0gICAgICAgICAgICJTaXplZCIsICJDb250YWluZXIiLCAiQ2FsbGFibGUiLAorX19hbGxfXyA9IFsiQXdhaXRhYmxlIiwgIkNvcm91dGluZSIsCisgICAgICAgICAgICJBc3luY0l0ZXJhYmxlIiwgIkFzeW5jSXRlcmF0b3IiLCAiQXN5bmNHZW5lcmF0b3IiLAorICAgICAgICAgICAiSGFzaGFibGUiLCAiSXRlcmFibGUiLCAiSXRlcmF0b3IiLCAiR2VuZXJhdG9yIiwgIlJldmVyc2libGUiLAorICAgICAgICAgICAiU2l6ZWQiLCAiQ29udGFpbmVyIiwgIkNhbGxhYmxlIiwgIkNvbGxlY3Rpb24iLAogICAgICAgICAgICAiU2V0IiwgIk11dGFibGVTZXQiLAogICAgICAgICAgICAiTWFwcGluZyIsICJNdXRhYmxlTWFwcGluZyIsCiAgICAgICAgICAgICJNYXBwaW5nVmlldyIsICJLZXlzVmlldyIsICJJdGVtc1ZpZXciLCAiVmFsdWVzVmlldyIsCkBAIC01OSwxMCArNjAsMjcgQEAKIGNvcm91dGluZSA9IHR5cGUoX2Nvcm8pCiBfY29yby5jbG9zZSgpICAjIFByZXZlbnQgUmVzb3VyY2VXYXJuaW5nCiBkZWwgX2Nvcm8KKyMjIGFzeW5jaHJvbm91cyBnZW5lcmF0b3IgIyMKK2FzeW5jIGRlZiBfYWcoKTogeWllbGQKK19hZyA9IF9hZygpCithc3luY19nZW5lcmF0b3IgPSB0eXBlKF9hZykKK2RlbCBfYWcKIAogCiAjIyMgT05FLVRSSUNLIFBPTklFUyAjIyMKIAorZGVmIF9jaGVja19tZXRob2RzKEMsICptZXRob2RzKToKKyAgICBtcm8gPSBDLl9fbXJvX18KKyAgICBmb3IgbWV0aG9kIGluIG1ldGhvZHM6CisgICAgICAgIGZvciBCIGluIG1ybzoKKyAgICAgICAgICAgIGlmIG1ldGhvZCBpbiBCLl9fZGljdF9fOgorICAgICAgICAgICAgICAgIGlmIEIuX19kaWN0X19bbWV0aG9kXSBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgcmV0dXJuIFRydWUKKwogY2xhc3MgSGFzaGFibGUobWV0YWNsYXNzPUFCQ01ldGEpOgogCiAgICAgX19zbG90c19fID0gKCkKQEAgLTc0LDExICs5Miw3IEBACiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIF9fc3ViY2xhc3Nob29rX18oY2xzLCBDKToKICAgICAgICAgaWYgY2xzIGlzIEhhc2hhYmxlOgotICAgICAgICAgICAgZm9yIEIgaW4gQy5fX21yb19fOgotICAgICAgICAgICAgICAgIGlmICJfX2hhc2hfXyIgaW4gQi5fX2RpY3RfXzoKLSAgICAgICAgICAgICAgICAgICAgaWYgQi5fX2RpY3RfX1siX19oYXNoX18iXToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICByZXR1cm4gX2NoZWNrX21ldGhvZHMoQywgIl9faGFzaF9fIikKICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAKIApAQCAtOTMsMTEgKzEwNyw3IEBACiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIF9fc3ViY2xhc3Nob29rX18oY2xzLCBDKToKICAgICAgICAgaWYgY2xzIGlzIEF3YWl0YWJsZToKLSAgICAgICAgICAgIGZvciBCIGluIEMuX19tcm9fXzoKLSAgICAgICAgICAgICAgICBpZiAiX19hd2FpdF9fIiBpbiBCLl9fZGljdF9fOgotICAgICAgICAgICAgICAgICAgICBpZiBCLl9fZGljdF9fWyJfX2F3YWl0X18iXToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICByZXR1cm4gX2NoZWNrX21ldGhvZHMoQywgIl9fYXdhaXRfXyIpCiAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogCiAKQEAgLTEzOCwxNCArMTQ4LDcgQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgogICAgICAgICBpZiBjbHMgaXMgQ29yb3V0aW5lOgotICAgICAgICAgICAgbXJvID0gQy5fX21yb19fCi0gICAgICAgICAgICBmb3IgbWV0aG9kIGluICgnX19hd2FpdF9fJywgJ3NlbmQnLCAndGhyb3cnLCAnY2xvc2UnKToKLSAgICAgICAgICAgICAgICBmb3IgYmFzZSBpbiBtcm86Ci0gICAgICAgICAgICAgICAgICAgIGlmIG1ldGhvZCBpbiBiYXNlLl9fZGljdF9fOgotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKLSAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICByZXR1cm4gX2NoZWNrX21ldGhvZHMoQywgJ19fYXdhaXRfXycsICdzZW5kJywgJ3Rocm93JywgJ2Nsb3NlJykKICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAKIApAQCAtMTYzLDggKzE2Niw3IEBACiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIF9fc3ViY2xhc3Nob29rX18oY2xzLCBDKToKICAgICAgICAgaWYgY2xzIGlzIEFzeW5jSXRlcmFibGU6Ci0gICAgICAgICAgICBpZiBhbnkoIl9fYWl0ZXJfXyIgaW4gQi5fX2RpY3RfXyBmb3IgQiBpbiBDLl9fbXJvX18pOgotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICByZXR1cm4gX2NoZWNrX21ldGhvZHMoQywgIl9fYWl0ZXJfXyIpCiAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogCiAKQEAgLTE4MywxMiArMTg1LDYxIEBACiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIF9fc3ViY2xhc3Nob29rX18oY2xzLCBDKToKICAgICAgICAgaWYgY2xzIGlzIEFzeW5jSXRlcmF0b3I6Ci0gICAgICAgICAgICBpZiAoYW55KCJfX2FuZXh0X18iIGluIEIuX19kaWN0X18gZm9yIEIgaW4gQy5fX21yb19fKSBhbmQKLSAgICAgICAgICAgICAgICBhbnkoIl9fYWl0ZXJfXyIgaW4gQi5fX2RpY3RfXyBmb3IgQiBpbiBDLl9fbXJvX18pKToKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgcmV0dXJuIF9jaGVja19tZXRob2RzKEMsICJfX2FuZXh0X18iLCAiX19haXRlcl9fIikKICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAKIAorY2xhc3MgQXN5bmNHZW5lcmF0b3IoQXN5bmNJdGVyYXRvcik6CisKKyAgICBfX3Nsb3RzX18gPSAoKQorCisgICAgYXN5bmMgZGVmIF9fYW5leHRfXyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBuZXh0IGl0ZW0gZnJvbSB0aGUgYXN5bmNocm9ub3VzIGdlbmVyYXRvci4KKyAgICAgICAgV2hlbiBleGhhdXN0ZWQsIHJhaXNlIFN0b3BBc3luY0l0ZXJhdGlvbi4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBhd2FpdCBzZWxmLmFzZW5kKE5vbmUpCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBhc3luYyBkZWYgYXNlbmQoc2VsZiwgdmFsdWUpOgorICAgICAgICAiIiJTZW5kIGEgdmFsdWUgaW50byB0aGUgYXN5bmNocm9ub3VzIGdlbmVyYXRvci4KKyAgICAgICAgUmV0dXJuIG5leHQgeWllbGRlZCB2YWx1ZSBvciByYWlzZSBTdG9wQXN5bmNJdGVyYXRpb24uCisgICAgICAgICIiIgorICAgICAgICByYWlzZSBTdG9wQXN5bmNJdGVyYXRpb24KKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGFzeW5jIGRlZiBhdGhyb3coc2VsZiwgdHlwLCB2YWw9Tm9uZSwgdGI9Tm9uZSk6CisgICAgICAgICIiIlJhaXNlIGFuIGV4Y2VwdGlvbiBpbiB0aGUgYXN5bmNocm9ub3VzIGdlbmVyYXRvci4KKyAgICAgICAgUmV0dXJuIG5leHQgeWllbGRlZCB2YWx1ZSBvciByYWlzZSBTdG9wQXN5bmNJdGVyYXRpb24uCisgICAgICAgICIiIgorICAgICAgICBpZiB2YWwgaXMgTm9uZToKKyAgICAgICAgICAgIGlmIHRiIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgcmFpc2UgdHlwCisgICAgICAgICAgICB2YWwgPSB0eXAoKQorICAgICAgICBpZiB0YiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHZhbCA9IHZhbC53aXRoX3RyYWNlYmFjayh0YikKKyAgICAgICAgcmFpc2UgdmFsCisKKyAgICBhc3luYyBkZWYgYWNsb3NlKHNlbGYpOgorICAgICAgICAiIiJSYWlzZSBHZW5lcmF0b3JFeGl0IGluc2lkZSBjb3JvdXRpbmUuCisgICAgICAgICIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICBhd2FpdCBzZWxmLmF0aHJvdyhHZW5lcmF0b3JFeGl0KQorICAgICAgICBleGNlcHQgKEdlbmVyYXRvckV4aXQsIFN0b3BBc3luY0l0ZXJhdGlvbik6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoImFzeW5jaHJvbm91cyBnZW5lcmF0b3IgaWdub3JlZCBHZW5lcmF0b3JFeGl0IikKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfX3N1YmNsYXNzaG9va19fKGNscywgQyk6CisgICAgICAgIGlmIGNscyBpcyBBc3luY0dlbmVyYXRvcjoKKyAgICAgICAgICAgIHJldHVybiBfY2hlY2tfbWV0aG9kcyhDLCAnX19haXRlcl9fJywgJ19fYW5leHRfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FzZW5kJywgJ2F0aHJvdycsICdhY2xvc2UnKQorICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKworCitBc3luY0dlbmVyYXRvci5yZWdpc3Rlcihhc3luY19nZW5lcmF0b3IpCisKKwogY2xhc3MgSXRlcmFibGUobWV0YWNsYXNzPUFCQ01ldGEpOgogCiAgICAgX19zbG90c19fID0gKCkKQEAgLTIwMSw4ICsyNTIsNyBAQAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBfX3N1YmNsYXNzaG9va19fKGNscywgQyk6CiAgICAgICAgIGlmIGNscyBpcyBJdGVyYWJsZToKLSAgICAgICAgICAgIGlmIGFueSgiX19pdGVyX18iIGluIEIuX19kaWN0X18gZm9yIEIgaW4gQy5fX21yb19fKToKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgcmV0dXJuIF9jaGVja19tZXRob2RzKEMsICJfX2l0ZXJfXyIpCiAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogCiAKQEAgLTIyMSw5ICsyNzEsNyBAQAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBfX3N1YmNsYXNzaG9va19fKGNscywgQyk6CiAgICAgICAgIGlmIGNscyBpcyBJdGVyYXRvcjoKLSAgICAgICAgICAgIGlmIChhbnkoIl9fbmV4dF9fIiBpbiBCLl9fZGljdF9fIGZvciBCIGluIEMuX19tcm9fXykgYW5kCi0gICAgICAgICAgICAgICAgYW55KCJfX2l0ZXJfXyIgaW4gQi5fX2RpY3RfXyBmb3IgQiBpbiBDLl9fbXJvX18pKToKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgcmV0dXJuIF9jaGVja19tZXRob2RzKEMsICdfX2l0ZXJfXycsICdfX25leHRfXycpCiAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogCiBJdGVyYXRvci5yZWdpc3RlcihieXRlc19pdGVyYXRvcikKQEAgLTI0Miw2ICsyOTAsMjIgQEAKIEl0ZXJhdG9yLnJlZ2lzdGVyKHppcF9pdGVyYXRvcikKIAogCitjbGFzcyBSZXZlcnNpYmxlKEl0ZXJhYmxlKToKKworICAgIF9fc2xvdHNfXyA9ICgpCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgX19yZXZlcnNlZF9fKHNlbGYpOgorICAgICAgICB3aGlsZSBGYWxzZToKKyAgICAgICAgICAgIHlpZWxkIE5vbmUKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfX3N1YmNsYXNzaG9va19fKGNscywgQyk6CisgICAgICAgIGlmIGNscyBpcyBSZXZlcnNpYmxlOgorICAgICAgICAgICAgcmV0dXJuIF9jaGVja19tZXRob2RzKEMsICJfX3JldmVyc2VkX18iLCAiX19pdGVyX18iKQorICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKworCiBjbGFzcyBHZW5lcmF0b3IoSXRlcmF0b3IpOgogCiAgICAgX19zbG90c19fID0gKCkKQEAgLTI4NSwxNyArMzQ5LDEwIEBACiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIF9fc3ViY2xhc3Nob29rX18oY2xzLCBDKToKICAgICAgICAgaWYgY2xzIGlzIEdlbmVyYXRvcjoKLSAgICAgICAgICAgIG1ybyA9IEMuX19tcm9fXwotICAgICAgICAgICAgZm9yIG1ldGhvZCBpbiAoJ19faXRlcl9fJywgJ19fbmV4dF9fJywgJ3NlbmQnLCAndGhyb3cnLCAnY2xvc2UnKToKLSAgICAgICAgICAgICAgICBmb3IgYmFzZSBpbiBtcm86Ci0gICAgICAgICAgICAgICAgICAgIGlmIG1ldGhvZCBpbiBiYXNlLl9fZGljdF9fOgotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKLSAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICByZXR1cm4gX2NoZWNrX21ldGhvZHMoQywgJ19faXRlcl9fJywgJ19fbmV4dF9fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2VuZCcsICd0aHJvdycsICdjbG9zZScpCiAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogCi0KIEdlbmVyYXRvci5yZWdpc3RlcihnZW5lcmF0b3IpCiAKIApAQCAtMzEwLDggKzM2Nyw3IEBACiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIF9fc3ViY2xhc3Nob29rX18oY2xzLCBDKToKICAgICAgICAgaWYgY2xzIGlzIFNpemVkOgotICAgICAgICAgICAgaWYgYW55KCJfX2xlbl9fIiBpbiBCLl9fZGljdF9fIGZvciBCIGluIEMuX19tcm9fXyk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgIHJldHVybiBfY2hlY2tfbWV0aG9kcyhDLCAiX19sZW5fXyIpCiAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogCiAKQEAgLTMyNiwxMCArMzgyLDE4IEBACiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIF9fc3ViY2xhc3Nob29rX18oY2xzLCBDKToKICAgICAgICAgaWYgY2xzIGlzIENvbnRhaW5lcjoKLSAgICAgICAgICAgIGlmIGFueSgiX19jb250YWluc19fIiBpbiBCLl9fZGljdF9fIGZvciBCIGluIEMuX19tcm9fXyk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgIHJldHVybiBfY2hlY2tfbWV0aG9kcyhDLCAiX19jb250YWluc19fIikKICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAKK2NsYXNzIENvbGxlY3Rpb24oU2l6ZWQsIEl0ZXJhYmxlLCBDb250YWluZXIpOgorCisgICAgX19zbG90c19fID0gKCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfX3N1YmNsYXNzaG9va19fKGNscywgQyk6CisgICAgICAgIGlmIGNscyBpcyBDb2xsZWN0aW9uOgorICAgICAgICAgICAgcmV0dXJuIF9jaGVja19tZXRob2RzKEMsICAiX19sZW5fXyIsICJfX2l0ZXJfXyIsICJfX2NvbnRhaW5zX18iKQorICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKIAogY2xhc3MgQ2FsbGFibGUobWV0YWNsYXNzPUFCQ01ldGEpOgogCkBAIC0zNDIsMTUgKzQwNiwxNCBAQAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBfX3N1YmNsYXNzaG9va19fKGNscywgQyk6CiAgICAgICAgIGlmIGNscyBpcyBDYWxsYWJsZToKLSAgICAgICAgICAgIGlmIGFueSgiX19jYWxsX18iIGluIEIuX19kaWN0X18gZm9yIEIgaW4gQy5fX21yb19fKToKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgcmV0dXJuIF9jaGVja19tZXRob2RzKEMsICJfX2NhbGxfXyIpCiAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogCiAKICMjIyBTRVRTICMjIwogCiAKLWNsYXNzIFNldChTaXplZCwgSXRlcmFibGUsIENvbnRhaW5lcik6CitjbGFzcyBTZXQoQ29sbGVjdGlvbik6CiAKICAgICAiIiJBIHNldCBpcyBhIGZpbml0ZSwgaXRlcmFibGUgY29udGFpbmVyLgogCkBAIC01NzUsNyArNjM4LDcgQEAKICMjIyBNQVBQSU5HUyAjIyMKIAogCi1jbGFzcyBNYXBwaW5nKFNpemVkLCBJdGVyYWJsZSwgQ29udGFpbmVyKToKK2NsYXNzIE1hcHBpbmcoQ29sbGVjdGlvbik6CiAKICAgICBfX3Nsb3RzX18gPSAoKQogCkBAIC02MjMsNiArNjg2LDggQEAKICAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogICAgICAgICByZXR1cm4gZGljdChzZWxmLml0ZW1zKCkpID09IGRpY3Qob3RoZXIuaXRlbXMoKSkKIAorICAgIF9fcmV2ZXJzZWRfXyA9IE5vbmUKKwogTWFwcGluZy5yZWdpc3RlcihtYXBwaW5ncHJveHkpCiAKIApAQCAtNjcyLDcgKzczNyw3IEBACiAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIHYgPT0gdmFsdWUKKyAgICAgICAgICAgIHJldHVybiB2IGlzIHZhbHVlIG9yIHYgPT0gdmFsdWUKIAogICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKICAgICAgICAgZm9yIGtleSBpbiBzZWxmLl9tYXBwaW5nOgpAQCAtNjg3LDcgKzc1Miw4IEBACiAKICAgICBkZWYgX19jb250YWluc19fKHNlbGYsIHZhbHVlKToKICAgICAgICAgZm9yIGtleSBpbiBzZWxmLl9tYXBwaW5nOgotICAgICAgICAgICAgaWYgdmFsdWUgPT0gc2VsZi5fbWFwcGluZ1trZXldOgorICAgICAgICAgICAgdiA9IHNlbGYuX21hcHBpbmdba2V5XQorICAgICAgICAgICAgaWYgdiBpcyB2YWx1ZSBvciB2ID09IHZhbHVlOgogICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIHJldHVybiBGYWxzZQogCkBAIC03OTYsNyArODYyLDcgQEAKICMjIyBTRVFVRU5DRVMgIyMjCiAKIAotY2xhc3MgU2VxdWVuY2UoU2l6ZWQsIEl0ZXJhYmxlLCBDb250YWluZXIpOgorY2xhc3MgU2VxdWVuY2UoUmV2ZXJzaWJsZSwgQ29sbGVjdGlvbik6CiAKICAgICAiIiJBbGwgdGhlIG9wZXJhdGlvbnMgb24gYSByZWFkLW9ubHkgc2VxdWVuY2UuCiAKQEAgLTgyMiw3ICs4ODgsNyBAQAogCiAgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCB2YWx1ZSk6CiAgICAgICAgIGZvciB2IGluIHNlbGY6Ci0gICAgICAgICAgICBpZiB2ID09IHZhbHVlOgorICAgICAgICAgICAgaWYgdiBpcyB2YWx1ZSBvciB2ID09IHZhbHVlOgogICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIHJldHVybiBGYWxzZQogCmRpZmYgLS1naXQgYS9MaWIvX2NvbXBhdF9waWNrbGUucHkgYi9MaWIvX2NvbXBhdF9waWNrbGUucHkKaW5kZXggYzBlMDQ0My4uZjY4NDk2YSAxMDA2NDQKLS0tIGEvTGliL19jb21wYXRfcGlja2xlLnB5CisrKyBiL0xpYi9fY29tcGF0X3BpY2tsZS5weQpAQCAtMjQyLDMgKzI0MiwxMCBAQAogCiBmb3IgZXhjbmFtZSBpbiBQWVRIT04zX09TRVJST1JfRVhDRVBUSU9OUzoKICAgICBSRVZFUlNFX05BTUVfTUFQUElOR1soJ2J1aWx0aW5zJywgZXhjbmFtZSldID0gKCdleGNlcHRpb25zJywgJ09TRXJyb3InKQorCitQWVRIT04zX0lNUE9SVEVSUk9SX0VYQ0VQVElPTlMgPSAoCisgICAgJ01vZHVsZU5vdEZvdW5kRXJyb3InLAorKQorCitmb3IgZXhjbmFtZSBpbiBQWVRIT04zX0lNUE9SVEVSUk9SX0VYQ0VQVElPTlM6CisgICAgUkVWRVJTRV9OQU1FX01BUFBJTkdbKCdidWlsdGlucycsIGV4Y25hbWUpXSA9ICgnZXhjZXB0aW9ucycsICdJbXBvcnRFcnJvcicpCmRpZmYgLS1naXQgYS9MaWIvX29zeF9zdXBwb3J0LnB5IGIvTGliL19vc3hfc3VwcG9ydC5weQppbmRleCAxM2ZjZDhiLi5lYWRmMDZmIDEwMDY0NAotLS0gYS9MaWIvX29zeF9zdXBwb3J0LnB5CisrKyBiL0xpYi9fb3N4X3N1cHBvcnQucHkKQEAgLTIxMCw3ICsyMTAsNyBAQAogICAgICAgICAjIERvIG5vdCBhbHRlciBhIGNvbmZpZyB2YXIgZXhwbGljaXRseSBvdmVycmlkZGVuIGJ5IGVudiB2YXIKICAgICAgICAgaWYgY3YgaW4gX2NvbmZpZ192YXJzIGFuZCBjdiBub3QgaW4gb3MuZW52aXJvbjoKICAgICAgICAgICAgIGZsYWdzID0gX2NvbmZpZ192YXJzW2N2XQotICAgICAgICAgICAgZmxhZ3MgPSByZS5zdWIoJy1hcmNoXHMrXHcrXHMnLCAnICcsIGZsYWdzLCByZS5BU0NJSSkKKyAgICAgICAgICAgIGZsYWdzID0gcmUuc3ViKHInLWFyY2hccytcdytccycsICcgJywgZmxhZ3MsIHJlLkFTQ0lJKQogICAgICAgICAgICAgZmxhZ3MgPSByZS5zdWIoJy1pc3lzcm9vdCBbXiBcdF0qJywgJyAnLCBmbGFncykKICAgICAgICAgICAgIF9zYXZlX21vZGlmaWVkX3ZhbHVlKF9jb25maWdfdmFycywgY3YsIGZsYWdzKQogCkBAIC0yMzIsNyArMjMyLDcgQEAKICAgICBpZiAnQ0MnIGluIG9zLmVudmlyb246CiAgICAgICAgIHJldHVybiBfY29uZmlnX3ZhcnMKIAotICAgIGlmIHJlLnNlYXJjaCgnLWFyY2hccytwcGMnLCBfY29uZmlnX3ZhcnNbJ0NGTEFHUyddKSBpcyBub3QgTm9uZToKKyAgICBpZiByZS5zZWFyY2gocictYXJjaFxzK3BwYycsIF9jb25maWdfdmFyc1snQ0ZMQUdTJ10pIGlzIG5vdCBOb25lOgogICAgICAgICAjIE5PVEU6IENhbm5vdCB1c2Ugc3VicHJvY2VzcyBoZXJlIGJlY2F1c2Ugb2YgYm9vdHN0cmFwCiAgICAgICAgICMgaXNzdWVzIHdoZW4gYnVpbGRpbmcgUHl0aG9uIGl0c2VsZgogICAgICAgICBzdGF0dXMgPSBvcy5zeXN0ZW0oCkBAIC0yNTEsNyArMjUxLDcgQEAKICAgICAgICAgICAgIGZvciBjdiBpbiBfVU5JVkVSU0FMX0NPTkZJR19WQVJTOgogICAgICAgICAgICAgICAgIGlmIGN2IGluIF9jb25maWdfdmFycyBhbmQgY3Ygbm90IGluIG9zLmVudmlyb246CiAgICAgICAgICAgICAgICAgICAgIGZsYWdzID0gX2NvbmZpZ192YXJzW2N2XQotICAgICAgICAgICAgICAgICAgICBmbGFncyA9IHJlLnN1YignLWFyY2hccytwcGNcdypccycsICcgJywgZmxhZ3MpCisgICAgICAgICAgICAgICAgICAgIGZsYWdzID0gcmUuc3ViKHInLWFyY2hccytwcGNcdypccycsICcgJywgZmxhZ3MpCiAgICAgICAgICAgICAgICAgICAgIF9zYXZlX21vZGlmaWVkX3ZhbHVlKF9jb25maWdfdmFycywgY3YsIGZsYWdzKQogCiAgICAgcmV0dXJuIF9jb25maWdfdmFycwpAQCAtMjY3LDcgKzI2Nyw3IEBACiAgICAgICAgIGZvciBjdiBpbiBfVU5JVkVSU0FMX0NPTkZJR19WQVJTOgogICAgICAgICAgICAgaWYgY3YgaW4gX2NvbmZpZ192YXJzIGFuZCAnLWFyY2gnIGluIF9jb25maWdfdmFyc1tjdl06CiAgICAgICAgICAgICAgICAgZmxhZ3MgPSBfY29uZmlnX3ZhcnNbY3ZdCi0gICAgICAgICAgICAgICAgZmxhZ3MgPSByZS5zdWIoJy1hcmNoXHMrXHcrXHMnLCAnICcsIGZsYWdzKQorICAgICAgICAgICAgICAgIGZsYWdzID0gcmUuc3ViKHInLWFyY2hccytcdytccycsICcgJywgZmxhZ3MpCiAgICAgICAgICAgICAgICAgZmxhZ3MgPSBmbGFncyArICcgJyArIGFyY2gKICAgICAgICAgICAgICAgICBfc2F2ZV9tb2RpZmllZF92YWx1ZShfY29uZmlnX3ZhcnMsIGN2LCBmbGFncykKIApAQCAtNDY1LDcgKzQ2NSw3IEBACiAKICAgICAgICAgICAgIG1hY2hpbmUgPSAnZmF0JwogCi0gICAgICAgICAgICBhcmNocyA9IHJlLmZpbmRhbGwoJy1hcmNoXHMrKFxTKyknLCBjZmxhZ3MpCisgICAgICAgICAgICBhcmNocyA9IHJlLmZpbmRhbGwocictYXJjaFxzKyhcUyspJywgY2ZsYWdzKQogICAgICAgICAgICAgYXJjaHMgPSB0dXBsZShzb3J0ZWQoc2V0KGFyY2hzKSkpCiAKICAgICAgICAgICAgIGlmIGxlbihhcmNocykgPT0gMToKZGlmZiAtLWdpdCBhL0xpYi9fcHlkZWNpbWFsLnB5IGIvTGliL19weWRlY2ltYWwucHkKaW5kZXggYTVlYTM0MC4uMGI0MDkyOCAxMDA2NDQKLS0tIGEvTGliL19weWRlY2ltYWwucHkKKysrIGIvTGliL19weWRlY2ltYWwucHkKQEAgLTE0OCw3ICsxNDgsNyBAQAogX19uYW1lX18gPSAnZGVjaW1hbCcgICAgIyBGb3IgcGlja2xpbmcKIF9fdmVyc2lvbl9fID0gJzEuNzAnICAgICMgSGlnaGVzdCB2ZXJzaW9uIG9mIHRoZSBzcGVjIHRoaXMgY29tcGxpZXMgd2l0aAogICAgICAgICAgICAgICAgICAgICAgICAgIyBTZWUgaHR0cDovL3NwZWxlb3Ryb3ZlLmNvbS9kZWNpbWFsLwotX19saWJtcGRlY192ZXJzaW9uX18gPSAiMi40LjEiICMgY29tcGF0aWJsZSBsaWJtcGRlYyB2ZXJzaW9uCitfX2xpYm1wZGVjX3ZlcnNpb25fXyA9ICIyLjQuMiIgIyBjb21wYXRpYmxlIGxpYm1wZGVjIHZlcnNpb24KIAogaW1wb3J0IG1hdGggYXMgX21hdGgKIGltcG9ydCBudW1iZXJzIGFzIF9udW1iZXJzCkBAIC01ODksNyArNTg5LDcgQEAKICAgICAgICAgIyBGcm9tIGEgc3RyaW5nCiAgICAgICAgICMgUkVzIGluc2lzdCBvbiByZWFsIHN0cmluZ3MsIHNvIHdlIGNhbiB0b28uCiAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIHN0cik6Ci0gICAgICAgICAgICBtID0gX3BhcnNlcih2YWx1ZS5zdHJpcCgpKQorICAgICAgICAgICAgbSA9IF9wYXJzZXIodmFsdWUuc3RyaXAoKS5yZXBsYWNlKCJfIiwgIiIpKQogICAgICAgICAgICAgaWYgbSBpcyBOb25lOgogICAgICAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQpAQCAtMTAxMCw2ICsxMDEwLDU2IEBACiAgICAgICAgICIiIgogICAgICAgICByZXR1cm4gRGVjaW1hbFR1cGxlKHNlbGYuX3NpZ24sIHR1cGxlKG1hcChpbnQsIHNlbGYuX2ludCkpLCBzZWxmLl9leHApCiAKKyAgICBkZWYgYXNfaW50ZWdlcl9yYXRpbyhzZWxmKToKKyAgICAgICAgIiIiRXhwcmVzcyBhIGZpbml0ZSBEZWNpbWFsIGluc3RhbmNlIGluIHRoZSBmb3JtIG4gLyBkLgorCisgICAgICAgIFJldHVybnMgYSBwYWlyIChuLCBkKSBvZiBpbnRlZ2Vycy4gIFdoZW4gY2FsbGVkIG9uIGFuIGluZmluaXR5CisgICAgICAgIG9yIE5hTiwgcmFpc2VzIE92ZXJmbG93RXJyb3Igb3IgVmFsdWVFcnJvciByZXNwZWN0aXZlbHkuCisKKyAgICAgICAgPj4+IERlY2ltYWwoJzMuMTQnKS5hc19pbnRlZ2VyX3JhdGlvKCkKKyAgICAgICAgKDE1NywgNTApCisgICAgICAgID4+PiBEZWNpbWFsKCctMTIzZTUnKS5hc19pbnRlZ2VyX3JhdGlvKCkKKyAgICAgICAgKC0xMjMwMDAwMCwgMSkKKyAgICAgICAgPj4+IERlY2ltYWwoJzAuMDAnKS5hc19pbnRlZ2VyX3JhdGlvKCkKKyAgICAgICAgKDAsIDEpCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6CisgICAgICAgICAgICBpZiBzZWxmLmlzX25hbigpOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNhbm5vdCBjb252ZXJ0IE5hTiB0byBpbnRlZ2VyIHJhdGlvIikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UgT3ZlcmZsb3dFcnJvcigiY2Fubm90IGNvbnZlcnQgSW5maW5pdHkgdG8gaW50ZWdlciByYXRpbyIpCisKKyAgICAgICAgaWYgbm90IHNlbGY6CisgICAgICAgICAgICByZXR1cm4gMCwgMQorCisgICAgICAgICMgRmluZCBuLCBkIGluIGxvd2VzdCB0ZXJtcyBzdWNoIHRoYXQgYWJzKHNlbGYpID09IG4gLyBkOworICAgICAgICAjIHdlJ2xsIGRlYWwgd2l0aCB0aGUgc2lnbiBsYXRlci4KKyAgICAgICAgbiA9IGludChzZWxmLl9pbnQpCisgICAgICAgIGlmIHNlbGYuX2V4cCA+PSAwOgorICAgICAgICAgICAgIyBzZWxmIGlzIGFuIGludGVnZXIuCisgICAgICAgICAgICBuLCBkID0gbiAqIDEwKipzZWxmLl9leHAsIDEKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgRmluZCBkMiwgZDUgc3VjaCB0aGF0IGFicyhzZWxmKSA9IG4gLyAoMioqZDIgKiA1KipkNSkuCisgICAgICAgICAgICBkNSA9IC1zZWxmLl9leHAKKyAgICAgICAgICAgIHdoaWxlIGQ1ID4gMCBhbmQgbiAlIDUgPT0gMDoKKyAgICAgICAgICAgICAgICBuIC8vPSA1CisgICAgICAgICAgICAgICAgZDUgLT0gMQorCisgICAgICAgICAgICAjIChuICYgLW4pLmJpdF9sZW5ndGgoKSAtIDEgY291bnRzIHRyYWlsaW5nIHplcm9zIGluIGJpbmFyeQorICAgICAgICAgICAgIyByZXByZXNlbnRhdGlvbiBvZiBuIChwcm92aWRlZCBuIGlzIG5vbnplcm8pLgorICAgICAgICAgICAgZDIgPSAtc2VsZi5fZXhwCisgICAgICAgICAgICBzaGlmdDIgPSBtaW4oKG4gJiAtbikuYml0X2xlbmd0aCgpIC0gMSwgZDIpCisgICAgICAgICAgICBpZiBzaGlmdDI6CisgICAgICAgICAgICAgICAgbiA+Pj0gc2hpZnQyCisgICAgICAgICAgICAgICAgZDIgLT0gc2hpZnQyCisKKyAgICAgICAgICAgIGQgPSA1KipkNSA8PCBkMgorCisgICAgICAgIGlmIHNlbGYuX3NpZ246CisgICAgICAgICAgICBuID0gLW4KKyAgICAgICAgcmV0dXJuIG4sIGQKKwogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICAgIiIiUmVwcmVzZW50cyB0aGUgbnVtYmVyIGFzIGFuIGluc3RhbmNlIG9mIERlY2ltYWwuIiIiCiAgICAgICAgICMgSW52YXJpYW50OiAgZXZhbChyZXByKGQpKSA9PSBkCkBAIC00MDc1LDcgKzQxMjUsNyBAQAogICAgICAgICBUaGlzIHdpbGwgbWFrZSBpdCByb3VuZCB1cCBmb3IgdGhhdCBvcGVyYXRpb24uCiAgICAgICAgICIiIgogICAgICAgICByb3VuZGluZyA9IHNlbGYucm91bmRpbmcKLSAgICAgICAgc2VsZi5yb3VuZGluZz0gdHlwZQorICAgICAgICBzZWxmLnJvdW5kaW5nID0gdHlwZQogICAgICAgICByZXR1cm4gcm91bmRpbmcKIAogICAgIGRlZiBjcmVhdGVfZGVjaW1hbChzZWxmLCBudW09JzAnKToKQEAgLTQwODQsMTAgKzQxMzQsMTAgQEAKICAgICAgICAgVGhpcyBtZXRob2QgaW1wbGVtZW50cyB0aGUgdG8tbnVtYmVyIG9wZXJhdGlvbiBvZiB0aGUKICAgICAgICAgSUJNIERlY2ltYWwgc3BlY2lmaWNhdGlvbi4iIiIKIAotICAgICAgICBpZiBpc2luc3RhbmNlKG51bSwgc3RyKSBhbmQgbnVtICE9IG51bS5zdHJpcCgpOgorICAgICAgICBpZiBpc2luc3RhbmNlKG51bSwgc3RyKSBhbmQgKG51bSAhPSBudW0uc3RyaXAoKSBvciAnXycgaW4gbnVtKToKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9yYWlzZV9lcnJvcihDb252ZXJzaW9uU3ludGF4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJubyB0cmFpbGluZyBvciBsZWFkaW5nIHdoaXRlc3BhY2UgaXMgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwZXJtaXR0ZWQuIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHJhaWxpbmcgb3IgbGVhZGluZyB3aGl0ZXNwYWNlIGFuZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuZGVyc2NvcmVzIGFyZSBub3QgcGVybWl0dGVkLiIpCiAKICAgICAgICAgZCA9IERlY2ltYWwobnVtLCBjb250ZXh0PXNlbGYpCiAgICAgICAgIGlmIGQuX2lzbmFuKCkgYW5kIGxlbihkLl9pbnQpID4gc2VsZi5wcmVjIC0gc2VsZi5jbGFtcDoKZGlmZiAtLWdpdCBhL0xpYi9fcHlpby5weSBiL0xpYi9fcHlpby5weQppbmRleCBmMmZlNDQ3Li4yZWJmYjA1IDEwMDY0NAotLS0gYS9MaWIvX3B5aW8ucHkKKysrIGIvTGliL19weWlvLnB5CkBAIC02LDcgKzYsNiBAQAogaW1wb3J0IGFiYwogaW1wb3J0IGNvZGVjcwogaW1wb3J0IGVycm5vCi1pbXBvcnQgYXJyYXkKIGltcG9ydCBzdGF0CiBpbXBvcnQgc3lzCiAjIEltcG9ydCBfdGhyZWFkIGluc3RlYWQgb2YgdGhyZWFkaW5nIHRvIHJlZHVjZSBzdGFydHVwIGNvc3QKQEAgLTE2MSw2ICsxNjAsOCBAQAogICAgIG9wZW5lZCBpbiBhIHRleHQgbW9kZSwgYW5kIGZvciBieXRlcyBhIEJ5dGVzSU8gY2FuIGJlIHVzZWQgbGlrZSBhIGZpbGUKICAgICBvcGVuZWQgaW4gYSBiaW5hcnkgbW9kZS4KICAgICAiIiIKKyAgICBpZiBub3QgaXNpbnN0YW5jZShmaWxlLCBpbnQpOgorICAgICAgICBmaWxlID0gb3MuZnNwYXRoKGZpbGUpCiAgICAgaWYgbm90IGlzaW5zdGFuY2UoZmlsZSwgKHN0ciwgYnl0ZXMsIGludCkpOgogICAgICAgICByYWlzZSBUeXBlRXJyb3IoImludmFsaWQgZmlsZTogJXIiICUgZmlsZSkKICAgICBpZiBub3QgaXNpbnN0YW5jZShtb2RlLCBzdHIpOgpAQCAtMTgyLDggKzE4Myw4IEBACiAgICAgdGV4dCA9ICJ0IiBpbiBtb2RlcwogICAgIGJpbmFyeSA9ICJiIiBpbiBtb2RlcwogICAgIGlmICJVIiBpbiBtb2RlczoKLSAgICAgICAgaWYgY3JlYXRpbmcgb3Igd3JpdGluZyBvciBhcHBlbmRpbmc6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjYW4ndCB1c2UgVSBhbmQgd3JpdGluZyBtb2RlIGF0IG9uY2UiKQorICAgICAgICBpZiBjcmVhdGluZyBvciB3cml0aW5nIG9yIGFwcGVuZGluZyBvciB1cGRhdGluZzoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm1vZGUgVSBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCAneCcsICd3JywgJ2EnLCBvciAnKyciKQogICAgICAgICBpbXBvcnQgd2FybmluZ3MKICAgICAgICAgd2FybmluZ3Mud2FybigiJ1UnIG1vZGUgaXMgZGVwcmVjYXRlZCIsCiAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQpAQCAtMTUxNiw3ICsxNTE3LDcgQEAKICAgICAgICAgaWYgc2VsZi5fZmQgPj0gMCBhbmQgc2VsZi5fY2xvc2VmZCBhbmQgbm90IHNlbGYuY2xvc2VkOgogICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCiAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCd1bmNsb3NlZCBmaWxlICVyJyAlIChzZWxmLCksIFJlc291cmNlV2FybmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tsZXZlbD0yKQorICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja2xldmVsPTIsIHNvdXJjZT1zZWxmKQogICAgICAgICAgICAgc2VsZi5jbG9zZSgpCiAKICAgICBkZWYgX19nZXRzdGF0ZV9fKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL19zdHJwdGltZS5weSBiL0xpYi9fc3RycHRpbWUucHkKaW5kZXggZjg0MjI3Yi4uZmU5NDM2MSAxMDA2NDQKLS0tIGEvTGliL19zdHJwdGltZS5weQorKysgYi9MaWIvX3N0cnB0aW1lLnB5CkBAIC0xOTksMTIgKzE5OSwxNSBAQAogICAgICAgICAgICAgJ2YnOiByIig/UDxmPlswLTldezEsNn0pIiwKICAgICAgICAgICAgICdIJzogciIoP1A8SD4yWzAtM118WzAtMV1cZHxcZCkiLAogICAgICAgICAgICAgJ0knOiByIig/UDxJPjFbMC0yXXwwWzEtOV18WzEtOV0pIiwKKyAgICAgICAgICAgICdHJzogciIoP1A8Rz5cZFxkXGRcZCkiLAogICAgICAgICAgICAgJ2onOiByIig/UDxqPjM2WzAtNl18M1swLTVdXGR8WzEtMl1cZFxkfDBbMS05XVxkfDAwWzEtOV18WzEtOV1cZHwwWzEtOV18WzEtOV0pIiwKICAgICAgICAgICAgICdtJzogciIoP1A8bT4xWzAtMl18MFsxLTldfFsxLTldKSIsCiAgICAgICAgICAgICAnTSc6IHIiKD9QPE0+WzAtNV1cZHxcZCkiLAogICAgICAgICAgICAgJ1MnOiByIig/UDxTPjZbMC0xXXxbMC01XVxkfFxkKSIsCiAgICAgICAgICAgICAnVSc6IHIiKD9QPFU+NVswLTNdfFswLTRdXGR8XGQpIiwKICAgICAgICAgICAgICd3JzogciIoP1A8dz5bMC02XSkiLAorICAgICAgICAgICAgJ3UnOiByIig/UDx1PlsxLTddKSIsCisgICAgICAgICAgICAnVic6IHIiKD9QPFY+NVswLTNdfDBbMS05XXxbMS00XVxkfFxkKSIsCiAgICAgICAgICAgICAjIFcgaXMgc2V0IGJlbG93IGJ5IHVzaW5nICdVJwogICAgICAgICAgICAgJ3knOiByIig/UDx5PlxkXGQpIiwKICAgICAgICAgICAgICNYWFg6IERvZXMgJ1knIG5lZWQgdG8gd29ycnkgYWJvdXQgaGF2aW5nIGxlc3Mgb3IgbW9yZSB0aGFuCkBAIC0yOTksNiArMzAyLDIyIEBACiAgICAgICAgIHJldHVybiAxICsgZGF5c190b193ZWVrICsgZGF5X29mX3dlZWsKIAogCitkZWYgX2NhbGNfanVsaWFuX2Zyb21fVihpc29feWVhciwgaXNvX3dlZWssIGlzb193ZWVrZGF5KToKKyAgICAiIiJDYWxjdWxhdGUgdGhlIEp1bGlhbiBkYXkgYmFzZWQgb24gdGhlIElTTyA4NjAxIHllYXIsIHdlZWssIGFuZCB3ZWVrZGF5LgorICAgIElTTyB3ZWVrcyBzdGFydCBvbiBNb25kYXlzLCB3aXRoIHdlZWsgMDEgYmVpbmcgdGhlIHdlZWsgY29udGFpbmluZyA0IEphbi4KKyAgICBJU08gd2VlayBkYXlzIHJhbmdlIGZyb20gMSAoTW9uZGF5KSB0byA3IChTdW5kYXkpLgorICAgICIiIgorICAgIGNvcnJlY3Rpb24gPSBkYXRldGltZV9kYXRlKGlzb195ZWFyLCAxLCA0KS5pc293ZWVrZGF5KCkgKyAzCisgICAgb3JkaW5hbCA9IChpc29fd2VlayAqIDcpICsgaXNvX3dlZWtkYXkgLSBjb3JyZWN0aW9uCisgICAgIyBvcmRpbmFsIG1heSBiZSBuZWdhdGl2ZSBvciAwIG5vdywgd2hpY2ggbWVhbnMgdGhlIGRhdGUgaXMgaW4gdGhlIHByZXZpb3VzCisgICAgIyBjYWxlbmRhciB5ZWFyCisgICAgaWYgb3JkaW5hbCA8IDE6CisgICAgICAgIG9yZGluYWwgKz0gZGF0ZXRpbWVfZGF0ZShpc29feWVhciwgMSwgMSkudG9vcmRpbmFsKCkKKyAgICAgICAgaXNvX3llYXIgLT0gMQorICAgICAgICBvcmRpbmFsIC09IGRhdGV0aW1lX2RhdGUoaXNvX3llYXIsIDEsIDEpLnRvb3JkaW5hbCgpCisgICAgcmV0dXJuIGlzb195ZWFyLCBvcmRpbmFsCisKKwogZGVmIF9zdHJwdGltZShkYXRhX3N0cmluZywgZm9ybWF0PSIlYSAlYiAlZCAlSDolTTolUyAlWSIpOgogICAgICIiIlJldHVybiBhIDItdHVwbGUgY29uc2lzdGluZyBvZiBhIHRpbWUgc3RydWN0IGFuZCBhbiBpbnQgY29udGFpbmluZwogICAgIHRoZSBudW1iZXIgb2YgbWljcm9zZWNvbmRzIGJhc2VkIG9uIHRoZSBpbnB1dCBzdHJpbmcgYW5kIHRoZQpAQCAtMzQ1LDE1ICszNjQsMTUgQEAKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidW5jb252ZXJ0ZWQgZGF0YSByZW1haW5zOiAlcyIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhX3N0cmluZ1tmb3VuZC5lbmQoKTpdKQogCi0gICAgeWVhciA9IE5vbmUKKyAgICBpc29feWVhciA9IHllYXIgPSBOb25lCiAgICAgbW9udGggPSBkYXkgPSAxCiAgICAgaG91ciA9IG1pbnV0ZSA9IHNlY29uZCA9IGZyYWN0aW9uID0gMAogICAgIHR6ID0gLTEKICAgICB0em9mZnNldCA9IE5vbmUKICAgICAjIERlZmF1bHQgdG8gLTEgdG8gc2lnbmlmeSB0aGF0IHZhbHVlcyBub3Qga25vd247IG5vdCBjcml0aWNhbCB0byBoYXZlLAogICAgICMgdGhvdWdoCi0gICAgd2Vla19vZl95ZWFyID0gLTEKLSAgICB3ZWVrX29mX3llYXJfc3RhcnQgPSAtMQorICAgIGlzb193ZWVrID0gd2Vla19vZl95ZWFyID0gTm9uZQorICAgIHdlZWtfb2ZfeWVhcl9zdGFydCA9IE5vbmUKICAgICAjIHdlZWtkYXkgYW5kIGp1bGlhbiBkZWZhdWx0ZWQgdG8gTm9uZSBzbyBhcyB0byBzaWduYWwgbmVlZCB0byBjYWxjdWxhdGUKICAgICAjIHZhbHVlcwogICAgIHdlZWtkYXkgPSBqdWxpYW4gPSBOb25lCkBAIC0zNzUsNiArMzk0LDggQEAKICAgICAgICAgICAgICAgICB5ZWFyICs9IDE5MDAKICAgICAgICAgZWxpZiBncm91cF9rZXkgPT0gJ1knOgogICAgICAgICAgICAgeWVhciA9IGludChmb3VuZF9kaWN0WydZJ10pCisgICAgICAgIGVsaWYgZ3JvdXBfa2V5ID09ICdHJzoKKyAgICAgICAgICAgIGlzb195ZWFyID0gaW50KGZvdW5kX2RpY3RbJ0cnXSkKICAgICAgICAgZWxpZiBncm91cF9rZXkgPT0gJ20nOgogICAgICAgICAgICAgbW9udGggPSBpbnQoZm91bmRfZGljdFsnbSddKQogICAgICAgICBlbGlmIGdyb3VwX2tleSA9PSAnQic6CkBAIC00MjAsNiArNDQxLDkgQEAKICAgICAgICAgICAgICAgICB3ZWVrZGF5ID0gNgogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICB3ZWVrZGF5IC09IDEKKyAgICAgICAgZWxpZiBncm91cF9rZXkgPT0gJ3UnOgorICAgICAgICAgICAgd2Vla2RheSA9IGludChmb3VuZF9kaWN0Wyd1J10pCisgICAgICAgICAgICB3ZWVrZGF5IC09IDEKICAgICAgICAgZWxpZiBncm91cF9rZXkgPT0gJ2onOgogICAgICAgICAgICAganVsaWFuID0gaW50KGZvdW5kX2RpY3RbJ2onXSkKICAgICAgICAgZWxpZiBncm91cF9rZXkgaW4gKCdVJywgJ1cnKToKQEAgLTQzMCw2ICs0NTQsOCBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAjIFcgc3RhcnRzIHdlZWsgb24gTW9uZGF5LgogICAgICAgICAgICAgICAgIHdlZWtfb2ZfeWVhcl9zdGFydCA9IDAKKyAgICAgICAgZWxpZiBncm91cF9rZXkgPT0gJ1YnOgorICAgICAgICAgICAgaXNvX3dlZWsgPSBpbnQoZm91bmRfZGljdFsnViddKQogICAgICAgICBlbGlmIGdyb3VwX2tleSA9PSAneic6CiAgICAgICAgICAgICB6ID0gZm91bmRfZGljdFsneiddCiAgICAgICAgICAgICB0em9mZnNldCA9IGludCh6WzE6M10pICogNjAgKyBpbnQoelszOjVdKQpAQCAtNDUwLDMyICs0NzYsNjEgQEAKICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgIHR6ID0gdmFsdWUKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgIyBEZWFsIHdpdGggdGhlIGNhc2VzIHdoZXJlIGFtYmlndWl0aWVzIGFyaXplCisgICAgIyBkb24ndCBhc3N1bWUgZGVmYXVsdCB2YWx1ZXMgZm9yIElTTyB3ZWVrL3llYXIKKyAgICBpZiB5ZWFyIGlzIE5vbmUgYW5kIGlzb195ZWFyIGlzIG5vdCBOb25lOgorICAgICAgICBpZiBpc29fd2VlayBpcyBOb25lIG9yIHdlZWtkYXkgaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIklTTyB5ZWFyIGRpcmVjdGl2ZSAnJUcnIG11c3QgYmUgdXNlZCB3aXRoICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRoZSBJU08gd2VlayBkaXJlY3RpdmUgJyVWJyBhbmQgYSB3ZWVrZGF5ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRpcmVjdGl2ZSAoJyVBJywgJyVhJywgJyV3Jywgb3IgJyV1JykuIikKKyAgICAgICAgaWYganVsaWFuIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiRGF5IG9mIHRoZSB5ZWFyIGRpcmVjdGl2ZSAnJWonIGlzIG5vdCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21wYXRpYmxlIHdpdGggSVNPIHllYXIgZGlyZWN0aXZlICclRycuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVzZSAnJVknIGluc3RlYWQuIikKKyAgICBlbGlmIHdlZWtfb2ZfeWVhciBpcyBOb25lIGFuZCBpc29fd2VlayBpcyBub3QgTm9uZToKKyAgICAgICAgaWYgd2Vla2RheSBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSVNPIHdlZWsgZGlyZWN0aXZlICclVicgbXVzdCBiZSB1c2VkIHdpdGggIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGhlIElTTyB5ZWFyIGRpcmVjdGl2ZSAnJUcnIGFuZCBhIHdlZWtkYXkgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGlyZWN0aXZlICgnJUEnLCAnJWEnLCAnJXcnLCBvciAnJXUnKS4iKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSVNPIHdlZWsgZGlyZWN0aXZlICclVicgaXMgaW5jb21wYXRpYmxlIHdpdGggIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGhlIHllYXIgZGlyZWN0aXZlICclWScuIFVzZSB0aGUgSVNPIHllYXIgJyVHJyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnN0ZWFkLiIpCisKICAgICBsZWFwX3llYXJfZml4ID0gRmFsc2UKICAgICBpZiB5ZWFyIGlzIE5vbmUgYW5kIG1vbnRoID09IDIgYW5kIGRheSA9PSAyOToKICAgICAgICAgeWVhciA9IDE5MDQgICMgMTkwNCBpcyBmaXJzdCBsZWFwIHllYXIgb2YgMjB0aCBjZW50dXJ5CiAgICAgICAgIGxlYXBfeWVhcl9maXggPSBUcnVlCiAgICAgZWxpZiB5ZWFyIGlzIE5vbmU6CiAgICAgICAgIHllYXIgPSAxOTAwCisKKwogICAgICMgSWYgd2Uga25vdyB0aGUgd2VlayBvZiB0aGUgeWVhciBhbmQgd2hhdCBkYXkgb2YgdGhhdCB3ZWVrLCB3ZSBjYW4gZmlndXJlCiAgICAgIyBvdXQgdGhlIEp1bGlhbiBkYXkgb2YgdGhlIHllYXIuCi0gICAgaWYganVsaWFuIGlzIE5vbmUgYW5kIHdlZWtfb2ZfeWVhciAhPSAtMSBhbmQgd2Vla2RheSBpcyBub3QgTm9uZToKLSAgICAgICAgd2Vla19zdGFydHNfTW9uID0gVHJ1ZSBpZiB3ZWVrX29mX3llYXJfc3RhcnQgPT0gMCBlbHNlIEZhbHNlCi0gICAgICAgIGp1bGlhbiA9IF9jYWxjX2p1bGlhbl9mcm9tX1Vfb3JfVyh5ZWFyLCB3ZWVrX29mX3llYXIsIHdlZWtkYXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlZWtfc3RhcnRzX01vbikKLSAgICAgICAgaWYganVsaWFuIDw9IDA6CisgICAgaWYganVsaWFuIGlzIE5vbmUgYW5kIHdlZWtkYXkgaXMgbm90IE5vbmU6CisgICAgICAgIGlmIHdlZWtfb2ZfeWVhciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHdlZWtfc3RhcnRzX01vbiA9IFRydWUgaWYgd2Vla19vZl95ZWFyX3N0YXJ0ID09IDAgZWxzZSBGYWxzZQorICAgICAgICAgICAganVsaWFuID0gX2NhbGNfanVsaWFuX2Zyb21fVV9vcl9XKHllYXIsIHdlZWtfb2ZfeWVhciwgd2Vla2RheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlZWtfc3RhcnRzX01vbikKKyAgICAgICAgZWxpZiBpc29feWVhciBpcyBub3QgTm9uZSBhbmQgaXNvX3dlZWsgaXMgbm90IE5vbmU6CisgICAgICAgICAgICB5ZWFyLCBqdWxpYW4gPSBfY2FsY19qdWxpYW5fZnJvbV9WKGlzb195ZWFyLCBpc29fd2Vlaywgd2Vla2RheSArIDEpCisgICAgICAgIGlmIGp1bGlhbiBpcyBub3QgTm9uZSBhbmQganVsaWFuIDw9IDA6CiAgICAgICAgICAgICB5ZWFyIC09IDEKICAgICAgICAgICAgIHlkYXkgPSAzNjYgaWYgY2FsZW5kYXIuaXNsZWFwKHllYXIpIGVsc2UgMzY1CiAgICAgICAgICAgICBqdWxpYW4gKz0geWRheQotICAgICMgQ2Fubm90IHByZS1jYWxjdWxhdGUgZGF0ZXRpbWVfZGF0ZSgpIHNpbmNlIGNhbiBjaGFuZ2UgaW4gSnVsaWFuCi0gICAgIyBjYWxjdWxhdGlvbiBhbmQgdGh1cyBjb3VsZCBoYXZlIGRpZmZlcmVudCB2YWx1ZSBmb3IgdGhlIGRheSBvZiB0aGUgd2VlawotICAgICMgY2FsY3VsYXRpb24uCisKICAgICBpZiBqdWxpYW4gaXMgTm9uZToKKyAgICAgICAgIyBDYW5ub3QgcHJlLWNhbGN1bGF0ZSBkYXRldGltZV9kYXRlKCkgc2luY2UgY2FuIGNoYW5nZSBpbiBKdWxpYW4KKyAgICAgICAgIyBjYWxjdWxhdGlvbiBhbmQgdGh1cyBjb3VsZCBoYXZlIGRpZmZlcmVudCB2YWx1ZSBmb3IgdGhlIGRheSBvZgorICAgICAgICAjIHRoZSB3ZWVrIGNhbGN1bGF0aW9uLgogICAgICAgICAjIE5lZWQgdG8gYWRkIDEgdG8gcmVzdWx0IHNpbmNlIGZpcnN0IGRheSBvZiB0aGUgeWVhciBpcyAxLCBub3QgMC4KICAgICAgICAganVsaWFuID0gZGF0ZXRpbWVfZGF0ZSh5ZWFyLCBtb250aCwgZGF5KS50b29yZGluYWwoKSAtIFwKICAgICAgICAgICAgICAgICAgIGRhdGV0aW1lX2RhdGUoeWVhciwgMSwgMSkudG9vcmRpbmFsKCkgKyAxCi0gICAgZWxzZTogICMgQXNzdW1lIHRoYXQgaWYgdGhleSBib3RoZXJlZCB0byBpbmNsdWRlIEp1bGlhbiBkYXkgaXQgd2lsbAotICAgICAgICAgICAjIGJlIGFjY3VyYXRlLgotICAgICAgICBkYXRldGltZV9yZXN1bHQgPSBkYXRldGltZV9kYXRlLmZyb21vcmRpbmFsKChqdWxpYW4gLSAxKSArIGRhdGV0aW1lX2RhdGUoeWVhciwgMSwgMSkudG9vcmRpbmFsKCkpCisgICAgZWxzZTogICMgQXNzdW1lIHRoYXQgaWYgdGhleSBib3RoZXJlZCB0byBpbmNsdWRlIEp1bGlhbiBkYXkgKG9yIGlmIGl0IHdhcworICAgICAgICAgICAjIGNhbGN1bGF0ZWQgYWJvdmUgd2l0aCB5ZWFyL3dlZWsvd2Vla2RheSkgaXQgd2lsbCBiZSBhY2N1cmF0ZS4KKyAgICAgICAgZGF0ZXRpbWVfcmVzdWx0ID0gZGF0ZXRpbWVfZGF0ZS5mcm9tb3JkaW5hbCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoanVsaWFuIC0gMSkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGV0aW1lX2RhdGUoeWVhciwgMSwgMSkudG9vcmRpbmFsKCkpCiAgICAgICAgIHllYXIgPSBkYXRldGltZV9yZXN1bHQueWVhcgogICAgICAgICBtb250aCA9IGRhdGV0aW1lX3Jlc3VsdC5tb250aAogICAgICAgICBkYXkgPSBkYXRldGltZV9yZXN1bHQuZGF5CmRpZmYgLS1naXQgYS9MaWIvYWlmYy5weSBiL0xpYi9haWZjLnB5CmluZGV4IDdlYmRiZWIuLjY5MmQwYmYgMTAwNjQ0Ci0tLSBhL0xpYi9haWZjLnB5CisrKyBiL0xpYi9haWZjLnB5CkBAIC0yNTcsNiArMjU3LDE1IEBACiBfYWlmY19wYXJhbXMgPSBuYW1lZHR1cGxlKCdfYWlmY19wYXJhbXMnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAnbmNoYW5uZWxzIHNhbXB3aWR0aCBmcmFtZXJhdGUgbmZyYW1lcyBjb21wdHlwZSBjb21wbmFtZScpCiAKK19haWZjX3BhcmFtcy5uY2hhbm5lbHMuX19kb2NfXyA9ICdOdW1iZXIgb2YgYXVkaW8gY2hhbm5lbHMgKDEgZm9yIG1vbm8sIDIgZm9yIHN0ZXJlbyknCitfYWlmY19wYXJhbXMuc2FtcHdpZHRoLl9fZG9jX18gPSAnU2FtcGxlIHdpZHRoIGluIGJ5dGVzJworX2FpZmNfcGFyYW1zLmZyYW1lcmF0ZS5fX2RvY19fID0gJ1NhbXBsaW5nIGZyZXF1ZW5jeScKK19haWZjX3BhcmFtcy5uZnJhbWVzLl9fZG9jX18gPSAnTnVtYmVyIG9mIGF1ZGlvIGZyYW1lcycKK19haWZjX3BhcmFtcy5jb21wdHlwZS5fX2RvY19fID0gJ0NvbXByZXNzaW9uIHR5cGUgKCJOT05FIiBmb3IgQUlGRiBmaWxlcyknCitfYWlmY19wYXJhbXMuY29tcG5hbWUuX19kb2NfXyA9ICgiIiJcCitBIGh1bWFuLXJlYWRhYmxlIHZlcnNpb24gb2YgdGhlIGNvbXByZXNzaW9uIHR5cGUKKygnbm90IGNvbXByZXNzZWQnIGZvciBBSUZGIGZpbGVzKSIiIikKKwogCiBjbGFzcyBBaWZjX3JlYWQ6CiAgICAgIyBWYXJpYWJsZXMgdXNlZCBpbiB0aGlzIGNsYXNzOgpkaWZmIC0tZ2l0IGEvTGliL2FyZ3BhcnNlLnB5IGIvTGliL2FyZ3BhcnNlLnB5CmluZGV4IDlhMDY3MTkuLjIwOWI0ZTkgMTAwNjQ0Ci0tLSBhL0xpYi9hcmdwYXJzZS5weQorKysgYi9MaWIvYXJncGFyc2UucHkKQEAgLTExOCwxMCArMTE4LDE2IEBACiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgICB0eXBlX25hbWUgPSB0eXBlKHNlbGYpLl9fbmFtZV9fCiAgICAgICAgIGFyZ19zdHJpbmdzID0gW10KKyAgICAgICAgc3Rhcl9hcmdzID0ge30KICAgICAgICAgZm9yIGFyZyBpbiBzZWxmLl9nZXRfYXJncygpOgogICAgICAgICAgICAgYXJnX3N0cmluZ3MuYXBwZW5kKHJlcHIoYXJnKSkKICAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIHNlbGYuX2dldF9rd2FyZ3MoKToKLSAgICAgICAgICAgIGFyZ19zdHJpbmdzLmFwcGVuZCgnJXM9JXInICUgKG5hbWUsIHZhbHVlKSkKKyAgICAgICAgICAgIGlmIG5hbWUuaXNpZGVudGlmaWVyKCk6CisgICAgICAgICAgICAgICAgYXJnX3N0cmluZ3MuYXBwZW5kKCclcz0lcicgJSAobmFtZSwgdmFsdWUpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzdGFyX2FyZ3NbbmFtZV0gPSB2YWx1ZQorICAgICAgICBpZiBzdGFyX2FyZ3M6CisgICAgICAgICAgICBhcmdfc3RyaW5ncy5hcHBlbmQoJyoqJXMnICUgcmVwcihzdGFyX2FyZ3MpKQogICAgICAgICByZXR1cm4gJyVzKCVzKScgJSAodHlwZV9uYW1lLCAnLCAnLmpvaW4oYXJnX3N0cmluZ3MpKQogCiAgICAgZGVmIF9nZXRfa3dhcmdzKHNlbGYpOgpAQCAtMjA0LDggKzIxMCw2IEBACiAgICAgICAgICAgICBpZiBzZWxmLnBhcmVudCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBzZWxmLmZvcm1hdHRlci5faW5kZW50KCkKICAgICAgICAgICAgIGpvaW4gPSBzZWxmLmZvcm1hdHRlci5fam9pbl9wYXJ0cwotICAgICAgICAgICAgZm9yIGZ1bmMsIGFyZ3MgaW4gc2VsZi5pdGVtczoKLSAgICAgICAgICAgICAgICBmdW5jKCphcmdzKQogICAgICAgICAgICAgaXRlbV9oZWxwID0gam9pbihbZnVuYygqYXJncykgZm9yIGZ1bmMsIGFyZ3MgaW4gc2VsZi5pdGVtc10pCiAgICAgICAgICAgICBpZiBzZWxmLnBhcmVudCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBzZWxmLmZvcm1hdHRlci5fZGVkZW50KCkKZGlmZiAtLWdpdCBhL0xpYi9hc3QucHkgYi9MaWIvYXN0LnB5CmluZGV4IDAxNzA0NzIuLjE1NmExZjIgMTAwNjQ0Ci0tLSBhL0xpYi9hc3QucHkKKysrIGIvTGliL2FzdC5weQpAQCAtMzUsNiArMzUsOCBAQAogICAgIHJldHVybiBjb21waWxlKHNvdXJjZSwgZmlsZW5hbWUsIG1vZGUsIFB5Q0ZfT05MWV9BU1QpCiAKIAorX05VTV9UWVBFUyA9IChpbnQsIGZsb2F0LCBjb21wbGV4KQorCiBkZWYgbGl0ZXJhbF9ldmFsKG5vZGVfb3Jfc3RyaW5nKToKICAgICAiIiIKICAgICBTYWZlbHkgZXZhbHVhdGUgYW4gZXhwcmVzc2lvbiBub2RlIG9yIGEgc3RyaW5nIGNvbnRhaW5pbmcgYSBQeXRob24KQEAgLTQ3LDcgKzQ5LDkgQEAKICAgICBpZiBpc2luc3RhbmNlKG5vZGVfb3Jfc3RyaW5nLCBFeHByZXNzaW9uKToKICAgICAgICAgbm9kZV9vcl9zdHJpbmcgPSBub2RlX29yX3N0cmluZy5ib2R5CiAgICAgZGVmIF9jb252ZXJ0KG5vZGUpOgotICAgICAgICBpZiBpc2luc3RhbmNlKG5vZGUsIChTdHIsIEJ5dGVzKSk6CisgICAgICAgIGlmIGlzaW5zdGFuY2Uobm9kZSwgQ29uc3RhbnQpOgorICAgICAgICAgICAgcmV0dXJuIG5vZGUudmFsdWUKKyAgICAgICAgZWxpZiBpc2luc3RhbmNlKG5vZGUsIChTdHIsIEJ5dGVzKSk6CiAgICAgICAgICAgICByZXR1cm4gbm9kZS5zCiAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShub2RlLCBOdW0pOgogICAgICAgICAgICAgcmV0dXJuIG5vZGUubgpAQCAtNjIsMjQgKzY2LDIxIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBpbiB6aXAobm9kZS5rZXlzLCBub2RlLnZhbHVlcykpCiAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShub2RlLCBOYW1lQ29uc3RhbnQpOgogICAgICAgICAgICAgcmV0dXJuIG5vZGUudmFsdWUKLSAgICAgICAgZWxpZiBpc2luc3RhbmNlKG5vZGUsIFVuYXJ5T3ApIGFuZCBcCi0gICAgICAgICAgICAgaXNpbnN0YW5jZShub2RlLm9wLCAoVUFkZCwgVVN1YikpIGFuZCBcCi0gICAgICAgICAgICAgaXNpbnN0YW5jZShub2RlLm9wZXJhbmQsIChOdW0sIFVuYXJ5T3AsIEJpbk9wKSk6CisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShub2RlLCBVbmFyeU9wKSBhbmQgaXNpbnN0YW5jZShub2RlLm9wLCAoVUFkZCwgVVN1YikpOgogICAgICAgICAgICAgb3BlcmFuZCA9IF9jb252ZXJ0KG5vZGUub3BlcmFuZCkKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uobm9kZS5vcCwgVUFkZCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICsgb3BlcmFuZAotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gLSBvcGVyYW5kCi0gICAgICAgIGVsaWYgaXNpbnN0YW5jZShub2RlLCBCaW5PcCkgYW5kIFwKLSAgICAgICAgICAgICBpc2luc3RhbmNlKG5vZGUub3AsIChBZGQsIFN1YikpIGFuZCBcCi0gICAgICAgICAgICAgaXNpbnN0YW5jZShub2RlLnJpZ2h0LCAoTnVtLCBVbmFyeU9wLCBCaW5PcCkpIGFuZCBcCi0gICAgICAgICAgICAgaXNpbnN0YW5jZShub2RlLmxlZnQsIChOdW0sIFVuYXJ5T3AsIEJpbk9wKSk6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKG9wZXJhbmQsIF9OVU1fVFlQRVMpOgorICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uobm9kZS5vcCwgVUFkZCk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiArIG9wZXJhbmQKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gLSBvcGVyYW5kCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShub2RlLCBCaW5PcCkgYW5kIGlzaW5zdGFuY2Uobm9kZS5vcCwgKEFkZCwgU3ViKSk6CiAgICAgICAgICAgICBsZWZ0ID0gX2NvbnZlcnQobm9kZS5sZWZ0KQogICAgICAgICAgICAgcmlnaHQgPSBfY29udmVydChub2RlLnJpZ2h0KQotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShub2RlLm9wLCBBZGQpOgotICAgICAgICAgICAgICAgIHJldHVybiBsZWZ0ICsgcmlnaHQKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGxlZnQgLSByaWdodAorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShsZWZ0LCBfTlVNX1RZUEVTKSBhbmQgaXNpbnN0YW5jZShyaWdodCwgX05VTV9UWVBFUyk6CisgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShub2RlLm9wLCBBZGQpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGVmdCArIHJpZ2h0CisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxlZnQgLSByaWdodAogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdtYWxmb3JtZWQgbm9kZSBvciBzdHJpbmc6ICcgKyByZXByKG5vZGUpKQogICAgIHJldHVybiBfY29udmVydChub2RlX29yX3N0cmluZykKIApAQCAtMTk2LDEyICsxOTcsMTkgQEAKICAgICAiIiIKICAgICBpZiBub3QgaXNpbnN0YW5jZShub2RlLCAoQXN5bmNGdW5jdGlvbkRlZiwgRnVuY3Rpb25EZWYsIENsYXNzRGVmLCBNb2R1bGUpKToKICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIlciBjYW4ndCBoYXZlIGRvY3N0cmluZ3MiICUgbm9kZS5fX2NsYXNzX18uX19uYW1lX18pCi0gICAgaWYgbm9kZS5ib2R5IGFuZCBpc2luc3RhbmNlKG5vZGUuYm9keVswXSwgRXhwcikgYW5kIFwKLSAgICAgICBpc2luc3RhbmNlKG5vZGUuYm9keVswXS52YWx1ZSwgU3RyKToKLSAgICAgICAgaWYgY2xlYW46Ci0gICAgICAgICAgICBpbXBvcnQgaW5zcGVjdAotICAgICAgICAgICAgcmV0dXJuIGluc3BlY3QuY2xlYW5kb2Mobm9kZS5ib2R5WzBdLnZhbHVlLnMpCi0gICAgICAgIHJldHVybiBub2RlLmJvZHlbMF0udmFsdWUucworICAgIGlmIG5vdChub2RlLmJvZHkgYW5kIGlzaW5zdGFuY2Uobm9kZS5ib2R5WzBdLCBFeHByKSk6CisgICAgICAgIHJldHVybgorICAgIG5vZGUgPSBub2RlLmJvZHlbMF0udmFsdWUKKyAgICBpZiBpc2luc3RhbmNlKG5vZGUsIFN0cik6CisgICAgICAgIHRleHQgPSBub2RlLnMKKyAgICBlbGlmIGlzaW5zdGFuY2Uobm9kZSwgQ29uc3RhbnQpIGFuZCBpc2luc3RhbmNlKG5vZGUudmFsdWUsIHN0cik6CisgICAgICAgIHRleHQgPSBub2RlLnZhbHVlCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuCisgICAgaWYgY2xlYW46CisgICAgICAgIGltcG9ydCBpbnNwZWN0CisgICAgICAgIHRleHQgPSBpbnNwZWN0LmNsZWFuZG9jKHRleHQpCisgICAgcmV0dXJuIHRleHQKIAogCiBkZWYgd2Fsayhub2RlKToKZGlmZiAtLWdpdCBhL0xpYi9hc3luY2hhdC5weSBiL0xpYi9hc3luY2hhdC5weQppbmRleCBmNzI4ZDFiLi5mYzExNDZhIDEwMDY0NAotLS0gYS9MaWIvYXN5bmNoYXQucHkKKysrIGIvTGliL2FzeW5jaGF0LnB5CkBAIC0yODUsMzUgKzI4NSw2IEBACiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0CiAKIAotY2xhc3MgZmlmbzoKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbGlzdD1Ob25lKToKLSAgICAgICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgICAgIHdhcm5pbmdzLndhcm4oJ2ZpZm8gY2xhc3Mgd2lsbCBiZSByZW1vdmVkIGluIFB5dGhvbiAzLjYnLAotICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQotICAgICAgICBpZiBub3QgbGlzdDoKLSAgICAgICAgICAgIHNlbGYubGlzdCA9IGRlcXVlKCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYubGlzdCA9IGRlcXVlKGxpc3QpCi0KLSAgICBkZWYgX19sZW5fXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIGxlbihzZWxmLmxpc3QpCi0KLSAgICBkZWYgaXNfZW1wdHkoc2VsZik6Ci0gICAgICAgIHJldHVybiBub3Qgc2VsZi5saXN0Ci0KLSAgICBkZWYgZmlyc3Qoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLmxpc3RbMF0KLQotICAgIGRlZiBwdXNoKHNlbGYsIGRhdGEpOgotICAgICAgICBzZWxmLmxpc3QuYXBwZW5kKGRhdGEpCi0KLSAgICBkZWYgcG9wKHNlbGYpOgotICAgICAgICBpZiBzZWxmLmxpc3Q6Ci0gICAgICAgICAgICByZXR1cm4gKDEsIHNlbGYubGlzdC5wb3BsZWZ0KCkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gKDAsIE5vbmUpCi0KLQogIyBHaXZlbiAnaGF5c3RhY2snLCBzZWUgaWYgYW55IHByZWZpeCBvZiAnbmVlZGxlJyBpcyBhdCBpdHMgZW5kLiAgVGhpcwogIyBhc3N1bWVzIGFuIGV4YWN0IG1hdGNoIGhhcyBhbHJlYWR5IGJlZW4gY2hlY2tlZC4gIFJldHVybiB0aGUgbnVtYmVyIG9mCiAjIGNoYXJhY3RlcnMgbWF0Y2hlZC4KZGlmZiAtLWdpdCBhL0xpYi9hc3luY2lvL2Jhc2VfZXZlbnRzLnB5IGIvTGliL2FzeW5jaW8vYmFzZV9ldmVudHMucHkKaW5kZXggNTAxNTNmOC4uMGRmNThjNSAxMDA2NDQKLS0tIGEvTGliL2FzeW5jaW8vYmFzZV9ldmVudHMucHkKKysrIGIvTGliL2FzeW5jaW8vYmFzZV9ldmVudHMucHkKQEAgLTU3LDcgKzU3LDcgQEAKIAogZGVmIF9mb3JtYXRfaGFuZGxlKGhhbmRsZSk6CiAgICAgY2IgPSBoYW5kbGUuX2NhbGxiYWNrCi0gICAgaWYgaW5zcGVjdC5pc21ldGhvZChjYikgYW5kIGlzaW5zdGFuY2UoY2IuX19zZWxmX18sIHRhc2tzLlRhc2spOgorICAgIGlmIGlzaW5zdGFuY2UoZ2V0YXR0cihjYiwgJ19fc2VsZl9fJywgTm9uZSksIHRhc2tzLlRhc2spOgogICAgICAgICAjIGZvcm1hdCB0aGUgdGFzawogICAgICAgICByZXR1cm4gcmVwcihjYi5fX3NlbGZfXykKICAgICBlbHNlOgpAQCAtNTA1LDcgKzUwNSw4IEBACiAgICAgaWYgY29tcGF0LlBZMzQ6CiAgICAgICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgICAgICAgaWYgbm90IHNlbGYuaXNfY2xvc2VkKCk6Ci0gICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigidW5jbG9zZWQgZXZlbnQgbG9vcCAlciIgJSBzZWxmLCBSZXNvdXJjZVdhcm5pbmcpCisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigidW5jbG9zZWQgZXZlbnQgbG9vcCAlciIgJSBzZWxmLCBSZXNvdXJjZVdhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U9c2VsZikKICAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5pc19ydW5uaW5nKCk6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQogCmRpZmYgLS1naXQgYS9MaWIvYXN5bmNpby9iYXNlX2Z1dHVyZXMucHkgYi9MaWIvYXN5bmNpby9iYXNlX2Z1dHVyZXMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDEyNTlhMAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9hc3luY2lvL2Jhc2VfZnV0dXJlcy5weQpAQCAtMCwwICsxLDcxIEBACitfX2FsbF9fID0gW10KKworaW1wb3J0IGNvbmN1cnJlbnQuZnV0dXJlcy5fYmFzZQoraW1wb3J0IHJlcHJsaWIKKworZnJvbSAuIGltcG9ydCBldmVudHMKKworRXJyb3IgPSBjb25jdXJyZW50LmZ1dHVyZXMuX2Jhc2UuRXJyb3IKK0NhbmNlbGxlZEVycm9yID0gY29uY3VycmVudC5mdXR1cmVzLkNhbmNlbGxlZEVycm9yCitUaW1lb3V0RXJyb3IgPSBjb25jdXJyZW50LmZ1dHVyZXMuVGltZW91dEVycm9yCisKKworY2xhc3MgSW52YWxpZFN0YXRlRXJyb3IoRXJyb3IpOgorICAgICIiIlRoZSBvcGVyYXRpb24gaXMgbm90IGFsbG93ZWQgaW4gdGhpcyBzdGF0ZS4iIiIKKworCisjIFN0YXRlcyBmb3IgRnV0dXJlLgorX1BFTkRJTkcgPSAnUEVORElORycKK19DQU5DRUxMRUQgPSAnQ0FOQ0VMTEVEJworX0ZJTklTSEVEID0gJ0ZJTklTSEVEJworCisKK2RlZiBpc2Z1dHVyZShvYmopOgorICAgICIiIkNoZWNrIGZvciBhIEZ1dHVyZS4KKworICAgIFRoaXMgcmV0dXJucyBUcnVlIHdoZW4gb2JqIGlzIGEgRnV0dXJlIGluc3RhbmNlIG9yIGlzIGFkdmVydGlzaW5nCisgICAgaXRzZWxmIGFzIGR1Y2stdHlwZSBjb21wYXRpYmxlIGJ5IHNldHRpbmcgX2FzeW5jaW9fZnV0dXJlX2Jsb2NraW5nLgorICAgIFNlZSBjb21tZW50IGluIEZ1dHVyZSBmb3IgbW9yZSBkZXRhaWxzLgorICAgICIiIgorICAgIHJldHVybiAoaGFzYXR0cihvYmouX19jbGFzc19fLCAnX2FzeW5jaW9fZnV0dXJlX2Jsb2NraW5nJykgYW5kCisgICAgICAgICAgICBvYmouX2FzeW5jaW9fZnV0dXJlX2Jsb2NraW5nIGlzIG5vdCBOb25lKQorCisKK2RlZiBfZm9ybWF0X2NhbGxiYWNrcyhjYik6CisgICAgIiIiaGVscGVyIGZ1bmN0aW9uIGZvciBGdXR1cmUuX19yZXByX18iIiIKKyAgICBzaXplID0gbGVuKGNiKQorICAgIGlmIG5vdCBzaXplOgorICAgICAgICBjYiA9ICcnCisKKyAgICBkZWYgZm9ybWF0X2NiKGNhbGxiYWNrKToKKyAgICAgICAgcmV0dXJuIGV2ZW50cy5fZm9ybWF0X2NhbGxiYWNrX3NvdXJjZShjYWxsYmFjaywgKCkpCisKKyAgICBpZiBzaXplID09IDE6CisgICAgICAgIGNiID0gZm9ybWF0X2NiKGNiWzBdKQorICAgIGVsaWYgc2l6ZSA9PSAyOgorICAgICAgICBjYiA9ICd7fSwge30nLmZvcm1hdChmb3JtYXRfY2IoY2JbMF0pLCBmb3JtYXRfY2IoY2JbMV0pKQorICAgIGVsaWYgc2l6ZSA+IDI6CisgICAgICAgIGNiID0gJ3t9LCA8e30gbW9yZT4sIHt9Jy5mb3JtYXQoZm9ybWF0X2NiKGNiWzBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplIC0gMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRfY2IoY2JbLTFdKSkKKyAgICByZXR1cm4gJ2NiPVslc10nICUgY2IKKworCitkZWYgX2Z1dHVyZV9yZXByX2luZm8oZnV0dXJlKToKKyAgICAjIChGdXR1cmUpIC0+IHN0cgorICAgICIiImhlbHBlciBmdW5jdGlvbiBmb3IgRnV0dXJlLl9fcmVwcl9fIiIiCisgICAgaW5mbyA9IFtmdXR1cmUuX3N0YXRlLmxvd2VyKCldCisgICAgaWYgZnV0dXJlLl9zdGF0ZSA9PSBfRklOSVNIRUQ6CisgICAgICAgIGlmIGZ1dHVyZS5fZXhjZXB0aW9uIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgaW5mby5hcHBlbmQoJ2V4Y2VwdGlvbj17IXJ9Jy5mb3JtYXQoZnV0dXJlLl9leGNlcHRpb24pKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyB1c2UgcmVwcmxpYiB0byBsaW1pdCB0aGUgbGVuZ3RoIG9mIHRoZSBvdXRwdXQsIGVzcGVjaWFsbHkKKyAgICAgICAgICAgICMgZm9yIHZlcnkgbG9uZyBzdHJpbmdzCisgICAgICAgICAgICByZXN1bHQgPSByZXBybGliLnJlcHIoZnV0dXJlLl9yZXN1bHQpCisgICAgICAgICAgICBpbmZvLmFwcGVuZCgncmVzdWx0PXt9Jy5mb3JtYXQocmVzdWx0KSkKKyAgICBpZiBmdXR1cmUuX2NhbGxiYWNrczoKKyAgICAgICAgaW5mby5hcHBlbmQoX2Zvcm1hdF9jYWxsYmFja3MoZnV0dXJlLl9jYWxsYmFja3MpKQorICAgIGlmIGZ1dHVyZS5fc291cmNlX3RyYWNlYmFjazoKKyAgICAgICAgZnJhbWUgPSBmdXR1cmUuX3NvdXJjZV90cmFjZWJhY2tbLTFdCisgICAgICAgIGluZm8uYXBwZW5kKCdjcmVhdGVkIGF0ICVzOiVzJyAlIChmcmFtZVswXSwgZnJhbWVbMV0pKQorICAgIHJldHVybiBpbmZvCmRpZmYgLS1naXQgYS9MaWIvYXN5bmNpby9iYXNlX3N1YnByb2Nlc3MucHkgYi9MaWIvYXN5bmNpby9iYXNlX3N1YnByb2Nlc3MucHkKaW5kZXggMjM3NDJhMS4uYTAwZDlkNSAxMDA2NDQKLS0tIGEvTGliL2FzeW5jaW8vYmFzZV9zdWJwcm9jZXNzLnB5CisrKyBiL0xpYi9hc3luY2lvL2Jhc2Vfc3VicHJvY2Vzcy5weQpAQCAtMTI3LDcgKzEyNyw4IEBACiAgICAgaWYgY29tcGF0LlBZMzQ6CiAgICAgICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgICAgICAgaWYgbm90IHNlbGYuX2Nsb3NlZDoKLSAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1bmNsb3NlZCB0cmFuc3BvcnQgJXIiICUgc2VsZiwgUmVzb3VyY2VXYXJuaW5nKQorICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInVuY2xvc2VkIHRyYW5zcG9ydCAlciIgJSBzZWxmLCBSZXNvdXJjZVdhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U9c2VsZikKICAgICAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKIAogICAgIGRlZiBnZXRfcGlkKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL2FzeW5jaW8vYmFzZV90YXNrcy5weSBiL0xpYi9hc3luY2lvL2Jhc2VfdGFza3MucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWYzNDQzNAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9hc3luY2lvL2Jhc2VfdGFza3MucHkKQEAgLTAsMCArMSw3NiBAQAoraW1wb3J0IGxpbmVjYWNoZQoraW1wb3J0IHRyYWNlYmFjaworCitmcm9tIC4gaW1wb3J0IGJhc2VfZnV0dXJlcworZnJvbSAuIGltcG9ydCBjb3JvdXRpbmVzCisKKworZGVmIF90YXNrX3JlcHJfaW5mbyh0YXNrKToKKyAgICBpbmZvID0gYmFzZV9mdXR1cmVzLl9mdXR1cmVfcmVwcl9pbmZvKHRhc2spCisKKyAgICBpZiB0YXNrLl9tdXN0X2NhbmNlbDoKKyAgICAgICAgIyByZXBsYWNlIHN0YXR1cworICAgICAgICBpbmZvWzBdID0gJ2NhbmNlbGxpbmcnCisKKyAgICBjb3JvID0gY29yb3V0aW5lcy5fZm9ybWF0X2Nvcm91dGluZSh0YXNrLl9jb3JvKQorICAgIGluZm8uaW5zZXJ0KDEsICdjb3JvPTwlcz4nICUgY29ybykKKworICAgIGlmIHRhc2suX2Z1dF93YWl0ZXIgaXMgbm90IE5vbmU6CisgICAgICAgIGluZm8uaW5zZXJ0KDIsICd3YWl0X2Zvcj0lcicgJSB0YXNrLl9mdXRfd2FpdGVyKQorICAgIHJldHVybiBpbmZvCisKKworZGVmIF90YXNrX2dldF9zdGFjayh0YXNrLCBsaW1pdCk6CisgICAgZnJhbWVzID0gW10KKyAgICB0cnk6CisgICAgICAgICMgJ2FzeW5jIGRlZicgY29yb3V0aW5lcworICAgICAgICBmID0gdGFzay5fY29yby5jcl9mcmFtZQorICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgZiA9IHRhc2suX2Nvcm8uZ2lfZnJhbWUKKyAgICBpZiBmIGlzIG5vdCBOb25lOgorICAgICAgICB3aGlsZSBmIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgaWYgbGltaXQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgaWYgbGltaXQgPD0gMDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBsaW1pdCAtPSAxCisgICAgICAgICAgICBmcmFtZXMuYXBwZW5kKGYpCisgICAgICAgICAgICBmID0gZi5mX2JhY2sKKyAgICAgICAgZnJhbWVzLnJldmVyc2UoKQorICAgIGVsaWYgdGFzay5fZXhjZXB0aW9uIGlzIG5vdCBOb25lOgorICAgICAgICB0YiA9IHRhc2suX2V4Y2VwdGlvbi5fX3RyYWNlYmFja19fCisgICAgICAgIHdoaWxlIHRiIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgaWYgbGltaXQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgaWYgbGltaXQgPD0gMDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBsaW1pdCAtPSAxCisgICAgICAgICAgICBmcmFtZXMuYXBwZW5kKHRiLnRiX2ZyYW1lKQorICAgICAgICAgICAgdGIgPSB0Yi50Yl9uZXh0CisgICAgcmV0dXJuIGZyYW1lcworCisKK2RlZiBfdGFza19wcmludF9zdGFjayh0YXNrLCBsaW1pdCwgZmlsZSk6CisgICAgZXh0cmFjdGVkX2xpc3QgPSBbXQorICAgIGNoZWNrZWQgPSBzZXQoKQorICAgIGZvciBmIGluIHRhc2suZ2V0X3N0YWNrKGxpbWl0PWxpbWl0KToKKyAgICAgICAgbGluZW5vID0gZi5mX2xpbmVubworICAgICAgICBjbyA9IGYuZl9jb2RlCisgICAgICAgIGZpbGVuYW1lID0gY28uY29fZmlsZW5hbWUKKyAgICAgICAgbmFtZSA9IGNvLmNvX25hbWUKKyAgICAgICAgaWYgZmlsZW5hbWUgbm90IGluIGNoZWNrZWQ6CisgICAgICAgICAgICBjaGVja2VkLmFkZChmaWxlbmFtZSkKKyAgICAgICAgICAgIGxpbmVjYWNoZS5jaGVja2NhY2hlKGZpbGVuYW1lKQorICAgICAgICBsaW5lID0gbGluZWNhY2hlLmdldGxpbmUoZmlsZW5hbWUsIGxpbmVubywgZi5mX2dsb2JhbHMpCisgICAgICAgIGV4dHJhY3RlZF9saXN0LmFwcGVuZCgoZmlsZW5hbWUsIGxpbmVubywgbmFtZSwgbGluZSkpCisgICAgZXhjID0gdGFzay5fZXhjZXB0aW9uCisgICAgaWYgbm90IGV4dHJhY3RlZF9saXN0OgorICAgICAgICBwcmludCgnTm8gc3RhY2sgZm9yICVyJyAlIHRhc2ssIGZpbGU9ZmlsZSkKKyAgICBlbGlmIGV4YyBpcyBub3QgTm9uZToKKyAgICAgICAgcHJpbnQoJ1RyYWNlYmFjayBmb3IgJXIgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6JyAlIHRhc2ssCisgICAgICAgICAgICAgIGZpbGU9ZmlsZSkKKyAgICBlbHNlOgorICAgICAgICBwcmludCgnU3RhY2sgZm9yICVyIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOicgJSB0YXNrLAorICAgICAgICAgICAgICBmaWxlPWZpbGUpCisgICAgdHJhY2ViYWNrLnByaW50X2xpc3QoZXh0cmFjdGVkX2xpc3QsIGZpbGU9ZmlsZSkKKyAgICBpZiBleGMgaXMgbm90IE5vbmU6CisgICAgICAgIGZvciBsaW5lIGluIHRyYWNlYmFjay5mb3JtYXRfZXhjZXB0aW9uX29ubHkoZXhjLl9fY2xhc3NfXywgZXhjKToKKyAgICAgICAgICAgIHByaW50KGxpbmUsIGZpbGU9ZmlsZSwgZW5kPScnKQpkaWZmIC0tZ2l0IGEvTGliL2FzeW5jaW8vY29yb3V0aW5lcy5weSBiL0xpYi9hc3luY2lvL2Nvcm91dGluZXMucHkKaW5kZXggNWJkZWNlYi4uMDhlOTQ0MSAxMDA2NDQKLS0tIGEvTGliL2FzeW5jaW8vY29yb3V0aW5lcy5weQorKysgYi9MaWIvYXN5bmNpby9jb3JvdXRpbmVzLnB5CkBAIC0xMSw3ICsxMSw3IEBACiAKIGZyb20gLiBpbXBvcnQgY29tcGF0CiBmcm9tIC4gaW1wb3J0IGV2ZW50cwotZnJvbSAuIGltcG9ydCBmdXR1cmVzCitmcm9tIC4gaW1wb3J0IGJhc2VfZnV0dXJlcwogZnJvbSAubG9nIGltcG9ydCBsb2dnZXIKIAogCkBAIC0yMDgsNyArMjA4LDcgQEAKICAgICAgICAgQGZ1bmN0b29scy53cmFwcyhmdW5jKQogICAgICAgICBkZWYgY29ybygqYXJncywgKiprdyk6CiAgICAgICAgICAgICByZXMgPSBmdW5jKCphcmdzLCAqKmt3KQotICAgICAgICAgICAgaWYgKGZ1dHVyZXMuaXNmdXR1cmUocmVzKSBvciBpbnNwZWN0LmlzZ2VuZXJhdG9yKHJlcykgb3IKKyAgICAgICAgICAgIGlmIChiYXNlX2Z1dHVyZXMuaXNmdXR1cmUocmVzKSBvciBpbnNwZWN0LmlzZ2VuZXJhdG9yKHJlcykgb3IKICAgICAgICAgICAgICAgICBpc2luc3RhbmNlKHJlcywgQ29yb1dyYXBwZXIpKToKICAgICAgICAgICAgICAgICByZXMgPSB5aWVsZCBmcm9tIHJlcwogICAgICAgICAgICAgZWxpZiBfQXdhaXRhYmxlQUJDIGlzIG5vdCBOb25lOgpkaWZmIC0tZ2l0IGEvTGliL2FzeW5jaW8vZnV0dXJlcy5weSBiL0xpYi9hc3luY2lvL2Z1dHVyZXMucHkKaW5kZXggOWNhOGQ4NC4uZDExZDI4OSAxMDA2NDQKLS0tIGEvTGliL2FzeW5jaW8vZnV0dXJlcy5weQorKysgYi9MaWIvYXN5bmNpby9mdXR1cmVzLnB5CkBAIC0xLDM1ICsxLDMyIEBACiAiIiJBIEZ1dHVyZSBjbGFzcyBzaW1pbGFyIHRvIHRoZSBvbmUgaW4gUEVQIDMxNDguIiIiCiAKLV9fYWxsX18gPSBbJ0NhbmNlbGxlZEVycm9yJywgJ1RpbWVvdXRFcnJvcicsCi0gICAgICAgICAgICdJbnZhbGlkU3RhdGVFcnJvcicsCi0gICAgICAgICAgICdGdXR1cmUnLCAnd3JhcF9mdXR1cmUnLCAnaXNmdXR1cmUnLAotICAgICAgICAgICBdCitfX2FsbF9fID0gWydDYW5jZWxsZWRFcnJvcicsICdUaW1lb3V0RXJyb3InLCAnSW52YWxpZFN0YXRlRXJyb3InLAorICAgICAgICAgICAnRnV0dXJlJywgJ3dyYXBfZnV0dXJlJywgJ2lzZnV0dXJlJ10KIAotaW1wb3J0IGNvbmN1cnJlbnQuZnV0dXJlcy5fYmFzZQoraW1wb3J0IGNvbmN1cnJlbnQuZnV0dXJlcwogaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCByZXBybGliCiBpbXBvcnQgc3lzCiBpbXBvcnQgdHJhY2ViYWNrCiAKK2Zyb20gLiBpbXBvcnQgYmFzZV9mdXR1cmVzCiBmcm9tIC4gaW1wb3J0IGNvbXBhdAogZnJvbSAuIGltcG9ydCBldmVudHMKIAotIyBTdGF0ZXMgZm9yIEZ1dHVyZS4KLV9QRU5ESU5HID0gJ1BFTkRJTkcnCi1fQ0FOQ0VMTEVEID0gJ0NBTkNFTExFRCcKLV9GSU5JU0hFRCA9ICdGSU5JU0hFRCcKIAotRXJyb3IgPSBjb25jdXJyZW50LmZ1dHVyZXMuX2Jhc2UuRXJyb3IKLUNhbmNlbGxlZEVycm9yID0gY29uY3VycmVudC5mdXR1cmVzLkNhbmNlbGxlZEVycm9yCi1UaW1lb3V0RXJyb3IgPSBjb25jdXJyZW50LmZ1dHVyZXMuVGltZW91dEVycm9yCitDYW5jZWxsZWRFcnJvciA9IGJhc2VfZnV0dXJlcy5DYW5jZWxsZWRFcnJvcgorSW52YWxpZFN0YXRlRXJyb3IgPSBiYXNlX2Z1dHVyZXMuSW52YWxpZFN0YXRlRXJyb3IKK1RpbWVvdXRFcnJvciA9IGJhc2VfZnV0dXJlcy5UaW1lb3V0RXJyb3IKK2lzZnV0dXJlID0gYmFzZV9mdXR1cmVzLmlzZnV0dXJlCisKKworX1BFTkRJTkcgPSBiYXNlX2Z1dHVyZXMuX1BFTkRJTkcKK19DQU5DRUxMRUQgPSBiYXNlX2Z1dHVyZXMuX0NBTkNFTExFRAorX0ZJTklTSEVEID0gYmFzZV9mdXR1cmVzLl9GSU5JU0hFRAorCiAKIFNUQUNLX0RFQlVHID0gbG9nZ2luZy5ERUJVRyAtIDEgICMgaGVhdnktZHV0eSBkZWJ1Z2dpbmcKIAogCi1jbGFzcyBJbnZhbGlkU3RhdGVFcnJvcihFcnJvcik6Ci0gICAgIiIiVGhlIG9wZXJhdGlvbiBpcyBub3QgYWxsb3dlZCBpbiB0aGlzIHN0YXRlLiIiIgotCi0KIGNsYXNzIF9UcmFjZWJhY2tMb2dnZXI6CiAgICAgIiIiSGVscGVyIHRvIGxvZyBhIHRyYWNlYmFjayB1cG9uIGRlc3RydWN0aW9uIGlmIG5vdCBjbGVhcmVkLgogCkBAIC0xMTAsMTcgKzEwNyw2IEBACiAgICAgICAgICAgICBzZWxmLmxvb3AuY2FsbF9leGNlcHRpb25faGFuZGxlcih7J21lc3NhZ2UnOiBtc2d9KQogCiAKLWRlZiBpc2Z1dHVyZShvYmopOgotICAgICIiIkNoZWNrIGZvciBhIEZ1dHVyZS4KLQotICAgIFRoaXMgcmV0dXJucyBUcnVlIHdoZW4gb2JqIGlzIGEgRnV0dXJlIGluc3RhbmNlIG9yIGlzIGFkdmVydGlzaW5nCi0gICAgaXRzZWxmIGFzIGR1Y2stdHlwZSBjb21wYXRpYmxlIGJ5IHNldHRpbmcgX2FzeW5jaW9fZnV0dXJlX2Jsb2NraW5nLgotICAgIFNlZSBjb21tZW50IGluIEZ1dHVyZSBmb3IgbW9yZSBkZXRhaWxzLgotICAgICIiIgotICAgIHJldHVybiAoaGFzYXR0cihvYmouX19jbGFzc19fLCAnX2FzeW5jaW9fZnV0dXJlX2Jsb2NraW5nJykgYW5kCi0gICAgICAgICAgICBvYmouX2FzeW5jaW9fZnV0dXJlX2Jsb2NraW5nIGlzIG5vdCBOb25lKQotCi0KIGNsYXNzIEZ1dHVyZToKICAgICAiIiJUaGlzIGNsYXNzIGlzICphbG1vc3QqIGNvbXBhdGlibGUgd2l0aCBjb25jdXJyZW50LmZ1dHVyZXMuRnV0dXJlLgogCkBAIC0xNzMsNDUgKzE1OSwxMCBAQAogICAgICAgICBpZiBzZWxmLl9sb29wLmdldF9kZWJ1ZygpOgogICAgICAgICAgICAgc2VsZi5fc291cmNlX3RyYWNlYmFjayA9IHRyYWNlYmFjay5leHRyYWN0X3N0YWNrKHN5cy5fZ2V0ZnJhbWUoMSkpCiAKLSAgICBkZWYgX19mb3JtYXRfY2FsbGJhY2tzKHNlbGYpOgotICAgICAgICBjYiA9IHNlbGYuX2NhbGxiYWNrcwotICAgICAgICBzaXplID0gbGVuKGNiKQotICAgICAgICBpZiBub3Qgc2l6ZToKLSAgICAgICAgICAgIGNiID0gJycKLQotICAgICAgICBkZWYgZm9ybWF0X2NiKGNhbGxiYWNrKToKLSAgICAgICAgICAgIHJldHVybiBldmVudHMuX2Zvcm1hdF9jYWxsYmFja19zb3VyY2UoY2FsbGJhY2ssICgpKQotCi0gICAgICAgIGlmIHNpemUgPT0gMToKLSAgICAgICAgICAgIGNiID0gZm9ybWF0X2NiKGNiWzBdKQotICAgICAgICBlbGlmIHNpemUgPT0gMjoKLSAgICAgICAgICAgIGNiID0gJ3t9LCB7fScuZm9ybWF0KGZvcm1hdF9jYihjYlswXSksIGZvcm1hdF9jYihjYlsxXSkpCi0gICAgICAgIGVsaWYgc2l6ZSA+IDI6Ci0gICAgICAgICAgICBjYiA9ICd7fSwgPHt9IG1vcmU+LCB7fScuZm9ybWF0KGZvcm1hdF9jYihjYlswXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUtMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0X2NiKGNiWy0xXSkpCi0gICAgICAgIHJldHVybiAnY2I9WyVzXScgJSBjYgotCi0gICAgZGVmIF9yZXByX2luZm8oc2VsZik6Ci0gICAgICAgIGluZm8gPSBbc2VsZi5fc3RhdGUubG93ZXIoKV0KLSAgICAgICAgaWYgc2VsZi5fc3RhdGUgPT0gX0ZJTklTSEVEOgotICAgICAgICAgICAgaWYgc2VsZi5fZXhjZXB0aW9uIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIGluZm8uYXBwZW5kKCdleGNlcHRpb249eyFyfScuZm9ybWF0KHNlbGYuX2V4Y2VwdGlvbikpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgdXNlIHJlcHJsaWIgdG8gbGltaXQgdGhlIGxlbmd0aCBvZiB0aGUgb3V0cHV0LCBlc3BlY2lhbGx5Ci0gICAgICAgICAgICAgICAgIyBmb3IgdmVyeSBsb25nIHN0cmluZ3MKLSAgICAgICAgICAgICAgICByZXN1bHQgPSByZXBybGliLnJlcHIoc2VsZi5fcmVzdWx0KQotICAgICAgICAgICAgICAgIGluZm8uYXBwZW5kKCdyZXN1bHQ9e30nLmZvcm1hdChyZXN1bHQpKQotICAgICAgICBpZiBzZWxmLl9jYWxsYmFja3M6Ci0gICAgICAgICAgICBpbmZvLmFwcGVuZChzZWxmLl9fZm9ybWF0X2NhbGxiYWNrcygpKQotICAgICAgICBpZiBzZWxmLl9zb3VyY2VfdHJhY2ViYWNrOgotICAgICAgICAgICAgZnJhbWUgPSBzZWxmLl9zb3VyY2VfdHJhY2ViYWNrWy0xXQotICAgICAgICAgICAgaW5mby5hcHBlbmQoJ2NyZWF0ZWQgYXQgJXM6JXMnICUgKGZyYW1lWzBdLCBmcmFtZVsxXSkpCi0gICAgICAgIHJldHVybiBpbmZvCisgICAgX3JlcHJfaW5mbyA9IGJhc2VfZnV0dXJlcy5fZnV0dXJlX3JlcHJfaW5mbwogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICBpbmZvID0gc2VsZi5fcmVwcl9pbmZvKCkKLSAgICAgICAgcmV0dXJuICc8JXMgJXM+JyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgJyAnLmpvaW4oaW5mbykpCisgICAgICAgIHJldHVybiAnPCVzICVzPicgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sICcgJy5qb2luKHNlbGYuX3JlcHJfaW5mbygpKSkKIAogICAgICMgT24gUHl0aG9uIDMuMyBhbmQgb2xkZXIsIG9iamVjdHMgd2l0aCBhIGRlc3RydWN0b3IgcGFydCBvZiBhIHJlZmVyZW5jZQogICAgICMgY3ljbGUgYXJlIG5ldmVyIGRlc3Ryb3llZC4gSXQncyBub3QgbW9yZSB0aGUgY2FzZSBvbiBQeXRob24gMy40IHRoYW5rcwpAQCAtMzg1LDYgKzMzNiwxMCBAQAogICAgICAgICBfX2F3YWl0X18gPSBfX2l0ZXJfXyAjIG1ha2UgY29tcGF0aWJsZSB3aXRoICdhd2FpdCcgZXhwcmVzc2lvbgogCiAKKyMgTmVlZGVkIGZvciB0ZXN0aW5nIHB1cnBvc2VzLgorX1B5RnV0dXJlID0gRnV0dXJlCisKKwogZGVmIF9zZXRfcmVzdWx0X3VubGVzc19jYW5jZWxsZWQoZnV0LCByZXN1bHQpOgogICAgICIiIkhlbHBlciBzZXR0aW5nIHRoZSByZXN1bHQgb25seSBpZiB0aGUgZnV0dXJlIHdhcyBub3QgY2FuY2VsbGVkLiIiIgogICAgIGlmIGZ1dC5jYW5jZWxsZWQoKToKQEAgLTQ3NywzICs0MzIsMTIgQEAKICAgICBuZXdfZnV0dXJlID0gbG9vcC5jcmVhdGVfZnV0dXJlKCkKICAgICBfY2hhaW5fZnV0dXJlKGZ1dHVyZSwgbmV3X2Z1dHVyZSkKICAgICByZXR1cm4gbmV3X2Z1dHVyZQorCisKK3RyeToKKyAgICBpbXBvcnQgX2FzeW5jaW8KK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBwYXNzCitlbHNlOgorICAgICMgX0NGdXR1cmUgaXMgbmVlZGVkIGZvciB0ZXN0cy4KKyAgICBGdXR1cmUgPSBfQ0Z1dHVyZSA9IF9hc3luY2lvLkZ1dHVyZQpkaWZmIC0tZ2l0IGEvTGliL2FzeW5jaW8vcHJvYWN0b3JfZXZlbnRzLnB5IGIvTGliL2FzeW5jaW8vcHJvYWN0b3JfZXZlbnRzLnB5CmluZGV4IGZlZjMyMDUuLmZmMTI4NzcgMTAwNjQ0Ci0tLSBhL0xpYi9hc3luY2lvL3Byb2FjdG9yX2V2ZW50cy5weQorKysgYi9MaWIvYXN5bmNpby9wcm9hY3Rvcl9ldmVudHMucHkKQEAgLTkyLDcgKzkyLDggQEAKICAgICBpZiBjb21wYXQuUFkzNDoKICAgICAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgICAgICBpZiBzZWxmLl9zb2NrIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInVuY2xvc2VkIHRyYW5zcG9ydCAlciIgJSBzZWxmLCBSZXNvdXJjZVdhcm5pbmcpCisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigidW5jbG9zZWQgdHJhbnNwb3J0ICVyIiAlIHNlbGYsIFJlc291cmNlV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZT1zZWxmKQogICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQogCiAgICAgZGVmIF9mYXRhbF9lcnJvcihzZWxmLCBleGMsIG1lc3NhZ2U9J0ZhdGFsIGVycm9yIG9uIHBpcGUgdHJhbnNwb3J0Jyk6CmRpZmYgLS1naXQgYS9MaWIvYXN5bmNpby9zZWxlY3Rvcl9ldmVudHMucHkgYi9MaWIvYXN5bmNpby9zZWxlY3Rvcl9ldmVudHMucHkKaW5kZXggMTJkMzU3Yi4uOWRiZTU1MCAxMDA2NDQKLS0tIGEvTGliL2FzeW5jaW8vc2VsZWN0b3JfZXZlbnRzLnB5CisrKyBiL0xpYi9hc3luY2lvL3NlbGVjdG9yX2V2ZW50cy5weQpAQCAtNjI3LDcgKzYyNyw4IEBACiAgICAgaWYgY29tcGF0LlBZMzQ6CiAgICAgICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgICAgICAgaWYgc2VsZi5fc29jayBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1bmNsb3NlZCB0cmFuc3BvcnQgJXIiICUgc2VsZiwgUmVzb3VyY2VXYXJuaW5nKQorICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInVuY2xvc2VkIHRyYW5zcG9ydCAlciIgJSBzZWxmLCBSZXNvdXJjZVdhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U9c2VsZikKICAgICAgICAgICAgICAgICBzZWxmLl9zb2NrLmNsb3NlKCkKIAogICAgIGRlZiBfZmF0YWxfZXJyb3Ioc2VsZiwgZXhjLCBtZXNzYWdlPSdGYXRhbCBlcnJvciBvbiB0cmFuc3BvcnQnKToKZGlmZiAtLWdpdCBhL0xpYi9hc3luY2lvL3NzbHByb3RvLnB5IGIvTGliL2FzeW5jaW8vc3NscHJvdG8ucHkKaW5kZXggYzJjNGI5NS4uN2FkMjhkNiAxMDA2NDQKLS0tIGEvTGliL2FzeW5jaW8vc3NscHJvdG8ucHkKKysrIGIvTGliL2FzeW5jaW8vc3NscHJvdG8ucHkKQEAgLTMzMSw3ICszMzEsOCBAQAogICAgIGlmIGNvbXBhdC5QWTM0OgogICAgICAgICBkZWYgX19kZWxfXyhzZWxmKToKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9jbG9zZWQ6Ci0gICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigidW5jbG9zZWQgdHJhbnNwb3J0ICVyIiAlIHNlbGYsIFJlc291cmNlV2FybmluZykKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1bmNsb3NlZCB0cmFuc3BvcnQgJXIiICUgc2VsZiwgUmVzb3VyY2VXYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlPXNlbGYpCiAgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCiAKICAgICBkZWYgcGF1c2VfcmVhZGluZyhzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi9hc3luY2lvL3Rhc2tzLnB5IGIvTGliL2FzeW5jaW8vdGFza3MucHkKaW5kZXggODg1MmFhNS4uNWE0M2VmMiAxMDA2NDQKLS0tIGEvTGliL2FzeW5jaW8vdGFza3MucHkKKysrIGIvTGliL2FzeW5jaW8vdGFza3MucHkKQEAgLTksMTEgKzksMTAgQEAKIGltcG9ydCBjb25jdXJyZW50LmZ1dHVyZXMKIGltcG9ydCBmdW5jdG9vbHMKIGltcG9ydCBpbnNwZWN0Ci1pbXBvcnQgbGluZWNhY2hlCi1pbXBvcnQgdHJhY2ViYWNrCiBpbXBvcnQgd2FybmluZ3MKIGltcG9ydCB3ZWFrcmVmCiAKK2Zyb20gLiBpbXBvcnQgYmFzZV90YXNrcwogZnJvbSAuIGltcG9ydCBjb21wYXQKIGZyb20gLiBpbXBvcnQgY29yb3V0aW5lcwogZnJvbSAuIGltcG9ydCBldmVudHMKQEAgLTkzLDE4ICs5Miw3IEBACiAgICAgICAgICAgICBmdXR1cmVzLkZ1dHVyZS5fX2RlbF9fKHNlbGYpCiAKICAgICBkZWYgX3JlcHJfaW5mbyhzZWxmKToKLSAgICAgICAgaW5mbyA9IHN1cGVyKCkuX3JlcHJfaW5mbygpCi0KLSAgICAgICAgaWYgc2VsZi5fbXVzdF9jYW5jZWw6Ci0gICAgICAgICAgICAjIHJlcGxhY2Ugc3RhdHVzCi0gICAgICAgICAgICBpbmZvWzBdID0gJ2NhbmNlbGxpbmcnCi0KLSAgICAgICAgY29ybyA9IGNvcm91dGluZXMuX2Zvcm1hdF9jb3JvdXRpbmUoc2VsZi5fY29ybykKLSAgICAgICAgaW5mby5pbnNlcnQoMSwgJ2Nvcm89PCVzPicgJSBjb3JvKQotCi0gICAgICAgIGlmIHNlbGYuX2Z1dF93YWl0ZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBpbmZvLmluc2VydCgyLCAnd2FpdF9mb3I9JXInICUgc2VsZi5fZnV0X3dhaXRlcikKLSAgICAgICAgcmV0dXJuIGluZm8KKyAgICAgICAgcmV0dXJuIGJhc2VfdGFza3MuX3Rhc2tfcmVwcl9pbmZvKHNlbGYpCiAKICAgICBkZWYgZ2V0X3N0YWNrKHNlbGYsICosIGxpbWl0PU5vbmUpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIGxpc3Qgb2Ygc3RhY2sgZnJhbWVzIGZvciB0aGlzIHRhc2sncyBjb3JvdXRpbmUuCkBAIC0xMjcsMzEgKzExNSw3IEBACiAgICAgICAgIEZvciByZWFzb25zIGJleW9uZCBvdXIgY29udHJvbCwgb25seSBvbmUgc3RhY2sgZnJhbWUgaXMKICAgICAgICAgcmV0dXJuZWQgZm9yIGEgc3VzcGVuZGVkIGNvcm91dGluZS4KICAgICAgICAgIiIiCi0gICAgICAgIGZyYW1lcyA9IFtdCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgICMgJ2FzeW5jIGRlZicgY29yb3V0aW5lcwotICAgICAgICAgICAgZiA9IHNlbGYuX2Nvcm8uY3JfZnJhbWUKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgZiA9IHNlbGYuX2Nvcm8uZ2lfZnJhbWUKLSAgICAgICAgaWYgZiBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHdoaWxlIGYgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgaWYgbGltaXQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGxpbWl0IDw9IDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICBsaW1pdCAtPSAxCi0gICAgICAgICAgICAgICAgZnJhbWVzLmFwcGVuZChmKQotICAgICAgICAgICAgICAgIGYgPSBmLmZfYmFjawotICAgICAgICAgICAgZnJhbWVzLnJldmVyc2UoKQotICAgICAgICBlbGlmIHNlbGYuX2V4Y2VwdGlvbiBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHRiID0gc2VsZi5fZXhjZXB0aW9uLl9fdHJhY2ViYWNrX18KLSAgICAgICAgICAgIHdoaWxlIHRiIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIGlmIGxpbWl0IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICBpZiBsaW1pdCA8PSAwOgotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgbGltaXQgLT0gMQotICAgICAgICAgICAgICAgIGZyYW1lcy5hcHBlbmQodGIudGJfZnJhbWUpCi0gICAgICAgICAgICAgICAgdGIgPSB0Yi50Yl9uZXh0Ci0gICAgICAgIHJldHVybiBmcmFtZXMKKyAgICAgICAgcmV0dXJuIGJhc2VfdGFza3MuX3Rhc2tfZ2V0X3N0YWNrKHNlbGYsIGxpbWl0KQogCiAgICAgZGVmIHByaW50X3N0YWNrKHNlbGYsICosIGxpbWl0PU5vbmUsIGZpbGU9Tm9uZSk6CiAgICAgICAgICIiIlByaW50IHRoZSBzdGFjayBvciB0cmFjZWJhY2sgZm9yIHRoaXMgdGFzaydzIGNvcm91dGluZS4KQEAgLTE2MiwzMSArMTI2LDcgQEAKICAgICAgICAgdG8gd2hpY2ggdGhlIG91dHB1dCBpcyB3cml0dGVuOyBieSBkZWZhdWx0IG91dHB1dCBpcyB3cml0dGVuCiAgICAgICAgIHRvIHN5cy5zdGRlcnIuCiAgICAgICAgICIiIgotICAgICAgICBleHRyYWN0ZWRfbGlzdCA9IFtdCi0gICAgICAgIGNoZWNrZWQgPSBzZXQoKQotICAgICAgICBmb3IgZiBpbiBzZWxmLmdldF9zdGFjayhsaW1pdD1saW1pdCk6Ci0gICAgICAgICAgICBsaW5lbm8gPSBmLmZfbGluZW5vCi0gICAgICAgICAgICBjbyA9IGYuZl9jb2RlCi0gICAgICAgICAgICBmaWxlbmFtZSA9IGNvLmNvX2ZpbGVuYW1lCi0gICAgICAgICAgICBuYW1lID0gY28uY29fbmFtZQotICAgICAgICAgICAgaWYgZmlsZW5hbWUgbm90IGluIGNoZWNrZWQ6Ci0gICAgICAgICAgICAgICAgY2hlY2tlZC5hZGQoZmlsZW5hbWUpCi0gICAgICAgICAgICAgICAgbGluZWNhY2hlLmNoZWNrY2FjaGUoZmlsZW5hbWUpCi0gICAgICAgICAgICBsaW5lID0gbGluZWNhY2hlLmdldGxpbmUoZmlsZW5hbWUsIGxpbmVubywgZi5mX2dsb2JhbHMpCi0gICAgICAgICAgICBleHRyYWN0ZWRfbGlzdC5hcHBlbmQoKGZpbGVuYW1lLCBsaW5lbm8sIG5hbWUsIGxpbmUpKQotICAgICAgICBleGMgPSBzZWxmLl9leGNlcHRpb24KLSAgICAgICAgaWYgbm90IGV4dHJhY3RlZF9saXN0OgotICAgICAgICAgICAgcHJpbnQoJ05vIHN0YWNrIGZvciAlcicgJSBzZWxmLCBmaWxlPWZpbGUpCi0gICAgICAgIGVsaWYgZXhjIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcHJpbnQoJ1RyYWNlYmFjayBmb3IgJXIgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6JyAlIHNlbGYsCi0gICAgICAgICAgICAgICAgICBmaWxlPWZpbGUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwcmludCgnU3RhY2sgZm9yICVyIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOicgJSBzZWxmLAotICAgICAgICAgICAgICAgICAgZmlsZT1maWxlKQotICAgICAgICB0cmFjZWJhY2sucHJpbnRfbGlzdChleHRyYWN0ZWRfbGlzdCwgZmlsZT1maWxlKQotICAgICAgICBpZiBleGMgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBmb3IgbGluZSBpbiB0cmFjZWJhY2suZm9ybWF0X2V4Y2VwdGlvbl9vbmx5KGV4Yy5fX2NsYXNzX18sIGV4Yyk6Ci0gICAgICAgICAgICAgICAgcHJpbnQobGluZSwgZmlsZT1maWxlLCBlbmQ9JycpCisgICAgICAgIHJldHVybiBiYXNlX3Rhc2tzLl90YXNrX3ByaW50X3N0YWNrKHNlbGYsIGxpbWl0LCBmaWxlKQogCiAgICAgZGVmIGNhbmNlbChzZWxmKToKICAgICAgICAgIiIiUmVxdWVzdCB0aGF0IHRoaXMgdGFzayBjYW5jZWwgaXRzZWxmLgpAQCAtMzE2LDYgKzI1NiwxOCBAQAogICAgICAgICBzZWxmID0gTm9uZSAgIyBOZWVkZWQgdG8gYnJlYWsgY3ljbGVzIHdoZW4gYW4gZXhjZXB0aW9uIG9jY3Vycy4KIAogCitfUHlUYXNrID0gVGFzaworCisKK3RyeToKKyAgICBpbXBvcnQgX2FzeW5jaW8KK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBwYXNzCitlbHNlOgorICAgICMgX0NUYXNrIGlzIG5lZWRlZCBmb3IgdGVzdHMuCisgICAgVGFzayA9IF9DVGFzayA9IF9hc3luY2lvLlRhc2sKKworCiAjIHdhaXQoKSBhbmQgYXNfY29tcGxldGVkKCkgc2ltaWxhciB0byB0aG9zZSBpbiBQRVAgMzE0OC4KIAogRklSU1RfQ09NUExFVEVEID0gY29uY3VycmVudC5mdXR1cmVzLkZJUlNUX0NPTVBMRVRFRApkaWZmIC0tZ2l0IGEvTGliL2FzeW5jaW8vdGVzdF91dGlscy5weSBiL0xpYi9hc3luY2lvL3Rlc3RfdXRpbHMucHkKaW5kZXggOWQzMjgyMi4uOTllMzgzOSAxMDA2NDQKLS0tIGEvTGliL2FzeW5jaW8vdGVzdF91dGlscy5weQorKysgYi9MaWIvYXN5bmNpby90ZXN0X3V0aWxzLnB5CkBAIC0xMTksMTAgKzExOSwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdCcsICd0ZXN0X2FzeW5jaW8nKQogICAgICAgICBrZXlmaWxlID0gb3MucGF0aC5qb2luKGhlcmUsICdzc2xfa2V5LnBlbScpCiAgICAgICAgIGNlcnRmaWxlID0gb3MucGF0aC5qb2luKGhlcmUsICdzc2xfY2VydC5wZW0nKQotICAgICAgICBzc29jayA9IHNzbC53cmFwX3NvY2tldChyZXF1ZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlmaWxlPWtleWZpbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRmaWxlPWNlcnRmaWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfc2lkZT1UcnVlKQorICAgICAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoKQorICAgICAgICBjb250ZXh0LmxvYWRfY2VydF9jaGFpbihjZXJ0ZmlsZSwga2V5ZmlsZSkKKworICAgICAgICBzc29jayA9IGNvbnRleHQud3JhcF9zb2NrZXQocmVxdWVzdCwgc2VydmVyX3NpZGU9VHJ1ZSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5SZXF1ZXN0SGFuZGxlckNsYXNzKHNzb2NrLCBjbGllbnRfYWRkcmVzcywgc2VsZikKICAgICAgICAgICAgIHNzb2NrLmNsb3NlKCkKZGlmZiAtLWdpdCBhL0xpYi9hc3luY2lvL3VuaXhfZXZlbnRzLnB5IGIvTGliL2FzeW5jaW8vdW5peF9ldmVudHMucHkKaW5kZXggNzc5MDUzNC4uMjgwNmVhOCAxMDA2NDQKLS0tIGEvTGliL2FzeW5jaW8vdW5peF9ldmVudHMucHkKKysrIGIvTGliL2FzeW5jaW8vdW5peF9ldmVudHMucHkKQEAgLTQxOSw3ICs0MTksOCBAQAogICAgIGlmIGNvbXBhdC5QWTM0OgogICAgICAgICBkZWYgX19kZWxfXyhzZWxmKToKICAgICAgICAgICAgIGlmIHNlbGYuX3BpcGUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigidW5jbG9zZWQgdHJhbnNwb3J0ICVyIiAlIHNlbGYsIFJlc291cmNlV2FybmluZykKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1bmNsb3NlZCB0cmFuc3BvcnQgJXIiICUgc2VsZiwgUmVzb3VyY2VXYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlPXNlbGYpCiAgICAgICAgICAgICAgICAgc2VsZi5fcGlwZS5jbG9zZSgpCiAKICAgICBkZWYgX2ZhdGFsX2Vycm9yKHNlbGYsIGV4YywgbWVzc2FnZT0nRmF0YWwgZXJyb3Igb24gcGlwZSB0cmFuc3BvcnQnKToKQEAgLTYxOSw3ICs2MjAsOCBAQAogICAgIGlmIGNvbXBhdC5QWTM0OgogICAgICAgICBkZWYgX19kZWxfXyhzZWxmKToKICAgICAgICAgICAgIGlmIHNlbGYuX3BpcGUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigidW5jbG9zZWQgdHJhbnNwb3J0ICVyIiAlIHNlbGYsIFJlc291cmNlV2FybmluZykKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1bmNsb3NlZCB0cmFuc3BvcnQgJXIiICUgc2VsZiwgUmVzb3VyY2VXYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlPXNlbGYpCiAgICAgICAgICAgICAgICAgc2VsZi5fcGlwZS5jbG9zZSgpCiAKICAgICBkZWYgYWJvcnQoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvYXN5bmNpby93aW5kb3dzX2V2ZW50cy5weSBiL0xpYi9hc3luY2lvL3dpbmRvd3NfZXZlbnRzLnB5CmluZGV4IDY2OGZlMTQuLmI3NzdkZDAgMTAwNjQ0Ci0tLSBhL0xpYi9hc3luY2lvL3dpbmRvd3NfZXZlbnRzLnB5CisrKyBiL0xpYi9hc3luY2lvL3dpbmRvd3NfZXZlbnRzLnB5CkBAIC0xNzEsOCArMTcxLDEzIEBACiAgICAgZGVmIGNhbmNlbChzZWxmKToKICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJfV2FpdENhbmNlbEZ1dHVyZSBtdXN0IG5vdCBiZSBjYW5jZWxsZWQiKQogCi0gICAgZGVmIF9zY2hlZHVsZV9jYWxsYmFja3Moc2VsZik6Ci0gICAgICAgIHN1cGVyKF9XYWl0Q2FuY2VsRnV0dXJlLCBzZWxmKS5fc2NoZWR1bGVfY2FsbGJhY2tzKCkKKyAgICBkZWYgc2V0X3Jlc3VsdChzZWxmLCByZXN1bHQpOgorICAgICAgICBzdXBlcigpLnNldF9yZXN1bHQocmVzdWx0KQorICAgICAgICBpZiBzZWxmLl9kb25lX2NhbGxiYWNrIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fZG9uZV9jYWxsYmFjayhzZWxmKQorCisgICAgZGVmIHNldF9leGNlcHRpb24oc2VsZiwgZXhjZXB0aW9uKToKKyAgICAgICAgc3VwZXIoKS5zZXRfZXhjZXB0aW9uKGV4Y2VwdGlvbikKICAgICAgICAgaWYgc2VsZi5fZG9uZV9jYWxsYmFjayBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHNlbGYuX2RvbmVfY2FsbGJhY2soc2VsZikKIApkaWZmIC0tZ2l0IGEvTGliL2FzeW5jaW8vd2luZG93c191dGlscy5weSBiL0xpYi9hc3luY2lvL3dpbmRvd3NfdXRpbHMucHkKaW5kZXggODcwY2QxMy4uN2M2M2ZiOSAxMDA2NDQKLS0tIGEvTGliL2FzeW5jaW8vd2luZG93c191dGlscy5weQorKysgYi9MaWIvYXN5bmNpby93aW5kb3dzX3V0aWxzLnB5CkBAIC0xNTksNyArMTU5LDggQEAKIAogICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgICBpZiBzZWxmLl9oYW5kbGUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1bmNsb3NlZCAlciIgJSBzZWxmLCBSZXNvdXJjZVdhcm5pbmcpCisgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1bmNsb3NlZCAlciIgJSBzZWxmLCBSZXNvdXJjZVdhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZT1zZWxmKQogICAgICAgICAgICAgc2VsZi5jbG9zZSgpCiAKICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL2FzeW5jb3JlLnB5IGIvTGliL2FzeW5jb3JlLnB5CmluZGV4IDNiNTFmMGYuLjcwNWU0MDYgMTAwNjQ0Ci0tLSBhL0xpYi9hc3luY29yZS5weQorKysgYi9MaWIvYXN5bmNvcmUucHkKQEAgLTMzMyw3ICszMzMsNyBAQAogICAgICAgICBzZWxmLmNvbm5lY3RpbmcgPSBUcnVlCiAgICAgICAgIGVyciA9IHNlbGYuc29ja2V0LmNvbm5lY3RfZXgoYWRkcmVzcykKICAgICAgICAgaWYgZXJyIGluIChFSU5QUk9HUkVTUywgRUFMUkVBRFksIEVXT1VMREJMT0NLKSBcCi0gICAgICAgIG9yIGVyciA9PSBFSU5WQUwgYW5kIG9zLm5hbWUgaW4gKCdudCcsICdjZScpOgorICAgICAgICBvciBlcnIgPT0gRUlOVkFMIGFuZCBvcy5uYW1lID09ICdudCc6CiAgICAgICAgICAgICBzZWxmLmFkZHIgPSBhZGRyZXNzCiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgaWYgZXJyIGluICgwLCBFSVNDT05OKToKQEAgLTU5NSw3ICs1OTUsOCBAQAogCiAgICAgICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgICAgICAgaWYgc2VsZi5mZCA+PSAwOgotICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInVuY2xvc2VkIGZpbGUgJXIiICUgc2VsZiwgUmVzb3VyY2VXYXJuaW5nKQorICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInVuY2xvc2VkIGZpbGUgJXIiICUgc2VsZiwgUmVzb3VyY2VXYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlPXNlbGYpCiAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKIAogICAgICAgICBkZWYgcmVjdihzZWxmLCAqYXJncyk6CmRpZmYgLS1naXQgYS9MaWIvYmFzZTY0LnB5IGIvTGliL2Jhc2U2NC5weQppbmRleCBhZGFlYzFkLi41OGY2YWQ2IDEwMDc1NQotLS0gYS9MaWIvYmFzZTY0LnB5CisrKyBiL0xpYi9iYXNlNjQucHkKQEAgLTU1LDggKzU1LDcgQEAKICAgICBhbHRlcm5hdGl2ZSBhbHBoYWJldCBmb3IgdGhlICcrJyBhbmQgJy8nIGNoYXJhY3RlcnMuICBUaGlzIGFsbG93cyBhbgogICAgIGFwcGxpY2F0aW9uIHRvIGUuZy4gZ2VuZXJhdGUgdXJsIG9yIGZpbGVzeXN0ZW0gc2FmZSBCYXNlNjQgc3RyaW5ncy4KICAgICAiIiIKLSAgICAjIFN0cmlwIG9mZiB0aGUgdHJhaWxpbmcgbmV3bGluZQotICAgIGVuY29kZWQgPSBiaW5hc2NpaS5iMmFfYmFzZTY0KHMpWzotMV0KKyAgICBlbmNvZGVkID0gYmluYXNjaWkuYjJhX2Jhc2U2NChzLCBuZXdsaW5lPUZhbHNlKQogICAgIGlmIGFsdGNoYXJzIGlzIG5vdCBOb25lOgogICAgICAgICBhc3NlcnQgbGVuKGFsdGNoYXJzKSA9PSAyLCByZXByKGFsdGNoYXJzKQogICAgICAgICByZXR1cm4gZW5jb2RlZC50cmFuc2xhdGUoYnl0ZXMubWFrZXRyYW5zKGInKy8nLCBhbHRjaGFycykpCkBAIC0xNTYsNyArMTU1LDcgQEAKICAgICBsZWZ0b3ZlciA9IGxlbihzKSAlIDUKICAgICAjIFBhZCB0aGUgbGFzdCBxdWFudHVtIHdpdGggemVybyBiaXRzIGlmIG5lY2Vzc2FyeQogICAgIGlmIGxlZnRvdmVyOgotICAgICAgICBzID0gcyArIGJ5dGVzKDUgLSBsZWZ0b3ZlcikgICMgRG9uJ3QgdXNlICs9ICEKKyAgICAgICAgcyA9IHMgKyBiJ1wwJyAqICg1IC0gbGVmdG92ZXIpICAjIERvbid0IHVzZSArPSAhCiAgICAgZW5jb2RlZCA9IGJ5dGVhcnJheSgpCiAgICAgZnJvbV9ieXRlcyA9IGludC5mcm9tX2J5dGVzCiAgICAgYjMydGFiMiA9IF9iMzJ0YWIyCmRpZmYgLS1naXQgYS9MaWIvYnoyLnB5IGIvTGliL2J6Mi5weQppbmRleCBiYzc4YzU0Li42ZjU2MzI4IDEwMDY0NAotLS0gYS9MaWIvYnoyLnB5CisrKyBiL0xpYi9iejIucHkKQEAgLTExLDYgKzExLDcgQEAKIAogZnJvbSBidWlsdGlucyBpbXBvcnQgb3BlbiBhcyBfYnVpbHRpbl9vcGVuCiBpbXBvcnQgaW8KK2ltcG9ydCBvcwogaW1wb3J0IHdhcm5pbmdzCiBpbXBvcnQgX2NvbXByZXNzaW9uCiAKQEAgLTQyLDkgKzQzLDkgQEAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZW5hbWUsIG1vZGU9InIiLCBidWZmZXJpbmc9Tm9uZSwgY29tcHJlc3NsZXZlbD05KToKICAgICAgICAgIiIiT3BlbiBhIGJ6aXAyLWNvbXByZXNzZWQgZmlsZS4KIAotICAgICAgICBJZiBmaWxlbmFtZSBpcyBhIHN0ciBvciBieXRlcyBvYmplY3QsIGl0IGdpdmVzIHRoZSBuYW1lCi0gICAgICAgIG9mIHRoZSBmaWxlIHRvIGJlIG9wZW5lZC4gT3RoZXJ3aXNlLCBpdCBzaG91bGQgYmUgYSBmaWxlIG9iamVjdCwKLSAgICAgICAgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIHJlYWQgb3Igd3JpdGUgdGhlIGNvbXByZXNzZWQgZGF0YS4KKyAgICAgICAgSWYgZmlsZW5hbWUgaXMgYSBzdHIsIGJ5dGVzLCBvciBQYXRoTGlrZSBvYmplY3QsIGl0IGdpdmVzIHRoZQorICAgICAgICBuYW1lIG9mIHRoZSBmaWxlIHRvIGJlIG9wZW5lZC4gT3RoZXJ3aXNlLCBpdCBzaG91bGQgYmUgYSBmaWxlCisgICAgICAgIG9iamVjdCwgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIHJlYWQgb3Igd3JpdGUgdGhlIGNvbXByZXNzZWQgZGF0YS4KIAogICAgICAgICBtb2RlIGNhbiBiZSAncicgZm9yIHJlYWRpbmcgKGRlZmF1bHQpLCAndycgZm9yIChvdmVyKXdyaXRpbmcsCiAgICAgICAgICd4JyBmb3IgY3JlYXRpbmcgZXhjbHVzaXZlbHksIG9yICdhJyBmb3IgYXBwZW5kaW5nLiBUaGVzZSBjYW4KQEAgLTkxLDcgKzkyLDcgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgbW9kZTogJXIiICUgKG1vZGUsKSkKIAotICAgICAgICBpZiBpc2luc3RhbmNlKGZpbGVuYW1lLCAoc3RyLCBieXRlcykpOgorICAgICAgICBpZiBpc2luc3RhbmNlKGZpbGVuYW1lLCAoc3RyLCBieXRlcywgb3MuUGF0aExpa2UpKToKICAgICAgICAgICAgIHNlbGYuX2ZwID0gX2J1aWx0aW5fb3BlbihmaWxlbmFtZSwgbW9kZSkKICAgICAgICAgICAgIHNlbGYuX2Nsb3NlZnAgPSBUcnVlCiAgICAgICAgICAgICBzZWxmLl9tb2RlID0gbW9kZV9jb2RlCkBAIC05OSw3ICsxMDAsNyBAQAogICAgICAgICAgICAgc2VsZi5fZnAgPSBmaWxlbmFtZQogICAgICAgICAgICAgc2VsZi5fbW9kZSA9IG1vZGVfY29kZQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJmaWxlbmFtZSBtdXN0IGJlIGEgc3RyIG9yIGJ5dGVzIG9iamVjdCwgb3IgYSBmaWxlIikKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZmlsZW5hbWUgbXVzdCBiZSBhIHN0ciwgYnl0ZXMsIGZpbGUgb3IgUGF0aExpa2Ugb2JqZWN0IikKIAogICAgICAgICBpZiBzZWxmLl9tb2RlID09IF9NT0RFX1JFQUQ6CiAgICAgICAgICAgICByYXcgPSBfY29tcHJlc3Npb24uRGVjb21wcmVzc1JlYWRlcihzZWxmLl9mcCwKQEAgLTI4OSw4ICsyOTAsOSBAQAogICAgICAgICAgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUsIG5ld2xpbmU9Tm9uZSk6CiAgICAgIiIiT3BlbiBhIGJ6aXAyLWNvbXByZXNzZWQgZmlsZSBpbiBiaW5hcnkgb3IgdGV4dCBtb2RlLgogCi0gICAgVGhlIGZpbGVuYW1lIGFyZ3VtZW50IGNhbiBiZSBhbiBhY3R1YWwgZmlsZW5hbWUgKGEgc3RyIG9yIGJ5dGVzCi0gICAgb2JqZWN0KSwgb3IgYW4gZXhpc3RpbmcgZmlsZSBvYmplY3QgdG8gcmVhZCBmcm9tIG9yIHdyaXRlIHRvLgorICAgIFRoZSBmaWxlbmFtZSBhcmd1bWVudCBjYW4gYmUgYW4gYWN0dWFsIGZpbGVuYW1lIChhIHN0ciwgYnl0ZXMsIG9yCisgICAgUGF0aExpa2Ugb2JqZWN0KSwgb3IgYW4gZXhpc3RpbmcgZmlsZSBvYmplY3QgdG8gcmVhZCBmcm9tIG9yIHdyaXRlCisgICAgdG8uCiAKICAgICBUaGUgbW9kZSBhcmd1bWVudCBjYW4gYmUgInIiLCAicmIiLCAidyIsICJ3YiIsICJ4IiwgInhiIiwgImEiIG9yCiAgICAgImFiIiBmb3IgYmluYXJ5IG1vZGUsIG9yICJydCIsICJ3dCIsICJ4dCIgb3IgImF0IiBmb3IgdGV4dCBtb2RlLgpkaWZmIC0tZ2l0IGEvTGliL2NhbGVuZGFyLnB5IGIvTGliL2NhbGVuZGFyLnB5CmluZGV4IDc2Y2Y4ZGUuLjA3NTk0ZjMgMTAwNjQ0Ci0tLSBhL0xpYi9jYWxlbmRhci5weQorKysgYi9MaWIvY2FsZW5kYXIucHkKQEAgLTEzLDcgKzEzLDkgQEAKIF9fYWxsX18gPSBbIklsbGVnYWxNb250aEVycm9yIiwgIklsbGVnYWxXZWVrZGF5RXJyb3IiLCAic2V0Zmlyc3R3ZWVrZGF5IiwKICAgICAgICAgICAgImZpcnN0d2Vla2RheSIsICJpc2xlYXAiLCAibGVhcGRheXMiLCAid2Vla2RheSIsICJtb250aHJhbmdlIiwKICAgICAgICAgICAgIm1vbnRoY2FsZW5kYXIiLCAicHJtb250aCIsICJtb250aCIsICJwcmNhbCIsICJjYWxlbmRhciIsCi0gICAgICAgICAgICJ0aW1lZ20iLCAibW9udGhfbmFtZSIsICJtb250aF9hYmJyIiwgImRheV9uYW1lIiwgImRheV9hYmJyIl0KKyAgICAgICAgICAgInRpbWVnbSIsICJtb250aF9uYW1lIiwgIm1vbnRoX2FiYnIiLCAiZGF5X25hbWUiLCAiZGF5X2FiYnIiLAorICAgICAgICAgICAiQ2FsZW5kYXIiLCAiVGV4dENhbGVuZGFyIiwgIkhUTUxDYWxlbmRhciIsICJMb2NhbGVUZXh0Q2FsZW5kYXIiLAorICAgICAgICAgICAiTG9jYWxlSFRNTENhbGVuZGFyIiwgIndlZWtoZWFkZXIiXQogCiAjIEV4Y2VwdGlvbiByYWlzZWQgZm9yIGJhZCBpbnB1dCAod2l0aCBzdHJpbmcgcGFyYW1ldGVyIGZvciBkZXRhaWxzKQogZXJyb3IgPSBWYWx1ZUVycm9yCkBAIC02MDQsNTEgKzYwNiw2MyBAQAogCiAKIGRlZiBtYWluKGFyZ3MpOgotICAgIGltcG9ydCBvcHRwYXJzZQotICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcih1c2FnZT0idXNhZ2U6ICVwcm9nIFtvcHRpb25zXSBbeWVhciBbbW9udGhdXSIpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oCisgICAgaW1wb3J0IGFyZ3BhcnNlCisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoKQorICAgIHRleHRncm91cCA9IHBhcnNlci5hZGRfYXJndW1lbnRfZ3JvdXAoJ3RleHQgb25seSBhcmd1bWVudHMnKQorICAgIGh0bWxncm91cCA9IHBhcnNlci5hZGRfYXJndW1lbnRfZ3JvdXAoJ2h0bWwgb25seSBhcmd1bWVudHMnKQorICAgIHRleHRncm91cC5hZGRfYXJndW1lbnQoCiAgICAgICAgICItdyIsICItLXdpZHRoIiwKLSAgICAgICAgZGVzdD0id2lkdGgiLCB0eXBlPSJpbnQiLCBkZWZhdWx0PTIsCi0gICAgICAgIGhlbHA9IndpZHRoIG9mIGRhdGUgY29sdW1uIChkZWZhdWx0IDIsIHRleHQgb25seSkiCisgICAgICAgIHR5cGU9aW50LCBkZWZhdWx0PTIsCisgICAgICAgIGhlbHA9IndpZHRoIG9mIGRhdGUgY29sdW1uIChkZWZhdWx0IDIpIgogICAgICkKLSAgICBwYXJzZXIuYWRkX29wdGlvbigKKyAgICB0ZXh0Z3JvdXAuYWRkX2FyZ3VtZW50KAogICAgICAgICAiLWwiLCAiLS1saW5lcyIsCi0gICAgICAgIGRlc3Q9ImxpbmVzIiwgdHlwZT0iaW50IiwgZGVmYXVsdD0xLAotICAgICAgICBoZWxwPSJudW1iZXIgb2YgbGluZXMgZm9yIGVhY2ggd2VlayAoZGVmYXVsdCAxLCB0ZXh0IG9ubHkpIgorICAgICAgICB0eXBlPWludCwgZGVmYXVsdD0xLAorICAgICAgICBoZWxwPSJudW1iZXIgb2YgbGluZXMgZm9yIGVhY2ggd2VlayAoZGVmYXVsdCAxKSIKICAgICApCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oCisgICAgdGV4dGdyb3VwLmFkZF9hcmd1bWVudCgKICAgICAgICAgIi1zIiwgIi0tc3BhY2luZyIsCi0gICAgICAgIGRlc3Q9InNwYWNpbmciLCB0eXBlPSJpbnQiLCBkZWZhdWx0PTYsCi0gICAgICAgIGhlbHA9InNwYWNpbmcgYmV0d2VlbiBtb250aHMgKGRlZmF1bHQgNiwgdGV4dCBvbmx5KSIKKyAgICAgICAgdHlwZT1pbnQsIGRlZmF1bHQ9NiwKKyAgICAgICAgaGVscD0ic3BhY2luZyBiZXR3ZWVuIG1vbnRocyAoZGVmYXVsdCA2KSIKICAgICApCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oCisgICAgdGV4dGdyb3VwLmFkZF9hcmd1bWVudCgKICAgICAgICAgIi1tIiwgIi0tbW9udGhzIiwKLSAgICAgICAgZGVzdD0ibW9udGhzIiwgdHlwZT0iaW50IiwgZGVmYXVsdD0zLAotICAgICAgICBoZWxwPSJtb250aHMgcGVyIHJvdyAoZGVmYXVsdCAzLCB0ZXh0IG9ubHkpIgorICAgICAgICB0eXBlPWludCwgZGVmYXVsdD0zLAorICAgICAgICBoZWxwPSJtb250aHMgcGVyIHJvdyAoZGVmYXVsdCAzKSIKICAgICApCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oCisgICAgaHRtbGdyb3VwLmFkZF9hcmd1bWVudCgKICAgICAgICAgIi1jIiwgIi0tY3NzIiwKLSAgICAgICAgZGVzdD0iY3NzIiwgZGVmYXVsdD0iY2FsZW5kYXIuY3NzIiwKLSAgICAgICAgaGVscD0iQ1NTIHRvIHVzZSBmb3IgcGFnZSAoaHRtbCBvbmx5KSIKKyAgICAgICAgZGVmYXVsdD0iY2FsZW5kYXIuY3NzIiwKKyAgICAgICAgaGVscD0iQ1NTIHRvIHVzZSBmb3IgcGFnZSIKICAgICApCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKICAgICAgICAgIi1MIiwgIi0tbG9jYWxlIiwKLSAgICAgICAgZGVzdD0ibG9jYWxlIiwgZGVmYXVsdD1Ob25lLAorICAgICAgICBkZWZhdWx0PU5vbmUsCiAgICAgICAgIGhlbHA9ImxvY2FsZSB0byBiZSB1c2VkIGZyb20gbW9udGggYW5kIHdlZWtkYXkgbmFtZXMiCiAgICAgKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKAorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCiAgICAgICAgICItZSIsICItLWVuY29kaW5nIiwKLSAgICAgICAgZGVzdD0iZW5jb2RpbmciLCBkZWZhdWx0PU5vbmUsCi0gICAgICAgIGhlbHA9IkVuY29kaW5nIHRvIHVzZSBmb3Igb3V0cHV0LiIKKyAgICAgICAgZGVmYXVsdD1Ob25lLAorICAgICAgICBoZWxwPSJlbmNvZGluZyB0byB1c2UgZm9yIG91dHB1dCIKICAgICApCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKICAgICAgICAgIi10IiwgIi0tdHlwZSIsCi0gICAgICAgIGRlc3Q9InR5cGUiLCBkZWZhdWx0PSJ0ZXh0IiwKKyAgICAgICAgZGVmYXVsdD0idGV4dCIsCiAgICAgICAgIGNob2ljZXM9KCJ0ZXh0IiwgImh0bWwiKSwKICAgICAgICAgaGVscD0ib3V0cHV0IHR5cGUgKHRleHQgb3IgaHRtbCkiCiAgICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICJ5ZWFyIiwKKyAgICAgICAgbmFyZ3M9Jz8nLCB0eXBlPWludCwKKyAgICAgICAgaGVscD0ieWVhciBudW1iZXIgKDEtOTk5OSkiCisgICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICJtb250aCIsCisgICAgICAgIG5hcmdzPSc/JywgdHlwZT1pbnQsCisgICAgICAgIGhlbHA9Im1vbnRoIG51bWJlciAoMS0xMiwgdGV4dCBvbmx5KSIKKyAgICApCiAKLSAgICAob3B0aW9ucywgYXJncykgPSBwYXJzZXIucGFyc2VfYXJncyhhcmdzKQorICAgIG9wdGlvbnMgPSBwYXJzZXIucGFyc2VfYXJncyhhcmdzWzE6XSkKIAogICAgIGlmIG9wdGlvbnMubG9jYWxlIGFuZCBub3Qgb3B0aW9ucy5lbmNvZGluZzoKICAgICAgICAgcGFyc2VyLmVycm9yKCJpZiAtLWxvY2FsZSBpcyBzcGVjaWZpZWQgLS1lbmNvZGluZyBpcyByZXF1aXJlZCIpCkBAIC02NjYsMTAgKzY4MCwxMCBAQAogICAgICAgICAgICAgZW5jb2RpbmcgPSBzeXMuZ2V0ZGVmYXVsdGVuY29kaW5nKCkKICAgICAgICAgb3B0ZGljdCA9IGRpY3QoZW5jb2Rpbmc9ZW5jb2RpbmcsIGNzcz1vcHRpb25zLmNzcykKICAgICAgICAgd3JpdGUgPSBzeXMuc3Rkb3V0LmJ1ZmZlci53cml0ZQotICAgICAgICBpZiBsZW4oYXJncykgPT0gMToKKyAgICAgICAgaWYgb3B0aW9ucy55ZWFyIGlzIE5vbmU6CiAgICAgICAgICAgICB3cml0ZShjYWwuZm9ybWF0eWVhcnBhZ2UoZGF0ZXRpbWUuZGF0ZS50b2RheSgpLnllYXIsICoqb3B0ZGljdCkpCi0gICAgICAgIGVsaWYgbGVuKGFyZ3MpID09IDI6Ci0gICAgICAgICAgICB3cml0ZShjYWwuZm9ybWF0eWVhcnBhZ2UoaW50KGFyZ3NbMV0pLCAqKm9wdGRpY3QpKQorICAgICAgICBlbGlmIG9wdGlvbnMubW9udGggaXMgTm9uZToKKyAgICAgICAgICAgIHdyaXRlKGNhbC5mb3JtYXR5ZWFycGFnZShvcHRpb25zLnllYXIsICoqb3B0ZGljdCkpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBwYXJzZXIuZXJyb3IoImluY29ycmVjdCBudW1iZXIgb2YgYXJndW1lbnRzIikKICAgICAgICAgICAgIHN5cy5leGl0KDEpCkBAIC02NzksMTggKzY5MywxNSBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgY2FsID0gVGV4dENhbGVuZGFyKCkKICAgICAgICAgb3B0ZGljdCA9IGRpY3Qodz1vcHRpb25zLndpZHRoLCBsPW9wdGlvbnMubGluZXMpCi0gICAgICAgIGlmIGxlbihhcmdzKSAhPSAzOgorICAgICAgICBpZiBvcHRpb25zLm1vbnRoIGlzIE5vbmU6CiAgICAgICAgICAgICBvcHRkaWN0WyJjIl0gPSBvcHRpb25zLnNwYWNpbmcKICAgICAgICAgICAgIG9wdGRpY3RbIm0iXSA9IG9wdGlvbnMubW9udGhzCi0gICAgICAgIGlmIGxlbihhcmdzKSA9PSAxOgorICAgICAgICBpZiBvcHRpb25zLnllYXIgaXMgTm9uZToKICAgICAgICAgICAgIHJlc3VsdCA9IGNhbC5mb3JtYXR5ZWFyKGRhdGV0aW1lLmRhdGUudG9kYXkoKS55ZWFyLCAqKm9wdGRpY3QpCi0gICAgICAgIGVsaWYgbGVuKGFyZ3MpID09IDI6Ci0gICAgICAgICAgICByZXN1bHQgPSBjYWwuZm9ybWF0eWVhcihpbnQoYXJnc1sxXSksICoqb3B0ZGljdCkKLSAgICAgICAgZWxpZiBsZW4oYXJncykgPT0gMzoKLSAgICAgICAgICAgIHJlc3VsdCA9IGNhbC5mb3JtYXRtb250aChpbnQoYXJnc1sxXSksIGludChhcmdzWzJdKSwgKipvcHRkaWN0KQorICAgICAgICBlbGlmIG9wdGlvbnMubW9udGggaXMgTm9uZToKKyAgICAgICAgICAgIHJlc3VsdCA9IGNhbC5mb3JtYXR5ZWFyKG9wdGlvbnMueWVhciwgKipvcHRkaWN0KQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcGFyc2VyLmVycm9yKCJpbmNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50cyIpCi0gICAgICAgICAgICBzeXMuZXhpdCgxKQorICAgICAgICAgICAgcmVzdWx0ID0gY2FsLmZvcm1hdG1vbnRoKG9wdGlvbnMueWVhciwgb3B0aW9ucy5tb250aCwgKipvcHRkaWN0KQogICAgICAgICB3cml0ZSA9IHN5cy5zdGRvdXQud3JpdGUKICAgICAgICAgaWYgb3B0aW9ucy5lbmNvZGluZzoKICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5lbmNvZGUob3B0aW9ucy5lbmNvZGluZykKZGlmZiAtLWdpdCBhL0xpYi9jZ2kucHkgYi9MaWIvY2dpLnB5CmluZGV4IDE4OWM2ZDUuLjIzM2E0OTYgMTAwNzU1Ci0tLSBhL0xpYi9jZ2kucHkKKysrIGIvTGliL2NnaS5weQpAQCAtNDUsNyArNDUsNyBAQAogCiBfX2FsbF9fID0gWyJNaW5pRmllbGRTdG9yYWdlIiwgIkZpZWxkU3RvcmFnZSIsCiAgICAgICAgICAgICJwYXJzZSIsICJwYXJzZV9xcyIsICJwYXJzZV9xc2wiLCAicGFyc2VfbXVsdGlwYXJ0IiwKLSAgICAgICAgICAgInBhcnNlX2hlYWRlciIsICJwcmludF9leGNlcHRpb24iLCAicHJpbnRfZW52aXJvbiIsCisgICAgICAgICAgICJwYXJzZV9oZWFkZXIiLCAidGVzdCIsICJwcmludF9leGNlcHRpb24iLCAicHJpbnRfZW52aXJvbiIsCiAgICAgICAgICAgICJwcmludF9mb3JtIiwgInByaW50X2RpcmVjdG9yeSIsICJwcmludF9hcmd1bWVudHMiLAogICAgICAgICAgICAicHJpbnRfZW52aXJvbl91c2FnZSIsICJlc2NhcGUiXQogCmRpZmYgLS1naXQgYS9MaWIvY29kZS5weSBiL0xpYi9jb2RlLnB5CmluZGV4IDUzMjQ0ZTMuLjIzMjk1ZjQgMTAwNjQ0Ci0tLSBhL0xpYi9jb2RlLnB5CisrKyBiL0xpYi9jb2RlLnB5CkBAIC0xODYsNyArMTg2LDcgQEAKICAgICAgICAgIiIiUmVzZXQgdGhlIGlucHV0IGJ1ZmZlci4iIiIKICAgICAgICAgc2VsZi5idWZmZXIgPSBbXQogCi0gICAgZGVmIGludGVyYWN0KHNlbGYsIGJhbm5lcj1Ob25lKToKKyAgICBkZWYgaW50ZXJhY3Qoc2VsZiwgYmFubmVyPU5vbmUsIGV4aXRtc2c9Tm9uZSk6CiAgICAgICAgICIiIkNsb3NlbHkgZW11bGF0ZSB0aGUgaW50ZXJhY3RpdmUgUHl0aG9uIGNvbnNvbGUuCiAKICAgICAgICAgVGhlIG9wdGlvbmFsIGJhbm5lciBhcmd1bWVudCBzcGVjaWZpZXMgdGhlIGJhbm5lciB0byBwcmludApAQCAtMTk2LDYgKzE5NiwxMSBAQAogICAgICAgICB0byBjb25mdXNlIHRoaXMgd2l0aCB0aGUgcmVhbCBpbnRlcnByZXRlciAtLSBzaW5jZSBpdCdzIHNvCiAgICAgICAgIGNsb3NlISkuCiAKKyAgICAgICAgVGhlIG9wdGlvbmFsIGV4aXRtc2cgYXJndW1lbnQgc3BlY2lmaWVzIHRoZSBleGl0IG1lc3NhZ2UKKyAgICAgICAgcHJpbnRlZCB3aGVuIGV4aXRpbmcuIFBhc3MgdGhlIGVtcHR5IHN0cmluZyB0byBzdXBwcmVzcworICAgICAgICBwcmludGluZyBhbiBleGl0IG1lc3NhZ2UuIElmIGV4aXRtc2cgaXMgbm90IGdpdmVuIG9yIE5vbmUsCisgICAgICAgIGEgZGVmYXVsdCBtZXNzYWdlIGlzIHByaW50ZWQuCisKICAgICAgICAgIiIiCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHN5cy5wczEKQEAgLTIzMCw2ICsyMzUsMTAgQEAKICAgICAgICAgICAgICAgICBzZWxmLndyaXRlKCJcbktleWJvYXJkSW50ZXJydXB0XG4iKQogICAgICAgICAgICAgICAgIHNlbGYucmVzZXRidWZmZXIoKQogICAgICAgICAgICAgICAgIG1vcmUgPSAwCisgICAgICAgIGlmIGV4aXRtc2cgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYud3JpdGUoJ25vdyBleGl0aW5nICVzLi4uXG4nICUgc2VsZi5fX2NsYXNzX18uX19uYW1lX18pCisgICAgICAgIGVsaWYgZXhpdG1zZyAhPSAnJzoKKyAgICAgICAgICAgIHNlbGYud3JpdGUoJyVzXG4nICUgZXhpdG1zZykKIAogICAgIGRlZiBwdXNoKHNlbGYsIGxpbmUpOgogICAgICAgICAiIiJQdXNoIGEgbGluZSB0byB0aGUgaW50ZXJwcmV0ZXIuCkBAIC0yNjcsNyArMjc2LDcgQEAKIAogCiAKLWRlZiBpbnRlcmFjdChiYW5uZXI9Tm9uZSwgcmVhZGZ1bmM9Tm9uZSwgbG9jYWw9Tm9uZSk6CitkZWYgaW50ZXJhY3QoYmFubmVyPU5vbmUsIHJlYWRmdW5jPU5vbmUsIGxvY2FsPU5vbmUsIGV4aXRtc2c9Tm9uZSk6CiAgICAgIiIiQ2xvc2VseSBlbXVsYXRlIHRoZSBpbnRlcmFjdGl2ZSBQeXRob24gaW50ZXJwcmV0ZXIuCiAKICAgICBUaGlzIGlzIGEgYmFja3dhcmRzIGNvbXBhdGlibGUgaW50ZXJmYWNlIHRvIHRoZSBJbnRlcmFjdGl2ZUNvbnNvbGUKQEAgLTI3OSw2ICsyODgsNyBAQAogICAgIGJhbm5lciAtLSBwYXNzZWQgdG8gSW50ZXJhY3RpdmVDb25zb2xlLmludGVyYWN0KCkKICAgICByZWFkZnVuYyAtLSBpZiBub3QgTm9uZSwgcmVwbGFjZXMgSW50ZXJhY3RpdmVDb25zb2xlLnJhd19pbnB1dCgpCiAgICAgbG9jYWwgLS0gcGFzc2VkIHRvIEludGVyYWN0aXZlSW50ZXJwcmV0ZXIuX19pbml0X18oKQorICAgIGV4aXRtc2cgLS0gcGFzc2VkIHRvIEludGVyYWN0aXZlQ29uc29sZS5pbnRlcmFjdCgpCiAKICAgICAiIiIKICAgICBjb25zb2xlID0gSW50ZXJhY3RpdmVDb25zb2xlKGxvY2FsKQpAQCAtMjg5LDcgKzI5OSw3IEBACiAgICAgICAgICAgICBpbXBvcnQgcmVhZGxpbmUKICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICAgICAgcGFzcwotICAgIGNvbnNvbGUuaW50ZXJhY3QoYmFubmVyKQorICAgIGNvbnNvbGUuaW50ZXJhY3QoYmFubmVyLCBleGl0bXNnKQogCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CmRpZmYgLS1naXQgYS9MaWIvY29sbGVjdGlvbnMvX19pbml0X18ucHkgYi9MaWIvY29sbGVjdGlvbnMvX19pbml0X18ucHkKaW5kZXggZWJlOGVlNy4uYmNjNDI5MSAxMDA2NDQKLS0tIGEvTGliL2NvbGxlY3Rpb25zL19faW5pdF9fLnB5CisrKyBiL0xpYi9jb2xsZWN0aW9ucy9fX2luaXRfXy5weQpAQCAtMzUzLDcgKzM1Myw3IEBACiAgICAge25hbWV9ID0gX3Byb3BlcnR5KF9pdGVtZ2V0dGVyKHtpbmRleDpkfSksIGRvYz0nQWxpYXMgZm9yIGZpZWxkIG51bWJlciB7aW5kZXg6ZH0nKQogJycnCiAKLWRlZiBuYW1lZHR1cGxlKHR5cGVuYW1lLCBmaWVsZF9uYW1lcywgdmVyYm9zZT1GYWxzZSwgcmVuYW1lPUZhbHNlKToKK2RlZiBuYW1lZHR1cGxlKHR5cGVuYW1lLCBmaWVsZF9uYW1lcywgKiwgdmVyYm9zZT1GYWxzZSwgcmVuYW1lPUZhbHNlLCBtb2R1bGU9Tm9uZSk6CiAgICAgIiIiUmV0dXJucyBhIG5ldyBzdWJjbGFzcyBvZiB0dXBsZSB3aXRoIG5hbWVkIGZpZWxkcy4KIAogICAgID4+PiBQb2ludCA9IG5hbWVkdHVwbGUoJ1BvaW50JywgWyd4JywgJ3knXSkKQEAgLTM5Myw3ICszOTMsNyBAQAogICAgICAgICAgICAgICAgIGZpZWxkX25hbWVzW2luZGV4XSA9ICdfJWQnICUgaW5kZXgKICAgICAgICAgICAgIHNlZW4uYWRkKG5hbWUpCiAgICAgZm9yIG5hbWUgaW4gW3R5cGVuYW1lXSArIGZpZWxkX25hbWVzOgotICAgICAgICBpZiB0eXBlKG5hbWUpICE9IHN0cjoKKyAgICAgICAgaWYgdHlwZShuYW1lKSBpcyBub3Qgc3RyOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdUeXBlIG5hbWVzIGFuZCBmaWVsZCBuYW1lcyBtdXN0IGJlIHN0cmluZ3MnKQogICAgICAgICBpZiBub3QgbmFtZS5pc2lkZW50aWZpZXIoKToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1R5cGUgbmFtZXMgYW5kIGZpZWxkIG5hbWVzIG11c3QgYmUgdmFsaWQgJwpAQCAtNDM0LDExICs0MzQsMTUgQEAKICAgICAjIEZvciBwaWNrbGluZyB0byB3b3JrLCB0aGUgX19tb2R1bGVfXyB2YXJpYWJsZSBuZWVkcyB0byBiZSBzZXQgdG8gdGhlIGZyYW1lCiAgICAgIyB3aGVyZSB0aGUgbmFtZWQgdHVwbGUgaXMgY3JlYXRlZC4gIEJ5cGFzcyB0aGlzIHN0ZXAgaW4gZW52aXJvbm1lbnRzIHdoZXJlCiAgICAgIyBzeXMuX2dldGZyYW1lIGlzIG5vdCBkZWZpbmVkIChKeXRob24gZm9yIGV4YW1wbGUpIG9yIHN5cy5fZ2V0ZnJhbWUgaXMgbm90Ci0gICAgIyBkZWZpbmVkIGZvciBhcmd1bWVudHMgZ3JlYXRlciB0aGFuIDAgKElyb25QeXRob24pLgotICAgIHRyeToKLSAgICAgICAgcmVzdWx0Ll9fbW9kdWxlX18gPSBfc3lzLl9nZXRmcmFtZSgxKS5mX2dsb2JhbHMuZ2V0KCdfX25hbWVfXycsICdfX21haW5fXycpCi0gICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgVmFsdWVFcnJvcik6Ci0gICAgICAgIHBhc3MKKyAgICAjIGRlZmluZWQgZm9yIGFyZ3VtZW50cyBncmVhdGVyIHRoYW4gMCAoSXJvblB5dGhvbiksIG9yIHdoZXJlIHRoZSB1c2VyIGhhcworICAgICMgc3BlY2lmaWVkIGEgcGFydGljdWxhciBtb2R1bGUuCisgICAgaWYgbW9kdWxlIGlzIE5vbmU6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG1vZHVsZSA9IF9zeXMuX2dldGZyYW1lKDEpLmZfZ2xvYmFscy5nZXQoJ19fbmFtZV9fJywgJ19fbWFpbl9fJykKKyAgICAgICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgVmFsdWVFcnJvcik6CisgICAgICAgICAgICBwYXNzCisgICAgaWYgbW9kdWxlIGlzIG5vdCBOb25lOgorICAgICAgICByZXN1bHQuX19tb2R1bGVfXyA9IG1vZHVsZQogCiAgICAgcmV0dXJuIHJlc3VsdAogCkBAIC04NDIsNyArODQ2LDcgQEAKIAogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMjIyAgQ2hhaW5NYXAgKGhlbHBlciBmb3IgY29uZmlncGFyc2VyIGFuZCBzdHJpbmcuVGVtcGxhdGUpCisjIyMgIENoYWluTWFwCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAogY2xhc3MgQ2hhaW5NYXAoTXV0YWJsZU1hcHBpbmcpOgpAQCAtOTY5LDcgKzk3Myw3IEBACiAgICAgICAgICAgICBkaWN0ID0ga3dhcmdzLnBvcCgnZGljdCcpCiAgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oIlBhc3NpbmcgJ2RpY3QnIGFzIGtleXdvcmQgYXJndW1lbnQgaXMgZGVwcmVjYXRlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBkaWN0ID0gTm9uZQogICAgICAgICBzZWxmLmRhdGEgPSB7fQpkaWZmIC0tZ2l0IGEvTGliL2NvbGxlY3Rpb25zL19fbWFpbl9fLnB5IGIvTGliL2NvbGxlY3Rpb25zL19fbWFpbl9fLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NjNlMzhlLi4wMDAwMDAwCi0tLSBhL0xpYi9jb2xsZWN0aW9ucy9fX21haW5fXy5weQorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIyMgU2ltcGxlIHRlc3RzCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jIHZlcmlmeSB0aGF0IGluc3RhbmNlcyBjYW4gYmUgcGlja2xlZAotZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZQotZnJvbSBwaWNrbGUgaW1wb3J0IGxvYWRzLCBkdW1wcwotUG9pbnQgPSBuYW1lZHR1cGxlKCdQb2ludCcsICd4LCB5JywgVHJ1ZSkKLXAgPSBQb2ludCh4PTEwLCB5PTIwKQotYXNzZXJ0IHAgPT0gbG9hZHMoZHVtcHMocCkpCi0KLSMgdGVzdCBhbmQgZGVtb25zdHJhdGUgYWJpbGl0eSB0byBvdmVycmlkZSBtZXRob2RzCi1jbGFzcyBQb2ludChuYW1lZHR1cGxlKCdQb2ludCcsICd4IHknKSk6Ci0gICAgX19zbG90c19fID0gKCkKLSAgICBAcHJvcGVydHkKLSAgICBkZWYgaHlwb3Qoc2VsZik6Ci0gICAgICAgIHJldHVybiAoc2VsZi54ICoqIDIgKyBzZWxmLnkgKiogMikgKiogMC41Ci0gICAgZGVmIF9fc3RyX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAnUG9pbnQ6IHg9JTYuM2YgIHk9JTYuM2YgIGh5cG90PSU2LjNmJyAlIChzZWxmLngsIHNlbGYueSwgc2VsZi5oeXBvdCkKLQotZm9yIHAgaW4gUG9pbnQoMywgNCksIFBvaW50KDE0LCA1LzcuKToKLSAgICBwcmludCAocCkKLQotY2xhc3MgUG9pbnQobmFtZWR0dXBsZSgnUG9pbnQnLCAneCB5JykpOgotICAgICdQb2ludCBjbGFzcyB3aXRoIG9wdGltaXplZCBfbWFrZSgpIGFuZCBfcmVwbGFjZSgpIHdpdGhvdXQgZXJyb3ItY2hlY2tpbmcnCi0gICAgX19zbG90c19fID0gKCkKLSAgICBfbWFrZSA9IGNsYXNzbWV0aG9kKHR1cGxlLl9fbmV3X18pCi0gICAgZGVmIF9yZXBsYWNlKHNlbGYsIF9tYXA9bWFwLCAqKmt3ZHMpOgotICAgICAgICByZXR1cm4gc2VsZi5fbWFrZShfbWFwKGt3ZHMuZ2V0LCAoJ3gnLCAneScpLCBzZWxmKSkKLQotcHJpbnQoUG9pbnQoMTEsIDIyKS5fcmVwbGFjZSh4PTEwMCkpCi0KLVBvaW50M0QgPSBuYW1lZHR1cGxlKCdQb2ludDNEJywgUG9pbnQuX2ZpZWxkcyArICgneicsKSkKLXByaW50KFBvaW50M0QuX19kb2NfXykKLQotaW1wb3J0IGRvY3Rlc3QsIGNvbGxlY3Rpb25zCi1UZXN0UmVzdWx0cyA9IG5hbWVkdHVwbGUoJ1Rlc3RSZXN1bHRzJywgJ2ZhaWxlZCBhdHRlbXB0ZWQnKQotcHJpbnQoVGVzdFJlc3VsdHMoKmRvY3Rlc3QudGVzdG1vZChjb2xsZWN0aW9ucykpKQpkaWZmIC0tZ2l0IGEvTGliL2NvbXBpbGVhbGwucHkgYi9MaWIvY29tcGlsZWFsbC5weQppbmRleCAyZDRjNTIzLi4xYzljZWI2IDEwMDY0NAotLS0gYS9MaWIvY29tcGlsZWFsbC5weQorKysgYi9MaWIvY29tcGlsZWFsbC5weQpAQCAtMjUsNiArMjUsOCBAQAogX19hbGxfXyA9IFsiY29tcGlsZV9kaXIiLCJjb21waWxlX2ZpbGUiLCJjb21waWxlX3BhdGgiXQogCiBkZWYgX3dhbGtfZGlyKGRpciwgZGRpcj1Ob25lLCBtYXhsZXZlbHM9MTAsIHF1aWV0PTApOgorICAgIGlmIHF1aWV0IDwgMiBhbmQgaXNpbnN0YW5jZShkaXIsIG9zLlBhdGhMaWtlKToKKyAgICAgICAgZGlyID0gb3MuZnNwYXRoKGRpcikKICAgICBpZiBub3QgcXVpZXQ6CiAgICAgICAgIHByaW50KCdMaXN0aW5nIHshcn0uLi4nLmZvcm1hdChkaXIpKQogICAgIHRyeToKQEAgLTcxLDcgKzczLDcgQEAKIAogICAgIGZpbGVzID0gX3dhbGtfZGlyKGRpciwgcXVpZXQ9cXVpZXQsIG1heGxldmVscz1tYXhsZXZlbHMsCiAgICAgICAgICAgICAgICAgICAgICAgZGRpcj1kZGlyKQotICAgIHN1Y2Nlc3MgPSAxCisgICAgc3VjY2VzcyA9IFRydWUKICAgICBpZiB3b3JrZXJzIGlzIG5vdCBOb25lIGFuZCB3b3JrZXJzICE9IDEgYW5kIFByb2Nlc3NQb29sRXhlY3V0b3IgaXMgbm90IE5vbmU6CiAgICAgICAgIHdvcmtlcnMgPSB3b3JrZXJzIG9yIE5vbmUKICAgICAgICAgd2l0aCBQcm9jZXNzUG9vbEV4ZWN1dG9yKG1heF93b3JrZXJzPXdvcmtlcnMpIGFzIGV4ZWN1dG9yOgpAQCAtODEsMTIgKzgzLDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVnYWN5PWxlZ2FjeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpbWl6ZT1vcHRpbWl6ZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzKQotICAgICAgICAgICAgc3VjY2VzcyA9IG1pbihyZXN1bHRzLCBkZWZhdWx0PTEpCisgICAgICAgICAgICBzdWNjZXNzID0gbWluKHJlc3VsdHMsIGRlZmF1bHQ9VHJ1ZSkKICAgICBlbHNlOgogICAgICAgICBmb3IgZmlsZSBpbiBmaWxlczoKICAgICAgICAgICAgIGlmIG5vdCBjb21waWxlX2ZpbGUoZmlsZSwgZGRpciwgZm9yY2UsIHJ4LCBxdWlldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVnYWN5LCBvcHRpbWl6ZSk6Ci0gICAgICAgICAgICAgICAgc3VjY2VzcyA9IDAKKyAgICAgICAgICAgICAgICBzdWNjZXNzID0gRmFsc2UKICAgICByZXR1cm4gc3VjY2VzcwogCiBkZWYgY29tcGlsZV9maWxlKGZ1bGxuYW1lLCBkZGlyPU5vbmUsIGZvcmNlPUZhbHNlLCByeD1Ob25lLCBxdWlldD0wLApAQCAtMTA0LDcgKzEwNiw5IEBACiAgICAgbGVnYWN5OiAgICBpZiBUcnVlLCBwcm9kdWNlIGxlZ2FjeSBweWMgcGF0aHMgaW5zdGVhZCBvZiBQRVAgMzE0NyBwYXRocwogICAgIG9wdGltaXplOiAgb3B0aW1pemF0aW9uIGxldmVsIG9yIC0xIGZvciBsZXZlbCBvZiB0aGUgaW50ZXJwcmV0ZXIKICAgICAiIiIKLSAgICBzdWNjZXNzID0gMQorICAgIHN1Y2Nlc3MgPSBUcnVlCisgICAgaWYgcXVpZXQgPCAyIGFuZCBpc2luc3RhbmNlKGZ1bGxuYW1lLCBvcy5QYXRoTGlrZSk6CisgICAgICAgIGZ1bGxuYW1lID0gb3MuZnNwYXRoKGZ1bGxuYW1lKQogICAgIG5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKGZ1bGxuYW1lKQogICAgIGlmIGRkaXIgaXMgbm90IE5vbmU6CiAgICAgICAgIGRmaWxlID0gb3MucGF0aC5qb2luKGRkaXIsIG5hbWUpCkBAIC0xNDQsNyArMTQ4LDcgQEAKICAgICAgICAgICAgICAgICBvayA9IHB5X2NvbXBpbGUuY29tcGlsZShmdWxsbmFtZSwgY2ZpbGUsIGRmaWxlLCBUcnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGltaXplPW9wdGltaXplKQogICAgICAgICAgICAgZXhjZXB0IHB5X2NvbXBpbGUuUHlDb21waWxlRXJyb3IgYXMgZXJyOgotICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSAwCisgICAgICAgICAgICAgICAgc3VjY2VzcyA9IEZhbHNlCiAgICAgICAgICAgICAgICAgaWYgcXVpZXQgPj0gMjoKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN1Y2Nlc3MKICAgICAgICAgICAgICAgICBlbGlmIHF1aWV0OgpAQCAtMTU3LDcgKzE2MSw3IEBACiAgICAgICAgICAgICAgICAgbXNnID0gbXNnLmRlY29kZShzeXMuc3Rkb3V0LmVuY29kaW5nKQogICAgICAgICAgICAgICAgIHByaW50KG1zZykKICAgICAgICAgICAgIGV4Y2VwdCAoU3ludGF4RXJyb3IsIFVuaWNvZGVFcnJvciwgT1NFcnJvcikgYXMgZToKLSAgICAgICAgICAgICAgICBzdWNjZXNzID0gMAorICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBGYWxzZQogICAgICAgICAgICAgICAgIGlmIHF1aWV0ID49IDI6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdWNjZXNzCiAgICAgICAgICAgICAgICAgZWxpZiBxdWlldDoKQEAgLTE2Nyw3ICsxNzEsNyBAQAogICAgICAgICAgICAgICAgIHByaW50KGUuX19jbGFzc19fLl9fbmFtZV9fICsgJzonLCBlKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBpZiBvayA9PSAwOgotICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gMAorICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gRmFsc2UKICAgICByZXR1cm4gc3VjY2VzcwogCiBkZWYgY29tcGlsZV9wYXRoKHNraXBfY3VyZGlyPTEsIG1heGxldmVscz0wLCBmb3JjZT1GYWxzZSwgcXVpZXQ9MCwKQEAgLTE4Myw3ICsxODcsNyBAQAogICAgIGxlZ2FjeTogYXMgZm9yIGNvbXBpbGVfZGlyKCkgKGRlZmF1bHQgRmFsc2UpCiAgICAgb3B0aW1pemU6IGFzIGZvciBjb21waWxlX2RpcigpIChkZWZhdWx0IC0xKQogICAgICIiIgotICAgIHN1Y2Nlc3MgPSAxCisgICAgc3VjY2VzcyA9IFRydWUKICAgICBmb3IgZGlyIGluIHN5cy5wYXRoOgogICAgICAgICBpZiAobm90IGRpciBvciBkaXIgPT0gb3MuY3VyZGlyKSBhbmQgc2tpcF9jdXJkaXI6CiAgICAgICAgICAgICBpZiBxdWlldCA8IDI6CmRpZmYgLS1naXQgYS9MaWIvY29uY3VycmVudC9mdXR1cmVzL3RocmVhZC5weSBiL0xpYi9jb25jdXJyZW50L2Z1dHVyZXMvdGhyZWFkLnB5CmluZGV4IDljM2FlYzkuLjAzZDI3NmIgMTAwNjQ0Ci0tLSBhL0xpYi9jb25jdXJyZW50L2Z1dHVyZXMvdGhyZWFkLnB5CisrKyBiL0xpYi9jb25jdXJyZW50L2Z1dHVyZXMvdGhyZWFkLnB5CkBAIC04MSwxMiArODEsMTMgQEAKICAgICAgICAgX2Jhc2UuTE9HR0VSLmNyaXRpY2FsKCdFeGNlcHRpb24gaW4gd29ya2VyJywgZXhjX2luZm89VHJ1ZSkKIAogY2xhc3MgVGhyZWFkUG9vbEV4ZWN1dG9yKF9iYXNlLkV4ZWN1dG9yKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbWF4X3dvcmtlcnM9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1heF93b3JrZXJzPU5vbmUsIHRocmVhZF9uYW1lX3ByZWZpeD0nJyk6CiAgICAgICAgICIiIkluaXRpYWxpemVzIGEgbmV3IFRocmVhZFBvb2xFeGVjdXRvciBpbnN0YW5jZS4KIAogICAgICAgICBBcmdzOgogICAgICAgICAgICAgbWF4X3dvcmtlcnM6IFRoZSBtYXhpbXVtIG51bWJlciBvZiB0aHJlYWRzIHRoYXQgY2FuIGJlIHVzZWQgdG8KICAgICAgICAgICAgICAgICBleGVjdXRlIHRoZSBnaXZlbiBjYWxscy4KKyAgICAgICAgICAgIHRocmVhZF9uYW1lX3ByZWZpeDogQW4gb3B0aW9uYWwgbmFtZSBwcmVmaXggdG8gZ2l2ZSBvdXIgdGhyZWFkcy4KICAgICAgICAgIiIiCiAgICAgICAgIGlmIG1heF93b3JrZXJzIGlzIE5vbmU6CiAgICAgICAgICAgICAjIFVzZSB0aGlzIG51bWJlciBiZWNhdXNlIFRocmVhZFBvb2xFeGVjdXRvciBpcyBvZnRlbgpAQCAtMTAwLDYgKzEwMSw3IEBACiAgICAgICAgIHNlbGYuX3RocmVhZHMgPSBzZXQoKQogICAgICAgICBzZWxmLl9zaHV0ZG93biA9IEZhbHNlCiAgICAgICAgIHNlbGYuX3NodXRkb3duX2xvY2sgPSB0aHJlYWRpbmcuTG9jaygpCisgICAgICAgIHNlbGYuX3RocmVhZF9uYW1lX3ByZWZpeCA9IHRocmVhZF9uYW1lX3ByZWZpeAogCiAgICAgZGVmIHN1Ym1pdChzZWxmLCBmbiwgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgd2l0aCBzZWxmLl9zaHV0ZG93bl9sb2NrOgpAQCAtMTIxLDggKzEyMywxMSBAQAogICAgICAgICAgICAgcS5wdXQoTm9uZSkKICAgICAgICAgIyBUT0RPKGJxdWlubGFuKTogU2hvdWxkIGF2b2lkIGNyZWF0aW5nIG5ldyB0aHJlYWRzIGlmIHRoZXJlIGFyZSBtb3JlCiAgICAgICAgICMgaWRsZSB0aHJlYWRzIHRoYW4gaXRlbXMgaW4gdGhlIHdvcmsgcXVldWUuCi0gICAgICAgIGlmIGxlbihzZWxmLl90aHJlYWRzKSA8IHNlbGYuX21heF93b3JrZXJzOgotICAgICAgICAgICAgdCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PV93b3JrZXIsCisgICAgICAgIG51bV90aHJlYWRzID0gbGVuKHNlbGYuX3RocmVhZHMpCisgICAgICAgIGlmIG51bV90aHJlYWRzIDwgc2VsZi5fbWF4X3dvcmtlcnM6CisgICAgICAgICAgICB0aHJlYWRfbmFtZSA9ICclc18lZCcgJSAoc2VsZi5fdGhyZWFkX25hbWVfcHJlZml4IG9yIHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtX3RocmVhZHMpCisgICAgICAgICAgICB0ID0gdGhyZWFkaW5nLlRocmVhZChuYW1lPXRocmVhZF9uYW1lLCB0YXJnZXQ9X3dvcmtlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M9KHdlYWtyZWYucmVmKHNlbGYsIHdlYWtyZWZfY2IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fd29ya19xdWV1ZSkpCiAgICAgICAgICAgICB0LmRhZW1vbiA9IFRydWUKZGlmZiAtLWdpdCBhL0xpYi9jb250ZXh0bGliLnB5IGIvTGliL2NvbnRleHRsaWIucHkKaW5kZXggZDQ0ZWRkNi4uN2Q5NGE1NyAxMDA2NDQKLS0tIGEvTGliL2NvbnRleHRsaWIucHkKKysrIGIvTGliL2NvbnRleHRsaWIucHkKQEAgLTEsMTEgKzEsMzQgQEAKICIiIlV0aWxpdGllcyBmb3Igd2l0aC1zdGF0ZW1lbnQgY29udGV4dHMuICBTZWUgUEVQIDM0My4iIiIKLQoraW1wb3J0IGFiYwogaW1wb3J0IHN5cwogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKIGZyb20gZnVuY3Rvb2xzIGltcG9ydCB3cmFwcwogCi1fX2FsbF9fID0gWyJjb250ZXh0bWFuYWdlciIsICJjbG9zaW5nIiwgIkNvbnRleHREZWNvcmF0b3IiLCAiRXhpdFN0YWNrIiwKLSAgICAgICAgICAgInJlZGlyZWN0X3N0ZG91dCIsICJyZWRpcmVjdF9zdGRlcnIiLCAic3VwcHJlc3MiXQorX19hbGxfXyA9IFsiY29udGV4dG1hbmFnZXIiLCAiY2xvc2luZyIsICJBYnN0cmFjdENvbnRleHRNYW5hZ2VyIiwKKyAgICAgICAgICAgIkNvbnRleHREZWNvcmF0b3IiLCAiRXhpdFN0YWNrIiwgInJlZGlyZWN0X3N0ZG91dCIsCisgICAgICAgICAgICJyZWRpcmVjdF9zdGRlcnIiLCAic3VwcHJlc3MiXQorCisKK2NsYXNzIEFic3RyYWN0Q29udGV4dE1hbmFnZXIoYWJjLkFCQyk6CisKKyAgICAiIiJBbiBhYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBjb250ZXh0IG1hbmFnZXJzLiIiIgorCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIGBzZWxmYCB1cG9uIGVudGVyaW5nIHRoZSBydW50aW1lIGNvbnRleHQuIiIiCisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBAYWJjLmFic3RyYWN0bWV0aG9kCisgICAgZGVmIF9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsdWUsIHRyYWNlYmFjayk6CisgICAgICAgICIiIlJhaXNlIGFueSBleGNlcHRpb24gdHJpZ2dlcmVkIHdpdGhpbiB0aGUgcnVudGltZSBjb250ZXh0LiIiIgorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9fc3ViY2xhc3Nob29rX18oY2xzLCBDKToKKyAgICAgICAgaWYgY2xzIGlzIEFic3RyYWN0Q29udGV4dE1hbmFnZXI6CisgICAgICAgICAgICBpZiAoYW55KCJfX2VudGVyX18iIGluIEIuX19kaWN0X18gZm9yIEIgaW4gQy5fX21yb19fKSBhbmQKKyAgICAgICAgICAgICAgICBhbnkoIl9fZXhpdF9fIiBpbiBCLl9fZGljdF9fIGZvciBCIGluIEMuX19tcm9fXykpOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogCiAKIGNsYXNzIENvbnRleHREZWNvcmF0b3Iob2JqZWN0KToKQEAgLTMxLDcgKzU0LDcgQEAKICAgICAgICAgcmV0dXJuIGlubmVyCiAKIAotY2xhc3MgX0dlbmVyYXRvckNvbnRleHRNYW5hZ2VyKENvbnRleHREZWNvcmF0b3IpOgorY2xhc3MgX0dlbmVyYXRvckNvbnRleHRNYW5hZ2VyKENvbnRleHREZWNvcmF0b3IsIEFic3RyYWN0Q29udGV4dE1hbmFnZXIpOgogICAgICIiIkhlbHBlciBmb3IgQGNvbnRleHRtYW5hZ2VyIGRlY29yYXRvci4iIiIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmdW5jLCBhcmdzLCBrd2RzKToKQEAgLTEzNyw3ICsxNjAsNyBAQAogICAgIHJldHVybiBoZWxwZXIKIAogCi1jbGFzcyBjbG9zaW5nKG9iamVjdCk6CitjbGFzcyBjbG9zaW5nKEFic3RyYWN0Q29udGV4dE1hbmFnZXIpOgogICAgICIiIkNvbnRleHQgdG8gYXV0b21hdGljYWxseSBjbG9zZSBzb21ldGhpbmcgYXQgdGhlIGVuZCBvZiBhIGJsb2NrLgogCiAgICAgQ29kZSBsaWtlIHRoaXM6CkBAIC0xNjIsNyArMTg1LDcgQEAKICAgICAgICAgc2VsZi50aGluZy5jbG9zZSgpCiAKIAotY2xhc3MgX1JlZGlyZWN0U3RyZWFtOgorY2xhc3MgX1JlZGlyZWN0U3RyZWFtKEFic3RyYWN0Q29udGV4dE1hbmFnZXIpOgogCiAgICAgX3N0cmVhbSA9IE5vbmUKIApAQCAtMjAyLDcgKzIyNSw3IEBACiAgICAgX3N0cmVhbSA9ICJzdGRlcnIiCiAKIAotY2xhc3Mgc3VwcHJlc3M6CitjbGFzcyBzdXBwcmVzcyhBYnN0cmFjdENvbnRleHRNYW5hZ2VyKToKICAgICAiIiJDb250ZXh0IG1hbmFnZXIgdG8gc3VwcHJlc3Mgc3BlY2lmaWVkIGV4Y2VwdGlvbnMKIAogICAgIEFmdGVyIHRoZSBleGNlcHRpb24gaXMgc3VwcHJlc3NlZCwgZXhlY3V0aW9uIHByb2NlZWRzIHdpdGggdGhlIG5leHQKQEAgLTIzMyw3ICsyNTYsNyBAQAogCiAKICMgSW5zcGlyZWQgYnkgZGlzY3Vzc2lvbnMgb24gaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTEzNTg1Ci1jbGFzcyBFeGl0U3RhY2sob2JqZWN0KToKK2NsYXNzIEV4aXRTdGFjayhBYnN0cmFjdENvbnRleHRNYW5hZ2VyKToKICAgICAiIiJDb250ZXh0IG1hbmFnZXIgZm9yIGR5bmFtaWMgbWFuYWdlbWVudCBvZiBhIHN0YWNrIG9mIGV4aXQgY2FsbGJhY2tzCiAKICAgICBGb3IgZXhhbXBsZToKQEAgLTMxMiw5ICszMzUsNiBAQAogICAgICAgICAiIiJJbW1lZGlhdGVseSB1bndpbmQgdGhlIGNvbnRleHQgc3RhY2siIiIKICAgICAgICAgc2VsZi5fX2V4aXRfXyhOb25lLCBOb25lLCBOb25lKQogCi0gICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYKLQogICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqZXhjX2RldGFpbHMpOgogICAgICAgICByZWNlaXZlZF9leGMgPSBleGNfZGV0YWlsc1swXSBpcyBub3QgTm9uZQogCmRpZmYgLS1naXQgYS9MaWIvY29weS5weSBiL0xpYi9jb3B5LnB5CmluZGV4IDk3MmI5NGEuLmY4NjA0MGEgMTAwNjQ0Ci0tLSBhL0xpYi9jb3B5LnB5CisrKyBiL0xpYi9jb3B5LnB5CkBAIC01MSw3ICs1MSw2IEBACiBpbXBvcnQgdHlwZXMKIGltcG9ydCB3ZWFrcmVmCiBmcm9tIGNvcHlyZWcgaW1wb3J0IGRpc3BhdGNoX3RhYmxlCi1pbXBvcnQgYnVpbHRpbnMKIAogY2xhc3MgRXJyb3IoRXhjZXB0aW9uKToKICAgICBwYXNzCkBAIC0xMDIsMzcgKzEwMSwzMyBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICByYWlzZSBFcnJvcigidW4oc2hhbGxvdyljb3B5YWJsZSBvYmplY3Qgb2YgdHlwZSAlcyIgJSBjbHMpCiAKLSAgICByZXR1cm4gX3JlY29uc3RydWN0KHgsIHJ2LCAwKQorICAgIGlmIGlzaW5zdGFuY2UocnYsIHN0cik6CisgICAgICAgIHJldHVybiB4CisgICAgcmV0dXJuIF9yZWNvbnN0cnVjdCh4LCBOb25lLCAqcnYpCiAKIAogX2NvcHlfZGlzcGF0Y2ggPSBkID0ge30KIAogZGVmIF9jb3B5X2ltbXV0YWJsZSh4KToKICAgICByZXR1cm4geAotZm9yIHQgaW4gKHR5cGUoTm9uZSksIGludCwgZmxvYXQsIGJvb2wsIHN0ciwgdHVwbGUsCi0gICAgICAgICAgYnl0ZXMsIGZyb3plbnNldCwgdHlwZSwgcmFuZ2UsCi0gICAgICAgICAgdHlwZXMuQnVpbHRpbkZ1bmN0aW9uVHlwZSwgdHlwZShFbGxpcHNpcyksCitmb3IgdCBpbiAodHlwZShOb25lKSwgaW50LCBmbG9hdCwgYm9vbCwgY29tcGxleCwgc3RyLCB0dXBsZSwKKyAgICAgICAgICBieXRlcywgZnJvemVuc2V0LCB0eXBlLCByYW5nZSwgc2xpY2UsCisgICAgICAgICAgdHlwZXMuQnVpbHRpbkZ1bmN0aW9uVHlwZSwgdHlwZShFbGxpcHNpcyksIHR5cGUoTm90SW1wbGVtZW50ZWQpLAogICAgICAgICAgIHR5cGVzLkZ1bmN0aW9uVHlwZSwgd2Vha3JlZi5yZWYpOgogICAgIGRbdF0gPSBfY29weV9pbW11dGFibGUKIHQgPSBnZXRhdHRyKHR5cGVzLCAiQ29kZVR5cGUiLCBOb25lKQogaWYgdCBpcyBub3QgTm9uZToKICAgICBkW3RdID0gX2NvcHlfaW1tdXRhYmxlCi1mb3IgbmFtZSBpbiAoImNvbXBsZXgiLCAidW5pY29kZSIpOgotICAgIHQgPSBnZXRhdHRyKGJ1aWx0aW5zLCBuYW1lLCBOb25lKQotICAgIGlmIHQgaXMgbm90IE5vbmU6Ci0gICAgICAgIGRbdF0gPSBfY29weV9pbW11dGFibGUKIAotZGVmIF9jb3B5X3dpdGhfY29uc3RydWN0b3IoeCk6Ci0gICAgcmV0dXJuIHR5cGUoeCkoeCkKLWZvciB0IGluIChsaXN0LCBkaWN0LCBzZXQpOgotICAgIGRbdF0gPSBfY29weV93aXRoX2NvbnN0cnVjdG9yCitkW2xpc3RdID0gbGlzdC5jb3B5CitkW2RpY3RdID0gZGljdC5jb3B5CitkW3NldF0gPSBzZXQuY29weQorZFtieXRlYXJyYXldID0gYnl0ZWFycmF5LmNvcHkKIAotZGVmIF9jb3B5X3dpdGhfY29weV9tZXRob2QoeCk6Ci0gICAgcmV0dXJuIHguY29weSgpCiBpZiBQeVN0cmluZ01hcCBpcyBub3QgTm9uZToKLSAgICBkW1B5U3RyaW5nTWFwXSA9IF9jb3B5X3dpdGhfY29weV9tZXRob2QKKyAgICBkW1B5U3RyaW5nTWFwXSA9IFB5U3RyaW5nTWFwLmNvcHkKIAotZGVsIGQKK2RlbCBkLCB0CiAKIGRlZiBkZWVwY29weSh4LCBtZW1vPU5vbmUsIF9uaWw9W10pOgogICAgICIiIkRlZXAgY29weSBvcGVyYXRpb24gb24gYXJiaXRyYXJ5IFB5dGhvbiBvYmplY3RzLgpAQCAtMTc5LDcgKzE3NCwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBFcnJvcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuKGRlZXApY29weWFibGUgb2JqZWN0IG9mIHR5cGUgJXMiICUgY2xzKQotICAgICAgICAgICAgICAgIHkgPSBfcmVjb25zdHJ1Y3QoeCwgcnYsIDEsIG1lbW8pCisgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShydiwgc3RyKToKKyAgICAgICAgICAgICAgICAgICAgeSA9IHgKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB5ID0gX3JlY29uc3RydWN0KHgsIG1lbW8sICpydikKIAogICAgICMgSWYgaXMgaXRzIG93biBjb3B5LCBkb24ndCBtZW1vaXplLgogICAgIGlmIHkgaXMgbm90IHg6CkBAIC0xOTMsMTMgKzE5MSwxMSBAQAogICAgIHJldHVybiB4CiBkW3R5cGUoTm9uZSldID0gX2RlZXBjb3B5X2F0b21pYwogZFt0eXBlKEVsbGlwc2lzKV0gPSBfZGVlcGNvcHlfYXRvbWljCitkW3R5cGUoTm90SW1wbGVtZW50ZWQpXSA9IF9kZWVwY29weV9hdG9taWMKIGRbaW50XSA9IF9kZWVwY29weV9hdG9taWMKIGRbZmxvYXRdID0gX2RlZXBjb3B5X2F0b21pYwogZFtib29sXSA9IF9kZWVwY29weV9hdG9taWMKLXRyeToKLSAgICBkW2NvbXBsZXhdID0gX2RlZXBjb3B5X2F0b21pYwotZXhjZXB0IE5hbWVFcnJvcjoKLSAgICBwYXNzCitkW2NvbXBsZXhdID0gX2RlZXBjb3B5X2F0b21pYwogZFtieXRlc10gPSBfZGVlcGNvcHlfYXRvbWljCiBkW3N0cl0gPSBfZGVlcGNvcHlfYXRvbWljCiB0cnk6CkBAIC0yMTEsMTUgKzIwNywxNiBAQAogZFt0eXBlcy5GdW5jdGlvblR5cGVdID0gX2RlZXBjb3B5X2F0b21pYwogZFt3ZWFrcmVmLnJlZl0gPSBfZGVlcGNvcHlfYXRvbWljCiAKLWRlZiBfZGVlcGNvcHlfbGlzdCh4LCBtZW1vKToKK2RlZiBfZGVlcGNvcHlfbGlzdCh4LCBtZW1vLCBkZWVwY29weT1kZWVwY29weSk6CiAgICAgeSA9IFtdCiAgICAgbWVtb1tpZCh4KV0gPSB5CisgICAgYXBwZW5kID0geS5hcHBlbmQKICAgICBmb3IgYSBpbiB4OgotICAgICAgICB5LmFwcGVuZChkZWVwY29weShhLCBtZW1vKSkKKyAgICAgICAgYXBwZW5kKGRlZXBjb3B5KGEsIG1lbW8pKQogICAgIHJldHVybiB5CiBkW2xpc3RdID0gX2RlZXBjb3B5X2xpc3QKIAotZGVmIF9kZWVwY29weV90dXBsZSh4LCBtZW1vKToKK2RlZiBfZGVlcGNvcHlfdHVwbGUoeCwgbWVtbywgZGVlcGNvcHk9ZGVlcGNvcHkpOgogICAgIHkgPSBbZGVlcGNvcHkoYSwgbWVtbykgZm9yIGEgaW4geF0KICAgICAjIFdlJ3JlIG5vdCBnb2luZyB0byBwdXQgdGhlIHR1cGxlIGluIHRoZSBtZW1vLCBidXQgaXQncyBzdGlsbCBpbXBvcnRhbnQgd2UKICAgICAjIGNoZWNrIGZvciBpdCwgaW4gY2FzZSB0aGUgdHVwbGUgY29udGFpbnMgcmVjdXJzaXZlIG11dGFibGUgc3RydWN0dXJlcy4KQEAgLTIzNiw3ICsyMzMsNyBAQAogICAgIHJldHVybiB5CiBkW3R1cGxlXSA9IF9kZWVwY29weV90dXBsZQogCi1kZWYgX2RlZXBjb3B5X2RpY3QoeCwgbWVtbyk6CitkZWYgX2RlZXBjb3B5X2RpY3QoeCwgbWVtbywgZGVlcGNvcHk9ZGVlcGNvcHkpOgogICAgIHkgPSB7fQogICAgIG1lbW9baWQoeCldID0geQogICAgIGZvciBrZXksIHZhbHVlIGluIHguaXRlbXMoKToKQEAgLTI0OCw3ICsyNDUsOSBAQAogCiBkZWYgX2RlZXBjb3B5X21ldGhvZCh4LCBtZW1vKTogIyBDb3B5IGluc3RhbmNlIG1ldGhvZHMKICAgICByZXR1cm4gdHlwZSh4KSh4Ll9fZnVuY19fLCBkZWVwY29weSh4Ll9fc2VsZl9fLCBtZW1vKSkKLV9kZWVwY29weV9kaXNwYXRjaFt0eXBlcy5NZXRob2RUeXBlXSA9IF9kZWVwY29weV9tZXRob2QKK2RbdHlwZXMuTWV0aG9kVHlwZV0gPSBfZGVlcGNvcHlfbWV0aG9kCisKK2RlbCBkCiAKIGRlZiBfa2VlcF9hbGl2ZSh4LCBtZW1vKToKICAgICAiIiJLZWVwcyBhIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0IHggaW4gdGhlIG1lbW8uCkBAIC0yNjYsMzEgKzI2NSwxNSBAQAogICAgICAgICAjIGFoYSwgdGhpcyBpcyB0aGUgZmlyc3Qgb25lIDotKQogICAgICAgICBtZW1vW2lkKG1lbW8pXT1beF0KIAotZGVmIF9yZWNvbnN0cnVjdCh4LCBpbmZvLCBkZWVwLCBtZW1vPU5vbmUpOgotICAgIGlmIGlzaW5zdGFuY2UoaW5mbywgc3RyKToKLSAgICAgICAgcmV0dXJuIHgKLSAgICBhc3NlcnQgaXNpbnN0YW5jZShpbmZvLCB0dXBsZSkKLSAgICBpZiBtZW1vIGlzIE5vbmU6Ci0gICAgICAgIG1lbW8gPSB7fQotICAgIG4gPSBsZW4oaW5mbykKLSAgICBhc3NlcnQgbiBpbiAoMiwgMywgNCwgNSkKLSAgICBjYWxsYWJsZSwgYXJncyA9IGluZm9bOjJdCi0gICAgaWYgbiA+IDI6Ci0gICAgICAgIHN0YXRlID0gaW5mb1syXQotICAgIGVsc2U6Ci0gICAgICAgIHN0YXRlID0gTm9uZQotICAgIGlmIG4gPiAzOgotICAgICAgICBsaXN0aXRlciA9IGluZm9bM10KLSAgICBlbHNlOgotICAgICAgICBsaXN0aXRlciA9IE5vbmUKLSAgICBpZiBuID4gNDoKLSAgICAgICAgZGljdGl0ZXIgPSBpbmZvWzRdCi0gICAgZWxzZToKLSAgICAgICAgZGljdGl0ZXIgPSBOb25lCitkZWYgX3JlY29uc3RydWN0KHgsIG1lbW8sIGZ1bmMsIGFyZ3MsCisgICAgICAgICAgICAgICAgIHN0YXRlPU5vbmUsIGxpc3RpdGVyPU5vbmUsIGRpY3RpdGVyPU5vbmUsCisgICAgICAgICAgICAgICAgIGRlZXBjb3B5PWRlZXBjb3B5KToKKyAgICBkZWVwID0gbWVtbyBpcyBub3QgTm9uZQorICAgIGlmIGRlZXAgYW5kIGFyZ3M6CisgICAgICAgIGFyZ3MgPSAoZGVlcGNvcHkoYXJnLCBtZW1vKSBmb3IgYXJnIGluIGFyZ3MpCisgICAgeSA9IGZ1bmMoKmFyZ3MpCiAgICAgaWYgZGVlcDoKLSAgICAgICAgYXJncyA9IGRlZXBjb3B5KGFyZ3MsIG1lbW8pCi0gICAgeSA9IGNhbGxhYmxlKCphcmdzKQotICAgIG1lbW9baWQoeCldID0geQorICAgICAgICBtZW1vW2lkKHgpXSA9IHkKIAogICAgIGlmIHN0YXRlIGlzIG5vdCBOb25lOgogICAgICAgICBpZiBkZWVwOgpAQCAtMzA5LDIyICsyOTIsMjIgQEAKICAgICAgICAgICAgICAgICAgICAgc2V0YXR0cih5LCBrZXksIHZhbHVlKQogCiAgICAgaWYgbGlzdGl0ZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgIGZvciBpdGVtIGluIGxpc3RpdGVyOgotICAgICAgICAgICAgaWYgZGVlcDoKKyAgICAgICAgaWYgZGVlcDoKKyAgICAgICAgICAgIGZvciBpdGVtIGluIGxpc3RpdGVyOgogICAgICAgICAgICAgICAgIGl0ZW0gPSBkZWVwY29weShpdGVtLCBtZW1vKQotICAgICAgICAgICAgeS5hcHBlbmQoaXRlbSkKKyAgICAgICAgICAgICAgICB5LmFwcGVuZChpdGVtKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZm9yIGl0ZW0gaW4gbGlzdGl0ZXI6CisgICAgICAgICAgICAgICAgeS5hcHBlbmQoaXRlbSkKICAgICBpZiBkaWN0aXRlciBpcyBub3QgTm9uZToKLSAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gZGljdGl0ZXI6Ci0gICAgICAgICAgICBpZiBkZWVwOgorICAgICAgICBpZiBkZWVwOgorICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gZGljdGl0ZXI6CiAgICAgICAgICAgICAgICAga2V5ID0gZGVlcGNvcHkoa2V5LCBtZW1vKQogICAgICAgICAgICAgICAgIHZhbHVlID0gZGVlcGNvcHkodmFsdWUsIG1lbW8pCi0gICAgICAgICAgICB5W2tleV0gPSB2YWx1ZQorICAgICAgICAgICAgICAgIHlba2V5XSA9IHZhbHVlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBkaWN0aXRlcjoKKyAgICAgICAgICAgICAgICB5W2tleV0gPSB2YWx1ZQogICAgIHJldHVybiB5CiAKLWRlbCBkCi0KLWRlbCB0eXBlcwotCi0jIEhlbHBlciBmb3IgaW5zdGFuY2UgY3JlYXRpb24gd2l0aG91dCBjYWxsaW5nIF9faW5pdF9fCi1jbGFzcyBfRW1wdHlDbGFzczoKLSAgICBwYXNzCitkZWwgdHlwZXMsIHdlYWtyZWYsIFB5U3RyaW5nTWFwCmRpZmYgLS1naXQgYS9MaWIvY3J5cHQucHkgYi9MaWIvY3J5cHQucHkKaW5kZXggNDlhYjk2ZS4uZmJjNWY0YyAxMDA2NDQKLS0tIGEvTGliL2NyeXB0LnB5CisrKyBiL0xpYi9jcnlwdC5weQpAQCAtNTQsOSArNTQsOCBAQAogTUVUSE9EX1NIQTUxMiA9IF9NZXRob2QoJ1NIQTUxMicsICc2JywgMTYsIDEwNikKIAogbWV0aG9kcyA9IFtdCi1mb3IgX21ldGhvZCBpbiAoTUVUSE9EX1NIQTUxMiwgTUVUSE9EX1NIQTI1NiwgTUVUSE9EX01ENSk6Citmb3IgX21ldGhvZCBpbiAoTUVUSE9EX1NIQTUxMiwgTUVUSE9EX1NIQTI1NiwgTUVUSE9EX01ENSwgTUVUSE9EX0NSWVBUKToKICAgICBfcmVzdWx0ID0gY3J5cHQoJycsIF9tZXRob2QpCiAgICAgaWYgX3Jlc3VsdCBhbmQgbGVuKF9yZXN1bHQpID09IF9tZXRob2QudG90YWxfc2l6ZToKICAgICAgICAgbWV0aG9kcy5hcHBlbmQoX21ldGhvZCkKLW1ldGhvZHMuYXBwZW5kKE1FVEhPRF9DUllQVCkKIGRlbCBfcmVzdWx0LCBfbWV0aG9kCmRpZmYgLS1naXQgYS9MaWIvY3N2LnB5IGIvTGliL2Nzdi5weQppbmRleCBjYTQwZTVlLi4wMzQ5ZTBiIDEwMDY0NAotLS0gYS9MaWIvY3N2LnB5CisrKyBiL0xpYi9jc3YucHkKQEAgLTExLDEzICsxMSwxNSBAQAogICAgICAgICAgICAgICAgICBfX2RvY19fCiBmcm9tIF9jc3YgaW1wb3J0IERpYWxlY3QgYXMgX0RpYWxlY3QKIAorZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QKIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPCiAKLV9fYWxsX18gPSBbICJRVU9URV9NSU5JTUFMIiwgIlFVT1RFX0FMTCIsICJRVU9URV9OT05OVU1FUklDIiwgIlFVT1RFX05PTkUiLAotICAgICAgICAgICAgIkVycm9yIiwgIkRpYWxlY3QiLCAiX19kb2NfXyIsICJleGNlbCIsICJleGNlbF90YWIiLAotICAgICAgICAgICAgImZpZWxkX3NpemVfbGltaXQiLCAicmVhZGVyIiwgIndyaXRlciIsCi0gICAgICAgICAgICAicmVnaXN0ZXJfZGlhbGVjdCIsICJnZXRfZGlhbGVjdCIsICJsaXN0X2RpYWxlY3RzIiwgIlNuaWZmZXIiLAotICAgICAgICAgICAgInVucmVnaXN0ZXJfZGlhbGVjdCIsICJfX3ZlcnNpb25fXyIsICJEaWN0UmVhZGVyIiwgIkRpY3RXcml0ZXIiIF0KK19fYWxsX18gPSBbIlFVT1RFX01JTklNQUwiLCAiUVVPVEVfQUxMIiwgIlFVT1RFX05PTk5VTUVSSUMiLCAiUVVPVEVfTk9ORSIsCisgICAgICAgICAgICJFcnJvciIsICJEaWFsZWN0IiwgIl9fZG9jX18iLCAiZXhjZWwiLCAiZXhjZWxfdGFiIiwKKyAgICAgICAgICAgImZpZWxkX3NpemVfbGltaXQiLCAicmVhZGVyIiwgIndyaXRlciIsCisgICAgICAgICAgICJyZWdpc3Rlcl9kaWFsZWN0IiwgImdldF9kaWFsZWN0IiwgImxpc3RfZGlhbGVjdHMiLCAiU25pZmZlciIsCisgICAgICAgICAgICJ1bnJlZ2lzdGVyX2RpYWxlY3QiLCAiX192ZXJzaW9uX18iLCAiRGljdFJlYWRlciIsICJEaWN0V3JpdGVyIiwKKyAgICAgICAgICAgInVuaXhfZGlhbGVjdCJdCiAKIGNsYXNzIERpYWxlY3Q6CiAgICAgIiIiRGVzY3JpYmUgYSBDU1YgZGlhbGVjdC4KQEAgLTExNSw3ICsxMTcsNyBAQAogICAgICAgICAjIHZhbHVlcwogICAgICAgICB3aGlsZSByb3cgPT0gW106CiAgICAgICAgICAgICByb3cgPSBuZXh0KHNlbGYucmVhZGVyKQotICAgICAgICBkID0gZGljdCh6aXAoc2VsZi5maWVsZG5hbWVzLCByb3cpKQorICAgICAgICBkID0gT3JkZXJlZERpY3QoemlwKHNlbGYuZmllbGRuYW1lcywgcm93KSkKICAgICAgICAgbGYgPSBsZW4oc2VsZi5maWVsZG5hbWVzKQogICAgICAgICBsciA9IGxlbihyb3cpCiAgICAgICAgIGlmIGxmIDwgbHI6CkBAIC0xNDMsNyArMTQ1LDcgQEAKIAogICAgIGRlZiBfZGljdF90b19saXN0KHNlbGYsIHJvd2RpY3QpOgogICAgICAgICBpZiBzZWxmLmV4dHJhc2FjdGlvbiA9PSAicmFpc2UiOgotICAgICAgICAgICAgd3JvbmdfZmllbGRzID0gW2sgZm9yIGsgaW4gcm93ZGljdCBpZiBrIG5vdCBpbiBzZWxmLmZpZWxkbmFtZXNdCisgICAgICAgICAgICB3cm9uZ19maWVsZHMgPSByb3dkaWN0LmtleXMoKSAtIHNlbGYuZmllbGRuYW1lcwogICAgICAgICAgICAgaWYgd3JvbmdfZmllbGRzOgogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImRpY3QgY29udGFpbnMgZmllbGRzIG5vdCBpbiBmaWVsZG5hbWVzOiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIsICIuam9pbihbcmVwcih4KSBmb3IgeCBpbiB3cm9uZ19maWVsZHNdKSkKQEAgLTIxMywxMCArMjE1LDEwIEBACiAgICAgICAgICIiIgogCiAgICAgICAgIG1hdGNoZXMgPSBbXQotICAgICAgICBmb3IgcmVzdHIgaW4gKCcoP1A8ZGVsaW0+W15cd1xuIlwnXSkoP1A8c3BhY2U+ID8pKD9QPHF1b3RlPlsiXCddKS4qPyg/UD1xdW90ZSkoP1A9ZGVsaW0pJywgIyAsIi4qPyIsCi0gICAgICAgICAgICAgICAgICAgICAgJyg/Ol58XG4pKD9QPHF1b3RlPlsiXCddKS4qPyg/UD1xdW90ZSkoP1A8ZGVsaW0+W15cd1xuIlwnXSkoP1A8c3BhY2U+ID8pJywgICAjICAiLio/IiwKLSAgICAgICAgICAgICAgICAgICAgICAnKD9QPGRlbGltPj5bXlx3XG4iXCddKSg/UDxzcGFjZT4gPykoP1A8cXVvdGU+WyJcJ10pLio/KD9QPXF1b3RlKSg/OiR8XG4pJywgICMgLCIuKj8iCi0gICAgICAgICAgICAgICAgICAgICAgJyg/Ol58XG4pKD9QPHF1b3RlPlsiXCddKS4qPyg/UD1xdW90ZSkoPzokfFxuKScpOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAiLio/IiAobm8gZGVsaW0sIG5vIHNwYWNlKQorICAgICAgICBmb3IgcmVzdHIgaW4gKHInKD9QPGRlbGltPlteXHdcbiJcJ10pKD9QPHNwYWNlPiA/KSg/UDxxdW90ZT5bIlwnXSkuKj8oP1A9cXVvdGUpKD9QPWRlbGltKScsICMgLCIuKj8iLAorICAgICAgICAgICAgICAgICAgICAgIHInKD86XnxcbikoP1A8cXVvdGU+WyJcJ10pLio/KD9QPXF1b3RlKSg/UDxkZWxpbT5bXlx3XG4iXCddKSg/UDxzcGFjZT4gPyknLCAgICMgICIuKj8iLAorICAgICAgICAgICAgICAgICAgICAgIHInKD9QPGRlbGltPj5bXlx3XG4iXCddKSg/UDxzcGFjZT4gPykoP1A8cXVvdGU+WyJcJ10pLio/KD9QPXF1b3RlKSg/OiR8XG4pJywgICMgLCIuKj8iCisgICAgICAgICAgICAgICAgICAgICAgcicoPzpefFxuKSg/UDxxdW90ZT5bIlwnXSkuKj8oP1A9cXVvdGUpKD86JHxcbiknKTogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgIi4qPyIgKG5vIGRlbGltLCBubyBzcGFjZSkKICAgICAgICAgICAgIHJlZ2V4cCA9IHJlLmNvbXBpbGUocmVzdHIsIHJlLkRPVEFMTCB8IHJlLk1VTFRJTElORSkKICAgICAgICAgICAgIG1hdGNoZXMgPSByZWdleHAuZmluZGFsbChkYXRhKQogICAgICAgICAgICAgaWYgbWF0Y2hlczoKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvX19pbml0X18ucHkgYi9MaWIvY3R5cGVzL19faW5pdF9fLnB5CmluZGV4IDBkODYwNzguLjFjOWQzYTUgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvX19pbml0X18ucHkKKysrIGIvTGliL2N0eXBlcy9fX2luaXRfXy5weQpAQCAtMTYsNyArMTYsNyBAQAogaWYgX192ZXJzaW9uX18gIT0gX2N0eXBlc192ZXJzaW9uOgogICAgIHJhaXNlIEV4Y2VwdGlvbigiVmVyc2lvbiBudW1iZXIgbWlzbWF0Y2giLCBfX3ZlcnNpb25fXywgX2N0eXBlc192ZXJzaW9uKQogCi1pZiBfb3MubmFtZSBpbiAoIm50IiwgImNlIik6CitpZiBfb3MubmFtZSA9PSAibnQiOgogICAgIGZyb20gX2N0eXBlcyBpbXBvcnQgRm9ybWF0RXJyb3IKIAogREVGQVVMVF9NT0RFID0gUlRMRF9MT0NBTApAQCAtMTAzLDEyICsxMDMsOSBAQAogICAgICAgICBfY19mdW5jdHlwZV9jYWNoZVsocmVzdHlwZSwgYXJndHlwZXMsIGZsYWdzKV0gPSBDRnVuY3Rpb25UeXBlCiAgICAgICAgIHJldHVybiBDRnVuY3Rpb25UeXBlCiAKLWlmIF9vcy5uYW1lIGluICgibnQiLCAiY2UiKToKK2lmIF9vcy5uYW1lID09ICJudCI6CiAgICAgZnJvbSBfY3R5cGVzIGltcG9ydCBMb2FkTGlicmFyeSBhcyBfZGxvcGVuCiAgICAgZnJvbSBfY3R5cGVzIGltcG9ydCBGVU5DRkxBR19TVERDQUxMIGFzIF9GVU5DRkxBR19TVERDQUxMCi0gICAgaWYgX29zLm5hbWUgPT0gImNlIjoKLSAgICAgICAgIyAnY2UnIGRvZXNuJ3QgaGF2ZSB0aGUgc3RkY2FsbCBjYWxsaW5nIGNvbnZlbnRpb24KLSAgICAgICAgX0ZVTkNGTEFHX1NURENBTEwgPSBfRlVOQ0ZMQUdfQ0RFQ0wKIAogICAgIF93aW5fZnVuY3R5cGVfY2FjaGUgPSB7fQogICAgIGRlZiBXSU5GVU5DVFlQRShyZXN0eXBlLCAqYXJndHlwZXMsICoqa3cpOgpAQCAtMjYyLDcgKzI1OSw3IEBACiBkZWYgX3Jlc2V0X2NhY2hlKCk6CiAgICAgX3BvaW50ZXJfdHlwZV9jYWNoZS5jbGVhcigpCiAgICAgX2NfZnVuY3R5cGVfY2FjaGUuY2xlYXIoKQotICAgIGlmIF9vcy5uYW1lIGluICgibnQiLCAiY2UiKToKKyAgICBpZiBfb3MubmFtZSA9PSAibnQiOgogICAgICAgICBfd2luX2Z1bmN0eXBlX2NhY2hlLmNsZWFyKCkKICAgICAjIF9TaW1wbGVDRGF0YS5jX3djaGFyX3BfZnJvbV9wYXJhbQogICAgIFBPSU5URVIoY193Y2hhcikuZnJvbV9wYXJhbSA9IGNfd2NoYXJfcC5mcm9tX3BhcmFtCkBAIC0zNzQsNyArMzcxLDcgQEAKICAgICAiIiIKICAgICBfZnVuY19mbGFnc18gPSBfRlVOQ0ZMQUdfQ0RFQ0wgfCBfRlVOQ0ZMQUdfUFlUSE9OQVBJCiAKLWlmIF9vcy5uYW1lIGluICgibnQiLCAiY2UiKToKK2lmIF9vcy5uYW1lID09ICJudCI6CiAKICAgICBjbGFzcyBXaW5ETEwoQ0RMTCk6CiAgICAgICAgICIiIlRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIGRsbCBleHBvcnRpbmcgZnVuY3Rpb25zIHVzaW5nIHRoZQpAQCAtNDI3LDcgKzQyNCw3IEBACiBjZGxsID0gTGlicmFyeUxvYWRlcihDRExMKQogcHlkbGwgPSBMaWJyYXJ5TG9hZGVyKFB5RExMKQogCi1pZiBfb3MubmFtZSBpbiAoIm50IiwgImNlIik6CitpZiBfb3MubmFtZSA9PSAibnQiOgogICAgIHB5dGhvbmFwaSA9IFB5RExMKCJweXRob24gZGxsIiwgTm9uZSwgX3N5cy5kbGxoYW5kbGUpCiBlbGlmIF9zeXMucGxhdGZvcm0gPT0gImN5Z3dpbiI6CiAgICAgcHl0aG9uYXBpID0gUHlETEwoImxpYnB5dGhvbiVkLiVkLmRsbCIgJSBfc3lzLnZlcnNpb25faW5mb1s6Ml0pCkBAIC00MzUsNyArNDMyLDcgQEAKICAgICBweXRob25hcGkgPSBQeURMTChOb25lKQogCiAKLWlmIF9vcy5uYW1lIGluICgibnQiLCAiY2UiKToKK2lmIF9vcy5uYW1lID09ICJudCI6CiAgICAgd2luZGxsID0gTGlicmFyeUxvYWRlcihXaW5ETEwpCiAgICAgb2xlZGxsID0gTGlicmFyeUxvYWRlcihPbGVETEwpCiAKQEAgLTUwMyw3ICs1MDAsNyBAQAogICAgICAgICByZXR1cm4gX3dzdHJpbmdfYXQocHRyLCBzaXplKQogCiAKLWlmIF9vcy5uYW1lIGluICgibnQiLCAiY2UiKTogIyBDT00gc3R1ZmYKK2lmIF9vcy5uYW1lID09ICJudCI6ICMgQ09NIHN0dWZmCiAgICAgZGVmIERsbEdldENsYXNzT2JqZWN0KHJjbHNpZCwgcmlpZCwgcHB2KToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgY2NvbSA9IF9faW1wb3J0X18oImNvbXR5cGVzLnNlcnZlci5pbnByb2NzZXJ2ZXIiLCBnbG9iYWxzKCksIGxvY2FscygpLCBbJyonXSkKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2JpdGZpZWxkcy5weSBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2JpdGZpZWxkcy5weQppbmRleCBiMzlkODJjLi5jNzFkNzFkIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9iaXRmaWVsZHMucHkKKysrIGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfYml0ZmllbGRzLnB5CkBAIC0zLDcgKzMsNiBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgb3MKIAotaW1wb3J0IGN0eXBlcwogaW1wb3J0IF9jdHlwZXNfdGVzdAogCiBjbGFzcyBCSVRTKFN0cnVjdHVyZSk6CkBAIC0xOTcsNyArMTk2LDcgQEAKICAgICAgICAgY2xhc3MgWChTdHJ1Y3R1cmUpOgogICAgICAgICAgICAgX2ZpZWxkc18gPSBbKCJhIiwgY19ieXRlLCA0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICgiYiIsIGNfaW50LCA0KV0KLSAgICAgICAgaWYgb3MubmFtZSBpbiAoIm50IiwgImNlIik6CisgICAgICAgIGlmIG9zLm5hbWUgPT0gIm50IjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2l6ZW9mKFgpLCBzaXplb2YoY19pbnQpKjIpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpemVvZihYKSwgc2l6ZW9mKGNfaW50KSkKQEAgLTIyNSw3ICsyMjQsNyBAQAogICAgICAgICAjIE1TVkMgZG9lcyBOT1QgY29tYmluZSBjX3Nob3J0IGFuZCBjX2ludCBpbnRvIG9uZSBmaWVsZCwgR0NDCiAgICAgICAgICMgZG9lcyAodW5sZXNzIEdDQyBpcyBydW4gd2l0aCAnLW1tcy1iaXRmaWVsZHMnIHdoaWNoCiAgICAgICAgICMgcHJvZHVjZXMgY29kZSBjb21wYXRpYmxlIHdpdGggTVNWQykuCi0gICAgICAgIGlmIG9zLm5hbWUgaW4gKCJudCIsICJjZSIpOgorICAgICAgICBpZiBvcy5uYW1lID09ICJudCI6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpemVvZihYKSwgc2l6ZW9mKGNfaW50KSAqIDQpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpemVvZihYKSwgc2l6ZW9mKGNfaW50KSAqIDIpCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9maW5kLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfZmluZC5weQppbmRleCA5NGIwYjg5Li5iOTlmZGNiIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9maW5kLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2ZpbmQucHkKQEAgLTY5LDUgKzY5LDQ4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5sZXhpc3RzKHRlc3Quc3VwcG9ydC5URVNURk4pKQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZXN1bHQpCiAKKworQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2xpbnV4JyksCisgICAgICAgICAgICAgICAgICAgICAnVGVzdCBvbmx5IHZhbGlkIGZvciBMaW51eCcpCitjbGFzcyBMaWJQYXRoRmluZFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2ZpbmRfb25fbGlicGF0aChzZWxmKToKKyAgICAgICAgaW1wb3J0IHN1YnByb2Nlc3MKKyAgICAgICAgaW1wb3J0IHRlbXBmaWxlCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oWydnY2MnLCAnLS12ZXJzaW9uJ10sIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5ERVZOVUxMKQorICAgICAgICAgICAgb3V0LCBfID0gcC5jb21tdW5pY2F0ZSgpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoJ2djYywgbmVlZGVkIGZvciB0ZXN0LCBub3QgYXZhaWxhYmxlJykKKyAgICAgICAgd2l0aCB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkoKSBhcyBkOgorICAgICAgICAgICAgIyBjcmVhdGUgYW4gZW1wdHkgdGVtcG9yYXJ5IGZpbGUKKyAgICAgICAgICAgIHNyY25hbWUgPSBvcy5wYXRoLmpvaW4oZCwgJ2R1bW15LmMnKQorICAgICAgICAgICAgbGlibmFtZSA9ICdweV9jdHlwZXNfdGVzdF9kdW1teScKKyAgICAgICAgICAgIGRzdG5hbWUgPSBvcy5wYXRoLmpvaW4oZCwgJ2xpYiVzLnNvJyAlIGxpYm5hbWUpCisgICAgICAgICAgICB3aXRoIG9wZW4oc3JjbmFtZSwgJ3cnKSBhcyBmOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhzcmNuYW1lKSkKKyAgICAgICAgICAgICMgY29tcGlsZSB0aGUgZmlsZSB0byBhIHNoYXJlZCBsaWJyYXJ5CisgICAgICAgICAgICBjbWQgPSBbJ2djYycsICctbycsIGRzdG5hbWUsICctLXNoYXJlZCcsCisgICAgICAgICAgICAgICAgICAgJy1XbCwtc29uYW1lLGxpYiVzLnNvJyAlIGxpYm5hbWUsIHNyY25hbWVdCisgICAgICAgICAgICBvdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoZHN0bmFtZSkpCisgICAgICAgICAgICAjIG5vdyBjaGVjayB0aGF0IHRoZSAuc28gY2FuJ3QgYmUgZm91bmQgKHNpbmNlIG5vdCBpbgorICAgICAgICAgICAgIyBMRF9MSUJSQVJZX1BBVEgpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmaW5kX2xpYnJhcnkobGlibmFtZSkpCisgICAgICAgICAgICAjIG5vdyBhZGQgdGhlIGxvY2F0aW9uIHRvIExEX0xJQlJBUllfUEFUSAorICAgICAgICAgICAgd2l0aCB0ZXN0LnN1cHBvcnQuRW52aXJvbm1lbnRWYXJHdWFyZCgpIGFzIGVudjoKKyAgICAgICAgICAgICAgICBLRVkgPSAnTERfTElCUkFSWV9QQVRIJworICAgICAgICAgICAgICAgIGlmIEtFWSBub3QgaW4gZW52OgorICAgICAgICAgICAgICAgICAgICB2ID0gZAorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHYgPSAnJXM6JXMnICUgKGVudltLRVldLCBkKQorICAgICAgICAgICAgICAgIGVudi5zZXQoS0VZLCB2KQorICAgICAgICAgICAgICAgICMgbm93IGNoZWNrIHRoYXQgdGhlIC5zbyBjYW4gYmUgZm91bmQgKHNpbmNlIGluCisgICAgICAgICAgICAgICAgIyBMRF9MSUJSQVJZX1BBVEgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaW5kX2xpYnJhcnkobGlibmFtZSksICdsaWIlcy5zbycgJSBsaWJuYW1lKQorCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9mdW5jcHRyLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfZnVuY3B0ci5weQppbmRleCBmZjI1YzhmLi5mMzQ3MzRiIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9mdW5jcHRyLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2Z1bmNwdHIucHkKQEAgLTEsNCArMSw0IEBACi1pbXBvcnQgb3MsIHVuaXR0ZXN0CitpbXBvcnQgdW5pdHRlc3QKIGZyb20gY3R5cGVzIGltcG9ydCAqCiAKIHRyeToKQEAgLTM5LDcgKzM5LDcgQEAKICAgICAgICAgIyBwb3NzaWJsZSwgYXMgaW4gQywgdG8gY2FsbCBjZGVjbCBmdW5jdGlvbnMgd2l0aCBtb3JlIHBhcmFtZXRlcnMuCiAgICAgICAgICNzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMsIDEsIDIsIDMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYygxLCAyLCAzLCA0LCA1LCA2KSwgMykKLSAgICAgICAgaWYgbm90IFdJTkZVTkNUWVBFIGlzIENGVU5DVFlQRSBhbmQgb3MubmFtZSAhPSAiY2UiOgorICAgICAgICBpZiBub3QgV0lORlVOQ1RZUEUgaXMgQ0ZVTkNUWVBFOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzLCAxLCAyLCAzKQogCiAgICAgZGVmIHRlc3Rfc3RydWN0dXJlcyhzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2xvYWRpbmcucHkgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9sb2FkaW5nLnB5CmluZGV4IDI4NDY4YzEuLjQ1NTcxZjMgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2xvYWRpbmcucHkKKysrIGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfbG9hZGluZy5weQpAQCAtMTEsOCArMTEsNiBAQAogICAgIGdsb2JhbCBsaWJjX25hbWUKICAgICBpZiBvcy5uYW1lID09ICJudCI6CiAgICAgICAgIGxpYmNfbmFtZSA9IGZpbmRfbGlicmFyeSgiYyIpCi0gICAgZWxpZiBvcy5uYW1lID09ICJjZSI6Ci0gICAgICAgIGxpYmNfbmFtZSA9ICJjb3JlZGxsIgogICAgIGVsaWYgc3lzLnBsYXRmb3JtID09ICJjeWd3aW4iOgogICAgICAgICBsaWJjX25hbWUgPSAiY3lnd2luMS5kbGwiCiAgICAgZWxzZToKQEAgLTQ5LDggKzQ3LDggQEAKICAgICAgICAgICAgICAgICBjZGxsLkxvYWRMaWJyYXJ5KGxpYikKICAgICAgICAgICAgICAgICBDRExMKGxpYikKIAotICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLm5hbWUgaW4gKCJudCIsICJjZSIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0IHNwZWNpZmljIHRvIFdpbmRvd3MgKE5UL0NFKScpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MubmFtZSA9PSAibnQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0IHNwZWNpZmljIHRvIFdpbmRvd3MnKQogICAgIGRlZiB0ZXN0X2xvYWRfbGlicmFyeShzZWxmKToKICAgICAgICAgIyBDUlQgaXMgbm8gbG9uZ2VyIGRpcmVjdGx5IGxvYWRhYmxlLiBTZWUgaXNzdWUyMzYwNiBmb3IgdGhlCiAgICAgICAgICMgZGlzY3Vzc2lvbiBhYm91dCBhbHRlcm5hdGl2ZSBhcHByb2FjaGVzLgpAQCAtNjQsMTQgKzYyLDkgQEAKICAgICAgICAgICAgIHdpbmRsbFsia2VybmVsMzIiXS5HZXRNb2R1bGVIYW5kbGVXCiAgICAgICAgICAgICB3aW5kbGwuTG9hZExpYnJhcnkoImtlcm5lbDMyIikuR2V0TW9kdWxlSGFuZGxlVwogICAgICAgICAgICAgV2luRExMKCJrZXJuZWwzMiIpLkdldE1vZHVsZUhhbmRsZVcKLSAgICAgICAgZWxpZiBvcy5uYW1lID09ICJjZSI6Ci0gICAgICAgICAgICB3aW5kbGwuY29yZWRsbC5HZXRNb2R1bGVIYW5kbGVXCi0gICAgICAgICAgICB3aW5kbGxbImNvcmVkbGwiXS5HZXRNb2R1bGVIYW5kbGVXCi0gICAgICAgICAgICB3aW5kbGwuTG9hZExpYnJhcnkoImNvcmVkbGwiKS5HZXRNb2R1bGVIYW5kbGVXCi0gICAgICAgICAgICBXaW5ETEwoImNvcmVkbGwiKS5HZXRNb2R1bGVIYW5kbGVXCiAKLSAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5uYW1lIGluICgibnQiLCAiY2UiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdCBzcGVjaWZpYyB0byBXaW5kb3dzIChOVC9DRSknKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLm5hbWUgPT0gIm50IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdCBzcGVjaWZpYyB0byBXaW5kb3dzJykKICAgICBkZWYgdGVzdF9sb2FkX29yZGluYWxfZnVuY3Rpb25zKHNlbGYpOgogICAgICAgICBpbXBvcnQgX2N0eXBlc190ZXN0CiAgICAgICAgIGRsbCA9IFdpbkRMTChfY3R5cGVzX3Rlc3QuX19maWxlX18pCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9vYmplY3RzLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3Rfb2JqZWN0cy5weQppbmRleCBlZjdiMjBiLi4xOWUzZGMxIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9vYmplY3RzLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X29iamVjdHMucHkKQEAgLTU0LDcgKzU0LDcgQEAKIAogJycnCiAKLWltcG9ydCB1bml0dGVzdCwgZG9jdGVzdCwgc3lzCitpbXBvcnQgdW5pdHRlc3QsIGRvY3Rlc3QKIAogaW1wb3J0IGN0eXBlcy50ZXN0LnRlc3Rfb2JqZWN0cwogCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wYXJhbWV0ZXJzLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcGFyYW1ldGVycy5weQppbmRleCBlNTZiY2NmLi4zNjNmNTg2IDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wYXJhbWV0ZXJzLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3BhcmFtZXRlcnMucHkKQEAgLTEsNCArMSw0IEBACi1pbXBvcnQgdW5pdHRlc3QsIHN5cworaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIGN0eXBlcy50ZXN0IGltcG9ydCBuZWVkX3N5bWJvbAogCiBjbGFzcyBTaW1wbGVUeXBlc1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTQ5LDcgKzQ5LDcgQEAKIAogICAgICMgWFhYIFJlcGxhY2UgYnkgY19jaGFyX3AgdGVzdHMKICAgICBkZWYgdGVzdF9jc3RyaW5ncyhzZWxmKToKLSAgICAgICAgZnJvbSBjdHlwZXMgaW1wb3J0IGNfY2hhcl9wLCBieXJlZgorICAgICAgICBmcm9tIGN0eXBlcyBpbXBvcnQgY19jaGFyX3AKIAogICAgICAgICAjIGNfY2hhcl9wLmZyb21fcGFyYW0gb24gYSBQeXRob24gU3RyaW5nIHBhY2tzIHRoZSBzdHJpbmcKICAgICAgICAgIyBpbnRvIGEgY3BhcmFtIG9iamVjdApAQCAtNjgsNyArNjgsNyBAQAogCiAgICAgQG5lZWRfc3ltYm9sKCdjX3djaGFyX3AnKQogICAgIGRlZiB0ZXN0X2N3X3N0cmluZ3Moc2VsZik6Ci0gICAgICAgIGZyb20gY3R5cGVzIGltcG9ydCBieXJlZiwgY193Y2hhcl9wCisgICAgICAgIGZyb20gY3R5cGVzIGltcG9ydCBjX3djaGFyX3AKIAogICAgICAgICBjX3djaGFyX3AuZnJvbV9wYXJhbSgiMTIzIikKIApAQCAtOTgsNyArOTgsNyBAQAogICAgIGRlZiB0ZXN0X2J5cmVmX3BvaW50ZXIoc2VsZik6CiAgICAgICAgICMgVGhlIGZyb21fcGFyYW0gY2xhc3MgbWV0aG9kIG9mIFBPSU5URVIodHlwKSBjbGFzc2VzIGFjY2VwdHMgd2hhdCBpcwogICAgICAgICAjIHJldHVybmVkIGJ5IGJ5cmVmKG9iaiksIGl0IHR5cGUob2JqKSA9PSB0eXAKLSAgICAgICAgZnJvbSBjdHlwZXMgaW1wb3J0IGNfc2hvcnQsIGNfdWludCwgY19pbnQsIGNfbG9uZywgcG9pbnRlciwgUE9JTlRFUiwgYnlyZWYKKyAgICAgICAgZnJvbSBjdHlwZXMgaW1wb3J0IGNfc2hvcnQsIGNfdWludCwgY19pbnQsIGNfbG9uZywgUE9JTlRFUiwgYnlyZWYKICAgICAgICAgTFBJTlQgPSBQT0lOVEVSKGNfaW50KQogCiAgICAgICAgIExQSU5ULmZyb21fcGFyYW0oYnlyZWYoY19pbnQoNDIpKSkKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3BlcDMxMTgucHkgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wZXAzMTE4LnB5CmluZGV4IDMyZjgwMmMuLmQ2ODM5N2UgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3BlcDMxMTgucHkKKysrIGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcGVwMzExOC5weQpAQCAtMSw2ICsxLDYgQEAKIGltcG9ydCB1bml0dGVzdAogZnJvbSBjdHlwZXMgaW1wb3J0ICoKLWltcG9ydCByZSwgc3RydWN0LCBzeXMKK2ltcG9ydCByZSwgc3lzCiAKIGlmIHN5cy5ieXRlb3JkZXIgPT0gImxpdHRsZSI6CiAgICAgVEhJU19FTkRJQU4gPSAiPCIKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3JldHVybmZ1bmNwdHJzLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcmV0dXJuZnVuY3B0cnMucHkKaW5kZXggOTNlYmE2Yi4uMTk3NGY0MCAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcmV0dXJuZnVuY3B0cnMucHkKKysrIGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcmV0dXJuZnVuY3B0cnMucHkKQEAgLTEsNiArMSw1IEBACiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gY3R5cGVzIGltcG9ydCAqCi1pbXBvcnQgb3MKIAogaW1wb3J0IF9jdHlwZXNfdGVzdAogCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9zaXplcy5weSBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3NpemVzLnB5CmluZGV4IGY5YjVlOTcuLjRjZWFjYmMgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3NpemVzLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3NpemVzLnB5CkBAIC0yLDcgKzIsNiBAQAogCiBmcm9tIGN0eXBlcyBpbXBvcnQgKgogCi1pbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIAogCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9zdHJ1Y3R1cmVzLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3Rfc3RydWN0dXJlcy5weQppbmRleCBjNGE2NTFjLi44ZjZmZTVmIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9zdHJ1Y3R1cmVzLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3N0cnVjdHVyZXMucHkKQEAgLTMyNiwxMSArMzI2LDggQEAKIAogICAgICAgICBjbHMsIG1zZyA9IHNlbGYuZ2V0X2V4Y2VwdChQZXJzb24sIGIiU29tZW9uZSIsIChiImEiLCBiImIiLCBiImMiKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbHMsIFJ1bnRpbWVFcnJvcikKLSAgICAgICAgaWYgaXNzdWJjbGFzcyhFeGNlcHRpb24sIG9iamVjdCk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIoUGhvbmUpIDxjbGFzcyAnVHlwZUVycm9yJz46IHRvbyBtYW55IGluaXRpYWxpemVycyIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgIihQaG9uZSkgVHlwZUVycm9yOiB0b28gbWFueSBpbml0aWFsaXplcnMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIihQaG9uZSkgPGNsYXNzICdUeXBlRXJyb3InPjogdG9vIG1hbnkgaW5pdGlhbGl6ZXJzIikKIAogICAgIGRlZiB0ZXN0X2h1Z2VfZmllbGRfbmFtZShzZWxmKToKICAgICAgICAgIyBpc3N1ZTEyODgxOiBzZWdmYXVsdCB3aXRoIGxhcmdlIHN0cnVjdHVyZSBmaWVsZCBuYW1lcwpkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfdmFsdWVzLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfdmFsdWVzLnB5CmluZGV4IDVhM2E0N2YuLmU3MWI0ODAgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3ZhbHVlcy5weQorKysgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF92YWx1ZXMucHkKQEAgLTc5LDkgKzc5LDkgQEAKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgaXRlbXMuYXBwZW5kKChlbnRyeS5uYW1lLmRlY29kZSgiYXNjaWkiKSwgZW50cnkuc2l6ZSkpCiAKLSAgICAgICAgZXhwZWN0ZWQgPSBbKCJfX2hlbGxvX18iLCAxNjEpLAotICAgICAgICAgICAgICAgICAgICAoIl9fcGhlbGxvX18iLCAtMTYxKSwKLSAgICAgICAgICAgICAgICAgICAgKCJfX3BoZWxsb19fLnNwYW0iLCAxNjEpLAorICAgICAgICBleHBlY3RlZCA9IFsoIl9faGVsbG9fXyIsIDEzOSksCisgICAgICAgICAgICAgICAgICAgICgiX19waGVsbG9fXyIsIC0xMzkpLAorICAgICAgICAgICAgICAgICAgICAoIl9fcGhlbGxvX18uc3BhbSIsIDEzOSksCiAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpdGVtcywgZXhwZWN0ZWQsICJQeUltcG9ydF9Gcm96ZW5Nb2R1bGVzIGV4YW1wbGUgIgogICAgICAgICAgICAgImluIERvYy9saWJyYXJ5L2N0eXBlcy5yc3QgbWF5IGJlIG91dCBvZiBkYXRlIikKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdXRpbC5weSBiL0xpYi9jdHlwZXMvdXRpbC5weQppbmRleCA3Njg0ZWFiLi4zMzlhZThhIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3V0aWwucHkKKysrIGIvTGliL2N0eXBlcy91dGlsLnB5CkBAIC02NywxNiArNjcsNiBAQAogICAgICAgICAgICAgICAgIHJldHVybiBmbmFtZQogICAgICAgICByZXR1cm4gTm9uZQogCi1pZiBvcy5uYW1lID09ICJjZSI6Ci0gICAgIyBzZWFyY2ggcGF0aCBhY2NvcmRpbmcgdG8gTVNETjoKLSAgICAjIC0gYWJzb2x1dGUgcGF0aCBzcGVjaWZpZWQgYnkgZmlsZW5hbWUKLSAgICAjIC0gVGhlIC5leGUgbGF1bmNoIGRpcmVjdG9yeQotICAgICMgLSB0aGUgV2luZG93cyBkaXJlY3RvcnkKLSAgICAjIC0gUk9NIGRsbCBmaWxlcyAod2hlcmUgYXJlIHRoZXk/KQotICAgICMgLSBPRU0gc3BlY2lmaWVkIHNlYXJjaCBwYXRoOiBIS0xNXExvYWRlclxTeXN0ZW1QYXRoCi0gICAgZGVmIGZpbmRfbGlicmFyeShuYW1lKToKLSAgICAgICAgcmV0dXJuIG5hbWUKLQogaWYgb3MubmFtZSA9PSAicG9zaXgiIGFuZCBzeXMucGxhdGZvcm0gPT0gImRhcndpbiI6CiAgICAgZnJvbSBjdHlwZXMubWFjaG9saWIuZHlsZCBpbXBvcnQgZHlsZF9maW5kIGFzIF9keWxkX2ZpbmQKICAgICBkZWYgZmluZF9saWJyYXJ5KG5hbWUpOgpAQCAtMjcxLDggKzI2MSw4IEBACiAgICAgICAgICAgICBhYmlfdHlwZSA9IG1hY2hfbWFwLmdldChtYWNoaW5lLCAnbGliYzYnKQogCiAgICAgICAgICAgICAjIFhYWCBhc3N1bWluZyBHTElCQydzIGxkY29uZmlnICh3aXRoIG9wdGlvbiAtcCkKLSAgICAgICAgICAgIHJlZ2V4ID0gb3MuZnNlbmNvZGUoCi0gICAgICAgICAgICAgICAgJ1xzKyhsaWIlc1wuW15cc10rKVxzK1woJXMnICUgKHJlLmVzY2FwZShuYW1lKSwgYWJpX3R5cGUpKQorICAgICAgICAgICAgcmVnZXggPSByJ1xzKyhsaWIlc1wuW15cc10rKVxzK1woJXMnCisgICAgICAgICAgICByZWdleCA9IG9zLmZzZW5jb2RlKHJlZ2V4ICUgKHJlLmVzY2FwZShuYW1lKSwgYWJpX3R5cGUpKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHdpdGggc3VicHJvY2Vzcy5Qb3BlbihbJy9zYmluL2xkY29uZmlnJywgJy1wJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGluPXN1YnByb2Nlc3MuREVWTlVMTCwKQEAgLTI4NSw4ICsyNzUsMzIgQEAKICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgIHBhc3MKIAorICAgICAgICBkZWYgX2ZpbmRMaWJfbGQobmFtZSk6CisgICAgICAgICAgICAjIFNlZSBpc3N1ZSAjOTk5OCBmb3Igd2h5IHRoaXMgaXMgbmVlZGVkCisgICAgICAgICAgICBleHByID0gcidbXlwoXClcc10qbGliJXNcLlteXChcKVxzXSonICUgcmUuZXNjYXBlKG5hbWUpCisgICAgICAgICAgICBjbWQgPSBbJ2xkJywgJy10J10KKyAgICAgICAgICAgIGxpYnBhdGggPSBvcy5lbnZpcm9uLmdldCgnTERfTElCUkFSWV9QQVRIJykKKyAgICAgICAgICAgIGlmIGxpYnBhdGg6CisgICAgICAgICAgICAgICAgZm9yIGQgaW4gbGlicGF0aC5zcGxpdCgnOicpOgorICAgICAgICAgICAgICAgICAgICBjbWQuZXh0ZW5kKFsnLUwnLCBkXSkKKyAgICAgICAgICAgIGNtZC5leHRlbmQoWyctbycsIG9zLmRldm51bGwsICctbCVzJyAlIG5hbWVdKQorICAgICAgICAgICAgcmVzdWx0ID0gTm9uZQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKGNtZCwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlKQorICAgICAgICAgICAgICAgIG91dCwgXyA9IHAuY29tbXVuaWNhdGUoKQorICAgICAgICAgICAgICAgIHJlcyA9IHJlLnNlYXJjaChleHByLCBvcy5mc2RlY29kZShvdXQpKQorICAgICAgICAgICAgICAgIGlmIHJlczoKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzLmdyb3VwKDApCisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgcGFzcyAgIyByZXN1bHQgd2lsbCBiZSBOb25lCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0CisKICAgICAgICAgZGVmIGZpbmRfbGlicmFyeShuYW1lKToKLSAgICAgICAgICAgIHJldHVybiBfZmluZFNvbmFtZV9sZGNvbmZpZyhuYW1lKSBvciBfZ2V0X3NvbmFtZShfZmluZExpYl9nY2MobmFtZSkpCisgICAgICAgICAgICAjIFNlZSBpc3N1ZSAjOTk5OAorICAgICAgICAgICAgcmV0dXJuIF9maW5kU29uYW1lX2xkY29uZmlnKG5hbWUpIG9yIFwKKyAgICAgICAgICAgICAgICAgICBfZ2V0X3NvbmFtZShfZmluZExpYl9nY2MobmFtZSkgb3IgX2ZpbmRMaWJfbGQobmFtZSkpCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgdGVzdCBjb2RlCmRpZmYgLS1naXQgYS9MaWIvZGF0ZXRpbWUucHkgYi9MaWIvZGF0ZXRpbWUucHkKaW5kZXggYTIxNzhjNy4uNzU0MDEwOSAxMDA2NDQKLS0tIGEvTGliL2RhdGV0aW1lLnB5CisrKyBiL0xpYi9kYXRldGltZS5weQpAQCAtMTUyLDEyICsxNTIsMjYgQEAKICAgICBkbnVtID0gX2RheXNfYmVmb3JlX21vbnRoKHksIG0pICsgZAogICAgIHJldHVybiBfdGltZS5zdHJ1Y3RfdGltZSgoeSwgbSwgZCwgaGgsIG1tLCBzcywgd2RheSwgZG51bSwgZHN0ZmxhZykpCiAKLWRlZiBfZm9ybWF0X3RpbWUoaGgsIG1tLCBzcywgdXMpOgotICAgICMgU2tpcCB0cmFpbGluZyBtaWNyb3NlY29uZHMgd2hlbiB1cz09MC4KLSAgICByZXN1bHQgPSAiJTAyZDolMDJkOiUwMmQiICUgKGhoLCBtbSwgc3MpCi0gICAgaWYgdXM6Ci0gICAgICAgIHJlc3VsdCArPSAiLiUwNmQiICUgdXMKLSAgICByZXR1cm4gcmVzdWx0CitkZWYgX2Zvcm1hdF90aW1lKGhoLCBtbSwgc3MsIHVzLCB0aW1lc3BlYz0nYXV0bycpOgorICAgIHNwZWNzID0geworICAgICAgICAnaG91cnMnOiAnezowMmR9JywKKyAgICAgICAgJ21pbnV0ZXMnOiAnezowMmR9Ons6MDJkfScsCisgICAgICAgICdzZWNvbmRzJzogJ3s6MDJkfTp7OjAyZH06ezowMmR9JywKKyAgICAgICAgJ21pbGxpc2Vjb25kcyc6ICd7OjAyZH06ezowMmR9Ons6MDJkfS57OjAzZH0nLAorICAgICAgICAnbWljcm9zZWNvbmRzJzogJ3s6MDJkfTp7OjAyZH06ezowMmR9Lns6MDZkfScKKyAgICB9CisKKyAgICBpZiB0aW1lc3BlYyA9PSAnYXV0byc6CisgICAgICAgICMgU2tpcCB0cmFpbGluZyBtaWNyb3NlY29uZHMgd2hlbiB1cz09MC4KKyAgICAgICAgdGltZXNwZWMgPSAnbWljcm9zZWNvbmRzJyBpZiB1cyBlbHNlICdzZWNvbmRzJworICAgIGVsaWYgdGltZXNwZWMgPT0gJ21pbGxpc2Vjb25kcyc6CisgICAgICAgIHVzIC8vPSAxMDAwCisgICAgdHJ5OgorICAgICAgICBmbXQgPSBzcGVjc1t0aW1lc3BlY10KKyAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1Vua25vd24gdGltZXNwZWMgdmFsdWUnKQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiBmbXQuZm9ybWF0KGhoLCBtbSwgc3MsIHVzKQogCiAjIENvcnJlY3RseSBzdWJzdGl0dXRlIGZvciAleiBhbmQgJVogZXNjYXBlcyBpbiBzdHJmdGltZSBmb3JtYXRzLgogZGVmIF93cmFwX3N0cmZ0aW1lKG9iamVjdCwgZm9ybWF0LCB0aW1ldHVwbGUpOgpAQCAtMjM2LDExICsyNTAsMTEgQEAKICAgICBpZiBub3QgaXNpbnN0YW5jZShvZmZzZXQsIHRpbWVkZWx0YSk6CiAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigidHppbmZvLiVzKCkgbXVzdCByZXR1cm4gTm9uZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAib3IgdGltZWRlbHRhLCBub3QgJyVzJyIgJSAobmFtZSwgdHlwZShvZmZzZXQpKSkKLSAgICBpZiBvZmZzZXQgJSB0aW1lZGVsdGEobWludXRlcz0xKSBvciBvZmZzZXQubWljcm9zZWNvbmRzOgorICAgIGlmIG9mZnNldC5taWNyb3NlY29uZHM6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInR6aW5mby4lcygpIG11c3QgcmV0dXJuIGEgd2hvbGUgbnVtYmVyICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAib2YgbWludXRlcywgZ290ICVzIiAlIChuYW1lLCBvZmZzZXQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICJvZiBzZWNvbmRzLCBnb3QgJXMiICUgKG5hbWUsIG9mZnNldCkpCiAgICAgaWYgbm90IC10aW1lZGVsdGEoMSkgPCBvZmZzZXQgPCB0aW1lZGVsdGEoMSk6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIiVzKCk9JXMsIG11c3QgYmUgbXVzdCBiZSBzdHJpY3RseSBiZXR3ZWVuICIKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiJXMoKT0lcywgbXVzdCBiZSBzdHJpY3RseSBiZXR3ZWVuICIKICAgICAgICAgICAgICAgICAgICAgICAgICAiLXRpbWVkZWx0YShob3Vycz0yNCkgYW5kIHRpbWVkZWx0YShob3Vycz0yNCkiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAobmFtZSwgb2Zmc2V0KSkKIApAQCAtMjc0LDcgKzI4OCw3IEBACiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2RheSBtdXN0IGJlIGluIDEuLiVkJyAlIGRpbSwgZGF5KQogICAgIHJldHVybiB5ZWFyLCBtb250aCwgZGF5CiAKLWRlZiBfY2hlY2tfdGltZV9maWVsZHMoaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kKToKK2RlZiBfY2hlY2tfdGltZV9maWVsZHMoaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kLCBmb2xkKToKICAgICBob3VyID0gX2NoZWNrX2ludF9maWVsZChob3VyKQogICAgIG1pbnV0ZSA9IF9jaGVja19pbnRfZmllbGQobWludXRlKQogICAgIHNlY29uZCA9IF9jaGVja19pbnRfZmllbGQoc2Vjb25kKQpAQCAtMjg3LDcgKzMwMSw5IEBACiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3NlY29uZCBtdXN0IGJlIGluIDAuLjU5Jywgc2Vjb25kKQogICAgIGlmIG5vdCAwIDw9IG1pY3Jvc2Vjb25kIDw9IDk5OTk5OToKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignbWljcm9zZWNvbmQgbXVzdCBiZSBpbiAwLi45OTk5OTknLCBtaWNyb3NlY29uZCkKLSAgICByZXR1cm4gaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kCisgICAgaWYgZm9sZCBub3QgaW4gKDAsIDEpOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdmb2xkIG11c3QgYmUgZWl0aGVyIDAgb3IgMScsIGZvbGQpCisgICAgcmV0dXJuIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCwgZm9sZAogCiBkZWYgX2NoZWNrX3R6aW5mb19hcmcodHopOgogICAgIGlmIHR6IGlzIG5vdCBOb25lIGFuZCBub3QgaXNpbnN0YW5jZSh0eiwgdHppbmZvKToKQEAgLTMxNiw2ICszMzIsNyBAQAogCiAgICAgcmV0dXJuIHEKIAorCiBjbGFzcyB0aW1lZGVsdGE6CiAgICAgIiIiUmVwcmVzZW50IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdHdvIGRhdGV0aW1lIG9iamVjdHMuCiAKQEAgLTkzMiw2ICs5NDksNyBAQAogZGF0ZS5tYXggPSBkYXRlKDk5OTksIDEyLCAzMSkKIGRhdGUucmVzb2x1dGlvbiA9IHRpbWVkZWx0YShkYXlzPTEpCiAKKwogY2xhc3MgdHppbmZvOgogICAgICIiIkFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIHRpbWUgem9uZSBpbmZvIGNsYXNzZXMuCiAKQEAgLTEwMjMsMTEgKzEwNDEsMTEgQEAKICAgICBkc3QoKQogCiAgICAgUHJvcGVydGllcyAocmVhZG9ubHkpOgotICAgIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCwgdHppbmZvCisgICAgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kLCB0emluZm8sIGZvbGQKICAgICAiIiIKLSAgICBfX3Nsb3RzX18gPSAnX2hvdXInLCAnX21pbnV0ZScsICdfc2Vjb25kJywgJ19taWNyb3NlY29uZCcsICdfdHppbmZvJywgJ19oYXNoY29kZScKKyAgICBfX3Nsb3RzX18gPSAnX2hvdXInLCAnX21pbnV0ZScsICdfc2Vjb25kJywgJ19taWNyb3NlY29uZCcsICdfdHppbmZvJywgJ19oYXNoY29kZScsICdfZm9sZCcKIAotICAgIGRlZiBfX25ld19fKGNscywgaG91cj0wLCBtaW51dGU9MCwgc2Vjb25kPTAsIG1pY3Jvc2Vjb25kPTAsIHR6aW5mbz1Ob25lKToKKyAgICBkZWYgX19uZXdfXyhjbHMsIGhvdXI9MCwgbWludXRlPTAsIHNlY29uZD0wLCBtaWNyb3NlY29uZD0wLCB0emluZm89Tm9uZSwgKiwgZm9sZD0wKToKICAgICAgICAgIiIiQ29uc3RydWN0b3IuCiAKICAgICAgICAgQXJndW1lbnRzOgpAQCAtMTAzNSwxNSArMTA1MywxNiBAQAogICAgICAgICBob3VyLCBtaW51dGUgKHJlcXVpcmVkKQogICAgICAgICBzZWNvbmQsIG1pY3Jvc2Vjb25kIChkZWZhdWx0IHRvIHplcm8pCiAgICAgICAgIHR6aW5mbyAoZGVmYXVsdCB0byBOb25lKQorICAgICAgICBmb2xkIChrZXl3b3JkIG9ubHksIGRlZmF1bHQgdG8gVHJ1ZSkKICAgICAgICAgIiIiCi0gICAgICAgIGlmIGlzaW5zdGFuY2UoaG91ciwgYnl0ZXMpIGFuZCBsZW4oaG91cikgPT0gNiBhbmQgaG91clswXSA8IDI0OgorICAgICAgICBpZiBpc2luc3RhbmNlKGhvdXIsIGJ5dGVzKSBhbmQgbGVuKGhvdXIpID09IDYgYW5kIGhvdXJbMF0mMHg3RiA8IDI0OgogICAgICAgICAgICAgIyBQaWNrbGUgc3VwcG9ydAogICAgICAgICAgICAgc2VsZiA9IG9iamVjdC5fX25ld19fKGNscykKICAgICAgICAgICAgIHNlbGYuX19zZXRzdGF0ZShob3VyLCBtaW51dGUgb3IgTm9uZSkKICAgICAgICAgICAgIHNlbGYuX2hhc2hjb2RlID0gLTEKICAgICAgICAgICAgIHJldHVybiBzZWxmCi0gICAgICAgIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCA9IF9jaGVja190aW1lX2ZpZWxkcygKLSAgICAgICAgICAgIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCkKKyAgICAgICAgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kLCBmb2xkID0gX2NoZWNrX3RpbWVfZmllbGRzKAorICAgICAgICAgICAgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kLCBmb2xkKQogICAgICAgICBfY2hlY2tfdHppbmZvX2FyZyh0emluZm8pCiAgICAgICAgIHNlbGYgPSBvYmplY3QuX19uZXdfXyhjbHMpCiAgICAgICAgIHNlbGYuX2hvdXIgPSBob3VyCkBAIC0xMDUyLDYgKzEwNzEsNyBAQAogICAgICAgICBzZWxmLl9taWNyb3NlY29uZCA9IG1pY3Jvc2Vjb25kCiAgICAgICAgIHNlbGYuX3R6aW5mbyA9IHR6aW5mbwogICAgICAgICBzZWxmLl9oYXNoY29kZSA9IC0xCisgICAgICAgIHNlbGYuX2ZvbGQgPSBmb2xkCiAgICAgICAgIHJldHVybiBzZWxmCiAKICAgICAjIFJlYWQtb25seSBmaWVsZCBhY2Nlc3NvcnMKQEAgLTEwODAsNiArMTEwMCwxMCBAQAogICAgICAgICAiIiJ0aW1lem9uZSBpbmZvIG9iamVjdCIiIgogICAgICAgICByZXR1cm4gc2VsZi5fdHppbmZvCiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZm9sZChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2ZvbGQKKwogICAgICMgU3RhbmRhcmQgY29udmVyc2lvbnMsIF9faGFzaF9fIChhbmQgaGVscGVycykKIAogICAgICMgQ29tcGFyaXNvbnMgb2YgdGltZSBvYmplY3RzIHdpdGggb3RoZXIuCkBAIC0xMTQ1LDkgKzExNjksMTMgQEAKICAgICBkZWYgX19oYXNoX18oc2VsZik6CiAgICAgICAgICIiIkhhc2guIiIiCiAgICAgICAgIGlmIHNlbGYuX2hhc2hjb2RlID09IC0xOgotICAgICAgICAgICAgdHpvZmYgPSBzZWxmLnV0Y29mZnNldCgpCisgICAgICAgICAgICBpZiBzZWxmLmZvbGQ6CisgICAgICAgICAgICAgICAgdCA9IHNlbGYucmVwbGFjZShmb2xkPTApCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHQgPSBzZWxmCisgICAgICAgICAgICB0em9mZiA9IHQudXRjb2Zmc2V0KCkKICAgICAgICAgICAgIGlmIG5vdCB0em9mZjogICMgemVybyBvciBOb25lCi0gICAgICAgICAgICAgICAgc2VsZi5faGFzaGNvZGUgPSBoYXNoKHNlbGYuX2dldHN0YXRlKClbMF0pCisgICAgICAgICAgICAgICAgc2VsZi5faGFzaGNvZGUgPSBoYXNoKHQuX2dldHN0YXRlKClbMF0pCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGgsIG0gPSBkaXZtb2QodGltZWRlbHRhKGhvdXJzPXNlbGYuaG91ciwgbWludXRlcz1zZWxmLm1pbnV0ZSkgLSB0em9mZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVkZWx0YShob3Vycz0xKSkKQEAgLTExNzEsMTAgKzExOTksMTEgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc2lnbiA9ICIrIgogICAgICAgICAgICAgaGgsIG1tID0gZGl2bW9kKG9mZiwgdGltZWRlbHRhKGhvdXJzPTEpKQotICAgICAgICAgICAgYXNzZXJ0IG5vdCBtbSAlIHRpbWVkZWx0YShtaW51dGVzPTEpLCAid2hvbGUgbWludXRlIgotICAgICAgICAgICAgbW0gLy89IHRpbWVkZWx0YShtaW51dGVzPTEpCisgICAgICAgICAgICBtbSwgc3MgPSBkaXZtb2QobW0sIHRpbWVkZWx0YShtaW51dGVzPTEpKQogICAgICAgICAgICAgYXNzZXJ0IDAgPD0gaGggPCAyNAogICAgICAgICAgICAgb2ZmID0gIiVzJTAyZCVzJTAyZCIgJSAoc2lnbiwgaGgsIHNlcCwgbW0pCisgICAgICAgICAgICBpZiBzczoKKyAgICAgICAgICAgICAgICBvZmYgKz0gJzolMDJkJyAlIHNzLnNlY29uZHMKICAgICAgICAgcmV0dXJuIG9mZgogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgpAQCAtMTE5MSwxNiArMTIyMCwyMiBAQAogICAgICAgICBpZiBzZWxmLl90emluZm8gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBhc3NlcnQgc1stMTpdID09ICIpIgogICAgICAgICAgICAgcyA9IHNbOi0xXSArICIsIHR6aW5mbz0lciIgJSBzZWxmLl90emluZm8gKyAiKSIKKyAgICAgICAgaWYgc2VsZi5fZm9sZDoKKyAgICAgICAgICAgIGFzc2VydCBzWy0xOl0gPT0gIikiCisgICAgICAgICAgICBzID0gc1s6LTFdICsgIiwgZm9sZD0xKSIKICAgICAgICAgcmV0dXJuIHMKIAotICAgIGRlZiBpc29mb3JtYXQoc2VsZik6CisgICAgZGVmIGlzb2Zvcm1hdChzZWxmLCB0aW1lc3BlYz0nYXV0bycpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIHRpbWUgZm9ybWF0dGVkIGFjY29yZGluZyB0byBJU08uCiAKLSAgICAgICAgVGhpcyBpcyAnSEg6TU06U1MubW1tbW1tK3p6Onp6Jywgb3IgJ0hIOk1NOlNTK3p6Onp6JyBpZgotICAgICAgICBzZWxmLm1pY3Jvc2Vjb25kID09IDAuCisgICAgICAgIFRoZSBmdWxsIGZvcm1hdCBpcyAnSEg6TU06U1MubW1tbW1tK3p6Onp6Jy4gQnkgZGVmYXVsdCwgdGhlIGZyYWN0aW9uYWwKKyAgICAgICAgcGFydCBpcyBvbWl0dGVkIGlmIHNlbGYubWljcm9zZWNvbmQgPT0gMC4KKworICAgICAgICBUaGUgb3B0aW9uYWwgYXJndW1lbnQgdGltZXNwZWMgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgYWRkaXRpb25hbAorICAgICAgICB0ZXJtcyBvZiB0aGUgdGltZSB0byBpbmNsdWRlLgogICAgICAgICAiIiIKICAgICAgICAgcyA9IF9mb3JtYXRfdGltZShzZWxmLl9ob3VyLCBzZWxmLl9taW51dGUsIHNlbGYuX3NlY29uZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9taWNyb3NlY29uZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbWljcm9zZWNvbmQsIHRpbWVzcGVjKQogICAgICAgICB0eiA9IHNlbGYuX3R6c3RyKCkKICAgICAgICAgaWYgdHo6CiAgICAgICAgICAgICBzICs9IHR6CkBAIC0xMjY2LDcgKzEzMDEsNyBAQAogICAgICAgICByZXR1cm4gb2Zmc2V0CiAKICAgICBkZWYgcmVwbGFjZShzZWxmLCBob3VyPU5vbmUsIG1pbnV0ZT1Ob25lLCBzZWNvbmQ9Tm9uZSwgbWljcm9zZWNvbmQ9Tm9uZSwKLSAgICAgICAgICAgICAgICB0emluZm89VHJ1ZSk6CisgICAgICAgICAgICAgICAgdHppbmZvPVRydWUsICosIGZvbGQ9Tm9uZSk6CiAgICAgICAgICIiIlJldHVybiBhIG5ldyB0aW1lIHdpdGggbmV3IHZhbHVlcyBmb3IgdGhlIHNwZWNpZmllZCBmaWVsZHMuIiIiCiAgICAgICAgIGlmIGhvdXIgaXMgTm9uZToKICAgICAgICAgICAgIGhvdXIgPSBzZWxmLmhvdXIKQEAgLTEyNzgsMTQgKzEzMTMsMTkgQEAKICAgICAgICAgICAgIG1pY3Jvc2Vjb25kID0gc2VsZi5taWNyb3NlY29uZAogICAgICAgICBpZiB0emluZm8gaXMgVHJ1ZToKICAgICAgICAgICAgIHR6aW5mbyA9IHNlbGYudHppbmZvCi0gICAgICAgIHJldHVybiB0aW1lKGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCwgdHppbmZvKQorICAgICAgICBpZiBmb2xkIGlzIE5vbmU6CisgICAgICAgICAgICBmb2xkID0gc2VsZi5fZm9sZAorICAgICAgICByZXR1cm4gdGltZShob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQsIHR6aW5mbywgZm9sZD1mb2xkKQogCiAgICAgIyBQaWNrbGUgc3VwcG9ydC4KIAotICAgIGRlZiBfZ2V0c3RhdGUoc2VsZik6CisgICAgZGVmIF9nZXRzdGF0ZShzZWxmLCBwcm90b2NvbD0zKToKICAgICAgICAgdXMyLCB1czMgPSBkaXZtb2Qoc2VsZi5fbWljcm9zZWNvbmQsIDI1NikKICAgICAgICAgdXMxLCB1czIgPSBkaXZtb2QodXMyLCAyNTYpCi0gICAgICAgIGJhc2VzdGF0ZSA9IGJ5dGVzKFtzZWxmLl9ob3VyLCBzZWxmLl9taW51dGUsIHNlbGYuX3NlY29uZCwKKyAgICAgICAgaCA9IHNlbGYuX2hvdXIKKyAgICAgICAgaWYgc2VsZi5fZm9sZCBhbmQgcHJvdG9jb2wgPiAzOgorICAgICAgICAgICAgaCArPSAxMjgKKyAgICAgICAgYmFzZXN0YXRlID0gYnl0ZXMoW2gsIHNlbGYuX21pbnV0ZSwgc2VsZi5fc2Vjb25kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdXMxLCB1czIsIHVzM10pCiAgICAgICAgIGlmIHNlbGYuX3R6aW5mbyBpcyBOb25lOgogICAgICAgICAgICAgcmV0dXJuIChiYXNlc3RhdGUsKQpAQCAtMTI5NSwxMiArMTMzNSwyMSBAQAogICAgIGRlZiBfX3NldHN0YXRlKHNlbGYsIHN0cmluZywgdHppbmZvKToKICAgICAgICAgaWYgdHppbmZvIGlzIG5vdCBOb25lIGFuZCBub3QgaXNpbnN0YW5jZSh0emluZm8sIF90emluZm9fY2xhc3MpOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJiYWQgdHppbmZvIHN0YXRlIGFyZyIpCi0gICAgICAgIHNlbGYuX2hvdXIsIHNlbGYuX21pbnV0ZSwgc2VsZi5fc2Vjb25kLCB1czEsIHVzMiwgdXMzID0gc3RyaW5nCisgICAgICAgIGgsIHNlbGYuX21pbnV0ZSwgc2VsZi5fc2Vjb25kLCB1czEsIHVzMiwgdXMzID0gc3RyaW5nCisgICAgICAgIGlmIGggPiAxMjc6CisgICAgICAgICAgICBzZWxmLl9mb2xkID0gMQorICAgICAgICAgICAgc2VsZi5faG91ciA9IGggLSAxMjgKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX2ZvbGQgPSAwCisgICAgICAgICAgICBzZWxmLl9ob3VyID0gaAogICAgICAgICBzZWxmLl9taWNyb3NlY29uZCA9ICgoKHVzMSA8PCA4KSB8IHVzMikgPDwgOCkgfCB1czMKICAgICAgICAgc2VsZi5fdHppbmZvID0gdHppbmZvCiAKKyAgICBkZWYgX19yZWR1Y2VfZXhfXyhzZWxmLCBwcm90b2NvbCk6CisgICAgICAgIHJldHVybiAodGltZSwgc2VsZi5fZ2V0c3RhdGUocHJvdG9jb2wpKQorCiAgICAgZGVmIF9fcmVkdWNlX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAodGltZSwgc2VsZi5fZ2V0c3RhdGUoKSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX19yZWR1Y2VfZXhfXygyKQogCiBfdGltZV9jbGFzcyA9IHRpbWUgICMgc28gZnVuY3Rpb25zIHcvIGFyZ3MgbmFtZWQgInRpbWUiIGNhbiBnZXQgYXQgdGhlIGNsYXNzCiAKQEAgLTEzMTcsMTYgKzEzNjYsMTYgQEAKICAgICBfX3Nsb3RzX18gPSBkYXRlLl9fc2xvdHNfXyArIHRpbWUuX19zbG90c19fCiAKICAgICBkZWYgX19uZXdfXyhjbHMsIHllYXIsIG1vbnRoPU5vbmUsIGRheT1Ob25lLCBob3VyPTAsIG1pbnV0ZT0wLCBzZWNvbmQ9MCwKLSAgICAgICAgICAgICAgICBtaWNyb3NlY29uZD0wLCB0emluZm89Tm9uZSk6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2UoeWVhciwgYnl0ZXMpIGFuZCBsZW4oeWVhcikgPT0gMTAgYW5kIDEgPD0geWVhclsyXSA8PSAxMjoKKyAgICAgICAgICAgICAgICBtaWNyb3NlY29uZD0wLCB0emluZm89Tm9uZSwgKiwgZm9sZD0wKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZSh5ZWFyLCBieXRlcykgYW5kIGxlbih5ZWFyKSA9PSAxMCBhbmQgMSA8PSB5ZWFyWzJdJjB4N0YgPD0gMTI6CiAgICAgICAgICAgICAjIFBpY2tsZSBzdXBwb3J0CiAgICAgICAgICAgICBzZWxmID0gb2JqZWN0Ll9fbmV3X18oY2xzKQogICAgICAgICAgICAgc2VsZi5fX3NldHN0YXRlKHllYXIsIG1vbnRoKQogICAgICAgICAgICAgc2VsZi5faGFzaGNvZGUgPSAtMQogICAgICAgICAgICAgcmV0dXJuIHNlbGYKICAgICAgICAgeWVhciwgbW9udGgsIGRheSA9IF9jaGVja19kYXRlX2ZpZWxkcyh5ZWFyLCBtb250aCwgZGF5KQotICAgICAgICBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQgPSBfY2hlY2tfdGltZV9maWVsZHMoCi0gICAgICAgICAgICBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQpCisgICAgICAgIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCwgZm9sZCA9IF9jaGVja190aW1lX2ZpZWxkcygKKyAgICAgICAgICAgIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCwgZm9sZCkKICAgICAgICAgX2NoZWNrX3R6aW5mb19hcmcodHppbmZvKQogICAgICAgICBzZWxmID0gb2JqZWN0Ll9fbmV3X18oY2xzKQogICAgICAgICBzZWxmLl95ZWFyID0geWVhcgpAQCAtMTMzOCw2ICsxMzg3LDcgQEAKICAgICAgICAgc2VsZi5fbWljcm9zZWNvbmQgPSBtaWNyb3NlY29uZAogICAgICAgICBzZWxmLl90emluZm8gPSB0emluZm8KICAgICAgICAgc2VsZi5faGFzaGNvZGUgPSAtMQorICAgICAgICBzZWxmLl9mb2xkID0gZm9sZAogICAgICAgICByZXR1cm4gc2VsZgogCiAgICAgIyBSZWFkLW9ubHkgZmllbGQgYWNjZXNzb3JzCkBAIC0xMzY2LDYgKzE0MTYsMTAgQEAKICAgICAgICAgIiIidGltZXpvbmUgaW5mbyBvYmplY3QiIiIKICAgICAgICAgcmV0dXJuIHNlbGYuX3R6aW5mbwogCisgICAgQHByb3BlcnR5CisgICAgZGVmIGZvbGQoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9mb2xkCisKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgX2Zyb210aW1lc3RhbXAoY2xzLCB0LCB1dGMsIHR6KToKICAgICAgICAgIiIiQ29uc3RydWN0IGEgZGF0ZXRpbWUgZnJvbSBhIFBPU0lYIHRpbWVzdGFtcCAobGlrZSB0aW1lLnRpbWUoKSkuCkBAIC0xMzg0LDcgKzE0MzgsMjMgQEAKICAgICAgICAgY29udmVydGVyID0gX3RpbWUuZ210aW1lIGlmIHV0YyBlbHNlIF90aW1lLmxvY2FsdGltZQogICAgICAgICB5LCBtLCBkLCBoaCwgbW0sIHNzLCB3ZWVrZGF5LCBqZGF5LCBkc3QgPSBjb252ZXJ0ZXIodCkKICAgICAgICAgc3MgPSBtaW4oc3MsIDU5KSAgICAjIGNsYW1wIG91dCBsZWFwIHNlY29uZHMgaWYgdGhlIHBsYXRmb3JtIGhhcyB0aGVtCi0gICAgICAgIHJldHVybiBjbHMoeSwgbSwgZCwgaGgsIG1tLCBzcywgdXMsIHR6KQorICAgICAgICByZXN1bHQgPSBjbHMoeSwgbSwgZCwgaGgsIG1tLCBzcywgdXMsIHR6KQorICAgICAgICBpZiB0eiBpcyBOb25lOgorICAgICAgICAgICAgIyBBcyBvZiB2ZXJzaW9uIDIwMTVmIG1heCBmb2xkIGluIElBTkEgZGF0YWJhc2UgaXMKKyAgICAgICAgICAgICMgMjMgaG91cnMgYXQgMTk2OS0wOS0zMCAxMzowMDowMCBpbiBLd2FqYWxlaW4uCisgICAgICAgICAgICAjIExldCdzIHByb2JlIDI0IGhvdXJzIGluIHRoZSBwYXN0IHRvIGRldGVjdCBhIHRyYW5zaXRpb246CisgICAgICAgICAgICBtYXhfZm9sZF9zZWNvbmRzID0gMjQgKiAzNjAwCisgICAgICAgICAgICB5LCBtLCBkLCBoaCwgbW0sIHNzID0gY29udmVydGVyKHQgLSBtYXhfZm9sZF9zZWNvbmRzKVs6Nl0KKyAgICAgICAgICAgIHByb2JlMSA9IGNscyh5LCBtLCBkLCBoaCwgbW0sIHNzLCB1cywgdHopCisgICAgICAgICAgICB0cmFucyA9IHJlc3VsdCAtIHByb2JlMSAtIHRpbWVkZWx0YSgwLCBtYXhfZm9sZF9zZWNvbmRzKQorICAgICAgICAgICAgaWYgdHJhbnMuZGF5cyA8IDA6CisgICAgICAgICAgICAgICAgeSwgbSwgZCwgaGgsIG1tLCBzcyA9IGNvbnZlcnRlcih0ICsgdHJhbnMgLy8gdGltZWRlbHRhKDAsIDEpKVs6Nl0KKyAgICAgICAgICAgICAgICBwcm9iZTIgPSBjbHMoeSwgbSwgZCwgaGgsIG1tLCBzcywgdXMsIHR6KQorICAgICAgICAgICAgICAgIGlmIHByb2JlMiA9PSByZXN1bHQ6CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5fZm9sZCA9IDEKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlc3VsdCA9IHR6LmZyb211dGMocmVzdWx0KQorICAgICAgICByZXR1cm4gcmVzdWx0CiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgZnJvbXRpbWVzdGFtcChjbHMsIHQsIHR6PU5vbmUpOgpAQCAtMTM5NCwxMCArMTQ2NCw3IEBACiAgICAgICAgICIiIgogICAgICAgICBfY2hlY2tfdHppbmZvX2FyZyh0eikKIAotICAgICAgICByZXN1bHQgPSBjbHMuX2Zyb210aW1lc3RhbXAodCwgdHogaXMgbm90IE5vbmUsIHR6KQotICAgICAgICBpZiB0eiBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHJlc3VsdCA9IHR6LmZyb211dGMocmVzdWx0KQotICAgICAgICByZXR1cm4gcmVzdWx0CisgICAgICAgIHJldHVybiBjbHMuX2Zyb210aW1lc3RhbXAodCwgdHogaXMgbm90IE5vbmUsIHR6KQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHV0Y2Zyb210aW1lc3RhbXAoY2xzLCB0KToKQEAgLTE0MTcsMTUgKzE0ODQsMTcgQEAKICAgICAgICAgcmV0dXJuIGNscy51dGNmcm9tdGltZXN0YW1wKHQpCiAKICAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgY29tYmluZShjbHMsIGRhdGUsIHRpbWUpOgorICAgIGRlZiBjb21iaW5lKGNscywgZGF0ZSwgdGltZSwgdHppbmZvPVRydWUpOgogICAgICAgICAiQ29uc3RydWN0IGEgZGF0ZXRpbWUgZnJvbSBhIGdpdmVuIGRhdGUgYW5kIGEgZ2l2ZW4gdGltZS4iCiAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGRhdGUsIF9kYXRlX2NsYXNzKToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZGF0ZSBhcmd1bWVudCBtdXN0IGJlIGEgZGF0ZSBpbnN0YW5jZSIpCiAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHRpbWUsIF90aW1lX2NsYXNzKToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigidGltZSBhcmd1bWVudCBtdXN0IGJlIGEgdGltZSBpbnN0YW5jZSIpCisgICAgICAgIGlmIHR6aW5mbyBpcyBUcnVlOgorICAgICAgICAgICAgdHppbmZvID0gdGltZS50emluZm8KICAgICAgICAgcmV0dXJuIGNscyhkYXRlLnllYXIsIGRhdGUubW9udGgsIGRhdGUuZGF5LAogICAgICAgICAgICAgICAgICAgIHRpbWUuaG91ciwgdGltZS5taW51dGUsIHRpbWUuc2Vjb25kLCB0aW1lLm1pY3Jvc2Vjb25kLAotICAgICAgICAgICAgICAgICAgIHRpbWUudHppbmZvKQorICAgICAgICAgICAgICAgICAgIHR6aW5mbywgZm9sZD10aW1lLmZvbGQpCiAKICAgICBkZWYgdGltZXR1cGxlKHNlbGYpOgogICAgICAgICAiUmV0dXJuIGxvY2FsIHRpbWUgdHVwbGUgY29tcGF0aWJsZSB3aXRoIHRpbWUubG9jYWx0aW1lKCkuIgpAQCAtMTQ0MCwxMiArMTUwOSw0NiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaG91ciwgc2VsZi5taW51dGUsIHNlbGYuc2Vjb25kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdCkKIAorICAgIGRlZiBfbWt0aW1lKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gaW50ZWdlciBQT1NJWCB0aW1lc3RhbXAuIiIiCisgICAgICAgIGVwb2NoID0gZGF0ZXRpbWUoMTk3MCwgMSwgMSkKKyAgICAgICAgbWF4X2ZvbGRfc2Vjb25kcyA9IDI0ICogMzYwMAorICAgICAgICB0ID0gKHNlbGYgLSBlcG9jaCkgLy8gdGltZWRlbHRhKDAsIDEpCisgICAgICAgIGRlZiBsb2NhbCh1KToKKyAgICAgICAgICAgIHksIG0sIGQsIGhoLCBtbSwgc3MgPSBfdGltZS5sb2NhbHRpbWUodSlbOjZdCisgICAgICAgICAgICByZXR1cm4gKGRhdGV0aW1lKHksIG0sIGQsIGhoLCBtbSwgc3MpIC0gZXBvY2gpIC8vIHRpbWVkZWx0YSgwLCAxKQorCisgICAgICAgICMgT3VyIGdvYWwgaXMgdG8gc29sdmUgdCA9IGxvY2FsKHUpIGZvciB1LgorICAgICAgICBhID0gbG9jYWwodCkgLSB0CisgICAgICAgIHUxID0gdCAtIGEKKyAgICAgICAgdDEgPSBsb2NhbCh1MSkKKyAgICAgICAgaWYgdDEgPT0gdDoKKyAgICAgICAgICAgICMgV2UgZm91bmQgb25lIHNvbHV0aW9uLCBidXQgaXQgbWF5IG5vdCBiZSB0aGUgb25lIHdlIG5lZWQuCisgICAgICAgICAgICAjIExvb2sgZm9yIGFuIGVhcmxpZXIgc29sdXRpb24gKGlmIGBmb2xkYCBpcyAwKSwgb3IgYQorICAgICAgICAgICAgIyBsYXRlciBvbmUgKGlmIGBmb2xkYCBpcyAxKS4KKyAgICAgICAgICAgIHUyID0gdTEgKyAoLW1heF9mb2xkX3NlY29uZHMsIG1heF9mb2xkX3NlY29uZHMpW3NlbGYuZm9sZF0KKyAgICAgICAgICAgIGIgPSBsb2NhbCh1MikgLSB1MgorICAgICAgICAgICAgaWYgYSA9PSBiOgorICAgICAgICAgICAgICAgIHJldHVybiB1MQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYiA9IHQxIC0gdTEKKyAgICAgICAgICAgIGFzc2VydCBhICE9IGIKKyAgICAgICAgdTIgPSB0IC0gYgorICAgICAgICB0MiA9IGxvY2FsKHUyKQorICAgICAgICBpZiB0MiA9PSB0OgorICAgICAgICAgICAgcmV0dXJuIHUyCisgICAgICAgIGlmIHQxID09IHQ6CisgICAgICAgICAgICByZXR1cm4gdTEKKyAgICAgICAgIyBXZSBoYXZlIGZvdW5kIGJvdGggb2Zmc2V0cyBhIGFuZCBiLCBidXQgbmVpdGhlciB0IC0gYSBub3IgdCAtIGIgaXMKKyAgICAgICAgIyBhIHNvbHV0aW9uLiAgVGhpcyBtZWFucyB0IGlzIGluIHRoZSBnYXAuCisgICAgICAgIHJldHVybiAobWF4LCBtaW4pW3NlbGYuZm9sZF0odTEsIHUyKQorCisKICAgICBkZWYgdGltZXN0YW1wKHNlbGYpOgogICAgICAgICAiUmV0dXJuIFBPU0lYIHRpbWVzdGFtcCBhcyBmbG9hdCIKICAgICAgICAgaWYgc2VsZi5fdHppbmZvIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gX3RpbWUubWt0aW1lKChzZWxmLnllYXIsIHNlbGYubW9udGgsIHNlbGYuZGF5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5ob3VyLCBzZWxmLm1pbnV0ZSwgc2VsZi5zZWNvbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSwgLTEsIC0xKSkgKyBzZWxmLm1pY3Jvc2Vjb25kIC8gMWU2CisgICAgICAgICAgICBzID0gc2VsZi5fbWt0aW1lKCkKKyAgICAgICAgICAgIHJldHVybiBzICsgc2VsZi5taWNyb3NlY29uZCAvIDFlNgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIChzZWxmIC0gX0VQT0NIKS50b3RhbF9zZWNvbmRzKCkKIApAQCAtMTQ2NCwxNSArMTU2NywxNiBAQAogCiAgICAgZGVmIHRpbWUoc2VsZik6CiAgICAgICAgICJSZXR1cm4gdGhlIHRpbWUgcGFydCwgd2l0aCB0emluZm8gTm9uZS4iCi0gICAgICAgIHJldHVybiB0aW1lKHNlbGYuaG91ciwgc2VsZi5taW51dGUsIHNlbGYuc2Vjb25kLCBzZWxmLm1pY3Jvc2Vjb25kKQorICAgICAgICByZXR1cm4gdGltZShzZWxmLmhvdXIsIHNlbGYubWludXRlLCBzZWxmLnNlY29uZCwgc2VsZi5taWNyb3NlY29uZCwgZm9sZD1zZWxmLmZvbGQpCiAKICAgICBkZWYgdGltZXR6KHNlbGYpOgogICAgICAgICAiUmV0dXJuIHRoZSB0aW1lIHBhcnQsIHdpdGggc2FtZSB0emluZm8uIgogICAgICAgICByZXR1cm4gdGltZShzZWxmLmhvdXIsIHNlbGYubWludXRlLCBzZWxmLnNlY29uZCwgc2VsZi5taWNyb3NlY29uZCwKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fdHppbmZvKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl90emluZm8sIGZvbGQ9c2VsZi5mb2xkKQogCiAgICAgZGVmIHJlcGxhY2Uoc2VsZiwgeWVhcj1Ob25lLCBtb250aD1Ob25lLCBkYXk9Tm9uZSwgaG91cj1Ob25lLAotICAgICAgICAgICAgICAgIG1pbnV0ZT1Ob25lLCBzZWNvbmQ9Tm9uZSwgbWljcm9zZWNvbmQ9Tm9uZSwgdHppbmZvPVRydWUpOgorICAgICAgICAgICAgICAgIG1pbnV0ZT1Ob25lLCBzZWNvbmQ9Tm9uZSwgbWljcm9zZWNvbmQ9Tm9uZSwgdHppbmZvPVRydWUsCisgICAgICAgICAgICAgICAgKiwgZm9sZD1Ob25lKToKICAgICAgICAgIiIiUmV0dXJuIGEgbmV3IGRhdGV0aW1lIHdpdGggbmV3IHZhbHVlcyBmb3IgdGhlIHNwZWNpZmllZCBmaWVsZHMuIiIiCiAgICAgICAgIGlmIHllYXIgaXMgTm9uZToKICAgICAgICAgICAgIHllYXIgPSBzZWxmLnllYXIKQEAgLTE0OTAsNDYgKzE1OTQsNDUgQEAKICAgICAgICAgICAgIG1pY3Jvc2Vjb25kID0gc2VsZi5taWNyb3NlY29uZAogICAgICAgICBpZiB0emluZm8gaXMgVHJ1ZToKICAgICAgICAgICAgIHR6aW5mbyA9IHNlbGYudHppbmZvCi0gICAgICAgIHJldHVybiBkYXRldGltZSh5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICB0emluZm8pCisgICAgICAgIGlmIGZvbGQgaXMgTm9uZToKKyAgICAgICAgICAgIGZvbGQgPSBzZWxmLmZvbGQKKyAgICAgICAgcmV0dXJuIGRhdGV0aW1lKHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLAorICAgICAgICAgICAgICAgICAgICAgICAgICBtaWNyb3NlY29uZCwgdHppbmZvLCBmb2xkPWZvbGQpCisKKyAgICBkZWYgX2xvY2FsX3RpbWV6b25lKHNlbGYpOgorICAgICAgICBpZiBzZWxmLnR6aW5mbyBpcyBOb25lOgorICAgICAgICAgICAgdHMgPSBzZWxmLl9ta3RpbWUoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdHMgPSAoc2VsZiAtIF9FUE9DSCkgLy8gdGltZWRlbHRhKHNlY29uZHM9MSkKKyAgICAgICAgbG9jYWx0bSA9IF90aW1lLmxvY2FsdGltZSh0cykKKyAgICAgICAgbG9jYWwgPSBkYXRldGltZSgqbG9jYWx0bVs6Nl0pCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgRXh0cmFjdCBUWiBkYXRhIGlmIGF2YWlsYWJsZQorICAgICAgICAgICAgZ210b2ZmID0gbG9jYWx0bS50bV9nbXRvZmYKKyAgICAgICAgICAgIHpvbmUgPSBsb2NhbHRtLnRtX3pvbmUKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgZGVsdGEgPSBsb2NhbCAtIGRhdGV0aW1lKCpfdGltZS5nbXRpbWUodHMpWzo2XSkKKyAgICAgICAgICAgIHpvbmUgPSBfdGltZS5zdHJmdGltZSgnJVonLCBsb2NhbHRtKQorICAgICAgICAgICAgdHogPSB0aW1lem9uZShkZWx0YSwgem9uZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHR6ID0gdGltZXpvbmUodGltZWRlbHRhKHNlY29uZHM9Z210b2ZmKSwgem9uZSkKKyAgICAgICAgcmV0dXJuIHR6CiAKICAgICBkZWYgYXN0aW1lem9uZShzZWxmLCB0ej1Ob25lKToKICAgICAgICAgaWYgdHogaXMgTm9uZToKLSAgICAgICAgICAgIGlmIHNlbGYudHppbmZvIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiYXN0aW1lem9uZSgpIHJlcXVpcmVzIGFuIGF3YXJlIGRhdGV0aW1lIikKLSAgICAgICAgICAgIHRzID0gKHNlbGYgLSBfRVBPQ0gpIC8vIHRpbWVkZWx0YShzZWNvbmRzPTEpCi0gICAgICAgICAgICBsb2NhbHRtID0gX3RpbWUubG9jYWx0aW1lKHRzKQotICAgICAgICAgICAgbG9jYWwgPSBkYXRldGltZSgqbG9jYWx0bVs6Nl0pCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgIyBFeHRyYWN0IFRaIGRhdGEgaWYgYXZhaWxhYmxlCi0gICAgICAgICAgICAgICAgZ210b2ZmID0gbG9jYWx0bS50bV9nbXRvZmYKLSAgICAgICAgICAgICAgICB6b25lID0gbG9jYWx0bS50bV96b25lCi0gICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICAgICAgIyBDb21wdXRlIFVUQyBvZmZzZXQgYW5kIGNvbXBhcmUgd2l0aCB0aGUgdmFsdWUgaW1wbGllZAotICAgICAgICAgICAgICAgICMgYnkgdG1faXNkc3QuICBJZiB0aGUgdmFsdWVzIG1hdGNoLCB1c2UgdGhlIHpvbmUgbmFtZQotICAgICAgICAgICAgICAgICMgaW1wbGllZCBieSB0bV9pc2RzdC4KLSAgICAgICAgICAgICAgICBkZWx0YSA9IGxvY2FsIC0gZGF0ZXRpbWUoKl90aW1lLmdtdGltZSh0cylbOjZdKQotICAgICAgICAgICAgICAgIGRzdCA9IF90aW1lLmRheWxpZ2h0IGFuZCBsb2NhbHRtLnRtX2lzZHN0ID4gMAotICAgICAgICAgICAgICAgIGdtdG9mZiA9IC0oX3RpbWUuYWx0em9uZSBpZiBkc3QgZWxzZSBfdGltZS50aW1lem9uZSkKLSAgICAgICAgICAgICAgICBpZiBkZWx0YSA9PSB0aW1lZGVsdGEoc2Vjb25kcz1nbXRvZmYpOgotICAgICAgICAgICAgICAgICAgICB0eiA9IHRpbWV6b25lKGRlbHRhLCBfdGltZS50em5hbWVbZHN0XSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICB0eiA9IHRpbWV6b25lKGRlbHRhKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB0eiA9IHRpbWV6b25lKHRpbWVkZWx0YShzZWNvbmRzPWdtdG9mZiksIHpvbmUpCi0KKyAgICAgICAgICAgIHR6ID0gc2VsZi5fbG9jYWxfdGltZXpvbmUoKQogICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKHR6LCB0emluZm8pOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJ0eiBhcmd1bWVudCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIHR6aW5mbyIpCiAKICAgICAgICAgbXl0eiA9IHNlbGYudHppbmZvCiAgICAgICAgIGlmIG15dHogaXMgTm9uZToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImFzdGltZXpvbmUoKSByZXF1aXJlcyBhbiBhd2FyZSBkYXRldGltZSIpCisgICAgICAgICAgICBteXR6ID0gc2VsZi5fbG9jYWxfdGltZXpvbmUoKQogCiAgICAgICAgIGlmIHR6IGlzIG15dHo6CiAgICAgICAgICAgICByZXR1cm4gc2VsZgogCiAgICAgICAgICMgQ29udmVydCBzZWxmIHRvIFVUQywgYW5kIGF0dGFjaCB0aGUgbmV3IHRpbWUgem9uZSBvYmplY3QuCi0gICAgICAgIG15b2Zmc2V0ID0gc2VsZi51dGNvZmZzZXQoKQorICAgICAgICBteW9mZnNldCA9IG15dHoudXRjb2Zmc2V0KHNlbGYpCiAgICAgICAgIGlmIG15b2Zmc2V0IGlzIE5vbmU6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJhc3RpbWV6b25lKCkgcmVxdWlyZXMgYW4gYXdhcmUgZGF0ZXRpbWUiKQogICAgICAgICB1dGMgPSAoc2VsZiAtIG15b2Zmc2V0KS5yZXBsYWNlKHR6aW5mbz10eikKQEAgLTE1NDksMjEgKzE2NTIsMjUgQEAKICAgICAgICAgICAgIHNlbGYuX2hvdXIsIHNlbGYuX21pbnV0ZSwgc2VsZi5fc2Vjb25kLAogICAgICAgICAgICAgc2VsZi5feWVhcikKIAotICAgIGRlZiBpc29mb3JtYXQoc2VsZiwgc2VwPSdUJyk6CisgICAgZGVmIGlzb2Zvcm1hdChzZWxmLCBzZXA9J1QnLCB0aW1lc3BlYz0nYXV0bycpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIHRpbWUgZm9ybWF0dGVkIGFjY29yZGluZyB0byBJU08uCiAKLSAgICAgICAgVGhpcyBpcyAnWVlZWS1NTS1ERCBISDpNTTpTUy5tbW1tbW0nLCBvciAnWVlZWS1NTS1ERCBISDpNTTpTUycgaWYKLSAgICAgICAgc2VsZi5taWNyb3NlY29uZCA9PSAwLgorICAgICAgICBUaGUgZnVsbCBmb3JtYXQgbG9va3MgbGlrZSAnWVlZWS1NTS1ERCBISDpNTTpTUy5tbW1tbW0nLgorICAgICAgICBCeSBkZWZhdWx0LCB0aGUgZnJhY3Rpb25hbCBwYXJ0IGlzIG9taXR0ZWQgaWYgc2VsZi5taWNyb3NlY29uZCA9PSAwLgogCiAgICAgICAgIElmIHNlbGYudHppbmZvIGlzIG5vdCBOb25lLCB0aGUgVVRDIG9mZnNldCBpcyBhbHNvIGF0dGFjaGVkLCBnaXZpbmcKLSAgICAgICAgJ1lZWVktTU0tREQgSEg6TU06U1MubW1tbW1tK0hIOk1NJyBvciAnWVlZWS1NTS1ERCBISDpNTTpTUytISDpNTScuCisgICAgICAgIGdpdmluZyBhIGZ1bGwgZm9ybWF0IG9mICdZWVlZLU1NLUREIEhIOk1NOlNTLm1tbW1tbStISDpNTScuCiAKICAgICAgICAgT3B0aW9uYWwgYXJndW1lbnQgc2VwIHNwZWNpZmllcyB0aGUgc2VwYXJhdG9yIGJldHdlZW4gZGF0ZSBhbmQKICAgICAgICAgdGltZSwgZGVmYXVsdCAnVCcuCisKKyAgICAgICAgVGhlIG9wdGlvbmFsIGFyZ3VtZW50IHRpbWVzcGVjIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGFkZGl0aW9uYWwKKyAgICAgICAgdGVybXMgb2YgdGhlIHRpbWUgdG8gaW5jbHVkZS4KICAgICAgICAgIiIiCiAgICAgICAgIHMgPSAoIiUwNGQtJTAyZC0lMDJkJWMiICUgKHNlbGYuX3llYXIsIHNlbGYuX21vbnRoLCBzZWxmLl9kYXksIHNlcCkgKwogICAgICAgICAgICAgIF9mb3JtYXRfdGltZShzZWxmLl9ob3VyLCBzZWxmLl9taW51dGUsIHNlbGYuX3NlY29uZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbWljcm9zZWNvbmQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9taWNyb3NlY29uZCwgdGltZXNwZWMpKQorCiAgICAgICAgIG9mZiA9IHNlbGYudXRjb2Zmc2V0KCkKICAgICAgICAgaWYgb2ZmIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgaWYgb2ZmLmRheXMgPCAwOgpAQCAtMTU3Miw5ICsxNjc5LDExIEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHNpZ24gPSAiKyIKICAgICAgICAgICAgIGhoLCBtbSA9IGRpdm1vZChvZmYsIHRpbWVkZWx0YShob3Vycz0xKSkKLSAgICAgICAgICAgIGFzc2VydCBub3QgbW0gJSB0aW1lZGVsdGEobWludXRlcz0xKSwgIndob2xlIG1pbnV0ZSIKLSAgICAgICAgICAgIG1tIC8vPSB0aW1lZGVsdGEobWludXRlcz0xKQorICAgICAgICAgICAgbW0sIHNzID0gZGl2bW9kKG1tLCB0aW1lZGVsdGEobWludXRlcz0xKSkKICAgICAgICAgICAgIHMgKz0gIiVzJTAyZDolMDJkIiAlIChzaWduLCBoaCwgbW0pCisgICAgICAgICAgICBpZiBzczoKKyAgICAgICAgICAgICAgICBhc3NlcnQgbm90IHNzLm1pY3Jvc2Vjb25kcworICAgICAgICAgICAgICAgIHMgKz0gIjolMDJkIiAlIHNzLnNlY29uZHMKICAgICAgICAgcmV0dXJuIHMKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKQEAgLTE1OTEsNiArMTcwMCw5IEBACiAgICAgICAgIGlmIHNlbGYuX3R6aW5mbyBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGFzc2VydCBzWy0xOl0gPT0gIikiCiAgICAgICAgICAgICBzID0gc1s6LTFdICsgIiwgdHppbmZvPSVyIiAlIHNlbGYuX3R6aW5mbyArICIpIgorICAgICAgICBpZiBzZWxmLl9mb2xkOgorICAgICAgICAgICAgYXNzZXJ0IHNbLTE6XSA9PSAiKSIKKyAgICAgICAgICAgIHMgPSBzWzotMV0gKyAiLCBmb2xkPTEpIgogICAgICAgICByZXR1cm4gcwogCiAgICAgZGVmIF9fc3RyX18oc2VsZik6CkBAIC0xNjkzLDYgKzE4MDUsMTIgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG15b2ZmID0gc2VsZi51dGNvZmZzZXQoKQogICAgICAgICAgICAgb3RvZmYgPSBvdGhlci51dGNvZmZzZXQoKQorICAgICAgICAgICAgIyBBc3N1bWUgdGhhdCBhbGxvd19taXhlZCBtZWFucyB0aGF0IHdlIGFyZSBjYWxsZWQgZnJvbSBfX2VxX18KKyAgICAgICAgICAgIGlmIGFsbG93X21peGVkOgorICAgICAgICAgICAgICAgIGlmIG15b2ZmICE9IHNlbGYucmVwbGFjZShmb2xkPW5vdCBzZWxmLmZvbGQpLnV0Y29mZnNldCgpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMgorICAgICAgICAgICAgICAgIGlmIG90b2ZmICE9IG90aGVyLnJlcGxhY2UoZm9sZD1ub3Qgb3RoZXIuZm9sZCkudXRjb2Zmc2V0KCk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAyCiAgICAgICAgICAgICBiYXNlX2NvbXBhcmUgPSBteW9mZiA9PSBvdG9mZgogCiAgICAgICAgIGlmIGJhc2VfY29tcGFyZToKQEAgLTE3NjAsOSArMTg3OCwxMyBAQAogCiAgICAgZGVmIF9faGFzaF9fKHNlbGYpOgogICAgICAgICBpZiBzZWxmLl9oYXNoY29kZSA9PSAtMToKLSAgICAgICAgICAgIHR6b2ZmID0gc2VsZi51dGNvZmZzZXQoKQorICAgICAgICAgICAgaWYgc2VsZi5mb2xkOgorICAgICAgICAgICAgICAgIHQgPSBzZWxmLnJlcGxhY2UoZm9sZD0wKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0ID0gc2VsZgorICAgICAgICAgICAgdHpvZmYgPSB0LnV0Y29mZnNldCgpCiAgICAgICAgICAgICBpZiB0em9mZiBpcyBOb25lOgotICAgICAgICAgICAgICAgIHNlbGYuX2hhc2hjb2RlID0gaGFzaChzZWxmLl9nZXRzdGF0ZSgpWzBdKQorICAgICAgICAgICAgICAgIHNlbGYuX2hhc2hjb2RlID0gaGFzaCh0Ll9nZXRzdGF0ZSgpWzBdKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBkYXlzID0gX3ltZDJvcmQoc2VsZi55ZWFyLCBzZWxmLm1vbnRoLCBzZWxmLmRheSkKICAgICAgICAgICAgICAgICBzZWNvbmRzID0gc2VsZi5ob3VyICogMzYwMCArIHNlbGYubWludXRlICogNjAgKyBzZWxmLnNlY29uZApAQCAtMTc3MSwxMSArMTg5MywxNCBAQAogCiAgICAgIyBQaWNrbGUgc3VwcG9ydC4KIAotICAgIGRlZiBfZ2V0c3RhdGUoc2VsZik6CisgICAgZGVmIF9nZXRzdGF0ZShzZWxmLCBwcm90b2NvbD0zKToKICAgICAgICAgeWhpLCB5bG8gPSBkaXZtb2Qoc2VsZi5feWVhciwgMjU2KQogICAgICAgICB1czIsIHVzMyA9IGRpdm1vZChzZWxmLl9taWNyb3NlY29uZCwgMjU2KQogICAgICAgICB1czEsIHVzMiA9IGRpdm1vZCh1czIsIDI1NikKLSAgICAgICAgYmFzZXN0YXRlID0gYnl0ZXMoW3loaSwgeWxvLCBzZWxmLl9tb250aCwgc2VsZi5fZGF5LAorICAgICAgICBtID0gc2VsZi5fbW9udGgKKyAgICAgICAgaWYgc2VsZi5fZm9sZCBhbmQgcHJvdG9jb2wgPiAzOgorICAgICAgICAgICAgbSArPSAxMjgKKyAgICAgICAgYmFzZXN0YXRlID0gYnl0ZXMoW3loaSwgeWxvLCBtLCBzZWxmLl9kYXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9ob3VyLCBzZWxmLl9taW51dGUsIHNlbGYuX3NlY29uZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzMSwgdXMyLCB1czNdKQogICAgICAgICBpZiBzZWxmLl90emluZm8gaXMgTm9uZToKQEAgLTE3ODYsMTQgKzE5MTEsMjMgQEAKICAgICBkZWYgX19zZXRzdGF0ZShzZWxmLCBzdHJpbmcsIHR6aW5mbyk6CiAgICAgICAgIGlmIHR6aW5mbyBpcyBub3QgTm9uZSBhbmQgbm90IGlzaW5zdGFuY2UodHppbmZvLCBfdHppbmZvX2NsYXNzKToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiYmFkIHR6aW5mbyBzdGF0ZSBhcmciKQotICAgICAgICAoeWhpLCB5bG8sIHNlbGYuX21vbnRoLCBzZWxmLl9kYXksIHNlbGYuX2hvdXIsCisgICAgICAgICh5aGksIHlsbywgbSwgc2VsZi5fZGF5LCBzZWxmLl9ob3VyLAogICAgICAgICAgc2VsZi5fbWludXRlLCBzZWxmLl9zZWNvbmQsIHVzMSwgdXMyLCB1czMpID0gc3RyaW5nCisgICAgICAgIGlmIG0gPiAxMjc6CisgICAgICAgICAgICBzZWxmLl9mb2xkID0gMQorICAgICAgICAgICAgc2VsZi5fbW9udGggPSBtIC0gMTI4CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9mb2xkID0gMAorICAgICAgICAgICAgc2VsZi5fbW9udGggPSBtCiAgICAgICAgIHNlbGYuX3llYXIgPSB5aGkgKiAyNTYgKyB5bG8KICAgICAgICAgc2VsZi5fbWljcm9zZWNvbmQgPSAoKCh1czEgPDwgOCkgfCB1czIpIDw8IDgpIHwgdXMzCiAgICAgICAgIHNlbGYuX3R6aW5mbyA9IHR6aW5mbwogCisgICAgZGVmIF9fcmVkdWNlX2V4X18oc2VsZiwgcHJvdG9jb2wpOgorICAgICAgICByZXR1cm4gKHNlbGYuX19jbGFzc19fLCBzZWxmLl9nZXRzdGF0ZShwcm90b2NvbCkpCisKICAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIChzZWxmLl9fY2xhc3NfXywgc2VsZi5fZ2V0c3RhdGUoKSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX19yZWR1Y2VfZXhfXygyKQogCiAKIGRhdGV0aW1lLm1pbiA9IGRhdGV0aW1lKDEsIDEsIDEpCkBAIC0xOTEzLDYgKzIwNDcsOCBAQAogCiAgICAgQHN0YXRpY21ldGhvZAogICAgIGRlZiBfbmFtZV9mcm9tX29mZnNldChkZWx0YSk6CisgICAgICAgIGlmIG5vdCBkZWx0YToKKyAgICAgICAgICAgIHJldHVybiAnVVRDJwogICAgICAgICBpZiBkZWx0YSA8IHRpbWVkZWx0YSgwKToKICAgICAgICAgICAgIHNpZ24gPSAnLScKICAgICAgICAgICAgIGRlbHRhID0gLWRlbHRhCmRpZmYgLS1naXQgYS9MaWIvZGJtL2R1bWIucHkgYi9MaWIvZGJtL2R1bWIucHkKaW5kZXggZTZkNjUwNS4uMjI5NmRiZiAxMDA2NDQKLS0tIGEvTGliL2RibS9kdW1iLnB5CisrKyBiL0xpYi9kYm0vZHVtYi5weQpAQCAtODEsNiArODEsMTEgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZiA9IF9pby5vcGVuKHNlbGYuX2RhdGZpbGUsICdyJywgZW5jb2Rpbmc9IkxhdGluLTEiKQogICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIGlmIGZsYWcgbm90IGluICgnYycsICduJyk6CisgICAgICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigiVGhlIGRhdGFiYXNlIGZpbGUgaXMgbWlzc2luZywgdGhlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZW1hbnRpY3Mgb2YgdGhlICdjJyBmbGFnIHdpbGwgYmUgdXNlZC4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTQpCiAgICAgICAgICAgICB3aXRoIF9pby5vcGVuKHNlbGYuX2RhdGZpbGUsICd3JywgZW5jb2Rpbmc9IkxhdGluLTEiKSBhcyBmOgogICAgICAgICAgICAgICAgIHNlbGYuX2NobW9kKHNlbGYuX2RhdGZpbGUpCiAgICAgICAgIGVsc2U6CkBAIC0xODAsNiArMTg1LDEwIEBACiAgICAgICAgICAgICBmLndyaXRlKCIlciwgJXJcbiIgJSAoa2V5LmRlY29kZSgiTGF0aW4tMSIpLCBwb3NfYW5kX3Npel9wYWlyKSkKIAogICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbCk6CisgICAgICAgIGlmIHNlbGYuX3JlYWRvbmx5OgorICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCdUaGUgZGF0YWJhc2UgaXMgb3BlbmVkIGZvciByZWFkaW5nIG9ubHknLAorICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICAgICAgaWYgaXNpbnN0YW5jZShrZXksIHN0cik6CiAgICAgICAgICAgICBrZXkgPSBrZXkuZW5jb2RlKCd1dGYtOCcpCiAgICAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2Uoa2V5LCAoYnl0ZXMsIGJ5dGVhcnJheSkpOgpAQCAtMjE1LDYgKzIyNCwxMCBAQAogICAgICAgICAgICAgIyAoc28gdGhhdCBfY29tbWl0KCkgbmV2ZXIgZ2V0cyBjYWxsZWQpLgogCiAgICAgZGVmIF9fZGVsaXRlbV9fKHNlbGYsIGtleSk6CisgICAgICAgIGlmIHNlbGYuX3JlYWRvbmx5OgorICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCdUaGUgZGF0YWJhc2UgaXMgb3BlbmVkIGZvciByZWFkaW5nIG9ubHknLAorICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICAgICAgaWYgaXNpbnN0YW5jZShrZXksIHN0cik6CiAgICAgICAgICAgICBrZXkgPSBrZXkuZW5jb2RlKCd1dGYtOCcpCiAgICAgICAgIHNlbGYuX3ZlcmlmeV9vcGVuKCkKQEAgLTMwNCw0ICszMTcsOCBAQAogICAgIGVsc2U6CiAgICAgICAgICMgVHVybiBvZmYgYW55IGJpdHMgdGhhdCBhcmUgc2V0IGluIHRoZSB1bWFzawogICAgICAgICBtb2RlID0gbW9kZSAmICh+dW0pCisgICAgaWYgZmxhZyBub3QgaW4gKCdyJywgJ3cnLCAnYycsICduJyk6CisgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICB3YXJuaW5ncy53YXJuKCJGbGFnIG11c3QgYmUgb25lIG9mICdyJywgJ3cnLCAnYycsIG9yICduJyIsCisgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCiAgICAgcmV0dXJuIF9EYXRhYmFzZShmaWxlLCBtb2RlLCBmbGFnPWZsYWcpCmRpZmYgLS1naXQgYS9MaWIvZGlmZmxpYi5weSBiL0xpYi9kaWZmbGliLnB5CmluZGV4IDA3NmJiYWMuLjIwOTVhNWUgMTAwNjQ0Ci0tLSBhL0xpYi9kaWZmbGliLnB5CisrKyBiL0xpYi9kaWZmbGliLnB5CkBAIC0xNDE1LDcgKzE0MTUsNyBAQAogICAgIGltcG9ydCByZQogCiAgICAgIyByZWd1bGFyIGV4cHJlc3Npb24gZm9yIGZpbmRpbmcgaW50cmFsaW5lIGNoYW5nZSBpbmRpY2VzCi0gICAgY2hhbmdlX3JlID0gcmUuY29tcGlsZSgnKFwrK3xcLSt8XF4rKScpCisgICAgY2hhbmdlX3JlID0gcmUuY29tcGlsZShyJyhcKyt8XC0rfFxeKyknKQogCiAgICAgIyBjcmVhdGUgdGhlIGRpZmZlcmVuY2UgaXRlcmF0b3IgdG8gZ2VuZXJhdGUgdGhlIGRpZmZlcmVuY2VzCiAgICAgZGlmZl9saW5lc19pdGVyYXRvciA9IG5kaWZmKGZyb21saW5lcyx0b2xpbmVzLGxpbmVqdW5rLGNoYXJqdW5rKQpkaWZmIC0tZ2l0IGEvTGliL2Rpcy5weSBiL0xpYi9kaXMucHkKaW5kZXggZjdlM2M3Zi4uMDc5NGI3ZiAxMDA2NDQKLS0tIGEvTGliL2Rpcy5weQorKysgYi9MaWIvZGlzLnB5CkBAIC0xNiw2ICsxNiw4IEBACiBfaGF2ZV9jb2RlID0gKHR5cGVzLk1ldGhvZFR5cGUsIHR5cGVzLkZ1bmN0aW9uVHlwZSwgdHlwZXMuQ29kZVR5cGUsCiAgICAgICAgICAgICAgIGNsYXNzbWV0aG9kLCBzdGF0aWNtZXRob2QsIHR5cGUpCiAKK0ZPUk1BVF9WQUxVRSA9IG9wbWFwWydGT1JNQVRfVkFMVUUnXQorCiBkZWYgX3RyeV9jb21waWxlKHNvdXJjZSwgbmFtZSk6CiAgICAgIiIiQXR0ZW1wdHMgdG8gY29tcGlsZSB0aGUgZ2l2ZW4gc291cmNlLCBmaXJzdCBhcyBhbiBleHByZXNzaW9uIGFuZAogICAgICAgIHRoZW4gYXMgYSBzdGF0ZW1lbnQgaWYgdGhlIGZpcnN0IGFwcHJvYWNoIGZhaWxzLgpAQCAtODcsNiArODksNyBAQAogICAgIDY0OiAiTk9GUkVFIiwKICAgIDEyODogIkNPUk9VVElORSIsCiAgICAyNTY6ICJJVEVSQUJMRV9DT1JPVVRJTkUiLAorICAgNTEyOiAiQVNZTkNfR0VORVJBVE9SIiwKIH0KIAogZGVmIHByZXR0eV9mbGFncyhmbGFncyk6CkBAIC0xNjMsNiArMTY2LDE1IEBACiBfSW5zdHJ1Y3Rpb24gPSBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCJfSW5zdHJ1Y3Rpb24iLAogICAgICAib3BuYW1lIG9wY29kZSBhcmcgYXJndmFsIGFyZ3JlcHIgb2Zmc2V0IHN0YXJ0c19saW5lIGlzX2p1bXBfdGFyZ2V0IikKIAorX0luc3RydWN0aW9uLm9wbmFtZS5fX2RvY19fID0gIkh1bWFuIHJlYWRhYmxlIG5hbWUgZm9yIG9wZXJhdGlvbiIKK19JbnN0cnVjdGlvbi5vcGNvZGUuX19kb2NfXyA9ICJOdW1lcmljIGNvZGUgZm9yIG9wZXJhdGlvbiIKK19JbnN0cnVjdGlvbi5hcmcuX19kb2NfXyA9ICJOdW1lcmljIGFyZ3VtZW50IHRvIG9wZXJhdGlvbiAoaWYgYW55KSwgb3RoZXJ3aXNlIE5vbmUiCitfSW5zdHJ1Y3Rpb24uYXJndmFsLl9fZG9jX18gPSAiUmVzb2x2ZWQgYXJnIHZhbHVlIChpZiBrbm93biksIG90aGVyd2lzZSBzYW1lIGFzIGFyZyIKK19JbnN0cnVjdGlvbi5hcmdyZXByLl9fZG9jX18gPSAiSHVtYW4gcmVhZGFibGUgZGVzY3JpcHRpb24gb2Ygb3BlcmF0aW9uIGFyZ3VtZW50IgorX0luc3RydWN0aW9uLm9mZnNldC5fX2RvY19fID0gIlN0YXJ0IGluZGV4IG9mIG9wZXJhdGlvbiB3aXRoaW4gYnl0ZWNvZGUgc2VxdWVuY2UiCitfSW5zdHJ1Y3Rpb24uc3RhcnRzX2xpbmUuX19kb2NfXyA9ICJMaW5lIHN0YXJ0ZWQgYnkgdGhpcyBvcGNvZGUgKGlmIGFueSksIG90aGVyd2lzZSBOb25lIgorX0luc3RydWN0aW9uLmlzX2p1bXBfdGFyZ2V0Ll9fZG9jX18gPSAiVHJ1ZSBpZiBvdGhlciBjb2RlIGp1bXBzIHRvIGhlcmUsIG90aGVyd2lzZSBGYWxzZSIKKwogY2xhc3MgSW5zdHJ1Y3Rpb24oX0luc3RydWN0aW9uKToKICAgICAiIiJEZXRhaWxzIGZvciBhIGJ5dGVjb2RlIG9wZXJhdGlvbgogCkBAIC0yNzYsNyArMjg4LDYgQEAKICAgICAiIiIKICAgICBsYWJlbHMgPSBmaW5kbGFiZWxzKGNvZGUpCiAgICAgc3RhcnRzX2xpbmUgPSBOb25lCi0gICAgZnJlZSA9IE5vbmUKICAgICBmb3Igb2Zmc2V0LCBvcCwgYXJnIGluIF91bnBhY2tfb3BhcmdzKGNvZGUpOgogICAgICAgICBpZiBsaW5lc3RhcnRzIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgc3RhcnRzX2xpbmUgPSBsaW5lc3RhcnRzLmdldChvZmZzZXQsIE5vbmUpCkBAIC0yOTYsNyArMzA3LDcgQEAKICAgICAgICAgICAgIGVsaWYgb3AgaW4gaGFzbmFtZToKICAgICAgICAgICAgICAgICBhcmd2YWwsIGFyZ3JlcHIgPSBfZ2V0X25hbWVfaW5mbyhhcmcsIG5hbWVzKQogICAgICAgICAgICAgZWxpZiBvcCBpbiBoYXNqcmVsOgotICAgICAgICAgICAgICAgIGFyZ3ZhbCA9IG9mZnNldCArIDMgKyBhcmcKKyAgICAgICAgICAgICAgICBhcmd2YWwgPSBvZmZzZXQgKyAyICsgYXJnCiAgICAgICAgICAgICAgICAgYXJncmVwciA9ICJ0byAiICsgcmVwcihhcmd2YWwpCiAgICAgICAgICAgICBlbGlmIG9wIGluIGhhc2xvY2FsOgogICAgICAgICAgICAgICAgIGFyZ3ZhbCwgYXJncmVwciA9IF9nZXRfbmFtZV9pbmZvKGFyZywgdmFybmFtZXMpCkBAIC0zMDUsOCArMzE2LDEzIEBACiAgICAgICAgICAgICAgICAgYXJncmVwciA9IGFyZ3ZhbAogICAgICAgICAgICAgZWxpZiBvcCBpbiBoYXNmcmVlOgogICAgICAgICAgICAgICAgIGFyZ3ZhbCwgYXJncmVwciA9IF9nZXRfbmFtZV9pbmZvKGFyZywgY2VsbHMpCi0gICAgICAgICAgICBlbGlmIG9wIGluIGhhc25hcmdzOgotICAgICAgICAgICAgICAgIGFyZ3JlcHIgPSAiJWQgcG9zaXRpb25hbCwgJWQga2V5d29yZCBwYWlyIiAlIChhcmclMjU2LCBhcmcvLzI1NikKKyAgICAgICAgICAgIGVsaWYgb3AgPT0gRk9STUFUX1ZBTFVFOgorICAgICAgICAgICAgICAgIGFyZ3ZhbCA9ICgoTm9uZSwgc3RyLCByZXByLCBhc2NpaSlbYXJnICYgMHgzXSwgYm9vbChhcmcgJiAweDQpKQorICAgICAgICAgICAgICAgIGFyZ3JlcHIgPSAoJycsICdzdHInLCAncmVwcicsICdhc2NpaScpW2FyZyAmIDB4M10KKyAgICAgICAgICAgICAgICBpZiBhcmd2YWxbMV06CisgICAgICAgICAgICAgICAgICAgIGlmIGFyZ3JlcHI6CisgICAgICAgICAgICAgICAgICAgICAgICBhcmdyZXByICs9ICcsICcKKyAgICAgICAgICAgICAgICAgICAgYXJncmVwciArPSAnd2l0aCBmb3JtYXQnCiAgICAgICAgIHlpZWxkIEluc3RydWN0aW9uKG9wbmFtZVtvcF0sIG9wLAogICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcsIGFyZ3ZhbCwgYXJncmVwciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0LCBzdGFydHNfbGluZSwgaXNfanVtcF90YXJnZXQpCkBAIC0zNDMsMjMgKzM1OSwxNSBAQAogZGlzY28gPSBkaXNhc3NlbWJsZSAgICAgICAgICAgICAgICAgICAgICMgWFhYIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eQogCiBkZWYgX3VucGFja19vcGFyZ3MoY29kZSk6Ci0gICAgIyBlbnVtZXJhdGUoKSBpcyBub3QgYW4gb3B0aW9uLCBzaW5jZSB3ZSBzb21ldGltZXMgcHJvY2VzcwotICAgICMgbXVsdGlwbGUgZWxlbWVudHMgb24gYSBzaW5nbGUgcGFzcyB0aHJvdWdoIHRoZSBsb29wCiAgICAgZXh0ZW5kZWRfYXJnID0gMAotICAgIG4gPSBsZW4oY29kZSkKLSAgICBpID0gMAotICAgIHdoaWxlIGkgPCBuOgorICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihjb2RlKSwgMik6CiAgICAgICAgIG9wID0gY29kZVtpXQotICAgICAgICBvZmZzZXQgPSBpCi0gICAgICAgIGkgPSBpKzEKLSAgICAgICAgYXJnID0gTm9uZQogICAgICAgICBpZiBvcCA+PSBIQVZFX0FSR1VNRU5UOgotICAgICAgICAgICAgYXJnID0gY29kZVtpXSArIGNvZGVbaSsxXSoyNTYgKyBleHRlbmRlZF9hcmcKLSAgICAgICAgICAgIGV4dGVuZGVkX2FyZyA9IDAKLSAgICAgICAgICAgIGkgPSBpKzIKLSAgICAgICAgICAgIGlmIG9wID09IEVYVEVOREVEX0FSRzoKLSAgICAgICAgICAgICAgICBleHRlbmRlZF9hcmcgPSBhcmcqNjU1MzYKLSAgICAgICAgeWllbGQgKG9mZnNldCwgb3AsIGFyZykKKyAgICAgICAgICAgIGFyZyA9IGNvZGVbaSsxXSB8IGV4dGVuZGVkX2FyZworICAgICAgICAgICAgZXh0ZW5kZWRfYXJnID0gKGFyZyA8PCA4KSBpZiBvcCA9PSBFWFRFTkRFRF9BUkcgZWxzZSAwCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhcmcgPSBOb25lCisgICAgICAgIHlpZWxkIChpLCBvcCwgYXJnKQogCiBkZWYgZmluZGxhYmVscyhjb2RlKToKICAgICAiIiJEZXRlY3QgYWxsIG9mZnNldHMgaW4gYSBieXRlIGNvZGUgd2hpY2ggYXJlIGp1bXAgdGFyZ2V0cy4KQEAgLTM3MCwxNCArMzc4LDE0IEBACiAgICAgbGFiZWxzID0gW10KICAgICBmb3Igb2Zmc2V0LCBvcCwgYXJnIGluIF91bnBhY2tfb3BhcmdzKGNvZGUpOgogICAgICAgICBpZiBhcmcgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBsYWJlbCA9IC0xCiAgICAgICAgICAgICBpZiBvcCBpbiBoYXNqcmVsOgotICAgICAgICAgICAgICAgIGxhYmVsID0gb2Zmc2V0ICsgMyArIGFyZworICAgICAgICAgICAgICAgIGxhYmVsID0gb2Zmc2V0ICsgMiArIGFyZwogICAgICAgICAgICAgZWxpZiBvcCBpbiBoYXNqYWJzOgogICAgICAgICAgICAgICAgIGxhYmVsID0gYXJnCi0gICAgICAgICAgICBpZiBsYWJlbCA+PSAwOgotICAgICAgICAgICAgICAgIGlmIGxhYmVsIG5vdCBpbiBsYWJlbHM6Ci0gICAgICAgICAgICAgICAgICAgIGxhYmVscy5hcHBlbmQobGFiZWwpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBsYWJlbCBub3QgaW4gbGFiZWxzOgorICAgICAgICAgICAgICAgIGxhYmVscy5hcHBlbmQobGFiZWwpCiAgICAgcmV0dXJuIGxhYmVscwogCiBkZWYgZmluZGxpbmVzdGFydHMoY29kZSk6CkBAIC0zODYsOCArMzk0LDggQEAKICAgICBHZW5lcmF0ZSBwYWlycyAob2Zmc2V0LCBsaW5lbm8pIGFzIGRlc2NyaWJlZCBpbiBQeXRob24vY29tcGlsZS5jLgogCiAgICAgIiIiCi0gICAgYnl0ZV9pbmNyZW1lbnRzID0gbGlzdChjb2RlLmNvX2xub3RhYlswOjoyXSkKLSAgICBsaW5lX2luY3JlbWVudHMgPSBsaXN0KGNvZGUuY29fbG5vdGFiWzE6OjJdKQorICAgIGJ5dGVfaW5jcmVtZW50cyA9IGNvZGUuY29fbG5vdGFiWzA6OjJdCisgICAgbGluZV9pbmNyZW1lbnRzID0gY29kZS5jb19sbm90YWJbMTo6Ml0KIAogICAgIGxhc3RsaW5lbm8gPSBOb25lCiAgICAgbGluZW5vID0gY29kZS5jb19maXJzdGxpbmVubwpAQCAtMzk4LDYgKzQwNiw5IEBACiAgICAgICAgICAgICAgICAgeWllbGQgKGFkZHIsIGxpbmVubykKICAgICAgICAgICAgICAgICBsYXN0bGluZW5vID0gbGluZW5vCiAgICAgICAgICAgICBhZGRyICs9IGJ5dGVfaW5jcgorICAgICAgICBpZiBsaW5lX2luY3IgPj0gMHg4MDoKKyAgICAgICAgICAgICMgbGluZV9pbmNyZW1lbnRzIGlzIGFuIGFycmF5IG9mIDgtYml0IHNpZ25lZCBpbnRlZ2VycworICAgICAgICAgICAgbGluZV9pbmNyIC09IDB4MTAwCiAgICAgICAgIGxpbmVubyArPSBsaW5lX2luY3IKICAgICBpZiBsaW5lbm8gIT0gbGFzdGxpbmVubzoKICAgICAgICAgeWllbGQgKGFkZHIsIGxpbmVubykKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvYXJjaGl2ZV91dGlsLnB5IGIvTGliL2Rpc3R1dGlscy9hcmNoaXZlX3V0aWwucHkKaW5kZXggYmVkMTM4NC4uNzhhZTU3NSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9hcmNoaXZlX3V0aWwucHkKKysrIGIvTGliL2Rpc3R1dGlscy9hcmNoaXZlX3V0aWwucHkKQEAgLTE3MSw3ICsxNzEsNyBAQAogICAgICAgICAgICAgICAgICAgICBwYXRoID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmpvaW4oZGlycGF0aCwgbmFtZSkpCiAgICAgICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKHBhdGgpOgogICAgICAgICAgICAgICAgICAgICAgICAgemlwLndyaXRlKHBhdGgsIHBhdGgpCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2cuaW5mbygiYWRkaW5nICclcyciICUgcGF0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZy5pbmZvKCJhZGRpbmcgJyVzJyIsIHBhdGgpCiAgICAgICAgICAgICB6aXAuY2xvc2UoKQogCiAgICAgcmV0dXJuIHppcF9maWxlbmFtZQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jbWQucHkgYi9MaWIvZGlzdHV0aWxzL2NtZC5weQppbmRleCBjODlkNWVmLi45MzlmNzk1IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2NtZC5weQorKysgYi9MaWIvZGlzdHV0aWxzL2NtZC5weQpAQCAtMjIxLDcgKzIyMSw3IEBACiAgICAgICAgIHNlbGYuX2Vuc3VyZV9zdHJpbmdsaWtlKG9wdGlvbiwgInN0cmluZyIsIGRlZmF1bHQpCiAKICAgICBkZWYgZW5zdXJlX3N0cmluZ19saXN0KHNlbGYsIG9wdGlvbik6Ci0gICAgICAgICIiIkVuc3VyZSB0aGF0ICdvcHRpb24nIGlzIGEgbGlzdCBvZiBzdHJpbmdzLiAgSWYgJ29wdGlvbicgaXMKKyAgICAgICAgciIiIkVuc3VyZSB0aGF0ICdvcHRpb24nIGlzIGEgbGlzdCBvZiBzdHJpbmdzLiAgSWYgJ29wdGlvbicgaXMKICAgICAgICAgY3VycmVudGx5IGEgc3RyaW5nLCB3ZSBzcGxpdCBpdCBlaXRoZXIgb24gLyxccyovIG9yIC9ccysvLCBzbwogICAgICAgICAiZm9vIGJhciBiYXoiLCAiZm9vLGJhcixiYXoiLCBhbmQgImZvbywgICBiYXIgYmF6IiBhbGwgYmVjb21lCiAgICAgICAgIFsiZm9vIiwgImJhciIsICJiYXoiXS4KQEAgLTMyOSw4ICszMjksNyBAQAogICAgICMgLS0gRXh0ZXJuYWwgd29ybGQgbWFuaXB1bGF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKICAgICBkZWYgd2FybihzZWxmLCBtc2cpOgotICAgICAgICBsb2cud2Fybigid2FybmluZzogJXM6ICVzXG4iICUKLSAgICAgICAgICAgICAgICAoc2VsZi5nZXRfY29tbWFuZF9uYW1lKCksIG1zZykpCisgICAgICAgIGxvZy53YXJuKCJ3YXJuaW5nOiAlczogJXNcbiIsIHNlbGYuZ2V0X2NvbW1hbmRfbmFtZSgpLCBtc2cpCiAKICAgICBkZWYgZXhlY3V0ZShzZWxmLCBmdW5jLCBhcmdzLCBtc2c9Tm9uZSwgbGV2ZWw9MSk6CiAgICAgICAgIHV0aWwuZXhlY3V0ZShmdW5jLCBhcmdzLCBtc2csIGRyeV9ydW49c2VsZi5kcnlfcnVuKQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0X2R1bWIucHkgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3RfZHVtYi5weQppbmRleCBmMWJmYjI0Li5lOTI3NGQ5IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3RfZHVtYi5weQorKysgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3RfZHVtYi5weQpAQCAtODUsNyArODUsNyBAQAogICAgICAgICBpbnN0YWxsLnNraXBfYnVpbGQgPSBzZWxmLnNraXBfYnVpbGQKICAgICAgICAgaW5zdGFsbC53YXJuX2RpciA9IDAKIAotICAgICAgICBsb2cuaW5mbygiaW5zdGFsbGluZyB0byAlcyIgJSBzZWxmLmJkaXN0X2RpcikKKyAgICAgICAgbG9nLmluZm8oImluc3RhbGxpbmcgdG8gJXMiLCBzZWxmLmJkaXN0X2RpcikKICAgICAgICAgc2VsZi5ydW5fY29tbWFuZCgnaW5zdGFsbCcpCiAKICAgICAgICAgIyBBbmQgbWFrZSBhbiBhcmNoaXZlIHJlbGF0aXZlIHRvIHRoZSByb290IG9mIHRoZQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0X21zaS5weSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF9tc2kucHkKaW5kZXggYjNjZmU5Yy4uYTRiZDVhNSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0X21zaS5weQorKysgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3RfbXNpLnB5CkBAIC0xOTksNyArMTk5LDcgQEAKICAgICAgICAgICAgIHRhcmdldF92ZXJzaW9uID0gc2VsZi50YXJnZXRfdmVyc2lvbgogICAgICAgICAgICAgaWYgbm90IHRhcmdldF92ZXJzaW9uOgogICAgICAgICAgICAgICAgIGFzc2VydCBzZWxmLnNraXBfYnVpbGQsICJTaG91bGQgaGF2ZSBhbHJlYWR5IGNoZWNrZWQgdGhpcyIKLSAgICAgICAgICAgICAgICB0YXJnZXRfdmVyc2lvbiA9IHN5cy52ZXJzaW9uWzA6M10KKyAgICAgICAgICAgICAgICB0YXJnZXRfdmVyc2lvbiA9ICclZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXQogICAgICAgICAgICAgcGxhdF9zcGVjaWZpZXIgPSAiLiVzLSVzIiAlIChzZWxmLnBsYXRfbmFtZSwgdGFyZ2V0X3ZlcnNpb24pCiAgICAgICAgICAgICBidWlsZCA9IHNlbGYuZ2V0X2ZpbmFsaXplZF9jb21tYW5kKCdidWlsZCcpCiAgICAgICAgICAgICBidWlsZC5idWlsZF9saWIgPSBvcy5wYXRoLmpvaW4oYnVpbGQuYnVpbGRfYmFzZSwKQEAgLTYyMyw3ICs2MjMsNyBAQAogICAgICAgICBjb3N0ID0gUHlEaWFsb2coZGIsICJEaXNrQ29zdERsZyIsIHgsIHksIHcsIGgsIG1vZGFsLCB0aXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICJPSyIsICJPSyIsICJPSyIsIGJpdG1hcD1GYWxzZSkKICAgICAgICAgY29zdC50ZXh0KCJUaXRsZSIsIDE1LCA2LCAyMDAsIDE1LCAweDMwMDAzLAotICAgICAgICAgICAgICAgICAgIntcRGxnRm9udEJvbGQ4fURpc2sgU3BhY2UgUmVxdWlyZW1lbnRzIikKKyAgICAgICAgICAgICAgICAgciJ7XERsZ0ZvbnRCb2xkOH1EaXNrIFNwYWNlIFJlcXVpcmVtZW50cyIpCiAgICAgICAgIGNvc3QudGV4dCgiRGVzY3JpcHRpb24iLCAyMCwgMjAsIDI4MCwgMjAsIDB4MzAwMDMsCiAgICAgICAgICAgICAgICAgICAiVGhlIGRpc2sgc3BhY2UgcmVxdWlyZWQgZm9yIHRoZSBpbnN0YWxsYXRpb24gb2YgdGhlIHNlbGVjdGVkIGZlYXR1cmVzLiIpCiAgICAgICAgIGNvc3QudGV4dCgiVGV4dCIsIDIwLCA1MywgMzMwLCA2MCwgMywKQEAgLTY3MCw3ICs2NzAsNyBAQAogICAgICAgICBwcm9ncmVzcyA9IFB5RGlhbG9nKGRiLCAiUHJvZ3Jlc3NEbGciLCB4LCB5LCB3LCBoLCBtb2RlbGVzcywgdGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNhbmNlbCIsICJDYW5jZWwiLCAiQ2FuY2VsIiwgYml0bWFwPUZhbHNlKQogICAgICAgICBwcm9ncmVzcy50ZXh0KCJUaXRsZSIsIDIwLCAxNSwgMjAwLCAxNSwgMHgzMDAwMywKLSAgICAgICAgICAgICAgICAgICAgICAie1xEbGdGb250Qm9sZDh9W1Byb2dyZXNzMV0gW1Byb2R1Y3ROYW1lXSIpCisgICAgICAgICAgICAgICAgICAgICByIntcRGxnRm9udEJvbGQ4fVtQcm9ncmVzczFdIFtQcm9kdWN0TmFtZV0iKQogICAgICAgICBwcm9ncmVzcy50ZXh0KCJUZXh0IiwgMzUsIDY1LCAzMDAsIDMwLCAzLAogICAgICAgICAgICAgICAgICAgICAgICJQbGVhc2Ugd2FpdCB3aGlsZSB0aGUgSW5zdGFsbGVyIFtQcm9ncmVzczJdIFtQcm9kdWN0TmFtZV0uICIKICAgICAgICAgICAgICAgICAgICAgICAiVGhpcyBtYXkgdGFrZSBzZXZlcmFsIG1pbnV0ZXMuIikKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF93aW5pbnN0LnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0X3dpbmluc3QucHkKaW5kZXggMGMwZTJjMS4uZDNlMWQzYSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0X3dpbmluc3QucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0X3dpbmluc3QucHkKQEAgLTE0MSw3ICsxNDEsNyBAQAogICAgICAgICAgICAgdGFyZ2V0X3ZlcnNpb24gPSBzZWxmLnRhcmdldF92ZXJzaW9uCiAgICAgICAgICAgICBpZiBub3QgdGFyZ2V0X3ZlcnNpb246CiAgICAgICAgICAgICAgICAgYXNzZXJ0IHNlbGYuc2tpcF9idWlsZCwgIlNob3VsZCBoYXZlIGFscmVhZHkgY2hlY2tlZCB0aGlzIgotICAgICAgICAgICAgICAgIHRhcmdldF92ZXJzaW9uID0gc3lzLnZlcnNpb25bMDozXQorICAgICAgICAgICAgICAgIHRhcmdldF92ZXJzaW9uID0gJyVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdCiAgICAgICAgICAgICBwbGF0X3NwZWNpZmllciA9ICIuJXMtJXMiICUgKHNlbGYucGxhdF9uYW1lLCB0YXJnZXRfdmVyc2lvbikKICAgICAgICAgICAgIGJ1aWxkID0gc2VsZi5nZXRfZmluYWxpemVkX2NvbW1hbmQoJ2J1aWxkJykKICAgICAgICAgICAgIGJ1aWxkLmJ1aWxkX2xpYiA9IG9zLnBhdGguam9pbihidWlsZC5idWlsZF9iYXNlLApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkLnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkLnB5CmluZGV4IDMzN2RkMGIuLmM2ZjUyZTYgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZC5weQorKysgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGQucHkKQEAgLTgxLDcgKzgxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1wbGF0LW5hbWUgb25seSBzdXBwb3J0ZWQgb24gV2luZG93cyAodHJ5ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidXNpbmcgJy4vY29uZmlndXJlIC0taGVscCcgb24geW91ciBwbGF0Zm9ybSkiKQogCi0gICAgICAgIHBsYXRfc3BlY2lmaWVyID0gIi4lcy0lcyIgJSAoc2VsZi5wbGF0X25hbWUsIHN5cy52ZXJzaW9uWzA6M10pCisgICAgICAgIHBsYXRfc3BlY2lmaWVyID0gIi4lcy0lZC4lZCIgJSAoc2VsZi5wbGF0X25hbWUsICpzeXMudmVyc2lvbl9pbmZvWzoyXSkKIAogICAgICAgICAjIE1ha2UgaXQgc28gUHl0aG9uIDIueCBhbmQgUHl0aG9uIDIueCB3aXRoIC0td2l0aC1weWRlYnVnIGRvbid0CiAgICAgICAgICMgc2hhcmUgdGhlIHNhbWUgYnVpbGQgZGlyZWN0b3JpZXMuIERvaW5nIHNvIGNvbmZ1c2VzIHRoZSBidWlsZApAQCAtMTE0LDcgKzExNCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RlbXAnICsgcGxhdF9zcGVjaWZpZXIpCiAgICAgICAgIGlmIHNlbGYuYnVpbGRfc2NyaXB0cyBpcyBOb25lOgogICAgICAgICAgICAgc2VsZi5idWlsZF9zY3JpcHRzID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRfYmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2NyaXB0cy0nICsgc3lzLnZlcnNpb25bMDozXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2NyaXB0cy0lZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXSkKIAogICAgICAgICBpZiBzZWxmLmV4ZWN1dGFibGUgaXMgTm9uZToKICAgICAgICAgICAgIHNlbGYuZXhlY3V0YWJsZSA9IG9zLnBhdGgubm9ybXBhdGgoc3lzLmV4ZWN1dGFibGUpCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfZXh0LnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX2V4dC5weQppbmRleCA3YzI3OGVmLi43NGRlNzgyIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfZXh0LnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9leHQucHkKQEAgLTM2NCw5ICszNjQsOSBAQAogCiAgICAgICAgICAgICBleHRfbmFtZSwgYnVpbGRfaW5mbyA9IGV4dAogCi0gICAgICAgICAgICBsb2cud2FybigoIm9sZC1zdHlsZSAoZXh0X25hbWUsIGJ1aWxkX2luZm8pIHR1cGxlIGZvdW5kIGluICIKLSAgICAgICAgICAgICAgICAgICAgICAiZXh0X21vZHVsZXMgZm9yIGV4dGVuc2lvbiAnJXMnIgotICAgICAgICAgICAgICAgICAgICAgICItLSBwbGVhc2UgY29udmVydCB0byBFeHRlbnNpb24gaW5zdGFuY2UiICUgZXh0X25hbWUpKQorICAgICAgICAgICAgbG9nLndhcm4oIm9sZC1zdHlsZSAoZXh0X25hbWUsIGJ1aWxkX2luZm8pIHR1cGxlIGZvdW5kIGluICIKKyAgICAgICAgICAgICAgICAgICAgICJleHRfbW9kdWxlcyBmb3IgZXh0ZW5zaW9uICclcyciCisgICAgICAgICAgICAgICAgICAgICAiLS0gcGxlYXNlIGNvbnZlcnQgdG8gRXh0ZW5zaW9uIGluc3RhbmNlIiwgZXh0X25hbWUpCiAKICAgICAgICAgICAgIGlmIG5vdCAoaXNpbnN0YW5jZShleHRfbmFtZSwgc3RyKSBhbmQKICAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9uX25hbWVfcmUubWF0Y2goZXh0X25hbWUpKToKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9zY3JpcHRzLnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX3NjcmlwdHMucHkKaW5kZXggOTBhODM4MC4uY2NjNzBlNiAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX3NjcmlwdHMucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX3NjcmlwdHMucHkKQEAgLTUxLDcgKzUxLDcgQEAKIAogCiAgICAgZGVmIGNvcHlfc2NyaXB0cyhzZWxmKToKLSAgICAgICAgIiIiQ29weSBlYWNoIHNjcmlwdCBsaXN0ZWQgaW4gJ3NlbGYuc2NyaXB0cyc7IGlmIGl0J3MgbWFya2VkIGFzIGEKKyAgICAgICAgciIiIkNvcHkgZWFjaCBzY3JpcHQgbGlzdGVkIGluICdzZWxmLnNjcmlwdHMnOyBpZiBpdCdzIG1hcmtlZCBhcyBhCiAgICAgICAgIFB5dGhvbiBzY3JpcHQgaW4gdGhlIFVuaXggd2F5IChmaXJzdCBsaW5lIG1hdGNoZXMgJ2ZpcnN0X2xpbmVfcmUnLAogICAgICAgICBpZS4gc3RhcnRzIHdpdGggIlwjISIgYW5kIGNvbnRhaW5zICJweXRob24iKSwgdGhlbiBhZGp1c3QgdGhlIGZpcnN0CiAgICAgICAgIGxpbmUgdG8gcmVmZXIgdG8gdGhlIGN1cnJlbnQgUHl0aG9uIGludGVycHJldGVyIGFzIHdlIGNvcHkuCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvY29uZmlnLnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2NvbmZpZy5weQppbmRleCA4NDdlODU4Li40YWUxNTNkIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvY29uZmlnLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9jb25maWcucHkKQEAgLTksNyArOSw3IEBACiB0aGlzIGhlYWRlciBmaWxlIGxpdmVzIi4KICIiIgogCi1pbXBvcnQgc3lzLCBvcywgcmUKK2ltcG9ydCBvcywgcmUKIAogZnJvbSBkaXN0dXRpbHMuY29yZSBpbXBvcnQgQ29tbWFuZAogZnJvbSBkaXN0dXRpbHMuZXJyb3JzIGltcG9ydCBEaXN0dXRpbHNFeGVjRXJyb3IKQEAgLTMzNyw3ICszMzcsNyBAQAogICAgIElmIGhlYWQgaXMgbm90IE5vbmUsIHdpbGwgYmUgZHVtcGVkIGJlZm9yZSB0aGUgZmlsZSBjb250ZW50LgogICAgICIiIgogICAgIGlmIGhlYWQgaXMgTm9uZToKLSAgICAgICAgbG9nLmluZm8oJyVzJyAlIGZpbGVuYW1lKQorICAgICAgICBsb2cuaW5mbygnJXMnLCBmaWxlbmFtZSkKICAgICBlbHNlOgogICAgICAgICBsb2cuaW5mbyhoZWFkKQogICAgIGZpbGUgPSBvcGVuKGZpbGVuYW1lKQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weQppbmRleCA2N2RiMDA3Li4wMjU4ZDNkZSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkKQEAgLTE3NSw2ICsxNzUsNyBAQAogICAgICAgICBzZWxmLmNvbXBpbGUgPSBOb25lCiAgICAgICAgIHNlbGYub3B0aW1pemUgPSBOb25lCiAKKyAgICAgICAgIyBEZXByZWNhdGVkCiAgICAgICAgICMgVGhlc2UgdHdvIGFyZSBmb3IgcHV0dGluZyBub24tcGFja2FnaXplZCBkaXN0cmlidXRpb25zIGludG8gdGhlaXIKICAgICAgICAgIyBvd24gZGlyZWN0b3J5IGFuZCBjcmVhdGluZyBhIC5wdGggZmlsZSBpZiBpdCBtYWtlcyBzZW5zZS4KICAgICAgICAgIyAnZXh0cmFfcGF0aCcgY29tZXMgZnJvbSB0aGUgc2V0dXAgZmlsZTsgJ2luc3RhbGxfcGF0aF9maWxlJyBjYW4KQEAgLTI5MCw4ICsyOTEsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaXN0X3ZlcnNpb24nOiBzZWxmLmRpc3RyaWJ1dGlvbi5nZXRfdmVyc2lvbigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaXN0X2Z1bGxuYW1lJzogc2VsZi5kaXN0cmlidXRpb24uZ2V0X2Z1bGxuYW1lKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3B5X3ZlcnNpb24nOiBweV92ZXJzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdweV92ZXJzaW9uX3Nob3J0JzogcHlfdmVyc2lvblswOjNdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdweV92ZXJzaW9uX25vZG90JzogcHlfdmVyc2lvblswXSArIHB5X3ZlcnNpb25bMl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3B5X3ZlcnNpb25fc2hvcnQnOiAnJWQuJWQnICUgc3lzLnZlcnNpb25faW5mb1s6Ml0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3B5X3ZlcnNpb25fbm9kb3QnOiAnJWQlZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzX3ByZWZpeCc6IHByZWZpeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJlZml4JzogcHJlZml4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXNfZXhlY19wcmVmaXgnOiBleGVjX3ByZWZpeCwKQEAgLTM0NCw2ICszNDUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NjcmlwdHMnLCAnZGF0YScsICdoZWFkZXJzJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1c2VyYmFzZScsICd1c2Vyc2l0ZScpCiAKKyAgICAgICAgIyBEZXByZWNhdGVkCiAgICAgICAgICMgV2VsbCwgd2UncmUgbm90IGFjdHVhbGx5IGZ1bGx5IGNvbXBsZXRlbHkgZmluYWxpemVkIHlldDogd2Ugc3RpbGwKICAgICAgICAgIyBoYXZlIHRvIGRlYWwgd2l0aCAnZXh0cmFfcGF0aCcsIHdoaWNoIGlzIHRoZSBoYWNrIGZvciBhbGxvd2luZwogICAgICAgICAjIG5vbi1wYWNrYWdpemVkIG1vZHVsZSBkaXN0cmlidXRpb25zIChoZWxsbywgTnVtZXJpY2FsIFB5dGhvbiEpIHRvCkBAIC0zODUsNyArMzg3LDcgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgb3B0X25hbWUgPSBvcHRfbmFtZS50cmFuc2xhdGUobG9uZ29wdF94bGF0ZSkKICAgICAgICAgICAgICAgICB2YWwgPSBnZXRhdHRyKHNlbGYsIG9wdF9uYW1lKQotICAgICAgICAgICAgbG9nLmRlYnVnKCIgICVzOiAlcyIgJSAob3B0X25hbWUsIHZhbCkpCisgICAgICAgICAgICBsb2cuZGVidWcoIiAgJXM6ICVzIiwgb3B0X25hbWUsIHZhbCkKIAogICAgIGRlZiBmaW5hbGl6ZV91bml4KHNlbGYpOgogICAgICAgICAiIiJGaW5hbGl6ZXMgb3B0aW9ucyBmb3IgcG9zaXggcGxhdGZvcm1zLiIiIgpAQCAtNDkwLDYgKzQ5MiwxMCBAQAogICAgICAgICAgICAgc2VsZi5leHRyYV9wYXRoID0gc2VsZi5kaXN0cmlidXRpb24uZXh0cmFfcGF0aAogCiAgICAgICAgIGlmIHNlbGYuZXh0cmFfcGF0aCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGxvZy53YXJuKAorICAgICAgICAgICAgICAgICJEaXN0cmlidXRpb24gb3B0aW9uIGV4dHJhX3BhdGggaXMgZGVwcmVjYXRlZC4gIgorICAgICAgICAgICAgICAgICJTZWUgaXNzdWUyNzkxOSBmb3IgZGV0YWlscy4iCisgICAgICAgICAgICApCiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYuZXh0cmFfcGF0aCwgc3RyKToKICAgICAgICAgICAgICAgICBzZWxmLmV4dHJhX3BhdGggPSBzZWxmLmV4dHJhX3BhdGguc3BsaXQoJywnKQogCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbF9lZ2dfaW5mby5weSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsX2VnZ19pbmZvLnB5CmluZGV4IGMyYTdkNjQuLjBkZGM3MzYgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsX2VnZ19pbmZvLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsX2VnZ19pbmZvLnB5CkBAIC0yMSwxMCArMjEsMTAgQEAKIAogICAgIGRlZiBmaW5hbGl6ZV9vcHRpb25zKHNlbGYpOgogICAgICAgICBzZWxmLnNldF91bmRlZmluZWRfb3B0aW9ucygnaW5zdGFsbF9saWInLCgnaW5zdGFsbF9kaXInLCdpbnN0YWxsX2RpcicpKQotICAgICAgICBiYXNlbmFtZSA9ICIlcy0lcy1weSVzLmVnZy1pbmZvIiAlICgKKyAgICAgICAgYmFzZW5hbWUgPSAiJXMtJXMtcHklZC4lZC5lZ2ctaW5mbyIgJSAoCiAgICAgICAgICAgICB0b19maWxlbmFtZShzYWZlX25hbWUoc2VsZi5kaXN0cmlidXRpb24uZ2V0X25hbWUoKSkpLAogICAgICAgICAgICAgdG9fZmlsZW5hbWUoc2FmZV92ZXJzaW9uKHNlbGYuZGlzdHJpYnV0aW9uLmdldF92ZXJzaW9uKCkpKSwKLSAgICAgICAgICAgIHN5cy52ZXJzaW9uWzozXQorICAgICAgICAgICAgKnN5cy52ZXJzaW9uX2luZm9bOjJdCiAgICAgICAgICkKICAgICAgICAgc2VsZi50YXJnZXQgPSBvcy5wYXRoLmpvaW4oc2VsZi5pbnN0YWxsX2RpciwgYmFzZW5hbWUpCiAgICAgICAgIHNlbGYub3V0cHV0cyA9IFtzZWxmLnRhcmdldF0KZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9yZWdpc3Rlci5weSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9yZWdpc3Rlci5weQppbmRleCA4NjM0M2M4Li4wZmFjOTRlIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvcmVnaXN0ZXIucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL3JlZ2lzdGVyLnB5CkBAIC01LDcgKzUsNyBAQAogCiAjIGNyZWF0ZWQgMjAwMi8xMC8yMSwgUmljaGFyZCBKb25lcwogCi1pbXBvcnQgb3MsIHN0cmluZywgZ2V0cGFzcworaW1wb3J0IGdldHBhc3MKIGltcG9ydCBpbwogaW1wb3J0IHVybGxpYi5wYXJzZSwgdXJsbGliLnJlcXVlc3QKIGZyb20gd2FybmluZ3MgaW1wb3J0IHdhcm4KQEAgLTk0LDcgKzk0LDcgQEAKICAgICAgICAgJycnCiAgICAgICAgICMgc2VuZCB0aGUgaW5mbyB0byB0aGUgc2VydmVyIGFuZCByZXBvcnQgdGhlIHJlc3VsdAogICAgICAgICAoY29kZSwgcmVzdWx0KSA9IHNlbGYucG9zdF90b19zZXJ2ZXIoc2VsZi5idWlsZF9wb3N0X2RhdGEoJ3ZlcmlmeScpKQotICAgICAgICBsb2cuaW5mbygnU2VydmVyIHJlc3BvbnNlICglcyk6ICVzJyAlIChjb2RlLCByZXN1bHQpKQorICAgICAgICBsb2cuaW5mbygnU2VydmVyIHJlc3BvbnNlICglcyk6ICVzJywgY29kZSwgcmVzdWx0KQogCiAgICAgZGVmIHNlbmRfbWV0YWRhdGEoc2VsZik6CiAgICAgICAgICcnJyBTZW5kIHRoZSBtZXRhZGF0YSB0byB0aGUgcGFja2FnZSBpbmRleCBzZXJ2ZXIuCkBAIC0yMDUsNyArMjA1LDcgQEAKICAgICAgICAgICAgICAgICBkYXRhWydlbWFpbCddID0gaW5wdXQoJyAgIEVNYWlsOiAnKQogICAgICAgICAgICAgY29kZSwgcmVzdWx0ID0gc2VsZi5wb3N0X3RvX3NlcnZlcihkYXRhKQogICAgICAgICAgICAgaWYgY29kZSAhPSAyMDA6Ci0gICAgICAgICAgICAgICAgbG9nLmluZm8oJ1NlcnZlciByZXNwb25zZSAoJXMpOiAlcycgJSAoY29kZSwgcmVzdWx0KSkKKyAgICAgICAgICAgICAgICBsb2cuaW5mbygnU2VydmVyIHJlc3BvbnNlICglcyk6ICVzJywgY29kZSwgcmVzdWx0KQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBsb2cuaW5mbygnWW91IHdpbGwgcmVjZWl2ZSBhbiBlbWFpbCBzaG9ydGx5LicpCiAgICAgICAgICAgICAgICAgbG9nLmluZm8oKCdGb2xsb3cgdGhlIGluc3RydWN0aW9ucyBpbiBpdCB0byAnCkBAIC0yMTYsNyArMjE2LDcgQEAKICAgICAgICAgICAgIHdoaWxlIG5vdCBkYXRhWydlbWFpbCddOgogICAgICAgICAgICAgICAgIGRhdGFbJ2VtYWlsJ10gPSBpbnB1dCgnWW91ciBlbWFpbCBhZGRyZXNzOiAnKQogICAgICAgICAgICAgY29kZSwgcmVzdWx0ID0gc2VsZi5wb3N0X3RvX3NlcnZlcihkYXRhKQotICAgICAgICAgICAgbG9nLmluZm8oJ1NlcnZlciByZXNwb25zZSAoJXMpOiAlcycgJSAoY29kZSwgcmVzdWx0KSkKKyAgICAgICAgICAgIGxvZy5pbmZvKCdTZXJ2ZXIgcmVzcG9uc2UgKCVzKTogJXMnLCBjb2RlLCByZXN1bHQpCiAKICAgICBkZWYgYnVpbGRfcG9zdF9kYXRhKHNlbGYsIGFjdGlvbik6CiAgICAgICAgICMgZmlndXJlIHRoZSBkYXRhIHRvIHNlbmQgLSB0aGUgbWV0YWRhdGEgcGx1cyBzb21lIGFkZGl0aW9uYWwKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9zZGlzdC5weSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9zZGlzdC5weQppbmRleCA3ZWEzZDVmLi40ZmQxZDQ3IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvc2Rpc3QucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL3NkaXN0LnB5CkBAIC0zLDcgKzMsNiBAQAogSW1wbGVtZW50cyB0aGUgRGlzdHV0aWxzICdzZGlzdCcgY29tbWFuZCAoY3JlYXRlIGEgc291cmNlIGRpc3RyaWJ1dGlvbikuIiIiCiAKIGltcG9ydCBvcwotaW1wb3J0IHN0cmluZwogaW1wb3J0IHN5cwogZnJvbSB0eXBlcyBpbXBvcnQgKgogZnJvbSBnbG9iIGltcG9ydCBnbG9iCkBAIC05Miw5ICs5MSw2IEBACiAgICAgbmVnYXRpdmVfb3B0ID0geyduby1kZWZhdWx0cyc6ICd1c2UtZGVmYXVsdHMnLAogICAgICAgICAgICAgICAgICAgICAnbm8tcHJ1bmUnOiAncHJ1bmUnIH0KIAotICAgIGRlZmF1bHRfZm9ybWF0ID0geydwb3NpeCc6ICdnenRhcicsCi0gICAgICAgICAgICAgICAgICAgICAgJ250JzogJ3ppcCcgfQotCiAgICAgc3ViX2NvbW1hbmRzID0gWygnY2hlY2snLCBjaGVja2luZ19tZXRhZGF0YSldCiAKICAgICBkZWYgaW5pdGlhbGl6ZV9vcHRpb25zKHNlbGYpOgpAQCAtMTExLDcgKzEwNyw3IEBACiAgICAgICAgIHNlbGYubWFuaWZlc3Rfb25seSA9IDAKICAgICAgICAgc2VsZi5mb3JjZV9tYW5pZmVzdCA9IDAKIAotICAgICAgICBzZWxmLmZvcm1hdHMgPSBOb25lCisgICAgICAgIHNlbGYuZm9ybWF0cyA9IFsnZ3p0YXInXQogICAgICAgICBzZWxmLmtlZXBfdGVtcCA9IDAKICAgICAgICAgc2VsZi5kaXN0X2RpciA9IE5vbmUKIApAQCAtMTI3LDEzICsxMjMsNiBAQAogICAgICAgICAgICAgc2VsZi50ZW1wbGF0ZSA9ICJNQU5JRkVTVC5pbiIKIAogICAgICAgICBzZWxmLmVuc3VyZV9zdHJpbmdfbGlzdCgnZm9ybWF0cycpCi0gICAgICAgIGlmIHNlbGYuZm9ybWF0cyBpcyBOb25lOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNlbGYuZm9ybWF0cyA9IFtzZWxmLmRlZmF1bHRfZm9ybWF0W29zLm5hbWVdXQotICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgIHJhaXNlIERpc3R1dGlsc1BsYXRmb3JtRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICAgImRvbid0IGtub3cgaG93IHRvIGNyZWF0ZSBzb3VyY2UgZGlzdHJpYnV0aW9ucyAiCi0gICAgICAgICAgICAgICAgICAgICAgIm9uIHBsYXRmb3JtICVzIiAlIG9zLm5hbWUpCiAKICAgICAgICAgYmFkX2Zvcm1hdCA9IGFyY2hpdmVfdXRpbC5jaGVja19hcmNoaXZlX2Zvcm1hdHMoc2VsZi5mb3JtYXRzKQogICAgICAgICBpZiBiYWRfZm9ybWF0OgpAQCAtNDIzLDcgKzQxMiw3IEBACiAgICAgICAgICAgICBsb2cuaW5mbyhtc2cpCiAgICAgICAgIGZvciBmaWxlIGluIGZpbGVzOgogICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKGZpbGUpOgotICAgICAgICAgICAgICAgIGxvZy53YXJuKCInJXMnIG5vdCBhIHJlZ3VsYXIgZmlsZSAtLSBza2lwcGluZyIgJSBmaWxlKQorICAgICAgICAgICAgICAgIGxvZy53YXJuKCInJXMnIG5vdCBhIHJlZ3VsYXIgZmlsZSAtLSBza2lwcGluZyIsIGZpbGUpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGRlc3QgPSBvcy5wYXRoLmpvaW4oYmFzZV9kaXIsIGZpbGUpCiAgICAgICAgICAgICAgICAgc2VsZi5jb3B5X2ZpbGUoZmlsZSwgZGVzdCwgbGluaz1saW5rKQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb3JlLnB5IGIvTGliL2Rpc3R1dGlscy9jb3JlLnB5CmluZGV4IGYwNWIzNGIuLmQ2MDNkNGEgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29yZS5weQorKysgYi9MaWIvZGlzdHV0aWxzL2NvcmUucHkKQEAgLTIwNCwxNiArMjA0LDE1IEBACiAgICAgZ2xvYmFsIF9zZXR1cF9zdG9wX2FmdGVyLCBfc2V0dXBfZGlzdHJpYnV0aW9uCiAgICAgX3NldHVwX3N0b3BfYWZ0ZXIgPSBzdG9wX2FmdGVyCiAKLSAgICBzYXZlX2FyZ3YgPSBzeXMuYXJndgorICAgIHNhdmVfYXJndiA9IHN5cy5hcmd2LmNvcHkoKQogICAgIGcgPSB7J19fZmlsZV9fJzogc2NyaXB0X25hbWV9Ci0gICAgbCA9IHt9CiAgICAgdHJ5OgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzeXMuYXJndlswXSA9IHNjcmlwdF9uYW1lCiAgICAgICAgICAgICBpZiBzY3JpcHRfYXJncyBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBzeXMuYXJndlsxOl0gPSBzY3JpcHRfYXJncwogICAgICAgICAgICAgd2l0aCBvcGVuKHNjcmlwdF9uYW1lLCAncmInKSBhcyBmOgotICAgICAgICAgICAgICAgIGV4ZWMoZi5yZWFkKCksIGcsIGwpCisgICAgICAgICAgICAgICAgZXhlYyhmLnJlYWQoKSwgZykKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHN5cy5hcmd2ID0gc2F2ZV9hcmd2CiAgICAgICAgICAgICBfc2V0dXBfc3RvcF9hZnRlciA9IE5vbmUKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY3lnd2luY2NvbXBpbGVyLnB5IGIvTGliL2Rpc3R1dGlscy9jeWd3aW5jY29tcGlsZXIucHkKaW5kZXggYzg3OTY0Ni4uMWMzNjk5MCAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jeWd3aW5jY29tcGlsZXIucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jeWd3aW5jY29tcGlsZXIucHkKQEAgLTM2OCw3ICszNjgsNyBAQAogICAgICAgICByZXR1cm4gKENPTkZJR19IX1VOQ0VSVEFJTiwKICAgICAgICAgICAgICAgICAiY291bGRuJ3QgcmVhZCAnJXMnOiAlcyIgJSAoZm4sIGV4Yy5zdHJlcnJvcikpCiAKLVJFX1ZFUlNJT04gPSByZS5jb21waWxlKGInKFxkK1wuXGQrKFwuXGQrKSopJykKK1JFX1ZFUlNJT04gPSByZS5jb21waWxlKGJyJyhcZCtcLlxkKyhcLlxkKykqKScpCiAKIGRlZiBfZmluZF9leGVfdmVyc2lvbihjbWQpOgogICAgICIiIkZpbmQgdGhlIHZlcnNpb24gb2YgYW4gZXhlY3V0YWJsZSBieSBydW5uaW5nIGBjbWRgIGluIHRoZSBzaGVsbC4KZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvZGlzdC5weSBiL0xpYi9kaXN0dXRpbHMvZGlzdC5weQppbmRleCBmZmIzM2ZmNi4uNjJhMjQ1MSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9kaXN0LnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvZGlzdC5weQpAQCAtMTAxOCw4ICsxMDE4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAibWFpbnRhaW5lciIsICJtYWludGFpbmVyX2VtYWlsIiwgInVybCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgImxpY2Vuc2UiLCAiZGVzY3JpcHRpb24iLCAibG9uZ19kZXNjcmlwdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgImtleXdvcmRzIiwgInBsYXRmb3JtcyIsICJmdWxsbmFtZSIsICJjb250YWN0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiY29udGFjdF9lbWFpbCIsICJsaWNlbnNlIiwgImNsYXNzaWZpZXJzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiZG93bmxvYWRfdXJsIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiY29udGFjdF9lbWFpbCIsICJjbGFzc2lmaWVycyIsICJkb3dubG9hZF91cmwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICMgUEVQIDMxNAogICAgICAgICAgICAgICAgICAgICAgICAgICJwcm92aWRlcyIsICJyZXF1aXJlcyIsICJvYnNvbGV0ZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICkKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvZXh0ZW5zaW9uLnB5IGIvTGliL2Rpc3R1dGlscy9leHRlbnNpb24ucHkKaW5kZXggN2VmYmI3NC4uYzUwN2RhMyAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9leHRlbnNpb24ucHkKKysrIGIvTGliL2Rpc3R1dGlscy9leHRlbnNpb24ucHkKQEAgLTQsNyArNCw2IEBACiBtb2R1bGVzIGluIHNldHVwIHNjcmlwdHMuIiIiCiAKIGltcG9ydCBvcwotaW1wb3J0IHN5cwogaW1wb3J0IHdhcm5pbmdzCiAKICMgVGhpcyBjbGFzcyBpcyByZWFsbHkgb25seSB1c2VkIGJ5IHRoZSAiYnVpbGRfZXh0IiBjb21tYW5kLCBzbyBpdCBtaWdodApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9maWxlbGlzdC5weSBiL0xpYi9kaXN0dXRpbHMvZmlsZWxpc3QucHkKaW5kZXggNjUyMmU2OS4uYzkyZDVmZCAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9maWxlbGlzdC5weQorKysgYi9MaWIvZGlzdHV0aWxzL2ZpbGVsaXN0LnB5CkBAIC0zMDIsMjEgKzMwMiwyNiBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIHBhdHRlcm4KIAorICAgICMgZGl0Y2ggc3RhcnQgYW5kIGVuZCBjaGFyYWN0ZXJzCisgICAgc3RhcnQsIF8sIGVuZCA9IGdsb2JfdG9fcmUoJ18nKS5wYXJ0aXRpb24oJ18nKQorCiAgICAgaWYgcGF0dGVybjoKICAgICAgICAgcGF0dGVybl9yZSA9IGdsb2JfdG9fcmUocGF0dGVybikKKyAgICAgICAgYXNzZXJ0IHBhdHRlcm5fcmUuc3RhcnRzd2l0aChzdGFydCkgYW5kIHBhdHRlcm5fcmUuZW5kc3dpdGgoZW5kKQogICAgIGVsc2U6CiAgICAgICAgIHBhdHRlcm5fcmUgPSAnJwogCiAgICAgaWYgcHJlZml4IGlzIG5vdCBOb25lOgotICAgICAgICAjIGRpdGNoIGVuZCBvZiBwYXR0ZXJuIGNoYXJhY3RlcgotICAgICAgICBlbXB0eV9wYXR0ZXJuID0gZ2xvYl90b19yZSgnJykKLSAgICAgICAgcHJlZml4X3JlID0gZ2xvYl90b19yZShwcmVmaXgpWzotbGVuKGVtcHR5X3BhdHRlcm4pXQorICAgICAgICBwcmVmaXhfcmUgPSBnbG9iX3RvX3JlKHByZWZpeCkKKyAgICAgICAgYXNzZXJ0IHByZWZpeF9yZS5zdGFydHN3aXRoKHN0YXJ0KSBhbmQgcHJlZml4X3JlLmVuZHN3aXRoKGVuZCkKKyAgICAgICAgcHJlZml4X3JlID0gcHJlZml4X3JlW2xlbihzdGFydCk6IGxlbihwcmVmaXhfcmUpIC0gbGVuKGVuZCldCiAgICAgICAgIHNlcCA9IG9zLnNlcAogICAgICAgICBpZiBvcy5zZXAgPT0gJ1xcJzoKICAgICAgICAgICAgIHNlcCA9IHInXFwnCi0gICAgICAgIHBhdHRlcm5fcmUgPSAiXiIgKyBzZXAuam9pbigocHJlZml4X3JlLCAiLioiICsgcGF0dGVybl9yZSkpCisgICAgICAgIHBhdHRlcm5fcmUgPSBwYXR0ZXJuX3JlW2xlbihzdGFydCk6IGxlbihwYXR0ZXJuX3JlKSAtIGxlbihlbmQpXQorICAgICAgICBwYXR0ZXJuX3JlID0gciclc1xBJXMlcy4qJXMlcycgJSAoc3RhcnQsIHByZWZpeF9yZSwgc2VwLCBwYXR0ZXJuX3JlLCBlbmQpCiAgICAgZWxzZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBubyBwcmVmaXggLS0gcmVzcGVjdCBhbmNob3IgZmxhZwogICAgICAgICBpZiBhbmNob3I6Ci0gICAgICAgICAgICBwYXR0ZXJuX3JlID0gIl4iICsgcGF0dGVybl9yZQorICAgICAgICAgICAgcGF0dGVybl9yZSA9IHInJXNcQSVzJyAlIChzdGFydCwgcGF0dGVybl9yZVtsZW4oc3RhcnQpOl0pCiAKICAgICByZXR1cm4gcmUuY29tcGlsZShwYXR0ZXJuX3JlKQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9tc3ZjOWNvbXBpbGVyLnB5IGIvTGliL2Rpc3R1dGlscy9tc3ZjOWNvbXBpbGVyLnB5CmluZGV4IDBiMWZkMTkuLjIxMTkxMjcgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvbXN2Yzljb21waWxlci5weQorKysgYi9MaWIvZGlzdHV0aWxzL21zdmM5Y29tcGlsZXIucHkKQEAgLTcxNiw3ICs3MTYsNyBAQAogICAgICAgICAgICAgICAgIHIiIiJWQ1xkezJ9XC5DUlQoInwnKS4qPygvPnw8L2Fzc2VtYmx5SWRlbnRpdHk+KSIiIiwKICAgICAgICAgICAgICAgICByZS5ET1RBTEwpCiAgICAgICAgICAgICBtYW5pZmVzdF9idWYgPSByZS5zdWIocGF0dGVybiwgIiIsIG1hbmlmZXN0X2J1ZikKLSAgICAgICAgICAgIHBhdHRlcm4gPSAiPGRlcGVuZGVudEFzc2VtYmx5PlxzKjwvZGVwZW5kZW50QXNzZW1ibHk+IgorICAgICAgICAgICAgcGF0dGVybiA9IHIiPGRlcGVuZGVudEFzc2VtYmx5PlxzKjwvZGVwZW5kZW50QXNzZW1ibHk+IgogICAgICAgICAgICAgbWFuaWZlc3RfYnVmID0gcmUuc3ViKHBhdHRlcm4sICIiLCBtYW5pZmVzdF9idWYpCiAgICAgICAgICAgICAjIE5vdyBzZWUgaWYgYW55IG90aGVyIGFzc2VtYmxpZXMgYXJlIHJlZmVyZW5jZWQgLSBpZiBub3QsIHdlCiAgICAgICAgICAgICAjIGRvbid0IHdhbnQgYSBtYW5pZmVzdCBlbWJlZGRlZC4KZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5IGIvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkKaW5kZXggNTczNzI0ZC4uOGJmMWE3MCAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkKKysrIGIvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkKQEAgLTcwLDcgKzcwLDcgQEAKICAgICBsZWF2aW5nIG9mZiB0aGUgcGF0Y2hsZXZlbC4gIFNhbXBsZSByZXR1cm4gdmFsdWVzIGNvdWxkIGJlICcxLjUnCiAgICAgb3IgJzIuMicuCiAgICAgIiIiCi0gICAgcmV0dXJuIHN5cy52ZXJzaW9uWzozXQorICAgIHJldHVybiAnJWQuJWQnICUgc3lzLnZlcnNpb25faW5mb1s6Ml0KIAogCiBkZWYgZ2V0X3B5dGhvbl9pbmMocGxhdF9zcGVjaWZpYz0wLCBwcmVmaXg9Tm9uZSk6CkBAIC0yNDIsNiArMjQyLDggQEAKICAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihfc3lzX2hvbWUgb3IgcHJvamVjdF9iYXNlLCAiTWFrZWZpbGUiKQogICAgIGxpYl9kaXIgPSBnZXRfcHl0aG9uX2xpYihwbGF0X3NwZWNpZmljPTAsIHN0YW5kYXJkX2xpYj0xKQogICAgIGNvbmZpZ19maWxlID0gJ2NvbmZpZy17fXt9Jy5mb3JtYXQoZ2V0X3B5dGhvbl92ZXJzaW9uKCksIGJ1aWxkX2ZsYWdzKQorICAgIGlmIGhhc2F0dHIoc3lzLmltcGxlbWVudGF0aW9uLCAnX211bHRpYXJjaCcpOgorICAgICAgICBjb25maWdfZmlsZSArPSAnLSVzJyAlIHN5cy5pbXBsZW1lbnRhdGlvbi5fbXVsdGlhcmNoCiAgICAgcmV0dXJuIG9zLnBhdGguam9pbihsaWJfZGlyLCBjb25maWdfZmlsZSwgJ01ha2VmaWxlJykKIAogCkBAIC0yNzYsNyArMjc4LDcgQEAKIAogIyBSZWdleGVzIG5lZWRlZCBmb3IgcGFyc2luZyBNYWtlZmlsZSAoYW5kIHNpbWlsYXIgc3ludGF4ZXMsCiAjIGxpa2Ugb2xkLXN0eWxlIFNldHVwIGZpbGVzKS4KLV92YXJpYWJsZV9yeCA9IHJlLmNvbXBpbGUoIihbYS16QS1aXVthLXpBLVowLTlfXSspXHMqPVxzKiguKikiKQorX3ZhcmlhYmxlX3J4ID0gcmUuY29tcGlsZShyIihbYS16QS1aXVthLXpBLVowLTlfXSspXHMqPVxzKiguKikiKQogX2ZpbmR2YXIxX3J4ID0gcmUuY29tcGlsZShyIlwkXCgoW0EtWmEtel1bQS1aYS16MC05X10qKVwpIikKIF9maW5kdmFyMl9yeCA9IHJlLmNvbXBpbGUociJcJHsoW0EtWmEtel1bQS1aYS16MC05X10qKX0iKQogCkBAIC00MTUsMzggKzQxNywxOCBAQAogCiBkZWYgX2luaXRfcG9zaXgoKToKICAgICAiIiJJbml0aWFsaXplIHRoZSBtb2R1bGUgYXMgYXBwcm9wcmlhdGUgZm9yIFBPU0lYIHN5c3RlbXMuIiIiCi0gICAgZyA9IHt9Ci0gICAgIyBsb2FkIHRoZSBpbnN0YWxsZWQgTWFrZWZpbGU6Ci0gICAgdHJ5OgotICAgICAgICBmaWxlbmFtZSA9IGdldF9tYWtlZmlsZV9maWxlbmFtZSgpCi0gICAgICAgIHBhcnNlX21ha2VmaWxlKGZpbGVuYW1lLCBnKQotICAgIGV4Y2VwdCBPU0Vycm9yIGFzIG1zZzoKLSAgICAgICAgbXlfbXNnID0gImludmFsaWQgUHl0aG9uIGluc3RhbGxhdGlvbjogdW5hYmxlIHRvIG9wZW4gJXMiICUgZmlsZW5hbWUKLSAgICAgICAgaWYgaGFzYXR0cihtc2csICJzdHJlcnJvciIpOgotICAgICAgICAgICAgbXlfbXNnID0gbXlfbXNnICsgIiAoJXMpIiAlIG1zZy5zdHJlcnJvcgotCi0gICAgICAgIHJhaXNlIERpc3R1dGlsc1BsYXRmb3JtRXJyb3IobXlfbXNnKQotCi0gICAgIyBsb2FkIHRoZSBpbnN0YWxsZWQgcHljb25maWcuaDoKLSAgICB0cnk6Ci0gICAgICAgIGZpbGVuYW1lID0gZ2V0X2NvbmZpZ19oX2ZpbGVuYW1lKCkKLSAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lKSBhcyBmaWxlOgotICAgICAgICAgICAgcGFyc2VfY29uZmlnX2goZmlsZSwgZykKLSAgICBleGNlcHQgT1NFcnJvciBhcyBtc2c6Ci0gICAgICAgIG15X21zZyA9ICJpbnZhbGlkIFB5dGhvbiBpbnN0YWxsYXRpb246IHVuYWJsZSB0byBvcGVuICVzIiAlIGZpbGVuYW1lCi0gICAgICAgIGlmIGhhc2F0dHIobXNnLCAic3RyZXJyb3IiKToKLSAgICAgICAgICAgIG15X21zZyA9IG15X21zZyArICIgKCVzKSIgJSBtc2cuc3RyZXJyb3IKLQotICAgICAgICByYWlzZSBEaXN0dXRpbHNQbGF0Zm9ybUVycm9yKG15X21zZykKLQotICAgICMgT24gQUlYLCB0aGVyZSBhcmUgd3JvbmcgcGF0aHMgdG8gdGhlIGxpbmtlciBzY3JpcHRzIGluIHRoZSBNYWtlZmlsZQotICAgICMgLS0gdGhlc2UgcGF0aHMgYXJlIHJlbGF0aXZlIHRvIHRoZSBQeXRob24gc291cmNlLCBidXQgd2hlbiBpbnN0YWxsZWQKLSAgICAjIHRoZSBzY3JpcHRzIGFyZSBpbiBhbm90aGVyIGRpcmVjdG9yeS4KLSAgICBpZiBweXRob25fYnVpbGQ6Ci0gICAgICAgIGdbJ0xEU0hBUkVEJ10gPSBnWydCTERTSEFSRUQnXQotCisgICAgIyBfc3lzY29uZmlnZGF0YSBpcyBnZW5lcmF0ZWQgYXQgYnVpbGQgdGltZSwgc2VlIHRoZSBzeXNjb25maWcgbW9kdWxlCisgICAgbmFtZSA9IG9zLmVudmlyb24uZ2V0KCdfUFlUSE9OX1NZU0NPTkZJR0RBVEFfTkFNRScsCisgICAgICAgICdfc3lzY29uZmlnZGF0YV97YWJpfV97cGxhdGZvcm19X3ttdWx0aWFyY2h9Jy5mb3JtYXQoCisgICAgICAgIGFiaT1zeXMuYWJpZmxhZ3MsCisgICAgICAgIHBsYXRmb3JtPXN5cy5wbGF0Zm9ybSwKKyAgICAgICAgbXVsdGlhcmNoPWdldGF0dHIoc3lzLmltcGxlbWVudGF0aW9uLCAnX211bHRpYXJjaCcsICcnKSwKKyAgICApKQorICAgIF90ZW1wID0gX19pbXBvcnRfXyhuYW1lLCBnbG9iYWxzKCksIGxvY2FscygpLCBbJ2J1aWxkX3RpbWVfdmFycyddLCAwKQorICAgIGJ1aWxkX3RpbWVfdmFycyA9IF90ZW1wLmJ1aWxkX3RpbWVfdmFycwogICAgIGdsb2JhbCBfY29uZmlnX3ZhcnMKLSAgICBfY29uZmlnX3ZhcnMgPSBnCisgICAgX2NvbmZpZ192YXJzID0ge30KKyAgICBfY29uZmlnX3ZhcnMudXBkYXRlKGJ1aWxkX3RpbWVfdmFycykKIAogCiBkZWYgX2luaXRfbnQoKToKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9iZGlzdF9ycG0ucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYmRpc3RfcnBtLnB5CmluZGV4IGM1OTYyZGQuLjY0NTNhMDIgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9iZGlzdF9ycG0ucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2JkaXN0X3JwbS5weQpAQCAtOSw4ICs5LDYgQEAKIGZyb20gZGlzdHV0aWxzLmNvbW1hbmQuYmRpc3RfcnBtIGltcG9ydCBiZGlzdF9ycG0KIGZyb20gZGlzdHV0aWxzLnRlc3RzIGltcG9ydCBzdXBwb3J0CiBmcm9tIGRpc3R1dGlscy5zcGF3biBpbXBvcnQgZmluZF9leGVjdXRhYmxlCi1mcm9tIGRpc3R1dGlscyBpbXBvcnQgc3Bhd24KLWZyb20gZGlzdHV0aWxzLmVycm9ycyBpbXBvcnQgRGlzdHV0aWxzRXhlY0Vycm9yCiAKIFNFVFVQX1BZID0gIiIiXAogZnJvbSBkaXN0dXRpbHMuY29yZSBpbXBvcnQgc2V0dXAKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9idWlsZC5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9idWlsZC5weQppbmRleCAzMzkxZjM2Li5iMDIwYTViIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYnVpbGQucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2J1aWxkLnB5CkBAIC0yNyw3ICsyNyw3IEBACiAgICAgICAgICMgYnVpbGRfcGxhdGxpYiBpcyAnYnVpbGQvbGliLnBsYXRmb3JtLXgueFstcHlkZWJ1Z10nCiAgICAgICAgICMgZXhhbXBsZXM6CiAgICAgICAgICMgICBidWlsZC9saWIubWFjb3N4LTEwLjMtaTM4Ni0yLjcKLSAgICAgICAgcGxhdF9zcGVjID0gJy4lcy0lcycgJSAoY21kLnBsYXRfbmFtZSwgc3lzLnZlcnNpb25bMDozXSkKKyAgICAgICAgcGxhdF9zcGVjID0gJy4lcy0lZC4lZCcgJSAoY21kLnBsYXRfbmFtZSwgKnN5cy52ZXJzaW9uX2luZm9bOjJdKQogICAgICAgICBpZiBoYXNhdHRyKHN5cywgJ2dldHRvdGFscmVmY291bnQnKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjbWQuYnVpbGRfcGxhdGxpYi5lbmRzd2l0aCgnLXB5ZGVidWcnKSkKICAgICAgICAgICAgIHBsYXRfc3BlYyArPSAnLXB5ZGVidWcnCkBAIC00Miw3ICs0Miw4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21kLmJ1aWxkX3RlbXAsIHdhbnRlZCkKIAogICAgICAgICAjIGJ1aWxkX3NjcmlwdHMgaXMgYnVpbGQvc2NyaXB0cy14LngKLSAgICAgICAgd2FudGVkID0gb3MucGF0aC5qb2luKGNtZC5idWlsZF9iYXNlLCAnc2NyaXB0cy0nICsgIHN5cy52ZXJzaW9uWzA6M10pCisgICAgICAgIHdhbnRlZCA9IG9zLnBhdGguam9pbihjbWQuYnVpbGRfYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzY3JpcHRzLSVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtZC5idWlsZF9zY3JpcHRzLCB3YW50ZWQpCiAKICAgICAgICAgIyBleGVjdXRhYmxlIGlzIG9zLnBhdGgubm9ybXBhdGgoc3lzLmV4ZWN1dGFibGUpCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYnVpbGRfY2xpYi5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9idWlsZF9jbGliLnB5CmluZGV4IGFjYzk5ZTcuLjg1ZDA5OTAgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9idWlsZF9jbGliLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9idWlsZF9jbGliLnB5CkBAIC0zLDcgKzMsNyBAQAogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiAKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIG1pc3NpbmdfY29tcGlsZXJfZXhlY3V0YWJsZQogCiBmcm9tIGRpc3R1dGlscy5jb21tYW5kLmJ1aWxkX2NsaWIgaW1wb3J0IGJ1aWxkX2NsaWIKIGZyb20gZGlzdHV0aWxzLmVycm9ycyBpbXBvcnQgRGlzdHV0aWxzU2V0dXBFcnJvcgpAQCAtMTE2LDE5ICsxMTYsMTEgQEAKICAgICAgICAgY21kLmJ1aWxkX3RlbXAgPSBidWlsZF90ZW1wCiAgICAgICAgIGNtZC5idWlsZF9jbGliID0gYnVpbGRfdGVtcAogCi0gICAgICAgICMgYmVmb3JlIHdlIHJ1biB0aGUgY29tbWFuZCwgd2Ugd2FudCB0byBtYWtlIHN1cmUKLSAgICAgICAgIyBhbGwgY29tbWFuZHMgYXJlIHByZXNlbnQgb24gdGhlIHN5c3RlbQotICAgICAgICAjIGJ5IGNyZWF0aW5nIGEgY29tcGlsZXIgYW5kIGNoZWNraW5nIGl0cyBleGVjdXRhYmxlcwotICAgICAgICBmcm9tIGRpc3R1dGlscy5jY29tcGlsZXIgaW1wb3J0IG5ld19jb21waWxlcgotICAgICAgICBmcm9tIGRpc3R1dGlscy5zeXNjb25maWcgaW1wb3J0IGN1c3RvbWl6ZV9jb21waWxlcgotCi0gICAgICAgIGNvbXBpbGVyID0gbmV3X2NvbXBpbGVyKCkKLSAgICAgICAgY3VzdG9taXplX2NvbXBpbGVyKGNvbXBpbGVyKQotICAgICAgICBmb3IgY2NtZCBpbiBjb21waWxlci5leGVjdXRhYmxlcy52YWx1ZXMoKToKLSAgICAgICAgICAgIGlmIGNjbWQgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgaWYgZmluZF9leGVjdXRhYmxlKGNjbWRbMF0pIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnVGhlICVyIGNvbW1hbmQgaXMgbm90IGZvdW5kJyAlIGNjbWRbMF0pCisgICAgICAgICMgQmVmb3JlIHdlIHJ1biB0aGUgY29tbWFuZCwgd2Ugd2FudCB0byBtYWtlIHN1cmUKKyAgICAgICAgIyBhbGwgY29tbWFuZHMgYXJlIHByZXNlbnQgb24gdGhlIHN5c3RlbS4KKyAgICAgICAgY2NtZCA9IG1pc3NpbmdfY29tcGlsZXJfZXhlY3V0YWJsZSgpCisgICAgICAgIGlmIGNjbWQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdUaGUgJXIgY29tbWFuZCBpcyBub3QgZm91bmQnICUgY2NtZCkKIAogICAgICAgICAjIHRoaXMgc2hvdWxkIHdvcmsKICAgICAgICAgY21kLnJ1bigpCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYnVpbGRfZXh0LnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2J1aWxkX2V4dC5weQppbmRleCBmM2RmNTY0Li5iZTdmNWYzIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYnVpbGRfZXh0LnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9idWlsZF9leHQucHkKQEAgLTQxLDYgKzQxLDkgQEAKICAgICAgICAgcmV0dXJuIGJ1aWxkX2V4dCgqYXJncywgKiprd2FyZ3MpCiAKICAgICBkZWYgdGVzdF9idWlsZF9leHQoc2VsZik6CisgICAgICAgIGNtZCA9IHN1cHBvcnQubWlzc2luZ19jb21waWxlcl9leGVjdXRhYmxlKCkKKyAgICAgICAgaWYgY21kIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnVGhlICVyIGNvbW1hbmQgaXMgbm90IGZvdW5kJyAlIGNtZCkKICAgICAgICAgZ2xvYmFsIEFMUkVBRFlfVEVTVEVECiAgICAgICAgIGNvcHlfeHhtb2R1bGVfYyhzZWxmLnRtcF9kaXIpCiAgICAgICAgIHh4X2MgPSBvcy5wYXRoLmpvaW4oc2VsZi50bXBfZGlyLCAneHhtb2R1bGUuYycpCkBAIC0xNjYsNyArMTY5LDYgQEAKICAgICAgICAgY21kID0gc2VsZi5idWlsZF9leHQoZGlzdCkKICAgICAgICAgY21kLmZpbmFsaXplX29wdGlvbnMoKQogCi0gICAgICAgIGZyb20gZGlzdHV0aWxzIGltcG9ydCBzeXNjb25maWcKICAgICAgICAgcHlfaW5jbHVkZSA9IHN5c2NvbmZpZy5nZXRfcHl0aG9uX2luYygpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocHlfaW5jbHVkZSwgY21kLmluY2x1ZGVfZGlycykKIApAQCAtMjk2LDYgKzI5OCw5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21kLmNvbXBpbGVyLCAndW5peCcpCiAKICAgICBkZWYgdGVzdF9nZXRfb3V0cHV0cyhzZWxmKToKKyAgICAgICAgY21kID0gc3VwcG9ydC5taXNzaW5nX2NvbXBpbGVyX2V4ZWN1dGFibGUoKQorICAgICAgICBpZiBjbWQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdUaGUgJXIgY29tbWFuZCBpcyBub3QgZm91bmQnICUgY21kKQogICAgICAgICB0bXBfZGlyID0gc2VsZi5ta2R0ZW1wKCkKICAgICAgICAgY19maWxlID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdmb28uYycpCiAgICAgICAgIHNlbGYud3JpdGVfZmlsZShjX2ZpbGUsICd2b2lkIFB5SW5pdF9mb28odm9pZCkge31cbicpCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYnVpbGRfcHkucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYnVpbGRfcHkucHkKaW5kZXggMTgyODNkYy4uMDcxMmU5MiAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2J1aWxkX3B5LnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9idWlsZF9weS5weQpAQCAtMTY4LDcgKzE2OCw4IEBACiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzeXMuZG9udF93cml0ZV9ieXRlY29kZSA9IG9sZF9kb250X3dyaXRlX2J5dGVjb2RlCiAKLSAgICAgICAgc2VsZi5hc3NlcnRJbignYnl0ZS1jb21waWxpbmcgaXMgZGlzYWJsZWQnLCBzZWxmLmxvZ3NbMF1bMV0pCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2J5dGUtY29tcGlsaW5nIGlzIGRpc2FibGVkJywKKyAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZ3NbMF1bMV0gJSBzZWxmLmxvZ3NbMF1bMl0pCiAKIAogZGVmIHRlc3Rfc3VpdGUoKToKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9jbGVhbi5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9jbGVhbi5weQppbmRleCBiNjRmMzAwLi5jNjA1YWZkIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfY2xlYW4ucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2NsZWFuLnB5CkBAIC0xLDggKzEsNiBAQAogIiIiVGVzdHMgZm9yIGRpc3R1dGlscy5jb21tYW5kLmNsZWFuLiIiIgotaW1wb3J0IHN5cwogaW1wb3J0IG9zCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBnZXRwYXNzCiAKIGZyb20gZGlzdHV0aWxzLmNvbW1hbmQuY2xlYW4gaW1wb3J0IGNsZWFuCiBmcm9tIGRpc3R1dGlscy50ZXN0cyBpbXBvcnQgc3VwcG9ydApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2NvbmZpZy5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9jb25maWcucHkKaW5kZXggYTM4NDQ5Ny4uNzdlZjc4OCAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2NvbmZpZy5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfY29uZmlnLnB5CkBAIC0xLDggKzEsNiBAQAogIiIiVGVzdHMgZm9yIGRpc3R1dGlscy5weXBpcmMucHlwaXJjLiIiIgotaW1wb3J0IHN5cwogaW1wb3J0IG9zCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCB0ZW1wZmlsZQogCiBmcm9tIGRpc3R1dGlscy5jb3JlIGltcG9ydCBQeVBJUkNDb21tYW5kCiBmcm9tIGRpc3R1dGlscy5jb3JlIGltcG9ydCBEaXN0cmlidXRpb24KZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9jb25maWdfY21kLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2NvbmZpZ19jbWQucHkKaW5kZXggMGM4ZGJkOC4uNmU1NjZlNyAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2NvbmZpZ19jbWQucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2NvbmZpZ19jbWQucHkKQEAgLTIsNyArMiw3IEBACiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBvcwogaW1wb3J0IHN5cwotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgbWlzc2luZ19jb21waWxlcl9leGVjdXRhYmxlCiAKIGZyb20gZGlzdHV0aWxzLmNvbW1hbmQuY29uZmlnIGltcG9ydCBkdW1wX2ZpbGUsIGNvbmZpZwogZnJvbSBkaXN0dXRpbHMudGVzdHMgaW1wb3J0IHN1cHBvcnQKQEAgLTM5LDYgKzM5LDkgQEAKIAogICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtID09ICd3aW4zMicsICJjYW4ndCB0ZXN0IG9uIFdpbmRvd3MiKQogICAgIGRlZiB0ZXN0X3NlYXJjaF9jcHAoc2VsZik6CisgICAgICAgIGNtZCA9IG1pc3NpbmdfY29tcGlsZXJfZXhlY3V0YWJsZShbJ3ByZXByb2Nlc3NvciddKQorICAgICAgICBpZiBjbWQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdUaGUgJXIgY29tbWFuZCBpcyBub3QgZm91bmQnICUgY21kKQogICAgICAgICBwa2dfZGlyLCBkaXN0ID0gc2VsZi5jcmVhdGVfZGlzdCgpCiAgICAgICAgIGNtZCA9IGNvbmZpZyhkaXN0KQogCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfY29yZS5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9jb3JlLnB5CmluZGV4IDY1NDIyN2MuLjI3Y2U3MzIgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9jb3JlLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9jb3JlLnB5CkBAIC0yOSw2ICsyOSwyMSBAQAogc2V0dXAoKQogIiIiCiAKK3NldHVwX2RvZXNfbm90aGluZyA9ICIiIlwKK2Zyb20gZGlzdHV0aWxzLmNvcmUgaW1wb3J0IHNldHVwCitzZXR1cCgpCisiIiIKKworCitzZXR1cF9kZWZpbmVzX3N1YmNsYXNzID0gIiIiXAorZnJvbSBkaXN0dXRpbHMuY29yZSBpbXBvcnQgc2V0dXAKK2Zyb20gZGlzdHV0aWxzLmNvbW1hbmQuaW5zdGFsbCBpbXBvcnQgaW5zdGFsbCBhcyBfaW5zdGFsbAorCitjbGFzcyBpbnN0YWxsKF9pbnN0YWxsKToKKyAgICBzdWJfY29tbWFuZHMgPSBfaW5zdGFsbC5zdWJfY29tbWFuZHMgKyBbJ2NtZCddCisKK3NldHVwKGNtZGNsYXNzPXsnaW5zdGFsbCc6IGluc3RhbGx9KQorIiIiCiAKIGNsYXNzIENvcmVUZXN0Q2FzZShzdXBwb3J0LkVudmlyb25HdWFyZCwgdW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC02Nyw2ICs4MiwyMSBAQAogICAgICAgICBkaXN0dXRpbHMuY29yZS5ydW5fc2V0dXAoCiAgICAgICAgICAgICBzZWxmLndyaXRlX3NldHVwKHNldHVwX3VzaW5nX19fZmlsZV9fKSkKIAorICAgIGRlZiB0ZXN0X3J1bl9zZXR1cF9wcmVzZXJ2ZXNfc3lzX2FyZ3Yoc2VsZik6CisgICAgICAgICMgTWFrZSBzdXJlIHJ1bl9zZXR1cCBkb2VzIG5vdCBjbG9iYmVyIHN5cy5hcmd2CisgICAgICAgIGFyZ3ZfY29weSA9IHN5cy5hcmd2LmNvcHkoKQorICAgICAgICBkaXN0dXRpbHMuY29yZS5ydW5fc2V0dXAoCisgICAgICAgICAgICBzZWxmLndyaXRlX3NldHVwKHNldHVwX2RvZXNfbm90aGluZykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lzLmFyZ3YsIGFyZ3ZfY29weSkKKworICAgIGRlZiB0ZXN0X3J1bl9zZXR1cF9kZWZpbmVzX3N1YmNsYXNzKHNlbGYpOgorICAgICAgICAjIE1ha2Ugc3VyZSB0aGUgc2NyaXB0IGNhbiB1c2UgX19maWxlX187IGlmIHRoYXQncyBtaXNzaW5nLCB0aGUgdGVzdAorICAgICAgICAjIHNldHVwLnB5IHNjcmlwdCB3aWxsIHJhaXNlIE5hbWVFcnJvci4KKyAgICAgICAgZGlzdCA9IGRpc3R1dGlscy5jb3JlLnJ1bl9zZXR1cCgKKyAgICAgICAgICAgIHNlbGYud3JpdGVfc2V0dXAoc2V0dXBfZGVmaW5lc19zdWJjbGFzcykpCisgICAgICAgIGluc3RhbGwgPSBkaXN0LmdldF9jb21tYW5kX29iaignaW5zdGFsbCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2NtZCcsIGluc3RhbGwuc3ViX2NvbW1hbmRzKQorCiAgICAgZGVmIHRlc3RfcnVuX3NldHVwX3VzZXNfY3VycmVudF9kaXIoc2VsZik6CiAgICAgICAgICMgVGhpcyB0ZXN0cyB0aGF0IHRoZSBzZXR1cCBzY3JpcHQgaXMgcnVuIHdpdGggdGhlIGN1cnJlbnQgZGlyZWN0b3J5CiAgICAgICAgICMgYXMgaXRzIG93biBjdXJyZW50IGRpcmVjdG9yeTsgdGhpcyB3YXMgdGVtcG9yYXJpbHkgYnJva2VuIGJ5IGEKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9jeWd3aW5jY29tcGlsZXIucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfY3lnd2luY2NvbXBpbGVyLnB5CmluZGV4IDg1NjkyMTYuLjlkYzg2OWQgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9jeWd3aW5jY29tcGlsZXIucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2N5Z3dpbmNjb21waWxlci5weQpAQCAtMywxMSArMywxMCBAQAogaW1wb3J0IHN5cwogaW1wb3J0IG9zCiBmcm9tIGlvIGltcG9ydCBCeXRlc0lPCi1pbXBvcnQgc3VicHJvY2VzcwogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAogCiBmcm9tIGRpc3R1dGlscyBpbXBvcnQgY3lnd2luY2NvbXBpbGVyCi1mcm9tIGRpc3R1dGlscy5jeWd3aW5jY29tcGlsZXIgaW1wb3J0IChDeWd3aW5DQ29tcGlsZXIsIGNoZWNrX2NvbmZpZ19oLAorZnJvbSBkaXN0dXRpbHMuY3lnd2luY2NvbXBpbGVyIGltcG9ydCAoY2hlY2tfY29uZmlnX2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05GSUdfSF9PSywgQ09ORklHX0hfTk9UT0ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05GSUdfSF9VTkNFUlRBSU4sIGdldF92ZXJzaW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9tc3ZjcikKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9kZXBfdXRpbC5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9kZXBfdXRpbC5weQppbmRleCAzZTFjMzY2Li5jNmZhZTM5IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfZGVwX3V0aWwucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2RlcF91dGlsLnB5CkBAIC0xLDcgKzEsNiBAQAogIiIiVGVzdHMgZm9yIGRpc3R1dGlscy5kZXBfdXRpbC4iIiIKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IG9zCi1pbXBvcnQgdGltZQogCiBmcm9tIGRpc3R1dGlscy5kZXBfdXRpbCBpbXBvcnQgbmV3ZXIsIG5ld2VyX3BhaXJ3aXNlLCBuZXdlcl9ncm91cAogZnJvbSBkaXN0dXRpbHMuZXJyb3JzIGltcG9ydCBEaXN0dXRpbHNGaWxlRXJyb3IKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9maWxlX3V0aWwucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfZmlsZV91dGlsLnB5CmluZGV4IGE2ZDA0ZjAuLjAzMDQwYWYgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9maWxlX3V0aWwucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2ZpbGVfdXRpbC5weQpAQCAtMSw3ICsxLDYgQEAKICIiIlRlc3RzIGZvciBkaXN0dXRpbHMuZmlsZV91dGlsLiIiIgogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgb3MKLWltcG9ydCBzaHV0aWwKIGltcG9ydCBlcnJubwogZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBwYXRjaAogCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfZmlsZWxpc3QucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfZmlsZWxpc3QucHkKaW5kZXggMzkxYWYzYy4uYzcxMzQyZCAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2ZpbGVsaXN0LnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9maWxlbGlzdC5weQpAQCAtNTEsMTQgKzUxLDE0IEBACiAKICAgICAgICAgZm9yIGdsb2IsIHJlZ2V4IGluICgKICAgICAgICAgICAgICMgc2ltcGxlIGNhc2VzCi0gICAgICAgICAgICAoJ2ZvbyonLCByJ2Zvb1teJShzZXApc10qXFooP21zKScpLAotICAgICAgICAgICAgKCdmb28/Jywgcidmb29bXiUoc2VwKXNdXFooP21zKScpLAotICAgICAgICAgICAgKCdmb28/PycsIHInZm9vW14lKHNlcClzXVteJShzZXApc11cWig/bXMpJyksCisgICAgICAgICAgICAoJ2ZvbyonLCByJyg/czpmb29bXiUoc2VwKXNdKilcWicpLAorICAgICAgICAgICAgKCdmb28/JywgcicoP3M6Zm9vW14lKHNlcClzXSlcWicpLAorICAgICAgICAgICAgKCdmb28/PycsIHInKD9zOmZvb1teJShzZXApc11bXiUoc2VwKXNdKVxaJyksCiAgICAgICAgICAgICAjIHNwZWNpYWwgY2FzZXMKLSAgICAgICAgICAgIChyJ2Zvb1xcKicsIHInZm9vXFxcXFteJShzZXApc10qXFooP21zKScpLAotICAgICAgICAgICAgKHInZm9vXFxcKicsIHInZm9vXFxcXFxcW14lKHNlcClzXSpcWig/bXMpJyksCi0gICAgICAgICAgICAoJ2Zvbz8/Pz8nLCByJ2Zvb1teJShzZXApc11bXiUoc2VwKXNdW14lKHNlcClzXVteJShzZXApc11cWig/bXMpJyksCi0gICAgICAgICAgICAocidmb29cXD8/Jywgcidmb29cXFxcW14lKHNlcClzXVteJShzZXApc11cWig/bXMpJykpOgorICAgICAgICAgICAgKHInZm9vXFwqJywgcicoP3M6Zm9vXFxcXFteJShzZXApc10qKVxaJyksCisgICAgICAgICAgICAocidmb29cXFwqJywgcicoP3M6Zm9vXFxcXFxcW14lKHNlcClzXSopXFonKSwKKyAgICAgICAgICAgICgnZm9vPz8/PycsIHInKD9zOmZvb1teJShzZXApc11bXiUoc2VwKXNdW14lKHNlcClzXVteJShzZXApc10pXFonKSwKKyAgICAgICAgICAgIChyJ2Zvb1xcPz8nLCByJyg/czpmb29cXFxcW14lKHNlcClzXVteJShzZXApc10pXFonKSk6CiAgICAgICAgICAgICByZWdleCA9IHJlZ2V4ICUgeydzZXAnOiBzZXB9CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdsb2JfdG9fcmUoZ2xvYiksIHJlZ2V4KQogCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfaW5zdGFsbC5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9pbnN0YWxsLnB5CmluZGV4IDkzMTMzMzAuLjI4N2FiMTkgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9pbnN0YWxsLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9pbnN0YWxsLnB5CkBAIC0xNyw2ICsxNyw3IEBACiBmcm9tIGRpc3R1dGlscy5leHRlbnNpb24gaW1wb3J0IEV4dGVuc2lvbgogCiBmcm9tIGRpc3R1dGlscy50ZXN0cyBpbXBvcnQgc3VwcG9ydAorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0IGFzIHRlc3Rfc3VwcG9ydAogCiAKIGRlZiBfbWFrZV9leHRfbmFtZShtb2RuYW1lKToKQEAgLTE5Niw2ICsxOTcsOSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvdW5kLCBleHBlY3RlZCkKIAogICAgIGRlZiB0ZXN0X3JlY29yZF9leHRlbnNpb25zKHNlbGYpOgorICAgICAgICBjbWQgPSB0ZXN0X3N1cHBvcnQubWlzc2luZ19jb21waWxlcl9leGVjdXRhYmxlKCkKKyAgICAgICAgaWYgY21kIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnVGhlICVyIGNvbW1hbmQgaXMgbm90IGZvdW5kJyAlIGNtZCkKICAgICAgICAgaW5zdGFsbF9kaXIgPSBzZWxmLm1rZHRlbXAoKQogICAgICAgICBwcm9qZWN0X2RpciwgZGlzdCA9IHNlbGYuY3JlYXRlX2Rpc3QoZXh0X21vZHVsZXM9WwogICAgICAgICAgICAgRXh0ZW5zaW9uKCd4eCcsIFsneHhtb2R1bGUuYyddKV0pCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfaW5zdGFsbF9kYXRhLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2luc3RhbGxfZGF0YS5weQppbmRleCA0ZDhjMDBhLi4zMmFiMjk2IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfaW5zdGFsbF9kYXRhLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9pbnN0YWxsX2RhdGEucHkKQEAgLTEsOCArMSw2IEBACiAiIiJUZXN0cyBmb3IgZGlzdHV0aWxzLmNvbW1hbmQuaW5zdGFsbF9kYXRhLiIiIgotaW1wb3J0IHN5cwogaW1wb3J0IG9zCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBnZXRwYXNzCiAKIGZyb20gZGlzdHV0aWxzLmNvbW1hbmQuaW5zdGFsbF9kYXRhIGltcG9ydCBpbnN0YWxsX2RhdGEKIGZyb20gZGlzdHV0aWxzLnRlc3RzIGltcG9ydCBzdXBwb3J0CmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfaW5zdGFsbF9oZWFkZXJzLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2luc3RhbGxfaGVhZGVycy5weQppbmRleCBkOTUzMTU3Li4yMjE3YjMyIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfaW5zdGFsbF9oZWFkZXJzLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9pbnN0YWxsX2hlYWRlcnMucHkKQEAgLTEsOCArMSw2IEBACiAiIiJUZXN0cyBmb3IgZGlzdHV0aWxzLmNvbW1hbmQuaW5zdGFsbF9oZWFkZXJzLiIiIgotaW1wb3J0IHN5cwogaW1wb3J0IG9zCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBnZXRwYXNzCiAKIGZyb20gZGlzdHV0aWxzLmNvbW1hbmQuaW5zdGFsbF9oZWFkZXJzIGltcG9ydCBpbnN0YWxsX2hlYWRlcnMKIGZyb20gZGlzdHV0aWxzLnRlc3RzIGltcG9ydCBzdXBwb3J0CmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfaW5zdGFsbF9saWIucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfaW5zdGFsbF9saWIucHkKaW5kZXggNTM3OGFhOC4uZmRhNjMxNSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2luc3RhbGxfbGliLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9pbnN0YWxsX2xpYi5weQpAQCAtMTA0LDcgKzEwNCw4IEBACiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzeXMuZG9udF93cml0ZV9ieXRlY29kZSA9IG9sZF9kb250X3dyaXRlX2J5dGVjb2RlCiAKLSAgICAgICAgc2VsZi5hc3NlcnRJbignYnl0ZS1jb21waWxpbmcgaXMgZGlzYWJsZWQnLCBzZWxmLmxvZ3NbMF1bMV0pCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2J5dGUtY29tcGlsaW5nIGlzIGRpc2FibGVkJywKKyAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZ3NbMF1bMV0gJSBzZWxmLmxvZ3NbMF1bMl0pCiAKIAogZGVmIHRlc3Rfc3VpdGUoKToKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9zcGF3bi5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9zcGF3bi5weQppbmRleCA2YzdlYjIwLi41ZWRjMjRhIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3Rfc3Bhd24ucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X3NwYXduLnB5CkBAIC0xLDExICsxLDExIEBACiAiIiJUZXN0cyBmb3IgZGlzdHV0aWxzLnNwYXduLiIiIgogaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgc3lzCiBpbXBvcnQgb3MKLWltcG9ydCB0aW1lCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgY2FwdHVyZWRfc3Rkb3V0LCBydW5fdW5pdHRlc3QKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIHVuaXhfc2hlbGwKIAogZnJvbSBkaXN0dXRpbHMuc3Bhd24gaW1wb3J0IF9udF9xdW90ZV9hcmdzCi1mcm9tIGRpc3R1dGlscy5zcGF3biBpbXBvcnQgc3Bhd24sIGZpbmRfZXhlY3V0YWJsZQorZnJvbSBkaXN0dXRpbHMuc3Bhd24gaW1wb3J0IHNwYXduCiBmcm9tIGRpc3R1dGlscy5lcnJvcnMgaW1wb3J0IERpc3R1dGlsc0V4ZWNFcnJvcgogZnJvbSBkaXN0dXRpbHMudGVzdHMgaW1wb3J0IHN1cHBvcnQKIApAQCAtMzAsOSArMzAsOSBAQAogCiAgICAgICAgICMgY3JlYXRpbmcgc29tZXRoaW5nIGV4ZWN1dGFibGUKICAgICAgICAgIyB0aHJvdWdoIHRoZSBzaGVsbCB0aGF0IHJldHVybnMgMQotICAgICAgICBpZiBvcy5uYW1lID09ICdwb3NpeCc6CisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSAhPSAnd2luMzInOgogICAgICAgICAgICAgZXhlID0gb3MucGF0aC5qb2luKHRtcGRpciwgJ2Zvby5zaCcpCi0gICAgICAgICAgICBzZWxmLndyaXRlX2ZpbGUoZXhlLCAnIyEvYmluL3NoXG5leGl0IDEnKQorICAgICAgICAgICAgc2VsZi53cml0ZV9maWxlKGV4ZSwgJyMhJXNcbmV4aXQgMScgJSB1bml4X3NoZWxsKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZXhlID0gb3MucGF0aC5qb2luKHRtcGRpciwgJ2Zvby5iYXQnKQogICAgICAgICAgICAgc2VsZi53cml0ZV9maWxlKGV4ZSwgJ2V4aXQgMScpCkBAIC00MSw5ICs0MSw5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKERpc3R1dGlsc0V4ZWNFcnJvciwgc3Bhd24sIFtleGVdKQogCiAgICAgICAgICMgbm93IHNvbWV0aGluZyB0aGF0IHdvcmtzCi0gICAgICAgIGlmIG9zLm5hbWUgPT0gJ3Bvc2l4JzoKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtICE9ICd3aW4zMic6CiAgICAgICAgICAgICBleGUgPSBvcy5wYXRoLmpvaW4odG1wZGlyLCAnZm9vLnNoJykKLSAgICAgICAgICAgIHNlbGYud3JpdGVfZmlsZShleGUsICcjIS9iaW4vc2hcbmV4aXQgMCcpCisgICAgICAgICAgICBzZWxmLndyaXRlX2ZpbGUoZXhlLCAnIyElc1xuZXhpdCAwJyAlIHVuaXhfc2hlbGwpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBleGUgPSBvcy5wYXRoLmpvaW4odG1wZGlyLCAnZm9vLmJhdCcpCiAgICAgICAgICAgICBzZWxmLndyaXRlX2ZpbGUoZXhlLCAnZXhpdCAwJykKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9zeXNjb25maWcucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3Rfc3lzY29uZmlnLnB5CmluZGV4IGZjNGQxZGUuLmZlNGEyOTkgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9zeXNjb25maWcucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X3N5c2NvbmZpZy5weQpAQCAtMzksMTUgKzM5LDYgQEAKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChzeXNjb25maWcuZ2V0X3B5dGhvbl9saWIoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXNjb25maWcuZ2V0X3B5dGhvbl9saWIocHJlZml4PVRFU1RGTikpCiAKLSAgICBkZWYgdGVzdF9nZXRfcHl0aG9uX2luYyhzZWxmKToKLSAgICAgICAgaW5jX2RpciA9IHN5c2NvbmZpZy5nZXRfcHl0aG9uX2luYygpCi0gICAgICAgICMgVGhpcyBpcyBub3QgbXVjaCBvZiBhIHRlc3QuICBXZSBtYWtlIHN1cmUgUHl0aG9uLmggZXhpc3RzCi0gICAgICAgICMgaW4gdGhlIGRpcmVjdG9yeSByZXR1cm5lZCBieSBnZXRfcHl0aG9uX2luYygpIGJ1dCB3ZSBkb24ndCBrbm93Ci0gICAgICAgICMgaXQgaXMgdGhlIGNvcnJlY3QgZmlsZS4KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNkaXIoaW5jX2RpciksIGluY19kaXIpCi0gICAgICAgIHB5dGhvbl9oID0gb3MucGF0aC5qb2luKGluY19kaXIsICJQeXRob24uaCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShweXRob25faCksIHB5dGhvbl9oKQotCiAgICAgZGVmIHRlc3RfZ2V0X2NvbmZpZ192YXJzKHNlbGYpOgogICAgICAgICBjdmFycyA9IHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcnMoKQogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoY3ZhcnMsIGRpY3QpCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfdW5peGNjb21waWxlci5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF91bml4Y2NvbXBpbGVyLnB5CmluZGV4IGUxNzFlZTkuLmVmYmEyN2UgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF91bml4Y2NvbXBpbGVyLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF91bml4Y2NvbXBpbGVyLnB5CkBAIC0xLDUgKzEsNCBAQAogIiIiVGVzdHMgZm9yIGRpc3R1dGlscy51bml4Y2NvbXBpbGVyLiIiIgotaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBFbnZpcm9ubWVudFZhckd1YXJkLCBydW5fdW5pdHRlc3QKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGV4dF9maWxlLnB5IGIvTGliL2Rpc3R1dGlscy90ZXh0X2ZpbGUucHkKaW5kZXggNDc4MzM2Zi4uOTNhYmFkMyAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXh0X2ZpbGUucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXh0X2ZpbGUucHkKQEAgLTQsNyArNCw3IEBACiB0aGF0IChvcHRpb25hbGx5KSB0YWtlcyBjYXJlIG9mIHN0cmlwcGluZyBjb21tZW50cywgaWdub3JpbmcgYmxhbmsKIGxpbmVzLCBhbmQgam9pbmluZyBsaW5lcyB3aXRoIGJhY2tzbGFzaGVzLiIiIgogCi1pbXBvcnQgc3lzLCBvcywgaW8KK2ltcG9ydCBzeXMsIGlvCiAKIAogY2xhc3MgVGV4dEZpbGU6CmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3V0aWwucHkgYi9MaWIvZGlzdHV0aWxzL3V0aWwucHkKaW5kZXggZTQyMzMyNS4uZmRjZjZmYSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy91dGlsLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdXRpbC5weQpAQCAtNyw4ICs3LDggQEAKIGltcG9ydCBvcwogaW1wb3J0IHJlCiBpbXBvcnQgaW1wb3J0bGliLnV0aWwKLWltcG9ydCBzeXMKIGltcG9ydCBzdHJpbmcKK2ltcG9ydCBzeXMKIGZyb20gZGlzdHV0aWxzLmVycm9ycyBpbXBvcnQgRGlzdHV0aWxzUGxhdGZvcm1FcnJvcgogZnJvbSBkaXN0dXRpbHMuZGVwX3V0aWwgaW1wb3J0IG5ld2VyCiBmcm9tIGRpc3R1dGlscy5zcGF3biBpbXBvcnQgc3Bhd24KQEAgLTM1MCw2ICszNTAsMTEgQEAKICAgICBnZW5lcmF0ZWQgaW4gaW5kaXJlY3QgbW9kZTsgdW5sZXNzIHlvdSBrbm93IHdoYXQgeW91J3JlIGRvaW5nLCBsZWF2ZQogICAgIGl0IHNldCB0byBOb25lLgogICAgICIiIgorCisgICAgIyBMYXRlIGltcG9ydCB0byBmaXggYSBib290c3RyYXAgaXNzdWU6IF9wb3NpeHN1YnByb2Nlc3MgaXMgYnVpbHQgYnkKKyAgICAjIHNldHVwLnB5LCBidXQgc2V0dXAucHkgdXNlcyBkaXN0dXRpbHMuCisgICAgaW1wb3J0IHN1YnByb2Nlc3MKKwogICAgICMgbm90aGluZyBpcyBkb25lIGlmIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlIGlzIFRydWUKICAgICBpZiBzeXMuZG9udF93cml0ZV9ieXRlY29kZToKICAgICAgICAgcmFpc2UgRGlzdHV0aWxzQnl0ZUNvbXBpbGVFcnJvcignYnl0ZS1jb21waWxpbmcgaXMgZGlzYWJsZWQuJykKQEAgLTQxMiwxMSArNDE3LDkgQEAKIAogICAgICAgICAgICAgc2NyaXB0LmNsb3NlKCkKIAotICAgICAgICBjbWQgPSBbc3lzLmV4ZWN1dGFibGUsIHNjcmlwdF9uYW1lXQotICAgICAgICBpZiBvcHRpbWl6ZSA9PSAxOgotICAgICAgICAgICAgY21kLmluc2VydCgxLCAiLU8iKQotICAgICAgICBlbGlmIG9wdGltaXplID09IDI6Ci0gICAgICAgICAgICBjbWQuaW5zZXJ0KDEsICItT08iKQorICAgICAgICBjbWQgPSBbc3lzLmV4ZWN1dGFibGVdCisgICAgICAgIGNtZC5leHRlbmQoc3VicHJvY2Vzcy5fb3B0aW1fYXJnc19mcm9tX2ludGVycHJldGVyX2ZsYWdzKCkpCisgICAgICAgIGNtZC5hcHBlbmQoc2NyaXB0X25hbWUpCiAgICAgICAgIHNwYXduKGNtZCwgZHJ5X3J1bj1kcnlfcnVuKQogICAgICAgICBleGVjdXRlKG9zLnJlbW92ZSwgKHNjcmlwdF9uYW1lLCksICJyZW1vdmluZyAlcyIgJSBzY3JpcHRfbmFtZSwKICAgICAgICAgICAgICAgICBkcnlfcnVuPWRyeV9ydW4pCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3ZlcnNpb25wcmVkaWNhdGUucHkgYi9MaWIvZGlzdHV0aWxzL3ZlcnNpb25wcmVkaWNhdGUucHkKaW5kZXggYjBkZDlmNC4uMDYyYzk4ZiAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy92ZXJzaW9ucHJlZGljYXRlLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdmVyc2lvbnByZWRpY2F0ZS5weQpAQCAtMTU0LDcgKzE1NCw3IEBACiAgICAgZ2xvYmFsIF9wcm92aXNpb25fcngKICAgICBpZiBfcHJvdmlzaW9uX3J4IGlzIE5vbmU6CiAgICAgICAgIF9wcm92aXNpb25fcnggPSByZS5jb21waWxlKAotICAgICAgICAgICAgIihbYS16QS1aX11cdyooPzpcLlthLXpBLVpfXVx3KikqKSg/OlxzKlwoXHMqKFteKVxzXSspXHMqXCkpPyQiLAorICAgICAgICAgICAgciIoW2EtekEtWl9dXHcqKD86XC5bYS16QS1aX11cdyopKikoPzpccypcKFxzKihbXilcc10rKVxzKlwpKT8kIiwKICAgICAgICAgICAgIHJlLkFTQ0lJKQogICAgIHZhbHVlID0gdmFsdWUuc3RyaXAoKQogICAgIG0gPSBfcHJvdmlzaW9uX3J4Lm1hdGNoKHZhbHVlKQpkaWZmIC0tZ2l0IGEvTGliL2RvY3Rlc3QucHkgYi9MaWIvZG9jdGVzdC5weQppbmRleCAzOGZkZDgwLi4wYjc4NTQ0IDEwMDY0NAotLS0gYS9MaWIvZG9jdGVzdC5weQorKysgYi9MaWIvZG9jdGVzdC5weQpAQCAtMzgxLDEyICszODEsMTUgQEAKICAgICAgICAgICAgIHN5cy5zdGRvdXQgPSBzYXZlX3N0ZG91dAogCiAjIFtYWF0gTm9ybWFsaXplIHdpdGggcmVzcGVjdCB0byBvcy5wYXRoLnBhcmRpcj8KLWRlZiBfbW9kdWxlX3JlbGF0aXZlX3BhdGgobW9kdWxlLCBwYXRoKToKK2RlZiBfbW9kdWxlX3JlbGF0aXZlX3BhdGgobW9kdWxlLCB0ZXN0X3BhdGgpOgogICAgIGlmIG5vdCBpbnNwZWN0LmlzbW9kdWxlKG1vZHVsZSk6CiAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignRXhwZWN0ZWQgYSBtb2R1bGU6ICVyJyAlIG1vZHVsZSkKLSAgICBpZiBwYXRoLnN0YXJ0c3dpdGgoJy8nKToKKyAgICBpZiB0ZXN0X3BhdGguc3RhcnRzd2l0aCgnLycpOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdNb2R1bGUtcmVsYXRpdmUgZmlsZXMgbWF5IG5vdCBoYXZlIGFic29sdXRlIHBhdGhzJykKIAorICAgICMgTm9ybWFsaXplIHRoZSBwYXRoLiBPbiBXaW5kb3dzLCByZXBsYWNlICIvIiB3aXRoICJcIi4KKyAgICB0ZXN0X3BhdGggPSBvcy5wYXRoLmpvaW4oKih0ZXN0X3BhdGguc3BsaXQoJy8nKSkpCisKICAgICAjIEZpbmQgdGhlIGJhc2UgZGlyZWN0b3J5IGZvciB0aGUgcGF0aC4KICAgICBpZiBoYXNhdHRyKG1vZHVsZSwgJ19fZmlsZV9fJyk6CiAgICAgICAgICMgQSBub3JtYWwgbW9kdWxlL3BhY2thZ2UKQEAgLTM5OCwxMyArNDAxLDE5IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBiYXNlZGlyID0gb3MuY3VyZGlyCiAgICAgZWxzZToKKyAgICAgICAgaWYgaGFzYXR0cihtb2R1bGUsICdfX3BhdGhfXycpOgorICAgICAgICAgICAgZm9yIGRpcmVjdG9yeSBpbiBtb2R1bGUuX19wYXRoX186CisgICAgICAgICAgICAgICAgZnVsbHBhdGggPSBvcy5wYXRoLmpvaW4oZGlyZWN0b3J5LCB0ZXN0X3BhdGgpCisgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZnVsbHBhdGgpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVsbHBhdGgKKwogICAgICAgICAjIEEgbW9kdWxlIHcvbyBfX2ZpbGVfXyAodGhpcyBpbmNsdWRlcyBidWlsdGlucykKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ2FuJ3QgcmVzb2x2ZSBwYXRocyByZWxhdGl2ZSB0byB0aGUgbW9kdWxlICIKICAgICAgICAgICAgICAgICAgICAgICAgICAiJXIgKGl0IGhhcyBubyBfX2ZpbGVfXykiCiAgICAgICAgICAgICAgICAgICAgICAgICAgJSBtb2R1bGUuX19uYW1lX18pCiAKLSAgICAjIENvbWJpbmUgdGhlIGJhc2UgZGlyZWN0b3J5IGFuZCB0aGUgcGF0aC4KLSAgICByZXR1cm4gb3MucGF0aC5qb2luKGJhc2VkaXIsICoocGF0aC5zcGxpdCgnLycpKSkKKyAgICAjIENvbWJpbmUgdGhlIGJhc2UgZGlyZWN0b3J5IGFuZCB0aGUgdGVzdCBwYXRoLgorICAgIHJldHVybiBvcy5wYXRoLmpvaW4oYmFzZWRpciwgdGVzdF9wYXRoKQogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIyAyLiBFeGFtcGxlICYgRG9jVGVzdApAQCAtNzU2LDcgKzc2NSw3IEBACiAKICAgICAjIFRoaXMgcmVndWxhciBleHByZXNzaW9uIGZpbmRzIHRoZSBpbmRlbnRhdGlvbiBvZiBldmVyeSBub24tYmxhbmsKICAgICAjIGxpbmUgaW4gYSBzdHJpbmcuCi0gICAgX0lOREVOVF9SRSA9IHJlLmNvbXBpbGUoJ14oWyBdKikoPz1cUyknLCByZS5NVUxUSUxJTkUpCisgICAgX0lOREVOVF9SRSA9IHJlLmNvbXBpbGUocideKFsgXSopKD89XFMpJywgcmUuTVVMVElMSU5FKQogCiAgICAgZGVmIF9taW5faW5kZW50KHNlbGYsIHMpOgogICAgICAgICAiUmV0dXJuIHRoZSBtaW5pbXVtIGluZGVudGF0aW9uIG9mIGFueSBub24tYmxhbmsgbGluZSBpbiBgc2AiCkBAIC0xMDk3LDcgKzExMDYsNyBAQAogICAgICAgICBpZiBsaW5lbm8gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBpZiBzb3VyY2VfbGluZXMgaXMgTm9uZToKICAgICAgICAgICAgICAgICByZXR1cm4gbGluZW5vKzEKLSAgICAgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoJyhefC4qOilccypcdyooInxcJyknKQorICAgICAgICAgICAgcGF0ID0gcmUuY29tcGlsZShyJyhefC4qOilccypcdyooInxcJyknKQogICAgICAgICAgICAgZm9yIGxpbmVubyBpbiByYW5nZShsaW5lbm8sIGxlbihzb3VyY2VfbGluZXMpKToKICAgICAgICAgICAgICAgICBpZiBwYXQubWF0Y2goc291cmNlX2xpbmVzW2xpbmVub10pOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGluZW5vCkBAIC0xNTk5LDExICsxNjA4LDExIEBACiAgICAgICAgICMgYmxhbmsgbGluZSwgdW5sZXNzIHRoZSBET05UX0FDQ0VQVF9CTEFOS0xJTkUgZmxhZyBpcyB1c2VkLgogICAgICAgICBpZiBub3QgKG9wdGlvbmZsYWdzICYgRE9OVF9BQ0NFUFRfQkxBTktMSU5FKToKICAgICAgICAgICAgICMgUmVwbGFjZSA8QkxBTktMSU5FPiBpbiB3YW50IHdpdGggYSBibGFuayBsaW5lLgotICAgICAgICAgICAgd2FudCA9IHJlLnN1YignKD9tKV4lc1xzKj8kJyAlIHJlLmVzY2FwZShCTEFOS0xJTkVfTUFSS0VSKSwKKyAgICAgICAgICAgIHdhbnQgPSByZS5zdWIocicoP20pXiVzXHMqPyQnICUgcmUuZXNjYXBlKEJMQU5LTElORV9NQVJLRVIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAnJywgd2FudCkKICAgICAgICAgICAgICMgSWYgYSBsaW5lIGluIGdvdCBjb250YWlucyBvbmx5IHNwYWNlcywgdGhlbiByZW1vdmUgdGhlCiAgICAgICAgICAgICAjIHNwYWNlcy4KLSAgICAgICAgICAgIGdvdCA9IHJlLnN1YignKD9tKV5ccyo/JCcsICcnLCBnb3QpCisgICAgICAgICAgICBnb3QgPSByZS5zdWIocicoP20pXlxzKj8kJywgJycsIGdvdCkKICAgICAgICAgICAgIGlmIGdvdCA9PSB3YW50OgogICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCiAKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9faGVhZGVyX3ZhbHVlX3BhcnNlci5weSBiL0xpYi9lbWFpbC9faGVhZGVyX3ZhbHVlX3BhcnNlci5weQppbmRleCA1ZGY5NTExLi41N2QwMWZiIDEwMDY0NAotLS0gYS9MaWIvZW1haWwvX2hlYWRlcl92YWx1ZV9wYXJzZXIucHkKKysrIGIvTGliL2VtYWlsL19oZWFkZXJfdmFsdWVfcGFyc2VyLnB5CkBAIC02NTIsOCArNjUyLDggQEAKICAgICAgICAgaWYgdmFsdWUudG9rZW5fdHlwZSA9PSAnY29tbWVudCc6CiAgICAgICAgICAgICByZXR1cm4gc3RyKHZhbHVlKQogICAgICAgICByZXR1cm4gc3RyKHZhbHVlKS5yZXBsYWNlKCdcXCcsICdcXFxcJykucmVwbGFjZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKCcsICdcKCcpLnJlcGxhY2UoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyknLCAnXCknKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoJywgcidcKCcpLnJlcGxhY2UoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyknLCByJ1wpJykKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBjb250ZW50KHNlbGYpOgpAQCAtMTM1NiwxNSArMTM1NiwxNSBAQAogCiBfd3NwX3NwbGl0dGVyID0gcmUuY29tcGlsZShyJyhbe31dKyknLmZvcm1hdCgnJy5qb2luKFdTUCkpKS5zcGxpdAogX25vbl9hdG9tX2VuZF9tYXRjaGVyID0gcmUuY29tcGlsZShyIltee31dKyIuZm9ybWF0KAotICAgICcnLmpvaW4oQVRPTV9FTkRTKS5yZXBsYWNlKCdcXCcsJ1xcXFwnKS5yZXBsYWNlKCddJywnXF0nKSkpLm1hdGNoCisgICAgJycuam9pbihBVE9NX0VORFMpLnJlcGxhY2UoJ1xcJywnXFxcXCcpLnJlcGxhY2UoJ10nLHInXF0nKSkpLm1hdGNoCiBfbm9uX3ByaW50YWJsZV9maW5kZXIgPSByZS5jb21waWxlKHIiW1x4MDAtXHgyMFx4N0ZdIikuZmluZGFsbAogX25vbl90b2tlbl9lbmRfbWF0Y2hlciA9IHJlLmNvbXBpbGUociJbXnt9XSsiLmZvcm1hdCgKLSAgICAnJy5qb2luKFRPS0VOX0VORFMpLnJlcGxhY2UoJ1xcJywnXFxcXCcpLnJlcGxhY2UoJ10nLCdcXScpKSkubWF0Y2gKKyAgICAnJy5qb2luKFRPS0VOX0VORFMpLnJlcGxhY2UoJ1xcJywnXFxcXCcpLnJlcGxhY2UoJ10nLHInXF0nKSkpLm1hdGNoCiBfbm9uX2F0dHJpYnV0ZV9lbmRfbWF0Y2hlciA9IHJlLmNvbXBpbGUociJbXnt9XSsiLmZvcm1hdCgKLSAgICAnJy5qb2luKEFUVFJJQlVURV9FTkRTKS5yZXBsYWNlKCdcXCcsJ1xcXFwnKS5yZXBsYWNlKCddJywnXF0nKSkpLm1hdGNoCisgICAgJycuam9pbihBVFRSSUJVVEVfRU5EUykucmVwbGFjZSgnXFwnLCdcXFxcJykucmVwbGFjZSgnXScscidcXScpKSkubWF0Y2gKIF9ub25fZXh0ZW5kZWRfYXR0cmlidXRlX2VuZF9tYXRjaGVyID0gcmUuY29tcGlsZShyIltee31dKyIuZm9ybWF0KAogICAgICcnLmpvaW4oRVhURU5ERURfQVRUUklCVVRFX0VORFMpLnJlcGxhY2UoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXFwnLCdcXFxcJykucmVwbGFjZSgnXScsJ1xdJykpKS5tYXRjaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xcJywnXFxcXCcpLnJlcGxhY2UoJ10nLHInXF0nKSkpLm1hdGNoCiAKIGRlZiBfdmFsaWRhdGVfeHRleHQoeHRleHQpOgogICAgICIiIklmIGlucHV0IHRva2VuIGNvbnRhaW5zIEFTQ0lJIG5vbi1wcmludGFibGVzLCByZWdpc3RlciBhIGRlZmVjdC4iIiIKQEAgLTE1MTcsNyArMTUxNyw3IEBACiAgICAgcmV0dXJuIHVuc3RydWN0dXJlZAogCiBkZWYgZ2V0X3FwX2N0ZXh0KHZhbHVlKToKLSAgICAiIiJjdGV4dCA9IDxwcmludGFibGUgYXNjaWkgZXhjZXB0IFwgKCApPgorICAgIHIiIiJjdGV4dCA9IDxwcmludGFibGUgYXNjaWkgZXhjZXB0IFwgKCApPgogCiAgICAgVGhpcyBpcyBub3QgdGhlIFJGQyBjdGV4dCwgc2luY2Ugd2UgYXJlIGhhbmRsaW5nIG5lc3RlZCBjb21tZW50cyBpbiBjb21tZW50CiAgICAgYW5kIHVucXVvdGluZyBxdW90ZWQtcGFpcnMgaGVyZS4gIFdlIGFsbG93IGFueXRoaW5nIGV4Y2VwdCB0aGUgJygpJwpAQCAtMTg3OCw3ICsxODc4LDcgQEAKICAgICByZXR1cm4gb2JzX2xvY2FsX3BhcnQsIHZhbHVlCiAKIGRlZiBnZXRfZHRleHQodmFsdWUpOgotICAgICIiIiBkdGV4dCA9IDxwcmludGFibGUgYXNjaWkgZXhjZXB0IFwgWyBdPiAvIG9icy1kdGV4dAorICAgIHIiIiIgZHRleHQgPSA8cHJpbnRhYmxlIGFzY2lpIGV4Y2VwdCBcIFsgXT4gLyBvYnMtZHRleHQKICAgICAgICAgb2JzLWR0ZXh0ID0gb2JzLU5PLVdTLUNUTCAvIHF1b3RlZC1wYWlyCiAKICAgICBXZSBhbGxvdyBhbnl0aGluZyBleGNlcHQgdGhlIGV4Y2x1ZGVkIGNoYXJhY3RlcnMsIGJ1dCBpZiB3ZSBmaW5kIGFueQpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL19wb2xpY3liYXNlLnB5IGIvTGliL2VtYWlsL19wb2xpY3liYXNlLnB5CmluZGV4IGMwZDk4YTQuLmRmNDY0OTYgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9fcG9saWN5YmFzZS5weQorKysgYi9MaWIvZW1haWwvX3BvbGljeWJhc2UucHkKQEAgLTE1NCw2ICsxNTQsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbS4gVGhpcyBpcyB1c2VkIHdoZW4gdGhlIG1lc3NhZ2UgaXMgYmVpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcmlhbGl6ZWQgYnkgYSBnZW5lcmF0b3IuIERlZmF1bHQ6IFRydWUuCiAKKyAgICBtZXNzYWdlX2ZhY3RvcnkgICAgIC0tIHRoZSBjbGFzcyB0byB1c2UgdG8gY3JlYXRlIG5ldyBtZXNzYWdlIG9iamVjdHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB0aGUgdmFsdWUgaXMgTm9uZSwgdGhlIGRlZmF1bHQgaXMgTWVzc2FnZS4KKwogICAgICIiIgogCiAgICAgcmFpc2Vfb25fZGVmZWN0ID0gRmFsc2UKQEAgLTE2MSw2ICsxNjQsNyBAQAogICAgIGN0ZV90eXBlID0gJzhiaXQnCiAgICAgbWF4X2xpbmVfbGVuZ3RoID0gNzgKICAgICBtYW5nbGVfZnJvbV8gPSBGYWxzZQorICAgIG1lc3NhZ2VfZmFjdG9yeSA9IE5vbmUKIAogICAgIGRlZiBoYW5kbGVfZGVmZWN0KHNlbGYsIG9iaiwgZGVmZWN0KToKICAgICAgICAgIiIiQmFzZWQgb24gcG9saWN5LCBlaXRoZXIgcmFpc2UgZGVmZWN0IG9yIGNhbGwgcmVnaXN0ZXJfZGVmZWN0LgpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL2NvbnRlbnRtYW5hZ2VyLnB5IGIvTGliL2VtYWlsL2NvbnRlbnRtYW5hZ2VyLnB5CmluZGV4IGI5OGNlMjcuLmI5MDRkZWQgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9jb250ZW50bWFuYWdlci5weQorKysgYi9MaWIvZW1haWwvY29udGVudG1hbmFnZXIucHkKQEAgLTE0Miw3ICsxNDIsNyBAQAogZGVmIF9lbmNvZGVfdGV4dChzdHJpbmcsIGNoYXJzZXQsIGN0ZSwgcG9saWN5KToKICAgICBsaW5lcyA9IHN0cmluZy5lbmNvZGUoY2hhcnNldCkuc3BsaXRsaW5lcygpCiAgICAgbGluZXNlcCA9IHBvbGljeS5saW5lc2VwLmVuY29kZSgnYXNjaWknKQotICAgIGRlZiBlbWJlZGVkX2JvZHkobGluZXMpOiByZXR1cm4gbGluZXNlcC5qb2luKGxpbmVzKSArIGxpbmVzZXAKKyAgICBkZWYgZW1iZWRkZWRfYm9keShsaW5lcyk6IHJldHVybiBsaW5lc2VwLmpvaW4obGluZXMpICsgbGluZXNlcAogICAgIGRlZiBub3JtYWxfYm9keShsaW5lcyk6IHJldHVybiBiJ1xuJy5qb2luKGxpbmVzKSArIGInXG4nCiAgICAgaWYgY3RlPT1Ob25lOgogICAgICAgICAjIFVzZSBoZXVyaXN0aWNzIHRvIGRlY2lkZSBvbiB0aGUgImJlc3QiIGVuY29kaW5nLgpAQCAtMTUzLDcgKzE1Myw3IEBACiAgICAgICAgIGlmIChwb2xpY3kuY3RlX3R5cGUgPT0gJzhiaXQnIGFuZAogICAgICAgICAgICAgICAgIG1heChsZW4oeCkgZm9yIHggaW4gbGluZXMpIDw9IHBvbGljeS5tYXhfbGluZV9sZW5ndGgpOgogICAgICAgICAgICAgcmV0dXJuICc4Yml0Jywgbm9ybWFsX2JvZHkobGluZXMpLmRlY29kZSgnYXNjaWknLCAnc3Vycm9nYXRlZXNjYXBlJykKLSAgICAgICAgc25pZmYgPSBlbWJlZGVkX2JvZHkobGluZXNbOjEwXSkKKyAgICAgICAgc25pZmYgPSBlbWJlZGRlZF9ib2R5KGxpbmVzWzoxMF0pCiAgICAgICAgIHNuaWZmX3FwID0gcXVvcHJpbWltZS5ib2R5X2VuY29kZShzbmlmZi5kZWNvZGUoJ2xhdGluLTEnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeS5tYXhfbGluZV9sZW5ndGgpCiAgICAgICAgIHNuaWZmX2Jhc2U2NCA9IGJpbmFzY2lpLmIyYV9iYXNlNjQoc25pZmYpCkBAIC0xNzIsNyArMTcyLDcgQEAKICAgICAgICAgZGF0YSA9IHF1b3ByaW1pbWUuYm9keV9lbmNvZGUobm9ybWFsX2JvZHkobGluZXMpLmRlY29kZSgnbGF0aW4tMScpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3kubWF4X2xpbmVfbGVuZ3RoKQogICAgIGVsaWYgY3RlID09ICdiYXNlNjQnOgotICAgICAgICBkYXRhID0gX2VuY29kZV9iYXNlNjQoZW1iZWRlZF9ib2R5KGxpbmVzKSwgcG9saWN5Lm1heF9saW5lX2xlbmd0aCkKKyAgICAgICAgZGF0YSA9IF9lbmNvZGVfYmFzZTY0KGVtYmVkZGVkX2JvZHkobGluZXMpLCBwb2xpY3kubWF4X2xpbmVfbGVuZ3RoKQogICAgIGVsc2U6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlVua25vd24gY29udGVudCB0cmFuc2ZlciBlbmNvZGluZyB7fSIuZm9ybWF0KGN0ZSkpCiAgICAgcmV0dXJuIGN0ZSwgZGF0YQpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL2ZlZWRwYXJzZXIucHkgYi9MaWIvZW1haWwvZmVlZHBhcnNlci5weQppbmRleCAwYjMxMmU1Li43YzA3Y2E4IDEwMDY0NAotLS0gYS9MaWIvZW1haWwvZmVlZHBhcnNlci5weQorKysgYi9MaWIvZW1haWwvZmVlZHBhcnNlci5weQpAQCAtMjQsMTUgKzI0LDE0IEBACiBpbXBvcnQgcmUKIAogZnJvbSBlbWFpbCBpbXBvcnQgZXJyb3JzCi1mcm9tIGVtYWlsIGltcG9ydCBtZXNzYWdlCiBmcm9tIGVtYWlsLl9wb2xpY3liYXNlIGltcG9ydCBjb21wYXQzMgogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPCiAKLU5MQ1JFID0gcmUuY29tcGlsZSgnXHJcbnxccnxcbicpCi1OTENSRV9ib2wgPSByZS5jb21waWxlKCcoXHJcbnxccnxcbiknKQotTkxDUkVfZW9sID0gcmUuY29tcGlsZSgnKFxyXG58XHJ8XG4pXFonKQotTkxDUkVfY3JhY2sgPSByZS5jb21waWxlKCcoXHJcbnxccnxcbiknKQorTkxDUkUgPSByZS5jb21waWxlKHInXHJcbnxccnxcbicpCitOTENSRV9ib2wgPSByZS5jb21waWxlKHInKFxyXG58XHJ8XG4pJykKK05MQ1JFX2VvbCA9IHJlLmNvbXBpbGUocicoXHJcbnxccnxcbilcWicpCitOTENSRV9jcmFjayA9IHJlLmNvbXBpbGUocicoXHJcbnxccnxcbiknKQogIyBSRkMgMjgyMiAkMy42LjggT3B0aW9uYWwgZmllbGRzLiAgZnRleHQgaXMgJWQzMy01NyAvICVkNTktMTI2LCBBbnkgY2hhcmFjdGVyCiAjIGV4Y2VwdCBjb250cm9scywgU1AsIGFuZCAiOiIuCiBoZWFkZXJSRSA9IHJlLmNvbXBpbGUocideKEZyb20gfFtcMDQxLVwwNzFcMDczLVwxNzZdKjp8W1x0IF0pJykKQEAgLTE0OCwxMyArMTQ3LDExIEBACiAgICAgICAgIHNlbGYucG9saWN5ID0gcG9saWN5CiAgICAgICAgIHNlbGYuX29sZF9zdHlsZV9mYWN0b3J5ID0gRmFsc2UKICAgICAgICAgaWYgX2ZhY3RvcnkgaXMgTm9uZToKLSAgICAgICAgICAgICMgV2hhdCB0aGlzIHNob3VsZCBiZToKLSAgICAgICAgICAgICNzZWxmLl9mYWN0b3J5ID0gcG9saWN5LmRlZmF1bHRfbWVzc2FnZV9mYWN0b3J5Ci0gICAgICAgICAgICAjIGJ1dCwgYmVjYXVzZSB3ZSBhcmUgcG9zdCAzLjQgZmVhdHVyZSBmcmVlemUsIGZpeCB3aXRoIHRlbXAgaGFjazoKLSAgICAgICAgICAgIGlmIHNlbGYucG9saWN5IGlzIGNvbXBhdDMyOgotICAgICAgICAgICAgICAgIHNlbGYuX2ZhY3RvcnkgPSBtZXNzYWdlLk1lc3NhZ2UKKyAgICAgICAgICAgIGlmIHBvbGljeS5tZXNzYWdlX2ZhY3RvcnkgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBmcm9tIGVtYWlsLm1lc3NhZ2UgaW1wb3J0IE1lc3NhZ2UKKyAgICAgICAgICAgICAgICBzZWxmLl9mYWN0b3J5ID0gTWVzc2FnZQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLl9mYWN0b3J5ID0gbWVzc2FnZS5FbWFpbE1lc3NhZ2UKKyAgICAgICAgICAgICAgICBzZWxmLl9mYWN0b3J5ID0gcG9saWN5Lm1lc3NhZ2VfZmFjdG9yeQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5fZmFjdG9yeSA9IF9mYWN0b3J5CiAgICAgICAgICAgICB0cnk6CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvZ2VuZXJhdG9yLnB5IGIvTGliL2VtYWlsL2dlbmVyYXRvci5weQppbmRleCAyNTYyNzhkLi5hZTY3MGMyIDEwMDY0NAotLS0gYS9MaWIvZW1haWwvZ2VuZXJhdG9yLnB5CisrKyBiL0xpYi9lbWFpbC9nZW5lcmF0b3IucHkKQEAgLTQ0OCw3ICs0NDgsOCBAQAogICAgIExpa2UgdGhlIEdlbmVyYXRvciBiYXNlIGNsYXNzLCBleGNlcHQgdGhhdCBub24tdGV4dCBwYXJ0cyBhcmUgc3Vic3RpdHV0ZWQKICAgICB3aXRoIGEgZm9ybWF0IHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHBhcnQuCiAgICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG91dGZwLCBtYW5nbGVfZnJvbV89Tm9uZSwgbWF4aGVhZGVybGVuPTc4LCBmbXQ9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG91dGZwLCBtYW5nbGVfZnJvbV89Tm9uZSwgbWF4aGVhZGVybGVuPU5vbmUsIGZtdD1Ob25lLCAqLAorICAgICAgICAgICAgICAgICBwb2xpY3k9Tm9uZSk6CiAgICAgICAgICIiIkxpa2UgR2VuZXJhdG9yLl9faW5pdF9fKCkgZXhjZXB0IHRoYXQgYW4gYWRkaXRpb25hbCBvcHRpb25hbAogICAgICAgICBhcmd1bWVudCBpcyBhbGxvd2VkLgogCkBAIC00NzAsNyArNDcxLDggQEAKIAogICAgICAgICBbTm9uLXRleHQgKCUodHlwZSlzKSBwYXJ0IG9mIG1lc3NhZ2Ugb21pdHRlZCwgZmlsZW5hbWUgJShmaWxlbmFtZSlzXQogICAgICAgICAiIiIKLSAgICAgICAgR2VuZXJhdG9yLl9faW5pdF9fKHNlbGYsIG91dGZwLCBtYW5nbGVfZnJvbV8sIG1heGhlYWRlcmxlbikKKyAgICAgICAgR2VuZXJhdG9yLl9faW5pdF9fKHNlbGYsIG91dGZwLCBtYW5nbGVfZnJvbV8sIG1heGhlYWRlcmxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeT1wb2xpY3kpCiAgICAgICAgIGlmIGZtdCBpcyBOb25lOgogICAgICAgICAgICAgc2VsZi5fZm10ID0gX0ZNVAogICAgICAgICBlbHNlOgpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL2hlYWRlci5weSBiL0xpYi9lbWFpbC9oZWFkZXIucHkKaW5kZXggNjgyMGVhMS4uYzdiMmRkOSAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL2hlYWRlci5weQorKysgYi9MaWIvZW1haWwvaGVhZGVyLnB5CkBAIC00OSw3ICs0OSw3IEBACiAKICMgRmluZCBhIGhlYWRlciBlbWJlZGRlZCBpbiBhIHB1dGF0aXZlIGhlYWRlciB2YWx1ZS4gIFVzZWQgdG8gY2hlY2sgZm9yCiAjIGhlYWRlciBpbmplY3Rpb24gYXR0YWNrLgotX2VtYmVkZWRfaGVhZGVyID0gcmUuY29tcGlsZShyJ1xuW14gXHRdKzonKQorX2VtYmVkZGVkX2hlYWRlciA9IHJlLmNvbXBpbGUocidcblteIFx0XSs6JykKIAogCiAMCkBAIC0zODUsNyArMzg1LDcgQEAKICAgICAgICAgaWYgc2VsZi5fY2h1bmtzOgogICAgICAgICAgICAgZm9ybWF0dGVyLmFkZF90cmFuc2l0aW9uKCkKICAgICAgICAgdmFsdWUgPSBmb3JtYXR0ZXIuX3N0cihsaW5lc2VwKQotICAgICAgICBpZiBfZW1iZWRlZF9oZWFkZXIuc2VhcmNoKHZhbHVlKToKKyAgICAgICAgaWYgX2VtYmVkZGVkX2hlYWRlci5zZWFyY2godmFsdWUpOgogICAgICAgICAgICAgcmFpc2UgSGVhZGVyUGFyc2VFcnJvcigiaGVhZGVyIHZhbHVlIGFwcGVhcnMgdG8gY29udGFpbiAiCiAgICAgICAgICAgICAgICAgImFuIGVtYmVkZGVkIGhlYWRlcjogeyFyfSIuZm9ybWF0KHZhbHVlKSkKICAgICAgICAgcmV0dXJuIHZhbHVlCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvbWVzc2FnZS5weSBiL0xpYi9lbWFpbC9tZXNzYWdlLnB5CmluZGV4IDRiMDQyODMuLmI2NTEyZjIgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9tZXNzYWdlLnB5CisrKyBiL0xpYi9lbWFpbC9tZXNzYWdlLnB5CkBAIC00LDE4ICs0LDE3IEBACiAKICIiIkJhc2ljIG1lc3NhZ2Ugb2JqZWN0IGZvciB0aGUgZW1haWwgcGFja2FnZSBvYmplY3QgbW9kZWwuIiIiCiAKLV9fYWxsX18gPSBbJ01lc3NhZ2UnXQorX19hbGxfXyA9IFsnTWVzc2FnZScsICdFbWFpbE1lc3NhZ2UnXQogCiBpbXBvcnQgcmUKIGltcG9ydCB1dQogaW1wb3J0IHF1b3ByaQotaW1wb3J0IHdhcm5pbmdzCiBmcm9tIGlvIGltcG9ydCBCeXRlc0lPLCBTdHJpbmdJTwogCiAjIEludHJhcGFja2FnZSBpbXBvcnRzCiBmcm9tIGVtYWlsIGltcG9ydCB1dGlscwogZnJvbSBlbWFpbCBpbXBvcnQgZXJyb3JzCi1mcm9tIGVtYWlsLl9wb2xpY3liYXNlIGltcG9ydCBjb21wYXQzMgorZnJvbSBlbWFpbC5fcG9saWN5YmFzZSBpbXBvcnQgUG9saWN5LCBjb21wYXQzMgogZnJvbSBlbWFpbCBpbXBvcnQgY2hhcnNldCBhcyBfY2hhcnNldAogZnJvbSBlbWFpbC5fZW5jb2RlZF93b3JkcyBpbXBvcnQgZGVjb2RlX2IKIENoYXJzZXQgPSBfY2hhcnNldC5DaGFyc2V0CkBAIC05NTEsNiArOTUwLDI2IEBACiAgICAgICAgICAgICBwb2xpY3kgPSBkZWZhdWx0CiAgICAgICAgIE1lc3NhZ2UuX19pbml0X18oc2VsZiwgcG9saWN5KQogCisKKyAgICBkZWYgYXNfc3RyaW5nKHNlbGYsIHVuaXhmcm9tPUZhbHNlLCBtYXhoZWFkZXJsZW49Tm9uZSwgcG9saWN5PU5vbmUpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIGVudGlyZSBmb3JtYXR0ZWQgbWVzc2FnZSBhcyBhIHN0cmluZy4KKworICAgICAgICBPcHRpb25hbCAndW5peGZyb20nLCB3aGVuIHRydWUsIG1lYW5zIGluY2x1ZGUgdGhlIFVuaXggRnJvbV8gZW52ZWxvcGUKKyAgICAgICAgaGVhZGVyLiAgbWF4aGVhZGVybGVuIGlzIHJldGFpbmVkIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggdGhlCisgICAgICAgIGJhc2UgTWVzc2FnZSBjbGFzcywgYnV0IGRlZmF1bHRzIHRvIE5vbmUsIG1lYW5pbmcgdGhhdCB0aGUgcG9saWN5IHZhbHVlCisgICAgICAgIGZvciBtYXhfbGluZV9sZW5ndGggY29udHJvbHMgdGhlIGhlYWRlciBtYXhpbXVtIGxlbmd0aC4gICdwb2xpY3knIGlzCisgICAgICAgIHBhc3NlZCB0byB0aGUgR2VuZXJhdG9yIGluc3RhbmNlIHVzZWQgdG8gc2VyaWFsaXplIHRoZSBtZXNhc2dlOyBpZiBpdAorICAgICAgICBpcyBub3Qgc3BlY2lmaWVkIHRoZSBwb2xpY3kgYXNzb2NpYXRlZCB3aXRoIHRoZSBtZXNzYWdlIGluc3RhbmNlIGlzCisgICAgICAgIHVzZWQuCisgICAgICAgICIiIgorICAgICAgICBwb2xpY3kgPSBzZWxmLnBvbGljeSBpZiBwb2xpY3kgaXMgTm9uZSBlbHNlIHBvbGljeQorICAgICAgICBpZiBtYXhoZWFkZXJsZW4gaXMgTm9uZToKKyAgICAgICAgICAgIG1heGhlYWRlcmxlbiA9IHBvbGljeS5tYXhfbGluZV9sZW5ndGgKKyAgICAgICAgcmV0dXJuIHN1cGVyKCkuYXNfc3RyaW5nKG1heGhlYWRlcmxlbj1tYXhoZWFkZXJsZW4sIHBvbGljeT1wb2xpY3kpCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuYXNfc3RyaW5nKHBvbGljeT1zZWxmLnBvbGljeS5jbG9uZSh1dGY4PVRydWUpKQorCiAgICAgZGVmIGlzX2F0dGFjaG1lbnQoc2VsZik6CiAgICAgICAgIGNfZCA9IHNlbGYuZ2V0KCdjb250ZW50LWRpc3Bvc2l0aW9uJykKICAgICAgICAgcmV0dXJuIEZhbHNlIGlmIGNfZCBpcyBOb25lIGVsc2UgY19kLmNvbnRlbnRfZGlzcG9zaXRpb24gPT0gJ2F0dGFjaG1lbnQnCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvbWltZS9hcHBsaWNhdGlvbi5weSBiL0xpYi9lbWFpbC9taW1lL2FwcGxpY2F0aW9uLnB5CmluZGV4IGY1YzU5MDUuLjY4NzdlNTUgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9taW1lL2FwcGxpY2F0aW9uLnB5CisrKyBiL0xpYi9lbWFpbC9taW1lL2FwcGxpY2F0aW9uLnB5CkBAIC0xNCw3ICsxNCw3IEBACiAgICAgIiIiQ2xhc3MgZm9yIGdlbmVyYXRpbmcgYXBwbGljYXRpb24vKiBNSU1FIGRvY3VtZW50cy4iIiIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBfZGF0YSwgX3N1YnR5cGU9J29jdGV0LXN0cmVhbScsCi0gICAgICAgICAgICAgICAgIF9lbmNvZGVyPWVuY29kZXJzLmVuY29kZV9iYXNlNjQsICoqX3BhcmFtcyk6CisgICAgICAgICAgICAgICAgIF9lbmNvZGVyPWVuY29kZXJzLmVuY29kZV9iYXNlNjQsICosIHBvbGljeT1Ob25lLCAqKl9wYXJhbXMpOgogICAgICAgICAiIiJDcmVhdGUgYW4gYXBwbGljYXRpb24vKiB0eXBlIE1JTUUgZG9jdW1lbnQuCiAKICAgICAgICAgX2RhdGEgaXMgYSBzdHJpbmcgY29udGFpbmluZyB0aGUgcmF3IGFwcGxpY2F0aW9uIGRhdGEuCkBAIC0zMSw2ICszMSw3IEBACiAgICAgICAgICIiIgogICAgICAgICBpZiBfc3VidHlwZSBpcyBOb25lOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdJbnZhbGlkIGFwcGxpY2F0aW9uIE1JTUUgc3VidHlwZScpCi0gICAgICAgIE1JTUVOb25NdWx0aXBhcnQuX19pbml0X18oc2VsZiwgJ2FwcGxpY2F0aW9uJywgX3N1YnR5cGUsICoqX3BhcmFtcykKKyAgICAgICAgTUlNRU5vbk11bHRpcGFydC5fX2luaXRfXyhzZWxmLCAnYXBwbGljYXRpb24nLCBfc3VidHlwZSwgcG9saWN5PXBvbGljeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKl9wYXJhbXMpCiAgICAgICAgIHNlbGYuc2V0X3BheWxvYWQoX2RhdGEpCiAgICAgICAgIF9lbmNvZGVyKHNlbGYpCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvbWltZS9hdWRpby5weSBiL0xpYi9lbWFpbC9taW1lL2F1ZGlvLnB5CmluZGV4IGZiYzExODkuLjRiY2Q3YjIgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9taW1lL2F1ZGlvLnB5CisrKyBiL0xpYi9lbWFpbC9taW1lL2F1ZGlvLnB5CkBAIC00Myw3ICs0Myw3IEBACiAgICAgIiIiQ2xhc3MgZm9yIGdlbmVyYXRpbmcgYXVkaW8vKiBNSU1FIGRvY3VtZW50cy4iIiIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBfYXVkaW9kYXRhLCBfc3VidHlwZT1Ob25lLAotICAgICAgICAgICAgICAgICBfZW5jb2Rlcj1lbmNvZGVycy5lbmNvZGVfYmFzZTY0LCAqKl9wYXJhbXMpOgorICAgICAgICAgICAgICAgICBfZW5jb2Rlcj1lbmNvZGVycy5lbmNvZGVfYmFzZTY0LCAqLCBwb2xpY3k9Tm9uZSwgKipfcGFyYW1zKToKICAgICAgICAgIiIiQ3JlYXRlIGFuIGF1ZGlvLyogdHlwZSBNSU1FIGRvY3VtZW50LgogCiAgICAgICAgIF9hdWRpb2RhdGEgaXMgYSBzdHJpbmcgY29udGFpbmluZyB0aGUgcmF3IGF1ZGlvIGRhdGEuICBJZiB0aGlzIGRhdGEKQEAgLTY4LDYgKzY4LDcgQEAKICAgICAgICAgICAgIF9zdWJ0eXBlID0gX3doYXRzbmQoX2F1ZGlvZGF0YSkKICAgICAgICAgaWYgX3N1YnR5cGUgaXMgTm9uZToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignQ291bGQgbm90IGZpbmQgYXVkaW8gTUlNRSBzdWJ0eXBlJykKLSAgICAgICAgTUlNRU5vbk11bHRpcGFydC5fX2luaXRfXyhzZWxmLCAnYXVkaW8nLCBfc3VidHlwZSwgKipfcGFyYW1zKQorICAgICAgICBNSU1FTm9uTXVsdGlwYXJ0Ll9faW5pdF9fKHNlbGYsICdhdWRpbycsIF9zdWJ0eXBlLCBwb2xpY3k9cG9saWN5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqX3BhcmFtcykKICAgICAgICAgc2VsZi5zZXRfcGF5bG9hZChfYXVkaW9kYXRhKQogICAgICAgICBfZW5jb2RlcihzZWxmKQpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL21pbWUvYmFzZS5weSBiL0xpYi9lbWFpbC9taW1lL2Jhc2UucHkKaW5kZXggYWM5MTkyNS4uMWEzZjliNSAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL21pbWUvYmFzZS5weQorKysgYi9MaWIvZW1haWwvbWltZS9iYXNlLnB5CkBAIC02LDYgKzYsOCBAQAogCiBfX2FsbF9fID0gWydNSU1FQmFzZSddCiAKK2ltcG9ydCBlbWFpbC5wb2xpY3kKKwogZnJvbSBlbWFpbCBpbXBvcnQgbWVzc2FnZQogCiAKQEAgLTEzLDE0ICsxNSwxNiBAQAogY2xhc3MgTUlNRUJhc2UobWVzc2FnZS5NZXNzYWdlKToKICAgICAiIiJCYXNlIGNsYXNzIGZvciBNSU1FIHNwZWNpYWxpemF0aW9ucy4iIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBfbWFpbnR5cGUsIF9zdWJ0eXBlLCAqKl9wYXJhbXMpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBfbWFpbnR5cGUsIF9zdWJ0eXBlLCAqLCBwb2xpY3k9Tm9uZSwgKipfcGFyYW1zKToKICAgICAgICAgIiIiVGhpcyBjb25zdHJ1Y3RvciBhZGRzIGEgQ29udGVudC1UeXBlOiBhbmQgYSBNSU1FLVZlcnNpb246IGhlYWRlci4KIAogICAgICAgICBUaGUgQ29udGVudC1UeXBlOiBoZWFkZXIgaXMgdGFrZW4gZnJvbSB0aGUgX21haW50eXBlIGFuZCBfc3VidHlwZQogICAgICAgICBhcmd1bWVudHMuICBBZGRpdGlvbmFsIHBhcmFtZXRlcnMgZm9yIHRoaXMgaGVhZGVyIGFyZSB0YWtlbiBmcm9tIHRoZQogICAgICAgICBrZXl3b3JkIGFyZ3VtZW50cy4KICAgICAgICAgIiIiCi0gICAgICAgIG1lc3NhZ2UuTWVzc2FnZS5fX2luaXRfXyhzZWxmKQorICAgICAgICBpZiBwb2xpY3kgaXMgTm9uZToKKyAgICAgICAgICAgIHBvbGljeSA9IGVtYWlsLnBvbGljeS5jb21wYXQzMgorICAgICAgICBtZXNzYWdlLk1lc3NhZ2UuX19pbml0X18oc2VsZiwgcG9saWN5PXBvbGljeSkKICAgICAgICAgY3R5cGUgPSAnJXMvJXMnICUgKF9tYWludHlwZSwgX3N1YnR5cGUpCiAgICAgICAgIHNlbGYuYWRkX2hlYWRlcignQ29udGVudC1UeXBlJywgY3R5cGUsICoqX3BhcmFtcykKICAgICAgICAgc2VsZlsnTUlNRS1WZXJzaW9uJ10gPSAnMS4wJwpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL21pbWUvaW1hZ2UucHkgYi9MaWIvZW1haWwvbWltZS9pbWFnZS5weQppbmRleCA1NTYzODIzLi45MjcyNDY0IDEwMDY0NAotLS0gYS9MaWIvZW1haWwvbWltZS9pbWFnZS5weQorKysgYi9MaWIvZW1haWwvbWltZS9pbWFnZS5weQpAQCAtMTcsNyArMTcsNyBAQAogICAgICIiIkNsYXNzIGZvciBnZW5lcmF0aW5nIGltYWdlLyogdHlwZSBNSU1FIGRvY3VtZW50cy4iIiIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBfaW1hZ2VkYXRhLCBfc3VidHlwZT1Ob25lLAotICAgICAgICAgICAgICAgICBfZW5jb2Rlcj1lbmNvZGVycy5lbmNvZGVfYmFzZTY0LCAqKl9wYXJhbXMpOgorICAgICAgICAgICAgICAgICBfZW5jb2Rlcj1lbmNvZGVycy5lbmNvZGVfYmFzZTY0LCAqLCBwb2xpY3k9Tm9uZSwgKipfcGFyYW1zKToKICAgICAgICAgIiIiQ3JlYXRlIGFuIGltYWdlLyogdHlwZSBNSU1FIGRvY3VtZW50LgogCiAgICAgICAgIF9pbWFnZWRhdGEgaXMgYSBzdHJpbmcgY29udGFpbmluZyB0aGUgcmF3IGltYWdlIGRhdGEuICBJZiB0aGlzIGRhdGEKQEAgLTQxLDYgKzQxLDcgQEAKICAgICAgICAgICAgIF9zdWJ0eXBlID0gaW1naGRyLndoYXQoTm9uZSwgX2ltYWdlZGF0YSkKICAgICAgICAgaWYgX3N1YnR5cGUgaXMgTm9uZToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignQ291bGQgbm90IGd1ZXNzIGltYWdlIE1JTUUgc3VidHlwZScpCi0gICAgICAgIE1JTUVOb25NdWx0aXBhcnQuX19pbml0X18oc2VsZiwgJ2ltYWdlJywgX3N1YnR5cGUsICoqX3BhcmFtcykKKyAgICAgICAgTUlNRU5vbk11bHRpcGFydC5fX2luaXRfXyhzZWxmLCAnaW1hZ2UnLCBfc3VidHlwZSwgcG9saWN5PXBvbGljeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKl9wYXJhbXMpCiAgICAgICAgIHNlbGYuc2V0X3BheWxvYWQoX2ltYWdlZGF0YSkKICAgICAgICAgX2VuY29kZXIoc2VsZikKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9taW1lL21lc3NhZ2UucHkgYi9MaWIvZW1haWwvbWltZS9tZXNzYWdlLnB5CmluZGV4IDI3NWRiZmQuLjA3ZTRmMmQgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9taW1lL21lc3NhZ2UucHkKKysrIGIvTGliL2VtYWlsL21pbWUvbWVzc2FnZS5weQpAQCAtMTQsNyArMTQsNyBAQAogY2xhc3MgTUlNRU1lc3NhZ2UoTUlNRU5vbk11bHRpcGFydCk6CiAgICAgIiIiQ2xhc3MgcmVwcmVzZW50aW5nIG1lc3NhZ2UvKiBNSU1FIGRvY3VtZW50cy4iIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBfbXNnLCBfc3VidHlwZT0ncmZjODIyJyk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIF9tc2csIF9zdWJ0eXBlPSdyZmM4MjInLCAqLCBwb2xpY3k9Tm9uZSk6CiAgICAgICAgICIiIkNyZWF0ZSBhIG1lc3NhZ2UvKiB0eXBlIE1JTUUgZG9jdW1lbnQuCiAKICAgICAgICAgX21zZyBpcyBhIG1lc3NhZ2Ugb2JqZWN0IGFuZCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIE1lc3NhZ2UsIG9yIGEKQEAgLTI0LDcgKzI0LDcgQEAKICAgICAgICAgZGVmYXVsdCBpcyAicmZjODIyIiAodGhpcyBpcyBkZWZpbmVkIGJ5IHRoZSBNSU1FIHN0YW5kYXJkLCBldmVuIHRob3VnaAogICAgICAgICB0aGUgdGVybSAicmZjODIyIiBpcyB0ZWNobmljYWxseSBvdXRkYXRlZCBieSBSRkMgMjgyMikuCiAgICAgICAgICIiIgotICAgICAgICBNSU1FTm9uTXVsdGlwYXJ0Ll9faW5pdF9fKHNlbGYsICdtZXNzYWdlJywgX3N1YnR5cGUpCisgICAgICAgIE1JTUVOb25NdWx0aXBhcnQuX19pbml0X18oc2VsZiwgJ21lc3NhZ2UnLCBfc3VidHlwZSwgcG9saWN5PXBvbGljeSkKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoX21zZywgbWVzc2FnZS5NZXNzYWdlKToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignQXJndW1lbnQgaXMgbm90IGFuIGluc3RhbmNlIG9mIE1lc3NhZ2UnKQogICAgICAgICAjIEl0J3MgY29udmVuaWVudCB0byB1c2UgdGhpcyBiYXNlIGNsYXNzIG1ldGhvZC4gIFdlIG5lZWQgdG8gZG8gaXQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9taW1lL211bHRpcGFydC5weSBiL0xpYi9lbWFpbC9taW1lL211bHRpcGFydC5weQppbmRleCA5NjYxODY1Li4yZDNmMjg4IDEwMDY0NAotLS0gYS9MaWIvZW1haWwvbWltZS9tdWx0aXBhcnQucHkKKysrIGIvTGliL2VtYWlsL21pbWUvbXVsdGlwYXJ0LnB5CkBAIC0xNCw2ICsxNCw3IEBACiAgICAgIiIiQmFzZSBjbGFzcyBmb3IgTUlNRSBtdWx0aXBhcnQvKiB0eXBlIG1lc3NhZ2VzLiIiIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIF9zdWJ0eXBlPSdtaXhlZCcsIGJvdW5kYXJ5PU5vbmUsIF9zdWJwYXJ0cz1Ob25lLAorICAgICAgICAgICAgICAgICAqLCBwb2xpY3k9Tm9uZSwKICAgICAgICAgICAgICAgICAgKipfcGFyYW1zKToKICAgICAgICAgIiIiQ3JlYXRlcyBhIG11bHRpcGFydC8qIHR5cGUgbWVzc2FnZS4KIApAQCAtMzMsNyArMzQsNyBAQAogICAgICAgICBBZGRpdGlvbmFsIHBhcmFtZXRlcnMgZm9yIHRoZSBDb250ZW50LVR5cGUgaGVhZGVyIGFyZSB0YWtlbiBmcm9tIHRoZQogICAgICAgICBrZXl3b3JkIGFyZ3VtZW50cyAob3IgcGFzc2VkIGludG8gdGhlIF9wYXJhbXMgYXJndW1lbnQpLgogICAgICAgICAiIiIKLSAgICAgICAgTUlNRUJhc2UuX19pbml0X18oc2VsZiwgJ211bHRpcGFydCcsIF9zdWJ0eXBlLCAqKl9wYXJhbXMpCisgICAgICAgIE1JTUVCYXNlLl9faW5pdF9fKHNlbGYsICdtdWx0aXBhcnQnLCBfc3VidHlwZSwgcG9saWN5PXBvbGljeSwgKipfcGFyYW1zKQogCiAgICAgICAgICMgSW5pdGlhbGlzZSBfcGF5bG9hZCB0byBhbiBlbXB0eSBsaXN0IGFzIHRoZSBNZXNzYWdlIHN1cGVyY2xhc3MncwogICAgICAgICAjIGltcGxlbWVudGF0aW9uIG9mIGlzX211bHRpcGFydCBhc3N1bWVzIHRoYXQgX3BheWxvYWQgaXMgYSBsaXN0IGZvcgpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL21pbWUvdGV4dC5weSBiL0xpYi9lbWFpbC9taW1lL3RleHQucHkKaW5kZXggZGEwMzA4Ni4uMzViNDQyMyAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL21pbWUvdGV4dC5weQorKysgYi9MaWIvZW1haWwvbWltZS90ZXh0LnB5CkBAIC0xNCw3ICsxNCw3IEBACiBjbGFzcyBNSU1FVGV4dChNSU1FTm9uTXVsdGlwYXJ0KToKICAgICAiIiJDbGFzcyBmb3IgZ2VuZXJhdGluZyB0ZXh0LyogdHlwZSBNSU1FIGRvY3VtZW50cy4iIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBfdGV4dCwgX3N1YnR5cGU9J3BsYWluJywgX2NoYXJzZXQ9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIF90ZXh0LCBfc3VidHlwZT0ncGxhaW4nLCBfY2hhcnNldD1Ob25lLCAqLCBwb2xpY3k9Tm9uZSk6CiAgICAgICAgICIiIkNyZWF0ZSBhIHRleHQvKiB0eXBlIE1JTUUgZG9jdW1lbnQuCiAKICAgICAgICAgX3RleHQgaXMgdGhlIHN0cmluZyBmb3IgdGhpcyBtZXNzYWdlIG9iamVjdC4KQEAgLTM2LDcgKzM2LDcgQEAKICAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CiAgICAgICAgICAgICAgICAgX2NoYXJzZXQgPSAndXRmLTgnCiAKLSAgICAgICAgTUlNRU5vbk11bHRpcGFydC5fX2luaXRfXyhzZWxmLCAndGV4dCcsIF9zdWJ0eXBlLAorICAgICAgICBNSU1FTm9uTXVsdGlwYXJ0Ll9faW5pdF9fKHNlbGYsICd0ZXh0JywgX3N1YnR5cGUsIHBvbGljeT1wb2xpY3ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKip7J2NoYXJzZXQnOiBzdHIoX2NoYXJzZXQpfSkKIAogICAgICAgICBzZWxmLnNldF9wYXlsb2FkKF90ZXh0LCBfY2hhcnNldCkKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9wb2xpY3kucHkgYi9MaWIvZW1haWwvcG9saWN5LnB5CmluZGV4IDM1ZDBlNjkuLjUxMzEzMTFhYyAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL3BvbGljeS5weQorKysgYi9MaWIvZW1haWwvcG9saWN5LnB5CkBAIC03LDYgKzcsNyBAQAogZnJvbSBlbWFpbC51dGlscyBpbXBvcnQgX2hhc19zdXJyb2dhdGVzCiBmcm9tIGVtYWlsLmhlYWRlcnJlZ2lzdHJ5IGltcG9ydCBIZWFkZXJSZWdpc3RyeSBhcyBIZWFkZXJSZWdpc3RyeQogZnJvbSBlbWFpbC5jb250ZW50bWFuYWdlciBpbXBvcnQgcmF3X2RhdGFfbWFuYWdlcgorZnJvbSBlbWFpbC5tZXNzYWdlIGltcG9ydCBFbWFpbE1lc3NhZ2UKIAogX19hbGxfXyA9IFsKICAgICAnQ29tcGF0MzInLApAQCAtODIsNiArODMsNyBAQAogCiAgICAgIiIiCiAKKyAgICBtZXNzYWdlX2ZhY3RvcnkgPSBFbWFpbE1lc3NhZ2UKICAgICB1dGY4ID0gRmFsc2UKICAgICByZWZvbGRfc291cmNlID0gJ2xvbmcnCiAgICAgaGVhZGVyX2ZhY3RvcnkgPSBIZWFkZXJSZWdpc3RyeSgpCmRpZmYgLS1naXQgYS9MaWIvZW5jb2RpbmdzL19faW5pdF9fLnB5IGIvTGliL2VuY29kaW5ncy9fX2luaXRfXy5weQppbmRleCA4ZGQ3MTMwLi5hYTJmYjdjIDEwMDY0NAotLS0gYS9MaWIvZW5jb2RpbmdzL19faW5pdF9fLnB5CisrKyBiL0xpYi9lbmNvZGluZ3MvX19pbml0X18ucHkKQEAgLTI5LDYgKzI5LDcgQEAKICIiIiMiCiAKIGltcG9ydCBjb2RlY3MKK2ltcG9ydCBzeXMKIGZyb20gLiBpbXBvcnQgYWxpYXNlcwogCiBfY2FjaGUgPSB7fQpAQCAtNTQsNiArNTUsNyBAQAogICAgICIiIgogICAgIGlmIGlzaW5zdGFuY2UoZW5jb2RpbmcsIGJ5dGVzKToKICAgICAgICAgZW5jb2RpbmcgPSBzdHIoZW5jb2RpbmcsICJhc2NpaSIpCisKICAgICBjaGFycyA9IFtdCiAgICAgcHVuY3QgPSBGYWxzZQogICAgIGZvciBjIGluIGVuY29kaW5nOgpAQCAtOTcsNiArOTksOCBAQAogICAgICAgICAgICAgbW9kID0gX19pbXBvcnRfXygnZW5jb2RpbmdzLicgKyBtb2RuYW1lLCBmcm9tbGlzdD1faW1wb3J0X3RhaWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsPTApCiAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgICMgSW1wb3J0RXJyb3IgbWF5IG9jY3VyIGJlY2F1c2UgJ2VuY29kaW5ncy4obW9kbmFtZSknIGRvZXMgbm90IGV4aXN0LAorICAgICAgICAgICAgIyBvciBiZWNhdXNlIGl0IGltcG9ydHMgYSBuYW1lIHRoYXQgZG9lcyBub3QgZXhpc3QgKHNlZSBtYmNzIGFuZCBvZW0pCiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBicmVhawpAQCAtMTUwLDMgKzE1NCwxNiBAQAogCiAjIFJlZ2lzdGVyIHRoZSBzZWFyY2hfZnVuY3Rpb24gaW4gdGhlIFB5dGhvbiBjb2RlYyByZWdpc3RyeQogY29kZWNzLnJlZ2lzdGVyKHNlYXJjaF9mdW5jdGlvbikKKworaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CisgICAgZGVmIF9hbGlhc19tYmNzKGVuY29kaW5nKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW1wb3J0IF9ib290bG9jYWxlCisgICAgICAgICAgICBpZiBlbmNvZGluZyA9PSBfYm9vdGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyhGYWxzZSk6CisgICAgICAgICAgICAgICAgaW1wb3J0IGVuY29kaW5ncy5tYmNzCisgICAgICAgICAgICAgICAgcmV0dXJuIGVuY29kaW5ncy5tYmNzLmdldHJlZ2VudHJ5KCkKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgIyBJbXBvcnRzIG1heSBmYWlsIHdoaWxlIHdlIGFyZSBzaHV0dGluZyBkb3duCisgICAgICAgICAgICBwYXNzCisKKyAgICBjb2RlY3MucmVnaXN0ZXIoX2FsaWFzX21iY3MpCmRpZmYgLS1naXQgYS9MaWIvZW5jb2RpbmdzL2FsaWFzZXMucHkgYi9MaWIvZW5jb2RpbmdzL2FsaWFzZXMucHkKaW5kZXggNjdjODI4ZC4uMmU2M2MyZiAxMDA2NDQKLS0tIGEvTGliL2VuY29kaW5ncy9hbGlhc2VzLnB5CisrKyBiL0xpYi9lbmNvZGluZ3MvYWxpYXNlcy5weQpAQCAtNDU4LDYgKzQ1OCw3IEBACiAgICAgJ21hY3R1cmtpc2gnICAgICAgICAgOiAnbWFjX3R1cmtpc2gnLAogCiAgICAgIyBtYmNzIGNvZGVjCisgICAgJ2Fuc2knICAgICAgICAgICAgICAgOiAnbWJjcycsCiAgICAgJ2RiY3MnICAgICAgICAgICAgICAgOiAnbWJjcycsCiAKICAgICAjIHB0Y3AxNTQgY29kZWMKZGlmZiAtLWdpdCBhL0xpYi9lbmNvZGluZ3Mvb2VtLnB5IGIvTGliL2VuY29kaW5ncy9vZW0ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmMzNDI2YgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9lbmNvZGluZ3Mvb2VtLnB5CkBAIC0wLDAgKzEsNDEgQEAKKyIiIiBQeXRob24gJ29lbScgQ29kZWMgZm9yIFdpbmRvd3MKKworIiIiCisjIEltcG9ydCB0aGVtIGV4cGxpY2l0bHkgdG8gY2F1c2UgYW4gSW1wb3J0RXJyb3IKKyMgb24gbm9uLVdpbmRvd3Mgc3lzdGVtcworZnJvbSBjb2RlY3MgaW1wb3J0IG9lbV9lbmNvZGUsIG9lbV9kZWNvZGUKKyMgZm9yIEluY3JlbWVudGFsRGVjb2RlciwgSW5jcmVtZW50YWxFbmNvZGVyLCAuLi4KK2ltcG9ydCBjb2RlY3MKKworIyMjIENvZGVjIEFQSXMKKworZW5jb2RlID0gb2VtX2VuY29kZQorCitkZWYgZGVjb2RlKGlucHV0LCBlcnJvcnM9J3N0cmljdCcpOgorICAgIHJldHVybiBvZW1fZGVjb2RlKGlucHV0LCBlcnJvcnMsIFRydWUpCisKK2NsYXNzIEluY3JlbWVudGFsRW5jb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxFbmNvZGVyKToKKyAgICBkZWYgZW5jb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CisgICAgICAgIHJldHVybiBvZW1fZW5jb2RlKGlucHV0LCBzZWxmLmVycm9ycylbMF0KKworY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5CdWZmZXJlZEluY3JlbWVudGFsRGVjb2Rlcik6CisgICAgX2J1ZmZlcl9kZWNvZGUgPSBvZW1fZGVjb2RlCisKK2NsYXNzIFN0cmVhbVdyaXRlcihjb2RlY3MuU3RyZWFtV3JpdGVyKToKKyAgICBlbmNvZGUgPSBvZW1fZW5jb2RlCisKK2NsYXNzIFN0cmVhbVJlYWRlcihjb2RlY3MuU3RyZWFtUmVhZGVyKToKKyAgICBkZWNvZGUgPSBvZW1fZGVjb2RlCisKKyMjIyBlbmNvZGluZ3MgbW9kdWxlIEFQSQorCitkZWYgZ2V0cmVnZW50cnkoKToKKyAgICByZXR1cm4gY29kZWNzLkNvZGVjSW5mbygKKyAgICAgICAgbmFtZT0nb2VtJywKKyAgICAgICAgZW5jb2RlPWVuY29kZSwKKyAgICAgICAgZGVjb2RlPWRlY29kZSwKKyAgICAgICAgaW5jcmVtZW50YWxlbmNvZGVyPUluY3JlbWVudGFsRW5jb2RlciwKKyAgICAgICAgaW5jcmVtZW50YWxkZWNvZGVyPUluY3JlbWVudGFsRGVjb2RlciwKKyAgICAgICAgc3RyZWFtcmVhZGVyPVN0cmVhbVJlYWRlciwKKyAgICAgICAgc3RyZWFtd3JpdGVyPVN0cmVhbVdyaXRlciwKKyAgICApCmRpZmYgLS1naXQgYS9MaWIvZW5zdXJlcGlwL19faW5pdF9fLnB5IGIvTGliL2Vuc3VyZXBpcC9fX2luaXRfXy5weQppbmRleCAyNWM1NTY3Li45ZjVkMTUxIDEwMDY0NAotLS0gYS9MaWIvZW5zdXJlcGlwL19faW5pdF9fLnB5CisrKyBiL0xpYi9lbnN1cmVwaXAvX19pbml0X18ucHkKQEAgLTEyLDE5ICsxMiw2IEBACiAKIF9QSVBfVkVSU0lPTiA9ICI5LjAuMSIKIAotIyBwaXAgY3VycmVudGx5IHJlcXVpcmVzIHNzbCBzdXBwb3J0LCBzbyB3ZSB0cnkgdG8gcHJvdmlkZSBhIG5pY2VyCi0jIGVycm9yIG1lc3NhZ2Ugd2hlbiB0aGF0IGlzIG1pc3NpbmcgKGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxOTc0NCkKLV9NSVNTSU5HX1NTTF9NRVNTQUdFID0gKCJwaXAge30gcmVxdWlyZXMgU1NML1RMUyIuZm9ybWF0KF9QSVBfVkVSU0lPTikpCi10cnk6Ci0gICAgaW1wb3J0IHNzbAotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIHNzbCA9IE5vbmUKLSAgICBkZWYgX3JlcXVpcmVfc3NsX2Zvcl9waXAoKToKLSAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKF9NSVNTSU5HX1NTTF9NRVNTQUdFKQotZWxzZToKLSAgICBkZWYgX3JlcXVpcmVfc3NsX2Zvcl9waXAoKToKLSAgICAgICAgcGFzcwotCiBfUFJPSkVDVFMgPSBbCiAgICAgKCJzZXR1cHRvb2xzIiwgX1NFVFVQVE9PTFNfVkVSU0lPTiksCiAgICAgKCJwaXAiLCBfUElQX1ZFUlNJT04pLApAQCAtNzEsNyArNTgsNiBAQAogICAgIGlmIGFsdGluc3RhbGwgYW5kIGRlZmF1bHRfcGlwOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDYW5ub3QgdXNlIGFsdGluc3RhbGwgYW5kIGRlZmF1bHRfcGlwIHRvZ2V0aGVyIikKIAotICAgIF9yZXF1aXJlX3NzbF9mb3JfcGlwKCkKICAgICBfZGlzYWJsZV9waXBfY29uZmlndXJhdGlvbl9zZXR0aW5ncygpCiAKICAgICAjIEJ5IGRlZmF1bHQsIGluc3RhbGxpbmcgcGlwIGFuZCBzZXR1cHRvb2xzIGluc3RhbGxzIGFsbCBvZiB0aGUKQEAgLTEzMyw3ICsxMTksNiBAQAogICAgICAgICBwcmludChtc2cuZm9ybWF0KHBpcC5fX3ZlcnNpb25fXywgX1BJUF9WRVJTSU9OKSwgZmlsZT1zeXMuc3RkZXJyKQogICAgICAgICByZXR1cm4KIAotICAgIF9yZXF1aXJlX3NzbF9mb3JfcGlwKCkKICAgICBfZGlzYWJsZV9waXBfY29uZmlndXJhdGlvbl9zZXR0aW5ncygpCiAKICAgICAjIENvbnN0cnVjdCB0aGUgYXJndW1lbnRzIHRvIGJlIHBhc3NlZCB0byB0aGUgcGlwIGNvbW1hbmQKQEAgLTE0NSwxMSArMTMwLDYgQEAKIAogCiBkZWYgX21haW4oYXJndj1Ob25lKToKLSAgICBpZiBzc2wgaXMgTm9uZToKLSAgICAgICAgcHJpbnQoIklnbm9yaW5nIGVuc3VyZXBpcCBmYWlsdXJlOiB7fSIuZm9ybWF0KF9NSVNTSU5HX1NTTF9NRVNTQUdFKSwKLSAgICAgICAgICAgICAgZmlsZT1zeXMuc3RkZXJyKQotICAgICAgICByZXR1cm4KLQogICAgIGltcG9ydCBhcmdwYXJzZQogICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKHByb2c9InB5dGhvbiAtbSBlbnN1cmVwaXAiKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCmRpZmYgLS1naXQgYS9MaWIvZW51bS5weSBiL0xpYi9lbnVtLnB5CmluZGV4IGI4Nzg3ZDEuLjNmNWVjYmIgMTAwNjQ0Ci0tLSBhL0xpYi9lbnVtLnB5CisrKyBiL0xpYi9lbnVtLnB5CkBAIC0xLDggKzEsMjAgQEAKIGltcG9ydCBzeXMKLWZyb20gY29sbGVjdGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0CiBmcm9tIHR5cGVzIGltcG9ydCBNYXBwaW5nUHJveHlUeXBlLCBEeW5hbWljQ2xhc3NBdHRyaWJ1dGUKK2Zyb20gZnVuY3Rvb2xzIGltcG9ydCByZWR1Y2UKK2Zyb20gb3BlcmF0b3IgaW1wb3J0IG9yXyBhcyBfb3JfLCBhbmRfIGFzIF9hbmRfLCB4b3IsIG5lZwogCi1fX2FsbF9fID0gWydFbnVtJywgJ0ludEVudW0nLCAndW5pcXVlJ10KKyMgdHJ5IF9jb2xsZWN0aW9ucyBmaXJzdCB0byByZWR1Y2Ugc3RhcnR1cCBjb3N0Cit0cnk6CisgICAgZnJvbSBfY29sbGVjdGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0CitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QKKworCitfX2FsbF9fID0gWworICAgICAgICAnRW51bU1ldGEnLAorICAgICAgICAnRW51bScsICdJbnRFbnVtJywgJ0ZsYWcnLCAnSW50RmxhZycsCisgICAgICAgICdhdXRvJywgJ3VuaXF1ZScsCisgICAgICAgIF0KIAogCiBkZWYgX2lzX2Rlc2NyaXB0b3Iob2JqKToKQEAgLTI4LDcgKzQwLDYgQEAKICAgICAgICAgICAgIG5hbWVbLTI6LTFdICE9ICdfJyBhbmQKICAgICAgICAgICAgIGxlbihuYW1lKSA+IDIpCiAKLQogZGVmIF9tYWtlX2NsYXNzX3VucGlja2xhYmxlKGNscyk6CiAgICAgIiIiTWFrZSB0aGUgZ2l2ZW4gY2xhc3MgdW4tcGlja2xhYmxlLiIiIgogICAgIGRlZiBfYnJlYWtfb25fY2FsbF9yZWR1Y2Uoc2VsZiwgcHJvdG8pOgpAQCAtMzYsNiArNDcsMTMgQEAKICAgICBjbHMuX19yZWR1Y2VfZXhfXyA9IF9icmVha19vbl9jYWxsX3JlZHVjZQogICAgIGNscy5fX21vZHVsZV9fID0gJzx1bmtub3duPicKIAorX2F1dG9fbnVsbCA9IG9iamVjdCgpCitjbGFzcyBhdXRvOgorICAgICIiIgorICAgIEluc3RhbmNlcyBhcmUgcmVwbGFjZWQgd2l0aCBhbiBhcHByb3ByaWF0ZSB2YWx1ZSBpbiBFbnVtIGNsYXNzIHN1aXRlcy4KKyAgICAiIiIKKyAgICB2YWx1ZSA9IF9hdXRvX251bGwKKwogCiBjbGFzcyBfRW51bURpY3QoZGljdCk6CiAgICAgIiIiVHJhY2sgZW51bSBtZW1iZXIgb3JkZXIgYW5kIGVuc3VyZSBtZW1iZXIgbmFtZXMgYXJlIG5vdCByZXVzZWQuCkBAIC00Nyw2ICs2NSw3IEBACiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgICBzdXBlcigpLl9faW5pdF9fKCkKICAgICAgICAgc2VsZi5fbWVtYmVyX25hbWVzID0gW10KKyAgICAgICAgc2VsZi5fbGFzdF92YWx1ZXMgPSBbXQogCiAgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpOgogICAgICAgICAiIiJDaGFuZ2VzIGFueXRoaW5nIG5vdCBkdW5kZXJlZCBvciBub3QgYSBkZXNjcmlwdG9yLgpAQCAtNTgsMjEgKzc3LDMyIEBACiAKICAgICAgICAgIiIiCiAgICAgICAgIGlmIF9pc19zdW5kZXIoa2V5KToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ19uYW1lc18gYXJlIHJlc2VydmVkIGZvciBmdXR1cmUgRW51bSB1c2UnKQorICAgICAgICAgICAgaWYga2V5IG5vdCBpbiAoCisgICAgICAgICAgICAgICAgICAgICdfb3JkZXJfJywgJ19jcmVhdGVfcHNldWRvX21lbWJlcl8nLAorICAgICAgICAgICAgICAgICAgICAnX2dlbmVyYXRlX25leHRfdmFsdWVfJywgJ19taXNzaW5nXycsCisgICAgICAgICAgICAgICAgICAgICk6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignX25hbWVzXyBhcmUgcmVzZXJ2ZWQgZm9yIGZ1dHVyZSBFbnVtIHVzZScpCisgICAgICAgICAgICBpZiBrZXkgPT0gJ19nZW5lcmF0ZV9uZXh0X3ZhbHVlXyc6CisgICAgICAgICAgICAgICAgc2V0YXR0cihzZWxmLCAnX2dlbmVyYXRlX25leHRfdmFsdWUnLCB2YWx1ZSkKICAgICAgICAgZWxpZiBfaXNfZHVuZGVyKGtleSk6Ci0gICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBpZiBrZXkgPT0gJ19fb3JkZXJfXyc6CisgICAgICAgICAgICAgICAga2V5ID0gJ19vcmRlcl8nCiAgICAgICAgIGVsaWYga2V5IGluIHNlbGYuX21lbWJlcl9uYW1lczoKICAgICAgICAgICAgICMgZGVzY3JpcHRvciBvdmVyd3JpdGluZyBhbiBlbnVtPwogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdBdHRlbXB0ZWQgdG8gcmV1c2Uga2V5OiAlcicgJSBrZXkpCiAgICAgICAgIGVsaWYgbm90IF9pc19kZXNjcmlwdG9yKHZhbHVlKToKICAgICAgICAgICAgIGlmIGtleSBpbiBzZWxmOgogICAgICAgICAgICAgICAgICMgZW51bSBvdmVyd3JpdGluZyBhIGRlc2NyaXB0b3I/Ci0gICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdLZXkgYWxyZWFkeSBkZWZpbmVkIGFzOiAlcicgJSBzZWxmW2tleV0pCisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCclciBhbHJlYWR5IGRlZmluZWQgYXM6ICVyJyAlIChrZXksIHNlbGZba2V5XSkpCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBhdXRvKToKKyAgICAgICAgICAgICAgICBpZiB2YWx1ZS52YWx1ZSA9PSBfYXV0b19udWxsOgorICAgICAgICAgICAgICAgICAgICB2YWx1ZS52YWx1ZSA9IHNlbGYuX2dlbmVyYXRlX25leHRfdmFsdWUoa2V5LCAxLCBsZW4oc2VsZi5fbWVtYmVyX25hbWVzKSwgc2VsZi5fbGFzdF92YWx1ZXNbOl0pCisgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS52YWx1ZQogICAgICAgICAgICAgc2VsZi5fbWVtYmVyX25hbWVzLmFwcGVuZChrZXkpCisgICAgICAgICAgICBzZWxmLl9sYXN0X3ZhbHVlcy5hcHBlbmQodmFsdWUpCiAgICAgICAgIHN1cGVyKCkuX19zZXRpdGVtX18oa2V5LCB2YWx1ZSkKIAogCi0KICMgRHVtbXkgdmFsdWUgZm9yIEVudW0gYXMgRW51bU1ldGEgZXhwbGljaXRseSBjaGVja3MgZm9yIGl0LCBidXQgb2YgY291cnNlCiAjIHVudGlsIEVudW1NZXRhIGZpbmlzaGVzIHJ1bm5pbmcgdGhlIGZpcnN0IHRpbWUgdGhlIEVudW0gY2xhc3MgZG9lc24ndCBleGlzdC4KICMgVGhpcyBpcyBhbHNvIHdoeSB0aGVyZSBhcmUgY2hlY2tzIGluIEVudW1NZXRhIGxpa2UgYGlmIEVudW0gaXMgbm90IE5vbmVgCkBAIC04Myw3ICsxMTMsMTMgQEAKICAgICAiIiJNZXRhY2xhc3MgZm9yIEVudW0iIiIKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgX19wcmVwYXJlX18obWV0YWNscywgY2xzLCBiYXNlcyk6Ci0gICAgICAgIHJldHVybiBfRW51bURpY3QoKQorICAgICAgICAjIGNyZWF0ZSB0aGUgbmFtZXNwYWNlIGRpY3QKKyAgICAgICAgZW51bV9kaWN0ID0gX0VudW1EaWN0KCkKKyAgICAgICAgIyBpbmhlcml0IHByZXZpb3VzIGZsYWdzIGFuZCBfZ2VuZXJhdGVfbmV4dF92YWx1ZV8gZnVuY3Rpb24KKyAgICAgICAgbWVtYmVyX3R5cGUsIGZpcnN0X2VudW0gPSBtZXRhY2xzLl9nZXRfbWl4aW5zXyhiYXNlcykKKyAgICAgICAgaWYgZmlyc3RfZW51bSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGVudW1fZGljdFsnX2dlbmVyYXRlX25leHRfdmFsdWVfJ10gPSBnZXRhdHRyKGZpcnN0X2VudW0sICdfZ2VuZXJhdGVfbmV4dF92YWx1ZV8nLCBOb25lKQorICAgICAgICByZXR1cm4gZW51bV9kaWN0CiAKICAgICBkZWYgX19uZXdfXyhtZXRhY2xzLCBjbHMsIGJhc2VzLCBjbGFzc2RpY3QpOgogICAgICAgICAjIGFuIEVudW0gY2xhc3MgaXMgZmluYWwgb25jZSBlbnVtZXJhdGlvbiBpdGVtcyBoYXZlIGJlZW4gZGVmaW5lZDsgaXQKQEAgLTk2LDEyICsxMzIsMTUgQEAKIAogICAgICAgICAjIHNhdmUgZW51bSBpdGVtcyBpbnRvIHNlcGFyYXRlIG1hcHBpbmcgc28gdGhleSBkb24ndCBnZXQgYmFrZWQgaW50bwogICAgICAgICAjIHRoZSBuZXcgY2xhc3MKLSAgICAgICAgbWVtYmVycyA9IHtrOiBjbGFzc2RpY3Rba10gZm9yIGsgaW4gY2xhc3NkaWN0Ll9tZW1iZXJfbmFtZXN9CisgICAgICAgIGVudW1fbWVtYmVycyA9IHtrOiBjbGFzc2RpY3Rba10gZm9yIGsgaW4gY2xhc3NkaWN0Ll9tZW1iZXJfbmFtZXN9CiAgICAgICAgIGZvciBuYW1lIGluIGNsYXNzZGljdC5fbWVtYmVyX25hbWVzOgogICAgICAgICAgICAgZGVsIGNsYXNzZGljdFtuYW1lXQogCisgICAgICAgICMgYWRqdXN0IHRoZSBzdW5kZXJzCisgICAgICAgIF9vcmRlcl8gPSBjbGFzc2RpY3QucG9wKCdfb3JkZXJfJywgTm9uZSkKKwogICAgICAgICAjIGNoZWNrIGZvciBpbGxlZ2FsIGVudW0gbmFtZXMgKGFueSBvdGhlcnM/KQotICAgICAgICBpbnZhbGlkX25hbWVzID0gc2V0KG1lbWJlcnMpICYgeydtcm8nLCB9CisgICAgICAgIGludmFsaWRfbmFtZXMgPSBzZXQoZW51bV9tZW1iZXJzKSAmIHsnbXJvJywgfQogICAgICAgICBpZiBpbnZhbGlkX25hbWVzOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignSW52YWxpZCBlbnVtIG1lbWJlciBuYW1lOiB7MH0nLmZvcm1hdCgKICAgICAgICAgICAgICAgICAnLCcuam9pbihpbnZhbGlkX25hbWVzKSkpCkBAIC0xNDUsNyArMTg0LDcgQEAKICAgICAgICAgIyBhIGN1c3RvbSBfX25ld19fIGlzIGRvaW5nIHNvbWV0aGluZyBmdW5reSB3aXRoIHRoZSB2YWx1ZXMgLS0gc3VjaCBhcwogICAgICAgICAjIGF1dG8tbnVtYmVyaW5nIDspCiAgICAgICAgIGZvciBtZW1iZXJfbmFtZSBpbiBjbGFzc2RpY3QuX21lbWJlcl9uYW1lczoKLSAgICAgICAgICAgIHZhbHVlID0gbWVtYmVyc1ttZW1iZXJfbmFtZV0KKyAgICAgICAgICAgIHZhbHVlID0gZW51bV9tZW1iZXJzW21lbWJlcl9uYW1lXQogICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodmFsdWUsIHR1cGxlKToKICAgICAgICAgICAgICAgICBhcmdzID0gKHZhbHVlLCApCiAgICAgICAgICAgICBlbHNlOgpAQCAtMTU5LDcgKzE5OCwxMCBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBlbnVtX21lbWJlciA9IF9fbmV3X18oZW51bV9jbGFzcywgKmFyZ3MpCiAgICAgICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIoZW51bV9tZW1iZXIsICdfdmFsdWVfJyk6Ci0gICAgICAgICAgICAgICAgICAgIGVudW1fbWVtYmVyLl92YWx1ZV8gPSBtZW1iZXJfdHlwZSgqYXJncykKKyAgICAgICAgICAgICAgICAgICAgaWYgbWVtYmVyX3R5cGUgaXMgb2JqZWN0OgorICAgICAgICAgICAgICAgICAgICAgICAgZW51bV9tZW1iZXIuX3ZhbHVlXyA9IHZhbHVlCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBlbnVtX21lbWJlci5fdmFsdWVfID0gbWVtYmVyX3R5cGUoKmFyZ3MpCiAgICAgICAgICAgICB2YWx1ZSA9IGVudW1fbWVtYmVyLl92YWx1ZV8KICAgICAgICAgICAgIGVudW1fbWVtYmVyLl9uYW1lXyA9IG1lbWJlcl9uYW1lCiAgICAgICAgICAgICBlbnVtX21lbWJlci5fX29iamNsYXNzX18gPSBlbnVtX2NsYXNzCkBAIC0yMDQsNiArMjQ2LDE0IEBACiAgICAgICAgICAgICBpZiBzYXZlX25ldzoKICAgICAgICAgICAgICAgICBlbnVtX2NsYXNzLl9fbmV3X21lbWJlcl9fID0gX19uZXdfXwogICAgICAgICAgICAgZW51bV9jbGFzcy5fX25ld19fID0gRW51bS5fX25ld19fCisKKyAgICAgICAgIyBweTMgc3VwcG9ydCBmb3IgZGVmaW5pdGlvbiBvcmRlciAoaGVscHMga2VlcCBweTIvcHkzIGNvZGUgaW4gc3luYykKKyAgICAgICAgaWYgX29yZGVyXyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoX29yZGVyXywgc3RyKToKKyAgICAgICAgICAgICAgICBfb3JkZXJfID0gX29yZGVyXy5yZXBsYWNlKCcsJywgJyAnKS5zcGxpdCgpCisgICAgICAgICAgICBpZiBfb3JkZXJfICE9IGVudW1fY2xhc3MuX21lbWJlcl9uYW1lc186CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdtZW1iZXIgb3JkZXIgZG9lcyBub3QgbWF0Y2ggX29yZGVyXycpCisKICAgICAgICAgcmV0dXJuIGVudW1fY2xhc3MKIAogICAgIGRlZiBfX2Jvb2xfXyhzZWxmKToKQEAgLTIxNyw3ICsyNjcsNyBAQAogCiAgICAgICAgIFRoaXMgbWV0aG9kIGlzIHVzZWQgYm90aCB3aGVuIGFuIGVudW0gY2xhc3MgaXMgZ2l2ZW4gYSB2YWx1ZSB0byBtYXRjaAogICAgICAgICB0byBhbiBlbnVtZXJhdGlvbiBtZW1iZXIgKGkuZS4gQ29sb3IoMykpIGFuZCBmb3IgdGhlIGZ1bmN0aW9uYWwgQVBJCi0gICAgICAgIChpLmUuIENvbG9yID0gRW51bSgnQ29sb3InLCBuYW1lcz0ncmVkIGdyZWVuIGJsdWUnKSkuCisgICAgICAgIChpLmUuIENvbG9yID0gRW51bSgnQ29sb3InLCBuYW1lcz0nUkVEIEdSRUVOIEJMVUUnKSkuCiAKICAgICAgICAgV2hlbiB1c2VkIGZvciB0aGUgZnVuY3Rpb25hbCBBUEk6CiAKQEAgLTMyNSwxMyArMzc1LDE5IEBACiAgICAgICAgICIiIgogICAgICAgICBtZXRhY2xzID0gY2xzLl9fY2xhc3NfXwogICAgICAgICBiYXNlcyA9IChjbHMsICkgaWYgdHlwZSBpcyBOb25lIGVsc2UgKHR5cGUsIGNscykKKyAgICAgICAgXywgZmlyc3RfZW51bSA9IGNscy5fZ2V0X21peGluc18oYmFzZXMpCiAgICAgICAgIGNsYXNzZGljdCA9IG1ldGFjbHMuX19wcmVwYXJlX18oY2xhc3NfbmFtZSwgYmFzZXMpCiAKICAgICAgICAgIyBzcGVjaWFsIHByb2Nlc3NpbmcgbmVlZGVkIGZvciBuYW1lcz8KICAgICAgICAgaWYgaXNpbnN0YW5jZShuYW1lcywgc3RyKToKICAgICAgICAgICAgIG5hbWVzID0gbmFtZXMucmVwbGFjZSgnLCcsICcgJykuc3BsaXQoKQogICAgICAgICBpZiBpc2luc3RhbmNlKG5hbWVzLCAodHVwbGUsIGxpc3QpKSBhbmQgaXNpbnN0YW5jZShuYW1lc1swXSwgc3RyKToKLSAgICAgICAgICAgIG5hbWVzID0gWyhlLCBpKSBmb3IgKGksIGUpIGluIGVudW1lcmF0ZShuYW1lcywgc3RhcnQpXQorICAgICAgICAgICAgb3JpZ2luYWxfbmFtZXMsIG5hbWVzID0gbmFtZXMsIFtdCisgICAgICAgICAgICBsYXN0X3ZhbHVlcyA9IFtdCisgICAgICAgICAgICBmb3IgY291bnQsIG5hbWUgaW4gZW51bWVyYXRlKG9yaWdpbmFsX25hbWVzKToKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IGZpcnN0X2VudW0uX2dlbmVyYXRlX25leHRfdmFsdWVfKG5hbWUsIHN0YXJ0LCBjb3VudCwgbGFzdF92YWx1ZXNbOl0pCisgICAgICAgICAgICAgICAgbGFzdF92YWx1ZXMuYXBwZW5kKHZhbHVlKQorICAgICAgICAgICAgICAgIG5hbWVzLmFwcGVuZCgobmFtZSwgdmFsdWUpKQogCiAgICAgICAgICMgSGVyZSwgbmFtZXMgaXMgZWl0aGVyIGFuIGl0ZXJhYmxlIG9mIChuYW1lLCB2YWx1ZSkgb3IgYSBtYXBwaW5nLgogICAgICAgICBmb3IgaXRlbSBpbiBuYW1lczoKQEAgLTQ2MSw3ICs1MTcsNyBAQAogICAgICAgICAjIHdpdGhvdXQgY2FsbGluZyB0aGlzIG1ldGhvZDsgdGhpcyBtZXRob2QgaXMgY2FsbGVkIGJ5IHRoZSBtZXRhY2xhc3MnCiAgICAgICAgICMgX19jYWxsX18gKGkuZS4gQ29sb3IoMykgKSwgYW5kIGJ5IHBpY2tsZQogICAgICAgICBpZiB0eXBlKHZhbHVlKSBpcyBjbHM6Ci0gICAgICAgICAgICAjIEZvciBsb29rdXBzIGxpa2UgQ29sb3IoQ29sb3IucmVkKQorICAgICAgICAgICAgIyBGb3IgbG9va3VwcyBsaWtlIENvbG9yKENvbG9yLlJFRCkKICAgICAgICAgICAgIHJldHVybiB2YWx1ZQogICAgICAgICAjIGJ5LXZhbHVlIHNlYXJjaCBmb3IgYSBtYXRjaGluZyBlbnVtIG1lbWJlcgogICAgICAgICAjIHNlZSBpZiBpdCdzIGluIHRoZSByZXZlcnNlIG1hcHBpbmcgKGZvciBoYXNoYWJsZSB2YWx1ZXMpCkBAIC00NzMsNiArNTI5LDIwIEBACiAgICAgICAgICAgICBmb3IgbWVtYmVyIGluIGNscy5fbWVtYmVyX21hcF8udmFsdWVzKCk6CiAgICAgICAgICAgICAgICAgaWYgbWVtYmVyLl92YWx1ZV8gPT0gdmFsdWU6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtZW1iZXIKKyAgICAgICAgIyBzdGlsbCBub3QgZm91bmQgLS0gdHJ5IF9taXNzaW5nXyBob29rCisgICAgICAgIHJldHVybiBjbHMuX21pc3NpbmdfKHZhbHVlKQorCisgICAgZGVmIF9nZW5lcmF0ZV9uZXh0X3ZhbHVlXyhuYW1lLCBzdGFydCwgY291bnQsIGxhc3RfdmFsdWVzKToKKyAgICAgICAgZm9yIGxhc3RfdmFsdWUgaW4gcmV2ZXJzZWQobGFzdF92YWx1ZXMpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJldHVybiBsYXN0X3ZhbHVlICsgMQorICAgICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc3RhcnQKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfbWlzc2luZ18oY2xzLCB2YWx1ZSk6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIiVyIGlzIG5vdCBhIHZhbGlkICVzIiAlICh2YWx1ZSwgY2xzLl9fbmFtZV9fKSkKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKQEAgLTU0NCw4ICs2MTQsMjEgQEAKICAgICAgICAgICAgIHNvdXJjZSA9IHZhcnMoc291cmNlKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc291cmNlID0gbW9kdWxlX2dsb2JhbHMKLSAgICAgICAgbWVtYmVycyA9IHtuYW1lOiB2YWx1ZSBmb3IgbmFtZSwgdmFsdWUgaW4gc291cmNlLml0ZW1zKCkKLSAgICAgICAgICAgICAgICBpZiBmaWx0ZXIobmFtZSl9CisgICAgICAgICMgV2UgdXNlIGFuIE9yZGVyZWREaWN0IG9mIHNvcnRlZCBzb3VyY2Uga2V5cyBzbyB0aGF0IHRoZQorICAgICAgICAjIF92YWx1ZTJtZW1iZXJfbWFwIGlzIHBvcHVsYXRlZCBpbiB0aGUgc2FtZSBvcmRlciBldmVyeSB0aW1lCisgICAgICAgICMgZm9yIGEgY29uc2lzdGVudCByZXZlcnNlIG1hcHBpbmcgb2YgbnVtYmVyIHRvIG5hbWUgd2hlbiB0aGVyZQorICAgICAgICAjIGFyZSBtdWx0aXBsZSBuYW1lcyBmb3IgdGhlIHNhbWUgbnVtYmVyIHJhdGhlciB0aGFuIHZhcnlpbmcKKyAgICAgICAgIyBiZXR3ZWVuIHJ1bnMgZHVlIHRvIGhhc2ggcmFuZG9taXphdGlvbiBvZiB0aGUgbW9kdWxlIGRpY3Rpb25hcnkuCisgICAgICAgIG1lbWJlcnMgPSBbCisgICAgICAgICAgICAgICAgKG5hbWUsIHNvdXJjZVtuYW1lXSkKKyAgICAgICAgICAgICAgICBmb3IgbmFtZSBpbiBzb3VyY2Uua2V5cygpCisgICAgICAgICAgICAgICAgaWYgZmlsdGVyKG5hbWUpXQorICAgICAgICB0cnk6CisgICAgICAgICAgICAjIHNvcnQgYnkgdmFsdWUKKyAgICAgICAgICAgIG1lbWJlcnMuc29ydChrZXk9bGFtYmRhIHQ6ICh0WzFdLCB0WzBdKSkKKyAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgICAgICMgdW5sZXNzIHNvbWUgdmFsdWVzIGFyZW4ndCBjb21wYXJhYmxlLCBpbiB3aGljaCBjYXNlIHNvcnQgYnkgbmFtZQorICAgICAgICAgICAgbWVtYmVycy5zb3J0KGtleT1sYW1iZGEgdDogdFswXSkKICAgICAgICAgY2xzID0gY2xzKG5hbWUsIG1lbWJlcnMsIG1vZHVsZT1tb2R1bGUpCiAgICAgICAgIGNscy5fX3JlZHVjZV9leF9fID0gX3JlZHVjZV9leF9ieV9uYW1lCiAgICAgICAgIG1vZHVsZV9nbG9iYWxzLnVwZGF0ZShjbHMuX19tZW1iZXJzX18pCkBAIC01NjAsNiArNjQzLDE4MCBAQAogZGVmIF9yZWR1Y2VfZXhfYnlfbmFtZShzZWxmLCBwcm90byk6CiAgICAgcmV0dXJuIHNlbGYubmFtZQogCitjbGFzcyBGbGFnKEVudW0pOgorICAgICIiIlN1cHBvcnQgZm9yIGZsYWdzIiIiCisKKyAgICBkZWYgX2dlbmVyYXRlX25leHRfdmFsdWVfKG5hbWUsIHN0YXJ0LCBjb3VudCwgbGFzdF92YWx1ZXMpOgorICAgICAgICAiIiIKKyAgICAgICAgR2VuZXJhdGUgdGhlIG5leHQgdmFsdWUgd2hlbiBub3QgZ2l2ZW4uCisKKyAgICAgICAgbmFtZTogdGhlIG5hbWUgb2YgdGhlIG1lbWJlcgorICAgICAgICBzdGFydDogdGhlIGluaXRpdGFsIHN0YXJ0IHZhbHVlIG9yIE5vbmUKKyAgICAgICAgY291bnQ6IHRoZSBudW1iZXIgb2YgZXhpc3RpbmcgbWVtYmVycworICAgICAgICBsYXN0X3ZhbHVlOiB0aGUgbGFzdCB2YWx1ZSBhc3NpZ25lZCBvciBOb25lCisgICAgICAgICIiIgorICAgICAgICBpZiBub3QgY291bnQ6CisgICAgICAgICAgICByZXR1cm4gc3RhcnQgaWYgc3RhcnQgaXMgbm90IE5vbmUgZWxzZSAxCisgICAgICAgIGZvciBsYXN0X3ZhbHVlIGluIHJldmVyc2VkKGxhc3RfdmFsdWVzKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBoaWdoX2JpdCA9IF9oaWdoX2JpdChsYXN0X3ZhbHVlKQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignSW52YWxpZCBGbGFnIHZhbHVlOiAlcicgJSBsYXN0X3ZhbHVlKSBmcm9tIE5vbmUKKyAgICAgICAgcmV0dXJuIDIgKiogKGhpZ2hfYml0KzEpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX21pc3NpbmdfKGNscywgdmFsdWUpOgorICAgICAgICBvcmlnaW5hbF92YWx1ZSA9IHZhbHVlCisgICAgICAgIGlmIHZhbHVlIDwgMDoKKyAgICAgICAgICAgIHZhbHVlID0gfnZhbHVlCisgICAgICAgIHBvc3NpYmxlX21lbWJlciA9IGNscy5fY3JlYXRlX3BzZXVkb19tZW1iZXJfKHZhbHVlKQorICAgICAgICBpZiBvcmlnaW5hbF92YWx1ZSA8IDA6CisgICAgICAgICAgICBwb3NzaWJsZV9tZW1iZXIgPSB+cG9zc2libGVfbWVtYmVyCisgICAgICAgIHJldHVybiBwb3NzaWJsZV9tZW1iZXIKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfY3JlYXRlX3BzZXVkb19tZW1iZXJfKGNscywgdmFsdWUpOgorICAgICAgICAiIiIKKyAgICAgICAgQ3JlYXRlIGEgY29tcG9zaXRlIG1lbWJlciBpZmYgdmFsdWUgY29udGFpbnMgb25seSBtZW1iZXJzLgorICAgICAgICAiIiIKKyAgICAgICAgcHNldWRvX21lbWJlciA9IGNscy5fdmFsdWUybWVtYmVyX21hcF8uZ2V0KHZhbHVlLCBOb25lKQorICAgICAgICBpZiBwc2V1ZG9fbWVtYmVyIGlzIE5vbmU6CisgICAgICAgICAgICAjIHZlcmlmeSBhbGwgYml0cyBhcmUgYWNjb3VudGVkIGZvcgorICAgICAgICAgICAgXywgZXh0cmFfZmxhZ3MgPSBfZGVjb21wb3NlKGNscywgdmFsdWUpCisgICAgICAgICAgICBpZiBleHRyYV9mbGFnczoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCIlciBpcyBub3QgYSB2YWxpZCAlcyIgJSAodmFsdWUsIGNscy5fX25hbWVfXykpCisgICAgICAgICAgICAjIGNvbnN0cnVjdCBhIHNpbmdsZXRvbiBlbnVtIHBzZXVkby1tZW1iZXIKKyAgICAgICAgICAgIHBzZXVkb19tZW1iZXIgPSBvYmplY3QuX19uZXdfXyhjbHMpCisgICAgICAgICAgICBwc2V1ZG9fbWVtYmVyLl9uYW1lXyA9IE5vbmUKKyAgICAgICAgICAgIHBzZXVkb19tZW1iZXIuX3ZhbHVlXyA9IHZhbHVlCisgICAgICAgICAgICBjbHMuX3ZhbHVlMm1lbWJlcl9tYXBfW3ZhbHVlXSA9IHBzZXVkb19tZW1iZXIKKyAgICAgICAgcmV0dXJuIHBzZXVkb19tZW1iZXIKKworICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgb3RoZXIpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgc2VsZi5fX2NsYXNzX18pOgorICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIHJldHVybiBvdGhlci5fdmFsdWVfICYgc2VsZi5fdmFsdWVfID09IG90aGVyLl92YWx1ZV8KKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgY2xzID0gc2VsZi5fX2NsYXNzX18KKyAgICAgICAgaWYgc2VsZi5fbmFtZV8gaXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXR1cm4gJzwlcy4lczogJXI+JyAlIChjbHMuX19uYW1lX18sIHNlbGYuX25hbWVfLCBzZWxmLl92YWx1ZV8pCisgICAgICAgIG1lbWJlcnMsIHVuY292ZXJlZCA9IF9kZWNvbXBvc2UoY2xzLCBzZWxmLl92YWx1ZV8pCisgICAgICAgIHJldHVybiAnPCVzLiVzOiAlcj4nICUgKAorICAgICAgICAgICAgICAgIGNscy5fX25hbWVfXywKKyAgICAgICAgICAgICAgICAnfCcuam9pbihbc3RyKG0uX25hbWVfIG9yIG0uX3ZhbHVlXykgZm9yIG0gaW4gbWVtYmVyc10pLAorICAgICAgICAgICAgICAgIHNlbGYuX3ZhbHVlXywKKyAgICAgICAgICAgICAgICApCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgY2xzID0gc2VsZi5fX2NsYXNzX18KKyAgICAgICAgaWYgc2VsZi5fbmFtZV8gaXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXR1cm4gJyVzLiVzJyAlIChjbHMuX19uYW1lX18sIHNlbGYuX25hbWVfKQorICAgICAgICBtZW1iZXJzLCB1bmNvdmVyZWQgPSBfZGVjb21wb3NlKGNscywgc2VsZi5fdmFsdWVfKQorICAgICAgICBpZiBsZW4obWVtYmVycykgPT0gMSBhbmQgbWVtYmVyc1swXS5fbmFtZV8gaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiAnJXMuJXInICUgKGNscy5fX25hbWVfXywgbWVtYmVyc1swXS5fdmFsdWVfKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuICclcy4lcycgJSAoCisgICAgICAgICAgICAgICAgICAgIGNscy5fX25hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgJ3wnLmpvaW4oW3N0cihtLl9uYW1lXyBvciBtLl92YWx1ZV8pIGZvciBtIGluIG1lbWJlcnNdKSwKKyAgICAgICAgICAgICAgICAgICAgKQorCisgICAgZGVmIF9fYm9vbF9fKHNlbGYpOgorICAgICAgICByZXR1cm4gYm9vbChzZWxmLl92YWx1ZV8pCisKKyAgICBkZWYgX19vcl9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIHNlbGYuX19jbGFzc19fKToKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi5fdmFsdWVfIHwgb3RoZXIuX3ZhbHVlXykKKworICAgIGRlZiBfX2FuZF9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIHNlbGYuX19jbGFzc19fKToKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi5fdmFsdWVfICYgb3RoZXIuX3ZhbHVlXykKKworICAgIGRlZiBfX3hvcl9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIHNlbGYuX19jbGFzc19fKToKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi5fdmFsdWVfIF4gb3RoZXIuX3ZhbHVlXykKKworICAgIGRlZiBfX2ludmVydF9fKHNlbGYpOgorICAgICAgICBtZW1iZXJzLCB1bmNvdmVyZWQgPSBfZGVjb21wb3NlKHNlbGYuX19jbGFzc19fLCBzZWxmLl92YWx1ZV8pCisgICAgICAgIGludmVydGVkX21lbWJlcnMgPSBbCisgICAgICAgICAgICAgICAgbSBmb3IgbSBpbiBzZWxmLl9fY2xhc3NfXworICAgICAgICAgICAgICAgIGlmIG0gbm90IGluIG1lbWJlcnMgYW5kIG5vdCBtLl92YWx1ZV8gJiBzZWxmLl92YWx1ZV8KKyAgICAgICAgICAgICAgICBdCisgICAgICAgIGludmVydGVkID0gcmVkdWNlKF9vcl8sIGludmVydGVkX21lbWJlcnMsIHNlbGYuX19jbGFzc19fKDApKQorICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oaW52ZXJ0ZWQpCisKKworY2xhc3MgSW50RmxhZyhpbnQsIEZsYWcpOgorICAgICIiIlN1cHBvcnQgZm9yIGludGVnZXItYmFzZWQgRmxhZ3MiIiIKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfbWlzc2luZ18oY2xzLCB2YWx1ZSk6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHZhbHVlLCBpbnQpOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiJXIgaXMgbm90IGEgdmFsaWQgJXMiICUgKHZhbHVlLCBjbHMuX19uYW1lX18pKQorICAgICAgICBuZXdfbWVtYmVyID0gY2xzLl9jcmVhdGVfcHNldWRvX21lbWJlcl8odmFsdWUpCisgICAgICAgIHJldHVybiBuZXdfbWVtYmVyCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX2NyZWF0ZV9wc2V1ZG9fbWVtYmVyXyhjbHMsIHZhbHVlKToKKyAgICAgICAgcHNldWRvX21lbWJlciA9IGNscy5fdmFsdWUybWVtYmVyX21hcF8uZ2V0KHZhbHVlLCBOb25lKQorICAgICAgICBpZiBwc2V1ZG9fbWVtYmVyIGlzIE5vbmU6CisgICAgICAgICAgICBuZWVkX3RvX2NyZWF0ZSA9IFt2YWx1ZV0KKyAgICAgICAgICAgICMgZ2V0IHVuYWNjb3VudGVkIGZvciBiaXRzCisgICAgICAgICAgICBfLCBleHRyYV9mbGFncyA9IF9kZWNvbXBvc2UoY2xzLCB2YWx1ZSkKKyAgICAgICAgICAgICMgdGltZXIgPSAxMAorICAgICAgICAgICAgd2hpbGUgZXh0cmFfZmxhZ3M6CisgICAgICAgICAgICAgICAgIyB0aW1lciAtPSAxCisgICAgICAgICAgICAgICAgYml0ID0gX2hpZ2hfYml0KGV4dHJhX2ZsYWdzKQorICAgICAgICAgICAgICAgIGZsYWdfdmFsdWUgPSAyICoqIGJpdAorICAgICAgICAgICAgICAgIGlmIChmbGFnX3ZhbHVlIG5vdCBpbiBjbHMuX3ZhbHVlMm1lbWJlcl9tYXBfIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZSBub3QgaW4gbmVlZF90b19jcmVhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICk6CisgICAgICAgICAgICAgICAgICAgIG5lZWRfdG9fY3JlYXRlLmFwcGVuZChmbGFnX3ZhbHVlKQorICAgICAgICAgICAgICAgIGlmIGV4dHJhX2ZsYWdzID09IC1mbGFnX3ZhbHVlOgorICAgICAgICAgICAgICAgICAgICBleHRyYV9mbGFncyA9IDAKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBleHRyYV9mbGFncyBePSBmbGFnX3ZhbHVlCisgICAgICAgICAgICBmb3IgdmFsdWUgaW4gcmV2ZXJzZWQobmVlZF90b19jcmVhdGUpOgorICAgICAgICAgICAgICAgICMgY29uc3RydWN0IHNpbmdsZXRvbiBwc2V1ZG8tbWVtYmVycworICAgICAgICAgICAgICAgIHBzZXVkb19tZW1iZXIgPSBpbnQuX19uZXdfXyhjbHMsIHZhbHVlKQorICAgICAgICAgICAgICAgIHBzZXVkb19tZW1iZXIuX25hbWVfID0gTm9uZQorICAgICAgICAgICAgICAgIHBzZXVkb19tZW1iZXIuX3ZhbHVlXyA9IHZhbHVlCisgICAgICAgICAgICAgICAgY2xzLl92YWx1ZTJtZW1iZXJfbWFwX1t2YWx1ZV0gPSBwc2V1ZG9fbWVtYmVyCisgICAgICAgIHJldHVybiBwc2V1ZG9fbWVtYmVyCisKKyAgICBkZWYgX19vcl9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIChzZWxmLl9fY2xhc3NfXywgaW50KSk6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgcmVzdWx0ID0gc2VsZi5fX2NsYXNzX18oc2VsZi5fdmFsdWVfIHwgc2VsZi5fX2NsYXNzX18ob3RoZXIpLl92YWx1ZV8pCisgICAgICAgIHJldHVybiByZXN1bHQKKworICAgIGRlZiBfX2FuZF9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIChzZWxmLl9fY2xhc3NfXywgaW50KSk6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYuX3ZhbHVlXyAmIHNlbGYuX19jbGFzc19fKG90aGVyKS5fdmFsdWVfKQorCisgICAgZGVmIF9feG9yX18oc2VsZiwgb3RoZXIpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgKHNlbGYuX19jbGFzc19fLCBpbnQpKToKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi5fdmFsdWVfIF4gc2VsZi5fX2NsYXNzX18ob3RoZXIpLl92YWx1ZV8pCisKKyAgICBfX3Jvcl9fID0gX19vcl9fCisgICAgX19yYW5kX18gPSBfX2FuZF9fCisgICAgX19yeG9yX18gPSBfX3hvcl9fCisKKyAgICBkZWYgX19pbnZlcnRfXyhzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gc2VsZi5fX2NsYXNzX18ofnNlbGYuX3ZhbHVlXykKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCisKK2RlZiBfaGlnaF9iaXQodmFsdWUpOgorICAgICIiInJldHVybnMgaW5kZXggb2YgaGlnaGVzdCBiaXQsIG9yIC0xIGlmIHZhbHVlIGlzIHplcm8gb3IgbmVnYXRpdmUiIiIKKyAgICByZXR1cm4gdmFsdWUuYml0X2xlbmd0aCgpIC0gMQorCiBkZWYgdW5pcXVlKGVudW1lcmF0aW9uKToKICAgICAiIiJDbGFzcyBkZWNvcmF0b3IgZm9yIGVudW1lcmF0aW9ucyBlbnN1cmluZyB1bmlxdWUgbWVtYmVyIHZhbHVlcy4iIiIKICAgICBkdXBsaWNhdGVzID0gW10KQEAgLTU3MiwzICs4MjksNDAgQEAKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignZHVwbGljYXRlIHZhbHVlcyBmb3VuZCBpbiAlcjogJXMnICUKICAgICAgICAgICAgICAgICAoZW51bWVyYXRpb24sIGFsaWFzX2RldGFpbHMpKQogICAgIHJldHVybiBlbnVtZXJhdGlvbgorCitkZWYgX2RlY29tcG9zZShmbGFnLCB2YWx1ZSk6CisgICAgIiIiRXh0cmFjdCBhbGwgbWVtYmVycyBmcm9tIHRoZSB2YWx1ZS4iIiIKKyAgICAjIF9kZWNvbXBvc2UgaXMgb25seSBjYWxsZWQgaWYgdGhlIHZhbHVlIGlzIG5vdCBuYW1lZAorICAgIG5vdF9jb3ZlcmVkID0gdmFsdWUKKyAgICBuZWdhdGl2ZSA9IHZhbHVlIDwgMAorICAgIGlmIG5lZ2F0aXZlOgorICAgICAgICAjIG9ubHkgY2hlY2sgZm9yIG5hbWVkIGZsYWdzCisgICAgICAgIGZsYWdzX3RvX2NoZWNrID0gWworICAgICAgICAgICAgICAgIChtLCB2KQorICAgICAgICAgICAgICAgIGZvciB2LCBtIGluIGZsYWcuX3ZhbHVlMm1lbWJlcl9tYXBfLml0ZW1zKCkKKyAgICAgICAgICAgICAgICBpZiBtLm5hbWUgaXMgbm90IE5vbmUKKyAgICAgICAgICAgICAgICBdCisgICAgZWxzZToKKyAgICAgICAgIyBjaGVjayBmb3IgbmFtZWQgZmxhZ3MgYW5kIHBvd2Vycy1vZi10d28gZmxhZ3MKKyAgICAgICAgZmxhZ3NfdG9fY2hlY2sgPSBbCisgICAgICAgICAgICAgICAgKG0sIHYpCisgICAgICAgICAgICAgICAgZm9yIHYsIG0gaW4gZmxhZy5fdmFsdWUybWVtYmVyX21hcF8uaXRlbXMoKQorICAgICAgICAgICAgICAgIGlmIG0ubmFtZSBpcyBub3QgTm9uZSBvciBfcG93ZXJfb2ZfdHdvKHYpCisgICAgICAgICAgICAgICAgXQorICAgIG1lbWJlcnMgPSBbXQorICAgIGZvciBtZW1iZXIsIG1lbWJlcl92YWx1ZSBpbiBmbGFnc190b19jaGVjazoKKyAgICAgICAgaWYgbWVtYmVyX3ZhbHVlIGFuZCBtZW1iZXJfdmFsdWUgJiB2YWx1ZSA9PSBtZW1iZXJfdmFsdWU6CisgICAgICAgICAgICBtZW1iZXJzLmFwcGVuZChtZW1iZXIpCisgICAgICAgICAgICBub3RfY292ZXJlZCAmPSB+bWVtYmVyX3ZhbHVlCisgICAgaWYgbm90IG1lbWJlcnMgYW5kIHZhbHVlIGluIGZsYWcuX3ZhbHVlMm1lbWJlcl9tYXBfOgorICAgICAgICBtZW1iZXJzLmFwcGVuZChmbGFnLl92YWx1ZTJtZW1iZXJfbWFwX1t2YWx1ZV0pCisgICAgbWVtYmVycy5zb3J0KGtleT1sYW1iZGEgbTogbS5fdmFsdWVfLCByZXZlcnNlPVRydWUpCisgICAgaWYgbGVuKG1lbWJlcnMpID4gMSBhbmQgbWVtYmVyc1swXS52YWx1ZSA9PSB2YWx1ZToKKyAgICAgICAgIyB3ZSBoYXZlIHRoZSBicmVha2Rvd24sIGRvbid0IG5lZWQgdGhlIHZhbHVlIG1lbWJlciBpdHNlbGYKKyAgICAgICAgbWVtYmVycy5wb3AoMCkKKyAgICByZXR1cm4gbWVtYmVycywgbm90X2NvdmVyZWQKKworZGVmIF9wb3dlcl9vZl90d28odmFsdWUpOgorICAgIGlmIHZhbHVlIDwgMToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgcmV0dXJuIHZhbHVlID09IDIgKiogX2hpZ2hfYml0KHZhbHVlKQpkaWZmIC0tZ2l0IGEvTGliL2ZpbGVpbnB1dC5weSBiL0xpYi9maWxlaW5wdXQucHkKaW5kZXggZDJiNTIwNi4uNzIxZmU5YyAxMDA2NDQKLS0tIGEvTGliL2ZpbGVpbnB1dC5weQorKysgYi9MaWIvZmlsZWlucHV0LnB5CkBAIC03NSwxMyArNzUsMTEgQEAKIGltcG9ydCBzeXMsIG9zCiAKIF9fYWxsX18gPSBbImlucHV0IiwgImNsb3NlIiwgIm5leHRmaWxlIiwgImZpbGVuYW1lIiwgImxpbmVubyIsICJmaWxlbGluZW5vIiwKLSAgICAgICAgICAgImlzZmlyc3RsaW5lIiwgImlzc3RkaW4iLCAiRmlsZUlucHV0Il0KKyAgICAgICAgICAgImZpbGVubyIsICJpc2ZpcnN0bGluZSIsICJpc3N0ZGluIiwgIkZpbGVJbnB1dCIsICJob29rX2NvbXByZXNzZWQiLAorICAgICAgICAgICAiaG9va19lbmNvZGVkIl0KIAogX3N0YXRlID0gTm9uZQogCi0jIE5vIGxvbmdlciB1c2VkCi1ERUZBVUxUX0JVRlNJWkUgPSA4KjEwMjQKLQogZGVmIGlucHV0KGZpbGVzPU5vbmUsIGlucGxhY2U9RmFsc2UsIGJhY2t1cD0iIiwgYnVmc2l6ZT0wLAogICAgICAgICAgIG1vZGU9InIiLCBvcGVuaG9vaz1Ob25lKToKICAgICAiIiJSZXR1cm4gYW4gaW5zdGFuY2Ugb2YgdGhlIEZpbGVJbnB1dCBjbGFzcywgd2hpY2ggY2FuIGJlIGl0ZXJhdGVkLgpAQCAtMjAxLDYgKzE5OSwxMCBAQAogICAgICAgICBzZWxmLl9maWxlcyA9IGZpbGVzCiAgICAgICAgIHNlbGYuX2lucGxhY2UgPSBpbnBsYWNlCiAgICAgICAgIHNlbGYuX2JhY2t1cCA9IGJhY2t1cAorICAgICAgICBpZiBidWZzaXplOgorICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCdidWZzaXplIGlzIGRlcHJlY2F0ZWQgYW5kIGlnbm9yZWQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICAgICAgc2VsZi5fc2F2ZXN0ZG91dCA9IE5vbmUKICAgICAgICAgc2VsZi5fb3V0cHV0ID0gTm9uZQogICAgICAgICBzZWxmLl9maWxlbmFtZSA9IE5vbmUKQEAgLTM5OCw5ICs0MDAsOSBAQAogICAgICAgICByZXR1cm4gb3BlbihmaWxlbmFtZSwgbW9kZSkKIAogCi1kZWYgaG9va19lbmNvZGVkKGVuY29kaW5nKToKK2RlZiBob29rX2VuY29kZWQoZW5jb2RpbmcsIGVycm9ycz1Ob25lKToKICAgICBkZWYgb3Blbmhvb2soZmlsZW5hbWUsIG1vZGUpOgotICAgICAgICByZXR1cm4gb3BlbihmaWxlbmFtZSwgbW9kZSwgZW5jb2Rpbmc9ZW5jb2RpbmcpCisgICAgICAgIHJldHVybiBvcGVuKGZpbGVuYW1lLCBtb2RlLCBlbmNvZGluZz1lbmNvZGluZywgZXJyb3JzPWVycm9ycykKICAgICByZXR1cm4gb3Blbmhvb2sKIAogCmRpZmYgLS1naXQgYS9MaWIvZm5tYXRjaC5weSBiL0xpYi9mbm1hdGNoLnB5CmluZGV4IDYzMzBiMGMuLmZkM2I1MTQgMTAwNjQ0Ci0tLSBhL0xpYi9mbm1hdGNoLnB5CisrKyBiL0xpYi9mbm1hdGNoLnB5CkBAIC0xMDYsNCArMTA2LDQgQEAKICAgICAgICAgICAgICAgICByZXMgPSAnJXNbJXNdJyAlIChyZXMsIHN0dWZmKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmVzID0gcmVzICsgcmUuZXNjYXBlKGMpCi0gICAgcmV0dXJuIHJlcyArICdcWig/bXMpJworICAgIHJldHVybiByJyg/czolcylcWicgJSByZXMKZGlmZiAtLWdpdCBhL0xpYi9mcmFjdGlvbnMucHkgYi9MaWIvZnJhY3Rpb25zLnB5CmluZGV4IDlhYWJhYjMuLjgzMzAyMDIgMTAwNjQ0Ci0tLSBhL0xpYi9mcmFjdGlvbnMucHkKKysrIGIvTGliL2ZyYWN0aW9ucy5weQpAQCAtODEsNyArODEsNyBAQAogICAgIF9fc2xvdHNfXyA9ICgnX251bWVyYXRvcicsICdfZGVub21pbmF0b3InKQogCiAgICAgIyBXZSdyZSBpbW11dGFibGUsIHNvIHVzZSBfX25ld19fIG5vdCBfX2luaXRfXwotICAgIGRlZiBfX25ld19fKGNscywgbnVtZXJhdG9yPTAsIGRlbm9taW5hdG9yPU5vbmUsIF9ub3JtYWxpemU9VHJ1ZSk6CisgICAgZGVmIF9fbmV3X18oY2xzLCBudW1lcmF0b3I9MCwgZGVub21pbmF0b3I9Tm9uZSwgKiwgX25vcm1hbGl6ZT1UcnVlKToKICAgICAgICAgIiIiQ29uc3RydWN0cyBhIFJhdGlvbmFsLgogCiAgICAgICAgIFRha2VzIGEgc3RyaW5nIGxpa2UgJzMvMicgb3IgJzEuNScsIGFub3RoZXIgUmF0aW9uYWwgaW5zdGFuY2UsIGEKQEAgLTEyNSwxNyArMTI1LDkgQEAKICAgICAgICAgICAgICAgICBzZWxmLl9kZW5vbWluYXRvciA9IG51bWVyYXRvci5kZW5vbWluYXRvcgogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCiAKLSAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShudW1lcmF0b3IsIGZsb2F0KToKLSAgICAgICAgICAgICAgICAjIEV4YWN0IGNvbnZlcnNpb24gZnJvbSBmbG9hdAotICAgICAgICAgICAgICAgIHZhbHVlID0gRnJhY3Rpb24uZnJvbV9mbG9hdChudW1lcmF0b3IpCi0gICAgICAgICAgICAgICAgc2VsZi5fbnVtZXJhdG9yID0gdmFsdWUuX251bWVyYXRvcgotICAgICAgICAgICAgICAgIHNlbGYuX2Rlbm9taW5hdG9yID0gdmFsdWUuX2Rlbm9taW5hdG9yCi0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKLQotICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKG51bWVyYXRvciwgRGVjaW1hbCk6Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSBGcmFjdGlvbi5mcm9tX2RlY2ltYWwobnVtZXJhdG9yKQotICAgICAgICAgICAgICAgIHNlbGYuX251bWVyYXRvciA9IHZhbHVlLl9udW1lcmF0b3IKLSAgICAgICAgICAgICAgICBzZWxmLl9kZW5vbWluYXRvciA9IHZhbHVlLl9kZW5vbWluYXRvcgorICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKG51bWVyYXRvciwgKGZsb2F0LCBEZWNpbWFsKSk6CisgICAgICAgICAgICAgICAgIyBFeGFjdCBjb252ZXJzaW9uCisgICAgICAgICAgICAgICAgc2VsZi5fbnVtZXJhdG9yLCBzZWxmLl9kZW5vbWluYXRvciA9IG51bWVyYXRvci5hc19pbnRlZ2VyX3JhdGlvKCkKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgogCiAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UobnVtZXJhdG9yLCBzdHIpOgpAQCAtMjEwLDEwICsyMDIsNiBAQAogICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKGYsIGZsb2F0KToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiJXMuZnJvbV9mbG9hdCgpIG9ubHkgdGFrZXMgZmxvYXRzLCBub3QgJXIgKCVzKSIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbHMuX19uYW1lX18sIGYsIHR5cGUoZikuX19uYW1lX18pKQotICAgICAgICBpZiBtYXRoLmlzbmFuKGYpOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ2Fubm90IGNvbnZlcnQgJXIgdG8gJXMuIiAlIChmLCBjbHMuX19uYW1lX18pKQotICAgICAgICBpZiBtYXRoLmlzaW5mKGYpOgotICAgICAgICAgICAgcmFpc2UgT3ZlcmZsb3dFcnJvcigiQ2Fubm90IGNvbnZlcnQgJXIgdG8gJXMuIiAlIChmLCBjbHMuX19uYW1lX18pKQogICAgICAgICByZXR1cm4gY2xzKCpmLmFzX2ludGVnZXJfcmF0aW8oKSkKIAogICAgIEBjbGFzc21ldGhvZApAQCAtMjI2LDE5ICsyMTQsNyBAQAogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAogICAgICAgICAgICAgICAgICIlcy5mcm9tX2RlY2ltYWwoKSBvbmx5IHRha2VzIERlY2ltYWxzLCBub3QgJXIgKCVzKSIgJQogICAgICAgICAgICAgICAgIChjbHMuX19uYW1lX18sIGRlYywgdHlwZShkZWMpLl9fbmFtZV9fKSkKLSAgICAgICAgaWYgZGVjLmlzX2luZmluaXRlKCk6Ci0gICAgICAgICAgICByYWlzZSBPdmVyZmxvd0Vycm9yKAotICAgICAgICAgICAgICAgICJDYW5ub3QgY29udmVydCAlcyB0byAlcy4iICUgKGRlYywgY2xzLl9fbmFtZV9fKSkKLSAgICAgICAgaWYgZGVjLmlzX25hbigpOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ2Fubm90IGNvbnZlcnQgJXMgdG8gJXMuIiAlIChkZWMsIGNscy5fX25hbWVfXykpCi0gICAgICAgIHNpZ24sIGRpZ2l0cywgZXhwID0gZGVjLmFzX3R1cGxlKCkKLSAgICAgICAgZGlnaXRzID0gaW50KCcnLmpvaW4obWFwKHN0ciwgZGlnaXRzKSkpCi0gICAgICAgIGlmIHNpZ246Ci0gICAgICAgICAgICBkaWdpdHMgPSAtZGlnaXRzCi0gICAgICAgIGlmIGV4cCA+PSAwOgotICAgICAgICAgICAgcmV0dXJuIGNscyhkaWdpdHMgKiAxMCAqKiBleHApCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gY2xzKGRpZ2l0cywgMTAgKiogLWV4cCkKKyAgICAgICAgcmV0dXJuIGNscygqZGVjLmFzX2ludGVnZXJfcmF0aW8oKSkKIAogICAgIGRlZiBsaW1pdF9kZW5vbWluYXRvcihzZWxmLCBtYXhfZGVub21pbmF0b3I9MTAwMDAwMCk6CiAgICAgICAgICIiIkNsb3Nlc3QgRnJhY3Rpb24gdG8gc2VsZiB3aXRoIGRlbm9taW5hdG9yIGF0IG1vc3QgbWF4X2Rlbm9taW5hdG9yLgpkaWZmIC0tZ2l0IGEvTGliL2Z0cGxpYi5weSBiL0xpYi9mdHBsaWIucHkKaW5kZXggYzQxNmQ4NS4uOGYzNmY1MyAxMDA2NDQKLS0tIGEvTGliL2Z0cGxpYi5weQorKysgYi9MaWIvZnRwbGliLnB5CkBAIC0zNiwxMyArMzYsMTIgQEAKICMgTW9kaWZpZWQgYnkgR2lhbXBhb2xvIFJvZG9sYScgdG8gYWRkIFRMUyBzdXBwb3J0LgogIwogCi1pbXBvcnQgb3MKIGltcG9ydCBzeXMKIGltcG9ydCBzb2NrZXQKLWltcG9ydCB3YXJuaW5ncwogZnJvbSBzb2NrZXQgaW1wb3J0IF9HTE9CQUxfREVGQVVMVF9USU1FT1VUCiAKLV9fYWxsX18gPSBbIkZUUCJdCitfX2FsbF9fID0gWyJGVFAiLCAiZXJyb3JfcmVwbHkiLCAiZXJyb3JfdGVtcCIsICJlcnJvcl9wZXJtIiwgImVycm9yX3Byb3RvIiwKKyAgICAgICAgICAgImFsbF9lcnJvcnMiXQogCiAjIE1hZ2ljIG51bWJlciBmcm9tIDxzb2NrZXQuaD4KIE1TR19PT0IgPSAweDEgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFByb2Nlc3MgZGF0YSBvdXQgb2YgYmFuZApAQCAtNzI5LDYgKzcyOCwxMCBAQAogICAgICAgICAgICAgaWYgY29udGV4dCBpcyBub3QgTm9uZSBhbmQgY2VydGZpbGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY29udGV4dCBhbmQgY2VydGZpbGUgYXJndW1lbnRzIGFyZSBtdXR1YWxseSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjbHVzaXZlIikKKyAgICAgICAgICAgIGlmIGtleWZpbGUgaXMgbm90IE5vbmUgb3IgY2VydGZpbGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2Fybigia2V5ZmlsZSBhbmQgY2VydGZpbGUgYXJlIGRlcHJlY2F0ZWQsIHVzZSBhIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImN1c3RvbSBjb250ZXh0IGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgICAgICBzZWxmLmtleWZpbGUgPSBrZXlmaWxlCiAgICAgICAgICAgICBzZWxmLmNlcnRmaWxlID0gY2VydGZpbGUKICAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKQEAgLTgyMiw3ICs4MjUsNyBAQAogICAgIGlmIF8xNTBfcmUgaXMgTm9uZToKICAgICAgICAgaW1wb3J0IHJlCiAgICAgICAgIF8xNTBfcmUgPSByZS5jb21waWxlKAotICAgICAgICAgICAgIjE1MCAuKiBcKChcZCspIGJ5dGVzXCkiLCByZS5JR05PUkVDQVNFIHwgcmUuQVNDSUkpCisgICAgICAgICAgICByIjE1MCAuKiBcKChcZCspIGJ5dGVzXCkiLCByZS5JR05PUkVDQVNFIHwgcmUuQVNDSUkpCiAgICAgbSA9IF8xNTBfcmUubWF0Y2gocmVzcCkKICAgICBpZiBub3QgbToKICAgICAgICAgcmV0dXJuIE5vbmUKZGlmZiAtLWdpdCBhL0xpYi9mdW5jdG9vbHMucHkgYi9MaWIvZnVuY3Rvb2xzLnB5CmluZGV4IDYwY2YzYzQuLjQ1ZTVmODcgMTAwNjQ0Ci0tLSBhL0xpYi9mdW5jdG9vbHMucHkKKysrIGIvTGliL2Z1bmN0b29scy5weQpAQCAtMjEsNiArMjEsNyBAQAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZQogZnJvbSB0eXBlcyBpbXBvcnQgTWFwcGluZ1Byb3h5VHlwZQogZnJvbSB3ZWFrcmVmIGltcG9ydCBXZWFrS2V5RGljdGlvbmFyeQorZnJvbSByZXBybGliIGltcG9ydCByZWN1cnNpdmVfcmVwcgogdHJ5OgogICAgIGZyb20gX3RocmVhZCBpbXBvcnQgUkxvY2sKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKQEAgLTIzNywyNiArMjM4LDgzIEBACiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCiAjIFB1cmVseSBmdW5jdGlvbmFsLCBubyBkZXNjcmlwdG9yIGJlaGF2aW91cgotZGVmIHBhcnRpYWwoZnVuYywgKmFyZ3MsICoqa2V5d29yZHMpOgorY2xhc3MgcGFydGlhbDoKICAgICAiIiJOZXcgZnVuY3Rpb24gd2l0aCBwYXJ0aWFsIGFwcGxpY2F0aW9uIG9mIHRoZSBnaXZlbiBhcmd1bWVudHMKICAgICBhbmQga2V5d29yZHMuCiAgICAgIiIiCi0gICAgaWYgaGFzYXR0cihmdW5jLCAnZnVuYycpOgotICAgICAgICBhcmdzID0gZnVuYy5hcmdzICsgYXJncwotICAgICAgICB0bXBrdyA9IGZ1bmMua2V5d29yZHMuY29weSgpCi0gICAgICAgIHRtcGt3LnVwZGF0ZShrZXl3b3JkcykKLSAgICAgICAga2V5d29yZHMgPSB0bXBrdwotICAgICAgICBkZWwgdG1wa3cKLSAgICAgICAgZnVuYyA9IGZ1bmMuZnVuYwogCi0gICAgZGVmIG5ld2Z1bmMoKmZhcmdzLCAqKmZrZXl3b3Jkcyk6Ci0gICAgICAgIG5ld2tleXdvcmRzID0ga2V5d29yZHMuY29weSgpCi0gICAgICAgIG5ld2tleXdvcmRzLnVwZGF0ZShma2V5d29yZHMpCi0gICAgICAgIHJldHVybiBmdW5jKCooYXJncyArIGZhcmdzKSwgKipuZXdrZXl3b3JkcykKLSAgICBuZXdmdW5jLmZ1bmMgPSBmdW5jCi0gICAgbmV3ZnVuYy5hcmdzID0gYXJncwotICAgIG5ld2Z1bmMua2V5d29yZHMgPSBrZXl3b3JkcwotICAgIHJldHVybiBuZXdmdW5jCisgICAgX19zbG90c19fID0gImZ1bmMiLCAiYXJncyIsICJrZXl3b3JkcyIsICJfX2RpY3RfXyIsICJfX3dlYWtyZWZfXyIKKworICAgIGRlZiBfX25ld19fKCphcmdzLCAqKmtleXdvcmRzKToKKyAgICAgICAgaWYgbm90IGFyZ3M6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImRlc2NyaXB0b3IgJ19fbmV3X18nIG9mIHBhcnRpYWwgbmVlZHMgYW4gYXJndW1lbnQiKQorICAgICAgICBpZiBsZW4oYXJncykgPCAyOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJ0eXBlICdwYXJ0aWFsJyB0YWtlcyBhdCBsZWFzdCBvbmUgYXJndW1lbnQiKQorICAgICAgICBjbHMsIGZ1bmMsICphcmdzID0gYXJncworICAgICAgICBpZiBub3QgY2FsbGFibGUoZnVuYyk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoInRoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGNhbGxhYmxlIikKKyAgICAgICAgYXJncyA9IHR1cGxlKGFyZ3MpCisKKyAgICAgICAgaWYgaGFzYXR0cihmdW5jLCAiZnVuYyIpOgorICAgICAgICAgICAgYXJncyA9IGZ1bmMuYXJncyArIGFyZ3MKKyAgICAgICAgICAgIHRtcGt3ID0gZnVuYy5rZXl3b3Jkcy5jb3B5KCkKKyAgICAgICAgICAgIHRtcGt3LnVwZGF0ZShrZXl3b3JkcykKKyAgICAgICAgICAgIGtleXdvcmRzID0gdG1wa3cKKyAgICAgICAgICAgIGRlbCB0bXBrdworICAgICAgICAgICAgZnVuYyA9IGZ1bmMuZnVuYworCisgICAgICAgIHNlbGYgPSBzdXBlcihwYXJ0aWFsLCBjbHMpLl9fbmV3X18oY2xzKQorCisgICAgICAgIHNlbGYuZnVuYyA9IGZ1bmMKKyAgICAgICAgc2VsZi5hcmdzID0gYXJncworICAgICAgICBzZWxmLmtleXdvcmRzID0ga2V5d29yZHMKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2NhbGxfXygqYXJncywgKiprZXl3b3Jkcyk6CisgICAgICAgIGlmIG5vdCBhcmdzOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJkZXNjcmlwdG9yICdfX2NhbGxfXycgb2YgcGFydGlhbCBuZWVkcyBhbiBhcmd1bWVudCIpCisgICAgICAgIHNlbGYsICphcmdzID0gYXJncworICAgICAgICBuZXdrZXl3b3JkcyA9IHNlbGYua2V5d29yZHMuY29weSgpCisgICAgICAgIG5ld2tleXdvcmRzLnVwZGF0ZShrZXl3b3JkcykKKyAgICAgICAgcmV0dXJuIHNlbGYuZnVuYygqc2VsZi5hcmdzLCAqYXJncywgKipuZXdrZXl3b3JkcykKKworICAgIEByZWN1cnNpdmVfcmVwcigpCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICBxdWFsbmFtZSA9IHR5cGUoc2VsZikuX19xdWFsbmFtZV9fCisgICAgICAgIGFyZ3MgPSBbcmVwcihzZWxmLmZ1bmMpXQorICAgICAgICBhcmdzLmV4dGVuZChyZXByKHgpIGZvciB4IGluIHNlbGYuYXJncykKKyAgICAgICAgYXJncy5leHRlbmQoZiJ7a309e3Yhcn0iIGZvciAoaywgdikgaW4gc2VsZi5rZXl3b3Jkcy5pdGVtcygpKQorICAgICAgICBpZiB0eXBlKHNlbGYpLl9fbW9kdWxlX18gPT0gImZ1bmN0b29scyI6CisgICAgICAgICAgICByZXR1cm4gZiJmdW5jdG9vbHMue3F1YWxuYW1lfSh7JywgJy5qb2luKGFyZ3MpfSkiCisgICAgICAgIHJldHVybiBmIntxdWFsbmFtZX0oeycsICcuam9pbihhcmdzKX0pIgorCisgICAgZGVmIF9fcmVkdWNlX18oc2VsZik6CisgICAgICAgIHJldHVybiB0eXBlKHNlbGYpLCAoc2VsZi5mdW5jLCksIChzZWxmLmZ1bmMsIHNlbGYuYXJncywKKyAgICAgICAgICAgICAgIHNlbGYua2V5d29yZHMgb3IgTm9uZSwgc2VsZi5fX2RpY3RfXyBvciBOb25lKQorCisgICAgZGVmIF9fc2V0c3RhdGVfXyhzZWxmLCBzdGF0ZSk6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHN0YXRlLCB0dXBsZSk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImFyZ3VtZW50IHRvIF9fc2V0c3RhdGVfXyBtdXN0IGJlIGEgdHVwbGUiKQorICAgICAgICBpZiBsZW4oc3RhdGUpICE9IDQ6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoZiJleHBlY3RlZCA0IGl0ZW1zIGluIHN0YXRlLCBnb3Qge2xlbihzdGF0ZSl9IikKKyAgICAgICAgZnVuYywgYXJncywga3dkcywgbmFtZXNwYWNlID0gc3RhdGUKKyAgICAgICAgaWYgKG5vdCBjYWxsYWJsZShmdW5jKSBvciBub3QgaXNpbnN0YW5jZShhcmdzLCB0dXBsZSkgb3IKKyAgICAgICAgICAgKGt3ZHMgaXMgbm90IE5vbmUgYW5kIG5vdCBpc2luc3RhbmNlKGt3ZHMsIGRpY3QpKSBvcgorICAgICAgICAgICAobmFtZXNwYWNlIGlzIG5vdCBOb25lIGFuZCBub3QgaXNpbnN0YW5jZShuYW1lc3BhY2UsIGRpY3QpKSk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImludmFsaWQgcGFydGlhbCBzdGF0ZSIpCisKKyAgICAgICAgYXJncyA9IHR1cGxlKGFyZ3MpICMganVzdCBpbiBjYXNlIGl0J3MgYSBzdWJjbGFzcworICAgICAgICBpZiBrd2RzIGlzIE5vbmU6CisgICAgICAgICAgICBrd2RzID0ge30KKyAgICAgICAgZWxpZiB0eXBlKGt3ZHMpIGlzIG5vdCBkaWN0OiAjIFhYWCBkb2VzIGl0IG5lZWQgdG8gYmUgKmV4YWN0bHkqIGRpY3Q/CisgICAgICAgICAgICBrd2RzID0gZGljdChrd2RzKQorICAgICAgICBpZiBuYW1lc3BhY2UgaXMgTm9uZToKKyAgICAgICAgICAgIG5hbWVzcGFjZSA9IHt9CisKKyAgICAgICAgc2VsZi5fX2RpY3RfXyA9IG5hbWVzcGFjZQorICAgICAgICBzZWxmLmZ1bmMgPSBmdW5jCisgICAgICAgIHNlbGYuYXJncyA9IGFyZ3MKKyAgICAgICAgc2VsZi5rZXl3b3JkcyA9IGt3ZHMKIAogdHJ5OgogICAgIGZyb20gX2Z1bmN0b29scyBpbXBvcnQgcGFydGlhbApkaWZmIC0tZ2l0IGEvTGliL2dlbmVyaWNwYXRoLnB5IGIvTGliL2dlbmVyaWNwYXRoLnB5CmluZGV4IDY3MTQwNjEuLjMwM2IzYjMgMTAwNjQ0Ci0tLSBhL0xpYi9nZW5lcmljcGF0aC5weQorKysgYi9MaWIvZ2VuZXJpY3BhdGgucHkKQEAgLTY5LDYgKzY5LDEyIEBACiBkZWYgY29tbW9ucHJlZml4KG0pOgogICAgICJHaXZlbiBhIGxpc3Qgb2YgcGF0aG5hbWVzLCByZXR1cm5zIHRoZSBsb25nZXN0IGNvbW1vbiBsZWFkaW5nIGNvbXBvbmVudCIKICAgICBpZiBub3QgbTogcmV0dXJuICcnCisgICAgIyBTb21lIHBlb3BsZSBwYXNzIGluIGEgbGlzdCBvZiBwYXRobmFtZSBwYXJ0cyB0byBvcGVyYXRlIGluIGFuIE9TLWFnbm9zdGljCisgICAgIyBmYXNoaW9uOyBkb24ndCB0cnkgdG8gdHJhbnNsYXRlIGluIHRoYXQgY2FzZSBhcyB0aGF0J3MgYW4gYWJ1c2Ugb2YgdGhlCisgICAgIyBBUEkgYW5kIHRoZXkgYXJlIGFscmVhZHkgZG9pbmcgd2hhdCB0aGV5IG5lZWQgdG8gYmUgT1MtYWdub3N0aWMgYW5kIHNvCisgICAgIyB0aGV5IG1vc3QgbGlrZWx5IHdvbid0IGJlIHVzaW5nIGFuIG9zLlBhdGhMaWtlIG9iamVjdCBpbiB0aGUgc3VibGlzdHMuCisgICAgaWYgbm90IGlzaW5zdGFuY2UobVswXSwgKGxpc3QsIHR1cGxlKSk6CisgICAgICAgIG0gPSB0dXBsZShtYXAob3MuZnNwYXRoLCBtKSkKICAgICBzMSA9IG1pbihtKQogICAgIHMyID0gbWF4KG0pCiAgICAgZm9yIGksIGMgaW4gZW51bWVyYXRlKHMxKToKZGlmZiAtLWdpdCBhL0xpYi9nbG9iLnB5IGIvTGliL2dsb2IucHkKaW5kZXggMTYzMzBkOC4uMDAyY2Q5MiAxMDA2NDQKLS0tIGEvTGliL2dsb2IucHkKKysrIGIvTGliL2dsb2IucHkKQEAgLTMwLDE1ICszMCwxNiBAQAogICAgIElmIHJlY3Vyc2l2ZSBpcyB0cnVlLCB0aGUgcGF0dGVybiAnKionIHdpbGwgbWF0Y2ggYW55IGZpbGVzIGFuZAogICAgIHplcm8gb3IgbW9yZSBkaXJlY3RvcmllcyBhbmQgc3ViZGlyZWN0b3JpZXMuCiAgICAgIiIiCi0gICAgaXQgPSBfaWdsb2IocGF0aG5hbWUsIHJlY3Vyc2l2ZSkKKyAgICBpdCA9IF9pZ2xvYihwYXRobmFtZSwgcmVjdXJzaXZlLCBGYWxzZSkKICAgICBpZiByZWN1cnNpdmUgYW5kIF9pc3JlY3Vyc2l2ZShwYXRobmFtZSk6CiAgICAgICAgIHMgPSBuZXh0KGl0KSAgIyBza2lwIGVtcHR5IHN0cmluZwogICAgICAgICBhc3NlcnQgbm90IHMKICAgICByZXR1cm4gaXQKIAotZGVmIF9pZ2xvYihwYXRobmFtZSwgcmVjdXJzaXZlKToKK2RlZiBfaWdsb2IocGF0aG5hbWUsIHJlY3Vyc2l2ZSwgZGlyb25seSk6CiAgICAgZGlybmFtZSwgYmFzZW5hbWUgPSBvcy5wYXRoLnNwbGl0KHBhdGhuYW1lKQogICAgIGlmIG5vdCBoYXNfbWFnaWMocGF0aG5hbWUpOgorICAgICAgICBhc3NlcnQgbm90IGRpcm9ubHkKICAgICAgICAgaWYgYmFzZW5hbWU6CiAgICAgICAgICAgICBpZiBvcy5wYXRoLmxleGlzdHMocGF0aG5hbWUpOgogICAgICAgICAgICAgICAgIHlpZWxkIHBhdGhuYW1lCkBAIC00OSw0NyArNTAsMzkgQEAKICAgICAgICAgcmV0dXJuCiAgICAgaWYgbm90IGRpcm5hbWU6CiAgICAgICAgIGlmIHJlY3Vyc2l2ZSBhbmQgX2lzcmVjdXJzaXZlKGJhc2VuYW1lKToKLSAgICAgICAgICAgIHlpZWxkIGZyb20gZ2xvYjIoZGlybmFtZSwgYmFzZW5hbWUpCisgICAgICAgICAgICB5aWVsZCBmcm9tIF9nbG9iMihkaXJuYW1lLCBiYXNlbmFtZSwgZGlyb25seSkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHlpZWxkIGZyb20gZ2xvYjEoZGlybmFtZSwgYmFzZW5hbWUpCisgICAgICAgICAgICB5aWVsZCBmcm9tIF9nbG9iMShkaXJuYW1lLCBiYXNlbmFtZSwgZGlyb25seSkKICAgICAgICAgcmV0dXJuCiAgICAgIyBgb3MucGF0aC5zcGxpdCgpYCByZXR1cm5zIHRoZSBhcmd1bWVudCBpdHNlbGYgYXMgYSBkaXJuYW1lIGlmIGl0IGlzIGEKICAgICAjIGRyaXZlIG9yIFVOQyBwYXRoLiAgUHJldmVudCBhbiBpbmZpbml0ZSByZWN1cnNpb24gaWYgYSBkcml2ZSBvciBVTkMgcGF0aAogICAgICMgY29udGFpbnMgbWFnaWMgY2hhcmFjdGVycyAoaS5lLiByJ1xcP1xDOicpLgogICAgIGlmIGRpcm5hbWUgIT0gcGF0aG5hbWUgYW5kIGhhc19tYWdpYyhkaXJuYW1lKToKLSAgICAgICAgZGlycyA9IF9pZ2xvYihkaXJuYW1lLCByZWN1cnNpdmUpCisgICAgICAgIGRpcnMgPSBfaWdsb2IoZGlybmFtZSwgcmVjdXJzaXZlLCBUcnVlKQogICAgIGVsc2U6CiAgICAgICAgIGRpcnMgPSBbZGlybmFtZV0KICAgICBpZiBoYXNfbWFnaWMoYmFzZW5hbWUpOgogICAgICAgICBpZiByZWN1cnNpdmUgYW5kIF9pc3JlY3Vyc2l2ZShiYXNlbmFtZSk6Ci0gICAgICAgICAgICBnbG9iX2luX2RpciA9IGdsb2IyCisgICAgICAgICAgICBnbG9iX2luX2RpciA9IF9nbG9iMgogICAgICAgICBlbHNlOgotICAgICAgICAgICAgZ2xvYl9pbl9kaXIgPSBnbG9iMQorICAgICAgICAgICAgZ2xvYl9pbl9kaXIgPSBfZ2xvYjEKICAgICBlbHNlOgotICAgICAgICBnbG9iX2luX2RpciA9IGdsb2IwCisgICAgICAgIGdsb2JfaW5fZGlyID0gX2dsb2IwCiAgICAgZm9yIGRpcm5hbWUgaW4gZGlyczoKLSAgICAgICAgZm9yIG5hbWUgaW4gZ2xvYl9pbl9kaXIoZGlybmFtZSwgYmFzZW5hbWUpOgorICAgICAgICBmb3IgbmFtZSBpbiBnbG9iX2luX2RpcihkaXJuYW1lLCBiYXNlbmFtZSwgZGlyb25seSk6CiAgICAgICAgICAgICB5aWVsZCBvcy5wYXRoLmpvaW4oZGlybmFtZSwgbmFtZSkKIAogIyBUaGVzZSAyIGhlbHBlciBmdW5jdGlvbnMgbm9uLXJlY3Vyc2l2ZWx5IGdsb2IgaW5zaWRlIGEgbGl0ZXJhbCBkaXJlY3RvcnkuCi0jIFRoZXkgcmV0dXJuIGEgbGlzdCBvZiBiYXNlbmFtZXMuIGBnbG9iMWAgYWNjZXB0cyBhIHBhdHRlcm4gd2hpbGUgYGdsb2IwYAorIyBUaGV5IHJldHVybiBhIGxpc3Qgb2YgYmFzZW5hbWVzLiAgX2dsb2IxIGFjY2VwdHMgYSBwYXR0ZXJuIHdoaWxlIF9nbG9iMAogIyB0YWtlcyBhIGxpdGVyYWwgYmFzZW5hbWUgKHNvIGl0IG9ubHkgaGFzIHRvIGNoZWNrIGZvciBpdHMgZXhpc3RlbmNlKS4KIAotZGVmIGdsb2IxKGRpcm5hbWUsIHBhdHRlcm4pOgotICAgIGlmIG5vdCBkaXJuYW1lOgotICAgICAgICBpZiBpc2luc3RhbmNlKHBhdHRlcm4sIGJ5dGVzKToKLSAgICAgICAgICAgIGRpcm5hbWUgPSBieXRlcyhvcy5jdXJkaXIsICdBU0NJSScpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBkaXJuYW1lID0gb3MuY3VyZGlyCi0gICAgdHJ5OgotICAgICAgICBuYW1lcyA9IG9zLmxpc3RkaXIoZGlybmFtZSkKLSAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgcmV0dXJuIFtdCitkZWYgX2dsb2IxKGRpcm5hbWUsIHBhdHRlcm4sIGRpcm9ubHkpOgorICAgIG5hbWVzID0gbGlzdChfaXRlcmRpcihkaXJuYW1lLCBkaXJvbmx5KSkKICAgICBpZiBub3QgX2lzaGlkZGVuKHBhdHRlcm4pOgotICAgICAgICBuYW1lcyA9IFt4IGZvciB4IGluIG5hbWVzIGlmIG5vdCBfaXNoaWRkZW4oeCldCisgICAgICAgIG5hbWVzID0gKHggZm9yIHggaW4gbmFtZXMgaWYgbm90IF9pc2hpZGRlbih4KSkKICAgICByZXR1cm4gZm5tYXRjaC5maWx0ZXIobmFtZXMsIHBhdHRlcm4pCiAKLWRlZiBnbG9iMChkaXJuYW1lLCBiYXNlbmFtZSk6CitkZWYgX2dsb2IwKGRpcm5hbWUsIGJhc2VuYW1lLCBkaXJvbmx5KToKICAgICBpZiBub3QgYmFzZW5hbWU6CiAgICAgICAgICMgYG9zLnBhdGguc3BsaXQoKWAgcmV0dXJucyBhbiBlbXB0eSBiYXNlbmFtZSBmb3IgcGF0aHMgZW5kaW5nIHdpdGggYQogICAgICAgICAjIGRpcmVjdG9yeSBzZXBhcmF0b3IuICAncSp4Lycgc2hvdWxkIG1hdGNoIG9ubHkgZGlyZWN0b3JpZXMuCkBAIC0xMDAsMzAgKzkzLDQ5IEBACiAgICAgICAgICAgICByZXR1cm4gW2Jhc2VuYW1lXQogICAgIHJldHVybiBbXQogCisjIEZvbGxvd2luZyBmdW5jdGlvbnMgYXJlIG5vdCBwdWJsaWMgYnV0IGNhbiBiZSB1c2VkIGJ5IHRoaXJkLXBhcnR5IGNvZGUuCisKK2RlZiBnbG9iMChkaXJuYW1lLCBwYXR0ZXJuKToKKyAgICByZXR1cm4gX2dsb2IwKGRpcm5hbWUsIHBhdHRlcm4sIEZhbHNlKQorCitkZWYgZ2xvYjEoZGlybmFtZSwgcGF0dGVybik6CisgICAgcmV0dXJuIF9nbG9iMShkaXJuYW1lLCBwYXR0ZXJuLCBGYWxzZSkKKwogIyBUaGlzIGhlbHBlciBmdW5jdGlvbiByZWN1cnNpdmVseSB5aWVsZHMgcmVsYXRpdmUgcGF0aG5hbWVzIGluc2lkZSBhIGxpdGVyYWwKICMgZGlyZWN0b3J5LgogCi1kZWYgZ2xvYjIoZGlybmFtZSwgcGF0dGVybik6CitkZWYgX2dsb2IyKGRpcm5hbWUsIHBhdHRlcm4sIGRpcm9ubHkpOgogICAgIGFzc2VydCBfaXNyZWN1cnNpdmUocGF0dGVybikKICAgICB5aWVsZCBwYXR0ZXJuWzowXQotICAgIHlpZWxkIGZyb20gX3JsaXN0ZGlyKGRpcm5hbWUpCisgICAgeWllbGQgZnJvbSBfcmxpc3RkaXIoZGlybmFtZSwgZGlyb25seSkKIAotIyBSZWN1cnNpdmVseSB5aWVsZHMgcmVsYXRpdmUgcGF0aG5hbWVzIGluc2lkZSBhIGxpdGVyYWwgZGlyZWN0b3J5LgotZGVmIF9ybGlzdGRpcihkaXJuYW1lKToKKyMgSWYgZGlyb25seSBpcyBmYWxzZSwgeWllbGRzIGFsbCBmaWxlIG5hbWVzIGluc2lkZSBhIGRpcmVjdG9yeS4KKyMgSWYgZGlyb25seSBpcyB0cnVlLCB5aWVsZHMgb25seSBkaXJlY3RvcnkgbmFtZXMuCitkZWYgX2l0ZXJkaXIoZGlybmFtZSwgZGlyb25seSk6CiAgICAgaWYgbm90IGRpcm5hbWU6CiAgICAgICAgIGlmIGlzaW5zdGFuY2UoZGlybmFtZSwgYnl0ZXMpOgogICAgICAgICAgICAgZGlybmFtZSA9IGJ5dGVzKG9zLmN1cmRpciwgJ0FTQ0lJJykKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGRpcm5hbWUgPSBvcy5jdXJkaXIKICAgICB0cnk6Ci0gICAgICAgIG5hbWVzID0gb3MubGlzdGRpcihkaXJuYW1lKQotICAgIGV4Y2VwdCBvcy5lcnJvcjoKKyAgICAgICAgd2l0aCBvcy5zY2FuZGlyKGRpcm5hbWUpIGFzIGl0OgorICAgICAgICAgICAgZm9yIGVudHJ5IGluIGl0OgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGRpcm9ubHkgb3IgZW50cnkuaXNfZGlyKCk6CisgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBlbnRyeS5uYW1lCisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgcmV0dXJuCisKKyMgUmVjdXJzaXZlbHkgeWllbGRzIHJlbGF0aXZlIHBhdGhuYW1lcyBpbnNpZGUgYSBsaXRlcmFsIGRpcmVjdG9yeS4KK2RlZiBfcmxpc3RkaXIoZGlybmFtZSwgZGlyb25seSk6CisgICAgbmFtZXMgPSBsaXN0KF9pdGVyZGlyKGRpcm5hbWUsIGRpcm9ubHkpKQogICAgIGZvciB4IGluIG5hbWVzOgogICAgICAgICBpZiBub3QgX2lzaGlkZGVuKHgpOgogICAgICAgICAgICAgeWllbGQgeAogICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihkaXJuYW1lLCB4KSBpZiBkaXJuYW1lIGVsc2UgeAotICAgICAgICAgICAgZm9yIHkgaW4gX3JsaXN0ZGlyKHBhdGgpOgorICAgICAgICAgICAgZm9yIHkgaW4gX3JsaXN0ZGlyKHBhdGgsIGRpcm9ubHkpOgogICAgICAgICAgICAgICAgIHlpZWxkIG9zLnBhdGguam9pbih4LCB5KQogCiAKZGlmZiAtLWdpdCBhL0xpYi9nemlwLnB5IGIvTGliL2d6aXAucHkKaW5kZXggZGE0NDc5ZS4uNzZhYjQ5NyAxMDA2NDQKLS0tIGEvTGliL2d6aXAucHkKKysrIGIvTGliL2d6aXAucHkKQEAgLTQ5LDcgKzQ5LDcgQEAKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkFyZ3VtZW50ICduZXdsaW5lJyBub3Qgc3VwcG9ydGVkIGluIGJpbmFyeSBtb2RlIikKIAogICAgIGd6X21vZGUgPSBtb2RlLnJlcGxhY2UoInQiLCAiIikKLSAgICBpZiBpc2luc3RhbmNlKGZpbGVuYW1lLCAoc3RyLCBieXRlcykpOgorICAgIGlmIGlzaW5zdGFuY2UoZmlsZW5hbWUsIChzdHIsIGJ5dGVzLCBvcy5QYXRoTGlrZSkpOgogICAgICAgICBiaW5hcnlfZmlsZSA9IEd6aXBGaWxlKGZpbGVuYW1lLCBnel9tb2RlLCBjb21wcmVzc2xldmVsKQogICAgIGVsaWYgaGFzYXR0cihmaWxlbmFtZSwgInJlYWQiKSBvciBoYXNhdHRyKGZpbGVuYW1lLCAid3JpdGUiKToKICAgICAgICAgYmluYXJ5X2ZpbGUgPSBHemlwRmlsZShOb25lLCBnel9tb2RlLCBjb21wcmVzc2xldmVsLCBmaWxlbmFtZSkKQEAgLTE2NSw2ICsxNjUsOCBAQAogICAgICAgICAgICAgZmlsZW5hbWUgPSBnZXRhdHRyKGZpbGVvYmosICduYW1lJywgJycpCiAgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShmaWxlbmFtZSwgKHN0ciwgYnl0ZXMpKToKICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9ICcnCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBmaWxlbmFtZSA9IG9zLmZzcGF0aChmaWxlbmFtZSkKICAgICAgICAgaWYgbW9kZSBpcyBOb25lOgogICAgICAgICAgICAgbW9kZSA9IGdldGF0dHIoZmlsZW9iaiwgJ21vZGUnLCAncmInKQogCkBAIC0zNTcsMTAgKzM1OSwxMCBAQAogICAgICAgICAgICAgaWYgb2Zmc2V0IDwgc2VsZi5vZmZzZXQ6CiAgICAgICAgICAgICAgICAgcmFpc2UgT1NFcnJvcignTmVnYXRpdmUgc2VlayBpbiB3cml0ZSBtb2RlJykKICAgICAgICAgICAgIGNvdW50ID0gb2Zmc2V0IC0gc2VsZi5vZmZzZXQKLSAgICAgICAgICAgIGNodW5rID0gYnl0ZXMoMTAyNCkKKyAgICAgICAgICAgIGNodW5rID0gYidcMCcgKiAxMDI0CiAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShjb3VudCAvLyAxMDI0KToKICAgICAgICAgICAgICAgICBzZWxmLndyaXRlKGNodW5rKQotICAgICAgICAgICAgc2VsZi53cml0ZShieXRlcyhjb3VudCAlIDEwMjQpKQorICAgICAgICAgICAgc2VsZi53cml0ZShiJ1wwJyAqIChjb3VudCAlIDEwMjQpKQogICAgICAgICBlbGlmIHNlbGYubW9kZSA9PSBSRUFEOgogICAgICAgICAgICAgc2VsZi5fY2hlY2tfbm90X2Nsb3NlZCgpCiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fYnVmZmVyLnNlZWsob2Zmc2V0LCB3aGVuY2UpCmRpZmYgLS1naXQgYS9MaWIvaGFzaGxpYi5weSBiL0xpYi9oYXNobGliLnB5CmluZGV4IDMxNmNlY2UuLjA1M2E3YWQgMTAwNjQ0Ci0tLSBhL0xpYi9oYXNobGliLnB5CisrKyBiL0xpYi9oYXNobGliLnB5CkBAIC00LDE0ICs0LDE1IEBACiAKIF9fZG9jX18gPSAiIiJoYXNobGliIG1vZHVsZSAtIEEgY29tbW9uIGludGVyZmFjZSB0byBtYW55IGhhc2ggZnVuY3Rpb25zLgogCi1uZXcobmFtZSwgZGF0YT1iJycpIC0gcmV0dXJucyBhIG5ldyBoYXNoIG9iamVjdCBpbXBsZW1lbnRpbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgZ2l2ZW4gaGFzaCBmdW5jdGlvbjsgaW5pdGlhbGl6aW5nIHRoZSBoYXNoCi0gICAgICAgICAgICAgICAgICAgICAgdXNpbmcgdGhlIGdpdmVuIGJpbmFyeSBkYXRhLgorbmV3KG5hbWUsIGRhdGE9YicnLCAqKmt3YXJncykgLSByZXR1cm5zIGEgbmV3IGhhc2ggb2JqZWN0IGltcGxlbWVudGluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2l2ZW4gaGFzaCBmdW5jdGlvbjsgaW5pdGlhbGl6aW5nIHRoZSBoYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nIHRoZSBnaXZlbiBiaW5hcnkgZGF0YS4KIAogTmFtZWQgY29uc3RydWN0b3IgZnVuY3Rpb25zIGFyZSBhbHNvIGF2YWlsYWJsZSwgdGhlc2UgYXJlIGZhc3RlcgogdGhhbiB1c2luZyBuZXcobmFtZSk6CiAKLW1kNSgpLCBzaGExKCksIHNoYTIyNCgpLCBzaGEyNTYoKSwgc2hhMzg0KCksIGFuZCBzaGE1MTIoKQorbWQ1KCksIHNoYTEoKSwgc2hhMjI0KCksIHNoYTI1NigpLCBzaGEzODQoKSwgc2hhNTEyKCksIGJsYWtlMmIoKSwgYmxha2UycygpLAorc2hhM18yMjQsIHNoYTNfMjU2LCBzaGEzXzM4NCwgc2hhM181MTIsIHNoYWtlXzEyOCwgYW5kIHNoYWtlXzI1Ni4KIAogTW9yZSBhbGdvcml0aG1zIG1heSBiZSBhdmFpbGFibGUgb24geW91ciBwbGF0Zm9ybSBidXQgdGhlIGFib3ZlIGFyZSBndWFyYW50ZWVkCiB0byBleGlzdC4gIFNlZSB0aGUgYWxnb3JpdGhtc19ndWFyYW50ZWVkIGFuZCBhbGdvcml0aG1zX2F2YWlsYWJsZSBhdHRyaWJ1dGVzCkBAIC01NCw3ICs1NSwxMSBAQAogCiAjIFRoaXMgdHVwbGUgYW5kIF9fZ2V0X2J1aWx0aW5fY29uc3RydWN0b3IoKSBtdXN0IGJlIG1vZGlmaWVkIGlmIGEgbmV3CiAjIGFsd2F5cyBhdmFpbGFibGUgYWxnb3JpdGhtIGlzIGFkZGVkLgotX19hbHdheXNfc3VwcG9ydGVkID0gKCdtZDUnLCAnc2hhMScsICdzaGEyMjQnLCAnc2hhMjU2JywgJ3NoYTM4NCcsICdzaGE1MTInKQorX19hbHdheXNfc3VwcG9ydGVkID0gKCdtZDUnLCAnc2hhMScsICdzaGEyMjQnLCAnc2hhMjU2JywgJ3NoYTM4NCcsICdzaGE1MTInLAorICAgICAgICAgICAgICAgICAgICAgICdibGFrZTJiJywgJ2JsYWtlMnMnLAorICAgICAgICAgICAgICAgICAgICAgICdzaGEzXzIyNCcsICdzaGEzXzI1NicsICdzaGEzXzM4NCcsICdzaGEzXzUxMicsCisgICAgICAgICAgICAgICAgICAgICAgJ3NoYWtlXzEyOCcsICdzaGFrZV8yNTYnKQorCiAKIGFsZ29yaXRobXNfZ3VhcmFudGVlZCA9IHNldChfX2Fsd2F5c19zdXBwb3J0ZWQpCiBhbGdvcml0aG1zX2F2YWlsYWJsZSA9IHNldChfX2Fsd2F5c19zdXBwb3J0ZWQpCkBAIC04NSw2ICs5MCwxOSBAQAogICAgICAgICAgICAgaW1wb3J0IF9zaGE1MTIKICAgICAgICAgICAgIGNhY2hlWydTSEEzODQnXSA9IGNhY2hlWydzaGEzODQnXSA9IF9zaGE1MTIuc2hhMzg0CiAgICAgICAgICAgICBjYWNoZVsnU0hBNTEyJ10gPSBjYWNoZVsnc2hhNTEyJ10gPSBfc2hhNTEyLnNoYTUxMgorICAgICAgICBlbGlmIG5hbWUgaW4gKCdibGFrZTJiJywgJ2JsYWtlMnMnKToKKyAgICAgICAgICAgIGltcG9ydCBfYmxha2UyCisgICAgICAgICAgICBjYWNoZVsnYmxha2UyYiddID0gX2JsYWtlMi5ibGFrZTJiCisgICAgICAgICAgICBjYWNoZVsnYmxha2UycyddID0gX2JsYWtlMi5ibGFrZTJzCisgICAgICAgIGVsaWYgbmFtZSBpbiB7J3NoYTNfMjI0JywgJ3NoYTNfMjU2JywgJ3NoYTNfMzg0JywgJ3NoYTNfNTEyJywKKyAgICAgICAgICAgICAgICAgICAgICAnc2hha2VfMTI4JywgJ3NoYWtlXzI1Nid9OgorICAgICAgICAgICAgaW1wb3J0IF9zaGEzCisgICAgICAgICAgICBjYWNoZVsnc2hhM18yMjQnXSA9IF9zaGEzLnNoYTNfMjI0CisgICAgICAgICAgICBjYWNoZVsnc2hhM18yNTYnXSA9IF9zaGEzLnNoYTNfMjU2CisgICAgICAgICAgICBjYWNoZVsnc2hhM18zODQnXSA9IF9zaGEzLnNoYTNfMzg0CisgICAgICAgICAgICBjYWNoZVsnc2hhM181MTInXSA9IF9zaGEzLnNoYTNfNTEyCisgICAgICAgICAgICBjYWNoZVsnc2hha2VfMTI4J10gPSBfc2hhMy5zaGFrZV8xMjgKKyAgICAgICAgICAgIGNhY2hlWydzaGFrZV8yNTYnXSA9IF9zaGEzLnNoYWtlXzI1NgogICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgcGFzcyAgIyBubyBleHRlbnNpb24gbW9kdWxlLCB0aGlzIGhhc2ggaXMgdW5zdXBwb3J0ZWQuCiAKQEAgLTk2LDYgKzExNCw5IEBACiAKIAogZGVmIF9fZ2V0X29wZW5zc2xfY29uc3RydWN0b3IobmFtZSk6CisgICAgaWYgbmFtZSBpbiB7J2JsYWtlMmInLCAnYmxha2Uycyd9OgorICAgICAgICAjIFByZWZlciBvdXIgYmxha2UyIGltcGxlbWVudGF0aW9uLgorICAgICAgICByZXR1cm4gX19nZXRfYnVpbHRpbl9jb25zdHJ1Y3RvcihuYW1lKQogICAgIHRyeToKICAgICAgICAgZiA9IGdldGF0dHIoX2hhc2hsaWIsICdvcGVuc3NsXycgKyBuYW1lKQogICAgICAgICAjIEFsbG93IHRoZSBDIG1vZHVsZSB0byByYWlzZSBWYWx1ZUVycm9yLiAgVGhlIGZ1bmN0aW9uIHdpbGwgYmUKQEAgLTEwNywxNyArMTI4LDIzIEBACiAgICAgICAgIHJldHVybiBfX2dldF9idWlsdGluX2NvbnN0cnVjdG9yKG5hbWUpCiAKIAotZGVmIF9fcHlfbmV3KG5hbWUsIGRhdGE9YicnKToKK2RlZiBfX3B5X25ldyhuYW1lLCBkYXRhPWInJywgKiprd2FyZ3MpOgorICAgICIiIm5ldyhuYW1lLCBkYXRhPWInJywgKiprd2FyZ3MpIC0gUmV0dXJuIGEgbmV3IGhhc2hpbmcgb2JqZWN0IHVzaW5nIHRoZQorICAgIG5hbWVkIGFsZ29yaXRobTsgb3B0aW9uYWxseSBpbml0aWFsaXplZCB3aXRoIGRhdGEgKHdoaWNoIG11c3QgYmUgYnl0ZXMpLgorICAgICIiIgorICAgIHJldHVybiBfX2dldF9idWlsdGluX2NvbnN0cnVjdG9yKG5hbWUpKGRhdGEsICoqa3dhcmdzKQorCisKK2RlZiBfX2hhc2hfbmV3KG5hbWUsIGRhdGE9YicnLCAqKmt3YXJncyk6CiAgICAgIiIibmV3KG5hbWUsIGRhdGE9YicnKSAtIFJldHVybiBhIG5ldyBoYXNoaW5nIG9iamVjdCB1c2luZyB0aGUgbmFtZWQgYWxnb3JpdGhtOwogICAgIG9wdGlvbmFsbHkgaW5pdGlhbGl6ZWQgd2l0aCBkYXRhICh3aGljaCBtdXN0IGJlIGJ5dGVzKS4KICAgICAiIiIKLSAgICByZXR1cm4gX19nZXRfYnVpbHRpbl9jb25zdHJ1Y3RvcihuYW1lKShkYXRhKQotCi0KLWRlZiBfX2hhc2hfbmV3KG5hbWUsIGRhdGE9YicnKToKLSAgICAiIiJuZXcobmFtZSwgZGF0YT1iJycpIC0gUmV0dXJuIGEgbmV3IGhhc2hpbmcgb2JqZWN0IHVzaW5nIHRoZSBuYW1lZCBhbGdvcml0aG07Ci0gICAgb3B0aW9uYWxseSBpbml0aWFsaXplZCB3aXRoIGRhdGEgKHdoaWNoIG11c3QgYmUgYnl0ZXMpLgotICAgICIiIgorICAgIGlmIG5hbWUgaW4geydibGFrZTJiJywgJ2JsYWtlMnMnfToKKyAgICAgICAgIyBQcmVmZXIgb3VyIGJsYWtlMiBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgIyBPcGVuU1NMIDEuMS4wIGNvbWVzIHdpdGggYSBsaW1pdGVkIGltcGxlbWVudGF0aW9uIG9mIGJsYWtlMmIvcy4KKyAgICAgICAgIyBJdCBkb2VzIG5laXRoZXIgc3VwcG9ydCBrZXllZCBibGFrZTIgbm9yIGFkdmFuY2VkIGZlYXR1cmVzIGxpa2UKKyAgICAgICAgIyBzYWx0LCBwZXJzb25hbCwgdHJlZSBoYXNoaW5nIG9yIFNTRS4KKyAgICAgICAgcmV0dXJuIF9fZ2V0X2J1aWx0aW5fY29uc3RydWN0b3IobmFtZSkoZGF0YSwgKiprd2FyZ3MpCiAgICAgdHJ5OgogICAgICAgICByZXR1cm4gX2hhc2hsaWIubmV3KG5hbWUsIGRhdGEpCiAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CkBAIC0yMDIsNiArMjI5LDEyIEBACiAKICAgICAgICAgcmV0dXJuIGRrZXlbOmRrbGVuXQogCit0cnk6CisgICAgIyBPcGVuU1NMJ3Mgc2NyeXB0IHJlcXVpcmVzIE9wZW5TU0wgMS4xKworICAgIGZyb20gX2hhc2hsaWIgaW1wb3J0IHNjcnlwdAorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHBhc3MKKwogCiBmb3IgX19mdW5jX25hbWUgaW4gX19hbHdheXNfc3VwcG9ydGVkOgogICAgICMgdHJ5IHRoZW0gYWxsLCBzb21lIG1heSBub3Qgd29yayBkdWUgdG8gdGhlIE9wZW5TU0wKQEAgLTIxMiw2ICsyNDUsNyBAQAogICAgICAgICBpbXBvcnQgbG9nZ2luZwogICAgICAgICBsb2dnaW5nLmV4Y2VwdGlvbignY29kZSBmb3IgaGFzaCAlcyB3YXMgbm90IGZvdW5kLicsIF9fZnVuY19uYW1lKQogCisKICMgQ2xlYW51cCBsb2NhbHMoKQogZGVsIF9fYWx3YXlzX3N1cHBvcnRlZCwgX19mdW5jX25hbWUsIF9fZ2V0X2hhc2gKIGRlbCBfX3B5X25ldywgX19oYXNoX25ldywgX19nZXRfb3BlbnNzbF9jb25zdHJ1Y3RvcgpkaWZmIC0tZ2l0IGEvTGliL2htYWMucHkgYi9MaWIvaG1hYy5weQppbmRleCA3Nzc4NWEyLi4xMjEwMjlhIDEwMDY0NAotLS0gYS9MaWIvaG1hYy5weQorKysgYi9MaWIvaG1hYy5weQpAQCAtNzcsNyArNzcsNyBAQAogICAgICAgICBpZiBsZW4oa2V5KSA+IGJsb2Nrc2l6ZToKICAgICAgICAgICAgIGtleSA9IHNlbGYuZGlnZXN0X2NvbnMoa2V5KS5kaWdlc3QoKQogCi0gICAgICAgIGtleSA9IGtleSArIGJ5dGVzKGJsb2Nrc2l6ZSAtIGxlbihrZXkpKQorICAgICAgICBrZXkgPSBrZXkubGp1c3QoYmxvY2tzaXplLCBiJ1wwJykKICAgICAgICAgc2VsZi5vdXRlci51cGRhdGUoa2V5LnRyYW5zbGF0ZSh0cmFuc181QykpCiAgICAgICAgIHNlbGYuaW5uZXIudXBkYXRlKGtleS50cmFuc2xhdGUodHJhbnNfMzYpKQogICAgICAgICBpZiBtc2cgaXMgbm90IE5vbmU6CmRpZmYgLS1naXQgYS9MaWIvaHRtbC9wYXJzZXIucHkgYi9MaWIvaHRtbC9wYXJzZXIucHkKaW5kZXggYjc4MWM2My4uZWY4NjliYyAxMDA2NDQKLS0tIGEvTGliL2h0bWwvcGFyc2VyLnB5CisrKyBiL0xpYi9odG1sL3BhcnNlci5weQpAQCAtMzQsNyArMzQsNyBAQAogIyAgICAgZXhwbG9kZSwgc28gZG9uJ3QgZG8gaXQuCiAjIHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS90b2tlbml6YXRpb24uaHRtbCN0YWctb3Blbi1zdGF0ZQogIyBhbmQgaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUvdG9rZW5pemF0aW9uLmh0bWwjdGFnLW5hbWUtc3RhdGUKLXRhZ2ZpbmRfdG9sZXJhbnQgPSByZS5jb21waWxlKCcoW2EtekEtWl1bXlx0XG5cclxmIC8+XHgwMF0qKSg/OlxzfC8oPyE+KSkqJykKK3RhZ2ZpbmRfdG9sZXJhbnQgPSByZS5jb21waWxlKHInKFthLXpBLVpdW15cdFxuXHJcZiAvPlx4MDBdKikoPzpcc3wvKD8hPikpKicpCiBhdHRyZmluZF90b2xlcmFudCA9IHJlLmNvbXBpbGUoCiAgICAgcicoKD88PVtcJyJccy9dKVteXHMvPl1bXlxzLz0+XSopKFxzKj0rXHMqJwogICAgIHInKFwnW15cJ10qXCd8IlteIl0qInwoPyFbXCciXSlbXj5cc10qKSk/KD86XHN8Lyg/IT4pKSonKQpAQCAtNTYsNyArNTYsNyBAQAogZW5kZW5kdGFnID0gcmUuY29tcGlsZSgnPicpCiAjIHRoZSBIVE1MIDUgc3BlYywgc2VjdGlvbiA4LjEuMi4yLCBkb2Vzbid0IGFsbG93IHNwYWNlcyBiZXR3ZWVuCiAjIDwvIGFuZCB0aGUgdGFnIG5hbWUsIHNvIG1heWJlIHRoaXMgc2hvdWxkIGJlIGZpeGVkCi1lbmR0YWdmaW5kID0gcmUuY29tcGlsZSgnPC9ccyooW2EtekEtWl1bLS5hLXpBLVowLTk6X10qKVxzKj4nKQorZW5kdGFnZmluZCA9IHJlLmNvbXBpbGUocic8L1xzKihbYS16QS1aXVstLmEtekEtWjAtOTpfXSopXHMqPicpCiAKIAogCmRpZmYgLS1naXQgYS9MaWIvaHR0cC9jbGllbnQucHkgYi9MaWIvaHR0cC9jbGllbnQucHkKaW5kZXggMzUyYzEwMS4uYThlNTliOSAxMDA2NDQKLS0tIGEvTGliL2h0dHAvY2xpZW50LnB5CisrKyBiL0xpYi9odHRwL2NsaWVudC5weQpAQCAtMSw0ICsxLDQgQEAKLSIiIkhUVFAvMS4xIGNsaWVudCBsaWJyYXJ5CityIiIiSFRUUC8xLjEgY2xpZW50IGxpYnJhcnkKIAogPGludHJvIHN0dWZmIGdvZXMgaGVyZT4KIDxvdGhlciBzdHVmZiwgdG9vPgpAQCAtNDIwLDYgKzQyMCw3IEBACiAgICAgICAgICAgICBzZWxmLmZwLmZsdXNoKCkKIAogICAgIGRlZiByZWFkYWJsZShzZWxmKToKKyAgICAgICAgIiIiQWx3YXlzIHJldHVybnMgVHJ1ZSIiIgogICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgIyBFbmQgb2YgInJhdyBzdHJlYW0iIG1ldGhvZHMKQEAgLTQ2Nyw2ICs0NjgsMTAgQEAKICAgICAgICAgICAgIHJldHVybiBzCiAKICAgICBkZWYgcmVhZGludG8oc2VsZiwgYik6CisgICAgICAgICIiIlJlYWQgdXAgdG8gbGVuKGIpIGJ5dGVzIGludG8gYnl0ZWFycmF5IGIgYW5kIHJldHVybiB0aGUgbnVtYmVyCisgICAgICAgIG9mIGJ5dGVzIHJlYWQuCisgICAgICAgICIiIgorCiAgICAgICAgIGlmIHNlbGYuZnAgaXMgTm9uZToKICAgICAgICAgICAgIHJldHVybiAwCiAKQEAgLTcwNiw2ICs3MTEsMTcgQEAKICAgICAgICAgcmV0dXJuIHNlbGYuZnAuZmlsZW5vKCkKIAogICAgIGRlZiBnZXRoZWFkZXIoc2VsZiwgbmFtZSwgZGVmYXVsdD1Ob25lKToKKyAgICAgICAgJycnUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIGhlYWRlciBtYXRjaGluZyAqbmFtZSouCisKKyAgICAgICAgSWYgdGhlcmUgYXJlIG11bHRpcGxlIG1hdGNoaW5nIGhlYWRlcnMsIHRoZSB2YWx1ZXMgYXJlCisgICAgICAgIGNvbWJpbmVkIGludG8gYSBzaW5nbGUgc3RyaW5nIHNlcGFyYXRlZCBieSBjb21tYXMgYW5kIHNwYWNlcy4KKworICAgICAgICBJZiBubyBtYXRjaGluZyBoZWFkZXIgaXMgZm91bmQsIHJldHVybnMgKmRlZmF1bHQqIG9yIE5vbmUgaWYKKyAgICAgICAgdGhlICpkZWZhdWx0KiBpcyBub3Qgc3BlY2lmaWVkLgorCisgICAgICAgIElmIHRoZSBoZWFkZXJzIGFyZSB1bmtub3duLCByYWlzZXMgaHR0cC5jbGllbnQuUmVzcG9uc2VOb3RSZWFkeS4KKworICAgICAgICAnJycKICAgICAgICAgaWYgc2VsZi5oZWFkZXJzIGlzIE5vbmU6CiAgICAgICAgICAgICByYWlzZSBSZXNwb25zZU5vdFJlYWR5KCkKICAgICAgICAgaGVhZGVycyA9IHNlbGYuaGVhZGVycy5nZXRfYWxsKG5hbWUpIG9yIGRlZmF1bHQKQEAgLTcyOCwxMiArNzQ0LDQ1IEBACiAgICAgIyBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIG9sZC1zdHlsZSB1cmxsaWIgcmVzcG9uc2VzLgogCiAgICAgZGVmIGluZm8oc2VsZik6CisgICAgICAgICcnJ1JldHVybnMgYW4gaW5zdGFuY2Ugb2YgdGhlIGNsYXNzIG1pbWV0b29scy5NZXNzYWdlIGNvbnRhaW5pbmcKKyAgICAgICAgbWV0YS1pbmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhlIFVSTC4KKworICAgICAgICBXaGVuIHRoZSBtZXRob2QgaXMgSFRUUCwgdGhlc2UgaGVhZGVycyBhcmUgdGhvc2UgcmV0dXJuZWQgYnkKKyAgICAgICAgdGhlIHNlcnZlciBhdCB0aGUgaGVhZCBvZiB0aGUgcmV0cmlldmVkIEhUTUwgcGFnZSAoaW5jbHVkaW5nCisgICAgICAgIENvbnRlbnQtTGVuZ3RoIGFuZCBDb250ZW50LVR5cGUpLgorCisgICAgICAgIFdoZW4gdGhlIG1ldGhvZCBpcyBGVFAsIGEgQ29udGVudC1MZW5ndGggaGVhZGVyIHdpbGwgYmUKKyAgICAgICAgcHJlc2VudCBpZiAoYXMgaXMgbm93IHVzdWFsKSB0aGUgc2VydmVyIHBhc3NlZCBiYWNrIGEgZmlsZQorICAgICAgICBsZW5ndGggaW4gcmVzcG9uc2UgdG8gdGhlIEZUUCByZXRyaWV2YWwgcmVxdWVzdC4gQQorICAgICAgICBDb250ZW50LVR5cGUgaGVhZGVyIHdpbGwgYmUgcHJlc2VudCBpZiB0aGUgTUlNRSB0eXBlIGNhbiBiZQorICAgICAgICBndWVzc2VkLgorCisgICAgICAgIFdoZW4gdGhlIG1ldGhvZCBpcyBsb2NhbC1maWxlLCByZXR1cm5lZCBoZWFkZXJzIHdpbGwgaW5jbHVkZQorICAgICAgICBhIERhdGUgcmVwcmVzZW50aW5nIHRoZSBmaWxlJ3MgbGFzdC1tb2RpZmllZCB0aW1lLCBhCisgICAgICAgIENvbnRlbnQtTGVuZ3RoIGdpdmluZyBmaWxlIHNpemUsIGFuZCBhIENvbnRlbnQtVHlwZQorICAgICAgICBjb250YWluaW5nIGEgZ3Vlc3MgYXQgdGhlIGZpbGUncyB0eXBlLiBTZWUgYWxzbyB0aGUKKyAgICAgICAgZGVzY3JpcHRpb24gb2YgdGhlIG1pbWV0b29scyBtb2R1bGUuCisKKyAgICAgICAgJycnCiAgICAgICAgIHJldHVybiBzZWxmLmhlYWRlcnMKIAogICAgIGRlZiBnZXR1cmwoc2VsZik6CisgICAgICAgICcnJ1JldHVybiB0aGUgcmVhbCBVUkwgb2YgdGhlIHBhZ2UuCisKKyAgICAgICAgSW4gc29tZSBjYXNlcywgdGhlIEhUVFAgc2VydmVyIHJlZGlyZWN0cyBhIGNsaWVudCB0byBhbm90aGVyCisgICAgICAgIFVSTC4gVGhlIHVybG9wZW4oKSBmdW5jdGlvbiBoYW5kbGVzIHRoaXMgdHJhbnNwYXJlbnRseSwgYnV0IGluCisgICAgICAgIHNvbWUgY2FzZXMgdGhlIGNhbGxlciBuZWVkcyB0byBrbm93IHdoaWNoIFVSTCB0aGUgY2xpZW50IHdhcworICAgICAgICByZWRpcmVjdGVkIHRvLiBUaGUgZ2V0dXJsKCkgbWV0aG9kIGNhbiBiZSB1c2VkIHRvIGdldCBhdCB0aGlzCisgICAgICAgIHJlZGlyZWN0ZWQgVVJMLgorCisgICAgICAgICcnJwogICAgICAgICByZXR1cm4gc2VsZi51cmwKIAogICAgIGRlZiBnZXRjb2RlKHNlbGYpOgorICAgICAgICAnJydSZXR1cm4gdGhlIEhUVFAgc3RhdHVzIGNvZGUgdGhhdCB3YXMgc2VudCB3aXRoIHRoZSByZXNwb25zZSwKKyAgICAgICAgb3IgTm9uZSBpZiB0aGUgVVJMIGlzIG5vdCBhbiBIVFRQIFVSTC4KKworICAgICAgICAnJycKICAgICAgICAgcmV0dXJuIHNlbGYuc3RhdHVzCiAKIGNsYXNzIEhUVFBDb25uZWN0aW9uOgpAQCAtNzQ2LDYgKzc5NSw0NCBAQAogICAgIGF1dG9fb3BlbiA9IDEKICAgICBkZWJ1Z2xldmVsID0gMAogCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBfaXNfdGV4dElPKHN0cmVhbSk6CisgICAgICAgICIiIlRlc3Qgd2hldGhlciBhIGZpbGUtbGlrZSBvYmplY3QgaXMgYSB0ZXh0IG9yIGEgYmluYXJ5IHN0cmVhbS4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBpc2luc3RhbmNlKHN0cmVhbSwgaW8uVGV4dElPQmFzZSkKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgX2dldF9jb250ZW50X2xlbmd0aChib2R5LCBtZXRob2QpOgorICAgICAgICAiIiJHZXQgdGhlIGNvbnRlbnQtbGVuZ3RoIGJhc2VkIG9uIHRoZSBib2R5LgorCisgICAgICAgIElmIHRoZSBib2R5IGlzIE5vbmUsIHdlIHNldCBDb250ZW50LUxlbmd0aDogMCBmb3IgbWV0aG9kcyB0aGF0IGV4cGVjdAorICAgICAgICBhIGJvZHkgKFJGQyA3MjMwLCBTZWN0aW9uIDMuMy4yKS4gV2UgYWxzbyBzZXQgdGhlIENvbnRlbnQtTGVuZ3RoIGZvcgorICAgICAgICBhbnkgbWV0aG9kIGlmIHRoZSBib2R5IGlzIGEgc3RyIG9yIGJ5dGVzLWxpa2Ugb2JqZWN0IGFuZCBub3QgYSBmaWxlLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgYm9keSBpcyBOb25lOgorICAgICAgICAgICAgIyBkbyBhbiBleHBsaWNpdCBjaGVjayBmb3Igbm90IE5vbmUgaGVyZSB0byBkaXN0aW5ndWlzaAorICAgICAgICAgICAgIyBiZXR3ZWVuIHVuc2V0IGFuZCBzZXQgYnV0IGVtcHR5CisgICAgICAgICAgICBpZiBtZXRob2QudXBwZXIoKSBpbiBfTUVUSE9EU19FWFBFQ1RJTkdfQk9EWToKKyAgICAgICAgICAgICAgICByZXR1cm4gMAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgIGlmIGhhc2F0dHIoYm9keSwgJ3JlYWQnKToKKyAgICAgICAgICAgICMgZmlsZS1saWtlIG9iamVjdC4KKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBkb2VzIGl0IGltcGxlbWVudCB0aGUgYnVmZmVyIHByb3RvY29sIChieXRlcywgYnl0ZWFycmF5LCBhcnJheSk/CisgICAgICAgICAgICBtdiA9IG1lbW9yeXZpZXcoYm9keSkKKyAgICAgICAgICAgIHJldHVybiBtdi5uYnl0ZXMKKyAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBpZiBpc2luc3RhbmNlKGJvZHksIHN0cik6CisgICAgICAgICAgICByZXR1cm4gbGVuKGJvZHkpCisKKyAgICAgICAgcmV0dXJuIE5vbmUKKwogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0PU5vbmUsIHRpbWVvdXQ9c29ja2V0Ll9HTE9CQUxfREVGQVVMVF9USU1FT1VULAogICAgICAgICAgICAgICAgICBzb3VyY2VfYWRkcmVzcz1Ob25lKToKICAgICAgICAgc2VsZi50aW1lb3V0ID0gdGltZW91dApAQCAtODg0LDE4ICs5NzEsOSBAQAogICAgICAgICBpZiBoYXNhdHRyKGRhdGEsICJyZWFkIikgOgogICAgICAgICAgICAgaWYgc2VsZi5kZWJ1Z2xldmVsID4gMDoKICAgICAgICAgICAgICAgICBwcmludCgic2VuZEluZyBhIHJlYWQoKWFibGUiKQotICAgICAgICAgICAgZW5jb2RlID0gRmFsc2UKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBtb2RlID0gZGF0YS5tb2RlCi0gICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICAgICAgIyBpby5CeXRlc0lPIGFuZCBvdGhlciBmaWxlLWxpa2Ugb2JqZWN0cyBkb24ndCBoYXZlIGEgYG1vZGVgCi0gICAgICAgICAgICAgICAgIyBhdHRyaWJ1dGUuCi0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBpZiAiYiIgbm90IGluIG1vZGU6Ci0gICAgICAgICAgICAgICAgICAgIGVuY29kZSA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5kZWJ1Z2xldmVsID4gMDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCJlbmNvZGluZyBmaWxlIHVzaW5nIGlzby04ODU5LTEiKQorICAgICAgICAgICAgZW5jb2RlID0gc2VsZi5faXNfdGV4dElPKGRhdGEpCisgICAgICAgICAgICBpZiBlbmNvZGUgYW5kIHNlbGYuZGVidWdsZXZlbCA+IDA6CisgICAgICAgICAgICAgICAgcHJpbnQoImVuY29kaW5nIGZpbGUgdXNpbmcgaXNvLTg4NTktMSIpCiAgICAgICAgICAgICB3aGlsZSAxOgogICAgICAgICAgICAgICAgIGRhdGFibG9jayA9IGRhdGEucmVhZChibG9ja3NpemUpCiAgICAgICAgICAgICAgICAgaWYgbm90IGRhdGFibG9jazoKQEAgLTkyMSw3ICs5OTksMjIgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuX2J1ZmZlci5hcHBlbmQocykKIAotICAgIGRlZiBfc2VuZF9vdXRwdXQoc2VsZiwgbWVzc2FnZV9ib2R5PU5vbmUpOgorICAgIGRlZiBfcmVhZF9yZWFkYWJsZShzZWxmLCByZWFkYWJsZSk6CisgICAgICAgIGJsb2Nrc2l6ZSA9IDgxOTIKKyAgICAgICAgaWYgc2VsZi5kZWJ1Z2xldmVsID4gMDoKKyAgICAgICAgICAgIHByaW50KCJzZW5kSW5nIGEgcmVhZCgpYWJsZSIpCisgICAgICAgIGVuY29kZSA9IHNlbGYuX2lzX3RleHRJTyhyZWFkYWJsZSkKKyAgICAgICAgaWYgZW5jb2RlIGFuZCBzZWxmLmRlYnVnbGV2ZWwgPiAwOgorICAgICAgICAgICAgcHJpbnQoImVuY29kaW5nIGZpbGUgdXNpbmcgaXNvLTg4NTktMSIpCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBkYXRhYmxvY2sgPSByZWFkYWJsZS5yZWFkKGJsb2Nrc2l6ZSkKKyAgICAgICAgICAgIGlmIG5vdCBkYXRhYmxvY2s6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGlmIGVuY29kZToKKyAgICAgICAgICAgICAgICBkYXRhYmxvY2sgPSBkYXRhYmxvY2suZW5jb2RlKCJpc28tODg1OS0xIikKKyAgICAgICAgICAgIHlpZWxkIGRhdGFibG9jaworCisgICAgZGVmIF9zZW5kX291dHB1dChzZWxmLCBtZXNzYWdlX2JvZHk9Tm9uZSwgZW5jb2RlX2NodW5rZWQ9RmFsc2UpOgogICAgICAgICAiIiJTZW5kIHRoZSBjdXJyZW50bHkgYnVmZmVyZWQgcmVxdWVzdCBhbmQgY2xlYXIgdGhlIGJ1ZmZlci4KIAogICAgICAgICBBcHBlbmRzIGFuIGV4dHJhIFxcclxcbiB0byB0aGUgYnVmZmVyLgpAQCAtOTMwLDEwICsxMDIzLDUwIEBACiAgICAgICAgIHNlbGYuX2J1ZmZlci5leHRlbmQoKGIiIiwgYiIiKSkKICAgICAgICAgbXNnID0gYiJcclxuIi5qb2luKHNlbGYuX2J1ZmZlcikKICAgICAgICAgZGVsIHNlbGYuX2J1ZmZlcls6XQotCiAgICAgICAgIHNlbGYuc2VuZChtc2cpCisKICAgICAgICAgaWYgbWVzc2FnZV9ib2R5IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2VsZi5zZW5kKG1lc3NhZ2VfYm9keSkKKworICAgICAgICAgICAgIyBjcmVhdGUgYSBjb25zaXN0ZW50IGludGVyZmFjZSB0byBtZXNzYWdlX2JvZHkKKyAgICAgICAgICAgIGlmIGhhc2F0dHIobWVzc2FnZV9ib2R5LCAncmVhZCcpOgorICAgICAgICAgICAgICAgICMgTGV0IGZpbGUtbGlrZSB0YWtlIHByZWNlZGVuY2Ugb3ZlciBieXRlLWxpa2UuICBUaGlzCisgICAgICAgICAgICAgICAgIyBpcyBuZWVkZWQgdG8gYWxsb3cgdGhlIGN1cnJlbnQgcG9zaXRpb24gb2YgbW1hcCdlZAorICAgICAgICAgICAgICAgICMgZmlsZXMgdG8gYmUgdGFrZW4gaW50byBhY2NvdW50LgorICAgICAgICAgICAgICAgIGNodW5rcyA9IHNlbGYuX3JlYWRfcmVhZGFibGUobWVzc2FnZV9ib2R5KQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICMgdGhpcyBpcyBzb2xlbHkgdG8gY2hlY2sgdG8gc2VlIGlmIG1lc3NhZ2VfYm9keQorICAgICAgICAgICAgICAgICAgICAjIGltcGxlbWVudHMgdGhlIGJ1ZmZlciBBUEkuICBpdCAvd291bGQvIGJlIGVhc2llcgorICAgICAgICAgICAgICAgICAgICAjIHRvIGNhcHR1cmUgaWYgUHlPYmplY3RfQ2hlY2tCdWZmZXIgd2FzIGV4cG9zZWQKKyAgICAgICAgICAgICAgICAgICAgIyB0byBQeXRob24uCisgICAgICAgICAgICAgICAgICAgIG1lbW9yeXZpZXcobWVzc2FnZV9ib2R5KQorICAgICAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rcyA9IGl0ZXIobWVzc2FnZV9ib2R5KQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgVHlwZUVycm9yOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJtZXNzYWdlX2JvZHkgc2hvdWxkIGJlIGEgYnl0ZXMtbGlrZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9iamVjdCBvciBhbiBpdGVyYWJsZSwgZ290ICVyIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgdHlwZShtZXNzYWdlX2JvZHkpKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICMgdGhlIG9iamVjdCBpbXBsZW1lbnRzIHRoZSBidWZmZXIgaW50ZXJmYWNlIGFuZAorICAgICAgICAgICAgICAgICAgICAjIGNhbiBiZSBwYXNzZWQgZGlyZWN0bHkgaW50byBzb2NrZXQgbWV0aG9kcworICAgICAgICAgICAgICAgICAgICBjaHVua3MgPSAobWVzc2FnZV9ib2R5LCkKKworICAgICAgICAgICAgZm9yIGNodW5rIGluIGNodW5rczoKKyAgICAgICAgICAgICAgICBpZiBub3QgY2h1bms6CisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuZGVidWdsZXZlbCA+IDA6CisgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgnWmVybyBsZW5ndGggY2h1bmsgaWdub3JlZCcpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBpZiBlbmNvZGVfY2h1bmtlZCBhbmQgc2VsZi5faHR0cF92c24gPT0gMTE6CisgICAgICAgICAgICAgICAgICAgICMgY2h1bmtlZCBlbmNvZGluZworICAgICAgICAgICAgICAgICAgICBjaHVuayA9IGYne2xlbihjaHVuayk6WH1cclxuJy5lbmNvZGUoJ2FzY2lpJykgKyBjaHVuayBcCisgICAgICAgICAgICAgICAgICAgICAgICArIGInXHJcbicKKyAgICAgICAgICAgICAgICBzZWxmLnNlbmQoY2h1bmspCisKKyAgICAgICAgICAgIGlmIGVuY29kZV9jaHVua2VkIGFuZCBzZWxmLl9odHRwX3ZzbiA9PSAxMToKKyAgICAgICAgICAgICAgICAjIGVuZCBjaHVua2VkIHRyYW5zZmVyCisgICAgICAgICAgICAgICAgc2VsZi5zZW5kKGInMFxyXG5cclxuJykKIAogICAgIGRlZiBwdXRyZXF1ZXN0KHNlbGYsIG1ldGhvZCwgdXJsLCBza2lwX2hvc3Q9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgc2tpcF9hY2NlcHRfZW5jb2Rpbmc9RmFsc2UpOgpAQCAtMTA4Nyw1MiArMTIyMCwyNyBAQAogICAgICAgICBoZWFkZXIgPSBoZWFkZXIgKyBiJzogJyArIHZhbHVlCiAgICAgICAgIHNlbGYuX291dHB1dChoZWFkZXIpCiAKLSAgICBkZWYgZW5kaGVhZGVycyhzZWxmLCBtZXNzYWdlX2JvZHk9Tm9uZSk6CisgICAgZGVmIGVuZGhlYWRlcnMoc2VsZiwgbWVzc2FnZV9ib2R5PU5vbmUsICosIGVuY29kZV9jaHVua2VkPUZhbHNlKToKICAgICAgICAgIiIiSW5kaWNhdGUgdGhhdCB0aGUgbGFzdCBoZWFkZXIgbGluZSBoYXMgYmVlbiBzZW50IHRvIHRoZSBzZXJ2ZXIuCiAKICAgICAgICAgVGhpcyBtZXRob2Qgc2VuZHMgdGhlIHJlcXVlc3QgdG8gdGhlIHNlcnZlci4gIFRoZSBvcHRpb25hbCBtZXNzYWdlX2JvZHkKICAgICAgICAgYXJndW1lbnQgY2FuIGJlIHVzZWQgdG8gcGFzcyBhIG1lc3NhZ2UgYm9keSBhc3NvY2lhdGVkIHdpdGggdGhlCi0gICAgICAgIHJlcXVlc3QuICBUaGUgbWVzc2FnZSBib2R5IHdpbGwgYmUgc2VudCBpbiB0aGUgc2FtZSBwYWNrZXQgYXMgdGhlCi0gICAgICAgIG1lc3NhZ2UgaGVhZGVycyBpZiBpdCBpcyBhIHN0cmluZywgb3RoZXJ3aXNlIGl0IGlzIHNlbnQgYXMgYSBzZXBhcmF0ZQotICAgICAgICBwYWNrZXQuCisgICAgICAgIHJlcXVlc3QuCiAgICAgICAgICIiIgogICAgICAgICBpZiBzZWxmLl9fc3RhdGUgPT0gX0NTX1JFUV9TVEFSVEVEOgogICAgICAgICAgICAgc2VsZi5fX3N0YXRlID0gX0NTX1JFUV9TRU5UCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByYWlzZSBDYW5ub3RTZW5kSGVhZGVyKCkKLSAgICAgICAgc2VsZi5fc2VuZF9vdXRwdXQobWVzc2FnZV9ib2R5KQorICAgICAgICBzZWxmLl9zZW5kX291dHB1dChtZXNzYWdlX2JvZHksIGVuY29kZV9jaHVua2VkPWVuY29kZV9jaHVua2VkKQogCi0gICAgZGVmIHJlcXVlc3Qoc2VsZiwgbWV0aG9kLCB1cmwsIGJvZHk9Tm9uZSwgaGVhZGVycz17fSk6CisgICAgZGVmIHJlcXVlc3Qoc2VsZiwgbWV0aG9kLCB1cmwsIGJvZHk9Tm9uZSwgaGVhZGVycz17fSwgKiwKKyAgICAgICAgICAgICAgICBlbmNvZGVfY2h1bmtlZD1GYWxzZSk6CiAgICAgICAgICIiIlNlbmQgYSBjb21wbGV0ZSByZXF1ZXN0IHRvIHRoZSBzZXJ2ZXIuIiIiCi0gICAgICAgIHNlbGYuX3NlbmRfcmVxdWVzdChtZXRob2QsIHVybCwgYm9keSwgaGVhZGVycykKKyAgICAgICAgc2VsZi5fc2VuZF9yZXF1ZXN0KG1ldGhvZCwgdXJsLCBib2R5LCBoZWFkZXJzLCBlbmNvZGVfY2h1bmtlZCkKIAotICAgIGRlZiBfc2V0X2NvbnRlbnRfbGVuZ3RoKHNlbGYsIGJvZHksIG1ldGhvZCk6Ci0gICAgICAgICMgU2V0IHRoZSBjb250ZW50LWxlbmd0aCBiYXNlZCBvbiB0aGUgYm9keS4gSWYgdGhlIGJvZHkgaXMgImVtcHR5Iiwgd2UKLSAgICAgICAgIyBzZXQgQ29udGVudC1MZW5ndGg6IDAgZm9yIG1ldGhvZHMgdGhhdCBleHBlY3QgYSBib2R5IChSRkMgNzIzMCwKLSAgICAgICAgIyBTZWN0aW9uIDMuMy4yKS4gSWYgdGhlIGJvZHkgaXMgc2V0IGZvciBvdGhlciBtZXRob2RzLCB3ZSBzZXQgdGhlCi0gICAgICAgICMgaGVhZGVyIHByb3ZpZGVkIHdlIGNhbiBmaWd1cmUgb3V0IHdoYXQgdGhlIGxlbmd0aCBpcy4KLSAgICAgICAgdGhlbGVuID0gTm9uZQotICAgICAgICBtZXRob2RfZXhwZWN0c19ib2R5ID0gbWV0aG9kLnVwcGVyKCkgaW4gX01FVEhPRFNfRVhQRUNUSU5HX0JPRFkKLSAgICAgICAgaWYgYm9keSBpcyBOb25lIGFuZCBtZXRob2RfZXhwZWN0c19ib2R5OgotICAgICAgICAgICAgdGhlbGVuID0gJzAnCi0gICAgICAgIGVsaWYgYm9keSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB0aGVsZW4gPSBzdHIobGVuKGJvZHkpKQotICAgICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKLSAgICAgICAgICAgICAgICAjIElmIHRoaXMgaXMgYSBmaWxlLWxpa2Ugb2JqZWN0LCB0cnkgdG8KLSAgICAgICAgICAgICAgICAjIGZzdGF0IGl0cyBmaWxlIGRlc2NyaXB0b3IKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHRoZWxlbiA9IHN0cihvcy5mc3RhdChib2R5LmZpbGVubygpKS5zdF9zaXplKQotICAgICAgICAgICAgICAgIGV4Y2VwdCAoQXR0cmlidXRlRXJyb3IsIE9TRXJyb3IpOgotICAgICAgICAgICAgICAgICAgICAjIERvbid0IHNlbmQgYSBsZW5ndGggaWYgdGhpcyBmYWlsZWQKLSAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5kZWJ1Z2xldmVsID4gMDogcHJpbnQoIkNhbm5vdCBzdGF0ISEiKQotCi0gICAgICAgIGlmIHRoZWxlbiBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYucHV0aGVhZGVyKCdDb250ZW50LUxlbmd0aCcsIHRoZWxlbikKLQotICAgIGRlZiBfc2VuZF9yZXF1ZXN0KHNlbGYsIG1ldGhvZCwgdXJsLCBib2R5LCBoZWFkZXJzKToKKyAgICBkZWYgX3NlbmRfcmVxdWVzdChzZWxmLCBtZXRob2QsIHVybCwgYm9keSwgaGVhZGVycywgZW5jb2RlX2NodW5rZWQpOgogICAgICAgICAjIEhvbm9yIGV4cGxpY2l0bHkgcmVxdWVzdGVkIEhvc3Q6IGFuZCBBY2NlcHQtRW5jb2Rpbmc6IGhlYWRlcnMuCi0gICAgICAgIGhlYWRlcl9uYW1lcyA9IGRpY3QuZnJvbWtleXMoW2subG93ZXIoKSBmb3IgayBpbiBoZWFkZXJzXSkKKyAgICAgICAgaGVhZGVyX25hbWVzID0gZnJvemVuc2V0KGsubG93ZXIoKSBmb3IgayBpbiBoZWFkZXJzKQogICAgICAgICBza2lwcyA9IHt9CiAgICAgICAgIGlmICdob3N0JyBpbiBoZWFkZXJfbmFtZXM6CiAgICAgICAgICAgICBza2lwc1snc2tpcF9ob3N0J10gPSAxCkBAIC0xMTQxLDE1ICsxMjQ5LDQwIEBACiAKICAgICAgICAgc2VsZi5wdXRyZXF1ZXN0KG1ldGhvZCwgdXJsLCAqKnNraXBzKQogCisgICAgICAgICMgY2h1bmtlZCBlbmNvZGluZyB3aWxsIGhhcHBlbiBpZiBIVFRQLzEuMSBpcyB1c2VkIGFuZCBlaXRoZXIKKyAgICAgICAgIyB0aGUgY2FsbGVyIHBhc3NlcyBlbmNvZGVfY2h1bmtlZD1UcnVlIG9yIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgIyBjb25kaXRpb25zIGhvbGQ6CisgICAgICAgICMgMS4gY29udGVudC1sZW5ndGggaGFzIG5vdCBiZWVuIGV4cGxpY2l0bHkgc2V0CisgICAgICAgICMgMi4gdGhlIGJvZHkgaXMgYSBmaWxlIG9yIGl0ZXJhYmxlLCBidXQgbm90IGEgc3RyIG9yIGJ5dGVzLWxpa2UKKyAgICAgICAgIyAzLiBUcmFuc2Zlci1FbmNvZGluZyBoYXMgTk9UIGJlZW4gZXhwbGljaXRseSBzZXQgYnkgdGhlIGNhbGxlcgorCiAgICAgICAgIGlmICdjb250ZW50LWxlbmd0aCcgbm90IGluIGhlYWRlcl9uYW1lczoKLSAgICAgICAgICAgIHNlbGYuX3NldF9jb250ZW50X2xlbmd0aChib2R5LCBtZXRob2QpCisgICAgICAgICAgICAjIG9ubHkgY2h1bmsgYm9keSBpZiBub3QgZXhwbGljaXRseSBzZXQgZm9yIGJhY2t3YXJkcworICAgICAgICAgICAgIyBjb21wYXRpYmlsaXR5LCBhc3N1bWluZyB0aGUgY2xpZW50IGNvZGUgaXMgYWxyZWFkeSBoYW5kbGluZyB0aGUKKyAgICAgICAgICAgICMgY2h1bmtpbmcKKyAgICAgICAgICAgIGlmICd0cmFuc2Zlci1lbmNvZGluZycgbm90IGluIGhlYWRlcl9uYW1lczoKKyAgICAgICAgICAgICAgICAjIGlmIGNvbnRlbnQtbGVuZ3RoIGNhbm5vdCBiZSBhdXRvbWF0aWNhbGx5IGRldGVybWluZWQsIGZhbGwKKyAgICAgICAgICAgICAgICAjIGJhY2sgdG8gY2h1bmtlZCBlbmNvZGluZworICAgICAgICAgICAgICAgIGVuY29kZV9jaHVua2VkID0gRmFsc2UKKyAgICAgICAgICAgICAgICBjb250ZW50X2xlbmd0aCA9IHNlbGYuX2dldF9jb250ZW50X2xlbmd0aChib2R5LCBtZXRob2QpCisgICAgICAgICAgICAgICAgaWYgY29udGVudF9sZW5ndGggaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgaWYgYm9keSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuZGVidWdsZXZlbCA+IDA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ1VuYWJsZSB0byBkZXRlcm1pbmUgc2l6ZSBvZiAlcicgJSBib2R5KQorICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RlX2NodW5rZWQgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnB1dGhlYWRlcignVHJhbnNmZXItRW5jb2RpbmcnLCAnY2h1bmtlZCcpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5wdXRoZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoJywgc3RyKGNvbnRlbnRfbGVuZ3RoKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGVuY29kZV9jaHVua2VkID0gRmFsc2UKKwogICAgICAgICBmb3IgaGRyLCB2YWx1ZSBpbiBoZWFkZXJzLml0ZW1zKCk6CiAgICAgICAgICAgICBzZWxmLnB1dGhlYWRlcihoZHIsIHZhbHVlKQogICAgICAgICBpZiBpc2luc3RhbmNlKGJvZHksIHN0cik6CiAgICAgICAgICAgICAjIFJGQyAyNjE2IFNlY3Rpb24gMy43LjEgc2F5cyB0aGF0IHRleHQgZGVmYXVsdCBoYXMgYQogICAgICAgICAgICAgIyBkZWZhdWx0IGNoYXJzZXQgb2YgaXNvLTg4NTktMS4KICAgICAgICAgICAgIGJvZHkgPSBfZW5jb2RlKGJvZHksICdib2R5JykKLSAgICAgICAgc2VsZi5lbmRoZWFkZXJzKGJvZHkpCisgICAgICAgIHNlbGYuZW5kaGVhZGVycyhib2R5LCBlbmNvZGVfY2h1bmtlZD1lbmNvZGVfY2h1bmtlZCkKIAogICAgIGRlZiBnZXRyZXNwb25zZShzZWxmKToKICAgICAgICAgIiIiR2V0IHRoZSByZXNwb25zZSBmcm9tIHRoZSBzZXJ2ZXIuCkBAIC0xMjMyLDYgKzEzNjUsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2hvc3RuYW1lPU5vbmUpOgogICAgICAgICAgICAgc3VwZXIoSFRUUFNDb25uZWN0aW9uLCBzZWxmKS5fX2luaXRfXyhob3N0LCBwb3J0LCB0aW1lb3V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfYWRkcmVzcykKKyAgICAgICAgICAgIGlmIChrZXlfZmlsZSBpcyBub3QgTm9uZSBvciBjZXJ0X2ZpbGUgaXMgbm90IE5vbmUgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2hvc3RuYW1lIGlzIG5vdCBOb25lKToKKyAgICAgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJrZXlfZmlsZSwgY2VydF9maWxlIGFuZCBjaGVja19ob3N0bmFtZSBhcmUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlcHJlY2F0ZWQsIHVzZSBhIGN1c3RvbSBjb250ZXh0IGluc3RlYWQuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgICAgIHNlbGYua2V5X2ZpbGUgPSBrZXlfZmlsZQogICAgICAgICAgICAgc2VsZi5jZXJ0X2ZpbGUgPSBjZXJ0X2ZpbGUKICAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKZGlmZiAtLWdpdCBhL0xpYi9odHRwL2Nvb2tpZWphci5weSBiL0xpYi9odHRwL2Nvb2tpZWphci5weQppbmRleCA2ZDQ1NzJhLi5hZGY5NTZkIDEwMDY0NAotLS0gYS9MaWIvaHR0cC9jb29raWVqYXIucHkKKysrIGIvTGliL2h0dHAvY29va2llamFyLnB5CkBAIC0yMDAsNyArMjAwLDcgQEAKIAogU1RSSUNUX0RBVEVfUkUgPSByZS5jb21waWxlKAogICAgIHIiXltTTVRXRl1bYS16XVthLXpdLCAoXGRcZCkgKFtKRk1BU09ORF1bYS16XVthLXpdKSAiCi0gICAgIihcZFxkXGRcZCkgKFxkXGQpOihcZFxkKTooXGRcZCkgR01UJCIsIHJlLkFTQ0lJKQorICAgIHIiKFxkXGRcZFxkKSAoXGRcZCk6KFxkXGQpOihcZFxkKSBHTVQkIiwgcmUuQVNDSUkpCiBXRUVLREFZX1JFID0gcmUuY29tcGlsZSgKICAgICByIl4oPzpTdW58TW9ufFR1ZXxXZWR8VGh1fEZyaXxTYXQpW2Etel0qLD9ccyoiLCByZS5JIHwgcmUuQVNDSUkpCiBMT09TRV9IVFRQX0RBVEVfUkUgPSByZS5jb21waWxlKApAQCAtMjc3LDcgKzI3Nyw3IEBACiAgICAgcmV0dXJuIF9zdHIydGltZShkYXksIG1vbiwgeXIsIGhyLCBtaW4sIHNlYywgdHopCiAKIElTT19EQVRFX1JFID0gcmUuY29tcGlsZSgKLSAgICAiIiJeCisgICAgciIiIl4KICAgICAoXGR7NH0pICAgICAgICAgICAgICAjIHllYXIKICAgICAgICBbLVwvXT8KICAgICAoXGRcZD8pICAgICAgICAgICAgICAjIG51bWVyaWNhbCBtb250aApAQCAtNDExLDcgKzQxMSw3IEBACiAgICAgICAgICAgICAgICAgcGFpcnMgPSBbXQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAjIHNraXAganVuawotICAgICAgICAgICAgICAgIG5vbl9qdW5rLCBucl9qdW5rX2NoYXJzID0gcmUuc3VibigiXls9XHM7XSoiLCAiIiwgdGV4dCkKKyAgICAgICAgICAgICAgICBub25fanVuaywgbnJfanVua19jaGFycyA9IHJlLnN1Ym4ociJeWz1ccztdKiIsICIiLCB0ZXh0KQogICAgICAgICAgICAgICAgIGFzc2VydCBucl9qdW5rX2NoYXJzID4gMCwgKAogICAgICAgICAgICAgICAgICAgICAic3BsaXRfaGVhZGVyX3dvcmRzIGJ1ZzogJyVzJywgJyVzJywgJXMiICUKICAgICAgICAgICAgICAgICAgICAgKG9yaWdfdGV4dCwgdGV4dCwgcGFpcnMpKQpkaWZmIC0tZ2l0IGEvTGliL2h0dHAvY29va2llcy5weSBiL0xpYi9odHRwL2Nvb2tpZXMucHkKaW5kZXggYTczZmUzOC4uYmUzYjA4MCAxMDA2NDQKLS0tIGEvTGliL2h0dHAvY29va2llcy5weQorKysgYi9MaWIvaHR0cC9jb29raWVzLnB5CkBAIC00NTYsOSArNDU2LDggQEAKICMKIAogX0xlZ2FsS2V5Q2hhcnMgID0gciJcd1xkISMlJid+X2A+PEAsOi9cJFwqXCtcLVwuXF5cfFwpXChcP1x9XHtcPSIKLV9MZWdhbFZhbHVlQ2hhcnMgPSBfTGVnYWxLZXlDaGFycyArICdcW1xdJworX0xlZ2FsVmFsdWVDaGFycyA9IF9MZWdhbEtleUNoYXJzICsgcidcW1xdJwogX0Nvb2tpZVBhdHRlcm4gPSByZS5jb21waWxlKHIiIiIKLSAgICAoP3gpICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGlzIGEgdmVyYm9zZSBwYXR0ZXJuCiAgICAgXHMqICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgT3B0aW9uYWwgd2hpdGVzcGFjZSBhdCBzdGFydCBvZiBjb29raWUKICAgICAoP1A8a2V5PiAgICAgICAgICAgICAgICAgICAgICAgIyBTdGFydCBvZiBncm91cCAna2V5JwogICAgIFsiIiIgKyBfTGVnYWxLZXlDaGFycyArIHIiIiJdKz8gICAjIEFueSB3b3JkIG9mIGF0IGxlYXN0IG9uZSBsZXR0ZXIKQEAgLTQ3NSw3ICs0NzQsNyBAQAogICAgICk/ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEVuZCBvZiBvcHRpb25hbCB2YWx1ZSBncm91cAogICAgIFxzKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFueSBudW1iZXIgb2Ygc3BhY2VzLgogICAgIChccyt8O3wkKSAgICAgICAgICAgICAgICAgICAgICAjIEVuZGluZyBlaXRoZXIgYXQgc3BhY2UsIHNlbWljb2xvbiwgb3IgRU9TLgotICAgICIiIiwgcmUuQVNDSUkpICAgICAgICAgICAgICAgICAjIE1heSBiZSByZW1vdmVkIGlmIHNhZmUuCisgICAgIiIiLCByZS5BU0NJSSB8IHJlLlZFUkJPU0UpICAgICMgcmUuQVNDSUkgbWF5IGJlIHJlbW92ZWQgaWYgc2FmZS4KIAogCiAjIEF0IGxvbmcgbGFzdCwgaGVyZSBpcyB0aGUgY29va2llIGNsYXNzLiAgVXNpbmcgdGhpcyBjbGFzcyBpcyBhbG1vc3QganVzdCBsaWtlCmRpZmYgLS1naXQgYS9MaWIvaHR0cC9zZXJ2ZXIucHkgYi9MaWIvaHR0cC9zZXJ2ZXIucHkKaW5kZXggMDA2MjBkMS4uZTEyZTQ1YiAxMDA2NDQKLS0tIGEvTGliL2h0dHAvc2VydmVyLnB5CisrKyBiL0xpYi9odHRwL3NlcnZlci5weQpAQCAtODcsNiArODcsNyBAQAogICAgICJTaW1wbGVIVFRQUmVxdWVzdEhhbmRsZXIiLCAiQ0dJSFRUUFJlcXVlc3RIYW5kbGVyIiwKIF0KIAoraW1wb3J0IGVtYWlsLnV0aWxzCiBpbXBvcnQgaHRtbAogaW1wb3J0IGh0dHAuY2xpZW50CiBpbXBvcnQgaW8KQEAgLTEyNiw5ICsxMjcsNiBAQAogCiBERUZBVUxUX0VSUk9SX0NPTlRFTlRfVFlQRSA9ICJ0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCIKIAotZGVmIF9xdW90ZV9odG1sKGh0bWwpOgotICAgIHJldHVybiBodG1sLnJlcGxhY2UoIiYiLCAiJmFtcDsiKS5yZXBsYWNlKCI8IiwgIiZsdDsiKS5yZXBsYWNlKCI+IiwgIiZndDsiKQotCiBjbGFzcyBIVFRQU2VydmVyKHNvY2tldHNlcnZlci5UQ1BTZXJ2ZXIpOgogCiAgICAgYWxsb3dfcmV1c2VfYWRkcmVzcyA9IDEgICAgIyBTZWVtcyB0byBtYWtlIHNlbnNlIGluIHRlc3RpbmcgZW52aXJvbm1lbnQKQEAgLTEzNiw3ICsxMzQsNyBAQAogICAgIGRlZiBzZXJ2ZXJfYmluZChzZWxmKToKICAgICAgICAgIiIiT3ZlcnJpZGUgc2VydmVyX2JpbmQgdG8gc3RvcmUgdGhlIHNlcnZlciBuYW1lLiIiIgogICAgICAgICBzb2NrZXRzZXJ2ZXIuVENQU2VydmVyLnNlcnZlcl9iaW5kKHNlbGYpCi0gICAgICAgIGhvc3QsIHBvcnQgPSBzZWxmLnNvY2tldC5nZXRzb2NrbmFtZSgpWzoyXQorICAgICAgICBob3N0LCBwb3J0ID0gc2VsZi5zZXJ2ZXJfYWRkcmVzc1s6Ml0KICAgICAgICAgc2VsZi5zZXJ2ZXJfbmFtZSA9IHNvY2tldC5nZXRmcWRuKGhvc3QpCiAgICAgICAgIHNlbGYuc2VydmVyX3BvcnQgPSBwb3J0CiAKQEAgLTI4MiwxMiArMjgwLDkgQEAKICAgICAgICAgd29yZHMgPSByZXF1ZXN0bGluZS5zcGxpdCgpCiAgICAgICAgIGlmIGxlbih3b3JkcykgPT0gMzoKICAgICAgICAgICAgIGNvbW1hbmQsIHBhdGgsIHZlcnNpb24gPSB3b3JkcwotICAgICAgICAgICAgaWYgdmVyc2lvbls6NV0gIT0gJ0hUVFAvJzoKLSAgICAgICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoCi0gICAgICAgICAgICAgICAgICAgIEhUVFBTdGF0dXMuQkFEX1JFUVVFU1QsCi0gICAgICAgICAgICAgICAgICAgICJCYWQgcmVxdWVzdCB2ZXJzaW9uICglcikiICUgdmVyc2lvbikKLSAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpZiB2ZXJzaW9uWzo1XSAhPSAnSFRUUC8nOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCiAgICAgICAgICAgICAgICAgYmFzZV92ZXJzaW9uX251bWJlciA9IHZlcnNpb24uc3BsaXQoJy8nLCAxKVsxXQogICAgICAgICAgICAgICAgIHZlcnNpb25fbnVtYmVyID0gYmFzZV92ZXJzaW9uX251bWJlci5zcGxpdCgiLiIpCiAgICAgICAgICAgICAgICAgIyBSRkMgMjE0NSBzZWN0aW9uIDMuMSBzYXlzIHRoZXJlIGNhbiBiZSBvbmx5IG9uZSAiLiIgYW5kCkBAIC0zMDksNyArMzA0LDcgQEAKICAgICAgICAgICAgIGlmIHZlcnNpb25fbnVtYmVyID49ICgyLCAwKToKICAgICAgICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoCiAgICAgICAgICAgICAgICAgICAgIEhUVFBTdGF0dXMuSFRUUF9WRVJTSU9OX05PVF9TVVBQT1JURUQsCi0gICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIEhUVFAgVmVyc2lvbiAoJXMpIiAlIGJhc2VfdmVyc2lvbl9udW1iZXIpCisgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIEhUVFAgdmVyc2lvbiAoJXMpIiAlIGJhc2VfdmVyc2lvbl9udW1iZXIpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIGVsaWYgbGVuKHdvcmRzKSA9PSAyOgogICAgICAgICAgICAgY29tbWFuZCwgcGF0aCA9IHdvcmRzCkBAIC0zMzIsMTAgKzMyNywxMSBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLmhlYWRlcnMgPSBodHRwLmNsaWVudC5wYXJzZV9oZWFkZXJzKHNlbGYucmZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jbGFzcz1zZWxmLk1lc3NhZ2VDbGFzcykKLSAgICAgICAgZXhjZXB0IGh0dHAuY2xpZW50LkxpbmVUb29Mb25nOgorICAgICAgICBleGNlcHQgaHR0cC5jbGllbnQuTGluZVRvb0xvbmcgYXMgZXJyOgogICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKAotICAgICAgICAgICAgICAgIEhUVFBTdGF0dXMuQkFEX1JFUVVFU1QsCi0gICAgICAgICAgICAgICAgIkxpbmUgdG9vIGxvbmciKQorICAgICAgICAgICAgICAgIEhUVFBTdGF0dXMuUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRSwKKyAgICAgICAgICAgICAgICAiTGluZSB0b28gbG9uZyIsCisgICAgICAgICAgICAgICAgc3RyKGVycikpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgZXhjZXB0IGh0dHAuY2xpZW50LkhUVFBFeGNlcHRpb24gYXMgZXJyOgogICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKApAQCAtNDY1LDggKzQ2MSw4IEBACiAgICAgICAgICAgICAjIChzZWUgYnVnICMxMTAwMjAxKQogICAgICAgICAgICAgY29udGVudCA9IChzZWxmLmVycm9yX21lc3NhZ2VfZm9ybWF0ICUgewogICAgICAgICAgICAgICAgICdjb2RlJzogY29kZSwKLSAgICAgICAgICAgICAgICAnbWVzc2FnZSc6IF9xdW90ZV9odG1sKG1lc3NhZ2UpLAotICAgICAgICAgICAgICAgICdleHBsYWluJzogX3F1b3RlX2h0bWwoZXhwbGFpbikKKyAgICAgICAgICAgICAgICAnbWVzc2FnZSc6IGh0bWwuZXNjYXBlKG1lc3NhZ2UsIHF1b3RlPUZhbHNlKSwKKyAgICAgICAgICAgICAgICAnZXhwbGFpbic6IGh0bWwuZXNjYXBlKGV4cGxhaW4sIHF1b3RlPUZhbHNlKQogICAgICAgICAgICAgfSkKICAgICAgICAgICAgIGJvZHkgPSBjb250ZW50LmVuY29kZSgnVVRGLTgnLCAncmVwbGFjZScpCiAgICAgICAgICAgICBzZWxmLnNlbmRfaGVhZGVyKCJDb250ZW50LVR5cGUiLCBzZWxmLmVycm9yX2NvbnRlbnRfdHlwZSkKQEAgLTQ5MSwxMiArNDg3LDEyIEBACiAKICAgICBkZWYgc2VuZF9yZXNwb25zZV9vbmx5KHNlbGYsIGNvZGUsIG1lc3NhZ2U9Tm9uZSk6CiAgICAgICAgICIiIlNlbmQgdGhlIHJlc3BvbnNlIGhlYWRlciBvbmx5LiIiIgotICAgICAgICBpZiBtZXNzYWdlIGlzIE5vbmU6Ci0gICAgICAgICAgICBpZiBjb2RlIGluIHNlbGYucmVzcG9uc2VzOgotICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBzZWxmLnJlc3BvbnNlc1tjb2RlXVswXQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBtZXNzYWdlID0gJycKICAgICAgICAgaWYgc2VsZi5yZXF1ZXN0X3ZlcnNpb24gIT0gJ0hUVFAvMC45JzoKKyAgICAgICAgICAgIGlmIG1lc3NhZ2UgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBpZiBjb2RlIGluIHNlbGYucmVzcG9uc2VzOgorICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gc2VsZi5yZXNwb25zZXNbY29kZV1bMF0KKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gJycKICAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKHNlbGYsICdfaGVhZGVyc19idWZmZXInKToKICAgICAgICAgICAgICAgICBzZWxmLl9oZWFkZXJzX2J1ZmZlciA9IFtdCiAgICAgICAgICAgICBzZWxmLl9oZWFkZXJzX2J1ZmZlci5hcHBlbmQoKCIlcyAlZCAlc1xyXG4iICUKQEAgLTU4MywxMiArNTc5LDcgQEAKICAgICAgICAgIiIiUmV0dXJuIHRoZSBjdXJyZW50IGRhdGUgYW5kIHRpbWUgZm9ybWF0dGVkIGZvciBhIG1lc3NhZ2UgaGVhZGVyLiIiIgogICAgICAgICBpZiB0aW1lc3RhbXAgaXMgTm9uZToKICAgICAgICAgICAgIHRpbWVzdGFtcCA9IHRpbWUudGltZSgpCi0gICAgICAgIHllYXIsIG1vbnRoLCBkYXksIGhoLCBtbSwgc3MsIHdkLCB5LCB6ID0gdGltZS5nbXRpbWUodGltZXN0YW1wKQotICAgICAgICBzID0gIiVzLCAlMDJkICUzcyAlNGQgJTAyZDolMDJkOiUwMmQgR01UIiAlICgKLSAgICAgICAgICAgICAgICBzZWxmLndlZWtkYXluYW1lW3dkXSwKLSAgICAgICAgICAgICAgICBkYXksIHNlbGYubW9udGhuYW1lW21vbnRoXSwgeWVhciwKLSAgICAgICAgICAgICAgICBoaCwgbW0sIHNzKQotICAgICAgICByZXR1cm4gcworICAgICAgICByZXR1cm4gZW1haWwudXRpbHMuZm9ybWF0ZGF0ZSh0aW1lc3RhbXAsIHVzZWdtdD1UcnVlKQogCiAgICAgZGVmIGxvZ19kYXRlX3RpbWVfc3RyaW5nKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIGN1cnJlbnQgdGltZSBmb3JtYXR0ZWQgZm9yIGxvZ2dpbmcuIiIiCkBAIC03MjYsNyArNzE3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzPSdzdXJyb2dhdGVwYXNzJykKICAgICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvcjoKICAgICAgICAgICAgIGRpc3BsYXlwYXRoID0gdXJsbGliLnBhcnNlLnVucXVvdGUocGF0aCkKLSAgICAgICAgZGlzcGxheXBhdGggPSBodG1sLmVzY2FwZShkaXNwbGF5cGF0aCkKKyAgICAgICAgZGlzcGxheXBhdGggPSBodG1sLmVzY2FwZShkaXNwbGF5cGF0aCwgcXVvdGU9RmFsc2UpCiAgICAgICAgIGVuYyA9IHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKQogICAgICAgICB0aXRsZSA9ICdEaXJlY3RvcnkgbGlzdGluZyBmb3IgJXMnICUgZGlzcGxheXBhdGgKICAgICAgICAgci5hcHBlbmQoJzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiIgJwpAQCAtNzUwLDcgKzc0MSw3IEBACiAgICAgICAgICAgICByLmFwcGVuZCgnPGxpPjxhIGhyZWY9IiVzIj4lczwvYT48L2xpPicKICAgICAgICAgICAgICAgICAgICAgJSAodXJsbGliLnBhcnNlLnF1b3RlKGxpbmtuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzPSdzdXJyb2dhdGVwYXNzJyksCi0gICAgICAgICAgICAgICAgICAgICAgIGh0bWwuZXNjYXBlKGRpc3BsYXluYW1lKSkpCisgICAgICAgICAgICAgICAgICAgICAgIGh0bWwuZXNjYXBlKGRpc3BsYXluYW1lLCBxdW90ZT1GYWxzZSkpKQogICAgICAgICByLmFwcGVuZCgnPC91bD5cbjxocj5cbjwvYm9keT5cbjwvaHRtbD5cbicpCiAgICAgICAgIGVuY29kZWQgPSAnXG4nLmpvaW4ocikuZW5jb2RlKGVuYywgJ3N1cnJvZ2F0ZWVzY2FwZScpCiAgICAgICAgIGYgPSBpby5CeXRlc0lPKCkKQEAgLTExOTEsMTYgKzExODIsMTUgQEAKICAgICBzZXJ2ZXJfYWRkcmVzcyA9IChiaW5kLCBwb3J0KQogCiAgICAgSGFuZGxlckNsYXNzLnByb3RvY29sX3ZlcnNpb24gPSBwcm90b2NvbAotICAgIGh0dHBkID0gU2VydmVyQ2xhc3Moc2VydmVyX2FkZHJlc3MsIEhhbmRsZXJDbGFzcykKLQotICAgIHNhID0gaHR0cGQuc29ja2V0LmdldHNvY2tuYW1lKCkKLSAgICBwcmludCgiU2VydmluZyBIVFRQIG9uIiwgc2FbMF0sICJwb3J0Iiwgc2FbMV0sICIuLi4iKQotICAgIHRyeToKLSAgICAgICAgaHR0cGQuc2VydmVfZm9yZXZlcigpCi0gICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgotICAgICAgICBwcmludCgiXG5LZXlib2FyZCBpbnRlcnJ1cHQgcmVjZWl2ZWQsIGV4aXRpbmcuIikKLSAgICAgICAgaHR0cGQuc2VydmVyX2Nsb3NlKCkKLSAgICAgICAgc3lzLmV4aXQoMCkKKyAgICB3aXRoIFNlcnZlckNsYXNzKHNlcnZlcl9hZGRyZXNzLCBIYW5kbGVyQ2xhc3MpIGFzIGh0dHBkOgorICAgICAgICBzYSA9IGh0dHBkLnNvY2tldC5nZXRzb2NrbmFtZSgpCisgICAgICAgIHNlcnZlX21lc3NhZ2UgPSAiU2VydmluZyBIVFRQIG9uIHtob3N0fSBwb3J0IHtwb3J0fSAoaHR0cDovL3tob3N0fTp7cG9ydH0vKSAuLi4iCisgICAgICAgIHByaW50KHNlcnZlX21lc3NhZ2UuZm9ybWF0KGhvc3Q9c2FbMF0sIHBvcnQ9c2FbMV0pKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBodHRwZC5zZXJ2ZV9mb3JldmVyKCkKKyAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgorICAgICAgICAgICAgcHJpbnQoIlxuS2V5Ym9hcmQgaW50ZXJydXB0IHJlY2VpdmVkLCBleGl0aW5nLiIpCisgICAgICAgICAgICBzeXMuZXhpdCgwKQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL011bHRpU3RhdHVzQmFyLnB5IGIvTGliL2lkbGVsaWIvTXVsdGlTdGF0dXNCYXIucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4MmJhOWEuLjAwMDAwMDAKLS0tIGEvTGliL2lkbGVsaWIvTXVsdGlTdGF0dXNCYXIucHkKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi1mcm9tIHRraW50ZXIgaW1wb3J0ICoKLQotY2xhc3MgTXVsdGlTdGF0dXNCYXIoRnJhbWUpOgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG1hc3Rlcj1Ob25lLCAqKmt3KToKLSAgICAgICAgaWYgbWFzdGVyIGlzIE5vbmU6Ci0gICAgICAgICAgICBtYXN0ZXIgPSBUaygpCi0gICAgICAgIEZyYW1lLl9faW5pdF9fKHNlbGYsIG1hc3RlciwgKiprdykKLSAgICAgICAgc2VsZi5sYWJlbHMgPSB7fQotCi0gICAgZGVmIHNldF9sYWJlbChzZWxmLCBuYW1lLCB0ZXh0PScnLCBzaWRlPUxFRlQsIHdpZHRoPTApOgotICAgICAgICBpZiBuYW1lIG5vdCBpbiBzZWxmLmxhYmVsczoKLSAgICAgICAgICAgIGxhYmVsID0gTGFiZWwoc2VsZiwgYm9yZGVyd2lkdGg9MCwgYW5jaG9yPVcpCi0gICAgICAgICAgICBsYWJlbC5wYWNrKHNpZGU9c2lkZSwgcGFkeT0wLCBwYWR4PTQpCi0gICAgICAgICAgICBzZWxmLmxhYmVsc1tuYW1lXSA9IGxhYmVsCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBsYWJlbCA9IHNlbGYubGFiZWxzW25hbWVdCi0gICAgICAgIGlmIHdpZHRoICE9IDA6Ci0gICAgICAgICAgICBsYWJlbC5jb25maWcod2lkdGg9d2lkdGgpCi0gICAgICAgIGxhYmVsLmNvbmZpZyh0ZXh0PXRleHQpCi0KLWRlZiBfbXVsdGlzdGF0dXNfYmFyKHBhcmVudCk6Ci0gICAgcm9vdCA9IFRrKCkKLSAgICB3aWR0aCwgaGVpZ2h0LCB4LCB5ID0gbGlzdChtYXAoaW50LCByZS5zcGxpdCgnW3grXScsIHBhcmVudC5nZW9tZXRyeSgpKSkpCi0gICAgcm9vdC5nZW9tZXRyeSgiKyVkKyVkIiAlKHgsIHkgKyAxNTApKQotICAgIHJvb3QudGl0bGUoIlRlc3QgbXVsdGlzdGF0dXMgYmFyIikKLSAgICBmcmFtZSA9IEZyYW1lKHJvb3QpCi0gICAgdGV4dCA9IFRleHQoZnJhbWUpCi0gICAgdGV4dC5wYWNrKCkKLSAgICBtc2IgPSBNdWx0aVN0YXR1c0JhcihmcmFtZSkKLSAgICBtc2Iuc2V0X2xhYmVsKCJvbmUiLCAiaGVsbG8iKQotICAgIG1zYi5zZXRfbGFiZWwoInR3byIsICJ3b3JsZCIpCi0gICAgbXNiLnBhY2soc2lkZT1CT1RUT00sIGZpbGw9WCkKLQotICAgIGRlZiBjaGFuZ2UoKToKLSAgICAgICAgbXNiLnNldF9sYWJlbCgib25lIiwgImZvbyIpCi0gICAgICAgIG1zYi5zZXRfbGFiZWwoInR3byIsICJiYXIiKQotCi0gICAgYnV0dG9uID0gQnV0dG9uKHJvb3QsIHRleHQ9IlVwZGF0ZSBzdGF0dXMiLCBjb21tYW5kPWNoYW5nZSkKLSAgICBidXR0b24ucGFjayhzaWRlPUJPVFRPTSkKLSAgICBmcmFtZS5wYWNrKCkKLSAgICBmcmFtZS5tYWlubG9vcCgpCi0gICAgcm9vdC5tYWlubG9vcCgpCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5odGVzdCBpbXBvcnQgcnVuCi0gICAgcnVuKF9tdWx0aXN0YXR1c19iYXIpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9ORVdTLnR4dCBiL0xpYi9pZGxlbGliL05FV1MudHh0CmluZGV4IDcyOTA1YzEuLmEzZmM1MDEgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL05FV1MudHh0CisrKyBiL0xpYi9pZGxlbGliL05FV1MudHh0CkBAIC0xLDQ1ICsxLDEwMSBAQAotV2hhdCdzIE5ldyBpbiBJRExFIDMuNS4zPwotPT09PT09PT09PT09PT09PT09PT09PT09PQotKlJlbGVhc2UgZGF0ZTogMjAxNy0wMS0wMT8qCitXaGF0J3MgTmV3IGluIElETEUgMy42LjA/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT0KKypSZWxlYXNlIGRhdGU6IDIwMTYtMTItMTY/KgogCiAtIElzc3VlICMxNTMwODogQWRkICdpbnRlcnJ1cHQgZXhlY3V0aW9uJyAoXkMpIHRvIFNoZWxsIG1lbnUuCiAgIFBhdGNoIGJ5IFJvZ2VyIFNlcnd5LCB1cGRhdGVkIGJ5IEJheWFyZCBSYW5kZWwuCiAKIC0gSXNzdWUgIzI3OTIyOiBTdG9wIElETEUgdGVzdHMgZnJvbSAnZmxhc2hpbmcnIGd1aSB3aWRnZXRzIG9uIHRoZSBzY3JlZW4uCiAKKy0gSXNzdWUgIzI3ODkxOiBDb25zaXN0ZW50bHkgZ3JvdXAgYW5kIHNvcnQgaW1wb3J0cyB3aXRoaW4gaWRsZWxpYiBtb2R1bGVzLgorCistIElzc3VlICMxNzY0MjogYWRkIGxhcmdlciBmb250IHNpemVzIGZvciBjbGFzc3Jvb20gcHJvamVjdGlvbi4KKwogLSBBZGQgdmVyc2lvbiB0byB0aXRsZSBvZiBJRExFIGhlbHAgd2luZG93LgogCiAtIElzc3VlICMyNTU2NDogSW4gc2VjdGlvbiBvbiBJRExFIC0tIGNvbnNvbGUgZGlmZmVyZW5jZXMsIG1lbnRpb24gdGhhdAogICB1c2luZyBleGVjIG1lYW5zIHRoYXQgX19idWlsdGluc19fIGlzIGRlZmluZWQgZm9yIGVhY2ggc3RhdGVtZW50LgogCistIElzc3VlICMyNzgyMTogRml4IDMuNi4wYTMgcmVncmVzc2lvbiB0aGF0IHByZXZlbnRlZCBjdXN0b20ga2V5IHNldHMKKyAgZnJvbSBiZWluZyBzZWxlY3RlZCB3aGVuIG5vIGN1c3RvbSB0aGVtZSB3YXMgZGVmaW5lZC4KKwogLSBJc3N1ZSAjMjc3MTQ6IHRleHRfdGV4dHZpZXcgYW5kIHRlc3RfYXV0b2NvbXBsZXRlIG5vdyBwYXNzIHdoZW4gcmUtcnVuCiAgIGluIHRoZSBzYW1lIHByb2Nlc3MuICBUaGlzIG9jY3VycyB3aGVuIHRlc3RfaWRsZSBmYWlscyB3aGVuIHJ1biB3aXRoIHRoZQogICAtdyBvcHRpb24gYnV0IHdpdGhvdXQgLWpuLiAgRml4IHdhcm5pbmcgZnJvbSB0ZXN0X2NvbmZpZy4KIAorLSBJc3N1ZSAjMjc2MjE6IFB1dCBxdWVyeSByZXNwb25zZSB2YWxpZGF0aW9uIGVycm9yIG1lc3NhZ2VzIGluIHRoZSBxdWVyeQorICBib3ggaXRzZWxmIGluc3RlYWQgb2YgaW4gYSBzZXBhcmF0ZSBtYXNzYWdlYm94LiAgUmVkbyB0ZXN0cyB0byBtYXRjaC4KKyAgQWRkIE1hYyBPU1ggcmVmaW5lbWVudHMuICBPcmlnaW5hbCBwYXRjaCBieSBNYXJrIFJvc2VtYW4uCisKKy0gSXNzdWUgIzI3NjIwOiBFc2NhcGUga2V5IG5vdyBjbG9zZXMgUXVlcnkgYm94IGFzIGNhbmNlbGxlZC4KKworLSBJc3N1ZSAjMjc2MDk6IElETEU6IHRhYiBhZnRlciBpbml0aWFsIHdoaXRlc3BhY2Ugc2hvdWxkIHRhYiwgbm90CisgIGF1dG9jb21wbGV0ZS4gVGhpcyBmaXhlcyBwcm9ibGVtIHdpdGggd3JpdGluZyBkb2NzdHJpbmdzIGF0IGxlYXN0CisgIHR3aWNlIGluZGVudGVkLgorCistIElzc3VlICMyNzYwOTogRXhwbGljaXRseSByZXR1cm4gTm9uZSB3aGVuIHRoZXJlIGFyZSBhbHNvIG5vbi1Ob25lCisgIHJldHVybnMuIEluIGEgZmV3IGNhc2VzLCByZXZlcnNlIGEgY29uZGl0aW9uIGFuZCBlbGltaW5hdGUgYSByZXR1cm4uCisKIC0gSXNzdWUgIzI1NTA3OiBJRExFIG5vIGxvbmdlciBydW5zIGJ1Z2d5IGNvZGUgYmVjYXVzZSBvZiBpdHMgdGtpbnRlciBpbXBvcnRzLgogICBVc2VycyBtdXN0IGluY2x1ZGUgdGhlIHNhbWUgaW1wb3J0cyByZXF1aXJlZCB0byBydW4gZGlyZWN0bHkgaW4gUHl0aG9uLgogCistIElzc3VlICMyNzE3MzogQWRkICdJRExFIE1vZGVybiBVbml4JyB0byB0aGUgYnVpbHQtaW4ga2V5IHNldHMuCisgIE1ha2UgdGhlIGRlZmF1bHQga2V5IHNldCBkZXBlbmQgb24gdGhlIHBsYXRmb3JtLgorICBBZGQgdGVzdHMgZm9yIHRoZSBjaGFuZ2VzIHRvIHRoZSBjb25maWcgbW9kdWxlLgorCiAtIElzc3VlICMyNzQ1MjogYWRkIGxpbmUgY291bnRlciBhbmQgY3JjIHRvIElETEUgY29uZmlnSGFuZGxlciB0ZXN0IGR1bXAuCiAKKy0gSXNzdWUgIzI3NDc3OiBJRExFIHNlYXJjaCBkaWFsb2dzIG5vdyB1c2UgdHRrIHdpZGdldHMuCisKKy0gSXNzdWUgIzI3MTczOiBBZGQgJ0lETEUgTW9kZXJuIFVuaXgnIHRvIHRoZSBidWlsdC1pbiBrZXkgc2V0cy4KKyAgTWFrZSB0aGUgZGVmYXVsdCBrZXkgc2V0IGRlcGVuZCBvbiB0aGUgcGxhdGZvcm0uCisgIEFkZCB0ZXN0cyBmb3IgdGhlIGNoYW5nZXMgdG8gdGhlIGNvbmZpZyBtb2R1bGUuCisKKy0gSXNzdWUgIzI3NDUyOiBtYWtlIGNvbW1hbmQgbGluZSAiaWRsZS10ZXN0PiBweXRob24gdGVzdF9oZWxwLnB5IiB3b3JrLgorICBfX2ZpbGVfXyBpcyByZWxhdGl2ZSB3aGVuIHB5dGhvbiBpcyBzdGFydGVkIGluIHRoZSBmaWxlJ3MgZGlyZWN0b3J5LgorCistIElzc3VlICMyNzQ1MjogYWRkIGxpbmUgY291bnRlciBhbmQgY3JjIHRvIElETEUgY29uZmlnSGFuZGxlciB0ZXN0IGR1bXAuCisKKy0gSXNzdWUgIzI3MzgwOiBJRExFOiBhZGQgcXVlcnkucHkgd2l0aCBiYXNlIFF1ZXJ5IGRpYWxvZyBhbmQgdHRrIHdpZGdldHMuCisgIE1vZHVsZSBoYWQgc3ViY2xhc3NlcyBTZWN0aW9uTmFtZSwgTW9kdWxlTmFtZSwgYW5kIEhlbHBTb3VyY2UsIHdoaWNoIGFyZQorICB1c2VkIHRvIGdldCBpbmZvcm1hdGlvbiBmcm9tIHVzZXJzIGJ5IGNvbmZpZ2RpYWxvZyBhbmQgZmlsZSA9PkxvYWQgTW9kdWxlLgorICBFYWNoIHN1YmNsYXNzIGhhcyBpdHcgb3duIHZhbGlkaXR5IGNoZWNrcy4gIFVzaW5nIE1vZHVsZU5hbWUgYWxsb3dzIHVzZXJzCisgIHRvIGVkaXQgYmFkIG1vZHVsZSBuYW1lcyBpbnN0ZWFkIG9mIHN0YXJ0aW5nIG92ZXIuCisgIEFkZCB0ZXN0cyBhbmQgZGVsZXRlIHRoZSB0d28gZmlsZXMgY29tYmluZWQgaW50byB0aGUgbmV3IG9uZS4KKworLSBJc3N1ZSAjMjczNzI6IFRlc3RfaWRsZSBubyBsb25nZXIgY2hhbmdlcyB0aGUgbG9jYWxlLgorCiAtIElzc3VlICMyNzM2NTogQWxsb3cgbm9uLWFzY2lpIGNoYXJzIGluIElETEUgTkVXUy50eHQsIGZvciBjb250cmlidXRvciBuYW1lcy4KIAogLSBJc3N1ZSAjMjcyNDU6IElETEU6IENsZWFubHkgZGVsZXRlIGN1c3RvbSB0aGVtZXMgYW5kIGtleSBiaW5kaW5ncy4KICAgUHJldmlvdXNseSwgd2hlbiBJRExFIHdhcyBzdGFydGVkIGZyb20gYSBjb25zb2xlIG9yIGJ5IGltcG9ydCwgYSBjYXNjYWRlCiAgIG9mIHdhcm5pbmdzIHdhcyBlbWl0dGVkLiAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KIAorLSBJc3N1ZSAjMjQxMzc6IFJ1biBJRExFLCB0ZXN0X2lkbGUsIGFuZCBodGVzdCB3aXRoIHRraW50ZXIgZGVmYXVsdCByb290IGRpc2FibGVkLgorICBGaXggY29kZSBhbmQgdGVzdHMgdGhhdCBmYWlsIHdpdGggdGhpcyByZXN0cmljdGlvbi4KKyAgRml4IGh0ZXN0cyB0byBub3QgY3JlYXRlIGEgc2Vjb25kIGFuZCByZWR1bmRhbnQgcm9vdCBhbmQgbWFpbmxvb3AuCiAKLVdoYXQncyBOZXcgaW4gSURMRSAzLjUuMj8KLT09PT09PT09PT09PT09PT09PT09PT09PT0KLSpSZWxlYXNlIGRhdGU6IDIwMTYtMDYtMjYqCistIElzc3VlICMyNzMxMDogRml4IElETEUuYXBwIGZhaWx1cmUgdG8gbGF1bmNoIG9uIE9TIFggZHVlIHRvIHZlc3RpZ2lhbCBpbXBvcnQuCiAKIC0gSXNzdWUgIzUxMjQ6IFBhc3RlIHdpdGggdGV4dCBzZWxlY3RlZCBub3cgcmVwbGFjZXMgdGhlIHNlbGVjdGlvbiBvbiBYMTEuCiAgIFRoaXMgbWF0Y2hlcyBob3cgcGFzdGUgd29ya3Mgb24gV2luZG93cywgTWFjLCBtb3N0IG1vZGVybiBMaW51eCBhcHBzLAogICBhbmQgdHRrIHdpZGdldHMuICBPcmlnaW5hbCBwYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgogCistIElzc3VlICMyNDc1MDogU3dpdGNoIGFsbCBzY3JvbGxiYXJzIGluIElETEUgdG8gdHRrIHZlcnNpb25zLgorICBXaGVyZSBuZWVkZWQsIG1pbmltYWwgdGVzdHMgYXJlIGFkZGVkIHRvIGNvdmVyIGNoYW5nZXMuCisKKy0gSXNzdWUgIzI0NzU5OiBJRExFIHJlcXVpcmVzIHRrIDguNSBhbmQgYXZhaWxhYmlsaXR5IHR0ayB3aWRnZXRzLgorICBEZWxldGUgbm93IHVubmVlZGVkIHRrIHZlcnNpb24gdGVzdHMgYW5kIGNvZGUgZm9yIG9sZGVyIHZlcnNpb25zLgorICBBZGQgdGVzdCBmb3IgSURMRSBzeW50YXggY29sb3JpemVyLgorCistIElzc3VlICMyNzIzOTogaWRsZWxpYi5tYWNvc3guaXNYeXpUayBmdW5jdGlvbnMgaW5pdGlhbGl6ZSBhcyBuZWVkZWQuCisKKy0gSXNzdWUgIzI3MjYyOiBtb3ZlIEFxdWEgdW5iaW5kaW5nIGNvZGUsIHdoaWNoIGVuYWJsZSBjb250ZXh0IG1lbnVzLCB0byBtYXhvc3guCisKIC0gSXNzdWUgIzI0NzU5OiBNYWtlIGNsZWFyIGluIGlkbGVsaWIuaWRsZV90ZXN0Ll9faW5pdF9fIHRoYXQgdGhlIGRpcmVjdG9yeQogICBpcyBhIHByaXZhdGUgaW1wbGVtZW50YXRpb24gb2YgdGVzdC50ZXN0X2lkbGUgYW5kIHRvb2wgZm9yIG1haW50YWluZXJzLgogCi0tIElzc3VlICMyNzE5NjogU3RvcCAnVGhlbWVDaGFuZ2VmJyB3YXJuaW5ncyB3aGVuIHJ1bm5pbmcgSURMRSB0ZXN0cy4KKy0gSXNzdWUgIzI3MTk2OiBTdG9wICdUaGVtZUNoYW5nZWQnIHdhcm5pbmdzIHdoZW4gcnVubmluZyBJRExFIHRlc3RzLgogICBUaGVzZSBwZXJzaXN0ZWQgYWZ0ZXIgb3RoZXIgd2FybmluZ3Mgd2VyZSBzdXBwcmVzc2VkIGluICMyMDU2Ny4KICAgQXBwbHkgU2VyaGl5IFN0b3JjaGFrYSdzIHVwZGF0ZV9pZGxldGFza3Mgc29sdXRpb24gdG8gZm91ciB0ZXN0IGZpbGVzLgogICBSZWNvcmQgdGhpcyBhZGRpdGlvbmFsIGFkdmljZSBpbiBpZGxlX3Rlc3QvUkVBRE1FLnR4dApAQCAtNDcsOSArMTAzLDI2IEBACiAtIElzc3VlICMyMDU2NzogUmV2aXNlIGlkbGVfdGVzdC9SRUFETUUudHh0IHdpdGggYWR2aWNlIGFib3V0IGF2b2lkaW5nCiAgIHRrIHdhcm5pbmcgbWVzc2FnZXMgZnJvbSB0ZXN0cy4gIEFwcGx5IGFkdmljZSB0byBzZXZlcmFsIElETEUgdGVzdHMuCiAKKy0gSXNzdWUgIyAyNDIyNTogVXBkYXRlIGlkbGVsaWIvUkVBRE1FLnR4dCB3aXRoIG5ldyBmaWxlIG5hbWVzCisgIGFuZCBldmVudCBoYW5kbGVycy4KKworLSBJc3N1ZSAjMjcxNTY6IFJlbW92ZSBvYnNvbGV0ZSBjb2RlIG5vdCB1c2VkIGJ5IElETEUuICBSZXBsYWNlbWVudHM6CisgIDEuIGhlbHAudHh0LCByZXBsYWNlZCBieSBoZWxwLmh0bWwsIGlzIG91dC1vZi1kYXRlIGFuZCBzaG91bGQgbm90IGJlIHVzZWQuCisgIEl0cyBkZWRpY2F0ZWQgdmlld2VyIGhhcyBiZSByZXBsYWNlZCBieSB0aGUgaHRtbCB2aWV3ZXIgaW4gaGVscC5weS4KKyAgMi4gJ2ltcG9ydCBpZGxldmVyOyBJID0gaWRsZXZlci5JRExFX1ZFUlNJT04nIGlzIHRoZSBzYW1lIGFzCisgICdpbXBvcnQgc3lzOyBJID0gdmVyc2lvbls6dmVyc2lvbi5pbmRleCgnICcpXScKKyAgMy4gQWZ0ZXIgJ29iID0gc3RhY2t2aWV3ZXIuVmFyaWFibGVzVHJlZUl0ZW0oKmFyZ3MpJywKKyAgJ29iLmtleXMoKScgPT0gJ2xpc3Qob2Iub2JqZWN0LmtleXMpLgorICA0LiBJbiBtYWNvc2MsIHJ1bm5pbmdBc09TWEFQUCA9PSBpc0FxdWFUazsgaWRDYXJib25BcXVhVGsgPT0gaXNDYXJib25UaworCiAtIElzc3VlICMyNzExNzogTWFrZSBjb2xvcml6ZXIgaHRlc3QgYW5kIHR1cnRsZWRlbW8gd29yayB3aXRoIGRhcmsgdGhlbWVzLgogICBNb3ZlIGNvZGUgZm9yIGNvbmZpZ3VyaW5nIHRleHQgd2lkZ2V0IGNvbG9ycyB0byBhIG5ldyBmdW5jdGlvbi4KIAorLSBJc3N1ZSAjMjQyMjU6IFJlbmFtZSBtYW55IGlkbGVsaWIvKi5weSBhbmQgaWRsZV90ZXN0L3Rlc3RfKi5weSBmaWxlcy4KKyAgRWRpdCBmaWxlcyB0byByZXBsYWNlIG9sZCBuYW1lcyB3aXRoIG5ldyBuYW1lcyB3aGVuIHRoZSBvbGQgbmFtZQorICByZWZlcnJlZCB0byB0aGUgbW9kdWxlIHJhdGhlciB0aGFuIHRoZSBjbGFzcyBpdCBjb250YWluZWQuCisgIFNlZSB0aGUgaXNzdWUgYW5kIElETEUgc2VjdGlvbiBpbiBXaGF0J3MgTmV3IGluIDMuNiBmb3IgbW9yZS4KKwogLSBJc3N1ZSAjMjY2NzM6IFdoZW4gdGsgcmVwb3J0cyBmb250IHNpemUgYXMgMCwgY2hhbmdlIHRvIHNpemUgMTAuCiAgIFN1Y2ggZm9udHMgb24gTGludXggcHJldmVudGVkIHRoZSBjb25maWd1cmF0aW9uIGRpYWxvZyBmcm9tIG9wZW5pbmcuCiAKQEAgLTYyLDggKzEzNSw4IEBACiAtIElzc3VlICMxODQxMDogQWRkIHRlc3QgZm9yIElETEUncyBzZWFyY2ggZGlhbG9nLgogICBPcmlnaW5hbCBwYXRjaCBieSBXZXN0bGV5IE1hcnTDrW5lei4KIAotLSBJc3N1ZSAjMjE3MDM6IEFkZCB0ZXN0IGZvciB1bmRvIGRlbGVnYXRvci4KLSAgT3JpZ2luYWwgcGF0Y2ggYnkgU2FpbWFkaGF2IEhlYmxpa2FyIC4KKy0gSXNzdWUgIzIxNzAzOiBBZGQgdGVzdCBmb3IgdW5kbyBkZWxlZ2F0b3IuICBQYXRjaCBtb3N0bHkgYnkKKyAgU2FpbWFkaGF2IEhlYmxpa2FyIC4KIAogLSBJc3N1ZSAjMjcwNDQ6IEFkZCBDb25maWdEaWFsb2cucmVtb3ZlX3Zhcl9jYWxsYmFja3MgdG8gc3RvcCBtZW1vcnkgbGVha3MuCiAKQEAgLTgyLDExICsxNTUsNiBAQAogICBNQVJLIGluIFJFQURNRS50eHQgYW5kIG9wZW4gdGhpcyBhbmQgTkVXUy50eHQgd2l0aCAnYXNjaWknLgogICBSZS1lbmNvZGUgQ1JFRElUUy50eHQgdG8gdXRmLTggYW5kIG9wZW4gaXQgd2l0aCAndXRmLTgnLgogCi0KLVdoYXQncyBOZXcgaW4gSURMRSAzLjUuMT8KLT09PT09PT09PT09PT09PT09PT09PT09PT0KLSpSZWxlYXNlIGRhdGU6IDIwMTUtMTItMDYqCi0KIC0gSXNzdWUgMTUzNDg6IFN0b3AgdGhlIGRlYnVnZ2VyIGVuZ2luZSAobm9ybWFsbHkgaW4gYSB1c2VyIHByb2Nlc3MpCiAgIGJlZm9yZSBjbG9zaW5nIHRoZSBkZWJ1Z2dlciB3aW5kb3cgKHJ1bm5pbmcgaW4gdGhlIElETEUgcHJvY2VzcykuCiAgIFRoaXMgcHJldmVudHMgdGhlIFJ1bnRpbWVFcnJvcnMgdGhhdCB3ZXJlIGJlaW5nIGNhdWdodCBhbmQgaWdub3JlZC4KZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1JFQURNRS50eHQgYi9MaWIvaWRsZWxpYi9SRUFETUUudHh0CmluZGV4IGZmNDQ1MDQuLjUxZThlZjUgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1JFQURNRS50eHQKKysrIGIvTGliL2lkbGVsaWIvUkVBRE1FLnR4dApAQCAtMjksNjEgKzI5LDYxIEBACiAKIEltcGxlbWVudGF0aW9uCiAtLS0tLS0tLS0tLS0tLQotQXV0b0NvbXBsZXRlLnB5ICAgIyBDb21wbGV0ZSBhdHRyaWJ1dGUgbmFtZXMgb3IgZmlsZW5hbWVzLgotQXV0b0NvbXBsZXRlV2luZG93LnB5ICAjIERpc3BsYXkgY29tcGxldGlvbnMuCi1BdXRvRXhwYW5kLnB5ICAgICAjIEV4cGFuZCB3b3JkIHdpdGggcHJldmlvdXMgd29yZCBpbiBmaWxlLgotQmluZGluZ3MucHkgICAgICAgIyBEZWZpbmUgbW9zdCBvZiBJRExFIG1lbnUuCi1DYWxsVGlwV2luZG93LnB5ICAjIERpc3BsYXkgY2FsbHRpcC4KLUNhbGxUaXBzLnB5ICAgICAgICMgQ3JlYXRlIGNhbGx0aXAgdGV4dC4KLUNsYXNzQnJvd3Nlci5weSAgICMgQ3JlYXRlIG1vZHVsZSBicm93c2VyIHdpbmRvdy4KLUNvZGVDb250ZXh0LnB5ICAgICMgU2hvdyBjb21wb3VuZCBzdGF0ZW1lbnQgaGVhZGVycyBvdGhlcndpc2Ugbm90IHZpc2libGUuCi1Db2xvckRlbGVnYXRvci5weSAjIENvbG9yaXplIHRleHQgKG5pbSkuCi1EZWJ1Z2dlci5weSAgICAgICAjIERlYnVnIGNvZGUgcnVuIGZyb20gZWRpdG9yOyBzaG93IHdpbmRvdy4KLURlbGVnYXRvci5weSAgICAgICMgRGVmaW5lIGJhc2UgY2xhc3MgZm9yIGRlbGVnYXRvcnMgKG5pbSkuCi1FZGl0b3JXaW5kb3cucHkgICAjIERlZmluZSBtb3N0IG9mIGVkaXRvciBhbmQgdXRpbGl0eSBmdW5jdGlvbnMuCi1GaWxlTGlzdC5weSAgICAgICAjIE9wZW4gZmlsZXMgYW5kIG1hbmFnZSBsaXN0IG9mIG9wZW4gd2luZG93cyAobmltKS4KLUZvcm1hdFBhcmFncmFwaC5weSMgUmUtd3JhcCBtdWx0aWxpbmUgc3RyaW5ncyBhbmQgY29tbWVudHMuCi1HcmVwRGlhbG9nLnB5ICAgICAjIEZpbmQgYWxsIG9jY3VycmVuY2VzIG9mIHBhdHRlcm4gaW4gbXVsdGlwbGUgZmlsZXMuCi1IeXBlclBhcnNlci5weSAgICAjIFBhcnNlIGNvZGUgYXJvdW5kIGEgZ2l2ZW4gaW5kZXguCi1JT0JpbmRpbmcucHkgICAgICAjIE9wZW4sIHJlYWQsIGFuZCB3cml0ZSBmaWxlcwotSWRsZUhpc3RvcnkucHkgICAgIyBHZXQgcHJldmlvdXMgb3IgbmV4dCB1c2VyIGlucHV0IGluIHNoZWxsIChuaW0pCi1NdWx0aUNhbGwucHkgICAgICAjIFdyYXAgdGsgd2lkZ2V0IHRvIGFsbG93IG11bHRpcGxlIGNhbGxzIHBlciBldmVudCAobmltKS4KLU11bHRpU3RhdHVzQmFyLnB5ICMgRGVmaW5lIHN0YXR1cyBiYXIgZm9yIHdpbmRvd3MgKG5pbSkuCi1PYmplY3RCcm93c2VyLnB5ICAjIERlZmluZSBjbGFzcyB1c2VkIGluIFN0YWNrVmlld2VyIChuaW0pLgotT3V0cHV0V2luZG93LnB5ICAgIyBDcmVhdGUgd2luZG93IGZvciBncmVwIG91dHB1dC4KLVBhcmVuTWF0Y2gucHkgICAgICMgTWF0Y2ggZmVuY2Vwb3N0czogKCksIFtdLCBhbmQge30uCi1QYXRoQnJvd3Nlci5weSAgICAjIENyZWF0ZSBwYXRoIGJyb3dzZXIgd2luZG93LgotUGVyY29sYXRvci5weSAgICAgIyBNYW5hZ2UgZGVsZWdhdG9yIHN0YWNrIChuaW0pLgotUHlQYXJzZS5weSAgICAgICAgIyBHaXZlIGluZm9ybWF0aW9uIG9uIGNvZGUgaW5kZW50YXRpb24KLVB5U2hlbGwucHkgICAgICAgICMgU3RhcnQgSURMRSwgbWFuYWdlIHNoZWxsLCBjb21wbGV0ZSBlZGl0b3Igd2luZG93Ci1SZW1vdGVEZWJ1Z2dlci5weSAjIERlYnVnIGNvZGUgcnVuIGluIHJlbW90ZSBwcm9jZXNzLgotUmVtb3RlT2JqZWN0QnJvd3Nlci5weSAjIENvbW11bmljYXRlIG9iamVjdHMgYmV0d2VlbiBwcm9jZXNzZXMgd2l0aCBycGMgKG5pbSkuCi1SZXBsYWNlRGlhbG9nLnB5ICAjIFNlYXJjaCBhbmQgcmVwbGFjZSBwYXR0ZXJuIGluIHRleHQuCi1Sc3RyaXBFeHRlbnNpb24ucHkjIFN0cmlwIHRyYWlsaW5nIHdoaXRlc3BhY2UKLVNjcmlwdEJpbmRpbmcucHkgICMgQ2hlY2sgYW5kIHJ1biB1c2VyIGNvZGUuCi1TY3JvbGxlZExpc3QucHkgICAjIERlZmluZSBTY3JvbGxlZExpc3Qgd2lkZ2V0IGZvciBJRExFIChuaW0pLgotU2VhcmNoRGlhbG9nLnB5ICAgIyBTZWFyY2ggZm9yIHBhdHRlcm4gaW4gdGV4dC4KLVNlYXJjaERpYWxvZ0Jhc2UucHkgICMgRGVmaW5lIGJhc2UgZm9yIHNlYXJjaCwgcmVwbGFjZSwgYW5kIGdyZXAgZGlhbG9ncy4KLVNlYXJjaEVuZ2luZS5weSAgICMgRGVmaW5lIGVuZ2luZSBmb3IgYWxsIDMgc2VhcmNoIGRpYWxvZ3MuCi1TdGFja1ZpZXdlci5weSAgICAjIFZpZXcgc3RhY2sgYWZ0ZXIgZXhjZXB0aW9uLgotVHJlZVdpZGdldC5weSAgICAgIyBEZWZpbmUgdHJlZSB3aWRnZXIsIHVzZWQgaW4gYnJvd3NlcnMgKG5pbSkuCi1VbmRvRGVsZWdhdG9yLnB5ICAjIE1hbmFnZSB1bmRvIHN0YWNrLgotV2lkZ2V0UmVkaXJlY3Rvci5weSAjIEludGVyY2VwdCB3aWRnZXQgc3ViY29tbWFuZHMgKGZvciBwZXJjb2xhdG9yKSAobmltKS4KLVdpbmRvd0xpc3QucHkgICAgICMgTWFuYWdlIHdpbmRvdyBsaXN0IGFuZCBkZWZpbmUgbGlzdGVkIHRvcCBsZXZlbC4KLVpvb21IZWlnaHQucHkgICAgICMgWm9vbSB3aW5kb3cgdG8gZnVsbCBoZWlnaHQgb2Ygc2NyZWVuLgotYWJvdXREaWFsb2cucHkgICAgIyBEaXNwbGF5IEFib3V0IElETEUgZGlhbG9nLgotY29uZmlnRGlhbG9nLnB5ICAgIyBEaXNwbGF5IHVzZXIgY29uZmlndXJhdGlvbiBkaWFsb2dzLgotY29uZmlnSGFuZGxlci5weSAgIyBMb2FkLCBmZXRjaCwgYW5kIHNhdmUgY29uZmlndXJhdGlvbiAobmltKS4KLWNvbmZpZ0hlbHBTb3VyY2VFZGl0LnB5ICAjIFNwZWNpZnkgaGVscCBzb3VyY2UuCi1jb25maWdTZWN0aW9uTmFtZURpYWxvZy5weSAgIyBTcGVmaWZ5IHVzZXIgY29uZmlnIHNlY3Rpb24gbmFtZQotZHluT3B0aW9uTWVudVdpZGdldC5weSAgIyBkZWZpbmUgbXV0YWJsZSBPcHRpb25NZW51IHdpZGdldCAobmltKS4KK2F1dG9jb21wbGV0ZS5weSAgICMgQ29tcGxldGUgYXR0cmlidXRlIG5hbWVzIG9yIGZpbGVuYW1lcy4KK2F1dG9jb21wbGV0ZV93LnB5ICMgRGlzcGxheSBjb21wbGV0aW9ucy4KK2F1dG9leHBhbmQucHkgICAgICMgRXhwYW5kIHdvcmQgd2l0aCBwcmV2aW91cyB3b3JkIGluIGZpbGUuCiticm93c2VyLnB5ICAgICAgICAjIENyZWF0ZSBtb2R1bGUgYnJvd3NlciB3aW5kb3cuCitjYWxsdGlwX3cucHkgICAgICAjIERpc3BsYXkgY2FsbHRpcC4KK2NhbGx0aXBzLnB5ICAgICAgICMgQ3JlYXRlIGNhbGx0aXAgdGV4dC4KK2NvZGVjb250ZXh0LnB5ICAgICMgU2hvdyBjb21wb3VuZCBzdGF0ZW1lbnQgaGVhZGVycyBvdGhlcndpc2Ugbm90IHZpc2libGUuCitjb2xvcml6ZXIucHkgICAgICAjIENvbG9yaXplIHRleHQgKG5pbSkKK2NvbmZpZy5weSAgICAgICAgICMgTG9hZCwgZmV0Y2gsIGFuZCBzYXZlIGNvbmZpZ3VyYXRpb24gKG5pbSkuCitjb25maWdkaWFsb2cucHkgICAjIERpc3BsYXkgdXNlciBjb25maWd1cmF0aW9uIGRpYWxvZ3MuCitjb25maWdfaGVscC5weSAgICAjIFNwZWNpZnkgaGVscCBzb3VyY2UgaW4gY29uZmlnZGlhbG9nLgorY29uZmlnX2tleS5weSAgICAgIyBDaGFuZ2Uga2V5YmluZGluZ3MuCitkeW5vcHRpb24ucHkgICAgICAjIERlZmluZSBtdXRhYmxlIE9wdGlvbk1lbnUgd2lkZ2V0IChuaW0pLgorZGVidWdvYmoucHkgICAgICAgIyBEZWZpbmUgY2xhc3MgdXNlZCBpbiBzdGFja3ZpZXdlci4KK2RlYnVnb2JqX3IucHkgICAgICMgQ29tbXVuaWNhdGUgb2JqZWN0cyBiZXR3ZWVuIHByb2Nlc3NlcyB3aXRoIHJwYyAobmltKS4KK2RlYnVnZ2VyLnB5ICAgICAgICMgRGVidWcgY29kZSBydW4gZnJvbSBzaGVsbCBvciBlZGl0b3I7IHNob3cgd2luZG93LgorZGVidWdnZXJfci5weSAgICAgIyBEZWJ1ZyBjb2RlIHJ1biBpbiByZW1vdGUgcHJvY2Vzcy4KK2RlbGVnYXRvci5weSAgICAgICMgRGVmaW5lIGJhc2UgY2xhc3MgZm9yIGRlbGVnYXRvcnMgKG5pbSkuCitlZGl0b3IucHkgICAgICAgICAjIERlZmluZSBtb3N0IG9mIGVkaXRvciBhbmQgdXRpbGl0eSBmdW5jdGlvbnMuCitmaWxlbGlzdC5weSAgICAgICAjIE9wZW4gZmlsZXMgYW5kIG1hbmFnZSBsaXN0IG9mIG9wZW4gd2luZG93cyAobmltKS4KK2dyZXAucHkgICAgICAgICAgICMgRmluZCBhbGwgb2NjdXJyZW5jZXMgb2YgcGF0dGVybiBpbiBtdWx0aXBsZSBmaWxlcy4KIGhlbHAucHkgICAgICAgICAgICMgRGlzcGxheSBJRExFJ3MgaHRtbCBkb2MuCi1rZXliaW5kaW5nRGlhbG9nLnB5ICAjIENoYW5nZSBrZXliaW5kaW5ncy4KLW1hY29zeFN1cHBvcnQucHkgICMgSGVscCBJRExFIHJ1biBvbiBNYWNzIChuaW0pLgoraGVscF9hYm91dC5weSAgICAgIyBEaXNwbGF5IEFib3V0IElETEUgZGlhbG9nLgoraGlzdG9yeS5weSAgICAgICAgIyBHZXQgcHJldmlvdXMgb3IgbmV4dCB1c2VyIGlucHV0IGluIHNoZWxsIChuaW0pCitoeXBlcnBhcnNlci5weSAgICAjIFBhcnNlIGNvZGUgYXJvdW5kIGEgZ2l2ZW4gaW5kZXguCitpb21lbnUucHkgICAgICAgICAjIE9wZW4sIHJlYWQsIGFuZCB3cml0ZSBmaWxlcworbWFjb3N4LnB5ICAgICAgICAgIyBIZWxwIElETEUgcnVuIG9uIE1hY3MgKG5pbSkuCittYWlubWVudS5weSAgICAgICAjIERlZmluZSBtb3N0IG9mIElETEUgbWVudS4KK211bHRpY2FsbC5weSAgICAgICMgV3JhcCB0ayB3aWRnZXQgdG8gYWxsb3cgbXVsdGlwbGUgY2FsbHMgcGVyIGV2ZW50IChuaW0pLgorb3V0d2luLnB5ICAgICAgICAgIyBDcmVhdGUgd2luZG93IGZvciBncmVwIG91dHB1dC4KK3BhcmFncmFwaC5weSAgICAgICMgUmUtd3JhcCBtdWx0aWxpbmUgc3RyaW5ncyBhbmQgY29tbWVudHMuCitwYXJlbm1hdGNoLnB5ICAgICAjIE1hdGNoIGZlbmNlcG9zdHM6ICgpLCBbXSwgYW5kIHt9LgorcGF0aGJyb3dzZXIucHkgICAgIyBDcmVhdGUgcGF0aCBicm93c2VyIHdpbmRvdy4KK3BlcmNvbGF0b3IucHkgICAgICMgTWFuYWdlIGRlbGVnYXRvciBzdGFjayAobmltKS4KK3B5cGFyc2UucHkgICAgICAgICMgR2l2ZSBpbmZvcm1hdGlvbiBvbiBjb2RlIGluZGVudGF0aW9uCitweXNoZWxsLnB5ICAgICAgICAjIFN0YXJ0IElETEUsIG1hbmFnZSBzaGVsbCwgY29tcGxldGUgZWRpdG9yIHdpbmRvdworcXVlcnkucHkgICAgICAgICAgIyBRdWVyeSB1c2VyIGZvciBpbmZvcm1hdGlvbgorcmVkaXJlY3Rvci5weSAgICAgIyBJbnRlcmNlcHQgd2lkZ2V0IHN1YmNvbW1hbmRzIChmb3IgcGVyY29sYXRvcikgKG5pbSkuCityZXBsYWNlLnB5ICAgICAgICAjIFNlYXJjaCBhbmQgcmVwbGFjZSBwYXR0ZXJuIGluIHRleHQuCiBycGMucHkgICAgICAgICAgICAjIENvbW11aWNhdGUgYmV0d2VlbiBpZGxlIGFuZCB1c2VyIHByb2Nlc3NlcyAobmltKS4KK3JzdHJpcC5weSAgICAgICAgICMgU3RyaXAgdHJhaWxpbmcgd2hpdGVzcGFjZS4KIHJ1bi5weSAgICAgICAgICAgICMgTWFuYWdlIHVzZXIgY29kZSBleGVjdXRpb24gc3VicHJvY2Vzcy4KK3J1bnNjcmlwdC5weSAgICAgICMgQ2hlY2sgYW5kIHJ1biB1c2VyIGNvZGUuCitzY3JvbGxlZGxpc3QucHkgICAjIERlZmluZSBzY3JvbGxlZGxpc3Qgd2lkZ2V0IGZvciBJRExFIChuaW0pLgorc2VhcmNoLnB5ICAgICAgICAgIyBTZWFyY2ggZm9yIHBhdHRlcm4gaW4gdGV4dC4KK3NlYXJjaGJhc2UucHkgICAgICMgRGVmaW5lIGJhc2UgZm9yIHNlYXJjaCwgcmVwbGFjZSwgYW5kIGdyZXAgZGlhbG9ncy4KK3NlYXJjaGVuZ2luZS5weSAgICMgRGVmaW5lIGVuZ2luZSBmb3IgYWxsIDMgc2VhcmNoIGRpYWxvZ3MuCitzdGFja3ZpZXdlci5weSAgICAjIFZpZXcgc3RhY2sgYWZ0ZXIgZXhjZXB0aW9uLgorc3RhdHVzYmFyLnB5ICAgICAgIyBEZWZpbmUgc3RhdHVzIGJhciBmb3Igd2luZG93cyAobmltKS4KIHRhYmJlZHBhZ2VzLnB5ICAgICMgRGVmaW5lIHRhYmJlZCBwYWdlcyB3aWRnZXQgKG5pbSkuCi10ZXh0Vmlldy5weSAgICAgICAjIERlZmluZSByZWFkLW9ubHkgdGV4dCB3aWRnZXQgKG5pbSkuCit0ZXh0dmlldy5weSAgICAgICAjIERlZmluZSByZWFkLW9ubHkgdGV4dCB3aWRnZXQgKG5pbSkuCit0cmVlLnB5ICAgICAgICAgICAjIERlZmluZSB0cmVlIHdpZGdlciwgdXNlZCBpbiBicm93c2VycyAobmltKS4KK3VuZG8ucHkgICAgICAgICAgICMgTWFuYWdlIHVuZG8gc3RhY2suCit3aW5kb3dzLnB5ICAgICAgICAjIE1hbmFnZSB3aW5kb3cgbGlzdCBhbmQgZGVmaW5lIGxpc3RlZCB0b3AgbGV2ZWwuCit6b29taGVpZ2h0LnB5ICAgICAjIFpvb20gd2luZG93IHRvIGZ1bGwgaGVpZ2h0IG9mIHNjcmVlbi4KIAogQ29uZmlndXJhdGlvbgogLS0tLS0tLS0tLS0tLQpAQCAtMTA0LDEyNyArMTA0LDE0OCBAQAogCiBTdWJkaXJlY3RvcmllcwogLS0tLS0tLS0tLS0tLS0KLUljb25zICAjIHNtYWxsIGltYWdlIGZpbGVzCi1pZGxlX3Rlc3QgICMgZmlsZXMgZm9yIGh1bWFuIHRlc3QgYW5kIGF1dG9tYXRlZCB1bml0IHRlc3RzCitJY29ucyAgICAgICAgIyBzbWFsbCBpbWFnZSBmaWxlcworaWRsZV90ZXN0ICAgICMgZmlsZXMgZm9yIGh1bWFuIHRlc3QgYW5kIGF1dG9tYXRlZCB1bml0IHRlc3RzCiAKIFVudXNlZCBhbmQgRGVwcmVjYXRlZCBmaWxlcyBhbmQgb2JqZWN0cyAobmltKQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1FZGl0b3JXaW5kb3cucHk6IEhlbHBkaWFsb2cgYW5kIGhlbHBEaWFsb2cKLVRvb2xUaXAucHk6IHVudXNlZC4KLWhlbHAudHh0Ci1pZGxldmVyLnB5Cit0b29sdGlwLnB5ICMgdW51c2VkCisKIAogCiBJRExFIE1FTlVTCi1Ub3AgbGV2ZWwgaXRlbXMgYW5kIG1vc3Qgc3VibWVudSBpdGVtcyBhcmUgZGVmaW5lZCBpbiBCaW5kaW5ncy4KK1RvcCBsZXZlbCBpdGVtcyBhbmQgbW9zdCBzdWJtZW51IGl0ZW1zIGFyZSBkZWZpbmVkIGluIG1haW5tZW51LgogRXh0ZW5zdGlvbnMgYWRkIHN1Ym1lbnUgaXRlbXMgd2hlbiBhY3RpdmUuICBUaGUgbmFtZXMgZ2l2ZW4gYXJlCiBmb3VuZCwgcXVvdGVkLCBpbiBvbmUgb2YgdGhlc2UgbW9kdWxlcywgcGFpcmVkIHdpdGggYSAnPDxwc2V1ZG9ldmVudD4+Jy4KIEVhY2ggcHNldWRvZXZlbnQgaXMgYm91bmQgdG8gYW4gZXZlbnQgaGFuZGxlci4gIFNvbWUgZXZlbnQgaGFuZGxlcnMKIGNhbGwgYW5vdGhlciBmdW5jdGlvbiB0aGF0IGRvZXMgdGhlIGFjdHVhbCB3b3JrLiAgVGhlIGFubm90YXRpb25zIGJlbG93CiBhcmUgaW50ZW5kZWQgdG8gYXQgbGVhc3QgZ2l2ZSB0aGUgbW9kdWxlIHdoZXJlIHRoZSBhY3R1YWwgd29yayBpcyBkb25lLgorJ2VFVycgPSBlZGl0b3IuRWRpdG9yV2luZG93CiAKLUZpbGUgICMgSU9CaW5kaWcgZXhjZXB0IGFzIG5vdGVkCi0gIE5ldyBGaWxlCi0gIE9wZW4uLi4gICMgSU9CaW5kaW5nLm9wZW4KLSAgT3BlbiBNb2R1bGUKK0ZpbGUKKyAgTmV3IEZpbGUgICAgICAgICAjIGVFVy5uZXdfY2FsbGJhY2sKKyAgT3Blbi4uLiAgICAgICAgICAjIGlvbWVudS5vcGVuCisgIE9wZW4gTW9kdWxlICAgICAgIyBlRXcub3Blbl9tb2R1bGUKICAgUmVjZW50IEZpbGVzCi0gIENsYXNzIEJyb3dzZXIgICMgQ2xhc3MgQnJvd3NlcgotICBQYXRoIEJyb3dzZXIgICMgUGF0aCBCcm93c2VyCisgIENsYXNzIEJyb3dzZXIgICAgIyBlRVcub3Blbl9jbGFzc19icm93c2VyLCBicm93c2VyLkNsYXNzQnJvd3NlcgorICBQYXRoIEJyb3dzZXIgICAgICMgZUVXLm9wZW5fcGF0aF9icm93c2VyLCBwYXRoYnJvd3NlcgogICAtLS0KLSAgU2F2ZSAgIyBJREJpbmRpbmcuc2F2ZQotICBTYXZlIEFzLi4uICAjIElPQmluZGluZy5zYXZlX2FzCi0gIFNhdmUgQ29weSBBcy4uLiAgIyBJT0JpbmRsaW5nLnNhdmVfYV9jb3B5CisgIFNhdmUgICAgICAgICAgICAgIyBpb21lbnUuc2F2ZQorICBTYXZlIEFzLi4uICAgICAgICMgaW9tZW51LnNhdmVfYXMKKyAgU2F2ZSBDb3B5IEFzLi4uICAjIGlvbWVudS5zYXZlX2FfY29weQogICAtLS0KLSAgUHJpbnQgV2luZG93ICAjIElPQmluZGluZy5wcmludF93aW5kb3cKKyAgUHJpbnQgV2luZG93ICAgICAjIGlvbWVudS5wcmludF93aW5kb3cKICAgLS0tCi0gIENsb3NlCi0gIEV4aXQKKyAgQ2xvc2UgICAgICAgICAgICAjIGVFVy5jbG9zZV9ldmVudAorICBFeGl0ICAgICAgICAgICAgICMgZmxpc3QuY2xvc2VfYWxsX2NhbGxiYWNrIChib3VuZCBpbiBlRVcpCiAKIEVkaXQKLSAgVW5kbyAgIyB1bmRvRGVsZWdhdG9yCi0gIFJlZG8gICMgdW5kb0RlbGVnYXRvcgotICAtLS0KLSAgQ3V0Ci0gIENvcHkKLSAgUGFzdGUKLSAgU2VsZWN0IEFsbAotICAtLS0gICMgTmV4dCA1IGl0ZW1zIHVzZSBTZWFyY2hFbmdpbmU7IGRpYWxvZ3MgdXNlIFNlYXJjaERpYWxvZ0Jhc2UKLSAgRmluZCAgIyBTZWFyY2ggRGlhbG9nCi0gIEZpbmQgQWdhaW4KLSAgRmluZCBTZWxlY3Rpb24KLSAgRmluZCBpbiBGaWxlcy4uLiAgIyBHcmVwRGlhbG9nCi0gIFJlcGxhY2UuLi4gICMgUmVwbGFjZURpYWxvZwotICBHbyB0byBMaW5lCi0gIFNob3cgQ29tcGxldGlvbnMgICMgQXV0b0NvbXBsZXRlIGV4dGVuc2lvbiBhbmQgQXV0b0NvbXBsZXRlV2lkb3cgKCZIUCkKLSAgRXhwYW5kIFdvcmQgICMgQXV0b0V4cGFuZCBleHRlbnNpb24KLSAgU2hvdyBjYWxsIHRpcCAgIyBDYWxsdGlwcyBleHRlbnNpb24gYW5kIENhbGx0aXBXaW5kb3cgKCYgSHlwZXJwYXJzZXIpCi0gIFNob3cgc3Vycm91bmRpbmcgcGFyZW5zICAjIFBhcmVuTWF0Y2ggKCYgSHlwZXJwYXJzZXIpCisgIFVuZG8gICAgICAgICAgICAgIyB1bmRvZGVsZWdhdG9yCisgIFJlZG8gICAgICAgICAgICAgIyB1bmRvZGVsZWdhdG9yCisgIC0tLSAgICAgICAgICAgICAgIyBlRVcucmlnaHRfbWVudV9ldmVudAorICBDdXQgICAgICAgICAgICAgICMgZUVXLmN1dAorICBDb3B5ICAgICAgICAgICAgICMgZUVXLmNvcHkKKyAgUGFzdGUgICAgICAgICAgICAjIGVFVy5wYXN0CisgIFNlbGVjdCBBbGwgICAgICAgIyBlRVcuc2VsZWN0X2FsbCAoKyBzZWUgZUVXLnJlbW92ZV9zZWxlY3Rpb24pCisgIC0tLSAgICAgICAgICAgICAgIyBOZXh0IDUgaXRlbXMgdXNlIHNlYXJjaGVuZ2luZTsgZGlhbG9ncyB1c2Ugc2VhcmNoYmFzZQorICBGaW5kICAgICAgICAgICAgICMgZUVXLmZpbmRfZXZlbnQsIHNlYXJjaC5TZWFyY2hEaWFsb2cuZmluZAorICBGaW5kIEFnYWluICAgICAgICMgZUVXLmZpbmRfYWdhaW5fZXZlbnQsIHNTRC5maW5kX2FnYWluCisgIEZpbmQgU2VsZWN0aW9uICAgIyBlRVcuZmluZF9zZWxlY3Rpb25fZXZlbnQsIHNTRC5maW5kX3NlbGVjdGlvbgorICBGaW5kIGluIEZpbGVzLi4uICMgZUVXLmZpbmRfaW5fZmlsZXNfZXZlbnQsIGdyZXAKKyAgUmVwbGFjZS4uLiAgICAgICAjIGVFVy5yZXBsYWNlX2V2ZW50LCByZXBsYWNlLlJlcGxhY2VEaWFsb2cucmVwbGFjZQorICBHbyB0byBMaW5lICAgICAgICMgZUVXLmdvdG9fbGluZV9ldmVudAorICBTaG93IENvbXBsZXRpb25zICMgYXV0b2NvbXBsZXRlIGV4dGVuc2lvbiBhbmQgYXV0b2NvbXBsZXRlV2lkb3cgKCZIUCkKKyAgRXhwYW5kIFdvcmQgICAgICAjIGF1dG9leHBhbmQgZXh0ZW5zaW9uCisgIFNob3cgY2FsbCB0aXAgICAgIyBDYWxsdGlwcyBleHRlbnNpb24gYW5kIENhbGx0aXBXaW5kb3cgKCYgSHlwZXJwYXJzZXIpCisgIFNob3cgc3Vycm91bmRpbmcgcGFyZW5zICAjIHBhcmVubWF0Y2ggKCYgSHlwZXJwYXJzZXIpCiAKLVNoZWxsICAjIFB5U2hlbGwKLSAgVmlldyBMYXN0IFJlc3RhcnQgICAgIyBQeVNoZWxsLlB5U2hlbGwudmlld19yZXN0YXJ0X21hcmsKLSAgUmVzdGFydCBTaGVsbCAgICAgICAgIyBQeVNoZWxsLlB5U2hlbGwucmVzdGFydF9zaGVsbAorU2hlbGwgICMgcHlzaGVsbAorICBWaWV3IExhc3QgUmVzdGFydCAgICAjIHB5c2hlbGwuUHlTaGVsbC52aWV3X3Jlc3RhcnRfbWFyaworICBSZXN0YXJ0IFNoZWxsICAgICAgICAjIHB5c2hlbGwuUHlTaGVsbC5yZXN0YXJ0X3NoZWxsCiAgIEludGVycnVwdCBFeGVjdXRpb24gICMgcHlzaGVsbC5QeVNoZWxsLmNhbmNlbF9jYWxsYmFjawogCiBEZWJ1ZyAoU2hlbGwgb25seSkKICAgR28gdG8gRmlsZS9MaW5lCi0gIERlYnVnZ2VyICAgICAgICAgICAgICAgIyBEZWJ1Z2dlciwgUmVtb3RlRGVidWdnZXIsIFB5U2hlbGwudG9nZ2xlX2RlYnVnZXIKLSAgU3RhY2sgVmlld2VyICAgICAgICAgICAjIFN0YWNrVmlld2VyLCBQeVNoZWxsLm9wZW5fc3RhY2tfdmlld2VyCi0gIEF1dG8tb3BlbiBTdGFjayBWaWV3ZXIgIyBTdGFja1ZpZXdlcgorICBkZWJ1Z2dlciAgICAgICAgICMgZGVidWdnZXIsIGRlYnVnZ2VyX3IsIFB5U2hlbGwudG9nZ2xlX2RlYnVnZXIKKyAgU3RhY2sgVmlld2VyICAgICAjIHN0YWNrdmlld2VyLCBQeVNoZWxsLm9wZW5fc3RhY2tfdmlld2VyCisgIEF1dG8tb3BlbiBTdGFjayBWaWV3ZXIgICMgc3RhY2t2aWV3ZXIKIAogRm9ybWF0IChFZGl0b3Igb25seSkKLSAgSW5kZW50IFJlZ2lvbgotICBEZWRlbnQgUmVnaW9uCi0gIENvbW1lbnQgT3V0IFJlZ2lvbgotICBVbmNvbW1lbnQgUmVnaW9uCi0gIFRhYmlmeSBSZWdpb24KLSAgVW50YWJpZnkgUmVnaW9uCi0gIFRvZ2dsZSBUYWJzCi0gIE5ldyBJbmRlbnQgV2lkdGgKLSAgRm9ybWF0IFBhcmFncmFwaCAgIyBGb3JtYXRQYXJhZ3JhcGggZXh0ZW5zaW9uCisgIEluZGVudCBSZWdpb24gICAgIyBlRVcuaW5kZW50X3JlZ2lvbl9ldmVudAorICBEZWRlbnQgUmVnaW9uICAgICMgZUVXLmRlZGVudF9yZWdpb25fZXZlbnQKKyAgQ29tbWVudCBPdXQgUmVnLiAjIGVFVy5jb21tZW50X3JlZ2lvbl9ldmVudAorICBVbmNvbW1lbnQgUmVnaW9uICMgZUVXLnVuY29tbWVudF9yZWdpb25fZXZlbnQKKyAgVGFiaWZ5IFJlZ2lvbiAgICAjIGVFVy50YWJpZnlfcmVnaW9uX2V2ZW50CisgIFVudGFiaWZ5IFJlZ2lvbiAgIyBlRVcudW50YWJpZnlfcmVnaW9uX2V2ZW50CisgIFRvZ2dsZSBUYWJzICAgICAgIyBlRVcudG9nZ2xlX3RhYnNfZXZlbnQKKyAgTmV3IEluZGVudCBXaWR0aCAjIGVFVy5jaGFuZ2VfaW5kZW50d2lkdGhfZXZlbnQKKyAgRm9ybWF0IFBhcmFncmFwaCAjIHBhcmFncmFwaCBleHRlbnNpb24KICAgLS0tCi0gIFN0cmlwIHRhaWxpbmcgd2hpdGVzcGFjZSAgIyBSc3RyaXBFeHRlbnNpb24gZXh0ZW5zaW9uCisgIFN0cmlwIHRhaWxpbmcgd2hpdGVzcGFjZSAgIyByc3RyaXAgZXh0ZW5zaW9uCiAKIFJ1biAoRWRpdG9yIG9ubHkpCi0gIFB5dGhvbiBTaGVsbCAgIyBQeVNoZWxsCisgIFB5dGhvbiBTaGVsbCAgICAgIyBweXNoZWxsCiAgIC0tLQotICBDaGVjayBNb2R1bGUgICMgU2NyaXB0QmluZGluZwotICBSdW4gTW9kdWxlICAjIFNjcmlwdEJpbmRpbmcKKyAgQ2hlY2sgTW9kdWxlICAgICAjIHJ1bnNjcmlwdAorICBSdW4gTW9kdWxlICAgICAgICMgcnVuc2NyaXB0CiAKIE9wdGlvbnMKLSAgQ29uZmlndXJlIElETEUgICMgY29uZmlnRGlhbG9nCisgIENvbmZpZ3VyZSBJRExFICAgIyBlRVcuY29uZmlnX2RpYWxvZywgY29uZmlnZGlhbG9nCiAgICAgKHRhYnMgaW4gdGhlIGRpYWxvZykKLSAgICBGb250IHRhYiAgIyBvbmZpZy1tYWluLmRlZgotICAgIEhpZ2hsaWdodCB0YWIgICMgY29uZmlnU2VjdGlvbk5hbWVEaWFsb2csIGNvbmZpZy1oaWdobGlnaHQuZGVmCi0gICAgS2V5cyB0YWIgICMga2V5YmluZGluZ0RpYWxvZywgY29uZmlnU2VjdGlvbk5hbWVEaWFsb2csIG9uZmlnLWtldXMuZGVmCi0gICAgR2VuZXJhbCB0YWIgICMgY29uZmlnSGVscFNvdXJjZUVkaXQsIGNvbmZpZy1tYWluLmRlZgotICBDb25maWd1cmUgRXh0ZW5zaW9ucyAgIyBjb25maWdEaWFsb2cKLSAgICBYeXogdGFiICAjIHh5ei5weSwgY29uZmlnLWV4dGVuc2lvbnMuZGVmCisgICAgRm9udCB0YWIgICAgICAgIyBjb25maWctbWFpbi5kZWYKKyAgICBIaWdobGlnaHQgdGFiICAjIHF1ZXJ5LCBjb25maWctaGlnaGxpZ2h0LmRlZgorICAgIEtleXMgdGFiICAgICAgICMgcXVlcnksIGNvbmZpZ19rZXksIGNvbmZpZ19rZXlzLmRlZgorICAgIEdlbmVyYWwgdGFiICAgICMgY29uZmlnX2hlbHAsIGNvbmZpZy1tYWluLmRlZgorICAgIEV4dGVuc2lvbnMgdGFiICMgY29uZmlnLWV4dGVuc2lvbnMuZGVmLCBjb3JyZXNwb25kaW5nIC5weQogICAtLS0KLSAgQ29kZSBDb250ZXh0IChlZGl0b3Igb25seSkgICMgQ29kZUNvbnRleHQgZXh0ZW5zaW9uCisgIENvZGUgQ29udGV4dCAoZWQpIyBjb2RlY29udGV4dCBleHRlbnNpb24KIAogV2luZG93Ci0gIFpvb21oZWlnaHQgICMgWm9vbUhlaWdodCBleHRlbnNpb24KKyAgWm9vbWhlaWdodCAgICAgICAjIHpvb21oZWlnaHQgZXh0ZW5zaW9uCiAgIC0tLQotICA8b3BlbiB3aW5kb3dzPiAgIyBXaW5kb3dMaXN0CisgIDxvcGVuIHdpbmRvd3M+ICAgIyB3aW5kb3dzCiAKIEhlbHAKLSAgQWJvdXQgSURMRSAgIyBhYm91dERpYWxvZworICBBYm91dCBJRExFICAgICAgICMgZUVXLmFib3V0X2RpYWxvZywgaGVscF9hYm91dC5BYm91dERpYWxvZyAKICAgLS0tCi0gIElETEUgSGVscCAgIyBoZWxwCi0gIFB5dGhvbiBEb2MKLSAgVHVydGxlIERlbW8KKyAgSURMRSBIZWxwICAgICAgICAjIGVFVy5oZWxwX2RpYWxvZywgaGVscHNob3dfaWRsZWhlbHAKKyAgUHl0aG9uIERvYyAgICAgICAjIGVFVy5weXRob25fZG9jcworICBUdXJ0bGUgRGVtbyAgICAgICMgZUVXLm9wZW5fdHVydGxlX2RlbW8KICAgLS0tCiAgIDxvdGhlciBoZWxwIHNvdXJjZXM+CiAKIDxDb250ZXh0IE1lbnU+IChyaWdodCBjbGljaykKLURlZmluZWQgaW4gRWRpdG9yV2luZG93LCBQeVNoZWxsLCBPdXRwdXQKLSAgIEN1dAotICAgQ29weQotICAgUGFzdGUKLSAgIC0tLQotICAgR28gdG8gZmlsZS9saW5lIChzaGVsbCBhbmQgb3V0cHV0IG9ubHkpCi0gICBTZXQgQnJlYWtwb2ludCAoZWRpdG9yIG9ubHkpCi0gICBDbGVhciBCcmVha3BvaW50IChlZGl0b3Igb25seSkKLSBEZWZpbmVkIGluIERlYnVnZ2VyCi0gICBHbyB0byBzb3VyY2UgbGluZQotICAgU2hvdyBzdGFjayBmcmFtZQorICBEZWZpbmVkIGluIGVkaXRvciwgUHlTaGVscHlzaGVsbHV0CisgICAgQ3V0CisgICAgQ29weQorICAgIFBhc3RlCisgICAgLS0tCisgICAgR28gdG8gZmlsZS9saW5lIChzaGVsbCBhbmQgb3V0cHV0IG9ubHkpCisgICAgU2V0IEJyZWFrcG9pbnQgKGVkaXRvciBvbmx5KQorICAgIENsZWFyIEJyZWFrcG9pbnQgKGVkaXRvciBvbmx5KQorICBEZWZpbmVkIGluIGRlYnVnZ2VyCisgICAgR28gdG8gc291cmNlIGxpbmUKKyAgICBTaG93IHN0YWNrIGZyYW1lCisKKzxObyBtZW51PgorQ2VudGVyIEluc2VydCAgICAgICMgZUVXLmNlbnRlcl9pbnNlcnRfZXZlbnQKKworICAKK0NPREUgU1RZTEUgLS0gR2VuZXJhbGx5IFBFUCA4LgorCitpbXBvcnQKKy0tLS0tLQorUHV0IGltcG9ydCBhdCB0aGUgdG9wLCB1bmxlc3MgdGhlcmUgaXMgYSBnb29kIHJlYXNvbiBvdGhlcndpc2UuCitQRVAgOCBzYXlzIHRvIGdyb3VwIHN0ZGxpYiwgM3JkLXBhcnR5IGRlcGVuZGVuY2llcywgYW5kIHBhY2thZ2UgaW1wb3J0cy4KK0ZvciBpZGxlbGliLCB0aGUgZ3JvdXBzIGFyZSBnZW5lcmFsIHN0ZGxpYiwgdGtpbnRlciwgYW5kIGlkbGVsaWIuCitTb3J0IG1vZHVsZXMgd2l0aGluIGVhY2ggZ3JvdXAsIGV4Y2VwdCB0aGF0IHRraW50ZXIudHRrIGZvbGxvd3MgdGtpbnRlci4KK1NvcnQgJ2Zyb20gaWRsZWxpYiBpbXBvcnQgbW9kMScgYW5kICdmcm9tIGlkbGVsaWIubW9kMiBpbXBvcnQgb2JqZWN0JwordG9nZXRoZXIgYnkgbW9kdWxlLCBpZ25vcmluZyB3aXRoaW4gbW9kdWxlIG9iamVjdHMuCitQdXQgJ2ltcG9ydCBfX21haW5fXycgYWZ0ZXIgb3RoZXIgaWRsZWxpYiBpbXBvcnRzLgorCitJbXBvcnRzIG9ubHkgbmVlZGVkIGZvciB0ZXN0aW5nIGFyZSBwdXQgbm90IGF0IHRoZSB0b3AgYnV0IGluIGFuCitodGVzdCBmdW5jdGlvbiBkZWYgb3IgImlmIF9fbmFtZV9fID09ICdfX21haW5fXyciIGNsYXVzZS4KKworV2l0aGluIG1vZHVsZSBpbXBvcnRzIGxpa2UgImZyb20gaWRsZWxpYi5tb2QgaW1wb3J0IGNsYXNzIiBtYXkgY2F1c2UKK2NpcmN1bGFyIGltcG9ydHMgdG8gZGVhZGxvY2suICBFdmVuIHdpdGhvdXQgdGhpcywgY2lyY3VsYXIgaW1wb3J0cyBtYXkKK3JlcXVpcmUgYXQgbGVhc3Qgb25lIG9mIHRoZSBpbXBvcnRzIHRvIGJlIGRlbGF5ZWQgdW50aWwgYSBmdW5jdGlvbiBjYWxsLgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvX19pbml0X18ucHkgYi9MaWIvaWRsZWxpYi9fX2luaXRfXy5weQppbmRleCA3MTFmNjFiLi43OTFkZGVhIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9fX2luaXRfXy5weQorKysgYi9MaWIvaWRsZWxpYi9fX2luaXRfXy5weQpAQCAtMSw4ICsxLDEwIEBACiAiIiJUaGUgaWRsZWxpYiBwYWNrYWdlIGltcGxlbWVudHMgdGhlIElkbGUgYXBwbGljYXRpb24uCiAKIElkbGUgaW5jbHVkZXMgYW4gaW50ZXJhY3RpdmUgc2hlbGwgYW5kIGVkaXRvci4KK1N0YXJ0aW5nIHdpdGggUHl0aG9uIDMuNiwgSURMRSByZXF1aXJlcyB0Y2wvdGsgOC41IG9yIGxhdGVyLgogVXNlIHRoZSBmaWxlcyBuYW1lZCBpZGxlLiogdG8gc3RhcnQgSWRsZS4KIAogVGhlIG90aGVyIGZpbGVzIGFyZSBwcml2YXRlIGltcGxlbWVudGF0aW9ucy4gIFRoZWlyIGRldGFpbHMgYXJlIHN1YmplY3QgdG8KIGNoYW5nZS4gIFNlZSBQRVAgNDM0IGZvciBtb3JlLiAgSW1wb3J0IHRoZW0gYXQgeW91ciBvd24gcmlzay4KICIiIgordGVzdGluZyA9IEZhbHNlICAjIFNldCBUcnVlIGJ5IHRlc3QudGVzdF9pZGxlLgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvX19tYWluX18ucHkgYi9MaWIvaWRsZWxpYi9fX21haW5fXy5weQppbmRleCAyZWRmNWY3Li42MzQ5ZWM3IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9fX21haW5fXy5weQorKysgYi9MaWIvaWRsZWxpYi9fX21haW5fXy5weQpAQCAtMyw2ICszLDYgQEAKIAogUnVuIElETEUgYXMgcHl0aG9uIC1tIGlkbGVsaWIKICIiIgotaW1wb3J0IGlkbGVsaWIuUHlTaGVsbAotaWRsZWxpYi5QeVNoZWxsLm1haW4oKQoraW1wb3J0IGlkbGVsaWIucHlzaGVsbAoraWRsZWxpYi5weXNoZWxsLm1haW4oKQogIyBUaGlzIGZpbGUgZG9lcyBub3Qgd29yayBmb3IgMi43OyBTZWUgaXNzdWUgMjQyMTIuCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9BdXRvQ29tcGxldGUucHkgYi9MaWIvaWRsZWxpYi9hdXRvY29tcGxldGUucHkKc2ltaWxhcml0eSBpbmRleCA4NSUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvQXV0b0NvbXBsZXRlLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9hdXRvY29tcGxldGUucHkKaW5kZXggZmYwODVkNS4uMWU0NGZhNSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvQXV0b0NvbXBsZXRlLnB5CisrKyBiL0xpYi9pZGxlbGliL2F1dG9jb21wbGV0ZS5weQpAQCAtMSwyOSArMSwzMCBAQAotIiIiQXV0b0NvbXBsZXRlLnB5IC0gQW4gSURMRSBleHRlbnNpb24gZm9yIGF1dG9tYXRpY2FsbHkgY29tcGxldGluZyBuYW1lcy4KKyIiImF1dG9jb21wbGV0ZS5weSAtIEFuIElETEUgZXh0ZW5zaW9uIGZvciBhdXRvbWF0aWNhbGx5IGNvbXBsZXRpbmcgbmFtZXMuCiAKIFRoaXMgZXh0ZW5zaW9uIGNhbiBjb21wbGV0ZSBlaXRoZXIgYXR0cmlidXRlIG5hbWVzIG9yIGZpbGUgbmFtZXMuIEl0IGNhbiBwb3AKIGEgd2luZG93IHdpdGggYWxsIGF2YWlsYWJsZSBuYW1lcywgZm9yIHRoZSB1c2VyIHRvIHNlbGVjdCBmcm9tLgogIiIiCiBpbXBvcnQgb3MKLWltcG9ydCBzeXMKIGltcG9ydCBzdHJpbmcKK2ltcG9ydCBzeXMKIAotZnJvbSBpZGxlbGliLmNvbmZpZ0hhbmRsZXIgaW1wb3J0IGlkbGVDb25mCi0KLSMgVGhpcyBzdHJpbmcgaW5jbHVkZXMgYWxsIGNoYXJzIHRoYXQgbWF5IGJlIGluIGFuIGlkZW50aWZpZXIKLUlEX0NIQVJTID0gc3RyaW5nLmFzY2lpX2xldHRlcnMgKyBzdHJpbmcuZGlnaXRzICsgIl8iCi0KLSMgVGhlc2UgY29uc3RhbnRzIHJlcHJlc2VudCB0aGUgdHdvIGRpZmZlcmVudCB0eXBlcyBvZiBjb21wbGV0aW9ucworIyBUaGVzZSBjb25zdGFudHMgcmVwcmVzZW50IHRoZSB0d28gZGlmZmVyZW50IHR5cGVzIG9mIGNvbXBsZXRpb25zLgorIyBUaGV5IG11c3QgYmUgZGVmaW5lZCBoZXJlIHNvIGF1dG9jb21wbGVfdyBjYW4gaW1wb3J0IHRoZW0uCiBDT01QTEVURV9BVFRSSUJVVEVTLCBDT01QTEVURV9GSUxFUyA9IHJhbmdlKDEsIDIrMSkKIAotZnJvbSBpZGxlbGliIGltcG9ydCBBdXRvQ29tcGxldGVXaW5kb3cKLWZyb20gaWRsZWxpYi5IeXBlclBhcnNlciBpbXBvcnQgSHlwZXJQYXJzZXIKLQorZnJvbSBpZGxlbGliIGltcG9ydCBhdXRvY29tcGxldGVfdworZnJvbSBpZGxlbGliLmNvbmZpZyBpbXBvcnQgaWRsZUNvbmYKK2Zyb20gaWRsZWxpYi5oeXBlcnBhcnNlciBpbXBvcnQgSHlwZXJQYXJzZXIKIGltcG9ydCBfX21haW5fXwogCisjIFRoaXMgc3RyaW5nIGluY2x1ZGVzIGFsbCBjaGFycyB0aGF0IG1heSBiZSBpbiBhbiBpZGVudGlmaWVyLgorIyBUT0RPIFVwZGF0ZSB0aGlzIGhlcmUgYW5kIGVsc2V3aGVyZS4KK0lEX0NIQVJTID0gc3RyaW5nLmFzY2lpX2xldHRlcnMgKyBzdHJpbmcuZGlnaXRzICsgIl8iCisKIFNFUFMgPSBvcy5zZXAKIGlmIG9zLmFsdHNlcDogICMgZS5nLiAnLycgb24gV2luZG93cy4uLgogICAgIFNFUFMgKz0gb3MuYWx0c2VwCiAKKwogY2xhc3MgQXV0b0NvbXBsZXRlOgogCiAgICAgbWVudWRlZnMgPSBbCkBAIC0zNywxOSArMzgsMTcgQEAKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBlZGl0d2luPU5vbmUpOgogICAgICAgICBzZWxmLmVkaXR3aW4gPSBlZGl0d2luCi0gICAgICAgIGlmIGVkaXR3aW4gaXMgTm9uZTogICMgc3VicHJvY2VzcyBhbmQgdGVzdAotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHNlbGYudGV4dCA9IGVkaXR3aW4udGV4dAotICAgICAgICBzZWxmLmF1dG9jb21wbGV0ZXdpbmRvdyA9IE5vbmUKLQotICAgICAgICAjIGlkIG9mIGRlbGF5ZWQgY2FsbCwgYW5kIHRoZSBpbmRleCBvZiB0aGUgdGV4dCBpbnNlcnQgd2hlbiB0aGUgZGVsYXllZAotICAgICAgICAjIGNhbGwgd2FzIGlzc3VlZC4gSWYgX2RlbGF5ZWRfY29tcGxldGlvbl9pZCBpcyBOb25lLCB0aGVyZSBpcyBubwotICAgICAgICAjIGRlbGF5ZWQgY2FsbC4KLSAgICAgICAgc2VsZi5fZGVsYXllZF9jb21wbGV0aW9uX2lkID0gTm9uZQotICAgICAgICBzZWxmLl9kZWxheWVkX2NvbXBsZXRpb25faW5kZXggPSBOb25lCisgICAgICAgIGlmIGVkaXR3aW4gaXMgbm90IE5vbmU6ICAjIG5vdCBpbiBzdWJwcm9jZXNzIG9yIHRlc3QKKyAgICAgICAgICAgIHNlbGYudGV4dCA9IGVkaXR3aW4udGV4dAorICAgICAgICAgICAgc2VsZi5hdXRvY29tcGxldGV3aW5kb3cgPSBOb25lCisgICAgICAgICAgICAjIGlkIG9mIGRlbGF5ZWQgY2FsbCwgYW5kIHRoZSBpbmRleCBvZiB0aGUgdGV4dCBpbnNlcnQgd2hlbgorICAgICAgICAgICAgIyB0aGUgZGVsYXllZCBjYWxsIHdhcyBpc3N1ZWQuIElmIF9kZWxheWVkX2NvbXBsZXRpb25faWQgaXMKKyAgICAgICAgICAgICMgTm9uZSwgdGhlcmUgaXMgbm8gZGVsYXllZCBjYWxsLgorICAgICAgICAgICAgc2VsZi5fZGVsYXllZF9jb21wbGV0aW9uX2lkID0gTm9uZQorICAgICAgICAgICAgc2VsZi5fZGVsYXllZF9jb21wbGV0aW9uX2luZGV4ID0gTm9uZQogCiAgICAgZGVmIF9tYWtlX2F1dG9jb21wbGV0ZV93aW5kb3coc2VsZik6Ci0gICAgICAgIHJldHVybiBBdXRvQ29tcGxldGVXaW5kb3cuQXV0b0NvbXBsZXRlV2luZG93KHNlbGYudGV4dCkKKyAgICAgICAgcmV0dXJuIGF1dG9jb21wbGV0ZV93LkF1dG9Db21wbGV0ZVdpbmRvdyhzZWxmLnRleHQpCiAKICAgICBkZWYgX3JlbW92ZV9hdXRvY29tcGxldGVfd2luZG93KHNlbGYsIGV2ZW50PU5vbmUpOgogICAgICAgICBpZiBzZWxmLmF1dG9jb21wbGV0ZXdpbmRvdzoKQEAgLTgwLDE2ICs3OSwxNyBAQAogICAgICAgICBvcGVuIGEgY29tcGxldGlvbiBsaXN0IGFmdGVyIHRoYXQgKGlmIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUKICAgICAgICAgY29tcGxldGlvbikKICAgICAgICAgIiIiCi0gICAgICAgIGlmIGhhc2F0dHIoZXZlbnQsICJtY19zdGF0ZSIpIGFuZCBldmVudC5tY19zdGF0ZToKLSAgICAgICAgICAgICMgQSBtb2RpZmllciB3YXMgcHJlc3NlZCBhbG9uZyB3aXRoIHRoZSB0YWIsIGNvbnRpbnVlIGFzIHVzdWFsLgotICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIGhhc2F0dHIoZXZlbnQsICJtY19zdGF0ZSIpIGFuZCBldmVudC5tY19zdGF0ZSBvclwKKyAgICAgICAgICAgICAgICBub3Qgc2VsZi50ZXh0LmdldCgiaW5zZXJ0IGxpbmVzdGFydCIsICJpbnNlcnQiKS5zdHJpcCgpOgorICAgICAgICAgICAgIyBBIG1vZGlmaWVyIHdhcyBwcmVzc2VkIGFsb25nIHdpdGggdGhlIHRhYiBvcgorICAgICAgICAgICAgIyB0aGVyZSBpcyBvbmx5IHByZXZpb3VzIHdoaXRlc3BhY2Ugb24gdGhpcyBsaW5lLCBzbyB0YWIuCisgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICBpZiBzZWxmLmF1dG9jb21wbGV0ZXdpbmRvdyBhbmQgc2VsZi5hdXRvY29tcGxldGV3aW5kb3cuaXNfYWN0aXZlKCk6CiAgICAgICAgICAgICBzZWxmLmF1dG9jb21wbGV0ZXdpbmRvdy5jb21wbGV0ZSgpCiAgICAgICAgICAgICByZXR1cm4gImJyZWFrIgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgb3BlbmVkID0gc2VsZi5vcGVuX2NvbXBsZXRpb25zKEZhbHNlLCBUcnVlLCBUcnVlKQotICAgICAgICAgICAgaWYgb3BlbmVkOgotICAgICAgICAgICAgICAgIHJldHVybiAiYnJlYWsiCisgICAgICAgICAgICByZXR1cm4gImJyZWFrIiBpZiBvcGVuZWQgZWxzZSBOb25lCiAKICAgICBkZWYgX29wZW5fY29tcGxldGlvbnNfbGF0ZXIoc2VsZiwgKmFyZ3MpOgogICAgICAgICBzZWxmLl9kZWxheWVkX2NvbXBsZXRpb25faW5kZXggPSBzZWxmLnRleHQuaW5kZXgoImluc2VydCIpCkBAIC0xMDEsOSArMTAxLDggQEAKIAogICAgIGRlZiBfZGVsYXllZF9vcGVuX2NvbXBsZXRpb25zKHNlbGYsICphcmdzKToKICAgICAgICAgc2VsZi5fZGVsYXllZF9jb21wbGV0aW9uX2lkID0gTm9uZQotICAgICAgICBpZiBzZWxmLnRleHQuaW5kZXgoImluc2VydCIpICE9IHNlbGYuX2RlbGF5ZWRfY29tcGxldGlvbl9pbmRleDoKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBzZWxmLm9wZW5fY29tcGxldGlvbnMoKmFyZ3MpCisgICAgICAgIGlmIHNlbGYudGV4dC5pbmRleCgiaW5zZXJ0IikgPT0gc2VsZi5fZGVsYXllZF9jb21wbGV0aW9uX2luZGV4OgorICAgICAgICAgICAgc2VsZi5vcGVuX2NvbXBsZXRpb25zKCphcmdzKQogCiAgICAgZGVmIG9wZW5fY29tcGxldGlvbnMoc2VsZiwgZXZhbGZ1bmNzLCBjb21wbGV0ZSwgdXNlcldhbnRzV2luLCBtb2RlPU5vbmUpOgogICAgICAgICAiIiJGaW5kIHRoZSBjb21wbGV0aW9ucyBhbmQgY3JlYXRlIHRoZSBBdXRvQ29tcGxldGVXaW5kb3cuCkBAIC0xNDgsMTcgKzE0NywxNyBAQAogICAgICAgICAgICAgICAgIGNvbXBfd2hhdCA9IGhwLmdldF9leHByZXNzaW9uKCkKICAgICAgICAgICAgICAgICBpZiBub3QgY29tcF93aGF0IG9yIFwKICAgICAgICAgICAgICAgICAgICAobm90IGV2YWxmdW5jcyBhbmQgY29tcF93aGF0LmZpbmQoJygnKSAhPSAtMSk6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBjb21wX3doYXQgPSAiIgogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgICAgIGlmIGNvbXBsZXRlIGFuZCBub3QgY29tcF93aGF0IGFuZCBub3QgY29tcF9zdGFydDoKLSAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgY29tcF9saXN0cyA9IHNlbGYuZmV0Y2hfY29tcGxldGlvbnMoY29tcF93aGF0LCBtb2RlKQogICAgICAgICBpZiBub3QgY29tcF9saXN0c1swXToKLSAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgc2VsZi5hdXRvY29tcGxldGV3aW5kb3cgPSBzZWxmLl9tYWtlX2F1dG9jb21wbGV0ZV93aW5kb3coKQogICAgICAgICByZXR1cm4gbm90IHNlbGYuYXV0b2NvbXBsZXRld2luZG93LnNob3dfd2luZG93KAogICAgICAgICAgICAgICAgIGNvbXBfbGlzdHMsICJpbnNlcnQtJWRjIiAlIGxlbihjb21wX3N0YXJ0KSwKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0F1dG9Db21wbGV0ZVdpbmRvdy5weSBiL0xpYi9pZGxlbGliL2F1dG9jb21wbGV0ZV93LnB5CnNpbWlsYXJpdHkgaW5kZXggOTUlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL0F1dG9Db21wbGV0ZVdpbmRvdy5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvYXV0b2NvbXBsZXRlX3cucHkKaW5kZXggMmVlNjg3OC4uMzM3NGM2ZSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvQXV0b0NvbXBsZXRlV2luZG93LnB5CisrKyBiL0xpYi9pZGxlbGliL2F1dG9jb21wbGV0ZV93LnB5CkBAIC0xLDkgKzEsMTEgQEAKICIiIgotQW4gYXV0by1jb21wbGV0aW9uIHdpbmRvdyBmb3IgSURMRSwgdXNlZCBieSB0aGUgQXV0b0NvbXBsZXRlIGV4dGVuc2lvbgorQW4gYXV0by1jb21wbGV0aW9uIHdpbmRvdyBmb3IgSURMRSwgdXNlZCBieSB0aGUgYXV0b2NvbXBsZXRlIGV4dGVuc2lvbgogIiIiCiBmcm9tIHRraW50ZXIgaW1wb3J0ICoKLWZyb20gaWRsZWxpYi5NdWx0aUNhbGwgaW1wb3J0IE1DX1NISUZUCi1mcm9tIGlkbGVsaWIuQXV0b0NvbXBsZXRlIGltcG9ydCBDT01QTEVURV9GSUxFUywgQ09NUExFVEVfQVRUUklCVVRFUworZnJvbSB0a2ludGVyLnR0ayBpbXBvcnQgU2Nyb2xsYmFyCisKK2Zyb20gaWRsZWxpYi5hdXRvY29tcGxldGUgaW1wb3J0IENPTVBMRVRFX0ZJTEVTLCBDT01QTEVURV9BVFRSSUJVVEVTCitmcm9tIGlkbGVsaWIubXVsdGljYWxsIGltcG9ydCBNQ19TSElGVAogCiBISURFX1ZJUlRVQUxfRVZFTlRfTkFNRSA9ICI8PGF1dG9jb21wbGV0ZXdpbmRvdy1oaWRlPj4iCiBISURFX1NFUVVFTkNFUyA9ICgiPEZvY3VzT3V0PiIsICI8QnV0dG9uUHJlc3M+IikKQEAgLTM0LDggKzM2LDggQEAKICAgICAgICAgc2VsZi5jb21wbGV0aW9ucyA9IE5vbmUKICAgICAgICAgIyBBIGxpc3Qgd2l0aCBtb3JlIGNvbXBsZXRpb25zLCBvciBOb25lCiAgICAgICAgIHNlbGYubW9yZWNvbXBsZXRpb25zID0gTm9uZQotICAgICAgICAjIFRoZSBjb21wbGV0aW9uIG1vZGUuIEVpdGhlciBBdXRvQ29tcGxldGUuQ09NUExFVEVfQVRUUklCVVRFUyBvcgotICAgICAgICAjIEF1dG9Db21wbGV0ZS5DT01QTEVURV9GSUxFUworICAgICAgICAjIFRoZSBjb21wbGV0aW9uIG1vZGUuIEVpdGhlciBhdXRvY29tcGxldGUuQ09NUExFVEVfQVRUUklCVVRFUyBvcgorICAgICAgICAjIGF1dG9jb21wbGV0ZS5DT01QTEVURV9GSUxFUwogICAgICAgICBzZWxmLm1vZGUgPSBOb25lCiAgICAgICAgICMgVGhlIGN1cnJlbnQgY29tcGxldGlvbiBzdGFydCwgb24gdGhlIHRleHQgYm94IChhIHN0cmluZykKICAgICAgICAgc2VsZi5zdGFydCA9IE5vbmUKQEAgLTIxNSw2ICsyMTcsNyBAQAogICAgICAgICBzZWxmLndpbmNvbmZpZ2lkID0gYWN3LmJpbmQoV0lOQ09ORklHX1NFUVVFTkNFLCBzZWxmLndpbmNvbmZpZ19ldmVudCkKICAgICAgICAgc2VsZi5kb3VibGVjbGlja2lkID0gbGlzdGJveC5iaW5kKERPVUJMRUNMSUNLX1NFUVVFTkNFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kb3VibGVjbGlja19ldmVudCkKKyAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgIGRlZiB3aW5jb25maWdfZXZlbnQoc2VsZiwgZXZlbnQpOgogICAgICAgICBpZiBub3Qgc2VsZi5pc19hY3RpdmUoKToKQEAgLTIzOCwxNiArMjQxLDE0IEBACiAgICAgICAgIGFjdy53bV9nZW9tZXRyeSgiKyVkKyVkIiAlIChuZXdfeCwgbmV3X3kpKQogCiAgICAgZGVmIGhpZGVfZXZlbnQoc2VsZiwgZXZlbnQpOgotICAgICAgICBpZiBub3Qgc2VsZi5pc19hY3RpdmUoKToKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBzZWxmLmhpZGVfd2luZG93KCkKKyAgICAgICAgaWYgc2VsZi5pc19hY3RpdmUoKToKKyAgICAgICAgICAgIHNlbGYuaGlkZV93aW5kb3coKQogCiAgICAgZGVmIGxpc3RzZWxlY3RfZXZlbnQoc2VsZiwgZXZlbnQpOgotICAgICAgICBpZiBub3Qgc2VsZi5pc19hY3RpdmUoKToKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBzZWxmLnVzZXJ3YW50c3dpbmRvdyA9IFRydWUKLSAgICAgICAgY3Vyc2VsID0gaW50KHNlbGYubGlzdGJveC5jdXJzZWxlY3Rpb24oKVswXSkKLSAgICAgICAgc2VsZi5fY2hhbmdlX3N0YXJ0KHNlbGYuY29tcGxldGlvbnNbY3Vyc2VsXSkKKyAgICAgICAgaWYgc2VsZi5pc19hY3RpdmUoKToKKyAgICAgICAgICAgIHNlbGYudXNlcndhbnRzd2luZG93ID0gVHJ1ZQorICAgICAgICAgICAgY3Vyc2VsID0gaW50KHNlbGYubGlzdGJveC5jdXJzZWxlY3Rpb24oKVswXSkKKyAgICAgICAgICAgIHNlbGYuX2NoYW5nZV9zdGFydChzZWxmLmNvbXBsZXRpb25zW2N1cnNlbF0pCiAKICAgICBkZWYgZG91YmxlY2xpY2tfZXZlbnQoc2VsZiwgZXZlbnQpOgogICAgICAgICAjIFB1dCB0aGUgc2VsZWN0ZWQgY29tcGxldGlvbiBpbiB0aGUgdGV4dCwgYW5kIGNsb3NlIHRoZSBsaXN0CkBAIC0yNTcsNyArMjU4LDcgQEAKIAogICAgIGRlZiBrZXlwcmVzc19ldmVudChzZWxmLCBldmVudCk6CiAgICAgICAgIGlmIG5vdCBzZWxmLmlzX2FjdGl2ZSgpOgotICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICBrZXlzeW0gPSBldmVudC5rZXlzeW0KICAgICAgICAgaWYgaGFzYXR0cihldmVudCwgIm1jX3N0YXRlIik6CiAgICAgICAgICAgICBzdGF0ZSA9IGV2ZW50Lm1jX3N0YXRlCkBAIC0yODIsNyArMjgzLDcgQEAKICAgICAgICAgICAgICAgICAjIGtleXN5bSA9PSAiQmFja1NwYWNlIgogICAgICAgICAgICAgICAgIGlmIGxlbihzZWxmLnN0YXJ0KSA9PSAwOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmhpZGVfd2luZG93KCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgICAgICAgICAgc2VsZi5fY2hhbmdlX3N0YXJ0KHNlbGYuc3RhcnRbOi0xXSkKICAgICAgICAgICAgIHNlbGYubGFzdHR5cGVkc3RhcnQgPSBzZWxmLnN0YXJ0CiAgICAgICAgICAgICBzZWxmLmxpc3Rib3guc2VsZWN0X2NsZWFyKDAsIGludChzZWxmLmxpc3Rib3guY3Vyc2VsZWN0aW9uKClbMF0pKQpAQCAtMjkyLDcgKzI5Myw3IEBACiAKICAgICAgICAgZWxpZiBrZXlzeW0gPT0gIlJldHVybiI6CiAgICAgICAgICAgICBzZWxmLmhpZGVfd2luZG93KCkKLSAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgICAgICBlbGlmIChzZWxmLm1vZGUgPT0gQ09NUExFVEVfQVRUUklCVVRFUyBhbmQga2V5c3ltIGluCiAgICAgICAgICAgICAgICgicGVyaW9kIiwgInNwYWNlIiwgInBhcmVubGVmdCIsICJwYXJlbnJpZ2h0IiwgImJyYWNrZXRsZWZ0IiwKQEAgLTMwOCw3ICszMDksNyBAQAogICAgICAgICAgICAgICAgYW5kIChzZWxmLm1vZGUgPT0gQ09NUExFVEVfQVRUUklCVVRFUyBvciBzZWxmLnN0YXJ0KToKICAgICAgICAgICAgICAgICBzZWxmLl9jaGFuZ2Vfc3RhcnQoc2VsZi5jb21wbGV0aW9uc1tjdXJzZWxdKQogICAgICAgICAgICAgc2VsZi5oaWRlX3dpbmRvdygpCi0gICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIHJldHVybiBOb25lCiAKICAgICAgICAgZWxpZiBrZXlzeW0gaW4gKCJIb21lIiwgIkVuZCIsICJQcmlvciIsICJOZXh0IiwgIlVwIiwgIkRvd24iKSBhbmQgXAogICAgICAgICAgICAgIG5vdCBzdGF0ZToKQEAgLTM0OSwxMiArMzUwLDEyIEBACiAgICAgICAgICAgICAgICAgIyBmaXJzdCB0YWI7IGxldCBBdXRvQ29tcGxldGUgaGFuZGxlIHRoZSBjb21wbGV0aW9uCiAgICAgICAgICAgICAgICAgc2VsZi51c2Vyd2FudHN3aW5kb3cgPSBUcnVlCiAgICAgICAgICAgICAgICAgc2VsZi5sYXN0a2V5X3dhc190YWIgPSBUcnVlCi0gICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgICAgICBlbGlmIGFueShzIGluIGtleXN5bSBmb3IgcyBpbiAoIlNoaWZ0IiwgIkNvbnRyb2wiLCAiQWx0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNZXRhIiwgIkNvbW1hbmQiLCAiT3B0aW9uIikpOgogICAgICAgICAgICAgIyBBIG1vZGlmaWVyIGtleSwgc28gaWdub3JlCi0gICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIHJldHVybiBOb25lCiAKICAgICAgICAgZWxpZiBldmVudC5jaGFyIGFuZCBldmVudC5jaGFyID49ICcgJzoKICAgICAgICAgICAgICMgUmVndWxhciBjaGFyYWN0ZXIgd2l0aCBhIG5vbi1sZW5ndGgtMSBrZXljb2RlCkBAIC0zNjgsNyArMzY5LDcgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgVW5rbm93biBldmVudCwgY2xvc2UgdGhlIHdpbmRvdyBhbmQgbGV0IGl0IHRocm91Z2guCiAgICAgICAgICAgICBzZWxmLmhpZGVfd2luZG93KCkKLSAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgIGRlZiBrZXlyZWxlYXNlX2V2ZW50KHNlbGYsIGV2ZW50KToKICAgICAgICAgaWYgbm90IHNlbGYuaXNfYWN0aXZlKCk6CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9BdXRvRXhwYW5kLnB5IGIvTGliL2lkbGVsaWIvYXV0b2V4cGFuZC5weQpzaW1pbGFyaXR5IGluZGV4IDk2JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9BdXRvRXhwYW5kLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9hdXRvZXhwYW5kLnB5CmluZGV4IDcwNTkwNTQuLjZiNDZiZWUgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0F1dG9FeHBhbmQucHkKKysrIGIvTGliL2lkbGVsaWIvYXV0b2V4cGFuZC5weQpAQCAtMTIsOCArMTIsOCBAQAogCiBUaGlzIGlzIGFuIGV4dGVuc2lvbiBmaWxlIGFuZCB0aGVyZSBpcyBvbmx5IG9uZSBpbnN0YW5jZSBvZiBBdXRvRXhwYW5kLgogJycnCi1pbXBvcnQgc3RyaW5nCiBpbXBvcnQgcmUKK2ltcG9ydCBzdHJpbmcKIAogIyMjJCBldmVudCA8PGV4cGFuZC13b3JkPj4KICMjIyQgd2luIDxBbHQtc2xhc2g+CkBAIC0zMSw2ICszMSw3IEBACiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZWRpdHdpbik6CiAgICAgICAgIHNlbGYudGV4dCA9IGVkaXR3aW4udGV4dAorICAgICAgICBzZWxmLmJlbGwgPSBzZWxmLnRleHQuYmVsbAogICAgICAgICBzZWxmLnN0YXRlID0gTm9uZQogCiAgICAgZGVmIGV4cGFuZF93b3JkX2V2ZW50KHNlbGYsIGV2ZW50KToKQEAgLTQ2LDE0ICs0NywxNCBAQAogICAgICAgICAgICAgICAgIHdvcmRzID0gc2VsZi5nZXR3b3JkcygpCiAgICAgICAgICAgICAgICAgaW5kZXggPSAwCiAgICAgICAgIGlmIG5vdCB3b3JkczoKLSAgICAgICAgICAgIHNlbGYudGV4dC5iZWxsKCkKKyAgICAgICAgICAgIHNlbGYuYmVsbCgpCiAgICAgICAgICAgICByZXR1cm4gImJyZWFrIgogICAgICAgICB3b3JkID0gc2VsZi5nZXRwcmV2d29yZCgpCiAgICAgICAgIHNlbGYudGV4dC5kZWxldGUoImluc2VydCAtICVkIGNoYXJzIiAlIGxlbih3b3JkKSwgImluc2VydCIpCiAgICAgICAgIG5ld3dvcmQgPSB3b3Jkc1tpbmRleF0KICAgICAgICAgaW5kZXggPSAoaW5kZXggKyAxKSAlIGxlbih3b3JkcykKICAgICAgICAgaWYgaW5kZXggPT0gMDoKLSAgICAgICAgICAgIHNlbGYudGV4dC5iZWxsKCkgICAgICAgICAgICAjIFdhcm4gd2UgY3ljbGVkIGFyb3VuZAorICAgICAgICAgICAgc2VsZi5iZWxsKCkgICAgICAgICAgICAjIFdhcm4gd2UgY3ljbGVkIGFyb3VuZAogICAgICAgICBzZWxmLnRleHQuaW5zZXJ0KCJpbnNlcnQiLCBuZXd3b3JkKQogICAgICAgICBjdXJpbnNlcnQgPSBzZWxmLnRleHQuaW5kZXgoImluc2VydCIpCiAgICAgICAgIGN1cmxpbmUgPSBzZWxmLnRleHQuZ2V0KCJpbnNlcnQgbGluZXN0YXJ0IiwgImluc2VydCBsaW5lZW5kIikKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0NsYXNzQnJvd3Nlci5weSBiL0xpYi9pZGxlbGliL2Jyb3dzZXIucHkKc2ltaWxhcml0eSBpbmRleCA5NCUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvQ2xhc3NCcm93c2VyLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9icm93c2VyLnB5CmluZGV4IGQwOWM1MmYuLmVhMDU2MzggMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0NsYXNzQnJvd3Nlci5weQorKysgYi9MaWIvaWRsZWxpYi9icm93c2VyLnB5CkBAIC0xMSwxNiArMTEsMTYgQEAKICIiIgogCiBpbXBvcnQgb3MKLWltcG9ydCBzeXMKIGltcG9ydCBweWNsYnIKK2ltcG9ydCBzeXMKIAotZnJvbSBpZGxlbGliIGltcG9ydCBQeVNoZWxsCi1mcm9tIGlkbGVsaWIuV2luZG93TGlzdCBpbXBvcnQgTGlzdGVkVG9wbGV2ZWwKLWZyb20gaWRsZWxpYi5UcmVlV2lkZ2V0IGltcG9ydCBUcmVlTm9kZSwgVHJlZUl0ZW0sIFNjcm9sbGVkQ2FudmFzCi1mcm9tIGlkbGVsaWIuY29uZmlnSGFuZGxlciBpbXBvcnQgaWRsZUNvbmYKK2Zyb20gaWRsZWxpYi5jb25maWcgaW1wb3J0IGlkbGVDb25mCitmcm9tIGlkbGVsaWIgaW1wb3J0IHB5c2hlbGwKK2Zyb20gaWRsZWxpYi50cmVlIGltcG9ydCBUcmVlTm9kZSwgVHJlZUl0ZW0sIFNjcm9sbGVkQ2FudmFzCitmcm9tIGlkbGVsaWIud2luZG93cyBpbXBvcnQgTGlzdGVkVG9wbGV2ZWwKIAogZmlsZV9vcGVuID0gTm9uZSAgIyBNZXRob2QuLi5JdGVtIGFuZCBDbGFzcy4uLkl0ZW0gdXNlIHRoaXMuCi0jIE5vcm1hbGx5IFB5U2hlbGwuZmxpc3Qub3BlbiwgYnV0IHRoZXJlIGlzIG5vIFB5U2hlbGwuZmxpc3QgZm9yIGh0ZXN0LgorIyBOb3JtYWxseSBweXNoZWxsLmZsaXN0Lm9wZW4sIGJ1dCB0aGVyZSBpcyBubyBweXNoZWxsLmZsaXN0IGZvciBodGVzdC4KIAogY2xhc3MgQ2xhc3NCcm93c2VyOgogCkBAIC0zMiw3ICszMiw3IEBACiAgICAgICAgICIiIgogICAgICAgICBnbG9iYWwgZmlsZV9vcGVuCiAgICAgICAgIGlmIG5vdCBfaHRlc3Q6Ci0gICAgICAgICAgICBmaWxlX29wZW4gPSBQeVNoZWxsLmZsaXN0Lm9wZW4KKyAgICAgICAgICAgIGZpbGVfb3BlbiA9IHB5c2hlbGwuZmxpc3Qub3BlbgogICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCiAgICAgICAgIHNlbGYuZmlsZSA9IG9zLnBhdGguam9pbihwYXRoWzBdLCBzZWxmLm5hbWUgKyAiLnB5IikKICAgICAgICAgc2VsZi5faHRlc3QgPSBfaHRlc3QKQEAgLTk1LDcgKzk1LDcgQEAKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoc2VsZi5maWxlKToKICAgICAgICAgICAgIHJldHVybgotICAgICAgICBQeVNoZWxsLmZsaXN0Lm9wZW4oc2VsZi5maWxlKQorICAgICAgICBweXNoZWxsLmZsaXN0Lm9wZW4oc2VsZi5maWxlKQogCiAgICAgZGVmIElzRXhwYW5kYWJsZShzZWxmKToKICAgICAgICAgcmV0dXJuIG9zLnBhdGgubm9ybWNhc2Uoc2VsZi5maWxlWy0zOl0pID09ICIucHkiCkBAIC0yMjYsNyArMjI2LDcgQEAKICAgICAgICAgICAgIGZpbGUgPSBzeXMuYXJndlswXQogICAgIGRpciwgZmlsZSA9IG9zLnBhdGguc3BsaXQoZmlsZSkKICAgICBuYW1lID0gb3MucGF0aC5zcGxpdGV4dChmaWxlKVswXQotICAgIGZsaXN0ID0gUHlTaGVsbC5QeVNoZWxsRmlsZUxpc3QocGFyZW50KQorICAgIGZsaXN0ID0gcHlzaGVsbC5QeVNoZWxsRmlsZUxpc3QocGFyZW50KQogICAgIGdsb2JhbCBmaWxlX29wZW4KICAgICBmaWxlX29wZW4gPSBmbGlzdC5vcGVuCiAgICAgQ2xhc3NCcm93c2VyKGZsaXN0LCBuYW1lLCBbZGlyXSwgX2h0ZXN0PVRydWUpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9DYWxsVGlwV2luZG93LnB5IGIvTGliL2lkbGVsaWIvY2FsbHRpcF93LnB5CnNpbWlsYXJpdHkgaW5kZXggOTYlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL0NhbGxUaXBXaW5kb3cucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2NhbGx0aXBfdy5weQppbmRleCA5ZWVjMTc1Li5jNzM2MWQxIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9DYWxsVGlwV2luZG93LnB5CisrKyBiL0xpYi9pZGxlbGliL2NhbGx0aXBfdy5weQpAQCAtMSw3ICsxLDcgQEAKICIiIkEgQ2FsbFRpcCB3aW5kb3cgY2xhc3MgZm9yIFRraW50ZXIvSURMRS4KIAotQWZ0ZXIgVG9vbFRpcC5weSwgd2hpY2ggdXNlcyBpZGVhcyBnbGVhbmVkIGZyb20gUHlTb2wKLVVzZWQgYnkgdGhlIENhbGxUaXBzIElETEUgZXh0ZW5zaW9uLgorQWZ0ZXIgdG9vbHRpcC5weSwgd2hpY2ggdXNlcyBpZGVhcyBnbGVhbmVkIGZyb20gUHlTb2wKK1VzZWQgYnkgdGhlIGNhbGx0aXBzIElETEUgZXh0ZW5zaW9uLgogIiIiCiBmcm9tIHRraW50ZXIgaW1wb3J0IFRvcGxldmVsLCBMYWJlbCwgTEVGVCwgU09MSUQsIFRjbEVycm9yCiAKQEAgLTEzOCw4ICsxMzgsOCBAQAogCiAgICAgdG9wID0gVG9wbGV2ZWwocGFyZW50KQogICAgIHRvcC50aXRsZSgiVGVzdCBjYWxsdGlwcyIpCi0gICAgdG9wLmdlb21ldHJ5KCIyMDB4MTAwKyVkKyVkIiAlIChwYXJlbnQud2luZm9fcm9vdHgoKSArIDIwMCwKLSAgICAgICAgICAgICAgICAgIHBhcmVudC53aW5mb19yb290eSgpICsgMTUwKSkKKyAgICB4LCB5ID0gbWFwKGludCwgcGFyZW50Lmdlb21ldHJ5KCkuc3BsaXQoJysnKVsxOl0pCisgICAgdG9wLmdlb21ldHJ5KCIyMDB4MTAwKyVkKyVkIiAlICh4ICsgMjUwLCB5ICsgMTc1KSkKICAgICB0ZXh0ID0gVGV4dCh0b3ApCiAgICAgdGV4dC5wYWNrKHNpZGU9TEVGVCwgZmlsbD1CT1RILCBleHBhbmQ9MSkKICAgICB0ZXh0Lmluc2VydCgiaW5zZXJ0IiwgInN0cmluZy5zcGxpdCIpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9DYWxsVGlwcy5weSBiL0xpYi9pZGxlbGliL2NhbGx0aXBzLnB5CnNpbWlsYXJpdHkgaW5kZXggOTUlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL0NhbGxUaXBzLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9jYWxsdGlwcy5weQppbmRleCA4MWJkNWYxLi40YzVhZWEyIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9DYWxsVGlwcy5weQorKysgYi9MaWIvaWRsZWxpYi9jYWxsdGlwcy5weQpAQCAtMSwxOSArMSwxOSBAQAotIiIiQ2FsbFRpcHMucHkgLSBBbiBJRExFIEV4dGVuc2lvbiB0byBKb2cgWW91ciBNZW1vcnkKKyIiImNhbGx0aXBzLnB5IC0gQW4gSURMRSBFeHRlbnNpb24gdG8gSm9nIFlvdXIgTWVtb3J5CiAKIENhbGwgVGlwcyBhcmUgZmxvYXRpbmcgd2luZG93cyB3aGljaCBkaXNwbGF5IGZ1bmN0aW9uLCBjbGFzcywgYW5kIG1ldGhvZAogcGFyYW1ldGVyIGFuZCBkb2NzdHJpbmcgaW5mb3JtYXRpb24gd2hlbiB5b3UgdHlwZSBhbiBvcGVuaW5nIHBhcmVudGhlc2lzLCBhbmQKIHdoaWNoIGRpc2FwcGVhciB3aGVuIHlvdSB0eXBlIGEgY2xvc2luZyBwYXJlbnRoZXNpcy4KIAogIiIiCi1pbXBvcnQgX19tYWluX18KIGltcG9ydCBpbnNwZWN0CiBpbXBvcnQgcmUKIGltcG9ydCBzeXMKIGltcG9ydCB0ZXh0d3JhcAogaW1wb3J0IHR5cGVzCiAKLWZyb20gaWRsZWxpYiBpbXBvcnQgQ2FsbFRpcFdpbmRvdwotZnJvbSBpZGxlbGliLkh5cGVyUGFyc2VyIGltcG9ydCBIeXBlclBhcnNlcgorZnJvbSBpZGxlbGliIGltcG9ydCBjYWxsdGlwX3cKK2Zyb20gaWRsZWxpYi5oeXBlcnBhcnNlciBpbXBvcnQgSHlwZXJQYXJzZXIKK2ltcG9ydCBfX21haW5fXwogCiBjbGFzcyBDYWxsVGlwczoKIApAQCAtMzcsNyArMzcsNyBAQAogCiAgICAgZGVmIF9tYWtlX3RrX2NhbGx0aXBfd2luZG93KHNlbGYpOgogICAgICAgICAjIFNlZSBfX2luaXRfXyBmb3IgdXNhZ2UKLSAgICAgICAgcmV0dXJuIENhbGxUaXBXaW5kb3cuQ2FsbFRpcChzZWxmLnRleHQpCisgICAgICAgIHJldHVybiBjYWxsdGlwX3cuQ2FsbFRpcChzZWxmLnRleHQpCiAKICAgICBkZWYgX3JlbW92ZV9jYWxsdGlwX3dpbmRvdyhzZWxmLCBldmVudD1Ob25lKToKICAgICAgICAgaWYgc2VsZi5hY3RpdmVfY2FsbHRpcDoKQEAgLTEyMCw3ICsxMjAsNyBAQAogX01BWF9DT0xTID0gODUKIF9NQVhfTElORVMgPSA1ICAjIGVub3VnaCBmb3IgYnl0ZXMKIF9JTkRFTlQgPSAnICcqNCAgIyBmb3Igd3JhcHBlZCBzaWduYXR1cmVzCi1fZmlyc3RfcGFyYW0gPSByZS5jb21waWxlKCcoPzw9XCgpXHcqXCw/XHMqJykKK19maXJzdF9wYXJhbSA9IHJlLmNvbXBpbGUocicoPzw9XCgpXHcqXCw/XHMqJykKIF9kZWZhdWx0X2NhbGxhYmxlX2FyZ3NwZWMgPSAiU2VlIHNvdXJjZSBvciBkb2MiCiAKIApkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvQ29kZUNvbnRleHQucHkgYi9MaWIvaWRsZWxpYi9jb2RlY29udGV4dC5weQpzaW1pbGFyaXR5IGluZGV4IDk3JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9Db2RlQ29udGV4dC5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvY29kZWNvbnRleHQucHkKaW5kZXggN2QyNWFkYS4uZjI1ZTFiMyAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvQ29kZUNvbnRleHQucHkKKysrIGIvTGliL2lkbGVsaWIvY29kZWNvbnRleHQucHkKQEAgLTEsMTkgKzEsMjEgQEAKLSIiIkNvZGVDb250ZXh0IC0gRXh0ZW5zaW9uIHRvIGRpc3BsYXkgdGhlIGJsb2NrIGNvbnRleHQgYWJvdmUgdGhlIGVkaXQgd2luZG93CisiIiJjb2RlY29udGV4dCAtIEV4dGVuc2lvbiB0byBkaXNwbGF5IHRoZSBibG9jayBjb250ZXh0IGFib3ZlIHRoZSBlZGl0IHdpbmRvdwogCiBPbmNlIGNvZGUgaGFzIHNjcm9sbGVkIG9mZiB0aGUgdG9wIG9mIGEgd2luZG93LCBpdCBjYW4gYmUgZGlmZmljdWx0IHRvCiBkZXRlcm1pbmUgd2hpY2ggYmxvY2sgeW91IGFyZSBpbi4gIFRoaXMgZXh0ZW5zaW9uIGltcGxlbWVudHMgYSBwYW5lIGF0IHRoZSB0b3AKIG9mIGVhY2ggSURMRSBlZGl0IHdpbmRvdyB3aGljaCBwcm92aWRlcyBibG9jayBzdHJ1Y3R1cmUgaGludHMuICBUaGVzZSBoaW50cyBhcmUKIHRoZSBsaW5lcyB3aGljaCBjb250YWluIHRoZSBibG9jayBvcGVuaW5nIGtleXdvcmRzLCBlLmcuICdpZicsIGZvciB0aGUKIGVuY2xvc2luZyBibG9jay4gIFRoZSBudW1iZXIgb2YgaGludCBsaW5lcyBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBudW1saW5lcwotdmFyaWFibGUgaW4gdGhlIENvZGVDb250ZXh0IHNlY3Rpb24gb2YgY29uZmlnLWV4dGVuc2lvbnMuZGVmLiBMaW5lcyB3aGljaCBkbwordmFyaWFibGUgaW4gdGhlIGNvZGVjb250ZXh0IHNlY3Rpb24gb2YgY29uZmlnLWV4dGVuc2lvbnMuZGVmLiBMaW5lcyB3aGljaCBkbwogbm90IG9wZW4gYmxvY2tzIGFyZSBub3Qgc2hvd24gaW4gdGhlIGNvbnRleHQgaGludHMgcGFuZS4KIAogIiIiCi1pbXBvcnQgdGtpbnRlcgotZnJvbSB0a2ludGVyLmNvbnN0YW50cyBpbXBvcnQgVE9QLCBMRUZULCBYLCBXLCBTVU5LRU4KIGltcG9ydCByZQogZnJvbSBzeXMgaW1wb3J0IG1heHNpemUgYXMgSU5GSU5JVFkKLWZyb20gaWRsZWxpYi5jb25maWdIYW5kbGVyIGltcG9ydCBpZGxlQ29uZgorCitpbXBvcnQgdGtpbnRlcgorZnJvbSB0a2ludGVyLmNvbnN0YW50cyBpbXBvcnQgVE9QLCBMRUZULCBYLCBXLCBTVU5LRU4KKworZnJvbSBpZGxlbGliLmNvbmZpZyBpbXBvcnQgaWRsZUNvbmYKIAogQkxPQ0tPUEVORVJTID0geyJjbGFzcyIsICJkZWYiLCAiZWxpZiIsICJlbHNlIiwgImV4Y2VwdCIsICJmaW5hbGx5IiwgImZvciIsCiAgICAgICAgICAgICAgICAgICAgICJpZiIsICJ0cnkiLCAid2hpbGUiLCAid2l0aCJ9CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9Db2xvckRlbGVnYXRvci5weSBiL0xpYi9pZGxlbGliL2NvbG9yaXplci5weQpzaW1pbGFyaXR5IGluZGV4IDk1JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9Db2xvckRlbGVnYXRvci5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvY29sb3JpemVyLnB5CmluZGV4IDAyZWFjNDcuLjczMTBiYjIgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0NvbG9yRGVsZWdhdG9yLnB5CisrKyBiL0xpYi9pZGxlbGliL2NvbG9yaXplci5weQpAQCAtMSwxMCArMSwxMCBAQAotaW1wb3J0IHRpbWUKLWltcG9ydCByZQotaW1wb3J0IGtleXdvcmQKIGltcG9ydCBidWlsdGlucwotZnJvbSB0a2ludGVyIGltcG9ydCBUa1ZlcnNpb24KLWZyb20gaWRsZWxpYi5EZWxlZ2F0b3IgaW1wb3J0IERlbGVnYXRvcgotZnJvbSBpZGxlbGliLmNvbmZpZ0hhbmRsZXIgaW1wb3J0IGlkbGVDb25mCitpbXBvcnQga2V5d29yZAoraW1wb3J0IHJlCitpbXBvcnQgdGltZQorCitmcm9tIGlkbGVsaWIuY29uZmlnIGltcG9ydCBpZGxlQ29uZgorZnJvbSBpZGxlbGliLmRlbGVnYXRvciBpbXBvcnQgRGVsZWdhdG9yCiAKIERFQlVHID0gRmFsc2UKIApAQCAtNDksMTEgKzQ5LDggQEAKICAgICAgICAgaW5zZXJ0YmFja2dyb3VuZD1jdXJzb3JfY29sb3IsCiAgICAgICAgIHNlbGVjdGZvcmVncm91bmQ9c2VsZWN0X2NvbG9yc1snZm9yZWdyb3VuZCddLAogICAgICAgICBzZWxlY3RiYWNrZ3JvdW5kPXNlbGVjdF9jb2xvcnNbJ2JhY2tncm91bmQnXSwKLSAgICAgICAgKQotICAgIGlmIFRrVmVyc2lvbiA+PSA4LjU6Ci0gICAgICAgIHRleHQuY29uZmlnKAotICAgICAgICAgICAgaW5hY3RpdmVzZWxlY3RiYWNrZ3JvdW5kPXNlbGVjdF9jb2xvcnNbJ2JhY2tncm91bmQnXSkKLQorICAgICAgICBpbmFjdGl2ZXNlbGVjdGJhY2tncm91bmQ9c2VsZWN0X2NvbG9yc1snYmFja2dyb3VuZCddLCAgIyBuZXcgaW4gOC41CisgICAgKQogCiBjbGFzcyBDb2xvckRlbGVnYXRvcihEZWxlZ2F0b3IpOgogCkBAIC0yNTksMTIgKzI1NiwxMiBAQAogCiBkZWYgX2NvbG9yX2RlbGVnYXRvcihwYXJlbnQpOiAgIyBodGVzdCAjCiAgICAgZnJvbSB0a2ludGVyIGltcG9ydCBUb3BsZXZlbCwgVGV4dAotICAgIGZyb20gaWRsZWxpYi5QZXJjb2xhdG9yIGltcG9ydCBQZXJjb2xhdG9yCisgICAgZnJvbSBpZGxlbGliLnBlcmNvbGF0b3IgaW1wb3J0IFBlcmNvbGF0b3IKIAogICAgIHRvcCA9IFRvcGxldmVsKHBhcmVudCkKICAgICB0b3AudGl0bGUoIlRlc3QgQ29sb3JEZWxlZ2F0b3IiKQotICAgIHRvcC5nZW9tZXRyeSgiMjAweDEwMCslZCslZCIgJSAocGFyZW50LndpbmZvX3Jvb3R4KCkgKyAyMDAsCi0gICAgICAgICAgICAgICAgICBwYXJlbnQud2luZm9fcm9vdHkoKSArIDE1MCkpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIHRvcC5nZW9tZXRyeSgiMjAweDEwMCslZCslZCIgJSAoeCArIDI1MCwgeSArIDE3NSkpCiAgICAgc291cmNlID0gImlmIHNvbWVuYW1lOiB4ID0gJ2FiYycgIyBjb21tZW50XG5wcmludFxuIgogICAgIHRleHQgPSBUZXh0KHRvcCwgYmFja2dyb3VuZD0id2hpdGUiKQogICAgIHRleHQucGFjayhleHBhbmQ9MSwgZmlsbD0iYm90aCIpCkBAIC0yNzcsNSArMjc0LDkgQEAKICAgICBwLmluc2VydGZpbHRlcihkKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIGltcG9ydCB1bml0dGVzdAorICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3RfY29sb3JpemVyJywKKyAgICAgICAgICAgICAgICAgIHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQorCiAgICAgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5odGVzdCBpbXBvcnQgcnVuCiAgICAgcnVuKF9jb2xvcl9kZWxlZ2F0b3IpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9jb25maWcta2V5cy5kZWYgYi9MaWIvaWRsZWxpYi9jb25maWcta2V5cy5kZWYKaW5kZXggM2JmY2I2OS4uNjQ3ODhmOSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvY29uZmlnLWtleXMuZGVmCisrKyBiL0xpYi9pZGxlbGliL2NvbmZpZy1rZXlzLmRlZgpAQCAtMTA5LDYgKzEwOSw1NyBAQAogZGVsLXdvcmQtbGVmdD08QWx0LUtleS1CYWNrU3BhY2U+CiBkZWwtd29yZC1yaWdodD08QWx0LUtleS1kPgogCitbSURMRSBNb2Rlcm4gVW5peF0KK2NvcHkgPSA8Q29udHJvbC1TaGlmdC1LZXktQz4gPENvbnRyb2wtS2V5LUluc2VydD4KK2N1dCA9IDxDb250cm9sLUtleS14PiA8U2hpZnQtS2V5LURlbGV0ZT4KK3Bhc3RlID0gPENvbnRyb2wtS2V5LXY+IDxTaGlmdC1LZXktSW5zZXJ0PgorYmVnaW5uaW5nLW9mLWxpbmUgPSA8S2V5LUhvbWU+CitjZW50ZXItaW5zZXJ0ID0gPENvbnRyb2wtS2V5LWw+CitjbG9zZS1hbGwtd2luZG93cyA9IDxDb250cm9sLUtleS1xPgorY2xvc2Utd2luZG93ID0gPENvbnRyb2wtS2V5LXc+IDxDb250cm9sLVNoaWZ0LUtleS1XPgorZG8tbm90aGluZyA9IDxDb250cm9sLUtleS1GMTI+CitlbmQtb2YtZmlsZSA9IDxDb250cm9sLUtleS1kPgoraGlzdG9yeS1uZXh0ID0gPEFsdC1LZXktbj4gPE1ldGEtS2V5LW4+CitoaXN0b3J5LXByZXZpb3VzID0gPEFsdC1LZXktcD4gPE1ldGEtS2V5LXA+CitpbnRlcnJ1cHQtZXhlY3V0aW9uID0gPENvbnRyb2wtS2V5LWM+Cit2aWV3LXJlc3RhcnQgPSA8S2V5LUY2PgorcmVzdGFydC1zaGVsbCA9IDxDb250cm9sLUtleS1GNj4KK29wZW4tY2xhc3MtYnJvd3NlciA9IDxDb250cm9sLUtleS1iPgorb3Blbi1tb2R1bGUgPSA8Q29udHJvbC1LZXktbT4KK29wZW4tbmV3LXdpbmRvdyA9IDxDb250cm9sLUtleS1uPgorb3Blbi13aW5kb3ctZnJvbS1maWxlID0gPENvbnRyb2wtS2V5LW8+CitwbGFpbi1uZXdsaW5lLWFuZC1pbmRlbnQgPSA8Q29udHJvbC1LZXktaj4KK3ByaW50LXdpbmRvdyA9IDxDb250cm9sLUtleS1wPgorcHl0aG9uLWNvbnRleHQtaGVscCA9IDxTaGlmdC1LZXktRjE+CitweXRob24tZG9jcyA9IDxLZXktRjE+CityZWRvID0gPENvbnRyb2wtU2hpZnQtS2V5LVo+CityZW1vdmUtc2VsZWN0aW9uID0gPEtleS1Fc2NhcGU+CitzYXZlLWNvcHktb2Ytd2luZG93LWFzLWZpbGUgPSA8QWx0LVNoaWZ0LUtleS1TPgorc2F2ZS13aW5kb3ctYXMtZmlsZSA9IDxDb250cm9sLVNoaWZ0LUtleS1TPgorc2F2ZS13aW5kb3cgPSA8Q29udHJvbC1LZXktcz4KK3NlbGVjdC1hbGwgPSA8Q29udHJvbC1LZXktYT4KK3RvZ2dsZS1hdXRvLWNvbG9yaW5nID0gPENvbnRyb2wtS2V5LXNsYXNoPgordW5kbyA9IDxDb250cm9sLUtleS16PgorZmluZCA9IDxDb250cm9sLUtleS1mPgorZmluZC1hZ2FpbiA9IDxLZXktRjM+CitmaW5kLWluLWZpbGVzID0gPENvbnRyb2wtU2hpZnQtS2V5LWY+CitmaW5kLXNlbGVjdGlvbiA9IDxDb250cm9sLUtleS1oPgorcmVwbGFjZSA9IDxDb250cm9sLUtleS1yPgorZ290by1saW5lID0gPENvbnRyb2wtS2V5LWc+CitzbWFydC1iYWNrc3BhY2UgPSA8S2V5LUJhY2tTcGFjZT4KK25ld2xpbmUtYW5kLWluZGVudCA9IDxLZXktUmV0dXJuPiA8S2V5LUtQX0VudGVyPgorc21hcnQtaW5kZW50ID0gPEtleS1UYWI+CitpbmRlbnQtcmVnaW9uID0gPENvbnRyb2wtS2V5LWJyYWNrZXRyaWdodD4KK2RlZGVudC1yZWdpb24gPSA8Q29udHJvbC1LZXktYnJhY2tldGxlZnQ+Citjb21tZW50LXJlZ2lvbiA9IDxDb250cm9sLUtleS1kPgordW5jb21tZW50LXJlZ2lvbiA9IDxDb250cm9sLVNoaWZ0LUtleS1EPgordGFiaWZ5LXJlZ2lvbiA9IDxBbHQtS2V5LTU+Cit1bnRhYmlmeS1yZWdpb24gPSA8QWx0LUtleS02PgordG9nZ2xlLXRhYnMgPSA8Q29udHJvbC1LZXktVD4KK2NoYW5nZS1pbmRlbnR3aWR0aCA9IDxBbHQtS2V5LXU+CitkZWwtd29yZC1sZWZ0ID0gPENvbnRyb2wtS2V5LUJhY2tTcGFjZT4KK2RlbC13b3JkLXJpZ2h0ID0gPENvbnRyb2wtS2V5LURlbGV0ZT4KKwogW0lETEUgQ2xhc3NpYyBNYWNdCiBjb3B5PTxDb21tYW5kLUtleS1jPgogY3V0PTxDb21tYW5kLUtleS14PgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvY29uZmlnLW1haW4uZGVmIGIvTGliL2lkbGVsaWIvY29uZmlnLW1haW4uZGVmCmluZGV4IDhlYmJjMWIuLjE2ZjRiMDkgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2NvbmZpZy1tYWluLmRlZgorKysgYi9MaWIvaWRsZWxpYi9jb25maWctbWFpbi5kZWYKQEAgLTQsNDQgKzQsNTAgQEAKICMgV2hlbiBJRExFIHN0YXJ0cywgaXQgd2lsbCBsb29rIGluCiAjIHRoZSBmb2xsb3dpbmcgdHdvIHNldHMgb2YgZmlsZXMsIGluIG9yZGVyOgogIwotIyAgICAgZGVmYXVsdCBjb25maWd1cmF0aW9uCi0jICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgICAgIGNvbmZpZy1tYWluLmRlZiAgICAgICAgIHRoZSBkZWZhdWx0IGdlbmVyYWwgY29uZmlnIGZpbGUKLSMgICAgIGNvbmZpZy1leHRlbnNpb25zLmRlZiAgIHRoZSBkZWZhdWx0IGV4dGVuc2lvbiBjb25maWcgZmlsZQotIyAgICAgY29uZmlnLWhpZ2hsaWdodC5kZWYgICAgdGhlIGRlZmF1bHQgaGlnaGxpZ2h0aW5nIGNvbmZpZyBmaWxlCi0jICAgICBjb25maWcta2V5cy5kZWYgICAgICAgICB0aGUgZGVmYXVsdCBrZXliaW5kaW5nIGNvbmZpZyBmaWxlCisjICAgICBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gZmlsZXMgaW4gaWRsZWxpYgorIyAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgICAgIGNvbmZpZy1tYWluLmRlZiAgICAgICAgIGRlZmF1bHQgZ2VuZXJhbCBjb25maWcgZmlsZQorIyAgICAgY29uZmlnLWV4dGVuc2lvbnMuZGVmICAgZGVmYXVsdCBleHRlbnNpb24gY29uZmlnIGZpbGUKKyMgICAgIGNvbmZpZy1oaWdobGlnaHQuZGVmICAgIGRlZmF1bHQgaGlnaGxpZ2h0aW5nIGNvbmZpZyBmaWxlCisjICAgICBjb25maWcta2V5cy5kZWYgICAgICAgICBkZWZhdWx0IGtleWJpbmRpbmcgY29uZmlnIGZpbGUKICMKLSMgICAgIHVzZXIgY29uZmlndXJhdGlvbgotIyAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLQotIyAgICAgfi8uaWRsZXJjL2NvbmZpZy1tYWluLmNmZyAgICAgICAgICAgIHRoZSB1c2VyIGdlbmVyYWwgY29uZmlnIGZpbGUKLSMgICAgIH4vLmlkbGVyYy9jb25maWctZXh0ZW5zaW9ucy5jZmcgICAgICB0aGUgdXNlciBleHRlbnNpb24gY29uZmlnIGZpbGUKLSMgICAgIH4vLmlkbGVyYy9jb25maWctaGlnaGxpZ2h0LmNmZyAgICAgICB0aGUgdXNlciBoaWdobGlnaHRpbmcgY29uZmlnIGZpbGUKLSMgICAgIH4vLmlkbGVyYy9jb25maWcta2V5cy5jZmcgICAgICAgICAgICB0aGUgdXNlciBrZXliaW5kaW5nIGNvbmZpZyBmaWxlCisjICAgICB1c2VyIGNvbmZpZ3VyYXRpb24gZmlsZXMgaW4gfi8uaWRsZXJjCisjICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjICAgICBjb25maWctbWFpbi5jZmcgICAgICAgICB1c2VyIGdlbmVyYWwgY29uZmlnIGZpbGUKKyMgICAgIGNvbmZpZy1leHRlbnNpb25zLmNmZyAgIHVzZXIgZXh0ZW5zaW9uIGNvbmZpZyBmaWxlCisjICAgICBjb25maWctaGlnaGxpZ2h0LmNmZyAgICB1c2VyIGhpZ2hsaWdodGluZyBjb25maWcgZmlsZQorIyAgICAgY29uZmlnLWtleXMuY2ZnICAgICAgICAgdXNlciBrZXliaW5kaW5nIGNvbmZpZyBmaWxlCiAjCi0jIE9uIFdpbmRvd3MyMDAwIGFuZCBXaW5kb3dzIFhQIHRoZSAuaWRsZXJjIGRpcmVjdG9yeSBpcyBhdAotIyAgICAgRG9jdW1lbnRzIGFuZCBTZXR0aW5nc1w8dXNlcm5hbWU+XC5pZGxlcmMKLSMKLSMgT24gV2luZG93czk4IGl0IGlzIGF0IGM6XC5pZGxlcmMKKyMgT24gV2luZG93cywgdGhlIGRlZmF1bHQgbG9jYXRpb24gb2YgdGhlIGhvbWUgZGlyZWN0b3J5ICgnficgYWJvdmUpCisjIGRlcGVuZHMgb24gdGhlIHZlcnNpb24uICBGb3IgV2luZG93cyAxMCwgaXQgaXMgQzpcVXNlcnNcPHVzZXJuYW1lPi4KICMKICMgQW55IG9wdGlvbnMgdGhlIHVzZXIgc2F2ZXMgdGhyb3VnaCB0aGUgY29uZmlnIGRpYWxvZyB3aWxsIGJlIHNhdmVkIHRvCi0jIHRoZSByZWxldmFudCB1c2VyIGNvbmZpZyBmaWxlLiBSZXZlcnRpbmcgYW55IGdlbmVyYWwgc2V0dGluZyB0byB0aGUKLSMgZGVmYXVsdCBjYXVzZXMgdGhhdCBlbnRyeSB0byBiZSB3aXBlZCBmcm9tIHRoZSB1c2VyIGZpbGUgYW5kIHJlLXJlYWQKLSMgZnJvbSB0aGUgZGVmYXVsdCBmaWxlLiBVc2VyIGhpZ2hsaWdodGluZyB0aGVtZXMgb3Iga2V5YmluZGluZyBzZXRzIGFyZQotIyByZXRhaW5lZCB1bmxlc3Mgc3BlY2lmaWNhbGx5IGRlbGV0ZWQgd2l0aGluIHRoZSBjb25maWcgZGlhbG9nLiBDaG9vc2luZwotIyBvbmUgb2YgdGhlIGRlZmF1bHQgdGhlbWVzIG9yIGtleXNldHMganVzdCBhcHBsaWVzIHRoZSByZWxldmFudCBzZXR0aW5ncwotIyBmcm9tIHRoZSBkZWZhdWx0IGZpbGUuCisjIHRoZSByZWxldmFudCB1c2VyIGNvbmZpZyBmaWxlLiBSZXZlcnRpbmcgYW55IGdlbmVyYWwgb3IgZXh0ZW5zaW9uCisjIHNldHRpbmcgdG8gdGhlIGRlZmF1bHQgY2F1c2VzIHRoYXQgZW50cnkgdG8gYmUgd2lwZWQgZnJvbSB0aGUgdXNlcgorIyBmaWxlIGFuZCByZS1yZWFkIGZyb20gdGhlIGRlZmF1bHQgZmlsZS4gIFRoaXMgcnVsZSBhcHBsaWVzIHRvIGVhY2gKKyMgaXRlbSwgZXhjZXB0IHRoYXQgdGhlIHRocmVlIGVkaXRvciBmb250IGl0ZW1zIGFyZSBzYXZlZCBhcyBhIGdyb3VwLgogIwotIyBBZGRpdGlvbmFsIGhlbHAgc291cmNlcyBhcmUgbGlzdGVkIGluIHRoZSBbSGVscEZpbGVzXSBzZWN0aW9uIGFuZCBtdXN0IGJlCi0jIHZpZXdhYmxlIGJ5IGEgd2ViIGJyb3dzZXIgKG9yIHRoZSBXaW5kb3dzIEhlbHAgdmlld2VyIGluIHRoZSBjYXNlIG9mIC5jaG0KLSMgZmlsZXMpLiBUaGVzZSBzb3VyY2VzIHdpbGwgYmUgbGlzdGVkIG9uIHRoZSBIZWxwIG1lbnUuICBUaGUgcGF0dGVybiBpcworIyBVc2VyIGhpZ2hsaWdodGluZyB0aGVtZXMgYW5kIGtleWJpbmRpbmcgc2V0cyBtdXN0IGhhdmUgKHNlY3Rpb24pIG5hbWVzCisjIGRpc3RpbmN0IGZyb20gdGhlIGRlZmF1bHQgbmFtZXMuICBBbGwgaXRlbXMgYXJlIGFkZGVkIGFuZCBzYXZlZCBhcyBhCisjIGdyb3VwLiBUaGV5IGFyZSByZXRhaW5lZCB1bmxlc3Mgc3BlY2lmaWNhbGx5IGRlbGV0ZWQgd2l0aGluIHRoZSBjb25maWcKKyMgZGlhbG9nLiBDaG9vc2luZyBvbmUgb2YgdGhlIGRlZmF1bHQgdGhlbWVzIG9yIGtleXNldHMganVzdCBhcHBsaWVzIHRoZQorIyByZWxldmFudCBzZXR0aW5ncyBmcm9tIHRoZSBkZWZhdWx0IGZpbGUuCisjCisjIEFkZGl0aW9uYWwgaGVscCBzb3VyY2VzIGFyZSBsaXN0ZWQgaW4gdGhlIFtIZWxwRmlsZXNdIHNlY3Rpb24gYmVsb3cKKyMgYW5kIHNob3VsZCBiZSB2aWV3YWJsZSBieSBhIHdlYiBicm93c2VyIChvciB0aGUgV2luZG93cyBIZWxwIHZpZXdlciBpbgorIyB0aGUgY2FzZSBvZiAuY2htIGZpbGVzKS4gVGhlc2Ugc291cmNlcyB3aWxsIGJlIGxpc3RlZCBvbiB0aGUgSGVscAorIyBtZW51LiAgVGhlIHBhdHRlcm4sIGFuZCB0d28gZXhhbXBsZXMsIGFyZQorIwogIyA8c2VxdWVuY2VfbnVtYmVyID0gbWVudSBpdGVtOy9wYXRoL3RvL2hlbHAvc291cmNlPgotIyBZb3UgY2FuJ3QgdXNlIGEgc2VtaS1jb2xvbiBpbiBhIG1lbnUgaXRlbSBvciBwYXRoLiAgVGhlIHBhdGggd2lsbCBiZSBwbGF0Zm9ybQotIyBzcGVjaWZpYyBiZWNhdXNlIG9mIHBhdGggc2VwYXJhdG9ycywgZHJpdmUgc3BlY3MgZXRjLgorIyAxID0gSURMRTtDOi9Qcm9ncmFtcy9QeXRob24zNi9MaWIvaWRsZWxpYi9oZWxwLmh0bWwKKyMgMiA9IFBpbGxvdztodHRwczovL3BpbGxvdy5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvCiAjCi0jIEl0IGlzIGJlc3QgdG8gdXNlIHRoZSBDb25maWd1cmF0aW9uIEdVSSB0byBzZXQgdXAgYWRkaXRpb25hbCBoZWxwIHNvdXJjZXMhCi0jIEV4YW1wbGU6Ci0jMSA9IE15IEV4dHJhIEhlbHAgU291cmNlOy91c3Ivc2hhcmUvZG9jL2Zvby9pbmRleC5odG1sCi0jMiA9IEFub3RoZXIgSGVscCBTb3VyY2U7L3BhdGgvdG8vYW5vdGhlci5wZGYKKyMgWW91IGNhbid0IHVzZSBhIHNlbWktY29sb24gaW4gYSBtZW51IGl0ZW0gb3IgcGF0aC4gIFRoZSBwYXRoIHdpbGwgYmUKKyMgcGxhdGZvcm0gc3BlY2lmaWMgYmVjYXVzZSBvZiBwYXRoIHNlcGFyYXRvcnMsIGRyaXZlIHNwZWNzIGV0Yy4KKyMKKyMgVGhlIGRlZmF1bHQgZmlsZXMgc2hvdWxkIG5vdCBiZSBlZGl0ZWQgZXhjZXB0IHRvIGFkZCBuZXcgc2VjdGlvbnMgdG8KKyMgY29uZmlnLWV4dGVuc2lvbnMuZGVmIGZvciBhZGRlZCBleHRlbnNpb25zIC4gIFRoZSB1c2VyIGZpbGVzIHNob3VsZCBiZQorIyBtb2RpZmllZCB0aHJvdWdoIHRoZSBTZXR0aW5ncyBkaWFsb2cuCiAKIFtHZW5lcmFsXQogZWRpdG9yLW9uLXN0YXJ0dXA9IDAKQEAgLTU0LDYgKzYwLDggQEAKIHdpZHRoPSA4MAogaGVpZ2h0PSA0MAogZm9udD0gVGtGaXhlZEZvbnQKKyMgRm9yIFRrRml4ZWRGb250LCB0aGUgYWN0dWFsIHNpemUgYW5kIGJvbGRuZXNzIGFyZSBvYnRhaW5lZCBmcm9tIHRrCisjIGFuZCBvdmVycmlkZSAxMCBhbmQgMC4gIFNlZSBpZGxlbGliLmNvbmZpZy5JZGxlQ29uZi5HZXRGb250CiBmb250LXNpemU9IDEwCiBmb250LWJvbGQ9IDAKIGVuY29kaW5nPSBub25lCkBAIC03MCw3ICs3OCw5IEBACiAKIFtLZXlzXQogZGVmYXVsdD0gMQotbmFtZT0gSURMRSBDbGFzc2ljIFdpbmRvd3MKK25hbWU9CituYW1lMj0KKyMgbmFtZTIgc2V0IGluIHVzZXIgY29uZmlnLW1haW4uY2ZnIGZvciBrZXlzIGFkZGVkIGFmdGVyIDIwMTYgSnVseSAxCiAKIFtIaXN0b3J5XQogY3ljbGljPTEKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2NvbmZpZ0hhbmRsZXIucHkgYi9MaWIvaWRsZWxpYi9jb25maWcucHkKc2ltaWxhcml0eSBpbmRleCA4NSUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvY29uZmlnSGFuZGxlci5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvY29uZmlnLnB5CmluZGV4IDg5NTQ0ODguLjM1OGJlZTQgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2NvbmZpZ0hhbmRsZXIucHkKKysrIGIvTGliL2lkbGVsaWIvY29uZmlnLnB5CkBAIC0xLDEzICsxLDIwIEBACi0iIiJQcm92aWRlcyBhY2Nlc3MgdG8gc3RvcmVkIElETEUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbi4KKyIiImlkbGVsaWIuY29uZmlnIC0tIE1hbmFnZSBJRExFIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24uCiAKLVJlZmVyIHRvIHRoZSBjb21tZW50cyBhdCB0aGUgYmVnaW5uaW5nIG9mIGNvbmZpZy1tYWluLmRlZiBmb3IgYSBkZXNjcmlwdGlvbiBvZgotdGhlIGF2YWlsYWJsZSBjb25maWd1cmF0aW9uIGZpbGVzIGFuZCB0aGUgZGVzaWduIGltcGxlbWVudGVkIHRvIHVwZGF0ZSB1c2VyCi1jb25maWd1cmF0aW9uIGluZm9ybWF0aW9uLiAgSW4gcGFydGljdWxhciwgdXNlciBjb25maWd1cmF0aW9uIGNob2ljZXMgd2hpY2gKLWR1cGxpY2F0ZSB0aGUgZGVmYXVsdHMgd2lsbCBiZSByZW1vdmVkIGZyb20gdGhlIHVzZXIncyBjb25maWd1cmF0aW9uIGZpbGVzLAotYW5kIGlmIGEgZmlsZSBiZWNvbWVzIGVtcHR5LCBpdCB3aWxsIGJlIGRlbGV0ZWQuCitUaGUgY29tbWVudHMgYXQgdGhlIGJlZ2lubmluZyBvZiBjb25maWctbWFpbi5kZWYgZGVzY3JpYmUgdGhlCitjb25maWd1cmF0aW9uIGZpbGVzIGFuZCB0aGUgZGVzaWduIGltcGxlbWVudGVkIHRvIHVwZGF0ZSB1c2VyCitjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uLiAgSW4gcGFydGljdWxhciwgdXNlciBjb25maWd1cmF0aW9uIGNob2ljZXMKK3doaWNoIGR1cGxpY2F0ZSB0aGUgZGVmYXVsdHMgd2lsbCBiZSByZW1vdmVkIGZyb20gdGhlIHVzZXIncworY29uZmlndXJhdGlvbiBmaWxlcywgYW5kIGlmIGEgdXNlciBmaWxlIGJlY29tZXMgZW1wdHksIGl0IHdpbGwgYmUKK2RlbGV0ZWQuCiAKLVRoZSBjb250ZW50cyBvZiB0aGUgdXNlciBmaWxlcyBtYXkgYmUgYWx0ZXJlZCB1c2luZyB0aGUgT3B0aW9ucy9Db25maWd1cmUgSURMRQotbWVudSB0byBhY2Nlc3MgdGhlIGNvbmZpZ3VyYXRpb24gR1VJIChjb25maWdEaWFsb2cucHkpLCBvciBtYW51YWxseS4KK1RoZSBjb25maWd1cmF0aW9uIGRhdGFiYXNlIG1hcHMgb3B0aW9ucyB0byB2YWx1ZXMuICBDb21jZXB0dWFsbHksIHRoZQorZGF0YWJhc2Uga2V5cyBhcmUgdHVwbGVzIChjb25maWctdHlwZSwgc2VjdGlvbiwgaXRlbSkuICBBcyBpbXBsZW1lbnRlZCwKK3RoZXJlIGFyZSAgc2VwYXJhdGUgZGljdHMgZm9yIGRlZmF1bHQgYW5kIHVzZXIgdmFsdWVzLiAgRWFjaCBoYXMKK2NvbmZpZy10eXBlIGtleXMgJ21haW4nLCAnZXh0ZW5zaW9ucycsICdoaWdobGlnaHQnLCBhbmQgJ2tleXMnLiAgVGhlCit2YWx1ZSBmb3IgZWFjaCBrZXkgaXMgYSBDb25maWdQYXJzZXIgaW5zdGFuY2UgdGhhdCBtYXBzIHNlY3Rpb24gYW5kIGl0ZW0KK3RvIHZhbHVlcy4gIEZvciAnbWFpbicgYW5kICdleHRlbnN0b25zJywgdXNlciB2YWx1ZXMgb3ZlcnJpZGUKK2RlZmF1bHQgdmFsdWVzLiAgRm9yICdoaWdobGlnaHQnIGFuZCAna2V5cycsIHVzZXIgc2VjdGlvbnMgYXVnbWVudCB0aGUKK2RlZmF1bHQgc2VjdGlvbnMgKGFuZCBtdXN0LCB0aGVyZWZvcmUsIGhhdmUgZGlzdGluY3QgbmFtZXMpLgogCiBUaHJvdWdob3V0IHRoaXMgbW9kdWxlIHRoZXJlIGlzIGFuIGVtcGhhc2lzIG9uIHJldHVybmluZyB1c2VhYmxlIGRlZmF1bHRzCiB3aGVuIGEgcHJvYmxlbSBvY2N1cnMgaW4gcmV0dXJuaW5nIGEgcmVxdWVzdGVkIGNvbmZpZ3VyYXRpb24gdmFsdWUgYmFjayB0bwpAQCAtMTgsMTEgKzI1LDEwIEBACiAiIiIKICMgVE9ET3MgYWRkZWQgT2N0IDIwMTQsIHRqcgogCitmcm9tIGNvbmZpZ3BhcnNlciBpbXBvcnQgQ29uZmlnUGFyc2VyCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKIAotZnJvbSBjb25maWdwYXJzZXIgaW1wb3J0IENvbmZpZ1BhcnNlcgotZnJvbSB0a2ludGVyIGltcG9ydCBUa1ZlcnNpb24KIGZyb20gdGtpbnRlci5mb250IGltcG9ydCBGb250LCBuYW1ldG9mb250CiAKIGNsYXNzIEludmFsaWRDb25maWdUeXBlKEV4Y2VwdGlvbik6IHBhc3MKQEAgLTIzMCwxNSArMjM2LDEyIEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYudXNlckNmZ1tjb25maWdUeXBlXS5HZXQoc2VjdGlvbiwgb3B0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9dHlwZSwgcmF3PXJhdykKICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICB3YXJuaW5nID0gKCdcbiBXYXJuaW5nOiBjb25maWdIYW5kbGVyLnB5IC0gSWRsZUNvbmYuR2V0T3B0aW9uIC1cbicKKyAgICAgICAgICAgIHdhcm5pbmcgPSAoJ1xuIFdhcm5pbmc6IGNvbmZpZy5weSAtIElkbGVDb25mLkdldE9wdGlvbiAtXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgaW52YWxpZCAlciB2YWx1ZSBmb3IgY29uZmlndXJhdGlvbiBvcHRpb24gJXJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyBmcm9tIHNlY3Rpb24gJXI6ICVyJyAlCiAgICAgICAgICAgICAgICAgICAgICAgICh0eXBlLCBvcHRpb24sIHNlY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudXNlckNmZ1tjb25maWdUeXBlXS5HZXQoc2VjdGlvbiwgb3B0aW9uLCByYXc9cmF3KSkpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcHJpbnQod2FybmluZywgZmlsZT1zeXMuc3RkZXJyKQotICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgX3dhcm4od2FybmluZywgY29uZmlnVHlwZSwgc2VjdGlvbiwgb3B0aW9uKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBpZiBzZWxmLmRlZmF1bHRDZmdbY29uZmlnVHlwZV0uaGFzX29wdGlvbihzZWN0aW9uLG9wdGlvbik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZGVmYXVsdENmZ1tjb25maWdUeXBlXS5HZXQoCkBAIC0yNDcsMTUgKzI1MCwxMiBAQAogICAgICAgICAgICAgcGFzcwogICAgICAgICAjcmV0dXJuaW5nIGRlZmF1bHQsIHByaW50IHdhcm5pbmcKICAgICAgICAgaWYgd2Fybl9vbl9kZWZhdWx0OgotICAgICAgICAgICAgd2FybmluZyA9ICgnXG4gV2FybmluZzogY29uZmlnSGFuZGxlci5weSAtIElkbGVDb25mLkdldE9wdGlvbiAtXG4nCisgICAgICAgICAgICB3YXJuaW5nID0gKCdcbiBXYXJuaW5nOiBjb25maWcucHkgLSBJZGxlQ29uZi5HZXRPcHRpb24gLVxuJwogICAgICAgICAgICAgICAgICAgICAgICAnIHByb2JsZW0gcmV0cmlldmluZyBjb25maWd1cmF0aW9uIG9wdGlvbiAlclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnIGZyb20gc2VjdGlvbiAlci5cbicKICAgICAgICAgICAgICAgICAgICAgICAgJyByZXR1cm5pbmcgZGVmYXVsdCB2YWx1ZTogJXInICUKICAgICAgICAgICAgICAgICAgICAgICAgKG9wdGlvbiwgc2VjdGlvbiwgZGVmYXVsdCkpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcHJpbnQod2FybmluZywgZmlsZT1zeXMuc3RkZXJyKQotICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgX3dhcm4od2FybmluZywgY29uZmlnVHlwZSwgc2VjdGlvbiwgb3B0aW9uKQogICAgICAgICByZXR1cm4gZGVmYXVsdAogCiAgICAgZGVmIFNldE9wdGlvbihzZWxmLCBjb25maWdUeXBlLCBzZWN0aW9uLCBvcHRpb24sIHZhbHVlKToKQEAgLTM1OCw1MiArMzU4LDczIEBACiAgICAgICAgIGZvciBlbGVtZW50IGluIHRoZW1lOgogICAgICAgICAgICAgaWYgbm90IGNmZ1BhcnNlci5oYXNfb3B0aW9uKHRoZW1lTmFtZSwgZWxlbWVudCk6CiAgICAgICAgICAgICAgICAgIyBQcmludCB3YXJuaW5nIHRoYXQgd2lsbCByZXR1cm4gYSBkZWZhdWx0IGNvbG9yCi0gICAgICAgICAgICAgICAgd2FybmluZyA9ICgnXG4gV2FybmluZzogY29uZmlnSGFuZGxlci5JZGxlQ29uZi5HZXRUaGVtZURpY3QnCisgICAgICAgICAgICAgICAgd2FybmluZyA9ICgnXG4gV2FybmluZzogY29uZmlnLklkbGVDb25mLkdldFRoZW1lRGljdCcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgLVxuIHByb2JsZW0gcmV0cmlldmluZyB0aGVtZSBlbGVtZW50ICVyJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuIGZyb20gdGhlbWUgJXIuXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIHJldHVybmluZyBkZWZhdWx0IGNvbG9yOiAlcicgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVsZW1lbnQsIHRoZW1lTmFtZSwgdGhlbWVbZWxlbWVudF0pKQotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQod2FybmluZywgZmlsZT1zeXMuc3RkZXJyKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgX3dhcm4od2FybmluZywgJ2hpZ2hsaWdodCcsIHRoZW1lTmFtZSwgZWxlbWVudCkKICAgICAgICAgICAgIHRoZW1lW2VsZW1lbnRdID0gY2ZnUGFyc2VyLkdldCgKICAgICAgICAgICAgICAgICAgICAgdGhlbWVOYW1lLCBlbGVtZW50LCBkZWZhdWx0PXRoZW1lW2VsZW1lbnRdKQogICAgICAgICByZXR1cm4gdGhlbWUKIAogICAgIGRlZiBDdXJyZW50VGhlbWUoc2VsZik6Ci0gICAgICAgICIiIlJldHVybiB0aGUgbmFtZSBvZiB0aGUgY3VycmVudGx5IGFjdGl2ZSB0ZXh0IGNvbG9yIHRoZW1lLgorICAgICAgICAiUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50bHkgYWN0aXZlIHRleHQgY29sb3IgdGhlbWUuIgorICAgICAgICByZXR1cm4gc2VsZi5jdXJyZW50X2NvbG9yc19hbmRfa2V5cygnVGhlbWUnKQogCi0gICAgICAgIGlkbGVsaWIuY29uZmlnLW1haW4uZGVmIGluY2x1ZGVzIHRoaXMgc2VjdGlvbgorICAgIGRlZiBDdXJyZW50S2V5cyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50bHkgYWN0aXZlIGtleSBzZXQuIiIiCisgICAgICAgIHJldHVybiBzZWxmLmN1cnJlbnRfY29sb3JzX2FuZF9rZXlzKCdLZXlzJykKKworICAgIGRlZiBjdXJyZW50X2NvbG9yc19hbmRfa2V5cyhzZWxmLCBzZWN0aW9uKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBjdXJyZW50bHkgYWN0aXZlIG5hbWUgZm9yIFRoZW1lIG9yIEtleXMgc2VjdGlvbi4KKworICAgICAgICBpZGxlbGliLmNvbmZpZy1tYWluLmRlZiAoJ2RlZmF1bHQnKSBpbmNsdWRlcyB0aGVzZSBzZWN0aW9ucworCiAgICAgICAgIFtUaGVtZV0KICAgICAgICAgZGVmYXVsdD0gMQogICAgICAgICBuYW1lPSBJRExFIENsYXNzaWMKICAgICAgICAgbmFtZTI9Ci0gICAgICAgICMgbmFtZTIgc2V0IGluIHVzZXIgY29uZmlnLW1haW4uY2ZnIGZvciB0aGVtZXMgYWRkZWQgYWZ0ZXIgMjAxNSBPY3QgMQogCi0gICAgICAgIEl0ZW0gbmFtZTIgaXMgbmVlZGVkIGJlY2F1c2Ugc2V0dGluZyBuYW1lIHRvIGEgbmV3IGJ1aWx0aW4KLSAgICAgICAgY2F1c2VzIG9sZGVyIElETEVzIHRvIGRpc3BsYXkgbXVsdGlwbGUgZXJyb3IgbWVzc2FnZXMgb3IgcXVpdC4KKyAgICAgICAgW0tleXNdCisgICAgICAgIGRlZmF1bHQ9IDEKKyAgICAgICAgbmFtZT0KKyAgICAgICAgbmFtZTI9CisKKyAgICAgICAgSXRlbSAnbmFtZTInLCBpcyB1c2VkIGZvciBidWlsdC1pbiAoJ2RlZmF1bHQnKSB0aGVtZXMgYW5kIGtleXMKKyAgICAgICAgYWRkZWQgYWZ0ZXIgMjAxNSBPY3QgMSBhbmQgMjAxNiBKdWx5IDEuICBUaGlzIGtsdWRnZSBpcyBuZWVkZWQKKyAgICAgICAgYmVjYXVzZSBzZXR0aW5nICduYW1lJyB0byBhIGJ1aWx0aW4gbm90IGRlZmluZWQgaW4gb2xkZXIgSURMRXMKKyAgICAgICAgdG8gZGlzcGxheSBtdWx0aXBsZSBlcnJvciBtZXNzYWdlcyBvciBxdWl0LgogICAgICAgICBTZWUgaHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyNTMxMy4KLSAgICAgICAgV2hlbiBkZWZhdWx0ID0gVHJ1ZSwgbmFtZTIgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIG5hbWUsCi0gICAgICAgIHdoaWxlIG9sZGVyIElETEVzIHdpbGwganVzdCB1c2UgbmFtZS4KKyAgICAgICAgV2hlbiBkZWZhdWx0ID0gVHJ1ZSwgJ25hbWUyJyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgJ25hbWUnLAorICAgICAgICB3aGlsZSBvbGRlciBJRExFcyB3aWxsIGp1c3QgdXNlIG5hbWUuICBXaGVuIGRlZmF1bHQgPSBGYWxzZSwKKyAgICAgICAgJ25hbWUyJyBtYXkgc3RpbGwgYmUgc2V0LCBidXQgaXQgaXMgaWdub3JlZC4KICAgICAgICAgIiIiCi0gICAgICAgIGRlZmF1bHQgPSBzZWxmLkdldE9wdGlvbignbWFpbicsICdUaGVtZScsICdkZWZhdWx0JywKKyAgICAgICAgY2ZnbmFtZSA9ICdoaWdobGlnaHQnIGlmIHNlY3Rpb24gPT0gJ1RoZW1lJyBlbHNlICdrZXlzJworICAgICAgICBkZWZhdWx0ID0gc2VsZi5HZXRPcHRpb24oJ21haW4nLCBzZWN0aW9uLCAnZGVmYXVsdCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSdib29sJywgZGVmYXVsdD1UcnVlKQorICAgICAgICBuYW1lID0gJycKICAgICAgICAgaWYgZGVmYXVsdDoKLSAgICAgICAgICAgIHRoZW1lID0gc2VsZi5HZXRPcHRpb24oJ21haW4nLCAnVGhlbWUnLCAnbmFtZTInLCBkZWZhdWx0PScnKQotICAgICAgICBpZiBkZWZhdWx0IGFuZCBub3QgdGhlbWUgb3Igbm90IGRlZmF1bHQ6Ci0gICAgICAgICAgICB0aGVtZSA9IHNlbGYuR2V0T3B0aW9uKCdtYWluJywgJ1RoZW1lJywgJ25hbWUnLCBkZWZhdWx0PScnKQotICAgICAgICBzb3VyY2UgPSBzZWxmLmRlZmF1bHRDZmcgaWYgZGVmYXVsdCBlbHNlIHNlbGYudXNlckNmZwotICAgICAgICBpZiBzb3VyY2VbJ2hpZ2hsaWdodCddLmhhc19zZWN0aW9uKHRoZW1lKToKLSAgICAgICAgICAgIHJldHVybiB0aGVtZQorICAgICAgICAgICAgbmFtZSA9IHNlbGYuR2V0T3B0aW9uKCdtYWluJywgc2VjdGlvbiwgJ25hbWUyJywgZGVmYXVsdD0nJykKKyAgICAgICAgaWYgbm90IG5hbWU6CisgICAgICAgICAgICBuYW1lID0gc2VsZi5HZXRPcHRpb24oJ21haW4nLCBzZWN0aW9uLCAnbmFtZScsIGRlZmF1bHQ9JycpCisgICAgICAgIGlmIG5hbWU6CisgICAgICAgICAgICBzb3VyY2UgPSBzZWxmLmRlZmF1bHRDZmcgaWYgZGVmYXVsdCBlbHNlIHNlbGYudXNlckNmZworICAgICAgICAgICAgaWYgc291cmNlW2NmZ25hbWVdLmhhc19zZWN0aW9uKG5hbWUpOgorICAgICAgICAgICAgICAgIHJldHVybiBuYW1lCisgICAgICAgIHJldHVybiAiSURMRSBDbGFzc2ljIiBpZiBzZWN0aW9uID09ICdUaGVtZScgZWxzZSBzZWxmLmRlZmF1bHRfa2V5cygpCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIGRlZmF1bHRfa2V5cygpOgorICAgICAgICBpZiBzeXMucGxhdGZvcm1bOjNdID09ICd3aW4nOgorICAgICAgICAgICAgcmV0dXJuICdJRExFIENsYXNzaWMgV2luZG93cycKKyAgICAgICAgZWxpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgICAgICAgICByZXR1cm4gJ0lETEUgQ2xhc3NpYyBPU1gnCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gIklETEUgQ2xhc3NpYyIKKyAgICAgICAgICAgIHJldHVybiAnSURMRSBNb2Rlcm4gVW5peCcKIAotICAgIGRlZiBDdXJyZW50S2V5cyhzZWxmKToKLSAgICAgICAgIlJldHVybiB0aGUgbmFtZSBvZiB0aGUgY3VycmVudGx5IGFjdGl2ZSBrZXkgc2V0LiIKLSAgICAgICAgcmV0dXJuIHNlbGYuR2V0T3B0aW9uKCdtYWluJywgJ0tleXMnLCAnbmFtZScsIGRlZmF1bHQ9JycpCi0KLSAgICBkZWYgR2V0RXh0ZW5zaW9ucyhzZWxmLCBhY3RpdmVfb25seT1UcnVlLCBlZGl0b3Jfb25seT1GYWxzZSwgc2hlbGxfb25seT1GYWxzZSk6CisgICAgZGVmIEdldEV4dGVuc2lvbnMoc2VsZiwgYWN0aXZlX29ubHk9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICBlZGl0b3Jfb25seT1GYWxzZSwgc2hlbGxfb25seT1GYWxzZSk6CiAgICAgICAgICIiIlJldHVybiBleHRlbnNpb25zIGluIGRlZmF1bHQgYW5kIHVzZXIgY29uZmlnLWV4dGVuc2lvbnMgZmlsZXMuCiAKICAgICAgICAgSWYgYWN0aXZlX29ubHkgVHJ1ZSwgb25seSByZXR1cm4gYWN0aXZlIChlbmFibGVkKSBleHRlbnNpb25zCkBAIC00MjMsNyArNDQ0LDcgQEAKICAgICAgICAgICAgICAgICBpZiBzZWxmLkdldE9wdGlvbignZXh0ZW5zaW9ucycsIGV4dG4sICdlbmFibGUnLCBkZWZhdWx0PVRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0nYm9vbCcpOgogICAgICAgICAgICAgICAgICAgICAjdGhlIGV4dGVuc2lvbiBpcyBlbmFibGVkCi0gICAgICAgICAgICAgICAgICAgIGlmIGVkaXRvcl9vbmx5IG9yIHNoZWxsX29ubHk6ICAjIFRPRE8gaWYgYm90aCwgY29udHJhZGljdG9yeQorICAgICAgICAgICAgICAgICAgICBpZiBlZGl0b3Jfb25seSBvciBzaGVsbF9vbmx5OiAgIyBUT0RPIGJvdGggVHJ1ZSBjb250cmFkaWN0CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBlZGl0b3Jfb25seToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24gPSAiZW5hYmxlX2VkaXRvciIKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CkBAIC01MjgsNyArNTQ5LDggQEAKICAgICAgICAgZXZlbnRTdHIgLSB2aXJ0dWFsIGV2ZW50LCBpbmNsdWRpbmcgYnJhY2tldHMsIGFzIGluICc8PGV2ZW50Pj4nLgogICAgICAgICAiIiIKICAgICAgICAgZXZlbnROYW1lID0gZXZlbnRTdHJbMjotMl0gI3RyaW0gb2ZmIHRoZSBhbmdsZSBicmFja2V0cwotICAgICAgICBiaW5kaW5nID0gc2VsZi5HZXRPcHRpb24oJ2tleXMnLCBrZXlTZXROYW1lLCBldmVudE5hbWUsIGRlZmF1bHQ9JycpLnNwbGl0KCkKKyAgICAgICAgYmluZGluZyA9IHNlbGYuR2V0T3B0aW9uKCdrZXlzJywga2V5U2V0TmFtZSwgZXZlbnROYW1lLCBkZWZhdWx0PScnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Fybl9vbl9kZWZhdWx0PUZhbHNlKS5zcGxpdCgpCiAgICAgICAgIHJldHVybiBiaW5kaW5nCiAKICAgICBkZWYgR2V0Q3VycmVudEtleVNldChzZWxmKToKQEAgLTYzOSwyMCArNjYxLDI4IEBACiAgICAgICAgICAgICAnPDxkZWwtd29yZC1yaWdodD4+JzogWyc8Q29udHJvbC1LZXktRGVsZXRlPiddCiAgICAgICAgICAgICB9CiAgICAgICAgIGlmIGtleVNldE5hbWU6Ci0gICAgICAgICAgICBmb3IgZXZlbnQgaW4ga2V5QmluZGluZ3M6Ci0gICAgICAgICAgICAgICAgYmluZGluZyA9IHNlbGYuR2V0S2V5QmluZGluZyhrZXlTZXROYW1lLCBldmVudCkKLSAgICAgICAgICAgICAgICBpZiBiaW5kaW5nOgotICAgICAgICAgICAgICAgICAgICBrZXlCaW5kaW5nc1tldmVudF0gPSBiaW5kaW5nCi0gICAgICAgICAgICAgICAgZWxzZTogI3dlIGFyZSBnb2luZyB0byByZXR1cm4gYSBkZWZhdWx0LCBwcmludCB3YXJuaW5nCi0gICAgICAgICAgICAgICAgICAgIHdhcm5pbmc9KCdcbiBXYXJuaW5nOiBjb25maWdIYW5kbGVyLnB5IC0gSWRsZUNvbmYuR2V0Q29yZUtleXMnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAtXG4gcHJvYmxlbSByZXRyaWV2aW5nIGtleSBiaW5kaW5nIGZvciBldmVudCAlcicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXG4gZnJvbSBrZXkgc2V0ICVyLlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgcmV0dXJuaW5nIGRlZmF1bHQgdmFsdWU6ICVyJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGV2ZW50LCBrZXlTZXROYW1lLCBrZXlCaW5kaW5nc1tldmVudF0pKQotICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcmludCh3YXJuaW5nLCBmaWxlPXN5cy5zdGRlcnIpCi0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgaWYgbm90IChzZWxmLnVzZXJDZmdbJ2tleXMnXS5oYXNfc2VjdGlvbihrZXlTZXROYW1lKSBvcgorICAgICAgICAgICAgICAgICAgICBzZWxmLmRlZmF1bHRDZmdbJ2tleXMnXS5oYXNfc2VjdGlvbihrZXlTZXROYW1lKSk6CisgICAgICAgICAgICAgICAgd2FybmluZyA9ICgKKyAgICAgICAgICAgICAgICAgICAgJ1xuIFdhcm5pbmc6IGNvbmZpZy5weSAtIElkbGVDb25mLkdldENvcmVLZXlzIC1cbicKKyAgICAgICAgICAgICAgICAgICAgJyBrZXkgc2V0ICVyIGlzIG5vdCBkZWZpbmVkLCB1c2luZyBkZWZhdWx0IGJpbmRpbmdzLicgJQorICAgICAgICAgICAgICAgICAgICAoa2V5U2V0TmFtZSwpCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIF93YXJuKHdhcm5pbmcsICdrZXlzJywga2V5U2V0TmFtZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZm9yIGV2ZW50IGluIGtleUJpbmRpbmdzOgorICAgICAgICAgICAgICAgICAgICBiaW5kaW5nID0gc2VsZi5HZXRLZXlCaW5kaW5nKGtleVNldE5hbWUsIGV2ZW50KQorICAgICAgICAgICAgICAgICAgICBpZiBiaW5kaW5nOgorICAgICAgICAgICAgICAgICAgICAgICAga2V5QmluZGluZ3NbZXZlbnRdID0gYmluZGluZworICAgICAgICAgICAgICAgICAgICBlbHNlOiAjd2UgYXJlIGdvaW5nIHRvIHJldHVybiBhIGRlZmF1bHQsIHByaW50IHdhcm5pbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmcgPSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuIFdhcm5pbmc6IGNvbmZpZy5weSAtIElkbGVDb25mLkdldENvcmVLZXlzIC1cbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIHByb2JsZW0gcmV0cmlldmluZyBrZXkgYmluZGluZyBmb3IgZXZlbnQgJXJcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIGZyb20ga2V5IHNldCAlci5cbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIHJldHVybmluZyBkZWZhdWx0IHZhbHVlOiAlcicgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChldmVudCwga2V5U2V0TmFtZSwga2V5QmluZGluZ3NbZXZlbnRdKQorICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAgICAgX3dhcm4od2FybmluZywgJ2tleXMnLCBrZXlTZXROYW1lLCBldmVudCkKICAgICAgICAgcmV0dXJuIGtleUJpbmRpbmdzCiAKICAgICBkZWYgR2V0RXh0cmFIZWxwU291cmNlTGlzdChzZWxmLCBjb25maWdTZXQpOgpAQCAtNzEzLDE2ICs3NDMsMTMgQEAKICAgICAgICAgYm9sZCA9IHNlbGYuR2V0T3B0aW9uKGNvbmZpZ1R5cGUsIHNlY3Rpb24sICdmb250LWJvbGQnLCBkZWZhdWx0PTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSdib29sJykKICAgICAgICAgaWYgKGZhbWlseSA9PSAnVGtGaXhlZEZvbnQnKToKLSAgICAgICAgICAgIGlmIFRrVmVyc2lvbiA8IDguNToKLSAgICAgICAgICAgICAgICBmYW1pbHkgPSAnQ291cmllcicKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZiA9IEZvbnQobmFtZT0nVGtGaXhlZEZvbnQnLCBleGlzdHM9VHJ1ZSwgcm9vdD1yb290KQotICAgICAgICAgICAgICAgIGFjdHVhbEZvbnQgPSBGb250LmFjdHVhbChmKQotICAgICAgICAgICAgICAgIGZhbWlseSA9IGFjdHVhbEZvbnRbJ2ZhbWlseSddCi0gICAgICAgICAgICAgICAgc2l6ZSA9IGFjdHVhbEZvbnRbJ3NpemUnXQotICAgICAgICAgICAgICAgIGlmIHNpemUgPD0gMDoKLSAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IDEwICAjIGlmIGZvbnQgaW4gcGl4ZWxzLCBpZ25vcmUgYWN0dWFsIHNpemUKLSAgICAgICAgICAgICAgICBib2xkID0gYWN0dWFsRm9udFsnd2VpZ2h0J109PSdib2xkJworICAgICAgICAgICAgZiA9IEZvbnQobmFtZT0nVGtGaXhlZEZvbnQnLCBleGlzdHM9VHJ1ZSwgcm9vdD1yb290KQorICAgICAgICAgICAgYWN0dWFsRm9udCA9IEZvbnQuYWN0dWFsKGYpCisgICAgICAgICAgICBmYW1pbHkgPSBhY3R1YWxGb250WydmYW1pbHknXQorICAgICAgICAgICAgc2l6ZSA9IGFjdHVhbEZvbnRbJ3NpemUnXQorICAgICAgICAgICAgaWYgc2l6ZSA8PSAwOgorICAgICAgICAgICAgICAgIHNpemUgPSAxMCAgIyBpZiBmb250IGluIHBpeGVscywgaWdub3JlIGFjdHVhbCBzaXplCisgICAgICAgICAgICBib2xkID0gYWN0dWFsRm9udFsnd2VpZ2h0J10gPT0gJ2JvbGQnCiAgICAgICAgIHJldHVybiAoZmFtaWx5LCBzaXplLCAnYm9sZCcgaWYgYm9sZCBlbHNlICdub3JtYWwnKQogCiAgICAgZGVmIExvYWRDZmdGaWxlcyhzZWxmKToKQEAgLTczOSw2ICs3NjYsMTggQEAKIAogaWRsZUNvbmYgPSBJZGxlQ29uZigpCiAKKworX3dhcm5lZCA9IHNldCgpCitkZWYgX3dhcm4obXNnLCAqa2V5KToKKyAgICBrZXkgPSAobXNnLCkgKyBrZXkKKyAgICBpZiBrZXkgbm90IGluIF93YXJuZWQ6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHByaW50KG1zZywgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgX3dhcm5lZC5hZGQoa2V5KQorCisKICMgVE9ETyBSZXZpc2UgdGVzdCBvdXRwdXQsIHdyaXRlIGV4cGFuZGVkIHVuaXR0ZXN0CiAjCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvY29uZmlnSGVscFNvdXJjZUVkaXQucHkgYi9MaWIvaWRsZWxpYi9jb25maWdIZWxwU291cmNlRWRpdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2RlODExOC4uMDAwMDAwMAotLS0gYS9MaWIvaWRsZWxpYi9jb25maWdIZWxwU291cmNlRWRpdC5weQorKysgL2Rldi9udWxsCkBAIC0xLDE3MCArMCwwIEBACi0iRGlhbG9nIHRvIHNwZWNpZnkgb3IgZWRpdCB0aGUgcGFyYW1ldGVycyBmb3IgYSB1c2VyIGNvbmZpZ3VyZWQgaGVscCBzb3VyY2UuIgotCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLQotZnJvbSB0a2ludGVyIGltcG9ydCAqCi1pbXBvcnQgdGtpbnRlci5tZXNzYWdlYm94IGFzIHRrTWVzc2FnZUJveAotaW1wb3J0IHRraW50ZXIuZmlsZWRpYWxvZyBhcyB0a0ZpbGVEaWFsb2cKLQotY2xhc3MgR2V0SGVscFNvdXJjZURpYWxvZyhUb3BsZXZlbCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCwgdGl0bGUsIG1lbnVJdGVtPScnLCBmaWxlUGF0aD0nJywgX2h0ZXN0PUZhbHNlKToKLSAgICAgICAgIiIiR2V0IG1lbnUgZW50cnkgYW5kIHVybC8gbG9jYWwgZmlsZSBsb2NhdGlvbiBmb3IgQWRkaXRpb25hbCBIZWxwCi0KLSAgICAgICAgVXNlciBzZWxlY3RzIGEgbmFtZSBmb3IgdGhlIEhlbHAgcmVzb3VyY2UgYW5kIHByb3ZpZGVzIGEgd2ViIHVybAotICAgICAgICBvciBhIGxvY2FsIGZpbGUgYXMgaXRzIHNvdXJjZS4gIFRoZSB1c2VyIGNhbiBlbnRlciBhIHVybCBvciBicm93c2UKLSAgICAgICAgZm9yIHRoZSBmaWxlLgotCi0gICAgICAgIF9odGVzdCAtIGJvb2wsIGNoYW5nZSBib3ggbG9jYXRpb24gd2hlbiBydW5uaW5nIGh0ZXN0Ci0gICAgICAgICIiIgotICAgICAgICBUb3BsZXZlbC5fX2luaXRfXyhzZWxmLCBwYXJlbnQpCi0gICAgICAgIHNlbGYuY29uZmlndXJlKGJvcmRlcndpZHRoPTUpCi0gICAgICAgIHNlbGYucmVzaXphYmxlKGhlaWdodD1GQUxTRSwgd2lkdGg9RkFMU0UpCi0gICAgICAgIHNlbGYudGl0bGUodGl0bGUpCi0gICAgICAgIHNlbGYudHJhbnNpZW50KHBhcmVudCkKLSAgICAgICAgc2VsZi5ncmFiX3NldCgpCi0gICAgICAgIHNlbGYucHJvdG9jb2woIldNX0RFTEVURV9XSU5ET1ciLCBzZWxmLmNhbmNlbCkKLSAgICAgICAgc2VsZi5wYXJlbnQgPSBwYXJlbnQKLSAgICAgICAgc2VsZi5yZXN1bHQgPSBOb25lCi0gICAgICAgIHNlbGYuY3JlYXRlX3dpZGdldHMoKQotICAgICAgICBzZWxmLm1lbnUuc2V0KG1lbnVJdGVtKQotICAgICAgICBzZWxmLnBhdGguc2V0KGZpbGVQYXRoKQotICAgICAgICBzZWxmLndpdGhkcmF3KCkgI2hpZGUgd2hpbGUgc2V0dGluZyBnZW9tZXRyeQotICAgICAgICAjbmVlZHMgdG8gYmUgZG9uZSBoZXJlIHNvIHRoYXQgdGhlIHdpbmZvX3JlcXdpZHRoIGlzIHZhbGlkCi0gICAgICAgIHNlbGYudXBkYXRlX2lkbGV0YXNrcygpCi0gICAgICAgICNjZW50cmUgZGlhbG9nIG92ZXIgcGFyZW50LiBiZWxvdyBwYXJlbnQgaWYgcnVubmluZyBodGVzdC4KLSAgICAgICAgc2VsZi5nZW9tZXRyeSgKLSAgICAgICAgICAgICAgICAiKyVkKyVkIiAlICgKLSAgICAgICAgICAgICAgICAgICAgcGFyZW50LndpbmZvX3Jvb3R4KCkgKwotICAgICAgICAgICAgICAgICAgICAocGFyZW50LndpbmZvX3dpZHRoKCkvMiAtIHNlbGYud2luZm9fcmVxd2lkdGgoKS8yKSwKLSAgICAgICAgICAgICAgICAgICAgcGFyZW50LndpbmZvX3Jvb3R5KCkgKwotICAgICAgICAgICAgICAgICAgICAoKHBhcmVudC53aW5mb19oZWlnaHQoKS8yIC0gc2VsZi53aW5mb19yZXFoZWlnaHQoKS8yKQotICAgICAgICAgICAgICAgICAgICBpZiBub3QgX2h0ZXN0IGVsc2UgMTUwKSkpCi0gICAgICAgIHNlbGYuZGVpY29uaWZ5KCkgI2dlb21ldHJ5IHNldCwgdW5oaWRlCi0gICAgICAgIHNlbGYuYmluZCgnPFJldHVybj4nLCBzZWxmLm9rKQotICAgICAgICBzZWxmLndhaXRfd2luZG93KCkKLQotICAgIGRlZiBjcmVhdGVfd2lkZ2V0cyhzZWxmKToKLSAgICAgICAgc2VsZi5tZW51ID0gU3RyaW5nVmFyKHNlbGYpCi0gICAgICAgIHNlbGYucGF0aCA9IFN0cmluZ1ZhcihzZWxmKQotICAgICAgICBzZWxmLmZvbnRTaXplID0gU3RyaW5nVmFyKHNlbGYpCi0gICAgICAgIHNlbGYuZnJhbWVNYWluID0gRnJhbWUoc2VsZiwgYm9yZGVyd2lkdGg9MiwgcmVsaWVmPUdST09WRSkKLSAgICAgICAgc2VsZi5mcmFtZU1haW4ucGFjayhzaWRlPVRPUCwgZXhwYW5kPVRSVUUsIGZpbGw9Qk9USCkKLSAgICAgICAgbGFiZWxNZW51ID0gTGFiZWwoc2VsZi5mcmFtZU1haW4sIGFuY2hvcj1XLCBqdXN0aWZ5PUxFRlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ9J01lbnUgSXRlbTonKQotICAgICAgICBzZWxmLmVudHJ5TWVudSA9IEVudHJ5KHNlbGYuZnJhbWVNYWluLCB0ZXh0dmFyaWFibGU9c2VsZi5tZW51LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPTMwKQotICAgICAgICBzZWxmLmVudHJ5TWVudS5mb2N1c19zZXQoKQotICAgICAgICBsYWJlbFBhdGggPSBMYWJlbChzZWxmLmZyYW1lTWFpbiwgYW5jaG9yPVcsIGp1c3RpZnk9TEVGVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dD0nSGVscCBGaWxlIFBhdGg6IEVudGVyIFVSTCBvciBicm93c2UgZm9yIGZpbGUnKQotICAgICAgICBzZWxmLmVudHJ5UGF0aCA9IEVudHJ5KHNlbGYuZnJhbWVNYWluLCB0ZXh0dmFyaWFibGU9c2VsZi5wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPTQwKQotICAgICAgICBzZWxmLmVudHJ5TWVudS5mb2N1c19zZXQoKQotICAgICAgICBsYWJlbE1lbnUucGFjayhhbmNob3I9VywgcGFkeD01LCBwYWR5PTMpCi0gICAgICAgIHNlbGYuZW50cnlNZW51LnBhY2soYW5jaG9yPVcsIHBhZHg9NSwgcGFkeT0zKQotICAgICAgICBsYWJlbFBhdGgucGFjayhhbmNob3I9VywgcGFkeD01LCBwYWR5PTMpCi0gICAgICAgIHNlbGYuZW50cnlQYXRoLnBhY2soYW5jaG9yPVcsIHBhZHg9NSwgcGFkeT0zKQotICAgICAgICBicm93c2VCdXR0b24gPSBCdXR0b24oc2VsZi5mcmFtZU1haW4sIHRleHQ9J0Jyb3dzZScsIHdpZHRoPTgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPXNlbGYuYnJvd3NlX2ZpbGUpCi0gICAgICAgIGJyb3dzZUJ1dHRvbi5wYWNrKHBhZHk9MykKLSAgICAgICAgZnJhbWVCdXR0b25zID0gRnJhbWUoc2VsZikKLSAgICAgICAgZnJhbWVCdXR0b25zLnBhY2soc2lkZT1CT1RUT00sIGZpbGw9WCkKLSAgICAgICAgc2VsZi5idXR0b25PayA9IEJ1dHRvbihmcmFtZUJ1dHRvbnMsIHRleHQ9J09LJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD04LCBkZWZhdWx0PUFDVElWRSwgIGNvbW1hbmQ9c2VsZi5vaykKLSAgICAgICAgc2VsZi5idXR0b25Pay5ncmlkKHJvdz0wLCBjb2x1bW49MCwgcGFkeD01LHBhZHk9NSkKLSAgICAgICAgc2VsZi5idXR0b25DYW5jZWwgPSBCdXR0b24oZnJhbWVCdXR0b25zLCB0ZXh0PSdDYW5jZWwnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD04LCBjb21tYW5kPXNlbGYuY2FuY2VsKQotICAgICAgICBzZWxmLmJ1dHRvbkNhbmNlbC5ncmlkKHJvdz0wLCBjb2x1bW49MSwgcGFkeD01LCBwYWR5PTUpCi0KLSAgICBkZWYgYnJvd3NlX2ZpbGUoc2VsZik6Ci0gICAgICAgIGZpbGV0eXBlcyA9IFsKLSAgICAgICAgICAgICgiSFRNTCBGaWxlcyIsICIqLmh0bSAqLmh0bWwiLCAiVEVYVCIpLAotICAgICAgICAgICAgKCJQREYgRmlsZXMiLCAiKi5wZGYiLCAiVEVYVCIpLAotICAgICAgICAgICAgKCJXaW5kb3dzIEhlbHAgRmlsZXMiLCAiKi5jaG0iKSwKLSAgICAgICAgICAgICgiVGV4dCBGaWxlcyIsICIqLnR4dCIsICJURVhUIiksCi0gICAgICAgICAgICAoIkFsbCBGaWxlcyIsICIqIildCi0gICAgICAgIHBhdGggPSBzZWxmLnBhdGguZ2V0KCkKLSAgICAgICAgaWYgcGF0aDoKLSAgICAgICAgICAgIGRpciwgYmFzZSA9IG9zLnBhdGguc3BsaXQocGF0aCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGJhc2UgPSBOb25lCi0gICAgICAgICAgICBpZiBzeXMucGxhdGZvcm1bOjNdID09ICd3aW4nOgotICAgICAgICAgICAgICAgIGRpciA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoc3lzLmV4ZWN1dGFibGUpLCAnRG9jJykKLSAgICAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2RpcihkaXIpOgotICAgICAgICAgICAgICAgICAgICBkaXIgPSBvcy5nZXRjd2QoKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBkaXIgPSBvcy5nZXRjd2QoKQotICAgICAgICBvcGVuZGlhbG9nID0gdGtGaWxlRGlhbG9nLk9wZW4ocGFyZW50PXNlbGYsIGZpbGV0eXBlcz1maWxldHlwZXMpCi0gICAgICAgIGZpbGUgPSBvcGVuZGlhbG9nLnNob3coaW5pdGlhbGRpcj1kaXIsIGluaXRpYWxmaWxlPWJhc2UpCi0gICAgICAgIGlmIGZpbGU6Ci0gICAgICAgICAgICBzZWxmLnBhdGguc2V0KGZpbGUpCi0KLSAgICBkZWYgbWVudV9vayhzZWxmKToKLSAgICAgICAgIlNpbXBsZSB2YWxpZGl0eSBjaGVjayBmb3IgYSBzZW5zaWJsZSBtZW51IGl0ZW0gbmFtZSIKLSAgICAgICAgbWVudV9vayA9IFRydWUKLSAgICAgICAgbWVudSA9IHNlbGYubWVudS5nZXQoKQotICAgICAgICBtZW51LnN0cmlwKCkKLSAgICAgICAgaWYgbm90IG1lbnU6Ci0gICAgICAgICAgICB0a01lc3NhZ2VCb3guc2hvd2Vycm9yKHRpdGxlPSdNZW51IEl0ZW0gRXJyb3InLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSdObyBtZW51IGl0ZW0gc3BlY2lmaWVkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50PXNlbGYpCi0gICAgICAgICAgICBzZWxmLmVudHJ5TWVudS5mb2N1c19zZXQoKQotICAgICAgICAgICAgbWVudV9vayA9IEZhbHNlCi0gICAgICAgIGVsaWYgbGVuKG1lbnUpID4gMzA6Ci0gICAgICAgICAgICB0a01lc3NhZ2VCb3guc2hvd2Vycm9yKHRpdGxlPSdNZW51IEl0ZW0gRXJyb3InLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSdNZW51IGl0ZW0gdG9vIGxvbmc6JwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcbkxpbWl0IDMwIGNoYXJhY3RlcnMuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50PXNlbGYpCi0gICAgICAgICAgICBzZWxmLmVudHJ5TWVudS5mb2N1c19zZXQoKQotICAgICAgICAgICAgbWVudV9vayA9IEZhbHNlCi0gICAgICAgIHJldHVybiBtZW51X29rCi0KLSAgICBkZWYgcGF0aF9vayhzZWxmKToKLSAgICAgICAgIlNpbXBsZSB2YWxpZGl0eSBjaGVjayBmb3IgbWVudSBmaWxlIHBhdGgiCi0gICAgICAgIHBhdGhfb2sgPSBUcnVlCi0gICAgICAgIHBhdGggPSBzZWxmLnBhdGguZ2V0KCkKLSAgICAgICAgcGF0aC5zdHJpcCgpCi0gICAgICAgIGlmIG5vdCBwYXRoOiAjbm8gcGF0aCBzcGVjaWZpZWQKLSAgICAgICAgICAgIHRrTWVzc2FnZUJveC5zaG93ZXJyb3IodGl0bGU9J0ZpbGUgUGF0aCBFcnJvcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9J05vIGhlbHAgZmlsZSBwYXRoIHNwZWNpZmllZC4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQ9c2VsZikKLSAgICAgICAgICAgIHNlbGYuZW50cnlQYXRoLmZvY3VzX3NldCgpCi0gICAgICAgICAgICBwYXRoX29rID0gRmFsc2UKLSAgICAgICAgZWxpZiBwYXRoLnN0YXJ0c3dpdGgoKCd3d3cuJywgJ2h0dHAnKSk6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBwYXRoWzo1XSA9PSAnZmlsZTonOgotICAgICAgICAgICAgICAgIHBhdGggPSBwYXRoWzU6XQotICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHBhdGgpOgotICAgICAgICAgICAgICAgIHRrTWVzc2FnZUJveC5zaG93ZXJyb3IodGl0bGU9J0ZpbGUgUGF0aCBFcnJvcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSdIZWxwIGZpbGUgcGF0aCBkb2VzIG5vdCBleGlzdC4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50PXNlbGYpCi0gICAgICAgICAgICAgICAgc2VsZi5lbnRyeVBhdGguZm9jdXNfc2V0KCkKLSAgICAgICAgICAgICAgICBwYXRoX29rID0gRmFsc2UKLSAgICAgICAgcmV0dXJuIHBhdGhfb2sKLQotICAgIGRlZiBvayhzZWxmLCBldmVudD1Ob25lKToKLSAgICAgICAgaWYgc2VsZi5tZW51X29rKCkgYW5kIHNlbGYucGF0aF9vaygpOgotICAgICAgICAgICAgc2VsZi5yZXN1bHQgPSAoc2VsZi5tZW51LmdldCgpLnN0cmlwKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnBhdGguZ2V0KCkuc3RyaXAoKSkKLSAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKLSAgICAgICAgICAgICAgICBwYXRoID0gc2VsZi5yZXN1bHRbMV0KLSAgICAgICAgICAgICAgICBpZiBwYXRoLnN0YXJ0c3dpdGgoKCd3d3cnLCAnZmlsZTonLCAnaHR0cDonLCAnaHR0cHM6JykpOgotICAgICAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgIyBNYWMgU2FmYXJpIGluc2lzdHMgb24gdXNpbmcgdGhlIFVSSSBmb3JtIGZvciBsb2NhbCBmaWxlcwotICAgICAgICAgICAgICAgICAgICBzZWxmLnJlc3VsdCA9IGxpc3Qoc2VsZi5yZXN1bHQpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYucmVzdWx0WzFdID0gImZpbGU6Ly8iICsgcGF0aAotICAgICAgICAgICAgc2VsZi5kZXN0cm95KCkKLQotICAgIGRlZiBjYW5jZWwoc2VsZiwgZXZlbnQ9Tm9uZSk6Ci0gICAgICAgIHNlbGYucmVzdWx0ID0gTm9uZQotICAgICAgICBzZWxmLmRlc3Ryb3koKQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIGltcG9ydCB1bml0dGVzdAotICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3RfY29uZmlnX2hlbHAnLAotICAgICAgICAgICAgICAgICAgIHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQotCi0gICAgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5odGVzdCBpbXBvcnQgcnVuCi0gICAgcnVuKEdldEhlbHBTb3VyY2VEaWFsb2cpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9jb25maWdTZWN0aW9uTmFtZURpYWxvZy5weSBiL0xpYi9pZGxlbGliL2NvbmZpZ1NlY3Rpb25OYW1lRGlhbG9nLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MTM3ODM2Li4wMDAwMDAwCi0tLSBhL0xpYi9pZGxlbGliL2NvbmZpZ1NlY3Rpb25OYW1lRGlhbG9nLnB5CisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBAQAotIiIiCi1EaWFsb2cgdGhhdCBhbGxvd3MgdXNlciB0byBzcGVjaWZ5IGEgbmV3IGNvbmZpZyBmaWxlIHNlY3Rpb24gbmFtZS4KLVVzZWQgdG8gZ2V0IG5ldyBoaWdobGlnaHQgdGhlbWUgYW5kIGtleWJpbmRpbmcgc2V0IG5hbWVzLgotVGhlICdyZXR1cm4gdmFsdWUnIGZvciB0aGUgZGlhbG9nLCB1c2VkIHR3byBwbGFjZWQgaW4gY29uZmlnRGlhbG9nLnB5LAotaXMgdGhlIC5yZXN1bHQgYXR0cmlidXRlIHNldCBpbiB0aGUgT2sgYW5kIENhbmNlbCBtZXRob2RzLgotIiIiCi1mcm9tIHRraW50ZXIgaW1wb3J0ICoKLWltcG9ydCB0a2ludGVyLm1lc3NhZ2Vib3ggYXMgdGtNZXNzYWdlQm94Ci0KLWNsYXNzIEdldENmZ1NlY3Rpb25OYW1lRGlhbG9nKFRvcGxldmVsKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50LCB0aXRsZSwgbWVzc2FnZSwgdXNlZF9uYW1lcywgX2h0ZXN0PUZhbHNlKToKLSAgICAgICAgIiIiCi0gICAgICAgIG1lc3NhZ2UgLSBzdHJpbmcsIGluZm9ybWF0aW9uYWwgbWVzc2FnZSB0byBkaXNwbGF5Ci0gICAgICAgIHVzZWRfbmFtZXMgLSBzdHJpbmcgY29sbGVjdGlvbiwgbmFtZXMgYWxyZWFkeSBpbiB1c2UgZm9yIHZhbGlkaXR5IGNoZWNrCi0gICAgICAgIF9odGVzdCAtIGJvb2wsIGNoYW5nZSBib3ggbG9jYXRpb24gd2hlbiBydW5uaW5nIGh0ZXN0Ci0gICAgICAgICIiIgotICAgICAgICBUb3BsZXZlbC5fX2luaXRfXyhzZWxmLCBwYXJlbnQpCi0gICAgICAgIHNlbGYuY29uZmlndXJlKGJvcmRlcndpZHRoPTUpCi0gICAgICAgIHNlbGYucmVzaXphYmxlKGhlaWdodD1GQUxTRSwgd2lkdGg9RkFMU0UpCi0gICAgICAgIHNlbGYudGl0bGUodGl0bGUpCi0gICAgICAgIHNlbGYudHJhbnNpZW50KHBhcmVudCkKLSAgICAgICAgc2VsZi5ncmFiX3NldCgpCi0gICAgICAgIHNlbGYucHJvdG9jb2woIldNX0RFTEVURV9XSU5ET1ciLCBzZWxmLkNhbmNlbCkKLSAgICAgICAgc2VsZi5wYXJlbnQgPSBwYXJlbnQKLSAgICAgICAgc2VsZi5tZXNzYWdlID0gbWVzc2FnZQotICAgICAgICBzZWxmLnVzZWRfbmFtZXMgPSB1c2VkX25hbWVzCi0gICAgICAgIHNlbGYuY3JlYXRlX3dpZGdldHMoKQotICAgICAgICBzZWxmLndpdGhkcmF3KCkgICNoaWRlIHdoaWxlIHNldHRpbmcgZ2VvbWV0cnkKLSAgICAgICAgc2VsZi51cGRhdGVfaWRsZXRhc2tzKCkKLSAgICAgICAgI25lZWRzIHRvIGJlIGRvbmUgaGVyZSBzbyB0aGF0IHRoZSB3aW5mb19yZXF3aWR0aCBpcyB2YWxpZAotICAgICAgICBzZWxmLm1lc3NhZ2VJbmZvLmNvbmZpZyh3aWR0aD1zZWxmLmZyYW1lTWFpbi53aW5mb19yZXF3aWR0aCgpKQotICAgICAgICBzZWxmLmdlb21ldHJ5KAotICAgICAgICAgICAgICAgICIrJWQrJWQiICUgKAotICAgICAgICAgICAgICAgICAgICBwYXJlbnQud2luZm9fcm9vdHgoKSArCi0gICAgICAgICAgICAgICAgICAgIChwYXJlbnQud2luZm9fd2lkdGgoKS8yIC0gc2VsZi53aW5mb19yZXF3aWR0aCgpLzIpLAotICAgICAgICAgICAgICAgICAgICBwYXJlbnQud2luZm9fcm9vdHkoKSArCi0gICAgICAgICAgICAgICAgICAgICgocGFyZW50LndpbmZvX2hlaWdodCgpLzIgLSBzZWxmLndpbmZvX3JlcWhlaWdodCgpLzIpCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBfaHRlc3QgZWxzZSAxMDApCi0gICAgICAgICAgICAgICAgKSApICAjY2VudHJlIGRpYWxvZyBvdmVyIHBhcmVudCAob3IgYmVsb3cgaHRlc3QgYm94KQotICAgICAgICBzZWxmLmRlaWNvbmlmeSgpICAjZ2VvbWV0cnkgc2V0LCB1bmhpZGUKLSAgICAgICAgc2VsZi53YWl0X3dpbmRvdygpCi0KLSAgICBkZWYgY3JlYXRlX3dpZGdldHMoc2VsZik6Ci0gICAgICAgIHNlbGYubmFtZSA9IFN0cmluZ1ZhcihzZWxmLnBhcmVudCkKLSAgICAgICAgc2VsZi5mb250U2l6ZSA9IFN0cmluZ1ZhcihzZWxmLnBhcmVudCkKLSAgICAgICAgc2VsZi5mcmFtZU1haW4gPSBGcmFtZShzZWxmLCBib3JkZXJ3aWR0aD0yLCByZWxpZWY9U1VOS0VOKQotICAgICAgICBzZWxmLmZyYW1lTWFpbi5wYWNrKHNpZGU9VE9QLCBleHBhbmQ9VFJVRSwgZmlsbD1CT1RIKQotICAgICAgICBzZWxmLm1lc3NhZ2VJbmZvID0gTWVzc2FnZShzZWxmLmZyYW1lTWFpbiwgYW5jaG9yPVcsIGp1c3RpZnk9TEVGVCwKLSAgICAgICAgICAgICAgICAgICAgcGFkeD01LCBwYWR5PTUsIHRleHQ9c2VsZi5tZXNzYWdlKSAjLGFzcGVjdD0yMDApCi0gICAgICAgIGVudHJ5TmFtZSA9IEVudHJ5KHNlbGYuZnJhbWVNYWluLCB0ZXh0dmFyaWFibGU9c2VsZi5uYW1lLCB3aWR0aD0zMCkKLSAgICAgICAgZW50cnlOYW1lLmZvY3VzX3NldCgpCi0gICAgICAgIHNlbGYubWVzc2FnZUluZm8ucGFjayhwYWR4PTUsIHBhZHk9NSkgIywgZXhwYW5kPVRSVUUsIGZpbGw9Qk9USCkKLSAgICAgICAgZW50cnlOYW1lLnBhY2socGFkeD01LCBwYWR5PTUpCi0KLSAgICAgICAgZnJhbWVCdXR0b25zID0gRnJhbWUoc2VsZiwgcGFkeT0yKQotICAgICAgICBmcmFtZUJ1dHRvbnMucGFjayhzaWRlPUJPVFRPTSkKLSAgICAgICAgc2VsZi5idXR0b25PayA9IEJ1dHRvbihmcmFtZUJ1dHRvbnMsIHRleHQ9J09rJywKLSAgICAgICAgICAgICAgICB3aWR0aD04LCBjb21tYW5kPXNlbGYuT2spCi0gICAgICAgIHNlbGYuYnV0dG9uT2sucGFjayhzaWRlPUxFRlQsIHBhZHg9NSkKLSAgICAgICAgc2VsZi5idXR0b25DYW5jZWwgPSBCdXR0b24oZnJhbWVCdXR0b25zLCB0ZXh0PSdDYW5jZWwnLAotICAgICAgICAgICAgICAgIHdpZHRoPTgsIGNvbW1hbmQ9c2VsZi5DYW5jZWwpCi0gICAgICAgIHNlbGYuYnV0dG9uQ2FuY2VsLnBhY2soc2lkZT1SSUdIVCwgcGFkeD01KQotCi0gICAgZGVmIG5hbWVfb2soc2VsZik6Ci0gICAgICAgICcnJyBBZnRlciBzdHJpcHBpbmcgZW50ZXJlZCBuYW1lLCBjaGVjayB0aGF0IGl0IGlzIGEgIHNlbnNpYmxlCi0gICAgICAgIENvbmZpZ1BhcnNlciBmaWxlIHNlY3Rpb24gbmFtZS4gUmV0dXJuIGl0IGlmIGl0IGlzLCAnJyBpZiBub3QuCi0gICAgICAgICcnJwotICAgICAgICBuYW1lID0gc2VsZi5uYW1lLmdldCgpLnN0cmlwKCkKLSAgICAgICAgaWYgbm90IG5hbWU6ICNubyBuYW1lIHNwZWNpZmllZAotICAgICAgICAgICAgdGtNZXNzYWdlQm94LnNob3dlcnJvcih0aXRsZT0nTmFtZSBFcnJvcicsCi0gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9J05vIG5hbWUgc3BlY2lmaWVkLicsIHBhcmVudD1zZWxmKQotICAgICAgICBlbGlmIGxlbihuYW1lKT4zMDogI25hbWUgdG9vIGxvbmcKLSAgICAgICAgICAgIHRrTWVzc2FnZUJveC5zaG93ZXJyb3IodGl0bGU9J05hbWUgRXJyb3InLAotICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSdOYW1lIHRvbyBsb25nLiBJdCBzaG91bGQgYmUgbm8gbW9yZSB0aGFuICcrCi0gICAgICAgICAgICAgICAgICAgICczMCBjaGFyYWN0ZXJzLicsIHBhcmVudD1zZWxmKQotICAgICAgICAgICAgbmFtZSA9ICcnCi0gICAgICAgIGVsaWYgbmFtZSBpbiBzZWxmLnVzZWRfbmFtZXM6Ci0gICAgICAgICAgICB0a01lc3NhZ2VCb3guc2hvd2Vycm9yKHRpdGxlPSdOYW1lIEVycm9yJywKLSAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nVGhpcyBuYW1lIGlzIGFscmVhZHkgaW4gdXNlLicsIHBhcmVudD1zZWxmKQotICAgICAgICAgICAgbmFtZSA9ICcnCi0gICAgICAgIHJldHVybiBuYW1lCi0KLSAgICBkZWYgT2soc2VsZiwgZXZlbnQ9Tm9uZSk6Ci0gICAgICAgIG5hbWUgPSBzZWxmLm5hbWVfb2soKQotICAgICAgICBpZiBuYW1lOgotICAgICAgICAgICAgc2VsZi5yZXN1bHQgPSBuYW1lCi0gICAgICAgICAgICBzZWxmLmRlc3Ryb3koKQotCi0gICAgZGVmIENhbmNlbChzZWxmLCBldmVudD1Ob25lKToKLSAgICAgICAgc2VsZi5yZXN1bHQgPSAnJwotICAgICAgICBzZWxmLmRlc3Ryb3koKQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIGltcG9ydCB1bml0dGVzdAotICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3RfY29uZmlnX25hbWUnLCB2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKLQotICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgotICAgIHJ1bihHZXRDZmdTZWN0aW9uTmFtZURpYWxvZykKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2tleWJpbmRpbmdEaWFsb2cucHkgYi9MaWIvaWRsZWxpYi9jb25maWdfa2V5LnB5CnNpbWlsYXJpdHkgaW5kZXggOTUlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL2tleWJpbmRpbmdEaWFsb2cucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2NvbmZpZ19rZXkucHkKaW5kZXggZTY0MzhiZi4uMjYwMjI5MyAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIva2V5YmluZGluZ0RpYWxvZy5weQorKysgYi9MaWIvaWRsZWxpYi9jb25maWdfa2V5LnB5CkBAIC0yLDMxICsyLDM1IEBACiBEaWFsb2cgZm9yIGJ1aWxkaW5nIFRraW50ZXIgYWNjZWxlcmF0b3Iga2V5IGJpbmRpbmdzCiAiIiIKIGZyb20gdGtpbnRlciBpbXBvcnQgKgorZnJvbSB0a2ludGVyLnR0ayBpbXBvcnQgU2Nyb2xsYmFyCiBpbXBvcnQgdGtpbnRlci5tZXNzYWdlYm94IGFzIHRrTWVzc2FnZUJveAogaW1wb3J0IHN0cmluZwogaW1wb3J0IHN5cwogCiBjbGFzcyBHZXRLZXlzRGlhbG9nKFRvcGxldmVsKToKLSAgICBkZWYgX19pbml0X18oc2VsZixwYXJlbnQsdGl0bGUsYWN0aW9uLGN1cnJlbnRLZXlTZXF1ZW5jZXMsX2h0ZXN0PUZhbHNlKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50LCB0aXRsZSwgYWN0aW9uLCBjdXJyZW50S2V5U2VxdWVuY2VzLAorICAgICAgICAgICAgICAgICBfaHRlc3Q9RmFsc2UsIF91dGVzdD1GYWxzZSk6CiAgICAgICAgICIiIgogICAgICAgICBhY3Rpb24gLSBzdHJpbmcsIHRoZSBuYW1lIG9mIHRoZSB2aXJ0dWFsIGV2ZW50IHRoZXNlIGtleXMgd2lsbCBiZQogICAgICAgICAgICAgICAgICBtYXBwZWQgdG8KICAgICAgICAgY3VycmVudEtleXMgLSBsaXN0LCBhIGxpc3Qgb2YgYWxsIGtleSBzZXF1ZW5jZSBsaXN0cyBjdXJyZW50bHkgbWFwcGVkCiAgICAgICAgICAgICAgICAgIHRvIHZpcnR1YWwgZXZlbnRzLCBmb3Igb3ZlcmxhcCBjaGVja2luZworICAgICAgICBfdXRlc3QgLSBib29sLCBkbyBub3Qgd2FpdCB3aGVuIHJ1bm5pbmcgdW5pdHRlc3QKICAgICAgICAgX2h0ZXN0IC0gYm9vbCwgY2hhbmdlIGJveCBsb2NhdGlvbiB3aGVuIHJ1bm5pbmcgaHRlc3QKICAgICAgICAgIiIiCiAgICAgICAgIFRvcGxldmVsLl9faW5pdF9fKHNlbGYsIHBhcmVudCkKKyAgICAgICAgc2VsZi53aXRoZHJhdygpICNoaWRlIHdoaWxlIHNldHRpbmcgZ2VvbWV0cnkKICAgICAgICAgc2VsZi5jb25maWd1cmUoYm9yZGVyd2lkdGg9NSkKLSAgICAgICAgc2VsZi5yZXNpemFibGUoaGVpZ2h0PUZBTFNFLHdpZHRoPUZBTFNFKQorICAgICAgICBzZWxmLnJlc2l6YWJsZShoZWlnaHQ9RkFMU0UsIHdpZHRoPUZBTFNFKQogICAgICAgICBzZWxmLnRpdGxlKHRpdGxlKQogICAgICAgICBzZWxmLnRyYW5zaWVudChwYXJlbnQpCiAgICAgICAgIHNlbGYuZ3JhYl9zZXQoKQogICAgICAgICBzZWxmLnByb3RvY29sKCJXTV9ERUxFVEVfV0lORE9XIiwgc2VsZi5DYW5jZWwpCiAgICAgICAgIHNlbGYucGFyZW50ID0gcGFyZW50CiAgICAgICAgIHNlbGYuYWN0aW9uPWFjdGlvbgotICAgICAgICBzZWxmLmN1cnJlbnRLZXlTZXF1ZW5jZXM9Y3VycmVudEtleVNlcXVlbmNlcwotICAgICAgICBzZWxmLnJlc3VsdD0nJwotICAgICAgICBzZWxmLmtleVN0cmluZz1TdHJpbmdWYXIoc2VsZikKKyAgICAgICAgc2VsZi5jdXJyZW50S2V5U2VxdWVuY2VzID0gY3VycmVudEtleVNlcXVlbmNlcworICAgICAgICBzZWxmLnJlc3VsdCA9ICcnCisgICAgICAgIHNlbGYua2V5U3RyaW5nID0gU3RyaW5nVmFyKHNlbGYpCiAgICAgICAgIHNlbGYua2V5U3RyaW5nLnNldCgnJykKICAgICAgICAgc2VsZi5TZXRNb2RpZmllcnNGb3JQbGF0Zm9ybSgpICMgc2V0IHNlbGYubW9kaWZpZXJzLCBzZWxmLm1vZGlmaWVyX2xhYmVsCiAgICAgICAgIHNlbGYubW9kaWZpZXJfdmFycyA9IFtdCkBAIC0zNyw3ICs0MSw2IEBACiAgICAgICAgIHNlbGYuYWR2YW5jZWQgPSBGYWxzZQogICAgICAgICBzZWxmLkNyZWF0ZVdpZGdldHMoKQogICAgICAgICBzZWxmLkxvYWRGaW5hbEtleUxpc3QoKQotICAgICAgICBzZWxmLndpdGhkcmF3KCkgI2hpZGUgd2hpbGUgc2V0dGluZyBnZW9tZXRyeQogICAgICAgICBzZWxmLnVwZGF0ZV9pZGxldGFza3MoKQogICAgICAgICBzZWxmLmdlb21ldHJ5KAogICAgICAgICAgICAgICAgICIrJWQrJWQiICUgKApAQCAtNDcsOCArNTAsOSBAQAogICAgICAgICAgICAgICAgICAgICAoKHBhcmVudC53aW5mb19oZWlnaHQoKS8yIC0gc2VsZi53aW5mb19yZXFoZWlnaHQoKS8yKQogICAgICAgICAgICAgICAgICAgICBpZiBub3QgX2h0ZXN0IGVsc2UgMTUwKQogICAgICAgICAgICAgICAgICkgKSAgI2NlbnRyZSBkaWFsb2cgb3ZlciBwYXJlbnQgKG9yIGJlbG93IGh0ZXN0IGJveCkKLSAgICAgICAgc2VsZi5kZWljb25pZnkoKSAjZ2VvbWV0cnkgc2V0LCB1bmhpZGUKLSAgICAgICAgc2VsZi53YWl0X3dpbmRvdygpCisgICAgICAgIGlmIG5vdCBfdXRlc3Q6CisgICAgICAgICAgICBzZWxmLmRlaWNvbmlmeSgpICNnZW9tZXRyeSBzZXQsIHVuaGlkZQorICAgICAgICAgICAgc2VsZi53YWl0X3dpbmRvdygpCiAKICAgICBkZWYgQ3JlYXRlV2lkZ2V0cyhzZWxmKToKICAgICAgICAgZnJhbWVNYWluID0gRnJhbWUoc2VsZixib3JkZXJ3aWR0aD0yLHJlbGllZj1TVU5LRU4pCkBAIC0yNjEsNiArMjY1LDcgQEAKICAgICAgICAgICAgIGtleXNPSyA9IFRydWUKICAgICAgICAgcmV0dXJuIGtleXNPSwogCisKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5odGVzdCBpbXBvcnQgcnVuCiAgICAgcnVuKEdldEtleXNEaWFsb2cpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9jb25maWdEaWFsb2cucHkgYi9MaWIvaWRsZWxpYi9jb25maWdkaWFsb2cucHkKc2ltaWxhcml0eSBpbmRleCA5MiUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvY29uZmlnRGlhbG9nLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9jb25maWdkaWFsb2cucHkKaW5kZXggNWY1YmQzNi4uODE4NDU4MiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvY29uZmlnRGlhbG9nLnB5CisrKyBiL0xpYi9pZGxlbGliL2NvbmZpZ2RpYWxvZy5weQpAQCAtMTAsMTggKzEwLDE4IEBACiAKICIiIgogZnJvbSB0a2ludGVyIGltcG9ydCAqCi1pbXBvcnQgdGtpbnRlci5tZXNzYWdlYm94IGFzIHRrTWVzc2FnZUJveAorZnJvbSB0a2ludGVyLnR0ayBpbXBvcnQgU2Nyb2xsYmFyCiBpbXBvcnQgdGtpbnRlci5jb2xvcmNob29zZXIgYXMgdGtDb2xvckNob29zZXIKIGltcG9ydCB0a2ludGVyLmZvbnQgYXMgdGtGb250CitpbXBvcnQgdGtpbnRlci5tZXNzYWdlYm94IGFzIHRrTWVzc2FnZUJveAogCi1mcm9tIGlkbGVsaWIuY29uZmlnSGFuZGxlciBpbXBvcnQgaWRsZUNvbmYKLWZyb20gaWRsZWxpYi5keW5PcHRpb25NZW51V2lkZ2V0IGltcG9ydCBEeW5PcHRpb25NZW51Ci1mcm9tIGlkbGVsaWIua2V5YmluZGluZ0RpYWxvZyBpbXBvcnQgR2V0S2V5c0RpYWxvZwotZnJvbSBpZGxlbGliLmNvbmZpZ1NlY3Rpb25OYW1lRGlhbG9nIGltcG9ydCBHZXRDZmdTZWN0aW9uTmFtZURpYWxvZwotZnJvbSBpZGxlbGliLmNvbmZpZ0hlbHBTb3VyY2VFZGl0IGltcG9ydCBHZXRIZWxwU291cmNlRGlhbG9nCitmcm9tIGlkbGVsaWIuY29uZmlnIGltcG9ydCBpZGxlQ29uZgorZnJvbSBpZGxlbGliLmNvbmZpZ19rZXkgaW1wb3J0IEdldEtleXNEaWFsb2cKK2Zyb20gaWRsZWxpYi5keW5vcHRpb24gaW1wb3J0IER5bk9wdGlvbk1lbnUKK2Zyb20gaWRsZWxpYiBpbXBvcnQgbWFjb3N4Citmcm9tIGlkbGVsaWIucXVlcnkgaW1wb3J0IFNlY3Rpb25OYW1lLCBIZWxwU291cmNlCiBmcm9tIGlkbGVsaWIudGFiYmVkcGFnZXMgaW1wb3J0IFRhYmJlZFBhZ2VTZXQKLWZyb20gaWRsZWxpYi50ZXh0VmlldyBpbXBvcnQgdmlld190ZXh0Ci1mcm9tIGlkbGVsaWIgaW1wb3J0IG1hY29zeFN1cHBvcnQKK2Zyb20gaWRsZWxpYi50ZXh0dmlldyBpbXBvcnQgdmlld190ZXh0CiAKIGNsYXNzIENvbmZpZ0RpYWxvZyhUb3BsZXZlbCk6CiAKQEAgLTkxLDcgKzkxLDcgQEAKICAgICAgICAgc2VsZi5jcmVhdGVfYWN0aW9uX2J1dHRvbnMoKS5wYWNrKHNpZGU9Qk9UVE9NKQogCiAgICAgZGVmIGNyZWF0ZV9hY3Rpb25fYnV0dG9ucyhzZWxmKToKLSAgICAgICAgaWYgbWFjb3N4U3VwcG9ydC5pc0FxdWFUaygpOgorICAgICAgICBpZiBtYWNvc3guaXNBcXVhVGsoKToKICAgICAgICAgICAgICMgQ2hhbmdpbmcgdGhlIGRlZmF1bHQgcGFkZGluZyBvbiBPU1ggcmVzdWx0cyBpbiB1bnJlYWRhYmxlCiAgICAgICAgICAgICAjIHRleHQgaW4gdGhlIGJ1dHRvbnMKICAgICAgICAgICAgIHBhZGRpbmdBcmdzID0ge30KQEAgLTM0MSw2ICszNDEsNyBAQAogICAgICAgICBidXR0b25TYXZlQ3VzdG9tS2V5cyA9IEJ1dHRvbigKICAgICAgICAgICAgICAgICBmcmFtZXNbMV0sIHRleHQ9J1NhdmUgYXMgTmV3IEN1c3RvbSBLZXkgU2V0JywKICAgICAgICAgICAgICAgICBjb21tYW5kPXNlbGYuU2F2ZUFzTmV3S2V5U2V0KQorICAgICAgICBzZWxmLm5ld19jdXN0b21fa2V5cyA9IExhYmVsKGZyYW1lc1swXSwgYmQ9MikKIAogICAgICAgICAjI3dpZGdldCBwYWNraW5nCiAgICAgICAgICNib2R5CkBAIC0zNjEsNiArMzYyLDcgQEAKICAgICAgICAgc2VsZi5yYWRpb0tleXNDdXN0b20uZ3JpZChyb3c9MSwgY29sdW1uPTAsIHN0aWNreT1XK05TKQogICAgICAgICBzZWxmLm9wdE1lbnVLZXlzQnVpbHRpbi5ncmlkKHJvdz0wLCBjb2x1bW49MSwgc3RpY2t5PU5TRVcpCiAgICAgICAgIHNlbGYub3B0TWVudUtleXNDdXN0b20uZ3JpZChyb3c9MSwgY29sdW1uPTEsIHN0aWNreT1OU0VXKQorICAgICAgICBzZWxmLm5ld19jdXN0b21fa2V5cy5ncmlkKHJvdz0wLCBjb2x1bW49Miwgc3RpY2t5PU5TRVcsIHBhZHg9NSwgcGFkeT01KQogICAgICAgICBzZWxmLmJ1dHRvbkRlbGV0ZUN1c3RvbUtleXMucGFjayhzaWRlPUxFRlQsIGZpbGw9WCwgZXhwYW5kPVRydWUsIHBhZHg9MikKICAgICAgICAgYnV0dG9uU2F2ZUN1c3RvbUtleXMucGFjayhzaWRlPUxFRlQsIGZpbGw9WCwgZXhwYW5kPVRydWUsIHBhZHg9MikKICAgICAgICAgZnJhbWVzWzBdLnBhY2soc2lkZT1UT1AsIGZpbGw9Qk9USCwgZXhwYW5kPVRydWUpCkBAIC0zOTAsMjggKzM5MiwyOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ9JyBBZGRpdGlvbmFsIEhlbHAgU291cmNlcyAnKQogICAgICAgICAjZnJhbWVSdW4KICAgICAgICAgbGFiZWxSdW5DaG9pY2VUaXRsZSA9IExhYmVsKGZyYW1lUnVuLCB0ZXh0PSdBdCBTdGFydHVwJykKLSAgICAgICAgcmFkaW9TdGFydHVwRWRpdCA9IFJhZGlvYnV0dG9uKAorICAgICAgICBzZWxmLnJhZGlvU3RhcnR1cEVkaXQgPSBSYWRpb2J1dHRvbigKICAgICAgICAgICAgICAgICBmcmFtZVJ1biwgdmFyaWFibGU9c2VsZi5zdGFydHVwRWRpdCwgdmFsdWU9MSwKLSAgICAgICAgICAgICAgICBjb21tYW5kPXNlbGYuU2V0S2V5c1R5cGUsIHRleHQ9Ik9wZW4gRWRpdCBXaW5kb3ciKQotICAgICAgICByYWRpb1N0YXJ0dXBTaGVsbCA9IFJhZGlvYnV0dG9uKAorICAgICAgICAgICAgICAgIHRleHQ9Ik9wZW4gRWRpdCBXaW5kb3ciKQorICAgICAgICBzZWxmLnJhZGlvU3RhcnR1cFNoZWxsID0gUmFkaW9idXR0b24oCiAgICAgICAgICAgICAgICAgZnJhbWVSdW4sIHZhcmlhYmxlPXNlbGYuc3RhcnR1cEVkaXQsIHZhbHVlPTAsCi0gICAgICAgICAgICAgICAgY29tbWFuZD1zZWxmLlNldEtleXNUeXBlLCB0ZXh0PSdPcGVuIFNoZWxsIFdpbmRvdycpCisgICAgICAgICAgICAgICAgdGV4dD0nT3BlbiBTaGVsbCBXaW5kb3cnKQogICAgICAgICAjZnJhbWVTYXZlCiAgICAgICAgIGxhYmVsUnVuU2F2ZVRpdGxlID0gTGFiZWwoZnJhbWVTYXZlLCB0ZXh0PSdBdCBTdGFydCBvZiBSdW4gKEY1KSAgJykKLSAgICAgICAgcmFkaW9TYXZlQXNrID0gUmFkaW9idXR0b24oCisgICAgICAgIHNlbGYucmFkaW9TYXZlQXNrID0gUmFkaW9idXR0b24oCiAgICAgICAgICAgICAgICAgZnJhbWVTYXZlLCB2YXJpYWJsZT1zZWxmLmF1dG9TYXZlLCB2YWx1ZT0wLAotICAgICAgICAgICAgICAgIGNvbW1hbmQ9c2VsZi5TZXRLZXlzVHlwZSwgdGV4dD0iUHJvbXB0IHRvIFNhdmUiKQotICAgICAgICByYWRpb1NhdmVBdXRvID0gUmFkaW9idXR0b24oCisgICAgICAgICAgICAgICAgdGV4dD0iUHJvbXB0IHRvIFNhdmUiKQorICAgICAgICBzZWxmLnJhZGlvU2F2ZUF1dG8gPSBSYWRpb2J1dHRvbigKICAgICAgICAgICAgICAgICBmcmFtZVNhdmUsIHZhcmlhYmxlPXNlbGYuYXV0b1NhdmUsIHZhbHVlPTEsCi0gICAgICAgICAgICAgICAgY29tbWFuZD1zZWxmLlNldEtleXNUeXBlLCB0ZXh0PSdObyBQcm9tcHQnKQorICAgICAgICAgICAgICAgIHRleHQ9J05vIFByb21wdCcpCiAgICAgICAgICNmcmFtZVdpblNpemUKICAgICAgICAgbGFiZWxXaW5TaXplVGl0bGUgPSBMYWJlbCgKICAgICAgICAgICAgICAgICBmcmFtZVdpblNpemUsIHRleHQ9J0luaXRpYWwgV2luZG93IFNpemUgIChpbiBjaGFyYWN0ZXJzKScpCiAgICAgICAgIGxhYmVsV2luV2lkdGhUaXRsZSA9IExhYmVsKGZyYW1lV2luU2l6ZSwgdGV4dD0nV2lkdGgnKQotICAgICAgICBlbnRyeVdpbldpZHRoID0gRW50cnkoCisgICAgICAgIHNlbGYuZW50cnlXaW5XaWR0aCA9IEVudHJ5KAogICAgICAgICAgICAgICAgIGZyYW1lV2luU2l6ZSwgdGV4dHZhcmlhYmxlPXNlbGYud2luV2lkdGgsIHdpZHRoPTMpCiAgICAgICAgIGxhYmVsV2luSGVpZ2h0VGl0bGUgPSBMYWJlbChmcmFtZVdpblNpemUsIHRleHQ9J0hlaWdodCcpCi0gICAgICAgIGVudHJ5V2luSGVpZ2h0ID0gRW50cnkoCisgICAgICAgIHNlbGYuZW50cnlXaW5IZWlnaHQgPSBFbnRyeSgKICAgICAgICAgICAgICAgICBmcmFtZVdpblNpemUsIHRleHR2YXJpYWJsZT1zZWxmLndpbkhlaWdodCwgd2lkdGg9MykKICAgICAgICAgI2ZyYW1lSGVscAogICAgICAgICBmcmFtZUhlbHBMaXN0ID0gRnJhbWUoZnJhbWVIZWxwKQpAQCAtNDQxLDE3ICs0NDMsMTcgQEAKICAgICAgICAgZnJhbWVIZWxwLnBhY2soc2lkZT1UT1AsIHBhZHg9NSwgcGFkeT01LCBleHBhbmQ9VFJVRSwgZmlsbD1CT1RIKQogICAgICAgICAjZnJhbWVSdW4KICAgICAgICAgbGFiZWxSdW5DaG9pY2VUaXRsZS5wYWNrKHNpZGU9TEVGVCwgYW5jaG9yPVcsIHBhZHg9NSwgcGFkeT01KQotICAgICAgICByYWRpb1N0YXJ0dXBTaGVsbC5wYWNrKHNpZGU9UklHSFQsIGFuY2hvcj1XLCBwYWR4PTUsIHBhZHk9NSkKLSAgICAgICAgcmFkaW9TdGFydHVwRWRpdC5wYWNrKHNpZGU9UklHSFQsIGFuY2hvcj1XLCBwYWR4PTUsIHBhZHk9NSkKKyAgICAgICAgc2VsZi5yYWRpb1N0YXJ0dXBTaGVsbC5wYWNrKHNpZGU9UklHSFQsIGFuY2hvcj1XLCBwYWR4PTUsIHBhZHk9NSkKKyAgICAgICAgc2VsZi5yYWRpb1N0YXJ0dXBFZGl0LnBhY2soc2lkZT1SSUdIVCwgYW5jaG9yPVcsIHBhZHg9NSwgcGFkeT01KQogICAgICAgICAjZnJhbWVTYXZlCiAgICAgICAgIGxhYmVsUnVuU2F2ZVRpdGxlLnBhY2soc2lkZT1MRUZULCBhbmNob3I9VywgcGFkeD01LCBwYWR5PTUpCi0gICAgICAgIHJhZGlvU2F2ZUF1dG8ucGFjayhzaWRlPVJJR0hULCBhbmNob3I9VywgcGFkeD01LCBwYWR5PTUpCi0gICAgICAgIHJhZGlvU2F2ZUFzay5wYWNrKHNpZGU9UklHSFQsIGFuY2hvcj1XLCBwYWR4PTUsIHBhZHk9NSkKKyAgICAgICAgc2VsZi5yYWRpb1NhdmVBdXRvLnBhY2soc2lkZT1SSUdIVCwgYW5jaG9yPVcsIHBhZHg9NSwgcGFkeT01KQorICAgICAgICBzZWxmLnJhZGlvU2F2ZUFzay5wYWNrKHNpZGU9UklHSFQsIGFuY2hvcj1XLCBwYWR4PTUsIHBhZHk9NSkKICAgICAgICAgI2ZyYW1lV2luU2l6ZQogICAgICAgICBsYWJlbFdpblNpemVUaXRsZS5wYWNrKHNpZGU9TEVGVCwgYW5jaG9yPVcsIHBhZHg9NSwgcGFkeT01KQotICAgICAgICBlbnRyeVdpbkhlaWdodC5wYWNrKHNpZGU9UklHSFQsIGFuY2hvcj1FLCBwYWR4PTEwLCBwYWR5PTUpCisgICAgICAgIHNlbGYuZW50cnlXaW5IZWlnaHQucGFjayhzaWRlPVJJR0hULCBhbmNob3I9RSwgcGFkeD0xMCwgcGFkeT01KQogICAgICAgICBsYWJlbFdpbkhlaWdodFRpdGxlLnBhY2soc2lkZT1SSUdIVCwgYW5jaG9yPUUsIHBhZHk9NSkKLSAgICAgICAgZW50cnlXaW5XaWR0aC5wYWNrKHNpZGU9UklHSFQsIGFuY2hvcj1FLCBwYWR4PTEwLCBwYWR5PTUpCisgICAgICAgIHNlbGYuZW50cnlXaW5XaWR0aC5wYWNrKHNpZGU9UklHSFQsIGFuY2hvcj1FLCBwYWR4PTEwLCBwYWR5PTUpCiAgICAgICAgIGxhYmVsV2luV2lkdGhUaXRsZS5wYWNrKHNpZGU9UklHSFQsIGFuY2hvcj1FLCBwYWR5PTUpCiAgICAgICAgICNmcmFtZUhlbHAKICAgICAgICAgZnJhbWVIZWxwTGlzdEJ1dHRvbnMucGFjayhzaWRlPVJJR0hULCBwYWR4PTUsIHBhZHk9NSwgZmlsbD1ZKQpAQCAtNDY0LDI0ICs0NjYsMjQgQEAKICAgICAgICAgcmV0dXJuIGZyYW1lCiAKICAgICBkZWYgQXR0YWNoVmFyQ2FsbGJhY2tzKHNlbGYpOgotICAgICAgICBzZWxmLmZvbnRTaXplLnRyYWNlX3ZhcmlhYmxlKCd3Jywgc2VsZi5WYXJDaGFuZ2VkX2ZvbnQpCi0gICAgICAgIHNlbGYuZm9udE5hbWUudHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfZm9udCkKLSAgICAgICAgc2VsZi5mb250Qm9sZC50cmFjZV92YXJpYWJsZSgndycsIHNlbGYuVmFyQ2hhbmdlZF9mb250KQotICAgICAgICBzZWxmLnNwYWNlTnVtLnRyYWNlX3ZhcmlhYmxlKCd3Jywgc2VsZi5WYXJDaGFuZ2VkX3NwYWNlTnVtKQotICAgICAgICBzZWxmLmNvbG91ci50cmFjZV92YXJpYWJsZSgndycsIHNlbGYuVmFyQ2hhbmdlZF9jb2xvdXIpCi0gICAgICAgIHNlbGYuYnVpbHRpblRoZW1lLnRyYWNlX3ZhcmlhYmxlKCd3Jywgc2VsZi5WYXJDaGFuZ2VkX2J1aWx0aW5UaGVtZSkKLSAgICAgICAgc2VsZi5jdXN0b21UaGVtZS50cmFjZV92YXJpYWJsZSgndycsIHNlbGYuVmFyQ2hhbmdlZF9jdXN0b21UaGVtZSkKLSAgICAgICAgc2VsZi50aGVtZUlzQnVpbHRpbi50cmFjZV92YXJpYWJsZSgndycsIHNlbGYuVmFyQ2hhbmdlZF90aGVtZUlzQnVpbHRpbikKLSAgICAgICAgc2VsZi5oaWdobGlnaHRUYXJnZXQudHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfaGlnaGxpZ2h0VGFyZ2V0KQotICAgICAgICBzZWxmLmtleUJpbmRpbmcudHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfa2V5QmluZGluZykKLSAgICAgICAgc2VsZi5idWlsdGluS2V5cy50cmFjZV92YXJpYWJsZSgndycsIHNlbGYuVmFyQ2hhbmdlZF9idWlsdGluS2V5cykKLSAgICAgICAgc2VsZi5jdXN0b21LZXlzLnRyYWNlX3ZhcmlhYmxlKCd3Jywgc2VsZi5WYXJDaGFuZ2VkX2N1c3RvbUtleXMpCi0gICAgICAgIHNlbGYua2V5c0FyZUJ1aWx0aW4udHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfa2V5c0FyZUJ1aWx0aW4pCi0gICAgICAgIHNlbGYud2luV2lkdGgudHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfd2luV2lkdGgpCi0gICAgICAgIHNlbGYud2luSGVpZ2h0LnRyYWNlX3ZhcmlhYmxlKCd3Jywgc2VsZi5WYXJDaGFuZ2VkX3dpbkhlaWdodCkKLSAgICAgICAgc2VsZi5zdGFydHVwRWRpdC50cmFjZV92YXJpYWJsZSgndycsIHNlbGYuVmFyQ2hhbmdlZF9zdGFydHVwRWRpdCkKLSAgICAgICAgc2VsZi5hdXRvU2F2ZS50cmFjZV92YXJpYWJsZSgndycsIHNlbGYuVmFyQ2hhbmdlZF9hdXRvU2F2ZSkKLSAgICAgICAgc2VsZi5lbmNvZGluZy50cmFjZV92YXJpYWJsZSgndycsIHNlbGYuVmFyQ2hhbmdlZF9lbmNvZGluZykKKyAgICAgICAgc2VsZi5mb250U2l6ZS50cmFjZV9hZGQoJ3dyaXRlJywgc2VsZi5WYXJDaGFuZ2VkX2ZvbnQpCisgICAgICAgIHNlbGYuZm9udE5hbWUudHJhY2VfYWRkKCd3cml0ZScsIHNlbGYuVmFyQ2hhbmdlZF9mb250KQorICAgICAgICBzZWxmLmZvbnRCb2xkLnRyYWNlX2FkZCgnd3JpdGUnLCBzZWxmLlZhckNoYW5nZWRfZm9udCkKKyAgICAgICAgc2VsZi5zcGFjZU51bS50cmFjZV9hZGQoJ3dyaXRlJywgc2VsZi5WYXJDaGFuZ2VkX3NwYWNlTnVtKQorICAgICAgICBzZWxmLmNvbG91ci50cmFjZV9hZGQoJ3dyaXRlJywgc2VsZi5WYXJDaGFuZ2VkX2NvbG91cikKKyAgICAgICAgc2VsZi5idWlsdGluVGhlbWUudHJhY2VfYWRkKCd3cml0ZScsIHNlbGYuVmFyQ2hhbmdlZF9idWlsdGluVGhlbWUpCisgICAgICAgIHNlbGYuY3VzdG9tVGhlbWUudHJhY2VfYWRkKCd3cml0ZScsIHNlbGYuVmFyQ2hhbmdlZF9jdXN0b21UaGVtZSkKKyAgICAgICAgc2VsZi50aGVtZUlzQnVpbHRpbi50cmFjZV9hZGQoJ3dyaXRlJywgc2VsZi5WYXJDaGFuZ2VkX3RoZW1lSXNCdWlsdGluKQorICAgICAgICBzZWxmLmhpZ2hsaWdodFRhcmdldC50cmFjZV9hZGQoJ3dyaXRlJywgc2VsZi5WYXJDaGFuZ2VkX2hpZ2hsaWdodFRhcmdldCkKKyAgICAgICAgc2VsZi5rZXlCaW5kaW5nLnRyYWNlX2FkZCgnd3JpdGUnLCBzZWxmLlZhckNoYW5nZWRfa2V5QmluZGluZykKKyAgICAgICAgc2VsZi5idWlsdGluS2V5cy50cmFjZV9hZGQoJ3dyaXRlJywgc2VsZi5WYXJDaGFuZ2VkX2J1aWx0aW5LZXlzKQorICAgICAgICBzZWxmLmN1c3RvbUtleXMudHJhY2VfYWRkKCd3cml0ZScsIHNlbGYuVmFyQ2hhbmdlZF9jdXN0b21LZXlzKQorICAgICAgICBzZWxmLmtleXNBcmVCdWlsdGluLnRyYWNlX2FkZCgnd3JpdGUnLCBzZWxmLlZhckNoYW5nZWRfa2V5c0FyZUJ1aWx0aW4pCisgICAgICAgIHNlbGYud2luV2lkdGgudHJhY2VfYWRkKCd3cml0ZScsIHNlbGYuVmFyQ2hhbmdlZF93aW5XaWR0aCkKKyAgICAgICAgc2VsZi53aW5IZWlnaHQudHJhY2VfYWRkKCd3cml0ZScsIHNlbGYuVmFyQ2hhbmdlZF93aW5IZWlnaHQpCisgICAgICAgIHNlbGYuc3RhcnR1cEVkaXQudHJhY2VfYWRkKCd3cml0ZScsIHNlbGYuVmFyQ2hhbmdlZF9zdGFydHVwRWRpdCkKKyAgICAgICAgc2VsZi5hdXRvU2F2ZS50cmFjZV9hZGQoJ3dyaXRlJywgc2VsZi5WYXJDaGFuZ2VkX2F1dG9TYXZlKQorICAgICAgICBzZWxmLmVuY29kaW5nLnRyYWNlX2FkZCgnd3JpdGUnLCBzZWxmLlZhckNoYW5nZWRfZW5jb2RpbmcpCiAKICAgICBkZWYgcmVtb3ZlX3Zhcl9jYWxsYmFja3Moc2VsZik6CiAgICAgICAgICJSZW1vdmUgY2FsbGJhY2tzIHRvIHByZXZlbnQgbWVtb3J5IGxlYWtzLiIKQEAgLTQ5Miw3ICs0OTQsNyBAQAogICAgICAgICAgICAgICAgIHNlbGYua2V5QmluZGluZywgc2VsZi5idWlsdGluS2V5cywgc2VsZi5jdXN0b21LZXlzLAogICAgICAgICAgICAgICAgIHNlbGYua2V5c0FyZUJ1aWx0aW4sIHNlbGYud2luV2lkdGgsIHNlbGYud2luSGVpZ2h0LAogICAgICAgICAgICAgICAgIHNlbGYuc3RhcnR1cEVkaXQsIHNlbGYuYXV0b1NhdmUsIHNlbGYuZW5jb2RpbmcsKToKLSAgICAgICAgICAgIHZhci50cmFjZV92ZGVsZXRlKCd3JywgdmFyLnRyYWNlX3ZpbmZvKClbMF1bMV0pCisgICAgICAgICAgICB2YXIudHJhY2VfcmVtb3ZlKCd3cml0ZScsIHZhci50cmFjZV9pbmZvKClbMF1bMV0pCiAKICAgICBkZWYgVmFyQ2hhbmdlZF9mb250KHNlbGYsICpwYXJhbXMpOgogICAgICAgICAnJydXaGVuIG9uZSBmb250IGF0dHJpYnV0ZSBjaGFuZ2VzLCBzYXZlIHRoZW0gYWxsLCBhcyB0aGV5IGFyZQpAQCAtNTE0LDEwICs1MTYsMTEgQEAKICAgICAgICAgc2VsZi5Pbk5ld0NvbG91clNldCgpCiAKICAgICBkZWYgVmFyQ2hhbmdlZF9idWlsdGluVGhlbWUoc2VsZiwgKnBhcmFtcyk6CisgICAgICAgIG9sZHRoZW1lcyA9ICgnSURMRSBDbGFzc2ljJywgJ0lETEUgTmV3JykKICAgICAgICAgdmFsdWUgPSBzZWxmLmJ1aWx0aW5UaGVtZS5nZXQoKQotICAgICAgICBpZiB2YWx1ZSA9PSAnSURMRSBEYXJrJzoKLSAgICAgICAgICAgIGlmIGlkbGVDb25mLkdldE9wdGlvbignbWFpbicsICdUaGVtZScsICduYW1lJykgIT0gJ0lETEUgTmV3JzoKLSAgICAgICAgICAgICAgICBzZWxmLkFkZENoYW5nZWRJdGVtKCdtYWluJywgJ1RoZW1lJywgJ25hbWUnLCAnSURMRSBDbGFzc2ljJykKKyAgICAgICAgaWYgdmFsdWUgbm90IGluIG9sZHRoZW1lczoKKyAgICAgICAgICAgIGlmIGlkbGVDb25mLkdldE9wdGlvbignbWFpbicsICdUaGVtZScsICduYW1lJykgbm90IGluIG9sZHRoZW1lczoKKyAgICAgICAgICAgICAgICBzZWxmLkFkZENoYW5nZWRJdGVtKCdtYWluJywgJ1RoZW1lJywgJ25hbWUnLCBvbGR0aGVtZXNbMF0pCiAgICAgICAgICAgICBzZWxmLkFkZENoYW5nZWRJdGVtKCdtYWluJywgJ1RoZW1lJywgJ25hbWUyJywgdmFsdWUpCiAgICAgICAgICAgICBzZWxmLm5ld19jdXN0b21fdGhlbWUuY29uZmlnKHRleHQ9J05ldyB0aGVtZSwgc2VlIEhlbHAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZz0nIzUwMDAwMCcpCkBAIC01NTcsOCArNTYwLDIzIEBACiAgICAgICAgICAgICBzZWxmLkFkZENoYW5nZWRJdGVtKCdleHRlbnNpb25zJywgZXh0S2V5YmluZFNlY3Rpb24sIGV2ZW50LCB2YWx1ZSkKIAogICAgIGRlZiBWYXJDaGFuZ2VkX2J1aWx0aW5LZXlzKHNlbGYsICpwYXJhbXMpOgorICAgICAgICBvbGRrZXlzID0gKAorICAgICAgICAgICAgJ0lETEUgQ2xhc3NpYyBXaW5kb3dzJywKKyAgICAgICAgICAgICdJRExFIENsYXNzaWMgVW5peCcsCisgICAgICAgICAgICAnSURMRSBDbGFzc2ljIE1hYycsCisgICAgICAgICAgICAnSURMRSBDbGFzc2ljIE9TWCcsCisgICAgICAgICkKICAgICAgICAgdmFsdWUgPSBzZWxmLmJ1aWx0aW5LZXlzLmdldCgpCi0gICAgICAgIHNlbGYuQWRkQ2hhbmdlZEl0ZW0oJ21haW4nLCAnS2V5cycsICduYW1lJywgdmFsdWUpCisgICAgICAgIGlmIHZhbHVlIG5vdCBpbiBvbGRrZXlzOgorICAgICAgICAgICAgaWYgaWRsZUNvbmYuR2V0T3B0aW9uKCdtYWluJywgJ0tleXMnLCAnbmFtZScpIG5vdCBpbiBvbGRrZXlzOgorICAgICAgICAgICAgICAgIHNlbGYuQWRkQ2hhbmdlZEl0ZW0oJ21haW4nLCAnS2V5cycsICduYW1lJywgb2xka2V5c1swXSkKKyAgICAgICAgICAgIHNlbGYuQWRkQ2hhbmdlZEl0ZW0oJ21haW4nLCAnS2V5cycsICduYW1lMicsIHZhbHVlKQorICAgICAgICAgICAgc2VsZi5uZXdfY3VzdG9tX2tleXMuY29uZmlnKHRleHQ9J05ldyBrZXkgc2V0LCBzZWUgSGVscCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmc9JyM1MDAwMDAnKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5BZGRDaGFuZ2VkSXRlbSgnbWFpbicsICdLZXlzJywgJ25hbWUnLCB2YWx1ZSkKKyAgICAgICAgICAgIHNlbGYuQWRkQ2hhbmdlZEl0ZW0oJ21haW4nLCAnS2V5cycsICduYW1lMicsICcnKQorICAgICAgICAgICAgc2VsZi5uZXdfY3VzdG9tX2tleXMuY29uZmlnKHRleHQ9JycsIGZnPSdibGFjaycpCiAgICAgICAgIHNlbGYuTG9hZEtleXNMaXN0KHZhbHVlKQogCiAgICAgZGVmIFZhckNoYW5nZWRfY3VzdG9tS2V5cyhzZWxmLCAqcGFyYW1zKToKQEAgLTY4Myw3ICs3MDEsNyBAQAogICAgIGRlZiBHZXROZXdLZXlzTmFtZShzZWxmLCBtZXNzYWdlKToKICAgICAgICAgdXNlZE5hbWVzID0gKGlkbGVDb25mLkdldFNlY3Rpb25MaXN0KCd1c2VyJywgJ2tleXMnKSArCiAgICAgICAgICAgICAgICAgaWRsZUNvbmYuR2V0U2VjdGlvbkxpc3QoJ2RlZmF1bHQnLCAna2V5cycpKQotICAgICAgICBuZXdLZXlTZXQgPSBHZXRDZmdTZWN0aW9uTmFtZURpYWxvZygKKyAgICAgICAgbmV3S2V5U2V0ID0gU2VjdGlvbk5hbWUoCiAgICAgICAgICAgICAgICAgc2VsZiwgJ05ldyBDdXN0b20gS2V5IFNldCcsIG1lc3NhZ2UsIHVzZWROYW1lcykucmVzdWx0CiAgICAgICAgIHJldHVybiBuZXdLZXlTZXQKIApAQCAtNzY3LDggKzc4NSwxMCBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5vcHRNZW51S2V5c0N1c3RvbS5TZXRNZW51KGl0ZW1MaXN0LCBpdGVtTGlzdFswXSkKICAgICAgICAgI3JldmVydCB0byBkZWZhdWx0IGtleSBzZXQKLSAgICAgICAgc2VsZi5rZXlzQXJlQnVpbHRpbi5zZXQoaWRsZUNvbmYuZGVmYXVsdENmZ1snbWFpbiddLkdldCgnS2V5cycsICdkZWZhdWx0JykpCi0gICAgICAgIHNlbGYuYnVpbHRpbktleXMuc2V0KGlkbGVDb25mLmRlZmF1bHRDZmdbJ21haW4nXS5HZXQoJ0tleXMnLCAnbmFtZScpKQorICAgICAgICBzZWxmLmtleXNBcmVCdWlsdGluLnNldChpZGxlQ29uZi5kZWZhdWx0Q2ZnWydtYWluJ10KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLkdldCgnS2V5cycsICdkZWZhdWx0JykpCisgICAgICAgIHNlbGYuYnVpbHRpbktleXMuc2V0KGlkbGVDb25mLmRlZmF1bHRDZmdbJ21haW4nXS5HZXQoJ0tleXMnLCAnbmFtZScpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIGlkbGVDb25mLmRlZmF1bHRfa2V5cygpKQogICAgICAgICAjdXNlciBjYW4ndCBiYWNrIG91dCBvZiB0aGVzZSBjaGFuZ2VzLCB0aGV5IG11c3QgYmUgYXBwbGllZCBub3cKICAgICAgICAgc2VsZi5TYXZlQWxsQ2hhbmdlZENvbmZpZ3MoKQogICAgICAgICBzZWxmLkFjdGl2YXRlQ29uZmlnQ2hhbmdlcygpCkBAIC04MzYsNyArODU2LDcgQEAKICAgICBkZWYgR2V0TmV3VGhlbWVOYW1lKHNlbGYsIG1lc3NhZ2UpOgogICAgICAgICB1c2VkTmFtZXMgPSAoaWRsZUNvbmYuR2V0U2VjdGlvbkxpc3QoJ3VzZXInLCAnaGlnaGxpZ2h0JykgKwogICAgICAgICAgICAgICAgIGlkbGVDb25mLkdldFNlY3Rpb25MaXN0KCdkZWZhdWx0JywgJ2hpZ2hsaWdodCcpKQotICAgICAgICBuZXdUaGVtZSA9IEdldENmZ1NlY3Rpb25OYW1lRGlhbG9nKAorICAgICAgICBuZXdUaGVtZSA9IFNlY3Rpb25OYW1lKAogICAgICAgICAgICAgICAgIHNlbGYsICdOZXcgQ3VzdG9tIFRoZW1lJywgbWVzc2FnZSwgdXNlZE5hbWVzKS5yZXN1bHQKICAgICAgICAgcmV0dXJuIG5ld1RoZW1lCiAKQEAgLTkzOSw3ICs5NTksOCBAQAogICAgICAgICAgICAgICAgIHNlbGYuYnV0dG9uSGVscExpc3RSZW1vdmUuY29uZmlnKHN0YXRlPURJU0FCTEVEKQogCiAgICAgZGVmIEhlbHBMaXN0SXRlbUFkZChzZWxmKToKLSAgICAgICAgaGVscFNvdXJjZSA9IEdldEhlbHBTb3VyY2VEaWFsb2coc2VsZiwgJ05ldyBIZWxwIFNvdXJjZScpLnJlc3VsdAorICAgICAgICBoZWxwU291cmNlID0gSGVscFNvdXJjZShzZWxmLCAnTmV3IEhlbHAgU291cmNlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKS5yZXN1bHQKICAgICAgICAgaWYgaGVscFNvdXJjZToKICAgICAgICAgICAgIHNlbGYudXNlckhlbHBMaXN0LmFwcGVuZCgoaGVscFNvdXJjZVswXSwgaGVscFNvdXJjZVsxXSkpCiAgICAgICAgICAgICBzZWxmLmxpc3RIZWxwLmluc2VydChFTkQsIGhlbHBTb3VyY2VbMF0pCkBAIC05NDksMTYgKzk3MCwxNyBAQAogICAgIGRlZiBIZWxwTGlzdEl0ZW1FZGl0KHNlbGYpOgogICAgICAgICBpdGVtSW5kZXggPSBzZWxmLmxpc3RIZWxwLmluZGV4KEFOQ0hPUikKICAgICAgICAgaGVscFNvdXJjZSA9IHNlbGYudXNlckhlbHBMaXN0W2l0ZW1JbmRleF0KLSAgICAgICAgbmV3SGVscFNvdXJjZSA9IEdldEhlbHBTb3VyY2VEaWFsb2coCi0gICAgICAgICAgICAgICAgc2VsZiwgJ0VkaXQgSGVscCBTb3VyY2UnLCBtZW51SXRlbT1oZWxwU291cmNlWzBdLAotICAgICAgICAgICAgICAgIGZpbGVQYXRoPWhlbHBTb3VyY2VbMV0pLnJlc3VsdAotICAgICAgICBpZiAobm90IG5ld0hlbHBTb3VyY2UpIG9yIChuZXdIZWxwU291cmNlID09IGhlbHBTb3VyY2UpOgotICAgICAgICAgICAgcmV0dXJuICNubyBjaGFuZ2VzCi0gICAgICAgIHNlbGYudXNlckhlbHBMaXN0W2l0ZW1JbmRleF0gPSBuZXdIZWxwU291cmNlCi0gICAgICAgIHNlbGYubGlzdEhlbHAuZGVsZXRlKGl0ZW1JbmRleCkKLSAgICAgICAgc2VsZi5saXN0SGVscC5pbnNlcnQoaXRlbUluZGV4LCBuZXdIZWxwU291cmNlWzBdKQotICAgICAgICBzZWxmLlVwZGF0ZVVzZXJIZWxwQ2hhbmdlZEl0ZW1zKCkKLSAgICAgICAgc2VsZi5TZXRIZWxwTGlzdEJ1dHRvblN0YXRlcygpCisgICAgICAgIG5ld0hlbHBTb3VyY2UgPSBIZWxwU291cmNlKAorICAgICAgICAgICAgICAgIHNlbGYsICdFZGl0IEhlbHAgU291cmNlJywKKyAgICAgICAgICAgICAgICBtZW51aXRlbT1oZWxwU291cmNlWzBdLAorICAgICAgICAgICAgICAgIGZpbGVwYXRoPWhlbHBTb3VyY2VbMV0sCisgICAgICAgICAgICAgICAgKS5yZXN1bHQKKyAgICAgICAgaWYgbmV3SGVscFNvdXJjZSBhbmQgbmV3SGVscFNvdXJjZSAhPSBoZWxwU291cmNlOgorICAgICAgICAgICAgc2VsZi51c2VySGVscExpc3RbaXRlbUluZGV4XSA9IG5ld0hlbHBTb3VyY2UKKyAgICAgICAgICAgIHNlbGYubGlzdEhlbHAuZGVsZXRlKGl0ZW1JbmRleCkKKyAgICAgICAgICAgIHNlbGYubGlzdEhlbHAuaW5zZXJ0KGl0ZW1JbmRleCwgbmV3SGVscFNvdXJjZVswXSkKKyAgICAgICAgICAgIHNlbGYuVXBkYXRlVXNlckhlbHBDaGFuZ2VkSXRlbXMoKQorICAgICAgICAgICAgc2VsZi5TZXRIZWxwTGlzdEJ1dHRvblN0YXRlcygpCiAKICAgICBkZWYgSGVscExpc3RJdGVtUmVtb3ZlKHNlbGYpOgogICAgICAgICBpdGVtSW5kZXggPSBzZWxmLmxpc3RIZWxwLmluZGV4KEFOQ0hPUikKQEAgLTk5Niw3ICsxMDE4LDggQEAKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgIyNmb250IHNpemUgZHJvcGRvd24KICAgICAgICAgc2VsZi5vcHRNZW51Rm9udFNpemUuU2V0TWVudSgoJzcnLCAnOCcsICc5JywgJzEwJywgJzExJywgJzEyJywgJzEzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzE0JywgJzE2JywgJzE4JywgJzIwJywgJzIyJyksIGZvbnRTaXplICkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzE0JywgJzE2JywgJzE4JywgJzIwJywgJzIyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzI1JywgJzI5JywgJzM0JywgJzQwJyksIGZvbnRTaXplICkKICAgICAgICAgIyNmb250V2VpZ2h0CiAgICAgICAgIHNlbGYuZm9udEJvbGQuc2V0KGZvbnRCb2xkKQogICAgICAgICAjI2ZvbnQgc2FtcGxlCkBAIC0xMDY1LDcgKzEwODgsNyBAQAogICAgICAgICAgICAgc2VsZi5vcHRNZW51S2V5c0N1c3RvbS5TZXRNZW51KGl0ZW1MaXN0LCBjdXJyZW50T3B0aW9uKQogICAgICAgICAgICAgaXRlbUxpc3QgPSBpZGxlQ29uZi5HZXRTZWN0aW9uTGlzdCgnZGVmYXVsdCcsICdrZXlzJykKICAgICAgICAgICAgIGl0ZW1MaXN0LnNvcnQoKQotICAgICAgICAgICAgc2VsZi5vcHRNZW51S2V5c0J1aWx0aW4uU2V0TWVudShpdGVtTGlzdCwgaXRlbUxpc3RbMF0pCisgICAgICAgICAgICBzZWxmLm9wdE1lbnVLZXlzQnVpbHRpbi5TZXRNZW51KGl0ZW1MaXN0LCBpZGxlQ29uZi5kZWZhdWx0X2tleXMoKSkKICAgICAgICAgc2VsZi5TZXRLZXlzVHlwZSgpCiAgICAgICAgICMjbG9hZCBrZXlzZXQgZWxlbWVudCBsaXN0CiAgICAgICAgIGtleVNldE5hbWUgPSBpZGxlQ29uZi5DdXJyZW50S2V5cygpCkBAIC0xMzY3LDEyICsxMzkwLDE4IEBACiBbQ2FuY2VsXSBvbmx5IGNhbmNlbHMgY2hhbmdlcyBtYWRlIHNpbmNlIHRoZSBsYXN0IHNhdmUuCiAnJycKIGhlbHBfcGFnZXMgPSB7Ci0gICAgJ0hpZ2hsaWdodGluZyc6JycnCisgICAgJ0hpZ2hsaWdodGluZyc6ICcnJwogSGlnaGxpZ2h0aW5nOgogVGhlIElETEUgRGFyayBjb2xvciB0aGVtZSBpcyBuZXcgaW4gT2N0b2JlciAyMDE1LiAgSXQgY2FuIG9ubHkKIGJlIHVzZWQgd2l0aCBvbGRlciBJRExFIHJlbGVhc2VzIGlmIGl0IGlzIHNhdmVkIGFzIGEgY3VzdG9tCiB0aGVtZSwgd2l0aCBhIGRpZmZlcmVudCBuYW1lLgotJycnCisnJycsCisgICAgJ0tleXMnOiAnJycKK0tleXM6CitUaGUgSURMRSBNb2Rlcm4gVW5peCBrZXkgc2V0IGlzIG5ldyBpbiBKdW5lIDIwMTYuICBJdCBjYW4gb25seQorYmUgdXNlZCB3aXRoIG9sZGVyIElETEUgcmVsZWFzZXMgaWYgaXQgaXMgc2F2ZWQgYXMgYSBjdXN0b20KK2tleSBzZXQsIHdpdGggYSBkaWZmZXJlbnQgbmFtZS4KKycnJywKIH0KIAogCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9EZWJ1Z2dlci5weSBiL0xpYi9pZGxlbGliL2RlYnVnZ2VyLnB5CnNpbWlsYXJpdHkgaW5kZXggOTclCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL0RlYnVnZ2VyLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9kZWJ1Z2dlci5weQppbmRleCBkNWUyMTdkLi4xMTRkMGQxIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9EZWJ1Z2dlci5weQorKysgYi9MaWIvaWRsZWxpYi9kZWJ1Z2dlci5weQpAQCAtMSw5ICsxLDEyIEBACi1pbXBvcnQgb3MKIGltcG9ydCBiZGIKK2ltcG9ydCBvcworCiBmcm9tIHRraW50ZXIgaW1wb3J0ICoKLWZyb20gaWRsZWxpYi5XaW5kb3dMaXN0IGltcG9ydCBMaXN0ZWRUb3BsZXZlbAotZnJvbSBpZGxlbGliLlNjcm9sbGVkTGlzdCBpbXBvcnQgU2Nyb2xsZWRMaXN0Ci1mcm9tIGlkbGVsaWIgaW1wb3J0IG1hY29zeFN1cHBvcnQKK2Zyb20gdGtpbnRlci50dGsgaW1wb3J0IFNjcm9sbGJhcgorCitmcm9tIGlkbGVsaWIgaW1wb3J0IG1hY29zeAorZnJvbSBpZGxlbGliLnNjcm9sbGVkbGlzdCBpbXBvcnQgU2Nyb2xsZWRMaXN0Citmcm9tIGlkbGVsaWIud2luZG93cyBpbXBvcnQgTGlzdGVkVG9wbGV2ZWwKIAogCiBjbGFzcyBJZGIoYmRiLkJkYik6CkBAIC0zNCw4ICszNywxMCBAQAogICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHByZXZfZnJhbWUgPSBmcmFtZS5mX2JhY2sKLSAgICAgICAgICAgIGlmIHByZXZfZnJhbWUuZl9jb2RlLmNvX2ZpbGVuYW1lLmNvdW50KCdEZWJ1Z2dlci5weScpOgotICAgICAgICAgICAgICAgICMgKHRoYXQgdGVzdCB3aWxsIGNhdGNoIGJvdGggRGVidWdnZXIucHkgYW5kIFJlbW90ZURlYnVnZ2VyLnB5KQorICAgICAgICAgICAgcHJldl9uYW1lID0gcHJldl9mcmFtZS5mX2NvZGUuY29fZmlsZW5hbWUKKyAgICAgICAgICAgIGlmICdpZGxlbGliJyBpbiBwcmV2X25hbWUgYW5kICdkZWJ1Z2dlcicgaW4gcHJldl9uYW1lOgorICAgICAgICAgICAgICAgICMgY2F0Y2ggYm90aCBpZGxlbGliL2RlYnVnZ2VyLnB5IGFuZCBpZGxlbGliL2RlYnVnZ2VyX3IucHkKKyAgICAgICAgICAgICAgICAjIG9uIGJvdGggcG9zaXggYW5kIHdpbmRvd3MKICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgICAgIHJldHVybiBzZWxmLmluX3JwY19jb2RlKHByZXZfZnJhbWUpCiAKQEAgLTM3MCw3ICszNzUsNyBAQAogY2xhc3MgU3RhY2tWaWV3ZXIoU2Nyb2xsZWRMaXN0KToKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXN0ZXIsIGZsaXN0LCBndWkpOgotICAgICAgICBpZiBtYWNvc3hTdXBwb3J0LmlzQXF1YVRrKCk6CisgICAgICAgIGlmIG1hY29zeC5pc0FxdWFUaygpOgogICAgICAgICAgICAgIyBBdCBsZWFzdCBvbiB3aXRoIHRoZSBzdG9jayBBcXVhVGsgdmVyc2lvbiBvbiBPU1ggMTAuNCB5b3UnbGwKICAgICAgICAgICAgICMgZ2V0IGEgc2hha2luZyBHVUkgdGhhdCBldmVudHVhbGx5IGtpbGxzIElETEUgaWYgdGhlIHdpZHRoCiAgICAgICAgICAgICAjIGFyZ3VtZW50IGlzIHNwZWNpZmllZC4KQEAgLTUwMiw3ICs1MDcsNyBAQAogICAgICAgICAgICAgIwogICAgICAgICAgICAgIyBUaGVyZSBpcyBhbHNvIGFuIG9ic2N1cmUgYnVnIGluIHNvcnRlZChkaWN0KSB3aGVyZSB0aGUKICAgICAgICAgICAgICMgaW50ZXJwcmV0ZXIgZ2V0cyBpbnRvIGEgbG9vcCByZXF1ZXN0aW5nIG5vbi1leGlzdGluZyBkaWN0WzBdLAotICAgICAgICAgICAgIyBkaWN0WzFdLCBkaWN0WzJdLCBldGMgZnJvbSB0aGUgUmVtb3RlRGVidWdnZXIuRGljdFByb3h5LgorICAgICAgICAgICAgIyBkaWN0WzFdLCBkaWN0WzJdLCBldGMgZnJvbSB0aGUgZGVidWdnZXJfci5EaWN0UHJveHkuCiAgICAgICAgICAgICAjIyMKICAgICAgICAgICAgIGtleXNfbGlzdCA9IGRpY3Qua2V5cygpCiAgICAgICAgICAgICBuYW1lcyA9IHNvcnRlZChrZXlzX2xpc3QpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9SZW1vdGVEZWJ1Z2dlci5weSBiL0xpYi9pZGxlbGliL2RlYnVnZ2VyX3IucHkKc2ltaWxhcml0eSBpbmRleCA5OCUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvUmVtb3RlRGVidWdnZXIucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2RlYnVnZ2VyX3IucHkKaW5kZXggYmUyMjYyZi4uYmM5NzEyNyAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvUmVtb3RlRGVidWdnZXIucHkKKysrIGIvTGliL2lkbGVsaWIvZGVidWdnZXJfci5weQpAQCAtMjEsNyArMjEsNyBAQAogIiIiCiAKIGltcG9ydCB0eXBlcwotZnJvbSBpZGxlbGliIGltcG9ydCBEZWJ1Z2dlcgorZnJvbSBpZGxlbGliIGltcG9ydCBkZWJ1Z2dlcgogCiBkZWJ1Z2dpbmcgPSAwCiAKQEAgLTE4Nyw3ICsxODcsNyBAQAogCiAgICAgIiIiCiAgICAgZ3VpX3Byb3h5ID0gR1VJUHJveHkocnBjaGFuZGxlciwgZ3VpX2FkYXBfb2lkKQotICAgIGlkYiA9IERlYnVnZ2VyLklkYihndWlfcHJveHkpCisgICAgaWRiID0gZGVidWdnZXIuSWRiKGd1aV9wcm94eSkKICAgICBpZGJfYWRhcCA9IElkYkFkYXB0ZXIoaWRiKQogICAgIHJwY2hhbmRsZXIucmVnaXN0ZXIoaWRiX2FkYXBfb2lkLCBpZGJfYWRhcCkKICAgICByZXR1cm4gaWRiX2FkYXBfb2lkCkBAIC0zNjIsNyArMzYyLDcgQEAKICAgICBpZGJfYWRhcF9vaWQgPSBycGNjbHQucmVtb3RlY2FsbCgiZXhlYyIsICJzdGFydF90aGVfZGVidWdnZXIiLFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGd1aV9hZGFwX29pZCwpLCB7fSkKICAgICBpZGJfcHJveHkgPSBJZGJQcm94eShycGNjbHQsIHB5c2hlbGwsIGlkYl9hZGFwX29pZCkKLSAgICBndWkgPSBEZWJ1Z2dlci5EZWJ1Z2dlcihweXNoZWxsLCBpZGJfcHJveHkpCisgICAgZ3VpID0gZGVidWdnZXIuRGVidWdnZXIocHlzaGVsbCwgaWRiX3Byb3h5KQogICAgIGd1aV9hZGFwID0gR1VJQWRhcHRlcihycGNjbHQsIGd1aSkKICAgICBycGNjbHQucmVnaXN0ZXIoZ3VpX2FkYXBfb2lkLCBndWlfYWRhcCkKICAgICByZXR1cm4gZ3VpCkBAIC0zNzMsNyArMzczLDcgQEAKICAgICBSZXF1ZXN0IHRoYXQgdGhlIFJQQ1NlcnZlciBzaHV0IGRvd24gdGhlIHN1YnByb2Nlc3MgZGVidWdnZXIgYW5kIGxpbmsuCiAgICAgVW5yZWdpc3RlciB0aGUgR1VJQWRhcHRlciwgd2hpY2ggd2lsbCBjYXVzZSBhIEdDIG9uIHRoZSBJZGxlIHByb2Nlc3MKICAgICBkZWJ1Z2dlciBhbmQgUlBDIGxpbmsgb2JqZWN0cy4gIChUaGUgc2Vjb25kIHJlZmVyZW5jZSB0byB0aGUgZGVidWdnZXIgR1VJCi0gICAgaXMgZGVsZXRlZCBpbiBQeVNoZWxsLmNsb3NlX3JlbW90ZV9kZWJ1Z2dlcigpLikKKyAgICBpcyBkZWxldGVkIGluIHB5c2hlbGwuY2xvc2VfcmVtb3RlX2RlYnVnZ2VyKCkuKQogCiAgICAgIiIiCiAgICAgY2xvc2Vfc3VicHJvY2Vzc19kZWJ1Z2dlcihycGNjbHQpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9PYmplY3RCcm93c2VyLnB5IGIvTGliL2lkbGVsaWIvZGVidWdvYmoucHkKc2ltaWxhcml0eSBpbmRleCA4OCUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvT2JqZWN0QnJvd3Nlci5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvZGVidWdvYmoucHkKaW5kZXggN2I1N2FhNC4uYjcwYjEzYyAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvT2JqZWN0QnJvd3Nlci5weQorKysgYi9MaWIvaWRsZWxpYi9kZWJ1Z29iai5weQpAQCAtOCwxMyArOCwxMCBAQAogCiAjIFhYWCBUTyBETzoKICMgLSBmb3IgY2xhc3Nlcy9tb2R1bGVzLCBhZGQgIm9wZW4gc291cmNlIiB0byBvYmplY3QgYnJvd3NlcgotCi1pbXBvcnQgcmUKLQotZnJvbSBpZGxlbGliLlRyZWVXaWRnZXQgaW1wb3J0IFRyZWVJdGVtLCBUcmVlTm9kZSwgU2Nyb2xsZWRDYW52YXMKLQogZnJvbSByZXBybGliIGltcG9ydCBSZXByCiAKK2Zyb20gaWRsZWxpYi50cmVlIGltcG9ydCBUcmVlSXRlbSwgVHJlZU5vZGUsIFNjcm9sbGVkQ2FudmFzCisKIG15cmVwciA9IFJlcHIoKQogbXlyZXByLm1heHN0cmluZyA9IDEwMAogbXlyZXByLm1heG90aGVyID0gMTAwCkBAIC0xMjIsMjEgKzExOSwyMCBAQAogICAgIHJldHVybiBjKGxhYmVsdGV4dCwgb2JqZWN0LCBzZXRmdW5jdGlvbikKIAogCi1kZWYgX29iamVjdF9icm93c2VyKHBhcmVudCk6CitkZWYgX29iamVjdF9icm93c2VyKHBhcmVudCk6ICAjIGh0ZXN0ICMKICAgICBpbXBvcnQgc3lzCi0gICAgZnJvbSB0a2ludGVyIGltcG9ydCBUawotICAgIHJvb3QgPSBUaygpCi0gICAgcm9vdC50aXRsZSgiVGVzdCBPYmplY3RCcm93c2VyIikKLSAgICB3aWR0aCwgaGVpZ2h0LCB4LCB5ID0gbGlzdChtYXAoaW50LCByZS5zcGxpdCgnW3grXScsIHBhcmVudC5nZW9tZXRyeSgpKSkpCi0gICAgcm9vdC5nZW9tZXRyeSgiKyVkKyVkIiUoeCwgeSArIDE1MCkpCi0gICAgcm9vdC5jb25maWd1cmUoYmQ9MCwgYmc9InllbGxvdyIpCi0gICAgcm9vdC5mb2N1c19zZXQoKQotICAgIHNjID0gU2Nyb2xsZWRDYW52YXMocm9vdCwgYmc9IndoaXRlIiwgaGlnaGxpZ2h0dGhpY2tuZXNzPTAsIHRha2Vmb2N1cz0xKQorICAgIGZyb20gdGtpbnRlciBpbXBvcnQgVG9wbGV2ZWwKKyAgICB0b3AgPSBUb3BsZXZlbChwYXJlbnQpCisgICAgdG9wLnRpdGxlKCJUZXN0IGRlYnVnIG9iamVjdCBicm93c2VyIikKKyAgICB4LCB5ID0gbWFwKGludCwgcGFyZW50Lmdlb21ldHJ5KCkuc3BsaXQoJysnKVsxOl0pCisgICAgdG9wLmdlb21ldHJ5KCIrJWQrJWQiICUgKHggKyAxMDAsIHkgKyAxNzUpKQorICAgIHRvcC5jb25maWd1cmUoYmQ9MCwgYmc9InllbGxvdyIpCisgICAgdG9wLmZvY3VzX3NldCgpCisgICAgc2MgPSBTY3JvbGxlZENhbnZhcyh0b3AsIGJnPSJ3aGl0ZSIsIGhpZ2hsaWdodHRoaWNrbmVzcz0wLCB0YWtlZm9jdXM9MSkKICAgICBzYy5mcmFtZS5wYWNrKGV4cGFuZD0xLCBmaWxsPSJib3RoIikKICAgICBpdGVtID0gbWFrZV9vYmplY3R0cmVlaXRlbSgic3lzIiwgc3lzKQogICAgIG5vZGUgPSBUcmVlTm9kZShzYy5jYW52YXMsIE5vbmUsIGl0ZW0pCiAgICAgbm9kZS51cGRhdGUoKQotICAgIHJvb3QubWFpbmxvb3AoKQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvUmVtb3RlT2JqZWN0QnJvd3Nlci5weSBiL0xpYi9pZGxlbGliL2RlYnVnb2JqX3IucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1JlbW90ZU9iamVjdEJyb3dzZXIucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2RlYnVnb2JqX3IucHkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0RlbGVnYXRvci5weSBiL0xpYi9pZGxlbGliL2RlbGVnYXRvci5weQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvRGVsZWdhdG9yLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9kZWxlZ2F0b3IucHkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2R5bk9wdGlvbk1lbnVXaWRnZXQucHkgYi9MaWIvaWRsZWxpYi9keW5vcHRpb24ucHkKc2ltaWxhcml0eSBpbmRleCA5MCUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvZHluT3B0aW9uTWVudVdpZGdldC5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvZHlub3B0aW9uLnB5CmluZGV4IDUxNWI0YmEuLjljNmZmYTQgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2R5bk9wdGlvbk1lbnVXaWRnZXQucHkKKysrIGIvTGliL2lkbGVsaWIvZHlub3B0aW9uLnB5CkBAIC0zLDYgKzMsNyBAQAogYW5kIHNldHRpbmcgb2YgaGlnaGxpZ2h0dGhpY2tuZXNzCiAiIiIKIGltcG9ydCBjb3B5CisKIGZyb20gdGtpbnRlciBpbXBvcnQgT3B0aW9uTWVudSwgX3NldGl0LCBTdHJpbmdWYXIsIEJ1dHRvbgogCiBjbGFzcyBEeW5PcHRpb25NZW51KE9wdGlvbk1lbnUpOgpAQCAtMzQsMTIgKzM1LDEyIEBACiAgICAgICAgICAgICBzZWxmLnZhcmlhYmxlLnNldCh2YWx1ZSkKIAogZGVmIF9keW5fb3B0aW9uX21lbnUocGFyZW50KTogICMgaHRlc3QgIwotICAgIGZyb20gdGtpbnRlciBpbXBvcnQgVG9wbGV2ZWwKKyAgICBmcm9tIHRraW50ZXIgaW1wb3J0IFRvcGxldmVsICMgKyBTdHJpbmdWYXIsIEJ1dHRvbgogCi0gICAgdG9wID0gVG9wbGV2ZWwoKQorICAgIHRvcCA9IFRvcGxldmVsKHBhcmVudCkKICAgICB0b3AudGl0bGUoIlRldHMgZHluYW1pYyBvcHRpb24gbWVudSIpCi0gICAgdG9wLmdlb21ldHJ5KCIyMDB4MTAwKyVkKyVkIiAlIChwYXJlbnQud2luZm9fcm9vdHgoKSArIDIwMCwKLSAgICAgICAgICAgICAgICAgIHBhcmVudC53aW5mb19yb290eSgpICsgMTUwKSkKKyAgICB4LCB5ID0gbWFwKGludCwgcGFyZW50Lmdlb21ldHJ5KCkuc3BsaXQoJysnKVsxOl0pCisgICAgdG9wLmdlb21ldHJ5KCIyMDB4MTAwKyVkKyVkIiAlICh4ICsgMjUwLCB5ICsgMTc1KSkKICAgICB0b3AuZm9jdXNfc2V0KCkKIAogICAgIHZhciA9IFN0cmluZ1Zhcih0b3ApCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9FZGl0b3JXaW5kb3cucHkgYi9MaWIvaWRsZWxpYi9lZGl0b3IucHkKc2ltaWxhcml0eSBpbmRleCA4OSUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvRWRpdG9yV2luZG93LnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9lZGl0b3IucHkKaW5kZXggOTk0NGRhMy4uYWU0NzVjYiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvRWRpdG9yV2luZG93LnB5CisrKyBiL0xpYi9pZGxlbGliL2VkaXRvci5weQpAQCAtNiwyOCArNiwzNCBAQAogaW1wb3J0IHJlCiBpbXBvcnQgc3RyaW5nCiBpbXBvcnQgc3lzCi1mcm9tIHRraW50ZXIgaW1wb3J0ICoKLWltcG9ydCB0a2ludGVyLnNpbXBsZWRpYWxvZyBhcyB0a1NpbXBsZURpYWxvZwotaW1wb3J0IHRraW50ZXIubWVzc2FnZWJveCBhcyB0a01lc3NhZ2VCb3gKK2ltcG9ydCB0b2tlbml6ZQogaW1wb3J0IHRyYWNlYmFjawogaW1wb3J0IHdlYmJyb3dzZXIKIAotZnJvbSBpZGxlbGliLk11bHRpQ2FsbCBpbXBvcnQgTXVsdGlDYWxsQ3JlYXRvcgotZnJvbSBpZGxlbGliIGltcG9ydCBXaW5kb3dMaXN0Ci1mcm9tIGlkbGVsaWIgaW1wb3J0IFNlYXJjaERpYWxvZwotZnJvbSBpZGxlbGliIGltcG9ydCBHcmVwRGlhbG9nCi1mcm9tIGlkbGVsaWIgaW1wb3J0IFJlcGxhY2VEaWFsb2cKLWZyb20gaWRsZWxpYiBpbXBvcnQgUHlQYXJzZQotZnJvbSBpZGxlbGliLmNvbmZpZ0hhbmRsZXIgaW1wb3J0IGlkbGVDb25mCi1mcm9tIGlkbGVsaWIgaW1wb3J0IGFib3V0RGlhbG9nLCB0ZXh0VmlldywgY29uZmlnRGlhbG9nCi1mcm9tIGlkbGVsaWIgaW1wb3J0IG1hY29zeFN1cHBvcnQKK2Zyb20gdGtpbnRlciBpbXBvcnQgKgorZnJvbSB0a2ludGVyLnR0ayBpbXBvcnQgU2Nyb2xsYmFyCitpbXBvcnQgdGtpbnRlci5zaW1wbGVkaWFsb2cgYXMgdGtTaW1wbGVEaWFsb2cKK2ltcG9ydCB0a2ludGVyLm1lc3NhZ2Vib3ggYXMgdGtNZXNzYWdlQm94CisKK2Zyb20gaWRsZWxpYi5jb25maWcgaW1wb3J0IGlkbGVDb25mCitmcm9tIGlkbGVsaWIgaW1wb3J0IGNvbmZpZ2RpYWxvZworZnJvbSBpZGxlbGliIGltcG9ydCBncmVwCiBmcm9tIGlkbGVsaWIgaW1wb3J0IGhlbHAKK2Zyb20gaWRsZWxpYiBpbXBvcnQgaGVscF9hYm91dAorZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3gKK2Zyb20gaWRsZWxpYi5tdWx0aWNhbGwgaW1wb3J0IE11bHRpQ2FsbENyZWF0b3IKK2Zyb20gaWRsZWxpYiBpbXBvcnQgcHlwYXJzZQorZnJvbSBpZGxlbGliIGltcG9ydCBxdWVyeQorZnJvbSBpZGxlbGliIGltcG9ydCByZXBsYWNlCitmcm9tIGlkbGVsaWIgaW1wb3J0IHNlYXJjaAorZnJvbSBpZGxlbGliIGltcG9ydCB0ZXh0dmlldworZnJvbSBpZGxlbGliIGltcG9ydCB3aW5kb3dzCiAKICMgVGhlIGRlZmF1bHQgdGFiIHNldHRpbmcgZm9yIGEgVGV4dCB3aWRnZXQsIGluIGF2ZXJhZ2Utd2lkdGggY2hhcmFjdGVycy4KIFRLX1RBQldJRFRIX0RFRkFVTFQgPSA4Ci0KIF9weV92ZXJzaW9uID0gJyAoJXMpJyAlIHBsYXRmb3JtLnB5dGhvbl92ZXJzaW9uKCkKIAorCiBkZWYgX3NwaGlueF92ZXJzaW9uKCk6CiAgICAgIkZvcm1hdCBzeXMudmVyc2lvbl9pbmZvIHRvIHByb2R1Y2UgdGhlIFNwaGlueCB2ZXJzaW9uIHN0cmluZyB1c2VkIHRvIGluc3RhbGwgdGhlIGNobSBkb2NzIgogICAgIG1ham9yLCBtaW5vciwgbWljcm8sIGxldmVsLCBzZXJpYWwgPSBzeXMudmVyc2lvbl9pbmZvCkBAIC00MCw2MyArNDYsMTYgQEAKICAgICByZXR1cm4gcmVsZWFzZQogCiAKLWNsYXNzIEhlbHBEaWFsb2cob2JqZWN0KToKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5wYXJlbnQgPSBOb25lICAgICAgIyBwYXJlbnQgb2YgaGVscCB3aW5kb3cKLSAgICAgICAgc2VsZi5kbGcgPSBOb25lICAgICAgICAgIyB0aGUgaGVscCB3aW5kb3cgaXRlc2VsZgotCi0gICAgZGVmIGRpc3BsYXkoc2VsZiwgcGFyZW50LCBuZWFyPU5vbmUpOgotICAgICAgICAiIiIgRGlzcGxheSB0aGUgaGVscCBkaWFsb2cuCi0KLSAgICAgICAgICAgIHBhcmVudCAtIHBhcmVudCB3aWRnZXQgZm9yIHRoZSBoZWxwIHdpbmRvdwotCi0gICAgICAgICAgICBuZWFyIC0gYSBUb3BsZXZlbCB3aWRnZXQgKGUuZy4gRWRpdG9yV2luZG93IG9yIFB5U2hlbGwpCi0gICAgICAgICAgICAgICAgICAgdG8gdXNlIGFzIGEgcmVmZXJlbmNlIGZvciBwbGFjaW5nIHRoZSBoZWxwIHdpbmRvdwotICAgICAgICAiIiIKLSAgICAgICAgaW1wb3J0IHdhcm5pbmdzIGFzIHcKLSAgICAgICAgdy53YXJuKCJFZGl0b3JXaW5kb3cuSGVscERpYWxvZyBpcyBubyBsb25nZXIgdXNlZCBieSBJZGxlLlxuIgotICAgICAgICAgICAgICAgIkl0IHdpbGwgYmUgcmVtb3ZlZCBpbiAzLjYgb3IgbGF0ZXIuXG4iCi0gICAgICAgICAgICAgICAiSXQgaGFzIGJlZW4gcmVwbGFjZWQgYnkgcHJpdmF0ZSBoZWxwLkhlbHBXaW5kb3dcbiIsCi0gICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKLSAgICAgICAgaWYgc2VsZi5kbGcgaXMgTm9uZToKLSAgICAgICAgICAgIHNlbGYuc2hvd19kaWFsb2cocGFyZW50KQotICAgICAgICBpZiBuZWFyOgotICAgICAgICAgICAgc2VsZi5uZWFyd2luZG93KG5lYXIpCi0KLSAgICBkZWYgc2hvd19kaWFsb2coc2VsZiwgcGFyZW50KToKLSAgICAgICAgc2VsZi5wYXJlbnQgPSBwYXJlbnQKLSAgICAgICAgZm49b3MucGF0aC5qb2luKG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKSwnaGVscC50eHQnKQotICAgICAgICBzZWxmLmRsZyA9IGRsZyA9IHRleHRWaWV3LnZpZXdfZmlsZShwYXJlbnQsJ0hlbHAnLGZuLCBtb2RhbD1GYWxzZSkKLSAgICAgICAgZGxnLmJpbmQoJzxEZXN0cm95PicsIHNlbGYuZGVzdHJveSwgJysnKQotCi0gICAgZGVmIG5lYXJ3aW5kb3coc2VsZiwgbmVhcik6Ci0gICAgICAgICMgUGxhY2UgdGhlIGhlbHAgZGlhbG9nIG5lYXIgdGhlIHdpbmRvdyBzcGVjaWZpZWQgYnkgcGFyZW50LgotICAgICAgICAjIE5vdGUgLSB0aGlzIG1heSBub3QgcmVwb3NpdGlvbiB0aGUgd2luZG93IGluIE1ldGFjaXR5Ci0gICAgICAgICMgIGlmICIvYXBwcy9tZXRhY2l0eS9nZW5lcmFsL2Rpc2FibGVfd29ya2Fyb3VuZHMiIGlzIGVuYWJsZWQKLSAgICAgICAgZGxnID0gc2VsZi5kbGcKLSAgICAgICAgZ2VvbSA9IChuZWFyLndpbmZvX3Jvb3R4KCkgKyAxMCwgbmVhci53aW5mb19yb290eSgpICsgMTApCi0gICAgICAgIGRsZy53aXRoZHJhdygpCi0gICAgICAgIGRsZy5nZW9tZXRyeSgiPSslZCslZCIgJSBnZW9tKQotICAgICAgICBkbGcuZGVpY29uaWZ5KCkKLSAgICAgICAgZGxnLmxpZnQoKQotCi0gICAgZGVmIGRlc3Ryb3koc2VsZiwgZXY9Tm9uZSk6Ci0gICAgICAgIHNlbGYuZGxnID0gTm9uZQotICAgICAgICBzZWxmLnBhcmVudCA9IE5vbmUKLQotaGVscERpYWxvZyA9IEhlbHBEaWFsb2coKSAgIyBzaW5nbGV0b24gaW5zdGFuY2UsIG5vIGxvbmdlciB1c2VkCi0KLQogY2xhc3MgRWRpdG9yV2luZG93KG9iamVjdCk6Ci0gICAgZnJvbSBpZGxlbGliLlBlcmNvbGF0b3IgaW1wb3J0IFBlcmNvbGF0b3IKLSAgICBmcm9tIGlkbGVsaWIuQ29sb3JEZWxlZ2F0b3IgaW1wb3J0IENvbG9yRGVsZWdhdG9yLCBjb2xvcl9jb25maWcKLSAgICBmcm9tIGlkbGVsaWIuVW5kb0RlbGVnYXRvciBpbXBvcnQgVW5kb0RlbGVnYXRvcgotICAgIGZyb20gaWRsZWxpYi5JT0JpbmRpbmcgaW1wb3J0IElPQmluZGluZywgZmlsZXN5c3RlbWVuY29kaW5nLCBlbmNvZGluZwotICAgIGZyb20gaWRsZWxpYiBpbXBvcnQgQmluZGluZ3MKKyAgICBmcm9tIGlkbGVsaWIucGVyY29sYXRvciBpbXBvcnQgUGVyY29sYXRvcgorICAgIGZyb20gaWRsZWxpYi5jb2xvcml6ZXIgaW1wb3J0IENvbG9yRGVsZWdhdG9yLCBjb2xvcl9jb25maWcKKyAgICBmcm9tIGlkbGVsaWIudW5kbyBpbXBvcnQgVW5kb0RlbGVnYXRvcgorICAgIGZyb20gaWRsZWxpYi5pb21lbnUgaW1wb3J0IElPQmluZGluZywgZW5jb2RpbmcKKyAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IG1haW5tZW51CiAgICAgZnJvbSB0a2ludGVyIGltcG9ydCBUb3BsZXZlbAotICAgIGZyb20gaWRsZWxpYi5NdWx0aVN0YXR1c0JhciBpbXBvcnQgTXVsdGlTdGF0dXNCYXIKKyAgICBmcm9tIGlkbGVsaWIuc3RhdHVzYmFyIGltcG9ydCBNdWx0aVN0YXR1c0JhcgogCisgICAgZmlsZXN5c3RlbWVuY29kaW5nID0gc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpICAjIGZvciBmaWxlIG5hbWVzCiAgICAgaGVscF91cmwgPSBOb25lCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZmxpc3Q9Tm9uZSwgZmlsZW5hbWU9Tm9uZSwga2V5PU5vbmUsIHJvb3Q9Tm9uZSk6CkBAIC0xMzYsMTEgKzk1LDExIEBACiAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgIHN5cy5wczEgPSAnPj4+ICcKICAgICAgICAgc2VsZi5tZW51YmFyID0gTWVudShyb290KQotICAgICAgICBzZWxmLnRvcCA9IHRvcCA9IFdpbmRvd0xpc3QuTGlzdGVkVG9wbGV2ZWwocm9vdCwgbWVudT1zZWxmLm1lbnViYXIpCisgICAgICAgIHNlbGYudG9wID0gdG9wID0gd2luZG93cy5MaXN0ZWRUb3BsZXZlbChyb290LCBtZW51PXNlbGYubWVudWJhcikKICAgICAgICAgaWYgZmxpc3Q6CiAgICAgICAgICAgICBzZWxmLnRraW50ZXJfdmFycyA9IGZsaXN0LnZhcnMKICAgICAgICAgICAgICNzZWxmLnRvcC5pbnN0YW5jZV9kaWN0IG1ha2VzIGZsaXN0LmludmVyc2VkaWN0IGF2YWlsYWJsZSB0bwotICAgICAgICAgICAgI2NvbmZpZ0RpYWxvZy5weSBzbyBpdCBjYW4gYWNjZXNzIGFsbCBFZGl0b3JXaW5kb3cgaW5zdGFuY2VzCisgICAgICAgICAgICAjY29uZmlnZGlhbG9nLnB5IHNvIGl0IGNhbiBhY2Nlc3MgYWxsIEVkaXRvcldpbmRvdyBpbnN0YW5jZXMKICAgICAgICAgICAgIHNlbGYudG9wLmluc3RhbmNlX2RpY3QgPSBmbGlzdC5pbnZlcnNlZGljdAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi50a2ludGVyX3ZhcnMgPSB7fSAgIyBrZXlzOiBUa2ludGVyIGV2ZW50IG5hbWVzCkBAIC0xNTgsMTMgKzExNywxMCBAQAogICAgICAgICAgICAgICAgICd3cmFwJzogJ25vbmUnLAogICAgICAgICAgICAgICAgICdoaWdobGlnaHR0aGlja25lc3MnOiAwLAogICAgICAgICAgICAgICAgICd3aWR0aCc6IHNlbGYud2lkdGgsCi0gICAgICAgICAgICAgICAgJ2hlaWdodCc6IGlkbGVDb25mLkdldE9wdGlvbignbWFpbicsICdFZGl0b3JXaW5kb3cnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hlaWdodCcsIHR5cGU9J2ludCcpfQotICAgICAgICBpZiBUa1ZlcnNpb24gPj0gOC41OgotICAgICAgICAgICAgIyBTdGFydGluZyB3aXRoIHRrIDguNSB3ZSBoYXZlIHRvIHNldCB0aGUgbmV3IHRhYnN0eWxlIG9wdGlvbgotICAgICAgICAgICAgIyB0byAnd29yZHByb2Nlc3NvcicgdG8gYWNoaWV2ZSB0aGUgc2FtZSBkaXNwbGF5IG9mIHRhYnMgYXMgaW4KLSAgICAgICAgICAgICMgb2xkZXIgdGsgdmVyc2lvbnMuCi0gICAgICAgICAgICB0ZXh0X29wdGlvbnNbJ3RhYnN0eWxlJ10gPSAnd29yZHByb2Nlc3NvcicKKyAgICAgICAgICAgICAgICAndGFic3R5bGUnOiAnd29yZHByb2Nlc3NvcicsICAjIG5ldyBpbiA4LjUKKyAgICAgICAgICAgICAgICAnaGVpZ2h0JzogaWRsZUNvbmYuR2V0T3B0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgJ21haW4nLCAnRWRpdG9yV2luZG93JywgJ2hlaWdodCcsIHR5cGU9J2ludCcpLAorICAgICAgICAgICAgICAgIH0KICAgICAgICAgc2VsZi50ZXh0ID0gdGV4dCA9IE11bHRpQ2FsbENyZWF0b3IoVGV4dCkodGV4dF9mcmFtZSwgKip0ZXh0X29wdGlvbnMpCiAgICAgICAgIHNlbGYudG9wLmZvY3VzZWRfd2lkZ2V0ID0gc2VsZi50ZXh0CiAKQEAgLTE3Myw3ICsxMjksNyBAQAogCiAgICAgICAgIHNlbGYudG9wLnByb3RvY29sKCJXTV9ERUxFVEVfV0lORE9XIiwgc2VsZi5jbG9zZSkKICAgICAgICAgc2VsZi50b3AuYmluZCgiPDxjbG9zZS13aW5kb3c+PiIsIHNlbGYuY2xvc2VfZXZlbnQpCi0gICAgICAgIGlmIG1hY29zeFN1cHBvcnQuaXNBcXVhVGsoKToKKyAgICAgICAgaWYgbWFjb3N4LmlzQXF1YVRrKCk6CiAgICAgICAgICAgICAjIENvbW1hbmQtVyBvbiBlZGl0b3J3aW5kb3dzIGRvZXNuJ3Qgd29yayB3aXRob3V0IHRoaXMuCiAgICAgICAgICAgICB0ZXh0LmJpbmQoJzw8Y2xvc2Utd2luZG93Pj4nLCBzZWxmLmNsb3NlX2V2ZW50KQogICAgICAgICAgICAgIyBTb21lIE9TIFggc3lzdGVtcyBoYXZlIG9ubHkgb25lIG1vdXNlIGJ1dHRvbiwgc28gdXNlCkBAIC0zMDksNyArMjY1LDcgQEAKICAgICAgICAgICAgICAgICBtZW51LmFkZF9zZXBhcmF0b3IoKQogICAgICAgICAgICAgICAgIGVuZCA9IGVuZCArIDEKICAgICAgICAgICAgIHNlbGYud21lbnVfZW5kID0gZW5kCi0gICAgICAgICAgICBXaW5kb3dMaXN0LnJlZ2lzdGVyX2NhbGxiYWNrKHNlbGYucG9zdHdpbmRvd3NtZW51KQorICAgICAgICAgICAgd2luZG93cy5yZWdpc3Rlcl9jYWxsYmFjayhzZWxmLnBvc3R3aW5kb3dzbWVudSkKIAogICAgICAgICAjIFNvbWUgYWJzdHJhY3Rpb25zIHNvIElETEUgZXh0ZW5zaW9ucyBhcmUgY3Jvc3MtSURFCiAgICAgICAgIHNlbGYuYXNreWVzbm8gPSB0a01lc3NhZ2VCb3guYXNreWVzbm8KQEAgLTQxOCw3ICszNzQsNyBAQAogICAgICAgICAgICAgdW5kZXJsaW5lLCBsYWJlbCA9IHByZXBzdHIobGFiZWwpCiAgICAgICAgICAgICBtZW51ZGljdFtuYW1lXSA9IG1lbnUgPSBNZW51KG1iYXIsIG5hbWU9bmFtZSwgdGVhcm9mZj0wKQogICAgICAgICAgICAgbWJhci5hZGRfY2FzY2FkZShsYWJlbD1sYWJlbCwgbWVudT1tZW51LCB1bmRlcmxpbmU9dW5kZXJsaW5lKQotICAgICAgICBpZiBtYWNvc3hTdXBwb3J0LmlzQ2FyYm9uVGsoKToKKyAgICAgICAgaWYgbWFjb3N4LmlzQ2FyYm9uVGsoKToKICAgICAgICAgICAgICMgSW5zZXJ0IHRoZSBhcHBsaWNhdGlvbiBtZW51CiAgICAgICAgICAgICBtZW51ZGljdFsnYXBwbGljYXRpb24nXSA9IG1lbnUgPSBNZW51KG1iYXIsIG5hbWU9J2FwcGxlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVhcm9mZj0wKQpAQCAtNDM5LDcgKzM5NSw3IEBACiAgICAgICAgICAgICBlbmQgPSAtMQogICAgICAgICBpZiBlbmQgPiBzZWxmLndtZW51X2VuZDoKICAgICAgICAgICAgIG1lbnUuZGVsZXRlKHNlbGYud21lbnVfZW5kKzEsIGVuZCkKLSAgICAgICAgV2luZG93TGlzdC5hZGRfd2luZG93c190b19tZW51KG1lbnUpCisgICAgICAgIHdpbmRvd3MuYWRkX3dpbmRvd3NfdG9fbWVudShtZW51KQogCiAgICAgcm1lbnUgPSBOb25lCiAKQEAgLTUwNywxNyArNDYzLDE3IEBACiAKICAgICBkZWYgYWJvdXRfZGlhbG9nKHNlbGYsIGV2ZW50PU5vbmUpOgogICAgICAgICAiSGFuZGxlIEhlbHAgJ0Fib3V0IElETEUnIGV2ZW50LiIKLSAgICAgICAgIyBTeW5jaHJvbml6ZSB3aXRoIG1hY29zeFN1cHBvcnQub3ZlcnJpZGVSb290TWVudS5hYm91dF9kaWFsb2cuCi0gICAgICAgIGFib3V0RGlhbG9nLkFib3V0RGlhbG9nKHNlbGYudG9wLCdBYm91dCBJRExFJykKKyAgICAgICAgIyBTeW5jaHJvbml6ZSB3aXRoIG1hY29zeC5vdmVycmlkZVJvb3RNZW51LmFib3V0X2RpYWxvZy4KKyAgICAgICAgaGVscF9hYm91dC5BYm91dERpYWxvZyhzZWxmLnRvcCwnQWJvdXQgSURMRScpCiAKICAgICBkZWYgY29uZmlnX2RpYWxvZyhzZWxmLCBldmVudD1Ob25lKToKICAgICAgICAgIkhhbmRsZSBPcHRpb25zICdDb25maWd1cmUgSURMRScgZXZlbnQuIgotICAgICAgICAjIFN5bmNocm9uaXplIHdpdGggbWFjb3N4U3VwcG9ydC5vdmVycmlkZVJvb3RNZW51LmNvbmZpZ19kaWFsb2cuCi0gICAgICAgIGNvbmZpZ0RpYWxvZy5Db25maWdEaWFsb2coc2VsZi50b3AsJ1NldHRpbmdzJykKKyAgICAgICAgIyBTeW5jaHJvbml6ZSB3aXRoIG1hY29zeC5vdmVycmlkZVJvb3RNZW51LmNvbmZpZ19kaWFsb2cuCisgICAgICAgIGNvbmZpZ2RpYWxvZy5Db25maWdEaWFsb2coc2VsZi50b3AsJ1NldHRpbmdzJykKIAogICAgIGRlZiBoZWxwX2RpYWxvZyhzZWxmLCBldmVudD1Ob25lKToKICAgICAgICAgIkhhbmRsZSBIZWxwICdJRExFIEhlbHAnIGV2ZW50LiIKLSAgICAgICAgIyBTeW5jaHJvbml6ZSB3aXRoIG1hY29zeFN1cHBvcnQub3ZlcnJpZGVSb290TWVudS5oZWxwX2RpYWxvZy4KKyAgICAgICAgIyBTeW5jaHJvbml6ZSB3aXRoIG1hY29zeC5vdmVycmlkZVJvb3RNZW51LmhlbHBfZGlhbG9nLgogICAgICAgICBpZiBzZWxmLnJvb3Q6CiAgICAgICAgICAgICBwYXJlbnQgPSBzZWxmLnJvb3QKICAgICAgICAgZWxzZToKQEAgLTU5MCwyMyArNTQ2LDIzIEBACiAgICAgICAgIHJldHVybiAiYnJlYWsiCiAKICAgICBkZWYgZmluZF9ldmVudChzZWxmLCBldmVudCk6Ci0gICAgICAgIFNlYXJjaERpYWxvZy5maW5kKHNlbGYudGV4dCkKKyAgICAgICAgc2VhcmNoLmZpbmQoc2VsZi50ZXh0KQogICAgICAgICByZXR1cm4gImJyZWFrIgogCiAgICAgZGVmIGZpbmRfYWdhaW5fZXZlbnQoc2VsZiwgZXZlbnQpOgotICAgICAgICBTZWFyY2hEaWFsb2cuZmluZF9hZ2FpbihzZWxmLnRleHQpCisgICAgICAgIHNlYXJjaC5maW5kX2FnYWluKHNlbGYudGV4dCkKICAgICAgICAgcmV0dXJuICJicmVhayIKIAogICAgIGRlZiBmaW5kX3NlbGVjdGlvbl9ldmVudChzZWxmLCBldmVudCk6Ci0gICAgICAgIFNlYXJjaERpYWxvZy5maW5kX3NlbGVjdGlvbihzZWxmLnRleHQpCisgICAgICAgIHNlYXJjaC5maW5kX3NlbGVjdGlvbihzZWxmLnRleHQpCiAgICAgICAgIHJldHVybiAiYnJlYWsiCiAKICAgICBkZWYgZmluZF9pbl9maWxlc19ldmVudChzZWxmLCBldmVudCk6Ci0gICAgICAgIEdyZXBEaWFsb2cuZ3JlcChzZWxmLnRleHQsIHNlbGYuaW8sIHNlbGYuZmxpc3QpCisgICAgICAgIGdyZXAuZ3JlcChzZWxmLnRleHQsIHNlbGYuaW8sIHNlbGYuZmxpc3QpCiAgICAgICAgIHJldHVybiAiYnJlYWsiCiAKICAgICBkZWYgcmVwbGFjZV9ldmVudChzZWxmLCBldmVudCk6Ci0gICAgICAgIFJlcGxhY2VEaWFsb2cucmVwbGFjZShzZWxmLnRleHQpCisgICAgICAgIHJlcGxhY2UucmVwbGFjZShzZWxmLnRleHQpCiAgICAgICAgIHJldHVybiAiYnJlYWsiCiAKICAgICBkZWYgZ290b19saW5lX2V2ZW50KHNlbGYsIGV2ZW50KToKQEAgLTYyMiw0NiArNTc4LDI3IEBACiAgICAgICAgIHRleHQuc2VlKCJpbnNlcnQiKQogCiAgICAgZGVmIG9wZW5fbW9kdWxlKHNlbGYsIGV2ZW50PU5vbmUpOgotICAgICAgICAjIFhYWCBTaG91bGRuJ3QgdGhpcyBiZSBpbiBJT0JpbmRpbmc/CisgICAgICAgICIiIkdldCBtb2R1bGUgbmFtZSBmcm9tIHVzZXIgYW5kIG9wZW4gaXQuCisKKyAgICAgICAgUmV0dXJuIG1vZHVsZSBwYXRoIG9yIE5vbmUgZm9yIGNhbGxzIGJ5IG9wZW5fY2xhc3NfYnJvd3NlcgorICAgICAgICB3aGVuIGxhdHRlciBpcyBub3QgaW52b2tlZCBpbiBuYW1lZCBlZGl0b3Igd2luZG93LgorICAgICAgICAiIiIKKyAgICAgICAgIyBYWFggVGhpcywgb3Blbl9jbGFzc19icm93c2VyLCBhbmQgb3Blbl9wYXRoX2Jyb3dzZXIKKyAgICAgICAgIyB3b3VsZCBmaXQgYmV0dGVyIGluIGlvbWVudS5JT0JpbmRpbmcuCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIG5hbWUgPSBzZWxmLnRleHQuZ2V0KCJzZWwuZmlyc3QiLCAic2VsLmxhc3QiKQorICAgICAgICAgICAgbmFtZSA9IHNlbGYudGV4dC5nZXQoInNlbC5maXJzdCIsICJzZWwubGFzdCIpLnN0cmlwKCkKICAgICAgICAgZXhjZXB0IFRjbEVycm9yOgotICAgICAgICAgICAgbmFtZSA9ICIiCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBuYW1lID0gbmFtZS5zdHJpcCgpCi0gICAgICAgIG5hbWUgPSB0a1NpbXBsZURpYWxvZy5hc2tzdHJpbmcoIk1vZHVsZSIsCi0gICAgICAgICAgICAgICAgICJFbnRlciB0aGUgbmFtZSBvZiBhIFB5dGhvbiBtb2R1bGVcbiIKLSAgICAgICAgICAgICAgICAgInRvIHNlYXJjaCBvbiBzeXMucGF0aCBhbmQgb3BlbjoiLAotICAgICAgICAgICAgICAgICBwYXJlbnQ9c2VsZi50ZXh0LCBpbml0aWFsdmFsdWU9bmFtZSkKLSAgICAgICAgaWYgbmFtZToKLSAgICAgICAgICAgIG5hbWUgPSBuYW1lLnN0cmlwKCkKLSAgICAgICAgaWYgbm90IG5hbWU6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgIyBYWFggT3VnaHQgdG8gaW5zZXJ0IGN1cnJlbnQgZmlsZSdzIGRpcmVjdG9yeSBpbiBmcm9udCBvZiBwYXRoCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNwZWMgPSBpbXBvcnRsaWIudXRpbC5maW5kX3NwZWMobmFtZSkKLSAgICAgICAgZXhjZXB0IChWYWx1ZUVycm9yLCBJbXBvcnRFcnJvcikgYXMgbXNnOgotICAgICAgICAgICAgdGtNZXNzYWdlQm94LnNob3dlcnJvcigiSW1wb3J0IGVycm9yIiwgc3RyKG1zZyksIHBhcmVudD1zZWxmLnRleHQpCi0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgaWYgc3BlYyBpcyBOb25lOgotICAgICAgICAgICAgdGtNZXNzYWdlQm94LnNob3dlcnJvcigiSW1wb3J0IGVycm9yIiwgIm1vZHVsZSBub3QgZm91bmQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQ9c2VsZi50ZXh0KQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHNwZWMubG9hZGVyLCBpbXBvcnRsaWIuYWJjLlNvdXJjZUxvYWRlcik6Ci0gICAgICAgICAgICB0a01lc3NhZ2VCb3guc2hvd2Vycm9yKCJJbXBvcnQgZXJyb3IiLCAibm90IGEgc291cmNlLWJhc2VkIG1vZHVsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudD1zZWxmLnRleHQpCi0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZmlsZV9wYXRoID0gc3BlYy5sb2FkZXIuZ2V0X2ZpbGVuYW1lKG5hbWUpCi0gICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgIHRrTWVzc2FnZUJveC5zaG93ZXJyb3IoIkltcG9ydCBlcnJvciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsb2FkZXIgZG9lcyBub3Qgc3VwcG9ydCBnZXRfZmlsZW5hbWUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQ9c2VsZi50ZXh0KQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGlmIHNlbGYuZmxpc3Q6Ci0gICAgICAgICAgICBzZWxmLmZsaXN0Lm9wZW4oZmlsZV9wYXRoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5pby5sb2FkZmlsZShmaWxlX3BhdGgpCisgICAgICAgICAgICBuYW1lID0gJycKKyAgICAgICAgZmlsZV9wYXRoID0gcXVlcnkuTW9kdWxlTmFtZSgKKyAgICAgICAgICAgICAgICBzZWxmLnRleHQsICJPcGVuIE1vZHVsZSIsCisgICAgICAgICAgICAgICAgIkVudGVyIHRoZSBuYW1lIG9mIGEgUHl0aG9uIG1vZHVsZVxuIgorICAgICAgICAgICAgICAgICJ0byBzZWFyY2ggb24gc3lzLnBhdGggYW5kIG9wZW46IiwKKyAgICAgICAgICAgICAgICBuYW1lKS5yZXN1bHQKKyAgICAgICAgaWYgZmlsZV9wYXRoIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgaWYgc2VsZi5mbGlzdDoKKyAgICAgICAgICAgICAgICBzZWxmLmZsaXN0Lm9wZW4oZmlsZV9wYXRoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmlvLmxvYWRmaWxlKGZpbGVfcGF0aCkKICAgICAgICAgcmV0dXJuIGZpbGVfcGF0aAogCiAgICAgZGVmIG9wZW5fY2xhc3NfYnJvd3NlcihzZWxmLCBldmVudD1Ob25lKToKQEAgLTY3MywxMiArNjEwLDEyIEBACiAgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGhlYWQsIHRhaWwgPSBvcy5wYXRoLnNwbGl0KGZpbGVuYW1lKQogICAgICAgICBiYXNlLCBleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KHRhaWwpCi0gICAgICAgIGZyb20gaWRsZWxpYiBpbXBvcnQgQ2xhc3NCcm93c2VyCi0gICAgICAgIENsYXNzQnJvd3Nlci5DbGFzc0Jyb3dzZXIoc2VsZi5mbGlzdCwgYmFzZSwgW2hlYWRdKQorICAgICAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IGJyb3dzZXIKKyAgICAgICAgYnJvd3Nlci5DbGFzc0Jyb3dzZXIoc2VsZi5mbGlzdCwgYmFzZSwgW2hlYWRdKQogCiAgICAgZGVmIG9wZW5fcGF0aF9icm93c2VyKHNlbGYsIGV2ZW50PU5vbmUpOgotICAgICAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IFBhdGhCcm93c2VyCi0gICAgICAgIFBhdGhCcm93c2VyLlBhdGhCcm93c2VyKHNlbGYuZmxpc3QpCisgICAgICAgIGZyb20gaWRsZWxpYiBpbXBvcnQgcGF0aGJyb3dzZXIKKyAgICAgICAgcGF0aGJyb3dzZXIuUGF0aEJyb3dzZXIoc2VsZi5mbGlzdCkKIAogICAgIGRlZiBvcGVuX3R1cnRsZV9kZW1vKHNlbGYsIGV2ZW50ID0gTm9uZSk6CiAgICAgICAgIGltcG9ydCBzdWJwcm9jZXNzCkBAIC03MzksNyArNjc2LDcgQEAKIAogICAgIGRlZiBSZXNldENvbG9yaXplcihzZWxmKToKICAgICAgICAgIlVwZGF0ZSB0aGUgY29sb3IgdGhlbWUiCi0gICAgICAgICMgQ2FsbGVkIGZyb20gc2VsZi5maWxlbmFtZV9jaGFuZ2VfaG9vayBhbmQgZnJvbSBjb25maWdEaWFsb2cucHkKKyAgICAgICAgIyBDYWxsZWQgZnJvbSBzZWxmLmZpbGVuYW1lX2NoYW5nZV9ob29rIGFuZCBmcm9tIGNvbmZpZ2RpYWxvZy5weQogICAgICAgICBzZWxmLl9ybWNvbG9yaXplcigpCiAgICAgICAgIHNlbGYuX2FkZGNvbG9yaXplcigpCiAgICAgICAgIEVkaXRvcldpbmRvdy5jb2xvcl9jb25maWcoc2VsZi50ZXh0KQpAQCAtNzU5LDE0ICs2OTYsMTQgQEAKIAogICAgIGRlZiBSZXNldEZvbnQoc2VsZik6CiAgICAgICAgICJVcGRhdGUgdGhlIHRleHQgd2lkZ2V0cycgZm9udCBpZiBpdCBpcyBjaGFuZ2VkIgotICAgICAgICAjIENhbGxlZCBmcm9tIGNvbmZpZ0RpYWxvZy5weQorICAgICAgICAjIENhbGxlZCBmcm9tIGNvbmZpZ2RpYWxvZy5weQogCiAgICAgICAgIHNlbGYudGV4dFsnZm9udCddID0gaWRsZUNvbmYuR2V0Rm9udChzZWxmLnJvb3QsICdtYWluJywnRWRpdG9yV2luZG93JykKIAogICAgIGRlZiBSZW1vdmVLZXliaW5kaW5ncyhzZWxmKToKICAgICAgICAgIlJlbW92ZSB0aGUga2V5YmluZGluZ3MgYmVmb3JlIHRoZXkgYXJlIGNoYW5nZWQuIgotICAgICAgICAjIENhbGxlZCBmcm9tIGNvbmZpZ0RpYWxvZy5weQotICAgICAgICBzZWxmLkJpbmRpbmdzLmRlZmF1bHRfa2V5ZGVmcyA9IGtleWRlZnMgPSBpZGxlQ29uZi5HZXRDdXJyZW50S2V5U2V0KCkKKyAgICAgICAgIyBDYWxsZWQgZnJvbSBjb25maWdkaWFsb2cucHkKKyAgICAgICAgc2VsZi5tYWlubWVudS5kZWZhdWx0X2tleWRlZnMgPSBrZXlkZWZzID0gaWRsZUNvbmYuR2V0Q3VycmVudEtleVNldCgpCiAgICAgICAgIGZvciBldmVudCwga2V5bGlzdCBpbiBrZXlkZWZzLml0ZW1zKCk6CiAgICAgICAgICAgICBzZWxmLnRleHQuZXZlbnRfZGVsZXRlKGV2ZW50LCAqa2V5bGlzdCkKICAgICAgICAgZm9yIGV4dGVuc2lvbk5hbWUgaW4gc2VsZi5nZXRfc3RhbmRhcmRfZXh0ZW5zaW9uX25hbWVzKCk6CkBAIC03NzcsOCArNzE0LDggQEAKIAogICAgIGRlZiBBcHBseUtleWJpbmRpbmdzKHNlbGYpOgogICAgICAgICAiVXBkYXRlIHRoZSBrZXliaW5kaW5ncyBhZnRlciB0aGV5IGFyZSBjaGFuZ2VkIgotICAgICAgICAjIENhbGxlZCBmcm9tIGNvbmZpZ0RpYWxvZy5weQotICAgICAgICBzZWxmLkJpbmRpbmdzLmRlZmF1bHRfa2V5ZGVmcyA9IGtleWRlZnMgPSBpZGxlQ29uZi5HZXRDdXJyZW50S2V5U2V0KCkKKyAgICAgICAgIyBDYWxsZWQgZnJvbSBjb25maWdkaWFsb2cucHkKKyAgICAgICAgc2VsZi5tYWlubWVudS5kZWZhdWx0X2tleWRlZnMgPSBrZXlkZWZzID0gaWRsZUNvbmYuR2V0Q3VycmVudEtleVNldCgpCiAgICAgICAgIHNlbGYuYXBwbHlfYmluZGluZ3MoKQogICAgICAgICBmb3IgZXh0ZW5zaW9uTmFtZSBpbiBzZWxmLmdldF9zdGFuZGFyZF9leHRlbnNpb25fbmFtZXMoKToKICAgICAgICAgICAgIHhrZXlkZWZzID0gaWRsZUNvbmYuR2V0RXh0ZW5zaW9uQmluZGluZ3MoZXh0ZW5zaW9uTmFtZSkKQEAgLTc4Niw3ICs3MjMsNyBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXBwbHlfYmluZGluZ3MoeGtleWRlZnMpCiAgICAgICAgICN1cGRhdGUgbWVudSBhY2NlbGVyYXRvcnMKICAgICAgICAgbWVudUV2ZW50RGljdCA9IHt9Ci0gICAgICAgIGZvciBtZW51IGluIHNlbGYuQmluZGluZ3MubWVudWRlZnM6CisgICAgICAgIGZvciBtZW51IGluIHNlbGYubWFpbm1lbnUubWVudWRlZnM6CiAgICAgICAgICAgICBtZW51RXZlbnREaWN0W21lbnVbMF1dID0ge30KICAgICAgICAgICAgIGZvciBpdGVtIGluIG1lbnVbMV06CiAgICAgICAgICAgICAgICAgaWYgaXRlbToKQEAgLTgxMyw3ICs3NTAsNyBAQAogCiAgICAgZGVmIHNldF9ub3RhYnNfaW5kZW50d2lkdGgoc2VsZik6CiAgICAgICAgICJVcGRhdGUgdGhlIGluZGVudHdpZHRoIGlmIGNoYW5nZWQgYW5kIG5vdCB1c2luZyB0YWJzIGluIHRoaXMgd2luZG93IgotICAgICAgICAjIENhbGxlZCBmcm9tIGNvbmZpZ0RpYWxvZy5weQorICAgICAgICAjIENhbGxlZCBmcm9tIGNvbmZpZ2RpYWxvZy5weQogICAgICAgICBpZiBub3Qgc2VsZi51c2V0YWJzOgogICAgICAgICAgICAgc2VsZi5pbmRlbnR3aWR0aCA9IGlkbGVDb25mLkdldE9wdGlvbignbWFpbicsICdJbmRlbnQnLCdudW0tc3BhY2VzJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0naW50JykKQEAgLTk5Myw3ICs5MzAsNyBAQAogICAgIGRlZiBfY2xvc2Uoc2VsZik6CiAgICAgICAgIGlmIHNlbGYuaW8uZmlsZW5hbWU6CiAgICAgICAgICAgICBzZWxmLnVwZGF0ZV9yZWNlbnRfZmlsZXNfbGlzdChuZXdfZmlsZT1zZWxmLmlvLmZpbGVuYW1lKQotICAgICAgICBXaW5kb3dMaXN0LnVucmVnaXN0ZXJfY2FsbGJhY2soc2VsZi5wb3N0d2luZG93c21lbnUpCisgICAgICAgIHdpbmRvd3MudW5yZWdpc3Rlcl9jYWxsYmFjayhzZWxmLnBvc3R3aW5kb3dzbWVudSkKICAgICAgICAgc2VsZi51bmxvYWRfZXh0ZW5zaW9ucygpCiAgICAgICAgIHNlbGYuaW8uY2xvc2UoKQogICAgICAgICBzZWxmLmlvID0gTm9uZQpAQCAtMTAzMSwxMiArOTY4LDI1IEBACiAgICAgZGVmIGdldF9zdGFuZGFyZF9leHRlbnNpb25fbmFtZXMoc2VsZik6CiAgICAgICAgIHJldHVybiBpZGxlQ29uZi5HZXRFeHRlbnNpb25zKGVkaXRvcl9vbmx5PVRydWUpCiAKKyAgICBleHRmaWxlcyA9IHsgICMgbWFwIGNvbmZpZy1leHRlbnNpb24gc2VjdGlvbiBuYW1lcyB0byBuZXcgZmlsZSBuYW1lcworICAgICAgICAnQXV0b0NvbXBsZXRlJzogJ2F1dG9jb21wbGV0ZScsCisgICAgICAgICdBdXRvRXhwYW5kJzogJ2F1dG9leHBhbmQnLAorICAgICAgICAnQ2FsbFRpcHMnOiAnY2FsbHRpcHMnLAorICAgICAgICAnQ29kZUNvbnRleHQnOiAnY29kZWNvbnRleHQnLAorICAgICAgICAnRm9ybWF0UGFyYWdyYXBoJzogJ3BhcmFncmFwaCcsCisgICAgICAgICdQYXJlbk1hdGNoJzogJ3BhcmVubWF0Y2gnLAorICAgICAgICAnUnN0cmlwRXh0ZW5zaW9uJzogJ3JzdHJpcCcsCisgICAgICAgICdTY3JpcHRCaW5kaW5nJzogJ3J1bnNjcmlwdCcsCisgICAgICAgICdab29tSGVpZ2h0JzogJ3pvb21oZWlnaHQnLAorICAgICAgICB9CisKICAgICBkZWYgbG9hZF9leHRlbnNpb24oc2VsZiwgbmFtZSk6CisgICAgICAgIGZuYW1lID0gc2VsZi5leHRmaWxlcy5nZXQobmFtZSwgbmFtZSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG1vZCA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCcuJyArIG5hbWUsIHBhY2thZ2U9X19wYWNrYWdlX18pCisgICAgICAgICAgICAgICAgbW9kID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoJy4nICsgZm5hbWUsIHBhY2thZ2U9X19wYWNrYWdlX18pCiAgICAgICAgICAgICBleGNlcHQgKEltcG9ydEVycm9yLCBUeXBlRXJyb3IpOgotICAgICAgICAgICAgICAgIG1vZCA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKG5hbWUpCisgICAgICAgICAgICAgICAgbW9kID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoZm5hbWUpCiAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgICAgIHByaW50KCJcbkZhaWxlZCB0byBpbXBvcnQgZXh0ZW5zaW9uOiAiLCBuYW1lKQogICAgICAgICAgICAgcmFpc2UKQEAgLTEwNjAsNyArMTAxMCw3IEBACiAKICAgICBkZWYgYXBwbHlfYmluZGluZ3Moc2VsZiwga2V5ZGVmcz1Ob25lKToKICAgICAgICAgaWYga2V5ZGVmcyBpcyBOb25lOgotICAgICAgICAgICAga2V5ZGVmcyA9IHNlbGYuQmluZGluZ3MuZGVmYXVsdF9rZXlkZWZzCisgICAgICAgICAgICBrZXlkZWZzID0gc2VsZi5tYWlubWVudS5kZWZhdWx0X2tleWRlZnMKICAgICAgICAgdGV4dCA9IHNlbGYudGV4dAogICAgICAgICB0ZXh0LmtleWRlZnMgPSBrZXlkZWZzCiAgICAgICAgIGZvciBldmVudCwga2V5bGlzdCBpbiBrZXlkZWZzLml0ZW1zKCk6CkBAIC0xMDczLDkgKzEwMjMsOSBAQAogICAgICAgICBNZW51cyB0aGF0IGFyZSBhYnNlbnQgb3IgTm9uZSBpbiBzZWxmLm1lbnVkaWN0IGFyZSBpZ25vcmVkLgogICAgICAgICAiIiIKICAgICAgICAgaWYgbWVudWRlZnMgaXMgTm9uZToKLSAgICAgICAgICAgIG1lbnVkZWZzID0gc2VsZi5CaW5kaW5ncy5tZW51ZGVmcworICAgICAgICAgICAgbWVudWRlZnMgPSBzZWxmLm1haW5tZW51Lm1lbnVkZWZzCiAgICAgICAgIGlmIGtleWRlZnMgaXMgTm9uZToKLSAgICAgICAgICAgIGtleWRlZnMgPSBzZWxmLkJpbmRpbmdzLmRlZmF1bHRfa2V5ZGVmcworICAgICAgICAgICAga2V5ZGVmcyA9IHNlbGYubWFpbm1lbnUuZGVmYXVsdF9rZXlkZWZzCiAgICAgICAgIG1lbnVkaWN0ID0gc2VsZi5tZW51ZGljdAogICAgICAgICB0ZXh0ID0gc2VsZi50ZXh0CiAgICAgICAgIGZvciBtbmFtZSwgZW50cnlsaXN0IGluIG1lbnVkZWZzOgpAQCAtMTMwMiw3ICsxMjUyLDcgQEAKICAgICAgICAgICAgICMgYWRqdXN0IGluZGVudGF0aW9uIGZvciBjb250aW51YXRpb25zIGFuZCBibG9jawogICAgICAgICAgICAgIyBvcGVuL2Nsb3NlIGZpcnN0IG5lZWQgdG8gZmluZCB0aGUgbGFzdCBzdG10CiAgICAgICAgICAgICBsbm8gPSBpbmRleDJsaW5lKHRleHQuaW5kZXgoJ2luc2VydCcpKQotICAgICAgICAgICAgeSA9IFB5UGFyc2UuUGFyc2VyKHNlbGYuaW5kZW50d2lkdGgsIHNlbGYudGFid2lkdGgpCisgICAgICAgICAgICB5ID0gcHlwYXJzZS5QYXJzZXIoc2VsZi5pbmRlbnR3aWR0aCwgc2VsZi50YWJ3aWR0aCkKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLmNvbnRleHRfdXNlX3BzMToKICAgICAgICAgICAgICAgICBmb3IgY29udGV4dCBpbiBzZWxmLm51bV9jb250ZXh0X2xpbmVzOgogICAgICAgICAgICAgICAgICAgICBzdGFydGF0ID0gbWF4KGxubyAtIGNvbnRleHQsIDEpCkBAIC0xMzI2LDIyICsxMjc2LDIyIEBACiAgICAgICAgICAgICAgICAgeS5zZXRfbG8oMCkKIAogICAgICAgICAgICAgYyA9IHkuZ2V0X2NvbnRpbnVhdGlvbl90eXBlKCkKLSAgICAgICAgICAgIGlmIGMgIT0gUHlQYXJzZS5DX05PTkU6CisgICAgICAgICAgICBpZiBjICE9IHB5cGFyc2UuQ19OT05FOgogICAgICAgICAgICAgICAgICMgVGhlIGN1cnJlbnQgc3RtdCBoYXNuJ3QgZW5kZWQgeWV0LgotICAgICAgICAgICAgICAgIGlmIGMgPT0gUHlQYXJzZS5DX1NUUklOR19GSVJTVF9MSU5FOgorICAgICAgICAgICAgICAgIGlmIGMgPT0gcHlwYXJzZS5DX1NUUklOR19GSVJTVF9MSU5FOgogICAgICAgICAgICAgICAgICAgICAjIGFmdGVyIHRoZSBmaXJzdCBsaW5lIG9mIGEgc3RyaW5nOyBkbyBub3QgaW5kZW50IGF0IGFsbAogICAgICAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICAgICAgZWxpZiBjID09IFB5UGFyc2UuQ19TVFJJTkdfTkVYVF9MSU5FUzoKKyAgICAgICAgICAgICAgICBlbGlmIGMgPT0gcHlwYXJzZS5DX1NUUklOR19ORVhUX0xJTkVTOgogICAgICAgICAgICAgICAgICAgICAjIGluc2lkZSBhIHN0cmluZyB3aGljaCBzdGFydGVkIGJlZm9yZSB0aGlzIGxpbmU7CiAgICAgICAgICAgICAgICAgICAgICMganVzdCBtaW1pYyB0aGUgY3VycmVudCBpbmRlbnQKICAgICAgICAgICAgICAgICAgICAgdGV4dC5pbnNlcnQoImluc2VydCIsIGluZGVudCkKLSAgICAgICAgICAgICAgICBlbGlmIGMgPT0gUHlQYXJzZS5DX0JSQUNLRVQ6CisgICAgICAgICAgICAgICAgZWxpZiBjID09IHB5cGFyc2UuQ19CUkFDS0VUOgogICAgICAgICAgICAgICAgICAgICAjIGxpbmUgdXAgd2l0aCB0aGUgZmlyc3QgKGlmIGFueSkgZWxlbWVudCBvZiB0aGUKICAgICAgICAgICAgICAgICAgICAgIyBsYXN0IG9wZW4gYnJhY2tldCBzdHJ1Y3R1cmU7IGVsc2UgaW5kZW50IG9uZQogICAgICAgICAgICAgICAgICAgICAjIGxldmVsIGJleW9uZCB0aGUgaW5kZW50IG9mIHRoZSBsaW5lIHdpdGggdGhlCiAgICAgICAgICAgICAgICAgICAgICMgbGFzdCBvcGVuIGJyYWNrZXQKICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZWluZGVudF90byh5LmNvbXB1dGVfYnJhY2tldF9pbmRlbnQoKSkKLSAgICAgICAgICAgICAgICBlbGlmIGMgPT0gUHlQYXJzZS5DX0JBQ0tTTEFTSDoKKyAgICAgICAgICAgICAgICBlbGlmIGMgPT0gcHlwYXJzZS5DX0JBQ0tTTEFTSDoKICAgICAgICAgICAgICAgICAgICAgIyBpZiBtb3JlIHRoYW4gb25lIGxpbmUgaW4gdGhpcyBzdG10IGFscmVhZHksIGp1c3QKICAgICAgICAgICAgICAgICAgICAgIyBtaW1pYyB0aGUgY3VycmVudCBpbmRlbnQ7IGVsc2UgaWYgaW5pdGlhbCBsaW5lCiAgICAgICAgICAgICAgICAgICAgICMgaGFzIGEgc3RhcnQgb24gYW4gYXNzaWdubWVudCBzdG10LCBpbmRlbnQgdG8KQEAgLTE1NjksOSArMTUxOSw2IEBACiAgICAgICAgICAgICBicmVhawogICAgIHJldHVybiByYXcsIGVmZmVjdGl2ZQogCi1pbXBvcnQgdG9rZW5pemUKLV90b2tlbml6ZSA9IHRva2VuaXplCi1kZWwgdG9rZW5pemUKIAogY2xhc3MgSW5kZW50U2VhcmNoZXIob2JqZWN0KToKIApAQCAtMTU5Niw4ICsxNTQzLDggQEAKICAgICAgICAgcmV0dXJuIHNlbGYudGV4dC5nZXQobWFyaywgbWFyayArICIgbGluZWVuZCsxYyIpCiAKICAgICBkZWYgdG9rZW5lYXRlcihzZWxmLCB0eXBlLCB0b2tlbiwgc3RhcnQsIGVuZCwgbGluZSwKLSAgICAgICAgICAgICAgICAgICBJTkRFTlQ9X3Rva2VuaXplLklOREVOVCwKLSAgICAgICAgICAgICAgICAgICBOQU1FPV90b2tlbml6ZS5OQU1FLAorICAgICAgICAgICAgICAgICAgIElOREVOVD10b2tlbml6ZS5JTkRFTlQsCisgICAgICAgICAgICAgICAgICAgTkFNRT10b2tlbml6ZS5OQU1FLAogICAgICAgICAgICAgICAgICAgIE9QRU5FUlM9KCdjbGFzcycsICdkZWYnLCAnZm9yJywgJ2lmJywgJ3RyeScsICd3aGlsZScpKToKICAgICAgICAgaWYgc2VsZi5maW5pc2hlZDoKICAgICAgICAgICAgIHBhc3MKQEAgLTE2MDgsMTkgKzE1NTUsMTkgQEAKICAgICAgICAgICAgIHNlbGYuZmluaXNoZWQgPSAxCiAKICAgICBkZWYgcnVuKHNlbGYpOgotICAgICAgICBzYXZlX3RhYnNpemUgPSBfdG9rZW5pemUudGFic2l6ZQotICAgICAgICBfdG9rZW5pemUudGFic2l6ZSA9IHNlbGYudGFid2lkdGgKKyAgICAgICAgc2F2ZV90YWJzaXplID0gdG9rZW5pemUudGFic2l6ZQorICAgICAgICB0b2tlbml6ZS50YWJzaXplID0gc2VsZi50YWJ3aWR0aAogICAgICAgICB0cnk6CiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgdG9rZW5zID0gX3Rva2VuaXplLmdlbmVyYXRlX3Rva2VucyhzZWxmLnJlYWRsaW5lKQorICAgICAgICAgICAgICAgIHRva2VucyA9IHRva2VuaXplLmdlbmVyYXRlX3Rva2VucyhzZWxmLnJlYWRsaW5lKQogICAgICAgICAgICAgICAgIGZvciB0b2tlbiBpbiB0b2tlbnM6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYudG9rZW5lYXRlcigqdG9rZW4pCi0gICAgICAgICAgICBleGNlcHQgKF90b2tlbml6ZS5Ub2tlbkVycm9yLCBTeW50YXhFcnJvcik6CisgICAgICAgICAgICBleGNlcHQgKHRva2VuaXplLlRva2VuRXJyb3IsIFN5bnRheEVycm9yKToKICAgICAgICAgICAgICAgICAjIHNpbmNlIHdlIGN1dCBvZmYgdGhlIHRva2VuaXplciBlYXJseSwgd2UgY2FuIHRyaWdnZXIKICAgICAgICAgICAgICAgICAjIHNwdXJpb3VzIGVycm9ycwogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIF90b2tlbml6ZS50YWJzaXplID0gc2F2ZV90YWJzaXplCisgICAgICAgICAgICB0b2tlbml6ZS50YWJzaXplID0gc2F2ZV90YWJzaXplCiAgICAgICAgIHJldHVybiBzZWxmLmJsa29wZW5saW5lLCBzZWxmLmluZGVudGVkbGluZQogCiAjIyMgZW5kIGF1dG9pbmRlbnQgY29kZSAjIyMKQEAgLTE2NDQsNyArMTU5MSw3IEBACiAgICAga2V5bGlzdCA9IGtleWRlZnMuZ2V0KGV2ZW50bmFtZSkKICAgICAjIGlzc3VlMTA5NDA6IHRlbXBvcmFyeSB3b3JrYXJvdW5kIHRvIHByZXZlbnQgaGFuZyB3aXRoIE9TIFggQ29jb2EgVGsgOC41CiAgICAgIyBpZiBub3Qga2V5bGlzdDoKLSAgICBpZiAobm90IGtleWxpc3QpIG9yIChtYWNvc3hTdXBwb3J0LmlzQ29jb2FUaygpIGFuZCBldmVudG5hbWUgaW4geworICAgIGlmIChub3Qga2V5bGlzdCkgb3IgKG1hY29zeC5pc0NvY29hVGsoKSBhbmQgZXZlbnRuYW1lIGluIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPDxvcGVuLW1vZHVsZT4+IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPDxnb3RvLWxpbmU+PiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjw8Y2hhbmdlLWluZGVudHdpZHRoPj4ifSk6CkBAIC0xNjc5LDEyICsxNjI2LDE1IEBACiAgICAgICAgIGZpbGVuYW1lID0gc3lzLmFyZ3ZbMV0KICAgICBlbHNlOgogICAgICAgICBmaWxlbmFtZSA9IE5vbmUKLSAgICBtYWNvc3hTdXBwb3J0LnNldHVwQXBwKHJvb3QsIE5vbmUpCisgICAgbWFjb3N4LnNldHVwQXBwKHJvb3QsIE5vbmUpCiAgICAgZWRpdCA9IEVkaXRvcldpbmRvdyhyb290PXJvb3QsIGZpbGVuYW1lPWZpbGVuYW1lKQogICAgIGVkaXQudGV4dC5iaW5kKCI8PGNsb3NlLWFsbC13aW5kb3dzPj4iLCBlZGl0LmNsb3NlX2V2ZW50KQogICAgICMgRG9lcyBub3Qgc3RvcCBlcnJvciwgbmVpdGhlciBkb2VzIGZvbGxvd2luZwogICAgICMgZWRpdC50ZXh0LmJpbmQoIjw8Y2xvc2Utd2luZG93Pj4iLCBlZGl0LmNsb3NlX2V2ZW50KQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIGltcG9ydCB1bml0dGVzdAorICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3RfZWRpdG9yJywgdmVyYm9zaXR5PTIsIGV4aXQ9RmFsc2UpCisKICAgICBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lmh0ZXN0IGltcG9ydCBydW4KICAgICBydW4oX2VkaXRvcl93aW5kb3cpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9GaWxlTGlzdC5weSBiL0xpYi9pZGxlbGliL2ZpbGVsaXN0LnB5CnNpbWlsYXJpdHkgaW5kZXggOTclCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL0ZpbGVMaXN0LnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9maWxlbGlzdC5weQppbmRleCBhOTk4OWE4Li5mNDZhZDdjIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9GaWxlTGlzdC5weQorKysgYi9MaWIvaWRsZWxpYi9maWxlbGlzdC5weQpAQCAtMSw0ICsxLDUgQEAKIGltcG9ydCBvcworCiBmcm9tIHRraW50ZXIgaW1wb3J0ICoKIGltcG9ydCB0a2ludGVyLm1lc3NhZ2Vib3ggYXMgdGtNZXNzYWdlQm94CiAKQEAgLTYsNyArNyw3IEBACiBjbGFzcyBGaWxlTGlzdDoKIAogICAgICMgTi5CLiB0aGlzIGltcG9ydCBvdmVycmlkZGVuIGluIFB5U2hlbGxGaWxlTGlzdC4KLSAgICBmcm9tIGlkbGVsaWIuRWRpdG9yV2luZG93IGltcG9ydCBFZGl0b3JXaW5kb3cKKyAgICBmcm9tIGlkbGVsaWIuZWRpdG9yIGltcG9ydCBFZGl0b3JXaW5kb3cKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCByb290KToKICAgICAgICAgc2VsZi5yb290ID0gcm9vdApAQCAtMTExLDcgKzExMiw3IEBACiAKIAogZGVmIF90ZXN0KCk6Ci0gICAgZnJvbSBpZGxlbGliLkVkaXRvcldpbmRvdyBpbXBvcnQgZml4d29yZGJyZWFrcworICAgIGZyb20gaWRsZWxpYi5lZGl0b3IgaW1wb3J0IGZpeHdvcmRicmVha3MKICAgICBpbXBvcnQgc3lzCiAgICAgcm9vdCA9IFRrKCkKICAgICBmaXh3b3JkYnJlYWtzKHJvb3QpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9HcmVwRGlhbG9nLnB5IGIvTGliL2lkbGVsaWIvZ3JlcC5weQpzaW1pbGFyaXR5IGluZGV4IDgyJQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9HcmVwRGlhbG9nLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9ncmVwLnB5CmluZGV4IDcyMWIyMzEuLjY0YmEyOGQgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0dyZXBEaWFsb2cucHkKKysrIGIvTGliL2lkbGVsaWIvZ3JlcC5weQpAQCAtMSwxNyArMSwxOSBAQAotaW1wb3J0IG9zCiBpbXBvcnQgZm5tYXRjaAotaW1wb3J0IHJlICAjIGZvciBodGVzdAoraW1wb3J0IG9zCiBpbXBvcnQgc3lzCi1mcm9tIHRraW50ZXIgaW1wb3J0IFN0cmluZ1ZhciwgQm9vbGVhblZhciwgQ2hlY2tidXR0b24gICMgZm9yIEdyZXBEaWFsb2cKLWZyb20gdGtpbnRlciBpbXBvcnQgVGssIFRleHQsIEJ1dHRvbiwgU0VMLCBFTkQgICMgZm9yIGh0ZXN0Ci1mcm9tIGlkbGVsaWIgaW1wb3J0IFNlYXJjaEVuZ2luZQotZnJvbSBpZGxlbGliLlNlYXJjaERpYWxvZ0Jhc2UgaW1wb3J0IFNlYXJjaERpYWxvZ0Jhc2UKLSMgSW1wb3J0aW5nIE91dHB1dFdpbmRvdyBmYWlscyBkdWUgdG8gaW1wb3J0IGxvb3AKKworZnJvbSB0a2ludGVyIGltcG9ydCBTdHJpbmdWYXIsIEJvb2xlYW5WYXIKK2Zyb20gdGtpbnRlci50dGsgaW1wb3J0IENoZWNrYnV0dG9uCisKK2Zyb20gaWRsZWxpYi5zZWFyY2hiYXNlIGltcG9ydCBTZWFyY2hEaWFsb2dCYXNlCitmcm9tIGlkbGVsaWIgaW1wb3J0IHNlYXJjaGVuZ2luZQorCisjIEltcG9ydGluZyBPdXRwdXRXaW5kb3cgaGVyZSBmYWlscyBkdWUgdG8gaW1wb3J0IGxvb3AKICMgRWRpdG9yV2luZG93IC0+IEdyZXBEaWFsb3AgLT4gT3V0cHV0V2luZG93IC0+IEVkaXRvcldpbmRvdwogCiBkZWYgZ3JlcCh0ZXh0LCBpbz1Ob25lLCBmbGlzdD1Ob25lKToKICAgICByb290ID0gdGV4dC5fcm9vdCgpCi0gICAgZW5naW5lID0gU2VhcmNoRW5naW5lLmdldChyb290KQorICAgIGVuZ2luZSA9IHNlYXJjaGVuZ2luZS5nZXQocm9vdCkKICAgICBpZiBub3QgaGFzYXR0cihlbmdpbmUsICJfZ3JlcGRpYWxvZyIpOgogICAgICAgICBlbmdpbmUuX2dyZXBkaWFsb2cgPSBHcmVwRGlhbG9nKHJvb3QsIGVuZ2luZSwgZmxpc3QpCiAgICAgZGlhbG9nID0gZW5naW5lLl9ncmVwZGlhbG9nCkBAIC00NywxMyArNDksMTAgQEAKICAgICAgICAgc2VsZi5nbG9iZW50ID0gc2VsZi5tYWtlX2VudHJ5KCJJbiBmaWxlczoiLCBzZWxmLmdsb2J2YXIpWzBdCiAKICAgICBkZWYgY3JlYXRlX290aGVyX2J1dHRvbnMoc2VsZik6Ci0gICAgICAgIGYgPSBzZWxmLm1ha2VfZnJhbWUoKVswXQotCi0gICAgICAgIGJ0biA9IENoZWNrYnV0dG9uKGYsIGFuY2hvcj0idyIsCi0gICAgICAgICAgICAgICAgdmFyaWFibGU9c2VsZi5yZWN2YXIsCisgICAgICAgIGJ0biA9IENoZWNrYnV0dG9uKAorICAgICAgICAgICAgICAgIHNlbGYubWFrZV9mcmFtZSgpWzBdLCB2YXJpYWJsZT1zZWxmLnJlY3ZhciwKICAgICAgICAgICAgICAgICB0ZXh0PSJSZWN1cnNlIGRvd24gc3ViZGlyZWN0b3JpZXMiKQogICAgICAgICBidG4ucGFjayhzaWRlPSJ0b3AiLCBmaWxsPSJib3RoIikKLSAgICAgICAgYnRuLnNlbGVjdCgpCiAKICAgICBkZWYgY3JlYXRlX2NvbW1hbmRfYnV0dG9ucyhzZWxmKToKICAgICAgICAgU2VhcmNoRGlhbG9nQmFzZS5jcmVhdGVfY29tbWFuZF9idXR0b25zKHNlbGYpCkBAIC02Nyw3ICs2Niw3IEBACiAgICAgICAgIGlmIG5vdCBwYXRoOgogICAgICAgICAgICAgc2VsZi50b3AuYmVsbCgpCiAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgZnJvbSBpZGxlbGliLk91dHB1dFdpbmRvdyBpbXBvcnQgT3V0cHV0V2luZG93ICAjIGxlYXZlIGhlcmUhCisgICAgICAgIGZyb20gaWRsZWxpYi5vdXR3aW4gaW1wb3J0IE91dHB1dFdpbmRvdyAgIyBsZWF2ZSBoZXJlIQogICAgICAgICBzYXZlID0gc3lzLnN0ZG91dAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzeXMuc3Rkb3V0ID0gT3V0cHV0V2luZG93KHNlbGYuZmxpc3QpCkBAIC0xMzEsMTQgKzEzMCwxNiBAQAogCiAKIGRlZiBfZ3JlcF9kaWFsb2cocGFyZW50KTogICMgaHRlc3QgIwotICAgIGZyb20gaWRsZWxpYi5QeVNoZWxsIGltcG9ydCBQeVNoZWxsRmlsZUxpc3QKLSAgICByb290ID0gVGsoKQotICAgIHJvb3QudGl0bGUoIlRlc3QgR3JlcERpYWxvZyIpCi0gICAgd2lkdGgsIGhlaWdodCwgeCwgeSA9IGxpc3QobWFwKGludCwgcmUuc3BsaXQoJ1t4K10nLCBwYXJlbnQuZ2VvbWV0cnkoKSkpKQotICAgIHJvb3QuZ2VvbWV0cnkoIislZCslZCIlKHgsIHkgKyAxNTApKQorICAgIGZyb20gdGtpbnRlciBpbXBvcnQgVG9wbGV2ZWwsIFRleHQsIFNFTCwgRU5ECisgICAgZnJvbSB0a2ludGVyLnR0ayBpbXBvcnQgQnV0dG9uCisgICAgZnJvbSBpZGxlbGliLnB5c2hlbGwgaW1wb3J0IFB5U2hlbGxGaWxlTGlzdAorICAgIHRvcCA9IFRvcGxldmVsKHBhcmVudCkKKyAgICB0b3AudGl0bGUoIlRlc3QgR3JlcERpYWxvZyIpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIHRvcC5nZW9tZXRyeSgiKyVkKyVkIiAlICh4LCB5ICsgMTc1KSkKIAotICAgIGZsaXN0ID0gUHlTaGVsbEZpbGVMaXN0KHJvb3QpCi0gICAgdGV4dCA9IFRleHQocm9vdCwgaGVpZ2h0PTUpCisgICAgZmxpc3QgPSBQeVNoZWxsRmlsZUxpc3QodG9wKQorICAgIHRleHQgPSBUZXh0KHRvcCwgaGVpZ2h0PTUpCiAgICAgdGV4dC5wYWNrKCkKIAogICAgIGRlZiBzaG93X2dyZXBfZGlhbG9nKCk6CkBAIC0xNDYsOSArMTQ3LDggQEAKICAgICAgICAgZ3JlcCh0ZXh0LCBmbGlzdD1mbGlzdCkKICAgICAgICAgdGV4dC50YWdfcmVtb3ZlKFNFTCwgIjEuMCIsIEVORCkKIAotICAgIGJ1dHRvbiA9IEJ1dHRvbihyb290LCB0ZXh0PSJTaG93IEdyZXBEaWFsb2ciLCBjb21tYW5kPXNob3dfZ3JlcF9kaWFsb2cpCisgICAgYnV0dG9uID0gQnV0dG9uKHRvcCwgdGV4dD0iU2hvdyBHcmVwRGlhbG9nIiwgY29tbWFuZD1zaG93X2dyZXBfZGlhbG9nKQogICAgIGJ1dHRvbi5wYWNrKCkKLSAgICByb290Lm1haW5sb29wKCkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICBpbXBvcnQgdW5pdHRlc3QKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2hlbHAucHkgYi9MaWIvaWRsZWxpYi9oZWxwLnB5CmluZGV4IGE3MDA4ZTkuLjc3ZTAxYTMgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2hlbHAucHkKKysrIGIvTGliL2lkbGVsaWIvaGVscC5weQpAQCAtNCw3ICs0LDcgQEAKIAogSGVscCA9PiBBYm91dCBJRExFOiBkaXBsYXkgQWJvdXQgSWRsZSBkaWFsb2cKIAotPHRvIGJlIG1vdmVkIGhlcmUgZnJvbSBhYm91dERpYWxvZy5weT4KKzx0byBiZSBtb3ZlZCBoZXJlIGZyb20gaGVscF9hYm91dC5weT4KIAogCiBIZWxwID0+IElETEUgSGVscDogRGlzcGxheSBoZWxwLmh0bWwgd2l0aCBwcm9wZXIgZm9ybWF0dGluZy4KQEAgLTI1LDE1ICsyNSwxNCBAQAogc2hvd19pZGxlaGVscCAtIENyZWF0ZSBIZWxwV2luZG93LiAgQ2FsbGVkIGluIEVkaXRvcldpbmRvdy5oZWxwX2RpYWxvZy4KICIiIgogZnJvbSBodG1sLnBhcnNlciBpbXBvcnQgSFRNTFBhcnNlcgotZnJvbSBvcy5wYXRoIGltcG9ydCBhYnNwYXRoLCBkaXJuYW1lLCBpc2RpciwgaXNmaWxlLCBqb2luCitmcm9tIG9zLnBhdGggaW1wb3J0IGFic3BhdGgsIGRpcm5hbWUsIGlzZmlsZSwgam9pbgogZnJvbSBwbGF0Zm9ybSBpbXBvcnQgcHl0aG9uX3ZlcnNpb24KLWZyb20gdGtpbnRlciBpbXBvcnQgVGssIFRvcGxldmVsLCBGcmFtZSwgVGV4dCwgU2Nyb2xsYmFyLCBNZW51LCBNZW51YnV0dG9uCi1mcm9tIHRraW50ZXIgaW1wb3J0IGZvbnQgYXMgdGtmb250Ci1mcm9tIGlkbGVsaWIuY29uZmlnSGFuZGxlciBpbXBvcnQgaWRsZUNvbmYKIAotdXNlX3R0ayA9IEZhbHNlICMgdW50aWwgYXZhaWxhYmxlIHRvIGltcG9ydAotaWYgdXNlX3R0azoKLSAgICBmcm9tIHRraW50ZXIudHRrIGltcG9ydCBNZW51YnV0dG9uCitmcm9tIHRraW50ZXIgaW1wb3J0IFRvcGxldmVsLCBGcmFtZSwgVGV4dCwgTWVudQorZnJvbSB0a2ludGVyLnR0ayBpbXBvcnQgTWVudWJ1dHRvbiwgU2Nyb2xsYmFyCitmcm9tIHRraW50ZXIgaW1wb3J0IGZvbnQgYXMgdGtmb250CisKK2Zyb20gaWRsZWxpYi5jb25maWcgaW1wb3J0IGlkbGVDb25mCiAKICMjIEFib3V0IElETEUgIyMKIApAQCAtMTk3LDE1ICsxOTYsMTggQEAKICAgICAiRGlzcGxheSBodG1sIHRleHQsIHNjcm9sbGJhciwgYW5kIHRvYy4iCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCwgZmlsZW5hbWUpOgogICAgICAgICBGcmFtZS5fX2luaXRfXyhzZWxmLCBwYXJlbnQpCi0gICAgICAgIHRleHQgPSBIZWxwVGV4dChzZWxmLCBmaWxlbmFtZSkKKyAgICAgICAgIyBrZWVwIHJlZmVyZW5jZXMgdG8gd2lkZ2V0cyBmb3IgdGVzdCBhY2Nlc3MuCisgICAgICAgIHNlbGYudGV4dCA9IHRleHQgPSBIZWxwVGV4dChzZWxmLCBmaWxlbmFtZSkKICAgICAgICAgc2VsZlsnYmFja2dyb3VuZCddID0gdGV4dFsnYmFja2dyb3VuZCddCi0gICAgICAgIHNjcm9sbCA9IFNjcm9sbGJhcihzZWxmLCBjb21tYW5kPXRleHQueXZpZXcpCisgICAgICAgIHNlbGYudG9jID0gdG9jID0gc2VsZi50b2NfbWVudSh0ZXh0KQorICAgICAgICBzZWxmLnNjcm9sbCA9IHNjcm9sbCA9IFNjcm9sbGJhcihzZWxmLCBjb21tYW5kPXRleHQueXZpZXcpCiAgICAgICAgIHRleHRbJ3lzY3JvbGxjb21tYW5kJ10gPSBzY3JvbGwuc2V0CisKICAgICAgICAgc2VsZi5yb3djb25maWd1cmUoMCwgd2VpZ2h0PTEpCiAgICAgICAgIHNlbGYuY29sdW1uY29uZmlndXJlKDEsIHdlaWdodD0xKSAgIyB0ZXh0Ci0gICAgICAgIHNlbGYudG9jX21lbnUodGV4dCkuZ3JpZChjb2x1bW49MCwgcm93PTAsIHN0aWNreT0nbncnKQotICAgICAgICB0ZXh0LmdyaWQoY29sdW1uPTEsIHJvdz0wLCBzdGlja3k9J25zZXcnKQotICAgICAgICBzY3JvbGwuZ3JpZChjb2x1bW49Miwgcm93PTAsIHN0aWNreT0nbnMnKQorICAgICAgICB0b2MuZ3JpZChyb3c9MCwgY29sdW1uPTAsIHN0aWNreT0nbncnKQorICAgICAgICB0ZXh0LmdyaWQocm93PTAsIGNvbHVtbj0xLCBzdGlja3k9J25zZXcnKQorICAgICAgICBzY3JvbGwuZ3JpZChyb3c9MCwgY29sdW1uPTIsIHN0aWNreT0nbnMnKQogCiAgICAgZGVmIHRvY19tZW51KHNlbGYsIHRleHQpOgogICAgICAgICAiQ3JlYXRlIHRhYmxlIG9mIGNvbnRlbnRzIGFzIGRyb3AtZG93biBtZW51LiIKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2hlbHAudHh0IGIvTGliL2lkbGVsaWIvaGVscC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5ZmJlMGIuLjAwMDAwMDAKLS0tIGEvTGliL2lkbGVsaWIvaGVscC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzNzIgKzAsMCBAQAotVGhpcyBmaWxlLCBpZGxlbGliL2hlbHAudHh0IGlzIG91dC1vZi1kYXRlIGFuZCBubyBsb25nZXIgdXNlZCBieSBJZGxlLgotSXQgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUsIHBvc3NpYmx5IGluIDMuNgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1bU2VlIHRoZSBlbmQgb2YgdGhpcyBmaWxlIGZvciAqKiBUSVBTICoqIG9uIHVzaW5nIElETEUgISFdCi0KLUlETEUgaXMgdGhlIFB5dGhvbiBJREUgYnVpbHQgd2l0aCB0aGUgdGtpbnRlciBHVUkgdG9vbGtpdC4KLQotSURMRSBoYXMgdGhlIGZvbGxvd2luZyBmZWF0dXJlczoKLS1jb2RlZCBpbiAxMDAlIHB1cmUgUHl0aG9uLCB1c2luZyB0aGUgdGtpbnRlciBHVUkgdG9vbGtpdAotLWNyb3NzLXBsYXRmb3JtOiB3b3JrcyBvbiBXaW5kb3dzLCBVbml4LCBhbmQgT1MgWAotLW11bHRpLXdpbmRvdyB0ZXh0IGVkaXRvciB3aXRoIG11bHRpcGxlIHVuZG8sIFB5dGhvbiBjb2xvcml6aW5nLCBzbWFydCBpbmRlbnQsCi1jYWxsIHRpcHMsIGFuZCBtYW55IG90aGVyIGZlYXR1cmVzCi0tUHl0aG9uIHNoZWxsIHdpbmRvdyAoYS5rLmEgaW50ZXJhY3RpdmUgaW50ZXJwcmV0ZXIpCi0tZGVidWdnZXIgKG5vdCBjb21wbGV0ZSwgYnV0IHlvdSBjYW4gc2V0IGJyZWFrcG9pbnRzLCB2aWV3IGFuZCBzdGVwKQotCi1NZW51czoKLQotSURMRSBoYXMgdHdvIHdpbmRvdyB0eXBlcyB0aGUgU2hlbGwgd2luZG93IGFuZCB0aGUgRWRpdG9yIHdpbmRvdy4gSXQgaXMKLXBvc3NpYmxlIHRvIGhhdmUgbXVsdGlwbGUgZWRpdG9yIHdpbmRvd3Mgc2ltdWx0YW5lb3VzbHkuIElETEUncwotbWVudXMgZHluYW1pY2FsbHkgY2hhbmdlIGJhc2VkIG9uIHdoaWNoIHdpbmRvdyBpcyBjdXJyZW50bHkgc2VsZWN0ZWQuIEVhY2ggbWVudQotZG9jdW1lbnRlZCBiZWxvdyBpbmRpY2F0ZXMgd2hpY2ggd2luZG93IHR5cGUgaXQgaXMgYXNzb2NpYXRlZCB3aXRoLiAKLQotRmlsZSBNZW51IChTaGVsbCBhbmQgRWRpdG9yKToKLQotICAgICAgICBOZXcgRmlsZSAgICAgICAgIC0tIENyZWF0ZSBhIG5ldyBmaWxlIGVkaXRpbmcgd2luZG93Ci0gICAgICAgIE9wZW4uLi4gICAgICAgICAgLS0gT3BlbiBhbiBleGlzdGluZyBmaWxlCi0gICAgICAgIE9wZW4gTW9kdWxlLi4uICAgLS0gT3BlbiBhbiBleGlzdGluZyBtb2R1bGUgKHNlYXJjaGVzIHN5cy5wYXRoKQotICAgICAgICBSZWNlbnQgRmlsZXMuLi4gIC0tIE9wZW4gYSBsaXN0IG9mIHJlY2VudCBmaWxlcwotICAgICAgICBDbGFzcyBCcm93c2VyICAgIC0tIFNob3cgY2xhc3NlcyBhbmQgbWV0aG9kcyBpbiBjdXJyZW50IGZpbGUKLSAgICAgICAgUGF0aCBCcm93c2VyICAgICAtLSBTaG93IHN5cy5wYXRoIGRpcmVjdG9yaWVzLCBtb2R1bGVzLCBjbGFzc2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBtZXRob2RzCi0gICAgICAgIC0tLQotICAgICAgICBTYXZlICAgICAgICAgICAgIC0tIFNhdmUgY3VycmVudCB3aW5kb3cgdG8gdGhlIGFzc29jaWF0ZWQgZmlsZSAodW5zYXZlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd3MgaGF2ZSBhICogYmVmb3JlIGFuZCBhZnRlciB0aGUgd2luZG93IHRpdGxlKQotCi0gICAgICAgIFNhdmUgQXMuLi4gICAgICAgLS0gU2F2ZSBjdXJyZW50IHdpbmRvdyB0byBuZXcgZmlsZSwgd2hpY2ggYmVjb21lcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBhc3NvY2lhdGVkIGZpbGUKLSAgICAgICAgU2F2ZSBDb3B5IEFzLi4uICAtLSBTYXZlIGN1cnJlbnQgd2luZG93IHRvIGRpZmZlcmVudCBmaWxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aG91dCBjaGFuZ2luZyB0aGUgYXNzb2NpYXRlZCBmaWxlCi0gICAgICAgIC0tLQotICAgICAgICBQcmludCBXaW5kb3cgICAgIC0tIFByaW50IHRoZSBjdXJyZW50IHdpbmRvdwotICAgICAgICAtLS0KLSAgICAgICAgQ2xvc2UgICAgICAgICAgICAtLSBDbG9zZSBjdXJyZW50IHdpbmRvdyAoYXNrcyB0byBzYXZlIGlmIHVuc2F2ZWQpCi0gICAgICAgIEV4aXQgICAgICAgICAgICAgLS0gQ2xvc2UgYWxsIHdpbmRvd3MsIHF1aXQgKGFza3MgdG8gc2F2ZSBpZiB1bnNhdmVkKQotCi1FZGl0IE1lbnUgKFNoZWxsIGFuZCBFZGl0b3IpOgotCi0gICAgICAgIFVuZG8gICAgICAgICAgICAgLS0gVW5kbyBsYXN0IGNoYW5nZSB0byBjdXJyZW50IHdpbmRvdwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhIG1heGltdW0gb2YgMTAwMCBjaGFuZ2VzIG1heSBiZSB1bmRvbmUpCi0gICAgICAgIFJlZG8gICAgICAgICAgICAgLS0gUmVkbyBsYXN0IHVuZG9uZSBjaGFuZ2UgdG8gY3VycmVudCB3aW5kb3cKLSAgICAgICAgLS0tCi0gICAgICAgIEN1dCAgICAgICAgICAgICAgLS0gQ29weSBhIHNlbGVjdGlvbiBpbnRvIHN5c3RlbS13aWRlIGNsaXBib2FyZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuIGRlbGV0ZSB0aGUgc2VsZWN0aW9uCi0gICAgICAgIENvcHkgICAgICAgICAgICAgLS0gQ29weSBzZWxlY3Rpb24gaW50byBzeXN0ZW0td2lkZSBjbGlwYm9hcmQKLSAgICAgICAgUGFzdGUgICAgICAgICAgICAtLSBJbnNlcnQgc3lzdGVtLXdpZGUgY2xpcGJvYXJkIGludG8gd2luZG93Ci0gICAgICAgIFNlbGVjdCBBbGwgICAgICAgLS0gU2VsZWN0IHRoZSBlbnRpcmUgY29udGVudHMgb2YgdGhlIGVkaXQgYnVmZmVyCi0gICAgICAgIC0tLQotICAgICAgICBGaW5kLi4uICAgICAgICAgIC0tIE9wZW4gYSBzZWFyY2ggZGlhbG9nIGJveCB3aXRoIG1hbnkgb3B0aW9ucwotICAgICAgICBGaW5kIEFnYWluICAgICAgIC0tIFJlcGVhdCBsYXN0IHNlYXJjaAotICAgICAgICBGaW5kIFNlbGVjdGlvbiAgIC0tIFNlYXJjaCBmb3IgdGhlIHN0cmluZyBpbiB0aGUgc2VsZWN0aW9uCi0gICAgICAgIEZpbmQgaW4gRmlsZXMuLi4gLS0gT3BlbiBhIHNlYXJjaCBkaWFsb2cgYm94IGZvciBzZWFyY2hpbmcgZmlsZXMKLSAgICAgICAgUmVwbGFjZS4uLiAgICAgICAtLSBPcGVuIGEgc2VhcmNoLWFuZC1yZXBsYWNlIGRpYWxvZyBib3gKLSAgICAgICAgR28gdG8gTGluZSAgICAgICAtLSBBc2sgZm9yIGEgbGluZSBudW1iZXIgYW5kIHNob3cgdGhhdCBsaW5lCi0gICAgICAgIEV4cGFuZCBXb3JkICAgICAgLS0gRXhwYW5kIHRoZSB3b3JkIHlvdSBoYXZlIHR5cGVkIHRvIG1hdGNoIGFub3RoZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JkIGluIHRoZSBzYW1lIGJ1ZmZlcjsgcmVwZWF0IHRvIGdldCBhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlmZmVyZW50IGV4cGFuc2lvbgotICAgICAgICBTaG93IENhbGx0aXAgICAgIC0tIEFmdGVyIGFuIHVuY2xvc2VkIHBhcmVudGhlc2lzIGZvciBhIGZ1bmN0aW9uLCBvcGVuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYSBzbWFsbCB3aW5kb3cgd2l0aCBmdW5jdGlvbiBwYXJhbWV0ZXIgaGludHMKLSAgICAgICAgU2hvdyBQYXJlbnMgICAgICAtLSBIaWdobGlnaHQgdGhlIHN1cnJvdW5kaW5nIHBhcmVudGhlc2lzCi0gICAgICAgIFNob3cgQ29tcGxldGlvbnMgLS0gT3BlbiBhIHNjcm9sbCB3aW5kb3cgYWxsb3dpbmcgc2VsZWN0aW9uIGtleXdvcmRzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGF0dHJpYnV0ZXMuIChzZWUgJypUSVBTKicsIGJlbG93KQotCi1Gb3JtYXQgTWVudSAoRWRpdG9yIHdpbmRvdyBvbmx5KToKLQotICAgICAgICBJbmRlbnQgUmVnaW9uICAgICAgIC0tIFNoaWZ0IHNlbGVjdGVkIGxpbmVzIHJpZ2h0IGJ5IHRoZSBpbmRlbnQgd2lkdGgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVmYXVsdCA0IHNwYWNlcykKLSAgICAgICAgRGVkZW50IFJlZ2lvbiAgICAgICAtLSBTaGlmdCBzZWxlY3RlZCBsaW5lcyBsZWZ0IGJ5IHRoZSBpbmRlbnQgd2lkdGgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVmYXVsdCA0IHNwYWNlcykKLSAgICAgICAgQ29tbWVudCBPdXQgUmVnaW9uICAtLSBJbnNlcnQgIyMgaW4gZnJvbnQgb2Ygc2VsZWN0ZWQgbGluZXMKLSAgICAgICAgVW5jb21tZW50IFJlZ2lvbiAgICAtLSBSZW1vdmUgbGVhZGluZyAjIG9yICMjIGZyb20gc2VsZWN0ZWQgbGluZXMKLSAgICAgICAgVGFiaWZ5IFJlZ2lvbiAgICAgICAtLSBUdXJucyAqbGVhZGluZyogc3RyZXRjaGVzIG9mIHNwYWNlcyBpbnRvIHRhYnMuCi0gICAgICAgICAgICAgICAgKE5vdGU6IFdlIHJlY29tbWVuZCB1c2luZyA0IHNwYWNlIGJsb2NrcyB0byBpbmRlbnQgUHl0aG9uIGNvZGUuKQotICAgICAgICBVbnRhYmlmeSBSZWdpb24gICAgIC0tIFR1cm4gKmFsbCogdGFicyBpbnRvIHRoZSBjb3JyZW50IG51bWJlciBvZiBzcGFjZXMKLSAgICAgICAgVG9nZ2xlIHRhYnMgICAgICAgICAtLSBPcGVuIGEgZGlhbG9nIHRvIHN3aXRjaCBiZXR3ZWVuIGluZGVudGluZyB3aXRoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BhY2VzIGFuZCB0YWJzLgotICAgICAgICBOZXcgSW5kZW50IFdpZHRoLi4uIC0tIE9wZW4gYSBkaWFsb2cgdG8gY2hhbmdlIGluZGVudCB3aWR0aC4gIFRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2VwdGVkIGRlZmF1bHQgYnkgdGhlIFB5dGhvbiBjb21tdW5pdHkgaXMgNAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwYWNlcy4KLSAgICAgICAgRm9ybWF0IFBhcmFncmFwaCAgICAtLSBSZWZvcm1hdCB0aGUgY3VycmVudCBibGFuay1saW5lLXNlcGFyYXRlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFncmFwaC4gQWxsIGxpbmVzIGluIHRoZSBwYXJhZ3JhcGggd2lsbCBiZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlZCB0byBsZXNzIHRoYW4gODAgY29sdW1ucy4KLSAgICAgICAgLS0tCi0gICAgICAgIFN0cmlwIHRyYWlsaW5nIHdoaXRlc3BhY2UgLS0gUmVtb3ZlZCBhbnkgc3BhY2UgY2hhcmFjdGVycyBhZnRlciB0aGUgZW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIGxhc3Qgbm9uLXNwYWNlIGNoYXJhY3RlcgotCi1SdW4gTWVudSAoRWRpdG9yIHdpbmRvdyBvbmx5KToKLQotICAgICAgICBQeXRob24gU2hlbGwgLS0gT3BlbiBvciB3YWtlIHVwIHRoZSBQeXRob24gc2hlbGwgd2luZG93Ci0gICAgICAgIC0tLQotICAgICAgICBDaGVjayBNb2R1bGUgLS0gQ2hlY2sgdGhlIHN5bnRheCBvZiB0aGUgbW9kdWxlIGN1cnJlbnRseSBvcGVuIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgRWRpdG9yIHdpbmRvdy4gIElmIHRoZSBtb2R1bGUgaGFzIG5vdCBiZWVuIHNhdmVkIElETEUKLSAgICAgICAgICAgICAgICAgICAgICAgIHdpbGwgcHJvbXB0IHRoZSB1c2VyIHRvIHNhdmUgdGhlIGNvZGUuCi0gICAgICAgIFJ1biBNb2R1bGUgICAtLSBSZXN0YXJ0IHRoZSBzaGVsbCB0byBjbGVhbiB0aGUgZW52aXJvbm1lbnQsIHRoZW4KLSAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGUgdGhlIGN1cnJlbnRseSBvcGVuIG1vZHVsZS4gSWYgdGhlIG1vZHVsZSBoYXMKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBiZWVuIHNhdmVkIElETEUgd2lsbCBwcm9tcHQgdGhlIHVzZXIgdG8gc2F2ZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUuCi0KLVNoZWxsIE1lbnUgKFNoZWxsIHdpbmRvdyBvbmx5KToKLQotICAgICAgICBWaWV3IExhc3QgUmVzdGFydCAtLSBTY3JvbGwgdGhlIHNoZWxsIHdpbmRvdyB0byB0aGUgbGFzdCBTaGVsbCByZXN0YXJ0Ci0gICAgICAgIFJlc3RhcnQgU2hlbGwgICAgIC0tIFJlc3RhcnQgdGhlIHNoZWxsIHRvIGNsZWFuIHRoZSBlbnZpcm9ubWVudAotCi1EZWJ1ZyBNZW51IChTaGVsbCB3aW5kb3cgb25seSk6Ci0KLSAgICAgICAgR28gdG8gRmlsZS9MaW5lICAgLS0gTG9vayBhcm91bmQgdGhlIGluc2VydCBwb2ludCBmb3IgYSBmaWxlbmFtZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgbGluZSBudW1iZXIsIG9wZW4gdGhlIGZpbGUsIGFuZCBzaG93IHRoZSBsaW5lLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VmdWwgdG8gdmlldyB0aGUgc291cmNlIGxpbmVzIHJlZmVyZW5jZWQgaW4gYW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uIHRyYWNlYmFjay4gIEF2YWlsYWJsZSBpbiB0aGUgY29udGV4dAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW51IG9mIHRoZSBTaGVsbCB3aW5kb3cuCi0gICAgICAgIERlYnVnZ2VyICh0b2dnbGUpIC0tIFRoaXMgZmVhdHVyZSBpcyBub3QgY29tcGxldGUgYW5kIGNvbnNpZGVyZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZXJpbWVudGFsLiBSdW4gY29tbWFuZHMgaW4gdGhlIHNoZWxsIHVuZGVyIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z2dlci4KLSAgICAgICAgU3RhY2sgVmlld2VyICAgICAgLS0gU2hvdyB0aGUgc3RhY2sgdHJhY2ViYWNrIG9mIHRoZSBsYXN0IGV4Y2VwdGlvbgotICAgICAgICBBdXRvLW9wZW4gU3RhY2sgVmlld2VyICh0b2dnbGUpIC0tIFRvZ2dsZSBhdXRvbWF0aWNhbGx5IG9wZW5pbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2sgdmlld2VyIG9uIHVuaGFuZGxlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbgotCi1PcHRpb25zIE1lbnUgKFNoZWxsIGFuZCBFZGl0b3IpOgotCi0gICAgICAgIENvbmZpZ3VyZSBJRExFIC0tIE9wZW4gYSBjb25maWd1cmF0aW9uIGRpYWxvZy4gIEZvbnRzLCBpbmRlbnRhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAga2V5YmluZGluZ3MsIGFuZCBjb2xvciB0aGVtZXMgbWF5IGJlIGFsdGVyZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXJ0dXAgUHJlZmVyZW5jZXMgbWF5IGJlIHNldCwgYW5kIGFkZGl0aW9uYWwgSGVscAotICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VzIGNhbiBiZSBzcGVjaWZpZWQuICBPbiBPUyBYLCBvcGVuIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGRpYWxvZyBieSBzZWxlY3RpbmcgUHJlZmVyZW5jZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIGFwcGxpY2F0aW9uIG1lbnUuCi0KLSAgICAgICAgLS0tCi0gICAgICAgIENvZGUgQ29udGV4dCAodG9nZ2xlKSAtLSBPcGVuIGEgcGFuZSBhdCB0aGUgdG9wIG9mIHRoZSBlZGl0IHdpbmRvdwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggc2hvd3MgdGhlIGJsb2NrIGNvbnRleHQgb2YgdGhlIHNlY3Rpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIGNvZGUgd2hpY2ggaXMgc2Nyb2xsaW5nIG9mZiB0aGUgdG9wIG9yIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LiBUaGlzIGlzIG5vdCBwcmVzZW50IGluIHRoZSBTaGVsbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93IG9ubHkgdGhlIEVkaXRvciB3aW5kb3cuCi0KLVdpbmRvdyBNZW51IChTaGVsbCBhbmQgRWRpdG9yKToKLQotICAgICAgICBab29tIEhlaWdodCAtLSBUb2dnbGVzIHRoZSB3aW5kb3cgYmV0d2VlbiBub3JtYWwgc2l6ZSAoNDB4ODAgaW5pdGlhbAotICAgICAgICBzZXR0aW5nKSBhbmQgbWF4aW11bSBoZWlnaHQuICBUaGUgaW5pdGlhbCBzaXplIGlzIGluIHRoZSBDb25maWd1cmUKLSAgICAgICAgSURMRSBkaWFsb2cgdW5kZXIgdGhlIGdlbmVyYWwgdGFiLgotICAgICAgICAtLS0KLSAgICAgICAgVGhlIHJlc3Qgb2YgdGhpcyBtZW51IGxpc3RzIHRoZSBuYW1lcyBvZiBhbGwgb3BlbiB3aW5kb3dzOwotICAgICAgICBzZWxlY3Qgb25lIHRvIGJyaW5nIGl0IHRvIHRoZSBmb3JlZ3JvdW5kIChkZWljb25pZnlpbmcgaXQgaWYKLSAgICAgICAgbmVjZXNzYXJ5KS4KLQotSGVscCBNZW51OgotCi0gICAgICAgIEFib3V0IElETEUgIC0tIFZlcnNpb24sIGNvcHlyaWdodCwgbGljZW5zZSwgY3JlZGl0cwotICAgICAgICAtLS0KLSAgICAgICAgSURMRSBIZWxwICAgLS0gRGlzcGxheSB0aGlzIGZpbGUgd2hpY2ggaXMgYSBoZWxwIGZpbGUgZm9yIElETEUKLSAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsaW5nIHRoZSBtZW51IG9wdGlvbnMsIGJhc2ljIGVkaXRpbmcgYW5kIG5hdmlnYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgIGFuZCBvdGhlciB0aXBzLgotICAgICAgICBQeXRob24gRG9jcyAtLSBBY2Nlc3MgbG9jYWwgUHl0aG9uIGRvY3VtZW50YXRpb24sIGlmCi0gICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGxlZC4gIE9yIHdpbGwgc3RhcnQgYSB3ZWIgYnJvd3NlciBhbmQgb3BlbgotICAgICAgICAgICAgICAgICAgICAgICBkb2NzLnB5dGhvbi5vcmcgc2hvd2luZyB0aGUgbGF0ZXN0IFB5dGhvbiBkb2N1bWVudGF0aW9uLgotICAgICAgICAtLS0KLSAgICAgICAgQWRkaXRpb25hbCBoZWxwIHNvdXJjZXMgbWF5IGJlIGFkZGVkIGhlcmUgd2l0aCB0aGUgQ29uZmlndXJlIElETEUKLSAgICAgICAgZGlhbG9nIHVuZGVyIHRoZSBHZW5lcmFsIHRhYi4KLQotRWRpdG9yIGNvbnRleHQgbWVudSAoUmlnaHQtY2xpY2sgLyBDb250cm9sLWNsaWNrIG9uIE9TIFggaW4gRWRpdCB3aW5kb3cpOgotCi0gICAgICAgIEN1dCAgICAgICAgICAgICAgLS0gQ29weSBhIHNlbGVjdGlvbiBpbnRvIHN5c3RlbS13aWRlIGNsaXBib2FyZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuIGRlbGV0ZSB0aGUgc2VsZWN0aW9uCi0gICAgICAgIENvcHkgICAgICAgICAgICAgLS0gQ29weSBzZWxlY3Rpb24gaW50byBzeXN0ZW0td2lkZSBjbGlwYm9hcmQKLSAgICAgICAgUGFzdGUgICAgICAgICAgICAtLSBJbnNlcnQgc3lzdGVtLXdpZGUgY2xpcGJvYXJkIGludG8gd2luZG93Ci0gICAgICAgIFNldCBCcmVha3BvaW50ICAgLS0gU2V0cyBhIGJyZWFrcG9pbnQuIEJyZWFrcG9pbnRzIGFyZSBvbmx5IGVuYWJsZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHRoZSBkZWJ1Z2dlciBpcyBvcGVuLgotICAgICAgICBDbGVhciBCcmVha3BvaW50IC0tIENsZWFycyB0aGUgYnJlYWtwb2ludCBvbiB0aGF0IGxpbmUKLQotU2hlbGwgY29udGV4dCBtZW51IChSaWdodC1jbGljayAvIENvbnRyb2wtY2xpY2sgb24gT1MgWCBpbiBTaGVsbCB3aW5kb3cpOgotCi0gICAgICAgIEN1dCAgICAgICAgICAgICAgLS0gQ29weSBhIHNlbGVjdGlvbiBpbnRvIHN5c3RlbS13aWRlIGNsaXBib2FyZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuIGRlbGV0ZSB0aGUgc2VsZWN0aW9uCi0gICAgICAgIENvcHkgICAgICAgICAgICAgLS0gQ29weSBzZWxlY3Rpb24gaW50byBzeXN0ZW0td2lkZSBjbGlwYm9hcmQKLSAgICAgICAgUGFzdGUgICAgICAgICAgICAtLSBJbnNlcnQgc3lzdGVtLXdpZGUgY2xpcGJvYXJkIGludG8gd2luZG93Ci0gICAgICAgIC0tLQotICAgICAgICBHbyB0byBmaWxlL2xpbmUgIC0tIFNhbWUgYXMgaW4gRGVidWcgbWVudQotCi0KLSoqIFRJUFMgKioKLT09PT09PT09PT0KLQotQWRkaXRpb25hbCBIZWxwIFNvdXJjZXM6Ci0KLSAgICAgICAgV2luZG93cyB1c2VycyBjYW4gR29vZ2xlIG9uIHpvcGVzaGVsZi5jaG0gdG8gYWNjZXNzIFpvcGUgaGVscCBmaWxlcyBpbgotICAgICAgICB0aGUgV2luZG93cyBoZWxwIGZvcm1hdC4gIFRoZSBBZGRpdGlvbmFsIEhlbHAgU291cmNlcyBmZWF0dXJlIG9mIHRoZQotICAgICAgICBjb25maWd1cmF0aW9uIEdVSSBzdXBwb3J0cyAuY2htLCBhbG9uZyB3aXRoIGFueSBvdGhlciBmaWxldHlwZXMKLSAgICAgICAgc3VwcG9ydGVkIGJ5IHlvdXIgYnJvd3Nlci4gIFN1cHBseSBhIE1lbnUgSXRlbSB0aXRsZSwgYW5kIGVudGVyIHRoZQotICAgICAgICBsb2NhdGlvbiBpbiB0aGUgSGVscCBGaWxlIFBhdGggc2xvdCBvZiB0aGUgTmV3IEhlbHAgU291cmNlIGRpYWxvZy4gIFVzZQotICAgICAgICBodHRwOi8vIGFuZC9vciB3d3cuIHRvIGlkZW50aWZ5IGV4dGVybmFsIFVSTHMsIG9yIGRvd25sb2FkIHRoZSBmaWxlIGFuZAotICAgICAgICBicm93c2UgZm9yIGl0cyBwYXRoIG9uIHlvdXIgbWFjaGluZSB1c2luZyB0aGUgQnJvd3NlIGJ1dHRvbi4KLQotICAgICAgICBBbGwgdXNlcnMgY2FuIGFjY2VzcyB0aGUgZXh0ZW5zaXZlIHNvdXJjZXMgb2YgaGVscCwgaW5jbHVkaW5nCi0gICAgICAgIHR1dG9yaWFscywgYXZhaWxhYmxlIGF0IGRvY3MucHl0aG9uLm9yZy4gIFNlbGVjdGVkIFVSTHMgY2FuIGJlIGFkZGVkCi0gICAgICAgIG9yIHJlbW92ZWQgZnJvbSB0aGUgSGVscCBtZW51IGF0IGFueSB0aW1lIHVzaW5nIENvbmZpZ3VyZSBJRExFLgotCi1CYXNpYyBlZGl0aW5nIGFuZCBuYXZpZ2F0aW9uOgotCi0gICAgICAgIEJhY2tzcGFjZSBkZWxldGVzIGNoYXIgdG8gdGhlIGxlZnQ7IERFTCBkZWxldGVzIGNoYXIgdG8gdGhlIHJpZ2h0LgotICAgICAgICBDb250cm9sLWJhY2tzcGFjZSBkZWxldGVzIHdvcmQgbGVmdCwgQ29udHJvbC1ERUwgZGVsZXRlcyB3b3JkIHJpZ2h0LgotICAgICAgICBBcnJvdyBrZXlzIGFuZCBQYWdlIFVwL0Rvd24gbW92ZSBhcm91bmQuCi0gICAgICAgIENvbnRyb2wtbGVmdC9yaWdodCBBcnJvdyBtb3ZlcyBieSB3b3JkcyBpbiBhIHN0cmFuZ2UgYnV0IHVzZWZ1bCB3YXkuCi0gICAgICAgIEhvbWUvRW5kIGdvIHRvIGJlZ2luL2VuZCBvZiBsaW5lLgotICAgICAgICBDb250cm9sLUhvbWUvRW5kIGdvIHRvIGJlZ2luL2VuZCBvZiBmaWxlLgotICAgICAgICBTb21lIHVzZWZ1bCBFbWFjcyBiaW5kaW5ncyBhcmUgaW5oZXJpdGVkIGZyb20gVGNsL1RrOgotICAgICAgICAgICAgICAgIENvbnRyb2wtYSAgICAgYmVnaW5uaW5nIG9mIGxpbmUKLSAgICAgICAgICAgICAgICBDb250cm9sLWUgICAgIGVuZCBvZiBsaW5lCi0gICAgICAgICAgICAgICAgQ29udHJvbC1rICAgICBraWxsIGxpbmUgKGJ1dCBkb2Vzbid0IHB1dCBpdCBpbiBjbGlwYm9hcmQpCi0gICAgICAgICAgICAgICAgQ29udHJvbC1sICAgICBjZW50ZXIgd2luZG93IGFyb3VuZCB0aGUgaW5zZXJ0aW9uIHBvaW50Ci0gICAgICAgIFN0YW5kYXJkIGtleWJpbmRpbmdzIChsaWtlIENvbnRyb2wtYyB0byBjb3B5IGFuZCBDb250cm9sLXYgdG8KLSAgICAgICAgcGFzdGUpIG1heSB3b3JrLiAgS2V5YmluZGluZ3MgYXJlIHNlbGVjdGVkIGluIHRoZSBDb25maWd1cmUgSURMRQotICAgICAgICBkaWFsb2cuCi0KLUF1dG9tYXRpYyBpbmRlbnRhdGlvbjoKLQotICAgICAgICBBZnRlciBhIGJsb2NrLW9wZW5pbmcgc3RhdGVtZW50LCB0aGUgbmV4dCBsaW5lIGlzIGluZGVudGVkIGJ5IDQgc3BhY2VzCi0gICAgICAgIChpbiB0aGUgUHl0aG9uIFNoZWxsIHdpbmRvdyBieSBvbmUgdGFiKS4gIEFmdGVyIGNlcnRhaW4ga2V5d29yZHMKLSAgICAgICAgKGJyZWFrLCByZXR1cm4gZXRjLikgdGhlIG5leHQgbGluZSBpcyBkZWRlbnRlZC4gIEluIGxlYWRpbmcKLSAgICAgICAgaW5kZW50YXRpb24sIEJhY2tzcGFjZSBkZWxldGVzIHVwIHRvIDQgc3BhY2VzIGlmIHRoZXkgYXJlIHRoZXJlLiAgVGFiCi0gICAgICAgIGluc2VydHMgc3BhY2VzIChpbiB0aGUgUHl0aG9uIFNoZWxsIHdpbmRvdyBvbmUgdGFiKSwgbnVtYmVyIGRlcGVuZHMgb24KLSAgICAgICAgSW5kZW50IFdpZHRoLiBDdXJyZW50bHkgdGFicyBhcmUgcmVzdHJpY3RlZCB0byBmb3VyIHNwYWNlcyBkdWUKLSAgICAgICAgdG8gVGNsL1RrIGxpbWl0YXRpb25zLgotCi0gICAgICAgIFNlZSBhbHNvIHRoZSBpbmRlbnQvZGVkZW50IHJlZ2lvbiBjb21tYW5kcyBpbiB0aGUgZWRpdCBtZW51LgotCi1Db21wbGV0aW9uczoKLQotICAgICAgICBDb21wbGV0aW9ucyBhcmUgc3VwcGxpZWQgZm9yIGZ1bmN0aW9ucywgY2xhc3NlcywgYW5kIGF0dHJpYnV0ZXMgb2YKLSAgICAgICAgY2xhc3NlcywgYm90aCBidWlsdC1pbiBhbmQgdXNlci1kZWZpbmVkLiAgQ29tcGxldGlvbnMgYXJlIGFsc28gcHJvdmlkZWQKLSAgICAgICAgZm9yIGZpbGVuYW1lcy4KLQotICAgICAgICBUaGUgQXV0b0NvbXBsZXRlV2luZG93IChBQ1cpIHdpbGwgb3BlbiBhZnRlciBhIHByZWRlZmluZWQgZGVsYXkKLSAgICAgICAgKGRlZmF1bHQgaXMgdHdvIHNlY29uZHMpIGFmdGVyIGEgJy4nIG9yIChpbiBhIHN0cmluZykgYW4gb3Muc2VwIGlzCi0gICAgICAgIHR5cGVkLiAgSWYgYWZ0ZXIgb25lIG9mIHRob3NlIGNoYXJhY3RlcnMgKHBsdXMgemVybyBvciBtb3JlIG90aGVyCi0gICAgICAgIGNoYXJhY3RlcnMpIGEgdGFiIGlzIHR5cGVkIHRoZSBBQ1cgd2lsbCBvcGVuIGltbWVkaWF0ZWx5IGlmIGEgcG9zc2libGUKLSAgICAgICAgY29udGludWF0aW9uIGlzIGZvdW5kLgotCi0gICAgICAgIElmIHRoZXJlIGlzIG9ubHkgb25lIHBvc3NpYmxlIGNvbXBsZXRpb24gZm9yIHRoZSBjaGFyYWN0ZXJzIGVudGVyZWQsIGEKLSAgICAgICAgdGFiIHdpbGwgc3VwcGx5IHRoYXQgY29tcGxldGlvbiB3aXRob3V0IG9wZW5pbmcgdGhlIEFDVy4KLQotICAgICAgICAnU2hvdyBDb21wbGV0aW9ucycgd2lsbCBmb3JjZSBvcGVuIGEgY29tcGxldGlvbnMgd2luZG93LCBieSBkZWZhdWx0IHRoZQotICAgICAgICBDb250cm9sLXNwYWNlIGtleXMgd2lsbCBvcGVuIGEgY29tcGxldGlvbnMgd2luZG93LiAgSW4gYW4gZW1wdHkKLSAgICAgICAgc3RyaW5nLCB0aGlzIHdpbGwgY29udGFpbiB0aGUgZmlsZXMgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LiAgT24gYQotICAgICAgICBibGFuayBsaW5lLCBpdCB3aWxsIGNvbnRhaW4gdGhlIGJ1aWx0LWluIGFuZCB1c2VyLWRlZmluZWQgZnVuY3Rpb25zIGFuZAotICAgICAgICBjbGFzc2VzIGluIHRoZSBjdXJyZW50IG5hbWUgc3BhY2VzLCBwbHVzIGFueSBtb2R1bGVzIGltcG9ydGVkLiAgSWYgc29tZQotICAgICAgICBjaGFyYWN0ZXJzIGhhdmUgYmVlbiBlbnRlcmVkLCB0aGUgQUNXIHdpbGwgYXR0ZW1wdCB0byBiZSBtb3JlIHNwZWNpZmljLgotCi0gICAgICAgIElmIHN0cmluZyBvZiBjaGFyYWN0ZXJzIGlzIHR5cGVkLCB0aGUgQUNXIHNlbGVjdGlvbiB3aWxsIGp1bXAgdG8gdGhlCi0gICAgICAgIGVudHJ5IG1vc3QgY2xvc2VseSBtYXRjaGluZyB0aG9zZSBjaGFyYWN0ZXJzLiBFbnRlcmluZyBhIHRhYiB3aWxsIGNhdXNlCi0gICAgICAgIHRoZSBsb25nZXN0IG5vbi1hbWJpZ3VvdXMgbWF0Y2ggdG8gYmUgZW50ZXJlZCBpbiB0aGUgRWRpdCB3aW5kb3cgb3IKLSAgICAgICAgU2hlbGwuICBUd28gdGFicyBpbiBhIHJvdyB3aWxsIHN1cHBseSB0aGUgY3VycmVudCBBQ1cgc2VsZWN0aW9uLCBhcwotICAgICAgICB3aWxsIHJldHVybiBvciBhIGRvdWJsZSBjbGljay4gIEN1cnNvciBrZXlzLCBQYWdlIFVwL0Rvd24sIG1vdXNlCi0gICAgICAgIHNlbGVjdGlvbiwgYW5kIHRoZSBzY3JvbGwgd2hlZWwgYWxsIG9wZXJhdGUgb24gdGhlIEFDVy4KLQotICAgICAgICAiSGlkZGVuIiBhdHRyaWJ1dGVzIGNhbiBiZSBhY2Nlc3NlZCBieSB0eXBpbmcgdGhlIGJlZ2lubmluZyBvZiBoaWRkZW4KLSAgICAgICAgbmFtZSBhZnRlciBhICcuJywgIGUuZy4gJ18nLiAgVGhpcyBhbGxvd3MgYWNjZXNzIHRvIG1vZHVsZXMgd2l0aAotICAgICAgICAnX19hbGxfXycgc2V0LCBvciB0byBjbGFzcy1wcml2YXRlIGF0dHJpYnV0ZXMuCi0KLSAgICAgICAgQ29tcGxldGlvbnMgYW5kIHRoZSAnRXhwYW5kIFdvcmQnIGZhY2lsaXR5IGNhbiBzYXZlIGEgbG90IG9mIHR5cGluZyEKLQotICAgICAgICBDb21wbGV0aW9ucyBhcmUgY3VycmVudGx5IGxpbWl0ZWQgdG8gdGhvc2UgaW4gdGhlIG5hbWVzcGFjZXMuICBOYW1lcyBpbgotICAgICAgICBhbiBFZGl0b3Igd2luZG93IHdoaWNoIGFyZSBub3QgdmlhIF9fbWFpbl9fIG9yIHN5cy5tb2R1bGVzIHdpbGwgbm90IGJlCi0gICAgICAgIGZvdW5kLiAgUnVuIHRoZSBtb2R1bGUgb25jZSB3aXRoIHlvdXIgaW1wb3J0cyB0byBjb3JyZWN0IHRoaXMKLSAgICAgICAgc2l0dWF0aW9uLiAgTm90ZSB0aGF0IElETEUgaXRzZWxmIHBsYWNlcyBxdWl0ZSBhIGZldyBtb2R1bGVzIGluCi0gICAgICAgIHN5cy5tb2R1bGVzLCBzbyBtdWNoIGNhbiBiZSBmb3VuZCBieSBkZWZhdWx0LCBlLmcuIHRoZSByZSBtb2R1bGUuCi0KLSAgICAgICAgSWYgeW91IGRvbid0IGxpa2UgdGhlIEFDVyBwb3BwaW5nIHVwIHVuYmlkZGVuLCBzaW1wbHkgbWFrZSB0aGUgZGVsYXkKLSAgICAgICAgbG9uZ2VyIG9yIGRpc2FibGUgdGhlIGV4dGVuc2lvbi4gIE9yIGFub3RoZXIgb3B0aW9uIGlzIHRoZSBkZWxheSBjb3VsZAotICAgICAgICBiZSBzZXQgdG8gemVyby4gQW5vdGhlciBhbHRlcm5hdGl2ZSB0byBwcmV2ZW50aW5nIEFDVyBwb3B1cHMgaXMgdG8KLSAgICAgICAgZGlzYWJsZSB0aGUgY2FsbCB0aXBzIGV4dGVuc2lvbi4KLQotUHl0aG9uIFNoZWxsIHdpbmRvdzoKLQotICAgICAgICBDb250cm9sLWMgaW50ZXJydXB0cyBleGVjdXRpbmcgY29tbWFuZC4KLSAgICAgICAgQ29udHJvbC1kIHNlbmRzIGVuZC1vZi1maWxlOyBjbG9zZXMgd2luZG93IGlmIHR5cGVkIGF0ID4+PiBwcm9tcHQuCi0gICAgICAgIEFsdC0vIGV4cGFuZCB3b3JkIGlzIGFsc28gdXNlZnVsIHRvIHJlZHVjZSB0eXBpbmcuCi0KLSAgICBDb21tYW5kIGhpc3Rvcnk6Ci0KLSAgICAgICAgQWx0LXAgcmV0cmlldmVzIHByZXZpb3VzIGNvbW1hbmQgbWF0Y2hpbmcgd2hhdCB5b3UgaGF2ZSB0eXBlZC4gT24gT1MgWAotICAgICAgICB1c2UgQ29udHJvbC1wLgotICAgICAgICBBbHQtbiByZXRyaWV2ZXMgbmV4dC4gT24gT1MgWCB1c2UgQ29udHJvbC1uLgotICAgICAgICBSZXR1cm4gd2hpbGUgY3Vyc29yIGlzIG9uIGEgcHJldmlvdXMgY29tbWFuZCByZXRyaWV2ZXMgdGhhdCBjb21tYW5kLgotCi0gICAgU3ludGF4IGNvbG9yczoKLQotICAgICAgICBUaGUgY29sb3JpbmcgaXMgYXBwbGllZCBpbiBhIGJhY2tncm91bmQgInRocmVhZCIsIHNvIHlvdSBtYXkKLSAgICAgICAgb2NjYXNpb25hbGx5IHNlZSB1bmNvbG9yaXplZCB0ZXh0LiAgVG8gY2hhbmdlIHRoZSBjb2xvcgotICAgICAgICBzY2hlbWUsIHVzZSB0aGUgQ29uZmlndXJlIElETEUgLyBIaWdobGlnaHRpbmcgZGlhbG9nLgotCi0gICAgUHl0aG9uIGRlZmF1bHQgc3ludGF4IGNvbG9yczoKLQotICAgICAgICBLZXl3b3JkcyAgICAgICAgb3JhbmdlCi0gICAgICAgIEJ1aWx0aW5zICAgICAgICByb3lhbCBwdXJwbGUKLSAgICAgICAgU3RyaW5ncyAgICAgICAgIGdyZWVuCi0gICAgICAgIENvbW1lbnRzICAgICAgICByZWQKLSAgICAgICAgRGVmaW5pdGlvbnMgICAgIGJsdWUKLQotICAgIFNoZWxsIGRlZmF1bHQgY29sb3JzOgotCi0gICAgICAgIENvbnNvbGUgb3V0cHV0ICBicm93bgotICAgICAgICBzdGRvdXQgICAgICAgICAgYmx1ZQotICAgICAgICBzdGRlcnIgICAgICAgICAgcmVkCi0gICAgICAgIHN0ZGluICAgICAgICAgICBibGFjawotCi1PdGhlciBwcmVmZXJlbmNlczoKLQotICAgICAgICBUaGUgZm9udCBwcmVmZXJlbmNlcywgaGlnaGxpZ2h0aW5nLCBrZXlzLCBhbmQgZ2VuZXJhbCBwcmVmZXJlbmNlcyBjYW4KLSAgICAgICAgYmUgY2hhbmdlZCB2aWEgdGhlIENvbmZpZ3VyZSBJRExFIG1lbnUgb3B0aW9uLiAgQmUgc3VyZSB0byBub3RlIHRoYXQKLSAgICAgICAga2V5cyBjYW4gYmUgdXNlciBkZWZpbmVkLCBJRExFIHNoaXBzIHdpdGggZm91ciBidWlsdCBpbiBrZXkgc2V0cy4gSW4KLSAgICAgICAgYWRkaXRpb24gYSB1c2VyIGNhbiBjcmVhdGUgYSBjdXN0b20ga2V5IHNldCBpbiB0aGUgQ29uZmlndXJlIElETEUKLSAgICAgICAgZGlhbG9nIHVuZGVyIHRoZSBrZXlzIHRhYi4KLQotQ29tbWFuZCBsaW5lIHVzYWdlOgotCi0gICAgICAgIEVudGVyIGlkbGUgLWggYXQgdGhlIGNvbW1hbmQgcHJvbXB0IHRvIGdldCBhIHVzYWdlIG1lc3NhZ2UuCi0KLSAgICAgICAgaWRsZS5weSBbLWMgY29tbWFuZF0gWy1kXSBbLWVdIFstc10gWy10IHRpdGxlXSBbYXJnXSAuLi4KLQotICAgICAgICAtYyBjb21tYW5kICBydW4gdGhpcyBjb21tYW5kCi0gICAgICAgIC1kICAgICAgICAgIGVuYWJsZSBkZWJ1Z2dlcgotICAgICAgICAtZSAgICAgICAgICBlZGl0IG1vZGU7IGFyZ3VtZW50cyBhcmUgZmlsZXMgdG8gYmUgZWRpdGVkCi0gICAgICAgIC1zICAgICAgICAgIHJ1biAkSURMRVNUQVJUVVAgb3IgJFBZVEhPTlNUQVJUVVAgZmlyc3QKLSAgICAgICAgLXQgdGl0bGUgICAgc2V0IHRpdGxlIG9mIHNoZWxsIHdpbmRvdwotCi0gICAgICAgIElmIHRoZXJlIGFyZSBhcmd1bWVudHM6Ci0gICAgICAgIDEuIElmIC1lIGlzIHVzZWQsIGFyZ3VtZW50cyBhcmUgZmlsZXMgb3BlbmVkIGZvciBlZGl0aW5nIGFuZCBzeXMuYXJndgotICAgICAgICAgICByZWZsZWN0cyB0aGUgYXJndW1lbnRzIHBhc3NlZCB0byBJRExFIGl0c2VsZi4KLSAgICAgICAgMi4gT3RoZXJ3aXNlLCBpZiAtYyBpcyB1c2VkLCBhbGwgYXJndW1lbnRzIGFyZSBwbGFjZWQgaW4KLSAgICAgICAgICAgc3lzLmFyZ3ZbMTouLi5dLCB3aXRoIHN5cy5hcmd2WzBdIHNldCB0byAtYy4KLSAgICAgICAgMy4gT3RoZXJ3aXNlLCBpZiBuZWl0aGVyIC1lIG5vciAtYyBpcyB1c2VkLCB0aGUgZmlyc3QgYXJndW1lbnQgaXMgYQotICAgICAgICAgICBzY3JpcHQgd2hpY2ggaXMgZXhlY3V0ZWQgd2l0aCB0aGUgcmVtYWluaW5nIGFyZ3VtZW50cyBpbgotICAgICAgICAgICBzeXMuYXJndlsxOi4uLl0gIGFuZCBzeXMuYXJndlswXSBzZXQgdG8gdGhlIHNjcmlwdCBuYW1lLiAgSWYgdGhlCi0gICAgICAgICAgIHNjcmlwdCBuYW1lIGlzIC0sIG5vIHNjcmlwdCBpcyBleGVjdXRlZCBidXQgYW4gaW50ZXJhY3RpdmUgUHl0aG9uCi0gICAgICAgICAgIHNlc3Npb24gaXMgc3RhcnRlZDsgdGhlIGFyZ3VtZW50cyBhcmUgc3RpbGwgYXZhaWxhYmxlIGluIHN5cy5hcmd2LgotCi1SdW5uaW5nIHdpdGhvdXQgYSBzdWJwcm9jZXNzOiAoREVQUkVDQVRFRCBpbiBQeXRob24gMy40IHNlZSBJc3N1ZSAxNjEyMykKLQotICAgICAgICBJZiBJRExFIGlzIHN0YXJ0ZWQgd2l0aCB0aGUgLW4gY29tbWFuZCBsaW5lIHN3aXRjaCBpdCB3aWxsIHJ1biBpbiBhCi0gICAgICAgIHNpbmdsZSBwcm9jZXNzIGFuZCB3aWxsIG5vdCBjcmVhdGUgdGhlIHN1YnByb2Nlc3Mgd2hpY2ggcnVucyB0aGUgUlBDCi0gICAgICAgIFB5dGhvbiBleGVjdXRpb24gc2VydmVyLiAgVGhpcyBjYW4gYmUgdXNlZnVsIGlmIFB5dGhvbiBjYW5ub3QgY3JlYXRlCi0gICAgICAgIHRoZSBzdWJwcm9jZXNzIG9yIHRoZSBSUEMgc29ja2V0IGludGVyZmFjZSBvbiB5b3VyIHBsYXRmb3JtLiAgSG93ZXZlciwKLSAgICAgICAgaW4gdGhpcyBtb2RlIHVzZXIgY29kZSBpcyBub3QgaXNvbGF0ZWQgZnJvbSBJRExFIGl0c2VsZi4gIEFsc28sIHRoZQotICAgICAgICBlbnZpcm9ubWVudCBpcyBub3QgcmVzdGFydGVkIHdoZW4gUnVuL1J1biBNb2R1bGUgKEY1KSBpcyBzZWxlY3RlZC4gIElmCi0gICAgICAgIHlvdXIgY29kZSBoYXMgYmVlbiBtb2RpZmllZCwgeW91IG11c3QgcmVsb2FkKCkgdGhlIGFmZmVjdGVkIG1vZHVsZXMgYW5kCi0gICAgICAgIHJlLWltcG9ydCBhbnkgc3BlY2lmaWMgaXRlbXMgKGUuZy4gZnJvbSBmb28gaW1wb3J0IGJheikgaWYgdGhlIGNoYW5nZXMKLSAgICAgICAgYXJlIHRvIHRha2UgZWZmZWN0LiAgRm9yIHRoZXNlIHJlYXNvbnMsIGl0IGlzIHByZWZlcmFibGUgdG8gcnVuIElETEUKLSAgICAgICAgd2l0aCB0aGUgZGVmYXVsdCBzdWJwcm9jZXNzIGlmIGF0IGFsbCBwb3NzaWJsZS4KLQotRXh0ZW5zaW9uczoKLQotICAgICAgICBJRExFIGNvbnRhaW5zIGFuIGV4dGVuc2lvbiBmYWNpbGl0eS4gIFNlZSB0aGUgYmVnaW5uaW5nIG9mCi0gICAgICAgIGNvbmZpZy1leHRlbnNpb25zLmRlZiBpbiB0aGUgaWRsZWxpYiBkaXJlY3RvcnkgZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24uCi0gICAgICAgIFRoZSBkZWZhdWx0IGV4dGVuc2lvbnMgYXJlIGN1cnJlbnRseToKLQotICAgICAgICAgICAgICAgIEZvcm1hdFBhcmFncmFwaAotICAgICAgICAgICAgICAgIEF1dG9FeHBhbmQKLSAgICAgICAgICAgICAgICBab29tSGVpZ2h0Ci0gICAgICAgICAgICAgICAgU2NyaXB0QmluZGluZwotICAgICAgICAgICAgICAgIENhbGxUaXBzCi0gICAgICAgICAgICAgICAgUGFyZW5NYXRjaAotICAgICAgICAgICAgICAgIEF1dG9Db21wbGV0ZQotICAgICAgICAgICAgICAgIENvZGVDb250ZXh0CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9hYm91dERpYWxvZy5weSBiL0xpYi9pZGxlbGliL2hlbHBfYWJvdXQucHkKc2ltaWxhcml0eSBpbmRleCA5NiUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvYWJvdXREaWFsb2cucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2hlbHBfYWJvdXQucHkKaW5kZXggYThmNzVkMi4uMDcxYmQzZSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvYWJvdXREaWFsb2cucHkKKysrIGIvTGliL2lkbGVsaWIvaGVscF9hYm91dC5weQpAQCAtMSwxMSArMSwxMyBAQAogIiIiQWJvdXQgRGlhbG9nIGZvciBJRExFCiAKICIiIgotCiBpbXBvcnQgb3MKIGZyb20gc3lzIGltcG9ydCB2ZXJzaW9uCisKIGZyb20gdGtpbnRlciBpbXBvcnQgKgotZnJvbSBpZGxlbGliIGltcG9ydCB0ZXh0VmlldworCitmcm9tIGlkbGVsaWIgaW1wb3J0IHRleHR2aWV3CisKIAogY2xhc3MgQWJvdXREaWFsb2coVG9wbGV2ZWwpOgogICAgICIiIk1vZGFsIGFib3V0IGRpYWxvZyBmb3IgaWRsZQpAQCAtMTM1LDE3ICsxMzcsMTggQEAKICAgICBkZWYgZGlzcGxheV9wcmludGVyX3RleHQoc2VsZiwgdGl0bGUsIHByaW50ZXIpOgogICAgICAgICBwcmludGVyLl9QcmludGVyX19zZXR1cCgpCiAgICAgICAgIHRleHQgPSAnXG4nLmpvaW4ocHJpbnRlci5fUHJpbnRlcl9fbGluZXMpCi0gICAgICAgIHRleHRWaWV3LnZpZXdfdGV4dChzZWxmLCB0aXRsZSwgdGV4dCkKKyAgICAgICAgdGV4dHZpZXcudmlld190ZXh0KHNlbGYsIHRpdGxlLCB0ZXh0KQogCiAgICAgZGVmIGRpc3BsYXlfZmlsZV90ZXh0KHNlbGYsIHRpdGxlLCBmaWxlbmFtZSwgZW5jb2Rpbmc9Tm9uZSk6CiAgICAgICAgIGZuID0gb3MucGF0aC5qb2luKG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKSwgZmlsZW5hbWUpCi0gICAgICAgIHRleHRWaWV3LnZpZXdfZmlsZShzZWxmLCB0aXRsZSwgZm4sIGVuY29kaW5nKQorICAgICAgICB0ZXh0dmlldy52aWV3X2ZpbGUoc2VsZiwgdGl0bGUsIGZuLCBlbmNvZGluZykKIAogICAgIGRlZiBPayhzZWxmLCBldmVudD1Ob25lKToKICAgICAgICAgc2VsZi5kZXN0cm95KCkKIAorCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIGltcG9ydCB1bml0dGVzdAotICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3RfaGVscGFib3V0JywgdmVyYm9zaXR5PTIsIGV4aXQ9RmFsc2UpCisgICAgdW5pdHRlc3QubWFpbignaWRsZWxpYi5pZGxlX3Rlc3QudGVzdF9oZWxwX2Fib3V0JywgdmVyYm9zaXR5PTIsIGV4aXQ9RmFsc2UpCiAgICAgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5odGVzdCBpbXBvcnQgcnVuCiAgICAgcnVuKEFib3V0RGlhbG9nKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvSWRsZUhpc3RvcnkucHkgYi9MaWIvaWRsZWxpYi9oaXN0b3J5LnB5CnNpbWlsYXJpdHkgaW5kZXggOTUlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL0lkbGVIaXN0b3J5LnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9oaXN0b3J5LnB5CmluZGV4IDA3OGFmMjkuLjU2ZjUzYTAgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0lkbGVIaXN0b3J5LnB5CisrKyBiL0xpYi9pZGxlbGliL2hpc3RvcnkucHkKQEAgLTEsMTEgKzEsMTIgQEAKICJJbXBsZW1lbnQgSWRsZSBTaGVsbCBoaXN0b3J5IG1lY2hhbmlzbSB3aXRoIEhpc3RvcnkgY2xhc3MiCiAKLWZyb20gaWRsZWxpYi5jb25maWdIYW5kbGVyIGltcG9ydCBpZGxlQ29uZgorZnJvbSBpZGxlbGliLmNvbmZpZyBpbXBvcnQgaWRsZUNvbmYKKwogCiBjbGFzcyBIaXN0b3J5OgogICAgICcnJyBJbXBsZW1lbnQgSWRsZSBTaGVsbCBoaXN0b3J5IG1lY2hhbmlzbS4KIAotICAgIHN0b3JlIC0gU3RvcmUgc291cmNlIHN0YXRlbWVudCAoY2FsbGVkIGZyb20gUHlTaGVsbC5yZXNldG91dHB1dCkuCisgICAgc3RvcmUgLSBTdG9yZSBzb3VyY2Ugc3RhdGVtZW50IChjYWxsZWQgZnJvbSBweXNoZWxsLnJlc2V0b3V0cHV0KS4KICAgICBmZXRjaCAtIEZldGNoIHN0b3JlZCBzdGF0ZW1lbnQgbWF0Y2hpbmcgcHJlZml4IGFscmVhZHkgZW50ZXJlZC4KICAgICBoaXN0b3J5X25leHQgLSBCb3VuZCB0byA8PGhpc3RvcnktbmV4dD4+IGV2ZW50IChkZWZhdWx0IEFsdC1OKS4KICAgICBoaXN0b3J5X3ByZXYgLSBCb3VuZCB0byA8PGhpc3RvcnktcHJldj4+IGV2ZW50IChkZWZhdWx0IEFsdC1QKS4KQEAgLTk5LDYgKzEwMCw3IEBACiAgICAgICAgIHNlbGYucG9pbnRlciA9IE5vbmUKICAgICAgICAgc2VsZi5wcmVmaXggPSBOb25lCiAKKwogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICBmcm9tIHVuaXR0ZXN0IGltcG9ydCBtYWluCi0gICAgbWFpbignaWRsZWxpYi5pZGxlX3Rlc3QudGVzdF9pZGxlaGlzdG9yeScsIHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQorICAgIG1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3RfaGlzdG9yeScsIHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvSHlwZXJQYXJzZXIucHkgYi9MaWIvaWRsZWxpYi9oeXBlcnBhcnNlci5weQpzaW1pbGFyaXR5IGluZGV4IDk5JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9IeXBlclBhcnNlci5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvaHlwZXJwYXJzZXIucHkKaW5kZXggNzdjYjA1Ny4uNDUwYTcwOSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvSHlwZXJQYXJzZXIucHkKKysrIGIvTGliL2lkbGVsaWIvaHlwZXJwYXJzZXIucHkKQEAgLTQsMTEgKzQsMTAgQEAKIHByb3BlciBpbmRlbnRhdGlvbiBvZiBjb2RlLiAgSHlwZXJQYXJzZXIgZ2l2ZXMgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbgogdGhlIHN0cnVjdHVyZSBvZiBjb2RlLgogIiIiCi0KLWltcG9ydCBzdHJpbmcKIGZyb20ga2V5d29yZCBpbXBvcnQgaXNrZXl3b3JkCi1mcm9tIGlkbGVsaWIgaW1wb3J0IFB5UGFyc2UKK2ltcG9ydCBzdHJpbmcKIAorZnJvbSBpZGxlbGliIGltcG9ydCBweXBhcnNlCiAKICMgYWxsIEFTQ0lJIGNoYXJzIHRoYXQgbWF5IGJlIGluIGFuIGlkZW50aWZpZXIKIF9BU0NJSV9JRF9DSEFSUyA9IGZyb3plbnNldChzdHJpbmcuYXNjaWlfbGV0dGVycyArIHN0cmluZy5kaWdpdHMgKyAiXyIpCkBAIC0zMCw3ICsyOSw3IEBACiAgICAgICAgIHNlbGYuZWRpdHdpbiA9IGVkaXR3aW4KICAgICAgICAgc2VsZi50ZXh0ID0gdGV4dCA9IGVkaXR3aW4udGV4dAogCi0gICAgICAgIHBhcnNlciA9IFB5UGFyc2UuUGFyc2VyKGVkaXR3aW4uaW5kZW50d2lkdGgsIGVkaXR3aW4udGFid2lkdGgpCisgICAgICAgIHBhcnNlciA9IHB5cGFyc2UuUGFyc2VyKGVkaXR3aW4uaW5kZW50d2lkdGgsIGVkaXR3aW4udGFid2lkdGgpCiAKICAgICAgICAgZGVmIGluZGV4MmxpbmUoaW5kZXgpOgogICAgICAgICAgICAgcmV0dXJuIGludChmbG9hdChpbmRleCkpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlLnB5IGIvTGliL2lkbGVsaWIvaWRsZS5weQppbmRleCAxNDE1MzRkLi40ODVkNWE3IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGUucHkKQEAgLTEsNiArMSw3IEBACiBpbXBvcnQgb3MucGF0aAogaW1wb3J0IHN5cwogCisKICMgRW5hYmxlIHJ1bm5pbmcgSURMRSB3aXRoIGlkbGVsaWIgaW4gYSBub24tc3RhbmRhcmQgbG9jYXRpb24uCiAjIFRoaXMgd2FzIG9uY2UgdXNlZCB0byBydW4gZGV2ZWxvcG1lbnQgdmVyc2lvbnMgb2YgSURMRS4KICMgQmVjYXVzZSBQRVAgNDM0IGRlY2xhcmVkIGlkbGUucHkgYSBwdWJsaWMgaW50ZXJmYWNlLApAQCAtOSw1ICsxMCw1IEBACiBpZiBpZGxlbGliX2RpciBub3QgaW4gc3lzLnBhdGg6CiAgICAgc3lzLnBhdGguaW5zZXJ0KDAsIGlkbGVsaWJfZGlyKQogCi1mcm9tIGlkbGVsaWIuUHlTaGVsbCBpbXBvcnQgbWFpbiAgIyBUaGlzIGlzIHN1YmplY3QgdG8gY2hhbmdlCitmcm9tIGlkbGVsaWIucHlzaGVsbCBpbXBvcnQgbWFpbiAgIyBUaGlzIGlzIHN1YmplY3QgdG8gY2hhbmdlCiBtYWluKCkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGUucHl3IGIvTGliL2lkbGVsaWIvaWRsZS5weXcKaW5kZXggMTQyY2IzMi4uZTczYzA0OSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZS5weXcKKysrIGIvTGliL2lkbGVsaWIvaWRsZS5weXcKQEAgLTEsMTAgKzEsMTAgQEAKIHRyeToKLSAgICBpbXBvcnQgaWRsZWxpYi5QeVNoZWxsCisgICAgaW1wb3J0IGlkbGVsaWIucHlzaGVsbAogZXhjZXB0IEltcG9ydEVycm9yOgotICAgICMgSURMRSBpcyBub3QgaW5zdGFsbGVkLCBidXQgbWF5YmUgUHlTaGVsbCBpcyBvbiBzeXMucGF0aDoKLSAgICBmcm9tIC4gaW1wb3J0IFB5U2hlbGwKKyAgICAjIElETEUgaXMgbm90IGluc3RhbGxlZCwgYnV0IG1heWJlIHB5c2hlbGwgaXMgb24gc3lzLnBhdGg6CisgICAgZnJvbSAuIGltcG9ydCBweXNoZWxsCiAgICAgaW1wb3J0IG9zCi0gICAgaWRsZWRpciA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgoUHlTaGVsbC5fX2ZpbGVfXykpCisgICAgaWRsZWRpciA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgocHlzaGVsbC5fX2ZpbGVfXykpCiAgICAgaWYgaWRsZWRpciAhPSBvcy5nZXRjd2QoKToKICAgICAgICAgIyBXZSdyZSBub3QgaW4gdGhlIElETEUgZGlyZWN0b3J5LCBoZWxwIHRoZSBzdWJwcm9jZXNzIGZpbmQgcnVuLnB5CiAgICAgICAgIHB5cGF0aCA9IG9zLmVudmlyb24uZ2V0KCdQWVRIT05QQVRIJywgJycpCkBAIC0xMiw2ICsxMiw2IEBACiAgICAgICAgICAgICBvcy5lbnZpcm9uWydQWVRIT05QQVRIJ10gPSBweXBhdGggKyAnOicgKyBpZGxlZGlyCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBvcy5lbnZpcm9uWydQWVRIT05QQVRIJ10gPSBpZGxlZGlyCi0gICAgUHlTaGVsbC5tYWluKCkKKyAgICBweXNoZWxsLm1haW4oKQogZWxzZToKLSAgICBpZGxlbGliLlB5U2hlbGwubWFpbigpCisgICAgaWRsZWxpYi5weXNoZWxsLm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L19faW5pdF9fLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L19faW5pdF9fLnB5CmluZGV4IDg0NWM5MmQuLmFkMDY3YjQgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC9fX2luaXRfXy5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvX19pbml0X18ucHkKQEAgLTEsNiArMSw4IEBACiAnJydpZGxlbGliLmlkbGVfdGVzdCBpcyBhIHByaXZhdGUgaW1wbGVtZW50YXRpb24gb2YgdGVzdC50ZXN0X2lkbGUsCiB3aGljaCB0ZXN0cyB0aGUgSURMRSBhcHBsaWNhdGlvbiBhcyBwYXJ0IG9mIHRoZSBzdGRsaWIgdGVzdCBzdWl0ZS4KIFJ1biBJRExFIHRlc3RzIGFsb25lIHdpdGggInB5dGhvbiAtbSB0ZXN0LnRlc3RfaWRsZSIuCitTdGFydGluZyB3aXRoIFB5dGhvbiAzLjYsIElETEUgcmVxdWlyZXMgdGNsL3RrIDguNSBvciBsYXRlci4KKwogVGhpcyBwYWNrYWdlIGFuZCBpdHMgY29udGFpbmVkIG1vZHVsZXMgYXJlIHN1YmplY3QgdG8gY2hhbmdlIGFuZAogYW55IGRpcmVjdCB1c2UgaXMgYXQgeW91ciBvd24gcmlzay4KICcnJwpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L2h0ZXN0LnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L2h0ZXN0LnB5CmluZGV4IDU4ZTYyY2IuLjZmNjc2YWUgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC9odGVzdC5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvaHRlc3QucHkKQEAgLTU5LDE5ICs1OSwyMCBAQAogCiAKIE1vZHVsZXMgYW5kIGNsYXNzZXMgbm90IGJlaW5nIHRlc3RlZCBhdCB0aGUgbW9tZW50OgotUHlTaGVsbC5QeVNoZWxsRWRpdG9yV2luZG93Ci1EZWJ1Z2dlci5EZWJ1Z2dlcgotQXV0b0NvbXBsZXRlV2luZG93LkF1dG9Db21wbGV0ZVdpbmRvdwotT3V0cHV0V2luZG93Lk91dHB1dFdpbmRvdyAoaW5kaXJlY3RseSBiZWluZyB0ZXN0ZWQgd2l0aCBncmVwIHRlc3QpCitweXNoZWxsLlB5U2hlbGxFZGl0b3JXaW5kb3cKK2RlYnVnZ2VyLkRlYnVnZ2VyCithdXRvY29tcGxldGVfdy5BdXRvQ29tcGxldGVXaW5kb3cKK291dHdpbi5PdXRwdXRXaW5kb3cgKGluZGlyZWN0bHkgYmVpbmcgdGVzdGVkIHdpdGggZ3JlcCB0ZXN0KQogJycnCiAKIGZyb20gaW1wb3J0bGliIGltcG9ydCBpbXBvcnRfbW9kdWxlCi1mcm9tIGlkbGVsaWIubWFjb3N4U3VwcG9ydCBpbXBvcnQgX2luaXRpYWxpemVUa1ZhcmlhbnRUZXN0cwogaW1wb3J0IHRraW50ZXIgYXMgdGsKK2Zyb20gdGtpbnRlci50dGsgaW1wb3J0IFNjcm9sbGJhcgordGsuTm9EZWZhdWx0Um9vdCgpCiAKIEFib3V0RGlhbG9nX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnYWJvdXREaWFsb2cnLAotICAgICdrd2RzJzogeyd0aXRsZSc6ICdhYm91dERpYWxvZyB0ZXN0JywKKyAgICAnZmlsZSc6ICdoZWxwX2Fib3V0JywKKyAgICAna3dkcyc6IHsndGl0bGUnOiAnaGVscF9hYm91dCB0ZXN0JywKICAgICAgICAgICAgICAnX2h0ZXN0JzogVHJ1ZSwKICAgICAgICAgICAgICB9LAogICAgICdtc2cnOiAiVGVzdCBldmVyeSBidXR0b24uIEVuc3VyZSBQeXRob24sIFRLIGFuZCBJRExFIHZlcnNpb25zICIKQEAgLTc5LDE0ICs4MCwxNCBAQAogICAgIH0KIAogX2NhbGx0aXBfd2luZG93X3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnQ2FsbFRpcFdpbmRvdycsCisgICAgJ2ZpbGUnOiAnY2FsbHRpcF93JywKICAgICAna3dkcyc6IHt9LAogICAgICdtc2cnOiAiVHlwaW5nICcoJyBzaG91bGQgZGlzcGxheSBhIGNhbGx0aXAuXG4iCiAgICAgICAgICAgICJUeXBpbmcgJykgc2hvdWxkIGhpZGUgdGhlIGNhbGx0aXAuXG4iCiAgICAgfQogCiBfY2xhc3NfYnJvd3Nlcl9zcGVjID0gewotICAgICdmaWxlJzogJ0NsYXNzQnJvd3NlcicsCisgICAgJ2ZpbGUnOiAnYnJvd3NlcicsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIkluc3BlY3QgbmFtZXMgb2YgbW9kdWxlLCBjbGFzcyh3aXRoIHN1cGVyY2xhc3MgaWYgIgogICAgICAgICAgICAiYXBwbGljYWJsZSksIG1ldGhvZHMgYW5kIGZ1bmN0aW9ucy5cblRvZ2dsZSBuZXN0ZWQgaXRlbXMuXG4iCkBAIC05NSw3ICs5Niw3IEBACiAgICAgfQogCiBfY29sb3JfZGVsZWdhdG9yX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnQ29sb3JEZWxlZ2F0b3InLAorICAgICdmaWxlJzogJ2NvbG9yaXplcicsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIlRoZSB0ZXh0IGlzIHNhbXBsZSBQeXRob24gY29kZS5cbiIKICAgICAgICAgICAgIkVuc3VyZSBjb21wb25lbnRzIGxpa2UgY29tbWVudHMsIGtleXdvcmRzLCBidWlsdGlucyxcbiIKQEAgLTEwNCw3ICsxMDUsNyBAQAogICAgIH0KIAogQ29uZmlnRGlhbG9nX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnY29uZmlnRGlhbG9nJywKKyAgICAnZmlsZSc6ICdjb25maWdkaWFsb2cnLAogICAgICdrd2RzJzogeyd0aXRsZSc6ICdDb25maWdEaWFsb2dUZXN0JywKICAgICAgICAgICAgICAnX2h0ZXN0JzogVHJ1ZSx9LAogICAgICdtc2cnOiAiSURMRSBwcmVmZXJlbmNlcyBkaWFsb2cuXG4iCkBAIC0xMjEsNyArMTIyLDcgQEAKIAogIyBUT0RPIEltcHJvdmUgbWVzc2FnZQogX2R5bl9vcHRpb25fbWVudV9zcGVjID0gewotICAgICdmaWxlJzogJ2R5bk9wdGlvbk1lbnVXaWRnZXQnLAorICAgICdmaWxlJzogJ2R5bm9wdGlvbicsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIlNlbGVjdCBvbmUgb2YgdGhlIG1hbnkgb3B0aW9ucyBpbiB0aGUgJ29sZCBvcHRpb24gc2V0Jy5cbiIKICAgICAgICAgICAgIkNsaWNrIHRoZSBidXR0b24gdG8gY2hhbmdlIHRoZSBvcHRpb24gc2V0LlxuIgpAQCAtMTMwLDM5ICsxMzEsMTUgQEAKIAogIyBUT0RPIGVkaXQgd3JhcHBlcgogX2VkaXRvcl93aW5kb3dfc3BlYyA9IHsKLSAgICdmaWxlJzogJ0VkaXRvcldpbmRvdycsCisgICAnZmlsZSc6ICdlZGl0b3InLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJUZXN0IGVkaXRvciBmdW5jdGlvbnMgb2YgaW50ZXJlc3QuXG4iCiAgICAgICAgICAgICJCZXN0IHRvIGNsb3NlIGVkaXRvciBmaXJzdC4iCiAgICAgfQogCi1HZXRDZmdTZWN0aW9uTmFtZURpYWxvZ19zcGVjID0gewotICAgICdmaWxlJzogJ2NvbmZpZ1NlY3Rpb25OYW1lRGlhbG9nJywKLSAgICAna3dkcyc6IHsndGl0bGUnOidHZXQgTmFtZScsCi0gICAgICAgICAgICAgJ21lc3NhZ2UnOidFbnRlciBzb21ldGhpbmcnLAotICAgICAgICAgICAgICd1c2VkX25hbWVzJzogeydhYmMnfSwKLSAgICAgICAgICAgICAnX2h0ZXN0JzogVHJ1ZX0sCi0gICAgJ21zZyc6ICJBZnRlciB0aGUgdGV4dCBlbnRlcmVkIHdpdGggW09rXSBpcyBzdHJpcHBlZCwgPG5vdGhpbmc+LCAiCi0gICAgICAgICAgICInYWJjJywgb3IgbW9yZSB0aGF0IDMwIGNoYXJzIGFyZSBlcnJvcnMuXG4iCi0gICAgICAgICAgICJDbG9zZSAnR2V0IE5hbWUnIHdpdGggYSB2YWxpZCBlbnRyeSAocHJpbnRlZCB0byBTaGVsbCksICIKLSAgICAgICAgICAgIltDYW5jZWxdLCBvciBbWF0iLAotICAgIH0KLQotR2V0SGVscFNvdXJjZURpYWxvZ19zcGVjID0gewotICAgICdmaWxlJzogJ2NvbmZpZ0hlbHBTb3VyY2VFZGl0JywKLSAgICAna3dkcyc6IHsndGl0bGUnOiAnR2V0IGhlbHBzb3VyY2UnLAotICAgICAgICAgICAgICdfaHRlc3QnOiBUcnVlfSwKLSAgICAnbXNnJzogIkVudGVyIG1lbnUgaXRlbSBuYW1lIGFuZCBoZWxwIGZpbGUgcGF0aFxuICIKLSAgICAgICAgICAgIjxub3RoaW5nPiBhbmQgbW9yZSB0aGFuIDMwIGNoYXJzIGFyZSBpbnZhbGlkIG1lbnUgaXRlbSBuYW1lcy5cbiIKLSAgICAgICAgICAgIjxub3RoaW5nPiwgZmlsZSBkb2VzIG5vdCBleGlzdCBhcmUgaW52YWxpZCBwYXRoIGl0ZW1zLlxuIgotICAgICAgICAgICAiVGVzdCBmb3IgaW5jb21wbGV0ZSB3ZWIgYWRkcmVzcyBmb3IgaGVscCBmaWxlIHBhdGguXG4iCi0gICAgICAgICAgICJBIHZhbGlkIGVudHJ5IHdpbGwgYmUgcHJpbnRlZCB0byBzaGVsbCB3aXRoIFswa10uXG4iCi0gICAgICAgICAgICJbQ2FuY2VsXSB3aWxsIHByaW50IE5vbmUgdG8gc2hlbGwiLAotICAgIH0KLQogIyBVcGRhdGUgb25jZSBpc3N1ZTIxNTE5IGlzIHJlc29sdmVkLgogR2V0S2V5c0RpYWxvZ19zcGVjID0gewotICAgICdmaWxlJzogJ2tleWJpbmRpbmdEaWFsb2cnLAorICAgICdmaWxlJzogJ2NvbmZpZ19rZXknLAogICAgICdrd2RzJzogeyd0aXRsZSc6ICdUZXN0IGtleWJpbmRpbmdzJywKICAgICAgICAgICAgICAnYWN0aW9uJzogJ2ZpbmQtYWdhaW4nLAogICAgICAgICAgICAgICdjdXJyZW50S2V5U2VxdWVuY2VzJzogWycnXSAsCkBAIC0xNzcsNyArMTU0LDcgQEAKICAgICB9CiAKIF9ncmVwX2RpYWxvZ19zcGVjID0gewotICAgICdmaWxlJzogJ0dyZXBEaWFsb2cnLAorICAgICdmaWxlJzogJ2dyZXAnLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJDbGljayB0aGUgJ1Nob3cgR3JlcERpYWxvZycgYnV0dG9uLlxuIgogICAgICAgICAgICAiVGVzdCB0aGUgdmFyaW91cyAnRmluZC1pbi1maWxlcycgZnVuY3Rpb25zLlxuIgpAQCAtMTg2LDggKzE2MywyNCBAQAogICAgICAgICAgICAic2hvdWxkIG9wZW4gdGhhdCBmaWxlIFxuaW4gYSBuZXcgRWRpdG9yV2luZG93LiIKICAgICB9CiAKK0hlbHBTb3VyY2Vfc3BlYyA9IHsKKyAgICAnZmlsZSc6ICdxdWVyeScsCisgICAgJ2t3ZHMnOiB7J3RpdGxlJzogJ0hlbHAgbmFtZSBhbmQgc291cmNlJywKKyAgICAgICAgICAgICAnbWVudWl0ZW0nOiAndGVzdCcsCisgICAgICAgICAgICAgJ2ZpbGVwYXRoJzogX19maWxlX18sCisgICAgICAgICAgICAgJ3VzZWRfbmFtZXMnOiB7J2FiYyd9LAorICAgICAgICAgICAgICdfaHRlc3QnOiBUcnVlfSwKKyAgICAnbXNnJzogIkVudGVyIG1lbnUgaXRlbSBuYW1lIGFuZCBoZWxwIGZpbGUgcGF0aFxuIgorICAgICAgICAgICAiJycsID4gdGhhbiAzMCBjaGFycywgYW5kICdhYmMnIGFyZSBpbnZhbGlkIG1lbnUgaXRlbSBuYW1lcy5cbiIKKyAgICAgICAgICAgIicnIGFuZCBmaWxlIGRvZXMgbm90IGV4aXN0IGFyZSBpbnZhbGlkIHBhdGggaXRlbXMuXG4iCisgICAgICAgICAgICJBbnkgdXJsICgnd3d3Li4uJywgJ2h0dHAuLi4nKSBpcyBhY2NlcHRlZC5cbiIKKyAgICAgICAgICAgIlRlc3QgQnJvd3NlIHdpdGggYW5kIHdpdGhvdXQgcGF0aCwgYXMgY2Fubm90IHVuaXR0ZXN0LlxuIgorICAgICAgICAgICAiW09rXSBvciA8UmV0dXJuPiBwcmludHMgdmFsaWQgZW50cnkgdG8gc2hlbGxcbiIKKyAgICAgICAgICAgIltDYW5jZWxdIG9yIDxFc2NhcGU+IHByaW50cyBOb25lIHRvIHNoZWxsIgorICAgIH0KKwogX2lvX2JpbmRpbmdfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdJT0JpbmRpbmcnLAorICAgICdmaWxlJzogJ2lvbWVudScsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIlRlc3QgdGhlIGZvbGxvd2luZyBiaW5kaW5ncy5cbiIKICAgICAgICAgICAgIjxDb250cm9sLW8+IHRvIG9wZW4gZmlsZSBmcm9tIGRpYWxvZy5cbiIKQEAgLTIwMCw3ICsxOTMsNyBAQAogICAgIH0KIAogX211bHRpX2NhbGxfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdNdWx0aUNhbGwnLAorICAgICdmaWxlJzogJ211bHRpY2FsbCcsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIlRoZSBmb2xsb3dpbmcgYWN0aW9ucyBzaG91bGQgdHJpZ2dlciBhIHByaW50IHRvIGNvbnNvbGUgb3IgSURMRSIKICAgICAgICAgICAgIiBTaGVsbC5cbkVudGVyaW5nIGFuZCBsZWF2aW5nIHRoZSB0ZXh0IGFyZWEsIGtleSBlbnRyeSwgIgpAQCAtMjEwLDE0ICsyMDMsMTQgQEAKICAgICB9CiAKIF9tdWx0aXN0YXR1c19iYXJfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdNdWx0aVN0YXR1c0JhcicsCisgICAgJ2ZpbGUnOiAnc3RhdHVzYmFyJywKICAgICAna3dkcyc6IHt9LAogICAgICdtc2cnOiAiRW5zdXJlIHByZXNlbmNlIG9mIG11bHRpLXN0YXR1cyBiYXIgYmVsb3cgdGV4dCBhcmVhLlxuIgogICAgICAgICAgICAiQ2xpY2sgJ1VwZGF0ZSBTdGF0dXMnIHRvIGNoYW5nZSB0aGUgbXVsdGktc3RhdHVzIHRleHQiCiAgICAgfQogCiBfb2JqZWN0X2Jyb3dzZXJfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdPYmplY3RCcm93c2VyJywKKyAgICAnZmlsZSc6ICdkZWJ1Z29iaicsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIkRvdWJsZSBjbGljayBvbiBpdGVtcyB1cHRvIHRoZSBsb3dlc3QgbGV2ZWwuXG4iCiAgICAgICAgICAgICJBdHRyaWJ1dGVzIG9mIHRoZSBvYmplY3RzIGFuZCByZWxhdGVkIGluZm9ybWF0aW9uICIKQEAgLTIyNSw3ICsyMTgsNyBAQAogICAgIH0KIAogX3BhdGhfYnJvd3Nlcl9zcGVjID0gewotICAgICdmaWxlJzogJ1BhdGhCcm93c2VyJywKKyAgICAnZmlsZSc6ICdwYXRoYnJvd3NlcicsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIlRlc3QgZm9yIGNvcnJlY3QgZGlzcGxheSBvZiBhbGwgcGF0aHMgaW4gc3lzLnBhdGguXG4iCiAgICAgICAgICAgICJUb2dnbGUgbmVzdGVkIGl0ZW1zIHVwdG8gdGhlIGxvd2VzdCBsZXZlbC5cbiIKQEAgLTIzNCw3ICsyMjcsNyBAQAogICAgIH0KIAogX3BlcmNvbGF0b3Jfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdQZXJjb2xhdG9yJywKKyAgICAnZmlsZSc6ICdwZXJjb2xhdG9yJywKICAgICAna3dkcyc6IHt9LAogICAgICdtc2cnOiAiVGhlcmUgYXJlIHR3byB0cmFjZXJzIHdoaWNoIGNhbiBiZSB0b2dnbGVkIHVzaW5nIGEgY2hlY2tib3guXG4iCiAgICAgICAgICAgICJUb2dnbGluZyBhIHRyYWNlciAnb24nIGJ5IGNoZWNraW5nIGl0IHNob3VsZCBwcmludCB0cmFjZXIiCkBAIC0yNDQsOCArMjM3LDIwIEBACiAgICAgICAgICAgICJUZXN0IGZvciBhY3Rpb25zIGxpa2UgdGV4dCBlbnRyeSwgYW5kIHJlbW92YWwuIgogICAgIH0KIAorUXVlcnlfc3BlYyA9IHsKKyAgICAnZmlsZSc6ICdxdWVyeScsCisgICAgJ2t3ZHMnOiB7J3RpdGxlJzogJ1F1ZXJ5JywKKyAgICAgICAgICAgICAnbWVzc2FnZSc6ICdFbnRlciBzb21ldGhpbmcnLAorICAgICAgICAgICAgICd0ZXh0MCc6ICdHbycsCisgICAgICAgICAgICAgJ19odGVzdCc6IFRydWV9LAorICAgICdtc2cnOiAiRW50ZXIgd2l0aCA8UmV0dXJuPiBvciBbT2tdLiAgUHJpbnQgdmFsaWQgZW50cnkgdG8gU2hlbGxcbiIKKyAgICAgICAgICAgIkJsYW5rIGxpbmUsIGFmdGVyIHN0cmlwcGluZywgaXMgaWdub3JlZFxuIgorICAgICAgICAgICAiQ2xvc2UgZGlhbG9nIHdpdGggdmFsaWQgZW50cnksIDxFc2NhcGU+LCBbQ2FuY2VsXSwgW1hdIgorICAgIH0KKworCiBfcmVwbGFjZV9kaWFsb2dfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdSZXBsYWNlRGlhbG9nJywKKyAgICAnZmlsZSc6ICdyZXBsYWNlJywKICAgICAna3dkcyc6IHt9LAogICAgICdtc2cnOiAiQ2xpY2sgdGhlICdSZXBsYWNlJyBidXR0b24uXG4iCiAgICAgICAgICAgICJUZXN0IHZhcmlvdXMgcmVwbGFjZSBvcHRpb25zIGluIHRoZSAnUmVwbGFjZSBkaWFsb2cnLlxuIgpAQCAtMjUzLDE1ICsyNTgsMjIgQEAKICAgICB9CiAKIF9zZWFyY2hfZGlhbG9nX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnU2VhcmNoRGlhbG9nJywKKyAgICAnZmlsZSc6ICdzZWFyY2gnLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJDbGljayB0aGUgJ1NlYXJjaCcgYnV0dG9uLlxuIgogICAgICAgICAgICAiVGVzdCB2YXJpb3VzIHNlYXJjaCBvcHRpb25zIGluIHRoZSAnU2VhcmNoIGRpYWxvZycuXG4iCiAgICAgICAgICAgICJDbGljayBbQ2xvc2VdIG9yIFtYXSB0byBjbG9zZSB0aGUgJ1NlYXJjaCBEaWFsb2cnLiIKICAgICB9CiAKK19zZWFyY2hiYXNlX3NwZWMgPSB7CisgICAgJ2ZpbGUnOiAnc2VhcmNoYmFzZScsCisgICAgJ2t3ZHMnOiB7fSwKKyAgICAnbXNnJzogIkNoZWNrIHRoZSBhcHBlYXJhbmNlIG9mIHRoZSBiYXNlIHNlYXJjaCBkaWFsb2dcbiIKKyAgICAgICAgICAgIkl0cyBvbmx5IGFjdGlvbiBpcyB0byBjbG9zZS4iCisgICAgfQorCiBfc2Nyb2xsZWRfbGlzdF9zcGVjID0gewotICAgICdmaWxlJzogJ1Njcm9sbGVkTGlzdCcsCisgICAgJ2ZpbGUnOiAnc2Nyb2xsZWRsaXN0JywKICAgICAna3dkcyc6IHt9LAogICAgICdtc2cnOiAiWW91IHNob3VsZCBzZWUgYSBzY3JvbGxhYmxlIGxpc3Qgb2YgaXRlbXNcbiIKICAgICAgICAgICAgIlNlbGVjdGluZyAoY2xpY2tpbmcpIG9yIGRvdWJsZSBjbGlja2luZyBhbiBpdGVtICIKQEAgLTI3Nyw3ICsyODksNyBAQAogICAgIH0KIAogX3N0YWNrX3ZpZXdlcl9zcGVjID0gewotICAgICdmaWxlJzogJ1N0YWNrVmlld2VyJywKKyAgICAnZmlsZSc6ICdzdGFja3ZpZXdlcicsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIkEgc3RhY2t0cmFjZSBmb3IgYSBOYW1lRXJyb3IgZXhjZXB0aW9uLlxuIgogICAgICAgICAgICAiRXhwYW5kICdpZGxlbGliIC4uLicgYW5kICc8bG9jYWxzPicuXG4iCkBAIC0yOTUsOCArMzA3LDggQEAKICAgICB9CiAKIFRleHRWaWV3ZXJfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICd0ZXh0VmlldycsCi0gICAgJ2t3ZHMnOiB7J3RpdGxlJzogJ1Rlc3QgdGV4dFZpZXcnLAorICAgICdmaWxlJzogJ3RleHR2aWV3JywKKyAgICAna3dkcyc6IHsndGl0bGUnOiAnVGVzdCB0ZXh0dmlldycsCiAgICAgICAgICAgICAgJ3RleHQnOidUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nLlxuJyozNSwKICAgICAgICAgICAgICAnX2h0ZXN0JzogVHJ1ZX0sCiAgICAgJ21zZyc6ICJUZXN0IGZvciByZWFkLW9ubHkgcHJvcGVydHkgb2YgdGV4dC5cbiIKQEAgLTMwNCwyMSArMzE2LDIxIEBACiAgICAgIH0KIAogX3Rvb2x0aXBfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdUb29sVGlwJywKKyAgICAnZmlsZSc6ICd0b29sdGlwJywKICAgICAna3dkcyc6IHt9LAogICAgICdtc2cnOiAiUGxhY2UgbW91c2UgY3Vyc29yIG92ZXIgYm90aCB0aGUgYnV0dG9uc1xuIgogICAgICAgICAgICAiQSB0b29sdGlwIHNob3VsZCBhcHBlYXIgd2l0aCBzb21lIHRleHQuIgogICAgIH0KIAogX3RyZWVfd2lkZ2V0X3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnVHJlZVdpZGdldCcsCisgICAgJ2ZpbGUnOiAndHJlZScsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIlRoZSBjYW52YXMgaXMgc2Nyb2xsYWJsZS5cbiIKICAgICAgICAgICAgIkNsaWNrIG9uIGZvbGRlcnMgdXB0byB0byB0aGUgbG93ZXN0IGxldmVsLiIKICAgICB9CiAKIF91bmRvX2RlbGVnYXRvcl9zcGVjID0gewotICAgICdmaWxlJzogJ1VuZG9EZWxlZ2F0b3InLAorICAgICdmaWxlJzogJ3VuZG8nLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJDbGljayBbVW5kb10gdG8gdW5kbyBhbnkgYWN0aW9uLlxuIgogICAgICAgICAgICAiQ2xpY2sgW1JlZG9dIHRvIHJlZG8gYW55IGFjdGlvbi5cbiIKQEAgLTMyNyw3ICszMzksNyBAQAogICAgIH0KIAogX3dpZGdldF9yZWRpcmVjdG9yX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnV2lkZ2V0UmVkaXJlY3RvcicsCisgICAgJ2ZpbGUnOiAncmVkaXJlY3RvcicsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIkV2ZXJ5IHRleHQgaW5zZXJ0IHNob3VsZCBiZSBwcmludGVkIHRvIHRoZSBjb25zb2xlLiIKICAgICAgICAgICAgIm9yIHRoZSBJRExFIHNoZWxsLiIKQEAgLTMzNywxNCArMzQ5LDEzIEBACiAgICAgcm9vdCA9IHRrLlRrKCkKICAgICByb290LnRpdGxlKCdJRExFIGh0ZXN0JykKICAgICByb290LnJlc2l6YWJsZSgwLCAwKQotICAgIF9pbml0aWFsaXplVGtWYXJpYW50VGVzdHMocm9vdCkKIAogICAgICMgYSBzY3JvbGxhYmxlIExhYmVsIGxpa2UgY29uc3RhbnQgd2lkdGggdGV4dCB3aWRnZXQuCiAgICAgZnJhbWVMYWJlbCA9IHRrLkZyYW1lKHJvb3QsIHBhZHg9MTApCiAgICAgZnJhbWVMYWJlbC5wYWNrKCkKICAgICB0ZXh0ID0gdGsuVGV4dChmcmFtZUxhYmVsLCB3cmFwPSd3b3JkJykKICAgICB0ZXh0LmNvbmZpZ3VyZShiZz1yb290LmNnZXQoJ2JnJyksIHJlbGllZj0nZmxhdCcsIGhlaWdodD00LCB3aWR0aD03MCkKLSAgICBzY3JvbGxiYXIgPSB0ay5TY3JvbGxiYXIoZnJhbWVMYWJlbCwgY29tbWFuZD10ZXh0Lnl2aWV3KQorICAgIHNjcm9sbGJhciA9IFNjcm9sbGJhcihmcmFtZUxhYmVsLCBjb21tYW5kPXRleHQueXZpZXcpCiAgICAgdGV4dC5jb25maWcoeXNjcm9sbGNvbW1hbmQ9c2Nyb2xsYmFyLnNldCkKICAgICBzY3JvbGxiYXIucGFjayhzaWRlPSdyaWdodCcsIGZpbGw9J3knLCBleHBhbmQ9RmFsc2UpCiAgICAgdGV4dC5wYWNrKHNpZGU9J2xlZnQnLCBmaWxsPSdib3RoJywgZXhwYW5kPVRydWUpCkBAIC0zNjUsMTEgKzM3NiwxMSBAQAogICAgICAgICAgICAgICAgIHRlc3QgPSBnZXRhdHRyKG1vZCwgdGVzdF9uYW1lKQogICAgICAgICAgICAgICAgIHRlc3RfbGlzdC5hcHBlbmQoKHRlc3Rfc3BlYywgdGVzdCkpCiAKLSAgICB0ZXN0X25hbWUgPSB0ay5TdHJpbmdWYXIoJycpCisgICAgdGVzdF9uYW1lID0gdGsuU3RyaW5nVmFyKHJvb3QpCiAgICAgY2FsbGFibGVfb2JqZWN0ID0gTm9uZQogICAgIHRlc3Rfa3dkcyA9IE5vbmUKIAotICAgIGRlZiBuZXh0KCk6CisgICAgZGVmIG5leHRfdGVzdCgpOgogCiAgICAgICAgIG5vbmxvY2FsIHRlc3RfbmFtZSwgY2FsbGFibGVfb2JqZWN0LCB0ZXN0X2t3ZHMKICAgICAgICAgaWYgbGVuKHRlc3RfbGlzdCkgPT0gMToKQEAgLTM4NCwyMCArMzk1LDI2IEBACiAgICAgICAgIHRleHQuaW5zZXJ0KCIxLjAiLHRlc3Rfc3BlY1snbXNnJ10pCiAgICAgICAgIHRleHQuY29uZmlndXJlKHN0YXRlPSdkaXNhYmxlZCcpICMgcHJlc2VydmUgcmVhZC1vbmx5IHByb3BlcnR5CiAKLSAgICBkZWYgcnVuX3Rlc3QoKToKKyAgICBkZWYgcnVuX3Rlc3QoXz1Ob25lKToKICAgICAgICAgd2lkZ2V0ID0gY2FsbGFibGVfb2JqZWN0KCoqdGVzdF9rd2RzKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBwcmludCh3aWRnZXQucmVzdWx0KQogICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICBwYXNzCiAKLSAgICBidXR0b24gPSB0ay5CdXR0b24ocm9vdCwgdGV4dHZhcmlhYmxlPXRlc3RfbmFtZSwgY29tbWFuZD1ydW5fdGVzdCkKKyAgICBkZWYgY2xvc2UoXz1Ob25lKToKKyAgICAgICAgcm9vdC5kZXN0cm95KCkKKworICAgIGJ1dHRvbiA9IHRrLkJ1dHRvbihyb290LCB0ZXh0dmFyaWFibGU9dGVzdF9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PSdhY3RpdmUnLCBjb21tYW5kPXJ1bl90ZXN0KQorICAgIG5leHRfYnV0dG9uID0gdGsuQnV0dG9uKHJvb3QsIHRleHQ9Ik5leHQiLCBjb21tYW5kPW5leHRfdGVzdCkKICAgICBidXR0b24ucGFjaygpCi0gICAgbmV4dF9idXR0b24gPSB0ay5CdXR0b24ocm9vdCwgdGV4dD0iTmV4dCIsIGNvbW1hbmQ9bmV4dCkKICAgICBuZXh0X2J1dHRvbi5wYWNrKCkKKyAgICBuZXh0X2J1dHRvbi5mb2N1c19zZXQoKQorICAgIHJvb3QuYmluZCgnPEtleS1SZXR1cm4+JywgcnVuX3Rlc3QpCisgICAgcm9vdC5iaW5kKCc8S2V5LUVzY2FwZT4nLCBjbG9zZSkKIAotICAgIG5leHQoKQotCisgICAgbmV4dF90ZXN0KCkKICAgICByb290Lm1haW5sb29wKCkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC9tb2NrX2lkbGUucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvbW9ja19pZGxlLnB5CmluZGV4IDE2NzJhMzQuLmM3YjQ5ZWYgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC9tb2NrX2lkbGUucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L21vY2tfaWRsZS5weQpAQCAtMzMsNyArMzMsNyBAQAogCiAKIGNsYXNzIEVkaXRvcjoKLSAgICAnJydNaW5pbWFsbHkgaW1pdGF0ZSBFZGl0b3JXaW5kb3cuRWRpdG9yV2luZG93IGNsYXNzLgorICAgICcnJ01pbmltYWxseSBpbWl0YXRlIGVkaXRvci5FZGl0b3JXaW5kb3cgY2xhc3MuCiAgICAgJycnCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZsaXN0PU5vbmUsIGZpbGVuYW1lPU5vbmUsIGtleT1Ob25lLCByb290PU5vbmUpOgogICAgICAgICBzZWxmLnRleHQgPSBUZXh0KCkKQEAgLTQ2LDcgKzQ2LDcgQEAKIAogCiBjbGFzcyBVbmRvRGVsZWdhdG9yOgotICAgICcnJ01pbmltYWxseSBpbWl0YXRlIFVuZG9EZWxlZ2F0b3IsVW5kb0RlbGVnYXRvciBjbGFzcy4KKyAgICAnJydNaW5pbWFsbHkgaW1pdGF0ZSB1bmRvLlVuZG9EZWxlZ2F0b3IgY2xhc3MuCiAgICAgJycnCiAgICAgIyBBIHJlYWwgdW5kbyBibG9jayBpcyBvbmx5IG5lZWRlZCBmb3IgdXNlciBpbnRlcmFjdGlvbi4KICAgICBkZWYgdW5kb19ibG9ja19zdGFydCgqYXJncyk6CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9hdXRvY29tcGxldGUucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9hdXRvY29tcGxldGUucHkKaW5kZXggNWZjODk5ZC4uZjNmMmRlYSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfYXV0b2NvbXBsZXRlLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2F1dG9jb21wbGV0ZS5weQpAQCAtMSw5ICsxLDEzIEBACisnJycgVGVzdCBhdXRvY29tcGxldGUgYW5kIGF1dG9jb21wbGVfdworCitDb3ZlcmFnZSBvZiBhdXRvY29tcGxlOiA1NiUKKycnJwogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKIGZyb20gdGtpbnRlciBpbXBvcnQgVGssIFRleHQKIAotaW1wb3J0IGlkbGVsaWIuQXV0b0NvbXBsZXRlIGFzIGFjCi1pbXBvcnQgaWRsZWxpYi5BdXRvQ29tcGxldGVXaW5kb3cgYXMgYWN3CitpbXBvcnQgaWRsZWxpYi5hdXRvY29tcGxldGUgYXMgYWMKK2ltcG9ydCBpZGxlbGliLmF1dG9jb21wbGV0ZV93IGFzIGFjdwogZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX2lkbGUgaW1wb3J0IEZ1bmMKIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja190ayBpbXBvcnQgRXZlbnQKIApAQCAtOTEsNiArOTUsMTEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoYXV0b2NvbXBsZXRlLmF1dG9jb21wbGV0ZV9ldmVudChldikpCiAgICAgICAgIGRlbCBldi5tY19zdGF0ZQogCisgICAgICAgICMgVGVzdCB0aGF0IHRhYiBhZnRlciB3aGl0ZXNwYWNlIGlzIGlnbm9yZWQuCisgICAgICAgIHNlbGYudGV4dC5pbnNlcnQoJzEuMCcsICcgICAgICAgICIiIkRvY3N0cmluZy5cbiAgICAnKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShhdXRvY29tcGxldGUuYXV0b2NvbXBsZXRlX2V2ZW50KGV2KSkKKyAgICAgICAgc2VsZi50ZXh0LmRlbGV0ZSgnMS4wJywgJ2VuZCcpCisKICAgICAgICAgIyBJZiBhdXRvY29tcGxldGUgd2luZG93IGlzIG9wZW4sIGNvbXBsZXRlKCkgbWV0aG9kIGlzIGNhbGxlZAogICAgICAgICBzZWxmLnRleHQuaW5zZXJ0KCcxLjAnLCAncmUuJykKICAgICAgICAgIyBUaGlzIG11c3QgY2FsbCBhdXRvY29tcGxldGUuX21ha2VfYXV0b2NvbXBsZXRlX3dpbmRvdygpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9hdXRvZXhwYW5kLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfYXV0b2V4cGFuZC5weQppbmRleCBkMmEzMTU2Li5hZTgxODZjIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9hdXRvZXhwYW5kLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2F1dG9leHBhbmQucHkKQEAgLTEsOSArMSw5IEBACi0iIiJVbml0IHRlc3RzIGZvciBpZGxlbGliLkF1dG9FeHBhbmQiIiIKKyIiIlVuaXQgdGVzdHMgZm9yIGlkbGVsaWIuYXV0b2V4cGFuZCIiIgogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKIGZyb20gdGtpbnRlciBpbXBvcnQgVGV4dCwgVGsKICNmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lm1vY2tfdGsgaW1wb3J0IFRleHQKLWZyb20gaWRsZWxpYi5BdXRvRXhwYW5kIGltcG9ydCBBdXRvRXhwYW5kCitmcm9tIGlkbGVsaWIuYXV0b2V4cGFuZCBpbXBvcnQgQXV0b0V4cGFuZAogCiAKIGNsYXNzIER1bW15X0VkaXR3aW46CkBAIC0yMiw2ICsyMiw3IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBjbHMudGV4dCA9IFRleHQoKQogICAgICAgICBjbHMuYXV0b19leHBhbmQgPSBBdXRvRXhwYW5kKER1bW15X0VkaXR3aW4oY2xzLnRleHQpKQorICAgICAgICBjbHMuYXV0b19leHBhbmQuYmVsbCA9IGxhbWJkYTogTm9uZQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKQEAgLTEzNyw1ICsxMzgsNiBAQAogICAgICAgICBuZXdfc3RhdGUgPSBzZWxmLmF1dG9fZXhwYW5kLnN0YXRlCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaW5pdGlhbF9zdGF0ZSwgbmV3X3N0YXRlKQogCisKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MikKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NhbGx0aXBzLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY2FsbHRpcHMucHkKaW5kZXggYjJhNzMzYy4uMGIxMTYwMiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY2FsbHRpcHMucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY2FsbHRpcHMucHkKQEAgLTEsNSArMSw1IEBACiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBpZGxlbGliLkNhbGxUaXBzIGFzIGN0CitpbXBvcnQgaWRsZWxpYi5jYWxsdGlwcyBhcyBjdAogaW1wb3J0IHRleHR3cmFwCiBpbXBvcnQgdHlwZXMKIApkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29sb3JpemVyLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29sb3JpemVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzOGJjM2UKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jb2xvcml6ZXIucHkKQEAgLTAsMCArMSw1NiBAQAorJycnVGVzdCBpZGxlbGliL2NvbG9yaXplci5weQorCitQZXJmb3JtIG1pbmltYWwgc2FuaXR5IGNoZWNrcyB0aGF0IG1vZHVsZSBpbXBvcnRzIGFuZCBzb21lIHRoaW5ncyBydW4uCisKK0NvdmVyYWdlIDIyJS4KKycnJworZnJvbSBpZGxlbGliIGltcG9ydCBjb2xvcml6ZXIgICMgYWx3YXlzIHRlc3QgaW1wb3J0Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKK2Zyb20gdGtpbnRlciBpbXBvcnQgVGssIFRleHQKK2ltcG9ydCB1bml0dGVzdAorCisKK2NsYXNzIEZ1bmN0aW9uVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9hbnkoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb2xvcml6ZXIuYW55KCd0ZXN0JywgKCdhJywgJ2InKSkpCisKKyAgICBkZWYgdGVzdF9tYWtlX3BhdChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvbG9yaXplci5tYWtlX3BhdCgpKQorCisKK2NsYXNzIENvbG9yQ29uZmlnVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICByZXF1aXJlcygnZ3VpJykKKyAgICAgICAgY2xzLnJvb3QgPSBUaygpCisgICAgICAgIGNscy50ZXh0ID0gVGV4dChjbHMucm9vdCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgIGRlbCBjbHMudGV4dAorICAgICAgICBjbHMucm9vdC5kZXN0cm95KCkKKyAgICAgICAgZGVsIGNscy5yb290CisKKyAgICBkZWYgdGVzdF9jb2xvcml6ZXIoc2VsZik6CisgICAgICAgIGNvbG9yaXplci5jb2xvcl9jb25maWcoc2VsZi50ZXh0KQorCitjbGFzcyBDb2xvckRlbGVnYXRvclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgcmVxdWlyZXMoJ2d1aScpCisgICAgICAgIGNscy5yb290ID0gVGsoKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgY2xzLnJvb3QuZGVzdHJveSgpCisgICAgICAgIGRlbCBjbHMucm9vdAorCisgICAgZGVmIHRlc3RfY29sb3JpemVyKHNlbGYpOgorICAgICAgICBjb2xvcml6ZXIuQ29sb3JEZWxlZ2F0b3IoKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MikKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NvbmZpZy5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NvbmZpZy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hM2ZhMWEzCi0tLSAvZGV2L251bGwKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29uZmlnLnB5CkBAIC0wLDAgKzEsMTYwIEBACisnJydUZXN0IGlkbGVsaWIuY29uZmlnLgorCitNdWNoIGlzIHRlc3RlZCBieSBvcGVuaW5nIGNvbmZpZyBkaWFsb2cgbGl2ZSBvciBpbiB0ZXN0X2NvbmZpZ2RpYWxvZy4KK0NvdmVyYWdlOiAyNyUKKycnJworZnJvbSBzeXMgaW1wb3J0IG1vZHVsZXMKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBjYXB0dXJlZF9zdGRlcnIKK2Zyb20gdGtpbnRlciBpbXBvcnQgVGsKK2ltcG9ydCB1bml0dGVzdAorZnJvbSBpZGxlbGliIGltcG9ydCBjb25maWcKKworIyBUZXN0cyBzaG91bGQgbm90IGRlcGVuZCBvbiBmb3J0dWl0b3VzIHVzZXIgY29uZmlndXJhdGlvbnMuCisjIFRoZXkgbXVzdCBub3QgYWZmZWN0IGFjdHVhbCB1c2VyIC5jZmcgZmlsZXMuCisjIFJlcGxhY2UgdXNlciBwYXJzZXJzIHdpdGggZW1wdHkgcGFyc2VycyB0aGF0IGNhbm5vdCBiZSBzYXZlZC4KKworaWRsZUNvbmYgPSBjb25maWcuaWRsZUNvbmYKK3VzZXJjZmcgPSBpZGxlQ29uZi51c2VyQ2ZnCit0ZXN0Y2ZnID0ge30KK3VzZXJtYWluID0gdGVzdGNmZ1snbWFpbiddID0gY29uZmlnLklkbGVVc2VyQ29uZlBhcnNlcignJykgICMgZmlsZW5hbWUKK3VzZXJoaWdoID0gdGVzdGNmZ1snaGlnaGxpZ2h0J10gPSBjb25maWcuSWRsZVVzZXJDb25mUGFyc2VyKCcnKQordXNlcmtleXMgPSB0ZXN0Y2ZnWydrZXlzJ10gPSBjb25maWcuSWRsZVVzZXJDb25mUGFyc2VyKCcnKQorCitkZWYgc2V0VXBNb2R1bGUoKToKKyAgICBpZGxlQ29uZi51c2VyQ2ZnID0gdGVzdGNmZworCitkZWYgdGVhckRvd25Nb2R1bGUoKToKKyAgICBpZGxlQ29uZi51c2VyQ2ZnID0gdXNlcmNmZworCisKK2NsYXNzIEN1cnJlbnRDb2xvcktleXNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiIgVGVzdCBjb2xvcmtleXMgZnVuY3Rpb24gd2l0aCB1c2VyIGNvbmZpZyBbVGhlbWVdIGFuZCBbS2V5c10gcGF0dGVybnMuCisKKyAgICAgICAgY29sb3JrZXlzID0gY29uZmlnLklkbGVDb25mLmN1cnJlbnRfY29sb3JzX2FuZF9rZXlzCisgICAgICAgIFRlc3QgYWxsIHBhdHRlcm5zIHdyaXR0ZW4gYnkgSURMRSBhbmQgc29tZSBlcnJvcnMKKyAgICAgICAgSXRlbSAnZGVmYXVsdCcgc2hvdWxkIHJlYWxseSBiZSAnYnVpbHRpbicgKHZlcnN1cyAnY3VzdG9tKS4KKyAgICAiIiIKKyAgICBjb2xvcmtleXMgPSBpZGxlQ29uZi5jdXJyZW50X2NvbG9yc19hbmRfa2V5cworICAgIGRlZmF1bHRfdGhlbWUgPSAnSURMRSBDbGFzc2ljJworICAgIGRlZmF1bHRfa2V5cyA9IGlkbGVDb25mLmRlZmF1bHRfa2V5cygpCisKKyAgICBkZWYgdGVzdF9vbGRfYnVpbHRpbl90aGVtZShzZWxmKToKKyAgICAgICAgIyBPbiBpbml0aWFsIGluc3RhbGxhdGlvbiwgdXNlciBtYWluIGlzIGJsYW5rLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29sb3JrZXlzKCdUaGVtZScpLCBzZWxmLmRlZmF1bHRfdGhlbWUpCisgICAgICAgICMgRm9yIG9sZCBkZWZhdWx0LCBuYW1lMiBtdXN0IGJlIGJsYW5rLgorICAgICAgICB1c2VybWFpbi5yZWFkX3N0cmluZygnJycKKyAgICAgICAgICAgIFtUaGVtZV0KKyAgICAgICAgICAgIGRlZmF1bHQgPSBUcnVlCisgICAgICAgICAgICAnJycpCisgICAgICAgICMgSURMRSBvbWl0cyAnbmFtZScgZm9yIGRlZmF1bHQgb2xkIGJ1aWx0aW4gdGhlbWUuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ1RoZW1lJyksIHNlbGYuZGVmYXVsdF90aGVtZSkKKyAgICAgICAgIyBJRExFIGFkZHMgJ25hbWUnIGZvciBub24tZGVmYXVsdCBvbGQgYnVpbHRpbiB0aGVtZS4KKyAgICAgICAgdXNlcm1haW5bJ1RoZW1lJ11bJ25hbWUnXSA9ICdJRExFIE5ldycKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbG9ya2V5cygnVGhlbWUnKSwgJ0lETEUgTmV3JykKKyAgICAgICAgIyBFcnJvbmVvdXMgbm9uLWRlZmF1bHQgb2xkIGJ1aWx0aW4gcmV2ZXJ0cyB0byBkZWZhdWx0LgorICAgICAgICB1c2VybWFpblsnVGhlbWUnXVsnbmFtZSddID0gJ25vbi1leGlzdGVudCcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbG9ya2V5cygnVGhlbWUnKSwgc2VsZi5kZWZhdWx0X3RoZW1lKQorICAgICAgICB1c2VybWFpbi5yZW1vdmVfc2VjdGlvbignVGhlbWUnKQorCisgICAgZGVmIHRlc3RfbmV3X2J1aWx0aW5fdGhlbWUoc2VsZik6CisgICAgICAgICMgSURMRSB3cml0ZXMgbmFtZTIgZm9yIG5ldyBidWlsdGlucy4KKyAgICAgICAgdXNlcm1haW4ucmVhZF9zdHJpbmcoJycnCisgICAgICAgICAgICBbVGhlbWVdCisgICAgICAgICAgICBkZWZhdWx0ID0gVHJ1ZQorICAgICAgICAgICAgbmFtZTIgPSBJRExFIERhcmsKKyAgICAgICAgICAgICcnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbG9ya2V5cygnVGhlbWUnKSwgJ0lETEUgRGFyaycpCisgICAgICAgICMgTGVmdG92ZXIgJ25hbWUnLCBub3QgcmVtb3ZlZCwgaXMgaWdub3JlZC4KKyAgICAgICAgdXNlcm1haW5bJ1RoZW1lJ11bJ25hbWUnXSA9ICdJRExFIE5ldycKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbG9ya2V5cygnVGhlbWUnKSwgJ0lETEUgRGFyaycpCisgICAgICAgICMgRXJyb25lb3VzIG5vbi1kZWZhdWx0IG5ldyBidWlsdGluIHJldmVydHMgdG8gZGVmYXVsdC4KKyAgICAgICAgdXNlcm1haW5bJ1RoZW1lJ11bJ25hbWUyJ10gPSAnbm9uLWV4aXN0ZW50JworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29sb3JrZXlzKCdUaGVtZScpLCBzZWxmLmRlZmF1bHRfdGhlbWUpCisgICAgICAgIHVzZXJtYWluLnJlbW92ZV9zZWN0aW9uKCdUaGVtZScpCisKKyAgICBkZWYgdGVzdF91c2VyX292ZXJyaWRlX3RoZW1lKHNlbGYpOgorICAgICAgICAjIEVycm9uZW91cyBjdXN0b20gbmFtZSAobm8gZGVmaW5pdGlvbikgcmV2ZXJ0cyB0byBkZWZhdWx0LgorICAgICAgICB1c2VybWFpbi5yZWFkX3N0cmluZygnJycKKyAgICAgICAgICAgIFtUaGVtZV0KKyAgICAgICAgICAgIGRlZmF1bHQgPSBGYWxzZQorICAgICAgICAgICAgbmFtZSA9IEN1c3RvbSBEYXJrCisgICAgICAgICAgICAnJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ1RoZW1lJyksIHNlbGYuZGVmYXVsdF90aGVtZSkKKyAgICAgICAgIyBDdXN0b20gbmFtZSBpcyB2YWxpZCB3aXRoIG1hdGNoaW5nIFNlY3Rpb24gbmFtZS4KKyAgICAgICAgdXNlcmhpZ2gucmVhZF9zdHJpbmcoJ1tDdXN0b20gRGFya11cbmE9YicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ1RoZW1lJyksICdDdXN0b20gRGFyaycpCisgICAgICAgICMgTmFtZTIgaXMgaWdub3JlZC4KKyAgICAgICAgdXNlcm1haW5bJ1RoZW1lJ11bJ25hbWUyJ10gPSAnbm9uLWV4aXN0ZW50JworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29sb3JrZXlzKCdUaGVtZScpLCAnQ3VzdG9tIERhcmsnKQorICAgICAgICB1c2VybWFpbi5yZW1vdmVfc2VjdGlvbignVGhlbWUnKQorICAgICAgICB1c2VyaGlnaC5yZW1vdmVfc2VjdGlvbignQ3VzdG9tIERhcmsnKQorCisgICAgZGVmIHRlc3Rfb2xkX2J1aWx0aW5fa2V5cyhzZWxmKToKKyAgICAgICAgIyBPbiBpbml0aWFsIGluc3RhbGxhdGlvbiwgdXNlciBtYWluIGlzIGJsYW5rLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29sb3JrZXlzKCdLZXlzJyksIHNlbGYuZGVmYXVsdF9rZXlzKQorICAgICAgICAjIEZvciBvbGQgZGVmYXVsdCwgbmFtZTIgbXVzdCBiZSBibGFuaywgbmFtZSBpcyBhbHdheXMgdXNlZC4KKyAgICAgICAgdXNlcm1haW4ucmVhZF9zdHJpbmcoJycnCisgICAgICAgICAgICBbS2V5c10KKyAgICAgICAgICAgIGRlZmF1bHQgPSBUcnVlCisgICAgICAgICAgICBuYW1lID0gSURMRSBDbGFzc2ljIFVuaXgKKyAgICAgICAgICAgICcnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbG9ya2V5cygnS2V5cycpLCAnSURMRSBDbGFzc2ljIFVuaXgnKQorICAgICAgICAjIEVycm9uZW91cyBub24tZGVmYXVsdCBvbGQgYnVpbHRpbiByZXZlcnRzIHRvIGRlZmF1bHQuCisgICAgICAgIHVzZXJtYWluWydLZXlzJ11bJ25hbWUnXSA9ICdub24tZXhpc3RlbnQnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ0tleXMnKSwgc2VsZi5kZWZhdWx0X2tleXMpCisgICAgICAgIHVzZXJtYWluLnJlbW92ZV9zZWN0aW9uKCdLZXlzJykKKworICAgIGRlZiB0ZXN0X25ld19idWlsdGluX2tleXMoc2VsZik6CisgICAgICAgICMgSURMRSB3cml0ZXMgbmFtZTIgZm9yIG5ldyBidWlsdGlucy4KKyAgICAgICAgdXNlcm1haW4ucmVhZF9zdHJpbmcoJycnCisgICAgICAgICAgICBbS2V5c10KKyAgICAgICAgICAgIGRlZmF1bHQgPSBUcnVlCisgICAgICAgICAgICBuYW1lMiA9IElETEUgTW9kZXJuIFVuaXgKKyAgICAgICAgICAgICcnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbG9ya2V5cygnS2V5cycpLCAnSURMRSBNb2Rlcm4gVW5peCcpCisgICAgICAgICMgTGVmdG92ZXIgJ25hbWUnLCBub3QgcmVtb3ZlZCwgaXMgaWdub3JlZC4KKyAgICAgICAgdXNlcm1haW5bJ0tleXMnXVsnbmFtZSddID0gJ0lETEUgQ2xhc3NpYyBVbml4JworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29sb3JrZXlzKCdLZXlzJyksICdJRExFIE1vZGVybiBVbml4JykKKyAgICAgICAgIyBFcnJvbmVvdXMgbm9uLWRlZmF1bHQgbmV3IGJ1aWx0aW4gcmV2ZXJ0cyB0byBkZWZhdWx0LgorICAgICAgICB1c2VybWFpblsnS2V5cyddWyduYW1lMiddID0gJ25vbi1leGlzdGVudCcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbG9ya2V5cygnS2V5cycpLCBzZWxmLmRlZmF1bHRfa2V5cykKKyAgICAgICAgdXNlcm1haW4ucmVtb3ZlX3NlY3Rpb24oJ0tleXMnKQorCisgICAgZGVmIHRlc3RfdXNlcl9vdmVycmlkZV9rZXlzKHNlbGYpOgorICAgICAgICAjIEVycm9uZW91cyBjdXN0b20gbmFtZSAobm8gZGVmaW5pdGlvbikgcmV2ZXJ0cyB0byBkZWZhdWx0LgorICAgICAgICB1c2VybWFpbi5yZWFkX3N0cmluZygnJycKKyAgICAgICAgICAgIFtLZXlzXQorICAgICAgICAgICAgZGVmYXVsdCA9IEZhbHNlCisgICAgICAgICAgICBuYW1lID0gQ3VzdG9tIEtleXMKKyAgICAgICAgICAgICcnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbG9ya2V5cygnS2V5cycpLCBzZWxmLmRlZmF1bHRfa2V5cykKKyAgICAgICAgIyBDdXN0b20gbmFtZSBpcyB2YWxpZCB3aXRoIG1hdGNoaW5nIFNlY3Rpb24gbmFtZS4KKyAgICAgICAgdXNlcmtleXMucmVhZF9zdHJpbmcoJ1tDdXN0b20gS2V5c11cbmE9YicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ0tleXMnKSwgJ0N1c3RvbSBLZXlzJykKKyAgICAgICAgIyBOYW1lMiBpcyBpZ25vcmVkLgorICAgICAgICB1c2VybWFpblsnS2V5cyddWyduYW1lMiddID0gJ25vbi1leGlzdGVudCcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbG9ya2V5cygnS2V5cycpLCAnQ3VzdG9tIEtleXMnKQorICAgICAgICB1c2VybWFpbi5yZW1vdmVfc2VjdGlvbignS2V5cycpCisgICAgICAgIHVzZXJrZXlzLnJlbW92ZV9zZWN0aW9uKCdDdXN0b20gS2V5cycpCisKKworY2xhc3MgV2FybmluZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3Rfd2FybihzZWxmKToKKyAgICAgICAgRXF1YWwgPSBzZWxmLmFzc2VydEVxdWFsCisgICAgICAgIGNvbmZpZy5fd2FybmVkID0gc2V0KCkKKyAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRlcnIoKSBhcyBzdGRlcnI6CisgICAgICAgICAgICBjb25maWcuX3dhcm4oJ3dhcm5pbmcnLCAna2V5JykKKyAgICAgICAgRXF1YWwoY29uZmlnLl93YXJuZWQsIHsoJ3dhcm5pbmcnLCdrZXknKX0pCisgICAgICAgIEVxdWFsKHN0ZGVyci5nZXR2YWx1ZSgpLCAnd2FybmluZycrJ1xuJykKKyAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRlcnIoKSBhcyBzdGRlcnI6CisgICAgICAgICAgICBjb25maWcuX3dhcm4oJ3dhcm5pbmcnLCAna2V5JykKKyAgICAgICAgRXF1YWwoc3RkZXJyLmdldHZhbHVlKCksICcnKQorICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZGVycigpIGFzIHN0ZGVycjoKKyAgICAgICAgICAgIGNvbmZpZy5fd2Fybignd2FybjInLCAneWVrJykKKyAgICAgICAgRXF1YWwoY29uZmlnLl93YXJuZWQsIHsoJ3dhcm5pbmcnLCdrZXknKSwgKCd3YXJuMicsJ3llaycpfSkKKyAgICAgICAgRXF1YWwoc3RkZXJyLmdldHZhbHVlKCksICd3YXJuMicrJ1xuJykKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jb25maWdfaGVscC5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NvbmZpZ19oZWxwLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NjRmOGVkLi4wMDAwMDAwCi0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NvbmZpZ19oZWxwLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTA2ICswLDAgQEAKLSIiIlVuaXR0ZXN0cyBmb3IgaWRsZWxpYi5jb25maWdIZWxwU291cmNlRWRpdCIiIgotaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lm1vY2tfdGsgaW1wb3J0IFZhciwgTWJveCwgRW50cnkKLWZyb20gaWRsZWxpYiBpbXBvcnQgY29uZmlnSGVscFNvdXJjZUVkaXQgYXMgaGVscF9kaWFsb2dfbW9kdWxlCi0KLWhlbHBfZGlhbG9nID0gaGVscF9kaWFsb2dfbW9kdWxlLkdldEhlbHBTb3VyY2VEaWFsb2cKLQotCi1jbGFzcyBEdW1teV9oZWxwX2RpYWxvZzoKLSAgICAjIE1vY2sgZm9yIHRlc3RpbmcgdGhlIGZvbGxvd2luZyBtZXRob2RzIG9mIGhlbHBfZGlhbG9nCi0gICAgbWVudV9vayA9IGhlbHBfZGlhbG9nLm1lbnVfb2sKLSAgICBwYXRoX29rID0gaGVscF9kaWFsb2cucGF0aF9vawotICAgIG9rID0gaGVscF9kaWFsb2cub2sKLSAgICBjYW5jZWwgPSBoZWxwX2RpYWxvZy5jYW5jZWwKLSAgICAjIEF0dHJpYnV0ZXMsIGNvbnN0YW50IG9yIHZhcmlhYmxlLCBuZWVkZWQgZm9yIHRlc3RzCi0gICAgbWVudSA9IFZhcigpCi0gICAgZW50cnlNZW51ID0gRW50cnkoKQotICAgIHBhdGggPSBWYXIoKQotICAgIGVudHJ5UGF0aCA9IEVudHJ5KCkKLSAgICByZXN1bHQgPSBOb25lCi0gICAgZGVzdHJveWVkID0gRmFsc2UKLQotICAgIGRlZiBkZXN0cm95KHNlbGYpOgotICAgICAgICBzZWxmLmRlc3Ryb3llZCA9IFRydWUKLQotCi0jIG1lbnVfb2sgYW5kIHBhdGhfb2sgY2FsbCBNYm94LnNob3dlcnJvciBpZiBtZW51IGFuZCBwYXRoIGFyZSBub3Qgb2suCi1vcmlnX21ib3ggPSBoZWxwX2RpYWxvZ19tb2R1bGUudGtNZXNzYWdlQm94Ci1zaG93ZXJyb3IgPSBNYm94LnNob3dlcnJvcgotCi0KLWNsYXNzIENvbmZpZ0hlbHBUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkaWFsb2cgPSBEdW1teV9oZWxwX2RpYWxvZygpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgotICAgICAgICBoZWxwX2RpYWxvZ19tb2R1bGUudGtNZXNzYWdlQm94ID0gTWJveAotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKLSAgICAgICAgaGVscF9kaWFsb2dfbW9kdWxlLnRrTWVzc2FnZUJveCA9IG9yaWdfbWJveAotCi0gICAgZGVmIHRlc3RfYmxhbmtfbWVudShzZWxmKToKLSAgICAgICAgc2VsZi5kaWFsb2cubWVudS5zZXQoJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5kaWFsb2cubWVudV9vaygpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNob3dlcnJvci50aXRsZSwgJ01lbnUgSXRlbSBFcnJvcicpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ05vJywgc2hvd2Vycm9yLm1lc3NhZ2UpCi0KLSAgICBkZWYgdGVzdF9sb25nX21lbnUoc2VsZik6Ci0gICAgICAgIHNlbGYuZGlhbG9nLm1lbnUuc2V0KCdoZWxsbycgKiAxMCkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmRpYWxvZy5tZW51X29rKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2hvd2Vycm9yLnRpdGxlLCAnTWVudSBJdGVtIEVycm9yJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbignbG9uZycsIHNob3dlcnJvci5tZXNzYWdlKQotCi0gICAgZGVmIHRlc3RfZ29vZF9tZW51KHNlbGYpOgotICAgICAgICBzZWxmLmRpYWxvZy5tZW51LnNldCgnaGVscCcpCi0gICAgICAgIHNob3dlcnJvci50aXRsZSA9ICdObyBFcnJvcicgICMgc2hvdWxkIG5vdCBiZSBjYWxsZWQKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuZGlhbG9nLm1lbnVfb2soKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaG93ZXJyb3IudGl0bGUsICdObyBFcnJvcicpCi0KLSAgICBkZWYgdGVzdF9ibGFua19wYXRoKHNlbGYpOgotICAgICAgICBzZWxmLmRpYWxvZy5wYXRoLnNldCgnJykKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmRpYWxvZy5wYXRoX29rKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2hvd2Vycm9yLnRpdGxlLCAnRmlsZSBQYXRoIEVycm9yJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbignTm8nLCBzaG93ZXJyb3IubWVzc2FnZSkKLQotICAgIGRlZiB0ZXN0X2ludmFsaWRfZmlsZV9wYXRoKHNlbGYpOgotICAgICAgICBzZWxmLmRpYWxvZy5wYXRoLnNldCgnZm9vYmFyJyAqIDEwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmRpYWxvZy5wYXRoX29rKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2hvd2Vycm9yLnRpdGxlLCAnRmlsZSBQYXRoIEVycm9yJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbignbm90IGV4aXN0Jywgc2hvd2Vycm9yLm1lc3NhZ2UpCi0KLSAgICBkZWYgdGVzdF9pbnZhbGlkX3VybF9wYXRoKHNlbGYpOgotICAgICAgICBzZWxmLmRpYWxvZy5wYXRoLnNldCgnd3cuZm9vYmFyLmNvbScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5kaWFsb2cucGF0aF9vaygpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNob3dlcnJvci50aXRsZSwgJ0ZpbGUgUGF0aCBFcnJvcicpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ25vdCBleGlzdCcsIHNob3dlcnJvci5tZXNzYWdlKQotCi0gICAgICAgIHNlbGYuZGlhbG9nLnBhdGguc2V0KCdodHQuZm9vYmFyLmNvbScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5kaWFsb2cucGF0aF9vaygpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNob3dlcnJvci50aXRsZSwgJ0ZpbGUgUGF0aCBFcnJvcicpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ25vdCBleGlzdCcsIHNob3dlcnJvci5tZXNzYWdlKQotCi0gICAgZGVmIHRlc3RfZ29vZF9wYXRoKHNlbGYpOgotICAgICAgICBzZWxmLmRpYWxvZy5wYXRoLnNldCgnaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcnKQotICAgICAgICBzaG93ZXJyb3IudGl0bGUgPSAnTm8gRXJyb3InICAjIHNob3VsZCBub3QgYmUgY2FsbGVkCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmRpYWxvZy5wYXRoX29rKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2hvd2Vycm9yLnRpdGxlLCAnTm8gRXJyb3InKQotCi0gICAgZGVmIHRlc3Rfb2soc2VsZik6Ci0gICAgICAgIHNlbGYuZGlhbG9nLmRlc3Ryb3llZCA9IEZhbHNlCi0gICAgICAgIHNlbGYuZGlhbG9nLm1lbnUuc2V0KCdoZWxwJykKLSAgICAgICAgc2VsZi5kaWFsb2cucGF0aC5zZXQoJ2h0dHBzOi8vZG9jcy5weXRob24ub3JnJykKLSAgICAgICAgc2VsZi5kaWFsb2cub2soKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGlhbG9nLnJlc3VsdCwgKCdoZWxwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuZGlhbG9nLmRlc3Ryb3llZCkKLQotICAgIGRlZiB0ZXN0X2NhbmNlbChzZWxmKToKLSAgICAgICAgc2VsZi5kaWFsb2cuZGVzdHJveWVkID0gRmFsc2UKLSAgICAgICAgc2VsZi5kaWFsb2cuY2FuY2VsKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRpYWxvZy5yZXN1bHQsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmRpYWxvZy5kZXN0cm95ZWQpCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NvbmZpZ19rZXkucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jb25maWdfa2V5LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlM2YyYzgKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jb25maWdfa2V5LnB5CkBAIC0wLDAgKzEsMzMgQEAKKycnJyBUZXN0IGlkbGVsaWIuY29uZmlnX2tleS4KKworQ292ZXJhZ2U6IDU2JSBmcm9tIGNyZWF0aW5nIGFuZCBjbG9zaW5nIGRpYWxvZy4KKycnJworZnJvbSBpZGxlbGliIGltcG9ydCBjb25maWdfa2V5Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKK3JlcXVpcmVzKCdndWknKQoraW1wb3J0IHVuaXR0ZXN0Citmcm9tIHRraW50ZXIgaW1wb3J0IFRrLCBUZXh0CisKKworY2xhc3MgR2V0S2V5c1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgY2xzLnJvb3QgPSBUaygpCisgICAgICAgIGNscy5yb290LndpdGhkcmF3KCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgIGNscy5yb290LnVwZGF0ZSgpICAjIFN0b3AgImNhbid0IHJ1biBldmVudCBjb21tYW5kIiB3YXJuaW5nLgorICAgICAgICBjbHMucm9vdC5kZXN0cm95KCkKKyAgICAgICAgZGVsIGNscy5yb290CisKKworICAgIGRlZiB0ZXN0X2luaXQoc2VsZik6CisgICAgICAgIGRpYSA9IGNvbmZpZ19rZXkuR2V0S2V5c0RpYWxvZygKKyAgICAgICAgICAgIHNlbGYucm9vdCwgJ3Rlc3QnLCAnPDxUZXN0Pj4nLCBbJzxLZXktRjEyPiddLCBfdXRlc3Q9VHJ1ZSkKKyAgICAgICAgZGlhLkNhbmNlbCgpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKHZlcmJvc2l0eT0yKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29uZmlnX25hbWUucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jb25maWdfbmFtZS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDBlNzJiOS4uMDAwMDAwMAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jb25maWdfbmFtZS5weQorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLSIiIlVuaXQgdGVzdHMgZm9yIGlkbGVsaWIuY29uZmlnU2VjdGlvbk5hbWVEaWFsb2ciIiIKLWltcG9ydCB1bml0dGVzdAotZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX3RrIGltcG9ydCBWYXIsIE1ib3gKLWZyb20gaWRsZWxpYiBpbXBvcnQgY29uZmlnU2VjdGlvbk5hbWVEaWFsb2cgYXMgbmFtZV9kaWFsb2dfbW9kdWxlCi0KLW5hbWVfZGlhbG9nID0gbmFtZV9kaWFsb2dfbW9kdWxlLkdldENmZ1NlY3Rpb25OYW1lRGlhbG9nCi0KLWNsYXNzIER1bW15X25hbWVfZGlhbG9nOgotICAgICMgTW9jayBmb3IgdGVzdGluZyB0aGUgZm9sbG93aW5nIG1ldGhvZHMgb2YgbmFtZV9kaWFsb2cKLSAgICBuYW1lX29rID0gbmFtZV9kaWFsb2cubmFtZV9vawotICAgIE9rID0gbmFtZV9kaWFsb2cuT2sKLSAgICBDYW5jZWwgPSBuYW1lX2RpYWxvZy5DYW5jZWwKLSAgICAjIEF0dHJpYnV0ZXMsIGNvbnN0YW50IG9yIHZhcmlhYmxlLCBuZWVkZWQgZm9yIHRlc3RzCi0gICAgdXNlZF9uYW1lcyA9IFsndXNlZCddCi0gICAgbmFtZSA9IFZhcigpCi0gICAgcmVzdWx0ID0gTm9uZQotICAgIGRlc3Ryb3llZCA9IEZhbHNlCi0gICAgZGVmIGRlc3Ryb3koc2VsZik6Ci0gICAgICAgIHNlbGYuZGVzdHJveWVkID0gVHJ1ZQotCi0jIG5hbWVfb2sgY2FsbHMgTWJveC5zaG93ZXJyb3IgaWYgbmFtZSBpcyBub3Qgb2sKLW9yaWdfbWJveCA9IG5hbWVfZGlhbG9nX21vZHVsZS50a01lc3NhZ2VCb3gKLXNob3dlcnJvciA9IE1ib3guc2hvd2Vycm9yCi0KLWNsYXNzIENvbmZpZ05hbWVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkaWFsb2cgPSBEdW1teV9uYW1lX2RpYWxvZygpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgotICAgICAgICBuYW1lX2RpYWxvZ19tb2R1bGUudGtNZXNzYWdlQm94ID0gTWJveAotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKLSAgICAgICAgbmFtZV9kaWFsb2dfbW9kdWxlLnRrTWVzc2FnZUJveCA9IG9yaWdfbWJveAotCi0gICAgZGVmIHRlc3RfYmxhbmtfbmFtZShzZWxmKToKLSAgICAgICAgc2VsZi5kaWFsb2cubmFtZS5zZXQoJyAnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGlhbG9nLm5hbWVfb2soKSwgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2hvd2Vycm9yLnRpdGxlLCAnTmFtZSBFcnJvcicpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ05vJywgc2hvd2Vycm9yLm1lc3NhZ2UpCi0KLSAgICBkZWYgdGVzdF91c2VkX25hbWUoc2VsZik6Ci0gICAgICAgIHNlbGYuZGlhbG9nLm5hbWUuc2V0KCd1c2VkJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRpYWxvZy5uYW1lX29rKCksICcnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNob3dlcnJvci50aXRsZSwgJ05hbWUgRXJyb3InKQotICAgICAgICBzZWxmLmFzc2VydEluKCd1c2UnLCBzaG93ZXJyb3IubWVzc2FnZSkKLQotICAgIGRlZiB0ZXN0X2xvbmdfbmFtZShzZWxmKToKLSAgICAgICAgc2VsZi5kaWFsb2cubmFtZS5zZXQoJ2dvb2QnKjgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kaWFsb2cubmFtZV9vaygpLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaG93ZXJyb3IudGl0bGUsICdOYW1lIEVycm9yJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbigndG9vIGxvbmcnLCBzaG93ZXJyb3IubWVzc2FnZSkKLQotICAgIGRlZiB0ZXN0X2dvb2RfbmFtZShzZWxmKToKLSAgICAgICAgc2VsZi5kaWFsb2cubmFtZS5zZXQoJyAgZ29vZCAnKQotICAgICAgICBzaG93ZXJyb3IudGl0bGUgPSAnTm8gRXJyb3InICAjIHNob3VsZCBub3QgYmUgY2FsbGVkCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kaWFsb2cubmFtZV9vaygpLCAnZ29vZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2hvd2Vycm9yLnRpdGxlLCAnTm8gRXJyb3InKQotCi0gICAgZGVmIHRlc3Rfb2soc2VsZik6Ci0gICAgICAgIHNlbGYuZGlhbG9nLmRlc3Ryb3llZCA9IEZhbHNlCi0gICAgICAgIHNlbGYuZGlhbG9nLm5hbWUuc2V0KCdnb29kJykKLSAgICAgICAgc2VsZi5kaWFsb2cuT2soKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGlhbG9nLnJlc3VsdCwgJ2dvb2QnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5kaWFsb2cuZGVzdHJveWVkKQotCi0gICAgZGVmIHRlc3RfY2FuY2VsKHNlbGYpOgotICAgICAgICBzZWxmLmRpYWxvZy5kZXN0cm95ZWQgPSBGYWxzZQotICAgICAgICBzZWxmLmRpYWxvZy5DYW5jZWwoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGlhbG9nLnJlc3VsdCwgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmRpYWxvZy5kZXN0cm95ZWQpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB1bml0dGVzdC5tYWluKHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29uZmlnZGlhbG9nLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29uZmlnZGlhbG9nLnB5CmluZGV4IDVjMDk3OTAuLjNmOTQ0OTMgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NvbmZpZ2RpYWxvZy5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jb25maWdkaWFsb2cucHkKQEAgLTEsMzIgKzEsMTI3IEBACi0nJydUZXN0IGlkbGVsaWIuY29uZmlnRGlhbG9nLgorIiIiVGVzdCBpZGxlbGliLmNvbmZpZ2RpYWxvZy4KIAotQ292ZXJhZ2U6IDQ2JSBqdXN0IGJ5IGNyZWF0aW5nIGRpYWxvZy4KLVRoZSBvdGhlciBoYWxmIGlzIGNvZGUgZm9yIHdvcmtpbmcgd2l0aCB1c2VyIGN1c3RvbWl6YXRpb25zLgotJycnCi1mcm9tIGlkbGVsaWIuY29uZmlnRGlhbG9nIGltcG9ydCBDb25maWdEaWFsb2cgICMgYWx3YXlzIHRlc3QgaW1wb3J0CitIYWxmIHRoZSBjbGFzcyBjcmVhdGVzIGRpYWxvZywgaGFsZiB3b3JrcyB3aXRoIHVzZXIgY3VzdG9taXphdGlvbnMuCitDb3ZlcmFnZTogNDYlIGp1c3QgYnkgY3JlYXRpbmcgZGlhbG9nLCA1NiUgd2l0aCBjdXJyZW50IHRlc3RzLgorIiIiCitmcm9tIGlkbGVsaWIuY29uZmlnZGlhbG9nIGltcG9ydCBDb25maWdEaWFsb2csIGlkbGVDb25mICAjIHRlc3QgaW1wb3J0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKIHJlcXVpcmVzKCdndWknKQogZnJvbSB0a2ludGVyIGltcG9ydCBUawogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIGlkbGVsaWIgaW1wb3J0IG1hY29zeFN1cHBvcnQgYXMgbWFjb3N4CitpbXBvcnQgaWRsZWxpYi5jb25maWcgYXMgY29uZmlnCiAKLWNsYXNzIENvbmZpZ0RpYWxvZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorIyBUZXN0cyBzaG91bGQgbm90IGRlcGVuZCBvbiBmb3J0dWl0b3VzIHVzZXIgY29uZmlndXJhdGlvbnMuCisjIFRoZXkgbXVzdCBub3QgYWZmZWN0IGFjdHVhbCB1c2VyIC5jZmcgZmlsZXMuCisjIFVzZSBzb2x1dGlvbiBmcm9tIHRlc3RfY29uZmlnOiBlbXB0eSBwYXJzZXJzIHdpdGggbm8gZmlsZW5hbWUuCit1c2VyY2ZnID0gaWRsZUNvbmYudXNlckNmZwordGVzdGNmZyA9IHsKKyAgICAnbWFpbic6IGNvbmZpZy5JZGxlVXNlckNvbmZQYXJzZXIoJycpLAorICAgICdoaWdobGlnaHQnOiBjb25maWcuSWRsZVVzZXJDb25mUGFyc2VyKCcnKSwKKyAgICAna2V5cyc6IGNvbmZpZy5JZGxlVXNlckNvbmZQYXJzZXIoJycpLAorICAgICdleHRlbnNpb25zJzogY29uZmlnLklkbGVVc2VyQ29uZlBhcnNlcignJyksCit9CiAKLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgotICAgICAgICBjbHMucm9vdCA9IFRrKCkKLSAgICAgICAgY2xzLnJvb3Qud2l0aGRyYXcoKQotICAgICAgICBtYWNvc3guX2luaXRpYWxpemVUa1ZhcmlhbnRUZXN0cyhjbHMucm9vdCkKKyMgQ29uZmlnRGlhbG9nLmNoYW5nZWRJdGVtcyBpcyBhIDMtbGV2ZWwgaGllcmFyY2hpY2FsIGRpY3Rpb25hcnkgb2YKKyMgcGVuZGluZyBjaGFuZ2VzIHRoYXQgbWlycm9ycyB0aGUgbXVsdGlsZXZlbCB1c2VyIGNvbmZpZyBkaWN0LgorIyBGb3IgdGVzdGluZywgcmVjb3JkIGFyZ3MgaW4gYSBsaXN0IGZvciBjb21wYXJpc29uIHdpdGggZXhwZWN0ZWQuCitjaGFuZ2VzID0gW10KK2NsYXNzIFRlc3REaWFsb2coQ29uZmlnRGlhbG9nKToKKyAgICBkZWYgQWRkQ2hhbmdlZEl0ZW0oc2VsZiwgKmFyZ3MpOgorICAgICAgICBjaGFuZ2VzLmFwcGVuZChhcmdzKQogCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKLSAgICAgICAgY2xzLnJvb3QudXBkYXRlX2lkbGV0YXNrcygpCi0gICAgICAgIGNscy5yb290LmRlc3Ryb3koKQotICAgICAgICBkZWwgY2xzLnJvb3QKK2RlZiBzZXRVcE1vZHVsZSgpOgorICAgIGdsb2JhbCByb290LCBjb25maWd1cmUKKyAgICBpZGxlQ29uZi51c2VyQ2ZnID0gdGVzdGNmZworICAgIHJvb3QgPSBUaygpCisgICAgcm9vdC53aXRoZHJhdygpCisgICAgY29uZmlndXJlID0gVGVzdERpYWxvZyhyb290LCAnVGVzdCcsIF91dGVzdD1UcnVlKQogCi0gICAgZGVmIHRlc3RfZGlhbG9nKHNlbGYpOgotICAgICAgICBkID0gQ29uZmlnRGlhbG9nKHNlbGYucm9vdCwgJ1Rlc3QnLCBfdXRlc3Q9VHJ1ZSkKLSAgICAgICAgZC5yZW1vdmVfdmFyX2NhbGxiYWNrcygpCisKK2RlZiB0ZWFyRG93bk1vZHVsZSgpOgorICAgIGdsb2JhbCByb290LCBjb25maWd1cmUKKyAgICBpZGxlQ29uZi51c2VyQ2ZnID0gdGVzdGNmZworICAgIGNvbmZpZ3VyZS5yZW1vdmVfdmFyX2NhbGxiYWNrcygpCisgICAgZGVsIGNvbmZpZ3VyZQorICAgIHJvb3QudXBkYXRlX2lkbGV0YXNrcygpCisgICAgcm9vdC5kZXN0cm95KCkKKyAgICBkZWwgcm9vdAorCisKK2NsYXNzIEZvbnRUYWJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBjaGFuZ2VzLmNsZWFyKCkKKworICAgIGRlZiB0ZXN0X2ZvbnQoc2VsZik6CisgICAgICAgICMgU2V0IHZhbHVlcyBndWFyYW50ZWVkIG5vdCB0byBiZSBkZWZhdWx0cy4KKyAgICAgICAgZGZvbnQgPSBpZGxlQ29uZi5HZXRGb250KHJvb3QsICdtYWluJywgJ0VkaXRvcldpbmRvdycpCisgICAgICAgIGRzaXplID0gc3RyKGRmb250WzFdKQorICAgICAgICBkYm9sZCA9IGRmb250WzJdID09ICdib2xkJworICAgICAgICBjb25maWd1cmUuZm9udE5hbWUuc2V0KCdUZXN0IEZvbnQnKQorICAgICAgICBleHBlY3RlZCA9IFsKKyAgICAgICAgICAgICgnbWFpbicsICdFZGl0b3JXaW5kb3cnLCAnZm9udCcsICdUZXN0IEZvbnQnKSwKKyAgICAgICAgICAgICgnbWFpbicsICdFZGl0b3JXaW5kb3cnLCAnZm9udC1zaXplJywgZHNpemUpLAorICAgICAgICAgICAgKCdtYWluJywgJ0VkaXRvcldpbmRvdycsICdmb250LWJvbGQnLCBkYm9sZCldCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hhbmdlcywgZXhwZWN0ZWQpCisgICAgICAgIGNoYW5nZXMuY2xlYXIoKQorICAgICAgICBjb25maWd1cmUuZm9udFNpemUuc2V0KDIwKQorICAgICAgICBleHBlY3RlZCA9IFsKKyAgICAgICAgICAgICgnbWFpbicsICdFZGl0b3JXaW5kb3cnLCAnZm9udCcsICdUZXN0IEZvbnQnKSwKKyAgICAgICAgICAgICgnbWFpbicsICdFZGl0b3JXaW5kb3cnLCAnZm9udC1zaXplJywgJzIwJyksCisgICAgICAgICAgICAoJ21haW4nLCAnRWRpdG9yV2luZG93JywgJ2ZvbnQtYm9sZCcsIGRib2xkKV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGFuZ2VzLCBleHBlY3RlZCkKKyAgICAgICAgY2hhbmdlcy5jbGVhcigpCisgICAgICAgIGNvbmZpZ3VyZS5mb250Qm9sZC5zZXQobm90IGRib2xkKQorICAgICAgICBleHBlY3RlZCA9IFsKKyAgICAgICAgICAgICgnbWFpbicsICdFZGl0b3JXaW5kb3cnLCAnZm9udCcsICdUZXN0IEZvbnQnKSwKKyAgICAgICAgICAgICgnbWFpbicsICdFZGl0b3JXaW5kb3cnLCAnZm9udC1zaXplJywgJzIwJyksCisgICAgICAgICAgICAoJ21haW4nLCAnRWRpdG9yV2luZG93JywgJ2ZvbnQtYm9sZCcsIG5vdCBkYm9sZCldCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hhbmdlcywgZXhwZWN0ZWQpCisKKyAgICAjZGVmIHRlc3Rfc2FtcGxlKHNlbGYpOiBwYXNzICAjIFRPRE8KKworICAgIGRlZiB0ZXN0X3RhYnNwYWNlKHNlbGYpOgorICAgICAgICBjb25maWd1cmUuc3BhY2VOdW0uc2V0KDYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hhbmdlcywgWygnbWFpbicsICdJbmRlbnQnLCAnbnVtLXNwYWNlcycsIDYpXSkKKworCitjbGFzcyBIaWdobGlnaHRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgY2hhbmdlcy5jbGVhcigpCisKKyAgICAjZGVmIHRlc3RfY29sb3JjaG9vc2Uoc2VsZik6IHBhc3MgICMgVE9ETworCisKK2NsYXNzIEtleXNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgY2hhbmdlcy5jbGVhcigpCisKKworY2xhc3MgR2VuZXJhbFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBjaGFuZ2VzLmNsZWFyKCkKKworICAgIGRlZiB0ZXN0X3N0YXJ0dXAoc2VsZik6CisgICAgICAgIGNvbmZpZ3VyZS5yYWRpb1N0YXJ0dXBFZGl0Lmludm9rZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hhbmdlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBbKCdtYWluJywgJ0dlbmVyYWwnLCAnZWRpdG9yLW9uLXN0YXJ0dXAnLCAxKV0pCisKKyAgICBkZWYgdGVzdF9hdXRvc2F2ZShzZWxmKToKKyAgICAgICAgY29uZmlndXJlLnJhZGlvU2F2ZUF1dG8uaW52b2tlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGFuZ2VzLCBbKCdtYWluJywgJ0dlbmVyYWwnLCAnYXV0b3NhdmUnLCAxKV0pCisKKyAgICBkZWYgdGVzdF9lZGl0b3Jfc2l6ZShzZWxmKToKKyAgICAgICAgY29uZmlndXJlLmVudHJ5V2luSGVpZ2h0Lmluc2VydCgwLCAnMScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hhbmdlcywgWygnbWFpbicsICdFZGl0b3JXaW5kb3cnLCAnaGVpZ2h0JywgJzE0MCcpXSkKKyAgICAgICAgY2hhbmdlcy5jbGVhcigpCisgICAgICAgIGNvbmZpZ3VyZS5lbnRyeVdpbldpZHRoLmluc2VydCgwLCAnMScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hhbmdlcywgWygnbWFpbicsICdFZGl0b3JXaW5kb3cnLCAnd2lkdGgnLCAnMTgwJyldKQorCisgICAgI2RlZiB0ZXN0X2hlbHBfc291cmNlcyhzZWxmKTogcGFzcyAgIyBUT0RPCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2RlYnVnZ2VyLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZGVidWdnZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmNiYTlhNAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2RlYnVnZ2VyLnB5CkBAIC0wLDAgKzEsMjkgQEAKKycnJyBUZXN0IGlkbGVsaWIuZGVidWdnZXIuCisKK0NvdmVyYWdlOiAxOSUKKycnJworZnJvbSBpZGxlbGliIGltcG9ydCBkZWJ1Z2dlcgorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCityZXF1aXJlcygnZ3VpJykKK2ltcG9ydCB1bml0dGVzdAorZnJvbSB0a2ludGVyIGltcG9ydCBUaworCisKK2NsYXNzIE5hbWVTcGFjZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgY2xzLnJvb3QgPSBUaygpCisgICAgICAgIGNscy5yb290LndpdGhkcmF3KCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgIGNscy5yb290LmRlc3Ryb3koKQorICAgICAgICBkZWwgY2xzLnJvb3QKKworICAgIGRlZiB0ZXN0X2luaXQoc2VsZik6CisgICAgICAgIGRlYnVnZ2VyLk5hbWVzcGFjZVZpZXdlcihzZWxmLnJvb3QsICdUZXN0JykKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9kZWxlZ2F0b3IucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9kZWxlZ2F0b3IucHkKaW5kZXggMWYwYmFhOS4uODU2MjRmYiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZGVsZWdhdG9yLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2RlbGVnYXRvci5weQpAQCAtMSw1ICsxLDUgQEAKIGltcG9ydCB1bml0dGVzdAotZnJvbSBpZGxlbGliLkRlbGVnYXRvciBpbXBvcnQgRGVsZWdhdG9yCitmcm9tIGlkbGVsaWIuZGVsZWdhdG9yIGltcG9ydCBEZWxlZ2F0b3IKIAogY2xhc3MgRGVsZWdhdG9yVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2VkaXRtZW51LnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZWRpdG1lbnUucHkKaW5kZXggYTI1OGUyOS4uMTdlYjI1YyAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZWRpdG1lbnUucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZWRpdG1lbnUucHkKQEAgLTUsOCArNSw5IEBACiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKIHJlcXVpcmVzKCdndWknKQogaW1wb3J0IHRraW50ZXIgYXMgdGsKK2Zyb20gdGtpbnRlciBpbXBvcnQgdHRrCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gaWRsZWxpYiBpbXBvcnQgUHlTaGVsbAorZnJvbSBpZGxlbGliIGltcG9ydCBweXNoZWxsCiAKIGNsYXNzIFBhc3RlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgJycnVGVzdCBwYXN0aW5nIGludG8gd2lkZ2V0cyB0aGF0IGFsbG93IHBhc3RpbmcuCkBAIC0xNiwxNyArMTcsMTggQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgogICAgICAgICBjbHMucm9vdCA9IHJvb3QgPSB0ay5UaygpCi0gICAgICAgIHJvb3Qud2l0aGRyYXcoKQotICAgICAgICBQeVNoZWxsLmZpeF94MTFfcGFzdGUocm9vdCkKKyAgICAgICAgY2xzLnJvb3Qud2l0aGRyYXcoKQorICAgICAgICBweXNoZWxsLmZpeF94MTFfcGFzdGUocm9vdCkKICAgICAgICAgY2xzLnRleHQgPSB0ay5UZXh0KHJvb3QpCiAgICAgICAgIGNscy5lbnRyeSA9IHRrLkVudHJ5KHJvb3QpCisgICAgICAgIGNscy50ZW50cnkgPSB0dGsuRW50cnkocm9vdCkKICAgICAgICAgY2xzLnNwaW4gPSB0ay5TcGluYm94KHJvb3QpCiAgICAgICAgIHJvb3QuY2xpcGJvYXJkX2NsZWFyKCkKICAgICAgICAgcm9vdC5jbGlwYm9hcmRfYXBwZW5kKCd0d28nKQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKLSAgICAgICAgZGVsIGNscy50ZXh0LCBjbHMuZW50cnksIGNscy5zcGluCisgICAgICAgIGRlbCBjbHMudGV4dCwgY2xzLmVudHJ5LCBjbHMudGVudHJ5CiAgICAgICAgIGNscy5yb290LmNsaXBib2FyZF9jbGVhcigpCiAgICAgICAgIGNscy5yb290LnVwZGF0ZV9pZGxldGFza3MoKQogICAgICAgICBjbHMucm9vdC5kZXN0cm95KCkKQEAgLTQ0LDE2ICs0NiwxNiBAQAogCiAgICAgZGVmIHRlc3RfcGFzdGVfZW50cnkoc2VsZik6CiAgICAgICAgICJUZXN0IHBhc3RpbmcgaW50byBhbiBlbnRyeSB3aXRoIGFuZCB3aXRob3V0IGEgc2VsZWN0aW9uLiIKLSAgICAgICAgIyBPbiAzLjYsIGdlbmVyYXRlZCA8PFBhc3RlPj4gZmFpbHMgd2l0aG91dCBlbXB0eSBzZWxlY3QgcmFuZ2UKLSAgICAgICAgIyBmb3IgJ25vIHNlbGVjdGlvbicuICBMaXZlIHdpZGdldCB3b3JrcyBmaW5lLgotICAgICAgICBlbnRyeSA9IHNlbGYuZW50cnkKLSAgICAgICAgZm9yIGVuZCwgYW5zIGluICgwLCAnb25ldHdvJyksICgnZW5kJywgJ3R3bycpOgotICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoZW50cnk9ZW50cnksIGVuZD1lbmQsIGFucz1hbnMpOgotICAgICAgICAgICAgICAgIGVudHJ5LmRlbGV0ZSgwLCAnZW5kJykKLSAgICAgICAgICAgICAgICBlbnRyeS5pbnNlcnQoMCwgJ29uZScpCi0gICAgICAgICAgICAgICAgZW50cnkuc2VsZWN0X3JhbmdlKDAsIGVuZCkgICMgc2VlIG5vdGUKLSAgICAgICAgICAgICAgICBlbnRyeS5ldmVudF9nZW5lcmF0ZSgnPDxQYXN0ZT4+JykKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVudHJ5LmdldCgpLCBhbnMpCisgICAgICAgICMgR2VuZXJhdGVkIDw8UGFzdGU+PiBmYWlscyBmb3IgdGsgZW50cnkgd2l0aG91dCBlbXB0eSBzZWxlY3QKKyAgICAgICAgIyByYW5nZSBmb3IgJ25vIHNlbGVjdGlvbicuICBMaXZlIHdpZGdldCB3b3JrcyBmaW5lLgorICAgICAgICBmb3IgZW50cnkgaW4gc2VsZi5lbnRyeSwgc2VsZi50ZW50cnk6CisgICAgICAgICAgICBmb3IgZW5kLCBhbnMgaW4gKDAsICdvbmV0d28nKSwgKCdlbmQnLCAndHdvJyk6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoZW50cnk9ZW50cnksIGVuZD1lbmQsIGFucz1hbnMpOgorICAgICAgICAgICAgICAgICAgICBlbnRyeS5kZWxldGUoMCwgJ2VuZCcpCisgICAgICAgICAgICAgICAgICAgIGVudHJ5Lmluc2VydCgwLCAnb25lJykKKyAgICAgICAgICAgICAgICAgICAgZW50cnkuc2VsZWN0X3JhbmdlKDAsIGVuZCkKKyAgICAgICAgICAgICAgICAgICAgZW50cnkuZXZlbnRfZ2VuZXJhdGUoJzw8UGFzdGU+PicpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW50cnkuZ2V0KCksIGFucykKIAogICAgIGRlZiB0ZXN0X3Bhc3RlX3NwaW4oc2VsZik6CiAgICAgICAgICJUZXN0IHBhc3RpbmcgaW50byBhIHNwaW5ib3ggd2l0aCBhbmQgd2l0aG91dCBhIHNlbGVjdGlvbi4iCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9lZGl0b3IucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9lZGl0b3IucHkKaW5kZXggYTMxZDI2ZC4uZTlkMjlkNCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZWRpdG9yLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2VkaXRvci5weQpAQCAtMSw2ICsxLDYgQEAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0a2ludGVyIGltcG9ydCBUaywgVGV4dAotZnJvbSBpZGxlbGliLkVkaXRvcldpbmRvdyBpbXBvcnQgRWRpdG9yV2luZG93Citmcm9tIGlkbGVsaWIuZWRpdG9yIGltcG9ydCBFZGl0b3JXaW5kb3cKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZXF1aXJlcwogCiBjbGFzcyBFZGl0b3JfZnVuY190ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2dyZXAucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9ncmVwLnB5CmluZGV4IDBkOGZmMGQuLjZiNTRjMTMgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2dyZXAucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZ3JlcC5weQpAQCAtMSw1ICsxLDUgQEAKICIiIiAhQ2hhbmdpbmcgdGhpcyBsaW5lIHdpbGwgYnJlYWsgVGVzdF9maW5kZmlsZS50ZXN0X2ZvdW5kIQotTm9uLWd1aSB1bml0IHRlc3RzIGZvciBpZGxlbGliLkdyZXBEaWFsb2cgbWV0aG9kcy4KK05vbi1ndWkgdW5pdCB0ZXN0cyBmb3IgZ3JlcC5HcmVwRGlhbG9nIG1ldGhvZHMuCiBkdW1teV9jb21tYW5kIGNhbGxzIGdyZXBfaXQgY2FsbHMgZmluZGZpbGVzLgogQW4gZXhjZXB0aW9uIHJhaXNlZCBpbiBvbmUgbWV0aG9kIHdpbGwgZmFpbCBjYWxsZXJzLgogT3RoZXJ3aXNlLCB0ZXN0cyBhcmUgbW9zdGx5IGluZGVwZW5kZW50LgpAQCAtOCw3ICs4LDcgQEAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGNhcHR1cmVkX3N0ZG91dAogZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX3RrIGltcG9ydCBWYXIKLWZyb20gaWRsZWxpYi5HcmVwRGlhbG9nIGltcG9ydCBHcmVwRGlhbG9nCitmcm9tIGlkbGVsaWIuZ3JlcCBpbXBvcnQgR3JlcERpYWxvZwogaW1wb3J0IHJlCiAKIGNsYXNzIER1bW15X3NlYXJjaGVuZ2luZToKQEAgLTcyLDcgKzcyLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxpbmVzWzRdLnN0YXJ0c3dpdGgoJyhIaW50OicpKQogCiBjbGFzcyBEZWZhdWx0X2NvbW1hbmRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAjIFRvIHdyaXRlIHRoaXMsIG1vZGUgT3V0cHV0V2luZG93IGltcG9ydCB0byB0b3Agb2YgR3JlcERpYWxvZworICAgICMgVG8gd3JpdGUgdGhpcywgbW92ZSBvdXR3aW4gaW1wb3J0IHRvIHRvcCBvZiBHcmVwRGlhbG9nCiAgICAgIyBzbyBpdCBjYW4gYmUgcmVwbGFjZWQgYnkgY2FwdHVyZWRfc3Rkb3V0IGluIGNsYXNzIHNldHVwL3RlYXJkb3duLgogICAgIHBhc3MKIApkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaGVscC5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2hlbHAucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmM2OGUyMwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2hlbHAucHkKQEAgLTAsMCArMSwzNCBAQAorJycnVGVzdCBpZGxlbGliLmhlbHAuCisKK0NvdmVyYWdlOiA4NyUKKycnJworZnJvbSBpZGxlbGliIGltcG9ydCBoZWxwCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKK3JlcXVpcmVzKCdndWknKQorZnJvbSBvcy5wYXRoIGltcG9ydCBhYnNwYXRoLCBkaXJuYW1lLCBqb2luCitmcm9tIHRraW50ZXIgaW1wb3J0IFRrCitpbXBvcnQgdW5pdHRlc3QKKworY2xhc3MgSGVscEZyYW1lVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICAiQnkgaXRzZWxmLCB0aGlzIHRlc3RzIHRoYXQgZmlsZSBwYXJzZWQgd2l0aG91dCBleGNlcHRpb24uIgorICAgICAgICBjbHMucm9vdCA9IHJvb3QgPSBUaygpCisgICAgICAgIHJvb3Qud2l0aGRyYXcoKQorICAgICAgICBoZWxwZmlsZSA9IGpvaW4oZGlybmFtZShkaXJuYW1lKGFic3BhdGgoX19maWxlX18pKSksICdoZWxwLmh0bWwnKQorICAgICAgICBjbHMuZnJhbWUgPSBoZWxwLkhlbHBGcmFtZShyb290LCBoZWxwZmlsZSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgIGRlbCBjbHMuZnJhbWUKKyAgICAgICAgY2xzLnJvb3QudXBkYXRlX2lkbGV0YXNrcygpCisgICAgICAgIGNscy5yb290LmRlc3Ryb3koKQorICAgICAgICBkZWwgY2xzLnJvb3QKKworICAgIGRlZiB0ZXN0X2xpbmUxKHNlbGYpOgorICAgICAgICB0ZXh0ID0gc2VsZi5mcmFtZS50ZXh0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGV4dC5nZXQoJzEuMCcsICcxLmVuZCcpLCAnIElETEUgJykKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKHZlcmJvc2l0eT0yKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaGVscF9hYm91dC5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2hlbHBfYWJvdXQucHkKaW5kZXggZDBhMDEyNy4uODQzZWZiOSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaGVscF9hYm91dC5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9oZWxwX2Fib3V0LnB5CkBAIC0yLDEwICsyLDEwIEBACiAKIENvdmVyYWdlOgogJycnCi1mcm9tIGlkbGVsaWIgaW1wb3J0IGFib3V0RGlhbG9nIGFzIGhlbHBfYWJvdXQKLWZyb20gaWRsZWxpYiBpbXBvcnQgdGV4dFZpZXcgYXMgdGV4dHZpZXcKK2Zyb20gaWRsZWxpYiBpbXBvcnQgaGVscF9hYm91dAorZnJvbSBpZGxlbGliIGltcG9ydCB0ZXh0dmlldwogZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX2lkbGUgaW1wb3J0IEZ1bmMKLWZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja190ayBpbXBvcnQgTWJveAorZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX3RrIGltcG9ydCBNYm94X2Z1bmMKIGltcG9ydCB1bml0dGVzdAogCiBBYm91dCA9IGhlbHBfYWJvdXQuQWJvdXREaWFsb2cKQEAgLTE5LDMzICsxOSwzMyBAQAogCiAKIGNsYXNzIERpc3BsYXlGaWxlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIlRlc3QgdGhhdCAudHh0IGZpbGVzIGFyZSBmb3VuZCBhbmQgcHJvcGVybHkgZGVjb2RlZC4iCiAgICAgZGlhbG9nID0gRHVtbXlfYWJvdXRfZGlhbG9nKCkKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBzZXRVcENsYXNzKGNscyk6Ci0gICAgICAgIGNscy5vcmlnX21ib3ggPSB0ZXh0dmlldy50a01lc3NhZ2VCb3gKKyAgICAgICAgY2xzLm9yaWdfZXJyb3IgPSB0ZXh0dmlldy5zaG93ZXJyb3IKICAgICAgICAgY2xzLm9yaWdfdmlldyA9IHRleHR2aWV3LnZpZXdfdGV4dAotICAgICAgICBjbHMubWJveCA9IE1ib3goKQorICAgICAgICBjbHMuZXJyb3IgPSBNYm94X2Z1bmMoKQogICAgICAgICBjbHMudmlldyA9IEZ1bmMoKQotICAgICAgICB0ZXh0dmlldy50a01lc3NhZ2VCb3ggPSBjbHMubWJveAorICAgICAgICB0ZXh0dmlldy5zaG93ZXJyb3IgPSBjbHMuZXJyb3IKICAgICAgICAgdGV4dHZpZXcudmlld190ZXh0ID0gY2xzLnZpZXcKICAgICAgICAgY2xzLkFib3V0ID0gRHVtbXlfYWJvdXRfZGlhbG9nKCkKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6Ci0gICAgICAgIHRleHR2aWV3LnRrTWVzc2FnZUJveCA9IGNscy5vcmlnX21ib3gKKyAgICAgICAgdGV4dHZpZXcuc2hvd2Vycm9yID0gY2xzLm9yaWdfZXJyb3IKICAgICAgICAgdGV4dHZpZXcudmlld190ZXh0ID0gY2xzLm9yaWdfdmlldwogCiAgICAgZGVmIHRlc3RfZmlsZV9pc3BsYXkoc2VsZik6CiAgICAgICAgIGZvciBoYW5kbGVyIGluIChzZWxmLmRpYWxvZy5pZGxlX2NyZWRpdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRpYWxvZy5pZGxlX3JlYWRtZSwKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGlhbG9nLmlkbGVfbmV3cyk6Ci0gICAgICAgICAgICBzZWxmLm1ib3guc2hvd2Vycm9yLm1lc3NhZ2UgPSAnJworICAgICAgICAgICAgc2VsZi5lcnJvci5tZXNzYWdlID0gJycKICAgICAgICAgICAgIHNlbGYudmlldy5jYWxsZWQgPSBGYWxzZQotICAgICAgICAgICAgaGFuZGxlcigpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubWJveC5zaG93ZXJyb3IubWVzc2FnZSwgJycpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudmlldy5jYWxsZWQsIFRydWUpCisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChoYW5kbGVyPWhhbmRsZXIpOgorICAgICAgICAgICAgICAgIGhhbmRsZXIoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5lcnJvci5tZXNzYWdlLCAnJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudmlldy5jYWxsZWQsIFRydWUpCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2lkbGVoaXN0b3J5LnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaGlzdG9yeS5weQpzaW1pbGFyaXR5IGluZGV4IDk4JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9pZGxlaGlzdG9yeS5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaGlzdG9yeS5weQppbmRleCA2ZTdjNmMzLi5iMjc4MDEwIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9pZGxlaGlzdG9yeS5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9oaXN0b3J5LnB5CkBAIC00LDggKzQsOCBAQAogaW1wb3J0IHRraW50ZXIgYXMgdGsKIGZyb20gdGtpbnRlciBpbXBvcnQgVGV4dCBhcyB0a1RleHQKIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja190ayBpbXBvcnQgVGV4dCBhcyBta1RleHQKLWZyb20gaWRsZWxpYi5JZGxlSGlzdG9yeSBpbXBvcnQgSGlzdG9yeQotZnJvbSBpZGxlbGliLmNvbmZpZ0hhbmRsZXIgaW1wb3J0IGlkbGVDb25mCitmcm9tIGlkbGVsaWIuaGlzdG9yeSBpbXBvcnQgSGlzdG9yeQorZnJvbSBpZGxlbGliLmNvbmZpZyBpbXBvcnQgaWRsZUNvbmYKIAogbGluZTEgPSAnYSA9IDcnCiBsaW5lMiA9ICdiID0gYScKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2h5cGVycGFyc2VyLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaHlwZXJwYXJzZXIucHkKaW5kZXggOWNlM2YyYy4uNzNjODI4MSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaHlwZXJwYXJzZXIucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaHlwZXJwYXJzZXIucHkKQEAgLTEsOSArMSw5IEBACi0iIiJVbml0dGVzdCBmb3IgaWRsZWxpYi5IeXBlclBhcnNlciIiIgorIiIiVW5pdHRlc3QgZm9yIGlkbGVsaWIuaHlwZXJwYXJzZXIucHkuIiIiCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZXF1aXJlcwogZnJvbSB0a2ludGVyIGltcG9ydCBUaywgVGV4dAotZnJvbSBpZGxlbGliLkVkaXRvcldpbmRvdyBpbXBvcnQgRWRpdG9yV2luZG93Ci1mcm9tIGlkbGVsaWIuSHlwZXJQYXJzZXIgaW1wb3J0IEh5cGVyUGFyc2VyCitmcm9tIGlkbGVsaWIuZWRpdG9yIGltcG9ydCBFZGl0b3JXaW5kb3cKK2Zyb20gaWRsZWxpYi5oeXBlcnBhcnNlciBpbXBvcnQgSHlwZXJQYXJzZXIKIAogY2xhc3MgRHVtbXlFZGl0d2luOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXh0KToKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2lvLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaW9tZW51LnB5CnNpbWlsYXJpdHkgaW5kZXggOTglCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2lvLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9pb21lbnUucHkKaW5kZXggZTBlM2I5OC4uNjViZjU5MyAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaW8ucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaW9tZW51LnB5CkBAIC0xLDYgKzEsNyBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgaW8KLWZyb20gaWRsZWxpYi5QeVNoZWxsIGltcG9ydCBQc2V1ZG9JbnB1dEZpbGUsIFBzZXVkb091dHB1dEZpbGUKKworZnJvbSBpZGxlbGliLnJ1biBpbXBvcnQgUHNldWRvSW5wdXRGaWxlLCBQc2V1ZG9PdXRwdXRGaWxlCiAKIAogY2xhc3MgUyhzdHIpOgpAQCAtMjMwLDQgKzIzMSw0IEBACiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB1bml0dGVzdC5tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKHZlcmJvc2l0eT0yKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfbWFjb3N4LnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfbWFjb3N4LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhZTc1ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9tYWNvc3gucHkKQEAgLTAsMCArMSwxMDMgQEAKKycnJ1Rlc3QgaWRsZWxpYi5tYWNvc3gucHkuCisKK0NvdmVyYWdlOiA3MSUgb24gV2luZG93cy4KKycnJworZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3gKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZXF1aXJlcworaW1wb3J0IHN5cworaW1wb3J0IHRraW50ZXIgYXMgdGsKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHVuaXR0ZXN0Lm1vY2sgYXMgbW9jaworZnJvbSBpZGxlbGliLmZpbGVsaXN0IGltcG9ydCBGaWxlTGlzdAorCittYWN0eXBlcyA9IHsnY2FyYm9uJywgJ2NvY29hJywgJ3hxdWFydHonfQorbm9udHlwZXMgPSB7J290aGVyJ30KK2FsbHR5cGVzID0gbWFjdHlwZXMgfCBub250eXBlcworCisKK2NsYXNzIEluaXRUa3R5cGVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiVGVzdCBfaW5pdF90a190eXBlLiIKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIHJlcXVpcmVzKCdndWknKQorICAgICAgICBjbHMucm9vdCA9IHRrLlRrKCkKKyAgICAgICAgY2xzLnJvb3Qud2l0aGRyYXcoKQorICAgICAgICBjbHMub3JpZ19wbGF0Zm9ybSA9IG1hY29zeC5wbGF0Zm9ybQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgY2xzLnJvb3QudXBkYXRlX2lkbGV0YXNrcygpCisgICAgICAgIGNscy5yb290LmRlc3Ryb3koKQorICAgICAgICBkZWwgY2xzLnJvb3QKKyAgICAgICAgbWFjb3N4LnBsYXRmb3JtID0gY2xzLm9yaWdfcGxhdGZvcm0KKworICAgIGRlZiB0ZXN0X2luaXRfc2V0c190a3R5cGUoc2VsZik6CisgICAgICAgICJUZXN0IHRoYXQgX2luaXRfdGtfdHlwZSBzZXRzIF90a190eXBlIGFjY29yZGluZyB0byBwbGF0Zm9ybS4iCisgICAgICAgIGZvciBwbGF0Zm9ybSwgdHlwZXMgaW4gKCdkYXJ3aW4nLCBhbGx0eXBlcyksICgnb3RoZXInLCBub250eXBlcyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChwbGF0Zm9ybT1wbGF0Zm9ybSk6CisgICAgICAgICAgICAgICAgbWFjb3N4LnBsYXRmb3JtID0gcGxhdGZvcm0KKyAgICAgICAgICAgICAgICBtYWNvc3guX3RrX3R5cGUgPT0gTm9uZQorICAgICAgICAgICAgICAgIG1hY29zeC5faW5pdF90a190eXBlKCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKG1hY29zeC5fdGtfdHlwZSwgdHlwZXMpCisKKworY2xhc3MgSXNUeXBlVGtUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiVGVzdCBlYWNoIG9mIHRoZSBmb3VyIGlzVHlwZVRrIHByZWRlY2F0ZXMuIgorICAgIGlzZnVuY3MgPSAoKG1hY29zeC5pc0FxdWFUaywgKCdjYXJib24nLCAnY29jb2EnKSksCisgICAgICAgICAgICAgICAobWFjb3N4LmlzQ2FyYm9uVGssICgnY2FyYm9uJykpLAorICAgICAgICAgICAgICAgKG1hY29zeC5pc0NvY29hVGssICgnY29jb2EnKSksCisgICAgICAgICAgICAgICAobWFjb3N4LmlzWFF1YXJ0eiwgKCd4cXVhcnR6JykpLAorICAgICAgICAgICAgICAgKQorCisgICAgQG1vY2sucGF0Y2goJ2lkbGVsaWIubWFjb3N4Ll9pbml0X3RrX3R5cGUnKQorICAgIGRlZiB0ZXN0X2lzX2NhbGxzX2luaXQoc2VsZiwgbW9ja2luaXQpOgorICAgICAgICAiVGVzdCB0aGF0IGVhY2ggaXNUeXBlVGsgY2FsbHMgX2luaXRfdGtfdHlwZSB3aGVuIF90a190eXBlIGlzIE5vbmUuIgorICAgICAgICBtYWNvc3guX3RrX3R5cGUgPSBOb25lCisgICAgICAgIGZvciBmdW5jLCB3aGVudHJ1ZSBpbiBzZWxmLmlzZnVuY3M6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChmdW5jPWZ1bmMpOgorICAgICAgICAgICAgICAgIGZ1bmMoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb2NraW5pdC5jYWxsZWQpCisgICAgICAgICAgICAgICAgbW9ja2luaXQucmVzZXRfbW9jaygpCisKKyAgICBkZWYgdGVzdF9pc2Z1bmNzKHNlbGYpOgorICAgICAgICAiVGVzdCB0aGF0IGVhY2ggaXNUeXBlVGsgcmV0dXJuIGNvcnJlY3QgYm9vbC4iCisgICAgICAgIGZvciBmdW5jLCB3aGVudHJ1ZSBpbiBzZWxmLmlzZnVuY3M6CisgICAgICAgICAgICBmb3IgdGt0eXBlIGluIGFsbHR5cGVzOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGZ1bmM9ZnVuYywgd2hlbnRydWU9d2hlbnRydWUsIHRrdHlwZT10a3R5cGUpOgorICAgICAgICAgICAgICAgICAgICBtYWNvc3guX3RrX3R5cGUgPSB0a3R5cGUKKyAgICAgICAgICAgICAgICAgICAgKHNlbGYuYXNzZXJ0VHJ1ZSBpZiB0a3R5cGUgaW4gd2hlbnRydWUgZWxzZSBzZWxmLmFzc2VydEZhbHNlKVwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuYygpKQorCisKK2NsYXNzIFNldHVwVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIlRlc3Qgc2V0dXBBcHAuIgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgcmVxdWlyZXMoJ2d1aScpCisgICAgICAgIGNscy5yb290ID0gdGsuVGsoKQorICAgICAgICBjbHMucm9vdC53aXRoZHJhdygpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBjbHMucm9vdC51cGRhdGVfaWRsZXRhc2tzKCkKKyAgICAgICAgY2xzLnJvb3QuZGVzdHJveSgpCisgICAgICAgIGRlbCBjbHMucm9vdAorCisgICAgQG1vY2sucGF0Y2goJ2lkbGVsaWIubWFjb3N4Lm92ZXJyaWRlUm9vdE1lbnUnKSAgIzI3MzEyCisgICAgZGVmIHRlc3Rfc2V0dXBhcHAoc2VsZiwgb3ZlcnJpZGVSb290TWVudSk6CisgICAgICAgICJDYWxsIHNldHVwQXBwIHdpdGggZWFjaCBwb3NzaWJsZSBncmFwaGljcyB0eXBlLiIKKyAgICAgICAgcm9vdCA9IHNlbGYucm9vdAorICAgICAgICBmbGlzdCA9IEZpbGVMaXN0KHJvb3QpCisgICAgICAgIGZvciB0a3R5cGUgaW4gYWxsdHlwZXM6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCh0a3R5cGU9dGt0eXBlKToKKyAgICAgICAgICAgICAgICBtYWNvc3guX3RrX3R5cGUgPSB0a3R5cGUKKyAgICAgICAgICAgICAgICBtYWNvc3guc2V0dXBBcHAocm9vdCwgZmxpc3QpCisgICAgICAgICAgICAgICAgaWYgdGt0eXBlIGluICgnY2FyYm9uJywgJ2NvY29hJyk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvdmVycmlkZVJvb3RNZW51LmNhbGxlZCkKKyAgICAgICAgICAgICAgICBvdmVycmlkZVJvb3RNZW51LnJlc2V0X21vY2soKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MikKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2Zvcm1hdHBhcmFncmFwaC5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3BhcmFncmFwaC5weQpzaW1pbGFyaXR5IGluZGV4IDk4JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9mb3JtYXRwYXJhZ3JhcGgucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3BhcmFncmFwaC5weQppbmRleCBiNmViMmYzLi5iYTM1MGM5IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9mb3JtYXRwYXJhZ3JhcGgucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcGFyYWdyYXBoLnB5CkBAIC0xLDcgKzEsNyBAQAotIyBUZXN0IHRoZSBmdW5jdGlvbnMgYW5kIG1haW4gY2xhc3MgbWV0aG9kIG9mIEZvcm1hdFBhcmFncmFwaC5weQorIyBUZXN0IHRoZSBmdW5jdGlvbnMgYW5kIG1haW4gY2xhc3MgbWV0aG9kIG9mIHBhcmFncmFwaC5weQogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIGlkbGVsaWIgaW1wb3J0IEZvcm1hdFBhcmFncmFwaCBhcyBmcAotZnJvbSBpZGxlbGliLkVkaXRvcldpbmRvdyBpbXBvcnQgRWRpdG9yV2luZG93Citmcm9tIGlkbGVsaWIgaW1wb3J0IHBhcmFncmFwaCBhcyBmcAorZnJvbSBpZGxlbGliLmVkaXRvciBpbXBvcnQgRWRpdG9yV2luZG93CiBmcm9tIHRraW50ZXIgaW1wb3J0IFRrLCBUZXh0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKIApAQCAtMzgsNyArMzgsNyBAQAogCiAKIGNsYXNzIEZpbmRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAiIiJUZXN0IHRoZSBmaW5kX3BhcmFncmFwaCBmdW5jdGlvbiBpbiBGb3JtYXRQYXJhZ3JhcGguCisgICAgIiIiVGVzdCB0aGUgZmluZF9wYXJhZ3JhcGggZnVuY3Rpb24gaW4gcGFyYWdyYXBoIG1vZHVsZS4KIAogICAgIFVzaW5nIHRoZSBydW5jYXNlKCkgZnVuY3Rpb24sIGZpbmRfcGFyYWdyYXBoKCkgaXMgY2FsbGVkIHdpdGggJ21hcmsnIHNldCBhdAogICAgIG11bHRpcGxlIGluZGV4ZXMgYmVmb3JlIGFuZCBpbnNpZGUgdGhlIHRlc3QgcGFyYWdyYXBoLgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcGFyZW5tYXRjaC5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3BhcmVubWF0Y2gucHkKaW5kZXggOTVjYzIyYy4uMDUxZjdlYSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcGFyZW5tYXRjaC5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9wYXJlbm1hdGNoLnB5CkBAIC0xLDQgKzEsNCBAQAotJycnVGVzdCBpZGxlbGliLlBhcmVuTWF0Y2guCisnJydUZXN0IGlkbGVsaWIucGFyZW5tYXRjaC4KIAogVGhpcyBtdXN0IGN1cnJlbnRseSBiZSBhIGd1aSB0ZXN0IGJlY2F1c2UgUGFyZW5NYXRjaCBtZXRob2RzIHVzZQogc2V2ZXJhbCB0ZXh0IG1ldGhvZHMgbm90IGRlZmluZWQgb24gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja190ay5UZXh0LgpAQCAtOSw3ICs5LDcgQEAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBNb2NrCiBmcm9tIHRraW50ZXIgaW1wb3J0IFRrLCBUZXh0Ci1mcm9tIGlkbGVsaWIuUGFyZW5NYXRjaCBpbXBvcnQgUGFyZW5NYXRjaAorZnJvbSBpZGxlbGliLnBhcmVubWF0Y2ggaW1wb3J0IFBhcmVuTWF0Y2gKIAogY2xhc3MgRHVtbXlFZGl0d2luOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXh0KToKQEAgLTM4LDEyICszOCwxNyBAQAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgc2VsZi50ZXh0LmRlbGV0ZSgnMS4wJywgJ2VuZCcpCiAKKyAgICBkZWYgZ2V0X3BhcmVubWF0Y2goc2VsZik6CisgICAgICAgIHBtID0gUGFyZW5NYXRjaChzZWxmLmVkaXR3aW4pCisgICAgICAgIHBtLmJlbGwgPSBsYW1iZGE6IE5vbmUKKyAgICAgICAgcmV0dXJuIHBtCisKICAgICBkZWYgdGVzdF9wYXJlbl9leHByZXNzaW9uKHNlbGYpOgogICAgICAgICAiIiIKICAgICAgICAgVGVzdCBQYXJlbk1hdGNoIHdpdGggJ2V4cHJlc3Npb24nIHN0eWxlLgogICAgICAgICAiIiIKICAgICAgICAgdGV4dCA9IHNlbGYudGV4dAotICAgICAgICBwbSA9IFBhcmVuTWF0Y2goc2VsZi5lZGl0d2luKQorICAgICAgICBwbSA9IHNlbGYuZ2V0X3BhcmVubWF0Y2goKQogICAgICAgICBwbS5zZXRfc3R5bGUoJ2V4cHJlc3Npb24nKQogCiAgICAgICAgIHRleHQuaW5zZXJ0KCdpbnNlcnQnLCAnZGVmIGZvb2JhcihhLCBiJykKQEAgLTY2LDcgKzcxLDcgQEAKICAgICAgICAgVGVzdCBQYXJlbk1hdGNoIHdpdGggJ2RlZmF1bHQnIHN0eWxlLgogICAgICAgICAiIiIKICAgICAgICAgdGV4dCA9IHNlbGYudGV4dAotICAgICAgICBwbSA9IFBhcmVuTWF0Y2goc2VsZi5lZGl0d2luKQorICAgICAgICBwbSA9IHNlbGYuZ2V0X3BhcmVubWF0Y2goKQogICAgICAgICBwbS5zZXRfc3R5bGUoJ2RlZmF1bHQnKQogCiAgICAgICAgIHRleHQuaW5zZXJ0KCdpbnNlcnQnLCAnZGVmIGZvb2JhcihhLCBiJykKQEAgLTg2LDcgKzkxLDcgQEAKICAgICAgICAgVGhlc2UgY2FzZXMgZm9yY2UgY29uZGl0aW9uYWwgZXhwcmVzc2lvbiBhbmQgYWx0ZXJuYXRlIHBhdGhzLgogICAgICAgICAiIiIKICAgICAgICAgdGV4dCA9IHNlbGYudGV4dAotICAgICAgICBwbSA9IFBhcmVuTWF0Y2goc2VsZi5lZGl0d2luKQorICAgICAgICBwbSA9IHNlbGYuZ2V0X3BhcmVubWF0Y2goKQogCiAgICAgICAgIHRleHQuaW5zZXJ0KCdpbnNlcnQnLCAnIyB0aGlzIGlzIGEgY29tbWVuKScpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHBtLnBhcmVuX2Nsb3NlZF9ldmVudCgnZXZlbnQnKSkKQEAgLTk5LDcgKzEwNCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHBtLnBhcmVuX2Nsb3NlZF9ldmVudCgnZXZlbnQnKSkKIAogICAgIGRlZiB0ZXN0X2hhbmRsZV9yZXN0b3JlX3RpbWVyKHNlbGYpOgotICAgICAgICBwbSA9IFBhcmVuTWF0Y2goc2VsZi5lZGl0d2luKQorICAgICAgICBwbSA9IHNlbGYuZ2V0X3BhcmVubWF0Y2goKQogICAgICAgICBwbS5yZXN0b3JlX2V2ZW50ID0gTW9jaygpCiAgICAgICAgIHBtLmhhbmRsZV9yZXN0b3JlX3RpbWVyKDApCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwbS5yZXN0b3JlX2V2ZW50LmNhbGxlZCkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3BhdGhicm93c2VyLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcGF0aGJyb3dzZXIucHkKaW5kZXggYWZiODg2Zi4uODEzY2JjYyAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcGF0aGJyb3dzZXIucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcGF0aGJyb3dzZXIucHkKQEAgLTIsMTMgKzIsMTMgQEAKIGltcG9ydCBvcwogaW1wb3J0IHN5cwogaW1wb3J0IGlkbGVsaWIKLWZyb20gaWRsZWxpYiBpbXBvcnQgUGF0aEJyb3dzZXIKK2Zyb20gaWRsZWxpYiBpbXBvcnQgcGF0aGJyb3dzZXIKIAogY2xhc3MgUGF0aEJyb3dzZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X0RpckJyb3dzZXJUcmVlSXRlbShzZWxmKToKICAgICAgICAgIyBJc3N1ZTE2MjI2IC0gbWFrZSBzdXJlIHRoYXQgZ2V0dGluZyBhIHN1Ymxpc3Qgd29ya3MKLSAgICAgICAgZCA9IFBhdGhCcm93c2VyLkRpckJyb3dzZXJUcmVlSXRlbSgnJykKKyAgICAgICAgZCA9IHBhdGhicm93c2VyLkRpckJyb3dzZXJUcmVlSXRlbSgnJykKICAgICAgICAgZC5HZXRTdWJMaXN0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJywgZC5HZXRUZXh0KCkpCiAKQEAgLTE3LDExICsxNywxMSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuaXNwYWNrYWdlZGlyKGRpciArICcvSWNvbnMnKSwgRmFsc2UpCiAKICAgICBkZWYgdGVzdF9QYXRoQnJvd3NlclRyZWVJdGVtKHNlbGYpOgotICAgICAgICBwID0gUGF0aEJyb3dzZXIuUGF0aEJyb3dzZXJUcmVlSXRlbSgpCisgICAgICAgIHAgPSBwYXRoYnJvd3Nlci5QYXRoQnJvd3NlclRyZWVJdGVtKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLkdldFRleHQoKSwgJ3N5cy5wYXRoJykKICAgICAgICAgc3ViID0gcC5HZXRTdWJMaXN0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc3ViKSwgbGVuKHN5cy5wYXRoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHN1YlswXSksIFBhdGhCcm93c2VyLkRpckJyb3dzZXJUcmVlSXRlbSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHN1YlswXSksIHBhdGhicm93c2VyLkRpckJyb3dzZXJUcmVlSXRlbSkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcGVyY29sYXRvci5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3BlcmNvbGF0b3IucHkKaW5kZXggNGMwYTdhZC4uNTczYjlhMSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcGVyY29sYXRvci5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9wZXJjb2xhdG9yLnB5CkBAIC0xLDEwICsxLDEwIEBACi0nJydUZXN0IFBlcmNvbGF0b3InJycKKycnJ1Rlc3QgcGVyY29sYXRvci5weS4nJycKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZXF1aXJlcwogcmVxdWlyZXMoJ2d1aScpCiAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0a2ludGVyIGltcG9ydCBUZXh0LCBUaywgRU5ECi1mcm9tIGlkbGVsaWIuUGVyY29sYXRvciBpbXBvcnQgUGVyY29sYXRvciwgRGVsZWdhdG9yCitmcm9tIGlkbGVsaWIucGVyY29sYXRvciBpbXBvcnQgUGVyY29sYXRvciwgRGVsZWdhdG9yCiAKIAogY2xhc3MgTXlGaWx0ZXIoRGVsZWdhdG9yKToKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3F1ZXJ5LnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcXVlcnkucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjZhZjhlYgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3F1ZXJ5LnB5CkBAIC0wLDAgKzEsMzUzIEBACisiIiJUZXN0IGlkbGVsaWIucXVlcnkuCisKK05vbi1ndWkgdGVzdHMgZm9yIFF1ZXJ5LCBTZWN0aW9uTmFtZSwgTW9kdWxlTmFtZSwgYW5kIEhlbHBTb3VyY2UgdXNlCitkdW1teSB2ZXJzaW9ucyB0aGF0IGV4dHJhY3QgdGhlIG5vbi1ndWkgbWV0aG9kcyBhbmQgYWRkIG90aGVyIG5lZWRlZAorYXR0cmlidXRlcy4gIEdVSSB0ZXN0cyBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgZWFjaCBjbGFzcyBhbmQgc2ltdWxhdGUKK2VudHJpZXMgYW5kIGJ1dHRvbiBjbGlja3MuICBTdWJjbGFzcyB0ZXN0cyBvbmx5IHRhcmdldCB0aGUgbmV3IGNvZGUgaW4KK3RoZSBzdWJjbGFzcyBkZWZpbml0aW9uLgorCitUaGUgYXBwZWFyYW5jZSBvZiB0aGUgd2lkZ2V0cyBpcyBjaGVja2VkIGJ5IHRoZSBRdWVyeSBhbmQKK0hlbHBTb3VyY2UgaHRlc3RzLiAgVGhlc2UgYXJlIHJ1biBieSBydW5uaW5nIHF1ZXJ5LnB5LgorCitDb3ZlcmFnZTogOTQlICgxMDAlIGZvciBRdWVyeSBhbmQgU2VjdGlvbk5hbWUpLgorNiBvZiA4IG1pc3NpbmcgYXJlIE1vZHVsZU5hbWUgZXhjZXB0aW9ucyBJIGRvbid0IGtub3cgaG93IHRvIHRyaWdnZXIuCisiIiIKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZXF1aXJlcworaW1wb3J0IHN5cworZnJvbSB0a2ludGVyIGltcG9ydCBUaworaW1wb3J0IHVuaXR0ZXN0Citmcm9tIHVuaXR0ZXN0IGltcG9ydCBtb2NrCitmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lm1vY2tfdGsgaW1wb3J0IFZhcgorZnJvbSBpZGxlbGliIGltcG9ydCBxdWVyeQorCisKKyMgTk9OLUdVSSBURVNUUworCitjbGFzcyBRdWVyeVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICJUZXN0IFF1ZXJ5IGJhc2UgY2xhc3MuIgorCisgICAgY2xhc3MgRHVtbXlfUXVlcnk6CisgICAgICAgICMgVGVzdCB0aGUgZm9sbG93aW5nIFF1ZXJ5IG1ldGhvZHMuCisgICAgICAgIGVudHJ5X29rID0gcXVlcnkuUXVlcnkuZW50cnlfb2sKKyAgICAgICAgb2sgPSBxdWVyeS5RdWVyeS5vaworICAgICAgICBjYW5jZWwgPSBxdWVyeS5RdWVyeS5jYW5jZWwKKyAgICAgICAgIyBBZGQgYXR0cmlidXRlcyBhbmQgaW5pdGlhbGl6YXRpb24gbmVlZGVkIGZvciB0ZXN0cy4KKyAgICAgICAgZW50cnkgPSBWYXIoKQorICAgICAgICBlbnRyeV9lcnJvciA9IHt9CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkdW1teV9lbnRyeSk6CisgICAgICAgICAgICBzZWxmLmVudHJ5LnNldChkdW1teV9lbnRyeSkKKyAgICAgICAgICAgIHNlbGYuZW50cnlfZXJyb3JbJ3RleHQnXSA9ICcnCisgICAgICAgICAgICBzZWxmLnJlc3VsdCA9IE5vbmUKKyAgICAgICAgICAgIHNlbGYuZGVzdHJveWVkID0gRmFsc2UKKyAgICAgICAgZGVmIHNob3dlcnJvcihzZWxmLCBtZXNzYWdlKToKKyAgICAgICAgICAgIHNlbGYuZW50cnlfZXJyb3JbJ3RleHQnXSA9IG1lc3NhZ2UKKyAgICAgICAgZGVmIGRlc3Ryb3koc2VsZik6CisgICAgICAgICAgICBzZWxmLmRlc3Ryb3llZCA9IFRydWUKKworICAgIGRlZiB0ZXN0X2VudHJ5X29rX2JsYW5rKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X1F1ZXJ5KCcgJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cuZW50cnlfb2soKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoZGlhbG9nLnJlc3VsdCwgZGlhbG9nLmRlc3Ryb3llZCksIChOb25lLCBGYWxzZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2JsYW5rIGxpbmUnLCBkaWFsb2cuZW50cnlfZXJyb3JbJ3RleHQnXSkKKworICAgIGRlZiB0ZXN0X2VudHJ5X29rX2dvb2Qoc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuRHVtbXlfUXVlcnkoJyAgZ29vZCAnKQorICAgICAgICBFcXVhbCA9IHNlbGYuYXNzZXJ0RXF1YWwKKyAgICAgICAgRXF1YWwoZGlhbG9nLmVudHJ5X29rKCksICdnb29kJykKKyAgICAgICAgRXF1YWwoKGRpYWxvZy5yZXN1bHQsIGRpYWxvZy5kZXN0cm95ZWQpLCAoTm9uZSwgRmFsc2UpKQorICAgICAgICBFcXVhbChkaWFsb2cuZW50cnlfZXJyb3JbJ3RleHQnXSwgJycpCisKKyAgICBkZWYgdGVzdF9va19ibGFuayhzZWxmKToKKyAgICAgICAgZGlhbG9nID0gc2VsZi5EdW1teV9RdWVyeSgnJykKKyAgICAgICAgZGlhbG9nLmVudHJ5LmZvY3VzX3NldCA9IG1vY2suTW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLm9rKCksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShkaWFsb2cuZW50cnkuZm9jdXNfc2V0LmNhbGxlZCkKKyAgICAgICAgZGVsIGRpYWxvZy5lbnRyeS5mb2N1c19zZXQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoZGlhbG9nLnJlc3VsdCwgZGlhbG9nLmRlc3Ryb3llZCksIChOb25lLCBGYWxzZSkpCisKKyAgICBkZWYgdGVzdF9va19nb29kKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X1F1ZXJ5KCdnb29kJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cub2soKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoZGlhbG9nLnJlc3VsdCwgZGlhbG9nLmRlc3Ryb3llZCksICgnZ29vZCcsIFRydWUpKQorCisgICAgZGVmIHRlc3RfY2FuY2VsKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X1F1ZXJ5KCdkb2VzIG5vdCBtYXR0ZXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5jYW5jZWwoKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoZGlhbG9nLnJlc3VsdCwgZGlhbG9nLmRlc3Ryb3llZCksIChOb25lLCBUcnVlKSkKKworCitjbGFzcyBTZWN0aW9uTmFtZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICJUZXN0IFNlY3Rpb25OYW1lIHN1YmNsYXNzIG9mIFF1ZXJ5LiIKKworICAgIGNsYXNzIER1bW15X1NlY3Rpb25OYW1lOgorICAgICAgICBlbnRyeV9vayA9IHF1ZXJ5LlNlY3Rpb25OYW1lLmVudHJ5X29rICAjIEZ1bmN0aW9uIGJlaW5nIHRlc3RlZC4KKyAgICAgICAgdXNlZF9uYW1lcyA9IFsndXNlZCddCisgICAgICAgIGVudHJ5ID0gVmFyKCkKKyAgICAgICAgZW50cnlfZXJyb3IgPSB7fQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZHVtbXlfZW50cnkpOgorICAgICAgICAgICAgc2VsZi5lbnRyeS5zZXQoZHVtbXlfZW50cnkpCisgICAgICAgICAgICBzZWxmLmVudHJ5X2Vycm9yWyd0ZXh0J10gPSAnJworICAgICAgICBkZWYgc2hvd2Vycm9yKHNlbGYsIG1lc3NhZ2UpOgorICAgICAgICAgICAgc2VsZi5lbnRyeV9lcnJvclsndGV4dCddID0gbWVzc2FnZQorCisgICAgZGVmIHRlc3RfYmxhbmtfc2VjdGlvbl9uYW1lKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X1NlY3Rpb25OYW1lKCcgJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cuZW50cnlfb2soKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbm8gbmFtZScsIGRpYWxvZy5lbnRyeV9lcnJvclsndGV4dCddKQorCisgICAgZGVmIHRlc3RfdXNlZF9zZWN0aW9uX25hbWUoc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuRHVtbXlfU2VjdGlvbk5hbWUoJ3VzZWQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5lbnRyeV9vaygpLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEluKCd1c2UnLCBkaWFsb2cuZW50cnlfZXJyb3JbJ3RleHQnXSkKKworICAgIGRlZiB0ZXN0X2xvbmdfc2VjdGlvbl9uYW1lKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X1NlY3Rpb25OYW1lKCdnb29kJyo4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5lbnRyeV9vaygpLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEluKCdsb25nZXIgdGhhbiAzMCcsIGRpYWxvZy5lbnRyeV9lcnJvclsndGV4dCddKQorCisgICAgZGVmIHRlc3RfZ29vZF9zZWN0aW9uX25hbWUoc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuRHVtbXlfU2VjdGlvbk5hbWUoJyAgZ29vZCAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5lbnRyeV9vaygpLCAnZ29vZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLmVudHJ5X2Vycm9yWyd0ZXh0J10sICcnKQorCisKK2NsYXNzIE1vZHVsZU5hbWVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiVGVzdCBNb2R1bGVOYW1lIHN1YmNsYXNzIG9mIFF1ZXJ5LiIKKworICAgIGNsYXNzIER1bW15X01vZHVsZU5hbWU6CisgICAgICAgIGVudHJ5X29rID0gcXVlcnkuTW9kdWxlTmFtZS5lbnRyeV9vayAgIyBGdW5jdGlvbiBiZWluZyB0ZXN0ZWQuCisgICAgICAgIHRleHQwID0gJycKKyAgICAgICAgZW50cnkgPSBWYXIoKQorICAgICAgICBlbnRyeV9lcnJvciA9IHt9CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkdW1teV9lbnRyeSk6CisgICAgICAgICAgICBzZWxmLmVudHJ5LnNldChkdW1teV9lbnRyeSkKKyAgICAgICAgICAgIHNlbGYuZW50cnlfZXJyb3JbJ3RleHQnXSA9ICcnCisgICAgICAgIGRlZiBzaG93ZXJyb3Ioc2VsZiwgbWVzc2FnZSk6CisgICAgICAgICAgICBzZWxmLmVudHJ5X2Vycm9yWyd0ZXh0J10gPSBtZXNzYWdlCisKKyAgICBkZWYgdGVzdF9ibGFua19tb2R1bGVfbmFtZShzZWxmKToKKyAgICAgICAgZGlhbG9nID0gc2VsZi5EdW1teV9Nb2R1bGVOYW1lKCcgJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cuZW50cnlfb2soKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbm8gbmFtZScsIGRpYWxvZy5lbnRyeV9lcnJvclsndGV4dCddKQorCisgICAgZGVmIHRlc3RfYm9ndXNfbW9kdWxlX25hbWUoc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuRHVtbXlfTW9kdWxlTmFtZSgnX19uYW1lX3h5ejEyM19zaG91bGRfbm90X2V4aXN0X18nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5lbnRyeV9vaygpLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEluKCdub3QgZm91bmQnLCBkaWFsb2cuZW50cnlfZXJyb3JbJ3RleHQnXSkKKworICAgIGRlZiB0ZXN0X2Nfc291cmNlX25hbWUoc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuRHVtbXlfTW9kdWxlTmFtZSgnaXRlcnRvb2xzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cuZW50cnlfb2soKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignc291cmNlLWJhc2VkJywgZGlhbG9nLmVudHJ5X2Vycm9yWyd0ZXh0J10pCisKKyAgICBkZWYgdGVzdF9nb29kX21vZHVsZV9uYW1lKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X01vZHVsZU5hbWUoJ2lkbGVsaWInKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZGlhbG9nLmVudHJ5X29rKCkuZW5kc3dpdGgoJ19faW5pdF9fLnB5JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLmVudHJ5X2Vycm9yWyd0ZXh0J10sICcnKQorCisKKyMgMyBIZWxwU291cmNlIHRlc3QgY2xhc3NlcyBlYWNoIHRlc3Qgb25lIGZ1bmN0aW9uLgorCitvcmlnX3BsYXRmb3JtID0gcXVlcnkucGxhdGZvcm0KKworY2xhc3MgSGVscHNvdXJjZUJyb3dzZWZpbGVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiVGVzdCBicm93c2VfZmlsZSBtZXRob2Qgb2YgTW9kdWxlTmFtZSBzdWJjbGFzcyBvZiBRdWVyeS4iCisKKyAgICBjbGFzcyBEdW1teV9IZWxwU291cmNlOgorICAgICAgICBicm93c2VfZmlsZSA9IHF1ZXJ5LkhlbHBTb3VyY2UuYnJvd3NlX2ZpbGUKKyAgICAgICAgcGF0aHZhciA9IFZhcigpCisKKyAgICBkZWYgdGVzdF9maWxlX3JlcGxhY2VzX3BhdGgoc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuRHVtbXlfSGVscFNvdXJjZSgpCisgICAgICAgICMgUGF0aCBpcyB3aWRnZXQgZW50cnksIGVpdGhlciAnJyBvciBzb21ldGhpbmcuCisgICAgICAgICMgRnVuYyByZXR1cm4gaXMgZmlsZSBkaWFsb2cgcmV0dXJuLCBlaXRoZXIgJycgb3Igc29tZXRoaW5nLgorICAgICAgICAjIEZ1bmMgcmV0dXJuIHNob3VsZCBvdmVycmlkZSB3aWRnZXQgZW50cnkuCisgICAgICAgICMgV2UgbmVlZCBhbGwgNCBjb21iaW5hdGlvbiB0byB0ZXN0IGFsbCAobW9zdCkgY29kZSBwYXRocy4KKyAgICAgICAgZm9yIHBhdGgsIGZ1bmMsIHJlc3VsdCBpbiAoCisgICAgICAgICAgICAgICAgKCcnLCBsYW1iZGEgYSxiLGM6JycsICcnKSwKKyAgICAgICAgICAgICAgICAoJycsIGxhbWJkYSBhLGIsYzogX19maWxlX18sIF9fZmlsZV9fKSwKKyAgICAgICAgICAgICAgICAoJ2h0ZXN0JywgbGFtYmRhIGEsYixjOicnLCAnaHRlc3QnKSwKKyAgICAgICAgICAgICAgICAoJ2h0ZXN0JywgbGFtYmRhIGEsYixjOiBfX2ZpbGVfXywgX19maWxlX18pKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KCk6CisgICAgICAgICAgICAgICAgZGlhbG9nLnBhdGh2YXIuc2V0KHBhdGgpCisgICAgICAgICAgICAgICAgZGlhbG9nLmFza2ZpbGVuYW1lID0gZnVuYworICAgICAgICAgICAgICAgIGRpYWxvZy5icm93c2VfZmlsZSgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cucGF0aHZhci5nZXQoKSwgcmVzdWx0KQorCisKK2NsYXNzIEhlbHBzb3VyY2VQYXRob2tUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiVGVzdCBwYXRoX29rIG1ldGhvZCBvZiBIZWxwU291cmNlIHN1YmNsYXNzIG9mIFF1ZXJ5LiIKKworICAgIGNsYXNzIER1bW15X0hlbHBTb3VyY2U6CisgICAgICAgIHBhdGhfb2sgPSBxdWVyeS5IZWxwU291cmNlLnBhdGhfb2sKKyAgICAgICAgcGF0aCA9IFZhcigpCisgICAgICAgIHBhdGhfZXJyb3IgPSB7fQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZHVtbXlfcGF0aCk6CisgICAgICAgICAgICBzZWxmLnBhdGguc2V0KGR1bW15X3BhdGgpCisgICAgICAgICAgICBzZWxmLnBhdGhfZXJyb3JbJ3RleHQnXSA9ICcnCisgICAgICAgIGRlZiBzaG93ZXJyb3Ioc2VsZiwgbWVzc2FnZSwgd2lkZ2V0PU5vbmUpOgorICAgICAgICAgICAgc2VsZi5wYXRoX2Vycm9yWyd0ZXh0J10gPSBtZXNzYWdlCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBxdWVyeS5wbGF0Zm9ybSA9IG9yaWdfcGxhdGZvcm0KKworICAgIGRlZiB0ZXN0X3BhdGhfb2tfYmxhbmsoc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuRHVtbXlfSGVscFNvdXJjZSgnICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLnBhdGhfb2soKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbm8gaGVscCBmaWxlJywgZGlhbG9nLnBhdGhfZXJyb3JbJ3RleHQnXSkKKworICAgIGRlZiB0ZXN0X3BhdGhfb2tfYmFkKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X0hlbHBTb3VyY2UoX19maWxlX18gKyAnYmFkLWJhZC1iYWQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5wYXRoX29rKCksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ25vdCBleGlzdCcsIGRpYWxvZy5wYXRoX2Vycm9yWyd0ZXh0J10pCisKKyAgICBkZWYgdGVzdF9wYXRoX29rX3dlYihzZWxmKToKKyAgICAgICAgZGlhbG9nID0gc2VsZi5EdW1teV9IZWxwU291cmNlKCcnKQorICAgICAgICBFcXVhbCA9IHNlbGYuYXNzZXJ0RXF1YWwKKyAgICAgICAgZm9yIHVybCBpbiAnd3d3LnB5Lm9yZycsICdodHRwOi8vcHkub3JnJzoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KCk6CisgICAgICAgICAgICAgICAgZGlhbG9nLnBhdGguc2V0KHVybCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5wYXRoX29rKCksIHVybCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5wYXRoX2Vycm9yWyd0ZXh0J10sICcnKQorCisgICAgZGVmIHRlc3RfcGF0aF9va19maWxlKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X0hlbHBTb3VyY2UoJycpCisgICAgICAgIGZvciBwbGF0Zm9ybSwgcHJlZml4IGluICgnZGFyd2luJywgJ2ZpbGU6Ly8nKSwgKCdvdGhlcicsICcnKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KCk6CisgICAgICAgICAgICAgICAgcXVlcnkucGxhdGZvcm0gPSBwbGF0Zm9ybQorICAgICAgICAgICAgICAgIGRpYWxvZy5wYXRoLnNldChfX2ZpbGVfXykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5wYXRoX29rKCksIHByZWZpeCArIF9fZmlsZV9fKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLnBhdGhfZXJyb3JbJ3RleHQnXSwgJycpCisKKworY2xhc3MgSGVscHNvdXJjZUVudHJ5b2tUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiVGVzdCBlbnRyeV9vayBtZXRob2Qgb2YgSGVscFNvdXJjZSBzdWJjbGFzcyBvZiBRdWVyeS4iCisKKyAgICBjbGFzcyBEdW1teV9IZWxwU291cmNlOgorICAgICAgICBlbnRyeV9vayA9IHF1ZXJ5LkhlbHBTb3VyY2UuZW50cnlfb2sKKyAgICAgICAgZW50cnlfZXJyb3IgPSB7fQorICAgICAgICBwYXRoX2Vycm9yID0ge30KKyAgICAgICAgZGVmIGl0ZW1fb2soc2VsZik6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5uYW1lCisgICAgICAgIGRlZiBwYXRoX29rKHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYucGF0aAorCisgICAgZGVmIHRlc3RfZW50cnlfb2tfaGVscHNvdXJjZShzZWxmKToKKyAgICAgICAgZGlhbG9nID0gc2VsZi5EdW1teV9IZWxwU291cmNlKCkKKyAgICAgICAgZm9yIG5hbWUsIHBhdGgsIHJlc3VsdCBpbiAoKE5vbmUsIE5vbmUsIE5vbmUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTm9uZSwgJ2RvYy50eHQnLCBOb25lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdkb2MnLCBOb25lLCBOb25lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdkb2MnLCAnZG9jLnR4dCcsICgnZG9jJywgJ2RvYy50eHQnKSkpOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoKToKKyAgICAgICAgICAgICAgICBkaWFsb2cubmFtZSwgZGlhbG9nLnBhdGggPSBuYW1lLCBwYXRoCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cuZW50cnlfb2soKSwgcmVzdWx0KQorCisKKyMgR1VJIFRFU1RTCisKK2NsYXNzIFF1ZXJ5R3VpVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICByZXF1aXJlcygnZ3VpJykKKyAgICAgICAgY2xzLnJvb3QgPSByb290ID0gVGsoKQorICAgICAgICBjbHMucm9vdC53aXRoZHJhdygpCisgICAgICAgIGNscy5kaWFsb2cgPSBxdWVyeS5RdWVyeShyb290LCAnVEVTVCcsICd0ZXN0JywgX3V0ZXN0PVRydWUpCisgICAgICAgIGNscy5kaWFsb2cuZGVzdHJveSA9IG1vY2suTW9jaygpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBkZWwgY2xzLmRpYWxvZworICAgICAgICBjbHMucm9vdC5kZXN0cm95KCkKKyAgICAgICAgZGVsIGNscy5yb290CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuZGlhbG9nLmVudHJ5LmRlbGV0ZSgwLCAnZW5kJykKKyAgICAgICAgc2VsZi5kaWFsb2cucmVzdWx0ID0gTm9uZQorICAgICAgICBzZWxmLmRpYWxvZy5kZXN0cm95LnJlc2V0X21vY2soKQorCisgICAgZGVmIHRlc3RfY2xpY2tfb2soc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuZGlhbG9nCisgICAgICAgIGRpYWxvZy5lbnRyeS5pbnNlcnQoMCwgJ2FiYycpCisgICAgICAgIGRpYWxvZy5idXR0b25fb2suaW52b2tlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cucmVzdWx0LCAnYWJjJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGRpYWxvZy5kZXN0cm95LmNhbGxlZCkKKworICAgIGRlZiB0ZXN0X2NsaWNrX2JsYW5rKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLmRpYWxvZworICAgICAgICBkaWFsb2cuYnV0dG9uX29rLmludm9rZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLnJlc3VsdCwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShkaWFsb2cuZGVzdHJveS5jYWxsZWQpCisKKyAgICBkZWYgdGVzdF9jbGlja19jYW5jZWwoc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuZGlhbG9nCisgICAgICAgIGRpYWxvZy5lbnRyeS5pbnNlcnQoMCwgJ2FiYycpCisgICAgICAgIGRpYWxvZy5idXR0b25fY2FuY2VsLmludm9rZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLnJlc3VsdCwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGRpYWxvZy5kZXN0cm95LmNhbGxlZCkKKworCitjbGFzcyBTZWN0aW9ubmFtZUd1aVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgcmVxdWlyZXMoJ2d1aScpCisKKyAgICBkZWYgdGVzdF9jbGlja19zZWN0aW9uX25hbWUoc2VsZik6CisgICAgICAgIHJvb3QgPSBUaygpCisgICAgICAgIHJvb3Qud2l0aGRyYXcoKQorICAgICAgICBkaWFsb2cgPSAgcXVlcnkuU2VjdGlvbk5hbWUocm9vdCwgJ1QnLCAndCcsIHsnYWJjJ30sIF91dGVzdD1UcnVlKQorICAgICAgICBFcXVhbCA9IHNlbGYuYXNzZXJ0RXF1YWwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cudXNlZF9uYW1lcywgeydhYmMnfSkKKyAgICAgICAgZGlhbG9nLmVudHJ5Lmluc2VydCgwLCAnb2theScpCisgICAgICAgIGRpYWxvZy5idXR0b25fb2suaW52b2tlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cucmVzdWx0LCAnb2theScpCisgICAgICAgIGRlbCBkaWFsb2cKKyAgICAgICAgcm9vdC5kZXN0cm95KCkKKyAgICAgICAgZGVsIHJvb3QKKworCitjbGFzcyBNb2R1bGVuYW1lR3VpVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICByZXF1aXJlcygnZ3VpJykKKworICAgIGRlZiB0ZXN0X2NsaWNrX21vZHVsZV9uYW1lKHNlbGYpOgorICAgICAgICByb290ID0gVGsoKQorICAgICAgICByb290LndpdGhkcmF3KCkKKyAgICAgICAgZGlhbG9nID0gIHF1ZXJ5Lk1vZHVsZU5hbWUocm9vdCwgJ1QnLCAndCcsICdpZGxlbGliJywgX3V0ZXN0PVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLnRleHQwLCAnaWRsZWxpYicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLmVudHJ5LmdldCgpLCAnaWRsZWxpYicpCisgICAgICAgIGRpYWxvZy5idXR0b25fb2suaW52b2tlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGRpYWxvZy5yZXN1bHQuZW5kc3dpdGgoJ19faW5pdF9fLnB5JykpCisgICAgICAgIGRlbCBkaWFsb2cKKyAgICAgICAgcm9vdC5kZXN0cm95KCkKKyAgICAgICAgZGVsIHJvb3QKKworCitjbGFzcyBIZWxwc291cmNlR3VpVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICByZXF1aXJlcygnZ3VpJykKKworICAgIGRlZiB0ZXN0X2NsaWNrX2hlbHBfc291cmNlKHNlbGYpOgorICAgICAgICByb290ID0gVGsoKQorICAgICAgICByb290LndpdGhkcmF3KCkKKyAgICAgICAgZGlhbG9nID0gIHF1ZXJ5LkhlbHBTb3VyY2Uocm9vdCwgJ1QnLCBtZW51aXRlbT0nX190ZXN0X18nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlcGF0aD1fX2ZpbGVfXywgX3V0ZXN0PVRydWUpCisgICAgICAgIEVxdWFsID0gc2VsZi5hc3NlcnRFcXVhbAorICAgICAgICBFcXVhbChkaWFsb2cuZW50cnkuZ2V0KCksICdfX3Rlc3RfXycpCisgICAgICAgIEVxdWFsKGRpYWxvZy5wYXRoLmdldCgpLCBfX2ZpbGVfXykKKyAgICAgICAgZGlhbG9nLmJ1dHRvbl9vay5pbnZva2UoKQorICAgICAgICBwcmVmaXggPSAiZmlsZTovLyIgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nIGVsc2UgJycKKyAgICAgICAgRXF1YWwoZGlhbG9nLnJlc3VsdCwgKCdfX3Rlc3RfXycsIHByZWZpeCArIF9fZmlsZV9fKSkKKyAgICAgICAgZGVsIGRpYWxvZworICAgICAgICByb290LmRlc3Ryb3koKQorICAgICAgICBkZWwgcm9vdAorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3dpZGdldHJlZGlyLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcmVkaXJlY3Rvci5weQpzaW1pbGFyaXR5IGluZGV4IDk3JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF93aWRnZXRyZWRpci5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcmVkaXJlY3Rvci5weQppbmRleCBiYWE5NzVkLi5iMDM4NWZhIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF93aWRnZXRyZWRpci5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9yZWRpcmVjdG9yLnB5CkBAIC0xLDQgKzEsNCBAQAotJycnVGVzdCBpZGxlbGliLldpZGdldFJlZGlyZWN0b3IuCisnJydUZXN0IGlkbGVsaWIucmVkaXJlY3Rvci4KIAogMTAwJSBjb3ZlcmFnZQogJycnCkBAIC02LDcgKzYsNyBAQAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lm1vY2tfaWRsZSBpbXBvcnQgRnVuYwogZnJvbSB0a2ludGVyIGltcG9ydCBUaywgVGV4dCwgVGNsRXJyb3IKLWZyb20gaWRsZWxpYi5XaWRnZXRSZWRpcmVjdG9yIGltcG9ydCBXaWRnZXRSZWRpcmVjdG9yCitmcm9tIGlkbGVsaWIucmVkaXJlY3RvciBpbXBvcnQgV2lkZ2V0UmVkaXJlY3RvcgogCiAKIGNsYXNzIEluaXRDbG9zZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMTIwLDYgKzEyMCw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5yb290LmNhbGwoc2VsZi50ZXh0Ll93LCAnaW5zZXJ0JywgJ2JvbycpLCAnJykKIAogCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MikKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3JlcGxhY2VkaWFsb2cucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9yZXBsYWNlLnB5CnNpbWlsYXJpdHkgaW5kZXggOTYlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3JlcGxhY2VkaWFsb2cucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3JlcGxhY2UucHkKaW5kZXggZmY0NDgyMC4uOTkxM2VkMiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcmVwbGFjZWRpYWxvZy5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9yZXBsYWNlLnB5CkBAIC0xLDQgKzEsNCBAQAotIiIiVW5pdHRlc3QgZm9yIGlkbGVsaWIuUmVwbGFjZURpYWxvZyIiIgorIiIiVW5pdHRlc3QgZm9yIGlkbGVsaWIucmVwbGFjZS5weSIiIgogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCiByZXF1aXJlcygnZ3VpJykKIApAQCAtNiw4ICs2LDggQEAKIGZyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgTW9jawogZnJvbSB0a2ludGVyIGltcG9ydCBUaywgVGV4dAogZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX3RrIGltcG9ydCBNYm94Ci1pbXBvcnQgaWRsZWxpYi5TZWFyY2hFbmdpbmUgYXMgc2UKLWltcG9ydCBpZGxlbGliLlJlcGxhY2VEaWFsb2cgYXMgcmQKK2ltcG9ydCBpZGxlbGliLnNlYXJjaGVuZ2luZSBhcyBzZQorZnJvbSBpZGxlbGliLnJlcGxhY2UgaW1wb3J0IFJlcGxhY2VEaWFsb2cKIAogb3JpZ19tYm94ID0gc2UudGtNZXNzYWdlQm94CiBzaG93ZXJyb3IgPSBNYm94LnNob3dlcnJvcgpAQCAtMjEsNyArMjEsOCBAQAogICAgICAgICBjbHMucm9vdC53aXRoZHJhdygpCiAgICAgICAgIHNlLnRrTWVzc2FnZUJveCA9IE1ib3gKICAgICAgICAgY2xzLmVuZ2luZSA9IHNlLlNlYXJjaEVuZ2luZShjbHMucm9vdCkKLSAgICAgICAgY2xzLmRpYWxvZyA9IHJkLlJlcGxhY2VEaWFsb2coY2xzLnJvb3QsIGNscy5lbmdpbmUpCisgICAgICAgIGNscy5kaWFsb2cgPSBSZXBsYWNlRGlhbG9nKGNscy5yb290LCBjbHMuZW5naW5lKQorICAgICAgICBjbHMuZGlhbG9nLmJlbGwgPSBsYW1iZGE6IE5vbmUKICAgICAgICAgY2xzLmRpYWxvZy5vayA9IE1vY2soKQogICAgICAgICBjbHMudGV4dCA9IFRleHQoY2xzLnJvb3QpCiAgICAgICAgIGNscy50ZXh0LnVuZG9fYmxvY2tfc3RhcnQgPSBNb2NrKCkKQEAgLTcwLDcgKzcxLDYgQEAKICAgICAgICAgIyB0ZXh0IGZvdW5kIGFuZCByZXBsYWNlZAogICAgICAgICBwdi5zZXQoJ2EnKQogICAgICAgICBydi5zZXQoJ2FzZGYnKQotICAgICAgICBzZWxmLmRpYWxvZy5vcGVuKHNlbGYudGV4dCkKICAgICAgICAgcmVwbGFjZSgpCiAgICAgICAgIGVxdWFsKHRleHQuZ2V0KCcxLjgnLCAnMS4xMicpLCAnYXNkZicpCiAKQEAgLTkxLDcgKzkxLDcgQEAKICAgICAgICAgdGV4dC5tYXJrX3NldCgnaW5zZXJ0JywgJ2VuZCcpCiAgICAgICAgIHRleHQuaW5zZXJ0KCdpbnNlcnQnLCAnXG5saW5lNDI6JykKICAgICAgICAgYmVmb3JlX3RleHQgPSB0ZXh0LmdldCgnMS4wJywgJ2VuZCcpCi0gICAgICAgIHB2LnNldCgnW2Etel1bXGRdKycpCisgICAgICAgIHB2LnNldChyJ1thLXpdW1xkXSsnKQogICAgICAgICByZXBsYWNlKCkKICAgICAgICAgYWZ0ZXJfdGV4dCA9IHRleHQuZ2V0KCcxLjAnLCAnZW5kJykKICAgICAgICAgZXF1YWwoYmVmb3JlX3RleHQsIGFmdGVyX3RleHQpCkBAIC0xOTIsNyArMTkyLDcgQEAKICAgICAgICAgc2VsZi5lbmdpbmUucmV2YXIuc2V0KFRydWUpCiAKICAgICAgICAgYmVmb3JlX3RleHQgPSB0ZXh0LmdldCgnMS4wJywgJ2VuZCcpCi0gICAgICAgIHB2LnNldCgnW2Etel1bXGRdKycpCisgICAgICAgIHB2LnNldChyJ1thLXpdW1xkXSsnKQogICAgICAgICBydi5zZXQoJ2hlbGxvJykKICAgICAgICAgcmVwbGFjZSgpCiAgICAgICAgIGFmdGVyX3RleHQgPSB0ZXh0LmdldCgnMS4wJywgJ2VuZCcpCkBAIC0yMDcsNyArMjA3LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJbignZXJyb3InLCBzaG93ZXJyb3IudGl0bGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0VtcHR5Jywgc2hvd2Vycm9yLm1lc3NhZ2UpCiAKLSAgICAgICAgcHYuc2V0KCdbXGQnKQorICAgICAgICBwdi5zZXQocidbXGQnKQogICAgICAgICByZXBsYWNlKCkKICAgICAgICAgc2VsZi5hc3NlcnRJbignZXJyb3InLCBzaG93ZXJyb3IudGl0bGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ1BhdHRlcm4nLCBzaG93ZXJyb3IubWVzc2FnZSkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3JzdHJpcC5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3JzdHJpcC5weQppbmRleCAxYzkwYjkzLi4xMzBlNmJlIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9yc3RyaXAucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcnN0cmlwLnB5CkBAIC0xLDUgKzEsNSBAQAogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgaWRsZWxpYi5Sc3RyaXBFeHRlbnNpb24gYXMgcnMKK2ltcG9ydCBpZGxlbGliLnJzdHJpcCBhcyBycwogZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX2lkbGUgaW1wb3J0IEVkaXRvcgogCiBjbGFzcyByc3RyaXBUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTIxLDcgKzIxLDcgQEAKICAgICBkZWYgdGVzdF9yc3RyaXBfbXVsdGlwbGUoc2VsZik6CiAgICAgICAgIGVkaXRvciA9IEVkaXRvcigpCiAgICAgICAgICMgIFVuY29tbWVudCBmb2xsb3dpbmcgdG8gdmVyaWZ5IHRoYXQgdGVzdCBwYXNzZXMgd2l0aCByZWFsIHdpZGdldHMuCi0jIyAgICAgICAgZnJvbSBpZGxlbGliLkVkaXRvcldpbmRvdyBpbXBvcnQgRWRpdG9yV2luZG93IGFzIEVkaXRvcgorIyMgICAgICAgIGZyb20gaWRsZWxpYi5lZGl0b3IgaW1wb3J0IEVkaXRvcldpbmRvdyBhcyBFZGl0b3IKICMjICAgICAgICBmcm9tIHRraW50ZXIgaW1wb3J0IFRrCiAjIyAgICAgICAgZWRpdG9yID0gRWRpdG9yKHJvb3Q9VGsoKSkKICAgICAgICAgdGV4dCA9IGVkaXRvci50ZXh0CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zY3JvbGxlZGxpc3QucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zY3JvbGxlZGxpc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTZhYWJmZQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3Njcm9sbGVkbGlzdC5weQpAQCAtMCwwICsxLDI5IEBACisnJycgVGVzdCBpZGxlbGliLnNjcm9sbGVkbGlzdC4KKworQ292ZXJhZ2U6IDM5JQorJycnCitmcm9tIGlkbGVsaWIgaW1wb3J0IHNjcm9sbGVkbGlzdAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCityZXF1aXJlcygnZ3VpJykKK2ltcG9ydCB1bml0dGVzdAorZnJvbSB0a2ludGVyIGltcG9ydCBUaworCisKK2NsYXNzIFNjcm9sbGVkTGlzdFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgY2xzLnJvb3QgPSBUaygpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBjbHMucm9vdC5kZXN0cm95KCkKKyAgICAgICAgZGVsIGNscy5yb290CisKKworICAgIGRlZiB0ZXN0X2luaXQoc2VsZik6CisgICAgICAgIHNjcm9sbGVkbGlzdC5TY3JvbGxlZExpc3Qoc2VsZi5yb290KQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MikKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3NlYXJjaGRpYWxvZy5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3NlYXJjaC5weQpzaW1pbGFyaXR5IGluZGV4IDkxJQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zZWFyY2hkaWFsb2cucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3NlYXJjaC5weQppbmRleCAxOTBjODY2Li44MGZhOTNhIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zZWFyY2hkaWFsb2cucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfc2VhcmNoLnB5CkBAIC0xLDQgKzEsNCBAQAotIiIiVGVzdCBTZWFyY2hEaWFsb2cgY2xhc3MgaW4gU2VhcmNoRGlhbG9ndWUucHkiIiIKKyIiIlRlc3QgU2VhcmNoRGlhbG9nIGNsYXNzIGluIGlkbGVsaWIuc2VhcmNoLnB5IiIiCiAKICMgRG9lcyBub3QgY3VycmVudGx5IHRlc3QgdGhlIGV2ZW50IGhhbmRsZXIgd3JhcHBlcnMuCiAjIEEgdXNhZ2UgdGVzdCBzaG91bGQgc2ltdWxhdGUgY2xpY2tzIGFuZCBjaGVjayBoaWxpZ2h0aW5nLgpAQCAtMTEsOCArMTEsOCBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgdGtpbnRlciBhcyB0awogZnJvbSB0a2ludGVyIGltcG9ydCBCb29sZWFuVmFyCi1pbXBvcnQgaWRsZWxpYi5TZWFyY2hFbmdpbmUgYXMgc2UKLWltcG9ydCBpZGxlbGliLlNlYXJjaERpYWxvZyBhcyBzZAoraW1wb3J0IGlkbGVsaWIuc2VhcmNoZW5naW5lIGFzIHNlCitpbXBvcnQgaWRsZWxpYi5zZWFyY2ggYXMgc2QKIAogCiBjbGFzcyBTZWFyY2hEaWFsb2dUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTI5LDYgKzI5LDcgQEAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYuZW5naW5lID0gc2UuU2VhcmNoRW5naW5lKHNlbGYucm9vdCkKICAgICAgICAgc2VsZi5kaWFsb2cgPSBzZC5TZWFyY2hEaWFsb2coc2VsZi5yb290LCBzZWxmLmVuZ2luZSkKKyAgICAgICAgc2VsZi5kaWFsb2cuYmVsbCA9IGxhbWJkYTogTm9uZQogICAgICAgICBzZWxmLnRleHQgPSB0ay5UZXh0KHNlbGYucm9vdCkKICAgICAgICAgc2VsZi50ZXh0Lmluc2VydCgnMS4wJywgJ0hlbGxvIFdvcmxkIScpCiAKQEAgLTM4LDYgKzM5LDcgQEAKIAogICAgICAgICBzZWxmLmVuZ2luZS5zZXRwYXQoJycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5kaWFsb2cuZmluZF9hZ2Fpbih0ZXh0KSkKKyAgICAgICAgc2VsZi5kaWFsb2cuYmVsbCA9IGxhbWJkYTogTm9uZQogCiAgICAgICAgIHNlbGYuZW5naW5lLnNldHBhdCgnSGVsbG8nKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5kaWFsb2cuZmluZF9hZ2Fpbih0ZXh0KSkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3NlYXJjaGRpYWxvZ2Jhc2UucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zZWFyY2hiYXNlLnB5CnNpbWlsYXJpdHkgaW5kZXggODclCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3NlYXJjaGRpYWxvZ2Jhc2UucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3NlYXJjaGJhc2UucHkKaW5kZXggODAzNmI5MS4uZDc2OWZhMiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfc2VhcmNoZGlhbG9nYmFzZS5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zZWFyY2hiYXNlLnB5CkBAIC0xLDE0ICsxLDEzIEBACi0nJydVbml0dGVzdHMgZm9yIGlkbGVsaWIvU2VhcmNoRGlhbG9nQmFzZS5weQorJycndGVzdHMgaWRsZWxpYi5zZWFyY2hiYXNlLgogCiBDb3ZlcmFnZTogOTklLiBUaGUgb25seSB0aGluZyBub3QgY292ZXJlZCBpcyBpbmNvbnNlcXVlbnRpYWwgLS0KIHRlc3Rpbmcgc2tpcHBpbmcgb2Ygc3VpdGUgd2hlbiBzZWxmLm5lZWR3cmFwYnV0dG9uIGlzIGZhbHNlLgotCiAnJycKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCiBmcm9tIHRraW50ZXIgaW1wb3J0IFRrLCBUb3BsZXZlbCwgRnJhbWUgIyMsIEJvb2xlYW5WYXIsIFN0cmluZ1ZhcgotZnJvbSBpZGxlbGliIGltcG9ydCBTZWFyY2hFbmdpbmUgYXMgc2UKLWZyb20gaWRsZWxpYiBpbXBvcnQgU2VhcmNoRGlhbG9nQmFzZSBhcyBzZGIKK2Zyb20gaWRsZWxpYiBpbXBvcnQgc2VhcmNoZW5naW5lIGFzIHNlCitmcm9tIGlkbGVsaWIgaW1wb3J0IHNlYXJjaGJhc2UgYXMgc2RiCiBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lm1vY2tfaWRsZSBpbXBvcnQgRnVuYwogIyMgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX3RrIGltcG9ydCBWYXIKIApAQCAtNzQsNyArNzMsNyBAQAogICAgIGRlZiB0ZXN0X21ha2VfZW50cnkoc2VsZik6CiAgICAgICAgIGVxdWFsID0gc2VsZi5hc3NlcnRFcXVhbAogICAgICAgICBzZWxmLmRpYWxvZy5yb3cgPSAwCi0gICAgICAgIHNlbGYuZGlhbG9nLnRvcCA9IFRvcGxldmVsKHNlbGYucm9vdCkKKyAgICAgICAgc2VsZi5kaWFsb2cudG9wID0gc2VsZi5yb290CiAgICAgICAgIGVudHJ5LCBsYWJlbCA9IHNlbGYuZGlhbG9nLm1ha2VfZW50cnkoIlRlc3Q6IiwgJ2hlbGxvJykKICAgICAgICAgZXF1YWwobGFiZWxbJ3RleHQnXSwgJ1Rlc3Q6JykKIApAQCAtODcsNiArODYsNyBAQAogICAgICAgICBlcXVhbChzZWxmLmRpYWxvZy5yb3csIDEpCiAKICAgICBkZWYgdGVzdF9jcmVhdGVfZW50cmllcyhzZWxmKToKKyAgICAgICAgc2VsZi5kaWFsb2cudG9wID0gc2VsZi5yb290CiAgICAgICAgIHNlbGYuZGlhbG9nLnJvdyA9IDAKICAgICAgICAgc2VsZi5lbmdpbmUuc2V0cGF0KCdoZWxsbycpCiAgICAgICAgIHNlbGYuZGlhbG9nLmNyZWF0ZV9lbnRyaWVzKCkKQEAgLTk0LDcgKzk0LDcgQEAKIAogICAgIGRlZiB0ZXN0X21ha2VfZnJhbWUoc2VsZik6CiAgICAgICAgIHNlbGYuZGlhbG9nLnJvdyA9IDAKLSAgICAgICAgc2VsZi5kaWFsb2cudG9wID0gVG9wbGV2ZWwoc2VsZi5yb290KQorICAgICAgICBzZWxmLmRpYWxvZy50b3AgPSBzZWxmLnJvb3QKICAgICAgICAgZnJhbWUsIGxhYmVsID0gc2VsZi5kaWFsb2cubWFrZV9mcmFtZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGFiZWwsICcnKQogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZnJhbWUsIEZyYW1lKQpAQCAtMTA0LDcgKzEwNCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShmcmFtZSwgRnJhbWUpCiAKICAgICBkZWYgYnRuX3Rlc3Rfc2V0dXAoc2VsZiwgbWV0aCk6Ci0gICAgICAgIHNlbGYuZGlhbG9nLnRvcCA9IFRvcGxldmVsKHNlbGYucm9vdCkKKyAgICAgICAgc2VsZi5kaWFsb2cudG9wID0gc2VsZi5yb290CiAgICAgICAgIHNlbGYuZGlhbG9nLnJvdyA9IDAKICAgICAgICAgcmV0dXJuIG1ldGgoKQogCkBAIC0xMTksMTEgKzExOSw2IEBACiAgICAgICAgICAgICAgICAgdmFyLCBsYWJlbCA9IHNwZWMKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1dHRvblsndGV4dCddLCBsYWJlbCkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhci5nZXQoKSwgc3RhdGUpCi0gICAgICAgICAgICAgICAgaWYgc3RhdGUgPT0gMToKLSAgICAgICAgICAgICAgICAgICAgYnV0dG9uLmRlc2VsZWN0KCkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBidXR0b24uc2VsZWN0KCkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhci5nZXQoKSwgMSAtIHN0YXRlKQogCiAgICAgZGVmIHRlc3RfY3JlYXRlX290aGVyX2J1dHRvbnMoc2VsZik6CiAgICAgICAgIGZvciBzdGF0ZSBpbiAoRmFsc2UsIFRydWUpOgpAQCAtMTM5LDE4ICsxMzQsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgIyBoaXQgb3RoZXIgYnV0dG9uLCB0aGVuIHRoaXMgb25lCiAgICAgICAgICAgICAgICAgICAgICMgaW5kZXhlcyBkZXBlbmQgb24gYnV0dG9uIG9yZGVyCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFyLmdldCgpLCBzdGF0ZSkKLSAgICAgICAgICAgICAgICAgICAgYnV0dG9uc1t2YWxdLnNlbGVjdCgpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFyLmdldCgpLCAxIC0gc3RhdGUpCi0gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnNbMS12YWxdLnNlbGVjdCgpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFyLmdldCgpLCBzdGF0ZSkKIAogICAgIGRlZiB0ZXN0X21ha2VfYnV0dG9uKHNlbGYpOgotICAgICAgICBzZWxmLmRpYWxvZy50b3AgPSBUb3BsZXZlbChzZWxmLnJvb3QpCisgICAgICAgIHNlbGYuZGlhbG9nLnRvcCA9IHNlbGYucm9vdAogICAgICAgICBzZWxmLmRpYWxvZy5idXR0b25mcmFtZSA9IEZyYW1lKHNlbGYuZGlhbG9nLnRvcCkKICAgICAgICAgYnRuID0gc2VsZi5kaWFsb2cubWFrZV9idXR0b24oJ1Rlc3QnLCBzZWxmLmRpYWxvZy5jbG9zZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidG5bJ3RleHQnXSwgJ1Rlc3QnKQogCiAgICAgZGVmIHRlc3RfY3JlYXRlX2NvbW1hbmRfYnV0dG9ucyhzZWxmKToKKyAgICAgICAgc2VsZi5kaWFsb2cudG9wID0gc2VsZi5yb290CiAgICAgICAgIHNlbGYuZGlhbG9nLmNyZWF0ZV9jb21tYW5kX2J1dHRvbnMoKQogICAgICAgICAjIExvb2sgZm9yIGNsb3NlIGJ1dHRvbiBjb21tYW5kIGluIGJ1dHRvbmZyYW1lCiAgICAgICAgIGNsb3NlYnV0dG9uY29tbWFuZCA9ICcnCkBAIC0xNjAsNiArMTUyLDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJbignY2xvc2UnLCBjbG9zZWJ1dHRvbmNvbW1hbmQpCiAKIAotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIsIGV4aXQ9MikKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3NlYXJjaGVuZ2luZS5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3NlYXJjaGVuZ2luZS5weQppbmRleCBlZGJkNTU4Li5iM2FhOGViIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zZWFyY2hlbmdpbmUucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfc2VhcmNoZW5naW5lLnB5CkBAIC0xLDQgKzEsNCBAQAotJycnVGVzdCBmdW5jdGlvbnMgYW5kIFNlYXJjaEVuZ2luZSBjbGFzcyBpbiBTZWFyY2hFbmdpbmUucHkuJycnCisnJydUZXN0IGZ1bmN0aW9ucyBhbmQgU2VhcmNoRW5naW5lIGNsYXNzIGluIGlkbGVsaWIuc2VhcmNoZW5naW5lLnB5LicnJwogCiAjIFdpdGggbW9jayByZXBsYWNlbWVudHMsIHRoZSBtb2R1bGUgZG9lcyBub3QgdXNlIGFueSBndWkgd2lkZ2V0cy4KICMgVGhlIHVzZSBvZiB0ay5UZXh0IGlzIGF2b2lkZWQgKGZvciBub3csIHVudGlsIG1vY2sgVGV4dCBpcyBpbXByb3ZlZCkKQEAgLTEwLDcgKzEwLDcgQEAKICMgZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCiBmcm9tIHRraW50ZXIgaW1wb3J0ICBCb29sZWFuVmFyLCBTdHJpbmdWYXIsIFRjbEVycm9yICAjICxUaywgVGV4dAogaW1wb3J0IHRraW50ZXIubWVzc2FnZWJveCBhcyB0a01lc3NhZ2VCb3gKLWZyb20gaWRsZWxpYiBpbXBvcnQgU2VhcmNoRW5naW5lIGFzIHNlCitmcm9tIGlkbGVsaWIgaW1wb3J0IHNlYXJjaGVuZ2luZSBhcyBzZQogZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX3RrIGltcG9ydCBWYXIsIE1ib3gKIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja190ayBpbXBvcnQgVGV4dCBhcyBtb2NrVGV4dAogCkBAIC0xMzksMTAgKzEzOSwxMCBAQAogCiAgICAgZGVmIHRlc3Rfc2V0Y29va2VkcGF0KHNlbGYpOgogICAgICAgICBlbmdpbmUgPSBzZWxmLmVuZ2luZQotICAgICAgICBlbmdpbmUuc2V0Y29va2VkcGF0KCdccycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW5naW5lLmdldHBhdCgpLCAnXHMnKQorICAgICAgICBlbmdpbmUuc2V0Y29va2VkcGF0KHInXHMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVuZ2luZS5nZXRwYXQoKSwgcidccycpCiAgICAgICAgIGVuZ2luZS5yZXZhci5zZXQoMSkKLSAgICAgICAgZW5naW5lLnNldGNvb2tlZHBhdCgnXHMnKQorICAgICAgICBlbmdpbmUuc2V0Y29va2VkcGF0KHInXHMnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVuZ2luZS5nZXRwYXQoKSwgcidcXHMnKQogCiAgICAgZGVmIHRlc3RfZ2V0Y29va2VkcGF0KHNlbGYpOgpAQCAtMTU2LDEwICsxNTYsMTAgQEAKICAgICAgICAgRXF1YWwoZW5naW5lLmdldGNvb2tlZHBhdCgpLCByJ1xiaGVsbG9cYicpCiAgICAgICAgIGVuZ2luZS53b3JkdmFyLnNldChGYWxzZSkKIAotICAgICAgICBlbmdpbmUuc2V0cGF0KCdccycpCisgICAgICAgIGVuZ2luZS5zZXRwYXQocidccycpCiAgICAgICAgIEVxdWFsKGVuZ2luZS5nZXRjb29rZWRwYXQoKSwgcidcXHMnKQogICAgICAgICBlbmdpbmUucmV2YXIuc2V0KFRydWUpCi0gICAgICAgIEVxdWFsKGVuZ2luZS5nZXRjb29rZWRwYXQoKSwgJ1xzJykKKyAgICAgICAgRXF1YWwoZW5naW5lLmdldGNvb2tlZHBhdCgpLCByJ1xzJykKIAogICAgIGRlZiB0ZXN0X2dldHByb2coc2VsZik6CiAgICAgICAgIGVuZ2luZSA9IHNlbGYuZW5naW5lCkBAIC0yODIsNyArMjgyLDcgQEAKICAgICAgICAgY2xzLnBhdCA9IHJlLmNvbXBpbGUoJ3RhcmdldCcpCiAgICAgICAgIGNscy5yZXMgPSAoMiwgKDEwLCAxNikpICAjIGxpbmUsIHNsaWNlIGluZGV4ZXMgb2YgJ3RhcmdldCcKICAgICAgICAgY2xzLmZhaWxwYXQgPSByZS5jb21waWxlKCd4eXonKSAgIyBub3QgaW4gdGV4dAotICAgICAgICBjbHMuZW1wdHlwYXQgPSByZS5jb21waWxlKCdcdyonKSAgIyBlbXB0eSBtYXRjaCBwb3NzaWJsZQorICAgICAgICBjbHMuZW1wdHlwYXQgPSByZS5jb21waWxlKHInXHcqJykgICMgZW1wdHkgbWF0Y2ggcG9zc2libGUKIAogICAgIGRlZiBtYWtlX3NlYXJjaChzZWxmLCBmdW5jKToKICAgICAgICAgZGVmIHNlYXJjaChwYXQsIGxpbmUsIGNvbCwgd3JhcCwgb2s9MCk6CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF90ZXh0LnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfdGV4dC5weQppbmRleCA3ZTgyM2RmLi5hNWJhN2JiIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF90ZXh0LnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3RleHQucHkKQEAgLTEsMTcgKzEsMTkgQEAKLSMgVGVzdCBtb2NrX3RrLlRleHQgY2xhc3MgYWdhaW5zdCB0a2ludGVyLlRleHQgY2xhc3MgYnkgcnVubmluZyBzYW1lIHRlc3RzIHdpdGggYm90aC4KKycnJyBUZXN0IG1vY2tfdGsuVGV4dCBjbGFzcyBhZ2FpbnN0IHRraW50ZXIuVGV4dCBjbGFzcworCitSdW4gc2FtZSB0ZXN0cyB3aXRoIGJvdGggYnkgY3JlYXRpbmcgYSBtaXhpbiBjbGFzcy4KKycnJwogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKLQogZnJvbSBfdGtpbnRlciBpbXBvcnQgVGNsRXJyb3IKIAogY2xhc3MgVGV4dFRlc3Qob2JqZWN0KToKKyAgICAiRGVmaW5lIGl0ZW1zIGNvbW1vbiB0byBib3RoIHNldHMgb2YgdGVzdHMuIgogCi0gICAgaHcgPSAnaGVsbG9cbndvcmxkJyAgIyB1c3VhbCBpbml0aWFsIGluc2VydCBhZnRlciBpbml0aWFsaXphdGlvbgorICAgIGh3ID0gJ2hlbGxvXG53b3JsZCcgICMgU2V2ZXJhbCB0ZXN0cyBpbnNlcnQgdGhpcyBhZnRlciBhZnRlciBpbml0aWFsaXphdGlvbi4KICAgICBod24gPSBodysnXG4nICAjIFxuIHByZXNlbnQgYXQgaW5pdGlhbGl6YXRpb24sIGJlZm9yZSBpbnNlcnQKIAotICAgIFRleHQgPSBOb25lCi0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLnRleHQgPSBzZWxmLlRleHQoKQorICAgICMgc2V0VXBDbGFzcyBkZWZpbmVzIGNscy5UZXh0IGFuZCBtYXliZSBjbHMucm9vdC4KKyAgICAjIHNldFVwIGRlZmluZXMgc2VsZi50ZXh0IGZyb20gVGV4dCBhbmQgbWF5YmUgcm9vdC4KIAogICAgIGRlZiB0ZXN0X2luaXQoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50ZXh0LmdldCgnMS4wJyksICdcbicpCkBAIC0xOTYsNiArMTk4LDEwIEBACiAgICAgICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja190ayBpbXBvcnQgVGV4dAogICAgICAgICBjbHMuVGV4dCA9IFRleHQKIAorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi50ZXh0ID0gc2VsZi5UZXh0KCkKKworCiAgICAgZGVmIHRlc3RfZGVjb2RlKHNlbGYpOgogICAgICAgICAjIHRlc3QgZW5kZmxhZ3MgKC0xLCAwKSBub3QgdGVzdGVkIGJ5IHRlc3RfaW5kZXggKHdoaWNoIHVzZXMgKzEpCiAgICAgICAgIGRlY29kZSA9IHNlbGYudGV4dC5fZGVjb2RlCkBAIC0yMjIsNiArMjI4LDkgQEAKICAgICAgICAgY2xzLnJvb3QuZGVzdHJveSgpCiAgICAgICAgIGRlbCBjbHMucm9vdAogCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLnRleHQgPSBzZWxmLlRleHQoc2VsZi5yb290KQorCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3RleHR2aWV3LnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfdGV4dHZpZXcucHkKaW5kZXggNWQyZTYwMC4uZjAxOGY1ZSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfdGV4dHZpZXcucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfdGV4dHZpZXcucHkKQEAgLTEsMjEgKzEsMjEgQEAKLScnJ1Rlc3QgaWRsZWxpYi50ZXh0Vmlldy4KKycnJ1Rlc3QgaWRsZWxpYi50ZXh0dmlldy4KIAogU2luY2UgYWxsIG1ldGhvZHMgYW5kIGZ1bmN0aW9ucyBjcmVhdGUgKG9yIGRlc3Ryb3kpIGEgVGV4dFZpZXdlciwgd2hpY2gKIGlzIGEgd2lkZ2V0IGNvbnRhaW5pbmcgbXVsdGlwbGUgd2lkZ2V0cywgYWxsIHRlc3RzIG11c3QgYmUgZ3VpIHRlc3RzLgogVXNpbmcgbW9jayBUZXh0IHdvdWxkIG5vdCBjaGFuZ2UgdGhpcy4gIE90aGVyIG1vY2tzIGFyZSB1c2VkIHRvIHJldHJpZXZlCiBpbmZvcm1hdGlvbiBhYm91dCBjYWxscy4KIAotVGhlIGNvdmVyYWdlIGlzIGVzc2VudGlhbGx5IDEwMCUuCitDb3ZlcmFnZTogOTQlLgogJycnCitmcm9tIGlkbGVsaWIgaW1wb3J0IHRleHR2aWV3IGFzIHR2CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKIHJlcXVpcmVzKCdndWknKQogCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBvcwogZnJvbSB0a2ludGVyIGltcG9ydCBUawotZnJvbSBpZGxlbGliIGltcG9ydCB0ZXh0VmlldyBhcyB0dgogZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX2lkbGUgaW1wb3J0IEZ1bmMKLWZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja190ayBpbXBvcnQgTWJveAorZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX3RrIGltcG9ydCBNYm94X2Z1bmMKIAogZGVmIHNldFVwTW9kdWxlKCk6CiAgICAgZ2xvYmFsIHJvb3QKQEAgLTY0LDE3ICs2NCwxNyBAQAogICAgICAgICB2aWV3LmRlc3Ryb3koKQogCiAKLWNsYXNzIHRleHR2aWV3VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBWaWV3RnVuY3Rpb25UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBzZXRVcENsYXNzKGNscyk6Ci0gICAgICAgIGNscy5vcmlnX21ib3ggPSB0di50a01lc3NhZ2VCb3gKLSAgICAgICAgdHYudGtNZXNzYWdlQm94ID0gTWJveAorICAgICAgICBjbHMub3JpZ19lcnJvciA9IHR2LnNob3dlcnJvcgorICAgICAgICB0di5zaG93ZXJyb3IgPSBNYm94X2Z1bmMoKQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKLSAgICAgICAgdHYudGtNZXNzYWdlQm94ID0gY2xzLm9yaWdfbWJveAotICAgICAgICBkZWwgY2xzLm9yaWdfbWJveAorICAgICAgICB0di5zaG93ZXJyb3IgPSBjbHMub3JpZ19lcnJvcgorICAgICAgICBkZWwgY2xzLm9yaWdfZXJyb3IKIAogICAgIGRlZiB0ZXN0X3ZpZXdfdGV4dChzZWxmKToKICAgICAgICAgIyBJZiBtb2RhbCBUcnVlLCBnZXQgdGsgZXJyb3IgJ2Nhbid0IGludm9rZSAiZXZlbnQiIGNvbW1hbmQnLgpAQCAtOTAsNyArOTAsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEluKCdUZXN0Jywgdmlldy50ZXh0Vmlldy5nZXQoJzEuMCcsICcxLmVuZCcpKQogICAgICAgICB2aWV3Lk9rKCkKIAotICAgICAgICAjIE1vY2sgbWVzc2FnZWJveCB3aWxsIGJlIHVzZWQgYW5kIHZpZXdfZmlsZSB3aWxsIG5vdCByZXR1cm4gYW55dGhpbmcKKyAgICAgICAgIyBNb2NrIHNob3dlcnJvciB3aWxsIGJlIHVzZWQ7IHZpZXdfZmlsZSB3aWxsIHJldHVybiBOb25lLgogICAgICAgICB0ZXN0ZmlsZSA9IG9zLnBhdGguam9pbih0ZXN0X2RpciwgJy4uL25vdHRoZXJlLnB5JykKICAgICAgICAgdmlldyA9IHR2LnZpZXdfZmlsZShyb290LCAnVGl0bGUnLCB0ZXN0ZmlsZSwgbW9kYWw9RmFsc2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHZpZXcpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF90cmVlLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfdHJlZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOWJhOTY0Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfdHJlZS5weQpAQCAtMCwwICsxLDM2IEBACisnJycgVGVzdCBpZGxlbGliLnRyZWUuCisKK0NvdmVyYWdlOiA1NiUKKycnJworZnJvbSBpZGxlbGliIGltcG9ydCB0cmVlCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKK3JlcXVpcmVzKCdndWknKQoraW1wb3J0IG9zCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gdGtpbnRlciBpbXBvcnQgVGsKKworCitjbGFzcyBUcmVlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICBjbHMucm9vdCA9IFRrKCkKKyAgICAgICAgY2xzLnJvb3Qud2l0aGRyYXcoKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgY2xzLnJvb3QuZGVzdHJveSgpCisgICAgICAgIGRlbCBjbHMucm9vdAorCisgICAgZGVmIHRlc3RfaW5pdChzZWxmKToKKyAgICAgICAgIyBTdGFydCB3aXRoIGNvZGUgc2xpZ2h0bHkgYWRhcHRlZCBmcm9tIGh0ZXN0LgorICAgICAgICBzYyA9IHRyZWUuU2Nyb2xsZWRDYW52YXMoCisgICAgICAgICAgICBzZWxmLnJvb3QsIGJnPSJ3aGl0ZSIsIGhpZ2hsaWdodHRoaWNrbmVzcz0wLCB0YWtlZm9jdXM9MSkKKyAgICAgICAgc2MuZnJhbWUucGFjayhleHBhbmQ9MSwgZmlsbD0iYm90aCIsIHNpZGU9J2xlZnQnKQorICAgICAgICBpdGVtID0gdHJlZS5GaWxlVHJlZUl0ZW0odHJlZS5JQ09ORElSKQorICAgICAgICBub2RlID0gdHJlZS5UcmVlTm9kZShzYy5jYW52YXMsIE5vbmUsIGl0ZW0pCisgICAgICAgIG5vZGUuZXhwYW5kKCkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF91bmRvZGVsZWdhdG9yLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfdW5kby5weQpzaW1pbGFyaXR5IGluZGV4IDk0JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF91bmRvZGVsZWdhdG9yLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF91bmRvLnB5CmluZGV4IDJiODNjOTkuLmU4NzI5MjcgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3VuZG9kZWxlZ2F0b3IucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfdW5kby5weQpAQCAtMSw0ICsxLDQgQEAKLSIiIlVuaXR0ZXN0IGZvciBVbmRvRGVsZWdhdG9yIGluIGlkbGVsaWIuVW5kb0RlbGVnYXRvci4KKyIiIlVuaXR0ZXN0IGZvciBVbmRvRGVsZWdhdG9yIGluIGlkbGVsaWIudW5kby5weS4KIAogQ292ZXJhZ2UgYWJvdXQgODAlIChyZXRlc3QpLgogIiIiCkBAIC04LDggKzgsOCBAQAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IE1vY2sKIGZyb20gdGtpbnRlciBpbXBvcnQgVGV4dCwgVGsKLWZyb20gaWRsZWxpYi5VbmRvRGVsZWdhdG9yIGltcG9ydCBVbmRvRGVsZWdhdG9yCi1mcm9tIGlkbGVsaWIuUGVyY29sYXRvciBpbXBvcnQgUGVyY29sYXRvcgorZnJvbSBpZGxlbGliLnVuZG8gaW1wb3J0IFVuZG9EZWxlZ2F0b3IKK2Zyb20gaWRsZWxpYi5wZXJjb2xhdG9yIGltcG9ydCBQZXJjb2xhdG9yCiAKIAogY2xhc3MgVW5kb0RlbGVnYXRvclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMjksOCArMjksOCBAQAogCiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLmRlbGVnYXRvciA9IFVuZG9EZWxlZ2F0b3IoKQorICAgICAgICBzZWxmLmRlbGVnYXRvci5iZWxsID0gTW9jaygpCiAgICAgICAgIHNlbGYucGVyY29sYXRvci5pbnNlcnRmaWx0ZXIoc2VsZi5kZWxlZ2F0b3IpCi0gICAgICAgIHNlbGYuZGVsZWdhdG9yLmJlbGwgPSBNb2NrKHdyYXBzPXNlbGYuZGVsZWdhdG9yLmJlbGwpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHNlbGYucGVyY29sYXRvci5yZW1vdmVmaWx0ZXIoc2VsZi5kZWxlZ2F0b3IpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF93YXJuaW5nLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfd2FybmluZy5weQppbmRleCAxODYyN2RkLi5mMzI2OWYxIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF93YXJuaW5nLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3dhcm5pbmcucHkKQEAgLTEsNCArMSw0IEBACi0nJydUZXN0IHdhcm5pbmdzIHJlcGxhY2VtZW50IGluIFB5U2hlbGwucHkgYW5kIHJ1bi5weS4KKycnJ1Rlc3Qgd2FybmluZ3MgcmVwbGFjZW1lbnQgaW4gcHlzaGVsbC5weSBhbmQgcnVuLnB5LgogCiBUaGlzIGZpbGUgY291bGQgYmUgZXhwYW5kZWQgdG8gaW5jbHVkZSB0cmFjZWJhY2sgb3ZlcnJpZGVzCiAoaW4gc2FtZSB0d28gbW9kdWxlcykuIElmIHNvLCBjaGFuZ2UgbmFtZS4KQEAgLTE3LDkgKzE3LDkgQEAKIHJ1bm5pbmdfaW5faWRsZSA9ICdpZGxlJyBpbiBzaG93d2FybmluZy5fX25hbWVfXwogCiBmcm9tIGlkbGVsaWIgaW1wb3J0IHJ1bgotZnJvbSBpZGxlbGliIGltcG9ydCBQeVNoZWxsIGFzIHNoZWxsCitmcm9tIGlkbGVsaWIgaW1wb3J0IHB5c2hlbGwgYXMgc2hlbGwKIAotIyBUaGUgZm9sbG93aW5nIHdhcyBnZW5lcmF0ZWQgZnJvbSBQeVNoZWxsLmlkbGVfZm9ybWF0d2FybmluZworIyBUaGUgZm9sbG93aW5nIHdhcyBnZW5lcmF0ZWQgZnJvbSBweXNoZWxsLmlkbGVfZm9ybWF0d2FybmluZwogIyBhbmQgY2hlY2tlZCBhcyBtYXRjaGluZyBleHBlY3RhdGlvbi4KIGlkbGVtc2cgPSAnJycKIFdhcm5pbmcgKGZyb20gd2FybmluZ3MgbW9kdWxlKToKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGV2ZXIucHkgYi9MaWIvaWRsZWxpYi9pZGxldmVyLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZTlmNjlhLi4wMDAwMDAwCi0tLSBhL0xpYi9pZGxlbGliL2lkbGV2ZXIucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0iIiIKLVRoZSBzZXBhcmF0ZSBJZGxlIHZlcnNpb24gd2FzIGVsaW1pbmF0ZWQgeWVhcnMgYWdvOwotaWRsZWxpYi5pZGxldmVyIGlzIG5vIGxvbmdlciB1c2VkIGJ5IElkbGUKLWFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gMy42IG9yIGxhdGVyLiAgVXNlCi0gICAgZnJvbSBzeXMgaW1wb3J0IHZlcnNpb24KLSAgICBJRExFX1ZFUlNJT04gPSB2ZXJzaW9uWzp2ZXJzaW9uLmluZGV4KCcgJyldCi0iIiIKLSMgS2VwdCBmb3Igbm93IG9ubHkgZm9yIHBvc3NpYmxlIGV4aXN0aW5nIGV4dGVuc2lvbiB1c2UKLWltcG9ydCB3YXJuaW5ncyBhcyB3Ci13Lndhcm4oX19kb2NfXywgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCi1mcm9tIHN5cyBpbXBvcnQgdmVyc2lvbgotSURMRV9WRVJTSU9OID0gdmVyc2lvbls6dmVyc2lvbi5pbmRleCgnICcpXQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvSU9CaW5kaW5nLnB5IGIvTGliL2lkbGVsaWIvaW9tZW51LnB5CnNpbWlsYXJpdHkgaW5kZXggODglCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL0lPQmluZGluZy5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvaW9tZW51LnB5CmluZGV4IDg0ZjM5YTIuLjM0MTRjN2IgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0lPQmluZGluZy5weQorKysgYi9MaWIvaWRsZWxpYi9pb21lbnUucHkKQEAgLTEwLDU3ICsxMCw2MCBAQAogaW1wb3J0IHRraW50ZXIubWVzc2FnZWJveCBhcyB0a01lc3NhZ2VCb3gKIGZyb20gdGtpbnRlci5zaW1wbGVkaWFsb2cgaW1wb3J0IGFza3N0cmluZwogCi1mcm9tIGlkbGVsaWIuY29uZmlnSGFuZGxlciBpbXBvcnQgaWRsZUNvbmYKK2ltcG9ydCBpZGxlbGliCitmcm9tIGlkbGVsaWIuY29uZmlnIGltcG9ydCBpZGxlQ29uZgogCi0KLSMgVHJ5IHNldHRpbmcgdGhlIGxvY2FsZSwgc28gdGhhdCB3ZSBjYW4gZmluZCBvdXQKLSMgd2hhdCBlbmNvZGluZyB0byB1c2UKLXRyeToKLSAgICBpbXBvcnQgbG9jYWxlCi0gICAgbG9jYWxlLnNldGxvY2FsZShsb2NhbGUuTENfQ1RZUEUsICIiKQotZXhjZXB0IChJbXBvcnRFcnJvciwgbG9jYWxlLkVycm9yKToKLSAgICBwYXNzCi0KLSMgRW5jb2RpbmcgZm9yIGZpbGUgbmFtZXMKLWZpbGVzeXN0ZW1lbmNvZGluZyA9IHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKSAgIyMjIGN1cnJlbnRseSB1bnVzZWQKLQotbG9jYWxlX2VuY29kaW5nID0gJ2FzY2lpJwotaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6Ci0gICAgIyBPbiBXaW5kb3dzLCB3ZSBjb3VsZCB1c2UgIm1iY3MiLiBIb3dldmVyLCB0byBnaXZlIHRoZSB1c2VyCi0gICAgIyBhIHBvcnRhYmxlIGVuY29kaW5nIG5hbWUsIHdlIG5lZWQgdG8gZmluZCB0aGUgY29kZSBwYWdlCi0gICAgdHJ5OgotICAgICAgICBsb2NhbGVfZW5jb2RpbmcgPSBsb2NhbGUuZ2V0ZGVmYXVsdGxvY2FsZSgpWzFdCi0gICAgICAgIGNvZGVjcy5sb29rdXAobG9jYWxlX2VuY29kaW5nKQotICAgIGV4Y2VwdCBMb29rdXBFcnJvcjoKLSAgICAgICAgcGFzcworaWYgaWRsZWxpYi50ZXN0aW5nOiAgIyBTZXQgVHJ1ZSBieSB0ZXN0LnRlc3RfaWRsZSB0byBhdm9pZCBzZXRsb2NhbGUuCisgICAgZW5jb2RpbmcgPSAndXRmLTgnCiBlbHNlOgorICAgICMgVHJ5IHNldHRpbmcgdGhlIGxvY2FsZSwgc28gdGhhdCB3ZSBjYW4gZmluZCBvdXQKKyAgICAjIHdoYXQgZW5jb2RpbmcgdG8gdXNlCiAgICAgdHJ5OgotICAgICAgICAjIERpZmZlcmVudCB0aGluZ3MgY2FuIGZhaWwgaGVyZTogdGhlIGxvY2FsZSBtb2R1bGUgbWF5IG5vdCBiZQotICAgICAgICAjIGxvYWRlZCwgaXQgbWF5IG5vdCBvZmZlciBubF9sYW5naW5mbywgb3IgQ09ERVNFVCwgb3IgdGhlCi0gICAgICAgICMgcmVzdWx0aW5nIGNvZGVzZXQgbWF5IGJlIHVua25vd24gdG8gUHl0aG9uLiBXZSBpZ25vcmUgYWxsCi0gICAgICAgICMgdGhlc2UgcHJvYmxlbXMsIGZhbGxpbmcgYmFjayB0byBBU0NJSQotICAgICAgICBsb2NhbGVfZW5jb2RpbmcgPSBsb2NhbGUubmxfbGFuZ2luZm8obG9jYWxlLkNPREVTRVQpCi0gICAgICAgIGlmIGxvY2FsZV9lbmNvZGluZyBpcyBOb25lIG9yIGxvY2FsZV9lbmNvZGluZyBpcyAnJzoKLSAgICAgICAgICAgICMgc2l0dWF0aW9uIG9jY3VycyBvbiBNYWMgT1MgWAotICAgICAgICAgICAgbG9jYWxlX2VuY29kaW5nID0gJ2FzY2lpJwotICAgICAgICBjb2RlY3MubG9va3VwKGxvY2FsZV9lbmNvZGluZykKLSAgICBleGNlcHQgKE5hbWVFcnJvciwgQXR0cmlidXRlRXJyb3IsIExvb2t1cEVycm9yKToKLSAgICAgICAgIyBUcnkgZ2V0ZGVmYXVsdGxvY2FsZTogaXQgcGFyc2VzIGVudmlyb25tZW50IHZhcmlhYmxlcywKLSAgICAgICAgIyB3aGljaCBtYXkgZ2l2ZSBhIGNsdWUuIFVuZm9ydHVuYXRlbHksIGdldGRlZmF1bHRsb2NhbGUgaGFzCi0gICAgICAgICMgYnVncyB0aGF0IGNhbiBjYXVzZSBWYWx1ZUVycm9yLgorICAgICAgICBpbXBvcnQgbG9jYWxlCisgICAgICAgIGxvY2FsZS5zZXRsb2NhbGUobG9jYWxlLkxDX0NUWVBFLCAiIikKKyAgICBleGNlcHQgKEltcG9ydEVycm9yLCBsb2NhbGUuRXJyb3IpOgorICAgICAgICBwYXNzCisKKyAgICBsb2NhbGVfZGVjb2RlID0gJ2FzY2lpJworICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgICAgICAjIE9uIFdpbmRvd3MsIHdlIGNvdWxkIHVzZSAibWJjcyIuIEhvd2V2ZXIsIHRvIGdpdmUgdGhlIHVzZXIKKyAgICAgICAgIyBhIHBvcnRhYmxlIGVuY29kaW5nIG5hbWUsIHdlIG5lZWQgdG8gZmluZCB0aGUgY29kZSBwYWdlCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGxvY2FsZV9lbmNvZGluZyA9IGxvY2FsZS5nZXRkZWZhdWx0bG9jYWxlKClbMV0KKyAgICAgICAgICAgIGNvZGVjcy5sb29rdXAobG9jYWxlX2VuY29kaW5nKQorICAgICAgICBleGNlcHQgTG9va3VwRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgZWxzZToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBEaWZmZXJlbnQgdGhpbmdzIGNhbiBmYWlsIGhlcmU6IHRoZSBsb2NhbGUgbW9kdWxlIG1heSBub3QgYmUKKyAgICAgICAgICAgICMgbG9hZGVkLCBpdCBtYXkgbm90IG9mZmVyIG5sX2xhbmdpbmZvLCBvciBDT0RFU0VULCBvciB0aGUKKyAgICAgICAgICAgICMgcmVzdWx0aW5nIGNvZGVzZXQgbWF5IGJlIHVua25vd24gdG8gUHl0aG9uLiBXZSBpZ25vcmUgYWxsCisgICAgICAgICAgICAjIHRoZXNlIHByb2JsZW1zLCBmYWxsaW5nIGJhY2sgdG8gQVNDSUkKKyAgICAgICAgICAgIGxvY2FsZV9lbmNvZGluZyA9IGxvY2FsZS5ubF9sYW5naW5mbyhsb2NhbGUuQ09ERVNFVCkKICAgICAgICAgICAgIGlmIGxvY2FsZV9lbmNvZGluZyBpcyBOb25lIG9yIGxvY2FsZV9lbmNvZGluZyBpcyAnJzoKICAgICAgICAgICAgICAgICAjIHNpdHVhdGlvbiBvY2N1cnMgb24gTWFjIE9TIFgKICAgICAgICAgICAgICAgICBsb2NhbGVfZW5jb2RpbmcgPSAnYXNjaWknCiAgICAgICAgICAgICBjb2RlY3MubG9va3VwKGxvY2FsZV9lbmNvZGluZykKLSAgICAgICAgZXhjZXB0IChWYWx1ZUVycm9yLCBMb29rdXBFcnJvcik6Ci0gICAgICAgICAgICBwYXNzCisgICAgICAgIGV4Y2VwdCAoTmFtZUVycm9yLCBBdHRyaWJ1dGVFcnJvciwgTG9va3VwRXJyb3IpOgorICAgICAgICAgICAgIyBUcnkgZ2V0ZGVmYXVsdGxvY2FsZTogaXQgcGFyc2VzIGVudmlyb25tZW50IHZhcmlhYmxlcywKKyAgICAgICAgICAgICMgd2hpY2ggbWF5IGdpdmUgYSBjbHVlLiBVbmZvcnR1bmF0ZWx5LCBnZXRkZWZhdWx0bG9jYWxlIGhhcworICAgICAgICAgICAgIyBidWdzIHRoYXQgY2FuIGNhdXNlIFZhbHVlRXJyb3IuCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbG9jYWxlX2VuY29kaW5nID0gbG9jYWxlLmdldGRlZmF1bHRsb2NhbGUoKVsxXQorICAgICAgICAgICAgICAgIGlmIGxvY2FsZV9lbmNvZGluZyBpcyBOb25lIG9yIGxvY2FsZV9lbmNvZGluZyBpcyAnJzoKKyAgICAgICAgICAgICAgICAgICAgIyBzaXR1YXRpb24gb2NjdXJzIG9uIE1hYyBPUyBYCisgICAgICAgICAgICAgICAgICAgIGxvY2FsZV9lbmNvZGluZyA9ICdhc2NpaScKKyAgICAgICAgICAgICAgICBjb2RlY3MubG9va3VwKGxvY2FsZV9lbmNvZGluZykKKyAgICAgICAgICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgTG9va3VwRXJyb3IpOgorICAgICAgICAgICAgICAgIHBhc3MKIAotbG9jYWxlX2VuY29kaW5nID0gbG9jYWxlX2VuY29kaW5nLmxvd2VyKCkKKyAgICBsb2NhbGVfZW5jb2RpbmcgPSBsb2NhbGVfZW5jb2RpbmcubG93ZXIoKQogCi1lbmNvZGluZyA9IGxvY2FsZV9lbmNvZGluZyAgIyMjIEtCSyAwN1NlcDA3ICBUaGlzIGlzIHVzZWQgYWxsIG92ZXIgSURMRSwgY2hlY2shCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyMjICdlbmNvZGluZycgaXMgdXNlZCBiZWxvdyBpbiBlbmNvZGUoKSwgY2hlY2shCisgICAgZW5jb2RpbmcgPSBsb2NhbGVfZW5jb2RpbmcKKyAgICAjIEVuY29kaW5nIGlzIHVzZWQgaW4gbXVsdGlwbGUgZmlsZXM7IGxvY2FsZV9lbmNvZGluZyBub3doZXJlLgorICAgICMgVGhlIG9ubHkgdXNlIG9mICdlbmNvZGluZycgYmVsb3cgaXMgaW4gX2RlY29kZSBhcyBpbml0aWFsIHZhbHVlCisgICAgIyBvZiBkZXByZWNhdGVkIGJsb2NrIGFza2luZyB1c2VyIGZvciBlbmNvZGluZy4KKyAgICAjIFBlcmhhcHMgdXNlIGVsc2V3aGVyZSBzaG91bGQgYmUgcmV2aWV3ZWQuCiAKIGNvZGluZ19yZSA9IHJlLmNvbXBpbGUocideWyBcdFxmXSojLio/Y29kaW5nWzo9XVsgXHRdKihbLVx3Ll0rKScsIHJlLkFTQ0lJKQogYmxhbmtfcmUgPSByZS5jb21waWxlKHInXlsgXHRcZl0qKD86WyNcclxuXXwkKScsIHJlLkFTQ0lJKQpAQCAtMTA3LDYgKzExMCw5IEBACiAKIAogY2xhc3MgSU9CaW5kaW5nOgorIyBPbmUgaW5zdGFuY2UgcGVyIGVkaXRvciBXaW5kb3cgc28gbWV0aG9kcyBrbm93IHdoaWNoIHRvIHNhdmUsIGNsb3NlLgorIyBPcGVuIHJldHVybnMgZm9jdXMgdG8gc2VsZi5lZGl0d2luIGlmIGFib3J0ZWQuCisjIEVkaXRvcldpbmRvdy5vcGVuX21vZHVsZSwgb3RoZXJzLCBiZWxvbmcgaGVyZS4KIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBlZGl0d2luKToKICAgICAgICAgc2VsZi5lZGl0d2luID0gZWRpdHdpbgpAQCAtMzAxLDcgKzMwNyw3IEBACiAgICAgICAgICAgICAgICAgIlRoZSBmaWxlJ3MgZW5jb2RpbmcgaXMgaW52YWxpZCBmb3IgUHl0aG9uIDMueC5cbiIKICAgICAgICAgICAgICAgICAiSURMRSB3aWxsIGNvbnZlcnQgaXQgdG8gVVRGLTguXG4iCiAgICAgICAgICAgICAgICAgIldoYXQgaXMgdGhlIGN1cnJlbnQgZW5jb2Rpbmcgb2YgdGhlIGZpbGU/IiwKLSAgICAgICAgICAgICAgICBpbml0aWFsdmFsdWUgPSBsb2NhbGVfZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgaW5pdGlhbHZhbHVlID0gZW5jb2RpbmcsCiAgICAgICAgICAgICAgICAgcGFyZW50ID0gc2VsZi5lZGl0d2luLnRleHQpCiAKICAgICAgICAgICAgIGlmIGVuYzoKQEAgLTUyOSw4ICs1MzUsOCBAQAogCiAgICAgcm9vdCA9IFRvcGxldmVsKHBhcmVudCkKICAgICByb290LnRpdGxlKCJUZXN0IElPQmluZGluZyIpCi0gICAgd2lkdGgsIGhlaWdodCwgeCwgeSA9IGxpc3QobWFwKGludCwgcmUuc3BsaXQoJ1t4K10nLCBwYXJlbnQuZ2VvbWV0cnkoKSkpKQotICAgIHJvb3QuZ2VvbWV0cnkoIislZCslZCIlKHgsIHkgKyAxNTApKQorICAgIHgsIHkgPSBtYXAoaW50LCBwYXJlbnQuZ2VvbWV0cnkoKS5zcGxpdCgnKycpWzE6XSkKKyAgICByb290Lmdlb21ldHJ5KCIrJWQrJWQiICUgKHgsIHkgKyAxNzUpKQogICAgIGNsYXNzIE15RWRpdFdpbjoKICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRleHQpOgogICAgICAgICAgICAgc2VsZi50ZXh0ID0gdGV4dApAQCAtNTYxLDUgKzU2Nyw4IEBACiAgICAgSU9CaW5kaW5nKGVkaXR3aW4pCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgaW1wb3J0IHVuaXR0ZXN0CisgICAgdW5pdHRlc3QubWFpbignaWRsZWxpYi5pZGxlX3Rlc3QudGVzdF9pb21lbnUnLCB2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKKwogICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgogICAgIHJ1bihfaW9fYmluZGluZykKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL21hY29zeFN1cHBvcnQucHkgYi9MaWIvaWRsZWxpYi9tYWNvc3gucHkKc2ltaWxhcml0eSBpbmRleCA3OCUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvbWFjb3N4U3VwcG9ydC5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvbWFjb3N4LnB5CmluZGV4IGI5NmJhZTEuLmMyMjVkZDkgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL21hY29zeFN1cHBvcnQucHkKKysrIGIvTGliL2lkbGVsaWIvbWFjb3N4LnB5CkBAIC0xLDMwICsxLDI1IEBACiAiIiIKIEEgbnVtYmVyIG9mIGZ1bmN0aW9ucyB0aGF0IGVuaGFuY2UgSURMRSBvbiBNYWMgT1NYLgogIiIiCi1pbXBvcnQgc3lzCi1pbXBvcnQgdGtpbnRlcgotZnJvbSBvcyBpbXBvcnQgcGF0aAorZnJvbSBzeXMgaW1wb3J0IHBsYXRmb3JtICAjIFVzZWQgaW4gX2luaXRfdGtfdHlwZSwgY2hhbmdlZCBieSB0ZXN0LgogaW1wb3J0IHdhcm5pbmdzCiAKLWRlZiBydW5uaW5nQXNPU1hBcHAoKToKLSAgICB3YXJuaW5ncy53YXJuKCJydW5uaW5nQXNPU1hBcHAoKSBpcyBkZXByZWNhdGVkLCB1c2UgaXNBcXVhVGsoKSIsCi0gICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKLSAgICByZXR1cm4gaXNBcXVhVGsoKQoraW1wb3J0IHRraW50ZXIKIAotZGVmIGlzQ2FyYm9uQXF1YVRrKHJvb3QpOgotICAgIHdhcm5pbmdzLndhcm4oImlzQ2FyYm9uQXF1YVRrKHJvb3QpIGlzIGRlcHJlY2F0ZWQsIHVzZSBpc0NhcmJvblRrKCkiLAotICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCi0gICAgcmV0dXJuIGlzQ2FyYm9uVGsoKQorCisjIyBEZWZpbmUgZnVuY3Rpb25zIHRoYXQgcXVlcnkgdGhlIE1hYyBncmFwaGljcyB0eXBlLgorIyMgX3RrX3R5cGUgYW5kIGl0cyBpbml0aWFsaXplciBhcmUgcHJpdmF0ZSB0byB0aGlzIHNlY3Rpb24uCiAKIF90a190eXBlID0gTm9uZQogCi1kZWYgX2luaXRpYWxpemVUa1ZhcmlhbnRUZXN0cyhyb290KToKK2RlZiBfaW5pdF90a190eXBlKCk6CiAgICAgIiIiCiAgICAgSW5pdGlhbGl6ZXMgT1MgWCBUayB2YXJpYW50IHZhbHVlcyBmb3IKICAgICBpc0FxdWFUaygpLCBpc0NhcmJvblRrKCksIGlzQ29jb2FUaygpLCBhbmQgaXNYUXVhcnR6KCkuCiAgICAgIiIiCiAgICAgZ2xvYmFsIF90a190eXBlCi0gICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgIGlmIHBsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgICAgICByb290ID0gdGtpbnRlci5UaygpCiAgICAgICAgIHdzID0gcm9vdC50ay5jYWxsKCd0aycsICd3aW5kb3dpbmdzeXN0ZW0nKQogICAgICAgICBpZiAneDExJyBpbiB3czoKICAgICAgICAgICAgIF90a190eXBlID0gInhxdWFydHoiCkBAIC0zNCw2ICsyOSw3IEBACiAgICAgICAgICAgICBfdGtfdHlwZSA9ICJjb2NvYSIKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIF90a190eXBlID0gImNhcmJvbiIKKyAgICAgICAgcm9vdC5kZXN0cm95KCkKICAgICBlbHNlOgogICAgICAgICBfdGtfdHlwZSA9ICJvdGhlciIKIApAQCAtNDEsNyArMzcsOCBAQAogICAgICIiIgogICAgIFJldHVybnMgVHJ1ZSBpZiBJRExFIGlzIHVzaW5nIGEgbmF0aXZlIE9TIFggVGsgKENvY29hIG9yIENhcmJvbikuCiAgICAgIiIiCi0gICAgYXNzZXJ0IF90a190eXBlIGlzIG5vdCBOb25lCisgICAgaWYgbm90IF90a190eXBlOgorICAgICAgICBfaW5pdF90a190eXBlKCkKICAgICByZXR1cm4gX3RrX3R5cGUgPT0gImNvY29hIiBvciBfdGtfdHlwZSA9PSAiY2FyYm9uIgogCiBkZWYgaXNDYXJib25UaygpOgpAQCAtNDksMjMgKzQ2LDI3IEBACiAgICAgUmV0dXJucyBUcnVlIGlmIElETEUgaXMgdXNpbmcgYSBDYXJib24gQXF1YSBUayAoaW5zdGVhZCBvZiB0aGUKICAgICBuZXdlciBDb2NvYSBBcXVhIFRrKS4KICAgICAiIiIKLSAgICBhc3NlcnQgX3RrX3R5cGUgaXMgbm90IE5vbmUKKyAgICBpZiBub3QgX3RrX3R5cGU6CisgICAgICAgIF9pbml0X3RrX3R5cGUoKQogICAgIHJldHVybiBfdGtfdHlwZSA9PSAiY2FyYm9uIgogCiBkZWYgaXNDb2NvYVRrKCk6CiAgICAgIiIiCiAgICAgUmV0dXJucyBUcnVlIGlmIElETEUgaXMgdXNpbmcgYSBDb2NvYSBBcXVhIFRrLgogICAgICIiIgotICAgIGFzc2VydCBfdGtfdHlwZSBpcyBub3QgTm9uZQorICAgIGlmIG5vdCBfdGtfdHlwZToKKyAgICAgICAgX2luaXRfdGtfdHlwZSgpCiAgICAgcmV0dXJuIF90a190eXBlID09ICJjb2NvYSIKIAogZGVmIGlzWFF1YXJ0eigpOgogICAgICIiIgogICAgIFJldHVybnMgVHJ1ZSBpZiBJRExFIGlzIHVzaW5nIGFuIE9TIFggWDExIFRrLgogICAgICIiIgotICAgIGFzc2VydCBfdGtfdHlwZSBpcyBub3QgTm9uZQorICAgIGlmIG5vdCBfdGtfdHlwZToKKyAgICAgICAgX2luaXRfdGtfdHlwZSgpCiAgICAgcmV0dXJuIF90a190eXBlID09ICJ4cXVhcnR6IgogCisKIGRlZiB0a1ZlcnNpb25XYXJuaW5nKHJvb3QpOgogICAgICIiIgogICAgIFJldHVybnMgYSBzdHJpbmcgd2FybmluZyBtZXNzYWdlIGlmIHRoZSBUayB2ZXJzaW9uIGluIHVzZSBhcHBlYXJzIHRvCkBAIC04Niw2ICs4Nyw5IEBACiAgICAgZWxzZToKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKKworIyMgRml4IHRoZSBtZW51IGFuZCByZWxhdGVkIGZ1bmN0aW9ucy4KKwogZGVmIGFkZE9wZW5FdmVudFN1cHBvcnQocm9vdCwgZmxpc3QpOgogICAgICIiIgogICAgIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBhcHBsaWNhdGlvbiB3aWxsIHJlc3BvbmQgdG8gb3BlbiBBcHBsZUV2ZW50cywgd2hpY2gKQEAgLTEyNCwyMyArMTI4LDIzIEBACiAgICAgIyBEdWUgdG8gYSAobWlzLSlmZWF0dXJlIG9mIFRrQXF1YSB0aGUgdXNlciB3aWxsIGFsc28gc2VlIGFuIGVtcHR5IEhlbHAKICAgICAjIG1lbnUuCiAgICAgZnJvbSB0a2ludGVyIGltcG9ydCBNZW51Ci0gICAgZnJvbSBpZGxlbGliIGltcG9ydCBCaW5kaW5ncwotICAgIGZyb20gaWRsZWxpYiBpbXBvcnQgV2luZG93TGlzdAorICAgIGZyb20gaWRsZWxpYiBpbXBvcnQgbWFpbm1lbnUKKyAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IHdpbmRvd3MKIAotICAgIGNsb3NlSXRlbSA9IEJpbmRpbmdzLm1lbnVkZWZzWzBdWzFdWy0yXQorICAgIGNsb3NlSXRlbSA9IG1haW5tZW51Lm1lbnVkZWZzWzBdWzFdWy0yXQogCiAgICAgIyBSZW1vdmUgdGhlIGxhc3QgMyBpdGVtcyBvZiB0aGUgZmlsZSBtZW51OiBhIHNlcGFyYXRvciwgY2xvc2Ugd2luZG93IGFuZAogICAgICMgcXVpdC4gQ2xvc2Ugd2luZG93IHdpbGwgYmUgcmVpbnNlcnRlZCBqdXN0IGFib3ZlIHRoZSBzYXZlIGl0ZW0sIHdoZXJlCiAgICAgIyBpdCBzaG91bGQgYmUgYWNjb3JkaW5nIHRvIHRoZSBISUcuIFF1aXQgaXMgaW4gdGhlIGFwcGxpY2F0aW9uIG1lbnUuCi0gICAgZGVsIEJpbmRpbmdzLm1lbnVkZWZzWzBdWzFdWy0zOl0KLSAgICBCaW5kaW5ncy5tZW51ZGVmc1swXVsxXS5pbnNlcnQoNiwgY2xvc2VJdGVtKQorICAgIGRlbCBtYWlubWVudS5tZW51ZGVmc1swXVsxXVstMzpdCisgICAgbWFpbm1lbnUubWVudWRlZnNbMF1bMV0uaW5zZXJ0KDYsIGNsb3NlSXRlbSkKIAogICAgICMgUmVtb3ZlIHRoZSAnQWJvdXQnIGVudHJ5IGZyb20gdGhlIGhlbHAgbWVudSwgaXQgaXMgaW4gdGhlIGFwcGxpY2F0aW9uCiAgICAgIyBtZW51Ci0gICAgZGVsIEJpbmRpbmdzLm1lbnVkZWZzWy0xXVsxXVswOjJdCisgICAgZGVsIG1haW5tZW51Lm1lbnVkZWZzWy0xXVsxXVswOjJdCiAgICAgIyBSZW1vdmUgdGhlICdDb25maWd1cmUgSWRsZScgZW50cnkgZnJvbSB0aGUgb3B0aW9ucyBtZW51LCBpdCBpcyBpbiB0aGUKICAgICAjIGFwcGxpY2F0aW9uIG1lbnUgYXMgJ1ByZWZlcmVuY2VzJwotICAgIGRlbCBCaW5kaW5ncy5tZW51ZGVmc1stMl1bMV1bMF0KKyAgICBkZWwgbWFpbm1lbnUubWVudWRlZnNbLTJdWzFdWzBdCiAgICAgbWVudWJhciA9IE1lbnUocm9vdCkKICAgICByb290LmNvbmZpZ3VyZShtZW51PW1lbnViYXIpCiAgICAgbWVudWRpY3QgPSB7fQpAQCAtMTU1LDMwICsxNTksMzAgQEAKIAogICAgICAgICBpZiBlbmQgPiAwOgogICAgICAgICAgICAgbWVudS5kZWxldGUoMCwgZW5kKQotICAgICAgICBXaW5kb3dMaXN0LmFkZF93aW5kb3dzX3RvX21lbnUobWVudSkKLSAgICBXaW5kb3dMaXN0LnJlZ2lzdGVyX2NhbGxiYWNrKHBvc3R3aW5kb3dzbWVudSkKKyAgICAgICAgd2luZG93cy5hZGRfd2luZG93c190b19tZW51KG1lbnUpCisgICAgd2luZG93cy5yZWdpc3Rlcl9jYWxsYmFjayhwb3N0d2luZG93c21lbnUpCiAKICAgICBkZWYgYWJvdXRfZGlhbG9nKGV2ZW50PU5vbmUpOgogICAgICAgICAiSGFuZGxlIEhlbHAgJ0Fib3V0IElETEUnIGV2ZW50LiIKLSAgICAgICAgIyBTeW5jaHJvbml6ZSB3aXRoIEVkaXRvcldpbmRvdy5FZGl0b3JXaW5kb3cuYWJvdXRfZGlhbG9nLgotICAgICAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IGFib3V0RGlhbG9nCi0gICAgICAgIGFib3V0RGlhbG9nLkFib3V0RGlhbG9nKHJvb3QsICdBYm91dCBJRExFJykKKyAgICAgICAgIyBTeW5jaHJvbml6ZSB3aXRoIGVkaXRvci5FZGl0b3JXaW5kb3cuYWJvdXRfZGlhbG9nLgorICAgICAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IGhlbHBfYWJvdXQKKyAgICAgICAgaGVscF9hYm91dC5BYm91dERpYWxvZyhyb290LCAnQWJvdXQgSURMRScpCiAKICAgICBkZWYgY29uZmlnX2RpYWxvZyhldmVudD1Ob25lKToKICAgICAgICAgIkhhbmRsZSBPcHRpb25zICdDb25maWd1cmUgSURMRScgZXZlbnQuIgotICAgICAgICAjIFN5bmNocm9uaXplIHdpdGggRWRpdG9yV2luZG93LkVkaXRvcldpbmRvdy5jb25maWdfZGlhbG9nLgotICAgICAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IGNvbmZpZ0RpYWxvZworICAgICAgICAjIFN5bmNocm9uaXplIHdpdGggZWRpdG9yLkVkaXRvcldpbmRvdy5jb25maWdfZGlhbG9nLgorICAgICAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IGNvbmZpZ2RpYWxvZwogCiAgICAgICAgICMgRW5zdXJlIHRoYXQgdGhlIHJvb3Qgb2JqZWN0IGhhcyBhbiBpbnN0YW5jZV9kaWN0IGF0dHJpYnV0ZSwKICAgICAgICAgIyBtaXJyb3JzIGNvZGUgaW4gRWRpdG9yV2luZG93IChhbHRob3VnaCB0aGF0IHNldHMgdGhlIGF0dHJpYnV0ZQogICAgICAgICAjIG9uIGFuIEVkaXRvcldpbmRvdyBpbnN0YW5jZSB0aGF0IGlzIHRoZW4gcGFzc2VkIGFzIHRoZSBmaXJzdAogICAgICAgICAjIGFyZ3VtZW50IHRvIENvbmZpZ0RpYWxvZykKICAgICAgICAgcm9vdC5pbnN0YW5jZV9kaWN0ID0gZmxpc3QuaW52ZXJzZWRpY3QKLSAgICAgICAgY29uZmlnRGlhbG9nLkNvbmZpZ0RpYWxvZyhyb290LCAnU2V0dGluZ3MnKQorICAgICAgICBjb25maWdkaWFsb2cuQ29uZmlnRGlhbG9nKHJvb3QsICdTZXR0aW5ncycpCiAKICAgICBkZWYgaGVscF9kaWFsb2coZXZlbnQ9Tm9uZSk6CiAgICAgICAgICJIYW5kbGUgSGVscCAnSURMRSBIZWxwJyBldmVudC4iCi0gICAgICAgICMgU3luY2hyb25pemUgd2l0aCBFZGl0b3JXaW5kb3cuRWRpdG9yV2luZG93LmhlbHBfZGlhbG9nLgorICAgICAgICAjIFN5bmNocm9uaXplIHdpdGggZWRpdG9yLkVkaXRvcldpbmRvdy5oZWxwX2RpYWxvZy4KICAgICAgICAgZnJvbSBpZGxlbGliIGltcG9ydCBoZWxwCiAgICAgICAgIGhlbHAuc2hvd19pZGxlaGVscChyb290KQogCkBAIC0xOTgsMjkgKzIwMiwzMyBAQAogICAgICAgICBtZW51ZGljdFsnYXBwbGljYXRpb24nXSA9IG1lbnUgPSBNZW51KG1lbnViYXIsIG5hbWU9J2FwcGxlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZWFyb2ZmPTApCiAgICAgICAgIG1lbnViYXIuYWRkX2Nhc2NhZGUobGFiZWw9J0lETEUnLCBtZW51PW1lbnUpCi0gICAgICAgIEJpbmRpbmdzLm1lbnVkZWZzLmluc2VydCgwLAorICAgICAgICBtYWlubWVudS5tZW51ZGVmcy5pbnNlcnQoMCwKICAgICAgICAgICAgICgnYXBwbGljYXRpb24nLCBbCiAgICAgICAgICAgICAgICAgKCdBYm91dCBJRExFJywgJzw8YWJvdXQtaWRsZT4+JyksCiAgICAgICAgICAgICAgICAgICAgIE5vbmUsCiAgICAgICAgICAgICAgICAgXSkpCi0gICAgICAgIHRrdmVyc2lvbiA9IHJvb3QudGsuZXZhbCgnaW5mbyBwYXRjaGxldmVsJykKLSAgICAgICAgaWYgdHVwbGUobWFwKGludCwgdGt2ZXJzaW9uLnNwbGl0KCcuJykpKSA8ICg4LCA0LCAxNCk6Ci0gICAgICAgICAgICAjIGZvciBlYXJsaWVyIEFxdWFUayB2ZXJzaW9ucywgc3VwcGx5IGEgUHJlZmVyZW5jZXMgbWVudSBpdGVtCi0gICAgICAgICAgICBCaW5kaW5ncy5tZW51ZGVmc1swXVsxXS5hcHBlbmQoCi0gICAgICAgICAgICAgICAgICAgICgnX1ByZWZlcmVuY2VzLi4uLicsICc8PG9wZW4tY29uZmlnLWRpYWxvZz4+JyksCi0gICAgICAgICAgICAgICAgKQogICAgIGlmIGlzQ29jb2FUaygpOgogICAgICAgICAjIHJlcGxhY2UgZGVmYXVsdCBBYm91dCBkaWFsb2cgd2l0aCBBYm91dCBJRExFIG9uZQogICAgICAgICByb290LmNyZWF0ZWNvbW1hbmQoJ3RrQWJvdXREaWFsb2cnLCBhYm91dF9kaWFsb2cpCiAgICAgICAgICMgcmVwbGFjZSBkZWZhdWx0ICJIZWxwIiBpdGVtIGluIEhlbHAgbWVudQogICAgICAgICByb290LmNyZWF0ZWNvbW1hbmQoJzo6dGs6Om1hYzo6U2hvd0hlbHAnLCBoZWxwX2RpYWxvZykKICAgICAgICAgIyByZW1vdmUgcmVkdW5kYW50ICJJRExFIEhlbHAiIGZyb20gbWVudQotICAgICAgICBkZWwgQmluZGluZ3MubWVudWRlZnNbLTFdWzFdWzBdCisgICAgICAgIGRlbCBtYWlubWVudS5tZW51ZGVmc1stMV1bMV1bMF0KKworZGVmIGZpeGIyY29udGV4dChyb290KToKKyAgICAnJydSZW1vdmVkIGJhZCBBcXVhVGsgQnV0dG9uLTIgKHJpZ2h0KSBhbmQgUGFzdGUgYmluZGluZ3MuCisKKyAgICBUaGV5IHByZXZlbnQgY29udGV4dCBtZW51IGFjY2VzcyBhbmQgc2VlbSB0byBiZSBnb25lIGluIEFxdWFUazguNi4KKyAgICBTZWUgaXNzdWUgIzI0ODAxLgorICAgICcnJworICAgIHJvb3QudW5iaW5kX2NsYXNzKCdUZXh0JywgJzxCMj4nKQorICAgIHJvb3QudW5iaW5kX2NsYXNzKCdUZXh0JywgJzxCMi1Nb3Rpb24+JykKKyAgICByb290LnVuYmluZF9jbGFzcygnVGV4dCcsICc8PFBhc3RlU2VsZWN0aW9uPj4nKQogCiBkZWYgc2V0dXBBcHAocm9vdCwgZmxpc3QpOgogICAgICIiIgogICAgIFBlcmZvcm0gaW5pdGlhbCBPUyBYIGN1c3RvbWl6YXRpb25zIGlmIG5lZWRlZC4KLSAgICBDYWxsZWQgZnJvbSBQeVNoZWxsLm1haW4oKSBhZnRlciBpbml0aWFsIGNhbGxzIHRvIFRrKCkKKyAgICBDYWxsZWQgZnJvbSBweXNoZWxsLm1haW4oKSBhZnRlciBpbml0aWFsIGNhbGxzIHRvIFRrKCkKIAogICAgIFRoZXJlIGFyZSBjdXJyZW50bHkgdGhyZWUgbWFqb3IgdmVyc2lvbnMgb2YgVGsgaW4gdXNlIG9uIE9TIFg6CiAgICAgICAgIDEuIEFxdWEgQ29jb2EgVGsgKG5hdGl2ZSBkZWZhdWx0IHNpbmNlIE9TIFggMTAuNikKQEAgLTIzMyw4ICsyNDEsMTMgQEAKICAgICBpc0FxdWFUaygpLCBpc0NhcmJvblRrKCksIGlzQ29jb2FUaygpLCBpc1hRdWFydHooKSBmdW5jdGlvbnMgd2hpY2gKICAgICBhcmUgaW5pdGlhbGl6ZWQgaGVyZSBhcyB3ZWxsLgogICAgICIiIgotICAgIF9pbml0aWFsaXplVGtWYXJpYW50VGVzdHMocm9vdCkKICAgICBpZiBpc0FxdWFUaygpOgogICAgICAgICBoaWRlVGtDb25zb2xlKHJvb3QpCiAgICAgICAgIG92ZXJyaWRlUm9vdE1lbnUocm9vdCwgZmxpc3QpCiAgICAgICAgIGFkZE9wZW5FdmVudFN1cHBvcnQocm9vdCwgZmxpc3QpCisgICAgICAgIGZpeGIyY29udGV4dChyb290KQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgZnJvbSB1bml0dGVzdCBpbXBvcnQgbWFpbgorICAgIG1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3RfbWFjb3N4JywgdmVyYm9zaXR5PTIpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9CaW5kaW5ncy5weSBiL0xpYi9pZGxlbGliL21haW5tZW51LnB5CnNpbWlsYXJpdHkgaW5kZXggOTYlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL0JpbmRpbmdzLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9tYWlubWVudS5weQppbmRleCBlMTlhMjc5Li42NTM0NWNkIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9CaW5kaW5ncy5weQorKysgYi9MaWIvaWRsZWxpYi9tYWlubWVudS5weQpAQCAtMTAsOSArMTAsOSBAQAogIiIiCiBmcm9tIGltcG9ydGxpYi51dGlsIGltcG9ydCBmaW5kX3NwZWMKIAotZnJvbSBpZGxlbGliLmNvbmZpZ0hhbmRsZXIgaW1wb3J0IGlkbGVDb25mCitmcm9tIGlkbGVsaWIuY29uZmlnIGltcG9ydCBpZGxlQ29uZgogCi0jICAgV2FybmluZzogbWVudWRlZnMgaXMgYWx0ZXJlZCBpbiBtYWNvc3hTdXBwb3J0Lm92ZXJyaWRlUm9vdE1lbnUoKQorIyAgIFdhcm5pbmc6IG1lbnVkZWZzIGlzIGFsdGVyZWQgaW4gbWFjb3N4Lm92ZXJyaWRlUm9vdE1lbnUoKQogIyAgIGFmdGVyIGl0IGlzIGRldGVybWluZWQgdGhhdCBhbiBPUyBYIEFxdWEgVGsgaXMgaW4gdXNlLAogIyAgIHdoaWNoIGNhbm5vdCBiZSBkb25lIHVudGlsIGFmdGVyIFRrKCkgaXMgZmlyc3QgY2FsbGVkLgogIyAgIERvIG5vdCBhbHRlciB0aGUgJ2ZpbGUnLCAnb3B0aW9ucycsIG9yICdoZWxwJyBjYXNjYWRlcyBoZXJlCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9NdWx0aUNhbGwucHkgYi9MaWIvaWRsZWxpYi9tdWx0aWNhbGwucHkKc2ltaWxhcml0eSBpbmRleCA5OCUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvTXVsdGlDYWxsLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9tdWx0aWNhbGwucHkKaW5kZXggODQ2Mjg1NC4uYjc0ZmVkNCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvTXVsdGlDYWxsLnB5CisrKyBiL0xpYi9pZGxlbGliL211bHRpY2FsbC5weQpAQCAtMjgsOSArMjgsOSBAQAogICAgdW5sZXNzIHRoaXMgY29uZmxpY3RzIHdpdGggdGhlIGZpcnN0IHJ1bGUuCiBFYWNoIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIGF0IG1vc3Qgb25jZSBmb3IgZWFjaCBldmVudC4KICIiIgotCi1pbXBvcnQgc3lzCiBpbXBvcnQgcmUKK2ltcG9ydCBzeXMKKwogaW1wb3J0IHRraW50ZXIKIAogIyB0aGUgZXZlbnQgdHlwZSBjb25zdGFudHMsIHdoaWNoIGRlZmluZSB0aGUgbWVhbmluZyBvZiBtY190eXBlCkBAIC00MTQsMTIgKzQxNCwxMiBAQAogICAgIHJldHVybiBNdWx0aUNhbGwKIAogCi1kZWYgX211bHRpX2NhbGwocGFyZW50KToKLSAgICByb290ID0gdGtpbnRlci5UaygpCi0gICAgcm9vdC50aXRsZSgiVGVzdCBNdWx0aUNhbGwiKQotICAgIHdpZHRoLCBoZWlnaHQsIHgsIHkgPSBsaXN0KG1hcChpbnQsIHJlLnNwbGl0KCdbeCtdJywgcGFyZW50Lmdlb21ldHJ5KCkpKSkKLSAgICByb290Lmdlb21ldHJ5KCIrJWQrJWQiJSh4LCB5ICsgMTUwKSkKLSAgICB0ZXh0ID0gTXVsdGlDYWxsQ3JlYXRvcih0a2ludGVyLlRleHQpKHJvb3QpCitkZWYgX211bHRpX2NhbGwocGFyZW50KTogICMgaHRlc3QgIworICAgIHRvcCA9IHRraW50ZXIuVG9wbGV2ZWwocGFyZW50KQorICAgIHRvcC50aXRsZSgiVGVzdCBNdWx0aUNhbGwiKQorICAgIHgsIHkgPSBtYXAoaW50LCBwYXJlbnQuZ2VvbWV0cnkoKS5zcGxpdCgnKycpWzE6XSkKKyAgICB0b3AuZ2VvbWV0cnkoIislZCslZCIgJSAoeCwgeSArIDE3NSkpCisgICAgdGV4dCA9IE11bHRpQ2FsbENyZWF0b3IodGtpbnRlci5UZXh0KSh0b3ApCiAgICAgdGV4dC5wYWNrKCkKICAgICBkZWYgYmluZHNlcShzZXEsIG49WzBdKToKICAgICAgICAgZGVmIGhhbmRsZXIoZXZlbnQpOgpAQCAtNDM5LDcgKzQzOSw2IEBACiAgICAgYmluZHNlcSgiPEZvY3VzT3V0PiIpCiAgICAgYmluZHNlcSgiPEVudGVyPiIpCiAgICAgYmluZHNlcSgiPExlYXZlPiIpCi0gICAgcm9vdC5tYWlubG9vcCgpCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5odGVzdCBpbXBvcnQgcnVuCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9PdXRwdXRXaW5kb3cucHkgYi9MaWIvaWRsZWxpYi9vdXR3aW4ucHkKc2ltaWxhcml0eSBpbmRleCA5NiUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvT3V0cHV0V2luZG93LnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9vdXR3aW4ucHkKaW5kZXggZTYxNGY5Yi4uZjZkMjkxNSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvT3V0cHV0V2luZG93LnB5CisrKyBiL0xpYi9pZGxlbGliL291dHdpbi5weQpAQCAtMSw4ICsxLDExIEBACi1mcm9tIHRraW50ZXIgaW1wb3J0ICoKLWZyb20gaWRsZWxpYi5FZGl0b3JXaW5kb3cgaW1wb3J0IEVkaXRvcldpbmRvdwogaW1wb3J0IHJlCisKK2Zyb20gdGtpbnRlciBpbXBvcnQgKgogaW1wb3J0IHRraW50ZXIubWVzc2FnZWJveCBhcyB0a01lc3NhZ2VCb3gKLWZyb20gaWRsZWxpYiBpbXBvcnQgSU9CaW5kaW5nCisKK2Zyb20gaWRsZWxpYi5lZGl0b3IgaW1wb3J0IEVkaXRvcldpbmRvdworZnJvbSBpZGxlbGliIGltcG9ydCBpb21lbnUKKwogCiBjbGFzcyBPdXRwdXRXaW5kb3coRWRpdG9yV2luZG93KToKIApAQCAtMzYsNyArMzksNyBAQAogCiAgICAgZGVmIHdyaXRlKHNlbGYsIHMsIHRhZ3M9KCksIG1hcms9Imluc2VydCIpOgogICAgICAgICBpZiBpc2luc3RhbmNlKHMsIChieXRlcywgYnl0ZXMpKToKLSAgICAgICAgICAgIHMgPSBzLmRlY29kZShJT0JpbmRpbmcuZW5jb2RpbmcsICJyZXBsYWNlIikKKyAgICAgICAgICAgIHMgPSBzLmRlY29kZShpb21lbnUuZW5jb2RpbmcsICJyZXBsYWNlIikKICAgICAgICAgc2VsZi50ZXh0Lmluc2VydChtYXJrLCBzLCB0YWdzKQogICAgICAgICBzZWxmLnRleHQuc2VlKG1hcmspCiAgICAgICAgIHNlbGYudGV4dC51cGRhdGUoKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvRm9ybWF0UGFyYWdyYXBoLnB5IGIvTGliL2lkbGVsaWIvcGFyYWdyYXBoLnB5CnNpbWlsYXJpdHkgaW5kZXggOTclCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL0Zvcm1hdFBhcmFncmFwaC5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvcGFyYWdyYXBoLnB5CmluZGV4IDdhOWQxODUuLmYxMWJkYWUgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0Zvcm1hdFBhcmFncmFwaC5weQorKysgYi9MaWIvaWRsZWxpYi9wYXJhZ3JhcGgucHkKQEAgLTE0LDkgKzE0LDEwIEBACiAgIHNwYWNlcywgdGhleSB3aWxsIG5vdCBiZSBjb25zaWRlcmVkIHBhcnQgb2YgdGhlIHNhbWUgYmxvY2suCiAqIEZhbmN5IGNvbW1lbnRzLCBsaWtlIHRoaXMgYnVsbGV0ZWQgbGlzdCwgYXJlbid0IGhhbmRsZWQgOi0pCiAiIiIKLQogaW1wb3J0IHJlCi1mcm9tIGlkbGVsaWIuY29uZmlnSGFuZGxlciBpbXBvcnQgaWRsZUNvbmYKKworZnJvbSBpZGxlbGliLmNvbmZpZyBpbXBvcnQgaWRsZUNvbmYKKwogCiBjbGFzcyBGb3JtYXRQYXJhZ3JhcGg6CiAKQEAgLTEyOSw3ICsxMzAsNyBAQAogICAgIHBhcnRpYWwgPSBpbmRlbnQxCiAgICAgd2hpbGUgaSA8IG4gYW5kIG5vdCBpc19hbGxfd2hpdGUobGluZXNbaV0pOgogICAgICAgICAjIFhYWCBTaG91bGQgdGFrZSBkb3VibGUgc3BhY2UgYWZ0ZXIgcGVyaW9kIChldGMuKSBpbnRvIGFjY291bnQKLSAgICAgICAgd29yZHMgPSByZS5zcGxpdCgiKFxzKykiLCBsaW5lc1tpXSkKKyAgICAgICAgd29yZHMgPSByZS5zcGxpdChyIihccyspIiwgbGluZXNbaV0pCiAgICAgICAgIGZvciBqIGluIHJhbmdlKDAsIGxlbih3b3JkcyksIDIpOgogICAgICAgICAgICAgd29yZCA9IHdvcmRzW2pdCiAgICAgICAgICAgICBpZiBub3Qgd29yZDoKQEAgLTE4OSw3ICsxOTAsOCBAQAogICAgIGlmIG0gaXMgTm9uZTogcmV0dXJuICIiCiAgICAgcmV0dXJuIG0uZ3JvdXAoMSkKIAorCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIGltcG9ydCB1bml0dGVzdAotICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3RfZm9ybWF0cGFyYWdyYXBoJywKKyAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X3BhcmFncmFwaCcsCiAgICAgICAgICAgICB2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1BhcmVuTWF0Y2gucHkgYi9MaWIvaWRsZWxpYi9wYXJlbm1hdGNoLnB5CnNpbWlsYXJpdHkgaW5kZXggOTYlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1BhcmVuTWF0Y2gucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3BhcmVubWF0Y2gucHkKaW5kZXggNDdlMTBmMy4uY2NlYzcwOCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvUGFyZW5NYXRjaC5weQorKysgYi9MaWIvaWRsZWxpYi9wYXJlbm1hdGNoLnB5CkBAIC00LDkgKzQsOCBAQAogcGFyZW4uICBQYXJlbiBoZXJlIGlzIHVzZWQgZ2VuZXJpY2FsbHk7IHRoZSBtYXRjaGluZyBhcHBsaWVzIHRvCiBwYXJlbnRoZXNlcywgc3F1YXJlIGJyYWNrZXRzLCBhbmQgY3VybHkgYnJhY2VzLgogIiIiCi0KLWZyb20gaWRsZWxpYi5IeXBlclBhcnNlciBpbXBvcnQgSHlwZXJQYXJzZXIKLWZyb20gaWRsZWxpYi5jb25maWdIYW5kbGVyIGltcG9ydCBpZGxlQ29uZgorZnJvbSBpZGxlbGliLmh5cGVycGFyc2VyIGltcG9ydCBIeXBlclBhcnNlcgorZnJvbSBpZGxlbGliLmNvbmZpZyBpbXBvcnQgaWRsZUNvbmYKIAogX29wZW5lcnMgPSB7JyknOicoJywnXSc6J1snLCd9Jzoneyd9CiBDSEVDS19ERUxBWSA9IDEwMCAjIG1pbGxpc2Vjb25kcwpAQCAtNjQsNiArNjMsNyBAQAogICAgICAgICAjIGFuZCBkZWFjdGl2YXRlX3Jlc3RvcmUgKHdoaWNoIGNhbGxzIGV2ZW50X2RlbGV0ZSkuCiAgICAgICAgIGVkaXR3aW4udGV4dC5iaW5kKHNlbGYuUkVTVE9SRV9WSVJUVUFMX0VWRU5UX05BTUUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVzdG9yZV9ldmVudCkKKyAgICAgICAgc2VsZi5iZWxsID0gc2VsZi50ZXh0LmJlbGwgaWYgc2VsZi5CRUxMIGVsc2UgbGFtYmRhOiBOb25lCiAgICAgICAgIHNlbGYuY291bnRlciA9IDAKICAgICAgICAgc2VsZi5pc19yZXN0b3JlX2FjdGl2ZSA9IDAKICAgICAgICAgc2VsZi5zZXRfc3R5bGUoc2VsZi5TVFlMRSkKQEAgLTkzLDcgKzkzLDcgQEAKICAgICAgICAgaW5kaWNlcyA9IChIeXBlclBhcnNlcihzZWxmLmVkaXR3aW4sICJpbnNlcnQiKQogICAgICAgICAgICAgICAgICAgIC5nZXRfc3Vycm91bmRpbmdfYnJhY2tldHMoKSkKICAgICAgICAgaWYgaW5kaWNlcyBpcyBOb25lOgotICAgICAgICAgICAgc2VsZi53YXJuX21pc21hdGNoZWQoKQorICAgICAgICAgICAgc2VsZi5iZWxsKCkKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBzZWxmLmFjdGl2YXRlX3Jlc3RvcmUoKQogICAgICAgICBzZWxmLmNyZWF0ZV90YWcoaW5kaWNlcykKQEAgLTEwOSw3ICsxMDksNyBAQAogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGluZGljZXMgPSBocC5nZXRfc3Vycm91bmRpbmdfYnJhY2tldHMoX29wZW5lcnNbY2xvc2VyXSwgVHJ1ZSkKICAgICAgICAgaWYgaW5kaWNlcyBpcyBOb25lOgotICAgICAgICAgICAgc2VsZi53YXJuX21pc21hdGNoZWQoKQorICAgICAgICAgICAgc2VsZi5iZWxsKCkKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBzZWxmLmFjdGl2YXRlX3Jlc3RvcmUoKQogICAgICAgICBzZWxmLmNyZWF0ZV90YWcoaW5kaWNlcykKQEAgLTEyNCwxMCArMTI0LDYgQEAKICAgICAgICAgaWYgdGltZXJfY291bnQgPT0gc2VsZi5jb3VudGVyOgogICAgICAgICAgICAgc2VsZi5yZXN0b3JlX2V2ZW50KCkKIAotICAgIGRlZiB3YXJuX21pc21hdGNoZWQoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuQkVMTDoKLSAgICAgICAgICAgIHNlbGYudGV4dC5iZWxsKCkKLQogICAgICMgYW55IG9uZSBvZiB0aGUgY3JlYXRlX3RhZ19YWFggbWV0aG9kcyBjYW4gYmUgdXNlZCBkZXBlbmRpbmcgb24KICAgICAjIHRoZSBzdHlsZQogCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9QYXRoQnJvd3Nlci5weSBiL0xpYi9pZGxlbGliL3BhdGhicm93c2VyLnB5CnNpbWlsYXJpdHkgaW5kZXggOTUlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1BhdGhCcm93c2VyLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9wYXRoYnJvd3Nlci5weQppbmRleCA5YWI3NjMyLi42YzE5NTA4IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9QYXRoQnJvd3Nlci5weQorKysgYi9MaWIvaWRsZWxpYi9wYXRoYnJvd3Nlci5weQpAQCAtMSwxMCArMSwxMCBAQAoraW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKIGltcG9ydCBvcwogaW1wb3J0IHN5cwotaW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKIAotZnJvbSBpZGxlbGliLlRyZWVXaWRnZXQgaW1wb3J0IFRyZWVJdGVtCi1mcm9tIGlkbGVsaWIuQ2xhc3NCcm93c2VyIGltcG9ydCBDbGFzc0Jyb3dzZXIsIE1vZHVsZUJyb3dzZXJUcmVlSXRlbQotZnJvbSBpZGxlbGliLlB5U2hlbGwgaW1wb3J0IFB5U2hlbGxGaWxlTGlzdAorZnJvbSBpZGxlbGliLmJyb3dzZXIgaW1wb3J0IENsYXNzQnJvd3NlciwgTW9kdWxlQnJvd3NlclRyZWVJdGVtCitmcm9tIGlkbGVsaWIucHlzaGVsbCBpbXBvcnQgUHlTaGVsbEZpbGVMaXN0Citmcm9tIGlkbGVsaWIudHJlZSBpbXBvcnQgVHJlZUl0ZW0KIAogCiBjbGFzcyBQYXRoQnJvd3NlcihDbGFzc0Jyb3dzZXIpOgpAQCAtMjQsNiArMjQsNyBAQAogICAgIGRlZiByb290bm9kZShzZWxmKToKICAgICAgICAgcmV0dXJuIFBhdGhCcm93c2VyVHJlZUl0ZW0oKQogCisKIGNsYXNzIFBhdGhCcm93c2VyVHJlZUl0ZW0oVHJlZUl0ZW0pOgogCiAgICAgZGVmIEdldFRleHQoc2VsZik6CkBAIC0zNiw2ICszNyw3IEBACiAgICAgICAgICAgICBzdWJsaXN0LmFwcGVuZChpdGVtKQogICAgICAgICByZXR1cm4gc3VibGlzdAogCisKIGNsYXNzIERpckJyb3dzZXJUcmVlSXRlbShUcmVlSXRlbSk6CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZGlyLCBwYWNrYWdlcz1bXSk6CkBAIC05NSw2ICs5Nyw3IEBACiAgICAgICAgIHNvcnRlZC5zb3J0KCkKICAgICAgICAgcmV0dXJuIHNvcnRlZAogCisKIGRlZiBfcGF0aF9icm93c2VyKHBhcmVudCk6ICAjIGh0ZXN0ICMKICAgICBmbGlzdCA9IFB5U2hlbGxGaWxlTGlzdChwYXJlbnQpCiAgICAgUGF0aEJyb3dzZXIoZmxpc3QsIF9odGVzdD1UcnVlKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvUGVyY29sYXRvci5weSBiL0xpYi9pZGxlbGliL3BlcmNvbGF0b3IucHkKc2ltaWxhcml0eSBpbmRleCA5MSUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvUGVyY29sYXRvci5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvcGVyY29sYXRvci5weQppbmRleCBiOGJlMmFhLi5kMThkYWYwIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9QZXJjb2xhdG9yLnB5CisrKyBiL0xpYi9pZGxlbGliL3BlcmNvbGF0b3IucHkKQEAgLTEsNSArMSw1IEBACi1mcm9tIGlkbGVsaWIuV2lkZ2V0UmVkaXJlY3RvciBpbXBvcnQgV2lkZ2V0UmVkaXJlY3RvcgotZnJvbSBpZGxlbGliLkRlbGVnYXRvciBpbXBvcnQgRGVsZWdhdG9yCitmcm9tIGlkbGVsaWIuZGVsZWdhdG9yIGltcG9ydCBEZWxlZ2F0b3IKK2Zyb20gaWRsZWxpYi5yZWRpcmVjdG9yIGltcG9ydCBXaWRnZXRSZWRpcmVjdG9yCiAKIAogY2xhc3MgUGVyY29sYXRvcjoKQEAgLTU3LDcgKzU3LDYgQEAKIAogZGVmIF9wZXJjb2xhdG9yKHBhcmVudCk6ICAjIGh0ZXN0ICMKICAgICBpbXBvcnQgdGtpbnRlciBhcyB0awotICAgIGltcG9ydCByZQogCiAgICAgY2xhc3MgVHJhY2VyKERlbGVnYXRvcik6CiAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lKToKQEAgLTc0LDggKzczLDggQEAKIAogICAgIGJveCA9IHRrLlRvcGxldmVsKHBhcmVudCkKICAgICBib3gudGl0bGUoIlRlc3QgUGVyY29sYXRvciIpCi0gICAgd2lkdGgsIGhlaWdodCwgeCwgeSA9IGxpc3QobWFwKGludCwgcmUuc3BsaXQoJ1t4K10nLCBwYXJlbnQuZ2VvbWV0cnkoKSkpKQotICAgIGJveC5nZW9tZXRyeSgiKyVkKyVkIiAlICh4LCB5ICsgMTUwKSkKKyAgICB4LCB5ID0gbWFwKGludCwgcGFyZW50Lmdlb21ldHJ5KCkuc3BsaXQoJysnKVsxOl0pCisgICAgYm94Lmdlb21ldHJ5KCIrJWQrJWQiICUgKHgsIHkgKyAxNzUpKQogICAgIHRleHQgPSB0ay5UZXh0KGJveCkKICAgICBwID0gUGVyY29sYXRvcih0ZXh0KQogICAgIHBpbiA9IHAuaW5zZXJ0ZmlsdGVyCkBAIC04OSwxMCArODgsMTAgQEAKICAgICAgICAgKHBpbiBpZiB2YXIyLmdldCgpIGVsc2UgcG91dCkodDIpCiAKICAgICB0ZXh0LnBhY2soKQotICAgIHZhcjEgPSB0ay5JbnRWYXIoKQorICAgIHZhcjEgPSB0ay5JbnRWYXIocGFyZW50KQogICAgIGNiMSA9IHRrLkNoZWNrYnV0dG9uKGJveCwgdGV4dD0iVHJhY2VyMSIsIGNvbW1hbmQ9dG9nZ2xlMSwgdmFyaWFibGU9dmFyMSkKICAgICBjYjEucGFjaygpCi0gICAgdmFyMiA9IHRrLkludFZhcigpCisgICAgdmFyMiA9IHRrLkludFZhcihwYXJlbnQpCiAgICAgY2IyID0gdGsuQ2hlY2tidXR0b24oYm94LCB0ZXh0PSJUcmFjZXIyIiwgY29tbWFuZD10b2dnbGUyLCB2YXJpYWJsZT12YXIyKQogICAgIGNiMi5wYWNrKCkKIApkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvUHlQYXJzZS5weSBiL0xpYi9pZGxlbGliL3B5cGFyc2UucHkKc2ltaWxhcml0eSBpbmRleCA5OSUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvUHlQYXJzZS5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvcHlwYXJzZS5weQppbmRleCA5Y2NiYjI1Li42NzM5ZGZkIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9QeVBhcnNlLnB5CisrKyBiL0xpYi9pZGxlbGliL3B5cGFyc2UucHkKQEAgLTEsNiArMSw2IEBACitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBNYXBwaW5nCiBpbXBvcnQgcmUKIGltcG9ydCBzeXMKLWZyb20gY29sbGVjdGlvbnMgaW1wb3J0IE1hcHBpbmcKIAogIyBSZWFzb24gbGFzdCBzdG10IGlzIGNvbnRpbnVlZCAob3IgQ19OT05FIGlmIGl0J3Mgbm90KS4KIChDX05PTkUsIENfQkFDS1NMQVNILCBDX1NUUklOR19GSVJTVF9MSU5FLApkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvUHlTaGVsbC5weSBiL0xpYi9pZGxlbGliL3B5c2hlbGwucHkKc2ltaWxhcml0eSBpbmRleCA5MSUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvUHlTaGVsbC5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvcHlzaGVsbC5weQppbmRleCA1ZGVjNjhlLi5lMWVhZGUxIDEwMDc1NQotLS0gYS9MaWIvaWRsZWxpYi9QeVNoZWxsLnB5CisrKyBiL0xpYi9pZGxlbGliL3B5c2hlbGwucHkKQEAgLTEsMjEgKzEsNSBAQAogIyEgL3Vzci9iaW4vZW52IHB5dGhvbjMKIAotaW1wb3J0IGdldG9wdAotaW1wb3J0IG9zCi1pbXBvcnQgb3MucGF0aAotaW1wb3J0IHJlCi1pbXBvcnQgc29ja2V0Ci1pbXBvcnQgc3VicHJvY2VzcwotaW1wb3J0IHN5cwotaW1wb3J0IHRocmVhZGluZwotaW1wb3J0IHRpbWUKLWltcG9ydCB0b2tlbml6ZQotaW1wb3J0IGlvCi0KLWltcG9ydCBsaW5lY2FjaGUKLWZyb20gY29kZSBpbXBvcnQgSW50ZXJhY3RpdmVJbnRlcnByZXRlcgotZnJvbSBwbGF0Zm9ybSBpbXBvcnQgcHl0aG9uX3ZlcnNpb24sIHN5c3RlbQotCiB0cnk6CiAgICAgZnJvbSB0a2ludGVyIGltcG9ydCAqCiBleGNlcHQgSW1wb3J0RXJyb3I6CkBAIC0yMywxNyArNyw0MiBAQAogICAgICAgICAgICJZb3VyIFB5dGhvbiBtYXkgbm90IGJlIGNvbmZpZ3VyZWQgZm9yIFRrLiAqKiIsIGZpbGU9c3lzLl9fc3RkZXJyX18pCiAgICAgc3lzLmV4aXQoMSkKIGltcG9ydCB0a2ludGVyLm1lc3NhZ2Vib3ggYXMgdGtNZXNzYWdlQm94CitpZiBUa1ZlcnNpb24gPCA4LjU6CisgICAgcm9vdCA9IFRrKCkgICMgb3RoZXJ3aXNlIGNyZWF0ZSByb290IGluIG1haW4KKyAgICByb290LndpdGhkcmF3KCkKKyAgICB0a01lc3NhZ2VCb3guc2hvd2Vycm9yKCJJZGxlIENhbm5vdCBTdGFydCIsCisgICAgICAgICAgICAiSWRsZSByZXF1aXJlcyB0Y2wvdGsgOC41Kywgbm90ICRzLiIgJSBUa1ZlcnNpb24sCisgICAgICAgICAgICBwYXJlbnQ9cm9vdCkKKyAgICBzeXMuZXhpdCgxKQogCi1mcm9tIGlkbGVsaWIuRWRpdG9yV2luZG93IGltcG9ydCBFZGl0b3JXaW5kb3csIGZpeHdvcmRicmVha3MKLWZyb20gaWRsZWxpYi5GaWxlTGlzdCBpbXBvcnQgRmlsZUxpc3QKLWZyb20gaWRsZWxpYi5Db2xvckRlbGVnYXRvciBpbXBvcnQgQ29sb3JEZWxlZ2F0b3IKLWZyb20gaWRsZWxpYi5VbmRvRGVsZWdhdG9yIGltcG9ydCBVbmRvRGVsZWdhdG9yCi1mcm9tIGlkbGVsaWIuT3V0cHV0V2luZG93IGltcG9ydCBPdXRwdXRXaW5kb3cKLWZyb20gaWRsZWxpYi5jb25maWdIYW5kbGVyIGltcG9ydCBpZGxlQ29uZgorZnJvbSBjb2RlIGltcG9ydCBJbnRlcmFjdGl2ZUludGVycHJldGVyCitpbXBvcnQgZ2V0b3B0CitpbXBvcnQgaW8KK2ltcG9ydCBsaW5lY2FjaGUKK2ltcG9ydCBvcworaW1wb3J0IG9zLnBhdGgKK2Zyb20gcGxhdGZvcm0gaW1wb3J0IHB5dGhvbl92ZXJzaW9uLCBzeXN0ZW0KK2ltcG9ydCByZQoraW1wb3J0IHNvY2tldAoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB0aHJlYWRpbmcKK2ltcG9ydCB0aW1lCitpbXBvcnQgdG9rZW5pemUKK2ltcG9ydCB3YXJuaW5ncworCitmcm9tIGlkbGVsaWIgaW1wb3J0IHRlc3RpbmcgICMgYm9vbCB2YWx1ZQorZnJvbSBpZGxlbGliLmNvbG9yaXplciBpbXBvcnQgQ29sb3JEZWxlZ2F0b3IKK2Zyb20gaWRsZWxpYi5jb25maWcgaW1wb3J0IGlkbGVDb25mCitmcm9tIGlkbGVsaWIgaW1wb3J0IGRlYnVnZ2VyCitmcm9tIGlkbGVsaWIgaW1wb3J0IGRlYnVnZ2VyX3IKK2Zyb20gaWRsZWxpYi5lZGl0b3IgaW1wb3J0IEVkaXRvcldpbmRvdywgZml4d29yZGJyZWFrcworZnJvbSBpZGxlbGliLmZpbGVsaXN0IGltcG9ydCBGaWxlTGlzdAorZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3gKK2Zyb20gaWRsZWxpYi5vdXR3aW4gaW1wb3J0IE91dHB1dFdpbmRvdwogZnJvbSBpZGxlbGliIGltcG9ydCBycGMKLWZyb20gaWRsZWxpYiBpbXBvcnQgRGVidWdnZXIKLWZyb20gaWRsZWxpYiBpbXBvcnQgUmVtb3RlRGVidWdnZXIKLWZyb20gaWRsZWxpYiBpbXBvcnQgbWFjb3N4U3VwcG9ydAorZnJvbSBpZGxlbGliLnJ1biBpbXBvcnQgaWRsZV9mb3JtYXR3YXJuaW5nLCBQc2V1ZG9JbnB1dEZpbGUsIFBzZXVkb091dHB1dEZpbGUKK2Zyb20gaWRsZWxpYi51bmRvIGltcG9ydCBVbmRvRGVsZWdhdG9yCiAKIEhPU1QgPSAnMTI3LjAuMC4xJyAjIHB5dGhvbiBleGVjdXRpb24gc2VydmVyIG9uIGxvY2FsaG9zdCBsb29wYmFjawogUE9SVCA9IDAgICMgc29tZWRheSBwYXNzIGluIGhvc3QsIHBvcnQgZm9yIHJlbW90ZSBkZWJ1ZyBjYXBhYmlsaXR5CkBAIC00MywyMCArNTIsNiBAQAogIyB0ZW1wb3JhcmlseSByZWRpcmVjdCB0aGUgc3RyZWFtIHRvIHRoZSBzaGVsbCB3aW5kb3cgdG8gZGlzcGxheSB3YXJuaW5ncyB3aGVuCiAjIGNoZWNraW5nIHVzZXIncyBjb2RlLgogd2FybmluZ19zdHJlYW0gPSBzeXMuX19zdGRlcnJfXyAgIyBOb25lLCBhdCBsZWFzdCBvbiBXaW5kb3dzLCBpZiBubyBjb25zb2xlLgotaW1wb3J0IHdhcm5pbmdzCi0KLWRlZiBpZGxlX2Zvcm1hdHdhcm5pbmcobWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sIGxpbmU9Tm9uZSk6Ci0gICAgIiIiRm9ybWF0IHdhcm5pbmdzIHRoZSBJRExFIHdheS4iIiIKLQotICAgIHMgPSAiXG5XYXJuaW5nIChmcm9tIHdhcm5pbmdzIG1vZHVsZSk6XG4iCi0gICAgcyArPSAnICBGaWxlIFwiJXNcIiwgbGluZSAlc1xuJyAlIChmaWxlbmFtZSwgbGluZW5vKQotICAgIGlmIGxpbmUgaXMgTm9uZToKLSAgICAgICAgbGluZSA9IGxpbmVjYWNoZS5nZXRsaW5lKGZpbGVuYW1lLCBsaW5lbm8pCi0gICAgbGluZSA9IGxpbmUuc3RyaXAoKQotICAgIGlmIGxpbmU6Ci0gICAgICAgIHMgKz0gIiAgICAlc1xuIiAlIGxpbmUKLSAgICBzICs9ICIlczogJXNcbiIgJSAoY2F0ZWdvcnkuX19uYW1lX18sIG1lc3NhZ2UpCi0gICAgcmV0dXJuIHMKIAogZGVmIGlkbGVfc2hvd3dhcm5pbmcoCiAgICAgICAgIG1lc3NhZ2UsIGNhdGVnb3J5LCBmaWxlbmFtZSwgbGluZW5vLCBmaWxlPU5vbmUsIGxpbmU9Tm9uZSk6CkBAIC00MTAsNyArNDA1LDcgQEAKICAgICAgICAgIyBydW4gZnJvbSB0aGUgSURMRSBzb3VyY2UgZGlyZWN0b3J5LgogICAgICAgICBkZWxfZXhpdGYgPSBpZGxlQ29uZi5HZXRPcHRpb24oJ21haW4nLCAnR2VuZXJhbCcsICdkZWxldGUtZXhpdGZ1bmMnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwgdHlwZT0nYm9vbCcpCi0gICAgICAgIGlmIF9fbmFtZV9fID09ICdpZGxlbGliLlB5U2hlbGwnOgorICAgICAgICBpZiBfX25hbWVfXyA9PSAnaWRsZWxpYi5weXNoZWxsJzoKICAgICAgICAgICAgIGNvbW1hbmQgPSAiX19pbXBvcnRfXygnaWRsZWxpYi5ydW4nKS5ydW4ubWFpbiglcikiICUgKGRlbF9leGl0ZiwpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBjb21tYW5kID0gIl9faW1wb3J0X18oJ3J1bicpLm1haW4oJXIpIiAlIChkZWxfZXhpdGYsKQpAQCAtNDY4LDcgKzQ2Myw3IEBACiAgICAgICAgIGlmIGRlYnVnOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICMgT25seSBjbG9zZSBzdWJwcm9jZXNzIGRlYnVnZ2VyLCBkb24ndCB1bnJlZ2lzdGVyIGd1aV9hZGFwIQotICAgICAgICAgICAgICAgIFJlbW90ZURlYnVnZ2VyLmNsb3NlX3N1YnByb2Nlc3NfZGVidWdnZXIoc2VsZi5ycGNjbHQpCisgICAgICAgICAgICAgICAgZGVidWdnZXJfci5jbG9zZV9zdWJwcm9jZXNzX2RlYnVnZ2VyKHNlbGYucnBjY2x0KQogICAgICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgIyBLaWxsIHN1YnByb2Nlc3MsIHNwYXduIGEgbmV3IG9uZSwgYWNjZXB0IGNvbm5lY3Rpb24uCkBAIC00OTcsNyArNDkyLDcgQEAKICAgICAgICAgIyByZXN0YXJ0IHN1YnByb2Nlc3MgZGVidWdnZXIKICAgICAgICAgaWYgZGVidWc6CiAgICAgICAgICAgICAjIFJlc3RhcnRlZCBkZWJ1Z2dlciBjb25uZWN0cyB0byBjdXJyZW50IGluc3RhbmNlIG9mIGRlYnVnIEdVSQotICAgICAgICAgICAgUmVtb3RlRGVidWdnZXIucmVzdGFydF9zdWJwcm9jZXNzX2RlYnVnZ2VyKHNlbGYucnBjY2x0KQorICAgICAgICAgICAgZGVidWdnZXJfci5yZXN0YXJ0X3N1YnByb2Nlc3NfZGVidWdnZXIoc2VsZi5ycGNjbHQpCiAgICAgICAgICAgICAjIHJlbG9hZCByZW1vdGUgZGVidWdnZXIgYnJlYWtwb2ludHMgZm9yIGFsbCBQeVNoZWxsRWRpdFdpbmRvd3MKICAgICAgICAgICAgIGRlYnVnLmxvYWRfYnJlYWtwb2ludHMoKQogICAgICAgICBzZWxmLmNvbXBpbGUuY29tcGlsZXIuZmxhZ3MgPSBzZWxmLm9yaWdpbmFsX2NvbXBpbGVyX2ZsYWdzCkBAIC01NzgsNyArNTczLDcgQEAKICAgICAgICAgICAgICAgICBpZiBzZWxmLnRrY29uc29sZS5nZXR2YXIoIjw8dG9nZ2xlLWppdC1zdGFjay12aWV3ZXI+PiIpOgogICAgICAgICAgICAgICAgICAgICBzZWxmLnJlbW90ZV9zdGFja192aWV3ZXIoKQogICAgICAgICAgICAgZWxpZiBob3cgPT0gIkVSUk9SIjoKLSAgICAgICAgICAgICAgICBlcnJtc2cgPSAiUHlTaGVsbC5Nb2RpZmllZEludGVycHJldGVyOiBTdWJwcm9jZXNzIEVSUk9SOlxuIgorICAgICAgICAgICAgICAgIGVycm1zZyA9ICJweXNoZWxsLk1vZGlmaWVkSW50ZXJwcmV0ZXI6IFN1YnByb2Nlc3MgRVJST1I6XG4iCiAgICAgICAgICAgICAgICAgcHJpbnQoZXJybXNnLCB3aGF0LCBmaWxlPXN5cy5fX3N0ZGVycl9fKQogICAgICAgICAgICAgICAgIHByaW50KGVycm1zZywgd2hhdCwgZmlsZT1jb25zb2xlKQogICAgICAgICAgICAgIyB3ZSByZWNlaXZlZCBhIHJlc3BvbnNlIHRvIHRoZSBjdXJyZW50bHkgYWN0aXZlIHNlcSBudW1iZXI6CkBAIC02MTMsMTMgKzYwOCwxMyBAQAogICAgICAgICByZXR1cm4KIAogICAgIGRlZiByZW1vdGVfc3RhY2tfdmlld2VyKHNlbGYpOgotICAgICAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IFJlbW90ZU9iamVjdEJyb3dzZXIKKyAgICAgICAgZnJvbSBpZGxlbGliIGltcG9ydCBkZWJ1Z29ial9yCiAgICAgICAgIG9pZCA9IHNlbGYucnBjY2x0LnJlbW90ZXF1ZXVlKCJleGVjIiwgInN0YWNrdmlld2VyIiwgKCJmbGlzdCIsKSwge30pCiAgICAgICAgIGlmIG9pZCBpcyBOb25lOgogICAgICAgICAgICAgc2VsZi50a2NvbnNvbGUucm9vdC5iZWxsKCkKICAgICAgICAgICAgIHJldHVybgotICAgICAgICBpdGVtID0gUmVtb3RlT2JqZWN0QnJvd3Nlci5TdHViT2JqZWN0VHJlZUl0ZW0oc2VsZi5ycGNjbHQsIG9pZCkKLSAgICAgICAgZnJvbSBpZGxlbGliLlRyZWVXaWRnZXQgaW1wb3J0IFNjcm9sbGVkQ2FudmFzLCBUcmVlTm9kZQorICAgICAgICBpdGVtID0gZGVidWdvYmpfci5TdHViT2JqZWN0VHJlZUl0ZW0oc2VsZi5ycGNjbHQsIG9pZCkKKyAgICAgICAgZnJvbSBpZGxlbGliLnRyZWUgaW1wb3J0IFNjcm9sbGVkQ2FudmFzLCBUcmVlTm9kZQogICAgICAgICB0b3AgPSBUb3BsZXZlbChzZWxmLnRrY29uc29sZS5yb290KQogICAgICAgICB0aGVtZSA9IGlkbGVDb25mLkN1cnJlbnRUaGVtZSgpCiAgICAgICAgIGJhY2tncm91bmQgPSBpZGxlQ29uZi5HZXRIaWdobGlnaHQodGhlbWUsICdub3JtYWwnKVsnYmFja2dyb3VuZCddCkBAIC02NjIsOSArNjU3LDkgQEAKICAgICAgICAgIyBhdCB0aGUgbW9tZW50LCBJbnRlcmFjdGl2ZUludGVycHJldGVyIGV4cGVjdHMgc3RyCiAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHNvdXJjZSwgc3RyKQogICAgICAgICAjaWYgaXNpbnN0YW5jZShzb3VyY2UsIHN0cik6Ci0gICAgICAgICMgICAgZnJvbSBpZGxlbGliIGltcG9ydCBJT0JpbmRpbmcKKyAgICAgICAgIyAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IGlvbWVudQogICAgICAgICAjICAgIHRyeToKLSAgICAgICAgIyAgICAgICAgc291cmNlID0gc291cmNlLmVuY29kZShJT0JpbmRpbmcuZW5jb2RpbmcpCisgICAgICAgICMgICAgICAgIHNvdXJjZSA9IHNvdXJjZS5lbmNvZGUoaW9tZW51LmVuY29kaW5nKQogICAgICAgICAjICAgIGV4Y2VwdCBVbmljb2RlRXJyb3I6CiAgICAgICAgICMgICAgICAgIHNlbGYudGtjb25zb2xlLnJlc2V0b3V0cHV0KCkKICAgICAgICAgIyAgICAgICAgc2VsZi53cml0ZSgiVW5zdXBwb3J0ZWQgY2hhcmFjdGVycyBpbiBpbnB1dFxuIikKQEAgLTg1MCw3ICs4NDUsNyBAQAogCiAKICAgICAjIE5ldyBjbGFzc2VzCi0gICAgZnJvbSBpZGxlbGliLklkbGVIaXN0b3J5IGltcG9ydCBIaXN0b3J5CisgICAgZnJvbSBpZGxlbGliLmhpc3RvcnkgaW1wb3J0IEhpc3RvcnkKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmbGlzdD1Ob25lKToKICAgICAgICAgaWYgdXNlX3N1YnByb2Nlc3M6CkBAIC04ODgsMTEgKzg4MywxMSBAQAogICAgICAgICBzZWxmLnNhdmVfc3Rkb3V0ID0gc3lzLnN0ZG91dAogICAgICAgICBzZWxmLnNhdmVfc3RkZXJyID0gc3lzLnN0ZGVycgogICAgICAgICBzZWxmLnNhdmVfc3RkaW4gPSBzeXMuc3RkaW4KLSAgICAgICAgZnJvbSBpZGxlbGliIGltcG9ydCBJT0JpbmRpbmcKLSAgICAgICAgc2VsZi5zdGRpbiA9IFBzZXVkb0lucHV0RmlsZShzZWxmLCAic3RkaW4iLCBJT0JpbmRpbmcuZW5jb2RpbmcpCi0gICAgICAgIHNlbGYuc3Rkb3V0ID0gUHNldWRvT3V0cHV0RmlsZShzZWxmLCAic3Rkb3V0IiwgSU9CaW5kaW5nLmVuY29kaW5nKQotICAgICAgICBzZWxmLnN0ZGVyciA9IFBzZXVkb091dHB1dEZpbGUoc2VsZiwgInN0ZGVyciIsIElPQmluZGluZy5lbmNvZGluZykKLSAgICAgICAgc2VsZi5jb25zb2xlID0gUHNldWRvT3V0cHV0RmlsZShzZWxmLCAiY29uc29sZSIsIElPQmluZGluZy5lbmNvZGluZykKKyAgICAgICAgZnJvbSBpZGxlbGliIGltcG9ydCBpb21lbnUKKyAgICAgICAgc2VsZi5zdGRpbiA9IFBzZXVkb0lucHV0RmlsZShzZWxmLCAic3RkaW4iLCBpb21lbnUuZW5jb2RpbmcpCisgICAgICAgIHNlbGYuc3Rkb3V0ID0gUHNldWRvT3V0cHV0RmlsZShzZWxmLCAic3Rkb3V0IiwgaW9tZW51LmVuY29kaW5nKQorICAgICAgICBzZWxmLnN0ZGVyciA9IFBzZXVkb091dHB1dEZpbGUoc2VsZiwgInN0ZGVyciIsIGlvbWVudS5lbmNvZGluZykKKyAgICAgICAgc2VsZi5jb25zb2xlID0gUHNldWRvT3V0cHV0RmlsZShzZWxmLCAiY29uc29sZSIsIGlvbWVudS5lbmNvZGluZykKICAgICAgICAgaWYgbm90IHVzZV9zdWJwcm9jZXNzOgogICAgICAgICAgICAgc3lzLnN0ZG91dCA9IHNlbGYuc3Rkb3V0CiAgICAgICAgICAgICBzeXMuc3RkZXJyID0gc2VsZi5zdGRlcnIKQEAgLTkwMCw3ICs4OTUsNyBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICAjIHBhZ2UgaGVscCgpIHRleHQgdG8gc2hlbGwuCiAgICAgICAgICAgICBpbXBvcnQgcHlkb2MgIyBpbXBvcnQgbXVzdCBiZSBkb25lIGhlcmUgdG8gY2FwdHVyZSBpL28gcmViaW5kaW5nLgotICAgICAgICAgICAgIyBYWFggS0JLIDI3RGVjMDcgdXNlIGEgdGV4dFZpZXcgc29tZWRheSwgYnV0IG11c3Qgd29yayB3L28gc3VicHJvYworICAgICAgICAgICAgIyBYWFggS0JLIDI3RGVjMDcgdXNlIFRleHRWaWV3ZXIgc29tZWRheSwgYnV0IG11c3Qgd29yayB3L28gc3VicHJvYwogICAgICAgICAgICAgcHlkb2MucGFnZXIgPSBweWRvYy5wbGFpbnBhZ2VyCiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIHN5cy5zdGRlcnIgPSBzeXMuX19zdGRlcnJfXwpAQCAtOTU0LDcgKzk0OSw3IEBACiAgICAgICAgICAgICBzZWxmLmludGVycC5zZXRkZWJ1Z2dlcihOb25lKQogICAgICAgICAgICAgZGIuY2xvc2UoKQogICAgICAgICAgICAgaWYgc2VsZi5pbnRlcnAucnBjY2x0OgotICAgICAgICAgICAgICAgIFJlbW90ZURlYnVnZ2VyLmNsb3NlX3JlbW90ZV9kZWJ1Z2dlcihzZWxmLmludGVycC5ycGNjbHQpCisgICAgICAgICAgICAgICAgZGVidWdnZXJfci5jbG9zZV9yZW1vdGVfZGVidWdnZXIoc2VsZi5pbnRlcnAucnBjY2x0KQogICAgICAgICAgICAgc2VsZi5yZXNldG91dHB1dCgpCiAgICAgICAgICAgICBzZWxmLmNvbnNvbGUud3JpdGUoIltERUJVRyBPRkZdXG4iKQogICAgICAgICAgICAgc3lzLnBzMSA9ICI+Pj4gIgpAQCAtOTYzLDEwICs5NTgsMTAgQEAKIAogICAgIGRlZiBvcGVuX2RlYnVnZ2VyKHNlbGYpOgogICAgICAgICBpZiBzZWxmLmludGVycC5ycGNjbHQ6Ci0gICAgICAgICAgICBkYmdfZ3VpID0gUmVtb3RlRGVidWdnZXIuc3RhcnRfcmVtb3RlX2RlYnVnZ2VyKHNlbGYuaW50ZXJwLnJwY2NsdCwKKyAgICAgICAgICAgIGRiZ19ndWkgPSBkZWJ1Z2dlcl9yLnN0YXJ0X3JlbW90ZV9kZWJ1Z2dlcihzZWxmLmludGVycC5ycGNjbHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBkYmdfZ3VpID0gRGVidWdnZXIuRGVidWdnZXIoc2VsZikKKyAgICAgICAgICAgIGRiZ19ndWkgPSBkZWJ1Z2dlci5EZWJ1Z2dlcihzZWxmKQogICAgICAgICBzZWxmLmludGVycC5zZXRkZWJ1Z2dlcihkYmdfZ3VpKQogICAgICAgICBkYmdfZ3VpLmxvYWRfYnJlYWtwb2ludHMoKQogICAgICAgICBzeXMucHMxID0gIltERUJVRyBPTl1cbj4+PiAiCkBAIC0xMjQxLDcgKzEyMzYsNyBAQAogICAgICAgICAgICAgICAgICIoc3lzLmxhc3RfdHJhY2ViYWNrIGlzIG5vdCBkZWZpbmVkKSIsCiAgICAgICAgICAgICAgICAgcGFyZW50PXNlbGYudGV4dCkKICAgICAgICAgICAgIHJldHVybgotICAgICAgICBmcm9tIGlkbGVsaWIuU3RhY2tWaWV3ZXIgaW1wb3J0IFN0YWNrQnJvd3NlcgorICAgICAgICBmcm9tIGlkbGVsaWIuc3RhY2t2aWV3ZXIgaW1wb3J0IFN0YWNrQnJvd3NlcgogICAgICAgICBTdGFja0Jyb3dzZXIoc2VsZi5yb290LCBzZWxmLmZsaXN0KQogCiAgICAgZGVmIHZpZXdfcmVzdGFydF9tYXJrKHNlbGYsIGV2ZW50PU5vbmUpOgpAQCAtMTMwOSw5MiArMTMwNCw2IEBACiAgICAgICAgICAgICByZXR1cm4gJ2Rpc2FibGVkJwogICAgICAgICByZXR1cm4gc3VwZXIoKS5ybWVudV9jaGVja19wYXN0ZSgpCiAKLWNsYXNzIFBzZXVkb0ZpbGUoaW8uVGV4dElPQmFzZSk6Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgc2hlbGwsIHRhZ3MsIGVuY29kaW5nPU5vbmUpOgotICAgICAgICBzZWxmLnNoZWxsID0gc2hlbGwKLSAgICAgICAgc2VsZi50YWdzID0gdGFncwotICAgICAgICBzZWxmLl9lbmNvZGluZyA9IGVuY29kaW5nCi0KLSAgICBAcHJvcGVydHkKLSAgICBkZWYgZW5jb2Rpbmcoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9lbmNvZGluZwotCi0gICAgQHByb3BlcnR5Ci0gICAgZGVmIG5hbWUoc2VsZik6Ci0gICAgICAgIHJldHVybiAnPCVzPicgJSBzZWxmLnRhZ3MKLQotICAgIGRlZiBpc2F0dHkoc2VsZik6Ci0gICAgICAgIHJldHVybiBUcnVlCi0KLQotY2xhc3MgUHNldWRvT3V0cHV0RmlsZShQc2V1ZG9GaWxlKToKLQotICAgIGRlZiB3cml0YWJsZShzZWxmKToKLSAgICAgICAgcmV0dXJuIFRydWUKLQotICAgIGRlZiB3cml0ZShzZWxmLCBzKToKLSAgICAgICAgaWYgc2VsZi5jbG9zZWQ6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ3cml0ZSB0byBjbG9zZWQgZmlsZSIpCi0gICAgICAgIGlmIHR5cGUocykgaXMgbm90IHN0cjoKLSAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHMsIHN0cik6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdtdXN0IGJlIHN0ciwgbm90ICcgKyB0eXBlKHMpLl9fbmFtZV9fKQotICAgICAgICAgICAgIyBTZWUgaXNzdWUgIzE5NDgxCi0gICAgICAgICAgICBzID0gc3RyLl9fc3RyX18ocykKLSAgICAgICAgcmV0dXJuIHNlbGYuc2hlbGwud3JpdGUocywgc2VsZi50YWdzKQotCi0KLWNsYXNzIFBzZXVkb0lucHV0RmlsZShQc2V1ZG9GaWxlKToKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzaGVsbCwgdGFncywgZW5jb2Rpbmc9Tm9uZSk6Ci0gICAgICAgIFBzZXVkb0ZpbGUuX19pbml0X18oc2VsZiwgc2hlbGwsIHRhZ3MsIGVuY29kaW5nKQotICAgICAgICBzZWxmLl9saW5lX2J1ZmZlciA9ICcnCi0KLSAgICBkZWYgcmVhZGFibGUoc2VsZik6Ci0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICBkZWYgcmVhZChzZWxmLCBzaXplPS0xKToKLSAgICAgICAgaWYgc2VsZi5jbG9zZWQ6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJyZWFkIGZyb20gY2xvc2VkIGZpbGUiKQotICAgICAgICBpZiBzaXplIGlzIE5vbmU6Ci0gICAgICAgICAgICBzaXplID0gLTEKLSAgICAgICAgZWxpZiBub3QgaXNpbnN0YW5jZShzaXplLCBpbnQpOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdtdXN0IGJlIGludCwgbm90ICcgKyB0eXBlKHNpemUpLl9fbmFtZV9fKQotICAgICAgICByZXN1bHQgPSBzZWxmLl9saW5lX2J1ZmZlcgotICAgICAgICBzZWxmLl9saW5lX2J1ZmZlciA9ICcnCi0gICAgICAgIGlmIHNpemUgPCAwOgotICAgICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICAgICBsaW5lID0gc2VsZi5zaGVsbC5yZWFkbGluZSgpCi0gICAgICAgICAgICAgICAgaWYgbm90IGxpbmU6IGJyZWFrCi0gICAgICAgICAgICAgICAgcmVzdWx0ICs9IGxpbmUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHdoaWxlIGxlbihyZXN1bHQpIDwgc2l6ZToKLSAgICAgICAgICAgICAgICBsaW5lID0gc2VsZi5zaGVsbC5yZWFkbGluZSgpCi0gICAgICAgICAgICAgICAgaWYgbm90IGxpbmU6IGJyZWFrCi0gICAgICAgICAgICAgICAgcmVzdWx0ICs9IGxpbmUKLSAgICAgICAgICAgIHNlbGYuX2xpbmVfYnVmZmVyID0gcmVzdWx0W3NpemU6XQotICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0WzpzaXplXQotICAgICAgICByZXR1cm4gcmVzdWx0Ci0KLSAgICBkZWYgcmVhZGxpbmUoc2VsZiwgc2l6ZT0tMSk6Ci0gICAgICAgIGlmIHNlbGYuY2xvc2VkOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigicmVhZCBmcm9tIGNsb3NlZCBmaWxlIikKLSAgICAgICAgaWYgc2l6ZSBpcyBOb25lOgotICAgICAgICAgICAgc2l6ZSA9IC0xCi0gICAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2Uoc2l6ZSwgaW50KToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignbXVzdCBiZSBpbnQsIG5vdCAnICsgdHlwZShzaXplKS5fX25hbWVfXykKLSAgICAgICAgbGluZSA9IHNlbGYuX2xpbmVfYnVmZmVyIG9yIHNlbGYuc2hlbGwucmVhZGxpbmUoKQotICAgICAgICBpZiBzaXplIDwgMDoKLSAgICAgICAgICAgIHNpemUgPSBsZW4obGluZSkKLSAgICAgICAgZW9sID0gbGluZS5maW5kKCdcbicsIDAsIHNpemUpCi0gICAgICAgIGlmIGVvbCA+PSAwOgotICAgICAgICAgICAgc2l6ZSA9IGVvbCArIDEKLSAgICAgICAgc2VsZi5fbGluZV9idWZmZXIgPSBsaW5lW3NpemU6XQotICAgICAgICByZXR1cm4gbGluZVs6c2l6ZV0KLQotICAgIGRlZiBjbG9zZShzZWxmKToKLSAgICAgICAgc2VsZi5zaGVsbC5jbG9zZSgpCi0KIAogZGVmIGZpeF94MTFfcGFzdGUocm9vdCk6CiAgICAgIk1ha2UgcGFzdGUgcmVwbGFjZSBzZWxlY3Rpb24gb24geDExLiAgU2VlIGlzc3VlICM1MTI0LiIKQEAgLTE1NDAsNyArMTQ0OSwxMCBAQAogICAgIGVuYWJsZV9lZGl0ID0gZW5hYmxlX2VkaXQgb3IgZWRpdF9zdGFydAogICAgIGVuYWJsZV9zaGVsbCA9IGVuYWJsZV9zaGVsbCBvciBub3QgZW5hYmxlX2VkaXQKIAotICAgICMgc3RhcnQgZWRpdG9yIGFuZC9vciBzaGVsbCB3aW5kb3dzOgorICAgICMgU2V0dXAgcm9vdC4gIERvbid0IGJyZWFrIHVzZXIgY29kZSBydW4gaW4gSURMRSBwcm9jZXNzLgorICAgICMgRG9uJ3QgY2hhbmdlIGVudmlyb25tZW50IHdoZW4gdGVzdGluZy4KKyAgICBpZiB1c2Vfc3VicHJvY2VzcyBhbmQgbm90IHRlc3Rpbmc6CisgICAgICAgIE5vRGVmYXVsdFJvb3QoKQogICAgIHJvb3QgPSBUayhjbGFzc05hbWU9IklkbGUiKQogICAgIHJvb3Qud2l0aGRyYXcoKQogCkBAIC0xNTQ5LDI1ICsxNDYxLDE5IEBACiAgICAgaWYgc3lzdGVtKCkgPT0gJ1dpbmRvd3MnOgogICAgICAgICBpY29uZmlsZSA9IG9zLnBhdGguam9pbihpY29uZGlyLCAnaWRsZS5pY28nKQogICAgICAgICByb290LndtX2ljb25iaXRtYXAoZGVmYXVsdD1pY29uZmlsZSkKLSAgICBlbGlmIFRrVmVyc2lvbiA+PSA4LjU6CisgICAgZWxzZToKICAgICAgICAgZXh0ID0gJy5wbmcnIGlmIFRrVmVyc2lvbiA+PSA4LjYgZWxzZSAnLmdpZicKICAgICAgICAgaWNvbmZpbGVzID0gW29zLnBhdGguam9pbihpY29uZGlyLCAnaWRsZV8lZCVzJyAlIChzaXplLCBleHQpKQogICAgICAgICAgICAgICAgICAgICAgZm9yIHNpemUgaW4gKDE2LCAzMiwgNDgpXQotICAgICAgICBpY29ucyA9IFtQaG90b0ltYWdlKGZpbGU9aWNvbmZpbGUpIGZvciBpY29uZmlsZSBpbiBpY29uZmlsZXNdCisgICAgICAgIGljb25zID0gW1Bob3RvSW1hZ2UobWFzdGVyPXJvb3QsIGZpbGU9aWNvbmZpbGUpCisgICAgICAgICAgICAgICAgIGZvciBpY29uZmlsZSBpbiBpY29uZmlsZXNdCiAgICAgICAgIHJvb3Qud21faWNvbnBob3RvKFRydWUsICppY29ucykKIAorICAgICMgc3RhcnQgZWRpdG9yIGFuZC9vciBzaGVsbCB3aW5kb3dzOgogICAgIGZpeHdvcmRicmVha3Mocm9vdCkKICAgICBmaXhfeDExX3Bhc3RlKHJvb3QpCiAgICAgZmxpc3QgPSBQeVNoZWxsRmlsZUxpc3Qocm9vdCkKLSAgICBtYWNvc3hTdXBwb3J0LnNldHVwQXBwKHJvb3QsIGZsaXN0KQotCi0gICAgaWYgbWFjb3N4U3VwcG9ydC5pc0FxdWFUaygpOgotICAgICAgICAjIFRoZXJlIGFyZSBzb21lIHNjcmV3ZWQgdXAgPDI+IGNsYXNzIGJpbmRpbmdzIGZvciB0ZXh0Ci0gICAgICAgICMgd2lkZ2V0cyBkZWZpbmVkIGluIFRrIHdoaWNoIHdlIG5lZWQgdG8gZG8gYXdheSB3aXRoLgotICAgICAgICAjIFNlZSBpc3N1ZSAjMjQ4MDEuCi0gICAgICAgIHJvb3QudW5iaW5kX2NsYXNzKCdUZXh0JywgJzxCMj4nKQotICAgICAgICByb290LnVuYmluZF9jbGFzcygnVGV4dCcsICc8QjItTW90aW9uPicpCi0gICAgICAgIHJvb3QudW5iaW5kX2NsYXNzKCdUZXh0JywgJzw8UGFzdGVTZWxlY3Rpb24+PicpCisgICAgbWFjb3N4LnNldHVwQXBwKHJvb3QsIGZsaXN0KQogCiAgICAgaWYgZW5hYmxlX2VkaXQ6CiAgICAgICAgIGlmIG5vdCAoY21kIG9yIHNjcmlwdCk6CkBAIC0xNTgyLDcgKzE0ODgsNyBAQAogICAgICAgICBzaGVsbCA9IGZsaXN0Lm9wZW5fc2hlbGwoKQogICAgICAgICBpZiBub3Qgc2hlbGw6CiAgICAgICAgICAgICByZXR1cm4gIyBjb3VsZG4ndCBvcGVuIHNoZWxsCi0gICAgICAgIGlmIG1hY29zeFN1cHBvcnQuaXNBcXVhVGsoKSBhbmQgZmxpc3QuZGljdDoKKyAgICAgICAgaWYgbWFjb3N4LmlzQXF1YVRrKCkgYW5kIGZsaXN0LmRpY3Q6CiAgICAgICAgICAgICAjIE9uIE9TWDogd2hlbiB0aGUgdXNlciBoYXMgZG91YmxlLWNsaWNrZWQgb24gYSBmaWxlIHRoYXQgY2F1c2VzCiAgICAgICAgICAgICAjIElETEUgdG8gYmUgbGF1bmNoZWQgdGhlIHNoZWxsIHdpbmRvdyB3aWxsIG9wZW4ganVzdCBpbiBmcm9udCBvZgogICAgICAgICAgICAgIyB0aGUgZmlsZSBzaGUgd2FudHMgdG8gc2VlLiBMb3dlciB0aGUgaW50ZXJwcmV0ZXIgd2luZG93IHdoZW4KQEAgLTE2MTYsNyArMTUyMiw3IEBACiAgICAgICAgICMgY2hlY2sgZm9yIHByb2JsZW1hdGljIE9TIFggVGsgdmVyc2lvbnMgYW5kIHByaW50IGEgd2FybmluZwogICAgICAgICAjIG1lc3NhZ2UgaW4gdGhlIElETEUgc2hlbGwgd2luZG93OyB0aGlzIGlzIGxlc3MgaW50cnVzaXZlCiAgICAgICAgICMgdGhhbiBhbHdheXMgb3BlbmluZyBhIHNlcGFyYXRlIHdpbmRvdy4KLSAgICAgICAgdGt2ZXJzaW9ud2FybmluZyA9IG1hY29zeFN1cHBvcnQudGtWZXJzaW9uV2FybmluZyhyb290KQorICAgICAgICB0a3ZlcnNpb253YXJuaW5nID0gbWFjb3N4LnRrVmVyc2lvbldhcm5pbmcocm9vdCkKICAgICAgICAgaWYgdGt2ZXJzaW9ud2FybmluZzoKICAgICAgICAgICAgIHNoZWxsLmludGVycC5ydW5jb21tYW5kKCJwcmludCgnJXMnKSIgJSB0a3ZlcnNpb253YXJuaW5nKQogCkBAIC0xNjI2LDcgKzE1MzIsNyBAQAogICAgIGNhcHR1cmVfd2FybmluZ3MoRmFsc2UpCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgc3lzLm1vZHVsZXNbJ1B5U2hlbGwnXSA9IHN5cy5tb2R1bGVzWydfX21haW5fXyddCisgICAgc3lzLm1vZHVsZXNbJ3B5c2hlbGwnXSA9IHN5cy5tb2R1bGVzWydfX21haW5fXyddCiAgICAgbWFpbigpCiAKIGNhcHR1cmVfd2FybmluZ3MoRmFsc2UpICAjIE1ha2Ugc3VyZSB0dXJuZWQgb2ZmOyBzZWUgaXNzdWUgMTgwODEKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL3F1ZXJ5LnB5IGIvTGliL2lkbGVsaWIvcXVlcnkucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2IxZjFlMgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9pZGxlbGliL3F1ZXJ5LnB5CkBAIC0wLDAgKzEsMzA4IEBACisiIiIKK0RpYWxvZ3MgdGhhdCBxdWVyeSB1c2VycyBhbmQgdmVyaWZ5IHRoZSBhbnN3ZXIgYmVmb3JlIGFjY2VwdGluZy4KK1VzZSB0dGsgd2lkZ2V0cywgbGltaXRpbmcgdXNlIHRvIHRjbC90ayA4LjUrLCBhcyBpbiBJRExFIDMuNisuCisKK1F1ZXJ5IGlzIHRoZSBnZW5lcmljIGJhc2UgY2xhc3MgZm9yIGEgcG9wdXAgZGlhbG9nLgorVGhlIHVzZXIgbXVzdCBlaXRoZXIgZW50ZXIgYSB2YWxpZCBhbnN3ZXIgb3IgY2xvc2UgdGhlIGRpYWxvZy4KK0VudHJpZXMgYXJlIHZhbGlkYXRlZCB3aGVuIDxSZXR1cm4+IGlzIGVudGVyZWQgb3IgW09rXSBpcyBjbGlja2VkLgorRW50cmllcyBhcmUgaWdub3JlZCB3aGVuIFtDYW5jZWxdIG9yIFtYXSBhcmUgY2xpY2tlZC4KK1RoZSAncmV0dXJuIHZhbHVlJyBpcyAucmVzdWx0IHNldCB0byBlaXRoZXIgYSB2YWxpZCBhbnN3ZXIgb3IgTm9uZS4KKworU3ViY2xhc3MgU2VjdGlvbk5hbWUgZ2V0cyBhIG5hbWUgZm9yIGEgbmV3IGNvbmZpZyBmaWxlIHNlY3Rpb24uCitDb25maWdkaWFsb2cgdXNlcyBpdCBmb3IgbmV3IGhpZ2hsaWdodCB0aGVtZSBhbmQga2V5YmluZGluZyBzZXQgbmFtZXMuCitTdWJjbGFzcyBNb2R1bGVOYW1lIGdldHMgYSBuYW1lIGZvciBGaWxlID0+IE9wZW4gTW9kdWxlLgorU3ViY2xhc3MgSGVscFNvdXJjZSBnZXRzIG1lbnUgaXRlbSBhbmQgcGF0aCBmb3IgYWRkaXRpb25zIHRvIEhlbHAgbWVudS4KKyIiIgorIyBRdWVyeSBhbmQgU2VjdGlvbiBuYW1lIHJlc3VsdCBmcm9tIHNwbGl0dGluZyBHZXRDZmdTZWN0aW9uTmFtZURpYWxvZworIyBvZiBjb25maWdTZWN0aW9uTmFtZURpYWxvZy5weSAodGVtcG9yYXJpbHkgY29uZmlnX3NlYy5weSkgaW50bworIyBnZW5lcmljIGFuZCBzcGVjaWZpYyBwYXJ0cy4gIDMuNiBvbmx5LCBKdWx5IDIwMTYuCisjIE1vZHVsZU5hbWUuZW50cnlfb2sgY2FtZSBmcm9tIGVkaXRvci5FZGl0b3JXaW5kb3cubG9hZF9tb2R1bGUuCisjIEhlbHBTb3VyY2Ugd2FzIGV4dHJhY3RlZCBmcm9tIGNvbmZpZ0hlbHBTb3VyY2VFZGl0LnB5ICh0ZW1wb3JhcmlseQorIyBjb25maWdfaGVscC5weSksIHdpdGggZGFyd2luIGNvZGUgbW92ZWQgZnJvbSBvayB0byBwYXRoX29rLgorCitpbXBvcnQgaW1wb3J0bGliCitpbXBvcnQgb3MKK2Zyb20gc3lzIGltcG9ydCBleGVjdXRhYmxlLCBwbGF0Zm9ybSAgIyBQbGF0Zm9ybSBpcyBzZXQgZm9yIG9uZSB0ZXN0LgorCitmcm9tIHRraW50ZXIgaW1wb3J0IFRvcGxldmVsLCBTdHJpbmdWYXIsIFcsIEUsIE4sIFMKK2Zyb20gdGtpbnRlci50dGsgaW1wb3J0IEZyYW1lLCBCdXR0b24sIEVudHJ5LCBMYWJlbAorZnJvbSB0a2ludGVyIGltcG9ydCBmaWxlZGlhbG9nCitmcm9tIHRraW50ZXIuZm9udCBpbXBvcnQgRm9udAorCitjbGFzcyBRdWVyeShUb3BsZXZlbCk6CisgICAgIiIiQmFzZSBjbGFzcyBmb3IgZ2V0dGluZyB2ZXJpZmllZCBhbnN3ZXIgZnJvbSBhIHVzZXIuCisKKyAgICBGb3IgdGhpcyBiYXNlIGNsYXNzLCBhY2NlcHQgYW55IG5vbi1ibGFuayBzdHJpbmcuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCwgdGl0bGUsIG1lc3NhZ2UsICosIHRleHQwPScnLCB1c2VkX25hbWVzPXt9LAorICAgICAgICAgICAgICAgICBfaHRlc3Q9RmFsc2UsIF91dGVzdD1GYWxzZSk6CisgICAgICAgICIiIkNyZWF0ZSBwb3B1cCwgZG8gbm90IHJldHVybiB1bnRpbCB0ayB3aWRnZXQgZGVzdHJveWVkLgorCisgICAgICAgIEFkZGl0aW9uYWwgc3ViY2xhc3MgaW5pdCBtdXN0IGJlIGRvbmUgYmVmb3JlIGNhbGxpbmcgdGhpcworICAgICAgICB1bmxlc3MgIF91dGVzdD1UcnVlIGlzIHBhc3NlZCB0byBzdXBwcmVzcyB3YWl0X3dpbmRvdygpLgorCisgICAgICAgIHRpdGxlIC0gc3RyaW5nLCB0aXRsZSBvZiBwb3B1cCBkaWFsb2cKKyAgICAgICAgbWVzc2FnZSAtIHN0cmluZywgaW5mb3JtYXRpb25hbCBtZXNzYWdlIHRvIGRpc3BsYXkKKyAgICAgICAgdGV4dDAgLSBpbml0aWFsIHZhbHVlIGZvciBlbnRyeQorICAgICAgICB1c2VkX25hbWVzIC0gbmFtZXMgYWxyZWFkeSBpbiB1c2UKKyAgICAgICAgX2h0ZXN0IC0gYm9vbCwgY2hhbmdlIGJveCBsb2NhdGlvbiB3aGVuIHJ1bm5pbmcgaHRlc3QKKyAgICAgICAgX3V0ZXN0IC0gYm9vbCwgbGVhdmUgd2luZG93IGhpZGRlbiBhbmQgbm90IG1vZGFsCisgICAgICAgICIiIgorICAgICAgICBUb3BsZXZlbC5fX2luaXRfXyhzZWxmLCBwYXJlbnQpCisgICAgICAgIHNlbGYud2l0aGRyYXcoKSAgIyBIaWRlIHdoaWxlIGNvbmZpZ3VyaW5nLCBlc3BlY2lhbGx5IGdlb21ldHJ5LgorICAgICAgICBzZWxmLnBhcmVudCA9IHBhcmVudAorICAgICAgICBzZWxmLnRpdGxlKHRpdGxlKQorICAgICAgICBzZWxmLm1lc3NhZ2UgPSBtZXNzYWdlCisgICAgICAgIHNlbGYudGV4dDAgPSB0ZXh0MAorICAgICAgICBzZWxmLnVzZWRfbmFtZXMgPSB1c2VkX25hbWVzCisgICAgICAgIHNlbGYudHJhbnNpZW50KHBhcmVudCkKKyAgICAgICAgc2VsZi5ncmFiX3NldCgpCisgICAgICAgIHdpbmRvd2luZ3N5c3RlbSA9IHNlbGYudGsuY2FsbCgndGsnLCAnd2luZG93aW5nc3lzdGVtJykKKyAgICAgICAgaWYgd2luZG93aW5nc3lzdGVtID09ICdhcXVhJzoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoJzo6dGs6OnVuc3VwcG9ydGVkOjpNYWNXaW5kb3dTdHlsZScsICdzdHlsZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3csICdtb3ZlYWJsZU1vZGFsJywgJycpCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgc2VsZi5iaW5kKCI8Q29tbWFuZC0uPiIsIHNlbGYuY2FuY2VsKQorICAgICAgICBzZWxmLmJpbmQoJzxLZXktRXNjYXBlPicsIHNlbGYuY2FuY2VsKQorICAgICAgICBzZWxmLnByb3RvY29sKCJXTV9ERUxFVEVfV0lORE9XIiwgc2VsZi5jYW5jZWwpCisgICAgICAgIHNlbGYuYmluZCgnPEtleS1SZXR1cm4+Jywgc2VsZi5vaykKKyAgICAgICAgc2VsZi5iaW5kKCI8S1BfRW50ZXI+Iiwgc2VsZi5vaykKKyAgICAgICAgc2VsZi5yZXNpemFibGUoaGVpZ2h0PUZhbHNlLCB3aWR0aD1GYWxzZSkKKyAgICAgICAgc2VsZi5jcmVhdGVfd2lkZ2V0cygpCisgICAgICAgIHNlbGYudXBkYXRlX2lkbGV0YXNrcygpICAjIE5lZWRlZCBoZXJlIGZvciB3aW5mb19yZXF3aWR0aCBiZWxvdy4KKyAgICAgICAgc2VsZi5nZW9tZXRyeSggICMgQ2VudGVyIGRpYWxvZyBvdmVyIHBhcmVudCAob3IgYmVsb3cgaHRlc3QgYm94KS4KKyAgICAgICAgICAgICAgICAiKyVkKyVkIiAlICgKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50LndpbmZvX3Jvb3R4KCkgKworICAgICAgICAgICAgICAgICAgICAocGFyZW50LndpbmZvX3dpZHRoKCkvMiAtIHNlbGYud2luZm9fcmVxd2lkdGgoKS8yKSwKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50LndpbmZvX3Jvb3R5KCkgKworICAgICAgICAgICAgICAgICAgICAoKHBhcmVudC53aW5mb19oZWlnaHQoKS8yIC0gc2VsZi53aW5mb19yZXFoZWlnaHQoKS8yKQorICAgICAgICAgICAgICAgICAgICBpZiBub3QgX2h0ZXN0IGVsc2UgMTUwKQorICAgICAgICAgICAgICAgICkgKQorICAgICAgICBpZiBub3QgX3V0ZXN0OgorICAgICAgICAgICAgc2VsZi5kZWljb25pZnkoKSAgIyBVbmhpZGUgbm93IHRoYXQgZ2VvbWV0cnkgc2V0LgorICAgICAgICAgICAgc2VsZi53YWl0X3dpbmRvdygpCisKKyAgICBkZWYgY3JlYXRlX3dpZGdldHMoc2VsZik6ICAjIENhbGwgZnJvbSBvdmVycmlkZSwgaWYgYW55LgorICAgICAgICAjIEJpbmQgdG8gc2VsZiB3aWRnZXRzIG5lZWRlZCBmb3IgZW50cnlfb2sgb3IgdW5pdHRlc3QuCisgICAgICAgIHNlbGYuZnJhbWUgPSBmcmFtZSA9IEZyYW1lKHNlbGYsIHBhZGRpbmc9MTApCisgICAgICAgIGZyYW1lLmdyaWQoY29sdW1uPTAsIHJvdz0wLCBzdGlja3k9J25ld3MnKQorICAgICAgICBmcmFtZS5ncmlkX2NvbHVtbmNvbmZpZ3VyZSgwLCB3ZWlnaHQ9MSkKKworICAgICAgICBlbnRyeWxhYmVsID0gTGFiZWwoZnJhbWUsIGFuY2hvcj0ndycsIGp1c3RpZnk9J2xlZnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dD1zZWxmLm1lc3NhZ2UpCisgICAgICAgIHNlbGYuZW50cnl2YXIgPSBTdHJpbmdWYXIoc2VsZiwgc2VsZi50ZXh0MCkKKyAgICAgICAgc2VsZi5lbnRyeSA9IEVudHJ5KGZyYW1lLCB3aWR0aD0zMCwgdGV4dHZhcmlhYmxlPXNlbGYuZW50cnl2YXIpCisgICAgICAgIHNlbGYuZW50cnkuZm9jdXNfc2V0KCkKKyAgICAgICAgc2VsZi5lcnJvcl9mb250ID0gRm9udChuYW1lPSdUa0NhcHRpb25Gb250JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGlzdHM9VHJ1ZSwgcm9vdD1zZWxmLnBhcmVudCkKKyAgICAgICAgc2VsZi5lbnRyeV9lcnJvciA9IExhYmVsKGZyYW1lLCB0ZXh0PScgJywgZm9yZWdyb3VuZD0ncmVkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQ9c2VsZi5lcnJvcl9mb250KQorICAgICAgICBzZWxmLmJ1dHRvbl9vayA9IEJ1dHRvbigKKyAgICAgICAgICAgICAgICBmcmFtZSwgdGV4dD0nT0snLCBkZWZhdWx0PSdhY3RpdmUnLCBjb21tYW5kPXNlbGYub2spCisgICAgICAgIHNlbGYuYnV0dG9uX2NhbmNlbCA9IEJ1dHRvbigKKyAgICAgICAgICAgICAgICBmcmFtZSwgdGV4dD0nQ2FuY2VsJywgY29tbWFuZD1zZWxmLmNhbmNlbCkKKworICAgICAgICBlbnRyeWxhYmVsLmdyaWQoY29sdW1uPTAsIHJvdz0wLCBjb2x1bW5zcGFuPTMsIHBhZHg9NSwgc3RpY2t5PVcpCisgICAgICAgIHNlbGYuZW50cnkuZ3JpZChjb2x1bW49MCwgcm93PTEsIGNvbHVtbnNwYW49MywgcGFkeD01LCBzdGlja3k9VytFLAorICAgICAgICAgICAgICAgICAgICAgICAgcGFkeT1bMTAsMF0pCisgICAgICAgIHNlbGYuZW50cnlfZXJyb3IuZ3JpZChjb2x1bW49MCwgcm93PTIsIGNvbHVtbnNwYW49MywgcGFkeD01LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RpY2t5PVcrRSkKKyAgICAgICAgc2VsZi5idXR0b25fb2suZ3JpZChjb2x1bW49MSwgcm93PTk5LCBwYWR4PTUpCisgICAgICAgIHNlbGYuYnV0dG9uX2NhbmNlbC5ncmlkKGNvbHVtbj0yLCByb3c9OTksIHBhZHg9NSkKKworICAgIGRlZiBzaG93ZXJyb3Ioc2VsZiwgbWVzc2FnZSwgd2lkZ2V0PU5vbmUpOgorICAgICAgICAjc2VsZi5iZWxsKGRpc3BsYXlvZj1zZWxmKQorICAgICAgICAod2lkZ2V0IG9yIHNlbGYuZW50cnlfZXJyb3IpWyd0ZXh0J10gPSAnRVJST1I6ICcgKyBtZXNzYWdlCisKKyAgICBkZWYgZW50cnlfb2soc2VsZik6ICAjIEV4YW1wbGU6IHVzdWFsbHkgcmVwbGFjZS4KKyAgICAgICAgIlJldHVybiBub24tYmxhbmsgZW50cnkgb3IgTm9uZS4iCisgICAgICAgIHNlbGYuZW50cnlfZXJyb3JbJ3RleHQnXSA9ICcnCisgICAgICAgIGVudHJ5ID0gc2VsZi5lbnRyeS5nZXQoKS5zdHJpcCgpCisgICAgICAgIGlmIG5vdCBlbnRyeToKKyAgICAgICAgICAgIHNlbGYuc2hvd2Vycm9yKCdibGFuayBsaW5lLicpCisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICByZXR1cm4gZW50cnkKKworICAgIGRlZiBvayhzZWxmLCBldmVudD1Ob25lKTogICMgRG8gbm90IHJlcGxhY2UuCisgICAgICAgICcnJ0lmIGVudHJ5IGlzIHZhbGlkLCBiaW5kIGl0IHRvICdyZXN1bHQnIGFuZCBkZXN0cm95IHRrIHdpZGdldC4KKworICAgICAgICBPdGhlcndpc2UgbGVhdmUgZGlhbG9nIG9wZW4gZm9yIHVzZXIgdG8gY29ycmVjdCBlbnRyeSBvciBjYW5jZWwuCisgICAgICAgICcnJworICAgICAgICBlbnRyeSA9IHNlbGYuZW50cnlfb2soKQorICAgICAgICBpZiBlbnRyeSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYucmVzdWx0ID0gZW50cnkKKyAgICAgICAgICAgIHNlbGYuZGVzdHJveSgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIFtPa10gbW92ZXMgZm9jdXMuICAoPFJldHVybj4gZG9lcyBub3QuKSAgTW92ZSBpdCBiYWNrLgorICAgICAgICAgICAgc2VsZi5lbnRyeS5mb2N1c19zZXQoKQorCisgICAgZGVmIGNhbmNlbChzZWxmLCBldmVudD1Ob25lKTogICMgRG8gbm90IHJlcGxhY2UuCisgICAgICAgICJTZXQgZGlhbG9nIHJlc3VsdCB0byBOb25lIGFuZCBkZXN0cm95IHRrIHdpZGdldC4iCisgICAgICAgIHNlbGYucmVzdWx0ID0gTm9uZQorICAgICAgICBzZWxmLmRlc3Ryb3koKQorCisKK2NsYXNzIFNlY3Rpb25OYW1lKFF1ZXJ5KToKKyAgICAiR2V0IGEgbmFtZSBmb3IgYSBjb25maWcgZmlsZSBzZWN0aW9uIG5hbWUuIgorICAgICMgVXNlZCBpbiBDb25maWdEaWFsb2cuR2V0TmV3S2V5c05hbWUsIC5HZXROZXdUaGVtZU5hbWUgKDgzNykKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQsIHRpdGxlLCBtZXNzYWdlLCB1c2VkX25hbWVzLAorICAgICAgICAgICAgICAgICAqLCBfaHRlc3Q9RmFsc2UsIF91dGVzdD1GYWxzZSk6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCB0aXRsZSwgbWVzc2FnZSwgdXNlZF9uYW1lcz11c2VkX25hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIF9odGVzdD1faHRlc3QsIF91dGVzdD1fdXRlc3QpCisKKyAgICBkZWYgZW50cnlfb2soc2VsZik6CisgICAgICAgICJSZXR1cm4gc2Vuc2libGUgQ29uZmlnUGFyc2VyIHNlY3Rpb24gbmFtZSBvciBOb25lLiIKKyAgICAgICAgc2VsZi5lbnRyeV9lcnJvclsndGV4dCddID0gJycKKyAgICAgICAgbmFtZSA9IHNlbGYuZW50cnkuZ2V0KCkuc3RyaXAoKQorICAgICAgICBpZiBub3QgbmFtZToKKyAgICAgICAgICAgIHNlbGYuc2hvd2Vycm9yKCdubyBuYW1lIHNwZWNpZmllZC4nKQorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgZWxpZiBsZW4obmFtZSk+MzA6CisgICAgICAgICAgICBzZWxmLnNob3dlcnJvcignbmFtZSBpcyBsb25nZXIgdGhhbiAzMCBjaGFyYWN0ZXJzLicpCisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBlbGlmIG5hbWUgaW4gc2VsZi51c2VkX25hbWVzOgorICAgICAgICAgICAgc2VsZi5zaG93ZXJyb3IoJ25hbWUgaXMgYWxyZWFkeSBpbiB1c2UuJykKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJldHVybiBuYW1lCisKKworY2xhc3MgTW9kdWxlTmFtZShRdWVyeSk6CisgICAgIkdldCBhIG1vZHVsZSBuYW1lIGZvciBPcGVuIE1vZHVsZSBtZW51IGVudHJ5LiIKKyAgICAjIFVzZWQgaW4gb3Blbl9tb2R1bGUgKGVkaXRvci5FZGl0b3JXaW5kb3cgdW50aWwgbW92ZSB0byBpb2JpbmRpbmcpLgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCwgdGl0bGUsIG1lc3NhZ2UsIHRleHQwLAorICAgICAgICAgICAgICAgICAqLCBfaHRlc3Q9RmFsc2UsIF91dGVzdD1GYWxzZSk6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCB0aXRsZSwgbWVzc2FnZSwgdGV4dDA9dGV4dDAsCisgICAgICAgICAgICAgICAgICAgICAgIF9odGVzdD1faHRlc3QsIF91dGVzdD1fdXRlc3QpCisKKyAgICBkZWYgZW50cnlfb2soc2VsZik6CisgICAgICAgICJSZXR1cm4gZW50ZXJlZCBtb2R1bGUgbmFtZSBhcyBmaWxlIHBhdGggb3IgTm9uZS4iCisgICAgICAgIHNlbGYuZW50cnlfZXJyb3JbJ3RleHQnXSA9ICcnCisgICAgICAgIG5hbWUgPSBzZWxmLmVudHJ5LmdldCgpLnN0cmlwKCkKKyAgICAgICAgaWYgbm90IG5hbWU6CisgICAgICAgICAgICBzZWxmLnNob3dlcnJvcignbm8gbmFtZSBzcGVjaWZpZWQuJykKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgICMgWFhYIE91Z2h0IHRvIGluc2VydCBjdXJyZW50IGZpbGUncyBkaXJlY3RvcnkgaW4gZnJvbnQgb2YgcGF0aC4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc3BlYyA9IGltcG9ydGxpYi51dGlsLmZpbmRfc3BlYyhuYW1lKQorICAgICAgICBleGNlcHQgKFZhbHVlRXJyb3IsIEltcG9ydEVycm9yKSBhcyBtc2c6CisgICAgICAgICAgICBzZWxmLnNob3dlcnJvcihzdHIobXNnKSkKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIGlmIHNwZWMgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuc2hvd2Vycm9yKCJtb2R1bGUgbm90IGZvdW5kIikKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHNwZWMubG9hZGVyLCBpbXBvcnRsaWIuYWJjLlNvdXJjZUxvYWRlcik6CisgICAgICAgICAgICBzZWxmLnNob3dlcnJvcigibm90IGEgc291cmNlLWJhc2VkIG1vZHVsZSIpCisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBmaWxlX3BhdGggPSBzcGVjLmxvYWRlci5nZXRfZmlsZW5hbWUobmFtZSkKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgc2VsZi5zaG93ZXJyb3IoImxvYWRlciBkb2VzIG5vdCBzdXBwb3J0IGdldF9maWxlbmFtZSIsCisgICAgICAgICAgICAgICAgICAgICAgcGFyZW50PXNlbGYpCisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICByZXR1cm4gZmlsZV9wYXRoCisKKworY2xhc3MgSGVscFNvdXJjZShRdWVyeSk6CisgICAgIkdldCBtZW51IG5hbWUgYW5kIGhlbHAgc291cmNlIGZvciBIZWxwIG1lbnUuIgorICAgICMgVXNlZCBpbiBDb25maWdEaWFsb2cuSGVscExpc3RJdGVtQWRkL0VkaXQsICg5NDEvOSkKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQsIHRpdGxlLCAqLCBtZW51aXRlbT0nJywgZmlsZXBhdGg9JycsCisgICAgICAgICAgICAgICAgIHVzZWRfbmFtZXM9e30sIF9odGVzdD1GYWxzZSwgX3V0ZXN0PUZhbHNlKToKKyAgICAgICAgIiIiR2V0IG1lbnUgZW50cnkgYW5kIHVybC9sb2NhbCBmaWxlIGZvciBBZGRpdGlvbmFsIEhlbHAuCisKKyAgICAgICAgVXNlciBlbnRlcnMgYSBuYW1lIGZvciB0aGUgSGVscCByZXNvdXJjZSBhbmQgYSB3ZWIgdXJsIG9yIGZpbGUKKyAgICAgICAgbmFtZS4gVGhlIHVzZXIgY2FuIGJyb3dzZSBmb3IgdGhlIGZpbGUuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLmZpbGVwYXRoID0gZmlsZXBhdGgKKyAgICAgICAgbWVzc2FnZSA9ICdOYW1lIGZvciBpdGVtIG9uIEhlbHAgbWVudTonCisgICAgICAgIHN1cGVyKCkuX19pbml0X18oCisgICAgICAgICAgICAgICAgcGFyZW50LCB0aXRsZSwgbWVzc2FnZSwgdGV4dDA9bWVudWl0ZW0sCisgICAgICAgICAgICAgICAgdXNlZF9uYW1lcz11c2VkX25hbWVzLCBfaHRlc3Q9X2h0ZXN0LCBfdXRlc3Q9X3V0ZXN0KQorCisgICAgZGVmIGNyZWF0ZV93aWRnZXRzKHNlbGYpOgorICAgICAgICBzdXBlcigpLmNyZWF0ZV93aWRnZXRzKCkKKyAgICAgICAgZnJhbWUgPSBzZWxmLmZyYW1lCisgICAgICAgIHBhdGhsYWJlbCA9IExhYmVsKGZyYW1lLCBhbmNob3I9J3cnLCBqdXN0aWZ5PSdsZWZ0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dD0nSGVscCBGaWxlIFBhdGg6IEVudGVyIFVSTCBvciBicm93c2UgZm9yIGZpbGUnKQorICAgICAgICBzZWxmLnBhdGh2YXIgPSBTdHJpbmdWYXIoc2VsZiwgc2VsZi5maWxlcGF0aCkKKyAgICAgICAgc2VsZi5wYXRoID0gRW50cnkoZnJhbWUsIHRleHR2YXJpYWJsZT1zZWxmLnBhdGh2YXIsIHdpZHRoPTQwKQorICAgICAgICBicm93c2UgPSBCdXR0b24oZnJhbWUsIHRleHQ9J0Jyb3dzZScsIHdpZHRoPTgsCisgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPXNlbGYuYnJvd3NlX2ZpbGUpCisgICAgICAgIHNlbGYucGF0aF9lcnJvciA9IExhYmVsKGZyYW1lLCB0ZXh0PScgJywgZm9yZWdyb3VuZD0ncmVkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udD1zZWxmLmVycm9yX2ZvbnQpCisKKyAgICAgICAgcGF0aGxhYmVsLmdyaWQoY29sdW1uPTAsIHJvdz0xMCwgY29sdW1uc3Bhbj0zLCBwYWR4PTUsIHBhZHk9WzEwLDBdLAorICAgICAgICAgICAgICAgICAgICAgICBzdGlja3k9VykKKyAgICAgICAgc2VsZi5wYXRoLmdyaWQoY29sdW1uPTAsIHJvdz0xMSwgY29sdW1uc3Bhbj0yLCBwYWR4PTUsIHN0aWNreT1XK0UsCisgICAgICAgICAgICAgICAgICAgICAgIHBhZHk9WzEwLDBdKQorICAgICAgICBicm93c2UuZ3JpZChjb2x1bW49Miwgcm93PTExLCBwYWR4PTUsIHN0aWNreT1XK1MpCisgICAgICAgIHNlbGYucGF0aF9lcnJvci5ncmlkKGNvbHVtbj0wLCByb3c9MTIsIGNvbHVtbnNwYW49MywgcGFkeD01LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGlja3k9VytFKQorCisgICAgZGVmIGFza2ZpbGVuYW1lKHNlbGYsIGZpbGV0eXBlcywgaW5pdGRpciwgaW5pdGZpbGUpOiAgIyBodGVzdCAjCisgICAgICAgICMgRXh0cmFjdGVkIGZyb20gYnJvd3NlX2ZpbGUgc28gY2FuIG1vY2sgZm9yIHVuaXR0ZXN0cy4KKyAgICAgICAgIyBDYW5ub3QgdW5pdHRlc3QgYXMgY2Fubm90IHNpbXVsYXRlIGJ1dHRvbiBjbGlja3MuCisgICAgICAgICMgVGVzdCBieSBydW5uaW5nIGh0ZXN0LCBzdWNoIGFzIGJ5IHJ1bm5pbmcgdGhpcyBmaWxlLgorICAgICAgICByZXR1cm4gZmlsZWRpYWxvZy5PcGVuKHBhcmVudD1zZWxmLCBmaWxldHlwZXM9ZmlsZXR5cGVzKVwKKyAgICAgICAgICAgICAgIC5zaG93KGluaXRpYWxkaXI9aW5pdGRpciwgaW5pdGlhbGZpbGU9aW5pdGZpbGUpCisKKyAgICBkZWYgYnJvd3NlX2ZpbGUoc2VsZik6CisgICAgICAgIGZpbGV0eXBlcyA9IFsKKyAgICAgICAgICAgICgiSFRNTCBGaWxlcyIsICIqLmh0bSAqLmh0bWwiLCAiVEVYVCIpLAorICAgICAgICAgICAgKCJQREYgRmlsZXMiLCAiKi5wZGYiLCAiVEVYVCIpLAorICAgICAgICAgICAgKCJXaW5kb3dzIEhlbHAgRmlsZXMiLCAiKi5jaG0iKSwKKyAgICAgICAgICAgICgiVGV4dCBGaWxlcyIsICIqLnR4dCIsICJURVhUIiksCisgICAgICAgICAgICAoIkFsbCBGaWxlcyIsICIqIildCisgICAgICAgIHBhdGggPSBzZWxmLnBhdGh2YXIuZ2V0KCkKKyAgICAgICAgaWYgcGF0aDoKKyAgICAgICAgICAgIGRpciwgYmFzZSA9IG9zLnBhdGguc3BsaXQocGF0aCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGJhc2UgPSBOb25lCisgICAgICAgICAgICBpZiBwbGF0Zm9ybVs6M10gPT0gJ3dpbic6CisgICAgICAgICAgICAgICAgZGlyID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShleGVjdXRhYmxlKSwgJ0RvYycpCisgICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNkaXIoZGlyKToKKyAgICAgICAgICAgICAgICAgICAgZGlyID0gb3MuZ2V0Y3dkKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZGlyID0gb3MuZ2V0Y3dkKCkKKyAgICAgICAgZmlsZSA9IHNlbGYuYXNrZmlsZW5hbWUoZmlsZXR5cGVzLCBkaXIsIGJhc2UpCisgICAgICAgIGlmIGZpbGU6CisgICAgICAgICAgICBzZWxmLnBhdGh2YXIuc2V0KGZpbGUpCisKKyAgICBpdGVtX29rID0gU2VjdGlvbk5hbWUuZW50cnlfb2sgICMgbG9jYWxpemUgZm9yIHRlc3Qgb3ZlcnJpZGUKKworICAgIGRlZiBwYXRoX29rKHNlbGYpOgorICAgICAgICAiU2ltcGxlIHZhbGlkaXR5IGNoZWNrIGZvciBtZW51IGZpbGUgcGF0aCIKKyAgICAgICAgcGF0aCA9IHNlbGYucGF0aC5nZXQoKS5zdHJpcCgpCisgICAgICAgIGlmIG5vdCBwYXRoOiAjbm8gcGF0aCBzcGVjaWZpZWQKKyAgICAgICAgICAgIHNlbGYuc2hvd2Vycm9yKCdubyBoZWxwIGZpbGUgcGF0aCBzcGVjaWZpZWQuJywgc2VsZi5wYXRoX2Vycm9yKQorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgZWxpZiBub3QgcGF0aC5zdGFydHN3aXRoKCgnd3d3LicsICdodHRwJykpOgorICAgICAgICAgICAgaWYgcGF0aFs6NV0gPT0gJ2ZpbGU6JzoKKyAgICAgICAgICAgICAgICBwYXRoID0gcGF0aFs1Ol0KKyAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhwYXRoKToKKyAgICAgICAgICAgICAgICBzZWxmLnNob3dlcnJvcignaGVscCBmaWxlIHBhdGggZG9lcyBub3QgZXhpc3QuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnBhdGhfZXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAgIGlmIHBsYXRmb3JtID09ICdkYXJ3aW4nOiAgIyBmb3IgTWFjIFNhZmFyaQorICAgICAgICAgICAgICAgIHBhdGggPSAgImZpbGU6Ly8iICsgcGF0aAorICAgICAgICByZXR1cm4gcGF0aAorCisgICAgZGVmIGVudHJ5X29rKHNlbGYpOgorICAgICAgICAiUmV0dXJuIGFwcGFyZW50bHkgdmFsaWQgKG5hbWUsIHBhdGgpIG9yIE5vbmUiCisgICAgICAgIHNlbGYuZW50cnlfZXJyb3JbJ3RleHQnXSA9ICcnCisgICAgICAgIHNlbGYucGF0aF9lcnJvclsndGV4dCddID0gJycKKyAgICAgICAgbmFtZSA9IHNlbGYuaXRlbV9vaygpCisgICAgICAgIHBhdGggPSBzZWxmLnBhdGhfb2soKQorICAgICAgICByZXR1cm4gTm9uZSBpZiBuYW1lIGlzIE5vbmUgb3IgcGF0aCBpcyBOb25lIGVsc2UgKG5hbWUsIHBhdGgpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBpbXBvcnQgdW5pdHRlc3QKKyAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X3F1ZXJ5JywgdmVyYm9zaXR5PTIsIGV4aXQ9RmFsc2UpCisKKyAgICBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lmh0ZXN0IGltcG9ydCBydW4KKyAgICBydW4oUXVlcnksIEhlbHBTb3VyY2UpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9XaWRnZXRSZWRpcmVjdG9yLnB5IGIvTGliL2lkbGVsaWIvcmVkaXJlY3Rvci5weQpzaW1pbGFyaXR5IGluZGV4IDk0JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9XaWRnZXRSZWRpcmVjdG9yLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9yZWRpcmVjdG9yLnB5CmluZGV4IGI2NmJlOWUuLmVjNjgxZGUgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1dpZGdldFJlZGlyZWN0b3IucHkKKysrIGIvTGliL2lkbGVsaWIvcmVkaXJlY3Rvci5weQpAQCAtMTA0LDcgKzEwNCw3IEBACiAKICAgICAgICAgTm90ZSB0aGF0IGlmIGEgcmVnaXN0ZXJlZCBmdW5jdGlvbiBpcyBjYWxsZWQsIHRoZSBvcGVyYXRpb24gaXMgbm90CiAgICAgICAgIHBhc3NlZCB0aHJvdWdoIHRvIFRrLiAgQXBwbHkgdGhlIGZ1bmN0aW9uIHJldHVybmVkIGJ5IHNlbGYucmVnaXN0ZXIoKQotICAgICAgICB0byAqYXJncyB0byBhY2NvbXBsaXNoIHRoYXQuICBGb3IgYW4gZXhhbXBsZSwgc2VlIENvbG9yRGVsZWdhdG9yLnB5LgorICAgICAgICB0byAqYXJncyB0byBhY2NvbXBsaXNoIHRoYXQuICBGb3IgYW4gZXhhbXBsZSwgc2VlIGNvbG9yaXplci5weS4KIAogICAgICAgICAnJycKICAgICAgICAgbSA9IHNlbGYuX29wZXJhdGlvbnMuZ2V0KG9wZXJhdGlvbikKQEAgLTE1MSwxNCArMTUxLDEzIEBACiAKIAogZGVmIF93aWRnZXRfcmVkaXJlY3RvcihwYXJlbnQpOiAgIyBodGVzdCAjCi0gICAgZnJvbSB0a2ludGVyIGltcG9ydCBUaywgVGV4dAotICAgIGltcG9ydCByZQorICAgIGZyb20gdGtpbnRlciBpbXBvcnQgVG9wbGV2ZWwsIFRleHQKIAotICAgIHJvb3QgPSBUaygpCi0gICAgcm9vdC50aXRsZSgiVGVzdCBXaWRnZXRSZWRpcmVjdG9yIikKLSAgICB3aWR0aCwgaGVpZ2h0LCB4LCB5ID0gbGlzdChtYXAoaW50LCByZS5zcGxpdCgnW3grXScsIHBhcmVudC5nZW9tZXRyeSgpKSkpCi0gICAgcm9vdC5nZW9tZXRyeSgiKyVkKyVkIiUoeCwgeSArIDE1MCkpCi0gICAgdGV4dCA9IFRleHQocm9vdCkKKyAgICB0b3AgPSBUb3BsZXZlbChwYXJlbnQpCisgICAgdG9wLnRpdGxlKCJUZXN0IFdpZGdldFJlZGlyZWN0b3IiKQorICAgIHgsIHkgPSBtYXAoaW50LCBwYXJlbnQuZ2VvbWV0cnkoKS5zcGxpdCgnKycpWzE6XSkKKyAgICB0b3AuZ2VvbWV0cnkoIislZCslZCIgJSAoeCwgeSArIDE3NSkpCisgICAgdGV4dCA9IFRleHQodG9wKQogICAgIHRleHQucGFjaygpCiAgICAgdGV4dC5mb2N1c19zZXQoKQogICAgIHJlZGlyID0gV2lkZ2V0UmVkaXJlY3Rvcih0ZXh0KQpAQCAtMTY2LDExICsxNjUsMTEgQEAKICAgICAgICAgcHJpbnQoImluc2VydCIsIGFyZ3MpCiAgICAgICAgIG9yaWdpbmFsX2luc2VydCgqYXJncykKICAgICBvcmlnaW5hbF9pbnNlcnQgPSByZWRpci5yZWdpc3RlcigiaW5zZXJ0IiwgbXlfaW5zZXJ0KQotICAgIHJvb3QubWFpbmxvb3AoKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIGltcG9ydCB1bml0dGVzdAotICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3Rfd2lkZ2V0cmVkaXInLAorICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3RfcmVkaXJlY3RvcicsCiAgICAgICAgICAgICAgICAgICB2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKKwogICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgogICAgIHJ1bihfd2lkZ2V0X3JlZGlyZWN0b3IpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9SZXBsYWNlRGlhbG9nLnB5IGIvTGliL2lkbGVsaWIvcmVwbGFjZS5weQpzaW1pbGFyaXR5IGluZGV4IDkzJQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9SZXBsYWNlRGlhbG9nLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9yZXBsYWNlLnB5CmluZGV4IGYyZWEyMmUuLmFiZDllNTkgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1JlcGxhY2VEaWFsb2cucHkKKysrIGIvTGliL2lkbGVsaWIvcmVwbGFjZS5weQpAQCAtMywxOCArMywxOCBAQAogRGVmaW5lcyB2YXJpb3VzIHJlcGxhY2UgcmVsYXRlZCBmdW5jdGlvbnMgbGlrZSByZXBsYWNlLCByZXBsYWNlIGFsbCwKIHJlcGxhY2UrZmluZC4KICIiIgotZnJvbSB0a2ludGVyIGltcG9ydCAqCi0KLWZyb20gaWRsZWxpYiBpbXBvcnQgU2VhcmNoRW5naW5lCi1mcm9tIGlkbGVsaWIuU2VhcmNoRGlhbG9nQmFzZSBpbXBvcnQgU2VhcmNoRGlhbG9nQmFzZQogaW1wb3J0IHJlCiAKK2Zyb20gdGtpbnRlciBpbXBvcnQgU3RyaW5nVmFyLCBUY2xFcnJvcgorCitmcm9tIGlkbGVsaWIuc2VhcmNoYmFzZSBpbXBvcnQgU2VhcmNoRGlhbG9nQmFzZQorZnJvbSBpZGxlbGliIGltcG9ydCBzZWFyY2hlbmdpbmUKIAogZGVmIHJlcGxhY2UodGV4dCk6CiAgICAgIiIiUmV0dXJucyBhIHNpbmdsZXRvbiBSZXBsYWNlRGlhbG9nIGluc3RhbmNlLlRoZSBzaW5nbGUgZGlhbG9nCiAgICAgIHNhdmVzIHVzZXIgZW50cmllcyBhbmQgcHJlZmVyZW5jZXMgYWNyb3NzIGluc3RhbmNlcy4iIiIKICAgICByb290ID0gdGV4dC5fcm9vdCgpCi0gICAgZW5naW5lID0gU2VhcmNoRW5naW5lLmdldChyb290KQorICAgIGVuZ2luZSA9IHNlYXJjaGVuZ2luZS5nZXQocm9vdCkKICAgICBpZiBub3QgaGFzYXR0cihlbmdpbmUsICJfcmVwbGFjZWRpYWxvZyIpOgogICAgICAgICBlbmdpbmUuX3JlcGxhY2VkaWFsb2cgPSBSZXBsYWNlRGlhbG9nKHJvb3QsIGVuZ2luZSkKICAgICBkaWFsb2cgPSBlbmdpbmUuX3JlcGxhY2VkaWFsb2cKQEAgLTk1LDcgKzk1LDcgQEAKICAgICAgICAgdGV4dCA9IHNlbGYudGV4dAogICAgICAgICByZXMgPSBzZWxmLmVuZ2luZS5zZWFyY2hfdGV4dCh0ZXh0LCBwcm9nKQogICAgICAgICBpZiBub3QgcmVzOgotICAgICAgICAgICAgdGV4dC5iZWxsKCkKKyAgICAgICAgICAgIHNlbGYuYmVsbCgpCiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgdGV4dC50YWdfcmVtb3ZlKCJzZWwiLCAiMS4wIiwgImVuZCIpCiAgICAgICAgIHRleHQudGFnX3JlbW92ZSgiaGl0IiwgIjEuMCIsICJlbmQiKQpAQCAtMTQyLDcgKzE0Miw3IEBACiAgICAgICAgIHRleHQgPSBzZWxmLnRleHQKICAgICAgICAgcmVzID0gc2VsZi5lbmdpbmUuc2VhcmNoX3RleHQodGV4dCwgTm9uZSwgb2spCiAgICAgICAgIGlmIG5vdCByZXM6Ci0gICAgICAgICAgICB0ZXh0LmJlbGwoKQorICAgICAgICAgICAgc2VsZi5iZWxsKCkKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICBsaW5lLCBtID0gcmVzCiAgICAgICAgIGksIGogPSBtLnNwYW4oKQpAQCAtMTY0LDcgKzE2NCw3IEBACiAgICAgICAgICAgICBwb3MgPSBOb25lCiAgICAgICAgIGlmIG5vdCBwb3M6CiAgICAgICAgICAgICBmaXJzdCA9IGxhc3QgPSBwb3MgPSB0ZXh0LmluZGV4KCJpbnNlcnQiKQotICAgICAgICBsaW5lLCBjb2wgPSBTZWFyY2hFbmdpbmUuZ2V0X2xpbmVfY29sKHBvcykKKyAgICAgICAgbGluZSwgY29sID0gc2VhcmNoZW5naW5lLmdldF9saW5lX2NvbChwb3MpCiAgICAgICAgIGNoYXJzID0gdGV4dC5nZXQoIiVkLjAiICUgbGluZSwgIiVkLjAiICUgKGxpbmUrMSkpCiAgICAgICAgIG0gPSBwcm9nLm1hdGNoKGNoYXJzLCBjb2wpCiAgICAgICAgIGlmIG5vdCBwcm9nOgpAQCAtMjA0LDExICsyMDQsMTMgQEAKIAogCiBkZWYgX3JlcGxhY2VfZGlhbG9nKHBhcmVudCk6ICAjIGh0ZXN0ICMKLSAgICAiIiJodGVzdCB3cmFwcGVyIGZ1bmN0aW9uIiIiCisgICAgZnJvbSB0a2ludGVyIGltcG9ydCBUb3BsZXZlbCwgVGV4dCwgRU5ELCBTRUwKKyAgICBmcm9tIHRraW50ZXIudHRrIGltcG9ydCBCdXR0b24KKwogICAgIGJveCA9IFRvcGxldmVsKHBhcmVudCkKICAgICBib3gudGl0bGUoIlRlc3QgUmVwbGFjZURpYWxvZyIpCi0gICAgd2lkdGgsIGhlaWdodCwgeCwgeSA9IGxpc3QobWFwKGludCwgcmUuc3BsaXQoJ1t4K10nLCBwYXJlbnQuZ2VvbWV0cnkoKSkpKQotICAgIGJveC5nZW9tZXRyeSgiKyVkKyVkIiUoeCwgeSArIDE1MCkpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIGJveC5nZW9tZXRyeSgiKyVkKyVkIiAlICh4LCB5ICsgMTc1KSkKIAogICAgICMgbW9jayB1bmRvIGRlbGVnYXRvciBtZXRob2RzCiAgICAgZGVmIHVuZG9fYmxvY2tfc3RhcnQoKToKQEAgLTIzNCw3ICsyMzYsNyBAQAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIGltcG9ydCB1bml0dGVzdAotICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3RfcmVwbGFjZWRpYWxvZycsCisgICAgdW5pdHRlc3QubWFpbignaWRsZWxpYi5pZGxlX3Rlc3QudGVzdF9yZXBsYWNlJywKICAgICAgICAgICAgICAgICB2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKIAogICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvcnBjLnB5IGIvTGliL2lkbGVsaWIvcnBjLnB5CmluZGV4IDQ4MTA1ZjIuLjhmNTdlZGI4IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9ycGMucHkKKysrIGIvTGliL2lkbGVsaWIvcnBjLnB5CkBAIC0yNiwyMyArMjYsMjEgQEAKIGFjY29tcGxpc2hlZCBpbiBJZGxlLgogCiAiIiIKLQotaW1wb3J0IHN5cwotaW1wb3J0IG9zCitpbXBvcnQgYnVpbHRpbnMKK2ltcG9ydCBjb3B5cmVnCiBpbXBvcnQgaW8KLWltcG9ydCBzb2NrZXQKK2ltcG9ydCBtYXJzaGFsCitpbXBvcnQgb3MKK2ltcG9ydCBwaWNrbGUKK2ltcG9ydCBxdWV1ZQogaW1wb3J0IHNlbGVjdAoraW1wb3J0IHNvY2tldAogaW1wb3J0IHNvY2tldHNlcnZlcgogaW1wb3J0IHN0cnVjdAotaW1wb3J0IHBpY2tsZQoraW1wb3J0IHN5cwogaW1wb3J0IHRocmVhZGluZwotaW1wb3J0IHF1ZXVlCiBpbXBvcnQgdHJhY2ViYWNrCi1pbXBvcnQgY29weXJlZwogaW1wb3J0IHR5cGVzCi1pbXBvcnQgbWFyc2hhbAotaW1wb3J0IGJ1aWx0aW5zCi0KIAogZGVmIHVucGlja2xlX2NvZGUobXMpOgogICAgIGNvID0gbWFyc2hhbC5sb2FkcyhtcykKQEAgLTYwLDEwICs1OCwxMiBAQAogICAgIHAuZHVtcChvYmopCiAgICAgcmV0dXJuIGYuZ2V0dmFsdWUoKQogCisKIGNsYXNzIENvZGVQaWNrbGVyKHBpY2tsZS5QaWNrbGVyKToKICAgICBkaXNwYXRjaF90YWJsZSA9IHt0eXBlcy5Db2RlVHlwZTogcGlja2xlX2NvZGV9CiAgICAgZGlzcGF0Y2hfdGFibGUudXBkYXRlKGNvcHlyZWcuZGlzcGF0Y2hfdGFibGUpCiAKKwogQlVGU0laRSA9IDgqMTAyNAogTE9DQUxIT1NUID0gJzEyNy4wLjAuMScKIApAQCAtNDg3LDE2ICs0ODcsMTkgQEAKICAgICAjIFRva2VuIG1peC1pbiBjbGFzcwogICAgIHBhc3MKIAorCiBkZWYgcmVtb3RlcmVmKG9iaik6CiAgICAgb2lkID0gaWQob2JqKQogICAgIG9iamVjdHRhYmxlW29pZF0gPSBvYmoKICAgICByZXR1cm4gUmVtb3RlUHJveHkob2lkKQogCisKIGNsYXNzIFJlbW90ZVByb3h5KG9iamVjdCk6CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgb2lkKToKICAgICAgICAgc2VsZi5vaWQgPSBvaWQKIAorCiBjbGFzcyBSUENIYW5kbGVyKHNvY2tldHNlcnZlci5CYXNlUmVxdWVzdEhhbmRsZXIsIFNvY2tldElPKToKIAogICAgIGRlYnVnZ2luZyA9IEZhbHNlCkBAIC01MTQsNiArNTE3LDcgQEAKICAgICBkZWYgZ2V0X3JlbW90ZV9wcm94eShzZWxmLCBvaWQpOgogICAgICAgICByZXR1cm4gUlBDUHJveHkoc2VsZiwgb2lkKQogCisKIGNsYXNzIFJQQ0NsaWVudChTb2NrZXRJTyk6CiAKICAgICBkZWJ1Z2dpbmcgPSBGYWxzZQpAQCAtNTM5LDYgKzU0Myw3IEBACiAgICAgZGVmIGdldF9yZW1vdGVfcHJveHkoc2VsZiwgb2lkKToKICAgICAgICAgcmV0dXJuIFJQQ1Byb3h5KHNlbGYsIG9pZCkKIAorCiBjbGFzcyBSUENQcm94eShvYmplY3QpOgogCiAgICAgX19tZXRob2RzID0gTm9uZQpAQCAtNTg3LDYgKzU5Miw3IEBACiAgICAgICAgIGlmIG5vdCBjYWxsYWJsZShhdHRyKToKICAgICAgICAgICAgIGF0dHJpYnV0ZXNbbmFtZV0gPSAxCiAKKwogY2xhc3MgTWV0aG9kUHJveHkob2JqZWN0KToKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzb2NraW8sIG9pZCwgbmFtZSk6CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9Sc3RyaXBFeHRlbnNpb24ucHkgYi9MaWIvaWRsZWxpYi9yc3RyaXAucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1JzdHJpcEV4dGVuc2lvbi5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvcnN0cmlwLnB5CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9ydW4ucHkgYi9MaWIvaWRsZWxpYi9ydW4ucHkKaW5kZXggMjhjZTQyMC4uYWZhOTc0NCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvcnVuLnB5CisrKyBiL0xpYi9pZGxlbGliL3J1bi5weQpAQCAtMSwzMyArMSw0NSBAQAotaW1wb3J0IHN5cworaW1wb3J0IGlvCiBpbXBvcnQgbGluZWNhY2hlCitpbXBvcnQgcXVldWUKK2ltcG9ydCBzeXMKIGltcG9ydCB0aW1lCiBpbXBvcnQgdHJhY2ViYWNrCiBpbXBvcnQgX3RocmVhZCBhcyB0aHJlYWQKIGltcG9ydCB0aHJlYWRpbmcKLWltcG9ydCBxdWV1ZQotaW1wb3J0IHRraW50ZXIKK2ltcG9ydCB3YXJuaW5ncwogCi1mcm9tIGlkbGVsaWIgaW1wb3J0IENhbGxUaXBzCi1mcm9tIGlkbGVsaWIgaW1wb3J0IEF1dG9Db21wbGV0ZQoraW1wb3J0IHRraW50ZXIgICMgVGNsLCBkZWxldGlvbnMsIG1lc3NhZ2Vib3ggaWYgc3RhcnR1cCBmYWlscwogCi1mcm9tIGlkbGVsaWIgaW1wb3J0IFJlbW90ZURlYnVnZ2VyCi1mcm9tIGlkbGVsaWIgaW1wb3J0IFJlbW90ZU9iamVjdEJyb3dzZXIKLWZyb20gaWRsZWxpYiBpbXBvcnQgU3RhY2tWaWV3ZXIKLWZyb20gaWRsZWxpYiBpbXBvcnQgcnBjCi1mcm9tIGlkbGVsaWIgaW1wb3J0IFB5U2hlbGwKLWZyb20gaWRsZWxpYiBpbXBvcnQgSU9CaW5kaW5nCi0KK2Zyb20gaWRsZWxpYiBpbXBvcnQgYXV0b2NvbXBsZXRlICAjIEF1dG9Db21wbGV0ZSwgZmV0Y2hfZW5jb2RpbmdzCitmcm9tIGlkbGVsaWIgaW1wb3J0IGNhbGx0aXBzICAjIENhbGxUaXBzCitmcm9tIGlkbGVsaWIgaW1wb3J0IGRlYnVnZ2VyX3IgICMgc3RhcnRfZGVidWdnZXIKK2Zyb20gaWRsZWxpYiBpbXBvcnQgZGVidWdvYmpfciAgIyByZW1vdGVfb2JqZWN0X3RyZWVfaXRlbQorZnJvbSBpZGxlbGliIGltcG9ydCBpb21lbnUgICMgZW5jb2RpbmcKK2Zyb20gaWRsZWxpYiBpbXBvcnQgcnBjICAjIG11bHRpcGxlIG9iamVjdHMKK2Zyb20gaWRsZWxpYiBpbXBvcnQgc3RhY2t2aWV3ZXIgICMgU3RhY2tUcmVlSXRlbQogaW1wb3J0IF9fbWFpbl9fCiAKIGZvciBtb2QgaW4gKCdzaW1wbGVkaWFsb2cnLCAnbWVzc2FnZWJveCcsICdmb250JywKICAgICAgICAgICAgICdkaWFsb2cnLCAnZmlsZWRpYWxvZycsICdjb21tb25kaWFsb2cnLAotICAgICAgICAgICAgJ2NvbG9yY2hvb3NlcicpOgorICAgICAgICAgICAgJ3R0aycpOgogICAgIGRlbGF0dHIodGtpbnRlciwgbW9kKQogICAgIGRlbCBzeXMubW9kdWxlc1sndGtpbnRlci4nICsgbW9kXQogCiBMT0NBTEhPU1QgPSAnMTI3LjAuMC4xJwogCi1pbXBvcnQgd2FybmluZ3MKKworZGVmIGlkbGVfZm9ybWF0d2FybmluZyhtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUsIGxpbmVubywgbGluZT1Ob25lKToKKyAgICAiIiJGb3JtYXQgd2FybmluZ3MgdGhlIElETEUgd2F5LiIiIgorCisgICAgcyA9ICJcbldhcm5pbmcgKGZyb20gd2FybmluZ3MgbW9kdWxlKTpcbiIKKyAgICBzICs9ICcgIEZpbGUgXCIlc1wiLCBsaW5lICVzXG4nICUgKGZpbGVuYW1lLCBsaW5lbm8pCisgICAgaWYgbGluZSBpcyBOb25lOgorICAgICAgICBsaW5lID0gbGluZWNhY2hlLmdldGxpbmUoZmlsZW5hbWUsIGxpbmVubykKKyAgICBsaW5lID0gbGluZS5zdHJpcCgpCisgICAgaWYgbGluZToKKyAgICAgICAgcyArPSAiICAgICVzXG4iICUgbGluZQorICAgIHMgKz0gIiVzOiAlc1xuIiAlIChjYXRlZ29yeS5fX25hbWVfXywgbWVzc2FnZSkKKyAgICByZXR1cm4gcwogCiBkZWYgaWRsZV9zaG93d2FybmluZ19zdWJwcm9jKAogICAgICAgICBtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUsIGxpbmVubywgZmlsZT1Ob25lLCBsaW5lPU5vbmUpOgpAQCAtMzgsNyArNTAsNyBAQAogICAgIGlmIGZpbGUgaXMgTm9uZToKICAgICAgICAgZmlsZSA9IHN5cy5zdGRlcnIKICAgICB0cnk6Ci0gICAgICAgIGZpbGUud3JpdGUoUHlTaGVsbC5pZGxlX2Zvcm1hdHdhcm5pbmcoCisgICAgICAgIGZpbGUud3JpdGUoaWRsZV9mb3JtYXR3YXJuaW5nKAogICAgICAgICAgICAgICAgIG1lc3NhZ2UsIGNhdGVnb3J5LCBmaWxlbmFtZSwgbGluZW5vLCBsaW5lKSkKICAgICBleGNlcHQgSU9FcnJvcjoKICAgICAgICAgcGFzcyAjIHRoZSBmaWxlIChwcm9iYWJseSBzdGRlcnIpIGlzIGludmFsaWQgLSB0aGlzIHdhcm5pbmcgZ2V0cyBsb3N0LgpAQCAtODgsNyArMTAwLDcgQEAKICAgICBNeUhhbmRsZXIgb2JqZWN0LiAgVGhhdCByZWZlcmVuY2UgaXMgc2F2ZWQgYXMgYXR0cmlidXRlIHJwY2hhbmRsZXIgb2YgdGhlCiAgICAgRXhlY3V0aXZlIGluc3RhbmNlLiAgVGhlIEV4ZWN1dGl2ZSBtZXRob2RzIGhhdmUgYWNjZXNzIHRvIHRoZSByZWZlcmVuY2UgYW5kCiAgICAgY2FuIHBhc3MgaXQgb24gdG8gZW50aXRpZXMgdGhhdCB0aGV5IGNvbW1hbmQKLSAgICAoZS5nLiBSZW1vdGVEZWJ1Z2dlci5EZWJ1Z2dlci5zdGFydF9kZWJ1Z2dlcigpKS4gIFRoZSBsYXR0ZXIsIGluIHR1cm4sIGNhbgorICAgIChlLmcuIGRlYnVnZ2VyX3IuRGVidWdnZXIuc3RhcnRfZGVidWdnZXIoKSkuICBUaGUgbGF0dGVyLCBpbiB0dXJuLCBjYW4KICAgICBjYWxsIE15SGFuZGxlcihTb2NrZXRJTykgcmVnaXN0ZXIvdW5yZWdpc3RlciBtZXRob2RzIHZpYSB0aGUgcmVmZXJlbmNlIHRvCiAgICAgcmVnaXN0ZXIgYW5kIHVucmVnaXN0ZXIgdGhlbXNlbHZlcy4KIApAQCAtMjEwLDcgKzIyMiw3IEBACiAgICAgICAgICAgICB0YmUgPSB0cmFjZWJhY2suZXh0cmFjdF90Yih0YikKICAgICAgICAgICAgIHByaW50KCdUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6JywgZmlsZT1lZmlsZSkKICAgICAgICAgICAgIGV4Y2x1ZGUgPSAoInJ1bi5weSIsICJycGMucHkiLCAidGhyZWFkaW5nLnB5IiwgInF1ZXVlLnB5IiwKLSAgICAgICAgICAgICAgICAgICAgICAgIlJlbW90ZURlYnVnZ2VyLnB5IiwgImJkYi5weSIpCisgICAgICAgICAgICAgICAgICAgICAgICJkZWJ1Z2dlcl9yLnB5IiwgImJkYi5weSIpCiAgICAgICAgICAgICBjbGVhbnVwX3RyYWNlYmFjayh0YmUsIGV4Y2x1ZGUpCiAgICAgICAgICAgICB0cmFjZWJhY2sucHJpbnRfbGlzdCh0YmUsIGZpbGU9ZWZpbGUpCiAgICAgICAgIGxpbmVzID0gdHJhY2ViYWNrLmZvcm1hdF9leGNlcHRpb25fb25seSh0eXAsIGV4YykKQEAgLTI2Nyw2ICsyNzksNyBAQAogICAgIGNhcHR1cmVfd2FybmluZ3MoRmFsc2UpCiAgICAgc3lzLmV4aXQoMCkKIAorCiBjbGFzcyBNeVJQQ1NlcnZlcihycGMuUlBDU2VydmVyKToKIAogICAgIGRlZiBoYW5kbGVfZXJyb3Ioc2VsZiwgcmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpOgpAQCAtMjk3LDYgKzMxMCw5NiBAQAogICAgICAgICAgICAgcXVpdHRpbmcgPSBUcnVlCiAgICAgICAgICAgICB0aHJlYWQuaW50ZXJydXB0X21haW4oKQogCisKKyMgUHNldWRvZmlsZXMgZm9yIHNoZWxsLXJlbW90ZSBjb21tdW5pY2F0aW9uIChhbHNvIHVzZWQgaW4gcHlzaGVsbCkKKworY2xhc3MgUHNldWRvRmlsZShpby5UZXh0SU9CYXNlKToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzaGVsbCwgdGFncywgZW5jb2Rpbmc9Tm9uZSk6CisgICAgICAgIHNlbGYuc2hlbGwgPSBzaGVsbAorICAgICAgICBzZWxmLnRhZ3MgPSB0YWdzCisgICAgICAgIHNlbGYuX2VuY29kaW5nID0gZW5jb2RpbmcKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBlbmNvZGluZyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2VuY29kaW5nCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuICc8JXM+JyAlIHNlbGYudGFncworCisgICAgZGVmIGlzYXR0eShzZWxmKToKKyAgICAgICAgcmV0dXJuIFRydWUKKworCitjbGFzcyBQc2V1ZG9PdXRwdXRGaWxlKFBzZXVkb0ZpbGUpOgorCisgICAgZGVmIHdyaXRhYmxlKHNlbGYpOgorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIHdyaXRlKHNlbGYsIHMpOgorICAgICAgICBpZiBzZWxmLmNsb3NlZDoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIndyaXRlIHRvIGNsb3NlZCBmaWxlIikKKyAgICAgICAgaWYgdHlwZShzKSBpcyBub3Qgc3RyOgorICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uocywgc3RyKToKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ211c3QgYmUgc3RyLCBub3QgJyArIHR5cGUocykuX19uYW1lX18pCisgICAgICAgICAgICAjIFNlZSBpc3N1ZSAjMTk0ODEKKyAgICAgICAgICAgIHMgPSBzdHIuX19zdHJfXyhzKQorICAgICAgICByZXR1cm4gc2VsZi5zaGVsbC53cml0ZShzLCBzZWxmLnRhZ3MpCisKKworY2xhc3MgUHNldWRvSW5wdXRGaWxlKFBzZXVkb0ZpbGUpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNoZWxsLCB0YWdzLCBlbmNvZGluZz1Ob25lKToKKyAgICAgICAgUHNldWRvRmlsZS5fX2luaXRfXyhzZWxmLCBzaGVsbCwgdGFncywgZW5jb2RpbmcpCisgICAgICAgIHNlbGYuX2xpbmVfYnVmZmVyID0gJycKKworICAgIGRlZiByZWFkYWJsZShzZWxmKToKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiByZWFkKHNlbGYsIHNpemU9LTEpOgorICAgICAgICBpZiBzZWxmLmNsb3NlZDoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInJlYWQgZnJvbSBjbG9zZWQgZmlsZSIpCisgICAgICAgIGlmIHNpemUgaXMgTm9uZToKKyAgICAgICAgICAgIHNpemUgPSAtMQorICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKHNpemUsIGludCk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ211c3QgYmUgaW50LCBub3QgJyArIHR5cGUoc2l6ZSkuX19uYW1lX18pCisgICAgICAgIHJlc3VsdCA9IHNlbGYuX2xpbmVfYnVmZmVyCisgICAgICAgIHNlbGYuX2xpbmVfYnVmZmVyID0gJycKKyAgICAgICAgaWYgc2l6ZSA8IDA6CisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIGxpbmUgPSBzZWxmLnNoZWxsLnJlYWRsaW5lKCkKKyAgICAgICAgICAgICAgICBpZiBub3QgbGluZTogYnJlYWsKKyAgICAgICAgICAgICAgICByZXN1bHQgKz0gbGluZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgd2hpbGUgbGVuKHJlc3VsdCkgPCBzaXplOgorICAgICAgICAgICAgICAgIGxpbmUgPSBzZWxmLnNoZWxsLnJlYWRsaW5lKCkKKyAgICAgICAgICAgICAgICBpZiBub3QgbGluZTogYnJlYWsKKyAgICAgICAgICAgICAgICByZXN1bHQgKz0gbGluZQorICAgICAgICAgICAgc2VsZi5fbGluZV9idWZmZXIgPSByZXN1bHRbc2l6ZTpdCisgICAgICAgICAgICByZXN1bHQgPSByZXN1bHRbOnNpemVdCisgICAgICAgIHJldHVybiByZXN1bHQKKworICAgIGRlZiByZWFkbGluZShzZWxmLCBzaXplPS0xKToKKyAgICAgICAgaWYgc2VsZi5jbG9zZWQ6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJyZWFkIGZyb20gY2xvc2VkIGZpbGUiKQorICAgICAgICBpZiBzaXplIGlzIE5vbmU6CisgICAgICAgICAgICBzaXplID0gLTEKKyAgICAgICAgZWxpZiBub3QgaXNpbnN0YW5jZShzaXplLCBpbnQpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdtdXN0IGJlIGludCwgbm90ICcgKyB0eXBlKHNpemUpLl9fbmFtZV9fKQorICAgICAgICBsaW5lID0gc2VsZi5fbGluZV9idWZmZXIgb3Igc2VsZi5zaGVsbC5yZWFkbGluZSgpCisgICAgICAgIGlmIHNpemUgPCAwOgorICAgICAgICAgICAgc2l6ZSA9IGxlbihsaW5lKQorICAgICAgICBlb2wgPSBsaW5lLmZpbmQoJ1xuJywgMCwgc2l6ZSkKKyAgICAgICAgaWYgZW9sID49IDA6CisgICAgICAgICAgICBzaXplID0gZW9sICsgMQorICAgICAgICBzZWxmLl9saW5lX2J1ZmZlciA9IGxpbmVbc2l6ZTpdCisgICAgICAgIHJldHVybiBsaW5lWzpzaXplXQorCisgICAgZGVmIGNsb3NlKHNlbGYpOgorICAgICAgICBzZWxmLnNoZWxsLmNsb3NlKCkKKworCiBjbGFzcyBNeUhhbmRsZXIocnBjLlJQQ0hhbmRsZXIpOgogCiAgICAgZGVmIGhhbmRsZShzZWxmKToKQEAgLTMwNCwxMiArNDA3LDEyIEBACiAgICAgICAgIGV4ZWN1dGl2ZSA9IEV4ZWN1dGl2ZShzZWxmKQogICAgICAgICBzZWxmLnJlZ2lzdGVyKCJleGVjIiwgZXhlY3V0aXZlKQogICAgICAgICBzZWxmLmNvbnNvbGUgPSBzZWxmLmdldF9yZW1vdGVfcHJveHkoImNvbnNvbGUiKQotICAgICAgICBzeXMuc3RkaW4gPSBQeVNoZWxsLlBzZXVkb0lucHV0RmlsZShzZWxmLmNvbnNvbGUsICJzdGRpbiIsCi0gICAgICAgICAgICAgICAgSU9CaW5kaW5nLmVuY29kaW5nKQotICAgICAgICBzeXMuc3Rkb3V0ID0gUHlTaGVsbC5Qc2V1ZG9PdXRwdXRGaWxlKHNlbGYuY29uc29sZSwgInN0ZG91dCIsCi0gICAgICAgICAgICAgICAgSU9CaW5kaW5nLmVuY29kaW5nKQotICAgICAgICBzeXMuc3RkZXJyID0gUHlTaGVsbC5Qc2V1ZG9PdXRwdXRGaWxlKHNlbGYuY29uc29sZSwgInN0ZGVyciIsCi0gICAgICAgICAgICAgICAgSU9CaW5kaW5nLmVuY29kaW5nKQorICAgICAgICBzeXMuc3RkaW4gPSBQc2V1ZG9JbnB1dEZpbGUoc2VsZi5jb25zb2xlLCAic3RkaW4iLAorICAgICAgICAgICAgICAgIGlvbWVudS5lbmNvZGluZykKKyAgICAgICAgc3lzLnN0ZG91dCA9IFBzZXVkb091dHB1dEZpbGUoc2VsZi5jb25zb2xlLCAic3Rkb3V0IiwKKyAgICAgICAgICAgICAgICBpb21lbnUuZW5jb2RpbmcpCisgICAgICAgIHN5cy5zdGRlcnIgPSBQc2V1ZG9PdXRwdXRGaWxlKHNlbGYuY29uc29sZSwgInN0ZGVyciIsCisgICAgICAgICAgICAgICAgaW9tZW51LmVuY29kaW5nKQogCiAgICAgICAgIHN5cy5kaXNwbGF5aG9vayA9IHJwYy5kaXNwbGF5aG9vawogICAgICAgICAjIHBhZ2UgaGVscCgpIHRleHQgdG8gc2hlbGwuCkBAIC0zNDUsOCArNDQ4LDggQEAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcnBjaGFuZGxlcik6CiAgICAgICAgIHNlbGYucnBjaGFuZGxlciA9IHJwY2hhbmRsZXIKICAgICAgICAgc2VsZi5sb2NhbHMgPSBfX21haW5fXy5fX2RpY3RfXwotICAgICAgICBzZWxmLmNhbGx0aXAgPSBDYWxsVGlwcy5DYWxsVGlwcygpCi0gICAgICAgIHNlbGYuYXV0b2NvbXBsZXRlID0gQXV0b0NvbXBsZXRlLkF1dG9Db21wbGV0ZSgpCisgICAgICAgIHNlbGYuY2FsbHRpcCA9IGNhbGx0aXBzLkNhbGxUaXBzKCkKKyAgICAgICAgc2VsZi5hdXRvY29tcGxldGUgPSBhdXRvY29tcGxldGUuQXV0b0NvbXBsZXRlKCkKIAogICAgIGRlZiBydW5jb2RlKHNlbGYsIGNvZGUpOgogICAgICAgICBnbG9iYWwgaW50ZXJydXB0YWJsZQpAQCAtMzc4LDcgKzQ4MSw3IEBACiAgICAgICAgICAgICB0aHJlYWQuaW50ZXJydXB0X21haW4oKQogCiAgICAgZGVmIHN0YXJ0X3RoZV9kZWJ1Z2dlcihzZWxmLCBndWlfYWRhcF9vaWQpOgotICAgICAgICByZXR1cm4gUmVtb3RlRGVidWdnZXIuc3RhcnRfZGVidWdnZXIoc2VsZi5ycGNoYW5kbGVyLCBndWlfYWRhcF9vaWQpCisgICAgICAgIHJldHVybiBkZWJ1Z2dlcl9yLnN0YXJ0X2RlYnVnZ2VyKHNlbGYucnBjaGFuZGxlciwgZ3VpX2FkYXBfb2lkKQogCiAgICAgZGVmIHN0b3BfdGhlX2RlYnVnZ2VyKHNlbGYsIGlkYl9hZGFwX29pZCk6CiAgICAgICAgICJVbnJlZ2lzdGVyIHRoZSBJZGIgQWRhcHRlci4gIExpbmsgb2JqZWN0cyBhbmQgSWRiIHRoZW4gc3ViamVjdCB0byBHQyIKQEAgLTQwMiw3ICs1MDUsNyBAQAogICAgICAgICAgICAgdGIgPSB0Yi50Yl9uZXh0CiAgICAgICAgIHN5cy5sYXN0X3R5cGUgPSB0eXAKICAgICAgICAgc3lzLmxhc3RfdmFsdWUgPSB2YWwKLSAgICAgICAgaXRlbSA9IFN0YWNrVmlld2VyLlN0YWNrVHJlZUl0ZW0oZmxpc3QsIHRiKQotICAgICAgICByZXR1cm4gUmVtb3RlT2JqZWN0QnJvd3Nlci5yZW1vdGVfb2JqZWN0X3RyZWVfaXRlbShpdGVtKQorICAgICAgICBpdGVtID0gc3RhY2t2aWV3ZXIuU3RhY2tUcmVlSXRlbShmbGlzdCwgdGIpCisgICAgICAgIHJldHVybiBkZWJ1Z29ial9yLnJlbW90ZV9vYmplY3RfdHJlZV9pdGVtKGl0ZW0pCiAKIGNhcHR1cmVfd2FybmluZ3MoRmFsc2UpICAjIE1ha2Ugc3VyZSB0dXJuZWQgb2ZmOyBzZWUgaXNzdWUgMTgwODEKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1NjcmlwdEJpbmRpbmcucHkgYi9MaWIvaWRsZWxpYi9ydW5zY3JpcHQucHkKc2ltaWxhcml0eSBpbmRleCA5NSUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvU2NyaXB0QmluZGluZy5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvcnVuc2NyaXB0LnB5CmluZGV4IDVjYjgxOGQuLjc5ZDg2YWQgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1NjcmlwdEJpbmRpbmcucHkKKysrIGIvTGliL2lkbGVsaWIvcnVuc2NyaXB0LnB5CkBAIC0yMCwxMSArMjAsMTIgQEAKIGltcG9ydCBvcwogaW1wb3J0IHRhYm5hbm55CiBpbXBvcnQgdG9rZW5pemUKLWltcG9ydCB0a2ludGVyLm1lc3NhZ2Vib3ggYXMgdGtNZXNzYWdlQm94Ci1mcm9tIGlkbGVsaWIgaW1wb3J0IFB5U2hlbGwKIAotZnJvbSBpZGxlbGliLmNvbmZpZ0hhbmRsZXIgaW1wb3J0IGlkbGVDb25mCi1mcm9tIGlkbGVsaWIgaW1wb3J0IG1hY29zeFN1cHBvcnQKK2ltcG9ydCB0a2ludGVyLm1lc3NhZ2Vib3ggYXMgdGtNZXNzYWdlQm94CisKK2Zyb20gaWRsZWxpYi5jb25maWcgaW1wb3J0IGlkbGVDb25mCitmcm9tIGlkbGVsaWIgaW1wb3J0IG1hY29zeAorZnJvbSBpZGxlbGliIGltcG9ydCBweXNoZWxsCiAKIGluZGVudF9tZXNzYWdlID0gIiIiRXJyb3I6IEluY29uc2lzdGVudCBpbmRlbnRhdGlvbiBkZXRlY3RlZCEKIApAQCAtNDYsMTIgKzQ3LDEyIEBACiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZWRpdHdpbik6CiAgICAgICAgIHNlbGYuZWRpdHdpbiA9IGVkaXR3aW4KLSAgICAgICAgIyBQcm92aWRlIGluc3RhbmNlIHZhcmlhYmxlcyByZWZlcmVuY2VkIGJ5IERlYnVnZ2VyCisgICAgICAgICMgUHJvdmlkZSBpbnN0YW5jZSB2YXJpYWJsZXMgcmVmZXJlbmNlZCBieSBkZWJ1Z2dlcgogICAgICAgICAjIFhYWCBUaGlzIHNob3VsZCBiZSBkb25lIGRpZmZlcmVudGx5CiAgICAgICAgIHNlbGYuZmxpc3QgPSBzZWxmLmVkaXR3aW4uZmxpc3QKICAgICAgICAgc2VsZi5yb290ID0gc2VsZi5lZGl0d2luLnJvb3QKIAotICAgICAgICBpZiBtYWNvc3hTdXBwb3J0LmlzQ29jb2FUaygpOgorICAgICAgICBpZiBtYWNvc3guaXNDb2NvYVRrKCk6CiAgICAgICAgICAgICBzZWxmLmVkaXR3aW4udGV4dF9mcmFtZS5iaW5kKCc8PHJ1bi1tb2R1bGUtZXZlbnQtMj4+Jywgc2VsZi5fcnVuX21vZHVsZV9ldmVudCkKIAogICAgIGRlZiBjaGVja19tb2R1bGVfZXZlbnQoc2VsZiwgZXZlbnQpOgpAQCAtMTEyLDcgKzExMyw3IEBACiAgICAgICAgICAgICBzaGVsbC5zZXRfd2FybmluZ19zdHJlYW0oc2F2ZWRfc3RyZWFtKQogCiAgICAgZGVmIHJ1bl9tb2R1bGVfZXZlbnQoc2VsZiwgZXZlbnQpOgotICAgICAgICBpZiBtYWNvc3hTdXBwb3J0LmlzQ29jb2FUaygpOgorICAgICAgICBpZiBtYWNvc3guaXNDb2NvYVRrKCk6CiAgICAgICAgICAgICAjIFRrLUNvY29hIGluIE1hY09TWCBpcyBicm9rZW4gdW50aWwgYXQgbGVhc3QKICAgICAgICAgICAgICMgVGsgOC41LjksIGFuZCB3aXRob3V0IHRoaXMgcmF0aGVyCiAgICAgICAgICAgICAjIGNydWRlIHdvcmthcm91bmQgSURMRSB3b3VsZCBoYW5nIHdoZW4gYSB1c2VyCkBAIC0xNDIsNyArMTQzLDcgQEAKICAgICAgICAgaWYgbm90IHNlbGYudGFibmFubnkoZmlsZW5hbWUpOgogICAgICAgICAgICAgcmV0dXJuICdicmVhaycKICAgICAgICAgaW50ZXJwID0gc2VsZi5zaGVsbC5pbnRlcnAKLSAgICAgICAgaWYgUHlTaGVsbC51c2Vfc3VicHJvY2VzczoKKyAgICAgICAgaWYgcHlzaGVsbC51c2Vfc3VicHJvY2VzczoKICAgICAgICAgICAgIGludGVycC5yZXN0YXJ0X3N1YnByb2Nlc3Mod2l0aF9jd2Q9RmFsc2UsIGZpbGVuYW1lPQogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5lZGl0d2luLl9maWxlbmFtZV90b191bmljb2RlKGZpbGVuYW1lKSkKICAgICAgICAgZGlybmFtZSA9IG9zLnBhdGguZGlybmFtZShmaWxlbmFtZSkKQEAgLTE2MSw3ICsxNjIsNyBAQAogICAgICAgICBpbnRlcnAucHJlcGVuZF9zeXNwYXRoKGZpbGVuYW1lKQogICAgICAgICAjIFhYWCBLQksgMDNKdWwwNCBXaGVuIHJ1biB3L28gc3VicHJvY2VzcywgcnVudGltZSB3YXJuaW5ncyBzdGlsbAogICAgICAgICAjICAgICAgICAgZ28gdG8gX19zdGRlcnJfXy4gIFdpdGggc3VicHJvY2VzcywgdGhleSBnbyB0byB0aGUgc2hlbGwuCi0gICAgICAgICMgICAgICAgICBOZWVkIHRvIGNoYW5nZSBzdHJlYW1zIGluIFB5U2hlbGwuTW9kaWZpZWRJbnRlcnByZXRlci4KKyAgICAgICAgIyAgICAgICAgIE5lZWQgdG8gY2hhbmdlIHN0cmVhbXMgaW4gcHlzaGVsbC5Nb2RpZmllZEludGVycHJldGVyLgogICAgICAgICBpbnRlcnAucnVuY29kZShjb2RlKQogICAgICAgICByZXR1cm4gJ2JyZWFrJwogCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9TY3JvbGxlZExpc3QucHkgYi9MaWIvaWRsZWxpYi9zY3JvbGxlZGxpc3QucHkKc2ltaWxhcml0eSBpbmRleCA5MSUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvU2Nyb2xsZWRMaXN0LnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9zY3JvbGxlZGxpc3QucHkKaW5kZXggNTM1NzZiNS4uY2MwOGMyNiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvU2Nyb2xsZWRMaXN0LnB5CisrKyBiL0xpYi9pZGxlbGliL3Njcm9sbGVkbGlzdC5weQpAQCAtMSw1ICsxLDggQEAKIGZyb20gdGtpbnRlciBpbXBvcnQgKgotZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3hTdXBwb3J0Citmcm9tIHRraW50ZXIudHRrIGltcG9ydCBTY3JvbGxiYXIKKworZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3gKKwogCiBjbGFzcyBTY3JvbGxlZExpc3Q6CiAKQEAgLTIzLDcgKzI2LDcgQEAKICAgICAgICAgIyBCaW5kIGV2ZW50cyB0byB0aGUgbGlzdCBib3gKICAgICAgICAgbGlzdGJveC5iaW5kKCI8QnV0dG9uUmVsZWFzZS0xPiIsIHNlbGYuY2xpY2tfZXZlbnQpCiAgICAgICAgIGxpc3Rib3guYmluZCgiPERvdWJsZS1CdXR0b25SZWxlYXNlLTE+Iiwgc2VsZi5kb3VibGVfY2xpY2tfZXZlbnQpCi0gICAgICAgIGlmIG1hY29zeFN1cHBvcnQuaXNBcXVhVGsoKToKKyAgICAgICAgaWYgbWFjb3N4LmlzQXF1YVRrKCk6CiAgICAgICAgICAgICBsaXN0Ym94LmJpbmQoIjxCdXR0b25QcmVzcy0yPiIsIHNlbGYucG9wdXBfZXZlbnQpCiAgICAgICAgICAgICBsaXN0Ym94LmJpbmQoIjxDb250cm9sLUJ1dHRvbi0xPiIsIHNlbGYucG9wdXBfZXZlbnQpCiAgICAgICAgIGVsc2U6CkBAIC0xMjQsMjIgKzEyNywyMCBAQAogICAgICAgICBwYXNzCiAKIAotZGVmIF9zY3JvbGxlZF9saXN0KHBhcmVudCk6Ci0gICAgcm9vdCA9IFRrKCkKLSAgICByb290LnRpdGxlKCJUZXN0IFNjcm9sbGVkTGlzdCIpCi0gICAgd2lkdGgsIGhlaWdodCwgeCwgeSA9IGxpc3QobWFwKGludCwgcmUuc3BsaXQoJ1t4K10nLCBwYXJlbnQuZ2VvbWV0cnkoKSkpKQotICAgIHJvb3QuZ2VvbWV0cnkoIislZCslZCIlKHgsIHkgKyAxNTApKQorZGVmIF9zY3JvbGxlZF9saXN0KHBhcmVudCk6ICAjIGh0ZXN0ICMKKyAgICB0b3AgPSBUb3BsZXZlbChwYXJlbnQpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIHRvcC5nZW9tZXRyeSgiKyVkKyVkIiAlICh4KzIwMCwgeSArIDE3NSkpCiAgICAgY2xhc3MgTXlTY3JvbGxlZExpc3QoU2Nyb2xsZWRMaXN0KToKICAgICAgICAgZGVmIGZpbGxfbWVudShzZWxmKTogc2VsZi5tZW51LmFkZF9jb21tYW5kKGxhYmVsPSJyaWdodCBjbGljayIpCiAgICAgICAgIGRlZiBvbl9zZWxlY3Qoc2VsZiwgaW5kZXgpOiBwcmludCgic2VsZWN0Iiwgc2VsZi5nZXQoaW5kZXgpKQogICAgICAgICBkZWYgb25fZG91YmxlKHNlbGYsIGluZGV4KTogcHJpbnQoImRvdWJsZSIsIHNlbGYuZ2V0KGluZGV4KSkKIAotICAgIHNjcm9sbGVkX2xpc3QgPSBNeVNjcm9sbGVkTGlzdChyb290KQorICAgIHNjcm9sbGVkX2xpc3QgPSBNeVNjcm9sbGVkTGlzdCh0b3ApCiAgICAgZm9yIGkgaW4gcmFuZ2UoMzApOgogICAgICAgICBzY3JvbGxlZF9saXN0LmFwcGVuZCgiSXRlbSAlMDJkIiAlIGkpCiAKLSAgICByb290Lm1haW5sb29wKCkKLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICAjIEF0IHRoZSBtb21lbnQsIHRlc3Rfc2Nyb2xsZWRsaXN0IG1lcmVseSBjcmVhdGVzIGluc3RhbmNlLCBsaWtlIGh0ZXN0LgogICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgogICAgIHJ1bihfc2Nyb2xsZWRfbGlzdCkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1NlYXJjaERpYWxvZy5weSBiL0xpYi9pZGxlbGliL3NlYXJjaC5weQpzaW1pbGFyaXR5IGluZGV4IDgyJQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9TZWFyY2hEaWFsb2cucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3NlYXJjaC5weQppbmRleCA3NjVkNTNmLi40YjkwNjU5IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9TZWFyY2hEaWFsb2cucHkKKysrIGIvTGliL2lkbGVsaWIvc2VhcmNoLnB5CkBAIC0xLDEyICsxLDEyIEBACi1mcm9tIHRraW50ZXIgaW1wb3J0ICoKK2Zyb20gdGtpbnRlciBpbXBvcnQgVGNsRXJyb3IKIAotZnJvbSBpZGxlbGliIGltcG9ydCBTZWFyY2hFbmdpbmUKLWZyb20gaWRsZWxpYi5TZWFyY2hEaWFsb2dCYXNlIGltcG9ydCBTZWFyY2hEaWFsb2dCYXNlCitmcm9tIGlkbGVsaWIgaW1wb3J0IHNlYXJjaGVuZ2luZQorZnJvbSBpZGxlbGliLnNlYXJjaGJhc2UgaW1wb3J0IFNlYXJjaERpYWxvZ0Jhc2UKIAogZGVmIF9zZXR1cCh0ZXh0KToKICAgICAiQ3JlYXRlIG9yIGZpbmQgdGhlIHNpbmdsZXRvbiBTZWFyY2hEaWFsb2cgaW5zdGFuY2UuIgogICAgIHJvb3QgPSB0ZXh0Ll9yb290KCkKLSAgICBlbmdpbmUgPSBTZWFyY2hFbmdpbmUuZ2V0KHJvb3QpCisgICAgZW5naW5lID0gc2VhcmNoZW5naW5lLmdldChyb290KQogICAgIGlmIG5vdCBoYXNhdHRyKGVuZ2luZSwgIl9zZWFyY2hkaWFsb2ciKToKICAgICAgICAgZW5naW5lLl9zZWFyY2hkaWFsb2cgPSBTZWFyY2hEaWFsb2cocm9vdCwgZW5naW5lKQogICAgIHJldHVybiBlbmdpbmUuX3NlYXJjaGRpYWxvZwpAQCAtMjQsNiArMjQsNyBAQAogICAgICJIYW5kbGUgdGhlIGVkaXRvciBlZGl0IG1lbnUgaXRlbSBhbmQgY29ycmVzcG9uZGluZyBldmVudC4iCiAgICAgcmV0dXJuIF9zZXR1cCh0ZXh0KS5maW5kX3NlbGVjdGlvbih0ZXh0KQogCisKIGNsYXNzIFNlYXJjaERpYWxvZyhTZWFyY2hEaWFsb2dCYXNlKToKIAogICAgIGRlZiBjcmVhdGVfd2lkZ2V0cyhzZWxmKToKQEAgLTUxLDcgKzUyLDcgQEAKICAgICAgICAgICAgICAgICBzZWxmaXJzdCA9IHRleHQuaW5kZXgoInNlbC5maXJzdCIpCiAgICAgICAgICAgICAgICAgc2VsbGFzdCA9IHRleHQuaW5kZXgoInNlbC5sYXN0IikKICAgICAgICAgICAgICAgICBpZiBzZWxmaXJzdCA9PSBmaXJzdCBhbmQgc2VsbGFzdCA9PSBsYXN0OgotICAgICAgICAgICAgICAgICAgICB0ZXh0LmJlbGwoKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmJlbGwoKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgICAgIGV4Y2VwdCBUY2xFcnJvcjoKICAgICAgICAgICAgICAgICBwYXNzCkBAIC02MSw3ICs2Miw3IEBACiAgICAgICAgICAgICB0ZXh0LnNlZSgiaW5zZXJ0IikKICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB0ZXh0LmJlbGwoKQorICAgICAgICAgICAgc2VsZi5iZWxsKCkKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCiAgICAgZGVmIGZpbmRfc2VsZWN0aW9uKHNlbGYsIHRleHQpOgpAQCAtNzIsMjYgKzczLDMwIEBACiAKIAogZGVmIF9zZWFyY2hfZGlhbG9nKHBhcmVudCk6ICAjIGh0ZXN0ICMKLSAgICAnJydEaXNwbGF5IHNlYXJjaCB0ZXN0IGJveC4nJycKKyAgICAiRGlzcGxheSBzZWFyY2ggdGVzdCBib3guIgorICAgIGZyb20gdGtpbnRlciBpbXBvcnQgVG9wbGV2ZWwsIFRleHQKKyAgICBmcm9tIHRraW50ZXIudHRrIGltcG9ydCBCdXR0b24KKwogICAgIGJveCA9IFRvcGxldmVsKHBhcmVudCkKICAgICBib3gudGl0bGUoIlRlc3QgU2VhcmNoRGlhbG9nIikKLSAgICB3aWR0aCwgaGVpZ2h0LCB4LCB5ID0gbGlzdChtYXAoaW50LCByZS5zcGxpdCgnW3grXScsIHBhcmVudC5nZW9tZXRyeSgpKSkpCi0gICAgYm94Lmdlb21ldHJ5KCIrJWQrJWQiJSh4LCB5ICsgMTUwKSkKKyAgICB4LCB5ID0gbWFwKGludCwgcGFyZW50Lmdlb21ldHJ5KCkuc3BsaXQoJysnKVsxOl0pCisgICAgYm94Lmdlb21ldHJ5KCIrJWQrJWQiICUgKHgsIHkgKyAxNzUpKQogICAgIHRleHQgPSBUZXh0KGJveCwgaW5hY3RpdmVzZWxlY3RiYWNrZ3JvdW5kPSdncmF5JykKICAgICB0ZXh0LnBhY2soKQogICAgIHRleHQuaW5zZXJ0KCJpbnNlcnQiLCJUaGlzIGlzIGEgc2FtcGxlIHN0cmluZy5cbiIqNSkKIAogICAgIGRlZiBzaG93X2ZpbmQoKToKLSAgICAgICAgdGV4dC50YWdfYWRkKFNFTCwgIjEuMCIsIEVORCkKKyAgICAgICAgdGV4dC50YWdfYWRkKCdzZWwnLCAnMS4wJywgJ2VuZCcpCiAgICAgICAgIF9zZXR1cCh0ZXh0KS5vcGVuKHRleHQpCi0gICAgICAgIHRleHQudGFnX3JlbW92ZShTRUwsICIxLjAiLCBFTkQpCisgICAgICAgIHRleHQudGFnX3JlbW92ZSgnc2VsJywgJzEuMCcsICdlbmQnKQogCiAgICAgYnV0dG9uID0gQnV0dG9uKGJveCwgdGV4dD0iU2VhcmNoIChzZWxlY3Rpb24gaWdub3JlZCkiLCBjb21tYW5kPXNob3dfZmluZCkKICAgICBidXR0b24ucGFjaygpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgaW1wb3J0IHVuaXR0ZXN0Ci0gICAgdW5pdHRlc3QubWFpbignaWRsZWxpYi5pZGxlX3Rlc3QudGVzdF9zZWFyY2hkaWFsb2cnLAorICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3Rfc2VhcmNoJywKICAgICAgICAgICAgICAgICAgIHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQorCiAgICAgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5odGVzdCBpbXBvcnQgcnVuCiAgICAgcnVuKF9zZWFyY2hfZGlhbG9nKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvU2VhcmNoRGlhbG9nQmFzZS5weSBiL0xpYi9pZGxlbGliL3NlYXJjaGJhc2UucHkKc2ltaWxhcml0eSBpbmRleCA4NiUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvU2VhcmNoRGlhbG9nQmFzZS5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvc2VhcmNoYmFzZS5weQppbmRleCA1ZmE4NGUyLi41ZjgxNzg1IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9TZWFyY2hEaWFsb2dCYXNlLnB5CisrKyBiL0xpYi9pZGxlbGliL3NlYXJjaGJhc2UucHkKQEAgLTEsNyArMSw4IEBACiAnJydEZWZpbmUgU2VhcmNoRGlhbG9nQmFzZSB1c2VkIGJ5IFNlYXJjaCwgUmVwbGFjZSwgYW5kIEdyZXAgZGlhbG9ncy4nJycKIAotZnJvbSB0a2ludGVyIGltcG9ydCAoVG9wbGV2ZWwsIEZyYW1lLCBFbnRyeSwgTGFiZWwsIEJ1dHRvbiwKLSAgICAgICAgICAgICAgICAgICAgIENoZWNrYnV0dG9uLCBSYWRpb2J1dHRvbikKK2Zyb20gdGtpbnRlciBpbXBvcnQgVG9wbGV2ZWwsIEZyYW1lCitmcm9tIHRraW50ZXIudHRrIGltcG9ydCBFbnRyeSwgTGFiZWwsIEJ1dHRvbiwgQ2hlY2tidXR0b24sIFJhZGlvYnV0dG9uCisKIAogY2xhc3MgU2VhcmNoRGlhbG9nQmFzZToKICAgICAnJydDcmVhdGUgbW9zdCBvZiBhIDMgb3IgNCByb3csIDMgY29sdW1uIHNlYXJjaCBkaWFsb2cuCkBAIC03OSw2ICs4MCw3IEBACiAgICAgICAgIHRvcC53bV90aXRsZShzZWxmLnRpdGxlKQogICAgICAgICB0b3Aud21faWNvbm5hbWUoc2VsZi5pY29uKQogICAgICAgICBzZWxmLnRvcCA9IHRvcAorICAgICAgICBzZWxmLmJlbGwgPSB0b3AuYmVsbAogCiAgICAgICAgIHNlbGYucm93ID0gMAogICAgICAgICBzZWxmLnRvcC5ncmlkX2NvbHVtbmNvbmZpZ3VyZSgwLCBwYWQ9Miwgd2VpZ2h0PTApCkBAIC0xMjUsNyArMTI3LDcgQEAKICAgICBkZWYgY3JlYXRlX29wdGlvbl9idXR0b25zKHNlbGYpOgogICAgICAgICAnJydSZXR1cm4gKGZpbGxlZCBmcmFtZSwgb3B0aW9ucykgZm9yIHRlc3RpbmcuCiAKLSAgICAgICAgT3B0aW9ucyBpcyBhIGxpc3Qgb2YgU2VhcmNoRW5naW5lIGJvb2xlYW52YXIsIGxhYmVsIHBhaXJzLgorICAgICAgICBPcHRpb25zIGlzIGEgbGlzdCBvZiBzZWFyY2hlbmdpbmUgYm9vbGVhbnZhciwgbGFiZWwgcGFpcnMuCiAgICAgICAgIEEgZ3JpZGRlZCBmcmFtZSBmcm9tIG1ha2VfZnJhbWUgaXMgZmlsbGVkIHdpdGggYSBDaGVja2J1dHRvbgogICAgICAgICBmb3IgZWFjaCBwYWlyLCBib3VuZCB0byB0aGUgdmFyLCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIGxhYmVsLgogICAgICAgICAnJycKQEAgLTEzNywxMCArMTM5LDggQEAKICAgICAgICAgaWYgc2VsZi5uZWVkd3JhcGJ1dHRvbjoKICAgICAgICAgICAgIG9wdGlvbnMuYXBwZW5kKChlbmdpbmUud3JhcHZhciwgIldyYXAgYXJvdW5kIikpCiAgICAgICAgIGZvciB2YXIsIGxhYmVsIGluIG9wdGlvbnM6Ci0gICAgICAgICAgICBidG4gPSBDaGVja2J1dHRvbihmcmFtZSwgYW5jaG9yPSJ3IiwgdmFyaWFibGU9dmFyLCB0ZXh0PWxhYmVsKQorICAgICAgICAgICAgYnRuID0gQ2hlY2tidXR0b24oZnJhbWUsIHZhcmlhYmxlPXZhciwgdGV4dD1sYWJlbCkKICAgICAgICAgICAgIGJ0bi5wYWNrKHNpZGU9ImxlZnQiLCBmaWxsPSJib3RoIikKLSAgICAgICAgICAgIGlmIHZhci5nZXQoKToKLSAgICAgICAgICAgICAgICBidG4uc2VsZWN0KCkKICAgICAgICAgcmV0dXJuIGZyYW1lLCBvcHRpb25zCiAKICAgICBkZWYgY3JlYXRlX290aGVyX2J1dHRvbnMoc2VsZik6CkBAIC0xNTMsMTEgKzE1Myw4IEBACiAgICAgICAgIHZhciA9IHNlbGYuZW5naW5lLmJhY2t2YXIKICAgICAgICAgb3RoZXJzID0gWygxLCAnVXAnKSwgKDAsICdEb3duJyldCiAgICAgICAgIGZvciB2YWwsIGxhYmVsIGluIG90aGVyczoKLSAgICAgICAgICAgIGJ0biA9IFJhZGlvYnV0dG9uKGZyYW1lLCBhbmNob3I9InciLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGU9dmFyLCB2YWx1ZT12YWwsIHRleHQ9bGFiZWwpCisgICAgICAgICAgICBidG4gPSBSYWRpb2J1dHRvbihmcmFtZSwgdmFyaWFibGU9dmFyLCB2YWx1ZT12YWwsIHRleHQ9bGFiZWwpCiAgICAgICAgICAgICBidG4ucGFjayhzaWRlPSJsZWZ0IiwgZmlsbD0iYm90aCIpCi0gICAgICAgICAgICBpZiB2YXIuZ2V0KCkgPT0gdmFsOgotICAgICAgICAgICAgICAgIGJ0bi5zZWxlY3QoKQogICAgICAgICByZXR1cm4gZnJhbWUsIG90aGVycwogCiAgICAgZGVmIG1ha2VfYnV0dG9uKHNlbGYsIGxhYmVsLCBjb21tYW5kLCBpc2RlZj0wKToKQEAgLTE3OCw3ICsxNzUsMjYgQEAKICAgICAgICAgYiA9IHNlbGYubWFrZV9idXR0b24oImNsb3NlIiwgc2VsZi5jbG9zZSkKICAgICAgICAgYi5sb3dlcigpCiAKKworY2xhc3MgX3NlYXJjaGJhc2UoU2VhcmNoRGlhbG9nQmFzZSk6ICAjIGh0ZXN0ICMKKyAgICAiQ3JlYXRlIGF1dG8tb3BlbmluZyBkaWFsb2cgd2l0aCBubyB0ZXh0IGNvbm5lY3Rpb24uIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCk6CisgICAgICAgIGltcG9ydCByZQorICAgICAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IHNlYXJjaGVuZ2luZQorCisgICAgICAgIHNlbGYucm9vdCA9IHBhcmVudAorICAgICAgICBzZWxmLmVuZ2luZSA9IHNlYXJjaGVuZ2luZS5nZXQocGFyZW50KQorICAgICAgICBzZWxmLmNyZWF0ZV93aWRnZXRzKCkKKyAgICAgICAgcHJpbnQocGFyZW50Lmdlb21ldHJ5KCkpCisgICAgICAgIHdpZHRoLGhlaWdodCwgeCx5ID0gbGlzdChtYXAoaW50LCByZS5zcGxpdCgnW3grXScsIHBhcmVudC5nZW9tZXRyeSgpKSkpCisgICAgICAgIHNlbGYudG9wLmdlb21ldHJ5KCIrJWQrJWQiICUgKHggKyA0MCwgeSArIDE3NSkpCisKKyAgICBkZWYgZGVmYXVsdF9jb21tYW5kKHNlbGYsIGR1bW15KTogcGFzcworCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIGltcG9ydCB1bml0dGVzdAotICAgIHVuaXR0ZXN0Lm1haW4oCi0gICAgICAgICdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X3NlYXJjaGRpYWxvZ2Jhc2UnLCB2ZXJib3NpdHk9MikKKyAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X3NlYXJjaGJhc2UnLCB2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKKworICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgorICAgIHJ1bihfc2VhcmNoYmFzZSkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1NlYXJjaEVuZ2luZS5weSBiL0xpYi9pZGxlbGliL3NlYXJjaGVuZ2luZS5weQpzaW1pbGFyaXR5IGluZGV4IDk5JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9TZWFyY2hFbmdpbmUucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3NlYXJjaGVuZ2luZS5weQppbmRleCAzNzg4M2JmLi4yNTNmMWIwIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9TZWFyY2hFbmdpbmUucHkKKysrIGIvTGliL2lkbGVsaWIvc2VhcmNoZW5naW5lLnB5CkBAIC0xLDUgKzEsNiBAQAogJycnRGVmaW5lIFNlYXJjaEVuZ2luZSBmb3Igc2VhcmNoIGRpYWxvZ3MuJycnCiBpbXBvcnQgcmUKKwogZnJvbSB0a2ludGVyIGltcG9ydCBTdHJpbmdWYXIsIEJvb2xlYW5WYXIsIFRjbEVycm9yCiBpbXBvcnQgdGtpbnRlci5tZXNzYWdlYm94IGFzIHRrTWVzc2FnZUJveAogCkBAIC0xNCw2ICsxNSw3IEBACiAgICAgICAgICMgVGhpcyBjcmVhdGVzIGEgY3ljbGUgdGhhdCBwZXJzaXN0cyB1bnRpbCByb290IGlzIGRlbGV0ZWQuCiAgICAgcmV0dXJuIHJvb3QuX3NlYXJjaGVuZ2luZQogCisKIGNsYXNzIFNlYXJjaEVuZ2luZToKICAgICAiIiJIYW5kbGVzIHNlYXJjaGluZyBhIHRleHQgd2lkZ2V0IGZvciBGaW5kLCBSZXBsYWNlLCBhbmQgR3JlcC4iIiIKIApAQCAtNTcsNyArNTksNyBAQAogCiAgICAgZGVmIHNldGNvb2tlZHBhdChzZWxmLCBwYXQpOgogICAgICAgICAiU2V0IHBhdHRlcm4gYWZ0ZXIgZXNjYXBpbmcgaWYgcmUuIgotICAgICAgICAjIGNhbGxlZCBvbmx5IGluIFNlYXJjaERpYWxvZy5weTogNjYKKyAgICAgICAgIyBjYWxsZWQgb25seSBpbiBzZWFyY2gucHk6IDY2CiAgICAgICAgIGlmIHNlbGYuaXNyZSgpOgogICAgICAgICAgICAgcGF0ID0gcmUuZXNjYXBlKHBhdCkKICAgICAgICAgc2VsZi5zZXRwYXQocGF0KQpAQCAtMTg2LDYgKzE4OCw3IEBACiAgICAgICAgICAgICBjb2wgPSBsZW4oY2hhcnMpIC0gMQogICAgICAgICByZXR1cm4gTm9uZQogCisKIGRlZiBzZWFyY2hfcmV2ZXJzZShwcm9nLCBjaGFycywgY29sKToKICAgICAnJydTZWFyY2ggYmFja3dhcmRzIGFuZCByZXR1cm4gYW4gcmUgbWF0Y2ggb2JqZWN0IG9yIE5vbmUuCiAKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1N0YWNrVmlld2VyLnB5IGIvTGliL2lkbGVsaWIvc3RhY2t2aWV3ZXIucHkKc2ltaWxhcml0eSBpbmRleCA4NiUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvU3RhY2tWaWV3ZXIucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3N0YWNrdmlld2VyLnB5CmluZGV4IGNjYzc1NWMuLjA2OThkZWYgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1N0YWNrVmlld2VyLnB5CisrKyBiL0xpYi9pZGxlbGliL3N0YWNrdmlld2VyLnB5CkBAIC0xLDEyICsxLDEyIEBACi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKIGltcG9ydCBsaW5lY2FjaGUKK2ltcG9ydCBvcwogaW1wb3J0IHJlCitpbXBvcnQgc3lzCisKIGltcG9ydCB0a2ludGVyIGFzIHRrCiAKLWZyb20gaWRsZWxpYi5UcmVlV2lkZ2V0IGltcG9ydCBUcmVlTm9kZSwgVHJlZUl0ZW0sIFNjcm9sbGVkQ2FudmFzCi1mcm9tIGlkbGVsaWIuT2JqZWN0QnJvd3NlciBpbXBvcnQgT2JqZWN0VHJlZUl0ZW0sIG1ha2Vfb2JqZWN0dHJlZWl0ZW0KLWZyb20gaWRsZWxpYi5QeVNoZWxsIGltcG9ydCBQeVNoZWxsRmlsZUxpc3QKK2Zyb20gaWRsZWxpYi5kZWJ1Z29iaiBpbXBvcnQgT2JqZWN0VHJlZUl0ZW0sIG1ha2Vfb2JqZWN0dHJlZWl0ZW0KK2Zyb20gaWRsZWxpYi50cmVlIGltcG9ydCBUcmVlTm9kZSwgVHJlZUl0ZW0sIFNjcm9sbGVkQ2FudmFzCiAKIGRlZiBTdGFja0Jyb3dzZXIocm9vdCwgZmxpc3Q9Tm9uZSwgdGI9Tm9uZSwgdG9wPU5vbmUpOgogICAgIGlmIHRvcCBpcyBOb25lOgpAQCAtMTcsNiArMTcsNyBAQAogICAgIG5vZGUgPSBUcmVlTm9kZShzYy5jYW52YXMsIE5vbmUsIGl0ZW0pCiAgICAgbm9kZS5leHBhbmQoKQogCisKIGNsYXNzIFN0YWNrVHJlZUl0ZW0oVHJlZUl0ZW0pOgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZsaXN0PU5vbmUsIHRiPU5vbmUpOgpAQCAtNTUsNiArNTYsNyBAQAogICAgICAgICAgICAgc3VibGlzdC5hcHBlbmQoaXRlbSkKICAgICAgICAgcmV0dXJuIHN1Ymxpc3QKIAorCiBjbGFzcyBGcmFtZVRyZWVJdGVtKFRyZWVJdGVtKToKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpbmZvLCBmbGlzdCk6CkBAIC05Niw2ICs5OCw3IEBACiAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShmaWxlbmFtZSk6CiAgICAgICAgICAgICAgICAgc2VsZi5mbGlzdC5nb3RvZmlsZWxpbmUoZmlsZW5hbWUsIGxpbmVubykKIAorCiBjbGFzcyBWYXJpYWJsZXNUcmVlSXRlbShPYmplY3RUcmVlSXRlbSk6CiAKICAgICBkZWYgR2V0VGV4dChzZWxmKToKQEAgLTEyMCwxNSArMTIzLDE0IEBACiAgICAgICAgICAgICBzdWJsaXN0LmFwcGVuZChpdGVtKQogICAgICAgICByZXR1cm4gc3VibGlzdAogCi0gICAgZGVmIGtleXMoc2VsZik6ICAjIHVudXNlZCwgbGVmdCBmb3IgcG9zc2libGUgM3JkIHBhcnR5IHVzZQotICAgICAgICByZXR1cm4gbGlzdChzZWxmLm9iamVjdC5rZXlzKCkpCiAKLWRlZiBfc3RhY2tfdmlld2VyKHBhcmVudCk6Ci0gICAgcm9vdCA9IHRrLlRrKCkKLSAgICByb290LnRpdGxlKCJUZXN0IFN0YWNrVmlld2VyIikKLSAgICB3aWR0aCwgaGVpZ2h0LCB4LCB5ID0gbGlzdChtYXAoaW50LCByZS5zcGxpdCgnW3grXScsIHBhcmVudC5nZW9tZXRyeSgpKSkpCi0gICAgcm9vdC5nZW9tZXRyeSgiKyVkKyVkIiUoeCwgeSArIDE1MCkpCi0gICAgZmxpc3QgPSBQeVNoZWxsRmlsZUxpc3Qocm9vdCkKK2RlZiBfc3RhY2tfdmlld2VyKHBhcmVudCk6ICAjIGh0ZXN0ICMKKyAgICBmcm9tIGlkbGVsaWIucHlzaGVsbCBpbXBvcnQgUHlTaGVsbEZpbGVMaXN0CisgICAgdG9wID0gdGsuVG9wbGV2ZWwocGFyZW50KQorICAgIHRvcC50aXRsZSgiVGVzdCBTdGFja1ZpZXdlciIpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIHRvcC5nZW9tZXRyeSgiKyVkKyVkIiAlICh4ICsgNTAsIHkgKyAxNzUpKQorICAgIGZsaXN0ID0gUHlTaGVsbEZpbGVMaXN0KHRvcCkKICAgICB0cnk6ICMgdG8gb2J0YWluIGEgdHJhY2ViYWNrIG9iamVjdAogICAgICAgICBpbnRlbnRpb25hbF9uYW1lX2Vycm9yCiAgICAgZXhjZXB0IE5hbWVFcnJvcjoKQEAgLTEzOSw3ICsxNDEsNyBAQAogICAgIHN5cy5sYXN0X3ZhbHVlID0gZXhjX3ZhbHVlCiAgICAgc3lzLmxhc3RfdHJhY2ViYWNrID0gZXhjX3RiCiAKLSAgICBTdGFja0Jyb3dzZXIocm9vdCwgZmxpc3Q9Zmxpc3QsIHRvcD1yb290LCB0Yj1leGNfdGIpCisgICAgU3RhY2tCcm93c2VyKHRvcCwgZmxpc3Q9Zmxpc3QsIHRvcD10b3AsIHRiPWV4Y190YikKIAogICAgICMgcmVzdG9yZSBzeXMgdG8gb3JpZ2luYWwgc3RhdGUKICAgICBkZWwgc3lzLmxhc3RfdHlwZQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvc3RhdHVzYmFyLnB5IGIvTGliL2lkbGVsaWIvc3RhdHVzYmFyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2MTg1MjgKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvaWRsZWxpYi9zdGF0dXNiYXIucHkKQEAgLTAsMCArMSw0NiBAQAorZnJvbSB0a2ludGVyIGltcG9ydCBGcmFtZSwgTGFiZWwKKworCitjbGFzcyBNdWx0aVN0YXR1c0JhcihGcmFtZSk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbWFzdGVyLCAqKmt3KToKKyAgICAgICAgRnJhbWUuX19pbml0X18oc2VsZiwgbWFzdGVyLCAqKmt3KQorICAgICAgICBzZWxmLmxhYmVscyA9IHt9CisKKyAgICBkZWYgc2V0X2xhYmVsKHNlbGYsIG5hbWUsIHRleHQ9JycsIHNpZGU9J2xlZnQnLCB3aWR0aD0wKToKKyAgICAgICAgaWYgbmFtZSBub3QgaW4gc2VsZi5sYWJlbHM6CisgICAgICAgICAgICBsYWJlbCA9IExhYmVsKHNlbGYsIGJvcmRlcndpZHRoPTAsIGFuY2hvcj0ndycpCisgICAgICAgICAgICBsYWJlbC5wYWNrKHNpZGU9c2lkZSwgcGFkeT0wLCBwYWR4PTQpCisgICAgICAgICAgICBzZWxmLmxhYmVsc1tuYW1lXSA9IGxhYmVsCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBsYWJlbCA9IHNlbGYubGFiZWxzW25hbWVdCisgICAgICAgIGlmIHdpZHRoICE9IDA6CisgICAgICAgICAgICBsYWJlbC5jb25maWcod2lkdGg9d2lkdGgpCisgICAgICAgIGxhYmVsLmNvbmZpZyh0ZXh0PXRleHQpCisKKworZGVmIF9tdWx0aXN0YXR1c19iYXIocGFyZW50KTogICMgaHRlc3QgIworICAgIGZyb20gdGtpbnRlciBpbXBvcnQgVG9wbGV2ZWwsIEZyYW1lLCBUZXh0LCBCdXR0b24KKyAgICB0b3AgPSBUb3BsZXZlbChwYXJlbnQpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIHRvcC5nZW9tZXRyeSgiKyVkKyVkIiAlKHgsIHkgKyAxNzUpKQorICAgIHRvcC50aXRsZSgiVGVzdCBtdWx0aXN0YXR1cyBiYXIiKQorICAgIGZyYW1lID0gRnJhbWUodG9wKQorICAgIHRleHQgPSBUZXh0KGZyYW1lLCBoZWlnaHQ9NSwgd2lkdGg9NDApCisgICAgdGV4dC5wYWNrKCkKKyAgICBtc2IgPSBNdWx0aVN0YXR1c0JhcihmcmFtZSkKKyAgICBtc2Iuc2V0X2xhYmVsKCJvbmUiLCAiaGVsbG8iKQorICAgIG1zYi5zZXRfbGFiZWwoInR3byIsICJ3b3JsZCIpCisgICAgbXNiLnBhY2soc2lkZT0nYm90dG9tJywgZmlsbD0neCcpCisKKyAgICBkZWYgY2hhbmdlKCk6CisgICAgICAgIG1zYi5zZXRfbGFiZWwoIm9uZSIsICJmb28iKQorICAgICAgICBtc2Iuc2V0X2xhYmVsKCJ0d28iLCAiYmFyIikKKworICAgIGJ1dHRvbiA9IEJ1dHRvbih0b3AsIHRleHQ9IlVwZGF0ZSBzdGF0dXMiLCBjb21tYW5kPWNoYW5nZSkKKyAgICBidXR0b24ucGFjayhzaWRlPSdib3R0b20nKQorICAgIGZyYW1lLnBhY2soKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgorICAgIHJ1bihfbXVsdGlzdGF0dXNfYmFyKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvdGFiYmVkcGFnZXMucHkgYi9MaWIvaWRsZWxpYi90YWJiZWRwYWdlcy5weQppbmRleCA5NjVmOWY4Li40MTg2ZmEyIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi90YWJiZWRwYWdlcy5weQorKysgYi9MaWIvaWRsZWxpYi90YWJiZWRwYWdlcy5weQpAQCAtMjg1LDYgKzI4NSw3IEBACiAgICAgICAgICAgICAjIHBsYWNlZCBoaWRlIGl0CiAgICAgICAgICAgICBzZWxmLnRhYl9zZXQubG93ZXIoKQogCisKIGNsYXNzIFRhYmJlZFBhZ2VTZXQoRnJhbWUpOgogICAgICIiIkEgVGtpbnRlciB0YWJiZWQtcGFuZSB3aWRnZXQuCiAKQEAgLTMwMiw2ICszMDMsNyBAQAogICAgIHJlbW92ZV9wYWdlKCkgbWV0aG9kcy4KIAogICAgICIiIgorCiAgICAgY2xhc3MgUGFnZShvYmplY3QpOgogICAgICAgICAiIiJBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBUYWJiZWRQYWdlU2V0J3MgcGFnZXMuCiAKQEAgLTQ2NywzMSArNDY5LDI5IEBACiAKICAgICAgICAgc2VsZi5fdGFiX3NldC5zZXRfc2VsZWN0ZWRfdGFiKHBhZ2VfbmFtZSkKIAotZGVmIF90YWJiZWRfcGFnZXMocGFyZW50KToKLSAgICAjIHRlc3QgZGlhbG9nCi0gICAgcm9vdD1UaygpCi0gICAgd2lkdGgsIGhlaWdodCwgeCwgeSA9IGxpc3QobWFwKGludCwgcmUuc3BsaXQoJ1t4K10nLCBwYXJlbnQuZ2VvbWV0cnkoKSkpKQotICAgIHJvb3QuZ2VvbWV0cnkoIislZCslZCIlKHgsIHkgKyAxNzUpKQotICAgIHJvb3QudGl0bGUoIlRlc3QgdGFiYmVkIHBhZ2VzIikKLSAgICB0YWJQYWdlPVRhYmJlZFBhZ2VTZXQocm9vdCwgcGFnZV9uYW1lcz1bJ0Zvb2JhcicsJ0JheiddLCBuX3Jvd3M9MCwKKworZGVmIF90YWJiZWRfcGFnZXMocGFyZW50KTogICMgaHRlc3QgIworICAgIHRvcD1Ub3BsZXZlbChwYXJlbnQpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIHRvcC5nZW9tZXRyeSgiKyVkKyVkIiAlICh4LCB5ICsgMTc1KSkKKyAgICB0b3AudGl0bGUoIlRlc3QgdGFiYmVkIHBhZ2VzIikKKyAgICB0YWJQYWdlPVRhYmJlZFBhZ2VTZXQodG9wLCBwYWdlX25hbWVzPVsnRm9vYmFyJywnQmF6J10sIG5fcm93cz0wLAogICAgICAgICAgICAgICAgICAgICAgICAgICBleHBhbmRfdGFicz1GYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgIHRhYlBhZ2UucGFjayhzaWRlPVRPUCwgZXhwYW5kPVRSVUUsIGZpbGw9Qk9USCkKICAgICBMYWJlbCh0YWJQYWdlLnBhZ2VzWydGb29iYXInXS5mcmFtZSwgdGV4dD0nRm9vJywgcGFkeT0yMCkucGFjaygpCiAgICAgTGFiZWwodGFiUGFnZS5wYWdlc1snRm9vYmFyJ10uZnJhbWUsIHRleHQ9J0JhcicsIHBhZHk9MjApLnBhY2soKQogICAgIExhYmVsKHRhYlBhZ2UucGFnZXNbJ0JheiddLmZyYW1lLCB0ZXh0PSdCYXonKS5wYWNrKCkKLSAgICBlbnRyeVBnTmFtZT1FbnRyeShyb290KQotICAgIGJ1dHRvbkFkZD1CdXR0b24ocm9vdCwgdGV4dD0nQWRkIFBhZ2UnLAorICAgIGVudHJ5UGdOYW1lPUVudHJ5KHRvcCkKKyAgICBidXR0b25BZGQ9QnV0dG9uKHRvcCwgdGV4dD0nQWRkIFBhZ2UnLAogICAgICAgICAgICAgY29tbWFuZD1sYW1iZGE6dGFiUGFnZS5hZGRfcGFnZShlbnRyeVBnTmFtZS5nZXQoKSkpCi0gICAgYnV0dG9uUmVtb3ZlPUJ1dHRvbihyb290LCB0ZXh0PSdSZW1vdmUgUGFnZScsCisgICAgYnV0dG9uUmVtb3ZlPUJ1dHRvbih0b3AsIHRleHQ9J1JlbW92ZSBQYWdlJywKICAgICAgICAgICAgIGNvbW1hbmQ9bGFtYmRhOnRhYlBhZ2UucmVtb3ZlX3BhZ2UoZW50cnlQZ05hbWUuZ2V0KCkpKQotICAgIGxhYmVsUGdOYW1lPUxhYmVsKHJvb3QsIHRleHQ9J25hbWUgb2YgcGFnZSB0byBhZGQvcmVtb3ZlOicpCisgICAgbGFiZWxQZ05hbWU9TGFiZWwodG9wLCB0ZXh0PSduYW1lIG9mIHBhZ2UgdG8gYWRkL3JlbW92ZTonKQogICAgIGJ1dHRvbkFkZC5wYWNrKHBhZHg9NSwgcGFkeT01KQogICAgIGJ1dHRvblJlbW92ZS5wYWNrKHBhZHg9NSwgcGFkeT01KQogICAgIGxhYmVsUGdOYW1lLnBhY2socGFkeD01KQogICAgIGVudHJ5UGdOYW1lLnBhY2socGFkeD01KQotICAgIHJvb3QubWFpbmxvb3AoKQotCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5odGVzdCBpbXBvcnQgcnVuCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi90ZXh0Vmlldy5weSBiL0xpYi9pZGxlbGliL3RleHR2aWV3LnB5CnNpbWlsYXJpdHkgaW5kZXggNzYlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL3RleHRWaWV3LnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi90ZXh0dmlldy5weQppbmRleCAxMmFjMzE5Li5hZGVlMzI2IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi90ZXh0Vmlldy5weQorKysgYi9MaWIvaWRsZWxpYi90ZXh0dmlldy5weQpAQCAtMSwxNCArMSwxNCBAQAogIiIiU2ltcGxlIHRleHQgYnJvd3NlciBmb3IgSURMRQogCiAiIiIKLQogZnJvbSB0a2ludGVyIGltcG9ydCAqCi1pbXBvcnQgdGtpbnRlci5tZXNzYWdlYm94IGFzIHRrTWVzc2FnZUJveAorZnJvbSB0a2ludGVyLnR0ayBpbXBvcnQgU2Nyb2xsYmFyCitmcm9tIHRraW50ZXIubWVzc2FnZWJveCBpbXBvcnQgc2hvd2Vycm9yCisKIAogY2xhc3MgVGV4dFZpZXdlcihUb3BsZXZlbCk6Ci0gICAgIiIiQSBzaW1wbGUgdGV4dCB2aWV3ZXIgZGlhbG9nIGZvciBJRExFCisgICAgIkEgc2ltcGxlIHRleHQgdmlld2VyIGRpYWxvZyBmb3IgSURMRS4iCiAKLSAgICAiIiIKICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50LCB0aXRsZSwgdGV4dCwgbW9kYWw9VHJ1ZSwgX2h0ZXN0PUZhbHNlKToKICAgICAgICAgIiIiU2hvdyB0aGUgZ2l2ZW4gdGV4dCBpbiBhIHNjcm9sbGFibGUgd2luZG93IHdpdGggYSAnY2xvc2UnIGJ1dHRvbgogCkBAIC0yMCwxMSArMjAsMTEgQEAKICAgICAgICAgIiIiCiAgICAgICAgIFRvcGxldmVsLl9faW5pdF9fKHNlbGYsIHBhcmVudCkKICAgICAgICAgc2VsZi5jb25maWd1cmUoYm9yZGVyd2lkdGg9NSkKLSAgICAgICAgIyBwbGFjZSBkaWFsb2cgYmVsb3cgcGFyZW50IGlmIHJ1bm5pbmcgaHRlc3QKKyAgICAgICAgIyBQbGFjZSBkaWFsb2cgYmVsb3cgcGFyZW50IGlmIHJ1bm5pbmcgaHRlc3QuCiAgICAgICAgIHNlbGYuZ2VvbWV0cnkoIj0lZHglZCslZCslZCIgJSAoNzUwLCA1MDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQud2luZm9fcm9vdHgoKSArIDEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LndpbmZvX3Jvb3R5KCkgKyAoMTAgaWYgbm90IF9odGVzdCBlbHNlIDEwMCkpKQotICAgICAgICAjZWxndWF2YXMgLSBjb25maWcgcGxhY2Vob2xkZXJzIHRpbCBjb25maWcgc3R1ZmYgY29tcGxldGVkCisgICAgICAgICMgVE9ETzogZ2V0IGZnL2JnIGZyb20gdGhlbWUuCiAgICAgICAgIHNlbGYuYmcgPSAnI2ZmZmZmZicKICAgICAgICAgc2VsZi5mZyA9ICcjMDAwMDAwJwogCkBAIC0zMyw5ICszMyw5IEBACiAgICAgICAgIHNlbGYucHJvdG9jb2woIldNX0RFTEVURV9XSU5ET1ciLCBzZWxmLk9rKQogICAgICAgICBzZWxmLnBhcmVudCA9IHBhcmVudAogICAgICAgICBzZWxmLnRleHRWaWV3LmZvY3VzX3NldCgpCi0gICAgICAgICNrZXkgYmluZGluZ3MgZm9yIHRoaXMgZGlhbG9nCi0gICAgICAgIHNlbGYuYmluZCgnPFJldHVybj4nLHNlbGYuT2spICNkaXNtaXNzIGRpYWxvZwotICAgICAgICBzZWxmLmJpbmQoJzxFc2NhcGU+JyxzZWxmLk9rKSAjZGlzbWlzcyBkaWFsb2cKKyAgICAgICAgIyBCaW5kIGtleXMgZm9yIGNsb3NpbmcgdGhpcyBkaWFsb2cuCisgICAgICAgIHNlbGYuYmluZCgnPFJldHVybj4nLHNlbGYuT2spCisgICAgICAgIHNlbGYuYmluZCgnPEVzY2FwZT4nLHNlbGYuT2spCiAgICAgICAgIHNlbGYudGV4dFZpZXcuaW5zZXJ0KDAuMCwgdGV4dCkKICAgICAgICAgc2VsZi50ZXh0Vmlldy5jb25maWcoc3RhdGU9RElTQUJMRUQpCiAKQEAgLTUwLDcgKzUwLDcgQEAKICAgICAgICAgc2VsZi5idXR0b25PayA9IEJ1dHRvbihmcmFtZUJ1dHRvbnMsIHRleHQ9J0Nsb3NlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPXNlbGYuT2ssIHRha2Vmb2N1cz1GQUxTRSkKICAgICAgICAgc2VsZi5zY3JvbGxiYXJWaWV3ID0gU2Nyb2xsYmFyKGZyYW1lVGV4dCwgb3JpZW50PVZFUlRJQ0FMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFrZWZvY3VzPUZBTFNFLCBoaWdobGlnaHR0aGlja25lc3M9MCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRha2Vmb2N1cz1GQUxTRSkKICAgICAgICAgc2VsZi50ZXh0VmlldyA9IFRleHQoZnJhbWVUZXh0LCB3cmFwPVdPUkQsIGhpZ2hsaWdodHRoaWNrbmVzcz0wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZz1zZWxmLmZnLCBiZz1zZWxmLmJnKQogICAgICAgICBzZWxmLnNjcm9sbGJhclZpZXcuY29uZmlnKGNvbW1hbmQ9c2VsZi50ZXh0Vmlldy55dmlldykKQEAgLTcyLDE0ICs3MiwxNCBAQAogICAgIHRyeToKICAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAncicsIGVuY29kaW5nPWVuY29kaW5nKSBhcyBmaWxlOgogICAgICAgICAgICAgY29udGVudHMgPSBmaWxlLnJlYWQoKQotICAgIGV4Y2VwdCBJT0Vycm9yOgotICAgICAgICB0a01lc3NhZ2VCb3guc2hvd2Vycm9yKHRpdGxlPSdGaWxlIExvYWQgRXJyb3InLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9J1VuYWJsZSB0byBsb2FkIGZpbGUgJXIgLicgJSBmaWxlbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQ9cGFyZW50KQorICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICBzaG93ZXJyb3IodGl0bGU9J0ZpbGUgTG9hZCBFcnJvcicsCisgICAgICAgICAgICAgICAgICBtZXNzYWdlPSdVbmFibGUgdG8gbG9hZCBmaWxlICVyIC4nICUgZmlsZW5hbWUsCisgICAgICAgICAgICAgICAgICBwYXJlbnQ9cGFyZW50KQogICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3IgYXMgZXJyOgotICAgICAgICB0a01lc3NhZ2VCb3guc2hvd2Vycm9yKHRpdGxlPSdVbmljb2RlIERlY29kZSBFcnJvcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT1zdHIoZXJyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQ9cGFyZW50KQorICAgICAgICBzaG93ZXJyb3IodGl0bGU9J1VuaWNvZGUgRGVjb2RlIEVycm9yJywKKyAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9c3RyKGVyciksCisgICAgICAgICAgICAgICAgICBwYXJlbnQ9cGFyZW50KQogICAgIGVsc2U6CiAgICAgICAgIHJldHVybiB2aWV3X3RleHQocGFyZW50LCB0aXRsZSwgY29udGVudHMsIG1vZGFsKQogCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9Ub29sVGlwLnB5IGIvTGliL2lkbGVsaWIvdG9vbHRpcC5weQpzaW1pbGFyaXR5IGluZGV4IDg2JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9Ub29sVGlwLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi90b29sdGlwLnB5CmluZGV4IDk2NDEwN2UuLjg0M2ZiNGEgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1Rvb2xUaXAucHkKKysrIGIvTGliL2lkbGVsaWIvdG9vbHRpcC5weQpAQCAtMSw0ICsxLDQgQEAKLSMgZ2VuZXJhbCBwdXJwb3NlICd0b29sdGlwJyByb3V0aW5lcyAtIGN1cnJlbnRseSB1bnVzZWQgaW4gaWRsZWZvcmsKKyMgZ2VuZXJhbCBwdXJwb3NlICd0b29sdGlwJyByb3V0aW5lcyAtIGN1cnJlbnRseSB1bnVzZWQgaW4gaWRsZWxpYgogIyAoYWx0aG91Z2ggdGhlICdjYWxsdGlwcycgZXh0ZW5zaW9uIGlzIHBhcnRseSBiYXNlZCBvbiB0aGlzIGNvZGUpCiAjIG1heSBiZSB1c2VmdWwgZm9yIHNvbWUgcHVycG9zZXMgaW4gKG9yIGFsbW9zdCBpbiA7KSB0aGUgY3VycmVudCBwcm9qZWN0IHNjb3BlCiAjIElkZWFzIGdsZWFuZWQgZnJvbSBQeVNvbApAQCAtNzYsMjEgKzc2LDIwIEBACiAgICAgICAgIGZvciBpdGVtIGluIHNlbGYuaXRlbXM6CiAgICAgICAgICAgICBsaXN0Ym94Lmluc2VydChFTkQsIGl0ZW0pCiAKLWRlZiBfdG9vbHRpcChwYXJlbnQpOgotICAgIHJvb3QgPSBUaygpCi0gICAgcm9vdC50aXRsZSgiVGVzdCB0b29sdGlwIikKLSAgICB3aWR0aCwgaGVpZ2h0LCB4LCB5ID0gbGlzdChtYXAoaW50LCByZS5zcGxpdCgnW3grXScsIHBhcmVudC5nZW9tZXRyeSgpKSkpCi0gICAgcm9vdC5nZW9tZXRyeSgiKyVkKyVkIiUoeCwgeSArIDE1MCkpCi0gICAgbGFiZWwgPSBMYWJlbChyb290LCB0ZXh0PSJQbGFjZSB5b3VyIG1vdXNlIG92ZXIgYnV0dG9ucyIpCitkZWYgX3Rvb2x0aXAocGFyZW50KTogICMgaHRlc3QgIworICAgIHRvcCA9IFRvcGxldmVsKHBhcmVudCkKKyAgICB0b3AudGl0bGUoIlRlc3QgdG9vbHRpcCIpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIHRvcC5nZW9tZXRyeSgiKyVkKyVkIiAlICh4LCB5ICsgMTUwKSkKKyAgICBsYWJlbCA9IExhYmVsKHRvcCwgdGV4dD0iUGxhY2UgeW91ciBtb3VzZSBvdmVyIGJ1dHRvbnMiKQogICAgIGxhYmVsLnBhY2soKQotICAgIGJ1dHRvbjEgPSBCdXR0b24ocm9vdCwgdGV4dD0iQnV0dG9uIDEiKQotICAgIGJ1dHRvbjIgPSBCdXR0b24ocm9vdCwgdGV4dD0iQnV0dG9uIDIiKQorICAgIGJ1dHRvbjEgPSBCdXR0b24odG9wLCB0ZXh0PSJCdXR0b24gMSIpCisgICAgYnV0dG9uMiA9IEJ1dHRvbih0b3AsIHRleHQ9IkJ1dHRvbiAyIikKICAgICBidXR0b24xLnBhY2soKQogICAgIGJ1dHRvbjIucGFjaygpCiAgICAgVG9vbFRpcChidXR0b24xLCAiVGhpcyBpcyB0b29sdGlwIHRleHQgZm9yIGJ1dHRvbjEuIikKICAgICBMaXN0Ym94VG9vbFRpcChidXR0b24yLCBbIlRoaXMgaXMiLCJtdWx0aXBsZSBsaW5lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidG9vbHRpcCB0ZXh0IiwiZm9yIGJ1dHRvbjIiXSkKLSAgICByb290Lm1haW5sb29wKCkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lmh0ZXN0IGltcG9ydCBydW4KZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1RyZWVXaWRnZXQucHkgYi9MaWIvaWRsZWxpYi90cmVlLnB5CnNpbWlsYXJpdHkgaW5kZXggOTYlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1RyZWVXaWRnZXQucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3RyZWUucHkKaW5kZXggYTE5NTc4Zi4uMjkyY2UzNiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvVHJlZVdpZGdldC5weQorKysgYi9MaWIvaWRsZWxpYi90cmVlLnB5CkBAIC0xNSwxMCArMTUsMTIgQEAKICMgLSBvcHRpbWl6ZSB0cmVlIHJlZHJhdyBhZnRlciBleHBhbmQgb2Ygc3Vibm9kZQogCiBpbXBvcnQgb3MKLWZyb20gdGtpbnRlciBpbXBvcnQgKgogCi1mcm9tIGlkbGVsaWIgaW1wb3J0IFpvb21IZWlnaHQKLWZyb20gaWRsZWxpYi5jb25maWdIYW5kbGVyIGltcG9ydCBpZGxlQ29uZgorZnJvbSB0a2ludGVyIGltcG9ydCAqCitmcm9tIHRraW50ZXIudHRrIGltcG9ydCBTY3JvbGxiYXIKKworZnJvbSBpZGxlbGliLmNvbmZpZyBpbXBvcnQgaWRsZUNvbmYKK2Zyb20gaWRsZWxpYiBpbXBvcnQgem9vbWhlaWdodAogCiBJQ09ORElSID0gIkljb25zIgogCkBAIC00NDUsMjIgKzQ0NywyMSBAQAogICAgICAgICBzZWxmLmNhbnZhcy55dmlld19zY3JvbGwoMSwgInVuaXQiKQogICAgICAgICByZXR1cm4gImJyZWFrIgogICAgIGRlZiB6b29tX2hlaWdodChzZWxmLCBldmVudCk6Ci0gICAgICAgIFpvb21IZWlnaHQuem9vbV9oZWlnaHQoc2VsZi5tYXN0ZXIpCisgICAgICAgIHpvb21oZWlnaHQuem9vbV9oZWlnaHQoc2VsZi5tYXN0ZXIpCiAgICAgICAgIHJldHVybiAiYnJlYWsiCiAKIAotZGVmIF90cmVlX3dpZGdldChwYXJlbnQpOgotICAgIHJvb3QgPSBUaygpCi0gICAgcm9vdC50aXRsZSgiVGVzdCBUcmVlV2lkZ2V0IikKLSAgICB3aWR0aCwgaGVpZ2h0LCB4LCB5ID0gbGlzdChtYXAoaW50LCByZS5zcGxpdCgnW3grXScsIHBhcmVudC5nZW9tZXRyeSgpKSkpCi0gICAgcm9vdC5nZW9tZXRyeSgiKyVkKyVkIiUoeCwgeSArIDE1MCkpCi0gICAgc2MgPSBTY3JvbGxlZENhbnZhcyhyb290LCBiZz0id2hpdGUiLCBoaWdobGlnaHR0aGlja25lc3M9MCwgdGFrZWZvY3VzPTEpCitkZWYgX3RyZWVfd2lkZ2V0KHBhcmVudCk6ICAjIGh0ZXN0ICMKKyAgICB0b3AgPSBUb3BsZXZlbChwYXJlbnQpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIHRvcC5nZW9tZXRyeSgiKyVkKyVkIiAlICh4KzUwLCB5KzE3NSkpCisgICAgc2MgPSBTY3JvbGxlZENhbnZhcyh0b3AsIGJnPSJ3aGl0ZSIsIGhpZ2hsaWdodHRoaWNrbmVzcz0wLCB0YWtlZm9jdXM9MSkKICAgICBzYy5mcmFtZS5wYWNrKGV4cGFuZD0xLCBmaWxsPSJib3RoIiwgc2lkZT1MRUZUKQotICAgIGl0ZW0gPSBGaWxlVHJlZUl0ZW0ob3MuZ2V0Y3dkKCkpCisgICAgaXRlbSA9IEZpbGVUcmVlSXRlbShJQ09ORElSKQogICAgIG5vZGUgPSBUcmVlTm9kZShzYy5jYW52YXMsIE5vbmUsIGl0ZW0pCiAgICAgbm9kZS5leHBhbmQoKQotICAgIHJvb3QubWFpbmxvb3AoKQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgICMgdGVzdF90cmVlIGlzIGN1cnJlbnRseSBhIGNvcHkgb2YgdGhpcwogICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgogICAgIHJ1bihfdHJlZV93aWRnZXQpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9VbmRvRGVsZWdhdG9yLnB5IGIvTGliL2lkbGVsaWIvdW5kby5weQpzaW1pbGFyaXR5IGluZGV4IDk1JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9VbmRvRGVsZWdhdG9yLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi91bmRvLnB5CmluZGV4IDFjMjUwMmQuLjQzMzJmMTAgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1VuZG9EZWxlZ2F0b3IucHkKKysrIGIvTGliL2lkbGVsaWIvdW5kby5weQpAQCAtMSw3ICsxLDkgQEAKIGltcG9ydCBzdHJpbmcKLWZyb20gdGtpbnRlciBpbXBvcnQgKgogCi1mcm9tIGlkbGVsaWIuRGVsZWdhdG9yIGltcG9ydCBEZWxlZ2F0b3IKK2Zyb20gaWRsZWxpYi5kZWxlZ2F0b3IgaW1wb3J0IERlbGVnYXRvcgorCisjIHRraW50dGVyIGltcG9ydCBub3QgbmVlZGVkIGJlY2F1c2UgbW9kdWxlIGRvZXMgbm90IGNyZWF0ZSB3aWRnZXRzLAorIyBhbHRob3VnaCBtYW55IG1ldGhvZHMgb3BlcmF0ZSBvbiB0ZXh0IHdpZGdldCBhcmd1bWVudHMuCiAKICMkIGV2ZW50IDw8cmVkbz4+CiAjJCB3aW4gPENvbnRyb2wteT4KQEAgLTE1OCw3ICsxNjAsNiBAQAogCiAKIGNsYXNzIENvbW1hbmQ6Ci0KICAgICAjIEJhc2UgY2xhc3MgZm9yIFVuZG9hYmxlIGNvbW1hbmRzCiAKICAgICB0YWdzID0gTm9uZQpAQCAtMjA0LDcgKzIwNSw2IEBACiAKIAogY2xhc3MgSW5zZXJ0Q29tbWFuZChDb21tYW5kKToKLQogICAgICMgVW5kb2FibGUgaW5zZXJ0IGNvbW1hbmQKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpbmRleDEsIGNoYXJzLCB0YWdzPU5vbmUpOgpAQCAtMjYyLDcgKzI2Miw2IEBACiAKIAogY2xhc3MgRGVsZXRlQ29tbWFuZChDb21tYW5kKToKLQogICAgICMgVW5kb2FibGUgZGVsZXRlIGNvbW1hbmQKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpbmRleDEsIGluZGV4Mj1Ob25lKToKQEAgLTI5Nyw4ICsyOTYsOCBAQAogICAgICAgICB0ZXh0LnNlZSgnaW5zZXJ0JykKICAgICAgICAgIyNzeXMuX19zdGRlcnJfXy53cml0ZSgidW5kbzogJXNcbiIgJSBzZWxmKQogCi1jbGFzcyBDb21tYW5kU2VxdWVuY2UoQ29tbWFuZCk6CiAKK2NsYXNzIENvbW1hbmRTZXF1ZW5jZShDb21tYW5kKToKICAgICAjIFdyYXBwZXIgZm9yIGEgc2VxdWVuY2Ugb2YgdW5kb2FibGUgY21kcyB0byBiZSB1bmRvbmUvcmVkb25lCiAgICAgIyBhcyBhIHVuaXQKIApAQCAtMzM4LDEzICszMzcsMTIgQEAKIAogCiBkZWYgX3VuZG9fZGVsZWdhdG9yKHBhcmVudCk6ICAjIGh0ZXN0ICMKLSAgICBpbXBvcnQgcmUKLSAgICBpbXBvcnQgdGtpbnRlciBhcyB0awotICAgIGZyb20gaWRsZWxpYi5QZXJjb2xhdG9yIGltcG9ydCBQZXJjb2xhdG9yCi0gICAgdW5kb3dpbiA9IHRrLlRvcGxldmVsKCkKKyAgICBmcm9tIHRraW50ZXIgaW1wb3J0IFRvcGxldmVsLCBUZXh0LCBCdXR0b24KKyAgICBmcm9tIGlkbGVsaWIucGVyY29sYXRvciBpbXBvcnQgUGVyY29sYXRvcgorICAgIHVuZG93aW4gPSBUb3BsZXZlbChwYXJlbnQpCiAgICAgdW5kb3dpbi50aXRsZSgiVGVzdCBVbmRvRGVsZWdhdG9yIikKLSAgICB3aWR0aCwgaGVpZ2h0LCB4LCB5ID0gbGlzdChtYXAoaW50LCByZS5zcGxpdCgnW3grXScsIHBhcmVudC5nZW9tZXRyeSgpKSkpCi0gICAgdW5kb3dpbi5nZW9tZXRyeSgiKyVkKyVkIiUoeCwgeSArIDE1MCkpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIHVuZG93aW4uZ2VvbWV0cnkoIislZCslZCIgJSAoeCwgeSArIDE3NSkpCiAKICAgICB0ZXh0ID0gVGV4dCh1bmRvd2luLCBoZWlnaHQ9MTApCiAgICAgdGV4dC5wYWNrKCkKQEAgLTM2Miw3ICszNjAsNyBAQAogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIGltcG9ydCB1bml0dGVzdAotICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3RfdW5kb2RlbGVnYXRvcicsIHZlcmJvc2l0eT0yLAotICAgICAgICAgICAgICAgICAgZXhpdD1GYWxzZSkKKyAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X3VuZG8nLCB2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKKwogICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgogICAgIHJ1bihfdW5kb19kZWxlZ2F0b3IpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9XaW5kb3dMaXN0LnB5IGIvTGliL2lkbGVsaWIvd2luZG93cy5weQpzaW1pbGFyaXR5IGluZGV4IDk5JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9XaW5kb3dMaXN0LnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi93aW5kb3dzLnB5CmluZGV4IGJjNzQzNDguLmEzZjg1OGEgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1dpbmRvd0xpc3QucHkKKysrIGIvTGliL2lkbGVsaWIvd2luZG93cy5weQpAQCAtMSw1ICsxLDYgQEAKIGZyb20gdGtpbnRlciBpbXBvcnQgKgogCisKIGNsYXNzIFdpbmRvd0xpc3Q6CiAKICAgICBkZWYgX19pbml0X18oc2VsZik6CkBAIC00OCw2ICs0OSw3IEBACiAgICAgICAgICAgICAgICAgdCwgdiwgdGIgPSBzeXMuZXhjX2luZm8oKQogICAgICAgICAgICAgICAgIHByaW50KCJ3YXJuaW5nOiBjYWxsYmFjayBmYWlsZWQgaW4gV2luZG93TGlzdCIsIHQsICI6IiwgdikKIAorCiByZWdpc3RyeSA9IFdpbmRvd0xpc3QoKQogCiBhZGRfd2luZG93c190b19tZW51ID0gcmVnaXN0cnkuYWRkX3dpbmRvd3NfdG9fbWVudQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvWm9vbUhlaWdodC5weSBiL0xpYi9pZGxlbGliL3pvb21oZWlnaHQucHkKc2ltaWxhcml0eSBpbmRleCA5NCUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvWm9vbUhlaWdodC5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvem9vbWhlaWdodC5weQppbmRleCBhNWQ2NzllLi5hYTRhNDI3IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9ab29tSGVpZ2h0LnB5CisrKyBiL0xpYi9pZGxlbGliL3pvb21oZWlnaHQucHkKQEAgLTMsNyArMyw4IEBACiBpbXBvcnQgcmUKIGltcG9ydCBzeXMKIAotZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3hTdXBwb3J0Citmcm9tIGlkbGVsaWIgaW1wb3J0IG1hY29zeAorCiAKIGNsYXNzIFpvb21IZWlnaHQ6CiAKQEAgLTIwLDYgKzIxLDcgQEAKICAgICAgICAgdG9wID0gc2VsZi5lZGl0d2luLnRvcAogICAgICAgICB6b29tX2hlaWdodCh0b3ApCiAKKwogZGVmIHpvb21faGVpZ2h0KHRvcCk6CiAgICAgZ2VvbSA9IHRvcC53bV9nZW9tZXRyeSgpCiAgICAgbSA9IHJlLm1hdGNoKHIiKFxkKyl4KFxkKylcKygtP1xkKylcKygtP1xkKykiLCBnZW9tKQpAQCAtMzIsNyArMzQsNyBAQAogICAgICAgICBuZXd5ID0gMAogICAgICAgICBuZXdoZWlnaHQgPSBuZXdoZWlnaHQgLSA3MgogCi0gICAgZWxpZiBtYWNvc3hTdXBwb3J0LmlzQXF1YVRrKCk6CisgICAgZWxpZiBtYWNvc3guaXNBcXVhVGsoKToKICAgICAgICAgIyBUaGUgJzg4JyBiZWxvdyBpcyBhIG1hZ2ljIG51bWJlciB0aGF0IGF2b2lkcyBwbGFjaW5nIHRoZSBib3R0b20KICAgICAgICAgIyBvZiB0aGUgd2luZG93IGJlbG93IHRoZSBwYW5lbCBvbiBteSBtYWNoaW5lLiBJIGRvbid0IGtub3cgaG93CiAgICAgICAgICMgdG8gY2FsY3VsYXRlIHRoZSBjb3JyZWN0IHZhbHVlIGZvciB0aGlzIHdpdGggdGtpbnRlci4KZGlmZiAtLWdpdCBhL0xpYi9pbWFwbGliLnB5IGIvTGliL2ltYXBsaWIucHkKaW5kZXggNGU4YTRiYi4uY2FkNTA4YSAxMDA2NDQKLS0tIGEvTGliL2ltYXBsaWIucHkKKysrIGIvTGliL2ltYXBsaWIucHkKQEAgLTExMSw3ICsxMTEsMTUgQEAKICMgTGl0ZXJhbCBpcyBubyBsb25nZXIgdXNlZDsga2VwdCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KIExpdGVyYWwgPSByZS5jb21waWxlKGJyJy4qeyg/UDxzaXplPlxkKyl9JCcsIHJlLkFTQ0lJKQogTWFwQ1JMRiA9IHJlLmNvbXBpbGUoYnInXHJcbnxccnxcbicpCi1SZXNwb25zZV9jb2RlID0gcmUuY29tcGlsZShicidcWyg/UDx0eXBlPltBLVotXSspKCAoP1A8ZGF0YT5bXlxdXSopKT9cXScpCisjIFdlIG5vIGxvbmdlciBleGNsdWRlIHRoZSAnXScgY2hhcmFjdGVyIGZyb20gdGhlIGRhdGEgcG9ydGlvbiBvZiB0aGUgcmVzcG9uc2UKKyMgY29kZSwgZXZlbiB0aG91Z2ggaXQgdmlvbGF0ZXMgdGhlIFJGQy4gIFBvcHVsYXIgSU1BUCBzZXJ2ZXJzIHN1Y2ggYXMgR21haWwKKyMgYWxsb3cgZmxhZ3Mgd2l0aCAnXScsIGFuZCB0aGVyZSBhcmUgcHJvZ3JhbXMgKGluY2x1ZGluZyBpbWFwbGliISkgdGhhdCBjYW4KKyMgcHJvZHVjZSB0aGVtLiAgVGhlIHByb2JsZW0gd2l0aCB0aGlzIGlzIGlmIHRoZSAndGV4dCcgcG9ydGlvbiBvZiB0aGUgcmVzcG9uc2UKKyMgaW5jbHVkZXMgYSAnXScgd2UnbGwgcGFyc2UgdGhlIHJlc3BvbnNlIHdyb25nICh3aGljaCBpcyB0aGUgcG9pbnQgb2YgdGhlIFJGQworIyByZXN0cmljdGlvbikuICBIb3dldmVyLCB0aGF0IHNlZW1zIGxlc3MgbGlrZWx5IHRvIGJlIGEgcHJvYmxlbSBpbiBwcmFjdGljZQorIyB0aGFuIGJlaW5nIHVuYWJsZSB0byBjb3JyZWN0bHkgcGFyc2UgZmxhZ3MgdGhhdCBpbmNsdWRlICddJyBjaGFycywgd2hpY2gKKyMgd2FzIHJlcG9ydGVkIGFzIGEgcmVhbC13b3JsZCBwcm9ibGVtIGluIGlzc3VlICMyMTgxNS4KK1Jlc3BvbnNlX2NvZGUgPSByZS5jb21waWxlKGJyJ1xbKD9QPHR5cGU+W0EtWi1dKykoICg/UDxkYXRhPi4qKSk/XF0nKQogVW50YWdnZWRfcmVzcG9uc2UgPSByZS5jb21waWxlKGJyJ1wqICg/UDx0eXBlPltBLVotXSspKCAoP1A8ZGF0YT4uKikpPycpCiAjIFVudGFnZ2VkX3N0YXR1cyBpcyBubyBsb25nZXIgdXNlZDsga2VwdCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eQogVW50YWdnZWRfc3RhdHVzID0gcmUuY29tcGlsZSgKQEAgLTEyNCw3ICsxMzIsNyBAQAogCiBjbGFzcyBJTUFQNDoKIAotICAgICIiIklNQVA0IGNsaWVudCBjbGFzcy4KKyAgICByIiIiSU1BUDQgY2xpZW50IGNsYXNzLgogCiAgICAgSW5zdGFudGlhdGUgd2l0aDogSU1BUDQoW2hvc3RbLCBwb3J0XV0pCiAKQEAgLTEyNTksNyArMTI2NywxMCBAQAogICAgICAgICAgICAgaWYgc3NsX2NvbnRleHQgaXMgbm90IE5vbmUgYW5kIGNlcnRmaWxlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInNzbF9jb250ZXh0IGFuZCBjZXJ0ZmlsZSBhcmd1bWVudHMgYXJlIG11dHVhbGx5ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleGNsdXNpdmUiKQotCisgICAgICAgICAgICBpZiBrZXlmaWxlIGlzIG5vdCBOb25lIG9yIGNlcnRmaWxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oImtleWZpbGUgYW5kIGNlcnRmaWxlIGFyZSBkZXByZWNhdGVkLCB1c2UgYSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjdXN0b20gc3NsX2NvbnRleHQgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgICAgIHNlbGYua2V5ZmlsZSA9IGtleWZpbGUKICAgICAgICAgICAgIHNlbGYuY2VydGZpbGUgPSBjZXJ0ZmlsZQogICAgICAgICAgICAgaWYgc3NsX2NvbnRleHQgaXMgTm9uZToKQEAgLTE1MjcsNyArMTUzOCw3IEBACiAgICAgKCdzZWxlY3QnLCAoJy90bXAveXl6IDInLCkpLAogICAgICgnc2VhcmNoJywgKE5vbmUsICdTVUJKRUNUJywgJ3Rlc3QnKSksCiAgICAgKCdmZXRjaCcsICgnMScsICcoRkxBR1MgSU5URVJOQUxEQVRFIFJGQzgyMiknKSksCi0gICAgKCdzdG9yZScsICgnMScsICdGTEFHUycsICcoXERlbGV0ZWQpJykpLAorICAgICgnc3RvcmUnLCAoJzEnLCAnRkxBR1MnLCByJyhcRGVsZXRlZCknKSksCiAgICAgKCduYW1lc3BhY2UnLCAoKSksCiAgICAgKCdleHB1bmdlJywgKCkpLAogICAgICgncmVjZW50JywgKCkpLApkaWZmIC0tZ2l0IGEvTGliL2ltZ2hkci5weSBiL0xpYi9pbWdoZHIucHkKaW5kZXggYjI2NzkyNS4uNzZlOGFiYiAxMDA2NDQKLS0tIGEvTGliL2ltZ2hkci5weQorKysgYi9MaWIvaW1naGRyLnB5CkBAIC0xLDUgKzEsNyBAQAogIiIiUmVjb2duaXplIGltYWdlIGZpbGUgZm9ybWF0cyBiYXNlZCBvbiB0aGVpciBmaXJzdCBmZXcgYnl0ZXMuIiIiCiAKK2Zyb20gb3MgaW1wb3J0IFBhdGhMaWtlCisKIF9fYWxsX18gPSBbIndoYXQiXQogCiAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSMKQEAgLTEwLDcgKzEyLDcgQEAKICAgICBmID0gTm9uZQogICAgIHRyeToKICAgICAgICAgaWYgaCBpcyBOb25lOgotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShmaWxlLCBzdHIpOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShmaWxlLCAoc3RyLCBQYXRoTGlrZSkpOgogICAgICAgICAgICAgICAgIGYgPSBvcGVuKGZpbGUsICdyYicpCiAgICAgICAgICAgICAgICAgaCA9IGYucmVhZCgzMikKICAgICAgICAgICAgIGVsc2U6CmRpZmYgLS1naXQgYS9MaWIvaW1wLnB5IGIvTGliL2ltcC5weQppbmRleCBlMjY0MzkxLi43ODFmZjIzIDEwMDY0NAotLS0gYS9MaWIvaW1wLnB5CisrKyBiL0xpYi9pbXAucHkKQEAgLTMwLDcgKzMwLDcgQEAKIAogd2FybmluZ3Mud2FybigidGhlIGltcCBtb2R1bGUgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgaW1wb3J0bGliOyAiCiAgICAgICAgICAgICAgICJzZWUgdGhlIG1vZHVsZSdzIGRvY3VtZW50YXRpb24gZm9yIGFsdGVybmF0aXZlIHVzZXMiLAotICAgICAgICAgICAgICBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCisgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQogCiAjIERFUFJFQ0FURUQKIFNFQVJDSF9FUlJPUiA9IDAKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcC5weSBiL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcC5weQppbmRleCA5ZWVjYmZlLi5hNTMxYTAzIDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkKKysrIGIvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5CkBAIC0zNiwyMyArMzYsNiBAQAogICAgIHJldHVybiB0eXBlKHN5cykobmFtZSkKIAogCi1jbGFzcyBfTWFuYWdlUmVsb2FkOgotCi0gICAgIiIiTWFuYWdlcyB0aGUgcG9zc2libGUgY2xlYW4tdXAgb2Ygc3lzLm1vZHVsZXMgZm9yIGxvYWRfbW9kdWxlKCkuIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSk6Ci0gICAgICAgIHNlbGYuX25hbWUgPSBuYW1lCi0KLSAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgotICAgICAgICBzZWxmLl9pc19yZWxvYWQgPSBzZWxmLl9uYW1lIGluIHN5cy5tb2R1bGVzCi0KLSAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MpOgotICAgICAgICBpZiBhbnkoYXJnIGlzIG5vdCBOb25lIGZvciBhcmcgaW4gYXJncykgYW5kIG5vdCBzZWxmLl9pc19yZWxvYWQ6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZGVsIHN5cy5tb2R1bGVzW3NlbGYuX25hbWVdCi0gICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICAgICAgcGFzcwotCiAjIE1vZHVsZS1sZXZlbCBsb2NraW5nICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKICMgQSBkaWN0IG1hcHBpbmcgbW9kdWxlIG5hbWVzIHRvIHdlYWtyZWZzIG9mIF9Nb2R1bGVMb2NrIGluc3RhbmNlcwpAQCAtMjcwLDcgKzI1Myw3IEBACiAjIE1vZHVsZSBzcGVjaWZpY2F0aW9ucyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKIGRlZiBfbW9kdWxlX3JlcHIobW9kdWxlKToKLSAgICAjIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBNb2R1bGVUeXBlX19yZXByX18oKS4KKyAgICAjIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBNb2R1bGVUeXBlLl9fcmVwcl9fKCkuCiAgICAgbG9hZGVyID0gZ2V0YXR0cihtb2R1bGUsICdfX2xvYWRlcl9fJywgTm9uZSkKICAgICBpZiBoYXNhdHRyKGxvYWRlciwgJ21vZHVsZV9yZXByJyk6CiAgICAgICAgICMgQXMgc29vbiBhcyBCdWlsdGluSW1wb3J0ZXIsIEZyb3plbkltcG9ydGVyLCBhbmQgTmFtZXNwYWNlTG9hZGVyCkBAIC01NzYsOSArNTU5LDggQEAKICAgICAgICAgIyBtb2R1bGUgY3JlYXRpb24gc2hvdWxkIGJlIHVzZWQuCiAgICAgICAgIG1vZHVsZSA9IHNwZWMubG9hZGVyLmNyZWF0ZV9tb2R1bGUoc3BlYykKICAgICBlbGlmIGhhc2F0dHIoc3BlYy5sb2FkZXIsICdleGVjX21vZHVsZScpOgotICAgICAgICBfd2FybmluZ3Mud2Fybignc3RhcnRpbmcgaW4gUHl0aG9uIDMuNiwgbG9hZGVycyBkZWZpbmluZyBleGVjX21vZHVsZSgpICcKLSAgICAgICAgICAgICAgICAgICAgICAgJ211c3QgYWxzbyBkZWZpbmUgY3JlYXRlX21vZHVsZSgpJywKLSAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCisgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdsb2FkZXJzIHRoYXQgZGVmaW5lIGV4ZWNfbW9kdWxlKCkgJworICAgICAgICAgICAgICAgICAgICAgICAgICAnbXVzdCBhbHNvIGRlZmluZSBjcmVhdGVfbW9kdWxlKCknKQogICAgIGlmIG1vZHVsZSBpcyBOb25lOgogICAgICAgICBtb2R1bGUgPSBfbmV3X21vZHVsZShzcGVjLm5hbWUpCiAgICAgX2luaXRfbW9kdWxlX2F0dHJzKHNwZWMsIG1vZHVsZSkKQEAgLTYwMyw3ICs1ODUsNyBAQAogCiAjIFVzZWQgYnkgaW1wb3J0bGliLnJlbG9hZCgpIGFuZCBfbG9hZF9tb2R1bGVfc2hpbSgpLgogZGVmIF9leGVjKHNwZWMsIG1vZHVsZSk6Ci0gICAgIiIiRXhlY3V0ZSB0aGUgc3BlYyBpbiBhbiBleGlzdGluZyBtb2R1bGUncyBuYW1lc3BhY2UuIiIiCisgICAgIiIiRXhlY3V0ZSB0aGUgc3BlYydzIHNwZWNpZmllZCBtb2R1bGUgaW4gYW4gZXhpc3RpbmcgbW9kdWxlJ3MgbmFtZXNwYWNlLiIiIgogICAgIG5hbWUgPSBzcGVjLm5hbWUKICAgICBfaW1wLmFjcXVpcmVfbG9jaygpCiAgICAgd2l0aCBfTW9kdWxlTG9ja01hbmFnZXIobmFtZSk6CkBAIC04NzcsMTQgKzg1OSwyMSBAQAogCiAKIGRlZiBfZmluZF9zcGVjKG5hbWUsIHBhdGgsIHRhcmdldD1Ob25lKToKLSAgICAiIiJGaW5kIGEgbW9kdWxlJ3MgbG9hZGVyLiIiIgotICAgIGlmIHN5cy5tZXRhX3BhdGggaXMgbm90IE5vbmUgYW5kIG5vdCBzeXMubWV0YV9wYXRoOgorICAgICIiIkZpbmQgYSBtb2R1bGUncyBzcGVjLiIiIgorICAgIG1ldGFfcGF0aCA9IHN5cy5tZXRhX3BhdGgKKyAgICBpZiBtZXRhX3BhdGggaXMgTm9uZToKKyAgICAgICAgIyBQeUltcG9ydF9DbGVhbnVwKCkgaXMgcnVubmluZyBvciBoYXMgYmVlbiBjYWxsZWQuCisgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJzeXMubWV0YV9wYXRoIGlzIE5vbmUsIFB5dGhvbiBpcyBsaWtlbHkgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAic2h1dHRpbmcgZG93biIpCisKKyAgICBpZiBub3QgbWV0YV9wYXRoOgogICAgICAgICBfd2FybmluZ3Mud2Fybignc3lzLm1ldGFfcGF0aCBpcyBlbXB0eScsIEltcG9ydFdhcm5pbmcpCisKICAgICAjIFdlIGNoZWNrIHN5cy5tb2R1bGVzIGhlcmUgZm9yIHRoZSByZWxvYWQgY2FzZS4gIFdoaWxlIGEgcGFzc2VkLWluCiAgICAgIyB0YXJnZXQgd2lsbCB1c3VhbGx5IGluZGljYXRlIGEgcmVsb2FkIHRoZXJlIGlzIG5vIGd1YXJhbnRlZSwgd2hlcmVhcwogICAgICMgc3lzLm1vZHVsZXMgcHJvdmlkZXMgb25lLgogICAgIGlzX3JlbG9hZCA9IG5hbWUgaW4gc3lzLm1vZHVsZXMKLSAgICBmb3IgZmluZGVyIGluIHN5cy5tZXRhX3BhdGg6CisgICAgZm9yIGZpbmRlciBpbiBtZXRhX3BhdGg6CiAgICAgICAgIHdpdGggX0ltcG9ydExvY2tDb250ZXh0KCk6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgZmluZF9zcGVjID0gZmluZGVyLmZpbmRfc3BlYwpAQCAtOTI1LDYgKzkxNCw5IEBACiAgICAgaWYgbGV2ZWwgPiAwOgogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShwYWNrYWdlLCBzdHIpOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdfX3BhY2thZ2VfXyBub3Qgc2V0IHRvIGEgc3RyaW5nJykKKyAgICAgICAgZWxpZiBub3QgcGFja2FnZToKKyAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdhdHRlbXB0ZWQgcmVsYXRpdmUgaW1wb3J0IHdpdGggbm8ga25vd24gcGFyZW50ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYWNrYWdlJykKICAgICAgICAgZWxpZiBwYWNrYWdlIG5vdCBpbiBzeXMubW9kdWxlczoKICAgICAgICAgICAgIG1zZyA9ICgnUGFyZW50IG1vZHVsZSB7IXJ9IG5vdCBsb2FkZWQsIGNhbm5vdCBwZXJmb3JtIHJlbGF0aXZlICcKICAgICAgICAgICAgICAgICAgICAnaW1wb3J0JykKQEAgLTk1MCwxMCArOTQyLDEwIEBACiAgICAgICAgICAgICBwYXRoID0gcGFyZW50X21vZHVsZS5fX3BhdGhfXwogICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICBtc2cgPSAoX0VSUl9NU0cgKyAnOyB7IXJ9IGlzIG5vdCBhIHBhY2thZ2UnKS5mb3JtYXQobmFtZSwgcGFyZW50KQotICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobXNnLCBuYW1lPW5hbWUpIGZyb20gTm9uZQorICAgICAgICAgICAgcmFpc2UgTW9kdWxlTm90Rm91bmRFcnJvcihtc2csIG5hbWU9bmFtZSkgZnJvbSBOb25lCiAgICAgc3BlYyA9IF9maW5kX3NwZWMobmFtZSwgcGF0aCkKICAgICBpZiBzcGVjIGlzIE5vbmU6Ci0gICAgICAgIHJhaXNlIEltcG9ydEVycm9yKF9FUlJfTVNHLmZvcm1hdChuYW1lKSwgbmFtZT1uYW1lKQorICAgICAgICByYWlzZSBNb2R1bGVOb3RGb3VuZEVycm9yKF9FUlJfTVNHLmZvcm1hdChuYW1lKSwgbmFtZT1uYW1lKQogICAgIGVsc2U6CiAgICAgICAgIG1vZHVsZSA9IF9sb2FkX3VubG9ja2VkKHNwZWMpCiAgICAgaWYgcGFyZW50OgpAQCAtOTg5LDEwICs5ODEsMTEgQEAKICAgICAgICAgX2ltcC5yZWxlYXNlX2xvY2soKQogICAgICAgICBtZXNzYWdlID0gKCdpbXBvcnQgb2Yge30gaGFsdGVkOyAnCiAgICAgICAgICAgICAgICAgICAgJ05vbmUgaW4gc3lzLm1vZHVsZXMnLmZvcm1hdChuYW1lKSkKLSAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobWVzc2FnZSwgbmFtZT1uYW1lKQorICAgICAgICByYWlzZSBNb2R1bGVOb3RGb3VuZEVycm9yKG1lc3NhZ2UsIG5hbWU9bmFtZSkKICAgICBfbG9ja191bmxvY2tfbW9kdWxlKG5hbWUpCiAgICAgcmV0dXJuIG1vZHVsZQogCisKIGRlZiBfaGFuZGxlX2Zyb21saXN0KG1vZHVsZSwgZnJvbWxpc3QsIGltcG9ydF8pOgogICAgICIiIkZpZ3VyZSBvdXQgd2hhdCBfX2ltcG9ydF9fIHNob3VsZCByZXR1cm4uCiAKQEAgLTEwMTQsMTMgKzEwMDcsMTIgQEAKICAgICAgICAgICAgICAgICBmcm9tX25hbWUgPSAne30ue30nLmZvcm1hdChtb2R1bGUuX19uYW1lX18sIHgpCiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBfY2FsbF93aXRoX2ZyYW1lc19yZW1vdmVkKGltcG9ydF8sIGZyb21fbmFtZSkKLSAgICAgICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgICAgIGV4Y2VwdCBNb2R1bGVOb3RGb3VuZEVycm9yIGFzIGV4YzoKICAgICAgICAgICAgICAgICAgICAgIyBCYWNrd2FyZHMtY29tcGF0aWJpbGl0eSBkaWN0YXRlcyB3ZSBpZ25vcmUgZmFpbGVkCiAgICAgICAgICAgICAgICAgICAgICMgaW1wb3J0cyB0cmlnZ2VyZWQgYnkgZnJvbWxpc3QgZm9yIG1vZHVsZXMgdGhhdCBkb24ndAogICAgICAgICAgICAgICAgICAgICAjIGV4aXN0LgotICAgICAgICAgICAgICAgICAgICBpZiBzdHIoZXhjKS5zdGFydHN3aXRoKF9FUlJfTVNHX1BSRUZJWCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBleGMubmFtZSA9PSBmcm9tX25hbWU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgaWYgZXhjLm5hbWUgPT0gZnJvbV9uYW1lOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICByZXR1cm4gbW9kdWxlCiAKQEAgLTEwMzMsNyArMTAyNSwxOSBAQAogCiAgICAgIiIiCiAgICAgcGFja2FnZSA9IGdsb2JhbHMuZ2V0KCdfX3BhY2thZ2VfXycpCi0gICAgaWYgcGFja2FnZSBpcyBOb25lOgorICAgIHNwZWMgPSBnbG9iYWxzLmdldCgnX19zcGVjX18nKQorICAgIGlmIHBhY2thZ2UgaXMgbm90IE5vbmU6CisgICAgICAgIGlmIHNwZWMgaXMgbm90IE5vbmUgYW5kIHBhY2thZ2UgIT0gc3BlYy5wYXJlbnQ6CisgICAgICAgICAgICBfd2FybmluZ3Mud2FybigiX19wYWNrYWdlX18gIT0gX19zcGVjX18ucGFyZW50ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGYiKHtwYWNrYWdlIXJ9ICE9IHtzcGVjLnBhcmVudCFyfSkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgSW1wb3J0V2FybmluZywgc3RhY2tsZXZlbD0zKQorICAgICAgICByZXR1cm4gcGFja2FnZQorICAgIGVsaWYgc3BlYyBpcyBub3QgTm9uZToKKyAgICAgICAgcmV0dXJuIHNwZWMucGFyZW50CisgICAgZWxzZToKKyAgICAgICAgX3dhcm5pbmdzLndhcm4oImNhbid0IHJlc29sdmUgcGFja2FnZSBmcm9tIF9fc3BlY19fIG9yIF9fcGFja2FnZV9fLCAiCisgICAgICAgICAgICAgICAgICAgICAgICJmYWxsaW5nIGJhY2sgb24gX19uYW1lX18gYW5kIF9fcGF0aF9fIiwKKyAgICAgICAgICAgICAgICAgICAgICAgSW1wb3J0V2FybmluZywgc3RhY2tsZXZlbD0zKQogICAgICAgICBwYWNrYWdlID0gZ2xvYmFsc1snX19uYW1lX18nXQogICAgICAgICBpZiAnX19wYXRoX18nIG5vdCBpbiBnbG9iYWxzOgogICAgICAgICAgICAgcGFja2FnZSA9IHBhY2thZ2UucnBhcnRpdGlvbignLicpWzBdCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL19ib290c3RyYXBfZXh0ZXJuYWwucHkgYi9MaWIvaW1wb3J0bGliL19ib290c3RyYXBfZXh0ZXJuYWwucHkKaW5kZXggZTU0ZDY5MS4uOWZlZWM1MCAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwX2V4dGVybmFsLnB5CisrKyBiL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcF9leHRlcm5hbC5weQpAQCAtMTM3LDEwICsxMzcsNiBAQAogIyBhIC5weWMgZmlsZSBpbiB0ZXh0IG1vZGUgdGhlIG1hZ2ljIG51bWJlciB3aWxsIGJlIHdyb25nOyBhbHNvLCB0aGUKICMgQXBwbGUgTVBXIGNvbXBpbGVyIHN3YXBzIHRoZWlyIHZhbHVlcywgYm90Y2hpbmcgc3RyaW5nIGNvbnN0YW50cy4KICMKLSMgVGhlIG1hZ2ljIG51bWJlcnMgbXVzdCBiZSBzcGFjZWQgYXBhcnQgYXQgbGVhc3QgMiB2YWx1ZXMsIGFzIHRoZQotIyAtVSBpbnRlcnBldGVyIGZsYWcgd2lsbCBjYXVzZSBNQUdJQysxIGJlaW5nIHVzZWQuIFRoZXkgaGF2ZSBiZWVuCi0jIG9kZCBudW1iZXJzIGZvciBzb21lIHRpbWUgbm93LgotIwogIyBUaGVyZSB3ZXJlIGEgdmFyaWV0eSBvZiBvbGQgc2NoZW1lcyBmb3Igc2V0dGluZyB0aGUgbWFnaWMgbnVtYmVyLgogIyBUaGUgY3VycmVudCB3b3JraW5nIHNjaGVtZSBpcyB0byBpbmNyZW1lbnQgdGhlIHByZXZpb3VzIHZhbHVlIGJ5CiAjIDEwLgpAQCAtMjMxLDYgKzIyNywxOSBAQAogIyAgICAgUHl0aG9uIDMuNWIyICAzMzQwIChmaXggZGljdGlvbmFyeSBkaXNwbGF5IGV2YWx1YXRpb24gb3JkZXIgIzExMjA1KQogIyAgICAgUHl0aG9uIDMuNWIyICAzMzUwIChhZGQgR0VUX1lJRUxEX0ZST01fSVRFUiBvcGNvZGUgIzI0NDAwKQogIyAgICAgUHl0aG9uIDMuNS4yICAzMzUxIChmaXggQlVJTERfTUFQX1VOUEFDS19XSVRIX0NBTEwgb3Bjb2RlICMyNzI4NikKKyMgICAgIFB5dGhvbiAzLjZhMCAgMzM2MCAoYWRkIEZPUk1BVF9WQUxVRSBvcGNvZGUgIzI1NDgzCisjICAgICBQeXRob24gMy42YTAgIDMzNjEgKGxpbmVubyBkZWx0YSBvZiBjb2RlLmNvX2xub3RhYiBiZWNvbWVzIHNpZ25lZCkKKyMgICAgIFB5dGhvbiAzLjZhMSAgMzM3MCAoMTYgYml0IHdvcmRjb2RlKQorIyAgICAgUHl0aG9uIDMuNmExICAzMzcxIChhZGQgQlVJTERfQ09OU1RfS0VZX01BUCBvcGNvZGUgIzI3MTQwKQorIyAgICAgUHl0aG9uIDMuNmExICAzMzcyIChNQUtFX0ZVTkNUSU9OIHNpbXBsaWZpY2F0aW9uLCByZW1vdmUgTUFLRV9DTE9TVVJFCisjICAgICAgICAgICAgICAgICAgICAgICAgICMyNzA5NSkKKyMgICAgIFB5dGhvbiAzLjZiMSAgMzM3MyAoYWRkIEJVSUxEX1NUUklORyBvcGNvZGUgIzI3MDc4KQorIyAgICAgUHl0aG9uIDMuNmIxICAzMzc1IChhZGQgU0VUVVBfQU5OT1RBVElPTlMgYW5kIFNUT1JFX0FOTk9UQVRJT04gb3Bjb2RlcworIyAgICAgICAgICAgICAgICAgICAgICAgICAjMjc5ODUpCisjICAgICBQeXRob24gMy42YjEgIDMzNzYgKHNpbXBsaWZ5IENBTExfRlVOQ1RJT05zICYgQlVJTERfTUFQX1VOUEFDS19XSVRIX0NBTEwpCisjICAgICBQeXRob24gMy42YjEgIDMzNzcgKHNldCBfX2NsYXNzX18gY2VsbCBmcm9tIHR5cGUuX19uZXdfXyAjMjM3MjIpCisjICAgICBQeXRob24gMy42YjIgIDMzNzggKGFkZCBCVUlMRF9UVVBMRV9VTlBBQ0tfV0lUSF9DQUxMICMyODI1NykKKyMgICAgIFB5dGhvbiAzLjZyYzEgMzM3OSAobW9yZSB0aG9yb3VnaCBfX2NsYXNzX18gdmFsaWRhdGlvbiAjMjM3MjIpCiAjCiAjIE1BR0lDIG11c3QgY2hhbmdlIHdoZW5ldmVyIHRoZSBieXRlY29kZSBlbWl0dGVkIGJ5IHRoZSBjb21waWxlciBtYXkgbm8KICMgbG9uZ2VyIGJlIHVuZGVyc3Rvb2QgYnkgb2xkZXIgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBldmFsIGxvb3AgKHVzdWFsbHkKQEAgLTIzOSw3ICsyNDgsNyBAQAogIyBXaGVuZXZlciBNQUdJQ19OVU1CRVIgaXMgY2hhbmdlZCwgdGhlIHJhbmdlcyBpbiB0aGUgbWFnaWNfdmFsdWVzIGFycmF5CiAjIGluIFBDL2xhdW5jaGVyLmMgbXVzdCBhbHNvIGJlIHVwZGF0ZWQuCiAKLU1BR0lDX05VTUJFUiA9ICgzMzUxKS50b19ieXRlcygyLCAnbGl0dGxlJykgKyBiJ1xyXG4nCitNQUdJQ19OVU1CRVIgPSAoMzM3OSkudG9fYnl0ZXMoMiwgJ2xpdHRsZScpICsgYidcclxuJwogX1JBV19NQUdJQ19OVU1CRVIgPSBpbnQuZnJvbV9ieXRlcyhNQUdJQ19OVU1CRVIsICdsaXR0bGUnKSAgIyBGb3IgaW1wb3J0LmMKIAogX1BZQ0FDSEUgPSAnX19weWNhY2hlX18nCkBAIC0yNzYsNiArMjg1LDcgQEAKICAgICAgICAgICAgIG1lc3NhZ2UgPSAnZGVidWdfb3ZlcnJpZGUgb3Igb3B0aW1pemF0aW9uIG11c3QgYmUgc2V0IHRvIE5vbmUnCiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IobWVzc2FnZSkKICAgICAgICAgb3B0aW1pemF0aW9uID0gJycgaWYgZGVidWdfb3ZlcnJpZGUgZWxzZSAxCisgICAgcGF0aCA9IF9vcy5mc3BhdGgocGF0aCkKICAgICBoZWFkLCB0YWlsID0gX3BhdGhfc3BsaXQocGF0aCkKICAgICBiYXNlLCBzZXAsIHJlc3QgPSB0YWlsLnJwYXJ0aXRpb24oJy4nKQogICAgIHRhZyA9IHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcKQEAgLTMwNiw2ICszMTYsNyBAQAogICAgICIiIgogICAgIGlmIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgTm9uZToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcignc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBpcyBOb25lJykKKyAgICBwYXRoID0gX29zLmZzcGF0aChwYXRoKQogICAgIGhlYWQsIHB5Y2FjaGVfZmlsZW5hbWUgPSBfcGF0aF9zcGxpdChwYXRoKQogICAgIGhlYWQsIHB5Y2FjaGUgPSBfcGF0aF9zcGxpdChoZWFkKQogICAgIGlmIHB5Y2FjaGUgIT0gX1BZQ0FDSEU6CkBAIC0zNzEsMTQgKzM4Miw2IEBACiAgICAgcmV0dXJuIG1vZGUKIAogCi1kZWYgX3ZlcmJvc2VfbWVzc2FnZShtZXNzYWdlLCAqYXJncywgdmVyYm9zaXR5PTEpOgotICAgICIiIlByaW50IHRoZSBtZXNzYWdlIHRvIHN0ZGVyciBpZiAtdi9QWVRIT05WRVJCT1NFIGlzIHR1cm5lZCBvbi4iIiIKLSAgICBpZiBzeXMuZmxhZ3MudmVyYm9zZSA+PSB2ZXJib3NpdHk6Ci0gICAgICAgIGlmIG5vdCBtZXNzYWdlLnN0YXJ0c3dpdGgoKCcjJywgJ2ltcG9ydCAnKSk6Ci0gICAgICAgICAgICBtZXNzYWdlID0gJyMgJyArIG1lc3NhZ2UKLSAgICAgICAgcHJpbnQobWVzc2FnZS5mb3JtYXQoKmFyZ3MpLCBmaWxlPXN5cy5zdGRlcnIpCi0KLQogZGVmIF9jaGVja19uYW1lKG1ldGhvZCk6CiAgICAgIiIiRGVjb3JhdG9yIHRvIHZlcmlmeSB0aGF0IHRoZSBtb2R1bGUgYmVpbmcgcmVxdWVzdGVkIG1hdGNoZXMgdGhlIG9uZSB0aGUKICAgICBsb2FkZXIgY2FuIGhhbmRsZS4KQEAgLTQ0OCwxNSArNDUxLDE1IEBACiAgICAgcmF3X3NpemUgPSBkYXRhWzg6MTJdCiAgICAgaWYgbWFnaWMgIT0gTUFHSUNfTlVNQkVSOgogICAgICAgICBtZXNzYWdlID0gJ2JhZCBtYWdpYyBudW1iZXIgaW4geyFyfTogeyFyfScuZm9ybWF0KG5hbWUsIG1hZ2ljKQotICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCd7fScsIG1lc3NhZ2UpCisgICAgICAgIF9ib290c3RyYXAuX3ZlcmJvc2VfbWVzc2FnZSgne30nLCBtZXNzYWdlKQogICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtZXNzYWdlLCAqKmV4Y19kZXRhaWxzKQogICAgIGVsaWYgbGVuKHJhd190aW1lc3RhbXApICE9IDQ6CiAgICAgICAgIG1lc3NhZ2UgPSAncmVhY2hlZCBFT0Ygd2hpbGUgcmVhZGluZyB0aW1lc3RhbXAgaW4geyFyfScuZm9ybWF0KG5hbWUpCi0gICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ3t9JywgbWVzc2FnZSkKKyAgICAgICAgX2Jvb3RzdHJhcC5fdmVyYm9zZV9tZXNzYWdlKCd7fScsIG1lc3NhZ2UpCiAgICAgICAgIHJhaXNlIEVPRkVycm9yKG1lc3NhZ2UpCiAgICAgZWxpZiBsZW4ocmF3X3NpemUpICE9IDQ6CiAgICAgICAgIG1lc3NhZ2UgPSAncmVhY2hlZCBFT0Ygd2hpbGUgcmVhZGluZyBzaXplIG9mIHNvdXJjZSBpbiB7IXJ9Jy5mb3JtYXQobmFtZSkKLSAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgne30nLCBtZXNzYWdlKQorICAgICAgICBfYm9vdHN0cmFwLl92ZXJib3NlX21lc3NhZ2UoJ3t9JywgbWVzc2FnZSkKICAgICAgICAgcmFpc2UgRU9GRXJyb3IobWVzc2FnZSkKICAgICBpZiBzb3VyY2Vfc3RhdHMgaXMgbm90IE5vbmU6CiAgICAgICAgIHRyeToKQEAgLTQ2Niw3ICs0NjksNyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgaWYgX3JfbG9uZyhyYXdfdGltZXN0YW1wKSAhPSBzb3VyY2VfbXRpbWU6CiAgICAgICAgICAgICAgICAgbWVzc2FnZSA9ICdieXRlY29kZSBpcyBzdGFsZSBmb3IgeyFyfScuZm9ybWF0KG5hbWUpCi0gICAgICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgne30nLCBtZXNzYWdlKQorICAgICAgICAgICAgICAgIF9ib290c3RyYXAuX3ZlcmJvc2VfbWVzc2FnZSgne30nLCBtZXNzYWdlKQogICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1lc3NhZ2UsICoqZXhjX2RldGFpbHMpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNvdXJjZV9zaXplID0gc291cmNlX3N0YXRzWydzaXplJ10gJiAweEZGRkZGRkZGCkBAIC00ODMsNyArNDg2LDcgQEAKICAgICAiIiJDb21waWxlIGJ5dGVjb2RlIGFzIHJldHVybmVkIGJ5IF92YWxpZGF0ZV9ieXRlY29kZV9oZWFkZXIoKS4iIiIKICAgICBjb2RlID0gbWFyc2hhbC5sb2FkcyhkYXRhKQogICAgIGlmIGlzaW5zdGFuY2UoY29kZSwgX2NvZGVfdHlwZSk6Ci0gICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2NvZGUgb2JqZWN0IGZyb20geyFyfScsIGJ5dGVjb2RlX3BhdGgpCisgICAgICAgIF9ib290c3RyYXAuX3ZlcmJvc2VfbWVzc2FnZSgnY29kZSBvYmplY3QgZnJvbSB7IXJ9JywgYnl0ZWNvZGVfcGF0aCkKICAgICAgICAgaWYgc291cmNlX3BhdGggaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBfaW1wLl9maXhfY29fZmlsZW5hbWUoY29kZSwgc291cmNlX3BhdGgpCiAgICAgICAgIHJldHVybiBjb2RlCkBAIC01NDEsNiArNTQ0LDggQEAKICAgICAgICAgICAgICAgICBsb2NhdGlvbiA9IGxvYWRlci5nZXRfZmlsZW5hbWUobmFtZSkKICAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgICAgICAgICBwYXNzCisgICAgZWxzZToKKyAgICAgICAgbG9jYXRpb24gPSBfb3MuZnNwYXRoKGxvY2F0aW9uKQogCiAgICAgIyBJZiB0aGUgbG9jYXRpb24gaXMgb24gdGhlIGZpbGVzeXN0ZW0sIGJ1dCBkb2Vzbid0IGFjdHVhbGx5IGV4aXN0LAogICAgICMgd2UgY291bGQgcmV0dXJuIE5vbmUgaGVyZSwgaW5kaWNhdGluZyB0aGF0IHRoZSBsb2NhdGlvbiBpcyBub3QKQEAgLTYxMCw3ICs2MTUsNyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmVnaXN0cnlfa2V5ID0gY2xzLlJFR0lTVFJZX0tFWQogICAgICAgICBrZXkgPSByZWdpc3RyeV9rZXkuZm9ybWF0KGZ1bGxuYW1lPWZ1bGxuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c192ZXJzaW9uPXN5cy52ZXJzaW9uWzozXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXNfdmVyc2lvbj0nJWQuJWQnICUgc3lzLnZlcnNpb25faW5mb1s6Ml0pCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHdpdGggY2xzLl9vcGVuX3JlZ2lzdHJ5KGtleSkgYXMgaGtleToKICAgICAgICAgICAgICAgICBmaWxlcGF0aCA9IF93aW5yZWcuUXVlcnlWYWx1ZShoa2V5LCAnJykKQEAgLTY3Myw2ICs2NzgsNyBAQAogICAgICAgICBfYm9vdHN0cmFwLl9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQoZXhlYywgY29kZSwgbW9kdWxlLl9fZGljdF9fKQogCiAgICAgZGVmIGxvYWRfbW9kdWxlKHNlbGYsIGZ1bGxuYW1lKToKKyAgICAgICAgIiIiVGhpcyBtb2R1bGUgaXMgZGVwcmVjYXRlZC4iIiIKICAgICAgICAgcmV0dXJuIF9ib290c3RyYXAuX2xvYWRfbW9kdWxlX3NoaW0oc2VsZiwgZnVsbG5hbWUpCiAKIApAQCAtNzY2LDIxICs3NzIsMjEgQEAKICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IChJbXBvcnRFcnJvciwgRU9GRXJyb3IpOgogICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgne30gbWF0Y2hlcyB7fScsIGJ5dGVjb2RlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlX3BhdGgpCisgICAgICAgICAgICAgICAgICAgICAgICBfYm9vdHN0cmFwLl92ZXJib3NlX21lc3NhZ2UoJ3t9IG1hdGNoZXMge30nLCBieXRlY29kZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9wYXRoKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jb21waWxlX2J5dGVjb2RlKGJ5dGVzX2RhdGEsIG5hbWU9ZnVsbG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZWNvZGVfcGF0aD1ieXRlY29kZV9wYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9wYXRoPXNvdXJjZV9wYXRoKQogICAgICAgICBzb3VyY2VfYnl0ZXMgPSBzZWxmLmdldF9kYXRhKHNvdXJjZV9wYXRoKQogICAgICAgICBjb2RlX29iamVjdCA9IHNlbGYuc291cmNlX3RvX2NvZGUoc291cmNlX2J5dGVzLCBzb3VyY2VfcGF0aCkKLSAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnY29kZSBvYmplY3QgZnJvbSB7fScsIHNvdXJjZV9wYXRoKQorICAgICAgICBfYm9vdHN0cmFwLl92ZXJib3NlX21lc3NhZ2UoJ2NvZGUgb2JqZWN0IGZyb20ge30nLCBzb3VyY2VfcGF0aCkKICAgICAgICAgaWYgKG5vdCBzeXMuZG9udF93cml0ZV9ieXRlY29kZSBhbmQgYnl0ZWNvZGVfcGF0aCBpcyBub3QgTm9uZSBhbmQKICAgICAgICAgICAgICAgICBzb3VyY2VfbXRpbWUgaXMgbm90IE5vbmUpOgogICAgICAgICAgICAgZGF0YSA9IF9jb2RlX3RvX2J5dGVjb2RlKGNvZGVfb2JqZWN0LCBzb3VyY2VfbXRpbWUsCiAgICAgICAgICAgICAgICAgICAgIGxlbihzb3VyY2VfYnl0ZXMpKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHNlbGYuX2NhY2hlX2J5dGVjb2RlKHNvdXJjZV9wYXRoLCBieXRlY29kZV9wYXRoLCBkYXRhKQotICAgICAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ3dyb3RlIHshcn0nLCBieXRlY29kZV9wYXRoKQorICAgICAgICAgICAgICAgIF9ib290c3RyYXAuX3ZlcmJvc2VfbWVzc2FnZSgnd3JvdGUgeyFyfScsIGJ5dGVjb2RlX3BhdGgpCiAgICAgICAgICAgICBleGNlcHQgTm90SW1wbGVtZW50ZWRFcnJvcjoKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHJldHVybiBjb2RlX29iamVjdApAQCAtODYwLDE0ICs4NjYsMTYgQEAKICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKICAgICAgICAgICAgICAgICAjIENvdWxkIGJlIGEgcGVybWlzc2lvbiBlcnJvciwgcmVhZC1vbmx5IGZpbGVzeXN0ZW06IGp1c3QgZm9yZ2V0CiAgICAgICAgICAgICAgICAgIyBhYm91dCB3cml0aW5nIHRoZSBkYXRhLgotICAgICAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2NvdWxkIG5vdCBjcmVhdGUgeyFyfTogeyFyfScsIHBhcmVudCwgZXhjKQorICAgICAgICAgICAgICAgIF9ib290c3RyYXAuX3ZlcmJvc2VfbWVzc2FnZSgnY291bGQgbm90IGNyZWF0ZSB7IXJ9OiB7IXJ9JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LCBleGMpCiAgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIF93cml0ZV9hdG9taWMocGF0aCwgZGF0YSwgX21vZGUpCi0gICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCdjcmVhdGVkIHshcn0nLCBwYXRoKQorICAgICAgICAgICAgX2Jvb3RzdHJhcC5fdmVyYm9zZV9tZXNzYWdlKCdjcmVhdGVkIHshcn0nLCBwYXRoKQogICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBleGM6CiAgICAgICAgICAgICAjIFNhbWUgYXMgYWJvdmU6IGp1c3QgZG9uJ3Qgd3JpdGUgdGhlIGJ5dGVjb2RlLgotICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnY291bGQgbm90IGNyZWF0ZSB7IXJ9OiB7IXJ9JywgcGF0aCwgZXhjKQorICAgICAgICAgICAgX2Jvb3RzdHJhcC5fdmVyYm9zZV9tZXNzYWdlKCdjb3VsZCBub3QgY3JlYXRlIHshcn06IHshcn0nLCBwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4YykKIAogCiBjbGFzcyBTb3VyY2VsZXNzRmlsZUxvYWRlcihGaWxlTG9hZGVyLCBfTG9hZGVyQmFzaWNzKToKQEAgLTkxMiwxNCArOTIwLDE0IEBACiAgICAgICAgICIiIkNyZWF0ZSBhbiB1bml0aWFsaXplZCBleHRlbnNpb24gbW9kdWxlIiIiCiAgICAgICAgIG1vZHVsZSA9IF9ib290c3RyYXAuX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZCgKICAgICAgICAgICAgIF9pbXAuY3JlYXRlX2R5bmFtaWMsIHNwZWMpCi0gICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2V4dGVuc2lvbiBtb2R1bGUgeyFyfSBsb2FkZWQgZnJvbSB7IXJ9JywKKyAgICAgICAgX2Jvb3RzdHJhcC5fdmVyYm9zZV9tZXNzYWdlKCdleHRlbnNpb24gbW9kdWxlIHshcn0gbG9hZGVkIGZyb20geyFyfScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlYy5uYW1lLCBzZWxmLnBhdGgpCiAgICAgICAgIHJldHVybiBtb2R1bGUKIAogICAgIGRlZiBleGVjX21vZHVsZShzZWxmLCBtb2R1bGUpOgogICAgICAgICAiIiJJbml0aWFsaXplIGFuIGV4dGVuc2lvbiBtb2R1bGUiIiIKICAgICAgICAgX2Jvb3RzdHJhcC5fY2FsbF93aXRoX2ZyYW1lc19yZW1vdmVkKF9pbXAuZXhlY19keW5hbWljLCBtb2R1bGUpCi0gICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2V4dGVuc2lvbiBtb2R1bGUgeyFyfSBleGVjdXRlZCBmcm9tIHshcn0nLAorICAgICAgICBfYm9vdHN0cmFwLl92ZXJib3NlX21lc3NhZ2UoJ2V4dGVuc2lvbiBtb2R1bGUgeyFyfSBleGVjdXRlZCBmcm9tIHshcn0nLAogICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubmFtZSwgc2VsZi5wYXRoKQogCiAgICAgZGVmIGlzX3BhY2thZ2Uoc2VsZiwgZnVsbG5hbWUpOgpAQCAtOTg1LDYgKzk5Myw5IEBACiAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgogICAgICAgICByZXR1cm4gaXRlcihzZWxmLl9yZWNhbGN1bGF0ZSgpKQogCisgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGluZGV4LCBwYXRoKToKKyAgICAgICAgc2VsZi5fcGF0aFtpbmRleF0gPSBwYXRoCisKICAgICBkZWYgX19sZW5fXyhzZWxmKToKICAgICAgICAgcmV0dXJuIGxlbihzZWxmLl9yZWNhbGN1bGF0ZSgpKQogCkBAIC0xMDM0LDcgKzEwNDUsOCBAQAogCiAgICAgICAgICIiIgogICAgICAgICAjIFRoZSBpbXBvcnQgc3lzdGVtIG5ldmVyIGNhbGxzIHRoaXMgbWV0aG9kLgotICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCduYW1lc3BhY2UgbW9kdWxlIGxvYWRlZCB3aXRoIHBhdGggeyFyfScsIHNlbGYuX3BhdGgpCisgICAgICAgIF9ib290c3RyYXAuX3ZlcmJvc2VfbWVzc2FnZSgnbmFtZXNwYWNlIG1vZHVsZSBsb2FkZWQgd2l0aCBwYXRoIHshcn0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGF0aCkKICAgICAgICAgcmV0dXJuIF9ib290c3RyYXAuX2xvYWRfbW9kdWxlX3NoaW0oc2VsZiwgZnVsbG5hbWUpCiAKIApAQCAtMTA1NCwxMSArMTA2Niw3IEBACiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgX3BhdGhfaG9va3MoY2xzLCBwYXRoKToKLSAgICAgICAgIiIiU2VhcmNoIHNlcXVlbmNlIG9mIGhvb2tzIGZvciBhIGZpbmRlciBmb3IgJ3BhdGgnLgotCi0gICAgICAgIElmICdob29rcycgaXMgZmFsc2UgdGhlbiB1c2Ugc3lzLnBhdGhfaG9va3MuCi0KLSAgICAgICAgIiIiCisgICAgICAgICIiIlNlYXJjaCBzeXMucGF0aF9ob29rcyBmb3IgYSBmaW5kZXIgZm9yICdwYXRoJy4iIiIKICAgICAgICAgaWYgc3lzLnBhdGhfaG9va3MgaXMgbm90IE5vbmUgYW5kIG5vdCBzeXMucGF0aF9ob29rczoKICAgICAgICAgICAgIF93YXJuaW5ncy53YXJuKCdzeXMucGF0aF9ob29rcyBpcyBlbXB0eScsIEltcG9ydFdhcm5pbmcpCiAgICAgICAgIGZvciBob29rIGluIHN5cy5wYXRoX2hvb2tzOgpAQCAtMTE0MCw4ICsxMTQ4LDEwIEBACiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgZmluZF9zcGVjKGNscywgZnVsbG5hbWUsIHBhdGg9Tm9uZSwgdGFyZ2V0PU5vbmUpOgotICAgICAgICAiIiJmaW5kIHRoZSBtb2R1bGUgb24gc3lzLnBhdGggb3IgJ3BhdGgnIGJhc2VkIG9uIHN5cy5wYXRoX2hvb2tzIGFuZAotICAgICAgICBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS4iIiIKKyAgICAgICAgIiIiVHJ5IHRvIGZpbmQgYSBzcGVjIGZvciAnZnVsbG5hbWUnIG9uIHN5cy5wYXRoIG9yICdwYXRoJy4KKworICAgICAgICBUaGUgc2VhcmNoIGlzIGJhc2VkIG9uIHN5cy5wYXRoX2hvb2tzIGFuZCBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS4KKyAgICAgICAgIiIiCiAgICAgICAgIGlmIHBhdGggaXMgTm9uZToKICAgICAgICAgICAgIHBhdGggPSBzeXMucGF0aAogICAgICAgICBzcGVjID0gY2xzLl9nZXRfc3BlYyhmdWxsbmFtZSwgcGF0aCwgdGFyZ2V0KQpAQCAtMTIyMSw4ICsxMjMxLDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucz1zbXNsKQogCiAgICAgZGVmIGZpbmRfc3BlYyhzZWxmLCBmdWxsbmFtZSwgdGFyZ2V0PU5vbmUpOgotICAgICAgICAiIiJUcnkgdG8gZmluZCBhIHNwZWMgZm9yIHRoZSBzcGVjaWZpZWQgbW9kdWxlLiAgUmV0dXJucyB0aGUKLSAgICAgICAgbWF0Y2hpbmcgc3BlYywgb3IgTm9uZSBpZiBub3QgZm91bmQuIiIiCisgICAgICAgICIiIlRyeSB0byBmaW5kIGEgc3BlYyBmb3IgdGhlIHNwZWNpZmllZCBtb2R1bGUuCisKKyAgICAgICAgUmV0dXJucyB0aGUgbWF0Y2hpbmcgc3BlYywgb3IgTm9uZSBpZiBub3QgZm91bmQuCisgICAgICAgICIiIgogICAgICAgICBpc19uYW1lc3BhY2UgPSBGYWxzZQogICAgICAgICB0YWlsX21vZHVsZSA9IGZ1bGxuYW1lLnJwYXJ0aXRpb24oJy4nKVsyXQogICAgICAgICB0cnk6CkBAIC0xMjU0LDEyICsxMjY2LDEzIEBACiAgICAgICAgICMgQ2hlY2sgZm9yIGEgZmlsZSB3LyBhIHByb3BlciBzdWZmaXggZXhpc3RzLgogICAgICAgICBmb3Igc3VmZml4LCBsb2FkZXJfY2xhc3MgaW4gc2VsZi5fbG9hZGVyczoKICAgICAgICAgICAgIGZ1bGxfcGF0aCA9IF9wYXRoX2pvaW4oc2VsZi5wYXRoLCB0YWlsX21vZHVsZSArIHN1ZmZpeCkKLSAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ3RyeWluZyB7fScuZm9ybWF0KGZ1bGxfcGF0aCksIHZlcmJvc2l0eT0yKQorICAgICAgICAgICAgX2Jvb3RzdHJhcC5fdmVyYm9zZV9tZXNzYWdlKCd0cnlpbmcge30nLCBmdWxsX3BhdGgsIHZlcmJvc2l0eT0yKQogICAgICAgICAgICAgaWYgY2FjaGVfbW9kdWxlICsgc3VmZml4IGluIGNhY2hlOgogICAgICAgICAgICAgICAgIGlmIF9wYXRoX2lzZmlsZShmdWxsX3BhdGgpOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZ2V0X3NwZWMobG9hZGVyX2NsYXNzLCBmdWxsbmFtZSwgZnVsbF9wYXRoLCBOb25lLCB0YXJnZXQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9nZXRfc3BlYyhsb2FkZXJfY2xhc3MsIGZ1bGxuYW1lLCBmdWxsX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lLCB0YXJnZXQpCiAgICAgICAgIGlmIGlzX25hbWVzcGFjZToKLSAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ3Bvc3NpYmxlIG5hbWVzcGFjZSBmb3Ige30nLmZvcm1hdChiYXNlX3BhdGgpKQorICAgICAgICAgICAgX2Jvb3RzdHJhcC5fdmVyYm9zZV9tZXNzYWdlKCdwb3NzaWJsZSBuYW1lc3BhY2UgZm9yIHt9JywgYmFzZV9wYXRoKQogICAgICAgICAgICAgc3BlYyA9IF9ib290c3RyYXAuTW9kdWxlU3BlYyhmdWxsbmFtZSwgTm9uZSkKICAgICAgICAgICAgIHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgPSBbYmFzZV9wYXRoXQogICAgICAgICAgICAgcmV0dXJuIHNwZWMKQEAgLTE0MjcsMTEgKzE0NDAsNCBAQAogICAgIF9zZXR1cChfYm9vdHN0cmFwX21vZHVsZSkKICAgICBzdXBwb3J0ZWRfbG9hZGVycyA9IF9nZXRfc3VwcG9ydGVkX2ZpbGVfbG9hZGVycygpCiAgICAgc3lzLnBhdGhfaG9va3MuZXh0ZW5kKFtGaWxlRmluZGVyLnBhdGhfaG9vaygqc3VwcG9ydGVkX2xvYWRlcnMpXSkKLSAgICBpZiBfb3MuX19uYW1lX18gPT0gJ250JzoKLSAgICAgICAgc3lzLm1ldGFfcGF0aC5hcHBlbmQoV2luZG93c1JlZ2lzdHJ5RmluZGVyKQogICAgIHN5cy5tZXRhX3BhdGguYXBwZW5kKFBhdGhGaW5kZXIpCi0KLSAgICAjIFhYWCBXZSBleHBvc2UgYSBjb3VwbGUgb2YgY2xhc3NlcyBpbiBfYm9vdHN0cmFwIGZvciB0aGUgc2FrZSBvZgotICAgICMgYSBzZXR1cHRvb2xzIGJ1ZyAoaHR0cHM6Ly9iaXRidWNrZXQub3JnL3B5cGEvc2V0dXB0b29scy9pc3N1ZS8zNzgpLgotICAgIF9ib290c3RyYXBfbW9kdWxlLkZpbGVGaW5kZXIgPSBGaWxlRmluZGVyCi0gICAgX2Jvb3RzdHJhcF9tb2R1bGUuU291cmNlRmlsZUxvYWRlciA9IFNvdXJjZUZpbGVMb2FkZXIKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdXRpbC5weSBiL0xpYi9pbXBvcnRsaWIvdXRpbC5weQppbmRleCBlMWZhMDdhLi42YmRmMGQ0IDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL3V0aWwucHkKKysrIGIvTGliL2ltcG9ydGxpYi91dGlsLnB5CkBAIC0yMiw4ICsyMiw4IEBACiAgICAgaWYgbm90IG5hbWUuc3RhcnRzd2l0aCgnLicpOgogICAgICAgICByZXR1cm4gbmFtZQogICAgIGVsaWYgbm90IHBhY2thZ2U6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3shcn0gaXMgbm90IGEgcmVsYXRpdmUgbmFtZSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyhubyBsZWFkaW5nIGRvdCknLmZvcm1hdChuYW1lKSkKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihmJ25vIHBhY2thZ2Ugc3BlY2lmaWVkIGZvciB7cmVwcihuYW1lKX0gJworICAgICAgICAgICAgICAgICAgICAgICAgICcocmVxdWlyZWQgZm9yIHJlbGF0aXZlIG1vZHVsZSBuYW1lcyknKQogICAgIGxldmVsID0gMAogICAgIGZvciBjaGFyYWN0ZXIgaW4gbmFtZToKICAgICAgICAgaWYgY2hhcmFjdGVyICE9ICcuJzoKQEAgLTIwNCwxMSArMjA0LDYgQEAKICAgICByZXR1cm4gbW9kdWxlX2Zvcl9sb2FkZXJfd3JhcHBlcgogCiAKLWNsYXNzIF9Nb2R1bGUodHlwZXMuTW9kdWxlVHlwZSk6Ci0KLSAgICAiIiJBIHN1YmNsYXNzIG9mIHRoZSBtb2R1bGUgdHlwZSB0byBhbGxvdyBfX2NsYXNzX18gbWFuaXB1bGF0aW9uLiIiIgotCi0KIGNsYXNzIF9MYXp5TW9kdWxlKHR5cGVzLk1vZHVsZVR5cGUpOgogCiAgICAgIiIiQSBzdWJjbGFzcyBvZiB0aGUgbW9kdWxlIHR5cGUgd2hpY2ggdHJpZ2dlcnMgbG9hZGluZyB1cG9uIGF0dHJpYnV0ZSBhY2Nlc3MuIiIiCkBAIC0yMTgsMTMgKzIxMywxNCBAQAogICAgICAgICAjIEFsbCBtb2R1bGUgbWV0YWRhdGEgbXVzdCBiZSBnYXJuZXJlZCBmcm9tIF9fc3BlY19fIGluIG9yZGVyIHRvIGF2b2lkCiAgICAgICAgICMgdXNpbmcgbXV0YXRlZCB2YWx1ZXMuCiAgICAgICAgICMgU3RvcCB0cmlnZ2VyaW5nIHRoaXMgbWV0aG9kLgotICAgICAgICBzZWxmLl9fY2xhc3NfXyA9IF9Nb2R1bGUKKyAgICAgICAgc2VsZi5fX2NsYXNzX18gPSB0eXBlcy5Nb2R1bGVUeXBlCiAgICAgICAgICMgR2V0IHRoZSBvcmlnaW5hbCBuYW1lIHRvIG1ha2Ugc3VyZSBubyBvYmplY3Qgc3Vic3RpdHV0aW9uIG9jY3VycmVkCiAgICAgICAgICMgaW4gc3lzLm1vZHVsZXMuCiAgICAgICAgIG9yaWdpbmFsX25hbWUgPSBzZWxmLl9fc3BlY19fLm5hbWUKICAgICAgICAgIyBGaWd1cmUgb3V0IGV4YWN0bHkgd2hhdCBhdHRyaWJ1dGVzIHdlcmUgbXV0YXRlZCBiZXR3ZWVuIHRoZSBjcmVhdGlvbgogICAgICAgICAjIG9mIHRoZSBtb2R1bGUgYW5kIG5vdy4KLSAgICAgICAgYXR0cnNfdGhlbiA9IHNlbGYuX19zcGVjX18ubG9hZGVyX3N0YXRlCisgICAgICAgIGF0dHJzX3RoZW4gPSBzZWxmLl9fc3BlY19fLmxvYWRlcl9zdGF0ZVsnX19kaWN0X18nXQorICAgICAgICBvcmlnaW5hbF90eXBlID0gc2VsZi5fX3NwZWNfXy5sb2FkZXJfc3RhdGVbJ19fY2xhc3NfXyddCiAgICAgICAgIGF0dHJzX25vdyA9IHNlbGYuX19kaWN0X18KICAgICAgICAgYXR0cnNfdXBkYXRlZCA9IHt9CiAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGF0dHJzX25vdy5pdGVtcygpOgpAQCAtMjM5LDkgKzIzNSw5IEBACiAgICAgICAgICMgb2JqZWN0IHdhcyBwdXQgaW50byBzeXMubW9kdWxlcy4KICAgICAgICAgaWYgb3JpZ2luYWxfbmFtZSBpbiBzeXMubW9kdWxlczoKICAgICAgICAgICAgIGlmIGlkKHNlbGYpICE9IGlkKHN5cy5tb2R1bGVzW29yaWdpbmFsX25hbWVdKToKLSAgICAgICAgICAgICAgICBtc2cgPSAoJ21vZHVsZSBvYmplY3QgZm9yIHshcn0gc3Vic3RpdHV0ZWQgaW4gc3lzLm1vZHVsZXMgJwotICAgICAgICAgICAgICAgICAgICAgICAnZHVyaW5nIGEgbGF6eSBsb2FkJykKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKG1zZy5mb3JtYXQob3JpZ2luYWxfbmFtZSkpCisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihmIm1vZHVsZSBvYmplY3QgZm9yIHtvcmlnaW5hbF9uYW1lIXJ9ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3Vic3RpdHV0ZWQgaW4gc3lzLm1vZHVsZXMgZHVyaW5nIGEgbGF6eSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxvYWQiKQogICAgICAgICAjIFVwZGF0ZSBhZnRlciBsb2FkaW5nIHNpbmNlIHRoYXQncyB3aGF0IHdvdWxkIGhhcHBlbiBpbiBhbiBlYWdlcgogICAgICAgICAjIGxvYWRpbmcgc2l0dWF0aW9uLgogICAgICAgICBzZWxmLl9fZGljdF9fLnVwZGF0ZShhdHRyc191cGRhdGVkKQpAQCAtMjc1LDggKzI3MSw3IEBACiAgICAgICAgIHNlbGYubG9hZGVyID0gbG9hZGVyCiAKICAgICBkZWYgY3JlYXRlX21vZHVsZShzZWxmLCBzcGVjKToKLSAgICAgICAgIiIiQ3JlYXRlIGEgbW9kdWxlIHdoaWNoIGNhbiBoYXZlIGl0cyBfX2NsYXNzX18gbWFuaXB1bGF0ZWQuIiIiCi0gICAgICAgIHJldHVybiBfTW9kdWxlKHNwZWMubmFtZSkKKyAgICAgICAgcmV0dXJuIHNlbGYubG9hZGVyLmNyZWF0ZV9tb2R1bGUoc3BlYykKIAogICAgIGRlZiBleGVjX21vZHVsZShzZWxmLCBtb2R1bGUpOgogICAgICAgICAiIiJNYWtlIHRoZSBtb2R1bGUgbG9hZCBsYXppbHkuIiIiCkBAIC0yODYsNSArMjgxLDggQEAKICAgICAgICAgIyBvbiBhbiBvYmplY3Qgd291bGQgaGF2ZSB0cmlnZ2VyZWQgdGhlIGxvYWQsCiAgICAgICAgICMgZS5nLiBgYG1vZHVsZS5fX3NwZWNfXy5sb2FkZXIgPSBOb25lYGAgd291bGQgdHJpZ2dlciBhIGxvYWQgZnJvbQogICAgICAgICAjIHRyeWluZyB0byBhY2Nlc3MgbW9kdWxlLl9fc3BlY19fLgotICAgICAgICBtb2R1bGUuX19zcGVjX18ubG9hZGVyX3N0YXRlID0gbW9kdWxlLl9fZGljdF9fLmNvcHkoKQorICAgICAgICBsb2FkZXJfc3RhdGUgPSB7fQorICAgICAgICBsb2FkZXJfc3RhdGVbJ19fZGljdF9fJ10gPSBtb2R1bGUuX19kaWN0X18uY29weSgpCisgICAgICAgIGxvYWRlcl9zdGF0ZVsnX19jbGFzc19fJ10gPSBtb2R1bGUuX19jbGFzc19fCisgICAgICAgIG1vZHVsZS5fX3NwZWNfXy5sb2FkZXJfc3RhdGUgPSBsb2FkZXJfc3RhdGUKICAgICAgICAgbW9kdWxlLl9fY2xhc3NfXyA9IF9MYXp5TW9kdWxlCmRpZmYgLS1naXQgYS9MaWIvaW5zcGVjdC5weSBiL0xpYi9pbnNwZWN0LnB5CmluZGV4IGU2ZGFlMWUuLmUwOGU5ZjUgMTAwNjQ0Ci0tLSBhL0xpYi9pbnNwZWN0LnB5CisrKyBiL0xpYi9pbnNwZWN0LnB5CkBAIC0xNiw3ICsxNiw3IEBACiAgICAgZ2V0bW9kdWxlKCkgLSBkZXRlcm1pbmUgdGhlIG1vZHVsZSB0aGF0IGFuIG9iamVjdCBjYW1lIGZyb20KICAgICBnZXRjbGFzc3RyZWUoKSAtIGFycmFuZ2UgY2xhc3NlcyBzbyBhcyB0byByZXByZXNlbnQgdGhlaXIgaGllcmFyY2h5CiAKLSAgICBnZXRhcmdzcGVjKCksIGdldGFyZ3ZhbHVlcygpLCBnZXRjYWxsYXJncygpIC0gZ2V0IGluZm8gYWJvdXQgZnVuY3Rpb24gYXJndW1lbnRzCisgICAgZ2V0YXJndmFsdWVzKCksIGdldGNhbGxhcmdzKCkgLSBnZXQgaW5mbyBhYm91dCBmdW5jdGlvbiBhcmd1bWVudHMKICAgICBnZXRmdWxsYXJnc3BlYygpIC0gc2FtZSwgd2l0aCBzdXBwb3J0IGZvciBQeXRob24gMyBmZWF0dXJlcwogICAgIGZvcm1hdGFyZ3NwZWMoKSwgZm9ybWF0YXJndmFsdWVzKCkgLSBmb3JtYXQgYW4gYXJndW1lbnQgc3BlYwogICAgIGdldG91dGVyZnJhbWVzKCksIGdldGlubmVyZnJhbWVzKCkgLSBnZXQgaW5mbyBhYm91dCBmcmFtZXMKQEAgLTE3OSwxMiArMTc5LDI0IEBACiBkZWYgaXNjb3JvdXRpbmVmdW5jdGlvbihvYmplY3QpOgogICAgICIiIlJldHVybiB0cnVlIGlmIHRoZSBvYmplY3QgaXMgYSBjb3JvdXRpbmUgZnVuY3Rpb24uCiAKLSAgICBDb3JvdXRpbmUgZnVuY3Rpb25zIGFyZSBkZWZpbmVkIHdpdGggImFzeW5jIGRlZiIgc3ludGF4LAotICAgIG9yIGdlbmVyYXRvcnMgZGVjb3JhdGVkIHdpdGggInR5cGVzLmNvcm91dGluZSIuCisgICAgQ29yb3V0aW5lIGZ1bmN0aW9ucyBhcmUgZGVmaW5lZCB3aXRoICJhc3luYyBkZWYiIHN5bnRheC4KICAgICAiIiIKICAgICByZXR1cm4gYm9vbCgoaXNmdW5jdGlvbihvYmplY3QpIG9yIGlzbWV0aG9kKG9iamVjdCkpIGFuZAogICAgICAgICAgICAgICAgIG9iamVjdC5fX2NvZGVfXy5jb19mbGFncyAmIENPX0NPUk9VVElORSkKIAorZGVmIGlzYXN5bmNnZW5mdW5jdGlvbihvYmplY3QpOgorICAgICIiIlJldHVybiB0cnVlIGlmIHRoZSBvYmplY3QgaXMgYW4gYXN5bmNocm9ub3VzIGdlbmVyYXRvciBmdW5jdGlvbi4KKworICAgIEFzeW5jaHJvbm91cyBnZW5lcmF0b3IgZnVuY3Rpb25zIGFyZSBkZWZpbmVkIHdpdGggImFzeW5jIGRlZiIKKyAgICBzeW50YXggYW5kIGhhdmUgInlpZWxkIiBleHByZXNzaW9ucyBpbiB0aGVpciBib2R5LgorICAgICIiIgorICAgIHJldHVybiBib29sKChpc2Z1bmN0aW9uKG9iamVjdCkgb3IgaXNtZXRob2Qob2JqZWN0KSkgYW5kCisgICAgICAgICAgICAgICAgb2JqZWN0Ll9fY29kZV9fLmNvX2ZsYWdzICYgQ09fQVNZTkNfR0VORVJBVE9SKQorCitkZWYgaXNhc3luY2dlbihvYmplY3QpOgorICAgICIiIlJldHVybiB0cnVlIGlmIHRoZSBvYmplY3QgaXMgYW4gYXN5bmNocm9ub3VzIGdlbmVyYXRvci4iIiIKKyAgICByZXR1cm4gaXNpbnN0YW5jZShvYmplY3QsIHR5cGVzLkFzeW5jR2VuZXJhdG9yVHlwZSkKKwogZGVmIGlzZ2VuZXJhdG9yKG9iamVjdCk6CiAgICAgIiIiUmV0dXJuIHRydWUgaWYgdGhlIG9iamVjdCBpcyBhIGdlbmVyYXRvci4KIApAQCAtNjIzLDIzICs2MzUsNiBAQAogICAgIHJhaXNlIFR5cGVFcnJvcigneyFyfSBpcyBub3QgYSBtb2R1bGUsIGNsYXNzLCBtZXRob2QsICcKICAgICAgICAgICAgICAgICAgICAgJ2Z1bmN0aW9uLCB0cmFjZWJhY2ssIGZyYW1lLCBvciBjb2RlIG9iamVjdCcuZm9ybWF0KG9iamVjdCkpCiAKLU1vZHVsZUluZm8gPSBuYW1lZHR1cGxlKCdNb2R1bGVJbmZvJywgJ25hbWUgc3VmZml4IG1vZGUgbW9kdWxlX3R5cGUnKQotCi1kZWYgZ2V0bW9kdWxlaW5mbyhwYXRoKToKLSAgICAiIiJHZXQgdGhlIG1vZHVsZSBuYW1lLCBzdWZmaXgsIG1vZGUsIGFuZCBtb2R1bGUgdHlwZSBmb3IgYSBnaXZlbiBmaWxlLiIiIgotICAgIHdhcm5pbmdzLndhcm4oJ2luc3BlY3QuZ2V0bW9kdWxlaW5mbygpIGlzIGRlcHJlY2F0ZWQnLCBEZXByZWNhdGlvbldhcm5pbmcsCi0gICAgICAgICAgICAgICAgICAyKQotICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKLSAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKQotICAgICAgICBpbXBvcnQgaW1wCi0gICAgZmlsZW5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHBhdGgpCi0gICAgc3VmZml4ZXMgPSBbKC1sZW4oc3VmZml4KSwgc3VmZml4LCBtb2RlLCBtdHlwZSkKLSAgICAgICAgICAgICAgICAgICAgZm9yIHN1ZmZpeCwgbW9kZSwgbXR5cGUgaW4gaW1wLmdldF9zdWZmaXhlcygpXQotICAgIHN1ZmZpeGVzLnNvcnQoKSAjIHRyeSBsb25nZXN0IHN1ZmZpeGVzIGZpcnN0LCBpbiBjYXNlIHRoZXkgb3ZlcmxhcAotICAgIGZvciBuZWdsZW4sIHN1ZmZpeCwgbW9kZSwgbXR5cGUgaW4gc3VmZml4ZXM6Ci0gICAgICAgIGlmIGZpbGVuYW1lW25lZ2xlbjpdID09IHN1ZmZpeDoKLSAgICAgICAgICAgIHJldHVybiBNb2R1bGVJbmZvKGZpbGVuYW1lWzpuZWdsZW5dLCBzdWZmaXgsIG1vZGUsIG10eXBlKQotCiBkZWYgZ2V0bW9kdWxlbmFtZShwYXRoKToKICAgICAiIiJSZXR1cm4gdGhlIG1vZHVsZSBuYW1lIGZvciBhIGdpdmVuIGZpbGUsIG9yIE5vbmUuIiIiCiAgICAgZm5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHBhdGgpCkBAIC0xMDI0LDI0ICsxMDE5LDMwIEBACiBBcmdTcGVjID0gbmFtZWR0dXBsZSgnQXJnU3BlYycsICdhcmdzIHZhcmFyZ3Mga2V5d29yZHMgZGVmYXVsdHMnKQogCiBkZWYgZ2V0YXJnc3BlYyhmdW5jKToKLSAgICAiIiJHZXQgdGhlIG5hbWVzIGFuZCBkZWZhdWx0IHZhbHVlcyBvZiBhIGZ1bmN0aW9uJ3MgYXJndW1lbnRzLgorICAgICIiIkdldCB0aGUgbmFtZXMgYW5kIGRlZmF1bHQgdmFsdWVzIG9mIGEgZnVuY3Rpb24ncyBwYXJhbWV0ZXJzLgogCiAgICAgQSB0dXBsZSBvZiBmb3VyIHRoaW5ncyBpcyByZXR1cm5lZDogKGFyZ3MsIHZhcmFyZ3MsIGtleXdvcmRzLCBkZWZhdWx0cykuCiAgICAgJ2FyZ3MnIGlzIGEgbGlzdCBvZiB0aGUgYXJndW1lbnQgbmFtZXMsIGluY2x1ZGluZyBrZXl3b3JkLW9ubHkgYXJndW1lbnQgbmFtZXMuCi0gICAgJ3ZhcmFyZ3MnIGFuZCAna2V5d29yZHMnIGFyZSB0aGUgbmFtZXMgb2YgdGhlICogYW5kICoqIGFyZ3VtZW50cyBvciBOb25lLgotICAgICdkZWZhdWx0cycgaXMgYW4gbi10dXBsZSBvZiB0aGUgZGVmYXVsdCB2YWx1ZXMgb2YgdGhlIGxhc3QgbiBhcmd1bWVudHMuCisgICAgJ3ZhcmFyZ3MnIGFuZCAna2V5d29yZHMnIGFyZSB0aGUgbmFtZXMgb2YgdGhlICogYW5kICoqIHBhcmFtZXRlcnMgb3IgTm9uZS4KKyAgICAnZGVmYXVsdHMnIGlzIGFuIG4tdHVwbGUgb2YgdGhlIGRlZmF1bHQgdmFsdWVzIG9mIHRoZSBsYXN0IG4gcGFyYW1ldGVycy4KIAotICAgIFVzZSB0aGUgZ2V0ZnVsbGFyZ3NwZWMoKSBBUEkgZm9yIFB5dGhvbiAzIGNvZGUsIGFzIGFubm90YXRpb25zCi0gICAgYW5kIGtleXdvcmQgYXJndW1lbnRzIGFyZSBzdXBwb3J0ZWQuIGdldGFyZ3NwZWMoKSB3aWxsIHJhaXNlIFZhbHVlRXJyb3IKLSAgICBpZiB0aGUgZnVuYyBoYXMgZWl0aGVyIGFubm90YXRpb25zIG9yIGtleXdvcmQgYXJndW1lbnRzLgorICAgIFRoaXMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZCwgYXMgaXQgZG9lcyBub3Qgc3VwcG9ydCBhbm5vdGF0aW9ucyBvcgorICAgIGtleXdvcmQtb25seSBwYXJhbWV0ZXJzIGFuZCB3aWxsIHJhaXNlIFZhbHVlRXJyb3IgaWYgZWl0aGVyIGlzIHByZXNlbnQKKyAgICBvbiB0aGUgc3VwcGxpZWQgY2FsbGFibGUuCisKKyAgICBGb3IgYSBtb3JlIHN0cnVjdHVyZWQgaW50cm9zcGVjdGlvbiBBUEksIHVzZSBpbnNwZWN0LnNpZ25hdHVyZSgpIGluc3RlYWQuCisKKyAgICBBbHRlcm5hdGl2ZWx5LCB1c2UgZ2V0ZnVsbGFyZ3NwZWMoKSBmb3IgYW4gQVBJIHdpdGggYSBzaW1pbGFyIG5hbWVkdHVwbGUKKyAgICBiYXNlZCBpbnRlcmZhY2UsIGJ1dCBmdWxsIHN1cHBvcnQgZm9yIGFubm90YXRpb25zIGFuZCBrZXl3b3JkLW9ubHkKKyAgICBwYXJhbWV0ZXJzLgogICAgICIiIgogICAgIHdhcm5pbmdzLndhcm4oImluc3BlY3QuZ2V0YXJnc3BlYygpIGlzIGRlcHJlY2F0ZWQsICIKLSAgICAgICAgICAgICAgICAgICJ1c2UgaW5zcGVjdC5zaWduYXR1cmUoKSBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLAotICAgICAgICAgICAgICAgICAgc3RhY2tsZXZlbD0yKQorICAgICAgICAgICAgICAgICAgInVzZSBpbnNwZWN0LnNpZ25hdHVyZSgpIG9yIGluc3BlY3QuZ2V0ZnVsbGFyZ3NwZWMoKSIsCisgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICBhcmdzLCB2YXJhcmdzLCB2YXJrdywgZGVmYXVsdHMsIGt3b25seWFyZ3MsIGt3b25seWRlZmF1bHRzLCBhbm4gPSBcCiAgICAgICAgIGdldGZ1bGxhcmdzcGVjKGZ1bmMpCiAgICAgaWYga3dvbmx5YXJncyBvciBhbm46Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkZ1bmN0aW9uIGhhcyBrZXl3b3JkLW9ubHkgYXJndW1lbnRzIG9yIGFubm90YXRpb25zIgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJGdW5jdGlvbiBoYXMga2V5d29yZC1vbmx5IHBhcmFtZXRlcnMgb3IgYW5ub3RhdGlvbnMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgIiwgdXNlIGdldGZ1bGxhcmdzcGVjKCkgQVBJIHdoaWNoIGNhbiBzdXBwb3J0IHRoZW0iKQogICAgIHJldHVybiBBcmdTcGVjKGFyZ3MsIHZhcmFyZ3MsIHZhcmt3LCBkZWZhdWx0cykKIApAQCAtMTA0OSwyMCArMTA1MCwyMCBAQAogICAgICdhcmdzLCB2YXJhcmdzLCB2YXJrdywgZGVmYXVsdHMsIGt3b25seWFyZ3MsIGt3b25seWRlZmF1bHRzLCBhbm5vdGF0aW9ucycpCiAKIGRlZiBnZXRmdWxsYXJnc3BlYyhmdW5jKToKLSAgICAiIiJHZXQgdGhlIG5hbWVzIGFuZCBkZWZhdWx0IHZhbHVlcyBvZiBhIGNhbGxhYmxlIG9iamVjdCdzIGFyZ3VtZW50cy4KKyAgICAiIiJHZXQgdGhlIG5hbWVzIGFuZCBkZWZhdWx0IHZhbHVlcyBvZiBhIGNhbGxhYmxlIG9iamVjdCdzIHBhcmFtZXRlcnMuCiAKICAgICBBIHR1cGxlIG9mIHNldmVuIHRoaW5ncyBpcyByZXR1cm5lZDoKLSAgICAoYXJncywgdmFyYXJncywgdmFya3csIGRlZmF1bHRzLCBrd29ubHlhcmdzLCBrd29ubHlkZWZhdWx0cyBhbm5vdGF0aW9ucykuCi0gICAgJ2FyZ3MnIGlzIGEgbGlzdCBvZiB0aGUgYXJndW1lbnQgbmFtZXMuCi0gICAgJ3ZhcmFyZ3MnIGFuZCAndmFya3cnIGFyZSB0aGUgbmFtZXMgb2YgdGhlICogYW5kICoqIGFyZ3VtZW50cyBvciBOb25lLgotICAgICdkZWZhdWx0cycgaXMgYW4gbi10dXBsZSBvZiB0aGUgZGVmYXVsdCB2YWx1ZXMgb2YgdGhlIGxhc3QgbiBhcmd1bWVudHMuCi0gICAgJ2t3b25seWFyZ3MnIGlzIGEgbGlzdCBvZiBrZXl3b3JkLW9ubHkgYXJndW1lbnQgbmFtZXMuCisgICAgKGFyZ3MsIHZhcmFyZ3MsIHZhcmt3LCBkZWZhdWx0cywga3dvbmx5YXJncywga3dvbmx5ZGVmYXVsdHMsIGFubm90YXRpb25zKS4KKyAgICAnYXJncycgaXMgYSBsaXN0IG9mIHRoZSBwYXJhbWV0ZXIgbmFtZXMuCisgICAgJ3ZhcmFyZ3MnIGFuZCAndmFya3cnIGFyZSB0aGUgbmFtZXMgb2YgdGhlICogYW5kICoqIHBhcmFtZXRlcnMgb3IgTm9uZS4KKyAgICAnZGVmYXVsdHMnIGlzIGFuIG4tdHVwbGUgb2YgdGhlIGRlZmF1bHQgdmFsdWVzIG9mIHRoZSBsYXN0IG4gcGFyYW1ldGVycy4KKyAgICAna3dvbmx5YXJncycgaXMgYSBsaXN0IG9mIGtleXdvcmQtb25seSBwYXJhbWV0ZXIgbmFtZXMuCiAgICAgJ2t3b25seWRlZmF1bHRzJyBpcyBhIGRpY3Rpb25hcnkgbWFwcGluZyBuYW1lcyBmcm9tIGt3b25seWFyZ3MgdG8gZGVmYXVsdHMuCi0gICAgJ2Fubm90YXRpb25zJyBpcyBhIGRpY3Rpb25hcnkgbWFwcGluZyBhcmd1bWVudCBuYW1lcyB0byBhbm5vdGF0aW9ucy4KKyAgICAnYW5ub3RhdGlvbnMnIGlzIGEgZGljdGlvbmFyeSBtYXBwaW5nIHBhcmFtZXRlciBuYW1lcyB0byBhbm5vdGF0aW9ucy4KIAotICAgIFRoZSBmaXJzdCBmb3VyIGl0ZW1zIGluIHRoZSB0dXBsZSBjb3JyZXNwb25kIHRvIGdldGFyZ3NwZWMoKS4KLQotICAgIFRoaXMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZCwgdXNlIGluc3BlY3Quc2lnbmF0dXJlKCkgaW5zdGVhZC4KKyAgICBOb3RhYmxlIGRpZmZlcmVuY2VzIGZyb20gaW5zcGVjdC5zaWduYXR1cmUoKToKKyAgICAgIC0gdGhlICJzZWxmIiBwYXJhbWV0ZXIgaXMgYWx3YXlzIHJlcG9ydGVkLCBldmVuIGZvciBib3VuZCBtZXRob2RzCisgICAgICAtIHdyYXBwZXIgY2hhaW5zIGRlZmluZWQgYnkgX193cmFwcGVkX18gKm5vdCogdW53cmFwcGVkIGF1dG9tYXRpY2FsbHkKICAgICAiIiIKIAogICAgIHRyeToKQEAgLTExNzQsOCArMTE3NSw3IEBACiAgICAgICAgICAgICAgICAgICBmb3JtYXR2YWx1ZT1sYW1iZGEgdmFsdWU6ICc9JyArIHJlcHIodmFsdWUpLAogICAgICAgICAgICAgICAgICAgZm9ybWF0cmV0dXJucz1sYW1iZGEgdGV4dDogJyAtPiAnICsgdGV4dCwKICAgICAgICAgICAgICAgICAgIGZvcm1hdGFubm90YXRpb249Zm9ybWF0YW5ub3RhdGlvbik6Ci0gICAgIiIiRm9ybWF0IGFuIGFyZ3VtZW50IHNwZWMgZnJvbSB0aGUgdmFsdWVzIHJldHVybmVkIGJ5IGdldGFyZ3NwZWMKLSAgICBvciBnZXRmdWxsYXJnc3BlYy4KKyAgICAiIiJGb3JtYXQgYW4gYXJndW1lbnQgc3BlYyBmcm9tIHRoZSB2YWx1ZXMgcmV0dXJuZWQgYnkgZ2V0ZnVsbGFyZ3NwZWMuCiAKICAgICBUaGUgZmlyc3Qgc2V2ZW4gYXJndW1lbnRzIGFyZSAoYXJncywgdmFyYXJncywgdmFya3csIGRlZmF1bHRzLAogICAgIGt3b25seWFyZ3MsIGt3b25seWRlZmF1bHRzLCBhbm5vdGF0aW9ucykuICBUaGUgb3RoZXIgZml2ZSBhcmd1bWVudHMKQEAgLTI0MTcsNiArMjQxNywyMCBAQAogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShuYW1lLCBzdHIpOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJuYW1lIG11c3QgYmUgYSBzdHIsIG5vdCBhIHshcn0iLmZvcm1hdChuYW1lKSkKIAorICAgICAgICBpZiBuYW1lWzBdID09ICcuJyBhbmQgbmFtZVsxOl0uaXNkaWdpdCgpOgorICAgICAgICAgICAgIyBUaGVzZSBhcmUgaW1wbGljaXQgYXJndW1lbnRzIGdlbmVyYXRlZCBieSBjb21wcmVoZW5zaW9ucy4gSW4KKyAgICAgICAgICAgICMgb3JkZXIgdG8gcHJvdmlkZSBhIGZyaWVuZGxpZXIgaW50ZXJmYWNlIHRvIHVzZXJzLCB3ZSByZWNhc3QKKyAgICAgICAgICAgICMgdGhlaXIgbmFtZSBhcyAiaW1wbGljaXROIiBhbmQgdHJlYXQgdGhlbSBhcyBwb3NpdGlvbmFsLW9ubHkuCisgICAgICAgICAgICAjIFNlZSBpc3N1ZSAxOTYxMS4KKyAgICAgICAgICAgIGlmIGtpbmQgIT0gX1BPU0lUSU9OQUxfT1JfS0VZV09SRDoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAorICAgICAgICAgICAgICAgICAgICAnaW1wbGljaXQgYXJndW1lbnRzIG11c3QgYmUgcGFzc2VkIGluIGFzIHt9Jy5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICBfUE9TSVRJT05BTF9PUl9LRVlXT1JECisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLl9raW5kID0gX1BPU0lUSU9OQUxfT05MWQorICAgICAgICAgICAgbmFtZSA9ICdpbXBsaWNpdHt9Jy5mb3JtYXQobmFtZVsxOl0pCisKICAgICAgICAgaWYgbm90IG5hbWUuaXNpZGVudGlmaWVyKCk6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd7IXJ9IGlzIG5vdCBhIHZhbGlkIHBhcmFtZXRlciBuYW1lJy5mb3JtYXQobmFtZSkpCiAKZGlmZiAtLWdpdCBhL0xpYi9pby5weSBiL0xpYi9pby5weQppbmRleCBlMDNkYjk3Li45NjhlZTUwIDEwMDY0NAotLS0gYS9MaWIvaW8ucHkKKysrIGIvTGliL2lvLnB5CkBAIC05MCwzICs5MCwxMCBAQAogZm9yIGtsYXNzIGluIChTdHJpbmdJTywgVGV4dElPV3JhcHBlcik6CiAgICAgVGV4dElPQmFzZS5yZWdpc3RlcihrbGFzcykKIGRlbCBrbGFzcworCit0cnk6CisgICAgZnJvbSBfaW8gaW1wb3J0IF9XaW5kb3dzQ29uc29sZUlPCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgcGFzcworZWxzZToKKyAgICBSYXdJT0Jhc2UucmVnaXN0ZXIoX1dpbmRvd3NDb25zb2xlSU8pCmRpZmYgLS1naXQgYS9MaWIvaXBhZGRyZXNzLnB5IGIvTGliL2lwYWRkcmVzcy5weQppbmRleCAxZjkwMDU4Li4yMGYzM2NiIDEwMDY0NAotLS0gYS9MaWIvaXBhZGRyZXNzLnB5CisrKyBiL0xpYi9pcGFkZHJlc3MucHkKQEAgLTYzNiwxMiArNjM2LDEyIEBACiAgICAgICAgIGJyb2FkY2FzdCA9IGludChzZWxmLmJyb2FkY2FzdF9hZGRyZXNzKQogICAgICAgICBpZiBuID49IDA6CiAgICAgICAgICAgICBpZiBuZXR3b3JrICsgbiA+IGJyb2FkY2FzdDoKLSAgICAgICAgICAgICAgICByYWlzZSBJbmRleEVycm9yCisgICAgICAgICAgICAgICAgcmFpc2UgSW5kZXhFcnJvcignYWRkcmVzcyBvdXQgb2YgcmFuZ2UnKQogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2FkZHJlc3NfY2xhc3MobmV0d29yayArIG4pCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBuICs9IDEKICAgICAgICAgICAgIGlmIGJyb2FkY2FzdCArIG4gPCBuZXR3b3JrOgotICAgICAgICAgICAgICAgIHJhaXNlIEluZGV4RXJyb3IKKyAgICAgICAgICAgICAgICByYWlzZSBJbmRleEVycm9yKCdhZGRyZXNzIG91dCBvZiByYW5nZScpCiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fYWRkcmVzc19jbGFzcyhicm9hZGNhc3QgKyBuKQogCiAgICAgZGVmIF9fbHRfXyhzZWxmLCBvdGhlcik6CmRpZmYgLS1naXQgYS9MaWIvanNvbi9fX2luaXRfXy5weSBiL0xpYi9qc29uL19faW5pdF9fLnB5CmluZGV4IDExMThiMGUuLmI4ZDVlNmMgMTAwNjQ0Ci0tLSBhL0xpYi9qc29uL19faW5pdF9fLnB5CisrKyBiL0xpYi9qc29uL19faW5pdF9fLnB5CkBAIC0xMDUsNiArMTA1LDcgQEAKIAogZnJvbSAuZGVjb2RlciBpbXBvcnQgSlNPTkRlY29kZXIsIEpTT05EZWNvZGVFcnJvcgogZnJvbSAuZW5jb2RlciBpbXBvcnQgSlNPTkVuY29kZXIKK2ltcG9ydCBjb2RlY3MKIAogX2RlZmF1bHRfZW5jb2RlciA9IEpTT05FbmNvZGVyKAogICAgIHNraXBrZXlzPUZhbHNlLApAQCAtMTE2LDcgKzExNyw3IEBACiAgICAgZGVmYXVsdD1Ob25lLAogKQogCi1kZWYgZHVtcChvYmosIGZwLCBza2lwa2V5cz1GYWxzZSwgZW5zdXJlX2FzY2lpPVRydWUsIGNoZWNrX2NpcmN1bGFyPVRydWUsCitkZWYgZHVtcChvYmosIGZwLCAqLCBza2lwa2V5cz1GYWxzZSwgZW5zdXJlX2FzY2lpPVRydWUsIGNoZWNrX2NpcmN1bGFyPVRydWUsCiAgICAgICAgIGFsbG93X25hbj1UcnVlLCBjbHM9Tm9uZSwgaW5kZW50PU5vbmUsIHNlcGFyYXRvcnM9Tm9uZSwKICAgICAgICAgZGVmYXVsdD1Ob25lLCBzb3J0X2tleXM9RmFsc2UsICoqa3cpOgogICAgICIiIlNlcmlhbGl6ZSBgYG9iamBgIGFzIGEgSlNPTiBmb3JtYXR0ZWQgc3RyZWFtIHRvIGBgZnBgYCAoYQpAQCAtMTc5LDcgKzE4MCw3IEBACiAgICAgICAgIGZwLndyaXRlKGNodW5rKQogCiAKLWRlZiBkdW1wcyhvYmosIHNraXBrZXlzPUZhbHNlLCBlbnN1cmVfYXNjaWk9VHJ1ZSwgY2hlY2tfY2lyY3VsYXI9VHJ1ZSwKK2RlZiBkdW1wcyhvYmosICosIHNraXBrZXlzPUZhbHNlLCBlbnN1cmVfYXNjaWk9VHJ1ZSwgY2hlY2tfY2lyY3VsYXI9VHJ1ZSwKICAgICAgICAgYWxsb3dfbmFuPVRydWUsIGNscz1Ob25lLCBpbmRlbnQ9Tm9uZSwgc2VwYXJhdG9ycz1Ob25lLAogICAgICAgICBkZWZhdWx0PU5vbmUsIHNvcnRfa2V5cz1GYWxzZSwgKiprdyk6CiAgICAgIiIiU2VyaWFsaXplIGBgb2JqYGAgdG8gYSBKU09OIGZvcm1hdHRlZCBgYHN0cmBgLgpAQCAtMjQwLDcgKzI0MSwzNyBAQAogX2RlZmF1bHRfZGVjb2RlciA9IEpTT05EZWNvZGVyKG9iamVjdF9ob29rPU5vbmUsIG9iamVjdF9wYWlyc19ob29rPU5vbmUpCiAKIAotZGVmIGxvYWQoZnAsIGNscz1Ob25lLCBvYmplY3RfaG9vaz1Ob25lLCBwYXJzZV9mbG9hdD1Ob25lLAorZGVmIGRldGVjdF9lbmNvZGluZyhiKToKKyAgICBic3RhcnRzd2l0aCA9IGIuc3RhcnRzd2l0aAorICAgIGlmIGJzdGFydHN3aXRoKChjb2RlY3MuQk9NX1VURjMyX0JFLCBjb2RlY3MuQk9NX1VURjMyX0xFKSk6CisgICAgICAgIHJldHVybiAndXRmLTMyJworICAgIGlmIGJzdGFydHN3aXRoKChjb2RlY3MuQk9NX1VURjE2X0JFLCBjb2RlY3MuQk9NX1VURjE2X0xFKSk6CisgICAgICAgIHJldHVybiAndXRmLTE2JworICAgIGlmIGJzdGFydHN3aXRoKGNvZGVjcy5CT01fVVRGOCk6CisgICAgICAgIHJldHVybiAndXRmLTgtc2lnJworCisgICAgaWYgbGVuKGIpID49IDQ6CisgICAgICAgIGlmIG5vdCBiWzBdOgorICAgICAgICAgICAgIyAwMCAwMCAtLSAtLSAtIHV0Zi0zMi1iZQorICAgICAgICAgICAgIyAwMCBYWCAtLSAtLSAtIHV0Zi0xNi1iZQorICAgICAgICAgICAgcmV0dXJuICd1dGYtMTYtYmUnIGlmIGJbMV0gZWxzZSAndXRmLTMyLWJlJworICAgICAgICBpZiBub3QgYlsxXToKKyAgICAgICAgICAgICMgWFggMDAgMDAgMDAgLSB1dGYtMzItbGUKKyAgICAgICAgICAgICMgWFggMDAgMDAgWFggLSB1dGYtMTYtbGUKKyAgICAgICAgICAgICMgWFggMDAgWFggLS0gLSB1dGYtMTYtbGUKKyAgICAgICAgICAgIHJldHVybiAndXRmLTE2LWxlJyBpZiBiWzJdIG9yIGJbM10gZWxzZSAndXRmLTMyLWxlJworICAgIGVsaWYgbGVuKGIpID09IDI6CisgICAgICAgIGlmIG5vdCBiWzBdOgorICAgICAgICAgICAgIyAwMCBYWCAtIHV0Zi0xNi1iZQorICAgICAgICAgICAgcmV0dXJuICd1dGYtMTYtYmUnCisgICAgICAgIGlmIG5vdCBiWzFdOgorICAgICAgICAgICAgIyBYWCAwMCAtIHV0Zi0xNi1sZQorICAgICAgICAgICAgcmV0dXJuICd1dGYtMTYtbGUnCisgICAgIyBkZWZhdWx0CisgICAgcmV0dXJuICd1dGYtOCcKKworCitkZWYgbG9hZChmcCwgKiwgY2xzPU5vbmUsIG9iamVjdF9ob29rPU5vbmUsIHBhcnNlX2Zsb2F0PU5vbmUsCiAgICAgICAgIHBhcnNlX2ludD1Ob25lLCBwYXJzZV9jb25zdGFudD1Ob25lLCBvYmplY3RfcGFpcnNfaG9vaz1Ob25lLCAqKmt3KToKICAgICAiIiJEZXNlcmlhbGl6ZSBgYGZwYGAgKGEgYGAucmVhZCgpYGAtc3VwcG9ydGluZyBmaWxlLWxpa2Ugb2JqZWN0IGNvbnRhaW5pbmcKICAgICBhIEpTT04gZG9jdW1lbnQpIHRvIGEgUHl0aG9uIG9iamVjdC4KQEAgLTI2OCwxMCArMjk5LDEwIEBACiAgICAgICAgIHBhcnNlX2NvbnN0YW50PXBhcnNlX2NvbnN0YW50LCBvYmplY3RfcGFpcnNfaG9vaz1vYmplY3RfcGFpcnNfaG9vaywgKiprdykKIAogCi1kZWYgbG9hZHMocywgZW5jb2Rpbmc9Tm9uZSwgY2xzPU5vbmUsIG9iamVjdF9ob29rPU5vbmUsIHBhcnNlX2Zsb2F0PU5vbmUsCitkZWYgbG9hZHMocywgKiwgZW5jb2Rpbmc9Tm9uZSwgY2xzPU5vbmUsIG9iamVjdF9ob29rPU5vbmUsIHBhcnNlX2Zsb2F0PU5vbmUsCiAgICAgICAgIHBhcnNlX2ludD1Ob25lLCBwYXJzZV9jb25zdGFudD1Ob25lLCBvYmplY3RfcGFpcnNfaG9vaz1Ob25lLCAqKmt3KToKLSAgICAiIiJEZXNlcmlhbGl6ZSBgYHNgYCAoYSBgYHN0cmBgIGluc3RhbmNlIGNvbnRhaW5pbmcgYSBKU09OCi0gICAgZG9jdW1lbnQpIHRvIGEgUHl0aG9uIG9iamVjdC4KKyAgICAiIiJEZXNlcmlhbGl6ZSBgYHNgYCAoYSBgYHN0cmBgLCBgYGJ5dGVzYGAgb3IgYGBieXRlYXJyYXlgYCBpbnN0YW5jZQorICAgIGNvbnRhaW5pbmcgYSBKU09OIGRvY3VtZW50KSB0byBhIFB5dGhvbiBvYmplY3QuCiAKICAgICBgYG9iamVjdF9ob29rYGAgaXMgYW4gb3B0aW9uYWwgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIGNhbGxlZCB3aXRoIHRoZQogICAgIHJlc3VsdCBvZiBhbnkgb2JqZWN0IGxpdGVyYWwgZGVjb2RlIChhIGBgZGljdGBgKS4gVGhlIHJldHVybiB2YWx1ZSBvZgpAQCAtMzA3LDEyICszMzgsMTYgQEAKICAgICBUaGUgYGBlbmNvZGluZ2BgIGFyZ3VtZW50IGlzIGlnbm9yZWQgYW5kIGRlcHJlY2F0ZWQuCiAKICAgICAiIiIKLSAgICBpZiBub3QgaXNpbnN0YW5jZShzLCBzdHIpOgotICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ3RoZSBKU09OIG9iamVjdCBtdXN0IGJlIHN0ciwgbm90IHshcn0nLmZvcm1hdCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLl9fY2xhc3NfXy5fX25hbWVfXykpCi0gICAgaWYgcy5zdGFydHN3aXRoKHUnXHVmZWZmJyk6Ci0gICAgICAgIHJhaXNlIEpTT05EZWNvZGVFcnJvcigiVW5leHBlY3RlZCBVVEYtOCBCT00gKGRlY29kZSB1c2luZyB1dGYtOC1zaWcpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMsIDApCisgICAgaWYgaXNpbnN0YW5jZShzLCBzdHIpOgorICAgICAgICBpZiBzLnN0YXJ0c3dpdGgoJ1x1ZmVmZicpOgorICAgICAgICAgICAgcmFpc2UgSlNPTkRlY29kZUVycm9yKCJVbmV4cGVjdGVkIFVURi04IEJPTSAoZGVjb2RlIHVzaW5nIHV0Zi04LXNpZykiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMsIDApCisgICAgZWxzZToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UocywgKGJ5dGVzLCBieXRlYXJyYXkpKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigndGhlIEpTT04gb2JqZWN0IG11c3QgYmUgc3RyLCBieXRlcyBvciBieXRlYXJyYXksICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbm90IHshcn0nLmZvcm1hdChzLl9fY2xhc3NfXy5fX25hbWVfXykpCisgICAgICAgIHMgPSBzLmRlY29kZShkZXRlY3RfZW5jb2RpbmcocyksICdzdXJyb2dhdGVwYXNzJykKKwogICAgIGlmIChjbHMgaXMgTm9uZSBhbmQgb2JqZWN0X2hvb2sgaXMgTm9uZSBhbmQKICAgICAgICAgICAgIHBhcnNlX2ludCBpcyBOb25lIGFuZCBwYXJzZV9mbG9hdCBpcyBOb25lIGFuZAogICAgICAgICAgICAgcGFyc2VfY29uc3RhbnQgaXMgTm9uZSBhbmQgb2JqZWN0X3BhaXJzX2hvb2sgaXMgTm9uZSBhbmQgbm90IGt3KToKZGlmZiAtLWdpdCBhL0xpYi9qc29uL2RlY29kZXIucHkgYi9MaWIvanNvbi9kZWNvZGVyLnB5CmluZGV4IDBmMDNmMjAuLjI0MjJjNmEgMTAwNjQ0Ci0tLSBhL0xpYi9qc29uL2RlY29kZXIucHkKKysrIGIvTGliL2pzb24vZGVjb2Rlci5weQpAQCAtMjgwLDcgKzI4MCw3IEBACiAKICAgICAiIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvYmplY3RfaG9vaz1Ob25lLCBwYXJzZV9mbG9hdD1Ob25lLAorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqLCBvYmplY3RfaG9vaz1Ob25lLCBwYXJzZV9mbG9hdD1Ob25lLAogICAgICAgICAgICAgcGFyc2VfaW50PU5vbmUsIHBhcnNlX2NvbnN0YW50PU5vbmUsIHN0cmljdD1UcnVlLAogICAgICAgICAgICAgb2JqZWN0X3BhaXJzX2hvb2s9Tm9uZSk6CiAgICAgICAgICIiImBgb2JqZWN0X2hvb2tgYCwgaWYgc3BlY2lmaWVkLCB3aWxsIGJlIGNhbGxlZCB3aXRoIHRoZSByZXN1bHQKZGlmZiAtLWdpdCBhL0xpYi9qc29uL2VuY29kZXIucHkgYi9MaWIvanNvbi9lbmNvZGVyLnB5CmluZGV4IGQ1OTY0ODkuLjQxYTQ5N2MgMTAwNjQ0Ci0tLSBhL0xpYi9qc29uL2VuY29kZXIucHkKKysrIGIvTGliL2pzb24vZW5jb2Rlci5weQpAQCAtMTAxLDcgKzEwMSw3IEBACiAgICAgIiIiCiAgICAgaXRlbV9zZXBhcmF0b3IgPSAnLCAnCiAgICAga2V5X3NlcGFyYXRvciA9ICc6ICcKLSAgICBkZWYgX19pbml0X18oc2VsZiwgc2tpcGtleXM9RmFsc2UsIGVuc3VyZV9hc2NpaT1UcnVlLAorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqLCBza2lwa2V5cz1GYWxzZSwgZW5zdXJlX2FzY2lpPVRydWUsCiAgICAgICAgICAgICBjaGVja19jaXJjdWxhcj1UcnVlLCBhbGxvd19uYW49VHJ1ZSwgc29ydF9rZXlzPUZhbHNlLAogICAgICAgICAgICAgaW5kZW50PU5vbmUsIHNlcGFyYXRvcnM9Tm9uZSwgZGVmYXVsdD1Ob25lKToKICAgICAgICAgIiIiQ29uc3RydWN0b3IgZm9yIEpTT05FbmNvZGVyLCB3aXRoIHNlbnNpYmxlIGRlZmF1bHRzLgpAQCAtMTc2LDcgKzE3Niw4IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT05FbmNvZGVyLmRlZmF1bHQoc2VsZiwgbykKIAogICAgICAgICAiIiIKLSAgICAgICAgcmFpc2UgVHlwZUVycm9yKHJlcHIobykgKyAiIGlzIG5vdCBKU09OIHNlcmlhbGl6YWJsZSIpCisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiT2JqZWN0IG9mIHR5cGUgJyVzJyBpcyBub3QgSlNPTiBzZXJpYWxpemFibGUiICUKKyAgICAgICAgICAgICAgICAgICAgICAgIG8uX19jbGFzc19fLl9fbmFtZV9fKQogCiAgICAgZGVmIGVuY29kZShzZWxmLCBvKToKICAgICAgICAgIiIiUmV0dXJuIGEgSlNPTiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBQeXRob24gZGF0YSBzdHJ1Y3R1cmUuCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy9HcmFtbWFyLnR4dCBiL0xpYi9saWIydG8zL0dyYW1tYXIudHh0CmluZGV4IDYwNTAzZGQuLjJhYmQ1ZWUgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL0dyYW1tYXIudHh0CisrKyBiL0xpYi9saWIydG8zL0dyYW1tYXIudHh0CkBAIC01NCwxMiArNTQsMTMgQEAKIHNpbXBsZV9zdG10OiBzbWFsbF9zdG10ICgnOycgc21hbGxfc3RtdCkqIFsnOyddIE5FV0xJTkUKIHNtYWxsX3N0bXQ6IChleHByX3N0bXQgfCBwcmludF9zdG10ICB8IGRlbF9zdG10IHwgcGFzc19zdG10IHwgZmxvd19zdG10IHwKICAgICAgICAgICAgICBpbXBvcnRfc3RtdCB8IGdsb2JhbF9zdG10IHwgZXhlY19zdG10IHwgYXNzZXJ0X3N0bXQpCi1leHByX3N0bXQ6IHRlc3RsaXN0X3N0YXJfZXhwciAoYXVnYXNzaWduICh5aWVsZF9leHByfHRlc3RsaXN0KSB8CitleHByX3N0bXQ6IHRlc3RsaXN0X3N0YXJfZXhwciAoYW5uYXNzaWduIHwgYXVnYXNzaWduICh5aWVsZF9leHByfHRlc3RsaXN0KSB8CiAgICAgICAgICAgICAgICAgICAgICAoJz0nICh5aWVsZF9leHByfHRlc3RsaXN0X3N0YXJfZXhwcikpKikKK2FubmFzc2lnbjogJzonIHRlc3QgWyc9JyB0ZXN0XQogdGVzdGxpc3Rfc3Rhcl9leHByOiAodGVzdHxzdGFyX2V4cHIpICgnLCcgKHRlc3R8c3Rhcl9leHByKSkqIFsnLCddCiBhdWdhc3NpZ246ICgnKz0nIHwgJy09JyB8ICcqPScgfCAnQD0nIHwgJy89JyB8ICclPScgfCAnJj0nIHwgJ3w9JyB8ICdePScgfAogICAgICAgICAgICAgJzw8PScgfCAnPj49JyB8ICcqKj0nIHwgJy8vPScpCi0jIEZvciBub3JtYWwgYXNzaWdubWVudHMsIGFkZGl0aW9uYWwgcmVzdHJpY3Rpb25zIGVuZm9yY2VkIGJ5IHRoZSBpbnRlcnByZXRlcgorIyBGb3Igbm9ybWFsIGFuZCBhbm5vdGF0ZWQgYXNzaWdubWVudHMsIGFkZGl0aW9uYWwgcmVzdHJpY3Rpb25zIGVuZm9yY2VkIGJ5IHRoZSBpbnRlcnByZXRlcgogcHJpbnRfc3RtdDogJ3ByaW50JyAoIFsgdGVzdCAoJywnIHRlc3QpKiBbJywnXSBdIHwKICAgICAgICAgICAgICAgICAgICAgICAnPj4nIHRlc3QgWyAoJywnIHRlc3QpKyBbJywnXSBdICkKIGRlbF9zdG10OiAnZGVsJyBleHBybGlzdApAQCAtMTYwLDcgKzE2MSw3IEBACiAJICAgIHN0YXJfZXhwciApCiAKIGNvbXBfaXRlcjogY29tcF9mb3IgfCBjb21wX2lmCi1jb21wX2ZvcjogJ2ZvcicgZXhwcmxpc3QgJ2luJyB0ZXN0bGlzdF9zYWZlIFtjb21wX2l0ZXJdCitjb21wX2ZvcjogW0FTWU5DXSAnZm9yJyBleHBybGlzdCAnaW4nIHRlc3RsaXN0X3NhZmUgW2NvbXBfaXRlcl0KIGNvbXBfaWY6ICdpZicgb2xkX3Rlc3QgW2NvbXBfaXRlcl0KIAogdGVzdGxpc3QxOiB0ZXN0ICgnLCcgdGVzdCkqCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy9maXhlcl91dGlsLnB5IGIvTGliL2xpYjJ0bzMvZml4ZXJfdXRpbC5weQppbmRleCA0NDUwMmJmLi5iYWJlNmNiIDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy9maXhlcl91dGlsLnB5CisrKyBiL0xpYi9saWIydG8zL2ZpeGVyX3V0aWwucHkKQEAgLTEsOCArMSw2IEBACiAiIiJVdGlsaXR5IGZ1bmN0aW9ucywgbm9kZSBjb25zdHJ1Y3Rpb24gbWFjcm9zLCBldGMuIiIiCiAjIEF1dGhvcjogQ29sbGluIFdpbnRlcgogCi1mcm9tIGl0ZXJ0b29scyBpbXBvcnQgaXNsaWNlCi0KICMgTG9jYWwgaW1wb3J0cwogZnJvbSAucGdlbjIgaW1wb3J0IHRva2VuCiBmcm9tIC5weXRyZWUgaW1wb3J0IExlYWYsIE5vZGUKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9kaWN0LnB5IGIvTGliL2xpYjJ0bzMvZml4ZXMvZml4X2RpY3QucHkKaW5kZXggOTYzZjk1Mi4uZDM2NTVjOSAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvZml4ZXMvZml4X2RpY3QucHkKKysrIGIvTGliL2xpYjJ0bzMvZml4ZXMvZml4X2RpY3QucHkKQEAgLTMwLDkgKzMwLDggQEAKICMgTG9jYWwgaW1wb3J0cwogZnJvbSAuLiBpbXBvcnQgcHl0cmVlCiBmcm9tIC4uIGltcG9ydCBwYXRjb21wCi1mcm9tIC4ucGdlbjIgaW1wb3J0IHRva2VuCiBmcm9tIC4uIGltcG9ydCBmaXhlcl9iYXNlCi1mcm9tIC4uZml4ZXJfdXRpbCBpbXBvcnQgTmFtZSwgQ2FsbCwgTFBhcmVuLCBSUGFyZW4sIEFyZ0xpc3QsIERvdAorZnJvbSAuLmZpeGVyX3V0aWwgaW1wb3J0IE5hbWUsIENhbGwsIERvdAogZnJvbSAuLiBpbXBvcnQgZml4ZXJfdXRpbAogCiAKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9leGVjLnB5IGIvTGliL2xpYjJ0bzMvZml4ZXMvZml4X2V4ZWMucHkKaW5kZXggMmM5YjcyZC4uYWI5MjFlZSAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvZml4ZXMvZml4X2V4ZWMucHkKKysrIGIvTGliL2xpYjJ0bzMvZml4ZXMvZml4X2V4ZWMucHkKQEAgLTEwLDcgKzEwLDYgQEAKICIiIgogCiAjIExvY2FsIGltcG9ydHMKLWZyb20gLi4gaW1wb3J0IHB5dHJlZQogZnJvbSAuLiBpbXBvcnQgZml4ZXJfYmFzZQogZnJvbSAuLmZpeGVyX3V0aWwgaW1wb3J0IENvbW1hLCBOYW1lLCBDYWxsCiAKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9maWx0ZXIucHkgYi9MaWIvbGliMnRvMy9maXhlcy9maXhfZmlsdGVyLnB5CmluZGV4IDM5MTg4OWYuLmJiNjcxOGMgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9maWx0ZXIucHkKKysrIGIvTGliL2xpYjJ0bzMvZml4ZXMvZml4X2ZpbHRlci5weQpAQCAtMTQsNyArMTQsNiBAQAogIiIiCiAKICMgTG9jYWwgaW1wb3J0cwotZnJvbSAuLnBnZW4yIGltcG9ydCB0b2tlbgogZnJvbSAuLiBpbXBvcnQgZml4ZXJfYmFzZQogZnJvbSAuLmZpeGVyX3V0aWwgaW1wb3J0IE5hbWUsIENhbGwsIExpc3RDb21wLCBpbl9zcGVjaWFsX2NvbnRleHQKIApkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvZml4ZXMvZml4X2hhc19rZXkucHkgYi9MaWIvbGliMnRvMy9maXhlcy9maXhfaGFzX2tleS5weQppbmRleCAxOGM1NjBmLi40Mzk3MDhjIDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy9maXhlcy9maXhfaGFzX2tleS5weQorKysgYi9MaWIvbGliMnRvMy9maXhlcy9maXhfaGFzX2tleS5weQpAQCAtMzEsNyArMzEsNiBAQAogCiAjIExvY2FsIGltcG9ydHMKIGZyb20gLi4gaW1wb3J0IHB5dHJlZQotZnJvbSAuLnBnZW4yIGltcG9ydCB0b2tlbgogZnJvbSAuLiBpbXBvcnQgZml4ZXJfYmFzZQogZnJvbSAuLmZpeGVyX3V0aWwgaW1wb3J0IE5hbWUsIHBhcmVudGhlc2l6ZQogCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy9maXhlcy9maXhfbWV0YWNsYXNzLnB5IGIvTGliL2xpYjJ0bzMvZml4ZXMvZml4X21ldGFjbGFzcy5weQppbmRleCA0NmM3YWFmLi44ZTM0NDYzIDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy9maXhlcy9maXhfbWV0YWNsYXNzLnB5CisrKyBiL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9tZXRhY2xhc3MucHkKQEAgLTIwLDcgKzIwLDcgQEAKICMgTG9jYWwgaW1wb3J0cwogZnJvbSAuLiBpbXBvcnQgZml4ZXJfYmFzZQogZnJvbSAuLnB5Z3JhbSBpbXBvcnQgdG9rZW4KLWZyb20gLi5maXhlcl91dGlsIGltcG9ydCBOYW1lLCBzeW1zLCBOb2RlLCBMZWFmCitmcm9tIC4uZml4ZXJfdXRpbCBpbXBvcnQgc3ltcywgTm9kZSwgTGVhZgogCiAKIGRlZiBoYXNfbWV0YWNsYXNzKHBhcmVudCk6CmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy9maXhlcy9maXhfbm9uemVyby5weSBiL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9ub256ZXJvLnB5CmluZGV4IGFkOTFhMjkuLmMyMjk1OTYgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9ub256ZXJvLnB5CisrKyBiL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9ub256ZXJvLnB5CkBAIC0zLDcgKzMsNyBAQAogCiAjIExvY2FsIGltcG9ydHMKIGZyb20gLi4gaW1wb3J0IGZpeGVyX2Jhc2UKLWZyb20gLi5maXhlcl91dGlsIGltcG9ydCBOYW1lLCBzeW1zCitmcm9tIC4uZml4ZXJfdXRpbCBpbXBvcnQgTmFtZQogCiBjbGFzcyBGaXhOb256ZXJvKGZpeGVyX2Jhc2UuQmFzZUZpeCk6CiAgICAgQk1fY29tcGF0aWJsZSA9IFRydWUKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9wcmludC5weSBiL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9wcmludC5weQppbmRleCBhMWZlMmY1Li44NzgwMzIyIDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy9maXhlcy9maXhfcHJpbnQucHkKKysrIGIvTGliL2xpYjJ0bzMvZml4ZXMvZml4X3ByaW50LnB5CkBAIC0xOCw3ICsxOCw3IEBACiBmcm9tIC4uIGltcG9ydCBweXRyZWUKIGZyb20gLi5wZ2VuMiBpbXBvcnQgdG9rZW4KIGZyb20gLi4gaW1wb3J0IGZpeGVyX2Jhc2UKLWZyb20gLi5maXhlcl91dGlsIGltcG9ydCBOYW1lLCBDYWxsLCBDb21tYSwgU3RyaW5nLCBpc190dXBsZQorZnJvbSAuLmZpeGVyX3V0aWwgaW1wb3J0IE5hbWUsIENhbGwsIENvbW1hLCBTdHJpbmcKIAogCiBwYXJlbmRfZXhwciA9IHBhdGNvbXAuY29tcGlsZV9wYXR0ZXJuKApkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvZml4ZXMvZml4X3R5cGVzLnB5IGIvTGliL2xpYjJ0bzMvZml4ZXMvZml4X3R5cGVzLnB5CmluZGV4IGRiMzQxMDQuLjY3YmY1MWYgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF90eXBlcy5weQorKysgYi9MaWIvbGliMnRvMy9maXhlcy9maXhfdHlwZXMucHkKQEAgLTIwLDcgKzIwLDYgQEAKICIiIgogCiAjIExvY2FsIGltcG9ydHMKLWZyb20gLi5wZ2VuMiBpbXBvcnQgdG9rZW4KIGZyb20gLi4gaW1wb3J0IGZpeGVyX2Jhc2UKIGZyb20gLi5maXhlcl91dGlsIGltcG9ydCBOYW1lCiAKQEAgLTQyLDcgKzQxLDcgQEAKICAgICAgICAgJ05vdEltcGxlbWVudGVkVHlwZScgOiAndHlwZShOb3RJbXBsZW1lbnRlZCknLAogICAgICAgICAnU2xpY2VUeXBlJyA6ICdzbGljZScsCiAgICAgICAgICdTdHJpbmdUeXBlJzogJ2J5dGVzJywgIyBYWFggPwotICAgICAgICAnU3RyaW5nVHlwZXMnIDogJ3N0cicsICMgWFhYID8KKyAgICAgICAgJ1N0cmluZ1R5cGVzJyA6ICcoc3RyLCknLCAjIFhYWCA/CiAgICAgICAgICdUdXBsZVR5cGUnOiAndHVwbGUnLAogICAgICAgICAnVHlwZVR5cGUnIDogJ3R5cGUnLAogICAgICAgICAnVW5pY29kZVR5cGUnOiAnc3RyJywKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF91cmxsaWIucHkgYi9MaWIvbGliMnRvMy9maXhlcy9maXhfdXJsbGliLnB5CmluZGV4IDE0ODFjZDkuLjVhMzYwNDkgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF91cmxsaWIucHkKKysrIGIvTGliL2xpYjJ0bzMvZml4ZXMvZml4X3VybGxpYi5weQpAQCAtNiw3ICs2LDYgQEAKIAogIyBMb2NhbCBpbXBvcnRzCiBmcm9tIGxpYjJ0bzMuZml4ZXMuZml4X2ltcG9ydHMgaW1wb3J0IGFsdGVybmF0ZXMsIEZpeEltcG9ydHMKLWZyb20gbGliMnRvMyBpbXBvcnQgZml4ZXJfYmFzZQogZnJvbSBsaWIydG8zLmZpeGVyX3V0aWwgaW1wb3J0IChOYW1lLCBDb21tYSwgRnJvbUltcG9ydCwgTmV3bGluZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluZF9pbmRlbnRhdGlvbiwgTm9kZSwgc3ltcykKIApkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvcmVmYWN0b3IucHkgYi9MaWIvbGliMnRvMy9yZWZhY3Rvci5weQppbmRleCAwNzI4MDgzLi5jNWExYWEyIDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy9yZWZhY3Rvci5weQorKysgYi9MaWIvbGliMnRvMy9yZWZhY3Rvci5weQpAQCAtOCw4ICs4LDYgQEAKIHByb3ZpZGVzIGluZnJhc3RydWN0dXJlIHRvIHdyaXRlIHlvdXIgb3duIHJlZmFjdG9yaW5nIHRvb2wuCiAiIiIKIAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVudAotCiBfX2F1dGhvcl9fID0gIkd1aWRvIHZhbiBSb3NzdW0gPGd1aWRvQHB5dGhvbi5vcmc+IgogCiAKQEAgLTI2LDcgKzI0LDYgQEAKIGZyb20gLnBnZW4yIGltcG9ydCBkcml2ZXIsIHRva2VuaXplLCB0b2tlbgogZnJvbSAuZml4ZXJfdXRpbCBpbXBvcnQgZmluZF9yb290CiBmcm9tIC4gaW1wb3J0IHB5dHJlZSwgcHlncmFtCi1mcm9tIC4gaW1wb3J0IGJ0bV91dGlscyBhcyBidQogZnJvbSAuIGltcG9ydCBidG1fbWF0Y2hlciBhcyBibQogCiAKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL3Rlc3RzL2RhdGEvcHkzX3Rlc3RfZ3JhbW1hci5weSBiL0xpYi9saWIydG8zL3Rlc3RzL2RhdGEvcHkzX3Rlc3RfZ3JhbW1hci5weQppbmRleCBjMGJmN2YyLi5jZjMxYTU0IDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy90ZXN0cy9kYXRhL3B5M190ZXN0X2dyYW1tYXIucHkKKysrIGIvTGliL2xpYjJ0bzMvdGVzdHMvZGF0YS9weTNfdGVzdF9ncmFtbWFyLnB5CkBAIC0zMTksNyArMzE5LDcgQEAKICAgICAgICAgZGVmIGYoeCkgLT4gbGlzdDogcGFzcwogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhmLl9fYW5ub3RhdGlvbnNfXywgeydyZXR1cm4nOiBsaXN0fSkKIAotICAgICAgICAjIHRlc3QgTUFLRV9DTE9TVVJFIHdpdGggYSB2YXJpZXR5IG9mIG9wYXJnJ3MKKyAgICAgICAgIyB0ZXN0IGNsb3N1cmVzIHdpdGggYSB2YXJpZXR5IG9mIG9wYXJnJ3MKICAgICAgICAgY2xvc3VyZSA9IDEKICAgICAgICAgZGVmIGYoKTogcmV0dXJuIGNsb3N1cmUKICAgICAgICAgZGVmIGYoeD0xKTogcmV0dXJuIGNsb3N1cmUKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL3Rlc3RzL3N1cHBvcnQucHkgYi9MaWIvbGliMnRvMy90ZXN0cy9zdXBwb3J0LnB5CmluZGV4IDA4OTcxNzcuLmFlN2NmZTggMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL3Rlc3RzL3N1cHBvcnQucHkKKysrIGIvTGliL2xpYjJ0bzMvdGVzdHMvc3VwcG9ydC5weQpAQCAtMywxMCArMyw4IEBACiAKICMgUHl0aG9uIGltcG9ydHMKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IHN5cwogaW1wb3J0IG9zCiBpbXBvcnQgb3MucGF0aAotaW1wb3J0IHJlCiBmcm9tIHRleHR3cmFwIGltcG9ydCBkZWRlbnQKIAogIyBMb2NhbCBpbXBvcnRzCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X2FsbF9maXhlcnMucHkgYi9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X2FsbF9maXhlcnMucHkKaW5kZXggMTUwNzlmZS4uYzA1MDdjZiAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9hbGxfZml4ZXJzLnB5CisrKyBiL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfYWxsX2ZpeGVycy5weQpAQCAtMTAsNyArMTAsNiBAQAogaW1wb3J0IHRlc3Quc3VwcG9ydAogCiAjIExvY2FsIGltcG9ydHMKLWZyb20gbGliMnRvMyBpbXBvcnQgcmVmYWN0b3IKIGZyb20gLiBpbXBvcnQgc3VwcG9ydAogCiAKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfZml4ZXJzLnB5IGIvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9maXhlcnMucHkKaW5kZXggNjQwZGNlZi4uYjNmMjY4MCAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9maXhlcnMucHkKKysrIGIvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9maXhlcnMucHkKQEAgLTIsMTIgKzIsMTEgQEAKIAogIyBQeXRob24gaW1wb3J0cwogaW1wb3J0IG9zCi1pbXBvcnQgdW5pdHRlc3QKIGZyb20gaXRlcnRvb2xzIGltcG9ydCBjaGFpbgogZnJvbSBvcGVyYXRvciBpbXBvcnQgaXRlbWdldHRlcgogCiAjIExvY2FsIGltcG9ydHMKLWZyb20gbGliMnRvMyBpbXBvcnQgcHlncmFtLCBweXRyZWUsIHJlZmFjdG9yLCBmaXhlcl91dGlsCitmcm9tIGxpYjJ0bzMgaW1wb3J0IHB5Z3JhbSwgZml4ZXJfdXRpbAogZnJvbSBsaWIydG8zLnRlc3RzIGltcG9ydCBzdXBwb3J0CiAKIApAQCAtMzIzNCw2ICszMjMzLDEwIEBACiAgICAgICAgIGEgPSAiIiJ0eXBlKE5vbmUpIiIiCiAgICAgICAgIHNlbGYuY2hlY2soYiwgYSkKIAorICAgICAgICBiID0gInR5cGVzLlN0cmluZ1R5cGVzIgorICAgICAgICBhID0gIihzdHIsKSIKKyAgICAgICAgc2VsZi5jaGVjayhiLCBhKQorCiBjbGFzcyBUZXN0X2lkaW9tcyhGaXhlclRlc3RDYXNlKToKICAgICBmaXhlciA9ICJpZGlvbXMiCiAKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfcGFyc2VyLnB5IGIvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9wYXJzZXIucHkKaW5kZXggZTRhMDE5NC4uOWE5NjllOCAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9wYXJzZXIucHkKKysrIGIvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9wYXJzZXIucHkKQEAgLTgsNyArOCw3IEBACiAKICMgVGVzdGluZyBpbXBvcnRzCiBmcm9tIC4gaW1wb3J0IHN1cHBvcnQKLWZyb20gLnN1cHBvcnQgaW1wb3J0IGRyaXZlciwgdGVzdF9kaXIKK2Zyb20gLnN1cHBvcnQgaW1wb3J0IGRyaXZlcgogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHZlcmJvc2UKIAogIyBQeXRob24gaW1wb3J0cwpAQCAtMTM0LDYgKzEzNCwyNCBAQAogICAgICAgICAgICAgICAgICAgICAgICIiIikKIAogICAgICAgICBzZWxmLnZhbGlkYXRlKCIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2kgYXN5bmMgZm9yIGkgaW4gYl0KKyAgICAgICAgICAgICAgICAgICAgICAiIiIpCisKKyAgICAgICAgc2VsZi52YWxpZGF0ZSgiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpIGZvciBpIGluIGIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN5bmMgZm9yIGkgaW4gYSBpZiBhd2FpdCBpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGIgaW4gaX0KKyAgICAgICAgICAgICAgICAgICAgICAiIiIpCisKKyAgICAgICAgc2VsZi52YWxpZGF0ZSgiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthd2FpdCBpIGZvciBpIGluIGIgaWYgYXdhaXQgY10KKyAgICAgICAgICAgICAgICAgICAgICAiIiIpCisKKyAgICAgICAgc2VsZi52YWxpZGF0ZSgiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgaSBmb3IgaSBpbiBiIGlmIGNdCisgICAgICAgICAgICAgICAgICAgICAgIiIiKQorCisgICAgICAgIHNlbGYudmFsaWRhdGUoIiIiYXN5bmMgZGVmIGZvbygpOgogCiAgICAgICAgICAgICBkZWYgZm9vKCk6IHBhc3MKIApAQCAtMjcyLDYgKzI5MCwzNiBAQAogICAgICAgICBzZWxmLnZhbGlkYXRlKHMpCiAKIAorIyBBZGFwdGVkIGZyb20gUHl0aG9uIDMncyBMaWIvdGVzdC90ZXN0X2dyYW1tYXIucHk6R3JhbW1hclRlc3RzLnRlc3RfdmFyX2Fubm90CitjbGFzcyBUZXN0VmFyQW5ub3RhdGlvbnMoR3JhbW1hclRlc3QpOgorICAgIGRlZiB0ZXN0XzEoc2VsZik6CisgICAgICAgIHNlbGYudmFsaWRhdGUoInZhcjE6IGludCA9IDUiKQorCisgICAgZGVmIHRlc3RfMihzZWxmKToKKyAgICAgICAgc2VsZi52YWxpZGF0ZSgidmFyMjogW2ludCwgc3RyXSIpCisKKyAgICBkZWYgdGVzdF8zKHNlbGYpOgorICAgICAgICBzZWxmLnZhbGlkYXRlKCJkZWYgZigpOlxuIgorICAgICAgICAgICAgICAgICAgICAgICIgICAgc3Q6IHN0ciA9ICdIZWxsbydcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiICAgIGEuYjogaW50ID0gKDEsIDIpXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gc3RcbiIpCisKKyAgICBkZWYgdGVzdF80KHNlbGYpOgorICAgICAgICBzZWxmLnZhbGlkYXRlKCJkZWYgZmJhZCgpOlxuIgorICAgICAgICAgICAgICAgICAgICAgICIgICAgeDogaW50XG4iCisgICAgICAgICAgICAgICAgICAgICAgIiAgICBwcmludCh4KVxuIikKKworICAgIGRlZiB0ZXN0XzUoc2VsZik6CisgICAgICAgIHNlbGYudmFsaWRhdGUoImNsYXNzIEM6XG4iCisgICAgICAgICAgICAgICAgICAgICAgIiAgICB4OiBpbnRcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiICAgIHM6IHN0ciA9ICdhdHRyJ1xuIgorICAgICAgICAgICAgICAgICAgICAgICIgICAgeiA9IDJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiICAgIGRlZiBfX2luaXRfXyhzZWxmLCB4KTpcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICBzZWxmLng6IGludCA9IHhcbiIpCisKKyAgICBkZWYgdGVzdF82KHNlbGYpOgorICAgICAgICBzZWxmLnZhbGlkYXRlKCJsc3Q6IExpc3RbaW50XSA9IFtdIikKKwogY2xhc3MgVGVzdEV4Y2VwdChHcmFtbWFyVGVzdCk6CiAgICAgZGVmIHRlc3RfbmV3KHNlbGYpOgogICAgICAgICBzID0gIiIiCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3B5dHJlZS5weSBiL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfcHl0cmVlLnB5CmluZGV4IDRkNTg1YTguLjE3NzEyNmQgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfcHl0cmVlLnB5CisrKyBiL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfcHl0cmVlLnB5CkBAIC05LDExICs5LDYgQEAKIGVzcGVjaWFsbHkgd2hlbiBkZWJ1Z2dpbmcgYSB0ZXN0LgogIiIiCiAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKLQotaW1wb3J0IHN5cwotaW1wb3J0IHdhcm5pbmdzCi0KICMgVGVzdGluZyBpbXBvcnRzCiBmcm9tIC4gaW1wb3J0IHN1cHBvcnQKIApkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9yZWZhY3Rvci5weSBiL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfcmVmYWN0b3IucHkKaW5kZXggODU2MzAwMS4uZTliYWU1ZSAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9yZWZhY3Rvci5weQorKysgYi9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3JlZmFjdG9yLnB5CkBAIC0yLDI0ICsyLDE4IEBACiBVbml0IHRlc3RzIGZvciByZWZhY3Rvci5weS4KICIiIgogCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50Ci0KIGltcG9ydCBzeXMKIGltcG9ydCBvcwogaW1wb3J0IGNvZGVjcwotaW1wb3J0IG9wZXJhdG9yCiBpbXBvcnQgaW8KIGltcG9ydCByZQogaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgc2h1dGlsCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCB3YXJuaW5ncwogCiBmcm9tIGxpYjJ0bzMgaW1wb3J0IHJlZmFjdG9yLCBweWdyYW0sIGZpeGVyX2Jhc2UKIGZyb20gbGliMnRvMy5wZ2VuMiBpbXBvcnQgdG9rZW4KIAotZnJvbSAuIGltcG9ydCBzdXBwb3J0Ci0KIAogVEVTVF9EQVRBX0RJUiA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAiZGF0YSIpCiBGSVhFUl9ESVIgPSBvcy5wYXRoLmpvaW4oVEVTVF9EQVRBX0RJUiwgImZpeGVycyIpCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3V0aWwucHkgYi9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3V0aWwucHkKaW5kZXggZDJiZTgyYy4uYzZjNjEzOSAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF91dGlsLnB5CisrKyBiL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfdXRpbC5weQpAQCAtMyw5ICszLDYgQEAKICMgVGVzdGluZyBpbXBvcnRzCiBmcm9tIC4gaW1wb3J0IHN1cHBvcnQKIAotIyBQeXRob24gaW1wb3J0cwotaW1wb3J0IG9zLnBhdGgKLQogIyBMb2NhbCBpbXBvcnRzCiBmcm9tIGxpYjJ0bzMucHl0cmVlIGltcG9ydCBOb2RlLCBMZWFmCiBmcm9tIGxpYjJ0bzMgaW1wb3J0IGZpeGVyX3V0aWwKZGlmZiAtLWdpdCBhL0xpYi9sb2NhbGUucHkgYi9MaWIvbG9jYWxlLnB5CmluZGV4IDZkNTljZDguLjRkZTAwOTAgMTAwNjQ0Ci0tLSBhL0xpYi9sb2NhbGUucHkKKysrIGIvTGliL2xvY2FsZS5weQpAQCAtMzAyLDEyICszMDIsMTYgQEAKIAogZGVmIGRlbG9jYWxpemUoc3RyaW5nKToKICAgICAiUGFyc2VzIGEgc3RyaW5nIGFzIGEgbm9ybWFsaXplZCBudW1iZXIgYWNjb3JkaW5nIHRvIHRoZSBsb2NhbGUgc2V0dGluZ3MuIgorCisgICAgY29udiA9IGxvY2FsZWNvbnYoKQorCiAgICAgI0ZpcnN0LCBnZXQgcmlkIG9mIHRoZSBncm91cGluZwotICAgIHRzID0gbG9jYWxlY29udigpWyd0aG91c2FuZHNfc2VwJ10KKyAgICB0cyA9IGNvbnZbJ3Rob3VzYW5kc19zZXAnXQogICAgIGlmIHRzOgogICAgICAgICBzdHJpbmcgPSBzdHJpbmcucmVwbGFjZSh0cywgJycpCisKICAgICAjbmV4dCwgcmVwbGFjZSB0aGUgZGVjaW1hbCBwb2ludCB3aXRoIGEgZG90Ci0gICAgZGQgPSBsb2NhbGVjb252KClbJ2RlY2ltYWxfcG9pbnQnXQorICAgIGRkID0gY29udlsnZGVjaW1hbF9wb2ludCddCiAgICAgaWYgZGQ6CiAgICAgICAgIHN0cmluZyA9IHN0cmluZy5yZXBsYWNlKGRkLCAnLicpCiAgICAgcmV0dXJuIHN0cmluZwpkaWZmIC0tZ2l0IGEvTGliL2xvZ2dpbmcvX19pbml0X18ucHkgYi9MaWIvbG9nZ2luZy9fX2luaXRfXy5weQppbmRleCAyMjc0NGUxLi4yNTkwZDY1IDEwMDY0NAotLS0gYS9MaWIvbG9nZ2luZy9fX2luaXRfXy5weQorKysgYi9MaWIvbG9nZ2luZy9fX2luaXRfXy5weQpAQCAtMzMsOCArMzMsOSBAQAogICAgICAgICAgICAnU3RyZWFtSGFuZGxlcicsICdXQVJOJywgJ1dBUk5JTkcnLCAnYWRkTGV2ZWxOYW1lJywgJ2Jhc2ljQ29uZmlnJywKICAgICAgICAgICAgJ2NhcHR1cmVXYXJuaW5ncycsICdjcml0aWNhbCcsICdkZWJ1ZycsICdkaXNhYmxlJywgJ2Vycm9yJywKICAgICAgICAgICAgJ2V4Y2VwdGlvbicsICdmYXRhbCcsICdnZXRMZXZlbE5hbWUnLCAnZ2V0TG9nZ2VyJywgJ2dldExvZ2dlckNsYXNzJywKLSAgICAgICAgICAgJ2luZm8nLCAnbG9nJywgJ21ha2VMb2dSZWNvcmQnLCAnc2V0TG9nZ2VyQ2xhc3MnLCAnd2FybicsICd3YXJuaW5nJywKLSAgICAgICAgICAgJ2dldExvZ1JlY29yZEZhY3RvcnknLCAnc2V0TG9nUmVjb3JkRmFjdG9yeScsICdsYXN0UmVzb3J0J10KKyAgICAgICAgICAgJ2luZm8nLCAnbG9nJywgJ21ha2VMb2dSZWNvcmQnLCAnc2V0TG9nZ2VyQ2xhc3MnLCAnc2h1dGRvd24nLAorICAgICAgICAgICAnd2FybicsICd3YXJuaW5nJywgJ2dldExvZ1JlY29yZEZhY3RvcnknLCAnc2V0TG9nUmVjb3JkRmFjdG9yeScsCisgICAgICAgICAgICdsYXN0UmVzb3J0JywgJ3JhaXNlRXhjZXB0aW9ucyddCiAKIHRyeToKICAgICBpbXBvcnQgdGhyZWFkaW5nCkBAIC0xMDcsNiArMTA4LDcgQEAKIH0KIF9uYW1lVG9MZXZlbCA9IHsKICAgICAnQ1JJVElDQUwnOiBDUklUSUNBTCwKKyAgICAnRkFUQUwnOiBGQVRBTCwKICAgICAnRVJST1InOiBFUlJPUiwKICAgICAnV0FSTic6IFdBUk5JTkcsCiAgICAgJ1dBUk5JTkcnOiBXQVJOSU5HLApAQCAtOTM1LDYgKzkzNywxMCBAQAogICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICBkZWwgdCwgdiwgdGIKIAorICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgbGV2ZWwgPSBnZXRMZXZlbE5hbWUoc2VsZi5sZXZlbCkKKyAgICAgICAgcmV0dXJuICc8JXMgKCVzKT4nICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBsZXZlbCkKKwogY2xhc3MgU3RyZWFtSGFuZGxlcihIYW5kbGVyKToKICAgICAiIiIKICAgICBBIGhhbmRsZXIgY2xhc3Mgd2hpY2ggd3JpdGVzIGxvZ2dpbmcgcmVjb3JkcywgYXBwcm9wcmlhdGVseSBmb3JtYXR0ZWQsCkBAIC05ODYsNiArOTkyLDE0IEBACiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgICBzZWxmLmhhbmRsZUVycm9yKHJlY29yZCkKIAorICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgbGV2ZWwgPSBnZXRMZXZlbE5hbWUoc2VsZi5sZXZlbCkKKyAgICAgICAgbmFtZSA9IGdldGF0dHIoc2VsZi5zdHJlYW0sICduYW1lJywgJycpCisgICAgICAgIGlmIG5hbWU6CisgICAgICAgICAgICBuYW1lICs9ICcgJworICAgICAgICByZXR1cm4gJzwlcyAlcyglcyk+JyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgbmFtZSwgbGV2ZWwpCisKKwogY2xhc3MgRmlsZUhhbmRsZXIoU3RyZWFtSGFuZGxlcik6CiAgICAgIiIiCiAgICAgQSBoYW5kbGVyIGNsYXNzIHdoaWNoIHdyaXRlcyBmb3JtYXR0ZWQgbG9nZ2luZyByZWNvcmRzIHRvIGRpc2sgZmlsZXMuCkBAIC05OTQsNiArMTAwOCw4IEBACiAgICAgICAgICIiIgogICAgICAgICBPcGVuIHRoZSBzcGVjaWZpZWQgZmlsZSBhbmQgdXNlIGl0IGFzIHRoZSBzdHJlYW0gZm9yIGxvZ2dpbmcuCiAgICAgICAgICIiIgorICAgICAgICAjIElzc3VlICMyNzQ5MzogYWRkIHN1cHBvcnQgZm9yIFBhdGggb2JqZWN0cyB0byBiZSBwYXNzZWQgaW4KKyAgICAgICAgZmlsZW5hbWUgPSBvcy5mc3BhdGgoZmlsZW5hbWUpCiAgICAgICAgICNrZWVwIHRoZSBhYnNvbHV0ZSBwYXRoLCBvdGhlcndpc2UgZGVyaXZlZCBjbGFzc2VzIHdoaWNoIHVzZSB0aGlzCiAgICAgICAgICNtYXkgY29tZSBhIGNyb3BwZXIgd2hlbiB0aGUgY3VycmVudCBkaXJlY3RvcnkgY2hhbmdlcwogICAgICAgICBzZWxmLmJhc2VGaWxlbmFtZSA9IG9zLnBhdGguYWJzcGF0aChmaWxlbmFtZSkKQEAgLTEwNDgsNiArMTA2NCwxMSBAQAogICAgICAgICAgICAgc2VsZi5zdHJlYW0gPSBzZWxmLl9vcGVuKCkKICAgICAgICAgU3RyZWFtSGFuZGxlci5lbWl0KHNlbGYsIHJlY29yZCkKIAorICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgbGV2ZWwgPSBnZXRMZXZlbE5hbWUoc2VsZi5sZXZlbCkKKyAgICAgICAgcmV0dXJuICc8JXMgJXMgKCVzKT4nICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzZWxmLmJhc2VGaWxlbmFtZSwgbGV2ZWwpCisKKwogY2xhc3MgX1N0ZGVyckhhbmRsZXIoU3RyZWFtSGFuZGxlcik6CiAgICAgIiIiCiAgICAgVGhpcyBjbGFzcyBpcyBsaWtlIGEgU3RyZWFtSGFuZGxlciB1c2luZyBzeXMuc3RkZXJyLCBidXQgYWx3YXlzIHVzZXMKQEAgLTE1NDAsNiArMTU2MSwxMSBAQAogICAgICAgICAgICAgc3VmZml4ID0gJy4nLmpvaW4oKHNlbGYubmFtZSwgc3VmZml4KSkKICAgICAgICAgcmV0dXJuIHNlbGYubWFuYWdlci5nZXRMb2dnZXIoc3VmZml4KQogCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICBsZXZlbCA9IGdldExldmVsTmFtZShzZWxmLmdldEVmZmVjdGl2ZUxldmVsKCkpCisgICAgICAgIHJldHVybiAnPCVzICVzICglcyk+JyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi5uYW1lLCBsZXZlbCkKKworCiBjbGFzcyBSb290TG9nZ2VyKExvZ2dlcik6CiAgICAgIiIiCiAgICAgQSByb290IGxvZ2dlciBpcyBub3QgdGhhdCBkaWZmZXJlbnQgdG8gYW55IG90aGVyIGxvZ2dlciwgZXhjZXB0IHRoYXQKQEAgLTE2NjYsNiArMTY5MiwxMSBAQAogICAgICAgICAiIiIKICAgICAgICAgcmV0dXJuIHNlbGYubG9nZ2VyLmhhc0hhbmRsZXJzKCkKIAorICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgbG9nZ2VyID0gc2VsZi5sb2dnZXIKKyAgICAgICAgbGV2ZWwgPSBnZXRMZXZlbE5hbWUobG9nZ2VyLmdldEVmZmVjdGl2ZUxldmVsKCkpCisgICAgICAgIHJldHVybiAnPCVzICVzICglcyk+JyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgbG9nZ2VyLm5hbWUsIGxldmVsKQorCiByb290ID0gUm9vdExvZ2dlcihXQVJOSU5HKQogTG9nZ2VyLnJvb3QgPSByb290CiBMb2dnZXIubWFuYWdlciA9IE1hbmFnZXIoTG9nZ2VyLnJvb3QpCmRpZmYgLS1naXQgYS9MaWIvbG9nZ2luZy9oYW5kbGVycy5weSBiL0xpYi9sb2dnaW5nL2hhbmRsZXJzLnB5CmluZGV4IGMzOWE1NmYuLjdkNzc5NzMgMTAwNjQ0Ci0tLSBhL0xpYi9sb2dnaW5nL2hhbmRsZXJzLnB5CisrKyBiL0xpYi9sb2dnaW5nL2hhbmRsZXJzLnB5CkBAIC0yNDYsNiArMjQ2LDkgQEAKIAogICAgICAgICBzZWxmLmV4dE1hdGNoID0gcmUuY29tcGlsZShzZWxmLmV4dE1hdGNoLCByZS5BU0NJSSkKICAgICAgICAgc2VsZi5pbnRlcnZhbCA9IHNlbGYuaW50ZXJ2YWwgKiBpbnRlcnZhbCAjIG11bHRpcGx5IGJ5IHVuaXRzIHJlcXVlc3RlZAorICAgICAgICAjIFRoZSBmb2xsb3dpbmcgbGluZSBhZGRlZCBiZWNhdXNlIHRoZSBmaWxlbmFtZSBwYXNzZWQgaW4gY291bGQgYmUgYQorICAgICAgICAjIHBhdGggb2JqZWN0IChzZWUgSXNzdWUgIzI3NDkzKSwgYnV0IHNlbGYuYmFzZUZpbGVuYW1lIHdpbGwgYmUgYSBzdHJpbmcKKyAgICAgICAgZmlsZW5hbWUgPSBzZWxmLmJhc2VGaWxlbmFtZQogICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhmaWxlbmFtZSk6CiAgICAgICAgICAgICB0ID0gb3Muc3RhdChmaWxlbmFtZSlbU1RfTVRJTUVdCiAgICAgICAgIGVsc2U6CkBAIC00NDAsMTEgKzQ0MywxMSBAQAogICAgICAgICAgICAgc3JlcyA9IG9zLmZzdGF0KHNlbGYuc3RyZWFtLmZpbGVubygpKQogICAgICAgICAgICAgc2VsZi5kZXYsIHNlbGYuaW5vID0gc3Jlc1tTVF9ERVZdLCBzcmVzW1NUX0lOT10KIAotICAgIGRlZiBlbWl0KHNlbGYsIHJlY29yZCk6CisgICAgZGVmIHJlb3BlbklmTmVlZGVkKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgRW1pdCBhIHJlY29yZC4KKyAgICAgICAgUmVvcGVuIGxvZyBmaWxlIGlmIG5lZWRlZC4KIAotICAgICAgICBGaXJzdCBjaGVjayBpZiB0aGUgdW5kZXJseWluZyBmaWxlIGhhcyBjaGFuZ2VkLCBhbmQgaWYgaXQKKyAgICAgICAgQ2hlY2tzIGlmIHRoZSB1bmRlcmx5aW5nIGZpbGUgaGFzIGNoYW5nZWQsIGFuZCBpZiBpdAogICAgICAgICBoYXMsIGNsb3NlIHRoZSBvbGQgc3RyZWFtIGFuZCByZW9wZW4gdGhlIGZpbGUgdG8gZ2V0IHRoZQogICAgICAgICBjdXJyZW50IHN0cmVhbS4KICAgICAgICAgIiIiCkBAIC00NjcsNiArNDcwLDE1IEBACiAgICAgICAgICAgICAgICAgIyBvcGVuIGEgbmV3IGZpbGUgaGFuZGxlIGFuZCBnZXQgbmV3IHN0YXQgaW5mbyBmcm9tIHRoYXQgZmQKICAgICAgICAgICAgICAgICBzZWxmLnN0cmVhbSA9IHNlbGYuX29wZW4oKQogICAgICAgICAgICAgICAgIHNlbGYuX3N0YXRzdHJlYW0oKQorCisgICAgZGVmIGVtaXQoc2VsZiwgcmVjb3JkKToKKyAgICAgICAgIiIiCisgICAgICAgIEVtaXQgYSByZWNvcmQuCisKKyAgICAgICAgSWYgdW5kZXJseWluZyBmaWxlIGhhcyBjaGFuZ2VkLCByZW9wZW4gdGhlIGZpbGUgYmVmb3JlIGVtaXR0aW5nIHRoZQorICAgICAgICByZWNvcmQgdG8gaXQuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLnJlb3BlbklmTmVlZGVkKCkKICAgICAgICAgbG9nZ2luZy5GaWxlSGFuZGxlci5lbWl0KHNlbGYsIHJlY29yZCkKIAogCkBAIC0xMjI5LDE3ICsxMjQxLDI1IEBACiAgICAgZmx1c2hpbmcgdGhlbSB0byBhIHRhcmdldCBoYW5kbGVyLiBGbHVzaGluZyBvY2N1cnMgd2hlbmV2ZXIgdGhlIGJ1ZmZlcgogICAgIGlzIGZ1bGwsIG9yIHdoZW4gYW4gZXZlbnQgb2YgYSBjZXJ0YWluIHNldmVyaXR5IG9yIGdyZWF0ZXIgaXMgc2Vlbi4KICAgICAiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgY2FwYWNpdHksIGZsdXNoTGV2ZWw9bG9nZ2luZy5FUlJPUiwgdGFyZ2V0PU5vbmUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjYXBhY2l0eSwgZmx1c2hMZXZlbD1sb2dnaW5nLkVSUk9SLCB0YXJnZXQ9Tm9uZSwKKyAgICAgICAgICAgICAgICAgZmx1c2hPbkNsb3NlPVRydWUpOgogICAgICAgICAiIiIKICAgICAgICAgSW5pdGlhbGl6ZSB0aGUgaGFuZGxlciB3aXRoIHRoZSBidWZmZXIgc2l6ZSwgdGhlIGxldmVsIGF0IHdoaWNoCiAgICAgICAgIGZsdXNoaW5nIHNob3VsZCBvY2N1ciBhbmQgYW4gb3B0aW9uYWwgdGFyZ2V0LgogCiAgICAgICAgIE5vdGUgdGhhdCB3aXRob3V0IGEgdGFyZ2V0IGJlaW5nIHNldCBlaXRoZXIgaGVyZSBvciB2aWEgc2V0VGFyZ2V0KCksCiAgICAgICAgIGEgTWVtb3J5SGFuZGxlciBpcyBubyB1c2UgdG8gYW55b25lIQorCisgICAgICAgIFRoZSBgYGZsdXNoT25DbG9zZWBgIGFyZ3VtZW50IGlzIGBgVHJ1ZWBgIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5CisgICAgICAgIHJlYXNvbnMgLSB0aGUgb2xkIGJlaGF2aW91ciBpcyB0aGF0IHdoZW4gdGhlIGhhbmRsZXIgaXMgY2xvc2VkLCB0aGUKKyAgICAgICAgYnVmZmVyIGlzIGZsdXNoZWQsIGV2ZW4gaWYgdGhlIGZsdXNoIGxldmVsIGhhc24ndCBiZWVuIGV4Y2VlZGVkIG5vciB0aGUKKyAgICAgICAgY2FwYWNpdHkgZXhjZWVkZWQuIFRvIHByZXZlbnQgdGhpcywgc2V0IGBgZmx1c2hPbkNsb3NlYGAgdG8gYGBGYWxzZWBgLgogICAgICAgICAiIiIKICAgICAgICAgQnVmZmVyaW5nSGFuZGxlci5fX2luaXRfXyhzZWxmLCBjYXBhY2l0eSkKICAgICAgICAgc2VsZi5mbHVzaExldmVsID0gZmx1c2hMZXZlbAogICAgICAgICBzZWxmLnRhcmdldCA9IHRhcmdldAorICAgICAgICAjIFNlZSBJc3N1ZSAjMjY1NTkgZm9yIHdoeSB0aGlzIGhhcyBiZWVuIGFkZGVkCisgICAgICAgIHNlbGYuZmx1c2hPbkNsb3NlID0gZmx1c2hPbkNsb3NlCiAKICAgICBkZWYgc2hvdWxkRmx1c2goc2VsZiwgcmVjb3JkKToKICAgICAgICAgIiIiCkBAIC0xMjczLDEwICsxMjkzLDEyIEBACiAKICAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBGbHVzaCwgc2V0IHRoZSB0YXJnZXQgdG8gTm9uZSBhbmQgbG9zZSB0aGUgYnVmZmVyLgorICAgICAgICBGbHVzaCwgaWYgYXBwcm9wcmlhdGVseSBjb25maWd1cmVkLCBzZXQgdGhlIHRhcmdldCB0byBOb25lIGFuZCBsb3NlIHRoZQorICAgICAgICBidWZmZXIuCiAgICAgICAgICIiIgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLmZsdXNoKCkKKyAgICAgICAgICAgIGlmIHNlbGYuZmx1c2hPbkNsb3NlOgorICAgICAgICAgICAgICAgIHNlbGYuZmx1c2goKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc2VsZi5hY3F1aXJlKCkKICAgICAgICAgICAgIHRyeToKZGlmZiAtLWdpdCBhL0xpYi9sem1hLnB5IGIvTGliL2x6bWEucHkKaW5kZXggN2RmZjFjMy4uMDgxN2I4NyAxMDA2NDQKLS0tIGEvTGliL2x6bWEucHkKKysrIGIvTGliL2x6bWEucHkKQEAgLTIzLDYgKzIzLDcgQEAKIAogaW1wb3J0IGJ1aWx0aW5zCiBpbXBvcnQgaW8KK2ltcG9ydCBvcwogZnJvbSBfbHptYSBpbXBvcnQgKgogZnJvbSBfbHptYSBpbXBvcnQgX2VuY29kZV9maWx0ZXJfcHJvcGVydGllcywgX2RlY29kZV9maWx0ZXJfcHJvcGVydGllcwogaW1wb3J0IF9jb21wcmVzc2lvbgpAQCAtNDksOSArNTAsMTAgQEAKICAgICAgICAgICAgICAgICAgZm9ybWF0PU5vbmUsIGNoZWNrPS0xLCBwcmVzZXQ9Tm9uZSwgZmlsdGVycz1Ob25lKToKICAgICAgICAgIiIiT3BlbiBhbiBMWk1BLWNvbXByZXNzZWQgZmlsZSBpbiBiaW5hcnkgbW9kZS4KIAotICAgICAgICBmaWxlbmFtZSBjYW4gYmUgZWl0aGVyIGFuIGFjdHVhbCBmaWxlIG5hbWUgKGdpdmVuIGFzIGEgc3RyIG9yCi0gICAgICAgIGJ5dGVzIG9iamVjdCksIGluIHdoaWNoIGNhc2UgdGhlIG5hbWVkIGZpbGUgaXMgb3BlbmVkLCBvciBpdCBjYW4KLSAgICAgICAgYmUgYW4gZXhpc3RpbmcgZmlsZSBvYmplY3QgdG8gcmVhZCBmcm9tIG9yIHdyaXRlIHRvLgorICAgICAgICBmaWxlbmFtZSBjYW4gYmUgZWl0aGVyIGFuIGFjdHVhbCBmaWxlIG5hbWUgKGdpdmVuIGFzIGEgc3RyLAorICAgICAgICBieXRlcywgb3IgUGF0aExpa2Ugb2JqZWN0KSwgaW4gd2hpY2ggY2FzZSB0aGUgbmFtZWQgZmlsZSBpcworICAgICAgICBvcGVuZWQsIG9yIGl0IGNhbiBiZSBhbiBleGlzdGluZyBmaWxlIG9iamVjdCB0byByZWFkIGZyb20gb3IKKyAgICAgICAgd3JpdGUgdG8uCiAKICAgICAgICAgbW9kZSBjYW4gYmUgInIiIGZvciByZWFkaW5nIChkZWZhdWx0KSwgInciIGZvciAob3Zlcil3cml0aW5nLAogICAgICAgICAieCIgZm9yIGNyZWF0aW5nIGV4Y2x1c2l2ZWx5LCBvciAiYSIgZm9yIGFwcGVuZGluZy4gVGhlc2UgY2FuCkBAIC0xMTIsNyArMTE0LDcgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgbW9kZTogeyFyfSIuZm9ybWF0KG1vZGUpKQogCi0gICAgICAgIGlmIGlzaW5zdGFuY2UoZmlsZW5hbWUsIChzdHIsIGJ5dGVzKSk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoZmlsZW5hbWUsIChzdHIsIGJ5dGVzLCBvcy5QYXRoTGlrZSkpOgogICAgICAgICAgICAgaWYgImIiIG5vdCBpbiBtb2RlOgogICAgICAgICAgICAgICAgIG1vZGUgKz0gImIiCiAgICAgICAgICAgICBzZWxmLl9mcCA9IGJ1aWx0aW5zLm9wZW4oZmlsZW5hbWUsIG1vZGUpCkBAIC0xMjIsNyArMTI0LDcgQEAKICAgICAgICAgICAgIHNlbGYuX2ZwID0gZmlsZW5hbWUKICAgICAgICAgICAgIHNlbGYuX21vZGUgPSBtb2RlX2NvZGUKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZmlsZW5hbWUgbXVzdCBiZSBhIHN0ciBvciBieXRlcyBvYmplY3QsIG9yIGEgZmlsZSIpCisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImZpbGVuYW1lIG11c3QgYmUgYSBzdHIsIGJ5dGVzLCBmaWxlIG9yIFBhdGhMaWtlIG9iamVjdCIpCiAKICAgICAgICAgaWYgc2VsZi5fbW9kZSA9PSBfTU9ERV9SRUFEOgogICAgICAgICAgICAgcmF3ID0gX2NvbXByZXNzaW9uLkRlY29tcHJlc3NSZWFkZXIoc2VsZi5fZnAsIExaTUFEZWNvbXByZXNzb3IsCkBAIC0yNjMsOSArMjY1LDkgQEAKICAgICAgICAgIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lLCBuZXdsaW5lPU5vbmUpOgogICAgICIiIk9wZW4gYW4gTFpNQS1jb21wcmVzc2VkIGZpbGUgaW4gYmluYXJ5IG9yIHRleHQgbW9kZS4KIAotICAgIGZpbGVuYW1lIGNhbiBiZSBlaXRoZXIgYW4gYWN0dWFsIGZpbGUgbmFtZSAoZ2l2ZW4gYXMgYSBzdHIgb3IgYnl0ZXMKLSAgICBvYmplY3QpLCBpbiB3aGljaCBjYXNlIHRoZSBuYW1lZCBmaWxlIGlzIG9wZW5lZCwgb3IgaXQgY2FuIGJlIGFuCi0gICAgZXhpc3RpbmcgZmlsZSBvYmplY3QgdG8gcmVhZCBmcm9tIG9yIHdyaXRlIHRvLgorICAgIGZpbGVuYW1lIGNhbiBiZSBlaXRoZXIgYW4gYWN0dWFsIGZpbGUgbmFtZSAoZ2l2ZW4gYXMgYSBzdHIsIGJ5dGVzLAorICAgIG9yIFBhdGhMaWtlIG9iamVjdCksIGluIHdoaWNoIGNhc2UgdGhlIG5hbWVkIGZpbGUgaXMgb3BlbmVkLCBvciBpdAorICAgIGNhbiBiZSBhbiBleGlzdGluZyBmaWxlIG9iamVjdCB0byByZWFkIGZyb20gb3Igd3JpdGUgdG8uCiAKICAgICBUaGUgbW9kZSBhcmd1bWVudCBjYW4gYmUgInIiLCAicmIiIChkZWZhdWx0KSwgInciLCAid2IiLCAieCIsICJ4YiIsCiAgICAgImEiLCBvciAiYWIiIGZvciBiaW5hcnkgbW9kZSwgb3IgInJ0IiwgInd0IiwgInh0Iiwgb3IgImF0IiBmb3IgdGV4dApkaWZmIC0tZ2l0IGEvTGliL21haWxib3gucHkgYi9MaWIvbWFpbGJveC5weQppbmRleCAwMjcwZTI1Li4zOWYyNGY5IDEwMDY0NAotLS0gYS9MaWIvbWFpbGJveC5weQorKysgYi9MaWIvbWFpbGJveC5weQpAQCAtMjMsOSArMjMsMTAgQEAKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBmY250bCA9IE5vbmUKIAotX19hbGxfXyA9IFsgJ01haWxib3gnLCAnTWFpbGRpcicsICdtYm94JywgJ01IJywgJ0JhYnlsJywgJ01NREYnLAotICAgICAgICAgICAgJ01lc3NhZ2UnLCAnTWFpbGRpck1lc3NhZ2UnLCAnbWJveE1lc3NhZ2UnLCAnTUhNZXNzYWdlJywKLSAgICAgICAgICAgICdCYWJ5bE1lc3NhZ2UnLCAnTU1ERk1lc3NhZ2UnXQorX19hbGxfXyA9IFsnTWFpbGJveCcsICdNYWlsZGlyJywgJ21ib3gnLCAnTUgnLCAnQmFieWwnLCAnTU1ERicsCisgICAgICAgICAgICdNZXNzYWdlJywgJ01haWxkaXJNZXNzYWdlJywgJ21ib3hNZXNzYWdlJywgJ01ITWVzc2FnZScsCisgICAgICAgICAgICdCYWJ5bE1lc3NhZ2UnLCAnTU1ERk1lc3NhZ2UnLCAnRXJyb3InLCAnTm9TdWNoTWFpbGJveEVycm9yJywKKyAgICAgICAgICAgJ05vdEVtcHR5RXJyb3InLCAnRXh0ZXJuYWxDbGFzaEVycm9yJywgJ0Zvcm1hdEVycm9yJ10KIAogbGluZXNlcCA9IG9zLmxpbmVzZXAuZW5jb2RlKCdhc2NpaScpCiAKQEAgLTMxMiwxMSArMzEzLDEyIEBACiAgICAgICAgICMgZmluYWwgcG9zaXRpb24gaW4gb3JkZXIgdG8gcHJldmVudCByYWNlIGNvbmRpdGlvbnMgd2l0aCBjaGFuZ2VzCiAgICAgICAgICMgZnJvbSBvdGhlciBwcm9ncmFtcwogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpZiBoYXNhdHRyKG9zLCAnbGluaycpOgorICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIG9zLmxpbmsodG1wX2ZpbGUubmFtZSwgZGVzdCkKLSAgICAgICAgICAgICAgICBvcy5yZW1vdmUodG1wX2ZpbGUubmFtZSkKLSAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBQZXJtaXNzaW9uRXJyb3IpOgogICAgICAgICAgICAgICAgIG9zLnJlbmFtZSh0bXBfZmlsZS5uYW1lLCBkZXN0KQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBvcy5yZW1vdmUodG1wX2ZpbGUubmFtZSkKICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKICAgICAgICAgICAgIG9zLnJlbW92ZSh0bXBfZmlsZS5uYW1lKQogICAgICAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJuby5FRVhJU1Q6CkBAIC0xMTk5LDEzICsxMjAxLDE0IEBACiAgICAgICAgIGZvciBrZXkgaW4gc2VsZi5pdGVya2V5cygpOgogICAgICAgICAgICAgaWYga2V5IC0gMSAhPSBwcmV2OgogICAgICAgICAgICAgICAgIGNoYW5nZXMuYXBwZW5kKChrZXksIHByZXYgKyAxKSkKLSAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKG9zLCAnbGluaycpOgorICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgb3MubGluayhvcy5wYXRoLmpvaW4oc2VsZi5fcGF0aCwgc3RyKGtleSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzZWxmLl9wYXRoLCBzdHIocHJldiArIDEpKSkKLSAgICAgICAgICAgICAgICAgICAgb3MudW5saW5rKG9zLnBhdGguam9pbihzZWxmLl9wYXRoLCBzdHIoa2V5KSkpCi0gICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBQZXJtaXNzaW9uRXJyb3IpOgogICAgICAgICAgICAgICAgICAgICBvcy5yZW5hbWUob3MucGF0aC5qb2luKHNlbGYuX3BhdGgsIHN0cihrZXkpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzZWxmLl9wYXRoLCBzdHIocHJldiArIDEpKSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBvcy51bmxpbmsob3MucGF0aC5qb2luKHNlbGYuX3BhdGgsIHN0cihrZXkpKSkKICAgICAgICAgICAgIHByZXYgKz0gMQogICAgICAgICBzZWxmLl9uZXh0X2tleSA9IHByZXYgKyAxCiAgICAgICAgIGlmIGxlbihjaGFuZ2VzKSA9PSAwOgpAQCAtMjA3NSwxMyArMjA3OCwxNCBAQAogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgaWYgaGFzYXR0cihvcywgJ2xpbmsnKToKKyAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIG9zLmxpbmsocHJlX2xvY2submFtZSwgZi5uYW1lICsgJy5sb2NrJykKICAgICAgICAgICAgICAgICAgICAgZG90bG9ja19kb25lID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICBvcy51bmxpbmsocHJlX2xvY2submFtZSkKLSAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGV4Y2VwdCAoQXR0cmlidXRlRXJyb3IsIFBlcm1pc3Npb25FcnJvcik6CiAgICAgICAgICAgICAgICAgICAgIG9zLnJlbmFtZShwcmVfbG9jay5uYW1lLCBmLm5hbWUgKyAnLmxvY2snKQogICAgICAgICAgICAgICAgICAgICBkb3Rsb2NrX2RvbmUgPSBUcnVlCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgb3MudW5saW5rKHByZV9sb2NrLm5hbWUpCiAgICAgICAgICAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgogICAgICAgICAgICAgICAgIG9zLnJlbW92ZShwcmVfbG9jay5uYW1lKQogICAgICAgICAgICAgICAgIHJhaXNlIEV4dGVybmFsQ2xhc2hFcnJvcignZG90IGxvY2sgdW5hdmFpbGFibGU6ICVzJyAlCmRpZmYgLS1naXQgYS9MaWIvbWltZXR5cGVzLnB5IGIvTGliL21pbWV0eXBlcy5weQppbmRleCAwYmU3NmFkLi45YTg4NjgwIDEwMDY0NAotLS0gYS9MaWIvbWltZXR5cGVzLnB5CisrKyBiL0xpYi9taW1ldHlwZXMucHkKQEAgLTMzLDggKzMzLDEwIEBACiAgICAgX3dpbnJlZyA9IE5vbmUKIAogX19hbGxfXyA9IFsKLSAgICAiZ3Vlc3NfdHlwZSIsImd1ZXNzX2V4dGVuc2lvbiIsImd1ZXNzX2FsbF9leHRlbnNpb25zIiwKLSAgICAiYWRkX3R5cGUiLCJyZWFkX21pbWVfdHlwZXMiLCJpbml0IgorICAgICJrbm93bmZpbGVzIiwgImluaXRlZCIsICJNaW1lVHlwZXMiLAorICAgICJndWVzc190eXBlIiwgImd1ZXNzX2FsbF9leHRlbnNpb25zIiwgImd1ZXNzX2V4dGVuc2lvbiIsCisgICAgImFkZF90eXBlIiwgImluaXQiLCAicmVhZF9taW1lX3R5cGVzIiwKKyAgICAic3VmZml4X21hcCIsICJlbmNvZGluZ3NfbWFwIiwgInR5cGVzX21hcCIsICJjb21tb25fdHlwZXMiCiBdCiAKIGtub3duZmlsZXMgPSBbCmRpZmYgLS1naXQgYS9MaWIvbW9kdWxlZmluZGVyLnB5IGIvTGliL21vZHVsZWZpbmRlci5weQppbmRleCA4MTAzNTAyLi5lMjIwMzE1IDEwMDY0NAotLS0gYS9MaWIvbW9kdWxlZmluZGVyLnB5CisrKyBiL0xpYi9tb2R1bGVmaW5kZXIucHkKQEAgLTEwLDcgKzEwLDcgQEAKIGltcG9ydCBzdHJ1Y3QKIGltcG9ydCB3YXJuaW5ncwogd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgotICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykKKyAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIERlcHJlY2F0aW9uV2FybmluZykKICAgICBpbXBvcnQgaW1wCiAKIExPQURfQ09OU1QgPSBkaXMub3BtYXBbJ0xPQURfQ09OU1QnXQpAQCAtMzM2LDggKzMzNiw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsbmFtZSA9IG5hbWUgKyAiLiIgKyBzdWIKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2FkZF9iYWRtb2R1bGUoZnVsbG5hbWUsIGNhbGxlcikKIAotICAgIGRlZiBzY2FuX29wY29kZXNfMjUoc2VsZiwgY28sCi0gICAgICAgICAgICAgICAgICAgICB1bnBhY2sgPSBzdHJ1Y3QudW5wYWNrKToKKyAgICBkZWYgc2Nhbl9vcGNvZGVzKHNlbGYsIGNvKToKICAgICAgICAgIyBTY2FuIHRoZSBjb2RlLCBhbmQgeWllbGQgJ2ludGVyZXN0aW5nJyBvcGNvZGUgY29tYmluYXRpb25zCiAgICAgICAgIGNvZGUgPSBjby5jb19jb2RlCiAgICAgICAgIG5hbWVzID0gY28uY29fbmFtZXMKQEAgLTM2MCw3ICszNTksNyBAQAogCiAgICAgZGVmIHNjYW5fY29kZShzZWxmLCBjbywgbSk6CiAgICAgICAgIGNvZGUgPSBjby5jb19jb2RlCi0gICAgICAgIHNjYW5uZXIgPSBzZWxmLnNjYW5fb3Bjb2Rlc18yNQorICAgICAgICBzY2FubmVyID0gc2VsZi5zY2FuX29wY29kZXMKICAgICAgICAgZm9yIHdoYXQsIGFyZ3MgaW4gc2Nhbm5lcihjbyk6CiAgICAgICAgICAgICBpZiB3aGF0ID09ICJzdG9yZSI6CiAgICAgICAgICAgICAgICAgbmFtZSwgPSBhcmdzCmRpZmYgLS1naXQgYS9MaWIvbXNpbGliL19faW5pdF9fLnB5IGIvTGliL21zaWxpYi9fX2luaXRfXy5weQppbmRleCA2ZDBhMjhmLi5mMDM3MGMyIDEwMDY0NAotLS0gYS9MaWIvbXNpbGliL19faW5pdF9fLnB5CisrKyBiL0xpYi9tc2lsaWIvX19pbml0X18ucHkKQEAgLTEsNyArMSw3IEBACiAjIENvcHlyaWdodCAoQykgMjAwNSBNYXJ0aW4gdi4gTMO2d2lzCiAjIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KIGZyb20gX21zaSBpbXBvcnQgKgotaW1wb3J0IGdsb2IKK2ltcG9ydCBmbm1hdGNoCiBpbXBvcnQgb3MKIGltcG9ydCByZQogaW1wb3J0IHN0cmluZwpAQCAtMjg5LDcgKzI4OSw3IEBACiAgICAgZGVmIG1ha2Vfc2hvcnQoc2VsZiwgZmlsZSk6CiAgICAgICAgIG9sZGZpbGUgPSBmaWxlCiAgICAgICAgIGZpbGUgPSBmaWxlLnJlcGxhY2UoJysnLCAnXycpCi0gICAgICAgIGZpbGUgPSAnJy5qb2luKGMgZm9yIGMgaW4gZmlsZSBpZiBub3QgYyBpbiAnICIvXFtdOjs9LCcpCisgICAgICAgIGZpbGUgPSAnJy5qb2luKGMgZm9yIGMgaW4gZmlsZSBpZiBub3QgYyBpbiByJyAiL1xbXTo7PSwnKQogICAgICAgICBwYXJ0cyA9IGZpbGUuc3BsaXQoIi4iKQogICAgICAgICBpZiBsZW4ocGFydHMpID4gMToKICAgICAgICAgICAgIHByZWZpeCA9ICIiLmpvaW4ocGFydHNbOi0xXSkudXBwZXIoKQpAQCAtMzc5LDcgKzM3OSwxMyBAQAogICAgIGRlZiBnbG9iKHNlbGYsIHBhdHRlcm4sIGV4Y2x1ZGUgPSBOb25lKToKICAgICAgICAgIiIiQWRkIGEgbGlzdCBvZiBmaWxlcyB0byB0aGUgY3VycmVudCBjb21wb25lbnQgYXMgc3BlY2lmaWVkIGluIHRoZQogICAgICAgICBnbG9iIHBhdHRlcm4uIEluZGl2aWR1YWwgZmlsZXMgY2FuIGJlIGV4Y2x1ZGVkIGluIHRoZSBleGNsdWRlIGxpc3QuIiIiCi0gICAgICAgIGZpbGVzID0gZ2xvYi5nbG9iMShzZWxmLmFic29sdXRlLCBwYXR0ZXJuKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBmaWxlcyA9IG9zLmxpc3RkaXIoc2VsZi5hYnNvbHV0ZSkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICByZXR1cm4gW10KKyAgICAgICAgaWYgcGF0dGVybls6MV0gIT0gJy4nOgorICAgICAgICAgICAgZmlsZXMgPSAoZiBmb3IgZiBpbiBmaWxlcyBpZiBmWzBdICE9ICcuJykKKyAgICAgICAgZmlsZXMgPSBmbm1hdGNoLmZpbHRlcihmaWxlcywgcGF0dGVybikKICAgICAgICAgZm9yIGYgaW4gZmlsZXM6CiAgICAgICAgICAgICBpZiBleGNsdWRlIGFuZCBmIGluIGV4Y2x1ZGU6IGNvbnRpbnVlCiAgICAgICAgICAgICBzZWxmLmFkZF9maWxlKGYpCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2Nvbm5lY3Rpb24ucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2Nvbm5lY3Rpb24ucHkKaW5kZXggZDBhMWI4Ni4uZDQ5ZThmMCAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9jb25uZWN0aW9uLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvY29ubmVjdGlvbi5weQpAQCAtMjAsMTEgKzIwLDExIEBACiAKIGltcG9ydCBfbXVsdGlwcm9jZXNzaW5nCiAKLWZyb20gLiBpbXBvcnQgcmVkdWN0aW9uCiBmcm9tIC4gaW1wb3J0IHV0aWwKIAogZnJvbSAuIGltcG9ydCBBdXRoZW50aWNhdGlvbkVycm9yLCBCdWZmZXJUb29TaG9ydAotZnJvbSAucmVkdWN0aW9uIGltcG9ydCBGb3JraW5nUGlja2xlcgorZnJvbSAuY29udGV4dCBpbXBvcnQgcmVkdWN0aW9uCitfRm9ya2luZ1BpY2tsZXIgPSByZWR1Y3Rpb24uRm9ya2luZ1BpY2tsZXIKIAogdHJ5OgogICAgIGltcG9ydCBfd2luYXBpCkBAIC0yMDMsNyArMjAzLDcgQEAKICAgICAgICAgIiIiU2VuZCBhIChwaWNrbGFibGUpIG9iamVjdCIiIgogICAgICAgICBzZWxmLl9jaGVja19jbG9zZWQoKQogICAgICAgICBzZWxmLl9jaGVja193cml0YWJsZSgpCi0gICAgICAgIHNlbGYuX3NlbmRfYnl0ZXMoRm9ya2luZ1BpY2tsZXIuZHVtcHMob2JqKSkKKyAgICAgICAgc2VsZi5fc2VuZF9ieXRlcyhfRm9ya2luZ1BpY2tsZXIuZHVtcHMob2JqKSkKIAogICAgIGRlZiByZWN2X2J5dGVzKHNlbGYsIG1heGxlbmd0aD1Ob25lKToKICAgICAgICAgIiIiCkBAIC0yNDgsNyArMjQ4LDcgQEAKICAgICAgICAgc2VsZi5fY2hlY2tfY2xvc2VkKCkKICAgICAgICAgc2VsZi5fY2hlY2tfcmVhZGFibGUoKQogICAgICAgICBidWYgPSBzZWxmLl9yZWN2X2J5dGVzKCkKLSAgICAgICAgcmV0dXJuIEZvcmtpbmdQaWNrbGVyLmxvYWRzKGJ1Zi5nZXRidWZmZXIoKSkKKyAgICAgICAgcmV0dXJuIF9Gb3JraW5nUGlja2xlci5sb2FkcyhidWYuZ2V0YnVmZmVyKCkpCiAKICAgICBkZWYgcG9sbChzZWxmLCB0aW1lb3V0PTAuMCk6CiAgICAgICAgICIiIldoZXRoZXIgdGhlcmUgaXMgYW55IGlucHV0IGF2YWlsYWJsZSB0byBiZSByZWFkIiIiCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2NvbnRleHQucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2NvbnRleHQucHkKaW5kZXggMTE1ZDRiZi4uNjIzZjZmYiAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9jb250ZXh0LnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvY29udGV4dC5weQpAQCAtMyw2ICszLDcgQEAKIGltcG9ydCB0aHJlYWRpbmcKIAogZnJvbSAuIGltcG9ydCBwcm9jZXNzCitmcm9tIC4gaW1wb3J0IHJlZHVjdGlvbgogCiBfX2FsbF9fID0gW10gICAgICAgICAgICAjIHRoaW5ncyBhcmUgY29waWVkIGZyb20gaGVyZSB0byBfX2luaXRfXy5weQogCkBAIC0xOTgsNiArMTk5LDE2IEBACiAgICAgZGVmIHNldF9zdGFydF9tZXRob2Qoc2VsZiwgbWV0aG9kLCBmb3JjZT1GYWxzZSk6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2Nhbm5vdCBzZXQgc3RhcnQgbWV0aG9kIG9mIGNvbmNyZXRlIGNvbnRleHQnKQogCisgICAgQHByb3BlcnR5CisgICAgZGVmIHJlZHVjZXIoc2VsZik6CisgICAgICAgICcnJ0NvbnRyb2xzIGhvdyBvYmplY3RzIHdpbGwgYmUgcmVkdWNlZCB0byBhIGZvcm0gdGhhdCBjYW4gYmUKKyAgICAgICAgc2hhcmVkIHdpdGggb3RoZXIgcHJvY2Vzc2VzLicnJworICAgICAgICByZXR1cm4gZ2xvYmFscygpLmdldCgncmVkdWN0aW9uJykKKworICAgIEByZWR1Y2VyLnNldHRlcgorICAgIGRlZiByZWR1Y2VyKHNlbGYsIHJlZHVjdGlvbik6CisgICAgICAgIGdsb2JhbHMoKVsncmVkdWN0aW9uJ10gPSByZWR1Y3Rpb24KKwogICAgIGRlZiBfY2hlY2tfYXZhaWxhYmxlKHNlbGYpOgogICAgICAgICBwYXNzCiAKQEAgLTI0NSw3ICsyNTYsNiBAQAogICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKICAgICAgICAgICAgIHJldHVybiBbJ3NwYXduJ10KICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGZyb20gLiBpbXBvcnQgcmVkdWN0aW9uCiAgICAgICAgICAgICBpZiByZWR1Y3Rpb24uSEFWRV9TRU5EX0hBTkRMRToKICAgICAgICAgICAgICAgICByZXR1cm4gWydmb3JrJywgJ3NwYXduJywgJ2ZvcmtzZXJ2ZXInXQogICAgICAgICAgICAgZWxzZToKQEAgLTI5Miw3ICszMDIsNiBAQAogICAgICAgICBfbmFtZSA9ICdmb3Jrc2VydmVyJwogICAgICAgICBQcm9jZXNzID0gRm9ya1NlcnZlclByb2Nlc3MKICAgICAgICAgZGVmIF9jaGVja19hdmFpbGFibGUoc2VsZik6Ci0gICAgICAgICAgICBmcm9tIC4gaW1wb3J0IHJlZHVjdGlvbgogICAgICAgICAgICAgaWYgbm90IHJlZHVjdGlvbi5IQVZFX1NFTkRfSEFORExFOgogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2ZvcmtzZXJ2ZXIgc3RhcnQgbWV0aG9kIG5vdCBhdmFpbGFibGUnKQogCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2ZvcmtzZXJ2ZXIucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2ZvcmtzZXJ2ZXIucHkKaW5kZXggYWQwMWVkZS4uZjJjMTc5ZSAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9mb3Jrc2VydmVyLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvZm9ya3NlcnZlci5weQpAQCAtOSw3ICs5LDcgQEAKIAogZnJvbSAuIGltcG9ydCBjb25uZWN0aW9uCiBmcm9tIC4gaW1wb3J0IHByb2Nlc3MKLWZyb20gLiBpbXBvcnQgcmVkdWN0aW9uCitmcm9tIC5jb250ZXh0IGltcG9ydCByZWR1Y3Rpb24KIGZyb20gLiBpbXBvcnQgc2VtYXBob3JlX3RyYWNrZXIKIGZyb20gLiBpbXBvcnQgc3Bhd24KIGZyb20gLiBpbXBvcnQgdXRpbApkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9oZWFwLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9oZWFwLnB5CmluZGV4IDQ0ZDk2MzguLjQ0MzMyMTUgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvaGVhcC5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2hlYXAucHkKQEAgLTE0LDggKzE0LDcgQEAKIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHRocmVhZGluZwogCi1mcm9tIC4gaW1wb3J0IGNvbnRleHQKLWZyb20gLiBpbXBvcnQgcmVkdWN0aW9uCitmcm9tIC5jb250ZXh0IGltcG9ydCByZWR1Y3Rpb24sIGFzc2VydF9zcGF3bmluZwogZnJvbSAuIGltcG9ydCB1dGlsCiAKIF9fYWxsX18gPSBbJ0J1ZmZlcldyYXBwZXInXQpAQCAtNDgsNyArNDcsNyBAQAogICAgICAgICAgICAgc2VsZi5fc3RhdGUgPSAoc2VsZi5zaXplLCBzZWxmLm5hbWUpCiAKICAgICAgICAgZGVmIF9fZ2V0c3RhdGVfXyhzZWxmKToKLSAgICAgICAgICAgIGNvbnRleHQuYXNzZXJ0X3NwYXduaW5nKHNlbGYpCisgICAgICAgICAgICBhc3NlcnRfc3Bhd25pbmcoc2VsZikKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9zdGF0ZQogCiAgICAgICAgIGRlZiBfX3NldHN0YXRlX18oc2VsZiwgc3RhdGUpOgpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9tYW5hZ2Vycy5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvbWFuYWdlcnMucHkKaW5kZXggYjE3NTQ3MC4uYjljZTg0YiAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9tYW5hZ2Vycy5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL21hbmFnZXJzLnB5CkBAIC0yMywxMCArMjMsOSBAQAogZnJvbSB0cmFjZWJhY2sgaW1wb3J0IGZvcm1hdF9leGMKIAogZnJvbSAuIGltcG9ydCBjb25uZWN0aW9uCi1mcm9tIC4gaW1wb3J0IGNvbnRleHQKK2Zyb20gLmNvbnRleHQgaW1wb3J0IHJlZHVjdGlvbiwgZ2V0X3NwYXduaW5nX3BvcGVuCiBmcm9tIC4gaW1wb3J0IHBvb2wKIGZyb20gLiBpbXBvcnQgcHJvY2VzcwotZnJvbSAuIGltcG9ydCByZWR1Y3Rpb24KIGZyb20gLiBpbXBvcnQgdXRpbAogZnJvbSAuIGltcG9ydCBnZXRfY29udGV4dAogCkBAIC0xNDIsNyArMTQxLDggQEAKIAogICAgICAgICBzZWxmLmlkX3RvX29iaiA9IHsnMCc6IChOb25lLCAoKSl9CiAgICAgICAgIHNlbGYuaWRfdG9fcmVmY291bnQgPSB7fQotICAgICAgICBzZWxmLm11dGV4ID0gdGhyZWFkaW5nLlJMb2NrKCkKKyAgICAgICAgc2VsZi5pZF90b19sb2NhbF9wcm94eV9vYmogPSB7fQorICAgICAgICBzZWxmLm11dGV4ID0gdGhyZWFkaW5nLkxvY2soKQogCiAgICAgZGVmIHNlcnZlX2ZvcmV2ZXIoc2VsZik6CiAgICAgICAgICcnJwpAQCAtMjI3LDcgKzIyNywxNCBAQAogICAgICAgICAgICAgICAgIG1ldGhvZG5hbWUgPSBvYmogPSBOb25lCiAgICAgICAgICAgICAgICAgcmVxdWVzdCA9IHJlY3YoKQogICAgICAgICAgICAgICAgIGlkZW50LCBtZXRob2RuYW1lLCBhcmdzLCBrd2RzID0gcmVxdWVzdAotICAgICAgICAgICAgICAgIG9iaiwgZXhwb3NlZCwgZ2V0dHlwZWlkID0gaWRfdG9fb2JqW2lkZW50XQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgb2JqLCBleHBvc2VkLCBnZXR0eXBlaWQgPSBpZF90b19vYmpbaWRlbnRdCisgICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yIGFzIGtlOgorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBvYmosIGV4cG9zZWQsIGdldHR5cGVpZCA9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlkX3RvX2xvY2FsX3Byb3h5X29ialtpZGVudF0KKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yIGFzIHNlY29uZF9rZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGtlCiAKICAgICAgICAgICAgICAgICBpZiBtZXRob2RuYW1lIG5vdCBpbiBleHBvc2VkOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigKQEAgLTMwOCw3ICszMTUsNyBAQAogICAgICAgICAnJycKICAgICAgICAgd2l0aCBzZWxmLm11dGV4OgogICAgICAgICAgICAgcmVzdWx0ID0gW10KLSAgICAgICAgICAgIGtleXMgPSBsaXN0KHNlbGYuaWRfdG9fb2JqLmtleXMoKSkKKyAgICAgICAgICAgIGtleXMgPSBsaXN0KHNlbGYuaWRfdG9fcmVmY291bnQua2V5cygpKQogICAgICAgICAgICAga2V5cy5zb3J0KCkKICAgICAgICAgICAgIGZvciBpZGVudCBpbiBrZXlzOgogICAgICAgICAgICAgICAgIGlmIGlkZW50ICE9ICcwJzoKQEAgLTMyMSw3ICszMjgsOCBAQAogICAgICAgICAnJycKICAgICAgICAgTnVtYmVyIG9mIHNoYXJlZCBvYmplY3RzCiAgICAgICAgICcnJwotICAgICAgICByZXR1cm4gbGVuKHNlbGYuaWRfdG9fb2JqKSAtIDEgICAgICAjIGRvbid0IGNvdW50IGlkZW50PScwJworICAgICAgICAjIERvZXNuJ3QgdXNlIChsZW4oc2VsZi5pZF90b19vYmopIC0gMSkgYXMgd2Ugc2hvdWxkbid0IGNvdW50IGlkZW50PScwJworICAgICAgICByZXR1cm4gbGVuKHNlbGYuaWRfdG9fcmVmY291bnQpCiAKICAgICBkZWYgc2h1dGRvd24oc2VsZiwgYyk6CiAgICAgICAgICcnJwpAQCAtMzYzLDEzICszNzEsOSBAQAogICAgICAgICAgICAgc2VsZi5pZF90b19vYmpbaWRlbnRdID0gKG9iaiwgc2V0KGV4cG9zZWQpLCBtZXRob2RfdG9fdHlwZWlkKQogICAgICAgICAgICAgaWYgaWRlbnQgbm90IGluIHNlbGYuaWRfdG9fcmVmY291bnQ6CiAgICAgICAgICAgICAgICAgc2VsZi5pZF90b19yZWZjb3VudFtpZGVudF0gPSAwCi0gICAgICAgICAgICAjIGluY3JlbWVudCB0aGUgcmVmZXJlbmNlIGNvdW50IGltbWVkaWF0ZWx5LCB0byBhdm9pZAotICAgICAgICAgICAgIyB0aGlzIG9iamVjdCBiZWluZyBnYXJiYWdlIGNvbGxlY3RlZCBiZWZvcmUgYSBQcm94eQotICAgICAgICAgICAgIyBvYmplY3QgZm9yIGl0IGNhbiBiZSBjcmVhdGVkLiAgVGhlIGNhbGxlciBvZiBjcmVhdGUoKQotICAgICAgICAgICAgIyBpcyByZXNwb25zaWJsZSBmb3IgZG9pbmcgYSBkZWNyZWYgb25jZSB0aGUgUHJveHkgb2JqZWN0Ci0gICAgICAgICAgICAjIGhhcyBiZWVuIGNyZWF0ZWQuCi0gICAgICAgICAgICBzZWxmLmluY3JlZihjLCBpZGVudCkKLSAgICAgICAgICAgIHJldHVybiBpZGVudCwgdHVwbGUoZXhwb3NlZCkKKworICAgICAgICBzZWxmLmluY3JlZihjLCBpZGVudCkKKyAgICAgICAgcmV0dXJuIGlkZW50LCB0dXBsZShleHBvc2VkKQogCiAgICAgZGVmIGdldF9tZXRob2RzKHNlbGYsIGMsIHRva2VuKToKICAgICAgICAgJycnCkBAIC0zODcsMTUgKzM5MSw0NSBAQAogCiAgICAgZGVmIGluY3JlZihzZWxmLCBjLCBpZGVudCk6CiAgICAgICAgIHdpdGggc2VsZi5tdXRleDoKLSAgICAgICAgICAgIHNlbGYuaWRfdG9fcmVmY291bnRbaWRlbnRdICs9IDEKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLmlkX3RvX3JlZmNvdW50W2lkZW50XSArPSAxCisgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3IgYXMga2U6CisgICAgICAgICAgICAgICAgIyBJZiBubyBleHRlcm5hbCByZWZlcmVuY2VzIGV4aXN0IGJ1dCBhbiBpbnRlcm5hbCAodG8gdGhlCisgICAgICAgICAgICAgICAgIyBtYW5hZ2VyKSBzdGlsbCBkb2VzIGFuZCBhIG5ldyBleHRlcm5hbCByZWZlcmVuY2UgaXMgY3JlYXRlZAorICAgICAgICAgICAgICAgICMgZnJvbSBpdCwgcmVzdG9yZSB0aGUgbWFuYWdlcidzIHRyYWNraW5nIG9mIGl0IGZyb20gdGhlCisgICAgICAgICAgICAgICAgIyBwcmV2aW91c2x5IHN0YXNoZWQgaW50ZXJuYWwgcmVmLgorICAgICAgICAgICAgICAgIGlmIGlkZW50IGluIHNlbGYuaWRfdG9fbG9jYWxfcHJveHlfb2JqOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmlkX3RvX3JlZmNvdW50W2lkZW50XSA9IDEKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5pZF90b19vYmpbaWRlbnRdID0gXAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pZF90b19sb2NhbF9wcm94eV9vYmpbaWRlbnRdCisgICAgICAgICAgICAgICAgICAgIG9iaiwgZXhwb3NlZCwgZ2V0dHlwZWlkID0gc2VsZi5pZF90b19vYmpbaWRlbnRdCisgICAgICAgICAgICAgICAgICAgIHV0aWwuZGVidWcoJ1NlcnZlciByZS1lbmFibGVkIHRyYWNraW5nICYgSU5DUkVGICVyJywgaWRlbnQpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2Uga2UKIAogICAgIGRlZiBkZWNyZWYoc2VsZiwgYywgaWRlbnQpOgorICAgICAgICBpZiBpZGVudCBub3QgaW4gc2VsZi5pZF90b19yZWZjb3VudCBhbmQgXAorICAgICAgICAgICAgaWRlbnQgaW4gc2VsZi5pZF90b19sb2NhbF9wcm94eV9vYmo6CisgICAgICAgICAgICB1dGlsLmRlYnVnKCdTZXJ2ZXIgREVDUkVGIHNraXBwaW5nICVyJywgaWRlbnQpCisgICAgICAgICAgICByZXR1cm4KKwogICAgICAgICB3aXRoIHNlbGYubXV0ZXg6CiAgICAgICAgICAgICBhc3NlcnQgc2VsZi5pZF90b19yZWZjb3VudFtpZGVudF0gPj0gMQogICAgICAgICAgICAgc2VsZi5pZF90b19yZWZjb3VudFtpZGVudF0gLT0gMQogICAgICAgICAgICAgaWYgc2VsZi5pZF90b19yZWZjb3VudFtpZGVudF0gPT0gMDoKLSAgICAgICAgICAgICAgICBkZWwgc2VsZi5pZF90b19vYmpbaWRlbnRdLCBzZWxmLmlkX3RvX3JlZmNvdW50W2lkZW50XQotICAgICAgICAgICAgICAgIHV0aWwuZGVidWcoJ2Rpc3Bvc2luZyBvZiBvYmogd2l0aCBpZCAlcicsIGlkZW50KQorICAgICAgICAgICAgICAgIGRlbCBzZWxmLmlkX3RvX3JlZmNvdW50W2lkZW50XQorCisgICAgICAgIGlmIGlkZW50IG5vdCBpbiBzZWxmLmlkX3RvX3JlZmNvdW50OgorICAgICAgICAgICAgIyBUd28tc3RlcCBwcm9jZXNzIGluIGNhc2UgdGhlIG9iamVjdCB0dXJucyBvdXQgdG8gY29udGFpbiBvdGhlcgorICAgICAgICAgICAgIyBwcm94eSBvYmplY3RzIChlLmcuIGEgbWFuYWdlZCBsaXN0IG9mIG1hbmFnZWQgbGlzdHMpLgorICAgICAgICAgICAgIyBPdGhlcndpc2UsIGRlbGV0aW5nIHNlbGYuaWRfdG9fb2JqW2lkZW50XSB3b3VsZCB0cmlnZ2VyIHRoZQorICAgICAgICAgICAgIyBkZWxldGluZyBvZiB0aGUgc3RvcmVkIHZhbHVlIChhbm90aGVyIG1hbmFnZWQgb2JqZWN0KSB3aGljaCB3b3VsZAorICAgICAgICAgICAgIyBpbiB0dXJuIGF0dGVtcHQgdG8gYWNxdWlyZSB0aGUgbXV0ZXggdGhhdCBpcyBhbHJlYWR5IGhlbGQgaGVyZS4KKyAgICAgICAgICAgIHNlbGYuaWRfdG9fb2JqW2lkZW50XSA9IChOb25lLCAoKSwgTm9uZSkgICMgdGhyZWFkLXNhZmUKKyAgICAgICAgICAgIHV0aWwuZGVidWcoJ2Rpc3Bvc2luZyBvZiBvYmogd2l0aCBpZCAlcicsIGlkZW50KQorICAgICAgICAgICAgd2l0aCBzZWxmLm11dGV4OgorICAgICAgICAgICAgICAgIGRlbCBzZWxmLmlkX3RvX29ialtpZGVudF0KKwogCiAjCiAjIENsYXNzIHRvIHJlcHJlc2VudCBzdGF0ZSBvZiBhIG1hbmFnZXIKQEAgLTY1OCw3ICs2OTIsNyBAQAogICAgIF9tdXRleCA9IHV0aWwuRm9ya0F3YXJlVGhyZWFkTG9jaygpCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgdG9rZW4sIHNlcmlhbGl6ZXIsIG1hbmFnZXI9Tm9uZSwKLSAgICAgICAgICAgICAgICAgYXV0aGtleT1Ob25lLCBleHBvc2VkPU5vbmUsIGluY3JlZj1UcnVlKToKKyAgICAgICAgICAgICAgICAgYXV0aGtleT1Ob25lLCBleHBvc2VkPU5vbmUsIGluY3JlZj1UcnVlLCBtYW5hZ2VyX293bmVkPUZhbHNlKToKICAgICAgICAgd2l0aCBCYXNlUHJveHkuX211dGV4OgogICAgICAgICAgICAgdGxzX2lkc2V0ID0gQmFzZVByb3h5Ll9hZGRyZXNzX3RvX2xvY2FsLmdldCh0b2tlbi5hZGRyZXNzLCBOb25lKQogICAgICAgICAgICAgaWYgdGxzX2lkc2V0IGlzIE5vbmU6CkBAIC02ODAsNiArNzE0LDEyIEBACiAgICAgICAgIHNlbGYuX3NlcmlhbGl6ZXIgPSBzZXJpYWxpemVyCiAgICAgICAgIHNlbGYuX0NsaWVudCA9IGxpc3RlbmVyX2NsaWVudFtzZXJpYWxpemVyXVsxXQogCisgICAgICAgICMgU2hvdWxkIGJlIHNldCB0byBUcnVlIG9ubHkgd2hlbiBhIHByb3h5IG9iamVjdCBpcyBiZWluZyBjcmVhdGVkCisgICAgICAgICMgb24gdGhlIG1hbmFnZXIgc2VydmVyOyBwcmltYXJ5IHVzZSBjYXNlOiBuZXN0ZWQgcHJveHkgb2JqZWN0cy4KKyAgICAgICAgIyBSZWJ1aWxkUHJveHkgZGV0ZWN0cyB3aGVuIGEgcHJveHkgaXMgYmVpbmcgY3JlYXRlZCBvbiB0aGUgbWFuYWdlcgorICAgICAgICAjIGFuZCBzZXRzIHRoaXMgdmFsdWUgYXBwcm9wcmlhdGVseS4KKyAgICAgICAgc2VsZi5fb3duZWRfYnlfbWFuYWdlciA9IG1hbmFnZXJfb3duZWQKKwogICAgICAgICBpZiBhdXRoa2V5IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgc2VsZi5fYXV0aGtleSA9IHByb2Nlc3MuQXV0aGVudGljYXRpb25TdHJpbmcoYXV0aGtleSkKICAgICAgICAgZWxpZiBzZWxmLl9tYW5hZ2VyIGlzIG5vdCBOb25lOgpAQCAtNzM4LDYgKzc3OCwxMCBAQAogICAgICAgICByZXR1cm4gc2VsZi5fY2FsbG1ldGhvZCgnI0dFVFZBTFVFJykKIAogICAgIGRlZiBfaW5jcmVmKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9vd25lZF9ieV9tYW5hZ2VyOgorICAgICAgICAgICAgdXRpbC5kZWJ1Zygnb3duZWRfYnlfbWFuYWdlciBza2lwcGVkIElOQ1JFRiBvZiAlcicsIHNlbGYuX3Rva2VuLmlkKQorICAgICAgICAgICAgcmV0dXJuCisKICAgICAgICAgY29ubiA9IHNlbGYuX0NsaWVudChzZWxmLl90b2tlbi5hZGRyZXNzLCBhdXRoa2V5PXNlbGYuX2F1dGhrZXkpCiAgICAgICAgIGRpc3BhdGNoKGNvbm4sIE5vbmUsICdpbmNyZWYnLCAoc2VsZi5faWQsKSkKICAgICAgICAgdXRpbC5kZWJ1ZygnSU5DUkVGICVyJywgc2VsZi5fdG9rZW4uaWQpCkBAIC03ODgsNyArODMyLDcgQEAKIAogICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgogICAgICAgICBrd2RzID0ge30KLSAgICAgICAgaWYgY29udGV4dC5nZXRfc3Bhd25pbmdfcG9wZW4oKSBpcyBub3QgTm9uZToKKyAgICAgICAgaWYgZ2V0X3NwYXduaW5nX3BvcGVuKCkgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBrd2RzWydhdXRoa2V5J10gPSBzZWxmLl9hdXRoa2V5CiAKICAgICAgICAgaWYgZ2V0YXR0cihzZWxmLCAnX2lzYXV0bycsIEZhbHNlKToKQEAgLTgyMiwxOSArODY2LDE5IEBACiBkZWYgUmVidWlsZFByb3h5KGZ1bmMsIHRva2VuLCBzZXJpYWxpemVyLCBrd2RzKToKICAgICAnJycKICAgICBGdW5jdGlvbiB1c2VkIGZvciB1bnBpY2tsaW5nIHByb3h5IG9iamVjdHMuCi0KLSAgICBJZiBwb3NzaWJsZSB0aGUgc2hhcmVkIG9iamVjdCBpcyByZXR1cm5lZCwgb3Igb3RoZXJ3aXNlIGEgcHJveHkgZm9yIGl0LgogICAgICcnJwogICAgIHNlcnZlciA9IGdldGF0dHIocHJvY2Vzcy5jdXJyZW50X3Byb2Nlc3MoKSwgJ19tYW5hZ2VyX3NlcnZlcicsIE5vbmUpCi0KICAgICBpZiBzZXJ2ZXIgYW5kIHNlcnZlci5hZGRyZXNzID09IHRva2VuLmFkZHJlc3M6Ci0gICAgICAgIHJldHVybiBzZXJ2ZXIuaWRfdG9fb2JqW3Rva2VuLmlkXVswXQotICAgIGVsc2U6Ci0gICAgICAgIGluY3JlZiA9ICgKLSAgICAgICAgICAgIGt3ZHMucG9wKCdpbmNyZWYnLCBUcnVlKSBhbmQKLSAgICAgICAgICAgIG5vdCBnZXRhdHRyKHByb2Nlc3MuY3VycmVudF9wcm9jZXNzKCksICdfaW5oZXJpdGluZycsIEZhbHNlKQotICAgICAgICAgICAgKQotICAgICAgICByZXR1cm4gZnVuYyh0b2tlbiwgc2VyaWFsaXplciwgaW5jcmVmPWluY3JlZiwgKiprd2RzKQorICAgICAgICB1dGlsLmRlYnVnKCdSZWJ1aWxkIGEgcHJveHkgb3duZWQgYnkgbWFuYWdlciwgdG9rZW49JXInLCB0b2tlbikKKyAgICAgICAga3dkc1snbWFuYWdlcl9vd25lZCddID0gVHJ1ZQorICAgICAgICBpZiB0b2tlbi5pZCBub3QgaW4gc2VydmVyLmlkX3RvX2xvY2FsX3Byb3h5X29iajoKKyAgICAgICAgICAgIHNlcnZlci5pZF90b19sb2NhbF9wcm94eV9vYmpbdG9rZW4uaWRdID0gXAorICAgICAgICAgICAgICAgIHNlcnZlci5pZF90b19vYmpbdG9rZW4uaWRdCisgICAgaW5jcmVmID0gKAorICAgICAgICBrd2RzLnBvcCgnaW5jcmVmJywgVHJ1ZSkgYW5kCisgICAgICAgIG5vdCBnZXRhdHRyKHByb2Nlc3MuY3VycmVudF9wcm9jZXNzKCksICdfaW5oZXJpdGluZycsIEZhbHNlKQorICAgICAgICApCisgICAgcmV0dXJuIGZ1bmModG9rZW4sIHNlcmlhbGl6ZXIsIGluY3JlZj1pbmNyZWYsICoqa3dkcykKIAogIwogIyBGdW5jdGlvbnMgdG8gY3JlYXRlIHByb3hpZXMgYW5kIHByb3h5IHR5cGVzCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3Bvb2wucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3Bvb2wucHkKaW5kZXggNmQyNTQ2OS4uZmZkZjQyNiAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9wb29sLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9vbC5weQpAQCAtNjM4LDIyICs2MzgsMjYgQEAKICAgICAgICAgICAgIHNlbGYuX251bWJlcl9sZWZ0ID0gbGVuZ3RoLy9jaHVua3NpemUgKyBib29sKGxlbmd0aCAlIGNodW5rc2l6ZSkKIAogICAgIGRlZiBfc2V0KHNlbGYsIGksIHN1Y2Nlc3NfcmVzdWx0KToKKyAgICAgICAgc2VsZi5fbnVtYmVyX2xlZnQgLT0gMQogICAgICAgICBzdWNjZXNzLCByZXN1bHQgPSBzdWNjZXNzX3Jlc3VsdAotICAgICAgICBpZiBzdWNjZXNzOgorICAgICAgICBpZiBzdWNjZXNzIGFuZCBzZWxmLl9zdWNjZXNzOgogICAgICAgICAgICAgc2VsZi5fdmFsdWVbaSpzZWxmLl9jaHVua3NpemU6KGkrMSkqc2VsZi5fY2h1bmtzaXplXSA9IHJlc3VsdAotICAgICAgICAgICAgc2VsZi5fbnVtYmVyX2xlZnQgLT0gMQogICAgICAgICAgICAgaWYgc2VsZi5fbnVtYmVyX2xlZnQgPT0gMDoKICAgICAgICAgICAgICAgICBpZiBzZWxmLl9jYWxsYmFjazoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2FsbGJhY2soc2VsZi5fdmFsdWUpCiAgICAgICAgICAgICAgICAgZGVsIHNlbGYuX2NhY2hlW3NlbGYuX2pvYl0KICAgICAgICAgICAgICAgICBzZWxmLl9ldmVudC5zZXQoKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5fc3VjY2VzcyA9IEZhbHNlCi0gICAgICAgICAgICBzZWxmLl92YWx1ZSA9IHJlc3VsdAotICAgICAgICAgICAgaWYgc2VsZi5fZXJyb3JfY2FsbGJhY2s6Ci0gICAgICAgICAgICAgICAgc2VsZi5fZXJyb3JfY2FsbGJhY2soc2VsZi5fdmFsdWUpCi0gICAgICAgICAgICBkZWwgc2VsZi5fY2FjaGVbc2VsZi5fam9iXQotICAgICAgICAgICAgc2VsZi5fZXZlbnQuc2V0KCkKKyAgICAgICAgICAgIGlmIG5vdCBzdWNjZXNzIGFuZCBzZWxmLl9zdWNjZXNzOgorICAgICAgICAgICAgICAgICMgb25seSBzdG9yZSBmaXJzdCBleGNlcHRpb24KKyAgICAgICAgICAgICAgICBzZWxmLl9zdWNjZXNzID0gRmFsc2UKKyAgICAgICAgICAgICAgICBzZWxmLl92YWx1ZSA9IHJlc3VsdAorICAgICAgICAgICAgaWYgc2VsZi5fbnVtYmVyX2xlZnQgPT0gMDoKKyAgICAgICAgICAgICAgICAjIG9ubHkgY29uc2lkZXIgdGhlIHJlc3VsdCByZWFkeSBvbmNlIGFsbCBqb2JzIGFyZSBkb25lCisgICAgICAgICAgICAgICAgaWYgc2VsZi5fZXJyb3JfY2FsbGJhY2s6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Vycm9yX2NhbGxiYWNrKHNlbGYuX3ZhbHVlKQorICAgICAgICAgICAgICAgIGRlbCBzZWxmLl9jYWNoZVtzZWxmLl9qb2JdCisgICAgICAgICAgICAgICAgc2VsZi5fZXZlbnQuc2V0KCkKIAogIwogIyBDbGFzcyB3aG9zZSBpbnN0YW5jZXMgYXJlIHJldHVybmVkIGJ5IGBQb29sLmltYXAoKWAKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9wZW5fZm9ya3NlcnZlci5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9wZW5fZm9ya3NlcnZlci5weQppbmRleCBlNzkyMTk0Li4yMjJkYjJkIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3BvcGVuX2ZvcmtzZXJ2ZXIucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9wb3Blbl9mb3Jrc2VydmVyLnB5CkBAIC0xLDEwICsxLDkgQEAKIGltcG9ydCBpbwogaW1wb3J0IG9zCiAKLWZyb20gLiBpbXBvcnQgcmVkdWN0aW9uCitmcm9tIC5jb250ZXh0IGltcG9ydCByZWR1Y3Rpb24sIHNldF9zcGF3bmluZ19wb3BlbgogaWYgbm90IHJlZHVjdGlvbi5IQVZFX1NFTkRfSEFORExFOgogICAgIHJhaXNlIEltcG9ydEVycm9yKCdObyBzdXBwb3J0IGZvciBzZW5kaW5nIGZkcyBiZXR3ZWVuIHByb2Nlc3NlcycpCi1mcm9tIC4gaW1wb3J0IGNvbnRleHQKIGZyb20gLiBpbXBvcnQgZm9ya3NlcnZlcgogZnJvbSAuIGltcG9ydCBwb3Blbl9mb3JrCiBmcm9tIC4gaW1wb3J0IHNwYXduCkBAIC00MiwxMiArNDEsMTIgQEAKICAgICBkZWYgX2xhdW5jaChzZWxmLCBwcm9jZXNzX29iaik6CiAgICAgICAgIHByZXBfZGF0YSA9IHNwYXduLmdldF9wcmVwYXJhdGlvbl9kYXRhKHByb2Nlc3Nfb2JqLl9uYW1lKQogICAgICAgICBidWYgPSBpby5CeXRlc0lPKCkKLSAgICAgICAgY29udGV4dC5zZXRfc3Bhd25pbmdfcG9wZW4oc2VsZikKKyAgICAgICAgc2V0X3NwYXduaW5nX3BvcGVuKHNlbGYpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHJlZHVjdGlvbi5kdW1wKHByZXBfZGF0YSwgYnVmKQogICAgICAgICAgICAgcmVkdWN0aW9uLmR1bXAocHJvY2Vzc19vYmosIGJ1ZikKICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGNvbnRleHQuc2V0X3NwYXduaW5nX3BvcGVuKE5vbmUpCisgICAgICAgICAgICBzZXRfc3Bhd25pbmdfcG9wZW4oTm9uZSkKIAogICAgICAgICBzZWxmLnNlbnRpbmVsLCB3ID0gZm9ya3NlcnZlci5jb25uZWN0X3RvX25ld19wcm9jZXNzKHNlbGYuX2ZkcykKICAgICAgICAgdXRpbC5GaW5hbGl6ZShzZWxmLCBvcy5jbG9zZSwgKHNlbGYuc2VudGluZWwsKSkKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9wZW5fc3Bhd25fcG9zaXgucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3BvcGVuX3NwYXduX3Bvc2l4LnB5CmluZGV4IDZiMGE4ZDYuLjk4ZjhmMGEgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9wZW5fc3Bhd25fcG9zaXgucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9wb3Blbl9zcGF3bl9wb3NpeC5weQpAQCAtMSw5ICsxLDggQEAKIGltcG9ydCBpbwogaW1wb3J0IG9zCiAKLWZyb20gLiBpbXBvcnQgY29udGV4dAorZnJvbSAuY29udGV4dCBpbXBvcnQgcmVkdWN0aW9uLCBzZXRfc3Bhd25pbmdfcG9wZW4KIGZyb20gLiBpbXBvcnQgcG9wZW5fZm9yawotZnJvbSAuIGltcG9ydCByZWR1Y3Rpb24KIGZyb20gLiBpbXBvcnQgc3Bhd24KIGZyb20gLiBpbXBvcnQgdXRpbAogCkBAIC00MiwxMiArNDEsMTIgQEAKICAgICAgICAgc2VsZi5fZmRzLmFwcGVuZCh0cmFja2VyX2ZkKQogICAgICAgICBwcmVwX2RhdGEgPSBzcGF3bi5nZXRfcHJlcGFyYXRpb25fZGF0YShwcm9jZXNzX29iai5fbmFtZSkKICAgICAgICAgZnAgPSBpby5CeXRlc0lPKCkKLSAgICAgICAgY29udGV4dC5zZXRfc3Bhd25pbmdfcG9wZW4oc2VsZikKKyAgICAgICAgc2V0X3NwYXduaW5nX3BvcGVuKHNlbGYpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHJlZHVjdGlvbi5kdW1wKHByZXBfZGF0YSwgZnApCiAgICAgICAgICAgICByZWR1Y3Rpb24uZHVtcChwcm9jZXNzX29iaiwgZnApCiAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBjb250ZXh0LnNldF9zcGF3bmluZ19wb3BlbihOb25lKQorICAgICAgICAgICAgc2V0X3NwYXduaW5nX3BvcGVuKE5vbmUpCiAKICAgICAgICAgcGFyZW50X3IgPSBjaGlsZF93ID0gY2hpbGRfciA9IHBhcmVudF93ID0gTm9uZQogICAgICAgICB0cnk6CmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3BvcGVuX3NwYXduX3dpbjMyLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9wb3Blbl9zcGF3bl93aW4zMi5weQppbmRleCAzYjUzMDY4Li42ZmQ1ODhmIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3BvcGVuX3NwYXduX3dpbjMyLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9wZW5fc3Bhd25fd2luMzIucHkKQEAgLTQsOSArNCw4IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgX3dpbmFwaQogCi1mcm9tIC4gaW1wb3J0IGNvbnRleHQKK2Zyb20gLmNvbnRleHQgaW1wb3J0IHJlZHVjdGlvbiwgZ2V0X3NwYXduaW5nX3BvcGVuLCBzZXRfc3Bhd25pbmdfcG9wZW4KIGZyb20gLiBpbXBvcnQgc3Bhd24KLWZyb20gLiBpbXBvcnQgcmVkdWN0aW9uCiBmcm9tIC4gaW1wb3J0IHV0aWwKIAogX19hbGxfXyA9IFsnUG9wZW4nXQpAQCAtNjAsMTUgKzU5LDE1IEBACiAgICAgICAgICAgICB1dGlsLkZpbmFsaXplKHNlbGYsIF93aW5hcGkuQ2xvc2VIYW5kbGUsIChzZWxmLnNlbnRpbmVsLCkpCiAKICAgICAgICAgICAgICMgc2VuZCBpbmZvcm1hdGlvbiB0byBjaGlsZAotICAgICAgICAgICAgY29udGV4dC5zZXRfc3Bhd25pbmdfcG9wZW4oc2VsZikKKyAgICAgICAgICAgIHNldF9zcGF3bmluZ19wb3BlbihzZWxmKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHJlZHVjdGlvbi5kdW1wKHByZXBfZGF0YSwgdG9fY2hpbGQpCiAgICAgICAgICAgICAgICAgcmVkdWN0aW9uLmR1bXAocHJvY2Vzc19vYmosIHRvX2NoaWxkKQogICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBjb250ZXh0LnNldF9zcGF3bmluZ19wb3BlbihOb25lKQorICAgICAgICAgICAgICAgIHNldF9zcGF3bmluZ19wb3BlbihOb25lKQogCiAgICAgZGVmIGR1cGxpY2F0ZV9mb3JfY2hpbGQoc2VsZiwgaGFuZGxlKToKLSAgICAgICAgYXNzZXJ0IHNlbGYgaXMgY29udGV4dC5nZXRfc3Bhd25pbmdfcG9wZW4oKQorICAgICAgICBhc3NlcnQgc2VsZiBpcyBnZXRfc3Bhd25pbmdfcG9wZW4oKQogICAgICAgICByZXR1cm4gcmVkdWN0aW9uLmR1cGxpY2F0ZShoYW5kbGUsIHNlbGYuc2VudGluZWwpCiAKICAgICBkZWYgd2FpdChzZWxmLCB0aW1lb3V0PU5vbmUpOgpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9xdWV1ZXMucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3F1ZXVlcy5weQppbmRleCA3ODZhMzAzLi5kZGEwM2RkIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3F1ZXVlcy5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3F1ZXVlcy5weQpAQCAtMjMsOSArMjMsOSBAQAogCiBmcm9tIC4gaW1wb3J0IGNvbm5lY3Rpb24KIGZyb20gLiBpbXBvcnQgY29udGV4dAorX0ZvcmtpbmdQaWNrbGVyID0gY29udGV4dC5yZWR1Y3Rpb24uRm9ya2luZ1BpY2tsZXIKIAogZnJvbSAudXRpbCBpbXBvcnQgZGVidWcsIGluZm8sIEZpbmFsaXplLCByZWdpc3Rlcl9hZnRlcl9mb3JrLCBpc19leGl0aW5nCi1mcm9tIC5yZWR1Y3Rpb24gaW1wb3J0IEZvcmtpbmdQaWNrbGVyCiAKICMKICMgUXVldWUgdHlwZSB1c2luZyBhIHBpcGUsIGJ1ZmZlciBhbmQgdGhyZWFkCkBAIC0xMTAsNyArMTEwLDcgQEAKICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgc2VsZi5fcmxvY2sucmVsZWFzZSgpCiAgICAgICAgICMgdW5zZXJpYWxpemUgdGhlIGRhdGEgYWZ0ZXIgaGF2aW5nIHJlbGVhc2VkIHRoZSBsb2NrCi0gICAgICAgIHJldHVybiBGb3JraW5nUGlja2xlci5sb2FkcyhyZXMpCisgICAgICAgIHJldHVybiBfRm9ya2luZ1BpY2tsZXIubG9hZHMocmVzKQogCiAgICAgZGVmIHFzaXplKHNlbGYpOgogICAgICAgICAjIFJhaXNlcyBOb3RJbXBsZW1lbnRlZEVycm9yIG9uIE1hYyBPU1ggYmVjYXVzZSBvZiBicm9rZW4gc2VtX2dldHZhbHVlKCkKQEAgLTIzOCw3ICsyMzgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgICAgICAgICAgICAgICAgICAjIHNlcmlhbGl6ZSB0aGUgZGF0YSBiZWZvcmUgYWNxdWlyaW5nIHRoZSBsb2NrCi0gICAgICAgICAgICAgICAgICAgICAgICBvYmogPSBGb3JraW5nUGlja2xlci5kdW1wcyhvYmopCisgICAgICAgICAgICAgICAgICAgICAgICBvYmogPSBfRm9ya2luZ1BpY2tsZXIuZHVtcHMob2JqKQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgd2FjcXVpcmUgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5kX2J5dGVzKG9iaikKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CkBAIC0zNDIsMTEgKzM0MiwxMSBAQAogICAgICAgICB3aXRoIHNlbGYuX3Jsb2NrOgogICAgICAgICAgICAgcmVzID0gc2VsZi5fcmVhZGVyLnJlY3ZfYnl0ZXMoKQogICAgICAgICAjIHVuc2VyaWFsaXplIHRoZSBkYXRhIGFmdGVyIGhhdmluZyByZWxlYXNlZCB0aGUgbG9jawotICAgICAgICByZXR1cm4gRm9ya2luZ1BpY2tsZXIubG9hZHMocmVzKQorICAgICAgICByZXR1cm4gX0ZvcmtpbmdQaWNrbGVyLmxvYWRzKHJlcykKIAogICAgIGRlZiBwdXQoc2VsZiwgb2JqKToKICAgICAgICAgIyBzZXJpYWxpemUgdGhlIGRhdGEgYmVmb3JlIGFjcXVpcmluZyB0aGUgbG9jawotICAgICAgICBvYmogPSBGb3JraW5nUGlja2xlci5kdW1wcyhvYmopCisgICAgICAgIG9iaiA9IF9Gb3JraW5nUGlja2xlci5kdW1wcyhvYmopCiAgICAgICAgIGlmIHNlbGYuX3dsb2NrIGlzIE5vbmU6CiAgICAgICAgICAgICAjIHdyaXRlcyB0byBhIG1lc3NhZ2Ugb3JpZW50ZWQgd2luMzIgcGlwZSBhcmUgYXRvbWljCiAgICAgICAgICAgICBzZWxmLl93cml0ZXIuc2VuZF9ieXRlcyhvYmopCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3JlZHVjdGlvbi5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcmVkdWN0aW9uLnB5CmluZGV4IDhmMjA5YjQuLmMwNDNjOWEgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcmVkdWN0aW9uLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcmVkdWN0aW9uLnB5CkBAIC03LDYgKzcsNyBAQAogIyBMaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBDb250cmlidXRvciBBZ3JlZW1lbnQuCiAjCiAKK2Zyb20gYWJjIGltcG9ydCBBQkNNZXRhLCBhYnN0cmFjdG1ldGhvZAogaW1wb3J0IGNvcHlyZWcKIGltcG9ydCBmdW5jdG9vbHMKIGltcG9ydCBpbwpAQCAtMjM4LDMgKzIzOSwzNiBAQAogICAgICAgICBmZCA9IGRmLmRldGFjaCgpCiAgICAgICAgIHJldHVybiBzb2NrZXQuc29ja2V0KGZhbWlseSwgdHlwZSwgcHJvdG8sIGZpbGVubz1mZCkKICAgICByZWdpc3Rlcihzb2NrZXQuc29ja2V0LCBfcmVkdWNlX3NvY2tldCkKKworCitjbGFzcyBBYnN0cmFjdFJlZHVjZXIobWV0YWNsYXNzPUFCQ01ldGEpOgorICAgICcnJ0Fic3RyYWN0IGJhc2UgY2xhc3MgZm9yIHVzZSBpbiBpbXBsZW1lbnRpbmcgYSBSZWR1Y3Rpb24gY2xhc3MKKyAgICBzdWl0YWJsZSBmb3IgdXNlIGluIHJlcGxhY2luZyB0aGUgc3RhbmRhcmQgcmVkdWN0aW9uIG1lY2hhbmlzbQorICAgIHVzZWQgaW4gbXVsdGlwcm9jZXNzaW5nLicnJworICAgIEZvcmtpbmdQaWNrbGVyID0gRm9ya2luZ1BpY2tsZXIKKyAgICByZWdpc3RlciA9IHJlZ2lzdGVyCisgICAgZHVtcCA9IGR1bXAKKyAgICBzZW5kX2hhbmRsZSA9IHNlbmRfaGFuZGxlCisgICAgcmVjdl9oYW5kbGUgPSByZWN2X2hhbmRsZQorCisgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CisgICAgICAgIHN0ZWFsX2hhbmRsZSA9IHN0ZWFsX2hhbmRsZQorICAgICAgICBkdXBsaWNhdGUgPSBkdXBsaWNhdGUKKyAgICAgICAgRHVwSGFuZGxlID0gRHVwSGFuZGxlCisgICAgZWxzZToKKyAgICAgICAgc2VuZGZkcyA9IHNlbmRmZHMKKyAgICAgICAgcmVjdmZkcyA9IHJlY3ZmZHMKKyAgICAgICAgRHVwRmQgPSBEdXBGZAorCisgICAgX3JlZHVjZV9tZXRob2QgPSBfcmVkdWNlX21ldGhvZAorICAgIF9yZWR1Y2VfbWV0aG9kX2Rlc2NyaXB0b3IgPSBfcmVkdWNlX21ldGhvZF9kZXNjcmlwdG9yCisgICAgX3JlYnVpbGRfcGFydGlhbCA9IF9yZWJ1aWxkX3BhcnRpYWwKKyAgICBfcmVkdWNlX3NvY2tldCA9IF9yZWR1Y2Vfc29ja2V0CisgICAgX3JlYnVpbGRfc29ja2V0ID0gX3JlYnVpbGRfc29ja2V0CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MpOgorICAgICAgICByZWdpc3Rlcih0eXBlKF9DKCkuZiksIF9yZWR1Y2VfbWV0aG9kKQorICAgICAgICByZWdpc3Rlcih0eXBlKGxpc3QuYXBwZW5kKSwgX3JlZHVjZV9tZXRob2RfZGVzY3JpcHRvcikKKyAgICAgICAgcmVnaXN0ZXIodHlwZShpbnQuX19hZGRfXyksIF9yZWR1Y2VfbWV0aG9kX2Rlc2NyaXB0b3IpCisgICAgICAgIHJlZ2lzdGVyKGZ1bmN0b29scy5wYXJ0aWFsLCBfcmVkdWNlX3BhcnRpYWwpCisgICAgICAgIHJlZ2lzdGVyKHNvY2tldC5zb2NrZXQsIF9yZWR1Y2Vfc29ja2V0KQpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9yZXNvdXJjZV9zaGFyZXIucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3Jlc291cmNlX3NoYXJlci5weQppbmRleCA1ZTQ2ZmM2Li5lNDRhNzI4IDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3Jlc291cmNlX3NoYXJlci5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3Jlc291cmNlX3NoYXJlci5weQpAQCAtMTUsNyArMTUsNyBAQAogaW1wb3J0IHRocmVhZGluZwogCiBmcm9tIC4gaW1wb3J0IHByb2Nlc3MKLWZyb20gLiBpbXBvcnQgcmVkdWN0aW9uCitmcm9tIC5jb250ZXh0IGltcG9ydCByZWR1Y3Rpb24KIGZyb20gLiBpbXBvcnQgdXRpbAogCiBfX2FsbF9fID0gWydzdG9wJ10KZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3Npbmcvc2hhcmVkY3R5cGVzLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9zaGFyZWRjdHlwZXMucHkKaW5kZXggNDI1OGY1OS4uMjVjYmNmMiAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9zaGFyZWRjdHlwZXMucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9zaGFyZWRjdHlwZXMucHkKQEAgLTEzLDggKzEzLDggQEAKIGZyb20gLiBpbXBvcnQgaGVhcAogZnJvbSAuIGltcG9ydCBnZXRfY29udGV4dAogCi1mcm9tIC5jb250ZXh0IGltcG9ydCBhc3NlcnRfc3Bhd25pbmcKLWZyb20gLnJlZHVjdGlvbiBpbXBvcnQgRm9ya2luZ1BpY2tsZXIKK2Zyb20gLmNvbnRleHQgaW1wb3J0IHJlZHVjdGlvbiwgYXNzZXJ0X3NwYXduaW5nCitfRm9ya2luZ1BpY2tsZXIgPSByZWR1Y3Rpb24uRm9ya2luZ1BpY2tsZXIKIAogX19hbGxfXyA9IFsnUmF3VmFsdWUnLCAnUmF3QXJyYXknLCAnVmFsdWUnLCAnQXJyYXknLCAnY29weScsICdzeW5jaHJvbml6ZWQnXQogCkBAIC0xMzQsNyArMTM0LDcgQEAKIGRlZiByZWJ1aWxkX2N0eXBlKHR5cGVfLCB3cmFwcGVyLCBsZW5ndGgpOgogICAgIGlmIGxlbmd0aCBpcyBub3QgTm9uZToKICAgICAgICAgdHlwZV8gPSB0eXBlXyAqIGxlbmd0aAotICAgIEZvcmtpbmdQaWNrbGVyLnJlZ2lzdGVyKHR5cGVfLCByZWR1Y2VfY3R5cGUpCisgICAgX0ZvcmtpbmdQaWNrbGVyLnJlZ2lzdGVyKHR5cGVfLCByZWR1Y2VfY3R5cGUpCiAgICAgYnVmID0gd3JhcHBlci5jcmVhdGVfbWVtb3J5dmlldygpCiAgICAgb2JqID0gdHlwZV8uZnJvbV9idWZmZXIoYnVmKQogICAgIG9iai5fd3JhcHBlciA9IHdyYXBwZXIKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3Npbmcvc3Bhd24ucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3NwYXduLnB5CmluZGV4IDM5MmMxNTk5Li40YWJhMzcyIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3NwYXduLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3Npbmcvc3Bhd24ucHkKQEAgLTksMTMgKzksMTMgQEAKICMKIAogaW1wb3J0IG9zCi1pbXBvcnQgcGlja2xlCiBpbXBvcnQgc3lzCiBpbXBvcnQgcnVucHkKIGltcG9ydCB0eXBlcwogCiBmcm9tIC4gaW1wb3J0IGdldF9zdGFydF9tZXRob2QsIHNldF9zdGFydF9tZXRob2QKIGZyb20gLiBpbXBvcnQgcHJvY2VzcworZnJvbSAuY29udGV4dCBpbXBvcnQgcmVkdWN0aW9uCiBmcm9tIC4gaW1wb3J0IHV0aWwKIAogX19hbGxfXyA9IFsnX21haW4nLCAnZnJlZXplX3N1cHBvcnQnLCAnc2V0X2V4ZWN1dGFibGUnLCAnZ2V0X2V4ZWN1dGFibGUnLApAQCAtOTYsOCArOTYsNyBAQAogICAgIGFzc2VydCBpc19mb3JraW5nKHN5cy5hcmd2KQogICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgogICAgICAgICBpbXBvcnQgbXN2Y3J0Ci0gICAgICAgIGZyb20gLnJlZHVjdGlvbiBpbXBvcnQgc3RlYWxfaGFuZGxlCi0gICAgICAgIG5ld19oYW5kbGUgPSBzdGVhbF9oYW5kbGUocGFyZW50X3BpZCwgcGlwZV9oYW5kbGUpCisgICAgICAgIG5ld19oYW5kbGUgPSByZWR1Y3Rpb24uc3RlYWxfaGFuZGxlKHBhcmVudF9waWQsIHBpcGVfaGFuZGxlKQogICAgICAgICBmZCA9IG1zdmNydC5vcGVuX29zZmhhbmRsZShuZXdfaGFuZGxlLCBvcy5PX1JET05MWSkKICAgICBlbHNlOgogICAgICAgICBmcm9tIC4gaW1wb3J0IHNlbWFwaG9yZV90cmFja2VyCkBAIC0xMTEsOSArMTEwLDkgQEAKICAgICB3aXRoIG9zLmZkb3BlbihmZCwgJ3JiJywgY2xvc2VmZD1UcnVlKSBhcyBmcm9tX3BhcmVudDoKICAgICAgICAgcHJvY2Vzcy5jdXJyZW50X3Byb2Nlc3MoKS5faW5oZXJpdGluZyA9IFRydWUKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgcHJlcGFyYXRpb25fZGF0YSA9IHBpY2tsZS5sb2FkKGZyb21fcGFyZW50KQorICAgICAgICAgICAgcHJlcGFyYXRpb25fZGF0YSA9IHJlZHVjdGlvbi5waWNrbGUubG9hZChmcm9tX3BhcmVudCkKICAgICAgICAgICAgIHByZXBhcmUocHJlcGFyYXRpb25fZGF0YSkKLSAgICAgICAgICAgIHNlbGYgPSBwaWNrbGUubG9hZChmcm9tX3BhcmVudCkKKyAgICAgICAgICAgIHNlbGYgPSByZWR1Y3Rpb24ucGlja2xlLmxvYWQoZnJvbV9wYXJlbnQpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBkZWwgcHJvY2Vzcy5jdXJyZW50X3Byb2Nlc3MoKS5faW5oZXJpdGluZwogICAgIHJldHVybiBzZWxmLl9ib290c3RyYXAoKQpkaWZmIC0tZ2l0IGEvTGliL250cGF0aC5weSBiL0xpYi9udHBhdGgucHkKaW5kZXggYWY2YTcwOS4uYThmNGIzNyAxMDA2NDQKLS0tIGEvTGliL250cGF0aC5weQorKysgYi9MaWIvbnRwYXRoLnB5CkBAIC0yOCw4ICsyOCw2IEBACiBwYXRoc2VwID0gJzsnCiBhbHRzZXAgPSAnLycKIGRlZnBhdGggPSAnLjtDOlxcYmluJwotaWYgJ2NlJyBpbiBzeXMuYnVpbHRpbl9tb2R1bGVfbmFtZXM6Ci0gICAgZGVmcGF0aCA9ICdcXFdpbmRvd3MnCiBkZXZudWxsID0gJ251bCcKIAogZGVmIF9nZXRfYm90aHNlcHMocGF0aCk6CkBAIC00Niw2ICs0NCw3IEBACiAgICAgIiIiTm9ybWFsaXplIGNhc2Ugb2YgcGF0aG5hbWUuCiAKICAgICBNYWtlcyBhbGwgY2hhcmFjdGVycyBsb3dlcmNhc2UgYW5kIGFsbCBzbGFzaGVzIGludG8gYmFja3NsYXNoZXMuIiIiCisgICAgcyA9IG9zLmZzcGF0aChzKQogICAgIHRyeToKICAgICAgICAgaWYgaXNpbnN0YW5jZShzLCBieXRlcyk6CiAgICAgICAgICAgICByZXR1cm4gcy5yZXBsYWNlKGInLycsIGInXFwnKS5sb3dlcigpCkBAIC02NiwxMiArNjUsMTQgQEAKIAogZGVmIGlzYWJzKHMpOgogICAgICIiIlRlc3Qgd2hldGhlciBhIHBhdGggaXMgYWJzb2x1dGUiIiIKKyAgICBzID0gb3MuZnNwYXRoKHMpCiAgICAgcyA9IHNwbGl0ZHJpdmUocylbMV0KICAgICByZXR1cm4gbGVuKHMpID4gMCBhbmQgc1swXSBpbiBfZ2V0X2JvdGhzZXBzKHMpCiAKIAogIyBKb2luIHR3byAob3IgbW9yZSkgcGF0aHMuCiBkZWYgam9pbihwYXRoLCAqcGF0aHMpOgorICAgIHBhdGggPSBvcy5mc3BhdGgocGF0aCkKICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKICAgICAgICAgc2VwID0gYidcXCcKICAgICAgICAgc2VwcyA9IGInXFwvJwpAQCAtODQsNyArODUsNyBAQAogICAgICAgICBpZiBub3QgcGF0aHM6CiAgICAgICAgICAgICBwYXRoWzowXSArIHNlcCAgIzIzNzgwOiBFbnN1cmUgY29tcGF0aWJsZSBkYXRhIHR5cGUgZXZlbiBpZiBwIGlzIG51bGwuCiAgICAgICAgIHJlc3VsdF9kcml2ZSwgcmVzdWx0X3BhdGggPSBzcGxpdGRyaXZlKHBhdGgpCi0gICAgICAgIGZvciBwIGluIHBhdGhzOgorICAgICAgICBmb3IgcCBpbiBtYXAob3MuZnNwYXRoLCBwYXRocyk6CiAgICAgICAgICAgICBwX2RyaXZlLCBwX3BhdGggPSBzcGxpdGRyaXZlKHApCiAgICAgICAgICAgICBpZiBwX3BhdGggYW5kIHBfcGF0aFswXSBpbiBzZXBzOgogICAgICAgICAgICAgICAgICMgU2Vjb25kIHBhdGggaXMgYWJzb2x1dGUKQEAgLTEzNiw2ICsxMzcsNyBAQAogICAgIFBhdGhzIGNhbm5vdCBjb250YWluIGJvdGggYSBkcml2ZSBsZXR0ZXIgYW5kIGEgVU5DIHBhdGguCiAKICAgICAiIiIKKyAgICBwID0gb3MuZnNwYXRoKHApCiAgICAgaWYgbGVuKHApID49IDI6CiAgICAgICAgIGlmIGlzaW5zdGFuY2UocCwgYnl0ZXMpOgogICAgICAgICAgICAgc2VwID0gYidcXCcKQEAgLTE5OSw3ICsyMDEsNyBAQAogCiAgICAgUmV0dXJuIHR1cGxlIChoZWFkLCB0YWlsKSB3aGVyZSB0YWlsIGlzIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpbmFsIHNsYXNoLgogICAgIEVpdGhlciBwYXJ0IG1heSBiZSBlbXB0eS4iIiIKLQorICAgIHAgPSBvcy5mc3BhdGgocCkKICAgICBzZXBzID0gX2dldF9ib3Roc2VwcyhwKQogICAgIGQsIHAgPSBzcGxpdGRyaXZlKHApCiAgICAgIyBzZXQgaSB0byBpbmRleCBiZXlvbmQgcCdzIGxhc3Qgc2xhc2gKQEAgLTIxOCw2ICsyMjAsNyBAQAogIyBJdCBpcyBhbHdheXMgdHJ1ZSB0aGF0IHJvb3QgKyBleHQgPT0gcC4KIAogZGVmIHNwbGl0ZXh0KHApOgorICAgIHAgPSBvcy5mc3BhdGgocCkKICAgICBpZiBpc2luc3RhbmNlKHAsIGJ5dGVzKToKICAgICAgICAgcmV0dXJuIGdlbmVyaWNwYXRoLl9zcGxpdGV4dChwLCBiJ1xcJywgYicvJywgYicuJykKICAgICBlbHNlOgpAQCAtMjc4LDYgKzI4MSw3IEBACiBkZWYgaXNtb3VudChwYXRoKToKICAgICAiIiJUZXN0IHdoZXRoZXIgYSBwYXRoIGlzIGEgbW91bnQgcG9pbnQgKGEgZHJpdmUgcm9vdCwgdGhlIHJvb3Qgb2YgYQogICAgIHNoYXJlLCBvciBhIG1vdW50ZWQgdm9sdW1lKSIiIgorICAgIHBhdGggPSBvcy5mc3BhdGgocGF0aCkKICAgICBzZXBzID0gX2dldF9ib3Roc2VwcyhwYXRoKQogICAgIHBhdGggPSBhYnNwYXRoKHBhdGgpCiAgICAgcm9vdCwgcmVzdCA9IHNwbGl0ZHJpdmUocGF0aCkKQEAgLTMwNSw2ICszMDksNyBAQAogICAgICIiIkV4cGFuZCB+IGFuZCB+dXNlciBjb25zdHJ1Y3RzLgogCiAgICAgSWYgdXNlciBvciAkSE9NRSBpcyB1bmtub3duLCBkbyBub3RoaW5nLiIiIgorICAgIHBhdGggPSBvcy5mc3BhdGgocGF0aCkKICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKICAgICAgICAgdGlsZGUgPSBiJ34nCiAgICAgZWxzZToKQEAgLTM1NCw2ICszNTksNyBAQAogICAgICIiIkV4cGFuZCBzaGVsbCB2YXJpYWJsZXMgb2YgdGhlIGZvcm1zICR2YXIsICR7dmFyfSBhbmQgJXZhciUuCiAKICAgICBVbmtub3duIHZhcmlhYmxlcyBhcmUgbGVmdCB1bmNoYW5nZWQuIiIiCisgICAgcGF0aCA9IG9zLmZzcGF0aChwYXRoKQogICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgYnl0ZXMpOgogICAgICAgICBpZiBiJyQnIG5vdCBpbiBwYXRoIGFuZCBiJyUnIG5vdCBpbiBwYXRoOgogICAgICAgICAgICAgcmV0dXJuIHBhdGgKQEAgLTQ2NCw2ICs0NzAsNyBAQAogCiBkZWYgbm9ybXBhdGgocGF0aCk6CiAgICAgIiIiTm9ybWFsaXplIHBhdGgsIGVsaW1pbmF0aW5nIGRvdWJsZSBzbGFzaGVzLCBldGMuIiIiCisgICAgcGF0aCA9IG9zLmZzcGF0aChwYXRoKQogICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgYnl0ZXMpOgogICAgICAgICBzZXAgPSBiJ1xcJwogICAgICAgICBhbHRzZXAgPSBiJy8nCkBAIC01MTgsNiArNTI1LDcgQEAKIGV4Y2VwdCBJbXBvcnRFcnJvcjogIyBub3QgcnVubmluZyBvbiBXaW5kb3dzIC0gbW9jayB1cCBzb21ldGhpbmcgc2Vuc2libGUKICAgICBkZWYgYWJzcGF0aChwYXRoKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBhYnNvbHV0ZSB2ZXJzaW9uIG9mIGEgcGF0aC4iIiIKKyAgICAgICAgcGF0aCA9IG9zLmZzcGF0aChwYXRoKQogICAgICAgICBpZiBub3QgaXNhYnMocGF0aCk6CiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKICAgICAgICAgICAgICAgICBjd2QgPSBvcy5nZXRjd2RiKCkKQEAgLTUzMSw2ICs1MzksNyBAQAogICAgICAgICAiIiJSZXR1cm4gdGhlIGFic29sdXRlIHZlcnNpb24gb2YgYSBwYXRoLiIiIgogCiAgICAgICAgIGlmIHBhdGg6ICMgRW1wdHkgcGF0aCBtdXN0IHJldHVybiBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LgorICAgICAgICAgICAgcGF0aCA9IG9zLmZzcGF0aChwYXRoKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHBhdGggPSBfZ2V0ZnVsbHBhdGhuYW1lKHBhdGgpCiAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKQEAgLTU0OSw2ICs1NTgsNyBAQAogCiBkZWYgcmVscGF0aChwYXRoLCBzdGFydD1Ob25lKToKICAgICAiIiJSZXR1cm4gYSByZWxhdGl2ZSB2ZXJzaW9uIG9mIGEgcGF0aCIiIgorICAgIHBhdGggPSBvcy5mc3BhdGgocGF0aCkKICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKICAgICAgICAgc2VwID0gYidcXCcKICAgICAgICAgY3VyZGlyID0gYicuJwpAQCAtNTY0LDYgKzU3NCw3IEBACiAgICAgaWYgbm90IHBhdGg6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm5vIHBhdGggc3BlY2lmaWVkIikKIAorICAgIHN0YXJ0ID0gb3MuZnNwYXRoKHN0YXJ0KQogICAgIHRyeToKICAgICAgICAgc3RhcnRfYWJzID0gYWJzcGF0aChub3JtcGF0aChzdGFydCkpCiAgICAgICAgIHBhdGhfYWJzID0gYWJzcGF0aChub3JtcGF0aChwYXRoKSkKQEAgLTYwNyw2ICs2MTgsNyBAQAogICAgIGlmIG5vdCBwYXRoczoKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignY29tbW9ucGF0aCgpIGFyZyBpcyBhbiBlbXB0eSBzZXF1ZW5jZScpCiAKKyAgICBwYXRocyA9IHR1cGxlKG1hcChvcy5mc3BhdGgsIHBhdGhzKSkKICAgICBpZiBpc2luc3RhbmNlKHBhdGhzWzBdLCBieXRlcyk6CiAgICAgICAgIHNlcCA9IGInXFwnCiAgICAgICAgIGFsdHNlcCA9IGInLycKZGlmZiAtLWdpdCBhL0xpYi9vcGNvZGUucHkgYi9MaWIvb3Bjb2RlLnB5CmluZGV4IDRjODI2YTcuLmI1OTE2YjYgMTAwNjQ0Ci0tLSBhL0xpYi9vcGNvZGUucHkKKysrIGIvTGliL29wY29kZS5weQpAQCAtMzEsMTIgKzMxLDEwIEBACiBoYXNsb2NhbCA9IFtdCiBoYXNjb21wYXJlID0gW10KIGhhc2ZyZWUgPSBbXQotaGFzbmFyZ3MgPSBbXQoraGFzbmFyZ3MgPSBbXSAjIHVudXNlZAogCiBvcG1hcCA9IHt9Ci1vcG5hbWUgPSBbJyddICogMjU2Ci1mb3Igb3AgaW4gcmFuZ2UoMjU2KTogb3BuYW1lW29wXSA9ICc8JXI+JyAlIChvcCwpCi1kZWwgb3AKK29wbmFtZSA9IFsnPCVyPicgJSAob3AsKSBmb3Igb3AgaW4gcmFuZ2UoMjU2KV0KIAogZGVmIGRlZl9vcChuYW1lLCBvcCk6CiAgICAgb3BuYW1lW29wXSA9IG5hbWUKQEAgLTEyMSw3ICsxMTksNyBAQAogCiBkZWZfb3AoJ1JFVFVSTl9WQUxVRScsIDgzKQogZGVmX29wKCdJTVBPUlRfU1RBUicsIDg0KQotCitkZWZfb3AoJ1NFVFVQX0FOTk9UQVRJT05TJywgODUpCiBkZWZfb3AoJ1lJRUxEX1ZBTFVFJywgODYpCiBkZWZfb3AoJ1BPUF9CTE9DSycsIDg3KQogZGVmX29wKCdFTkRfRklOQUxMWScsIDg4KQpAQCAtMTcxLDEzICsxNjksMTIgQEAKIGhhc2xvY2FsLmFwcGVuZCgxMjUpCiBkZWZfb3AoJ0RFTEVURV9GQVNUJywgMTI2KSAgICAgICMgTG9jYWwgdmFyaWFibGUgbnVtYmVyCiBoYXNsb2NhbC5hcHBlbmQoMTI2KQorbmFtZV9vcCgnU1RPUkVfQU5OT1RBVElPTicsIDEyNykgIyBJbmRleCBpbiBuYW1lIGxpc3QKIAogZGVmX29wKCdSQUlTRV9WQVJBUkdTJywgMTMwKSAgICAjIE51bWJlciBvZiByYWlzZSBhcmd1bWVudHMgKDEsIDIsIG9yIDMpCi1kZWZfb3AoJ0NBTExfRlVOQ1RJT04nLCAxMzEpICAgICMgI2FyZ3MgKyAoI2t3YXJncyA8PCA4KQotaGFzbmFyZ3MuYXBwZW5kKDEzMSkKLWRlZl9vcCgnTUFLRV9GVU5DVElPTicsIDEzMikgICAgIyBOdW1iZXIgb2YgYXJncyB3aXRoIGRlZmF1bHQgdmFsdWVzCitkZWZfb3AoJ0NBTExfRlVOQ1RJT04nLCAxMzEpICAgICMgI2FyZ3MKK2RlZl9vcCgnTUFLRV9GVU5DVElPTicsIDEzMikgICAgIyBGbGFncwogZGVmX29wKCdCVUlMRF9TTElDRScsIDEzMykgICAgICAjIE51bWJlciBvZiBpdGVtcwotZGVmX29wKCdNQUtFX0NMT1NVUkUnLCAxMzQpCiBkZWZfb3AoJ0xPQURfQ0xPU1VSRScsIDEzNSkKIGhhc2ZyZWUuYXBwZW5kKDEzNSkKIGRlZl9vcCgnTE9BRF9ERVJFRicsIDEzNikKQEAgLTE4NywxMiArMTg0LDggQEAKIGRlZl9vcCgnREVMRVRFX0RFUkVGJywgMTM4KQogaGFzZnJlZS5hcHBlbmQoMTM4KQogCi1kZWZfb3AoJ0NBTExfRlVOQ1RJT05fVkFSJywgMTQwKSAgICAgIyAjYXJncyArICgja3dhcmdzIDw8IDgpCi1oYXNuYXJncy5hcHBlbmQoMTQwKQotZGVmX29wKCdDQUxMX0ZVTkNUSU9OX0tXJywgMTQxKSAgICAgICMgI2FyZ3MgKyAoI2t3YXJncyA8PCA4KQotaGFzbmFyZ3MuYXBwZW5kKDE0MSkKLWRlZl9vcCgnQ0FMTF9GVU5DVElPTl9WQVJfS1cnLCAxNDIpICAjICNhcmdzICsgKCNrd2FyZ3MgPDwgOCkKLWhhc25hcmdzLmFwcGVuZCgxNDIpCitkZWZfb3AoJ0NBTExfRlVOQ1RJT05fS1cnLCAxNDEpICAjICNhcmdzICsgI2t3YXJncworZGVmX29wKCdDQUxMX0ZVTkNUSU9OX0VYJywgMTQyKSAgIyBGbGFncwogCiBqcmVsX29wKCdTRVRVUF9XSVRIJywgMTQzKQogCkBAIC0yMDMsOCArMTk2LDYgQEAKIGRlZl9vcCgnTE9BRF9DTEFTU0RFUkVGJywgMTQ4KQogaGFzZnJlZS5hcHBlbmQoMTQ4KQogCi1qcmVsX29wKCdTRVRVUF9BU1lOQ19XSVRIJywgMTU0KQotCiBkZWZfb3AoJ0VYVEVOREVEX0FSRycsIDE0NCkKIEVYVEVOREVEX0FSRyA9IDE0NAogCkBAIC0yMTQsNCArMjA1LDExIEBACiBkZWZfb3AoJ0JVSUxEX1RVUExFX1VOUEFDSycsIDE1MikKIGRlZl9vcCgnQlVJTERfU0VUX1VOUEFDSycsIDE1MykKIAoranJlbF9vcCgnU0VUVVBfQVNZTkNfV0lUSCcsIDE1NCkKKworZGVmX29wKCdGT1JNQVRfVkFMVUUnLCAxNTUpCitkZWZfb3AoJ0JVSUxEX0NPTlNUX0tFWV9NQVAnLCAxNTYpCitkZWZfb3AoJ0JVSUxEX1NUUklORycsIDE1NykKK2RlZl9vcCgnQlVJTERfVFVQTEVfVU5QQUNLX1dJVEhfQ0FMTCcsIDE1OCkKKwogZGVsIGRlZl9vcCwgbmFtZV9vcCwganJlbF9vcCwgamFic19vcApkaWZmIC0tZ2l0IGEvTGliL29wdHBhcnNlLnB5IGIvTGliL29wdHBhcnNlLnB5CmluZGV4IDc0YjNiMzYuLmU4YWMxZTEgMTAwNjQ0Ci0tLSBhL0xpYi9vcHRwYXJzZS5weQorKysgYi9MaWIvb3B0cGFyc2UucHkKQEAgLTM4LDcgKzM4LDggQEAKICAgICAgICAgICAgJ09wdGlvbkVycm9yJywKICAgICAgICAgICAgJ09wdGlvbkNvbmZsaWN0RXJyb3InLAogICAgICAgICAgICAnT3B0aW9uVmFsdWVFcnJvcicsCi0gICAgICAgICAgICdCYWRPcHRpb25FcnJvciddCisgICAgICAgICAgICdCYWRPcHRpb25FcnJvcicsCisgICAgICAgICAgICdjaGVja19jaG9pY2UnXQogCiBfX2NvcHlyaWdodF9fID0gIiIiCiBDb3B5cmlnaHQgKGMpIDIwMDEtMjAwNiBHcmVnb3J5IFAuIFdhcmQuICBBbGwgcmlnaHRzIHJlc2VydmVkLgpkaWZmIC0tZ2l0IGEvTGliL29zLnB5IGIvTGliL29zLnB5CmluZGV4IDAxMTI4NWUuLmZhMDZmMzkgMTAwNjQ0Ci0tLSBhL0xpYi9vcy5weQorKysgYi9MaWIvb3MucHkKQEAgLTEsMTIgKzEsMTIgQEAKIHIiIiJPUyByb3V0aW5lcyBmb3IgTlQgb3IgUG9zaXggZGVwZW5kaW5nIG9uIHdoYXQgc3lzdGVtIHdlJ3JlIG9uLgogCiBUaGlzIGV4cG9ydHM6Ci0gIC0gYWxsIGZ1bmN0aW9ucyBmcm9tIHBvc2l4LCBudCBvciBjZSwgZS5nLiB1bmxpbmssIHN0YXQsIGV0Yy4KKyAgLSBhbGwgZnVuY3Rpb25zIGZyb20gcG9zaXggb3IgbnQsIGUuZy4gdW5saW5rLCBzdGF0LCBldGMuCiAgIC0gb3MucGF0aCBpcyBlaXRoZXIgcG9zaXhwYXRoIG9yIG50cGF0aAotICAtIG9zLm5hbWUgaXMgZWl0aGVyICdwb3NpeCcsICdudCcgb3IgJ2NlJy4KLSAgLSBvcy5jdXJkaXIgaXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBjdXJyZW50IGRpcmVjdG9yeSAoJy4nIG9yICc6JykKLSAgLSBvcy5wYXJkaXIgaXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBwYXJlbnQgZGlyZWN0b3J5ICgnLi4nIG9yICc6OicpCi0gIC0gb3Muc2VwIGlzIHRoZSAob3IgYSBtb3N0IGNvbW1vbikgcGF0aG5hbWUgc2VwYXJhdG9yICgnLycgb3IgJzonIG9yICdcXCcpCisgIC0gb3MubmFtZSBpcyBlaXRoZXIgJ3Bvc2l4JyBvciAnbnQnCisgIC0gb3MuY3VyZGlyIGlzIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCBkaXJlY3RvcnkgKGFsd2F5cyAnLicpCisgIC0gb3MucGFyZGlyIGlzIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgcGFyZW50IGRpcmVjdG9yeSAoYWx3YXlzICcuLicpCisgIC0gb3Muc2VwIGlzIHRoZSAob3IgYSBtb3N0IGNvbW1vbikgcGF0aG5hbWUgc2VwYXJhdG9yICgnLycgb3IgJ1xcJykKICAgLSBvcy5leHRzZXAgaXMgdGhlIGV4dGVuc2lvbiBzZXBhcmF0b3IgKGFsd2F5cyAnLicpCiAgIC0gb3MuYWx0c2VwIGlzIHRoZSBhbHRlcm5hdGUgcGF0aG5hbWUgc2VwYXJhdG9yIChOb25lIG9yICcvJykKICAgLSBvcy5wYXRoc2VwIGlzIHRoZSBjb21wb25lbnQgc2VwYXJhdG9yIHVzZWQgaW4gJFBBVEggZXRjCkBAIC0yMiw3ICsyMiw3IEBACiAiIiIKIAogIycKLQoraW1wb3J0IGFiYwogaW1wb3J0IHN5cywgZXJybm8KIGltcG9ydCBzdGF0IGFzIHN0CiAKQEAgLTg1LDI3ICs4NSw2IEBACiAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICBwYXNzCiAKLWVsaWYgJ2NlJyBpbiBfbmFtZXM6Ci0gICAgbmFtZSA9ICdjZScKLSAgICBsaW5lc2VwID0gJ1xyXG4nCi0gICAgZnJvbSBjZSBpbXBvcnQgKgotICAgIHRyeToKLSAgICAgICAgZnJvbSBjZSBpbXBvcnQgX2V4aXQKLSAgICAgICAgX19hbGxfXy5hcHBlbmQoJ19leGl0JykKLSAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgIHBhc3MKLSAgICAjIFdlIGNhbiB1c2UgdGhlIHN0YW5kYXJkIFdpbmRvd3MgcGF0aC4KLSAgICBpbXBvcnQgbnRwYXRoIGFzIHBhdGgKLQotICAgIGltcG9ydCBjZQotICAgIF9fYWxsX18uZXh0ZW5kKF9nZXRfZXhwb3J0c19saXN0KGNlKSkKLSAgICBkZWwgY2UKLQotICAgIHRyeToKLSAgICAgICAgZnJvbSBjZSBpbXBvcnQgX2hhdmVfZnVuY3Rpb25zCi0gICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICBwYXNzCi0KIGVsc2U6CiAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ25vIG9zIHNwZWNpZmljIG1vZHVsZSBmb3VuZCcpCiAKQEAgLTM1Myw5ICszMzIsMTAgQEAKICAgICAgICAgICAgIGRpcnMucmVtb3ZlKCdDVlMnKSAgIyBkb24ndCB2aXNpdCBDVlMgZGlyZWN0b3JpZXMKIAogICAgICIiIgotCisgICAgdG9wID0gZnNwYXRoKHRvcCkKICAgICBkaXJzID0gW10KICAgICBub25kaXJzID0gW10KKyAgICB3YWxrX2RpcnMgPSBbXQogCiAgICAgIyBXZSBtYXkgbm90IGhhdmUgcmVhZCBwZXJtaXNzaW9uIGZvciB0b3AsIGluIHdoaWNoIGNhc2Ugd2UgY2FuJ3QKICAgICAjIGdldCBhIGxpc3Qgb2YgdGhlIGZpbGVzIHRoZSBkaXJlY3RvcnkgY29udGFpbnMuICBvcy53YWxrCkBAIC0zNjMsNDggKzM0Myw1NSBAQAogICAgICMgbWlub3IgcmVhc29uIHdoZW4gKHNheSkgYSB0aG91c2FuZCByZWFkYWJsZSBkaXJlY3RvcmllcyBhcmUgc3RpbGwKICAgICAjIGxlZnQgdG8gdmlzaXQuICBUaGF0IGxvZ2ljIGlzIGNvcGllZCBoZXJlLgogICAgIHRyeToKLSAgICAgICAgaWYgbmFtZSA9PSAnbnQnIGFuZCBpc2luc3RhbmNlKHRvcCwgYnl0ZXMpOgotICAgICAgICAgICAgc2NhbmRpcl9pdCA9IF9kdW1teV9zY2FuZGlyKHRvcCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgTm90ZSB0aGF0IHNjYW5kaXIgaXMgZ2xvYmFsIGluIHRoaXMgbW9kdWxlIGR1ZQotICAgICAgICAgICAgIyB0byBlYXJsaWVyIGltcG9ydC0qLgotICAgICAgICAgICAgc2NhbmRpcl9pdCA9IHNjYW5kaXIodG9wKQotICAgICAgICBlbnRyaWVzID0gbGlzdChzY2FuZGlyX2l0KQorICAgICAgICAjIE5vdGUgdGhhdCBzY2FuZGlyIGlzIGdsb2JhbCBpbiB0aGlzIG1vZHVsZSBkdWUKKyAgICAgICAgIyB0byBlYXJsaWVyIGltcG9ydC0qLgorICAgICAgICBzY2FuZGlyX2l0ID0gc2NhbmRpcih0b3ApCiAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyb3I6CiAgICAgICAgIGlmIG9uZXJyb3IgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBvbmVycm9yKGVycm9yKQogICAgICAgICByZXR1cm4KIAotICAgIGZvciBlbnRyeSBpbiBlbnRyaWVzOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpc19kaXIgPSBlbnRyeS5pc19kaXIoKQotICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgICMgSWYgaXNfZGlyKCkgcmFpc2VzIGFuIE9TRXJyb3IsIGNvbnNpZGVyIHRoYXQgdGhlIGVudHJ5IGlzIG5vdAotICAgICAgICAgICAgIyBhIGRpcmVjdG9yeSwgc2FtZSBiZWhhdmlvdXIgdGhhbiBvcy5wYXRoLmlzZGlyKCkuCi0gICAgICAgICAgICBpc19kaXIgPSBGYWxzZQotCi0gICAgICAgIGlmIGlzX2RpcjoKLSAgICAgICAgICAgIGRpcnMuYXBwZW5kKGVudHJ5Lm5hbWUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBub25kaXJzLmFwcGVuZChlbnRyeS5uYW1lKQotCi0gICAgICAgIGlmIG5vdCB0b3Bkb3duIGFuZCBpc19kaXI6Ci0gICAgICAgICAgICAjIEJvdHRvbS11cDogcmVjdXJzZSBpbnRvIHN1Yi1kaXJlY3RvcnksIGJ1dCBleGNsdWRlIHN5bWxpbmtzIHRvCi0gICAgICAgICAgICAjIGRpcmVjdG9yaWVzIGlmIGZvbGxvd2xpbmtzIGlzIEZhbHNlCi0gICAgICAgICAgICBpZiBmb2xsb3dsaW5rczoKLSAgICAgICAgICAgICAgICB3YWxrX2ludG8gPSBUcnVlCi0gICAgICAgICAgICBlbHNlOgorICAgIHdpdGggc2NhbmRpcl9pdDoKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGlzX3N5bWxpbmsgPSBlbnRyeS5pc19zeW1saW5rKCkKLSAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgIyBJZiBpc19zeW1saW5rKCkgcmFpc2VzIGFuIE9TRXJyb3IsIGNvbnNpZGVyIHRoYXQgdGhlCi0gICAgICAgICAgICAgICAgICAgICMgZW50cnkgaXMgbm90IGEgc3ltYm9saWMgbGluaywgc2FtZSBiZWhhdmlvdXIgdGhhbgotICAgICAgICAgICAgICAgICAgICAjIG9zLnBhdGguaXNsaW5rKCkuCi0gICAgICAgICAgICAgICAgICAgIGlzX3N5bWxpbmsgPSBGYWxzZQotICAgICAgICAgICAgICAgIHdhbGtfaW50byA9IG5vdCBpc19zeW1saW5rCisgICAgICAgICAgICAgICAgICAgIGVudHJ5ID0gbmV4dChzY2FuZGlyX2l0KQorICAgICAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyb3I6CisgICAgICAgICAgICAgICAgaWYgb25lcnJvciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgb25lcnJvcihlcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4KIAotICAgICAgICAgICAgaWYgd2Fsa19pbnRvOgotICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gd2FsayhlbnRyeS5wYXRoLCB0b3Bkb3duLCBvbmVycm9yLCBmb2xsb3dsaW5rcykKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpc19kaXIgPSBlbnRyeS5pc19kaXIoKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgIyBJZiBpc19kaXIoKSByYWlzZXMgYW4gT1NFcnJvciwgY29uc2lkZXIgdGhhdCB0aGUgZW50cnkgaXMgbm90CisgICAgICAgICAgICAgICAgIyBhIGRpcmVjdG9yeSwgc2FtZSBiZWhhdmlvdXIgdGhhbiBvcy5wYXRoLmlzZGlyKCkuCisgICAgICAgICAgICAgICAgaXNfZGlyID0gRmFsc2UKKworICAgICAgICAgICAgaWYgaXNfZGlyOgorICAgICAgICAgICAgICAgIGRpcnMuYXBwZW5kKGVudHJ5Lm5hbWUpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG5vbmRpcnMuYXBwZW5kKGVudHJ5Lm5hbWUpCisKKyAgICAgICAgICAgIGlmIG5vdCB0b3Bkb3duIGFuZCBpc19kaXI6CisgICAgICAgICAgICAgICAgIyBCb3R0b20tdXA6IHJlY3Vyc2UgaW50byBzdWItZGlyZWN0b3J5LCBidXQgZXhjbHVkZSBzeW1saW5rcyB0bworICAgICAgICAgICAgICAgICMgZGlyZWN0b3JpZXMgaWYgZm9sbG93bGlua3MgaXMgRmFsc2UKKyAgICAgICAgICAgICAgICBpZiBmb2xsb3dsaW5rczoKKyAgICAgICAgICAgICAgICAgICAgd2Fsa19pbnRvID0gVHJ1ZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzX3N5bWxpbmsgPSBlbnRyeS5pc19zeW1saW5rKCkKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAjIElmIGlzX3N5bWxpbmsoKSByYWlzZXMgYW4gT1NFcnJvciwgY29uc2lkZXIgdGhhdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICMgZW50cnkgaXMgbm90IGEgc3ltYm9saWMgbGluaywgc2FtZSBiZWhhdmlvdXIgdGhhbgorICAgICAgICAgICAgICAgICAgICAgICAgIyBvcy5wYXRoLmlzbGluaygpLgorICAgICAgICAgICAgICAgICAgICAgICAgaXNfc3ltbGluayA9IEZhbHNlCisgICAgICAgICAgICAgICAgICAgIHdhbGtfaW50byA9IG5vdCBpc19zeW1saW5rCisKKyAgICAgICAgICAgICAgICBpZiB3YWxrX2ludG86CisgICAgICAgICAgICAgICAgICAgIHdhbGtfZGlycy5hcHBlbmQoZW50cnkucGF0aCkKIAogICAgICMgWWllbGQgYmVmb3JlIHJlY3Vyc2lvbiBpZiBnb2luZyB0b3AgZG93bgogICAgIGlmIHRvcGRvd246CkBAIC00MjEsNTcgKzQwOCwxMiBAQAogICAgICAgICAgICAgaWYgZm9sbG93bGlua3Mgb3Igbm90IGlzbGluayhuZXdfcGF0aCk6CiAgICAgICAgICAgICAgICAgeWllbGQgZnJvbSB3YWxrKG5ld19wYXRoLCB0b3Bkb3duLCBvbmVycm9yLCBmb2xsb3dsaW5rcykKICAgICBlbHNlOgorICAgICAgICAjIFJlY3Vyc2UgaW50byBzdWItZGlyZWN0b3JpZXMKKyAgICAgICAgZm9yIG5ld19wYXRoIGluIHdhbGtfZGlyczoKKyAgICAgICAgICAgIHlpZWxkIGZyb20gd2FsayhuZXdfcGF0aCwgdG9wZG93biwgb25lcnJvciwgZm9sbG93bGlua3MpCiAgICAgICAgICMgWWllbGQgYWZ0ZXIgcmVjdXJzaW9uIGlmIGdvaW5nIGJvdHRvbSB1cAogICAgICAgICB5aWVsZCB0b3AsIGRpcnMsIG5vbmRpcnMKIAotY2xhc3MgX0R1bW15RGlyRW50cnk6Ci0gICAgIiIiRHVtbXkgaW1wbGVtZW50YXRpb24gb2YgRGlyRW50cnkKLQotICAgIE9ubHkgdXNlZCBpbnRlcm5hbGx5IGJ5IG9zLndhbGsoYnl0ZXMpLiBTaW5jZSBvcy53YWxrKCkgZG9lc24ndCBuZWVkIHRoZQotICAgIGZvbGxvd19zeW1saW5rcyBwYXJhbWV0ZXI6IGRvbid0IGltcGxlbWVudCBpdCwgYWx3YXlzIGZvbGxvdyBzeW1ib2xpYwotICAgIGxpbmtzLgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGRpciwgbmFtZSk6Ci0gICAgICAgIHNlbGYubmFtZSA9IG5hbWUKLSAgICAgICAgc2VsZi5wYXRoID0gcGF0aC5qb2luKGRpciwgbmFtZSkKLSAgICAgICAgIyBNaW1pY2sgRmluZEZpcnN0RmlsZS9GaW5kTmV4dEZpbGU6IHdlIHNob3VsZCBnZXQgZmlsZSBhdHRyaWJ1dGVzCi0gICAgICAgICMgd2hpbGUgaXRlcmF0aW5nIG9uIGEgZGlyZWN0b3J5Ci0gICAgICAgIHNlbGYuX3N0YXQgPSBOb25lCi0gICAgICAgIHNlbGYuX2xzdGF0ID0gTm9uZQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLnN0YXQoZm9sbG93X3N5bWxpbmtzPUZhbHNlKQotICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgIHBhc3MKLQotICAgIGRlZiBzdGF0KHNlbGYsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKToKLSAgICAgICAgaWYgZm9sbG93X3N5bWxpbmtzOgotICAgICAgICAgICAgaWYgc2VsZi5fc3RhdCBpcyBOb25lOgotICAgICAgICAgICAgICAgIHNlbGYuX3N0YXQgPSBzdGF0KHNlbGYucGF0aCkKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9zdGF0Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBzZWxmLl9sc3RhdCBpcyBOb25lOgotICAgICAgICAgICAgICAgIHNlbGYuX2xzdGF0ID0gc3RhdChzZWxmLnBhdGgsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9sc3RhdAotCi0gICAgZGVmIGlzX2RpcihzZWxmKToKLSAgICAgICAgaWYgc2VsZi5fbHN0YXQgaXMgbm90IE5vbmUgYW5kIG5vdCBzZWxmLmlzX3N5bWxpbmsoKToKLSAgICAgICAgICAgICMgdXNlIHRoZSBjYWNoZSBsc3RhdAotICAgICAgICAgICAgc3RhdCA9IHNlbGYuc3RhdChmb2xsb3dfc3ltbGlua3M9RmFsc2UpCi0gICAgICAgICAgICByZXR1cm4gc3QuU19JU0RJUihzdGF0LnN0X21vZGUpCi0KLSAgICAgICAgc3RhdCA9IHNlbGYuc3RhdCgpCi0gICAgICAgIHJldHVybiBzdC5TX0lTRElSKHN0YXQuc3RfbW9kZSkKLQotICAgIGRlZiBpc19zeW1saW5rKHNlbGYpOgotICAgICAgICBzdGF0ID0gc2VsZi5zdGF0KGZvbGxvd19zeW1saW5rcz1GYWxzZSkKLSAgICAgICAgcmV0dXJuIHN0LlNfSVNMTksoc3RhdC5zdF9tb2RlKQotCi1kZWYgX2R1bW15X3NjYW5kaXIoZGlyKToKLSAgICAjIGxpc3RkaXItYmFzZWQgaW1wbGVtZW50YXRpb24gZm9yIGJ5dGVzIHBhdGNoZXMgb24gV2luZG93cwotICAgIGZvciBuYW1lIGluIGxpc3RkaXIoZGlyKToKLSAgICAgICAgeWllbGQgX0R1bW15RGlyRW50cnkoZGlyLCBuYW1lKQotCiBfX2FsbF9fLmFwcGVuZCgid2FsayIpCiAKIGlmIHtvcGVuLCBzdGF0fSA8PSBzdXBwb3J0c19kaXJfZmQgYW5kIHtsaXN0ZGlyLCBzdGF0fSA8PSBzdXBwb3J0c19mZDoKQEAgLTUwOSw2ICs0NTEsOCBAQAogICAgICAgICAgICAgaWYgJ0NWUycgaW4gZGlyczoKICAgICAgICAgICAgICAgICBkaXJzLnJlbW92ZSgnQ1ZTJykgICMgZG9uJ3QgdmlzaXQgQ1ZTIGRpcmVjdG9yaWVzCiAgICAgICAgICIiIgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh0b3AsIGludCkgb3Igbm90IGhhc2F0dHIodG9wLCAnX19pbmRleF9fJyk6CisgICAgICAgICAgICB0b3AgPSBmc3BhdGgodG9wKQogICAgICAgICAjIE5vdGU6IFRvIGd1YXJkIGFnYWluc3Qgc3ltbGluayByYWNlcywgd2UgdXNlIHRoZSBzdGFuZGFyZAogICAgICAgICAjIGxzdGF0KCkvb3BlbigpL2ZzdGF0KCkgdHJpY2suCiAgICAgICAgIG9yaWdfc3QgPSBzdGF0KHRvcCwgZm9sbG93X3N5bWxpbmtzPUZhbHNlLCBkaXJfZmQ9ZGlyX2ZkKQpAQCAtODQzLDM2ICs3ODcsMzEgQEAKIAogZGVmIF9mc2NvZGVjKCk6CiAgICAgZW5jb2RpbmcgPSBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkKLSAgICBpZiBlbmNvZGluZyA9PSAnbWJjcyc6Ci0gICAgICAgIGVycm9ycyA9ICdzdHJpY3QnCi0gICAgZWxzZToKLSAgICAgICAgZXJyb3JzID0gJ3N1cnJvZ2F0ZWVzY2FwZScKKyAgICBlcnJvcnMgPSBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kZWVycm9ycygpCiAKICAgICBkZWYgZnNlbmNvZGUoZmlsZW5hbWUpOgorICAgICAgICAiIiJFbmNvZGUgZmlsZW5hbWUgKGFuIG9zLlBhdGhMaWtlLCBieXRlcywgb3Igc3RyKSB0byB0aGUgZmlsZXN5c3RlbQorICAgICAgICBlbmNvZGluZyB3aXRoICdzdXJyb2dhdGVlc2NhcGUnIGVycm9yIGhhbmRsZXIsIHJldHVybiBieXRlcyB1bmNoYW5nZWQuCisgICAgICAgIE9uIFdpbmRvd3MsIHVzZSAnc3RyaWN0JyBlcnJvciBoYW5kbGVyIGlmIHRoZSBmaWxlIHN5c3RlbSBlbmNvZGluZyBpcworICAgICAgICAnbWJjcycgKHdoaWNoIGlzIHRoZSBkZWZhdWx0IGVuY29kaW5nKS4KICAgICAgICAgIiIiCi0gICAgICAgIEVuY29kZSBmaWxlbmFtZSB0byB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZyB3aXRoICdzdXJyb2dhdGVlc2NhcGUnIGVycm9yCi0gICAgICAgIGhhbmRsZXIsIHJldHVybiBieXRlcyB1bmNoYW5nZWQuIE9uIFdpbmRvd3MsIHVzZSAnc3RyaWN0JyBlcnJvciBoYW5kbGVyIGlmCi0gICAgICAgIHRoZSBmaWxlIHN5c3RlbSBlbmNvZGluZyBpcyAnbWJjcycgKHdoaWNoIGlzIHRoZSBkZWZhdWx0IGVuY29kaW5nKS4KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIGlzaW5zdGFuY2UoZmlsZW5hbWUsIGJ5dGVzKToKLSAgICAgICAgICAgIHJldHVybiBmaWxlbmFtZQotICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZmlsZW5hbWUsIHN0cik6CisgICAgICAgIGZpbGVuYW1lID0gZnNwYXRoKGZpbGVuYW1lKSAgIyBEb2VzIHR5cGUtY2hlY2tpbmcgb2YgYGZpbGVuYW1lYC4KKyAgICAgICAgaWYgaXNpbnN0YW5jZShmaWxlbmFtZSwgc3RyKToKICAgICAgICAgICAgIHJldHVybiBmaWxlbmFtZS5lbmNvZGUoZW5jb2RpbmcsIGVycm9ycykKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZXhwZWN0IGJ5dGVzIG9yIHN0ciwgbm90ICVzIiAlIHR5cGUoZmlsZW5hbWUpLl9fbmFtZV9fKQorICAgICAgICAgICAgcmV0dXJuIGZpbGVuYW1lCiAKICAgICBkZWYgZnNkZWNvZGUoZmlsZW5hbWUpOgorICAgICAgICAiIiJEZWNvZGUgZmlsZW5hbWUgKGFuIG9zLlBhdGhMaWtlLCBieXRlcywgb3Igc3RyKSBmcm9tIHRoZSBmaWxlc3lzdGVtCisgICAgICAgIGVuY29kaW5nIHdpdGggJ3N1cnJvZ2F0ZWVzY2FwZScgZXJyb3IgaGFuZGxlciwgcmV0dXJuIHN0ciB1bmNoYW5nZWQuIE9uCisgICAgICAgIFdpbmRvd3MsIHVzZSAnc3RyaWN0JyBlcnJvciBoYW5kbGVyIGlmIHRoZSBmaWxlIHN5c3RlbSBlbmNvZGluZyBpcworICAgICAgICAnbWJjcycgKHdoaWNoIGlzIHRoZSBkZWZhdWx0IGVuY29kaW5nKS4KICAgICAgICAgIiIiCi0gICAgICAgIERlY29kZSBmaWxlbmFtZSBmcm9tIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nIHdpdGggJ3N1cnJvZ2F0ZWVzY2FwZScgZXJyb3IKLSAgICAgICAgaGFuZGxlciwgcmV0dXJuIHN0ciB1bmNoYW5nZWQuIE9uIFdpbmRvd3MsIHVzZSAnc3RyaWN0JyBlcnJvciBoYW5kbGVyIGlmCi0gICAgICAgIHRoZSBmaWxlIHN5c3RlbSBlbmNvZGluZyBpcyAnbWJjcycgKHdoaWNoIGlzIHRoZSBkZWZhdWx0IGVuY29kaW5nKS4KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIGlzaW5zdGFuY2UoZmlsZW5hbWUsIHN0cik6Ci0gICAgICAgICAgICByZXR1cm4gZmlsZW5hbWUKLSAgICAgICAgZWxpZiBpc2luc3RhbmNlKGZpbGVuYW1lLCBieXRlcyk6CisgICAgICAgIGZpbGVuYW1lID0gZnNwYXRoKGZpbGVuYW1lKSAgIyBEb2VzIHR5cGUtY2hlY2tpbmcgb2YgYGZpbGVuYW1lYC4KKyAgICAgICAgaWYgaXNpbnN0YW5jZShmaWxlbmFtZSwgYnl0ZXMpOgogICAgICAgICAgICAgcmV0dXJuIGZpbGVuYW1lLmRlY29kZShlbmNvZGluZywgZXJyb3JzKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJleHBlY3QgYnl0ZXMgb3Igc3RyLCBub3QgJXMiICUgdHlwZShmaWxlbmFtZSkuX19uYW1lX18pCisgICAgICAgICAgICByZXR1cm4gZmlsZW5hbWUKIAogICAgIHJldHVybiBmc2VuY29kZSwgZnNkZWNvZGUKIApAQCAtODkzLDYgKzgzMiwxMCBAQAogCiAgICAgZGVmIF9zcGF3bnZlZihtb2RlLCBmaWxlLCBhcmdzLCBlbnYsIGZ1bmMpOgogICAgICAgICAjIEludGVybmFsIGhlbHBlcjsgZnVuYyBpcyB0aGUgZXhlYyooKSBmdW5jdGlvbiB0byB1c2UKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoYXJncywgKHR1cGxlLCBsaXN0KSk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ2FyZ3YgbXVzdCBiZSBhIHR1cGxlIG9yIGEgbGlzdCcpCisgICAgICAgIGlmIG5vdCBhcmdzIG9yIG5vdCBhcmdzWzBdOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignYXJndiBmaXJzdCBlbGVtZW50IGNhbm5vdCBiZSBlbXB0eScpCiAgICAgICAgIHBpZCA9IGZvcmsoKQogICAgICAgICBpZiBub3QgcGlkOgogICAgICAgICAgICAgIyBDaGlsZApAQCAtMTA3MCwzICsxMDEzLDU1IEBACiAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiaW52YWxpZCBmZCB0eXBlICglcywgZXhwZWN0ZWQgaW50ZWdlcikiICUgdHlwZShmZCkpCiAgICAgaW1wb3J0IGlvCiAgICAgcmV0dXJuIGlvLm9wZW4oZmQsICphcmdzLCAqKmt3YXJncykKKworCisjIEZvciB0ZXN0aW5nIHB1cnBvc2VzLCBtYWtlIHN1cmUgdGhlIGZ1bmN0aW9uIGlzIGF2YWlsYWJsZSB3aGVuIHRoZSBDCisjIGltcGxlbWVudGF0aW9uIGV4aXN0cy4KK2RlZiBfZnNwYXRoKHBhdGgpOgorICAgICIiIlJldHVybiB0aGUgcGF0aCByZXByZXNlbnRhdGlvbiBvZiBhIHBhdGgtbGlrZSBvYmplY3QuCisKKyAgICBJZiBzdHIgb3IgYnl0ZXMgaXMgcGFzc2VkIGluLCBpdCBpcyByZXR1cm5lZCB1bmNoYW5nZWQuIE90aGVyd2lzZSB0aGUKKyAgICBvcy5QYXRoTGlrZSBpbnRlcmZhY2UgaXMgdXNlZCB0byBnZXQgdGhlIHBhdGggcmVwcmVzZW50YXRpb24uIElmIHRoZQorICAgIHBhdGggcmVwcmVzZW50YXRpb24gaXMgbm90IHN0ciBvciBieXRlcywgVHlwZUVycm9yIGlzIHJhaXNlZC4gSWYgdGhlCisgICAgcHJvdmlkZWQgcGF0aCBpcyBub3Qgc3RyLCBieXRlcywgb3Igb3MuUGF0aExpa2UsIFR5cGVFcnJvciBpcyByYWlzZWQuCisgICAgIiIiCisgICAgaWYgaXNpbnN0YW5jZShwYXRoLCAoc3RyLCBieXRlcykpOgorICAgICAgICByZXR1cm4gcGF0aAorCisgICAgIyBXb3JrIGZyb20gdGhlIG9iamVjdCdzIHR5cGUgdG8gbWF0Y2ggbWV0aG9kIHJlc29sdXRpb24gb2Ygb3RoZXIgbWFnaWMKKyAgICAjIG1ldGhvZHMuCisgICAgcGF0aF90eXBlID0gdHlwZShwYXRoKQorICAgIHRyeToKKyAgICAgICAgcGF0aF9yZXByID0gcGF0aF90eXBlLl9fZnNwYXRoX18ocGF0aCkKKyAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgIGlmIGhhc2F0dHIocGF0aF90eXBlLCAnX19mc3BhdGhfXycpOgorICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZXhwZWN0ZWQgc3RyLCBieXRlcyBvciBvcy5QYXRoTGlrZSBvYmplY3QsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm90ICIgKyBwYXRoX3R5cGUuX19uYW1lX18pCisgICAgaWYgaXNpbnN0YW5jZShwYXRoX3JlcHIsIChzdHIsIGJ5dGVzKSk6CisgICAgICAgIHJldHVybiBwYXRoX3JlcHIKKyAgICBlbHNlOgorICAgICAgICByYWlzZSBUeXBlRXJyb3IoImV4cGVjdGVkIHt9Ll9fZnNwYXRoX18oKSB0byByZXR1cm4gc3RyIG9yIGJ5dGVzLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAibm90IHt9Ii5mb3JtYXQocGF0aF90eXBlLl9fbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUocGF0aF9yZXByKS5fX25hbWVfXykpCisKKyMgSWYgdGhlcmUgaXMgbm8gQyBpbXBsZW1lbnRhdGlvbiwgbWFrZSB0aGUgcHVyZSBQeXRob24gdmVyc2lvbiB0aGUKKyMgaW1wbGVtZW50YXRpb24gYXMgdHJhbnNwYXJlbnRseSBhcyBwb3NzaWJsZS4KK2lmIG5vdCBfZXhpc3RzKCdmc3BhdGgnKToKKyAgICBmc3BhdGggPSBfZnNwYXRoCisgICAgZnNwYXRoLl9fbmFtZV9fID0gImZzcGF0aCIKKworCitjbGFzcyBQYXRoTGlrZShhYmMuQUJDKToKKworICAgICIiIkFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIGltcGxlbWVudGluZyB0aGUgZmlsZSBzeXN0ZW0gcGF0aCBwcm90b2NvbC4iIiIKKworICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgX19mc3BhdGhfXyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBmaWxlIHN5c3RlbSBwYXRoIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBvYmplY3QuIiIiCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfX3N1YmNsYXNzaG9va19fKGNscywgc3ViY2xhc3MpOgorICAgICAgICByZXR1cm4gaGFzYXR0cihzdWJjbGFzcywgJ19fZnNwYXRoX18nKQpkaWZmIC0tZ2l0IGEvTGliL3BhdGhsaWIucHkgYi9MaWIvcGF0aGxpYi5weQppbmRleCAxNDgwZTJmLi42OTY1MzkzIDEwMDY0NAotLS0gYS9MaWIvcGF0aGxpYi5weQorKysgYi9MaWIvcGF0aGxpYi5weQpAQCAtMTc4LDEyICsxNzgsMjYgQEAKICAgICBkZWYgY2FzZWZvbGRfcGFydHMoc2VsZiwgcGFydHMpOgogICAgICAgICByZXR1cm4gW3AubG93ZXIoKSBmb3IgcCBpbiBwYXJ0c10KIAotICAgIGRlZiByZXNvbHZlKHNlbGYsIHBhdGgpOgorICAgIGRlZiByZXNvbHZlKHNlbGYsIHBhdGgsIHN0cmljdD1GYWxzZSk6CiAgICAgICAgIHMgPSBzdHIocGF0aCkKICAgICAgICAgaWYgbm90IHM6CiAgICAgICAgICAgICByZXR1cm4gb3MuZ2V0Y3dkKCkKKyAgICAgICAgcHJldmlvdXNfcyA9IE5vbmUKICAgICAgICAgaWYgX2dldGZpbmFscGF0aG5hbWUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fZXh0X3RvX25vcm1hbChfZ2V0ZmluYWxwYXRobmFtZShzKSkKKyAgICAgICAgICAgIGlmIHN0cmljdDoKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZXh0X3RvX25vcm1hbChfZ2V0ZmluYWxwYXRobmFtZShzKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHNlbGYuX2V4dF90b19ub3JtYWwoX2dldGZpbmFscGF0aG5hbWUocykpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzX3MgPSBzCisgICAgICAgICAgICAgICAgICAgICAgICBzID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihzLCBvcy5wYXJkaXIpKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgcHJldmlvdXNfcyBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzCisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzICsgb3MucGF0aC5zZXAgKyBvcy5wYXRoLmJhc2VuYW1lKHByZXZpb3VzX3MpCiAgICAgICAgICMgTWVhbnMgZmFsbGJhY2sgb24gYWJzb2x1dGUKICAgICAgICAgcmV0dXJuIE5vbmUKIApAQCAtMjg1LDcgKzI5OSw3IEBACiAgICAgZGVmIGNhc2Vmb2xkX3BhcnRzKHNlbGYsIHBhcnRzKToKICAgICAgICAgcmV0dXJuIHBhcnRzCiAKLSAgICBkZWYgcmVzb2x2ZShzZWxmLCBwYXRoKToKKyAgICBkZWYgcmVzb2x2ZShzZWxmLCBwYXRoLCBzdHJpY3Q9RmFsc2UpOgogICAgICAgICBzZXAgPSBzZWxmLnNlcAogICAgICAgICBhY2Nlc3NvciA9IHBhdGguX2FjY2Vzc29yCiAgICAgICAgIHNlZW4gPSB7fQpAQCAtMzE1LDcgKzMyOSwxMCBAQAogICAgICAgICAgICAgICAgICAgICB0YXJnZXQgPSBhY2Nlc3Nvci5yZWFkbGluayhuZXdwYXRoKQogICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gRUlOVkFMOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHN0cmljdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3cGF0aAogICAgICAgICAgICAgICAgICAgICAjIE5vdCBhIHN5bWxpbmsKICAgICAgICAgICAgICAgICAgICAgcGF0aCA9IG5ld3BhdGgKICAgICAgICAgICAgICAgICBlbHNlOgpAQCAtMzg1LDYgKzQwMiw4IEBACiAKICAgICBsaXN0ZGlyID0gX3dyYXBfc3RyZnVuYyhvcy5saXN0ZGlyKQogCisgICAgc2NhbmRpciA9IF93cmFwX3N0cmZ1bmMob3Muc2NhbmRpcikKKwogICAgIGNobW9kID0gX3dyYXBfc3RyZnVuYyhvcy5jaG1vZCkKIAogICAgIGlmIGhhc2F0dHIob3MsICJsY2htb2QiKToKQEAgLTQyOSwyNSArNDQ4LDYgQEAKICMgR2xvYmJpbmcgaGVscGVycwogIwogCi1AY29udGV4dG1hbmFnZXIKLWRlZiBfY2FjaGVkKGZ1bmMpOgotICAgIHRyeToKLSAgICAgICAgZnVuYy5fX2NhY2hlZF9fCi0gICAgICAgIHlpZWxkIGZ1bmMKLSAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgIGNhY2hlID0ge30KLSAgICAgICAgZGVmIHdyYXBwZXIoKmFyZ3MpOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHJldHVybiBjYWNoZVthcmdzXQotICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgIHZhbHVlID0gY2FjaGVbYXJnc10gPSBmdW5jKCphcmdzKQotICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZQotICAgICAgICB3cmFwcGVyLl9fY2FjaGVkX18gPSBUcnVlCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHlpZWxkIHdyYXBwZXIKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGNhY2hlLmNsZWFyKCkKLQogZGVmIF9tYWtlX3NlbGVjdG9yKHBhdHRlcm5fcGFydHMpOgogICAgIHBhdCA9IHBhdHRlcm5fcGFydHNbMF0KICAgICBjaGlsZF9wYXJ0cyA9IHBhdHRlcm5fcGFydHNbMTpdCkBAIC00NzMsOCArNDczLDEwIEBACiAgICAgICAgIHNlbGYuY2hpbGRfcGFydHMgPSBjaGlsZF9wYXJ0cwogICAgICAgICBpZiBjaGlsZF9wYXJ0czoKICAgICAgICAgICAgIHNlbGYuc3VjY2Vzc29yID0gX21ha2Vfc2VsZWN0b3IoY2hpbGRfcGFydHMpCisgICAgICAgICAgICBzZWxmLmRpcm9ubHkgPSBUcnVlCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLnN1Y2Nlc3NvciA9IF9UZXJtaW5hdGluZ1NlbGVjdG9yKCkKKyAgICAgICAgICAgIHNlbGYuZGlyb25seSA9IEZhbHNlCiAKICAgICBkZWYgc2VsZWN0X2Zyb20oc2VsZiwgcGFyZW50X3BhdGgpOgogICAgICAgICAiIiJJdGVyYXRlIG92ZXIgYWxsIGNoaWxkIHBhdGhzIG9mIGBwYXJlbnRfcGF0aGAgbWF0Y2hlZCBieSB0aGlzCkBAIC00ODIsMTMgKzQ4NCwxNSBAQAogICAgICAgICBwYXRoX2NscyA9IHR5cGUocGFyZW50X3BhdGgpCiAgICAgICAgIGlzX2RpciA9IHBhdGhfY2xzLmlzX2RpcgogICAgICAgICBleGlzdHMgPSBwYXRoX2Nscy5leGlzdHMKLSAgICAgICAgbGlzdGRpciA9IHBhcmVudF9wYXRoLl9hY2Nlc3Nvci5saXN0ZGlyCi0gICAgICAgIHJldHVybiBzZWxmLl9zZWxlY3RfZnJvbShwYXJlbnRfcGF0aCwgaXNfZGlyLCBleGlzdHMsIGxpc3RkaXIpCisgICAgICAgIHNjYW5kaXIgPSBwYXJlbnRfcGF0aC5fYWNjZXNzb3Iuc2NhbmRpcgorICAgICAgICBpZiBub3QgaXNfZGlyKHBhcmVudF9wYXRoKToKKyAgICAgICAgICAgIHJldHVybiBpdGVyKFtdKQorICAgICAgICByZXR1cm4gc2VsZi5fc2VsZWN0X2Zyb20ocGFyZW50X3BhdGgsIGlzX2RpciwgZXhpc3RzLCBzY2FuZGlyKQogCiAKIGNsYXNzIF9UZXJtaW5hdGluZ1NlbGVjdG9yOgogCi0gICAgZGVmIF9zZWxlY3RfZnJvbShzZWxmLCBwYXJlbnRfcGF0aCwgaXNfZGlyLCBleGlzdHMsIGxpc3RkaXIpOgorICAgIGRlZiBfc2VsZWN0X2Zyb20oc2VsZiwgcGFyZW50X3BhdGgsIGlzX2RpciwgZXhpc3RzLCBzY2FuZGlyKToKICAgICAgICAgeWllbGQgcGFyZW50X3BhdGgKIAogCkBAIC00OTgsMTMgKzUwMiwxMSBAQAogICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCiAgICAgICAgIF9TZWxlY3Rvci5fX2luaXRfXyhzZWxmLCBjaGlsZF9wYXJ0cykKIAotICAgIGRlZiBfc2VsZWN0X2Zyb20oc2VsZiwgcGFyZW50X3BhdGgsIGlzX2RpciwgZXhpc3RzLCBsaXN0ZGlyKToKKyAgICBkZWYgX3NlbGVjdF9mcm9tKHNlbGYsIHBhcmVudF9wYXRoLCBpc19kaXIsIGV4aXN0cywgc2NhbmRpcik6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGlmIG5vdCBpc19kaXIocGFyZW50X3BhdGgpOgotICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgcGF0aCA9IHBhcmVudF9wYXRoLl9tYWtlX2NoaWxkX3JlbHBhdGgoc2VsZi5uYW1lKQotICAgICAgICAgICAgaWYgZXhpc3RzKHBhdGgpOgotICAgICAgICAgICAgICAgIGZvciBwIGluIHNlbGYuc3VjY2Vzc29yLl9zZWxlY3RfZnJvbShwYXRoLCBpc19kaXIsIGV4aXN0cywgbGlzdGRpcik6CisgICAgICAgICAgICBpZiAoaXNfZGlyIGlmIHNlbGYuZGlyb25seSBlbHNlIGV4aXN0cykocGF0aCk6CisgICAgICAgICAgICAgICAgZm9yIHAgaW4gc2VsZi5zdWNjZXNzb3IuX3NlbGVjdF9mcm9tKHBhdGgsIGlzX2RpciwgZXhpc3RzLCBzY2FuZGlyKToKICAgICAgICAgICAgICAgICAgICAgeWllbGQgcAogICAgICAgICBleGNlcHQgUGVybWlzc2lvbkVycm9yOgogICAgICAgICAgICAgcmV0dXJuCkBAIC01MTYsMTcgKzUxOCwxOCBAQAogICAgICAgICBzZWxmLnBhdCA9IHJlLmNvbXBpbGUoZm5tYXRjaC50cmFuc2xhdGUocGF0KSkKICAgICAgICAgX1NlbGVjdG9yLl9faW5pdF9fKHNlbGYsIGNoaWxkX3BhcnRzKQogCi0gICAgZGVmIF9zZWxlY3RfZnJvbShzZWxmLCBwYXJlbnRfcGF0aCwgaXNfZGlyLCBleGlzdHMsIGxpc3RkaXIpOgorICAgIGRlZiBfc2VsZWN0X2Zyb20oc2VsZiwgcGFyZW50X3BhdGgsIGlzX2RpciwgZXhpc3RzLCBzY2FuZGlyKToKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgaWYgbm90IGlzX2RpcihwYXJlbnRfcGF0aCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICBjZiA9IHBhcmVudF9wYXRoLl9mbGF2b3VyLmNhc2Vmb2xkCi0gICAgICAgICAgICBmb3IgbmFtZSBpbiBsaXN0ZGlyKHBhcmVudF9wYXRoKToKLSAgICAgICAgICAgICAgICBjYXNlZm9sZGVkID0gY2YobmFtZSkKLSAgICAgICAgICAgICAgICBpZiBzZWxmLnBhdC5tYXRjaChjYXNlZm9sZGVkKToKLSAgICAgICAgICAgICAgICAgICAgcGF0aCA9IHBhcmVudF9wYXRoLl9tYWtlX2NoaWxkX3JlbHBhdGgobmFtZSkKLSAgICAgICAgICAgICAgICAgICAgZm9yIHAgaW4gc2VsZi5zdWNjZXNzb3IuX3NlbGVjdF9mcm9tKHBhdGgsIGlzX2RpciwgZXhpc3RzLCBsaXN0ZGlyKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHAKKyAgICAgICAgICAgIGVudHJpZXMgPSBsaXN0KHNjYW5kaXIocGFyZW50X3BhdGgpKQorICAgICAgICAgICAgZm9yIGVudHJ5IGluIGVudHJpZXM6CisgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuZGlyb25seSBvciBlbnRyeS5pc19kaXIoKToKKyAgICAgICAgICAgICAgICAgICAgbmFtZSA9IGVudHJ5Lm5hbWUKKyAgICAgICAgICAgICAgICAgICAgY2FzZWZvbGRlZCA9IGNmKG5hbWUpCisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYucGF0Lm1hdGNoKGNhc2Vmb2xkZWQpOgorICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCA9IHBhcmVudF9wYXRoLl9tYWtlX2NoaWxkX3JlbHBhdGgobmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBwIGluIHNlbGYuc3VjY2Vzc29yLl9zZWxlY3RfZnJvbShwYXRoLCBpc19kaXIsIGV4aXN0cywgc2NhbmRpcik6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgcAogICAgICAgICBleGNlcHQgUGVybWlzc2lvbkVycm9yOgogICAgICAgICAgICAgcmV0dXJuCiAKQEAgLTUzNywzMiArNTQwLDMwIEBACiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdCwgY2hpbGRfcGFydHMpOgogICAgICAgICBfU2VsZWN0b3IuX19pbml0X18oc2VsZiwgY2hpbGRfcGFydHMpCiAKLSAgICBkZWYgX2l0ZXJhdGVfZGlyZWN0b3JpZXMoc2VsZiwgcGFyZW50X3BhdGgsIGlzX2RpciwgbGlzdGRpcik6CisgICAgZGVmIF9pdGVyYXRlX2RpcmVjdG9yaWVzKHNlbGYsIHBhcmVudF9wYXRoLCBpc19kaXIsIHNjYW5kaXIpOgogICAgICAgICB5aWVsZCBwYXJlbnRfcGF0aAogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmb3IgbmFtZSBpbiBsaXN0ZGlyKHBhcmVudF9wYXRoKToKLSAgICAgICAgICAgICAgICBwYXRoID0gcGFyZW50X3BhdGguX21ha2VfY2hpbGRfcmVscGF0aChuYW1lKQotICAgICAgICAgICAgICAgIGlmIGlzX2RpcihwYXRoKSBhbmQgbm90IHBhdGguaXNfc3ltbGluaygpOgotICAgICAgICAgICAgICAgICAgICBmb3IgcCBpbiBzZWxmLl9pdGVyYXRlX2RpcmVjdG9yaWVzKHBhdGgsIGlzX2RpciwgbGlzdGRpcik6CisgICAgICAgICAgICBlbnRyaWVzID0gbGlzdChzY2FuZGlyKHBhcmVudF9wYXRoKSkKKyAgICAgICAgICAgIGZvciBlbnRyeSBpbiBlbnRyaWVzOgorICAgICAgICAgICAgICAgIGlmIGVudHJ5LmlzX2RpcigpIGFuZCBub3QgZW50cnkuaXNfc3ltbGluaygpOgorICAgICAgICAgICAgICAgICAgICBwYXRoID0gcGFyZW50X3BhdGguX21ha2VfY2hpbGRfcmVscGF0aChlbnRyeS5uYW1lKQorICAgICAgICAgICAgICAgICAgICBmb3IgcCBpbiBzZWxmLl9pdGVyYXRlX2RpcmVjdG9yaWVzKHBhdGgsIGlzX2Rpciwgc2NhbmRpcik6CiAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBwCiAgICAgICAgIGV4Y2VwdCBQZXJtaXNzaW9uRXJyb3I6CiAgICAgICAgICAgICByZXR1cm4KIAotICAgIGRlZiBfc2VsZWN0X2Zyb20oc2VsZiwgcGFyZW50X3BhdGgsIGlzX2RpciwgZXhpc3RzLCBsaXN0ZGlyKToKKyAgICBkZWYgX3NlbGVjdF9mcm9tKHNlbGYsIHBhcmVudF9wYXRoLCBpc19kaXIsIGV4aXN0cywgc2NhbmRpcik6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGlmIG5vdCBpc19kaXIocGFyZW50X3BhdGgpOgotICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgd2l0aCBfY2FjaGVkKGxpc3RkaXIpIGFzIGxpc3RkaXI6Ci0gICAgICAgICAgICAgICAgeWllbGRlZCA9IHNldCgpCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBzdWNjZXNzb3Jfc2VsZWN0ID0gc2VsZi5zdWNjZXNzb3IuX3NlbGVjdF9mcm9tCi0gICAgICAgICAgICAgICAgICAgIGZvciBzdGFydGluZ19wb2ludCBpbiBzZWxmLl9pdGVyYXRlX2RpcmVjdG9yaWVzKHBhcmVudF9wYXRoLCBpc19kaXIsIGxpc3RkaXIpOgotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHAgaW4gc3VjY2Vzc29yX3NlbGVjdChzdGFydGluZ19wb2ludCwgaXNfZGlyLCBleGlzdHMsIGxpc3RkaXIpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHAgbm90IGluIHlpZWxkZWQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGRlZC5hZGQocCkKLSAgICAgICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgICAgICB5aWVsZGVkLmNsZWFyKCkKKyAgICAgICAgICAgIHlpZWxkZWQgPSBzZXQoKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHN1Y2Nlc3Nvcl9zZWxlY3QgPSBzZWxmLnN1Y2Nlc3Nvci5fc2VsZWN0X2Zyb20KKyAgICAgICAgICAgICAgICBmb3Igc3RhcnRpbmdfcG9pbnQgaW4gc2VsZi5faXRlcmF0ZV9kaXJlY3RvcmllcyhwYXJlbnRfcGF0aCwgaXNfZGlyLCBzY2FuZGlyKToKKyAgICAgICAgICAgICAgICAgICAgZm9yIHAgaW4gc3VjY2Vzc29yX3NlbGVjdChzdGFydGluZ19wb2ludCwgaXNfZGlyLCBleGlzdHMsIHNjYW5kaXIpOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgcCBub3QgaW4geWllbGRlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGRlZC5hZGQocCkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgeWllbGRlZC5jbGVhcigpCiAgICAgICAgIGV4Y2VwdCBQZXJtaXNzaW9uRXJyb3I6CiAgICAgICAgICAgICByZXR1cm4KIApAQCAtNjM0LDEzICs2MzUsMTYgQEAKICAgICAgICAgZm9yIGEgaW4gYXJnczoKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYSwgUHVyZVBhdGgpOgogICAgICAgICAgICAgICAgIHBhcnRzICs9IGEuX3BhcnRzCi0gICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoYSwgc3RyKToKLSAgICAgICAgICAgICAgICAjIEZvcmNlLWNhc3Qgc3RyIHN1YmNsYXNzZXMgdG8gc3RyIChpc3N1ZSAjMjExMjcpCi0gICAgICAgICAgICAgICAgcGFydHMuYXBwZW5kKHN0cihhKSkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAotICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgc2hvdWxkIGJlIGEgcGF0aCBvciBzdHIgb2JqZWN0LCBub3QgJXIiCi0gICAgICAgICAgICAgICAgICAgICUgdHlwZShhKSkKKyAgICAgICAgICAgICAgICBhID0gb3MuZnNwYXRoKGEpCisgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShhLCBzdHIpOgorICAgICAgICAgICAgICAgICAgICAjIEZvcmNlLWNhc3Qgc3RyIHN1YmNsYXNzZXMgdG8gc3RyIChpc3N1ZSAjMjExMjcpCisgICAgICAgICAgICAgICAgICAgIHBhcnRzLmFwcGVuZChzdHIoYSkpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IHNob3VsZCBiZSBhIHN0ciBvYmplY3Qgb3IgYW4gb3MuUGF0aExpa2UgIgorICAgICAgICAgICAgICAgICAgICAgICAgIm9iamVjdCByZXR1cm5pbmcgc3RyLCBub3QgJXIiCisgICAgICAgICAgICAgICAgICAgICAgICAlIHR5cGUoYSkpCiAgICAgICAgIHJldHVybiBjbHMuX2ZsYXZvdXIucGFyc2VfcGFydHMocGFydHMpCiAKICAgICBAY2xhc3NtZXRob2QKQEAgLTY5Myw2ICs2OTcsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYXJ0cykgb3IgJy4nCiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fc3RyCiAKKyAgICBkZWYgX19mc3BhdGhfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHN0cihzZWxmKQorCiAgICAgZGVmIGFzX3Bvc2l4KHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgcGF0aCB3aXRoIGZvcndhcmQgKC8pCiAgICAgICAgIHNsYXNoZXMuIiIiCkBAIC05NDMsNiArOTUwLDEwIEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIHJldHVybiBUcnVlCiAKKyMgQ2FuJ3Qgc3ViY2xhc3Mgb3MuUGF0aExpa2UgZnJvbSBQdXJlUGF0aCBhbmQga2VlcCB0aGUgY29uc3RydWN0b3IKKyMgb3B0aW1pemF0aW9ucyBpbiBQdXJlUGF0aC5fcGFyc2VfYXJncygpLgorb3MuUGF0aExpa2UucmVnaXN0ZXIoUHVyZVBhdGgpCisKIAogY2xhc3MgUHVyZVBvc2l4UGF0aChQdXJlUGF0aCk6CiAgICAgX2ZsYXZvdXIgPSBfcG9zaXhfZmxhdm91cgpAQCAtMTA5OCw3ICsxMTA5LDcgQEAKICAgICAgICAgb2JqLl9pbml0KHRlbXBsYXRlPXNlbGYpCiAgICAgICAgIHJldHVybiBvYmoKIAotICAgIGRlZiByZXNvbHZlKHNlbGYpOgorICAgIGRlZiByZXNvbHZlKHNlbGYsIHN0cmljdD1GYWxzZSk6CiAgICAgICAgICIiIgogICAgICAgICBNYWtlIHRoZSBwYXRoIGFic29sdXRlLCByZXNvbHZpbmcgYWxsIHN5bWxpbmtzIG9uIHRoZSB3YXkgYW5kIGFsc28KICAgICAgICAgbm9ybWFsaXppbmcgaXQgKGZvciBleGFtcGxlIHR1cm5pbmcgc2xhc2hlcyBpbnRvIGJhY2tzbGFzaGVzIHVuZGVyCkBAIC0xMTA2LDcgKzExMTcsNyBAQAogICAgICAgICAiIiIKICAgICAgICAgaWYgc2VsZi5fY2xvc2VkOgogICAgICAgICAgICAgc2VsZi5fcmFpc2VfY2xvc2VkKCkKLSAgICAgICAgcyA9IHNlbGYuX2ZsYXZvdXIucmVzb2x2ZShzZWxmKQorICAgICAgICBzID0gc2VsZi5fZmxhdm91ci5yZXNvbHZlKHNlbGYsIHN0cmljdD1zdHJpY3QpCiAgICAgICAgIGlmIHMgaXMgTm9uZToKICAgICAgICAgICAgICMgTm8gc3ltbGluayByZXNvbHV0aW9uID0+IGZvciBjb25zaXN0ZW5jeSwgcmFpc2UgYW4gZXJyb3IgaWYKICAgICAgICAgICAgICMgdGhlIHBhdGggZG9lc24ndCBleGlzdCBvciBpcyBmb3JiaWRkZW4KZGlmZiAtLWdpdCBhL0xpYi9wZGIucHkgYi9MaWIvcGRiLnB5CmluZGV4IDQ3OTcyNjUuLjk3NjE4YjAgMTAwNzU1Ci0tLSBhL0xpYi9wZGIucHkKKysrIGIvTGliL3BkYi5weQpAQCAtNTIsNyArNTIsOCBAQAogZGlyZWN0b3J5LCBpdCBpcyByZWFkIGluIGFuZCBleGVjdXRlZCBhcyBpZiBpdCBoYWQgYmVlbiB0eXBlZCBhdCB0aGUKIGRlYnVnZ2VyIHByb21wdC4gIFRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3IgYWxpYXNlcy4gIElmIGJvdGgKIGZpbGVzIGV4aXN0LCB0aGUgb25lIGluIHRoZSBob21lIGRpcmVjdG9yeSBpcyByZWFkIGZpcnN0IGFuZCBhbGlhc2VzCi1kZWZpbmVkIHRoZXJlIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoZSBsb2NhbCBmaWxlLgorZGVmaW5lZCB0aGVyZSBjYW4gYmUgb3ZlcnJpZGRlbiBieSB0aGUgbG9jYWwgZmlsZS4gIFRoaXMgYmVoYXZpb3IgY2FuIGJlCitkaXNhYmxlZCBieSBwYXNzaW5nIHRoZSAicmVhZHJjPUZhbHNlIiBhcmd1bWVudCB0byB0aGUgUGRiIGNvbnN0cnVjdG9yLgogCiBBc2lkZSBmcm9tIGFsaWFzZXMsIHRoZSBkZWJ1Z2dlciBpcyBub3QgZGlyZWN0bHkgcHJvZ3JhbW1hYmxlOyBidXQgaXQKIGlzIGltcGxlbWVudGVkIGFzIGEgY2xhc3MgZnJvbSB3aGljaCB5b3UgY2FuIGRlcml2ZSB5b3VyIG93biBkZWJ1Z2dlcgpAQCAtMTM3LDcgKzEzOCw3IEBACiAgICAgX3ByZXZpb3VzX3NpZ2ludF9oYW5kbGVyID0gTm9uZQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbXBsZXRla2V5PSd0YWInLCBzdGRpbj1Ob25lLCBzdGRvdXQ9Tm9uZSwgc2tpcD1Ob25lLAotICAgICAgICAgICAgICAgICBub3NpZ2ludD1GYWxzZSk6CisgICAgICAgICAgICAgICAgIG5vc2lnaW50PUZhbHNlLCByZWFkcmM9VHJ1ZSk6CiAgICAgICAgIGJkYi5CZGIuX19pbml0X18oc2VsZiwgc2tpcD1za2lwKQogICAgICAgICBjbWQuQ21kLl9faW5pdF9fKHNlbGYsIGNvbXBsZXRla2V5LCBzdGRpbiwgc3Rkb3V0KQogICAgICAgICBpZiBzdGRvdXQ6CkBAIC0xNjAsMTggKzE2MSwxOSBAQAogCiAgICAgICAgICMgUmVhZCAkSE9NRS8ucGRicmMgYW5kIC4vLnBkYnJjCiAgICAgICAgIHNlbGYucmNMaW5lcyA9IFtdCi0gICAgICAgIGlmICdIT01FJyBpbiBvcy5lbnZpcm9uOgotICAgICAgICAgICAgZW52SG9tZSA9IG9zLmVudmlyb25bJ0hPTUUnXQorICAgICAgICBpZiByZWFkcmM6CisgICAgICAgICAgICBpZiAnSE9NRScgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgICAgICAgICBlbnZIb21lID0gb3MuZW52aXJvblsnSE9NRSddCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGVudkhvbWUsICIucGRicmMiKSkgYXMgcmNGaWxlOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yY0xpbmVzLmV4dGVuZChyY0ZpbGUpCisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGVudkhvbWUsICIucGRicmMiKSkgYXMgcmNGaWxlOgorICAgICAgICAgICAgICAgIHdpdGggb3BlbigiLnBkYnJjIikgYXMgcmNGaWxlOgogICAgICAgICAgICAgICAgICAgICBzZWxmLnJjTGluZXMuZXh0ZW5kKHJjRmlsZSkKICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2l0aCBvcGVuKCIucGRicmMiKSBhcyByY0ZpbGU6Ci0gICAgICAgICAgICAgICAgc2VsZi5yY0xpbmVzLmV4dGVuZChyY0ZpbGUpCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgcGFzcwogCiAgICAgICAgIHNlbGYuY29tbWFuZHMgPSB7fSAjIGFzc29jaWF0ZXMgYSBjb21tYW5kIGxpc3QgdG8gYnJlYWtwb2ludCBudW1iZXJzCiAgICAgICAgIHNlbGYuY29tbWFuZHNfZG9wcm9tcHQgPSB7fSAjIGZvciBlYWNoIGJwIG51bSwgdGVsbHMgaWYgdGhlIHByb21wdApkaWZmIC0tZ2l0IGEvTGliL3BpY2tsZS5weSBiL0xpYi9waWNrbGUucHkKaW5kZXggMDQwZWNiMi4uYzgzNzBjOSAxMDA2NDQKLS0tIGEvTGliL3BpY2tsZS5weQorKysgYi9MaWIvcGlja2xlLnB5CkBAIC0yNyw2ICsyNyw3IEBACiBmcm9tIGNvcHlyZWcgaW1wb3J0IGRpc3BhdGNoX3RhYmxlCiBmcm9tIGNvcHlyZWcgaW1wb3J0IF9leHRlbnNpb25fcmVnaXN0cnksIF9pbnZlcnRlZF9yZWdpc3RyeSwgX2V4dGVuc2lvbl9jYWNoZQogZnJvbSBpdGVydG9vbHMgaW1wb3J0IGlzbGljZQorZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHBhcnRpYWwKIGltcG9ydCBzeXMKIGZyb20gc3lzIGltcG9ydCBtYXhzaXplCiBmcm9tIHN0cnVjdCBpbXBvcnQgcGFjaywgdW5wYWNrCkBAIC01NDgsNyArNTQ5LDcgQEAKICAgICAgICAgd3JpdGUgPSBzZWxmLndyaXRlCiAKICAgICAgICAgZnVuY19uYW1lID0gZ2V0YXR0cihmdW5jLCAiX19uYW1lX18iLCAiIikKLSAgICAgICAgaWYgc2VsZi5wcm90byA+PSA0IGFuZCBmdW5jX25hbWUgPT0gIl9fbmV3b2JqX2V4X18iOgorICAgICAgICBpZiBzZWxmLnByb3RvID49IDIgYW5kIGZ1bmNfbmFtZSA9PSAiX19uZXdvYmpfZXhfXyI6CiAgICAgICAgICAgICBjbHMsIGFyZ3MsIGt3YXJncyA9IGFyZ3MKICAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKGNscywgIl9fbmV3X18iKToKICAgICAgICAgICAgICAgICByYWlzZSBQaWNrbGluZ0Vycm9yKCJhcmdzWzBdIGZyb20ge30gYXJncyBoYXMgbm8gX19uZXdfXyIKQEAgLTU1NiwxMCArNTU3LDE2IEBACiAgICAgICAgICAgICBpZiBvYmogaXMgbm90IE5vbmUgYW5kIGNscyBpcyBub3Qgb2JqLl9fY2xhc3NfXzoKICAgICAgICAgICAgICAgICByYWlzZSBQaWNrbGluZ0Vycm9yKCJhcmdzWzBdIGZyb20ge30gYXJncyBoYXMgdGhlIHdyb25nIGNsYXNzIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChmdW5jX25hbWUpKQotICAgICAgICAgICAgc2F2ZShjbHMpCi0gICAgICAgICAgICBzYXZlKGFyZ3MpCi0gICAgICAgICAgICBzYXZlKGt3YXJncykKLSAgICAgICAgICAgIHdyaXRlKE5FV09CSl9FWCkKKyAgICAgICAgICAgIGlmIHNlbGYucHJvdG8gPj0gNDoKKyAgICAgICAgICAgICAgICBzYXZlKGNscykKKyAgICAgICAgICAgICAgICBzYXZlKGFyZ3MpCisgICAgICAgICAgICAgICAgc2F2ZShrd2FyZ3MpCisgICAgICAgICAgICAgICAgd3JpdGUoTkVXT0JKX0VYKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBmdW5jID0gcGFydGlhbChjbHMuX19uZXdfXywgY2xzLCAqYXJncywgKiprd2FyZ3MpCisgICAgICAgICAgICAgICAgc2F2ZShmdW5jKQorICAgICAgICAgICAgICAgIHNhdmUoKCkpCisgICAgICAgICAgICAgICAgd3JpdGUoUkVEVUNFKQogICAgICAgICBlbGlmIHNlbGYucHJvdG8gPj0gMiBhbmQgZnVuY19uYW1lID09ICJfX25ld29ial9fIjoKICAgICAgICAgICAgICMgQSBfX3JlZHVjZV9fIGltcGxlbWVudGF0aW9uIGNhbiBkaXJlY3QgcHJvdG9jb2wgMiBvciBuZXdlciB0bwogICAgICAgICAgICAgIyB1c2UgdGhlIG1vcmUgZWZmaWNpZW50IE5FV09CSiBvcGNvZGUsIHdoaWxlIHN0aWxsCkBAIC0xMDI4LDcgKzEwMzUsNyBAQAogICAgICAgICBzZWxmLl91bmZyYW1lciA9IF9VbmZyYW1lcihzZWxmLl9maWxlX3JlYWQsIHNlbGYuX2ZpbGVfcmVhZGxpbmUpCiAgICAgICAgIHNlbGYucmVhZCA9IHNlbGYuX3VuZnJhbWVyLnJlYWQKICAgICAgICAgc2VsZi5yZWFkbGluZSA9IHNlbGYuX3VuZnJhbWVyLnJlYWRsaW5lCi0gICAgICAgIHNlbGYubWFyayA9IG9iamVjdCgpICMgYW55IG5ldyB1bmlxdWUgb2JqZWN0CisgICAgICAgIHNlbGYubWV0YXN0YWNrID0gW10KICAgICAgICAgc2VsZi5zdGFjayA9IFtdCiAgICAgICAgIHNlbGYuYXBwZW5kID0gc2VsZi5zdGFjay5hcHBlbmQKICAgICAgICAgc2VsZi5wcm90byA9IDAKQEAgLTEwNDQsMjAgKzEwNTEsMTIgQEAKICAgICAgICAgZXhjZXB0IF9TdG9wIGFzIHN0b3BpbnN0OgogICAgICAgICAgICAgcmV0dXJuIHN0b3BpbnN0LnZhbHVlCiAKLSAgICAjIFJldHVybiBsYXJnZXN0IGluZGV4IGsgc3VjaCB0aGF0IHNlbGYuc3RhY2tba10gaXMgc2VsZi5tYXJrLgotICAgICMgSWYgdGhlIHN0YWNrIGRvZXNuJ3QgY29udGFpbiBhIG1hcmssIGV2ZW50dWFsbHkgcmFpc2VzIEluZGV4RXJyb3IuCi0gICAgIyBUaGlzIGNvdWxkIGJlIHNwZWQgYnkgbWFpbnRhaW5pbmcgYW5vdGhlciBzdGFjaywgb2YgaW5kaWNlcyBhdCB3aGljaAotICAgICMgdGhlIG1hcmsgYXBwZWFycy4gIEZvciB0aGF0IG1hdHRlciwgdGhlIGxhdHRlciBzdGFjayB3b3VsZCBzdWZmaWNlLAotICAgICMgYW5kIHdlIHdvdWxkbid0IG5lZWQgdG8gcHVzaCBtYXJrIG9iamVjdHMgb24gc2VsZi5zdGFjayBhdCBhbGwuCi0gICAgIyBEb2luZyBzbyBpcyBwcm9iYWJseSBhIGdvb2QgdGhpbmcsIHRob3VnaCwgc2luY2UgaWYgdGhlIHBpY2tsZSBpcwotICAgICMgY29ycnVwdCAob3IgaG9zdGlsZSkgd2UgbWF5IGdldCBhIGNsdWUgZnJvbSBmaW5kaW5nIHNlbGYubWFyayBlbWJlZGRlZAotICAgICMgaW4gdW5waWNrbGVkIG9iamVjdHMuCi0gICAgZGVmIG1hcmtlcihzZWxmKToKLSAgICAgICAgc3RhY2sgPSBzZWxmLnN0YWNrCi0gICAgICAgIG1hcmsgPSBzZWxmLm1hcmsKLSAgICAgICAgayA9IGxlbihzdGFjayktMQotICAgICAgICB3aGlsZSBzdGFja1trXSBpcyBub3QgbWFyazogayA9IGstMQotICAgICAgICByZXR1cm4gaworICAgICMgUmV0dXJuIGEgbGlzdCBvZiBpdGVtcyBwdXNoZWQgaW4gdGhlIHN0YWNrIGFmdGVyIGxhc3QgTUFSSyBpbnN0cnVjdGlvbi4KKyAgICBkZWYgcG9wX21hcmsoc2VsZik6CisgICAgICAgIGl0ZW1zID0gc2VsZi5zdGFjaworICAgICAgICBzZWxmLnN0YWNrID0gc2VsZi5tZXRhc3RhY2sucG9wKCkKKyAgICAgICAgc2VsZi5hcHBlbmQgPSBzZWxmLnN0YWNrLmFwcGVuZAorICAgICAgICByZXR1cm4gaXRlbXMKIAogICAgIGRlZiBwZXJzaXN0ZW50X2xvYWQoc2VsZiwgcGlkKToKICAgICAgICAgcmFpc2UgVW5waWNrbGluZ0Vycm9yKCJ1bnN1cHBvcnRlZCBwZXJzaXN0ZW50IGlkIGVuY291bnRlcmVkIikKQEAgLTEyMzgsOCArMTIzNyw4IEBACiAgICAgZGlzcGF0Y2hbU0hPUlRfQklOVU5JQ09ERVswXV0gPSBsb2FkX3Nob3J0X2JpbnVuaWNvZGUKIAogICAgIGRlZiBsb2FkX3R1cGxlKHNlbGYpOgotICAgICAgICBrID0gc2VsZi5tYXJrZXIoKQotICAgICAgICBzZWxmLnN0YWNrW2s6XSA9IFt0dXBsZShzZWxmLnN0YWNrW2srMTpdKV0KKyAgICAgICAgaXRlbXMgPSBzZWxmLnBvcF9tYXJrKCkKKyAgICAgICAgc2VsZi5hcHBlbmQodHVwbGUoaXRlbXMpKQogICAgIGRpc3BhdGNoW1RVUExFWzBdXSA9IGxvYWRfdHVwbGUKIAogICAgIGRlZiBsb2FkX2VtcHR5X3R1cGxlKHNlbGYpOgpAQCAtMTI3MSwyMSArMTI3MCwyMCBAQAogICAgIGRpc3BhdGNoW0VNUFRZX1NFVFswXV0gPSBsb2FkX2VtcHR5X3NldAogCiAgICAgZGVmIGxvYWRfZnJvemVuc2V0KHNlbGYpOgotICAgICAgICBrID0gc2VsZi5tYXJrZXIoKQotICAgICAgICBzZWxmLnN0YWNrW2s6XSA9IFtmcm96ZW5zZXQoc2VsZi5zdGFja1trKzE6XSldCisgICAgICAgIGl0ZW1zID0gc2VsZi5wb3BfbWFyaygpCisgICAgICAgIHNlbGYuYXBwZW5kKGZyb3plbnNldChpdGVtcykpCiAgICAgZGlzcGF0Y2hbRlJPWkVOU0VUWzBdXSA9IGxvYWRfZnJvemVuc2V0CiAKICAgICBkZWYgbG9hZF9saXN0KHNlbGYpOgotICAgICAgICBrID0gc2VsZi5tYXJrZXIoKQotICAgICAgICBzZWxmLnN0YWNrW2s6XSA9IFtzZWxmLnN0YWNrW2srMTpdXQorICAgICAgICBpdGVtcyA9IHNlbGYucG9wX21hcmsoKQorICAgICAgICBzZWxmLmFwcGVuZChpdGVtcykKICAgICBkaXNwYXRjaFtMSVNUWzBdXSA9IGxvYWRfbGlzdAogCiAgICAgZGVmIGxvYWRfZGljdChzZWxmKToKLSAgICAgICAgayA9IHNlbGYubWFya2VyKCkKLSAgICAgICAgaXRlbXMgPSBzZWxmLnN0YWNrW2srMTpdCisgICAgICAgIGl0ZW1zID0gc2VsZi5wb3BfbWFyaygpCiAgICAgICAgIGQgPSB7aXRlbXNbaV06IGl0ZW1zW2krMV0KICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oaXRlbXMpLCAyKX0KLSAgICAgICAgc2VsZi5zdGFja1trOl0gPSBbZF0KKyAgICAgICAgc2VsZi5hcHBlbmQoZCkKICAgICBkaXNwYXRjaFtESUNUWzBdXSA9IGxvYWRfZGljdAogCiAgICAgIyBJTlNUIGFuZCBPQkogZGlmZmVyIG9ubHkgaW4gaG93IHRoZXkgZ2V0IGEgY2xhc3Mgb2JqZWN0LiAgSXQncyBub3QKQEAgLTEyOTMsOSArMTI5MSw3IEBACiAgICAgIyBwcmV2aW91c2x5IGRpdmVyZ2VkIGFuZCBncmV3IGRpZmZlcmVudCBidWdzLgogICAgICMga2xhc3MgaXMgdGhlIGNsYXNzIHRvIGluc3RhbnRpYXRlLCBhbmQgayBwb2ludHMgdG8gdGhlIHRvcG1vc3QgbWFyawogICAgICMgb2JqZWN0LCBmb2xsb3dpbmcgd2hpY2ggYXJlIHRoZSBhcmd1bWVudHMgZm9yIGtsYXNzLl9faW5pdF9fLgotICAgIGRlZiBfaW5zdGFudGlhdGUoc2VsZiwga2xhc3MsIGspOgotICAgICAgICBhcmdzID0gdHVwbGUoc2VsZi5zdGFja1trKzE6XSkKLSAgICAgICAgZGVsIHNlbGYuc3RhY2tbazpdCisgICAgZGVmIF9pbnN0YW50aWF0ZShzZWxmLCBrbGFzcywgYXJncyk6CiAgICAgICAgIGlmIChhcmdzIG9yIG5vdCBpc2luc3RhbmNlKGtsYXNzLCB0eXBlKSBvcgogICAgICAgICAgICAgaGFzYXR0cihrbGFzcywgIl9fZ2V0aW5pdGFyZ3NfXyIpKToKICAgICAgICAgICAgIHRyeToKQEAgLTEzMTEsMTQgKzEzMDcsMTQgQEAKICAgICAgICAgbW9kdWxlID0gc2VsZi5yZWFkbGluZSgpWzotMV0uZGVjb2RlKCJhc2NpaSIpCiAgICAgICAgIG5hbWUgPSBzZWxmLnJlYWRsaW5lKClbOi0xXS5kZWNvZGUoImFzY2lpIikKICAgICAgICAga2xhc3MgPSBzZWxmLmZpbmRfY2xhc3MobW9kdWxlLCBuYW1lKQotICAgICAgICBzZWxmLl9pbnN0YW50aWF0ZShrbGFzcywgc2VsZi5tYXJrZXIoKSkKKyAgICAgICAgc2VsZi5faW5zdGFudGlhdGUoa2xhc3MsIHNlbGYucG9wX21hcmsoKSkKICAgICBkaXNwYXRjaFtJTlNUWzBdXSA9IGxvYWRfaW5zdAogCiAgICAgZGVmIGxvYWRfb2JqKHNlbGYpOgogICAgICAgICAjIFN0YWNrIGlzIC4uLiBtYXJrb2JqZWN0IGNsYXNzb2JqZWN0IGFyZzEgYXJnMiAuLi4KLSAgICAgICAgayA9IHNlbGYubWFya2VyKCkKLSAgICAgICAga2xhc3MgPSBzZWxmLnN0YWNrLnBvcChrKzEpCi0gICAgICAgIHNlbGYuX2luc3RhbnRpYXRlKGtsYXNzLCBrKQorICAgICAgICBhcmdzID0gc2VsZi5wb3BfbWFyaygpCisgICAgICAgIGNscyA9IGFyZ3MucG9wKDApCisgICAgICAgIHNlbGYuX2luc3RhbnRpYXRlKGNscywgYXJncykKICAgICBkaXNwYXRjaFtPQkpbMF1dID0gbG9hZF9vYmoKIAogICAgIGRlZiBsb2FkX25ld29iaihzZWxmKToKQEAgLTE0MDMsMTIgKzEzOTksMTQgQEAKICAgICBkaXNwYXRjaFtSRURVQ0VbMF1dID0gbG9hZF9yZWR1Y2UKIAogICAgIGRlZiBsb2FkX3BvcChzZWxmKToKLSAgICAgICAgZGVsIHNlbGYuc3RhY2tbLTFdCisgICAgICAgIGlmIHNlbGYuc3RhY2s6CisgICAgICAgICAgICBkZWwgc2VsZi5zdGFja1stMV0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYucG9wX21hcmsoKQogICAgIGRpc3BhdGNoW1BPUFswXV0gPSBsb2FkX3BvcAogCiAgICAgZGVmIGxvYWRfcG9wX21hcmsoc2VsZik6Ci0gICAgICAgIGsgPSBzZWxmLm1hcmtlcigpCi0gICAgICAgIGRlbCBzZWxmLnN0YWNrW2s6XQorICAgICAgICBzZWxmLnBvcF9tYXJrKCkKICAgICBkaXNwYXRjaFtQT1BfTUFSS1swXV0gPSBsb2FkX3BvcF9tYXJrCiAKICAgICBkZWYgbG9hZF9kdXAoc2VsZik6CkBAIC0xNDY0LDE3ICsxNDYyLDE0IEBACiAgICAgZGlzcGF0Y2hbQVBQRU5EWzBdXSA9IGxvYWRfYXBwZW5kCiAKICAgICBkZWYgbG9hZF9hcHBlbmRzKHNlbGYpOgotICAgICAgICBzdGFjayA9IHNlbGYuc3RhY2sKLSAgICAgICAgbWFyayA9IHNlbGYubWFya2VyKCkKLSAgICAgICAgbGlzdF9vYmogPSBzdGFja1ttYXJrIC0gMV0KLSAgICAgICAgaXRlbXMgPSBzdGFja1ttYXJrICsgMTpdCisgICAgICAgIGl0ZW1zID0gc2VsZi5wb3BfbWFyaygpCisgICAgICAgIGxpc3Rfb2JqID0gc2VsZi5zdGFja1stMV0KICAgICAgICAgaWYgaXNpbnN0YW5jZShsaXN0X29iaiwgbGlzdCk6CiAgICAgICAgICAgICBsaXN0X29iai5leHRlbmQoaXRlbXMpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBhcHBlbmQgPSBsaXN0X29iai5hcHBlbmQKICAgICAgICAgICAgIGZvciBpdGVtIGluIGl0ZW1zOgogICAgICAgICAgICAgICAgIGFwcGVuZChpdGVtKQotICAgICAgICBkZWwgc3RhY2tbbWFyazpdCiAgICAgZGlzcGF0Y2hbQVBQRU5EU1swXV0gPSBsb2FkX2FwcGVuZHMKIAogICAgIGRlZiBsb2FkX3NldGl0ZW0oc2VsZik6CkBAIC0xNDg2LDI3ICsxNDgxLDIxIEBACiAgICAgZGlzcGF0Y2hbU0VUSVRFTVswXV0gPSBsb2FkX3NldGl0ZW0KIAogICAgIGRlZiBsb2FkX3NldGl0ZW1zKHNlbGYpOgotICAgICAgICBzdGFjayA9IHNlbGYuc3RhY2sKLSAgICAgICAgbWFyayA9IHNlbGYubWFya2VyKCkKLSAgICAgICAgZGljdCA9IHN0YWNrW21hcmsgLSAxXQotICAgICAgICBmb3IgaSBpbiByYW5nZShtYXJrICsgMSwgbGVuKHN0YWNrKSwgMik6Ci0gICAgICAgICAgICBkaWN0W3N0YWNrW2ldXSA9IHN0YWNrW2kgKyAxXQotCi0gICAgICAgIGRlbCBzdGFja1ttYXJrOl0KKyAgICAgICAgaXRlbXMgPSBzZWxmLnBvcF9tYXJrKCkKKyAgICAgICAgZGljdCA9IHNlbGYuc3RhY2tbLTFdCisgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihpdGVtcyksIDIpOgorICAgICAgICAgICAgZGljdFtpdGVtc1tpXV0gPSBpdGVtc1tpICsgMV0KICAgICBkaXNwYXRjaFtTRVRJVEVNU1swXV0gPSBsb2FkX3NldGl0ZW1zCiAKICAgICBkZWYgbG9hZF9hZGRpdGVtcyhzZWxmKToKLSAgICAgICAgc3RhY2sgPSBzZWxmLnN0YWNrCi0gICAgICAgIG1hcmsgPSBzZWxmLm1hcmtlcigpCi0gICAgICAgIHNldF9vYmogPSBzdGFja1ttYXJrIC0gMV0KLSAgICAgICAgaXRlbXMgPSBzdGFja1ttYXJrICsgMTpdCisgICAgICAgIGl0ZW1zID0gc2VsZi5wb3BfbWFyaygpCisgICAgICAgIHNldF9vYmogPSBzZWxmLnN0YWNrWy0xXQogICAgICAgICBpZiBpc2luc3RhbmNlKHNldF9vYmosIHNldCk6CiAgICAgICAgICAgICBzZXRfb2JqLnVwZGF0ZShpdGVtcykKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGFkZCA9IHNldF9vYmouYWRkCiAgICAgICAgICAgICBmb3IgaXRlbSBpbiBpdGVtczoKICAgICAgICAgICAgICAgICBhZGQoaXRlbSkKLSAgICAgICAgZGVsIHN0YWNrW21hcms6XQogICAgIGRpc3BhdGNoW0FERElURU1TWzBdXSA9IGxvYWRfYWRkaXRlbXMKIAogICAgIGRlZiBsb2FkX2J1aWxkKHNlbGYpOgpAQCAtMTUzNCw3ICsxNTIzLDkgQEAKICAgICBkaXNwYXRjaFtCVUlMRFswXV0gPSBsb2FkX2J1aWxkCiAKICAgICBkZWYgbG9hZF9tYXJrKHNlbGYpOgotICAgICAgICBzZWxmLmFwcGVuZChzZWxmLm1hcmspCisgICAgICAgIHNlbGYubWV0YXN0YWNrLmFwcGVuZChzZWxmLnN0YWNrKQorICAgICAgICBzZWxmLnN0YWNrID0gW10KKyAgICAgICAgc2VsZi5hcHBlbmQgPSBzZWxmLnN0YWNrLmFwcGVuZAogICAgIGRpc3BhdGNoW01BUktbMF1dID0gbG9hZF9tYXJrCiAKICAgICBkZWYgbG9hZF9zdG9wKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3BpY2tsZXRvb2xzLnB5IGIvTGliL3BpY2tsZXRvb2xzLnB5CmluZGV4IDE2YWU3ZDUuLjVlMTI5YjUgMTAwNjQ0Ci0tLSBhL0xpYi9waWNrbGV0b29scy5weQorKysgYi9MaWIvcGlja2xldG9vbHMucHkKQEAgLTcwNyw3ICs3MDcsNyBAQAogICAgID4+PiBlbmMgPSBzLmVuY29kZSgndXRmLTgnKQogICAgID4+PiBlbmMKICAgICBiJ2FiY2RceGVhXHhhZlx4OGQnCi0gICAgPj4+IG4gPSBieXRlcyhbbGVuKGVuYyldKSArIGJ5dGVzKDcpICAjIGxpdHRsZS1lbmRpYW4gOC1ieXRlIGxlbmd0aAorICAgID4+PiBuID0gYnl0ZXMoW2xlbihlbmMpXSkgKyBiJ1wwJyAqIDcgICMgbGl0dGxlLWVuZGlhbiA4LWJ5dGUgbGVuZ3RoCiAgICAgPj4+IHQgPSByZWFkX3VuaWNvZGVzdHJpbmc4KGlvLkJ5dGVzSU8obiArIGVuYyArIGInanVuaycpKQogICAgID4+PiBzID09IHQKICAgICBUcnVlCkBAIC0yNDQwLDYgKzI0NDAsNyBAQAogICAgICAgICBpZiBvcGNvZGUubmFtZSBpbiAoIlBVVCIsICJCSU5QVVQiLCAiTE9OR19CSU5QVVQiLCAiTUVNT0laRSIpOgogICAgICAgICAgICAgaWYgb3Bjb2RlLm5hbWUgPT0gIk1FTU9JWkUiOgogICAgICAgICAgICAgICAgIG1lbW9faWR4ID0gbGVuKG1lbW8pCisgICAgICAgICAgICAgICAgbWFya21zZyA9ICIoYXMgJWQpIiAlIG1lbW9faWR4CiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGFzc2VydCBhcmcgaXMgbm90IE5vbmUKICAgICAgICAgICAgICAgICBtZW1vX2lkeCA9IGFyZwpkaWZmIC0tZ2l0IGEvTGliL3BrZ3V0aWwucHkgYi9MaWIvcGtndXRpbC5weQppbmRleCA4MWQ0MThkLi5lMzdhZDQ1IDEwMDY0NAotLS0gYS9MaWIvcGtndXRpbC5weQorKysgYi9MaWIvcGtndXRpbC5weQpAQCAtMSw1ICsxLDYgQEAKICIiIlV0aWxpdGllcyB0byBzdXBwb3J0IHBhY2thZ2VzLiIiIgogCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCiBmcm9tIGZ1bmN0b29scyBpbXBvcnQgc2luZ2xlZGlzcGF0Y2ggYXMgc2ltcGxlZ2VuZXJpYwogaW1wb3J0IGltcG9ydGxpYgogaW1wb3J0IGltcG9ydGxpYi51dGlsCkBAIC0xNCw5ICsxNSwxNCBAQAogICAgICdnZXRfaW1wb3J0ZXInLCAnaXRlcl9pbXBvcnRlcnMnLCAnZ2V0X2xvYWRlcicsICdmaW5kX2xvYWRlcicsCiAgICAgJ3dhbGtfcGFja2FnZXMnLCAnaXRlcl9tb2R1bGVzJywgJ2dldF9kYXRhJywKICAgICAnSW1wSW1wb3J0ZXInLCAnSW1wTG9hZGVyJywgJ3JlYWRfY29kZScsICdleHRlbmRfcGF0aCcsCisgICAgJ01vZHVsZUluZm8nLAogXQogCiAKK01vZHVsZUluZm8gPSBuYW1lZHR1cGxlKCdNb2R1bGVJbmZvJywgJ21vZHVsZV9maW5kZXIgbmFtZSBpc3BrZycpCitNb2R1bGVJbmZvLl9fZG9jX18gPSAnQSBuYW1lZHR1cGxlIHdpdGggbWluaW1hbCBpbmZvIGFib3V0IGEgbW9kdWxlLicKKworCiBkZWYgX2dldF9zcGVjKGZpbmRlciwgbmFtZSk6CiAgICAgIiIiUmV0dXJuIHRoZSBmaW5kZXItc3BlY2lmaWMgbW9kdWxlIHNwZWMuIiIiCiAgICAgIyBXb3JrcyB3aXRoIGxlZ2FjeSBmaW5kZXJzLgpAQCAtNDUsNyArNTEsNyBAQAogCiAKIGRlZiB3YWxrX3BhY2thZ2VzKHBhdGg9Tm9uZSwgcHJlZml4PScnLCBvbmVycm9yPU5vbmUpOgotICAgICIiIllpZWxkcyAobW9kdWxlX2ZpbmRlciwgbmFtZSwgaXNwa2cpIGZvciBhbGwgbW9kdWxlcyByZWN1cnNpdmVseQorICAgICIiIllpZWxkcyBNb2R1bGVJbmZvIGZvciBhbGwgbW9kdWxlcyByZWN1cnNpdmVseQogICAgIG9uIHBhdGgsIG9yLCBpZiBwYXRoIGlzIE5vbmUsIGFsbCBhY2Nlc3NpYmxlIG1vZHVsZXMuCiAKICAgICAncGF0aCcgc2hvdWxkIGJlIGVpdGhlciBOb25lIG9yIGEgbGlzdCBvZiBwYXRocyB0byBsb29rIGZvcgpAQCAtNzgsMzEgKzg0LDMxIEBACiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICBtW3BdID0gVHJ1ZQogCi0gICAgZm9yIGltcG9ydGVyLCBuYW1lLCBpc3BrZyBpbiBpdGVyX21vZHVsZXMocGF0aCwgcHJlZml4KToKLSAgICAgICAgeWllbGQgaW1wb3J0ZXIsIG5hbWUsIGlzcGtnCisgICAgZm9yIGluZm8gaW4gaXRlcl9tb2R1bGVzKHBhdGgsIHByZWZpeCk6CisgICAgICAgIHlpZWxkIGluZm8KIAotICAgICAgICBpZiBpc3BrZzoKKyAgICAgICAgaWYgaW5mby5pc3BrZzoKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBfX2ltcG9ydF9fKG5hbWUpCisgICAgICAgICAgICAgICAgX19pbXBvcnRfXyhpbmZvLm5hbWUpCiAgICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICAgICAgICAgaWYgb25lcnJvciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgb25lcnJvcihuYW1lKQorICAgICAgICAgICAgICAgICAgICBvbmVycm9yKGluZm8ubmFtZSkKICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgICAgICAgaWYgb25lcnJvciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgb25lcnJvcihuYW1lKQorICAgICAgICAgICAgICAgICAgICBvbmVycm9yKGluZm8ubmFtZSkKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBwYXRoID0gZ2V0YXR0cihzeXMubW9kdWxlc1tuYW1lXSwgJ19fcGF0aF9fJywgTm9uZSkgb3IgW10KKyAgICAgICAgICAgICAgICBwYXRoID0gZ2V0YXR0cihzeXMubW9kdWxlc1tpbmZvLm5hbWVdLCAnX19wYXRoX18nLCBOb25lKSBvciBbXQogCiAgICAgICAgICAgICAgICAgIyBkb24ndCB0cmF2ZXJzZSBwYXRoIGl0ZW1zIHdlJ3ZlIHNlZW4gYmVmb3JlCiAgICAgICAgICAgICAgICAgcGF0aCA9IFtwIGZvciBwIGluIHBhdGggaWYgbm90IHNlZW4ocCldCiAKLSAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIHdhbGtfcGFja2FnZXMocGF0aCwgbmFtZSsnLicsIG9uZXJyb3IpCisgICAgICAgICAgICAgICAgeWllbGQgZnJvbSB3YWxrX3BhY2thZ2VzKHBhdGgsIGluZm8ubmFtZSsnLicsIG9uZXJyb3IpCiAKIAogZGVmIGl0ZXJfbW9kdWxlcyhwYXRoPU5vbmUsIHByZWZpeD0nJyk6Ci0gICAgIiIiWWllbGRzIChtb2R1bGVfZmluZGVyLCBuYW1lLCBpc3BrZykgZm9yIGFsbCBzdWJtb2R1bGVzIG9uIHBhdGgsCisgICAgIiIiWWllbGRzIE1vZHVsZUluZm8gZm9yIGFsbCBzdWJtb2R1bGVzIG9uIHBhdGgsCiAgICAgb3IsIGlmIHBhdGggaXMgTm9uZSwgYWxsIHRvcC1sZXZlbCBtb2R1bGVzIG9uIHN5cy5wYXRoLgogCiAgICAgJ3BhdGgnIHNob3VsZCBiZSBlaXRoZXIgTm9uZSBvciBhIGxpc3Qgb2YgcGF0aHMgdG8gbG9vayBmb3IKQEAgLTExMSw3ICsxMTcsNiBAQAogICAgICdwcmVmaXgnIGlzIGEgc3RyaW5nIHRvIG91dHB1dCBvbiB0aGUgZnJvbnQgb2YgZXZlcnkgbW9kdWxlIG5hbWUKICAgICBvbiBvdXRwdXQuCiAgICAgIiIiCi0KICAgICBpZiBwYXRoIGlzIE5vbmU6CiAgICAgICAgIGltcG9ydGVycyA9IGl0ZXJfaW1wb3J0ZXJzKCkKICAgICBlbHNlOgpAQCAtMTIyLDcgKzEyNyw3IEBACiAgICAgICAgIGZvciBuYW1lLCBpc3BrZyBpbiBpdGVyX2ltcG9ydGVyX21vZHVsZXMoaSwgcHJlZml4KToKICAgICAgICAgICAgIGlmIG5hbWUgbm90IGluIHlpZWxkZWQ6CiAgICAgICAgICAgICAgICAgeWllbGRlZFtuYW1lXSA9IDEKLSAgICAgICAgICAgICAgICB5aWVsZCBpLCBuYW1lLCBpc3BrZworICAgICAgICAgICAgICAgIHlpZWxkIE1vZHVsZUluZm8oaSwgbmFtZSwgaXNwa2cpCiAKIAogQHNpbXBsZWdlbmVyaWMKQEAgLTE4MCw3ICsxODUsNyBAQAogZGVmIF9pbXBvcnRfaW1wKCk6CiAgICAgZ2xvYmFsIGltcAogICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKLSAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgaW1wID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoJ2ltcCcpCiAKIGNsYXNzIEltcEltcG9ydGVyOgpkaWZmIC0tZ2l0IGEvTGliL3BsYXQtYWl4NC9JTi5weSBiL0xpYi9wbGF0LWFpeDQvSU4ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzZjhmMjMuLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtYWl4NC9JTi5weQorKysgL2Rldi9udWxsCkBAIC0xLDE2NSArMCwwIEBACi0jIEdlbmVyYXRlZCBieSBoMnB5IGZyb20gL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaAotCi0jIEluY2x1ZGVkIGZyb20gbmV0L25oLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9tYWNoaW5lLmgKLUxJVFRMRV9FTkRJQU4gPSAxMjM0Ci1CSUdfRU5ESUFOID0gNDMyMQotUERQX0VORElBTiA9IDM0MTIKLUJZVEVfT1JERVIgPSBCSUdfRU5ESUFOCi1ERUZBVUxUX0dQUiA9IDB4REVBREJFRUYKLU1TUl9FRSA9IDB4ODAwMAotTVNSX1BSID0gMHg0MDAwCi1NU1JfRlAgPSAweDIwMDAKLU1TUl9NRSA9IDB4MTAwMAotTVNSX0ZFID0gMHgwODAwCi1NU1JfRkUwID0gMHgwODAwCi1NU1JfU0UgPSAweDA0MDAKLU1TUl9CRSA9IDB4MDIwMAotTVNSX0lFID0gMHgwMTAwCi1NU1JfRkUxID0gMHgwMTAwCi1NU1JfQUwgPSAweDAwODAKLU1TUl9JUCA9IDB4MDA0MAotTVNSX0lSID0gMHgwMDIwCi1NU1JfRFIgPSAweDAwMTAKLU1TUl9QTSA9IDB4MDAwNAotREVGQVVMVF9NU1IgPSAoTVNSX0VFIHwgTVNSX01FIHwgTVNSX0FMIHwgTVNSX0lSIHwgTVNSX0RSKQotREVGQVVMVF9VU0VSX01TUiA9IChERUZBVUxUX01TUiB8IE1TUl9QUikKLUNSX0xUID0gMHg4MDAwMDAwMAotQ1JfR1QgPSAweDQwMDAwMDAwCi1DUl9FUSA9IDB4MjAwMDAwMDAKLUNSX1NPID0gMHgxMDAwMDAwMAotQ1JfRlggPSAweDA4MDAwMDAwCi1DUl9GRVggPSAweDA0MDAwMDAwCi1DUl9WWCA9IDB4MDIwMDAwMDAKLUNSX09YID0gMHgwMTAwMDAwMAotWEVSX1NPID0gMHg4MDAwMDAwMAotWEVSX09WID0gMHg0MDAwMDAwMAotWEVSX0NBID0gMHgyMDAwMDAwMAotZGVmIFhFUl9DT01QX0JZVEUoeGVyKTogcmV0dXJuICgoeGVyID4+IDgpICYgMHgwMDAwMDBGRikKLQotZGVmIFhFUl9MRU5HVEgoeGVyKTogcmV0dXJuICh4ZXIgJiAweDAwMDAwMDdGKQotCi1EU0lTUl9JTyA9IDB4ODAwMDAwMDAKLURTSVNSX1BGVCA9IDB4NDAwMDAwMDAKLURTSVNSX0xPQ0sgPSAweDIwMDAwMDAwCi1EU0lTUl9GUElPID0gMHgxMDAwMDAwMAotRFNJU1JfUFJPVCA9IDB4MDgwMDAwMDAKLURTSVNSX0xPT1AgPSAweDA0MDAwMDAwCi1EU0lTUl9EUlNUID0gMHgwNDAwMDAwMAotRFNJU1JfU1QgPSAweDAyMDAwMDAwCi1EU0lTUl9TRUdCID0gMHgwMTAwMDAwMAotRFNJU1JfREFCUiA9IDB4MDA0MDAwMDAKLURTSVNSX0VBUiA9IDB4MDAxMDAwMDAKLVNSUl9JU19QRlQgPSAweDQwMDAwMDAwCi1TUlJfSVNfSVNQRUMgPSAweDIwMDAwMDAwCi1TUlJfSVNfSUlPID0gMHgxMDAwMDAwMAotU1JSX0lTX0dVQVJEID0gMHgxMDAwMDAwMAotU1JSX0lTX1BST1QgPSAweDA4MDAwMDAwCi1TUlJfSVNfTE9PUCA9IDB4MDQwMDAwMDAKLVNSUl9QUl9GUEVOID0gMHgwMDEwMDAwMAotU1JSX1BSX0lOVkFMID0gMHgwMDA4MDAwMAotU1JSX1BSX1BSSVYgPSAweDAwMDQwMDAwCi1TUlJfUFJfVFJBUCA9IDB4MDAwMjAwMDAKLVNSUl9QUl9JTVBSRSA9IDB4MDAwMTAwMDAKLWRlZiBCVUlEXzdGX1NSVkFMKHJhZGRyKTogcmV0dXJuICgweDg3RjAwMDAwIHwgKCgodWludCkocmFkZHIpKSA+PiAyOCkpCi0KLUJUXzI1Nk0gPSAweDFGRkMKLUJUXzEyOE0gPSAweDBGRkMKLUJUXzY0TSA9IDB4MDdGQwotQlRfMzJNID0gMHgwM0ZDCi1CVF8xNk0gPSAweDAxRkMKLUJUXzhNID0gMHgwMEZDCi1CVF80TSA9IDB4MDA3QwotQlRfMk0gPSAweDAwM0MKLUJUXzFNID0gMHgwMDFDCi1CVF81MTJLID0gMHgwMDBDCi1CVF8yNTZLID0gMHgwMDA0Ci1CVF8xMjhLID0gMHgwMDAwCi1CVF9OT0FDQ0VTUyA9IDB4MAotQlRfUkRPTkxZID0gMHgxCi1CVF9XUklURSA9IDB4MgotQlRfVlMgPSAweDIKLUJUX1ZQID0gMHgxCi1kZWYgQkFUX0VTRUcoZGJhdHUpOiByZXR1cm4gKCgodWludCkoZGJhdHUpID4+IDI4KSkKLQotTUlOX0JBVF9TSVpFID0gMHgwMDAyMDAwMAotTUFYX0JBVF9TSVpFID0gMHgxMDAwMDAwMAotZGVmIG50b2hsKHgpOiByZXR1cm4gKHgpCi0KLWRlZiBudG9ocyh4KTogcmV0dXJuICh4KQotCi1kZWYgaHRvbmwoeCk6IHJldHVybiAoeCkKLQotZGVmIGh0b25zKHgpOiByZXR1cm4gKHgpCi0KLUlQUFJPVE9fSVAgPSAwCi1JUFBST1RPX0lDTVAgPSAxCi1JUFBST1RPX0lHTVAgPSAyCi1JUFBST1RPX0dHUCA9IDMKLUlQUFJPVE9fVENQID0gNgotSVBQUk9UT19FR1AgPSA4Ci1JUFBST1RPX1BVUCA9IDEyCi1JUFBST1RPX1VEUCA9IDE3Ci1JUFBST1RPX0lEUCA9IDIyCi1JUFBST1RPX1RQID0gMjkKLUlQUFJPVE9fTE9DQUwgPSA2MwotSVBQUk9UT19FT04gPSA4MAotSVBQUk9UT19CSVAgPSAweDUzCi1JUFBST1RPX1JBVyA9IDI1NQotSVBQUk9UT19NQVggPSAyNTYKLUlQUE9SVF9SRVNFUlZFRCA9IDEwMjQKLUlQUE9SVF9VU0VSUkVTRVJWRUQgPSA1MDAwCi1JUFBPUlRfVElNRVNFUlZFUiA9IDM3Ci1kZWYgSU5fQ0xBU1NBKGkpOiByZXR1cm4gKCgoaW50KShpKSAmIDB4ODAwMDAwMDApID09IDApCi0KLUlOX0NMQVNTQV9ORVQgPSAweGZmMDAwMDAwCi1JTl9DTEFTU0FfTlNISUZUID0gMjQKLUlOX0NMQVNTQV9IT1NUID0gMHgwMGZmZmZmZgotSU5fQ0xBU1NBX01BWCA9IDEyOAotZGVmIElOX0NMQVNTQihpKTogcmV0dXJuICgoKGludCkoaSkgJiAweGMwMDAwMDAwKSA9PSAweDgwMDAwMDAwKQotCi1JTl9DTEFTU0JfTkVUID0gMHhmZmZmMDAwMAotSU5fQ0xBU1NCX05TSElGVCA9IDE2Ci1JTl9DTEFTU0JfSE9TVCA9IDB4MDAwMGZmZmYKLUlOX0NMQVNTQl9NQVggPSA2NTUzNgotZGVmIElOX0NMQVNTQyhpKTogcmV0dXJuICgoKGludCkoaSkgJiAweGUwMDAwMDAwKSA9PSAweGMwMDAwMDAwKQotCi1JTl9DTEFTU0NfTkVUID0gMHhmZmZmZmYwMAotSU5fQ0xBU1NDX05TSElGVCA9IDgKLUlOX0NMQVNTQ19IT1NUID0gMHgwMDAwMDBmZgotZGVmIElOX0NMQVNTRChpKTogcmV0dXJuICgoKGludCkoaSkgJiAweGYwMDAwMDAwKSA9PSAweGUwMDAwMDAwKQotCi1kZWYgSU5fTVVMVElDQVNUKGkpOiByZXR1cm4gSU5fQ0xBU1NEKGkpCi0KLUlOX0NMQVNTRF9ORVQgPSAweGYwMDAwMDAwCi1JTl9DTEFTU0RfTlNISUZUID0gMjgKLUlOX0NMQVNTRF9IT1NUID0gMHgwZmZmZmZmZgotSU5BRERSX1VOU1BFQ19HUk9VUCA9IDB4ZTAwMDAwMDAKLUlOQUREUl9BTExIT1NUU19HUk9VUCA9IDB4ZTAwMDAwMDEKLUlOQUREUl9NQVhfTE9DQUxfR1JPVVAgPSAweGUwMDAwMGZmCi1kZWYgSU5fRVhQRVJJTUVOVEFMKGkpOiByZXR1cm4gKCgoaW50KShpKSAmIDB4ZTAwMDAwMDApID09IDB4ZTAwMDAwMDApCi0KLWRlZiBJTl9CQURDTEFTUyhpKTogcmV0dXJuICgoKGludCkoaSkgJiAweGYwMDAwMDAwKSA9PSAweGYwMDAwMDAwKQotCi1JTkFERFJfQU5ZID0gMHgwMDAwMDAwMAotSU5BRERSX0JST0FEQ0FTVCA9IDB4ZmZmZmZmZmYKLUlOQUREUl9MT09QQkFDSyA9IDB4N2YwMDAwMDEKLUlOQUREUl9OT05FID0gMHhmZmZmZmZmZgotSU5fTE9PUEJBQ0tORVQgPSAxMjcKLUlQX09QVElPTlMgPSAxCi1JUF9IRFJJTkNMID0gMgotSVBfVE9TID0gMwotSVBfVFRMID0gNAotSVBfUkVDVk9QVFMgPSA1Ci1JUF9SRUNWUkVUT1BUUyA9IDYKLUlQX1JFQ1ZEU1RBRERSID0gNwotSVBfUkVUT1BUUyA9IDgKLUlQX01VTFRJQ0FTVF9JRiA9IDkKLUlQX01VTFRJQ0FTVF9UVEwgPSAxMAotSVBfTVVMVElDQVNUX0xPT1AgPSAxMQotSVBfQUREX01FTUJFUlNISVAgPSAxMgotSVBfRFJPUF9NRU1CRVJTSElQID0gMTMKLUlQX0RFRkFVTFRfTVVMVElDQVNUX1RUTCA9IDEKLUlQX0RFRkFVTFRfTVVMVElDQVNUX0xPT1AgPSAxCi1JUF9NQVhfTUVNQkVSU0hJUFMgPSAyMApkaWZmIC0tZ2l0IGEvTGliL3BsYXQtYWl4NC9yZWdlbiBiL0xpYi9wbGF0LWFpeDQvcmVnZW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDU3YTcxYzQuLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtYWl4NC9yZWdlbgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotIyEgL2Jpbi9zaAotY2FzZSBgdW5hbWUgLXN2YCBpbgotJ0FJWCA0JyopICA7OwotKikgICAgICBlY2hvIFByb2JhYmx5IG5vdCBvbiBhbiBBSVggNCBzeXN0ZW0gMT4mMgotICAgICAgICBleGl0IDE7OwotZXNhYwotc2V0IC12Ci1oMnB5LnB5IC1pICcodV9sb25nKScgL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaApkaWZmIC0tZ2l0IGEvTGliL3BsYXQtZGFyd2luL0lOLnB5IGIvTGliL3BsYXQtZGFyd2luL0lOLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YjZiZTMzLi4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LWRhcndpbi9JTi5weQorKysgL2Rldi9udWxsCkBAIC0xLDY2MiArMCwwIEBACi0jIEdlbmVyYXRlZCBieSBoMnB5IGZyb20gL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2FwcGxlYXBpb3B0cy5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvX3R5cGVzLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9jZGVmcy5oCi1kZWYgX19QKHByb3Rvcyk6IHJldHVybiBwcm90b3MKLQotZGVmIF9fU1RSSU5HKHgpOiByZXR1cm4gI3gKLQotZGVmIF9fUChwcm90b3MpOiByZXR1cm4gKCkKLQotZGVmIF9fU1RSSU5HKHgpOiByZXR1cm4gIngiCi0KLWRlZiBfX2F0dHJpYnV0ZV9fKHgpOiByZXR1cm4KLQotZGVmIF9fQ09QWVJJR0hUKHMpOiByZXR1cm4gX19JRFNUUklORyhjb3B5cmlnaHQscykKLQotZGVmIF9fUkNTSUQocyk6IHJldHVybiBfX0lEU1RSSU5HKHJjc2lkLHMpCi0KLWRlZiBfX1NDQ1NJRChzKTogcmV0dXJuIF9fSURTVFJJTkcoc2Njc2lkLHMpCi0KLWRlZiBfX1BST0pFQ1RfVkVSU0lPTihzKTogcmV0dXJuIF9fSURTVFJJTkcocHJvamVjdF92ZXJzaW9uLHMpCi0KLV9fREFSV0lOX1VOSVgwMyA9IDEKLV9fREFSV0lOX1VOSVgwMyA9IDAKLV9fREFSV0lOX1VOSVgwMyA9IDAKLV9fREFSV0lOX1VOSVgwMyA9IDEKLV9fREFSV0lOXzY0X0JJVF9JTk9fVCA9IDEKLV9fREFSV0lOXzY0X0JJVF9JTk9fVCA9IDAKLV9fREFSV0lOXzY0X0JJVF9JTk9fVCA9IDAKLV9fREFSV0lOX05PTl9DQU5DRUxBQkxFID0gMAotX19EQVJXSU5fVkVSU18xMDUwID0gMQotX19EQVJXSU5fVkVSU18xMDUwID0gMAotX19EQVJXSU5fU1VGX1VOSVgwMyA9ICIkVU5JWDIwMDMiCi1fX0RBUldJTl9TVUZfVU5JWDAzX1NFVCA9IDEKLV9fREFSV0lOX1NVRl9VTklYMDNfU0VUID0gMAotX19EQVJXSU5fU1VGXzY0X0JJVF9JTk9fVCA9ICIkSU5PREU2NCIKLV9fREFSV0lOX1NVRl9OT05fQ0FOQ0VMQUJMRSA9ICIkTk9DQU5DRUwiCi1fX0RBUldJTl9TVUZfMTA1MCA9ICIkMTA1MCIKLV9fREFSV0lOX1NVRl9VTklYMDNfU0VUID0gMAotX19EQVJXSU5fU1VGX0VYVFNOID0gIiREQVJXSU5fRVhUU04iCi1fX0RBUldJTl9MT05HX0RPVUJMRV9JU19ET1VCTEUgPSAwCi1kZWYgX19EQVJXSU5fTERCTF9DT01QQVQoeCk6IHJldHVybgotCi1kZWYgX19EQVJXSU5fTERCTF9DT01QQVQyKHgpOiByZXR1cm4KLQotX19EQVJXSU5fTE9OR19ET1VCTEVfSVNfRE9VQkxFID0gMQotZGVmIF9fREFSV0lOX0xEQkxfQ09NUEFUKHgpOiByZXR1cm4KLQotZGVmIF9fREFSV0lOX0xEQkxfQ09NUEFUMih4KTogcmV0dXJuCi0KLV9fREFSV0lOX0xPTkdfRE9VQkxFX0lTX0RPVUJMRSA9IDAKLV9EQVJXSU5fRkVBVFVSRV9MT05HX0RPVUJMRV9JU19ET1VCTEUgPSAxCi1fREFSV0lOX0ZFQVRVUkVfVU5JWF9DT05GT1JNQU5DRSA9IDMKLV9EQVJXSU5fRkVBVFVSRV82NF9CSVRfSU5PREUgPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBtYWNoaW5lL190eXBlcy5oCi1fX1BUSFJFQURfU0laRV9fID0gMTE2OAotX19QVEhSRUFEX0FUVFJfU0laRV9fID0gNTYKLV9fUFRIUkVBRF9NVVRFWEFUVFJfU0laRV9fID0gOAotX19QVEhSRUFEX01VVEVYX1NJWkVfXyA9IDU2Ci1fX1BUSFJFQURfQ09OREFUVFJfU0laRV9fID0gOAotX19QVEhSRUFEX0NPTkRfU0laRV9fID0gNDAKLV9fUFRIUkVBRF9PTkNFX1NJWkVfXyA9IDgKLV9fUFRIUkVBRF9SV0xPQ0tfU0laRV9fID0gMTkyCi1fX1BUSFJFQURfUldMT0NLQVRUUl9TSVpFX18gPSAxNgotX19QVEhSRUFEX1NJWkVfXyA9IDU5NgotX19QVEhSRUFEX0FUVFJfU0laRV9fID0gMzYKLV9fUFRIUkVBRF9NVVRFWEFUVFJfU0laRV9fID0gOAotX19QVEhSRUFEX01VVEVYX1NJWkVfXyA9IDQwCi1fX1BUSFJFQURfQ09OREFUVFJfU0laRV9fID0gNAotX19QVEhSRUFEX0NPTkRfU0laRV9fID0gMjQKLV9fUFRIUkVBRF9PTkNFX1NJWkVfXyA9IDQKLV9fUFRIUkVBRF9SV0xPQ0tfU0laRV9fID0gMTI0Ci1fX1BUSFJFQURfUldMT0NLQVRUUl9TSVpFX18gPSAxMgotX19EQVJXSU5fTlVMTCA9IDAKLQotIyBJbmNsdWRlZCBmcm9tIHN0ZGludC5oCi1fX1dPUkRTSVpFID0gNjQKLV9fV09SRFNJWkUgPSAzMgotSU5UOF9NQVggPSAxMjcKLUlOVDE2X01BWCA9IDMyNzY3Ci1JTlQzMl9NQVggPSAyMTQ3NDgzNjQ3Ci1JTlQ4X01JTiA9IC0xMjgKLUlOVDE2X01JTiA9IC0zMjc2OAotSU5UMzJfTUlOID0gKC1JTlQzMl9NQVgtMSkKLVVJTlQ4X01BWCA9IDI1NQotVUlOVDE2X01BWCA9IDY1NTM1Ci1JTlRfTEVBU1Q4X01JTiA9IElOVDhfTUlOCi1JTlRfTEVBU1QxNl9NSU4gPSBJTlQxNl9NSU4KLUlOVF9MRUFTVDMyX01JTiA9IElOVDMyX01JTgotSU5UX0xFQVNUOF9NQVggPSBJTlQ4X01BWAotSU5UX0xFQVNUMTZfTUFYID0gSU5UMTZfTUFYCi1JTlRfTEVBU1QzMl9NQVggPSBJTlQzMl9NQVgKLVVJTlRfTEVBU1Q4X01BWCA9IFVJTlQ4X01BWAotVUlOVF9MRUFTVDE2X01BWCA9IFVJTlQxNl9NQVgKLUlOVF9GQVNUOF9NSU4gPSBJTlQ4X01JTgotSU5UX0ZBU1QxNl9NSU4gPSBJTlQxNl9NSU4KLUlOVF9GQVNUMzJfTUlOID0gSU5UMzJfTUlOCi1JTlRfRkFTVDhfTUFYID0gSU5UOF9NQVgKLUlOVF9GQVNUMTZfTUFYID0gSU5UMTZfTUFYCi1JTlRfRkFTVDMyX01BWCA9IElOVDMyX01BWAotVUlOVF9GQVNUOF9NQVggPSBVSU5UOF9NQVgKLVVJTlRfRkFTVDE2X01BWCA9IFVJTlQxNl9NQVgKLUlOVFBUUl9NSU4gPSBJTlQzMl9NSU4KLUlOVFBUUl9NQVggPSBJTlQzMl9NQVgKLVBUUkRJRkZfTUlOID0gSU5UMzJfTUlOCi1QVFJESUZGX01BWCA9IElOVDMyX01BWAotV0NIQVJfTUFYID0gMHg3ZmZmZmZmZgotV0NIQVJfTUlOID0gMAotV0NIQVJfTUlOID0gKC1XQ0hBUl9NQVgtMSkKLVdJTlRfTUlOID0gSU5UMzJfTUlOCi1XSU5UX01BWCA9IElOVDMyX01BWAotU0lHX0FUT01JQ19NSU4gPSBJTlQzMl9NSU4KLVNJR19BVE9NSUNfTUFYID0gSU5UMzJfTUFYCi1kZWYgSU5UOF9DKHYpOiByZXR1cm4gKHYpCi0KLWRlZiBJTlQxNl9DKHYpOiByZXR1cm4gKHYpCi0KLWRlZiBJTlQzMl9DKHYpOiByZXR1cm4gKHYpCi0KLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9zb2NrZXQuaAotCi0jIEluY2x1ZGVkIGZyb20gbWFjaGluZS9fcGFyYW0uaAotU09DS19TVFJFQU0gPSAxCi1TT0NLX0RHUkFNID0gMgotU09DS19SQVcgPSAzCi1TT0NLX1JETSA9IDQKLVNPQ0tfU0VRUEFDS0VUID0gNQotU09fREVCVUcgPSAweDAwMDEKLVNPX0FDQ0VQVENPTk4gPSAweDAwMDIKLVNPX1JFVVNFQUREUiA9IDB4MDAwNAotU09fS0VFUEFMSVZFID0gMHgwMDA4Ci1TT19ET05UUk9VVEUgPSAweDAwMTAKLVNPX0JST0FEQ0FTVCA9IDB4MDAyMAotU09fVVNFTE9PUEJBQ0sgPSAweDAwNDAKLVNPX0xJTkdFUiA9IDB4MDA4MAotU09fTElOR0VSID0gMHgxMDgwCi1TT19PT0JJTkxJTkUgPSAweDAxMDAKLVNPX1JFVVNFUE9SVCA9IDB4MDIwMAotU09fVElNRVNUQU1QID0gMHgwNDAwCi1TT19BQ0NFUFRGSUxURVIgPSAweDEwMDAKLVNPX0RPTlRUUlVOQyA9IDB4MjAwMAotU09fV0FOVE1PUkUgPSAweDQwMDAKLVNPX1dBTlRPT0JGTEFHID0gMHg4MDAwCi1TT19TTkRCVUYgPSAweDEwMDEKLVNPX1JDVkJVRiA9IDB4MTAwMgotU09fU05ETE9XQVQgPSAweDEwMDMKLVNPX1JDVkxPV0FUID0gMHgxMDA0Ci1TT19TTkRUSU1FTyA9IDB4MTAwNQotU09fUkNWVElNRU8gPSAweDEwMDYKLVNPX0VSUk9SID0gMHgxMDA3Ci1TT19UWVBFID0gMHgxMDA4Ci1TT19OUkVBRCA9IDB4MTAyMAotU09fTktFID0gMHgxMDIxCi1TT19OT1NJR1BJUEUgPSAweDEwMjIKLVNPX05PQUREUkVSUiA9IDB4MTAyMwotU09fTldSSVRFID0gMHgxMDI0Ci1TT19SRVVTRVNIQVJFVUlEID0gMHgxMDI1Ci1TT19OT1RJRllDT05GTElDVCA9IDB4MTAyNgotU09fTElOR0VSX1NFQyA9IDB4MTA4MAotU09fUkVTVFJJQ1RJT05TID0gMHgxMDgxCi1TT19SRVNUUklDVF9ERU5ZSU4gPSAweDAwMDAwMDAxCi1TT19SRVNUUklDVF9ERU5ZT1VUID0gMHgwMDAwMDAwMgotU09fUkVTVFJJQ1RfREVOWVNFVCA9ICgtMjE0NzQ4MzY0OCkKLVNPX0xBQkVMID0gMHgxMDEwCi1TT19QRUVSTEFCRUwgPSAweDEwMTEKLVNPTF9TT0NLRVQgPSAweGZmZmYKLUFGX1VOU1BFQyA9IDAKLUFGX1VOSVggPSAxCi1BRl9MT0NBTCA9IEFGX1VOSVgKLUFGX0lORVQgPSAyCi1BRl9JTVBMSU5LID0gMwotQUZfUFVQID0gNAotQUZfQ0hBT1MgPSA1Ci1BRl9OUyA9IDYKLUFGX0lTTyA9IDcKLUFGX09TSSA9IEFGX0lTTwotQUZfRUNNQSA9IDgKLUFGX0RBVEFLSVQgPSA5Ci1BRl9DQ0lUVCA9IDEwCi1BRl9TTkEgPSAxMQotQUZfREVDbmV0ID0gMTIKLUFGX0RMSSA9IDEzCi1BRl9MQVQgPSAxNAotQUZfSFlMSU5LID0gMTUKLUFGX0FQUExFVEFMSyA9IDE2Ci1BRl9ST1VURSA9IDE3Ci1BRl9MSU5LID0gMTgKLXBzZXVkb19BRl9YVFAgPSAxOQotQUZfQ09JUCA9IDIwCi1BRl9DTlQgPSAyMQotcHNldWRvX0FGX1JUSVAgPSAyMgotQUZfSVBYID0gMjMKLUFGX1NJUCA9IDI0Ci1wc2V1ZG9fQUZfUElQID0gMjUKLUFGX05EUlYgPSAyNwotQUZfSVNETiA9IDI4Ci1BRl9FMTY0ID0gQUZfSVNETgotcHNldWRvX0FGX0tFWSA9IDI5Ci1BRl9JTkVUNiA9IDMwCi1BRl9OQVRNID0gMzEKLUFGX1NZU1RFTSA9IDMyCi1BRl9ORVRCSU9TID0gMzMKLUFGX1BQUCA9IDM0Ci1BRl9BVE0gPSAzMAotcHNldWRvX0FGX0hEUkNNUExUID0gMzUKLUFGX1JFU0VSVkVEXzM2ID0gMzYKLUFGX05FVEdSQVBIID0gMzIKLUFGX01BWCA9IDM3Ci1TT0NLX01BWEFERFJMRU4gPSAyNTUKLV9TU19NQVhTSVpFID0gMTI4Ci1QRl9VTlNQRUMgPSBBRl9VTlNQRUMKLVBGX0xPQ0FMID0gQUZfTE9DQUwKLVBGX1VOSVggPSBQRl9MT0NBTAotUEZfSU5FVCA9IEFGX0lORVQKLVBGX0lNUExJTksgPSBBRl9JTVBMSU5LCi1QRl9QVVAgPSBBRl9QVVAKLVBGX0NIQU9TID0gQUZfQ0hBT1MKLVBGX05TID0gQUZfTlMKLVBGX0lTTyA9IEFGX0lTTwotUEZfT1NJID0gQUZfSVNPCi1QRl9FQ01BID0gQUZfRUNNQQotUEZfREFUQUtJVCA9IEFGX0RBVEFLSVQKLVBGX0NDSVRUID0gQUZfQ0NJVFQKLVBGX1NOQSA9IEFGX1NOQQotUEZfREVDbmV0ID0gQUZfREVDbmV0Ci1QRl9ETEkgPSBBRl9ETEkKLVBGX0xBVCA9IEFGX0xBVAotUEZfSFlMSU5LID0gQUZfSFlMSU5LCi1QRl9BUFBMRVRBTEsgPSBBRl9BUFBMRVRBTEsKLVBGX1JPVVRFID0gQUZfUk9VVEUKLVBGX0xJTksgPSBBRl9MSU5LCi1QRl9YVFAgPSBwc2V1ZG9fQUZfWFRQCi1QRl9DT0lQID0gQUZfQ09JUAotUEZfQ05UID0gQUZfQ05UCi1QRl9TSVAgPSBBRl9TSVAKLVBGX0lQWCA9IEFGX0lQWAotUEZfUlRJUCA9IHBzZXVkb19BRl9SVElQCi1QRl9QSVAgPSBwc2V1ZG9fQUZfUElQCi1QRl9ORFJWID0gQUZfTkRSVgotUEZfSVNETiA9IEFGX0lTRE4KLVBGX0tFWSA9IHBzZXVkb19BRl9LRVkKLVBGX0lORVQ2ID0gQUZfSU5FVDYKLVBGX05BVE0gPSBBRl9OQVRNCi1QRl9TWVNURU0gPSBBRl9TWVNURU0KLVBGX05FVEJJT1MgPSBBRl9ORVRCSU9TCi1QRl9QUFAgPSBBRl9QUFAKLVBGX1JFU0VSVkVEXzM2ID0gQUZfUkVTRVJWRURfMzYKLVBGX0FUTSA9IEFGX0FUTQotUEZfTkVUR1JBUEggPSBBRl9ORVRHUkFQSAotUEZfTUFYID0gQUZfTUFYCi1ORVRfTUFYSUQgPSBBRl9NQVgKLU5FVF9SVF9EVU1QID0gMQotTkVUX1JUX0ZMQUdTID0gMgotTkVUX1JUX0lGTElTVCA9IDMKLU5FVF9SVF9TVEFUID0gNAotTkVUX1JUX1RSQVNIID0gNQotTkVUX1JUX0lGTElTVDIgPSA2Ci1ORVRfUlRfRFVNUDIgPSA3Ci1ORVRfUlRfTUFYSUQgPSA4Ci1TT01BWENPTk4gPSAxMjgKLU1TR19PT0IgPSAweDEKLU1TR19QRUVLID0gMHgyCi1NU0dfRE9OVFJPVVRFID0gMHg0Ci1NU0dfRU9SID0gMHg4Ci1NU0dfVFJVTkMgPSAweDEwCi1NU0dfQ1RSVU5DID0gMHgyMAotTVNHX1dBSVRBTEwgPSAweDQwCi1NU0dfRE9OVFdBSVQgPSAweDgwCi1NU0dfRU9GID0gMHgxMDAKLU1TR19XQUlUU1RSRUFNID0gMHgyMDAKLU1TR19GTFVTSCA9IDB4NDAwCi1NU0dfSE9MRCA9IDB4ODAwCi1NU0dfU0VORCA9IDB4MTAwMAotTVNHX0hBVkVNT1JFID0gMHgyMDAwCi1NU0dfUkNWTU9SRSA9IDB4NDAwMAotTVNHX05FRURTQSA9IDB4MTAwMDAKLUNNR1JPVVBfTUFYID0gMTYKLVNDTV9SSUdIVFMgPSAweDAxCi1TQ01fVElNRVNUQU1QID0gMHgwMgotU0NNX0NSRURTID0gMHgwMwotU0hVVF9SRCA9IDAKLVNIVVRfV1IgPSAxCi1TSFVUX1JEV1IgPSAyCi0KLSMgSW5jbHVkZWQgZnJvbSBtYWNoaW5lL2VuZGlhbi5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvX2VuZGlhbi5oCi1kZWYgbnRvaGwoeCk6IHJldHVybiAoeCkKLQotZGVmIG50b2hzKHgpOiByZXR1cm4gKHgpCi0KLWRlZiBodG9ubCh4KTogcmV0dXJuICh4KQotCi1kZWYgaHRvbnMoeCk6IHJldHVybiAoeCkKLQotZGVmIE5UT0hMKHgpOiByZXR1cm4gKHgpCi0KLWRlZiBOVE9IUyh4KTogcmV0dXJuICh4KQotCi1kZWYgSFRPTkwoeCk6IHJldHVybiAoeCkKLQotZGVmIEhUT05TKHgpOiByZXR1cm4gKHgpCi0KLQotIyBJbmNsdWRlZCBmcm9tIGxpYmtlcm4vX09TQnl0ZU9yZGVyLmgKLWRlZiBfX0RBUldJTl9PU1N3YXBDb25zdEludDE2KHgpOiByZXR1cm4gXAotCi1kZWYgX19EQVJXSU5fT1NTd2FwQ29uc3RJbnQzMih4KTogcmV0dXJuIFwKLQotZGVmIF9fREFSV0lOX09TU3dhcENvbnN0SW50NjQoeCk6IHJldHVybiBcCi0KLQotIyBJbmNsdWRlZCBmcm9tIGxpYmtlcm4vaTM4Ni9fT1NCeXRlT3JkZXIuaAotZGVmIF9fREFSV0lOX09TU3dhcEludDE2KHgpOiByZXR1cm4gXAotCi1kZWYgX19EQVJXSU5fT1NTd2FwSW50MzIoeCk6IHJldHVybiBcCi0KLWRlZiBfX0RBUldJTl9PU1N3YXBJbnQ2NCh4KTogcmV0dXJuIFwKLQotZGVmIF9fREFSV0lOX09TU3dhcEludDE2KHgpOiByZXR1cm4gX09TU3dhcEludDE2KHgpCi0KLWRlZiBfX0RBUldJTl9PU1N3YXBJbnQzMih4KTogcmV0dXJuIF9PU1N3YXBJbnQzMih4KQotCi1kZWYgX19EQVJXSU5fT1NTd2FwSW50NjQoeCk6IHJldHVybiBfT1NTd2FwSW50NjQoeCkKLQotZGVmIG50b2hzKHgpOiByZXR1cm4gX19EQVJXSU5fT1NTd2FwSW50MTYoeCkKLQotZGVmIGh0b25zKHgpOiByZXR1cm4gX19EQVJXSU5fT1NTd2FwSW50MTYoeCkKLQotZGVmIG50b2hsKHgpOiByZXR1cm4gX19EQVJXSU5fT1NTd2FwSW50MzIoeCkKLQotZGVmIGh0b25sKHgpOiByZXR1cm4gX19EQVJXSU5fT1NTd2FwSW50MzIoeCkKLQotSVBQUk9UT19JUCA9IDAKLUlQUFJPVE9fSE9QT1BUUyA9IDAKLUlQUFJPVE9fSUNNUCA9IDEKLUlQUFJPVE9fSUdNUCA9IDIKLUlQUFJPVE9fR0dQID0gMwotSVBQUk9UT19JUFY0ID0gNAotSVBQUk9UT19JUElQID0gSVBQUk9UT19JUFY0Ci1JUFBST1RPX1RDUCA9IDYKLUlQUFJPVE9fU1QgPSA3Ci1JUFBST1RPX0VHUCA9IDgKLUlQUFJPVE9fUElHUCA9IDkKLUlQUFJPVE9fUkNDTU9OID0gMTAKLUlQUFJPVE9fTlZQSUkgPSAxMQotSVBQUk9UT19QVVAgPSAxMgotSVBQUk9UT19BUkdVUyA9IDEzCi1JUFBST1RPX0VNQ09OID0gMTQKLUlQUFJPVE9fWE5FVCA9IDE1Ci1JUFBST1RPX0NIQU9TID0gMTYKLUlQUFJPVE9fVURQID0gMTcKLUlQUFJPVE9fTVVYID0gMTgKLUlQUFJPVE9fTUVBUyA9IDE5Ci1JUFBST1RPX0hNUCA9IDIwCi1JUFBST1RPX1BSTSA9IDIxCi1JUFBST1RPX0lEUCA9IDIyCi1JUFBST1RPX1RSVU5LMSA9IDIzCi1JUFBST1RPX1RSVU5LMiA9IDI0Ci1JUFBST1RPX0xFQUYxID0gMjUKLUlQUFJPVE9fTEVBRjIgPSAyNgotSVBQUk9UT19SRFAgPSAyNwotSVBQUk9UT19JUlRQID0gMjgKLUlQUFJPVE9fVFAgPSAyOQotSVBQUk9UT19CTFQgPSAzMAotSVBQUk9UT19OU1AgPSAzMQotSVBQUk9UT19JTlAgPSAzMgotSVBQUk9UT19TRVAgPSAzMwotSVBQUk9UT18zUEMgPSAzNAotSVBQUk9UT19JRFBSID0gMzUKLUlQUFJPVE9fWFRQID0gMzYKLUlQUFJPVE9fRERQID0gMzcKLUlQUFJPVE9fQ01UUCA9IDM4Ci1JUFBST1RPX1RQWFggPSAzOQotSVBQUk9UT19JTCA9IDQwCi1JUFBST1RPX0lQVjYgPSA0MQotSVBQUk9UT19TRFJQID0gNDIKLUlQUFJPVE9fUk9VVElORyA9IDQzCi1JUFBST1RPX0ZSQUdNRU5UID0gNDQKLUlQUFJPVE9fSURSUCA9IDQ1Ci1JUFBST1RPX1JTVlAgPSA0NgotSVBQUk9UT19HUkUgPSA0NwotSVBQUk9UT19NSFJQID0gNDgKLUlQUFJPVE9fQkhBID0gNDkKLUlQUFJPVE9fRVNQID0gNTAKLUlQUFJPVE9fQUggPSA1MQotSVBQUk9UT19JTkxTUCA9IDUyCi1JUFBST1RPX1NXSVBFID0gNTMKLUlQUFJPVE9fTkhSUCA9IDU0Ci1JUFBST1RPX0lDTVBWNiA9IDU4Ci1JUFBST1RPX05PTkUgPSA1OQotSVBQUk9UT19EU1RPUFRTID0gNjAKLUlQUFJPVE9fQUhJUCA9IDYxCi1JUFBST1RPX0NGVFAgPSA2MgotSVBQUk9UT19IRUxMTyA9IDYzCi1JUFBST1RPX1NBVEVYUEFLID0gNjQKLUlQUFJPVE9fS1JZUFRPTEFOID0gNjUKLUlQUFJPVE9fUlZEID0gNjYKLUlQUFJPVE9fSVBQQyA9IDY3Ci1JUFBST1RPX0FERlMgPSA2OAotSVBQUk9UT19TQVRNT04gPSA2OQotSVBQUk9UT19WSVNBID0gNzAKLUlQUFJPVE9fSVBDViA9IDcxCi1JUFBST1RPX0NQTlggPSA3MgotSVBQUk9UT19DUEhCID0gNzMKLUlQUFJPVE9fV1NOID0gNzQKLUlQUFJPVE9fUFZQID0gNzUKLUlQUFJPVE9fQlJTQVRNT04gPSA3NgotSVBQUk9UT19ORCA9IDc3Ci1JUFBST1RPX1dCTU9OID0gNzgKLUlQUFJPVE9fV0JFWFBBSyA9IDc5Ci1JUFBST1RPX0VPTiA9IDgwCi1JUFBST1RPX1ZNVFAgPSA4MQotSVBQUk9UT19TVk1UUCA9IDgyCi1JUFBST1RPX1ZJTkVTID0gODMKLUlQUFJPVE9fVFRQID0gODQKLUlQUFJPVE9fSUdQID0gODUKLUlQUFJPVE9fREdQID0gODYKLUlQUFJPVE9fVENGID0gODcKLUlQUFJPVE9fSUdSUCA9IDg4Ci1JUFBST1RPX09TUEZJR1AgPSA4OQotSVBQUk9UT19TUlBDID0gOTAKLUlQUFJPVE9fTEFSUCA9IDkxCi1JUFBST1RPX01UUCA9IDkyCi1JUFBST1RPX0FYMjUgPSA5MwotSVBQUk9UT19JUEVJUCA9IDk0Ci1JUFBST1RPX01JQ1AgPSA5NQotSVBQUk9UT19TQ0NTUCA9IDk2Ci1JUFBST1RPX0VUSEVSSVAgPSA5NwotSVBQUk9UT19FTkNBUCA9IDk4Ci1JUFBST1RPX0FQRVMgPSA5OQotSVBQUk9UT19HTVRQID0gMTAwCi1JUFBST1RPX0lQQ09NUCA9IDEwOAotSVBQUk9UT19QSU0gPSAxMDMKLUlQUFJPVE9fUEdNID0gMTEzCi1JUFBST1RPX0RJVkVSVCA9IDI1NAotSVBQUk9UT19SQVcgPSAyNTUKLUlQUFJPVE9fTUFYID0gMjU2Ci1JUFBST1RPX0RPTkUgPSAyNTcKLV9fREFSV0lOX0lQUE9SVF9SRVNFUlZFRCA9IDEwMjQKLUlQUE9SVF9SRVNFUlZFRCA9IF9fREFSV0lOX0lQUE9SVF9SRVNFUlZFRAotSVBQT1JUX1VTRVJSRVNFUlZFRCA9IDUwMDAKLUlQUE9SVF9ISUZJUlNUQVVUTyA9IDQ5MTUyCi1JUFBPUlRfSElMQVNUQVVUTyA9IDY1NTM1Ci1JUFBPUlRfUkVTRVJWRURTVEFSVCA9IDYwMAotZGVmIElOX0NMQVNTQShpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAoLTIxNDc0ODM2NDgpKSA9PSAwKQotCi1JTl9DTEFTU0FfTkVUID0gKC0xNjc3NzIxNikKLUlOX0NMQVNTQV9OU0hJRlQgPSAyNAotSU5fQ0xBU1NBX0hPU1QgPSAweDAwZmZmZmZmCi1JTl9DTEFTU0FfTUFYID0gMTI4Ci1kZWYgSU5fQ0xBU1NCKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmICgtMTA3Mzc0MTgyNCkpID09ICgtMjE0NzQ4MzY0OCkpCi0KLUlOX0NMQVNTQl9ORVQgPSAoLTY1NTM2KQotSU5fQ0xBU1NCX05TSElGVCA9IDE2Ci1JTl9DTEFTU0JfSE9TVCA9IDB4MDAwMGZmZmYKLUlOX0NMQVNTQl9NQVggPSA2NTUzNgotZGVmIElOX0NMQVNTQyhpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAoLTUzNjg3MDkxMikpID09ICgtMTA3Mzc0MTgyNCkpCi0KLUlOX0NMQVNTQ19ORVQgPSAoLTI1NikKLUlOX0NMQVNTQ19OU0hJRlQgPSA4Ci1JTl9DTEFTU0NfSE9TVCA9IDB4MDAwMDAwZmYKLWRlZiBJTl9DTEFTU0QoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgKC0yNjg0MzU0NTYpKSA9PSAoLTUzNjg3MDkxMikpCi0KLUlOX0NMQVNTRF9ORVQgPSAoLTI2ODQzNTQ1NikKLUlOX0NMQVNTRF9OU0hJRlQgPSAyOAotSU5fQ0xBU1NEX0hPU1QgPSAweDBmZmZmZmZmCi1kZWYgSU5fTVVMVElDQVNUKGkpOiByZXR1cm4gSU5fQ0xBU1NEKGkpCi0KLWRlZiBJTl9FWFBFUklNRU5UQUwoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgKC0yNjg0MzU0NTYpKSA9PSAoLTI2ODQzNTQ1NikpCi0KLWRlZiBJTl9CQURDTEFTUyhpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAoLTI2ODQzNTQ1NikpID09ICgtMjY4NDM1NDU2KSkKLQotSU5BRERSX05PTkUgPSAoLTEpCi1kZWYgSU5fTElOS0xPQ0FMKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmIElOX0NMQVNTQl9ORVQpID09IElOX0xJTktMT0NBTE5FVE5VTSkKLQotSU5fTE9PUEJBQ0tORVQgPSAxMjcKLUlORVRfQUREUlNUUkxFTiA9IDE2Ci1JUF9PUFRJT05TID0gMQotSVBfSERSSU5DTCA9IDIKLUlQX1RPUyA9IDMKLUlQX1RUTCA9IDQKLUlQX1JFQ1ZPUFRTID0gNQotSVBfUkVDVlJFVE9QVFMgPSA2Ci1JUF9SRUNWRFNUQUREUiA9IDcKLUlQX1JFVE9QVFMgPSA4Ci1JUF9NVUxUSUNBU1RfSUYgPSA5Ci1JUF9NVUxUSUNBU1RfVFRMID0gMTAKLUlQX01VTFRJQ0FTVF9MT09QID0gMTEKLUlQX0FERF9NRU1CRVJTSElQID0gMTIKLUlQX0RST1BfTUVNQkVSU0hJUCA9IDEzCi1JUF9NVUxUSUNBU1RfVklGID0gMTQKLUlQX1JTVlBfT04gPSAxNQotSVBfUlNWUF9PRkYgPSAxNgotSVBfUlNWUF9WSUZfT04gPSAxNwotSVBfUlNWUF9WSUZfT0ZGID0gMTgKLUlQX1BPUlRSQU5HRSA9IDE5Ci1JUF9SRUNWSUYgPSAyMAotSVBfSVBTRUNfUE9MSUNZID0gMjEKLUlQX0ZBSVRIID0gMjIKLUlQX1NUUklQSERSID0gMjMKLUlQX1JFQ1ZUVEwgPSAyNAotSVBfRldfQUREID0gNDAKLUlQX0ZXX0RFTCA9IDQxCi1JUF9GV19GTFVTSCA9IDQyCi1JUF9GV19aRVJPID0gNDMKLUlQX0ZXX0dFVCA9IDQ0Ci1JUF9GV19SRVNFVExPRyA9IDQ1Ci1JUF9PTERfRldfQUREID0gNTAKLUlQX09MRF9GV19ERUwgPSA1MQotSVBfT0xEX0ZXX0ZMVVNIID0gNTIKLUlQX09MRF9GV19aRVJPID0gNTMKLUlQX09MRF9GV19HRVQgPSA1NAotSVBfTkFUX19YWFggPSA1NQotSVBfT0xEX0ZXX1JFU0VUTE9HID0gNTYKLUlQX0RVTU1ZTkVUX0NPTkZJR1VSRSA9IDYwCi1JUF9EVU1NWU5FVF9ERUwgPSA2MQotSVBfRFVNTVlORVRfRkxVU0ggPSA2MgotSVBfRFVNTVlORVRfR0VUID0gNjQKLUlQX1RSQUZGSUNfTUdUX0JBQ0tHUk9VTkQgPSA2NQotSVBfRk9SQ0VfT1VUX0lGUCA9IDY5Ci1UUkFGRklDX01HVF9TT19CQUNLR1JPVU5EID0gMHgwMDAxCi1UUkFGRklDX01HVF9TT19CR19TVVBQUkVTU0VEID0gMHgwMDAyCi1JUF9ERUZBVUxUX01VTFRJQ0FTVF9UVEwgPSAxCi1JUF9ERUZBVUxUX01VTFRJQ0FTVF9MT09QID0gMQotSVBfTUFYX01FTUJFUlNISVBTID0gMjAKLUlQX1BPUlRSQU5HRV9ERUZBVUxUID0gMAotSVBfUE9SVFJBTkdFX0hJR0ggPSAxCi1JUF9QT1JUUkFOR0VfTE9XID0gMgotSVBQUk9UT19NQVhJRCA9IChJUFBST1RPX0FIICsgMSkKLUlQQ1RMX0ZPUldBUkRJTkcgPSAxCi1JUENUTF9TRU5EUkVESVJFQ1RTID0gMgotSVBDVExfREVGVFRMID0gMwotSVBDVExfREVGTVRVID0gNAotSVBDVExfUlRFWFBJUkUgPSA1Ci1JUENUTF9SVE1JTkVYUElSRSA9IDYKLUlQQ1RMX1JUTUFYQ0FDSEUgPSA3Ci1JUENUTF9TT1VSQ0VST1VURSA9IDgKLUlQQ1RMX0RJUkVDVEVEQlJPQURDQVNUID0gOQotSVBDVExfSU5UUlFNQVhMRU4gPSAxMAotSVBDVExfSU5UUlFEUk9QUyA9IDExCi1JUENUTF9TVEFUUyA9IDEyCi1JUENUTF9BQ0NFUFRTT1VSQ0VST1VURSA9IDEzCi1JUENUTF9GQVNURk9SV0FSRElORyA9IDE0Ci1JUENUTF9LRUVQRkFJVEggPSAxNQotSVBDVExfR0lGX1RUTCA9IDE2Ci1JUENUTF9NQVhJRCA9IDE3Ci0KLSMgSW5jbHVkZWQgZnJvbSBuZXRpbmV0Ni9pbjYuaAotX19LQU1FX1ZFUlNJT04gPSAiMjAwMTA1MjgvYXBwbGUtZGFyd2luIgotSVBWNlBPUlRfUkVTRVJWRUQgPSAxMDI0Ci1JUFY2UE9SVF9BTk9OTUlOID0gNDkxNTIKLUlQVjZQT1JUX0FOT05NQVggPSA2NTUzNQotSVBWNlBPUlRfUkVTRVJWRURNSU4gPSA2MDAKLUlQVjZQT1JUX1JFU0VSVkVETUFYID0gKElQVjZQT1JUX1JFU0VSVkVELTEpCi1JTkVUNl9BRERSU1RSTEVOID0gNDYKLWRlZiBJTjZfSVNfQUREUl9VTlNQRUNJRklFRChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX0xPT1BCQUNLKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfVjRDT01QQVQoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9WNE1BUFBFRChhKTogcmV0dXJuIFwKLQotX19JUFY2X0FERFJfU0NPUEVfTk9ERUxPQ0FMID0gMHgwMQotX19JUFY2X0FERFJfU0NPUEVfTElOS0xPQ0FMID0gMHgwMgotX19JUFY2X0FERFJfU0NPUEVfU0lURUxPQ0FMID0gMHgwNQotX19JUFY2X0FERFJfU0NPUEVfT1JHTE9DQUwgPSAweDA4Ci1fX0lQVjZfQUREUl9TQ09QRV9HTE9CQUwgPSAweDBlCi1kZWYgSU42X0lTX0FERFJfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfU0lURUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTk9ERUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfU0lURUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfT1JHTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19HTE9CQUwoYSk6IHJldHVybiBcCi0KLUlQVjZfT1BUSU9OUyA9IDEKLUlQVjZfUkVDVk9QVFMgPSA1Ci1JUFY2X1JFQ1ZSRVRPUFRTID0gNgotSVBWNl9SRUNWRFNUQUREUiA9IDcKLUlQVjZfUkVUT1BUUyA9IDgKLUlQVjZfU09DS09QVF9SRVNFUlZFRDEgPSAzCi1JUFY2X1VOSUNBU1RfSE9QUyA9IDQKLUlQVjZfTVVMVElDQVNUX0lGID0gOQotSVBWNl9NVUxUSUNBU1RfSE9QUyA9IDEwCi1JUFY2X01VTFRJQ0FTVF9MT09QID0gMTEKLUlQVjZfSk9JTl9HUk9VUCA9IDEyCi1JUFY2X0xFQVZFX0dST1VQID0gMTMKLUlQVjZfUE9SVFJBTkdFID0gMTQKLUlDTVA2X0ZJTFRFUiA9IDE4Ci1JUFY2X1BLVElORk8gPSAxOQotSVBWNl9IT1BMSU1JVCA9IDIwCi1JUFY2X05FWFRIT1AgPSAyMQotSVBWNl9IT1BPUFRTID0gMjIKLUlQVjZfRFNUT1BUUyA9IDIzCi1JUFY2X1JUSERSID0gMjQKLUlQVjZfUEtUT1BUSU9OUyA9IDI1Ci1JUFY2X0NIRUNLU1VNID0gMjYKLUlQVjZfVjZPTkxZID0gMjcKLUlQVjZfQklORFY2T05MWSA9IElQVjZfVjZPTkxZCi1JUFY2X0lQU0VDX1BPTElDWSA9IDI4Ci1JUFY2X0ZBSVRIID0gMjkKLUlQVjZfRldfQUREID0gMzAKLUlQVjZfRldfREVMID0gMzEKLUlQVjZfRldfRkxVU0ggPSAzMgotSVBWNl9GV19aRVJPID0gMzMKLUlQVjZfRldfR0VUID0gMzQKLUlQVjZfUlRIRFJfTE9PU0UgPSAwCi1JUFY2X1JUSERSX1NUUklDVCA9IDEKLUlQVjZfUlRIRFJfVFlQRV8wID0gMAotSVBWNl9ERUZBVUxUX01VTFRJQ0FTVF9IT1BTID0gMQotSVBWNl9ERUZBVUxUX01VTFRJQ0FTVF9MT09QID0gMQotSVBWNl9QT1JUUkFOR0VfREVGQVVMVCA9IDAKLUlQVjZfUE9SVFJBTkdFX0hJR0ggPSAxCi1JUFY2X1BPUlRSQU5HRV9MT1cgPSAyCi1JUFY2UFJPVE9fTUFYSUQgPSAoSVBQUk9UT19QSU0gKyAxKQotSVBWNkNUTF9GT1JXQVJESU5HID0gMQotSVBWNkNUTF9TRU5EUkVESVJFQ1RTID0gMgotSVBWNkNUTF9ERUZITElNID0gMwotSVBWNkNUTF9ERUZNVFUgPSA0Ci1JUFY2Q1RMX0ZPUldTUkNSVCA9IDUKLUlQVjZDVExfU1RBVFMgPSA2Ci1JUFY2Q1RMX01SVFNUQVRTID0gNwotSVBWNkNUTF9NUlRQUk9UTyA9IDgKLUlQVjZDVExfTUFYRlJBR1BBQ0tFVFMgPSA5Ci1JUFY2Q1RMX1NPVVJDRUNIRUNLID0gMTAKLUlQVjZDVExfU09VUkNFQ0hFQ0tfTE9HSU5UID0gMTEKLUlQVjZDVExfQUNDRVBUX1JUQURWID0gMTIKLUlQVjZDVExfS0VFUEZBSVRIID0gMTMKLUlQVjZDVExfTE9HX0lOVEVSVkFMID0gMTQKLUlQVjZDVExfSERSTkVTVExJTUlUID0gMTUKLUlQVjZDVExfREFEX0NPVU5UID0gMTYKLUlQVjZDVExfQVVUT19GTE9XTEFCRUwgPSAxNwotSVBWNkNUTF9ERUZNQ0FTVEhMSU0gPSAxOAotSVBWNkNUTF9HSUZfSExJTSA9IDE5Ci1JUFY2Q1RMX0tBTUVfVkVSU0lPTiA9IDIwCi1JUFY2Q1RMX1VTRV9ERVBSRUNBVEVEID0gMjEKLUlQVjZDVExfUlJfUFJVTkUgPSAyMgotSVBWNkNUTF9NQVBQRURfQUREUiA9IDIzCi1JUFY2Q1RMX1Y2T05MWSA9IDI0Ci1JUFY2Q1RMX1JURVhQSVJFID0gMjUKLUlQVjZDVExfUlRNSU5FWFBJUkUgPSAyNgotSVBWNkNUTF9SVE1BWENBQ0hFID0gMjcKLUlQVjZDVExfVVNFVEVNUEFERFIgPSAzMgotSVBWNkNUTF9URU1QUExUSU1FID0gMzMKLUlQVjZDVExfVEVNUFZMVElNRSA9IDM0Ci1JUFY2Q1RMX0FVVE9fTElOS0xPQ0FMID0gMzUKLUlQVjZDVExfUklQNlNUQVRTID0gMzYKLUlQVjZDVExfTUFYRlJBR1MgPSA0MQotSVBWNkNUTF9NQVhJRCA9IDQyCmRpZmYgLS1naXQgYS9MaWIvcGxhdC1kYXJ3aW4vcmVnZW4gYi9MaWIvcGxhdC1kYXJ3aW4vcmVnZW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGEyMGNkYzEuLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtZGFyd2luL3JlZ2VuCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0jISAvYmluL3NoCi1zZXQgLXYKLXB5dGhvbiRFWEUgLi4vLi4vVG9vbHMvc2NyaXB0cy9oMnB5LnB5IC1pICcodV9sb25nKScgL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaApkaWZmIC0tZ2l0IGEvTGliL3BsYXQtZnJlZWJzZDQvSU4ucHkgYi9MaWIvcGxhdC1mcmVlYnNkNC9JTi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmNhMjQxOC4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1mcmVlYnNkNC9JTi5weQorKysgL2Rldi9udWxsCkBAIC0xLDM1NSArMCwwIEBACi0jIEdlbmVyYXRlZCBieSBoMnB5IGZyb20gL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaAotSVBQUk9UT19JUCA9IDAKLUlQUFJPVE9fSE9QT1BUUyA9IDAKLUlQUFJPVE9fSUNNUCA9IDEKLUlQUFJPVE9fSUdNUCA9IDIKLUlQUFJPVE9fR0dQID0gMwotSVBQUk9UT19JUFY0ID0gNAotSVBQUk9UT19JUElQID0gSVBQUk9UT19JUFY0Ci1JUFBST1RPX1RDUCA9IDYKLUlQUFJPVE9fU1QgPSA3Ci1JUFBST1RPX0VHUCA9IDgKLUlQUFJPVE9fUElHUCA9IDkKLUlQUFJPVE9fUkNDTU9OID0gMTAKLUlQUFJPVE9fTlZQSUkgPSAxMQotSVBQUk9UT19QVVAgPSAxMgotSVBQUk9UT19BUkdVUyA9IDEzCi1JUFBST1RPX0VNQ09OID0gMTQKLUlQUFJPVE9fWE5FVCA9IDE1Ci1JUFBST1RPX0NIQU9TID0gMTYKLUlQUFJPVE9fVURQID0gMTcKLUlQUFJPVE9fTVVYID0gMTgKLUlQUFJPVE9fTUVBUyA9IDE5Ci1JUFBST1RPX0hNUCA9IDIwCi1JUFBST1RPX1BSTSA9IDIxCi1JUFBST1RPX0lEUCA9IDIyCi1JUFBST1RPX1RSVU5LMSA9IDIzCi1JUFBST1RPX1RSVU5LMiA9IDI0Ci1JUFBST1RPX0xFQUYxID0gMjUKLUlQUFJPVE9fTEVBRjIgPSAyNgotSVBQUk9UT19SRFAgPSAyNwotSVBQUk9UT19JUlRQID0gMjgKLUlQUFJPVE9fVFAgPSAyOQotSVBQUk9UT19CTFQgPSAzMAotSVBQUk9UT19OU1AgPSAzMQotSVBQUk9UT19JTlAgPSAzMgotSVBQUk9UT19TRVAgPSAzMwotSVBQUk9UT18zUEMgPSAzNAotSVBQUk9UT19JRFBSID0gMzUKLUlQUFJPVE9fWFRQID0gMzYKLUlQUFJPVE9fRERQID0gMzcKLUlQUFJPVE9fQ01UUCA9IDM4Ci1JUFBST1RPX1RQWFggPSAzOQotSVBQUk9UT19JTCA9IDQwCi1JUFBST1RPX0lQVjYgPSA0MQotSVBQUk9UT19TRFJQID0gNDIKLUlQUFJPVE9fUk9VVElORyA9IDQzCi1JUFBST1RPX0ZSQUdNRU5UID0gNDQKLUlQUFJPVE9fSURSUCA9IDQ1Ci1JUFBST1RPX1JTVlAgPSA0NgotSVBQUk9UT19HUkUgPSA0NwotSVBQUk9UT19NSFJQID0gNDgKLUlQUFJPVE9fQkhBID0gNDkKLUlQUFJPVE9fRVNQID0gNTAKLUlQUFJPVE9fQUggPSA1MQotSVBQUk9UT19JTkxTUCA9IDUyCi1JUFBST1RPX1NXSVBFID0gNTMKLUlQUFJPVE9fTkhSUCA9IDU0Ci1JUFBST1RPX0lDTVBWNiA9IDU4Ci1JUFBST1RPX05PTkUgPSA1OQotSVBQUk9UT19EU1RPUFRTID0gNjAKLUlQUFJPVE9fQUhJUCA9IDYxCi1JUFBST1RPX0NGVFAgPSA2MgotSVBQUk9UT19IRUxMTyA9IDYzCi1JUFBST1RPX1NBVEVYUEFLID0gNjQKLUlQUFJPVE9fS1JZUFRPTEFOID0gNjUKLUlQUFJPVE9fUlZEID0gNjYKLUlQUFJPVE9fSVBQQyA9IDY3Ci1JUFBST1RPX0FERlMgPSA2OAotSVBQUk9UT19TQVRNT04gPSA2OQotSVBQUk9UT19WSVNBID0gNzAKLUlQUFJPVE9fSVBDViA9IDcxCi1JUFBST1RPX0NQTlggPSA3MgotSVBQUk9UT19DUEhCID0gNzMKLUlQUFJPVE9fV1NOID0gNzQKLUlQUFJPVE9fUFZQID0gNzUKLUlQUFJPVE9fQlJTQVRNT04gPSA3NgotSVBQUk9UT19ORCA9IDc3Ci1JUFBST1RPX1dCTU9OID0gNzgKLUlQUFJPVE9fV0JFWFBBSyA9IDc5Ci1JUFBST1RPX0VPTiA9IDgwCi1JUFBST1RPX1ZNVFAgPSA4MQotSVBQUk9UT19TVk1UUCA9IDgyCi1JUFBST1RPX1ZJTkVTID0gODMKLUlQUFJPVE9fVFRQID0gODQKLUlQUFJPVE9fSUdQID0gODUKLUlQUFJPVE9fREdQID0gODYKLUlQUFJPVE9fVENGID0gODcKLUlQUFJPVE9fSUdSUCA9IDg4Ci1JUFBST1RPX09TUEZJR1AgPSA4OQotSVBQUk9UT19TUlBDID0gOTAKLUlQUFJPVE9fTEFSUCA9IDkxCi1JUFBST1RPX01UUCA9IDkyCi1JUFBST1RPX0FYMjUgPSA5MwotSVBQUk9UT19JUEVJUCA9IDk0Ci1JUFBST1RPX01JQ1AgPSA5NQotSVBQUk9UT19TQ0NTUCA9IDk2Ci1JUFBST1RPX0VUSEVSSVAgPSA5NwotSVBQUk9UT19FTkNBUCA9IDk4Ci1JUFBST1RPX0FQRVMgPSA5OQotSVBQUk9UT19HTVRQID0gMTAwCi1JUFBST1RPX0lQQ09NUCA9IDEwOAotSVBQUk9UT19QSU0gPSAxMDMKLUlQUFJPVE9fUEdNID0gMTEzCi1JUFBST1RPX0RJVkVSVCA9IDI1NAotSVBQUk9UT19SQVcgPSAyNTUKLUlQUFJPVE9fTUFYID0gMjU2Ci1JUFBST1RPX0RPTkUgPSAyNTcKLUlQUE9SVF9SRVNFUlZFRCA9IDEwMjQKLUlQUE9SVF9VU0VSUkVTRVJWRUQgPSA1MDAwCi1JUFBPUlRfSElGSVJTVEFVVE8gPSA0OTE1MgotSVBQT1JUX0hJTEFTVEFVVE8gPSA2NTUzNQotSVBQT1JUX1JFU0VSVkVEU1RBUlQgPSA2MDAKLWRlZiBJTl9DTEFTU0EoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgMHg4MDAwMDAwMCkgPT0gMCkKLQotSU5fQ0xBU1NBX05FVCA9IDB4ZmYwMDAwMDAKLUlOX0NMQVNTQV9OU0hJRlQgPSAyNAotSU5fQ0xBU1NBX0hPU1QgPSAweDAwZmZmZmZmCi1JTl9DTEFTU0FfTUFYID0gMTI4Ci1kZWYgSU5fQ0xBU1NCKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmIDB4YzAwMDAwMDApID09IDB4ODAwMDAwMDApCi0KLUlOX0NMQVNTQl9ORVQgPSAweGZmZmYwMDAwCi1JTl9DTEFTU0JfTlNISUZUID0gMTYKLUlOX0NMQVNTQl9IT1NUID0gMHgwMDAwZmZmZgotSU5fQ0xBU1NCX01BWCA9IDY1NTM2Ci1kZWYgSU5fQ0xBU1NDKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmIDB4ZTAwMDAwMDApID09IDB4YzAwMDAwMDApCi0KLUlOX0NMQVNTQ19ORVQgPSAweGZmZmZmZjAwCi1JTl9DTEFTU0NfTlNISUZUID0gOAotSU5fQ0xBU1NDX0hPU1QgPSAweDAwMDAwMGZmCi1kZWYgSU5fQ0xBU1NEKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmIDB4ZjAwMDAwMDApID09IDB4ZTAwMDAwMDApCi0KLUlOX0NMQVNTRF9ORVQgPSAweGYwMDAwMDAwCi1JTl9DTEFTU0RfTlNISUZUID0gMjgKLUlOX0NMQVNTRF9IT1NUID0gMHgwZmZmZmZmZgotZGVmIElOX01VTFRJQ0FTVChpKTogcmV0dXJuIElOX0NMQVNTRChpKQotCi1kZWYgSU5fRVhQRVJJTUVOVEFMKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmIDB4ZjAwMDAwMDApID09IDB4ZjAwMDAwMDApCi0KLWRlZiBJTl9CQURDTEFTUyhpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAweGYwMDAwMDAwKSA9PSAweGYwMDAwMDAwKQotCi1JTkFERFJfTk9ORSA9IDB4ZmZmZmZmZmYKLUlOX0xPT1BCQUNLTkVUID0gMTI3Ci1JTkVUX0FERFJTVFJMRU4gPSAxNgotSVBfT1BUSU9OUyA9IDEKLUlQX0hEUklOQ0wgPSAyCi1JUF9UT1MgPSAzCi1JUF9UVEwgPSA0Ci1JUF9SRUNWT1BUUyA9IDUKLUlQX1JFQ1ZSRVRPUFRTID0gNgotSVBfUkVDVkRTVEFERFIgPSA3Ci1JUF9SRVRPUFRTID0gOAotSVBfTVVMVElDQVNUX0lGID0gOQotSVBfTVVMVElDQVNUX1RUTCA9IDEwCi1JUF9NVUxUSUNBU1RfTE9PUCA9IDExCi1JUF9BRERfTUVNQkVSU0hJUCA9IDEyCi1JUF9EUk9QX01FTUJFUlNISVAgPSAxMwotSVBfTVVMVElDQVNUX1ZJRiA9IDE0Ci1JUF9SU1ZQX09OID0gMTUKLUlQX1JTVlBfT0ZGID0gMTYKLUlQX1JTVlBfVklGX09OID0gMTcKLUlQX1JTVlBfVklGX09GRiA9IDE4Ci1JUF9QT1JUUkFOR0UgPSAxOQotSVBfUkVDVklGID0gMjAKLUlQX0lQU0VDX1BPTElDWSA9IDIxCi1JUF9GQUlUSCA9IDIyCi1JUF9GV19BREQgPSA1MAotSVBfRldfREVMID0gNTEKLUlQX0ZXX0ZMVVNIID0gNTIKLUlQX0ZXX1pFUk8gPSA1MwotSVBfRldfR0VUID0gNTQKLUlQX0ZXX1JFU0VUTE9HID0gNTUKLUlQX0RVTU1ZTkVUX0NPTkZJR1VSRSA9IDYwCi1JUF9EVU1NWU5FVF9ERUwgPSA2MQotSVBfRFVNTVlORVRfRkxVU0ggPSA2MgotSVBfRFVNTVlORVRfR0VUID0gNjQKLUlQX0RFRkFVTFRfTVVMVElDQVNUX1RUTCA9IDEKLUlQX0RFRkFVTFRfTVVMVElDQVNUX0xPT1AgPSAxCi1JUF9NQVhfTUVNQkVSU0hJUFMgPSAyMAotSVBfUE9SVFJBTkdFX0RFRkFVTFQgPSAwCi1JUF9QT1JUUkFOR0VfSElHSCA9IDEKLUlQX1BPUlRSQU5HRV9MT1cgPSAyCi1JUFBST1RPX01BWElEID0gKElQUFJPVE9fQUggKyAxKQotSVBDVExfRk9SV0FSRElORyA9IDEKLUlQQ1RMX1NFTkRSRURJUkVDVFMgPSAyCi1JUENUTF9ERUZUVEwgPSAzCi1JUENUTF9ERUZNVFUgPSA0Ci1JUENUTF9SVEVYUElSRSA9IDUKLUlQQ1RMX1JUTUlORVhQSVJFID0gNgotSVBDVExfUlRNQVhDQUNIRSA9IDcKLUlQQ1RMX1NPVVJDRVJPVVRFID0gOAotSVBDVExfRElSRUNURURCUk9BRENBU1QgPSA5Ci1JUENUTF9JTlRSUU1BWExFTiA9IDEwCi1JUENUTF9JTlRSUURST1BTID0gMTEKLUlQQ1RMX1NUQVRTID0gMTIKLUlQQ1RMX0FDQ0VQVFNPVVJDRVJPVVRFID0gMTMKLUlQQ1RMX0ZBU1RGT1JXQVJESU5HID0gMTQKLUlQQ1RMX0tFRVBGQUlUSCA9IDE1Ci1JUENUTF9HSUZfVFRMID0gMTYKLUlQQ1RMX01BWElEID0gMTcKLQotIyBJbmNsdWRlZCBmcm9tIG5ldGluZXQ2L2luNi5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvcXVldWUuaAotZGVmIFNMSVNUX0hFQURfSU5JVElBTElaRVIoaGVhZCk6IHJldHVybiBcCi0KLWRlZiBTTElTVF9FTlRSWSh0eXBlKTogcmV0dXJuIFwKLQotZGVmIFNUQUlMUV9IRUFEX0lOSVRJQUxJWkVSKGhlYWQpOiByZXR1cm4gXAotCi1kZWYgU1RBSUxRX0VOVFJZKHR5cGUpOiByZXR1cm4gXAotCi1kZWYgTElTVF9IRUFEX0lOSVRJQUxJWkVSKGhlYWQpOiByZXR1cm4gXAotCi1kZWYgTElTVF9FTlRSWSh0eXBlKTogcmV0dXJuIFwKLQotZGVmIFRBSUxRX0hFQURfSU5JVElBTElaRVIoaGVhZCk6IHJldHVybiBcCi0KLWRlZiBUQUlMUV9FTlRSWSh0eXBlKTogcmV0dXJuIFwKLQotZGVmIENJUkNMRVFfRU5UUlkodHlwZSk6IHJldHVybiBcCi0KLV9fS0FNRV9WRVJTSU9OID0gIjIwMDAwNzAxL0ZyZWVCU0QtY3VycmVudCIKLUlQVjZQT1JUX1JFU0VSVkVEID0gMTAyNAotSVBWNlBPUlRfQU5PTk1JTiA9IDQ5MTUyCi1JUFY2UE9SVF9BTk9OTUFYID0gNjU1MzUKLUlQVjZQT1JUX1JFU0VSVkVETUlOID0gNjAwCi1JUFY2UE9SVF9SRVNFUlZFRE1BWCA9IChJUFY2UE9SVF9SRVNFUlZFRC0xKQotSU5FVDZfQUREUlNUUkxFTiA9IDQ2Ci1JUFY2X0FERFJfSU5UMzJfT05FID0gMQotSVBWNl9BRERSX0lOVDMyX1RXTyA9IDIKLUlQVjZfQUREUl9JTlQzMl9NTkwgPSAweGZmMDEwMDAwCi1JUFY2X0FERFJfSU5UMzJfTUxMID0gMHhmZjAyMDAwMAotSVBWNl9BRERSX0lOVDMyX1NNUCA9IDB4MDAwMGZmZmYKLUlQVjZfQUREUl9JTlQxNl9VTEwgPSAweGZlODAKLUlQVjZfQUREUl9JTlQxNl9VU0wgPSAweGZlYzAKLUlQVjZfQUREUl9JTlQxNl9NTEwgPSAweGZmMDIKLUlQVjZfQUREUl9JTlQzMl9PTkUgPSAweDAxMDAwMDAwCi1JUFY2X0FERFJfSU5UMzJfVFdPID0gMHgwMjAwMDAwMAotSVBWNl9BRERSX0lOVDMyX01OTCA9IDB4MDAwMDAxZmYKLUlQVjZfQUREUl9JTlQzMl9NTEwgPSAweDAwMDAwMmZmCi1JUFY2X0FERFJfSU5UMzJfU01QID0gMHhmZmZmMDAwMAotSVBWNl9BRERSX0lOVDE2X1VMTCA9IDB4ODBmZQotSVBWNl9BRERSX0lOVDE2X1VTTCA9IDB4YzBmZQotSVBWNl9BRERSX0lOVDE2X01MTCA9IDB4MDJmZgotZGVmIElONl9JU19BRERSX1VOU1BFQ0lGSUVEKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTE9PUEJBQ0soYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9WNENPTVBBVChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1Y0TUFQUEVEKGEpOiByZXR1cm4gXAotCi1JUFY2X0FERFJfU0NPUEVfTk9ERUxPQ0FMID0gMHgwMQotSVBWNl9BRERSX1NDT1BFX0xJTktMT0NBTCA9IDB4MDIKLUlQVjZfQUREUl9TQ09QRV9TSVRFTE9DQUwgPSAweDA1Ci1JUFY2X0FERFJfU0NPUEVfT1JHTE9DQUwgPSAweDA4Ci1JUFY2X0FERFJfU0NPUEVfR0xPQkFMID0gMHgwZQotX19JUFY2X0FERFJfU0NPUEVfTk9ERUxPQ0FMID0gMHgwMQotX19JUFY2X0FERFJfU0NPUEVfTElOS0xPQ0FMID0gMHgwMgotX19JUFY2X0FERFJfU0NPUEVfU0lURUxPQ0FMID0gMHgwNQotX19JUFY2X0FERFJfU0NPUEVfT1JHTE9DQUwgPSAweDA4Ci1fX0lQVjZfQUREUl9TQ09QRV9HTE9CQUwgPSAweDBlCi1kZWYgSU42X0lTX0FERFJfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfU0lURUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTk9ERUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfU0lURUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfT1JHTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19HTE9CQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19OT0RFTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19MSU5LTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19TSVRFTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19PUkdMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0dMT0JBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19TQ09QRV9MSU5LTE9DQUwoYSk6IHJldHVybiBcCi0KLUlQVjZfT1BUSU9OUyA9IDEKLUlQVjZfUkVDVk9QVFMgPSA1Ci1JUFY2X1JFQ1ZSRVRPUFRTID0gNgotSVBWNl9SRUNWRFNUQUREUiA9IDcKLUlQVjZfUkVUT1BUUyA9IDgKLUlQVjZfU09DS09QVF9SRVNFUlZFRDEgPSAzCi1JUFY2X1VOSUNBU1RfSE9QUyA9IDQKLUlQVjZfTVVMVElDQVNUX0lGID0gOQotSVBWNl9NVUxUSUNBU1RfSE9QUyA9IDEwCi1JUFY2X01VTFRJQ0FTVF9MT09QID0gMTEKLUlQVjZfSk9JTl9HUk9VUCA9IDEyCi1JUFY2X0xFQVZFX0dST1VQID0gMTMKLUlQVjZfUE9SVFJBTkdFID0gMTQKLUlDTVA2X0ZJTFRFUiA9IDE4Ci1JUFY2X1BLVElORk8gPSAxOQotSVBWNl9IT1BMSU1JVCA9IDIwCi1JUFY2X05FWFRIT1AgPSAyMQotSVBWNl9IT1BPUFRTID0gMjIKLUlQVjZfRFNUT1BUUyA9IDIzCi1JUFY2X1JUSERSID0gMjQKLUlQVjZfUEtUT1BUSU9OUyA9IDI1Ci1JUFY2X0NIRUNLU1VNID0gMjYKLUlQVjZfQklORFY2T05MWSA9IDI3Ci1JUFY2X0lQU0VDX1BPTElDWSA9IDI4Ci1JUFY2X0ZBSVRIID0gMjkKLUlQVjZfRldfQUREID0gMzAKLUlQVjZfRldfREVMID0gMzEKLUlQVjZfRldfRkxVU0ggPSAzMgotSVBWNl9GV19aRVJPID0gMzMKLUlQVjZfRldfR0VUID0gMzQKLUlQVjZfUlRIRFJfTE9PU0UgPSAwCi1JUFY2X1JUSERSX1NUUklDVCA9IDEKLUlQVjZfUlRIRFJfVFlQRV8wID0gMAotSVBWNl9ERUZBVUxUX01VTFRJQ0FTVF9IT1BTID0gMQotSVBWNl9ERUZBVUxUX01VTFRJQ0FTVF9MT09QID0gMQotSVBWNl9QT1JUUkFOR0VfREVGQVVMVCA9IDAKLUlQVjZfUE9SVFJBTkdFX0hJR0ggPSAxCi1JUFY2X1BPUlRSQU5HRV9MT1cgPSAyCi1JUFY2UFJPVE9fTUFYSUQgPSAoSVBQUk9UT19QSU0gKyAxKQotSVBWNkNUTF9GT1JXQVJESU5HID0gMQotSVBWNkNUTF9TRU5EUkVESVJFQ1RTID0gMgotSVBWNkNUTF9ERUZITElNID0gMwotSVBWNkNUTF9ERUZNVFUgPSA0Ci1JUFY2Q1RMX0ZPUldTUkNSVCA9IDUKLUlQVjZDVExfU1RBVFMgPSA2Ci1JUFY2Q1RMX01SVFNUQVRTID0gNwotSVBWNkNUTF9NUlRQUk9UTyA9IDgKLUlQVjZDVExfTUFYRlJBR1BBQ0tFVFMgPSA5Ci1JUFY2Q1RMX1NPVVJDRUNIRUNLID0gMTAKLUlQVjZDVExfU09VUkNFQ0hFQ0tfTE9HSU5UID0gMTEKLUlQVjZDVExfQUNDRVBUX1JUQURWID0gMTIKLUlQVjZDVExfS0VFUEZBSVRIID0gMTMKLUlQVjZDVExfTE9HX0lOVEVSVkFMID0gMTQKLUlQVjZDVExfSERSTkVTVExJTUlUID0gMTUKLUlQVjZDVExfREFEX0NPVU5UID0gMTYKLUlQVjZDVExfQVVUT19GTE9XTEFCRUwgPSAxNwotSVBWNkNUTF9ERUZNQ0FTVEhMSU0gPSAxOAotSVBWNkNUTF9HSUZfSExJTSA9IDE5Ci1JUFY2Q1RMX0tBTUVfVkVSU0lPTiA9IDIwCi1JUFY2Q1RMX1VTRV9ERVBSRUNBVEVEID0gMjEKLUlQVjZDVExfUlJfUFJVTkUgPSAyMgotSVBWNkNUTF9NQVBQRURfQUREUiA9IDIzCi1JUFY2Q1RMX0JJTkRWNk9OTFkgPSAyNAotSVBWNkNUTF9SVEVYUElSRSA9IDI1Ci1JUFY2Q1RMX1JUTUlORVhQSVJFID0gMjYKLUlQVjZDVExfUlRNQVhDQUNIRSA9IDI3Ci1JUFY2Q1RMX01BWElEID0gMjgKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LWZyZWVic2Q0L3JlZ2VuIGIvTGliL3BsYXQtZnJlZWJzZDQvcmVnZW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDhhYTY4OTguLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtZnJlZWJzZDQvcmVnZW4KKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLSMhIC9iaW4vc2gKLXNldCAtdgotcHl0aG9uIC4uLy4uL1Rvb2xzL3NjcmlwdHMvaDJweS5weSAtaSAnKHVfbG9uZyknIC91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LWZyZWVic2Q1L0lOLnB5IGIvTGliL3BsYXQtZnJlZWJzZDUvSU4ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjYTI0MTguLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtZnJlZWJzZDUvSU4ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzNTUgKzAsMCBAQAotIyBHZW5lcmF0ZWQgYnkgaDJweSBmcm9tIC91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgKLUlQUFJPVE9fSVAgPSAwCi1JUFBST1RPX0hPUE9QVFMgPSAwCi1JUFBST1RPX0lDTVAgPSAxCi1JUFBST1RPX0lHTVAgPSAyCi1JUFBST1RPX0dHUCA9IDMKLUlQUFJPVE9fSVBWNCA9IDQKLUlQUFJPVE9fSVBJUCA9IElQUFJPVE9fSVBWNAotSVBQUk9UT19UQ1AgPSA2Ci1JUFBST1RPX1NUID0gNwotSVBQUk9UT19FR1AgPSA4Ci1JUFBST1RPX1BJR1AgPSA5Ci1JUFBST1RPX1JDQ01PTiA9IDEwCi1JUFBST1RPX05WUElJID0gMTEKLUlQUFJPVE9fUFVQID0gMTIKLUlQUFJPVE9fQVJHVVMgPSAxMwotSVBQUk9UT19FTUNPTiA9IDE0Ci1JUFBST1RPX1hORVQgPSAxNQotSVBQUk9UT19DSEFPUyA9IDE2Ci1JUFBST1RPX1VEUCA9IDE3Ci1JUFBST1RPX01VWCA9IDE4Ci1JUFBST1RPX01FQVMgPSAxOQotSVBQUk9UT19ITVAgPSAyMAotSVBQUk9UT19QUk0gPSAyMQotSVBQUk9UT19JRFAgPSAyMgotSVBQUk9UT19UUlVOSzEgPSAyMwotSVBQUk9UT19UUlVOSzIgPSAyNAotSVBQUk9UT19MRUFGMSA9IDI1Ci1JUFBST1RPX0xFQUYyID0gMjYKLUlQUFJPVE9fUkRQID0gMjcKLUlQUFJPVE9fSVJUUCA9IDI4Ci1JUFBST1RPX1RQID0gMjkKLUlQUFJPVE9fQkxUID0gMzAKLUlQUFJPVE9fTlNQID0gMzEKLUlQUFJPVE9fSU5QID0gMzIKLUlQUFJPVE9fU0VQID0gMzMKLUlQUFJPVE9fM1BDID0gMzQKLUlQUFJPVE9fSURQUiA9IDM1Ci1JUFBST1RPX1hUUCA9IDM2Ci1JUFBST1RPX0REUCA9IDM3Ci1JUFBST1RPX0NNVFAgPSAzOAotSVBQUk9UT19UUFhYID0gMzkKLUlQUFJPVE9fSUwgPSA0MAotSVBQUk9UT19JUFY2ID0gNDEKLUlQUFJPVE9fU0RSUCA9IDQyCi1JUFBST1RPX1JPVVRJTkcgPSA0MwotSVBQUk9UT19GUkFHTUVOVCA9IDQ0Ci1JUFBST1RPX0lEUlAgPSA0NQotSVBQUk9UT19SU1ZQID0gNDYKLUlQUFJPVE9fR1JFID0gNDcKLUlQUFJPVE9fTUhSUCA9IDQ4Ci1JUFBST1RPX0JIQSA9IDQ5Ci1JUFBST1RPX0VTUCA9IDUwCi1JUFBST1RPX0FIID0gNTEKLUlQUFJPVE9fSU5MU1AgPSA1MgotSVBQUk9UT19TV0lQRSA9IDUzCi1JUFBST1RPX05IUlAgPSA1NAotSVBQUk9UT19JQ01QVjYgPSA1OAotSVBQUk9UT19OT05FID0gNTkKLUlQUFJPVE9fRFNUT1BUUyA9IDYwCi1JUFBST1RPX0FISVAgPSA2MQotSVBQUk9UT19DRlRQID0gNjIKLUlQUFJPVE9fSEVMTE8gPSA2MwotSVBQUk9UT19TQVRFWFBBSyA9IDY0Ci1JUFBST1RPX0tSWVBUT0xBTiA9IDY1Ci1JUFBST1RPX1JWRCA9IDY2Ci1JUFBST1RPX0lQUEMgPSA2NwotSVBQUk9UT19BREZTID0gNjgKLUlQUFJPVE9fU0FUTU9OID0gNjkKLUlQUFJPVE9fVklTQSA9IDcwCi1JUFBST1RPX0lQQ1YgPSA3MQotSVBQUk9UT19DUE5YID0gNzIKLUlQUFJPVE9fQ1BIQiA9IDczCi1JUFBST1RPX1dTTiA9IDc0Ci1JUFBST1RPX1BWUCA9IDc1Ci1JUFBST1RPX0JSU0FUTU9OID0gNzYKLUlQUFJPVE9fTkQgPSA3NwotSVBQUk9UT19XQk1PTiA9IDc4Ci1JUFBST1RPX1dCRVhQQUsgPSA3OQotSVBQUk9UT19FT04gPSA4MAotSVBQUk9UT19WTVRQID0gODEKLUlQUFJPVE9fU1ZNVFAgPSA4MgotSVBQUk9UT19WSU5FUyA9IDgzCi1JUFBST1RPX1RUUCA9IDg0Ci1JUFBST1RPX0lHUCA9IDg1Ci1JUFBST1RPX0RHUCA9IDg2Ci1JUFBST1RPX1RDRiA9IDg3Ci1JUFBST1RPX0lHUlAgPSA4OAotSVBQUk9UT19PU1BGSUdQID0gODkKLUlQUFJPVE9fU1JQQyA9IDkwCi1JUFBST1RPX0xBUlAgPSA5MQotSVBQUk9UT19NVFAgPSA5MgotSVBQUk9UT19BWDI1ID0gOTMKLUlQUFJPVE9fSVBFSVAgPSA5NAotSVBQUk9UT19NSUNQID0gOTUKLUlQUFJPVE9fU0NDU1AgPSA5NgotSVBQUk9UT19FVEhFUklQID0gOTcKLUlQUFJPVE9fRU5DQVAgPSA5OAotSVBQUk9UT19BUEVTID0gOTkKLUlQUFJPVE9fR01UUCA9IDEwMAotSVBQUk9UT19JUENPTVAgPSAxMDgKLUlQUFJPVE9fUElNID0gMTAzCi1JUFBST1RPX1BHTSA9IDExMwotSVBQUk9UT19ESVZFUlQgPSAyNTQKLUlQUFJPVE9fUkFXID0gMjU1Ci1JUFBST1RPX01BWCA9IDI1NgotSVBQUk9UT19ET05FID0gMjU3Ci1JUFBPUlRfUkVTRVJWRUQgPSAxMDI0Ci1JUFBPUlRfVVNFUlJFU0VSVkVEID0gNTAwMAotSVBQT1JUX0hJRklSU1RBVVRPID0gNDkxNTIKLUlQUE9SVF9ISUxBU1RBVVRPID0gNjU1MzUKLUlQUE9SVF9SRVNFUlZFRFNUQVJUID0gNjAwCi1kZWYgSU5fQ0xBU1NBKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmIDB4ODAwMDAwMDApID09IDApCi0KLUlOX0NMQVNTQV9ORVQgPSAweGZmMDAwMDAwCi1JTl9DTEFTU0FfTlNISUZUID0gMjQKLUlOX0NMQVNTQV9IT1NUID0gMHgwMGZmZmZmZgotSU5fQ0xBU1NBX01BWCA9IDEyOAotZGVmIElOX0NMQVNTQihpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAweGMwMDAwMDAwKSA9PSAweDgwMDAwMDAwKQotCi1JTl9DTEFTU0JfTkVUID0gMHhmZmZmMDAwMAotSU5fQ0xBU1NCX05TSElGVCA9IDE2Ci1JTl9DTEFTU0JfSE9TVCA9IDB4MDAwMGZmZmYKLUlOX0NMQVNTQl9NQVggPSA2NTUzNgotZGVmIElOX0NMQVNTQyhpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAweGUwMDAwMDAwKSA9PSAweGMwMDAwMDAwKQotCi1JTl9DTEFTU0NfTkVUID0gMHhmZmZmZmYwMAotSU5fQ0xBU1NDX05TSElGVCA9IDgKLUlOX0NMQVNTQ19IT1NUID0gMHgwMDAwMDBmZgotZGVmIElOX0NMQVNTRChpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAweGYwMDAwMDAwKSA9PSAweGUwMDAwMDAwKQotCi1JTl9DTEFTU0RfTkVUID0gMHhmMDAwMDAwMAotSU5fQ0xBU1NEX05TSElGVCA9IDI4Ci1JTl9DTEFTU0RfSE9TVCA9IDB4MGZmZmZmZmYKLWRlZiBJTl9NVUxUSUNBU1QoaSk6IHJldHVybiBJTl9DTEFTU0QoaSkKLQotZGVmIElOX0VYUEVSSU1FTlRBTChpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAweGYwMDAwMDAwKSA9PSAweGYwMDAwMDAwKQotCi1kZWYgSU5fQkFEQ0xBU1MoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgMHhmMDAwMDAwMCkgPT0gMHhmMDAwMDAwMCkKLQotSU5BRERSX05PTkUgPSAweGZmZmZmZmZmCi1JTl9MT09QQkFDS05FVCA9IDEyNwotSU5FVF9BRERSU1RSTEVOID0gMTYKLUlQX09QVElPTlMgPSAxCi1JUF9IRFJJTkNMID0gMgotSVBfVE9TID0gMwotSVBfVFRMID0gNAotSVBfUkVDVk9QVFMgPSA1Ci1JUF9SRUNWUkVUT1BUUyA9IDYKLUlQX1JFQ1ZEU1RBRERSID0gNwotSVBfUkVUT1BUUyA9IDgKLUlQX01VTFRJQ0FTVF9JRiA9IDkKLUlQX01VTFRJQ0FTVF9UVEwgPSAxMAotSVBfTVVMVElDQVNUX0xPT1AgPSAxMQotSVBfQUREX01FTUJFUlNISVAgPSAxMgotSVBfRFJPUF9NRU1CRVJTSElQID0gMTMKLUlQX01VTFRJQ0FTVF9WSUYgPSAxNAotSVBfUlNWUF9PTiA9IDE1Ci1JUF9SU1ZQX09GRiA9IDE2Ci1JUF9SU1ZQX1ZJRl9PTiA9IDE3Ci1JUF9SU1ZQX1ZJRl9PRkYgPSAxOAotSVBfUE9SVFJBTkdFID0gMTkKLUlQX1JFQ1ZJRiA9IDIwCi1JUF9JUFNFQ19QT0xJQ1kgPSAyMQotSVBfRkFJVEggPSAyMgotSVBfRldfQUREID0gNTAKLUlQX0ZXX0RFTCA9IDUxCi1JUF9GV19GTFVTSCA9IDUyCi1JUF9GV19aRVJPID0gNTMKLUlQX0ZXX0dFVCA9IDU0Ci1JUF9GV19SRVNFVExPRyA9IDU1Ci1JUF9EVU1NWU5FVF9DT05GSUdVUkUgPSA2MAotSVBfRFVNTVlORVRfREVMID0gNjEKLUlQX0RVTU1ZTkVUX0ZMVVNIID0gNjIKLUlQX0RVTU1ZTkVUX0dFVCA9IDY0Ci1JUF9ERUZBVUxUX01VTFRJQ0FTVF9UVEwgPSAxCi1JUF9ERUZBVUxUX01VTFRJQ0FTVF9MT09QID0gMQotSVBfTUFYX01FTUJFUlNISVBTID0gMjAKLUlQX1BPUlRSQU5HRV9ERUZBVUxUID0gMAotSVBfUE9SVFJBTkdFX0hJR0ggPSAxCi1JUF9QT1JUUkFOR0VfTE9XID0gMgotSVBQUk9UT19NQVhJRCA9IChJUFBST1RPX0FIICsgMSkKLUlQQ1RMX0ZPUldBUkRJTkcgPSAxCi1JUENUTF9TRU5EUkVESVJFQ1RTID0gMgotSVBDVExfREVGVFRMID0gMwotSVBDVExfREVGTVRVID0gNAotSVBDVExfUlRFWFBJUkUgPSA1Ci1JUENUTF9SVE1JTkVYUElSRSA9IDYKLUlQQ1RMX1JUTUFYQ0FDSEUgPSA3Ci1JUENUTF9TT1VSQ0VST1VURSA9IDgKLUlQQ1RMX0RJUkVDVEVEQlJPQURDQVNUID0gOQotSVBDVExfSU5UUlFNQVhMRU4gPSAxMAotSVBDVExfSU5UUlFEUk9QUyA9IDExCi1JUENUTF9TVEFUUyA9IDEyCi1JUENUTF9BQ0NFUFRTT1VSQ0VST1VURSA9IDEzCi1JUENUTF9GQVNURk9SV0FSRElORyA9IDE0Ci1JUENUTF9LRUVQRkFJVEggPSAxNQotSVBDVExfR0lGX1RUTCA9IDE2Ci1JUENUTF9NQVhJRCA9IDE3Ci0KLSMgSW5jbHVkZWQgZnJvbSBuZXRpbmV0Ni9pbjYuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3F1ZXVlLmgKLWRlZiBTTElTVF9IRUFEX0lOSVRJQUxJWkVSKGhlYWQpOiByZXR1cm4gXAotCi1kZWYgU0xJU1RfRU5UUlkodHlwZSk6IHJldHVybiBcCi0KLWRlZiBTVEFJTFFfSEVBRF9JTklUSUFMSVpFUihoZWFkKTogcmV0dXJuIFwKLQotZGVmIFNUQUlMUV9FTlRSWSh0eXBlKTogcmV0dXJuIFwKLQotZGVmIExJU1RfSEVBRF9JTklUSUFMSVpFUihoZWFkKTogcmV0dXJuIFwKLQotZGVmIExJU1RfRU5UUlkodHlwZSk6IHJldHVybiBcCi0KLWRlZiBUQUlMUV9IRUFEX0lOSVRJQUxJWkVSKGhlYWQpOiByZXR1cm4gXAotCi1kZWYgVEFJTFFfRU5UUlkodHlwZSk6IHJldHVybiBcCi0KLWRlZiBDSVJDTEVRX0VOVFJZKHR5cGUpOiByZXR1cm4gXAotCi1fX0tBTUVfVkVSU0lPTiA9ICIyMDAwMDcwMS9GcmVlQlNELWN1cnJlbnQiCi1JUFY2UE9SVF9SRVNFUlZFRCA9IDEwMjQKLUlQVjZQT1JUX0FOT05NSU4gPSA0OTE1MgotSVBWNlBPUlRfQU5PTk1BWCA9IDY1NTM1Ci1JUFY2UE9SVF9SRVNFUlZFRE1JTiA9IDYwMAotSVBWNlBPUlRfUkVTRVJWRURNQVggPSAoSVBWNlBPUlRfUkVTRVJWRUQtMSkKLUlORVQ2X0FERFJTVFJMRU4gPSA0NgotSVBWNl9BRERSX0lOVDMyX09ORSA9IDEKLUlQVjZfQUREUl9JTlQzMl9UV08gPSAyCi1JUFY2X0FERFJfSU5UMzJfTU5MID0gMHhmZjAxMDAwMAotSVBWNl9BRERSX0lOVDMyX01MTCA9IDB4ZmYwMjAwMDAKLUlQVjZfQUREUl9JTlQzMl9TTVAgPSAweDAwMDBmZmZmCi1JUFY2X0FERFJfSU5UMTZfVUxMID0gMHhmZTgwCi1JUFY2X0FERFJfSU5UMTZfVVNMID0gMHhmZWMwCi1JUFY2X0FERFJfSU5UMTZfTUxMID0gMHhmZjAyCi1JUFY2X0FERFJfSU5UMzJfT05FID0gMHgwMTAwMDAwMAotSVBWNl9BRERSX0lOVDMyX1RXTyA9IDB4MDIwMDAwMDAKLUlQVjZfQUREUl9JTlQzMl9NTkwgPSAweDAwMDAwMWZmCi1JUFY2X0FERFJfSU5UMzJfTUxMID0gMHgwMDAwMDJmZgotSVBWNl9BRERSX0lOVDMyX1NNUCA9IDB4ZmZmZjAwMDAKLUlQVjZfQUREUl9JTlQxNl9VTEwgPSAweDgwZmUKLUlQVjZfQUREUl9JTlQxNl9VU0wgPSAweGMwZmUKLUlQVjZfQUREUl9JTlQxNl9NTEwgPSAweDAyZmYKLWRlZiBJTjZfSVNfQUREUl9VTlNQRUNJRklFRChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX0xPT1BCQUNLKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfVjRDT01QQVQoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9WNE1BUFBFRChhKTogcmV0dXJuIFwKLQotSVBWNl9BRERSX1NDT1BFX05PREVMT0NBTCA9IDB4MDEKLUlQVjZfQUREUl9TQ09QRV9MSU5LTE9DQUwgPSAweDAyCi1JUFY2X0FERFJfU0NPUEVfU0lURUxPQ0FMID0gMHgwNQotSVBWNl9BRERSX1NDT1BFX09SR0xPQ0FMID0gMHgwOAotSVBWNl9BRERSX1NDT1BFX0dMT0JBTCA9IDB4MGUKLV9fSVBWNl9BRERSX1NDT1BFX05PREVMT0NBTCA9IDB4MDEKLV9fSVBWNl9BRERSX1NDT1BFX0xJTktMT0NBTCA9IDB4MDIKLV9fSVBWNl9BRERSX1NDT1BFX1NJVEVMT0NBTCA9IDB4MDUKLV9fSVBWNl9BRERSX1NDT1BFX09SR0xPQ0FMID0gMHgwOAotX19JUFY2X0FERFJfU0NPUEVfR0xPQkFMID0gMHgwZQotZGVmIElONl9JU19BRERSX0xJTktMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1NJVEVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX05PREVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0xJTktMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX1NJVEVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX09SR0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfR0xPQkFMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTk9ERUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfU0lURUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfT1JHTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19HTE9CQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfU0NPUEVfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1JUFY2X09QVElPTlMgPSAxCi1JUFY2X1JFQ1ZPUFRTID0gNQotSVBWNl9SRUNWUkVUT1BUUyA9IDYKLUlQVjZfUkVDVkRTVEFERFIgPSA3Ci1JUFY2X1JFVE9QVFMgPSA4Ci1JUFY2X1NPQ0tPUFRfUkVTRVJWRUQxID0gMwotSVBWNl9VTklDQVNUX0hPUFMgPSA0Ci1JUFY2X01VTFRJQ0FTVF9JRiA9IDkKLUlQVjZfTVVMVElDQVNUX0hPUFMgPSAxMAotSVBWNl9NVUxUSUNBU1RfTE9PUCA9IDExCi1JUFY2X0pPSU5fR1JPVVAgPSAxMgotSVBWNl9MRUFWRV9HUk9VUCA9IDEzCi1JUFY2X1BPUlRSQU5HRSA9IDE0Ci1JQ01QNl9GSUxURVIgPSAxOAotSVBWNl9QS1RJTkZPID0gMTkKLUlQVjZfSE9QTElNSVQgPSAyMAotSVBWNl9ORVhUSE9QID0gMjEKLUlQVjZfSE9QT1BUUyA9IDIyCi1JUFY2X0RTVE9QVFMgPSAyMwotSVBWNl9SVEhEUiA9IDI0Ci1JUFY2X1BLVE9QVElPTlMgPSAyNQotSVBWNl9DSEVDS1NVTSA9IDI2Ci1JUFY2X0JJTkRWNk9OTFkgPSAyNwotSVBWNl9JUFNFQ19QT0xJQ1kgPSAyOAotSVBWNl9GQUlUSCA9IDI5Ci1JUFY2X0ZXX0FERCA9IDMwCi1JUFY2X0ZXX0RFTCA9IDMxCi1JUFY2X0ZXX0ZMVVNIID0gMzIKLUlQVjZfRldfWkVSTyA9IDMzCi1JUFY2X0ZXX0dFVCA9IDM0Ci1JUFY2X1JUSERSX0xPT1NFID0gMAotSVBWNl9SVEhEUl9TVFJJQ1QgPSAxCi1JUFY2X1JUSERSX1RZUEVfMCA9IDAKLUlQVjZfREVGQVVMVF9NVUxUSUNBU1RfSE9QUyA9IDEKLUlQVjZfREVGQVVMVF9NVUxUSUNBU1RfTE9PUCA9IDEKLUlQVjZfUE9SVFJBTkdFX0RFRkFVTFQgPSAwCi1JUFY2X1BPUlRSQU5HRV9ISUdIID0gMQotSVBWNl9QT1JUUkFOR0VfTE9XID0gMgotSVBWNlBST1RPX01BWElEID0gKElQUFJPVE9fUElNICsgMSkKLUlQVjZDVExfRk9SV0FSRElORyA9IDEKLUlQVjZDVExfU0VORFJFRElSRUNUUyA9IDIKLUlQVjZDVExfREVGSExJTSA9IDMKLUlQVjZDVExfREVGTVRVID0gNAotSVBWNkNUTF9GT1JXU1JDUlQgPSA1Ci1JUFY2Q1RMX1NUQVRTID0gNgotSVBWNkNUTF9NUlRTVEFUUyA9IDcKLUlQVjZDVExfTVJUUFJPVE8gPSA4Ci1JUFY2Q1RMX01BWEZSQUdQQUNLRVRTID0gOQotSVBWNkNUTF9TT1VSQ0VDSEVDSyA9IDEwCi1JUFY2Q1RMX1NPVVJDRUNIRUNLX0xPR0lOVCA9IDExCi1JUFY2Q1RMX0FDQ0VQVF9SVEFEViA9IDEyCi1JUFY2Q1RMX0tFRVBGQUlUSCA9IDEzCi1JUFY2Q1RMX0xPR19JTlRFUlZBTCA9IDE0Ci1JUFY2Q1RMX0hEUk5FU1RMSU1JVCA9IDE1Ci1JUFY2Q1RMX0RBRF9DT1VOVCA9IDE2Ci1JUFY2Q1RMX0FVVE9fRkxPV0xBQkVMID0gMTcKLUlQVjZDVExfREVGTUNBU1RITElNID0gMTgKLUlQVjZDVExfR0lGX0hMSU0gPSAxOQotSVBWNkNUTF9LQU1FX1ZFUlNJT04gPSAyMAotSVBWNkNUTF9VU0VfREVQUkVDQVRFRCA9IDIxCi1JUFY2Q1RMX1JSX1BSVU5FID0gMjIKLUlQVjZDVExfTUFQUEVEX0FERFIgPSAyMwotSVBWNkNUTF9CSU5EVjZPTkxZID0gMjQKLUlQVjZDVExfUlRFWFBJUkUgPSAyNQotSVBWNkNUTF9SVE1JTkVYUElSRSA9IDI2Ci1JUFY2Q1RMX1JUTUFYQ0FDSEUgPSAyNwotSVBWNkNUTF9NQVhJRCA9IDI4CmRpZmYgLS1naXQgYS9MaWIvcGxhdC1mcmVlYnNkNS9yZWdlbiBiL0xpYi9wbGF0LWZyZWVic2Q1L3JlZ2VuCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA4YWE2ODk4Li4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LWZyZWVic2Q1L3JlZ2VuCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0jISAvYmluL3NoCi1zZXQgLXYKLXB5dGhvbiAuLi8uLi9Ub29scy9zY3JpcHRzL2gycHkucHkgLWkgJyh1X2xvbmcpJyAvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oCmRpZmYgLS1naXQgYS9MaWIvcGxhdC1mcmVlYnNkNi9JTi5weSBiL0xpYi9wbGF0LWZyZWVic2Q2L0lOLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NjBiZjg0Li4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LWZyZWVic2Q2L0lOLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNTUxICswLDAgQEAKLSMgR2VuZXJhdGVkIGJ5IGgycHkgZnJvbSAvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvY2RlZnMuaAotX19HTlVDTElLRV9BU00gPSAzCi1fX0dOVUNMSUtFX0FTTSA9IDIKLV9fR05VQ0xJS0VfX19UWVBFT0YgPSAxCi1fX0dOVUNMSUtFX19fT0ZGU0VUT0YgPSAxCi1fX0dOVUNMSUtFX19fU0VDVElPTiA9IDEKLV9fR05VQ0xJS0VfQVRUUklCVVRFX01PREVfREkgPSAxCi1fX0dOVUNMSUtFX0NUT1JfU0VDVElPTl9IQU5ETElORyA9IDEKLV9fR05VQ0xJS0VfQlVJTFRJTl9DT05TVEFOVF9QID0gMQotX19HTlVDTElLRV9CVUlMVElOX1ZBUkFSR1MgPSAxCi1fX0dOVUNMSUtFX0JVSUxUSU5fU1REQVJHID0gMQotX19HTlVDTElLRV9CVUlMVElOX1ZBQUxJU1QgPSAxCi1fX0dOVUNfVkFfTElTVF9DT01QQVRJQklMSVRZID0gMQotX19HTlVDTElLRV9CVUlMVElOX05FWFRfQVJHID0gMQotX19HTlVDTElLRV9CVUlMVElOX01FTUNQWSA9IDEKLV9fQ0NfU1VQUE9SVFNfSU5MSU5FID0gMQotX19DQ19TVVBQT1JUU19fX0lOTElORSA9IDEKLV9fQ0NfU1VQUE9SVFNfX19JTkxJTkVfXyA9IDEKLV9fQ0NfU1VQUE9SVFNfX19GVU5DX18gPSAxCi1fX0NDX1NVUFBPUlRTX1dBUk5JTkcgPSAxCi1fX0NDX1NVUFBPUlRTX1ZBUkFESUNfWFhYID0gMQotX19DQ19TVVBQT1JUU19EWU5BTUlDX0FSUkFZX0lOSVQgPSAxCi1fX0NDX0lOVF9JU18zMkJJVCA9IDEKLWRlZiBfX1AocHJvdG9zKTogcmV0dXJuIHByb3RvcwotCi1kZWYgX19TVFJJTkcoeCk6IHJldHVybiAjeAotCi1kZWYgX19YU1RSSU5HKHgpOiByZXR1cm4gX19TVFJJTkcoeCkKLQotZGVmIF9fUChwcm90b3MpOiByZXR1cm4gKCkKLQotZGVmIF9fU1RSSU5HKHgpOiByZXR1cm4gIngiCi0KLWRlZiBfX2FsaWduZWQoeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXyh4KSkpCi0KLWRlZiBfX3NlY3Rpb24oeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXyh4KSkpCi0KLWRlZiBfX2FsaWduZWQoeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXyh4KSkpCi0KLWRlZiBfX3NlY3Rpb24oeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXyh4KSkpCi0KLWRlZiBfX25vbm51bGwoeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX25vbm51bGxfXyh4KSkpCi0KLWRlZiBfX3ByZWRpY3RfdHJ1ZShleHApOiByZXR1cm4gX19idWlsdGluX2V4cGVjdCgoZXhwKSwgMSkKLQotZGVmIF9fcHJlZGljdF9mYWxzZShleHApOiByZXR1cm4gX19idWlsdGluX2V4cGVjdCgoZXhwKSwgMCkKLQotZGVmIF9fcHJlZGljdF90cnVlKGV4cCk6IHJldHVybiAoZXhwKQotCi1kZWYgX19wcmVkaWN0X2ZhbHNlKGV4cCk6IHJldHVybiAoZXhwKQotCi1kZWYgX19mb3JtYXRfYXJnKGZtdGFyZyk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9hcmdfXyAoZm10YXJnKSkpCi0KLWRlZiBfX0ZCU0RJRChzKTogcmV0dXJuIF9fSURTVFJJTkcoX19DT05DQVQoX19yY3NpZF8sX19MSU5FX18pLHMpCi0KLWRlZiBfX1JDU0lEKHMpOiByZXR1cm4gX19JRFNUUklORyhfX0NPTkNBVChfX3Jjc2lkXyxfX0xJTkVfXykscykKLQotZGVmIF9fUkNTSURfU09VUkNFKHMpOiByZXR1cm4gX19JRFNUUklORyhfX0NPTkNBVChfX3Jjc2lkX3NvdXJjZV8sX19MSU5FX18pLHMpCi0KLWRlZiBfX1NDQ1NJRChzKTogcmV0dXJuIF9fSURTVFJJTkcoX19DT05DQVQoX19zY2NzaWRfLF9fTElORV9fKSxzKQotCi1kZWYgX19DT1BZUklHSFQocyk6IHJldHVybiBfX0lEU1RSSU5HKF9fQ09OQ0FUKF9fY29weXJpZ2h0XyxfX0xJTkVfXykscykKLQotX1BPU0lYX0NfU09VUkNFID0gMTk5MDA5Ci1fUE9TSVhfQ19TT1VSQ0UgPSAxOTkyMDkKLV9fWFNJX1ZJU0lCTEUgPSA2MDAKLV9QT1NJWF9DX1NPVVJDRSA9IDIwMDExMgotX19YU0lfVklTSUJMRSA9IDUwMAotX1BPU0lYX0NfU09VUkNFID0gMTk5NTA2Ci1fUE9TSVhfQ19TT1VSQ0UgPSAxOTg4MDgKLV9fUE9TSVhfVklTSUJMRSA9IDIwMDExMgotX19JU09fQ19WSVNJQkxFID0gMTk5OQotX19QT1NJWF9WSVNJQkxFID0gMTk5NTA2Ci1fX0lTT19DX1ZJU0lCTEUgPSAxOTkwCi1fX1BPU0lYX1ZJU0lCTEUgPSAxOTkzMDkKLV9fSVNPX0NfVklTSUJMRSA9IDE5OTAKLV9fUE9TSVhfVklTSUJMRSA9IDE5OTIwOQotX19JU09fQ19WSVNJQkxFID0gMTk5MAotX19QT1NJWF9WSVNJQkxFID0gMTk5MDA5Ci1fX0lTT19DX1ZJU0lCTEUgPSAxOTkwCi1fX1BPU0lYX1ZJU0lCTEUgPSAxOTg4MDgKLV9fSVNPX0NfVklTSUJMRSA9IDAKLV9fUE9TSVhfVklTSUJMRSA9IDAKLV9fWFNJX1ZJU0lCTEUgPSAwCi1fX0JTRF9WSVNJQkxFID0gMAotX19JU09fQ19WSVNJQkxFID0gMTk5MAotX19QT1NJWF9WSVNJQkxFID0gMAotX19YU0lfVklTSUJMRSA9IDAKLV9fQlNEX1ZJU0lCTEUgPSAwCi1fX0lTT19DX1ZJU0lCTEUgPSAxOTk5Ci1fX1BPU0lYX1ZJU0lCTEUgPSAyMDAxMTIKLV9fWFNJX1ZJU0lCTEUgPSA2MDAKLV9fQlNEX1ZJU0lCTEUgPSAxCi1fX0lTT19DX1ZJU0lCTEUgPSAxOTk5Ci0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvX3R5cGVzLmgKLQotIyBJbmNsdWRlZCBmcm9tIG1hY2hpbmUvX3R5cGVzLmgKLQotIyBJbmNsdWRlZCBmcm9tIG1hY2hpbmUvZW5kaWFuLmgKLV9RVUFEX0hJR0hXT1JEID0gMQotX1FVQURfTE9XV09SRCA9IDAKLV9MSVRUTEVfRU5ESUFOID0gMTIzNAotX0JJR19FTkRJQU4gPSA0MzIxCi1fUERQX0VORElBTiA9IDM0MTIKLV9CWVRFX09SREVSID0gX0xJVFRMRV9FTkRJQU4KLUxJVFRMRV9FTkRJQU4gPSBfTElUVExFX0VORElBTgotQklHX0VORElBTiA9IF9CSUdfRU5ESUFOCi1QRFBfRU5ESUFOID0gX1BEUF9FTkRJQU4KLUJZVEVfT1JERVIgPSBfQllURV9PUkRFUgotZGVmIF9fd29yZF9zd2FwX2ludF92YXIoeCk6IHJldHVybiBcCi0KLWRlZiBfX3dvcmRfc3dhcF9pbnRfY29uc3QoeCk6IHJldHVybiBcCi0KLWRlZiBfX3dvcmRfc3dhcF9pbnQoeCk6IHJldHVybiBfX3dvcmRfc3dhcF9pbnRfdmFyKHgpCi0KLWRlZiBfX2J5dGVfc3dhcF9pbnRfdmFyKHgpOiByZXR1cm4gXAotCi1kZWYgX19ieXRlX3N3YXBfaW50X2NvbnN0KHgpOiByZXR1cm4gXAotCi1kZWYgX19ieXRlX3N3YXBfaW50KHgpOiByZXR1cm4gX19ieXRlX3N3YXBfaW50X3Zhcih4KQotCi1kZWYgX19ieXRlX3N3YXBfbG9uZ192YXIoeCk6IHJldHVybiBcCi0KLWRlZiBfX2J5dGVfc3dhcF9sb25nX2NvbnN0KHgpOiByZXR1cm4gXAotCi1kZWYgX19ieXRlX3N3YXBfbG9uZyh4KTogcmV0dXJuIF9fYnl0ZV9zd2FwX2xvbmdfdmFyKHgpCi0KLWRlZiBfX2J5dGVfc3dhcF93b3JkX3Zhcih4KTogcmV0dXJuIFwKLQotZGVmIF9fYnl0ZV9zd2FwX3dvcmRfY29uc3QoeCk6IHJldHVybiBcCi0KLWRlZiBfX2J5dGVfc3dhcF93b3JkKHgpOiByZXR1cm4gX19ieXRlX3N3YXBfd29yZF92YXIoeCkKLQotZGVmIF9faHRvbmwoeCk6IHJldHVybiBfX2Jzd2FwMzIoeCkKLQotZGVmIF9faHRvbnMoeCk6IHJldHVybiBfX2Jzd2FwMTYoeCkKLQotZGVmIF9fbnRvaGwoeCk6IHJldHVybiBfX2Jzd2FwMzIoeCkKLQotZGVmIF9fbnRvaHMoeCk6IHJldHVybiBfX2Jzd2FwMTYoeCkKLQotSVBQUk9UT19JUCA9IDAKLUlQUFJPVE9fSUNNUCA9IDEKLUlQUFJPVE9fVENQID0gNgotSVBQUk9UT19VRFAgPSAxNwotZGVmIGh0b25sKHgpOiByZXR1cm4gX19odG9ubCh4KQotCi1kZWYgaHRvbnMoeCk6IHJldHVybiBfX2h0b25zKHgpCi0KLWRlZiBudG9obCh4KTogcmV0dXJuIF9fbnRvaGwoeCkKLQotZGVmIG50b2hzKHgpOiByZXR1cm4gX19udG9ocyh4KQotCi1JUFBST1RPX1JBVyA9IDI1NQotSU5FVF9BRERSU1RSTEVOID0gMTYKLUlQUFJPVE9fSE9QT1BUUyA9IDAKLUlQUFJPVE9fSUdNUCA9IDIKLUlQUFJPVE9fR0dQID0gMwotSVBQUk9UT19JUFY0ID0gNAotSVBQUk9UT19JUElQID0gSVBQUk9UT19JUFY0Ci1JUFBST1RPX1NUID0gNwotSVBQUk9UT19FR1AgPSA4Ci1JUFBST1RPX1BJR1AgPSA5Ci1JUFBST1RPX1JDQ01PTiA9IDEwCi1JUFBST1RPX05WUElJID0gMTEKLUlQUFJPVE9fUFVQID0gMTIKLUlQUFJPVE9fQVJHVVMgPSAxMwotSVBQUk9UT19FTUNPTiA9IDE0Ci1JUFBST1RPX1hORVQgPSAxNQotSVBQUk9UT19DSEFPUyA9IDE2Ci1JUFBST1RPX01VWCA9IDE4Ci1JUFBST1RPX01FQVMgPSAxOQotSVBQUk9UT19ITVAgPSAyMAotSVBQUk9UT19QUk0gPSAyMQotSVBQUk9UT19JRFAgPSAyMgotSVBQUk9UT19UUlVOSzEgPSAyMwotSVBQUk9UT19UUlVOSzIgPSAyNAotSVBQUk9UT19MRUFGMSA9IDI1Ci1JUFBST1RPX0xFQUYyID0gMjYKLUlQUFJPVE9fUkRQID0gMjcKLUlQUFJPVE9fSVJUUCA9IDI4Ci1JUFBST1RPX1RQID0gMjkKLUlQUFJPVE9fQkxUID0gMzAKLUlQUFJPVE9fTlNQID0gMzEKLUlQUFJPVE9fSU5QID0gMzIKLUlQUFJPVE9fU0VQID0gMzMKLUlQUFJPVE9fM1BDID0gMzQKLUlQUFJPVE9fSURQUiA9IDM1Ci1JUFBST1RPX1hUUCA9IDM2Ci1JUFBST1RPX0REUCA9IDM3Ci1JUFBST1RPX0NNVFAgPSAzOAotSVBQUk9UT19UUFhYID0gMzkKLUlQUFJPVE9fSUwgPSA0MAotSVBQUk9UT19JUFY2ID0gNDEKLUlQUFJPVE9fU0RSUCA9IDQyCi1JUFBST1RPX1JPVVRJTkcgPSA0MwotSVBQUk9UT19GUkFHTUVOVCA9IDQ0Ci1JUFBST1RPX0lEUlAgPSA0NQotSVBQUk9UT19SU1ZQID0gNDYKLUlQUFJPVE9fR1JFID0gNDcKLUlQUFJPVE9fTUhSUCA9IDQ4Ci1JUFBST1RPX0JIQSA9IDQ5Ci1JUFBST1RPX0VTUCA9IDUwCi1JUFBST1RPX0FIID0gNTEKLUlQUFJPVE9fSU5MU1AgPSA1MgotSVBQUk9UT19TV0lQRSA9IDUzCi1JUFBST1RPX05IUlAgPSA1NAotSVBQUk9UT19NT0JJTEUgPSA1NQotSVBQUk9UT19UTFNQID0gNTYKLUlQUFJPVE9fU0tJUCA9IDU3Ci1JUFBST1RPX0lDTVBWNiA9IDU4Ci1JUFBST1RPX05PTkUgPSA1OQotSVBQUk9UT19EU1RPUFRTID0gNjAKLUlQUFJPVE9fQUhJUCA9IDYxCi1JUFBST1RPX0NGVFAgPSA2MgotSVBQUk9UT19IRUxMTyA9IDYzCi1JUFBST1RPX1NBVEVYUEFLID0gNjQKLUlQUFJPVE9fS1JZUFRPTEFOID0gNjUKLUlQUFJPVE9fUlZEID0gNjYKLUlQUFJPVE9fSVBQQyA9IDY3Ci1JUFBST1RPX0FERlMgPSA2OAotSVBQUk9UT19TQVRNT04gPSA2OQotSVBQUk9UT19WSVNBID0gNzAKLUlQUFJPVE9fSVBDViA9IDcxCi1JUFBST1RPX0NQTlggPSA3MgotSVBQUk9UT19DUEhCID0gNzMKLUlQUFJPVE9fV1NOID0gNzQKLUlQUFJPVE9fUFZQID0gNzUKLUlQUFJPVE9fQlJTQVRNT04gPSA3NgotSVBQUk9UT19ORCA9IDc3Ci1JUFBST1RPX1dCTU9OID0gNzgKLUlQUFJPVE9fV0JFWFBBSyA9IDc5Ci1JUFBST1RPX0VPTiA9IDgwCi1JUFBST1RPX1ZNVFAgPSA4MQotSVBQUk9UT19TVk1UUCA9IDgyCi1JUFBST1RPX1ZJTkVTID0gODMKLUlQUFJPVE9fVFRQID0gODQKLUlQUFJPVE9fSUdQID0gODUKLUlQUFJPVE9fREdQID0gODYKLUlQUFJPVE9fVENGID0gODcKLUlQUFJPVE9fSUdSUCA9IDg4Ci1JUFBST1RPX09TUEZJR1AgPSA4OQotSVBQUk9UT19TUlBDID0gOTAKLUlQUFJPVE9fTEFSUCA9IDkxCi1JUFBST1RPX01UUCA9IDkyCi1JUFBST1RPX0FYMjUgPSA5MwotSVBQUk9UT19JUEVJUCA9IDk0Ci1JUFBST1RPX01JQ1AgPSA5NQotSVBQUk9UT19TQ0NTUCA9IDk2Ci1JUFBST1RPX0VUSEVSSVAgPSA5NwotSVBQUk9UT19FTkNBUCA9IDk4Ci1JUFBST1RPX0FQRVMgPSA5OQotSVBQUk9UT19HTVRQID0gMTAwCi1JUFBST1RPX0lQQ09NUCA9IDEwOAotSVBQUk9UT19TQ1RQID0gMTMyCi1JUFBST1RPX1BJTSA9IDEwMwotSVBQUk9UT19DQVJQID0gMTEyCi1JUFBST1RPX1BHTSA9IDExMwotSVBQUk9UT19QRlNZTkMgPSAyNDAKLUlQUFJPVE9fT0xEX0RJVkVSVCA9IDI1NAotSVBQUk9UT19NQVggPSAyNTYKLUlQUFJPVE9fRE9ORSA9IDI1NwotSVBQUk9UT19ESVZFUlQgPSAyNTgKLUlQUFJPVE9fU1BBQ0VSID0gMzI3NjcKLUlQUE9SVF9SRVNFUlZFRCA9IDEwMjQKLUlQUE9SVF9ISUZJUlNUQVVUTyA9IDQ5MTUyCi1JUFBPUlRfSElMQVNUQVVUTyA9IDY1NTM1Ci1JUFBPUlRfUkVTRVJWRURTVEFSVCA9IDYwMAotSVBQT1JUX01BWCA9IDY1NTM1Ci1kZWYgSU5fQ0xBU1NBKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmIDB4ODAwMDAwMDApID09IDApCi0KLUlOX0NMQVNTQV9ORVQgPSAweGZmMDAwMDAwCi1JTl9DTEFTU0FfTlNISUZUID0gMjQKLUlOX0NMQVNTQV9IT1NUID0gMHgwMGZmZmZmZgotSU5fQ0xBU1NBX01BWCA9IDEyOAotZGVmIElOX0NMQVNTQihpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAweGMwMDAwMDAwKSA9PSAweDgwMDAwMDAwKQotCi1JTl9DTEFTU0JfTkVUID0gMHhmZmZmMDAwMAotSU5fQ0xBU1NCX05TSElGVCA9IDE2Ci1JTl9DTEFTU0JfSE9TVCA9IDB4MDAwMGZmZmYKLUlOX0NMQVNTQl9NQVggPSA2NTUzNgotZGVmIElOX0NMQVNTQyhpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAweGUwMDAwMDAwKSA9PSAweGMwMDAwMDAwKQotCi1JTl9DTEFTU0NfTkVUID0gMHhmZmZmZmYwMAotSU5fQ0xBU1NDX05TSElGVCA9IDgKLUlOX0NMQVNTQ19IT1NUID0gMHgwMDAwMDBmZgotZGVmIElOX0NMQVNTRChpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAweGYwMDAwMDAwKSA9PSAweGUwMDAwMDAwKQotCi1JTl9DTEFTU0RfTkVUID0gMHhmMDAwMDAwMAotSU5fQ0xBU1NEX05TSElGVCA9IDI4Ci1JTl9DTEFTU0RfSE9TVCA9IDB4MGZmZmZmZmYKLWRlZiBJTl9NVUxUSUNBU1QoaSk6IHJldHVybiBJTl9DTEFTU0QoaSkKLQotZGVmIElOX0VYUEVSSU1FTlRBTChpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAweGYwMDAwMDAwKSA9PSAweGYwMDAwMDAwKQotCi1kZWYgSU5fQkFEQ0xBU1MoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgMHhmMDAwMDAwMCkgPT0gMHhmMDAwMDAwMCkKLQotSU5BRERSX05PTkUgPSAweGZmZmZmZmZmCi1JTl9MT09QQkFDS05FVCA9IDEyNwotSVBfT1BUSU9OUyA9IDEKLUlQX0hEUklOQ0wgPSAyCi1JUF9UT1MgPSAzCi1JUF9UVEwgPSA0Ci1JUF9SRUNWT1BUUyA9IDUKLUlQX1JFQ1ZSRVRPUFRTID0gNgotSVBfUkVDVkRTVEFERFIgPSA3Ci1JUF9TRU5EU1JDQUREUiA9IElQX1JFQ1ZEU1RBRERSCi1JUF9SRVRPUFRTID0gOAotSVBfTVVMVElDQVNUX0lGID0gOQotSVBfTVVMVElDQVNUX1RUTCA9IDEwCi1JUF9NVUxUSUNBU1RfTE9PUCA9IDExCi1JUF9BRERfTUVNQkVSU0hJUCA9IDEyCi1JUF9EUk9QX01FTUJFUlNISVAgPSAxMwotSVBfTVVMVElDQVNUX1ZJRiA9IDE0Ci1JUF9SU1ZQX09OID0gMTUKLUlQX1JTVlBfT0ZGID0gMTYKLUlQX1JTVlBfVklGX09OID0gMTcKLUlQX1JTVlBfVklGX09GRiA9IDE4Ci1JUF9QT1JUUkFOR0UgPSAxOQotSVBfUkVDVklGID0gMjAKLUlQX0lQU0VDX1BPTElDWSA9IDIxCi1JUF9GQUlUSCA9IDIyCi1JUF9PTkVTQkNBU1QgPSAyMwotSVBfRldfVEFCTEVfQUREID0gNDAKLUlQX0ZXX1RBQkxFX0RFTCA9IDQxCi1JUF9GV19UQUJMRV9GTFVTSCA9IDQyCi1JUF9GV19UQUJMRV9HRVRTSVpFID0gNDMKLUlQX0ZXX1RBQkxFX0xJU1QgPSA0NAotSVBfRldfQUREID0gNTAKLUlQX0ZXX0RFTCA9IDUxCi1JUF9GV19GTFVTSCA9IDUyCi1JUF9GV19aRVJPID0gNTMKLUlQX0ZXX0dFVCA9IDU0Ci1JUF9GV19SRVNFVExPRyA9IDU1Ci1JUF9EVU1NWU5FVF9DT05GSUdVUkUgPSA2MAotSVBfRFVNTVlORVRfREVMID0gNjEKLUlQX0RVTU1ZTkVUX0ZMVVNIID0gNjIKLUlQX0RVTU1ZTkVUX0dFVCA9IDY0Ci1JUF9SRUNWVFRMID0gNjUKLUlQX01JTlRUTCA9IDY2Ci1JUF9ET05URlJBRyA9IDY3Ci1JUF9ERUZBVUxUX01VTFRJQ0FTVF9UVEwgPSAxCi1JUF9ERUZBVUxUX01VTFRJQ0FTVF9MT09QID0gMQotSVBfTUFYX01FTUJFUlNISVBTID0gMjAKLUlQX1BPUlRSQU5HRV9ERUZBVUxUID0gMAotSVBfUE9SVFJBTkdFX0hJR0ggPSAxCi1JUF9QT1JUUkFOR0VfTE9XID0gMgotSVBQUk9UT19NQVhJRCA9IChJUFBST1RPX0FIICsgMSkKLUlQQ1RMX0ZPUldBUkRJTkcgPSAxCi1JUENUTF9TRU5EUkVESVJFQ1RTID0gMgotSVBDVExfREVGVFRMID0gMwotSVBDVExfREVGTVRVID0gNAotSVBDVExfUlRFWFBJUkUgPSA1Ci1JUENUTF9SVE1JTkVYUElSRSA9IDYKLUlQQ1RMX1JUTUFYQ0FDSEUgPSA3Ci1JUENUTF9TT1VSQ0VST1VURSA9IDgKLUlQQ1RMX0RJUkVDVEVEQlJPQURDQVNUID0gOQotSVBDVExfSU5UUlFNQVhMRU4gPSAxMAotSVBDVExfSU5UUlFEUk9QUyA9IDExCi1JUENUTF9TVEFUUyA9IDEyCi1JUENUTF9BQ0NFUFRTT1VSQ0VST1VURSA9IDEzCi1JUENUTF9GQVNURk9SV0FSRElORyA9IDE0Ci1JUENUTF9LRUVQRkFJVEggPSAxNQotSVBDVExfR0lGX1RUTCA9IDE2Ci1JUENUTF9NQVhJRCA9IDE3Ci1kZWYgaW5fbnVsbGhvc3QoeCk6IHJldHVybiAoKHgpLnNfYWRkciA9PSBJTkFERFJfQU5ZKQotCi0KLSMgSW5jbHVkZWQgZnJvbSBuZXRpbmV0Ni9pbjYuaAotX19LQU1FX1ZFUlNJT04gPSAiRnJlZUJTRCIKLUlQVjZQT1JUX1JFU0VSVkVEID0gMTAyNAotSVBWNlBPUlRfQU5PTk1JTiA9IDQ5MTUyCi1JUFY2UE9SVF9BTk9OTUFYID0gNjU1MzUKLUlQVjZQT1JUX1JFU0VSVkVETUlOID0gNjAwCi1JUFY2UE9SVF9SRVNFUlZFRE1BWCA9IChJUFY2UE9SVF9SRVNFUlZFRC0xKQotSU5FVDZfQUREUlNUUkxFTiA9IDQ2Ci1JUFY2X0FERFJfSU5UMzJfT05FID0gMQotSVBWNl9BRERSX0lOVDMyX1RXTyA9IDIKLUlQVjZfQUREUl9JTlQzMl9NTkwgPSAweGZmMDEwMDAwCi1JUFY2X0FERFJfSU5UMzJfTUxMID0gMHhmZjAyMDAwMAotSVBWNl9BRERSX0lOVDMyX1NNUCA9IDB4MDAwMGZmZmYKLUlQVjZfQUREUl9JTlQxNl9VTEwgPSAweGZlODAKLUlQVjZfQUREUl9JTlQxNl9VU0wgPSAweGZlYzAKLUlQVjZfQUREUl9JTlQxNl9NTEwgPSAweGZmMDIKLUlQVjZfQUREUl9JTlQzMl9PTkUgPSAweDAxMDAwMDAwCi1JUFY2X0FERFJfSU5UMzJfVFdPID0gMHgwMjAwMDAwMAotSVBWNl9BRERSX0lOVDMyX01OTCA9IDB4MDAwMDAxZmYKLUlQVjZfQUREUl9JTlQzMl9NTEwgPSAweDAwMDAwMmZmCi1JUFY2X0FERFJfSU5UMzJfU01QID0gMHhmZmZmMDAwMAotSVBWNl9BRERSX0lOVDE2X1VMTCA9IDB4ODBmZQotSVBWNl9BRERSX0lOVDE2X1VTTCA9IDB4YzBmZQotSVBWNl9BRERSX0lOVDE2X01MTCA9IDB4MDJmZgotZGVmIElONl9JU19BRERSX1VOU1BFQ0lGSUVEKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTE9PUEJBQ0soYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9WNENPTVBBVChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1Y0TUFQUEVEKGEpOiByZXR1cm4gXAotCi1JUFY2X0FERFJfU0NPUEVfTk9ERUxPQ0FMID0gMHgwMQotSVBWNl9BRERSX1NDT1BFX0lOVEZBQ0VMT0NBTCA9IDB4MDEKLUlQVjZfQUREUl9TQ09QRV9MSU5LTE9DQUwgPSAweDAyCi1JUFY2X0FERFJfU0NPUEVfU0lURUxPQ0FMID0gMHgwNQotSVBWNl9BRERSX1NDT1BFX09SR0xPQ0FMID0gMHgwOAotSVBWNl9BRERSX1NDT1BFX0dMT0JBTCA9IDB4MGUKLV9fSVBWNl9BRERSX1NDT1BFX05PREVMT0NBTCA9IDB4MDEKLV9fSVBWNl9BRERSX1NDT1BFX0lOVEZBQ0VMT0NBTCA9IDB4MDEKLV9fSVBWNl9BRERSX1NDT1BFX0xJTktMT0NBTCA9IDB4MDIKLV9fSVBWNl9BRERSX1NDT1BFX1NJVEVMT0NBTCA9IDB4MDUKLV9fSVBWNl9BRERSX1NDT1BFX09SR0xPQ0FMID0gMHgwOAotX19JUFY2X0FERFJfU0NPUEVfR0xPQkFMID0gMHgwZQotZGVmIElONl9JU19BRERSX0xJTktMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1NJVEVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX05PREVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0lOVEZBQ0VMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0xJTktMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX1NJVEVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX09SR0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfR0xPQkFMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTk9ERUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfU0lURUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfT1JHTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19HTE9CQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfU0NPUEVfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSUZBNl9JU19ERVBSRUNBVEVEKGEpOiByZXR1cm4gXAotCi1kZWYgSUZBNl9JU19JTlZBTElEKGEpOiByZXR1cm4gXAotCi1JUFY2X09QVElPTlMgPSAxCi1JUFY2X1JFQ1ZPUFRTID0gNQotSVBWNl9SRUNWUkVUT1BUUyA9IDYKLUlQVjZfUkVDVkRTVEFERFIgPSA3Ci1JUFY2X1JFVE9QVFMgPSA4Ci1JUFY2X1NPQ0tPUFRfUkVTRVJWRUQxID0gMwotSVBWNl9VTklDQVNUX0hPUFMgPSA0Ci1JUFY2X01VTFRJQ0FTVF9JRiA9IDkKLUlQVjZfTVVMVElDQVNUX0hPUFMgPSAxMAotSVBWNl9NVUxUSUNBU1RfTE9PUCA9IDExCi1JUFY2X0pPSU5fR1JPVVAgPSAxMgotSVBWNl9MRUFWRV9HUk9VUCA9IDEzCi1JUFY2X1BPUlRSQU5HRSA9IDE0Ci1JQ01QNl9GSUxURVIgPSAxOAotSVBWNl8yMjkyUEtUSU5GTyA9IDE5Ci1JUFY2XzIyOTJIT1BMSU1JVCA9IDIwCi1JUFY2XzIyOTJORVhUSE9QID0gMjEKLUlQVjZfMjI5MkhPUE9QVFMgPSAyMgotSVBWNl8yMjkyRFNUT1BUUyA9IDIzCi1JUFY2XzIyOTJSVEhEUiA9IDI0Ci1JUFY2XzIyOTJQS1RPUFRJT05TID0gMjUKLUlQVjZfQ0hFQ0tTVU0gPSAyNgotSVBWNl9WNk9OTFkgPSAyNwotSVBWNl9CSU5EVjZPTkxZID0gSVBWNl9WNk9OTFkKLUlQVjZfSVBTRUNfUE9MSUNZID0gMjgKLUlQVjZfRkFJVEggPSAyOQotSVBWNl9GV19BREQgPSAzMAotSVBWNl9GV19ERUwgPSAzMQotSVBWNl9GV19GTFVTSCA9IDMyCi1JUFY2X0ZXX1pFUk8gPSAzMwotSVBWNl9GV19HRVQgPSAzNAotSVBWNl9SVEhEUkRTVE9QVFMgPSAzNQotSVBWNl9SRUNWUEtUSU5GTyA9IDM2Ci1JUFY2X1JFQ1ZIT1BMSU1JVCA9IDM3Ci1JUFY2X1JFQ1ZSVEhEUiA9IDM4Ci1JUFY2X1JFQ1ZIT1BPUFRTID0gMzkKLUlQVjZfUkVDVkRTVE9QVFMgPSA0MAotSVBWNl9SRUNWUlRIRFJEU1RPUFRTID0gNDEKLUlQVjZfVVNFX01JTl9NVFUgPSA0MgotSVBWNl9SRUNWUEFUSE1UVSA9IDQzCi1JUFY2X1BBVEhNVFUgPSA0NAotSVBWNl9SRUFDSENPTkYgPSA0NQotSVBWNl9QS1RJTkZPID0gNDYKLUlQVjZfSE9QTElNSVQgPSA0NwotSVBWNl9ORVhUSE9QID0gNDgKLUlQVjZfSE9QT1BUUyA9IDQ5Ci1JUFY2X0RTVE9QVFMgPSA1MAotSVBWNl9SVEhEUiA9IDUxCi1JUFY2X1BLVE9QVElPTlMgPSA1MgotSVBWNl9SRUNWVENMQVNTID0gNTcKLUlQVjZfQVVUT0ZMT1dMQUJFTCA9IDU5Ci1JUFY2X1RDTEFTUyA9IDYxCi1JUFY2X0RPTlRGUkFHID0gNjIKLUlQVjZfUFJFRkVSX1RFTVBBRERSID0gNjMKLUlQVjZfUlRIRFJfTE9PU0UgPSAwCi1JUFY2X1JUSERSX1NUUklDVCA9IDEKLUlQVjZfUlRIRFJfVFlQRV8wID0gMAotSVBWNl9ERUZBVUxUX01VTFRJQ0FTVF9IT1BTID0gMQotSVBWNl9ERUZBVUxUX01VTFRJQ0FTVF9MT09QID0gMQotSVBWNl9QT1JUUkFOR0VfREVGQVVMVCA9IDAKLUlQVjZfUE9SVFJBTkdFX0hJR0ggPSAxCi1JUFY2X1BPUlRSQU5HRV9MT1cgPSAyCi1JUFY2UFJPVE9fTUFYSUQgPSAoSVBQUk9UT19QSU0gKyAxKQotSVBWNkNUTF9GT1JXQVJESU5HID0gMQotSVBWNkNUTF9TRU5EUkVESVJFQ1RTID0gMgotSVBWNkNUTF9ERUZITElNID0gMwotSVBWNkNUTF9ERUZNVFUgPSA0Ci1JUFY2Q1RMX0ZPUldTUkNSVCA9IDUKLUlQVjZDVExfU1RBVFMgPSA2Ci1JUFY2Q1RMX01SVFNUQVRTID0gNwotSVBWNkNUTF9NUlRQUk9UTyA9IDgKLUlQVjZDVExfTUFYRlJBR1BBQ0tFVFMgPSA5Ci1JUFY2Q1RMX1NPVVJDRUNIRUNLID0gMTAKLUlQVjZDVExfU09VUkNFQ0hFQ0tfTE9HSU5UID0gMTEKLUlQVjZDVExfQUNDRVBUX1JUQURWID0gMTIKLUlQVjZDVExfS0VFUEZBSVRIID0gMTMKLUlQVjZDVExfTE9HX0lOVEVSVkFMID0gMTQKLUlQVjZDVExfSERSTkVTVExJTUlUID0gMTUKLUlQVjZDVExfREFEX0NPVU5UID0gMTYKLUlQVjZDVExfQVVUT19GTE9XTEFCRUwgPSAxNwotSVBWNkNUTF9ERUZNQ0FTVEhMSU0gPSAxOAotSVBWNkNUTF9HSUZfSExJTSA9IDE5Ci1JUFY2Q1RMX0tBTUVfVkVSU0lPTiA9IDIwCi1JUFY2Q1RMX1VTRV9ERVBSRUNBVEVEID0gMjEKLUlQVjZDVExfUlJfUFJVTkUgPSAyMgotSVBWNkNUTF9NQVBQRURfQUREUiA9IDIzCi1JUFY2Q1RMX1Y2T05MWSA9IDI0Ci1JUFY2Q1RMX1JURVhQSVJFID0gMjUKLUlQVjZDVExfUlRNSU5FWFBJUkUgPSAyNgotSVBWNkNUTF9SVE1BWENBQ0hFID0gMjcKLUlQVjZDVExfVVNFVEVNUEFERFIgPSAzMgotSVBWNkNUTF9URU1QUExUSU1FID0gMzMKLUlQVjZDVExfVEVNUFZMVElNRSA9IDM0Ci1JUFY2Q1RMX0FVVE9fTElOS0xPQ0FMID0gMzUKLUlQVjZDVExfUklQNlNUQVRTID0gMzYKLUlQVjZDVExfUFJFRkVSX1RFTVBBRERSID0gMzcKLUlQVjZDVExfQUREUkNUTFBPTElDWSA9IDM4Ci1JUFY2Q1RMX1VTRV9ERUZBVUxUWk9ORSA9IDM5Ci1JUFY2Q1RMX01BWEZSQUdTID0gNDEKLUlQVjZDVExfSUZRID0gNDIKLUlQVjZDVExfSVNBVEFQUlRSID0gNDMKLUlQVjZDVExfTUNBU1RfUE1UVSA9IDQ0Ci1JUFY2Q1RMX1NURUFMVEggPSA0NQotSVBWNkNUTF9NQVhJRCA9IDQ2CmRpZmYgLS1naXQgYS9MaWIvcGxhdC1mcmVlYnNkNi9yZWdlbiBiL0xpYi9wbGF0LWZyZWVic2Q2L3JlZ2VuCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA4YWE2ODk4Li4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LWZyZWVic2Q2L3JlZ2VuCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0jISAvYmluL3NoCi1zZXQgLXYKLXB5dGhvbiAuLi8uLi9Ub29scy9zY3JpcHRzL2gycHkucHkgLWkgJyh1X2xvbmcpJyAvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oCmRpZmYgLS1naXQgYS9MaWIvcGxhdC1mcmVlYnNkNy9JTi5weSBiL0xpYi9wbGF0LWZyZWVic2Q3L0lOLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZTNiM2EyLi4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LWZyZWVic2Q3L0lOLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNTcxICswLDAgQEAKLSMgR2VuZXJhdGVkIGJ5IGgycHkgZnJvbSAvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvY2RlZnMuaAotX19HTlVDTElLRV9BU00gPSAzCi1fX0dOVUNMSUtFX0FTTSA9IDIKLV9fR05VQ0xJS0VfX19UWVBFT0YgPSAxCi1fX0dOVUNMSUtFX19fT0ZGU0VUT0YgPSAxCi1fX0dOVUNMSUtFX19fU0VDVElPTiA9IDEKLV9fR05VQ0xJS0VfQVRUUklCVVRFX01PREVfREkgPSAxCi1fX0dOVUNMSUtFX0NUT1JfU0VDVElPTl9IQU5ETElORyA9IDEKLV9fR05VQ0xJS0VfQlVJTFRJTl9DT05TVEFOVF9QID0gMQotX19HTlVDTElLRV9CVUlMVElOX1ZBUkFSR1MgPSAxCi1fX0dOVUNMSUtFX0JVSUxUSU5fU1REQVJHID0gMQotX19HTlVDTElLRV9CVUlMVElOX1ZBQUxJU1QgPSAxCi1fX0dOVUNfVkFfTElTVF9DT01QQVRJQklMSVRZID0gMQotX19HTlVDTElLRV9CVUlMVElOX05FWFRfQVJHID0gMQotX19HTlVDTElLRV9CVUlMVElOX01FTUNQWSA9IDEKLV9fQ0NfU1VQUE9SVFNfSU5MSU5FID0gMQotX19DQ19TVVBQT1JUU19fX0lOTElORSA9IDEKLV9fQ0NfU1VQUE9SVFNfX19JTkxJTkVfXyA9IDEKLV9fQ0NfU1VQUE9SVFNfX19GVU5DX18gPSAxCi1fX0NDX1NVUFBPUlRTX1dBUk5JTkcgPSAxCi1fX0NDX1NVUFBPUlRTX1ZBUkFESUNfWFhYID0gMQotX19DQ19TVVBQT1JUU19EWU5BTUlDX0FSUkFZX0lOSVQgPSAxCi1fX0NDX0lOVF9JU18zMkJJVCA9IDEKLWRlZiBfX1AocHJvdG9zKTogcmV0dXJuIHByb3RvcwotCi1kZWYgX19TVFJJTkcoeCk6IHJldHVybiAjeAotCi1kZWYgX19YU1RSSU5HKHgpOiByZXR1cm4gX19TVFJJTkcoeCkKLQotZGVmIF9fUChwcm90b3MpOiByZXR1cm4gKCkKLQotZGVmIF9fU1RSSU5HKHgpOiByZXR1cm4gIngiCi0KLWRlZiBfX2FsaWduZWQoeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXyh4KSkpCi0KLWRlZiBfX3NlY3Rpb24oeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXyh4KSkpCi0KLWRlZiBfX2FsaWduZWQoeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXyh4KSkpCi0KLWRlZiBfX3NlY3Rpb24oeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXyh4KSkpCi0KLWRlZiBfX25vbm51bGwoeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX25vbm51bGxfXyh4KSkpCi0KLWRlZiBfX3ByZWRpY3RfdHJ1ZShleHApOiByZXR1cm4gX19idWlsdGluX2V4cGVjdCgoZXhwKSwgMSkKLQotZGVmIF9fcHJlZGljdF9mYWxzZShleHApOiByZXR1cm4gX19idWlsdGluX2V4cGVjdCgoZXhwKSwgMCkKLQotZGVmIF9fcHJlZGljdF90cnVlKGV4cCk6IHJldHVybiAoZXhwKQotCi1kZWYgX19wcmVkaWN0X2ZhbHNlKGV4cCk6IHJldHVybiAoZXhwKQotCi1kZWYgX19mb3JtYXRfYXJnKGZtdGFyZyk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9hcmdfXyAoZm10YXJnKSkpCi0KLWRlZiBfX0ZCU0RJRChzKTogcmV0dXJuIF9fSURTVFJJTkcoX19DT05DQVQoX19yY3NpZF8sX19MSU5FX18pLHMpCi0KLWRlZiBfX1JDU0lEKHMpOiByZXR1cm4gX19JRFNUUklORyhfX0NPTkNBVChfX3Jjc2lkXyxfX0xJTkVfXykscykKLQotZGVmIF9fUkNTSURfU09VUkNFKHMpOiByZXR1cm4gX19JRFNUUklORyhfX0NPTkNBVChfX3Jjc2lkX3NvdXJjZV8sX19MSU5FX18pLHMpCi0KLWRlZiBfX1NDQ1NJRChzKTogcmV0dXJuIF9fSURTVFJJTkcoX19DT05DQVQoX19zY2NzaWRfLF9fTElORV9fKSxzKQotCi1kZWYgX19DT1BZUklHSFQocyk6IHJldHVybiBfX0lEU1RSSU5HKF9fQ09OQ0FUKF9fY29weXJpZ2h0XyxfX0xJTkVfXykscykKLQotX1BPU0lYX0NfU09VUkNFID0gMTk5MDA5Ci1fUE9TSVhfQ19TT1VSQ0UgPSAxOTkyMDkKLV9fWFNJX1ZJU0lCTEUgPSA2MDAKLV9QT1NJWF9DX1NPVVJDRSA9IDIwMDExMgotX19YU0lfVklTSUJMRSA9IDUwMAotX1BPU0lYX0NfU09VUkNFID0gMTk5NTA2Ci1fUE9TSVhfQ19TT1VSQ0UgPSAxOTg4MDgKLV9fUE9TSVhfVklTSUJMRSA9IDIwMDExMgotX19JU09fQ19WSVNJQkxFID0gMTk5OQotX19QT1NJWF9WSVNJQkxFID0gMTk5NTA2Ci1fX0lTT19DX1ZJU0lCTEUgPSAxOTkwCi1fX1BPU0lYX1ZJU0lCTEUgPSAxOTkzMDkKLV9fSVNPX0NfVklTSUJMRSA9IDE5OTAKLV9fUE9TSVhfVklTSUJMRSA9IDE5OTIwOQotX19JU09fQ19WSVNJQkxFID0gMTk5MAotX19QT1NJWF9WSVNJQkxFID0gMTk5MDA5Ci1fX0lTT19DX1ZJU0lCTEUgPSAxOTkwCi1fX1BPU0lYX1ZJU0lCTEUgPSAxOTg4MDgKLV9fSVNPX0NfVklTSUJMRSA9IDAKLV9fUE9TSVhfVklTSUJMRSA9IDAKLV9fWFNJX1ZJU0lCTEUgPSAwCi1fX0JTRF9WSVNJQkxFID0gMAotX19JU09fQ19WSVNJQkxFID0gMTk5MAotX19QT1NJWF9WSVNJQkxFID0gMAotX19YU0lfVklTSUJMRSA9IDAKLV9fQlNEX1ZJU0lCTEUgPSAwCi1fX0lTT19DX1ZJU0lCTEUgPSAxOTk5Ci1fX1BPU0lYX1ZJU0lCTEUgPSAyMDAxMTIKLV9fWFNJX1ZJU0lCTEUgPSA2MDAKLV9fQlNEX1ZJU0lCTEUgPSAxCi1fX0lTT19DX1ZJU0lCTEUgPSAxOTk5Ci0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvX3R5cGVzLmgKLQotIyBJbmNsdWRlZCBmcm9tIG1hY2hpbmUvX3R5cGVzLmgKLQotIyBJbmNsdWRlZCBmcm9tIG1hY2hpbmUvZW5kaWFuLmgKLV9RVUFEX0hJR0hXT1JEID0gMQotX1FVQURfTE9XV09SRCA9IDAKLV9MSVRUTEVfRU5ESUFOID0gMTIzNAotX0JJR19FTkRJQU4gPSA0MzIxCi1fUERQX0VORElBTiA9IDM0MTIKLV9CWVRFX09SREVSID0gX0xJVFRMRV9FTkRJQU4KLUxJVFRMRV9FTkRJQU4gPSBfTElUVExFX0VORElBTgotQklHX0VORElBTiA9IF9CSUdfRU5ESUFOCi1QRFBfRU5ESUFOID0gX1BEUF9FTkRJQU4KLUJZVEVfT1JERVIgPSBfQllURV9PUkRFUgotZGVmIF9fd29yZF9zd2FwX2ludF92YXIoeCk6IHJldHVybiBcCi0KLWRlZiBfX3dvcmRfc3dhcF9pbnRfY29uc3QoeCk6IHJldHVybiBcCi0KLWRlZiBfX3dvcmRfc3dhcF9pbnQoeCk6IHJldHVybiBfX3dvcmRfc3dhcF9pbnRfdmFyKHgpCi0KLWRlZiBfX2J5dGVfc3dhcF9pbnRfdmFyKHgpOiByZXR1cm4gXAotCi1kZWYgX19ieXRlX3N3YXBfaW50X2NvbnN0KHgpOiByZXR1cm4gXAotCi1kZWYgX19ieXRlX3N3YXBfaW50KHgpOiByZXR1cm4gX19ieXRlX3N3YXBfaW50X3Zhcih4KQotCi1kZWYgX19ieXRlX3N3YXBfd29yZF92YXIoeCk6IHJldHVybiBcCi0KLWRlZiBfX2J5dGVfc3dhcF93b3JkX2NvbnN0KHgpOiByZXR1cm4gXAotCi1kZWYgX19ieXRlX3N3YXBfd29yZCh4KTogcmV0dXJuIF9fYnl0ZV9zd2FwX3dvcmRfdmFyKHgpCi0KLWRlZiBfX2h0b25sKHgpOiByZXR1cm4gX19ic3dhcDMyKHgpCi0KLWRlZiBfX2h0b25zKHgpOiByZXR1cm4gX19ic3dhcDE2KHgpCi0KLWRlZiBfX250b2hsKHgpOiByZXR1cm4gX19ic3dhcDMyKHgpCi0KLWRlZiBfX250b2hzKHgpOiByZXR1cm4gX19ic3dhcDE2KHgpCi0KLUlQUFJPVE9fSVAgPSAwCi1JUFBST1RPX0lDTVAgPSAxCi1JUFBST1RPX1RDUCA9IDYKLUlQUFJPVE9fVURQID0gMTcKLWRlZiBodG9ubCh4KTogcmV0dXJuIF9faHRvbmwoeCkKLQotZGVmIGh0b25zKHgpOiByZXR1cm4gX19odG9ucyh4KQotCi1kZWYgbnRvaGwoeCk6IHJldHVybiBfX250b2hsKHgpCi0KLWRlZiBudG9ocyh4KTogcmV0dXJuIF9fbnRvaHMoeCkKLQotSVBQUk9UT19SQVcgPSAyNTUKLUlORVRfQUREUlNUUkxFTiA9IDE2Ci1JUFBST1RPX0hPUE9QVFMgPSAwCi1JUFBST1RPX0lHTVAgPSAyCi1JUFBST1RPX0dHUCA9IDMKLUlQUFJPVE9fSVBWNCA9IDQKLUlQUFJPVE9fSVBJUCA9IElQUFJPVE9fSVBWNAotSVBQUk9UT19TVCA9IDcKLUlQUFJPVE9fRUdQID0gOAotSVBQUk9UT19QSUdQID0gOQotSVBQUk9UT19SQ0NNT04gPSAxMAotSVBQUk9UT19OVlBJSSA9IDExCi1JUFBST1RPX1BVUCA9IDEyCi1JUFBST1RPX0FSR1VTID0gMTMKLUlQUFJPVE9fRU1DT04gPSAxNAotSVBQUk9UT19YTkVUID0gMTUKLUlQUFJPVE9fQ0hBT1MgPSAxNgotSVBQUk9UT19NVVggPSAxOAotSVBQUk9UT19NRUFTID0gMTkKLUlQUFJPVE9fSE1QID0gMjAKLUlQUFJPVE9fUFJNID0gMjEKLUlQUFJPVE9fSURQID0gMjIKLUlQUFJPVE9fVFJVTksxID0gMjMKLUlQUFJPVE9fVFJVTksyID0gMjQKLUlQUFJPVE9fTEVBRjEgPSAyNQotSVBQUk9UT19MRUFGMiA9IDI2Ci1JUFBST1RPX1JEUCA9IDI3Ci1JUFBST1RPX0lSVFAgPSAyOAotSVBQUk9UT19UUCA9IDI5Ci1JUFBST1RPX0JMVCA9IDMwCi1JUFBST1RPX05TUCA9IDMxCi1JUFBST1RPX0lOUCA9IDMyCi1JUFBST1RPX1NFUCA9IDMzCi1JUFBST1RPXzNQQyA9IDM0Ci1JUFBST1RPX0lEUFIgPSAzNQotSVBQUk9UT19YVFAgPSAzNgotSVBQUk9UT19ERFAgPSAzNwotSVBQUk9UT19DTVRQID0gMzgKLUlQUFJPVE9fVFBYWCA9IDM5Ci1JUFBST1RPX0lMID0gNDAKLUlQUFJPVE9fSVBWNiA9IDQxCi1JUFBST1RPX1NEUlAgPSA0MgotSVBQUk9UT19ST1VUSU5HID0gNDMKLUlQUFJPVE9fRlJBR01FTlQgPSA0NAotSVBQUk9UT19JRFJQID0gNDUKLUlQUFJPVE9fUlNWUCA9IDQ2Ci1JUFBST1RPX0dSRSA9IDQ3Ci1JUFBST1RPX01IUlAgPSA0OAotSVBQUk9UT19CSEEgPSA0OQotSVBQUk9UT19FU1AgPSA1MAotSVBQUk9UT19BSCA9IDUxCi1JUFBST1RPX0lOTFNQID0gNTIKLUlQUFJPVE9fU1dJUEUgPSA1MwotSVBQUk9UT19OSFJQID0gNTQKLUlQUFJPVE9fTU9CSUxFID0gNTUKLUlQUFJPVE9fVExTUCA9IDU2Ci1JUFBST1RPX1NLSVAgPSA1NwotSVBQUk9UT19JQ01QVjYgPSA1OAotSVBQUk9UT19OT05FID0gNTkKLUlQUFJPVE9fRFNUT1BUUyA9IDYwCi1JUFBST1RPX0FISVAgPSA2MQotSVBQUk9UT19DRlRQID0gNjIKLUlQUFJPVE9fSEVMTE8gPSA2MwotSVBQUk9UT19TQVRFWFBBSyA9IDY0Ci1JUFBST1RPX0tSWVBUT0xBTiA9IDY1Ci1JUFBST1RPX1JWRCA9IDY2Ci1JUFBST1RPX0lQUEMgPSA2NwotSVBQUk9UT19BREZTID0gNjgKLUlQUFJPVE9fU0FUTU9OID0gNjkKLUlQUFJPVE9fVklTQSA9IDcwCi1JUFBST1RPX0lQQ1YgPSA3MQotSVBQUk9UT19DUE5YID0gNzIKLUlQUFJPVE9fQ1BIQiA9IDczCi1JUFBST1RPX1dTTiA9IDc0Ci1JUFBST1RPX1BWUCA9IDc1Ci1JUFBST1RPX0JSU0FUTU9OID0gNzYKLUlQUFJPVE9fTkQgPSA3NwotSVBQUk9UT19XQk1PTiA9IDc4Ci1JUFBST1RPX1dCRVhQQUsgPSA3OQotSVBQUk9UT19FT04gPSA4MAotSVBQUk9UT19WTVRQID0gODEKLUlQUFJPVE9fU1ZNVFAgPSA4MgotSVBQUk9UT19WSU5FUyA9IDgzCi1JUFBST1RPX1RUUCA9IDg0Ci1JUFBST1RPX0lHUCA9IDg1Ci1JUFBST1RPX0RHUCA9IDg2Ci1JUFBST1RPX1RDRiA9IDg3Ci1JUFBST1RPX0lHUlAgPSA4OAotSVBQUk9UT19PU1BGSUdQID0gODkKLUlQUFJPVE9fU1JQQyA9IDkwCi1JUFBST1RPX0xBUlAgPSA5MQotSVBQUk9UT19NVFAgPSA5MgotSVBQUk9UT19BWDI1ID0gOTMKLUlQUFJPVE9fSVBFSVAgPSA5NAotSVBQUk9UT19NSUNQID0gOTUKLUlQUFJPVE9fU0NDU1AgPSA5NgotSVBQUk9UT19FVEhFUklQID0gOTcKLUlQUFJPVE9fRU5DQVAgPSA5OAotSVBQUk9UT19BUEVTID0gOTkKLUlQUFJPVE9fR01UUCA9IDEwMAotSVBQUk9UT19JUENPTVAgPSAxMDgKLUlQUFJPVE9fU0NUUCA9IDEzMgotSVBQUk9UT19QSU0gPSAxMDMKLUlQUFJPVE9fQ0FSUCA9IDExMgotSVBQUk9UT19QR00gPSAxMTMKLUlQUFJPVE9fUEZTWU5DID0gMjQwCi1JUFBST1RPX09MRF9ESVZFUlQgPSAyNTQKLUlQUFJPVE9fTUFYID0gMjU2Ci1JUFBST1RPX0RPTkUgPSAyNTcKLUlQUFJPVE9fRElWRVJUID0gMjU4Ci1JUFBST1RPX1NQQUNFUiA9IDMyNzY3Ci1JUFBPUlRfUkVTRVJWRUQgPSAxMDI0Ci1JUFBPUlRfSElGSVJTVEFVVE8gPSA0OTE1MgotSVBQT1JUX0hJTEFTVEFVVE8gPSA2NTUzNQotSVBQT1JUX1JFU0VSVkVEU1RBUlQgPSA2MDAKLUlQUE9SVF9NQVggPSA2NTUzNQotZGVmIElOX0NMQVNTQShpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAoLTIxNDc0ODM2NDgpKSA9PSAwKQotCi1JTl9DTEFTU0FfTkVUID0gKC0xNjc3NzIxNikKLUlOX0NMQVNTQV9OU0hJRlQgPSAyNAotSU5fQ0xBU1NBX0hPU1QgPSAweDAwZmZmZmZmCi1JTl9DTEFTU0FfTUFYID0gMTI4Ci1kZWYgSU5fQ0xBU1NCKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmICgtMTA3Mzc0MTgyNCkpID09ICgtMjE0NzQ4MzY0OCkpCi0KLUlOX0NMQVNTQl9ORVQgPSAoLTY1NTM2KQotSU5fQ0xBU1NCX05TSElGVCA9IDE2Ci1JTl9DTEFTU0JfSE9TVCA9IDB4MDAwMGZmZmYKLUlOX0NMQVNTQl9NQVggPSA2NTUzNgotZGVmIElOX0NMQVNTQyhpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAoLTUzNjg3MDkxMikpID09ICgtMTA3Mzc0MTgyNCkpCi0KLUlOX0NMQVNTQ19ORVQgPSAoLTI1NikKLUlOX0NMQVNTQ19OU0hJRlQgPSA4Ci1JTl9DTEFTU0NfSE9TVCA9IDB4MDAwMDAwZmYKLWRlZiBJTl9DTEFTU0QoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgKC0yNjg0MzU0NTYpKSA9PSAoLTUzNjg3MDkxMikpCi0KLUlOX0NMQVNTRF9ORVQgPSAoLTI2ODQzNTQ1NikKLUlOX0NMQVNTRF9OU0hJRlQgPSAyOAotSU5fQ0xBU1NEX0hPU1QgPSAweDBmZmZmZmZmCi1kZWYgSU5fTVVMVElDQVNUKGkpOiByZXR1cm4gSU5fQ0xBU1NEKGkpCi0KLWRlZiBJTl9FWFBFUklNRU5UQUwoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgKC0yNjg0MzU0NTYpKSA9PSAoLTI2ODQzNTQ1NikpCi0KLWRlZiBJTl9CQURDTEFTUyhpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAoLTI2ODQzNTQ1NikpID09ICgtMjY4NDM1NDU2KSkKLQotZGVmIElOX0xJTktMT0NBTChpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAoLTY1NTM2KSkgPT0gKC0xNDQyOTcxNjQ4KSkKLQotZGVmIElOX0xPQ0FMX0dST1VQKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmICgtMjU2KSkgPT0gKC01MzY4NzA5MTIpKQotCi1JTkFERFJfTk9ORSA9ICgtMSkKLUlOX0xPT1BCQUNLTkVUID0gMTI3Ci1JUF9PUFRJT05TID0gMQotSVBfSERSSU5DTCA9IDIKLUlQX1RPUyA9IDMKLUlQX1RUTCA9IDQKLUlQX1JFQ1ZPUFRTID0gNQotSVBfUkVDVlJFVE9QVFMgPSA2Ci1JUF9SRUNWRFNUQUREUiA9IDcKLUlQX1NFTkRTUkNBRERSID0gSVBfUkVDVkRTVEFERFIKLUlQX1JFVE9QVFMgPSA4Ci1JUF9NVUxUSUNBU1RfSUYgPSA5Ci1JUF9NVUxUSUNBU1RfVFRMID0gMTAKLUlQX01VTFRJQ0FTVF9MT09QID0gMTEKLUlQX0FERF9NRU1CRVJTSElQID0gMTIKLUlQX0RST1BfTUVNQkVSU0hJUCA9IDEzCi1JUF9NVUxUSUNBU1RfVklGID0gMTQKLUlQX1JTVlBfT04gPSAxNQotSVBfUlNWUF9PRkYgPSAxNgotSVBfUlNWUF9WSUZfT04gPSAxNwotSVBfUlNWUF9WSUZfT0ZGID0gMTgKLUlQX1BPUlRSQU5HRSA9IDE5Ci1JUF9SRUNWSUYgPSAyMAotSVBfSVBTRUNfUE9MSUNZID0gMjEKLUlQX0ZBSVRIID0gMjIKLUlQX09ORVNCQ0FTVCA9IDIzCi1JUF9GV19UQUJMRV9BREQgPSA0MAotSVBfRldfVEFCTEVfREVMID0gNDEKLUlQX0ZXX1RBQkxFX0ZMVVNIID0gNDIKLUlQX0ZXX1RBQkxFX0dFVFNJWkUgPSA0MwotSVBfRldfVEFCTEVfTElTVCA9IDQ0Ci1JUF9GV19BREQgPSA1MAotSVBfRldfREVMID0gNTEKLUlQX0ZXX0ZMVVNIID0gNTIKLUlQX0ZXX1pFUk8gPSA1MwotSVBfRldfR0VUID0gNTQKLUlQX0ZXX1JFU0VUTE9HID0gNTUKLUlQX0ZXX05BVF9DRkcgPSA1NgotSVBfRldfTkFUX0RFTCA9IDU3Ci1JUF9GV19OQVRfR0VUX0NPTkZJRyA9IDU4Ci1JUF9GV19OQVRfR0VUX0xPRyA9IDU5Ci1JUF9EVU1NWU5FVF9DT05GSUdVUkUgPSA2MAotSVBfRFVNTVlORVRfREVMID0gNjEKLUlQX0RVTU1ZTkVUX0ZMVVNIID0gNjIKLUlQX0RVTU1ZTkVUX0dFVCA9IDY0Ci1JUF9SRUNWVFRMID0gNjUKLUlQX01JTlRUTCA9IDY2Ci1JUF9ET05URlJBRyA9IDY3Ci1JUF9BRERfU09VUkNFX01FTUJFUlNISVAgPSA3MAotSVBfRFJPUF9TT1VSQ0VfTUVNQkVSU0hJUCA9IDcxCi1JUF9CTE9DS19TT1VSQ0UgPSA3MgotSVBfVU5CTE9DS19TT1VSQ0UgPSA3MwotSVBfTVNGSUxURVIgPSA3NAotTUNBU1RfSk9JTl9HUk9VUCA9IDgwCi1NQ0FTVF9MRUFWRV9HUk9VUCA9IDgxCi1NQ0FTVF9KT0lOX1NPVVJDRV9HUk9VUCA9IDgyCi1NQ0FTVF9MRUFWRV9TT1VSQ0VfR1JPVVAgPSA4MwotTUNBU1RfQkxPQ0tfU09VUkNFID0gODQKLU1DQVNUX1VOQkxPQ0tfU09VUkNFID0gODUKLUlQX0RFRkFVTFRfTVVMVElDQVNUX1RUTCA9IDEKLUlQX0RFRkFVTFRfTVVMVElDQVNUX0xPT1AgPSAxCi1JUF9NSU5fTUVNQkVSU0hJUFMgPSAzMQotSVBfTUFYX01FTUJFUlNISVBTID0gNDA5NQotSVBfTUFYX1NPVVJDRV9GSUxURVIgPSAxMDI0Ci1NQ0FTVF9JTkNMVURFID0gMQotTUNBU1RfRVhDTFVERSA9IDIKLUlQX1BPUlRSQU5HRV9ERUZBVUxUID0gMAotSVBfUE9SVFJBTkdFX0hJR0ggPSAxCi1JUF9QT1JUUkFOR0VfTE9XID0gMgotSVBQUk9UT19NQVhJRCA9IChJUFBST1RPX0FIICsgMSkKLUlQQ1RMX0ZPUldBUkRJTkcgPSAxCi1JUENUTF9TRU5EUkVESVJFQ1RTID0gMgotSVBDVExfREVGVFRMID0gMwotSVBDVExfREVGTVRVID0gNAotSVBDVExfUlRFWFBJUkUgPSA1Ci1JUENUTF9SVE1JTkVYUElSRSA9IDYKLUlQQ1RMX1JUTUFYQ0FDSEUgPSA3Ci1JUENUTF9TT1VSQ0VST1VURSA9IDgKLUlQQ1RMX0RJUkVDVEVEQlJPQURDQVNUID0gOQotSVBDVExfSU5UUlFNQVhMRU4gPSAxMAotSVBDVExfSU5UUlFEUk9QUyA9IDExCi1JUENUTF9TVEFUUyA9IDEyCi1JUENUTF9BQ0NFUFRTT1VSQ0VST1VURSA9IDEzCi1JUENUTF9GQVNURk9SV0FSRElORyA9IDE0Ci1JUENUTF9LRUVQRkFJVEggPSAxNQotSVBDVExfR0lGX1RUTCA9IDE2Ci1JUENUTF9NQVhJRCA9IDE3Ci1kZWYgaW5fbnVsbGhvc3QoeCk6IHJldHVybiAoKHgpLnNfYWRkciA9PSBJTkFERFJfQU5ZKQotCi0KLSMgSW5jbHVkZWQgZnJvbSBuZXRpbmV0Ni9pbjYuaAotX19LQU1FX1ZFUlNJT04gPSAiRnJlZUJTRCIKLUlQVjZQT1JUX1JFU0VSVkVEID0gMTAyNAotSVBWNlBPUlRfQU5PTk1JTiA9IDQ5MTUyCi1JUFY2UE9SVF9BTk9OTUFYID0gNjU1MzUKLUlQVjZQT1JUX1JFU0VSVkVETUlOID0gNjAwCi1JUFY2UE9SVF9SRVNFUlZFRE1BWCA9IChJUFY2UE9SVF9SRVNFUlZFRC0xKQotSU5FVDZfQUREUlNUUkxFTiA9IDQ2Ci1JUFY2X0FERFJfSU5UMzJfT05FID0gMQotSVBWNl9BRERSX0lOVDMyX1RXTyA9IDIKLUlQVjZfQUREUl9JTlQzMl9NTkwgPSAoLTE2NzExNjgwKQotSVBWNl9BRERSX0lOVDMyX01MTCA9ICgtMTY2NDYxNDQpCi1JUFY2X0FERFJfSU5UMzJfU01QID0gMHgwMDAwZmZmZgotSVBWNl9BRERSX0lOVDE2X1VMTCA9IDB4ZmU4MAotSVBWNl9BRERSX0lOVDE2X1VTTCA9IDB4ZmVjMAotSVBWNl9BRERSX0lOVDE2X01MTCA9IDB4ZmYwMgotSVBWNl9BRERSX0lOVDMyX09ORSA9IDB4MDEwMDAwMDAKLUlQVjZfQUREUl9JTlQzMl9UV08gPSAweDAyMDAwMDAwCi1JUFY2X0FERFJfSU5UMzJfTU5MID0gMHgwMDAwMDFmZgotSVBWNl9BRERSX0lOVDMyX01MTCA9IDB4MDAwMDAyZmYKLUlQVjZfQUREUl9JTlQzMl9TTVAgPSAoLTY1NTM2KQotSVBWNl9BRERSX0lOVDE2X1VMTCA9IDB4ODBmZQotSVBWNl9BRERSX0lOVDE2X1VTTCA9IDB4YzBmZQotSVBWNl9BRERSX0lOVDE2X01MTCA9IDB4MDJmZgotZGVmIElONl9JU19BRERSX1VOU1BFQ0lGSUVEKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTE9PUEJBQ0soYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9WNENPTVBBVChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1Y0TUFQUEVEKGEpOiByZXR1cm4gXAotCi1JUFY2X0FERFJfU0NPUEVfTk9ERUxPQ0FMID0gMHgwMQotSVBWNl9BRERSX1NDT1BFX0lOVEZBQ0VMT0NBTCA9IDB4MDEKLUlQVjZfQUREUl9TQ09QRV9MSU5LTE9DQUwgPSAweDAyCi1JUFY2X0FERFJfU0NPUEVfU0lURUxPQ0FMID0gMHgwNQotSVBWNl9BRERSX1NDT1BFX09SR0xPQ0FMID0gMHgwOAotSVBWNl9BRERSX1NDT1BFX0dMT0JBTCA9IDB4MGUKLV9fSVBWNl9BRERSX1NDT1BFX05PREVMT0NBTCA9IDB4MDEKLV9fSVBWNl9BRERSX1NDT1BFX0lOVEZBQ0VMT0NBTCA9IDB4MDEKLV9fSVBWNl9BRERSX1NDT1BFX0xJTktMT0NBTCA9IDB4MDIKLV9fSVBWNl9BRERSX1NDT1BFX1NJVEVMT0NBTCA9IDB4MDUKLV9fSVBWNl9BRERSX1NDT1BFX09SR0xPQ0FMID0gMHgwOAotX19JUFY2X0FERFJfU0NPUEVfR0xPQkFMID0gMHgwZQotZGVmIElONl9JU19BRERSX0xJTktMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1NJVEVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX05PREVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0lOVEZBQ0VMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0xJTktMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX1NJVEVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX09SR0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfR0xPQkFMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTk9ERUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfU0lURUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfT1JHTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19HTE9CQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfU0NPUEVfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX1NDT1BFX0VNQkVEKGEpOiByZXR1cm4gXAotCi1kZWYgSUZBNl9JU19ERVBSRUNBVEVEKGEpOiByZXR1cm4gXAotCi1kZWYgSUZBNl9JU19JTlZBTElEKGEpOiByZXR1cm4gXAotCi1JUFY2X09QVElPTlMgPSAxCi1JUFY2X1JFQ1ZPUFRTID0gNQotSVBWNl9SRUNWUkVUT1BUUyA9IDYKLUlQVjZfUkVDVkRTVEFERFIgPSA3Ci1JUFY2X1JFVE9QVFMgPSA4Ci1JUFY2X1NPQ0tPUFRfUkVTRVJWRUQxID0gMwotSVBWNl9VTklDQVNUX0hPUFMgPSA0Ci1JUFY2X01VTFRJQ0FTVF9JRiA9IDkKLUlQVjZfTVVMVElDQVNUX0hPUFMgPSAxMAotSVBWNl9NVUxUSUNBU1RfTE9PUCA9IDExCi1JUFY2X0pPSU5fR1JPVVAgPSAxMgotSVBWNl9MRUFWRV9HUk9VUCA9IDEzCi1JUFY2X1BPUlRSQU5HRSA9IDE0Ci1JQ01QNl9GSUxURVIgPSAxOAotSVBWNl8yMjkyUEtUSU5GTyA9IDE5Ci1JUFY2XzIyOTJIT1BMSU1JVCA9IDIwCi1JUFY2XzIyOTJORVhUSE9QID0gMjEKLUlQVjZfMjI5MkhPUE9QVFMgPSAyMgotSVBWNl8yMjkyRFNUT1BUUyA9IDIzCi1JUFY2XzIyOTJSVEhEUiA9IDI0Ci1JUFY2XzIyOTJQS1RPUFRJT05TID0gMjUKLUlQVjZfQ0hFQ0tTVU0gPSAyNgotSVBWNl9WNk9OTFkgPSAyNwotSVBWNl9CSU5EVjZPTkxZID0gSVBWNl9WNk9OTFkKLUlQVjZfSVBTRUNfUE9MSUNZID0gMjgKLUlQVjZfRkFJVEggPSAyOQotSVBWNl9GV19BREQgPSAzMAotSVBWNl9GV19ERUwgPSAzMQotSVBWNl9GV19GTFVTSCA9IDMyCi1JUFY2X0ZXX1pFUk8gPSAzMwotSVBWNl9GV19HRVQgPSAzNAotSVBWNl9SVEhEUkRTVE9QVFMgPSAzNQotSVBWNl9SRUNWUEtUSU5GTyA9IDM2Ci1JUFY2X1JFQ1ZIT1BMSU1JVCA9IDM3Ci1JUFY2X1JFQ1ZSVEhEUiA9IDM4Ci1JUFY2X1JFQ1ZIT1BPUFRTID0gMzkKLUlQVjZfUkVDVkRTVE9QVFMgPSA0MAotSVBWNl9SRUNWUlRIRFJEU1RPUFRTID0gNDEKLUlQVjZfVVNFX01JTl9NVFUgPSA0MgotSVBWNl9SRUNWUEFUSE1UVSA9IDQzCi1JUFY2X1BBVEhNVFUgPSA0NAotSVBWNl9SRUFDSENPTkYgPSA0NQotSVBWNl9QS1RJTkZPID0gNDYKLUlQVjZfSE9QTElNSVQgPSA0NwotSVBWNl9ORVhUSE9QID0gNDgKLUlQVjZfSE9QT1BUUyA9IDQ5Ci1JUFY2X0RTVE9QVFMgPSA1MAotSVBWNl9SVEhEUiA9IDUxCi1JUFY2X1BLVE9QVElPTlMgPSA1MgotSVBWNl9SRUNWVENMQVNTID0gNTcKLUlQVjZfQVVUT0ZMT1dMQUJFTCA9IDU5Ci1JUFY2X1RDTEFTUyA9IDYxCi1JUFY2X0RPTlRGUkFHID0gNjIKLUlQVjZfUFJFRkVSX1RFTVBBRERSID0gNjMKLUlQVjZfTVNGSUxURVIgPSA3NAotSVBWNl9SVEhEUl9MT09TRSA9IDAKLUlQVjZfUlRIRFJfU1RSSUNUID0gMQotSVBWNl9SVEhEUl9UWVBFXzAgPSAwCi1JUFY2X0RFRkFVTFRfTVVMVElDQVNUX0hPUFMgPSAxCi1JUFY2X0RFRkFVTFRfTVVMVElDQVNUX0xPT1AgPSAxCi1JUFY2X1BPUlRSQU5HRV9ERUZBVUxUID0gMAotSVBWNl9QT1JUUkFOR0VfSElHSCA9IDEKLUlQVjZfUE9SVFJBTkdFX0xPVyA9IDIKLUlQVjZQUk9UT19NQVhJRCA9IChJUFBST1RPX1BJTSArIDEpCi1JUFY2Q1RMX0ZPUldBUkRJTkcgPSAxCi1JUFY2Q1RMX1NFTkRSRURJUkVDVFMgPSAyCi1JUFY2Q1RMX0RFRkhMSU0gPSAzCi1JUFY2Q1RMX0RFRk1UVSA9IDQKLUlQVjZDVExfRk9SV1NSQ1JUID0gNQotSVBWNkNUTF9TVEFUUyA9IDYKLUlQVjZDVExfTVJUU1RBVFMgPSA3Ci1JUFY2Q1RMX01SVFBST1RPID0gOAotSVBWNkNUTF9NQVhGUkFHUEFDS0VUUyA9IDkKLUlQVjZDVExfU09VUkNFQ0hFQ0sgPSAxMAotSVBWNkNUTF9TT1VSQ0VDSEVDS19MT0dJTlQgPSAxMQotSVBWNkNUTF9BQ0NFUFRfUlRBRFYgPSAxMgotSVBWNkNUTF9LRUVQRkFJVEggPSAxMwotSVBWNkNUTF9MT0dfSU5URVJWQUwgPSAxNAotSVBWNkNUTF9IRFJORVNUTElNSVQgPSAxNQotSVBWNkNUTF9EQURfQ09VTlQgPSAxNgotSVBWNkNUTF9BVVRPX0ZMT1dMQUJFTCA9IDE3Ci1JUFY2Q1RMX0RFRk1DQVNUSExJTSA9IDE4Ci1JUFY2Q1RMX0dJRl9ITElNID0gMTkKLUlQVjZDVExfS0FNRV9WRVJTSU9OID0gMjAKLUlQVjZDVExfVVNFX0RFUFJFQ0FURUQgPSAyMQotSVBWNkNUTF9SUl9QUlVORSA9IDIyCi1JUFY2Q1RMX01BUFBFRF9BRERSID0gMjMKLUlQVjZDVExfVjZPTkxZID0gMjQKLUlQVjZDVExfUlRFWFBJUkUgPSAyNQotSVBWNkNUTF9SVE1JTkVYUElSRSA9IDI2Ci1JUFY2Q1RMX1JUTUFYQ0FDSEUgPSAyNwotSVBWNkNUTF9VU0VURU1QQUREUiA9IDMyCi1JUFY2Q1RMX1RFTVBQTFRJTUUgPSAzMwotSVBWNkNUTF9URU1QVkxUSU1FID0gMzQKLUlQVjZDVExfQVVUT19MSU5LTE9DQUwgPSAzNQotSVBWNkNUTF9SSVA2U1RBVFMgPSAzNgotSVBWNkNUTF9QUkVGRVJfVEVNUEFERFIgPSAzNwotSVBWNkNUTF9BRERSQ1RMUE9MSUNZID0gMzgKLUlQVjZDVExfVVNFX0RFRkFVTFRaT05FID0gMzkKLUlQVjZDVExfTUFYRlJBR1MgPSA0MQotSVBWNkNUTF9JRlEgPSA0MgotSVBWNkNUTF9JU0FUQVBSVFIgPSA0MwotSVBWNkNUTF9NQ0FTVF9QTVRVID0gNDQKLUlQVjZDVExfU1RFQUxUSCA9IDQ1Ci1JUFY2Q1RMX01BWElEID0gNDYKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LWZyZWVic2Q3L3JlZ2VuIGIvTGliL3BsYXQtZnJlZWJzZDcvcmVnZW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDhhYTY4OTguLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtZnJlZWJzZDcvcmVnZW4KKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLSMhIC9iaW4vc2gKLXNldCAtdgotcHl0aG9uIC4uLy4uL1Rvb2xzL3NjcmlwdHMvaDJweS5weSAtaSAnKHVfbG9uZyknIC91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LWZyZWVic2Q4L0lOLnB5IGIvTGliL3BsYXQtZnJlZWJzZDgvSU4ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlM2IzYTIuLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtZnJlZWJzZDgvSU4ucHkKKysrIC9kZXYvbnVsbApAQCAtMSw1NzEgKzAsMCBAQAotIyBHZW5lcmF0ZWQgYnkgaDJweSBmcm9tIC91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9jZGVmcy5oCi1fX0dOVUNMSUtFX0FTTSA9IDMKLV9fR05VQ0xJS0VfQVNNID0gMgotX19HTlVDTElLRV9fX1RZUEVPRiA9IDEKLV9fR05VQ0xJS0VfX19PRkZTRVRPRiA9IDEKLV9fR05VQ0xJS0VfX19TRUNUSU9OID0gMQotX19HTlVDTElLRV9BVFRSSUJVVEVfTU9ERV9ESSA9IDEKLV9fR05VQ0xJS0VfQ1RPUl9TRUNUSU9OX0hBTkRMSU5HID0gMQotX19HTlVDTElLRV9CVUlMVElOX0NPTlNUQU5UX1AgPSAxCi1fX0dOVUNMSUtFX0JVSUxUSU5fVkFSQVJHUyA9IDEKLV9fR05VQ0xJS0VfQlVJTFRJTl9TVERBUkcgPSAxCi1fX0dOVUNMSUtFX0JVSUxUSU5fVkFBTElTVCA9IDEKLV9fR05VQ19WQV9MSVNUX0NPTVBBVElCSUxJVFkgPSAxCi1fX0dOVUNMSUtFX0JVSUxUSU5fTkVYVF9BUkcgPSAxCi1fX0dOVUNMSUtFX0JVSUxUSU5fTUVNQ1BZID0gMQotX19DQ19TVVBQT1JUU19JTkxJTkUgPSAxCi1fX0NDX1NVUFBPUlRTX19fSU5MSU5FID0gMQotX19DQ19TVVBQT1JUU19fX0lOTElORV9fID0gMQotX19DQ19TVVBQT1JUU19fX0ZVTkNfXyA9IDEKLV9fQ0NfU1VQUE9SVFNfV0FSTklORyA9IDEKLV9fQ0NfU1VQUE9SVFNfVkFSQURJQ19YWFggPSAxCi1fX0NDX1NVUFBPUlRTX0RZTkFNSUNfQVJSQVlfSU5JVCA9IDEKLV9fQ0NfSU5UX0lTXzMyQklUID0gMQotZGVmIF9fUChwcm90b3MpOiByZXR1cm4gcHJvdG9zCi0KLWRlZiBfX1NUUklORyh4KTogcmV0dXJuICN4Ci0KLWRlZiBfX1hTVFJJTkcoeCk6IHJldHVybiBfX1NUUklORyh4KQotCi1kZWYgX19QKHByb3Rvcyk6IHJldHVybiAoKQotCi1kZWYgX19TVFJJTkcoeCk6IHJldHVybiAieCIKLQotZGVmIF9fYWxpZ25lZCh4KTogcmV0dXJuIF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKHgpKSkKLQotZGVmIF9fc2VjdGlvbih4KTogcmV0dXJuIF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKHgpKSkKLQotZGVmIF9fYWxpZ25lZCh4KTogcmV0dXJuIF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKHgpKSkKLQotZGVmIF9fc2VjdGlvbih4KTogcmV0dXJuIF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKHgpKSkKLQotZGVmIF9fbm9ubnVsbCh4KTogcmV0dXJuIF9fYXR0cmlidXRlX18oKF9fbm9ubnVsbF9fKHgpKSkKLQotZGVmIF9fcHJlZGljdF90cnVlKGV4cCk6IHJldHVybiBfX2J1aWx0aW5fZXhwZWN0KChleHApLCAxKQotCi1kZWYgX19wcmVkaWN0X2ZhbHNlKGV4cCk6IHJldHVybiBfX2J1aWx0aW5fZXhwZWN0KChleHApLCAwKQotCi1kZWYgX19wcmVkaWN0X3RydWUoZXhwKTogcmV0dXJuIChleHApCi0KLWRlZiBfX3ByZWRpY3RfZmFsc2UoZXhwKTogcmV0dXJuIChleHApCi0KLWRlZiBfX2Zvcm1hdF9hcmcoZm10YXJnKTogcmV0dXJuIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X2FyZ19fIChmbXRhcmcpKSkKLQotZGVmIF9fRkJTRElEKHMpOiByZXR1cm4gX19JRFNUUklORyhfX0NPTkNBVChfX3Jjc2lkXyxfX0xJTkVfXykscykKLQotZGVmIF9fUkNTSUQocyk6IHJldHVybiBfX0lEU1RSSU5HKF9fQ09OQ0FUKF9fcmNzaWRfLF9fTElORV9fKSxzKQotCi1kZWYgX19SQ1NJRF9TT1VSQ0Uocyk6IHJldHVybiBfX0lEU1RSSU5HKF9fQ09OQ0FUKF9fcmNzaWRfc291cmNlXyxfX0xJTkVfXykscykKLQotZGVmIF9fU0NDU0lEKHMpOiByZXR1cm4gX19JRFNUUklORyhfX0NPTkNBVChfX3NjY3NpZF8sX19MSU5FX18pLHMpCi0KLWRlZiBfX0NPUFlSSUdIVChzKTogcmV0dXJuIF9fSURTVFJJTkcoX19DT05DQVQoX19jb3B5cmlnaHRfLF9fTElORV9fKSxzKQotCi1fUE9TSVhfQ19TT1VSQ0UgPSAxOTkwMDkKLV9QT1NJWF9DX1NPVVJDRSA9IDE5OTIwOQotX19YU0lfVklTSUJMRSA9IDYwMAotX1BPU0lYX0NfU09VUkNFID0gMjAwMTEyCi1fX1hTSV9WSVNJQkxFID0gNTAwCi1fUE9TSVhfQ19TT1VSQ0UgPSAxOTk1MDYKLV9QT1NJWF9DX1NPVVJDRSA9IDE5ODgwOAotX19QT1NJWF9WSVNJQkxFID0gMjAwMTEyCi1fX0lTT19DX1ZJU0lCTEUgPSAxOTk5Ci1fX1BPU0lYX1ZJU0lCTEUgPSAxOTk1MDYKLV9fSVNPX0NfVklTSUJMRSA9IDE5OTAKLV9fUE9TSVhfVklTSUJMRSA9IDE5OTMwOQotX19JU09fQ19WSVNJQkxFID0gMTk5MAotX19QT1NJWF9WSVNJQkxFID0gMTk5MjA5Ci1fX0lTT19DX1ZJU0lCTEUgPSAxOTkwCi1fX1BPU0lYX1ZJU0lCTEUgPSAxOTkwMDkKLV9fSVNPX0NfVklTSUJMRSA9IDE5OTAKLV9fUE9TSVhfVklTSUJMRSA9IDE5ODgwOAotX19JU09fQ19WSVNJQkxFID0gMAotX19QT1NJWF9WSVNJQkxFID0gMAotX19YU0lfVklTSUJMRSA9IDAKLV9fQlNEX1ZJU0lCTEUgPSAwCi1fX0lTT19DX1ZJU0lCTEUgPSAxOTkwCi1fX1BPU0lYX1ZJU0lCTEUgPSAwCi1fX1hTSV9WSVNJQkxFID0gMAotX19CU0RfVklTSUJMRSA9IDAKLV9fSVNPX0NfVklTSUJMRSA9IDE5OTkKLV9fUE9TSVhfVklTSUJMRSA9IDIwMDExMgotX19YU0lfVklTSUJMRSA9IDYwMAotX19CU0RfVklTSUJMRSA9IDEKLV9fSVNPX0NfVklTSUJMRSA9IDE5OTkKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9fdHlwZXMuaAotCi0jIEluY2x1ZGVkIGZyb20gbWFjaGluZS9fdHlwZXMuaAotCi0jIEluY2x1ZGVkIGZyb20gbWFjaGluZS9lbmRpYW4uaAotX1FVQURfSElHSFdPUkQgPSAxCi1fUVVBRF9MT1dXT1JEID0gMAotX0xJVFRMRV9FTkRJQU4gPSAxMjM0Ci1fQklHX0VORElBTiA9IDQzMjEKLV9QRFBfRU5ESUFOID0gMzQxMgotX0JZVEVfT1JERVIgPSBfTElUVExFX0VORElBTgotTElUVExFX0VORElBTiA9IF9MSVRUTEVfRU5ESUFOCi1CSUdfRU5ESUFOID0gX0JJR19FTkRJQU4KLVBEUF9FTkRJQU4gPSBfUERQX0VORElBTgotQllURV9PUkRFUiA9IF9CWVRFX09SREVSCi1kZWYgX193b3JkX3N3YXBfaW50X3Zhcih4KTogcmV0dXJuIFwKLQotZGVmIF9fd29yZF9zd2FwX2ludF9jb25zdCh4KTogcmV0dXJuIFwKLQotZGVmIF9fd29yZF9zd2FwX2ludCh4KTogcmV0dXJuIF9fd29yZF9zd2FwX2ludF92YXIoeCkKLQotZGVmIF9fYnl0ZV9zd2FwX2ludF92YXIoeCk6IHJldHVybiBcCi0KLWRlZiBfX2J5dGVfc3dhcF9pbnRfY29uc3QoeCk6IHJldHVybiBcCi0KLWRlZiBfX2J5dGVfc3dhcF9pbnQoeCk6IHJldHVybiBfX2J5dGVfc3dhcF9pbnRfdmFyKHgpCi0KLWRlZiBfX2J5dGVfc3dhcF93b3JkX3Zhcih4KTogcmV0dXJuIFwKLQotZGVmIF9fYnl0ZV9zd2FwX3dvcmRfY29uc3QoeCk6IHJldHVybiBcCi0KLWRlZiBfX2J5dGVfc3dhcF93b3JkKHgpOiByZXR1cm4gX19ieXRlX3N3YXBfd29yZF92YXIoeCkKLQotZGVmIF9faHRvbmwoeCk6IHJldHVybiBfX2Jzd2FwMzIoeCkKLQotZGVmIF9faHRvbnMoeCk6IHJldHVybiBfX2Jzd2FwMTYoeCkKLQotZGVmIF9fbnRvaGwoeCk6IHJldHVybiBfX2Jzd2FwMzIoeCkKLQotZGVmIF9fbnRvaHMoeCk6IHJldHVybiBfX2Jzd2FwMTYoeCkKLQotSVBQUk9UT19JUCA9IDAKLUlQUFJPVE9fSUNNUCA9IDEKLUlQUFJPVE9fVENQID0gNgotSVBQUk9UT19VRFAgPSAxNwotZGVmIGh0b25sKHgpOiByZXR1cm4gX19odG9ubCh4KQotCi1kZWYgaHRvbnMoeCk6IHJldHVybiBfX2h0b25zKHgpCi0KLWRlZiBudG9obCh4KTogcmV0dXJuIF9fbnRvaGwoeCkKLQotZGVmIG50b2hzKHgpOiByZXR1cm4gX19udG9ocyh4KQotCi1JUFBST1RPX1JBVyA9IDI1NQotSU5FVF9BRERSU1RSTEVOID0gMTYKLUlQUFJPVE9fSE9QT1BUUyA9IDAKLUlQUFJPVE9fSUdNUCA9IDIKLUlQUFJPVE9fR0dQID0gMwotSVBQUk9UT19JUFY0ID0gNAotSVBQUk9UT19JUElQID0gSVBQUk9UT19JUFY0Ci1JUFBST1RPX1NUID0gNwotSVBQUk9UT19FR1AgPSA4Ci1JUFBST1RPX1BJR1AgPSA5Ci1JUFBST1RPX1JDQ01PTiA9IDEwCi1JUFBST1RPX05WUElJID0gMTEKLUlQUFJPVE9fUFVQID0gMTIKLUlQUFJPVE9fQVJHVVMgPSAxMwotSVBQUk9UT19FTUNPTiA9IDE0Ci1JUFBST1RPX1hORVQgPSAxNQotSVBQUk9UT19DSEFPUyA9IDE2Ci1JUFBST1RPX01VWCA9IDE4Ci1JUFBST1RPX01FQVMgPSAxOQotSVBQUk9UT19ITVAgPSAyMAotSVBQUk9UT19QUk0gPSAyMQotSVBQUk9UT19JRFAgPSAyMgotSVBQUk9UT19UUlVOSzEgPSAyMwotSVBQUk9UT19UUlVOSzIgPSAyNAotSVBQUk9UT19MRUFGMSA9IDI1Ci1JUFBST1RPX0xFQUYyID0gMjYKLUlQUFJPVE9fUkRQID0gMjcKLUlQUFJPVE9fSVJUUCA9IDI4Ci1JUFBST1RPX1RQID0gMjkKLUlQUFJPVE9fQkxUID0gMzAKLUlQUFJPVE9fTlNQID0gMzEKLUlQUFJPVE9fSU5QID0gMzIKLUlQUFJPVE9fU0VQID0gMzMKLUlQUFJPVE9fM1BDID0gMzQKLUlQUFJPVE9fSURQUiA9IDM1Ci1JUFBST1RPX1hUUCA9IDM2Ci1JUFBST1RPX0REUCA9IDM3Ci1JUFBST1RPX0NNVFAgPSAzOAotSVBQUk9UT19UUFhYID0gMzkKLUlQUFJPVE9fSUwgPSA0MAotSVBQUk9UT19JUFY2ID0gNDEKLUlQUFJPVE9fU0RSUCA9IDQyCi1JUFBST1RPX1JPVVRJTkcgPSA0MwotSVBQUk9UT19GUkFHTUVOVCA9IDQ0Ci1JUFBST1RPX0lEUlAgPSA0NQotSVBQUk9UT19SU1ZQID0gNDYKLUlQUFJPVE9fR1JFID0gNDcKLUlQUFJPVE9fTUhSUCA9IDQ4Ci1JUFBST1RPX0JIQSA9IDQ5Ci1JUFBST1RPX0VTUCA9IDUwCi1JUFBST1RPX0FIID0gNTEKLUlQUFJPVE9fSU5MU1AgPSA1MgotSVBQUk9UT19TV0lQRSA9IDUzCi1JUFBST1RPX05IUlAgPSA1NAotSVBQUk9UT19NT0JJTEUgPSA1NQotSVBQUk9UT19UTFNQID0gNTYKLUlQUFJPVE9fU0tJUCA9IDU3Ci1JUFBST1RPX0lDTVBWNiA9IDU4Ci1JUFBST1RPX05PTkUgPSA1OQotSVBQUk9UT19EU1RPUFRTID0gNjAKLUlQUFJPVE9fQUhJUCA9IDYxCi1JUFBST1RPX0NGVFAgPSA2MgotSVBQUk9UT19IRUxMTyA9IDYzCi1JUFBST1RPX1NBVEVYUEFLID0gNjQKLUlQUFJPVE9fS1JZUFRPTEFOID0gNjUKLUlQUFJPVE9fUlZEID0gNjYKLUlQUFJPVE9fSVBQQyA9IDY3Ci1JUFBST1RPX0FERlMgPSA2OAotSVBQUk9UT19TQVRNT04gPSA2OQotSVBQUk9UT19WSVNBID0gNzAKLUlQUFJPVE9fSVBDViA9IDcxCi1JUFBST1RPX0NQTlggPSA3MgotSVBQUk9UT19DUEhCID0gNzMKLUlQUFJPVE9fV1NOID0gNzQKLUlQUFJPVE9fUFZQID0gNzUKLUlQUFJPVE9fQlJTQVRNT04gPSA3NgotSVBQUk9UT19ORCA9IDc3Ci1JUFBST1RPX1dCTU9OID0gNzgKLUlQUFJPVE9fV0JFWFBBSyA9IDc5Ci1JUFBST1RPX0VPTiA9IDgwCi1JUFBST1RPX1ZNVFAgPSA4MQotSVBQUk9UT19TVk1UUCA9IDgyCi1JUFBST1RPX1ZJTkVTID0gODMKLUlQUFJPVE9fVFRQID0gODQKLUlQUFJPVE9fSUdQID0gODUKLUlQUFJPVE9fREdQID0gODYKLUlQUFJPVE9fVENGID0gODcKLUlQUFJPVE9fSUdSUCA9IDg4Ci1JUFBST1RPX09TUEZJR1AgPSA4OQotSVBQUk9UT19TUlBDID0gOTAKLUlQUFJPVE9fTEFSUCA9IDkxCi1JUFBST1RPX01UUCA9IDkyCi1JUFBST1RPX0FYMjUgPSA5MwotSVBQUk9UT19JUEVJUCA9IDk0Ci1JUFBST1RPX01JQ1AgPSA5NQotSVBQUk9UT19TQ0NTUCA9IDk2Ci1JUFBST1RPX0VUSEVSSVAgPSA5NwotSVBQUk9UT19FTkNBUCA9IDk4Ci1JUFBST1RPX0FQRVMgPSA5OQotSVBQUk9UT19HTVRQID0gMTAwCi1JUFBST1RPX0lQQ09NUCA9IDEwOAotSVBQUk9UT19TQ1RQID0gMTMyCi1JUFBST1RPX1BJTSA9IDEwMwotSVBQUk9UT19DQVJQID0gMTEyCi1JUFBST1RPX1BHTSA9IDExMwotSVBQUk9UT19QRlNZTkMgPSAyNDAKLUlQUFJPVE9fT0xEX0RJVkVSVCA9IDI1NAotSVBQUk9UT19NQVggPSAyNTYKLUlQUFJPVE9fRE9ORSA9IDI1NwotSVBQUk9UT19ESVZFUlQgPSAyNTgKLUlQUFJPVE9fU1BBQ0VSID0gMzI3NjcKLUlQUE9SVF9SRVNFUlZFRCA9IDEwMjQKLUlQUE9SVF9ISUZJUlNUQVVUTyA9IDQ5MTUyCi1JUFBPUlRfSElMQVNUQVVUTyA9IDY1NTM1Ci1JUFBPUlRfUkVTRVJWRURTVEFSVCA9IDYwMAotSVBQT1JUX01BWCA9IDY1NTM1Ci1kZWYgSU5fQ0xBU1NBKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmICgtMjE0NzQ4MzY0OCkpID09IDApCi0KLUlOX0NMQVNTQV9ORVQgPSAoLTE2Nzc3MjE2KQotSU5fQ0xBU1NBX05TSElGVCA9IDI0Ci1JTl9DTEFTU0FfSE9TVCA9IDB4MDBmZmZmZmYKLUlOX0NMQVNTQV9NQVggPSAxMjgKLWRlZiBJTl9DTEFTU0IoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgKC0xMDczNzQxODI0KSkgPT0gKC0yMTQ3NDgzNjQ4KSkKLQotSU5fQ0xBU1NCX05FVCA9ICgtNjU1MzYpCi1JTl9DTEFTU0JfTlNISUZUID0gMTYKLUlOX0NMQVNTQl9IT1NUID0gMHgwMDAwZmZmZgotSU5fQ0xBU1NCX01BWCA9IDY1NTM2Ci1kZWYgSU5fQ0xBU1NDKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmICgtNTM2ODcwOTEyKSkgPT0gKC0xMDczNzQxODI0KSkKLQotSU5fQ0xBU1NDX05FVCA9ICgtMjU2KQotSU5fQ0xBU1NDX05TSElGVCA9IDgKLUlOX0NMQVNTQ19IT1NUID0gMHgwMDAwMDBmZgotZGVmIElOX0NMQVNTRChpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAoLTI2ODQzNTQ1NikpID09ICgtNTM2ODcwOTEyKSkKLQotSU5fQ0xBU1NEX05FVCA9ICgtMjY4NDM1NDU2KQotSU5fQ0xBU1NEX05TSElGVCA9IDI4Ci1JTl9DTEFTU0RfSE9TVCA9IDB4MGZmZmZmZmYKLWRlZiBJTl9NVUxUSUNBU1QoaSk6IHJldHVybiBJTl9DTEFTU0QoaSkKLQotZGVmIElOX0VYUEVSSU1FTlRBTChpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAoLTI2ODQzNTQ1NikpID09ICgtMjY4NDM1NDU2KSkKLQotZGVmIElOX0JBRENMQVNTKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmICgtMjY4NDM1NDU2KSkgPT0gKC0yNjg0MzU0NTYpKQotCi1kZWYgSU5fTElOS0xPQ0FMKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmICgtNjU1MzYpKSA9PSAoLTE0NDI5NzE2NDgpKQotCi1kZWYgSU5fTE9DQUxfR1JPVVAoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgKC0yNTYpKSA9PSAoLTUzNjg3MDkxMikpCi0KLUlOQUREUl9OT05FID0gKC0xKQotSU5fTE9PUEJBQ0tORVQgPSAxMjcKLUlQX09QVElPTlMgPSAxCi1JUF9IRFJJTkNMID0gMgotSVBfVE9TID0gMwotSVBfVFRMID0gNAotSVBfUkVDVk9QVFMgPSA1Ci1JUF9SRUNWUkVUT1BUUyA9IDYKLUlQX1JFQ1ZEU1RBRERSID0gNwotSVBfU0VORFNSQ0FERFIgPSBJUF9SRUNWRFNUQUREUgotSVBfUkVUT1BUUyA9IDgKLUlQX01VTFRJQ0FTVF9JRiA9IDkKLUlQX01VTFRJQ0FTVF9UVEwgPSAxMAotSVBfTVVMVElDQVNUX0xPT1AgPSAxMQotSVBfQUREX01FTUJFUlNISVAgPSAxMgotSVBfRFJPUF9NRU1CRVJTSElQID0gMTMKLUlQX01VTFRJQ0FTVF9WSUYgPSAxNAotSVBfUlNWUF9PTiA9IDE1Ci1JUF9SU1ZQX09GRiA9IDE2Ci1JUF9SU1ZQX1ZJRl9PTiA9IDE3Ci1JUF9SU1ZQX1ZJRl9PRkYgPSAxOAotSVBfUE9SVFJBTkdFID0gMTkKLUlQX1JFQ1ZJRiA9IDIwCi1JUF9JUFNFQ19QT0xJQ1kgPSAyMQotSVBfRkFJVEggPSAyMgotSVBfT05FU0JDQVNUID0gMjMKLUlQX0ZXX1RBQkxFX0FERCA9IDQwCi1JUF9GV19UQUJMRV9ERUwgPSA0MQotSVBfRldfVEFCTEVfRkxVU0ggPSA0MgotSVBfRldfVEFCTEVfR0VUU0laRSA9IDQzCi1JUF9GV19UQUJMRV9MSVNUID0gNDQKLUlQX0ZXX0FERCA9IDUwCi1JUF9GV19ERUwgPSA1MQotSVBfRldfRkxVU0ggPSA1MgotSVBfRldfWkVSTyA9IDUzCi1JUF9GV19HRVQgPSA1NAotSVBfRldfUkVTRVRMT0cgPSA1NQotSVBfRldfTkFUX0NGRyA9IDU2Ci1JUF9GV19OQVRfREVMID0gNTcKLUlQX0ZXX05BVF9HRVRfQ09ORklHID0gNTgKLUlQX0ZXX05BVF9HRVRfTE9HID0gNTkKLUlQX0RVTU1ZTkVUX0NPTkZJR1VSRSA9IDYwCi1JUF9EVU1NWU5FVF9ERUwgPSA2MQotSVBfRFVNTVlORVRfRkxVU0ggPSA2MgotSVBfRFVNTVlORVRfR0VUID0gNjQKLUlQX1JFQ1ZUVEwgPSA2NQotSVBfTUlOVFRMID0gNjYKLUlQX0RPTlRGUkFHID0gNjcKLUlQX0FERF9TT1VSQ0VfTUVNQkVSU0hJUCA9IDcwCi1JUF9EUk9QX1NPVVJDRV9NRU1CRVJTSElQID0gNzEKLUlQX0JMT0NLX1NPVVJDRSA9IDcyCi1JUF9VTkJMT0NLX1NPVVJDRSA9IDczCi1JUF9NU0ZJTFRFUiA9IDc0Ci1NQ0FTVF9KT0lOX0dST1VQID0gODAKLU1DQVNUX0xFQVZFX0dST1VQID0gODEKLU1DQVNUX0pPSU5fU09VUkNFX0dST1VQID0gODIKLU1DQVNUX0xFQVZFX1NPVVJDRV9HUk9VUCA9IDgzCi1NQ0FTVF9CTE9DS19TT1VSQ0UgPSA4NAotTUNBU1RfVU5CTE9DS19TT1VSQ0UgPSA4NQotSVBfREVGQVVMVF9NVUxUSUNBU1RfVFRMID0gMQotSVBfREVGQVVMVF9NVUxUSUNBU1RfTE9PUCA9IDEKLUlQX01JTl9NRU1CRVJTSElQUyA9IDMxCi1JUF9NQVhfTUVNQkVSU0hJUFMgPSA0MDk1Ci1JUF9NQVhfU09VUkNFX0ZJTFRFUiA9IDEwMjQKLU1DQVNUX0lOQ0xVREUgPSAxCi1NQ0FTVF9FWENMVURFID0gMgotSVBfUE9SVFJBTkdFX0RFRkFVTFQgPSAwCi1JUF9QT1JUUkFOR0VfSElHSCA9IDEKLUlQX1BPUlRSQU5HRV9MT1cgPSAyCi1JUFBST1RPX01BWElEID0gKElQUFJPVE9fQUggKyAxKQotSVBDVExfRk9SV0FSRElORyA9IDEKLUlQQ1RMX1NFTkRSRURJUkVDVFMgPSAyCi1JUENUTF9ERUZUVEwgPSAzCi1JUENUTF9ERUZNVFUgPSA0Ci1JUENUTF9SVEVYUElSRSA9IDUKLUlQQ1RMX1JUTUlORVhQSVJFID0gNgotSVBDVExfUlRNQVhDQUNIRSA9IDcKLUlQQ1RMX1NPVVJDRVJPVVRFID0gOAotSVBDVExfRElSRUNURURCUk9BRENBU1QgPSA5Ci1JUENUTF9JTlRSUU1BWExFTiA9IDEwCi1JUENUTF9JTlRSUURST1BTID0gMTEKLUlQQ1RMX1NUQVRTID0gMTIKLUlQQ1RMX0FDQ0VQVFNPVVJDRVJPVVRFID0gMTMKLUlQQ1RMX0ZBU1RGT1JXQVJESU5HID0gMTQKLUlQQ1RMX0tFRVBGQUlUSCA9IDE1Ci1JUENUTF9HSUZfVFRMID0gMTYKLUlQQ1RMX01BWElEID0gMTcKLWRlZiBpbl9udWxsaG9zdCh4KTogcmV0dXJuICgoeCkuc19hZGRyID09IElOQUREUl9BTlkpCi0KLQotIyBJbmNsdWRlZCBmcm9tIG5ldGluZXQ2L2luNi5oCi1fX0tBTUVfVkVSU0lPTiA9ICJGcmVlQlNEIgotSVBWNlBPUlRfUkVTRVJWRUQgPSAxMDI0Ci1JUFY2UE9SVF9BTk9OTUlOID0gNDkxNTIKLUlQVjZQT1JUX0FOT05NQVggPSA2NTUzNQotSVBWNlBPUlRfUkVTRVJWRURNSU4gPSA2MDAKLUlQVjZQT1JUX1JFU0VSVkVETUFYID0gKElQVjZQT1JUX1JFU0VSVkVELTEpCi1JTkVUNl9BRERSU1RSTEVOID0gNDYKLUlQVjZfQUREUl9JTlQzMl9PTkUgPSAxCi1JUFY2X0FERFJfSU5UMzJfVFdPID0gMgotSVBWNl9BRERSX0lOVDMyX01OTCA9ICgtMTY3MTE2ODApCi1JUFY2X0FERFJfSU5UMzJfTUxMID0gKC0xNjY0NjE0NCkKLUlQVjZfQUREUl9JTlQzMl9TTVAgPSAweDAwMDBmZmZmCi1JUFY2X0FERFJfSU5UMTZfVUxMID0gMHhmZTgwCi1JUFY2X0FERFJfSU5UMTZfVVNMID0gMHhmZWMwCi1JUFY2X0FERFJfSU5UMTZfTUxMID0gMHhmZjAyCi1JUFY2X0FERFJfSU5UMzJfT05FID0gMHgwMTAwMDAwMAotSVBWNl9BRERSX0lOVDMyX1RXTyA9IDB4MDIwMDAwMDAKLUlQVjZfQUREUl9JTlQzMl9NTkwgPSAweDAwMDAwMWZmCi1JUFY2X0FERFJfSU5UMzJfTUxMID0gMHgwMDAwMDJmZgotSVBWNl9BRERSX0lOVDMyX1NNUCA9ICgtNjU1MzYpCi1JUFY2X0FERFJfSU5UMTZfVUxMID0gMHg4MGZlCi1JUFY2X0FERFJfSU5UMTZfVVNMID0gMHhjMGZlCi1JUFY2X0FERFJfSU5UMTZfTUxMID0gMHgwMmZmCi1kZWYgSU42X0lTX0FERFJfVU5TUEVDSUZJRUQoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9MT09QQkFDSyhhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1Y0Q09NUEFUKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfVjRNQVBQRUQoYSk6IHJldHVybiBcCi0KLUlQVjZfQUREUl9TQ09QRV9OT0RFTE9DQUwgPSAweDAxCi1JUFY2X0FERFJfU0NPUEVfSU5URkFDRUxPQ0FMID0gMHgwMQotSVBWNl9BRERSX1NDT1BFX0xJTktMT0NBTCA9IDB4MDIKLUlQVjZfQUREUl9TQ09QRV9TSVRFTE9DQUwgPSAweDA1Ci1JUFY2X0FERFJfU0NPUEVfT1JHTE9DQUwgPSAweDA4Ci1JUFY2X0FERFJfU0NPUEVfR0xPQkFMID0gMHgwZQotX19JUFY2X0FERFJfU0NPUEVfTk9ERUxPQ0FMID0gMHgwMQotX19JUFY2X0FERFJfU0NPUEVfSU5URkFDRUxPQ0FMID0gMHgwMQotX19JUFY2X0FERFJfU0NPUEVfTElOS0xPQ0FMID0gMHgwMgotX19JUFY2X0FERFJfU0NPUEVfU0lURUxPQ0FMID0gMHgwNQotX19JUFY2X0FERFJfU0NPUEVfT1JHTE9DQUwgPSAweDA4Ci1fX0lQVjZfQUREUl9TQ09QRV9HTE9CQUwgPSAweDBlCi1kZWYgSU42X0lTX0FERFJfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfU0lURUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTk9ERUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfSU5URkFDRUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfU0lURUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfT1JHTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19HTE9CQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19OT0RFTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19MSU5LTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19TSVRFTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19PUkdMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0dMT0JBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19TQ09QRV9MSU5LTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfU0NPUEVfRU1CRUQoYSk6IHJldHVybiBcCi0KLWRlZiBJRkE2X0lTX0RFUFJFQ0FURUQoYSk6IHJldHVybiBcCi0KLWRlZiBJRkE2X0lTX0lOVkFMSUQoYSk6IHJldHVybiBcCi0KLUlQVjZfT1BUSU9OUyA9IDEKLUlQVjZfUkVDVk9QVFMgPSA1Ci1JUFY2X1JFQ1ZSRVRPUFRTID0gNgotSVBWNl9SRUNWRFNUQUREUiA9IDcKLUlQVjZfUkVUT1BUUyA9IDgKLUlQVjZfU09DS09QVF9SRVNFUlZFRDEgPSAzCi1JUFY2X1VOSUNBU1RfSE9QUyA9IDQKLUlQVjZfTVVMVElDQVNUX0lGID0gOQotSVBWNl9NVUxUSUNBU1RfSE9QUyA9IDEwCi1JUFY2X01VTFRJQ0FTVF9MT09QID0gMTEKLUlQVjZfSk9JTl9HUk9VUCA9IDEyCi1JUFY2X0xFQVZFX0dST1VQID0gMTMKLUlQVjZfUE9SVFJBTkdFID0gMTQKLUlDTVA2X0ZJTFRFUiA9IDE4Ci1JUFY2XzIyOTJQS1RJTkZPID0gMTkKLUlQVjZfMjI5MkhPUExJTUlUID0gMjAKLUlQVjZfMjI5Mk5FWFRIT1AgPSAyMQotSVBWNl8yMjkySE9QT1BUUyA9IDIyCi1JUFY2XzIyOTJEU1RPUFRTID0gMjMKLUlQVjZfMjI5MlJUSERSID0gMjQKLUlQVjZfMjI5MlBLVE9QVElPTlMgPSAyNQotSVBWNl9DSEVDS1NVTSA9IDI2Ci1JUFY2X1Y2T05MWSA9IDI3Ci1JUFY2X0JJTkRWNk9OTFkgPSBJUFY2X1Y2T05MWQotSVBWNl9JUFNFQ19QT0xJQ1kgPSAyOAotSVBWNl9GQUlUSCA9IDI5Ci1JUFY2X0ZXX0FERCA9IDMwCi1JUFY2X0ZXX0RFTCA9IDMxCi1JUFY2X0ZXX0ZMVVNIID0gMzIKLUlQVjZfRldfWkVSTyA9IDMzCi1JUFY2X0ZXX0dFVCA9IDM0Ci1JUFY2X1JUSERSRFNUT1BUUyA9IDM1Ci1JUFY2X1JFQ1ZQS1RJTkZPID0gMzYKLUlQVjZfUkVDVkhPUExJTUlUID0gMzcKLUlQVjZfUkVDVlJUSERSID0gMzgKLUlQVjZfUkVDVkhPUE9QVFMgPSAzOQotSVBWNl9SRUNWRFNUT1BUUyA9IDQwCi1JUFY2X1JFQ1ZSVEhEUkRTVE9QVFMgPSA0MQotSVBWNl9VU0VfTUlOX01UVSA9IDQyCi1JUFY2X1JFQ1ZQQVRITVRVID0gNDMKLUlQVjZfUEFUSE1UVSA9IDQ0Ci1JUFY2X1JFQUNIQ09ORiA9IDQ1Ci1JUFY2X1BLVElORk8gPSA0NgotSVBWNl9IT1BMSU1JVCA9IDQ3Ci1JUFY2X05FWFRIT1AgPSA0OAotSVBWNl9IT1BPUFRTID0gNDkKLUlQVjZfRFNUT1BUUyA9IDUwCi1JUFY2X1JUSERSID0gNTEKLUlQVjZfUEtUT1BUSU9OUyA9IDUyCi1JUFY2X1JFQ1ZUQ0xBU1MgPSA1NwotSVBWNl9BVVRPRkxPV0xBQkVMID0gNTkKLUlQVjZfVENMQVNTID0gNjEKLUlQVjZfRE9OVEZSQUcgPSA2MgotSVBWNl9QUkVGRVJfVEVNUEFERFIgPSA2MwotSVBWNl9NU0ZJTFRFUiA9IDc0Ci1JUFY2X1JUSERSX0xPT1NFID0gMAotSVBWNl9SVEhEUl9TVFJJQ1QgPSAxCi1JUFY2X1JUSERSX1RZUEVfMCA9IDAKLUlQVjZfREVGQVVMVF9NVUxUSUNBU1RfSE9QUyA9IDEKLUlQVjZfREVGQVVMVF9NVUxUSUNBU1RfTE9PUCA9IDEKLUlQVjZfUE9SVFJBTkdFX0RFRkFVTFQgPSAwCi1JUFY2X1BPUlRSQU5HRV9ISUdIID0gMQotSVBWNl9QT1JUUkFOR0VfTE9XID0gMgotSVBWNlBST1RPX01BWElEID0gKElQUFJPVE9fUElNICsgMSkKLUlQVjZDVExfRk9SV0FSRElORyA9IDEKLUlQVjZDVExfU0VORFJFRElSRUNUUyA9IDIKLUlQVjZDVExfREVGSExJTSA9IDMKLUlQVjZDVExfREVGTVRVID0gNAotSVBWNkNUTF9GT1JXU1JDUlQgPSA1Ci1JUFY2Q1RMX1NUQVRTID0gNgotSVBWNkNUTF9NUlRTVEFUUyA9IDcKLUlQVjZDVExfTVJUUFJPVE8gPSA4Ci1JUFY2Q1RMX01BWEZSQUdQQUNLRVRTID0gOQotSVBWNkNUTF9TT1VSQ0VDSEVDSyA9IDEwCi1JUFY2Q1RMX1NPVVJDRUNIRUNLX0xPR0lOVCA9IDExCi1JUFY2Q1RMX0FDQ0VQVF9SVEFEViA9IDEyCi1JUFY2Q1RMX0tFRVBGQUlUSCA9IDEzCi1JUFY2Q1RMX0xPR19JTlRFUlZBTCA9IDE0Ci1JUFY2Q1RMX0hEUk5FU1RMSU1JVCA9IDE1Ci1JUFY2Q1RMX0RBRF9DT1VOVCA9IDE2Ci1JUFY2Q1RMX0FVVE9fRkxPV0xBQkVMID0gMTcKLUlQVjZDVExfREVGTUNBU1RITElNID0gMTgKLUlQVjZDVExfR0lGX0hMSU0gPSAxOQotSVBWNkNUTF9LQU1FX1ZFUlNJT04gPSAyMAotSVBWNkNUTF9VU0VfREVQUkVDQVRFRCA9IDIxCi1JUFY2Q1RMX1JSX1BSVU5FID0gMjIKLUlQVjZDVExfTUFQUEVEX0FERFIgPSAyMwotSVBWNkNUTF9WNk9OTFkgPSAyNAotSVBWNkNUTF9SVEVYUElSRSA9IDI1Ci1JUFY2Q1RMX1JUTUlORVhQSVJFID0gMjYKLUlQVjZDVExfUlRNQVhDQUNIRSA9IDI3Ci1JUFY2Q1RMX1VTRVRFTVBBRERSID0gMzIKLUlQVjZDVExfVEVNUFBMVElNRSA9IDMzCi1JUFY2Q1RMX1RFTVBWTFRJTUUgPSAzNAotSVBWNkNUTF9BVVRPX0xJTktMT0NBTCA9IDM1Ci1JUFY2Q1RMX1JJUDZTVEFUUyA9IDM2Ci1JUFY2Q1RMX1BSRUZFUl9URU1QQUREUiA9IDM3Ci1JUFY2Q1RMX0FERFJDVExQT0xJQ1kgPSAzOAotSVBWNkNUTF9VU0VfREVGQVVMVFpPTkUgPSAzOQotSVBWNkNUTF9NQVhGUkFHUyA9IDQxCi1JUFY2Q1RMX0lGUSA9IDQyCi1JUFY2Q1RMX0lTQVRBUFJUUiA9IDQzCi1JUFY2Q1RMX01DQVNUX1BNVFUgPSA0NAotSVBWNkNUTF9TVEVBTFRIID0gNDUKLUlQVjZDVExfTUFYSUQgPSA0NgpkaWZmIC0tZ2l0IGEvTGliL3BsYXQtZnJlZWJzZDgvcmVnZW4gYi9MaWIvcGxhdC1mcmVlYnNkOC9yZWdlbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggOGFhNjg5OC4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1mcmVlYnNkOC9yZWdlbgorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotIyEgL2Jpbi9zaAotc2V0IC12Ci1weXRob24gLi4vLi4vVG9vbHMvc2NyaXB0cy9oMnB5LnB5IC1pICcodV9sb25nKScgL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaApkaWZmIC0tZ2l0IGEvTGliL3BsYXQtZ2VuZXJpYy9yZWdlbiBiL0xpYi9wbGF0LWdlbmVyaWMvcmVnZW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGM5NjE2N2QuLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtZ2VuZXJpYy9yZWdlbgorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotIyEgL2Jpbi9zaAotc2V0IC12Ci1ldmFsICRQWVRIT05fRk9SX0JVSUxEIC4uLy4uL1Rvb2xzL3NjcmlwdHMvaDJweS5weSAtaSAiJyh1X2xvbmcpJyIgL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaApkaWZmIC0tZ2l0IGEvTGliL3BsYXQtbGludXgvQ0RST00ucHkgYi9MaWIvcGxhdC1saW51eC9DRFJPTS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDM0MDkzNi4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1saW51eC9DRFJPTS5weQorKysgL2Rldi9udWxsCkBAIC0xLDIwNyArMCwwIEBACi0jIEdlbmVyYXRlZCBieSBoMnB5IGZyb20gL3Vzci9pbmNsdWRlL2xpbnV4L2Nkcm9tLmgKLQotQ0RST01QQVVTRSA9IDB4NTMwMQotQ0RST01SRVNVTUUgPSAweDUzMDIKLUNEUk9NUExBWU1TRiA9IDB4NTMwMwotQ0RST01QTEFZVFJLSU5EID0gMHg1MzA0Ci1DRFJPTVJFQURUT0NIRFIgPSAweDUzMDUKLUNEUk9NUkVBRFRPQ0VOVFJZID0gMHg1MzA2Ci1DRFJPTVNUT1AgPSAweDUzMDcKLUNEUk9NU1RBUlQgPSAweDUzMDgKLUNEUk9NRUpFQ1QgPSAweDUzMDkKLUNEUk9NVk9MQ1RSTCA9IDB4NTMwYQotQ0RST01TVUJDSE5MID0gMHg1MzBiCi1DRFJPTVJFQURNT0RFMiA9IDB4NTMwYwotQ0RST01SRUFETU9ERTEgPSAweDUzMGQKLUNEUk9NUkVBREFVRElPID0gMHg1MzBlCi1DRFJPTUVKRUNUX1NXID0gMHg1MzBmCi1DRFJPTU1VTFRJU0VTU0lPTiA9IDB4NTMxMAotQ0RST01fR0VUX01DTiA9IDB4NTMxMQotQ0RST01fR0VUX1VQQyA9IENEUk9NX0dFVF9NQ04KLUNEUk9NUkVTRVQgPSAweDUzMTIKLUNEUk9NVk9MUkVBRCA9IDB4NTMxMwotQ0RST01SRUFEUkFXID0gMHg1MzE0Ci1DRFJPTVJFQURDT09LRUQgPSAweDUzMTUKLUNEUk9NU0VFSyA9IDB4NTMxNgotQ0RST01QTEFZQkxLID0gMHg1MzE3Ci1DRFJPTVJFQURBTEwgPSAweDUzMTgKLUNEUk9NR0VUU1BJTkRPV04gPSAweDUzMWQKLUNEUk9NU0VUU1BJTkRPV04gPSAweDUzMWUKLUNEUk9NQ0xPU0VUUkFZID0gMHg1MzE5Ci1DRFJPTV9TRVRfT1BUSU9OUyA9IDB4NTMyMAotQ0RST01fQ0xFQVJfT1BUSU9OUyA9IDB4NTMyMQotQ0RST01fU0VMRUNUX1NQRUVEID0gMHg1MzIyCi1DRFJPTV9TRUxFQ1RfRElTQyA9IDB4NTMyMwotQ0RST01fTUVESUFfQ0hBTkdFRCA9IDB4NTMyNQotQ0RST01fRFJJVkVfU1RBVFVTID0gMHg1MzI2Ci1DRFJPTV9ESVNDX1NUQVRVUyA9IDB4NTMyNwotQ0RST01fQ0hBTkdFUl9OU0xPVFMgPSAweDUzMjgKLUNEUk9NX0xPQ0tET09SID0gMHg1MzI5Ci1DRFJPTV9ERUJVRyA9IDB4NTMzMAotQ0RST01fR0VUX0NBUEFCSUxJVFkgPSAweDUzMzEKLUNEUk9NQVVESU9CVUZTSVogPSAweDUzODIKLURWRF9SRUFEX1NUUlVDVCA9IDB4NTM5MAotRFZEX1dSSVRFX1NUUlVDVCA9IDB4NTM5MQotRFZEX0FVVEggPSAweDUzOTIKLUNEUk9NX1NFTkRfUEFDS0VUID0gMHg1MzkzCi1DRFJPTV9ORVhUX1dSSVRBQkxFID0gMHg1Mzk0Ci1DRFJPTV9MQVNUX1dSSVRURU4gPSAweDUzOTUKLUNEUk9NX1BBQ0tFVF9TSVpFID0gMTIKLUNHQ19EQVRBX1VOS05PV04gPSAwCi1DR0NfREFUQV9XUklURSA9IDEKLUNHQ19EQVRBX1JFQUQgPSAyCi1DR0NfREFUQV9OT05FID0gMwotQ0RfTUlOUyA9IDc0Ci1DRF9TRUNTID0gNjAKLUNEX0ZSQU1FUyA9IDc1Ci1DRF9TWU5DX1NJWkUgPSAxMgotQ0RfTVNGX09GRlNFVCA9IDE1MAotQ0RfQ0hVTktfU0laRSA9IDI0Ci1DRF9OVU1fT0ZfQ0hVTktTID0gOTgKLUNEX0ZSQU1FU0laRV9TVUIgPSA5NgotQ0RfSEVBRF9TSVpFID0gNAotQ0RfU1VCSEVBRF9TSVpFID0gOAotQ0RfRURDX1NJWkUgPSA0Ci1DRF9aRVJPX1NJWkUgPSA4Ci1DRF9FQ0NfU0laRSA9IDI3NgotQ0RfRlJBTUVTSVpFID0gMjA0OAotQ0RfRlJBTUVTSVpFX1JBVyA9IDIzNTIKLUNEX0ZSQU1FU0laRV9SQVdFUiA9IDI2NDYKLUNEX0ZSQU1FU0laRV9SQVcxID0gKENEX0ZSQU1FU0laRV9SQVctQ0RfU1lOQ19TSVpFKQotQ0RfRlJBTUVTSVpFX1JBVzAgPSAoQ0RfRlJBTUVTSVpFX1JBVy1DRF9TWU5DX1NJWkUtQ0RfSEVBRF9TSVpFKQotQ0RfWEFfSEVBRCA9IChDRF9IRUFEX1NJWkUrQ0RfU1VCSEVBRF9TSVpFKQotQ0RfWEFfVEFJTCA9IChDRF9FRENfU0laRStDRF9FQ0NfU0laRSkKLUNEX1hBX1NZTkNfSEVBRCA9IChDRF9TWU5DX1NJWkUrQ0RfWEFfSEVBRCkKLUNEUk9NX0xCQSA9IDB4MDEKLUNEUk9NX01TRiA9IDB4MDIKLUNEUk9NX0RBVEFfVFJBQ0sgPSAweDA0Ci1DRFJPTV9MRUFET1VUID0gMHhBQQotQ0RST01fQVVESU9fSU5WQUxJRCA9IDB4MDAKLUNEUk9NX0FVRElPX1BMQVkgPSAweDExCi1DRFJPTV9BVURJT19QQVVTRUQgPSAweDEyCi1DRFJPTV9BVURJT19DT01QTEVURUQgPSAweDEzCi1DRFJPTV9BVURJT19FUlJPUiA9IDB4MTQKLUNEUk9NX0FVRElPX05PX1NUQVRVUyA9IDB4MTUKLUNEQ19DTE9TRV9UUkFZID0gMHgxCi1DRENfT1BFTl9UUkFZID0gMHgyCi1DRENfTE9DSyA9IDB4NAotQ0RDX1NFTEVDVF9TUEVFRCA9IDB4OAotQ0RDX1NFTEVDVF9ESVNDID0gMHgxMAotQ0RDX01VTFRJX1NFU1NJT04gPSAweDIwCi1DRENfTUNOID0gMHg0MAotQ0RDX01FRElBX0NIQU5HRUQgPSAweDgwCi1DRENfUExBWV9BVURJTyA9IDB4MTAwCi1DRENfUkVTRVQgPSAweDIwMAotQ0RDX0lPQ1RMUyA9IDB4NDAwCi1DRENfRFJJVkVfU1RBVFVTID0gMHg4MDAKLUNEQ19HRU5FUklDX1BBQ0tFVCA9IDB4MTAwMAotQ0RDX0NEX1IgPSAweDIwMDAKLUNEQ19DRF9SVyA9IDB4NDAwMAotQ0RDX0RWRCA9IDB4ODAwMAotQ0RDX0RWRF9SID0gMHgxMDAwMAotQ0RDX0RWRF9SQU0gPSAweDIwMDAwCi1DRFNfTk9fSU5GTyA9IDAKLUNEU19OT19ESVNDID0gMQotQ0RTX1RSQVlfT1BFTiA9IDIKLUNEU19EUklWRV9OT1RfUkVBRFkgPSAzCi1DRFNfRElTQ19PSyA9IDQKLUNEU19BVURJTyA9IDEwMAotQ0RTX0RBVEFfMSA9IDEwMQotQ0RTX0RBVEFfMiA9IDEwMgotQ0RTX1hBXzJfMSA9IDEwMwotQ0RTX1hBXzJfMiA9IDEwNAotQ0RTX01JWEVEID0gMTA1Ci1DRE9fQVVUT19DTE9TRSA9IDB4MQotQ0RPX0FVVE9fRUpFQ1QgPSAweDIKLUNET19VU0VfRkZMQUdTID0gMHg0Ci1DRE9fTE9DSyA9IDB4OAotQ0RPX0NIRUNLX1RZUEUgPSAweDEwCi1DRF9QQVJUX01BWCA9IDY0Ci1DRF9QQVJUX01BU0sgPSAoQ0RfUEFSVF9NQVggLSAxKQotR1BDTURfQkxBTksgPSAweGExCi1HUENNRF9DTE9TRV9UUkFDSyA9IDB4NWIKLUdQQ01EX0ZMVVNIX0NBQ0hFID0gMHgzNQotR1BDTURfRk9STUFUX1VOSVQgPSAweDA0Ci1HUENNRF9HRVRfQ09ORklHVVJBVElPTiA9IDB4NDYKLUdQQ01EX0dFVF9FVkVOVF9TVEFUVVNfTk9USUZJQ0FUSU9OID0gMHg0YQotR1BDTURfR0VUX1BFUkZPUk1BTkNFID0gMHhhYwotR1BDTURfSU5RVUlSWSA9IDB4MTIKLUdQQ01EX0xPQURfVU5MT0FEID0gMHhhNgotR1BDTURfTUVDSEFOSVNNX1NUQVRVUyA9IDB4YmQKLUdQQ01EX01PREVfU0VMRUNUXzEwID0gMHg1NQotR1BDTURfTU9ERV9TRU5TRV8xMCA9IDB4NWEKLUdQQ01EX1BBVVNFX1JFU1VNRSA9IDB4NGIKLUdQQ01EX1BMQVlfQVVESU9fMTAgPSAweDQ1Ci1HUENNRF9QTEFZX0FVRElPX01TRiA9IDB4NDcKLUdQQ01EX1BMQVlfQVVESU9fVEkgPSAweDQ4Ci1HUENNRF9QTEFZX0NEID0gMHhiYwotR1BDTURfUFJFVkVOVF9BTExPV19NRURJVU1fUkVNT1ZBTCA9IDB4MWUKLUdQQ01EX1JFQURfMTAgPSAweDI4Ci1HUENNRF9SRUFEXzEyID0gMHhhOAotR1BDTURfUkVBRF9DRFZEX0NBUEFDSVRZID0gMHgyNQotR1BDTURfUkVBRF9DRCA9IDB4YmUKLUdQQ01EX1JFQURfQ0RfTVNGID0gMHhiOQotR1BDTURfUkVBRF9ESVNDX0lORk8gPSAweDUxCi1HUENNRF9SRUFEX0RWRF9TVFJVQ1RVUkUgPSAweGFkCi1HUENNRF9SRUFEX0ZPUk1BVF9DQVBBQ0lUSUVTID0gMHgyMwotR1BDTURfUkVBRF9IRUFERVIgPSAweDQ0Ci1HUENNRF9SRUFEX1RSQUNLX1JaT05FX0lORk8gPSAweDUyCi1HUENNRF9SRUFEX1NVQkNIQU5ORUwgPSAweDQyCi1HUENNRF9SRUFEX1RPQ19QTUFfQVRJUCA9IDB4NDMKLUdQQ01EX1JFUEFJUl9SWk9ORV9UUkFDSyA9IDB4NTgKLUdQQ01EX1JFUE9SVF9LRVkgPSAweGE0Ci1HUENNRF9SRVFVRVNUX1NFTlNFID0gMHgwMwotR1BDTURfUkVTRVJWRV9SWk9ORV9UUkFDSyA9IDB4NTMKLUdQQ01EX1NDQU4gPSAweGJhCi1HUENNRF9TRUVLID0gMHgyYgotR1BDTURfU0VORF9EVkRfU1RSVUNUVVJFID0gMHhhZAotR1BDTURfU0VORF9FVkVOVCA9IDB4YTIKLUdQQ01EX1NFTkRfS0VZID0gMHhhMwotR1BDTURfU0VORF9PUEMgPSAweDU0Ci1HUENNRF9TRVRfUkVBRF9BSEVBRCA9IDB4YTcKLUdQQ01EX1NFVF9TVFJFQU1JTkcgPSAweGI2Ci1HUENNRF9TVEFSVF9TVE9QX1VOSVQgPSAweDFiCi1HUENNRF9TVE9QX1BMQVlfU0NBTiA9IDB4NGUKLUdQQ01EX1RFU1RfVU5JVF9SRUFEWSA9IDB4MDAKLUdQQ01EX1ZFUklGWV8xMCA9IDB4MmYKLUdQQ01EX1dSSVRFXzEwID0gMHgyYQotR1BDTURfV1JJVEVfQU5EX1ZFUklGWV8xMCA9IDB4MmUKLUdQQ01EX1NFVF9TUEVFRCA9IDB4YmIKLUdQQ01EX1BMQVlBVURJT19USSA9IDB4NDgKLUdQQ01EX0dFVF9NRURJQV9TVEFUVVMgPSAweGRhCi1HUE1PREVfUl9XX0VSUk9SX1BBR0UgPSAweDAxCi1HUE1PREVfV1JJVEVfUEFSTVNfUEFHRSA9IDB4MDUKLUdQTU9ERV9BVURJT19DVExfUEFHRSA9IDB4MGUKLUdQTU9ERV9QT1dFUl9QQUdFID0gMHgxYQotR1BNT0RFX0ZBVUxUX0ZBSUxfUEFHRSA9IDB4MWMKLUdQTU9ERV9UT19QUk9URUNUX1BBR0UgPSAweDFkCi1HUE1PREVfQ0FQQUJJTElUSUVTX1BBR0UgPSAweDJhCi1HUE1PREVfQUxMX1BBR0VTID0gMHgzZgotR1BNT0RFX0NEUk9NX1BBR0UgPSAweDBkCi1EVkRfU1RSVUNUX1BIWVNJQ0FMID0gMHgwMAotRFZEX1NUUlVDVF9DT1BZUklHSFQgPSAweDAxCi1EVkRfU1RSVUNUX0RJU0NLRVkgPSAweDAyCi1EVkRfU1RSVUNUX0JDQSA9IDB4MDMKLURWRF9TVFJVQ1RfTUFOVUZBQ1QgPSAweDA0Ci1EVkRfTEFZRVJTID0gNAotRFZEX0xVX1NFTkRfQUdJRCA9IDAKLURWRF9IT1NUX1NFTkRfQ0hBTExFTkdFID0gMQotRFZEX0xVX1NFTkRfS0VZMSA9IDIKLURWRF9MVV9TRU5EX0NIQUxMRU5HRSA9IDMKLURWRF9IT1NUX1NFTkRfS0VZMiA9IDQKLURWRF9BVVRIX0VTVEFCTElTSEVEID0gNQotRFZEX0FVVEhfRkFJTFVSRSA9IDYKLURWRF9MVV9TRU5EX1RJVExFX0tFWSA9IDcKLURWRF9MVV9TRU5EX0FTRiA9IDgKLURWRF9JTlZBTElEQVRFX0FHSUQgPSA5Ci1EVkRfTFVfU0VORF9SUENfU1RBVEUgPSAxMAotRFZEX0hPU1RfU0VORF9SUENfU1RBVEUgPSAxMQotRFZEX0NQTV9OT19DT1BZUklHSFQgPSAwCi1EVkRfQ1BNX0NPUFlSSUdIVEVEID0gMQotRFZEX0NQX1NFQ19OT05FID0gMAotRFZEX0NQX1NFQ19FWElTVCA9IDEKLURWRF9DR01TX1VOUkVTVFJJQ1RFRCA9IDAKLURWRF9DR01TX1NJTkdMRSA9IDIKLURWRF9DR01TX1JFU1RSSUNURUQgPSAzCi0KLUNEUk9NX01BWF9TTE9UUyA9IDI1NgpkaWZmIC0tZ2l0IGEvTGliL3BsYXQtbGludXgvRExGQ04ucHkgYi9MaWIvcGxhdC1saW51eC9ETEZDTi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGQxMGFjNC4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1saW51eC9ETEZDTi5weQorKysgL2Rldi9udWxsCkBAIC0xLDgzICswLDAgQEAKLSMgR2VuZXJhdGVkIGJ5IGgycHkgZnJvbSAvdXNyL2luY2x1ZGUvZGxmY24uaAotX0RMRkNOX0ggPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBmZWF0dXJlcy5oCi1fRkVBVFVSRVNfSCA9IDEKLV9fVVNFX0FOU0kgPSAxCi1fX0ZBVk9SX0JTRCA9IDEKLV9JU09DOTlfU09VUkNFID0gMQotX1BPU0lYX1NPVVJDRSA9IDEKLV9QT1NJWF9DX1NPVVJDRSA9IDE5OTUwNgotX1hPUEVOX1NPVVJDRSA9IDYwMAotX1hPUEVOX1NPVVJDRV9FWFRFTkRFRCA9IDEKLV9MQVJHRUZJTEU2NF9TT1VSQ0UgPSAxCi1fQlNEX1NPVVJDRSA9IDEKLV9TVklEX1NPVVJDRSA9IDEKLV9CU0RfU09VUkNFID0gMQotX1NWSURfU09VUkNFID0gMQotX19VU0VfSVNPQzk5ID0gMQotX1BPU0lYX1NPVVJDRSA9IDEKLV9QT1NJWF9DX1NPVVJDRSA9IDIKLV9QT1NJWF9DX1NPVVJDRSA9IDE5OTUwNgotX19VU0VfUE9TSVggPSAxCi1fX1VTRV9QT1NJWDIgPSAxCi1fX1VTRV9QT1NJWDE5OTMwOSA9IDEKLV9fVVNFX1BPU0lYMTk5NTA2ID0gMQotX19VU0VfWE9QRU4gPSAxCi1fX1VTRV9YT1BFTl9FWFRFTkRFRCA9IDEKLV9fVVNFX1VOSVg5OCA9IDEKLV9MQVJHRUZJTEVfU09VUkNFID0gMQotX19VU0VfWE9QRU4ySyA9IDEKLV9fVVNFX0lTT0M5OSA9IDEKLV9fVVNFX1hPUEVOX0VYVEVOREVEID0gMQotX19VU0VfTEFSR0VGSUxFID0gMQotX19VU0VfTEFSR0VGSUxFNjQgPSAxCi1fX1VTRV9GSUxFX09GRlNFVDY0ID0gMQotX19VU0VfTUlTQyA9IDEKLV9fVVNFX0JTRCA9IDEKLV9fVVNFX1NWSUQgPSAxCi1fX1VTRV9HTlUgPSAxCi1fX1VTRV9SRUVOVFJBTlQgPSAxCi1fX1NURENfSUVDXzU1OV9fID0gMQotX19TVERDX0lFQ181NTlfQ09NUExFWF9fID0gMQotX19TVERDX0lTT18xMDY0Nl9fID0gMjAwMDA5Ci1fX0dOVV9MSUJSQVJZX18gPSA2Ci1fX0dMSUJDX18gPSAyCi1fX0dMSUJDX01JTk9SX18gPSAyCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvY2RlZnMuaAotX1NZU19DREVGU19IID0gMQotZGVmIF9fUE1UKGFyZ3MpOiByZXR1cm4gYXJncwotCi1kZWYgX19QKGFyZ3MpOiByZXR1cm4gYXJncwotCi1kZWYgX19QTVQoYXJncyk6IHJldHVybiBhcmdzCi0KLWRlZiBfX1NUUklORyh4KTogcmV0dXJuICN4Ci0KLV9fZmxleGFyciA9IFtdCi1fX2ZsZXhhcnIgPSBbMF0KLV9fZmxleGFyciA9IFtdCi1fX2ZsZXhhcnIgPSBbMV0KLWRlZiBfX0FTTU5BTUUoY25hbWUpOiByZXR1cm4gX19BU01OQU1FMiAoX19VU0VSX0xBQkVMX1BSRUZJWF9fLCBjbmFtZSkKLQotZGVmIF9fYXR0cmlidXRlX18oeHl6KTogcmV0dXJuCi0KLWRlZiBfX2F0dHJpYnV0ZV9mb3JtYXRfYXJnX18oeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfYXJnX18gKHgpKSkKLQotZGVmIF9fYXR0cmlidXRlX2Zvcm1hdF9hcmdfXyh4KTogcmV0dXJuCi0KLV9fVVNFX0xBUkdFRklMRSA9IDEKLV9fVVNFX0xBUkdFRklMRTY0ID0gMQotX19VU0VfRVhURVJOX0lOTElORVMgPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBnbnUvc3R1YnMuaAotCi0jIEluY2x1ZGVkIGZyb20gYml0cy9kbGZjbi5oCi1SVExEX0xBWlkgPSAweDAwMDAxCi1SVExEX05PVyA9IDB4MDAwMDIKLVJUTERfQklORElOR19NQVNLID0gMHgzCi1SVExEX05PTE9BRCA9IDB4MDAwMDQKLVJUTERfR0xPQkFMID0gMHgwMDEwMAotUlRMRF9MT0NBTCA9IDAKLVJUTERfTk9ERUxFVEUgPSAweDAxMDAwCmRpZmYgLS1naXQgYS9MaWIvcGxhdC1saW51eC9JTi5weSBiL0xpYi9wbGF0LWxpbnV4L0lOLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkN2QzMDAyLi4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LWxpbnV4L0lOLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNjE1ICswLDAgQEAKLSMgR2VuZXJhdGVkIGJ5IGgycHkgZnJvbSAvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oCi1fTkVUSU5FVF9JTl9IID0gMQotCi0jIEluY2x1ZGVkIGZyb20gZmVhdHVyZXMuaAotX0ZFQVRVUkVTX0ggPSAxCi1fX1VTRV9BTlNJID0gMQotX19GQVZPUl9CU0QgPSAxCi1fSVNPQzk5X1NPVVJDRSA9IDEKLV9QT1NJWF9TT1VSQ0UgPSAxCi1fUE9TSVhfQ19TT1VSQ0UgPSAxOTk1MDYKLV9YT1BFTl9TT1VSQ0UgPSA2MDAKLV9YT1BFTl9TT1VSQ0VfRVhURU5ERUQgPSAxCi1fTEFSR0VGSUxFNjRfU09VUkNFID0gMQotX0JTRF9TT1VSQ0UgPSAxCi1fU1ZJRF9TT1VSQ0UgPSAxCi1fQlNEX1NPVVJDRSA9IDEKLV9TVklEX1NPVVJDRSA9IDEKLV9fVVNFX0lTT0M5OSA9IDEKLV9QT1NJWF9TT1VSQ0UgPSAxCi1fUE9TSVhfQ19TT1VSQ0UgPSAyCi1fUE9TSVhfQ19TT1VSQ0UgPSAxOTk1MDYKLV9fVVNFX1BPU0lYID0gMQotX19VU0VfUE9TSVgyID0gMQotX19VU0VfUE9TSVgxOTkzMDkgPSAxCi1fX1VTRV9QT1NJWDE5OTUwNiA9IDEKLV9fVVNFX1hPUEVOID0gMQotX19VU0VfWE9QRU5fRVhURU5ERUQgPSAxCi1fX1VTRV9VTklYOTggPSAxCi1fTEFSR0VGSUxFX1NPVVJDRSA9IDEKLV9fVVNFX1hPUEVOMksgPSAxCi1fX1VTRV9JU09DOTkgPSAxCi1fX1VTRV9YT1BFTl9FWFRFTkRFRCA9IDEKLV9fVVNFX0xBUkdFRklMRSA9IDEKLV9fVVNFX0xBUkdFRklMRTY0ID0gMQotX19VU0VfRklMRV9PRkZTRVQ2NCA9IDEKLV9fVVNFX01JU0MgPSAxCi1fX1VTRV9CU0QgPSAxCi1fX1VTRV9TVklEID0gMQotX19VU0VfR05VID0gMQotX19VU0VfUkVFTlRSQU5UID0gMQotX19TVERDX0lFQ181NTlfXyA9IDEKLV9fU1REQ19JRUNfNTU5X0NPTVBMRVhfXyA9IDEKLV9fU1REQ19JU09fMTA2NDZfXyA9IDIwMDAwOQotX19HTlVfTElCUkFSWV9fID0gNgotX19HTElCQ19fID0gMgotX19HTElCQ19NSU5PUl9fID0gMgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2NkZWZzLmgKLV9TWVNfQ0RFRlNfSCA9IDEKLWRlZiBfX1BNVChhcmdzKTogcmV0dXJuIGFyZ3MKLQotZGVmIF9fUChhcmdzKTogcmV0dXJuIGFyZ3MKLQotZGVmIF9fUE1UKGFyZ3MpOiByZXR1cm4gYXJncwotCi1kZWYgX19TVFJJTkcoeCk6IHJldHVybiAjeAotCi1fX2ZsZXhhcnIgPSBbXQotX19mbGV4YXJyID0gWzBdCi1fX2ZsZXhhcnIgPSBbXQotX19mbGV4YXJyID0gWzFdCi1kZWYgX19BU01OQU1FKGNuYW1lKTogcmV0dXJuIF9fQVNNTkFNRTIgKF9fVVNFUl9MQUJFTF9QUkVGSVhfXywgY25hbWUpCi0KLWRlZiBfX2F0dHJpYnV0ZV9fKHh5eik6IHJldHVybgotCi1kZWYgX19hdHRyaWJ1dGVfZm9ybWF0X2FyZ19fKHgpOiByZXR1cm4gX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X2FyZ19fICh4KSkpCi0KLWRlZiBfX2F0dHJpYnV0ZV9mb3JtYXRfYXJnX18oeCk6IHJldHVybgotCi1fX1VTRV9MQVJHRUZJTEUgPSAxCi1fX1VTRV9MQVJHRUZJTEU2NCA9IDEKLV9fVVNFX0VYVEVSTl9JTkxJTkVTID0gMQotCi0jIEluY2x1ZGVkIGZyb20gZ251L3N0dWJzLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN0ZGludC5oCi1fU1RESU5UX0ggPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBiaXRzL3djaGFyLmgKLV9CSVRTX1dDSEFSX0ggPSAxCi1fX1dDSEFSX01JTiA9ICgtMjE0NzQ4MzY0NyAtIDEpCi1fX1dDSEFSX01BWCA9ICgyMTQ3NDgzNjQ3KQotCi0jIEluY2x1ZGVkIGZyb20gYml0cy93b3Jkc2l6ZS5oCi1fX1dPUkRTSVpFID0gMzIKLWRlZiBfX0lOVDY0X0MoYyk6IHJldHVybiBjICMjIEwKLQotZGVmIF9fVUlOVDY0X0MoYyk6IHJldHVybiBjICMjIFVMCi0KLWRlZiBfX0lOVDY0X0MoYyk6IHJldHVybiBjICMjIExMCi0KLWRlZiBfX1VJTlQ2NF9DKGMpOiByZXR1cm4gYyAjIyBVTEwKLQotSU5UOF9NSU4gPSAoLTEyOCkKLUlOVDE2X01JTiA9ICgtMzI3NjctMSkKLUlOVDMyX01JTiA9ICgtMjE0NzQ4MzY0Ny0xKQotSU5UNjRfTUlOID0gKC1fX0lOVDY0X0MoOTIyMzM3MjAzNjg1NDc3NTgwNyktMSkKLUlOVDhfTUFYID0gKDEyNykKLUlOVDE2X01BWCA9ICgzMjc2NykKLUlOVDMyX01BWCA9ICgyMTQ3NDgzNjQ3KQotSU5UNjRfTUFYID0gKF9fSU5UNjRfQyg5MjIzMzcyMDM2ODU0Nzc1ODA3KSkKLVVJTlQ4X01BWCA9ICgyNTUpCi1VSU5UMTZfTUFYID0gKDY1NTM1KQotVUlOVDY0X01BWCA9IChfX1VJTlQ2NF9DKDE4NDQ2NzQ0MDczNzA5NTUxNjE1KSkKLUlOVF9MRUFTVDhfTUlOID0gKC0xMjgpCi1JTlRfTEVBU1QxNl9NSU4gPSAoLTMyNzY3LTEpCi1JTlRfTEVBU1QzMl9NSU4gPSAoLTIxNDc0ODM2NDctMSkKLUlOVF9MRUFTVDY0X01JTiA9ICgtX19JTlQ2NF9DKDkyMjMzNzIwMzY4NTQ3NzU4MDcpLTEpCi1JTlRfTEVBU1Q4X01BWCA9ICgxMjcpCi1JTlRfTEVBU1QxNl9NQVggPSAoMzI3NjcpCi1JTlRfTEVBU1QzMl9NQVggPSAoMjE0NzQ4MzY0NykKLUlOVF9MRUFTVDY0X01BWCA9IChfX0lOVDY0X0MoOTIyMzM3MjAzNjg1NDc3NTgwNykpCi1VSU5UX0xFQVNUOF9NQVggPSAoMjU1KQotVUlOVF9MRUFTVDE2X01BWCA9ICg2NTUzNSkKLVVJTlRfTEVBU1Q2NF9NQVggPSAoX19VSU5UNjRfQygxODQ0Njc0NDA3MzcwOTU1MTYxNSkpCi1JTlRfRkFTVDhfTUlOID0gKC0xMjgpCi1JTlRfRkFTVDE2X01JTiA9ICgtOTIyMzM3MjAzNjg1NDc3NTgwNy0xKQotSU5UX0ZBU1QzMl9NSU4gPSAoLTkyMjMzNzIwMzY4NTQ3NzU4MDctMSkKLUlOVF9GQVNUMTZfTUlOID0gKC0yMTQ3NDgzNjQ3LTEpCi1JTlRfRkFTVDMyX01JTiA9ICgtMjE0NzQ4MzY0Ny0xKQotSU5UX0ZBU1Q2NF9NSU4gPSAoLV9fSU5UNjRfQyg5MjIzMzcyMDM2ODU0Nzc1ODA3KS0xKQotSU5UX0ZBU1Q4X01BWCA9ICgxMjcpCi1JTlRfRkFTVDE2X01BWCA9ICg5MjIzMzcyMDM2ODU0Nzc1ODA3KQotSU5UX0ZBU1QzMl9NQVggPSAoOTIyMzM3MjAzNjg1NDc3NTgwNykKLUlOVF9GQVNUMTZfTUFYID0gKDIxNDc0ODM2NDcpCi1JTlRfRkFTVDMyX01BWCA9ICgyMTQ3NDgzNjQ3KQotSU5UX0ZBU1Q2NF9NQVggPSAoX19JTlQ2NF9DKDkyMjMzNzIwMzY4NTQ3NzU4MDcpKQotVUlOVF9GQVNUOF9NQVggPSAoMjU1KQotVUlOVF9GQVNUNjRfTUFYID0gKF9fVUlOVDY0X0MoMTg0NDY3NDQwNzM3MDk1NTE2MTUpKQotSU5UUFRSX01JTiA9ICgtOTIyMzM3MjAzNjg1NDc3NTgwNy0xKQotSU5UUFRSX01BWCA9ICg5MjIzMzcyMDM2ODU0Nzc1ODA3KQotSU5UUFRSX01JTiA9ICgtMjE0NzQ4MzY0Ny0xKQotSU5UUFRSX01BWCA9ICgyMTQ3NDgzNjQ3KQotSU5UTUFYX01JTiA9ICgtX19JTlQ2NF9DKDkyMjMzNzIwMzY4NTQ3NzU4MDcpLTEpCi1JTlRNQVhfTUFYID0gKF9fSU5UNjRfQyg5MjIzMzcyMDM2ODU0Nzc1ODA3KSkKLVVJTlRNQVhfTUFYID0gKF9fVUlOVDY0X0MoMTg0NDY3NDQwNzM3MDk1NTE2MTUpKQotUFRSRElGRl9NSU4gPSAoLTkyMjMzNzIwMzY4NTQ3NzU4MDctMSkKLVBUUkRJRkZfTUFYID0gKDkyMjMzNzIwMzY4NTQ3NzU4MDcpCi1QVFJESUZGX01JTiA9ICgtMjE0NzQ4MzY0Ny0xKQotUFRSRElGRl9NQVggPSAoMjE0NzQ4MzY0NykKLVNJR19BVE9NSUNfTUlOID0gKC0yMTQ3NDgzNjQ3LTEpCi1TSUdfQVRPTUlDX01BWCA9ICgyMTQ3NDgzNjQ3KQotV0NIQVJfTUlOID0gX19XQ0hBUl9NSU4KLVdDSEFSX01BWCA9IF9fV0NIQVJfTUFYCi1kZWYgSU5UOF9DKGMpOiByZXR1cm4gYwotCi1kZWYgSU5UMTZfQyhjKTogcmV0dXJuIGMKLQotZGVmIElOVDMyX0MoYyk6IHJldHVybiBjCi0KLWRlZiBJTlQ2NF9DKGMpOiByZXR1cm4gYyAjIyBMCi0KLWRlZiBJTlQ2NF9DKGMpOiByZXR1cm4gYyAjIyBMTAotCi1kZWYgVUlOVDhfQyhjKTogcmV0dXJuIGMgIyMgVQotCi1kZWYgVUlOVDE2X0MoYyk6IHJldHVybiBjICMjIFUKLQotZGVmIFVJTlQzMl9DKGMpOiByZXR1cm4gYyAjIyBVCi0KLWRlZiBVSU5UNjRfQyhjKTogcmV0dXJuIGMgIyMgVUwKLQotZGVmIFVJTlQ2NF9DKGMpOiByZXR1cm4gYyAjIyBVTEwKLQotZGVmIElOVE1BWF9DKGMpOiByZXR1cm4gYyAjIyBMCi0KLWRlZiBVSU5UTUFYX0MoYyk6IHJldHVybiBjICMjIFVMCi0KLWRlZiBJTlRNQVhfQyhjKTogcmV0dXJuIGMgIyMgTEwKLQotZGVmIFVJTlRNQVhfQyhjKTogcmV0dXJuIGMgIyMgVUxMCi0KLQotIyBJbmNsdWRlZCBmcm9tIGJpdHMvdHlwZXMuaAotX0JJVFNfVFlQRVNfSCA9IDEKLV9fRkRfU0VUU0laRSA9IDEwMjQKLQotIyBJbmNsdWRlZCBmcm9tIGJpdHMvcHRocmVhZHR5cGVzLmgKLV9CSVRTX1BUSFJFQURUWVBFU19IID0gMQotCi0jIEluY2x1ZGVkIGZyb20gYml0cy9zY2hlZC5oCi1TQ0hFRF9PVEhFUiA9IDAKLVNDSEVEX0ZJRk8gPSAxCi1TQ0hFRF9SUiA9IDIKLUNTSUdOQUwgPSAweDAwMDAwMGZmCi1DTE9ORV9WTSA9IDB4MDAwMDAxMDAKLUNMT05FX0ZTID0gMHgwMDAwMDIwMAotQ0xPTkVfRklMRVMgPSAweDAwMDAwNDAwCi1DTE9ORV9TSUdIQU5EID0gMHgwMDAwMDgwMAotQ0xPTkVfUElEID0gMHgwMDAwMTAwMAotQ0xPTkVfUFRSQUNFID0gMHgwMDAwMjAwMAotQ0xPTkVfVkZPUksgPSAweDAwMDA0MDAwCi1fX2RlZmluZWRfc2NoZWRwYXJhbSA9IDEKLWRlZiBJTl9DTEFTU0EoYSk6IHJldHVybiAoKCgoaW5fYWRkcl90KShhKSkgJiAoLTIxNDc0ODM2NDgpKSA9PSAwKQotCi1JTl9DTEFTU0FfTkVUID0gKC0xNjc3NzIxNikKLUlOX0NMQVNTQV9OU0hJRlQgPSAyNAotSU5fQ0xBU1NBX0hPU1QgPSAoKC0xKSAmIH5JTl9DTEFTU0FfTkVUKQotSU5fQ0xBU1NBX01BWCA9IDEyOAotZGVmIElOX0NMQVNTQihhKTogcmV0dXJuICgoKChpbl9hZGRyX3QpKGEpKSAmICgtMTA3Mzc0MTgyNCkpID09ICgtMjE0NzQ4MzY0OCkpCi0KLUlOX0NMQVNTQl9ORVQgPSAoLTY1NTM2KQotSU5fQ0xBU1NCX05TSElGVCA9IDE2Ci1JTl9DTEFTU0JfSE9TVCA9ICgoLTEpICYgfklOX0NMQVNTQl9ORVQpCi1JTl9DTEFTU0JfTUFYID0gNjU1MzYKLWRlZiBJTl9DTEFTU0MoYSk6IHJldHVybiAoKCgoaW5fYWRkcl90KShhKSkgJiAoLTUzNjg3MDkxMikpID09ICgtMTA3Mzc0MTgyNCkpCi0KLUlOX0NMQVNTQ19ORVQgPSAoLTI1NikKLUlOX0NMQVNTQ19OU0hJRlQgPSA4Ci1JTl9DTEFTU0NfSE9TVCA9ICgoLTEpICYgfklOX0NMQVNTQ19ORVQpCi1kZWYgSU5fQ0xBU1NEKGEpOiByZXR1cm4gKCgoKGluX2FkZHJfdCkoYSkpICYgKC0yNjg0MzU0NTYpKSA9PSAoLTUzNjg3MDkxMikpCi0KLWRlZiBJTl9NVUxUSUNBU1QoYSk6IHJldHVybiBJTl9DTEFTU0QoYSkKLQotZGVmIElOX0VYUEVSSU1FTlRBTChhKTogcmV0dXJuICgoKChpbl9hZGRyX3QpKGEpKSAmICgtNTM2ODcwOTEyKSkgPT0gKC01MzY4NzA5MTIpKQotCi1kZWYgSU5fQkFEQ0xBU1MoYSk6IHJldHVybiAoKCgoaW5fYWRkcl90KShhKSkgJiAoLTI2ODQzNTQ1NikpID09ICgtMjY4NDM1NDU2KSkKLQotSU5fTE9PUEJBQ0tORVQgPSAxMjcKLUlORVRfQUREUlNUUkxFTiA9IDE2Ci1JTkVUNl9BRERSU1RSTEVOID0gNDYKLQotIyBJbmNsdWRlZCBmcm9tIGJpdHMvc29ja2V0LmgKLQotIyBJbmNsdWRlZCBmcm9tIGxpbWl0cy5oCi1fTElCQ19MSU1JVFNfSF8gPSAxCi1NQl9MRU5fTUFYID0gMTYKLV9MSU1JVFNfSCA9IDEKLUNIQVJfQklUID0gOAotU0NIQVJfTUlOID0gKC0xMjgpCi1TQ0hBUl9NQVggPSAxMjcKLVVDSEFSX01BWCA9IDI1NQotQ0hBUl9NSU4gPSAwCi1DSEFSX01BWCA9IFVDSEFSX01BWAotQ0hBUl9NSU4gPSBTQ0hBUl9NSU4KLUNIQVJfTUFYID0gU0NIQVJfTUFYCi1TSFJUX01JTiA9ICgtMzI3NjgpCi1TSFJUX01BWCA9IDMyNzY3Ci1VU0hSVF9NQVggPSA2NTUzNQotSU5UX01BWCA9IDIxNDc0ODM2NDcKLUxPTkdfTUFYID0gOTIyMzM3MjAzNjg1NDc3NTgwNwotTE9OR19NQVggPSAyMTQ3NDgzNjQ3Ci1MT05HX01JTiA9ICgtTE9OR19NQVggLSAxKQotCi0jIEluY2x1ZGVkIGZyb20gYml0cy9wb3NpeDFfbGltLmgKLV9CSVRTX1BPU0lYMV9MSU1fSCA9IDEKLV9QT1NJWF9BSU9fTElTVElPX01BWCA9IDIKLV9QT1NJWF9BSU9fTUFYID0gMQotX1BPU0lYX0FSR19NQVggPSA0MDk2Ci1fUE9TSVhfQ0hJTERfTUFYID0gNgotX1BPU0lYX0RFTEFZVElNRVJfTUFYID0gMzIKLV9QT1NJWF9MSU5LX01BWCA9IDgKLV9QT1NJWF9NQVhfQ0FOT04gPSAyNTUKLV9QT1NJWF9NQVhfSU5QVVQgPSAyNTUKLV9QT1NJWF9NUV9PUEVOX01BWCA9IDgKLV9QT1NJWF9NUV9QUklPX01BWCA9IDMyCi1fUE9TSVhfTkdST1VQU19NQVggPSAwCi1fUE9TSVhfT1BFTl9NQVggPSAxNgotX1BPU0lYX0ZEX1NFVFNJWkUgPSBfUE9TSVhfT1BFTl9NQVgKLV9QT1NJWF9OQU1FX01BWCA9IDE0Ci1fUE9TSVhfUEFUSF9NQVggPSAyNTYKLV9QT1NJWF9QSVBFX0JVRiA9IDUxMgotX1BPU0lYX1JUU0lHX01BWCA9IDgKLV9QT1NJWF9TRU1fTlNFTVNfTUFYID0gMjU2Ci1fUE9TSVhfU0VNX1ZBTFVFX01BWCA9IDMyNzY3Ci1fUE9TSVhfU0lHUVVFVUVfTUFYID0gMzIKLV9QT1NJWF9TU0laRV9NQVggPSAzMjc2NwotX1BPU0lYX1NUUkVBTV9NQVggPSA4Ci1fUE9TSVhfVFpOQU1FX01BWCA9IDYKLV9QT1NJWF9RTElNSVQgPSAxCi1fUE9TSVhfSElXQVQgPSBfUE9TSVhfUElQRV9CVUYKLV9QT1NJWF9VSU9fTUFYSU9WID0gMTYKLV9QT1NJWF9UVFlfTkFNRV9NQVggPSA5Ci1fUE9TSVhfVElNRVJfTUFYID0gMzIKLV9QT1NJWF9MT0dJTl9OQU1FX01BWCA9IDkKLV9QT1NJWF9DTE9DS1JFU19NSU4gPSAyMDAwMDAwMAotCi0jIEluY2x1ZGVkIGZyb20gYml0cy9sb2NhbF9saW0uaAotCi0jIEluY2x1ZGVkIGZyb20gbGludXgvbGltaXRzLmgKLU5SX09QRU4gPSAxMDI0Ci1OR1JPVVBTX01BWCA9IDMyCi1BUkdfTUFYID0gMTMxMDcyCi1DSElMRF9NQVggPSA5OTkKLU9QRU5fTUFYID0gMjU2Ci1MSU5LX01BWCA9IDEyNwotTUFYX0NBTk9OID0gMjU1Ci1NQVhfSU5QVVQgPSAyNTUKLU5BTUVfTUFYID0gMjU1Ci1QQVRIX01BWCA9IDQwOTYKLVBJUEVfQlVGID0gNDA5NgotUlRTSUdfTUFYID0gMzIKLV9QT1NJWF9USFJFQURfS0VZU19NQVggPSAxMjgKLVBUSFJFQURfS0VZU19NQVggPSAxMDI0Ci1fUE9TSVhfVEhSRUFEX0RFU1RSVUNUT1JfSVRFUkFUSU9OUyA9IDQKLVBUSFJFQURfREVTVFJVQ1RPUl9JVEVSQVRJT05TID0gX1BPU0lYX1RIUkVBRF9ERVNUUlVDVE9SX0lURVJBVElPTlMKLV9QT1NJWF9USFJFQURfVEhSRUFEU19NQVggPSA2NAotUFRIUkVBRF9USFJFQURTX01BWCA9IDEwMjQKLUFJT19QUklPX0RFTFRBX01BWCA9IDIwCi1QVEhSRUFEX1NUQUNLX01JTiA9IDE2Mzg0Ci1USU1FUl9NQVggPSAyNTYKLVNTSVpFX01BWCA9IExPTkdfTUFYCi1OR1JPVVBTX01BWCA9IF9QT1NJWF9OR1JPVVBTX01BWAotCi0jIEluY2x1ZGVkIGZyb20gYml0cy9wb3NpeDJfbGltLmgKLV9CSVRTX1BPU0lYMl9MSU1fSCA9IDEKLV9QT1NJWDJfQkNfQkFTRV9NQVggPSA5OQotX1BPU0lYMl9CQ19ESU1fTUFYID0gMjA0OAotX1BPU0lYMl9CQ19TQ0FMRV9NQVggPSA5OQotX1BPU0lYMl9CQ19TVFJJTkdfTUFYID0gMTAwMAotX1BPU0lYMl9DT0xMX1dFSUdIVFNfTUFYID0gMgotX1BPU0lYMl9FWFBSX05FU1RfTUFYID0gMzIKLV9QT1NJWDJfTElORV9NQVggPSAyMDQ4Ci1fUE9TSVgyX1JFX0RVUF9NQVggPSAyNTUKLV9QT1NJWDJfQ0hBUkNMQVNTX05BTUVfTUFYID0gMTQKLUJDX0JBU0VfTUFYID0gX1BPU0lYMl9CQ19CQVNFX01BWAotQkNfRElNX01BWCA9IF9QT1NJWDJfQkNfRElNX01BWAotQkNfU0NBTEVfTUFYID0gX1BPU0lYMl9CQ19TQ0FMRV9NQVgKLUJDX1NUUklOR19NQVggPSBfUE9TSVgyX0JDX1NUUklOR19NQVgKLUNPTExfV0VJR0hUU19NQVggPSAyNTUKLUVYUFJfTkVTVF9NQVggPSBfUE9TSVgyX0VYUFJfTkVTVF9NQVgKLUxJTkVfTUFYID0gX1BPU0lYMl9MSU5FX01BWAotQ0hBUkNMQVNTX05BTUVfTUFYID0gMjA0OAotUkVfRFVQX01BWCA9ICgweDdmZmYpCi0KLSMgSW5jbHVkZWQgZnJvbSBiaXRzL3hvcGVuX2xpbS5oCi1fWE9QRU5fTElNX0ggPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBiaXRzL3N0ZGlvX2xpbS5oCi1MX3RtcG5hbSA9IDIwCi1UTVBfTUFYID0gMjM4MzI4Ci1GSUxFTkFNRV9NQVggPSA0MDk2Ci1MX2N0ZXJtaWQgPSA5Ci1MX2N1c2VyaWQgPSA5Ci1GT1BFTl9NQVggPSAxNgotSU9WX01BWCA9IDEwMjQKLV9YT1BFTl9JT1ZfTUFYID0gX1BPU0lYX1VJT19NQVhJT1YKLU5MX0FSR01BWCA9IF9QT1NJWF9BUkdfTUFYCi1OTF9MQU5HTUFYID0gX1BPU0lYMl9MSU5FX01BWAotTkxfTVNHTUFYID0gSU5UX01BWAotTkxfTk1BWCA9IElOVF9NQVgKLU5MX1NFVE1BWCA9IElOVF9NQVgKLU5MX1RFWFRNQVggPSBJTlRfTUFYCi1OWkVSTyA9IDIwCi1XT1JEX0JJVCA9IDE2Ci1XT1JEX0JJVCA9IDMyCi1XT1JEX0JJVCA9IDY0Ci1XT1JEX0JJVCA9IDE2Ci1XT1JEX0JJVCA9IDMyCi1XT1JEX0JJVCA9IDY0Ci1XT1JEX0JJVCA9IDMyCi1MT05HX0JJVCA9IDMyCi1MT05HX0JJVCA9IDY0Ci1MT05HX0JJVCA9IDMyCi1MT05HX0JJVCA9IDY0Ci1MT05HX0JJVCA9IDY0Ci1MT05HX0JJVCA9IDMyCi1mcm9tIFRZUEVTIGltcG9ydCAqCi1QRl9VTlNQRUMgPSAwCi1QRl9MT0NBTCA9IDEKLVBGX1VOSVggPSBQRl9MT0NBTAotUEZfRklMRSA9IFBGX0xPQ0FMCi1QRl9JTkVUID0gMgotUEZfQVgyNSA9IDMKLVBGX0lQWCA9IDQKLVBGX0FQUExFVEFMSyA9IDUKLVBGX05FVFJPTSA9IDYKLVBGX0JSSURHRSA9IDcKLVBGX0FUTVBWQyA9IDgKLVBGX1gyNSA9IDkKLVBGX0lORVQ2ID0gMTAKLVBGX1JPU0UgPSAxMQotUEZfREVDbmV0ID0gMTIKLVBGX05FVEJFVUkgPSAxMwotUEZfU0VDVVJJVFkgPSAxNAotUEZfS0VZID0gMTUKLVBGX05FVExJTksgPSAxNgotUEZfUk9VVEUgPSBQRl9ORVRMSU5LCi1QRl9QQUNLRVQgPSAxNwotUEZfQVNIID0gMTgKLVBGX0VDT05FVCA9IDE5Ci1QRl9BVE1TVkMgPSAyMAotUEZfU05BID0gMjIKLVBGX0lSREEgPSAyMwotUEZfUFBQT1ggPSAyNAotUEZfV0FOUElQRSA9IDI1Ci1QRl9CTFVFVE9PVEggPSAzMQotUEZfTUFYID0gMzIKLUFGX1VOU1BFQyA9IFBGX1VOU1BFQwotQUZfTE9DQUwgPSBQRl9MT0NBTAotQUZfVU5JWCA9IFBGX1VOSVgKLUFGX0ZJTEUgPSBQRl9GSUxFCi1BRl9JTkVUID0gUEZfSU5FVAotQUZfQVgyNSA9IFBGX0FYMjUKLUFGX0lQWCA9IFBGX0lQWAotQUZfQVBQTEVUQUxLID0gUEZfQVBQTEVUQUxLCi1BRl9ORVRST00gPSBQRl9ORVRST00KLUFGX0JSSURHRSA9IFBGX0JSSURHRQotQUZfQVRNUFZDID0gUEZfQVRNUFZDCi1BRl9YMjUgPSBQRl9YMjUKLUFGX0lORVQ2ID0gUEZfSU5FVDYKLUFGX1JPU0UgPSBQRl9ST1NFCi1BRl9ERUNuZXQgPSBQRl9ERUNuZXQKLUFGX05FVEJFVUkgPSBQRl9ORVRCRVVJCi1BRl9TRUNVUklUWSA9IFBGX1NFQ1VSSVRZCi1BRl9LRVkgPSBQRl9LRVkKLUFGX05FVExJTksgPSBQRl9ORVRMSU5LCi1BRl9ST1VURSA9IFBGX1JPVVRFCi1BRl9QQUNLRVQgPSBQRl9QQUNLRVQKLUFGX0FTSCA9IFBGX0FTSAotQUZfRUNPTkVUID0gUEZfRUNPTkVUCi1BRl9BVE1TVkMgPSBQRl9BVE1TVkMKLUFGX1NOQSA9IFBGX1NOQQotQUZfSVJEQSA9IFBGX0lSREEKLUFGX1BQUE9YID0gUEZfUFBQT1gKLUFGX1dBTlBJUEUgPSBQRl9XQU5QSVBFCi1BRl9CTFVFVE9PVEggPSBQRl9CTFVFVE9PVEgKLUFGX01BWCA9IFBGX01BWAotU09MX1JBVyA9IDI1NQotU09MX0RFQ05FVCA9IDI2MQotU09MX1gyNSA9IDI2MgotU09MX1BBQ0tFVCA9IDI2MwotU09MX0FUTSA9IDI2NAotU09MX0FBTCA9IDI2NQotU09MX0lSREEgPSAyNjYKLVNPTUFYQ09OTiA9IDEyOAotCi0jIEluY2x1ZGVkIGZyb20gYml0cy9zb2NrYWRkci5oCi1fQklUU19TT0NLQUREUl9IID0gMQotZGVmIF9fU09DS0FERFJfQ09NTU9OKHNhX3ByZWZpeCk6IHJldHVybiBcCi0KLV9TU19TSVpFID0gMTI4Ci1kZWYgQ01TR19GSVJTVEhEUihtaGRyKTogcmV0dXJuIFwKLQotCi0jIEluY2x1ZGVkIGZyb20gYXNtL3NvY2tldC5oCi0KLSMgSW5jbHVkZWQgZnJvbSBhc20vc29ja2lvcy5oCi1GSU9TRVRPV04gPSAweDg5MDEKLVNJT0NTUEdSUCA9IDB4ODkwMgotRklPR0VUT1dOID0gMHg4OTAzCi1TSU9DR1BHUlAgPSAweDg5MDQKLVNJT0NBVE1BUksgPSAweDg5MDUKLVNJT0NHU1RBTVAgPSAweDg5MDYKLVNPTF9TT0NLRVQgPSAxCi1TT19ERUJVRyA9IDEKLVNPX1JFVVNFQUREUiA9IDIKLVNPX1RZUEUgPSAzCi1TT19FUlJPUiA9IDQKLVNPX0RPTlRST1VURSA9IDUKLVNPX0JST0FEQ0FTVCA9IDYKLVNPX1NOREJVRiA9IDcKLVNPX1JDVkJVRiA9IDgKLVNPX0tFRVBBTElWRSA9IDkKLVNPX09PQklOTElORSA9IDEwCi1TT19OT19DSEVDSyA9IDExCi1TT19QUklPUklUWSA9IDEyCi1TT19MSU5HRVIgPSAxMwotU09fQlNEQ09NUEFUID0gMTQKLVNPX1BBU1NDUkVEID0gMTYKLVNPX1BFRVJDUkVEID0gMTcKLVNPX1JDVkxPV0FUID0gMTgKLVNPX1NORExPV0FUID0gMTkKLVNPX1JDVlRJTUVPID0gMjAKLVNPX1NORFRJTUVPID0gMjEKLVNPX1NFQ1VSSVRZX0FVVEhFTlRJQ0FUSU9OID0gMjIKLVNPX1NFQ1VSSVRZX0VOQ1JZUFRJT05fVFJBTlNQT1JUID0gMjMKLVNPX1NFQ1VSSVRZX0VOQ1JZUFRJT05fTkVUV09SSyA9IDI0Ci1TT19CSU5EVE9ERVZJQ0UgPSAyNQotU09fQVRUQUNIX0ZJTFRFUiA9IDI2Ci1TT19ERVRBQ0hfRklMVEVSID0gMjcKLVNPX1BFRVJOQU1FID0gMjgKLVNPX1RJTUVTVEFNUCA9IDI5Ci1TQ01fVElNRVNUQU1QID0gU09fVElNRVNUQU1QCi1TT19BQ0NFUFRDT05OID0gMzAKLVNPQ0tfU1RSRUFNID0gMQotU09DS19ER1JBTSA9IDIKLVNPQ0tfUkFXID0gMwotU09DS19SRE0gPSA0Ci1TT0NLX1NFUVBBQ0tFVCA9IDUKLVNPQ0tfUEFDS0VUID0gMTAKLVNPQ0tfTUFYID0gKFNPQ0tfUEFDS0VUKzEpCi0KLSMgSW5jbHVkZWQgZnJvbSBiaXRzL2luLmgKLUlQX1RPUyA9IDEKLUlQX1RUTCA9IDIKLUlQX0hEUklOQ0wgPSAzCi1JUF9PUFRJT05TID0gNAotSVBfUk9VVEVSX0FMRVJUID0gNQotSVBfUkVDVk9QVFMgPSA2Ci1JUF9SRVRPUFRTID0gNwotSVBfUEtUSU5GTyA9IDgKLUlQX1BLVE9QVElPTlMgPSA5Ci1JUF9QTVRVRElTQyA9IDEwCi1JUF9NVFVfRElTQ09WRVIgPSAxMAotSVBfUkVDVkVSUiA9IDExCi1JUF9SRUNWVFRMID0gMTIKLUlQX1JFQ1ZUT1MgPSAxMwotSVBfTVVMVElDQVNUX0lGID0gMzIKLUlQX01VTFRJQ0FTVF9UVEwgPSAzMwotSVBfTVVMVElDQVNUX0xPT1AgPSAzNAotSVBfQUREX01FTUJFUlNISVAgPSAzNQotSVBfRFJPUF9NRU1CRVJTSElQID0gMzYKLUlQX1JFQ1ZSRVRPUFRTID0gSVBfUkVUT1BUUwotSVBfUE1UVURJU0NfRE9OVCA9IDAKLUlQX1BNVFVESVNDX1dBTlQgPSAxCi1JUF9QTVRVRElTQ19ETyA9IDIKLVNPTF9JUCA9IDAKLUlQX0RFRkFVTFRfTVVMVElDQVNUX1RUTCA9IDEKLUlQX0RFRkFVTFRfTVVMVElDQVNUX0xPT1AgPSAxCi1JUF9NQVhfTUVNQkVSU0hJUFMgPSAyMAotSVBWNl9BRERSRk9STSA9IDEKLUlQVjZfUEtUSU5GTyA9IDIKLUlQVjZfSE9QT1BUUyA9IDMKLUlQVjZfRFNUT1BUUyA9IDQKLUlQVjZfUlRIRFIgPSA1Ci1JUFY2X1BLVE9QVElPTlMgPSA2Ci1JUFY2X0NIRUNLU1VNID0gNwotSVBWNl9IT1BMSU1JVCA9IDgKLUlQVjZfTkVYVEhPUCA9IDkKLUlQVjZfQVVUSEhEUiA9IDEwCi1JUFY2X1VOSUNBU1RfSE9QUyA9IDE2Ci1JUFY2X01VTFRJQ0FTVF9JRiA9IDE3Ci1JUFY2X01VTFRJQ0FTVF9IT1BTID0gMTgKLUlQVjZfTVVMVElDQVNUX0xPT1AgPSAxOQotSVBWNl9KT0lOX0dST1VQID0gMjAKLUlQVjZfTEVBVkVfR1JPVVAgPSAyMQotSVBWNl9ST1VURVJfQUxFUlQgPSAyMgotSVBWNl9NVFVfRElTQ09WRVIgPSAyMwotSVBWNl9NVFUgPSAyNAotSVBWNl9SRUNWRVJSID0gMjUKLUlQVjZfUlhIT1BPUFRTID0gSVBWNl9IT1BPUFRTCi1JUFY2X1JYRFNUT1BUUyA9IElQVjZfRFNUT1BUUwotSVBWNl9BRERfTUVNQkVSU0hJUCA9IElQVjZfSk9JTl9HUk9VUAotSVBWNl9EUk9QX01FTUJFUlNISVAgPSBJUFY2X0xFQVZFX0dST1VQCi1JUFY2X1BNVFVESVNDX0RPTlQgPSAwCi1JUFY2X1BNVFVESVNDX1dBTlQgPSAxCi1JUFY2X1BNVFVESVNDX0RPID0gMgotU09MX0lQVjYgPSA0MQotU09MX0lDTVBWNiA9IDU4Ci1JUFY2X1JUSERSX0xPT1NFID0gMAotSVBWNl9SVEhEUl9TVFJJQ1QgPSAxCi1JUFY2X1JUSERSX1RZUEVfMCA9IDAKLQotIyBJbmNsdWRlZCBmcm9tIGVuZGlhbi5oCi1fRU5ESUFOX0ggPSAxCi1fX0xJVFRMRV9FTkRJQU4gPSAxMjM0Ci1fX0JJR19FTkRJQU4gPSA0MzIxCi1fX1BEUF9FTkRJQU4gPSAzNDEyCi0KLSMgSW5jbHVkZWQgZnJvbSBiaXRzL2VuZGlhbi5oCi1fX0JZVEVfT1JERVIgPSBfX0xJVFRMRV9FTkRJQU4KLV9fRkxPQVRfV09SRF9PUkRFUiA9IF9fQllURV9PUkRFUgotTElUVExFX0VORElBTiA9IF9fTElUVExFX0VORElBTgotQklHX0VORElBTiA9IF9fQklHX0VORElBTgotUERQX0VORElBTiA9IF9fUERQX0VORElBTgotQllURV9PUkRFUiA9IF9fQllURV9PUkRFUgotCi0jIEluY2x1ZGVkIGZyb20gYml0cy9ieXRlc3dhcC5oCi1fQklUU19CWVRFU1dBUF9IID0gMQotZGVmIF9fYnN3YXBfY29uc3RhbnRfMTYoeCk6IHJldHVybiBcCi0KLWRlZiBfX2Jzd2FwXzE2KHgpOiByZXR1cm4gXAotCi1kZWYgX19ic3dhcF8xNih4KTogcmV0dXJuIF9fYnN3YXBfY29uc3RhbnRfMTYgKHgpCi0KLWRlZiBfX2Jzd2FwX2NvbnN0YW50XzMyKHgpOiByZXR1cm4gXAotCi1kZWYgX19ic3dhcF8zMih4KTogcmV0dXJuIFwKLQotZGVmIF9fYnN3YXBfMzIoeCk6IHJldHVybiBcCi0KLWRlZiBfX2Jzd2FwXzMyKHgpOiByZXR1cm4gX19ic3dhcF9jb25zdGFudF8zMiAoeCkKLQotZGVmIF9fYnN3YXBfY29uc3RhbnRfNjQoeCk6IHJldHVybiBcCi0KLWRlZiBfX2Jzd2FwXzY0KHgpOiByZXR1cm4gXAotCi1kZWYgbnRvaGwoeCk6IHJldHVybiAoeCkKLQotZGVmIG50b2hzKHgpOiByZXR1cm4gKHgpCi0KLWRlZiBodG9ubCh4KTogcmV0dXJuICh4KQotCi1kZWYgaHRvbnMoeCk6IHJldHVybiAoeCkKLQotZGVmIG50b2hsKHgpOiByZXR1cm4gX19ic3dhcF8zMiAoeCkKLQotZGVmIG50b2hzKHgpOiByZXR1cm4gX19ic3dhcF8xNiAoeCkKLQotZGVmIGh0b25sKHgpOiByZXR1cm4gX19ic3dhcF8zMiAoeCkKLQotZGVmIGh0b25zKHgpOiByZXR1cm4gX19ic3dhcF8xNiAoeCkKLQotZGVmIElONl9JU19BRERSX1VOU1BFQ0lGSUVEKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTE9PUEJBQ0soYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9MSU5LTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9TSVRFTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9WNE1BUFBFRChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1Y0Q09NUEFUKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTk9ERUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfU0lURUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfT1JHTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19HTE9CQUwoYSk6IHJldHVybgpkaWZmIC0tZ2l0IGEvTGliL3BsYXQtbGludXgvVFlQRVMucHkgYi9MaWIvcGxhdC1saW51eC9UWVBFUy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTdhMzI0Yi4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1saW51eC9UWVBFUy5weQorKysgL2Rldi9udWxsCkBAIC0xLDE3MCArMCwwIEBACi0jIEdlbmVyYXRlZCBieSBoMnB5IGZyb20gL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oCi1fU1lTX1RZUEVTX0ggPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBmZWF0dXJlcy5oCi1fRkVBVFVSRVNfSCA9IDEKLV9fVVNFX0FOU0kgPSAxCi1fX0ZBVk9SX0JTRCA9IDEKLV9JU09DOTlfU09VUkNFID0gMQotX1BPU0lYX1NPVVJDRSA9IDEKLV9QT1NJWF9DX1NPVVJDRSA9IDE5OTUwNgotX1hPUEVOX1NPVVJDRSA9IDYwMAotX1hPUEVOX1NPVVJDRV9FWFRFTkRFRCA9IDEKLV9MQVJHRUZJTEU2NF9TT1VSQ0UgPSAxCi1fQlNEX1NPVVJDRSA9IDEKLV9TVklEX1NPVVJDRSA9IDEKLV9CU0RfU09VUkNFID0gMQotX1NWSURfU09VUkNFID0gMQotX19VU0VfSVNPQzk5ID0gMQotX1BPU0lYX1NPVVJDRSA9IDEKLV9QT1NJWF9DX1NPVVJDRSA9IDIKLV9QT1NJWF9DX1NPVVJDRSA9IDE5OTUwNgotX19VU0VfUE9TSVggPSAxCi1fX1VTRV9QT1NJWDIgPSAxCi1fX1VTRV9QT1NJWDE5OTMwOSA9IDEKLV9fVVNFX1BPU0lYMTk5NTA2ID0gMQotX19VU0VfWE9QRU4gPSAxCi1fX1VTRV9YT1BFTl9FWFRFTkRFRCA9IDEKLV9fVVNFX1VOSVg5OCA9IDEKLV9MQVJHRUZJTEVfU09VUkNFID0gMQotX19VU0VfWE9QRU4ySyA9IDEKLV9fVVNFX0lTT0M5OSA9IDEKLV9fVVNFX1hPUEVOX0VYVEVOREVEID0gMQotX19VU0VfTEFSR0VGSUxFID0gMQotX19VU0VfTEFSR0VGSUxFNjQgPSAxCi1fX1VTRV9GSUxFX09GRlNFVDY0ID0gMQotX19VU0VfTUlTQyA9IDEKLV9fVVNFX0JTRCA9IDEKLV9fVVNFX1NWSUQgPSAxCi1fX1VTRV9HTlUgPSAxCi1fX1VTRV9SRUVOVFJBTlQgPSAxCi1fX1NURENfSUVDXzU1OV9fID0gMQotX19TVERDX0lFQ181NTlfQ09NUExFWF9fID0gMQotX19TVERDX0lTT18xMDY0Nl9fID0gMjAwMDA5Ci1fX0dOVV9MSUJSQVJZX18gPSA2Ci1fX0dMSUJDX18gPSAyCi1fX0dMSUJDX01JTk9SX18gPSAyCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvY2RlZnMuaAotX1NZU19DREVGU19IID0gMQotZGVmIF9fUE1UKGFyZ3MpOiByZXR1cm4gYXJncwotCi1kZWYgX19QKGFyZ3MpOiByZXR1cm4gYXJncwotCi1kZWYgX19QTVQoYXJncyk6IHJldHVybiBhcmdzCi0KLWRlZiBfX1NUUklORyh4KTogcmV0dXJuICN4Ci0KLV9fZmxleGFyciA9IFtdCi1fX2ZsZXhhcnIgPSBbMF0KLV9fZmxleGFyciA9IFtdCi1fX2ZsZXhhcnIgPSBbMV0KLWRlZiBfX0FTTU5BTUUoY25hbWUpOiByZXR1cm4gX19BU01OQU1FMiAoX19VU0VSX0xBQkVMX1BSRUZJWF9fLCBjbmFtZSkKLQotZGVmIF9fYXR0cmlidXRlX18oeHl6KTogcmV0dXJuCi0KLWRlZiBfX2F0dHJpYnV0ZV9mb3JtYXRfYXJnX18oeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfYXJnX18gKHgpKSkKLQotZGVmIF9fYXR0cmlidXRlX2Zvcm1hdF9hcmdfXyh4KTogcmV0dXJuCi0KLV9fVVNFX0xBUkdFRklMRSA9IDEKLV9fVVNFX0xBUkdFRklMRTY0ID0gMQotX19VU0VfRVhURVJOX0lOTElORVMgPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBnbnUvc3R1YnMuaAotCi0jIEluY2x1ZGVkIGZyb20gYml0cy90eXBlcy5oCi1fQklUU19UWVBFU19IID0gMQotX19GRF9TRVRTSVpFID0gMTAyNAotCi0jIEluY2x1ZGVkIGZyb20gYml0cy9wdGhyZWFkdHlwZXMuaAotX0JJVFNfUFRIUkVBRFRZUEVTX0ggPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBiaXRzL3NjaGVkLmgKLVNDSEVEX09USEVSID0gMAotU0NIRURfRklGTyA9IDEKLVNDSEVEX1JSID0gMgotQ1NJR05BTCA9IDB4MDAwMDAwZmYKLUNMT05FX1ZNID0gMHgwMDAwMDEwMAotQ0xPTkVfRlMgPSAweDAwMDAwMjAwCi1DTE9ORV9GSUxFUyA9IDB4MDAwMDA0MDAKLUNMT05FX1NJR0hBTkQgPSAweDAwMDAwODAwCi1DTE9ORV9QSUQgPSAweDAwMDAxMDAwCi1DTE9ORV9QVFJBQ0UgPSAweDAwMDAyMDAwCi1DTE9ORV9WRk9SSyA9IDB4MDAwMDQwMDAKLV9fZGVmaW5lZF9zY2hlZHBhcmFtID0gMQotCi0jIEluY2x1ZGVkIGZyb20gdGltZS5oCi1fVElNRV9IID0gMQotCi0jIEluY2x1ZGVkIGZyb20gYml0cy90aW1lLmgKLV9CSVRTX1RJTUVfSCA9IDEKLUNMT0NLU19QRVJfU0VDID0gMTAwMDAwMAotQ0xPQ0tfUkVBTFRJTUUgPSAwCi1DTE9DS19QUk9DRVNTX0NQVVRJTUVfSUQgPSAyCi1DTE9DS19USFJFQURfQ1BVVElNRV9JRCA9IDMKLVRJTUVSX0FCU1RJTUUgPSAxCi1fU1RSVUNUX1RJTUVWQUwgPSAxCi1DTEtfVENLID0gQ0xPQ0tTX1BFUl9TRUMKLV9fY2xvY2tfdF9kZWZpbmVkID0gMQotX190aW1lX3RfZGVmaW5lZCA9IDEKLV9fY2xvY2tpZF90X2RlZmluZWQgPSAxCi1fX3RpbWVyX3RfZGVmaW5lZCA9IDEKLV9fdGltZXNwZWNfZGVmaW5lZCA9IDEKLWRlZiBfX2lzbGVhcCh5ZWFyKTogcmV0dXJuIFwKLQotX19CSVRfVFlQRVNfREVGSU5FRF9fID0gMQotCi0jIEluY2x1ZGVkIGZyb20gZW5kaWFuLmgKLV9FTkRJQU5fSCA9IDEKLV9fTElUVExFX0VORElBTiA9IDEyMzQKLV9fQklHX0VORElBTiA9IDQzMjEKLV9fUERQX0VORElBTiA9IDM0MTIKLQotIyBJbmNsdWRlZCBmcm9tIGJpdHMvZW5kaWFuLmgKLV9fQllURV9PUkRFUiA9IF9fTElUVExFX0VORElBTgotX19GTE9BVF9XT1JEX09SREVSID0gX19CWVRFX09SREVSCi1MSVRUTEVfRU5ESUFOID0gX19MSVRUTEVfRU5ESUFOCi1CSUdfRU5ESUFOID0gX19CSUdfRU5ESUFOCi1QRFBfRU5ESUFOID0gX19QRFBfRU5ESUFOCi1CWVRFX09SREVSID0gX19CWVRFX09SREVSCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvc2VsZWN0LmgKLV9TWVNfU0VMRUNUX0ggPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBiaXRzL3NlbGVjdC5oCi1kZWYgX19GRF9aRVJPKGZkc3ApOiByZXR1cm4gXAotCi1kZWYgX19GRF9aRVJPKHNldCk6IHJldHVybiBcCi0KLQotIyBJbmNsdWRlZCBmcm9tIGJpdHMvc2lnc2V0LmgKLV9TSUdTRVRfSF90eXBlcyA9IDEKLV9TSUdTRVRfSF9mbnMgPSAxCi1kZWYgX19zaWdtYXNrKHNpZyk6IHJldHVybiBcCi0KLWRlZiBfX3NpZ2VtcHR5c2V0KHNldCk6IHJldHVybiBcCi0KLWRlZiBfX3NpZ2ZpbGxzZXQoc2V0KTogcmV0dXJuIFwKLQotZGVmIF9fc2lnaXNlbXB0eXNldChzZXQpOiByZXR1cm4gXAotCi1kZWYgX19GREVMVChkKTogcmV0dXJuICgoZCkgLyBfX05GREJJVFMpCi0KLUZEX1NFVFNJWkUgPSBfX0ZEX1NFVFNJWkUKLWRlZiBGRF9aRVJPKGZkc2V0cCk6IHJldHVybiBfX0ZEX1pFUk8gKGZkc2V0cCkKLQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3N5c21hY3Jvcy5oCi1fU1lTX1NZU01BQ1JPU19IID0gMQotZGVmIG1ham9yKGRldik6IHJldHVybiAoKGludCkoKChkZXYpID4+IDgpICYgMHhmZikpCi0KLWRlZiBtaW5vcihkZXYpOiByZXR1cm4gKChpbnQpKChkZXYpICYgMHhmZikpCi0KLWRlZiBtYWpvcihkZXYpOiByZXR1cm4gKCgoZGV2KS5fX3ZhbFsxXSA+PiA4KSAmIDB4ZmYpCi0KLWRlZiBtaW5vcihkZXYpOiByZXR1cm4gKChkZXYpLl9fdmFsWzFdICYgMHhmZikKLQotZGVmIG1ham9yKGRldik6IHJldHVybiAoKChkZXYpLl9fdmFsWzBdID4+IDgpICYgMHhmZikKLQotZGVmIG1pbm9yKGRldik6IHJldHVybiAoKGRldikuX192YWxbMF0gJiAweGZmKQpkaWZmIC0tZ2l0IGEvTGliL3BsYXQtbGludXgvcmVnZW4gYi9MaWIvcGxhdC1saW51eC9yZWdlbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYzc2OTUwZS4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1saW51eC9yZWdlbgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotIyEgL2Jpbi9zaAotY2FzZSBgdW5hbWVgIGluCi1MaW51eCopCTs7Ci0qKQllY2hvIFByb2JhYmx5IG5vdCBvbiBhIExpbnV4IHN5c3RlbSAxPiYyCi0JZXhpdCAxOzsKLWVzYWMKLXNldCAtdgotaDJweSAtaSAnKHVfbG9uZyknIC91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCAvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oIC91c3IvaW5jbHVkZS9kbGZjbi5oCmRpZmYgLS1naXQgYS9MaWIvcGxhdC1uZXRic2QxL0lOLnB5IGIvTGliL3BsYXQtbmV0YnNkMS9JTi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDc0YzUxZS4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1uZXRic2QxL0lOLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotIyBHZW5lcmF0ZWQgYnkgaDJweSBmcm9tIC91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgKLUlQUFJPVE9fSVAgPSAwCi1JUFBST1RPX0lDTVAgPSAxCi1JUFBST1RPX0lHTVAgPSAyCi1JUFBST1RPX0dHUCA9IDMKLUlQUFJPVE9fSVBJUCA9IDQKLUlQUFJPVE9fVENQID0gNgotSVBQUk9UT19FR1AgPSA4Ci1JUFBST1RPX1BVUCA9IDEyCi1JUFBST1RPX1VEUCA9IDE3Ci1JUFBST1RPX0lEUCA9IDIyCi1JUFBST1RPX1RQID0gMjkKLUlQUFJPVE9fRU9OID0gODAKLUlQUFJPVE9fRU5DQVAgPSA5OAotSVBQUk9UT19SQVcgPSAyNTUKLUlQUFJPVE9fTUFYID0gMjU2Ci1JUFBPUlRfUkVTRVJWRUQgPSAxMDI0Ci1JUFBPUlRfVVNFUlJFU0VSVkVEID0gNTAwMAotZGVmIF9fSVBBRERSKHgpOiByZXR1cm4gKCh1X2ludDMyX3QpKHgpKQotCi1JTl9DTEFTU0FfTlNISUZUID0gMjQKLUlOX0NMQVNTQV9NQVggPSAxMjgKLUlOX0NMQVNTQl9OU0hJRlQgPSAxNgotSU5fQ0xBU1NCX01BWCA9IDY1NTM2Ci1JTl9DTEFTU0NfTlNISUZUID0gOAotSU5fQ0xBU1NEX05TSElGVCA9IDI4Ci1kZWYgSU5fTVVMVElDQVNUKGkpOiByZXR1cm4gSU5fQ0xBU1NEKGkpCi0KLUlOX0xPT1BCQUNLTkVUID0gMTI3Ci1JUF9PUFRJT05TID0gMQotSVBfSERSSU5DTCA9IDIKLUlQX1RPUyA9IDMKLUlQX1RUTCA9IDQKLUlQX1JFQ1ZPUFRTID0gNQotSVBfUkVDVlJFVE9QVFMgPSA2Ci1JUF9SRUNWRFNUQUREUiA9IDcKLUlQX1JFVE9QVFMgPSA4Ci1JUF9NVUxUSUNBU1RfSUYgPSA5Ci1JUF9NVUxUSUNBU1RfVFRMID0gMTAKLUlQX01VTFRJQ0FTVF9MT09QID0gMTEKLUlQX0FERF9NRU1CRVJTSElQID0gMTIKLUlQX0RST1BfTUVNQkVSU0hJUCA9IDEzCi1JUF9SRUNWSUYgPSAyMAotSVBfREVGQVVMVF9NVUxUSUNBU1RfVFRMID0gMQotSVBfREVGQVVMVF9NVUxUSUNBU1RfTE9PUCA9IDEKLUlQX01BWF9NRU1CRVJTSElQUyA9IDIwCi1JUFBST1RPX01BWElEID0gKElQUFJPVE9fSURQICsgMSkKLUlQQ1RMX0ZPUldBUkRJTkcgPSAxCi1JUENUTF9TRU5EUkVESVJFQ1RTID0gMgotSVBDVExfREVGVFRMID0gMwotSVBDVExfREVGTVRVID0gNAotSVBDVExfRk9SV1NSQ1JUID0gNQotSVBDVExfRElSRUNURURCQ0FTVCA9IDYKLUlQQ1RMX0FMTE9XU1JDUlQgPSA3Ci1JUENUTF9NQVhJRCA9IDgKLWRlZiBpbl9udWxsaG9zdCh4KTogcmV0dXJuICgoeCkuc19hZGRyID09IElOQUREUl9BTlkpCmRpZmYgLS1naXQgYS9MaWIvcGxhdC1uZXRic2QxL3JlZ2VuIGIvTGliL3BsYXQtbmV0YnNkMS9yZWdlbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggOGFhNjg5OC4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1uZXRic2QxL3JlZ2VuCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0jISAvYmluL3NoCi1zZXQgLXYKLXB5dGhvbiAuLi8uLi9Ub29scy9zY3JpcHRzL2gycHkucHkgLWkgJyh1X2xvbmcpJyAvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oCmRpZmYgLS1naXQgYS9MaWIvcGxhdC1uZXh0My9yZWdlbiBiL0xpYi9wbGF0LW5leHQzL3JlZ2VuCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA3YTAzNjEzLi4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LW5leHQzL3JlZ2VuCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi0jISAvYmluL3NoCi1zZXQgLXYKLUlOQ0xVREU9Ii9OZXh0RGV2ZWxvcGVyL0hlYWRlcnM7L05leHREZXZlbG9wZXIvSGVhZGVycy9hbnNpOy9OZXh0RGV2ZWxvcGVyL0hlYWRlcnMvYnNkIgotZXhwb3J0IElOQ0xVREUKLQotcHl0aG9uIC4uLy4uL1Rvb2xzL3NjcmlwdHMvaDJweS5weSAtaSAnKHVfbG9uZyknIC91c3IvaW5jbHVkZS9ic2QvbmV0aW5ldC9pbi5oCmRpZmYgLS1naXQgYS9MaWIvcGxhdC1zdW5vczUvQ0RJTy5weSBiL0xpYi9wbGF0LXN1bm9zNS9DRElPLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzY2YjUwLi4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LXN1bm9zNS9DRElPLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotIyBHZW5lcmF0ZWQgYnkgaDJweSBmcm9tIC91c3IvaW5jbHVkZS9zeXMvY2Rpby5oCi1DRFJPTV9MQkEgPSAweDAxCi1DRFJPTV9NU0YgPSAweDAyCi1DRFJPTV9EQVRBX1RSQUNLID0gMHgwNAotQ0RST01fTEVBRE9VVCA9IDB4QUEKLUNEUk9NX0FVRElPX0lOVkFMSUQgPSAweDAwCi1DRFJPTV9BVURJT19QTEFZID0gMHgxMQotQ0RST01fQVVESU9fUEFVU0VEID0gMHgxMgotQ0RST01fQVVESU9fQ09NUExFVEVEID0gMHgxMwotQ0RST01fQVVESU9fRVJST1IgPSAweDE0Ci1DRFJPTV9BVURJT19OT19TVEFUVVMgPSAweDE1Ci1DRFJPTV9EQV9OT19TVUJDT0RFID0gMHgwMAotQ0RST01fREFfU1VCUSA9IDB4MDEKLUNEUk9NX0RBX0FMTF9TVUJDT0RFID0gMHgwMgotQ0RST01fREFfU1VCQ09ERV9PTkxZID0gMHgwMwotQ0RST01fWEFfREFUQSA9IDB4MDAKLUNEUk9NX1hBX1NFQ1RPUl9EQVRBID0gMHgwMQotQ0RST01fWEFfREFUQV9XX0VSUk9SID0gMHgwMgotQ0RST01fQkxLXzUxMiA9IDUxMgotQ0RST01fQkxLXzEwMjQgPSAxMDI0Ci1DRFJPTV9CTEtfMjA0OCA9IDIwNDgKLUNEUk9NX0JMS18yMDU2ID0gMjA1NgotQ0RST01fQkxLXzIzMzYgPSAyMzM2Ci1DRFJPTV9CTEtfMjM0MCA9IDIzNDAKLUNEUk9NX0JMS18yMzUyID0gMjM1MgotQ0RST01fQkxLXzIzNjggPSAyMzY4Ci1DRFJPTV9CTEtfMjQ0OCA9IDI0NDgKLUNEUk9NX0JMS18yNjQ2ID0gMjY0NgotQ0RST01fQkxLXzI2NDcgPSAyNjQ3Ci1DRFJPTV9CTEtfU1VCQ09ERSA9IDk2Ci1DRFJPTV9OT1JNQUxfU1BFRUQgPSAweDAwCi1DRFJPTV9ET1VCTEVfU1BFRUQgPSAweDAxCi1DRFJPTV9RVUFEX1NQRUVEID0gMHgwMwotQ0RST01fVFdFTFZFX1NQRUVEID0gMHgwQwotQ0RST01fTUFYSU1VTV9TUEVFRCA9IDB4ZmYKLUNESU9DID0gKDB4MDQgPDwgOCkKLUNEUk9NUEFVU0UgPSAoQ0RJT0N8MTUxKQotQ0RST01SRVNVTUUgPSAoQ0RJT0N8MTUyKQotQ0RST01QTEFZTVNGID0gKENESU9DfDE1MykKLUNEUk9NUExBWVRSS0lORCA9IChDRElPQ3wxNTQpCi1DRFJPTVJFQURUT0NIRFIgPSAoQ0RJT0N8MTU1KQotQ0RST01SRUFEVE9DRU5UUlkgPSAoQ0RJT0N8MTU2KQotQ0RST01TVE9QID0gKENESU9DfDE1NykKLUNEUk9NU1RBUlQgPSAoQ0RJT0N8MTU4KQotQ0RST01FSkVDVCA9IChDRElPQ3wxNTkpCi1DRFJPTVZPTENUUkwgPSAoQ0RJT0N8MTYwKQotQ0RST01TVUJDSE5MID0gKENESU9DfDE2MSkKLUNEUk9NUkVBRE1PREUyID0gKENESU9DfDE2MikKLUNEUk9NUkVBRE1PREUxID0gKENESU9DfDE2MykKLUNEUk9NUkVBRE9GRlNFVCA9IChDRElPQ3wxNjQpCi1DRFJPTUdCTEtNT0RFID0gKENESU9DfDE2NSkKLUNEUk9NU0JMS01PREUgPSAoQ0RJT0N8MTY2KQotQ0RST01DRERBID0gKENESU9DfDE2NykKLUNEUk9NQ0RYQSA9IChDRElPQ3wxNjgpCi1DRFJPTVNVQkNPREUgPSAoQ0RJT0N8MTY5KQotQ0RST01HRFJWU1BFRUQgPSAoQ0RJT0N8MTcwKQotQ0RST01TRFJWU1BFRUQgPSAoQ0RJT0N8MTcxKQotU0NNRF9SRUFEX1RPQyA9IDB4NDMKLVNDTURfUExBWUFVRElPX01TRiA9IDB4NDcKLVNDTURfUExBWUFVRElPX1RJID0gMHg0OAotU0NNRF9QQVVTRV9SRVNVTUUgPSAweDRCCi1TQ01EX1JFQURfU1VCQ0hBTk5FTCA9IDB4NDIKLVNDTURfUExBWUFVRElPMTAgPSAweDQ1Ci1TQ01EX1BMQVlUUkFDS19SRUwxMCA9IDB4NDkKLVNDTURfUkVBRF9IRUFERVIgPSAweDQ0Ci1TQ01EX1BMQVlBVURJTzEyID0gMHhBNQotU0NNRF9QTEFZVFJBQ0tfUkVMMTIgPSAweEE5Ci1TQ01EX0NEX1BMQVlCQUNLX0NPTlRST0wgPSAweEM5Ci1TQ01EX0NEX1BMQVlCQUNLX1NUQVRVUyA9IDB4QzQKLVNDTURfUkVBRF9DRERBID0gMHhEOAotU0NNRF9SRUFEX0NEWEEgPSAweERCCi1TQ01EX1JFQURfQUxMX1NVQkNPREVTID0gMHhERgotQ0RST01fTU9ERTJfU0laRSA9IDIzMzYKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LXN1bm9zNS9ETEZDTi5weSBiL0xpYi9wbGF0LXN1bm9zNS9ETEZDTi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjQ5MjM1MC4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1zdW5vczUvRExGQ04ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi0jIEdlbmVyYXRlZCBieSBoMnB5IGZyb20gL3Vzci9pbmNsdWRlL2RsZmNuLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLVJUTERfTEFaWSA9IDB4MDAwMDEKLVJUTERfTk9XID0gMHgwMDAwMgotUlRMRF9OT0xPQUQgPSAweDAwMDA0Ci1SVExEX0dMT0JBTCA9IDB4MDAxMDAKLVJUTERfTE9DQUwgPSAweDAwMDAwCi1SVExEX1BBUkVOVCA9IDB4MDAyMDAKLVJUTERfR1JPVVAgPSAweDAwNDAwCi1SVExEX1dPUkxEID0gMHgwMDgwMAotUlRMRF9OT0RFTEVURSA9IDB4MDEwMDAKLVJUTERfQ09ORkdFTiA9IDB4MTAwMDAKLVJUTERfUkVMX1JFTEFUSVZFID0gMHgwMDAwMQotUlRMRF9SRUxfRVhFQyA9IDB4MDAwMDIKLVJUTERfUkVMX0RFUEVORFMgPSAweDAwMDA0Ci1SVExEX1JFTF9QUkVMT0FEID0gMHgwMDAwOAotUlRMRF9SRUxfU0VMRiA9IDB4MDAwMTAKLVJUTERfUkVMX1dFQUsgPSAweDAwMDIwCi1SVExEX1JFTF9BTEwgPSAweDAwZmZmCi1SVExEX01FTU9SWSA9IDB4MDEwMDAKLVJUTERfU1RSSVAgPSAweDAyMDAwCi1SVExEX05PSEVBUCA9IDB4MDQwMDAKLVJUTERfQ09ORlNFVCA9IDB4MTAwMDAKLVJUTERfRElfTE1JRCA9IDEKLVJUTERfRElfTElOS01BUCA9IDIKLVJUTERfRElfQ09ORklHQUREUiA9IDMKLVJUTERfRElfTUFYID0gMwpkaWZmIC0tZ2l0IGEvTGliL3BsYXQtc3Vub3M1L0lOLnB5IGIvTGliL3BsYXQtc3Vub3M1L0lOLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NTcyZWFkLi4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LXN1bm9zNS9JTi5weQorKysgL2Rldi9udWxsCkBAIC0xLDE0MjEgKzAsMCBAQAotIyBHZW5lcmF0ZWQgYnkgaDJweSBmcm9tIC91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9mZWF0dXJlX3Rlc3RzLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9pc2FfZGVmcy5oCi1fQ0hBUl9BTElHTk1FTlQgPSAxCi1fU0hPUlRfQUxJR05NRU5UID0gMgotX0lOVF9BTElHTk1FTlQgPSA0Ci1fTE9OR19BTElHTk1FTlQgPSA4Ci1fTE9OR19MT05HX0FMSUdOTUVOVCA9IDgKLV9ET1VCTEVfQUxJR05NRU5UID0gOAotX0xPTkdfRE9VQkxFX0FMSUdOTUVOVCA9IDE2Ci1fUE9JTlRFUl9BTElHTk1FTlQgPSA4Ci1fTUFYX0FMSUdOTUVOVCA9IDE2Ci1fQUxJR05NRU5UX1JFUVVJUkVEID0gMQotX0NIQVJfQUxJR05NRU5UID0gMQotX1NIT1JUX0FMSUdOTUVOVCA9IDIKLV9JTlRfQUxJR05NRU5UID0gNAotX0xPTkdfQUxJR05NRU5UID0gNAotX0xPTkdfTE9OR19BTElHTk1FTlQgPSA0Ci1fRE9VQkxFX0FMSUdOTUVOVCA9IDQKLV9MT05HX0RPVUJMRV9BTElHTk1FTlQgPSA0Ci1fUE9JTlRFUl9BTElHTk1FTlQgPSA0Ci1fTUFYX0FMSUdOTUVOVCA9IDQKLV9BTElHTk1FTlRfUkVRVUlSRUQgPSAwCi1fQ0hBUl9BTElHTk1FTlQgPSAxCi1fU0hPUlRfQUxJR05NRU5UID0gMgotX0lOVF9BTElHTk1FTlQgPSA0Ci1fTE9OR19MT05HX0FMSUdOTUVOVCA9IDgKLV9ET1VCTEVfQUxJR05NRU5UID0gOAotX0FMSUdOTUVOVF9SRVFVSVJFRCA9IDEKLV9MT05HX0FMSUdOTUVOVCA9IDQKLV9MT05HX0RPVUJMRV9BTElHTk1FTlQgPSA4Ci1fUE9JTlRFUl9BTElHTk1FTlQgPSA0Ci1fTUFYX0FMSUdOTUVOVCA9IDgKLV9MT05HX0FMSUdOTUVOVCA9IDgKLV9MT05HX0RPVUJMRV9BTElHTk1FTlQgPSAxNgotX1BPSU5URVJfQUxJR05NRU5UID0gOAotX01BWF9BTElHTk1FTlQgPSAxNgotX1BPU0lYX0NfU09VUkNFID0gMQotX0xBUkdFRklMRTY0X1NPVVJDRSA9IDEKLV9MQVJHRUZJTEVfU09VUkNFID0gMQotX0ZJTEVfT0ZGU0VUX0JJVFMgPSA2NAotX0ZJTEVfT0ZGU0VUX0JJVFMgPSAzMgotX1BPU0lYX0NfU09VUkNFID0gMTk5NTA2Ci1fUE9TSVhfUFRIUkVBRF9TRU1BTlRJQ1MgPSAxCi1fWE9QRU5fVkVSU0lPTiA9IDUwMAotX1hPUEVOX1ZFUlNJT04gPSA0Ci1fWE9QRU5fVkVSU0lPTiA9IDMKLWZyb20gVFlQRVMgaW1wb3J0ICoKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9zdHJlYW0uaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3Zub2RlLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy90X2xvY2suaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL21hY2hsb2NrLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLUxPQ0tfSEVMRF9WQUxVRSA9IDB4ZmYKLWRlZiBTUElOX0xPQ0socGwpOiByZXR1cm4gKChwbCkgPiBpcGx0b3NwbChMT0NLX0xFVkVMKSkKLQotZGVmIExPQ0tfU0FNUExFX0lOVEVSVkFMKGkpOiByZXR1cm4gKCgoaSkgJiAweGZmKSA9PSAwKQotCi1DTE9DS19MRVZFTCA9IDEwCi1MT0NLX0xFVkVMID0gMTAKLURJU1BfTEVWRUwgPSAoTE9DS19MRVZFTCArIDEpCi1QVFIyNF9MU0IgPSA1Ci1QVFIyNF9NU0IgPSAoUFRSMjRfTFNCICsgMjQpCi1QVFIyNF9BTElHTiA9IDMyCi1QVFIyNF9CQVNFID0gMHhlMDAwMDAwMAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3BhcmFtLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLV9QT1NJWF9WRElTQUJMRSA9IDAKLU1BWF9JTlBVVCA9IDUxMgotTUFYX0NBTk9OID0gMjU2Ci1VSURfTk9CT0RZID0gNjAwMDEKLUdJRF9OT0JPRFkgPSBVSURfTk9CT0RZCi1VSURfTk9BQ0NFU1MgPSA2MDAwMgotTUFYX1RBU0tJRCA9IDk5OTk5OQotTUFYX01BWFBJRCA9IDk5OTk5OQotREVGQVVMVF9NQVhQSUQgPSA5OTk5OTkKLURFRkFVTFRfSlVNUFBJRCA9IDEwMDAwMAotREVGQVVMVF9NQVhQSUQgPSAzMDAwMAotREVGQVVMVF9KVU1QUElEID0gMAotTUFYVUlEID0gMjE0NzQ4MzY0NwotTUFYUFJPSklEID0gTUFYVUlECi1NQVhMSU5LID0gMzI3NjcKLU5NT1VOVCA9IDQwCi1DQU5CU0laID0gMjU2Ci1OT0ZJTEUgPSAyMAotTkdST1VQU19VTUlOID0gMAotTkdST1VQU19VTUFYID0gMzIKLU5HUk9VUFNfTUFYX0RFRkFVTFQgPSAxNgotTlpFUk8gPSAyMAotTlVMTCA9IDAKLU5VTEwgPSAwCi1DTUFTSyA9IDBvMjIKLUNETElNSVQgPSAoMTw8MTEpCi1OQlBTID0gMHgyMDAwMAotTkJQU0NUUiA9IDUxMgotVUJTSVpFID0gNTEyCi1TQ1RSU0hGVCA9IDkKLVNZU05BTUUgPSA5Ci1QUkVNT1RFID0gMzkKLU1BWFBBVEhMRU4gPSAxMDI0Ci1NQVhTWU1MSU5LUyA9IDIwCi1NQVhOQU1FTEVOID0gMjU2Ci1OQUREUiA9IDEzCi1QSVBFX0JVRiA9IDUxMjAKLVBJUEVfTUFYID0gNTEyMAotTkJCWSA9IDgKLU1BWEJTSVpFID0gODE5MgotREVWX0JTSVpFID0gNTEyCi1ERVZfQlNISUZUID0gOQotTUFYRlJBRyA9IDgKLU1BWE9GRjMyX1QgPSAweDdmZmZmZmZmCi1NQVhPRkZfVCA9IDB4N2ZmZmZmZmZmZmZmZmZmZgotTUFYT0ZGU0VUX1QgPSAweDdmZmZmZmZmZmZmZmZmZmYKLU1BWE9GRl9UID0gMHg3ZmZmZmZmZgotTUFYT0ZGU0VUX1QgPSAweDdmZmZmZmZmCi1kZWYgYnRvZGIoYnl0ZXMpOiByZXR1cm4gICBcCi0KLWRlZiBkYnRvYihkYik6IHJldHVybiAgIFwKLQotZGVmIGxidG9kYihieXRlcyk6IHJldHVybiAgIFwKLQotZGVmIGxkYnRvYihkYik6IHJldHVybiAgIFwKLQotTkNBUkdTMzIgPSAweDEwMDAwMAotTkNBUkdTNjQgPSAweDIwMDAwMAotTkNBUkdTID0gTkNBUkdTNjQKLU5DQVJHUyA9IE5DQVJHUzMyCi1GU0hJRlQgPSA4Ci1GU0NBTEUgPSAoMTw8RlNISUZUKQotZGVmIERFTEFZKG4pOiByZXR1cm4gZHJ2X3VzZWN3YWl0KG4pCi0KLWRlZiBtbXVfcHRvYih4KTogcmV0dXJuICgoeCkgPDwgTU1VX1BBR0VTSElGVCkKLQotZGVmIG1tdV9idG9wKHgpOiByZXR1cm4gKCgoeCkpID4+IE1NVV9QQUdFU0hJRlQpCi0KLWRlZiBtbXVfYnRvcHIoeCk6IHJldHVybiAoKCgoeCkgKyBNTVVfUEFHRU9GRlNFVCkgPj4gTU1VX1BBR0VTSElGVCkpCi0KLWRlZiBtbXVfcHRvZCh4KTogcmV0dXJuICgoeCkgPDwgKE1NVV9QQUdFU0hJRlQgLSBERVZfQlNISUZUKSkKLQotZGVmIHB0b2QoeCk6IHJldHVybiAoKHgpIDw8IChQQUdFU0hJRlQgLSBERVZfQlNISUZUKSkKLQotZGVmIHB0b2IoeCk6IHJldHVybiAoKHgpIDw8IFBBR0VTSElGVCkKLQotZGVmIGJ0b3AoeCk6IHJldHVybiAoKCh4KSA+PiBQQUdFU0hJRlQpKQotCi1kZWYgYnRvcHIoeCk6IHJldHVybiAoKCgoeCkgKyBQQUdFT0ZGU0VUKSA+PiBQQUdFU0hJRlQpKQotCi1kZWYgZHRvcChERCk6IHJldHVybiAoKChERCkgKyBORFBQIC0gMSkgPj4gKFBBR0VTSElGVCAtIERFVl9CU0hJRlQpKQotCi1kZWYgZHRvcHQoREQpOiByZXR1cm4gKChERCkgPj4gKFBBR0VTSElGVCAtIERFVl9CU0hJRlQpKQotCi1fQUlPX0xJU1RJT19NQVggPSAoNDA5NikKLV9BSU9fTUFYID0gKC0xKQotX01RX09QRU5fTUFYID0gKDMyKQotX01RX1BSSU9fTUFYID0gKDMyKQotX1NFTV9OU0VNU19NQVggPSBJTlRfTUFYCi1fU0VNX1ZBTFVFX01BWCA9IElOVF9NQVgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy91bmlzdGQuaAotX0NTX1BBVEggPSA2NQotX0NTX0xGU19DRkxBR1MgPSA2OAotX0NTX0xGU19MREZMQUdTID0gNjkKLV9DU19MRlNfTElCUyA9IDcwCi1fQ1NfTEZTX0xJTlRGTEFHUyA9IDcxCi1fQ1NfTEZTNjRfQ0ZMQUdTID0gNzIKLV9DU19MRlM2NF9MREZMQUdTID0gNzMKLV9DU19MRlM2NF9MSUJTID0gNzQKLV9DU19MRlM2NF9MSU5URkxBR1MgPSA3NQotX0NTX1hCUzVfSUxQMzJfT0ZGMzJfQ0ZMQUdTID0gNzAwCi1fQ1NfWEJTNV9JTFAzMl9PRkYzMl9MREZMQUdTID0gNzAxCi1fQ1NfWEJTNV9JTFAzMl9PRkYzMl9MSUJTID0gNzAyCi1fQ1NfWEJTNV9JTFAzMl9PRkYzMl9MSU5URkxBR1MgPSA3MDMKLV9DU19YQlM1X0lMUDMyX09GRkJJR19DRkxBR1MgPSA3MDUKLV9DU19YQlM1X0lMUDMyX09GRkJJR19MREZMQUdTID0gNzA2Ci1fQ1NfWEJTNV9JTFAzMl9PRkZCSUdfTElCUyA9IDcwNwotX0NTX1hCUzVfSUxQMzJfT0ZGQklHX0xJTlRGTEFHUyA9IDcwOAotX0NTX1hCUzVfTFA2NF9PRkY2NF9DRkxBR1MgPSA3MDkKLV9DU19YQlM1X0xQNjRfT0ZGNjRfTERGTEFHUyA9IDcxMAotX0NTX1hCUzVfTFA2NF9PRkY2NF9MSUJTID0gNzExCi1fQ1NfWEJTNV9MUDY0X09GRjY0X0xJTlRGTEFHUyA9IDcxMgotX0NTX1hCUzVfTFBCSUdfT0ZGQklHX0NGTEFHUyA9IDcxMwotX0NTX1hCUzVfTFBCSUdfT0ZGQklHX0xERkxBR1MgPSA3MTQKLV9DU19YQlM1X0xQQklHX09GRkJJR19MSUJTID0gNzE1Ci1fQ1NfWEJTNV9MUEJJR19PRkZCSUdfTElOVEZMQUdTID0gNzE2Ci1fU0NfQVJHX01BWCA9IDEKLV9TQ19DSElMRF9NQVggPSAyCi1fU0NfQ0xLX1RDSyA9IDMKLV9TQ19OR1JPVVBTX01BWCA9IDQKLV9TQ19PUEVOX01BWCA9IDUKLV9TQ19KT0JfQ09OVFJPTCA9IDYKLV9TQ19TQVZFRF9JRFMgPSA3Ci1fU0NfVkVSU0lPTiA9IDgKLV9TQ19QQVNTX01BWCA9IDkKLV9TQ19MT0dOQU1FX01BWCA9IDEwCi1fU0NfUEFHRVNJWkUgPSAxMQotX1NDX1hPUEVOX1ZFUlNJT04gPSAxMgotX1NDX05QUk9DRVNTT1JTX0NPTkYgPSAxNAotX1NDX05QUk9DRVNTT1JTX09OTE4gPSAxNQotX1NDX1NUUkVBTV9NQVggPSAxNgotX1NDX1RaTkFNRV9NQVggPSAxNwotX1NDX0FJT19MSVNUSU9fTUFYID0gMTgKLV9TQ19BSU9fTUFYID0gMTkKLV9TQ19BSU9fUFJJT19ERUxUQV9NQVggPSAyMAotX1NDX0FTWU5DSFJPTk9VU19JTyA9IDIxCi1fU0NfREVMQVlUSU1FUl9NQVggPSAyMgotX1NDX0ZTWU5DID0gMjMKLV9TQ19NQVBQRURfRklMRVMgPSAyNAotX1NDX01FTUxPQ0sgPSAyNQotX1NDX01FTUxPQ0tfUkFOR0UgPSAyNgotX1NDX01FTU9SWV9QUk9URUNUSU9OID0gMjcKLV9TQ19NRVNTQUdFX1BBU1NJTkcgPSAyOAotX1NDX01RX09QRU5fTUFYID0gMjkKLV9TQ19NUV9QUklPX01BWCA9IDMwCi1fU0NfUFJJT1JJVElaRURfSU8gPSAzMQotX1NDX1BSSU9SSVRZX1NDSEVEVUxJTkcgPSAzMgotX1NDX1JFQUxUSU1FX1NJR05BTFMgPSAzMwotX1NDX1JUU0lHX01BWCA9IDM0Ci1fU0NfU0VNQVBIT1JFUyA9IDM1Ci1fU0NfU0VNX05TRU1TX01BWCA9IDM2Ci1fU0NfU0VNX1ZBTFVFX01BWCA9IDM3Ci1fU0NfU0hBUkVEX01FTU9SWV9PQkpFQ1RTID0gMzgKLV9TQ19TSUdRVUVVRV9NQVggPSAzOQotX1NDX1NJR1JUX01JTiA9IDQwCi1fU0NfU0lHUlRfTUFYID0gNDEKLV9TQ19TWU5DSFJPTklaRURfSU8gPSA0MgotX1NDX1RJTUVSUyA9IDQzCi1fU0NfVElNRVJfTUFYID0gNDQKLV9TQ18yX0NfQklORCA9IDQ1Ci1fU0NfMl9DX0RFViA9IDQ2Ci1fU0NfMl9DX1ZFUlNJT04gPSA0NwotX1NDXzJfRk9SVF9ERVYgPSA0OAotX1NDXzJfRk9SVF9SVU4gPSA0OQotX1NDXzJfTE9DQUxFREVGID0gNTAKLV9TQ18yX1NXX0RFViA9IDUxCi1fU0NfMl9VUEUgPSA1MgotX1NDXzJfVkVSU0lPTiA9IDUzCi1fU0NfQkNfQkFTRV9NQVggPSA1NAotX1NDX0JDX0RJTV9NQVggPSA1NQotX1NDX0JDX1NDQUxFX01BWCA9IDU2Ci1fU0NfQkNfU1RSSU5HX01BWCA9IDU3Ci1fU0NfQ09MTF9XRUlHSFRTX01BWCA9IDU4Ci1fU0NfRVhQUl9ORVNUX01BWCA9IDU5Ci1fU0NfTElORV9NQVggPSA2MAotX1NDX1JFX0RVUF9NQVggPSA2MQotX1NDX1hPUEVOX0NSWVBUID0gNjIKLV9TQ19YT1BFTl9FTkhfSTE4TiA9IDYzCi1fU0NfWE9QRU5fU0hNID0gNjQKLV9TQ18yX0NIQVJfVEVSTSA9IDY2Ci1fU0NfWE9QRU5fWENVX1ZFUlNJT04gPSA2NwotX1NDX0FURVhJVF9NQVggPSA3NgotX1NDX0lPVl9NQVggPSA3NwotX1NDX1hPUEVOX1VOSVggPSA3OAotX1NDX1BBR0VfU0laRSA9IF9TQ19QQUdFU0laRQotX1NDX1RfSU9WX01BWCA9IDc5Ci1fU0NfUEhZU19QQUdFUyA9IDUwMAotX1NDX0FWUEhZU19QQUdFUyA9IDUwMQotX1NDX0NPSEVSX0JMS1NaID0gNTAzCi1fU0NfU1BMSVRfQ0FDSEUgPSA1MDQKLV9TQ19JQ0FDSEVfU1ogPSA1MDUKLV9TQ19EQ0FDSEVfU1ogPSA1MDYKLV9TQ19JQ0FDSEVfTElORVNaID0gNTA3Ci1fU0NfRENBQ0hFX0xJTkVTWiA9IDUwOAotX1NDX0lDQUNIRV9CTEtTWiA9IDUwOQotX1NDX0RDQUNIRV9CTEtTWiA9IDUxMAotX1NDX0RDQUNIRV9UQkxLU1ogPSA1MTEKLV9TQ19JQ0FDSEVfQVNTT0MgPSA1MTIKLV9TQ19EQ0FDSEVfQVNTT0MgPSA1MTMKLV9TQ19NQVhQSUQgPSA1MTQKLV9TQ19TVEFDS19QUk9UID0gNTE1Ci1fU0NfVEhSRUFEX0RFU1RSVUNUT1JfSVRFUkFUSU9OUyA9IDU2OAotX1NDX0dFVEdSX1JfU0laRV9NQVggPSA1NjkKLV9TQ19HRVRQV19SX1NJWkVfTUFYID0gNTcwCi1fU0NfTE9HSU5fTkFNRV9NQVggPSA1NzEKLV9TQ19USFJFQURfS0VZU19NQVggPSA1NzIKLV9TQ19USFJFQURfU1RBQ0tfTUlOID0gNTczCi1fU0NfVEhSRUFEX1RIUkVBRFNfTUFYID0gNTc0Ci1fU0NfVFRZX05BTUVfTUFYID0gNTc1Ci1fU0NfVEhSRUFEUyA9IDU3NgotX1NDX1RIUkVBRF9BVFRSX1NUQUNLQUREUiA9IDU3NwotX1NDX1RIUkVBRF9BVFRSX1NUQUNLU0laRSA9IDU3OAotX1NDX1RIUkVBRF9QUklPUklUWV9TQ0hFRFVMSU5HID0gNTc5Ci1fU0NfVEhSRUFEX1BSSU9fSU5IRVJJVCA9IDU4MAotX1NDX1RIUkVBRF9QUklPX1BST1RFQ1QgPSA1ODEKLV9TQ19USFJFQURfUFJPQ0VTU19TSEFSRUQgPSA1ODIKLV9TQ19USFJFQURfU0FGRV9GVU5DVElPTlMgPSA1ODMKLV9TQ19YT1BFTl9MRUdBQ1kgPSA3MTcKLV9TQ19YT1BFTl9SRUFMVElNRSA9IDcxOAotX1NDX1hPUEVOX1JFQUxUSU1FX1RIUkVBRFMgPSA3MTkKLV9TQ19YQlM1X0lMUDMyX09GRjMyID0gNzIwCi1fU0NfWEJTNV9JTFAzMl9PRkZCSUcgPSA3MjEKLV9TQ19YQlM1X0xQNjRfT0ZGNjQgPSA3MjIKLV9TQ19YQlM1X0xQQklHX09GRkJJRyA9IDcyMwotX1BDX0xJTktfTUFYID0gMQotX1BDX01BWF9DQU5PTiA9IDIKLV9QQ19NQVhfSU5QVVQgPSAzCi1fUENfTkFNRV9NQVggPSA0Ci1fUENfUEFUSF9NQVggPSA1Ci1fUENfUElQRV9CVUYgPSA2Ci1fUENfTk9fVFJVTkMgPSA3Ci1fUENfVkRJU0FCTEUgPSA4Ci1fUENfQ0hPV05fUkVTVFJJQ1RFRCA9IDkKLV9QQ19BU1lOQ19JTyA9IDEwCi1fUENfUFJJT19JTyA9IDExCi1fUENfU1lOQ19JTyA9IDEyCi1fUENfRklMRVNJWkVCSVRTID0gNjcKLV9QQ19MQVNUID0gNjcKLV9QT1NJWF9WRVJTSU9OID0gMTk5NTA2Ci1fUE9TSVgyX1ZFUlNJT04gPSAxOTkyMDkKLV9QT1NJWDJfQ19WRVJTSU9OID0gMTk5MjA5Ci1fWE9QRU5fWENVX1ZFUlNJT04gPSA0Ci1fWE9QRU5fUkVBTFRJTUUgPSAxCi1fWE9QRU5fRU5IX0kxOE4gPSAxCi1fWE9QRU5fU0hNID0gMQotX1BPU0lYMl9DX0JJTkQgPSAxCi1fUE9TSVgyX0NIQVJfVEVSTSA9IDEKLV9QT1NJWDJfTE9DQUxFREVGID0gMQotX1BPU0lYMl9DX0RFViA9IDEKLV9QT1NJWDJfU1dfREVWID0gMQotX1BPU0lYMl9VUEUgPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvbXV0ZXguaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotZGVmIE1VVEVYX0hFTEQoeCk6IHJldHVybiAobXV0ZXhfb3duZWQoeCkpCi0KLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9yd2xvY2suaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotZGVmIFJXX1JFQURfSEVMRCh4KTogcmV0dXJuIChyd19yZWFkX2hlbGQoKHgpKSkKLQotZGVmIFJXX1dSSVRFX0hFTEQoeCk6IHJldHVybiAocndfd3JpdGVfaGVsZCgoeCkpKQotCi1kZWYgUldfTE9DS19IRUxEKHgpOiByZXR1cm4gKHJ3X2xvY2tfaGVsZCgoeCkpKQotCi1kZWYgUldfSVNXUklURVIoeCk6IHJldHVybiAocndfaXN3cml0ZXIoeCkpCi0KLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9zZW1hcGhvcmUuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3RocmVhZC5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMva2x3cC5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvY29uZHZhci5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdGltZS5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdHlwZXMzMi5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvaW50X3R5cGVzLmgKLVRJTUUzMl9NQVggPSBJTlQzMl9NQVgKLVRJTUUzMl9NSU4gPSBJTlQzMl9NSU4KLWRlZiBUSU1FVkFMX09WRVJGTE9XKHR2KTogcmV0dXJuIFwKLQotZnJvbSBUWVBFUyBpbXBvcnQgKgotRFNUX05PTkUgPSAwCi1EU1RfVVNBID0gMQotRFNUX0FVU1QgPSAyCi1EU1RfV0VUID0gMwotRFNUX01FVCA9IDQKLURTVF9FRVQgPSA1Ci1EU1RfQ0FOID0gNgotRFNUX0dCID0gNwotRFNUX1JVTSA9IDgKLURTVF9UVVIgPSA5Ci1EU1RfQVVTVEFMVCA9IDEwCi1JVElNRVJfUkVBTCA9IDAKLUlUSU1FUl9WSVJUVUFMID0gMQotSVRJTUVSX1BST0YgPSAyCi1JVElNRVJfUkVBTFBST0YgPSAzCi1kZWYgSVRJTUVSVkFMX09WRVJGTE9XKGl0dik6IHJldHVybiBcCi0KLVNFQyA9IDEKLU1JTExJU0VDID0gMTAwMAotTUlDUk9TRUMgPSAxMDAwMDAwCi1OQU5PU0VDID0gMTAwMDAwMDAwMAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3RpbWVfaW1wbC5oCi1kZWYgVElNRVNQRUNfT1ZFUkZMT1codHMpOiByZXR1cm4gXAotCi1kZWYgSVRJTUVSU1BFQ19PVkVSRkxPVyhpdCk6IHJldHVybiBcCi0KLV9fQ0xPQ0tfUkVBTFRJTUUwID0gMAotQ0xPQ0tfVklSVFVBTCA9IDEKLUNMT0NLX1BST0YgPSAyCi1fX0NMT0NLX1JFQUxUSU1FMyA9IDMKLUNMT0NLX0hJR0hSRVMgPSA0Ci1DTE9DS19NQVggPSA1Ci1DTE9DS19SRUFMVElNRSA9IF9fQ0xPQ0tfUkVBTFRJTUUzCi1DTE9DS19SRUFMVElNRSA9IF9fQ0xPQ0tfUkVBTFRJTUUwCi1USU1FUl9SRUxUSU1FID0gMHgwCi1USU1FUl9BQlNUSU1FID0gMHgxCi1kZWYgVElDS19UT19TRUModGljayk6IHJldHVybiAoKHRpY2spIC8gaHopCi0KLWRlZiBTRUNfVE9fVElDSyhzZWMpOiByZXR1cm4gKChzZWMpICogaHopCi0KLWRlZiBUSUNLX1RPX01TRUModGljayk6IHJldHVybiBcCi0KLWRlZiBNU0VDX1RPX1RJQ0sobXNlYyk6IHJldHVybiBcCi0KLWRlZiBNU0VDX1RPX1RJQ0tfUk9VTkRVUChtc2VjKTogcmV0dXJuIFwKLQotZGVmIFRJQ0tfVE9fVVNFQyh0aWNrKTogcmV0dXJuICgodGljaykgKiB1c2VjX3Blcl90aWNrKQotCi1kZWYgVVNFQ19UT19USUNLKHVzZWMpOiByZXR1cm4gKCh1c2VjKSAvIHVzZWNfcGVyX3RpY2spCi0KLWRlZiBVU0VDX1RPX1RJQ0tfUk9VTkRVUCh1c2VjKTogcmV0dXJuIFwKLQotZGVmIFRJQ0tfVE9fTlNFQyh0aWNrKTogcmV0dXJuICgodGljaykgKiBuc2VjX3Blcl90aWNrKQotCi1kZWYgTlNFQ19UT19USUNLKG5zZWMpOiByZXR1cm4gKChuc2VjKSAvIG5zZWNfcGVyX3RpY2spCi0KLWRlZiBOU0VDX1RPX1RJQ0tfUk9VTkRVUChuc2VjKTogcmV0dXJuIFwKLQotZGVmIFRJTUVWQUxfVE9fVElDSyh0dnApOiByZXR1cm4gXAotCi1kZWYgVElNRVNUUlVDX1RPX1RJQ0sodHNwKTogcmV0dXJuIFwKLQotCi0jIEluY2x1ZGVkIGZyb20gdGltZS5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi0KLSMgSW5jbHVkZWQgZnJvbSBpc28vdGltZV9pc28uaAotTlVMTCA9IDAKLU5VTEwgPSAwCi1DTE9DS1NfUEVSX1NFQyA9IDEwMDAwMDAKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9zZWxlY3QuaAotRkRfU0VUU0laRSA9IDY1NTM2Ci1GRF9TRVRTSVpFID0gMTAyNAotX05CQlkgPSA4Ci1OQkJZID0gX05CQlkKLWRlZiBGRF9aRVJPKHApOiByZXR1cm4gYnplcm8oKHApLCBzaXplb2YgKCoocCkpKQotCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvc2lnbmFsLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9pc28vc2lnbmFsX2lzby5oCi1TSUdIVVAgPSAxCi1TSUdJTlQgPSAyCi1TSUdRVUlUID0gMwotU0lHSUxMID0gNAotU0lHVFJBUCA9IDUKLVNJR0lPVCA9IDYKLVNJR0FCUlQgPSA2Ci1TSUdFTVQgPSA3Ci1TSUdGUEUgPSA4Ci1TSUdLSUxMID0gOQotU0lHQlVTID0gMTAKLVNJR1NFR1YgPSAxMQotU0lHU1lTID0gMTIKLVNJR1BJUEUgPSAxMwotU0lHQUxSTSA9IDE0Ci1TSUdURVJNID0gMTUKLVNJR1VTUjEgPSAxNgotU0lHVVNSMiA9IDE3Ci1TSUdDTEQgPSAxOAotU0lHQ0hMRCA9IDE4Ci1TSUdQV1IgPSAxOQotU0lHV0lOQ0ggPSAyMAotU0lHVVJHID0gMjEKLVNJR1BPTEwgPSAyMgotU0lHSU8gPSBTSUdQT0xMCi1TSUdTVE9QID0gMjMKLVNJR1RTVFAgPSAyNAotU0lHQ09OVCA9IDI1Ci1TSUdUVElOID0gMjYKLVNJR1RUT1UgPSAyNwotU0lHVlRBTFJNID0gMjgKLVNJR1BST0YgPSAyOQotU0lHWENQVSA9IDMwCi1TSUdYRlNaID0gMzEKLVNJR1dBSVRJTkcgPSAzMgotU0lHTFdQID0gMzMKLVNJR0ZSRUVaRSA9IDM0Ci1TSUdUSEFXID0gMzUKLVNJR0NBTkNFTCA9IDM2Ci1TSUdMT1NUID0gMzcKLV9TSUdSVE1JTiA9IDM4Ci1fU0lHUlRNQVggPSA0NQotU0lHX0JMT0NLID0gMQotU0lHX1VOQkxPQ0sgPSAyCi1TSUdfU0VUTUFTSyA9IDMKLVNJR05PX01BU0sgPSAweEZGCi1TSUdERUZFUiA9IDB4MTAwCi1TSUdIT0xEID0gMHgyMDAKLVNJR1JFTFNFID0gMHg0MDAKLVNJR0lHTk9SRSA9IDB4ODAwCi1TSUdQQVVTRSA9IDB4MTAwMAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3NpZ2luZm8uaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotU0lHRVZfTk9ORSA9IDEKLVNJR0VWX1NJR05BTCA9IDIKLVNJR0VWX1RIUkVBRCA9IDMKLVNJX05PSU5GTyA9IDMyNzY3Ci1TSV9VU0VSID0gMAotU0lfTFdQID0gKC0xKQotU0lfUVVFVUUgPSAoLTIpCi1TSV9USU1FUiA9ICgtMykKLVNJX0FTWU5DSU8gPSAoLTQpCi1TSV9NRVNHUSA9ICgtNSkKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9tYWNoc2lnLmgKLUlMTF9JTExPUEMgPSAxCi1JTExfSUxMT1BOID0gMgotSUxMX0lMTEFEUiA9IDMKLUlMTF9JTExUUlAgPSA0Ci1JTExfUFJWT1BDID0gNQotSUxMX1BSVlJFRyA9IDYKLUlMTF9DT1BST0MgPSA3Ci1JTExfQkFEU1RLID0gOAotTlNJR0lMTCA9IDgKLUVNVF9UQUdPVkYgPSAxCi1FTVRfQ1BDT1ZGID0gMgotTlNJR0VNVCA9IDIKLUZQRV9JTlRESVYgPSAxCi1GUEVfSU5UT1ZGID0gMgotRlBFX0ZMVERJViA9IDMKLUZQRV9GTFRPVkYgPSA0Ci1GUEVfRkxUVU5EID0gNQotRlBFX0ZMVFJFUyA9IDYKLUZQRV9GTFRJTlYgPSA3Ci1GUEVfRkxUU1VCID0gOAotTlNJR0ZQRSA9IDgKLVNFR1ZfTUFQRVJSID0gMQotU0VHVl9BQ0NFUlIgPSAyCi1OU0lHU0VHViA9IDIKLUJVU19BRFJBTE4gPSAxCi1CVVNfQURSRVJSID0gMgotQlVTX09CSkVSUiA9IDMKLU5TSUdCVVMgPSAzCi1UUkFQX0JSS1BUID0gMQotVFJBUF9UUkFDRSA9IDIKLVRSQVBfUldBVENIID0gMwotVFJBUF9XV0FUQ0ggPSA0Ci1UUkFQX1hXQVRDSCA9IDUKLU5TSUdUUkFQID0gNQotQ0xEX0VYSVRFRCA9IDEKLUNMRF9LSUxMRUQgPSAyCi1DTERfRFVNUEVEID0gMwotQ0xEX1RSQVBQRUQgPSA0Ci1DTERfU1RPUFBFRCA9IDUKLUNMRF9DT05USU5VRUQgPSA2Ci1OU0lHQ0xEID0gNgotUE9MTF9JTiA9IDEKLVBPTExfT1VUID0gMgotUE9MTF9NU0cgPSAzCi1QT0xMX0VSUiA9IDQKLVBPTExfUFJJID0gNQotUE9MTF9IVVAgPSA2Ci1OU0lHUE9MTCA9IDYKLVBST0ZfU0lHID0gMQotTlNJR1BST0YgPSAxCi1TSV9NQVhTWiA9IDI1NgotU0lfTUFYU1ogPSAxMjgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy90aW1lX3N0ZF9pbXBsLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLVNJMzJfTUFYU1ogPSAxMjgKLWRlZiBTSV9DQU5RVUVVRShjKTogcmV0dXJuICgoYykgPD0gU0lfUVVFVUUpCi0KLVNBX05PQ0xEU1RPUCA9IDB4MDAwMjAwMDAKLVNBX09OU1RBQ0sgPSAweDAwMDAwMDAxCi1TQV9SRVNFVEhBTkQgPSAweDAwMDAwMDAyCi1TQV9SRVNUQVJUID0gMHgwMDAwMDAwNAotU0FfU0lHSU5GTyA9IDB4MDAwMDAwMDgKLVNBX05PREVGRVIgPSAweDAwMDAwMDEwCi1TQV9OT0NMRFdBSVQgPSAweDAwMDEwMDAwCi1TQV9XQUlUU0lHID0gMHgwMDAxMDAwMAotTlNJRyA9IDQ2Ci1NQVhTSUcgPSA0NQotU19TSUdOQUwgPSAxCi1TX1NJR1NFVCA9IDIKLVNfU0lHQUNUSU9OID0gMwotU19OT05FID0gNAotTUlOU0lHU1RLU1ogPSAyMDQ4Ci1TSUdTVEtTWiA9IDgxOTIKLVNTX09OU1RBQ0sgPSAweDAwMDAwMDAxCi1TU19ESVNBQkxFID0gMHgwMDAwMDAwMgotU05fUFJPQyA9IDEKLVNOX0NBTkNFTCA9IDIKLVNOX1NFTkQgPSAzCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdWNvbnRleHQuaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3JlZ3NldC5oCi1SRUdfQ0NSID0gKDApCi1SRUdfUFNSID0gKDApCi1SRUdfUFNSID0gKDApCi1SRUdfUEMgPSAoMSkKLVJFR19uUEMgPSAoMikKLVJFR19ZID0gKDMpCi1SRUdfRzEgPSAoNCkKLVJFR19HMiA9ICg1KQotUkVHX0czID0gKDYpCi1SRUdfRzQgPSAoNykKLVJFR19HNSA9ICg4KQotUkVHX0c2ID0gKDkpCi1SRUdfRzcgPSAoMTApCi1SRUdfTzAgPSAoMTEpCi1SRUdfTzEgPSAoMTIpCi1SRUdfTzIgPSAoMTMpCi1SRUdfTzMgPSAoMTQpCi1SRUdfTzQgPSAoMTUpCi1SRUdfTzUgPSAoMTYpCi1SRUdfTzYgPSAoMTcpCi1SRUdfTzcgPSAoMTgpCi1SRUdfQVNJID0gKDE5KQotUkVHX0ZQUlMgPSAoMjApCi1SRUdfUFMgPSBSRUdfUFNSCi1SRUdfU1AgPSBSRUdfTzYKLVJFR19SMCA9IFJFR19PMAotUkVHX1IxID0gUkVHX08xCi1fTkdSRUcgPSAyMQotX05HUkVHID0gMTkKLU5HUkVHID0gX05HUkVHCi1fTkdSRUczMiA9IDE5Ci1fTkdSRUc2NCA9IDIxCi1TUEFSQ19NQVhSRUdXSU5ET1cgPSAzMQotTUFYRlBRID0gMTYKLVhSU19JRCA9IDB4Nzg3MjczMDAKLQotIyBJbmNsdWRlZCBmcm9tIHY3L3N5cy9wcml2cmVncy5oCi0KLSMgSW5jbHVkZWQgZnJvbSB2Ny9zeXMvcHNyLmgKLVBTUl9DV1AgPSAweDAwMDAwMDFGCi1QU1JfRVQgPSAweDAwMDAwMDIwCi1QU1JfUFMgPSAweDAwMDAwMDQwCi1QU1JfUyA9IDB4MDAwMDAwODAKLVBTUl9QSUwgPSAweDAwMDAwRjAwCi1QU1JfRUYgPSAweDAwMDAxMDAwCi1QU1JfRUMgPSAweDAwMDAyMDAwCi1QU1JfUlNWID0gMHgwMDBGQzAwMAotUFNSX0lDQyA9IDB4MDBGMDAwMDAKLVBTUl9DID0gMHgwMDEwMDAwMAotUFNSX1YgPSAweDAwMjAwMDAwCi1QU1JfWiA9IDB4MDA0MDAwMDAKLVBTUl9OID0gMHgwMDgwMDAwMAotUFNSX1ZFUiA9IDB4MEYwMDAwMDAKLVBTUl9JTVBMID0gMHhGMDAwMDAwMAotUFNMX0FMTENDID0gUFNSX0lDQwotUFNMX1VTRVIgPSAoUFNSX1MpCi1QU0xfVVNFUk1BU0sgPSAoUFNSX0lDQykKLVBTTF9VQklUUyA9IChQU1JfSUNDfFBTUl9FRikKLWRlZiBVU0VSTU9ERShwcyk6IHJldHVybiAoKChwcykgJiBQU1JfUFMpID09IDApCi0KLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9mc3IuaAotRlNSX0NFWEMgPSAweDAwMDAwMDFmCi1GU1JfQUVYQyA9IDB4MDAwMDAzZTAKLUZTUl9GQ0MgPSAweDAwMDAwYzAwCi1GU1JfUFIgPSAweDAwMDAxMDAwCi1GU1JfUU5FID0gMHgwMDAwMjAwMAotRlNSX0ZUVCA9IDB4MDAwMWMwMDAKLUZTUl9WRVIgPSAweDAwMGUwMDAwCi1GU1JfVEVNID0gMHgwZjgwMDAwMAotRlNSX1JQID0gMHgzMDAwMDAwMAotRlNSX1JEID0gMHhjMDAwMDAwMAotRlNSX1ZFUl9TSElGVCA9IDE3Ci1GU1JfRkNDMSA9IDB4MDAwMDAwMDMKLUZTUl9GQ0MyID0gMHgwMDAwMDAwQwotRlNSX0ZDQzMgPSAweDAwMDAwMDMwCi1GU1JfQ0VYQ19OWCA9IDB4MDAwMDAwMDEKLUZTUl9DRVhDX0RaID0gMHgwMDAwMDAwMgotRlNSX0NFWENfVUYgPSAweDAwMDAwMDA0Ci1GU1JfQ0VYQ19PRiA9IDB4MDAwMDAwMDgKLUZTUl9DRVhDX05WID0gMHgwMDAwMDAxMAotRlNSX0FFWENfTlggPSAoMHgxIDw8IDUpCi1GU1JfQUVYQ19EWiA9ICgweDIgPDwgNSkKLUZTUl9BRVhDX1VGID0gKDB4NCA8PCA1KQotRlNSX0FFWENfT0YgPSAoMHg4IDw8IDUpCi1GU1JfQUVYQ19OViA9ICgweDEwIDw8IDUpCi1GVFRfTk9ORSA9IDAKLUZUVF9JRUVFID0gMQotRlRUX1VORklOID0gMgotRlRUX1VOSU1QID0gMwotRlRUX1NFUSA9IDQKLUZUVF9BTElHTiA9IDUKLUZUVF9ERkFVTFQgPSA2Ci1GU1JfRlRUX1NISUZUID0gMTQKLUZTUl9GVFRfSUVFRSA9IChGVFRfSUVFRSAgIDw8IEZTUl9GVFRfU0hJRlQpCi1GU1JfRlRUX1VORklOID0gKEZUVF9VTkZJTiAgPDwgRlNSX0ZUVF9TSElGVCkKLUZTUl9GVFRfVU5JTVAgPSAoRlRUX1VOSU1QICA8PCBGU1JfRlRUX1NISUZUKQotRlNSX0ZUVF9TRVEgPSAoRlRUX1NFUSAgICA8PCBGU1JfRlRUX1NISUZUKQotRlNSX0ZUVF9BTElHTiA9IChGVFRfQUxJR04gIDw8IEZTUl9GVFRfU0hJRlQpCi1GU1JfRlRUX0RGQVVMVCA9IChGVFRfREZBVUxUIDw8IEZTUl9GVFRfU0hJRlQpCi1GU1JfVEVNX05YID0gKDB4MSA8PCAyMykKLUZTUl9URU1fRFogPSAoMHgyIDw8IDIzKQotRlNSX1RFTV9VRiA9ICgweDQgPDwgMjMpCi1GU1JfVEVNX09GID0gKDB4OCA8PCAyMykKLUZTUl9URU1fTlYgPSAoMHgxMCA8PCAyMykKLVJQX0RCTEVYVCA9IDAKLVJQX1NJTkdMRSA9IDEKLVJQX0RPVUJMRSA9IDIKLVJQX1JFU0VSVkVEID0gMwotUkRfTkVBUiA9IDAKLVJEX1pFUjAgPSAxCi1SRF9QT1NJTkYgPSAyCi1SRF9ORUdJTkYgPSAzCi1GUFJTX0RMID0gMHgxCi1GUFJTX0RVID0gMHgyCi1GUFJTX0ZFRiA9IDB4NAotUElMX01BWCA9IDB4ZgotZGVmIFNBVkVfR0xPQkFMUyhSUCk6IHJldHVybiBcCi0KLWRlZiBSRVNUT1JFX0dMT0JBTFMoUlApOiByZXR1cm4gXAotCi1kZWYgU0FWRV9PVVRTKFJQKTogcmV0dXJuIFwKLQotZGVmIFJFU1RPUkVfT1VUUyhSUCk6IHJldHVybiBcCi0KLWRlZiBTQVZFX1dJTkRPVyhTQlApOiByZXR1cm4gXAotCi1kZWYgUkVTVE9SRV9XSU5ET1coU0JQKTogcmV0dXJuIFwKLQotZGVmIFNUT1JFX0ZQUkVHUyhGUCk6IHJldHVybiBcCi0KLWRlZiBMT0FEX0ZQUkVHUyhGUCk6IHJldHVybiBcCi0KLV9TUEFSQ19NQVhSRUdXSU5ET1cgPSAzMQotX1hSU19JRCA9IDB4Nzg3MjczMDAKLUdFVENPTlRFWFQgPSAwCi1TRVRDT05URVhUID0gMQotVUNfU0lHTUFTSyA9IDBvMDEKLVVDX1NUQUNLID0gMG8wMgotVUNfQ1BVID0gMG8wNAotVUNfTUFVID0gMG8xMAotVUNfRlBVID0gVUNfTUFVCi1VQ19JTlRSID0gMG8yMAotVUNfQVNSID0gMG80MAotVUNfTUNPTlRFWFQgPSAoVUNfQ1BVfFVDX0ZQVXxVQ19BU1IpCi1VQ19BTEwgPSAoVUNfU0lHTUFTS3xVQ19TVEFDS3xVQ19NQ09OVEVYVCkKLV9TSUdRVUVVRV9NQVggPSAzMgotX1NJR05PVElGWV9NQVggPSAzMgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3BjYi5oCi1JTlNUUl9WQUxJRCA9IDB4MDIKLU5PUk1BTF9TVEVQID0gMHgwNAotV0FUQ0hfU1RFUCA9IDB4MDgKLUNQQ19PVkVSRkxPVyA9IDB4MTAKLUFTWU5DX0hXRVJSID0gMHgyMAotU1RFUF9OT05FID0gMAotU1RFUF9SRVFVRVNURUQgPSAxCi1TVEVQX0FDVElWRSA9IDIKLVNURVBfV0FTQUNUSVZFID0gMwotCi0jIEluY2x1ZGVkIGZyb20gc3lzL21zYWNjdC5oCi1MTVNfVVNFUiA9IDAKLUxNU19TWVNURU0gPSAxCi1MTVNfVFJBUCA9IDIKLUxNU19URkFVTFQgPSAzCi1MTVNfREZBVUxUID0gNAotTE1TX0tGQVVMVCA9IDUKLUxNU19VU0VSX0xPQ0sgPSA2Ci1MTVNfU0xFRVAgPSA3Ci1MTVNfV0FJVF9DUFUgPSA4Ci1MTVNfU1RPUFBFRCA9IDkKLU5NU1RBVEVTID0gMTAKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9sd3AuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3N5bmNoLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLVVTWU5DX1RIUkVBRCA9IDB4MDAKLVVTWU5DX1BST0NFU1MgPSAweDAxCi1MT0NLX05PUk1BTCA9IDB4MDAKLUxPQ0tfRVJST1JDSEVDSyA9IDB4MDIKLUxPQ0tfUkVDVVJTSVZFID0gMHgwNAotVVNZTkNfUFJPQ0VTU19ST0JVU1QgPSAweDA4Ci1MT0NLX1BSSU9fTk9ORSA9IDB4MDAKLUxPQ0tfUFJJT19JTkhFUklUID0gMHgxMAotTE9DS19QUklPX1BST1RFQ1QgPSAweDIwCi1MT0NLX1NUQUxMX05QID0gMHgwMAotTE9DS19ST0JVU1RfTlAgPSAweDQwCi1MT0NLX09XTkVSREVBRCA9IDB4MQotTE9DS19OT1RSRUNPVkVSQUJMRSA9IDB4MgotTE9DS19JTklURUQgPSAweDQKLUxPQ0tfVU5NQVBQRUQgPSAweDgKLUxXUF9ERVRBQ0hFRCA9IDB4MDAwMDAwNDAKLUxXUF9TVVNQRU5ERUQgPSAweDAwMDAwMDgwCi1fX0xXUF9BU0xXUCA9IDB4MDAwMDAxMDAKLU1BWFNZU0FSR1MgPSA4Ci1OT1JNQUxSRVRVUk4gPSAwCi1KVVNUUkVUVVJOID0gMQotTFdQX1VTRVIgPSAweDAxCi1MV1BfU1lTID0gMHgwMgotVFNfRlJFRSA9IDB4MDAKLVRTX1NMRUVQID0gMHgwMQotVFNfUlVOID0gMHgwMgotVFNfT05QUk9DID0gMHgwNAotVFNfWk9NQiA9IDB4MDgKLVRTX1NUT1BQRUQgPSAweDEwCi1UX0lOVFJfVEhSRUFEID0gMHgwMDAxCi1UX1dBS0VBQkxFID0gMHgwMDAyCi1UX1RPTUFTSyA9IDB4MDAwNAotVF9UQUxMT0NTVEsgPSAweDAwMDgKLVRfV09VTERCTE9DSyA9IDB4MDAyMAotVF9ET05UQkxPQ0sgPSAweDAwNDAKLVRfRE9OVFBFTkQgPSAweDAwODAKLVRfU1lTX1BST0YgPSAweDAxMDAKLVRfV0FJVENWU0VNID0gMHgwMjAwCi1UX1dBVENIUFQgPSAweDA0MDAKLVRfUEFOSUMgPSAweDA4MDAKLVRQX0hPTERMV1AgPSAweDAwMDIKLVRQX1RXQUlUID0gMHgwMDA0Ci1UUF9MV1BFWElUID0gMHgwMDA4Ci1UUF9QUlNUT1AgPSAweDAwMTAKLVRQX0NIS1BUID0gMHgwMDIwCi1UUF9FWElUTFdQID0gMHgwMDQwCi1UUF9QUlZTVE9QID0gMHgwMDgwCi1UUF9NU0FDQ1QgPSAweDAxMDAKLVRQX1NUT1BQSU5HID0gMHgwMjAwCi1UUF9XQVRDSFBUID0gMHgwNDAwCi1UUF9QQVVTRSA9IDB4MDgwMAotVFBfQ0hBTkdFQklORCA9IDB4MTAwMAotVFNfTE9BRCA9IDB4MDAwMQotVFNfRE9OVF9TV0FQID0gMHgwMDAyCi1UU19TV0FQRU5RID0gMHgwMDA0Ci1UU19PTl9TV0FQUSA9IDB4MDAwOAotVFNfQ1NUQVJUID0gMHgwMTAwCi1UU19VTlBBVVNFID0gMHgwMjAwCi1UU19YU1RBUlQgPSAweDA0MDAKLVRTX1BTVEFSVCA9IDB4MDgwMAotVFNfUkVTVU1FID0gMHgxMDAwCi1UU19DUkVBVEUgPSAweDIwMDAKLVRTX0FMTFNUQVJUID0gXAotICAgICAgICAoVFNfQ1NUQVJUfFRTX1VOUEFVU0V8VFNfWFNUQVJUfFRTX1BTVEFSVHxUU19SRVNVTUV8VFNfQ1JFQVRFKQotZGVmIENQUl9WU1RPUFBFRCh0KTogcmV0dXJuIFwKLQotZGVmIFRIUkVBRF9UUkFOU0lUSU9OKHRwKTogcmV0dXJuIHRocmVhZF90cmFuc2l0aW9uKHRwKTsKLQotZGVmIFRIUkVBRF9TVE9QKHRwKTogcmV0dXJuIFwKLQotZGVmIFRIUkVBRF9aT01CKHRwKTogcmV0dXJuIFRIUkVBRF9TRVRfU1RBVEUodHAsIFRTX1pPTUIsIE5VTEwpCi0KLWRlZiBTRU1BX0hFTEQoeCk6IHJldHVybiAoc2VtYV9oZWxkKCh4KSkpCi0KLU5PX0xPQ0tTX0hFTEQgPSAxCi1OT19DT01QRVRJTkdfVEhSRUFEUyA9IDEKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9jcmVkLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy91aW8uaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3Jlc291cmNlLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLVBSSU9fUFJPQ0VTUyA9IDAKLVBSSU9fUEdSUCA9IDEKLVBSSU9fVVNFUiA9IDIKLVJMSU1JVF9DUFUgPSAwCi1STElNSVRfRlNJWkUgPSAxCi1STElNSVRfREFUQSA9IDIKLVJMSU1JVF9TVEFDSyA9IDMKLVJMSU1JVF9DT1JFID0gNAotUkxJTUlUX05PRklMRSA9IDUKLVJMSU1JVF9WTUVNID0gNgotUkxJTUlUX0FTID0gUkxJTUlUX1ZNRU0KLVJMSU1fTkxJTUlUUyA9IDcKLVJMSU1fSU5GSU5JVFkgPSAoLTMpCi1STElNX1NBVkVEX01BWCA9ICgtMikKLVJMSU1fU0FWRURfQ1VSID0gKC0xKQotUkxJTV9JTkZJTklUWSA9IDB4N2ZmZmZmZmYKLVJMSU1fU0FWRURfTUFYID0gMHg3ZmZmZmZmZQotUkxJTV9TQVZFRF9DVVIgPSAweDdmZmZmZmZkCi1STElNMzJfSU5GSU5JVFkgPSAweDdmZmZmZmZmCi1STElNMzJfU0FWRURfTUFYID0gMHg3ZmZmZmZmZQotUkxJTTMyX1NBVkVEX0NVUiA9IDB4N2ZmZmZmZmQKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9tb2RlbC5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvZGVidWcuaAotZGVmIEFTU0VSVDY0KHgpOiByZXR1cm4gQVNTRVJUKHgpCi0KLWRlZiBBU1NFUlQzMih4KTogcmV0dXJuIEFTU0VSVCh4KQotCi1EQVRBTU9ERUxfTUFTSyA9IDB4MEZGMDAwMDAKLURBVEFNT0RFTF9JTFAzMiA9IDB4MDAxMDAwMDAKLURBVEFNT0RFTF9MUDY0ID0gMHgwMDIwMDAwMAotREFUQU1PREVMX05PTkUgPSAwCi1EQVRBTU9ERUxfTkFUSVZFID0gREFUQU1PREVMX0xQNjQKLURBVEFNT0RFTF9OQVRJVkUgPSBEQVRBTU9ERUxfSUxQMzIKLWRlZiBTVFJVQ1RfU0laRShoYW5kbGUpOiByZXR1cm4gXAotCi1kZWYgU1RSVUNUX0JVRihoYW5kbGUpOiByZXR1cm4gKChoYW5kbGUpLnB0ci5tNjQpCi0KLWRlZiBTSVpFT0ZfUFRSKHVtb2RlbCk6IHJldHVybiBcCi0KLWRlZiBTVFJVQ1RfU0laRShoYW5kbGUpOiByZXR1cm4gKHNpemVvZiAoKihoYW5kbGUpLnB0cikpCi0KLWRlZiBTVFJVQ1RfQlVGKGhhbmRsZSk6IHJldHVybiAoKGhhbmRsZSkucHRyKQotCi1kZWYgU0laRU9GX1BUUih1bW9kZWwpOiByZXR1cm4gc2l6ZW9mIChjYWRkcl90KQotCi1kZWYgbHdwX2dldGRhdGFtb2RlbCh0KTogcmV0dXJuIERBVEFNT0RFTF9JTFAzMgotCi1SVVNBR0VfU0VMRiA9IDAKLVJVU0FHRV9DSElMRFJFTiA9IC0xCi0KLSMgSW5jbHVkZWQgZnJvbSB2bS9zZWdfZW51bS5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvYnVmLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9rc3RhdC5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi1LU1RBVF9TVFJMRU4gPSAzMQotZGVmIEtTVEFUX0VOVEVSKGspOiByZXR1cm4gXAotCi1kZWYgS1NUQVRfRVhJVChrKTogcmV0dXJuIFwKLQotS1NUQVRfVFlQRV9SQVcgPSAwCi1LU1RBVF9UWVBFX05BTUVEID0gMQotS1NUQVRfVFlQRV9JTlRSID0gMgotS1NUQVRfVFlQRV9JTyA9IDMKLUtTVEFUX1RZUEVfVElNRVIgPSA0Ci1LU1RBVF9OVU1fVFlQRVMgPSA1Ci1LU1RBVF9GTEFHX1ZJUlRVQUwgPSAweDAxCi1LU1RBVF9GTEFHX1ZBUl9TSVpFID0gMHgwMgotS1NUQVRfRkxBR19XUklUQUJMRSA9IDB4MDQKLUtTVEFUX0ZMQUdfUEVSU0lTVEVOVCA9IDB4MDgKLUtTVEFUX0ZMQUdfRE9STUFOVCA9IDB4MTAKLUtTVEFUX0ZMQUdfSU5WQUxJRCA9IDB4MjAKLUtTVEFUX1JFQUQgPSAwCi1LU1RBVF9XUklURSA9IDEKLUtTVEFUX0RBVEFfQ0hBUiA9IDAKLUtTVEFUX0RBVEFfSU5UMzIgPSAxCi1LU1RBVF9EQVRBX1VJTlQzMiA9IDIKLUtTVEFUX0RBVEFfSU5UNjQgPSAzCi1LU1RBVF9EQVRBX1VJTlQ2NCA9IDQKLUtTVEFUX0RBVEFfTE9ORyA9IEtTVEFUX0RBVEFfSU5UMzIKLUtTVEFUX0RBVEFfVUxPTkcgPSBLU1RBVF9EQVRBX1VJTlQzMgotS1NUQVRfREFUQV9MT05HID0gS1NUQVRfREFUQV9JTlQ2NAotS1NUQVRfREFUQV9VTE9ORyA9IEtTVEFUX0RBVEFfVUlOVDY0Ci1LU1RBVF9EQVRBX0xPTkcgPSA3Ci1LU1RBVF9EQVRBX1VMT05HID0gOAotS1NUQVRfREFUQV9MT05HTE9ORyA9IEtTVEFUX0RBVEFfSU5UNjQKLUtTVEFUX0RBVEFfVUxPTkdMT05HID0gS1NUQVRfREFUQV9VSU5UNjQKLUtTVEFUX0RBVEFfRkxPQVQgPSA1Ci1LU1RBVF9EQVRBX0RPVUJMRSA9IDYKLUtTVEFUX0lOVFJfSEFSRCA9IDAKLUtTVEFUX0lOVFJfU09GVCA9IDEKLUtTVEFUX0lOVFJfV0FUQ0hET0cgPSAyCi1LU1RBVF9JTlRSX1NQVVJJT1VTID0gMwotS1NUQVRfSU5UUl9NVUxUU1ZDID0gNAotS1NUQVRfTlVNX0lOVFJTID0gNQotQl9CVVNZID0gMHgwMDAxCi1CX0RPTkUgPSAweDAwMDIKLUJfRVJST1IgPSAweDAwMDQKLUJfUEFHRUlPID0gMHgwMDEwCi1CX1BIWVMgPSAweDAwMjAKLUJfUkVBRCA9IDB4MDA0MAotQl9XUklURSA9IDB4MDEwMAotQl9LRVJOQlVGID0gMHgwMDA4Ci1CX1dBTlRFRCA9IDB4MDA4MAotQl9BR0UgPSAweDAwMDIwMAotQl9BU1lOQyA9IDB4MDAwNDAwCi1CX0RFTFdSSSA9IDB4MDAwODAwCi1CX1NUQUxFID0gMHgwMDEwMDAKLUJfRE9OVE5FRUQgPSAweDAwMjAwMAotQl9SRU1BUFBFRCA9IDB4MDA0MDAwCi1CX0ZSRUUgPSAweDAwODAwMAotQl9JTlZBTCA9IDB4MDEwMDAwCi1CX0ZPUkNFID0gMHgwMjAwMDAKLUJfSEVBRCA9IDB4MDQwMDAwCi1CX05PQ0FDSEUgPSAweDA4MDAwMAotQl9UUlVOQyA9IDB4MTAwMDAwCi1CX1NIQURPVyA9IDB4MjAwMDAwCi1CX1JFVFJZV1JJID0gMHg0MDAwMDAKLWRlZiBub3RhdmFpbChicCk6IHJldHVybiBcCi0KLWRlZiBCV1JJVEUoYnApOiByZXR1cm4gXAotCi1kZWYgQldSSVRFMihicCk6IHJldHVybiBcCi0KLVZST09UID0gMHgwMQotVk5PQ0FDSEUgPSAweDAyCi1WTk9NQVAgPSAweDA0Ci1WRFVQID0gMHgwOAotVk5PU1dBUCA9IDB4MTAKLVZOT01PVU5UID0gMHgyMAotVklTU1dBUCA9IDB4NDAKLVZTV0FQTElLRSA9IDB4ODAKLVZWRlNMT0NLID0gMHgxMDAKLVZWRlNXQUlUID0gMHgyMDAKLVZWTUxPQ0sgPSAweDQwMAotVkRJUk9QRU4gPSAweDgwMAotVlZNRVhFQyA9IDB4MTAwMAotVlBYRlMgPSAweDIwMDAKLUFUX1RZUEUgPSAweDAwMDEKLUFUX01PREUgPSAweDAwMDIKLUFUX1VJRCA9IDB4MDAwNAotQVRfR0lEID0gMHgwMDA4Ci1BVF9GU0lEID0gMHgwMDEwCi1BVF9OT0RFSUQgPSAweDAwMjAKLUFUX05MSU5LID0gMHgwMDQwCi1BVF9TSVpFID0gMHgwMDgwCi1BVF9BVElNRSA9IDB4MDEwMAotQVRfTVRJTUUgPSAweDAyMDAKLUFUX0NUSU1FID0gMHgwNDAwCi1BVF9SREVWID0gMHgwODAwCi1BVF9CTEtTSVpFID0gMHgxMDAwCi1BVF9OQkxPQ0tTID0gMHgyMDAwCi1BVF9WQ09ERSA9IDB4NDAwMAotQVRfQUxMID0gKEFUX1RZUEV8QVRfTU9ERXxBVF9VSUR8QVRfR0lEfEFUX0ZTSUR8QVRfTk9ERUlEfFwKLSAgICAgICAgICAgICAgICAgICAgICAgIEFUX05MSU5LfEFUX1NJWkV8QVRfQVRJTUV8QVRfTVRJTUV8QVRfQ1RJTUV8XAotICAgICAgICAgICAgICAgICAgICAgICAgQVRfUkRFVnxBVF9CTEtTSVpFfEFUX05CTE9DS1N8QVRfVkNPREUpCi1BVF9TVEFUID0gKEFUX01PREV8QVRfVUlEfEFUX0dJRHxBVF9GU0lEfEFUX05PREVJRHxBVF9OTElOS3xcCi0gICAgICAgICAgICAgICAgICAgICAgICBBVF9TSVpFfEFUX0FUSU1FfEFUX01USU1FfEFUX0NUSU1FfEFUX1JERVYpCi1BVF9USU1FUyA9IChBVF9BVElNRXxBVF9NVElNRXxBVF9DVElNRSkKLUFUX05PU0VUID0gKEFUX05MSU5LfEFUX1JERVZ8QVRfRlNJRHxBVF9OT0RFSUR8QVRfVFlQRXxcCi0gICAgICAgICAgICAgICAgICAgICAgICBBVF9CTEtTSVpFfEFUX05CTE9DS1N8QVRfVkNPREUpCi1WU1VJRCA9IDBvNDAwMAotVlNHSUQgPSAwbzIwMDAKLVZTVlRYID0gMG8xMDAwCi1WUkVBRCA9IDBvMDQwMAotVldSSVRFID0gMG8wMjAwCi1WRVhFQyA9IDBvMDEwMAotTU9ERU1BU0sgPSAwbzc3NzcKLVBFUk1NQVNLID0gMG8wNzc3Ci1kZWYgTUFORE1PREUobW9kZSk6IHJldHVybiAoKChtb2RlKSAmIChWU0dJRHwoVkVYRUM+PjMpKSkgPT0gVlNHSUQpCi0KLVZTQV9BQ0wgPSAweDAwMDEKLVZTQV9BQ0xDTlQgPSAweDAwMDIKLVZTQV9ERkFDTCA9IDB4MDAwNAotVlNBX0RGQUNMQ05UID0gMHgwMDA4Ci1MT09LVVBfRElSID0gMHgwMQotRFVNUF9BTExPQyA9IDAKLURVTVBfRlJFRSA9IDEKLURVTVBfU0NBTiA9IDIKLUFUVFJfVVRJTUUgPSAweDAxCi1BVFRSX0VYRUMgPSAweDAyCi1BVFRSX0NPTU0gPSAweDA0Ci1BVFRSX0hJTlQgPSAweDA4Ci1BVFRSX1JFQUwgPSAweDEwCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvcG9sbC5oCi1QT0xMSU4gPSAweDAwMDEKLVBPTExQUkkgPSAweDAwMDIKLVBPTExPVVQgPSAweDAwMDQKLVBPTExSRE5PUk0gPSAweDAwNDAKLVBPTExXUk5PUk0gPSBQT0xMT1VUCi1QT0xMUkRCQU5EID0gMHgwMDgwCi1QT0xMV1JCQU5EID0gMHgwMTAwCi1QT0xMTk9STSA9IFBPTExSRE5PUk0KLVBPTExFUlIgPSAweDAwMDgKLVBPTExIVVAgPSAweDAwMTAKLVBPTExOVkFMID0gMHgwMDIwCi1QT0xMUkVNT1ZFID0gMHgwODAwCi1QT0xMUkREQVRBID0gMHgwMjAwCi1QT0xMTk9FUlIgPSAweDA0MDAKLVBPTExDTE9TRUQgPSAweDgwMDAKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9zdHJtZGVwLmgKLWRlZiBzdHJfYWxpZ25lZChYKTogcmV0dXJuICgoKHVsb25nX3QpKFgpICYgKHNpemVvZiAoaW50KSAtIDEpKSA9PSAwKQotCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvc3RyZnQuaAotdGRlbHRhX3Rfc3ogPSAxMgotRlRFVl9NQVNLID0gMHgxRkZGCi1GVEVWX0lTV1IgPSAweDgwMDAKLUZURVZfQ1MgPSAweDQwMDAKLUZURVZfUFMgPSAweDIwMDAKLUZURVZfUU1BU0sgPSAweDFGMDAKLUZURVZfQUxMT0NNQVNLID0gMHgxRkY4Ci1GVEVWX0FMTE9DQiA9IDB4MDAwMAotRlRFVl9FU0JBTExPQyA9IDB4MDAwMQotRlRFVl9ERVNCQUxMT0MgPSAweDAwMDIKLUZURVZfRVNCQUxMT0NBID0gMHgwMDAzCi1GVEVWX0RFU0JBTExPQ0EgPSAweDAwMDQKLUZURVZfQUxMT0NCSUcgPSAweDAwMDUKLUZURVZfQUxMT0NCVyA9IDB4MDAwNgotRlRFVl9GUkVFQiA9IDB4MDAwOAotRlRFVl9EVVBCID0gMHgwMDA5Ci1GVEVWX0NPUFlCID0gMHgwMDBBCi1GVEVWX0NBTExFUiA9IDB4MDAwRgotRlRFVl9QVVQgPSAweDAxMDAKLUZURVZfRlNZTkNRID0gMHgwMTAzCi1GVEVWX0RTWU5DUSA9IDB4MDEwNAotRlRFVl9QVVRRID0gMHgwMTA1Ci1GVEVWX0dFVFEgPSAweDAxMDYKLUZURVZfUk1WUSA9IDB4MDEwNwotRlRFVl9JTlNRID0gMHgwMTA4Ci1GVEVWX1BVVEJRID0gMHgwMTA5Ci1GVEVWX0ZMVVNIUSA9IDB4MDEwQQotRlRFVl9SRVBMWVEgPSAweDAxMEIKLUZURVZfUFVUTkVYVCA9IDB4MDEwRAotRlRFVl9SV05FWFQgPSAweDAxMEUKLUZURVZfUVdJTk5FUiA9IDB4MDEwRgotRlRFVl9HRVdSSVRFID0gMHgwMTAxCi1kZWYgRlRGTFdfSEFTSChoKTogcmV0dXJuICgoKHVuc2lnbmVkKShoKSklZnRmbHdfaGFzaF9zeikKLQotRlRCTEtfRVZOVFMgPSAweDkKLVFFTkFCID0gMHgwMDAwMDAwMQotUVdBTlRSID0gMHgwMDAwMDAwMgotUVdBTlRXID0gMHgwMDAwMDAwNAotUUZVTEwgPSAweDAwMDAwMDA4Ci1RUkVBRFIgPSAweDAwMDAwMDEwCi1RVVNFID0gMHgwMDAwMDAyMAotUU5PRU5CID0gMHgwMDAwMDA0MAotUUJBQ0sgPSAweDAwMDAwMTAwCi1RSExJU1QgPSAweDAwMDAwMjAwCi1RUEFJUiA9IDB4MDAwMDA4MDAKLVFQRVJRID0gMHgwMDAwMTAwMAotUVBFUk1PRCA9IDB4MDAwMDIwMDAKLVFNVFNBRkUgPSAweDAwMDA0MDAwCi1RTVRPVVRQRVJJTSA9IDB4MDAwMDgwMDAKLVFNVF9UWVBFTUFTSyA9IChRUEFJUnxRUEVSUXxRUEVSTU9EfFFNVFNBRkV8UU1UT1VUUEVSSU0pCi1RSU5TRVJWSUNFID0gMHgwMDAxMDAwMAotUVdDTE9TRSA9IDB4MDAwMjAwMDAKLVFFTkQgPSAweDAwMDQwMDAwCi1RV0FOVFdTWU5DID0gMHgwMDA4MDAwMAotUVNZTkNTVFIgPSAweDAwMTAwMDAwCi1RSVNEUlYgPSAweDAwMjAwMDAwCi1RSE9UID0gMHgwMDQwMDAwMAotUU5FWFRIT1QgPSAweDAwODAwMDAwCi1fUUlOU0VSVElORyA9IDB4MDQwMDAwMDAKLV9RUkVNT1ZJTkcgPSAweDA4MDAwMDAwCi1RX1NRUVVFVUVEID0gMHgwMQotUV9TUURSQUlOSU5HID0gMHgwMgotUUJfRlVMTCA9IDB4MDEKLVFCX1dBTlRXID0gMHgwMgotUUJfQkFDSyA9IDB4MDQKLU5CQU5EID0gMjU2Ci1TVFJVSU9UX05PTkUgPSAtMQotU1RSVUlPVF9ET05UQ0FSRSA9IDAKLVNUUlVJT1RfU1RBTkRBUkQgPSAxCi1TVFJVSU9UX0lQID0gMgotREJMS19SRUZNSU4gPSAweDAxCi1TVFJVSU9fU1BFQyA9IDB4MDEKLVNUUlVJT19ET05FID0gMHgwMgotU1RSVUlPX0lQID0gMHgwNAotU1RSVUlPX1pDID0gMHgwOAotU1RSVUlPX0lDSyA9IDB4MTAKLU1TR01BUksgPSAweDAxCi1NU0dOT0xPT1AgPSAweDAyCi1NU0dERUxJTSA9IDB4MDQKLU1TR05PR0VUID0gMHgwOAotTVNHTUFSS05FWFQgPSAweDEwCi1NU0dOT1RNQVJLTkVYVCA9IDB4MjAKLU1fREFUQSA9IDB4MDAKLU1fUFJPVE8gPSAweDAxCi1NX0JSRUFLID0gMHgwOAotTV9QQVNTRlAgPSAweDA5Ci1NX0VWRU5UID0gMHgwYQotTV9TSUcgPSAweDBiCi1NX0RFTEFZID0gMHgwYwotTV9DVEwgPSAweDBkCi1NX0lPQ1RMID0gMHgwZQotTV9TRVRPUFRTID0gMHgxMAotTV9SU0UgPSAweDExCi1NX0lPQ0FDSyA9IDB4ODEKLU1fSU9DTkFLID0gMHg4MgotTV9QQ1BST1RPID0gMHg4MwotTV9QQ1NJRyA9IDB4ODQKLU1fUkVBRCA9IDB4ODUKLU1fRkxVU0ggPSAweDg2Ci1NX1NUT1AgPSAweDg3Ci1NX1NUQVJUID0gMHg4OAotTV9IQU5HVVAgPSAweDg5Ci1NX0VSUk9SID0gMHg4YQotTV9DT1BZSU4gPSAweDhiCi1NX0NPUFlPVVQgPSAweDhjCi1NX0lPQ0RBVEEgPSAweDhkCi1NX1BDUlNFID0gMHg4ZQotTV9TVE9QSSA9IDB4OGYKLU1fU1RBUlRJID0gMHg5MAotTV9QQ0VWRU5UID0gMHg5MQotTV9VTkhBTkdVUCA9IDB4OTIKLVFOT1JNID0gMHgwMAotUVBDVEwgPSAweDgwCi1JT0NfTU9ERUxTID0gREFUQU1PREVMX01BU0sKLUlPQ19JTFAzMiA9IERBVEFNT0RFTF9JTFAzMgotSU9DX0xQNjQgPSBEQVRBTU9ERUxfTFA2NAotSU9DX05BVElWRSA9IERBVEFNT0RFTF9OQVRJVkUKLUlPQ19OT05FID0gREFUQU1PREVMX05PTkUKLVNUUkNBTk9OID0gMHgwMQotUkVDT1BZID0gMHgwMgotU09fQUxMID0gMHgwMDNmCi1TT19SRUFET1BUID0gMHgwMDAxCi1TT19XUk9GRiA9IDB4MDAwMgotU09fTUlOUFNaID0gMHgwMDA0Ci1TT19NQVhQU1ogPSAweDAwMDgKLVNPX0hJV0FUID0gMHgwMDEwCi1TT19MT1dBVCA9IDB4MDAyMAotU09fTVJFQURPTiA9IDB4MDA0MAotU09fTVJFQURPRkYgPSAweDAwODAKLVNPX05ERUxPTiA9IDB4MDEwMAotU09fTkRFTE9GRiA9IDB4MDIwMAotU09fSVNUVFkgPSAweDA0MDAKLVNPX0lTTlRUWSA9IDB4MDgwMAotU09fVE9TVE9QID0gMHgxMDAwCi1TT19UT05TVE9QID0gMHgyMDAwCi1TT19CQU5EID0gMHg0MDAwCi1TT19ERUxJTSA9IDB4ODAwMAotU09fTk9ERUxJTSA9IDB4MDEwMDAwCi1TT19TVFJIT0xEID0gMHgwMjAwMDAKLVNPX0VSUk9QVCA9IDB4MDQwMDAwCi1TT19DT1BZT1BUID0gMHgwODAwMDAKLVNPX01BWEJMSyA9IDB4MTAwMDAwCi1ERUZfSU9WX01BWCA9IDE2Ci1JTkZPRF9GSVJTVEJZVEVTID0gMHgwMgotSU5GT0RfQllURVMgPSAweDA0Ci1JTkZPRF9DT1VOVCA9IDB4MDgKLUlORk9EX0NPUFlPVVQgPSAweDEwCi1NT0RPUEVOID0gMHgxCi1DTE9ORU9QRU4gPSAweDIKLUNPTlNPUEVOID0gMHg0Ci1PUEVORkFJTCA9IC0xCi1CUFJJX0xPID0gMQotQlBSSV9NRUQgPSAyCi1CUFJJX0hJID0gMwotQlBSSV9GVCA9IDQKLUlORlBTWiA9IC0xCi1GTFVTSEFMTCA9IDEKLUZMVVNIREFUQSA9IDAKLVNUUkhJR0ggPSA1MTIwCi1TVFJMT1cgPSAxMDI0Ci1NQVhJT0NCU1ogPSAxMDI0Ci1QRVJJTV9JTk5FUiA9IDEKLVBFUklNX09VVEVSID0gMgotZGVmIGRhdGFtc2codHlwZSk6IHJldHVybiBcCi0KLWRlZiBzdHJhbG4oYSk6IHJldHVybiAoY2FkZHJfdCkoKGludHB0cl90KShhKSAmIH4oc2l6ZW9mIChpbnQpLTEpKQotCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvYnl0ZW9yZGVyLmgKLWRlZiBudG9obCh4KTogcmV0dXJuICh4KQotCi1kZWYgbnRvaHMoeCk6IHJldHVybiAoeCkKLQotZGVmIGh0b25sKHgpOiByZXR1cm4gKHgpCi0KLWRlZiBodG9ucyh4KTogcmV0dXJuICh4KQotCi1JUFBST1RPX0lQID0gMAotSVBQUk9UT19IT1BPUFRTID0gMAotSVBQUk9UT19JQ01QID0gMQotSVBQUk9UT19JR01QID0gMgotSVBQUk9UT19HR1AgPSAzCi1JUFBST1RPX0VOQ0FQID0gNAotSVBQUk9UT19UQ1AgPSA2Ci1JUFBST1RPX0VHUCA9IDgKLUlQUFJPVE9fUFVQID0gMTIKLUlQUFJPVE9fVURQID0gMTcKLUlQUFJPVE9fSURQID0gMjIKLUlQUFJPVE9fSVBWNiA9IDQxCi1JUFBST1RPX1JPVVRJTkcgPSA0MwotSVBQUk9UT19GUkFHTUVOVCA9IDQ0Ci1JUFBST1RPX1JTVlAgPSA0NgotSVBQUk9UT19FU1AgPSA1MAotSVBQUk9UT19BSCA9IDUxCi1JUFBST1RPX0lDTVBWNiA9IDU4Ci1JUFBST1RPX05PTkUgPSA1OQotSVBQUk9UT19EU1RPUFRTID0gNjAKLUlQUFJPVE9fSEVMTE8gPSA2MwotSVBQUk9UT19ORCA9IDc3Ci1JUFBST1RPX0VPTiA9IDgwCi1JUFBST1RPX1BJTSA9IDEwMwotSVBQUk9UT19SQVcgPSAyNTUKLUlQUFJPVE9fTUFYID0gMjU2Ci1JUFBPUlRfRUNITyA9IDcKLUlQUE9SVF9ESVNDQVJEID0gOQotSVBQT1JUX1NZU1RBVCA9IDExCi1JUFBPUlRfREFZVElNRSA9IDEzCi1JUFBPUlRfTkVUU1RBVCA9IDE1Ci1JUFBPUlRfRlRQID0gMjEKLUlQUE9SVF9URUxORVQgPSAyMwotSVBQT1JUX1NNVFAgPSAyNQotSVBQT1JUX1RJTUVTRVJWRVIgPSAzNwotSVBQT1JUX05BTUVTRVJWRVIgPSA0MgotSVBQT1JUX1dIT0lTID0gNDMKLUlQUE9SVF9NVFAgPSA1NwotSVBQT1JUX0JPT1RQUyA9IDY3Ci1JUFBPUlRfQk9PVFBDID0gNjgKLUlQUE9SVF9URlRQID0gNjkKLUlQUE9SVF9SSkUgPSA3NwotSVBQT1JUX0ZJTkdFUiA9IDc5Ci1JUFBPUlRfVFRZTElOSyA9IDg3Ci1JUFBPUlRfU1VQRFVQID0gOTUKLUlQUE9SVF9FWEVDU0VSVkVSID0gNTEyCi1JUFBPUlRfTE9HSU5TRVJWRVIgPSA1MTMKLUlQUE9SVF9DTURTRVJWRVIgPSA1MTQKLUlQUE9SVF9FRlNTRVJWRVIgPSA1MjAKLUlQUE9SVF9CSUZGVURQID0gNTEyCi1JUFBPUlRfV0hPU0VSVkVSID0gNTEzCi1JUFBPUlRfUk9VVEVTRVJWRVIgPSA1MjAKLUlQUE9SVF9SRVNFUlZFRCA9IDEwMjQKLUlQUE9SVF9VU0VSUkVTRVJWRUQgPSA1MDAwCi1JTVBMSU5LX0lQID0gMTU1Ci1JTVBMSU5LX0xPV0VYUEVSID0gMTU2Ci1JTVBMSU5LX0hJR0hFWFBFUiA9IDE1OAotSU5fQ0xBU1NBX05TSElGVCA9IDI0Ci1JTl9DTEFTU0FfTUFYID0gMTI4Ci1JTl9DTEFTU0JfTlNISUZUID0gMTYKLUlOX0NMQVNTQl9NQVggPSA2NTUzNgotSU5fQ0xBU1NDX05TSElGVCA9IDgKLUlOX0NMQVNTRF9OU0hJRlQgPSAyOAotZGVmIElOX01VTFRJQ0FTVChpKTogcmV0dXJuIElOX0NMQVNTRChpKQotCi1JTl9MT09QQkFDS05FVCA9IDEyNwotZGVmIElOX1NFVF9MT09QQkFDS19BRERSKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfVU5TUEVDSUZJRUQoYWRkcik6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9MT09QQkFDSyhhZGRyKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX0xPT1BCQUNLKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTVVMVElDQVNUKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTVVMVElDQVNUKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTElOS0xPQ0FMKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTElOS0xPQ0FMKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfU0lURUxPQ0FMKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfU0lURUxPQ0FMKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfVjRNQVBQRUQoYWRkcik6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9WNE1BUFBFRChhZGRyKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1Y0TUFQUEVEX0FOWShhZGRyKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1Y0TUFQUEVEX0FOWShhZGRyKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1Y0Q09NUEFUKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfVjRDT01QQVQoYWRkcik6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19SRVNFUlZFRChhZGRyKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX1JFU0VSVkVEKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTk9ERUxPQ0FMKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTk9ERUxPQ0FMKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTElOS0xPQ0FMKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTElOS0xPQ0FMKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfU0lURUxPQ0FMKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfU0lURUxPQ0FMKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfT1JHTE9DQUwoYWRkcik6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19PUkdMT0NBTChhZGRyKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0dMT0JBTChhZGRyKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0dMT0JBTChhZGRyKTogcmV0dXJuIFwKLQotSVBfT1BUSU9OUyA9IDEKLUlQX0hEUklOQ0wgPSAyCi1JUF9UT1MgPSAzCi1JUF9UVEwgPSA0Ci1JUF9SRUNWT1BUUyA9IDUKLUlQX1JFQ1ZSRVRPUFRTID0gNgotSVBfUkVDVkRTVEFERFIgPSA3Ci1JUF9SRVRPUFRTID0gOAotSVBfTVVMVElDQVNUX0lGID0gMHgxMAotSVBfTVVMVElDQVNUX1RUTCA9IDB4MTEKLUlQX01VTFRJQ0FTVF9MT09QID0gMHgxMgotSVBfQUREX01FTUJFUlNISVAgPSAweDEzCi1JUF9EUk9QX01FTUJFUlNISVAgPSAweDE0Ci1JUF9TRUNfT1BUID0gMHgyMgotSVBTRUNfUFJFRl9ORVZFUiA9IDB4MDEKLUlQU0VDX1BSRUZfUkVRVUlSRUQgPSAweDAyCi1JUFNFQ19QUkVGX1VOSVFVRSA9IDB4MDQKLUlQX0FERF9QUk9YWV9BRERSID0gMHg0MAotSVBfQk9VTkRfSUYgPSAweDQxCi1JUF9VTlNQRUNfU1JDID0gMHg0MgotSVBfUkVVU0VBRERSID0gMHgxMDQKLUlQX0RPTlRST1VURSA9IDB4MTA1Ci1JUF9CUk9BRENBU1QgPSAweDEwNgotSVBfREVGQVVMVF9NVUxUSUNBU1RfVFRMID0gMQotSVBfREVGQVVMVF9NVUxUSUNBU1RfTE9PUCA9IDEKLUlQVjZfUlRIRFJfVFlQRV8wID0gMAotSVBWNl9VTklDQVNUX0hPUFMgPSAweDUKLUlQVjZfTVVMVElDQVNUX0lGID0gMHg2Ci1JUFY2X01VTFRJQ0FTVF9IT1BTID0gMHg3Ci1JUFY2X01VTFRJQ0FTVF9MT09QID0gMHg4Ci1JUFY2X0pPSU5fR1JPVVAgPSAweDkKLUlQVjZfTEVBVkVfR1JPVVAgPSAweGEKLUlQVjZfQUREX01FTUJFUlNISVAgPSAweDkKLUlQVjZfRFJPUF9NRU1CRVJTSElQID0gMHhhCi1JUFY2X1BLVElORk8gPSAweGIKLUlQVjZfSE9QTElNSVQgPSAweGMKLUlQVjZfTkVYVEhPUCA9IDB4ZAotSVBWNl9IT1BPUFRTID0gMHhlCi1JUFY2X0RTVE9QVFMgPSAweGYKLUlQVjZfUlRIRFIgPSAweDEwCi1JUFY2X1JUSERSRFNUT1BUUyA9IDB4MTEKLUlQVjZfUkVDVlBLVElORk8gPSAweDEyCi1JUFY2X1JFQ1ZIT1BMSU1JVCA9IDB4MTMKLUlQVjZfUkVDVkhPUE9QVFMgPSAweDE0Ci1JUFY2X1JFQ1ZEU1RPUFRTID0gMHgxNQotSVBWNl9SRUNWUlRIRFIgPSAweDE2Ci1JUFY2X1JFQ1ZSVEhEUkRTVE9QVFMgPSAweDE3Ci1JUFY2X0NIRUNLU1VNID0gMHgxOAotSVBWNl9CT1VORF9JRiA9IDB4NDEKLUlQVjZfVU5TUEVDX1NSQyA9IDB4NDIKLUlORVRfQUREUlNUUkxFTiA9IDE2Ci1JTkVUNl9BRERSU1RSTEVOID0gNDYKLUlQVjZfUEFEMV9PUFQgPSAwCmRpZmYgLS1naXQgYS9MaWIvcGxhdC1zdW5vczUvU1RST1BUUy5weSBiL0xpYi9wbGF0LXN1bm9zNS9TVFJPUFRTLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZjczNWM0Li4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LXN1bm9zNS9TVFJPUFRTLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTgxMyArMCwwIEBACi0jIEdlbmVyYXRlZCBieSBoMnB5IGZyb20gL3Vzci9pbmNsdWRlL3N5cy9zdHJvcHRzLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9mZWF0dXJlX3Rlc3RzLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9pc2FfZGVmcy5oCi1fQ0hBUl9BTElHTk1FTlQgPSAxCi1fU0hPUlRfQUxJR05NRU5UID0gMgotX0lOVF9BTElHTk1FTlQgPSA0Ci1fTE9OR19BTElHTk1FTlQgPSA4Ci1fTE9OR19MT05HX0FMSUdOTUVOVCA9IDgKLV9ET1VCTEVfQUxJR05NRU5UID0gOAotX0xPTkdfRE9VQkxFX0FMSUdOTUVOVCA9IDE2Ci1fUE9JTlRFUl9BTElHTk1FTlQgPSA4Ci1fTUFYX0FMSUdOTUVOVCA9IDE2Ci1fQUxJR05NRU5UX1JFUVVJUkVEID0gMQotX0NIQVJfQUxJR05NRU5UID0gMQotX1NIT1JUX0FMSUdOTUVOVCA9IDIKLV9JTlRfQUxJR05NRU5UID0gNAotX0xPTkdfQUxJR05NRU5UID0gNAotX0xPTkdfTE9OR19BTElHTk1FTlQgPSA0Ci1fRE9VQkxFX0FMSUdOTUVOVCA9IDQKLV9MT05HX0RPVUJMRV9BTElHTk1FTlQgPSA0Ci1fUE9JTlRFUl9BTElHTk1FTlQgPSA0Ci1fTUFYX0FMSUdOTUVOVCA9IDQKLV9BTElHTk1FTlRfUkVRVUlSRUQgPSAwCi1fQ0hBUl9BTElHTk1FTlQgPSAxCi1fU0hPUlRfQUxJR05NRU5UID0gMgotX0lOVF9BTElHTk1FTlQgPSA0Ci1fTE9OR19MT05HX0FMSUdOTUVOVCA9IDgKLV9ET1VCTEVfQUxJR05NRU5UID0gOAotX0FMSUdOTUVOVF9SRVFVSVJFRCA9IDEKLV9MT05HX0FMSUdOTUVOVCA9IDQKLV9MT05HX0RPVUJMRV9BTElHTk1FTlQgPSA4Ci1fUE9JTlRFUl9BTElHTk1FTlQgPSA0Ci1fTUFYX0FMSUdOTUVOVCA9IDgKLV9MT05HX0FMSUdOTUVOVCA9IDgKLV9MT05HX0RPVUJMRV9BTElHTk1FTlQgPSAxNgotX1BPSU5URVJfQUxJR05NRU5UID0gOAotX01BWF9BTElHTk1FTlQgPSAxNgotX1BPU0lYX0NfU09VUkNFID0gMQotX0xBUkdFRklMRTY0X1NPVVJDRSA9IDEKLV9MQVJHRUZJTEVfU09VUkNFID0gMQotX0ZJTEVfT0ZGU0VUX0JJVFMgPSA2NAotX0ZJTEVfT0ZGU0VUX0JJVFMgPSAzMgotX1BPU0lYX0NfU09VUkNFID0gMTk5NTA2Ci1fUE9TSVhfUFRIUkVBRF9TRU1BTlRJQ1MgPSAxCi1fWE9QRU5fVkVSU0lPTiA9IDUwMAotX1hPUEVOX1ZFUlNJT04gPSA0Ci1fWE9QRU5fVkVSU0lPTiA9IDMKLWZyb20gVFlQRVMgaW1wb3J0ICoKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9jb25mLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy90X2xvY2suaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL21hY2hsb2NrLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLUxPQ0tfSEVMRF9WQUxVRSA9IDB4ZmYKLWRlZiBTUElOX0xPQ0socGwpOiByZXR1cm4gKChwbCkgPiBpcGx0b3NwbChMT0NLX0xFVkVMKSkKLQotZGVmIExPQ0tfU0FNUExFX0lOVEVSVkFMKGkpOiByZXR1cm4gKCgoaSkgJiAweGZmKSA9PSAwKQotCi1DTE9DS19MRVZFTCA9IDEwCi1MT0NLX0xFVkVMID0gMTAKLURJU1BfTEVWRUwgPSAoTE9DS19MRVZFTCArIDEpCi1QVFIyNF9MU0IgPSA1Ci1QVFIyNF9NU0IgPSAoUFRSMjRfTFNCICsgMjQpCi1QVFIyNF9BTElHTiA9IDMyCi1QVFIyNF9CQVNFID0gMHhlMDAwMDAwMAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3BhcmFtLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLV9QT1NJWF9WRElTQUJMRSA9IDAKLU1BWF9JTlBVVCA9IDUxMgotTUFYX0NBTk9OID0gMjU2Ci1VSURfTk9CT0RZID0gNjAwMDEKLUdJRF9OT0JPRFkgPSBVSURfTk9CT0RZCi1VSURfTk9BQ0NFU1MgPSA2MDAwMgotTUFYX1RBU0tJRCA9IDk5OTk5OQotTUFYX01BWFBJRCA9IDk5OTk5OQotREVGQVVMVF9NQVhQSUQgPSA5OTk5OTkKLURFRkFVTFRfSlVNUFBJRCA9IDEwMDAwMAotREVGQVVMVF9NQVhQSUQgPSAzMDAwMAotREVGQVVMVF9KVU1QUElEID0gMAotTUFYVUlEID0gMjE0NzQ4MzY0NwotTUFYUFJPSklEID0gTUFYVUlECi1NQVhMSU5LID0gMzI3NjcKLU5NT1VOVCA9IDQwCi1DQU5CU0laID0gMjU2Ci1OT0ZJTEUgPSAyMAotTkdST1VQU19VTUlOID0gMAotTkdST1VQU19VTUFYID0gMzIKLU5HUk9VUFNfTUFYX0RFRkFVTFQgPSAxNgotTlpFUk8gPSAyMAotTlVMTCA9IDAKLU5VTEwgPSAwCi1DTUFTSyA9IDBvMjIKLUNETElNSVQgPSAoMTw8MTEpCi1OQlBTID0gMHgyMDAwMAotTkJQU0NUUiA9IDUxMgotVUJTSVpFID0gNTEyCi1TQ1RSU0hGVCA9IDkKLVNZU05BTUUgPSA5Ci1QUkVNT1RFID0gMzkKLU1BWFBBVEhMRU4gPSAxMDI0Ci1NQVhTWU1MSU5LUyA9IDIwCi1NQVhOQU1FTEVOID0gMjU2Ci1OQUREUiA9IDEzCi1QSVBFX0JVRiA9IDUxMjAKLVBJUEVfTUFYID0gNTEyMAotTkJCWSA9IDgKLU1BWEJTSVpFID0gODE5MgotREVWX0JTSVpFID0gNTEyCi1ERVZfQlNISUZUID0gOQotTUFYRlJBRyA9IDgKLU1BWE9GRjMyX1QgPSAweDdmZmZmZmZmCi1NQVhPRkZfVCA9IDB4N2ZmZmZmZmZmZmZmZmZmZgotTUFYT0ZGU0VUX1QgPSAweDdmZmZmZmZmZmZmZmZmZmYKLU1BWE9GRl9UID0gMHg3ZmZmZmZmZgotTUFYT0ZGU0VUX1QgPSAweDdmZmZmZmZmCi1kZWYgYnRvZGIoYnl0ZXMpOiByZXR1cm4gICBcCi0KLWRlZiBkYnRvYihkYik6IHJldHVybiAgIFwKLQotZGVmIGxidG9kYihieXRlcyk6IHJldHVybiAgIFwKLQotZGVmIGxkYnRvYihkYik6IHJldHVybiAgIFwKLQotTkNBUkdTMzIgPSAweDEwMDAwMAotTkNBUkdTNjQgPSAweDIwMDAwMAotTkNBUkdTID0gTkNBUkdTNjQKLU5DQVJHUyA9IE5DQVJHUzMyCi1GU0hJRlQgPSA4Ci1GU0NBTEUgPSAoMTw8RlNISUZUKQotZGVmIERFTEFZKG4pOiByZXR1cm4gZHJ2X3VzZWN3YWl0KG4pCi0KLWRlZiBtbXVfcHRvYih4KTogcmV0dXJuICgoeCkgPDwgTU1VX1BBR0VTSElGVCkKLQotZGVmIG1tdV9idG9wKHgpOiByZXR1cm4gKCgoeCkpID4+IE1NVV9QQUdFU0hJRlQpCi0KLWRlZiBtbXVfYnRvcHIoeCk6IHJldHVybiAoKCgoeCkgKyBNTVVfUEFHRU9GRlNFVCkgPj4gTU1VX1BBR0VTSElGVCkpCi0KLWRlZiBtbXVfcHRvZCh4KTogcmV0dXJuICgoeCkgPDwgKE1NVV9QQUdFU0hJRlQgLSBERVZfQlNISUZUKSkKLQotZGVmIHB0b2QoeCk6IHJldHVybiAoKHgpIDw8IChQQUdFU0hJRlQgLSBERVZfQlNISUZUKSkKLQotZGVmIHB0b2IoeCk6IHJldHVybiAoKHgpIDw8IFBBR0VTSElGVCkKLQotZGVmIGJ0b3AoeCk6IHJldHVybiAoKCh4KSA+PiBQQUdFU0hJRlQpKQotCi1kZWYgYnRvcHIoeCk6IHJldHVybiAoKCgoeCkgKyBQQUdFT0ZGU0VUKSA+PiBQQUdFU0hJRlQpKQotCi1kZWYgZHRvcChERCk6IHJldHVybiAoKChERCkgKyBORFBQIC0gMSkgPj4gKFBBR0VTSElGVCAtIERFVl9CU0hJRlQpKQotCi1kZWYgZHRvcHQoREQpOiByZXR1cm4gKChERCkgPj4gKFBBR0VTSElGVCAtIERFVl9CU0hJRlQpKQotCi1fQUlPX0xJU1RJT19NQVggPSAoNDA5NikKLV9BSU9fTUFYID0gKC0xKQotX01RX09QRU5fTUFYID0gKDMyKQotX01RX1BSSU9fTUFYID0gKDMyKQotX1NFTV9OU0VNU19NQVggPSBJTlRfTUFYCi1fU0VNX1ZBTFVFX01BWCA9IElOVF9NQVgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy91bmlzdGQuaAotX0NTX1BBVEggPSA2NQotX0NTX0xGU19DRkxBR1MgPSA2OAotX0NTX0xGU19MREZMQUdTID0gNjkKLV9DU19MRlNfTElCUyA9IDcwCi1fQ1NfTEZTX0xJTlRGTEFHUyA9IDcxCi1fQ1NfTEZTNjRfQ0ZMQUdTID0gNzIKLV9DU19MRlM2NF9MREZMQUdTID0gNzMKLV9DU19MRlM2NF9MSUJTID0gNzQKLV9DU19MRlM2NF9MSU5URkxBR1MgPSA3NQotX0NTX1hCUzVfSUxQMzJfT0ZGMzJfQ0ZMQUdTID0gNzAwCi1fQ1NfWEJTNV9JTFAzMl9PRkYzMl9MREZMQUdTID0gNzAxCi1fQ1NfWEJTNV9JTFAzMl9PRkYzMl9MSUJTID0gNzAyCi1fQ1NfWEJTNV9JTFAzMl9PRkYzMl9MSU5URkxBR1MgPSA3MDMKLV9DU19YQlM1X0lMUDMyX09GRkJJR19DRkxBR1MgPSA3MDUKLV9DU19YQlM1X0lMUDMyX09GRkJJR19MREZMQUdTID0gNzA2Ci1fQ1NfWEJTNV9JTFAzMl9PRkZCSUdfTElCUyA9IDcwNwotX0NTX1hCUzVfSUxQMzJfT0ZGQklHX0xJTlRGTEFHUyA9IDcwOAotX0NTX1hCUzVfTFA2NF9PRkY2NF9DRkxBR1MgPSA3MDkKLV9DU19YQlM1X0xQNjRfT0ZGNjRfTERGTEFHUyA9IDcxMAotX0NTX1hCUzVfTFA2NF9PRkY2NF9MSUJTID0gNzExCi1fQ1NfWEJTNV9MUDY0X09GRjY0X0xJTlRGTEFHUyA9IDcxMgotX0NTX1hCUzVfTFBCSUdfT0ZGQklHX0NGTEFHUyA9IDcxMwotX0NTX1hCUzVfTFBCSUdfT0ZGQklHX0xERkxBR1MgPSA3MTQKLV9DU19YQlM1X0xQQklHX09GRkJJR19MSUJTID0gNzE1Ci1fQ1NfWEJTNV9MUEJJR19PRkZCSUdfTElOVEZMQUdTID0gNzE2Ci1fU0NfQVJHX01BWCA9IDEKLV9TQ19DSElMRF9NQVggPSAyCi1fU0NfQ0xLX1RDSyA9IDMKLV9TQ19OR1JPVVBTX01BWCA9IDQKLV9TQ19PUEVOX01BWCA9IDUKLV9TQ19KT0JfQ09OVFJPTCA9IDYKLV9TQ19TQVZFRF9JRFMgPSA3Ci1fU0NfVkVSU0lPTiA9IDgKLV9TQ19QQVNTX01BWCA9IDkKLV9TQ19MT0dOQU1FX01BWCA9IDEwCi1fU0NfUEFHRVNJWkUgPSAxMQotX1NDX1hPUEVOX1ZFUlNJT04gPSAxMgotX1NDX05QUk9DRVNTT1JTX0NPTkYgPSAxNAotX1NDX05QUk9DRVNTT1JTX09OTE4gPSAxNQotX1NDX1NUUkVBTV9NQVggPSAxNgotX1NDX1RaTkFNRV9NQVggPSAxNwotX1NDX0FJT19MSVNUSU9fTUFYID0gMTgKLV9TQ19BSU9fTUFYID0gMTkKLV9TQ19BSU9fUFJJT19ERUxUQV9NQVggPSAyMAotX1NDX0FTWU5DSFJPTk9VU19JTyA9IDIxCi1fU0NfREVMQVlUSU1FUl9NQVggPSAyMgotX1NDX0ZTWU5DID0gMjMKLV9TQ19NQVBQRURfRklMRVMgPSAyNAotX1NDX01FTUxPQ0sgPSAyNQotX1NDX01FTUxPQ0tfUkFOR0UgPSAyNgotX1NDX01FTU9SWV9QUk9URUNUSU9OID0gMjcKLV9TQ19NRVNTQUdFX1BBU1NJTkcgPSAyOAotX1NDX01RX09QRU5fTUFYID0gMjkKLV9TQ19NUV9QUklPX01BWCA9IDMwCi1fU0NfUFJJT1JJVElaRURfSU8gPSAzMQotX1NDX1BSSU9SSVRZX1NDSEVEVUxJTkcgPSAzMgotX1NDX1JFQUxUSU1FX1NJR05BTFMgPSAzMwotX1NDX1JUU0lHX01BWCA9IDM0Ci1fU0NfU0VNQVBIT1JFUyA9IDM1Ci1fU0NfU0VNX05TRU1TX01BWCA9IDM2Ci1fU0NfU0VNX1ZBTFVFX01BWCA9IDM3Ci1fU0NfU0hBUkVEX01FTU9SWV9PQkpFQ1RTID0gMzgKLV9TQ19TSUdRVUVVRV9NQVggPSAzOQotX1NDX1NJR1JUX01JTiA9IDQwCi1fU0NfU0lHUlRfTUFYID0gNDEKLV9TQ19TWU5DSFJPTklaRURfSU8gPSA0MgotX1NDX1RJTUVSUyA9IDQzCi1fU0NfVElNRVJfTUFYID0gNDQKLV9TQ18yX0NfQklORCA9IDQ1Ci1fU0NfMl9DX0RFViA9IDQ2Ci1fU0NfMl9DX1ZFUlNJT04gPSA0NwotX1NDXzJfRk9SVF9ERVYgPSA0OAotX1NDXzJfRk9SVF9SVU4gPSA0OQotX1NDXzJfTE9DQUxFREVGID0gNTAKLV9TQ18yX1NXX0RFViA9IDUxCi1fU0NfMl9VUEUgPSA1MgotX1NDXzJfVkVSU0lPTiA9IDUzCi1fU0NfQkNfQkFTRV9NQVggPSA1NAotX1NDX0JDX0RJTV9NQVggPSA1NQotX1NDX0JDX1NDQUxFX01BWCA9IDU2Ci1fU0NfQkNfU1RSSU5HX01BWCA9IDU3Ci1fU0NfQ09MTF9XRUlHSFRTX01BWCA9IDU4Ci1fU0NfRVhQUl9ORVNUX01BWCA9IDU5Ci1fU0NfTElORV9NQVggPSA2MAotX1NDX1JFX0RVUF9NQVggPSA2MQotX1NDX1hPUEVOX0NSWVBUID0gNjIKLV9TQ19YT1BFTl9FTkhfSTE4TiA9IDYzCi1fU0NfWE9QRU5fU0hNID0gNjQKLV9TQ18yX0NIQVJfVEVSTSA9IDY2Ci1fU0NfWE9QRU5fWENVX1ZFUlNJT04gPSA2NwotX1NDX0FURVhJVF9NQVggPSA3NgotX1NDX0lPVl9NQVggPSA3NwotX1NDX1hPUEVOX1VOSVggPSA3OAotX1NDX1BBR0VfU0laRSA9IF9TQ19QQUdFU0laRQotX1NDX1RfSU9WX01BWCA9IDc5Ci1fU0NfUEhZU19QQUdFUyA9IDUwMAotX1NDX0FWUEhZU19QQUdFUyA9IDUwMQotX1NDX0NPSEVSX0JMS1NaID0gNTAzCi1fU0NfU1BMSVRfQ0FDSEUgPSA1MDQKLV9TQ19JQ0FDSEVfU1ogPSA1MDUKLV9TQ19EQ0FDSEVfU1ogPSA1MDYKLV9TQ19JQ0FDSEVfTElORVNaID0gNTA3Ci1fU0NfRENBQ0hFX0xJTkVTWiA9IDUwOAotX1NDX0lDQUNIRV9CTEtTWiA9IDUwOQotX1NDX0RDQUNIRV9CTEtTWiA9IDUxMAotX1NDX0RDQUNIRV9UQkxLU1ogPSA1MTEKLV9TQ19JQ0FDSEVfQVNTT0MgPSA1MTIKLV9TQ19EQ0FDSEVfQVNTT0MgPSA1MTMKLV9TQ19NQVhQSUQgPSA1MTQKLV9TQ19TVEFDS19QUk9UID0gNTE1Ci1fU0NfVEhSRUFEX0RFU1RSVUNUT1JfSVRFUkFUSU9OUyA9IDU2OAotX1NDX0dFVEdSX1JfU0laRV9NQVggPSA1NjkKLV9TQ19HRVRQV19SX1NJWkVfTUFYID0gNTcwCi1fU0NfTE9HSU5fTkFNRV9NQVggPSA1NzEKLV9TQ19USFJFQURfS0VZU19NQVggPSA1NzIKLV9TQ19USFJFQURfU1RBQ0tfTUlOID0gNTczCi1fU0NfVEhSRUFEX1RIUkVBRFNfTUFYID0gNTc0Ci1fU0NfVFRZX05BTUVfTUFYID0gNTc1Ci1fU0NfVEhSRUFEUyA9IDU3NgotX1NDX1RIUkVBRF9BVFRSX1NUQUNLQUREUiA9IDU3NwotX1NDX1RIUkVBRF9BVFRSX1NUQUNLU0laRSA9IDU3OAotX1NDX1RIUkVBRF9QUklPUklUWV9TQ0hFRFVMSU5HID0gNTc5Ci1fU0NfVEhSRUFEX1BSSU9fSU5IRVJJVCA9IDU4MAotX1NDX1RIUkVBRF9QUklPX1BST1RFQ1QgPSA1ODEKLV9TQ19USFJFQURfUFJPQ0VTU19TSEFSRUQgPSA1ODIKLV9TQ19USFJFQURfU0FGRV9GVU5DVElPTlMgPSA1ODMKLV9TQ19YT1BFTl9MRUdBQ1kgPSA3MTcKLV9TQ19YT1BFTl9SRUFMVElNRSA9IDcxOAotX1NDX1hPUEVOX1JFQUxUSU1FX1RIUkVBRFMgPSA3MTkKLV9TQ19YQlM1X0lMUDMyX09GRjMyID0gNzIwCi1fU0NfWEJTNV9JTFAzMl9PRkZCSUcgPSA3MjEKLV9TQ19YQlM1X0xQNjRfT0ZGNjQgPSA3MjIKLV9TQ19YQlM1X0xQQklHX09GRkJJRyA9IDcyMwotX1BDX0xJTktfTUFYID0gMQotX1BDX01BWF9DQU5PTiA9IDIKLV9QQ19NQVhfSU5QVVQgPSAzCi1fUENfTkFNRV9NQVggPSA0Ci1fUENfUEFUSF9NQVggPSA1Ci1fUENfUElQRV9CVUYgPSA2Ci1fUENfTk9fVFJVTkMgPSA3Ci1fUENfVkRJU0FCTEUgPSA4Ci1fUENfQ0hPV05fUkVTVFJJQ1RFRCA9IDkKLV9QQ19BU1lOQ19JTyA9IDEwCi1fUENfUFJJT19JTyA9IDExCi1fUENfU1lOQ19JTyA9IDEyCi1fUENfRklMRVNJWkVCSVRTID0gNjcKLV9QQ19MQVNUID0gNjcKLV9QT1NJWF9WRVJTSU9OID0gMTk5NTA2Ci1fUE9TSVgyX1ZFUlNJT04gPSAxOTkyMDkKLV9QT1NJWDJfQ19WRVJTSU9OID0gMTk5MjA5Ci1fWE9QRU5fWENVX1ZFUlNJT04gPSA0Ci1fWE9QRU5fUkVBTFRJTUUgPSAxCi1fWE9QRU5fRU5IX0kxOE4gPSAxCi1fWE9QRU5fU0hNID0gMQotX1BPU0lYMl9DX0JJTkQgPSAxCi1fUE9TSVgyX0NIQVJfVEVSTSA9IDEKLV9QT1NJWDJfTE9DQUxFREVGID0gMQotX1BPU0lYMl9DX0RFViA9IDEKLV9QT1NJWDJfU1dfREVWID0gMQotX1BPU0lYMl9VUEUgPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvbXV0ZXguaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotZGVmIE1VVEVYX0hFTEQoeCk6IHJldHVybiAobXV0ZXhfb3duZWQoeCkpCi0KLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9yd2xvY2suaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotZGVmIFJXX1JFQURfSEVMRCh4KTogcmV0dXJuIChyd19yZWFkX2hlbGQoKHgpKSkKLQotZGVmIFJXX1dSSVRFX0hFTEQoeCk6IHJldHVybiAocndfd3JpdGVfaGVsZCgoeCkpKQotCi1kZWYgUldfTE9DS19IRUxEKHgpOiByZXR1cm4gKHJ3X2xvY2tfaGVsZCgoeCkpKQotCi1kZWYgUldfSVNXUklURVIoeCk6IHJldHVybiAocndfaXN3cml0ZXIoeCkpCi0KLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9zZW1hcGhvcmUuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3RocmVhZC5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMva2x3cC5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvY29uZHZhci5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdGltZS5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdHlwZXMzMi5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvaW50X3R5cGVzLmgKLVRJTUUzMl9NQVggPSBJTlQzMl9NQVgKLVRJTUUzMl9NSU4gPSBJTlQzMl9NSU4KLWRlZiBUSU1FVkFMX09WRVJGTE9XKHR2KTogcmV0dXJuIFwKLQotZnJvbSBUWVBFUyBpbXBvcnQgKgotRFNUX05PTkUgPSAwCi1EU1RfVVNBID0gMQotRFNUX0FVU1QgPSAyCi1EU1RfV0VUID0gMwotRFNUX01FVCA9IDQKLURTVF9FRVQgPSA1Ci1EU1RfQ0FOID0gNgotRFNUX0dCID0gNwotRFNUX1JVTSA9IDgKLURTVF9UVVIgPSA5Ci1EU1RfQVVTVEFMVCA9IDEwCi1JVElNRVJfUkVBTCA9IDAKLUlUSU1FUl9WSVJUVUFMID0gMQotSVRJTUVSX1BST0YgPSAyCi1JVElNRVJfUkVBTFBST0YgPSAzCi1kZWYgSVRJTUVSVkFMX09WRVJGTE9XKGl0dik6IHJldHVybiBcCi0KLVNFQyA9IDEKLU1JTExJU0VDID0gMTAwMAotTUlDUk9TRUMgPSAxMDAwMDAwCi1OQU5PU0VDID0gMTAwMDAwMDAwMAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3RpbWVfaW1wbC5oCi1kZWYgVElNRVNQRUNfT1ZFUkZMT1codHMpOiByZXR1cm4gXAotCi1kZWYgSVRJTUVSU1BFQ19PVkVSRkxPVyhpdCk6IHJldHVybiBcCi0KLV9fQ0xPQ0tfUkVBTFRJTUUwID0gMAotQ0xPQ0tfVklSVFVBTCA9IDEKLUNMT0NLX1BST0YgPSAyCi1fX0NMT0NLX1JFQUxUSU1FMyA9IDMKLUNMT0NLX0hJR0hSRVMgPSA0Ci1DTE9DS19NQVggPSA1Ci1DTE9DS19SRUFMVElNRSA9IF9fQ0xPQ0tfUkVBTFRJTUUzCi1DTE9DS19SRUFMVElNRSA9IF9fQ0xPQ0tfUkVBTFRJTUUwCi1USU1FUl9SRUxUSU1FID0gMHgwCi1USU1FUl9BQlNUSU1FID0gMHgxCi1kZWYgVElDS19UT19TRUModGljayk6IHJldHVybiAoKHRpY2spIC8gaHopCi0KLWRlZiBTRUNfVE9fVElDSyhzZWMpOiByZXR1cm4gKChzZWMpICogaHopCi0KLWRlZiBUSUNLX1RPX01TRUModGljayk6IHJldHVybiBcCi0KLWRlZiBNU0VDX1RPX1RJQ0sobXNlYyk6IHJldHVybiBcCi0KLWRlZiBNU0VDX1RPX1RJQ0tfUk9VTkRVUChtc2VjKTogcmV0dXJuIFwKLQotZGVmIFRJQ0tfVE9fVVNFQyh0aWNrKTogcmV0dXJuICgodGljaykgKiB1c2VjX3Blcl90aWNrKQotCi1kZWYgVVNFQ19UT19USUNLKHVzZWMpOiByZXR1cm4gKCh1c2VjKSAvIHVzZWNfcGVyX3RpY2spCi0KLWRlZiBVU0VDX1RPX1RJQ0tfUk9VTkRVUCh1c2VjKTogcmV0dXJuIFwKLQotZGVmIFRJQ0tfVE9fTlNFQyh0aWNrKTogcmV0dXJuICgodGljaykgKiBuc2VjX3Blcl90aWNrKQotCi1kZWYgTlNFQ19UT19USUNLKG5zZWMpOiByZXR1cm4gKChuc2VjKSAvIG5zZWNfcGVyX3RpY2spCi0KLWRlZiBOU0VDX1RPX1RJQ0tfUk9VTkRVUChuc2VjKTogcmV0dXJuIFwKLQotZGVmIFRJTUVWQUxfVE9fVElDSyh0dnApOiByZXR1cm4gXAotCi1kZWYgVElNRVNUUlVDX1RPX1RJQ0sodHNwKTogcmV0dXJuIFwKLQotCi0jIEluY2x1ZGVkIGZyb20gdGltZS5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi0KLSMgSW5jbHVkZWQgZnJvbSBpc28vdGltZV9pc28uaAotTlVMTCA9IDAKLU5VTEwgPSAwCi1DTE9DS1NfUEVSX1NFQyA9IDEwMDAwMDAKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9zZWxlY3QuaAotRkRfU0VUU0laRSA9IDY1NTM2Ci1GRF9TRVRTSVpFID0gMTAyNAotX05CQlkgPSA4Ci1OQkJZID0gX05CQlkKLWRlZiBGRF9aRVJPKHApOiByZXR1cm4gYnplcm8oKHApLCBzaXplb2YgKCoocCkpKQotCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvc2lnbmFsLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9pc28vc2lnbmFsX2lzby5oCi1TSUdIVVAgPSAxCi1TSUdJTlQgPSAyCi1TSUdRVUlUID0gMwotU0lHSUxMID0gNAotU0lHVFJBUCA9IDUKLVNJR0lPVCA9IDYKLVNJR0FCUlQgPSA2Ci1TSUdFTVQgPSA3Ci1TSUdGUEUgPSA4Ci1TSUdLSUxMID0gOQotU0lHQlVTID0gMTAKLVNJR1NFR1YgPSAxMQotU0lHU1lTID0gMTIKLVNJR1BJUEUgPSAxMwotU0lHQUxSTSA9IDE0Ci1TSUdURVJNID0gMTUKLVNJR1VTUjEgPSAxNgotU0lHVVNSMiA9IDE3Ci1TSUdDTEQgPSAxOAotU0lHQ0hMRCA9IDE4Ci1TSUdQV1IgPSAxOQotU0lHV0lOQ0ggPSAyMAotU0lHVVJHID0gMjEKLVNJR1BPTEwgPSAyMgotU0lHSU8gPSBTSUdQT0xMCi1TSUdTVE9QID0gMjMKLVNJR1RTVFAgPSAyNAotU0lHQ09OVCA9IDI1Ci1TSUdUVElOID0gMjYKLVNJR1RUT1UgPSAyNwotU0lHVlRBTFJNID0gMjgKLVNJR1BST0YgPSAyOQotU0lHWENQVSA9IDMwCi1TSUdYRlNaID0gMzEKLVNJR1dBSVRJTkcgPSAzMgotU0lHTFdQID0gMzMKLVNJR0ZSRUVaRSA9IDM0Ci1TSUdUSEFXID0gMzUKLVNJR0NBTkNFTCA9IDM2Ci1TSUdMT1NUID0gMzcKLV9TSUdSVE1JTiA9IDM4Ci1fU0lHUlRNQVggPSA0NQotU0lHX0JMT0NLID0gMQotU0lHX1VOQkxPQ0sgPSAyCi1TSUdfU0VUTUFTSyA9IDMKLVNJR05PX01BU0sgPSAweEZGCi1TSUdERUZFUiA9IDB4MTAwCi1TSUdIT0xEID0gMHgyMDAKLVNJR1JFTFNFID0gMHg0MDAKLVNJR0lHTk9SRSA9IDB4ODAwCi1TSUdQQVVTRSA9IDB4MTAwMAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3NpZ2luZm8uaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotU0lHRVZfTk9ORSA9IDEKLVNJR0VWX1NJR05BTCA9IDIKLVNJR0VWX1RIUkVBRCA9IDMKLVNJX05PSU5GTyA9IDMyNzY3Ci1TSV9VU0VSID0gMAotU0lfTFdQID0gKC0xKQotU0lfUVVFVUUgPSAoLTIpCi1TSV9USU1FUiA9ICgtMykKLVNJX0FTWU5DSU8gPSAoLTQpCi1TSV9NRVNHUSA9ICgtNSkKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9tYWNoc2lnLmgKLUlMTF9JTExPUEMgPSAxCi1JTExfSUxMT1BOID0gMgotSUxMX0lMTEFEUiA9IDMKLUlMTF9JTExUUlAgPSA0Ci1JTExfUFJWT1BDID0gNQotSUxMX1BSVlJFRyA9IDYKLUlMTF9DT1BST0MgPSA3Ci1JTExfQkFEU1RLID0gOAotTlNJR0lMTCA9IDgKLUVNVF9UQUdPVkYgPSAxCi1FTVRfQ1BDT1ZGID0gMgotTlNJR0VNVCA9IDIKLUZQRV9JTlRESVYgPSAxCi1GUEVfSU5UT1ZGID0gMgotRlBFX0ZMVERJViA9IDMKLUZQRV9GTFRPVkYgPSA0Ci1GUEVfRkxUVU5EID0gNQotRlBFX0ZMVFJFUyA9IDYKLUZQRV9GTFRJTlYgPSA3Ci1GUEVfRkxUU1VCID0gOAotTlNJR0ZQRSA9IDgKLVNFR1ZfTUFQRVJSID0gMQotU0VHVl9BQ0NFUlIgPSAyCi1OU0lHU0VHViA9IDIKLUJVU19BRFJBTE4gPSAxCi1CVVNfQURSRVJSID0gMgotQlVTX09CSkVSUiA9IDMKLU5TSUdCVVMgPSAzCi1UUkFQX0JSS1BUID0gMQotVFJBUF9UUkFDRSA9IDIKLVRSQVBfUldBVENIID0gMwotVFJBUF9XV0FUQ0ggPSA0Ci1UUkFQX1hXQVRDSCA9IDUKLU5TSUdUUkFQID0gNQotQ0xEX0VYSVRFRCA9IDEKLUNMRF9LSUxMRUQgPSAyCi1DTERfRFVNUEVEID0gMwotQ0xEX1RSQVBQRUQgPSA0Ci1DTERfU1RPUFBFRCA9IDUKLUNMRF9DT05USU5VRUQgPSA2Ci1OU0lHQ0xEID0gNgotUE9MTF9JTiA9IDEKLVBPTExfT1VUID0gMgotUE9MTF9NU0cgPSAzCi1QT0xMX0VSUiA9IDQKLVBPTExfUFJJID0gNQotUE9MTF9IVVAgPSA2Ci1OU0lHUE9MTCA9IDYKLVBST0ZfU0lHID0gMQotTlNJR1BST0YgPSAxCi1TSV9NQVhTWiA9IDI1NgotU0lfTUFYU1ogPSAxMjgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy90aW1lX3N0ZF9pbXBsLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLVNJMzJfTUFYU1ogPSAxMjgKLWRlZiBTSV9DQU5RVUVVRShjKTogcmV0dXJuICgoYykgPD0gU0lfUVVFVUUpCi0KLVNBX05PQ0xEU1RPUCA9IDB4MDAwMjAwMDAKLVNBX09OU1RBQ0sgPSAweDAwMDAwMDAxCi1TQV9SRVNFVEhBTkQgPSAweDAwMDAwMDAyCi1TQV9SRVNUQVJUID0gMHgwMDAwMDAwNAotU0FfU0lHSU5GTyA9IDB4MDAwMDAwMDgKLVNBX05PREVGRVIgPSAweDAwMDAwMDEwCi1TQV9OT0NMRFdBSVQgPSAweDAwMDEwMDAwCi1TQV9XQUlUU0lHID0gMHgwMDAxMDAwMAotTlNJRyA9IDQ2Ci1NQVhTSUcgPSA0NQotU19TSUdOQUwgPSAxCi1TX1NJR1NFVCA9IDIKLVNfU0lHQUNUSU9OID0gMwotU19OT05FID0gNAotTUlOU0lHU1RLU1ogPSAyMDQ4Ci1TSUdTVEtTWiA9IDgxOTIKLVNTX09OU1RBQ0sgPSAweDAwMDAwMDAxCi1TU19ESVNBQkxFID0gMHgwMDAwMDAwMgotU05fUFJPQyA9IDEKLVNOX0NBTkNFTCA9IDIKLVNOX1NFTkQgPSAzCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdWNvbnRleHQuaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3JlZ3NldC5oCi1SRUdfQ0NSID0gKDApCi1SRUdfUFNSID0gKDApCi1SRUdfUFNSID0gKDApCi1SRUdfUEMgPSAoMSkKLVJFR19uUEMgPSAoMikKLVJFR19ZID0gKDMpCi1SRUdfRzEgPSAoNCkKLVJFR19HMiA9ICg1KQotUkVHX0czID0gKDYpCi1SRUdfRzQgPSAoNykKLVJFR19HNSA9ICg4KQotUkVHX0c2ID0gKDkpCi1SRUdfRzcgPSAoMTApCi1SRUdfTzAgPSAoMTEpCi1SRUdfTzEgPSAoMTIpCi1SRUdfTzIgPSAoMTMpCi1SRUdfTzMgPSAoMTQpCi1SRUdfTzQgPSAoMTUpCi1SRUdfTzUgPSAoMTYpCi1SRUdfTzYgPSAoMTcpCi1SRUdfTzcgPSAoMTgpCi1SRUdfQVNJID0gKDE5KQotUkVHX0ZQUlMgPSAoMjApCi1SRUdfUFMgPSBSRUdfUFNSCi1SRUdfU1AgPSBSRUdfTzYKLVJFR19SMCA9IFJFR19PMAotUkVHX1IxID0gUkVHX08xCi1fTkdSRUcgPSAyMQotX05HUkVHID0gMTkKLU5HUkVHID0gX05HUkVHCi1fTkdSRUczMiA9IDE5Ci1fTkdSRUc2NCA9IDIxCi1TUEFSQ19NQVhSRUdXSU5ET1cgPSAzMQotTUFYRlBRID0gMTYKLVhSU19JRCA9IDB4Nzg3MjczMDAKLQotIyBJbmNsdWRlZCBmcm9tIHY3L3N5cy9wcml2cmVncy5oCi0KLSMgSW5jbHVkZWQgZnJvbSB2Ny9zeXMvcHNyLmgKLVBTUl9DV1AgPSAweDAwMDAwMDFGCi1QU1JfRVQgPSAweDAwMDAwMDIwCi1QU1JfUFMgPSAweDAwMDAwMDQwCi1QU1JfUyA9IDB4MDAwMDAwODAKLVBTUl9QSUwgPSAweDAwMDAwRjAwCi1QU1JfRUYgPSAweDAwMDAxMDAwCi1QU1JfRUMgPSAweDAwMDAyMDAwCi1QU1JfUlNWID0gMHgwMDBGQzAwMAotUFNSX0lDQyA9IDB4MDBGMDAwMDAKLVBTUl9DID0gMHgwMDEwMDAwMAotUFNSX1YgPSAweDAwMjAwMDAwCi1QU1JfWiA9IDB4MDA0MDAwMDAKLVBTUl9OID0gMHgwMDgwMDAwMAotUFNSX1ZFUiA9IDB4MEYwMDAwMDAKLVBTUl9JTVBMID0gMHhGMDAwMDAwMAotUFNMX0FMTENDID0gUFNSX0lDQwotUFNMX1VTRVIgPSAoUFNSX1MpCi1QU0xfVVNFUk1BU0sgPSAoUFNSX0lDQykKLVBTTF9VQklUUyA9IChQU1JfSUNDfFBTUl9FRikKLWRlZiBVU0VSTU9ERShwcyk6IHJldHVybiAoKChwcykgJiBQU1JfUFMpID09IDApCi0KLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9mc3IuaAotRlNSX0NFWEMgPSAweDAwMDAwMDFmCi1GU1JfQUVYQyA9IDB4MDAwMDAzZTAKLUZTUl9GQ0MgPSAweDAwMDAwYzAwCi1GU1JfUFIgPSAweDAwMDAxMDAwCi1GU1JfUU5FID0gMHgwMDAwMjAwMAotRlNSX0ZUVCA9IDB4MDAwMWMwMDAKLUZTUl9WRVIgPSAweDAwMGUwMDAwCi1GU1JfVEVNID0gMHgwZjgwMDAwMAotRlNSX1JQID0gMHgzMDAwMDAwMAotRlNSX1JEID0gMHhjMDAwMDAwMAotRlNSX1ZFUl9TSElGVCA9IDE3Ci1GU1JfRkNDMSA9IDB4MDAwMDAwMDMKLUZTUl9GQ0MyID0gMHgwMDAwMDAwQwotRlNSX0ZDQzMgPSAweDAwMDAwMDMwCi1GU1JfQ0VYQ19OWCA9IDB4MDAwMDAwMDEKLUZTUl9DRVhDX0RaID0gMHgwMDAwMDAwMgotRlNSX0NFWENfVUYgPSAweDAwMDAwMDA0Ci1GU1JfQ0VYQ19PRiA9IDB4MDAwMDAwMDgKLUZTUl9DRVhDX05WID0gMHgwMDAwMDAxMAotRlNSX0FFWENfTlggPSAoMHgxIDw8IDUpCi1GU1JfQUVYQ19EWiA9ICgweDIgPDwgNSkKLUZTUl9BRVhDX1VGID0gKDB4NCA8PCA1KQotRlNSX0FFWENfT0YgPSAoMHg4IDw8IDUpCi1GU1JfQUVYQ19OViA9ICgweDEwIDw8IDUpCi1GVFRfTk9ORSA9IDAKLUZUVF9JRUVFID0gMQotRlRUX1VORklOID0gMgotRlRUX1VOSU1QID0gMwotRlRUX1NFUSA9IDQKLUZUVF9BTElHTiA9IDUKLUZUVF9ERkFVTFQgPSA2Ci1GU1JfRlRUX1NISUZUID0gMTQKLUZTUl9GVFRfSUVFRSA9IChGVFRfSUVFRSAgIDw8IEZTUl9GVFRfU0hJRlQpCi1GU1JfRlRUX1VORklOID0gKEZUVF9VTkZJTiAgPDwgRlNSX0ZUVF9TSElGVCkKLUZTUl9GVFRfVU5JTVAgPSAoRlRUX1VOSU1QICA8PCBGU1JfRlRUX1NISUZUKQotRlNSX0ZUVF9TRVEgPSAoRlRUX1NFUSAgICA8PCBGU1JfRlRUX1NISUZUKQotRlNSX0ZUVF9BTElHTiA9IChGVFRfQUxJR04gIDw8IEZTUl9GVFRfU0hJRlQpCi1GU1JfRlRUX0RGQVVMVCA9IChGVFRfREZBVUxUIDw8IEZTUl9GVFRfU0hJRlQpCi1GU1JfVEVNX05YID0gKDB4MSA8PCAyMykKLUZTUl9URU1fRFogPSAoMHgyIDw8IDIzKQotRlNSX1RFTV9VRiA9ICgweDQgPDwgMjMpCi1GU1JfVEVNX09GID0gKDB4OCA8PCAyMykKLUZTUl9URU1fTlYgPSAoMHgxMCA8PCAyMykKLVJQX0RCTEVYVCA9IDAKLVJQX1NJTkdMRSA9IDEKLVJQX0RPVUJMRSA9IDIKLVJQX1JFU0VSVkVEID0gMwotUkRfTkVBUiA9IDAKLVJEX1pFUjAgPSAxCi1SRF9QT1NJTkYgPSAyCi1SRF9ORUdJTkYgPSAzCi1GUFJTX0RMID0gMHgxCi1GUFJTX0RVID0gMHgyCi1GUFJTX0ZFRiA9IDB4NAotUElMX01BWCA9IDB4ZgotZGVmIFNBVkVfR0xPQkFMUyhSUCk6IHJldHVybiBcCi0KLWRlZiBSRVNUT1JFX0dMT0JBTFMoUlApOiByZXR1cm4gXAotCi1kZWYgU0FWRV9PVVRTKFJQKTogcmV0dXJuIFwKLQotZGVmIFJFU1RPUkVfT1VUUyhSUCk6IHJldHVybiBcCi0KLWRlZiBTQVZFX1dJTkRPVyhTQlApOiByZXR1cm4gXAotCi1kZWYgUkVTVE9SRV9XSU5ET1coU0JQKTogcmV0dXJuIFwKLQotZGVmIFNUT1JFX0ZQUkVHUyhGUCk6IHJldHVybiBcCi0KLWRlZiBMT0FEX0ZQUkVHUyhGUCk6IHJldHVybiBcCi0KLV9TUEFSQ19NQVhSRUdXSU5ET1cgPSAzMQotX1hSU19JRCA9IDB4Nzg3MjczMDAKLUdFVENPTlRFWFQgPSAwCi1TRVRDT05URVhUID0gMQotVUNfU0lHTUFTSyA9IDBvMDEKLVVDX1NUQUNLID0gMG8wMgotVUNfQ1BVID0gMG8wNAotVUNfTUFVID0gMG8xMAotVUNfRlBVID0gVUNfTUFVCi1VQ19JTlRSID0gMG8yMAotVUNfQVNSID0gMG80MAotVUNfTUNPTlRFWFQgPSAoVUNfQ1BVfFVDX0ZQVXxVQ19BU1IpCi1VQ19BTEwgPSAoVUNfU0lHTUFTS3xVQ19TVEFDS3xVQ19NQ09OVEVYVCkKLV9TSUdRVUVVRV9NQVggPSAzMgotX1NJR05PVElGWV9NQVggPSAzMgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3BjYi5oCi1JTlNUUl9WQUxJRCA9IDB4MDIKLU5PUk1BTF9TVEVQID0gMHgwNAotV0FUQ0hfU1RFUCA9IDB4MDgKLUNQQ19PVkVSRkxPVyA9IDB4MTAKLUFTWU5DX0hXRVJSID0gMHgyMAotU1RFUF9OT05FID0gMAotU1RFUF9SRVFVRVNURUQgPSAxCi1TVEVQX0FDVElWRSA9IDIKLVNURVBfV0FTQUNUSVZFID0gMwotCi0jIEluY2x1ZGVkIGZyb20gc3lzL21zYWNjdC5oCi1MTVNfVVNFUiA9IDAKLUxNU19TWVNURU0gPSAxCi1MTVNfVFJBUCA9IDIKLUxNU19URkFVTFQgPSAzCi1MTVNfREZBVUxUID0gNAotTE1TX0tGQVVMVCA9IDUKLUxNU19VU0VSX0xPQ0sgPSA2Ci1MTVNfU0xFRVAgPSA3Ci1MTVNfV0FJVF9DUFUgPSA4Ci1MTVNfU1RPUFBFRCA9IDkKLU5NU1RBVEVTID0gMTAKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9sd3AuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3N5bmNoLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLVVTWU5DX1RIUkVBRCA9IDB4MDAKLVVTWU5DX1BST0NFU1MgPSAweDAxCi1MT0NLX05PUk1BTCA9IDB4MDAKLUxPQ0tfRVJST1JDSEVDSyA9IDB4MDIKLUxPQ0tfUkVDVVJTSVZFID0gMHgwNAotVVNZTkNfUFJPQ0VTU19ST0JVU1QgPSAweDA4Ci1MT0NLX1BSSU9fTk9ORSA9IDB4MDAKLUxPQ0tfUFJJT19JTkhFUklUID0gMHgxMAotTE9DS19QUklPX1BST1RFQ1QgPSAweDIwCi1MT0NLX1NUQUxMX05QID0gMHgwMAotTE9DS19ST0JVU1RfTlAgPSAweDQwCi1MT0NLX09XTkVSREVBRCA9IDB4MQotTE9DS19OT1RSRUNPVkVSQUJMRSA9IDB4MgotTE9DS19JTklURUQgPSAweDQKLUxPQ0tfVU5NQVBQRUQgPSAweDgKLUxXUF9ERVRBQ0hFRCA9IDB4MDAwMDAwNDAKLUxXUF9TVVNQRU5ERUQgPSAweDAwMDAwMDgwCi1fX0xXUF9BU0xXUCA9IDB4MDAwMDAxMDAKLU1BWFNZU0FSR1MgPSA4Ci1OT1JNQUxSRVRVUk4gPSAwCi1KVVNUUkVUVVJOID0gMQotTFdQX1VTRVIgPSAweDAxCi1MV1BfU1lTID0gMHgwMgotVFNfRlJFRSA9IDB4MDAKLVRTX1NMRUVQID0gMHgwMQotVFNfUlVOID0gMHgwMgotVFNfT05QUk9DID0gMHgwNAotVFNfWk9NQiA9IDB4MDgKLVRTX1NUT1BQRUQgPSAweDEwCi1UX0lOVFJfVEhSRUFEID0gMHgwMDAxCi1UX1dBS0VBQkxFID0gMHgwMDAyCi1UX1RPTUFTSyA9IDB4MDAwNAotVF9UQUxMT0NTVEsgPSAweDAwMDgKLVRfV09VTERCTE9DSyA9IDB4MDAyMAotVF9ET05UQkxPQ0sgPSAweDAwNDAKLVRfRE9OVFBFTkQgPSAweDAwODAKLVRfU1lTX1BST0YgPSAweDAxMDAKLVRfV0FJVENWU0VNID0gMHgwMjAwCi1UX1dBVENIUFQgPSAweDA0MDAKLVRfUEFOSUMgPSAweDA4MDAKLVRQX0hPTERMV1AgPSAweDAwMDIKLVRQX1RXQUlUID0gMHgwMDA0Ci1UUF9MV1BFWElUID0gMHgwMDA4Ci1UUF9QUlNUT1AgPSAweDAwMTAKLVRQX0NIS1BUID0gMHgwMDIwCi1UUF9FWElUTFdQID0gMHgwMDQwCi1UUF9QUlZTVE9QID0gMHgwMDgwCi1UUF9NU0FDQ1QgPSAweDAxMDAKLVRQX1NUT1BQSU5HID0gMHgwMjAwCi1UUF9XQVRDSFBUID0gMHgwNDAwCi1UUF9QQVVTRSA9IDB4MDgwMAotVFBfQ0hBTkdFQklORCA9IDB4MTAwMAotVFNfTE9BRCA9IDB4MDAwMQotVFNfRE9OVF9TV0FQID0gMHgwMDAyCi1UU19TV0FQRU5RID0gMHgwMDA0Ci1UU19PTl9TV0FQUSA9IDB4MDAwOAotVFNfQ1NUQVJUID0gMHgwMTAwCi1UU19VTlBBVVNFID0gMHgwMjAwCi1UU19YU1RBUlQgPSAweDA0MDAKLVRTX1BTVEFSVCA9IDB4MDgwMAotVFNfUkVTVU1FID0gMHgxMDAwCi1UU19DUkVBVEUgPSAweDIwMDAKLVRTX0FMTFNUQVJUID0gXAotICAgICAgICAoVFNfQ1NUQVJUfFRTX1VOUEFVU0V8VFNfWFNUQVJUfFRTX1BTVEFSVHxUU19SRVNVTUV8VFNfQ1JFQVRFKQotZGVmIENQUl9WU1RPUFBFRCh0KTogcmV0dXJuIFwKLQotZGVmIFRIUkVBRF9UUkFOU0lUSU9OKHRwKTogcmV0dXJuIHRocmVhZF90cmFuc2l0aW9uKHRwKTsKLQotZGVmIFRIUkVBRF9TVE9QKHRwKTogcmV0dXJuIFwKLQotZGVmIFRIUkVBRF9aT01CKHRwKTogcmV0dXJuIFRIUkVBRF9TRVRfU1RBVEUodHAsIFRTX1pPTUIsIE5VTEwpCi0KLWRlZiBTRU1BX0hFTEQoeCk6IHJldHVybiAoc2VtYV9oZWxkKCh4KSkpCi0KLU5PX0xPQ0tTX0hFTEQgPSAxCi1OT19DT01QRVRJTkdfVEhSRUFEUyA9IDEKLUZNTkFNRVNaID0gOAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3N5c3RtLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9wcm9jLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9jcmVkLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy91c2VyLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9yZXNvdXJjZS5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi1QUklPX1BST0NFU1MgPSAwCi1QUklPX1BHUlAgPSAxCi1QUklPX1VTRVIgPSAyCi1STElNSVRfQ1BVID0gMAotUkxJTUlUX0ZTSVpFID0gMQotUkxJTUlUX0RBVEEgPSAyCi1STElNSVRfU1RBQ0sgPSAzCi1STElNSVRfQ09SRSA9IDQKLVJMSU1JVF9OT0ZJTEUgPSA1Ci1STElNSVRfVk1FTSA9IDYKLVJMSU1JVF9BUyA9IFJMSU1JVF9WTUVNCi1STElNX05MSU1JVFMgPSA3Ci1STElNX0lORklOSVRZID0gKC0zKQotUkxJTV9TQVZFRF9NQVggPSAoLTIpCi1STElNX1NBVkVEX0NVUiA9ICgtMSkKLVJMSU1fSU5GSU5JVFkgPSAweDdmZmZmZmZmCi1STElNX1NBVkVEX01BWCA9IDB4N2ZmZmZmZmUKLVJMSU1fU0FWRURfQ1VSID0gMHg3ZmZmZmZmZAotUkxJTTMyX0lORklOSVRZID0gMHg3ZmZmZmZmZgotUkxJTTMyX1NBVkVEX01BWCA9IDB4N2ZmZmZmZmUKLVJMSU0zMl9TQVZFRF9DVVIgPSAweDdmZmZmZmZkCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvbW9kZWwuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2RlYnVnLmgKLWRlZiBBU1NFUlQ2NCh4KTogcmV0dXJuIEFTU0VSVCh4KQotCi1kZWYgQVNTRVJUMzIoeCk6IHJldHVybiBBU1NFUlQoeCkKLQotREFUQU1PREVMX01BU0sgPSAweDBGRjAwMDAwCi1EQVRBTU9ERUxfSUxQMzIgPSAweDAwMTAwMDAwCi1EQVRBTU9ERUxfTFA2NCA9IDB4MDAyMDAwMDAKLURBVEFNT0RFTF9OT05FID0gMAotREFUQU1PREVMX05BVElWRSA9IERBVEFNT0RFTF9MUDY0Ci1EQVRBTU9ERUxfTkFUSVZFID0gREFUQU1PREVMX0lMUDMyCi1kZWYgU1RSVUNUX1NJWkUoaGFuZGxlKTogcmV0dXJuIFwKLQotZGVmIFNUUlVDVF9CVUYoaGFuZGxlKTogcmV0dXJuICgoaGFuZGxlKS5wdHIubTY0KQotCi1kZWYgU0laRU9GX1BUUih1bW9kZWwpOiByZXR1cm4gXAotCi1kZWYgU1RSVUNUX1NJWkUoaGFuZGxlKTogcmV0dXJuIChzaXplb2YgKCooaGFuZGxlKS5wdHIpKQotCi1kZWYgU1RSVUNUX0JVRihoYW5kbGUpOiByZXR1cm4gKChoYW5kbGUpLnB0cikKLQotZGVmIFNJWkVPRl9QVFIodW1vZGVsKTogcmV0dXJuIHNpemVvZiAoY2FkZHJfdCkKLQotZGVmIGx3cF9nZXRkYXRhbW9kZWwodCk6IHJldHVybiBEQVRBTU9ERUxfSUxQMzIKLQotUlVTQUdFX1NFTEYgPSAwCi1SVVNBR0VfQ0hJTERSRU4gPSAtMQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2F1eHYuaAotQVRfTlVMTCA9IDAKLUFUX0lHTk9SRSA9IDEKLUFUX0VYRUNGRCA9IDIKLUFUX1BIRFIgPSAzCi1BVF9QSEVOVCA9IDQKLUFUX1BITlVNID0gNQotQVRfUEFHRVNaID0gNgotQVRfQkFTRSA9IDcKLUFUX0ZMQUdTID0gOAotQVRfRU5UUlkgPSA5Ci1BVF9EQ0FDSEVCU0laRSA9IDEwCi1BVF9JQ0FDSEVCU0laRSA9IDExCi1BVF9VQ0FDSEVCU0laRSA9IDEyCi1BVF9TVU5fVUlEID0gMjAwMAotQVRfU1VOX1JVSUQgPSAyMDAxCi1BVF9TVU5fR0lEID0gMjAwMgotQVRfU1VOX1JHSUQgPSAyMDAzCi1BVF9TVU5fTERFTEYgPSAyMDA0Ci1BVF9TVU5fTERTSERSID0gMjAwNQotQVRfU1VOX0xETkFNRSA9IDIwMDYKLUFUX1NVTl9MUEFHRVNaID0gMjAwNwotQVRfU1VOX1BMQVRGT1JNID0gMjAwOAotQVRfU1VOX0hXQ0FQID0gMjAwOQotQVRfU1VOX0lGTFVTSCA9IDIwMTAKLUFUX1NVTl9DUFUgPSAyMDExCi1BVF9TVU5fRU1VTF9FTlRSWSA9IDIwMTIKLUFUX1NVTl9FTVVMX0VYRUNGRCA9IDIwMTMKLUFUX1NVTl9FWEVDTkFNRSA9IDIwMTQKLUFUX1NVTl9NTVUgPSAyMDE1Ci0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvZXJybm8uaAotRVBFUk0gPSAxCi1FTk9FTlQgPSAyCi1FU1JDSCA9IDMKLUVJTlRSID0gNAotRUlPID0gNQotRU5YSU8gPSA2Ci1FMkJJRyA9IDcKLUVOT0VYRUMgPSA4Ci1FQkFERiA9IDkKLUVDSElMRCA9IDEwCi1FQUdBSU4gPSAxMQotRU5PTUVNID0gMTIKLUVBQ0NFUyA9IDEzCi1FRkFVTFQgPSAxNAotRU5PVEJMSyA9IDE1Ci1FQlVTWSA9IDE2Ci1FRVhJU1QgPSAxNwotRVhERVYgPSAxOAotRU5PREVWID0gMTkKLUVOT1RESVIgPSAyMAotRUlTRElSID0gMjEKLUVJTlZBTCA9IDIyCi1FTkZJTEUgPSAyMwotRU1GSUxFID0gMjQKLUVOT1RUWSA9IDI1Ci1FVFhUQlNZID0gMjYKLUVGQklHID0gMjcKLUVOT1NQQyA9IDI4Ci1FU1BJUEUgPSAyOQotRVJPRlMgPSAzMAotRU1MSU5LID0gMzEKLUVQSVBFID0gMzIKLUVET00gPSAzMwotRVJBTkdFID0gMzQKLUVOT01TRyA9IDM1Ci1FSURSTSA9IDM2Ci1FQ0hSTkcgPSAzNwotRUwyTlNZTkMgPSAzOAotRUwzSExUID0gMzkKLUVMM1JTVCA9IDQwCi1FTE5STkcgPSA0MQotRVVOQVRDSCA9IDQyCi1FTk9DU0kgPSA0MwotRUwySExUID0gNDQKLUVERUFETEsgPSA0NQotRU5PTENLID0gNDYKLUVDQU5DRUxFRCA9IDQ3Ci1FTk9UU1VQID0gNDgKLUVEUVVPVCA9IDQ5Ci1FQkFERSA9IDUwCi1FQkFEUiA9IDUxCi1FWEZVTEwgPSA1MgotRU5PQU5PID0gNTMKLUVCQURSUUMgPSA1NAotRUJBRFNMVCA9IDU1Ci1FREVBRExPQ0sgPSA1NgotRUJGT05UID0gNTcKLUVPV05FUkRFQUQgPSA1OAotRU5PVFJFQ09WRVJBQkxFID0gNTkKLUVOT1NUUiA9IDYwCi1FTk9EQVRBID0gNjEKLUVUSU1FID0gNjIKLUVOT1NSID0gNjMKLUVOT05FVCA9IDY0Ci1FTk9QS0cgPSA2NQotRVJFTU9URSA9IDY2Ci1FTk9MSU5LID0gNjcKLUVBRFYgPSA2OAotRVNSTU5UID0gNjkKLUVDT01NID0gNzAKLUVQUk9UTyA9IDcxCi1FTE9DS1VOTUFQUEVEID0gNzIKLUVOT1RBQ1RJVkUgPSA3MwotRU1VTFRJSE9QID0gNzQKLUVCQURNU0cgPSA3NwotRU5BTUVUT09MT05HID0gNzgKLUVPVkVSRkxPVyA9IDc5Ci1FTk9UVU5JUSA9IDgwCi1FQkFERkQgPSA4MQotRVJFTUNIRyA9IDgyCi1FTElCQUNDID0gODMKLUVMSUJCQUQgPSA4NAotRUxJQlNDTiA9IDg1Ci1FTElCTUFYID0gODYKLUVMSUJFWEVDID0gODcKLUVJTFNFUSA9IDg4Ci1FTk9TWVMgPSA4OQotRUxPT1AgPSA5MAotRVJFU1RBUlQgPSA5MQotRVNUUlBJUEUgPSA5MgotRU5PVEVNUFRZID0gOTMKLUVVU0VSUyA9IDk0Ci1FTk9UU09DSyA9IDk1Ci1FREVTVEFERFJSRVEgPSA5NgotRU1TR1NJWkUgPSA5NwotRVBST1RPVFlQRSA9IDk4Ci1FTk9QUk9UT09QVCA9IDk5Ci1FUFJPVE9OT1NVUFBPUlQgPSAxMjAKLUVTT0NLVE5PU1VQUE9SVCA9IDEyMQotRU9QTk9UU1VQUCA9IDEyMgotRVBGTk9TVVBQT1JUID0gMTIzCi1FQUZOT1NVUFBPUlQgPSAxMjQKLUVBRERSSU5VU0UgPSAxMjUKLUVBRERSTk9UQVZBSUwgPSAxMjYKLUVORVRET1dOID0gMTI3Ci1FTkVUVU5SRUFDSCA9IDEyOAotRU5FVFJFU0VUID0gMTI5Ci1FQ09OTkFCT1JURUQgPSAxMzAKLUVDT05OUkVTRVQgPSAxMzEKLUVOT0JVRlMgPSAxMzIKLUVJU0NPTk4gPSAxMzMKLUVOT1RDT05OID0gMTM0Ci1FU0hVVERPV04gPSAxNDMKLUVUT09NQU5ZUkVGUyA9IDE0NAotRVRJTUVET1VUID0gMTQ1Ci1FQ09OTlJFRlVTRUQgPSAxNDYKLUVIT1NURE9XTiA9IDE0NwotRUhPU1RVTlJFQUNIID0gMTQ4Ci1FV09VTERCTE9DSyA9IEVBR0FJTgotRUFMUkVBRFkgPSAxNDkKLUVJTlBST0dSRVNTID0gMTUwCi1FU1RBTEUgPSAxNTEKLVBTQVJHU1ogPSA4MAotUFNDT01TSVogPSAxNAotTUFYQ09NTEVOID0gMTYKLV9fS0VSTl9OQVVYVl9JTVBMID0gMTkKLV9fS0VSTl9OQVVYVl9JTVBMID0gMjEKLV9fS0VSTl9OQVVYVl9JTVBMID0gMjEKLVBTQVJHU1ogPSA4MAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3dhdGNocG9pbnQuaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotCi0jIEluY2x1ZGVkIGZyb20gdm0vc2VnX2VudW0uaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2NvcHlvcHMuaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2J1Zi5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMva3N0YXQuaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotS1NUQVRfU1RSTEVOID0gMzEKLWRlZiBLU1RBVF9FTlRFUihrKTogcmV0dXJuIFwKLQotZGVmIEtTVEFUX0VYSVQoayk6IHJldHVybiBcCi0KLUtTVEFUX1RZUEVfUkFXID0gMAotS1NUQVRfVFlQRV9OQU1FRCA9IDEKLUtTVEFUX1RZUEVfSU5UUiA9IDIKLUtTVEFUX1RZUEVfSU8gPSAzCi1LU1RBVF9UWVBFX1RJTUVSID0gNAotS1NUQVRfTlVNX1RZUEVTID0gNQotS1NUQVRfRkxBR19WSVJUVUFMID0gMHgwMQotS1NUQVRfRkxBR19WQVJfU0laRSA9IDB4MDIKLUtTVEFUX0ZMQUdfV1JJVEFCTEUgPSAweDA0Ci1LU1RBVF9GTEFHX1BFUlNJU1RFTlQgPSAweDA4Ci1LU1RBVF9GTEFHX0RPUk1BTlQgPSAweDEwCi1LU1RBVF9GTEFHX0lOVkFMSUQgPSAweDIwCi1LU1RBVF9SRUFEID0gMAotS1NUQVRfV1JJVEUgPSAxCi1LU1RBVF9EQVRBX0NIQVIgPSAwCi1LU1RBVF9EQVRBX0lOVDMyID0gMQotS1NUQVRfREFUQV9VSU5UMzIgPSAyCi1LU1RBVF9EQVRBX0lOVDY0ID0gMwotS1NUQVRfREFUQV9VSU5UNjQgPSA0Ci1LU1RBVF9EQVRBX0xPTkcgPSBLU1RBVF9EQVRBX0lOVDMyCi1LU1RBVF9EQVRBX1VMT05HID0gS1NUQVRfREFUQV9VSU5UMzIKLUtTVEFUX0RBVEFfTE9ORyA9IEtTVEFUX0RBVEFfSU5UNjQKLUtTVEFUX0RBVEFfVUxPTkcgPSBLU1RBVF9EQVRBX1VJTlQ2NAotS1NUQVRfREFUQV9MT05HID0gNwotS1NUQVRfREFUQV9VTE9ORyA9IDgKLUtTVEFUX0RBVEFfTE9OR0xPTkcgPSBLU1RBVF9EQVRBX0lOVDY0Ci1LU1RBVF9EQVRBX1VMT05HTE9ORyA9IEtTVEFUX0RBVEFfVUlOVDY0Ci1LU1RBVF9EQVRBX0ZMT0FUID0gNQotS1NUQVRfREFUQV9ET1VCTEUgPSA2Ci1LU1RBVF9JTlRSX0hBUkQgPSAwCi1LU1RBVF9JTlRSX1NPRlQgPSAxCi1LU1RBVF9JTlRSX1dBVENIRE9HID0gMgotS1NUQVRfSU5UUl9TUFVSSU9VUyA9IDMKLUtTVEFUX0lOVFJfTVVMVFNWQyA9IDQKLUtTVEFUX05VTV9JTlRSUyA9IDUKLUJfQlVTWSA9IDB4MDAwMQotQl9ET05FID0gMHgwMDAyCi1CX0VSUk9SID0gMHgwMDA0Ci1CX1BBR0VJTyA9IDB4MDAxMAotQl9QSFlTID0gMHgwMDIwCi1CX1JFQUQgPSAweDAwNDAKLUJfV1JJVEUgPSAweDAxMDAKLUJfS0VSTkJVRiA9IDB4MDAwOAotQl9XQU5URUQgPSAweDAwODAKLUJfQUdFID0gMHgwMDAyMDAKLUJfQVNZTkMgPSAweDAwMDQwMAotQl9ERUxXUkkgPSAweDAwMDgwMAotQl9TVEFMRSA9IDB4MDAxMDAwCi1CX0RPTlRORUVEID0gMHgwMDIwMDAKLUJfUkVNQVBQRUQgPSAweDAwNDAwMAotQl9GUkVFID0gMHgwMDgwMDAKLUJfSU5WQUwgPSAweDAxMDAwMAotQl9GT1JDRSA9IDB4MDIwMDAwCi1CX0hFQUQgPSAweDA0MDAwMAotQl9OT0NBQ0hFID0gMHgwODAwMDAKLUJfVFJVTkMgPSAweDEwMDAwMAotQl9TSEFET1cgPSAweDIwMDAwMAotQl9SRVRSWVdSSSA9IDB4NDAwMDAwCi1kZWYgbm90YXZhaWwoYnApOiByZXR1cm4gXAotCi1kZWYgQldSSVRFKGJwKTogcmV0dXJuIFwKLQotZGVmIEJXUklURTIoYnApOiByZXR1cm4gXAotCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvYWlvX3JlcS5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdWlvLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLVdQX05PV0FUQ0ggPSAweDAxCi1XUF9TRVRQUk9UID0gMHgwMgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3RpbWVyLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLV9USU1FUl9NQVggPSAzMgotSVRMS19MT0NLRUQgPSAweDAxCi1JVExLX1dBTlRFRCA9IDB4MDIKLUlUTEtfUkVNT1ZFID0gMHgwNAotSVRfUEVSTFdQID0gMHgwMQotSVRfU0lHTkFMID0gMHgwMgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3V0cmFwLmgKLVVUX0lOU1RSVUNUSU9OX0RJU0FCTEVEID0gMQotVVRfSU5TVFJVQ1RJT05fRVJST1IgPSAyCi1VVF9JTlNUUlVDVElPTl9QUk9URUNUSU9OID0gMwotVVRfSUxMVFJBUF9JTlNUUlVDVElPTiA9IDQKLVVUX0lMTEVHQUxfSU5TVFJVQ1RJT04gPSA1Ci1VVF9QUklWSUxFR0VEX09QQ09ERSA9IDYKLVVUX0ZQX0RJU0FCTEVEID0gNwotVVRfRlBfRVhDRVBUSU9OX0lFRUVfNzU0ID0gOAotVVRfRlBfRVhDRVBUSU9OX09USEVSID0gOQotVVRfVEFHX09WRVJGTE9XID0gMTAKLVVUX0RJVklTSU9OX0JZX1pFUk8gPSAxMQotVVRfREFUQV9FWENFUFRJT04gPSAxMgotVVRfREFUQV9FUlJPUiA9IDEzCi1VVF9EQVRBX1BST1RFQ1RJT04gPSAxNAotVVRfTUVNX0FERFJFU1NfTk9UX0FMSUdORUQgPSAxNQotVVRfUFJJVklMRUdFRF9BQ1RJT04gPSAxNgotVVRfQVNZTkNfREFUQV9FUlJPUiA9IDE3Ci1VVF9UUkFQX0lOU1RSVUNUSU9OXzE2ID0gMTgKLVVUX1RSQVBfSU5TVFJVQ1RJT05fMTcgPSAxOQotVVRfVFJBUF9JTlNUUlVDVElPTl8xOCA9IDIwCi1VVF9UUkFQX0lOU1RSVUNUSU9OXzE5ID0gMjEKLVVUX1RSQVBfSU5TVFJVQ1RJT05fMjAgPSAyMgotVVRfVFJBUF9JTlNUUlVDVElPTl8yMSA9IDIzCi1VVF9UUkFQX0lOU1RSVUNUSU9OXzIyID0gMjQKLVVUX1RSQVBfSU5TVFJVQ1RJT05fMjMgPSAyNQotVVRfVFJBUF9JTlNUUlVDVElPTl8yNCA9IDI2Ci1VVF9UUkFQX0lOU1RSVUNUSU9OXzI1ID0gMjcKLVVUX1RSQVBfSU5TVFJVQ1RJT05fMjYgPSAyOAotVVRfVFJBUF9JTlNUUlVDVElPTl8yNyA9IDI5Ci1VVF9UUkFQX0lOU1RSVUNUSU9OXzI4ID0gMzAKLVVUX1RSQVBfSU5TVFJVQ1RJT05fMjkgPSAzMQotVVRfVFJBUF9JTlNUUlVDVElPTl8zMCA9IDMyCi1VVF9UUkFQX0lOU1RSVUNUSU9OXzMxID0gMzMKLVVUUkFQX1Y4UF9GUF9ESVNBQkxFRCA9IFVUX0ZQX0RJU0FCTEVECi1VVFJBUF9WOFBfTUVNX0FERFJFU1NfTk9UX0FMSUdORUQgPSBVVF9NRU1fQUREUkVTU19OT1RfQUxJR05FRAotVVRfUFJFQ0lTRV9NQVhUUkFQUyA9IDMzCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvcmVmc3RyLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy90YXNrLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLVRBU0tfTk9STUFMID0gMHgwCi1UQVNLX0ZJTkFMID0gMHgxCi1UQVNLX0ZJTkFMSVRZID0gMHgxCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvaWRfc3BhY2UuaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3ZtZW0uaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotVk1fU0xFRVAgPSAweDAwMDAwMDAwCi1WTV9OT1NMRUVQID0gMHgwMDAwMDAwMQotVk1fUEFOSUMgPSAweDAwMDAwMDAyCi1WTV9LTUZMQUdTID0gMHgwMDAwMDBmZgotVk1fQkVTVEZJVCA9IDB4MDAwMDAxMDAKLVZNRU1fQUxMT0MgPSAweDAxCi1WTUVNX0ZSRUUgPSAweDAyCi1WTUVNX1NQQU4gPSAweDEwCi1JU1BfTk9STUFMID0gMHgwCi1JU1BfUkVTRVJWRSA9IDB4MQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2V4YWNjdF9pbXBsLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9rbWVtLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLUtNX1NMRUVQID0gMHgwMDAwCi1LTV9OT1NMRUVQID0gMHgwMDAxCi1LTV9QQU5JQyA9IDB4MDAwMgotS01fVk1GTEFHUyA9IDB4MDBmZgotS01fRkxBR1MgPSAweGZmZmYKLUtNQ19OT1RPVUNIID0gMHgwMDAxMDAwMAotS01DX05PREVCVUcgPSAweDAwMDIwMDAwCi1LTUNfTk9NQUdBWklORSA9IDB4MDAwNDAwMDAKLUtNQ19OT0hBU0ggPSAweDAwMDgwMDAwCi1LTUNfUUNBQ0hFID0gMHgwMDEwMDAwMAotX0lTQV9JQTMyID0gMAotX0lTQV9JQTY0ID0gMQotU1NMRUVQID0gMQotU1JVTiA9IDIKLVNaT01CID0gMwotU1NUT1AgPSA0Ci1TSURMID0gNQotU09OUFJPQyA9IDYKLUNMRFBFTkQgPSAweDAwMDEKLUNMRENPTlQgPSAweDAwMDIKLVNTWVMgPSAweDAwMDAwMDAxCi1TVFJDID0gMHgwMDAwMDAwMgotU0xPQUQgPSAweDAwMDAwMDA4Ci1TTE9DSyA9IDB4MDAwMDAwMTAKLVNQUkVYRUMgPSAweDAwMDAwMDIwCi1TUFJPQ1RSID0gMHgwMDAwMDA0MAotU1BSRk9SSyA9IDB4MDAwMDAwODAKLVNLSUxMRUQgPSAweDAwMDAwMTAwCi1TVUxPQUQgPSAweDAwMDAwMjAwCi1TUlVOTENMID0gMHgwMDAwMDQwMAotU0JQVEFESiA9IDB4MDAwMDA4MDAKLVNLSUxMQ0wgPSAweDAwMDAxMDAwCi1TT1dFVVBDID0gMHgwMDAwMjAwMAotU0VYRUNFRCA9IDB4MDAwMDQwMDAKLVNQQVNZTkMgPSAweDAwMDA4MDAwCi1TSkNUTCA9IDB4MDAwMTAwMDAKLVNOT1dBSVQgPSAweDAwMDIwMDAwCi1TVkZPUksgPSAweDAwMDQwMDAwCi1TVkZXQUlUID0gMHgwMDA4MDAwMAotRVhJVExXUFMgPSAweDAwMTAwMDAwCi1IT0xERk9SSyA9IDB4MDAyMDAwMDAKLVNXQUlUU0lHID0gMHgwMDQwMDAwMAotSE9MREZPUksxID0gMHgwMDgwMDAwMAotQ09SRURVTVAgPSAweDAxMDAwMDAwCi1TTVNBQ0NUID0gMHgwMjAwMDAwMAotQVNMV1AgPSAweDA0MDAwMDAwCi1TUFJMT0NLID0gMHgwODAwMDAwMAotTk9DRCA9IDB4MTAwMDAwMDAKLUhPTERXQVRDSCA9IDB4MjAwMDAwMDAKLVNNU0ZPUksgPSAweDQwMDAwMDAwCi1TRE9DT1JFID0gMHg4MDAwMDAwMAotRk9SUkVBTCA9IDAKLUpVU1RMT09LSU5HID0gMQotU1VTUEVORF9OT1JNQUwgPSAwCi1TVVNQRU5EX1BBVVNFID0gMQotTk9DTEFTUyA9ICgtMSkKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9kZGl0eXBlcy5oCi1ERElfREVWSUNFX0FUVFJfVjAgPSAweDAwMDEKLURESV9ORVZFUlNXQVBfQUNDID0gMHgwMAotRERJX1NUUlVDVFVSRV9MRV9BQ0MgPSAweDAxCi1ERElfU1RSVUNUVVJFX0JFX0FDQyA9IDB4MDIKLURESV9TVFJJQ1RPUkRFUl9BQ0MgPSAweDAwCi1ERElfVU5PUkRFUkVEX09LX0FDQyA9IDB4MDEKLURESV9NRVJHSU5HX09LX0FDQyA9IDB4MDIKLURESV9MT0FEQ0FDSElOR19PS19BQ0MgPSAweDAzCi1ERElfU1RPUkVDQUNISU5HX09LX0FDQyA9IDB4MDQKLURESV9EQVRBX1NaMDFfQUNDID0gMQotRERJX0RBVEFfU1owMl9BQ0MgPSAyCi1ERElfREFUQV9TWjA0X0FDQyA9IDQKLURESV9EQVRBX1NaMDhfQUNDID0gOAotVkVSU19BQ0NIREwgPSAweDAwMDEKLURFVklEX05PTkUgPSAwCi1ERVZJRF9TQ1NJM19XV04gPSAxCi1ERVZJRF9TQ1NJX1NFUklBTCA9IDIKLURFVklEX0ZBQiA9IDMKLURFVklEX0VOQ0FQID0gNAotREVWSURfTUFYVFlQRSA9IDQKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy92YXJhcmdzLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy92YV9saXN0LmgKLVZBX0FMSUdOID0gOAotZGVmIF9BUkdTSVpFT0YodCk6IHJldHVybiAoKHNpemVvZiAodCkgKyBWQV9BTElHTiAtIDEpICYgfihWQV9BTElHTiAtIDEpKQotCi1WQV9BTElHTiA9IDgKLWRlZiBfQVJHU0laRU9GKHQpOiByZXR1cm4gKChzaXplb2YgKHQpICsgVkFfQUxJR04gLSAxKSAmIH4oVkFfQUxJR04gLSAxKSkKLQotTlNZU0NBTEwgPSAyNTYKLVNFXzMyUlZBTDEgPSAweDAKLVNFXzMyUlZBTDIgPSAweDEKLVNFXzY0UlZBTCA9IDB4MgotU0VfUlZBTF9NQVNLID0gMHgzCi1TRV9MT0FEQUJMRSA9IDB4MDgKLVNFX0xPQURFRCA9IDB4MTAKLVNFX05PVU5MT0FEID0gMHgyMAotU0VfQVJHQyA9IDB4NDAKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9kZXZvcHMuaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3BvbGwuaAotUE9MTElOID0gMHgwMDAxCi1QT0xMUFJJID0gMHgwMDAyCi1QT0xMT1VUID0gMHgwMDA0Ci1QT0xMUkROT1JNID0gMHgwMDQwCi1QT0xMV1JOT1JNID0gUE9MTE9VVAotUE9MTFJEQkFORCA9IDB4MDA4MAotUE9MTFdSQkFORCA9IDB4MDEwMAotUE9MTE5PUk0gPSBQT0xMUkROT1JNCi1QT0xMRVJSID0gMHgwMDA4Ci1QT0xMSFVQID0gMHgwMDEwCi1QT0xMTlZBTCA9IDB4MDAyMAotUE9MTFJFTU9WRSA9IDB4MDgwMAotUE9MTFJEREFUQSA9IDB4MDIwMAotUE9MTE5PRVJSID0gMHgwNDAwCi1QT0xMQ0xPU0VEID0gMHg4MDAwCi0KLSMgSW5jbHVkZWQgZnJvbSB2bS9hcy5oCi0KLSMgSW5jbHVkZWQgZnJvbSB2bS9zZWcuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3Zub2RlLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLVZST09UID0gMHgwMQotVk5PQ0FDSEUgPSAweDAyCi1WTk9NQVAgPSAweDA0Ci1WRFVQID0gMHgwOAotVk5PU1dBUCA9IDB4MTAKLVZOT01PVU5UID0gMHgyMAotVklTU1dBUCA9IDB4NDAKLVZTV0FQTElLRSA9IDB4ODAKLVZWRlNMT0NLID0gMHgxMDAKLVZWRlNXQUlUID0gMHgyMDAKLVZWTUxPQ0sgPSAweDQwMAotVkRJUk9QRU4gPSAweDgwMAotVlZNRVhFQyA9IDB4MTAwMAotVlBYRlMgPSAweDIwMDAKLUFUX1RZUEUgPSAweDAwMDEKLUFUX01PREUgPSAweDAwMDIKLUFUX1VJRCA9IDB4MDAwNAotQVRfR0lEID0gMHgwMDA4Ci1BVF9GU0lEID0gMHgwMDEwCi1BVF9OT0RFSUQgPSAweDAwMjAKLUFUX05MSU5LID0gMHgwMDQwCi1BVF9TSVpFID0gMHgwMDgwCi1BVF9BVElNRSA9IDB4MDEwMAotQVRfTVRJTUUgPSAweDAyMDAKLUFUX0NUSU1FID0gMHgwNDAwCi1BVF9SREVWID0gMHgwODAwCi1BVF9CTEtTSVpFID0gMHgxMDAwCi1BVF9OQkxPQ0tTID0gMHgyMDAwCi1BVF9WQ09ERSA9IDB4NDAwMAotQVRfQUxMID0gKEFUX1RZUEV8QVRfTU9ERXxBVF9VSUR8QVRfR0lEfEFUX0ZTSUR8QVRfTk9ERUlEfFwKLSAgICAgICAgICAgICAgICAgICAgICAgIEFUX05MSU5LfEFUX1NJWkV8QVRfQVRJTUV8QVRfTVRJTUV8QVRfQ1RJTUV8XAotICAgICAgICAgICAgICAgICAgICAgICAgQVRfUkRFVnxBVF9CTEtTSVpFfEFUX05CTE9DS1N8QVRfVkNPREUpCi1BVF9TVEFUID0gKEFUX01PREV8QVRfVUlEfEFUX0dJRHxBVF9GU0lEfEFUX05PREVJRHxBVF9OTElOS3xcCi0gICAgICAgICAgICAgICAgICAgICAgICBBVF9TSVpFfEFUX0FUSU1FfEFUX01USU1FfEFUX0NUSU1FfEFUX1JERVYpCi1BVF9USU1FUyA9IChBVF9BVElNRXxBVF9NVElNRXxBVF9DVElNRSkKLUFUX05PU0VUID0gKEFUX05MSU5LfEFUX1JERVZ8QVRfRlNJRHxBVF9OT0RFSUR8QVRfVFlQRXxcCi0gICAgICAgICAgICAgICAgICAgICAgICBBVF9CTEtTSVpFfEFUX05CTE9DS1N8QVRfVkNPREUpCi1WU1VJRCA9IDBvNDAwMAotVlNHSUQgPSAwbzIwMDAKLVZTVlRYID0gMG8xMDAwCi1WUkVBRCA9IDBvMDQwMAotVldSSVRFID0gMG8wMjAwCi1WRVhFQyA9IDBvMDEwMAotTU9ERU1BU0sgPSAwbzc3NzcKLVBFUk1NQVNLID0gMG8wNzc3Ci1kZWYgTUFORE1PREUobW9kZSk6IHJldHVybiAoKChtb2RlKSAmIChWU0dJRHwoVkVYRUM+PjMpKSkgPT0gVlNHSUQpCi0KLVZTQV9BQ0wgPSAweDAwMDEKLVZTQV9BQ0xDTlQgPSAweDAwMDIKLVZTQV9ERkFDTCA9IDB4MDAwNAotVlNBX0RGQUNMQ05UID0gMHgwMDA4Ci1MT09LVVBfRElSID0gMHgwMQotRFVNUF9BTExPQyA9IDAKLURVTVBfRlJFRSA9IDEKLURVTVBfU0NBTiA9IDIKLUFUVFJfVVRJTUUgPSAweDAxCi1BVFRSX0VYRUMgPSAweDAyCi1BVFRSX0NPTU0gPSAweDA0Ci1BVFRSX0hJTlQgPSAweDA4Ci1BVFRSX1JFQUwgPSAweDEwCi0KLSMgSW5jbHVkZWQgZnJvbSB2bS9mYXVsdGNvZGUuaAotRkNfSFdFUlIgPSAweDEKLUZDX0FMSUdOID0gMHgyCi1GQ19PQkpFUlIgPSAweDMKLUZDX1BST1QgPSAweDQKLUZDX05PTUFQID0gMHg1Ci1GQ19OT1NVUFBPUlQgPSAweDYKLWRlZiBGQ19NQUtFX0VSUihlKTogcmV0dXJuICgoKGUpIDw8IDgpIHwgRkNfT0JKRVJSKQotCi1kZWYgRkNfQ09ERShmYyk6IHJldHVybiAoKGZjKSAmIDB4ZmYpCi0KLWRlZiBGQ19FUlJOTyhmYyk6IHJldHVybiAoKHVuc2lnbmVkKShmYykgPj4gOCkKLQotCi0jIEluY2x1ZGVkIGZyb20gdm0vaGF0LmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLQotIyBJbmNsdWRlZCBmcm9tIHZtL3BhZ2UuaAotUEFHRV9IQVNIQVZFTEVOID0gNAotUEFHRV9IQVNIVlBTSElGVCA9IDYKLVBHX0VYQ0wgPSAweDAwMDEKLVBHX1dBSVQgPSAweDAwMDIKLVBHX1BIWVNDT05USUcgPSAweDAwMDQKLVBHX01BVENIX0NPTE9SID0gMHgwMDA4Ci1QR19OT1JFTE9DID0gMHgwMDEwCi1QR19GUkVFX0xJU1QgPSAxCi1QR19DQUNIRV9MSVNUID0gMgotUEdfTElTVF9UQUlMID0gMAotUEdfTElTVF9IRUFEID0gMQotZGVmIHBhZ2VfbmV4dF9yYXcoUFApOiByZXR1cm4gcGFnZV9uZXh0bl9yYXcoKFBQKSwgMSkKLQotUEFHRV9JT19JTlVTRSA9IDB4MQotUEFHRV9JT19XQU5URUQgPSAweDIKLVBHUkVMX05PVFJFTCA9IDB4MQotUEdSRUxfQ0xFQU4gPSAweDIKLVBHUkVMX01PRCA9IDB4MwotUF9GUkVFID0gMHg4MAotUF9OT1JFTE9DID0gMHg0MAotZGVmIFBQX1NFVEFHRUQocHApOiByZXR1cm4gQVNTRVJUKFBQX0lTQUdFRChwcCkpCi0KLUhBVF9GTEFHU19SRVNWID0gMHhGRjAwMDAwMAotSEFUX0xPQUQgPSAweDAwCi1IQVRfTE9BRF9MT0NLID0gMHgwMQotSEFUX0xPQURfQURWID0gMHgwNAotSEFUX0xPQURfQ09OVElHID0gMHgxMAotSEFUX0xPQURfTk9DT05TSVNUID0gMHgyMAotSEFUX0xPQURfU0hBUkUgPSAweDQwCi1IQVRfTE9BRF9SRU1BUCA9IDB4ODAKLUhBVF9SRUxPQURfU0hBUkUgPSAweDEwMAotSEFUX1BMQVRfQVRUUl9NQVNLID0gMHhGMDAwMDAKLUhBVF9QUk9UX01BU0sgPSAweDBGCi1IQVRfTk9GQVVMVCA9IDB4MTAKLUhBVF9OT1NZTkMgPSAweDIwCi1IQVRfU1RSSUNUT1JERVIgPSAweDAwMDAKLUhBVF9VTk9SREVSRURfT0sgPSAweDAxMDAKLUhBVF9NRVJHSU5HX09LID0gMHgwMjAwCi1IQVRfTE9BRENBQ0hJTkdfT0sgPSAweDAzMDAKLUhBVF9TVE9SRUNBQ0hJTkdfT0sgPSAweDA0MDAKLUhBVF9PUkRFUl9NQVNLID0gMHgwNzAwCi1IQVRfTkVWRVJTV0FQID0gMHgwMDAwCi1IQVRfU1RSVUNUVVJFX0JFID0gMHgxMDAwCi1IQVRfU1RSVUNUVVJFX0xFID0gMHgyMDAwCi1IQVRfRU5ESUFOX01BU0sgPSAweDMwMDAKLUhBVF9DT1cgPSAweDAwMDEKLUhBVF9VTkxPQUQgPSAweDAwCi1IQVRfVU5MT0FEX05PU1lOQyA9IDB4MDIKLUhBVF9VTkxPQURfVU5MT0NLID0gMHgwNAotSEFUX1VOTE9BRF9PVEhFUiA9IDB4MDgKLUhBVF9VTkxPQURfVU5NQVAgPSAweDEwCi1IQVRfU1lOQ19ET05UWkVSTyA9IDB4MDAKLUhBVF9TWU5DX1pFUk9STSA9IDB4MDEKLUhBVF9TWU5DX1NUT1BPTl9SRUYgPSAweDAyCi1IQVRfU1lOQ19TVE9QT05fTU9EID0gMHgwNAotSEFUX1NZTkNfU1RPUE9OX1JNID0gKEhBVF9TWU5DX1NUT1BPTl9SRUYgfCBIQVRfU1lOQ19TVE9QT05fTU9EKQotSEFUX0RVUF9BTEwgPSAxCi1IQVRfRFVQX0NPVyA9IDIKLUhBVF9NQVAgPSAweDAwCi1IQVRfQURWX1BHVU5MT0FEID0gMHgwMAotSEFUX0ZPUkNFX1BHVU5MT0FEID0gMHgwMQotUF9NT0QgPSAweDEKLVBfUkVGID0gMHgyCi1QX1JPID0gMHg0Ci1kZWYgaGF0X2lzbW9kKHBwKTogcmV0dXJuIChoYXRfcGFnZV9nZXRhdHRyKHBwLCBQX01PRCkpCi0KLWRlZiBoYXRfaXNyZWYocHApOiByZXR1cm4gKGhhdF9wYWdlX2dldGF0dHIocHAsIFBfUkVGKSkKLQotZGVmIGhhdF9pc3JvKHBwKTogcmV0dXJuIChoYXRfcGFnZV9nZXRhdHRyKHBwLCBQX1JPKSkKLQotZGVmIGhhdF9zZXRtb2QocHApOiByZXR1cm4gKGhhdF9wYWdlX3NldGF0dHIocHAsIFBfTU9EKSkKLQotZGVmIGhhdF9zZXRyZWYocHApOiByZXR1cm4gKGhhdF9wYWdlX3NldGF0dHIocHAsIFBfUkVGKSkKLQotZGVmIGhhdF9zZXRyZWZtb2QocHApOiByZXR1cm4gKGhhdF9wYWdlX3NldGF0dHIocHAsIFBfUkVGfFBfTU9EKSkKLQotZGVmIGhhdF9jbHJtb2QocHApOiByZXR1cm4gKGhhdF9wYWdlX2NscmF0dHIocHAsIFBfTU9EKSkKLQotZGVmIGhhdF9jbHJyZWYocHApOiByZXR1cm4gKGhhdF9wYWdlX2NscmF0dHIocHAsIFBfUkVGKSkKLQotZGVmIGhhdF9jbHJyZWZtb2QocHApOiByZXR1cm4gKGhhdF9wYWdlX2NscmF0dHIocHAsIFBfUkVGfFBfTU9EKSkKLQotZGVmIGhhdF9wYWdlX2lzX21hcHBlZChwcCk6IHJldHVybiAoaGF0X3BhZ2VfZ2V0c2hhcmUocHApKQotCi1IQVRfRE9OVEFMTE9DID0gMAotSEFUX0FMTE9DID0gMQotSFJNX1NISUZUID0gNAotSFJNX0JZVEVTID0gKDEgPDwgSFJNX1NISUZUKQotSFJNX1BBR0VTID0gKChIUk1fQllURVMgKiBOQkJZKSAvIDIpCi1IUk1fUEdQRVJCWVRFID0gKE5CQlkvMikKLUhSTV9QR0JZVEVNQVNLID0gKEhSTV9QR1BFUkJZVEUtMSkKLUhSTV9IQVNIU0laRSA9IDB4MjAwCi1IUk1fSEFTSE1BU0sgPSAoSFJNX0hBU0hTSVpFIC0gMSkKLUhSTV9CTElTVF9JTkNSID0gMHgyMDAKLUhSTV9TV1NNT05JRCA9IDEKLVNTTF9OTEVWRUxTID0gNAotU1NMX0JGQUNUT1IgPSA0Ci1TU0xfTE9HMkJGID0gMgotU0VHUF9BU1lOQ19GTFVTSCA9IDB4MQotU0VHUF9GT1JDRV9XSVJFRCA9IDB4MgotU0VHUF9TVUNDRVNTID0gMAotU0VHUF9GQUlMID0gMQotZGVmIHNlZ19wYWdlcyhzZWcpOiByZXR1cm4gXAotCi1JRV9OT01FTSA9IC0xCi1BU19QQUdMQ0sgPSAweDgwCi1BU19DTEFJTUdBUCA9IDB4NDAKLUFTX1VOTUFQV0FJVCA9IDB4MjAKLWRlZiBBU19UWVBFXzY0QklUKGFzXyk6IHJldHVybiBcCi0KLUFTX0xSRVBfTElOS0VETElTVCA9IDAKLUFTX0xSRVBfU0tJUExJU1QgPSAxCi1BU19NVVRBVElPTl9USFJFU0ggPSAyMjUKLUFIX0RJUiA9IDB4MQotQUhfTE8gPSAweDAKLUFIX0hJID0gMHgxCi1BSF9DT05UQUlOID0gMHgyCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvZGRpZG1hcmVxLmgKLURNQV9VTklUXzggPSAxCi1ETUFfVU5JVF8xNiA9IDIKLURNQV9VTklUXzMyID0gNAotRE1BTElNX1ZFUjAgPSAoKDB4ODYwMDAwMDApICsgMCkKLURESV9ETUFfRk9SQ0VfUEhZU0lDQUwgPSAweDAxMDAKLURNQV9BVFRSX1YwID0gMAotRE1BX0FUVFJfVkVSU0lPTiA9IERNQV9BVFRSX1YwCi1ERElfRE1BX0NBTExCQUNLX1JVTk9VVCA9IDAKLURESV9ETUFfQ0FMTEJBQ0tfRE9ORSA9IDEKLURESV9ETUFfV1JJVEUgPSAweDAwMDEKLURESV9ETUFfUkVBRCA9IDB4MDAwMgotRERJX0RNQV9SRFdSID0gKERESV9ETUFfUkVBRCB8IERESV9ETUFfV1JJVEUpCi1ERElfRE1BX1JFRFpPTkUgPSAweDAwMDQKLURESV9ETUFfUEFSVElBTCA9IDB4MDAwOAotRERJX0RNQV9DT05TSVNURU5UID0gMHgwMDEwCi1ERElfRE1BX0VYQ0xVU0lWRSA9IDB4MDAyMAotRERJX0RNQV9TVFJFQU1JTkcgPSAweDAwNDAKLURESV9ETUFfU0JVU182NEJJVCA9IDB4MjAwMAotRERJX0RNQV9NQVBQRUQgPSAwCi1ERElfRE1BX01BUE9LID0gMAotRERJX0RNQV9QQVJUSUFMX01BUCA9IDEKLURESV9ETUFfRE9ORSA9IDIKLURESV9ETUFfTk9SRVNPVVJDRVMgPSAtMQotRERJX0RNQV9OT01BUFBJTkcgPSAtMgotRERJX0RNQV9UT09CSUcgPSAtMwotRERJX0RNQV9UT09TTUFMTCA9IC00Ci1ERElfRE1BX0xPQ0tFRCA9IC01Ci1ERElfRE1BX0JBRExJTUlUUyA9IC02Ci1ERElfRE1BX1NUQUxFID0gLTcKLURESV9ETUFfQkFEQVRUUiA9IC04Ci1ERElfRE1BX0lOVVNFID0gLTkKLURESV9ETUFfU1lOQ19GT1JERVYgPSAweDAKLURESV9ETUFfU1lOQ19GT1JDUFUgPSAweDEKLURESV9ETUFfU1lOQ19GT1JLRVJORUwgPSAweDIKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9kZGltYXByZXEuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL21tYW4uaAotUFJPVF9SRUFEID0gMHgxCi1QUk9UX1dSSVRFID0gMHgyCi1QUk9UX0VYRUMgPSAweDQKLVBST1RfVVNFUiA9IDB4OAotUFJPVF9aRk9EID0gKFBST1RfUkVBRCB8IFBST1RfV1JJVEUgfCBQUk9UX0VYRUMgfCBQUk9UX1VTRVIpCi1QUk9UX0FMTCA9IChQUk9UX1JFQUQgfCBQUk9UX1dSSVRFIHwgUFJPVF9FWEVDIHwgUFJPVF9VU0VSKQotUFJPVF9OT05FID0gMHgwCi1NQVBfU0hBUkVEID0gMQotTUFQX1BSSVZBVEUgPSAyCi1NQVBfVFlQRSA9IDB4ZgotTUFQX0ZJWEVEID0gMHgxMAotTUFQX05PUkVTRVJWRSA9IDB4NDAKLU1BUF9BTk9OID0gMHgxMDAKLU1BUF9BTk9OWU1PVVMgPSBNQVBfQU5PTgotTUFQX1JFTkFNRSA9IDB4MjAKLVBST0NfVEVYVCA9IChQUk9UX0VYRUMgfCBQUk9UX1JFQUQpCi1QUk9DX0RBVEEgPSAoUFJPVF9SRUFEIHwgUFJPVF9XUklURSB8IFBST1RfRVhFQykKLVNIQVJFRCA9IDB4MTAKLVBSSVZBVEUgPSAweDIwCi1WQUxJRF9BVFRSID0gKFBST1RfUkVBRHxQUk9UX1dSSVRFfFBST1RfRVhFQ3xTSEFSRUR8UFJJVkFURSkKLVBST1RfRVhDTCA9IDB4MjAKLV9NQVBfTE9XMzIgPSAweDgwCi1fTUFQX05FVyA9IDB4ODAwMDAwMDAKLWZyb20gVFlQRVMgaW1wb3J0ICoKLU1BRFZfTk9STUFMID0gMAotTUFEVl9SQU5ET00gPSAxCi1NQURWX1NFUVVFTlRJQUwgPSAyCi1NQURWX1dJTExORUVEID0gMwotTUFEVl9ET05UTkVFRCA9IDQKLU1BRFZfRlJFRSA9IDUKLU1TX09MRFNZTkMgPSAweDAKLU1TX1NZTkMgPSAweDQKLU1TX0FTWU5DID0gMHgxCi1NU19JTlZBTElEQVRFID0gMHgyCi1NQ19TWU5DID0gMQotTUNfTE9DSyA9IDIKLU1DX1VOTE9DSyA9IDMKLU1DX0FEVklTRSA9IDQKLU1DX0xPQ0tBUyA9IDUKLU1DX1VOTE9DS0FTID0gNgotTUNMX0NVUlJFTlQgPSAweDEKLU1DTF9GVVRVUkUgPSAweDIKLURESV9NQVBfVkVSU0lPTiA9IDB4MDAwMQotRERJX01GX1VTRVJfTUFQUElORyA9IDB4MQotRERJX01GX0tFUk5FTF9NQVBQSU5HID0gMHgyCi1ERElfTUZfREVWSUNFX01BUFBJTkcgPSAweDQKLURESV9NRV9HRU5FUklDID0gKC0xKQotRERJX01FX1VOSU1QTEVNRU5URUQgPSAoLTIpCi1ERElfTUVfTk9SRVNPVVJDRVMgPSAoLTMpCi1ERElfTUVfVU5TVVBQT1JURUQgPSAoLTQpCi1ERElfTUVfUkVHU1BFQ19SQU5HRSA9ICgtNSkKLURESV9NRV9STlVNQkVSX1JBTkdFID0gKC02KQotRERJX01FX0lOVkFMID0gKC03KQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2RkaXByb3BkZWZzLmgKLWRlZiBDRUxMU18xMjc1X1RPX0JZVEVTKG4pOiByZXR1cm4gKChuKSAqIFBST1BfMTI3NV9DRUxMX1NJWkUpCi0KLWRlZiBCWVRFU19UT18xMjc1X0NFTExTKG4pOiByZXR1cm4gKChuKSAvIFBST1BfMTI3NV9DRUxMX1NJWkUpCi0KLVBIX0ZST01fUFJPTSA9IDB4MDEKLURESV9QUk9QX1NVQ0NFU1MgPSAwCi1ERElfUFJPUF9OT1RfRk9VTkQgPSAxCi1ERElfUFJPUF9VTkRFRklORUQgPSAyCi1ERElfUFJPUF9OT19NRU1PUlkgPSAzCi1ERElfUFJPUF9JTlZBTF9BUkcgPSA0Ci1ERElfUFJPUF9CVUZfVE9PX1NNQUxMID0gNQotRERJX1BST1BfQ0FOTk9UX0RFQ09ERSA9IDYKLURESV9QUk9QX0NBTk5PVF9FTkNPREUgPSA3Ci1ERElfUFJPUF9FTkRfT0ZfREFUQSA9IDgKLURESV9QUk9QX0ZPVU5EXzEyNzUgPSAyNTUKLVBST1BfMTI3NV9JTlRfU0laRSA9IDQKLURESV9QUk9QX0RPTlRQQVNTID0gMHgwMDAxCi1ERElfUFJPUF9DQU5TTEVFUCA9IDB4MDAwMgotRERJX1BST1BfU1lTVEVNX0RFRiA9IDB4MDAwNAotRERJX1BST1BfTk9UUFJPTSA9IDB4MDAwOAotRERJX1BST1BfRE9OVFNMRUVQID0gMHgwMDEwCi1ERElfUFJPUF9TVEFDS19DUkVBVEUgPSAweDAwMjAKLURESV9QUk9QX1VOREVGX0lUID0gMHgwMDQwCi1ERElfUFJPUF9IV19ERUYgPSAweDAwODAKLURESV9QUk9QX1RZUEVfSU5UID0gMHgwMTAwCi1ERElfUFJPUF9UWVBFX1NUUklORyA9IDB4MDIwMAotRERJX1BST1BfVFlQRV9CWVRFID0gMHgwNDAwCi1ERElfUFJPUF9UWVBFX0NPTVBPU0lURSA9IDB4MDgwMAotRERJX1BST1BfVFlQRV9BTlkgPSAoRERJX1BST1BfVFlQRV9JTlQgIHwgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERESV9QUk9QX1RZUEVfU1RSSU5HICAgIHwgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERESV9QUk9QX1RZUEVfQllURSAgICAgIHwgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERESV9QUk9QX1RZUEVfQ09NUE9TSVRFKQotRERJX1BST1BfVFlQRV9NQVNLID0gKERESV9QUk9QX1RZUEVfSU5UIHwgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERESV9QUk9QX1RZUEVfU1RSSU5HICAgIHwgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERESV9QUk9QX1RZUEVfQllURSAgICAgIHwgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERESV9QUk9QX1RZUEVfQ09NUE9TSVRFKQotRERJX1JFTEFUSVZFX0FERFJFU1NJTkcgPSAicmVsYXRpdmUtYWRkcmVzc2luZyIKLURESV9HRU5FUklDX0FERFJFU1NJTkcgPSAiZ2VuZXJpYy1hZGRyZXNzaW5nIgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2RkaWRldm1hcC5oCi1LTUVNX1BBR0VBQkxFID0gMHgxMDAKLUtNRU1fTk9OX1BBR0VBQkxFID0gMHgyMDAKLVVNRU1fTE9DS0VEID0gMHg0MDAKLVVNRU1fVFJBU0ggPSAweDgwMAotREVWTUFQX09QU19SRVYgPSAxCi1ERVZNQVBfREVGQVVMVFMgPSAweDAwCi1ERVZNQVBfTUFQUElOR19JTlZBTElEID0gMHgwMQotREVWTUFQX0FMTE9XX1JFTUFQID0gMHgwMgotREVWTUFQX1VTRV9QQUdFU0laRSA9IDB4MDQKLURFVk1BUF9TRVRVUF9GTEFHUyA9IFwKLSAgICAgICAgKERFVk1BUF9NQVBQSU5HX0lOVkFMSUQgfCBERVZNQVBfQUxMT1dfUkVNQVAgfCBERVZNQVBfVVNFX1BBR0VTSVpFKQotREVWTUFQX1NFVFVQX0RPTkUgPSAweDEwMAotREVWTUFQX0xPQ0tfSU5JVEVEID0gMHgyMDAKLURFVk1BUF9GQVVMVElORyA9IDB4NDAwCi1ERVZNQVBfTE9DS0VEID0gMHg4MDAKLURFVk1BUF9GTEFHX0xBUkdFID0gMHgxMDAwCi1ERElfVU1FTV9TTEVFUCA9IDB4MAotRERJX1VNRU1fTk9TTEVFUCA9IDB4MDEKLURESV9VTUVNX1BBR0VBQkxFID0gMHgwMgotRERJX1VNRU1fVFJBU0ggPSAweDA0Ci1ERElfVU1FTUxPQ0tfUkVBRCA9IDB4MDEKLURESV9VTUVNTE9DS19XUklURSA9IDB4MDIKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9uZXh1c2RlZnMuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL25leHVzaW50ci5oCi1CVVNPX1JFViA9IDQKLUJVU09fUkVWXzMgPSAzCi1CVVNPX1JFVl80ID0gNAotREVWT19SRVYgPSAzCi1DQl9SRVYgPSAxCi1ERElfSURFTlRJRklFRCA9ICgwKQotRERJX05PVF9JREVOVElGSUVEID0gKC0xKQotRERJX1BST0JFX0ZBSUxVUkUgPSBFTlhJTwotRERJX1BST0JFX0RPTlRDQVJFID0gMAotRERJX1BST0JFX1BBUlRJQUwgPSAxCi1ERElfUFJPQkVfU1VDQ0VTUyA9IDIKLU1BUERFVl9SRVYgPSAxCi1mcm9tIFRZUEVTIGltcG9ydCAqCi1EX05FVyA9IDB4MDAKLV9EX09MRCA9IDB4MDEKLURfVEFQRSA9IDB4MDgKLURfTVRTQUZFID0gMHgwMDIwCi1fRF9RTkVYVExFU1MgPSAweDAwNDAKLV9EX01UT0NTSEFSRUQgPSAweDAwODAKLURfTVRPQ0VYQ0wgPSAweDA4MDAKLURfTVRQVVRTSEFSRUQgPSAweDEwMDAKLURfTVRQRVJRID0gMHgyMDAwCi1EX01UUVBBSVIgPSAweDQwMDAKLURfTVRQRVJNT0QgPSAweDYwMDAKLURfTVRPVVRQRVJJTSA9IDB4ODAwMAotX0RfTVRDQlNIQVJFRCA9IDB4MTAwMDAKLURfTVRJTk5FUl9NT0QgPSAoRF9NVFBVVFNIQVJFRHxfRF9NVE9DU0hBUkVEfF9EX01UQ0JTSEFSRUQpCi1EX01UT1VURVJfTU9EID0gKERfTVRPQ0VYQ0wpCi1EX01QID0gRF9NVFNBRkUKLURfNjRCSVQgPSAweDIwMAotRF9TWU5DU1RSID0gMHg0MDAKLURfREVWTUFQID0gMHgxMDAKLURfSE9UUExVRyA9IDB4NAotU05EWkVSTyA9IDB4MDAxCi1TTkRQSVBFID0gMHgwMDIKLVJOT1JNID0gMHgwMDAKLVJNU0dEID0gMHgwMDEKLVJNU0dOID0gMHgwMDIKLVJNT0RFTUFTSyA9IDB4MDAzCi1SUFJPVERBVCA9IDB4MDA0Ci1SUFJPVERJUyA9IDB4MDA4Ci1SUFJPVE5PUk0gPSAweDAxMAotUlBST1RNQVNLID0gMHgwMWMKLVJGTFVTSE1BU0sgPSAweDAyMAotUkZMVVNIUENQUk9UID0gMHgwMjAKLVJFUlJOT1JNID0gMHgwMDEKLVJFUlJOT05QRVJTSVNUID0gMHgwMDIKLVJFUlJNQVNLID0gKFJFUlJOT1JNfFJFUlJOT05QRVJTSVNUKQotV0VSUk5PUk0gPSAweDAwNAotV0VSUk5PTlBFUlNJU1QgPSAweDAwOAotV0VSUk1BU0sgPSAoV0VSUk5PUk18V0VSUk5PTlBFUlNJU1QpCi1GTFVTSFIgPSAweDAxCi1GTFVTSFcgPSAweDAyCi1GTFVTSFJXID0gMHgwMwotRkxVU0hCQU5EID0gMHgwNAotTUFQSU5PSyA9IDB4MDEKLU5PTUFQSU4gPSAweDAyCi1SRU1BUE9LID0gMHgwNAotTk9SRU1BUCA9IDB4MDgKLVNfSU5QVVQgPSAweDAwMDEKLVNfSElQUkkgPSAweDAwMDIKLVNfT1VUUFVUID0gMHgwMDA0Ci1TX01TRyA9IDB4MDAwOAotU19FUlJPUiA9IDB4MDAxMAotU19IQU5HVVAgPSAweDAwMjAKLVNfUkROT1JNID0gMHgwMDQwCi1TX1dSTk9STSA9IFNfT1VUUFVUCi1TX1JEQkFORCA9IDB4MDA4MAotU19XUkJBTkQgPSAweDAxMDAKLVNfQkFORFVSRyA9IDB4MDIwMAotUlNfSElQUkkgPSAweDAxCi1TVFJVSU9fUE9TVFBPTkUgPSAweDA4Ci1TVFJVSU9fTUFQSU4gPSAweDEwCi1NU0dfSElQUkkgPSAweDAxCi1NU0dfQU5ZID0gMHgwMgotTVNHX0JBTkQgPSAweDA0Ci1NU0dfWFBHNCA9IDB4MDgKLU1TR19JUEVFSyA9IDB4MTAKLU1TR19ESVNDQVJEVEFJTCA9IDB4MjAKLU1TR19IT0xEU0lHID0gMHg0MAotTVNHX0lHTkVSUk9SID0gMHg4MAotTVNHX0RFTEFZRVJST1IgPSAweDEwMAotTVNHX0lHTkZMT1cgPSAweDIwMAotTVNHX05PTUFSSyA9IDB4NDAwCi1NT1JFQ1RMID0gMQotTU9SRURBVEEgPSAyCi1NVVhJRF9BTEwgPSAoLTEpCi1BTllNQVJLID0gMHgwMQotTEFTVE1BUksgPSAweDAyCi1fSU5GVElNID0gLTEKLUlORlRJTSA9IF9JTkZUSU0KZGlmZiAtLWdpdCBhL0xpYi9wbGF0LXN1bm9zNS9UWVBFUy5weSBiL0xpYi9wbGF0LXN1bm9zNS9UWVBFUy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGE0ZTZiMS4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1zdW5vczUvVFlQRVMucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzMTMgKzAsMCBAQAotIyBHZW5lcmF0ZWQgYnkgaDJweSBmcm9tIC91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2lzYV9kZWZzLmgKLV9DSEFSX0FMSUdOTUVOVCA9IDEKLV9TSE9SVF9BTElHTk1FTlQgPSAyCi1fSU5UX0FMSUdOTUVOVCA9IDQKLV9MT05HX0FMSUdOTUVOVCA9IDgKLV9MT05HX0xPTkdfQUxJR05NRU5UID0gOAotX0RPVUJMRV9BTElHTk1FTlQgPSA4Ci1fTE9OR19ET1VCTEVfQUxJR05NRU5UID0gMTYKLV9QT0lOVEVSX0FMSUdOTUVOVCA9IDgKLV9NQVhfQUxJR05NRU5UID0gMTYKLV9BTElHTk1FTlRfUkVRVUlSRUQgPSAxCi1fQ0hBUl9BTElHTk1FTlQgPSAxCi1fU0hPUlRfQUxJR05NRU5UID0gMgotX0lOVF9BTElHTk1FTlQgPSA0Ci1fTE9OR19BTElHTk1FTlQgPSA0Ci1fTE9OR19MT05HX0FMSUdOTUVOVCA9IDQKLV9ET1VCTEVfQUxJR05NRU5UID0gNAotX0xPTkdfRE9VQkxFX0FMSUdOTUVOVCA9IDQKLV9QT0lOVEVSX0FMSUdOTUVOVCA9IDQKLV9NQVhfQUxJR05NRU5UID0gNAotX0FMSUdOTUVOVF9SRVFVSVJFRCA9IDAKLV9DSEFSX0FMSUdOTUVOVCA9IDEKLV9TSE9SVF9BTElHTk1FTlQgPSAyCi1fSU5UX0FMSUdOTUVOVCA9IDQKLV9MT05HX0xPTkdfQUxJR05NRU5UID0gOAotX0RPVUJMRV9BTElHTk1FTlQgPSA4Ci1fQUxJR05NRU5UX1JFUVVJUkVEID0gMQotX0xPTkdfQUxJR05NRU5UID0gNAotX0xPTkdfRE9VQkxFX0FMSUdOTUVOVCA9IDgKLV9QT0lOVEVSX0FMSUdOTUVOVCA9IDQKLV9NQVhfQUxJR05NRU5UID0gOAotX0xPTkdfQUxJR05NRU5UID0gOAotX0xPTkdfRE9VQkxFX0FMSUdOTUVOVCA9IDE2Ci1fUE9JTlRFUl9BTElHTk1FTlQgPSA4Ci1fTUFYX0FMSUdOTUVOVCA9IDE2Ci0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvZmVhdHVyZV90ZXN0cy5oCi1fUE9TSVhfQ19TT1VSQ0UgPSAxCi1fTEFSR0VGSUxFNjRfU09VUkNFID0gMQotX0xBUkdFRklMRV9TT1VSQ0UgPSAxCi1fRklMRV9PRkZTRVRfQklUUyA9IDY0Ci1fRklMRV9PRkZTRVRfQklUUyA9IDMyCi1fUE9TSVhfQ19TT1VSQ0UgPSAxOTk1MDYKLV9QT1NJWF9QVEhSRUFEX1NFTUFOVElDUyA9IDEKLV9YT1BFTl9WRVJTSU9OID0gNTAwCi1fWE9QRU5fVkVSU0lPTiA9IDQKLV9YT1BFTl9WRVJTSU9OID0gMwotCi0jIEluY2x1ZGVkIGZyb20gc3lzL21hY2h0eXBlcy5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvaW50dHlwZXMuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2ludF90eXBlcy5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvaW50X2xpbWl0cy5oCi1JTlQ4X01BWCA9ICgxMjcpCi1JTlQxNl9NQVggPSAoMzI3NjcpCi1JTlQzMl9NQVggPSAoMjE0NzQ4MzY0NykKLUlOVE1BWF9NQVggPSBJTlQzMl9NQVgKLUlOVF9MRUFTVDhfTUFYID0gSU5UOF9NQVgKLUlOVF9MRUFTVDE2X01BWCA9IElOVDE2X01BWAotSU5UX0xFQVNUMzJfTUFYID0gSU5UMzJfTUFYCi1JTlQ4X01JTiA9ICgtMTI4KQotSU5UMTZfTUlOID0gKC0zMjc2Ny0xKQotSU5UMzJfTUlOID0gKC0yMTQ3NDgzNjQ3LTEpCi1JTlRNQVhfTUlOID0gSU5UMzJfTUlOCi1JTlRfTEVBU1Q4X01JTiA9IElOVDhfTUlOCi1JTlRfTEVBU1QxNl9NSU4gPSBJTlQxNl9NSU4KLUlOVF9MRUFTVDMyX01JTiA9IElOVDMyX01JTgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2ludF9jb25zdC5oCi1kZWYgSU5UOF9DKGMpOiByZXR1cm4gKGMpCi0KLWRlZiBJTlQxNl9DKGMpOiByZXR1cm4gKGMpCi0KLWRlZiBJTlQzMl9DKGMpOiByZXR1cm4gKGMpCi0KLWRlZiBJTlQ2NF9DKGMpOiByZXR1cm4gX19DT05DQVRfXyhjLGwpCi0KLWRlZiBJTlQ2NF9DKGMpOiByZXR1cm4gX19DT05DQVRfXyhjLGxsKQotCi1kZWYgVUlOVDhfQyhjKTogcmV0dXJuIF9fQ09OQ0FUX18oYyx1KQotCi1kZWYgVUlOVDE2X0MoYyk6IHJldHVybiBfX0NPTkNBVF9fKGMsdSkKLQotZGVmIFVJTlQzMl9DKGMpOiByZXR1cm4gX19DT05DQVRfXyhjLHUpCi0KLWRlZiBVSU5UNjRfQyhjKTogcmV0dXJuIF9fQ09OQ0FUX18oYyx1bCkKLQotZGVmIFVJTlQ2NF9DKGMpOiByZXR1cm4gX19DT05DQVRfXyhjLHVsbCkKLQotZGVmIElOVE1BWF9DKGMpOiByZXR1cm4gX19DT05DQVRfXyhjLGwpCi0KLWRlZiBVSU5UTUFYX0MoYyk6IHJldHVybiBfX0NPTkNBVF9fKGMsdWwpCi0KLWRlZiBJTlRNQVhfQyhjKTogcmV0dXJuIF9fQ09OQ0FUX18oYyxsbCkKLQotZGVmIFVJTlRNQVhfQyhjKTogcmV0dXJuIF9fQ09OQ0FUX18oYyx1bGwpCi0KLWRlZiBJTlRNQVhfQyhjKTogcmV0dXJuIChjKQotCi1kZWYgVUlOVE1BWF9DKGMpOiByZXR1cm4gKGMpCi0KLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9pbnRfZm10aW8uaAotUFJJZDggPSAiZCIKLVBSSWQxNiA9ICJkIgotUFJJZDMyID0gImQiCi1QUklkNjQgPSAibGQiCi1QUklkNjQgPSAibGxkIgotUFJJZExFQVNUOCA9ICJkIgotUFJJZExFQVNUMTYgPSAiZCIKLVBSSWRMRUFTVDMyID0gImQiCi1QUklkTEVBU1Q2NCA9ICJsZCIKLVBSSWRMRUFTVDY0ID0gImxsZCIKLVBSSWk4ID0gImkiCi1QUklpMTYgPSAiaSIKLVBSSWkzMiA9ICJpIgotUFJJaTY0ID0gImxpIgotUFJJaTY0ID0gImxsaSIKLVBSSWlMRUFTVDggPSAiaSIKLVBSSWlMRUFTVDE2ID0gImkiCi1QUklpTEVBU1QzMiA9ICJpIgotUFJJaUxFQVNUNjQgPSAibGkiCi1QUklpTEVBU1Q2NCA9ICJsbGkiCi1QUklvOCA9ICJvIgotUFJJbzE2ID0gIm8iCi1QUklvMzIgPSAibyIKLVBSSW82NCA9ICJsbyIKLVBSSW82NCA9ICJsbG8iCi1QUklvTEVBU1Q4ID0gIm8iCi1QUklvTEVBU1QxNiA9ICJvIgotUFJJb0xFQVNUMzIgPSAibyIKLVBSSW9MRUFTVDY0ID0gImxvIgotUFJJb0xFQVNUNjQgPSAibGxvIgotUFJJeDggPSAieCIKLVBSSXgxNiA9ICJ4IgotUFJJeDMyID0gIngiCi1QUkl4NjQgPSAibHgiCi1QUkl4NjQgPSAibGx4IgotUFJJeExFQVNUOCA9ICJ4IgotUFJJeExFQVNUMTYgPSAieCIKLVBSSXhMRUFTVDMyID0gIngiCi1QUkl4TEVBU1Q2NCA9ICJseCIKLVBSSXhMRUFTVDY0ID0gImxseCIKLVBSSVg4ID0gIlgiCi1QUklYMTYgPSAiWCIKLVBSSVgzMiA9ICJYIgotUFJJWDY0ID0gImxYIgotUFJJWDY0ID0gImxsWCIKLVBSSVhMRUFTVDggPSAiWCIKLVBSSVhMRUFTVDE2ID0gIlgiCi1QUklYTEVBU1QzMiA9ICJYIgotUFJJWExFQVNUNjQgPSAibFgiCi1QUklYTEVBU1Q2NCA9ICJsbFgiCi1QUkl1OCA9ICJ1IgotUFJJdTE2ID0gInUiCi1QUkl1MzIgPSAidSIKLVBSSXU2NCA9ICJsdSIKLVBSSXU2NCA9ICJsbHUiCi1QUkl1TEVBU1Q4ID0gInUiCi1QUkl1TEVBU1QxNiA9ICJ1IgotUFJJdUxFQVNUMzIgPSAidSIKLVBSSXVMRUFTVDY0ID0gImx1IgotUFJJdUxFQVNUNjQgPSAibGx1IgotU0NOZDE2ID0gImhkIgotU0NOZDMyID0gImQiCi1TQ05kNjQgPSAibGQiCi1TQ05kNjQgPSAibGxkIgotU0NOaTE2ID0gImhpIgotU0NOaTMyID0gImkiCi1TQ05pNjQgPSAibGkiCi1TQ05pNjQgPSAibGxpIgotU0NObzE2ID0gImhvIgotU0NObzMyID0gIm8iCi1TQ05vNjQgPSAibG8iCi1TQ05vNjQgPSAibGxvIgotU0NOdTE2ID0gImh1IgotU0NOdTMyID0gInUiCi1TQ051NjQgPSAibHUiCi1TQ051NjQgPSAibGx1IgotU0NOeDE2ID0gImh4IgotU0NOeDMyID0gIngiCi1TQ054NjQgPSAibHgiCi1TQ054NjQgPSAibGx4IgotUFJJZE1BWCA9ICJsZCIKLVBSSW9NQVggPSAibG8iCi1QUkl4TUFYID0gImx4IgotUFJJdU1BWCA9ICJsdSIKLVBSSWRNQVggPSAibGxkIgotUFJJb01BWCA9ICJsbG8iCi1QUkl4TUFYID0gImxseCIKLVBSSXVNQVggPSAibGx1IgotUFJJZE1BWCA9ICJkIgotUFJJb01BWCA9ICJvIgotUFJJeE1BWCA9ICJ4IgotUFJJdU1BWCA9ICJ1IgotU0NOaU1BWCA9ICJsaSIKLVNDTmRNQVggPSAibGQiCi1TQ05vTUFYID0gImxvIgotU0NOeE1BWCA9ICJseCIKLVNDTmlNQVggPSAibGxpIgotU0NOZE1BWCA9ICJsbGQiCi1TQ05vTUFYID0gImxsbyIKLVNDTnhNQVggPSAibGx4IgotU0NOaU1BWCA9ICJpIgotU0NOZE1BWCA9ICJkIgotU0NOb01BWCA9ICJvIgotU0NOeE1BWCA9ICJ4IgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3R5cGVzMzIuaAotU0hSVF9NSU4gPSAoLTMyNzY4KQotU0hSVF9NQVggPSAzMjc2NwotVVNIUlRfTUFYID0gNjU1MzUKLUlOVF9NSU4gPSAoLTIxNDc0ODM2NDctMSkKLUlOVF9NQVggPSAyMTQ3NDgzNjQ3Ci1MT05HX01JTiA9ICgtOTIyMzM3MjAzNjg1NDc3NTgwNy0xKQotTE9OR19NQVggPSA5MjIzMzcyMDM2ODU0Nzc1ODA3Ci1MT05HX01JTiA9ICgtMjE0NzQ4MzY0Ny0xKQotTE9OR19NQVggPSAyMTQ3NDgzNjQ3Ci1QX01ZSUQgPSAoLTEpCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvc2VsZWN0LmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy90aW1lLmgKLVRJTUUzMl9NQVggPSBJTlQzMl9NQVgKLVRJTUUzMl9NSU4gPSBJTlQzMl9NSU4KLWRlZiBUSU1FVkFMX09WRVJGTE9XKHR2KTogcmV0dXJuIFwKLQotZnJvbSBUWVBFUyBpbXBvcnQgKgotRFNUX05PTkUgPSAwCi1EU1RfVVNBID0gMQotRFNUX0FVU1QgPSAyCi1EU1RfV0VUID0gMwotRFNUX01FVCA9IDQKLURTVF9FRVQgPSA1Ci1EU1RfQ0FOID0gNgotRFNUX0dCID0gNwotRFNUX1JVTSA9IDgKLURTVF9UVVIgPSA5Ci1EU1RfQVVTVEFMVCA9IDEwCi1JVElNRVJfUkVBTCA9IDAKLUlUSU1FUl9WSVJUVUFMID0gMQotSVRJTUVSX1BST0YgPSAyCi1JVElNRVJfUkVBTFBST0YgPSAzCi1kZWYgSVRJTUVSVkFMX09WRVJGTE9XKGl0dik6IHJldHVybiBcCi0KLVNFQyA9IDEKLU1JTExJU0VDID0gMTAwMAotTUlDUk9TRUMgPSAxMDAwMDAwCi1OQU5PU0VDID0gMTAwMDAwMDAwMAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3RpbWVfaW1wbC5oCi1kZWYgVElNRVNQRUNfT1ZFUkZMT1codHMpOiByZXR1cm4gXAotCi1kZWYgSVRJTUVSU1BFQ19PVkVSRkxPVyhpdCk6IHJldHVybiBcCi0KLV9fQ0xPQ0tfUkVBTFRJTUUwID0gMAotQ0xPQ0tfVklSVFVBTCA9IDEKLUNMT0NLX1BST0YgPSAyCi1fX0NMT0NLX1JFQUxUSU1FMyA9IDMKLUNMT0NLX0hJR0hSRVMgPSA0Ci1DTE9DS19NQVggPSA1Ci1DTE9DS19SRUFMVElNRSA9IF9fQ0xPQ0tfUkVBTFRJTUUzCi1DTE9DS19SRUFMVElNRSA9IF9fQ0xPQ0tfUkVBTFRJTUUwCi1USU1FUl9SRUxUSU1FID0gMHgwCi1USU1FUl9BQlNUSU1FID0gMHgxCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvbXV0ZXguaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotZGVmIE1VVEVYX0hFTEQoeCk6IHJldHVybiAobXV0ZXhfb3duZWQoeCkpCi0KLWRlZiBUSUNLX1RPX1NFQyh0aWNrKTogcmV0dXJuICgodGljaykgLyBoeikKLQotZGVmIFNFQ19UT19USUNLKHNlYyk6IHJldHVybiAoKHNlYykgKiBoeikKLQotZGVmIFRJQ0tfVE9fTVNFQyh0aWNrKTogcmV0dXJuIFwKLQotZGVmIE1TRUNfVE9fVElDSyhtc2VjKTogcmV0dXJuIFwKLQotZGVmIE1TRUNfVE9fVElDS19ST1VORFVQKG1zZWMpOiByZXR1cm4gXAotCi1kZWYgVElDS19UT19VU0VDKHRpY2spOiByZXR1cm4gKCh0aWNrKSAqIHVzZWNfcGVyX3RpY2spCi0KLWRlZiBVU0VDX1RPX1RJQ0sodXNlYyk6IHJldHVybiAoKHVzZWMpIC8gdXNlY19wZXJfdGljaykKLQotZGVmIFVTRUNfVE9fVElDS19ST1VORFVQKHVzZWMpOiByZXR1cm4gXAotCi1kZWYgVElDS19UT19OU0VDKHRpY2spOiByZXR1cm4gKCh0aWNrKSAqIG5zZWNfcGVyX3RpY2spCi0KLWRlZiBOU0VDX1RPX1RJQ0sobnNlYyk6IHJldHVybiAoKG5zZWMpIC8gbnNlY19wZXJfdGljaykKLQotZGVmIE5TRUNfVE9fVElDS19ST1VORFVQKG5zZWMpOiByZXR1cm4gXAotCi1kZWYgVElNRVZBTF9UT19USUNLKHR2cCk6IHJldHVybiBcCi0KLWRlZiBUSU1FU1RSVUNfVE9fVElDSyh0c3ApOiByZXR1cm4gXAotCi0KLSMgSW5jbHVkZWQgZnJvbSB0aW1lLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLQotIyBJbmNsdWRlZCBmcm9tIGlzby90aW1lX2lzby5oCi1OVUxMID0gMAotTlVMTCA9IDAKLUNMT0NLU19QRVJfU0VDID0gMTAwMDAwMAotRkRfU0VUU0laRSA9IDY1NTM2Ci1GRF9TRVRTSVpFID0gMTAyNAotX05CQlkgPSA4Ci1OQkJZID0gX05CQlkKLWRlZiBGRF9aRVJPKHApOiByZXR1cm4gYnplcm8oKHApLCBzaXplb2YgKCoocCkpKQpkaWZmIC0tZ2l0IGEvTGliL3BsYXQtc3Vub3M1L3JlZ2VuIGIvTGliL3BsYXQtc3Vub3M1L3JlZ2VuCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA3OGNiN2RlLi4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LXN1bm9zNS9yZWdlbgorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotIyEgL2Jpbi9zaAotY2FzZSBgdW5hbWUgLXNyYCBpbgotJ1N1bk9TIDUuJyopCTs7Ci0qKQllY2hvIFByb2JhYmx5IG5vdCBvbiBhIFNvbGFyaXMgMiBzeXN0ZW0gMT4mMgotCWV4aXQgMTs7Ci1lc2FjCi1zZXQgLXYKLWgycHkgLWkgJyh1X2xvbmcpJyAvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmggL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaCAvdXNyL2luY2x1ZGUvc3lzL3N0cm9wdHMuaCAvdXNyL2luY2x1ZGUvZGxmY24uaAotCmRpZmYgLS1naXQgYS9MaWIvcGxhdC11bml4d2FyZTcvSU4ucHkgYi9MaWIvcGxhdC11bml4d2FyZTcvSU4ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmMDIzYjQuLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtdW5peHdhcmU3L0lOLnB5CisrKyAvZGV2L251bGwKQEAgLTEsODM2ICswLDAgQEAKLSMgR2VuZXJhdGVkIGJ5IGgycHkgZnJvbSAvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oCi0KLSMgSW5jbHVkZWQgZnJvbSBuZXRpbmV0L2luX2YuaAotZGVmIElOX0NMQVNTQShpKTogcmV0dXJuICgoKGludCkoaSkgJiAweDgwMDAwMDAwKSA9PSAwKQotCi1JTl9DTEFTU0FfTkVUID0gMHhmZjAwMDAwMAotSU5fQ0xBU1NBX05TSElGVCA9IDI0Ci1JTl9DTEFTU0FfSE9TVCA9IDB4MDBmZmZmZmYKLUlOX0NMQVNTQV9NQVggPSAxMjgKLWRlZiBJTl9DTEFTU0IoaSk6IHJldHVybiAoKChpbnQpKGkpICYgMHhjMDAwMDAwMCkgPT0gMHg4MDAwMDAwMCkKLQotSU5fQ0xBU1NCX05FVCA9IDB4ZmZmZjAwMDAKLUlOX0NMQVNTQl9OU0hJRlQgPSAxNgotSU5fQ0xBU1NCX0hPU1QgPSAweDAwMDBmZmZmCi1JTl9DTEFTU0JfTUFYID0gNjU1MzYKLWRlZiBJTl9DTEFTU0MoaSk6IHJldHVybiAoKChpbnQpKGkpICYgMHhlMDAwMDAwMCkgPT0gMHhjMDAwMDAwMCkKLQotSU5fQ0xBU1NDX05FVCA9IDB4ZmZmZmZmMDAKLUlOX0NMQVNTQ19OU0hJRlQgPSA4Ci1JTl9DTEFTU0NfSE9TVCA9IDB4MDAwMDAwZmYKLWRlZiBJTl9DTEFTU0QoaSk6IHJldHVybiAoKChpbnQpKGkpICYgMHhmMDAwMDAwMCkgPT0gMHhlMDAwMDAwMCkKLQotSU5fQ0xBU1NEX05FVCA9IDB4ZjAwMDAwMDAKLUlOX0NMQVNTRF9OU0hJRlQgPSAyOAotSU5fQ0xBU1NEX0hPU1QgPSAweDBmZmZmZmZmCi1kZWYgSU5fTVVMVElDQVNUKGkpOiByZXR1cm4gSU5fQ0xBU1NEKGkpCi0KLWRlZiBJTl9FWFBFUklNRU5UQUwoaSk6IHJldHVybiAoKChpbnQpKGkpICYgMHhlMDAwMDAwMCkgPT0gMHhlMDAwMDAwMCkKLQotZGVmIElOX0JBRENMQVNTKGkpOiByZXR1cm4gKCgoaW50KShpKSAmIDB4ZjAwMDAwMDApID09IDB4ZjAwMDAwMDApCi0KLUlOQUREUl9BTlkgPSAweDAwMDAwMDAwCi1JTkFERFJfTE9PUEJBQ0sgPSAweDdmMDAwMDAxCi1JTkFERFJfQlJPQURDQVNUID0gMHhmZmZmZmZmZgotSU5BRERSX05PTkUgPSAweGZmZmZmZmZmCi1JTl9MT09QQkFDS05FVCA9IDEyNwotSU5BRERSX1VOU1BFQ19HUk9VUCA9IDB4ZTAwMDAwMDAKLUlOQUREUl9BTExIT1NUU19HUk9VUCA9IDB4ZTAwMDAwMDEKLUlOQUREUl9BTExSVFJTX0dST1VQID0gMHhlMDAwMDAwMgotSU5BRERSX01BWF9MT0NBTF9HUk9VUCA9IDB4ZTAwMDAwZmYKLQotIyBJbmNsdWRlZCBmcm9tIG5ldGluZXQvaW42LmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy90eXBlcy5oCi1kZWYgcXVhZF9sb3coeCk6IHJldHVybiB4LnZhbFswXQotCi1BRFRfRU1BU0tTSVpFID0gOAotU0hSVF9NSU4gPSAtMzI3NjgKLVNIUlRfTUFYID0gMzI3NjcKLUlOVF9NSU4gPSAoLTIxNDc0ODM2NDctMSkKLUlOVF9NQVggPSAyMTQ3NDgzNjQ3Ci1MT05HX01JTiA9ICgtMjE0NzQ4MzY0Ny0xKQotTE9OR19NQVggPSAyMTQ3NDgzNjQ3Ci1PRkYzMl9NQVggPSBMT05HX01BWAotSVNUQVRfQVNTRVJURUQgPSAwCi1JU1RBVF9BU1NVTUVEID0gMQotSVNUQVRfTk9ORSA9IDIKLU9GRl9NQVggPSBPRkYzMl9NQVgKLUNMT0NLX01BWCA9IExPTkdfTUFYCi1QX01ZSUQgPSAoLTEpCi1QX01ZSE9TVElEID0gKC0xKQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3NlbGVjdC5oCi1GRF9TRVRTSVpFID0gNDA5NgotTkJCWSA9IDgKLU5VTEwgPSAwCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvYml0eXBlcy5oCi0KLSMgSW5jbHVkZWQgZnJvbSBuZXRpbmV0L2luNl9mLmgKLWRlZiBJTjZfSVNfQUREUl9VTlNQRUNJRklFRChhKTogcmV0dXJuIElONl9BRERSX0VRVUFMX0woYSwgMCwgMCwgMCwgMCkKLQotZGVmIElONl9TRVRfQUREUl9VTlNQRUNJRklFRChhKTogcmV0dXJuIElONl9BRERSX0NPUFlfTChhLCAwLCAwLCAwLCAwKQotCi1kZWYgSU42X0lTX0FERFJfQU5ZKGEpOiByZXR1cm4gSU42X0FERFJfRVFVQUxfTChhLCAwLCAwLCAwLCAwKQotCi1kZWYgSU42X1NFVF9BRERSX0FOWShhKTogcmV0dXJuIElONl9BRERSX0NPUFlfTChhLCAwLCAwLCAwLCAwKQotCi1kZWYgSU42X0lTX0FERFJfTE9PUEJBQ0soYSk6IHJldHVybiBJTjZfQUREUl9FUVVBTF9MKGEsIDAsIDAsIDAsIDB4MDEwMDAwMDApCi0KLWRlZiBJTjZfU0VUX0FERFJfTE9PUEJBQ0soYSk6IHJldHVybiBJTjZfQUREUl9DT1BZX0woYSwgMCwgMCwgMCwgMHgwMTAwMDAwMCkKLQotSU42X01DX0ZMQUdfUEVSTUFORU5UID0gMHgwCi1JTjZfTUNfRkxBR19UUkFOU0lFTlQgPSAweDEKLUlONl9NQ19TQ09QRV9OT0RFTE9DQUwgPSAweDEKLUlONl9NQ19TQ09QRV9MSU5LTE9DQUwgPSAweDIKLUlONl9NQ19TQ09QRV9TSVRFTE9DQUwgPSAweDUKLUlONl9NQ19TQ09QRV9PUkdMT0NBTCA9IDB4OAotSU42X01DX1NDT1BFX0dMT0JBTCA9IDB4RQotZGVmIElONl9JU19BRERSX01DX05PREVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0xJTktMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX1NJVEVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX09SR0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfR0xPQkFMKGEpOiByZXR1cm4gXAotCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvY29udnNhLmgKLV9fTkVUTElCX1VXMjExX1NWUjQgPSAxCi1fX05FVExJQl9VVzIxMV9YUEc0ID0gMgotX19ORVRMSUJfR0VNSU5JX1NWUjQgPSAzCi1fX05FVExJQl9HRU1JTklfWFBHNCA9IDQKLV9fTkVUTElCX0ZQMV9TVlI0ID0gNQotX19ORVRMSUJfRlAxX1hQRzQgPSA2Ci1fX05FVExJQl9CQVNFX1ZFUlNJT05fXyA9IF9fTkVUTElCX1VXMjExX1NWUjQKLV9fTkVUTElCX1ZFUlNJT05fXyA9IF9fTkVUTElCX0ZQMV9TVlI0Ci1fX05FVExJQl9WRVJTSU9OX18gPSBfX05FVExJQl9GUDFfWFBHNAotX19ORVRMSUJfVkVSU0lPTl9fID0gX19ORVRMSUJfR0VNSU5JX1NWUjQKLV9fTkVUTElCX1ZFUlNJT05fXyA9IF9fTkVUTElCX0dFTUlOSV9YUEc0Ci1fX05FVExJQl9WRVJTSU9OX18gPSBfX05FVExJQl9VVzIxMV9TVlI0Ci1fX05FVExJQl9WRVJTSU9OX18gPSBfX05FVExJQl9VVzIxMV9YUEc0Ci1fX05FVExJQl9WRVJTSU9OX18gPSBfX05FVExJQl9GUDFfWFBHNAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2J5dGVvcmRlci5oCi1MSVRUTEVfRU5ESUFOID0gMTIzNAotQklHX0VORElBTiA9IDQzMjEKLVBEUF9FTkRJQU4gPSAzNDEyCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvYnl0ZW9yZGVyX2YuaAotQllURV9PUkRFUiA9IExJVFRMRV9FTkRJQU4KLWRlZiBodG9ubChobCk6IHJldHVybiBfX2h0b25sKGhsKQotCi1kZWYgbnRvaGwobmwpOiByZXR1cm4gX19udG9obChubCkKLQotZGVmIGh0b25zKGhzKTogcmV0dXJuIF9faHRvbnMoaHMpCi0KLWRlZiBudG9ocyhucyk6IHJldHVybiBfX250b2hzKG5zKQotCi1kZWYgbnRvaGwoeCk6IHJldHVybiAoeCkKLQotZGVmIG50b2hzKHgpOiByZXR1cm4gKHgpCi0KLWRlZiBodG9ubCh4KTogcmV0dXJuICh4KQotCi1kZWYgaHRvbnMoeCk6IHJldHVybiAoeCkKLQotZGVmIF9fTkVUTElCX1ZFUlNJT05fSVNfWFBHNCh2ZXJzaW9uKTogcmV0dXJuICgoKHZlcnNpb24pICUgMikgPT0gMCkKLQotZGVmIF9fTkVUTElCX1ZFUlNJT05fSEFTX1NBTEVOKHZlcnNpb24pOiByZXR1cm4gKCh2ZXJzaW9uKSA+PSBfX05FVExJQl9HRU1JTklfU1ZSNCkKLQotZGVmIF9fTkVUTElCX1ZFUlNJT05fSVNfSUtTKHZlcnNpb24pOiByZXR1cm4gKCh2ZXJzaW9uKSA+PSBfX05FVExJQl9GUDFfU1ZSNCkKLQotZGVmIFNBX0ZBTUlMWV9HRVQoc2EpOiByZXR1cm4gXAotCi1JTkVUNl9BRERSU1RSTEVOID0gNDYKLUlQVjZfVU5JQ0FTVF9IT1BTID0gMwotSVBWNl9BRERSRk9STSA9IDI0Ci1JUFY2X01VTFRJQ0FTVF9IT1BTID0gMjUKLUlQVjZfTVVMVElDQVNUX0lGID0gMjYKLUlQVjZfTVVMVElDQVNUX0xPT1AgPSAyNwotSVBWNl9BRERfTUVNQkVSU0hJUCA9IDI4Ci1JUFY2X0RST1BfTUVNQkVSU0hJUCA9IDI5Ci0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvaW5zcmVtLmgKLWRlZiBMSVNUX0lOSVQoaGVhZCk6IHJldHVybiBcCi0KLWRlZiBMSVNUX0lOSVQoaGVhZCk6IHJldHVybiBcCi0KLWRlZiByZW1xdWUoYSk6IHJldHVybiBSRU1RVUUoYSkKLQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3NvY2tldC5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdWlvLmgKLVNIVVRfUkQgPSAwCi1TSFVUX1dSID0gMQotU0hVVF9SRFdSID0gMgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL25ldGNvbmZpZy5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvY2RlZnMuaAotZGVmIF9fUChwcm90b3MpOiByZXR1cm4gcHJvdG9zCi0KLWRlZiBfX1NUUklORyh4KTogcmV0dXJuICN4Ci0KLWRlZiBfX1AocHJvdG9zKTogcmV0dXJuICgpCi0KLWRlZiBfX1NUUklORyh4KTogcmV0dXJuICJ4IgotCi1ORVRDT05GSUcgPSAiL2V0Yy9uZXRjb25maWciCi1ORVRQQVRIID0gIk5FVFBBVEgiCi1OQ19UUElfQ0xUUyA9IDEKLU5DX1RQSV9DT1RTID0gMgotTkNfVFBJX0NPVFNfT1JEID0gMwotTkNfVFBJX1JBVyA9IDQKLU5DX05PRkxBRyA9IDAwCi1OQ19WSVNJQkxFID0gMG8xCi1OQ19CUk9BRENBU1QgPSAwbzIKLU5DX05PUFJPVE9GTUxZID0gIi0iCi1OQ19MT09QQkFDSyA9ICJsb29wYmFjayIKLU5DX0lORVQgPSAiaW5ldCIKLU5DX0lORVQ2ID0gImluZXQ2IgotTkNfSU1QTElOSyA9ICJpbXBsaW5rIgotTkNfUFVQID0gInB1cCIKLU5DX0NIQU9TID0gImNoYW9zIgotTkNfTlMgPSAibnMiCi1OQ19OQlMgPSAibmJzIgotTkNfRUNNQSA9ICJlY21hIgotTkNfREFUQUtJVCA9ICJkYXRha2l0IgotTkNfQ0NJVFQgPSAiY2NpdHQiCi1OQ19TTkEgPSAic25hIgotTkNfREVDTkVUID0gImRlY25ldCIKLU5DX0RMSSA9ICJkbGkiCi1OQ19MQVQgPSAibGF0IgotTkNfSFlMSU5LID0gImh5bGluayIKLU5DX0FQUExFVEFMSyA9ICJhcHBsZXRhbGsiCi1OQ19OSVQgPSAibml0IgotTkNfSUVFRTgwMiA9ICJpZWVlODAyIgotTkNfT1NJID0gIm9zaSIKLU5DX1gyNSA9ICJ4MjUiCi1OQ19PU0lORVQgPSAib3NpbmV0IgotTkNfR09TSVAgPSAiZ29zaXAiCi1OQ19ORVRXQVJFID0gIm5ldHdhcmUiCi1OQ19OT1BST1RPID0gIi0iCi1OQ19UQ1AgPSAidGNwIgotTkNfVURQID0gInVkcCIKLU5DX0lDTVAgPSAiaWNtcCIKLU5DX0lQWCA9ICJpcHgiCi1OQ19TUFggPSAic3B4IgotTkNfVFBJX0NMVFMgPSAxCi1OQ19UUElfQ09UUyA9IDIKLU5DX1RQSV9DT1RTX09SRCA9IDMKLU5DX1RQSV9SQVcgPSA0Ci1TT0NLX1NUUkVBTSA9IDIKLVNPQ0tfREdSQU0gPSAxCi1TT0NLX1JBVyA9IDQKLVNPQ0tfUkRNID0gNQotU09DS19TRVFQQUNLRVQgPSA2Ci1TT19ERUJVRyA9IDB4MDAwMQotU09fQUNDRVBUQ09OTiA9IDB4MDAwMgotU09fUkVVU0VBRERSID0gMHgwMDA0Ci1TT19LRUVQQUxJVkUgPSAweDAwMDgKLVNPX0RPTlRST1VURSA9IDB4MDAxMAotU09fQlJPQURDQVNUID0gMHgwMDIwCi1TT19VU0VMT09QQkFDSyA9IDB4MDA0MAotU09fTElOR0VSID0gMHgwMDgwCi1TT19PT0JJTkxJTkUgPSAweDAxMDAKLVNPX09SRFJFTCA9IDB4MDIwMAotU09fSU1BU09DS0VUID0gMHgwNDAwCi1TT19NR01UID0gMHgwODAwCi1TT19SRVVTRVBPUlQgPSAweDEwMDAKLVNPX0xJU1RFTklORyA9IDB4MjAwMAotU09fUkRXUiA9IDB4NDAwMAotU09fU0VNQSA9IDB4ODAwMAotU09fRE9OVExJTkdFUiA9ICh+U09fTElOR0VSKQotU09fU05EQlVGID0gMHgxMDAxCi1TT19SQ1ZCVUYgPSAweDEwMDIKLVNPX1NORExPV0FUID0gMHgxMDAzCi1TT19SQ1ZMT1dBVCA9IDB4MTAwNAotU09fU05EVElNRU8gPSAweDEwMDUKLVNPX1JDVlRJTUVPID0gMHgxMDA2Ci1TT19FUlJPUiA9IDB4MTAwNwotU09fVFlQRSA9IDB4MTAwOAotU09fUFJPVE9UWVBFID0gMHgxMDA5Ci1TT19BTExSQVcgPSAweDEwMGEKLVNPTF9TT0NLRVQgPSAweGZmZmYKLUFGX1VOU1BFQyA9IDAKLUFGX1VOSVggPSAxCi1BRl9MT0NBTCA9IEFGX1VOSVgKLUFGX0lORVQgPSAyCi1BRl9JTVBMSU5LID0gMwotQUZfUFVQID0gNAotQUZfQ0hBT1MgPSA1Ci1BRl9OUyA9IDYKLUFGX05CUyA9IDcKLUFGX0VDTUEgPSA4Ci1BRl9EQVRBS0lUID0gOQotQUZfQ0NJVFQgPSAxMAotQUZfU05BID0gMTEKLUFGX0RFQ25ldCA9IDEyCi1BRl9ETEkgPSAxMwotQUZfTEFUID0gMTQKLUFGX0hZTElOSyA9IDE1Ci1BRl9BUFBMRVRBTEsgPSAxNgotQUZfTklUID0gMTcKLUFGXzgwMiA9IDE4Ci1BRl9PU0kgPSAxOQotQUZfSVNPID0gQUZfT1NJCi1BRl9YMjUgPSAyMAotQUZfT1NJTkVUID0gMjEKLUFGX0dPU0lQID0gMjIKLUFGX1lORVQgPSAyMwotQUZfUk9VVEUgPSAyNAotQUZfTElOSyA9IDI1Ci1wc2V1ZG9fQUZfWFRQID0gMjYKLUFGX0lORVQ2ID0gMjcKLUFGX01BWCA9IDI3Ci1BRl9JTkVUX0JTV0FQID0gMHgwMjAwCi1QRl9VTlNQRUMgPSBBRl9VTlNQRUMKLVBGX1VOSVggPSBBRl9VTklYCi1QRl9MT0NBTCA9IEFGX0xPQ0FMCi1QRl9JTkVUID0gQUZfSU5FVAotUEZfSU1QTElOSyA9IEFGX0lNUExJTksKLVBGX1BVUCA9IEFGX1BVUAotUEZfQ0hBT1MgPSBBRl9DSEFPUwotUEZfTlMgPSBBRl9OUwotUEZfTkJTID0gQUZfTkJTCi1QRl9FQ01BID0gQUZfRUNNQQotUEZfREFUQUtJVCA9IEFGX0RBVEFLSVQKLVBGX0NDSVRUID0gQUZfQ0NJVFQKLVBGX1NOQSA9IEFGX1NOQQotUEZfREVDbmV0ID0gQUZfREVDbmV0Ci1QRl9ETEkgPSBBRl9ETEkKLVBGX0xBVCA9IEFGX0xBVAotUEZfSFlMSU5LID0gQUZfSFlMSU5LCi1QRl9BUFBMRVRBTEsgPSBBRl9BUFBMRVRBTEsKLVBGX05JVCA9IEFGX05JVAotUEZfODAyID0gQUZfODAyCi1QRl9PU0kgPSBBRl9PU0kKLVBGX0lTTyA9IFBGX09TSQotUEZfWDI1ID0gQUZfWDI1Ci1QRl9PU0lORVQgPSBBRl9PU0lORVQKLVBGX0dPU0lQID0gQUZfR09TSVAKLVBGX1lORVQgPSBBRl9ZTkVUCi1QRl9ST1VURSA9IEFGX1JPVVRFCi1QRl9MSU5LID0gQUZfTElOSwotcHNldWRvX1BGX1hUUCA9IHBzZXVkb19BRl9YVFAKLVBGX0lORVQ2ID0gQUZfSU5FVDYKLVBGX01BWCA9IEFGX01BWAotU09NQVhDT05OID0gNQotU0NNX1JJR0hUUyA9IDEKLU1TR19PT0IgPSAweDEKLU1TR19QRUVLID0gMHgyCi1NU0dfRE9OVFJPVVRFID0gMHg0Ci1NU0dfQ1RSVU5DID0gMHg4Ci1NU0dfVFJVTkMgPSAweDEwCi1NU0dfRU9SID0gMHgzMAotTVNHX1dBSVRBTEwgPSAweDIwCi1NU0dfTUFYSU9WTEVOID0gMTYKLWRlZiBPUFRMRU4oeCk6IHJldHVybiAoKCgoeCkgKyBzaXplb2YoaW50KSAtIDEpIC8gc2l6ZW9mKGludCkpICogc2l6ZW9mKGludCkpCi0KLUdJQVJHID0gMHgxCi1DT05USSA9IDB4MgotR0lUQUIgPSAweDQKLVNPQ0tFVFNZUyA9IDg4Ci1TT0NLRVRTWVMgPSA4MwotU09fQUNDRVBUID0gMQotU09fQklORCA9IDIKLVNPX0NPTk5FQ1QgPSAzCi1TT19HRVRQRUVSTkFNRSA9IDQKLVNPX0dFVFNPQ0tOQU1FID0gNQotU09fR0VUU09DS09QVCA9IDYKLVNPX0xJU1RFTiA9IDcKLVNPX1JFQ1YgPSA4Ci1TT19SRUNWRlJPTSA9IDkKLVNPX1NFTkQgPSAxMAotU09fU0VORFRPID0gMTEKLVNPX1NFVFNPQ0tPUFQgPSAxMgotU09fU0hVVERPV04gPSAxMwotU09fU09DS0VUID0gMTQKLVNPX1NPQ0tQT0xMID0gMTUKLVNPX0dFVElQRE9NQUlOID0gMTYKLVNPX1NFVElQRE9NQUlOID0gMTcKLVNPX0FESlRJTUUgPSAxOAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3N0cmVhbS5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvY3JlZC5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMva3N5bmNoLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9kbC5oCi1TSUdOQklUID0gMHg4MDAwMDAwMAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2lwbC5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvZGlzcF9wLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy90cmFwLmgKLURJVkVSUiA9IDAKLVNHTFNUUCA9IDEKLU5NSUZMVCA9IDIKLUJQVEZMVCA9IDMKLUlOVE9GTFQgPSA0Ci1CT1VOREZMVCA9IDUKLUlOVk9QRkxUID0gNgotTk9FWFRGTFQgPSA3Ci1EQkxGTFQgPSA4Ci1FWFRPVlJGTFQgPSA5Ci1JTlZUU1NGTFQgPSAxMAotU0VHTlBGTFQgPSAxMQotU1RLRkxUID0gMTIKLUdQRkxUID0gMTMKLVBHRkxUID0gMTQKLUVYVEVSUkZMVCA9IDE2Ci1BTElHTkZMVCA9IDE3Ci1NQ0VGTFQgPSAxOAotVVNFUkZMVCA9IDB4MTAwCi1UUlBfUFJFRU1QVCA9IDB4MjAwCi1UUlBfVU5VU0VEID0gMHgyMDEKLVBGX0VSUl9NQVNLID0gMHgwMQotUEZfRVJSX1BBR0UgPSAwCi1QRl9FUlJfUFJPVCA9IDEKLVBGX0VSUl9XUklURSA9IDIKLVBGX0VSUl9VU0VSID0gNAotRVZUX1NUUlNDSEVEID0gMHgwNAotRVZUX0dMT0JDQUxMT1VUID0gMHgwOAotRVZUX0xDTENBTExPVVQgPSAweDEwCi1FVlRfU09GVElOVE1BU0sgPSAoRVZUX1NUUlNDSEVEfEVWVF9HTE9CQ0FMTE9VVHxFVlRfTENMQ0FMTE9VVCkKLVBMMCA9IDAKLVBMMSA9IDEKLVBMMiA9IDIKLVBMMyA9IDMKLVBMNCA9IDQKLVBMNSA9IDUKLVBMNiA9IDYKLVBMSEkgPSA4Ci1QTDcgPSBQTEhJCi1QTEJBU0UgPSBQTDAKLVBMVElNRU9VVCA9IFBMMQotUExESVNLID0gUEw1Ci1QTFNUUiA9IFBMNgotUExUVFkgPSBQTFNUUgotUExNSU4gPSBQTDAKLVBMTUlOID0gUEwxCi1NQVhfSU5UUl9MRVZFTFMgPSAxMAotTUFYX0lOVFJfTkVTVElORyA9IDUwCi1TVFJTQ0hFRCA9IEVWVF9TVFJTQ0hFRAotR0xPQkFMU09GVElOVCA9IEVWVF9HTE9CQ0FMTE9VVAotTE9DQUxTT0ZUSU5UID0gRVZUX0xDTENBTExPVVQKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9rc3luY2hfcC5oCi1kZWYgR0VUX1RJTUUodGltZXApOiByZXR1cm4gXAotCi1MS19USFJFU0hPTEQgPSA1MDAwMDAKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9saXN0LmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9saXN0YXNtLmgKLWRlZiByZW1xdWVfbnVsbChlKTogcmV0dXJuIFwKLQotZGVmIExTX0lTRU1QVFkobGlzdHApOiByZXR1cm4gXAotCi1MS19CQVNJQyA9IDB4MQotTEtfU0xFRVAgPSAweDIKLUxLX05PU1RBVFMgPSAweDQKLWRlZiBDWUNMRVNfU0lOQ0UoYyk6IHJldHVybiBDWUNMRVNfQkVUV0VFTigoYyksIENZQ0xFUygpKQotCi1MU0JfTkxLRFMgPSA5MgotRVZUX1JVTlJVTiA9IDB4MDEKLUVWVF9LUFJVTlJVTiA9IDB4MDIKLVNQX1VOTE9DS0VEID0gMAotU1BfTE9DS0VEID0gMQotS1NfTE9DS1RFU1QgPSAweDAxCi1LU19NUFNUQVRTID0gMHgwMgotS1NfREVJTklURUQgPSAweDA0Ci1LU19OVkxUVFJBQ0UgPSAweDA4Ci1SV1NfUkVBRCA9IChvcmQoJ3InKSkKLVJXU19XUklURSA9IChvcmQoJ3cnKSkKLVJXU19VTkxPQ0tFRCA9IChvcmQoJ3UnKSkKLVJXU19CVVNZID0gKG9yZCgnYicpKQotZGVmIFNMRUVQX0xPQ0tPV05FRChsa3ApOiByZXR1cm4gXAotCi1kZWYgU0xFRVBfRElTT1dOKGxrcCk6IHJldHVybiBcCi0KLUtTX05PUFJNUFQgPSAweDAwMDAwMDAxCi1fX0tTX0xPQ0tURVNUID0gS1NfTE9DS1RFU1QKLV9fS1NfTE9DS1RFU1QgPSAwCi1fX0tTX01QU1RBVFMgPSBLU19NUFNUQVRTCi1fX0tTX01QU1RBVFMgPSAwCi1fX0tTX05WTFRUUkFDRSA9IEtTX05WTFRUUkFDRQotX19LU19OVkxUVFJBQ0UgPSAwCi1LU0ZMQUdTID0gKF9fS1NfTE9DS1RFU1R8X19LU19NUFNUQVRTfF9fS1NfTlZMVFRSQUNFKQotS1NWVU5JUFJPQyA9IDEKLUtTVk1QREVCVUcgPSAyCi1LU1ZNUE5PREVCVUcgPSAzCi1LU1ZGTEFHID0gS1NWVU5JUFJPQwotS1NWRkxBRyA9IEtTVk1QREVCVUcKLUtTVkZMQUcgPSBLU1ZNUE5PREVCVUcKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9rc2lubGluZS5oCi1fQV9TUF9MT0NLRUQgPSAxCi1fQV9TUF9VTkxPQ0tFRCA9IDAKLV9BX0lOVlBMID0gLTEKLWRlZiBfQVRPTUlDX0lOVF9JTkNSKGF0b21pY19pbnRwKTogcmV0dXJuIFwKLQotZGVmIF9BVE9NSUNfSU5UX0RFQ1IoYXRvbWljX2ludHApOiByZXR1cm4gXAotCi1kZWYgQVRPTUlDX0lOVF9SRUFEKGF0b21pY19pbnRwKTogcmV0dXJuIF9BVE9NSUNfSU5UX1JFQUQoYXRvbWljX2ludHApCi0KLWRlZiBBVE9NSUNfSU5UX0lOQ1IoYXRvbWljX2ludHApOiByZXR1cm4gX0FUT01JQ19JTlRfSU5DUihhdG9taWNfaW50cCkKLQotZGVmIEFUT01JQ19JTlRfREVDUihhdG9taWNfaW50cCk6IHJldHVybiBfQVRPTUlDX0lOVF9ERUNSKGF0b21pY19pbnRwKQotCi1kZWYgRlNQSU5fSU5JVChscCk6IHJldHVybgotCi1kZWYgRlNQSU5fTE9DSyhsKTogcmV0dXJuIERJU0FCTEUoKQotCi1kZWYgRlNQSU5fVFJZTE9DSyhsKTogcmV0dXJuIChESVNBQkxFKCksIEJfVFJVRSkKLQotZGVmIEZTUElOX1VOTE9DSyhsKTogcmV0dXJuIEVOQUJMRSgpCi0KLWRlZiBMT0NLX0RFSU5JVChscCk6IHJldHVybgotCi1kZWYgTE9DS19ERUFMTE9DKGxwKTogcmV0dXJuCi0KLWRlZiBMT0NLX09XTkVEKGxwKTogcmV0dXJuIChCX1RSVUUpCi0KLWRlZiBSV19ERUlOSVQobHApOiByZXR1cm4KLQotZGVmIFJXX0RFQUxMT0MobHApOiByZXR1cm4KLQotZGVmIFJXX09XTkVEKGxwKTogcmV0dXJuIChCX1RSVUUpCi0KLWRlZiBJU19MT0NLRUQobG9ja3ApOiByZXR1cm4gQl9GQUxTRQotCi1kZWYgTE9DS19QTE1JTihsb2NrcCk6IHJldHVybiBcCi0KLWRlZiBUUllMT0NLX1BMTUlOKGxvY2twKTogcmV0dXJuIExPQ0tfUExNSU4obG9ja3ApCi0KLWRlZiBMT0NLX1NIX1BMTUlOKGxvY2twKTogcmV0dXJuIExPQ0tfUExNSU4obG9ja3ApCi0KLWRlZiBSV19SRExPQ0tfUExNSU4obG9ja3ApOiByZXR1cm4gTE9DS19QTE1JTihsb2NrcCkKLQotZGVmIFJXX1dSTE9DS19QTE1JTihsb2NrcCk6IHJldHVybiBMT0NLX1BMTUlOKGxvY2twKQotCi1kZWYgTE9DS19ERUlOSVQobCk6IHJldHVybgotCi1kZWYgTE9DS19QTE1JTihsb2NrcCk6IHJldHVybiBMT0NLKChsb2NrcCksIFBMTUlOKQotCi1kZWYgVFJZTE9DS19QTE1JTihsb2NrcCk6IHJldHVybiBUUllMT0NLKChsb2NrcCksIFBMTUlOKQotCi1kZWYgTE9DS19TSF9QTE1JTihsb2NrcCk6IHJldHVybiBMT0NLX1NIKChsb2NrcCksIFBMTUlOKQotCi1kZWYgUldfUkRMT0NLX1BMTUlOKGxvY2twKTogcmV0dXJuIFJXX1JETE9DSygobG9ja3ApLCBQTE1JTikKLQotZGVmIFJXX1dSTE9DS19QTE1JTihsb2NrcCk6IHJldHVybiBSV19XUkxPQ0soKGxvY2twKSwgUExNSU4pCi0KLWRlZiBGU1BJTl9JU19MT0NLRUQoZnNwKTogcmV0dXJuIEJfRkFMU0UKLQotZGVmIFNQSU5fSVNfTE9DS0VEKGxvY2twKTogcmV0dXJuIEJfRkFMU0UKLQotZGVmIEZTUElOX09XTkVEKGwpOiByZXR1cm4gKEJfVFJVRSkKLQotQ1JfTUxEUkVBTCA9IDB4MDAwMDAwMDEKLUNSX1JEVU1QID0gMHgwMDAwMDAwMgotZGVmIGNyaG9sZChjcmVkcCk6IHJldHVybiBjcmhvbGRuKChjcmVkcCksIDEpCi0KLWRlZiBjcmZyZWUoY3JlZHApOiByZXR1cm4gY3JmcmVlbigoY3JlZHApLCAxKQotCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvc3RybWRlcC5oCi1kZWYgc3RyX2FsaWduZWQoWCk6IHJldHVybiAoKCh1aW50KShYKSAmIChzaXplb2YoaW50KSAtIDEpKSA9PSAwKQotCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvZW5naW5lLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9jbG9jay5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdGltZS5oCi1EU1RfTk9ORSA9IDAKLURTVF9VU0EgPSAxCi1EU1RfQVVTVCA9IDIKLURTVF9XRVQgPSAzCi1EU1RfTUVUID0gNAotRFNUX0VFVCA9IDUKLURTVF9DQU4gPSA2Ci1EU1RfR0IgPSA3Ci1EU1RfUlVNID0gOAotRFNUX1RVUiA9IDkKLURTVF9BVVNUQUxUID0gMTAKLUlUSU1FUl9SRUFMID0gMAotSVRJTUVSX1ZJUlRVQUwgPSAxCi1JVElNRVJfUFJPRiA9IDIKLUZEX1NFVFNJWkUgPSA0MDk2Ci1GRF9OQkJZID0gOAotCi0jIEluY2x1ZGVkIGZyb20gdGltZS5oCi1OVUxMID0gMAotQ0xPQ0tTX1BFUl9TRUMgPSAxMDAwMDAwCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvY2xvY2tfcC5oCi1DR0JJVFMgPSA0Ci1JREJJVFMgPSAyOAotZGVmIHRvaWRfdW5wYWNrY2coaWR2YWwpOiByZXR1cm4gKCgoaWR2YWwpID4+IElEQklUUykgJiAweGYpCi0KLWRlZiB0b2lkX3VucGFja2lkKGlkdmFsKTogcmV0dXJuICgoaWR2YWwpICYgMHhmZmZmZmZmKQotCi1kZWYgdG9pZF91bnBhY2tjZyhpZHZhbCk6IHJldHVybiAwCi0KLWRlZiB0b2lkX3VucGFja2lkKGlkdmFsKTogcmV0dXJuIChpZHZhbCkKLQotTkNBTExPVVRfSEFTSCA9IDEwMjQKLUNBTExPVVRfTUFYVkFMID0gMHg3ZmZmZmZmZgotVE9fUEVSSU9ESUMgPSAweDgwMDAwMDAwCi1UT19JTU1FRElBVEUgPSAweDgwMDAwMDAwCi1TRUMgPSAxCi1NSUxMSVNFQyA9IDEwMDAKLU1JQ1JPU0VDID0gMTAwMDAwMAotTkFOT1NFQyA9IDEwMDAwMDAwMDAKLVNFQ0hSID0gKDYwKjYwKQotU0VDREFZID0gKDI0KlNFQ0hSKQotU0VDWVIgPSAoMzY1KlNFQ0RBWSkKLWRlZiBUSU1FX09XTkVEX1IoY2dudW0pOiByZXR1cm4gKEJfVFJVRSkKLQotTE9PUFNFQ09ORFMgPSAxODAwCi1MT09QTUlDUk9TRUNPTkRTID0gKExPT1BTRUNPTkRTICogTUlDUk9TRUMpCi1kZWYgVElDS1NfU0lOQ0UodCk6IHJldHVybiBUSUNLU19CRVRXRUVOKHQsIFRJQ0tTKCkpCi0KLU1BWFJRUyA9IDIKLUVfT0ZGTElORSA9IDB4MDEKLUVfQkFEID0gMHgwMgotRV9TSFVURE9XTiA9IDB4MDQKLUVfRFJJVkVSID0gMHgwOAotRV9ERUZBVUxUS0VFUCA9IDB4MTAwCi1FX0RSSVZFUkJPVU5EID0gMHgyMDAKLUVfRVhDTFVTSVZFID0gMHg0MDAKLUVfQ0dMRUFERVIgPSAweDgwMAotRV9OT1dBWSA9IChFX09GRkxJTkV8RV9CQUR8RV9TSFVURE9XTikKLUVfQk9VTkQgPSAweDAxCi1FX0dMT0JBTCA9IDB4MDAKLUVfVU5BVkFJTCA9IC0xCi1FTkdJTkVfT05MSU5FID0gMQotZGVmIFBST0NFU1NPUl9VTk1BUChlKTogcmV0dXJuICgoZSkgLSBlbmdpbmUpCi0KLUJPT1RFTkcgPSAwCi1RTU9WRUQgPSAweDAwMDEKLVFXQU5UUiA9IDB4MDAwMgotUVdBTlRXID0gMHgwMDA0Ci1RRlVMTCA9IDB4MDAwOAotUVJFQURSID0gMHgwMDEwCi1RVVNFID0gMHgwMDIwCi1RTk9FTkIgPSAweDAwNDAKLVFVUCA9IDB4MDA4MAotUUJBQ0sgPSAweDAxMDAKLVFJTlRFUiA9IDB4MDIwMAotUVBST0NTT04gPSAweDA0MDAKLVFUT0VOQUIgPSAweDA4MDAKLVFGUkVFWkUgPSAweDEwMDAKLVFCT1VORCA9IDB4MjAwMAotUURFRkNOVCA9IDB4NDAwMAotUUVOQUIgPSAweDAwMDEKLVFTVkNCVVNZID0gMHgwMDAyCi1TVFJNX1BVVENOVF9UQUJMRVMgPSAzMQotZGVmIFNUUk1fTVlFTkdfUFVUQ05UKHNkcCk6IHJldHVybiBTVFJNX1BVVENOVChsLmVuZ19udW0sIHNkcCkKLQotUUJfRlVMTCA9IDB4MDEKLVFCX1dBTlRXID0gMHgwMgotUUJfQkFDSyA9IDB4MDQKLU5CQU5EID0gMjU2Ci1EQl9XQVNEVVBFRCA9IDB4MQotREJfMlBJRUNFID0gMHgyCi1TVFJMRUFLSEFTSFNaID0gMTAyMQotTVNHTUFSSyA9IDB4MDEKLU1TR05PTE9PUCA9IDB4MDIKLU1TR0RFTElNID0gMHgwNAotTVNHTk9HRVQgPSAweDA4Ci1NU0dMT0cgPSAweDEwCi1NX0RBVEEgPSAweDAwCi1NX1BST1RPID0gMHgwMQotTV9CUkVBSyA9IDB4MDgKLU1fUEFTU0ZQID0gMHgwOQotTV9TSUcgPSAweDBiCi1NX0RFTEFZID0gMHgwYwotTV9DVEwgPSAweDBkCi1NX0lPQ1RMID0gMHgwZQotTV9TRVRPUFRTID0gMHgxMAotTV9SU0UgPSAweDExCi1NX1RSQUlMID0gMHgxMgotTV9JT0NBQ0sgPSAweDgxCi1NX0lPQ05BSyA9IDB4ODIKLU1fUENQUk9UTyA9IDB4ODMKLU1fUENTSUcgPSAweDg0Ci1NX1JFQUQgPSAweDg1Ci1NX0ZMVVNIID0gMHg4NgotTV9TVE9QID0gMHg4NwotTV9TVEFSVCA9IDB4ODgKLU1fSEFOR1VQID0gMHg4OQotTV9FUlJPUiA9IDB4OGEKLU1fQ09QWUlOID0gMHg4YgotTV9DT1BZT1VUID0gMHg4YwotTV9JT0NEQVRBID0gMHg4ZAotTV9QQ1JTRSA9IDB4OGUKLU1fU1RPUEkgPSAweDhmCi1NX1NUQVJUSSA9IDB4OTAKLU1fUENDVEwgPSAweDkxCi1NX1BDU0VUT1BUUyA9IDB4OTIKLVFOT1JNID0gMHgwMAotUVBDVEwgPSAweDgwCi1TVFJDQU5PTiA9IDB4MDEKLVJFQ09QWSA9IDB4MDIKLVNPX0FMTCA9IDB4MDAzZgotU09fUkVBRE9QVCA9IDB4MDAwMQotU09fV1JPRkYgPSAweDAwMDIKLVNPX01JTlBTWiA9IDB4MDAwNAotU09fTUFYUFNaID0gMHgwMDA4Ci1TT19ISVdBVCA9IDB4MDAxMAotU09fTE9XQVQgPSAweDAwMjAKLVNPX01SRUFET04gPSAweDAwNDAKLVNPX01SRUFET0ZGID0gMHgwMDgwCi1TT19OREVMT04gPSAweDAxMDAKLVNPX05ERUxPRkYgPSAweDAyMDAKLVNPX0lTVFRZID0gMHgwNDAwCi1TT19JU05UVFkgPSAweDA4MDAKLVNPX1RPU1RPUCA9IDB4MTAwMAotU09fVE9OU1RPUCA9IDB4MjAwMAotU09fQkFORCA9IDB4NDAwMAotU09fREVMSU0gPSAweDgwMDAKLVNPX05PREVMSU0gPSAweDAxMDAwMAotU09fU1RSSE9MRCA9IDB4MDIwMDAwCi1TT19MT09QID0gMHgwNDAwMDAKLURSVk9QRU4gPSAweDAKLU1PRE9QRU4gPSAweDEKLUNMT05FT1BFTiA9IDB4MgotT1BFTkZBSUwgPSAtMQotQlBSSV9MTyA9IDEKLUJQUklfTUVEID0gMgotQlBSSV9ISSA9IDMKLUlORlBTWiA9IC0xCi1GTFVTSEFMTCA9IDEKLUZMVVNIREFUQSA9IDAKLVNUUkhJR0ggPSA1MTIwCi1TVFJMT1cgPSAxMDI0Ci1NQVhJT0NCU1ogPSAxMDI0Ci1kZWYgc3RyYWxuKGEpOiByZXR1cm4gKGNhZGRyX3QpKChpbnQpKGEpICYgfihzaXplb2YoaW50KS0xKSkKLQotSVBNX0lEID0gMjAwCi1JQ01QTV9JRCA9IDIwMQotVENQTV9JRCA9IDIwMgotVURQTV9JRCA9IDIwMwotQVJQTV9JRCA9IDIwNAotQVBQTV9JRCA9IDIwNQotUklQTV9JRCA9IDIwNgotUFBQTV9JRCA9IDIwNwotQUhETENNX0lEID0gMjA4Ci1NSERMQ1JJUE1fSUQgPSAyMDkKLUhETENNX0lEID0gMjEwCi1QUENJRF9JRCA9IDIxMQotSUdNUE1fSUQgPSAyMTIKLUlQSVBNX0lEID0gMjEzCi1JUFBST1RPX0lQID0gMAotSVBQUk9UT19IT1BPUFRTID0gMAotSVBQUk9UT19JQ01QID0gMQotSVBQUk9UT19JR01QID0gMgotSVBQUk9UT19HR1AgPSAzCi1JUFBST1RPX0lQSVAgPSA0Ci1JUFBST1RPX1RDUCA9IDYKLUlQUFJPVE9fRUdQID0gOAotSVBQUk9UT19QVVAgPSAxMgotSVBQUk9UT19VRFAgPSAxNwotSVBQUk9UT19JRFAgPSAyMgotSVBQUk9UT19UUCA9IDI5Ci1JUFBST1RPX0lQVjYgPSA0MQotSVBQUk9UT19ST1VUSU5HID0gNDMKLUlQUFJPVE9fRlJBR01FTlQgPSA0NAotSVBQUk9UT19FU1AgPSA1MAotSVBQUk9UT19BSCA9IDUxCi1JUFBST1RPX0lDTVBWNiA9IDU4Ci1JUFBST1RPX05PTkUgPSA1OQotSVBQUk9UT19EU1RPUFRTID0gNjAKLUlQUFJPVE9fSEVMTE8gPSA2MwotSVBQUk9UT19ORCA9IDc3Ci1JUFBST1RPX0VPTiA9IDgwCi1JUFBST1RPX1JBVyA9IDI1NQotSVBQUk9UT19NQVggPSAyNTYKLUlQUE9SVF9FQ0hPID0gNwotSVBQT1JUX0RJU0NBUkQgPSA5Ci1JUFBPUlRfU1lTVEFUID0gMTEKLUlQUE9SVF9EQVlUSU1FID0gMTMKLUlQUE9SVF9ORVRTVEFUID0gMTUKLUlQUE9SVF9GVFAgPSAyMQotSVBQT1JUX1RFTE5FVCA9IDIzCi1JUFBPUlRfU01UUCA9IDI1Ci1JUFBPUlRfVElNRVNFUlZFUiA9IDM3Ci1JUFBPUlRfTkFNRVNFUlZFUiA9IDQyCi1JUFBPUlRfV0hPSVMgPSA0MwotSVBQT1JUX01UUCA9IDU3Ci1JUFBPUlRfVEZUUCA9IDY5Ci1JUFBPUlRfUkpFID0gNzcKLUlQUE9SVF9GSU5HRVIgPSA3OQotSVBQT1JUX1RUWUxJTksgPSA4NwotSVBQT1JUX1NVUERVUCA9IDk1Ci1JUFBPUlRfRVhFQ1NFUlZFUiA9IDUxMgotSVBQT1JUX0xPR0lOU0VSVkVSID0gNTEzCi1JUFBPUlRfQ01EU0VSVkVSID0gNTE0Ci1JUFBPUlRfRUZTU0VSVkVSID0gNTIwCi1JUFBPUlRfQklGRlVEUCA9IDUxMgotSVBQT1JUX1dIT1NFUlZFUiA9IDUxMwotSVBQT1JUX1JPVVRFU0VSVkVSID0gNTIwCi1JUFBPUlRfUkVTRVJWRUQgPSAxMDI0Ci1JUFBPUlRfVVNFUlJFU0VSVkVEID0gNjU1MzUKLUlQUE9SVF9SRVNFUlZFRF9MT1cgPSA1MTIKLUlQUE9SVF9SRVNFUlZFRF9ISUdIID0gMTAyMwotSVBQT1JUX1VTRVJSRVNFUlZFRF9MT1cgPSAzMjc2OAotSVBQT1JUX1VTRVJSRVNFUlZFRF9ISUdIID0gNjU1MzUKLUlORVRfQUREUlNUUkxFTiA9IDE2Ci1JUF9PUFRJT05TID0gMQotSVBfVE9TID0gMgotSVBfVFRMID0gMwotSVBfSERSSU5DTCA9IDQKLUlQX1JFQ1ZPUFRTID0gNQotSVBfUkVDVlJFVE9QVFMgPSA2Ci1JUF9SRUNWRFNUQUREUiA9IDcKLUlQX1JFVE9QVFMgPSA4Ci1JUF9NVUxUSUNBU1RfSUYgPSA5Ci1JUF9NVUxUSUNBU1RfTE9PUCA9IDEwCi1JUF9BRERfTUVNQkVSU0hJUCA9IDExCi1JUF9EUk9QX01FTUJFUlNISVAgPSAxMgotSVBfQlJPQURDQVNUX0lGID0gMTQKLUlQX1JFQ1ZJRklOREVYID0gMTUKLUlQX01VTFRJQ0FTVF9UVEwgPSAxNgotTVJUX0lOSVQgPSAxNwotTVJUX0RPTkUgPSAxOAotTVJUX0FERF9WSUYgPSAxOQotTVJUX0RFTF9WSUYgPSAyMAotTVJUX0FERF9NRkMgPSAyMQotTVJUX0RFTF9NRkMgPSAyMgotTVJUX1ZFUlNJT04gPSAyMwotSVBfREVGQVVMVF9NVUxUSUNBU1RfVFRMID0gMQotSVBfREVGQVVMVF9NVUxUSUNBU1RfTE9PUCA9IDEKLUlQX01BWF9NRU1CRVJTSElQUyA9IDIwCi1JTkFERFJfVU5TUEVDX0dST1VQID0gMHhlMDAwMDAwMAotSU5BRERSX0FMTEhPU1RTX0dST1VQID0gMHhlMDAwMDAwMQotSU5BRERSX0FMTFJUUlNfR1JPVVAgPSAweGUwMDAwMDAyCi1JTkFERFJfTUFYX0xPQ0FMX0dST1VQID0gMHhlMDAwMDBmZgotCi0jIEluY2x1ZGVkIGZyb20gbmV0aW5ldC9pbl9tcC5oCi0KLSMgSW5jbHVkZWQgZnJvbSBuZXRpbmV0L2luX21wX2RkaS5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvaW5saW5lLmgKLUlQX0hJRVJfQkFTRSA9ICgyMCkKLWRlZiBBU1NFUlRfTE9DSyh4KTogcmV0dXJuCi0KLWRlZiBBU1NFUlRfV1JMT0NLKHgpOiByZXR1cm4KLQotZGVmIEFTU0VSVF9VTkxPQ0soeCk6IHJldHVybgotCi1kZWYgQ0FOUFVUKHEpOiByZXR1cm4gY2FucHV0KChxKSkKLQotZGVmIENBTlBVVE5FWFQocSk6IHJldHVybiBjYW5wdXRuZXh0KChxKSkKLQotSU5FVF9ERUJVRyA9IDEKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LXVuaXh3YXJlNy9TVFJPUFRTLnB5IGIvTGliL3BsYXQtdW5peHdhcmU3L1NUUk9QVFMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmNTBhOWMuLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtdW5peHdhcmU3L1NUUk9QVFMucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzMjggKzAsMCBAQAotIyBHZW5lcmF0ZWQgYnkgaDJweSBmcm9tIC91c3IvaW5jbHVkZS9zeXMvc3Ryb3B0cy5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdHlwZXMuaAotZGVmIHF1YWRfbG93KHgpOiByZXR1cm4geC52YWxbMF0KLQotQURUX0VNQVNLU0laRSA9IDgKLVNIUlRfTUlOID0gLTMyNzY4Ci1TSFJUX01BWCA9IDMyNzY3Ci1JTlRfTUlOID0gKC0yMTQ3NDgzNjQ3LTEpCi1JTlRfTUFYID0gMjE0NzQ4MzY0NwotTE9OR19NSU4gPSAoLTIxNDc0ODM2NDctMSkKLUxPTkdfTUFYID0gMjE0NzQ4MzY0NwotT0ZGMzJfTUFYID0gTE9OR19NQVgKLUlTVEFUX0FTU0VSVEVEID0gMAotSVNUQVRfQVNTVU1FRCA9IDEKLUlTVEFUX05PTkUgPSAyCi1PRkZfTUFYID0gT0ZGMzJfTUFYCi1DTE9DS19NQVggPSBMT05HX01BWAotUF9NWUlEID0gKC0xKQotUF9NWUhPU1RJRCA9ICgtMSkKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9zZWxlY3QuaAotRkRfU0VUU0laRSA9IDQwOTYKLU5CQlkgPSA4Ci1OVUxMID0gMAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2NvbmYuaAotRF9ORVcgPSAweDAwCi1EX09MRCA9IDB4MDEKLURfRE1BID0gMHgwMgotRF9CTEtPRkYgPSAweDQwMAotRF9MRlMgPSAweDgwMDAKLURfU1RSID0gMHgwODAwCi1EX01PRCA9IDB4MTAwMAotRF9QU0VVRE8gPSAweDIwMDAKLURfUkFORE9NID0gMHg0MDAwCi1EX0hPVCA9IDB4MTAwMDAKLURfU0VFS05FRyA9IDB4MDQKLURfVEFQRSA9IDB4MDgKLURfTk9CUktVUCA9IDB4MTAKLURfSU5JVFBVQiA9IDB4MjAKLURfTk9TUEVDTUFDREFUQSA9IDB4NDAKLURfUkRXRVEgPSAweDgwCi1TRUNNQVNLID0gKERfSU5JVFBVQnxEX05PU1BFQ01BQ0RBVEF8RF9SRFdFUSkKLURBRl9SRVFETUEgPSAweDEKLURBRl9QSFlTUkVRID0gMHgyCi1EQUZfUFJFOCA9IDB4NAotREFGX1NUQVRJQyA9IDB4OAotREFGX1NUUiA9IDB4MTAKLURfTVAgPSAweDEwMAotRF9VUEYgPSAweDIwMAotUk9PVEZTX05BTUVTWiA9IDcKLUZNTkFNRVNaID0gOAotTUNEX1ZFUlNJT04gPSAxCi1ESV9CQ0JQID0gMAotRElfTUVESUEgPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvc2Vjc3lzLmgKLUVTX01BQ09QRU5MSUQgPSAxCi1FU19NQUNTWVNMSUQgPSAyCi1FU19NQUNST09UTElEID0gMwotRVNfUFJWSU5GTyA9IDQKLUVTX1BSVlNFVENOVCA9IDUKLUVTX1BSVlNFVFMgPSA2Ci1FU19NQUNBRFRMSUQgPSA3Ci1FU19QUlZJRCA9IDgKLUVTX1RQR0VUTUFKT1IgPSA5Ci1TQV9FWEVDID0gMG8wMQotU0FfV1JJVEUgPSAwbzAyCi1TQV9SRUFEID0gMG8wNAotU0FfU1VCU0laRSA9IDBvMTAKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9zdHJvcHRzX2YuaAotWF9TVFIgPSAob3JkKCdTJyk8PDgpCi1YX0lfQkFTRSA9IChYX1NUUnwwbzIwMCkKLVhfSV9OUkVBRCA9IChYX1NUUnwwbzIwMSkKLVhfSV9QVVNIID0gKFhfU1RSfDBvMjAyKQotWF9JX1BPUCA9IChYX1NUUnwwbzIwMykKLVhfSV9MT09LID0gKFhfU1RSfDBvMjA0KQotWF9JX0ZMVVNIID0gKFhfU1RSfDBvMjA1KQotWF9JX1NSRE9QVCA9IChYX1NUUnwwbzIwNikKLVhfSV9HUkRPUFQgPSAoWF9TVFJ8MG8yMDcpCi1YX0lfU1RSID0gKFhfU1RSfDBvMjEwKQotWF9JX1NFVFNJRyA9IChYX1NUUnwwbzIxMSkKLVhfSV9HRVRTSUcgPSAoWF9TVFJ8MG8yMTIpCi1YX0lfRklORCA9IChYX1NUUnwwbzIxMykKLVhfSV9MSU5LID0gKFhfU1RSfDBvMjE0KQotWF9JX1VOTElOSyA9IChYX1NUUnwwbzIxNSkKLVhfSV9QRUVLID0gKFhfU1RSfDBvMjE3KQotWF9JX0ZESU5TRVJUID0gKFhfU1RSfDBvMjIwKQotWF9JX1NFTkRGRCA9IChYX1NUUnwwbzIyMSkKLVhfSV9SRUNWRkQgPSAoWF9TVFJ8MG8yMjIpCi0KLSMgSW5jbHVkZWQgZnJvbSB1bmlzdGQuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3VuaXN0ZC5oCi1SX09LID0gMG8wNAotV19PSyA9IDBvMDIKLVhfT0sgPSAwbzAxCi1GX09LID0gMDAwCi1FRkZfT05MWV9PSyA9IDBvMTAKLUVYX09LID0gMG8yMAotU0VFS19TRVQgPSAwCi1TRUVLX0NVUiA9IDEKLVNFRUtfRU5EID0gMgotX1NDX0FSR19NQVggPSAxCi1fU0NfQ0hJTERfTUFYID0gMgotX1NDX0NMS19UQ0sgPSAzCi1fU0NfTkdST1VQU19NQVggPSA0Ci1fU0NfT1BFTl9NQVggPSA1Ci1fU0NfSk9CX0NPTlRST0wgPSA2Ci1fU0NfU0FWRURfSURTID0gNwotX1NDX1ZFUlNJT04gPSA4Ci1fU0NfUEFTU19NQVggPSA5Ci1fU0NfTE9HTkFNRV9NQVggPSAxMAotX1NDX1BBR0VTSVpFID0gMTEKLV9TQ19QQUdFX1NJWkUgPSBfU0NfUEFHRVNJWkUKLV9TQ19YT1BFTl9WRVJTSU9OID0gMTIKLV9TQ19OQUNMU19NQVggPSAxMwotX1NDX05QUk9DRVNTT1JTX0NPTkYgPSAxNAotX1NDX05QUk9DRVNTT1JTX09OTE4gPSAxNQotX1NDX05QUk9DRVNTRVMgPSAzOQotX1NDX1RPVEFMX01FTU9SWSA9IDQwCi1fU0NfVVNFQUJMRV9NRU1PUlkgPSA0MQotX1NDX0dFTkVSQUxfTUVNT1JZID0gNDIKLV9TQ19ERURJQ0FURURfTUVNT1JZID0gNDMKLV9TQ19OQ0dTX0NPTkYgPSA0NAotX1NDX05DR1NfT05MTiA9IDQ1Ci1fU0NfTUFYX0NQVVNfUEVSX0NHID0gNDYKLV9TQ19DR19TSU1QTEVfSU1QTCA9IDQ3Ci1fU0NfQ0FDSEVfTElORSA9IDQ4Ci1fU0NfU1lTVEVNX0lEID0gNDkKLV9TQ19USFJFQURTID0gNTEKLV9TQ19USFJFQURfQVRUUl9TVEFDS0FERFIgPSA1MgotX1NDX1RIUkVBRF9BVFRSX1NUQUNLU0laRSA9IDUzCi1fU0NfVEhSRUFEX0RFU1RSVUNUT1JfSVRFUkFUSU9OUyA9IDU0Ci1fU0NfVEhSRUFEX0tFWVNfTUFYID0gNTUKLV9TQ19USFJFQURfUFJJT1JJVFlfU0NIRURVTElORyA9IDU2Ci1fU0NfVEhSRUFEX1BSSU9fSU5IRVJJVCA9IDU3Ci1fU0NfVEhSRUFEX1BSSU9fUFJPVEVDVCA9IDU4Ci1fU0NfVEhSRUFEX1NUQUNLX01JTiA9IDU5Ci1fU0NfVEhSRUFEX1BST0NFU1NfU0hBUkVEID0gNjAKLV9TQ19USFJFQURfU0FGRV9GVU5DVElPTlMgPSA2MQotX1NDX1RIUkVBRF9USFJFQURTX01BWCA9IDYyCi1fU0NfS0VSTkVMX1ZNID0gNjMKLV9TQ19UWk5BTUVfTUFYID0gMzIwCi1fU0NfU1RSRUFNX01BWCA9IDMyMQotX1NDX1hPUEVOX0NSWVBUID0gMzIzCi1fU0NfWE9QRU5fRU5IX0kxOE4gPSAzMjQKLV9TQ19YT1BFTl9TSE0gPSAzMjUKLV9TQ19YT1BFTl9YQ1VfVkVSU0lPTiA9IDMyNwotX1NDX0FFU19PU19WRVJTSU9OID0gMzMwCi1fU0NfQVRFWElUX01BWCA9IDMzMQotX1NDXzJfQ19CSU5EID0gMzUwCi1fU0NfMl9DX0RFViA9IDM1MQotX1NDXzJfQ19WRVJTSU9OID0gMzUyCi1fU0NfMl9DSEFSX1RFUk0gPSAzNTMKLV9TQ18yX0ZPUlRfREVWID0gMzU0Ci1fU0NfMl9GT1JUX1JVTiA9IDM1NQotX1NDXzJfTE9DQUxFREVGID0gMzU2Ci1fU0NfMl9TV19ERVYgPSAzNTcKLV9TQ18yX1VQRSA9IDM1OAotX1NDXzJfVkVSU0lPTiA9IDM1OQotX1NDX0JDX0JBU0VfTUFYID0gMzcwCi1fU0NfQkNfRElNX01BWCA9IDM3MQotX1NDX0JDX1NDQUxFX01BWCA9IDM3MgotX1NDX0JDX1NUUklOR19NQVggPSAzNzMKLV9TQ19DT0xMX1dFSUdIVFNfTUFYID0gMzgwCi1fU0NfRVhQUl9ORVNUX01BWCA9IDM4MQotX1NDX0xJTkVfTUFYID0gMzgyCi1fU0NfUkVfRFVQX01BWCA9IDM4MwotX1NDX0lPVl9NQVggPSAzOTAKLV9TQ19OUFJPQ19DT05GID0gMzkxCi1fU0NfTlBST0NfT05MTiA9IDM5MgotX1NDX1hPUEVOX1VOSVggPSA0MDAKLV9TQ19TRU1BUEhPUkVTID0gNDQwCi1fQ1NfUEFUSCA9IDEKLV9fT19DU19IT1NUTkFNRSA9IDIKLV9DU19SRUxFQVNFID0gMwotX0NTX1ZFUlNJT04gPSA0Ci1fX09fQ1NfTUFDSElORSA9IDUKLV9fT19DU19BUkNISVRFQ1RVUkUgPSA2Ci1fQ1NfSFdfU0VSSUFMID0gNwotX19PX0NTX0hXX1BST1ZJREVSID0gOAotX0NTX1NSUENfRE9NQUlOID0gOQotX0NTX0lOSVRUQUJfTkFNRSA9IDEwCi1fX09fQ1NfU1lTTkFNRSA9IDExCi1fQ1NfTEZTX0NGTEFHUyA9IDIwCi1fQ1NfTEZTX0xERkxBR1MgPSAyMQotX0NTX0xGU19MSUJTID0gMjIKLV9DU19MRlNfTElOVEZMQUdTID0gMjMKLV9DU19MRlM2NF9DRkxBR1MgPSAyNAotX0NTX0xGUzY0X0xERkxBR1MgPSAyNQotX0NTX0xGUzY0X0xJQlMgPSAyNgotX0NTX0xGUzY0X0xJTlRGTEFHUyA9IDI3Ci1fQ1NfQVJDSElURUNUVVJFID0gMTAwCi1fQ1NfQlVTVFlQRVMgPSAxMDEKLV9DU19IT1NUTkFNRSA9IDEwMgotX0NTX0hXX1BST1ZJREVSID0gMTAzCi1fQ1NfS0VSTkVMX1NUQU1QID0gMTA0Ci1fQ1NfTUFDSElORSA9IDEwNQotX0NTX09TX0JBU0UgPSAxMDYKLV9DU19PU19QUk9WSURFUiA9IDEwNwotX0NTX1NZU05BTUUgPSAxMDgKLV9DU19VU0VSX0xJTUlUID0gMTA5Ci1fUENfTElOS19NQVggPSAxCi1fUENfTUFYX0NBTk9OID0gMgotX1BDX01BWF9JTlBVVCA9IDMKLV9QQ19OQU1FX01BWCA9IDQKLV9QQ19QQVRIX01BWCA9IDUKLV9QQ19QSVBFX0JVRiA9IDYKLV9QQ19OT19UUlVOQyA9IDcKLV9QQ19WRElTQUJMRSA9IDgKLV9QQ19DSE9XTl9SRVNUUklDVEVEID0gOQotX1BDX0ZJTEVTSVpFQklUUyA9IDEwCi1fUE9TSVhfVkVSU0lPTiA9IDE5OTAwOQotX1hPUEVOX1ZFUlNJT04gPSA0Ci1HRl9QQVRIID0gIi9ldGMvZ3JvdXAiCi1QRl9QQVRIID0gIi9ldGMvcGFzc3dkIgotRl9VTE9DSyA9IDAKLUZfTE9DSyA9IDEKLUZfVExPQ0sgPSAyCi1GX1RFU1QgPSAzCi1fUE9TSVhfSk9CX0NPTlRST0wgPSAxCi1fUE9TSVhfU0FWRURfSURTID0gMQotX1BPU0lYX1ZESVNBQkxFID0gMAotTlVMTCA9IDAKLVNURElOX0ZJTEVOTyA9IDAKLVNURE9VVF9GSUxFTk8gPSAxCi1TVERFUlJfRklMRU5PID0gMgotX1hPUEVOX1VOSVggPSAxCi1fWE9QRU5fRU5IX0kxOE4gPSAxCi1fWE9QRU5fWFBHNCA9IDEKLV9QT1NJWDJfQ19WRVJTSU9OID0gMTk5MjA5Ci1fUE9TSVgyX1ZFUlNJT04gPSAxOTkyMDkKLV9YT1BFTl9YQ1VfVkVSU0lPTiA9IDQKLV9QT1NJWF9TRU1BUEhPUkVTID0gMQotX1BPU0lYX1RIUkVBRFMgPSAxCi1fUE9TSVhfVEhSRUFEX0FUVFJfU1RBQ0tBRERSID0gMQotX1BPU0lYX1RIUkVBRF9BVFRSX1NUQUNLU0laRSA9IDEKLV9QT1NJWF9USFJFQURfUFJJT1JJVFlfU0NIRURVTElORyA9IDEKLV9QT1NJWF9USFJFQURfUFJPQ0VTU19TSEFSRUQgPSAxCi1fUE9TSVhfVEhSRUFEX1NBRkVfRlVOQ1RJT05TID0gMQotX1BPU0lYMl9DX0JJTkQgPSAxCi1fUE9TSVgyX0NIQVJfVEVSTSA9IDEKLV9QT1NJWDJfRk9SVF9SVU4gPSAxCi1fUE9TSVgyX0xPQ0FMRURFRiA9IDEKLV9QT1NJWDJfVVBFID0gMQotX0xGU19BU1lOQ0hST05PVVNfSU8gPSAxCi1fTEZTX0xBUkdFRklMRSA9IDEKLV9MRlM2NF9BU1lOQ0hST05PVVNfSU8gPSAxCi1fTEZTNjRfTEFSR0VGSUxFID0gMQotX0xGUzY0X1NURElPID0gMQotRk1OQU1FU1ogPSA4Ci1TTkRaRVJPID0gMHgwMDEKLVNORFBJUEUgPSAweDAwMgotUk5PUk0gPSAweDAwMAotUk1TR0QgPSAweDAwMQotUk1TR04gPSAweDAwMgotUk1PREVNQVNLID0gMHgwMDMKLVJQUk9UREFUID0gMHgwMDQKLVJQUk9URElTID0gMHgwMDgKLVJQUk9UTk9STSA9IDB4MDEwCi1SUFJPVE1BU0sgPSAweDAxYwotRkxVU0hSID0gMHgwMQotRkxVU0hXID0gMHgwMgotRkxVU0hSVyA9IDB4MDMKLUZMVVNIQkFORCA9IDB4MDQKLVNfSU5QVVQgPSAweDAwMDEKLVNfSElQUkkgPSAweDAwMDIKLVNfT1VUUFVUID0gMHgwMDA0Ci1TX01TRyA9IDB4MDAwOAotU19FUlJPUiA9IDB4MDAxMAotU19IQU5HVVAgPSAweDAwMjAKLVNfUkROT1JNID0gMHgwMDQwCi1TX1dSTk9STSA9IFNfT1VUUFVUCi1TX1JEQkFORCA9IDB4MDA4MAotU19XUkJBTkQgPSAweDAxMDAKLVNfQkFORFVSRyA9IDB4MDIwMAotUlNfSElQUkkgPSAweDAxCi1NU0dfSElQUkkgPSAweDAxCi1NU0dfQU5ZID0gMHgwMgotTVNHX0JBTkQgPSAweDA0Ci1NU0dfRElTQ0FSRCA9IDB4MDgKLU1TR19QRUVLSU9DVEwgPSAweDEwCi1NT1JFQ1RMID0gMQotTU9SRURBVEEgPSAyCi1NVVhJRF9BTEwgPSAoLTEpCi1BTllNQVJLID0gMHgwMQotTEFTVE1BUksgPSAweDAyCi1TVFIgPSAob3JkKCdTJyk8PDgpCi1JX05SRUFEID0gKFNUUnwwbzEpCi1JX1BVU0ggPSAoU1RSfDBvMikKLUlfUE9QID0gKFNUUnwwbzMpCi1JX0xPT0sgPSAoU1RSfDBvNCkKLUlfRkxVU0ggPSAoU1RSfDBvNSkKLUlfU1JET1BUID0gKFNUUnwwbzYpCi1JX0dSRE9QVCA9IChTVFJ8MG83KQotSV9TVFIgPSAoU1RSfDBvMTApCi1JX1NFVFNJRyA9IChTVFJ8MG8xMSkKLUlfR0VUU0lHID0gKFNUUnwwbzEyKQotSV9GSU5EID0gKFNUUnwwbzEzKQotSV9MSU5LID0gKFNUUnwwbzE0KQotSV9VTkxJTksgPSAoU1RSfDBvMTUpCi1JX1BFRUsgPSAoU1RSfDBvMTcpCi1JX0ZESU5TRVJUID0gKFNUUnwwbzIwKQotSV9TRU5ERkQgPSAoU1RSfDBvMjEpCi1JX1JFQ1ZGRCA9IChTVFJ8MG8yMikKLUlfRV9SRUNWRkQgPSAoU1RSfDBvMTYpCi1JX1JFQ1ZGRCA9IChTVFJ8MG8xNikKLUlfUkVDVkZEID0gKFNUUnwwbzIyKQotSV9TV1JPUFQgPSAoU1RSfDBvMjMpCi1JX0dXUk9QVCA9IChTVFJ8MG8yNCkKLUlfTElTVCA9IChTVFJ8MG8yNSkKLUlfUExJTksgPSAoU1RSfDBvMjYpCi1JX1BVTkxJTksgPSAoU1RSfDBvMjcpCi1JX0ZMVVNIQkFORCA9IChTVFJ8MG8zNCkKLUlfQ0tCQU5EID0gKFNUUnwwbzM1KQotSV9HRVRCQU5EID0gKFNUUnwwbzM2KQotSV9BVE1BUksgPSAoU1RSfDBvMzcpCi1JX1NFVENMVElNRSA9IChTVFJ8MG80MCkKLUlfR0VUQ0xUSU1FID0gKFNUUnwwbzQxKQotSV9DQU5QVVQgPSAoU1RSfDBvNDIpCi1JX1NfUkVDVkZEID0gKFNUUnwwbzQzKQotSV9TVEFUUyA9IChTVFJ8MG80NCkKLUlfQklHUElQRSA9IChTVFJ8MG80NSkKLUlfR0VUVFAgPSAoU1RSfDBvNDYpCi1JTkZUSU0gPSAtMQpkaWZmIC0tZ2l0IGEvTGliL3BsYXQtdW5peHdhcmU3L3JlZ2VuIGIvTGliL3BsYXQtdW5peHdhcmU3L3JlZ2VuCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA2ODk5OGE3Li4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LXVuaXh3YXJlNy9yZWdlbgorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotIyEgL2Jpbi9zaAotY2FzZSBgdW5hbWUgLXNyYCBpbgotVW5peFdhcmUqKQk7OwotKikJZWNobyBQcm9iYWJseSBub3Qgb24gYSBVbml4V2FyZSBzeXN0ZW0gMT4mMgotCWV4aXQgMTs7Ci1lc2FjCi1zZXQgLXYKLWgycHkgLWkgJyh1X2xvbmcpJyAvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oCi1oMnB5IC91c3IvaW5jbHVkZS9zeXMvc3Ryb3B0cy5oCmRpZmYgLS1naXQgYS9MaWIvcGxhdGZvcm0ucHkgYi9MaWIvcGxhdGZvcm0ucHkKaW5kZXggM2U3MjZhNy4uZTQ4YWQwYiAxMDA3NTUKLS0tIGEvTGliL3BsYXRmb3JtLnB5CisrKyBiL0xpYi9wbGF0Zm9ybS5weQpAQCAtMTMsNyArMTMsNiBAQAogIyAgICBQeXRob24gYnVnIHRyYWNrZXIgKGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcpIGFuZCBhc3NpZ24gdGhlbSB0byAibGVtYnVyZyIuCiAjCiAjICAgIFN0aWxsIG5lZWRlZDoKLSMgICAgKiBtb3JlIHN1cHBvcnQgZm9yIFdpbkNFCiAjICAgICogc3VwcG9ydCBmb3IgTVMtRE9TIChQeXRob25EWCA/KQogIyAgICAqIHN1cHBvcnQgZm9yIEFtaWdhIGFuZCBvdGhlciBzdGlsbCB1bnN1cHBvcnRlZCBwbGF0Zm9ybXMgcnVubmluZyBQeXRob24KICMgICAgKiBzdXBwb3J0IGZvciBhZGRpdGlvbmFsIExpbnV4IGRpc3RyaWJ1dGlvbnMKQEAgLTI1MiwxMyArMjUxLDEzIEBACiAKIF9yZWxlYXNlX2ZpbGVuYW1lID0gcmUuY29tcGlsZShyJyhcdyspWy1fXShyZWxlYXNlfHZlcnNpb24pJywgcmUuQVNDSUkpCiBfbHNiX3JlbGVhc2VfdmVyc2lvbiA9IHJlLmNvbXBpbGUocicoLispJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIHJlbGVhc2UgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKFtcZC5dKyknCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdbXihdKig/OlwoKC4rKVwpKT8nLCByZS5BU0NJSSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJyByZWxlYXNlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJyhbXGQuXSspJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInW14oXSooPzpcKCguKylcKSk/JywgcmUuQVNDSUkpCiBfcmVsZWFzZV92ZXJzaW9uID0gcmUuY29tcGlsZShyJyhbXjAtOV0rKScKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKD86IHJlbGVhc2UgKT8nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyhbXGQuXSspJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdbXihdKig/OlwoKC4rKVwpKT8nLCByZS5BU0NJSSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInKD86IHJlbGVhc2UgKT8nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJyhbXGQuXSspJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidbXihdKig/OlwoKC4rKVwpKT8nLCByZS5BU0NJSSkKIAogIyBTZWUgYWxzbyBodHRwOi8vd3d3Lm5vdmVsbC5jb20vY29vbHNvbHV0aW9ucy9mZWF0dXJlLzExMjUxLmh0bWwKICMgYW5kIGh0dHA6Ly9saW51eG1hZmlhLmNvbS9mYXEvQWRtaW4vcmVsZWFzZS1maWxlcy5odG1sCkBAIC00MDgsOCArNDA3LDggQEAKICAgICByZXR1cm4gdmVyc2lvbgogCiBfdmVyX291dHB1dCA9IHJlLmNvbXBpbGUocicoPzooW1x3IF0rKSAoW1x3Ll0rKSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgJy4qJwotICAgICAgICAgICAgICAgICAgICAgICAgICdcWy4qIChbXGQuXSspXF0pJykKKyAgICAgICAgICAgICAgICAgICAgICAgICByJy4qJworICAgICAgICAgICAgICAgICAgICAgICAgIHInXFsuKiAoW1xkLl0rKVxdKScpCiAKICMgRXhhbXBsZXMgb2YgVkVSIGNvbW1hbmQgb3V0cHV0OgogIwpAQCAtNTA5LDcgKzUwOCw3IEBACiAgICAgICAgIGZyb20gX3dpbnJlZyBpbXBvcnQgT3BlbktleUV4LCBRdWVyeVZhbHVlRXgsIENsb3NlS2V5LCBIS0VZX0xPQ0FMX01BQ0hJTkUKIAogICAgIHdpbnZlciA9IGdldHdpbmRvd3N2ZXJzaW9uKCkKLSAgICBtYWosIG1pbiwgYnVpbGQgPSB3aW52ZXIuX3BsYXRmb3JtX3ZlcnNpb24gb3Igd2ludmVyWzozXQorICAgIG1haiwgbWluLCBidWlsZCA9IHdpbnZlci5wbGF0Zm9ybV92ZXJzaW9uIG9yIHdpbnZlcls6M10KICAgICB2ZXJzaW9uID0gJ3swfS57MX0uezJ9Jy5mb3JtYXQobWFqLCBtaW4sIGJ1aWxkKQogCiAgICAgcmVsZWFzZSA9IChfV0lOMzJfQ0xJRU5UX1JFTEVBU0VTLmdldCgobWFqLCBtaW4pKSBvcgpAQCAtMTA5NSwyMiArMTA5NCwyMiBAQAogCiBfaXJvbnB5dGhvbl9zeXNfdmVyc2lvbl9wYXJzZXIgPSByZS5jb21waWxlKAogICAgIHInSXJvblB5dGhvblxzKicKLSAgICAnKFtcZFwuXSspJwotICAgICcoPzogXCgoW1xkXC5dKylcKSk/JwotICAgICcgb24gKC5ORVQgW1xkXC5dKyknLCByZS5BU0NJSSkKKyAgICByJyhbXGRcLl0rKScKKyAgICByJyg/OiBcKChbXGRcLl0rKVwpKT8nCisgICAgcicgb24gKC5ORVQgW1xkXC5dKyknLCByZS5BU0NJSSkKIAogIyBJcm9uUHl0aG9uIGNvdmVyaW5nIDIuNiBhbmQgMi43CiBfaXJvbnB5dGhvbjI2X3N5c192ZXJzaW9uX3BhcnNlciA9IHJlLmNvbXBpbGUoCiAgICAgcicoW1xkLl0rKVxzKicKLSAgICAnXChJcm9uUHl0aG9uXHMqJwotICAgICdbXGQuXStccyonCi0gICAgJ1woKFtcZC5dKylcKSBvbiAoW1x3Ll0rIFtcZC5dKyg/OiBcKFxkKy1iaXRcKSk/KVwpJworICAgIHInXChJcm9uUHl0aG9uXHMqJworICAgIHInW1xkLl0rXHMqJworICAgIHInXCgoW1xkLl0rKVwpIG9uIChbXHcuXSsgW1xkLl0rKD86IFwoXGQrLWJpdFwpKT8pXCknCiApCiAKIF9weXB5X3N5c192ZXJzaW9uX3BhcnNlciA9IHJlLmNvbXBpbGUoCiAgICAgcicoW1x3LitdKylccyonCi0gICAgJ1woIz8oW14sXSspLFxzKihbXHcgXSspLFxzKihbXHcgOl0rKVwpXHMqJwotICAgICdcW1B5UHkgW15cXV0rXF0/JykKKyAgICByJ1woIz8oW14sXSspLFxzKihbXHcgXSspLFxzKihbXHcgOl0rKVwpXHMqJworICAgIHInXFtQeVB5IFteXF1dK1xdPycpCiAKIF9zeXNfdmVyc2lvbl9jYWNoZSA9IHt9CiAKQEAgLTEzNDUsNyArMTM0NCw3IEBACiAgICAgICAgICAgICAjIHNlZSBpc3N1ZSAjMTMyMiBmb3IgbW9yZSBpbmZvcm1hdGlvbgogICAgICAgICAgICAgd2FybmluZ3MuZmlsdGVyd2FybmluZ3MoCiAgICAgICAgICAgICAgICAgJ2lnbm9yZScsCi0gICAgICAgICAgICAgICAgJ2Rpc3RcKFwpIGFuZCBsaW51eF9kaXN0cmlidXRpb25cKFwpICcKKyAgICAgICAgICAgICAgICByJ2Rpc3RcKFwpIGFuZCBsaW51eF9kaXN0cmlidXRpb25cKFwpICcKICAgICAgICAgICAgICAgICAnZnVuY3Rpb25zIGFyZSBkZXByZWNhdGVkIC4qJywKICAgICAgICAgICAgICAgICBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLAogICAgICAgICAgICAgKQpkaWZmIC0tZ2l0IGEvTGliL3BsaXN0bGliLnB5IGIvTGliL3BsaXN0bGliLnB5CmluZGV4IDI1MDJiMzkuLjA5YmU1ZmQgMTAwNjQ0Ci0tLSBhL0xpYi9wbGlzdGxpYi5weQorKysgYi9MaWIvcGxpc3RsaWIucHkKQEAgLTQ3LDcgKzQ3LDcgQEAKICIiIgogX19hbGxfXyA9IFsKICAgICAicmVhZFBsaXN0IiwgIndyaXRlUGxpc3QiLCAicmVhZFBsaXN0RnJvbUJ5dGVzIiwgIndyaXRlUGxpc3RUb0J5dGVzIiwKLSAgICAiUGxpc3QiLCAiRGF0YSIsICJEaWN0IiwgIkZNVF9YTUwiLCAiRk1UX0JJTkFSWSIsCisgICAgIlBsaXN0IiwgIkRhdGEiLCAiRGljdCIsICJJbnZhbGlkRmlsZUV4Y2VwdGlvbiIsICJGTVRfWE1MIiwgIkZNVF9CSU5BUlkiLAogICAgICJsb2FkIiwgImR1bXAiLCAibG9hZHMiLCAiZHVtcHMiCiBdCiAKZGlmZiAtLWdpdCBhL0xpYi9wb3BsaWIucHkgYi9MaWIvcG9wbGliLnB5CmluZGV4IGY2NzIzOTAuLmNhZTY5NTAgMTAwNjQ0Ci0tLSBhL0xpYi9wb3BsaWIucHkKKysrIGIvTGliL3BvcGxpYi5weQpAQCAtNDMxLDYgKzQzMSwxMCBAQAogICAgICAgICAgICAgaWYgY29udGV4dCBpcyBub3QgTm9uZSBhbmQgY2VydGZpbGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY29udGV4dCBhbmQgY2VydGZpbGUgYXJndW1lbnRzIGFyZSBtdXR1YWxseSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjbHVzaXZlIikKKyAgICAgICAgICAgIGlmIGtleWZpbGUgaXMgbm90IE5vbmUgb3IgY2VydGZpbGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2Fybigia2V5ZmlsZSBhbmQgY2VydGZpbGUgYXJlIGRlcHJlY2F0ZWQsIHVzZSBhIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImN1c3RvbSBjb250ZXh0IGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgICAgICBzZWxmLmtleWZpbGUgPSBrZXlmaWxlCiAgICAgICAgICAgICBzZWxmLmNlcnRmaWxlID0gY2VydGZpbGUKICAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKZGlmZiAtLWdpdCBhL0xpYi9wb3NpeHBhdGgucHkgYi9MaWIvcG9zaXhwYXRoLnB5CmluZGV4IGQ5ZjNmOTkuLjZkYmRhYjIgMTAwNjQ0Ci0tLSBhL0xpYi9wb3NpeHBhdGgucHkKKysrIGIvTGliL3Bvc2l4cGF0aC5weQpAQCAtNDksNiArNDksNyBAQAogCiBkZWYgbm9ybWNhc2Uocyk6CiAgICAgIiIiTm9ybWFsaXplIGNhc2Ugb2YgcGF0aG5hbWUuICBIYXMgbm8gZWZmZWN0IHVuZGVyIFBvc2l4IiIiCisgICAgcyA9IG9zLmZzcGF0aChzKQogICAgIGlmIG5vdCBpc2luc3RhbmNlKHMsIChieXRlcywgc3RyKSk6CiAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigibm9ybWNhc2UoKSBhcmd1bWVudCBtdXN0IGJlIHN0ciBvciBieXRlcywgIgogICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCAne30nIi5mb3JtYXQocy5fX2NsYXNzX18uX19uYW1lX18pKQpAQCAtNjAsNiArNjEsNyBAQAogCiBkZWYgaXNhYnMocyk6CiAgICAgIiIiVGVzdCB3aGV0aGVyIGEgcGF0aCBpcyBhYnNvbHV0ZSIiIgorICAgIHMgPSBvcy5mc3BhdGgocykKICAgICBzZXAgPSBfZ2V0X3NlcChzKQogICAgIHJldHVybiBzLnN0YXJ0c3dpdGgoc2VwKQogCkBAIC03MywxMiArNzUsMTMgQEAKICAgICBJZiBhbnkgY29tcG9uZW50IGlzIGFuIGFic29sdXRlIHBhdGgsIGFsbCBwcmV2aW91cyBwYXRoIGNvbXBvbmVudHMKICAgICB3aWxsIGJlIGRpc2NhcmRlZC4gIEFuIGVtcHR5IGxhc3QgcGFydCB3aWxsIHJlc3VsdCBpbiBhIHBhdGggdGhhdAogICAgIGVuZHMgd2l0aCBhIHNlcGFyYXRvci4iIiIKKyAgICBhID0gb3MuZnNwYXRoKGEpCiAgICAgc2VwID0gX2dldF9zZXAoYSkKICAgICBwYXRoID0gYQogICAgIHRyeToKICAgICAgICAgaWYgbm90IHA6CiAgICAgICAgICAgICBwYXRoWzowXSArIHNlcCAgIzIzNzgwOiBFbnN1cmUgY29tcGF0aWJsZSBkYXRhIHR5cGUgZXZlbiBpZiBwIGlzIG51bGwuCi0gICAgICAgIGZvciBiIGluIHA6CisgICAgICAgIGZvciBiIGluIG1hcChvcy5mc3BhdGgsIHApOgogICAgICAgICAgICAgaWYgYi5zdGFydHN3aXRoKHNlcCk6CiAgICAgICAgICAgICAgICAgcGF0aCA9IGIKICAgICAgICAgICAgIGVsaWYgbm90IHBhdGggb3IgcGF0aC5lbmRzd2l0aChzZXApOgpAQCAtOTksNiArMTAyLDcgQEAKIGRlZiBzcGxpdChwKToKICAgICAiIiJTcGxpdCBhIHBhdGhuYW1lLiAgUmV0dXJucyB0dXBsZSAiKGhlYWQsIHRhaWwpIiB3aGVyZSAidGFpbCIgaXMKICAgICBldmVyeXRoaW5nIGFmdGVyIHRoZSBmaW5hbCBzbGFzaC4gIEVpdGhlciBwYXJ0IG1heSBiZSBlbXB0eS4iIiIKKyAgICBwID0gb3MuZnNwYXRoKHApCiAgICAgc2VwID0gX2dldF9zZXAocCkKICAgICBpID0gcC5yZmluZChzZXApICsgMQogICAgIGhlYWQsIHRhaWwgPSBwWzppXSwgcFtpOl0KQEAgLTExMyw2ICsxMTcsNyBAQAogIyBJdCBpcyBhbHdheXMgdHJ1ZSB0aGF0IHJvb3QgKyBleHQgPT0gcC4KIAogZGVmIHNwbGl0ZXh0KHApOgorICAgIHAgPSBvcy5mc3BhdGgocCkKICAgICBpZiBpc2luc3RhbmNlKHAsIGJ5dGVzKToKICAgICAgICAgc2VwID0gYicvJwogICAgICAgICBleHRzZXAgPSBiJy4nCkBAIC0xMjgsNiArMTMzLDcgQEAKIGRlZiBzcGxpdGRyaXZlKHApOgogICAgICIiIlNwbGl0IGEgcGF0aG5hbWUgaW50byBkcml2ZSBhbmQgcGF0aC4gT24gUG9zaXgsIGRyaXZlIGlzIGFsd2F5cwogICAgIGVtcHR5LiIiIgorICAgIHAgPSBvcy5mc3BhdGgocCkKICAgICByZXR1cm4gcFs6MF0sIHAKIAogCkBAIC0xMzUsNiArMTQxLDcgQEAKIAogZGVmIGJhc2VuYW1lKHApOgogICAgICIiIlJldHVybnMgdGhlIGZpbmFsIGNvbXBvbmVudCBvZiBhIHBhdGhuYW1lIiIiCisgICAgcCA9IG9zLmZzcGF0aChwKQogICAgIHNlcCA9IF9nZXRfc2VwKHApCiAgICAgaSA9IHAucmZpbmQoc2VwKSArIDEKICAgICByZXR1cm4gcFtpOl0KQEAgLTE0NCw2ICsxNTEsNyBAQAogCiBkZWYgZGlybmFtZShwKToKICAgICAiIiJSZXR1cm5zIHRoZSBkaXJlY3RvcnkgY29tcG9uZW50IG9mIGEgcGF0aG5hbWUiIiIKKyAgICBwID0gb3MuZnNwYXRoKHApCiAgICAgc2VwID0gX2dldF9zZXAocCkKICAgICBpID0gcC5yZmluZChzZXApICsgMQogICAgIGhlYWQgPSBwWzppXQpAQCAtMjIyLDYgKzIzMCw3IEBACiBkZWYgZXhwYW5kdXNlcihwYXRoKToKICAgICAiIiJFeHBhbmQgfiBhbmQgfnVzZXIgY29uc3RydWN0aW9ucy4gIElmIHVzZXIgb3IgJEhPTUUgaXMgdW5rbm93biwKICAgICBkbyBub3RoaW5nLiIiIgorICAgIHBhdGggPSBvcy5mc3BhdGgocGF0aCkKICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKICAgICAgICAgdGlsZGUgPSBiJ34nCiAgICAgZWxzZToKQEAgLTI2Nyw2ICsyNzYsNyBAQAogZGVmIGV4cGFuZHZhcnMocGF0aCk6CiAgICAgIiIiRXhwYW5kIHNoZWxsIHZhcmlhYmxlcyBvZiBmb3JtICR2YXIgYW5kICR7dmFyfS4gIFVua25vd24gdmFyaWFibGVzCiAgICAgYXJlIGxlZnQgdW5jaGFuZ2VkLiIiIgorICAgIHBhdGggPSBvcy5mc3BhdGgocGF0aCkKICAgICBnbG9iYWwgX3ZhcnByb2csIF92YXJwcm9nYgogICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgYnl0ZXMpOgogICAgICAgICBpZiBiJyQnIG5vdCBpbiBwYXRoOgpAQCAtMzE4LDYgKzMyOCw3IEBACiAKIGRlZiBub3JtcGF0aChwYXRoKToKICAgICAiIiJOb3JtYWxpemUgcGF0aCwgZWxpbWluYXRpbmcgZG91YmxlIHNsYXNoZXMsIGV0Yy4iIiIKKyAgICBwYXRoID0gb3MuZnNwYXRoKHBhdGgpCiAgICAgaWYgaXNpbnN0YW5jZShwYXRoLCBieXRlcyk6CiAgICAgICAgIHNlcCA9IGInLycKICAgICAgICAgZW1wdHkgPSBiJycKQEAgLTM1NSw2ICszNjYsNyBAQAogCiBkZWYgYWJzcGF0aChwYXRoKToKICAgICAiIiJSZXR1cm4gYW4gYWJzb2x1dGUgcGF0aC4iIiIKKyAgICBwYXRoID0gb3MuZnNwYXRoKHBhdGgpCiAgICAgaWYgbm90IGlzYWJzKHBhdGgpOgogICAgICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKICAgICAgICAgICAgIGN3ZCA9IG9zLmdldGN3ZGIoKQpAQCAtMzcwLDYgKzM4Miw3IEBACiBkZWYgcmVhbHBhdGgoZmlsZW5hbWUpOgogICAgICIiIlJldHVybiB0aGUgY2Fub25pY2FsIHBhdGggb2YgdGhlIHNwZWNpZmllZCBmaWxlbmFtZSwgZWxpbWluYXRpbmcgYW55CiBzeW1ib2xpYyBsaW5rcyBlbmNvdW50ZXJlZCBpbiB0aGUgcGF0aC4iIiIKKyAgICBmaWxlbmFtZSA9IG9zLmZzcGF0aChmaWxlbmFtZSkKICAgICBwYXRoLCBvayA9IF9qb2lucmVhbHBhdGgoZmlsZW5hbWVbOjBdLCBmaWxlbmFtZSwge30pCiAgICAgcmV0dXJuIGFic3BhdGgocGF0aCkKIApAQCAtNDM0LDYgKzQ0Nyw3IEBACiAgICAgaWYgbm90IHBhdGg6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm5vIHBhdGggc3BlY2lmaWVkIikKIAorICAgIHBhdGggPSBvcy5mc3BhdGgocGF0aCkKICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKICAgICAgICAgY3VyZGlyID0gYicuJwogICAgICAgICBzZXAgPSBiJy8nCkBAIC00NDUsNiArNDU5LDggQEAKIAogICAgIGlmIHN0YXJ0IGlzIE5vbmU6CiAgICAgICAgIHN0YXJ0ID0gY3VyZGlyCisgICAgZWxzZToKKyAgICAgICAgc3RhcnQgPSBvcy5mc3BhdGgoc3RhcnQpCiAKICAgICB0cnk6CiAgICAgICAgIHN0YXJ0X2xpc3QgPSBbeCBmb3IgeCBpbiBhYnNwYXRoKHN0YXJ0KS5zcGxpdChzZXApIGlmIHhdCkBAIC00NzIsNiArNDg4LDcgQEAKICAgICBpZiBub3QgcGF0aHM6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2NvbW1vbnBhdGgoKSBhcmcgaXMgYW4gZW1wdHkgc2VxdWVuY2UnKQogCisgICAgcGF0aHMgPSB0dXBsZShtYXAob3MuZnNwYXRoLCBwYXRocykpCiAgICAgaWYgaXNpbnN0YW5jZShwYXRoc1swXSwgYnl0ZXMpOgogICAgICAgICBzZXAgPSBiJy8nCiAgICAgICAgIGN1cmRpciA9IGInLicKZGlmZiAtLWdpdCBhL0xpYi9weWNsYnIucHkgYi9MaWIvcHljbGJyLnB5CmluZGV4IDRkNDBiODcuLmQ3ZGJhOTcgMTAwNjQ0Ci0tLSBhL0xpYi9weWNsYnIucHkKKysrIGIvTGliL3B5Y2xici5weQpAQCAtNDAsMTIgKzQwLDEwIEBACiAiIiIKIAogaW1wb3J0IGlvCi1pbXBvcnQgb3MKIGltcG9ydCBzeXMKIGltcG9ydCBpbXBvcnRsaWIudXRpbAogaW1wb3J0IHRva2VuaXplCiBmcm9tIHRva2VuIGltcG9ydCBOQU1FLCBERURFTlQsIE9QCi1mcm9tIG9wZXJhdG9yIGltcG9ydCBpdGVtZ2V0dGVyCiAKIF9fYWxsX18gPSBbInJlYWRtb2R1bGUiLCAicmVhZG1vZHVsZV9leCIsICJDbGFzcyIsICJGdW5jdGlvbiJdCiAKQEAgLTMyOCw2ICszMjYsNyBAQAogZGVmIF9tYWluKCk6CiAgICAgIyBNYWluIHByb2dyYW0gZm9yIHRlc3RpbmcuCiAgICAgaW1wb3J0IG9zCisgICAgZnJvbSBvcGVyYXRvciBpbXBvcnQgaXRlbWdldHRlcgogICAgIG1vZCA9IHN5cy5hcmd2WzFdCiAgICAgaWYgb3MucGF0aC5leGlzdHMobW9kKToKICAgICAgICAgcGF0aCA9IFtvcy5wYXRoLmRpcm5hbWUobW9kKV0KZGlmZiAtLWdpdCBhL0xpYi9weWRvYy5weSBiL0xpYi9weWRvYy5weQpvbGQgbW9kZSAxMDA3NTUKbmV3IG1vZGUgMTAwNjQ0CmluZGV4IDBkMGQwYWIuLjM5ZGIzOTEKLS0tIGEvTGliL3B5ZG9jLnB5CisrKyBiL0xpYi9weWRvYy5weQpAQCAtMjA5LDYgKzIwOSwxOCBAQAogICAgICAgICByZXN1bHRzLmFwcGVuZCgobmFtZSwga2luZCwgY2xzLCB2YWx1ZSkpCiAgICAgcmV0dXJuIHJlc3VsdHMKIAorZGVmIHNvcnRfYXR0cmlidXRlcyhhdHRycywgb2JqZWN0KToKKyAgICAnU29ydCB0aGUgYXR0cnMgbGlzdCBpbi1wbGFjZSBieSBfZmllbGRzIGFuZCB0aGVuIGFscGhhYmV0aWNhbGx5IGJ5IG5hbWUnCisgICAgIyBUaGlzIGFsbG93cyBkYXRhIGRlc2NyaXB0b3JzIHRvIGJlIG9yZGVyZWQgYWNjb3JkaW5nCisgICAgIyB0byBhIF9maWVsZHMgYXR0cmlidXRlIGlmIHByZXNlbnQuCisgICAgZmllbGRzID0gZ2V0YXR0cihvYmplY3QsICdfZmllbGRzJywgW10pCisgICAgdHJ5OgorICAgICAgICBmaWVsZF9vcmRlciA9IHtuYW1lIDogaS1sZW4oZmllbGRzKSBmb3IgKGksIG5hbWUpIGluIGVudW1lcmF0ZShmaWVsZHMpfQorICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgIGZpZWxkX29yZGVyID0ge30KKyAgICBrZXlmdW5jID0gbGFtYmRhIGF0dHI6IChmaWVsZF9vcmRlci5nZXQoYXR0clswXSwgMCksIGF0dHJbMF0pCisgICAgYXR0cnMuc29ydChrZXk9a2V5ZnVuYykKKwogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBtb2R1bGUgbWFuaXB1bGF0aW9uCiAKIGRlZiBpc3BhY2thZ2UocGF0aCk6CkBAIC0zMzgsNyArMzUwLDcgQEAKICAgICAgICAgZWxpZiBleGMgaXMgU3ludGF4RXJyb3I6CiAgICAgICAgICAgICAjIEEgU3ludGF4RXJyb3Igb2NjdXJyZWQgYmVmb3JlIHdlIGNvdWxkIGV4ZWN1dGUgdGhlIG1vZHVsZS4KICAgICAgICAgICAgIHJhaXNlIEVycm9yRHVyaW5nSW1wb3J0KHZhbHVlLmZpbGVuYW1lLCBpbmZvKQotICAgICAgICBlbGlmIGV4YyBpcyBJbXBvcnRFcnJvciBhbmQgdmFsdWUubmFtZSA9PSBwYXRoOgorICAgICAgICBlbGlmIGlzc3ViY2xhc3MoZXhjLCBJbXBvcnRFcnJvcikgYW5kIHZhbHVlLm5hbWUgPT0gcGF0aDoKICAgICAgICAgICAgICMgTm8gc3VjaCBtb2R1bGUgaW4gdGhlIHBhdGguCiAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICBlbHNlOgpAQCAtODY4LDggKzg4MCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdC5fX21vZHVsZV9fKQogICAgICAgICAgICAgdGFnICs9ICc6PGJyPlxuJwogCi0gICAgICAgICAgICAjIFNvcnQgYXR0cnMgYnkgbmFtZS4KLSAgICAgICAgICAgIGF0dHJzLnNvcnQoa2V5PWxhbWJkYSB0OiB0WzBdKQorICAgICAgICAgICAgc29ydF9hdHRyaWJ1dGVzKGF0dHJzLCBvYmplY3QpCiAKICAgICAgICAgICAgICMgUHVtcCBvdXQgdGhlIGF0dHJzLCBzZWdyZWdhdGVkIGJ5IGtpbmQuCiAgICAgICAgICAgICBhdHRycyA9IHNwaWxsKCdNZXRob2RzICVzJyAlIHRhZywgYXR0cnMsCkBAIC0xMjg3LDggKzEyOTgsOCBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICB0YWcgPSAiaW5oZXJpdGVkIGZyb20gJXMiICUgY2xhc3NuYW1lKHRoaXNjbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdC5fX21vZHVsZV9fKQotICAgICAgICAgICAgIyBTb3J0IGF0dHJzIGJ5IG5hbWUuCi0gICAgICAgICAgICBhdHRycy5zb3J0KCkKKworICAgICAgICAgICAgc29ydF9hdHRyaWJ1dGVzKGF0dHJzLCBvYmplY3QpCiAKICAgICAgICAgICAgICMgUHVtcCBvdXQgdGhlIGF0dHJzLCBzZWdyZWdhdGVkIGJ5IGtpbmQuCiAgICAgICAgICAgICBhdHRycyA9IHNwaWxsKCJNZXRob2RzICVzOlxuIiAlIHRhZywgYXR0cnMsCkBAIC0xNDE4LDEzICsxNDI5LDE0IEBACiAgICAgICAgIHJldHVybiBwbGFpbnBhZ2VyCiAgICAgaWYgbm90IHN5cy5zdGRpbi5pc2F0dHkoKSBvciBub3Qgc3lzLnN0ZG91dC5pc2F0dHkoKToKICAgICAgICAgcmV0dXJuIHBsYWlucGFnZXIKLSAgICBpZiAnUEFHRVInIGluIG9zLmVudmlyb246CisgICAgdXNlX3BhZ2VyID0gb3MuZW52aXJvbi5nZXQoJ01BTlBBR0VSJykgb3Igb3MuZW52aXJvbi5nZXQoJ1BBR0VSJykKKyAgICBpZiB1c2VfcGFnZXI6CiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOiAjIHBpcGVzIGNvbXBsZXRlbHkgYnJva2VuIGluIFdpbmRvd3MKLSAgICAgICAgICAgIHJldHVybiBsYW1iZGEgdGV4dDogdGVtcGZpbGVwYWdlcihwbGFpbih0ZXh0KSwgb3MuZW52aXJvblsnUEFHRVInXSkKKyAgICAgICAgICAgIHJldHVybiBsYW1iZGEgdGV4dDogdGVtcGZpbGVwYWdlcihwbGFpbih0ZXh0KSwgdXNlX3BhZ2VyKQogICAgICAgICBlbGlmIG9zLmVudmlyb24uZ2V0KCdURVJNJykgaW4gKCdkdW1iJywgJ2VtYWNzJyk6Ci0gICAgICAgICAgICByZXR1cm4gbGFtYmRhIHRleHQ6IHBpcGVwYWdlcihwbGFpbih0ZXh0KSwgb3MuZW52aXJvblsnUEFHRVInXSkKKyAgICAgICAgICAgIHJldHVybiBsYW1iZGEgdGV4dDogcGlwZXBhZ2VyKHBsYWluKHRleHQpLCB1c2VfcGFnZXIpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gbGFtYmRhIHRleHQ6IHBpcGVwYWdlcih0ZXh0LCBvcy5lbnZpcm9uWydQQUdFUiddKQorICAgICAgICAgICAgcmV0dXJuIGxhbWJkYSB0ZXh0OiBwaXBlcGFnZXIodGV4dCwgdXNlX3BhZ2VyKQogICAgIGlmIG9zLmVudmlyb24uZ2V0KCdURVJNJykgaW4gKCdkdW1iJywgJ2VtYWNzJyk6CiAgICAgICAgIHJldHVybiBwbGFpbnBhZ2VyCiAgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CkBAIC0xOTAxLDEwICsxOTEzLDEwIEBACiAKICAgICBkZWYgaW50cm8oc2VsZik6CiAgICAgICAgIHNlbGYub3V0cHV0LndyaXRlKCcnJwotV2VsY29tZSB0byBQeXRob24gJXMncyBoZWxwIHV0aWxpdHkhCitXZWxjb21lIHRvIFB5dGhvbiB7MH0ncyBoZWxwIHV0aWxpdHkhCiAKIElmIHRoaXMgaXMgeW91ciBmaXJzdCB0aW1lIHVzaW5nIFB5dGhvbiwgeW91IHNob3VsZCBkZWZpbml0ZWx5IGNoZWNrIG91dAotdGhlIHR1dG9yaWFsIG9uIHRoZSBJbnRlcm5ldCBhdCBodHRwOi8vZG9jcy5weXRob24ub3JnLyVzL3R1dG9yaWFsLy4KK3RoZSB0dXRvcmlhbCBvbiB0aGUgSW50ZXJuZXQgYXQgaHR0cDovL2RvY3MucHl0aG9uLm9yZy97MH0vdHV0b3JpYWwvLgogCiBFbnRlciB0aGUgbmFtZSBvZiBhbnkgbW9kdWxlLCBrZXl3b3JkLCBvciB0b3BpYyB0byBnZXQgaGVscCBvbiB3cml0aW5nCiBQeXRob24gcHJvZ3JhbXMgYW5kIHVzaW5nIFB5dGhvbiBtb2R1bGVzLiAgVG8gcXVpdCB0aGlzIGhlbHAgdXRpbGl0eSBhbmQKQEAgLTE5MTQsNyArMTkyNiw3IEBACiAibW9kdWxlcyIsICJrZXl3b3JkcyIsICJzeW1ib2xzIiwgb3IgInRvcGljcyIuICBFYWNoIG1vZHVsZSBhbHNvIGNvbWVzCiB3aXRoIGEgb25lLWxpbmUgc3VtbWFyeSBvZiB3aGF0IGl0IGRvZXM7IHRvIGxpc3QgdGhlIG1vZHVsZXMgd2hvc2UgbmFtZQogb3Igc3VtbWFyeSBjb250YWluIGEgZ2l2ZW4gc3RyaW5nIHN1Y2ggYXMgInNwYW0iLCB0eXBlICJtb2R1bGVzIHNwYW0iLgotJycnICUgdHVwbGUoW3N5cy52ZXJzaW9uWzozXV0qMikpCisnJycuZm9ybWF0KCclZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXSkpCiAKICAgICBkZWYgbGlzdChzZWxmLCBpdGVtcywgY29sdW1ucz00LCB3aWR0aD04MCk6CiAgICAgICAgIGl0ZW1zID0gbGlzdChzb3J0ZWQoaXRlbXMpKQpkaWZmIC0tZ2l0IGEvTGliL3B5ZG9jX2RhdGEvdG9waWNzLnB5IGIvTGliL3B5ZG9jX2RhdGEvdG9waWNzLnB5CmluZGV4IGQ2ZjEzNjYuLmM3ZmFjMzMgMTAwNjQ0Ci0tLSBhL0xpYi9weWRvY19kYXRhL3RvcGljcy5weQorKysgYi9MaWIvcHlkb2NfZGF0YS90b3BpY3MucHkKQEAgLTEsNzkgKzEsMTI5ODIgQEAKICMgLSotIGNvZGluZzogdXRmLTggLSotCi0jIEF1dG9nZW5lcmF0ZWQgYnkgU3BoaW54IG9uIFNhdCBKdW4gMjUgMTQ6MDg6NDQgMjAxNgotdG9waWNzID0geydhc3NlcnQnOiB1J1xuVGhlICJhc3NlcnQiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqKlxuXG5Bc3NlcnQgc3RhdGVtZW50cyBhcmUgYSBjb252ZW5pZW50IHdheSB0byBpbnNlcnQgZGVidWdnaW5nIGFzc2VydGlvbnNcbmludG8gYSBwcm9ncmFtOlxuXG4gICBhc3NlcnRfc3RtdCA6Oj0gImFzc2VydCIgZXhwcmVzc2lvbiBbIiwiIGV4cHJlc3Npb25dXG5cblRoZSBzaW1wbGUgZm9ybSwgImFzc2VydCBleHByZXNzaW9uIiwgaXMgZXF1aXZhbGVudCB0b1xuXG4gICBpZiBfX2RlYnVnX186XG4gICAgICAgaWYgbm90IGV4cHJlc3Npb246IHJhaXNlIEFzc2VydGlvbkVycm9yXG5cblRoZSBleHRlbmRlZCBmb3JtLCAiYXNzZXJ0IGV4cHJlc3Npb24xLCBleHByZXNzaW9uMiIsIGlzIGVxdWl2YWxlbnQgdG9cblxuICAgaWYgX19kZWJ1Z19fOlxuICAgICAgIGlmIG5vdCBleHByZXNzaW9uMTogcmFpc2UgQXNzZXJ0aW9uRXJyb3IoZXhwcmVzc2lvbjIpXG5cblRoZXNlIGVxdWl2YWxlbmNlcyBhc3N1bWUgdGhhdCAiX19kZWJ1Z19fIiBhbmQgIkFzc2VydGlvbkVycm9yIiByZWZlclxudG8gdGhlIGJ1aWx0LWluIHZhcmlhYmxlcyB3aXRoIHRob3NlIG5hbWVzLiAgSW4gdGhlIGN1cnJlbnRcbmltcGxlbWVudGF0aW9uLCB0aGUgYnVpbHQtaW4gdmFyaWFibGUgIl9fZGVidWdfXyIgaXMgIlRydWUiIHVuZGVyXG5ub3JtYWwgY2lyY3Vtc3RhbmNlcywgIkZhbHNlIiB3aGVuIG9wdGltaXphdGlvbiBpcyByZXF1ZXN0ZWQgKGNvbW1hbmRcbmxpbmUgb3B0aW9uIC1PKS4gIFRoZSBjdXJyZW50IGNvZGUgZ2VuZXJhdG9yIGVtaXRzIG5vIGNvZGUgZm9yIGFuXG5hc3NlcnQgc3RhdGVtZW50IHdoZW4gb3B0aW1pemF0aW9uIGlzIHJlcXVlc3RlZCBhdCBjb21waWxlIHRpbWUuICBOb3RlXG50aGF0IGl0IGlzIHVubmVjZXNzYXJ5IHRvIGluY2x1ZGUgdGhlIHNvdXJjZSBjb2RlIGZvciB0aGUgZXhwcmVzc2lvblxudGhhdCBmYWlsZWQgaW4gdGhlIGVycm9yIG1lc3NhZ2U7IGl0IHdpbGwgYmUgZGlzcGxheWVkIGFzIHBhcnQgb2YgdGhlXG5zdGFjayB0cmFjZS5cblxuQXNzaWdubWVudHMgdG8gIl9fZGVidWdfXyIgYXJlIGlsbGVnYWwuICBUaGUgdmFsdWUgZm9yIHRoZSBidWlsdC1pblxudmFyaWFibGUgaXMgZGV0ZXJtaW5lZCB3aGVuIHRoZSBpbnRlcnByZXRlciBzdGFydHMuXG4nLAotICdhc3NpZ25tZW50JzogdSdcbkFzc2lnbm1lbnQgc3RhdGVtZW50c1xuKioqKioqKioqKioqKioqKioqKioqXG5cbkFzc2lnbm1lbnQgc3RhdGVtZW50cyBhcmUgdXNlZCB0byAocmUpYmluZCBuYW1lcyB0byB2YWx1ZXMgYW5kIHRvXG5tb2RpZnkgYXR0cmlidXRlcyBvciBpdGVtcyBvZiBtdXRhYmxlIG9iamVjdHM6XG5cbiAgIGFzc2lnbm1lbnRfc3RtdCA6Oj0gKHRhcmdldF9saXN0ICI9IikrIChzdGFycmVkX2V4cHJlc3Npb24gfCB5aWVsZF9leHByZXNzaW9uKVxuICAgdGFyZ2V0X2xpc3QgICAgIDo6PSB0YXJnZXQgKCIsIiB0YXJnZXQpKiBbIiwiXVxuICAgdGFyZ2V0ICAgICAgICAgIDo6PSBpZGVudGlmaWVyXG4gICAgICAgICAgICAgIHwgIigiIHRhcmdldF9saXN0ICIpIlxuICAgICAgICAgICAgICB8ICJbIiBbdGFyZ2V0X2xpc3RdICJdIlxuICAgICAgICAgICAgICB8IGF0dHJpYnV0ZXJlZlxuICAgICAgICAgICAgICB8IHN1YnNjcmlwdGlvblxuICAgICAgICAgICAgICB8IHNsaWNpbmdcbiAgICAgICAgICAgICAgfCAiKiIgdGFyZ2V0XG5cbihTZWUgc2VjdGlvbiAqUHJpbWFyaWVzKiBmb3IgdGhlIHN5bnRheCBkZWZpbml0aW9ucyBmb3JcbiphdHRyaWJ1dGVyZWYqLCAqc3Vic2NyaXB0aW9uKiwgYW5kICpzbGljaW5nKi4pXG5cbkFuIGFzc2lnbm1lbnQgc3RhdGVtZW50IGV2YWx1YXRlcyB0aGUgZXhwcmVzc2lvbiBsaXN0IChyZW1lbWJlciB0aGF0XG50aGlzIGNhbiBiZSBhIHNpbmdsZSBleHByZXNzaW9uIG9yIGEgY29tbWEtc2VwYXJhdGVkIGxpc3QsIHRoZSBsYXR0ZXJcbnlpZWxkaW5nIGEgdHVwbGUpIGFuZCBhc3NpZ25zIHRoZSBzaW5nbGUgcmVzdWx0aW5nIG9iamVjdCB0byBlYWNoIG9mXG50aGUgdGFyZ2V0IGxpc3RzLCBmcm9tIGxlZnQgdG8gcmlnaHQuXG5cbkFzc2lnbm1lbnQgaXMgZGVmaW5lZCByZWN1cnNpdmVseSBkZXBlbmRpbmcgb24gdGhlIGZvcm0gb2YgdGhlIHRhcmdldFxuKGxpc3QpLiBXaGVuIGEgdGFyZ2V0IGlzIHBhcnQgb2YgYSBtdXRhYmxlIG9iamVjdCAoYW4gYXR0cmlidXRlXG5yZWZlcmVuY2UsIHN1YnNjcmlwdGlvbiBvciBzbGljaW5nKSwgdGhlIG11dGFibGUgb2JqZWN0IG11c3RcbnVsdGltYXRlbHkgcGVyZm9ybSB0aGUgYXNzaWdubWVudCBhbmQgZGVjaWRlIGFib3V0IGl0cyB2YWxpZGl0eSwgYW5kXG5tYXkgcmFpc2UgYW4gZXhjZXB0aW9uIGlmIHRoZSBhc3NpZ25tZW50IGlzIHVuYWNjZXB0YWJsZS4gIFRoZSBydWxlc1xub2JzZXJ2ZWQgYnkgdmFyaW91cyB0eXBlcyBhbmQgdGhlIGV4Y2VwdGlvbnMgcmFpc2VkIGFyZSBnaXZlbiB3aXRoIHRoZVxuZGVmaW5pdGlvbiBvZiB0aGUgb2JqZWN0IHR5cGVzIChzZWUgc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGVcbmhpZXJhcmNoeSopLlxuXG5Bc3NpZ25tZW50IG9mIGFuIG9iamVjdCB0byBhIHRhcmdldCBsaXN0LCBvcHRpb25hbGx5IGVuY2xvc2VkIGluXG5wYXJlbnRoZXNlcyBvciBzcXVhcmUgYnJhY2tldHMsIGlzIHJlY3Vyc2l2ZWx5IGRlZmluZWQgYXMgZm9sbG93cy5cblxuKiBJZiB0aGUgdGFyZ2V0IGxpc3QgaXMgZW1wdHk6IFRoZSBvYmplY3QgbXVzdCBhbHNvIGJlIGFuIGVtcHR5XG4gIGl0ZXJhYmxlLlxuXG4qIElmIHRoZSB0YXJnZXQgbGlzdCBpcyBhIHNpbmdsZSB0YXJnZXQgaW4gcGFyZW50aGVzZXM6IFRoZSBvYmplY3RcbiAgaXMgYXNzaWduZWQgdG8gdGhhdCB0YXJnZXQuXG5cbiogSWYgdGhlIHRhcmdldCBsaXN0IGlzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgdGFyZ2V0cywgb3IgYVxuICBzaW5nbGUgdGFyZ2V0IGluIHNxdWFyZSBicmFja2V0czogVGhlIG9iamVjdCBtdXN0IGJlIGFuIGl0ZXJhYmxlXG4gIHdpdGggdGhlIHNhbWUgbnVtYmVyIG9mIGl0ZW1zIGFzIHRoZXJlIGFyZSB0YXJnZXRzIGluIHRoZSB0YXJnZXRcbiAgbGlzdCwgYW5kIHRoZSBpdGVtcyBhcmUgYXNzaWduZWQsIGZyb20gbGVmdCB0byByaWdodCwgdG8gdGhlXG4gIGNvcnJlc3BvbmRpbmcgdGFyZ2V0cy5cblxuICAqIElmIHRoZSB0YXJnZXQgbGlzdCBjb250YWlucyBvbmUgdGFyZ2V0IHByZWZpeGVkIHdpdGggYW5cbiAgICBhc3RlcmlzaywgY2FsbGVkIGEgInN0YXJyZWQiIHRhcmdldDogVGhlIG9iamVjdCBtdXN0IGJlIGFuXG4gICAgaXRlcmFibGUgd2l0aCBhdCBsZWFzdCBhcyBtYW55IGl0ZW1zIGFzIHRoZXJlIGFyZSB0YXJnZXRzIGluIHRoZVxuICAgIHRhcmdldCBsaXN0LCBtaW51cyBvbmUuICBUaGUgZmlyc3QgaXRlbXMgb2YgdGhlIGl0ZXJhYmxlIGFyZVxuICAgIGFzc2lnbmVkLCBmcm9tIGxlZnQgdG8gcmlnaHQsIHRvIHRoZSB0YXJnZXRzIGJlZm9yZSB0aGUgc3RhcnJlZFxuICAgIHRhcmdldC4gIFRoZSBmaW5hbCBpdGVtcyBvZiB0aGUgaXRlcmFibGUgYXJlIGFzc2lnbmVkIHRvIHRoZVxuICAgIHRhcmdldHMgYWZ0ZXIgdGhlIHN0YXJyZWQgdGFyZ2V0LiAgQSBsaXN0IG9mIHRoZSByZW1haW5pbmcgaXRlbXNcbiAgICBpbiB0aGUgaXRlcmFibGUgaXMgdGhlbiBhc3NpZ25lZCB0byB0aGUgc3RhcnJlZCB0YXJnZXQgKHRoZSBsaXN0XG4gICAgY2FuIGJlIGVtcHR5KS5cblxuICAqIEVsc2U6IFRoZSBvYmplY3QgbXVzdCBiZSBhbiBpdGVyYWJsZSB3aXRoIHRoZSBzYW1lIG51bWJlciBvZlxuICAgIGl0ZW1zIGFzIHRoZXJlIGFyZSB0YXJnZXRzIGluIHRoZSB0YXJnZXQgbGlzdCwgYW5kIHRoZSBpdGVtcyBhcmVcbiAgICBhc3NpZ25lZCwgZnJvbSBsZWZ0IHRvIHJpZ2h0LCB0byB0aGUgY29ycmVzcG9uZGluZyB0YXJnZXRzLlxuXG5Bc3NpZ25tZW50IG9mIGFuIG9iamVjdCB0byBhIHNpbmdsZSB0YXJnZXQgaXMgcmVjdXJzaXZlbHkgZGVmaW5lZCBhc1xuZm9sbG93cy5cblxuKiBJZiB0aGUgdGFyZ2V0IGlzIGFuIGlkZW50aWZpZXIgKG5hbWUpOlxuXG4gICogSWYgdGhlIG5hbWUgZG9lcyBub3Qgb2NjdXIgaW4gYSAiZ2xvYmFsIiBvciAibm9ubG9jYWwiIHN0YXRlbWVudFxuICAgIGluIHRoZSBjdXJyZW50IGNvZGUgYmxvY2s6IHRoZSBuYW1lIGlzIGJvdW5kIHRvIHRoZSBvYmplY3QgaW4gdGhlXG4gICAgY3VycmVudCBsb2NhbCBuYW1lc3BhY2UuXG5cbiAgKiBPdGhlcndpc2U6IHRoZSBuYW1lIGlzIGJvdW5kIHRvIHRoZSBvYmplY3QgaW4gdGhlIGdsb2JhbFxuICAgIG5hbWVzcGFjZSBvciB0aGUgb3V0ZXIgbmFtZXNwYWNlIGRldGVybWluZWQgYnkgIm5vbmxvY2FsIixcbiAgICByZXNwZWN0aXZlbHkuXG5cbiAgVGhlIG5hbWUgaXMgcmVib3VuZCBpZiBpdCB3YXMgYWxyZWFkeSBib3VuZC4gIFRoaXMgbWF5IGNhdXNlIHRoZVxuICByZWZlcmVuY2UgY291bnQgZm9yIHRoZSBvYmplY3QgcHJldmlvdXNseSBib3VuZCB0byB0aGUgbmFtZSB0byByZWFjaFxuICB6ZXJvLCBjYXVzaW5nIHRoZSBvYmplY3QgdG8gYmUgZGVhbGxvY2F0ZWQgYW5kIGl0cyBkZXN0cnVjdG9yIChpZiBpdFxuICBoYXMgb25lKSB0byBiZSBjYWxsZWQuXG5cbiogSWYgdGhlIHRhcmdldCBpcyBhbiBhdHRyaWJ1dGUgcmVmZXJlbmNlOiBUaGUgcHJpbWFyeSBleHByZXNzaW9uIGluXG4gIHRoZSByZWZlcmVuY2UgaXMgZXZhbHVhdGVkLiAgSXQgc2hvdWxkIHlpZWxkIGFuIG9iamVjdCB3aXRoXG4gIGFzc2lnbmFibGUgYXR0cmlidXRlczsgaWYgdGhpcyBpcyBub3QgdGhlIGNhc2UsICJUeXBlRXJyb3IiIGlzXG4gIHJhaXNlZC4gIFRoYXQgb2JqZWN0IGlzIHRoZW4gYXNrZWQgdG8gYXNzaWduIHRoZSBhc3NpZ25lZCBvYmplY3QgdG9cbiAgdGhlIGdpdmVuIGF0dHJpYnV0ZTsgaWYgaXQgY2Fubm90IHBlcmZvcm0gdGhlIGFzc2lnbm1lbnQsIGl0IHJhaXNlc1xuICBhbiBleGNlcHRpb24gKHVzdWFsbHkgYnV0IG5vdCBuZWNlc3NhcmlseSAiQXR0cmlidXRlRXJyb3IiKS5cblxuICBOb3RlOiBJZiB0aGUgb2JqZWN0IGlzIGEgY2xhc3MgaW5zdGFuY2UgYW5kIHRoZSBhdHRyaWJ1dGUgcmVmZXJlbmNlXG4gIG9jY3VycyBvbiBib3RoIHNpZGVzIG9mIHRoZSBhc3NpZ25tZW50IG9wZXJhdG9yLCB0aGUgUkhTIGV4cHJlc3Npb24sXG4gICJhLngiIGNhbiBhY2Nlc3MgZWl0aGVyIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSBvciAoaWYgbm8gaW5zdGFuY2VcbiAgYXR0cmlidXRlIGV4aXN0cykgYSBjbGFzcyBhdHRyaWJ1dGUuICBUaGUgTEhTIHRhcmdldCAiYS54IiBpcyBhbHdheXNcbiAgc2V0IGFzIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSwgY3JlYXRpbmcgaXQgaWYgbmVjZXNzYXJ5LiAgVGh1cywgdGhlXG4gIHR3byBvY2N1cnJlbmNlcyBvZiAiYS54IiBkbyBub3QgbmVjZXNzYXJpbHkgcmVmZXIgdG8gdGhlIHNhbWVcbiAgYXR0cmlidXRlOiBpZiB0aGUgUkhTIGV4cHJlc3Npb24gcmVmZXJzIHRvIGEgY2xhc3MgYXR0cmlidXRlLCB0aGVcbiAgTEhTIGNyZWF0ZXMgYSBuZXcgaW5zdGFuY2UgYXR0cmlidXRlIGFzIHRoZSB0YXJnZXQgb2YgdGhlXG4gIGFzc2lnbm1lbnQ6XG5cbiAgICAgY2xhc3MgQ2xzOlxuICAgICAgICAgeCA9IDMgICAgICAgICAgICAgIyBjbGFzcyB2YXJpYWJsZVxuICAgICBpbnN0ID0gQ2xzKClcbiAgICAgaW5zdC54ID0gaW5zdC54ICsgMSAgICMgd3JpdGVzIGluc3QueCBhcyA0IGxlYXZpbmcgQ2xzLnggYXMgM1xuXG4gIFRoaXMgZGVzY3JpcHRpb24gZG9lcyBub3QgbmVjZXNzYXJpbHkgYXBwbHkgdG8gZGVzY3JpcHRvclxuICBhdHRyaWJ1dGVzLCBzdWNoIGFzIHByb3BlcnRpZXMgY3JlYXRlZCB3aXRoICJwcm9wZXJ0eSgpIi5cblxuKiBJZiB0aGUgdGFyZ2V0IGlzIGEgc3Vic2NyaXB0aW9uOiBUaGUgcHJpbWFyeSBleHByZXNzaW9uIGluIHRoZVxuICByZWZlcmVuY2UgaXMgZXZhbHVhdGVkLiAgSXQgc2hvdWxkIHlpZWxkIGVpdGhlciBhIG11dGFibGUgc2VxdWVuY2VcbiAgb2JqZWN0IChzdWNoIGFzIGEgbGlzdCkgb3IgYSBtYXBwaW5nIG9iamVjdCAoc3VjaCBhcyBhIGRpY3Rpb25hcnkpLlxuICBOZXh0LCB0aGUgc3Vic2NyaXB0IGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkLlxuXG4gIElmIHRoZSBwcmltYXJ5IGlzIGEgbXV0YWJsZSBzZXF1ZW5jZSBvYmplY3QgKHN1Y2ggYXMgYSBsaXN0KSwgdGhlXG4gIHN1YnNjcmlwdCBtdXN0IHlpZWxkIGFuIGludGVnZXIuICBJZiBpdCBpcyBuZWdhdGl2ZSwgdGhlIHNlcXVlbmNlXCdzXG4gIGxlbmd0aCBpcyBhZGRlZCB0byBpdC4gIFRoZSByZXN1bHRpbmcgdmFsdWUgbXVzdCBiZSBhIG5vbm5lZ2F0aXZlXG4gIGludGVnZXIgbGVzcyB0aGFuIHRoZSBzZXF1ZW5jZVwncyBsZW5ndGgsIGFuZCB0aGUgc2VxdWVuY2UgaXMgYXNrZWRcbiAgdG8gYXNzaWduIHRoZSBhc3NpZ25lZCBvYmplY3QgdG8gaXRzIGl0ZW0gd2l0aCB0aGF0IGluZGV4LiAgSWYgdGhlXG4gIGluZGV4IGlzIG91dCBvZiByYW5nZSwgIkluZGV4RXJyb3IiIGlzIHJhaXNlZCAoYXNzaWdubWVudCB0byBhXG4gIHN1YnNjcmlwdGVkIHNlcXVlbmNlIGNhbm5vdCBhZGQgbmV3IGl0ZW1zIHRvIGEgbGlzdCkuXG5cbiAgSWYgdGhlIHByaW1hcnkgaXMgYSBtYXBwaW5nIG9iamVjdCAoc3VjaCBhcyBhIGRpY3Rpb25hcnkpLCB0aGVcbiAgc3Vic2NyaXB0IG11c3QgaGF2ZSBhIHR5cGUgY29tcGF0aWJsZSB3aXRoIHRoZSBtYXBwaW5nXCdzIGtleSB0eXBlLFxuICBhbmQgdGhlIG1hcHBpbmcgaXMgdGhlbiBhc2tlZCB0byBjcmVhdGUgYSBrZXkvZGF0dW0gcGFpciB3aGljaCBtYXBzXG4gIHRoZSBzdWJzY3JpcHQgdG8gdGhlIGFzc2lnbmVkIG9iamVjdC4gIFRoaXMgY2FuIGVpdGhlciByZXBsYWNlIGFuXG4gIGV4aXN0aW5nIGtleS92YWx1ZSBwYWlyIHdpdGggdGhlIHNhbWUga2V5IHZhbHVlLCBvciBpbnNlcnQgYSBuZXdcbiAga2V5L3ZhbHVlIHBhaXIgKGlmIG5vIGtleSB3aXRoIHRoZSBzYW1lIHZhbHVlIGV4aXN0ZWQpLlxuXG4gIEZvciB1c2VyLWRlZmluZWQgb2JqZWN0cywgdGhlICJfX3NldGl0ZW1fXygpIiBtZXRob2QgaXMgY2FsbGVkIHdpdGhcbiAgYXBwcm9wcmlhdGUgYXJndW1lbnRzLlxuXG4qIElmIHRoZSB0YXJnZXQgaXMgYSBzbGljaW5nOiBUaGUgcHJpbWFyeSBleHByZXNzaW9uIGluIHRoZVxuICByZWZlcmVuY2UgaXMgZXZhbHVhdGVkLiAgSXQgc2hvdWxkIHlpZWxkIGEgbXV0YWJsZSBzZXF1ZW5jZSBvYmplY3RcbiAgKHN1Y2ggYXMgYSBsaXN0KS4gIFRoZSBhc3NpZ25lZCBvYmplY3Qgc2hvdWxkIGJlIGEgc2VxdWVuY2Ugb2JqZWN0XG4gIG9mIHRoZSBzYW1lIHR5cGUuICBOZXh0LCB0aGUgbG93ZXIgYW5kIHVwcGVyIGJvdW5kIGV4cHJlc3Npb25zIGFyZVxuICBldmFsdWF0ZWQsIGluc29mYXIgdGhleSBhcmUgcHJlc2VudDsgZGVmYXVsdHMgYXJlIHplcm8gYW5kIHRoZVxuICBzZXF1ZW5jZVwncyBsZW5ndGguICBUaGUgYm91bmRzIHNob3VsZCBldmFsdWF0ZSB0byBpbnRlZ2Vycy4gSWZcbiAgZWl0aGVyIGJvdW5kIGlzIG5lZ2F0aXZlLCB0aGUgc2VxdWVuY2VcJ3MgbGVuZ3RoIGlzIGFkZGVkIHRvIGl0LiAgVGhlXG4gIHJlc3VsdGluZyBib3VuZHMgYXJlIGNsaXBwZWQgdG8gbGllIGJldHdlZW4gemVybyBhbmQgdGhlIHNlcXVlbmNlXCdzXG4gIGxlbmd0aCwgaW5jbHVzaXZlLiAgRmluYWxseSwgdGhlIHNlcXVlbmNlIG9iamVjdCBpcyBhc2tlZCB0byByZXBsYWNlXG4gIHRoZSBzbGljZSB3aXRoIHRoZSBpdGVtcyBvZiB0aGUgYXNzaWduZWQgc2VxdWVuY2UuICBUaGUgbGVuZ3RoIG9mXG4gIHRoZSBzbGljZSBtYXkgYmUgZGlmZmVyZW50IGZyb20gdGhlIGxlbmd0aCBvZiB0aGUgYXNzaWduZWQgc2VxdWVuY2UsXG4gIHRodXMgY2hhbmdpbmcgdGhlIGxlbmd0aCBvZiB0aGUgdGFyZ2V0IHNlcXVlbmNlLCBpZiB0aGUgdGFyZ2V0XG4gIHNlcXVlbmNlIGFsbG93cyBpdC5cblxuKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBJbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiwgdGhlXG5zeW50YXggZm9yIHRhcmdldHMgaXMgdGFrZW4gdG8gYmUgdGhlIHNhbWUgYXMgZm9yIGV4cHJlc3Npb25zLCBhbmRcbmludmFsaWQgc3ludGF4IGlzIHJlamVjdGVkIGR1cmluZyB0aGUgY29kZSBnZW5lcmF0aW9uIHBoYXNlLCBjYXVzaW5nXG5sZXNzIGRldGFpbGVkIGVycm9yIG1lc3NhZ2VzLlxuXG5BbHRob3VnaCB0aGUgZGVmaW5pdGlvbiBvZiBhc3NpZ25tZW50IGltcGxpZXMgdGhhdCBvdmVybGFwcyBiZXR3ZWVuXG50aGUgbGVmdC1oYW5kIHNpZGUgYW5kIHRoZSByaWdodC1oYW5kIHNpZGUgYXJlIFwnc2ltdWx0YW5lb3VzXCcgKGZvclxuZXhhbXBsZSAiYSwgYiA9IGIsIGEiIHN3YXBzIHR3byB2YXJpYWJsZXMpLCBvdmVybGFwcyAqd2l0aGluKiB0aGVcbmNvbGxlY3Rpb24gb2YgYXNzaWduZWQtdG8gdmFyaWFibGVzIG9jY3VyIGxlZnQtdG8tcmlnaHQsIHNvbWV0aW1lc1xucmVzdWx0aW5nIGluIGNvbmZ1c2lvbi4gIEZvciBpbnN0YW5jZSwgdGhlIGZvbGxvd2luZyBwcm9ncmFtIHByaW50c1xuIlswLCAyXSI6XG5cbiAgIHggPSBbMCwgMV1cbiAgIGkgPSAwXG4gICBpLCB4W2ldID0gMSwgMiAgICAgICAgICMgaSBpcyB1cGRhdGVkLCB0aGVuIHhbaV0gaXMgdXBkYXRlZFxuICAgcHJpbnQoeClcblxuU2VlIGFsc286ICoqUEVQIDMxMzIqKiAtIEV4dGVuZGVkIEl0ZXJhYmxlIFVucGFja2luZ1xuXG4gICAgIFRoZSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgIip0YXJnZXQiIGZlYXR1cmUuXG5cblxuQXVnbWVudGVkIGFzc2lnbm1lbnQgc3RhdGVtZW50c1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5BdWdtZW50ZWQgYXNzaWdubWVudCBpcyB0aGUgY29tYmluYXRpb24sIGluIGEgc2luZ2xlIHN0YXRlbWVudCwgb2YgYVxuYmluYXJ5IG9wZXJhdGlvbiBhbmQgYW4gYXNzaWdubWVudCBzdGF0ZW1lbnQ6XG5cbiAgIGF1Z21lbnRlZF9hc3NpZ25tZW50X3N0bXQgOjo9IGF1Z3RhcmdldCBhdWdvcCAoZXhwcmVzc2lvbl9saXN0IHwgeWllbGRfZXhwcmVzc2lvbilcbiAgIGF1Z3RhcmdldCAgICAgICAgICAgICAgICAgOjo9IGlkZW50aWZpZXIgfCBhdHRyaWJ1dGVyZWYgfCBzdWJzY3JpcHRpb24gfCBzbGljaW5nXG4gICBhdWdvcCAgICAgICAgICAgICAgICAgICAgIDo6PSAiKz0iIHwgIi09IiB8ICIqPSIgfCAiQD0iIHwgIi89IiB8ICIvLz0iIHwgIiU9IiB8ICIqKj0iXG4gICAgICAgICAgICAgfCAiPj49IiB8ICI8PD0iIHwgIiY9IiB8ICJePSIgfCAifD0iXG5cbihTZWUgc2VjdGlvbiAqUHJpbWFyaWVzKiBmb3IgdGhlIHN5bnRheCBkZWZpbml0aW9ucyBvZiB0aGUgbGFzdCB0aHJlZVxuc3ltYm9scy4pXG5cbkFuIGF1Z21lbnRlZCBhc3NpZ25tZW50IGV2YWx1YXRlcyB0aGUgdGFyZ2V0ICh3aGljaCwgdW5saWtlIG5vcm1hbFxuYXNzaWdubWVudCBzdGF0ZW1lbnRzLCBjYW5ub3QgYmUgYW4gdW5wYWNraW5nKSBhbmQgdGhlIGV4cHJlc3Npb25cbmxpc3QsIHBlcmZvcm1zIHRoZSBiaW5hcnkgb3BlcmF0aW9uIHNwZWNpZmljIHRvIHRoZSB0eXBlIG9mIGFzc2lnbm1lbnRcbm9uIHRoZSB0d28gb3BlcmFuZHMsIGFuZCBhc3NpZ25zIHRoZSByZXN1bHQgdG8gdGhlIG9yaWdpbmFsIHRhcmdldC5cblRoZSB0YXJnZXQgaXMgb25seSBldmFsdWF0ZWQgb25jZS5cblxuQW4gYXVnbWVudGVkIGFzc2lnbm1lbnQgZXhwcmVzc2lvbiBsaWtlICJ4ICs9IDEiIGNhbiBiZSByZXdyaXR0ZW4gYXNcbiJ4ID0geCArIDEiIHRvIGFjaGlldmUgYSBzaW1pbGFyLCBidXQgbm90IGV4YWN0bHkgZXF1YWwgZWZmZWN0LiBJbiB0aGVcbmF1Z21lbnRlZCB2ZXJzaW9uLCAieCIgaXMgb25seSBldmFsdWF0ZWQgb25jZS4gQWxzbywgd2hlbiBwb3NzaWJsZSxcbnRoZSBhY3R1YWwgb3BlcmF0aW9uIGlzIHBlcmZvcm1lZCAqaW4tcGxhY2UqLCBtZWFuaW5nIHRoYXQgcmF0aGVyIHRoYW5cbmNyZWF0aW5nIGEgbmV3IG9iamVjdCBhbmQgYXNzaWduaW5nIHRoYXQgdG8gdGhlIHRhcmdldCwgdGhlIG9sZCBvYmplY3RcbmlzIG1vZGlmaWVkIGluc3RlYWQuXG5cblVubGlrZSBub3JtYWwgYXNzaWdubWVudHMsIGF1Z21lbnRlZCBhc3NpZ25tZW50cyBldmFsdWF0ZSB0aGUgbGVmdC1cbmhhbmQgc2lkZSAqYmVmb3JlKiBldmFsdWF0aW5nIHRoZSByaWdodC1oYW5kIHNpZGUuICBGb3IgZXhhbXBsZSwgImFbaV1cbis9IGYoeCkiIGZpcnN0IGxvb2tzLXVwICJhW2ldIiwgdGhlbiBpdCBldmFsdWF0ZXMgImYoeCkiIGFuZCBwZXJmb3Jtc1xudGhlIGFkZGl0aW9uLCBhbmQgbGFzdGx5LCBpdCB3cml0ZXMgdGhlIHJlc3VsdCBiYWNrIHRvICJhW2ldIi5cblxuV2l0aCB0aGUgZXhjZXB0aW9uIG9mIGFzc2lnbmluZyB0byB0dXBsZXMgYW5kIG11bHRpcGxlIHRhcmdldHMgaW4gYVxuc2luZ2xlIHN0YXRlbWVudCwgdGhlIGFzc2lnbm1lbnQgZG9uZSBieSBhdWdtZW50ZWQgYXNzaWdubWVudFxuc3RhdGVtZW50cyBpcyBoYW5kbGVkIHRoZSBzYW1lIHdheSBhcyBub3JtYWwgYXNzaWdubWVudHMuIFNpbWlsYXJseSxcbndpdGggdGhlIGV4Y2VwdGlvbiBvZiB0aGUgcG9zc2libGUgKmluLXBsYWNlKiBiZWhhdmlvciwgdGhlIGJpbmFyeVxub3BlcmF0aW9uIHBlcmZvcm1lZCBieSBhdWdtZW50ZWQgYXNzaWdubWVudCBpcyB0aGUgc2FtZSBhcyB0aGUgbm9ybWFsXG5iaW5hcnkgb3BlcmF0aW9ucy5cblxuRm9yIHRhcmdldHMgd2hpY2ggYXJlIGF0dHJpYnV0ZSByZWZlcmVuY2VzLCB0aGUgc2FtZSAqY2F2ZWF0IGFib3V0XG5jbGFzcyBhbmQgaW5zdGFuY2UgYXR0cmlidXRlcyogYXBwbGllcyBhcyBmb3IgcmVndWxhciBhc3NpZ25tZW50cy5cbicsCi0gJ2F0b20taWRlbnRpZmllcnMnOiB1J1xuSWRlbnRpZmllcnMgKE5hbWVzKVxuKioqKioqKioqKioqKioqKioqKlxuXG5BbiBpZGVudGlmaWVyIG9jY3VycmluZyBhcyBhbiBhdG9tIGlzIGEgbmFtZS4gIFNlZSBzZWN0aW9uXG4qSWRlbnRpZmllcnMgYW5kIGtleXdvcmRzKiBmb3IgbGV4aWNhbCBkZWZpbml0aW9uIGFuZCBzZWN0aW9uICpOYW1pbmdcbmFuZCBiaW5kaW5nKiBmb3IgZG9jdW1lbnRhdGlvbiBvZiBuYW1pbmcgYW5kIGJpbmRpbmcuXG5cbldoZW4gdGhlIG5hbWUgaXMgYm91bmQgdG8gYW4gb2JqZWN0LCBldmFsdWF0aW9uIG9mIHRoZSBhdG9tIHlpZWxkc1xudGhhdCBvYmplY3QuIFdoZW4gYSBuYW1lIGlzIG5vdCBib3VuZCwgYW4gYXR0ZW1wdCB0byBldmFsdWF0ZSBpdFxucmFpc2VzIGEgIk5hbWVFcnJvciIgZXhjZXB0aW9uLlxuXG4qKlByaXZhdGUgbmFtZSBtYW5nbGluZzoqKiBXaGVuIGFuIGlkZW50aWZpZXIgdGhhdCB0ZXh0dWFsbHkgb2NjdXJzIGluXG5hIGNsYXNzIGRlZmluaXRpb24gYmVnaW5zIHdpdGggdHdvIG9yIG1vcmUgdW5kZXJzY29yZSBjaGFyYWN0ZXJzIGFuZFxuZG9lcyBub3QgZW5kIGluIHR3byBvciBtb3JlIHVuZGVyc2NvcmVzLCBpdCBpcyBjb25zaWRlcmVkIGEgKnByaXZhdGVcbm5hbWUqIG9mIHRoYXQgY2xhc3MuIFByaXZhdGUgbmFtZXMgYXJlIHRyYW5zZm9ybWVkIHRvIGEgbG9uZ2VyIGZvcm1cbmJlZm9yZSBjb2RlIGlzIGdlbmVyYXRlZCBmb3IgdGhlbS4gIFRoZSB0cmFuc2Zvcm1hdGlvbiBpbnNlcnRzIHRoZVxuY2xhc3MgbmFtZSwgd2l0aCBsZWFkaW5nIHVuZGVyc2NvcmVzIHJlbW92ZWQgYW5kIGEgc2luZ2xlIHVuZGVyc2NvcmVcbmluc2VydGVkLCBpbiBmcm9udCBvZiB0aGUgbmFtZS4gIEZvciBleGFtcGxlLCB0aGUgaWRlbnRpZmllciAiX19zcGFtIlxub2NjdXJyaW5nIGluIGEgY2xhc3MgbmFtZWQgIkhhbSIgd2lsbCBiZSB0cmFuc2Zvcm1lZCB0byAiX0hhbV9fc3BhbSIuXG5UaGlzIHRyYW5zZm9ybWF0aW9uIGlzIGluZGVwZW5kZW50IG9mIHRoZSBzeW50YWN0aWNhbCBjb250ZXh0IGluIHdoaWNoXG50aGUgaWRlbnRpZmllciBpcyB1c2VkLiAgSWYgdGhlIHRyYW5zZm9ybWVkIG5hbWUgaXMgZXh0cmVtZWx5IGxvbmdcbihsb25nZXIgdGhhbiAyNTUgY2hhcmFjdGVycyksIGltcGxlbWVudGF0aW9uIGRlZmluZWQgdHJ1bmNhdGlvbiBtYXlcbmhhcHBlbi4gSWYgdGhlIGNsYXNzIG5hbWUgY29uc2lzdHMgb25seSBvZiB1bmRlcnNjb3Jlcywgbm9cbnRyYW5zZm9ybWF0aW9uIGlzIGRvbmUuXG4nLAotICdhdG9tLWxpdGVyYWxzJzogdSJcbkxpdGVyYWxzXG4qKioqKioqKlxuXG5QeXRob24gc3VwcG9ydHMgc3RyaW5nIGFuZCBieXRlcyBsaXRlcmFscyBhbmQgdmFyaW91cyBudW1lcmljXG5saXRlcmFsczpcblxuICAgbGl0ZXJhbCA6Oj0gc3RyaW5nbGl0ZXJhbCB8IGJ5dGVzbGl0ZXJhbFxuICAgICAgICAgICAgICAgfCBpbnRlZ2VyIHwgZmxvYXRudW1iZXIgfCBpbWFnbnVtYmVyXG5cbkV2YWx1YXRpb24gb2YgYSBsaXRlcmFsIHlpZWxkcyBhbiBvYmplY3Qgb2YgdGhlIGdpdmVuIHR5cGUgKHN0cmluZyxcbmJ5dGVzLCBpbnRlZ2VyLCBmbG9hdGluZyBwb2ludCBudW1iZXIsIGNvbXBsZXggbnVtYmVyKSB3aXRoIHRoZSBnaXZlblxudmFsdWUuICBUaGUgdmFsdWUgbWF5IGJlIGFwcHJveGltYXRlZCBpbiB0aGUgY2FzZSBvZiBmbG9hdGluZyBwb2ludFxuYW5kIGltYWdpbmFyeSAoY29tcGxleCkgbGl0ZXJhbHMuICBTZWUgc2VjdGlvbiAqTGl0ZXJhbHMqIGZvciBkZXRhaWxzLlxuXG5BbGwgbGl0ZXJhbHMgY29ycmVzcG9uZCB0byBpbW11dGFibGUgZGF0YSB0eXBlcywgYW5kIGhlbmNlIHRoZVxub2JqZWN0J3MgaWRlbnRpdHkgaXMgbGVzcyBpbXBvcnRhbnQgdGhhbiBpdHMgdmFsdWUuICBNdWx0aXBsZVxuZXZhbHVhdGlvbnMgb2YgbGl0ZXJhbHMgd2l0aCB0aGUgc2FtZSB2YWx1ZSAoZWl0aGVyIHRoZSBzYW1lXG5vY2N1cnJlbmNlIGluIHRoZSBwcm9ncmFtIHRleHQgb3IgYSBkaWZmZXJlbnQgb2NjdXJyZW5jZSkgbWF5IG9idGFpblxudGhlIHNhbWUgb2JqZWN0IG9yIGEgZGlmZmVyZW50IG9iamVjdCB3aXRoIHRoZSBzYW1lIHZhbHVlLlxuIiwKLSAnYXR0cmlidXRlLWFjY2Vzcyc6IHUnXG5DdXN0b21pemluZyBhdHRyaWJ1dGUgYWNjZXNzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBjdXN0b21pemUgdGhlIG1lYW5pbmcgb2ZcbmF0dHJpYnV0ZSBhY2Nlc3MgKHVzZSBvZiwgYXNzaWdubWVudCB0bywgb3IgZGVsZXRpb24gb2YgIngubmFtZSIpIGZvclxuY2xhc3MgaW5zdGFuY2VzLlxuXG5vYmplY3QuX19nZXRhdHRyX18oc2VsZiwgbmFtZSlcblxuICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGxvb2t1cCBoYXMgbm90IGZvdW5kIHRoZSBhdHRyaWJ1dGUgaW4gdGhlXG4gICB1c3VhbCBwbGFjZXMgKGkuZS4gaXQgaXMgbm90IGFuIGluc3RhbmNlIGF0dHJpYnV0ZSBub3IgaXMgaXQgZm91bmRcbiAgIGluIHRoZSBjbGFzcyB0cmVlIGZvciAic2VsZiIpLiAgIm5hbWUiIGlzIHRoZSBhdHRyaWJ1dGUgbmFtZS4gVGhpc1xuICAgbWV0aG9kIHNob3VsZCByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlIGFuXG4gICAiQXR0cmlidXRlRXJyb3IiIGV4Y2VwdGlvbi5cblxuICAgTm90ZSB0aGF0IGlmIHRoZSBhdHRyaWJ1dGUgaXMgZm91bmQgdGhyb3VnaCB0aGUgbm9ybWFsIG1lY2hhbmlzbSxcbiAgICJfX2dldGF0dHJfXygpIiBpcyBub3QgY2FsbGVkLiAgKFRoaXMgaXMgYW4gaW50ZW50aW9uYWwgYXN5bW1ldHJ5XG4gICBiZXR3ZWVuICJfX2dldGF0dHJfXygpIiBhbmQgIl9fc2V0YXR0cl9fKCkiLikgVGhpcyBpcyBkb25lIGJvdGggZm9yXG4gICBlZmZpY2llbmN5IHJlYXNvbnMgYW5kIGJlY2F1c2Ugb3RoZXJ3aXNlICJfX2dldGF0dHJfXygpIiB3b3VsZCBoYXZlXG4gICBubyB3YXkgdG8gYWNjZXNzIG90aGVyIGF0dHJpYnV0ZXMgb2YgdGhlIGluc3RhbmNlLiAgTm90ZSB0aGF0IGF0XG4gICBsZWFzdCBmb3IgaW5zdGFuY2UgdmFyaWFibGVzLCB5b3UgY2FuIGZha2UgdG90YWwgY29udHJvbCBieSBub3RcbiAgIGluc2VydGluZyBhbnkgdmFsdWVzIGluIHRoZSBpbnN0YW5jZSBhdHRyaWJ1dGUgZGljdGlvbmFyeSAoYnV0XG4gICBpbnN0ZWFkIGluc2VydGluZyB0aGVtIGluIGFub3RoZXIgb2JqZWN0KS4gIFNlZSB0aGVcbiAgICJfX2dldGF0dHJpYnV0ZV9fKCkiIG1ldGhvZCBiZWxvdyBmb3IgYSB3YXkgdG8gYWN0dWFsbHkgZ2V0IHRvdGFsXG4gICBjb250cm9sIG92ZXIgYXR0cmlidXRlIGFjY2Vzcy5cblxub2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSlcblxuICAgQ2FsbGVkIHVuY29uZGl0aW9uYWxseSB0byBpbXBsZW1lbnQgYXR0cmlidXRlIGFjY2Vzc2VzIGZvclxuICAgaW5zdGFuY2VzIG9mIHRoZSBjbGFzcy4gSWYgdGhlIGNsYXNzIGFsc28gZGVmaW5lcyAiX19nZXRhdHRyX18oKSIsXG4gICB0aGUgbGF0dGVyIHdpbGwgbm90IGJlIGNhbGxlZCB1bmxlc3MgIl9fZ2V0YXR0cmlidXRlX18oKSIgZWl0aGVyXG4gICBjYWxscyBpdCBleHBsaWNpdGx5IG9yIHJhaXNlcyBhbiAiQXR0cmlidXRlRXJyb3IiLiBUaGlzIG1ldGhvZFxuICAgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW5cbiAgICJBdHRyaWJ1dGVFcnJvciIgZXhjZXB0aW9uLiBJbiBvcmRlciB0byBhdm9pZCBpbmZpbml0ZSByZWN1cnNpb24gaW5cbiAgIHRoaXMgbWV0aG9kLCBpdHMgaW1wbGVtZW50YXRpb24gc2hvdWxkIGFsd2F5cyBjYWxsIHRoZSBiYXNlIGNsYXNzXG4gICBtZXRob2Qgd2l0aCB0aGUgc2FtZSBuYW1lIHRvIGFjY2VzcyBhbnkgYXR0cmlidXRlcyBpdCBuZWVkcywgZm9yXG4gICBleGFtcGxlLCAib2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSkiLlxuXG4gICBOb3RlOiBUaGlzIG1ldGhvZCBtYXkgc3RpbGwgYmUgYnlwYXNzZWQgd2hlbiBsb29raW5nIHVwIHNwZWNpYWxcbiAgICAgbWV0aG9kcyBhcyB0aGUgcmVzdWx0IG9mIGltcGxpY2l0IGludm9jYXRpb24gdmlhIGxhbmd1YWdlIHN5bnRheFxuICAgICBvciBidWlsdC1pbiBmdW5jdGlvbnMuIFNlZSAqU3BlY2lhbCBtZXRob2QgbG9va3VwKi5cblxub2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKVxuXG4gICBDYWxsZWQgd2hlbiBhbiBhdHRyaWJ1dGUgYXNzaWdubWVudCBpcyBhdHRlbXB0ZWQuICBUaGlzIGlzIGNhbGxlZFxuICAgaW5zdGVhZCBvZiB0aGUgbm9ybWFsIG1lY2hhbmlzbSAoaS5lLiBzdG9yZSB0aGUgdmFsdWUgaW4gdGhlXG4gICBpbnN0YW5jZSBkaWN0aW9uYXJ5KS4gKm5hbWUqIGlzIHRoZSBhdHRyaWJ1dGUgbmFtZSwgKnZhbHVlKiBpcyB0aGVcbiAgIHZhbHVlIHRvIGJlIGFzc2lnbmVkIHRvIGl0LlxuXG4gICBJZiAiX19zZXRhdHRyX18oKSIgd2FudHMgdG8gYXNzaWduIHRvIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSwgaXRcbiAgIHNob3VsZCBjYWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhvZCB3aXRoIHRoZSBzYW1lIG5hbWUsIGZvciBleGFtcGxlLFxuICAgIm9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSkiLlxuXG5vYmplY3QuX19kZWxhdHRyX18oc2VsZiwgbmFtZSlcblxuICAgTGlrZSAiX19zZXRhdHRyX18oKSIgYnV0IGZvciBhdHRyaWJ1dGUgZGVsZXRpb24gaW5zdGVhZCBvZlxuICAgYXNzaWdubWVudC4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgaWYgImRlbCBvYmoubmFtZSIgaXNcbiAgIG1lYW5pbmdmdWwgZm9yIHRoZSBvYmplY3QuXG5cbm9iamVjdC5fX2Rpcl9fKHNlbGYpXG5cbiAgIENhbGxlZCB3aGVuICJkaXIoKSIgaXMgY2FsbGVkIG9uIHRoZSBvYmplY3QuIEEgc2VxdWVuY2UgbXVzdCBiZVxuICAgcmV0dXJuZWQuICJkaXIoKSIgY29udmVydHMgdGhlIHJldHVybmVkIHNlcXVlbmNlIHRvIGEgbGlzdCBhbmRcbiAgIHNvcnRzIGl0LlxuXG5cbkltcGxlbWVudGluZyBEZXNjcmlwdG9yc1xuPT09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBvbmx5IGFwcGx5IHdoZW4gYW4gaW5zdGFuY2Ugb2YgdGhlIGNsYXNzXG5jb250YWluaW5nIHRoZSBtZXRob2QgKGEgc28tY2FsbGVkICpkZXNjcmlwdG9yKiBjbGFzcykgYXBwZWFycyBpbiBhblxuKm93bmVyKiBjbGFzcyAodGhlIGRlc2NyaXB0b3IgbXVzdCBiZSBpbiBlaXRoZXIgdGhlIG93bmVyXCdzIGNsYXNzXG5kaWN0aW9uYXJ5IG9yIGluIHRoZSBjbGFzcyBkaWN0aW9uYXJ5IGZvciBvbmUgb2YgaXRzIHBhcmVudHMpLiAgSW4gdGhlXG5leGFtcGxlcyBiZWxvdywgInRoZSBhdHRyaWJ1dGUiIHJlZmVycyB0byB0aGUgYXR0cmlidXRlIHdob3NlIG5hbWUgaXNcbnRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IGluIHRoZSBvd25lciBjbGFzc1wnICJfX2RpY3RfXyIuXG5cbm9iamVjdC5fX2dldF9fKHNlbGYsIGluc3RhbmNlLCBvd25lcilcblxuICAgQ2FsbGVkIHRvIGdldCB0aGUgYXR0cmlidXRlIG9mIHRoZSBvd25lciBjbGFzcyAoY2xhc3MgYXR0cmlidXRlXG4gICBhY2Nlc3MpIG9yIG9mIGFuIGluc3RhbmNlIG9mIHRoYXQgY2xhc3MgKGluc3RhbmNlIGF0dHJpYnV0ZVxuICAgYWNjZXNzKS4gKm93bmVyKiBpcyBhbHdheXMgdGhlIG93bmVyIGNsYXNzLCB3aGlsZSAqaW5zdGFuY2UqIGlzIHRoZVxuICAgaW5zdGFuY2UgdGhhdCB0aGUgYXR0cmlidXRlIHdhcyBhY2Nlc3NlZCB0aHJvdWdoLCBvciAiTm9uZSIgd2hlblxuICAgdGhlIGF0dHJpYnV0ZSBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSAqb3duZXIqLiAgVGhpcyBtZXRob2Qgc2hvdWxkXG4gICByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlIGFuICJBdHRyaWJ1dGVFcnJvciJcbiAgIGV4Y2VwdGlvbi5cblxub2JqZWN0Ll9fc2V0X18oc2VsZiwgaW5zdGFuY2UsIHZhbHVlKVxuXG4gICBDYWxsZWQgdG8gc2V0IHRoZSBhdHRyaWJ1dGUgb24gYW4gaW5zdGFuY2UgKmluc3RhbmNlKiBvZiB0aGUgb3duZXJcbiAgIGNsYXNzIHRvIGEgbmV3IHZhbHVlLCAqdmFsdWUqLlxuXG5vYmplY3QuX19kZWxldGVfXyhzZWxmLCBpbnN0YW5jZSlcblxuICAgQ2FsbGVkIHRvIGRlbGV0ZSB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogb2YgdGhlXG4gICBvd25lciBjbGFzcy5cblxuVGhlIGF0dHJpYnV0ZSAiX19vYmpjbGFzc19fIiBpcyBpbnRlcnByZXRlZCBieSB0aGUgImluc3BlY3QiIG1vZHVsZSBhc1xuc3BlY2lmeWluZyB0aGUgY2xhc3Mgd2hlcmUgdGhpcyBvYmplY3Qgd2FzIGRlZmluZWQgKHNldHRpbmcgdGhpc1xuYXBwcm9wcmlhdGVseSBjYW4gYXNzaXN0IGluIHJ1bnRpbWUgaW50cm9zcGVjdGlvbiBvZiBkeW5hbWljIGNsYXNzXG5hdHRyaWJ1dGVzKS4gRm9yIGNhbGxhYmxlcywgaXQgbWF5IGluZGljYXRlIHRoYXQgYW4gaW5zdGFuY2Ugb2YgdGhlXG5naXZlbiB0eXBlIChvciBhIHN1YmNsYXNzKSBpcyBleHBlY3RlZCBvciByZXF1aXJlZCBhcyB0aGUgZmlyc3RcbnBvc2l0aW9uYWwgYXJndW1lbnQgKGZvciBleGFtcGxlLCBDUHl0aG9uIHNldHMgdGhpcyBhdHRyaWJ1dGUgZm9yXG51bmJvdW5kIG1ldGhvZHMgdGhhdCBhcmUgaW1wbGVtZW50ZWQgaW4gQykuXG5cblxuSW52b2tpbmcgRGVzY3JpcHRvcnNcbj09PT09PT09PT09PT09PT09PT09XG5cbkluIGdlbmVyYWwsIGEgZGVzY3JpcHRvciBpcyBhbiBvYmplY3QgYXR0cmlidXRlIHdpdGggImJpbmRpbmdcbmJlaGF2aW9yIiwgb25lIHdob3NlIGF0dHJpYnV0ZSBhY2Nlc3MgaGFzIGJlZW4gb3ZlcnJpZGRlbiBieSBtZXRob2RzXG5pbiB0aGUgZGVzY3JpcHRvciBwcm90b2NvbDogICJfX2dldF9fKCkiLCAiX19zZXRfXygpIiwgYW5kXG4iX19kZWxldGVfXygpIi4gSWYgYW55IG9mIHRob3NlIG1ldGhvZHMgYXJlIGRlZmluZWQgZm9yIGFuIG9iamVjdCwgaXRcbmlzIHNhaWQgdG8gYmUgYSBkZXNjcmlwdG9yLlxuXG5UaGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgYXR0cmlidXRlIGFjY2VzcyBpcyB0byBnZXQsIHNldCwgb3IgZGVsZXRlXG50aGUgYXR0cmlidXRlIGZyb20gYW4gb2JqZWN0XCdzIGRpY3Rpb25hcnkuIEZvciBpbnN0YW5jZSwgImEueCIgaGFzIGFcbmxvb2t1cCBjaGFpbiBzdGFydGluZyB3aXRoICJhLl9fZGljdF9fW1wneFwnXSIsIHRoZW5cbiJ0eXBlKGEpLl9fZGljdF9fW1wneFwnXSIsIGFuZCBjb250aW51aW5nIHRocm91Z2ggdGhlIGJhc2UgY2xhc3NlcyBvZlxuInR5cGUoYSkiIGV4Y2x1ZGluZyBtZXRhY2xhc3Nlcy5cblxuSG93ZXZlciwgaWYgdGhlIGxvb2tlZC11cCB2YWx1ZSBpcyBhbiBvYmplY3QgZGVmaW5pbmcgb25lIG9mIHRoZVxuZGVzY3JpcHRvciBtZXRob2RzLCB0aGVuIFB5dGhvbiBtYXkgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYmVoYXZpb3IgYW5kXG5pbnZva2UgdGhlIGRlc2NyaXB0b3IgbWV0aG9kIGluc3RlYWQuICBXaGVyZSB0aGlzIG9jY3VycyBpbiB0aGVcbnByZWNlZGVuY2UgY2hhaW4gZGVwZW5kcyBvbiB3aGljaCBkZXNjcmlwdG9yIG1ldGhvZHMgd2VyZSBkZWZpbmVkIGFuZFxuaG93IHRoZXkgd2VyZSBjYWxsZWQuXG5cblRoZSBzdGFydGluZyBwb2ludCBmb3IgZGVzY3JpcHRvciBpbnZvY2F0aW9uIGlzIGEgYmluZGluZywgImEueCIuIEhvd1xudGhlIGFyZ3VtZW50cyBhcmUgYXNzZW1ibGVkIGRlcGVuZHMgb24gImEiOlxuXG5EaXJlY3QgQ2FsbFxuICAgVGhlIHNpbXBsZXN0IGFuZCBsZWFzdCBjb21tb24gY2FsbCBpcyB3aGVuIHVzZXIgY29kZSBkaXJlY3RseVxuICAgaW52b2tlcyBhIGRlc2NyaXB0b3IgbWV0aG9kOiAgICAieC5fX2dldF9fKGEpIi5cblxuSW5zdGFuY2UgQmluZGluZ1xuICAgSWYgYmluZGluZyB0byBhbiBvYmplY3QgaW5zdGFuY2UsICJhLngiIGlzIHRyYW5zZm9ybWVkIGludG8gdGhlXG4gICBjYWxsOiAidHlwZShhKS5fX2RpY3RfX1tcJ3hcJ10uX19nZXRfXyhhLCB0eXBlKGEpKSIuXG5cbkNsYXNzIEJpbmRpbmdcbiAgIElmIGJpbmRpbmcgdG8gYSBjbGFzcywgIkEueCIgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgY2FsbDpcbiAgICJBLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKE5vbmUsIEEpIi5cblxuU3VwZXIgQmluZGluZ1xuICAgSWYgImEiIGlzIGFuIGluc3RhbmNlIG9mICJzdXBlciIsIHRoZW4gdGhlIGJpbmRpbmcgInN1cGVyKEIsXG4gICBvYmopLm0oKSIgc2VhcmNoZXMgIm9iai5fX2NsYXNzX18uX19tcm9fXyIgZm9yIHRoZSBiYXNlIGNsYXNzICJBIlxuICAgaW1tZWRpYXRlbHkgcHJlY2VkaW5nICJCIiBhbmQgdGhlbiBpbnZva2VzIHRoZSBkZXNjcmlwdG9yIHdpdGggdGhlXG4gICBjYWxsOiAiQS5fX2RpY3RfX1tcJ21cJ10uX19nZXRfXyhvYmosIG9iai5fX2NsYXNzX18pIi5cblxuRm9yIGluc3RhbmNlIGJpbmRpbmdzLCB0aGUgcHJlY2VkZW5jZSBvZiBkZXNjcmlwdG9yIGludm9jYXRpb24gZGVwZW5kc1xub24gdGhlIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyBhcmUgZGVmaW5lZC4gIEEgZGVzY3JpcHRvciBjYW4gZGVmaW5lXG5hbnkgY29tYmluYXRpb24gb2YgIl9fZ2V0X18oKSIsICJfX3NldF9fKCkiIGFuZCAiX19kZWxldGVfXygpIi4gIElmIGl0XG5kb2VzIG5vdCBkZWZpbmUgIl9fZ2V0X18oKSIsIHRoZW4gYWNjZXNzaW5nIHRoZSBhdHRyaWJ1dGUgd2lsbCByZXR1cm5cbnRoZSBkZXNjcmlwdG9yIG9iamVjdCBpdHNlbGYgdW5sZXNzIHRoZXJlIGlzIGEgdmFsdWUgaW4gdGhlIG9iamVjdFwnc1xuaW5zdGFuY2UgZGljdGlvbmFyeS4gIElmIHRoZSBkZXNjcmlwdG9yIGRlZmluZXMgIl9fc2V0X18oKSIgYW5kL29yXG4iX19kZWxldGVfXygpIiwgaXQgaXMgYSBkYXRhIGRlc2NyaXB0b3I7IGlmIGl0IGRlZmluZXMgbmVpdGhlciwgaXQgaXNcbmEgbm9uLWRhdGEgZGVzY3JpcHRvci4gIE5vcm1hbGx5LCBkYXRhIGRlc2NyaXB0b3JzIGRlZmluZSBib3RoXG4iX19nZXRfXygpIiBhbmQgIl9fc2V0X18oKSIsIHdoaWxlIG5vbi1kYXRhIGRlc2NyaXB0b3JzIGhhdmUganVzdCB0aGVcbiJfX2dldF9fKCkiIG1ldGhvZC4gIERhdGEgZGVzY3JpcHRvcnMgd2l0aCAiX19zZXRfXygpIiBhbmQgIl9fZ2V0X18oKSJcbmRlZmluZWQgYWx3YXlzIG92ZXJyaWRlIGEgcmVkZWZpbml0aW9uIGluIGFuIGluc3RhbmNlIGRpY3Rpb25hcnkuICBJblxuY29udHJhc3QsIG5vbi1kYXRhIGRlc2NyaXB0b3JzIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGluc3RhbmNlcy5cblxuUHl0aG9uIG1ldGhvZHMgKGluY2x1ZGluZyAic3RhdGljbWV0aG9kKCkiIGFuZCAiY2xhc3NtZXRob2QoKSIpIGFyZVxuaW1wbGVtZW50ZWQgYXMgbm9uLWRhdGEgZGVzY3JpcHRvcnMuICBBY2NvcmRpbmdseSwgaW5zdGFuY2VzIGNhblxucmVkZWZpbmUgYW5kIG92ZXJyaWRlIG1ldGhvZHMuICBUaGlzIGFsbG93cyBpbmRpdmlkdWFsIGluc3RhbmNlcyB0b1xuYWNxdWlyZSBiZWhhdmlvcnMgdGhhdCBkaWZmZXIgZnJvbSBvdGhlciBpbnN0YW5jZXMgb2YgdGhlIHNhbWUgY2xhc3MuXG5cblRoZSAicHJvcGVydHkoKSIgZnVuY3Rpb24gaXMgaW1wbGVtZW50ZWQgYXMgYSBkYXRhIGRlc2NyaXB0b3IuXG5BY2NvcmRpbmdseSwgaW5zdGFuY2VzIGNhbm5vdCBvdmVycmlkZSB0aGUgYmVoYXZpb3Igb2YgYSBwcm9wZXJ0eS5cblxuXG5fX3Nsb3RzX19cbj09PT09PT09PVxuXG5CeSBkZWZhdWx0LCBpbnN0YW5jZXMgb2YgY2xhc3NlcyBoYXZlIGEgZGljdGlvbmFyeSBmb3IgYXR0cmlidXRlXG5zdG9yYWdlLiAgVGhpcyB3YXN0ZXMgc3BhY2UgZm9yIG9iamVjdHMgaGF2aW5nIHZlcnkgZmV3IGluc3RhbmNlXG52YXJpYWJsZXMuICBUaGUgc3BhY2UgY29uc3VtcHRpb24gY2FuIGJlY29tZSBhY3V0ZSB3aGVuIGNyZWF0aW5nIGxhcmdlXG5udW1iZXJzIG9mIGluc3RhbmNlcy5cblxuVGhlIGRlZmF1bHQgY2FuIGJlIG92ZXJyaWRkZW4gYnkgZGVmaW5pbmcgKl9fc2xvdHNfXyogaW4gYSBjbGFzc1xuZGVmaW5pdGlvbi4gVGhlICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uIHRha2VzIGEgc2VxdWVuY2Ugb2YgaW5zdGFuY2VcbnZhcmlhYmxlcyBhbmQgcmVzZXJ2ZXMganVzdCBlbm91Z2ggc3BhY2UgaW4gZWFjaCBpbnN0YW5jZSB0byBob2xkIGFcbnZhbHVlIGZvciBlYWNoIHZhcmlhYmxlLiAgU3BhY2UgaXMgc2F2ZWQgYmVjYXVzZSAqX19kaWN0X18qIGlzIG5vdFxuY3JlYXRlZCBmb3IgZWFjaCBpbnN0YW5jZS5cblxub2JqZWN0Ll9fc2xvdHNfX1xuXG4gICBUaGlzIGNsYXNzIHZhcmlhYmxlIGNhbiBiZSBhc3NpZ25lZCBhIHN0cmluZywgaXRlcmFibGUsIG9yIHNlcXVlbmNlXG4gICBvZiBzdHJpbmdzIHdpdGggdmFyaWFibGUgbmFtZXMgdXNlZCBieSBpbnN0YW5jZXMuICAqX19zbG90c19fKlxuICAgcmVzZXJ2ZXMgc3BhY2UgZm9yIHRoZSBkZWNsYXJlZCB2YXJpYWJsZXMgYW5kIHByZXZlbnRzIHRoZVxuICAgYXV0b21hdGljIGNyZWF0aW9uIG9mICpfX2RpY3RfXyogYW5kICpfX3dlYWtyZWZfXyogZm9yIGVhY2hcbiAgIGluc3RhbmNlLlxuXG5cbk5vdGVzIG9uIHVzaW5nICpfX3Nsb3RzX18qXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4qIFdoZW4gaW5oZXJpdGluZyBmcm9tIGEgY2xhc3Mgd2l0aG91dCAqX19zbG90c19fKiwgdGhlICpfX2RpY3RfXypcbiAgYXR0cmlidXRlIG9mIHRoYXQgY2xhc3Mgd2lsbCBhbHdheXMgYmUgYWNjZXNzaWJsZSwgc28gYSAqX19zbG90c19fKlxuICBkZWZpbml0aW9uIGluIHRoZSBzdWJjbGFzcyBpcyBtZWFuaW5nbGVzcy5cblxuKiBXaXRob3V0IGEgKl9fZGljdF9fKiB2YXJpYWJsZSwgaW5zdGFuY2VzIGNhbm5vdCBiZSBhc3NpZ25lZCBuZXdcbiAgdmFyaWFibGVzIG5vdCBsaXN0ZWQgaW4gdGhlICpfX3Nsb3RzX18qIGRlZmluaXRpb24uICBBdHRlbXB0cyB0b1xuICBhc3NpZ24gdG8gYW4gdW5saXN0ZWQgdmFyaWFibGUgbmFtZSByYWlzZXMgIkF0dHJpYnV0ZUVycm9yIi4gSWZcbiAgZHluYW1pYyBhc3NpZ25tZW50IG9mIG5ldyB2YXJpYWJsZXMgaXMgZGVzaXJlZCwgdGhlbiBhZGRcbiAgIlwnX19kaWN0X19cJyIgdG8gdGhlIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICpfX3Nsb3RzX18qXG4gIGRlY2xhcmF0aW9uLlxuXG4qIFdpdGhvdXQgYSAqX193ZWFrcmVmX18qIHZhcmlhYmxlIGZvciBlYWNoIGluc3RhbmNlLCBjbGFzc2VzXG4gIGRlZmluaW5nICpfX3Nsb3RzX18qIGRvIG5vdCBzdXBwb3J0IHdlYWsgcmVmZXJlbmNlcyB0byBpdHNcbiAgaW5zdGFuY2VzLiBJZiB3ZWFrIHJlZmVyZW5jZSBzdXBwb3J0IGlzIG5lZWRlZCwgdGhlbiBhZGRcbiAgIlwnX193ZWFrcmVmX19cJyIgdG8gdGhlIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICpfX3Nsb3RzX18qXG4gIGRlY2xhcmF0aW9uLlxuXG4qICpfX3Nsb3RzX18qIGFyZSBpbXBsZW1lbnRlZCBhdCB0aGUgY2xhc3MgbGV2ZWwgYnkgY3JlYXRpbmdcbiAgZGVzY3JpcHRvcnMgKCpJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMqKSBmb3IgZWFjaCB2YXJpYWJsZSBuYW1lLiAgQXNcbiAgYSByZXN1bHQsIGNsYXNzIGF0dHJpYnV0ZXMgY2Fubm90IGJlIHVzZWQgdG8gc2V0IGRlZmF1bHQgdmFsdWVzIGZvclxuICBpbnN0YW5jZSB2YXJpYWJsZXMgZGVmaW5lZCBieSAqX19zbG90c19fKjsgb3RoZXJ3aXNlLCB0aGUgY2xhc3NcbiAgYXR0cmlidXRlIHdvdWxkIG92ZXJ3cml0ZSB0aGUgZGVzY3JpcHRvciBhc3NpZ25tZW50LlxuXG4qIFRoZSBhY3Rpb24gb2YgYSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiBpcyBsaW1pdGVkIHRvIHRoZSBjbGFzc1xuICB3aGVyZSBpdCBpcyBkZWZpbmVkLiAgQXMgYSByZXN1bHQsIHN1YmNsYXNzZXMgd2lsbCBoYXZlIGEgKl9fZGljdF9fKlxuICB1bmxlc3MgdGhleSBhbHNvIGRlZmluZSAqX19zbG90c19fKiAod2hpY2ggbXVzdCBvbmx5IGNvbnRhaW4gbmFtZXNcbiAgb2YgYW55ICphZGRpdGlvbmFsKiBzbG90cykuXG5cbiogSWYgYSBjbGFzcyBkZWZpbmVzIGEgc2xvdCBhbHNvIGRlZmluZWQgaW4gYSBiYXNlIGNsYXNzLCB0aGVcbiAgaW5zdGFuY2UgdmFyaWFibGUgZGVmaW5lZCBieSB0aGUgYmFzZSBjbGFzcyBzbG90IGlzIGluYWNjZXNzaWJsZVxuICAoZXhjZXB0IGJ5IHJldHJpZXZpbmcgaXRzIGRlc2NyaXB0b3IgZGlyZWN0bHkgZnJvbSB0aGUgYmFzZSBjbGFzcykuXG4gIFRoaXMgcmVuZGVycyB0aGUgbWVhbmluZyBvZiB0aGUgcHJvZ3JhbSB1bmRlZmluZWQuICBJbiB0aGUgZnV0dXJlLCBhXG4gIGNoZWNrIG1heSBiZSBhZGRlZCB0byBwcmV2ZW50IHRoaXMuXG5cbiogTm9uZW1wdHkgKl9fc2xvdHNfXyogZG9lcyBub3Qgd29yayBmb3IgY2xhc3NlcyBkZXJpdmVkIGZyb21cbiAgInZhcmlhYmxlLWxlbmd0aCIgYnVpbHQtaW4gdHlwZXMgc3VjaCBhcyAiaW50IiwgImJ5dGVzIiBhbmQgInR1cGxlIi5cblxuKiBBbnkgbm9uLXN0cmluZyBpdGVyYWJsZSBtYXkgYmUgYXNzaWduZWQgdG8gKl9fc2xvdHNfXyouIE1hcHBpbmdzXG4gIG1heSBhbHNvIGJlIHVzZWQ7IGhvd2V2ZXIsIGluIHRoZSBmdXR1cmUsIHNwZWNpYWwgbWVhbmluZyBtYXkgYmVcbiAgYXNzaWduZWQgdG8gdGhlIHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIGVhY2gga2V5LlxuXG4qICpfX2NsYXNzX18qIGFzc2lnbm1lbnQgd29ya3Mgb25seSBpZiBib3RoIGNsYXNzZXMgaGF2ZSB0aGUgc2FtZVxuICAqX19zbG90c19fKi5cbicsCi0gJ2F0dHJpYnV0ZS1yZWZlcmVuY2VzJzogdSdcbkF0dHJpYnV0ZSByZWZlcmVuY2VzXG4qKioqKioqKioqKioqKioqKioqKlxuXG5BbiBhdHRyaWJ1dGUgcmVmZXJlbmNlIGlzIGEgcHJpbWFyeSBmb2xsb3dlZCBieSBhIHBlcmlvZCBhbmQgYSBuYW1lOlxuXG4gICBhdHRyaWJ1dGVyZWYgOjo9IHByaW1hcnkgIi4iIGlkZW50aWZpZXJcblxuVGhlIHByaW1hcnkgbXVzdCBldmFsdWF0ZSB0byBhbiBvYmplY3Qgb2YgYSB0eXBlIHRoYXQgc3VwcG9ydHNcbmF0dHJpYnV0ZSByZWZlcmVuY2VzLCB3aGljaCBtb3N0IG9iamVjdHMgZG8uICBUaGlzIG9iamVjdCBpcyB0aGVuXG5hc2tlZCB0byBwcm9kdWNlIHRoZSBhdHRyaWJ1dGUgd2hvc2UgbmFtZSBpcyB0aGUgaWRlbnRpZmllci4gIFRoaXNcbnByb2R1Y3Rpb24gY2FuIGJlIGN1c3RvbWl6ZWQgYnkgb3ZlcnJpZGluZyB0aGUgIl9fZ2V0YXR0cl9fKCkiIG1ldGhvZC5cbklmIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBhdmFpbGFibGUsIHRoZSBleGNlcHRpb24gIkF0dHJpYnV0ZUVycm9yIiBpc1xucmFpc2VkLiAgT3RoZXJ3aXNlLCB0aGUgdHlwZSBhbmQgdmFsdWUgb2YgdGhlIG9iamVjdCBwcm9kdWNlZCBpc1xuZGV0ZXJtaW5lZCBieSB0aGUgb2JqZWN0LiAgTXVsdGlwbGUgZXZhbHVhdGlvbnMgb2YgdGhlIHNhbWUgYXR0cmlidXRlXG5yZWZlcmVuY2UgbWF5IHlpZWxkIGRpZmZlcmVudCBvYmplY3RzLlxuJywKLSAnYXVnYXNzaWduJzogdSdcbkF1Z21lbnRlZCBhc3NpZ25tZW50IHN0YXRlbWVudHNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuQXVnbWVudGVkIGFzc2lnbm1lbnQgaXMgdGhlIGNvbWJpbmF0aW9uLCBpbiBhIHNpbmdsZSBzdGF0ZW1lbnQsIG9mIGFcbmJpbmFyeSBvcGVyYXRpb24gYW5kIGFuIGFzc2lnbm1lbnQgc3RhdGVtZW50OlxuXG4gICBhdWdtZW50ZWRfYXNzaWdubWVudF9zdG10IDo6PSBhdWd0YXJnZXQgYXVnb3AgKGV4cHJlc3Npb25fbGlzdCB8IHlpZWxkX2V4cHJlc3Npb24pXG4gICBhdWd0YXJnZXQgICAgICAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyIHwgYXR0cmlidXRlcmVmIHwgc3Vic2NyaXB0aW9uIHwgc2xpY2luZ1xuICAgYXVnb3AgICAgICAgICAgICAgICAgICAgICA6Oj0gIis9IiB8ICItPSIgfCAiKj0iIHwgIkA9IiB8ICIvPSIgfCAiLy89IiB8ICIlPSIgfCAiKio9IlxuICAgICAgICAgICAgIHwgIj4+PSIgfCAiPDw9IiB8ICImPSIgfCAiXj0iIHwgInw9IlxuXG4oU2VlIHNlY3Rpb24gKlByaW1hcmllcyogZm9yIHRoZSBzeW50YXggZGVmaW5pdGlvbnMgb2YgdGhlIGxhc3QgdGhyZWVcbnN5bWJvbHMuKVxuXG5BbiBhdWdtZW50ZWQgYXNzaWdubWVudCBldmFsdWF0ZXMgdGhlIHRhcmdldCAod2hpY2gsIHVubGlrZSBub3JtYWxcbmFzc2lnbm1lbnQgc3RhdGVtZW50cywgY2Fubm90IGJlIGFuIHVucGFja2luZykgYW5kIHRoZSBleHByZXNzaW9uXG5saXN0LCBwZXJmb3JtcyB0aGUgYmluYXJ5IG9wZXJhdGlvbiBzcGVjaWZpYyB0byB0aGUgdHlwZSBvZiBhc3NpZ25tZW50XG5vbiB0aGUgdHdvIG9wZXJhbmRzLCBhbmQgYXNzaWducyB0aGUgcmVzdWx0IHRvIHRoZSBvcmlnaW5hbCB0YXJnZXQuXG5UaGUgdGFyZ2V0IGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuXG5cbkFuIGF1Z21lbnRlZCBhc3NpZ25tZW50IGV4cHJlc3Npb24gbGlrZSAieCArPSAxIiBjYW4gYmUgcmV3cml0dGVuIGFzXG4ieCA9IHggKyAxIiB0byBhY2hpZXZlIGEgc2ltaWxhciwgYnV0IG5vdCBleGFjdGx5IGVxdWFsIGVmZmVjdC4gSW4gdGhlXG5hdWdtZW50ZWQgdmVyc2lvbiwgIngiIGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuIEFsc28sIHdoZW4gcG9zc2libGUsXG50aGUgYWN0dWFsIG9wZXJhdGlvbiBpcyBwZXJmb3JtZWQgKmluLXBsYWNlKiwgbWVhbmluZyB0aGF0IHJhdGhlciB0aGFuXG5jcmVhdGluZyBhIG5ldyBvYmplY3QgYW5kIGFzc2lnbmluZyB0aGF0IHRvIHRoZSB0YXJnZXQsIHRoZSBvbGQgb2JqZWN0XG5pcyBtb2RpZmllZCBpbnN0ZWFkLlxuXG5Vbmxpa2Ugbm9ybWFsIGFzc2lnbm1lbnRzLCBhdWdtZW50ZWQgYXNzaWdubWVudHMgZXZhbHVhdGUgdGhlIGxlZnQtXG5oYW5kIHNpZGUgKmJlZm9yZSogZXZhbHVhdGluZyB0aGUgcmlnaHQtaGFuZCBzaWRlLiAgRm9yIGV4YW1wbGUsICJhW2ldXG4rPSBmKHgpIiBmaXJzdCBsb29rcy11cCAiYVtpXSIsIHRoZW4gaXQgZXZhbHVhdGVzICJmKHgpIiBhbmQgcGVyZm9ybXNcbnRoZSBhZGRpdGlvbiwgYW5kIGxhc3RseSwgaXQgd3JpdGVzIHRoZSByZXN1bHQgYmFjayB0byAiYVtpXSIuXG5cbldpdGggdGhlIGV4Y2VwdGlvbiBvZiBhc3NpZ25pbmcgdG8gdHVwbGVzIGFuZCBtdWx0aXBsZSB0YXJnZXRzIGluIGFcbnNpbmdsZSBzdGF0ZW1lbnQsIHRoZSBhc3NpZ25tZW50IGRvbmUgYnkgYXVnbWVudGVkIGFzc2lnbm1lbnRcbnN0YXRlbWVudHMgaXMgaGFuZGxlZCB0aGUgc2FtZSB3YXkgYXMgbm9ybWFsIGFzc2lnbm1lbnRzLiBTaW1pbGFybHksXG53aXRoIHRoZSBleGNlcHRpb24gb2YgdGhlIHBvc3NpYmxlICppbi1wbGFjZSogYmVoYXZpb3IsIHRoZSBiaW5hcnlcbm9wZXJhdGlvbiBwZXJmb3JtZWQgYnkgYXVnbWVudGVkIGFzc2lnbm1lbnQgaXMgdGhlIHNhbWUgYXMgdGhlIG5vcm1hbFxuYmluYXJ5IG9wZXJhdGlvbnMuXG5cbkZvciB0YXJnZXRzIHdoaWNoIGFyZSBhdHRyaWJ1dGUgcmVmZXJlbmNlcywgdGhlIHNhbWUgKmNhdmVhdCBhYm91dFxuY2xhc3MgYW5kIGluc3RhbmNlIGF0dHJpYnV0ZXMqIGFwcGxpZXMgYXMgZm9yIHJlZ3VsYXIgYXNzaWdubWVudHMuXG4nLAotICdiaW5hcnknOiB1J1xuQmluYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9uc1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgYmluYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9ucyBoYXZlIHRoZSBjb252ZW50aW9uYWwgcHJpb3JpdHlcbmxldmVscy4gIE5vdGUgdGhhdCBzb21lIG9mIHRoZXNlIG9wZXJhdGlvbnMgYWxzbyBhcHBseSB0byBjZXJ0YWluIG5vbi1cbm51bWVyaWMgdHlwZXMuICBBcGFydCBmcm9tIHRoZSBwb3dlciBvcGVyYXRvciwgdGhlcmUgYXJlIG9ubHkgdHdvXG5sZXZlbHMsIG9uZSBmb3IgbXVsdGlwbGljYXRpdmUgb3BlcmF0b3JzIGFuZCBvbmUgZm9yIGFkZGl0aXZlXG5vcGVyYXRvcnM6XG5cbiAgIG1fZXhwciA6Oj0gdV9leHByIHwgbV9leHByICIqIiB1X2V4cHIgfCBtX2V4cHIgIkAiIG1fZXhwciB8XG4gICAgICAgICAgICAgIG1fZXhwciAiLy8iIHVfZXhwcnwgbV9leHByICIvIiB1X2V4cHIgfFxuICAgICAgICAgICAgICBtX2V4cHIgIiUiIHVfZXhwclxuICAgYV9leHByIDo6PSBtX2V4cHIgfCBhX2V4cHIgIisiIG1fZXhwciB8IGFfZXhwciAiLSIgbV9leHByXG5cblRoZSAiKiIgKG11bHRpcGxpY2F0aW9uKSBvcGVyYXRvciB5aWVsZHMgdGhlIHByb2R1Y3Qgb2YgaXRzIGFyZ3VtZW50cy5cblRoZSBhcmd1bWVudHMgbXVzdCBlaXRoZXIgYm90aCBiZSBudW1iZXJzLCBvciBvbmUgYXJndW1lbnQgbXVzdCBiZSBhblxuaW50ZWdlciBhbmQgdGhlIG90aGVyIG11c3QgYmUgYSBzZXF1ZW5jZS4gSW4gdGhlIGZvcm1lciBjYXNlLCB0aGVcbm51bWJlcnMgYXJlIGNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlIGFuZCB0aGVuIG11bHRpcGxpZWQgdG9nZXRoZXIuXG5JbiB0aGUgbGF0dGVyIGNhc2UsIHNlcXVlbmNlIHJlcGV0aXRpb24gaXMgcGVyZm9ybWVkOyBhIG5lZ2F0aXZlXG5yZXBldGl0aW9uIGZhY3RvciB5aWVsZHMgYW4gZW1wdHkgc2VxdWVuY2UuXG5cblRoZSAiQCIgKGF0KSBvcGVyYXRvciBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIGZvciBtYXRyaXhcbm11bHRpcGxpY2F0aW9uLiAgTm8gYnVpbHRpbiBQeXRob24gdHlwZXMgaW1wbGVtZW50IHRoaXMgb3BlcmF0b3IuXG5cbk5ldyBpbiB2ZXJzaW9uIDMuNS5cblxuVGhlICIvIiAoZGl2aXNpb24pIGFuZCAiLy8iIChmbG9vciBkaXZpc2lvbikgb3BlcmF0b3JzIHlpZWxkIHRoZVxucXVvdGllbnQgb2YgdGhlaXIgYXJndW1lbnRzLiAgVGhlIG51bWVyaWMgYXJndW1lbnRzIGFyZSBmaXJzdFxuY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUuIERpdmlzaW9uIG9mIGludGVnZXJzIHlpZWxkcyBhIGZsb2F0LCB3aGlsZVxuZmxvb3IgZGl2aXNpb24gb2YgaW50ZWdlcnMgcmVzdWx0cyBpbiBhbiBpbnRlZ2VyOyB0aGUgcmVzdWx0IGlzIHRoYXRcbm9mIG1hdGhlbWF0aWNhbCBkaXZpc2lvbiB3aXRoIHRoZSBcJ2Zsb29yXCcgZnVuY3Rpb24gYXBwbGllZCB0byB0aGVcbnJlc3VsdC4gIERpdmlzaW9uIGJ5IHplcm8gcmFpc2VzIHRoZSAiWmVyb0RpdmlzaW9uRXJyb3IiIGV4Y2VwdGlvbi5cblxuVGhlICIlIiAobW9kdWxvKSBvcGVyYXRvciB5aWVsZHMgdGhlIHJlbWFpbmRlciBmcm9tIHRoZSBkaXZpc2lvbiBvZlxudGhlIGZpcnN0IGFyZ3VtZW50IGJ5IHRoZSBzZWNvbmQuICBUaGUgbnVtZXJpYyBhcmd1bWVudHMgYXJlIGZpcnN0XG5jb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZS4gIEEgemVybyByaWdodCBhcmd1bWVudCByYWlzZXMgdGhlXG4iWmVyb0RpdmlzaW9uRXJyb3IiIGV4Y2VwdGlvbi4gIFRoZSBhcmd1bWVudHMgbWF5IGJlIGZsb2F0aW5nIHBvaW50XG5udW1iZXJzLCBlLmcuLCAiMy4xNCUwLjciIGVxdWFscyAiMC4zNCIgKHNpbmNlICIzLjE0IiBlcXVhbHMgIjQqMC43ICtcbjAuMzQiLikgIFRoZSBtb2R1bG8gb3BlcmF0b3IgYWx3YXlzIHlpZWxkcyBhIHJlc3VsdCB3aXRoIHRoZSBzYW1lIHNpZ25cbmFzIGl0cyBzZWNvbmQgb3BlcmFuZCAob3IgemVybyk7IHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgcmVzdWx0IGlzXG5zdHJpY3RseSBzbWFsbGVyIHRoYW4gdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBzZWNvbmQgb3BlcmFuZCBbMV0uXG5cblRoZSBmbG9vciBkaXZpc2lvbiBhbmQgbW9kdWxvIG9wZXJhdG9ycyBhcmUgY29ubmVjdGVkIGJ5IHRoZSBmb2xsb3dpbmdcbmlkZW50aXR5OiAieCA9PSAoeC8veSkqeSArICh4JXkpIi4gIEZsb29yIGRpdmlzaW9uIGFuZCBtb2R1bG8gYXJlIGFsc29cbmNvbm5lY3RlZCB3aXRoIHRoZSBidWlsdC1pbiBmdW5jdGlvbiAiZGl2bW9kKCkiOiAiZGl2bW9kKHgsIHkpID09XG4oeC8veSwgeCV5KSIuIFsyXS5cblxuSW4gYWRkaXRpb24gdG8gcGVyZm9ybWluZyB0aGUgbW9kdWxvIG9wZXJhdGlvbiBvbiBudW1iZXJzLCB0aGUgIiUiXG5vcGVyYXRvciBpcyBhbHNvIG92ZXJsb2FkZWQgYnkgc3RyaW5nIG9iamVjdHMgdG8gcGVyZm9ybSBvbGQtc3R5bGVcbnN0cmluZyBmb3JtYXR0aW5nIChhbHNvIGtub3duIGFzIGludGVycG9sYXRpb24pLiAgVGhlIHN5bnRheCBmb3JcbnN0cmluZyBmb3JtYXR0aW5nIGlzIGRlc2NyaWJlZCBpbiB0aGUgUHl0aG9uIExpYnJhcnkgUmVmZXJlbmNlLFxuc2VjdGlvbiAqcHJpbnRmLXN0eWxlIFN0cmluZyBGb3JtYXR0aW5nKi5cblxuVGhlIGZsb29yIGRpdmlzaW9uIG9wZXJhdG9yLCB0aGUgbW9kdWxvIG9wZXJhdG9yLCBhbmQgdGhlICJkaXZtb2QoKSJcbmZ1bmN0aW9uIGFyZSBub3QgZGVmaW5lZCBmb3IgY29tcGxleCBudW1iZXJzLiAgSW5zdGVhZCwgY29udmVydCB0byBhXG5mbG9hdGluZyBwb2ludCBudW1iZXIgdXNpbmcgdGhlICJhYnMoKSIgZnVuY3Rpb24gaWYgYXBwcm9wcmlhdGUuXG5cblRoZSAiKyIgKGFkZGl0aW9uKSBvcGVyYXRvciB5aWVsZHMgdGhlIHN1bSBvZiBpdHMgYXJndW1lbnRzLiAgVGhlXG5hcmd1bWVudHMgbXVzdCBlaXRoZXIgYm90aCBiZSBudW1iZXJzIG9yIGJvdGggYmUgc2VxdWVuY2VzIG9mIHRoZSBzYW1lXG50eXBlLiAgSW4gdGhlIGZvcm1lciBjYXNlLCB0aGUgbnVtYmVycyBhcmUgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGVcbmFuZCB0aGVuIGFkZGVkIHRvZ2V0aGVyLiBJbiB0aGUgbGF0dGVyIGNhc2UsIHRoZSBzZXF1ZW5jZXMgYXJlXG5jb25jYXRlbmF0ZWQuXG5cblRoZSAiLSIgKHN1YnRyYWN0aW9uKSBvcGVyYXRvciB5aWVsZHMgdGhlIGRpZmZlcmVuY2Ugb2YgaXRzIGFyZ3VtZW50cy5cblRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgZmlyc3QgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUuXG4nLAotICdiaXR3aXNlJzogdSdcbkJpbmFyeSBiaXR3aXNlIG9wZXJhdGlvbnNcbioqKioqKioqKioqKioqKioqKioqKioqKipcblxuRWFjaCBvZiB0aGUgdGhyZWUgYml0d2lzZSBvcGVyYXRpb25zIGhhcyBhIGRpZmZlcmVudCBwcmlvcml0eSBsZXZlbDpcblxuICAgYW5kX2V4cHIgOjo9IHNoaWZ0X2V4cHIgfCBhbmRfZXhwciAiJiIgc2hpZnRfZXhwclxuICAgeG9yX2V4cHIgOjo9IGFuZF9leHByIHwgeG9yX2V4cHIgIl4iIGFuZF9leHByXG4gICBvcl9leHByICA6Oj0geG9yX2V4cHIgfCBvcl9leHByICJ8IiB4b3JfZXhwclxuXG5UaGUgIiYiIG9wZXJhdG9yIHlpZWxkcyB0aGUgYml0d2lzZSBBTkQgb2YgaXRzIGFyZ3VtZW50cywgd2hpY2ggbXVzdFxuYmUgaW50ZWdlcnMuXG5cblRoZSAiXiIgb3BlcmF0b3IgeWllbGRzIHRoZSBiaXR3aXNlIFhPUiAoZXhjbHVzaXZlIE9SKSBvZiBpdHNcbmFyZ3VtZW50cywgd2hpY2ggbXVzdCBiZSBpbnRlZ2Vycy5cblxuVGhlICJ8IiBvcGVyYXRvciB5aWVsZHMgdGhlIGJpdHdpc2UgKGluY2x1c2l2ZSkgT1Igb2YgaXRzIGFyZ3VtZW50cyxcbndoaWNoIG11c3QgYmUgaW50ZWdlcnMuXG4nLAotICdibHRpbi1jb2RlLW9iamVjdHMnOiB1J1xuQ29kZSBPYmplY3RzXG4qKioqKioqKioqKipcblxuQ29kZSBvYmplY3RzIGFyZSB1c2VkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbiB0byByZXByZXNlbnQgInBzZXVkby1cbmNvbXBpbGVkIiBleGVjdXRhYmxlIFB5dGhvbiBjb2RlIHN1Y2ggYXMgYSBmdW5jdGlvbiBib2R5LiBUaGV5IGRpZmZlclxuZnJvbSBmdW5jdGlvbiBvYmplY3RzIGJlY2F1c2UgdGhleSBkb25cJ3QgY29udGFpbiBhIHJlZmVyZW5jZSB0byB0aGVpclxuZ2xvYmFsIGV4ZWN1dGlvbiBlbnZpcm9ubWVudC4gIENvZGUgb2JqZWN0cyBhcmUgcmV0dXJuZWQgYnkgdGhlIGJ1aWx0LVxuaW4gImNvbXBpbGUoKSIgZnVuY3Rpb24gYW5kIGNhbiBiZSBleHRyYWN0ZWQgZnJvbSBmdW5jdGlvbiBvYmplY3RzXG50aHJvdWdoIHRoZWlyICJfX2NvZGVfXyIgYXR0cmlidXRlLiBTZWUgYWxzbyB0aGUgImNvZGUiIG1vZHVsZS5cblxuQSBjb2RlIG9iamVjdCBjYW4gYmUgZXhlY3V0ZWQgb3IgZXZhbHVhdGVkIGJ5IHBhc3NpbmcgaXQgKGluc3RlYWQgb2YgYVxuc291cmNlIHN0cmluZykgdG8gdGhlICJleGVjKCkiIG9yICJldmFsKCkiICBidWlsdC1pbiBmdW5jdGlvbnMuXG5cblNlZSAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbicsCi0gJ2JsdGluLWVsbGlwc2lzLW9iamVjdCc6IHUnXG5UaGUgRWxsaXBzaXMgT2JqZWN0XG4qKioqKioqKioqKioqKioqKioqXG5cblRoaXMgb2JqZWN0IGlzIGNvbW1vbmx5IHVzZWQgYnkgc2xpY2luZyAoc2VlICpTbGljaW5ncyopLiAgSXQgc3VwcG9ydHNcbm5vIHNwZWNpYWwgb3BlcmF0aW9ucy4gIFRoZXJlIGlzIGV4YWN0bHkgb25lIGVsbGlwc2lzIG9iamVjdCwgbmFtZWRcbiJFbGxpcHNpcyIgKGEgYnVpbHQtaW4gbmFtZSkuICAidHlwZShFbGxpcHNpcykoKSIgcHJvZHVjZXMgdGhlXG4iRWxsaXBzaXMiIHNpbmdsZXRvbi5cblxuSXQgaXMgd3JpdHRlbiBhcyAiRWxsaXBzaXMiIG9yICIuLi4iLlxuJywKLSAnYmx0aW4tbnVsbC1vYmplY3QnOiB1J1xuVGhlIE51bGwgT2JqZWN0XG4qKioqKioqKioqKioqKipcblxuVGhpcyBvYmplY3QgaXMgcmV0dXJuZWQgYnkgZnVuY3Rpb25zIHRoYXQgZG9uXCd0IGV4cGxpY2l0bHkgcmV0dXJuIGFcbnZhbHVlLiAgSXQgc3VwcG9ydHMgbm8gc3BlY2lhbCBvcGVyYXRpb25zLiAgVGhlcmUgaXMgZXhhY3RseSBvbmUgbnVsbFxub2JqZWN0LCBuYW1lZCAiTm9uZSIgKGEgYnVpbHQtaW4gbmFtZSkuICAidHlwZShOb25lKSgpIiBwcm9kdWNlcyB0aGVcbnNhbWUgc2luZ2xldG9uLlxuXG5JdCBpcyB3cml0dGVuIGFzICJOb25lIi5cbicsCi0gJ2JsdGluLXR5cGUtb2JqZWN0cyc6IHUnXG5UeXBlIE9iamVjdHNcbioqKioqKioqKioqKlxuXG5UeXBlIG9iamVjdHMgcmVwcmVzZW50IHRoZSB2YXJpb3VzIG9iamVjdCB0eXBlcy4gIEFuIG9iamVjdFwncyB0eXBlIGlzXG5hY2Nlc3NlZCBieSB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gInR5cGUoKSIuICBUaGVyZSBhcmUgbm8gc3BlY2lhbFxub3BlcmF0aW9ucyBvbiB0eXBlcy4gIFRoZSBzdGFuZGFyZCBtb2R1bGUgInR5cGVzIiBkZWZpbmVzIG5hbWVzIGZvclxuYWxsIHN0YW5kYXJkIGJ1aWx0LWluIHR5cGVzLlxuXG5UeXBlcyBhcmUgd3JpdHRlbiBsaWtlIHRoaXM6ICI8Y2xhc3MgXCdpbnRcJz4iLlxuJywKLSAnYm9vbGVhbnMnOiB1J1xuQm9vbGVhbiBvcGVyYXRpb25zXG4qKioqKioqKioqKioqKioqKipcblxuICAgb3JfdGVzdCAgOjo9IGFuZF90ZXN0IHwgb3JfdGVzdCAib3IiIGFuZF90ZXN0XG4gICBhbmRfdGVzdCA6Oj0gbm90X3Rlc3QgfCBhbmRfdGVzdCAiYW5kIiBub3RfdGVzdFxuICAgbm90X3Rlc3QgOjo9IGNvbXBhcmlzb24gfCAibm90IiBub3RfdGVzdFxuXG5JbiB0aGUgY29udGV4dCBvZiBCb29sZWFuIG9wZXJhdGlvbnMsIGFuZCBhbHNvIHdoZW4gZXhwcmVzc2lvbnMgYXJlXG51c2VkIGJ5IGNvbnRyb2wgZmxvdyBzdGF0ZW1lbnRzLCB0aGUgZm9sbG93aW5nIHZhbHVlcyBhcmUgaW50ZXJwcmV0ZWRcbmFzIGZhbHNlOiAiRmFsc2UiLCAiTm9uZSIsIG51bWVyaWMgemVybyBvZiBhbGwgdHlwZXMsIGFuZCBlbXB0eVxuc3RyaW5ncyBhbmQgY29udGFpbmVycyAoaW5jbHVkaW5nIHN0cmluZ3MsIHR1cGxlcywgbGlzdHMsXG5kaWN0aW9uYXJpZXMsIHNldHMgYW5kIGZyb3plbnNldHMpLiAgQWxsIG90aGVyIHZhbHVlcyBhcmUgaW50ZXJwcmV0ZWRcbmFzIHRydWUuICBVc2VyLWRlZmluZWQgb2JqZWN0cyBjYW4gY3VzdG9taXplIHRoZWlyIHRydXRoIHZhbHVlIGJ5XG5wcm92aWRpbmcgYSAiX19ib29sX18oKSIgbWV0aG9kLlxuXG5UaGUgb3BlcmF0b3IgIm5vdCIgeWllbGRzICJUcnVlIiBpZiBpdHMgYXJndW1lbnQgaXMgZmFsc2UsICJGYWxzZSJcbm90aGVyd2lzZS5cblxuVGhlIGV4cHJlc3Npb24gInggYW5kIHkiIGZpcnN0IGV2YWx1YXRlcyAqeCo7IGlmICp4KiBpcyBmYWxzZSwgaXRzXG52YWx1ZSBpcyByZXR1cm5lZDsgb3RoZXJ3aXNlLCAqeSogaXMgZXZhbHVhdGVkIGFuZCB0aGUgcmVzdWx0aW5nIHZhbHVlXG5pcyByZXR1cm5lZC5cblxuVGhlIGV4cHJlc3Npb24gInggb3IgeSIgZmlyc3QgZXZhbHVhdGVzICp4KjsgaWYgKngqIGlzIHRydWUsIGl0cyB2YWx1ZVxuaXMgcmV0dXJuZWQ7IG90aGVyd2lzZSwgKnkqIGlzIGV2YWx1YXRlZCBhbmQgdGhlIHJlc3VsdGluZyB2YWx1ZSBpc1xucmV0dXJuZWQuXG5cbihOb3RlIHRoYXQgbmVpdGhlciAiYW5kIiBub3IgIm9yIiByZXN0cmljdCB0aGUgdmFsdWUgYW5kIHR5cGUgdGhleVxucmV0dXJuIHRvICJGYWxzZSIgYW5kICJUcnVlIiwgYnV0IHJhdGhlciByZXR1cm4gdGhlIGxhc3QgZXZhbHVhdGVkXG5hcmd1bWVudC4gIFRoaXMgaXMgc29tZXRpbWVzIHVzZWZ1bCwgZS5nLiwgaWYgInMiIGlzIGEgc3RyaW5nIHRoYXRcbnNob3VsZCBiZSByZXBsYWNlZCBieSBhIGRlZmF1bHQgdmFsdWUgaWYgaXQgaXMgZW1wdHksIHRoZSBleHByZXNzaW9uXG4icyBvciBcJ2Zvb1wnIiB5aWVsZHMgdGhlIGRlc2lyZWQgdmFsdWUuICBCZWNhdXNlICJub3QiIGhhcyB0byBjcmVhdGUgYVxubmV3IHZhbHVlLCBpdCByZXR1cm5zIGEgYm9vbGVhbiB2YWx1ZSByZWdhcmRsZXNzIG9mIHRoZSB0eXBlIG9mIGl0c1xuYXJndW1lbnQgKGZvciBleGFtcGxlLCAibm90IFwnZm9vXCciIHByb2R1Y2VzICJGYWxzZSIgcmF0aGVyIHRoYW4gIlwnXCciLilcbicsCi0gJ2JyZWFrJzogdSdcblRoZSAiYnJlYWsiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIGJyZWFrX3N0bXQgOjo9ICJicmVhayJcblxuImJyZWFrIiBtYXkgb25seSBvY2N1ciBzeW50YWN0aWNhbGx5IG5lc3RlZCBpbiBhICJmb3IiIG9yICJ3aGlsZSJcbmxvb3AsIGJ1dCBub3QgbmVzdGVkIGluIGEgZnVuY3Rpb24gb3IgY2xhc3MgZGVmaW5pdGlvbiB3aXRoaW4gdGhhdFxubG9vcC5cblxuSXQgdGVybWluYXRlcyB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgbG9vcCwgc2tpcHBpbmcgdGhlIG9wdGlvbmFsICJlbHNlIlxuY2xhdXNlIGlmIHRoZSBsb29wIGhhcyBvbmUuXG5cbklmIGEgImZvciIgbG9vcCBpcyB0ZXJtaW5hdGVkIGJ5ICJicmVhayIsIHRoZSBsb29wIGNvbnRyb2wgdGFyZ2V0XG5rZWVwcyBpdHMgY3VycmVudCB2YWx1ZS5cblxuV2hlbiAiYnJlYWsiIHBhc3NlcyBjb250cm9sIG91dCBvZiBhICJ0cnkiIHN0YXRlbWVudCB3aXRoIGEgImZpbmFsbHkiXG5jbGF1c2UsIHRoYXQgImZpbmFsbHkiIGNsYXVzZSBpcyBleGVjdXRlZCBiZWZvcmUgcmVhbGx5IGxlYXZpbmcgdGhlXG5sb29wLlxuJywKLSAnY2FsbGFibGUtdHlwZXMnOiB1J1xuRW11bGF0aW5nIGNhbGxhYmxlIG9iamVjdHNcbioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbm9iamVjdC5fX2NhbGxfXyhzZWxmWywgYXJncy4uLl0pXG5cbiAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyAiY2FsbGVkIiBhcyBhIGZ1bmN0aW9uOyBpZiB0aGlzIG1ldGhvZFxuICAgaXMgZGVmaW5lZCwgIngoYXJnMSwgYXJnMiwgLi4uKSIgaXMgYSBzaG9ydGhhbmQgZm9yXG4gICAieC5fX2NhbGxfXyhhcmcxLCBhcmcyLCAuLi4pIi5cbicsCi0gJ2NhbGxzJzogdSdcbkNhbGxzXG4qKioqKlxuXG5BIGNhbGwgY2FsbHMgYSBjYWxsYWJsZSBvYmplY3QgKGUuZy4sIGEgKmZ1bmN0aW9uKikgd2l0aCBhIHBvc3NpYmx5XG5lbXB0eSBzZXJpZXMgb2YgKmFyZ3VtZW50cyo6XG5cbiAgIGNhbGwgICAgICAgICAgICAgICAgIDo6PSBwcmltYXJ5ICIoIiBbYXJndW1lbnRfbGlzdCBbIiwiXSB8IGNvbXByZWhlbnNpb25dICIpIlxuICAgYXJndW1lbnRfbGlzdCAgICAgICAgOjo9IHBvc2l0aW9uYWxfYXJndW1lbnRzIFsiLCIgc3RhcnJlZF9hbmRfa2V5d29yZHNdXG4gICAgICAgICAgICAgICAgICAgICAgIFsiLCIga2V5d29yZHNfYXJndW1lbnRzXVxuICAgICAgICAgICAgICAgICAgICAgfCBzdGFycmVkX2FuZF9rZXl3b3JkcyBbIiwiIGtleXdvcmRzX2FyZ3VtZW50c11cbiAgICAgICAgICAgICAgICAgICAgIHwga2V5d29yZHNfYXJndW1lbnRzXG4gICBwb3NpdGlvbmFsX2FyZ3VtZW50cyA6Oj0gWyIqIl0gZXhwcmVzc2lvbiAoIiwiIFsiKiJdIGV4cHJlc3Npb24pKlxuICAgc3RhcnJlZF9hbmRfa2V5d29yZHMgOjo9ICgiKiIgZXhwcmVzc2lvbiB8IGtleXdvcmRfaXRlbSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIiwiICIqIiBleHByZXNzaW9uIHwgIiwiIGtleXdvcmRfaXRlbSkqXG4gICBrZXl3b3Jkc19hcmd1bWVudHMgICA6Oj0gKGtleXdvcmRfaXRlbSB8ICIqKiIgZXhwcmVzc2lvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCIsIiBrZXl3b3JkX2l0ZW0gfCAiKioiIGV4cHJlc3Npb24pKlxuICAga2V5d29yZF9pdGVtICAgICAgICAgOjo9IGlkZW50aWZpZXIgIj0iIGV4cHJlc3Npb25cblxuQW4gb3B0aW9uYWwgdHJhaWxpbmcgY29tbWEgbWF5IGJlIHByZXNlbnQgYWZ0ZXIgdGhlIHBvc2l0aW9uYWwgYW5kXG5rZXl3b3JkIGFyZ3VtZW50cyBidXQgZG9lcyBub3QgYWZmZWN0IHRoZSBzZW1hbnRpY3MuXG5cblRoZSBwcmltYXJ5IG11c3QgZXZhbHVhdGUgdG8gYSBjYWxsYWJsZSBvYmplY3QgKHVzZXItZGVmaW5lZFxuZnVuY3Rpb25zLCBidWlsdC1pbiBmdW5jdGlvbnMsIG1ldGhvZHMgb2YgYnVpbHQtaW4gb2JqZWN0cywgY2xhc3Ncbm9iamVjdHMsIG1ldGhvZHMgb2YgY2xhc3MgaW5zdGFuY2VzLCBhbmQgYWxsIG9iamVjdHMgaGF2aW5nIGFcbiJfX2NhbGxfXygpIiBtZXRob2QgYXJlIGNhbGxhYmxlKS4gIEFsbCBhcmd1bWVudCBleHByZXNzaW9ucyBhcmVcbmV2YWx1YXRlZCBiZWZvcmUgdGhlIGNhbGwgaXMgYXR0ZW1wdGVkLiAgUGxlYXNlIHJlZmVyIHRvIHNlY3Rpb25cbipGdW5jdGlvbiBkZWZpbml0aW9ucyogZm9yIHRoZSBzeW50YXggb2YgZm9ybWFsICpwYXJhbWV0ZXIqIGxpc3RzLlxuXG5JZiBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgcHJlc2VudCwgdGhleSBhcmUgZmlyc3QgY29udmVydGVkIHRvXG5wb3NpdGlvbmFsIGFyZ3VtZW50cywgYXMgZm9sbG93cy4gIEZpcnN0LCBhIGxpc3Qgb2YgdW5maWxsZWQgc2xvdHMgaXNcbmNyZWF0ZWQgZm9yIHRoZSBmb3JtYWwgcGFyYW1ldGVycy4gIElmIHRoZXJlIGFyZSBOIHBvc2l0aW9uYWxcbmFyZ3VtZW50cywgdGhleSBhcmUgcGxhY2VkIGluIHRoZSBmaXJzdCBOIHNsb3RzLiAgTmV4dCwgZm9yIGVhY2hcbmtleXdvcmQgYXJndW1lbnQsIHRoZSBpZGVudGlmaWVyIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZVxuY29ycmVzcG9uZGluZyBzbG90IChpZiB0aGUgaWRlbnRpZmllciBpcyB0aGUgc2FtZSBhcyB0aGUgZmlyc3QgZm9ybWFsXG5wYXJhbWV0ZXIgbmFtZSwgdGhlIGZpcnN0IHNsb3QgaXMgdXNlZCwgYW5kIHNvIG9uKS4gIElmIHRoZSBzbG90IGlzXG5hbHJlYWR5IGZpbGxlZCwgYSAiVHlwZUVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLiBPdGhlcndpc2UsIHRoZVxudmFsdWUgb2YgdGhlIGFyZ3VtZW50IGlzIHBsYWNlZCBpbiB0aGUgc2xvdCwgZmlsbGluZyBpdCAoZXZlbiBpZiB0aGVcbmV4cHJlc3Npb24gaXMgIk5vbmUiLCBpdCBmaWxscyB0aGUgc2xvdCkuICBXaGVuIGFsbCBhcmd1bWVudHMgaGF2ZVxuYmVlbiBwcm9jZXNzZWQsIHRoZSBzbG90cyB0aGF0IGFyZSBzdGlsbCB1bmZpbGxlZCBhcmUgZmlsbGVkIHdpdGggdGhlXG5jb3JyZXNwb25kaW5nIGRlZmF1bHQgdmFsdWUgZnJvbSB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbi4gIChEZWZhdWx0XG52YWx1ZXMgYXJlIGNhbGN1bGF0ZWQsIG9uY2UsIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGRlZmluZWQ7IHRodXMsIGFcbm11dGFibGUgb2JqZWN0IHN1Y2ggYXMgYSBsaXN0IG9yIGRpY3Rpb25hcnkgdXNlZCBhcyBkZWZhdWx0IHZhbHVlIHdpbGxcbmJlIHNoYXJlZCBieSBhbGwgY2FsbHMgdGhhdCBkb25cJ3Qgc3BlY2lmeSBhbiBhcmd1bWVudCB2YWx1ZSBmb3IgdGhlXG5jb3JyZXNwb25kaW5nIHNsb3Q7IHRoaXMgc2hvdWxkIHVzdWFsbHkgYmUgYXZvaWRlZC4pICBJZiB0aGVyZSBhcmUgYW55XG51bmZpbGxlZCBzbG90cyBmb3Igd2hpY2ggbm8gZGVmYXVsdCB2YWx1ZSBpcyBzcGVjaWZpZWQsIGEgIlR5cGVFcnJvciJcbmV4Y2VwdGlvbiBpcyByYWlzZWQuICBPdGhlcndpc2UsIHRoZSBsaXN0IG9mIGZpbGxlZCBzbG90cyBpcyB1c2VkIGFzXG50aGUgYXJndW1lbnQgbGlzdCBmb3IgdGhlIGNhbGwuXG5cbioqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogQW4gaW1wbGVtZW50YXRpb24gbWF5IHByb3ZpZGVcbmJ1aWx0LWluIGZ1bmN0aW9ucyB3aG9zZSBwb3NpdGlvbmFsIHBhcmFtZXRlcnMgZG8gbm90IGhhdmUgbmFtZXMsIGV2ZW5cbmlmIHRoZXkgYXJlIFwnbmFtZWRcJyBmb3IgdGhlIHB1cnBvc2Ugb2YgZG9jdW1lbnRhdGlvbiwgYW5kIHdoaWNoXG50aGVyZWZvcmUgY2Fubm90IGJlIHN1cHBsaWVkIGJ5IGtleXdvcmQuICBJbiBDUHl0aG9uLCB0aGlzIGlzIHRoZSBjYXNlXG5mb3IgZnVuY3Rpb25zIGltcGxlbWVudGVkIGluIEMgdGhhdCB1c2UgIlB5QXJnX1BhcnNlVHVwbGUoKSIgdG8gcGFyc2VcbnRoZWlyIGFyZ3VtZW50cy5cblxuSWYgdGhlcmUgYXJlIG1vcmUgcG9zaXRpb25hbCBhcmd1bWVudHMgdGhhbiB0aGVyZSBhcmUgZm9ybWFsIHBhcmFtZXRlclxuc2xvdHMsIGEgIlR5cGVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZCwgdW5sZXNzIGEgZm9ybWFsIHBhcmFtZXRlclxudXNpbmcgdGhlIHN5bnRheCAiKmlkZW50aWZpZXIiIGlzIHByZXNlbnQ7IGluIHRoaXMgY2FzZSwgdGhhdCBmb3JtYWxcbnBhcmFtZXRlciByZWNlaXZlcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlIGV4Y2VzcyBwb3NpdGlvbmFsIGFyZ3VtZW50c1xuKG9yIGFuIGVtcHR5IHR1cGxlIGlmIHRoZXJlIHdlcmUgbm8gZXhjZXNzIHBvc2l0aW9uYWwgYXJndW1lbnRzKS5cblxuSWYgYW55IGtleXdvcmQgYXJndW1lbnQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIGZvcm1hbCBwYXJhbWV0ZXJcbm5hbWUsIGEgIlR5cGVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZCwgdW5sZXNzIGEgZm9ybWFsIHBhcmFtZXRlclxudXNpbmcgdGhlIHN5bnRheCAiKippZGVudGlmaWVyIiBpcyBwcmVzZW50OyBpbiB0aGlzIGNhc2UsIHRoYXQgZm9ybWFsXG5wYXJhbWV0ZXIgcmVjZWl2ZXMgYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIGV4Y2VzcyBrZXl3b3JkXG5hcmd1bWVudHMgKHVzaW5nIHRoZSBrZXl3b3JkcyBhcyBrZXlzIGFuZCB0aGUgYXJndW1lbnQgdmFsdWVzIGFzXG5jb3JyZXNwb25kaW5nIHZhbHVlcyksIG9yIGEgKG5ldykgZW1wdHkgZGljdGlvbmFyeSBpZiB0aGVyZSB3ZXJlIG5vXG5leGNlc3Mga2V5d29yZCBhcmd1bWVudHMuXG5cbklmIHRoZSBzeW50YXggIipleHByZXNzaW9uIiBhcHBlYXJzIGluIHRoZSBmdW5jdGlvbiBjYWxsLCAiZXhwcmVzc2lvbiJcbm11c3QgZXZhbHVhdGUgdG8gYW4gKml0ZXJhYmxlKi4gIEVsZW1lbnRzIGZyb20gdGhlc2UgaXRlcmFibGVzIGFyZVxudHJlYXRlZCBhcyBpZiB0aGV5IHdlcmUgYWRkaXRpb25hbCBwb3NpdGlvbmFsIGFyZ3VtZW50cy4gIEZvciB0aGUgY2FsbFxuImYoeDEsIHgyLCAqeSwgeDMsIHg0KSIsIGlmICp5KiBldmFsdWF0ZXMgdG8gYSBzZXF1ZW5jZSAqeTEqLCAuLi4sXG4qeU0qLCB0aGlzIGlzIGVxdWl2YWxlbnQgdG8gYSBjYWxsIHdpdGggTSs0IHBvc2l0aW9uYWwgYXJndW1lbnRzICp4MSosXG4qeDIqLCAqeTEqLCAuLi4sICp5TSosICp4MyosICp4NCouXG5cbkEgY29uc2VxdWVuY2Ugb2YgdGhpcyBpcyB0aGF0IGFsdGhvdWdoIHRoZSAiKmV4cHJlc3Npb24iIHN5bnRheCBtYXlcbmFwcGVhciAqYWZ0ZXIqIGV4cGxpY2l0IGtleXdvcmQgYXJndW1lbnRzLCBpdCBpcyBwcm9jZXNzZWQgKmJlZm9yZSpcbnRoZSBrZXl3b3JkIGFyZ3VtZW50cyAoYW5kIGFueSAiKipleHByZXNzaW9uIiBhcmd1bWVudHMgLS0gc2VlIGJlbG93KS5cblNvOlxuXG4gICA+Pj4gZGVmIGYoYSwgYik6XG4gICAuLi4gICAgIHByaW50KGEsIGIpXG4gICAuLi5cbiAgID4+PiBmKGI9MSwgKigyLCkpXG4gICAyIDFcbiAgID4+PiBmKGE9MSwgKigyLCkpXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluID9cbiAgIFR5cGVFcnJvcjogZigpIGdvdCBtdWx0aXBsZSB2YWx1ZXMgZm9yIGtleXdvcmQgYXJndW1lbnQgXCdhXCdcbiAgID4+PiBmKDEsICooMiwpKVxuICAgMSAyXG5cbkl0IGlzIHVudXN1YWwgZm9yIGJvdGgga2V5d29yZCBhcmd1bWVudHMgYW5kIHRoZSAiKmV4cHJlc3Npb24iIHN5bnRheFxudG8gYmUgdXNlZCBpbiB0aGUgc2FtZSBjYWxsLCBzbyBpbiBwcmFjdGljZSB0aGlzIGNvbmZ1c2lvbiBkb2VzIG5vdFxuYXJpc2UuXG5cbklmIHRoZSBzeW50YXggIioqZXhwcmVzc2lvbiIgYXBwZWFycyBpbiB0aGUgZnVuY3Rpb24gY2FsbCxcbiJleHByZXNzaW9uIiBtdXN0IGV2YWx1YXRlIHRvIGEgKm1hcHBpbmcqLCB0aGUgY29udGVudHMgb2Ygd2hpY2ggYXJlXG50cmVhdGVkIGFzIGFkZGl0aW9uYWwga2V5d29yZCBhcmd1bWVudHMuICBJZiBhIGtleXdvcmQgaXMgYWxyZWFkeVxucHJlc2VudCAoYXMgYW4gZXhwbGljaXQga2V5d29yZCBhcmd1bWVudCwgb3IgZnJvbSBhbm90aGVyIHVucGFja2luZyksXG5hICJUeXBlRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQuXG5cbkZvcm1hbCBwYXJhbWV0ZXJzIHVzaW5nIHRoZSBzeW50YXggIippZGVudGlmaWVyIiBvciAiKippZGVudGlmaWVyIlxuY2Fubm90IGJlIHVzZWQgYXMgcG9zaXRpb25hbCBhcmd1bWVudCBzbG90cyBvciBhcyBrZXl3b3JkIGFyZ3VtZW50XG5uYW1lcy5cblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuNTogRnVuY3Rpb24gY2FsbHMgYWNjZXB0IGFueSBudW1iZXIgb2YgIioiIGFuZFxuIioqIiB1bnBhY2tpbmdzLCBwb3NpdGlvbmFsIGFyZ3VtZW50cyBtYXkgZm9sbG93IGl0ZXJhYmxlIHVucGFja2luZ3NcbigiKiIpLCBhbmQga2V5d29yZCBhcmd1bWVudHMgbWF5IGZvbGxvdyBkaWN0aW9uYXJ5IHVucGFja2luZ3MgKCIqKiIpLlxuT3JpZ2luYWxseSBwcm9wb3NlZCBieSAqKlBFUCA0NDgqKi5cblxuQSBjYWxsIGFsd2F5cyByZXR1cm5zIHNvbWUgdmFsdWUsIHBvc3NpYmx5ICJOb25lIiwgdW5sZXNzIGl0IHJhaXNlcyBhblxuZXhjZXB0aW9uLiAgSG93IHRoaXMgdmFsdWUgaXMgY29tcHV0ZWQgZGVwZW5kcyBvbiB0aGUgdHlwZSBvZiB0aGVcbmNhbGxhYmxlIG9iamVjdC5cblxuSWYgaXQgaXMtLS1cblxuYSB1c2VyLWRlZmluZWQgZnVuY3Rpb246XG4gICBUaGUgY29kZSBibG9jayBmb3IgdGhlIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkLCBwYXNzaW5nIGl0IHRoZVxuICAgYXJndW1lbnQgbGlzdC4gIFRoZSBmaXJzdCB0aGluZyB0aGUgY29kZSBibG9jayB3aWxsIGRvIGlzIGJpbmQgdGhlXG4gICBmb3JtYWwgcGFyYW1ldGVycyB0byB0aGUgYXJndW1lbnRzOyB0aGlzIGlzIGRlc2NyaWJlZCBpbiBzZWN0aW9uXG4gICAqRnVuY3Rpb24gZGVmaW5pdGlvbnMqLiAgV2hlbiB0aGUgY29kZSBibG9jayBleGVjdXRlcyBhICJyZXR1cm4iXG4gICBzdGF0ZW1lbnQsIHRoaXMgc3BlY2lmaWVzIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGZ1bmN0aW9uIGNhbGwuXG5cbmEgYnVpbHQtaW4gZnVuY3Rpb24gb3IgbWV0aG9kOlxuICAgVGhlIHJlc3VsdCBpcyB1cCB0byB0aGUgaW50ZXJwcmV0ZXI7IHNlZSAqQnVpbHQtaW4gRnVuY3Rpb25zKiBmb3JcbiAgIHRoZSBkZXNjcmlwdGlvbnMgb2YgYnVpbHQtaW4gZnVuY3Rpb25zIGFuZCBtZXRob2RzLlxuXG5hIGNsYXNzIG9iamVjdDpcbiAgIEEgbmV3IGluc3RhbmNlIG9mIHRoYXQgY2xhc3MgaXMgcmV0dXJuZWQuXG5cbmEgY2xhc3MgaW5zdGFuY2UgbWV0aG9kOlxuICAgVGhlIGNvcnJlc3BvbmRpbmcgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIGlzIGNhbGxlZCwgd2l0aCBhbiBhcmd1bWVudFxuICAgbGlzdCB0aGF0IGlzIG9uZSBsb25nZXIgdGhhbiB0aGUgYXJndW1lbnQgbGlzdCBvZiB0aGUgY2FsbDogdGhlXG4gICBpbnN0YW5jZSBiZWNvbWVzIHRoZSBmaXJzdCBhcmd1bWVudC5cblxuYSBjbGFzcyBpbnN0YW5jZTpcbiAgIFRoZSBjbGFzcyBtdXN0IGRlZmluZSBhICJfX2NhbGxfXygpIiBtZXRob2Q7IHRoZSBlZmZlY3QgaXMgdGhlbiB0aGVcbiAgIHNhbWUgYXMgaWYgdGhhdCBtZXRob2Qgd2FzIGNhbGxlZC5cbicsCi0gJ2NsYXNzJzogdSdcbkNsYXNzIGRlZmluaXRpb25zXG4qKioqKioqKioqKioqKioqKlxuXG5BIGNsYXNzIGRlZmluaXRpb24gZGVmaW5lcyBhIGNsYXNzIG9iamVjdCAoc2VlIHNlY3Rpb24gKlRoZSBzdGFuZGFyZFxudHlwZSBoaWVyYXJjaHkqKTpcblxuICAgY2xhc3NkZWYgICAgOjo9IFtkZWNvcmF0b3JzXSAiY2xhc3MiIGNsYXNzbmFtZSBbaW5oZXJpdGFuY2VdICI6IiBzdWl0ZVxuICAgaW5oZXJpdGFuY2UgOjo9ICIoIiBbYXJndW1lbnRfbGlzdF0gIikiXG4gICBjbGFzc25hbWUgICA6Oj0gaWRlbnRpZmllclxuXG5BIGNsYXNzIGRlZmluaXRpb24gaXMgYW4gZXhlY3V0YWJsZSBzdGF0ZW1lbnQuICBUaGUgaW5oZXJpdGFuY2UgbGlzdFxudXN1YWxseSBnaXZlcyBhIGxpc3Qgb2YgYmFzZSBjbGFzc2VzIChzZWUgKkN1c3RvbWl6aW5nIGNsYXNzIGNyZWF0aW9uKlxuZm9yIG1vcmUgYWR2YW5jZWQgdXNlcyksIHNvIGVhY2ggaXRlbSBpbiB0aGUgbGlzdCBzaG91bGQgZXZhbHVhdGUgdG8gYVxuY2xhc3Mgb2JqZWN0IHdoaWNoIGFsbG93cyBzdWJjbGFzc2luZy4gIENsYXNzZXMgd2l0aG91dCBhbiBpbmhlcml0YW5jZVxubGlzdCBpbmhlcml0LCBieSBkZWZhdWx0LCBmcm9tIHRoZSBiYXNlIGNsYXNzICJvYmplY3QiOyBoZW5jZSxcblxuICAgY2xhc3MgRm9vOlxuICAgICAgIHBhc3NcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICBjbGFzcyBGb28ob2JqZWN0KTpcbiAgICAgICBwYXNzXG5cblRoZSBjbGFzc1wncyBzdWl0ZSBpcyB0aGVuIGV4ZWN1dGVkIGluIGEgbmV3IGV4ZWN1dGlvbiBmcmFtZSAoc2VlXG4qTmFtaW5nIGFuZCBiaW5kaW5nKiksIHVzaW5nIGEgbmV3bHkgY3JlYXRlZCBsb2NhbCBuYW1lc3BhY2UgYW5kIHRoZVxub3JpZ2luYWwgZ2xvYmFsIG5hbWVzcGFjZS4gKFVzdWFsbHksIHRoZSBzdWl0ZSBjb250YWlucyBtb3N0bHlcbmZ1bmN0aW9uIGRlZmluaXRpb25zLikgIFdoZW4gdGhlIGNsYXNzXCdzIHN1aXRlIGZpbmlzaGVzIGV4ZWN1dGlvbiwgaXRzXG5leGVjdXRpb24gZnJhbWUgaXMgZGlzY2FyZGVkIGJ1dCBpdHMgbG9jYWwgbmFtZXNwYWNlIGlzIHNhdmVkLiBbNF0gQVxuY2xhc3Mgb2JqZWN0IGlzIHRoZW4gY3JlYXRlZCB1c2luZyB0aGUgaW5oZXJpdGFuY2UgbGlzdCBmb3IgdGhlIGJhc2VcbmNsYXNzZXMgYW5kIHRoZSBzYXZlZCBsb2NhbCBuYW1lc3BhY2UgZm9yIHRoZSBhdHRyaWJ1dGUgZGljdGlvbmFyeS5cblRoZSBjbGFzcyBuYW1lIGlzIGJvdW5kIHRvIHRoaXMgY2xhc3Mgb2JqZWN0IGluIHRoZSBvcmlnaW5hbCBsb2NhbFxubmFtZXNwYWNlLlxuXG5DbGFzcyBjcmVhdGlvbiBjYW4gYmUgY3VzdG9taXplZCBoZWF2aWx5IHVzaW5nICptZXRhY2xhc3NlcyouXG5cbkNsYXNzZXMgY2FuIGFsc28gYmUgZGVjb3JhdGVkOiBqdXN0IGxpa2Ugd2hlbiBkZWNvcmF0aW5nIGZ1bmN0aW9ucyxcblxuICAgQGYxKGFyZylcbiAgIEBmMlxuICAgY2xhc3MgRm9vOiBwYXNzXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgY2xhc3MgRm9vOiBwYXNzXG4gICBGb28gPSBmMShhcmcpKGYyKEZvbykpXG5cblRoZSBldmFsdWF0aW9uIHJ1bGVzIGZvciB0aGUgZGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSB0aGUgc2FtZSBhcyBmb3JcbmZ1bmN0aW9uIGRlY29yYXRvcnMuICBUaGUgcmVzdWx0IG11c3QgYmUgYSBjbGFzcyBvYmplY3QsIHdoaWNoIGlzIHRoZW5cbmJvdW5kIHRvIHRoZSBjbGFzcyBuYW1lLlxuXG4qKlByb2dyYW1tZXJcJ3Mgbm90ZToqKiBWYXJpYWJsZXMgZGVmaW5lZCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBhcmVcbmNsYXNzIGF0dHJpYnV0ZXM7IHRoZXkgYXJlIHNoYXJlZCBieSBpbnN0YW5jZXMuICBJbnN0YW5jZSBhdHRyaWJ1dGVzXG5jYW4gYmUgc2V0IGluIGEgbWV0aG9kIHdpdGggInNlbGYubmFtZSA9IHZhbHVlIi4gIEJvdGggY2xhc3MgYW5kXG5pbnN0YW5jZSBhdHRyaWJ1dGVzIGFyZSBhY2Nlc3NpYmxlIHRocm91Z2ggdGhlIG5vdGF0aW9uICIic2VsZi5uYW1lIiIsXG5hbmQgYW4gaW5zdGFuY2UgYXR0cmlidXRlIGhpZGVzIGEgY2xhc3MgYXR0cmlidXRlIHdpdGggdGhlIHNhbWUgbmFtZVxud2hlbiBhY2Nlc3NlZCBpbiB0aGlzIHdheS4gIENsYXNzIGF0dHJpYnV0ZXMgY2FuIGJlIHVzZWQgYXMgZGVmYXVsdHNcbmZvciBpbnN0YW5jZSBhdHRyaWJ1dGVzLCBidXQgdXNpbmcgbXV0YWJsZSB2YWx1ZXMgdGhlcmUgY2FuIGxlYWQgdG9cbnVuZXhwZWN0ZWQgcmVzdWx0cy4gICpEZXNjcmlwdG9ycyogY2FuIGJlIHVzZWQgdG8gY3JlYXRlIGluc3RhbmNlXG52YXJpYWJsZXMgd2l0aCBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb24gZGV0YWlscy5cblxuU2VlIGFsc286ICoqUEVQIDMxMTUqKiAtIE1ldGFjbGFzc2VzIGluIFB5dGhvbiAzICoqUEVQIDMxMjkqKiAtXG4gIENsYXNzIERlY29yYXRvcnNcbicsCi0gJ2NvbXBhcmlzb25zJzogdSdcbkNvbXBhcmlzb25zXG4qKioqKioqKioqKlxuXG5Vbmxpa2UgQywgYWxsIGNvbXBhcmlzb24gb3BlcmF0aW9ucyBpbiBQeXRob24gaGF2ZSB0aGUgc2FtZSBwcmlvcml0eSxcbndoaWNoIGlzIGxvd2VyIHRoYW4gdGhhdCBvZiBhbnkgYXJpdGhtZXRpYywgc2hpZnRpbmcgb3IgYml0d2lzZVxub3BlcmF0aW9uLiAgQWxzbyB1bmxpa2UgQywgZXhwcmVzc2lvbnMgbGlrZSAiYSA8IGIgPCBjIiBoYXZlIHRoZVxuaW50ZXJwcmV0YXRpb24gdGhhdCBpcyBjb252ZW50aW9uYWwgaW4gbWF0aGVtYXRpY3M6XG5cbiAgIGNvbXBhcmlzb24gICAgOjo9IG9yX2V4cHIgKCBjb21wX29wZXJhdG9yIG9yX2V4cHIgKSpcbiAgIGNvbXBfb3BlcmF0b3IgOjo9ICI8IiB8ICI+IiB8ICI9PSIgfCAiPj0iIHwgIjw9IiB8ICIhPSJcbiAgICAgICAgICAgICAgICAgICAgIHwgImlzIiBbIm5vdCJdIHwgWyJub3QiXSAiaW4iXG5cbkNvbXBhcmlzb25zIHlpZWxkIGJvb2xlYW4gdmFsdWVzOiAiVHJ1ZSIgb3IgIkZhbHNlIi5cblxuQ29tcGFyaXNvbnMgY2FuIGJlIGNoYWluZWQgYXJiaXRyYXJpbHksIGUuZy4sICJ4IDwgeSA8PSB6IiBpc1xuZXF1aXZhbGVudCB0byAieCA8IHkgYW5kIHkgPD0geiIsIGV4Y2VwdCB0aGF0ICJ5IiBpcyBldmFsdWF0ZWQgb25seVxub25jZSAoYnV0IGluIGJvdGggY2FzZXMgInoiIGlzIG5vdCBldmFsdWF0ZWQgYXQgYWxsIHdoZW4gInggPCB5IiBpc1xuZm91bmQgdG8gYmUgZmFsc2UpLlxuXG5Gb3JtYWxseSwgaWYgKmEqLCAqYiosICpjKiwgLi4uLCAqeSosICp6KiBhcmUgZXhwcmVzc2lvbnMgYW5kICpvcDEqLFxuKm9wMiosIC4uLiwgKm9wTiogYXJlIGNvbXBhcmlzb24gb3BlcmF0b3JzLCB0aGVuICJhIG9wMSBiIG9wMiBjIC4uLiB5XG5vcE4geiIgaXMgZXF1aXZhbGVudCB0byAiYSBvcDEgYiBhbmQgYiBvcDIgYyBhbmQgLi4uIHkgb3BOIHoiLCBleGNlcHRcbnRoYXQgZWFjaCBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCBhdCBtb3N0IG9uY2UuXG5cbk5vdGUgdGhhdCAiYSBvcDEgYiBvcDIgYyIgZG9lc25cJ3QgaW1wbHkgYW55IGtpbmQgb2YgY29tcGFyaXNvbiBiZXR3ZWVuXG4qYSogYW5kICpjKiwgc28gdGhhdCwgZS5nLiwgInggPCB5ID4geiIgaXMgcGVyZmVjdGx5IGxlZ2FsICh0aG91Z2hcbnBlcmhhcHMgbm90IHByZXR0eSkuXG5cblxuVmFsdWUgY29tcGFyaXNvbnNcbj09PT09PT09PT09PT09PT09XG5cblRoZSBvcGVyYXRvcnMgIjwiLCAiPiIsICI9PSIsICI+PSIsICI8PSIsIGFuZCAiIT0iIGNvbXBhcmUgdGhlIHZhbHVlc1xub2YgdHdvIG9iamVjdHMuICBUaGUgb2JqZWN0cyBkbyBub3QgbmVlZCB0byBoYXZlIHRoZSBzYW1lIHR5cGUuXG5cbkNoYXB0ZXIgKk9iamVjdHMsIHZhbHVlcyBhbmQgdHlwZXMqIHN0YXRlcyB0aGF0IG9iamVjdHMgaGF2ZSBhIHZhbHVlXG4oaW4gYWRkaXRpb24gdG8gdHlwZSBhbmQgaWRlbnRpdHkpLiAgVGhlIHZhbHVlIG9mIGFuIG9iamVjdCBpcyBhXG5yYXRoZXIgYWJzdHJhY3Qgbm90aW9uIGluIFB5dGhvbjogRm9yIGV4YW1wbGUsIHRoZXJlIGlzIG5vIGNhbm9uaWNhbFxuYWNjZXNzIG1ldGhvZCBmb3IgYW4gb2JqZWN0XCdzIHZhbHVlLiAgQWxzbywgdGhlcmUgaXMgbm8gcmVxdWlyZW1lbnRcbnRoYXQgdGhlIHZhbHVlIG9mIGFuIG9iamVjdCBzaG91bGQgYmUgY29uc3RydWN0ZWQgaW4gYSBwYXJ0aWN1bGFyIHdheSxcbmUuZy4gY29tcHJpc2VkIG9mIGFsbCBpdHMgZGF0YSBhdHRyaWJ1dGVzLiBDb21wYXJpc29uIG9wZXJhdG9yc1xuaW1wbGVtZW50IGEgcGFydGljdWxhciBub3Rpb24gb2Ygd2hhdCB0aGUgdmFsdWUgb2YgYW4gb2JqZWN0IGlzLiAgT25lXG5jYW4gdGhpbmsgb2YgdGhlbSBhcyBkZWZpbmluZyB0aGUgdmFsdWUgb2YgYW4gb2JqZWN0IGluZGlyZWN0bHksIGJ5XG5tZWFucyBvZiB0aGVpciBjb21wYXJpc29uIGltcGxlbWVudGF0aW9uLlxuXG5CZWNhdXNlIGFsbCB0eXBlcyBhcmUgKGRpcmVjdCBvciBpbmRpcmVjdCkgc3VidHlwZXMgb2YgIm9iamVjdCIsIHRoZXlcbmluaGVyaXQgdGhlIGRlZmF1bHQgY29tcGFyaXNvbiBiZWhhdmlvciBmcm9tICJvYmplY3QiLiAgVHlwZXMgY2FuXG5jdXN0b21pemUgdGhlaXIgY29tcGFyaXNvbiBiZWhhdmlvciBieSBpbXBsZW1lbnRpbmcgKnJpY2ggY29tcGFyaXNvblxubWV0aG9kcyogbGlrZSAiX19sdF9fKCkiLCBkZXNjcmliZWQgaW4gKkJhc2ljIGN1c3RvbWl6YXRpb24qLlxuXG5UaGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbiAoIj09IiBhbmQgIiE9IikgaXMgYmFzZWRcbm9uIHRoZSBpZGVudGl0eSBvZiB0aGUgb2JqZWN0cy4gIEhlbmNlLCBlcXVhbGl0eSBjb21wYXJpc29uIG9mXG5pbnN0YW5jZXMgd2l0aCB0aGUgc2FtZSBpZGVudGl0eSByZXN1bHRzIGluIGVxdWFsaXR5LCBhbmQgZXF1YWxpdHlcbmNvbXBhcmlzb24gb2YgaW5zdGFuY2VzIHdpdGggZGlmZmVyZW50IGlkZW50aXRpZXMgcmVzdWx0cyBpblxuaW5lcXVhbGl0eS4gIEEgbW90aXZhdGlvbiBmb3IgdGhpcyBkZWZhdWx0IGJlaGF2aW9yIGlzIHRoZSBkZXNpcmUgdGhhdFxuYWxsIG9iamVjdHMgc2hvdWxkIGJlIHJlZmxleGl2ZSAoaS5lLiAieCBpcyB5IiBpbXBsaWVzICJ4ID09IHkiKS5cblxuQSBkZWZhdWx0IG9yZGVyIGNvbXBhcmlzb24gKCI8IiwgIj4iLCAiPD0iLCBhbmQgIj49IikgaXMgbm90IHByb3ZpZGVkO1xuYW4gYXR0ZW1wdCByYWlzZXMgIlR5cGVFcnJvciIuICBBIG1vdGl2YXRpb24gZm9yIHRoaXMgZGVmYXVsdCBiZWhhdmlvclxuaXMgdGhlIGxhY2sgb2YgYSBzaW1pbGFyIGludmFyaWFudCBhcyBmb3IgZXF1YWxpdHkuXG5cblRoZSBiZWhhdmlvciBvZiB0aGUgZGVmYXVsdCBlcXVhbGl0eSBjb21wYXJpc29uLCB0aGF0IGluc3RhbmNlcyB3aXRoXG5kaWZmZXJlbnQgaWRlbnRpdGllcyBhcmUgYWx3YXlzIHVuZXF1YWwsIG1heSBiZSBpbiBjb250cmFzdCB0byB3aGF0XG50eXBlcyB3aWxsIG5lZWQgdGhhdCBoYXZlIGEgc2Vuc2libGUgZGVmaW5pdGlvbiBvZiBvYmplY3QgdmFsdWUgYW5kXG52YWx1ZS1iYXNlZCBlcXVhbGl0eS4gIFN1Y2ggdHlwZXMgd2lsbCBuZWVkIHRvIGN1c3RvbWl6ZSB0aGVpclxuY29tcGFyaXNvbiBiZWhhdmlvciwgYW5kIGluIGZhY3QsIGEgbnVtYmVyIG9mIGJ1aWx0LWluIHR5cGVzIGhhdmUgZG9uZVxudGhhdC5cblxuVGhlIGZvbGxvd2luZyBsaXN0IGRlc2NyaWJlcyB0aGUgY29tcGFyaXNvbiBiZWhhdmlvciBvZiB0aGUgbW9zdFxuaW1wb3J0YW50IGJ1aWx0LWluIHR5cGVzLlxuXG4qIE51bWJlcnMgb2YgYnVpbHQtaW4gbnVtZXJpYyB0eXBlcyAoKk51bWVyaWMgVHlwZXMgLS0tIGludCwgZmxvYXQsXG4gIGNvbXBsZXgqKSBhbmQgb2YgdGhlIHN0YW5kYXJkIGxpYnJhcnkgdHlwZXMgImZyYWN0aW9ucy5GcmFjdGlvbiIgYW5kXG4gICJkZWNpbWFsLkRlY2ltYWwiIGNhbiBiZSBjb21wYXJlZCB3aXRoaW4gYW5kIGFjcm9zcyB0aGVpciB0eXBlcyxcbiAgd2l0aCB0aGUgcmVzdHJpY3Rpb24gdGhhdCBjb21wbGV4IG51bWJlcnMgZG8gbm90IHN1cHBvcnQgb3JkZXJcbiAgY29tcGFyaXNvbi4gIFdpdGhpbiB0aGUgbGltaXRzIG9mIHRoZSB0eXBlcyBpbnZvbHZlZCwgdGhleSBjb21wYXJlXG4gIG1hdGhlbWF0aWNhbGx5IChhbGdvcml0aG1pY2FsbHkpIGNvcnJlY3Qgd2l0aG91dCBsb3NzIG9mIHByZWNpc2lvbi5cblxuICBUaGUgbm90LWEtbnVtYmVyIHZhbHVlcyAiZmxvYXQoXCdOYU5cJykiIGFuZCAiRGVjaW1hbChcJ05hTlwnKSIgYXJlXG4gIHNwZWNpYWwuICBUaGV5IGFyZSBpZGVudGljYWwgdG8gdGhlbXNlbHZlcyAoInggaXMgeCIgaXMgdHJ1ZSkgYnV0XG4gIGFyZSBub3QgZXF1YWwgdG8gdGhlbXNlbHZlcyAoInggPT0geCIgaXMgZmFsc2UpLiAgQWRkaXRpb25hbGx5LFxuICBjb21wYXJpbmcgYW55IG51bWJlciB0byBhIG5vdC1hLW51bWJlciB2YWx1ZSB3aWxsIHJldHVybiAiRmFsc2UiLlxuICBGb3IgZXhhbXBsZSwgYm90aCAiMyA8IGZsb2F0KFwnTmFOXCcpIiBhbmQgImZsb2F0KFwnTmFOXCcpIDwgMyIgd2lsbFxuICByZXR1cm4gIkZhbHNlIi5cblxuKiBCaW5hcnkgc2VxdWVuY2VzIChpbnN0YW5jZXMgb2YgImJ5dGVzIiBvciAiYnl0ZWFycmF5IikgY2FuIGJlXG4gIGNvbXBhcmVkIHdpdGhpbiBhbmQgYWNyb3NzIHRoZWlyIHR5cGVzLiAgVGhleSBjb21wYXJlXG4gIGxleGljb2dyYXBoaWNhbGx5IHVzaW5nIHRoZSBudW1lcmljIHZhbHVlcyBvZiB0aGVpciBlbGVtZW50cy5cblxuKiBTdHJpbmdzIChpbnN0YW5jZXMgb2YgInN0ciIpIGNvbXBhcmUgbGV4aWNvZ3JhcGhpY2FsbHkgdXNpbmcgdGhlXG4gIG51bWVyaWNhbCBVbmljb2RlIGNvZGUgcG9pbnRzICh0aGUgcmVzdWx0IG9mIHRoZSBidWlsdC1pbiBmdW5jdGlvblxuICAib3JkKCkiKSBvZiB0aGVpciBjaGFyYWN0ZXJzLiBbM11cblxuICBTdHJpbmdzIGFuZCBiaW5hcnkgc2VxdWVuY2VzIGNhbm5vdCBiZSBkaXJlY3RseSBjb21wYXJlZC5cblxuKiBTZXF1ZW5jZXMgKGluc3RhbmNlcyBvZiAidHVwbGUiLCAibGlzdCIsIG9yICJyYW5nZSIpIGNhbiBiZVxuICBjb21wYXJlZCBvbmx5IHdpdGhpbiBlYWNoIG9mIHRoZWlyIHR5cGVzLCB3aXRoIHRoZSByZXN0cmljdGlvbiB0aGF0XG4gIHJhbmdlcyBkbyBub3Qgc3VwcG9ydCBvcmRlciBjb21wYXJpc29uLiAgRXF1YWxpdHkgY29tcGFyaXNvbiBhY3Jvc3NcbiAgdGhlc2UgdHlwZXMgcmVzdWx0cyBpbiB1bmVxdWFsaXR5LCBhbmQgb3JkZXJpbmcgY29tcGFyaXNvbiBhY3Jvc3NcbiAgdGhlc2UgdHlwZXMgcmFpc2VzICJUeXBlRXJyb3IiLlxuXG4gIFNlcXVlbmNlcyBjb21wYXJlIGxleGljb2dyYXBoaWNhbGx5IHVzaW5nIGNvbXBhcmlzb24gb2ZcbiAgY29ycmVzcG9uZGluZyBlbGVtZW50cywgd2hlcmVieSByZWZsZXhpdml0eSBvZiB0aGUgZWxlbWVudHMgaXNcbiAgZW5mb3JjZWQuXG5cbiAgSW4gZW5mb3JjaW5nIHJlZmxleGl2aXR5IG9mIGVsZW1lbnRzLCB0aGUgY29tcGFyaXNvbiBvZiBjb2xsZWN0aW9uc1xuICBhc3N1bWVzIHRoYXQgZm9yIGEgY29sbGVjdGlvbiBlbGVtZW50ICJ4IiwgInggPT0geCIgaXMgYWx3YXlzIHRydWUuXG4gIEJhc2VkIG9uIHRoYXQgYXNzdW1wdGlvbiwgZWxlbWVudCBpZGVudGl0eSBpcyBjb21wYXJlZCBmaXJzdCwgYW5kXG4gIGVsZW1lbnQgY29tcGFyaXNvbiBpcyBwZXJmb3JtZWQgb25seSBmb3IgZGlzdGluY3QgZWxlbWVudHMuICBUaGlzXG4gIGFwcHJvYWNoIHlpZWxkcyB0aGUgc2FtZSByZXN1bHQgYXMgYSBzdHJpY3QgZWxlbWVudCBjb21wYXJpc29uXG4gIHdvdWxkLCBpZiB0aGUgY29tcGFyZWQgZWxlbWVudHMgYXJlIHJlZmxleGl2ZS4gIEZvciBub24tcmVmbGV4aXZlXG4gIGVsZW1lbnRzLCB0aGUgcmVzdWx0IGlzIGRpZmZlcmVudCB0aGFuIGZvciBzdHJpY3QgZWxlbWVudFxuICBjb21wYXJpc29uLCBhbmQgbWF5IGJlIHN1cnByaXNpbmc6ICBUaGUgbm9uLXJlZmxleGl2ZSBub3QtYS1udW1iZXJcbiAgdmFsdWVzIGZvciBleGFtcGxlIHJlc3VsdCBpbiB0aGUgZm9sbG93aW5nIGNvbXBhcmlzb24gYmVoYXZpb3Igd2hlblxuICB1c2VkIGluIGEgbGlzdDpcblxuICAgICA+Pj4gbmFuID0gZmxvYXQoXCdOYU5cJylcbiAgICAgPj4+IG5hbiBpcyBuYW5cbiAgICAgVHJ1ZVxuICAgICA+Pj4gbmFuID09IG5hblxuICAgICBGYWxzZSAgICAgICAgICAgICAgICAgPC0tIHRoZSBkZWZpbmVkIG5vbi1yZWZsZXhpdmUgYmVoYXZpb3Igb2YgTmFOXG4gICAgID4+PiBbbmFuXSA9PSBbbmFuXVxuICAgICBUcnVlICAgICAgICAgICAgICAgICAgPC0tIGxpc3QgZW5mb3JjZXMgcmVmbGV4aXZpdHkgYW5kIHRlc3RzIGlkZW50aXR5IGZpcnN0XG5cbiAgTGV4aWNvZ3JhcGhpY2FsIGNvbXBhcmlzb24gYmV0d2VlbiBidWlsdC1pbiBjb2xsZWN0aW9ucyB3b3JrcyBhc1xuICBmb2xsb3dzOlxuXG4gICogRm9yIHR3byBjb2xsZWN0aW9ucyB0byBjb21wYXJlIGVxdWFsLCB0aGV5IG11c3QgYmUgb2YgdGhlIHNhbWVcbiAgICB0eXBlLCBoYXZlIHRoZSBzYW1lIGxlbmd0aCwgYW5kIGVhY2ggcGFpciBvZiBjb3JyZXNwb25kaW5nXG4gICAgZWxlbWVudHMgbXVzdCBjb21wYXJlIGVxdWFsIChmb3IgZXhhbXBsZSwgIlsxLDJdID09ICgxLDIpIiBpc1xuICAgIGZhbHNlIGJlY2F1c2UgdGhlIHR5cGUgaXMgbm90IHRoZSBzYW1lKS5cblxuICAqIENvbGxlY3Rpb25zIHRoYXQgc3VwcG9ydCBvcmRlciBjb21wYXJpc29uIGFyZSBvcmRlcmVkIHRoZSBzYW1lXG4gICAgYXMgdGhlaXIgZmlyc3QgdW5lcXVhbCBlbGVtZW50cyAoZm9yIGV4YW1wbGUsICJbMSwyLHhdIDw9IFsxLDIseV0iXG4gICAgaGFzIHRoZSBzYW1lIHZhbHVlIGFzICJ4IDw9IHkiKS4gIElmIGEgY29ycmVzcG9uZGluZyBlbGVtZW50IGRvZXNcbiAgICBub3QgZXhpc3QsIHRoZSBzaG9ydGVyIGNvbGxlY3Rpb24gaXMgb3JkZXJlZCBmaXJzdCAoZm9yIGV4YW1wbGUsXG4gICAgIlsxLDJdIDwgWzEsMiwzXSIgaXMgdHJ1ZSkuXG5cbiogTWFwcGluZ3MgKGluc3RhbmNlcyBvZiAiZGljdCIpIGNvbXBhcmUgZXF1YWwgaWYgYW5kIG9ubHkgaWYgdGhleVxuICBoYXZlIGVxdWFsICooa2V5LCB2YWx1ZSkqIHBhaXJzLiBFcXVhbGl0eSBjb21wYXJpc29uIG9mIHRoZSBrZXlzIGFuZFxuICBlbGVtZW50cyBlbmZvcmNlcyByZWZsZXhpdml0eS5cblxuICBPcmRlciBjb21wYXJpc29ucyAoIjwiLCAiPiIsICI8PSIsIGFuZCAiPj0iKSByYWlzZSAiVHlwZUVycm9yIi5cblxuKiBTZXRzIChpbnN0YW5jZXMgb2YgInNldCIgb3IgImZyb3plbnNldCIpIGNhbiBiZSBjb21wYXJlZCB3aXRoaW5cbiAgYW5kIGFjcm9zcyB0aGVpciB0eXBlcy5cblxuICBUaGV5IGRlZmluZSBvcmRlciBjb21wYXJpc29uIG9wZXJhdG9ycyB0byBtZWFuIHN1YnNldCBhbmQgc3VwZXJzZXRcbiAgdGVzdHMuICBUaG9zZSByZWxhdGlvbnMgZG8gbm90IGRlZmluZSB0b3RhbCBvcmRlcmluZ3MgKGZvciBleGFtcGxlLFxuICB0aGUgdHdvIHNldHMgInsxLDJ9IiBhbmQgInsyLDN9IiBhcmUgbm90IGVxdWFsLCBub3Igc3Vic2V0cyBvZiBvbmVcbiAgYW5vdGhlciwgbm9yIHN1cGVyc2V0cyBvZiBvbmUgYW5vdGhlcikuICBBY2NvcmRpbmdseSwgc2V0cyBhcmUgbm90XG4gIGFwcHJvcHJpYXRlIGFyZ3VtZW50cyBmb3IgZnVuY3Rpb25zIHdoaWNoIGRlcGVuZCBvbiB0b3RhbCBvcmRlcmluZ1xuICAoZm9yIGV4YW1wbGUsICJtaW4oKSIsICJtYXgoKSIsIGFuZCAic29ydGVkKCkiIHByb2R1Y2UgdW5kZWZpbmVkXG4gIHJlc3VsdHMgZ2l2ZW4gYSBsaXN0IG9mIHNldHMgYXMgaW5wdXRzKS5cblxuICBDb21wYXJpc29uIG9mIHNldHMgZW5mb3JjZXMgcmVmbGV4aXZpdHkgb2YgaXRzIGVsZW1lbnRzLlxuXG4qIE1vc3Qgb3RoZXIgYnVpbHQtaW4gdHlwZXMgaGF2ZSBubyBjb21wYXJpc29uIG1ldGhvZHMgaW1wbGVtZW50ZWQsXG4gIHNvIHRoZXkgaW5oZXJpdCB0aGUgZGVmYXVsdCBjb21wYXJpc29uIGJlaGF2aW9yLlxuXG5Vc2VyLWRlZmluZWQgY2xhc3NlcyB0aGF0IGN1c3RvbWl6ZSB0aGVpciBjb21wYXJpc29uIGJlaGF2aW9yIHNob3VsZFxuZm9sbG93IHNvbWUgY29uc2lzdGVuY3kgcnVsZXMsIGlmIHBvc3NpYmxlOlxuXG4qIEVxdWFsaXR5IGNvbXBhcmlzb24gc2hvdWxkIGJlIHJlZmxleGl2ZS4gSW4gb3RoZXIgd29yZHMsIGlkZW50aWNhbFxuICBvYmplY3RzIHNob3VsZCBjb21wYXJlIGVxdWFsOlxuXG4gICAgICJ4IGlzIHkiIGltcGxpZXMgInggPT0geSJcblxuKiBDb21wYXJpc29uIHNob3VsZCBiZSBzeW1tZXRyaWMuIEluIG90aGVyIHdvcmRzLCB0aGUgZm9sbG93aW5nXG4gIGV4cHJlc3Npb25zIHNob3VsZCBoYXZlIHRoZSBzYW1lIHJlc3VsdDpcblxuICAgICAieCA9PSB5IiBhbmQgInkgPT0geCJcblxuICAgICAieCAhPSB5IiBhbmQgInkgIT0geCJcblxuICAgICAieCA8IHkiIGFuZCAieSA+IHgiXG5cbiAgICAgInggPD0geSIgYW5kICJ5ID49IHgiXG5cbiogQ29tcGFyaXNvbiBzaG91bGQgYmUgdHJhbnNpdGl2ZS4gVGhlIGZvbGxvd2luZyAobm9uLWV4aGF1c3RpdmUpXG4gIGV4YW1wbGVzIGlsbHVzdHJhdGUgdGhhdDpcblxuICAgICAieCA+IHkgYW5kIHkgPiB6IiBpbXBsaWVzICJ4ID4geiJcblxuICAgICAieCA8IHkgYW5kIHkgPD0geiIgaW1wbGllcyAieCA8IHoiXG5cbiogSW52ZXJzZSBjb21wYXJpc29uIHNob3VsZCByZXN1bHQgaW4gdGhlIGJvb2xlYW4gbmVnYXRpb24uIEluIG90aGVyXG4gIHdvcmRzLCB0aGUgZm9sbG93aW5nIGV4cHJlc3Npb25zIHNob3VsZCBoYXZlIHRoZSBzYW1lIHJlc3VsdDpcblxuICAgICAieCA9PSB5IiBhbmQgIm5vdCB4ICE9IHkiXG5cbiAgICAgInggPCB5IiBhbmQgIm5vdCB4ID49IHkiIChmb3IgdG90YWwgb3JkZXJpbmcpXG5cbiAgICAgInggPiB5IiBhbmQgIm5vdCB4IDw9IHkiIChmb3IgdG90YWwgb3JkZXJpbmcpXG5cbiAgVGhlIGxhc3QgdHdvIGV4cHJlc3Npb25zIGFwcGx5IHRvIHRvdGFsbHkgb3JkZXJlZCBjb2xsZWN0aW9ucyAoZS5nLlxuICB0byBzZXF1ZW5jZXMsIGJ1dCBub3QgdG8gc2V0cyBvciBtYXBwaW5ncykuIFNlZSBhbHNvIHRoZVxuICAidG90YWxfb3JkZXJpbmcoKSIgZGVjb3JhdG9yLlxuXG5QeXRob24gZG9lcyBub3QgZW5mb3JjZSB0aGVzZSBjb25zaXN0ZW5jeSBydWxlcy4gSW4gZmFjdCwgdGhlXG5ub3QtYS1udW1iZXIgdmFsdWVzIGFyZSBhbiBleGFtcGxlIGZvciBub3QgZm9sbG93aW5nIHRoZXNlIHJ1bGVzLlxuXG5cbk1lbWJlcnNoaXAgdGVzdCBvcGVyYXRpb25zXG49PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgb3BlcmF0b3JzICJpbiIgYW5kICJub3QgaW4iIHRlc3QgZm9yIG1lbWJlcnNoaXAuICAieCBpbiBzIlxuZXZhbHVhdGVzIHRvIHRydWUgaWYgKngqIGlzIGEgbWVtYmVyIG9mICpzKiwgYW5kIGZhbHNlIG90aGVyd2lzZS4gICJ4XG5ub3QgaW4gcyIgcmV0dXJucyB0aGUgbmVnYXRpb24gb2YgInggaW4gcyIuICBBbGwgYnVpbHQtaW4gc2VxdWVuY2VzXG5hbmQgc2V0IHR5cGVzIHN1cHBvcnQgdGhpcyBhcyB3ZWxsIGFzIGRpY3Rpb25hcnksIGZvciB3aGljaCAiaW4iIHRlc3RzXG53aGV0aGVyIHRoZSBkaWN0aW9uYXJ5IGhhcyBhIGdpdmVuIGtleS4gRm9yIGNvbnRhaW5lciB0eXBlcyBzdWNoIGFzXG5saXN0LCB0dXBsZSwgc2V0LCBmcm96ZW5zZXQsIGRpY3QsIG9yIGNvbGxlY3Rpb25zLmRlcXVlLCB0aGVcbmV4cHJlc3Npb24gInggaW4geSIgaXMgZXF1aXZhbGVudCB0byAiYW55KHggaXMgZSBvciB4ID09IGUgZm9yIGUgaW5cbnkpIi5cblxuRm9yIHRoZSBzdHJpbmcgYW5kIGJ5dGVzIHR5cGVzLCAieCBpbiB5IiBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmICp4KiBpc1xuYSBzdWJzdHJpbmcgb2YgKnkqLiAgQW4gZXF1aXZhbGVudCB0ZXN0IGlzICJ5LmZpbmQoeCkgIT0gLTEiLiAgRW1wdHlcbnN0cmluZ3MgYXJlIGFsd2F5cyBjb25zaWRlcmVkIHRvIGJlIGEgc3Vic3RyaW5nIG9mIGFueSBvdGhlciBzdHJpbmcsXG5zbyAiIiIgaW4gImFiYyIiIHdpbGwgcmV0dXJuICJUcnVlIi5cblxuRm9yIHVzZXItZGVmaW5lZCBjbGFzc2VzIHdoaWNoIGRlZmluZSB0aGUgIl9fY29udGFpbnNfXygpIiBtZXRob2QsICJ4XG5pbiB5IiBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmICJ5Ll9fY29udGFpbnNfXyh4KSIgaXMgdHJ1ZS5cblxuRm9yIHVzZXItZGVmaW5lZCBjbGFzc2VzIHdoaWNoIGRvIG5vdCBkZWZpbmUgIl9fY29udGFpbnNfXygpIiBidXQgZG9cbmRlZmluZSAiX19pdGVyX18oKSIsICJ4IGluIHkiIGlzIHRydWUgaWYgc29tZSB2YWx1ZSAieiIgd2l0aCAieCA9PSB6IlxuaXMgcHJvZHVjZWQgd2hpbGUgaXRlcmF0aW5nIG92ZXIgInkiLiAgSWYgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZFxuZHVyaW5nIHRoZSBpdGVyYXRpb24sIGl0IGlzIGFzIGlmICJpbiIgcmFpc2VkIHRoYXQgZXhjZXB0aW9uLlxuXG5MYXN0bHksIHRoZSBvbGQtc3R5bGUgaXRlcmF0aW9uIHByb3RvY29sIGlzIHRyaWVkOiBpZiBhIGNsYXNzIGRlZmluZXNcbiJfX2dldGl0ZW1fXygpIiwgInggaW4geSIgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiB0aGVyZSBpcyBhIG5vbi1cbm5lZ2F0aXZlIGludGVnZXIgaW5kZXggKmkqIHN1Y2ggdGhhdCAieCA9PSB5W2ldIiwgYW5kIGFsbCBsb3dlclxuaW50ZWdlciBpbmRpY2VzIGRvIG5vdCByYWlzZSAiSW5kZXhFcnJvciIgZXhjZXB0aW9uLiAgKElmIGFueSBvdGhlclxuZXhjZXB0aW9uIGlzIHJhaXNlZCwgaXQgaXMgYXMgaWYgImluIiByYWlzZWQgdGhhdCBleGNlcHRpb24pLlxuXG5UaGUgb3BlcmF0b3IgIm5vdCBpbiIgaXMgZGVmaW5lZCB0byBoYXZlIHRoZSBpbnZlcnNlIHRydWUgdmFsdWUgb2ZcbiJpbiIuXG5cblxuSWRlbnRpdHkgY29tcGFyaXNvbnNcbj09PT09PT09PT09PT09PT09PT09XG5cblRoZSBvcGVyYXRvcnMgImlzIiBhbmQgImlzIG5vdCIgdGVzdCBmb3Igb2JqZWN0IGlkZW50aXR5OiAieCBpcyB5IiBpc1xudHJ1ZSBpZiBhbmQgb25seSBpZiAqeCogYW5kICp5KiBhcmUgdGhlIHNhbWUgb2JqZWN0LiAgInggaXMgbm90IHkiXG55aWVsZHMgdGhlIGludmVyc2UgdHJ1dGggdmFsdWUuIFs0XVxuJywKLSAnY29tcG91bmQnOiB1J1xuQ29tcG91bmQgc3RhdGVtZW50c1xuKioqKioqKioqKioqKioqKioqKlxuXG5Db21wb3VuZCBzdGF0ZW1lbnRzIGNvbnRhaW4gKGdyb3VwcyBvZikgb3RoZXIgc3RhdGVtZW50czsgdGhleSBhZmZlY3Rcbm9yIGNvbnRyb2wgdGhlIGV4ZWN1dGlvbiBvZiB0aG9zZSBvdGhlciBzdGF0ZW1lbnRzIGluIHNvbWUgd2F5LiAgSW5cbmdlbmVyYWwsIGNvbXBvdW5kIHN0YXRlbWVudHMgc3BhbiBtdWx0aXBsZSBsaW5lcywgYWx0aG91Z2ggaW4gc2ltcGxlXG5pbmNhcm5hdGlvbnMgYSB3aG9sZSBjb21wb3VuZCBzdGF0ZW1lbnQgbWF5IGJlIGNvbnRhaW5lZCBpbiBvbmUgbGluZS5cblxuVGhlICJpZiIsICJ3aGlsZSIgYW5kICJmb3IiIHN0YXRlbWVudHMgaW1wbGVtZW50IHRyYWRpdGlvbmFsIGNvbnRyb2xcbmZsb3cgY29uc3RydWN0cy4gICJ0cnkiIHNwZWNpZmllcyBleGNlcHRpb24gaGFuZGxlcnMgYW5kL29yIGNsZWFudXBcbmNvZGUgZm9yIGEgZ3JvdXAgb2Ygc3RhdGVtZW50cywgd2hpbGUgdGhlICJ3aXRoIiBzdGF0ZW1lbnQgYWxsb3dzIHRoZVxuZXhlY3V0aW9uIG9mIGluaXRpYWxpemF0aW9uIGFuZCBmaW5hbGl6YXRpb24gY29kZSBhcm91bmQgYSBibG9jayBvZlxuY29kZS4gIEZ1bmN0aW9uIGFuZCBjbGFzcyBkZWZpbml0aW9ucyBhcmUgYWxzbyBzeW50YWN0aWNhbGx5IGNvbXBvdW5kXG5zdGF0ZW1lbnRzLlxuXG5BIGNvbXBvdW5kIHN0YXRlbWVudCBjb25zaXN0cyBvZiBvbmUgb3IgbW9yZSBcJ2NsYXVzZXMuXCcgIEEgY2xhdXNlXG5jb25zaXN0cyBvZiBhIGhlYWRlciBhbmQgYSBcJ3N1aXRlLlwnICBUaGUgY2xhdXNlIGhlYWRlcnMgb2YgYVxucGFydGljdWxhciBjb21wb3VuZCBzdGF0ZW1lbnQgYXJlIGFsbCBhdCB0aGUgc2FtZSBpbmRlbnRhdGlvbiBsZXZlbC5cbkVhY2ggY2xhdXNlIGhlYWRlciBiZWdpbnMgd2l0aCBhIHVuaXF1ZWx5IGlkZW50aWZ5aW5nIGtleXdvcmQgYW5kIGVuZHNcbndpdGggYSBjb2xvbi4gIEEgc3VpdGUgaXMgYSBncm91cCBvZiBzdGF0ZW1lbnRzIGNvbnRyb2xsZWQgYnkgYVxuY2xhdXNlLiAgQSBzdWl0ZSBjYW4gYmUgb25lIG9yIG1vcmUgc2VtaWNvbG9uLXNlcGFyYXRlZCBzaW1wbGVcbnN0YXRlbWVudHMgb24gdGhlIHNhbWUgbGluZSBhcyB0aGUgaGVhZGVyLCBmb2xsb3dpbmcgdGhlIGhlYWRlclwnc1xuY29sb24sIG9yIGl0IGNhbiBiZSBvbmUgb3IgbW9yZSBpbmRlbnRlZCBzdGF0ZW1lbnRzIG9uIHN1YnNlcXVlbnRcbmxpbmVzLiAgT25seSB0aGUgbGF0dGVyIGZvcm0gb2YgYSBzdWl0ZSBjYW4gY29udGFpbiBuZXN0ZWQgY29tcG91bmRcbnN0YXRlbWVudHM7IHRoZSBmb2xsb3dpbmcgaXMgaWxsZWdhbCwgbW9zdGx5IGJlY2F1c2UgaXQgd291bGRuXCd0IGJlXG5jbGVhciB0byB3aGljaCAiaWYiIGNsYXVzZSBhIGZvbGxvd2luZyAiZWxzZSIgY2xhdXNlIHdvdWxkIGJlbG9uZzpcblxuICAgaWYgdGVzdDE6IGlmIHRlc3QyOiBwcmludCh4KVxuXG5BbHNvIG5vdGUgdGhhdCB0aGUgc2VtaWNvbG9uIGJpbmRzIHRpZ2h0ZXIgdGhhbiB0aGUgY29sb24gaW4gdGhpc1xuY29udGV4dCwgc28gdGhhdCBpbiB0aGUgZm9sbG93aW5nIGV4YW1wbGUsIGVpdGhlciBhbGwgb3Igbm9uZSBvZiB0aGVcbiJwcmludCgpIiBjYWxscyBhcmUgZXhlY3V0ZWQ6XG5cbiAgIGlmIHggPCB5IDwgejogcHJpbnQoeCk7IHByaW50KHkpOyBwcmludCh6KVxuXG5TdW1tYXJpemluZzpcblxuICAgY29tcG91bmRfc3RtdCA6Oj0gaWZfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCB3aGlsZV9zdG10XG4gICAgICAgICAgICAgICAgICAgICB8IGZvcl9zdG10XG4gICAgICAgICAgICAgICAgICAgICB8IHRyeV9zdG10XG4gICAgICAgICAgICAgICAgICAgICB8IHdpdGhfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCBmdW5jZGVmXG4gICAgICAgICAgICAgICAgICAgICB8IGNsYXNzZGVmXG4gICAgICAgICAgICAgICAgICAgICB8IGFzeW5jX3dpdGhfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCBhc3luY19mb3Jfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCBhc3luY19mdW5jZGVmXG4gICBzdWl0ZSAgICAgICAgIDo6PSBzdG10X2xpc3QgTkVXTElORSB8IE5FV0xJTkUgSU5ERU5UIHN0YXRlbWVudCsgREVERU5UXG4gICBzdGF0ZW1lbnQgICAgIDo6PSBzdG10X2xpc3QgTkVXTElORSB8IGNvbXBvdW5kX3N0bXRcbiAgIHN0bXRfbGlzdCAgICAgOjo9IHNpbXBsZV9zdG10ICgiOyIgc2ltcGxlX3N0bXQpKiBbIjsiXVxuXG5Ob3RlIHRoYXQgc3RhdGVtZW50cyBhbHdheXMgZW5kIGluIGEgIk5FV0xJTkUiIHBvc3NpYmx5IGZvbGxvd2VkIGJ5IGFcbiJERURFTlQiLiAgQWxzbyBub3RlIHRoYXQgb3B0aW9uYWwgY29udGludWF0aW9uIGNsYXVzZXMgYWx3YXlzIGJlZ2luXG53aXRoIGEga2V5d29yZCB0aGF0IGNhbm5vdCBzdGFydCBhIHN0YXRlbWVudCwgdGh1cyB0aGVyZSBhcmUgbm9cbmFtYmlndWl0aWVzICh0aGUgXCdkYW5nbGluZyAiZWxzZSJcJyBwcm9ibGVtIGlzIHNvbHZlZCBpbiBQeXRob24gYnlcbnJlcXVpcmluZyBuZXN0ZWQgImlmIiBzdGF0ZW1lbnRzIHRvIGJlIGluZGVudGVkKS5cblxuVGhlIGZvcm1hdHRpbmcgb2YgdGhlIGdyYW1tYXIgcnVsZXMgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9ucyBwbGFjZXNcbmVhY2ggY2xhdXNlIG9uIGEgc2VwYXJhdGUgbGluZSBmb3IgY2xhcml0eS5cblxuXG5UaGUgImlmIiBzdGF0ZW1lbnRcbj09PT09PT09PT09PT09PT09PVxuXG5UaGUgImlmIiBzdGF0ZW1lbnQgaXMgdXNlZCBmb3IgY29uZGl0aW9uYWwgZXhlY3V0aW9uOlxuXG4gICBpZl9zdG10IDo6PSAiaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAoICJlbGlmIiBleHByZXNzaW9uICI6IiBzdWl0ZSApKlxuICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG5cbkl0IHNlbGVjdHMgZXhhY3RseSBvbmUgb2YgdGhlIHN1aXRlcyBieSBldmFsdWF0aW5nIHRoZSBleHByZXNzaW9ucyBvbmVcbmJ5IG9uZSB1bnRpbCBvbmUgaXMgZm91bmQgdG8gYmUgdHJ1ZSAoc2VlIHNlY3Rpb24gKkJvb2xlYW4gb3BlcmF0aW9ucypcbmZvciB0aGUgZGVmaW5pdGlvbiBvZiB0cnVlIGFuZCBmYWxzZSk7IHRoZW4gdGhhdCBzdWl0ZSBpcyBleGVjdXRlZFxuKGFuZCBubyBvdGhlciBwYXJ0IG9mIHRoZSAiaWYiIHN0YXRlbWVudCBpcyBleGVjdXRlZCBvciBldmFsdWF0ZWQpLlxuSWYgYWxsIGV4cHJlc3Npb25zIGFyZSBmYWxzZSwgdGhlIHN1aXRlIG9mIHRoZSAiZWxzZSIgY2xhdXNlLCBpZlxucHJlc2VudCwgaXMgZXhlY3V0ZWQuXG5cblxuVGhlICJ3aGlsZSIgc3RhdGVtZW50XG49PT09PT09PT09PT09PT09PT09PT1cblxuVGhlICJ3aGlsZSIgc3RhdGVtZW50IGlzIHVzZWQgZm9yIHJlcGVhdGVkIGV4ZWN1dGlvbiBhcyBsb25nIGFzIGFuXG5leHByZXNzaW9uIGlzIHRydWU6XG5cbiAgIHdoaWxlX3N0bXQgOjo9ICJ3aGlsZSIgZXhwcmVzc2lvbiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuXG5UaGlzIHJlcGVhdGVkbHkgdGVzdHMgdGhlIGV4cHJlc3Npb24gYW5kLCBpZiBpdCBpcyB0cnVlLCBleGVjdXRlcyB0aGVcbmZpcnN0IHN1aXRlOyBpZiB0aGUgZXhwcmVzc2lvbiBpcyBmYWxzZSAod2hpY2ggbWF5IGJlIHRoZSBmaXJzdCB0aW1lXG5pdCBpcyB0ZXN0ZWQpIHRoZSBzdWl0ZSBvZiB0aGUgImVsc2UiIGNsYXVzZSwgaWYgcHJlc2VudCwgaXMgZXhlY3V0ZWRcbmFuZCB0aGUgbG9vcCB0ZXJtaW5hdGVzLlxuXG5BICJicmVhayIgc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSB0ZXJtaW5hdGVzIHRoZSBsb29wXG53aXRob3V0IGV4ZWN1dGluZyB0aGUgImVsc2UiIGNsYXVzZVwncyBzdWl0ZS4gIEEgImNvbnRpbnVlIiBzdGF0ZW1lbnRcbmV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSBza2lwcyB0aGUgcmVzdCBvZiB0aGUgc3VpdGUgYW5kIGdvZXMgYmFja1xudG8gdGVzdGluZyB0aGUgZXhwcmVzc2lvbi5cblxuXG5UaGUgImZvciIgc3RhdGVtZW50XG49PT09PT09PT09PT09PT09PT09XG5cblRoZSAiZm9yIiBzdGF0ZW1lbnQgaXMgdXNlZCB0byBpdGVyYXRlIG92ZXIgdGhlIGVsZW1lbnRzIG9mIGEgc2VxdWVuY2VcbihzdWNoIGFzIGEgc3RyaW5nLCB0dXBsZSBvciBsaXN0KSBvciBvdGhlciBpdGVyYWJsZSBvYmplY3Q6XG5cbiAgIGZvcl9zdG10IDo6PSAiZm9yIiB0YXJnZXRfbGlzdCAiaW4iIGV4cHJlc3Npb25fbGlzdCAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuVGhlIGV4cHJlc3Npb24gbGlzdCBpcyBldmFsdWF0ZWQgb25jZTsgaXQgc2hvdWxkIHlpZWxkIGFuIGl0ZXJhYmxlXG5vYmplY3QuICBBbiBpdGVyYXRvciBpcyBjcmVhdGVkIGZvciB0aGUgcmVzdWx0IG9mIHRoZVxuImV4cHJlc3Npb25fbGlzdCIuICBUaGUgc3VpdGUgaXMgdGhlbiBleGVjdXRlZCBvbmNlIGZvciBlYWNoIGl0ZW1cbnByb3ZpZGVkIGJ5IHRoZSBpdGVyYXRvciwgaW4gdGhlIG9yZGVyIHJldHVybmVkIGJ5IHRoZSBpdGVyYXRvci4gIEVhY2hcbml0ZW0gaW4gdHVybiBpcyBhc3NpZ25lZCB0byB0aGUgdGFyZ2V0IGxpc3QgdXNpbmcgdGhlIHN0YW5kYXJkIHJ1bGVzXG5mb3IgYXNzaWdubWVudHMgKHNlZSAqQXNzaWdubWVudCBzdGF0ZW1lbnRzKiksIGFuZCB0aGVuIHRoZSBzdWl0ZSBpc1xuZXhlY3V0ZWQuICBXaGVuIHRoZSBpdGVtcyBhcmUgZXhoYXVzdGVkICh3aGljaCBpcyBpbW1lZGlhdGVseSB3aGVuIHRoZVxuc2VxdWVuY2UgaXMgZW1wdHkgb3IgYW4gaXRlcmF0b3IgcmFpc2VzIGEgIlN0b3BJdGVyYXRpb24iIGV4Y2VwdGlvbiksXG50aGUgc3VpdGUgaW4gdGhlICJlbHNlIiBjbGF1c2UsIGlmIHByZXNlbnQsIGlzIGV4ZWN1dGVkLCBhbmQgdGhlIGxvb3BcbnRlcm1pbmF0ZXMuXG5cbkEgImJyZWFrIiBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHRlcm1pbmF0ZXMgdGhlIGxvb3BcbndpdGhvdXQgZXhlY3V0aW5nIHRoZSAiZWxzZSIgY2xhdXNlXCdzIHN1aXRlLiAgQSAiY29udGludWUiIHN0YXRlbWVudFxuZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHNraXBzIHRoZSByZXN0IG9mIHRoZSBzdWl0ZSBhbmQgY29udGludWVzXG53aXRoIHRoZSBuZXh0IGl0ZW0sIG9yIHdpdGggdGhlICJlbHNlIiBjbGF1c2UgaWYgdGhlcmUgaXMgbm8gbmV4dFxuaXRlbS5cblxuVGhlIGZvci1sb29wIG1ha2VzIGFzc2lnbm1lbnRzIHRvIHRoZSB2YXJpYWJsZXMocykgaW4gdGhlIHRhcmdldCBsaXN0LlxuVGhpcyBvdmVyd3JpdGVzIGFsbCBwcmV2aW91cyBhc3NpZ25tZW50cyB0byB0aG9zZSB2YXJpYWJsZXMgaW5jbHVkaW5nXG50aG9zZSBtYWRlIGluIHRoZSBzdWl0ZSBvZiB0aGUgZm9yLWxvb3A6XG5cbiAgIGZvciBpIGluIHJhbmdlKDEwKTpcbiAgICAgICBwcmludChpKVxuICAgICAgIGkgPSA1ICAgICAgICAgICAgICMgdGhpcyB3aWxsIG5vdCBhZmZlY3QgdGhlIGZvci1sb29wXG4gICAgICAgICAgICAgICAgICAgICAgICAgIyBiZWNhdXNlIGkgd2lsbCBiZSBvdmVyd3JpdHRlbiB3aXRoIHRoZSBuZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIyBpbmRleCBpbiB0aGUgcmFuZ2VcblxuTmFtZXMgaW4gdGhlIHRhcmdldCBsaXN0IGFyZSBub3QgZGVsZXRlZCB3aGVuIHRoZSBsb29wIGlzIGZpbmlzaGVkLFxuYnV0IGlmIHRoZSBzZXF1ZW5jZSBpcyBlbXB0eSwgdGhleSB3aWxsIG5vdCBoYXZlIGJlZW4gYXNzaWduZWQgdG8gYXRcbmFsbCBieSB0aGUgbG9vcC4gIEhpbnQ6IHRoZSBidWlsdC1pbiBmdW5jdGlvbiAicmFuZ2UoKSIgcmV0dXJucyBhblxuaXRlcmF0b3Igb2YgaW50ZWdlcnMgc3VpdGFibGUgdG8gZW11bGF0ZSB0aGUgZWZmZWN0IG9mIFBhc2NhbFwncyAiZm9yIGlcbjo9IGEgdG8gYiBkbyI7IGUuZy4sICJsaXN0KHJhbmdlKDMpKSIgcmV0dXJucyB0aGUgbGlzdCAiWzAsIDEsIDJdIi5cblxuTm90ZTogVGhlcmUgaXMgYSBzdWJ0bGV0eSB3aGVuIHRoZSBzZXF1ZW5jZSBpcyBiZWluZyBtb2RpZmllZCBieSB0aGVcbiAgbG9vcCAodGhpcyBjYW4gb25seSBvY2N1ciBmb3IgbXV0YWJsZSBzZXF1ZW5jZXMsIGkuZS4gbGlzdHMpLiAgQW5cbiAgaW50ZXJuYWwgY291bnRlciBpcyB1c2VkIHRvIGtlZXAgdHJhY2sgb2Ygd2hpY2ggaXRlbSBpcyB1c2VkIG5leHQsXG4gIGFuZCB0aGlzIGlzIGluY3JlbWVudGVkIG9uIGVhY2ggaXRlcmF0aW9uLiAgV2hlbiB0aGlzIGNvdW50ZXIgaGFzXG4gIHJlYWNoZWQgdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2UgdGhlIGxvb3AgdGVybWluYXRlcy4gIFRoaXMgbWVhbnNcbiAgdGhhdCBpZiB0aGUgc3VpdGUgZGVsZXRlcyB0aGUgY3VycmVudCAob3IgYSBwcmV2aW91cykgaXRlbSBmcm9tIHRoZVxuICBzZXF1ZW5jZSwgdGhlIG5leHQgaXRlbSB3aWxsIGJlIHNraXBwZWQgKHNpbmNlIGl0IGdldHMgdGhlIGluZGV4IG9mXG4gIHRoZSBjdXJyZW50IGl0ZW0gd2hpY2ggaGFzIGFscmVhZHkgYmVlbiB0cmVhdGVkKS4gIExpa2V3aXNlLCBpZiB0aGVcbiAgc3VpdGUgaW5zZXJ0cyBhbiBpdGVtIGluIHRoZSBzZXF1ZW5jZSBiZWZvcmUgdGhlIGN1cnJlbnQgaXRlbSwgdGhlXG4gIGN1cnJlbnQgaXRlbSB3aWxsIGJlIHRyZWF0ZWQgYWdhaW4gdGhlIG5leHQgdGltZSB0aHJvdWdoIHRoZSBsb29wLlxuICBUaGlzIGNhbiBsZWFkIHRvIG5hc3R5IGJ1Z3MgdGhhdCBjYW4gYmUgYXZvaWRlZCBieSBtYWtpbmcgYVxuICB0ZW1wb3JhcnkgY29weSB1c2luZyBhIHNsaWNlIG9mIHRoZSB3aG9sZSBzZXF1ZW5jZSwgZS5nLixcblxuICAgICBmb3IgeCBpbiBhWzpdOlxuICAgICAgICAgaWYgeCA8IDA6IGEucmVtb3ZlKHgpXG5cblxuVGhlICJ0cnkiIHN0YXRlbWVudFxuPT09PT09PT09PT09PT09PT09PVxuXG5UaGUgInRyeSIgc3RhdGVtZW50IHNwZWNpZmllcyBleGNlcHRpb24gaGFuZGxlcnMgYW5kL29yIGNsZWFudXAgY29kZVxuZm9yIGEgZ3JvdXAgb2Ygc3RhdGVtZW50czpcblxuICAgdHJ5X3N0bXQgIDo6PSB0cnkxX3N0bXQgfCB0cnkyX3N0bXRcbiAgIHRyeTFfc3RtdCA6Oj0gInRyeSIgIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICgiZXhjZXB0IiBbZXhwcmVzc2lvbiBbImFzIiBpZGVudGlmaWVyXV0gIjoiIHN1aXRlKStcbiAgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4gICAgICAgICAgICAgICAgIFsiZmluYWxseSIgIjoiIHN1aXRlXVxuICAgdHJ5Ml9zdG10IDo6PSAidHJ5IiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICAgImZpbmFsbHkiICI6IiBzdWl0ZVxuXG5UaGUgImV4Y2VwdCIgY2xhdXNlKHMpIHNwZWNpZnkgb25lIG9yIG1vcmUgZXhjZXB0aW9uIGhhbmRsZXJzLiBXaGVuIG5vXG5leGNlcHRpb24gb2NjdXJzIGluIHRoZSAidHJ5IiBjbGF1c2UsIG5vIGV4Y2VwdGlvbiBoYW5kbGVyIGlzXG5leGVjdXRlZC4gV2hlbiBhbiBleGNlcHRpb24gb2NjdXJzIGluIHRoZSAidHJ5IiBzdWl0ZSwgYSBzZWFyY2ggZm9yIGFuXG5leGNlcHRpb24gaGFuZGxlciBpcyBzdGFydGVkLiAgVGhpcyBzZWFyY2ggaW5zcGVjdHMgdGhlIGV4Y2VwdCBjbGF1c2VzXG5pbiB0dXJuIHVudGlsIG9uZSBpcyBmb3VuZCB0aGF0IG1hdGNoZXMgdGhlIGV4Y2VwdGlvbi4gIEFuIGV4cHJlc3Npb24tXG5sZXNzIGV4Y2VwdCBjbGF1c2UsIGlmIHByZXNlbnQsIG11c3QgYmUgbGFzdDsgaXQgbWF0Y2hlcyBhbnlcbmV4Y2VwdGlvbi4gIEZvciBhbiBleGNlcHQgY2xhdXNlIHdpdGggYW4gZXhwcmVzc2lvbiwgdGhhdCBleHByZXNzaW9uXG5pcyBldmFsdWF0ZWQsIGFuZCB0aGUgY2xhdXNlIG1hdGNoZXMgdGhlIGV4Y2VwdGlvbiBpZiB0aGUgcmVzdWx0aW5nXG5vYmplY3QgaXMgImNvbXBhdGlibGUiIHdpdGggdGhlIGV4Y2VwdGlvbi4gIEFuIG9iamVjdCBpcyBjb21wYXRpYmxlXG53aXRoIGFuIGV4Y2VwdGlvbiBpZiBpdCBpcyB0aGUgY2xhc3Mgb3IgYSBiYXNlIGNsYXNzIG9mIHRoZSBleGNlcHRpb25cbm9iamVjdCBvciBhIHR1cGxlIGNvbnRhaW5pbmcgYW4gaXRlbSBjb21wYXRpYmxlIHdpdGggdGhlIGV4Y2VwdGlvbi5cblxuSWYgbm8gZXhjZXB0IGNsYXVzZSBtYXRjaGVzIHRoZSBleGNlcHRpb24sIHRoZSBzZWFyY2ggZm9yIGFuIGV4Y2VwdGlvblxuaGFuZGxlciBjb250aW51ZXMgaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIG9uIHRoZSBpbnZvY2F0aW9uIHN0YWNrLlxuWzFdXG5cbklmIHRoZSBldmFsdWF0aW9uIG9mIGFuIGV4cHJlc3Npb24gaW4gdGhlIGhlYWRlciBvZiBhbiBleGNlcHQgY2xhdXNlXG5yYWlzZXMgYW4gZXhjZXB0aW9uLCB0aGUgb3JpZ2luYWwgc2VhcmNoIGZvciBhIGhhbmRsZXIgaXMgY2FuY2VsZWQgYW5kXG5hIHNlYXJjaCBzdGFydHMgZm9yIHRoZSBuZXcgZXhjZXB0aW9uIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBvblxudGhlIGNhbGwgc3RhY2sgKGl0IGlzIHRyZWF0ZWQgYXMgaWYgdGhlIGVudGlyZSAidHJ5IiBzdGF0ZW1lbnQgcmFpc2VkXG50aGUgZXhjZXB0aW9uKS5cblxuV2hlbiBhIG1hdGNoaW5nIGV4Y2VwdCBjbGF1c2UgaXMgZm91bmQsIHRoZSBleGNlcHRpb24gaXMgYXNzaWduZWQgdG9cbnRoZSB0YXJnZXQgc3BlY2lmaWVkIGFmdGVyIHRoZSAiYXMiIGtleXdvcmQgaW4gdGhhdCBleGNlcHQgY2xhdXNlLCBpZlxucHJlc2VudCwgYW5kIHRoZSBleGNlcHQgY2xhdXNlXCdzIHN1aXRlIGlzIGV4ZWN1dGVkLiAgQWxsIGV4Y2VwdFxuY2xhdXNlcyBtdXN0IGhhdmUgYW4gZXhlY3V0YWJsZSBibG9jay4gIFdoZW4gdGhlIGVuZCBvZiB0aGlzIGJsb2NrIGlzXG5yZWFjaGVkLCBleGVjdXRpb24gY29udGludWVzIG5vcm1hbGx5IGFmdGVyIHRoZSBlbnRpcmUgdHJ5IHN0YXRlbWVudC5cbihUaGlzIG1lYW5zIHRoYXQgaWYgdHdvIG5lc3RlZCBoYW5kbGVycyBleGlzdCBmb3IgdGhlIHNhbWUgZXhjZXB0aW9uLFxuYW5kIHRoZSBleGNlcHRpb24gb2NjdXJzIGluIHRoZSB0cnkgY2xhdXNlIG9mIHRoZSBpbm5lciBoYW5kbGVyLCB0aGVcbm91dGVyIGhhbmRsZXIgd2lsbCBub3QgaGFuZGxlIHRoZSBleGNlcHRpb24uKVxuXG5XaGVuIGFuIGV4Y2VwdGlvbiBoYXMgYmVlbiBhc3NpZ25lZCB1c2luZyAiYXMgdGFyZ2V0IiwgaXQgaXMgY2xlYXJlZFxuYXQgdGhlIGVuZCBvZiB0aGUgZXhjZXB0IGNsYXVzZS4gIFRoaXMgaXMgYXMgaWZcblxuICAgZXhjZXB0IEUgYXMgTjpcbiAgICAgICBmb29cblxud2FzIHRyYW5zbGF0ZWQgdG9cblxuICAgZXhjZXB0IEUgYXMgTjpcbiAgICAgICB0cnk6XG4gICAgICAgICAgIGZvb1xuICAgICAgIGZpbmFsbHk6XG4gICAgICAgICAgIGRlbCBOXG5cblRoaXMgbWVhbnMgdGhlIGV4Y2VwdGlvbiBtdXN0IGJlIGFzc2lnbmVkIHRvIGEgZGlmZmVyZW50IG5hbWUgdG8gYmVcbmFibGUgdG8gcmVmZXIgdG8gaXQgYWZ0ZXIgdGhlIGV4Y2VwdCBjbGF1c2UuICBFeGNlcHRpb25zIGFyZSBjbGVhcmVkXG5iZWNhdXNlIHdpdGggdGhlIHRyYWNlYmFjayBhdHRhY2hlZCB0byB0aGVtLCB0aGV5IGZvcm0gYSByZWZlcmVuY2VcbmN5Y2xlIHdpdGggdGhlIHN0YWNrIGZyYW1lLCBrZWVwaW5nIGFsbCBsb2NhbHMgaW4gdGhhdCBmcmFtZSBhbGl2ZVxudW50aWwgdGhlIG5leHQgZ2FyYmFnZSBjb2xsZWN0aW9uIG9jY3Vycy5cblxuQmVmb3JlIGFuIGV4Y2VwdCBjbGF1c2VcJ3Mgc3VpdGUgaXMgZXhlY3V0ZWQsIGRldGFpbHMgYWJvdXQgdGhlXG5leGNlcHRpb24gYXJlIHN0b3JlZCBpbiB0aGUgInN5cyIgbW9kdWxlIGFuZCBjYW4gYmUgYWNjZXNzZWQgdmlhXG4ic3lzLmV4Y19pbmZvKCkiLiAic3lzLmV4Y19pbmZvKCkiIHJldHVybnMgYSAzLXR1cGxlIGNvbnNpc3Rpbmcgb2YgdGhlXG5leGNlcHRpb24gY2xhc3MsIHRoZSBleGNlcHRpb24gaW5zdGFuY2UgYW5kIGEgdHJhY2ViYWNrIG9iamVjdCAoc2VlXG5zZWN0aW9uICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqKSBpZGVudGlmeWluZyB0aGUgcG9pbnQgaW4gdGhlXG5wcm9ncmFtIHdoZXJlIHRoZSBleGNlcHRpb24gb2NjdXJyZWQuICAic3lzLmV4Y19pbmZvKCkiIHZhbHVlcyBhcmVcbnJlc3RvcmVkIHRvIHRoZWlyIHByZXZpb3VzIHZhbHVlcyAoYmVmb3JlIHRoZSBjYWxsKSB3aGVuIHJldHVybmluZ1xuZnJvbSBhIGZ1bmN0aW9uIHRoYXQgaGFuZGxlZCBhbiBleGNlcHRpb24uXG5cblRoZSBvcHRpb25hbCAiZWxzZSIgY2xhdXNlIGlzIGV4ZWN1dGVkIGlmIGFuZCB3aGVuIGNvbnRyb2wgZmxvd3Mgb2ZmXG50aGUgZW5kIG9mIHRoZSAidHJ5IiBjbGF1c2UuIFsyXSBFeGNlcHRpb25zIGluIHRoZSAiZWxzZSIgY2xhdXNlIGFyZVxubm90IGhhbmRsZWQgYnkgdGhlIHByZWNlZGluZyAiZXhjZXB0IiBjbGF1c2VzLlxuXG5JZiAiZmluYWxseSIgaXMgcHJlc2VudCwgaXQgc3BlY2lmaWVzIGEgXCdjbGVhbnVwXCcgaGFuZGxlci4gIFRoZSAidHJ5IlxuY2xhdXNlIGlzIGV4ZWN1dGVkLCBpbmNsdWRpbmcgYW55ICJleGNlcHQiIGFuZCAiZWxzZSIgY2xhdXNlcy4gIElmIGFuXG5leGNlcHRpb24gb2NjdXJzIGluIGFueSBvZiB0aGUgY2xhdXNlcyBhbmQgaXMgbm90IGhhbmRsZWQsIHRoZVxuZXhjZXB0aW9uIGlzIHRlbXBvcmFyaWx5IHNhdmVkLiBUaGUgImZpbmFsbHkiIGNsYXVzZSBpcyBleGVjdXRlZC4gIElmXG50aGVyZSBpcyBhIHNhdmVkIGV4Y2VwdGlvbiBpdCBpcyByZS1yYWlzZWQgYXQgdGhlIGVuZCBvZiB0aGUgImZpbmFsbHkiXG5jbGF1c2UuICBJZiB0aGUgImZpbmFsbHkiIGNsYXVzZSByYWlzZXMgYW5vdGhlciBleGNlcHRpb24sIHRoZSBzYXZlZFxuZXhjZXB0aW9uIGlzIHNldCBhcyB0aGUgY29udGV4dCBvZiB0aGUgbmV3IGV4Y2VwdGlvbi4gSWYgdGhlICJmaW5hbGx5IlxuY2xhdXNlIGV4ZWN1dGVzIGEgInJldHVybiIgb3IgImJyZWFrIiBzdGF0ZW1lbnQsIHRoZSBzYXZlZCBleGNlcHRpb25cbmlzIGRpc2NhcmRlZDpcblxuICAgPj4+IGRlZiBmKCk6XG4gICAuLi4gICAgIHRyeTpcbiAgIC4uLiAgICAgICAgIDEvMFxuICAgLi4uICAgICBmaW5hbGx5OlxuICAgLi4uICAgICAgICAgcmV0dXJuIDQyXG4gICAuLi5cbiAgID4+PiBmKClcbiAgIDQyXG5cblRoZSBleGNlcHRpb24gaW5mb3JtYXRpb24gaXMgbm90IGF2YWlsYWJsZSB0byB0aGUgcHJvZ3JhbSBkdXJpbmdcbmV4ZWN1dGlvbiBvZiB0aGUgImZpbmFsbHkiIGNsYXVzZS5cblxuV2hlbiBhICJyZXR1cm4iLCAiYnJlYWsiIG9yICJjb250aW51ZSIgc3RhdGVtZW50IGlzIGV4ZWN1dGVkIGluIHRoZVxuInRyeSIgc3VpdGUgb2YgYSAidHJ5Ii4uLiJmaW5hbGx5IiBzdGF0ZW1lbnQsIHRoZSAiZmluYWxseSIgY2xhdXNlIGlzXG5hbHNvIGV4ZWN1dGVkIFwnb24gdGhlIHdheSBvdXQuXCcgQSAiY29udGludWUiIHN0YXRlbWVudCBpcyBpbGxlZ2FsIGluXG50aGUgImZpbmFsbHkiIGNsYXVzZS4gKFRoZSByZWFzb24gaXMgYSBwcm9ibGVtIHdpdGggdGhlIGN1cnJlbnRcbmltcGxlbWVudGF0aW9uIC0tLSB0aGlzIHJlc3RyaWN0aW9uIG1heSBiZSBsaWZ0ZWQgaW4gdGhlIGZ1dHVyZSkuXG5cblRoZSByZXR1cm4gdmFsdWUgb2YgYSBmdW5jdGlvbiBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBsYXN0ICJyZXR1cm4iXG5zdGF0ZW1lbnQgZXhlY3V0ZWQuICBTaW5jZSB0aGUgImZpbmFsbHkiIGNsYXVzZSBhbHdheXMgZXhlY3V0ZXMsIGFcbiJyZXR1cm4iIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgImZpbmFsbHkiIGNsYXVzZSB3aWxsIGFsd2F5cyBiZSB0aGVcbmxhc3Qgb25lIGV4ZWN1dGVkOlxuXG4gICA+Pj4gZGVmIGZvbygpOlxuICAgLi4uICAgICB0cnk6XG4gICAuLi4gICAgICAgICByZXR1cm4gXCd0cnlcJ1xuICAgLi4uICAgICBmaW5hbGx5OlxuICAgLi4uICAgICAgICAgcmV0dXJuIFwnZmluYWxseVwnXG4gICAuLi5cbiAgID4+PiBmb28oKVxuICAgXCdmaW5hbGx5XCdcblxuQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiBleGNlcHRpb25zIGNhbiBiZSBmb3VuZCBpbiBzZWN0aW9uXG4qRXhjZXB0aW9ucyosIGFuZCBpbmZvcm1hdGlvbiBvbiB1c2luZyB0aGUgInJhaXNlIiBzdGF0ZW1lbnQgdG9cbmdlbmVyYXRlIGV4Y2VwdGlvbnMgbWF5IGJlIGZvdW5kIGluIHNlY3Rpb24gKlRoZSByYWlzZSBzdGF0ZW1lbnQqLlxuXG5cblRoZSAid2l0aCIgc3RhdGVtZW50XG49PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgIndpdGgiIHN0YXRlbWVudCBpcyB1c2VkIHRvIHdyYXAgdGhlIGV4ZWN1dGlvbiBvZiBhIGJsb2NrIHdpdGhcbm1ldGhvZHMgZGVmaW5lZCBieSBhIGNvbnRleHQgbWFuYWdlciAoc2VlIHNlY3Rpb24gKldpdGggU3RhdGVtZW50XG5Db250ZXh0IE1hbmFnZXJzKikuIFRoaXMgYWxsb3dzIGNvbW1vbiAidHJ5Ii4uLiJleGNlcHQiLi4uImZpbmFsbHkiXG51c2FnZSBwYXR0ZXJucyB0byBiZSBlbmNhcHN1bGF0ZWQgZm9yIGNvbnZlbmllbnQgcmV1c2UuXG5cbiAgIHdpdGhfc3RtdCA6Oj0gIndpdGgiIHdpdGhfaXRlbSAoIiwiIHdpdGhfaXRlbSkqICI6IiBzdWl0ZVxuICAgd2l0aF9pdGVtIDo6PSBleHByZXNzaW9uIFsiYXMiIHRhcmdldF1cblxuVGhlIGV4ZWN1dGlvbiBvZiB0aGUgIndpdGgiIHN0YXRlbWVudCB3aXRoIG9uZSAiaXRlbSIgcHJvY2VlZHMgYXNcbmZvbGxvd3M6XG5cbjEuIFRoZSBjb250ZXh0IGV4cHJlc3Npb24gKHRoZSBleHByZXNzaW9uIGdpdmVuIGluIHRoZSAid2l0aF9pdGVtIilcbiAgIGlzIGV2YWx1YXRlZCB0byBvYnRhaW4gYSBjb250ZXh0IG1hbmFnZXIuXG5cbjIuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgIl9fZXhpdF9fKCkiIGlzIGxvYWRlZCBmb3IgbGF0ZXIgdXNlLlxuXG4zLiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzICJfX2VudGVyX18oKSIgbWV0aG9kIGlzIGludm9rZWQuXG5cbjQuIElmIGEgdGFyZ2V0IHdhcyBpbmNsdWRlZCBpbiB0aGUgIndpdGgiIHN0YXRlbWVudCwgdGhlIHJldHVyblxuICAgdmFsdWUgZnJvbSAiX19lbnRlcl9fKCkiIGlzIGFzc2lnbmVkIHRvIGl0LlxuXG4gICBOb3RlOiBUaGUgIndpdGgiIHN0YXRlbWVudCBndWFyYW50ZWVzIHRoYXQgaWYgdGhlICJfX2VudGVyX18oKSJcbiAgICAgbWV0aG9kIHJldHVybnMgd2l0aG91dCBhbiBlcnJvciwgdGhlbiAiX19leGl0X18oKSIgd2lsbCBhbHdheXMgYmVcbiAgICAgY2FsbGVkLiBUaHVzLCBpZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIHRoZSBhc3NpZ25tZW50IHRvIHRoZVxuICAgICB0YXJnZXQgbGlzdCwgaXQgd2lsbCBiZSB0cmVhdGVkIHRoZSBzYW1lIGFzIGFuIGVycm9yIG9jY3VycmluZ1xuICAgICB3aXRoaW4gdGhlIHN1aXRlIHdvdWxkIGJlLiBTZWUgc3RlcCA2IGJlbG93LlxuXG41LiBUaGUgc3VpdGUgaXMgZXhlY3V0ZWQuXG5cbjYuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgIl9fZXhpdF9fKCkiIG1ldGhvZCBpcyBpbnZva2VkLiAgSWYgYW5cbiAgIGV4Y2VwdGlvbiBjYXVzZWQgdGhlIHN1aXRlIHRvIGJlIGV4aXRlZCwgaXRzIHR5cGUsIHZhbHVlLCBhbmRcbiAgIHRyYWNlYmFjayBhcmUgcGFzc2VkIGFzIGFyZ3VtZW50cyB0byAiX19leGl0X18oKSIuIE90aGVyd2lzZSwgdGhyZWVcbiAgICJOb25lIiBhcmd1bWVudHMgYXJlIHN1cHBsaWVkLlxuXG4gICBJZiB0aGUgc3VpdGUgd2FzIGV4aXRlZCBkdWUgdG8gYW4gZXhjZXB0aW9uLCBhbmQgdGhlIHJldHVybiB2YWx1ZVxuICAgZnJvbSB0aGUgIl9fZXhpdF9fKCkiIG1ldGhvZCB3YXMgZmFsc2UsIHRoZSBleGNlcHRpb24gaXMgcmVyYWlzZWQuXG4gICBJZiB0aGUgcmV0dXJuIHZhbHVlIHdhcyB0cnVlLCB0aGUgZXhjZXB0aW9uIGlzIHN1cHByZXNzZWQsIGFuZFxuICAgZXhlY3V0aW9uIGNvbnRpbnVlcyB3aXRoIHRoZSBzdGF0ZW1lbnQgZm9sbG93aW5nIHRoZSAid2l0aCJcbiAgIHN0YXRlbWVudC5cblxuICAgSWYgdGhlIHN1aXRlIHdhcyBleGl0ZWQgZm9yIGFueSByZWFzb24gb3RoZXIgdGhhbiBhbiBleGNlcHRpb24sIHRoZVxuICAgcmV0dXJuIHZhbHVlIGZyb20gIl9fZXhpdF9fKCkiIGlzIGlnbm9yZWQsIGFuZCBleGVjdXRpb24gcHJvY2VlZHNcbiAgIGF0IHRoZSBub3JtYWwgbG9jYXRpb24gZm9yIHRoZSBraW5kIG9mIGV4aXQgdGhhdCB3YXMgdGFrZW4uXG5cbldpdGggbW9yZSB0aGFuIG9uZSBpdGVtLCB0aGUgY29udGV4dCBtYW5hZ2VycyBhcmUgcHJvY2Vzc2VkIGFzIGlmXG5tdWx0aXBsZSAid2l0aCIgc3RhdGVtZW50cyB3ZXJlIG5lc3RlZDpcblxuICAgd2l0aCBBKCkgYXMgYSwgQigpIGFzIGI6XG4gICAgICAgc3VpdGVcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICB3aXRoIEEoKSBhcyBhOlxuICAgICAgIHdpdGggQigpIGFzIGI6XG4gICAgICAgICAgIHN1aXRlXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IFN1cHBvcnQgZm9yIG11bHRpcGxlIGNvbnRleHQgZXhwcmVzc2lvbnMuXG5cblNlZSBhbHNvOiAqKlBFUCAzNDMqKiAtIFRoZSAid2l0aCIgc3RhdGVtZW50XG5cbiAgICAgVGhlIHNwZWNpZmljYXRpb24sIGJhY2tncm91bmQsIGFuZCBleGFtcGxlcyBmb3IgdGhlIFB5dGhvbiAid2l0aCJcbiAgICAgc3RhdGVtZW50LlxuXG5cbkZ1bmN0aW9uIGRlZmluaXRpb25zXG49PT09PT09PT09PT09PT09PT09PVxuXG5BIGZ1bmN0aW9uIGRlZmluaXRpb24gZGVmaW5lcyBhIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBvYmplY3QgKHNlZVxuc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5Kik6XG5cbiAgIGZ1bmNkZWYgICAgICAgIDo6PSBbZGVjb3JhdG9yc10gImRlZiIgZnVuY25hbWUgIigiIFtwYXJhbWV0ZXJfbGlzdF0gIikiIFsiLT4iIGV4cHJlc3Npb25dICI6IiBzdWl0ZVxuICAgZGVjb3JhdG9ycyAgICAgOjo9IGRlY29yYXRvcitcbiAgIGRlY29yYXRvciAgICAgIDo6PSAiQCIgZG90dGVkX25hbWUgWyIoIiBbYXJndW1lbnRfbGlzdCBbIiwiXV0gIikiXSBORVdMSU5FXG4gICBkb3R0ZWRfbmFtZSAgICA6Oj0gaWRlbnRpZmllciAoIi4iIGlkZW50aWZpZXIpKlxuICAgcGFyYW1ldGVyX2xpc3QgOjo9IChkZWZwYXJhbWV0ZXIgIiwiKSpcbiAgICAgICAgICAgICAgICAgICAgICB8ICIqIiBbcGFyYW1ldGVyXSAoIiwiIGRlZnBhcmFtZXRlcikqIFsiLCIgIioqIiBwYXJhbWV0ZXJdXG4gICAgICAgICAgICAgICAgICAgICAgfCAiKioiIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgICAgICAgIHwgZGVmcGFyYW1ldGVyIFsiLCJdIClcbiAgIHBhcmFtZXRlciAgICAgIDo6PSBpZGVudGlmaWVyIFsiOiIgZXhwcmVzc2lvbl1cbiAgIGRlZnBhcmFtZXRlciAgIDo6PSBwYXJhbWV0ZXIgWyI9IiBleHByZXNzaW9uXVxuICAgZnVuY25hbWUgICAgICAgOjo9IGlkZW50aWZpZXJcblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50LiAgSXRzIGV4ZWN1dGlvbiBiaW5kc1xudGhlIGZ1bmN0aW9uIG5hbWUgaW4gdGhlIGN1cnJlbnQgbG9jYWwgbmFtZXNwYWNlIHRvIGEgZnVuY3Rpb24gb2JqZWN0XG4oYSB3cmFwcGVyIGFyb3VuZCB0aGUgZXhlY3V0YWJsZSBjb2RlIGZvciB0aGUgZnVuY3Rpb24pLiAgVGhpc1xuZnVuY3Rpb24gb2JqZWN0IGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGdsb2JhbCBuYW1lc3BhY2VcbmFzIHRoZSBnbG9iYWwgbmFtZXNwYWNlIHRvIGJlIHVzZWQgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLlxuXG5UaGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBkb2VzIG5vdCBleGVjdXRlIHRoZSBmdW5jdGlvbiBib2R5OyB0aGlzIGdldHNcbmV4ZWN1dGVkIG9ubHkgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLiBbM11cblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIG1heSBiZSB3cmFwcGVkIGJ5IG9uZSBvciBtb3JlICpkZWNvcmF0b3IqXG5leHByZXNzaW9ucy4gRGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSBldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gaXNcbmRlZmluZWQsIGluIHRoZSBzY29wZSB0aGF0IGNvbnRhaW5zIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uLiAgVGhlXG5yZXN1bHQgbXVzdCBiZSBhIGNhbGxhYmxlLCB3aGljaCBpcyBpbnZva2VkIHdpdGggdGhlIGZ1bmN0aW9uIG9iamVjdFxuYXMgdGhlIG9ubHkgYXJndW1lbnQuIFRoZSByZXR1cm5lZCB2YWx1ZSBpcyBib3VuZCB0byB0aGUgZnVuY3Rpb24gbmFtZVxuaW5zdGVhZCBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LiAgTXVsdGlwbGUgZGVjb3JhdG9ycyBhcmUgYXBwbGllZCBpblxubmVzdGVkIGZhc2hpb24uIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvZGVcblxuICAgQGYxKGFyZylcbiAgIEBmMlxuICAgZGVmIGZ1bmMoKTogcGFzc1xuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIGRlZiBmdW5jKCk6IHBhc3NcbiAgIGZ1bmMgPSBmMShhcmcpKGYyKGZ1bmMpKVxuXG5XaGVuIG9uZSBvciBtb3JlICpwYXJhbWV0ZXJzKiBoYXZlIHRoZSBmb3JtICpwYXJhbWV0ZXIqICI9IlxuKmV4cHJlc3Npb24qLCB0aGUgZnVuY3Rpb24gaXMgc2FpZCB0byBoYXZlICJkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZXMuIlxuRm9yIGEgcGFyYW1ldGVyIHdpdGggYSBkZWZhdWx0IHZhbHVlLCB0aGUgY29ycmVzcG9uZGluZyAqYXJndW1lbnQqIG1heVxuYmUgb21pdHRlZCBmcm9tIGEgY2FsbCwgaW4gd2hpY2ggY2FzZSB0aGUgcGFyYW1ldGVyXCdzIGRlZmF1bHQgdmFsdWUgaXNcbnN1YnN0aXR1dGVkLiAgSWYgYSBwYXJhbWV0ZXIgaGFzIGEgZGVmYXVsdCB2YWx1ZSwgYWxsIGZvbGxvd2luZ1xucGFyYW1ldGVycyB1cCB1bnRpbCB0aGUgIiIqIiIgbXVzdCBhbHNvIGhhdmUgYSBkZWZhdWx0IHZhbHVlIC0tLSB0aGlzXG5pcyBhIHN5bnRhY3RpYyByZXN0cmljdGlvbiB0aGF0IGlzIG5vdCBleHByZXNzZWQgYnkgdGhlIGdyYW1tYXIuXG5cbioqRGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWVzIGFyZSBldmFsdWF0ZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0IHdoZW4gdGhlXG5mdW5jdGlvbiBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLioqIFRoaXMgbWVhbnMgdGhhdCB0aGUgZXhwcmVzc2lvbiBpc1xuZXZhbHVhdGVkIG9uY2UsIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGRlZmluZWQsIGFuZCB0aGF0IHRoZSBzYW1lICJwcmUtXG5jb21wdXRlZCIgdmFsdWUgaXMgdXNlZCBmb3IgZWFjaCBjYWxsLiAgVGhpcyBpcyBlc3BlY2lhbGx5IGltcG9ydGFudFxudG8gdW5kZXJzdGFuZCB3aGVuIGEgZGVmYXVsdCBwYXJhbWV0ZXIgaXMgYSBtdXRhYmxlIG9iamVjdCwgc3VjaCBhcyBhXG5saXN0IG9yIGEgZGljdGlvbmFyeTogaWYgdGhlIGZ1bmN0aW9uIG1vZGlmaWVzIHRoZSBvYmplY3QgKGUuZy4gYnlcbmFwcGVuZGluZyBhbiBpdGVtIHRvIGEgbGlzdCksIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGluIGVmZmVjdCBtb2RpZmllZC5cblRoaXMgaXMgZ2VuZXJhbGx5IG5vdCB3aGF0IHdhcyBpbnRlbmRlZC4gIEEgd2F5IGFyb3VuZCB0aGlzIGlzIHRvIHVzZVxuIk5vbmUiIGFzIHRoZSBkZWZhdWx0LCBhbmQgZXhwbGljaXRseSB0ZXN0IGZvciBpdCBpbiB0aGUgYm9keSBvZiB0aGVcbmZ1bmN0aW9uLCBlLmcuOlxuXG4gICBkZWYgd2hhdHNfb25fdGhlX3RlbGx5KHBlbmd1aW49Tm9uZSk6XG4gICAgICAgaWYgcGVuZ3VpbiBpcyBOb25lOlxuICAgICAgICAgICBwZW5ndWluID0gW11cbiAgICAgICBwZW5ndWluLmFwcGVuZCgicHJvcGVydHkgb2YgdGhlIHpvbyIpXG4gICAgICAgcmV0dXJuIHBlbmd1aW5cblxuRnVuY3Rpb24gY2FsbCBzZW1hbnRpY3MgYXJlIGRlc2NyaWJlZCBpbiBtb3JlIGRldGFpbCBpbiBzZWN0aW9uXG4qQ2FsbHMqLiBBIGZ1bmN0aW9uIGNhbGwgYWx3YXlzIGFzc2lnbnMgdmFsdWVzIHRvIGFsbCBwYXJhbWV0ZXJzXG5tZW50aW9uZWQgaW4gdGhlIHBhcmFtZXRlciBsaXN0LCBlaXRoZXIgZnJvbSBwb3NpdGlvbiBhcmd1bWVudHMsIGZyb21cbmtleXdvcmQgYXJndW1lbnRzLCBvciBmcm9tIGRlZmF1bHQgdmFsdWVzLiAgSWYgdGhlIGZvcm1cbiIiKmlkZW50aWZpZXIiIiBpcyBwcmVzZW50LCBpdCBpcyBpbml0aWFsaXplZCB0byBhIHR1cGxlIHJlY2VpdmluZyBhbnlcbmV4Y2VzcyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIGRlZmF1bHRpbmcgdG8gdGhlIGVtcHR5IHR1cGxlLiAgSWYgdGhlXG5mb3JtICIiKippZGVudGlmaWVyIiIgaXMgcHJlc2VudCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gYSBuZXdcbmRpY3Rpb25hcnkgcmVjZWl2aW5nIGFueSBleGNlc3Mga2V5d29yZCBhcmd1bWVudHMsIGRlZmF1bHRpbmcgdG8gYSBuZXdcbmVtcHR5IGRpY3Rpb25hcnkuIFBhcmFtZXRlcnMgYWZ0ZXIgIiIqIiIgb3IgIiIqaWRlbnRpZmllciIiIGFyZVxua2V5d29yZC1vbmx5IHBhcmFtZXRlcnMgYW5kIG1heSBvbmx5IGJlIHBhc3NlZCB1c2VkIGtleXdvcmQgYXJndW1lbnRzLlxuXG5QYXJhbWV0ZXJzIG1heSBoYXZlIGFubm90YXRpb25zIG9mIHRoZSBmb3JtICIiOiBleHByZXNzaW9uIiIgZm9sbG93aW5nXG50aGUgcGFyYW1ldGVyIG5hbWUuICBBbnkgcGFyYW1ldGVyIG1heSBoYXZlIGFuIGFubm90YXRpb24gZXZlbiB0aG9zZVxub2YgdGhlIGZvcm0gIippZGVudGlmaWVyIiBvciAiKippZGVudGlmaWVyIi4gIEZ1bmN0aW9ucyBtYXkgaGF2ZVxuInJldHVybiIgYW5ub3RhdGlvbiBvZiB0aGUgZm9ybSAiIi0+IGV4cHJlc3Npb24iIiBhZnRlciB0aGUgcGFyYW1ldGVyXG5saXN0LiAgVGhlc2UgYW5ub3RhdGlvbnMgY2FuIGJlIGFueSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbiBhbmQgYXJlXG5ldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBleGVjdXRlZC4gIEFubm90YXRpb25zIG1heVxuYmUgZXZhbHVhdGVkIGluIGEgZGlmZmVyZW50IG9yZGVyIHRoYW4gdGhleSBhcHBlYXIgaW4gdGhlIHNvdXJjZSBjb2RlLlxuVGhlIHByZXNlbmNlIG9mIGFubm90YXRpb25zIGRvZXMgbm90IGNoYW5nZSB0aGUgc2VtYW50aWNzIG9mIGFcbmZ1bmN0aW9uLiAgVGhlIGFubm90YXRpb24gdmFsdWVzIGFyZSBhdmFpbGFibGUgYXMgdmFsdWVzIG9mIGFcbmRpY3Rpb25hcnkga2V5ZWQgYnkgdGhlIHBhcmFtZXRlcnNcJyBuYW1lcyBpbiB0aGUgIl9fYW5ub3RhdGlvbnNfXyJcbmF0dHJpYnV0ZSBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LlxuXG5JdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGNyZWF0ZSBhbm9ueW1vdXMgZnVuY3Rpb25zIChmdW5jdGlvbnMgbm90IGJvdW5kXG50byBhIG5hbWUpLCBmb3IgaW1tZWRpYXRlIHVzZSBpbiBleHByZXNzaW9ucy4gIFRoaXMgdXNlcyBsYW1iZGFcbmV4cHJlc3Npb25zLCBkZXNjcmliZWQgaW4gc2VjdGlvbiAqTGFtYmRhcyouICBOb3RlIHRoYXQgdGhlIGxhbWJkYVxuZXhwcmVzc2lvbiBpcyBtZXJlbHkgYSBzaG9ydGhhbmQgZm9yIGEgc2ltcGxpZmllZCBmdW5jdGlvbiBkZWZpbml0aW9uO1xuYSBmdW5jdGlvbiBkZWZpbmVkIGluIGEgIiJkZWYiIiBzdGF0ZW1lbnQgY2FuIGJlIHBhc3NlZCBhcm91bmQgb3JcbmFzc2lnbmVkIHRvIGFub3RoZXIgbmFtZSBqdXN0IGxpa2UgYSBmdW5jdGlvbiBkZWZpbmVkIGJ5IGEgbGFtYmRhXG5leHByZXNzaW9uLiAgVGhlICIiZGVmIiIgZm9ybSBpcyBhY3R1YWxseSBtb3JlIHBvd2VyZnVsIHNpbmNlIGl0XG5hbGxvd3MgdGhlIGV4ZWN1dGlvbiBvZiBtdWx0aXBsZSBzdGF0ZW1lbnRzIGFuZCBhbm5vdGF0aW9ucy5cblxuKipQcm9ncmFtbWVyXCdzIG5vdGU6KiogRnVuY3Rpb25zIGFyZSBmaXJzdC1jbGFzcyBvYmplY3RzLiAgQSAiImRlZiIiXG5zdGF0ZW1lbnQgZXhlY3V0ZWQgaW5zaWRlIGEgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgbG9jYWxcbmZ1bmN0aW9uIHRoYXQgY2FuIGJlIHJldHVybmVkIG9yIHBhc3NlZCBhcm91bmQuICBGcmVlIHZhcmlhYmxlcyB1c2VkXG5pbiB0aGUgbmVzdGVkIGZ1bmN0aW9uIGNhbiBhY2Nlc3MgdGhlIGxvY2FsIHZhcmlhYmxlcyBvZiB0aGUgZnVuY3Rpb25cbmNvbnRhaW5pbmcgdGhlIGRlZi4gIFNlZSBzZWN0aW9uICpOYW1pbmcgYW5kIGJpbmRpbmcqIGZvciBkZXRhaWxzLlxuXG5TZWUgYWxzbzogKipQRVAgMzEwNyoqIC0gRnVuY3Rpb24gQW5ub3RhdGlvbnNcblxuICAgICBUaGUgb3JpZ2luYWwgc3BlY2lmaWNhdGlvbiBmb3IgZnVuY3Rpb24gYW5ub3RhdGlvbnMuXG5cblxuQ2xhc3MgZGVmaW5pdGlvbnNcbj09PT09PT09PT09PT09PT09XG5cbkEgY2xhc3MgZGVmaW5pdGlvbiBkZWZpbmVzIGEgY2xhc3Mgb2JqZWN0IChzZWUgc2VjdGlvbiAqVGhlIHN0YW5kYXJkXG50eXBlIGhpZXJhcmNoeSopOlxuXG4gICBjbGFzc2RlZiAgICA6Oj0gW2RlY29yYXRvcnNdICJjbGFzcyIgY2xhc3NuYW1lIFtpbmhlcml0YW5jZV0gIjoiIHN1aXRlXG4gICBpbmhlcml0YW5jZSA6Oj0gIigiIFthcmd1bWVudF9saXN0XSAiKSJcbiAgIGNsYXNzbmFtZSAgIDo6PSBpZGVudGlmaWVyXG5cbkEgY2xhc3MgZGVmaW5pdGlvbiBpcyBhbiBleGVjdXRhYmxlIHN0YXRlbWVudC4gIFRoZSBpbmhlcml0YW5jZSBsaXN0XG51c3VhbGx5IGdpdmVzIGEgbGlzdCBvZiBiYXNlIGNsYXNzZXMgKHNlZSAqQ3VzdG9taXppbmcgY2xhc3MgY3JlYXRpb24qXG5mb3IgbW9yZSBhZHZhbmNlZCB1c2VzKSwgc28gZWFjaCBpdGVtIGluIHRoZSBsaXN0IHNob3VsZCBldmFsdWF0ZSB0byBhXG5jbGFzcyBvYmplY3Qgd2hpY2ggYWxsb3dzIHN1YmNsYXNzaW5nLiAgQ2xhc3NlcyB3aXRob3V0IGFuIGluaGVyaXRhbmNlXG5saXN0IGluaGVyaXQsIGJ5IGRlZmF1bHQsIGZyb20gdGhlIGJhc2UgY2xhc3MgIm9iamVjdCI7IGhlbmNlLFxuXG4gICBjbGFzcyBGb286XG4gICAgICAgcGFzc1xuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIGNsYXNzIEZvbyhvYmplY3QpOlxuICAgICAgIHBhc3NcblxuVGhlIGNsYXNzXCdzIHN1aXRlIGlzIHRoZW4gZXhlY3V0ZWQgaW4gYSBuZXcgZXhlY3V0aW9uIGZyYW1lIChzZWVcbipOYW1pbmcgYW5kIGJpbmRpbmcqKSwgdXNpbmcgYSBuZXdseSBjcmVhdGVkIGxvY2FsIG5hbWVzcGFjZSBhbmQgdGhlXG5vcmlnaW5hbCBnbG9iYWwgbmFtZXNwYWNlLiAoVXN1YWxseSwgdGhlIHN1aXRlIGNvbnRhaW5zIG1vc3RseVxuZnVuY3Rpb24gZGVmaW5pdGlvbnMuKSAgV2hlbiB0aGUgY2xhc3NcJ3Mgc3VpdGUgZmluaXNoZXMgZXhlY3V0aW9uLCBpdHNcbmV4ZWN1dGlvbiBmcmFtZSBpcyBkaXNjYXJkZWQgYnV0IGl0cyBsb2NhbCBuYW1lc3BhY2UgaXMgc2F2ZWQuIFs0XSBBXG5jbGFzcyBvYmplY3QgaXMgdGhlbiBjcmVhdGVkIHVzaW5nIHRoZSBpbmhlcml0YW5jZSBsaXN0IGZvciB0aGUgYmFzZVxuY2xhc3NlcyBhbmQgdGhlIHNhdmVkIGxvY2FsIG5hbWVzcGFjZSBmb3IgdGhlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5LlxuVGhlIGNsYXNzIG5hbWUgaXMgYm91bmQgdG8gdGhpcyBjbGFzcyBvYmplY3QgaW4gdGhlIG9yaWdpbmFsIGxvY2FsXG5uYW1lc3BhY2UuXG5cbkNsYXNzIGNyZWF0aW9uIGNhbiBiZSBjdXN0b21pemVkIGhlYXZpbHkgdXNpbmcgKm1ldGFjbGFzc2VzKi5cblxuQ2xhc3NlcyBjYW4gYWxzbyBiZSBkZWNvcmF0ZWQ6IGp1c3QgbGlrZSB3aGVuIGRlY29yYXRpbmcgZnVuY3Rpb25zLFxuXG4gICBAZjEoYXJnKVxuICAgQGYyXG4gICBjbGFzcyBGb286IHBhc3NcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICBjbGFzcyBGb286IHBhc3NcbiAgIEZvbyA9IGYxKGFyZykoZjIoRm9vKSlcblxuVGhlIGV2YWx1YXRpb24gcnVsZXMgZm9yIHRoZSBkZWNvcmF0b3IgZXhwcmVzc2lvbnMgYXJlIHRoZSBzYW1lIGFzIGZvclxuZnVuY3Rpb24gZGVjb3JhdG9ycy4gIFRoZSByZXN1bHQgbXVzdCBiZSBhIGNsYXNzIG9iamVjdCwgd2hpY2ggaXMgdGhlblxuYm91bmQgdG8gdGhlIGNsYXNzIG5hbWUuXG5cbioqUHJvZ3JhbW1lclwncyBub3RlOioqIFZhcmlhYmxlcyBkZWZpbmVkIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uIGFyZVxuY2xhc3MgYXR0cmlidXRlczsgdGhleSBhcmUgc2hhcmVkIGJ5IGluc3RhbmNlcy4gIEluc3RhbmNlIGF0dHJpYnV0ZXNcbmNhbiBiZSBzZXQgaW4gYSBtZXRob2Qgd2l0aCAic2VsZi5uYW1lID0gdmFsdWUiLiAgQm90aCBjbGFzcyBhbmRcbmluc3RhbmNlIGF0dHJpYnV0ZXMgYXJlIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgbm90YXRpb24gIiJzZWxmLm5hbWUiIixcbmFuZCBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgaGlkZXMgYSBjbGFzcyBhdHRyaWJ1dGUgd2l0aCB0aGUgc2FtZSBuYW1lXG53aGVuIGFjY2Vzc2VkIGluIHRoaXMgd2F5LiAgQ2xhc3MgYXR0cmlidXRlcyBjYW4gYmUgdXNlZCBhcyBkZWZhdWx0c1xuZm9yIGluc3RhbmNlIGF0dHJpYnV0ZXMsIGJ1dCB1c2luZyBtdXRhYmxlIHZhbHVlcyB0aGVyZSBjYW4gbGVhZCB0b1xudW5leHBlY3RlZCByZXN1bHRzLiAgKkRlc2NyaXB0b3JzKiBjYW4gYmUgdXNlZCB0byBjcmVhdGUgaW5zdGFuY2VcbnZhcmlhYmxlcyB3aXRoIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLlxuXG5TZWUgYWxzbzogKipQRVAgMzExNSoqIC0gTWV0YWNsYXNzZXMgaW4gUHl0aG9uIDMgKipQRVAgMzEyOSoqIC1cbiAgQ2xhc3MgRGVjb3JhdG9yc1xuXG5cbkNvcm91dGluZXNcbj09PT09PT09PT1cblxuTmV3IGluIHZlcnNpb24gMy41LlxuXG5cbkNvcm91dGluZSBmdW5jdGlvbiBkZWZpbml0aW9uXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICBhc3luY19mdW5jZGVmIDo6PSBbZGVjb3JhdG9yc10gImFzeW5jIiAiZGVmIiBmdW5jbmFtZSAiKCIgW3BhcmFtZXRlcl9saXN0XSAiKSIgWyItPiIgZXhwcmVzc2lvbl0gIjoiIHN1aXRlXG5cbkV4ZWN1dGlvbiBvZiBQeXRob24gY29yb3V0aW5lcyBjYW4gYmUgc3VzcGVuZGVkIGFuZCByZXN1bWVkIGF0IG1hbnlcbnBvaW50cyAoc2VlICpjb3JvdXRpbmUqKS4gIEluIHRoZSBib2R5IG9mIGEgY29yb3V0aW5lLCBhbnkgImF3YWl0IiBhbmRcbiJhc3luYyIgaWRlbnRpZmllcnMgYmVjb21lIHJlc2VydmVkIGtleXdvcmRzOyAiYXdhaXQiIGV4cHJlc3Npb25zLFxuImFzeW5jIGZvciIgYW5kICJhc3luYyB3aXRoIiBjYW4gb25seSBiZSB1c2VkIGluIGNvcm91dGluZSBib2RpZXMuXG5cbkZ1bmN0aW9ucyBkZWZpbmVkIHdpdGggImFzeW5jIGRlZiIgc3ludGF4IGFyZSBhbHdheXMgY29yb3V0aW5lXG5mdW5jdGlvbnMsIGV2ZW4gaWYgdGhleSBkbyBub3QgY29udGFpbiAiYXdhaXQiIG9yICJhc3luYyIga2V5d29yZHMuXG5cbkl0IGlzIGEgIlN5bnRheEVycm9yIiB0byB1c2UgInlpZWxkIiBleHByZXNzaW9ucyBpbiAiYXN5bmMgZGVmIlxuY29yb3V0aW5lcy5cblxuQW4gZXhhbXBsZSBvZiBhIGNvcm91dGluZSBmdW5jdGlvbjpcblxuICAgYXN5bmMgZGVmIGZ1bmMocGFyYW0xLCBwYXJhbTIpOlxuICAgICAgIGRvX3N0dWZmKClcbiAgICAgICBhd2FpdCBzb21lX2Nvcm91dGluZSgpXG5cblxuVGhlICJhc3luYyBmb3IiIHN0YXRlbWVudFxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICBhc3luY19mb3Jfc3RtdCA6Oj0gImFzeW5jIiBmb3Jfc3RtdFxuXG5BbiAqYXN5bmNocm9ub3VzIGl0ZXJhYmxlKiBpcyBhYmxlIHRvIGNhbGwgYXN5bmNocm9ub3VzIGNvZGUgaW4gaXRzXG4qaXRlciogaW1wbGVtZW50YXRpb24sIGFuZCAqYXN5bmNocm9ub3VzIGl0ZXJhdG9yKiBjYW4gY2FsbFxuYXN5bmNocm9ub3VzIGNvZGUgaW4gaXRzICpuZXh0KiBtZXRob2QuXG5cblRoZSAiYXN5bmMgZm9yIiBzdGF0ZW1lbnQgYWxsb3dzIGNvbnZlbmllbnQgaXRlcmF0aW9uIG92ZXJcbmFzeW5jaHJvbm91cyBpdGVyYXRvcnMuXG5cblRoZSBmb2xsb3dpbmcgY29kZTpcblxuICAgYXN5bmMgZm9yIFRBUkdFVCBpbiBJVEVSOlxuICAgICAgIEJMT0NLXG4gICBlbHNlOlxuICAgICAgIEJMT0NLMlxuXG5JcyBzZW1hbnRpY2FsbHkgZXF1aXZhbGVudCB0bzpcblxuICAgaXRlciA9IChJVEVSKVxuICAgaXRlciA9IHR5cGUoaXRlcikuX19haXRlcl9fKGl0ZXIpXG4gICBydW5uaW5nID0gVHJ1ZVxuICAgd2hpbGUgcnVubmluZzpcbiAgICAgICB0cnk6XG4gICAgICAgICAgIFRBUkdFVCA9IGF3YWl0IHR5cGUoaXRlcikuX19hbmV4dF9fKGl0ZXIpXG4gICAgICAgZXhjZXB0IFN0b3BBc3luY0l0ZXJhdGlvbjpcbiAgICAgICAgICAgcnVubmluZyA9IEZhbHNlXG4gICAgICAgZWxzZTpcbiAgICAgICAgICAgQkxPQ0tcbiAgIGVsc2U6XG4gICAgICAgQkxPQ0syXG5cblNlZSBhbHNvICJfX2FpdGVyX18oKSIgYW5kICJfX2FuZXh0X18oKSIgZm9yIGRldGFpbHMuXG5cbkl0IGlzIGEgIlN5bnRheEVycm9yIiB0byB1c2UgImFzeW5jIGZvciIgc3RhdGVtZW50IG91dHNpZGUgb2YgYW5cbiJhc3luYyBkZWYiIGZ1bmN0aW9uLlxuXG5cblRoZSAiYXN5bmMgd2l0aCIgc3RhdGVtZW50XG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICBhc3luY193aXRoX3N0bXQgOjo9ICJhc3luYyIgd2l0aF9zdG10XG5cbkFuICphc3luY2hyb25vdXMgY29udGV4dCBtYW5hZ2VyKiBpcyBhICpjb250ZXh0IG1hbmFnZXIqIHRoYXQgaXMgYWJsZVxudG8gc3VzcGVuZCBleGVjdXRpb24gaW4gaXRzICplbnRlciogYW5kICpleGl0KiBtZXRob2RzLlxuXG5UaGUgZm9sbG93aW5nIGNvZGU6XG5cbiAgIGFzeW5jIHdpdGggRVhQUiBhcyBWQVI6XG4gICAgICAgQkxPQ0tcblxuSXMgc2VtYW50aWNhbGx5IGVxdWl2YWxlbnQgdG86XG5cbiAgIG1nciA9IChFWFBSKVxuICAgYWV4aXQgPSB0eXBlKG1ncikuX19hZXhpdF9fXG4gICBhZW50ZXIgPSB0eXBlKG1ncikuX19hZW50ZXJfXyhtZ3IpXG4gICBleGMgPSBUcnVlXG5cbiAgIFZBUiA9IGF3YWl0IGFlbnRlclxuICAgdHJ5OlxuICAgICAgIEJMT0NLXG4gICBleGNlcHQ6XG4gICAgICAgaWYgbm90IGF3YWl0IGFleGl0KG1nciwgKnN5cy5leGNfaW5mbygpKTpcbiAgICAgICAgICAgcmFpc2VcbiAgIGVsc2U6XG4gICAgICAgYXdhaXQgYWV4aXQobWdyLCBOb25lLCBOb25lLCBOb25lKVxuXG5TZWUgYWxzbyAiX19hZW50ZXJfXygpIiBhbmQgIl9fYWV4aXRfXygpIiBmb3IgZGV0YWlscy5cblxuSXQgaXMgYSAiU3ludGF4RXJyb3IiIHRvIHVzZSAiYXN5bmMgd2l0aCIgc3RhdGVtZW50IG91dHNpZGUgb2YgYW5cbiJhc3luYyBkZWYiIGZ1bmN0aW9uLlxuXG5TZWUgYWxzbzogKipQRVAgNDkyKiogLSBDb3JvdXRpbmVzIHdpdGggYXN5bmMgYW5kIGF3YWl0IHN5bnRheFxuXG4tWyBGb290bm90ZXMgXS1cblxuWzFdIFRoZSBleGNlcHRpb24gaXMgcHJvcGFnYXRlZCB0byB0aGUgaW52b2NhdGlvbiBzdGFjayB1bmxlc3NcbiAgICB0aGVyZSBpcyBhICJmaW5hbGx5IiBjbGF1c2Ugd2hpY2ggaGFwcGVucyB0byByYWlzZSBhbm90aGVyXG4gICAgZXhjZXB0aW9uLiBUaGF0IG5ldyBleGNlcHRpb24gY2F1c2VzIHRoZSBvbGQgb25lIHRvIGJlIGxvc3QuXG5cblsyXSBDdXJyZW50bHksIGNvbnRyb2wgImZsb3dzIG9mZiB0aGUgZW5kIiBleGNlcHQgaW4gdGhlIGNhc2Ugb2ZcbiAgICBhbiBleGNlcHRpb24gb3IgdGhlIGV4ZWN1dGlvbiBvZiBhICJyZXR1cm4iLCAiY29udGludWUiLCBvclxuICAgICJicmVhayIgc3RhdGVtZW50LlxuXG5bM10gQSBzdHJpbmcgbGl0ZXJhbCBhcHBlYXJpbmcgYXMgdGhlIGZpcnN0IHN0YXRlbWVudCBpbiB0aGVcbiAgICBmdW5jdGlvbiBib2R5IGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIGZ1bmN0aW9uXCdzICJfX2RvY19fIlxuICAgIGF0dHJpYnV0ZSBhbmQgdGhlcmVmb3JlIHRoZSBmdW5jdGlvblwncyAqZG9jc3RyaW5nKi5cblxuWzRdIEEgc3RyaW5nIGxpdGVyYWwgYXBwZWFyaW5nIGFzIHRoZSBmaXJzdCBzdGF0ZW1lbnQgaW4gdGhlIGNsYXNzXG4gICAgYm9keSBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBuYW1lc3BhY2VcJ3MgIl9fZG9jX18iIGl0ZW0gYW5kXG4gICAgdGhlcmVmb3JlIHRoZSBjbGFzc1wncyAqZG9jc3RyaW5nKi5cbicsCi0gJ2NvbnRleHQtbWFuYWdlcnMnOiB1J1xuV2l0aCBTdGF0ZW1lbnQgQ29udGV4dCBNYW5hZ2Vyc1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5BICpjb250ZXh0IG1hbmFnZXIqIGlzIGFuIG9iamVjdCB0aGF0IGRlZmluZXMgdGhlIHJ1bnRpbWUgY29udGV4dCB0b1xuYmUgZXN0YWJsaXNoZWQgd2hlbiBleGVjdXRpbmcgYSAid2l0aCIgc3RhdGVtZW50LiBUaGUgY29udGV4dCBtYW5hZ2VyXG5oYW5kbGVzIHRoZSBlbnRyeSBpbnRvLCBhbmQgdGhlIGV4aXQgZnJvbSwgdGhlIGRlc2lyZWQgcnVudGltZSBjb250ZXh0XG5mb3IgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgYmxvY2sgb2YgY29kZS4gIENvbnRleHQgbWFuYWdlcnMgYXJlIG5vcm1hbGx5XG5pbnZva2VkIHVzaW5nIHRoZSAid2l0aCIgc3RhdGVtZW50IChkZXNjcmliZWQgaW4gc2VjdGlvbiAqVGhlIHdpdGhcbnN0YXRlbWVudCopLCBidXQgY2FuIGFsc28gYmUgdXNlZCBieSBkaXJlY3RseSBpbnZva2luZyB0aGVpciBtZXRob2RzLlxuXG5UeXBpY2FsIHVzZXMgb2YgY29udGV4dCBtYW5hZ2VycyBpbmNsdWRlIHNhdmluZyBhbmQgcmVzdG9yaW5nIHZhcmlvdXNcbmtpbmRzIG9mIGdsb2JhbCBzdGF0ZSwgbG9ja2luZyBhbmQgdW5sb2NraW5nIHJlc291cmNlcywgY2xvc2luZyBvcGVuZWRcbmZpbGVzLCBldGMuXG5cbkZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGNvbnRleHQgbWFuYWdlcnMsIHNlZSAqQ29udGV4dCBNYW5hZ2VyIFR5cGVzKi5cblxub2JqZWN0Ll9fZW50ZXJfXyhzZWxmKVxuXG4gICBFbnRlciB0aGUgcnVudGltZSBjb250ZXh0IHJlbGF0ZWQgdG8gdGhpcyBvYmplY3QuIFRoZSAid2l0aCJcbiAgIHN0YXRlbWVudCB3aWxsIGJpbmQgdGhpcyBtZXRob2RcJ3MgcmV0dXJuIHZhbHVlIHRvIHRoZSB0YXJnZXQocylcbiAgIHNwZWNpZmllZCBpbiB0aGUgImFzIiBjbGF1c2Ugb2YgdGhlIHN0YXRlbWVudCwgaWYgYW55LlxuXG5vYmplY3QuX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWx1ZSwgdHJhY2ViYWNrKVxuXG4gICBFeGl0IHRoZSBydW50aW1lIGNvbnRleHQgcmVsYXRlZCB0byB0aGlzIG9iamVjdC4gVGhlIHBhcmFtZXRlcnNcbiAgIGRlc2NyaWJlIHRoZSBleGNlcHRpb24gdGhhdCBjYXVzZWQgdGhlIGNvbnRleHQgdG8gYmUgZXhpdGVkLiBJZiB0aGVcbiAgIGNvbnRleHQgd2FzIGV4aXRlZCB3aXRob3V0IGFuIGV4Y2VwdGlvbiwgYWxsIHRocmVlIGFyZ3VtZW50cyB3aWxsXG4gICBiZSAiTm9uZSIuXG5cbiAgIElmIGFuIGV4Y2VwdGlvbiBpcyBzdXBwbGllZCwgYW5kIHRoZSBtZXRob2Qgd2lzaGVzIHRvIHN1cHByZXNzIHRoZVxuICAgZXhjZXB0aW9uIChpLmUuLCBwcmV2ZW50IGl0IGZyb20gYmVpbmcgcHJvcGFnYXRlZCksIGl0IHNob3VsZFxuICAgcmV0dXJuIGEgdHJ1ZSB2YWx1ZS4gT3RoZXJ3aXNlLCB0aGUgZXhjZXB0aW9uIHdpbGwgYmUgcHJvY2Vzc2VkXG4gICBub3JtYWxseSB1cG9uIGV4aXQgZnJvbSB0aGlzIG1ldGhvZC5cblxuICAgTm90ZSB0aGF0ICJfX2V4aXRfXygpIiBtZXRob2RzIHNob3VsZCBub3QgcmVyYWlzZSB0aGUgcGFzc2VkLWluXG4gICBleGNlcHRpb247IHRoaXMgaXMgdGhlIGNhbGxlclwncyByZXNwb25zaWJpbGl0eS5cblxuU2VlIGFsc286ICoqUEVQIDM0MyoqIC0gVGhlICJ3aXRoIiBzdGF0ZW1lbnRcblxuICAgICBUaGUgc3BlY2lmaWNhdGlvbiwgYmFja2dyb3VuZCwgYW5kIGV4YW1wbGVzIGZvciB0aGUgUHl0aG9uICJ3aXRoIlxuICAgICBzdGF0ZW1lbnQuXG4nLAotICdjb250aW51ZSc6IHUnXG5UaGUgImNvbnRpbnVlIiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICBjb250aW51ZV9zdG10IDo6PSAiY29udGludWUiXG5cbiJjb250aW51ZSIgbWF5IG9ubHkgb2NjdXIgc3ludGFjdGljYWxseSBuZXN0ZWQgaW4gYSAiZm9yIiBvciAid2hpbGUiXG5sb29wLCBidXQgbm90IG5lc3RlZCBpbiBhIGZ1bmN0aW9uIG9yIGNsYXNzIGRlZmluaXRpb24gb3IgImZpbmFsbHkiXG5jbGF1c2Ugd2l0aGluIHRoYXQgbG9vcC4gIEl0IGNvbnRpbnVlcyB3aXRoIHRoZSBuZXh0IGN5Y2xlIG9mIHRoZVxubmVhcmVzdCBlbmNsb3NpbmcgbG9vcC5cblxuV2hlbiAiY29udGludWUiIHBhc3NlcyBjb250cm9sIG91dCBvZiBhICJ0cnkiIHN0YXRlbWVudCB3aXRoIGFcbiJmaW5hbGx5IiBjbGF1c2UsIHRoYXQgImZpbmFsbHkiIGNsYXVzZSBpcyBleGVjdXRlZCBiZWZvcmUgcmVhbGx5XG5zdGFydGluZyB0aGUgbmV4dCBsb29wIGN5Y2xlLlxuJywKLSAnY29udmVyc2lvbnMnOiB1J1xuQXJpdGhtZXRpYyBjb252ZXJzaW9uc1xuKioqKioqKioqKioqKioqKioqKioqKlxuXG5XaGVuIGEgZGVzY3JpcHRpb24gb2YgYW4gYXJpdGhtZXRpYyBvcGVyYXRvciBiZWxvdyB1c2VzIHRoZSBwaHJhc2VcbiJ0aGUgbnVtZXJpYyBhcmd1bWVudHMgYXJlIGNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLCIgdGhpcyBtZWFuc1xudGhhdCB0aGUgb3BlcmF0b3IgaW1wbGVtZW50YXRpb24gZm9yIGJ1aWx0LWluIHR5cGVzIHdvcmtzIGFzIGZvbGxvd3M6XG5cbiogSWYgZWl0aGVyIGFyZ3VtZW50IGlzIGEgY29tcGxleCBudW1iZXIsIHRoZSBvdGhlciBpcyBjb252ZXJ0ZWQgdG9cbiAgY29tcGxleDtcblxuKiBvdGhlcndpc2UsIGlmIGVpdGhlciBhcmd1bWVudCBpcyBhIGZsb2F0aW5nIHBvaW50IG51bWJlciwgdGhlXG4gIG90aGVyIGlzIGNvbnZlcnRlZCB0byBmbG9hdGluZyBwb2ludDtcblxuKiBvdGhlcndpc2UsIGJvdGggbXVzdCBiZSBpbnRlZ2VycyBhbmQgbm8gY29udmVyc2lvbiBpcyBuZWNlc3NhcnkuXG5cblNvbWUgYWRkaXRpb25hbCBydWxlcyBhcHBseSBmb3IgY2VydGFpbiBvcGVyYXRvcnMgKGUuZy4sIGEgc3RyaW5nIGFzIGFcbmxlZnQgYXJndW1lbnQgdG8gdGhlIFwnJVwnIG9wZXJhdG9yKS4gIEV4dGVuc2lvbnMgbXVzdCBkZWZpbmUgdGhlaXIgb3duXG5jb252ZXJzaW9uIGJlaGF2aW9yLlxuJywKLSAnY3VzdG9taXphdGlvbic6IHUnXG5CYXNpYyBjdXN0b21pemF0aW9uXG4qKioqKioqKioqKioqKioqKioqXG5cbm9iamVjdC5fX25ld19fKGNsc1ssIC4uLl0pXG5cbiAgIENhbGxlZCB0byBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgY2xhc3MgKmNscyouICAiX19uZXdfXygpIiBpcyBhXG4gICBzdGF0aWMgbWV0aG9kIChzcGVjaWFsLWNhc2VkIHNvIHlvdSBuZWVkIG5vdCBkZWNsYXJlIGl0IGFzIHN1Y2gpXG4gICB0aGF0IHRha2VzIHRoZSBjbGFzcyBvZiB3aGljaCBhbiBpbnN0YW5jZSB3YXMgcmVxdWVzdGVkIGFzIGl0c1xuICAgZmlyc3QgYXJndW1lbnQuICBUaGUgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgdGhvc2UgcGFzc2VkIHRvIHRoZVxuICAgb2JqZWN0IGNvbnN0cnVjdG9yIGV4cHJlc3Npb24gKHRoZSBjYWxsIHRvIHRoZSBjbGFzcykuICBUaGUgcmV0dXJuXG4gICB2YWx1ZSBvZiAiX19uZXdfXygpIiBzaG91bGQgYmUgdGhlIG5ldyBvYmplY3QgaW5zdGFuY2UgKHVzdWFsbHkgYW5cbiAgIGluc3RhbmNlIG9mICpjbHMqKS5cblxuICAgVHlwaWNhbCBpbXBsZW1lbnRhdGlvbnMgY3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBjbGFzcyBieVxuICAgaW52b2tpbmcgdGhlIHN1cGVyY2xhc3NcJ3MgIl9fbmV3X18oKSIgbWV0aG9kIHVzaW5nXG4gICAic3VwZXIoY3VycmVudGNsYXNzLCBjbHMpLl9fbmV3X18oY2xzWywgLi4uXSkiIHdpdGggYXBwcm9wcmlhdGVcbiAgIGFyZ3VtZW50cyBhbmQgdGhlbiBtb2RpZnlpbmcgdGhlIG5ld2x5LWNyZWF0ZWQgaW5zdGFuY2UgYXNcbiAgIG5lY2Vzc2FyeSBiZWZvcmUgcmV0dXJuaW5nIGl0LlxuXG4gICBJZiAiX19uZXdfXygpIiByZXR1cm5zIGFuIGluc3RhbmNlIG9mICpjbHMqLCB0aGVuIHRoZSBuZXdcbiAgIGluc3RhbmNlXCdzICJfX2luaXRfXygpIiBtZXRob2Qgd2lsbCBiZSBpbnZva2VkIGxpa2VcbiAgICJfX2luaXRfXyhzZWxmWywgLi4uXSkiLCB3aGVyZSAqc2VsZiogaXMgdGhlIG5ldyBpbnN0YW5jZSBhbmQgdGhlXG4gICByZW1haW5pbmcgYXJndW1lbnRzIGFyZSB0aGUgc2FtZSBhcyB3ZXJlIHBhc3NlZCB0byAiX19uZXdfXygpIi5cblxuICAgSWYgIl9fbmV3X18oKSIgZG9lcyBub3QgcmV0dXJuIGFuIGluc3RhbmNlIG9mICpjbHMqLCB0aGVuIHRoZSBuZXdcbiAgIGluc3RhbmNlXCdzICJfX2luaXRfXygpIiBtZXRob2Qgd2lsbCBub3QgYmUgaW52b2tlZC5cblxuICAgIl9fbmV3X18oKSIgaXMgaW50ZW5kZWQgbWFpbmx5IHRvIGFsbG93IHN1YmNsYXNzZXMgb2YgaW1tdXRhYmxlXG4gICB0eXBlcyAobGlrZSBpbnQsIHN0ciwgb3IgdHVwbGUpIHRvIGN1c3RvbWl6ZSBpbnN0YW5jZSBjcmVhdGlvbi4gIEl0XG4gICBpcyBhbHNvIGNvbW1vbmx5IG92ZXJyaWRkZW4gaW4gY3VzdG9tIG1ldGFjbGFzc2VzIGluIG9yZGVyIHRvXG4gICBjdXN0b21pemUgY2xhc3MgY3JlYXRpb24uXG5cbm9iamVjdC5fX2luaXRfXyhzZWxmWywgLi4uXSlcblxuICAgQ2FsbGVkIGFmdGVyIHRoZSBpbnN0YW5jZSBoYXMgYmVlbiBjcmVhdGVkIChieSAiX19uZXdfXygpIiksIGJ1dFxuICAgYmVmb3JlIGl0IGlzIHJldHVybmVkIHRvIHRoZSBjYWxsZXIuICBUaGUgYXJndW1lbnRzIGFyZSB0aG9zZVxuICAgcGFzc2VkIHRvIHRoZSBjbGFzcyBjb25zdHJ1Y3RvciBleHByZXNzaW9uLiAgSWYgYSBiYXNlIGNsYXNzIGhhcyBhblxuICAgIl9faW5pdF9fKCkiIG1ldGhvZCwgdGhlIGRlcml2ZWQgY2xhc3NcJ3MgIl9faW5pdF9fKCkiIG1ldGhvZCwgaWZcbiAgIGFueSwgbXVzdCBleHBsaWNpdGx5IGNhbGwgaXQgdG8gZW5zdXJlIHByb3BlciBpbml0aWFsaXphdGlvbiBvZiB0aGVcbiAgIGJhc2UgY2xhc3MgcGFydCBvZiB0aGUgaW5zdGFuY2U7IGZvciBleGFtcGxlOlxuICAgIkJhc2VDbGFzcy5fX2luaXRfXyhzZWxmLCBbYXJncy4uLl0pIi5cblxuICAgQmVjYXVzZSAiX19uZXdfXygpIiBhbmQgIl9faW5pdF9fKCkiIHdvcmsgdG9nZXRoZXIgaW4gY29uc3RydWN0aW5nXG4gICBvYmplY3RzICgiX19uZXdfXygpIiB0byBjcmVhdGUgaXQsIGFuZCAiX19pbml0X18oKSIgdG8gY3VzdG9taXNlXG4gICBpdCksIG5vIG5vbi0iTm9uZSIgdmFsdWUgbWF5IGJlIHJldHVybmVkIGJ5ICJfX2luaXRfXygpIjsgZG9pbmcgc29cbiAgIHdpbGwgY2F1c2UgYSAiVHlwZUVycm9yIiB0byBiZSByYWlzZWQgYXQgcnVudGltZS5cblxub2JqZWN0Ll9fZGVsX18oc2VsZilcblxuICAgQ2FsbGVkIHdoZW4gdGhlIGluc3RhbmNlIGlzIGFib3V0IHRvIGJlIGRlc3Ryb3llZC4gIFRoaXMgaXMgYWxzb1xuICAgY2FsbGVkIGEgZGVzdHJ1Y3Rvci4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYSAiX19kZWxfXygpIiBtZXRob2QsIHRoZVxuICAgZGVyaXZlZCBjbGFzc1wncyAiX19kZWxfXygpIiBtZXRob2QsIGlmIGFueSwgbXVzdCBleHBsaWNpdGx5IGNhbGwgaXRcbiAgIHRvIGVuc3VyZSBwcm9wZXIgZGVsZXRpb24gb2YgdGhlIGJhc2UgY2xhc3MgcGFydCBvZiB0aGUgaW5zdGFuY2UuXG4gICBOb3RlIHRoYXQgaXQgaXMgcG9zc2libGUgKHRob3VnaCBub3QgcmVjb21tZW5kZWQhKSBmb3IgdGhlXG4gICAiX19kZWxfXygpIiBtZXRob2QgdG8gcG9zdHBvbmUgZGVzdHJ1Y3Rpb24gb2YgdGhlIGluc3RhbmNlIGJ5XG4gICBjcmVhdGluZyBhIG5ldyByZWZlcmVuY2UgdG8gaXQuICBJdCBtYXkgdGhlbiBiZSBjYWxsZWQgYXQgYSBsYXRlclxuICAgdGltZSB3aGVuIHRoaXMgbmV3IHJlZmVyZW5jZSBpcyBkZWxldGVkLiAgSXQgaXMgbm90IGd1YXJhbnRlZWQgdGhhdFxuICAgIl9fZGVsX18oKSIgbWV0aG9kcyBhcmUgY2FsbGVkIGZvciBvYmplY3RzIHRoYXQgc3RpbGwgZXhpc3Qgd2hlblxuICAgdGhlIGludGVycHJldGVyIGV4aXRzLlxuXG4gICBOb3RlOiAiZGVsIHgiIGRvZXNuXCd0IGRpcmVjdGx5IGNhbGwgInguX19kZWxfXygpIiAtLS0gdGhlIGZvcm1lclxuICAgICBkZWNyZW1lbnRzIHRoZSByZWZlcmVuY2UgY291bnQgZm9yICJ4IiBieSBvbmUsIGFuZCB0aGUgbGF0dGVyIGlzXG4gICAgIG9ubHkgY2FsbGVkIHdoZW4gIngiXCdzIHJlZmVyZW5jZSBjb3VudCByZWFjaGVzIHplcm8uICBTb21lIGNvbW1vblxuICAgICBzaXR1YXRpb25zIHRoYXQgbWF5IHByZXZlbnQgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiBhbiBvYmplY3QgZnJvbVxuICAgICBnb2luZyB0byB6ZXJvIGluY2x1ZGU6IGNpcmN1bGFyIHJlZmVyZW5jZXMgYmV0d2VlbiBvYmplY3RzIChlLmcuLFxuICAgICBhIGRvdWJseS1saW5rZWQgbGlzdCBvciBhIHRyZWUgZGF0YSBzdHJ1Y3R1cmUgd2l0aCBwYXJlbnQgYW5kXG4gICAgIGNoaWxkIHBvaW50ZXJzKTsgYSByZWZlcmVuY2UgdG8gdGhlIG9iamVjdCBvbiB0aGUgc3RhY2sgZnJhbWUgb2ZcbiAgICAgYSBmdW5jdGlvbiB0aGF0IGNhdWdodCBhbiBleGNlcHRpb24gKHRoZSB0cmFjZWJhY2sgc3RvcmVkIGluXG4gICAgICJzeXMuZXhjX2luZm8oKVsyXSIga2VlcHMgdGhlIHN0YWNrIGZyYW1lIGFsaXZlKTsgb3IgYSByZWZlcmVuY2VcbiAgICAgdG8gdGhlIG9iamVjdCBvbiB0aGUgc3RhY2sgZnJhbWUgdGhhdCByYWlzZWQgYW4gdW5oYW5kbGVkXG4gICAgIGV4Y2VwdGlvbiBpbiBpbnRlcmFjdGl2ZSBtb2RlICh0aGUgdHJhY2ViYWNrIHN0b3JlZCBpblxuICAgICAic3lzLmxhc3RfdHJhY2ViYWNrIiBrZWVwcyB0aGUgc3RhY2sgZnJhbWUgYWxpdmUpLiAgVGhlIGZpcnN0XG4gICAgIHNpdHVhdGlvbiBjYW4gb25seSBiZSByZW1lZGllZCBieSBleHBsaWNpdGx5IGJyZWFraW5nIHRoZSBjeWNsZXM7XG4gICAgIHRoZSBzZWNvbmQgY2FuIGJlIHJlc29sdmVkIGJ5IGZyZWVpbmcgdGhlIHJlZmVyZW5jZSB0byB0aGVcbiAgICAgdHJhY2ViYWNrIG9iamVjdCB3aGVuIGl0IGlzIG5vIGxvbmdlciB1c2VmdWwsIGFuZCB0aGUgdGhpcmQgY2FuXG4gICAgIGJlIHJlc29sdmVkIGJ5IHN0b3JpbmcgIk5vbmUiIGluICJzeXMubGFzdF90cmFjZWJhY2siLiBDaXJjdWxhclxuICAgICByZWZlcmVuY2VzIHdoaWNoIGFyZSBnYXJiYWdlIGFyZSBkZXRlY3RlZCBhbmQgY2xlYW5lZCB1cCB3aGVuIHRoZVxuICAgICBjeWNsaWMgZ2FyYmFnZSBjb2xsZWN0b3IgaXMgZW5hYmxlZCAoaXRcJ3Mgb24gYnkgZGVmYXVsdCkuIFJlZmVyXG4gICAgIHRvIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgImdjIiBtb2R1bGUgZm9yIG1vcmUgaW5mb3JtYXRpb25cbiAgICAgYWJvdXQgdGhpcyB0b3BpYy5cblxuICAgV2FybmluZzogRHVlIHRvIHRoZSBwcmVjYXJpb3VzIGNpcmN1bXN0YW5jZXMgdW5kZXIgd2hpY2hcbiAgICAgIl9fZGVsX18oKSIgbWV0aG9kcyBhcmUgaW52b2tlZCwgZXhjZXB0aW9ucyB0aGF0IG9jY3VyIGR1cmluZ1xuICAgICB0aGVpciBleGVjdXRpb24gYXJlIGlnbm9yZWQsIGFuZCBhIHdhcm5pbmcgaXMgcHJpbnRlZCB0b1xuICAgICAic3lzLnN0ZGVyciIgaW5zdGVhZC4gQWxzbywgd2hlbiAiX19kZWxfXygpIiBpcyBpbnZva2VkIGluXG4gICAgIHJlc3BvbnNlIHRvIGEgbW9kdWxlIGJlaW5nIGRlbGV0ZWQgKGUuZy4sIHdoZW4gZXhlY3V0aW9uIG9mIHRoZVxuICAgICBwcm9ncmFtIGlzIGRvbmUpLCBvdGhlciBnbG9iYWxzIHJlZmVyZW5jZWQgYnkgdGhlICJfX2RlbF9fKCkiXG4gICAgIG1ldGhvZCBtYXkgYWxyZWFkeSBoYXZlIGJlZW4gZGVsZXRlZCBvciBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZ1xuICAgICB0b3JuIGRvd24gKGUuZy4gdGhlIGltcG9ydCBtYWNoaW5lcnkgc2h1dHRpbmcgZG93bikuICBGb3IgdGhpc1xuICAgICByZWFzb24sICJfX2RlbF9fKCkiIG1ldGhvZHMgc2hvdWxkIGRvIHRoZSBhYnNvbHV0ZSBtaW5pbXVtIG5lZWRlZFxuICAgICB0byBtYWludGFpbiBleHRlcm5hbCBpbnZhcmlhbnRzLiAgU3RhcnRpbmcgd2l0aCB2ZXJzaW9uIDEuNSxcbiAgICAgUHl0aG9uIGd1YXJhbnRlZXMgdGhhdCBnbG9iYWxzIHdob3NlIG5hbWUgYmVnaW5zIHdpdGggYSBzaW5nbGVcbiAgICAgdW5kZXJzY29yZSBhcmUgZGVsZXRlZCBmcm9tIHRoZWlyIG1vZHVsZSBiZWZvcmUgb3RoZXIgZ2xvYmFscyBhcmVcbiAgICAgZGVsZXRlZDsgaWYgbm8gb3RoZXIgcmVmZXJlbmNlcyB0byBzdWNoIGdsb2JhbHMgZXhpc3QsIHRoaXMgbWF5XG4gICAgIGhlbHAgaW4gYXNzdXJpbmcgdGhhdCBpbXBvcnRlZCBtb2R1bGVzIGFyZSBzdGlsbCBhdmFpbGFibGUgYXQgdGhlXG4gICAgIHRpbWUgd2hlbiB0aGUgIl9fZGVsX18oKSIgbWV0aG9kIGlzIGNhbGxlZC5cblxub2JqZWN0Ll9fcmVwcl9fKHNlbGYpXG5cbiAgIENhbGxlZCBieSB0aGUgInJlcHIoKSIgYnVpbHQtaW4gZnVuY3Rpb24gdG8gY29tcHV0ZSB0aGUgIm9mZmljaWFsIlxuICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gIElmIGF0IGFsbCBwb3NzaWJsZSwgdGhpc1xuICAgc2hvdWxkIGxvb2sgbGlrZSBhIHZhbGlkIFB5dGhvbiBleHByZXNzaW9uIHRoYXQgY291bGQgYmUgdXNlZCB0b1xuICAgcmVjcmVhdGUgYW4gb2JqZWN0IHdpdGggdGhlIHNhbWUgdmFsdWUgKGdpdmVuIGFuIGFwcHJvcHJpYXRlXG4gICBlbnZpcm9ubWVudCkuICBJZiB0aGlzIGlzIG5vdCBwb3NzaWJsZSwgYSBzdHJpbmcgb2YgdGhlIGZvcm1cbiAgICI8Li4uc29tZSB1c2VmdWwgZGVzY3JpcHRpb24uLi4+IiBzaG91bGQgYmUgcmV0dXJuZWQuIFRoZSByZXR1cm5cbiAgIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2JqZWN0LiBJZiBhIGNsYXNzIGRlZmluZXMgIl9fcmVwcl9fKCkiIGJ1dFxuICAgbm90ICJfX3N0cl9fKCkiLCB0aGVuICJfX3JlcHJfXygpIiBpcyBhbHNvIHVzZWQgd2hlbiBhbiAiaW5mb3JtYWwiXG4gICBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgaW5zdGFuY2VzIG9mIHRoYXQgY2xhc3MgaXMgcmVxdWlyZWQuXG5cbiAgIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgZm9yIGRlYnVnZ2luZywgc28gaXQgaXMgaW1wb3J0YW50IHRoYXQgdGhlXG4gICByZXByZXNlbnRhdGlvbiBpcyBpbmZvcm1hdGlvbi1yaWNoIGFuZCB1bmFtYmlndW91cy5cblxub2JqZWN0Ll9fc3RyX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5ICJzdHIob2JqZWN0KSIgYW5kIHRoZSBidWlsdC1pbiBmdW5jdGlvbnMgImZvcm1hdCgpIiBhbmRcbiAgICJwcmludCgpIiB0byBjb21wdXRlIHRoZSAiaW5mb3JtYWwiIG9yIG5pY2VseSBwcmludGFibGUgc3RyaW5nXG4gICByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuICBUaGUgcmV0dXJuIHZhbHVlIG11c3QgYmUgYSAqc3RyaW5nKlxuICAgb2JqZWN0LlxuXG4gICBUaGlzIG1ldGhvZCBkaWZmZXJzIGZyb20gIm9iamVjdC5fX3JlcHJfXygpIiBpbiB0aGF0IHRoZXJlIGlzIG5vXG4gICBleHBlY3RhdGlvbiB0aGF0ICJfX3N0cl9fKCkiIHJldHVybiBhIHZhbGlkIFB5dGhvbiBleHByZXNzaW9uOiBhXG4gICBtb3JlIGNvbnZlbmllbnQgb3IgY29uY2lzZSByZXByZXNlbnRhdGlvbiBjYW4gYmUgdXNlZC5cblxuICAgVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gZGVmaW5lZCBieSB0aGUgYnVpbHQtaW4gdHlwZSAib2JqZWN0IlxuICAgY2FsbHMgIm9iamVjdC5fX3JlcHJfXygpIi5cblxub2JqZWN0Ll9fYnl0ZXNfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgImJ5dGVzKCkiIHRvIGNvbXB1dGUgYSBieXRlLXN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhblxuICAgb2JqZWN0LiBUaGlzIHNob3VsZCByZXR1cm4gYSAiYnl0ZXMiIG9iamVjdC5cblxub2JqZWN0Ll9fZm9ybWF0X18oc2VsZiwgZm9ybWF0X3NwZWMpXG5cbiAgIENhbGxlZCBieSB0aGUgImZvcm1hdCgpIiBidWlsdC1pbiBmdW5jdGlvbiAoYW5kIGJ5IGV4dGVuc2lvbiwgdGhlXG4gICAic3RyLmZvcm1hdCgpIiBtZXRob2Qgb2YgY2xhc3MgInN0ciIpIHRvIHByb2R1Y2UgYSAiZm9ybWF0dGVkIlxuICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gVGhlICJmb3JtYXRfc3BlYyIgYXJndW1lbnQgaXMgYVxuICAgc3RyaW5nIHRoYXQgY29udGFpbnMgYSBkZXNjcmlwdGlvbiBvZiB0aGUgZm9ybWF0dGluZyBvcHRpb25zXG4gICBkZXNpcmVkLiBUaGUgaW50ZXJwcmV0YXRpb24gb2YgdGhlICJmb3JtYXRfc3BlYyIgYXJndW1lbnQgaXMgdXAgdG9cbiAgIHRoZSB0eXBlIGltcGxlbWVudGluZyAiX19mb3JtYXRfXygpIiwgaG93ZXZlciBtb3N0IGNsYXNzZXMgd2lsbFxuICAgZWl0aGVyIGRlbGVnYXRlIGZvcm1hdHRpbmcgdG8gb25lIG9mIHRoZSBidWlsdC1pbiB0eXBlcywgb3IgdXNlIGFcbiAgIHNpbWlsYXIgZm9ybWF0dGluZyBvcHRpb24gc3ludGF4LlxuXG4gICBTZWUgKkZvcm1hdCBTcGVjaWZpY2F0aW9uIE1pbmktTGFuZ3VhZ2UqIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZVxuICAgc3RhbmRhcmQgZm9ybWF0dGluZyBzeW50YXguXG5cbiAgIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvYmplY3QuXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjQ6IFRoZSBfX2Zvcm1hdF9fIG1ldGhvZCBvZiAib2JqZWN0IiBpdHNlbGZcbiAgIHJhaXNlcyBhICJUeXBlRXJyb3IiIGlmIHBhc3NlZCBhbnkgbm9uLWVtcHR5IHN0cmluZy5cblxub2JqZWN0Ll9fbHRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2xlX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19lcV9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbmVfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2d0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19nZV9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBhcmUgdGhlIHNvLWNhbGxlZCAicmljaCBjb21wYXJpc29uIiBtZXRob2RzLiBUaGVcbiAgIGNvcnJlc3BvbmRlbmNlIGJldHdlZW4gb3BlcmF0b3Igc3ltYm9scyBhbmQgbWV0aG9kIG5hbWVzIGlzIGFzXG4gICBmb2xsb3dzOiAieDx5IiBjYWxscyAieC5fX2x0X18oeSkiLCAieDw9eSIgY2FsbHMgInguX19sZV9fKHkpIixcbiAgICJ4PT15IiBjYWxscyAieC5fX2VxX18oeSkiLCAieCE9eSIgY2FsbHMgInguX19uZV9fKHkpIiwgIng+eSIgY2FsbHNcbiAgICJ4Ll9fZ3RfXyh5KSIsIGFuZCAieD49eSIgY2FsbHMgInguX19nZV9fKHkpIi5cblxuICAgQSByaWNoIGNvbXBhcmlzb24gbWV0aG9kIG1heSByZXR1cm4gdGhlIHNpbmdsZXRvbiAiTm90SW1wbGVtZW50ZWQiXG4gICBpZiBpdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIG9wZXJhdGlvbiBmb3IgYSBnaXZlbiBwYWlyIG9mXG4gICBhcmd1bWVudHMuIEJ5IGNvbnZlbnRpb24sICJGYWxzZSIgYW5kICJUcnVlIiBhcmUgcmV0dXJuZWQgZm9yIGFcbiAgIHN1Y2Nlc3NmdWwgY29tcGFyaXNvbi4gSG93ZXZlciwgdGhlc2UgbWV0aG9kcyBjYW4gcmV0dXJuIGFueSB2YWx1ZSxcbiAgIHNvIGlmIHRoZSBjb21wYXJpc29uIG9wZXJhdG9yIGlzIHVzZWQgaW4gYSBCb29sZWFuIGNvbnRleHQgKGUuZy4sXG4gICBpbiB0aGUgY29uZGl0aW9uIG9mIGFuICJpZiIgc3RhdGVtZW50KSwgUHl0aG9uIHdpbGwgY2FsbCAiYm9vbCgpIlxuICAgb24gdGhlIHZhbHVlIHRvIGRldGVybWluZSBpZiB0aGUgcmVzdWx0IGlzIHRydWUgb3IgZmFsc2UuXG5cbiAgIEJ5IGRlZmF1bHQsICJfX25lX18oKSIgZGVsZWdhdGVzIHRvICJfX2VxX18oKSIgYW5kIGludmVydHMgdGhlXG4gICByZXN1bHQgdW5sZXNzIGl0IGlzICJOb3RJbXBsZW1lbnRlZCIuICBUaGVyZSBhcmUgbm8gb3RoZXIgaW1wbGllZFxuICAgcmVsYXRpb25zaGlwcyBhbW9uZyB0aGUgY29tcGFyaXNvbiBvcGVyYXRvcnMsIGZvciBleGFtcGxlLCB0aGVcbiAgIHRydXRoIG9mICIoeDx5IG9yIHg9PXkpIiBkb2VzIG5vdCBpbXBseSAieDw9eSIuIFRvIGF1dG9tYXRpY2FsbHlcbiAgIGdlbmVyYXRlIG9yZGVyaW5nIG9wZXJhdGlvbnMgZnJvbSBhIHNpbmdsZSByb290IG9wZXJhdGlvbiwgc2VlXG4gICAiZnVuY3Rvb2xzLnRvdGFsX29yZGVyaW5nKCkiLlxuXG4gICBTZWUgdGhlIHBhcmFncmFwaCBvbiAiX19oYXNoX18oKSIgZm9yIHNvbWUgaW1wb3J0YW50IG5vdGVzIG9uXG4gICBjcmVhdGluZyAqaGFzaGFibGUqIG9iamVjdHMgd2hpY2ggc3VwcG9ydCBjdXN0b20gY29tcGFyaXNvblxuICAgb3BlcmF0aW9ucyBhbmQgYXJlIHVzYWJsZSBhcyBkaWN0aW9uYXJ5IGtleXMuXG5cbiAgIFRoZXJlIGFyZSBubyBzd2FwcGVkLWFyZ3VtZW50IHZlcnNpb25zIG9mIHRoZXNlIG1ldGhvZHMgKHRvIGJlIHVzZWRcbiAgIHdoZW4gdGhlIGxlZnQgYXJndW1lbnQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgb3BlcmF0aW9uIGJ1dCB0aGUgcmlnaHRcbiAgIGFyZ3VtZW50IGRvZXMpOyByYXRoZXIsICJfX2x0X18oKSIgYW5kICJfX2d0X18oKSIgYXJlIGVhY2ggb3RoZXJcJ3NcbiAgIHJlZmxlY3Rpb24sICJfX2xlX18oKSIgYW5kICJfX2dlX18oKSIgYXJlIGVhY2ggb3RoZXJcJ3MgcmVmbGVjdGlvbixcbiAgIGFuZCAiX19lcV9fKCkiIGFuZCAiX19uZV9fKCkiIGFyZSB0aGVpciBvd24gcmVmbGVjdGlvbi4gSWYgdGhlXG4gICBvcGVyYW5kcyBhcmUgb2YgZGlmZmVyZW50IHR5cGVzLCBhbmQgcmlnaHQgb3BlcmFuZFwncyB0eXBlIGlzIGFcbiAgIGRpcmVjdCBvciBpbmRpcmVjdCBzdWJjbGFzcyBvZiB0aGUgbGVmdCBvcGVyYW5kXCdzIHR5cGUsIHRoZVxuICAgcmVmbGVjdGVkIG1ldGhvZCBvZiB0aGUgcmlnaHQgb3BlcmFuZCBoYXMgcHJpb3JpdHksIG90aGVyd2lzZSB0aGVcbiAgIGxlZnQgb3BlcmFuZFwncyBtZXRob2QgaGFzIHByaW9yaXR5LiAgVmlydHVhbCBzdWJjbGFzc2luZyBpcyBub3RcbiAgIGNvbnNpZGVyZWQuXG5cbm9iamVjdC5fX2hhc2hfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgYnVpbHQtaW4gZnVuY3Rpb24gImhhc2goKSIgYW5kIGZvciBvcGVyYXRpb25zIG9uIG1lbWJlcnNcbiAgIG9mIGhhc2hlZCBjb2xsZWN0aW9ucyBpbmNsdWRpbmcgInNldCIsICJmcm96ZW5zZXQiLCBhbmQgImRpY3QiLlxuICAgIl9faGFzaF9fKCkiIHNob3VsZCByZXR1cm4gYW4gaW50ZWdlci4gIFRoZSBvbmx5IHJlcXVpcmVkIHByb3BlcnR5XG4gICBpcyB0aGF0IG9iamVjdHMgd2hpY2ggY29tcGFyZSBlcXVhbCBoYXZlIHRoZSBzYW1lIGhhc2ggdmFsdWU7IGl0IGlzXG4gICBhZHZpc2VkIHRvIHNvbWVob3cgbWl4IHRvZ2V0aGVyIChlLmcuIHVzaW5nIGV4Y2x1c2l2ZSBvcikgdGhlIGhhc2hcbiAgIHZhbHVlcyBmb3IgdGhlIGNvbXBvbmVudHMgb2YgdGhlIG9iamVjdCB0aGF0IGFsc28gcGxheSBhIHBhcnQgaW5cbiAgIGNvbXBhcmlzb24gb2Ygb2JqZWN0cy5cblxuICAgTm90ZTogImhhc2goKSIgdHJ1bmNhdGVzIHRoZSB2YWx1ZSByZXR1cm5lZCBmcm9tIGFuIG9iamVjdFwnc1xuICAgICBjdXN0b20gIl9faGFzaF9fKCkiIG1ldGhvZCB0byB0aGUgc2l6ZSBvZiBhICJQeV9zc2l6ZV90Ii4gIFRoaXNcbiAgICAgaXMgdHlwaWNhbGx5IDggYnl0ZXMgb24gNjQtYml0IGJ1aWxkcyBhbmQgNCBieXRlcyBvbiAzMi1iaXRcbiAgICAgYnVpbGRzLiBJZiBhbiBvYmplY3RcJ3MgICAiX19oYXNoX18oKSIgbXVzdCBpbnRlcm9wZXJhdGUgb24gYnVpbGRzXG4gICAgIG9mIGRpZmZlcmVudCBiaXQgc2l6ZXMsIGJlIHN1cmUgdG8gY2hlY2sgdGhlIHdpZHRoIG9uIGFsbFxuICAgICBzdXBwb3J0ZWQgYnVpbGRzLiAgQW4gZWFzeSB3YXkgdG8gZG8gdGhpcyBpcyB3aXRoICJweXRob24gLWNcbiAgICAgImltcG9ydCBzeXM7IHByaW50KHN5cy5oYXNoX2luZm8ud2lkdGgpIiIuXG5cbiAgIElmIGEgY2xhc3MgZG9lcyBub3QgZGVmaW5lIGFuICJfX2VxX18oKSIgbWV0aG9kIGl0IHNob3VsZCBub3RcbiAgIGRlZmluZSBhICJfX2hhc2hfXygpIiBvcGVyYXRpb24gZWl0aGVyOyBpZiBpdCBkZWZpbmVzICJfX2VxX18oKSJcbiAgIGJ1dCBub3QgIl9faGFzaF9fKCkiLCBpdHMgaW5zdGFuY2VzIHdpbGwgbm90IGJlIHVzYWJsZSBhcyBpdGVtcyBpblxuICAgaGFzaGFibGUgY29sbGVjdGlvbnMuICBJZiBhIGNsYXNzIGRlZmluZXMgbXV0YWJsZSBvYmplY3RzIGFuZFxuICAgaW1wbGVtZW50cyBhbiAiX19lcV9fKCkiIG1ldGhvZCwgaXQgc2hvdWxkIG5vdCBpbXBsZW1lbnRcbiAgICJfX2hhc2hfXygpIiwgc2luY2UgdGhlIGltcGxlbWVudGF0aW9uIG9mIGhhc2hhYmxlIGNvbGxlY3Rpb25zXG4gICByZXF1aXJlcyB0aGF0IGEga2V5XCdzIGhhc2ggdmFsdWUgaXMgaW1tdXRhYmxlIChpZiB0aGUgb2JqZWN0XCdzIGhhc2hcbiAgIHZhbHVlIGNoYW5nZXMsIGl0IHdpbGwgYmUgaW4gdGhlIHdyb25nIGhhc2ggYnVja2V0KS5cblxuICAgVXNlci1kZWZpbmVkIGNsYXNzZXMgaGF2ZSAiX19lcV9fKCkiIGFuZCAiX19oYXNoX18oKSIgbWV0aG9kcyBieVxuICAgZGVmYXVsdDsgd2l0aCB0aGVtLCBhbGwgb2JqZWN0cyBjb21wYXJlIHVuZXF1YWwgKGV4Y2VwdCB3aXRoXG4gICB0aGVtc2VsdmVzKSBhbmQgInguX19oYXNoX18oKSIgcmV0dXJucyBhbiBhcHByb3ByaWF0ZSB2YWx1ZSBzdWNoXG4gICB0aGF0ICJ4ID09IHkiIGltcGxpZXMgYm90aCB0aGF0ICJ4IGlzIHkiIGFuZCAiaGFzaCh4KSA9PSBoYXNoKHkpIi5cblxuICAgQSBjbGFzcyB0aGF0IG92ZXJyaWRlcyAiX19lcV9fKCkiIGFuZCBkb2VzIG5vdCBkZWZpbmUgIl9faGFzaF9fKCkiXG4gICB3aWxsIGhhdmUgaXRzICJfX2hhc2hfXygpIiBpbXBsaWNpdGx5IHNldCB0byAiTm9uZSIuICBXaGVuIHRoZVxuICAgIl9faGFzaF9fKCkiIG1ldGhvZCBvZiBhIGNsYXNzIGlzICJOb25lIiwgaW5zdGFuY2VzIG9mIHRoZSBjbGFzc1xuICAgd2lsbCByYWlzZSBhbiBhcHByb3ByaWF0ZSAiVHlwZUVycm9yIiB3aGVuIGEgcHJvZ3JhbSBhdHRlbXB0cyB0b1xuICAgcmV0cmlldmUgdGhlaXIgaGFzaCB2YWx1ZSwgYW5kIHdpbGwgYWxzbyBiZSBjb3JyZWN0bHkgaWRlbnRpZmllZCBhc1xuICAgdW5oYXNoYWJsZSB3aGVuIGNoZWNraW5nICJpc2luc3RhbmNlKG9iaiwgY29sbGVjdGlvbnMuSGFzaGFibGUpIi5cblxuICAgSWYgYSBjbGFzcyB0aGF0IG92ZXJyaWRlcyAiX19lcV9fKCkiIG5lZWRzIHRvIHJldGFpbiB0aGVcbiAgIGltcGxlbWVudGF0aW9uIG9mICJfX2hhc2hfXygpIiBmcm9tIGEgcGFyZW50IGNsYXNzLCB0aGUgaW50ZXJwcmV0ZXJcbiAgIG11c3QgYmUgdG9sZCB0aGlzIGV4cGxpY2l0bHkgYnkgc2V0dGluZyAiX19oYXNoX18gPVxuICAgPFBhcmVudENsYXNzPi5fX2hhc2hfXyIuXG5cbiAgIElmIGEgY2xhc3MgdGhhdCBkb2VzIG5vdCBvdmVycmlkZSAiX19lcV9fKCkiIHdpc2hlcyB0byBzdXBwcmVzc1xuICAgaGFzaCBzdXBwb3J0LCBpdCBzaG91bGQgaW5jbHVkZSAiX19oYXNoX18gPSBOb25lIiBpbiB0aGUgY2xhc3NcbiAgIGRlZmluaXRpb24uIEEgY2xhc3Mgd2hpY2ggZGVmaW5lcyBpdHMgb3duICJfX2hhc2hfXygpIiB0aGF0XG4gICBleHBsaWNpdGx5IHJhaXNlcyBhICJUeXBlRXJyb3IiIHdvdWxkIGJlIGluY29ycmVjdGx5IGlkZW50aWZpZWQgYXNcbiAgIGhhc2hhYmxlIGJ5IGFuICJpc2luc3RhbmNlKG9iaiwgY29sbGVjdGlvbnMuSGFzaGFibGUpIiBjYWxsLlxuXG4gICBOb3RlOiBCeSBkZWZhdWx0LCB0aGUgIl9faGFzaF9fKCkiIHZhbHVlcyBvZiBzdHIsIGJ5dGVzIGFuZFxuICAgICBkYXRldGltZSBvYmplY3RzIGFyZSAic2FsdGVkIiB3aXRoIGFuIHVucHJlZGljdGFibGUgcmFuZG9tIHZhbHVlLlxuICAgICBBbHRob3VnaCB0aGV5IHJlbWFpbiBjb25zdGFudCB3aXRoaW4gYW4gaW5kaXZpZHVhbCBQeXRob25cbiAgICAgcHJvY2VzcywgdGhleSBhcmUgbm90IHByZWRpY3RhYmxlIGJldHdlZW4gcmVwZWF0ZWQgaW52b2NhdGlvbnMgb2ZcbiAgICAgUHl0aG9uLlRoaXMgaXMgaW50ZW5kZWQgdG8gcHJvdmlkZSBwcm90ZWN0aW9uIGFnYWluc3QgYSBkZW5pYWwtXG4gICAgIG9mLXNlcnZpY2UgY2F1c2VkIGJ5IGNhcmVmdWxseS1jaG9zZW4gaW5wdXRzIHRoYXQgZXhwbG9pdCB0aGVcbiAgICAgd29yc3QgY2FzZSBwZXJmb3JtYW5jZSBvZiBhIGRpY3QgaW5zZXJ0aW9uLCBPKG5eMikgY29tcGxleGl0eS5cbiAgICAgU2VlIGh0dHA6Ly93d3cub2NlcnQub3JnL2Fkdmlzb3JpZXMvb2NlcnQtMjAxMS0wMDMuaHRtbCBmb3JcbiAgICAgZGV0YWlscy5DaGFuZ2luZyBoYXNoIHZhbHVlcyBhZmZlY3RzIHRoZSBpdGVyYXRpb24gb3JkZXIgb2ZcbiAgICAgZGljdHMsIHNldHMgYW5kIG90aGVyIG1hcHBpbmdzLiAgUHl0aG9uIGhhcyBuZXZlciBtYWRlIGd1YXJhbnRlZXNcbiAgICAgYWJvdXQgdGhpcyBvcmRlcmluZyAoYW5kIGl0IHR5cGljYWxseSB2YXJpZXMgYmV0d2VlbiAzMi1iaXQgYW5kXG4gICAgIDY0LWJpdCBidWlsZHMpLlNlZSBhbHNvICJQWVRIT05IQVNIU0VFRCIuXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IEhhc2ggcmFuZG9taXphdGlvbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuXG5cbm9iamVjdC5fX2Jvb2xfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IHRydXRoIHZhbHVlIHRlc3RpbmcgYW5kIHRoZSBidWlsdC1pbiBvcGVyYXRpb25cbiAgICJib29sKCkiOyBzaG91bGQgcmV0dXJuICJGYWxzZSIgb3IgIlRydWUiLiAgV2hlbiB0aGlzIG1ldGhvZCBpcyBub3RcbiAgIGRlZmluZWQsICJfX2xlbl9fKCkiIGlzIGNhbGxlZCwgaWYgaXQgaXMgZGVmaW5lZCwgYW5kIHRoZSBvYmplY3QgaXNcbiAgIGNvbnNpZGVyZWQgdHJ1ZSBpZiBpdHMgcmVzdWx0IGlzIG5vbnplcm8uICBJZiBhIGNsYXNzIGRlZmluZXNcbiAgIG5laXRoZXIgIl9fbGVuX18oKSIgbm9yICJfX2Jvb2xfXygpIiwgYWxsIGl0cyBpbnN0YW5jZXMgYXJlXG4gICBjb25zaWRlcmVkIHRydWUuXG4nLAotICdkZWJ1Z2dlcic6IHUnXG4icGRiIiAtLS0gVGhlIFB5dGhvbiBEZWJ1Z2dlclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuKipTb3VyY2UgY29kZToqKiBMaWIvcGRiLnB5XG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIG1vZHVsZSAicGRiIiBkZWZpbmVzIGFuIGludGVyYWN0aXZlIHNvdXJjZSBjb2RlIGRlYnVnZ2VyIGZvclxuUHl0aG9uIHByb2dyYW1zLiAgSXQgc3VwcG9ydHMgc2V0dGluZyAoY29uZGl0aW9uYWwpIGJyZWFrcG9pbnRzIGFuZFxuc2luZ2xlIHN0ZXBwaW5nIGF0IHRoZSBzb3VyY2UgbGluZSBsZXZlbCwgaW5zcGVjdGlvbiBvZiBzdGFjayBmcmFtZXMsXG5zb3VyY2UgY29kZSBsaXN0aW5nLCBhbmQgZXZhbHVhdGlvbiBvZiBhcmJpdHJhcnkgUHl0aG9uIGNvZGUgaW4gdGhlXG5jb250ZXh0IG9mIGFueSBzdGFjayBmcmFtZS4gIEl0IGFsc28gc3VwcG9ydHMgcG9zdC1tb3J0ZW0gZGVidWdnaW5nXG5hbmQgY2FuIGJlIGNhbGxlZCB1bmRlciBwcm9ncmFtIGNvbnRyb2wuXG5cblRoZSBkZWJ1Z2dlciBpcyBleHRlbnNpYmxlIC0tIGl0IGlzIGFjdHVhbGx5IGRlZmluZWQgYXMgdGhlIGNsYXNzXG4iUGRiIi4gVGhpcyBpcyBjdXJyZW50bHkgdW5kb2N1bWVudGVkIGJ1dCBlYXNpbHkgdW5kZXJzdG9vZCBieSByZWFkaW5nXG50aGUgc291cmNlLiAgVGhlIGV4dGVuc2lvbiBpbnRlcmZhY2UgdXNlcyB0aGUgbW9kdWxlcyAiYmRiIiBhbmQgImNtZCIuXG5cblRoZSBkZWJ1Z2dlclwncyBwcm9tcHQgaXMgIihQZGIpIi4gVHlwaWNhbCB1c2FnZSB0byBydW4gYSBwcm9ncmFtIHVuZGVyXG5jb250cm9sIG9mIHRoZSBkZWJ1Z2dlciBpczpcblxuICAgPj4+IGltcG9ydCBwZGJcbiAgID4+PiBpbXBvcnQgbXltb2R1bGVcbiAgID4+PiBwZGIucnVuKFwnbXltb2R1bGUudGVzdCgpXCcpXG4gICA+IDxzdHJpbmc+KDApPygpXG4gICAoUGRiKSBjb250aW51ZVxuICAgPiA8c3RyaW5nPigxKT8oKVxuICAgKFBkYikgY29udGludWVcbiAgIE5hbWVFcnJvcjogXCdzcGFtXCdcbiAgID4gPHN0cmluZz4oMSk/KClcbiAgIChQZGIpXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IFRhYi1jb21wbGV0aW9uIHZpYSB0aGUgInJlYWRsaW5lIiBtb2R1bGUgaXNcbmF2YWlsYWJsZSBmb3IgY29tbWFuZHMgYW5kIGNvbW1hbmQgYXJndW1lbnRzLCBlLmcuIHRoZSBjdXJyZW50IGdsb2JhbFxuYW5kIGxvY2FsIG5hbWVzIGFyZSBvZmZlcmVkIGFzIGFyZ3VtZW50cyBvZiB0aGUgInAiIGNvbW1hbmQuXG5cbiJwZGIucHkiIGNhbiBhbHNvIGJlIGludm9rZWQgYXMgYSBzY3JpcHQgdG8gZGVidWcgb3RoZXIgc2NyaXB0cy4gIEZvclxuZXhhbXBsZTpcblxuICAgcHl0aG9uMyAtbSBwZGIgbXlzY3JpcHQucHlcblxuV2hlbiBpbnZva2VkIGFzIGEgc2NyaXB0LCBwZGIgd2lsbCBhdXRvbWF0aWNhbGx5IGVudGVyIHBvc3QtbW9ydGVtXG5kZWJ1Z2dpbmcgaWYgdGhlIHByb2dyYW0gYmVpbmcgZGVidWdnZWQgZXhpdHMgYWJub3JtYWxseS4gIEFmdGVyIHBvc3QtXG5tb3J0ZW0gZGVidWdnaW5nIChvciBhZnRlciBub3JtYWwgZXhpdCBvZiB0aGUgcHJvZ3JhbSksIHBkYiB3aWxsXG5yZXN0YXJ0IHRoZSBwcm9ncmFtLiAgQXV0b21hdGljIHJlc3RhcnRpbmcgcHJlc2VydmVzIHBkYlwncyBzdGF0ZSAoc3VjaFxuYXMgYnJlYWtwb2ludHMpIGFuZCBpbiBtb3N0IGNhc2VzIGlzIG1vcmUgdXNlZnVsIHRoYW4gcXVpdHRpbmcgdGhlXG5kZWJ1Z2dlciB1cG9uIHByb2dyYW1cJ3MgZXhpdC5cblxuTmV3IGluIHZlcnNpb24gMy4yOiAicGRiLnB5IiBub3cgYWNjZXB0cyBhICItYyIgb3B0aW9uIHRoYXQgZXhlY3V0ZXNcbmNvbW1hbmRzIGFzIGlmIGdpdmVuIGluIGEgIi5wZGJyYyIgZmlsZSwgc2VlICpEZWJ1Z2dlciBDb21tYW5kcyouXG5cblRoZSB0eXBpY2FsIHVzYWdlIHRvIGJyZWFrIGludG8gdGhlIGRlYnVnZ2VyIGZyb20gYSBydW5uaW5nIHByb2dyYW0gaXNcbnRvIGluc2VydFxuXG4gICBpbXBvcnQgcGRiOyBwZGIuc2V0X3RyYWNlKClcblxuYXQgdGhlIGxvY2F0aW9uIHlvdSB3YW50IHRvIGJyZWFrIGludG8gdGhlIGRlYnVnZ2VyLiAgWW91IGNhbiB0aGVuXG5zdGVwIHRocm91Z2ggdGhlIGNvZGUgZm9sbG93aW5nIHRoaXMgc3RhdGVtZW50LCBhbmQgY29udGludWUgcnVubmluZ1xud2l0aG91dCB0aGUgZGVidWdnZXIgdXNpbmcgdGhlICJjb250aW51ZSIgY29tbWFuZC5cblxuVGhlIHR5cGljYWwgdXNhZ2UgdG8gaW5zcGVjdCBhIGNyYXNoZWQgcHJvZ3JhbSBpczpcblxuICAgPj4+IGltcG9ydCBwZGJcbiAgID4+PiBpbXBvcnQgbXltb2R1bGVcbiAgID4+PiBteW1vZHVsZS50ZXN0KClcbiAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbiAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gP1xuICAgICBGaWxlICIuL215bW9kdWxlLnB5IiwgbGluZSA0LCBpbiB0ZXN0XG4gICAgICAgdGVzdDIoKVxuICAgICBGaWxlICIuL215bW9kdWxlLnB5IiwgbGluZSAzLCBpbiB0ZXN0MlxuICAgICAgIHByaW50KHNwYW0pXG4gICBOYW1lRXJyb3I6IHNwYW1cbiAgID4+PiBwZGIucG0oKVxuICAgPiAuL215bW9kdWxlLnB5KDMpdGVzdDIoKVxuICAgLT4gcHJpbnQoc3BhbSlcbiAgIChQZGIpXG5cblRoZSBtb2R1bGUgZGVmaW5lcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczsgZWFjaCBlbnRlcnMgdGhlIGRlYnVnZ2VyXG5pbiBhIHNsaWdodGx5IGRpZmZlcmVudCB3YXk6XG5cbnBkYi5ydW4oc3RhdGVtZW50LCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lKVxuXG4gICBFeGVjdXRlIHRoZSAqc3RhdGVtZW50KiAoZ2l2ZW4gYXMgYSBzdHJpbmcgb3IgYSBjb2RlIG9iamVjdCkgdW5kZXJcbiAgIGRlYnVnZ2VyIGNvbnRyb2wuICBUaGUgZGVidWdnZXIgcHJvbXB0IGFwcGVhcnMgYmVmb3JlIGFueSBjb2RlIGlzXG4gICBleGVjdXRlZDsgeW91IGNhbiBzZXQgYnJlYWtwb2ludHMgYW5kIHR5cGUgImNvbnRpbnVlIiwgb3IgeW91IGNhblxuICAgc3RlcCB0aHJvdWdoIHRoZSBzdGF0ZW1lbnQgdXNpbmcgInN0ZXAiIG9yICJuZXh0IiAoYWxsIHRoZXNlXG4gICBjb21tYW5kcyBhcmUgZXhwbGFpbmVkIGJlbG93KS4gIFRoZSBvcHRpb25hbCAqZ2xvYmFscyogYW5kICpsb2NhbHMqXG4gICBhcmd1bWVudHMgc3BlY2lmeSB0aGUgZW52aXJvbm1lbnQgaW4gd2hpY2ggdGhlIGNvZGUgaXMgZXhlY3V0ZWQ7IGJ5XG4gICBkZWZhdWx0IHRoZSBkaWN0aW9uYXJ5IG9mIHRoZSBtb2R1bGUgIl9fbWFpbl9fIiBpcyB1c2VkLiAgKFNlZSB0aGVcbiAgIGV4cGxhbmF0aW9uIG9mIHRoZSBidWlsdC1pbiAiZXhlYygpIiBvciAiZXZhbCgpIiBmdW5jdGlvbnMuKVxuXG5wZGIucnVuZXZhbChleHByZXNzaW9uLCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lKVxuXG4gICBFdmFsdWF0ZSB0aGUgKmV4cHJlc3Npb24qIChnaXZlbiBhcyBhIHN0cmluZyBvciBhIGNvZGUgb2JqZWN0KVxuICAgdW5kZXIgZGVidWdnZXIgY29udHJvbC4gIFdoZW4gInJ1bmV2YWwoKSIgcmV0dXJucywgaXQgcmV0dXJucyB0aGVcbiAgIHZhbHVlIG9mIHRoZSBleHByZXNzaW9uLiAgT3RoZXJ3aXNlIHRoaXMgZnVuY3Rpb24gaXMgc2ltaWxhciB0b1xuICAgInJ1bigpIi5cblxucGRiLnJ1bmNhbGwoZnVuY3Rpb24sICphcmdzLCAqKmt3ZHMpXG5cbiAgIENhbGwgdGhlICpmdW5jdGlvbiogKGEgZnVuY3Rpb24gb3IgbWV0aG9kIG9iamVjdCwgbm90IGEgc3RyaW5nKVxuICAgd2l0aCB0aGUgZ2l2ZW4gYXJndW1lbnRzLiAgV2hlbiAicnVuY2FsbCgpIiByZXR1cm5zLCBpdCByZXR1cm5zXG4gICB3aGF0ZXZlciB0aGUgZnVuY3Rpb24gY2FsbCByZXR1cm5lZC4gIFRoZSBkZWJ1Z2dlciBwcm9tcHQgYXBwZWFyc1xuICAgYXMgc29vbiBhcyB0aGUgZnVuY3Rpb24gaXMgZW50ZXJlZC5cblxucGRiLnNldF90cmFjZSgpXG5cbiAgIEVudGVyIHRoZSBkZWJ1Z2dlciBhdCB0aGUgY2FsbGluZyBzdGFjayBmcmFtZS4gIFRoaXMgaXMgdXNlZnVsIHRvXG4gICBoYXJkLWNvZGUgYSBicmVha3BvaW50IGF0IGEgZ2l2ZW4gcG9pbnQgaW4gYSBwcm9ncmFtLCBldmVuIGlmIHRoZVxuICAgY29kZSBpcyBub3Qgb3RoZXJ3aXNlIGJlaW5nIGRlYnVnZ2VkIChlLmcuIHdoZW4gYW4gYXNzZXJ0aW9uXG4gICBmYWlscykuXG5cbnBkYi5wb3N0X21vcnRlbSh0cmFjZWJhY2s9Tm9uZSlcblxuICAgRW50ZXIgcG9zdC1tb3J0ZW0gZGVidWdnaW5nIG9mIHRoZSBnaXZlbiAqdHJhY2ViYWNrKiBvYmplY3QuICBJZiBub1xuICAgKnRyYWNlYmFjayogaXMgZ2l2ZW4sIGl0IHVzZXMgdGhlIG9uZSBvZiB0aGUgZXhjZXB0aW9uIHRoYXQgaXNcbiAgIGN1cnJlbnRseSBiZWluZyBoYW5kbGVkIChhbiBleGNlcHRpb24gbXVzdCBiZSBiZWluZyBoYW5kbGVkIGlmIHRoZVxuICAgZGVmYXVsdCBpcyB0byBiZSB1c2VkKS5cblxucGRiLnBtKClcblxuICAgRW50ZXIgcG9zdC1tb3J0ZW0gZGVidWdnaW5nIG9mIHRoZSB0cmFjZWJhY2sgZm91bmQgaW5cbiAgICJzeXMubGFzdF90cmFjZWJhY2siLlxuXG5UaGUgInJ1bioiIGZ1bmN0aW9ucyBhbmQgInNldF90cmFjZSgpIiBhcmUgYWxpYXNlcyBmb3IgaW5zdGFudGlhdGluZ1xudGhlICJQZGIiIGNsYXNzIGFuZCBjYWxsaW5nIHRoZSBtZXRob2Qgb2YgdGhlIHNhbWUgbmFtZS4gIElmIHlvdSB3YW50XG50byBhY2Nlc3MgZnVydGhlciBmZWF0dXJlcywgeW91IGhhdmUgdG8gZG8gdGhpcyB5b3Vyc2VsZjpcblxuY2xhc3MgY2xhc3MgcGRiLlBkYihjb21wbGV0ZWtleT1cJ3RhYlwnLCBzdGRpbj1Ob25lLCBzdGRvdXQ9Tm9uZSwgc2tpcD1Ob25lLCBub3NpZ2ludD1GYWxzZSlcblxuICAgIlBkYiIgaXMgdGhlIGRlYnVnZ2VyIGNsYXNzLlxuXG4gICBUaGUgKmNvbXBsZXRla2V5KiwgKnN0ZGluKiBhbmQgKnN0ZG91dCogYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gdGhlXG4gICB1bmRlcmx5aW5nICJjbWQuQ21kIiBjbGFzczsgc2VlIHRoZSBkZXNjcmlwdGlvbiB0aGVyZS5cblxuICAgVGhlICpza2lwKiBhcmd1bWVudCwgaWYgZ2l2ZW4sIG11c3QgYmUgYW4gaXRlcmFibGUgb2YgZ2xvYi1zdHlsZVxuICAgbW9kdWxlIG5hbWUgcGF0dGVybnMuICBUaGUgZGVidWdnZXIgd2lsbCBub3Qgc3RlcCBpbnRvIGZyYW1lcyB0aGF0XG4gICBvcmlnaW5hdGUgaW4gYSBtb2R1bGUgdGhhdCBtYXRjaGVzIG9uZSBvZiB0aGVzZSBwYXR0ZXJucy4gWzFdXG5cbiAgIEJ5IGRlZmF1bHQsIFBkYiBzZXRzIGEgaGFuZGxlciBmb3IgdGhlIFNJR0lOVCBzaWduYWwgKHdoaWNoIGlzIHNlbnRcbiAgIHdoZW4gdGhlIHVzZXIgcHJlc3NlcyAiQ3RybC1DIiBvbiB0aGUgY29uc29sZSkgd2hlbiB5b3UgZ2l2ZSBhXG4gICAiY29udGludWUiIGNvbW1hbmQuIFRoaXMgYWxsb3dzIHlvdSB0byBicmVhayBpbnRvIHRoZSBkZWJ1Z2dlclxuICAgYWdhaW4gYnkgcHJlc3NpbmcgIkN0cmwtQyIuICBJZiB5b3Ugd2FudCBQZGIgbm90IHRvIHRvdWNoIHRoZVxuICAgU0lHSU5UIGhhbmRsZXIsIHNldCAqbm9zaWdpbnQqIHRvdCB0cnVlLlxuXG4gICBFeGFtcGxlIGNhbGwgdG8gZW5hYmxlIHRyYWNpbmcgd2l0aCAqc2tpcCo6XG5cbiAgICAgIGltcG9ydCBwZGI7IHBkYi5QZGIoc2tpcD1bXCdkamFuZ28uKlwnXSkuc2V0X3RyYWNlKClcblxuICAgTmV3IGluIHZlcnNpb24gMy4xOiBUaGUgKnNraXAqIGFyZ3VtZW50LlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjI6IFRoZSAqbm9zaWdpbnQqIGFyZ3VtZW50LiAgUHJldmlvdXNseSwgYSBTSUdJTlRcbiAgIGhhbmRsZXIgd2FzIG5ldmVyIHNldCBieSBQZGIuXG5cbiAgIHJ1bihzdGF0ZW1lbnQsIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpXG4gICBydW5ldmFsKGV4cHJlc3Npb24sIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpXG4gICBydW5jYWxsKGZ1bmN0aW9uLCAqYXJncywgKiprd2RzKVxuICAgc2V0X3RyYWNlKClcblxuICAgICAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgZnVuY3Rpb25zIGV4cGxhaW5lZCBhYm92ZS5cblxuXG5EZWJ1Z2dlciBDb21tYW5kc1xuPT09PT09PT09PT09PT09PT1cblxuVGhlIGNvbW1hbmRzIHJlY29nbml6ZWQgYnkgdGhlIGRlYnVnZ2VyIGFyZSBsaXN0ZWQgYmVsb3cuICBNb3N0XG5jb21tYW5kcyBjYW4gYmUgYWJicmV2aWF0ZWQgdG8gb25lIG9yIHR3byBsZXR0ZXJzIGFzIGluZGljYXRlZDsgZS5nLlxuImgoZWxwKSIgbWVhbnMgdGhhdCBlaXRoZXIgImgiIG9yICJoZWxwIiBjYW4gYmUgdXNlZCB0byBlbnRlciB0aGUgaGVscFxuY29tbWFuZCAoYnV0IG5vdCAiaGUiIG9yICJoZWwiLCBub3IgIkgiIG9yICJIZWxwIiBvciAiSEVMUCIpLlxuQXJndW1lbnRzIHRvIGNvbW1hbmRzIG11c3QgYmUgc2VwYXJhdGVkIGJ5IHdoaXRlc3BhY2UgKHNwYWNlcyBvclxudGFicykuICBPcHRpb25hbCBhcmd1bWVudHMgYXJlIGVuY2xvc2VkIGluIHNxdWFyZSBicmFja2V0cyAoIltdIikgaW5cbnRoZSBjb21tYW5kIHN5bnRheDsgdGhlIHNxdWFyZSBicmFja2V0cyBtdXN0IG5vdCBiZSB0eXBlZC5cbkFsdGVybmF0aXZlcyBpbiB0aGUgY29tbWFuZCBzeW50YXggYXJlIHNlcGFyYXRlZCBieSBhIHZlcnRpY2FsIGJhclxuKCJ8IikuXG5cbkVudGVyaW5nIGEgYmxhbmsgbGluZSByZXBlYXRzIHRoZSBsYXN0IGNvbW1hbmQgZW50ZXJlZC4gIEV4Y2VwdGlvbjogaWZcbnRoZSBsYXN0IGNvbW1hbmQgd2FzIGEgImxpc3QiIGNvbW1hbmQsIHRoZSBuZXh0IDExIGxpbmVzIGFyZSBsaXN0ZWQuXG5cbkNvbW1hbmRzIHRoYXQgdGhlIGRlYnVnZ2VyIGRvZXNuXCd0IHJlY29nbml6ZSBhcmUgYXNzdW1lZCB0byBiZSBQeXRob25cbnN0YXRlbWVudHMgYW5kIGFyZSBleGVjdXRlZCBpbiB0aGUgY29udGV4dCBvZiB0aGUgcHJvZ3JhbSBiZWluZ1xuZGVidWdnZWQuICBQeXRob24gc3RhdGVtZW50cyBjYW4gYWxzbyBiZSBwcmVmaXhlZCB3aXRoIGFuIGV4Y2xhbWF0aW9uXG5wb2ludCAoIiEiKS4gIFRoaXMgaXMgYSBwb3dlcmZ1bCB3YXkgdG8gaW5zcGVjdCB0aGUgcHJvZ3JhbSBiZWluZ1xuZGVidWdnZWQ7IGl0IGlzIGV2ZW4gcG9zc2libGUgdG8gY2hhbmdlIGEgdmFyaWFibGUgb3IgY2FsbCBhIGZ1bmN0aW9uLlxuV2hlbiBhbiBleGNlcHRpb24gb2NjdXJzIGluIHN1Y2ggYSBzdGF0ZW1lbnQsIHRoZSBleGNlcHRpb24gbmFtZSBpc1xucHJpbnRlZCBidXQgdGhlIGRlYnVnZ2VyXCdzIHN0YXRlIGlzIG5vdCBjaGFuZ2VkLlxuXG5UaGUgZGVidWdnZXIgc3VwcG9ydHMgKmFsaWFzZXMqLiAgQWxpYXNlcyBjYW4gaGF2ZSBwYXJhbWV0ZXJzIHdoaWNoXG5hbGxvd3Mgb25lIGEgY2VydGFpbiBsZXZlbCBvZiBhZGFwdGFiaWxpdHkgdG8gdGhlIGNvbnRleHQgdW5kZXJcbmV4YW1pbmF0aW9uLlxuXG5NdWx0aXBsZSBjb21tYW5kcyBtYXkgYmUgZW50ZXJlZCBvbiBhIHNpbmdsZSBsaW5lLCBzZXBhcmF0ZWQgYnkgIjs7Ii5cbihBIHNpbmdsZSAiOyIgaXMgbm90IHVzZWQgYXMgaXQgaXMgdGhlIHNlcGFyYXRvciBmb3IgbXVsdGlwbGUgY29tbWFuZHNcbmluIGEgbGluZSB0aGF0IGlzIHBhc3NlZCB0byB0aGUgUHl0aG9uIHBhcnNlci4pICBObyBpbnRlbGxpZ2VuY2UgaXNcbmFwcGxpZWQgdG8gc2VwYXJhdGluZyB0aGUgY29tbWFuZHM7IHRoZSBpbnB1dCBpcyBzcGxpdCBhdCB0aGUgZmlyc3RcbiI7OyIgcGFpciwgZXZlbiBpZiBpdCBpcyBpbiB0aGUgbWlkZGxlIG9mIGEgcXVvdGVkIHN0cmluZy5cblxuSWYgYSBmaWxlICIucGRicmMiIGV4aXN0cyBpbiB0aGUgdXNlclwncyBob21lIGRpcmVjdG9yeSBvciBpbiB0aGVcbmN1cnJlbnQgZGlyZWN0b3J5LCBpdCBpcyByZWFkIGluIGFuZCBleGVjdXRlZCBhcyBpZiBpdCBoYWQgYmVlbiB0eXBlZFxuYXQgdGhlIGRlYnVnZ2VyIHByb21wdC4gIFRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3IgYWxpYXNlcy4gIElmXG5ib3RoIGZpbGVzIGV4aXN0LCB0aGUgb25lIGluIHRoZSBob21lIGRpcmVjdG9yeSBpcyByZWFkIGZpcnN0IGFuZFxuYWxpYXNlcyBkZWZpbmVkIHRoZXJlIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoZSBsb2NhbCBmaWxlLlxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4yOiAiLnBkYnJjIiBjYW4gbm93IGNvbnRhaW4gY29tbWFuZHMgdGhhdFxuY29udGludWUgZGVidWdnaW5nLCBzdWNoIGFzICJjb250aW51ZSIgb3IgIm5leHQiLiAgUHJldmlvdXNseSwgdGhlc2VcbmNvbW1hbmRzIGhhZCBubyBlZmZlY3QuXG5cbmgoZWxwKSBbY29tbWFuZF1cblxuICAgV2l0aG91dCBhcmd1bWVudCwgcHJpbnQgdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIGNvbW1hbmRzLiAgV2l0aCBhXG4gICAqY29tbWFuZCogYXMgYXJndW1lbnQsIHByaW50IGhlbHAgYWJvdXQgdGhhdCBjb21tYW5kLiAgImhlbHAgcGRiIlxuICAgZGlzcGxheXMgdGhlIGZ1bGwgZG9jdW1lbnRhdGlvbiAodGhlIGRvY3N0cmluZyBvZiB0aGUgInBkYiJcbiAgIG1vZHVsZSkuICBTaW5jZSB0aGUgKmNvbW1hbmQqIGFyZ3VtZW50IG11c3QgYmUgYW4gaWRlbnRpZmllciwgImhlbHBcbiAgIGV4ZWMiIG11c3QgYmUgZW50ZXJlZCB0byBnZXQgaGVscCBvbiB0aGUgIiEiIGNvbW1hbmQuXG5cbncoaGVyZSlcblxuICAgUHJpbnQgYSBzdGFjayB0cmFjZSwgd2l0aCB0aGUgbW9zdCByZWNlbnQgZnJhbWUgYXQgdGhlIGJvdHRvbS4gIEFuXG4gICBhcnJvdyBpbmRpY2F0ZXMgdGhlIGN1cnJlbnQgZnJhbWUsIHdoaWNoIGRldGVybWluZXMgdGhlIGNvbnRleHQgb2ZcbiAgIG1vc3QgY29tbWFuZHMuXG5cbmQob3duKSBbY291bnRdXG5cbiAgIE1vdmUgdGhlIGN1cnJlbnQgZnJhbWUgKmNvdW50KiAoZGVmYXVsdCBvbmUpIGxldmVscyBkb3duIGluIHRoZVxuICAgc3RhY2sgdHJhY2UgKHRvIGEgbmV3ZXIgZnJhbWUpLlxuXG51KHApIFtjb3VudF1cblxuICAgTW92ZSB0aGUgY3VycmVudCBmcmFtZSAqY291bnQqIChkZWZhdWx0IG9uZSkgbGV2ZWxzIHVwIGluIHRoZSBzdGFja1xuICAgdHJhY2UgKHRvIGFuIG9sZGVyIGZyYW1lKS5cblxuYihyZWFrKSBbKFtmaWxlbmFtZTpdbGluZW5vIHwgZnVuY3Rpb24pIFssIGNvbmRpdGlvbl1dXG5cbiAgIFdpdGggYSAqbGluZW5vKiBhcmd1bWVudCwgc2V0IGEgYnJlYWsgdGhlcmUgaW4gdGhlIGN1cnJlbnQgZmlsZS5cbiAgIFdpdGggYSAqZnVuY3Rpb24qIGFyZ3VtZW50LCBzZXQgYSBicmVhayBhdCB0aGUgZmlyc3QgZXhlY3V0YWJsZVxuICAgc3RhdGVtZW50IHdpdGhpbiB0aGF0IGZ1bmN0aW9uLiAgVGhlIGxpbmUgbnVtYmVyIG1heSBiZSBwcmVmaXhlZFxuICAgd2l0aCBhIGZpbGVuYW1lIGFuZCBhIGNvbG9uLCB0byBzcGVjaWZ5IGEgYnJlYWtwb2ludCBpbiBhbm90aGVyXG4gICBmaWxlIChwcm9iYWJseSBvbmUgdGhhdCBoYXNuXCd0IGJlZW4gbG9hZGVkIHlldCkuICBUaGUgZmlsZSBpc1xuICAgc2VhcmNoZWQgb24gInN5cy5wYXRoIi4gIE5vdGUgdGhhdCBlYWNoIGJyZWFrcG9pbnQgaXMgYXNzaWduZWQgYVxuICAgbnVtYmVyIHRvIHdoaWNoIGFsbCB0aGUgb3RoZXIgYnJlYWtwb2ludCBjb21tYW5kcyByZWZlci5cblxuICAgSWYgYSBzZWNvbmQgYXJndW1lbnQgaXMgcHJlc2VudCwgaXQgaXMgYW4gZXhwcmVzc2lvbiB3aGljaCBtdXN0XG4gICBldmFsdWF0ZSB0byB0cnVlIGJlZm9yZSB0aGUgYnJlYWtwb2ludCBpcyBob25vcmVkLlxuXG4gICBXaXRob3V0IGFyZ3VtZW50LCBsaXN0IGFsbCBicmVha3MsIGluY2x1ZGluZyBmb3IgZWFjaCBicmVha3BvaW50LFxuICAgdGhlIG51bWJlciBvZiB0aW1lcyB0aGF0IGJyZWFrcG9pbnQgaGFzIGJlZW4gaGl0LCB0aGUgY3VycmVudFxuICAgaWdub3JlIGNvdW50LCBhbmQgdGhlIGFzc29jaWF0ZWQgY29uZGl0aW9uIGlmIGFueS5cblxudGJyZWFrIFsoW2ZpbGVuYW1lOl1saW5lbm8gfCBmdW5jdGlvbikgWywgY29uZGl0aW9uXV1cblxuICAgVGVtcG9yYXJ5IGJyZWFrcG9pbnQsIHdoaWNoIGlzIHJlbW92ZWQgYXV0b21hdGljYWxseSB3aGVuIGl0IGlzXG4gICBmaXJzdCBoaXQuIFRoZSBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIGZvciAiYnJlYWsiLlxuXG5jbChlYXIpIFtmaWxlbmFtZTpsaW5lbm8gfCBicG51bWJlciBbYnBudW1iZXIgLi4uXV1cblxuICAgV2l0aCBhICpmaWxlbmFtZTpsaW5lbm8qIGFyZ3VtZW50LCBjbGVhciBhbGwgdGhlIGJyZWFrcG9pbnRzIGF0XG4gICB0aGlzIGxpbmUuIFdpdGggYSBzcGFjZSBzZXBhcmF0ZWQgbGlzdCBvZiBicmVha3BvaW50IG51bWJlcnMsIGNsZWFyXG4gICB0aG9zZSBicmVha3BvaW50cy4gV2l0aG91dCBhcmd1bWVudCwgY2xlYXIgYWxsIGJyZWFrcyAoYnV0IGZpcnN0XG4gICBhc2sgY29uZmlybWF0aW9uKS5cblxuZGlzYWJsZSBbYnBudW1iZXIgW2JwbnVtYmVyIC4uLl1dXG5cbiAgIERpc2FibGUgdGhlIGJyZWFrcG9pbnRzIGdpdmVuIGFzIGEgc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2ZcbiAgIGJyZWFrcG9pbnQgbnVtYmVycy4gIERpc2FibGluZyBhIGJyZWFrcG9pbnQgbWVhbnMgaXQgY2Fubm90IGNhdXNlXG4gICB0aGUgcHJvZ3JhbSB0byBzdG9wIGV4ZWN1dGlvbiwgYnV0IHVubGlrZSBjbGVhcmluZyBhIGJyZWFrcG9pbnQsIGl0XG4gICByZW1haW5zIGluIHRoZSBsaXN0IG9mIGJyZWFrcG9pbnRzIGFuZCBjYW4gYmUgKHJlLSllbmFibGVkLlxuXG5lbmFibGUgW2JwbnVtYmVyIFticG51bWJlciAuLi5dXVxuXG4gICBFbmFibGUgdGhlIGJyZWFrcG9pbnRzIHNwZWNpZmllZC5cblxuaWdub3JlIGJwbnVtYmVyIFtjb3VudF1cblxuICAgU2V0IHRoZSBpZ25vcmUgY291bnQgZm9yIHRoZSBnaXZlbiBicmVha3BvaW50IG51bWJlci4gIElmIGNvdW50IGlzXG4gICBvbWl0dGVkLCB0aGUgaWdub3JlIGNvdW50IGlzIHNldCB0byAwLiAgQSBicmVha3BvaW50IGJlY29tZXMgYWN0aXZlXG4gICB3aGVuIHRoZSBpZ25vcmUgY291bnQgaXMgemVyby4gIFdoZW4gbm9uLXplcm8sIHRoZSBjb3VudCBpc1xuICAgZGVjcmVtZW50ZWQgZWFjaCB0aW1lIHRoZSBicmVha3BvaW50IGlzIHJlYWNoZWQgYW5kIHRoZSBicmVha3BvaW50XG4gICBpcyBub3QgZGlzYWJsZWQgYW5kIGFueSBhc3NvY2lhdGVkIGNvbmRpdGlvbiBldmFsdWF0ZXMgdG8gdHJ1ZS5cblxuY29uZGl0aW9uIGJwbnVtYmVyIFtjb25kaXRpb25dXG5cbiAgIFNldCBhIG5ldyAqY29uZGl0aW9uKiBmb3IgdGhlIGJyZWFrcG9pbnQsIGFuIGV4cHJlc3Npb24gd2hpY2ggbXVzdFxuICAgZXZhbHVhdGUgdG8gdHJ1ZSBiZWZvcmUgdGhlIGJyZWFrcG9pbnQgaXMgaG9ub3JlZC4gIElmICpjb25kaXRpb24qXG4gICBpcyBhYnNlbnQsIGFueSBleGlzdGluZyBjb25kaXRpb24gaXMgcmVtb3ZlZDsgaS5lLiwgdGhlIGJyZWFrcG9pbnRcbiAgIGlzIG1hZGUgdW5jb25kaXRpb25hbC5cblxuY29tbWFuZHMgW2JwbnVtYmVyXVxuXG4gICBTcGVjaWZ5IGEgbGlzdCBvZiBjb21tYW5kcyBmb3IgYnJlYWtwb2ludCBudW1iZXIgKmJwbnVtYmVyKi4gIFRoZVxuICAgY29tbWFuZHMgdGhlbXNlbHZlcyBhcHBlYXIgb24gdGhlIGZvbGxvd2luZyBsaW5lcy4gIFR5cGUgYSBsaW5lXG4gICBjb250YWluaW5nIGp1c3QgImVuZCIgdG8gdGVybWluYXRlIHRoZSBjb21tYW5kcy4gQW4gZXhhbXBsZTpcblxuICAgICAgKFBkYikgY29tbWFuZHMgMVxuICAgICAgKGNvbSkgcCBzb21lX3ZhcmlhYmxlXG4gICAgICAoY29tKSBlbmRcbiAgICAgIChQZGIpXG5cbiAgIFRvIHJlbW92ZSBhbGwgY29tbWFuZHMgZnJvbSBhIGJyZWFrcG9pbnQsIHR5cGUgY29tbWFuZHMgYW5kIGZvbGxvd1xuICAgaXQgaW1tZWRpYXRlbHkgd2l0aCAiZW5kIjsgdGhhdCBpcywgZ2l2ZSBubyBjb21tYW5kcy5cblxuICAgV2l0aCBubyAqYnBudW1iZXIqIGFyZ3VtZW50LCBjb21tYW5kcyByZWZlcnMgdG8gdGhlIGxhc3QgYnJlYWtwb2ludFxuICAgc2V0LlxuXG4gICBZb3UgY2FuIHVzZSBicmVha3BvaW50IGNvbW1hbmRzIHRvIHN0YXJ0IHlvdXIgcHJvZ3JhbSB1cCBhZ2Fpbi5cbiAgIFNpbXBseSB1c2UgdGhlIGNvbnRpbnVlIGNvbW1hbmQsIG9yIHN0ZXAsIG9yIGFueSBvdGhlciBjb21tYW5kIHRoYXRcbiAgIHJlc3VtZXMgZXhlY3V0aW9uLlxuXG4gICBTcGVjaWZ5aW5nIGFueSBjb21tYW5kIHJlc3VtaW5nIGV4ZWN1dGlvbiAoY3VycmVudGx5IGNvbnRpbnVlLFxuICAgc3RlcCwgbmV4dCwgcmV0dXJuLCBqdW1wLCBxdWl0IGFuZCB0aGVpciBhYmJyZXZpYXRpb25zKSB0ZXJtaW5hdGVzXG4gICB0aGUgY29tbWFuZCBsaXN0IChhcyBpZiB0aGF0IGNvbW1hbmQgd2FzIGltbWVkaWF0ZWx5IGZvbGxvd2VkIGJ5XG4gICBlbmQpLiBUaGlzIGlzIGJlY2F1c2UgYW55IHRpbWUgeW91IHJlc3VtZSBleGVjdXRpb24gKGV2ZW4gd2l0aCBhXG4gICBzaW1wbGUgbmV4dCBvciBzdGVwKSwgeW91IG1heSBlbmNvdW50ZXIgYW5vdGhlciBicmVha3BvaW50LS13aGljaFxuICAgY291bGQgaGF2ZSBpdHMgb3duIGNvbW1hbmQgbGlzdCwgbGVhZGluZyB0byBhbWJpZ3VpdGllcyBhYm91dCB3aGljaFxuICAgbGlzdCB0byBleGVjdXRlLlxuXG4gICBJZiB5b3UgdXNlIHRoZSBcJ3NpbGVudFwnIGNvbW1hbmQgaW4gdGhlIGNvbW1hbmQgbGlzdCwgdGhlIHVzdWFsXG4gICBtZXNzYWdlIGFib3V0IHN0b3BwaW5nIGF0IGEgYnJlYWtwb2ludCBpcyBub3QgcHJpbnRlZC4gIFRoaXMgbWF5IGJlXG4gICBkZXNpcmFibGUgZm9yIGJyZWFrcG9pbnRzIHRoYXQgYXJlIHRvIHByaW50IGEgc3BlY2lmaWMgbWVzc2FnZSBhbmRcbiAgIHRoZW4gY29udGludWUuICBJZiBub25lIG9mIHRoZSBvdGhlciBjb21tYW5kcyBwcmludCBhbnl0aGluZywgeW91XG4gICBzZWUgbm8gc2lnbiB0aGF0IHRoZSBicmVha3BvaW50IHdhcyByZWFjaGVkLlxuXG5zKHRlcClcblxuICAgRXhlY3V0ZSB0aGUgY3VycmVudCBsaW5lLCBzdG9wIGF0IHRoZSBmaXJzdCBwb3NzaWJsZSBvY2Nhc2lvblxuICAgKGVpdGhlciBpbiBhIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIG9yIG9uIHRoZSBuZXh0IGxpbmUgaW4gdGhlXG4gICBjdXJyZW50IGZ1bmN0aW9uKS5cblxubihleHQpXG5cbiAgIENvbnRpbnVlIGV4ZWN1dGlvbiB1bnRpbCB0aGUgbmV4dCBsaW5lIGluIHRoZSBjdXJyZW50IGZ1bmN0aW9uIGlzXG4gICByZWFjaGVkIG9yIGl0IHJldHVybnMuICAoVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiAibmV4dCIgYW5kICJzdGVwIlxuICAgaXMgdGhhdCAic3RlcCIgc3RvcHMgaW5zaWRlIGEgY2FsbGVkIGZ1bmN0aW9uLCB3aGlsZSAibmV4dCJcbiAgIGV4ZWN1dGVzIGNhbGxlZCBmdW5jdGlvbnMgYXQgKG5lYXJseSkgZnVsbCBzcGVlZCwgb25seSBzdG9wcGluZyBhdFxuICAgdGhlIG5leHQgbGluZSBpbiB0aGUgY3VycmVudCBmdW5jdGlvbi4pXG5cbnVudChpbCkgW2xpbmVub11cblxuICAgV2l0aG91dCBhcmd1bWVudCwgY29udGludWUgZXhlY3V0aW9uIHVudGlsIHRoZSBsaW5lIHdpdGggYSBudW1iZXJcbiAgIGdyZWF0ZXIgdGhhbiB0aGUgY3VycmVudCBvbmUgaXMgcmVhY2hlZC5cblxuICAgV2l0aCBhIGxpbmUgbnVtYmVyLCBjb250aW51ZSBleGVjdXRpb24gdW50aWwgYSBsaW5lIHdpdGggYSBudW1iZXJcbiAgIGdyZWF0ZXIgb3IgZXF1YWwgdG8gdGhhdCBpcyByZWFjaGVkLiAgSW4gYm90aCBjYXNlcywgYWxzbyBzdG9wIHdoZW5cbiAgIHRoZSBjdXJyZW50IGZyYW1lIHJldHVybnMuXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjI6IEFsbG93IGdpdmluZyBhbiBleHBsaWNpdCBsaW5lIG51bWJlci5cblxucihldHVybilcblxuICAgQ29udGludWUgZXhlY3V0aW9uIHVudGlsIHRoZSBjdXJyZW50IGZ1bmN0aW9uIHJldHVybnMuXG5cbmMob250KGludWUpKVxuXG4gICBDb250aW51ZSBleGVjdXRpb24sIG9ubHkgc3RvcCB3aGVuIGEgYnJlYWtwb2ludCBpcyBlbmNvdW50ZXJlZC5cblxuaih1bXApIGxpbmVub1xuXG4gICBTZXQgdGhlIG5leHQgbGluZSB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQuICBPbmx5IGF2YWlsYWJsZSBpbiB0aGVcbiAgIGJvdHRvbS1tb3N0IGZyYW1lLiAgVGhpcyBsZXRzIHlvdSBqdW1wIGJhY2sgYW5kIGV4ZWN1dGUgY29kZSBhZ2FpbixcbiAgIG9yIGp1bXAgZm9yd2FyZCB0byBza2lwIGNvZGUgdGhhdCB5b3UgZG9uXCd0IHdhbnQgdG8gcnVuLlxuXG4gICBJdCBzaG91bGQgYmUgbm90ZWQgdGhhdCBub3QgYWxsIGp1bXBzIGFyZSBhbGxvd2VkIC0tIGZvciBpbnN0YW5jZVxuICAgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGp1bXAgaW50byB0aGUgbWlkZGxlIG9mIGEgImZvciIgbG9vcCBvciBvdXRcbiAgIG9mIGEgImZpbmFsbHkiIGNsYXVzZS5cblxubChpc3QpIFtmaXJzdFssIGxhc3RdXVxuXG4gICBMaXN0IHNvdXJjZSBjb2RlIGZvciB0aGUgY3VycmVudCBmaWxlLiAgV2l0aG91dCBhcmd1bWVudHMsIGxpc3QgMTFcbiAgIGxpbmVzIGFyb3VuZCB0aGUgY3VycmVudCBsaW5lIG9yIGNvbnRpbnVlIHRoZSBwcmV2aW91cyBsaXN0aW5nLlxuICAgV2l0aCAiLiIgYXMgYXJndW1lbnQsIGxpc3QgMTEgbGluZXMgYXJvdW5kIHRoZSBjdXJyZW50IGxpbmUuICBXaXRoXG4gICBvbmUgYXJndW1lbnQsIGxpc3QgMTEgbGluZXMgYXJvdW5kIGF0IHRoYXQgbGluZS4gIFdpdGggdHdvXG4gICBhcmd1bWVudHMsIGxpc3QgdGhlIGdpdmVuIHJhbmdlOyBpZiB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIGxlc3NcbiAgIHRoYW4gdGhlIGZpcnN0LCBpdCBpcyBpbnRlcnByZXRlZCBhcyBhIGNvdW50LlxuXG4gICBUaGUgY3VycmVudCBsaW5lIGluIHRoZSBjdXJyZW50IGZyYW1lIGlzIGluZGljYXRlZCBieSAiLT4iLiAgSWYgYW5cbiAgIGV4Y2VwdGlvbiBpcyBiZWluZyBkZWJ1Z2dlZCwgdGhlIGxpbmUgd2hlcmUgdGhlIGV4Y2VwdGlvbiB3YXNcbiAgIG9yaWdpbmFsbHkgcmFpc2VkIG9yIHByb3BhZ2F0ZWQgaXMgaW5kaWNhdGVkIGJ5ICI+PiIsIGlmIGl0IGRpZmZlcnNcbiAgIGZyb20gdGhlIGN1cnJlbnQgbGluZS5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yOiBUaGUgIj4+IiBtYXJrZXIuXG5cbmxsIHwgbG9uZ2xpc3RcblxuICAgTGlzdCBhbGwgc291cmNlIGNvZGUgZm9yIHRoZSBjdXJyZW50IGZ1bmN0aW9uIG9yIGZyYW1lLlxuICAgSW50ZXJlc3RpbmcgbGluZXMgYXJlIG1hcmtlZCBhcyBmb3IgImxpc3QiLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbmEocmdzKVxuXG4gICBQcmludCB0aGUgYXJndW1lbnQgbGlzdCBvZiB0aGUgY3VycmVudCBmdW5jdGlvbi5cblxucCBleHByZXNzaW9uXG5cbiAgIEV2YWx1YXRlIHRoZSAqZXhwcmVzc2lvbiogaW4gdGhlIGN1cnJlbnQgY29udGV4dCBhbmQgcHJpbnQgaXRzXG4gICB2YWx1ZS5cblxuICAgTm90ZTogInByaW50KCkiIGNhbiBhbHNvIGJlIHVzZWQsIGJ1dCBpcyBub3QgYSBkZWJ1Z2dlciBjb21tYW5kXG4gICAgIC0tLSB0aGlzIGV4ZWN1dGVzIHRoZSBQeXRob24gInByaW50KCkiIGZ1bmN0aW9uLlxuXG5wcCBleHByZXNzaW9uXG5cbiAgIExpa2UgdGhlICJwIiBjb21tYW5kLCBleGNlcHQgdGhlIHZhbHVlIG9mIHRoZSBleHByZXNzaW9uIGlzIHByZXR0eS1cbiAgIHByaW50ZWQgdXNpbmcgdGhlICJwcHJpbnQiIG1vZHVsZS5cblxud2hhdGlzIGV4cHJlc3Npb25cblxuICAgUHJpbnQgdGhlIHR5cGUgb2YgdGhlICpleHByZXNzaW9uKi5cblxuc291cmNlIGV4cHJlc3Npb25cblxuICAgVHJ5IHRvIGdldCBzb3VyY2UgY29kZSBmb3IgdGhlIGdpdmVuIG9iamVjdCBhbmQgZGlzcGxheSBpdC5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yLlxuXG5kaXNwbGF5IFtleHByZXNzaW9uXVxuXG4gICBEaXNwbGF5IHRoZSB2YWx1ZSBvZiB0aGUgZXhwcmVzc2lvbiBpZiBpdCBjaGFuZ2VkLCBlYWNoIHRpbWVcbiAgIGV4ZWN1dGlvbiBzdG9wcyBpbiB0aGUgY3VycmVudCBmcmFtZS5cblxuICAgV2l0aG91dCBleHByZXNzaW9uLCBsaXN0IGFsbCBkaXNwbGF5IGV4cHJlc3Npb25zIGZvciB0aGUgY3VycmVudFxuICAgZnJhbWUuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cblxudW5kaXNwbGF5IFtleHByZXNzaW9uXVxuXG4gICBEbyBub3QgZGlzcGxheSB0aGUgZXhwcmVzc2lvbiBhbnkgbW9yZSBpbiB0aGUgY3VycmVudCBmcmFtZS5cbiAgIFdpdGhvdXQgZXhwcmVzc2lvbiwgY2xlYXIgYWxsIGRpc3BsYXkgZXhwcmVzc2lvbnMgZm9yIHRoZSBjdXJyZW50XG4gICBmcmFtZS5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yLlxuXG5pbnRlcmFjdFxuXG4gICBTdGFydCBhbiBpbnRlcmF0aXZlIGludGVycHJldGVyICh1c2luZyB0aGUgImNvZGUiIG1vZHVsZSkgd2hvc2VcbiAgIGdsb2JhbCBuYW1lc3BhY2UgY29udGFpbnMgYWxsIHRoZSAoZ2xvYmFsIGFuZCBsb2NhbCkgbmFtZXMgZm91bmQgaW5cbiAgIHRoZSBjdXJyZW50IHNjb3BlLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbmFsaWFzIFtuYW1lIFtjb21tYW5kXV1cblxuICAgQ3JlYXRlIGFuIGFsaWFzIGNhbGxlZCAqbmFtZSogdGhhdCBleGVjdXRlcyAqY29tbWFuZCouICBUaGUgY29tbWFuZFxuICAgbXVzdCAqbm90KiBiZSBlbmNsb3NlZCBpbiBxdW90ZXMuICBSZXBsYWNlYWJsZSBwYXJhbWV0ZXJzIGNhbiBiZVxuICAgaW5kaWNhdGVkIGJ5ICIlMSIsICIlMiIsIGFuZCBzbyBvbiwgd2hpbGUgIiUqIiBpcyByZXBsYWNlZCBieSBhbGxcbiAgIHRoZSBwYXJhbWV0ZXJzLiBJZiBubyBjb21tYW5kIGlzIGdpdmVuLCB0aGUgY3VycmVudCBhbGlhcyBmb3JcbiAgICpuYW1lKiBpcyBzaG93bi4gSWYgbm8gYXJndW1lbnRzIGFyZSBnaXZlbiwgYWxsIGFsaWFzZXMgYXJlIGxpc3RlZC5cblxuICAgQWxpYXNlcyBtYXkgYmUgbmVzdGVkIGFuZCBjYW4gY29udGFpbiBhbnl0aGluZyB0aGF0IGNhbiBiZSBsZWdhbGx5XG4gICB0eXBlZCBhdCB0aGUgcGRiIHByb21wdC4gIE5vdGUgdGhhdCBpbnRlcm5hbCBwZGIgY29tbWFuZHMgKmNhbiogYmVcbiAgIG92ZXJyaWRkZW4gYnkgYWxpYXNlcy4gIFN1Y2ggYSBjb21tYW5kIGlzIHRoZW4gaGlkZGVuIHVudGlsIHRoZVxuICAgYWxpYXMgaXMgcmVtb3ZlZC4gIEFsaWFzaW5nIGlzIHJlY3Vyc2l2ZWx5IGFwcGxpZWQgdG8gdGhlIGZpcnN0XG4gICB3b3JkIG9mIHRoZSBjb21tYW5kIGxpbmU7IGFsbCBvdGhlciB3b3JkcyBpbiB0aGUgbGluZSBhcmUgbGVmdFxuICAgYWxvbmUuXG5cbiAgIEFzIGFuIGV4YW1wbGUsIGhlcmUgYXJlIHR3byB1c2VmdWwgYWxpYXNlcyAoZXNwZWNpYWxseSB3aGVuIHBsYWNlZFxuICAgaW4gdGhlICIucGRicmMiIGZpbGUpOlxuXG4gICAgICAjIFByaW50IGluc3RhbmNlIHZhcmlhYmxlcyAodXNhZ2UgInBpIGNsYXNzSW5zdCIpXG4gICAgICBhbGlhcyBwaSBmb3IgayBpbiAlMS5fX2RpY3RfXy5rZXlzKCk6IHByaW50KCIlMS4iLGssIj0iLCUxLl9fZGljdF9fW2tdKVxuICAgICAgIyBQcmludCBpbnN0YW5jZSB2YXJpYWJsZXMgaW4gc2VsZlxuICAgICAgYWxpYXMgcHMgcGkgc2VsZlxuXG51bmFsaWFzIG5hbWVcblxuICAgRGVsZXRlIHRoZSBzcGVjaWZpZWQgYWxpYXMuXG5cbiEgc3RhdGVtZW50XG5cbiAgIEV4ZWN1dGUgdGhlIChvbmUtbGluZSkgKnN0YXRlbWVudCogaW4gdGhlIGNvbnRleHQgb2YgdGhlIGN1cnJlbnRcbiAgIHN0YWNrIGZyYW1lLiBUaGUgZXhjbGFtYXRpb24gcG9pbnQgY2FuIGJlIG9taXR0ZWQgdW5sZXNzIHRoZSBmaXJzdFxuICAgd29yZCBvZiB0aGUgc3RhdGVtZW50IHJlc2VtYmxlcyBhIGRlYnVnZ2VyIGNvbW1hbmQuICBUbyBzZXQgYVxuICAgZ2xvYmFsIHZhcmlhYmxlLCB5b3UgY2FuIHByZWZpeCB0aGUgYXNzaWdubWVudCBjb21tYW5kIHdpdGggYVxuICAgImdsb2JhbCIgc3RhdGVtZW50IG9uIHRoZSBzYW1lIGxpbmUsIGUuZy46XG5cbiAgICAgIChQZGIpIGdsb2JhbCBsaXN0X29wdGlvbnM7IGxpc3Rfb3B0aW9ucyA9IFtcJy1sXCddXG4gICAgICAoUGRiKVxuXG5ydW4gW2FyZ3MgLi4uXVxucmVzdGFydCBbYXJncyAuLi5dXG5cbiAgIFJlc3RhcnQgdGhlIGRlYnVnZ2VkIFB5dGhvbiBwcm9ncmFtLiAgSWYgYW4gYXJndW1lbnQgaXMgc3VwcGxpZWQsXG4gICBpdCBpcyBzcGxpdCB3aXRoICJzaGxleCIgYW5kIHRoZSByZXN1bHQgaXMgdXNlZCBhcyB0aGUgbmV3XG4gICAic3lzLmFyZ3YiLiBIaXN0b3J5LCBicmVha3BvaW50cywgYWN0aW9ucyBhbmQgZGVidWdnZXIgb3B0aW9ucyBhcmVcbiAgIHByZXNlcnZlZC4gInJlc3RhcnQiIGlzIGFuIGFsaWFzIGZvciAicnVuIi5cblxucSh1aXQpXG5cbiAgIFF1aXQgZnJvbSB0aGUgZGVidWdnZXIuICBUaGUgcHJvZ3JhbSBiZWluZyBleGVjdXRlZCBpcyBhYm9ydGVkLlxuXG4tWyBGb290bm90ZXMgXS1cblxuWzFdIFdoZXRoZXIgYSBmcmFtZSBpcyBjb25zaWRlcmVkIHRvIG9yaWdpbmF0ZSBpbiBhIGNlcnRhaW4gbW9kdWxlXG4gICAgaXMgZGV0ZXJtaW5lZCBieSB0aGUgIl9fbmFtZV9fIiBpbiB0aGUgZnJhbWUgZ2xvYmFscy5cbicsCi0gJ2RlbCc6IHUnXG5UaGUgImRlbCIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqXG5cbiAgIGRlbF9zdG10IDo6PSAiZGVsIiB0YXJnZXRfbGlzdFxuXG5EZWxldGlvbiBpcyByZWN1cnNpdmVseSBkZWZpbmVkIHZlcnkgc2ltaWxhciB0byB0aGUgd2F5IGFzc2lnbm1lbnQgaXNcbmRlZmluZWQuIFJhdGhlciB0aGFuIHNwZWxsaW5nIGl0IG91dCBpbiBmdWxsIGRldGFpbHMsIGhlcmUgYXJlIHNvbWVcbmhpbnRzLlxuXG5EZWxldGlvbiBvZiBhIHRhcmdldCBsaXN0IHJlY3Vyc2l2ZWx5IGRlbGV0ZXMgZWFjaCB0YXJnZXQsIGZyb20gbGVmdFxudG8gcmlnaHQuXG5cbkRlbGV0aW9uIG9mIGEgbmFtZSByZW1vdmVzIHRoZSBiaW5kaW5nIG9mIHRoYXQgbmFtZSBmcm9tIHRoZSBsb2NhbCBvclxuZ2xvYmFsIG5hbWVzcGFjZSwgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIG5hbWUgb2NjdXJzIGluIGEgImdsb2JhbCJcbnN0YXRlbWVudCBpbiB0aGUgc2FtZSBjb2RlIGJsb2NrLiAgSWYgdGhlIG5hbWUgaXMgdW5ib3VuZCwgYVxuIk5hbWVFcnJvciIgZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkLlxuXG5EZWxldGlvbiBvZiBhdHRyaWJ1dGUgcmVmZXJlbmNlcywgc3Vic2NyaXB0aW9ucyBhbmQgc2xpY2luZ3MgaXMgcGFzc2VkXG50byB0aGUgcHJpbWFyeSBvYmplY3QgaW52b2x2ZWQ7IGRlbGV0aW9uIG9mIGEgc2xpY2luZyBpcyBpbiBnZW5lcmFsXG5lcXVpdmFsZW50IHRvIGFzc2lnbm1lbnQgb2YgYW4gZW1wdHkgc2xpY2Ugb2YgdGhlIHJpZ2h0IHR5cGUgKGJ1dCBldmVuXG50aGlzIGlzIGRldGVybWluZWQgYnkgdGhlIHNsaWNlZCBvYmplY3QpLlxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4yOiBQcmV2aW91c2x5IGl0IHdhcyBpbGxlZ2FsIHRvIGRlbGV0ZSBhIG5hbWVcbmZyb20gdGhlIGxvY2FsIG5hbWVzcGFjZSBpZiBpdCBvY2N1cnMgYXMgYSBmcmVlIHZhcmlhYmxlIGluIGEgbmVzdGVkXG5ibG9jay5cbicsCi0gJ2RpY3QnOiB1J1xuRGljdGlvbmFyeSBkaXNwbGF5c1xuKioqKioqKioqKioqKioqKioqKlxuXG5BIGRpY3Rpb25hcnkgZGlzcGxheSBpcyBhIHBvc3NpYmx5IGVtcHR5IHNlcmllcyBvZiBrZXkvZGF0dW0gcGFpcnNcbmVuY2xvc2VkIGluIGN1cmx5IGJyYWNlczpcblxuICAgZGljdF9kaXNwbGF5ICAgICAgIDo6PSAieyIgW2tleV9kYXR1bV9saXN0IHwgZGljdF9jb21wcmVoZW5zaW9uXSAifSJcbiAgIGtleV9kYXR1bV9saXN0ICAgICA6Oj0ga2V5X2RhdHVtICgiLCIga2V5X2RhdHVtKSogWyIsIl1cbiAgIGtleV9kYXR1bSAgICAgICAgICA6Oj0gZXhwcmVzc2lvbiAiOiIgZXhwcmVzc2lvbiB8ICIqKiIgb3JfZXhwclxuICAgZGljdF9jb21wcmVoZW5zaW9uIDo6PSBleHByZXNzaW9uICI6IiBleHByZXNzaW9uIGNvbXBfZm9yXG5cbkEgZGljdGlvbmFyeSBkaXNwbGF5IHlpZWxkcyBhIG5ldyBkaWN0aW9uYXJ5IG9iamVjdC5cblxuSWYgYSBjb21tYS1zZXBhcmF0ZWQgc2VxdWVuY2Ugb2Yga2V5L2RhdHVtIHBhaXJzIGlzIGdpdmVuLCB0aGV5IGFyZVxuZXZhbHVhdGVkIGZyb20gbGVmdCB0byByaWdodCB0byBkZWZpbmUgdGhlIGVudHJpZXMgb2YgdGhlIGRpY3Rpb25hcnk6XG5lYWNoIGtleSBvYmplY3QgaXMgdXNlZCBhcyBhIGtleSBpbnRvIHRoZSBkaWN0aW9uYXJ5IHRvIHN0b3JlIHRoZVxuY29ycmVzcG9uZGluZyBkYXR1bS4gIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIHNwZWNpZnkgdGhlIHNhbWUga2V5XG5tdWx0aXBsZSB0aW1lcyBpbiB0aGUga2V5L2RhdHVtIGxpc3QsIGFuZCB0aGUgZmluYWwgZGljdGlvbmFyeVwncyB2YWx1ZVxuZm9yIHRoYXQga2V5IHdpbGwgYmUgdGhlIGxhc3Qgb25lIGdpdmVuLlxuXG5BIGRvdWJsZSBhc3RlcmlzayAiKioiIGRlbm90ZXMgKmRpY3Rpb25hcnkgdW5wYWNraW5nKi4gSXRzIG9wZXJhbmRcbm11c3QgYmUgYSAqbWFwcGluZyouICBFYWNoIG1hcHBpbmcgaXRlbSBpcyBhZGRlZCB0byB0aGUgbmV3XG5kaWN0aW9uYXJ5LiAgTGF0ZXIgdmFsdWVzIHJlcGxhY2UgdmFsdWVzIGFscmVhZHkgc2V0IGJ5IGVhcmxpZXJcbmtleS9kYXR1bSBwYWlycyBhbmQgZWFybGllciBkaWN0aW9uYXJ5IHVucGFja2luZ3MuXG5cbk5ldyBpbiB2ZXJzaW9uIDMuNTogVW5wYWNraW5nIGludG8gZGljdGlvbmFyeSBkaXNwbGF5cywgb3JpZ2luYWxseVxucHJvcG9zZWQgYnkgKipQRVAgNDQ4KiouXG5cbkEgZGljdCBjb21wcmVoZW5zaW9uLCBpbiBjb250cmFzdCB0byBsaXN0IGFuZCBzZXQgY29tcHJlaGVuc2lvbnMsXG5uZWVkcyB0d28gZXhwcmVzc2lvbnMgc2VwYXJhdGVkIHdpdGggYSBjb2xvbiBmb2xsb3dlZCBieSB0aGUgdXN1YWxcbiJmb3IiIGFuZCAiaWYiIGNsYXVzZXMuIFdoZW4gdGhlIGNvbXByZWhlbnNpb24gaXMgcnVuLCB0aGUgcmVzdWx0aW5nXG5rZXkgYW5kIHZhbHVlIGVsZW1lbnRzIGFyZSBpbnNlcnRlZCBpbiB0aGUgbmV3IGRpY3Rpb25hcnkgaW4gdGhlIG9yZGVyXG50aGV5IGFyZSBwcm9kdWNlZC5cblxuUmVzdHJpY3Rpb25zIG9uIHRoZSB0eXBlcyBvZiB0aGUga2V5IHZhbHVlcyBhcmUgbGlzdGVkIGVhcmxpZXIgaW5cbnNlY3Rpb24gKlRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSouICAoVG8gc3VtbWFyaXplLCB0aGUga2V5IHR5cGVcbnNob3VsZCBiZSAqaGFzaGFibGUqLCB3aGljaCBleGNsdWRlcyBhbGwgbXV0YWJsZSBvYmplY3RzLikgIENsYXNoZXNcbmJldHdlZW4gZHVwbGljYXRlIGtleXMgYXJlIG5vdCBkZXRlY3RlZDsgdGhlIGxhc3QgZGF0dW0gKHRleHR1YWxseVxucmlnaHRtb3N0IGluIHRoZSBkaXNwbGF5KSBzdG9yZWQgZm9yIGEgZ2l2ZW4ga2V5IHZhbHVlIHByZXZhaWxzLlxuJywKLSAnZHluYW1pYy1mZWF0dXJlcyc6IHUnXG5JbnRlcmFjdGlvbiB3aXRoIGR5bmFtaWMgZmVhdHVyZXNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5OYW1lIHJlc29sdXRpb24gb2YgZnJlZSB2YXJpYWJsZXMgb2NjdXJzIGF0IHJ1bnRpbWUsIG5vdCBhdCBjb21waWxlXG50aW1lLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGZvbGxvd2luZyBjb2RlIHdpbGwgcHJpbnQgNDI6XG5cbiAgIGkgPSAxMFxuICAgZGVmIGYoKTpcbiAgICAgICBwcmludChpKVxuICAgaSA9IDQyXG4gICBmKClcblxuVGhlcmUgYXJlIHNldmVyYWwgY2FzZXMgd2hlcmUgUHl0aG9uIHN0YXRlbWVudHMgYXJlIGlsbGVnYWwgd2hlbiB1c2VkXG5pbiBjb25qdW5jdGlvbiB3aXRoIG5lc3RlZCBzY29wZXMgdGhhdCBjb250YWluIGZyZWUgdmFyaWFibGVzLlxuXG5JZiBhIHZhcmlhYmxlIGlzIHJlZmVyZW5jZWQgaW4gYW4gZW5jbG9zaW5nIHNjb3BlLCBpdCBpcyBpbGxlZ2FsIHRvXG5kZWxldGUgdGhlIG5hbWUuICBBbiBlcnJvciB3aWxsIGJlIHJlcG9ydGVkIGF0IGNvbXBpbGUgdGltZS5cblxuVGhlICJldmFsKCkiIGFuZCAiZXhlYygpIiBmdW5jdGlvbnMgZG8gbm90IGhhdmUgYWNjZXNzIHRvIHRoZSBmdWxsXG5lbnZpcm9ubWVudCBmb3IgcmVzb2x2aW5nIG5hbWVzLiAgTmFtZXMgbWF5IGJlIHJlc29sdmVkIGluIHRoZSBsb2NhbFxuYW5kIGdsb2JhbCBuYW1lc3BhY2VzIG9mIHRoZSBjYWxsZXIuICBGcmVlIHZhcmlhYmxlcyBhcmUgbm90IHJlc29sdmVkXG5pbiB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgbmFtZXNwYWNlLCBidXQgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuICBbMV1cblRoZSAiZXhlYygpIiBhbmQgImV2YWwoKSIgZnVuY3Rpb25zIGhhdmUgb3B0aW9uYWwgYXJndW1lbnRzIHRvXG5vdmVycmlkZSB0aGUgZ2xvYmFsIGFuZCBsb2NhbCBuYW1lc3BhY2UuICBJZiBvbmx5IG9uZSBuYW1lc3BhY2UgaXNcbnNwZWNpZmllZCwgaXQgaXMgdXNlZCBmb3IgYm90aC5cbicsCi0gJ2Vsc2UnOiB1J1xuVGhlICJpZiIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKipcblxuVGhlICJpZiIgc3RhdGVtZW50IGlzIHVzZWQgZm9yIGNvbmRpdGlvbmFsIGV4ZWN1dGlvbjpcblxuICAgaWZfc3RtdCA6Oj0gImlmIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgKCAiZWxpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGUgKSpcbiAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuXG5JdCBzZWxlY3RzIGV4YWN0bHkgb25lIG9mIHRoZSBzdWl0ZXMgYnkgZXZhbHVhdGluZyB0aGUgZXhwcmVzc2lvbnMgb25lXG5ieSBvbmUgdW50aWwgb25lIGlzIGZvdW5kIHRvIGJlIHRydWUgKHNlZSBzZWN0aW9uICpCb29sZWFuIG9wZXJhdGlvbnMqXG5mb3IgdGhlIGRlZmluaXRpb24gb2YgdHJ1ZSBhbmQgZmFsc2UpOyB0aGVuIHRoYXQgc3VpdGUgaXMgZXhlY3V0ZWRcbihhbmQgbm8gb3RoZXIgcGFydCBvZiB0aGUgImlmIiBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQgb3IgZXZhbHVhdGVkKS5cbklmIGFsbCBleHByZXNzaW9ucyBhcmUgZmFsc2UsIHRoZSBzdWl0ZSBvZiB0aGUgImVsc2UiIGNsYXVzZSwgaWZcbnByZXNlbnQsIGlzIGV4ZWN1dGVkLlxuJywKLSAnZXhjZXB0aW9ucyc6IHUnXG5FeGNlcHRpb25zXG4qKioqKioqKioqXG5cbkV4Y2VwdGlvbnMgYXJlIGEgbWVhbnMgb2YgYnJlYWtpbmcgb3V0IG9mIHRoZSBub3JtYWwgZmxvdyBvZiBjb250cm9sXG5vZiBhIGNvZGUgYmxvY2sgaW4gb3JkZXIgdG8gaGFuZGxlIGVycm9ycyBvciBvdGhlciBleGNlcHRpb25hbFxuY29uZGl0aW9ucy4gIEFuIGV4Y2VwdGlvbiBpcyAqcmFpc2VkKiBhdCB0aGUgcG9pbnQgd2hlcmUgdGhlIGVycm9yIGlzXG5kZXRlY3RlZDsgaXQgbWF5IGJlICpoYW5kbGVkKiBieSB0aGUgc3Vycm91bmRpbmcgY29kZSBibG9jayBvciBieSBhbnlcbmNvZGUgYmxvY2sgdGhhdCBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGludm9rZWQgdGhlIGNvZGUgYmxvY2sgd2hlcmVcbnRoZSBlcnJvciBvY2N1cnJlZC5cblxuVGhlIFB5dGhvbiBpbnRlcnByZXRlciByYWlzZXMgYW4gZXhjZXB0aW9uIHdoZW4gaXQgZGV0ZWN0cyBhIHJ1bi10aW1lXG5lcnJvciAoc3VjaCBhcyBkaXZpc2lvbiBieSB6ZXJvKS4gIEEgUHl0aG9uIHByb2dyYW0gY2FuIGFsc29cbmV4cGxpY2l0bHkgcmFpc2UgYW4gZXhjZXB0aW9uIHdpdGggdGhlICJyYWlzZSIgc3RhdGVtZW50LiBFeGNlcHRpb25cbmhhbmRsZXJzIGFyZSBzcGVjaWZpZWQgd2l0aCB0aGUgInRyeSIgLi4uICJleGNlcHQiIHN0YXRlbWVudC4gIFRoZVxuImZpbmFsbHkiIGNsYXVzZSBvZiBzdWNoIGEgc3RhdGVtZW50IGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgY2xlYW51cFxuY29kZSB3aGljaCBkb2VzIG5vdCBoYW5kbGUgdGhlIGV4Y2VwdGlvbiwgYnV0IGlzIGV4ZWN1dGVkIHdoZXRoZXIgYW5cbmV4Y2VwdGlvbiBvY2N1cnJlZCBvciBub3QgaW4gdGhlIHByZWNlZGluZyBjb2RlLlxuXG5QeXRob24gdXNlcyB0aGUgInRlcm1pbmF0aW9uIiBtb2RlbCBvZiBlcnJvciBoYW5kbGluZzogYW4gZXhjZXB0aW9uXG5oYW5kbGVyIGNhbiBmaW5kIG91dCB3aGF0IGhhcHBlbmVkIGFuZCBjb250aW51ZSBleGVjdXRpb24gYXQgYW4gb3V0ZXJcbmxldmVsLCBidXQgaXQgY2Fubm90IHJlcGFpciB0aGUgY2F1c2Ugb2YgdGhlIGVycm9yIGFuZCByZXRyeSB0aGVcbmZhaWxpbmcgb3BlcmF0aW9uIChleGNlcHQgYnkgcmUtZW50ZXJpbmcgdGhlIG9mZmVuZGluZyBwaWVjZSBvZiBjb2RlXG5mcm9tIHRoZSB0b3ApLlxuXG5XaGVuIGFuIGV4Y2VwdGlvbiBpcyBub3QgaGFuZGxlZCBhdCBhbGwsIHRoZSBpbnRlcnByZXRlciB0ZXJtaW5hdGVzXG5leGVjdXRpb24gb2YgdGhlIHByb2dyYW0sIG9yIHJldHVybnMgdG8gaXRzIGludGVyYWN0aXZlIG1haW4gbG9vcC4gIEluXG5laXRoZXIgY2FzZSwgaXQgcHJpbnRzIGEgc3RhY2sgYmFja3RyYWNlLCBleGNlcHQgd2hlbiB0aGUgZXhjZXB0aW9uIGlzXG4iU3lzdGVtRXhpdCIuXG5cbkV4Y2VwdGlvbnMgYXJlIGlkZW50aWZpZWQgYnkgY2xhc3MgaW5zdGFuY2VzLiAgVGhlICJleGNlcHQiIGNsYXVzZSBpc1xuc2VsZWN0ZWQgZGVwZW5kaW5nIG9uIHRoZSBjbGFzcyBvZiB0aGUgaW5zdGFuY2U6IGl0IG11c3QgcmVmZXJlbmNlIHRoZVxuY2xhc3Mgb2YgdGhlIGluc3RhbmNlIG9yIGEgYmFzZSBjbGFzcyB0aGVyZW9mLiAgVGhlIGluc3RhbmNlIGNhbiBiZVxucmVjZWl2ZWQgYnkgdGhlIGhhbmRsZXIgYW5kIGNhbiBjYXJyeSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZVxuZXhjZXB0aW9uYWwgY29uZGl0aW9uLlxuXG5Ob3RlOiBFeGNlcHRpb24gbWVzc2FnZXMgYXJlIG5vdCBwYXJ0IG9mIHRoZSBQeXRob24gQVBJLiAgVGhlaXJcbiAgY29udGVudHMgbWF5IGNoYW5nZSBmcm9tIG9uZSB2ZXJzaW9uIG9mIFB5dGhvbiB0byB0aGUgbmV4dCB3aXRob3V0XG4gIHdhcm5pbmcgYW5kIHNob3VsZCBub3QgYmUgcmVsaWVkIG9uIGJ5IGNvZGUgd2hpY2ggd2lsbCBydW4gdW5kZXJcbiAgbXVsdGlwbGUgdmVyc2lvbnMgb2YgdGhlIGludGVycHJldGVyLlxuXG5TZWUgYWxzbyB0aGUgZGVzY3JpcHRpb24gb2YgdGhlICJ0cnkiIHN0YXRlbWVudCBpbiBzZWN0aW9uICpUaGUgdHJ5XG5zdGF0ZW1lbnQqIGFuZCAicmFpc2UiIHN0YXRlbWVudCBpbiBzZWN0aW9uICpUaGUgcmFpc2Ugc3RhdGVtZW50Ki5cblxuLVsgRm9vdG5vdGVzIF0tXG5cblsxXSBUaGlzIGxpbWl0YXRpb24gb2NjdXJzIGJlY2F1c2UgdGhlIGNvZGUgdGhhdCBpcyBleGVjdXRlZCBieVxuICAgIHRoZXNlIG9wZXJhdGlvbnMgaXMgbm90IGF2YWlsYWJsZSBhdCB0aGUgdGltZSB0aGUgbW9kdWxlIGlzXG4gICAgY29tcGlsZWQuXG4nLAotICdleGVjbW9kZWwnOiB1J1xuRXhlY3V0aW9uIG1vZGVsXG4qKioqKioqKioqKioqKipcblxuXG5TdHJ1Y3R1cmUgb2YgYSBwcm9ncmFtXG49PT09PT09PT09PT09PT09PT09PT09XG5cbkEgUHl0aG9uIHByb2dyYW0gaXMgY29uc3RydWN0ZWQgZnJvbSBjb2RlIGJsb2Nrcy4gQSAqYmxvY2sqIGlzIGEgcGllY2Vcbm9mIFB5dGhvbiBwcm9ncmFtIHRleHQgdGhhdCBpcyBleGVjdXRlZCBhcyBhIHVuaXQuIFRoZSBmb2xsb3dpbmcgYXJlXG5ibG9ja3M6IGEgbW9kdWxlLCBhIGZ1bmN0aW9uIGJvZHksIGFuZCBhIGNsYXNzIGRlZmluaXRpb24uIEVhY2hcbmNvbW1hbmQgdHlwZWQgaW50ZXJhY3RpdmVseSBpcyBhIGJsb2NrLiAgQSBzY3JpcHQgZmlsZSAoYSBmaWxlIGdpdmVuXG5hcyBzdGFuZGFyZCBpbnB1dCB0byB0aGUgaW50ZXJwcmV0ZXIgb3Igc3BlY2lmaWVkIGFzIGEgY29tbWFuZCBsaW5lXG5hcmd1bWVudCB0byB0aGUgaW50ZXJwcmV0ZXIpIGlzIGEgY29kZSBibG9jay4gIEEgc2NyaXB0IGNvbW1hbmQgKGFcbmNvbW1hbmQgc3BlY2lmaWVkIG9uIHRoZSBpbnRlcnByZXRlciBjb21tYW5kIGxpbmUgd2l0aCB0aGUgXCcqKi1jKipcJ1xub3B0aW9uKSBpcyBhIGNvZGUgYmxvY2suICBUaGUgc3RyaW5nIGFyZ3VtZW50IHBhc3NlZCB0byB0aGUgYnVpbHQtaW5cbmZ1bmN0aW9ucyAiZXZhbCgpIiBhbmQgImV4ZWMoKSIgaXMgYSBjb2RlIGJsb2NrLlxuXG5BIGNvZGUgYmxvY2sgaXMgZXhlY3V0ZWQgaW4gYW4gKmV4ZWN1dGlvbiBmcmFtZSouICBBIGZyYW1lIGNvbnRhaW5zXG5zb21lIGFkbWluaXN0cmF0aXZlIGluZm9ybWF0aW9uICh1c2VkIGZvciBkZWJ1Z2dpbmcpIGFuZCBkZXRlcm1pbmVzXG53aGVyZSBhbmQgaG93IGV4ZWN1dGlvbiBjb250aW51ZXMgYWZ0ZXIgdGhlIGNvZGUgYmxvY2tcJ3MgZXhlY3V0aW9uIGhhc1xuY29tcGxldGVkLlxuXG5cbk5hbWluZyBhbmQgYmluZGluZ1xuPT09PT09PT09PT09PT09PT09XG5cblxuQmluZGluZyBvZiBuYW1lc1xuLS0tLS0tLS0tLS0tLS0tLVxuXG4qTmFtZXMqIHJlZmVyIHRvIG9iamVjdHMuICBOYW1lcyBhcmUgaW50cm9kdWNlZCBieSBuYW1lIGJpbmRpbmdcbm9wZXJhdGlvbnMuXG5cblRoZSBmb2xsb3dpbmcgY29uc3RydWN0cyBiaW5kIG5hbWVzOiBmb3JtYWwgcGFyYW1ldGVycyB0byBmdW5jdGlvbnMsXG4iaW1wb3J0IiBzdGF0ZW1lbnRzLCBjbGFzcyBhbmQgZnVuY3Rpb24gZGVmaW5pdGlvbnMgKHRoZXNlIGJpbmQgdGhlXG5jbGFzcyBvciBmdW5jdGlvbiBuYW1lIGluIHRoZSBkZWZpbmluZyBibG9jayksIGFuZCB0YXJnZXRzIHRoYXQgYXJlXG5pZGVudGlmaWVycyBpZiBvY2N1cnJpbmcgaW4gYW4gYXNzaWdubWVudCwgImZvciIgbG9vcCBoZWFkZXIsIG9yIGFmdGVyXG4iYXMiIGluIGEgIndpdGgiIHN0YXRlbWVudCBvciAiZXhjZXB0IiBjbGF1c2UuIFRoZSAiaW1wb3J0IiBzdGF0ZW1lbnRcbm9mIHRoZSBmb3JtICJmcm9tIC4uLiBpbXBvcnQgKiIgYmluZHMgYWxsIG5hbWVzIGRlZmluZWQgaW4gdGhlXG5pbXBvcnRlZCBtb2R1bGUsIGV4Y2VwdCB0aG9zZSBiZWdpbm5pbmcgd2l0aCBhbiB1bmRlcnNjb3JlLiAgVGhpcyBmb3JtXG5tYXkgb25seSBiZSB1c2VkIGF0IHRoZSBtb2R1bGUgbGV2ZWwuXG5cbkEgdGFyZ2V0IG9jY3VycmluZyBpbiBhICJkZWwiIHN0YXRlbWVudCBpcyBhbHNvIGNvbnNpZGVyZWQgYm91bmQgZm9yXG50aGlzIHB1cnBvc2UgKHRob3VnaCB0aGUgYWN0dWFsIHNlbWFudGljcyBhcmUgdG8gdW5iaW5kIHRoZSBuYW1lKS5cblxuRWFjaCBhc3NpZ25tZW50IG9yIGltcG9ydCBzdGF0ZW1lbnQgb2NjdXJzIHdpdGhpbiBhIGJsb2NrIGRlZmluZWQgYnkgYVxuY2xhc3Mgb3IgZnVuY3Rpb24gZGVmaW5pdGlvbiBvciBhdCB0aGUgbW9kdWxlIGxldmVsICh0aGUgdG9wLWxldmVsXG5jb2RlIGJsb2NrKS5cblxuSWYgYSBuYW1lIGlzIGJvdW5kIGluIGEgYmxvY2ssIGl0IGlzIGEgbG9jYWwgdmFyaWFibGUgb2YgdGhhdCBibG9jayxcbnVubGVzcyBkZWNsYXJlZCBhcyAibm9ubG9jYWwiIG9yICJnbG9iYWwiLiAgSWYgYSBuYW1lIGlzIGJvdW5kIGF0IHRoZVxubW9kdWxlIGxldmVsLCBpdCBpcyBhIGdsb2JhbCB2YXJpYWJsZS4gIChUaGUgdmFyaWFibGVzIG9mIHRoZSBtb2R1bGVcbmNvZGUgYmxvY2sgYXJlIGxvY2FsIGFuZCBnbG9iYWwuKSAgSWYgYSB2YXJpYWJsZSBpcyB1c2VkIGluIGEgY29kZVxuYmxvY2sgYnV0IG5vdCBkZWZpbmVkIHRoZXJlLCBpdCBpcyBhICpmcmVlIHZhcmlhYmxlKi5cblxuRWFjaCBvY2N1cnJlbmNlIG9mIGEgbmFtZSBpbiB0aGUgcHJvZ3JhbSB0ZXh0IHJlZmVycyB0byB0aGUgKmJpbmRpbmcqXG5vZiB0aGF0IG5hbWUgZXN0YWJsaXNoZWQgYnkgdGhlIGZvbGxvd2luZyBuYW1lIHJlc29sdXRpb24gcnVsZXMuXG5cblxuUmVzb2x1dGlvbiBvZiBuYW1lc1xuLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5BICpzY29wZSogZGVmaW5lcyB0aGUgdmlzaWJpbGl0eSBvZiBhIG5hbWUgd2l0aGluIGEgYmxvY2suICBJZiBhIGxvY2FsXG52YXJpYWJsZSBpcyBkZWZpbmVkIGluIGEgYmxvY2ssIGl0cyBzY29wZSBpbmNsdWRlcyB0aGF0IGJsb2NrLiAgSWYgdGhlXG5kZWZpbml0aW9uIG9jY3VycyBpbiBhIGZ1bmN0aW9uIGJsb2NrLCB0aGUgc2NvcGUgZXh0ZW5kcyB0byBhbnkgYmxvY2tzXG5jb250YWluZWQgd2l0aGluIHRoZSBkZWZpbmluZyBvbmUsIHVubGVzcyBhIGNvbnRhaW5lZCBibG9jayBpbnRyb2R1Y2VzXG5hIGRpZmZlcmVudCBiaW5kaW5nIGZvciB0aGUgbmFtZS5cblxuV2hlbiBhIG5hbWUgaXMgdXNlZCBpbiBhIGNvZGUgYmxvY2ssIGl0IGlzIHJlc29sdmVkIHVzaW5nIHRoZSBuZWFyZXN0XG5lbmNsb3Npbmcgc2NvcGUuICBUaGUgc2V0IG9mIGFsbCBzdWNoIHNjb3BlcyB2aXNpYmxlIHRvIGEgY29kZSBibG9ja1xuaXMgY2FsbGVkIHRoZSBibG9ja1wncyAqZW52aXJvbm1lbnQqLlxuXG5XaGVuIGEgbmFtZSBpcyBub3QgZm91bmQgYXQgYWxsLCBhICJOYW1lRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQuIElmXG50aGUgY3VycmVudCBzY29wZSBpcyBhIGZ1bmN0aW9uIHNjb3BlLCBhbmQgdGhlIG5hbWUgcmVmZXJzIHRvIGEgbG9jYWxcbnZhcmlhYmxlIHRoYXQgaGFzIG5vdCB5ZXQgYmVlbiBib3VuZCB0byBhIHZhbHVlIGF0IHRoZSBwb2ludCB3aGVyZSB0aGVcbm5hbWUgaXMgdXNlZCwgYW4gIlVuYm91bmRMb2NhbEVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLlxuIlVuYm91bmRMb2NhbEVycm9yIiBpcyBhIHN1YmNsYXNzIG9mICJOYW1lRXJyb3IiLlxuXG5JZiBhIG5hbWUgYmluZGluZyBvcGVyYXRpb24gb2NjdXJzIGFueXdoZXJlIHdpdGhpbiBhIGNvZGUgYmxvY2ssIGFsbFxudXNlcyBvZiB0aGUgbmFtZSB3aXRoaW4gdGhlIGJsb2NrIGFyZSB0cmVhdGVkIGFzIHJlZmVyZW5jZXMgdG8gdGhlXG5jdXJyZW50IGJsb2NrLiAgVGhpcyBjYW4gbGVhZCB0byBlcnJvcnMgd2hlbiBhIG5hbWUgaXMgdXNlZCB3aXRoaW4gYVxuYmxvY2sgYmVmb3JlIGl0IGlzIGJvdW5kLiAgVGhpcyBydWxlIGlzIHN1YnRsZS4gIFB5dGhvbiBsYWNrc1xuZGVjbGFyYXRpb25zIGFuZCBhbGxvd3MgbmFtZSBiaW5kaW5nIG9wZXJhdGlvbnMgdG8gb2NjdXIgYW55d2hlcmVcbndpdGhpbiBhIGNvZGUgYmxvY2suICBUaGUgbG9jYWwgdmFyaWFibGVzIG9mIGEgY29kZSBibG9jayBjYW4gYmVcbmRldGVybWluZWQgYnkgc2Nhbm5pbmcgdGhlIGVudGlyZSB0ZXh0IG9mIHRoZSBibG9jayBmb3IgbmFtZSBiaW5kaW5nXG5vcGVyYXRpb25zLlxuXG5JZiB0aGUgImdsb2JhbCIgc3RhdGVtZW50IG9jY3VycyB3aXRoaW4gYSBibG9jaywgYWxsIHVzZXMgb2YgdGhlIG5hbWVcbnNwZWNpZmllZCBpbiB0aGUgc3RhdGVtZW50IHJlZmVyIHRvIHRoZSBiaW5kaW5nIG9mIHRoYXQgbmFtZSBpbiB0aGVcbnRvcC1sZXZlbCBuYW1lc3BhY2UuICBOYW1lcyBhcmUgcmVzb2x2ZWQgaW4gdGhlIHRvcC1sZXZlbCBuYW1lc3BhY2UgYnlcbnNlYXJjaGluZyB0aGUgZ2xvYmFsIG5hbWVzcGFjZSwgaS5lLiB0aGUgbmFtZXNwYWNlIG9mIHRoZSBtb2R1bGVcbmNvbnRhaW5pbmcgdGhlIGNvZGUgYmxvY2ssIGFuZCB0aGUgYnVpbHRpbnMgbmFtZXNwYWNlLCB0aGUgbmFtZXNwYWNlXG5vZiB0aGUgbW9kdWxlICJidWlsdGlucyIuICBUaGUgZ2xvYmFsIG5hbWVzcGFjZSBpcyBzZWFyY2hlZCBmaXJzdC4gIElmXG50aGUgbmFtZSBpcyBub3QgZm91bmQgdGhlcmUsIHRoZSBidWlsdGlucyBuYW1lc3BhY2UgaXMgc2VhcmNoZWQuICBUaGVcbiJnbG9iYWwiIHN0YXRlbWVudCBtdXN0IHByZWNlZGUgYWxsIHVzZXMgb2YgdGhlIG5hbWUuXG5cblRoZSAiZ2xvYmFsIiBzdGF0ZW1lbnQgaGFzIHRoZSBzYW1lIHNjb3BlIGFzIGEgbmFtZSBiaW5kaW5nIG9wZXJhdGlvblxuaW4gdGhlIHNhbWUgYmxvY2suICBJZiB0aGUgbmVhcmVzdCBlbmNsb3Npbmcgc2NvcGUgZm9yIGEgZnJlZSB2YXJpYWJsZVxuY29udGFpbnMgYSBnbG9iYWwgc3RhdGVtZW50LCB0aGUgZnJlZSB2YXJpYWJsZSBpcyB0cmVhdGVkIGFzIGEgZ2xvYmFsLlxuXG5UaGUgIm5vbmxvY2FsIiBzdGF0ZW1lbnQgY2F1c2VzIGNvcnJlc3BvbmRpbmcgbmFtZXMgdG8gcmVmZXIgdG9cbnByZXZpb3VzbHkgYm91bmQgdmFyaWFibGVzIGluIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBmdW5jdGlvbiBzY29wZS5cbiJTeW50YXhFcnJvciIgaXMgcmFpc2VkIGF0IGNvbXBpbGUgdGltZSBpZiB0aGUgZ2l2ZW4gbmFtZSBkb2VzIG5vdFxuZXhpc3QgaW4gYW55IGVuY2xvc2luZyBmdW5jdGlvbiBzY29wZS5cblxuVGhlIG5hbWVzcGFjZSBmb3IgYSBtb2R1bGUgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIHRoZSBmaXJzdCB0aW1lIGFcbm1vZHVsZSBpcyBpbXBvcnRlZC4gIFRoZSBtYWluIG1vZHVsZSBmb3IgYSBzY3JpcHQgaXMgYWx3YXlzIGNhbGxlZFxuIl9fbWFpbl9fIi5cblxuQ2xhc3MgZGVmaW5pdGlvbiBibG9ja3MgYW5kIGFyZ3VtZW50cyB0byAiZXhlYygpIiBhbmQgImV2YWwoKSIgYXJlXG5zcGVjaWFsIGluIHRoZSBjb250ZXh0IG9mIG5hbWUgcmVzb2x1dGlvbi4gQSBjbGFzcyBkZWZpbml0aW9uIGlzIGFuXG5leGVjdXRhYmxlIHN0YXRlbWVudCB0aGF0IG1heSB1c2UgYW5kIGRlZmluZSBuYW1lcy4gVGhlc2UgcmVmZXJlbmNlc1xuZm9sbG93IHRoZSBub3JtYWwgcnVsZXMgZm9yIG5hbWUgcmVzb2x1dGlvbiB3aXRoIGFuIGV4Y2VwdGlvbiB0aGF0XG51bmJvdW5kIGxvY2FsIHZhcmlhYmxlcyBhcmUgbG9va2VkIHVwIGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlLiBUaGVcbm5hbWVzcGFjZSBvZiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBiZWNvbWVzIHRoZSBhdHRyaWJ1dGUgZGljdGlvbmFyeSBvZlxudGhlIGNsYXNzLiBUaGUgc2NvcGUgb2YgbmFtZXMgZGVmaW5lZCBpbiBhIGNsYXNzIGJsb2NrIGlzIGxpbWl0ZWQgdG9cbnRoZSBjbGFzcyBibG9jazsgaXQgZG9lcyBub3QgZXh0ZW5kIHRvIHRoZSBjb2RlIGJsb2NrcyBvZiBtZXRob2RzIC0tXG50aGlzIGluY2x1ZGVzIGNvbXByZWhlbnNpb25zIGFuZCBnZW5lcmF0b3IgZXhwcmVzc2lvbnMgc2luY2UgdGhleSBhcmVcbmltcGxlbWVudGVkIHVzaW5nIGEgZnVuY3Rpb24gc2NvcGUuICBUaGlzIG1lYW5zIHRoYXQgdGhlIGZvbGxvd2luZ1xud2lsbCBmYWlsOlxuXG4gICBjbGFzcyBBOlxuICAgICAgIGEgPSA0MlxuICAgICAgIGIgPSBsaXN0KGEgKyBpIGZvciBpIGluIHJhbmdlKDEwKSlcblxuXG5CdWlsdGlucyBhbmQgcmVzdHJpY3RlZCBleGVjdXRpb25cbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5UaGUgYnVpbHRpbnMgbmFtZXNwYWNlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXhlY3V0aW9uIG9mIGEgY29kZSBibG9ja1xuaXMgYWN0dWFsbHkgZm91bmQgYnkgbG9va2luZyB1cCB0aGUgbmFtZSAiX19idWlsdGluc19fIiBpbiBpdHMgZ2xvYmFsXG5uYW1lc3BhY2U7IHRoaXMgc2hvdWxkIGJlIGEgZGljdGlvbmFyeSBvciBhIG1vZHVsZSAoaW4gdGhlIGxhdHRlciBjYXNlXG50aGUgbW9kdWxlXCdzIGRpY3Rpb25hcnkgaXMgdXNlZCkuICBCeSBkZWZhdWx0LCB3aGVuIGluIHRoZSAiX19tYWluX18iXG5tb2R1bGUsICJfX2J1aWx0aW5zX18iIGlzIHRoZSBidWlsdC1pbiBtb2R1bGUgImJ1aWx0aW5zIjsgd2hlbiBpbiBhbnlcbm90aGVyIG1vZHVsZSwgIl9fYnVpbHRpbnNfXyIgaXMgYW4gYWxpYXMgZm9yIHRoZSBkaWN0aW9uYXJ5IG9mIHRoZVxuImJ1aWx0aW5zIiBtb2R1bGUgaXRzZWxmLiAgIl9fYnVpbHRpbnNfXyIgY2FuIGJlIHNldCB0byBhIHVzZXItY3JlYXRlZFxuZGljdGlvbmFyeSB0byBjcmVhdGUgYSB3ZWFrIGZvcm0gb2YgcmVzdHJpY3RlZCBleGVjdXRpb24uXG5cbioqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogVXNlcnMgc2hvdWxkIG5vdCB0b3VjaFxuIl9fYnVpbHRpbnNfXyI7IGl0IGlzIHN0cmljdGx5IGFuIGltcGxlbWVudGF0aW9uIGRldGFpbC4gIFVzZXJzXG53YW50aW5nIHRvIG92ZXJyaWRlIHZhbHVlcyBpbiB0aGUgYnVpbHRpbnMgbmFtZXNwYWNlIHNob3VsZCAiaW1wb3J0IlxudGhlICJidWlsdGlucyIgbW9kdWxlIGFuZCBtb2RpZnkgaXRzIGF0dHJpYnV0ZXMgYXBwcm9wcmlhdGVseS5cblxuXG5JbnRlcmFjdGlvbiB3aXRoIGR5bmFtaWMgZmVhdHVyZXNcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5OYW1lIHJlc29sdXRpb24gb2YgZnJlZSB2YXJpYWJsZXMgb2NjdXJzIGF0IHJ1bnRpbWUsIG5vdCBhdCBjb21waWxlXG50aW1lLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGZvbGxvd2luZyBjb2RlIHdpbGwgcHJpbnQgNDI6XG5cbiAgIGkgPSAxMFxuICAgZGVmIGYoKTpcbiAgICAgICBwcmludChpKVxuICAgaSA9IDQyXG4gICBmKClcblxuVGhlcmUgYXJlIHNldmVyYWwgY2FzZXMgd2hlcmUgUHl0aG9uIHN0YXRlbWVudHMgYXJlIGlsbGVnYWwgd2hlbiB1c2VkXG5pbiBjb25qdW5jdGlvbiB3aXRoIG5lc3RlZCBzY29wZXMgdGhhdCBjb250YWluIGZyZWUgdmFyaWFibGVzLlxuXG5JZiBhIHZhcmlhYmxlIGlzIHJlZmVyZW5jZWQgaW4gYW4gZW5jbG9zaW5nIHNjb3BlLCBpdCBpcyBpbGxlZ2FsIHRvXG5kZWxldGUgdGhlIG5hbWUuICBBbiBlcnJvciB3aWxsIGJlIHJlcG9ydGVkIGF0IGNvbXBpbGUgdGltZS5cblxuVGhlICJldmFsKCkiIGFuZCAiZXhlYygpIiBmdW5jdGlvbnMgZG8gbm90IGhhdmUgYWNjZXNzIHRvIHRoZSBmdWxsXG5lbnZpcm9ubWVudCBmb3IgcmVzb2x2aW5nIG5hbWVzLiAgTmFtZXMgbWF5IGJlIHJlc29sdmVkIGluIHRoZSBsb2NhbFxuYW5kIGdsb2JhbCBuYW1lc3BhY2VzIG9mIHRoZSBjYWxsZXIuICBGcmVlIHZhcmlhYmxlcyBhcmUgbm90IHJlc29sdmVkXG5pbiB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgbmFtZXNwYWNlLCBidXQgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuICBbMV1cblRoZSAiZXhlYygpIiBhbmQgImV2YWwoKSIgZnVuY3Rpb25zIGhhdmUgb3B0aW9uYWwgYXJndW1lbnRzIHRvXG5vdmVycmlkZSB0aGUgZ2xvYmFsIGFuZCBsb2NhbCBuYW1lc3BhY2UuICBJZiBvbmx5IG9uZSBuYW1lc3BhY2UgaXNcbnNwZWNpZmllZCwgaXQgaXMgdXNlZCBmb3IgYm90aC5cblxuXG5FeGNlcHRpb25zXG49PT09PT09PT09XG5cbkV4Y2VwdGlvbnMgYXJlIGEgbWVhbnMgb2YgYnJlYWtpbmcgb3V0IG9mIHRoZSBub3JtYWwgZmxvdyBvZiBjb250cm9sXG5vZiBhIGNvZGUgYmxvY2sgaW4gb3JkZXIgdG8gaGFuZGxlIGVycm9ycyBvciBvdGhlciBleGNlcHRpb25hbFxuY29uZGl0aW9ucy4gIEFuIGV4Y2VwdGlvbiBpcyAqcmFpc2VkKiBhdCB0aGUgcG9pbnQgd2hlcmUgdGhlIGVycm9yIGlzXG5kZXRlY3RlZDsgaXQgbWF5IGJlICpoYW5kbGVkKiBieSB0aGUgc3Vycm91bmRpbmcgY29kZSBibG9jayBvciBieSBhbnlcbmNvZGUgYmxvY2sgdGhhdCBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGludm9rZWQgdGhlIGNvZGUgYmxvY2sgd2hlcmVcbnRoZSBlcnJvciBvY2N1cnJlZC5cblxuVGhlIFB5dGhvbiBpbnRlcnByZXRlciByYWlzZXMgYW4gZXhjZXB0aW9uIHdoZW4gaXQgZGV0ZWN0cyBhIHJ1bi10aW1lXG5lcnJvciAoc3VjaCBhcyBkaXZpc2lvbiBieSB6ZXJvKS4gIEEgUHl0aG9uIHByb2dyYW0gY2FuIGFsc29cbmV4cGxpY2l0bHkgcmFpc2UgYW4gZXhjZXB0aW9uIHdpdGggdGhlICJyYWlzZSIgc3RhdGVtZW50LiBFeGNlcHRpb25cbmhhbmRsZXJzIGFyZSBzcGVjaWZpZWQgd2l0aCB0aGUgInRyeSIgLi4uICJleGNlcHQiIHN0YXRlbWVudC4gIFRoZVxuImZpbmFsbHkiIGNsYXVzZSBvZiBzdWNoIGEgc3RhdGVtZW50IGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgY2xlYW51cFxuY29kZSB3aGljaCBkb2VzIG5vdCBoYW5kbGUgdGhlIGV4Y2VwdGlvbiwgYnV0IGlzIGV4ZWN1dGVkIHdoZXRoZXIgYW5cbmV4Y2VwdGlvbiBvY2N1cnJlZCBvciBub3QgaW4gdGhlIHByZWNlZGluZyBjb2RlLlxuXG5QeXRob24gdXNlcyB0aGUgInRlcm1pbmF0aW9uIiBtb2RlbCBvZiBlcnJvciBoYW5kbGluZzogYW4gZXhjZXB0aW9uXG5oYW5kbGVyIGNhbiBmaW5kIG91dCB3aGF0IGhhcHBlbmVkIGFuZCBjb250aW51ZSBleGVjdXRpb24gYXQgYW4gb3V0ZXJcbmxldmVsLCBidXQgaXQgY2Fubm90IHJlcGFpciB0aGUgY2F1c2Ugb2YgdGhlIGVycm9yIGFuZCByZXRyeSB0aGVcbmZhaWxpbmcgb3BlcmF0aW9uIChleGNlcHQgYnkgcmUtZW50ZXJpbmcgdGhlIG9mZmVuZGluZyBwaWVjZSBvZiBjb2RlXG5mcm9tIHRoZSB0b3ApLlxuXG5XaGVuIGFuIGV4Y2VwdGlvbiBpcyBub3QgaGFuZGxlZCBhdCBhbGwsIHRoZSBpbnRlcnByZXRlciB0ZXJtaW5hdGVzXG5leGVjdXRpb24gb2YgdGhlIHByb2dyYW0sIG9yIHJldHVybnMgdG8gaXRzIGludGVyYWN0aXZlIG1haW4gbG9vcC4gIEluXG5laXRoZXIgY2FzZSwgaXQgcHJpbnRzIGEgc3RhY2sgYmFja3RyYWNlLCBleGNlcHQgd2hlbiB0aGUgZXhjZXB0aW9uIGlzXG4iU3lzdGVtRXhpdCIuXG5cbkV4Y2VwdGlvbnMgYXJlIGlkZW50aWZpZWQgYnkgY2xhc3MgaW5zdGFuY2VzLiAgVGhlICJleGNlcHQiIGNsYXVzZSBpc1xuc2VsZWN0ZWQgZGVwZW5kaW5nIG9uIHRoZSBjbGFzcyBvZiB0aGUgaW5zdGFuY2U6IGl0IG11c3QgcmVmZXJlbmNlIHRoZVxuY2xhc3Mgb2YgdGhlIGluc3RhbmNlIG9yIGEgYmFzZSBjbGFzcyB0aGVyZW9mLiAgVGhlIGluc3RhbmNlIGNhbiBiZVxucmVjZWl2ZWQgYnkgdGhlIGhhbmRsZXIgYW5kIGNhbiBjYXJyeSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZVxuZXhjZXB0aW9uYWwgY29uZGl0aW9uLlxuXG5Ob3RlOiBFeGNlcHRpb24gbWVzc2FnZXMgYXJlIG5vdCBwYXJ0IG9mIHRoZSBQeXRob24gQVBJLiAgVGhlaXJcbiAgY29udGVudHMgbWF5IGNoYW5nZSBmcm9tIG9uZSB2ZXJzaW9uIG9mIFB5dGhvbiB0byB0aGUgbmV4dCB3aXRob3V0XG4gIHdhcm5pbmcgYW5kIHNob3VsZCBub3QgYmUgcmVsaWVkIG9uIGJ5IGNvZGUgd2hpY2ggd2lsbCBydW4gdW5kZXJcbiAgbXVsdGlwbGUgdmVyc2lvbnMgb2YgdGhlIGludGVycHJldGVyLlxuXG5TZWUgYWxzbyB0aGUgZGVzY3JpcHRpb24gb2YgdGhlICJ0cnkiIHN0YXRlbWVudCBpbiBzZWN0aW9uICpUaGUgdHJ5XG5zdGF0ZW1lbnQqIGFuZCAicmFpc2UiIHN0YXRlbWVudCBpbiBzZWN0aW9uICpUaGUgcmFpc2Ugc3RhdGVtZW50Ki5cblxuLVsgRm9vdG5vdGVzIF0tXG5cblsxXSBUaGlzIGxpbWl0YXRpb24gb2NjdXJzIGJlY2F1c2UgdGhlIGNvZGUgdGhhdCBpcyBleGVjdXRlZCBieVxuICAgIHRoZXNlIG9wZXJhdGlvbnMgaXMgbm90IGF2YWlsYWJsZSBhdCB0aGUgdGltZSB0aGUgbW9kdWxlIGlzXG4gICAgY29tcGlsZWQuXG4nLAotICdleHBybGlzdHMnOiB1J1xuRXhwcmVzc2lvbiBsaXN0c1xuKioqKioqKioqKioqKioqKlxuXG4gICBleHByZXNzaW9uX2xpc3QgICAgOjo9IGV4cHJlc3Npb24gKCAiLCIgZXhwcmVzc2lvbiApKiBbIiwiXVxuICAgc3RhcnJlZF9saXN0ICAgICAgIDo6PSBzdGFycmVkX2l0ZW0gKCAiLCIgc3RhcnJlZF9pdGVtICkqIFsiLCJdXG4gICBzdGFycmVkX2V4cHJlc3Npb24gOjo9IGV4cHJlc3Npb24gfCAoIHN0YXJyZWRfaXRlbSAiLCIgKSogW3N0YXJyZWRfaXRlbV1cbiAgIHN0YXJyZWRfaXRlbSAgICAgICA6Oj0gZXhwcmVzc2lvbiB8ICIqIiBvcl9leHByXG5cbkV4Y2VwdCB3aGVuIHBhcnQgb2YgYSBsaXN0IG9yIHNldCBkaXNwbGF5LCBhbiBleHByZXNzaW9uIGxpc3RcbmNvbnRhaW5pbmcgYXQgbGVhc3Qgb25lIGNvbW1hIHlpZWxkcyBhIHR1cGxlLiAgVGhlIGxlbmd0aCBvZiB0aGUgdHVwbGVcbmlzIHRoZSBudW1iZXIgb2YgZXhwcmVzc2lvbnMgaW4gdGhlIGxpc3QuICBUaGUgZXhwcmVzc2lvbnMgYXJlXG5ldmFsdWF0ZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0LlxuXG5BbiBhc3RlcmlzayAiKiIgZGVub3RlcyAqaXRlcmFibGUgdW5wYWNraW5nKi4gIEl0cyBvcGVyYW5kIG11c3QgYmUgYW5cbippdGVyYWJsZSouICBUaGUgaXRlcmFibGUgaXMgZXhwYW5kZWQgaW50byBhIHNlcXVlbmNlIG9mIGl0ZW1zLCB3aGljaFxuYXJlIGluY2x1ZGVkIGluIHRoZSBuZXcgdHVwbGUsIGxpc3QsIG9yIHNldCwgYXQgdGhlIHNpdGUgb2YgdGhlXG51bnBhY2tpbmcuXG5cbk5ldyBpbiB2ZXJzaW9uIDMuNTogSXRlcmFibGUgdW5wYWNraW5nIGluIGV4cHJlc3Npb24gbGlzdHMsIG9yaWdpbmFsbHlcbnByb3Bvc2VkIGJ5ICoqUEVQIDQ0OCoqLlxuXG5UaGUgdHJhaWxpbmcgY29tbWEgaXMgcmVxdWlyZWQgb25seSB0byBjcmVhdGUgYSBzaW5nbGUgdHVwbGUgKGEuay5hLiBhXG4qc2luZ2xldG9uKik7IGl0IGlzIG9wdGlvbmFsIGluIGFsbCBvdGhlciBjYXNlcy4gIEEgc2luZ2xlIGV4cHJlc3Npb25cbndpdGhvdXQgYSB0cmFpbGluZyBjb21tYSBkb2VzblwndCBjcmVhdGUgYSB0dXBsZSwgYnV0IHJhdGhlciB5aWVsZHMgdGhlXG52YWx1ZSBvZiB0aGF0IGV4cHJlc3Npb24uIChUbyBjcmVhdGUgYW4gZW1wdHkgdHVwbGUsIHVzZSBhbiBlbXB0eSBwYWlyXG5vZiBwYXJlbnRoZXNlczogIigpIi4pXG4nLAotICdmbG9hdGluZyc6IHUnXG5GbG9hdGluZyBwb2ludCBsaXRlcmFsc1xuKioqKioqKioqKioqKioqKioqKioqKipcblxuRmxvYXRpbmcgcG9pbnQgbGl0ZXJhbHMgYXJlIGRlc2NyaWJlZCBieSB0aGUgZm9sbG93aW5nIGxleGljYWxcbmRlZmluaXRpb25zOlxuXG4gICBmbG9hdG51bWJlciAgIDo6PSBwb2ludGZsb2F0IHwgZXhwb25lbnRmbG9hdFxuICAgcG9pbnRmbG9hdCAgICA6Oj0gW2ludHBhcnRdIGZyYWN0aW9uIHwgaW50cGFydCAiLiJcbiAgIGV4cG9uZW50ZmxvYXQgOjo9IChpbnRwYXJ0IHwgcG9pbnRmbG9hdCkgZXhwb25lbnRcbiAgIGludHBhcnQgICAgICAgOjo9IGRpZ2l0K1xuICAgZnJhY3Rpb24gICAgICA6Oj0gIi4iIGRpZ2l0K1xuICAgZXhwb25lbnQgICAgICA6Oj0gKCJlIiB8ICJFIikgWyIrIiB8ICItIl0gZGlnaXQrXG5cbk5vdGUgdGhhdCB0aGUgaW50ZWdlciBhbmQgZXhwb25lbnQgcGFydHMgYXJlIGFsd2F5cyBpbnRlcnByZXRlZCB1c2luZ1xucmFkaXggMTAuIEZvciBleGFtcGxlLCAiMDc3ZTAxMCIgaXMgbGVnYWwsIGFuZCBkZW5vdGVzIHRoZSBzYW1lIG51bWJlclxuYXMgIjc3ZTEwIi4gVGhlIGFsbG93ZWQgcmFuZ2Ugb2YgZmxvYXRpbmcgcG9pbnQgbGl0ZXJhbHMgaXNcbmltcGxlbWVudGF0aW9uLWRlcGVuZGVudC4gU29tZSBleGFtcGxlcyBvZiBmbG9hdGluZyBwb2ludCBsaXRlcmFsczpcblxuICAgMy4xNCAgICAxMC4gICAgLjAwMSAgICAxZTEwMCAgICAzLjE0ZS0xMCAgICAwZTBcblxuTm90ZSB0aGF0IG51bWVyaWMgbGl0ZXJhbHMgZG8gbm90IGluY2x1ZGUgYSBzaWduOyBhIHBocmFzZSBsaWtlICItMSJcbmlzIGFjdHVhbGx5IGFuIGV4cHJlc3Npb24gY29tcG9zZWQgb2YgdGhlIHVuYXJ5IG9wZXJhdG9yICItIiBhbmQgdGhlXG5saXRlcmFsICIxIi5cbicsCi0gJ2Zvcic6IHUnXG5UaGUgImZvciIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqXG5cblRoZSAiZm9yIiBzdGF0ZW1lbnQgaXMgdXNlZCB0byBpdGVyYXRlIG92ZXIgdGhlIGVsZW1lbnRzIG9mIGEgc2VxdWVuY2VcbihzdWNoIGFzIGEgc3RyaW5nLCB0dXBsZSBvciBsaXN0KSBvciBvdGhlciBpdGVyYWJsZSBvYmplY3Q6XG5cbiAgIGZvcl9zdG10IDo6PSAiZm9yIiB0YXJnZXRfbGlzdCAiaW4iIGV4cHJlc3Npb25fbGlzdCAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuVGhlIGV4cHJlc3Npb24gbGlzdCBpcyBldmFsdWF0ZWQgb25jZTsgaXQgc2hvdWxkIHlpZWxkIGFuIGl0ZXJhYmxlXG5vYmplY3QuICBBbiBpdGVyYXRvciBpcyBjcmVhdGVkIGZvciB0aGUgcmVzdWx0IG9mIHRoZVxuImV4cHJlc3Npb25fbGlzdCIuICBUaGUgc3VpdGUgaXMgdGhlbiBleGVjdXRlZCBvbmNlIGZvciBlYWNoIGl0ZW1cbnByb3ZpZGVkIGJ5IHRoZSBpdGVyYXRvciwgaW4gdGhlIG9yZGVyIHJldHVybmVkIGJ5IHRoZSBpdGVyYXRvci4gIEVhY2hcbml0ZW0gaW4gdHVybiBpcyBhc3NpZ25lZCB0byB0aGUgdGFyZ2V0IGxpc3QgdXNpbmcgdGhlIHN0YW5kYXJkIHJ1bGVzXG5mb3IgYXNzaWdubWVudHMgKHNlZSAqQXNzaWdubWVudCBzdGF0ZW1lbnRzKiksIGFuZCB0aGVuIHRoZSBzdWl0ZSBpc1xuZXhlY3V0ZWQuICBXaGVuIHRoZSBpdGVtcyBhcmUgZXhoYXVzdGVkICh3aGljaCBpcyBpbW1lZGlhdGVseSB3aGVuIHRoZVxuc2VxdWVuY2UgaXMgZW1wdHkgb3IgYW4gaXRlcmF0b3IgcmFpc2VzIGEgIlN0b3BJdGVyYXRpb24iIGV4Y2VwdGlvbiksXG50aGUgc3VpdGUgaW4gdGhlICJlbHNlIiBjbGF1c2UsIGlmIHByZXNlbnQsIGlzIGV4ZWN1dGVkLCBhbmQgdGhlIGxvb3BcbnRlcm1pbmF0ZXMuXG5cbkEgImJyZWFrIiBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHRlcm1pbmF0ZXMgdGhlIGxvb3BcbndpdGhvdXQgZXhlY3V0aW5nIHRoZSAiZWxzZSIgY2xhdXNlXCdzIHN1aXRlLiAgQSAiY29udGludWUiIHN0YXRlbWVudFxuZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHNraXBzIHRoZSByZXN0IG9mIHRoZSBzdWl0ZSBhbmQgY29udGludWVzXG53aXRoIHRoZSBuZXh0IGl0ZW0sIG9yIHdpdGggdGhlICJlbHNlIiBjbGF1c2UgaWYgdGhlcmUgaXMgbm8gbmV4dFxuaXRlbS5cblxuVGhlIGZvci1sb29wIG1ha2VzIGFzc2lnbm1lbnRzIHRvIHRoZSB2YXJpYWJsZXMocykgaW4gdGhlIHRhcmdldCBsaXN0LlxuVGhpcyBvdmVyd3JpdGVzIGFsbCBwcmV2aW91cyBhc3NpZ25tZW50cyB0byB0aG9zZSB2YXJpYWJsZXMgaW5jbHVkaW5nXG50aG9zZSBtYWRlIGluIHRoZSBzdWl0ZSBvZiB0aGUgZm9yLWxvb3A6XG5cbiAgIGZvciBpIGluIHJhbmdlKDEwKTpcbiAgICAgICBwcmludChpKVxuICAgICAgIGkgPSA1ICAgICAgICAgICAgICMgdGhpcyB3aWxsIG5vdCBhZmZlY3QgdGhlIGZvci1sb29wXG4gICAgICAgICAgICAgICAgICAgICAgICAgIyBiZWNhdXNlIGkgd2lsbCBiZSBvdmVyd3JpdHRlbiB3aXRoIHRoZSBuZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIyBpbmRleCBpbiB0aGUgcmFuZ2VcblxuTmFtZXMgaW4gdGhlIHRhcmdldCBsaXN0IGFyZSBub3QgZGVsZXRlZCB3aGVuIHRoZSBsb29wIGlzIGZpbmlzaGVkLFxuYnV0IGlmIHRoZSBzZXF1ZW5jZSBpcyBlbXB0eSwgdGhleSB3aWxsIG5vdCBoYXZlIGJlZW4gYXNzaWduZWQgdG8gYXRcbmFsbCBieSB0aGUgbG9vcC4gIEhpbnQ6IHRoZSBidWlsdC1pbiBmdW5jdGlvbiAicmFuZ2UoKSIgcmV0dXJucyBhblxuaXRlcmF0b3Igb2YgaW50ZWdlcnMgc3VpdGFibGUgdG8gZW11bGF0ZSB0aGUgZWZmZWN0IG9mIFBhc2NhbFwncyAiZm9yIGlcbjo9IGEgdG8gYiBkbyI7IGUuZy4sICJsaXN0KHJhbmdlKDMpKSIgcmV0dXJucyB0aGUgbGlzdCAiWzAsIDEsIDJdIi5cblxuTm90ZTogVGhlcmUgaXMgYSBzdWJ0bGV0eSB3aGVuIHRoZSBzZXF1ZW5jZSBpcyBiZWluZyBtb2RpZmllZCBieSB0aGVcbiAgbG9vcCAodGhpcyBjYW4gb25seSBvY2N1ciBmb3IgbXV0YWJsZSBzZXF1ZW5jZXMsIGkuZS4gbGlzdHMpLiAgQW5cbiAgaW50ZXJuYWwgY291bnRlciBpcyB1c2VkIHRvIGtlZXAgdHJhY2sgb2Ygd2hpY2ggaXRlbSBpcyB1c2VkIG5leHQsXG4gIGFuZCB0aGlzIGlzIGluY3JlbWVudGVkIG9uIGVhY2ggaXRlcmF0aW9uLiAgV2hlbiB0aGlzIGNvdW50ZXIgaGFzXG4gIHJlYWNoZWQgdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2UgdGhlIGxvb3AgdGVybWluYXRlcy4gIFRoaXMgbWVhbnNcbiAgdGhhdCBpZiB0aGUgc3VpdGUgZGVsZXRlcyB0aGUgY3VycmVudCAob3IgYSBwcmV2aW91cykgaXRlbSBmcm9tIHRoZVxuICBzZXF1ZW5jZSwgdGhlIG5leHQgaXRlbSB3aWxsIGJlIHNraXBwZWQgKHNpbmNlIGl0IGdldHMgdGhlIGluZGV4IG9mXG4gIHRoZSBjdXJyZW50IGl0ZW0gd2hpY2ggaGFzIGFscmVhZHkgYmVlbiB0cmVhdGVkKS4gIExpa2V3aXNlLCBpZiB0aGVcbiAgc3VpdGUgaW5zZXJ0cyBhbiBpdGVtIGluIHRoZSBzZXF1ZW5jZSBiZWZvcmUgdGhlIGN1cnJlbnQgaXRlbSwgdGhlXG4gIGN1cnJlbnQgaXRlbSB3aWxsIGJlIHRyZWF0ZWQgYWdhaW4gdGhlIG5leHQgdGltZSB0aHJvdWdoIHRoZSBsb29wLlxuICBUaGlzIGNhbiBsZWFkIHRvIG5hc3R5IGJ1Z3MgdGhhdCBjYW4gYmUgYXZvaWRlZCBieSBtYWtpbmcgYVxuICB0ZW1wb3JhcnkgY29weSB1c2luZyBhIHNsaWNlIG9mIHRoZSB3aG9sZSBzZXF1ZW5jZSwgZS5nLixcblxuICAgICBmb3IgeCBpbiBhWzpdOlxuICAgICAgICAgaWYgeCA8IDA6IGEucmVtb3ZlKHgpXG4nLAotICdmb3JtYXRzdHJpbmdzJzogdSdcbkZvcm1hdCBTdHJpbmcgU3ludGF4XG4qKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgInN0ci5mb3JtYXQoKSIgbWV0aG9kIGFuZCB0aGUgIkZvcm1hdHRlciIgY2xhc3Mgc2hhcmUgdGhlIHNhbWVcbnN5bnRheCBmb3IgZm9ybWF0IHN0cmluZ3MgKGFsdGhvdWdoIGluIHRoZSBjYXNlIG9mICJGb3JtYXR0ZXIiLFxuc3ViY2xhc3NlcyBjYW4gZGVmaW5lIHRoZWlyIG93biBmb3JtYXQgc3RyaW5nIHN5bnRheCkuXG5cbkZvcm1hdCBzdHJpbmdzIGNvbnRhaW4gInJlcGxhY2VtZW50IGZpZWxkcyIgc3Vycm91bmRlZCBieSBjdXJseSBicmFjZXNcbiJ7fSIuIEFueXRoaW5nIHRoYXQgaXMgbm90IGNvbnRhaW5lZCBpbiBicmFjZXMgaXMgY29uc2lkZXJlZCBsaXRlcmFsXG50ZXh0LCB3aGljaCBpcyBjb3BpZWQgdW5jaGFuZ2VkIHRvIHRoZSBvdXRwdXQuICBJZiB5b3UgbmVlZCB0byBpbmNsdWRlXG5hIGJyYWNlIGNoYXJhY3RlciBpbiB0aGUgbGl0ZXJhbCB0ZXh0LCBpdCBjYW4gYmUgZXNjYXBlZCBieSBkb3VibGluZzpcbiJ7eyIgYW5kICJ9fSIuXG5cblRoZSBncmFtbWFyIGZvciBhIHJlcGxhY2VtZW50IGZpZWxkIGlzIGFzIGZvbGxvd3M6XG5cbiAgICAgIHJlcGxhY2VtZW50X2ZpZWxkIDo6PSAieyIgW2ZpZWxkX25hbWVdIFsiISIgY29udmVyc2lvbl0gWyI6IiBmb3JtYXRfc3BlY10gIn0iXG4gICAgICBmaWVsZF9uYW1lICAgICAgICA6Oj0gYXJnX25hbWUgKCIuIiBhdHRyaWJ1dGVfbmFtZSB8ICJbIiBlbGVtZW50X2luZGV4ICJdIikqXG4gICAgICBhcmdfbmFtZSAgICAgICAgICA6Oj0gW2lkZW50aWZpZXIgfCBpbnRlZ2VyXVxuICAgICAgYXR0cmlidXRlX25hbWUgICAgOjo9IGlkZW50aWZpZXJcbiAgICAgIGVsZW1lbnRfaW5kZXggICAgIDo6PSBpbnRlZ2VyIHwgaW5kZXhfc3RyaW5nXG4gICAgICBpbmRleF9zdHJpbmcgICAgICA6Oj0gPGFueSBzb3VyY2UgY2hhcmFjdGVyIGV4Y2VwdCAiXSI+ICtcbiAgICAgIGNvbnZlcnNpb24gICAgICAgIDo6PSAiciIgfCAicyIgfCAiYSJcbiAgICAgIGZvcm1hdF9zcGVjICAgICAgIDo6PSA8ZGVzY3JpYmVkIGluIHRoZSBuZXh0IHNlY3Rpb24+XG5cbkluIGxlc3MgZm9ybWFsIHRlcm1zLCB0aGUgcmVwbGFjZW1lbnQgZmllbGQgY2FuIHN0YXJ0IHdpdGggYVxuKmZpZWxkX25hbWUqIHRoYXQgc3BlY2lmaWVzIHRoZSBvYmplY3Qgd2hvc2UgdmFsdWUgaXMgdG8gYmUgZm9ybWF0dGVkXG5hbmQgaW5zZXJ0ZWQgaW50byB0aGUgb3V0cHV0IGluc3RlYWQgb2YgdGhlIHJlcGxhY2VtZW50IGZpZWxkLiBUaGVcbipmaWVsZF9uYW1lKiBpcyBvcHRpb25hbGx5IGZvbGxvd2VkIGJ5IGEgICpjb252ZXJzaW9uKiBmaWVsZCwgd2hpY2ggaXNcbnByZWNlZGVkIGJ5IGFuIGV4Y2xhbWF0aW9uIHBvaW50ICJcJyFcJyIsIGFuZCBhICpmb3JtYXRfc3BlYyosIHdoaWNoIGlzXG5wcmVjZWRlZCBieSBhIGNvbG9uICJcJzpcJyIuICBUaGVzZSBzcGVjaWZ5IGEgbm9uLWRlZmF1bHQgZm9ybWF0IGZvciB0aGVcbnJlcGxhY2VtZW50IHZhbHVlLlxuXG5TZWUgYWxzbyB0aGUgKkZvcm1hdCBTcGVjaWZpY2F0aW9uIE1pbmktTGFuZ3VhZ2UqIHNlY3Rpb24uXG5cblRoZSAqZmllbGRfbmFtZSogaXRzZWxmIGJlZ2lucyB3aXRoIGFuICphcmdfbmFtZSogdGhhdCBpcyBlaXRoZXIgYVxubnVtYmVyIG9yIGEga2V5d29yZC4gIElmIGl0XCdzIGEgbnVtYmVyLCBpdCByZWZlcnMgdG8gYSBwb3NpdGlvbmFsXG5hcmd1bWVudCwgYW5kIGlmIGl0XCdzIGEga2V5d29yZCwgaXQgcmVmZXJzIHRvIGEgbmFtZWQga2V5d29yZFxuYXJndW1lbnQuICBJZiB0aGUgbnVtZXJpY2FsIGFyZ19uYW1lcyBpbiBhIGZvcm1hdCBzdHJpbmcgYXJlIDAsIDEsIDIsXG4uLi4gaW4gc2VxdWVuY2UsIHRoZXkgY2FuIGFsbCBiZSBvbWl0dGVkIChub3QganVzdCBzb21lKSBhbmQgdGhlXG5udW1iZXJzIDAsIDEsIDIsIC4uLiB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgaW5zZXJ0ZWQgaW4gdGhhdCBvcmRlci5cbkJlY2F1c2UgKmFyZ19uYW1lKiBpcyBub3QgcXVvdGUtZGVsaW1pdGVkLCBpdCBpcyBub3QgcG9zc2libGUgdG9cbnNwZWNpZnkgYXJiaXRyYXJ5IGRpY3Rpb25hcnkga2V5cyAoZS5nLiwgdGhlIHN0cmluZ3MgIlwnMTBcJyIgb3JcbiJcJzotXVwnIikgd2l0aGluIGEgZm9ybWF0IHN0cmluZy4gVGhlICphcmdfbmFtZSogY2FuIGJlIGZvbGxvd2VkIGJ5IGFueVxubnVtYmVyIG9mIGluZGV4IG9yIGF0dHJpYnV0ZSBleHByZXNzaW9ucy4gQW4gZXhwcmVzc2lvbiBvZiB0aGUgZm9ybVxuIlwnLm5hbWVcJyIgc2VsZWN0cyB0aGUgbmFtZWQgYXR0cmlidXRlIHVzaW5nICJnZXRhdHRyKCkiLCB3aGlsZSBhblxuZXhwcmVzc2lvbiBvZiB0aGUgZm9ybSAiXCdbaW5kZXhdXCciIGRvZXMgYW4gaW5kZXggbG9va3VwIHVzaW5nXG4iX19nZXRpdGVtX18oKSIuXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IFRoZSBwb3NpdGlvbmFsIGFyZ3VtZW50IHNwZWNpZmllcnMgY2FuIGJlXG5vbWl0dGVkLCBzbyAiXCd7fSB7fVwnIiBpcyBlcXVpdmFsZW50IHRvICJcJ3swfSB7MX1cJyIuXG5cblNvbWUgc2ltcGxlIGZvcm1hdCBzdHJpbmcgZXhhbXBsZXM6XG5cbiAgICJGaXJzdCwgdGhvdSBzaGFsdCBjb3VudCB0byB7MH0iICAjIFJlZmVyZW5jZXMgZmlyc3QgcG9zaXRpb25hbCBhcmd1bWVudFxuICAgIkJyaW5nIG1lIGEge30iICAgICAgICAgICAgICAgICAgICMgSW1wbGljaXRseSByZWZlcmVuY2VzIHRoZSBmaXJzdCBwb3NpdGlvbmFsIGFyZ3VtZW50XG4gICAiRnJvbSB7fSB0byB7fSIgICAgICAgICAgICAgICAgICAgIyBTYW1lIGFzICJGcm9tIHswfSB0byB7MX0iXG4gICAiTXkgcXVlc3QgaXMge25hbWV9IiAgICAgICAgICAgICAgIyBSZWZlcmVuY2VzIGtleXdvcmQgYXJndW1lbnQgXCduYW1lXCdcbiAgICJXZWlnaHQgaW4gdG9ucyB7MC53ZWlnaHR9IiAgICAgICAjIFwnd2VpZ2h0XCcgYXR0cmlidXRlIG9mIGZpcnN0IHBvc2l0aW9uYWwgYXJnXG4gICAiVW5pdHMgZGVzdHJveWVkOiB7cGxheWVyc1swXX0iICAgIyBGaXJzdCBlbGVtZW50IG9mIGtleXdvcmQgYXJndW1lbnQgXCdwbGF5ZXJzXCcuXG5cblRoZSAqY29udmVyc2lvbiogZmllbGQgY2F1c2VzIGEgdHlwZSBjb2VyY2lvbiBiZWZvcmUgZm9ybWF0dGluZy5cbk5vcm1hbGx5LCB0aGUgam9iIG9mIGZvcm1hdHRpbmcgYSB2YWx1ZSBpcyBkb25lIGJ5IHRoZSAiX19mb3JtYXRfXygpIlxubWV0aG9kIG9mIHRoZSB2YWx1ZSBpdHNlbGYuICBIb3dldmVyLCBpbiBzb21lIGNhc2VzIGl0IGlzIGRlc2lyYWJsZSB0b1xuZm9yY2UgYSB0eXBlIHRvIGJlIGZvcm1hdHRlZCBhcyBhIHN0cmluZywgb3ZlcnJpZGluZyBpdHMgb3duXG5kZWZpbml0aW9uIG9mIGZvcm1hdHRpbmcuICBCeSBjb252ZXJ0aW5nIHRoZSB2YWx1ZSB0byBhIHN0cmluZyBiZWZvcmVcbmNhbGxpbmcgIl9fZm9ybWF0X18oKSIsIHRoZSBub3JtYWwgZm9ybWF0dGluZyBsb2dpYyBpcyBieXBhc3NlZC5cblxuVGhyZWUgY29udmVyc2lvbiBmbGFncyBhcmUgY3VycmVudGx5IHN1cHBvcnRlZDogIlwnIXNcJyIgd2hpY2ggY2FsbHNcbiJzdHIoKSIgb24gdGhlIHZhbHVlLCAiXCchclwnIiB3aGljaCBjYWxscyAicmVwcigpIiBhbmQgIlwnIWFcJyIgd2hpY2hcbmNhbGxzICJhc2NpaSgpIi5cblxuU29tZSBleGFtcGxlczpcblxuICAgIkhhcm9sZFwncyBhIGNsZXZlciB7MCFzfSIgICAgICAgICMgQ2FsbHMgc3RyKCkgb24gdGhlIGFyZ3VtZW50IGZpcnN0XG4gICAiQnJpbmcgb3V0IHRoZSBob2x5IHtuYW1lIXJ9IiAgICAjIENhbGxzIHJlcHIoKSBvbiB0aGUgYXJndW1lbnQgZmlyc3RcbiAgICJNb3JlIHshYX0iICAgICAgICAgICAgICAgICAgICAgICMgQ2FsbHMgYXNjaWkoKSBvbiB0aGUgYXJndW1lbnQgZmlyc3RcblxuVGhlICpmb3JtYXRfc3BlYyogZmllbGQgY29udGFpbnMgYSBzcGVjaWZpY2F0aW9uIG9mIGhvdyB0aGUgdmFsdWVcbnNob3VsZCBiZSBwcmVzZW50ZWQsIGluY2x1ZGluZyBzdWNoIGRldGFpbHMgYXMgZmllbGQgd2lkdGgsIGFsaWdubWVudCxcbnBhZGRpbmcsIGRlY2ltYWwgcHJlY2lzaW9uIGFuZCBzbyBvbi4gIEVhY2ggdmFsdWUgdHlwZSBjYW4gZGVmaW5lIGl0c1xub3duICJmb3JtYXR0aW5nIG1pbmktbGFuZ3VhZ2UiIG9yIGludGVycHJldGF0aW9uIG9mIHRoZSAqZm9ybWF0X3NwZWMqLlxuXG5Nb3N0IGJ1aWx0LWluIHR5cGVzIHN1cHBvcnQgYSBjb21tb24gZm9ybWF0dGluZyBtaW5pLWxhbmd1YWdlLCB3aGljaFxuaXMgZGVzY3JpYmVkIGluIHRoZSBuZXh0IHNlY3Rpb24uXG5cbkEgKmZvcm1hdF9zcGVjKiBmaWVsZCBjYW4gYWxzbyBpbmNsdWRlIG5lc3RlZCByZXBsYWNlbWVudCBmaWVsZHNcbndpdGhpbiBpdC4gVGhlc2UgbmVzdGVkIHJlcGxhY2VtZW50IGZpZWxkcyBtYXkgY29udGFpbiBhIGZpZWxkIG5hbWUsXG5jb252ZXJzaW9uIGZsYWcgYW5kIGZvcm1hdCBzcGVjaWZpY2F0aW9uLCBidXQgZGVlcGVyIG5lc3RpbmcgaXMgbm90XG5hbGxvd2VkLiAgVGhlIHJlcGxhY2VtZW50IGZpZWxkcyB3aXRoaW4gdGhlIGZvcm1hdF9zcGVjIGFyZVxuc3Vic3RpdHV0ZWQgYmVmb3JlIHRoZSAqZm9ybWF0X3NwZWMqIHN0cmluZyBpcyBpbnRlcnByZXRlZC4gVGhpc1xuYWxsb3dzIHRoZSBmb3JtYXR0aW5nIG9mIGEgdmFsdWUgdG8gYmUgZHluYW1pY2FsbHkgc3BlY2lmaWVkLlxuXG5TZWUgdGhlICpGb3JtYXQgZXhhbXBsZXMqIHNlY3Rpb24gZm9yIHNvbWUgZXhhbXBsZXMuXG5cblxuRm9ybWF0IFNwZWNpZmljYXRpb24gTWluaS1MYW5ndWFnZVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4iRm9ybWF0IHNwZWNpZmljYXRpb25zIiBhcmUgdXNlZCB3aXRoaW4gcmVwbGFjZW1lbnQgZmllbGRzIGNvbnRhaW5lZFxud2l0aGluIGEgZm9ybWF0IHN0cmluZyB0byBkZWZpbmUgaG93IGluZGl2aWR1YWwgdmFsdWVzIGFyZSBwcmVzZW50ZWRcbihzZWUgKkZvcm1hdCBTdHJpbmcgU3ludGF4KikuICBUaGV5IGNhbiBhbHNvIGJlIHBhc3NlZCBkaXJlY3RseSB0byB0aGVcbmJ1aWx0LWluICJmb3JtYXQoKSIgZnVuY3Rpb24uICBFYWNoIGZvcm1hdHRhYmxlIHR5cGUgbWF5IGRlZmluZSBob3dcbnRoZSBmb3JtYXQgc3BlY2lmaWNhdGlvbiBpcyB0byBiZSBpbnRlcnByZXRlZC5cblxuTW9zdCBidWlsdC1pbiB0eXBlcyBpbXBsZW1lbnQgdGhlIGZvbGxvd2luZyBvcHRpb25zIGZvciBmb3JtYXRcbnNwZWNpZmljYXRpb25zLCBhbHRob3VnaCBzb21lIG9mIHRoZSBmb3JtYXR0aW5nIG9wdGlvbnMgYXJlIG9ubHlcbnN1cHBvcnRlZCBieSB0aGUgbnVtZXJpYyB0eXBlcy5cblxuQSBnZW5lcmFsIGNvbnZlbnRpb24gaXMgdGhhdCBhbiBlbXB0eSBmb3JtYXQgc3RyaW5nICgiIiIiKSBwcm9kdWNlc1xudGhlIHNhbWUgcmVzdWx0IGFzIGlmIHlvdSBoYWQgY2FsbGVkICJzdHIoKSIgb24gdGhlIHZhbHVlLiBBIG5vbi1lbXB0eVxuZm9ybWF0IHN0cmluZyB0eXBpY2FsbHkgbW9kaWZpZXMgdGhlIHJlc3VsdC5cblxuVGhlIGdlbmVyYWwgZm9ybSBvZiBhICpzdGFuZGFyZCBmb3JtYXQgc3BlY2lmaWVyKiBpczpcblxuICAgZm9ybWF0X3NwZWMgOjo9IFtbZmlsbF1hbGlnbl1bc2lnbl1bI11bMF1bd2lkdGhdWyxdWy5wcmVjaXNpb25dW3R5cGVdXG4gICBmaWxsICAgICAgICA6Oj0gPGFueSBjaGFyYWN0ZXI+XG4gICBhbGlnbiAgICAgICA6Oj0gIjwiIHwgIj4iIHwgIj0iIHwgIl4iXG4gICBzaWduICAgICAgICA6Oj0gIisiIHwgIi0iIHwgIiAiXG4gICB3aWR0aCAgICAgICA6Oj0gaW50ZWdlclxuICAgcHJlY2lzaW9uICAgOjo9IGludGVnZXJcbiAgIHR5cGUgICAgICAgIDo6PSAiYiIgfCAiYyIgfCAiZCIgfCAiZSIgfCAiRSIgfCAiZiIgfCAiRiIgfCAiZyIgfCAiRyIgfCAibiIgfCAibyIgfCAicyIgfCAieCIgfCAiWCIgfCAiJSJcblxuSWYgYSB2YWxpZCAqYWxpZ24qIHZhbHVlIGlzIHNwZWNpZmllZCwgaXQgY2FuIGJlIHByZWNlZGVkIGJ5IGEgKmZpbGwqXG5jaGFyYWN0ZXIgdGhhdCBjYW4gYmUgYW55IGNoYXJhY3RlciBhbmQgZGVmYXVsdHMgdG8gYSBzcGFjZSBpZlxub21pdHRlZC4gSXQgaXMgbm90IHBvc3NpYmxlIHRvIHVzZSBhIGxpdGVyYWwgY3VybHkgYnJhY2UgKCIieyIiIG9yXG4iIn0iIikgYXMgdGhlICpmaWxsKiBjaGFyYWN0ZXIgd2hlbiB1c2luZyB0aGUgInN0ci5mb3JtYXQoKSIgbWV0aG9kLlxuSG93ZXZlciwgaXQgaXMgcG9zc2libGUgdG8gaW5zZXJ0IGEgY3VybHkgYnJhY2Ugd2l0aCBhIG5lc3RlZFxucmVwbGFjZW1lbnQgZmllbGQuICBUaGlzIGxpbWl0YXRpb24gZG9lc25cJ3QgYWZmZWN0IHRoZSAiZm9ybWF0KCkiXG5mdW5jdGlvbi5cblxuVGhlIG1lYW5pbmcgb2YgdGhlIHZhcmlvdXMgYWxpZ25tZW50IG9wdGlvbnMgaXMgYXMgZm9sbG93czpcblxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgT3B0aW9uICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuICAgfCAiXCc8XCciICAgICB8IEZvcmNlcyB0aGUgZmllbGQgdG8gYmUgbGVmdC1hbGlnbmVkIHdpdGhpbiB0aGUgYXZhaWxhYmxlICAgfFxuICAgfCAgICAgICAgICAgfCBzcGFjZSAodGhpcyBpcyB0aGUgZGVmYXVsdCBmb3IgbW9zdCBvYmplY3RzKS4gICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJz5cJyIgICAgIHwgRm9yY2VzIHRoZSBmaWVsZCB0byBiZSByaWdodC1hbGlnbmVkIHdpdGhpbiB0aGUgYXZhaWxhYmxlICB8XG4gICB8ICAgICAgICAgICB8IHNwYWNlICh0aGlzIGlzIHRoZSBkZWZhdWx0IGZvciBudW1iZXJzKS4gICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlwnPVwnIiAgICAgfCBGb3JjZXMgdGhlIHBhZGRpbmcgdG8gYmUgcGxhY2VkIGFmdGVyIHRoZSBzaWduIChpZiBhbnkpICAgIHxcbiAgIHwgICAgICAgICAgIHwgYnV0IGJlZm9yZSB0aGUgZGlnaXRzLiAgVGhpcyBpcyB1c2VkIGZvciBwcmludGluZyBmaWVsZHMgICB8XG4gICB8ICAgICAgICAgICB8IGluIHRoZSBmb3JtIFwnKzAwMDAwMDEyMFwnLiBUaGlzIGFsaWdubWVudCBvcHRpb24gaXMgb25seSAgICB8XG4gICB8ICAgICAgICAgICB8IHZhbGlkIGZvciBudW1lcmljIHR5cGVzLiAgSXQgYmVjb21lcyB0aGUgZGVmYXVsdCB3aGVuIFwnMFwnICB8XG4gICB8ICAgICAgICAgICB8IGltbWVkaWF0ZWx5IHByZWNlZGVzIHRoZSBmaWVsZCB3aWR0aC4gICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlwnXlwnIiAgICAgfCBGb3JjZXMgdGhlIGZpZWxkIHRvIGJlIGNlbnRlcmVkIHdpdGhpbiB0aGUgYXZhaWxhYmxlICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgc3BhY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5Ob3RlIHRoYXQgdW5sZXNzIGEgbWluaW11bSBmaWVsZCB3aWR0aCBpcyBkZWZpbmVkLCB0aGUgZmllbGQgd2lkdGhcbndpbGwgYWx3YXlzIGJlIHRoZSBzYW1lIHNpemUgYXMgdGhlIGRhdGEgdG8gZmlsbCBpdCwgc28gdGhhdCB0aGVcbmFsaWdubWVudCBvcHRpb24gaGFzIG5vIG1lYW5pbmcgaW4gdGhpcyBjYXNlLlxuXG5UaGUgKnNpZ24qIG9wdGlvbiBpcyBvbmx5IHZhbGlkIGZvciBudW1iZXIgdHlwZXMsIGFuZCBjYW4gYmUgb25lIG9mXG50aGUgZm9sbG93aW5nOlxuXG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBPcHRpb24gICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICs9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4gICB8ICJcJytcJyIgICAgIHwgaW5kaWNhdGVzIHRoYXQgYSBzaWduIHNob3VsZCBiZSB1c2VkIGZvciBib3RoIHBvc2l0aXZlIGFzICB8XG4gICB8ICAgICAgICAgICB8IHdlbGwgYXMgbmVnYXRpdmUgbnVtYmVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlwnLVwnIiAgICAgfCBpbmRpY2F0ZXMgdGhhdCBhIHNpZ24gc2hvdWxkIGJlIHVzZWQgb25seSBmb3IgbmVnYXRpdmUgICAgIHxcbiAgIHwgICAgICAgICAgIHwgbnVtYmVycyAodGhpcyBpcyB0aGUgZGVmYXVsdCBiZWhhdmlvcikuICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBzcGFjZSAgICAgfCBpbmRpY2F0ZXMgdGhhdCBhIGxlYWRpbmcgc3BhY2Ugc2hvdWxkIGJlIHVzZWQgb24gcG9zaXRpdmUgIHxcbiAgIHwgICAgICAgICAgIHwgbnVtYmVycywgYW5kIGEgbWludXMgc2lnbiBvbiBuZWdhdGl2ZSBudW1iZXJzLiAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5UaGUgIlwnI1wnIiBvcHRpb24gY2F1c2VzIHRoZSAiYWx0ZXJuYXRlIGZvcm0iIHRvIGJlIHVzZWQgZm9yIHRoZVxuY29udmVyc2lvbi4gIFRoZSBhbHRlcm5hdGUgZm9ybSBpcyBkZWZpbmVkIGRpZmZlcmVudGx5IGZvciBkaWZmZXJlbnRcbnR5cGVzLiAgVGhpcyBvcHRpb24gaXMgb25seSB2YWxpZCBmb3IgaW50ZWdlciwgZmxvYXQsIGNvbXBsZXggYW5kXG5EZWNpbWFsIHR5cGVzLiBGb3IgaW50ZWdlcnMsIHdoZW4gYmluYXJ5LCBvY3RhbCwgb3IgaGV4YWRlY2ltYWwgb3V0cHV0XG5pcyB1c2VkLCB0aGlzIG9wdGlvbiBhZGRzIHRoZSBwcmVmaXggcmVzcGVjdGl2ZSAiXCcwYlwnIiwgIlwnMG9cJyIsIG9yXG4iXCcweFwnIiB0byB0aGUgb3V0cHV0IHZhbHVlLiBGb3IgZmxvYXRzLCBjb21wbGV4IGFuZCBEZWNpbWFsIHRoZVxuYWx0ZXJuYXRlIGZvcm0gY2F1c2VzIHRoZSByZXN1bHQgb2YgdGhlIGNvbnZlcnNpb24gdG8gYWx3YXlzIGNvbnRhaW4gYVxuZGVjaW1hbC1wb2ludCBjaGFyYWN0ZXIsIGV2ZW4gaWYgbm8gZGlnaXRzIGZvbGxvdyBpdC4gTm9ybWFsbHksIGFcbmRlY2ltYWwtcG9pbnQgY2hhcmFjdGVyIGFwcGVhcnMgaW4gdGhlIHJlc3VsdCBvZiB0aGVzZSBjb252ZXJzaW9uc1xub25seSBpZiBhIGRpZ2l0IGZvbGxvd3MgaXQuIEluIGFkZGl0aW9uLCBmb3IgIlwnZ1wnIiBhbmQgIlwnR1wnIlxuY29udmVyc2lvbnMsIHRyYWlsaW5nIHplcm9zIGFyZSBub3QgcmVtb3ZlZCBmcm9tIHRoZSByZXN1bHQuXG5cblRoZSAiXCcsXCciIG9wdGlvbiBzaWduYWxzIHRoZSB1c2Ugb2YgYSBjb21tYSBmb3IgYSB0aG91c2FuZHMgc2VwYXJhdG9yLlxuRm9yIGEgbG9jYWxlIGF3YXJlIHNlcGFyYXRvciwgdXNlIHRoZSAiXCduXCciIGludGVnZXIgcHJlc2VudGF0aW9uIHR5cGVcbmluc3RlYWQuXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IEFkZGVkIHRoZSAiXCcsXCciIG9wdGlvbiAoc2VlIGFsc28gKipQRVAgMzc4KiopLlxuXG4qd2lkdGgqIGlzIGEgZGVjaW1hbCBpbnRlZ2VyIGRlZmluaW5nIHRoZSBtaW5pbXVtIGZpZWxkIHdpZHRoLiAgSWYgbm90XG5zcGVjaWZpZWQsIHRoZW4gdGhlIGZpZWxkIHdpZHRoIHdpbGwgYmUgZGV0ZXJtaW5lZCBieSB0aGUgY29udGVudC5cblxuV2hlbiBubyBleHBsaWNpdCBhbGlnbm1lbnQgaXMgZ2l2ZW4sIHByZWNlZGluZyB0aGUgKndpZHRoKiBmaWVsZCBieSBhXG56ZXJvICgiXCcwXCciKSBjaGFyYWN0ZXIgZW5hYmxlcyBzaWduLWF3YXJlIHplcm8tcGFkZGluZyBmb3IgbnVtZXJpY1xudHlwZXMuICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gYSAqZmlsbCogY2hhcmFjdGVyIG9mICJcJzBcJyIgd2l0aCBhblxuKmFsaWdubWVudCogdHlwZSBvZiAiXCc9XCciLlxuXG5UaGUgKnByZWNpc2lvbiogaXMgYSBkZWNpbWFsIG51bWJlciBpbmRpY2F0aW5nIGhvdyBtYW55IGRpZ2l0cyBzaG91bGRcbmJlIGRpc3BsYXllZCBhZnRlciB0aGUgZGVjaW1hbCBwb2ludCBmb3IgYSBmbG9hdGluZyBwb2ludCB2YWx1ZVxuZm9ybWF0dGVkIHdpdGggIlwnZlwnIiBhbmQgIlwnRlwnIiwgb3IgYmVmb3JlIGFuZCBhZnRlciB0aGUgZGVjaW1hbCBwb2ludFxuZm9yIGEgZmxvYXRpbmcgcG9pbnQgdmFsdWUgZm9ybWF0dGVkIHdpdGggIlwnZ1wnIiBvciAiXCdHXCciLiAgRm9yIG5vbi1cbm51bWJlciB0eXBlcyB0aGUgZmllbGQgaW5kaWNhdGVzIHRoZSBtYXhpbXVtIGZpZWxkIHNpemUgLSBpbiBvdGhlclxud29yZHMsIGhvdyBtYW55IGNoYXJhY3RlcnMgd2lsbCBiZSB1c2VkIGZyb20gdGhlIGZpZWxkIGNvbnRlbnQuIFRoZVxuKnByZWNpc2lvbiogaXMgbm90IGFsbG93ZWQgZm9yIGludGVnZXIgdmFsdWVzLlxuXG5GaW5hbGx5LCB0aGUgKnR5cGUqIGRldGVybWluZXMgaG93IHRoZSBkYXRhIHNob3VsZCBiZSBwcmVzZW50ZWQuXG5cblRoZSBhdmFpbGFibGUgc3RyaW5nIHByZXNlbnRhdGlvbiB0eXBlcyBhcmU6XG5cbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IFR5cGUgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbiAgIHwgIlwnc1wnIiAgICAgfCBTdHJpbmcgZm9ybWF0LiBUaGlzIGlzIHRoZSBkZWZhdWx0IHR5cGUgZm9yIHN0cmluZ3MgYW5kICAgIHxcbiAgIHwgICAgICAgICAgIHwgbWF5IGJlIG9taXR0ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBOb25lICAgICAgfCBUaGUgc2FtZSBhcyAiXCdzXCciLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuVGhlIGF2YWlsYWJsZSBpbnRlZ2VyIHByZXNlbnRhdGlvbiB0eXBlcyBhcmU6XG5cbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IFR5cGUgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbiAgIHwgIlwnYlwnIiAgICAgfCBCaW5hcnkgZm9ybWF0LiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gYmFzZSAyLiAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJ2NcJyIgICAgIHwgQ2hhcmFjdGVyLiBDb252ZXJ0cyB0aGUgaW50ZWdlciB0byB0aGUgY29ycmVzcG9uZGluZyAgICAgICB8XG4gICB8ICAgICAgICAgICB8IHVuaWNvZGUgY2hhcmFjdGVyIGJlZm9yZSBwcmludGluZy4gICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlwnZFwnIiAgICAgfCBEZWNpbWFsIEludGVnZXIuIE91dHB1dHMgdGhlIG51bWJlciBpbiBiYXNlIDEwLiAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJ29cJyIgICAgIHwgT2N0YWwgZm9ybWF0LiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gYmFzZSA4LiAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXCd4XCciICAgICB8IEhleCBmb3JtYXQuIE91dHB1dHMgdGhlIG51bWJlciBpbiBiYXNlIDE2LCB1c2luZyBsb3dlci0gICAgfFxuICAgfCAgICAgICAgICAgfCBjYXNlIGxldHRlcnMgZm9yIHRoZSBkaWdpdHMgYWJvdmUgOS4gICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJ1hcJyIgICAgIHwgSGV4IGZvcm1hdC4gT3V0cHV0cyB0aGUgbnVtYmVyIGluIGJhc2UgMTYsIHVzaW5nIHVwcGVyLSAgICB8XG4gICB8ICAgICAgICAgICB8IGNhc2UgbGV0dGVycyBmb3IgdGhlIGRpZ2l0cyBhYm92ZSA5LiAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlwnblwnIiAgICAgfCBOdW1iZXIuIFRoaXMgaXMgdGhlIHNhbWUgYXMgIlwnZFwnIiwgZXhjZXB0IHRoYXQgaXQgdXNlcyB0aGUgfFxuICAgfCAgICAgICAgICAgfCBjdXJyZW50IGxvY2FsZSBzZXR0aW5nIHRvIGluc2VydCB0aGUgYXBwcm9wcmlhdGUgbnVtYmVyICAgIHxcbiAgIHwgICAgICAgICAgIHwgc2VwYXJhdG9yIGNoYXJhY3RlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBOb25lICAgICAgfCBUaGUgc2FtZSBhcyAiXCdkXCciLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuSW4gYWRkaXRpb24gdG8gdGhlIGFib3ZlIHByZXNlbnRhdGlvbiB0eXBlcywgaW50ZWdlcnMgY2FuIGJlIGZvcm1hdHRlZFxud2l0aCB0aGUgZmxvYXRpbmcgcG9pbnQgcHJlc2VudGF0aW9uIHR5cGVzIGxpc3RlZCBiZWxvdyAoZXhjZXB0ICJcJ25cJyJcbmFuZCBOb25lKS4gV2hlbiBkb2luZyBzbywgImZsb2F0KCkiIGlzIHVzZWQgdG8gY29udmVydCB0aGUgaW50ZWdlciB0b1xuYSBmbG9hdGluZyBwb2ludCBudW1iZXIgYmVmb3JlIGZvcm1hdHRpbmcuXG5cblRoZSBhdmFpbGFibGUgcHJlc2VudGF0aW9uIHR5cGVzIGZvciBmbG9hdGluZyBwb2ludCBhbmQgZGVjaW1hbCB2YWx1ZXNcbmFyZTpcblxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgVHlwZSAgICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuICAgfCAiXCdlXCciICAgICB8IEV4cG9uZW50IG5vdGF0aW9uLiBQcmludHMgdGhlIG51bWJlciBpbiBzY2llbnRpZmljICAgICAgICAgfFxuICAgfCAgICAgICAgICAgfCBub3RhdGlvbiB1c2luZyB0aGUgbGV0dGVyIFwnZVwnIHRvIGluZGljYXRlIHRoZSBleHBvbmVudC4gICAgfFxuICAgfCAgICAgICAgICAgfCBUaGUgZGVmYXVsdCBwcmVjaXNpb24gaXMgIjYiLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJ0VcJyIgICAgIHwgRXhwb25lbnQgbm90YXRpb24uIFNhbWUgYXMgIlwnZVwnIiBleGNlcHQgaXQgdXNlcyBhbiB1cHBlciAgIHxcbiAgIHwgICAgICAgICAgIHwgY2FzZSBcJ0VcJyBhcyB0aGUgc2VwYXJhdG9yIGNoYXJhY3Rlci4gICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJ2ZcJyIgICAgIHwgRml4ZWQgcG9pbnQuIERpc3BsYXlzIHRoZSBudW1iZXIgYXMgYSBmaXhlZC1wb2ludCBudW1iZXIuICB8XG4gICB8ICAgICAgICAgICB8IFRoZSBkZWZhdWx0IHByZWNpc2lvbiBpcyAiNiIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlwnRlwnIiAgICAgfCBGaXhlZCBwb2ludC4gU2FtZSBhcyAiXCdmXCciLCBidXQgY29udmVydHMgIm5hbiIgdG8gIk5BTiIgICAgfFxuICAgfCAgICAgICAgICAgfCBhbmQgImluZiIgdG8gIklORiIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJ2dcJyIgICAgIHwgR2VuZXJhbCBmb3JtYXQuICBGb3IgYSBnaXZlbiBwcmVjaXNpb24gInAgPj0gMSIsIHRoaXMgICAgICB8XG4gICB8ICAgICAgICAgICB8IHJvdW5kcyB0aGUgbnVtYmVyIHRvICJwIiBzaWduaWZpY2FudCBkaWdpdHMgYW5kIHRoZW4gICAgICAgfFxuICAgfCAgICAgICAgICAgfCBmb3JtYXRzIHRoZSByZXN1bHQgaW4gZWl0aGVyIGZpeGVkLXBvaW50IGZvcm1hdCBvciBpbiAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgc2NpZW50aWZpYyBub3RhdGlvbiwgZGVwZW5kaW5nIG9uIGl0cyBtYWduaXR1ZGUuICBUaGUgICAgICB8XG4gICB8ICAgICAgICAgICB8IHByZWNpc2UgcnVsZXMgYXJlIGFzIGZvbGxvd3M6IHN1cHBvc2UgdGhhdCB0aGUgcmVzdWx0ICAgICAgfFxuICAgfCAgICAgICAgICAgfCBmb3JtYXR0ZWQgd2l0aCBwcmVzZW50YXRpb24gdHlwZSAiXCdlXCciIGFuZCBwcmVjaXNpb24gInAtMSIgfFxuICAgfCAgICAgICAgICAgfCB3b3VsZCBoYXZlIGV4cG9uZW50ICJleHAiLiAgVGhlbiBpZiAiLTQgPD0gZXhwIDwgcCIsIHRoZSAgIHxcbiAgIHwgICAgICAgICAgIHwgbnVtYmVyIGlzIGZvcm1hdHRlZCB3aXRoIHByZXNlbnRhdGlvbiB0eXBlICJcJ2ZcJyIgYW5kICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgcHJlY2lzaW9uICJwLTEtZXhwIi4gIE90aGVyd2lzZSwgdGhlIG51bWJlciBpcyBmb3JtYXR0ZWQgICB8XG4gICB8ICAgICAgICAgICB8IHdpdGggcHJlc2VudGF0aW9uIHR5cGUgIlwnZVwnIiBhbmQgcHJlY2lzaW9uICJwLTEiLiBJbiBib3RoICB8XG4gICB8ICAgICAgICAgICB8IGNhc2VzIGluc2lnbmlmaWNhbnQgdHJhaWxpbmcgemVyb3MgYXJlIHJlbW92ZWQgZnJvbSB0aGUgICAgfFxuICAgfCAgICAgICAgICAgfCBzaWduaWZpY2FuZCwgYW5kIHRoZSBkZWNpbWFsIHBvaW50IGlzIGFsc28gcmVtb3ZlZCBpZiAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgdGhlcmUgYXJlIG5vIHJlbWFpbmluZyBkaWdpdHMgZm9sbG93aW5nIGl0LiAgUG9zaXRpdmUgYW5kICB8XG4gICB8ICAgICAgICAgICB8IG5lZ2F0aXZlIGluZmluaXR5LCBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgemVybywgYW5kIG5hbnMsICAgfFxuICAgfCAgICAgICAgICAgfCBhcmUgZm9ybWF0dGVkIGFzICJpbmYiLCAiLWluZiIsICIwIiwgIi0wIiBhbmQgIm5hbiIgICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgcmVzcGVjdGl2ZWx5LCByZWdhcmRsZXNzIG9mIHRoZSBwcmVjaXNpb24uICBBIHByZWNpc2lvbiBvZiB8XG4gICB8ICAgICAgICAgICB8ICIwIiBpcyB0cmVhdGVkIGFzIGVxdWl2YWxlbnQgdG8gYSBwcmVjaXNpb24gb2YgIjEiLiBUaGUgICAgfFxuICAgfCAgICAgICAgICAgfCBkZWZhdWx0IHByZWNpc2lvbiBpcyAiNiIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJ0dcJyIgICAgIHwgR2VuZXJhbCBmb3JtYXQuIFNhbWUgYXMgIlwnZ1wnIiBleGNlcHQgc3dpdGNoZXMgdG8gIlwnRVwnIiBpZiAgfFxuICAgfCAgICAgICAgICAgfCB0aGUgbnVtYmVyIGdldHMgdG9vIGxhcmdlLiBUaGUgcmVwcmVzZW50YXRpb25zIG9mIGluZmluaXR5IHxcbiAgIHwgICAgICAgICAgIHwgYW5kIE5hTiBhcmUgdXBwZXJjYXNlZCwgdG9vLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXCduXCciICAgICB8IE51bWJlci4gVGhpcyBpcyB0aGUgc2FtZSBhcyAiXCdnXCciLCBleGNlcHQgdGhhdCBpdCB1c2VzIHRoZSB8XG4gICB8ICAgICAgICAgICB8IGN1cnJlbnQgbG9jYWxlIHNldHRpbmcgdG8gaW5zZXJ0IHRoZSBhcHByb3ByaWF0ZSBudW1iZXIgICAgfFxuICAgfCAgICAgICAgICAgfCBzZXBhcmF0b3IgY2hhcmFjdGVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJyVcJyIgICAgIHwgUGVyY2VudGFnZS4gTXVsdGlwbGllcyB0aGUgbnVtYmVyIGJ5IDEwMCBhbmQgZGlzcGxheXMgaW4gICB8XG4gICB8ICAgICAgICAgICB8IGZpeGVkICgiXCdmXCciKSBmb3JtYXQsIGZvbGxvd2VkIGJ5IGEgcGVyY2VudCBzaWduLiAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBOb25lICAgICAgfCBTaW1pbGFyIHRvICJcJ2dcJyIsIGV4Y2VwdCB0aGF0IGZpeGVkLXBvaW50IG5vdGF0aW9uLCB3aGVuICAgfFxuICAgfCAgICAgICAgICAgfCB1c2VkLCBoYXMgYXQgbGVhc3Qgb25lIGRpZ2l0IHBhc3QgdGhlIGRlY2ltYWwgcG9pbnQuIFRoZSAgIHxcbiAgIHwgICAgICAgICAgIHwgZGVmYXVsdCBwcmVjaXNpb24gaXMgYXMgaGlnaCBhcyBuZWVkZWQgdG8gcmVwcmVzZW50IHRoZSAgICB8XG4gICB8ICAgICAgICAgICB8IHBhcnRpY3VsYXIgdmFsdWUuIFRoZSBvdmVyYWxsIGVmZmVjdCBpcyB0byBtYXRjaCB0aGUgICAgICAgfFxuICAgfCAgICAgICAgICAgfCBvdXRwdXQgb2YgInN0cigpIiBhcyBhbHRlcmVkIGJ5IHRoZSBvdGhlciBmb3JtYXQgICAgICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgbW9kaWZpZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5cbkZvcm1hdCBleGFtcGxlc1xuPT09PT09PT09PT09PT09XG5cblRoaXMgc2VjdGlvbiBjb250YWlucyBleGFtcGxlcyBvZiB0aGUgInN0ci5mb3JtYXQoKSIgc3ludGF4IGFuZFxuY29tcGFyaXNvbiB3aXRoIHRoZSBvbGQgIiUiLWZvcm1hdHRpbmcuXG5cbkluIG1vc3Qgb2YgdGhlIGNhc2VzIHRoZSBzeW50YXggaXMgc2ltaWxhciB0byB0aGUgb2xkICIlIi1mb3JtYXR0aW5nLFxud2l0aCB0aGUgYWRkaXRpb24gb2YgdGhlICJ7fSIgYW5kIHdpdGggIjoiIHVzZWQgaW5zdGVhZCBvZiAiJSIuIEZvclxuZXhhbXBsZSwgIlwnJTAzLjJmXCciIGNhbiBiZSB0cmFuc2xhdGVkIHRvICJcJ3s6MDMuMmZ9XCciLlxuXG5UaGUgbmV3IGZvcm1hdCBzeW50YXggYWxzbyBzdXBwb3J0cyBuZXcgYW5kIGRpZmZlcmVudCBvcHRpb25zLCBzaG93blxuaW4gdGhlIGZvbGxvdyBleGFtcGxlcy5cblxuQWNjZXNzaW5nIGFyZ3VtZW50cyBieSBwb3NpdGlvbjpcblxuICAgPj4+IFwnezB9LCB7MX0sIHsyfVwnLmZvcm1hdChcJ2FcJywgXCdiXCcsIFwnY1wnKVxuICAgXCdhLCBiLCBjXCdcbiAgID4+PiBcJ3t9LCB7fSwge31cJy5mb3JtYXQoXCdhXCcsIFwnYlwnLCBcJ2NcJykgICMgMy4xKyBvbmx5XG4gICBcJ2EsIGIsIGNcJ1xuICAgPj4+IFwnezJ9LCB7MX0sIHswfVwnLmZvcm1hdChcJ2FcJywgXCdiXCcsIFwnY1wnKVxuICAgXCdjLCBiLCBhXCdcbiAgID4+PiBcJ3syfSwgezF9LCB7MH1cJy5mb3JtYXQoKlwnYWJjXCcpICAgICAgIyB1bnBhY2tpbmcgYXJndW1lbnQgc2VxdWVuY2VcbiAgIFwnYywgYiwgYVwnXG4gICA+Pj4gXCd7MH17MX17MH1cJy5mb3JtYXQoXCdhYnJhXCcsIFwnY2FkXCcpICAgIyBhcmd1bWVudHNcJyBpbmRpY2VzIGNhbiBiZSByZXBlYXRlZFxuICAgXCdhYnJhY2FkYWJyYVwnXG5cbkFjY2Vzc2luZyBhcmd1bWVudHMgYnkgbmFtZTpcblxuICAgPj4+IFwnQ29vcmRpbmF0ZXM6IHtsYXRpdHVkZX0sIHtsb25naXR1ZGV9XCcuZm9ybWF0KGxhdGl0dWRlPVwnMzcuMjROXCcsIGxvbmdpdHVkZT1cJy0xMTUuODFXXCcpXG4gICBcJ0Nvb3JkaW5hdGVzOiAzNy4yNE4sIC0xMTUuODFXXCdcbiAgID4+PiBjb29yZCA9IHtcJ2xhdGl0dWRlXCc6IFwnMzcuMjROXCcsIFwnbG9uZ2l0dWRlXCc6IFwnLTExNS44MVdcJ31cbiAgID4+PiBcJ0Nvb3JkaW5hdGVzOiB7bGF0aXR1ZGV9LCB7bG9uZ2l0dWRlfVwnLmZvcm1hdCgqKmNvb3JkKVxuICAgXCdDb29yZGluYXRlczogMzcuMjROLCAtMTE1LjgxV1wnXG5cbkFjY2Vzc2luZyBhcmd1bWVudHNcJyBhdHRyaWJ1dGVzOlxuXG4gICA+Pj4gYyA9IDMtNWpcbiAgID4+PiAoXCdUaGUgY29tcGxleCBudW1iZXIgezB9IGlzIGZvcm1lZCBmcm9tIHRoZSByZWFsIHBhcnQgezAucmVhbH0gXCdcbiAgIC4uLiAgXCdhbmQgdGhlIGltYWdpbmFyeSBwYXJ0IHswLmltYWd9LlwnKS5mb3JtYXQoYylcbiAgIFwnVGhlIGNvbXBsZXggbnVtYmVyICgzLTVqKSBpcyBmb3JtZWQgZnJvbSB0aGUgcmVhbCBwYXJ0IDMuMCBhbmQgdGhlIGltYWdpbmFyeSBwYXJ0IC01LjAuXCdcbiAgID4+PiBjbGFzcyBQb2ludDpcbiAgIC4uLiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHgsIHkpOlxuICAgLi4uICAgICAgICAgc2VsZi54LCBzZWxmLnkgPSB4LCB5XG4gICAuLi4gICAgIGRlZiBfX3N0cl9fKHNlbGYpOlxuICAgLi4uICAgICAgICAgcmV0dXJuIFwnUG9pbnQoe3NlbGYueH0sIHtzZWxmLnl9KVwnLmZvcm1hdChzZWxmPXNlbGYpXG4gICAuLi5cbiAgID4+PiBzdHIoUG9pbnQoNCwgMikpXG4gICBcJ1BvaW50KDQsIDIpXCdcblxuQWNjZXNzaW5nIGFyZ3VtZW50c1wnIGl0ZW1zOlxuXG4gICA+Pj4gY29vcmQgPSAoMywgNSlcbiAgID4+PiBcJ1g6IHswWzBdfTsgIFk6IHswWzFdfVwnLmZvcm1hdChjb29yZClcbiAgIFwnWDogMzsgIFk6IDVcJ1xuXG5SZXBsYWNpbmcgIiVzIiBhbmQgIiVyIjpcblxuICAgPj4+ICJyZXByKCkgc2hvd3MgcXVvdGVzOiB7IXJ9OyBzdHIoKSBkb2VzblwndDogeyFzfSIuZm9ybWF0KFwndGVzdDFcJywgXCd0ZXN0MlwnKVxuICAgInJlcHIoKSBzaG93cyBxdW90ZXM6IFwndGVzdDFcJzsgc3RyKCkgZG9lc25cJ3Q6IHRlc3QyIlxuXG5BbGlnbmluZyB0aGUgdGV4dCBhbmQgc3BlY2lmeWluZyBhIHdpZHRoOlxuXG4gICA+Pj4gXCd7OjwzMH1cJy5mb3JtYXQoXCdsZWZ0IGFsaWduZWRcJylcbiAgIFwnbGVmdCBhbGlnbmVkICAgICAgICAgICAgICAgICAgXCdcbiAgID4+PiBcJ3s6PjMwfVwnLmZvcm1hdChcJ3JpZ2h0IGFsaWduZWRcJylcbiAgIFwnICAgICAgICAgICAgICAgICByaWdodCBhbGlnbmVkXCdcbiAgID4+PiBcJ3s6XjMwfVwnLmZvcm1hdChcJ2NlbnRlcmVkXCcpXG4gICBcJyAgICAgICAgICAgY2VudGVyZWQgICAgICAgICAgIFwnXG4gICA+Pj4gXCd7OipeMzB9XCcuZm9ybWF0KFwnY2VudGVyZWRcJykgICMgdXNlIFwnKlwnIGFzIGEgZmlsbCBjaGFyXG4gICBcJyoqKioqKioqKioqY2VudGVyZWQqKioqKioqKioqKlwnXG5cblJlcGxhY2luZyAiJStmIiwgIiUtZiIsIGFuZCAiJSBmIiBhbmQgc3BlY2lmeWluZyBhIHNpZ246XG5cbiAgID4+PiBcJ3s6K2Z9OyB7OitmfVwnLmZvcm1hdCgzLjE0LCAtMy4xNCkgICMgc2hvdyBpdCBhbHdheXNcbiAgIFwnKzMuMTQwMDAwOyAtMy4xNDAwMDBcJ1xuICAgPj4+IFwnezogZn07IHs6IGZ9XCcuZm9ybWF0KDMuMTQsIC0zLjE0KSAgIyBzaG93IGEgc3BhY2UgZm9yIHBvc2l0aXZlIG51bWJlcnNcbiAgIFwnIDMuMTQwMDAwOyAtMy4xNDAwMDBcJ1xuICAgPj4+IFwnezotZn07IHs6LWZ9XCcuZm9ybWF0KDMuMTQsIC0zLjE0KSAgIyBzaG93IG9ubHkgdGhlIG1pbnVzIC0tIHNhbWUgYXMgXCd7OmZ9OyB7OmZ9XCdcbiAgIFwnMy4xNDAwMDA7IC0zLjE0MDAwMFwnXG5cblJlcGxhY2luZyAiJXgiIGFuZCAiJW8iIGFuZCBjb252ZXJ0aW5nIHRoZSB2YWx1ZSB0byBkaWZmZXJlbnQgYmFzZXM6XG5cbiAgID4+PiAjIGZvcm1hdCBhbHNvIHN1cHBvcnRzIGJpbmFyeSBudW1iZXJzXG4gICA+Pj4gImludDogezA6ZH07ICBoZXg6IHswOnh9OyAgb2N0OiB7MDpvfTsgIGJpbjogezA6Yn0iLmZvcm1hdCg0MilcbiAgIFwnaW50OiA0MjsgIGhleDogMmE7ICBvY3Q6IDUyOyAgYmluOiAxMDEwMTBcJ1xuICAgPj4+ICMgd2l0aCAweCwgMG8sIG9yIDBiIGFzIHByZWZpeDpcbiAgID4+PiAiaW50OiB7MDpkfTsgIGhleDogezA6I3h9OyAgb2N0OiB7MDojb307ICBiaW46IHswOiNifSIuZm9ybWF0KDQyKVxuICAgXCdpbnQ6IDQyOyAgaGV4OiAweDJhOyAgb2N0OiAwbzUyOyAgYmluOiAwYjEwMTAxMFwnXG5cblVzaW5nIHRoZSBjb21tYSBhcyBhIHRob3VzYW5kcyBzZXBhcmF0b3I6XG5cbiAgID4+PiBcJ3s6LH1cJy5mb3JtYXQoMTIzNDU2Nzg5MClcbiAgIFwnMSwyMzQsNTY3LDg5MFwnXG5cbkV4cHJlc3NpbmcgYSBwZXJjZW50YWdlOlxuXG4gICA+Pj4gcG9pbnRzID0gMTlcbiAgID4+PiB0b3RhbCA9IDIyXG4gICA+Pj4gXCdDb3JyZWN0IGFuc3dlcnM6IHs6LjIlfVwnLmZvcm1hdChwb2ludHMvdG90YWwpXG4gICBcJ0NvcnJlY3QgYW5zd2VyczogODYuMzYlXCdcblxuVXNpbmcgdHlwZS1zcGVjaWZpYyBmb3JtYXR0aW5nOlxuXG4gICA+Pj4gaW1wb3J0IGRhdGV0aW1lXG4gICA+Pj4gZCA9IGRhdGV0aW1lLmRhdGV0aW1lKDIwMTAsIDcsIDQsIDEyLCAxNSwgNTgpXG4gICA+Pj4gXCd7OiVZLSVtLSVkICVIOiVNOiVTfVwnLmZvcm1hdChkKVxuICAgXCcyMDEwLTA3LTA0IDEyOjE1OjU4XCdcblxuTmVzdGluZyBhcmd1bWVudHMgYW5kIG1vcmUgY29tcGxleCBleGFtcGxlczpcblxuICAgPj4+IGZvciBhbGlnbiwgdGV4dCBpbiB6aXAoXCc8Xj5cJywgW1wnbGVmdFwnLCBcJ2NlbnRlclwnLCBcJ3JpZ2h0XCddKTpcbiAgIC4uLiAgICAgXCd7MDp7ZmlsbH17YWxpZ259MTZ9XCcuZm9ybWF0KHRleHQsIGZpbGw9YWxpZ24sIGFsaWduPWFsaWduKVxuICAgLi4uXG4gICBcJ2xlZnQ8PDw8PDw8PDw8PDxcJ1xuICAgXCdeXl5eXmNlbnRlcl5eXl5eXCdcbiAgIFwnPj4+Pj4+Pj4+Pj5yaWdodFwnXG4gICA+Pj5cbiAgID4+PiBvY3RldHMgPSBbMTkyLCAxNjgsIDAsIDFdXG4gICA+Pj4gXCd7OjAyWH17OjAyWH17OjAyWH17OjAyWH1cJy5mb3JtYXQoKm9jdGV0cylcbiAgIFwnQzBBODAwMDFcJ1xuICAgPj4+IGludChfLCAxNilcbiAgIDMyMzIyMzU1MjFcbiAgID4+PlxuICAgPj4+IHdpZHRoID0gNVxuICAgPj4+IGZvciBudW0gaW4gcmFuZ2UoNSwxMik6ICNkb2N0ZXN0OiArTk9STUFMSVpFX1dISVRFU1BBQ0VcbiAgIC4uLiAgICAgZm9yIGJhc2UgaW4gXCdkWG9iXCc6XG4gICAuLi4gICAgICAgICBwcmludChcJ3swOnt3aWR0aH17YmFzZX19XCcuZm9ybWF0KG51bSwgYmFzZT1iYXNlLCB3aWR0aD13aWR0aCksIGVuZD1cJyBcJylcbiAgIC4uLiAgICAgcHJpbnQoKVxuICAgLi4uXG4gICAgICAgNSAgICAgNSAgICAgNSAgIDEwMVxuICAgICAgIDYgICAgIDYgICAgIDYgICAxMTBcbiAgICAgICA3ICAgICA3ICAgICA3ICAgMTExXG4gICAgICAgOCAgICAgOCAgICAxMCAgMTAwMFxuICAgICAgIDkgICAgIDkgICAgMTEgIDEwMDFcbiAgICAgIDEwICAgICBBICAgIDEyICAxMDEwXG4gICAgICAxMSAgICAgQiAgICAxMyAgMTAxMVxuJywKLSAnZnVuY3Rpb24nOiB1J1xuRnVuY3Rpb24gZGVmaW5pdGlvbnNcbioqKioqKioqKioqKioqKioqKioqXG5cbkEgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCAoc2VlXG5zZWN0aW9uICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqKTpcblxuICAgZnVuY2RlZiAgICAgICAgOjo9IFtkZWNvcmF0b3JzXSAiZGVmIiBmdW5jbmFtZSAiKCIgW3BhcmFtZXRlcl9saXN0XSAiKSIgWyItPiIgZXhwcmVzc2lvbl0gIjoiIHN1aXRlXG4gICBkZWNvcmF0b3JzICAgICA6Oj0gZGVjb3JhdG9yK1xuICAgZGVjb3JhdG9yICAgICAgOjo9ICJAIiBkb3R0ZWRfbmFtZSBbIigiIFthcmd1bWVudF9saXN0IFsiLCJdXSAiKSJdIE5FV0xJTkVcbiAgIGRvdHRlZF9uYW1lICAgIDo6PSBpZGVudGlmaWVyICgiLiIgaWRlbnRpZmllcikqXG4gICBwYXJhbWV0ZXJfbGlzdCA6Oj0gKGRlZnBhcmFtZXRlciAiLCIpKlxuICAgICAgICAgICAgICAgICAgICAgIHwgIioiIFtwYXJhbWV0ZXJdICgiLCIgZGVmcGFyYW1ldGVyKSogWyIsIiAiKioiIHBhcmFtZXRlcl1cbiAgICAgICAgICAgICAgICAgICAgICB8ICIqKiIgcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgICAgICAgfCBkZWZwYXJhbWV0ZXIgWyIsIl0gKVxuICAgcGFyYW1ldGVyICAgICAgOjo9IGlkZW50aWZpZXIgWyI6IiBleHByZXNzaW9uXVxuICAgZGVmcGFyYW1ldGVyICAgOjo9IHBhcmFtZXRlciBbIj0iIGV4cHJlc3Npb25dXG4gICBmdW5jbmFtZSAgICAgICA6Oj0gaWRlbnRpZmllclxuXG5BIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgYW4gZXhlY3V0YWJsZSBzdGF0ZW1lbnQuICBJdHMgZXhlY3V0aW9uIGJpbmRzXG50aGUgZnVuY3Rpb24gbmFtZSBpbiB0aGUgY3VycmVudCBsb2NhbCBuYW1lc3BhY2UgdG8gYSBmdW5jdGlvbiBvYmplY3RcbihhIHdyYXBwZXIgYXJvdW5kIHRoZSBleGVjdXRhYmxlIGNvZGUgZm9yIHRoZSBmdW5jdGlvbikuICBUaGlzXG5mdW5jdGlvbiBvYmplY3QgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgZ2xvYmFsIG5hbWVzcGFjZVxuYXMgdGhlIGdsb2JhbCBuYW1lc3BhY2UgdG8gYmUgdXNlZCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQuXG5cblRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGRvZXMgbm90IGV4ZWN1dGUgdGhlIGZ1bmN0aW9uIGJvZHk7IHRoaXMgZ2V0c1xuZXhlY3V0ZWQgb25seSB3aGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQuIFszXVxuXG5BIGZ1bmN0aW9uIGRlZmluaXRpb24gbWF5IGJlIHdyYXBwZWQgYnkgb25lIG9yIG1vcmUgKmRlY29yYXRvcipcbmV4cHJlc3Npb25zLiBEZWNvcmF0b3IgZXhwcmVzc2lvbnMgYXJlIGV2YWx1YXRlZCB3aGVuIHRoZSBmdW5jdGlvbiBpc1xuZGVmaW5lZCwgaW4gdGhlIHNjb3BlIHRoYXQgY29udGFpbnMgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24uICBUaGVcbnJlc3VsdCBtdXN0IGJlIGEgY2FsbGFibGUsIHdoaWNoIGlzIGludm9rZWQgd2l0aCB0aGUgZnVuY3Rpb24gb2JqZWN0XG5hcyB0aGUgb25seSBhcmd1bWVudC4gVGhlIHJldHVybmVkIHZhbHVlIGlzIGJvdW5kIHRvIHRoZSBmdW5jdGlvbiBuYW1lXG5pbnN0ZWFkIG9mIHRoZSBmdW5jdGlvbiBvYmplY3QuICBNdWx0aXBsZSBkZWNvcmF0b3JzIGFyZSBhcHBsaWVkIGluXG5uZXN0ZWQgZmFzaGlvbi4gRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29kZVxuXG4gICBAZjEoYXJnKVxuICAgQGYyXG4gICBkZWYgZnVuYygpOiBwYXNzXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgZGVmIGZ1bmMoKTogcGFzc1xuICAgZnVuYyA9IGYxKGFyZykoZjIoZnVuYykpXG5cbldoZW4gb25lIG9yIG1vcmUgKnBhcmFtZXRlcnMqIGhhdmUgdGhlIGZvcm0gKnBhcmFtZXRlciogIj0iXG4qZXhwcmVzc2lvbiosIHRoZSBmdW5jdGlvbiBpcyBzYWlkIHRvIGhhdmUgImRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlcy4iXG5Gb3IgYSBwYXJhbWV0ZXIgd2l0aCBhIGRlZmF1bHQgdmFsdWUsIHRoZSBjb3JyZXNwb25kaW5nICphcmd1bWVudCogbWF5XG5iZSBvbWl0dGVkIGZyb20gYSBjYWxsLCBpbiB3aGljaCBjYXNlIHRoZSBwYXJhbWV0ZXJcJ3MgZGVmYXVsdCB2YWx1ZSBpc1xuc3Vic3RpdHV0ZWQuICBJZiBhIHBhcmFtZXRlciBoYXMgYSBkZWZhdWx0IHZhbHVlLCBhbGwgZm9sbG93aW5nXG5wYXJhbWV0ZXJzIHVwIHVudGlsIHRoZSAiIioiIiBtdXN0IGFsc28gaGF2ZSBhIGRlZmF1bHQgdmFsdWUgLS0tIHRoaXNcbmlzIGEgc3ludGFjdGljIHJlc3RyaWN0aW9uIHRoYXQgaXMgbm90IGV4cHJlc3NlZCBieSB0aGUgZ3JhbW1hci5cblxuKipEZWZhdWx0IHBhcmFtZXRlciB2YWx1ZXMgYXJlIGV2YWx1YXRlZCBmcm9tIGxlZnQgdG8gcmlnaHQgd2hlbiB0aGVcbmZ1bmN0aW9uIGRlZmluaXRpb24gaXMgZXhlY3V0ZWQuKiogVGhpcyBtZWFucyB0aGF0IHRoZSBleHByZXNzaW9uIGlzXG5ldmFsdWF0ZWQgb25jZSwgd2hlbiB0aGUgZnVuY3Rpb24gaXMgZGVmaW5lZCwgYW5kIHRoYXQgdGhlIHNhbWUgInByZS1cbmNvbXB1dGVkIiB2YWx1ZSBpcyB1c2VkIGZvciBlYWNoIGNhbGwuICBUaGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50XG50byB1bmRlcnN0YW5kIHdoZW4gYSBkZWZhdWx0IHBhcmFtZXRlciBpcyBhIG11dGFibGUgb2JqZWN0LCBzdWNoIGFzIGFcbmxpc3Qgb3IgYSBkaWN0aW9uYXJ5OiBpZiB0aGUgZnVuY3Rpb24gbW9kaWZpZXMgdGhlIG9iamVjdCAoZS5nLiBieVxuYXBwZW5kaW5nIGFuIGl0ZW0gdG8gYSBsaXN0KSwgdGhlIGRlZmF1bHQgdmFsdWUgaXMgaW4gZWZmZWN0IG1vZGlmaWVkLlxuVGhpcyBpcyBnZW5lcmFsbHkgbm90IHdoYXQgd2FzIGludGVuZGVkLiAgQSB3YXkgYXJvdW5kIHRoaXMgaXMgdG8gdXNlXG4iTm9uZSIgYXMgdGhlIGRlZmF1bHQsIGFuZCBleHBsaWNpdGx5IHRlc3QgZm9yIGl0IGluIHRoZSBib2R5IG9mIHRoZVxuZnVuY3Rpb24sIGUuZy46XG5cbiAgIGRlZiB3aGF0c19vbl90aGVfdGVsbHkocGVuZ3Vpbj1Ob25lKTpcbiAgICAgICBpZiBwZW5ndWluIGlzIE5vbmU6XG4gICAgICAgICAgIHBlbmd1aW4gPSBbXVxuICAgICAgIHBlbmd1aW4uYXBwZW5kKCJwcm9wZXJ0eSBvZiB0aGUgem9vIilcbiAgICAgICByZXR1cm4gcGVuZ3VpblxuXG5GdW5jdGlvbiBjYWxsIHNlbWFudGljcyBhcmUgZGVzY3JpYmVkIGluIG1vcmUgZGV0YWlsIGluIHNlY3Rpb25cbipDYWxscyouIEEgZnVuY3Rpb24gY2FsbCBhbHdheXMgYXNzaWducyB2YWx1ZXMgdG8gYWxsIHBhcmFtZXRlcnNcbm1lbnRpb25lZCBpbiB0aGUgcGFyYW1ldGVyIGxpc3QsIGVpdGhlciBmcm9tIHBvc2l0aW9uIGFyZ3VtZW50cywgZnJvbVxua2V5d29yZCBhcmd1bWVudHMsIG9yIGZyb20gZGVmYXVsdCB2YWx1ZXMuICBJZiB0aGUgZm9ybVxuIiIqaWRlbnRpZmllciIiIGlzIHByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgdHVwbGUgcmVjZWl2aW5nIGFueVxuZXhjZXNzIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgZGVmYXVsdGluZyB0byB0aGUgZW1wdHkgdHVwbGUuICBJZiB0aGVcbmZvcm0gIiIqKmlkZW50aWZpZXIiIiBpcyBwcmVzZW50LCBpdCBpcyBpbml0aWFsaXplZCB0byBhIG5ld1xuZGljdGlvbmFyeSByZWNlaXZpbmcgYW55IGV4Y2VzcyBrZXl3b3JkIGFyZ3VtZW50cywgZGVmYXVsdGluZyB0byBhIG5ld1xuZW1wdHkgZGljdGlvbmFyeS4gUGFyYW1ldGVycyBhZnRlciAiIioiIiBvciAiIippZGVudGlmaWVyIiIgYXJlXG5rZXl3b3JkLW9ubHkgcGFyYW1ldGVycyBhbmQgbWF5IG9ubHkgYmUgcGFzc2VkIHVzZWQga2V5d29yZCBhcmd1bWVudHMuXG5cblBhcmFtZXRlcnMgbWF5IGhhdmUgYW5ub3RhdGlvbnMgb2YgdGhlIGZvcm0gIiI6IGV4cHJlc3Npb24iIiBmb2xsb3dpbmdcbnRoZSBwYXJhbWV0ZXIgbmFtZS4gIEFueSBwYXJhbWV0ZXIgbWF5IGhhdmUgYW4gYW5ub3RhdGlvbiBldmVuIHRob3NlXG5vZiB0aGUgZm9ybSAiKmlkZW50aWZpZXIiIG9yICIqKmlkZW50aWZpZXIiLiAgRnVuY3Rpb25zIG1heSBoYXZlXG4icmV0dXJuIiBhbm5vdGF0aW9uIG9mIHRoZSBmb3JtICIiLT4gZXhwcmVzc2lvbiIiIGFmdGVyIHRoZSBwYXJhbWV0ZXJcbmxpc3QuICBUaGVzZSBhbm5vdGF0aW9ucyBjYW4gYmUgYW55IHZhbGlkIFB5dGhvbiBleHByZXNzaW9uIGFuZCBhcmVcbmV2YWx1YXRlZCB3aGVuIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLiAgQW5ub3RhdGlvbnMgbWF5XG5iZSBldmFsdWF0ZWQgaW4gYSBkaWZmZXJlbnQgb3JkZXIgdGhhbiB0aGV5IGFwcGVhciBpbiB0aGUgc291cmNlIGNvZGUuXG5UaGUgcHJlc2VuY2Ugb2YgYW5ub3RhdGlvbnMgZG9lcyBub3QgY2hhbmdlIHRoZSBzZW1hbnRpY3Mgb2YgYVxuZnVuY3Rpb24uICBUaGUgYW5ub3RhdGlvbiB2YWx1ZXMgYXJlIGF2YWlsYWJsZSBhcyB2YWx1ZXMgb2YgYVxuZGljdGlvbmFyeSBrZXllZCBieSB0aGUgcGFyYW1ldGVyc1wnIG5hbWVzIGluIHRoZSAiX19hbm5vdGF0aW9uc19fIlxuYXR0cmlidXRlIG9mIHRoZSBmdW5jdGlvbiBvYmplY3QuXG5cbkl0IGlzIGFsc28gcG9zc2libGUgdG8gY3JlYXRlIGFub255bW91cyBmdW5jdGlvbnMgKGZ1bmN0aW9ucyBub3QgYm91bmRcbnRvIGEgbmFtZSksIGZvciBpbW1lZGlhdGUgdXNlIGluIGV4cHJlc3Npb25zLiAgVGhpcyB1c2VzIGxhbWJkYVxuZXhwcmVzc2lvbnMsIGRlc2NyaWJlZCBpbiBzZWN0aW9uICpMYW1iZGFzKi4gIE5vdGUgdGhhdCB0aGUgbGFtYmRhXG5leHByZXNzaW9uIGlzIG1lcmVseSBhIHNob3J0aGFuZCBmb3IgYSBzaW1wbGlmaWVkIGZ1bmN0aW9uIGRlZmluaXRpb247XG5hIGZ1bmN0aW9uIGRlZmluZWQgaW4gYSAiImRlZiIiIHN0YXRlbWVudCBjYW4gYmUgcGFzc2VkIGFyb3VuZCBvclxuYXNzaWduZWQgdG8gYW5vdGhlciBuYW1lIGp1c3QgbGlrZSBhIGZ1bmN0aW9uIGRlZmluZWQgYnkgYSBsYW1iZGFcbmV4cHJlc3Npb24uICBUaGUgIiJkZWYiIiBmb3JtIGlzIGFjdHVhbGx5IG1vcmUgcG93ZXJmdWwgc2luY2UgaXRcbmFsbG93cyB0aGUgZXhlY3V0aW9uIG9mIG11bHRpcGxlIHN0YXRlbWVudHMgYW5kIGFubm90YXRpb25zLlxuXG4qKlByb2dyYW1tZXJcJ3Mgbm90ZToqKiBGdW5jdGlvbnMgYXJlIGZpcnN0LWNsYXNzIG9iamVjdHMuICBBICIiZGVmIiJcbnN0YXRlbWVudCBleGVjdXRlZCBpbnNpZGUgYSBmdW5jdGlvbiBkZWZpbml0aW9uIGRlZmluZXMgYSBsb2NhbFxuZnVuY3Rpb24gdGhhdCBjYW4gYmUgcmV0dXJuZWQgb3IgcGFzc2VkIGFyb3VuZC4gIEZyZWUgdmFyaWFibGVzIHVzZWRcbmluIHRoZSBuZXN0ZWQgZnVuY3Rpb24gY2FuIGFjY2VzcyB0aGUgbG9jYWwgdmFyaWFibGVzIG9mIHRoZSBmdW5jdGlvblxuY29udGFpbmluZyB0aGUgZGVmLiAgU2VlIHNlY3Rpb24gKk5hbWluZyBhbmQgYmluZGluZyogZm9yIGRldGFpbHMuXG5cblNlZSBhbHNvOiAqKlBFUCAzMTA3KiogLSBGdW5jdGlvbiBBbm5vdGF0aW9uc1xuXG4gICAgIFRoZSBvcmlnaW5hbCBzcGVjaWZpY2F0aW9uIGZvciBmdW5jdGlvbiBhbm5vdGF0aW9ucy5cbicsCi0gJ2dsb2JhbCc6IHUnXG5UaGUgImdsb2JhbCIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIGdsb2JhbF9zdG10IDo6PSAiZ2xvYmFsIiBpZGVudGlmaWVyICgiLCIgaWRlbnRpZmllcikqXG5cblRoZSAiZ2xvYmFsIiBzdGF0ZW1lbnQgaXMgYSBkZWNsYXJhdGlvbiB3aGljaCBob2xkcyBmb3IgdGhlIGVudGlyZVxuY3VycmVudCBjb2RlIGJsb2NrLiAgSXQgbWVhbnMgdGhhdCB0aGUgbGlzdGVkIGlkZW50aWZpZXJzIGFyZSB0byBiZVxuaW50ZXJwcmV0ZWQgYXMgZ2xvYmFscy4gIEl0IHdvdWxkIGJlIGltcG9zc2libGUgdG8gYXNzaWduIHRvIGEgZ2xvYmFsXG52YXJpYWJsZSB3aXRob3V0ICJnbG9iYWwiLCBhbHRob3VnaCBmcmVlIHZhcmlhYmxlcyBtYXkgcmVmZXIgdG9cbmdsb2JhbHMgd2l0aG91dCBiZWluZyBkZWNsYXJlZCBnbG9iYWwuXG5cbk5hbWVzIGxpc3RlZCBpbiBhICJnbG9iYWwiIHN0YXRlbWVudCBtdXN0IG5vdCBiZSB1c2VkIGluIHRoZSBzYW1lIGNvZGVcbmJsb2NrIHRleHR1YWxseSBwcmVjZWRpbmcgdGhhdCAiZ2xvYmFsIiBzdGF0ZW1lbnQuXG5cbk5hbWVzIGxpc3RlZCBpbiBhICJnbG9iYWwiIHN0YXRlbWVudCBtdXN0IG5vdCBiZSBkZWZpbmVkIGFzIGZvcm1hbFxucGFyYW1ldGVycyBvciBpbiBhICJmb3IiIGxvb3AgY29udHJvbCB0YXJnZXQsICJjbGFzcyIgZGVmaW5pdGlvbixcbmZ1bmN0aW9uIGRlZmluaXRpb24sIG9yICJpbXBvcnQiIHN0YXRlbWVudC5cblxuKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdFxuZW5mb3JjZSB0aGUgdHdvIHJlc3RyaWN0aW9ucywgYnV0IHByb2dyYW1zIHNob3VsZCBub3QgYWJ1c2UgdGhpc1xuZnJlZWRvbSwgYXMgZnV0dXJlIGltcGxlbWVudGF0aW9ucyBtYXkgZW5mb3JjZSB0aGVtIG9yIHNpbGVudGx5IGNoYW5nZVxudGhlIG1lYW5pbmcgb2YgdGhlIHByb2dyYW0uXG5cbioqUHJvZ3JhbW1lclwncyBub3RlOioqIHRoZSAiZ2xvYmFsIiBpcyBhIGRpcmVjdGl2ZSB0byB0aGUgcGFyc2VyLiAgSXRcbmFwcGxpZXMgb25seSB0byBjb2RlIHBhcnNlZCBhdCB0aGUgc2FtZSB0aW1lIGFzIHRoZSAiZ2xvYmFsIlxuc3RhdGVtZW50LiBJbiBwYXJ0aWN1bGFyLCBhICJnbG9iYWwiIHN0YXRlbWVudCBjb250YWluZWQgaW4gYSBzdHJpbmdcbm9yIGNvZGUgb2JqZWN0IHN1cHBsaWVkIHRvIHRoZSBidWlsdC1pbiAiZXhlYygpIiBmdW5jdGlvbiBkb2VzIG5vdFxuYWZmZWN0IHRoZSBjb2RlIGJsb2NrICpjb250YWluaW5nKiB0aGUgZnVuY3Rpb24gY2FsbCwgYW5kIGNvZGVcbmNvbnRhaW5lZCBpbiBzdWNoIGEgc3RyaW5nIGlzIHVuYWZmZWN0ZWQgYnkgImdsb2JhbCIgc3RhdGVtZW50cyBpbiB0aGVcbmNvZGUgY29udGFpbmluZyB0aGUgZnVuY3Rpb24gY2FsbC4gIFRoZSBzYW1lIGFwcGxpZXMgdG8gdGhlICJldmFsKCkiXG5hbmQgImNvbXBpbGUoKSIgZnVuY3Rpb25zLlxuJywKLSAnaWQtY2xhc3Nlcyc6IHUnXG5SZXNlcnZlZCBjbGFzc2VzIG9mIGlkZW50aWZpZXJzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbkNlcnRhaW4gY2xhc3NlcyBvZiBpZGVudGlmaWVycyAoYmVzaWRlcyBrZXl3b3JkcykgaGF2ZSBzcGVjaWFsXG5tZWFuaW5ncy4gIFRoZXNlIGNsYXNzZXMgYXJlIGlkZW50aWZpZWQgYnkgdGhlIHBhdHRlcm5zIG9mIGxlYWRpbmcgYW5kXG50cmFpbGluZyB1bmRlcnNjb3JlIGNoYXJhY3RlcnM6XG5cbiJfKiJcbiAgIE5vdCBpbXBvcnRlZCBieSAiZnJvbSBtb2R1bGUgaW1wb3J0ICoiLiAgVGhlIHNwZWNpYWwgaWRlbnRpZmllciAiXyJcbiAgIGlzIHVzZWQgaW4gdGhlIGludGVyYWN0aXZlIGludGVycHJldGVyIHRvIHN0b3JlIHRoZSByZXN1bHQgb2YgdGhlXG4gICBsYXN0IGV2YWx1YXRpb247IGl0IGlzIHN0b3JlZCBpbiB0aGUgImJ1aWx0aW5zIiBtb2R1bGUuICBXaGVuIG5vdFxuICAgaW4gaW50ZXJhY3RpdmUgbW9kZSwgIl8iIGhhcyBubyBzcGVjaWFsIG1lYW5pbmcgYW5kIGlzIG5vdCBkZWZpbmVkLlxuICAgU2VlIHNlY3Rpb24gKlRoZSBpbXBvcnQgc3RhdGVtZW50Ki5cblxuICAgTm90ZTogVGhlIG5hbWUgIl8iIGlzIG9mdGVuIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aFxuICAgICBpbnRlcm5hdGlvbmFsaXphdGlvbjsgcmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZVxuICAgICAiZ2V0dGV4dCIgbW9kdWxlIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoaXMgY29udmVudGlvbi5cblxuIl9fKl9fIlxuICAgU3lzdGVtLWRlZmluZWQgbmFtZXMuIFRoZXNlIG5hbWVzIGFyZSBkZWZpbmVkIGJ5IHRoZSBpbnRlcnByZXRlclxuICAgYW5kIGl0cyBpbXBsZW1lbnRhdGlvbiAoaW5jbHVkaW5nIHRoZSBzdGFuZGFyZCBsaWJyYXJ5KS4gIEN1cnJlbnRcbiAgIHN5c3RlbSBuYW1lcyBhcmUgZGlzY3Vzc2VkIGluIHRoZSAqU3BlY2lhbCBtZXRob2QgbmFtZXMqIHNlY3Rpb25cbiAgIGFuZCBlbHNld2hlcmUuICBNb3JlIHdpbGwgbGlrZWx5IGJlIGRlZmluZWQgaW4gZnV0dXJlIHZlcnNpb25zIG9mXG4gICBQeXRob24uICAqQW55KiB1c2Ugb2YgIl9fKl9fIiBuYW1lcywgaW4gYW55IGNvbnRleHQsIHRoYXQgZG9lcyBub3RcbiAgIGZvbGxvdyBleHBsaWNpdGx5IGRvY3VtZW50ZWQgdXNlLCBpcyBzdWJqZWN0IHRvIGJyZWFrYWdlIHdpdGhvdXRcbiAgIHdhcm5pbmcuXG5cbiJfXyoiXG4gICBDbGFzcy1wcml2YXRlIG5hbWVzLiAgTmFtZXMgaW4gdGhpcyBjYXRlZ29yeSwgd2hlbiB1c2VkIHdpdGhpbiB0aGVcbiAgIGNvbnRleHQgb2YgYSBjbGFzcyBkZWZpbml0aW9uLCBhcmUgcmUtd3JpdHRlbiB0byB1c2UgYSBtYW5nbGVkIGZvcm1cbiAgIHRvIGhlbHAgYXZvaWQgbmFtZSBjbGFzaGVzIGJldHdlZW4gInByaXZhdGUiIGF0dHJpYnV0ZXMgb2YgYmFzZSBhbmRcbiAgIGRlcml2ZWQgY2xhc3Nlcy4gU2VlIHNlY3Rpb24gKklkZW50aWZpZXJzIChOYW1lcykqLlxuJywKLSAnaWRlbnRpZmllcnMnOiB1J1xuSWRlbnRpZmllcnMgYW5kIGtleXdvcmRzXG4qKioqKioqKioqKioqKioqKioqKioqKipcblxuSWRlbnRpZmllcnMgKGFsc28gcmVmZXJyZWQgdG8gYXMgKm5hbWVzKikgYXJlIGRlc2NyaWJlZCBieSB0aGVcbmZvbGxvd2luZyBsZXhpY2FsIGRlZmluaXRpb25zLlxuXG5UaGUgc3ludGF4IG9mIGlkZW50aWZpZXJzIGluIFB5dGhvbiBpcyBiYXNlZCBvbiB0aGUgVW5pY29kZSBzdGFuZGFyZFxuYW5uZXggVUFYLTMxLCB3aXRoIGVsYWJvcmF0aW9uIGFuZCBjaGFuZ2VzIGFzIGRlZmluZWQgYmVsb3c7IHNlZSBhbHNvXG4qKlBFUCAzMTMxKiogZm9yIGZ1cnRoZXIgZGV0YWlscy5cblxuV2l0aGluIHRoZSBBU0NJSSByYW5nZSAoVSswMDAxLi5VKzAwN0YpLCB0aGUgdmFsaWQgY2hhcmFjdGVycyBmb3JcbmlkZW50aWZpZXJzIGFyZSB0aGUgc2FtZSBhcyBpbiBQeXRob24gMi54OiB0aGUgdXBwZXJjYXNlIGFuZCBsb3dlcmNhc2VcbmxldHRlcnMgIkEiIHRocm91Z2ggIloiLCB0aGUgdW5kZXJzY29yZSAiXyIgYW5kLCBleGNlcHQgZm9yIHRoZSBmaXJzdFxuY2hhcmFjdGVyLCB0aGUgZGlnaXRzICIwIiB0aHJvdWdoICI5Ii5cblxuUHl0aG9uIDMuMCBpbnRyb2R1Y2VzIGFkZGl0aW9uYWwgY2hhcmFjdGVycyBmcm9tIG91dHNpZGUgdGhlIEFTQ0lJXG5yYW5nZSAoc2VlICoqUEVQIDMxMzEqKikuICBGb3IgdGhlc2UgY2hhcmFjdGVycywgdGhlIGNsYXNzaWZpY2F0aW9uXG51c2VzIHRoZSB2ZXJzaW9uIG9mIHRoZSBVbmljb2RlIENoYXJhY3RlciBEYXRhYmFzZSBhcyBpbmNsdWRlZCBpbiB0aGVcbiJ1bmljb2RlZGF0YSIgbW9kdWxlLlxuXG5JZGVudGlmaWVycyBhcmUgdW5saW1pdGVkIGluIGxlbmd0aC4gIENhc2UgaXMgc2lnbmlmaWNhbnQuXG5cbiAgIGlkZW50aWZpZXIgICA6Oj0geGlkX3N0YXJ0IHhpZF9jb250aW51ZSpcbiAgIGlkX3N0YXJ0ICAgICA6Oj0gPGFsbCBjaGFyYWN0ZXJzIGluIGdlbmVyYWwgY2F0ZWdvcmllcyBMdSwgTGwsIEx0LCBMbSwgTG8sIE5sLCB0aGUgdW5kZXJzY29yZSwgYW5kIGNoYXJhY3RlcnMgd2l0aCB0aGUgT3RoZXJfSURfU3RhcnQgcHJvcGVydHk+XG4gICBpZF9jb250aW51ZSAgOjo9IDxhbGwgY2hhcmFjdGVycyBpbiBpZF9zdGFydCwgcGx1cyBjaGFyYWN0ZXJzIGluIHRoZSBjYXRlZ29yaWVzIE1uLCBNYywgTmQsIFBjIGFuZCBvdGhlcnMgd2l0aCB0aGUgT3RoZXJfSURfQ29udGludWUgcHJvcGVydHk+XG4gICB4aWRfc3RhcnQgICAgOjo9IDxhbGwgY2hhcmFjdGVycyBpbiBpZF9zdGFydCB3aG9zZSBORktDIG5vcm1hbGl6YXRpb24gaXMgaW4gImlkX3N0YXJ0IHhpZF9jb250aW51ZSoiPlxuICAgeGlkX2NvbnRpbnVlIDo6PSA8YWxsIGNoYXJhY3RlcnMgaW4gaWRfY29udGludWUgd2hvc2UgTkZLQyBub3JtYWxpemF0aW9uIGlzIGluICJpZF9jb250aW51ZSoiPlxuXG5UaGUgVW5pY29kZSBjYXRlZ29yeSBjb2RlcyBtZW50aW9uZWQgYWJvdmUgc3RhbmQgZm9yOlxuXG4qICpMdSogLSB1cHBlcmNhc2UgbGV0dGVyc1xuXG4qICpMbCogLSBsb3dlcmNhc2UgbGV0dGVyc1xuXG4qICpMdCogLSB0aXRsZWNhc2UgbGV0dGVyc1xuXG4qICpMbSogLSBtb2RpZmllciBsZXR0ZXJzXG5cbiogKkxvKiAtIG90aGVyIGxldHRlcnNcblxuKiAqTmwqIC0gbGV0dGVyIG51bWJlcnNcblxuKiAqTW4qIC0gbm9uc3BhY2luZyBtYXJrc1xuXG4qICpNYyogLSBzcGFjaW5nIGNvbWJpbmluZyBtYXJrc1xuXG4qICpOZCogLSBkZWNpbWFsIG51bWJlcnNcblxuKiAqUGMqIC0gY29ubmVjdG9yIHB1bmN0dWF0aW9uc1xuXG4qICpPdGhlcl9JRF9TdGFydCogLSBleHBsaWNpdCBsaXN0IG9mIGNoYXJhY3RlcnMgaW4gUHJvcExpc3QudHh0IHRvXG4gIHN1cHBvcnQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcblxuKiAqT3RoZXJfSURfQ29udGludWUqIC0gbGlrZXdpc2VcblxuQWxsIGlkZW50aWZpZXJzIGFyZSBjb252ZXJ0ZWQgaW50byB0aGUgbm9ybWFsIGZvcm0gTkZLQyB3aGlsZSBwYXJzaW5nO1xuY29tcGFyaXNvbiBvZiBpZGVudGlmaWVycyBpcyBiYXNlZCBvbiBORktDLlxuXG5BIG5vbi1ub3JtYXRpdmUgSFRNTCBmaWxlIGxpc3RpbmcgYWxsIHZhbGlkIGlkZW50aWZpZXIgY2hhcmFjdGVycyBmb3JcblVuaWNvZGUgNC4xIGNhbiBiZSBmb3VuZCBhdCBodHRwczovL3d3dy5kY2wuaHBpLnVuaS1cbnBvdHNkYW0uZGUvaG9tZS9sb2V3aXMvdGFibGUtMzEzMS5odG1sLlxuXG5cbktleXdvcmRzXG49PT09PT09PVxuXG5UaGUgZm9sbG93aW5nIGlkZW50aWZpZXJzIGFyZSB1c2VkIGFzIHJlc2VydmVkIHdvcmRzLCBvciAqa2V5d29yZHMqIG9mXG50aGUgbGFuZ3VhZ2UsIGFuZCBjYW5ub3QgYmUgdXNlZCBhcyBvcmRpbmFyeSBpZGVudGlmaWVycy4gIFRoZXkgbXVzdFxuYmUgc3BlbGxlZCBleGFjdGx5IGFzIHdyaXR0ZW4gaGVyZTpcblxuICAgRmFsc2UgICAgICBjbGFzcyAgICAgIGZpbmFsbHkgICAgaXMgICAgICAgICByZXR1cm5cbiAgIE5vbmUgICAgICAgY29udGludWUgICBmb3IgICAgICAgIGxhbWJkYSAgICAgdHJ5XG4gICBUcnVlICAgICAgIGRlZiAgICAgICAgZnJvbSAgICAgICBub25sb2NhbCAgIHdoaWxlXG4gICBhbmQgICAgICAgIGRlbCAgICAgICAgZ2xvYmFsICAgICBub3QgICAgICAgIHdpdGhcbiAgIGFzICAgICAgICAgZWxpZiAgICAgICBpZiAgICAgICAgIG9yICAgICAgICAgeWllbGRcbiAgIGFzc2VydCAgICAgZWxzZSAgICAgICBpbXBvcnQgICAgIHBhc3NcbiAgIGJyZWFrICAgICAgZXhjZXB0ICAgICBpbiAgICAgICAgIHJhaXNlXG5cblxuUmVzZXJ2ZWQgY2xhc3NlcyBvZiBpZGVudGlmaWVyc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5DZXJ0YWluIGNsYXNzZXMgb2YgaWRlbnRpZmllcnMgKGJlc2lkZXMga2V5d29yZHMpIGhhdmUgc3BlY2lhbFxubWVhbmluZ3MuICBUaGVzZSBjbGFzc2VzIGFyZSBpZGVudGlmaWVkIGJ5IHRoZSBwYXR0ZXJucyBvZiBsZWFkaW5nIGFuZFxudHJhaWxpbmcgdW5kZXJzY29yZSBjaGFyYWN0ZXJzOlxuXG4iXyoiXG4gICBOb3QgaW1wb3J0ZWQgYnkgImZyb20gbW9kdWxlIGltcG9ydCAqIi4gIFRoZSBzcGVjaWFsIGlkZW50aWZpZXIgIl8iXG4gICBpcyB1c2VkIGluIHRoZSBpbnRlcmFjdGl2ZSBpbnRlcnByZXRlciB0byBzdG9yZSB0aGUgcmVzdWx0IG9mIHRoZVxuICAgbGFzdCBldmFsdWF0aW9uOyBpdCBpcyBzdG9yZWQgaW4gdGhlICJidWlsdGlucyIgbW9kdWxlLiAgV2hlbiBub3RcbiAgIGluIGludGVyYWN0aXZlIG1vZGUsICJfIiBoYXMgbm8gc3BlY2lhbCBtZWFuaW5nIGFuZCBpcyBub3QgZGVmaW5lZC5cbiAgIFNlZSBzZWN0aW9uICpUaGUgaW1wb3J0IHN0YXRlbWVudCouXG5cbiAgIE5vdGU6IFRoZSBuYW1lICJfIiBpcyBvZnRlbiB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGhcbiAgICAgaW50ZXJuYXRpb25hbGl6YXRpb247IHJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGVcbiAgICAgImdldHRleHQiIG1vZHVsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGlzIGNvbnZlbnRpb24uXG5cbiJfXypfXyJcbiAgIFN5c3RlbS1kZWZpbmVkIG5hbWVzLiBUaGVzZSBuYW1lcyBhcmUgZGVmaW5lZCBieSB0aGUgaW50ZXJwcmV0ZXJcbiAgIGFuZCBpdHMgaW1wbGVtZW50YXRpb24gKGluY2x1ZGluZyB0aGUgc3RhbmRhcmQgbGlicmFyeSkuICBDdXJyZW50XG4gICBzeXN0ZW0gbmFtZXMgYXJlIGRpc2N1c3NlZCBpbiB0aGUgKlNwZWNpYWwgbWV0aG9kIG5hbWVzKiBzZWN0aW9uXG4gICBhbmQgZWxzZXdoZXJlLiAgTW9yZSB3aWxsIGxpa2VseSBiZSBkZWZpbmVkIGluIGZ1dHVyZSB2ZXJzaW9ucyBvZlxuICAgUHl0aG9uLiAgKkFueSogdXNlIG9mICJfXypfXyIgbmFtZXMsIGluIGFueSBjb250ZXh0LCB0aGF0IGRvZXMgbm90XG4gICBmb2xsb3cgZXhwbGljaXRseSBkb2N1bWVudGVkIHVzZSwgaXMgc3ViamVjdCB0byBicmVha2FnZSB3aXRob3V0XG4gICB3YXJuaW5nLlxuXG4iX18qIlxuICAgQ2xhc3MtcHJpdmF0ZSBuYW1lcy4gIE5hbWVzIGluIHRoaXMgY2F0ZWdvcnksIHdoZW4gdXNlZCB3aXRoaW4gdGhlXG4gICBjb250ZXh0IG9mIGEgY2xhc3MgZGVmaW5pdGlvbiwgYXJlIHJlLXdyaXR0ZW4gdG8gdXNlIGEgbWFuZ2xlZCBmb3JtXG4gICB0byBoZWxwIGF2b2lkIG5hbWUgY2xhc2hlcyBiZXR3ZWVuICJwcml2YXRlIiBhdHRyaWJ1dGVzIG9mIGJhc2UgYW5kXG4gICBkZXJpdmVkIGNsYXNzZXMuIFNlZSBzZWN0aW9uICpJZGVudGlmaWVycyAoTmFtZXMpKi5cbicsCi0gJ2lmJzogdSdcblRoZSAiaWYiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqXG5cblRoZSAiaWYiIHN0YXRlbWVudCBpcyB1c2VkIGZvciBjb25kaXRpb25hbCBleGVjdXRpb246XG5cbiAgIGlmX3N0bXQgOjo9ICJpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICggImVsaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlICkqXG4gICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuSXQgc2VsZWN0cyBleGFjdGx5IG9uZSBvZiB0aGUgc3VpdGVzIGJ5IGV2YWx1YXRpbmcgdGhlIGV4cHJlc3Npb25zIG9uZVxuYnkgb25lIHVudGlsIG9uZSBpcyBmb3VuZCB0byBiZSB0cnVlIChzZWUgc2VjdGlvbiAqQm9vbGVhbiBvcGVyYXRpb25zKlxuZm9yIHRoZSBkZWZpbml0aW9uIG9mIHRydWUgYW5kIGZhbHNlKTsgdGhlbiB0aGF0IHN1aXRlIGlzIGV4ZWN1dGVkXG4oYW5kIG5vIG90aGVyIHBhcnQgb2YgdGhlICJpZiIgc3RhdGVtZW50IGlzIGV4ZWN1dGVkIG9yIGV2YWx1YXRlZCkuXG5JZiBhbGwgZXhwcmVzc2lvbnMgYXJlIGZhbHNlLCB0aGUgc3VpdGUgb2YgdGhlICJlbHNlIiBjbGF1c2UsIGlmXG5wcmVzZW50LCBpcyBleGVjdXRlZC5cbicsCi0gJ2ltYWdpbmFyeSc6IHUnXG5JbWFnaW5hcnkgbGl0ZXJhbHNcbioqKioqKioqKioqKioqKioqKlxuXG5JbWFnaW5hcnkgbGl0ZXJhbHMgYXJlIGRlc2NyaWJlZCBieSB0aGUgZm9sbG93aW5nIGxleGljYWwgZGVmaW5pdGlvbnM6XG5cbiAgIGltYWdudW1iZXIgOjo9IChmbG9hdG51bWJlciB8IGludHBhcnQpICgiaiIgfCAiSiIpXG5cbkFuIGltYWdpbmFyeSBsaXRlcmFsIHlpZWxkcyBhIGNvbXBsZXggbnVtYmVyIHdpdGggYSByZWFsIHBhcnQgb2YgMC4wLlxuQ29tcGxleCBudW1iZXJzIGFyZSByZXByZXNlbnRlZCBhcyBhIHBhaXIgb2YgZmxvYXRpbmcgcG9pbnQgbnVtYmVyc1xuYW5kIGhhdmUgdGhlIHNhbWUgcmVzdHJpY3Rpb25zIG9uIHRoZWlyIHJhbmdlLiAgVG8gY3JlYXRlIGEgY29tcGxleFxubnVtYmVyIHdpdGggYSBub256ZXJvIHJlYWwgcGFydCwgYWRkIGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIHRvIGl0LFxuZS5nLiwgIigzKzRqKSIuICBTb21lIGV4YW1wbGVzIG9mIGltYWdpbmFyeSBsaXRlcmFsczpcblxuICAgMy4xNGogICAxMC5qICAgIDEwaiAgICAgLjAwMWogICAxZTEwMGogIDMuMTRlLTEwalxuJywKLSAnaW1wb3J0JzogdSdcblRoZSAiaW1wb3J0IiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKipcblxuICAgaW1wb3J0X3N0bXQgICAgIDo6PSAiaW1wb3J0IiBtb2R1bGUgWyJhcyIgbmFtZV0gKCAiLCIgbW9kdWxlIFsiYXMiIG5hbWVdICkqXG4gICAgICAgICAgICAgICAgICAgfCAiZnJvbSIgcmVsYXRpdmVfbW9kdWxlICJpbXBvcnQiIGlkZW50aWZpZXIgWyJhcyIgbmFtZV1cbiAgICAgICAgICAgICAgICAgICAoICIsIiBpZGVudGlmaWVyIFsiYXMiIG5hbWVdICkqXG4gICAgICAgICAgICAgICAgICAgfCAiZnJvbSIgcmVsYXRpdmVfbW9kdWxlICJpbXBvcnQiICIoIiBpZGVudGlmaWVyIFsiYXMiIG5hbWVdXG4gICAgICAgICAgICAgICAgICAgKCAiLCIgaWRlbnRpZmllciBbImFzIiBuYW1lXSApKiBbIiwiXSAiKSJcbiAgICAgICAgICAgICAgICAgICB8ICJmcm9tIiBtb2R1bGUgImltcG9ydCIgIioiXG4gICBtb2R1bGUgICAgICAgICAgOjo9IChpZGVudGlmaWVyICIuIikqIGlkZW50aWZpZXJcbiAgIHJlbGF0aXZlX21vZHVsZSA6Oj0gIi4iKiBtb2R1bGUgfCAiLiIrXG4gICBuYW1lICAgICAgICAgICAgOjo9IGlkZW50aWZpZXJcblxuVGhlIGJhc2ljIGltcG9ydCBzdGF0ZW1lbnQgKG5vICJmcm9tIiBjbGF1c2UpIGlzIGV4ZWN1dGVkIGluIHR3b1xuc3RlcHM6XG5cbjEuIGZpbmQgYSBtb2R1bGUsIGxvYWRpbmcgYW5kIGluaXRpYWxpemluZyBpdCBpZiBuZWNlc3NhcnlcblxuMi4gZGVmaW5lIGEgbmFtZSBvciBuYW1lcyBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGZvciB0aGUgc2NvcGVcbiAgIHdoZXJlIHRoZSAiaW1wb3J0IiBzdGF0ZW1lbnQgb2NjdXJzLlxuXG5XaGVuIHRoZSBzdGF0ZW1lbnQgY29udGFpbnMgbXVsdGlwbGUgY2xhdXNlcyAoc2VwYXJhdGVkIGJ5IGNvbW1hcykgdGhlXG50d28gc3RlcHMgYXJlIGNhcnJpZWQgb3V0IHNlcGFyYXRlbHkgZm9yIGVhY2ggY2xhdXNlLCBqdXN0IGFzIHRob3VnaFxudGhlIGNsYXVzZXMgaGFkIGJlZW4gc2VwYXJhdGVkIG91dCBpbnRvIGluZGl2aWR1YWwgaW1wb3J0IHN0YXRlbWVudHMuXG5cblRoZSBkZXRhaWxzIG9mIHRoZSBmaXJzdCBzdGVwLCBmaW5kaW5nIGFuZCBsb2FkaW5nIG1vZHVsZXMgYXJlXG5kZXNjcmliZWQgaW4gZ3JlYXRlciBkZXRhaWwgaW4gdGhlIHNlY3Rpb24gb24gdGhlICppbXBvcnQgc3lzdGVtKixcbndoaWNoIGFsc28gZGVzY3JpYmVzIHRoZSB2YXJpb3VzIHR5cGVzIG9mIHBhY2thZ2VzIGFuZCBtb2R1bGVzIHRoYXRcbmNhbiBiZSBpbXBvcnRlZCwgYXMgd2VsbCBhcyBhbGwgdGhlIGhvb2tzIHRoYXQgY2FuIGJlIHVzZWQgdG9cbmN1c3RvbWl6ZSB0aGUgaW1wb3J0IHN5c3RlbS4gTm90ZSB0aGF0IGZhaWx1cmVzIGluIHRoaXMgc3RlcCBtYXlcbmluZGljYXRlIGVpdGhlciB0aGF0IHRoZSBtb2R1bGUgY291bGQgbm90IGJlIGxvY2F0ZWQsICpvciogdGhhdCBhblxuZXJyb3Igb2NjdXJyZWQgd2hpbGUgaW5pdGlhbGl6aW5nIHRoZSBtb2R1bGUsIHdoaWNoIGluY2x1ZGVzIGV4ZWN1dGlvblxub2YgdGhlIG1vZHVsZVwncyBjb2RlLlxuXG5JZiB0aGUgcmVxdWVzdGVkIG1vZHVsZSBpcyByZXRyaWV2ZWQgc3VjY2Vzc2Z1bGx5LCBpdCB3aWxsIGJlIG1hZGVcbmF2YWlsYWJsZSBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGluIG9uZSBvZiB0aHJlZSB3YXlzOlxuXG4qIElmIHRoZSBtb2R1bGUgbmFtZSBpcyBmb2xsb3dlZCBieSAiYXMiLCB0aGVuIHRoZSBuYW1lIGZvbGxvd2luZ1xuICAiYXMiIGlzIGJvdW5kIGRpcmVjdGx5IHRvIHRoZSBpbXBvcnRlZCBtb2R1bGUuXG5cbiogSWYgbm8gb3RoZXIgbmFtZSBpcyBzcGVjaWZpZWQsIGFuZCB0aGUgbW9kdWxlIGJlaW5nIGltcG9ydGVkIGlzIGFcbiAgdG9wIGxldmVsIG1vZHVsZSwgdGhlIG1vZHVsZVwncyBuYW1lIGlzIGJvdW5kIGluIHRoZSBsb2NhbCBuYW1lc3BhY2VcbiAgYXMgYSByZWZlcmVuY2UgdG8gdGhlIGltcG9ydGVkIG1vZHVsZVxuXG4qIElmIHRoZSBtb2R1bGUgYmVpbmcgaW1wb3J0ZWQgaXMgKm5vdCogYSB0b3AgbGV2ZWwgbW9kdWxlLCB0aGVuIHRoZVxuICBuYW1lIG9mIHRoZSB0b3AgbGV2ZWwgcGFja2FnZSB0aGF0IGNvbnRhaW5zIHRoZSBtb2R1bGUgaXMgYm91bmQgaW5cbiAgdGhlIGxvY2FsIG5hbWVzcGFjZSBhcyBhIHJlZmVyZW5jZSB0byB0aGUgdG9wIGxldmVsIHBhY2thZ2UuIFRoZVxuICBpbXBvcnRlZCBtb2R1bGUgbXVzdCBiZSBhY2Nlc3NlZCB1c2luZyBpdHMgZnVsbCBxdWFsaWZpZWQgbmFtZVxuICByYXRoZXIgdGhhbiBkaXJlY3RseVxuXG5UaGUgImZyb20iIGZvcm0gdXNlcyBhIHNsaWdodGx5IG1vcmUgY29tcGxleCBwcm9jZXNzOlxuXG4xLiBmaW5kIHRoZSBtb2R1bGUgc3BlY2lmaWVkIGluIHRoZSAiZnJvbSIgY2xhdXNlLCBsb2FkaW5nIGFuZFxuICAgaW5pdGlhbGl6aW5nIGl0IGlmIG5lY2Vzc2FyeTtcblxuMi4gZm9yIGVhY2ggb2YgdGhlIGlkZW50aWZpZXJzIHNwZWNpZmllZCBpbiB0aGUgImltcG9ydCIgY2xhdXNlczpcblxuICAgMS4gY2hlY2sgaWYgdGhlIGltcG9ydGVkIG1vZHVsZSBoYXMgYW4gYXR0cmlidXRlIGJ5IHRoYXQgbmFtZVxuXG4gICAyLiBpZiBub3QsIGF0dGVtcHQgdG8gaW1wb3J0IGEgc3VibW9kdWxlIHdpdGggdGhhdCBuYW1lIGFuZCB0aGVuXG4gICAgICBjaGVjayB0aGUgaW1wb3J0ZWQgbW9kdWxlIGFnYWluIGZvciB0aGF0IGF0dHJpYnV0ZVxuXG4gICAzLiBpZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBmb3VuZCwgIkltcG9ydEVycm9yIiBpcyByYWlzZWQuXG5cbiAgIDQuIG90aGVyd2lzZSwgYSByZWZlcmVuY2UgdG8gdGhhdCB2YWx1ZSBpcyBzdG9yZWQgaW4gdGhlIGxvY2FsXG4gICAgICBuYW1lc3BhY2UsIHVzaW5nIHRoZSBuYW1lIGluIHRoZSAiYXMiIGNsYXVzZSBpZiBpdCBpcyBwcmVzZW50LFxuICAgICAgb3RoZXJ3aXNlIHVzaW5nIHRoZSBhdHRyaWJ1dGUgbmFtZVxuXG5FeGFtcGxlczpcblxuICAgaW1wb3J0IGZvbyAgICAgICAgICAgICAgICAgIyBmb28gaW1wb3J0ZWQgYW5kIGJvdW5kIGxvY2FsbHlcbiAgIGltcG9ydCBmb28uYmFyLmJheiAgICAgICAgICMgZm9vLmJhci5iYXogaW1wb3J0ZWQsIGZvbyBib3VuZCBsb2NhbGx5XG4gICBpbXBvcnQgZm9vLmJhci5iYXogYXMgZmJiICAjIGZvby5iYXIuYmF6IGltcG9ydGVkIGFuZCBib3VuZCBhcyBmYmJcbiAgIGZyb20gZm9vLmJhciBpbXBvcnQgYmF6ICAgICMgZm9vLmJhci5iYXogaW1wb3J0ZWQgYW5kIGJvdW5kIGFzIGJhelxuICAgZnJvbSBmb28gaW1wb3J0IGF0dHIgICAgICAgIyBmb28gaW1wb3J0ZWQgYW5kIGZvby5hdHRyIGJvdW5kIGFzIGF0dHJcblxuSWYgdGhlIGxpc3Qgb2YgaWRlbnRpZmllcnMgaXMgcmVwbGFjZWQgYnkgYSBzdGFyICgiXCcqXCciKSwgYWxsIHB1YmxpY1xubmFtZXMgZGVmaW5lZCBpbiB0aGUgbW9kdWxlIGFyZSBib3VuZCBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGZvciB0aGVcbnNjb3BlIHdoZXJlIHRoZSAiaW1wb3J0IiBzdGF0ZW1lbnQgb2NjdXJzLlxuXG5UaGUgKnB1YmxpYyBuYW1lcyogZGVmaW5lZCBieSBhIG1vZHVsZSBhcmUgZGV0ZXJtaW5lZCBieSBjaGVja2luZyB0aGVcbm1vZHVsZVwncyBuYW1lc3BhY2UgZm9yIGEgdmFyaWFibGUgbmFtZWQgIl9fYWxsX18iOyBpZiBkZWZpbmVkLCBpdCBtdXN0XG5iZSBhIHNlcXVlbmNlIG9mIHN0cmluZ3Mgd2hpY2ggYXJlIG5hbWVzIGRlZmluZWQgb3IgaW1wb3J0ZWQgYnkgdGhhdFxubW9kdWxlLiAgVGhlIG5hbWVzIGdpdmVuIGluICJfX2FsbF9fIiBhcmUgYWxsIGNvbnNpZGVyZWQgcHVibGljIGFuZFxuYXJlIHJlcXVpcmVkIHRvIGV4aXN0LiAgSWYgIl9fYWxsX18iIGlzIG5vdCBkZWZpbmVkLCB0aGUgc2V0IG9mIHB1YmxpY1xubmFtZXMgaW5jbHVkZXMgYWxsIG5hbWVzIGZvdW5kIGluIHRoZSBtb2R1bGVcJ3MgbmFtZXNwYWNlIHdoaWNoIGRvIG5vdFxuYmVnaW4gd2l0aCBhbiB1bmRlcnNjb3JlIGNoYXJhY3RlciAoIlwnX1wnIikuICAiX19hbGxfXyIgc2hvdWxkIGNvbnRhaW5cbnRoZSBlbnRpcmUgcHVibGljIEFQSS4gSXQgaXMgaW50ZW5kZWQgdG8gYXZvaWQgYWNjaWRlbnRhbGx5IGV4cG9ydGluZ1xuaXRlbXMgdGhhdCBhcmUgbm90IHBhcnQgb2YgdGhlIEFQSSAoc3VjaCBhcyBsaWJyYXJ5IG1vZHVsZXMgd2hpY2ggd2VyZVxuaW1wb3J0ZWQgYW5kIHVzZWQgd2l0aGluIHRoZSBtb2R1bGUpLlxuXG5UaGUgd2lsZCBjYXJkIGZvcm0gb2YgaW1wb3J0IC0tLSAiZnJvbSBtb2R1bGUgaW1wb3J0ICoiIC0tLSBpcyBvbmx5XG5hbGxvd2VkIGF0IHRoZSBtb2R1bGUgbGV2ZWwuICBBdHRlbXB0aW5nIHRvIHVzZSBpdCBpbiBjbGFzcyBvclxuZnVuY3Rpb24gZGVmaW5pdGlvbnMgd2lsbCByYWlzZSBhICJTeW50YXhFcnJvciIuXG5cbldoZW4gc3BlY2lmeWluZyB3aGF0IG1vZHVsZSB0byBpbXBvcnQgeW91IGRvIG5vdCBoYXZlIHRvIHNwZWNpZnkgdGhlXG5hYnNvbHV0ZSBuYW1lIG9mIHRoZSBtb2R1bGUuIFdoZW4gYSBtb2R1bGUgb3IgcGFja2FnZSBpcyBjb250YWluZWRcbndpdGhpbiBhbm90aGVyIHBhY2thZ2UgaXQgaXMgcG9zc2libGUgdG8gbWFrZSBhIHJlbGF0aXZlIGltcG9ydCB3aXRoaW5cbnRoZSBzYW1lIHRvcCBwYWNrYWdlIHdpdGhvdXQgaGF2aW5nIHRvIG1lbnRpb24gdGhlIHBhY2thZ2UgbmFtZS4gQnlcbnVzaW5nIGxlYWRpbmcgZG90cyBpbiB0aGUgc3BlY2lmaWVkIG1vZHVsZSBvciBwYWNrYWdlIGFmdGVyICJmcm9tIiB5b3VcbmNhbiBzcGVjaWZ5IGhvdyBoaWdoIHRvIHRyYXZlcnNlIHVwIHRoZSBjdXJyZW50IHBhY2thZ2UgaGllcmFyY2h5XG53aXRob3V0IHNwZWNpZnlpbmcgZXhhY3QgbmFtZXMuIE9uZSBsZWFkaW5nIGRvdCBtZWFucyB0aGUgY3VycmVudFxucGFja2FnZSB3aGVyZSB0aGUgbW9kdWxlIG1ha2luZyB0aGUgaW1wb3J0IGV4aXN0cy4gVHdvIGRvdHMgbWVhbnMgdXBcbm9uZSBwYWNrYWdlIGxldmVsLiBUaHJlZSBkb3RzIGlzIHVwIHR3byBsZXZlbHMsIGV0Yy4gU28gaWYgeW91IGV4ZWN1dGVcbiJmcm9tIC4gaW1wb3J0IG1vZCIgZnJvbSBhIG1vZHVsZSBpbiB0aGUgInBrZyIgcGFja2FnZSB0aGVuIHlvdSB3aWxsXG5lbmQgdXAgaW1wb3J0aW5nICJwa2cubW9kIi4gSWYgeW91IGV4ZWN1dGUgImZyb20gLi5zdWJwa2cyIGltcG9ydCBtb2QiXG5mcm9tIHdpdGhpbiAicGtnLnN1YnBrZzEiIHlvdSB3aWxsIGltcG9ydCAicGtnLnN1YnBrZzIubW9kIi4gVGhlXG5zcGVjaWZpY2F0aW9uIGZvciByZWxhdGl2ZSBpbXBvcnRzIGlzIGNvbnRhaW5lZCB3aXRoaW4gKipQRVAgMzI4KiouXG5cbiJpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgpIiBpcyBwcm92aWRlZCB0byBzdXBwb3J0IGFwcGxpY2F0aW9ucyB0aGF0XG5kZXRlcm1pbmUgZHluYW1pY2FsbHkgdGhlIG1vZHVsZXMgdG8gYmUgbG9hZGVkLlxuXG5cbkZ1dHVyZSBzdGF0ZW1lbnRzXG49PT09PT09PT09PT09PT09PVxuXG5BICpmdXR1cmUgc3RhdGVtZW50KiBpcyBhIGRpcmVjdGl2ZSB0byB0aGUgY29tcGlsZXIgdGhhdCBhIHBhcnRpY3VsYXJcbm1vZHVsZSBzaG91bGQgYmUgY29tcGlsZWQgdXNpbmcgc3ludGF4IG9yIHNlbWFudGljcyB0aGF0IHdpbGwgYmVcbmF2YWlsYWJsZSBpbiBhIHNwZWNpZmllZCBmdXR1cmUgcmVsZWFzZSBvZiBQeXRob24gd2hlcmUgdGhlIGZlYXR1cmVcbmJlY29tZXMgc3RhbmRhcmQuXG5cblRoZSBmdXR1cmUgc3RhdGVtZW50IGlzIGludGVuZGVkIHRvIGVhc2UgbWlncmF0aW9uIHRvIGZ1dHVyZSB2ZXJzaW9uc1xub2YgUHl0aG9uIHRoYXQgaW50cm9kdWNlIGluY29tcGF0aWJsZSBjaGFuZ2VzIHRvIHRoZSBsYW5ndWFnZS4gIEl0XG5hbGxvd3MgdXNlIG9mIHRoZSBuZXcgZmVhdHVyZXMgb24gYSBwZXItbW9kdWxlIGJhc2lzIGJlZm9yZSB0aGVcbnJlbGVhc2UgaW4gd2hpY2ggdGhlIGZlYXR1cmUgYmVjb21lcyBzdGFuZGFyZC5cblxuICAgZnV0dXJlX3N0YXRlbWVudCA6Oj0gImZyb20iICJfX2Z1dHVyZV9fIiAiaW1wb3J0IiBmZWF0dXJlIFsiYXMiIG5hbWVdXG4gICAgICAgICAgICAgICAgICAgICAgICAoIiwiIGZlYXR1cmUgWyJhcyIgbmFtZV0pKlxuICAgICAgICAgICAgICAgICAgICAgICAgfCAiZnJvbSIgIl9fZnV0dXJlX18iICJpbXBvcnQiICIoIiBmZWF0dXJlIFsiYXMiIG5hbWVdXG4gICAgICAgICAgICAgICAgICAgICAgICAoIiwiIGZlYXR1cmUgWyJhcyIgbmFtZV0pKiBbIiwiXSAiKSJcbiAgIGZlYXR1cmUgICAgICAgICAgOjo9IGlkZW50aWZpZXJcbiAgIG5hbWUgICAgICAgICAgICAgOjo9IGlkZW50aWZpZXJcblxuQSBmdXR1cmUgc3RhdGVtZW50IG11c3QgYXBwZWFyIG5lYXIgdGhlIHRvcCBvZiB0aGUgbW9kdWxlLiAgVGhlIG9ubHlcbmxpbmVzIHRoYXQgY2FuIGFwcGVhciBiZWZvcmUgYSBmdXR1cmUgc3RhdGVtZW50IGFyZTpcblxuKiB0aGUgbW9kdWxlIGRvY3N0cmluZyAoaWYgYW55KSxcblxuKiBjb21tZW50cyxcblxuKiBibGFuayBsaW5lcywgYW5kXG5cbiogb3RoZXIgZnV0dXJlIHN0YXRlbWVudHMuXG5cblRoZSBmZWF0dXJlcyByZWNvZ25pemVkIGJ5IFB5dGhvbiAzLjAgYXJlICJhYnNvbHV0ZV9pbXBvcnQiLFxuImRpdmlzaW9uIiwgImdlbmVyYXRvcnMiLCAidW5pY29kZV9saXRlcmFscyIsICJwcmludF9mdW5jdGlvbiIsXG4ibmVzdGVkX3Njb3BlcyIgYW5kICJ3aXRoX3N0YXRlbWVudCIuICBUaGV5IGFyZSBhbGwgcmVkdW5kYW50IGJlY2F1c2VcbnRoZXkgYXJlIGFsd2F5cyBlbmFibGVkLCBhbmQgb25seSBrZXB0IGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cblxuQSBmdXR1cmUgc3RhdGVtZW50IGlzIHJlY29nbml6ZWQgYW5kIHRyZWF0ZWQgc3BlY2lhbGx5IGF0IGNvbXBpbGVcbnRpbWU6IENoYW5nZXMgdG8gdGhlIHNlbWFudGljcyBvZiBjb3JlIGNvbnN0cnVjdHMgYXJlIG9mdGVuXG5pbXBsZW1lbnRlZCBieSBnZW5lcmF0aW5nIGRpZmZlcmVudCBjb2RlLiAgSXQgbWF5IGV2ZW4gYmUgdGhlIGNhc2VcbnRoYXQgYSBuZXcgZmVhdHVyZSBpbnRyb2R1Y2VzIG5ldyBpbmNvbXBhdGlibGUgc3ludGF4IChzdWNoIGFzIGEgbmV3XG5yZXNlcnZlZCB3b3JkKSwgaW4gd2hpY2ggY2FzZSB0aGUgY29tcGlsZXIgbWF5IG5lZWQgdG8gcGFyc2UgdGhlXG5tb2R1bGUgZGlmZmVyZW50bHkuICBTdWNoIGRlY2lzaW9ucyBjYW5ub3QgYmUgcHVzaGVkIG9mZiB1bnRpbFxucnVudGltZS5cblxuRm9yIGFueSBnaXZlbiByZWxlYXNlLCB0aGUgY29tcGlsZXIga25vd3Mgd2hpY2ggZmVhdHVyZSBuYW1lcyBoYXZlXG5iZWVuIGRlZmluZWQsIGFuZCByYWlzZXMgYSBjb21waWxlLXRpbWUgZXJyb3IgaWYgYSBmdXR1cmUgc3RhdGVtZW50XG5jb250YWlucyBhIGZlYXR1cmUgbm90IGtub3duIHRvIGl0LlxuXG5UaGUgZGlyZWN0IHJ1bnRpbWUgc2VtYW50aWNzIGFyZSB0aGUgc2FtZSBhcyBmb3IgYW55IGltcG9ydCBzdGF0ZW1lbnQ6XG50aGVyZSBpcyBhIHN0YW5kYXJkIG1vZHVsZSAiX19mdXR1cmVfXyIsIGRlc2NyaWJlZCBsYXRlciwgYW5kIGl0IHdpbGxcbmJlIGltcG9ydGVkIGluIHRoZSB1c3VhbCB3YXkgYXQgdGhlIHRpbWUgdGhlIGZ1dHVyZSBzdGF0ZW1lbnQgaXNcbmV4ZWN1dGVkLlxuXG5UaGUgaW50ZXJlc3RpbmcgcnVudGltZSBzZW1hbnRpY3MgZGVwZW5kIG9uIHRoZSBzcGVjaWZpYyBmZWF0dXJlXG5lbmFibGVkIGJ5IHRoZSBmdXR1cmUgc3RhdGVtZW50LlxuXG5Ob3RlIHRoYXQgdGhlcmUgaXMgbm90aGluZyBzcGVjaWFsIGFib3V0IHRoZSBzdGF0ZW1lbnQ6XG5cbiAgIGltcG9ydCBfX2Z1dHVyZV9fIFthcyBuYW1lXVxuXG5UaGF0IGlzIG5vdCBhIGZ1dHVyZSBzdGF0ZW1lbnQ7IGl0XCdzIGFuIG9yZGluYXJ5IGltcG9ydCBzdGF0ZW1lbnQgd2l0aFxubm8gc3BlY2lhbCBzZW1hbnRpY3Mgb3Igc3ludGF4IHJlc3RyaWN0aW9ucy5cblxuQ29kZSBjb21waWxlZCBieSBjYWxscyB0byB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zICJleGVjKCkiIGFuZFxuImNvbXBpbGUoKSIgdGhhdCBvY2N1ciBpbiBhIG1vZHVsZSAiTSIgY29udGFpbmluZyBhIGZ1dHVyZSBzdGF0ZW1lbnRcbndpbGwsIGJ5IGRlZmF1bHQsIHVzZSB0aGUgbmV3IHN5bnRheCBvciBzZW1hbnRpY3MgYXNzb2NpYXRlZCB3aXRoIHRoZVxuZnV0dXJlIHN0YXRlbWVudC4gIFRoaXMgY2FuIGJlIGNvbnRyb2xsZWQgYnkgb3B0aW9uYWwgYXJndW1lbnRzIHRvXG4iY29tcGlsZSgpIiAtLS0gc2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoYXQgZnVuY3Rpb24gZm9yIGRldGFpbHMuXG5cbkEgZnV0dXJlIHN0YXRlbWVudCB0eXBlZCBhdCBhbiBpbnRlcmFjdGl2ZSBpbnRlcnByZXRlciBwcm9tcHQgd2lsbFxudGFrZSBlZmZlY3QgZm9yIHRoZSByZXN0IG9mIHRoZSBpbnRlcnByZXRlciBzZXNzaW9uLiAgSWYgYW5cbmludGVycHJldGVyIGlzIHN0YXJ0ZWQgd2l0aCB0aGUgKi1pKiBvcHRpb24sIGlzIHBhc3NlZCBhIHNjcmlwdCBuYW1lXG50byBleGVjdXRlLCBhbmQgdGhlIHNjcmlwdCBpbmNsdWRlcyBhIGZ1dHVyZSBzdGF0ZW1lbnQsIGl0IHdpbGwgYmUgaW5cbmVmZmVjdCBpbiB0aGUgaW50ZXJhY3RpdmUgc2Vzc2lvbiBzdGFydGVkIGFmdGVyIHRoZSBzY3JpcHQgaXNcbmV4ZWN1dGVkLlxuXG5TZWUgYWxzbzogKipQRVAgMjM2KiogLSBCYWNrIHRvIHRoZSBfX2Z1dHVyZV9fXG5cbiAgICAgVGhlIG9yaWdpbmFsIHByb3Bvc2FsIGZvciB0aGUgX19mdXR1cmVfXyBtZWNoYW5pc20uXG4nLAotICdpbic6IHUnXG5NZW1iZXJzaGlwIHRlc3Qgb3BlcmF0aW9uc1xuKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlIG9wZXJhdG9ycyAiaW4iIGFuZCAibm90IGluIiB0ZXN0IGZvciBtZW1iZXJzaGlwLiAgInggaW4gcyJcbmV2YWx1YXRlcyB0byB0cnVlIGlmICp4KiBpcyBhIG1lbWJlciBvZiAqcyosIGFuZCBmYWxzZSBvdGhlcndpc2UuICAieFxubm90IGluIHMiIHJldHVybnMgdGhlIG5lZ2F0aW9uIG9mICJ4IGluIHMiLiAgQWxsIGJ1aWx0LWluIHNlcXVlbmNlc1xuYW5kIHNldCB0eXBlcyBzdXBwb3J0IHRoaXMgYXMgd2VsbCBhcyBkaWN0aW9uYXJ5LCBmb3Igd2hpY2ggImluIiB0ZXN0c1xud2hldGhlciB0aGUgZGljdGlvbmFyeSBoYXMgYSBnaXZlbiBrZXkuIEZvciBjb250YWluZXIgdHlwZXMgc3VjaCBhc1xubGlzdCwgdHVwbGUsIHNldCwgZnJvemVuc2V0LCBkaWN0LCBvciBjb2xsZWN0aW9ucy5kZXF1ZSwgdGhlXG5leHByZXNzaW9uICJ4IGluIHkiIGlzIGVxdWl2YWxlbnQgdG8gImFueSh4IGlzIGUgb3IgeCA9PSBlIGZvciBlIGluXG55KSIuXG5cbkZvciB0aGUgc3RyaW5nIGFuZCBieXRlcyB0eXBlcywgInggaW4geSIgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiAqeCogaXNcbmEgc3Vic3RyaW5nIG9mICp5Ki4gIEFuIGVxdWl2YWxlbnQgdGVzdCBpcyAieS5maW5kKHgpICE9IC0xIi4gIEVtcHR5XG5zdHJpbmdzIGFyZSBhbHdheXMgY29uc2lkZXJlZCB0byBiZSBhIHN1YnN0cmluZyBvZiBhbnkgb3RoZXIgc3RyaW5nLFxuc28gIiIiIGluICJhYmMiIiB3aWxsIHJldHVybiAiVHJ1ZSIuXG5cbkZvciB1c2VyLWRlZmluZWQgY2xhc3NlcyB3aGljaCBkZWZpbmUgdGhlICJfX2NvbnRhaW5zX18oKSIgbWV0aG9kLCAieFxuaW4geSIgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiAieS5fX2NvbnRhaW5zX18oeCkiIGlzIHRydWUuXG5cbkZvciB1c2VyLWRlZmluZWQgY2xhc3NlcyB3aGljaCBkbyBub3QgZGVmaW5lICJfX2NvbnRhaW5zX18oKSIgYnV0IGRvXG5kZWZpbmUgIl9faXRlcl9fKCkiLCAieCBpbiB5IiBpcyB0cnVlIGlmIHNvbWUgdmFsdWUgInoiIHdpdGggInggPT0geiJcbmlzIHByb2R1Y2VkIHdoaWxlIGl0ZXJhdGluZyBvdmVyICJ5Ii4gIElmIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWRcbmR1cmluZyB0aGUgaXRlcmF0aW9uLCBpdCBpcyBhcyBpZiAiaW4iIHJhaXNlZCB0aGF0IGV4Y2VwdGlvbi5cblxuTGFzdGx5LCB0aGUgb2xkLXN0eWxlIGl0ZXJhdGlvbiBwcm90b2NvbCBpcyB0cmllZDogaWYgYSBjbGFzcyBkZWZpbmVzXG4iX19nZXRpdGVtX18oKSIsICJ4IGluIHkiIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgdGhlcmUgaXMgYSBub24tXG5uZWdhdGl2ZSBpbnRlZ2VyIGluZGV4ICppKiBzdWNoIHRoYXQgInggPT0geVtpXSIsIGFuZCBhbGwgbG93ZXJcbmludGVnZXIgaW5kaWNlcyBkbyBub3QgcmFpc2UgIkluZGV4RXJyb3IiIGV4Y2VwdGlvbi4gIChJZiBhbnkgb3RoZXJcbmV4Y2VwdGlvbiBpcyByYWlzZWQsIGl0IGlzIGFzIGlmICJpbiIgcmFpc2VkIHRoYXQgZXhjZXB0aW9uKS5cblxuVGhlIG9wZXJhdG9yICJub3QgaW4iIGlzIGRlZmluZWQgdG8gaGF2ZSB0aGUgaW52ZXJzZSB0cnVlIHZhbHVlIG9mXG4iaW4iLlxuJywKLSAnaW50ZWdlcnMnOiB1J1xuSW50ZWdlciBsaXRlcmFsc1xuKioqKioqKioqKioqKioqKlxuXG5JbnRlZ2VyIGxpdGVyYWxzIGFyZSBkZXNjcmliZWQgYnkgdGhlIGZvbGxvd2luZyBsZXhpY2FsIGRlZmluaXRpb25zOlxuXG4gICBpbnRlZ2VyICAgICAgICA6Oj0gZGVjaW1hbGludGVnZXIgfCBvY3RpbnRlZ2VyIHwgaGV4aW50ZWdlciB8IGJpbmludGVnZXJcbiAgIGRlY2ltYWxpbnRlZ2VyIDo6PSBub256ZXJvZGlnaXQgZGlnaXQqIHwgIjAiK1xuICAgbm9uemVyb2RpZ2l0ICAgOjo9ICIxIi4uLiI5IlxuICAgZGlnaXQgICAgICAgICAgOjo9ICIwIi4uLiI5IlxuICAgb2N0aW50ZWdlciAgICAgOjo9ICIwIiAoIm8iIHwgIk8iKSBvY3RkaWdpdCtcbiAgIGhleGludGVnZXIgICAgIDo6PSAiMCIgKCJ4IiB8ICJYIikgaGV4ZGlnaXQrXG4gICBiaW5pbnRlZ2VyICAgICA6Oj0gIjAiICgiYiIgfCAiQiIpIGJpbmRpZ2l0K1xuICAgb2N0ZGlnaXQgICAgICAgOjo9ICIwIi4uLiI3IlxuICAgaGV4ZGlnaXQgICAgICAgOjo9IGRpZ2l0IHwgImEiLi4uImYiIHwgIkEiLi4uIkYiXG4gICBiaW5kaWdpdCAgICAgICA6Oj0gIjAiIHwgIjEiXG5cblRoZXJlIGlzIG5vIGxpbWl0IGZvciB0aGUgbGVuZ3RoIG9mIGludGVnZXIgbGl0ZXJhbHMgYXBhcnQgZnJvbSB3aGF0XG5jYW4gYmUgc3RvcmVkIGluIGF2YWlsYWJsZSBtZW1vcnkuXG5cbk5vdGUgdGhhdCBsZWFkaW5nIHplcm9zIGluIGEgbm9uLXplcm8gZGVjaW1hbCBudW1iZXIgYXJlIG5vdCBhbGxvd2VkLlxuVGhpcyBpcyBmb3IgZGlzYW1iaWd1YXRpb24gd2l0aCBDLXN0eWxlIG9jdGFsIGxpdGVyYWxzLCB3aGljaCBQeXRob25cbnVzZWQgYmVmb3JlIHZlcnNpb24gMy4wLlxuXG5Tb21lIGV4YW1wbGVzIG9mIGludGVnZXIgbGl0ZXJhbHM6XG5cbiAgIDcgICAgIDIxNDc0ODM2NDcgICAgICAgICAgICAgICAgICAgICAgICAwbzE3NyAgICAwYjEwMDExMDExMVxuICAgMyAgICAgNzkyMjgxNjI1MTQyNjQzMzc1OTM1NDM5NTAzMzYgICAgIDBvMzc3ICAgIDB4ZGVhZGJlZWZcbicsCi0gJ2xhbWJkYSc6IHUnXG5MYW1iZGFzXG4qKioqKioqXG5cbiAgIGxhbWJkYV9leHByICAgICAgICA6Oj0gImxhbWJkYSIgW3BhcmFtZXRlcl9saXN0XTogZXhwcmVzc2lvblxuICAgbGFtYmRhX2V4cHJfbm9jb25kIDo6PSAibGFtYmRhIiBbcGFyYW1ldGVyX2xpc3RdOiBleHByZXNzaW9uX25vY29uZFxuXG5MYW1iZGEgZXhwcmVzc2lvbnMgKHNvbWV0aW1lcyBjYWxsZWQgbGFtYmRhIGZvcm1zKSBhcmUgdXNlZCB0byBjcmVhdGVcbmFub255bW91cyBmdW5jdGlvbnMuIFRoZSBleHByZXNzaW9uICJsYW1iZGEgYXJndW1lbnRzOiBleHByZXNzaW9uIlxueWllbGRzIGEgZnVuY3Rpb24gb2JqZWN0LiAgVGhlIHVubmFtZWQgb2JqZWN0IGJlaGF2ZXMgbGlrZSBhIGZ1bmN0aW9uXG5vYmplY3QgZGVmaW5lZCB3aXRoXG5cbiAgIGRlZiA8bGFtYmRhPihhcmd1bWVudHMpOlxuICAgICAgIHJldHVybiBleHByZXNzaW9uXG5cblNlZSBzZWN0aW9uICpGdW5jdGlvbiBkZWZpbml0aW9ucyogZm9yIHRoZSBzeW50YXggb2YgcGFyYW1ldGVyIGxpc3RzLlxuTm90ZSB0aGF0IGZ1bmN0aW9ucyBjcmVhdGVkIHdpdGggbGFtYmRhIGV4cHJlc3Npb25zIGNhbm5vdCBjb250YWluXG5zdGF0ZW1lbnRzIG9yIGFubm90YXRpb25zLlxuJywKLSAnbGlzdHMnOiB1J1xuTGlzdCBkaXNwbGF5c1xuKioqKioqKioqKioqKlxuXG5BIGxpc3QgZGlzcGxheSBpcyBhIHBvc3NpYmx5IGVtcHR5IHNlcmllcyBvZiBleHByZXNzaW9ucyBlbmNsb3NlZCBpblxuc3F1YXJlIGJyYWNrZXRzOlxuXG4gICBsaXN0X2Rpc3BsYXkgOjo9ICJbIiBbc3RhcnJlZF9saXN0IHwgY29tcHJlaGVuc2lvbl0gIl0iXG5cbkEgbGlzdCBkaXNwbGF5IHlpZWxkcyBhIG5ldyBsaXN0IG9iamVjdCwgdGhlIGNvbnRlbnRzIGJlaW5nIHNwZWNpZmllZFxuYnkgZWl0aGVyIGEgbGlzdCBvZiBleHByZXNzaW9ucyBvciBhIGNvbXByZWhlbnNpb24uICBXaGVuIGEgY29tbWEtXG5zZXBhcmF0ZWQgbGlzdCBvZiBleHByZXNzaW9ucyBpcyBzdXBwbGllZCwgaXRzIGVsZW1lbnRzIGFyZSBldmFsdWF0ZWRcbmZyb20gbGVmdCB0byByaWdodCBhbmQgcGxhY2VkIGludG8gdGhlIGxpc3Qgb2JqZWN0IGluIHRoYXQgb3JkZXIuXG5XaGVuIGEgY29tcHJlaGVuc2lvbiBpcyBzdXBwbGllZCwgdGhlIGxpc3QgaXMgY29uc3RydWN0ZWQgZnJvbSB0aGVcbmVsZW1lbnRzIHJlc3VsdGluZyBmcm9tIHRoZSBjb21wcmVoZW5zaW9uLlxuJywKLSAnbmFtaW5nJzogdSdcbk5hbWluZyBhbmQgYmluZGluZ1xuKioqKioqKioqKioqKioqKioqXG5cblxuQmluZGluZyBvZiBuYW1lc1xuPT09PT09PT09PT09PT09PVxuXG4qTmFtZXMqIHJlZmVyIHRvIG9iamVjdHMuICBOYW1lcyBhcmUgaW50cm9kdWNlZCBieSBuYW1lIGJpbmRpbmdcbm9wZXJhdGlvbnMuXG5cblRoZSBmb2xsb3dpbmcgY29uc3RydWN0cyBiaW5kIG5hbWVzOiBmb3JtYWwgcGFyYW1ldGVycyB0byBmdW5jdGlvbnMsXG4iaW1wb3J0IiBzdGF0ZW1lbnRzLCBjbGFzcyBhbmQgZnVuY3Rpb24gZGVmaW5pdGlvbnMgKHRoZXNlIGJpbmQgdGhlXG5jbGFzcyBvciBmdW5jdGlvbiBuYW1lIGluIHRoZSBkZWZpbmluZyBibG9jayksIGFuZCB0YXJnZXRzIHRoYXQgYXJlXG5pZGVudGlmaWVycyBpZiBvY2N1cnJpbmcgaW4gYW4gYXNzaWdubWVudCwgImZvciIgbG9vcCBoZWFkZXIsIG9yIGFmdGVyXG4iYXMiIGluIGEgIndpdGgiIHN0YXRlbWVudCBvciAiZXhjZXB0IiBjbGF1c2UuIFRoZSAiaW1wb3J0IiBzdGF0ZW1lbnRcbm9mIHRoZSBmb3JtICJmcm9tIC4uLiBpbXBvcnQgKiIgYmluZHMgYWxsIG5hbWVzIGRlZmluZWQgaW4gdGhlXG5pbXBvcnRlZCBtb2R1bGUsIGV4Y2VwdCB0aG9zZSBiZWdpbm5pbmcgd2l0aCBhbiB1bmRlcnNjb3JlLiAgVGhpcyBmb3JtXG5tYXkgb25seSBiZSB1c2VkIGF0IHRoZSBtb2R1bGUgbGV2ZWwuXG5cbkEgdGFyZ2V0IG9jY3VycmluZyBpbiBhICJkZWwiIHN0YXRlbWVudCBpcyBhbHNvIGNvbnNpZGVyZWQgYm91bmQgZm9yXG50aGlzIHB1cnBvc2UgKHRob3VnaCB0aGUgYWN0dWFsIHNlbWFudGljcyBhcmUgdG8gdW5iaW5kIHRoZSBuYW1lKS5cblxuRWFjaCBhc3NpZ25tZW50IG9yIGltcG9ydCBzdGF0ZW1lbnQgb2NjdXJzIHdpdGhpbiBhIGJsb2NrIGRlZmluZWQgYnkgYVxuY2xhc3Mgb3IgZnVuY3Rpb24gZGVmaW5pdGlvbiBvciBhdCB0aGUgbW9kdWxlIGxldmVsICh0aGUgdG9wLWxldmVsXG5jb2RlIGJsb2NrKS5cblxuSWYgYSBuYW1lIGlzIGJvdW5kIGluIGEgYmxvY2ssIGl0IGlzIGEgbG9jYWwgdmFyaWFibGUgb2YgdGhhdCBibG9jayxcbnVubGVzcyBkZWNsYXJlZCBhcyAibm9ubG9jYWwiIG9yICJnbG9iYWwiLiAgSWYgYSBuYW1lIGlzIGJvdW5kIGF0IHRoZVxubW9kdWxlIGxldmVsLCBpdCBpcyBhIGdsb2JhbCB2YXJpYWJsZS4gIChUaGUgdmFyaWFibGVzIG9mIHRoZSBtb2R1bGVcbmNvZGUgYmxvY2sgYXJlIGxvY2FsIGFuZCBnbG9iYWwuKSAgSWYgYSB2YXJpYWJsZSBpcyB1c2VkIGluIGEgY29kZVxuYmxvY2sgYnV0IG5vdCBkZWZpbmVkIHRoZXJlLCBpdCBpcyBhICpmcmVlIHZhcmlhYmxlKi5cblxuRWFjaCBvY2N1cnJlbmNlIG9mIGEgbmFtZSBpbiB0aGUgcHJvZ3JhbSB0ZXh0IHJlZmVycyB0byB0aGUgKmJpbmRpbmcqXG5vZiB0aGF0IG5hbWUgZXN0YWJsaXNoZWQgYnkgdGhlIGZvbGxvd2luZyBuYW1lIHJlc29sdXRpb24gcnVsZXMuXG5cblxuUmVzb2x1dGlvbiBvZiBuYW1lc1xuPT09PT09PT09PT09PT09PT09PVxuXG5BICpzY29wZSogZGVmaW5lcyB0aGUgdmlzaWJpbGl0eSBvZiBhIG5hbWUgd2l0aGluIGEgYmxvY2suICBJZiBhIGxvY2FsXG52YXJpYWJsZSBpcyBkZWZpbmVkIGluIGEgYmxvY2ssIGl0cyBzY29wZSBpbmNsdWRlcyB0aGF0IGJsb2NrLiAgSWYgdGhlXG5kZWZpbml0aW9uIG9jY3VycyBpbiBhIGZ1bmN0aW9uIGJsb2NrLCB0aGUgc2NvcGUgZXh0ZW5kcyB0byBhbnkgYmxvY2tzXG5jb250YWluZWQgd2l0aGluIHRoZSBkZWZpbmluZyBvbmUsIHVubGVzcyBhIGNvbnRhaW5lZCBibG9jayBpbnRyb2R1Y2VzXG5hIGRpZmZlcmVudCBiaW5kaW5nIGZvciB0aGUgbmFtZS5cblxuV2hlbiBhIG5hbWUgaXMgdXNlZCBpbiBhIGNvZGUgYmxvY2ssIGl0IGlzIHJlc29sdmVkIHVzaW5nIHRoZSBuZWFyZXN0XG5lbmNsb3Npbmcgc2NvcGUuICBUaGUgc2V0IG9mIGFsbCBzdWNoIHNjb3BlcyB2aXNpYmxlIHRvIGEgY29kZSBibG9ja1xuaXMgY2FsbGVkIHRoZSBibG9ja1wncyAqZW52aXJvbm1lbnQqLlxuXG5XaGVuIGEgbmFtZSBpcyBub3QgZm91bmQgYXQgYWxsLCBhICJOYW1lRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQuIElmXG50aGUgY3VycmVudCBzY29wZSBpcyBhIGZ1bmN0aW9uIHNjb3BlLCBhbmQgdGhlIG5hbWUgcmVmZXJzIHRvIGEgbG9jYWxcbnZhcmlhYmxlIHRoYXQgaGFzIG5vdCB5ZXQgYmVlbiBib3VuZCB0byBhIHZhbHVlIGF0IHRoZSBwb2ludCB3aGVyZSB0aGVcbm5hbWUgaXMgdXNlZCwgYW4gIlVuYm91bmRMb2NhbEVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLlxuIlVuYm91bmRMb2NhbEVycm9yIiBpcyBhIHN1YmNsYXNzIG9mICJOYW1lRXJyb3IiLlxuXG5JZiBhIG5hbWUgYmluZGluZyBvcGVyYXRpb24gb2NjdXJzIGFueXdoZXJlIHdpdGhpbiBhIGNvZGUgYmxvY2ssIGFsbFxudXNlcyBvZiB0aGUgbmFtZSB3aXRoaW4gdGhlIGJsb2NrIGFyZSB0cmVhdGVkIGFzIHJlZmVyZW5jZXMgdG8gdGhlXG5jdXJyZW50IGJsb2NrLiAgVGhpcyBjYW4gbGVhZCB0byBlcnJvcnMgd2hlbiBhIG5hbWUgaXMgdXNlZCB3aXRoaW4gYVxuYmxvY2sgYmVmb3JlIGl0IGlzIGJvdW5kLiAgVGhpcyBydWxlIGlzIHN1YnRsZS4gIFB5dGhvbiBsYWNrc1xuZGVjbGFyYXRpb25zIGFuZCBhbGxvd3MgbmFtZSBiaW5kaW5nIG9wZXJhdGlvbnMgdG8gb2NjdXIgYW55d2hlcmVcbndpdGhpbiBhIGNvZGUgYmxvY2suICBUaGUgbG9jYWwgdmFyaWFibGVzIG9mIGEgY29kZSBibG9jayBjYW4gYmVcbmRldGVybWluZWQgYnkgc2Nhbm5pbmcgdGhlIGVudGlyZSB0ZXh0IG9mIHRoZSBibG9jayBmb3IgbmFtZSBiaW5kaW5nXG5vcGVyYXRpb25zLlxuXG5JZiB0aGUgImdsb2JhbCIgc3RhdGVtZW50IG9jY3VycyB3aXRoaW4gYSBibG9jaywgYWxsIHVzZXMgb2YgdGhlIG5hbWVcbnNwZWNpZmllZCBpbiB0aGUgc3RhdGVtZW50IHJlZmVyIHRvIHRoZSBiaW5kaW5nIG9mIHRoYXQgbmFtZSBpbiB0aGVcbnRvcC1sZXZlbCBuYW1lc3BhY2UuICBOYW1lcyBhcmUgcmVzb2x2ZWQgaW4gdGhlIHRvcC1sZXZlbCBuYW1lc3BhY2UgYnlcbnNlYXJjaGluZyB0aGUgZ2xvYmFsIG5hbWVzcGFjZSwgaS5lLiB0aGUgbmFtZXNwYWNlIG9mIHRoZSBtb2R1bGVcbmNvbnRhaW5pbmcgdGhlIGNvZGUgYmxvY2ssIGFuZCB0aGUgYnVpbHRpbnMgbmFtZXNwYWNlLCB0aGUgbmFtZXNwYWNlXG5vZiB0aGUgbW9kdWxlICJidWlsdGlucyIuICBUaGUgZ2xvYmFsIG5hbWVzcGFjZSBpcyBzZWFyY2hlZCBmaXJzdC4gIElmXG50aGUgbmFtZSBpcyBub3QgZm91bmQgdGhlcmUsIHRoZSBidWlsdGlucyBuYW1lc3BhY2UgaXMgc2VhcmNoZWQuICBUaGVcbiJnbG9iYWwiIHN0YXRlbWVudCBtdXN0IHByZWNlZGUgYWxsIHVzZXMgb2YgdGhlIG5hbWUuXG5cblRoZSAiZ2xvYmFsIiBzdGF0ZW1lbnQgaGFzIHRoZSBzYW1lIHNjb3BlIGFzIGEgbmFtZSBiaW5kaW5nIG9wZXJhdGlvblxuaW4gdGhlIHNhbWUgYmxvY2suICBJZiB0aGUgbmVhcmVzdCBlbmNsb3Npbmcgc2NvcGUgZm9yIGEgZnJlZSB2YXJpYWJsZVxuY29udGFpbnMgYSBnbG9iYWwgc3RhdGVtZW50LCB0aGUgZnJlZSB2YXJpYWJsZSBpcyB0cmVhdGVkIGFzIGEgZ2xvYmFsLlxuXG5UaGUgIm5vbmxvY2FsIiBzdGF0ZW1lbnQgY2F1c2VzIGNvcnJlc3BvbmRpbmcgbmFtZXMgdG8gcmVmZXIgdG9cbnByZXZpb3VzbHkgYm91bmQgdmFyaWFibGVzIGluIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBmdW5jdGlvbiBzY29wZS5cbiJTeW50YXhFcnJvciIgaXMgcmFpc2VkIGF0IGNvbXBpbGUgdGltZSBpZiB0aGUgZ2l2ZW4gbmFtZSBkb2VzIG5vdFxuZXhpc3QgaW4gYW55IGVuY2xvc2luZyBmdW5jdGlvbiBzY29wZS5cblxuVGhlIG5hbWVzcGFjZSBmb3IgYSBtb2R1bGUgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIHRoZSBmaXJzdCB0aW1lIGFcbm1vZHVsZSBpcyBpbXBvcnRlZC4gIFRoZSBtYWluIG1vZHVsZSBmb3IgYSBzY3JpcHQgaXMgYWx3YXlzIGNhbGxlZFxuIl9fbWFpbl9fIi5cblxuQ2xhc3MgZGVmaW5pdGlvbiBibG9ja3MgYW5kIGFyZ3VtZW50cyB0byAiZXhlYygpIiBhbmQgImV2YWwoKSIgYXJlXG5zcGVjaWFsIGluIHRoZSBjb250ZXh0IG9mIG5hbWUgcmVzb2x1dGlvbi4gQSBjbGFzcyBkZWZpbml0aW9uIGlzIGFuXG5leGVjdXRhYmxlIHN0YXRlbWVudCB0aGF0IG1heSB1c2UgYW5kIGRlZmluZSBuYW1lcy4gVGhlc2UgcmVmZXJlbmNlc1xuZm9sbG93IHRoZSBub3JtYWwgcnVsZXMgZm9yIG5hbWUgcmVzb2x1dGlvbiB3aXRoIGFuIGV4Y2VwdGlvbiB0aGF0XG51bmJvdW5kIGxvY2FsIHZhcmlhYmxlcyBhcmUgbG9va2VkIHVwIGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlLiBUaGVcbm5hbWVzcGFjZSBvZiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBiZWNvbWVzIHRoZSBhdHRyaWJ1dGUgZGljdGlvbmFyeSBvZlxudGhlIGNsYXNzLiBUaGUgc2NvcGUgb2YgbmFtZXMgZGVmaW5lZCBpbiBhIGNsYXNzIGJsb2NrIGlzIGxpbWl0ZWQgdG9cbnRoZSBjbGFzcyBibG9jazsgaXQgZG9lcyBub3QgZXh0ZW5kIHRvIHRoZSBjb2RlIGJsb2NrcyBvZiBtZXRob2RzIC0tXG50aGlzIGluY2x1ZGVzIGNvbXByZWhlbnNpb25zIGFuZCBnZW5lcmF0b3IgZXhwcmVzc2lvbnMgc2luY2UgdGhleSBhcmVcbmltcGxlbWVudGVkIHVzaW5nIGEgZnVuY3Rpb24gc2NvcGUuICBUaGlzIG1lYW5zIHRoYXQgdGhlIGZvbGxvd2luZ1xud2lsbCBmYWlsOlxuXG4gICBjbGFzcyBBOlxuICAgICAgIGEgPSA0MlxuICAgICAgIGIgPSBsaXN0KGEgKyBpIGZvciBpIGluIHJhbmdlKDEwKSlcblxuXG5CdWlsdGlucyBhbmQgcmVzdHJpY3RlZCBleGVjdXRpb25cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgYnVpbHRpbnMgbmFtZXNwYWNlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXhlY3V0aW9uIG9mIGEgY29kZSBibG9ja1xuaXMgYWN0dWFsbHkgZm91bmQgYnkgbG9va2luZyB1cCB0aGUgbmFtZSAiX19idWlsdGluc19fIiBpbiBpdHMgZ2xvYmFsXG5uYW1lc3BhY2U7IHRoaXMgc2hvdWxkIGJlIGEgZGljdGlvbmFyeSBvciBhIG1vZHVsZSAoaW4gdGhlIGxhdHRlciBjYXNlXG50aGUgbW9kdWxlXCdzIGRpY3Rpb25hcnkgaXMgdXNlZCkuICBCeSBkZWZhdWx0LCB3aGVuIGluIHRoZSAiX19tYWluX18iXG5tb2R1bGUsICJfX2J1aWx0aW5zX18iIGlzIHRoZSBidWlsdC1pbiBtb2R1bGUgImJ1aWx0aW5zIjsgd2hlbiBpbiBhbnlcbm90aGVyIG1vZHVsZSwgIl9fYnVpbHRpbnNfXyIgaXMgYW4gYWxpYXMgZm9yIHRoZSBkaWN0aW9uYXJ5IG9mIHRoZVxuImJ1aWx0aW5zIiBtb2R1bGUgaXRzZWxmLiAgIl9fYnVpbHRpbnNfXyIgY2FuIGJlIHNldCB0byBhIHVzZXItY3JlYXRlZFxuZGljdGlvbmFyeSB0byBjcmVhdGUgYSB3ZWFrIGZvcm0gb2YgcmVzdHJpY3RlZCBleGVjdXRpb24uXG5cbioqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogVXNlcnMgc2hvdWxkIG5vdCB0b3VjaFxuIl9fYnVpbHRpbnNfXyI7IGl0IGlzIHN0cmljdGx5IGFuIGltcGxlbWVudGF0aW9uIGRldGFpbC4gIFVzZXJzXG53YW50aW5nIHRvIG92ZXJyaWRlIHZhbHVlcyBpbiB0aGUgYnVpbHRpbnMgbmFtZXNwYWNlIHNob3VsZCAiaW1wb3J0IlxudGhlICJidWlsdGlucyIgbW9kdWxlIGFuZCBtb2RpZnkgaXRzIGF0dHJpYnV0ZXMgYXBwcm9wcmlhdGVseS5cblxuXG5JbnRlcmFjdGlvbiB3aXRoIGR5bmFtaWMgZmVhdHVyZXNcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5OYW1lIHJlc29sdXRpb24gb2YgZnJlZSB2YXJpYWJsZXMgb2NjdXJzIGF0IHJ1bnRpbWUsIG5vdCBhdCBjb21waWxlXG50aW1lLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGZvbGxvd2luZyBjb2RlIHdpbGwgcHJpbnQgNDI6XG5cbiAgIGkgPSAxMFxuICAgZGVmIGYoKTpcbiAgICAgICBwcmludChpKVxuICAgaSA9IDQyXG4gICBmKClcblxuVGhlcmUgYXJlIHNldmVyYWwgY2FzZXMgd2hlcmUgUHl0aG9uIHN0YXRlbWVudHMgYXJlIGlsbGVnYWwgd2hlbiB1c2VkXG5pbiBjb25qdW5jdGlvbiB3aXRoIG5lc3RlZCBzY29wZXMgdGhhdCBjb250YWluIGZyZWUgdmFyaWFibGVzLlxuXG5JZiBhIHZhcmlhYmxlIGlzIHJlZmVyZW5jZWQgaW4gYW4gZW5jbG9zaW5nIHNjb3BlLCBpdCBpcyBpbGxlZ2FsIHRvXG5kZWxldGUgdGhlIG5hbWUuICBBbiBlcnJvciB3aWxsIGJlIHJlcG9ydGVkIGF0IGNvbXBpbGUgdGltZS5cblxuVGhlICJldmFsKCkiIGFuZCAiZXhlYygpIiBmdW5jdGlvbnMgZG8gbm90IGhhdmUgYWNjZXNzIHRvIHRoZSBmdWxsXG5lbnZpcm9ubWVudCBmb3IgcmVzb2x2aW5nIG5hbWVzLiAgTmFtZXMgbWF5IGJlIHJlc29sdmVkIGluIHRoZSBsb2NhbFxuYW5kIGdsb2JhbCBuYW1lc3BhY2VzIG9mIHRoZSBjYWxsZXIuICBGcmVlIHZhcmlhYmxlcyBhcmUgbm90IHJlc29sdmVkXG5pbiB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgbmFtZXNwYWNlLCBidXQgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuICBbMV1cblRoZSAiZXhlYygpIiBhbmQgImV2YWwoKSIgZnVuY3Rpb25zIGhhdmUgb3B0aW9uYWwgYXJndW1lbnRzIHRvXG5vdmVycmlkZSB0aGUgZ2xvYmFsIGFuZCBsb2NhbCBuYW1lc3BhY2UuICBJZiBvbmx5IG9uZSBuYW1lc3BhY2UgaXNcbnNwZWNpZmllZCwgaXQgaXMgdXNlZCBmb3IgYm90aC5cbicsCi0gJ25vbmxvY2FsJzogdSdcblRoZSAibm9ubG9jYWwiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIG5vbmxvY2FsX3N0bXQgOjo9ICJub25sb2NhbCIgaWRlbnRpZmllciAoIiwiIGlkZW50aWZpZXIpKlxuXG5UaGUgIm5vbmxvY2FsIiBzdGF0ZW1lbnQgY2F1c2VzIHRoZSBsaXN0ZWQgaWRlbnRpZmllcnMgdG8gcmVmZXIgdG9cbnByZXZpb3VzbHkgYm91bmQgdmFyaWFibGVzIGluIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBzY29wZSBleGNsdWRpbmdcbmdsb2JhbHMuIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgdGhlIGRlZmF1bHQgYmVoYXZpb3IgZm9yIGJpbmRpbmcgaXNcbnRvIHNlYXJjaCB0aGUgbG9jYWwgbmFtZXNwYWNlIGZpcnN0LiAgVGhlIHN0YXRlbWVudCBhbGxvd3NcbmVuY2Fwc3VsYXRlZCBjb2RlIHRvIHJlYmluZCB2YXJpYWJsZXMgb3V0c2lkZSBvZiB0aGUgbG9jYWwgc2NvcGVcbmJlc2lkZXMgdGhlIGdsb2JhbCAobW9kdWxlKSBzY29wZS5cblxuTmFtZXMgbGlzdGVkIGluIGEgIm5vbmxvY2FsIiBzdGF0ZW1lbnQsIHVubGlrZSB0aG9zZSBsaXN0ZWQgaW4gYVxuImdsb2JhbCIgc3RhdGVtZW50LCBtdXN0IHJlZmVyIHRvIHByZS1leGlzdGluZyBiaW5kaW5ncyBpbiBhblxuZW5jbG9zaW5nIHNjb3BlICh0aGUgc2NvcGUgaW4gd2hpY2ggYSBuZXcgYmluZGluZyBzaG91bGQgYmUgY3JlYXRlZFxuY2Fubm90IGJlIGRldGVybWluZWQgdW5hbWJpZ3VvdXNseSkuXG5cbk5hbWVzIGxpc3RlZCBpbiBhICJub25sb2NhbCIgc3RhdGVtZW50IG11c3Qgbm90IGNvbGxpZGUgd2l0aCBwcmUtXG5leGlzdGluZyBiaW5kaW5ncyBpbiB0aGUgbG9jYWwgc2NvcGUuXG5cblNlZSBhbHNvOiAqKlBFUCAzMTA0KiogLSBBY2Nlc3MgdG8gTmFtZXMgaW4gT3V0ZXIgU2NvcGVzXG5cbiAgICAgVGhlIHNwZWNpZmljYXRpb24gZm9yIHRoZSAibm9ubG9jYWwiIHN0YXRlbWVudC5cbicsCi0gJ251bWJlcnMnOiB1J1xuTnVtZXJpYyBsaXRlcmFsc1xuKioqKioqKioqKioqKioqKlxuXG5UaGVyZSBhcmUgdGhyZWUgdHlwZXMgb2YgbnVtZXJpYyBsaXRlcmFsczogaW50ZWdlcnMsIGZsb2F0aW5nIHBvaW50XG5udW1iZXJzLCBhbmQgaW1hZ2luYXJ5IG51bWJlcnMuICBUaGVyZSBhcmUgbm8gY29tcGxleCBsaXRlcmFsc1xuKGNvbXBsZXggbnVtYmVycyBjYW4gYmUgZm9ybWVkIGJ5IGFkZGluZyBhIHJlYWwgbnVtYmVyIGFuZCBhblxuaW1hZ2luYXJ5IG51bWJlcikuXG5cbk5vdGUgdGhhdCBudW1lcmljIGxpdGVyYWxzIGRvIG5vdCBpbmNsdWRlIGEgc2lnbjsgYSBwaHJhc2UgbGlrZSAiLTEiXG5pcyBhY3R1YWxseSBhbiBleHByZXNzaW9uIGNvbXBvc2VkIG9mIHRoZSB1bmFyeSBvcGVyYXRvciBcJyItIlwnIGFuZCB0aGVcbmxpdGVyYWwgIjEiLlxuJywKLSAnbnVtZXJpYy10eXBlcyc6IHUnXG5FbXVsYXRpbmcgbnVtZXJpYyB0eXBlc1xuKioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGVtdWxhdGUgbnVtZXJpYyBvYmplY3RzLlxuTWV0aG9kcyBjb3JyZXNwb25kaW5nIHRvIG9wZXJhdGlvbnMgdGhhdCBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGVcbnBhcnRpY3VsYXIga2luZCBvZiBudW1iZXIgaW1wbGVtZW50ZWQgKGUuZy4sIGJpdHdpc2Ugb3BlcmF0aW9ucyBmb3Jcbm5vbi1pbnRlZ3JhbCBudW1iZXJzKSBzaG91bGQgYmUgbGVmdCB1bmRlZmluZWQuXG5cbm9iamVjdC5fX2FkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fc3ViX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19tdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX21hdG11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fdHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX21vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZGl2bW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19wb3dfXyhzZWxmLCBvdGhlclssIG1vZHVsb10pXG5vYmplY3QuX19sc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fYW5kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX194b3JfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX29yX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJpbmFyeSBhcml0aG1ldGljXG4gICBvcGVyYXRpb25zICgiKyIsICItIiwgIioiLCAiQCIsICIvIiwgIi8vIiwgIiUiLCAiZGl2bW9kKCkiLFxuICAgInBvdygpIiwgIioqIiwgIjw8IiwgIj4+IiwgIiYiLCAiXiIsICJ8IikuICBGb3IgaW5zdGFuY2UsIHRvXG4gICBldmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiAieCArIHkiLCB3aGVyZSAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYVxuICAgY2xhc3MgdGhhdCBoYXMgYW4gIl9fYWRkX18oKSIgbWV0aG9kLCAieC5fX2FkZF9fKHkpIiBpcyBjYWxsZWQuXG4gICBUaGUgIl9fZGl2bW9kX18oKSIgbWV0aG9kIHNob3VsZCBiZSB0aGUgZXF1aXZhbGVudCB0byB1c2luZ1xuICAgIl9fZmxvb3JkaXZfXygpIiBhbmQgIl9fbW9kX18oKSI7IGl0IHNob3VsZCBub3QgYmUgcmVsYXRlZCB0b1xuICAgIl9fdHJ1ZWRpdl9fKCkiLiAgTm90ZSB0aGF0ICJfX3Bvd19fKCkiIHNob3VsZCBiZSBkZWZpbmVkIHRvIGFjY2VwdFxuICAgYW4gb3B0aW9uYWwgdGhpcmQgYXJndW1lbnQgaWYgdGhlIHRlcm5hcnkgdmVyc2lvbiBvZiB0aGUgYnVpbHQtaW5cbiAgICJwb3coKSIgZnVuY3Rpb24gaXMgdG8gYmUgc3VwcG9ydGVkLlxuXG4gICBJZiBvbmUgb2YgdGhvc2UgbWV0aG9kcyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBvcGVyYXRpb24gd2l0aCB0aGVcbiAgIHN1cHBsaWVkIGFyZ3VtZW50cywgaXQgc2hvdWxkIHJldHVybiAiTm90SW1wbGVtZW50ZWQiLlxuXG5vYmplY3QuX19yYWRkX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yc3ViX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ybXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ybWF0bXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ydHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmZsb29yZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ybW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yZGl2bW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ycG93X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ybHNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ycnNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yYW5kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yeG9yX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yb3JfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYmluYXJ5IGFyaXRobWV0aWNcbiAgIG9wZXJhdGlvbnMgKCIrIiwgIi0iLCAiKiIsICJAIiwgIi8iLCAiLy8iLCAiJSIsICJkaXZtb2QoKSIsXG4gICAicG93KCkiLCAiKioiLCAiPDwiLCAiPj4iLCAiJiIsICJeIiwgInwiKSB3aXRoIHJlZmxlY3RlZCAoc3dhcHBlZClcbiAgIG9wZXJhbmRzLiAgVGhlc2UgZnVuY3Rpb25zIGFyZSBvbmx5IGNhbGxlZCBpZiB0aGUgbGVmdCBvcGVyYW5kIGRvZXNcbiAgIG5vdCBzdXBwb3J0IHRoZSBjb3JyZXNwb25kaW5nIG9wZXJhdGlvbiBhbmQgdGhlIG9wZXJhbmRzIGFyZSBvZlxuICAgZGlmZmVyZW50IHR5cGVzLiBbMl0gRm9yIGluc3RhbmNlLCB0byBldmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiAieCAtXG4gICB5Iiwgd2hlcmUgKnkqIGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBoYXMgYW4gIl9fcnN1Yl9fKCkiXG4gICBtZXRob2QsICJ5Ll9fcnN1Yl9fKHgpIiBpcyBjYWxsZWQgaWYgInguX19zdWJfXyh5KSIgcmV0dXJuc1xuICAgKk5vdEltcGxlbWVudGVkKi5cblxuICAgTm90ZSB0aGF0IHRlcm5hcnkgInBvdygpIiB3aWxsIG5vdCB0cnkgY2FsbGluZyAiX19ycG93X18oKSIgKHRoZVxuICAgY29lcmNpb24gcnVsZXMgd291bGQgYmVjb21lIHRvbyBjb21wbGljYXRlZCkuXG5cbiAgIE5vdGU6IElmIHRoZSByaWdodCBvcGVyYW5kXCdzIHR5cGUgaXMgYSBzdWJjbGFzcyBvZiB0aGUgbGVmdFxuICAgICBvcGVyYW5kXCdzIHR5cGUgYW5kIHRoYXQgc3ViY2xhc3MgcHJvdmlkZXMgdGhlIHJlZmxlY3RlZCBtZXRob2RcbiAgICAgZm9yIHRoZSBvcGVyYXRpb24sIHRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGJlZm9yZSB0aGUgbGVmdFxuICAgICBvcGVyYW5kXCdzIG5vbi1yZWZsZWN0ZWQgbWV0aG9kLiAgVGhpcyBiZWhhdmlvciBhbGxvd3Mgc3ViY2xhc3Nlc1xuICAgICB0byBvdmVycmlkZSB0aGVpciBhbmNlc3RvcnNcJyBvcGVyYXRpb25zLlxuXG5vYmplY3QuX19pYWRkX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pc3ViX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pbXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pbWF0bXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pdHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faWZsb29yZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pbW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pcG93X18oc2VsZiwgb3RoZXJbLCBtb2R1bG9dKVxub2JqZWN0Ll9faWxzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXJzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faWFuZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXhvcl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW9yX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGF1Z21lbnRlZCBhcml0aG1ldGljXG4gICBhc3NpZ25tZW50cyAoIis9IiwgIi09IiwgIio9IiwgIkA9IiwgIi89IiwgIi8vPSIsICIlPSIsICIqKj0iLFxuICAgIjw8PSIsICI+Pj0iLCAiJj0iLCAiXj0iLCAifD0iKS4gIFRoZXNlIG1ldGhvZHMgc2hvdWxkIGF0dGVtcHQgdG9cbiAgIGRvIHRoZSBvcGVyYXRpb24gaW4tcGxhY2UgKG1vZGlmeWluZyAqc2VsZiopIGFuZCByZXR1cm4gdGhlIHJlc3VsdFxuICAgKHdoaWNoIGNvdWxkIGJlLCBidXQgZG9lcyBub3QgaGF2ZSB0byBiZSwgKnNlbGYqKS4gIElmIGEgc3BlY2lmaWNcbiAgIG1ldGhvZCBpcyBub3QgZGVmaW5lZCwgdGhlIGF1Z21lbnRlZCBhc3NpZ25tZW50IGZhbGxzIGJhY2sgdG8gdGhlXG4gICBub3JtYWwgbWV0aG9kcy4gIEZvciBpbnN0YW5jZSwgaWYgKngqIGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3NcbiAgIHdpdGggYW4gIl9faWFkZF9fKCkiIG1ldGhvZCwgInggKz0geSIgaXMgZXF1aXZhbGVudCB0byAieCA9XG4gICB4Ll9faWFkZF9fKHkpIiAuIE90aGVyd2lzZSwgInguX19hZGRfXyh5KSIgYW5kICJ5Ll9fcmFkZF9fKHgpIiBhcmVcbiAgIGNvbnNpZGVyZWQsIGFzIHdpdGggdGhlIGV2YWx1YXRpb24gb2YgInggKyB5Ii4gSW4gY2VydGFpblxuICAgc2l0dWF0aW9ucywgYXVnbWVudGVkIGFzc2lnbm1lbnQgY2FuIHJlc3VsdCBpbiB1bmV4cGVjdGVkIGVycm9yc1xuICAgKHNlZSAqV2h5IGRvZXMgYV90dXBsZVtpXSArPSBbXCdpdGVtXCddIHJhaXNlIGFuIGV4Y2VwdGlvbiB3aGVuIHRoZVxuICAgYWRkaXRpb24gd29ya3M/KiksIGJ1dCB0aGlzIGJlaGF2aW9yIGlzIGluIGZhY3QgcGFydCBvZiB0aGUgZGF0YVxuICAgbW9kZWwuXG5cbm9iamVjdC5fX25lZ19fKHNlbGYpXG5vYmplY3QuX19wb3NfXyhzZWxmKVxub2JqZWN0Ll9fYWJzX18oc2VsZilcbm9iamVjdC5fX2ludmVydF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIHVuYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9ucyAoIi0iLCAiKyIsXG4gICAiYWJzKCkiIGFuZCAifiIpLlxuXG5vYmplY3QuX19jb21wbGV4X18oc2VsZilcbm9iamVjdC5fX2ludF9fKHNlbGYpXG5vYmplY3QuX19mbG9hdF9fKHNlbGYpXG5vYmplY3QuX19yb3VuZF9fKHNlbGZbLCBuXSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zICJjb21wbGV4KCkiLCAiaW50KCkiLFxuICAgImZsb2F0KCkiIGFuZCAicm91bmQoKSIuICBTaG91bGQgcmV0dXJuIGEgdmFsdWUgb2YgdGhlIGFwcHJvcHJpYXRlXG4gICB0eXBlLlxuXG5vYmplY3QuX19pbmRleF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgIm9wZXJhdG9yLmluZGV4KCkiLCBhbmQgd2hlbmV2ZXIgUHl0aG9uIG5lZWRzXG4gICB0byBsb3NzbGVzc2x5IGNvbnZlcnQgdGhlIG51bWVyaWMgb2JqZWN0IHRvIGFuIGludGVnZXIgb2JqZWN0IChzdWNoXG4gICBhcyBpbiBzbGljaW5nLCBvciBpbiB0aGUgYnVpbHQtaW4gImJpbigpIiwgImhleCgpIiBhbmQgIm9jdCgpIlxuICAgZnVuY3Rpb25zKS4gUHJlc2VuY2Ugb2YgdGhpcyBtZXRob2QgaW5kaWNhdGVzIHRoYXQgdGhlIG51bWVyaWNcbiAgIG9iamVjdCBpcyBhbiBpbnRlZ2VyIHR5cGUuICBNdXN0IHJldHVybiBhbiBpbnRlZ2VyLlxuXG4gICBOb3RlOiBJbiBvcmRlciB0byBoYXZlIGEgY29oZXJlbnQgaW50ZWdlciB0eXBlIGNsYXNzLCB3aGVuXG4gICAgICJfX2luZGV4X18oKSIgaXMgZGVmaW5lZCAiX19pbnRfXygpIiBzaG91bGQgYWxzbyBiZSBkZWZpbmVkLCBhbmRcbiAgICAgYm90aCBzaG91bGQgcmV0dXJuIHRoZSBzYW1lIHZhbHVlLlxuJywKLSAnb2JqZWN0cyc6IHUnXG5PYmplY3RzLCB2YWx1ZXMgYW5kIHR5cGVzXG4qKioqKioqKioqKioqKioqKioqKioqKioqXG5cbipPYmplY3RzKiBhcmUgUHl0aG9uXCdzIGFic3RyYWN0aW9uIGZvciBkYXRhLiAgQWxsIGRhdGEgaW4gYSBQeXRob25cbnByb2dyYW0gaXMgcmVwcmVzZW50ZWQgYnkgb2JqZWN0cyBvciBieSByZWxhdGlvbnMgYmV0d2VlbiBvYmplY3RzLiAoSW5cbmEgc2Vuc2UsIGFuZCBpbiBjb25mb3JtYW5jZSB0byBWb24gTmV1bWFublwncyBtb2RlbCBvZiBhICJzdG9yZWRcbnByb2dyYW0gY29tcHV0ZXIsIiBjb2RlIGlzIGFsc28gcmVwcmVzZW50ZWQgYnkgb2JqZWN0cy4pXG5cbkV2ZXJ5IG9iamVjdCBoYXMgYW4gaWRlbnRpdHksIGEgdHlwZSBhbmQgYSB2YWx1ZS4gIEFuIG9iamVjdFwnc1xuKmlkZW50aXR5KiBuZXZlciBjaGFuZ2VzIG9uY2UgaXQgaGFzIGJlZW4gY3JlYXRlZDsgeW91IG1heSB0aGluayBvZiBpdFxuYXMgdGhlIG9iamVjdFwncyBhZGRyZXNzIGluIG1lbW9yeS4gIFRoZSBcJyJpcyJcJyBvcGVyYXRvciBjb21wYXJlcyB0aGVcbmlkZW50aXR5IG9mIHR3byBvYmplY3RzOyB0aGUgImlkKCkiIGZ1bmN0aW9uIHJldHVybnMgYW4gaW50ZWdlclxucmVwcmVzZW50aW5nIGl0cyBpZGVudGl0eS5cblxuKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBGb3IgQ1B5dGhvbiwgImlkKHgpIiBpcyB0aGUgbWVtb3J5XG5hZGRyZXNzIHdoZXJlICJ4IiBpcyBzdG9yZWQuXG5cbkFuIG9iamVjdFwncyB0eXBlIGRldGVybWluZXMgdGhlIG9wZXJhdGlvbnMgdGhhdCB0aGUgb2JqZWN0IHN1cHBvcnRzXG4oZS5nLiwgImRvZXMgaXQgaGF2ZSBhIGxlbmd0aD8iKSBhbmQgYWxzbyBkZWZpbmVzIHRoZSBwb3NzaWJsZSB2YWx1ZXNcbmZvciBvYmplY3RzIG9mIHRoYXQgdHlwZS4gIFRoZSAidHlwZSgpIiBmdW5jdGlvbiByZXR1cm5zIGFuIG9iamVjdFwnc1xudHlwZSAod2hpY2ggaXMgYW4gb2JqZWN0IGl0c2VsZikuICBMaWtlIGl0cyBpZGVudGl0eSwgYW4gb2JqZWN0XCdzXG4qdHlwZSogaXMgYWxzbyB1bmNoYW5nZWFibGUuIFsxXVxuXG5UaGUgKnZhbHVlKiBvZiBzb21lIG9iamVjdHMgY2FuIGNoYW5nZS4gIE9iamVjdHMgd2hvc2UgdmFsdWUgY2FuXG5jaGFuZ2UgYXJlIHNhaWQgdG8gYmUgKm11dGFibGUqOyBvYmplY3RzIHdob3NlIHZhbHVlIGlzIHVuY2hhbmdlYWJsZVxub25jZSB0aGV5IGFyZSBjcmVhdGVkIGFyZSBjYWxsZWQgKmltbXV0YWJsZSouIChUaGUgdmFsdWUgb2YgYW5cbmltbXV0YWJsZSBjb250YWluZXIgb2JqZWN0IHRoYXQgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gYSBtdXRhYmxlXG5vYmplY3QgY2FuIGNoYW5nZSB3aGVuIHRoZSBsYXR0ZXJcJ3MgdmFsdWUgaXMgY2hhbmdlZDsgaG93ZXZlciB0aGVcbmNvbnRhaW5lciBpcyBzdGlsbCBjb25zaWRlcmVkIGltbXV0YWJsZSwgYmVjYXVzZSB0aGUgY29sbGVjdGlvbiBvZlxub2JqZWN0cyBpdCBjb250YWlucyBjYW5ub3QgYmUgY2hhbmdlZC4gIFNvLCBpbW11dGFiaWxpdHkgaXMgbm90XG5zdHJpY3RseSB0aGUgc2FtZSBhcyBoYXZpbmcgYW4gdW5jaGFuZ2VhYmxlIHZhbHVlLCBpdCBpcyBtb3JlIHN1YnRsZS4pXG5BbiBvYmplY3RcJ3MgbXV0YWJpbGl0eSBpcyBkZXRlcm1pbmVkIGJ5IGl0cyB0eXBlOyBmb3IgaW5zdGFuY2UsXG5udW1iZXJzLCBzdHJpbmdzIGFuZCB0dXBsZXMgYXJlIGltbXV0YWJsZSwgd2hpbGUgZGljdGlvbmFyaWVzIGFuZFxubGlzdHMgYXJlIG11dGFibGUuXG5cbk9iamVjdHMgYXJlIG5ldmVyIGV4cGxpY2l0bHkgZGVzdHJveWVkOyBob3dldmVyLCB3aGVuIHRoZXkgYmVjb21lXG51bnJlYWNoYWJsZSB0aGV5IG1heSBiZSBnYXJiYWdlLWNvbGxlY3RlZC4gIEFuIGltcGxlbWVudGF0aW9uIGlzXG5hbGxvd2VkIHRvIHBvc3Rwb25lIGdhcmJhZ2UgY29sbGVjdGlvbiBvciBvbWl0IGl0IGFsdG9nZXRoZXIgLS0tIGl0IGlzXG5hIG1hdHRlciBvZiBpbXBsZW1lbnRhdGlvbiBxdWFsaXR5IGhvdyBnYXJiYWdlIGNvbGxlY3Rpb24gaXNcbmltcGxlbWVudGVkLCBhcyBsb25nIGFzIG5vIG9iamVjdHMgYXJlIGNvbGxlY3RlZCB0aGF0IGFyZSBzdGlsbFxucmVhY2hhYmxlLlxuXG4qKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIENQeXRob24gY3VycmVudGx5IHVzZXMgYSByZWZlcmVuY2UtXG5jb3VudGluZyBzY2hlbWUgd2l0aCAob3B0aW9uYWwpIGRlbGF5ZWQgZGV0ZWN0aW9uIG9mIGN5Y2xpY2FsbHkgbGlua2VkXG5nYXJiYWdlLCB3aGljaCBjb2xsZWN0cyBtb3N0IG9iamVjdHMgYXMgc29vbiBhcyB0aGV5IGJlY29tZVxudW5yZWFjaGFibGUsIGJ1dCBpcyBub3QgZ3VhcmFudGVlZCB0byBjb2xsZWN0IGdhcmJhZ2UgY29udGFpbmluZ1xuY2lyY3VsYXIgcmVmZXJlbmNlcy4gIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGUgImdjIiBtb2R1bGUgZm9yXG5pbmZvcm1hdGlvbiBvbiBjb250cm9sbGluZyB0aGUgY29sbGVjdGlvbiBvZiBjeWNsaWMgZ2FyYmFnZS4gT3RoZXJcbmltcGxlbWVudGF0aW9ucyBhY3QgZGlmZmVyZW50bHkgYW5kIENQeXRob24gbWF5IGNoYW5nZS4gRG8gbm90IGRlcGVuZFxub24gaW1tZWRpYXRlIGZpbmFsaXphdGlvbiBvZiBvYmplY3RzIHdoZW4gdGhleSBiZWNvbWUgdW5yZWFjaGFibGUgKHNvXG55b3Ugc2hvdWxkIGFsd2F5cyBjbG9zZSBmaWxlcyBleHBsaWNpdGx5KS5cblxuTm90ZSB0aGF0IHRoZSB1c2Ugb2YgdGhlIGltcGxlbWVudGF0aW9uXCdzIHRyYWNpbmcgb3IgZGVidWdnaW5nXG5mYWNpbGl0aWVzIG1heSBrZWVwIG9iamVjdHMgYWxpdmUgdGhhdCB3b3VsZCBub3JtYWxseSBiZSBjb2xsZWN0YWJsZS5cbkFsc28gbm90ZSB0aGF0IGNhdGNoaW5nIGFuIGV4Y2VwdGlvbiB3aXRoIGEgXCcidHJ5Ii4uLiJleGNlcHQiXCdcbnN0YXRlbWVudCBtYXkga2VlcCBvYmplY3RzIGFsaXZlLlxuXG5Tb21lIG9iamVjdHMgY29udGFpbiByZWZlcmVuY2VzIHRvICJleHRlcm5hbCIgcmVzb3VyY2VzIHN1Y2ggYXMgb3BlblxuZmlsZXMgb3Igd2luZG93cy4gIEl0IGlzIHVuZGVyc3Rvb2QgdGhhdCB0aGVzZSByZXNvdXJjZXMgYXJlIGZyZWVkXG53aGVuIHRoZSBvYmplY3QgaXMgZ2FyYmFnZS1jb2xsZWN0ZWQsIGJ1dCBzaW5jZSBnYXJiYWdlIGNvbGxlY3Rpb24gaXNcbm5vdCBndWFyYW50ZWVkIHRvIGhhcHBlbiwgc3VjaCBvYmplY3RzIGFsc28gcHJvdmlkZSBhbiBleHBsaWNpdCB3YXkgdG9cbnJlbGVhc2UgdGhlIGV4dGVybmFsIHJlc291cmNlLCB1c3VhbGx5IGEgImNsb3NlKCkiIG1ldGhvZC4gUHJvZ3JhbXNcbmFyZSBzdHJvbmdseSByZWNvbW1lbmRlZCB0byBleHBsaWNpdGx5IGNsb3NlIHN1Y2ggb2JqZWN0cy4gIFRoZVxuXCcidHJ5Ii4uLiJmaW5hbGx5IlwnIHN0YXRlbWVudCBhbmQgdGhlIFwnIndpdGgiXCcgc3RhdGVtZW50IHByb3ZpZGVcbmNvbnZlbmllbnQgd2F5cyB0byBkbyB0aGlzLlxuXG5Tb21lIG9iamVjdHMgY29udGFpbiByZWZlcmVuY2VzIHRvIG90aGVyIG9iamVjdHM7IHRoZXNlIGFyZSBjYWxsZWRcbipjb250YWluZXJzKi4gRXhhbXBsZXMgb2YgY29udGFpbmVycyBhcmUgdHVwbGVzLCBsaXN0cyBhbmRcbmRpY3Rpb25hcmllcy4gIFRoZSByZWZlcmVuY2VzIGFyZSBwYXJ0IG9mIGEgY29udGFpbmVyXCdzIHZhbHVlLiAgSW5cbm1vc3QgY2FzZXMsIHdoZW4gd2UgdGFsayBhYm91dCB0aGUgdmFsdWUgb2YgYSBjb250YWluZXIsIHdlIGltcGx5IHRoZVxudmFsdWVzLCBub3QgdGhlIGlkZW50aXRpZXMgb2YgdGhlIGNvbnRhaW5lZCBvYmplY3RzOyBob3dldmVyLCB3aGVuIHdlXG50YWxrIGFib3V0IHRoZSBtdXRhYmlsaXR5IG9mIGEgY29udGFpbmVyLCBvbmx5IHRoZSBpZGVudGl0aWVzIG9mIHRoZVxuaW1tZWRpYXRlbHkgY29udGFpbmVkIG9iamVjdHMgYXJlIGltcGxpZWQuICBTbywgaWYgYW4gaW1tdXRhYmxlXG5jb250YWluZXIgKGxpa2UgYSB0dXBsZSkgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gYSBtdXRhYmxlIG9iamVjdCwgaXRzXG52YWx1ZSBjaGFuZ2VzIGlmIHRoYXQgbXV0YWJsZSBvYmplY3QgaXMgY2hhbmdlZC5cblxuVHlwZXMgYWZmZWN0IGFsbW9zdCBhbGwgYXNwZWN0cyBvZiBvYmplY3QgYmVoYXZpb3IuICBFdmVuIHRoZVxuaW1wb3J0YW5jZSBvZiBvYmplY3QgaWRlbnRpdHkgaXMgYWZmZWN0ZWQgaW4gc29tZSBzZW5zZTogZm9yIGltbXV0YWJsZVxudHlwZXMsIG9wZXJhdGlvbnMgdGhhdCBjb21wdXRlIG5ldyB2YWx1ZXMgbWF5IGFjdHVhbGx5IHJldHVybiBhXG5yZWZlcmVuY2UgdG8gYW55IGV4aXN0aW5nIG9iamVjdCB3aXRoIHRoZSBzYW1lIHR5cGUgYW5kIHZhbHVlLCB3aGlsZVxuZm9yIG11dGFibGUgb2JqZWN0cyB0aGlzIGlzIG5vdCBhbGxvd2VkLiAgRS5nLiwgYWZ0ZXIgImEgPSAxOyBiID0gMSIsXG4iYSIgYW5kICJiIiBtYXkgb3IgbWF5IG5vdCByZWZlciB0byB0aGUgc2FtZSBvYmplY3Qgd2l0aCB0aGUgdmFsdWVcbm9uZSwgZGVwZW5kaW5nIG9uIHRoZSBpbXBsZW1lbnRhdGlvbiwgYnV0IGFmdGVyICJjID0gW107IGQgPSBbXSIsICJjIlxuYW5kICJkIiBhcmUgZ3VhcmFudGVlZCB0byByZWZlciB0byB0d28gZGlmZmVyZW50LCB1bmlxdWUsIG5ld2x5XG5jcmVhdGVkIGVtcHR5IGxpc3RzLiAoTm90ZSB0aGF0ICJjID0gZCA9IFtdIiBhc3NpZ25zIHRoZSBzYW1lIG9iamVjdFxudG8gYm90aCAiYyIgYW5kICJkIi4pXG4nLAotICdvcGVyYXRvci1zdW1tYXJ5JzogdSdcbk9wZXJhdG9yIHByZWNlZGVuY2VcbioqKioqKioqKioqKioqKioqKipcblxuVGhlIGZvbGxvd2luZyB0YWJsZSBzdW1tYXJpemVzIHRoZSBvcGVyYXRvciBwcmVjZWRlbmNlIGluIFB5dGhvbiwgZnJvbVxubG93ZXN0IHByZWNlZGVuY2UgKGxlYXN0IGJpbmRpbmcpIHRvIGhpZ2hlc3QgcHJlY2VkZW5jZSAobW9zdFxuYmluZGluZykuICBPcGVyYXRvcnMgaW4gdGhlIHNhbWUgYm94IGhhdmUgdGhlIHNhbWUgcHJlY2VkZW5jZS4gIFVubGVzc1xudGhlIHN5bnRheCBpcyBleHBsaWNpdGx5IGdpdmVuLCBvcGVyYXRvcnMgYXJlIGJpbmFyeS4gIE9wZXJhdG9ycyBpblxudGhlIHNhbWUgYm94IGdyb3VwIGxlZnQgdG8gcmlnaHQgKGV4Y2VwdCBmb3IgZXhwb25lbnRpYXRpb24sIHdoaWNoXG5ncm91cHMgZnJvbSByaWdodCB0byBsZWZ0KS5cblxuTm90ZSB0aGF0IGNvbXBhcmlzb25zLCBtZW1iZXJzaGlwIHRlc3RzLCBhbmQgaWRlbnRpdHkgdGVzdHMsIGFsbCBoYXZlXG50aGUgc2FtZSBwcmVjZWRlbmNlIGFuZCBoYXZlIGEgbGVmdC10by1yaWdodCBjaGFpbmluZyBmZWF0dXJlIGFzXG5kZXNjcmliZWQgaW4gdGhlICpDb21wYXJpc29ucyogc2VjdGlvbi5cblxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBPcGVyYXRvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xufCAibGFtYmRhIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IExhbWJkYSBleHByZXNzaW9uICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiaWYiIC0tICJlbHNlIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbmRpdGlvbmFsIGV4cHJlc3Npb24gICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAib3IiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJvb2xlYW4gT1IgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiYW5kIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJvb2xlYW4gQU5EICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAibm90IiAieCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJvb2xlYW4gTk9UICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiaW4iLCAibm90IGluIiwgImlzIiwgImlzIG5vdCIsICI8IiwgIjw9IiwgIj4iLCB8IENvbXBhcmlzb25zLCBpbmNsdWRpbmcgbWVtYmVyc2hpcCAgICAgfFxufCAiPj0iLCAiIT0iLCAiPT0iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRlc3RzIGFuZCBpZGVudGl0eSB0ZXN0cyAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAifCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJpdHdpc2UgT1IgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiXiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJpdHdpc2UgWE9SICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiJiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJpdHdpc2UgQU5EICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiPDwiLCAiPj4iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNoaWZ0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiKyIsICItIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEFkZGl0aW9uIGFuZCBzdWJ0cmFjdGlvbiAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiKiIsICJAIiwgIi8iLCAiLy8iLCAiJSIgICAgICAgICAgICAgICAgICAgICAgICB8IE11bHRpcGxpY2F0aW9uLCBtYXRyaXggbXVsdGlwbGljYXRpb24gfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGRpdmlzaW9uLCByZW1haW5kZXIgWzVdICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiK3giLCAiLXgiLCAifngiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBvc2l0aXZlLCBuZWdhdGl2ZSwgYml0d2lzZSBOT1QgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiKioiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEV4cG9uZW50aWF0aW9uIFs2XSAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiYXdhaXQiICJ4IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEF3YWl0IGV4cHJlc3Npb24gICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAieFtpbmRleF0iLCAieFtpbmRleDppbmRleF0iLCAgICAgICAgICAgICAgICAgICB8IFN1YnNjcmlwdGlvbiwgc2xpY2luZywgY2FsbCwgICAgICAgICAgfFxufCAieChhcmd1bWVudHMuLi4pIiwgInguYXR0cmlidXRlIiAgICAgICAgICAgICAgICB8IGF0dHJpYnV0ZSByZWZlcmVuY2UgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiKGV4cHJlc3Npb25zLi4uKSIsICJbZXhwcmVzc2lvbnMuLi5dIiwgIntrZXk6ICB8IEJpbmRpbmcgb3IgdHVwbGUgZGlzcGxheSwgbGlzdCAgICAgICAgfFxufCB2YWx1ZS4uLn0iLCAie2V4cHJlc3Npb25zLi4ufSIgICAgICAgICAgICAgICAgICB8IGRpc3BsYXksIGRpY3Rpb25hcnkgZGlzcGxheSwgc2V0ICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGRpc3BsYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG4tWyBGb290bm90ZXMgXS1cblxuWzFdIFdoaWxlICJhYnMoeCV5KSA8IGFicyh5KSIgaXMgdHJ1ZSBtYXRoZW1hdGljYWxseSwgZm9yIGZsb2F0c1xuICAgIGl0IG1heSBub3QgYmUgdHJ1ZSBudW1lcmljYWxseSBkdWUgdG8gcm91bmRvZmYuICBGb3IgZXhhbXBsZSwgYW5kXG4gICAgYXNzdW1pbmcgYSBwbGF0Zm9ybSBvbiB3aGljaCBhIFB5dGhvbiBmbG9hdCBpcyBhbiBJRUVFIDc1NCBkb3VibGUtXG4gICAgcHJlY2lzaW9uIG51bWJlciwgaW4gb3JkZXIgdGhhdCAiLTFlLTEwMCAlIDFlMTAwIiBoYXZlIHRoZSBzYW1lXG4gICAgc2lnbiBhcyAiMWUxMDAiLCB0aGUgY29tcHV0ZWQgcmVzdWx0IGlzICItMWUtMTAwICsgMWUxMDAiLCB3aGljaFxuICAgIGlzIG51bWVyaWNhbGx5IGV4YWN0bHkgZXF1YWwgdG8gIjFlMTAwIi4gIFRoZSBmdW5jdGlvblxuICAgICJtYXRoLmZtb2QoKSIgcmV0dXJucyBhIHJlc3VsdCB3aG9zZSBzaWduIG1hdGNoZXMgdGhlIHNpZ24gb2YgdGhlXG4gICAgZmlyc3QgYXJndW1lbnQgaW5zdGVhZCwgYW5kIHNvIHJldHVybnMgIi0xZS0xMDAiIGluIHRoaXMgY2FzZS5cbiAgICBXaGljaCBhcHByb2FjaCBpcyBtb3JlIGFwcHJvcHJpYXRlIGRlcGVuZHMgb24gdGhlIGFwcGxpY2F0aW9uLlxuXG5bMl0gSWYgeCBpcyB2ZXJ5IGNsb3NlIHRvIGFuIGV4YWN0IGludGVnZXIgbXVsdGlwbGUgb2YgeSwgaXRcJ3NcbiAgICBwb3NzaWJsZSBmb3IgIngvL3kiIHRvIGJlIG9uZSBsYXJnZXIgdGhhbiAiKHgteCV5KS8veSIgZHVlIHRvXG4gICAgcm91bmRpbmcuICBJbiBzdWNoIGNhc2VzLCBQeXRob24gcmV0dXJucyB0aGUgbGF0dGVyIHJlc3VsdCwgaW5cbiAgICBvcmRlciB0byBwcmVzZXJ2ZSB0aGF0ICJkaXZtb2QoeCx5KVswXSAqIHkgKyB4ICUgeSIgYmUgdmVyeSBjbG9zZVxuICAgIHRvICJ4Ii5cblxuWzNdIFRoZSBVbmljb2RlIHN0YW5kYXJkIGRpc3Rpbmd1aXNoZXMgYmV0d2VlbiAqY29kZSBwb2ludHMqIChlLmcuXG4gICAgVSswMDQxKSBhbmQgKmFic3RyYWN0IGNoYXJhY3RlcnMqIChlLmcuICJMQVRJTiBDQVBJVEFMIExFVFRFUiBBIikuXG4gICAgV2hpbGUgbW9zdCBhYnN0cmFjdCBjaGFyYWN0ZXJzIGluIFVuaWNvZGUgYXJlIG9ubHkgcmVwcmVzZW50ZWRcbiAgICB1c2luZyBvbmUgY29kZSBwb2ludCwgdGhlcmUgaXMgYSBudW1iZXIgb2YgYWJzdHJhY3QgY2hhcmFjdGVyc1xuICAgIHRoYXQgY2FuIGluIGFkZGl0aW9uIGJlIHJlcHJlc2VudGVkIHVzaW5nIGEgc2VxdWVuY2Ugb2YgbW9yZSB0aGFuXG4gICAgb25lIGNvZGUgcG9pbnQuICBGb3IgZXhhbXBsZSwgdGhlIGFic3RyYWN0IGNoYXJhY3RlciAiTEFUSU5cbiAgICBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQSIgY2FuIGJlIHJlcHJlc2VudGVkIGFzIGEgc2luZ2xlXG4gICAgKnByZWNvbXBvc2VkIGNoYXJhY3RlciogYXQgY29kZSBwb3NpdGlvbiBVKzAwQzcsIG9yIGFzIGEgc2VxdWVuY2VcbiAgICBvZiBhICpiYXNlIGNoYXJhY3RlciogYXQgY29kZSBwb3NpdGlvbiBVKzAwNDMgKExBVElOIENBUElUQUxcbiAgICBMRVRURVIgQyksIGZvbGxvd2VkIGJ5IGEgKmNvbWJpbmluZyBjaGFyYWN0ZXIqIGF0IGNvZGUgcG9zaXRpb25cbiAgICBVKzAzMjcgKENPTUJJTklORyBDRURJTExBKS5cblxuICAgIFRoZSBjb21wYXJpc29uIG9wZXJhdG9ycyBvbiBzdHJpbmdzIGNvbXBhcmUgYXQgdGhlIGxldmVsIG9mXG4gICAgVW5pY29kZSBjb2RlIHBvaW50cy4gVGhpcyBtYXkgYmUgY291bnRlci1pbnR1aXRpdmUgdG8gaHVtYW5zLiAgRm9yXG4gICAgZXhhbXBsZSwgIiJcXHUwMEM3IiA9PSAiXFx1MDA0M1xcdTAzMjciIiBpcyAiRmFsc2UiLCBldmVuIHRob3VnaCBib3RoXG4gICAgc3RyaW5ncyByZXByZXNlbnQgdGhlIHNhbWUgYWJzdHJhY3QgY2hhcmFjdGVyICJMQVRJTiBDQVBJVEFMXG4gICAgTEVUVEVSIEMgV0lUSCBDRURJTExBIi5cblxuICAgIFRvIGNvbXBhcmUgc3RyaW5ncyBhdCB0aGUgbGV2ZWwgb2YgYWJzdHJhY3QgY2hhcmFjdGVycyAodGhhdCBpcyxcbiAgICBpbiBhIHdheSBpbnR1aXRpdmUgdG8gaHVtYW5zKSwgdXNlICJ1bmljb2RlZGF0YS5ub3JtYWxpemUoKSIuXG5cbls0XSBEdWUgdG8gYXV0b21hdGljIGdhcmJhZ2UtY29sbGVjdGlvbiwgZnJlZSBsaXN0cywgYW5kIHRoZVxuICAgIGR5bmFtaWMgbmF0dXJlIG9mIGRlc2NyaXB0b3JzLCB5b3UgbWF5IG5vdGljZSBzZWVtaW5nbHkgdW51c3VhbFxuICAgIGJlaGF2aW91ciBpbiBjZXJ0YWluIHVzZXMgb2YgdGhlICJpcyIgb3BlcmF0b3IsIGxpa2UgdGhvc2VcbiAgICBpbnZvbHZpbmcgY29tcGFyaXNvbnMgYmV0d2VlbiBpbnN0YW5jZSBtZXRob2RzLCBvciBjb25zdGFudHMuXG4gICAgQ2hlY2sgdGhlaXIgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvLlxuXG5bNV0gVGhlICIlIiBvcGVyYXRvciBpcyBhbHNvIHVzZWQgZm9yIHN0cmluZyBmb3JtYXR0aW5nOyB0aGUgc2FtZVxuICAgIHByZWNlZGVuY2UgYXBwbGllcy5cblxuWzZdIFRoZSBwb3dlciBvcGVyYXRvciAiKioiIGJpbmRzIGxlc3MgdGlnaHRseSB0aGFuIGFuIGFyaXRobWV0aWNcbiAgICBvciBiaXR3aXNlIHVuYXJ5IG9wZXJhdG9yIG9uIGl0cyByaWdodCwgdGhhdCBpcywgIjIqKi0xIiBpcyAiMC41Ii5cbicsCi0gJ3Bhc3MnOiB1J1xuVGhlICJwYXNzIiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqXG5cbiAgIHBhc3Nfc3RtdCA6Oj0gInBhc3MiXG5cbiJwYXNzIiBpcyBhIG51bGwgb3BlcmF0aW9uIC0tLSB3aGVuIGl0IGlzIGV4ZWN1dGVkLCBub3RoaW5nIGhhcHBlbnMuXG5JdCBpcyB1c2VmdWwgYXMgYSBwbGFjZWhvbGRlciB3aGVuIGEgc3RhdGVtZW50IGlzIHJlcXVpcmVkXG5zeW50YWN0aWNhbGx5LCBidXQgbm8gY29kZSBuZWVkcyB0byBiZSBleGVjdXRlZCwgZm9yIGV4YW1wbGU6XG5cbiAgIGRlZiBmKGFyZyk6IHBhc3MgICAgIyBhIGZ1bmN0aW9uIHRoYXQgZG9lcyBub3RoaW5nICh5ZXQpXG5cbiAgIGNsYXNzIEM6IHBhc3MgICAgICAgIyBhIGNsYXNzIHdpdGggbm8gbWV0aG9kcyAoeWV0KVxuJywKLSAncG93ZXInOiB1J1xuVGhlIHBvd2VyIG9wZXJhdG9yXG4qKioqKioqKioqKioqKioqKipcblxuVGhlIHBvd2VyIG9wZXJhdG9yIGJpbmRzIG1vcmUgdGlnaHRseSB0aGFuIHVuYXJ5IG9wZXJhdG9ycyBvbiBpdHNcbmxlZnQ7IGl0IGJpbmRzIGxlc3MgdGlnaHRseSB0aGFuIHVuYXJ5IG9wZXJhdG9ycyBvbiBpdHMgcmlnaHQuICBUaGVcbnN5bnRheCBpczpcblxuICAgcG93ZXIgOjo9ICggYXdhaXRfZXhwciB8IHByaW1hcnkgKSBbIioqIiB1X2V4cHJdXG5cblRodXMsIGluIGFuIHVucGFyZW50aGVzaXplZCBzZXF1ZW5jZSBvZiBwb3dlciBhbmQgdW5hcnkgb3BlcmF0b3JzLCB0aGVcbm9wZXJhdG9ycyBhcmUgZXZhbHVhdGVkIGZyb20gcmlnaHQgdG8gbGVmdCAodGhpcyBkb2VzIG5vdCBjb25zdHJhaW5cbnRoZSBldmFsdWF0aW9uIG9yZGVyIGZvciB0aGUgb3BlcmFuZHMpOiAiLTEqKjIiIHJlc3VsdHMgaW4gIi0xIi5cblxuVGhlIHBvd2VyIG9wZXJhdG9yIGhhcyB0aGUgc2FtZSBzZW1hbnRpY3MgYXMgdGhlIGJ1aWx0LWluICJwb3coKSJcbmZ1bmN0aW9uLCB3aGVuIGNhbGxlZCB3aXRoIHR3byBhcmd1bWVudHM6IGl0IHlpZWxkcyBpdHMgbGVmdCBhcmd1bWVudFxucmFpc2VkIHRvIHRoZSBwb3dlciBvZiBpdHMgcmlnaHQgYXJndW1lbnQuICBUaGUgbnVtZXJpYyBhcmd1bWVudHMgYXJlXG5maXJzdCBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZSwgYW5kIHRoZSByZXN1bHQgaXMgb2YgdGhhdCB0eXBlLlxuXG5Gb3IgaW50IG9wZXJhbmRzLCB0aGUgcmVzdWx0IGhhcyB0aGUgc2FtZSB0eXBlIGFzIHRoZSBvcGVyYW5kcyB1bmxlc3NcbnRoZSBzZWNvbmQgYXJndW1lbnQgaXMgbmVnYXRpdmU7IGluIHRoYXQgY2FzZSwgYWxsIGFyZ3VtZW50cyBhcmVcbmNvbnZlcnRlZCB0byBmbG9hdCBhbmQgYSBmbG9hdCByZXN1bHQgaXMgZGVsaXZlcmVkLiBGb3IgZXhhbXBsZSxcbiIxMCoqMiIgcmV0dXJucyAiMTAwIiwgYnV0ICIxMCoqLTIiIHJldHVybnMgIjAuMDEiLlxuXG5SYWlzaW5nICIwLjAiIHRvIGEgbmVnYXRpdmUgcG93ZXIgcmVzdWx0cyBpbiBhICJaZXJvRGl2aXNpb25FcnJvciIuXG5SYWlzaW5nIGEgbmVnYXRpdmUgbnVtYmVyIHRvIGEgZnJhY3Rpb25hbCBwb3dlciByZXN1bHRzIGluIGEgImNvbXBsZXgiXG5udW1iZXIuIChJbiBlYXJsaWVyIHZlcnNpb25zIGl0IHJhaXNlZCBhICJWYWx1ZUVycm9yIi4pXG4nLAotICdyYWlzZSc6IHUnXG5UaGUgInJhaXNlIiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKlxuXG4gICByYWlzZV9zdG10IDo6PSAicmFpc2UiIFtleHByZXNzaW9uIFsiZnJvbSIgZXhwcmVzc2lvbl1dXG5cbklmIG5vIGV4cHJlc3Npb25zIGFyZSBwcmVzZW50LCAicmFpc2UiIHJlLXJhaXNlcyB0aGUgbGFzdCBleGNlcHRpb25cbnRoYXQgd2FzIGFjdGl2ZSBpbiB0aGUgY3VycmVudCBzY29wZS4gIElmIG5vIGV4Y2VwdGlvbiBpcyBhY3RpdmUgaW5cbnRoZSBjdXJyZW50IHNjb3BlLCBhICJSdW50aW1lRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQgaW5kaWNhdGluZ1xudGhhdCB0aGlzIGlzIGFuIGVycm9yLlxuXG5PdGhlcndpc2UsICJyYWlzZSIgZXZhbHVhdGVzIHRoZSBmaXJzdCBleHByZXNzaW9uIGFzIHRoZSBleGNlcHRpb25cbm9iamVjdC4gIEl0IG11c3QgYmUgZWl0aGVyIGEgc3ViY2xhc3Mgb3IgYW4gaW5zdGFuY2Ugb2ZcbiJCYXNlRXhjZXB0aW9uIi4gSWYgaXQgaXMgYSBjbGFzcywgdGhlIGV4Y2VwdGlvbiBpbnN0YW5jZSB3aWxsIGJlXG5vYnRhaW5lZCB3aGVuIG5lZWRlZCBieSBpbnN0YW50aWF0aW5nIHRoZSBjbGFzcyB3aXRoIG5vIGFyZ3VtZW50cy5cblxuVGhlICp0eXBlKiBvZiB0aGUgZXhjZXB0aW9uIGlzIHRoZSBleGNlcHRpb24gaW5zdGFuY2VcJ3MgY2xhc3MsIHRoZVxuKnZhbHVlKiBpcyB0aGUgaW5zdGFuY2UgaXRzZWxmLlxuXG5BIHRyYWNlYmFjayBvYmplY3QgaXMgbm9ybWFsbHkgY3JlYXRlZCBhdXRvbWF0aWNhbGx5IHdoZW4gYW4gZXhjZXB0aW9uXG5pcyByYWlzZWQgYW5kIGF0dGFjaGVkIHRvIGl0IGFzIHRoZSAiX190cmFjZWJhY2tfXyIgYXR0cmlidXRlLCB3aGljaFxuaXMgd3JpdGFibGUuIFlvdSBjYW4gY3JlYXRlIGFuIGV4Y2VwdGlvbiBhbmQgc2V0IHlvdXIgb3duIHRyYWNlYmFjayBpblxub25lIHN0ZXAgdXNpbmcgdGhlICJ3aXRoX3RyYWNlYmFjaygpIiBleGNlcHRpb24gbWV0aG9kICh3aGljaCByZXR1cm5zXG50aGUgc2FtZSBleGNlcHRpb24gaW5zdGFuY2UsIHdpdGggaXRzIHRyYWNlYmFjayBzZXQgdG8gaXRzIGFyZ3VtZW50KSxcbmxpa2Ugc286XG5cbiAgIHJhaXNlIEV4Y2VwdGlvbigiZm9vIG9jY3VycmVkIikud2l0aF90cmFjZWJhY2sodHJhY2ViYWNrb2JqKVxuXG5UaGUgImZyb20iIGNsYXVzZSBpcyB1c2VkIGZvciBleGNlcHRpb24gY2hhaW5pbmc6IGlmIGdpdmVuLCB0aGUgc2Vjb25kXG4qZXhwcmVzc2lvbiogbXVzdCBiZSBhbm90aGVyIGV4Y2VwdGlvbiBjbGFzcyBvciBpbnN0YW5jZSwgd2hpY2ggd2lsbFxudGhlbiBiZSBhdHRhY2hlZCB0byB0aGUgcmFpc2VkIGV4Y2VwdGlvbiBhcyB0aGUgIl9fY2F1c2VfXyIgYXR0cmlidXRlXG4od2hpY2ggaXMgd3JpdGFibGUpLiAgSWYgdGhlIHJhaXNlZCBleGNlcHRpb24gaXMgbm90IGhhbmRsZWQsIGJvdGhcbmV4Y2VwdGlvbnMgd2lsbCBiZSBwcmludGVkOlxuXG4gICA+Pj4gdHJ5OlxuICAgLi4uICAgICBwcmludCgxIC8gMClcbiAgIC4uLiBleGNlcHQgRXhjZXB0aW9uIGFzIGV4YzpcbiAgIC4uLiAgICAgcmFpc2UgUnVudGltZUVycm9yKCJTb21ldGhpbmcgYmFkIGhhcHBlbmVkIikgZnJvbSBleGNcbiAgIC4uLlxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAyLCBpbiA8bW9kdWxlPlxuICAgWmVyb0RpdmlzaW9uRXJyb3I6IGludCBkaXZpc2lvbiBvciBtb2R1bG8gYnkgemVyb1xuXG4gICBUaGUgYWJvdmUgZXhjZXB0aW9uIHdhcyB0aGUgZGlyZWN0IGNhdXNlIG9mIHRoZSBmb2xsb3dpbmcgZXhjZXB0aW9uOlxuXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDQsIGluIDxtb2R1bGU+XG4gICBSdW50aW1lRXJyb3I6IFNvbWV0aGluZyBiYWQgaGFwcGVuZWRcblxuQSBzaW1pbGFyIG1lY2hhbmlzbSB3b3JrcyBpbXBsaWNpdGx5IGlmIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQgaW5zaWRlXG5hbiBleGNlcHRpb24gaGFuZGxlciBvciBhICJmaW5hbGx5IiBjbGF1c2U6IHRoZSBwcmV2aW91cyBleGNlcHRpb24gaXNcbnRoZW4gYXR0YWNoZWQgYXMgdGhlIG5ldyBleGNlcHRpb25cJ3MgIl9fY29udGV4dF9fIiBhdHRyaWJ1dGU6XG5cbiAgID4+PiB0cnk6XG4gICAuLi4gICAgIHByaW50KDEgLyAwKVxuICAgLi4uIGV4Y2VwdDpcbiAgIC4uLiAgICAgcmFpc2UgUnVudGltZUVycm9yKCJTb21ldGhpbmcgYmFkIGhhcHBlbmVkIilcbiAgIC4uLlxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAyLCBpbiA8bW9kdWxlPlxuICAgWmVyb0RpdmlzaW9uRXJyb3I6IGludCBkaXZpc2lvbiBvciBtb2R1bG8gYnkgemVyb1xuXG4gICBEdXJpbmcgaGFuZGxpbmcgb2YgdGhlIGFib3ZlIGV4Y2VwdGlvbiwgYW5vdGhlciBleGNlcHRpb24gb2NjdXJyZWQ6XG5cbiAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbiAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgNCwgaW4gPG1vZHVsZT5cbiAgIFJ1bnRpbWVFcnJvcjogU29tZXRoaW5nIGJhZCBoYXBwZW5lZFxuXG5BZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIGV4Y2VwdGlvbnMgY2FuIGJlIGZvdW5kIGluIHNlY3Rpb25cbipFeGNlcHRpb25zKiwgYW5kIGluZm9ybWF0aW9uIGFib3V0IGhhbmRsaW5nIGV4Y2VwdGlvbnMgaXMgaW4gc2VjdGlvblxuKlRoZSB0cnkgc3RhdGVtZW50Ki5cbicsCi0gJ3JldHVybic6IHUnXG5UaGUgInJldHVybiIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIHJldHVybl9zdG10IDo6PSAicmV0dXJuIiBbZXhwcmVzc2lvbl9saXN0XVxuXG4icmV0dXJuIiBtYXkgb25seSBvY2N1ciBzeW50YWN0aWNhbGx5IG5lc3RlZCBpbiBhIGZ1bmN0aW9uIGRlZmluaXRpb24sXG5ub3Qgd2l0aGluIGEgbmVzdGVkIGNsYXNzIGRlZmluaXRpb24uXG5cbklmIGFuIGV4cHJlc3Npb24gbGlzdCBpcyBwcmVzZW50LCBpdCBpcyBldmFsdWF0ZWQsIGVsc2UgIk5vbmUiIGlzXG5zdWJzdGl0dXRlZC5cblxuInJldHVybiIgbGVhdmVzIHRoZSBjdXJyZW50IGZ1bmN0aW9uIGNhbGwgd2l0aCB0aGUgZXhwcmVzc2lvbiBsaXN0IChvclxuIk5vbmUiKSBhcyByZXR1cm4gdmFsdWUuXG5cbldoZW4gInJldHVybiIgcGFzc2VzIGNvbnRyb2wgb3V0IG9mIGEgInRyeSIgc3RhdGVtZW50IHdpdGggYSAiZmluYWxseSJcbmNsYXVzZSwgdGhhdCAiZmluYWxseSIgY2xhdXNlIGlzIGV4ZWN1dGVkIGJlZm9yZSByZWFsbHkgbGVhdmluZyB0aGVcbmZ1bmN0aW9uLlxuXG5JbiBhIGdlbmVyYXRvciBmdW5jdGlvbiwgdGhlICJyZXR1cm4iIHN0YXRlbWVudCBpbmRpY2F0ZXMgdGhhdCB0aGVcbmdlbmVyYXRvciBpcyBkb25lIGFuZCB3aWxsIGNhdXNlICJTdG9wSXRlcmF0aW9uIiB0byBiZSByYWlzZWQuIFRoZVxucmV0dXJuZWQgdmFsdWUgKGlmIGFueSkgaXMgdXNlZCBhcyBhbiBhcmd1bWVudCB0byBjb25zdHJ1Y3RcbiJTdG9wSXRlcmF0aW9uIiBhbmQgYmVjb21lcyB0aGUgIlN0b3BJdGVyYXRpb24udmFsdWUiIGF0dHJpYnV0ZS5cbicsCi0gJ3NlcXVlbmNlLXR5cGVzJzogdSdcbkVtdWxhdGluZyBjb250YWluZXIgdHlwZXNcbioqKioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGltcGxlbWVudCBjb250YWluZXIgb2JqZWN0cy5cbkNvbnRhaW5lcnMgdXN1YWxseSBhcmUgc2VxdWVuY2VzIChzdWNoIGFzIGxpc3RzIG9yIHR1cGxlcykgb3IgbWFwcGluZ3NcbihsaWtlIGRpY3Rpb25hcmllcyksIGJ1dCBjYW4gcmVwcmVzZW50IG90aGVyIGNvbnRhaW5lcnMgYXMgd2VsbC4gIFRoZVxuZmlyc3Qgc2V0IG9mIG1ldGhvZHMgaXMgdXNlZCBlaXRoZXIgdG8gZW11bGF0ZSBhIHNlcXVlbmNlIG9yIHRvXG5lbXVsYXRlIGEgbWFwcGluZzsgdGhlIGRpZmZlcmVuY2UgaXMgdGhhdCBmb3IgYSBzZXF1ZW5jZSwgdGhlXG5hbGxvd2FibGUga2V5cyBzaG91bGQgYmUgdGhlIGludGVnZXJzICprKiBmb3Igd2hpY2ggIjAgPD0gayA8IE4iIHdoZXJlXG4qTiogaXMgdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2UsIG9yIHNsaWNlIG9iamVjdHMsIHdoaWNoIGRlZmluZSBhXG5yYW5nZSBvZiBpdGVtcy4gIEl0IGlzIGFsc28gcmVjb21tZW5kZWQgdGhhdCBtYXBwaW5ncyBwcm92aWRlIHRoZVxubWV0aG9kcyAia2V5cygpIiwgInZhbHVlcygpIiwgIml0ZW1zKCkiLCAiZ2V0KCkiLCAiY2xlYXIoKSIsXG4ic2V0ZGVmYXVsdCgpIiwgInBvcCgpIiwgInBvcGl0ZW0oKSIsICJjb3B5KCkiLCBhbmQgInVwZGF0ZSgpIlxuYmVoYXZpbmcgc2ltaWxhciB0byB0aG9zZSBmb3IgUHl0aG9uXCdzIHN0YW5kYXJkIGRpY3Rpb25hcnkgb2JqZWN0cy5cblRoZSAiY29sbGVjdGlvbnMiIG1vZHVsZSBwcm92aWRlcyBhICJNdXRhYmxlTWFwcGluZyIgYWJzdHJhY3QgYmFzZVxuY2xhc3MgdG8gaGVscCBjcmVhdGUgdGhvc2UgbWV0aG9kcyBmcm9tIGEgYmFzZSBzZXQgb2YgIl9fZ2V0aXRlbV9fKCkiLFxuIl9fc2V0aXRlbV9fKCkiLCAiX19kZWxpdGVtX18oKSIsIGFuZCAia2V5cygpIi4gTXV0YWJsZSBzZXF1ZW5jZXNcbnNob3VsZCBwcm92aWRlIG1ldGhvZHMgImFwcGVuZCgpIiwgImNvdW50KCkiLCAiaW5kZXgoKSIsICJleHRlbmQoKSIsXG4iaW5zZXJ0KCkiLCAicG9wKCkiLCAicmVtb3ZlKCkiLCAicmV2ZXJzZSgpIiBhbmQgInNvcnQoKSIsIGxpa2UgUHl0aG9uXG5zdGFuZGFyZCBsaXN0IG9iamVjdHMuICBGaW5hbGx5LCBzZXF1ZW5jZSB0eXBlcyBzaG91bGQgaW1wbGVtZW50XG5hZGRpdGlvbiAobWVhbmluZyBjb25jYXRlbmF0aW9uKSBhbmQgbXVsdGlwbGljYXRpb24gKG1lYW5pbmdcbnJlcGV0aXRpb24pIGJ5IGRlZmluaW5nIHRoZSBtZXRob2RzICJfX2FkZF9fKCkiLCAiX19yYWRkX18oKSIsXG4iX19pYWRkX18oKSIsICJfX211bF9fKCkiLCAiX19ybXVsX18oKSIgYW5kICJfX2ltdWxfXygpIiBkZXNjcmliZWRcbmJlbG93OyB0aGV5IHNob3VsZCBub3QgZGVmaW5lIG90aGVyIG51bWVyaWNhbCBvcGVyYXRvcnMuICBJdCBpc1xucmVjb21tZW5kZWQgdGhhdCBib3RoIG1hcHBpbmdzIGFuZCBzZXF1ZW5jZXMgaW1wbGVtZW50IHRoZVxuIl9fY29udGFpbnNfXygpIiBtZXRob2QgdG8gYWxsb3cgZWZmaWNpZW50IHVzZSBvZiB0aGUgImluIiBvcGVyYXRvcjtcbmZvciBtYXBwaW5ncywgImluIiBzaG91bGQgc2VhcmNoIHRoZSBtYXBwaW5nXCdzIGtleXM7IGZvciBzZXF1ZW5jZXMsIGl0XG5zaG91bGQgc2VhcmNoIHRocm91Z2ggdGhlIHZhbHVlcy4gIEl0IGlzIGZ1cnRoZXIgcmVjb21tZW5kZWQgdGhhdCBib3RoXG5tYXBwaW5ncyBhbmQgc2VxdWVuY2VzIGltcGxlbWVudCB0aGUgIl9faXRlcl9fKCkiIG1ldGhvZCB0byBhbGxvd1xuZWZmaWNpZW50IGl0ZXJhdGlvbiB0aHJvdWdoIHRoZSBjb250YWluZXI7IGZvciBtYXBwaW5ncywgIl9faXRlcl9fKCkiXG5zaG91bGQgYmUgdGhlIHNhbWUgYXMgImtleXMoKSI7IGZvciBzZXF1ZW5jZXMsIGl0IHNob3VsZCBpdGVyYXRlXG50aHJvdWdoIHRoZSB2YWx1ZXMuXG5cbm9iamVjdC5fX2xlbl9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJsZW4oKSIuICBTaG91bGQgcmV0dXJuXG4gICB0aGUgbGVuZ3RoIG9mIHRoZSBvYmplY3QsIGFuIGludGVnZXIgIj49IiAwLiAgQWxzbywgYW4gb2JqZWN0IHRoYXRcbiAgIGRvZXNuXCd0IGRlZmluZSBhICJfX2Jvb2xfXygpIiBtZXRob2QgYW5kIHdob3NlICJfX2xlbl9fKCkiIG1ldGhvZFxuICAgcmV0dXJucyB6ZXJvIGlzIGNvbnNpZGVyZWQgdG8gYmUgZmFsc2UgaW4gYSBCb29sZWFuIGNvbnRleHQuXG5cbm9iamVjdC5fX2xlbmd0aF9oaW50X18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCAib3BlcmF0b3IubGVuZ3RoX2hpbnQoKSIuIFNob3VsZCByZXR1cm4gYW5cbiAgIGVzdGltYXRlZCBsZW5ndGggZm9yIHRoZSBvYmplY3QgKHdoaWNoIG1heSBiZSBncmVhdGVyIG9yIGxlc3MgdGhhblxuICAgdGhlIGFjdHVhbCBsZW5ndGgpLiBUaGUgbGVuZ3RoIG11c3QgYmUgYW4gaW50ZWdlciAiPj0iIDAuIFRoaXNcbiAgIG1ldGhvZCBpcyBwdXJlbHkgYW4gb3B0aW1pemF0aW9uIGFuZCBpcyBuZXZlciByZXF1aXJlZCBmb3JcbiAgIGNvcnJlY3RuZXNzLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjQuXG5cbk5vdGU6IFNsaWNpbmcgaXMgZG9uZSBleGNsdXNpdmVseSB3aXRoIHRoZSBmb2xsb3dpbmcgdGhyZWUgbWV0aG9kcy5cbiAgQSBjYWxsIGxpa2VcblxuICAgICBhWzE6Ml0gPSBiXG5cbiAgaXMgdHJhbnNsYXRlZCB0b1xuXG4gICAgIGFbc2xpY2UoMSwgMiwgTm9uZSldID0gYlxuXG4gIGFuZCBzbyBmb3J0aC4gIE1pc3Npbmcgc2xpY2UgaXRlbXMgYXJlIGFsd2F5cyBmaWxsZWQgaW4gd2l0aCAiTm9uZSIuXG5cbm9iamVjdC5fX2dldGl0ZW1fXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgZXZhbHVhdGlvbiBvZiAic2VsZltrZXldIi4gRm9yIHNlcXVlbmNlIHR5cGVzLFxuICAgdGhlIGFjY2VwdGVkIGtleXMgc2hvdWxkIGJlIGludGVnZXJzIGFuZCBzbGljZSBvYmplY3RzLiAgTm90ZSB0aGF0XG4gICB0aGUgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZiBuZWdhdGl2ZSBpbmRleGVzIChpZiB0aGUgY2xhc3Mgd2lzaGVzXG4gICB0byBlbXVsYXRlIGEgc2VxdWVuY2UgdHlwZSkgaXMgdXAgdG8gdGhlICJfX2dldGl0ZW1fXygpIiBtZXRob2QuIElmXG4gICAqa2V5KiBpcyBvZiBhbiBpbmFwcHJvcHJpYXRlIHR5cGUsICJUeXBlRXJyb3IiIG1heSBiZSByYWlzZWQ7IGlmIG9mXG4gICBhIHZhbHVlIG91dHNpZGUgdGhlIHNldCBvZiBpbmRleGVzIGZvciB0aGUgc2VxdWVuY2UgKGFmdGVyIGFueVxuICAgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZiBuZWdhdGl2ZSB2YWx1ZXMpLCAiSW5kZXhFcnJvciIgc2hvdWxkIGJlXG4gICByYWlzZWQuIEZvciBtYXBwaW5nIHR5cGVzLCBpZiAqa2V5KiBpcyBtaXNzaW5nIChub3QgaW4gdGhlXG4gICBjb250YWluZXIpLCAiS2V5RXJyb3IiIHNob3VsZCBiZSByYWlzZWQuXG5cbiAgIE5vdGU6ICJmb3IiIGxvb3BzIGV4cGVjdCB0aGF0IGFuICJJbmRleEVycm9yIiB3aWxsIGJlIHJhaXNlZCBmb3JcbiAgICAgaWxsZWdhbCBpbmRleGVzIHRvIGFsbG93IHByb3BlciBkZXRlY3Rpb24gb2YgdGhlIGVuZCBvZiB0aGVcbiAgICAgc2VxdWVuY2UuXG5cbm9iamVjdC5fX21pc3NpbmdfXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCBieSAiZGljdCIuIl9fZ2V0aXRlbV9fKCkiIHRvIGltcGxlbWVudCAic2VsZltrZXldIiBmb3IgZGljdFxuICAgc3ViY2xhc3NlcyB3aGVuIGtleSBpcyBub3QgaW4gdGhlIGRpY3Rpb25hcnkuXG5cbm9iamVjdC5fX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IGFzc2lnbm1lbnQgdG8gInNlbGZba2V5XSIuICBTYW1lIG5vdGUgYXMgZm9yXG4gICAiX19nZXRpdGVtX18oKSIuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGZvciBtYXBwaW5ncyBpZlxuICAgdGhlIG9iamVjdHMgc3VwcG9ydCBjaGFuZ2VzIHRvIHRoZSB2YWx1ZXMgZm9yIGtleXMsIG9yIGlmIG5ldyBrZXlzXG4gICBjYW4gYmUgYWRkZWQsIG9yIGZvciBzZXF1ZW5jZXMgaWYgZWxlbWVudHMgY2FuIGJlIHJlcGxhY2VkLiAgVGhlXG4gICBzYW1lIGV4Y2VwdGlvbnMgc2hvdWxkIGJlIHJhaXNlZCBmb3IgaW1wcm9wZXIgKmtleSogdmFsdWVzIGFzIGZvclxuICAgdGhlICJfX2dldGl0ZW1fXygpIiBtZXRob2QuXG5cbm9iamVjdC5fX2RlbGl0ZW1fXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgZGVsZXRpb24gb2YgInNlbGZba2V5XSIuICBTYW1lIG5vdGUgYXMgZm9yXG4gICAiX19nZXRpdGVtX18oKSIuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGZvciBtYXBwaW5ncyBpZlxuICAgdGhlIG9iamVjdHMgc3VwcG9ydCByZW1vdmFsIG9mIGtleXMsIG9yIGZvciBzZXF1ZW5jZXMgaWYgZWxlbWVudHNcbiAgIGNhbiBiZSByZW1vdmVkIGZyb20gdGhlIHNlcXVlbmNlLiAgVGhlIHNhbWUgZXhjZXB0aW9ucyBzaG91bGQgYmVcbiAgIHJhaXNlZCBmb3IgaW1wcm9wZXIgKmtleSogdmFsdWVzIGFzIGZvciB0aGUgIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC5cblxub2JqZWN0Ll9faXRlcl9fKHNlbGYpXG5cbiAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIGFuIGl0ZXJhdG9yIGlzIHJlcXVpcmVkIGZvciBhIGNvbnRhaW5lci5cbiAgIFRoaXMgbWV0aG9kIHNob3VsZCByZXR1cm4gYSBuZXcgaXRlcmF0b3Igb2JqZWN0IHRoYXQgY2FuIGl0ZXJhdGVcbiAgIG92ZXIgYWxsIHRoZSBvYmplY3RzIGluIHRoZSBjb250YWluZXIuICBGb3IgbWFwcGluZ3MsIGl0IHNob3VsZFxuICAgaXRlcmF0ZSBvdmVyIHRoZSBrZXlzIG9mIHRoZSBjb250YWluZXIuXG5cbiAgIEl0ZXJhdG9yIG9iamVjdHMgYWxzbyBuZWVkIHRvIGltcGxlbWVudCB0aGlzIG1ldGhvZDsgdGhleSBhcmVcbiAgIHJlcXVpcmVkIHRvIHJldHVybiB0aGVtc2VsdmVzLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaXRlcmF0b3JcbiAgIG9iamVjdHMsIHNlZSAqSXRlcmF0b3IgVHlwZXMqLlxuXG5vYmplY3QuX19yZXZlcnNlZF9fKHNlbGYpXG5cbiAgIENhbGxlZCAoaWYgcHJlc2VudCkgYnkgdGhlICJyZXZlcnNlZCgpIiBidWlsdC1pbiB0byBpbXBsZW1lbnRcbiAgIHJldmVyc2UgaXRlcmF0aW9uLiAgSXQgc2hvdWxkIHJldHVybiBhIG5ldyBpdGVyYXRvciBvYmplY3QgdGhhdFxuICAgaXRlcmF0ZXMgb3ZlciBhbGwgdGhlIG9iamVjdHMgaW4gdGhlIGNvbnRhaW5lciBpbiByZXZlcnNlIG9yZGVyLlxuXG4gICBJZiB0aGUgIl9fcmV2ZXJzZWRfXygpIiBtZXRob2QgaXMgbm90IHByb3ZpZGVkLCB0aGUgInJldmVyc2VkKCkiXG4gICBidWlsdC1pbiB3aWxsIGZhbGwgYmFjayB0byB1c2luZyB0aGUgc2VxdWVuY2UgcHJvdG9jb2wgKCJfX2xlbl9fKCkiXG4gICBhbmQgIl9fZ2V0aXRlbV9fKCkiKS4gIE9iamVjdHMgdGhhdCBzdXBwb3J0IHRoZSBzZXF1ZW5jZSBwcm90b2NvbFxuICAgc2hvdWxkIG9ubHkgcHJvdmlkZSAiX19yZXZlcnNlZF9fKCkiIGlmIHRoZXkgY2FuIHByb3ZpZGUgYW5cbiAgIGltcGxlbWVudGF0aW9uIHRoYXQgaXMgbW9yZSBlZmZpY2llbnQgdGhhbiB0aGUgb25lIHByb3ZpZGVkIGJ5XG4gICAicmV2ZXJzZWQoKSIuXG5cblRoZSBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzICgiaW4iIGFuZCAibm90IGluIikgYXJlIG5vcm1hbGx5XG5pbXBsZW1lbnRlZCBhcyBhbiBpdGVyYXRpb24gdGhyb3VnaCBhIHNlcXVlbmNlLiAgSG93ZXZlciwgY29udGFpbmVyXG5vYmplY3RzIGNhbiBzdXBwbHkgdGhlIGZvbGxvd2luZyBzcGVjaWFsIG1ldGhvZCB3aXRoIGEgbW9yZSBlZmZpY2llbnRcbmltcGxlbWVudGF0aW9uLCB3aGljaCBhbHNvIGRvZXMgbm90IHJlcXVpcmUgdGhlIG9iamVjdCBiZSBhIHNlcXVlbmNlLlxuXG5vYmplY3QuX19jb250YWluc19fKHNlbGYsIGl0ZW0pXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgbWVtYmVyc2hpcCB0ZXN0IG9wZXJhdG9ycy4gIFNob3VsZCByZXR1cm4gdHJ1ZVxuICAgaWYgKml0ZW0qIGlzIGluICpzZWxmKiwgZmFsc2Ugb3RoZXJ3aXNlLiAgRm9yIG1hcHBpbmcgb2JqZWN0cywgdGhpc1xuICAgc2hvdWxkIGNvbnNpZGVyIHRoZSBrZXlzIG9mIHRoZSBtYXBwaW5nIHJhdGhlciB0aGFuIHRoZSB2YWx1ZXMgb3JcbiAgIHRoZSBrZXktaXRlbSBwYWlycy5cblxuICAgRm9yIG9iamVjdHMgdGhhdCBkb25cJ3QgZGVmaW5lICJfX2NvbnRhaW5zX18oKSIsIHRoZSBtZW1iZXJzaGlwIHRlc3RcbiAgIGZpcnN0IHRyaWVzIGl0ZXJhdGlvbiB2aWEgIl9faXRlcl9fKCkiLCB0aGVuIHRoZSBvbGQgc2VxdWVuY2VcbiAgIGl0ZXJhdGlvbiBwcm90b2NvbCB2aWEgIl9fZ2V0aXRlbV9fKCkiLCBzZWUgKnRoaXMgc2VjdGlvbiBpbiB0aGVcbiAgIGxhbmd1YWdlIHJlZmVyZW5jZSouXG4nLAotICdzaGlmdGluZyc6IHUnXG5TaGlmdGluZyBvcGVyYXRpb25zXG4qKioqKioqKioqKioqKioqKioqXG5cblRoZSBzaGlmdGluZyBvcGVyYXRpb25zIGhhdmUgbG93ZXIgcHJpb3JpdHkgdGhhbiB0aGUgYXJpdGhtZXRpY1xub3BlcmF0aW9uczpcblxuICAgc2hpZnRfZXhwciA6Oj0gYV9leHByIHwgc2hpZnRfZXhwciAoICI8PCIgfCAiPj4iICkgYV9leHByXG5cblRoZXNlIG9wZXJhdG9ycyBhY2NlcHQgaW50ZWdlcnMgYXMgYXJndW1lbnRzLiAgVGhleSBzaGlmdCB0aGUgZmlyc3RcbmFyZ3VtZW50IHRvIHRoZSBsZWZ0IG9yIHJpZ2h0IGJ5IHRoZSBudW1iZXIgb2YgYml0cyBnaXZlbiBieSB0aGVcbnNlY29uZCBhcmd1bWVudC5cblxuQSByaWdodCBzaGlmdCBieSAqbiogYml0cyBpcyBkZWZpbmVkIGFzIGZsb29yIGRpdmlzaW9uIGJ5ICJwb3coMixuKSIuXG5BIGxlZnQgc2hpZnQgYnkgKm4qIGJpdHMgaXMgZGVmaW5lZCBhcyBtdWx0aXBsaWNhdGlvbiB3aXRoICJwb3coMixuKSIuXG5cbk5vdGU6IEluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLCB0aGUgcmlnaHQtaGFuZCBvcGVyYW5kIGlzXG4gIHJlcXVpcmVkIHRvIGJlIGF0IG1vc3QgInN5cy5tYXhzaXplIi4gIElmIHRoZSByaWdodC1oYW5kIG9wZXJhbmQgaXNcbiAgbGFyZ2VyIHRoYW4gInN5cy5tYXhzaXplIiBhbiAiT3ZlcmZsb3dFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZC5cbicsCi0gJ3NsaWNpbmdzJzogdSdcblNsaWNpbmdzXG4qKioqKioqKlxuXG5BIHNsaWNpbmcgc2VsZWN0cyBhIHJhbmdlIG9mIGl0ZW1zIGluIGEgc2VxdWVuY2Ugb2JqZWN0IChlLmcuLCBhXG5zdHJpbmcsIHR1cGxlIG9yIGxpc3QpLiAgU2xpY2luZ3MgbWF5IGJlIHVzZWQgYXMgZXhwcmVzc2lvbnMgb3IgYXNcbnRhcmdldHMgaW4gYXNzaWdubWVudCBvciAiZGVsIiBzdGF0ZW1lbnRzLiAgVGhlIHN5bnRheCBmb3IgYSBzbGljaW5nOlxuXG4gICBzbGljaW5nICAgICAgOjo9IHByaW1hcnkgIlsiIHNsaWNlX2xpc3QgIl0iXG4gICBzbGljZV9saXN0ICAgOjo9IHNsaWNlX2l0ZW0gKCIsIiBzbGljZV9pdGVtKSogWyIsIl1cbiAgIHNsaWNlX2l0ZW0gICA6Oj0gZXhwcmVzc2lvbiB8IHByb3Blcl9zbGljZVxuICAgcHJvcGVyX3NsaWNlIDo6PSBbbG93ZXJfYm91bmRdICI6IiBbdXBwZXJfYm91bmRdIFsgIjoiIFtzdHJpZGVdIF1cbiAgIGxvd2VyX2JvdW5kICA6Oj0gZXhwcmVzc2lvblxuICAgdXBwZXJfYm91bmQgIDo6PSBleHByZXNzaW9uXG4gICBzdHJpZGUgICAgICAgOjo9IGV4cHJlc3Npb25cblxuVGhlcmUgaXMgYW1iaWd1aXR5IGluIHRoZSBmb3JtYWwgc3ludGF4IGhlcmU6IGFueXRoaW5nIHRoYXQgbG9va3MgbGlrZVxuYW4gZXhwcmVzc2lvbiBsaXN0IGFsc28gbG9va3MgbGlrZSBhIHNsaWNlIGxpc3QsIHNvIGFueSBzdWJzY3JpcHRpb25cbmNhbiBiZSBpbnRlcnByZXRlZCBhcyBhIHNsaWNpbmcuICBSYXRoZXIgdGhhbiBmdXJ0aGVyIGNvbXBsaWNhdGluZyB0aGVcbnN5bnRheCwgdGhpcyBpcyBkaXNhbWJpZ3VhdGVkIGJ5IGRlZmluaW5nIHRoYXQgaW4gdGhpcyBjYXNlIHRoZVxuaW50ZXJwcmV0YXRpb24gYXMgYSBzdWJzY3JpcHRpb24gdGFrZXMgcHJpb3JpdHkgb3ZlciB0aGVcbmludGVycHJldGF0aW9uIGFzIGEgc2xpY2luZyAodGhpcyBpcyB0aGUgY2FzZSBpZiB0aGUgc2xpY2UgbGlzdFxuY29udGFpbnMgbm8gcHJvcGVyIHNsaWNlKS5cblxuVGhlIHNlbWFudGljcyBmb3IgYSBzbGljaW5nIGFyZSBhcyBmb2xsb3dzLiAgVGhlIHByaW1hcnkgaXMgaW5kZXhlZFxuKHVzaW5nIHRoZSBzYW1lICJfX2dldGl0ZW1fXygpIiBtZXRob2QgYXMgbm9ybWFsIHN1YnNjcmlwdGlvbikgd2l0aCBhXG5rZXkgdGhhdCBpcyBjb25zdHJ1Y3RlZCBmcm9tIHRoZSBzbGljZSBsaXN0LCBhcyBmb2xsb3dzLiAgSWYgdGhlIHNsaWNlXG5saXN0IGNvbnRhaW5zIGF0IGxlYXN0IG9uZSBjb21tYSwgdGhlIGtleSBpcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlXG5jb252ZXJzaW9uIG9mIHRoZSBzbGljZSBpdGVtczsgb3RoZXJ3aXNlLCB0aGUgY29udmVyc2lvbiBvZiB0aGUgbG9uZVxuc2xpY2UgaXRlbSBpcyB0aGUga2V5LiAgVGhlIGNvbnZlcnNpb24gb2YgYSBzbGljZSBpdGVtIHRoYXQgaXMgYW5cbmV4cHJlc3Npb24gaXMgdGhhdCBleHByZXNzaW9uLiAgVGhlIGNvbnZlcnNpb24gb2YgYSBwcm9wZXIgc2xpY2UgaXMgYVxuc2xpY2Ugb2JqZWN0IChzZWUgc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5Kikgd2hvc2VcbiJzdGFydCIsICJzdG9wIiBhbmQgInN0ZXAiIGF0dHJpYnV0ZXMgYXJlIHRoZSB2YWx1ZXMgb2YgdGhlXG5leHByZXNzaW9ucyBnaXZlbiBhcyBsb3dlciBib3VuZCwgdXBwZXIgYm91bmQgYW5kIHN0cmlkZSxcbnJlc3BlY3RpdmVseSwgc3Vic3RpdHV0aW5nICJOb25lIiBmb3IgbWlzc2luZyBleHByZXNzaW9ucy5cbicsCi0gJ3NwZWNpYWxhdHRycyc6IHUnXG5TcGVjaWFsIEF0dHJpYnV0ZXNcbioqKioqKioqKioqKioqKioqKlxuXG5UaGUgaW1wbGVtZW50YXRpb24gYWRkcyBhIGZldyBzcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzIHRvIHNldmVyYWxcbm9iamVjdCB0eXBlcywgd2hlcmUgdGhleSBhcmUgcmVsZXZhbnQuICBTb21lIG9mIHRoZXNlIGFyZSBub3QgcmVwb3J0ZWRcbmJ5IHRoZSAiZGlyKCkiIGJ1aWx0LWluIGZ1bmN0aW9uLlxuXG5vYmplY3QuX19kaWN0X19cblxuICAgQSBkaWN0aW9uYXJ5IG9yIG90aGVyIG1hcHBpbmcgb2JqZWN0IHVzZWQgdG8gc3RvcmUgYW4gb2JqZWN0XCdzXG4gICAod3JpdGFibGUpIGF0dHJpYnV0ZXMuXG5cbmluc3RhbmNlLl9fY2xhc3NfX1xuXG4gICBUaGUgY2xhc3MgdG8gd2hpY2ggYSBjbGFzcyBpbnN0YW5jZSBiZWxvbmdzLlxuXG5jbGFzcy5fX2Jhc2VzX19cblxuICAgVGhlIHR1cGxlIG9mIGJhc2UgY2xhc3NlcyBvZiBhIGNsYXNzIG9iamVjdC5cblxuY2xhc3MuX19uYW1lX19cblxuICAgVGhlIG5hbWUgb2YgdGhlIGNsYXNzIG9yIHR5cGUuXG5cbmNsYXNzLl9fcXVhbG5hbWVfX1xuXG4gICBUaGUgKnF1YWxpZmllZCBuYW1lKiBvZiB0aGUgY2xhc3Mgb3IgdHlwZS5cblxuICAgTmV3IGluIHZlcnNpb24gMy4zLlxuXG5jbGFzcy5fX21yb19fXG5cbiAgIFRoaXMgYXR0cmlidXRlIGlzIGEgdHVwbGUgb2YgY2xhc3NlcyB0aGF0IGFyZSBjb25zaWRlcmVkIHdoZW5cbiAgIGxvb2tpbmcgZm9yIGJhc2UgY2xhc3NlcyBkdXJpbmcgbWV0aG9kIHJlc29sdXRpb24uXG5cbmNsYXNzLm1ybygpXG5cbiAgIFRoaXMgbWV0aG9kIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGEgbWV0YWNsYXNzIHRvIGN1c3RvbWl6ZSB0aGVcbiAgIG1ldGhvZCByZXNvbHV0aW9uIG9yZGVyIGZvciBpdHMgaW5zdGFuY2VzLiAgSXQgaXMgY2FsbGVkIGF0IGNsYXNzXG4gICBpbnN0YW50aWF0aW9uLCBhbmQgaXRzIHJlc3VsdCBpcyBzdG9yZWQgaW4gIl9fbXJvX18iLlxuXG5jbGFzcy5fX3N1YmNsYXNzZXNfXygpXG5cbiAgIEVhY2ggY2xhc3Mga2VlcHMgYSBsaXN0IG9mIHdlYWsgcmVmZXJlbmNlcyB0byBpdHMgaW1tZWRpYXRlXG4gICBzdWJjbGFzc2VzLiAgVGhpcyBtZXRob2QgcmV0dXJucyBhIGxpc3Qgb2YgYWxsIHRob3NlIHJlZmVyZW5jZXNcbiAgIHN0aWxsIGFsaXZlLiBFeGFtcGxlOlxuXG4gICAgICA+Pj4gaW50Ll9fc3ViY2xhc3Nlc19fKClcbiAgICAgIFs8Y2xhc3MgXCdib29sXCc+XVxuXG4tWyBGb290bm90ZXMgXS1cblxuWzFdIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gdGhlc2Ugc3BlY2lhbCBtZXRob2RzIG1heSBiZSBmb3VuZFxuICAgIGluIHRoZSBQeXRob24gUmVmZXJlbmNlIE1hbnVhbCAoKkJhc2ljIGN1c3RvbWl6YXRpb24qKS5cblxuWzJdIEFzIGEgY29uc2VxdWVuY2UsIHRoZSBsaXN0ICJbMSwgMl0iIGlzIGNvbnNpZGVyZWQgZXF1YWwgdG9cbiAgICAiWzEuMCwgMi4wXSIsIGFuZCBzaW1pbGFybHkgZm9yIHR1cGxlcy5cblxuWzNdIFRoZXkgbXVzdCBoYXZlIHNpbmNlIHRoZSBwYXJzZXIgY2FuXCd0IHRlbGwgdGhlIHR5cGUgb2YgdGhlXG4gICAgb3BlcmFuZHMuXG5cbls0XSBDYXNlZCBjaGFyYWN0ZXJzIGFyZSB0aG9zZSB3aXRoIGdlbmVyYWwgY2F0ZWdvcnkgcHJvcGVydHlcbiAgICBiZWluZyBvbmUgb2YgIkx1IiAoTGV0dGVyLCB1cHBlcmNhc2UpLCAiTGwiIChMZXR0ZXIsIGxvd2VyY2FzZSksXG4gICAgb3IgIkx0IiAoTGV0dGVyLCB0aXRsZWNhc2UpLlxuXG5bNV0gVG8gZm9ybWF0IG9ubHkgYSB0dXBsZSB5b3Ugc2hvdWxkIHRoZXJlZm9yZSBwcm92aWRlIGFcbiAgICBzaW5nbGV0b24gdHVwbGUgd2hvc2Ugb25seSBlbGVtZW50IGlzIHRoZSB0dXBsZSB0byBiZSBmb3JtYXR0ZWQuXG4nLAotICdzcGVjaWFsbmFtZXMnOiB1J1xuU3BlY2lhbCBtZXRob2QgbmFtZXNcbioqKioqKioqKioqKioqKioqKioqXG5cbkEgY2xhc3MgY2FuIGltcGxlbWVudCBjZXJ0YWluIG9wZXJhdGlvbnMgdGhhdCBhcmUgaW52b2tlZCBieSBzcGVjaWFsXG5zeW50YXggKHN1Y2ggYXMgYXJpdGhtZXRpYyBvcGVyYXRpb25zIG9yIHN1YnNjcmlwdGluZyBhbmQgc2xpY2luZykgYnlcbmRlZmluaW5nIG1ldGhvZHMgd2l0aCBzcGVjaWFsIG5hbWVzLiBUaGlzIGlzIFB5dGhvblwncyBhcHByb2FjaCB0b1xuKm9wZXJhdG9yIG92ZXJsb2FkaW5nKiwgYWxsb3dpbmcgY2xhc3NlcyB0byBkZWZpbmUgdGhlaXIgb3duIGJlaGF2aW9yXG53aXRoIHJlc3BlY3QgdG8gbGFuZ3VhZ2Ugb3BlcmF0b3JzLiAgRm9yIGluc3RhbmNlLCBpZiBhIGNsYXNzIGRlZmluZXNcbmEgbWV0aG9kIG5hbWVkICJfX2dldGl0ZW1fXygpIiwgYW5kICJ4IiBpcyBhbiBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzLFxudGhlbiAieFtpXSIgaXMgcm91Z2hseSBlcXVpdmFsZW50IHRvICJ0eXBlKHgpLl9fZ2V0aXRlbV9fKHgsIGkpIi5cbkV4Y2VwdCB3aGVyZSBtZW50aW9uZWQsIGF0dGVtcHRzIHRvIGV4ZWN1dGUgYW4gb3BlcmF0aW9uIHJhaXNlIGFuXG5leGNlcHRpb24gd2hlbiBubyBhcHByb3ByaWF0ZSBtZXRob2QgaXMgZGVmaW5lZCAodHlwaWNhbGx5XG4iQXR0cmlidXRlRXJyb3IiIG9yICJUeXBlRXJyb3IiKS5cblxuV2hlbiBpbXBsZW1lbnRpbmcgYSBjbGFzcyB0aGF0IGVtdWxhdGVzIGFueSBidWlsdC1pbiB0eXBlLCBpdCBpc1xuaW1wb3J0YW50IHRoYXQgdGhlIGVtdWxhdGlvbiBvbmx5IGJlIGltcGxlbWVudGVkIHRvIHRoZSBkZWdyZWUgdGhhdCBpdFxubWFrZXMgc2Vuc2UgZm9yIHRoZSBvYmplY3QgYmVpbmcgbW9kZWxsZWQuICBGb3IgZXhhbXBsZSwgc29tZVxuc2VxdWVuY2VzIG1heSB3b3JrIHdlbGwgd2l0aCByZXRyaWV2YWwgb2YgaW5kaXZpZHVhbCBlbGVtZW50cywgYnV0XG5leHRyYWN0aW5nIGEgc2xpY2UgbWF5IG5vdCBtYWtlIHNlbnNlLiAgKE9uZSBleGFtcGxlIG9mIHRoaXMgaXMgdGhlXG4iTm9kZUxpc3QiIGludGVyZmFjZSBpbiB0aGUgVzNDXCdzIERvY3VtZW50IE9iamVjdCBNb2RlbC4pXG5cblxuQmFzaWMgY3VzdG9taXphdGlvblxuPT09PT09PT09PT09PT09PT09PVxuXG5vYmplY3QuX19uZXdfXyhjbHNbLCAuLi5dKVxuXG4gICBDYWxsZWQgdG8gY3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIGNsYXNzICpjbHMqLiAgIl9fbmV3X18oKSIgaXMgYVxuICAgc3RhdGljIG1ldGhvZCAoc3BlY2lhbC1jYXNlZCBzbyB5b3UgbmVlZCBub3QgZGVjbGFyZSBpdCBhcyBzdWNoKVxuICAgdGhhdCB0YWtlcyB0aGUgY2xhc3Mgb2Ygd2hpY2ggYW4gaW5zdGFuY2Ugd2FzIHJlcXVlc3RlZCBhcyBpdHNcbiAgIGZpcnN0IGFyZ3VtZW50LiAgVGhlIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRob3NlIHBhc3NlZCB0byB0aGVcbiAgIG9iamVjdCBjb25zdHJ1Y3RvciBleHByZXNzaW9uICh0aGUgY2FsbCB0byB0aGUgY2xhc3MpLiAgVGhlIHJldHVyblxuICAgdmFsdWUgb2YgIl9fbmV3X18oKSIgc2hvdWxkIGJlIHRoZSBuZXcgb2JqZWN0IGluc3RhbmNlICh1c3VhbGx5IGFuXG4gICBpbnN0YW5jZSBvZiAqY2xzKikuXG5cbiAgIFR5cGljYWwgaW1wbGVtZW50YXRpb25zIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgY2xhc3MgYnlcbiAgIGludm9raW5nIHRoZSBzdXBlcmNsYXNzXCdzICJfX25ld19fKCkiIG1ldGhvZCB1c2luZ1xuICAgInN1cGVyKGN1cnJlbnRjbGFzcywgY2xzKS5fX25ld19fKGNsc1ssIC4uLl0pIiB3aXRoIGFwcHJvcHJpYXRlXG4gICBhcmd1bWVudHMgYW5kIHRoZW4gbW9kaWZ5aW5nIHRoZSBuZXdseS1jcmVhdGVkIGluc3RhbmNlIGFzXG4gICBuZWNlc3NhcnkgYmVmb3JlIHJldHVybmluZyBpdC5cblxuICAgSWYgIl9fbmV3X18oKSIgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgdGhlbiB0aGUgbmV3XG4gICBpbnN0YW5jZVwncyAiX19pbml0X18oKSIgbWV0aG9kIHdpbGwgYmUgaW52b2tlZCBsaWtlXG4gICAiX19pbml0X18oc2VsZlssIC4uLl0pIiwgd2hlcmUgKnNlbGYqIGlzIHRoZSBuZXcgaW5zdGFuY2UgYW5kIHRoZVxuICAgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgd2VyZSBwYXNzZWQgdG8gIl9fbmV3X18oKSIuXG5cbiAgIElmICJfX25ld19fKCkiIGRvZXMgbm90IHJldHVybiBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgdGhlbiB0aGUgbmV3XG4gICBpbnN0YW5jZVwncyAiX19pbml0X18oKSIgbWV0aG9kIHdpbGwgbm90IGJlIGludm9rZWQuXG5cbiAgICJfX25ld19fKCkiIGlzIGludGVuZGVkIG1haW5seSB0byBhbGxvdyBzdWJjbGFzc2VzIG9mIGltbXV0YWJsZVxuICAgdHlwZXMgKGxpa2UgaW50LCBzdHIsIG9yIHR1cGxlKSB0byBjdXN0b21pemUgaW5zdGFuY2UgY3JlYXRpb24uICBJdFxuICAgaXMgYWxzbyBjb21tb25seSBvdmVycmlkZGVuIGluIGN1c3RvbSBtZXRhY2xhc3NlcyBpbiBvcmRlciB0b1xuICAgY3VzdG9taXplIGNsYXNzIGNyZWF0aW9uLlxuXG5vYmplY3QuX19pbml0X18oc2VsZlssIC4uLl0pXG5cbiAgIENhbGxlZCBhZnRlciB0aGUgaW5zdGFuY2UgaGFzIGJlZW4gY3JlYXRlZCAoYnkgIl9fbmV3X18oKSIpLCBidXRcbiAgIGJlZm9yZSBpdCBpcyByZXR1cm5lZCB0byB0aGUgY2FsbGVyLiAgVGhlIGFyZ3VtZW50cyBhcmUgdGhvc2VcbiAgIHBhc3NlZCB0byB0aGUgY2xhc3MgY29uc3RydWN0b3IgZXhwcmVzc2lvbi4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYW5cbiAgICJfX2luaXRfXygpIiBtZXRob2QsIHRoZSBkZXJpdmVkIGNsYXNzXCdzICJfX2luaXRfXygpIiBtZXRob2QsIGlmXG4gICBhbnksIG11c3QgZXhwbGljaXRseSBjYWxsIGl0IHRvIGVuc3VyZSBwcm9wZXIgaW5pdGlhbGl6YXRpb24gb2YgdGhlXG4gICBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlIGluc3RhbmNlOyBmb3IgZXhhbXBsZTpcbiAgICJCYXNlQ2xhc3MuX19pbml0X18oc2VsZiwgW2FyZ3MuLi5dKSIuXG5cbiAgIEJlY2F1c2UgIl9fbmV3X18oKSIgYW5kICJfX2luaXRfXygpIiB3b3JrIHRvZ2V0aGVyIGluIGNvbnN0cnVjdGluZ1xuICAgb2JqZWN0cyAoIl9fbmV3X18oKSIgdG8gY3JlYXRlIGl0LCBhbmQgIl9faW5pdF9fKCkiIHRvIGN1c3RvbWlzZVxuICAgaXQpLCBubyBub24tIk5vbmUiIHZhbHVlIG1heSBiZSByZXR1cm5lZCBieSAiX19pbml0X18oKSI7IGRvaW5nIHNvXG4gICB3aWxsIGNhdXNlIGEgIlR5cGVFcnJvciIgdG8gYmUgcmFpc2VkIGF0IHJ1bnRpbWUuXG5cbm9iamVjdC5fX2RlbF9fKHNlbGYpXG5cbiAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyBhYm91dCB0byBiZSBkZXN0cm95ZWQuICBUaGlzIGlzIGFsc29cbiAgIGNhbGxlZCBhIGRlc3RydWN0b3IuICBJZiBhIGJhc2UgY2xhc3MgaGFzIGEgIl9fZGVsX18oKSIgbWV0aG9kLCB0aGVcbiAgIGRlcml2ZWQgY2xhc3NcJ3MgIl9fZGVsX18oKSIgbWV0aG9kLCBpZiBhbnksIG11c3QgZXhwbGljaXRseSBjYWxsIGl0XG4gICB0byBlbnN1cmUgcHJvcGVyIGRlbGV0aW9uIG9mIHRoZSBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlIGluc3RhbmNlLlxuICAgTm90ZSB0aGF0IGl0IGlzIHBvc3NpYmxlICh0aG91Z2ggbm90IHJlY29tbWVuZGVkISkgZm9yIHRoZVxuICAgIl9fZGVsX18oKSIgbWV0aG9kIHRvIHBvc3Rwb25lIGRlc3RydWN0aW9uIG9mIHRoZSBpbnN0YW5jZSBieVxuICAgY3JlYXRpbmcgYSBuZXcgcmVmZXJlbmNlIHRvIGl0LiAgSXQgbWF5IHRoZW4gYmUgY2FsbGVkIGF0IGEgbGF0ZXJcbiAgIHRpbWUgd2hlbiB0aGlzIG5ldyByZWZlcmVuY2UgaXMgZGVsZXRlZC4gIEl0IGlzIG5vdCBndWFyYW50ZWVkIHRoYXRcbiAgICJfX2RlbF9fKCkiIG1ldGhvZHMgYXJlIGNhbGxlZCBmb3Igb2JqZWN0cyB0aGF0IHN0aWxsIGV4aXN0IHdoZW5cbiAgIHRoZSBpbnRlcnByZXRlciBleGl0cy5cblxuICAgTm90ZTogImRlbCB4IiBkb2VzblwndCBkaXJlY3RseSBjYWxsICJ4Ll9fZGVsX18oKSIgLS0tIHRoZSBmb3JtZXJcbiAgICAgZGVjcmVtZW50cyB0aGUgcmVmZXJlbmNlIGNvdW50IGZvciAieCIgYnkgb25lLCBhbmQgdGhlIGxhdHRlciBpc1xuICAgICBvbmx5IGNhbGxlZCB3aGVuICJ4IlwncyByZWZlcmVuY2UgY291bnQgcmVhY2hlcyB6ZXJvLiAgU29tZSBjb21tb25cbiAgICAgc2l0dWF0aW9ucyB0aGF0IG1heSBwcmV2ZW50IHRoZSByZWZlcmVuY2UgY291bnQgb2YgYW4gb2JqZWN0IGZyb21cbiAgICAgZ29pbmcgdG8gemVybyBpbmNsdWRlOiBjaXJjdWxhciByZWZlcmVuY2VzIGJldHdlZW4gb2JqZWN0cyAoZS5nLixcbiAgICAgYSBkb3VibHktbGlua2VkIGxpc3Qgb3IgYSB0cmVlIGRhdGEgc3RydWN0dXJlIHdpdGggcGFyZW50IGFuZFxuICAgICBjaGlsZCBwb2ludGVycyk7IGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3Qgb24gdGhlIHN0YWNrIGZyYW1lIG9mXG4gICAgIGEgZnVuY3Rpb24gdGhhdCBjYXVnaHQgYW4gZXhjZXB0aW9uICh0aGUgdHJhY2ViYWNrIHN0b3JlZCBpblxuICAgICAic3lzLmV4Y19pbmZvKClbMl0iIGtlZXBzIHRoZSBzdGFjayBmcmFtZSBhbGl2ZSk7IG9yIGEgcmVmZXJlbmNlXG4gICAgIHRvIHRoZSBvYmplY3Qgb24gdGhlIHN0YWNrIGZyYW1lIHRoYXQgcmFpc2VkIGFuIHVuaGFuZGxlZFxuICAgICBleGNlcHRpb24gaW4gaW50ZXJhY3RpdmUgbW9kZSAodGhlIHRyYWNlYmFjayBzdG9yZWQgaW5cbiAgICAgInN5cy5sYXN0X3RyYWNlYmFjayIga2VlcHMgdGhlIHN0YWNrIGZyYW1lIGFsaXZlKS4gIFRoZSBmaXJzdFxuICAgICBzaXR1YXRpb24gY2FuIG9ubHkgYmUgcmVtZWRpZWQgYnkgZXhwbGljaXRseSBicmVha2luZyB0aGUgY3ljbGVzO1xuICAgICB0aGUgc2Vjb25kIGNhbiBiZSByZXNvbHZlZCBieSBmcmVlaW5nIHRoZSByZWZlcmVuY2UgdG8gdGhlXG4gICAgIHRyYWNlYmFjayBvYmplY3Qgd2hlbiBpdCBpcyBubyBsb25nZXIgdXNlZnVsLCBhbmQgdGhlIHRoaXJkIGNhblxuICAgICBiZSByZXNvbHZlZCBieSBzdG9yaW5nICJOb25lIiBpbiAic3lzLmxhc3RfdHJhY2ViYWNrIi4gQ2lyY3VsYXJcbiAgICAgcmVmZXJlbmNlcyB3aGljaCBhcmUgZ2FyYmFnZSBhcmUgZGV0ZWN0ZWQgYW5kIGNsZWFuZWQgdXAgd2hlbiB0aGVcbiAgICAgY3ljbGljIGdhcmJhZ2UgY29sbGVjdG9yIGlzIGVuYWJsZWQgKGl0XCdzIG9uIGJ5IGRlZmF1bHQpLiBSZWZlclxuICAgICB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlICJnYyIgbW9kdWxlIGZvciBtb3JlIGluZm9ybWF0aW9uXG4gICAgIGFib3V0IHRoaXMgdG9waWMuXG5cbiAgIFdhcm5pbmc6IER1ZSB0byB0aGUgcHJlY2FyaW91cyBjaXJjdW1zdGFuY2VzIHVuZGVyIHdoaWNoXG4gICAgICJfX2RlbF9fKCkiIG1ldGhvZHMgYXJlIGludm9rZWQsIGV4Y2VwdGlvbnMgdGhhdCBvY2N1ciBkdXJpbmdcbiAgICAgdGhlaXIgZXhlY3V0aW9uIGFyZSBpZ25vcmVkLCBhbmQgYSB3YXJuaW5nIGlzIHByaW50ZWQgdG9cbiAgICAgInN5cy5zdGRlcnIiIGluc3RlYWQuIEFsc28sIHdoZW4gIl9fZGVsX18oKSIgaXMgaW52b2tlZCBpblxuICAgICByZXNwb25zZSB0byBhIG1vZHVsZSBiZWluZyBkZWxldGVkIChlLmcuLCB3aGVuIGV4ZWN1dGlvbiBvZiB0aGVcbiAgICAgcHJvZ3JhbSBpcyBkb25lKSwgb3RoZXIgZ2xvYmFscyByZWZlcmVuY2VkIGJ5IHRoZSAiX19kZWxfXygpIlxuICAgICBtZXRob2QgbWF5IGFscmVhZHkgaGF2ZSBiZWVuIGRlbGV0ZWQgb3IgaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmdcbiAgICAgdG9ybiBkb3duIChlLmcuIHRoZSBpbXBvcnQgbWFjaGluZXJ5IHNodXR0aW5nIGRvd24pLiAgRm9yIHRoaXNcbiAgICAgcmVhc29uLCAiX19kZWxfXygpIiBtZXRob2RzIHNob3VsZCBkbyB0aGUgYWJzb2x1dGUgbWluaW11bSBuZWVkZWRcbiAgICAgdG8gbWFpbnRhaW4gZXh0ZXJuYWwgaW52YXJpYW50cy4gIFN0YXJ0aW5nIHdpdGggdmVyc2lvbiAxLjUsXG4gICAgIFB5dGhvbiBndWFyYW50ZWVzIHRoYXQgZ2xvYmFscyB3aG9zZSBuYW1lIGJlZ2lucyB3aXRoIGEgc2luZ2xlXG4gICAgIHVuZGVyc2NvcmUgYXJlIGRlbGV0ZWQgZnJvbSB0aGVpciBtb2R1bGUgYmVmb3JlIG90aGVyIGdsb2JhbHMgYXJlXG4gICAgIGRlbGV0ZWQ7IGlmIG5vIG90aGVyIHJlZmVyZW5jZXMgdG8gc3VjaCBnbG9iYWxzIGV4aXN0LCB0aGlzIG1heVxuICAgICBoZWxwIGluIGFzc3VyaW5nIHRoYXQgaW1wb3J0ZWQgbW9kdWxlcyBhcmUgc3RpbGwgYXZhaWxhYmxlIGF0IHRoZVxuICAgICB0aW1lIHdoZW4gdGhlICJfX2RlbF9fKCkiIG1ldGhvZCBpcyBjYWxsZWQuXG5cbm9iamVjdC5fX3JlcHJfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgdGhlICJyZXByKCkiIGJ1aWx0LWluIGZ1bmN0aW9uIHRvIGNvbXB1dGUgdGhlICJvZmZpY2lhbCJcbiAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuICBJZiBhdCBhbGwgcG9zc2libGUsIHRoaXNcbiAgIHNob3VsZCBsb29rIGxpa2UgYSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbiB0aGF0IGNvdWxkIGJlIHVzZWQgdG9cbiAgIHJlY3JlYXRlIGFuIG9iamVjdCB3aXRoIHRoZSBzYW1lIHZhbHVlIChnaXZlbiBhbiBhcHByb3ByaWF0ZVxuICAgZW52aXJvbm1lbnQpLiAgSWYgdGhpcyBpcyBub3QgcG9zc2libGUsIGEgc3RyaW5nIG9mIHRoZSBmb3JtXG4gICAiPC4uLnNvbWUgdXNlZnVsIGRlc2NyaXB0aW9uLi4uPiIgc2hvdWxkIGJlIHJldHVybmVkLiBUaGUgcmV0dXJuXG4gICB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9iamVjdC4gSWYgYSBjbGFzcyBkZWZpbmVzICJfX3JlcHJfXygpIiBidXRcbiAgIG5vdCAiX19zdHJfXygpIiwgdGhlbiAiX19yZXByX18oKSIgaXMgYWxzbyB1c2VkIHdoZW4gYW4gImluZm9ybWFsIlxuICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGluc3RhbmNlcyBvZiB0aGF0IGNsYXNzIGlzIHJlcXVpcmVkLlxuXG4gICBUaGlzIGlzIHR5cGljYWxseSB1c2VkIGZvciBkZWJ1Z2dpbmcsIHNvIGl0IGlzIGltcG9ydGFudCB0aGF0IHRoZVxuICAgcmVwcmVzZW50YXRpb24gaXMgaW5mb3JtYXRpb24tcmljaCBhbmQgdW5hbWJpZ3VvdXMuXG5cbm9iamVjdC5fX3N0cl9fKHNlbGYpXG5cbiAgIENhbGxlZCBieSAic3RyKG9iamVjdCkiIGFuZCB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zICJmb3JtYXQoKSIgYW5kXG4gICAicHJpbnQoKSIgdG8gY29tcHV0ZSB0aGUgImluZm9ybWFsIiBvciBuaWNlbHkgcHJpbnRhYmxlIHN0cmluZ1xuICAgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LiAgVGhlIHJldHVybiB2YWx1ZSBtdXN0IGJlIGEgKnN0cmluZypcbiAgIG9iamVjdC5cblxuICAgVGhpcyBtZXRob2QgZGlmZmVycyBmcm9tICJvYmplY3QuX19yZXByX18oKSIgaW4gdGhhdCB0aGVyZSBpcyBub1xuICAgZXhwZWN0YXRpb24gdGhhdCAiX19zdHJfXygpIiByZXR1cm4gYSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbjogYVxuICAgbW9yZSBjb252ZW5pZW50IG9yIGNvbmNpc2UgcmVwcmVzZW50YXRpb24gY2FuIGJlIHVzZWQuXG5cbiAgIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGRlZmluZWQgYnkgdGhlIGJ1aWx0LWluIHR5cGUgIm9iamVjdCJcbiAgIGNhbGxzICJvYmplY3QuX19yZXByX18oKSIuXG5cbm9iamVjdC5fX2J5dGVzX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5ICJieXRlcygpIiB0byBjb21wdXRlIGEgYnl0ZS1zdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW5cbiAgIG9iamVjdC4gVGhpcyBzaG91bGQgcmV0dXJuIGEgImJ5dGVzIiBvYmplY3QuXG5cbm9iamVjdC5fX2Zvcm1hdF9fKHNlbGYsIGZvcm1hdF9zcGVjKVxuXG4gICBDYWxsZWQgYnkgdGhlICJmb3JtYXQoKSIgYnVpbHQtaW4gZnVuY3Rpb24gKGFuZCBieSBleHRlbnNpb24sIHRoZVxuICAgInN0ci5mb3JtYXQoKSIgbWV0aG9kIG9mIGNsYXNzICJzdHIiKSB0byBwcm9kdWNlIGEgImZvcm1hdHRlZCJcbiAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuIFRoZSAiZm9ybWF0X3NwZWMiIGFyZ3VtZW50IGlzIGFcbiAgIHN0cmluZyB0aGF0IGNvbnRhaW5zIGEgZGVzY3JpcHRpb24gb2YgdGhlIGZvcm1hdHRpbmcgb3B0aW9uc1xuICAgZGVzaXJlZC4gVGhlIGludGVycHJldGF0aW9uIG9mIHRoZSAiZm9ybWF0X3NwZWMiIGFyZ3VtZW50IGlzIHVwIHRvXG4gICB0aGUgdHlwZSBpbXBsZW1lbnRpbmcgIl9fZm9ybWF0X18oKSIsIGhvd2V2ZXIgbW9zdCBjbGFzc2VzIHdpbGxcbiAgIGVpdGhlciBkZWxlZ2F0ZSBmb3JtYXR0aW5nIHRvIG9uZSBvZiB0aGUgYnVpbHQtaW4gdHlwZXMsIG9yIHVzZSBhXG4gICBzaW1pbGFyIGZvcm1hdHRpbmcgb3B0aW9uIHN5bnRheC5cblxuICAgU2VlICpGb3JtYXQgU3BlY2lmaWNhdGlvbiBNaW5pLUxhbmd1YWdlKiBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGVcbiAgIHN0YW5kYXJkIGZvcm1hdHRpbmcgc3ludGF4LlxuXG4gICBUaGUgcmV0dXJuIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2JqZWN0LlxuXG4gICBDaGFuZ2VkIGluIHZlcnNpb24gMy40OiBUaGUgX19mb3JtYXRfXyBtZXRob2Qgb2YgIm9iamVjdCIgaXRzZWxmXG4gICByYWlzZXMgYSAiVHlwZUVycm9yIiBpZiBwYXNzZWQgYW55IG5vbi1lbXB0eSBzdHJpbmcuXG5cbm9iamVjdC5fX2x0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19sZV9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZXFfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX25lX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ndF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZ2VfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgYXJlIHRoZSBzby1jYWxsZWQgInJpY2ggY29tcGFyaXNvbiIgbWV0aG9kcy4gVGhlXG4gICBjb3JyZXNwb25kZW5jZSBiZXR3ZWVuIG9wZXJhdG9yIHN5bWJvbHMgYW5kIG1ldGhvZCBuYW1lcyBpcyBhc1xuICAgZm9sbG93czogIng8eSIgY2FsbHMgInguX19sdF9fKHkpIiwgIng8PXkiIGNhbGxzICJ4Ll9fbGVfXyh5KSIsXG4gICAieD09eSIgY2FsbHMgInguX19lcV9fKHkpIiwgInghPXkiIGNhbGxzICJ4Ll9fbmVfXyh5KSIsICJ4PnkiIGNhbGxzXG4gICAieC5fX2d0X18oeSkiLCBhbmQgIng+PXkiIGNhbGxzICJ4Ll9fZ2VfXyh5KSIuXG5cbiAgIEEgcmljaCBjb21wYXJpc29uIG1ldGhvZCBtYXkgcmV0dXJuIHRoZSBzaW5nbGV0b24gIk5vdEltcGxlbWVudGVkIlxuICAgaWYgaXQgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBvcGVyYXRpb24gZm9yIGEgZ2l2ZW4gcGFpciBvZlxuICAgYXJndW1lbnRzLiBCeSBjb252ZW50aW9uLCAiRmFsc2UiIGFuZCAiVHJ1ZSIgYXJlIHJldHVybmVkIGZvciBhXG4gICBzdWNjZXNzZnVsIGNvbXBhcmlzb24uIEhvd2V2ZXIsIHRoZXNlIG1ldGhvZHMgY2FuIHJldHVybiBhbnkgdmFsdWUsXG4gICBzbyBpZiB0aGUgY29tcGFyaXNvbiBvcGVyYXRvciBpcyB1c2VkIGluIGEgQm9vbGVhbiBjb250ZXh0IChlLmcuLFxuICAgaW4gdGhlIGNvbmRpdGlvbiBvZiBhbiAiaWYiIHN0YXRlbWVudCksIFB5dGhvbiB3aWxsIGNhbGwgImJvb2woKSJcbiAgIG9uIHRoZSB2YWx1ZSB0byBkZXRlcm1pbmUgaWYgdGhlIHJlc3VsdCBpcyB0cnVlIG9yIGZhbHNlLlxuXG4gICBCeSBkZWZhdWx0LCAiX19uZV9fKCkiIGRlbGVnYXRlcyB0byAiX19lcV9fKCkiIGFuZCBpbnZlcnRzIHRoZVxuICAgcmVzdWx0IHVubGVzcyBpdCBpcyAiTm90SW1wbGVtZW50ZWQiLiAgVGhlcmUgYXJlIG5vIG90aGVyIGltcGxpZWRcbiAgIHJlbGF0aW9uc2hpcHMgYW1vbmcgdGhlIGNvbXBhcmlzb24gb3BlcmF0b3JzLCBmb3IgZXhhbXBsZSwgdGhlXG4gICB0cnV0aCBvZiAiKHg8eSBvciB4PT15KSIgZG9lcyBub3QgaW1wbHkgIng8PXkiLiBUbyBhdXRvbWF0aWNhbGx5XG4gICBnZW5lcmF0ZSBvcmRlcmluZyBvcGVyYXRpb25zIGZyb20gYSBzaW5nbGUgcm9vdCBvcGVyYXRpb24sIHNlZVxuICAgImZ1bmN0b29scy50b3RhbF9vcmRlcmluZygpIi5cblxuICAgU2VlIHRoZSBwYXJhZ3JhcGggb24gIl9faGFzaF9fKCkiIGZvciBzb21lIGltcG9ydGFudCBub3RlcyBvblxuICAgY3JlYXRpbmcgKmhhc2hhYmxlKiBvYmplY3RzIHdoaWNoIHN1cHBvcnQgY3VzdG9tIGNvbXBhcmlzb25cbiAgIG9wZXJhdGlvbnMgYW5kIGFyZSB1c2FibGUgYXMgZGljdGlvbmFyeSBrZXlzLlxuXG4gICBUaGVyZSBhcmUgbm8gc3dhcHBlZC1hcmd1bWVudCB2ZXJzaW9ucyBvZiB0aGVzZSBtZXRob2RzICh0byBiZSB1c2VkXG4gICB3aGVuIHRoZSBsZWZ0IGFyZ3VtZW50IGRvZXMgbm90IHN1cHBvcnQgdGhlIG9wZXJhdGlvbiBidXQgdGhlIHJpZ2h0XG4gICBhcmd1bWVudCBkb2VzKTsgcmF0aGVyLCAiX19sdF9fKCkiIGFuZCAiX19ndF9fKCkiIGFyZSBlYWNoIG90aGVyXCdzXG4gICByZWZsZWN0aW9uLCAiX19sZV9fKCkiIGFuZCAiX19nZV9fKCkiIGFyZSBlYWNoIG90aGVyXCdzIHJlZmxlY3Rpb24sXG4gICBhbmQgIl9fZXFfXygpIiBhbmQgIl9fbmVfXygpIiBhcmUgdGhlaXIgb3duIHJlZmxlY3Rpb24uIElmIHRoZVxuICAgb3BlcmFuZHMgYXJlIG9mIGRpZmZlcmVudCB0eXBlcywgYW5kIHJpZ2h0IG9wZXJhbmRcJ3MgdHlwZSBpcyBhXG4gICBkaXJlY3Qgb3IgaW5kaXJlY3Qgc3ViY2xhc3Mgb2YgdGhlIGxlZnQgb3BlcmFuZFwncyB0eXBlLCB0aGVcbiAgIHJlZmxlY3RlZCBtZXRob2Qgb2YgdGhlIHJpZ2h0IG9wZXJhbmQgaGFzIHByaW9yaXR5LCBvdGhlcndpc2UgdGhlXG4gICBsZWZ0IG9wZXJhbmRcJ3MgbWV0aG9kIGhhcyBwcmlvcml0eS4gIFZpcnR1YWwgc3ViY2xhc3NpbmcgaXMgbm90XG4gICBjb25zaWRlcmVkLlxuXG5vYmplY3QuX19oYXNoX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IGJ1aWx0LWluIGZ1bmN0aW9uICJoYXNoKCkiIGFuZCBmb3Igb3BlcmF0aW9ucyBvbiBtZW1iZXJzXG4gICBvZiBoYXNoZWQgY29sbGVjdGlvbnMgaW5jbHVkaW5nICJzZXQiLCAiZnJvemVuc2V0IiwgYW5kICJkaWN0Ii5cbiAgICJfX2hhc2hfXygpIiBzaG91bGQgcmV0dXJuIGFuIGludGVnZXIuICBUaGUgb25seSByZXF1aXJlZCBwcm9wZXJ0eVxuICAgaXMgdGhhdCBvYmplY3RzIHdoaWNoIGNvbXBhcmUgZXF1YWwgaGF2ZSB0aGUgc2FtZSBoYXNoIHZhbHVlOyBpdCBpc1xuICAgYWR2aXNlZCB0byBzb21laG93IG1peCB0b2dldGhlciAoZS5nLiB1c2luZyBleGNsdXNpdmUgb3IpIHRoZSBoYXNoXG4gICB2YWx1ZXMgZm9yIHRoZSBjb21wb25lbnRzIG9mIHRoZSBvYmplY3QgdGhhdCBhbHNvIHBsYXkgYSBwYXJ0IGluXG4gICBjb21wYXJpc29uIG9mIG9iamVjdHMuXG5cbiAgIE5vdGU6ICJoYXNoKCkiIHRydW5jYXRlcyB0aGUgdmFsdWUgcmV0dXJuZWQgZnJvbSBhbiBvYmplY3RcJ3NcbiAgICAgY3VzdG9tICJfX2hhc2hfXygpIiBtZXRob2QgdG8gdGhlIHNpemUgb2YgYSAiUHlfc3NpemVfdCIuICBUaGlzXG4gICAgIGlzIHR5cGljYWxseSA4IGJ5dGVzIG9uIDY0LWJpdCBidWlsZHMgYW5kIDQgYnl0ZXMgb24gMzItYml0XG4gICAgIGJ1aWxkcy4gSWYgYW4gb2JqZWN0XCdzICAgIl9faGFzaF9fKCkiIG11c3QgaW50ZXJvcGVyYXRlIG9uIGJ1aWxkc1xuICAgICBvZiBkaWZmZXJlbnQgYml0IHNpemVzLCBiZSBzdXJlIHRvIGNoZWNrIHRoZSB3aWR0aCBvbiBhbGxcbiAgICAgc3VwcG9ydGVkIGJ1aWxkcy4gIEFuIGVhc3kgd2F5IHRvIGRvIHRoaXMgaXMgd2l0aCAicHl0aG9uIC1jXG4gICAgICJpbXBvcnQgc3lzOyBwcmludChzeXMuaGFzaF9pbmZvLndpZHRoKSIiLlxuXG4gICBJZiBhIGNsYXNzIGRvZXMgbm90IGRlZmluZSBhbiAiX19lcV9fKCkiIG1ldGhvZCBpdCBzaG91bGQgbm90XG4gICBkZWZpbmUgYSAiX19oYXNoX18oKSIgb3BlcmF0aW9uIGVpdGhlcjsgaWYgaXQgZGVmaW5lcyAiX19lcV9fKCkiXG4gICBidXQgbm90ICJfX2hhc2hfXygpIiwgaXRzIGluc3RhbmNlcyB3aWxsIG5vdCBiZSB1c2FibGUgYXMgaXRlbXMgaW5cbiAgIGhhc2hhYmxlIGNvbGxlY3Rpb25zLiAgSWYgYSBjbGFzcyBkZWZpbmVzIG11dGFibGUgb2JqZWN0cyBhbmRcbiAgIGltcGxlbWVudHMgYW4gIl9fZXFfXygpIiBtZXRob2QsIGl0IHNob3VsZCBub3QgaW1wbGVtZW50XG4gICAiX19oYXNoX18oKSIsIHNpbmNlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBoYXNoYWJsZSBjb2xsZWN0aW9uc1xuICAgcmVxdWlyZXMgdGhhdCBhIGtleVwncyBoYXNoIHZhbHVlIGlzIGltbXV0YWJsZSAoaWYgdGhlIG9iamVjdFwncyBoYXNoXG4gICB2YWx1ZSBjaGFuZ2VzLCBpdCB3aWxsIGJlIGluIHRoZSB3cm9uZyBoYXNoIGJ1Y2tldCkuXG5cbiAgIFVzZXItZGVmaW5lZCBjbGFzc2VzIGhhdmUgIl9fZXFfXygpIiBhbmQgIl9faGFzaF9fKCkiIG1ldGhvZHMgYnlcbiAgIGRlZmF1bHQ7IHdpdGggdGhlbSwgYWxsIG9iamVjdHMgY29tcGFyZSB1bmVxdWFsIChleGNlcHQgd2l0aFxuICAgdGhlbXNlbHZlcykgYW5kICJ4Ll9faGFzaF9fKCkiIHJldHVybnMgYW4gYXBwcm9wcmlhdGUgdmFsdWUgc3VjaFxuICAgdGhhdCAieCA9PSB5IiBpbXBsaWVzIGJvdGggdGhhdCAieCBpcyB5IiBhbmQgImhhc2goeCkgPT0gaGFzaCh5KSIuXG5cbiAgIEEgY2xhc3MgdGhhdCBvdmVycmlkZXMgIl9fZXFfXygpIiBhbmQgZG9lcyBub3QgZGVmaW5lICJfX2hhc2hfXygpIlxuICAgd2lsbCBoYXZlIGl0cyAiX19oYXNoX18oKSIgaW1wbGljaXRseSBzZXQgdG8gIk5vbmUiLiAgV2hlbiB0aGVcbiAgICJfX2hhc2hfXygpIiBtZXRob2Qgb2YgYSBjbGFzcyBpcyAiTm9uZSIsIGluc3RhbmNlcyBvZiB0aGUgY2xhc3NcbiAgIHdpbGwgcmFpc2UgYW4gYXBwcm9wcmlhdGUgIlR5cGVFcnJvciIgd2hlbiBhIHByb2dyYW0gYXR0ZW1wdHMgdG9cbiAgIHJldHJpZXZlIHRoZWlyIGhhc2ggdmFsdWUsIGFuZCB3aWxsIGFsc28gYmUgY29ycmVjdGx5IGlkZW50aWZpZWQgYXNcbiAgIHVuaGFzaGFibGUgd2hlbiBjaGVja2luZyAiaXNpbnN0YW5jZShvYmosIGNvbGxlY3Rpb25zLkhhc2hhYmxlKSIuXG5cbiAgIElmIGEgY2xhc3MgdGhhdCBvdmVycmlkZXMgIl9fZXFfXygpIiBuZWVkcyB0byByZXRhaW4gdGhlXG4gICBpbXBsZW1lbnRhdGlvbiBvZiAiX19oYXNoX18oKSIgZnJvbSBhIHBhcmVudCBjbGFzcywgdGhlIGludGVycHJldGVyXG4gICBtdXN0IGJlIHRvbGQgdGhpcyBleHBsaWNpdGx5IGJ5IHNldHRpbmcgIl9faGFzaF9fID1cbiAgIDxQYXJlbnRDbGFzcz4uX19oYXNoX18iLlxuXG4gICBJZiBhIGNsYXNzIHRoYXQgZG9lcyBub3Qgb3ZlcnJpZGUgIl9fZXFfXygpIiB3aXNoZXMgdG8gc3VwcHJlc3NcbiAgIGhhc2ggc3VwcG9ydCwgaXQgc2hvdWxkIGluY2x1ZGUgIl9faGFzaF9fID0gTm9uZSIgaW4gdGhlIGNsYXNzXG4gICBkZWZpbml0aW9uLiBBIGNsYXNzIHdoaWNoIGRlZmluZXMgaXRzIG93biAiX19oYXNoX18oKSIgdGhhdFxuICAgZXhwbGljaXRseSByYWlzZXMgYSAiVHlwZUVycm9yIiB3b3VsZCBiZSBpbmNvcnJlY3RseSBpZGVudGlmaWVkIGFzXG4gICBoYXNoYWJsZSBieSBhbiAiaXNpbnN0YW5jZShvYmosIGNvbGxlY3Rpb25zLkhhc2hhYmxlKSIgY2FsbC5cblxuICAgTm90ZTogQnkgZGVmYXVsdCwgdGhlICJfX2hhc2hfXygpIiB2YWx1ZXMgb2Ygc3RyLCBieXRlcyBhbmRcbiAgICAgZGF0ZXRpbWUgb2JqZWN0cyBhcmUgInNhbHRlZCIgd2l0aCBhbiB1bnByZWRpY3RhYmxlIHJhbmRvbSB2YWx1ZS5cbiAgICAgQWx0aG91Z2ggdGhleSByZW1haW4gY29uc3RhbnQgd2l0aGluIGFuIGluZGl2aWR1YWwgUHl0aG9uXG4gICAgIHByb2Nlc3MsIHRoZXkgYXJlIG5vdCBwcmVkaWN0YWJsZSBiZXR3ZWVuIHJlcGVhdGVkIGludm9jYXRpb25zIG9mXG4gICAgIFB5dGhvbi5UaGlzIGlzIGludGVuZGVkIHRvIHByb3ZpZGUgcHJvdGVjdGlvbiBhZ2FpbnN0IGEgZGVuaWFsLVxuICAgICBvZi1zZXJ2aWNlIGNhdXNlZCBieSBjYXJlZnVsbHktY2hvc2VuIGlucHV0cyB0aGF0IGV4cGxvaXQgdGhlXG4gICAgIHdvcnN0IGNhc2UgcGVyZm9ybWFuY2Ugb2YgYSBkaWN0IGluc2VydGlvbiwgTyhuXjIpIGNvbXBsZXhpdHkuXG4gICAgIFNlZSBodHRwOi8vd3d3Lm9jZXJ0Lm9yZy9hZHZpc29yaWVzL29jZXJ0LTIwMTEtMDAzLmh0bWwgZm9yXG4gICAgIGRldGFpbHMuQ2hhbmdpbmcgaGFzaCB2YWx1ZXMgYWZmZWN0cyB0aGUgaXRlcmF0aW9uIG9yZGVyIG9mXG4gICAgIGRpY3RzLCBzZXRzIGFuZCBvdGhlciBtYXBwaW5ncy4gIFB5dGhvbiBoYXMgbmV2ZXIgbWFkZSBndWFyYW50ZWVzXG4gICAgIGFib3V0IHRoaXMgb3JkZXJpbmcgKGFuZCBpdCB0eXBpY2FsbHkgdmFyaWVzIGJldHdlZW4gMzItYml0IGFuZFxuICAgICA2NC1iaXQgYnVpbGRzKS5TZWUgYWxzbyAiUFlUSE9OSEFTSFNFRUQiLlxuXG4gICBDaGFuZ2VkIGluIHZlcnNpb24gMy4zOiBIYXNoIHJhbmRvbWl6YXRpb24gaXMgZW5hYmxlZCBieSBkZWZhdWx0LlxuXG5vYmplY3QuX19ib29sX18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0cnV0aCB2YWx1ZSB0ZXN0aW5nIGFuZCB0aGUgYnVpbHQtaW4gb3BlcmF0aW9uXG4gICAiYm9vbCgpIjsgc2hvdWxkIHJldHVybiAiRmFsc2UiIG9yICJUcnVlIi4gIFdoZW4gdGhpcyBtZXRob2QgaXMgbm90XG4gICBkZWZpbmVkLCAiX19sZW5fXygpIiBpcyBjYWxsZWQsIGlmIGl0IGlzIGRlZmluZWQsIGFuZCB0aGUgb2JqZWN0IGlzXG4gICBjb25zaWRlcmVkIHRydWUgaWYgaXRzIHJlc3VsdCBpcyBub256ZXJvLiAgSWYgYSBjbGFzcyBkZWZpbmVzXG4gICBuZWl0aGVyICJfX2xlbl9fKCkiIG5vciAiX19ib29sX18oKSIsIGFsbCBpdHMgaW5zdGFuY2VzIGFyZVxuICAgY29uc2lkZXJlZCB0cnVlLlxuXG5cbkN1c3RvbWl6aW5nIGF0dHJpYnV0ZSBhY2Nlc3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGN1c3RvbWl6ZSB0aGUgbWVhbmluZyBvZlxuYXR0cmlidXRlIGFjY2VzcyAodXNlIG9mLCBhc3NpZ25tZW50IHRvLCBvciBkZWxldGlvbiBvZiAieC5uYW1lIikgZm9yXG5jbGFzcyBpbnN0YW5jZXMuXG5cbm9iamVjdC5fX2dldGF0dHJfXyhzZWxmLCBuYW1lKVxuXG4gICBDYWxsZWQgd2hlbiBhbiBhdHRyaWJ1dGUgbG9va3VwIGhhcyBub3QgZm91bmQgdGhlIGF0dHJpYnV0ZSBpbiB0aGVcbiAgIHVzdWFsIHBsYWNlcyAoaS5lLiBpdCBpcyBub3QgYW4gaW5zdGFuY2UgYXR0cmlidXRlIG5vciBpcyBpdCBmb3VuZFxuICAgaW4gdGhlIGNsYXNzIHRyZWUgZm9yICJzZWxmIikuICAibmFtZSIgaXMgdGhlIGF0dHJpYnV0ZSBuYW1lLiBUaGlzXG4gICBtZXRob2Qgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW5cbiAgICJBdHRyaWJ1dGVFcnJvciIgZXhjZXB0aW9uLlxuXG4gICBOb3RlIHRoYXQgaWYgdGhlIGF0dHJpYnV0ZSBpcyBmb3VuZCB0aHJvdWdoIHRoZSBub3JtYWwgbWVjaGFuaXNtLFxuICAgIl9fZ2V0YXR0cl9fKCkiIGlzIG5vdCBjYWxsZWQuICAoVGhpcyBpcyBhbiBpbnRlbnRpb25hbCBhc3ltbWV0cnlcbiAgIGJldHdlZW4gIl9fZ2V0YXR0cl9fKCkiIGFuZCAiX19zZXRhdHRyX18oKSIuKSBUaGlzIGlzIGRvbmUgYm90aCBmb3JcbiAgIGVmZmljaWVuY3kgcmVhc29ucyBhbmQgYmVjYXVzZSBvdGhlcndpc2UgIl9fZ2V0YXR0cl9fKCkiIHdvdWxkIGhhdmVcbiAgIG5vIHdheSB0byBhY2Nlc3Mgb3RoZXIgYXR0cmlidXRlcyBvZiB0aGUgaW5zdGFuY2UuICBOb3RlIHRoYXQgYXRcbiAgIGxlYXN0IGZvciBpbnN0YW5jZSB2YXJpYWJsZXMsIHlvdSBjYW4gZmFrZSB0b3RhbCBjb250cm9sIGJ5IG5vdFxuICAgaW5zZXJ0aW5nIGFueSB2YWx1ZXMgaW4gdGhlIGluc3RhbmNlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5IChidXRcbiAgIGluc3RlYWQgaW5zZXJ0aW5nIHRoZW0gaW4gYW5vdGhlciBvYmplY3QpLiAgU2VlIHRoZVxuICAgIl9fZ2V0YXR0cmlidXRlX18oKSIgbWV0aG9kIGJlbG93IGZvciBhIHdheSB0byBhY3R1YWxseSBnZXQgdG90YWxcbiAgIGNvbnRyb2wgb3ZlciBhdHRyaWJ1dGUgYWNjZXNzLlxuXG5vYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKVxuXG4gICBDYWxsZWQgdW5jb25kaXRpb25hbGx5IHRvIGltcGxlbWVudCBhdHRyaWJ1dGUgYWNjZXNzZXMgZm9yXG4gICBpbnN0YW5jZXMgb2YgdGhlIGNsYXNzLiBJZiB0aGUgY2xhc3MgYWxzbyBkZWZpbmVzICJfX2dldGF0dHJfXygpIixcbiAgIHRoZSBsYXR0ZXIgd2lsbCBub3QgYmUgY2FsbGVkIHVubGVzcyAiX19nZXRhdHRyaWJ1dGVfXygpIiBlaXRoZXJcbiAgIGNhbGxzIGl0IGV4cGxpY2l0bHkgb3IgcmFpc2VzIGFuICJBdHRyaWJ1dGVFcnJvciIuIFRoaXMgbWV0aG9kXG4gICBzaG91bGQgcmV0dXJuIHRoZSAoY29tcHV0ZWQpIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZSBhblxuICAgIkF0dHJpYnV0ZUVycm9yIiBleGNlcHRpb24uIEluIG9yZGVyIHRvIGF2b2lkIGluZmluaXRlIHJlY3Vyc2lvbiBpblxuICAgdGhpcyBtZXRob2QsIGl0cyBpbXBsZW1lbnRhdGlvbiBzaG91bGQgYWx3YXlzIGNhbGwgdGhlIGJhc2UgY2xhc3NcbiAgIG1ldGhvZCB3aXRoIHRoZSBzYW1lIG5hbWUgdG8gYWNjZXNzIGFueSBhdHRyaWJ1dGVzIGl0IG5lZWRzLCBmb3JcbiAgIGV4YW1wbGUsICJvYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKSIuXG5cbiAgIE5vdGU6IFRoaXMgbWV0aG9kIG1heSBzdGlsbCBiZSBieXBhc3NlZCB3aGVuIGxvb2tpbmcgdXAgc3BlY2lhbFxuICAgICBtZXRob2RzIGFzIHRoZSByZXN1bHQgb2YgaW1wbGljaXQgaW52b2NhdGlvbiB2aWEgbGFuZ3VhZ2Ugc3ludGF4XG4gICAgIG9yIGJ1aWx0LWluIGZ1bmN0aW9ucy4gU2VlICpTcGVjaWFsIG1ldGhvZCBsb29rdXAqLlxuXG5vYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpXG5cbiAgIENhbGxlZCB3aGVuIGFuIGF0dHJpYnV0ZSBhc3NpZ25tZW50IGlzIGF0dGVtcHRlZC4gIFRoaXMgaXMgY2FsbGVkXG4gICBpbnN0ZWFkIG9mIHRoZSBub3JtYWwgbWVjaGFuaXNtIChpLmUuIHN0b3JlIHRoZSB2YWx1ZSBpbiB0aGVcbiAgIGluc3RhbmNlIGRpY3Rpb25hcnkpLiAqbmFtZSogaXMgdGhlIGF0dHJpYnV0ZSBuYW1lLCAqdmFsdWUqIGlzIHRoZVxuICAgdmFsdWUgdG8gYmUgYXNzaWduZWQgdG8gaXQuXG5cbiAgIElmICJfX3NldGF0dHJfXygpIiB3YW50cyB0byBhc3NpZ24gdG8gYW4gaW5zdGFuY2UgYXR0cmlidXRlLCBpdFxuICAgc2hvdWxkIGNhbGwgdGhlIGJhc2UgY2xhc3MgbWV0aG9kIHdpdGggdGhlIHNhbWUgbmFtZSwgZm9yIGV4YW1wbGUsXG4gICAib2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKSIuXG5cbm9iamVjdC5fX2RlbGF0dHJfXyhzZWxmLCBuYW1lKVxuXG4gICBMaWtlICJfX3NldGF0dHJfXygpIiBidXQgZm9yIGF0dHJpYnV0ZSBkZWxldGlvbiBpbnN0ZWFkIG9mXG4gICBhc3NpZ25tZW50LiAgVGhpcyBzaG91bGQgb25seSBiZSBpbXBsZW1lbnRlZCBpZiAiZGVsIG9iai5uYW1lIiBpc1xuICAgbWVhbmluZ2Z1bCBmb3IgdGhlIG9iamVjdC5cblxub2JqZWN0Ll9fZGlyX18oc2VsZilcblxuICAgQ2FsbGVkIHdoZW4gImRpcigpIiBpcyBjYWxsZWQgb24gdGhlIG9iamVjdC4gQSBzZXF1ZW5jZSBtdXN0IGJlXG4gICByZXR1cm5lZC4gImRpcigpIiBjb252ZXJ0cyB0aGUgcmV0dXJuZWQgc2VxdWVuY2UgdG8gYSBsaXN0IGFuZFxuICAgc29ydHMgaXQuXG5cblxuSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIG9ubHkgYXBwbHkgd2hlbiBhbiBpbnN0YW5jZSBvZiB0aGUgY2xhc3NcbmNvbnRhaW5pbmcgdGhlIG1ldGhvZCAoYSBzby1jYWxsZWQgKmRlc2NyaXB0b3IqIGNsYXNzKSBhcHBlYXJzIGluIGFuXG4qb3duZXIqIGNsYXNzICh0aGUgZGVzY3JpcHRvciBtdXN0IGJlIGluIGVpdGhlciB0aGUgb3duZXJcJ3MgY2xhc3NcbmRpY3Rpb25hcnkgb3IgaW4gdGhlIGNsYXNzIGRpY3Rpb25hcnkgZm9yIG9uZSBvZiBpdHMgcGFyZW50cykuICBJbiB0aGVcbmV4YW1wbGVzIGJlbG93LCAidGhlIGF0dHJpYnV0ZSIgcmVmZXJzIHRvIHRoZSBhdHRyaWJ1dGUgd2hvc2UgbmFtZSBpc1xudGhlIGtleSBvZiB0aGUgcHJvcGVydHkgaW4gdGhlIG93bmVyIGNsYXNzXCcgIl9fZGljdF9fIi5cblxub2JqZWN0Ll9fZ2V0X18oc2VsZiwgaW5zdGFuY2UsIG93bmVyKVxuXG4gICBDYWxsZWQgdG8gZ2V0IHRoZSBhdHRyaWJ1dGUgb2YgdGhlIG93bmVyIGNsYXNzIChjbGFzcyBhdHRyaWJ1dGVcbiAgIGFjY2Vzcykgb3Igb2YgYW4gaW5zdGFuY2Ugb2YgdGhhdCBjbGFzcyAoaW5zdGFuY2UgYXR0cmlidXRlXG4gICBhY2Nlc3MpLiAqb3duZXIqIGlzIGFsd2F5cyB0aGUgb3duZXIgY2xhc3MsIHdoaWxlICppbnN0YW5jZSogaXMgdGhlXG4gICBpbnN0YW5jZSB0aGF0IHRoZSBhdHRyaWJ1dGUgd2FzIGFjY2Vzc2VkIHRocm91Z2gsIG9yICJOb25lIiB3aGVuXG4gICB0aGUgYXR0cmlidXRlIGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlICpvd25lciouICBUaGlzIG1ldGhvZCBzaG91bGRcbiAgIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW4gIkF0dHJpYnV0ZUVycm9yIlxuICAgZXhjZXB0aW9uLlxuXG5vYmplY3QuX19zZXRfXyhzZWxmLCBpbnN0YW5jZSwgdmFsdWUpXG5cbiAgIENhbGxlZCB0byBzZXQgdGhlIGF0dHJpYnV0ZSBvbiBhbiBpbnN0YW5jZSAqaW5zdGFuY2UqIG9mIHRoZSBvd25lclxuICAgY2xhc3MgdG8gYSBuZXcgdmFsdWUsICp2YWx1ZSouXG5cbm9iamVjdC5fX2RlbGV0ZV9fKHNlbGYsIGluc3RhbmNlKVxuXG4gICBDYWxsZWQgdG8gZGVsZXRlIHRoZSBhdHRyaWJ1dGUgb24gYW4gaW5zdGFuY2UgKmluc3RhbmNlKiBvZiB0aGVcbiAgIG93bmVyIGNsYXNzLlxuXG5UaGUgYXR0cmlidXRlICJfX29iamNsYXNzX18iIGlzIGludGVycHJldGVkIGJ5IHRoZSAiaW5zcGVjdCIgbW9kdWxlIGFzXG5zcGVjaWZ5aW5nIHRoZSBjbGFzcyB3aGVyZSB0aGlzIG9iamVjdCB3YXMgZGVmaW5lZCAoc2V0dGluZyB0aGlzXG5hcHByb3ByaWF0ZWx5IGNhbiBhc3Npc3QgaW4gcnVudGltZSBpbnRyb3NwZWN0aW9uIG9mIGR5bmFtaWMgY2xhc3NcbmF0dHJpYnV0ZXMpLiBGb3IgY2FsbGFibGVzLCBpdCBtYXkgaW5kaWNhdGUgdGhhdCBhbiBpbnN0YW5jZSBvZiB0aGVcbmdpdmVuIHR5cGUgKG9yIGEgc3ViY2xhc3MpIGlzIGV4cGVjdGVkIG9yIHJlcXVpcmVkIGFzIHRoZSBmaXJzdFxucG9zaXRpb25hbCBhcmd1bWVudCAoZm9yIGV4YW1wbGUsIENQeXRob24gc2V0cyB0aGlzIGF0dHJpYnV0ZSBmb3JcbnVuYm91bmQgbWV0aG9kcyB0aGF0IGFyZSBpbXBsZW1lbnRlZCBpbiBDKS5cblxuXG5JbnZva2luZyBEZXNjcmlwdG9yc1xuLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuSW4gZ2VuZXJhbCwgYSBkZXNjcmlwdG9yIGlzIGFuIG9iamVjdCBhdHRyaWJ1dGUgd2l0aCAiYmluZGluZ1xuYmVoYXZpb3IiLCBvbmUgd2hvc2UgYXR0cmlidXRlIGFjY2VzcyBoYXMgYmVlbiBvdmVycmlkZGVuIGJ5IG1ldGhvZHNcbmluIHRoZSBkZXNjcmlwdG9yIHByb3RvY29sOiAgIl9fZ2V0X18oKSIsICJfX3NldF9fKCkiLCBhbmRcbiJfX2RlbGV0ZV9fKCkiLiBJZiBhbnkgb2YgdGhvc2UgbWV0aG9kcyBhcmUgZGVmaW5lZCBmb3IgYW4gb2JqZWN0LCBpdFxuaXMgc2FpZCB0byBiZSBhIGRlc2NyaXB0b3IuXG5cblRoZSBkZWZhdWx0IGJlaGF2aW9yIGZvciBhdHRyaWJ1dGUgYWNjZXNzIGlzIHRvIGdldCwgc2V0LCBvciBkZWxldGVcbnRoZSBhdHRyaWJ1dGUgZnJvbSBhbiBvYmplY3RcJ3MgZGljdGlvbmFyeS4gRm9yIGluc3RhbmNlLCAiYS54IiBoYXMgYVxubG9va3VwIGNoYWluIHN0YXJ0aW5nIHdpdGggImEuX19kaWN0X19bXCd4XCddIiwgdGhlblxuInR5cGUoYSkuX19kaWN0X19bXCd4XCddIiwgYW5kIGNvbnRpbnVpbmcgdGhyb3VnaCB0aGUgYmFzZSBjbGFzc2VzIG9mXG4idHlwZShhKSIgZXhjbHVkaW5nIG1ldGFjbGFzc2VzLlxuXG5Ib3dldmVyLCBpZiB0aGUgbG9va2VkLXVwIHZhbHVlIGlzIGFuIG9iamVjdCBkZWZpbmluZyBvbmUgb2YgdGhlXG5kZXNjcmlwdG9yIG1ldGhvZHMsIHRoZW4gUHl0aG9uIG1heSBvdmVycmlkZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBhbmRcbmludm9rZSB0aGUgZGVzY3JpcHRvciBtZXRob2QgaW5zdGVhZC4gIFdoZXJlIHRoaXMgb2NjdXJzIGluIHRoZVxucHJlY2VkZW5jZSBjaGFpbiBkZXBlbmRzIG9uIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyB3ZXJlIGRlZmluZWQgYW5kXG5ob3cgdGhleSB3ZXJlIGNhbGxlZC5cblxuVGhlIHN0YXJ0aW5nIHBvaW50IGZvciBkZXNjcmlwdG9yIGludm9jYXRpb24gaXMgYSBiaW5kaW5nLCAiYS54Ii4gSG93XG50aGUgYXJndW1lbnRzIGFyZSBhc3NlbWJsZWQgZGVwZW5kcyBvbiAiYSI6XG5cbkRpcmVjdCBDYWxsXG4gICBUaGUgc2ltcGxlc3QgYW5kIGxlYXN0IGNvbW1vbiBjYWxsIGlzIHdoZW4gdXNlciBjb2RlIGRpcmVjdGx5XG4gICBpbnZva2VzIGEgZGVzY3JpcHRvciBtZXRob2Q6ICAgICJ4Ll9fZ2V0X18oYSkiLlxuXG5JbnN0YW5jZSBCaW5kaW5nXG4gICBJZiBiaW5kaW5nIHRvIGFuIG9iamVjdCBpbnN0YW5jZSwgImEueCIgaXMgdHJhbnNmb3JtZWQgaW50byB0aGVcbiAgIGNhbGw6ICJ0eXBlKGEpLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKGEsIHR5cGUoYSkpIi5cblxuQ2xhc3MgQmluZGluZ1xuICAgSWYgYmluZGluZyB0byBhIGNsYXNzLCAiQS54IiBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBjYWxsOlxuICAgIkEuX19kaWN0X19bXCd4XCddLl9fZ2V0X18oTm9uZSwgQSkiLlxuXG5TdXBlciBCaW5kaW5nXG4gICBJZiAiYSIgaXMgYW4gaW5zdGFuY2Ugb2YgInN1cGVyIiwgdGhlbiB0aGUgYmluZGluZyAic3VwZXIoQixcbiAgIG9iaikubSgpIiBzZWFyY2hlcyAib2JqLl9fY2xhc3NfXy5fX21yb19fIiBmb3IgdGhlIGJhc2UgY2xhc3MgIkEiXG4gICBpbW1lZGlhdGVseSBwcmVjZWRpbmcgIkIiIGFuZCB0aGVuIGludm9rZXMgdGhlIGRlc2NyaXB0b3Igd2l0aCB0aGVcbiAgIGNhbGw6ICJBLl9fZGljdF9fW1wnbVwnXS5fX2dldF9fKG9iaiwgb2JqLl9fY2xhc3NfXykiLlxuXG5Gb3IgaW5zdGFuY2UgYmluZGluZ3MsIHRoZSBwcmVjZWRlbmNlIG9mIGRlc2NyaXB0b3IgaW52b2NhdGlvbiBkZXBlbmRzXG5vbiB0aGUgd2hpY2ggZGVzY3JpcHRvciBtZXRob2RzIGFyZSBkZWZpbmVkLiAgQSBkZXNjcmlwdG9yIGNhbiBkZWZpbmVcbmFueSBjb21iaW5hdGlvbiBvZiAiX19nZXRfXygpIiwgIl9fc2V0X18oKSIgYW5kICJfX2RlbGV0ZV9fKCkiLiAgSWYgaXRcbmRvZXMgbm90IGRlZmluZSAiX19nZXRfXygpIiwgdGhlbiBhY2Nlc3NpbmcgdGhlIGF0dHJpYnV0ZSB3aWxsIHJldHVyblxudGhlIGRlc2NyaXB0b3Igb2JqZWN0IGl0c2VsZiB1bmxlc3MgdGhlcmUgaXMgYSB2YWx1ZSBpbiB0aGUgb2JqZWN0XCdzXG5pbnN0YW5jZSBkaWN0aW9uYXJ5LiAgSWYgdGhlIGRlc2NyaXB0b3IgZGVmaW5lcyAiX19zZXRfXygpIiBhbmQvb3JcbiJfX2RlbGV0ZV9fKCkiLCBpdCBpcyBhIGRhdGEgZGVzY3JpcHRvcjsgaWYgaXQgZGVmaW5lcyBuZWl0aGVyLCBpdCBpc1xuYSBub24tZGF0YSBkZXNjcmlwdG9yLiAgTm9ybWFsbHksIGRhdGEgZGVzY3JpcHRvcnMgZGVmaW5lIGJvdGhcbiJfX2dldF9fKCkiIGFuZCAiX19zZXRfXygpIiwgd2hpbGUgbm9uLWRhdGEgZGVzY3JpcHRvcnMgaGF2ZSBqdXN0IHRoZVxuIl9fZ2V0X18oKSIgbWV0aG9kLiAgRGF0YSBkZXNjcmlwdG9ycyB3aXRoICJfX3NldF9fKCkiIGFuZCAiX19nZXRfXygpIlxuZGVmaW5lZCBhbHdheXMgb3ZlcnJpZGUgYSByZWRlZmluaXRpb24gaW4gYW4gaW5zdGFuY2UgZGljdGlvbmFyeS4gIEluXG5jb250cmFzdCwgbm9uLWRhdGEgZGVzY3JpcHRvcnMgY2FuIGJlIG92ZXJyaWRkZW4gYnkgaW5zdGFuY2VzLlxuXG5QeXRob24gbWV0aG9kcyAoaW5jbHVkaW5nICJzdGF0aWNtZXRob2QoKSIgYW5kICJjbGFzc21ldGhvZCgpIikgYXJlXG5pbXBsZW1lbnRlZCBhcyBub24tZGF0YSBkZXNjcmlwdG9ycy4gIEFjY29yZGluZ2x5LCBpbnN0YW5jZXMgY2FuXG5yZWRlZmluZSBhbmQgb3ZlcnJpZGUgbWV0aG9kcy4gIFRoaXMgYWxsb3dzIGluZGl2aWR1YWwgaW5zdGFuY2VzIHRvXG5hY3F1aXJlIGJlaGF2aW9ycyB0aGF0IGRpZmZlciBmcm9tIG90aGVyIGluc3RhbmNlcyBvZiB0aGUgc2FtZSBjbGFzcy5cblxuVGhlICJwcm9wZXJ0eSgpIiBmdW5jdGlvbiBpcyBpbXBsZW1lbnRlZCBhcyBhIGRhdGEgZGVzY3JpcHRvci5cbkFjY29yZGluZ2x5LCBpbnN0YW5jZXMgY2Fubm90IG92ZXJyaWRlIHRoZSBiZWhhdmlvciBvZiBhIHByb3BlcnR5LlxuXG5cbl9fc2xvdHNfX1xuLS0tLS0tLS0tXG5cbkJ5IGRlZmF1bHQsIGluc3RhbmNlcyBvZiBjbGFzc2VzIGhhdmUgYSBkaWN0aW9uYXJ5IGZvciBhdHRyaWJ1dGVcbnN0b3JhZ2UuICBUaGlzIHdhc3RlcyBzcGFjZSBmb3Igb2JqZWN0cyBoYXZpbmcgdmVyeSBmZXcgaW5zdGFuY2VcbnZhcmlhYmxlcy4gIFRoZSBzcGFjZSBjb25zdW1wdGlvbiBjYW4gYmVjb21lIGFjdXRlIHdoZW4gY3JlYXRpbmcgbGFyZ2Vcbm51bWJlcnMgb2YgaW5zdGFuY2VzLlxuXG5UaGUgZGVmYXVsdCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBkZWZpbmluZyAqX19zbG90c19fKiBpbiBhIGNsYXNzXG5kZWZpbml0aW9uLiBUaGUgKl9fc2xvdHNfXyogZGVjbGFyYXRpb24gdGFrZXMgYSBzZXF1ZW5jZSBvZiBpbnN0YW5jZVxudmFyaWFibGVzIGFuZCByZXNlcnZlcyBqdXN0IGVub3VnaCBzcGFjZSBpbiBlYWNoIGluc3RhbmNlIHRvIGhvbGQgYVxudmFsdWUgZm9yIGVhY2ggdmFyaWFibGUuICBTcGFjZSBpcyBzYXZlZCBiZWNhdXNlICpfX2RpY3RfXyogaXMgbm90XG5jcmVhdGVkIGZvciBlYWNoIGluc3RhbmNlLlxuXG5vYmplY3QuX19zbG90c19fXG5cbiAgIFRoaXMgY2xhc3MgdmFyaWFibGUgY2FuIGJlIGFzc2lnbmVkIGEgc3RyaW5nLCBpdGVyYWJsZSwgb3Igc2VxdWVuY2VcbiAgIG9mIHN0cmluZ3Mgd2l0aCB2YXJpYWJsZSBuYW1lcyB1c2VkIGJ5IGluc3RhbmNlcy4gICpfX3Nsb3RzX18qXG4gICByZXNlcnZlcyBzcGFjZSBmb3IgdGhlIGRlY2xhcmVkIHZhcmlhYmxlcyBhbmQgcHJldmVudHMgdGhlXG4gICBhdXRvbWF0aWMgY3JlYXRpb24gb2YgKl9fZGljdF9fKiBhbmQgKl9fd2Vha3JlZl9fKiBmb3IgZWFjaFxuICAgaW5zdGFuY2UuXG5cblxuTm90ZXMgb24gdXNpbmcgKl9fc2xvdHNfXypcbn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+XG5cbiogV2hlbiBpbmhlcml0aW5nIGZyb20gYSBjbGFzcyB3aXRob3V0ICpfX3Nsb3RzX18qLCB0aGUgKl9fZGljdF9fKlxuICBhdHRyaWJ1dGUgb2YgdGhhdCBjbGFzcyB3aWxsIGFsd2F5cyBiZSBhY2Nlc3NpYmxlLCBzbyBhICpfX3Nsb3RzX18qXG4gIGRlZmluaXRpb24gaW4gdGhlIHN1YmNsYXNzIGlzIG1lYW5pbmdsZXNzLlxuXG4qIFdpdGhvdXQgYSAqX19kaWN0X18qIHZhcmlhYmxlLCBpbnN0YW5jZXMgY2Fubm90IGJlIGFzc2lnbmVkIG5ld1xuICB2YXJpYWJsZXMgbm90IGxpc3RlZCBpbiB0aGUgKl9fc2xvdHNfXyogZGVmaW5pdGlvbi4gIEF0dGVtcHRzIHRvXG4gIGFzc2lnbiB0byBhbiB1bmxpc3RlZCB2YXJpYWJsZSBuYW1lIHJhaXNlcyAiQXR0cmlidXRlRXJyb3IiLiBJZlxuICBkeW5hbWljIGFzc2lnbm1lbnQgb2YgbmV3IHZhcmlhYmxlcyBpcyBkZXNpcmVkLCB0aGVuIGFkZFxuICAiXCdfX2RpY3RfX1wnIiB0byB0aGUgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBpbiB0aGUgKl9fc2xvdHNfXypcbiAgZGVjbGFyYXRpb24uXG5cbiogV2l0aG91dCBhICpfX3dlYWtyZWZfXyogdmFyaWFibGUgZm9yIGVhY2ggaW5zdGFuY2UsIGNsYXNzZXNcbiAgZGVmaW5pbmcgKl9fc2xvdHNfXyogZG8gbm90IHN1cHBvcnQgd2VhayByZWZlcmVuY2VzIHRvIGl0c1xuICBpbnN0YW5jZXMuIElmIHdlYWsgcmVmZXJlbmNlIHN1cHBvcnQgaXMgbmVlZGVkLCB0aGVuIGFkZFxuICAiXCdfX3dlYWtyZWZfX1wnIiB0byB0aGUgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBpbiB0aGUgKl9fc2xvdHNfXypcbiAgZGVjbGFyYXRpb24uXG5cbiogKl9fc2xvdHNfXyogYXJlIGltcGxlbWVudGVkIGF0IHRoZSBjbGFzcyBsZXZlbCBieSBjcmVhdGluZ1xuICBkZXNjcmlwdG9ycyAoKkltcGxlbWVudGluZyBEZXNjcmlwdG9ycyopIGZvciBlYWNoIHZhcmlhYmxlIG5hbWUuICBBc1xuICBhIHJlc3VsdCwgY2xhc3MgYXR0cmlidXRlcyBjYW5ub3QgYmUgdXNlZCB0byBzZXQgZGVmYXVsdCB2YWx1ZXMgZm9yXG4gIGluc3RhbmNlIHZhcmlhYmxlcyBkZWZpbmVkIGJ5ICpfX3Nsb3RzX18qOyBvdGhlcndpc2UsIHRoZSBjbGFzc1xuICBhdHRyaWJ1dGUgd291bGQgb3ZlcndyaXRlIHRoZSBkZXNjcmlwdG9yIGFzc2lnbm1lbnQuXG5cbiogVGhlIGFjdGlvbiBvZiBhICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uIGlzIGxpbWl0ZWQgdG8gdGhlIGNsYXNzXG4gIHdoZXJlIGl0IGlzIGRlZmluZWQuICBBcyBhIHJlc3VsdCwgc3ViY2xhc3NlcyB3aWxsIGhhdmUgYSAqX19kaWN0X18qXG4gIHVubGVzcyB0aGV5IGFsc28gZGVmaW5lICpfX3Nsb3RzX18qICh3aGljaCBtdXN0IG9ubHkgY29udGFpbiBuYW1lc1xuICBvZiBhbnkgKmFkZGl0aW9uYWwqIHNsb3RzKS5cblxuKiBJZiBhIGNsYXNzIGRlZmluZXMgYSBzbG90IGFsc28gZGVmaW5lZCBpbiBhIGJhc2UgY2xhc3MsIHRoZVxuICBpbnN0YW5jZSB2YXJpYWJsZSBkZWZpbmVkIGJ5IHRoZSBiYXNlIGNsYXNzIHNsb3QgaXMgaW5hY2Nlc3NpYmxlXG4gIChleGNlcHQgYnkgcmV0cmlldmluZyBpdHMgZGVzY3JpcHRvciBkaXJlY3RseSBmcm9tIHRoZSBiYXNlIGNsYXNzKS5cbiAgVGhpcyByZW5kZXJzIHRoZSBtZWFuaW5nIG9mIHRoZSBwcm9ncmFtIHVuZGVmaW5lZC4gIEluIHRoZSBmdXR1cmUsIGFcbiAgY2hlY2sgbWF5IGJlIGFkZGVkIHRvIHByZXZlbnQgdGhpcy5cblxuKiBOb25lbXB0eSAqX19zbG90c19fKiBkb2VzIG5vdCB3b3JrIGZvciBjbGFzc2VzIGRlcml2ZWQgZnJvbVxuICAidmFyaWFibGUtbGVuZ3RoIiBidWlsdC1pbiB0eXBlcyBzdWNoIGFzICJpbnQiLCAiYnl0ZXMiIGFuZCAidHVwbGUiLlxuXG4qIEFueSBub24tc3RyaW5nIGl0ZXJhYmxlIG1heSBiZSBhc3NpZ25lZCB0byAqX19zbG90c19fKi4gTWFwcGluZ3NcbiAgbWF5IGFsc28gYmUgdXNlZDsgaG93ZXZlciwgaW4gdGhlIGZ1dHVyZSwgc3BlY2lhbCBtZWFuaW5nIG1heSBiZVxuICBhc3NpZ25lZCB0byB0aGUgdmFsdWVzIGNvcnJlc3BvbmRpbmcgdG8gZWFjaCBrZXkuXG5cbiogKl9fY2xhc3NfXyogYXNzaWdubWVudCB3b3JrcyBvbmx5IGlmIGJvdGggY2xhc3NlcyBoYXZlIHRoZSBzYW1lXG4gICpfX3Nsb3RzX18qLlxuXG5cbkN1c3RvbWl6aW5nIGNsYXNzIGNyZWF0aW9uXG49PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5CeSBkZWZhdWx0LCBjbGFzc2VzIGFyZSBjb25zdHJ1Y3RlZCB1c2luZyAidHlwZSgpIi4gVGhlIGNsYXNzIGJvZHkgaXNcbmV4ZWN1dGVkIGluIGEgbmV3IG5hbWVzcGFjZSBhbmQgdGhlIGNsYXNzIG5hbWUgaXMgYm91bmQgbG9jYWxseSB0byB0aGVcbnJlc3VsdCBvZiAidHlwZShuYW1lLCBiYXNlcywgbmFtZXNwYWNlKSIuXG5cblRoZSBjbGFzcyBjcmVhdGlvbiBwcm9jZXNzIGNhbiBiZSBjdXN0b21pc2VkIGJ5IHBhc3NpbmcgdGhlXG4ibWV0YWNsYXNzIiBrZXl3b3JkIGFyZ3VtZW50IGluIHRoZSBjbGFzcyBkZWZpbml0aW9uIGxpbmUsIG9yIGJ5XG5pbmhlcml0aW5nIGZyb20gYW4gZXhpc3RpbmcgY2xhc3MgdGhhdCBpbmNsdWRlZCBzdWNoIGFuIGFyZ3VtZW50LiBJblxudGhlIGZvbGxvd2luZyBleGFtcGxlLCBib3RoICJNeUNsYXNzIiBhbmQgIk15U3ViY2xhc3MiIGFyZSBpbnN0YW5jZXNcbm9mICJNZXRhIjpcblxuICAgY2xhc3MgTWV0YSh0eXBlKTpcbiAgICAgICBwYXNzXG5cbiAgIGNsYXNzIE15Q2xhc3MobWV0YWNsYXNzPU1ldGEpOlxuICAgICAgIHBhc3NcblxuICAgY2xhc3MgTXlTdWJjbGFzcyhNeUNsYXNzKTpcbiAgICAgICBwYXNzXG5cbkFueSBvdGhlciBrZXl3b3JkIGFyZ3VtZW50cyB0aGF0IGFyZSBzcGVjaWZpZWQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25cbmFyZSBwYXNzZWQgdGhyb3VnaCB0byBhbGwgbWV0YWNsYXNzIG9wZXJhdGlvbnMgZGVzY3JpYmVkIGJlbG93LlxuXG5XaGVuIGEgY2xhc3MgZGVmaW5pdGlvbiBpcyBleGVjdXRlZCwgdGhlIGZvbGxvd2luZyBzdGVwcyBvY2N1cjpcblxuKiB0aGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzIGlzIGRldGVybWluZWRcblxuKiB0aGUgY2xhc3MgbmFtZXNwYWNlIGlzIHByZXBhcmVkXG5cbiogdGhlIGNsYXNzIGJvZHkgaXMgZXhlY3V0ZWRcblxuKiB0aGUgY2xhc3Mgb2JqZWN0IGlzIGNyZWF0ZWRcblxuXG5EZXRlcm1pbmluZyB0aGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MgZm9yIGEgY2xhc3MgZGVmaW5pdGlvbiBpcyBkZXRlcm1pbmVkIGFzXG5mb2xsb3dzOlxuXG4qIGlmIG5vIGJhc2VzIGFuZCBubyBleHBsaWNpdCBtZXRhY2xhc3MgYXJlIGdpdmVuLCB0aGVuICJ0eXBlKCkiIGlzXG4gIHVzZWRcblxuKiBpZiBhbiBleHBsaWNpdCBtZXRhY2xhc3MgaXMgZ2l2ZW4gYW5kIGl0IGlzICpub3QqIGFuIGluc3RhbmNlIG9mXG4gICJ0eXBlKCkiLCB0aGVuIGl0IGlzIHVzZWQgZGlyZWN0bHkgYXMgdGhlIG1ldGFjbGFzc1xuXG4qIGlmIGFuIGluc3RhbmNlIG9mICJ0eXBlKCkiIGlzIGdpdmVuIGFzIHRoZSBleHBsaWNpdCBtZXRhY2xhc3MsIG9yXG4gIGJhc2VzIGFyZSBkZWZpbmVkLCB0aGVuIHRoZSBtb3N0IGRlcml2ZWQgbWV0YWNsYXNzIGlzIHVzZWRcblxuVGhlIG1vc3QgZGVyaXZlZCBtZXRhY2xhc3MgaXMgc2VsZWN0ZWQgZnJvbSB0aGUgZXhwbGljaXRseSBzcGVjaWZpZWRcbm1ldGFjbGFzcyAoaWYgYW55KSBhbmQgdGhlIG1ldGFjbGFzc2VzIChpLmUuICJ0eXBlKGNscykiKSBvZiBhbGxcbnNwZWNpZmllZCBiYXNlIGNsYXNzZXMuIFRoZSBtb3N0IGRlcml2ZWQgbWV0YWNsYXNzIGlzIG9uZSB3aGljaCBpcyBhXG5zdWJ0eXBlIG9mICphbGwqIG9mIHRoZXNlIGNhbmRpZGF0ZSBtZXRhY2xhc3Nlcy4gSWYgbm9uZSBvZiB0aGVcbmNhbmRpZGF0ZSBtZXRhY2xhc3NlcyBtZWV0cyB0aGF0IGNyaXRlcmlvbiwgdGhlbiB0aGUgY2xhc3MgZGVmaW5pdGlvblxud2lsbCBmYWlsIHdpdGggIlR5cGVFcnJvciIuXG5cblxuUHJlcGFyaW5nIHRoZSBjbGFzcyBuYW1lc3BhY2Vcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbk9uY2UgdGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcyBoYXMgYmVlbiBpZGVudGlmaWVkLCB0aGVuIHRoZSBjbGFzc1xubmFtZXNwYWNlIGlzIHByZXBhcmVkLiBJZiB0aGUgbWV0YWNsYXNzIGhhcyBhICJfX3ByZXBhcmVfXyIgYXR0cmlidXRlLFxuaXQgaXMgY2FsbGVkIGFzICJuYW1lc3BhY2UgPSBtZXRhY2xhc3MuX19wcmVwYXJlX18obmFtZSwgYmFzZXMsXG4qKmt3ZHMpIiAod2hlcmUgdGhlIGFkZGl0aW9uYWwga2V5d29yZCBhcmd1bWVudHMsIGlmIGFueSwgY29tZSBmcm9tXG50aGUgY2xhc3MgZGVmaW5pdGlvbikuXG5cbklmIHRoZSBtZXRhY2xhc3MgaGFzIG5vICJfX3ByZXBhcmVfXyIgYXR0cmlidXRlLCB0aGVuIHRoZSBjbGFzc1xubmFtZXNwYWNlIGlzIGluaXRpYWxpc2VkIGFzIGFuIGVtcHR5ICJkaWN0KCkiIGluc3RhbmNlLlxuXG5TZWUgYWxzbzogKipQRVAgMzExNSoqIC0gTWV0YWNsYXNzZXMgaW4gUHl0aG9uIDMwMDBcblxuICAgICBJbnRyb2R1Y2VkIHRoZSAiX19wcmVwYXJlX18iIG5hbWVzcGFjZSBob29rXG5cblxuRXhlY3V0aW5nIHRoZSBjbGFzcyBib2R5XG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuVGhlIGNsYXNzIGJvZHkgaXMgZXhlY3V0ZWQgKGFwcHJveGltYXRlbHkpIGFzICJleGVjKGJvZHksIGdsb2JhbHMoKSxcbm5hbWVzcGFjZSkiLiBUaGUga2V5IGRpZmZlcmVuY2UgZnJvbSBhIG5vcm1hbCBjYWxsIHRvICJleGVjKCkiIGlzIHRoYXRcbmxleGljYWwgc2NvcGluZyBhbGxvd3MgdGhlIGNsYXNzIGJvZHkgKGluY2x1ZGluZyBhbnkgbWV0aG9kcykgdG9cbnJlZmVyZW5jZSBuYW1lcyBmcm9tIHRoZSBjdXJyZW50IGFuZCBvdXRlciBzY29wZXMgd2hlbiB0aGUgY2xhc3NcbmRlZmluaXRpb24gb2NjdXJzIGluc2lkZSBhIGZ1bmN0aW9uLlxuXG5Ib3dldmVyLCBldmVuIHdoZW4gdGhlIGNsYXNzIGRlZmluaXRpb24gb2NjdXJzIGluc2lkZSB0aGUgZnVuY3Rpb24sXG5tZXRob2RzIGRlZmluZWQgaW5zaWRlIHRoZSBjbGFzcyBzdGlsbCBjYW5ub3Qgc2VlIG5hbWVzIGRlZmluZWQgYXQgdGhlXG5jbGFzcyBzY29wZS4gQ2xhc3MgdmFyaWFibGVzIG11c3QgYmUgYWNjZXNzZWQgdGhyb3VnaCB0aGUgZmlyc3RcbnBhcmFtZXRlciBvZiBpbnN0YW5jZSBvciBjbGFzcyBtZXRob2RzLCBhbmQgY2Fubm90IGJlIGFjY2Vzc2VkIGF0IGFsbFxuZnJvbSBzdGF0aWMgbWV0aG9kcy5cblxuXG5DcmVhdGluZyB0aGUgY2xhc3Mgb2JqZWN0XG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbk9uY2UgdGhlIGNsYXNzIG5hbWVzcGFjZSBoYXMgYmVlbiBwb3B1bGF0ZWQgYnkgZXhlY3V0aW5nIHRoZSBjbGFzc1xuYm9keSwgdGhlIGNsYXNzIG9iamVjdCBpcyBjcmVhdGVkIGJ5IGNhbGxpbmcgIm1ldGFjbGFzcyhuYW1lLCBiYXNlcyxcbm5hbWVzcGFjZSwgKiprd2RzKSIgKHRoZSBhZGRpdGlvbmFsIGtleXdvcmRzIHBhc3NlZCBoZXJlIGFyZSB0aGUgc2FtZVxuYXMgdGhvc2UgcGFzc2VkIHRvICJfX3ByZXBhcmVfXyIpLlxuXG5UaGlzIGNsYXNzIG9iamVjdCBpcyB0aGUgb25lIHRoYXQgd2lsbCBiZSByZWZlcmVuY2VkIGJ5IHRoZSB6ZXJvLVxuYXJndW1lbnQgZm9ybSBvZiAic3VwZXIoKSIuICJfX2NsYXNzX18iIGlzIGFuIGltcGxpY2l0IGNsb3N1cmVcbnJlZmVyZW5jZSBjcmVhdGVkIGJ5IHRoZSBjb21waWxlciBpZiBhbnkgbWV0aG9kcyBpbiBhIGNsYXNzIGJvZHkgcmVmZXJcbnRvIGVpdGhlciAiX19jbGFzc19fIiBvciAic3VwZXIiLiBUaGlzIGFsbG93cyB0aGUgemVybyBhcmd1bWVudCBmb3JtXG5vZiAic3VwZXIoKSIgdG8gY29ycmVjdGx5IGlkZW50aWZ5IHRoZSBjbGFzcyBiZWluZyBkZWZpbmVkIGJhc2VkIG9uXG5sZXhpY2FsIHNjb3BpbmcsIHdoaWxlIHRoZSBjbGFzcyBvciBpbnN0YW5jZSB0aGF0IHdhcyB1c2VkIHRvIG1ha2UgdGhlXG5jdXJyZW50IGNhbGwgaXMgaWRlbnRpZmllZCBiYXNlZCBvbiB0aGUgZmlyc3QgYXJndW1lbnQgcGFzc2VkIHRvIHRoZVxubWV0aG9kLlxuXG5BZnRlciB0aGUgY2xhc3Mgb2JqZWN0IGlzIGNyZWF0ZWQsIGl0IGlzIHBhc3NlZCB0byB0aGUgY2xhc3NcbmRlY29yYXRvcnMgaW5jbHVkZWQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24gKGlmIGFueSkgYW5kIHRoZSByZXN1bHRpbmdcbm9iamVjdCBpcyBib3VuZCBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGFzIHRoZSBkZWZpbmVkIGNsYXNzLlxuXG5XaGVuIGEgbmV3IGNsYXNzIGlzIGNyZWF0ZWQgYnkgInR5cGUuX19uZXdfXyIsIHRoZSBvYmplY3QgcHJvdmlkZWQgYXNcbnRoZSBuYW1lc3BhY2UgcGFyYW1ldGVyIGlzIGNvcGllZCB0byBhIHN0YW5kYXJkIFB5dGhvbiBkaWN0aW9uYXJ5IGFuZFxudGhlIG9yaWdpbmFsIG9iamVjdCBpcyBkaXNjYXJkZWQuIFRoZSBuZXcgY29weSBiZWNvbWVzIHRoZSAiX19kaWN0X18iXG5hdHRyaWJ1dGUgb2YgdGhlIGNsYXNzIG9iamVjdC5cblxuU2VlIGFsc286ICoqUEVQIDMxMzUqKiAtIE5ldyBzdXBlclxuXG4gICAgIERlc2NyaWJlcyB0aGUgaW1wbGljaXQgIl9fY2xhc3NfXyIgY2xvc3VyZSByZWZlcmVuY2VcblxuXG5NZXRhY2xhc3MgZXhhbXBsZVxuLS0tLS0tLS0tLS0tLS0tLS1cblxuVGhlIHBvdGVudGlhbCB1c2VzIGZvciBtZXRhY2xhc3NlcyBhcmUgYm91bmRsZXNzLiBTb21lIGlkZWFzIHRoYXQgaGF2ZVxuYmVlbiBleHBsb3JlZCBpbmNsdWRlIGxvZ2dpbmcsIGludGVyZmFjZSBjaGVja2luZywgYXV0b21hdGljXG5kZWxlZ2F0aW9uLCBhdXRvbWF0aWMgcHJvcGVydHkgY3JlYXRpb24sIHByb3hpZXMsIGZyYW1ld29ya3MsIGFuZFxuYXV0b21hdGljIHJlc291cmNlIGxvY2tpbmcvc3luY2hyb25pemF0aW9uLlxuXG5IZXJlIGlzIGFuIGV4YW1wbGUgb2YgYSBtZXRhY2xhc3MgdGhhdCB1c2VzIGFuXG4iY29sbGVjdGlvbnMuT3JkZXJlZERpY3QiIHRvIHJlbWVtYmVyIHRoZSBvcmRlciB0aGF0IGNsYXNzIHZhcmlhYmxlc1xuYXJlIGRlZmluZWQ6XG5cbiAgIGNsYXNzIE9yZGVyZWRDbGFzcyh0eXBlKTpcblxuICAgICAgIEBjbGFzc21ldGhvZFxuICAgICAgIGRlZiBfX3ByZXBhcmVfXyhtZXRhY2xzLCBuYW1lLCBiYXNlcywgKiprd2RzKTpcbiAgICAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KClcblxuICAgICAgIGRlZiBfX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSwgKiprd2RzKTpcbiAgICAgICAgICAgcmVzdWx0ID0gdHlwZS5fX25ld19fKGNscywgbmFtZSwgYmFzZXMsIGRpY3QobmFtZXNwYWNlKSlcbiAgICAgICAgICAgcmVzdWx0Lm1lbWJlcnMgPSB0dXBsZShuYW1lc3BhY2UpXG4gICAgICAgICAgIHJldHVybiByZXN1bHRcblxuICAgY2xhc3MgQShtZXRhY2xhc3M9T3JkZXJlZENsYXNzKTpcbiAgICAgICBkZWYgb25lKHNlbGYpOiBwYXNzXG4gICAgICAgZGVmIHR3byhzZWxmKTogcGFzc1xuICAgICAgIGRlZiB0aHJlZShzZWxmKTogcGFzc1xuICAgICAgIGRlZiBmb3VyKHNlbGYpOiBwYXNzXG5cbiAgID4+PiBBLm1lbWJlcnNcbiAgIChcJ19fbW9kdWxlX19cJywgXCdvbmVcJywgXCd0d29cJywgXCd0aHJlZVwnLCBcJ2ZvdXJcJylcblxuV2hlbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBmb3IgKkEqIGdldHMgZXhlY3V0ZWQsIHRoZSBwcm9jZXNzIGJlZ2luc1xud2l0aCBjYWxsaW5nIHRoZSBtZXRhY2xhc3NcJ3MgIl9fcHJlcGFyZV9fKCkiIG1ldGhvZCB3aGljaCByZXR1cm5zIGFuXG5lbXB0eSAiY29sbGVjdGlvbnMuT3JkZXJlZERpY3QiLiAgVGhhdCBtYXBwaW5nIHJlY29yZHMgdGhlIG1ldGhvZHMgYW5kXG5hdHRyaWJ1dGVzIG9mICpBKiBhcyB0aGV5IGFyZSBkZWZpbmVkIHdpdGhpbiB0aGUgYm9keSBvZiB0aGUgY2xhc3NcbnN0YXRlbWVudC4gT25jZSB0aG9zZSBkZWZpbml0aW9ucyBhcmUgZXhlY3V0ZWQsIHRoZSBvcmRlcmVkIGRpY3Rpb25hcnlcbmlzIGZ1bGx5IHBvcHVsYXRlZCBhbmQgdGhlIG1ldGFjbGFzc1wncyAiX19uZXdfXygpIiBtZXRob2QgZ2V0c1xuaW52b2tlZC4gIFRoYXQgbWV0aG9kIGJ1aWxkcyB0aGUgbmV3IHR5cGUgYW5kIGl0IHNhdmVzIHRoZSBvcmRlcmVkXG5kaWN0aW9uYXJ5IGtleXMgaW4gYW4gYXR0cmlidXRlIGNhbGxlZCAibWVtYmVycyIuXG5cblxuQ3VzdG9taXppbmcgaW5zdGFuY2UgYW5kIHN1YmNsYXNzIGNoZWNrc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIHVzZWQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgdGhlXG4iaXNpbnN0YW5jZSgpIiBhbmQgImlzc3ViY2xhc3MoKSIgYnVpbHQtaW4gZnVuY3Rpb25zLlxuXG5JbiBwYXJ0aWN1bGFyLCB0aGUgbWV0YWNsYXNzICJhYmMuQUJDTWV0YSIgaW1wbGVtZW50cyB0aGVzZSBtZXRob2RzIGluXG5vcmRlciB0byBhbGxvdyB0aGUgYWRkaXRpb24gb2YgQWJzdHJhY3QgQmFzZSBDbGFzc2VzIChBQkNzKSBhc1xuInZpcnR1YWwgYmFzZSBjbGFzc2VzIiB0byBhbnkgY2xhc3Mgb3IgdHlwZSAoaW5jbHVkaW5nIGJ1aWx0LWluXG50eXBlcyksIGluY2x1ZGluZyBvdGhlciBBQkNzLlxuXG5jbGFzcy5fX2luc3RhbmNlY2hlY2tfXyhzZWxmLCBpbnN0YW5jZSlcblxuICAgUmV0dXJuIHRydWUgaWYgKmluc3RhbmNlKiBzaG91bGQgYmUgY29uc2lkZXJlZCBhIChkaXJlY3Qgb3JcbiAgIGluZGlyZWN0KSBpbnN0YW5jZSBvZiAqY2xhc3MqLiBJZiBkZWZpbmVkLCBjYWxsZWQgdG8gaW1wbGVtZW50XG4gICAiaXNpbnN0YW5jZShpbnN0YW5jZSwgY2xhc3MpIi5cblxuY2xhc3MuX19zdWJjbGFzc2NoZWNrX18oc2VsZiwgc3ViY2xhc3MpXG5cbiAgIFJldHVybiB0cnVlIGlmICpzdWJjbGFzcyogc2hvdWxkIGJlIGNvbnNpZGVyZWQgYSAoZGlyZWN0IG9yXG4gICBpbmRpcmVjdCkgc3ViY2xhc3Mgb2YgKmNsYXNzKi4gIElmIGRlZmluZWQsIGNhbGxlZCB0byBpbXBsZW1lbnRcbiAgICJpc3N1YmNsYXNzKHN1YmNsYXNzLCBjbGFzcykiLlxuXG5Ob3RlIHRoYXQgdGhlc2UgbWV0aG9kcyBhcmUgbG9va2VkIHVwIG9uIHRoZSB0eXBlIChtZXRhY2xhc3MpIG9mIGFcbmNsYXNzLiAgVGhleSBjYW5ub3QgYmUgZGVmaW5lZCBhcyBjbGFzcyBtZXRob2RzIGluIHRoZSBhY3R1YWwgY2xhc3MuXG5UaGlzIGlzIGNvbnNpc3RlbnQgd2l0aCB0aGUgbG9va3VwIG9mIHNwZWNpYWwgbWV0aG9kcyB0aGF0IGFyZSBjYWxsZWRcbm9uIGluc3RhbmNlcywgb25seSBpbiB0aGlzIGNhc2UgdGhlIGluc3RhbmNlIGlzIGl0c2VsZiBhIGNsYXNzLlxuXG5TZWUgYWxzbzogKipQRVAgMzExOSoqIC0gSW50cm9kdWNpbmcgQWJzdHJhY3QgQmFzZSBDbGFzc2VzXG5cbiAgICAgSW5jbHVkZXMgdGhlIHNwZWNpZmljYXRpb24gZm9yIGN1c3RvbWl6aW5nICJpc2luc3RhbmNlKCkiIGFuZFxuICAgICAiaXNzdWJjbGFzcygpIiBiZWhhdmlvciB0aHJvdWdoICJfX2luc3RhbmNlY2hlY2tfXygpIiBhbmRcbiAgICAgIl9fc3ViY2xhc3NjaGVja19fKCkiLCB3aXRoIG1vdGl2YXRpb24gZm9yIHRoaXMgZnVuY3Rpb25hbGl0eSBpblxuICAgICB0aGUgY29udGV4dCBvZiBhZGRpbmcgQWJzdHJhY3QgQmFzZSBDbGFzc2VzIChzZWUgdGhlICJhYmMiXG4gICAgIG1vZHVsZSkgdG8gdGhlIGxhbmd1YWdlLlxuXG5cbkVtdWxhdGluZyBjYWxsYWJsZSBvYmplY3RzXG49PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5vYmplY3QuX19jYWxsX18oc2VsZlssIGFyZ3MuLi5dKVxuXG4gICBDYWxsZWQgd2hlbiB0aGUgaW5zdGFuY2UgaXMgImNhbGxlZCIgYXMgYSBmdW5jdGlvbjsgaWYgdGhpcyBtZXRob2RcbiAgIGlzIGRlZmluZWQsICJ4KGFyZzEsIGFyZzIsIC4uLikiIGlzIGEgc2hvcnRoYW5kIGZvclxuICAgInguX19jYWxsX18oYXJnMSwgYXJnMiwgLi4uKSIuXG5cblxuRW11bGF0aW5nIGNvbnRhaW5lciB0eXBlc1xuPT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gaW1wbGVtZW50IGNvbnRhaW5lciBvYmplY3RzLlxuQ29udGFpbmVycyB1c3VhbGx5IGFyZSBzZXF1ZW5jZXMgKHN1Y2ggYXMgbGlzdHMgb3IgdHVwbGVzKSBvciBtYXBwaW5nc1xuKGxpa2UgZGljdGlvbmFyaWVzKSwgYnV0IGNhbiByZXByZXNlbnQgb3RoZXIgY29udGFpbmVycyBhcyB3ZWxsLiAgVGhlXG5maXJzdCBzZXQgb2YgbWV0aG9kcyBpcyB1c2VkIGVpdGhlciB0byBlbXVsYXRlIGEgc2VxdWVuY2Ugb3IgdG9cbmVtdWxhdGUgYSBtYXBwaW5nOyB0aGUgZGlmZmVyZW5jZSBpcyB0aGF0IGZvciBhIHNlcXVlbmNlLCB0aGVcbmFsbG93YWJsZSBrZXlzIHNob3VsZCBiZSB0aGUgaW50ZWdlcnMgKmsqIGZvciB3aGljaCAiMCA8PSBrIDwgTiIgd2hlcmVcbipOKiBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBzZXF1ZW5jZSwgb3Igc2xpY2Ugb2JqZWN0cywgd2hpY2ggZGVmaW5lIGFcbnJhbmdlIG9mIGl0ZW1zLiAgSXQgaXMgYWxzbyByZWNvbW1lbmRlZCB0aGF0IG1hcHBpbmdzIHByb3ZpZGUgdGhlXG5tZXRob2RzICJrZXlzKCkiLCAidmFsdWVzKCkiLCAiaXRlbXMoKSIsICJnZXQoKSIsICJjbGVhcigpIixcbiJzZXRkZWZhdWx0KCkiLCAicG9wKCkiLCAicG9waXRlbSgpIiwgImNvcHkoKSIsIGFuZCAidXBkYXRlKCkiXG5iZWhhdmluZyBzaW1pbGFyIHRvIHRob3NlIGZvciBQeXRob25cJ3Mgc3RhbmRhcmQgZGljdGlvbmFyeSBvYmplY3RzLlxuVGhlICJjb2xsZWN0aW9ucyIgbW9kdWxlIHByb3ZpZGVzIGEgIk11dGFibGVNYXBwaW5nIiBhYnN0cmFjdCBiYXNlXG5jbGFzcyB0byBoZWxwIGNyZWF0ZSB0aG9zZSBtZXRob2RzIGZyb20gYSBiYXNlIHNldCBvZiAiX19nZXRpdGVtX18oKSIsXG4iX19zZXRpdGVtX18oKSIsICJfX2RlbGl0ZW1fXygpIiwgYW5kICJrZXlzKCkiLiBNdXRhYmxlIHNlcXVlbmNlc1xuc2hvdWxkIHByb3ZpZGUgbWV0aG9kcyAiYXBwZW5kKCkiLCAiY291bnQoKSIsICJpbmRleCgpIiwgImV4dGVuZCgpIixcbiJpbnNlcnQoKSIsICJwb3AoKSIsICJyZW1vdmUoKSIsICJyZXZlcnNlKCkiIGFuZCAic29ydCgpIiwgbGlrZSBQeXRob25cbnN0YW5kYXJkIGxpc3Qgb2JqZWN0cy4gIEZpbmFsbHksIHNlcXVlbmNlIHR5cGVzIHNob3VsZCBpbXBsZW1lbnRcbmFkZGl0aW9uIChtZWFuaW5nIGNvbmNhdGVuYXRpb24pIGFuZCBtdWx0aXBsaWNhdGlvbiAobWVhbmluZ1xucmVwZXRpdGlvbikgYnkgZGVmaW5pbmcgdGhlIG1ldGhvZHMgIl9fYWRkX18oKSIsICJfX3JhZGRfXygpIixcbiJfX2lhZGRfXygpIiwgIl9fbXVsX18oKSIsICJfX3JtdWxfXygpIiBhbmQgIl9faW11bF9fKCkiIGRlc2NyaWJlZFxuYmVsb3c7IHRoZXkgc2hvdWxkIG5vdCBkZWZpbmUgb3RoZXIgbnVtZXJpY2FsIG9wZXJhdG9ycy4gIEl0IGlzXG5yZWNvbW1lbmRlZCB0aGF0IGJvdGggbWFwcGluZ3MgYW5kIHNlcXVlbmNlcyBpbXBsZW1lbnQgdGhlXG4iX19jb250YWluc19fKCkiIG1ldGhvZCB0byBhbGxvdyBlZmZpY2llbnQgdXNlIG9mIHRoZSAiaW4iIG9wZXJhdG9yO1xuZm9yIG1hcHBpbmdzLCAiaW4iIHNob3VsZCBzZWFyY2ggdGhlIG1hcHBpbmdcJ3Mga2V5czsgZm9yIHNlcXVlbmNlcywgaXRcbnNob3VsZCBzZWFyY2ggdGhyb3VnaCB0aGUgdmFsdWVzLiAgSXQgaXMgZnVydGhlciByZWNvbW1lbmRlZCB0aGF0IGJvdGhcbm1hcHBpbmdzIGFuZCBzZXF1ZW5jZXMgaW1wbGVtZW50IHRoZSAiX19pdGVyX18oKSIgbWV0aG9kIHRvIGFsbG93XG5lZmZpY2llbnQgaXRlcmF0aW9uIHRocm91Z2ggdGhlIGNvbnRhaW5lcjsgZm9yIG1hcHBpbmdzLCAiX19pdGVyX18oKSJcbnNob3VsZCBiZSB0aGUgc2FtZSBhcyAia2V5cygpIjsgZm9yIHNlcXVlbmNlcywgaXQgc2hvdWxkIGl0ZXJhdGVcbnRocm91Z2ggdGhlIHZhbHVlcy5cblxub2JqZWN0Ll9fbGVuX18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gImxlbigpIi4gIFNob3VsZCByZXR1cm5cbiAgIHRoZSBsZW5ndGggb2YgdGhlIG9iamVjdCwgYW4gaW50ZWdlciAiPj0iIDAuICBBbHNvLCBhbiBvYmplY3QgdGhhdFxuICAgZG9lc25cJ3QgZGVmaW5lIGEgIl9fYm9vbF9fKCkiIG1ldGhvZCBhbmQgd2hvc2UgIl9fbGVuX18oKSIgbWV0aG9kXG4gICByZXR1cm5zIHplcm8gaXMgY29uc2lkZXJlZCB0byBiZSBmYWxzZSBpbiBhIEJvb2xlYW4gY29udGV4dC5cblxub2JqZWN0Ll9fbGVuZ3RoX2hpbnRfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50ICJvcGVyYXRvci5sZW5ndGhfaGludCgpIi4gU2hvdWxkIHJldHVybiBhblxuICAgZXN0aW1hdGVkIGxlbmd0aCBmb3IgdGhlIG9iamVjdCAod2hpY2ggbWF5IGJlIGdyZWF0ZXIgb3IgbGVzcyB0aGFuXG4gICB0aGUgYWN0dWFsIGxlbmd0aCkuIFRoZSBsZW5ndGggbXVzdCBiZSBhbiBpbnRlZ2VyICI+PSIgMC4gVGhpc1xuICAgbWV0aG9kIGlzIHB1cmVseSBhbiBvcHRpbWl6YXRpb24gYW5kIGlzIG5ldmVyIHJlcXVpcmVkIGZvclxuICAgY29ycmVjdG5lc3MuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuNC5cblxuTm90ZTogU2xpY2luZyBpcyBkb25lIGV4Y2x1c2l2ZWx5IHdpdGggdGhlIGZvbGxvd2luZyB0aHJlZSBtZXRob2RzLlxuICBBIGNhbGwgbGlrZVxuXG4gICAgIGFbMToyXSA9IGJcblxuICBpcyB0cmFuc2xhdGVkIHRvXG5cbiAgICAgYVtzbGljZSgxLCAyLCBOb25lKV0gPSBiXG5cbiAgYW5kIHNvIGZvcnRoLiAgTWlzc2luZyBzbGljZSBpdGVtcyBhcmUgYWx3YXlzIGZpbGxlZCBpbiB3aXRoICJOb25lIi5cblxub2JqZWN0Ll9fZ2V0aXRlbV9fKHNlbGYsIGtleSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBldmFsdWF0aW9uIG9mICJzZWxmW2tleV0iLiBGb3Igc2VxdWVuY2UgdHlwZXMsXG4gICB0aGUgYWNjZXB0ZWQga2V5cyBzaG91bGQgYmUgaW50ZWdlcnMgYW5kIHNsaWNlIG9iamVjdHMuICBOb3RlIHRoYXRcbiAgIHRoZSBzcGVjaWFsIGludGVycHJldGF0aW9uIG9mIG5lZ2F0aXZlIGluZGV4ZXMgKGlmIHRoZSBjbGFzcyB3aXNoZXNcbiAgIHRvIGVtdWxhdGUgYSBzZXF1ZW5jZSB0eXBlKSBpcyB1cCB0byB0aGUgIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC4gSWZcbiAgICprZXkqIGlzIG9mIGFuIGluYXBwcm9wcmlhdGUgdHlwZSwgIlR5cGVFcnJvciIgbWF5IGJlIHJhaXNlZDsgaWYgb2ZcbiAgIGEgdmFsdWUgb3V0c2lkZSB0aGUgc2V0IG9mIGluZGV4ZXMgZm9yIHRoZSBzZXF1ZW5jZSAoYWZ0ZXIgYW55XG4gICBzcGVjaWFsIGludGVycHJldGF0aW9uIG9mIG5lZ2F0aXZlIHZhbHVlcyksICJJbmRleEVycm9yIiBzaG91bGQgYmVcbiAgIHJhaXNlZC4gRm9yIG1hcHBpbmcgdHlwZXMsIGlmICprZXkqIGlzIG1pc3NpbmcgKG5vdCBpbiB0aGVcbiAgIGNvbnRhaW5lciksICJLZXlFcnJvciIgc2hvdWxkIGJlIHJhaXNlZC5cblxuICAgTm90ZTogImZvciIgbG9vcHMgZXhwZWN0IHRoYXQgYW4gIkluZGV4RXJyb3IiIHdpbGwgYmUgcmFpc2VkIGZvclxuICAgICBpbGxlZ2FsIGluZGV4ZXMgdG8gYWxsb3cgcHJvcGVyIGRldGVjdGlvbiBvZiB0aGUgZW5kIG9mIHRoZVxuICAgICBzZXF1ZW5jZS5cblxub2JqZWN0Ll9fbWlzc2luZ19fKHNlbGYsIGtleSlcblxuICAgQ2FsbGVkIGJ5ICJkaWN0Ii4iX19nZXRpdGVtX18oKSIgdG8gaW1wbGVtZW50ICJzZWxmW2tleV0iIGZvciBkaWN0XG4gICBzdWJjbGFzc2VzIHdoZW4ga2V5IGlzIG5vdCBpbiB0aGUgZGljdGlvbmFyeS5cblxub2JqZWN0Ll9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgYXNzaWdubWVudCB0byAic2VsZltrZXldIi4gIFNhbWUgbm90ZSBhcyBmb3JcbiAgICJfX2dldGl0ZW1fXygpIi4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgZm9yIG1hcHBpbmdzIGlmXG4gICB0aGUgb2JqZWN0cyBzdXBwb3J0IGNoYW5nZXMgdG8gdGhlIHZhbHVlcyBmb3Iga2V5cywgb3IgaWYgbmV3IGtleXNcbiAgIGNhbiBiZSBhZGRlZCwgb3IgZm9yIHNlcXVlbmNlcyBpZiBlbGVtZW50cyBjYW4gYmUgcmVwbGFjZWQuICBUaGVcbiAgIHNhbWUgZXhjZXB0aW9ucyBzaG91bGQgYmUgcmFpc2VkIGZvciBpbXByb3BlciAqa2V5KiB2YWx1ZXMgYXMgZm9yXG4gICB0aGUgIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC5cblxub2JqZWN0Ll9fZGVsaXRlbV9fKHNlbGYsIGtleSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBkZWxldGlvbiBvZiAic2VsZltrZXldIi4gIFNhbWUgbm90ZSBhcyBmb3JcbiAgICJfX2dldGl0ZW1fXygpIi4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgZm9yIG1hcHBpbmdzIGlmXG4gICB0aGUgb2JqZWN0cyBzdXBwb3J0IHJlbW92YWwgb2Yga2V5cywgb3IgZm9yIHNlcXVlbmNlcyBpZiBlbGVtZW50c1xuICAgY2FuIGJlIHJlbW92ZWQgZnJvbSB0aGUgc2VxdWVuY2UuICBUaGUgc2FtZSBleGNlcHRpb25zIHNob3VsZCBiZVxuICAgcmFpc2VkIGZvciBpbXByb3BlciAqa2V5KiB2YWx1ZXMgYXMgZm9yIHRoZSAiX19nZXRpdGVtX18oKSIgbWV0aG9kLlxuXG5vYmplY3QuX19pdGVyX18oc2VsZilcblxuICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW4gYW4gaXRlcmF0b3IgaXMgcmVxdWlyZWQgZm9yIGEgY29udGFpbmVyLlxuICAgVGhpcyBtZXRob2Qgc2hvdWxkIHJldHVybiBhIG5ldyBpdGVyYXRvciBvYmplY3QgdGhhdCBjYW4gaXRlcmF0ZVxuICAgb3ZlciBhbGwgdGhlIG9iamVjdHMgaW4gdGhlIGNvbnRhaW5lci4gIEZvciBtYXBwaW5ncywgaXQgc2hvdWxkXG4gICBpdGVyYXRlIG92ZXIgdGhlIGtleXMgb2YgdGhlIGNvbnRhaW5lci5cblxuICAgSXRlcmF0b3Igb2JqZWN0cyBhbHNvIG5lZWQgdG8gaW1wbGVtZW50IHRoaXMgbWV0aG9kOyB0aGV5IGFyZVxuICAgcmVxdWlyZWQgdG8gcmV0dXJuIHRoZW1zZWx2ZXMuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBpdGVyYXRvclxuICAgb2JqZWN0cywgc2VlICpJdGVyYXRvciBUeXBlcyouXG5cbm9iamVjdC5fX3JldmVyc2VkX18oc2VsZilcblxuICAgQ2FsbGVkIChpZiBwcmVzZW50KSBieSB0aGUgInJldmVyc2VkKCkiIGJ1aWx0LWluIHRvIGltcGxlbWVudFxuICAgcmV2ZXJzZSBpdGVyYXRpb24uICBJdCBzaG91bGQgcmV0dXJuIGEgbmV3IGl0ZXJhdG9yIG9iamVjdCB0aGF0XG4gICBpdGVyYXRlcyBvdmVyIGFsbCB0aGUgb2JqZWN0cyBpbiB0aGUgY29udGFpbmVyIGluIHJldmVyc2Ugb3JkZXIuXG5cbiAgIElmIHRoZSAiX19yZXZlcnNlZF9fKCkiIG1ldGhvZCBpcyBub3QgcHJvdmlkZWQsIHRoZSAicmV2ZXJzZWQoKSJcbiAgIGJ1aWx0LWluIHdpbGwgZmFsbCBiYWNrIHRvIHVzaW5nIHRoZSBzZXF1ZW5jZSBwcm90b2NvbCAoIl9fbGVuX18oKSJcbiAgIGFuZCAiX19nZXRpdGVtX18oKSIpLiAgT2JqZWN0cyB0aGF0IHN1cHBvcnQgdGhlIHNlcXVlbmNlIHByb3RvY29sXG4gICBzaG91bGQgb25seSBwcm92aWRlICJfX3JldmVyc2VkX18oKSIgaWYgdGhleSBjYW4gcHJvdmlkZSBhblxuICAgaW1wbGVtZW50YXRpb24gdGhhdCBpcyBtb3JlIGVmZmljaWVudCB0aGFuIHRoZSBvbmUgcHJvdmlkZWQgYnlcbiAgICJyZXZlcnNlZCgpIi5cblxuVGhlIG1lbWJlcnNoaXAgdGVzdCBvcGVyYXRvcnMgKCJpbiIgYW5kICJub3QgaW4iKSBhcmUgbm9ybWFsbHlcbmltcGxlbWVudGVkIGFzIGFuIGl0ZXJhdGlvbiB0aHJvdWdoIGEgc2VxdWVuY2UuICBIb3dldmVyLCBjb250YWluZXJcbm9iamVjdHMgY2FuIHN1cHBseSB0aGUgZm9sbG93aW5nIHNwZWNpYWwgbWV0aG9kIHdpdGggYSBtb3JlIGVmZmljaWVudFxuaW1wbGVtZW50YXRpb24sIHdoaWNoIGFsc28gZG9lcyBub3QgcmVxdWlyZSB0aGUgb2JqZWN0IGJlIGEgc2VxdWVuY2UuXG5cbm9iamVjdC5fX2NvbnRhaW5zX18oc2VsZiwgaXRlbSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzLiAgU2hvdWxkIHJldHVybiB0cnVlXG4gICBpZiAqaXRlbSogaXMgaW4gKnNlbGYqLCBmYWxzZSBvdGhlcndpc2UuICBGb3IgbWFwcGluZyBvYmplY3RzLCB0aGlzXG4gICBzaG91bGQgY29uc2lkZXIgdGhlIGtleXMgb2YgdGhlIG1hcHBpbmcgcmF0aGVyIHRoYW4gdGhlIHZhbHVlcyBvclxuICAgdGhlIGtleS1pdGVtIHBhaXJzLlxuXG4gICBGb3Igb2JqZWN0cyB0aGF0IGRvblwndCBkZWZpbmUgIl9fY29udGFpbnNfXygpIiwgdGhlIG1lbWJlcnNoaXAgdGVzdFxuICAgZmlyc3QgdHJpZXMgaXRlcmF0aW9uIHZpYSAiX19pdGVyX18oKSIsIHRoZW4gdGhlIG9sZCBzZXF1ZW5jZVxuICAgaXRlcmF0aW9uIHByb3RvY29sIHZpYSAiX19nZXRpdGVtX18oKSIsIHNlZSAqdGhpcyBzZWN0aW9uIGluIHRoZVxuICAgbGFuZ3VhZ2UgcmVmZXJlbmNlKi5cblxuXG5FbXVsYXRpbmcgbnVtZXJpYyB0eXBlc1xuPT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGVtdWxhdGUgbnVtZXJpYyBvYmplY3RzLlxuTWV0aG9kcyBjb3JyZXNwb25kaW5nIHRvIG9wZXJhdGlvbnMgdGhhdCBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGVcbnBhcnRpY3VsYXIga2luZCBvZiBudW1iZXIgaW1wbGVtZW50ZWQgKGUuZy4sIGJpdHdpc2Ugb3BlcmF0aW9ucyBmb3Jcbm5vbi1pbnRlZ3JhbCBudW1iZXJzKSBzaG91bGQgYmUgbGVmdCB1bmRlZmluZWQuXG5cbm9iamVjdC5fX2FkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fc3ViX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19tdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX21hdG11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fdHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX21vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZGl2bW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19wb3dfXyhzZWxmLCBvdGhlclssIG1vZHVsb10pXG5vYmplY3QuX19sc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fYW5kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX194b3JfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX29yX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJpbmFyeSBhcml0aG1ldGljXG4gICBvcGVyYXRpb25zICgiKyIsICItIiwgIioiLCAiQCIsICIvIiwgIi8vIiwgIiUiLCAiZGl2bW9kKCkiLFxuICAgInBvdygpIiwgIioqIiwgIjw8IiwgIj4+IiwgIiYiLCAiXiIsICJ8IikuICBGb3IgaW5zdGFuY2UsIHRvXG4gICBldmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiAieCArIHkiLCB3aGVyZSAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYVxuICAgY2xhc3MgdGhhdCBoYXMgYW4gIl9fYWRkX18oKSIgbWV0aG9kLCAieC5fX2FkZF9fKHkpIiBpcyBjYWxsZWQuXG4gICBUaGUgIl9fZGl2bW9kX18oKSIgbWV0aG9kIHNob3VsZCBiZSB0aGUgZXF1aXZhbGVudCB0byB1c2luZ1xuICAgIl9fZmxvb3JkaXZfXygpIiBhbmQgIl9fbW9kX18oKSI7IGl0IHNob3VsZCBub3QgYmUgcmVsYXRlZCB0b1xuICAgIl9fdHJ1ZWRpdl9fKCkiLiAgTm90ZSB0aGF0ICJfX3Bvd19fKCkiIHNob3VsZCBiZSBkZWZpbmVkIHRvIGFjY2VwdFxuICAgYW4gb3B0aW9uYWwgdGhpcmQgYXJndW1lbnQgaWYgdGhlIHRlcm5hcnkgdmVyc2lvbiBvZiB0aGUgYnVpbHQtaW5cbiAgICJwb3coKSIgZnVuY3Rpb24gaXMgdG8gYmUgc3VwcG9ydGVkLlxuXG4gICBJZiBvbmUgb2YgdGhvc2UgbWV0aG9kcyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBvcGVyYXRpb24gd2l0aCB0aGVcbiAgIHN1cHBsaWVkIGFyZ3VtZW50cywgaXQgc2hvdWxkIHJldHVybiAiTm90SW1wbGVtZW50ZWQiLlxuXG5vYmplY3QuX19yYWRkX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yc3ViX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ybXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ybWF0bXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ydHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmZsb29yZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ybW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yZGl2bW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ycG93X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ybHNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ycnNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yYW5kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yeG9yX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yb3JfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYmluYXJ5IGFyaXRobWV0aWNcbiAgIG9wZXJhdGlvbnMgKCIrIiwgIi0iLCAiKiIsICJAIiwgIi8iLCAiLy8iLCAiJSIsICJkaXZtb2QoKSIsXG4gICAicG93KCkiLCAiKioiLCAiPDwiLCAiPj4iLCAiJiIsICJeIiwgInwiKSB3aXRoIHJlZmxlY3RlZCAoc3dhcHBlZClcbiAgIG9wZXJhbmRzLiAgVGhlc2UgZnVuY3Rpb25zIGFyZSBvbmx5IGNhbGxlZCBpZiB0aGUgbGVmdCBvcGVyYW5kIGRvZXNcbiAgIG5vdCBzdXBwb3J0IHRoZSBjb3JyZXNwb25kaW5nIG9wZXJhdGlvbiBhbmQgdGhlIG9wZXJhbmRzIGFyZSBvZlxuICAgZGlmZmVyZW50IHR5cGVzLiBbMl0gRm9yIGluc3RhbmNlLCB0byBldmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiAieCAtXG4gICB5Iiwgd2hlcmUgKnkqIGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBoYXMgYW4gIl9fcnN1Yl9fKCkiXG4gICBtZXRob2QsICJ5Ll9fcnN1Yl9fKHgpIiBpcyBjYWxsZWQgaWYgInguX19zdWJfXyh5KSIgcmV0dXJuc1xuICAgKk5vdEltcGxlbWVudGVkKi5cblxuICAgTm90ZSB0aGF0IHRlcm5hcnkgInBvdygpIiB3aWxsIG5vdCB0cnkgY2FsbGluZyAiX19ycG93X18oKSIgKHRoZVxuICAgY29lcmNpb24gcnVsZXMgd291bGQgYmVjb21lIHRvbyBjb21wbGljYXRlZCkuXG5cbiAgIE5vdGU6IElmIHRoZSByaWdodCBvcGVyYW5kXCdzIHR5cGUgaXMgYSBzdWJjbGFzcyBvZiB0aGUgbGVmdFxuICAgICBvcGVyYW5kXCdzIHR5cGUgYW5kIHRoYXQgc3ViY2xhc3MgcHJvdmlkZXMgdGhlIHJlZmxlY3RlZCBtZXRob2RcbiAgICAgZm9yIHRoZSBvcGVyYXRpb24sIHRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGJlZm9yZSB0aGUgbGVmdFxuICAgICBvcGVyYW5kXCdzIG5vbi1yZWZsZWN0ZWQgbWV0aG9kLiAgVGhpcyBiZWhhdmlvciBhbGxvd3Mgc3ViY2xhc3Nlc1xuICAgICB0byBvdmVycmlkZSB0aGVpciBhbmNlc3RvcnNcJyBvcGVyYXRpb25zLlxuXG5vYmplY3QuX19pYWRkX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pc3ViX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pbXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pbWF0bXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pdHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faWZsb29yZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pbW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pcG93X18oc2VsZiwgb3RoZXJbLCBtb2R1bG9dKVxub2JqZWN0Ll9faWxzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXJzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faWFuZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXhvcl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW9yX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGF1Z21lbnRlZCBhcml0aG1ldGljXG4gICBhc3NpZ25tZW50cyAoIis9IiwgIi09IiwgIio9IiwgIkA9IiwgIi89IiwgIi8vPSIsICIlPSIsICIqKj0iLFxuICAgIjw8PSIsICI+Pj0iLCAiJj0iLCAiXj0iLCAifD0iKS4gIFRoZXNlIG1ldGhvZHMgc2hvdWxkIGF0dGVtcHQgdG9cbiAgIGRvIHRoZSBvcGVyYXRpb24gaW4tcGxhY2UgKG1vZGlmeWluZyAqc2VsZiopIGFuZCByZXR1cm4gdGhlIHJlc3VsdFxuICAgKHdoaWNoIGNvdWxkIGJlLCBidXQgZG9lcyBub3QgaGF2ZSB0byBiZSwgKnNlbGYqKS4gIElmIGEgc3BlY2lmaWNcbiAgIG1ldGhvZCBpcyBub3QgZGVmaW5lZCwgdGhlIGF1Z21lbnRlZCBhc3NpZ25tZW50IGZhbGxzIGJhY2sgdG8gdGhlXG4gICBub3JtYWwgbWV0aG9kcy4gIEZvciBpbnN0YW5jZSwgaWYgKngqIGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3NcbiAgIHdpdGggYW4gIl9faWFkZF9fKCkiIG1ldGhvZCwgInggKz0geSIgaXMgZXF1aXZhbGVudCB0byAieCA9XG4gICB4Ll9faWFkZF9fKHkpIiAuIE90aGVyd2lzZSwgInguX19hZGRfXyh5KSIgYW5kICJ5Ll9fcmFkZF9fKHgpIiBhcmVcbiAgIGNvbnNpZGVyZWQsIGFzIHdpdGggdGhlIGV2YWx1YXRpb24gb2YgInggKyB5Ii4gSW4gY2VydGFpblxuICAgc2l0dWF0aW9ucywgYXVnbWVudGVkIGFzc2lnbm1lbnQgY2FuIHJlc3VsdCBpbiB1bmV4cGVjdGVkIGVycm9yc1xuICAgKHNlZSAqV2h5IGRvZXMgYV90dXBsZVtpXSArPSBbXCdpdGVtXCddIHJhaXNlIGFuIGV4Y2VwdGlvbiB3aGVuIHRoZVxuICAgYWRkaXRpb24gd29ya3M/KiksIGJ1dCB0aGlzIGJlaGF2aW9yIGlzIGluIGZhY3QgcGFydCBvZiB0aGUgZGF0YVxuICAgbW9kZWwuXG5cbm9iamVjdC5fX25lZ19fKHNlbGYpXG5vYmplY3QuX19wb3NfXyhzZWxmKVxub2JqZWN0Ll9fYWJzX18oc2VsZilcbm9iamVjdC5fX2ludmVydF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIHVuYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9ucyAoIi0iLCAiKyIsXG4gICAiYWJzKCkiIGFuZCAifiIpLlxuXG5vYmplY3QuX19jb21wbGV4X18oc2VsZilcbm9iamVjdC5fX2ludF9fKHNlbGYpXG5vYmplY3QuX19mbG9hdF9fKHNlbGYpXG5vYmplY3QuX19yb3VuZF9fKHNlbGZbLCBuXSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zICJjb21wbGV4KCkiLCAiaW50KCkiLFxuICAgImZsb2F0KCkiIGFuZCAicm91bmQoKSIuICBTaG91bGQgcmV0dXJuIGEgdmFsdWUgb2YgdGhlIGFwcHJvcHJpYXRlXG4gICB0eXBlLlxuXG5vYmplY3QuX19pbmRleF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgIm9wZXJhdG9yLmluZGV4KCkiLCBhbmQgd2hlbmV2ZXIgUHl0aG9uIG5lZWRzXG4gICB0byBsb3NzbGVzc2x5IGNvbnZlcnQgdGhlIG51bWVyaWMgb2JqZWN0IHRvIGFuIGludGVnZXIgb2JqZWN0IChzdWNoXG4gICBhcyBpbiBzbGljaW5nLCBvciBpbiB0aGUgYnVpbHQtaW4gImJpbigpIiwgImhleCgpIiBhbmQgIm9jdCgpIlxuICAgZnVuY3Rpb25zKS4gUHJlc2VuY2Ugb2YgdGhpcyBtZXRob2QgaW5kaWNhdGVzIHRoYXQgdGhlIG51bWVyaWNcbiAgIG9iamVjdCBpcyBhbiBpbnRlZ2VyIHR5cGUuICBNdXN0IHJldHVybiBhbiBpbnRlZ2VyLlxuXG4gICBOb3RlOiBJbiBvcmRlciB0byBoYXZlIGEgY29oZXJlbnQgaW50ZWdlciB0eXBlIGNsYXNzLCB3aGVuXG4gICAgICJfX2luZGV4X18oKSIgaXMgZGVmaW5lZCAiX19pbnRfXygpIiBzaG91bGQgYWxzbyBiZSBkZWZpbmVkLCBhbmRcbiAgICAgYm90aCBzaG91bGQgcmV0dXJuIHRoZSBzYW1lIHZhbHVlLlxuXG5cbldpdGggU3RhdGVtZW50IENvbnRleHQgTWFuYWdlcnNcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQSAqY29udGV4dCBtYW5hZ2VyKiBpcyBhbiBvYmplY3QgdGhhdCBkZWZpbmVzIHRoZSBydW50aW1lIGNvbnRleHQgdG9cbmJlIGVzdGFibGlzaGVkIHdoZW4gZXhlY3V0aW5nIGEgIndpdGgiIHN0YXRlbWVudC4gVGhlIGNvbnRleHQgbWFuYWdlclxuaGFuZGxlcyB0aGUgZW50cnkgaW50bywgYW5kIHRoZSBleGl0IGZyb20sIHRoZSBkZXNpcmVkIHJ1bnRpbWUgY29udGV4dFxuZm9yIHRoZSBleGVjdXRpb24gb2YgdGhlIGJsb2NrIG9mIGNvZGUuICBDb250ZXh0IG1hbmFnZXJzIGFyZSBub3JtYWxseVxuaW52b2tlZCB1c2luZyB0aGUgIndpdGgiIHN0YXRlbWVudCAoZGVzY3JpYmVkIGluIHNlY3Rpb24gKlRoZSB3aXRoXG5zdGF0ZW1lbnQqKSwgYnV0IGNhbiBhbHNvIGJlIHVzZWQgYnkgZGlyZWN0bHkgaW52b2tpbmcgdGhlaXIgbWV0aG9kcy5cblxuVHlwaWNhbCB1c2VzIG9mIGNvbnRleHQgbWFuYWdlcnMgaW5jbHVkZSBzYXZpbmcgYW5kIHJlc3RvcmluZyB2YXJpb3VzXG5raW5kcyBvZiBnbG9iYWwgc3RhdGUsIGxvY2tpbmcgYW5kIHVubG9ja2luZyByZXNvdXJjZXMsIGNsb3Npbmcgb3BlbmVkXG5maWxlcywgZXRjLlxuXG5Gb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBjb250ZXh0IG1hbmFnZXJzLCBzZWUgKkNvbnRleHQgTWFuYWdlciBUeXBlcyouXG5cbm9iamVjdC5fX2VudGVyX18oc2VsZilcblxuICAgRW50ZXIgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiBUaGUgIndpdGgiXG4gICBzdGF0ZW1lbnQgd2lsbCBiaW5kIHRoaXMgbWV0aG9kXCdzIHJldHVybiB2YWx1ZSB0byB0aGUgdGFyZ2V0KHMpXG4gICBzcGVjaWZpZWQgaW4gdGhlICJhcyIgY2xhdXNlIG9mIHRoZSBzdGF0ZW1lbnQsIGlmIGFueS5cblxub2JqZWN0Ll9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsdWUsIHRyYWNlYmFjaylcblxuICAgRXhpdCB0aGUgcnVudGltZSBjb250ZXh0IHJlbGF0ZWQgdG8gdGhpcyBvYmplY3QuIFRoZSBwYXJhbWV0ZXJzXG4gICBkZXNjcmliZSB0aGUgZXhjZXB0aW9uIHRoYXQgY2F1c2VkIHRoZSBjb250ZXh0IHRvIGJlIGV4aXRlZC4gSWYgdGhlXG4gICBjb250ZXh0IHdhcyBleGl0ZWQgd2l0aG91dCBhbiBleGNlcHRpb24sIGFsbCB0aHJlZSBhcmd1bWVudHMgd2lsbFxuICAgYmUgIk5vbmUiLlxuXG4gICBJZiBhbiBleGNlcHRpb24gaXMgc3VwcGxpZWQsIGFuZCB0aGUgbWV0aG9kIHdpc2hlcyB0byBzdXBwcmVzcyB0aGVcbiAgIGV4Y2VwdGlvbiAoaS5lLiwgcHJldmVudCBpdCBmcm9tIGJlaW5nIHByb3BhZ2F0ZWQpLCBpdCBzaG91bGRcbiAgIHJldHVybiBhIHRydWUgdmFsdWUuIE90aGVyd2lzZSwgdGhlIGV4Y2VwdGlvbiB3aWxsIGJlIHByb2Nlc3NlZFxuICAgbm9ybWFsbHkgdXBvbiBleGl0IGZyb20gdGhpcyBtZXRob2QuXG5cbiAgIE5vdGUgdGhhdCAiX19leGl0X18oKSIgbWV0aG9kcyBzaG91bGQgbm90IHJlcmFpc2UgdGhlIHBhc3NlZC1pblxuICAgZXhjZXB0aW9uOyB0aGlzIGlzIHRoZSBjYWxsZXJcJ3MgcmVzcG9uc2liaWxpdHkuXG5cblNlZSBhbHNvOiAqKlBFUCAzNDMqKiAtIFRoZSAid2l0aCIgc3RhdGVtZW50XG5cbiAgICAgVGhlIHNwZWNpZmljYXRpb24sIGJhY2tncm91bmQsIGFuZCBleGFtcGxlcyBmb3IgdGhlIFB5dGhvbiAid2l0aCJcbiAgICAgc3RhdGVtZW50LlxuXG5cblNwZWNpYWwgbWV0aG9kIGxvb2t1cFxuPT09PT09PT09PT09PT09PT09PT09XG5cbkZvciBjdXN0b20gY2xhc3NlcywgaW1wbGljaXQgaW52b2NhdGlvbnMgb2Ygc3BlY2lhbCBtZXRob2RzIGFyZSBvbmx5XG5ndWFyYW50ZWVkIHRvIHdvcmsgY29ycmVjdGx5IGlmIGRlZmluZWQgb24gYW4gb2JqZWN0XCdzIHR5cGUsIG5vdCBpblxudGhlIG9iamVjdFwncyBpbnN0YW5jZSBkaWN0aW9uYXJ5LiAgVGhhdCBiZWhhdmlvdXIgaXMgdGhlIHJlYXNvbiB3aHlcbnRoZSBmb2xsb3dpbmcgY29kZSByYWlzZXMgYW4gZXhjZXB0aW9uOlxuXG4gICA+Pj4gY2xhc3MgQzpcbiAgIC4uLiAgICAgcGFzc1xuICAgLi4uXG4gICA+Pj4gYyA9IEMoKVxuICAgPj4+IGMuX19sZW5fXyA9IGxhbWJkYTogNVxuICAgPj4+IGxlbihjKVxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPlxuICAgVHlwZUVycm9yOiBvYmplY3Qgb2YgdHlwZSBcJ0NcJyBoYXMgbm8gbGVuKClcblxuVGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhpcyBiZWhhdmlvdXIgbGllcyB3aXRoIGEgbnVtYmVyIG9mIHNwZWNpYWxcbm1ldGhvZHMgc3VjaCBhcyAiX19oYXNoX18oKSIgYW5kICJfX3JlcHJfXygpIiB0aGF0IGFyZSBpbXBsZW1lbnRlZCBieVxuYWxsIG9iamVjdHMsIGluY2x1ZGluZyB0eXBlIG9iamVjdHMuIElmIHRoZSBpbXBsaWNpdCBsb29rdXAgb2YgdGhlc2Vcbm1ldGhvZHMgdXNlZCB0aGUgY29udmVudGlvbmFsIGxvb2t1cCBwcm9jZXNzLCB0aGV5IHdvdWxkIGZhaWwgd2hlblxuaW52b2tlZCBvbiB0aGUgdHlwZSBvYmplY3QgaXRzZWxmOlxuXG4gICA+Pj4gMSAuX19oYXNoX18oKSA9PSBoYXNoKDEpXG4gICBUcnVlXG4gICA+Pj4gaW50Ll9faGFzaF9fKCkgPT0gaGFzaChpbnQpXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+XG4gICBUeXBlRXJyb3I6IGRlc2NyaXB0b3IgXCdfX2hhc2hfX1wnIG9mIFwnaW50XCcgb2JqZWN0IG5lZWRzIGFuIGFyZ3VtZW50XG5cbkluY29ycmVjdGx5IGF0dGVtcHRpbmcgdG8gaW52b2tlIGFuIHVuYm91bmQgbWV0aG9kIG9mIGEgY2xhc3MgaW4gdGhpc1xud2F5IGlzIHNvbWV0aW1lcyByZWZlcnJlZCB0byBhcyBcJ21ldGFjbGFzcyBjb25mdXNpb25cJywgYW5kIGlzIGF2b2lkZWRcbmJ5IGJ5cGFzc2luZyB0aGUgaW5zdGFuY2Ugd2hlbiBsb29raW5nIHVwIHNwZWNpYWwgbWV0aG9kczpcblxuICAgPj4+IHR5cGUoMSkuX19oYXNoX18oMSkgPT0gaGFzaCgxKVxuICAgVHJ1ZVxuICAgPj4+IHR5cGUoaW50KS5fX2hhc2hfXyhpbnQpID09IGhhc2goaW50KVxuICAgVHJ1ZVxuXG5JbiBhZGRpdGlvbiB0byBieXBhc3NpbmcgYW55IGluc3RhbmNlIGF0dHJpYnV0ZXMgaW4gdGhlIGludGVyZXN0IG9mXG5jb3JyZWN0bmVzcywgaW1wbGljaXQgc3BlY2lhbCBtZXRob2QgbG9va3VwIGdlbmVyYWxseSBhbHNvIGJ5cGFzc2VzXG50aGUgIl9fZ2V0YXR0cmlidXRlX18oKSIgbWV0aG9kIGV2ZW4gb2YgdGhlIG9iamVjdFwncyBtZXRhY2xhc3M6XG5cbiAgID4+PiBjbGFzcyBNZXRhKHR5cGUpOlxuICAgLi4uICAgICBkZWYgX19nZXRhdHRyaWJ1dGVfXygqYXJncyk6XG4gICAuLi4gICAgICAgICBwcmludCgiTWV0YWNsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkIilcbiAgIC4uLiAgICAgICAgIHJldHVybiB0eXBlLl9fZ2V0YXR0cmlidXRlX18oKmFyZ3MpXG4gICAuLi5cbiAgID4+PiBjbGFzcyBDKG9iamVjdCwgbWV0YWNsYXNzPU1ldGEpOlxuICAgLi4uICAgICBkZWYgX19sZW5fXyhzZWxmKTpcbiAgIC4uLiAgICAgICAgIHJldHVybiAxMFxuICAgLi4uICAgICBkZWYgX19nZXRhdHRyaWJ1dGVfXygqYXJncyk6XG4gICAuLi4gICAgICAgICBwcmludCgiQ2xhc3MgZ2V0YXR0cmlidXRlIGludm9rZWQiKVxuICAgLi4uICAgICAgICAgcmV0dXJuIG9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKCphcmdzKVxuICAgLi4uXG4gICA+Pj4gYyA9IEMoKVxuICAgPj4+IGMuX19sZW5fXygpICAgICAgICAgICAgICAgICAjIEV4cGxpY2l0IGxvb2t1cCB2aWEgaW5zdGFuY2VcbiAgIENsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkXG4gICAxMFxuICAgPj4+IHR5cGUoYykuX19sZW5fXyhjKSAgICAgICAgICAjIEV4cGxpY2l0IGxvb2t1cCB2aWEgdHlwZVxuICAgTWV0YWNsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkXG4gICAxMFxuICAgPj4+IGxlbihjKSAgICAgICAgICAgICAgICAgICAgICAjIEltcGxpY2l0IGxvb2t1cFxuICAgMTBcblxuQnlwYXNzaW5nIHRoZSAiX19nZXRhdHRyaWJ1dGVfXygpIiBtYWNoaW5lcnkgaW4gdGhpcyBmYXNoaW9uIHByb3ZpZGVzXG5zaWduaWZpY2FudCBzY29wZSBmb3Igc3BlZWQgb3B0aW1pc2F0aW9ucyB3aXRoaW4gdGhlIGludGVycHJldGVyLCBhdFxudGhlIGNvc3Qgb2Ygc29tZSBmbGV4aWJpbGl0eSBpbiB0aGUgaGFuZGxpbmcgb2Ygc3BlY2lhbCBtZXRob2RzICh0aGVcbnNwZWNpYWwgbWV0aG9kICptdXN0KiBiZSBzZXQgb24gdGhlIGNsYXNzIG9iamVjdCBpdHNlbGYgaW4gb3JkZXIgdG8gYmVcbmNvbnNpc3RlbnRseSBpbnZva2VkIGJ5IHRoZSBpbnRlcnByZXRlcikuXG4nLAotICdzdHJpbmctbWV0aG9kcyc6IHUnXG5TdHJpbmcgTWV0aG9kc1xuKioqKioqKioqKioqKipcblxuU3RyaW5ncyBpbXBsZW1lbnQgYWxsIG9mIHRoZSAqY29tbW9uKiBzZXF1ZW5jZSBvcGVyYXRpb25zLCBhbG9uZyB3aXRoXG50aGUgYWRkaXRpb25hbCBtZXRob2RzIGRlc2NyaWJlZCBiZWxvdy5cblxuU3RyaW5ncyBhbHNvIHN1cHBvcnQgdHdvIHN0eWxlcyBvZiBzdHJpbmcgZm9ybWF0dGluZywgb25lIHByb3ZpZGluZyBhXG5sYXJnZSBkZWdyZWUgb2YgZmxleGliaWxpdHkgYW5kIGN1c3RvbWl6YXRpb24gKHNlZSAic3RyLmZvcm1hdCgpIixcbipGb3JtYXQgU3RyaW5nIFN5bnRheCogYW5kICpDdXN0b20gU3RyaW5nIEZvcm1hdHRpbmcqKSBhbmQgdGhlIG90aGVyXG5iYXNlZCBvbiBDICJwcmludGYiIHN0eWxlIGZvcm1hdHRpbmcgdGhhdCBoYW5kbGVzIGEgbmFycm93ZXIgcmFuZ2Ugb2ZcbnR5cGVzIGFuZCBpcyBzbGlnaHRseSBoYXJkZXIgdG8gdXNlIGNvcnJlY3RseSwgYnV0IGlzIG9mdGVuIGZhc3RlciBmb3JcbnRoZSBjYXNlcyBpdCBjYW4gaGFuZGxlICgqcHJpbnRmLXN0eWxlIFN0cmluZyBGb3JtYXR0aW5nKikuXG5cblRoZSAqVGV4dCBQcm9jZXNzaW5nIFNlcnZpY2VzKiBzZWN0aW9uIG9mIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGNvdmVyc1xuYSBudW1iZXIgb2Ygb3RoZXIgbW9kdWxlcyB0aGF0IHByb3ZpZGUgdmFyaW91cyB0ZXh0IHJlbGF0ZWQgdXRpbGl0aWVzXG4oaW5jbHVkaW5nIHJlZ3VsYXIgZXhwcmVzc2lvbiBzdXBwb3J0IGluIHRoZSAicmUiIG1vZHVsZSkuXG5cbnN0ci5jYXBpdGFsaXplKClcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggaXRzIGZpcnN0IGNoYXJhY3RlciBjYXBpdGFsaXplZFxuICAgYW5kIHRoZSByZXN0IGxvd2VyY2FzZWQuXG5cbnN0ci5jYXNlZm9sZCgpXG5cbiAgIFJldHVybiBhIGNhc2Vmb2xkZWQgY29weSBvZiB0aGUgc3RyaW5nLiBDYXNlZm9sZGVkIHN0cmluZ3MgbWF5IGJlXG4gICB1c2VkIGZvciBjYXNlbGVzcyBtYXRjaGluZy5cblxuICAgQ2FzZWZvbGRpbmcgaXMgc2ltaWxhciB0byBsb3dlcmNhc2luZyBidXQgbW9yZSBhZ2dyZXNzaXZlIGJlY2F1c2VcbiAgIGl0IGlzIGludGVuZGVkIHRvIHJlbW92ZSBhbGwgY2FzZSBkaXN0aW5jdGlvbnMgaW4gYSBzdHJpbmcuIEZvclxuICAgZXhhbXBsZSwgdGhlIEdlcm1hbiBsb3dlcmNhc2UgbGV0dGVyICJcJ1x4ZGZcJyIgaXMgZXF1aXZhbGVudCB0byAiInNzIiIuXG4gICBTaW5jZSBpdCBpcyBhbHJlYWR5IGxvd2VyY2FzZSwgImxvd2VyKCkiIHdvdWxkIGRvIG5vdGhpbmcgdG8gIlwnXHhkZlwnIjtcbiAgICJjYXNlZm9sZCgpIiBjb252ZXJ0cyBpdCB0byAiInNzIiIuXG5cbiAgIFRoZSBjYXNlZm9sZGluZyBhbGdvcml0aG0gaXMgZGVzY3JpYmVkIGluIHNlY3Rpb24gMy4xMyBvZiB0aGVcbiAgIFVuaWNvZGUgU3RhbmRhcmQuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMy5cblxuc3RyLmNlbnRlcih3aWR0aFssIGZpbGxjaGFyXSlcblxuICAgUmV0dXJuIGNlbnRlcmVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCAqd2lkdGgqLiBQYWRkaW5nIGlzIGRvbmVcbiAgIHVzaW5nIHRoZSBzcGVjaWZpZWQgKmZpbGxjaGFyKiAoZGVmYXVsdCBpcyBhbiBBU0NJSSBzcGFjZSkuIFRoZVxuICAgb3JpZ2luYWwgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvXG4gICAibGVuKHMpIi5cblxuc3RyLmNvdW50KHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiB0aGUgbnVtYmVyIG9mIG5vbi1vdmVybGFwcGluZyBvY2N1cnJlbmNlcyBvZiBzdWJzdHJpbmcgKnN1YipcbiAgIGluIHRoZSByYW5nZSBbKnN0YXJ0KiwgKmVuZCpdLiAgT3B0aW9uYWwgYXJndW1lbnRzICpzdGFydCogYW5kXG4gICAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2Ugbm90YXRpb24uXG5cbnN0ci5lbmNvZGUoZW5jb2Rpbmc9InV0Zi04IiwgZXJyb3JzPSJzdHJpY3QiKVxuXG4gICBSZXR1cm4gYW4gZW5jb2RlZCB2ZXJzaW9uIG9mIHRoZSBzdHJpbmcgYXMgYSBieXRlcyBvYmplY3QuIERlZmF1bHRcbiAgIGVuY29kaW5nIGlzICJcJ3V0Zi04XCciLiAqZXJyb3JzKiBtYXkgYmUgZ2l2ZW4gdG8gc2V0IGEgZGlmZmVyZW50XG4gICBlcnJvciBoYW5kbGluZyBzY2hlbWUuIFRoZSBkZWZhdWx0IGZvciAqZXJyb3JzKiBpcyAiXCdzdHJpY3RcJyIsXG4gICBtZWFuaW5nIHRoYXQgZW5jb2RpbmcgZXJyb3JzIHJhaXNlIGEgIlVuaWNvZGVFcnJvciIuIE90aGVyIHBvc3NpYmxlXG4gICB2YWx1ZXMgYXJlICJcJ2lnbm9yZVwnIiwgIlwncmVwbGFjZVwnIiwgIlwneG1sY2hhcnJlZnJlcGxhY2VcJyIsXG4gICAiXCdiYWNrc2xhc2hyZXBsYWNlXCciIGFuZCBhbnkgb3RoZXIgbmFtZSByZWdpc3RlcmVkIHZpYVxuICAgImNvZGVjcy5yZWdpc3Rlcl9lcnJvcigpIiwgc2VlIHNlY3Rpb24gKkVycm9yIEhhbmRsZXJzKi4gRm9yIGEgbGlzdFxuICAgb2YgcG9zc2libGUgZW5jb2RpbmdzLCBzZWUgc2VjdGlvbiAqU3RhbmRhcmQgRW5jb2RpbmdzKi5cblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogU3VwcG9ydCBmb3Iga2V5d29yZCBhcmd1bWVudHMgYWRkZWQuXG5cbnN0ci5lbmRzd2l0aChzdWZmaXhbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gIlRydWUiIGlmIHRoZSBzdHJpbmcgZW5kcyB3aXRoIHRoZSBzcGVjaWZpZWQgKnN1ZmZpeCosXG4gICBvdGhlcndpc2UgcmV0dXJuICJGYWxzZSIuICAqc3VmZml4KiBjYW4gYWxzbyBiZSBhIHR1cGxlIG9mIHN1ZmZpeGVzXG4gICB0byBsb29rIGZvci4gIFdpdGggb3B0aW9uYWwgKnN0YXJ0KiwgdGVzdCBiZWdpbm5pbmcgYXQgdGhhdFxuICAgcG9zaXRpb24uICBXaXRoIG9wdGlvbmFsICplbmQqLCBzdG9wIGNvbXBhcmluZyBhdCB0aGF0IHBvc2l0aW9uLlxuXG5zdHIuZXhwYW5kdGFicyh0YWJzaXplPTgpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aGVyZSBhbGwgdGFiIGNoYXJhY3RlcnMgYXJlIHJlcGxhY2VkXG4gICBieSBvbmUgb3IgbW9yZSBzcGFjZXMsIGRlcGVuZGluZyBvbiB0aGUgY3VycmVudCBjb2x1bW4gYW5kIHRoZVxuICAgZ2l2ZW4gdGFiIHNpemUuICBUYWIgcG9zaXRpb25zIG9jY3VyIGV2ZXJ5ICp0YWJzaXplKiBjaGFyYWN0ZXJzXG4gICAoZGVmYXVsdCBpcyA4LCBnaXZpbmcgdGFiIHBvc2l0aW9ucyBhdCBjb2x1bW5zIDAsIDgsIDE2IGFuZCBzbyBvbikuXG4gICBUbyBleHBhbmQgdGhlIHN0cmluZywgdGhlIGN1cnJlbnQgY29sdW1uIGlzIHNldCB0byB6ZXJvIGFuZCB0aGVcbiAgIHN0cmluZyBpcyBleGFtaW5lZCBjaGFyYWN0ZXIgYnkgY2hhcmFjdGVyLiAgSWYgdGhlIGNoYXJhY3RlciBpcyBhXG4gICB0YWIgKCJcXHQiKSwgb25lIG9yIG1vcmUgc3BhY2UgY2hhcmFjdGVycyBhcmUgaW5zZXJ0ZWQgaW4gdGhlIHJlc3VsdFxuICAgdW50aWwgdGhlIGN1cnJlbnQgY29sdW1uIGlzIGVxdWFsIHRvIHRoZSBuZXh0IHRhYiBwb3NpdGlvbi4gKFRoZVxuICAgdGFiIGNoYXJhY3RlciBpdHNlbGYgaXMgbm90IGNvcGllZC4pICBJZiB0aGUgY2hhcmFjdGVyIGlzIGEgbmV3bGluZVxuICAgKCJcXG4iKSBvciByZXR1cm4gKCJcXHIiKSwgaXQgaXMgY29waWVkIGFuZCB0aGUgY3VycmVudCBjb2x1bW4gaXNcbiAgIHJlc2V0IHRvIHplcm8uICBBbnkgb3RoZXIgY2hhcmFjdGVyIGlzIGNvcGllZCB1bmNoYW5nZWQgYW5kIHRoZVxuICAgY3VycmVudCBjb2x1bW4gaXMgaW5jcmVtZW50ZWQgYnkgb25lIHJlZ2FyZGxlc3Mgb2YgaG93IHRoZVxuICAgY2hhcmFjdGVyIGlzIHJlcHJlc2VudGVkIHdoZW4gcHJpbnRlZC5cblxuICAgPj4+IFwnMDFcXHQwMTJcXHQwMTIzXFx0MDEyMzRcJy5leHBhbmR0YWJzKClcbiAgIFwnMDEgICAgICAwMTIgICAgIDAxMjMgICAgMDEyMzRcJ1xuICAgPj4+IFwnMDFcXHQwMTJcXHQwMTIzXFx0MDEyMzRcJy5leHBhbmR0YWJzKDQpXG4gICBcJzAxICAwMTIgMDEyMyAgICAwMTIzNFwnXG5cbnN0ci5maW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiB0aGUgbG93ZXN0IGluZGV4IGluIHRoZSBzdHJpbmcgd2hlcmUgc3Vic3RyaW5nICpzdWIqIGlzXG4gICBmb3VuZCB3aXRoaW4gdGhlIHNsaWNlICJzW3N0YXJ0OmVuZF0iLiAgT3B0aW9uYWwgYXJndW1lbnRzICpzdGFydCpcbiAgIGFuZCAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2Ugbm90YXRpb24uICBSZXR1cm4gIi0xIiBpZlxuICAgKnN1YiogaXMgbm90IGZvdW5kLlxuXG4gICBOb3RlOiBUaGUgImZpbmQoKSIgbWV0aG9kIHNob3VsZCBiZSB1c2VkIG9ubHkgaWYgeW91IG5lZWQgdG8ga25vd1xuICAgICB0aGUgcG9zaXRpb24gb2YgKnN1YiouICBUbyBjaGVjayBpZiAqc3ViKiBpcyBhIHN1YnN0cmluZyBvciBub3QsXG4gICAgIHVzZSB0aGUgImluIiBvcGVyYXRvcjpcblxuICAgICAgICA+Pj4gXCdQeVwnIGluIFwnUHl0aG9uXCdcbiAgICAgICAgVHJ1ZVxuXG5zdHIuZm9ybWF0KCphcmdzLCAqKmt3YXJncylcblxuICAgUGVyZm9ybSBhIHN0cmluZyBmb3JtYXR0aW5nIG9wZXJhdGlvbi4gIFRoZSBzdHJpbmcgb24gd2hpY2ggdGhpc1xuICAgbWV0aG9kIGlzIGNhbGxlZCBjYW4gY29udGFpbiBsaXRlcmFsIHRleHQgb3IgcmVwbGFjZW1lbnQgZmllbGRzXG4gICBkZWxpbWl0ZWQgYnkgYnJhY2VzICJ7fSIuICBFYWNoIHJlcGxhY2VtZW50IGZpZWxkIGNvbnRhaW5zIGVpdGhlclxuICAgdGhlIG51bWVyaWMgaW5kZXggb2YgYSBwb3NpdGlvbmFsIGFyZ3VtZW50LCBvciB0aGUgbmFtZSBvZiBhXG4gICBrZXl3b3JkIGFyZ3VtZW50LiAgUmV0dXJucyBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aGVyZSBlYWNoXG4gICByZXBsYWNlbWVudCBmaWVsZCBpcyByZXBsYWNlZCB3aXRoIHRoZSBzdHJpbmcgdmFsdWUgb2YgdGhlXG4gICBjb3JyZXNwb25kaW5nIGFyZ3VtZW50LlxuXG4gICA+Pj4gIlRoZSBzdW0gb2YgMSArIDIgaXMgezB9Ii5mb3JtYXQoMSsyKVxuICAgXCdUaGUgc3VtIG9mIDEgKyAyIGlzIDNcJ1xuXG4gICBTZWUgKkZvcm1hdCBTdHJpbmcgU3ludGF4KiBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUgdmFyaW91c1xuICAgZm9ybWF0dGluZyBvcHRpb25zIHRoYXQgY2FuIGJlIHNwZWNpZmllZCBpbiBmb3JtYXQgc3RyaW5ncy5cblxuc3RyLmZvcm1hdF9tYXAobWFwcGluZylcblxuICAgU2ltaWxhciB0byAic3RyLmZvcm1hdCgqKm1hcHBpbmcpIiwgZXhjZXB0IHRoYXQgIm1hcHBpbmciIGlzIHVzZWRcbiAgIGRpcmVjdGx5IGFuZCBub3QgY29waWVkIHRvIGEgImRpY3QiLiAgVGhpcyBpcyB1c2VmdWwgaWYgZm9yIGV4YW1wbGVcbiAgICJtYXBwaW5nIiBpcyBhIGRpY3Qgc3ViY2xhc3M6XG5cbiAgID4+PiBjbGFzcyBEZWZhdWx0KGRpY3QpOlxuICAgLi4uICAgICBkZWYgX19taXNzaW5nX18oc2VsZiwga2V5KTpcbiAgIC4uLiAgICAgICAgIHJldHVybiBrZXlcbiAgIC4uLlxuICAgPj4+IFwne25hbWV9IHdhcyBib3JuIGluIHtjb3VudHJ5fVwnLmZvcm1hdF9tYXAoRGVmYXVsdChuYW1lPVwnR3VpZG9cJykpXG4gICBcJ0d1aWRvIHdhcyBib3JuIGluIGNvdW50cnlcJ1xuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbnN0ci5pbmRleChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBMaWtlICJmaW5kKCkiLCBidXQgcmFpc2UgIlZhbHVlRXJyb3IiIHdoZW4gdGhlIHN1YnN0cmluZyBpcyBub3RcbiAgIGZvdW5kLlxuXG5zdHIuaXNhbG51bSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGFscGhhbnVtZXJpYyBhbmRcbiAgIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gIEEgY2hhcmFjdGVyICJjIlxuICAgaXMgYWxwaGFudW1lcmljIGlmIG9uZSBvZiB0aGUgZm9sbG93aW5nIHJldHVybnMgIlRydWUiOlxuICAgImMuaXNhbHBoYSgpIiwgImMuaXNkZWNpbWFsKCkiLCAiYy5pc2RpZ2l0KCkiLCBvciAiYy5pc251bWVyaWMoKSIuXG5cbnN0ci5pc2FscGhhKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgYWxwaGFiZXRpYyBhbmRcbiAgIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gIEFscGhhYmV0aWNcbiAgIGNoYXJhY3RlcnMgYXJlIHRob3NlIGNoYXJhY3RlcnMgZGVmaW5lZCBpbiB0aGUgVW5pY29kZSBjaGFyYWN0ZXJcbiAgIGRhdGFiYXNlIGFzICJMZXR0ZXIiLCBpLmUuLCB0aG9zZSB3aXRoIGdlbmVyYWwgY2F0ZWdvcnkgcHJvcGVydHlcbiAgIGJlaW5nIG9uZSBvZiAiTG0iLCAiTHQiLCAiTHUiLCAiTGwiLCBvciAiTG8iLiAgTm90ZSB0aGF0IHRoaXMgaXNcbiAgIGRpZmZlcmVudCBmcm9tIHRoZSAiQWxwaGFiZXRpYyIgcHJvcGVydHkgZGVmaW5lZCBpbiB0aGUgVW5pY29kZVxuICAgU3RhbmRhcmQuXG5cbnN0ci5pc2RlY2ltYWwoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBkZWNpbWFsIGNoYXJhY3RlcnNcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuIERlY2ltYWxcbiAgIGNoYXJhY3RlcnMgYXJlIHRob3NlIGZyb20gZ2VuZXJhbCBjYXRlZ29yeSAiTmQiLiBUaGlzIGNhdGVnb3J5XG4gICBpbmNsdWRlcyBkaWdpdCBjaGFyYWN0ZXJzLCBhbmQgYWxsIGNoYXJhY3RlcnMgdGhhdCBjYW4gYmUgdXNlZCB0b1xuICAgZm9ybSBkZWNpbWFsLXJhZGl4IG51bWJlcnMsIGUuZy4gVSswNjYwLCBBUkFCSUMtSU5ESUMgRElHSVQgWkVSTy5cblxuc3RyLmlzZGlnaXQoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBkaWdpdHMgYW5kIHRoZXJlIGlzXG4gICBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICBEaWdpdHMgaW5jbHVkZSBkZWNpbWFsXG4gICBjaGFyYWN0ZXJzIGFuZCBkaWdpdHMgdGhhdCBuZWVkIHNwZWNpYWwgaGFuZGxpbmcsIHN1Y2ggYXMgdGhlXG4gICBjb21wYXRpYmlsaXR5IHN1cGVyc2NyaXB0IGRpZ2l0cy4gIEZvcm1hbGx5LCBhIGRpZ2l0IGlzIGEgY2hhcmFjdGVyXG4gICB0aGF0IGhhcyB0aGUgcHJvcGVydHkgdmFsdWUgTnVtZXJpY19UeXBlPURpZ2l0IG9yXG4gICBOdW1lcmljX1R5cGU9RGVjaW1hbC5cblxuc3RyLmlzaWRlbnRpZmllcigpXG5cbiAgIFJldHVybiB0cnVlIGlmIHRoZSBzdHJpbmcgaXMgYSB2YWxpZCBpZGVudGlmaWVyIGFjY29yZGluZyB0byB0aGVcbiAgIGxhbmd1YWdlIGRlZmluaXRpb24sIHNlY3Rpb24gKklkZW50aWZpZXJzIGFuZCBrZXl3b3JkcyouXG5cbiAgIFVzZSAia2V5d29yZC5pc2tleXdvcmQoKSIgdG8gdGVzdCBmb3IgcmVzZXJ2ZWQgaWRlbnRpZmllcnMgc3VjaCBhc1xuICAgImRlZiIgYW5kICJjbGFzcyIuXG5cbnN0ci5pc2xvd2VyKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNhc2VkIGNoYXJhY3RlcnMgWzRdIGluIHRoZSBzdHJpbmcgYXJlIGxvd2VyY2FzZVxuICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjYXNlZCBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS5cblxuc3RyLmlzbnVtZXJpYygpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIG51bWVyaWMgY2hhcmFjdGVycyxcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuIE51bWVyaWNcbiAgIGNoYXJhY3RlcnMgaW5jbHVkZSBkaWdpdCBjaGFyYWN0ZXJzLCBhbmQgYWxsIGNoYXJhY3RlcnMgdGhhdCBoYXZlXG4gICB0aGUgVW5pY29kZSBudW1lcmljIHZhbHVlIHByb3BlcnR5LCBlLmcuIFUrMjE1NSwgVlVMR0FSIEZSQUNUSU9OXG4gICBPTkUgRklGVEguICBGb3JtYWxseSwgbnVtZXJpYyBjaGFyYWN0ZXJzIGFyZSB0aG9zZSB3aXRoIHRoZVxuICAgcHJvcGVydHkgdmFsdWUgTnVtZXJpY19UeXBlPURpZ2l0LCBOdW1lcmljX1R5cGU9RGVjaW1hbCBvclxuICAgTnVtZXJpY19UeXBlPU51bWVyaWMuXG5cbnN0ci5pc3ByaW50YWJsZSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIHByaW50YWJsZSBvciB0aGVcbiAgIHN0cmluZyBpcyBlbXB0eSwgZmFsc2Ugb3RoZXJ3aXNlLiAgTm9ucHJpbnRhYmxlIGNoYXJhY3RlcnMgYXJlXG4gICB0aG9zZSBjaGFyYWN0ZXJzIGRlZmluZWQgaW4gdGhlIFVuaWNvZGUgY2hhcmFjdGVyIGRhdGFiYXNlIGFzXG4gICAiT3RoZXIiIG9yICJTZXBhcmF0b3IiLCBleGNlcHRpbmcgdGhlIEFTQ0lJIHNwYWNlICgweDIwKSB3aGljaCBpc1xuICAgY29uc2lkZXJlZCBwcmludGFibGUuICAoTm90ZSB0aGF0IHByaW50YWJsZSBjaGFyYWN0ZXJzIGluIHRoaXNcbiAgIGNvbnRleHQgYXJlIHRob3NlIHdoaWNoIHNob3VsZCBub3QgYmUgZXNjYXBlZCB3aGVuICJyZXByKCkiIGlzXG4gICBpbnZva2VkIG9uIGEgc3RyaW5nLiAgSXQgaGFzIG5vIGJlYXJpbmcgb24gdGhlIGhhbmRsaW5nIG9mIHN0cmluZ3NcbiAgIHdyaXR0ZW4gdG8gInN5cy5zdGRvdXQiIG9yICJzeXMuc3RkZXJyIi4pXG5cbnN0ci5pc3NwYWNlKClcblxuICAgUmV0dXJuIHRydWUgaWYgdGhlcmUgYXJlIG9ubHkgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmdcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICBXaGl0ZXNwYWNlXG4gICBjaGFyYWN0ZXJzICBhcmUgdGhvc2UgY2hhcmFjdGVycyBkZWZpbmVkIGluIHRoZSBVbmljb2RlIGNoYXJhY3RlclxuICAgZGF0YWJhc2UgYXMgIk90aGVyIiBvciAiU2VwYXJhdG9yIiBhbmQgdGhvc2Ugd2l0aCBiaWRpcmVjdGlvbmFsXG4gICBwcm9wZXJ0eSBiZWluZyBvbmUgb2YgIldTIiwgIkIiLCBvciAiUyIuXG5cbnN0ci5pc3RpdGxlKClcblxuICAgUmV0dXJuIHRydWUgaWYgdGhlIHN0cmluZyBpcyBhIHRpdGxlY2FzZWQgc3RyaW5nIGFuZCB0aGVyZSBpcyBhdFxuICAgbGVhc3Qgb25lIGNoYXJhY3RlciwgZm9yIGV4YW1wbGUgdXBwZXJjYXNlIGNoYXJhY3RlcnMgbWF5IG9ubHlcbiAgIGZvbGxvdyB1bmNhc2VkIGNoYXJhY3RlcnMgYW5kIGxvd2VyY2FzZSBjaGFyYWN0ZXJzIG9ubHkgY2FzZWQgb25lcy5cbiAgIFJldHVybiBmYWxzZSBvdGhlcndpc2UuXG5cbnN0ci5pc3VwcGVyKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNhc2VkIGNoYXJhY3RlcnMgWzRdIGluIHRoZSBzdHJpbmcgYXJlIHVwcGVyY2FzZVxuICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjYXNlZCBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS5cblxuc3RyLmpvaW4oaXRlcmFibGUpXG5cbiAgIFJldHVybiBhIHN0cmluZyB3aGljaCBpcyB0aGUgY29uY2F0ZW5hdGlvbiBvZiB0aGUgc3RyaW5ncyBpbiB0aGVcbiAgICppdGVyYWJsZSogKml0ZXJhYmxlKi4gIEEgIlR5cGVFcnJvciIgd2lsbCBiZSByYWlzZWQgaWYgdGhlcmUgYXJlXG4gICBhbnkgbm9uLXN0cmluZyB2YWx1ZXMgaW4gKml0ZXJhYmxlKiwgaW5jbHVkaW5nICJieXRlcyIgb2JqZWN0cy5cbiAgIFRoZSBzZXBhcmF0b3IgYmV0d2VlbiBlbGVtZW50cyBpcyB0aGUgc3RyaW5nIHByb3ZpZGluZyB0aGlzIG1ldGhvZC5cblxuc3RyLmxqdXN0KHdpZHRoWywgZmlsbGNoYXJdKVxuXG4gICBSZXR1cm4gdGhlIHN0cmluZyBsZWZ0IGp1c3RpZmllZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggKndpZHRoKi5cbiAgIFBhZGRpbmcgaXMgZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogKGRlZmF1bHQgaXMgYW4gQVNDSUlcbiAgIHNwYWNlKS4gVGhlIG9yaWdpbmFsIHN0cmluZyBpcyByZXR1cm5lZCBpZiAqd2lkdGgqIGlzIGxlc3MgdGhhbiBvclxuICAgZXF1YWwgdG8gImxlbihzKSIuXG5cbnN0ci5sb3dlcigpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGFsbCB0aGUgY2FzZWQgY2hhcmFjdGVycyBbNF1cbiAgIGNvbnZlcnRlZCB0byBsb3dlcmNhc2UuXG5cbiAgIFRoZSBsb3dlcmNhc2luZyBhbGdvcml0aG0gdXNlZCBpcyBkZXNjcmliZWQgaW4gc2VjdGlvbiAzLjEzIG9mIHRoZVxuICAgVW5pY29kZSBTdGFuZGFyZC5cblxuc3RyLmxzdHJpcChbY2hhcnNdKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBsZWFkaW5nIGNoYXJhY3RlcnMgcmVtb3ZlZC4gIFRoZVxuICAgKmNoYXJzKiBhcmd1bWVudCBpcyBhIHN0cmluZyBzcGVjaWZ5aW5nIHRoZSBzZXQgb2YgY2hhcmFjdGVycyB0byBiZVxuICAgcmVtb3ZlZC4gIElmIG9taXR0ZWQgb3IgIk5vbmUiLCB0aGUgKmNoYXJzKiBhcmd1bWVudCBkZWZhdWx0cyB0b1xuICAgcmVtb3Zpbmcgd2hpdGVzcGFjZS4gIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIG5vdCBhIHByZWZpeDsgcmF0aGVyLFxuICAgYWxsIGNvbWJpbmF0aW9ucyBvZiBpdHMgdmFsdWVzIGFyZSBzdHJpcHBlZDpcblxuICAgICAgPj4+IFwnICAgc3BhY2lvdXMgICBcJy5sc3RyaXAoKVxuICAgICAgXCdzcGFjaW91cyAgIFwnXG4gICAgICA+Pj4gXCd3d3cuZXhhbXBsZS5jb21cJy5sc3RyaXAoXCdjbW93ei5cJylcbiAgICAgIFwnZXhhbXBsZS5jb21cJ1xuXG5zdGF0aWMgc3RyLm1ha2V0cmFucyh4WywgeVssIHpdXSlcblxuICAgVGhpcyBzdGF0aWMgbWV0aG9kIHJldHVybnMgYSB0cmFuc2xhdGlvbiB0YWJsZSB1c2FibGUgZm9yXG4gICAic3RyLnRyYW5zbGF0ZSgpIi5cblxuICAgSWYgdGhlcmUgaXMgb25seSBvbmUgYXJndW1lbnQsIGl0IG11c3QgYmUgYSBkaWN0aW9uYXJ5IG1hcHBpbmdcbiAgIFVuaWNvZGUgb3JkaW5hbHMgKGludGVnZXJzKSBvciBjaGFyYWN0ZXJzIChzdHJpbmdzIG9mIGxlbmd0aCAxKSB0b1xuICAgVW5pY29kZSBvcmRpbmFscywgc3RyaW5ncyAob2YgYXJiaXRyYXJ5IGxlbmd0aHMpIG9yIE5vbmUuXG4gICBDaGFyYWN0ZXIga2V5cyB3aWxsIHRoZW4gYmUgY29udmVydGVkIHRvIG9yZGluYWxzLlxuXG4gICBJZiB0aGVyZSBhcmUgdHdvIGFyZ3VtZW50cywgdGhleSBtdXN0IGJlIHN0cmluZ3Mgb2YgZXF1YWwgbGVuZ3RoLFxuICAgYW5kIGluIHRoZSByZXN1bHRpbmcgZGljdGlvbmFyeSwgZWFjaCBjaGFyYWN0ZXIgaW4geCB3aWxsIGJlIG1hcHBlZFxuICAgdG8gdGhlIGNoYXJhY3RlciBhdCB0aGUgc2FtZSBwb3NpdGlvbiBpbiB5LiAgSWYgdGhlcmUgaXMgYSB0aGlyZFxuICAgYXJndW1lbnQsIGl0IG11c3QgYmUgYSBzdHJpbmcsIHdob3NlIGNoYXJhY3RlcnMgd2lsbCBiZSBtYXBwZWQgdG9cbiAgIE5vbmUgaW4gdGhlIHJlc3VsdC5cblxuc3RyLnBhcnRpdGlvbihzZXApXG5cbiAgIFNwbGl0IHRoZSBzdHJpbmcgYXQgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgKnNlcCosIGFuZCByZXR1cm4gYVxuICAgMy10dXBsZSBjb250YWluaW5nIHRoZSBwYXJ0IGJlZm9yZSB0aGUgc2VwYXJhdG9yLCB0aGUgc2VwYXJhdG9yXG4gICBpdHNlbGYsIGFuZCB0aGUgcGFydCBhZnRlciB0aGUgc2VwYXJhdG9yLiAgSWYgdGhlIHNlcGFyYXRvciBpcyBub3RcbiAgIGZvdW5kLCByZXR1cm4gYSAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHN0cmluZyBpdHNlbGYsIGZvbGxvd2VkIGJ5XG4gICB0d28gZW1wdHkgc3RyaW5ncy5cblxuc3RyLnJlcGxhY2Uob2xkLCBuZXdbLCBjb3VudF0pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGFsbCBvY2N1cnJlbmNlcyBvZiBzdWJzdHJpbmcgKm9sZCpcbiAgIHJlcGxhY2VkIGJ5ICpuZXcqLiAgSWYgdGhlIG9wdGlvbmFsIGFyZ3VtZW50ICpjb3VudCogaXMgZ2l2ZW4sIG9ubHlcbiAgIHRoZSBmaXJzdCAqY291bnQqIG9jY3VycmVuY2VzIGFyZSByZXBsYWNlZC5cblxuc3RyLnJmaW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiB0aGUgaGlnaGVzdCBpbmRleCBpbiB0aGUgc3RyaW5nIHdoZXJlIHN1YnN0cmluZyAqc3ViKiBpc1xuICAgZm91bmQsIHN1Y2ggdGhhdCAqc3ViKiBpcyBjb250YWluZWQgd2l0aGluICJzW3N0YXJ0OmVuZF0iLlxuICAgT3B0aW9uYWwgYXJndW1lbnRzICpzdGFydCogYW5kICplbmQqIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZVxuICAgbm90YXRpb24uICBSZXR1cm4gIi0xIiBvbiBmYWlsdXJlLlxuXG5zdHIucmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIExpa2UgInJmaW5kKCkiIGJ1dCByYWlzZXMgIlZhbHVlRXJyb3IiIHdoZW4gdGhlIHN1YnN0cmluZyAqc3ViKiBpc1xuICAgbm90IGZvdW5kLlxuXG5zdHIucmp1c3Qod2lkdGhbLCBmaWxsY2hhcl0pXG5cbiAgIFJldHVybiB0aGUgc3RyaW5nIHJpZ2h0IGp1c3RpZmllZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggKndpZHRoKi5cbiAgIFBhZGRpbmcgaXMgZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogKGRlZmF1bHQgaXMgYW4gQVNDSUlcbiAgIHNwYWNlKS4gVGhlIG9yaWdpbmFsIHN0cmluZyBpcyByZXR1cm5lZCBpZiAqd2lkdGgqIGlzIGxlc3MgdGhhbiBvclxuICAgZXF1YWwgdG8gImxlbihzKSIuXG5cbnN0ci5ycGFydGl0aW9uKHNlcClcblxuICAgU3BsaXQgdGhlIHN0cmluZyBhdCB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mICpzZXAqLCBhbmQgcmV0dXJuIGFcbiAgIDMtdHVwbGUgY29udGFpbmluZyB0aGUgcGFydCBiZWZvcmUgdGhlIHNlcGFyYXRvciwgdGhlIHNlcGFyYXRvclxuICAgaXRzZWxmLCBhbmQgdGhlIHBhcnQgYWZ0ZXIgdGhlIHNlcGFyYXRvci4gIElmIHRoZSBzZXBhcmF0b3IgaXMgbm90XG4gICBmb3VuZCwgcmV0dXJuIGEgMy10dXBsZSBjb250YWluaW5nIHR3byBlbXB0eSBzdHJpbmdzLCBmb2xsb3dlZCBieVxuICAgdGhlIHN0cmluZyBpdHNlbGYuXG5cbnN0ci5yc3BsaXQoc2VwPU5vbmUsIG1heHNwbGl0PS0xKVxuXG4gICBSZXR1cm4gYSBsaXN0IG9mIHRoZSB3b3JkcyBpbiB0aGUgc3RyaW5nLCB1c2luZyAqc2VwKiBhcyB0aGVcbiAgIGRlbGltaXRlciBzdHJpbmcuIElmICptYXhzcGxpdCogaXMgZ2l2ZW4sIGF0IG1vc3QgKm1heHNwbGl0KiBzcGxpdHNcbiAgIGFyZSBkb25lLCB0aGUgKnJpZ2h0bW9zdCogb25lcy4gIElmICpzZXAqIGlzIG5vdCBzcGVjaWZpZWQgb3JcbiAgICJOb25lIiwgYW55IHdoaXRlc3BhY2Ugc3RyaW5nIGlzIGEgc2VwYXJhdG9yLiAgRXhjZXB0IGZvciBzcGxpdHRpbmdcbiAgIGZyb20gdGhlIHJpZ2h0LCAicnNwbGl0KCkiIGJlaGF2ZXMgbGlrZSAic3BsaXQoKSIgd2hpY2ggaXNcbiAgIGRlc2NyaWJlZCBpbiBkZXRhaWwgYmVsb3cuXG5cbnN0ci5yc3RyaXAoW2NoYXJzXSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggdHJhaWxpbmcgY2hhcmFjdGVycyByZW1vdmVkLiAgVGhlXG4gICAqY2hhcnMqIGFyZ3VtZW50IGlzIGEgc3RyaW5nIHNwZWNpZnlpbmcgdGhlIHNldCBvZiBjaGFyYWN0ZXJzIHRvIGJlXG4gICByZW1vdmVkLiAgSWYgb21pdHRlZCBvciAiTm9uZSIsIHRoZSAqY2hhcnMqIGFyZ3VtZW50IGRlZmF1bHRzIHRvXG4gICByZW1vdmluZyB3aGl0ZXNwYWNlLiAgVGhlICpjaGFycyogYXJndW1lbnQgaXMgbm90IGEgc3VmZml4OyByYXRoZXIsXG4gICBhbGwgY29tYmluYXRpb25zIG9mIGl0cyB2YWx1ZXMgYXJlIHN0cmlwcGVkOlxuXG4gICAgICA+Pj4gXCcgICBzcGFjaW91cyAgIFwnLnJzdHJpcCgpXG4gICAgICBcJyAgIHNwYWNpb3VzXCdcbiAgICAgID4+PiBcJ21pc3Npc3NpcHBpXCcucnN0cmlwKFwnaXB6XCcpXG4gICAgICBcJ21pc3Npc3NcJ1xuXG5zdHIuc3BsaXQoc2VwPU5vbmUsIG1heHNwbGl0PS0xKVxuXG4gICBSZXR1cm4gYSBsaXN0IG9mIHRoZSB3b3JkcyBpbiB0aGUgc3RyaW5nLCB1c2luZyAqc2VwKiBhcyB0aGVcbiAgIGRlbGltaXRlciBzdHJpbmcuICBJZiAqbWF4c3BsaXQqIGlzIGdpdmVuLCBhdCBtb3N0ICptYXhzcGxpdCpcbiAgIHNwbGl0cyBhcmUgZG9uZSAodGh1cywgdGhlIGxpc3Qgd2lsbCBoYXZlIGF0IG1vc3QgIm1heHNwbGl0KzEiXG4gICBlbGVtZW50cykuICBJZiAqbWF4c3BsaXQqIGlzIG5vdCBzcGVjaWZpZWQgb3IgIi0xIiwgdGhlbiB0aGVyZSBpc1xuICAgbm8gbGltaXQgb24gdGhlIG51bWJlciBvZiBzcGxpdHMgKGFsbCBwb3NzaWJsZSBzcGxpdHMgYXJlIG1hZGUpLlxuXG4gICBJZiAqc2VwKiBpcyBnaXZlbiwgY29uc2VjdXRpdmUgZGVsaW1pdGVycyBhcmUgbm90IGdyb3VwZWQgdG9nZXRoZXJcbiAgIGFuZCBhcmUgZGVlbWVkIHRvIGRlbGltaXQgZW1wdHkgc3RyaW5ncyAoZm9yIGV4YW1wbGUsXG4gICAiXCcxLCwyXCcuc3BsaXQoXCcsXCcpIiByZXR1cm5zICJbXCcxXCcsIFwnXCcsIFwnMlwnXSIpLiAgVGhlICpzZXAqIGFyZ3VtZW50XG4gICBtYXkgY29uc2lzdCBvZiBtdWx0aXBsZSBjaGFyYWN0ZXJzIChmb3IgZXhhbXBsZSxcbiAgICJcJzE8PjI8PjNcJy5zcGxpdChcJzw+XCcpIiByZXR1cm5zICJbXCcxXCcsIFwnMlwnLCBcJzNcJ10iKS4gU3BsaXR0aW5nIGFuXG4gICBlbXB0eSBzdHJpbmcgd2l0aCBhIHNwZWNpZmllZCBzZXBhcmF0b3IgcmV0dXJucyAiW1wnXCddIi5cblxuICAgRm9yIGV4YW1wbGU6XG5cbiAgICAgID4+PiBcJzEsMiwzXCcuc3BsaXQoXCcsXCcpXG4gICAgICBbXCcxXCcsIFwnMlwnLCBcJzNcJ11cbiAgICAgID4+PiBcJzEsMiwzXCcuc3BsaXQoXCcsXCcsIG1heHNwbGl0PTEpXG4gICAgICBbXCcxXCcsIFwnMiwzXCddXG4gICAgICA+Pj4gXCcxLDIsLDMsXCcuc3BsaXQoXCcsXCcpXG4gICAgICBbXCcxXCcsIFwnMlwnLCBcJ1wnLCBcJzNcJywgXCdcJ11cblxuICAgSWYgKnNlcCogaXMgbm90IHNwZWNpZmllZCBvciBpcyAiTm9uZSIsIGEgZGlmZmVyZW50IHNwbGl0dGluZ1xuICAgYWxnb3JpdGhtIGlzIGFwcGxpZWQ6IHJ1bnMgb2YgY29uc2VjdXRpdmUgd2hpdGVzcGFjZSBhcmUgcmVnYXJkZWRcbiAgIGFzIGEgc2luZ2xlIHNlcGFyYXRvciwgYW5kIHRoZSByZXN1bHQgd2lsbCBjb250YWluIG5vIGVtcHR5IHN0cmluZ3NcbiAgIGF0IHRoZSBzdGFydCBvciBlbmQgaWYgdGhlIHN0cmluZyBoYXMgbGVhZGluZyBvciB0cmFpbGluZ1xuICAgd2hpdGVzcGFjZS4gIENvbnNlcXVlbnRseSwgc3BsaXR0aW5nIGFuIGVtcHR5IHN0cmluZyBvciBhIHN0cmluZ1xuICAgY29uc2lzdGluZyBvZiBqdXN0IHdoaXRlc3BhY2Ugd2l0aCBhICJOb25lIiBzZXBhcmF0b3IgcmV0dXJucyAiW10iLlxuXG4gICBGb3IgZXhhbXBsZTpcblxuICAgICAgPj4+IFwnMSAyIDNcJy5zcGxpdCgpXG4gICAgICBbXCcxXCcsIFwnMlwnLCBcJzNcJ11cbiAgICAgID4+PiBcJzEgMiAzXCcuc3BsaXQobWF4c3BsaXQ9MSlcbiAgICAgIFtcJzFcJywgXCcyIDNcJ11cbiAgICAgID4+PiBcJyAgIDEgICAyICAgMyAgIFwnLnNwbGl0KClcbiAgICAgIFtcJzFcJywgXCcyXCcsIFwnM1wnXVxuXG5zdHIuc3BsaXRsaW5lcyhba2VlcGVuZHNdKVxuXG4gICBSZXR1cm4gYSBsaXN0IG9mIHRoZSBsaW5lcyBpbiB0aGUgc3RyaW5nLCBicmVha2luZyBhdCBsaW5lXG4gICBib3VuZGFyaWVzLiAgTGluZSBicmVha3MgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgcmVzdWx0aW5nIGxpc3RcbiAgIHVubGVzcyAqa2VlcGVuZHMqIGlzIGdpdmVuIGFuZCB0cnVlLlxuXG4gICBUaGlzIG1ldGhvZCBzcGxpdHMgb24gdGhlIGZvbGxvd2luZyBsaW5lIGJvdW5kYXJpZXMuICBJblxuICAgcGFydGljdWxhciwgdGhlIGJvdW5kYXJpZXMgYXJlIGEgc3VwZXJzZXQgb2YgKnVuaXZlcnNhbCBuZXdsaW5lcyouXG5cbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IFJlcHJlc2VudGF0aW9uICAgICAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgfFxuICAgKz09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbiAgIHwgIlxcbiIgICAgICAgICAgICAgICAgICAgIHwgTGluZSBGZWVkICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlxcciIgICAgICAgICAgICAgICAgICAgIHwgQ2FycmlhZ2UgUmV0dXJuICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlxcclxcbiIgICAgICAgICAgICAgICAgICB8IENhcnJpYWdlIFJldHVybiArIExpbmUgRmVlZCAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcXHYiIG9yICJcXHgwYiIgICAgICAgICAgfCBMaW5lIFRhYnVsYXRpb24gICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXFxmIiBvciAiXFx4MGMiICAgICAgICAgIHwgRm9ybSBGZWVkICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlxceDFjIiAgICAgICAgICAgICAgICAgIHwgRmlsZSBTZXBhcmF0b3IgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlxceDFkIiAgICAgICAgICAgICAgICAgIHwgR3JvdXAgU2VwYXJhdG9yICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlxceDFlIiAgICAgICAgICAgICAgICAgIHwgUmVjb3JkIFNlcGFyYXRvciAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlxceDg1IiAgICAgICAgICAgICAgICAgIHwgTmV4dCBMaW5lIChDMSBDb250cm9sIENvZGUpICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlxcdTIwMjgiICAgICAgICAgICAgICAgIHwgTGluZSBTZXBhcmF0b3IgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlxcdTIwMjkiICAgICAgICAgICAgICAgIHwgUGFyYWdyYXBoIFNlcGFyYXRvciAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMjogIlxcdiIgYW5kICJcXGYiIGFkZGVkIHRvIGxpc3Qgb2YgbGluZVxuICAgYm91bmRhcmllcy5cblxuICAgRm9yIGV4YW1wbGU6XG5cbiAgICAgID4+PiBcJ2FiIGNcXG5cXG5kZSBmZ1xccmtsXFxyXFxuXCcuc3BsaXRsaW5lcygpXG4gICAgICBbXCdhYiBjXCcsIFwnXCcsIFwnZGUgZmdcJywgXCdrbFwnXVxuICAgICAgPj4+IFwnYWIgY1xcblxcbmRlIGZnXFxya2xcXHJcXG5cJy5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpXG4gICAgICBbXCdhYiBjXFxuXCcsIFwnXFxuXCcsIFwnZGUgZmdcXHJcJywgXCdrbFxcclxcblwnXVxuXG4gICBVbmxpa2UgInNwbGl0KCkiIHdoZW4gYSBkZWxpbWl0ZXIgc3RyaW5nICpzZXAqIGlzIGdpdmVuLCB0aGlzXG4gICBtZXRob2QgcmV0dXJucyBhbiBlbXB0eSBsaXN0IGZvciB0aGUgZW1wdHkgc3RyaW5nLCBhbmQgYSB0ZXJtaW5hbFxuICAgbGluZSBicmVhayBkb2VzIG5vdCByZXN1bHQgaW4gYW4gZXh0cmEgbGluZTpcblxuICAgICAgPj4+ICIiLnNwbGl0bGluZXMoKVxuICAgICAgW11cbiAgICAgID4+PiAiT25lIGxpbmVcXG4iLnNwbGl0bGluZXMoKVxuICAgICAgW1wnT25lIGxpbmVcJ11cblxuICAgRm9yIGNvbXBhcmlzb24sICJzcGxpdChcJ1xcblwnKSIgZ2l2ZXM6XG5cbiAgICAgID4+PiBcJ1wnLnNwbGl0KFwnXFxuXCcpXG4gICAgICBbXCdcJ11cbiAgICAgID4+PiBcJ1R3byBsaW5lc1xcblwnLnNwbGl0KFwnXFxuXCcpXG4gICAgICBbXCdUd28gbGluZXNcJywgXCdcJ11cblxuc3RyLnN0YXJ0c3dpdGgocHJlZml4Wywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuICJUcnVlIiBpZiBzdHJpbmcgc3RhcnRzIHdpdGggdGhlICpwcmVmaXgqLCBvdGhlcndpc2UgcmV0dXJuXG4gICAiRmFsc2UiLiAqcHJlZml4KiBjYW4gYWxzbyBiZSBhIHR1cGxlIG9mIHByZWZpeGVzIHRvIGxvb2sgZm9yLlxuICAgV2l0aCBvcHRpb25hbCAqc3RhcnQqLCB0ZXN0IHN0cmluZyBiZWdpbm5pbmcgYXQgdGhhdCBwb3NpdGlvbi5cbiAgIFdpdGggb3B0aW9uYWwgKmVuZCosIHN0b3AgY29tcGFyaW5nIHN0cmluZyBhdCB0aGF0IHBvc2l0aW9uLlxuXG5zdHIuc3RyaXAoW2NoYXJzXSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggdGhlIGxlYWRpbmcgYW5kIHRyYWlsaW5nXG4gICBjaGFyYWN0ZXJzIHJlbW92ZWQuIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIGEgc3RyaW5nIHNwZWNpZnlpbmcgdGhlXG4gICBzZXQgb2YgY2hhcmFjdGVycyB0byBiZSByZW1vdmVkLiBJZiBvbWl0dGVkIG9yICJOb25lIiwgdGhlICpjaGFycypcbiAgIGFyZ3VtZW50IGRlZmF1bHRzIHRvIHJlbW92aW5nIHdoaXRlc3BhY2UuIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzXG4gICBub3QgYSBwcmVmaXggb3Igc3VmZml4OyByYXRoZXIsIGFsbCBjb21iaW5hdGlvbnMgb2YgaXRzIHZhbHVlcyBhcmVcbiAgIHN0cmlwcGVkOlxuXG4gICAgICA+Pj4gXCcgICBzcGFjaW91cyAgIFwnLnN0cmlwKClcbiAgICAgIFwnc3BhY2lvdXNcJ1xuICAgICAgPj4+IFwnd3d3LmV4YW1wbGUuY29tXCcuc3RyaXAoXCdjbW93ei5cJylcbiAgICAgIFwnZXhhbXBsZVwnXG5cbiAgIFRoZSBvdXRlcm1vc3QgbGVhZGluZyBhbmQgdHJhaWxpbmcgKmNoYXJzKiBhcmd1bWVudCB2YWx1ZXMgYXJlXG4gICBzdHJpcHBlZCBmcm9tIHRoZSBzdHJpbmcuIENoYXJhY3RlcnMgYXJlIHJlbW92ZWQgZnJvbSB0aGUgbGVhZGluZ1xuICAgZW5kIHVudGlsIHJlYWNoaW5nIGEgc3RyaW5nIGNoYXJhY3RlciB0aGF0IGlzIG5vdCBjb250YWluZWQgaW4gdGhlXG4gICBzZXQgb2YgY2hhcmFjdGVycyBpbiAqY2hhcnMqLiBBIHNpbWlsYXIgYWN0aW9uIHRha2VzIHBsYWNlIG9uIHRoZVxuICAgdHJhaWxpbmcgZW5kLiBGb3IgZXhhbXBsZTpcblxuICAgICAgPj4+IGNvbW1lbnRfc3RyaW5nID0gXCcjLi4uLi4uLiBTZWN0aW9uIDMuMi4xIElzc3VlICMzMiAuLi4uLi4uXCdcbiAgICAgID4+PiBjb21tZW50X3N0cmluZy5zdHJpcChcJy4jISBcJylcbiAgICAgIFwnU2VjdGlvbiAzLjIuMSBJc3N1ZSAjMzJcJ1xuXG5zdHIuc3dhcGNhc2UoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB1cHBlcmNhc2UgY2hhcmFjdGVycyBjb252ZXJ0ZWQgdG9cbiAgIGxvd2VyY2FzZSBhbmQgdmljZSB2ZXJzYS4gTm90ZSB0aGF0IGl0IGlzIG5vdCBuZWNlc3NhcmlseSB0cnVlIHRoYXRcbiAgICJzLnN3YXBjYXNlKCkuc3dhcGNhc2UoKSA9PSBzIi5cblxuc3RyLnRpdGxlKClcblxuICAgUmV0dXJuIGEgdGl0bGVjYXNlZCB2ZXJzaW9uIG9mIHRoZSBzdHJpbmcgd2hlcmUgd29yZHMgc3RhcnQgd2l0aCBhblxuICAgdXBwZXJjYXNlIGNoYXJhY3RlciBhbmQgdGhlIHJlbWFpbmluZyBjaGFyYWN0ZXJzIGFyZSBsb3dlcmNhc2UuXG5cbiAgIEZvciBleGFtcGxlOlxuXG4gICAgICA+Pj4gXCdIZWxsbyB3b3JsZFwnLnRpdGxlKClcbiAgICAgIFwnSGVsbG8gV29ybGRcJ1xuXG4gICBUaGUgYWxnb3JpdGhtIHVzZXMgYSBzaW1wbGUgbGFuZ3VhZ2UtaW5kZXBlbmRlbnQgZGVmaW5pdGlvbiBvZiBhXG4gICB3b3JkIGFzIGdyb3VwcyBvZiBjb25zZWN1dGl2ZSBsZXR0ZXJzLiAgVGhlIGRlZmluaXRpb24gd29ya3MgaW5cbiAgIG1hbnkgY29udGV4dHMgYnV0IGl0IG1lYW5zIHRoYXQgYXBvc3Ryb3BoZXMgaW4gY29udHJhY3Rpb25zIGFuZFxuICAgcG9zc2Vzc2l2ZXMgZm9ybSB3b3JkIGJvdW5kYXJpZXMsIHdoaWNoIG1heSBub3QgYmUgdGhlIGRlc2lyZWRcbiAgIHJlc3VsdDpcblxuICAgICAgPj4+ICJ0aGV5XCdyZSBiaWxsXCdzIGZyaWVuZHMgZnJvbSB0aGUgVUsiLnRpdGxlKClcbiAgICAgICJUaGV5XCdSZSBCaWxsXCdTIEZyaWVuZHMgRnJvbSBUaGUgVWsiXG5cbiAgIEEgd29ya2Fyb3VuZCBmb3IgYXBvc3Ryb3BoZXMgY2FuIGJlIGNvbnN0cnVjdGVkIHVzaW5nIHJlZ3VsYXJcbiAgIGV4cHJlc3Npb25zOlxuXG4gICAgICA+Pj4gaW1wb3J0IHJlXG4gICAgICA+Pj4gZGVmIHRpdGxlY2FzZShzKTpcbiAgICAgIC4uLiAgICAgcmV0dXJuIHJlLnN1YihyIltBLVphLXpdKyhcJ1tBLVphLXpdKyk/IixcbiAgICAgIC4uLiAgICAgICAgICAgICAgICAgICBsYW1iZGEgbW86IG1vLmdyb3VwKDApWzBdLnVwcGVyKCkgK1xuICAgICAgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW8uZ3JvdXAoMClbMTpdLmxvd2VyKCksXG4gICAgICAuLi4gICAgICAgICAgICAgICAgICAgcylcbiAgICAgIC4uLlxuICAgICAgPj4+IHRpdGxlY2FzZSgidGhleVwncmUgYmlsbFwncyBmcmllbmRzLiIpXG4gICAgICAiVGhleVwncmUgQmlsbFwncyBGcmllbmRzLiJcblxuc3RyLnRyYW5zbGF0ZSh0YWJsZSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIGluIHdoaWNoIGVhY2ggY2hhcmFjdGVyIGhhcyBiZWVuIG1hcHBlZFxuICAgdGhyb3VnaCB0aGUgZ2l2ZW4gdHJhbnNsYXRpb24gdGFibGUuICBUaGUgdGFibGUgbXVzdCBiZSBhbiBvYmplY3RcbiAgIHRoYXQgaW1wbGVtZW50cyBpbmRleGluZyB2aWEgIl9fZ2V0aXRlbV9fKCkiLCB0eXBpY2FsbHkgYSAqbWFwcGluZypcbiAgIG9yICpzZXF1ZW5jZSouICBXaGVuIGluZGV4ZWQgYnkgYSBVbmljb2RlIG9yZGluYWwgKGFuIGludGVnZXIpLCB0aGVcbiAgIHRhYmxlIG9iamVjdCBjYW4gZG8gYW55IG9mIHRoZSBmb2xsb3dpbmc6IHJldHVybiBhIFVuaWNvZGUgb3JkaW5hbFxuICAgb3IgYSBzdHJpbmcsIHRvIG1hcCB0aGUgY2hhcmFjdGVyIHRvIG9uZSBvciBtb3JlIG90aGVyIGNoYXJhY3RlcnM7XG4gICByZXR1cm4gIk5vbmUiLCB0byBkZWxldGUgdGhlIGNoYXJhY3RlciBmcm9tIHRoZSByZXR1cm4gc3RyaW5nOyBvclxuICAgcmFpc2UgYSAiTG9va3VwRXJyb3IiIGV4Y2VwdGlvbiwgdG8gbWFwIHRoZSBjaGFyYWN0ZXIgdG8gaXRzZWxmLlxuXG4gICBZb3UgY2FuIHVzZSAic3RyLm1ha2V0cmFucygpIiB0byBjcmVhdGUgYSB0cmFuc2xhdGlvbiBtYXAgZnJvbVxuICAgY2hhcmFjdGVyLXRvLWNoYXJhY3RlciBtYXBwaW5ncyBpbiBkaWZmZXJlbnQgZm9ybWF0cy5cblxuICAgU2VlIGFsc28gdGhlICJjb2RlY3MiIG1vZHVsZSBmb3IgYSBtb3JlIGZsZXhpYmxlIGFwcHJvYWNoIHRvIGN1c3RvbVxuICAgY2hhcmFjdGVyIG1hcHBpbmdzLlxuXG5zdHIudXBwZXIoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgdGhlIGNhc2VkIGNoYXJhY3RlcnMgWzRdXG4gICBjb252ZXJ0ZWQgdG8gdXBwZXJjYXNlLiAgTm90ZSB0aGF0ICJzdHIudXBwZXIoKS5pc3VwcGVyKCkiIG1pZ2h0IGJlXG4gICAiRmFsc2UiIGlmICJzIiBjb250YWlucyB1bmNhc2VkIGNoYXJhY3RlcnMgb3IgaWYgdGhlIFVuaWNvZGVcbiAgIGNhdGVnb3J5IG9mIHRoZSByZXN1bHRpbmcgY2hhcmFjdGVyKHMpIGlzIG5vdCAiTHUiIChMZXR0ZXIsXG4gICB1cHBlcmNhc2UpLCBidXQgZS5nLiAiTHQiIChMZXR0ZXIsIHRpdGxlY2FzZSkuXG5cbiAgIFRoZSB1cHBlcmNhc2luZyBhbGdvcml0aG0gdXNlZCBpcyBkZXNjcmliZWQgaW4gc2VjdGlvbiAzLjEzIG9mIHRoZVxuICAgVW5pY29kZSBTdGFuZGFyZC5cblxuc3RyLnpmaWxsKHdpZHRoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgbGVmdCBmaWxsZWQgd2l0aCBBU0NJSSAiXCcwXCciIGRpZ2l0cyB0b1xuICAgbWFrZSBhIHN0cmluZyBvZiBsZW5ndGggKndpZHRoKi4gQSBsZWFkaW5nIHNpZ24gcHJlZml4XG4gICAoIlwnK1wnIi8iXCctXCciKSBpcyBoYW5kbGVkIGJ5IGluc2VydGluZyB0aGUgcGFkZGluZyAqYWZ0ZXIqIHRoZSBzaWduXG4gICBjaGFyYWN0ZXIgcmF0aGVyIHRoYW4gYmVmb3JlLiBUaGUgb3JpZ2luYWwgc3RyaW5nIGlzIHJldHVybmVkIGlmXG4gICAqd2lkdGgqIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byAibGVuKHMpIi5cblxuICAgRm9yIGV4YW1wbGU6XG5cbiAgICAgID4+PiAiNDIiLnpmaWxsKDUpXG4gICAgICBcJzAwMDQyXCdcbiAgICAgID4+PiAiLTQyIi56ZmlsbCg1KVxuICAgICAgXCctMDA0MlwnXG4nLAotICdzdHJpbmdzJzogdSdcblN0cmluZyBhbmQgQnl0ZXMgbGl0ZXJhbHNcbioqKioqKioqKioqKioqKioqKioqKioqKipcblxuU3RyaW5nIGxpdGVyYWxzIGFyZSBkZXNjcmliZWQgYnkgdGhlIGZvbGxvd2luZyBsZXhpY2FsIGRlZmluaXRpb25zOlxuXG4gICBzdHJpbmdsaXRlcmFsICAgOjo9IFtzdHJpbmdwcmVmaXhdKHNob3J0c3RyaW5nIHwgbG9uZ3N0cmluZylcbiAgIHN0cmluZ3ByZWZpeCAgICA6Oj0gInIiIHwgInUiIHwgIlIiIHwgIlUiXG4gICBzaG9ydHN0cmluZyAgICAgOjo9ICJcJyIgc2hvcnRzdHJpbmdpdGVtKiAiXCciIHwgXCciXCcgc2hvcnRzdHJpbmdpdGVtKiBcJyJcJ1xuICAgbG9uZ3N0cmluZyAgICAgIDo6PSAiXCdcJ1wnIiBsb25nc3RyaW5naXRlbSogIlwnXCdcJyIgfCBcJyIiIlwnIGxvbmdzdHJpbmdpdGVtKiBcJyIiIlwnXG4gICBzaG9ydHN0cmluZ2l0ZW0gOjo9IHNob3J0c3RyaW5nY2hhciB8IHN0cmluZ2VzY2FwZXNlcVxuICAgbG9uZ3N0cmluZ2l0ZW0gIDo6PSBsb25nc3RyaW5nY2hhciB8IHN0cmluZ2VzY2FwZXNlcVxuICAgc2hvcnRzdHJpbmdjaGFyIDo6PSA8YW55IHNvdXJjZSBjaGFyYWN0ZXIgZXhjZXB0ICJcXCIgb3IgbmV3bGluZSBvciB0aGUgcXVvdGU+XG4gICBsb25nc3RyaW5nY2hhciAgOjo9IDxhbnkgc291cmNlIGNoYXJhY3RlciBleGNlcHQgIlxcIj5cbiAgIHN0cmluZ2VzY2FwZXNlcSA6Oj0gIlxcIiA8YW55IHNvdXJjZSBjaGFyYWN0ZXI+XG5cbiAgIGJ5dGVzbGl0ZXJhbCAgIDo6PSBieXRlc3ByZWZpeChzaG9ydGJ5dGVzIHwgbG9uZ2J5dGVzKVxuICAgYnl0ZXNwcmVmaXggICAgOjo9ICJiIiB8ICJCIiB8ICJiciIgfCAiQnIiIHwgImJSIiB8ICJCUiIgfCAicmIiIHwgInJCIiB8ICJSYiIgfCAiUkIiXG4gICBzaG9ydGJ5dGVzICAgICA6Oj0gIlwnIiBzaG9ydGJ5dGVzaXRlbSogIlwnIiB8IFwnIlwnIHNob3J0Ynl0ZXNpdGVtKiBcJyJcJ1xuICAgbG9uZ2J5dGVzICAgICAgOjo9ICJcJ1wnXCciIGxvbmdieXRlc2l0ZW0qICJcJ1wnXCciIHwgXCciIiJcJyBsb25nYnl0ZXNpdGVtKiBcJyIiIlwnXG4gICBzaG9ydGJ5dGVzaXRlbSA6Oj0gc2hvcnRieXRlc2NoYXIgfCBieXRlc2VzY2FwZXNlcVxuICAgbG9uZ2J5dGVzaXRlbSAgOjo9IGxvbmdieXRlc2NoYXIgfCBieXRlc2VzY2FwZXNlcVxuICAgc2hvcnRieXRlc2NoYXIgOjo9IDxhbnkgQVNDSUkgY2hhcmFjdGVyIGV4Y2VwdCAiXFwiIG9yIG5ld2xpbmUgb3IgdGhlIHF1b3RlPlxuICAgbG9uZ2J5dGVzY2hhciAgOjo9IDxhbnkgQVNDSUkgY2hhcmFjdGVyIGV4Y2VwdCAiXFwiPlxuICAgYnl0ZXNlc2NhcGVzZXEgOjo9ICJcXCIgPGFueSBBU0NJSSBjaGFyYWN0ZXI+XG5cbk9uZSBzeW50YWN0aWMgcmVzdHJpY3Rpb24gbm90IGluZGljYXRlZCBieSB0aGVzZSBwcm9kdWN0aW9ucyBpcyB0aGF0XG53aGl0ZXNwYWNlIGlzIG5vdCBhbGxvd2VkIGJldHdlZW4gdGhlICJzdHJpbmdwcmVmaXgiIG9yICJieXRlc3ByZWZpeCJcbmFuZCB0aGUgcmVzdCBvZiB0aGUgbGl0ZXJhbC4gVGhlIHNvdXJjZSBjaGFyYWN0ZXIgc2V0IGlzIGRlZmluZWQgYnlcbnRoZSBlbmNvZGluZyBkZWNsYXJhdGlvbjsgaXQgaXMgVVRGLTggaWYgbm8gZW5jb2RpbmcgZGVjbGFyYXRpb24gaXNcbmdpdmVuIGluIHRoZSBzb3VyY2UgZmlsZTsgc2VlIHNlY3Rpb24gKkVuY29kaW5nIGRlY2xhcmF0aW9ucyouXG5cbkluIHBsYWluIEVuZ2xpc2g6IEJvdGggdHlwZXMgb2YgbGl0ZXJhbHMgY2FuIGJlIGVuY2xvc2VkIGluIG1hdGNoaW5nXG5zaW5nbGUgcXVvdGVzICgiXCciKSBvciBkb3VibGUgcXVvdGVzICgiIiIpLiAgVGhleSBjYW4gYWxzbyBiZSBlbmNsb3NlZFxuaW4gbWF0Y2hpbmcgZ3JvdXBzIG9mIHRocmVlIHNpbmdsZSBvciBkb3VibGUgcXVvdGVzICh0aGVzZSBhcmVcbmdlbmVyYWxseSByZWZlcnJlZCB0byBhcyAqdHJpcGxlLXF1b3RlZCBzdHJpbmdzKikuICBUaGUgYmFja3NsYXNoXG4oIlxcIikgY2hhcmFjdGVyIGlzIHVzZWQgdG8gZXNjYXBlIGNoYXJhY3RlcnMgdGhhdCBvdGhlcndpc2UgaGF2ZSBhXG5zcGVjaWFsIG1lYW5pbmcsIHN1Y2ggYXMgbmV3bGluZSwgYmFja3NsYXNoIGl0c2VsZiwgb3IgdGhlIHF1b3RlXG5jaGFyYWN0ZXIuXG5cbkJ5dGVzIGxpdGVyYWxzIGFyZSBhbHdheXMgcHJlZml4ZWQgd2l0aCAiXCdiXCciIG9yICJcJ0JcJyI7IHRoZXkgcHJvZHVjZVxuYW4gaW5zdGFuY2Ugb2YgdGhlICJieXRlcyIgdHlwZSBpbnN0ZWFkIG9mIHRoZSAic3RyIiB0eXBlLiAgVGhleSBtYXlcbm9ubHkgY29udGFpbiBBU0NJSSBjaGFyYWN0ZXJzOyBieXRlcyB3aXRoIGEgbnVtZXJpYyB2YWx1ZSBvZiAxMjggb3JcbmdyZWF0ZXIgbXVzdCBiZSBleHByZXNzZWQgd2l0aCBlc2NhcGVzLlxuXG5BcyBvZiBQeXRob24gMy4zIGl0IGlzIHBvc3NpYmxlIGFnYWluIHRvIHByZWZpeCBzdHJpbmcgbGl0ZXJhbHMgd2l0aCBhXG4idSIgcHJlZml4IHRvIHNpbXBsaWZ5IG1haW50ZW5hbmNlIG9mIGR1YWwgMi54IGFuZCAzLnggY29kZWJhc2VzLlxuXG5Cb3RoIHN0cmluZyBhbmQgYnl0ZXMgbGl0ZXJhbHMgbWF5IG9wdGlvbmFsbHkgYmUgcHJlZml4ZWQgd2l0aCBhXG5sZXR0ZXIgIlwnclwnIiBvciAiXCdSXCciOyBzdWNoIHN0cmluZ3MgYXJlIGNhbGxlZCAqcmF3IHN0cmluZ3MqIGFuZCB0cmVhdFxuYmFja3NsYXNoZXMgYXMgbGl0ZXJhbCBjaGFyYWN0ZXJzLiAgQXMgYSByZXN1bHQsIGluIHN0cmluZyBsaXRlcmFscyxcbiJcJ1xcVVwnIiBhbmQgIlwnXFx1XCciIGVzY2FwZXMgaW4gcmF3IHN0cmluZ3MgYXJlIG5vdCB0cmVhdGVkIHNwZWNpYWxseS5cbkdpdmVuIHRoYXQgUHl0aG9uIDIueFwncyByYXcgdW5pY29kZSBsaXRlcmFscyBiZWhhdmUgZGlmZmVyZW50bHkgdGhhblxuUHl0aG9uIDMueFwncyB0aGUgIlwndXJcJyIgc3ludGF4IGlzIG5vdCBzdXBwb3J0ZWQuXG5cbk5ldyBpbiB2ZXJzaW9uIDMuMzogVGhlICJcJ3JiXCciIHByZWZpeCBvZiByYXcgYnl0ZXMgbGl0ZXJhbHMgaGFzIGJlZW5cbmFkZGVkIGFzIGEgc3lub255bSBvZiAiXCdiclwnIi5cblxuTmV3IGluIHZlcnNpb24gMy4zOiBTdXBwb3J0IGZvciB0aGUgdW5pY29kZSBsZWdhY3kgbGl0ZXJhbFxuKCJ1XCd2YWx1ZVwnIikgd2FzIHJlaW50cm9kdWNlZCB0byBzaW1wbGlmeSB0aGUgbWFpbnRlbmFuY2Ugb2YgZHVhbFxuUHl0aG9uIDIueCBhbmQgMy54IGNvZGViYXNlcy4gU2VlICoqUEVQIDQxNCoqIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuXG5JbiB0cmlwbGUtcXVvdGVkIGxpdGVyYWxzLCB1bmVzY2FwZWQgbmV3bGluZXMgYW5kIHF1b3RlcyBhcmUgYWxsb3dlZFxuKGFuZCBhcmUgcmV0YWluZWQpLCBleGNlcHQgdGhhdCB0aHJlZSB1bmVzY2FwZWQgcXVvdGVzIGluIGEgcm93XG50ZXJtaW5hdGUgdGhlIGxpdGVyYWwuICAoQSAicXVvdGUiIGlzIHRoZSBjaGFyYWN0ZXIgdXNlZCB0byBvcGVuIHRoZVxubGl0ZXJhbCwgaS5lLiBlaXRoZXIgIlwnIiBvciAiIiIuKVxuXG5Vbmxlc3MgYW4gIlwnclwnIiBvciAiXCdSXCciIHByZWZpeCBpcyBwcmVzZW50LCBlc2NhcGUgc2VxdWVuY2VzIGluIHN0cmluZ1xuYW5kIGJ5dGVzIGxpdGVyYWxzIGFyZSBpbnRlcnByZXRlZCBhY2NvcmRpbmcgdG8gcnVsZXMgc2ltaWxhciB0byB0aG9zZVxudXNlZCBieSBTdGFuZGFyZCBDLiAgVGhlIHJlY29nbml6ZWQgZXNjYXBlIHNlcXVlbmNlcyBhcmU6XG5cbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgRXNjYXBlIFNlcXVlbmNlICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgIHxcbis9PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PStcbnwgIlxcbmV3bGluZSIgICAgICAgIHwgQmFja3NsYXNoIGFuZCBuZXdsaW5lIGlnbm9yZWQgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXFxcIiAgICAgICAgICAgICAgfCBCYWNrc2xhc2ggKCJcXCIpICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXFwnIiAgICAgICAgICAgICAgfCBTaW5nbGUgcXVvdGUgKCJcJyIpICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXCIiICAgICAgICAgICAgICB8IERvdWJsZSBxdW90ZSAoIiIiKSAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXFxhIiAgICAgICAgICAgICAgfCBBU0NJSSBCZWxsIChCRUwpICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgIlxcYiIgICAgICAgICAgICAgIHwgQVNDSUkgQmFja3NwYWNlIChCUykgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXGYiICAgICAgICAgICAgICB8IEFTQ0lJIEZvcm1mZWVkIChGRikgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXFxuIiAgICAgICAgICAgICAgfCBBU0NJSSBMaW5lZmVlZCAoTEYpICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgIlxcciIgICAgICAgICAgICAgIHwgQVNDSUkgQ2FycmlhZ2UgUmV0dXJuIChDUikgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXHQiICAgICAgICAgICAgICB8IEFTQ0lJIEhvcml6b250YWwgVGFiIChUQUIpICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXFx2IiAgICAgICAgICAgICAgfCBBU0NJSSBWZXJ0aWNhbCBUYWIgKFZUKSAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgIlxcb29vIiAgICAgICAgICAgIHwgQ2hhcmFjdGVyIHdpdGggb2N0YWwgdmFsdWUgKm9vbyogIHwgKDEsMykgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXHhoaCIgICAgICAgICAgICB8IENoYXJhY3RlciB3aXRoIGhleCB2YWx1ZSAqaGgqICAgICB8ICgyLDMpICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuXG5Fc2NhcGUgc2VxdWVuY2VzIG9ubHkgcmVjb2duaXplZCBpbiBzdHJpbmcgbGl0ZXJhbHMgYXJlOlxuXG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IEVzY2FwZSBTZXF1ZW5jZSAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICB8XG4rPT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT0rXG58ICJcXE57bmFtZX0iICAgICAgICB8IENoYXJhY3RlciBuYW1lZCAqbmFtZSogaW4gdGhlICAgICB8ICg0KSAgICAgfFxufCAgICAgICAgICAgICAgICAgICB8IFVuaWNvZGUgZGF0YWJhc2UgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXFx1eHh4eCIgICAgICAgICAgfCBDaGFyYWN0ZXIgd2l0aCAxNi1iaXQgaGV4IHZhbHVlICAgfCAoNSkgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgfCAqeHh4eCogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgIlxcVXh4eHh4eHh4IiAgICAgIHwgQ2hhcmFjdGVyIHdpdGggMzItYml0IGhleCB2YWx1ZSAgIHwgKDYpICAgICB8XG58ICAgICAgICAgICAgICAgICAgIHwgKnh4eHh4eHh4KiAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG5cbk5vdGVzOlxuXG4xLiBBcyBpbiBTdGFuZGFyZCBDLCB1cCB0byB0aHJlZSBvY3RhbCBkaWdpdHMgYXJlIGFjY2VwdGVkLlxuXG4yLiBVbmxpa2UgaW4gU3RhbmRhcmQgQywgZXhhY3RseSB0d28gaGV4IGRpZ2l0cyBhcmUgcmVxdWlyZWQuXG5cbjMuIEluIGEgYnl0ZXMgbGl0ZXJhbCwgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIGVzY2FwZXMgZGVub3RlIHRoZVxuICAgYnl0ZSB3aXRoIHRoZSBnaXZlbiB2YWx1ZS4gSW4gYSBzdHJpbmcgbGl0ZXJhbCwgdGhlc2UgZXNjYXBlc1xuICAgZGVub3RlIGEgVW5pY29kZSBjaGFyYWN0ZXIgd2l0aCB0aGUgZ2l2ZW4gdmFsdWUuXG5cbjQuIENoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IFN1cHBvcnQgZm9yIG5hbWUgYWxpYXNlcyBbMV0gaGFzIGJlZW5cbiAgIGFkZGVkLlxuXG41LiBFeGFjdGx5IGZvdXIgaGV4IGRpZ2l0cyBhcmUgcmVxdWlyZWQuXG5cbjYuIEFueSBVbmljb2RlIGNoYXJhY3RlciBjYW4gYmUgZW5jb2RlZCB0aGlzIHdheS4gIEV4YWN0bHkgZWlnaHRcbiAgIGhleCBkaWdpdHMgYXJlIHJlcXVpcmVkLlxuXG5Vbmxpa2UgU3RhbmRhcmQgQywgYWxsIHVucmVjb2duaXplZCBlc2NhcGUgc2VxdWVuY2VzIGFyZSBsZWZ0IGluIHRoZVxuc3RyaW5nIHVuY2hhbmdlZCwgaS5lLiwgKnRoZSBiYWNrc2xhc2ggaXMgbGVmdCBpbiB0aGUgcmVzdWx0Ki4gIChUaGlzXG5iZWhhdmlvciBpcyB1c2VmdWwgd2hlbiBkZWJ1Z2dpbmc6IGlmIGFuIGVzY2FwZSBzZXF1ZW5jZSBpcyBtaXN0eXBlZCxcbnRoZSByZXN1bHRpbmcgb3V0cHV0IGlzIG1vcmUgZWFzaWx5IHJlY29nbml6ZWQgYXMgYnJva2VuLikgIEl0IGlzIGFsc29cbmltcG9ydGFudCB0byBub3RlIHRoYXQgdGhlIGVzY2FwZSBzZXF1ZW5jZXMgb25seSByZWNvZ25pemVkIGluIHN0cmluZ1xubGl0ZXJhbHMgZmFsbCBpbnRvIHRoZSBjYXRlZ29yeSBvZiB1bnJlY29nbml6ZWQgZXNjYXBlcyBmb3IgYnl0ZXNcbmxpdGVyYWxzLlxuXG5FdmVuIGluIGEgcmF3IGxpdGVyYWwsIHF1b3RlcyBjYW4gYmUgZXNjYXBlZCB3aXRoIGEgYmFja3NsYXNoLCBidXQgdGhlXG5iYWNrc2xhc2ggcmVtYWlucyBpbiB0aGUgcmVzdWx0OyBmb3IgZXhhbXBsZSwgInIiXFwiIiIgaXMgYSB2YWxpZFxuc3RyaW5nIGxpdGVyYWwgY29uc2lzdGluZyBvZiB0d28gY2hhcmFjdGVyczogYSBiYWNrc2xhc2ggYW5kIGEgZG91YmxlXG5xdW90ZTsgInIiXFwiIiBpcyBub3QgYSB2YWxpZCBzdHJpbmcgbGl0ZXJhbCAoZXZlbiBhIHJhdyBzdHJpbmcgY2Fubm90XG5lbmQgaW4gYW4gb2RkIG51bWJlciBvZiBiYWNrc2xhc2hlcykuICBTcGVjaWZpY2FsbHksICphIHJhdyBsaXRlcmFsXG5jYW5ub3QgZW5kIGluIGEgc2luZ2xlIGJhY2tzbGFzaCogKHNpbmNlIHRoZSBiYWNrc2xhc2ggd291bGQgZXNjYXBlXG50aGUgZm9sbG93aW5nIHF1b3RlIGNoYXJhY3RlcikuICBOb3RlIGFsc28gdGhhdCBhIHNpbmdsZSBiYWNrc2xhc2hcbmZvbGxvd2VkIGJ5IGEgbmV3bGluZSBpcyBpbnRlcnByZXRlZCBhcyB0aG9zZSB0d28gY2hhcmFjdGVycyBhcyBwYXJ0XG5vZiB0aGUgbGl0ZXJhbCwgKm5vdCogYXMgYSBsaW5lIGNvbnRpbnVhdGlvbi5cbicsCi0gJ3N1YnNjcmlwdGlvbnMnOiB1J1xuU3Vic2NyaXB0aW9uc1xuKioqKioqKioqKioqKlxuXG5BIHN1YnNjcmlwdGlvbiBzZWxlY3RzIGFuIGl0ZW0gb2YgYSBzZXF1ZW5jZSAoc3RyaW5nLCB0dXBsZSBvciBsaXN0KVxub3IgbWFwcGluZyAoZGljdGlvbmFyeSkgb2JqZWN0OlxuXG4gICBzdWJzY3JpcHRpb24gOjo9IHByaW1hcnkgIlsiIGV4cHJlc3Npb25fbGlzdCAiXSJcblxuVGhlIHByaW1hcnkgbXVzdCBldmFsdWF0ZSB0byBhbiBvYmplY3QgdGhhdCBzdXBwb3J0cyBzdWJzY3JpcHRpb25cbihsaXN0cyBvciBkaWN0aW9uYXJpZXMgZm9yIGV4YW1wbGUpLiAgVXNlci1kZWZpbmVkIG9iamVjdHMgY2FuIHN1cHBvcnRcbnN1YnNjcmlwdGlvbiBieSBkZWZpbmluZyBhICJfX2dldGl0ZW1fXygpIiBtZXRob2QuXG5cbkZvciBidWlsdC1pbiBvYmplY3RzLCB0aGVyZSBhcmUgdHdvIHR5cGVzIG9mIG9iamVjdHMgdGhhdCBzdXBwb3J0XG5zdWJzY3JpcHRpb246XG5cbklmIHRoZSBwcmltYXJ5IGlzIGEgbWFwcGluZywgdGhlIGV4cHJlc3Npb24gbGlzdCBtdXN0IGV2YWx1YXRlIHRvIGFuXG5vYmplY3Qgd2hvc2UgdmFsdWUgaXMgb25lIG9mIHRoZSBrZXlzIG9mIHRoZSBtYXBwaW5nLCBhbmQgdGhlXG5zdWJzY3JpcHRpb24gc2VsZWN0cyB0aGUgdmFsdWUgaW4gdGhlIG1hcHBpbmcgdGhhdCBjb3JyZXNwb25kcyB0byB0aGF0XG5rZXkuICAoVGhlIGV4cHJlc3Npb24gbGlzdCBpcyBhIHR1cGxlIGV4Y2VwdCBpZiBpdCBoYXMgZXhhY3RseSBvbmVcbml0ZW0uKVxuXG5JZiB0aGUgcHJpbWFyeSBpcyBhIHNlcXVlbmNlLCB0aGUgZXhwcmVzc2lvbiAobGlzdCkgbXVzdCBldmFsdWF0ZSB0b1xuYW4gaW50ZWdlciBvciBhIHNsaWNlIChhcyBkaXNjdXNzZWQgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9uKS5cblxuVGhlIGZvcm1hbCBzeW50YXggbWFrZXMgbm8gc3BlY2lhbCBwcm92aXNpb24gZm9yIG5lZ2F0aXZlIGluZGljZXMgaW5cbnNlcXVlbmNlczsgaG93ZXZlciwgYnVpbHQtaW4gc2VxdWVuY2VzIGFsbCBwcm92aWRlIGEgIl9fZ2V0aXRlbV9fKCkiXG5tZXRob2QgdGhhdCBpbnRlcnByZXRzIG5lZ2F0aXZlIGluZGljZXMgYnkgYWRkaW5nIHRoZSBsZW5ndGggb2YgdGhlXG5zZXF1ZW5jZSB0byB0aGUgaW5kZXggKHNvIHRoYXQgInhbLTFdIiBzZWxlY3RzIHRoZSBsYXN0IGl0ZW0gb2YgIngiKS5cblRoZSByZXN1bHRpbmcgdmFsdWUgbXVzdCBiZSBhIG5vbm5lZ2F0aXZlIGludGVnZXIgbGVzcyB0aGFuIHRoZSBudW1iZXJcbm9mIGl0ZW1zIGluIHRoZSBzZXF1ZW5jZSwgYW5kIHRoZSBzdWJzY3JpcHRpb24gc2VsZWN0cyB0aGUgaXRlbSB3aG9zZVxuaW5kZXggaXMgdGhhdCB2YWx1ZSAoY291bnRpbmcgZnJvbSB6ZXJvKS4gU2luY2UgdGhlIHN1cHBvcnQgZm9yXG5uZWdhdGl2ZSBpbmRpY2VzIGFuZCBzbGljaW5nIG9jY3VycyBpbiB0aGUgb2JqZWN0XCdzICJfX2dldGl0ZW1fXygpIlxubWV0aG9kLCBzdWJjbGFzc2VzIG92ZXJyaWRpbmcgdGhpcyBtZXRob2Qgd2lsbCBuZWVkIHRvIGV4cGxpY2l0bHkgYWRkXG50aGF0IHN1cHBvcnQuXG5cbkEgc3RyaW5nXCdzIGl0ZW1zIGFyZSBjaGFyYWN0ZXJzLiAgQSBjaGFyYWN0ZXIgaXMgbm90IGEgc2VwYXJhdGUgZGF0YVxudHlwZSBidXQgYSBzdHJpbmcgb2YgZXhhY3RseSBvbmUgY2hhcmFjdGVyLlxuJywKLSAndHJ1dGgnOiB1J1xuVHJ1dGggVmFsdWUgVGVzdGluZ1xuKioqKioqKioqKioqKioqKioqKlxuXG5Bbnkgb2JqZWN0IGNhbiBiZSB0ZXN0ZWQgZm9yIHRydXRoIHZhbHVlLCBmb3IgdXNlIGluIGFuICJpZiIgb3JcbiJ3aGlsZSIgY29uZGl0aW9uIG9yIGFzIG9wZXJhbmQgb2YgdGhlIEJvb2xlYW4gb3BlcmF0aW9ucyBiZWxvdy4gVGhlXG5mb2xsb3dpbmcgdmFsdWVzIGFyZSBjb25zaWRlcmVkIGZhbHNlOlxuXG4qICJOb25lIlxuXG4qICJGYWxzZSJcblxuKiB6ZXJvIG9mIGFueSBudW1lcmljIHR5cGUsIGZvciBleGFtcGxlLCAiMCIsICIwLjAiLCAiMGoiLlxuXG4qIGFueSBlbXB0eSBzZXF1ZW5jZSwgZm9yIGV4YW1wbGUsICJcJ1wnIiwgIigpIiwgIltdIi5cblxuKiBhbnkgZW1wdHkgbWFwcGluZywgZm9yIGV4YW1wbGUsICJ7fSIuXG5cbiogaW5zdGFuY2VzIG9mIHVzZXItZGVmaW5lZCBjbGFzc2VzLCBpZiB0aGUgY2xhc3MgZGVmaW5lcyBhXG4gICJfX2Jvb2xfXygpIiBvciAiX19sZW5fXygpIiBtZXRob2QsIHdoZW4gdGhhdCBtZXRob2QgcmV0dXJucyB0aGVcbiAgaW50ZWdlciB6ZXJvIG9yICJib29sIiB2YWx1ZSAiRmFsc2UiLiBbMV1cblxuQWxsIG90aGVyIHZhbHVlcyBhcmUgY29uc2lkZXJlZCB0cnVlIC0tLSBzbyBvYmplY3RzIG9mIG1hbnkgdHlwZXMgYXJlXG5hbHdheXMgdHJ1ZS5cblxuT3BlcmF0aW9ucyBhbmQgYnVpbHQtaW4gZnVuY3Rpb25zIHRoYXQgaGF2ZSBhIEJvb2xlYW4gcmVzdWx0IGFsd2F5c1xucmV0dXJuICIwIiBvciAiRmFsc2UiIGZvciBmYWxzZSBhbmQgIjEiIG9yICJUcnVlIiBmb3IgdHJ1ZSwgdW5sZXNzXG5vdGhlcndpc2Ugc3RhdGVkLiAoSW1wb3J0YW50IGV4Y2VwdGlvbjogdGhlIEJvb2xlYW4gb3BlcmF0aW9ucyAib3IiXG5hbmQgImFuZCIgYWx3YXlzIHJldHVybiBvbmUgb2YgdGhlaXIgb3BlcmFuZHMuKVxuJywKLSAndHJ5JzogdSdcblRoZSAidHJ5IiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKipcblxuVGhlICJ0cnkiIHN0YXRlbWVudCBzcGVjaWZpZXMgZXhjZXB0aW9uIGhhbmRsZXJzIGFuZC9vciBjbGVhbnVwIGNvZGVcbmZvciBhIGdyb3VwIG9mIHN0YXRlbWVudHM6XG5cbiAgIHRyeV9zdG10ICA6Oj0gdHJ5MV9zdG10IHwgdHJ5Ml9zdG10XG4gICB0cnkxX3N0bXQgOjo9ICJ0cnkiICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgICAoImV4Y2VwdCIgW2V4cHJlc3Npb24gWyJhcyIgaWRlbnRpZmllcl1dICI6IiBzdWl0ZSkrXG4gICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuICAgICAgICAgICAgICAgICBbImZpbmFsbHkiICI6IiBzdWl0ZV1cbiAgIHRyeTJfc3RtdCA6Oj0gInRyeSIgIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICJmaW5hbGx5IiAiOiIgc3VpdGVcblxuVGhlICJleGNlcHQiIGNsYXVzZShzKSBzcGVjaWZ5IG9uZSBvciBtb3JlIGV4Y2VwdGlvbiBoYW5kbGVycy4gV2hlbiBub1xuZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgInRyeSIgY2xhdXNlLCBubyBleGNlcHRpb24gaGFuZGxlciBpc1xuZXhlY3V0ZWQuIFdoZW4gYW4gZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgInRyeSIgc3VpdGUsIGEgc2VhcmNoIGZvciBhblxuZXhjZXB0aW9uIGhhbmRsZXIgaXMgc3RhcnRlZC4gIFRoaXMgc2VhcmNoIGluc3BlY3RzIHRoZSBleGNlcHQgY2xhdXNlc1xuaW4gdHVybiB1bnRpbCBvbmUgaXMgZm91bmQgdGhhdCBtYXRjaGVzIHRoZSBleGNlcHRpb24uICBBbiBleHByZXNzaW9uLVxubGVzcyBleGNlcHQgY2xhdXNlLCBpZiBwcmVzZW50LCBtdXN0IGJlIGxhc3Q7IGl0IG1hdGNoZXMgYW55XG5leGNlcHRpb24uICBGb3IgYW4gZXhjZXB0IGNsYXVzZSB3aXRoIGFuIGV4cHJlc3Npb24sIHRoYXQgZXhwcmVzc2lvblxuaXMgZXZhbHVhdGVkLCBhbmQgdGhlIGNsYXVzZSBtYXRjaGVzIHRoZSBleGNlcHRpb24gaWYgdGhlIHJlc3VsdGluZ1xub2JqZWN0IGlzICJjb21wYXRpYmxlIiB3aXRoIHRoZSBleGNlcHRpb24uICBBbiBvYmplY3QgaXMgY29tcGF0aWJsZVxud2l0aCBhbiBleGNlcHRpb24gaWYgaXQgaXMgdGhlIGNsYXNzIG9yIGEgYmFzZSBjbGFzcyBvZiB0aGUgZXhjZXB0aW9uXG5vYmplY3Qgb3IgYSB0dXBsZSBjb250YWluaW5nIGFuIGl0ZW0gY29tcGF0aWJsZSB3aXRoIHRoZSBleGNlcHRpb24uXG5cbklmIG5vIGV4Y2VwdCBjbGF1c2UgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uLCB0aGUgc2VhcmNoIGZvciBhbiBleGNlcHRpb25cbmhhbmRsZXIgY29udGludWVzIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBvbiB0aGUgaW52b2NhdGlvbiBzdGFjay5cblsxXVxuXG5JZiB0aGUgZXZhbHVhdGlvbiBvZiBhbiBleHByZXNzaW9uIGluIHRoZSBoZWFkZXIgb2YgYW4gZXhjZXB0IGNsYXVzZVxucmFpc2VzIGFuIGV4Y2VwdGlvbiwgdGhlIG9yaWdpbmFsIHNlYXJjaCBmb3IgYSBoYW5kbGVyIGlzIGNhbmNlbGVkIGFuZFxuYSBzZWFyY2ggc3RhcnRzIGZvciB0aGUgbmV3IGV4Y2VwdGlvbiBpbiB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgb25cbnRoZSBjYWxsIHN0YWNrIChpdCBpcyB0cmVhdGVkIGFzIGlmIHRoZSBlbnRpcmUgInRyeSIgc3RhdGVtZW50IHJhaXNlZFxudGhlIGV4Y2VwdGlvbikuXG5cbldoZW4gYSBtYXRjaGluZyBleGNlcHQgY2xhdXNlIGlzIGZvdW5kLCB0aGUgZXhjZXB0aW9uIGlzIGFzc2lnbmVkIHRvXG50aGUgdGFyZ2V0IHNwZWNpZmllZCBhZnRlciB0aGUgImFzIiBrZXl3b3JkIGluIHRoYXQgZXhjZXB0IGNsYXVzZSwgaWZcbnByZXNlbnQsIGFuZCB0aGUgZXhjZXB0IGNsYXVzZVwncyBzdWl0ZSBpcyBleGVjdXRlZC4gIEFsbCBleGNlcHRcbmNsYXVzZXMgbXVzdCBoYXZlIGFuIGV4ZWN1dGFibGUgYmxvY2suICBXaGVuIHRoZSBlbmQgb2YgdGhpcyBibG9jayBpc1xucmVhY2hlZCwgZXhlY3V0aW9uIGNvbnRpbnVlcyBub3JtYWxseSBhZnRlciB0aGUgZW50aXJlIHRyeSBzdGF0ZW1lbnQuXG4oVGhpcyBtZWFucyB0aGF0IGlmIHR3byBuZXN0ZWQgaGFuZGxlcnMgZXhpc3QgZm9yIHRoZSBzYW1lIGV4Y2VwdGlvbixcbmFuZCB0aGUgZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgdHJ5IGNsYXVzZSBvZiB0aGUgaW5uZXIgaGFuZGxlciwgdGhlXG5vdXRlciBoYW5kbGVyIHdpbGwgbm90IGhhbmRsZSB0aGUgZXhjZXB0aW9uLilcblxuV2hlbiBhbiBleGNlcHRpb24gaGFzIGJlZW4gYXNzaWduZWQgdXNpbmcgImFzIHRhcmdldCIsIGl0IGlzIGNsZWFyZWRcbmF0IHRoZSBlbmQgb2YgdGhlIGV4Y2VwdCBjbGF1c2UuICBUaGlzIGlzIGFzIGlmXG5cbiAgIGV4Y2VwdCBFIGFzIE46XG4gICAgICAgZm9vXG5cbndhcyB0cmFuc2xhdGVkIHRvXG5cbiAgIGV4Y2VwdCBFIGFzIE46XG4gICAgICAgdHJ5OlxuICAgICAgICAgICBmb29cbiAgICAgICBmaW5hbGx5OlxuICAgICAgICAgICBkZWwgTlxuXG5UaGlzIG1lYW5zIHRoZSBleGNlcHRpb24gbXVzdCBiZSBhc3NpZ25lZCB0byBhIGRpZmZlcmVudCBuYW1lIHRvIGJlXG5hYmxlIHRvIHJlZmVyIHRvIGl0IGFmdGVyIHRoZSBleGNlcHQgY2xhdXNlLiAgRXhjZXB0aW9ucyBhcmUgY2xlYXJlZFxuYmVjYXVzZSB3aXRoIHRoZSB0cmFjZWJhY2sgYXR0YWNoZWQgdG8gdGhlbSwgdGhleSBmb3JtIGEgcmVmZXJlbmNlXG5jeWNsZSB3aXRoIHRoZSBzdGFjayBmcmFtZSwga2VlcGluZyBhbGwgbG9jYWxzIGluIHRoYXQgZnJhbWUgYWxpdmVcbnVudGlsIHRoZSBuZXh0IGdhcmJhZ2UgY29sbGVjdGlvbiBvY2N1cnMuXG5cbkJlZm9yZSBhbiBleGNlcHQgY2xhdXNlXCdzIHN1aXRlIGlzIGV4ZWN1dGVkLCBkZXRhaWxzIGFib3V0IHRoZVxuZXhjZXB0aW9uIGFyZSBzdG9yZWQgaW4gdGhlICJzeXMiIG1vZHVsZSBhbmQgY2FuIGJlIGFjY2Vzc2VkIHZpYVxuInN5cy5leGNfaW5mbygpIi4gInN5cy5leGNfaW5mbygpIiByZXR1cm5zIGEgMy10dXBsZSBjb25zaXN0aW5nIG9mIHRoZVxuZXhjZXB0aW9uIGNsYXNzLCB0aGUgZXhjZXB0aW9uIGluc3RhbmNlIGFuZCBhIHRyYWNlYmFjayBvYmplY3QgKHNlZVxuc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KikgaWRlbnRpZnlpbmcgdGhlIHBvaW50IGluIHRoZVxucHJvZ3JhbSB3aGVyZSB0aGUgZXhjZXB0aW9uIG9jY3VycmVkLiAgInN5cy5leGNfaW5mbygpIiB2YWx1ZXMgYXJlXG5yZXN0b3JlZCB0byB0aGVpciBwcmV2aW91cyB2YWx1ZXMgKGJlZm9yZSB0aGUgY2FsbCkgd2hlbiByZXR1cm5pbmdcbmZyb20gYSBmdW5jdGlvbiB0aGF0IGhhbmRsZWQgYW4gZXhjZXB0aW9uLlxuXG5UaGUgb3B0aW9uYWwgImVsc2UiIGNsYXVzZSBpcyBleGVjdXRlZCBpZiBhbmQgd2hlbiBjb250cm9sIGZsb3dzIG9mZlxudGhlIGVuZCBvZiB0aGUgInRyeSIgY2xhdXNlLiBbMl0gRXhjZXB0aW9ucyBpbiB0aGUgImVsc2UiIGNsYXVzZSBhcmVcbm5vdCBoYW5kbGVkIGJ5IHRoZSBwcmVjZWRpbmcgImV4Y2VwdCIgY2xhdXNlcy5cblxuSWYgImZpbmFsbHkiIGlzIHByZXNlbnQsIGl0IHNwZWNpZmllcyBhIFwnY2xlYW51cFwnIGhhbmRsZXIuICBUaGUgInRyeSJcbmNsYXVzZSBpcyBleGVjdXRlZCwgaW5jbHVkaW5nIGFueSAiZXhjZXB0IiBhbmQgImVsc2UiIGNsYXVzZXMuICBJZiBhblxuZXhjZXB0aW9uIG9jY3VycyBpbiBhbnkgb2YgdGhlIGNsYXVzZXMgYW5kIGlzIG5vdCBoYW5kbGVkLCB0aGVcbmV4Y2VwdGlvbiBpcyB0ZW1wb3JhcmlseSBzYXZlZC4gVGhlICJmaW5hbGx5IiBjbGF1c2UgaXMgZXhlY3V0ZWQuICBJZlxudGhlcmUgaXMgYSBzYXZlZCBleGNlcHRpb24gaXQgaXMgcmUtcmFpc2VkIGF0IHRoZSBlbmQgb2YgdGhlICJmaW5hbGx5IlxuY2xhdXNlLiAgSWYgdGhlICJmaW5hbGx5IiBjbGF1c2UgcmFpc2VzIGFub3RoZXIgZXhjZXB0aW9uLCB0aGUgc2F2ZWRcbmV4Y2VwdGlvbiBpcyBzZXQgYXMgdGhlIGNvbnRleHQgb2YgdGhlIG5ldyBleGNlcHRpb24uIElmIHRoZSAiZmluYWxseSJcbmNsYXVzZSBleGVjdXRlcyBhICJyZXR1cm4iIG9yICJicmVhayIgc3RhdGVtZW50LCB0aGUgc2F2ZWQgZXhjZXB0aW9uXG5pcyBkaXNjYXJkZWQ6XG5cbiAgID4+PiBkZWYgZigpOlxuICAgLi4uICAgICB0cnk6XG4gICAuLi4gICAgICAgICAxLzBcbiAgIC4uLiAgICAgZmluYWxseTpcbiAgIC4uLiAgICAgICAgIHJldHVybiA0MlxuICAgLi4uXG4gICA+Pj4gZigpXG4gICA0MlxuXG5UaGUgZXhjZXB0aW9uIGluZm9ybWF0aW9uIGlzIG5vdCBhdmFpbGFibGUgdG8gdGhlIHByb2dyYW0gZHVyaW5nXG5leGVjdXRpb24gb2YgdGhlICJmaW5hbGx5IiBjbGF1c2UuXG5cbldoZW4gYSAicmV0dXJuIiwgImJyZWFrIiBvciAiY29udGludWUiIHN0YXRlbWVudCBpcyBleGVjdXRlZCBpbiB0aGVcbiJ0cnkiIHN1aXRlIG9mIGEgInRyeSIuLi4iZmluYWxseSIgc3RhdGVtZW50LCB0aGUgImZpbmFsbHkiIGNsYXVzZSBpc1xuYWxzbyBleGVjdXRlZCBcJ29uIHRoZSB3YXkgb3V0LlwnIEEgImNvbnRpbnVlIiBzdGF0ZW1lbnQgaXMgaWxsZWdhbCBpblxudGhlICJmaW5hbGx5IiBjbGF1c2UuIChUaGUgcmVhc29uIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBjdXJyZW50XG5pbXBsZW1lbnRhdGlvbiAtLS0gdGhpcyByZXN0cmljdGlvbiBtYXkgYmUgbGlmdGVkIGluIHRoZSBmdXR1cmUpLlxuXG5UaGUgcmV0dXJuIHZhbHVlIG9mIGEgZnVuY3Rpb24gaXMgZGV0ZXJtaW5lZCBieSB0aGUgbGFzdCAicmV0dXJuIlxuc3RhdGVtZW50IGV4ZWN1dGVkLiAgU2luY2UgdGhlICJmaW5hbGx5IiBjbGF1c2UgYWx3YXlzIGV4ZWN1dGVzLCBhXG4icmV0dXJuIiBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlICJmaW5hbGx5IiBjbGF1c2Ugd2lsbCBhbHdheXMgYmUgdGhlXG5sYXN0IG9uZSBleGVjdXRlZDpcblxuICAgPj4+IGRlZiBmb28oKTpcbiAgIC4uLiAgICAgdHJ5OlxuICAgLi4uICAgICAgICAgcmV0dXJuIFwndHJ5XCdcbiAgIC4uLiAgICAgZmluYWxseTpcbiAgIC4uLiAgICAgICAgIHJldHVybiBcJ2ZpbmFsbHlcJ1xuICAgLi4uXG4gICA+Pj4gZm9vKClcbiAgIFwnZmluYWxseVwnXG5cbkFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gZXhjZXB0aW9ucyBjYW4gYmUgZm91bmQgaW4gc2VjdGlvblxuKkV4Y2VwdGlvbnMqLCBhbmQgaW5mb3JtYXRpb24gb24gdXNpbmcgdGhlICJyYWlzZSIgc3RhdGVtZW50IHRvXG5nZW5lcmF0ZSBleGNlcHRpb25zIG1heSBiZSBmb3VuZCBpbiBzZWN0aW9uICpUaGUgcmFpc2Ugc3RhdGVtZW50Ki5cbicsCi0gJ3R5cGVzJzogdSdcblRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeVxuKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbkJlbG93IGlzIGEgbGlzdCBvZiB0aGUgdHlwZXMgdGhhdCBhcmUgYnVpbHQgaW50byBQeXRob24uICBFeHRlbnNpb25cbm1vZHVsZXMgKHdyaXR0ZW4gaW4gQywgSmF2YSwgb3Igb3RoZXIgbGFuZ3VhZ2VzLCBkZXBlbmRpbmcgb24gdGhlXG5pbXBsZW1lbnRhdGlvbikgY2FuIGRlZmluZSBhZGRpdGlvbmFsIHR5cGVzLiAgRnV0dXJlIHZlcnNpb25zIG9mXG5QeXRob24gbWF5IGFkZCB0eXBlcyB0byB0aGUgdHlwZSBoaWVyYXJjaHkgKGUuZy4sIHJhdGlvbmFsIG51bWJlcnMsXG5lZmZpY2llbnRseSBzdG9yZWQgYXJyYXlzIG9mIGludGVnZXJzLCBldGMuKSwgYWx0aG91Z2ggc3VjaCBhZGRpdGlvbnNcbndpbGwgb2Z0ZW4gYmUgcHJvdmlkZWQgdmlhIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGluc3RlYWQuXG5cblNvbWUgb2YgdGhlIHR5cGUgZGVzY3JpcHRpb25zIGJlbG93IGNvbnRhaW4gYSBwYXJhZ3JhcGggbGlzdGluZ1xuXCdzcGVjaWFsIGF0dHJpYnV0ZXMuXCcgIFRoZXNlIGFyZSBhdHRyaWJ1dGVzIHRoYXQgcHJvdmlkZSBhY2Nlc3MgdG8gdGhlXG5pbXBsZW1lbnRhdGlvbiBhbmQgYXJlIG5vdCBpbnRlbmRlZCBmb3IgZ2VuZXJhbCB1c2UuICBUaGVpciBkZWZpbml0aW9uXG5tYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuXG5cbk5vbmVcbiAgIFRoaXMgdHlwZSBoYXMgYSBzaW5nbGUgdmFsdWUuICBUaGVyZSBpcyBhIHNpbmdsZSBvYmplY3Qgd2l0aCB0aGlzXG4gICB2YWx1ZS4gVGhpcyBvYmplY3QgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgYnVpbHQtaW4gbmFtZSAiTm9uZSIuIEl0XG4gICBpcyB1c2VkIHRvIHNpZ25pZnkgdGhlIGFic2VuY2Ugb2YgYSB2YWx1ZSBpbiBtYW55IHNpdHVhdGlvbnMsIGUuZy4sXG4gICBpdCBpcyByZXR1cm5lZCBmcm9tIGZ1bmN0aW9ucyB0aGF0IGRvblwndCBleHBsaWNpdGx5IHJldHVyblxuICAgYW55dGhpbmcuIEl0cyB0cnV0aCB2YWx1ZSBpcyBmYWxzZS5cblxuTm90SW1wbGVtZW50ZWRcbiAgIFRoaXMgdHlwZSBoYXMgYSBzaW5nbGUgdmFsdWUuICBUaGVyZSBpcyBhIHNpbmdsZSBvYmplY3Qgd2l0aCB0aGlzXG4gICB2YWx1ZS4gVGhpcyBvYmplY3QgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgYnVpbHQtaW4gbmFtZVxuICAgIk5vdEltcGxlbWVudGVkIi4gTnVtZXJpYyBtZXRob2RzIGFuZCByaWNoIGNvbXBhcmlzb24gbWV0aG9kc1xuICAgc2hvdWxkIHJldHVybiB0aGlzIHZhbHVlIGlmIHRoZXkgZG8gbm90IGltcGxlbWVudCB0aGUgb3BlcmF0aW9uIGZvclxuICAgdGhlIG9wZXJhbmRzIHByb3ZpZGVkLiAgKFRoZSBpbnRlcnByZXRlciB3aWxsIHRoZW4gdHJ5IHRoZVxuICAgcmVmbGVjdGVkIG9wZXJhdGlvbiwgb3Igc29tZSBvdGhlciBmYWxsYmFjaywgZGVwZW5kaW5nIG9uIHRoZVxuICAgb3BlcmF0b3IuKSAgSXRzIHRydXRoIHZhbHVlIGlzIHRydWUuXG5cbiAgIFNlZSAqSW1wbGVtZW50aW5nIHRoZSBhcml0aG1ldGljIG9wZXJhdGlvbnMqIGZvciBtb3JlIGRldGFpbHMuXG5cbkVsbGlwc2lzXG4gICBUaGlzIHR5cGUgaGFzIGEgc2luZ2xlIHZhbHVlLiAgVGhlcmUgaXMgYSBzaW5nbGUgb2JqZWN0IHdpdGggdGhpc1xuICAgdmFsdWUuIFRoaXMgb2JqZWN0IGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlIGxpdGVyYWwgIi4uLiIgb3IgdGhlXG4gICBidWlsdC1pbiBuYW1lICJFbGxpcHNpcyIuICBJdHMgdHJ1dGggdmFsdWUgaXMgdHJ1ZS5cblxuIm51bWJlcnMuTnVtYmVyIlxuICAgVGhlc2UgYXJlIGNyZWF0ZWQgYnkgbnVtZXJpYyBsaXRlcmFscyBhbmQgcmV0dXJuZWQgYXMgcmVzdWx0cyBieVxuICAgYXJpdGhtZXRpYyBvcGVyYXRvcnMgYW5kIGFyaXRobWV0aWMgYnVpbHQtaW4gZnVuY3Rpb25zLiAgTnVtZXJpY1xuICAgb2JqZWN0cyBhcmUgaW1tdXRhYmxlOyBvbmNlIGNyZWF0ZWQgdGhlaXIgdmFsdWUgbmV2ZXIgY2hhbmdlcy5cbiAgIFB5dGhvbiBudW1iZXJzIGFyZSBvZiBjb3Vyc2Ugc3Ryb25nbHkgcmVsYXRlZCB0byBtYXRoZW1hdGljYWxcbiAgIG51bWJlcnMsIGJ1dCBzdWJqZWN0IHRvIHRoZSBsaW1pdGF0aW9ucyBvZiBudW1lcmljYWwgcmVwcmVzZW50YXRpb25cbiAgIGluIGNvbXB1dGVycy5cblxuICAgUHl0aG9uIGRpc3Rpbmd1aXNoZXMgYmV0d2VlbiBpbnRlZ2VycywgZmxvYXRpbmcgcG9pbnQgbnVtYmVycywgYW5kXG4gICBjb21wbGV4IG51bWJlcnM6XG5cbiAgICJudW1iZXJzLkludGVncmFsIlxuICAgICAgVGhlc2UgcmVwcmVzZW50IGVsZW1lbnRzIGZyb20gdGhlIG1hdGhlbWF0aWNhbCBzZXQgb2YgaW50ZWdlcnNcbiAgICAgIChwb3NpdGl2ZSBhbmQgbmVnYXRpdmUpLlxuXG4gICAgICBUaGVyZSBhcmUgdHdvIHR5cGVzIG9mIGludGVnZXJzOlxuXG4gICAgICBJbnRlZ2VycyAoImludCIpXG5cbiAgICAgICAgIFRoZXNlIHJlcHJlc2VudCBudW1iZXJzIGluIGFuIHVubGltaXRlZCByYW5nZSwgc3ViamVjdCB0b1xuICAgICAgICAgYXZhaWxhYmxlICh2aXJ0dWFsKSBtZW1vcnkgb25seS4gIEZvciB0aGUgcHVycG9zZSBvZiBzaGlmdFxuICAgICAgICAgYW5kIG1hc2sgb3BlcmF0aW9ucywgYSBiaW5hcnkgcmVwcmVzZW50YXRpb24gaXMgYXNzdW1lZCwgYW5kXG4gICAgICAgICBuZWdhdGl2ZSBudW1iZXJzIGFyZSByZXByZXNlbnRlZCBpbiBhIHZhcmlhbnQgb2YgMlwnc1xuICAgICAgICAgY29tcGxlbWVudCB3aGljaCBnaXZlcyB0aGUgaWxsdXNpb24gb2YgYW4gaW5maW5pdGUgc3RyaW5nIG9mXG4gICAgICAgICBzaWduIGJpdHMgZXh0ZW5kaW5nIHRvIHRoZSBsZWZ0LlxuXG4gICAgICBCb29sZWFucyAoImJvb2wiKVxuICAgICAgICAgVGhlc2UgcmVwcmVzZW50IHRoZSB0cnV0aCB2YWx1ZXMgRmFsc2UgYW5kIFRydWUuICBUaGUgdHdvXG4gICAgICAgICBvYmplY3RzIHJlcHJlc2VudGluZyB0aGUgdmFsdWVzICJGYWxzZSIgYW5kICJUcnVlIiBhcmUgdGhlXG4gICAgICAgICBvbmx5IEJvb2xlYW4gb2JqZWN0cy4gVGhlIEJvb2xlYW4gdHlwZSBpcyBhIHN1YnR5cGUgb2YgdGhlXG4gICAgICAgICBpbnRlZ2VyIHR5cGUsIGFuZCBCb29sZWFuIHZhbHVlcyBiZWhhdmUgbGlrZSB0aGUgdmFsdWVzIDAgYW5kXG4gICAgICAgICAxLCByZXNwZWN0aXZlbHksIGluIGFsbW9zdCBhbGwgY29udGV4dHMsIHRoZSBleGNlcHRpb24gYmVpbmdcbiAgICAgICAgIHRoYXQgd2hlbiBjb252ZXJ0ZWQgdG8gYSBzdHJpbmcsIHRoZSBzdHJpbmdzICIiRmFsc2UiIiBvclxuICAgICAgICAgIiJUcnVlIiIgYXJlIHJldHVybmVkLCByZXNwZWN0aXZlbHkuXG5cbiAgICAgIFRoZSBydWxlcyBmb3IgaW50ZWdlciByZXByZXNlbnRhdGlvbiBhcmUgaW50ZW5kZWQgdG8gZ2l2ZSB0aGVcbiAgICAgIG1vc3QgbWVhbmluZ2Z1bCBpbnRlcnByZXRhdGlvbiBvZiBzaGlmdCBhbmQgbWFzayBvcGVyYXRpb25zXG4gICAgICBpbnZvbHZpbmcgbmVnYXRpdmUgaW50ZWdlcnMuXG5cbiAgICJudW1iZXJzLlJlYWwiICgiZmxvYXQiKVxuICAgICAgVGhlc2UgcmVwcmVzZW50IG1hY2hpbmUtbGV2ZWwgZG91YmxlIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludFxuICAgICAgbnVtYmVycy4gWW91IGFyZSBhdCB0aGUgbWVyY3kgb2YgdGhlIHVuZGVybHlpbmcgbWFjaGluZVxuICAgICAgYXJjaGl0ZWN0dXJlIChhbmQgQyBvciBKYXZhIGltcGxlbWVudGF0aW9uKSBmb3IgdGhlIGFjY2VwdGVkXG4gICAgICByYW5nZSBhbmQgaGFuZGxpbmcgb2Ygb3ZlcmZsb3cuIFB5dGhvbiBkb2VzIG5vdCBzdXBwb3J0IHNpbmdsZS1cbiAgICAgIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBudW1iZXJzOyB0aGUgc2F2aW5ncyBpbiBwcm9jZXNzb3IgYW5kXG4gICAgICBtZW1vcnkgdXNhZ2UgdGhhdCBhcmUgdXN1YWxseSB0aGUgcmVhc29uIGZvciB1c2luZyB0aGVzZSBhcmVcbiAgICAgIGR3YXJmZWQgYnkgdGhlIG92ZXJoZWFkIG9mIHVzaW5nIG9iamVjdHMgaW4gUHl0aG9uLCBzbyB0aGVyZSBpc1xuICAgICAgbm8gcmVhc29uIHRvIGNvbXBsaWNhdGUgdGhlIGxhbmd1YWdlIHdpdGggdHdvIGtpbmRzIG9mIGZsb2F0aW5nXG4gICAgICBwb2ludCBudW1iZXJzLlxuXG4gICAibnVtYmVycy5Db21wbGV4IiAoImNvbXBsZXgiKVxuICAgICAgVGhlc2UgcmVwcmVzZW50IGNvbXBsZXggbnVtYmVycyBhcyBhIHBhaXIgb2YgbWFjaGluZS1sZXZlbFxuICAgICAgZG91YmxlIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBudW1iZXJzLiAgVGhlIHNhbWUgY2F2ZWF0cyBhcHBseVxuICAgICAgYXMgZm9yIGZsb2F0aW5nIHBvaW50IG51bWJlcnMuIFRoZSByZWFsIGFuZCBpbWFnaW5hcnkgcGFydHMgb2YgYVxuICAgICAgY29tcGxleCBudW1iZXIgInoiIGNhbiBiZSByZXRyaWV2ZWQgdGhyb3VnaCB0aGUgcmVhZC1vbmx5XG4gICAgICBhdHRyaWJ1dGVzICJ6LnJlYWwiIGFuZCAiei5pbWFnIi5cblxuU2VxdWVuY2VzXG4gICBUaGVzZSByZXByZXNlbnQgZmluaXRlIG9yZGVyZWQgc2V0cyBpbmRleGVkIGJ5IG5vbi1uZWdhdGl2ZVxuICAgbnVtYmVycy4gVGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJsZW4oKSIgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGl0ZW1zXG4gICBvZiBhIHNlcXVlbmNlLiBXaGVuIHRoZSBsZW5ndGggb2YgYSBzZXF1ZW5jZSBpcyAqbiosIHRoZSBpbmRleCBzZXRcbiAgIGNvbnRhaW5zIHRoZSBudW1iZXJzIDAsIDEsIC4uLiwgKm4qLTEuICBJdGVtICppKiBvZiBzZXF1ZW5jZSAqYSogaXNcbiAgIHNlbGVjdGVkIGJ5ICJhW2ldIi5cblxuICAgU2VxdWVuY2VzIGFsc28gc3VwcG9ydCBzbGljaW5nOiAiYVtpOmpdIiBzZWxlY3RzIGFsbCBpdGVtcyB3aXRoXG4gICBpbmRleCAqayogc3VjaCB0aGF0ICppKiAiPD0iICprKiAiPCIgKmoqLiAgV2hlbiB1c2VkIGFzIGFuXG4gICBleHByZXNzaW9uLCBhIHNsaWNlIGlzIGEgc2VxdWVuY2Ugb2YgdGhlIHNhbWUgdHlwZS4gIFRoaXMgaW1wbGllc1xuICAgdGhhdCB0aGUgaW5kZXggc2V0IGlzIHJlbnVtYmVyZWQgc28gdGhhdCBpdCBzdGFydHMgYXQgMC5cblxuICAgU29tZSBzZXF1ZW5jZXMgYWxzbyBzdXBwb3J0ICJleHRlbmRlZCBzbGljaW5nIiB3aXRoIGEgdGhpcmQgInN0ZXAiXG4gICBwYXJhbWV0ZXI6ICJhW2k6ajprXSIgc2VsZWN0cyBhbGwgaXRlbXMgb2YgKmEqIHdpdGggaW5kZXggKngqIHdoZXJlXG4gICAieCA9IGkgKyBuKmsiLCAqbiogIj49IiAiMCIgYW5kICppKiAiPD0iICp4KiAiPCIgKmoqLlxuXG4gICBTZXF1ZW5jZXMgYXJlIGRpc3Rpbmd1aXNoZWQgYWNjb3JkaW5nIHRvIHRoZWlyIG11dGFiaWxpdHk6XG5cbiAgIEltbXV0YWJsZSBzZXF1ZW5jZXNcbiAgICAgIEFuIG9iamVjdCBvZiBhbiBpbW11dGFibGUgc2VxdWVuY2UgdHlwZSBjYW5ub3QgY2hhbmdlIG9uY2UgaXQgaXNcbiAgICAgIGNyZWF0ZWQuICAoSWYgdGhlIG9iamVjdCBjb250YWlucyByZWZlcmVuY2VzIHRvIG90aGVyIG9iamVjdHMsXG4gICAgICB0aGVzZSBvdGhlciBvYmplY3RzIG1heSBiZSBtdXRhYmxlIGFuZCBtYXkgYmUgY2hhbmdlZDsgaG93ZXZlcixcbiAgICAgIHRoZSBjb2xsZWN0aW9uIG9mIG9iamVjdHMgZGlyZWN0bHkgcmVmZXJlbmNlZCBieSBhbiBpbW11dGFibGVcbiAgICAgIG9iamVjdCBjYW5ub3QgY2hhbmdlLilcblxuICAgICAgVGhlIGZvbGxvd2luZyB0eXBlcyBhcmUgaW1tdXRhYmxlIHNlcXVlbmNlczpcblxuICAgICAgU3RyaW5nc1xuICAgICAgICAgQSBzdHJpbmcgaXMgYSBzZXF1ZW5jZSBvZiB2YWx1ZXMgdGhhdCByZXByZXNlbnQgVW5pY29kZSBjb2RlXG4gICAgICAgICBwb2ludHMuIEFsbCB0aGUgY29kZSBwb2ludHMgaW4gdGhlIHJhbmdlICJVKzAwMDAgLSBVKzEwRkZGRiJcbiAgICAgICAgIGNhbiBiZSByZXByZXNlbnRlZCBpbiBhIHN0cmluZy4gIFB5dGhvbiBkb2VzblwndCBoYXZlIGEgImNoYXIiXG4gICAgICAgICB0eXBlOyBpbnN0ZWFkLCBldmVyeSBjb2RlIHBvaW50IGluIHRoZSBzdHJpbmcgaXMgcmVwcmVzZW50ZWRcbiAgICAgICAgIGFzIGEgc3RyaW5nIG9iamVjdCB3aXRoIGxlbmd0aCAiMSIuICBUaGUgYnVpbHQtaW4gZnVuY3Rpb25cbiAgICAgICAgICJvcmQoKSIgY29udmVydHMgYSBjb2RlIHBvaW50IGZyb20gaXRzIHN0cmluZyBmb3JtIHRvIGFuXG4gICAgICAgICBpbnRlZ2VyIGluIHRoZSByYW5nZSAiMCAtIDEwRkZGRiI7ICJjaHIoKSIgY29udmVydHMgYW5cbiAgICAgICAgIGludGVnZXIgaW4gdGhlIHJhbmdlICIwIC0gMTBGRkZGIiB0byB0aGUgY29ycmVzcG9uZGluZyBsZW5ndGhcbiAgICAgICAgICIxIiBzdHJpbmcgb2JqZWN0LiAic3RyLmVuY29kZSgpIiBjYW4gYmUgdXNlZCB0byBjb252ZXJ0IGFcbiAgICAgICAgICJzdHIiIHRvICJieXRlcyIgdXNpbmcgdGhlIGdpdmVuIHRleHQgZW5jb2RpbmcsIGFuZFxuICAgICAgICAgImJ5dGVzLmRlY29kZSgpIiBjYW4gYmUgdXNlZCB0byBhY2hpZXZlIHRoZSBvcHBvc2l0ZS5cblxuICAgICAgVHVwbGVzXG4gICAgICAgICBUaGUgaXRlbXMgb2YgYSB0dXBsZSBhcmUgYXJiaXRyYXJ5IFB5dGhvbiBvYmplY3RzLiBUdXBsZXMgb2ZcbiAgICAgICAgIHR3byBvciBtb3JlIGl0ZW1zIGFyZSBmb3JtZWQgYnkgY29tbWEtc2VwYXJhdGVkIGxpc3RzIG9mXG4gICAgICAgICBleHByZXNzaW9ucy4gIEEgdHVwbGUgb2Ygb25lIGl0ZW0gKGEgXCdzaW5nbGV0b25cJykgY2FuIGJlXG4gICAgICAgICBmb3JtZWQgYnkgYWZmaXhpbmcgYSBjb21tYSB0byBhbiBleHByZXNzaW9uIChhbiBleHByZXNzaW9uIGJ5XG4gICAgICAgICBpdHNlbGYgZG9lcyBub3QgY3JlYXRlIGEgdHVwbGUsIHNpbmNlIHBhcmVudGhlc2VzIG11c3QgYmVcbiAgICAgICAgIHVzYWJsZSBmb3IgZ3JvdXBpbmcgb2YgZXhwcmVzc2lvbnMpLiAgQW4gZW1wdHkgdHVwbGUgY2FuIGJlXG4gICAgICAgICBmb3JtZWQgYnkgYW4gZW1wdHkgcGFpciBvZiBwYXJlbnRoZXNlcy5cblxuICAgICAgQnl0ZXNcbiAgICAgICAgIEEgYnl0ZXMgb2JqZWN0IGlzIGFuIGltbXV0YWJsZSBhcnJheS4gIFRoZSBpdGVtcyBhcmUgOC1iaXRcbiAgICAgICAgIGJ5dGVzLCByZXByZXNlbnRlZCBieSBpbnRlZ2VycyBpbiB0aGUgcmFuZ2UgMCA8PSB4IDwgMjU2LlxuICAgICAgICAgQnl0ZXMgbGl0ZXJhbHMgKGxpa2UgImJcJ2FiY1wnIikgYW5kIHRoZSBidWlsdC1pbiBmdW5jdGlvblxuICAgICAgICAgImJ5dGVzKCkiIGNhbiBiZSB1c2VkIHRvIGNvbnN0cnVjdCBieXRlcyBvYmplY3RzLiAgQWxzbyxcbiAgICAgICAgIGJ5dGVzIG9iamVjdHMgY2FuIGJlIGRlY29kZWQgdG8gc3RyaW5ncyB2aWEgdGhlICJkZWNvZGUoKSJcbiAgICAgICAgIG1ldGhvZC5cblxuICAgTXV0YWJsZSBzZXF1ZW5jZXNcbiAgICAgIE11dGFibGUgc2VxdWVuY2VzIGNhbiBiZSBjaGFuZ2VkIGFmdGVyIHRoZXkgYXJlIGNyZWF0ZWQuICBUaGVcbiAgICAgIHN1YnNjcmlwdGlvbiBhbmQgc2xpY2luZyBub3RhdGlvbnMgY2FuIGJlIHVzZWQgYXMgdGhlIHRhcmdldCBvZlxuICAgICAgYXNzaWdubWVudCBhbmQgImRlbCIgKGRlbGV0ZSkgc3RhdGVtZW50cy5cblxuICAgICAgVGhlcmUgYXJlIGN1cnJlbnRseSB0d28gaW50cmluc2ljIG11dGFibGUgc2VxdWVuY2UgdHlwZXM6XG5cbiAgICAgIExpc3RzXG4gICAgICAgICBUaGUgaXRlbXMgb2YgYSBsaXN0IGFyZSBhcmJpdHJhcnkgUHl0aG9uIG9iamVjdHMuICBMaXN0cyBhcmVcbiAgICAgICAgIGZvcm1lZCBieSBwbGFjaW5nIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgZXhwcmVzc2lvbnMgaW5cbiAgICAgICAgIHNxdWFyZSBicmFja2V0cy4gKE5vdGUgdGhhdCB0aGVyZSBhcmUgbm8gc3BlY2lhbCBjYXNlcyBuZWVkZWRcbiAgICAgICAgIHRvIGZvcm0gbGlzdHMgb2YgbGVuZ3RoIDAgb3IgMS4pXG5cbiAgICAgIEJ5dGUgQXJyYXlzXG4gICAgICAgICBBIGJ5dGVhcnJheSBvYmplY3QgaXMgYSBtdXRhYmxlIGFycmF5LiBUaGV5IGFyZSBjcmVhdGVkIGJ5XG4gICAgICAgICB0aGUgYnVpbHQtaW4gImJ5dGVhcnJheSgpIiBjb25zdHJ1Y3Rvci4gIEFzaWRlIGZyb20gYmVpbmdcbiAgICAgICAgIG11dGFibGUgKGFuZCBoZW5jZSB1bmhhc2hhYmxlKSwgYnl0ZSBhcnJheXMgb3RoZXJ3aXNlIHByb3ZpZGVcbiAgICAgICAgIHRoZSBzYW1lIGludGVyZmFjZSBhbmQgZnVuY3Rpb25hbGl0eSBhcyBpbW11dGFibGUgYnl0ZXNcbiAgICAgICAgIG9iamVjdHMuXG5cbiAgICAgIFRoZSBleHRlbnNpb24gbW9kdWxlICJhcnJheSIgcHJvdmlkZXMgYW4gYWRkaXRpb25hbCBleGFtcGxlIG9mIGFcbiAgICAgIG11dGFibGUgc2VxdWVuY2UgdHlwZSwgYXMgZG9lcyB0aGUgImNvbGxlY3Rpb25zIiBtb2R1bGUuXG5cblNldCB0eXBlc1xuICAgVGhlc2UgcmVwcmVzZW50IHVub3JkZXJlZCwgZmluaXRlIHNldHMgb2YgdW5pcXVlLCBpbW11dGFibGVcbiAgIG9iamVjdHMuIEFzIHN1Y2gsIHRoZXkgY2Fubm90IGJlIGluZGV4ZWQgYnkgYW55IHN1YnNjcmlwdC4gSG93ZXZlcixcbiAgIHRoZXkgY2FuIGJlIGl0ZXJhdGVkIG92ZXIsIGFuZCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gImxlbigpIlxuICAgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIGEgc2V0LiBDb21tb24gdXNlcyBmb3Igc2V0cyBhcmUgZmFzdFxuICAgbWVtYmVyc2hpcCB0ZXN0aW5nLCByZW1vdmluZyBkdXBsaWNhdGVzIGZyb20gYSBzZXF1ZW5jZSwgYW5kXG4gICBjb21wdXRpbmcgbWF0aGVtYXRpY2FsIG9wZXJhdGlvbnMgc3VjaCBhcyBpbnRlcnNlY3Rpb24sIHVuaW9uLFxuICAgZGlmZmVyZW5jZSwgYW5kIHN5bW1ldHJpYyBkaWZmZXJlbmNlLlxuXG4gICBGb3Igc2V0IGVsZW1lbnRzLCB0aGUgc2FtZSBpbW11dGFiaWxpdHkgcnVsZXMgYXBwbHkgYXMgZm9yXG4gICBkaWN0aW9uYXJ5IGtleXMuIE5vdGUgdGhhdCBudW1lcmljIHR5cGVzIG9iZXkgdGhlIG5vcm1hbCBydWxlcyBmb3JcbiAgIG51bWVyaWMgY29tcGFyaXNvbjogaWYgdHdvIG51bWJlcnMgY29tcGFyZSBlcXVhbCAoZS5nLiwgIjEiIGFuZFxuICAgIjEuMCIpLCBvbmx5IG9uZSBvZiB0aGVtIGNhbiBiZSBjb250YWluZWQgaW4gYSBzZXQuXG5cbiAgIFRoZXJlIGFyZSBjdXJyZW50bHkgdHdvIGludHJpbnNpYyBzZXQgdHlwZXM6XG5cbiAgIFNldHNcbiAgICAgIFRoZXNlIHJlcHJlc2VudCBhIG11dGFibGUgc2V0LiBUaGV5IGFyZSBjcmVhdGVkIGJ5IHRoZSBidWlsdC1pblxuICAgICAgInNldCgpIiBjb25zdHJ1Y3RvciBhbmQgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgYnkgc2V2ZXJhbFxuICAgICAgbWV0aG9kcywgc3VjaCBhcyAiYWRkKCkiLlxuXG4gICBGcm96ZW4gc2V0c1xuICAgICAgVGhlc2UgcmVwcmVzZW50IGFuIGltbXV0YWJsZSBzZXQuICBUaGV5IGFyZSBjcmVhdGVkIGJ5IHRoZVxuICAgICAgYnVpbHQtaW4gImZyb3plbnNldCgpIiBjb25zdHJ1Y3Rvci4gIEFzIGEgZnJvemVuc2V0IGlzIGltbXV0YWJsZVxuICAgICAgYW5kICpoYXNoYWJsZSosIGl0IGNhbiBiZSB1c2VkIGFnYWluIGFzIGFuIGVsZW1lbnQgb2YgYW5vdGhlclxuICAgICAgc2V0LCBvciBhcyBhIGRpY3Rpb25hcnkga2V5LlxuXG5NYXBwaW5nc1xuICAgVGhlc2UgcmVwcmVzZW50IGZpbml0ZSBzZXRzIG9mIG9iamVjdHMgaW5kZXhlZCBieSBhcmJpdHJhcnkgaW5kZXhcbiAgIHNldHMuIFRoZSBzdWJzY3JpcHQgbm90YXRpb24gImFba10iIHNlbGVjdHMgdGhlIGl0ZW0gaW5kZXhlZCBieSAiayJcbiAgIGZyb20gdGhlIG1hcHBpbmcgImEiOyB0aGlzIGNhbiBiZSB1c2VkIGluIGV4cHJlc3Npb25zIGFuZCBhcyB0aGVcbiAgIHRhcmdldCBvZiBhc3NpZ25tZW50cyBvciAiZGVsIiBzdGF0ZW1lbnRzLiBUaGUgYnVpbHQtaW4gZnVuY3Rpb25cbiAgICJsZW4oKSIgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIGEgbWFwcGluZy5cblxuICAgVGhlcmUgaXMgY3VycmVudGx5IGEgc2luZ2xlIGludHJpbnNpYyBtYXBwaW5nIHR5cGU6XG5cbiAgIERpY3Rpb25hcmllc1xuICAgICAgVGhlc2UgcmVwcmVzZW50IGZpbml0ZSBzZXRzIG9mIG9iamVjdHMgaW5kZXhlZCBieSBuZWFybHlcbiAgICAgIGFyYml0cmFyeSB2YWx1ZXMuICBUaGUgb25seSB0eXBlcyBvZiB2YWx1ZXMgbm90IGFjY2VwdGFibGUgYXNcbiAgICAgIGtleXMgYXJlIHZhbHVlcyBjb250YWluaW5nIGxpc3RzIG9yIGRpY3Rpb25hcmllcyBvciBvdGhlclxuICAgICAgbXV0YWJsZSB0eXBlcyB0aGF0IGFyZSBjb21wYXJlZCBieSB2YWx1ZSByYXRoZXIgdGhhbiBieSBvYmplY3RcbiAgICAgIGlkZW50aXR5LCB0aGUgcmVhc29uIGJlaW5nIHRoYXQgdGhlIGVmZmljaWVudCBpbXBsZW1lbnRhdGlvbiBvZlxuICAgICAgZGljdGlvbmFyaWVzIHJlcXVpcmVzIGEga2V5XCdzIGhhc2ggdmFsdWUgdG8gcmVtYWluIGNvbnN0YW50LlxuICAgICAgTnVtZXJpYyB0eXBlcyB1c2VkIGZvciBrZXlzIG9iZXkgdGhlIG5vcm1hbCBydWxlcyBmb3IgbnVtZXJpY1xuICAgICAgY29tcGFyaXNvbjogaWYgdHdvIG51bWJlcnMgY29tcGFyZSBlcXVhbCAoZS5nLiwgIjEiIGFuZCAiMS4wIilcbiAgICAgIHRoZW4gdGhleSBjYW4gYmUgdXNlZCBpbnRlcmNoYW5nZWFibHkgdG8gaW5kZXggdGhlIHNhbWVcbiAgICAgIGRpY3Rpb25hcnkgZW50cnkuXG5cbiAgICAgIERpY3Rpb25hcmllcyBhcmUgbXV0YWJsZTsgdGhleSBjYW4gYmUgY3JlYXRlZCBieSB0aGUgInsuLi59IlxuICAgICAgbm90YXRpb24gKHNlZSBzZWN0aW9uICpEaWN0aW9uYXJ5IGRpc3BsYXlzKikuXG5cbiAgICAgIFRoZSBleHRlbnNpb24gbW9kdWxlcyAiZGJtLm5kYm0iIGFuZCAiZGJtLmdudSIgcHJvdmlkZVxuICAgICAgYWRkaXRpb25hbCBleGFtcGxlcyBvZiBtYXBwaW5nIHR5cGVzLCBhcyBkb2VzIHRoZSAiY29sbGVjdGlvbnMiXG4gICAgICBtb2R1bGUuXG5cbkNhbGxhYmxlIHR5cGVzXG4gICBUaGVzZSBhcmUgdGhlIHR5cGVzIHRvIHdoaWNoIHRoZSBmdW5jdGlvbiBjYWxsIG9wZXJhdGlvbiAoc2VlXG4gICBzZWN0aW9uICpDYWxscyopIGNhbiBiZSBhcHBsaWVkOlxuXG4gICBVc2VyLWRlZmluZWQgZnVuY3Rpb25zXG4gICAgICBBIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBvYmplY3QgaXMgY3JlYXRlZCBieSBhIGZ1bmN0aW9uXG4gICAgICBkZWZpbml0aW9uIChzZWUgc2VjdGlvbiAqRnVuY3Rpb24gZGVmaW5pdGlvbnMqKS4gIEl0IHNob3VsZCBiZVxuICAgICAgY2FsbGVkIHdpdGggYW4gYXJndW1lbnQgbGlzdCBjb250YWluaW5nIHRoZSBzYW1lIG51bWJlciBvZiBpdGVtc1xuICAgICAgYXMgdGhlIGZ1bmN0aW9uXCdzIGZvcm1hbCBwYXJhbWV0ZXIgbGlzdC5cblxuICAgICAgU3BlY2lhbCBhdHRyaWJ1dGVzOlxuXG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCBBdHRyaWJ1dGUgICAgICAgICAgICAgICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICs9PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT0rXG4gICAgICB8ICJfX2RvY19fIiAgICAgICAgICAgICAgICAgfCBUaGUgZnVuY3Rpb25cJ3MgZG9jdW1lbnRhdGlvbiAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZywgb3IgIk5vbmUiIGlmICAgICAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB1bmF2YWlsYWJsZTsgbm90IGluaGVyaXRlZCBieSAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3ViY2xhc3NlcyAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8ICJfX25hbWVfXyIgICAgICAgICAgICAgICAgfCBUaGUgZnVuY3Rpb25cJ3MgbmFtZSAgICAgICAgICAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8ICJfX3F1YWxuYW1lX18iICAgICAgICAgICAgfCBUaGUgZnVuY3Rpb25cJ3MgKnF1YWxpZmllZCBuYW1lKiB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldyBpbiB2ZXJzaW9uIDMuMy4gICAgICAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCAiX19tb2R1bGVfXyIgICAgICAgICAgICAgIHwgVGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgICAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZ1bmN0aW9uIHdhcyBkZWZpbmVkIGluLCBvciAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAiTm9uZSIgaWYgdW5hdmFpbGFibGUuICAgICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgIl9fZGVmYXVsdHNfXyIgICAgICAgICAgICB8IEEgdHVwbGUgY29udGFpbmluZyBkZWZhdWx0ICAgICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcmd1bWVudCB2YWx1ZXMgZm9yIHRob3NlICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXJndW1lbnRzIHRoYXQgaGF2ZSBkZWZhdWx0cywgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG9yICJOb25lIiBpZiBubyBhcmd1bWVudHMgaGF2ZSAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhIGRlZmF1bHQgdmFsdWUgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgIl9fY29kZV9fIiAgICAgICAgICAgICAgICB8IFRoZSBjb2RlIG9iamVjdCByZXByZXNlbnRpbmcgICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aGUgY29tcGlsZWQgZnVuY3Rpb24gYm9keS4gICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgIl9fZ2xvYmFsc19fIiAgICAgICAgICAgICB8IEEgcmVmZXJlbmNlIHRvIHRoZSBkaWN0aW9uYXJ5ICAgfCBSZWFkLW9ubHkgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aGF0IGhvbGRzIHRoZSBmdW5jdGlvblwncyAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGdsb2JhbCB2YXJpYWJsZXMgLS0tIHRoZSBnbG9iYWwgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBuYW1lc3BhY2Ugb2YgdGhlIG1vZHVsZSBpbiAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgd2hpY2ggdGhlIGZ1bmN0aW9uIHdhcyBkZWZpbmVkLiB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8ICJfX2RpY3RfXyIgICAgICAgICAgICAgICAgfCBUaGUgbmFtZXNwYWNlIHN1cHBvcnRpbmcgICAgICAgIHwgV3JpdGFibGUgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXJiaXRyYXJ5IGZ1bmN0aW9uIGF0dHJpYnV0ZXMuICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8ICJfX2Nsb3N1cmVfXyIgICAgICAgICAgICAgfCAiTm9uZSIgb3IgYSB0dXBsZSBvZiBjZWxscyB0aGF0IHwgUmVhZC1vbmx5ICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY29udGFpbiBiaW5kaW5ncyBmb3IgdGhlICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZ1bmN0aW9uXCdzIGZyZWUgdmFyaWFibGVzLiAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgIl9fYW5ub3RhdGlvbnNfXyIgICAgICAgICB8IEEgZGljdCBjb250YWluaW5nIGFubm90YXRpb25zICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZiBwYXJhbWV0ZXJzLiAgVGhlIGtleXMgb2YgdGhlIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZGljdCBhcmUgdGhlIHBhcmFtZXRlciBuYW1lcywgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFuZCAiXCdyZXR1cm5cJyIgZm9yIHRoZSByZXR1cm4gICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFubm90YXRpb24sIGlmIHByb3ZpZGVkLiAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCAiX19rd2RlZmF1bHRzX18iICAgICAgICAgIHwgQSBkaWN0IGNvbnRhaW5pbmcgZGVmYXVsdHMgZm9yICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGtleXdvcmQtb25seSBwYXJhbWV0ZXJzLiAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuXG4gICAgICBNb3N0IG9mIHRoZSBhdHRyaWJ1dGVzIGxhYmVsbGVkICJXcml0YWJsZSIgY2hlY2sgdGhlIHR5cGUgb2YgdGhlXG4gICAgICBhc3NpZ25lZCB2YWx1ZS5cblxuICAgICAgRnVuY3Rpb24gb2JqZWN0cyBhbHNvIHN1cHBvcnQgZ2V0dGluZyBhbmQgc2V0dGluZyBhcmJpdHJhcnlcbiAgICAgIGF0dHJpYnV0ZXMsIHdoaWNoIGNhbiBiZSB1c2VkLCBmb3IgZXhhbXBsZSwgdG8gYXR0YWNoIG1ldGFkYXRhXG4gICAgICB0byBmdW5jdGlvbnMuICBSZWd1bGFyIGF0dHJpYnV0ZSBkb3Qtbm90YXRpb24gaXMgdXNlZCB0byBnZXQgYW5kXG4gICAgICBzZXQgc3VjaCBhdHRyaWJ1dGVzLiAqTm90ZSB0aGF0IHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9ubHlcbiAgICAgIHN1cHBvcnRzIGZ1bmN0aW9uIGF0dHJpYnV0ZXMgb24gdXNlci1kZWZpbmVkIGZ1bmN0aW9ucy4gRnVuY3Rpb25cbiAgICAgIGF0dHJpYnV0ZXMgb24gYnVpbHQtaW4gZnVuY3Rpb25zIG1heSBiZSBzdXBwb3J0ZWQgaW4gdGhlXG4gICAgICBmdXR1cmUuKlxuXG4gICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IGEgZnVuY3Rpb25cJ3MgZGVmaW5pdGlvbiBjYW4gYmVcbiAgICAgIHJldHJpZXZlZCBmcm9tIGl0cyBjb2RlIG9iamVjdDsgc2VlIHRoZSBkZXNjcmlwdGlvbiBvZiBpbnRlcm5hbFxuICAgICAgdHlwZXMgYmVsb3cuXG5cbiAgIEluc3RhbmNlIG1ldGhvZHNcbiAgICAgIEFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgY29tYmluZXMgYSBjbGFzcywgYSBjbGFzcyBpbnN0YW5jZSBhbmRcbiAgICAgIGFueSBjYWxsYWJsZSBvYmplY3QgKG5vcm1hbGx5IGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uKS5cblxuICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogIl9fc2VsZl9fIiBpcyB0aGUgY2xhc3MgaW5zdGFuY2VcbiAgICAgIG9iamVjdCwgIl9fZnVuY19fIiBpcyB0aGUgZnVuY3Rpb24gb2JqZWN0OyAiX19kb2NfXyIgaXMgdGhlXG4gICAgICBtZXRob2RcJ3MgZG9jdW1lbnRhdGlvbiAoc2FtZSBhcyAiX19mdW5jX18uX19kb2NfXyIpOyAiX19uYW1lX18iXG4gICAgICBpcyB0aGUgbWV0aG9kIG5hbWUgKHNhbWUgYXMgIl9fZnVuY19fLl9fbmFtZV9fIik7ICJfX21vZHVsZV9fIlxuICAgICAgaXMgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgbWV0aG9kIHdhcyBkZWZpbmVkIGluLCBvciAiTm9uZSJcbiAgICAgIGlmIHVuYXZhaWxhYmxlLlxuXG4gICAgICBNZXRob2RzIGFsc28gc3VwcG9ydCBhY2Nlc3NpbmcgKGJ1dCBub3Qgc2V0dGluZykgdGhlIGFyYml0cmFyeVxuICAgICAgZnVuY3Rpb24gYXR0cmlidXRlcyBvbiB0aGUgdW5kZXJseWluZyBmdW5jdGlvbiBvYmplY3QuXG5cbiAgICAgIFVzZXItZGVmaW5lZCBtZXRob2Qgb2JqZWN0cyBtYXkgYmUgY3JlYXRlZCB3aGVuIGdldHRpbmcgYW5cbiAgICAgIGF0dHJpYnV0ZSBvZiBhIGNsYXNzIChwZXJoYXBzIHZpYSBhbiBpbnN0YW5jZSBvZiB0aGF0IGNsYXNzKSwgaWZcbiAgICAgIHRoYXQgYXR0cmlidXRlIGlzIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCBvciBhIGNsYXNzXG4gICAgICBtZXRob2Qgb2JqZWN0LlxuXG4gICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgY3JlYXRlZCBieSByZXRyaWV2aW5nIGEgdXNlci1cbiAgICAgIGRlZmluZWQgZnVuY3Rpb24gb2JqZWN0IGZyb20gYSBjbGFzcyB2aWEgb25lIG9mIGl0cyBpbnN0YW5jZXMsXG4gICAgICBpdHMgIl9fc2VsZl9fIiBhdHRyaWJ1dGUgaXMgdGhlIGluc3RhbmNlLCBhbmQgdGhlIG1ldGhvZCBvYmplY3RcbiAgICAgIGlzIHNhaWQgdG8gYmUgYm91bmQuICBUaGUgbmV3IG1ldGhvZFwncyAiX19mdW5jX18iIGF0dHJpYnV0ZSBpc1xuICAgICAgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uIG9iamVjdC5cblxuICAgICAgV2hlbiBhIHVzZXItZGVmaW5lZCBtZXRob2Qgb2JqZWN0IGlzIGNyZWF0ZWQgYnkgcmV0cmlldmluZ1xuICAgICAgYW5vdGhlciBtZXRob2Qgb2JqZWN0IGZyb20gYSBjbGFzcyBvciBpbnN0YW5jZSwgdGhlIGJlaGF2aW91ciBpc1xuICAgICAgdGhlIHNhbWUgYXMgZm9yIGEgZnVuY3Rpb24gb2JqZWN0LCBleGNlcHQgdGhhdCB0aGUgIl9fZnVuY19fIlxuICAgICAgYXR0cmlidXRlIG9mIHRoZSBuZXcgaW5zdGFuY2UgaXMgbm90IHRoZSBvcmlnaW5hbCBtZXRob2Qgb2JqZWN0XG4gICAgICBidXQgaXRzICJfX2Z1bmNfXyIgYXR0cmlidXRlLlxuXG4gICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgY3JlYXRlZCBieSByZXRyaWV2aW5nIGEgY2xhc3NcbiAgICAgIG1ldGhvZCBvYmplY3QgZnJvbSBhIGNsYXNzIG9yIGluc3RhbmNlLCBpdHMgIl9fc2VsZl9fIiBhdHRyaWJ1dGVcbiAgICAgIGlzIHRoZSBjbGFzcyBpdHNlbGYsIGFuZCBpdHMgIl9fZnVuY19fIiBhdHRyaWJ1dGUgaXMgdGhlXG4gICAgICBmdW5jdGlvbiBvYmplY3QgdW5kZXJseWluZyB0aGUgY2xhc3MgbWV0aG9kLlxuXG4gICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgY2FsbGVkLCB0aGUgdW5kZXJseWluZ1xuICAgICAgZnVuY3Rpb24gKCJfX2Z1bmNfXyIpIGlzIGNhbGxlZCwgaW5zZXJ0aW5nIHRoZSBjbGFzcyBpbnN0YW5jZVxuICAgICAgKCJfX3NlbGZfXyIpIGluIGZyb250IG9mIHRoZSBhcmd1bWVudCBsaXN0LiAgRm9yIGluc3RhbmNlLCB3aGVuXG4gICAgICAiQyIgaXMgYSBjbGFzcyB3aGljaCBjb250YWlucyBhIGRlZmluaXRpb24gZm9yIGEgZnVuY3Rpb24gImYoKSIsXG4gICAgICBhbmQgIngiIGlzIGFuIGluc3RhbmNlIG9mICJDIiwgY2FsbGluZyAieC5mKDEpIiBpcyBlcXVpdmFsZW50IHRvXG4gICAgICBjYWxsaW5nICJDLmYoeCwgMSkiLlxuXG4gICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgZGVyaXZlZCBmcm9tIGEgY2xhc3MgbWV0aG9kXG4gICAgICBvYmplY3QsIHRoZSAiY2xhc3MgaW5zdGFuY2UiIHN0b3JlZCBpbiAiX19zZWxmX18iIHdpbGwgYWN0dWFsbHlcbiAgICAgIGJlIHRoZSBjbGFzcyBpdHNlbGYsIHNvIHRoYXQgY2FsbGluZyBlaXRoZXIgInguZigxKSIgb3IgIkMuZigxKSJcbiAgICAgIGlzIGVxdWl2YWxlbnQgdG8gY2FsbGluZyAiZihDLDEpIiB3aGVyZSAiZiIgaXMgdGhlIHVuZGVybHlpbmdcbiAgICAgIGZ1bmN0aW9uLlxuXG4gICAgICBOb3RlIHRoYXQgdGhlIHRyYW5zZm9ybWF0aW9uIGZyb20gZnVuY3Rpb24gb2JqZWN0IHRvIGluc3RhbmNlXG4gICAgICBtZXRob2Qgb2JqZWN0IGhhcHBlbnMgZWFjaCB0aW1lIHRoZSBhdHRyaWJ1dGUgaXMgcmV0cmlldmVkIGZyb21cbiAgICAgIHRoZSBpbnN0YW5jZS4gIEluIHNvbWUgY2FzZXMsIGEgZnJ1aXRmdWwgb3B0aW1pemF0aW9uIGlzIHRvXG4gICAgICBhc3NpZ24gdGhlIGF0dHJpYnV0ZSB0byBhIGxvY2FsIHZhcmlhYmxlIGFuZCBjYWxsIHRoYXQgbG9jYWxcbiAgICAgIHZhcmlhYmxlLiBBbHNvIG5vdGljZSB0aGF0IHRoaXMgdHJhbnNmb3JtYXRpb24gb25seSBoYXBwZW5zIGZvclxuICAgICAgdXNlci1kZWZpbmVkIGZ1bmN0aW9uczsgb3RoZXIgY2FsbGFibGUgb2JqZWN0cyAoYW5kIGFsbCBub24tXG4gICAgICBjYWxsYWJsZSBvYmplY3RzKSBhcmUgcmV0cmlldmVkIHdpdGhvdXQgdHJhbnNmb3JtYXRpb24uICBJdCBpc1xuICAgICAgYWxzbyBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0IHVzZXItZGVmaW5lZCBmdW5jdGlvbnMgd2hpY2ggYXJlXG4gICAgICBhdHRyaWJ1dGVzIG9mIGEgY2xhc3MgaW5zdGFuY2UgYXJlIG5vdCBjb252ZXJ0ZWQgdG8gYm91bmRcbiAgICAgIG1ldGhvZHM7IHRoaXMgKm9ubHkqIGhhcHBlbnMgd2hlbiB0aGUgZnVuY3Rpb24gaXMgYW4gYXR0cmlidXRlXG4gICAgICBvZiB0aGUgY2xhc3MuXG5cbiAgIEdlbmVyYXRvciBmdW5jdGlvbnNcbiAgICAgIEEgZnVuY3Rpb24gb3IgbWV0aG9kIHdoaWNoIHVzZXMgdGhlICJ5aWVsZCIgc3RhdGVtZW50IChzZWVcbiAgICAgIHNlY3Rpb24gKlRoZSB5aWVsZCBzdGF0ZW1lbnQqKSBpcyBjYWxsZWQgYSAqZ2VuZXJhdG9yIGZ1bmN0aW9uKi5cbiAgICAgIFN1Y2ggYSBmdW5jdGlvbiwgd2hlbiBjYWxsZWQsIGFsd2F5cyByZXR1cm5zIGFuIGl0ZXJhdG9yIG9iamVjdFxuICAgICAgd2hpY2ggY2FuIGJlIHVzZWQgdG8gZXhlY3V0ZSB0aGUgYm9keSBvZiB0aGUgZnVuY3Rpb246ICBjYWxsaW5nXG4gICAgICB0aGUgaXRlcmF0b3JcJ3MgIml0ZXJhdG9yLl9fbmV4dF9fKCkiIG1ldGhvZCB3aWxsIGNhdXNlIHRoZVxuICAgICAgZnVuY3Rpb24gdG8gZXhlY3V0ZSB1bnRpbCBpdCBwcm92aWRlcyBhIHZhbHVlIHVzaW5nIHRoZSAieWllbGQiXG4gICAgICBzdGF0ZW1lbnQuICBXaGVuIHRoZSBmdW5jdGlvbiBleGVjdXRlcyBhICJyZXR1cm4iIHN0YXRlbWVudCBvclxuICAgICAgZmFsbHMgb2ZmIHRoZSBlbmQsIGEgIlN0b3BJdGVyYXRpb24iIGV4Y2VwdGlvbiBpcyByYWlzZWQgYW5kIHRoZVxuICAgICAgaXRlcmF0b3Igd2lsbCBoYXZlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgc2V0IG9mIHZhbHVlcyB0byBiZVxuICAgICAgcmV0dXJuZWQuXG5cbiAgIENvcm91dGluZSBmdW5jdGlvbnNcbiAgICAgIEEgZnVuY3Rpb24gb3IgbWV0aG9kIHdoaWNoIGlzIGRlZmluZWQgdXNpbmcgImFzeW5jIGRlZiIgaXNcbiAgICAgIGNhbGxlZCBhICpjb3JvdXRpbmUgZnVuY3Rpb24qLiAgU3VjaCBhIGZ1bmN0aW9uLCB3aGVuIGNhbGxlZCxcbiAgICAgIHJldHVybnMgYSAqY29yb3V0aW5lKiBvYmplY3QuICBJdCBtYXkgY29udGFpbiAiYXdhaXQiXG4gICAgICBleHByZXNzaW9ucywgYXMgd2VsbCBhcyAiYXN5bmMgd2l0aCIgYW5kICJhc3luYyBmb3IiIHN0YXRlbWVudHMuXG4gICAgICBTZWUgYWxzbyB0aGUgKkNvcm91dGluZSBPYmplY3RzKiBzZWN0aW9uLlxuXG4gICBCdWlsdC1pbiBmdW5jdGlvbnNcbiAgICAgIEEgYnVpbHQtaW4gZnVuY3Rpb24gb2JqZWN0IGlzIGEgd3JhcHBlciBhcm91bmQgYSBDIGZ1bmN0aW9uLlxuICAgICAgRXhhbXBsZXMgb2YgYnVpbHQtaW4gZnVuY3Rpb25zIGFyZSAibGVuKCkiIGFuZCAibWF0aC5zaW4oKSJcbiAgICAgICgibWF0aCIgaXMgYSBzdGFuZGFyZCBidWlsdC1pbiBtb2R1bGUpLiBUaGUgbnVtYmVyIGFuZCB0eXBlIG9mXG4gICAgICB0aGUgYXJndW1lbnRzIGFyZSBkZXRlcm1pbmVkIGJ5IHRoZSBDIGZ1bmN0aW9uLiBTcGVjaWFsIHJlYWQtXG4gICAgICBvbmx5IGF0dHJpYnV0ZXM6ICJfX2RvY19fIiBpcyB0aGUgZnVuY3Rpb25cJ3MgZG9jdW1lbnRhdGlvblxuICAgICAgc3RyaW5nLCBvciAiTm9uZSIgaWYgdW5hdmFpbGFibGU7ICJfX25hbWVfXyIgaXMgdGhlIGZ1bmN0aW9uXCdzXG4gICAgICBuYW1lOyAiX19zZWxmX18iIGlzIHNldCB0byAiTm9uZSIgKGJ1dCBzZWUgdGhlIG5leHQgaXRlbSk7XG4gICAgICAiX19tb2R1bGVfXyIgaXMgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgZnVuY3Rpb24gd2FzIGRlZmluZWRcbiAgICAgIGluIG9yICJOb25lIiBpZiB1bmF2YWlsYWJsZS5cblxuICAgQnVpbHQtaW4gbWV0aG9kc1xuICAgICAgVGhpcyBpcyByZWFsbHkgYSBkaWZmZXJlbnQgZGlzZ3Vpc2Ugb2YgYSBidWlsdC1pbiBmdW5jdGlvbiwgdGhpc1xuICAgICAgdGltZSBjb250YWluaW5nIGFuIG9iamVjdCBwYXNzZWQgdG8gdGhlIEMgZnVuY3Rpb24gYXMgYW5cbiAgICAgIGltcGxpY2l0IGV4dHJhIGFyZ3VtZW50LiAgQW4gZXhhbXBsZSBvZiBhIGJ1aWx0LWluIG1ldGhvZCBpc1xuICAgICAgImFsaXN0LmFwcGVuZCgpIiwgYXNzdW1pbmcgKmFsaXN0KiBpcyBhIGxpc3Qgb2JqZWN0LiBJbiB0aGlzXG4gICAgICBjYXNlLCB0aGUgc3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlICJfX3NlbGZfXyIgaXMgc2V0IHRvIHRoZVxuICAgICAgb2JqZWN0IGRlbm90ZWQgYnkgKmFsaXN0Ki5cblxuICAgQ2xhc3Nlc1xuICAgICAgQ2xhc3NlcyBhcmUgY2FsbGFibGUuICBUaGVzZSBvYmplY3RzIG5vcm1hbGx5IGFjdCBhcyBmYWN0b3JpZXNcbiAgICAgIGZvciBuZXcgaW5zdGFuY2VzIG9mIHRoZW1zZWx2ZXMsIGJ1dCB2YXJpYXRpb25zIGFyZSBwb3NzaWJsZSBmb3JcbiAgICAgIGNsYXNzIHR5cGVzIHRoYXQgb3ZlcnJpZGUgIl9fbmV3X18oKSIuICBUaGUgYXJndW1lbnRzIG9mIHRoZVxuICAgICAgY2FsbCBhcmUgcGFzc2VkIHRvICJfX25ld19fKCkiIGFuZCwgaW4gdGhlIHR5cGljYWwgY2FzZSwgdG9cbiAgICAgICJfX2luaXRfXygpIiB0byBpbml0aWFsaXplIHRoZSBuZXcgaW5zdGFuY2UuXG5cbiAgIENsYXNzIEluc3RhbmNlc1xuICAgICAgSW5zdGFuY2VzIG9mIGFyYml0cmFyeSBjbGFzc2VzIGNhbiBiZSBtYWRlIGNhbGxhYmxlIGJ5IGRlZmluaW5nXG4gICAgICBhICJfX2NhbGxfXygpIiBtZXRob2QgaW4gdGhlaXIgY2xhc3MuXG5cbk1vZHVsZXNcbiAgIE1vZHVsZXMgYXJlIGEgYmFzaWMgb3JnYW5pemF0aW9uYWwgdW5pdCBvZiBQeXRob24gY29kZSwgYW5kIGFyZVxuICAgY3JlYXRlZCBieSB0aGUgKmltcG9ydCBzeXN0ZW0qIGFzIGludm9rZWQgZWl0aGVyIGJ5IHRoZSAiaW1wb3J0IlxuICAgc3RhdGVtZW50IChzZWUgImltcG9ydCIpLCBvciBieSBjYWxsaW5nIGZ1bmN0aW9ucyBzdWNoIGFzXG4gICAiaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoKSIgYW5kIGJ1aWx0LWluICJfX2ltcG9ydF9fKCkiLiAgQSBtb2R1bGVcbiAgIG9iamVjdCBoYXMgYSBuYW1lc3BhY2UgaW1wbGVtZW50ZWQgYnkgYSBkaWN0aW9uYXJ5IG9iamVjdCAodGhpcyBpc1xuICAgdGhlIGRpY3Rpb25hcnkgcmVmZXJlbmNlZCBieSB0aGUgIl9fZ2xvYmFsc19fIiBhdHRyaWJ1dGUgb2ZcbiAgIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHRoZSBtb2R1bGUpLiAgQXR0cmlidXRlIHJlZmVyZW5jZXMgYXJlXG4gICB0cmFuc2xhdGVkIHRvIGxvb2t1cHMgaW4gdGhpcyBkaWN0aW9uYXJ5LCBlLmcuLCAibS54IiBpcyBlcXVpdmFsZW50XG4gICB0byAibS5fX2RpY3RfX1sieCJdIi4gQSBtb2R1bGUgb2JqZWN0IGRvZXMgbm90IGNvbnRhaW4gdGhlIGNvZGVcbiAgIG9iamVjdCB1c2VkIHRvIGluaXRpYWxpemUgdGhlIG1vZHVsZSAoc2luY2UgaXQgaXNuXCd0IG5lZWRlZCBvbmNlXG4gICB0aGUgaW5pdGlhbGl6YXRpb24gaXMgZG9uZSkuXG5cbiAgIEF0dHJpYnV0ZSBhc3NpZ25tZW50IHVwZGF0ZXMgdGhlIG1vZHVsZVwncyBuYW1lc3BhY2UgZGljdGlvbmFyeSxcbiAgIGUuZy4sICJtLnggPSAxIiBpcyBlcXVpdmFsZW50IHRvICJtLl9fZGljdF9fWyJ4Il0gPSAxIi5cblxuICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlOiAiX19kaWN0X18iIGlzIHRoZSBtb2R1bGVcJ3MgbmFtZXNwYWNlXG4gICBhcyBhIGRpY3Rpb25hcnkgb2JqZWN0LlxuXG4gICAqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIEJlY2F1c2Ugb2YgdGhlIHdheSBDUHl0aG9uXG4gICBjbGVhcnMgbW9kdWxlIGRpY3Rpb25hcmllcywgdGhlIG1vZHVsZSBkaWN0aW9uYXJ5IHdpbGwgYmUgY2xlYXJlZFxuICAgd2hlbiB0aGUgbW9kdWxlIGZhbGxzIG91dCBvZiBzY29wZSBldmVuIGlmIHRoZSBkaWN0aW9uYXJ5IHN0aWxsIGhhc1xuICAgbGl2ZSByZWZlcmVuY2VzLiAgVG8gYXZvaWQgdGhpcywgY29weSB0aGUgZGljdGlvbmFyeSBvciBrZWVwIHRoZVxuICAgbW9kdWxlIGFyb3VuZCB3aGlsZSB1c2luZyBpdHMgZGljdGlvbmFyeSBkaXJlY3RseS5cblxuICAgUHJlZGVmaW5lZCAod3JpdGFibGUpIGF0dHJpYnV0ZXM6ICJfX25hbWVfXyIgaXMgdGhlIG1vZHVsZVwncyBuYW1lO1xuICAgIl9fZG9jX18iIGlzIHRoZSBtb2R1bGVcJ3MgZG9jdW1lbnRhdGlvbiBzdHJpbmcsIG9yICJOb25lIiBpZlxuICAgdW5hdmFpbGFibGU7ICJfX2ZpbGVfXyIgaXMgdGhlIHBhdGhuYW1lIG9mIHRoZSBmaWxlIGZyb20gd2hpY2ggdGhlXG4gICBtb2R1bGUgd2FzIGxvYWRlZCwgaWYgaXQgd2FzIGxvYWRlZCBmcm9tIGEgZmlsZS4gVGhlICJfX2ZpbGVfXyJcbiAgIGF0dHJpYnV0ZSBtYXkgYmUgbWlzc2luZyBmb3IgY2VydGFpbiB0eXBlcyBvZiBtb2R1bGVzLCBzdWNoIGFzIENcbiAgIG1vZHVsZXMgdGhhdCBhcmUgc3RhdGljYWxseSBsaW5rZWQgaW50byB0aGUgaW50ZXJwcmV0ZXI7IGZvclxuICAgZXh0ZW5zaW9uIG1vZHVsZXMgbG9hZGVkIGR5bmFtaWNhbGx5IGZyb20gYSBzaGFyZWQgbGlicmFyeSwgaXQgaXNcbiAgIHRoZSBwYXRobmFtZSBvZiB0aGUgc2hhcmVkIGxpYnJhcnkgZmlsZS5cblxuQ3VzdG9tIGNsYXNzZXNcbiAgIEN1c3RvbSBjbGFzcyB0eXBlcyBhcmUgdHlwaWNhbGx5IGNyZWF0ZWQgYnkgY2xhc3MgZGVmaW5pdGlvbnMgKHNlZVxuICAgc2VjdGlvbiAqQ2xhc3MgZGVmaW5pdGlvbnMqKS4gIEEgY2xhc3MgaGFzIGEgbmFtZXNwYWNlIGltcGxlbWVudGVkXG4gICBieSBhIGRpY3Rpb25hcnkgb2JqZWN0LiBDbGFzcyBhdHRyaWJ1dGUgcmVmZXJlbmNlcyBhcmUgdHJhbnNsYXRlZFxuICAgdG8gbG9va3VwcyBpbiB0aGlzIGRpY3Rpb25hcnksIGUuZy4sICJDLngiIGlzIHRyYW5zbGF0ZWQgdG9cbiAgICJDLl9fZGljdF9fWyJ4Il0iIChhbHRob3VnaCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgaG9va3Mgd2hpY2ggYWxsb3dcbiAgIGZvciBvdGhlciBtZWFucyBvZiBsb2NhdGluZyBhdHRyaWJ1dGVzKS4gV2hlbiB0aGUgYXR0cmlidXRlIG5hbWUgaXNcbiAgIG5vdCBmb3VuZCB0aGVyZSwgdGhlIGF0dHJpYnV0ZSBzZWFyY2ggY29udGludWVzIGluIHRoZSBiYXNlXG4gICBjbGFzc2VzLiBUaGlzIHNlYXJjaCBvZiB0aGUgYmFzZSBjbGFzc2VzIHVzZXMgdGhlIEMzIG1ldGhvZFxuICAgcmVzb2x1dGlvbiBvcmRlciB3aGljaCBiZWhhdmVzIGNvcnJlY3RseSBldmVuIGluIHRoZSBwcmVzZW5jZSBvZlxuICAgXCdkaWFtb25kXCcgaW5oZXJpdGFuY2Ugc3RydWN0dXJlcyB3aGVyZSB0aGVyZSBhcmUgbXVsdGlwbGVcbiAgIGluaGVyaXRhbmNlIHBhdGhzIGxlYWRpbmcgYmFjayB0byBhIGNvbW1vbiBhbmNlc3Rvci4gQWRkaXRpb25hbFxuICAgZGV0YWlscyBvbiB0aGUgQzMgTVJPIHVzZWQgYnkgUHl0aG9uIGNhbiBiZSBmb3VuZCBpbiB0aGVcbiAgIGRvY3VtZW50YXRpb24gYWNjb21wYW55aW5nIHRoZSAyLjMgcmVsZWFzZSBhdFxuICAgaHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kb3dubG9hZC9yZWxlYXNlcy8yLjMvbXJvLy5cblxuICAgV2hlbiBhIGNsYXNzIGF0dHJpYnV0ZSByZWZlcmVuY2UgKGZvciBjbGFzcyAiQyIsIHNheSkgd291bGQgeWllbGQgYVxuICAgY2xhc3MgbWV0aG9kIG9iamVjdCwgaXQgaXMgdHJhbnNmb3JtZWQgaW50byBhbiBpbnN0YW5jZSBtZXRob2RcbiAgIG9iamVjdCB3aG9zZSAiX19zZWxmX18iIGF0dHJpYnV0ZXMgaXMgIkMiLiAgV2hlbiBpdCB3b3VsZCB5aWVsZCBhXG4gICBzdGF0aWMgbWV0aG9kIG9iamVjdCwgaXQgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgb2JqZWN0IHdyYXBwZWQgYnlcbiAgIHRoZSBzdGF0aWMgbWV0aG9kIG9iamVjdC4gU2VlIHNlY3Rpb24gKkltcGxlbWVudGluZyBEZXNjcmlwdG9ycypcbiAgIGZvciBhbm90aGVyIHdheSBpbiB3aGljaCBhdHRyaWJ1dGVzIHJldHJpZXZlZCBmcm9tIGEgY2xhc3MgbWF5XG4gICBkaWZmZXIgZnJvbSB0aG9zZSBhY3R1YWxseSBjb250YWluZWQgaW4gaXRzICJfX2RpY3RfXyIuXG5cbiAgIENsYXNzIGF0dHJpYnV0ZSBhc3NpZ25tZW50cyB1cGRhdGUgdGhlIGNsYXNzXCdzIGRpY3Rpb25hcnksIG5ldmVyXG4gICB0aGUgZGljdGlvbmFyeSBvZiBhIGJhc2UgY2xhc3MuXG5cbiAgIEEgY2xhc3Mgb2JqZWN0IGNhbiBiZSBjYWxsZWQgKHNlZSBhYm92ZSkgdG8geWllbGQgYSBjbGFzcyBpbnN0YW5jZVxuICAgKHNlZSBiZWxvdykuXG5cbiAgIFNwZWNpYWwgYXR0cmlidXRlczogIl9fbmFtZV9fIiBpcyB0aGUgY2xhc3MgbmFtZTsgIl9fbW9kdWxlX18iIGlzXG4gICB0aGUgbW9kdWxlIG5hbWUgaW4gd2hpY2ggdGhlIGNsYXNzIHdhcyBkZWZpbmVkOyAiX19kaWN0X18iIGlzIHRoZVxuICAgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBjbGFzc1wncyBuYW1lc3BhY2U7ICJfX2Jhc2VzX18iIGlzIGEgdHVwbGVcbiAgIChwb3NzaWJseSBlbXB0eSBvciBhIHNpbmdsZXRvbikgY29udGFpbmluZyB0aGUgYmFzZSBjbGFzc2VzLCBpbiB0aGVcbiAgIG9yZGVyIG9mIHRoZWlyIG9jY3VycmVuY2UgaW4gdGhlIGJhc2UgY2xhc3MgbGlzdDsgIl9fZG9jX18iIGlzIHRoZVxuICAgY2xhc3NcJ3MgZG9jdW1lbnRhdGlvbiBzdHJpbmcsIG9yIE5vbmUgaWYgdW5kZWZpbmVkLlxuXG5DbGFzcyBpbnN0YW5jZXNcbiAgIEEgY2xhc3MgaW5zdGFuY2UgaXMgY3JlYXRlZCBieSBjYWxsaW5nIGEgY2xhc3Mgb2JqZWN0IChzZWUgYWJvdmUpLlxuICAgQSBjbGFzcyBpbnN0YW5jZSBoYXMgYSBuYW1lc3BhY2UgaW1wbGVtZW50ZWQgYXMgYSBkaWN0aW9uYXJ5IHdoaWNoXG4gICBpcyB0aGUgZmlyc3QgcGxhY2UgaW4gd2hpY2ggYXR0cmlidXRlIHJlZmVyZW5jZXMgYXJlIHNlYXJjaGVkLlxuICAgV2hlbiBhbiBhdHRyaWJ1dGUgaXMgbm90IGZvdW5kIHRoZXJlLCBhbmQgdGhlIGluc3RhbmNlXCdzIGNsYXNzIGhhc1xuICAgYW4gYXR0cmlidXRlIGJ5IHRoYXQgbmFtZSwgdGhlIHNlYXJjaCBjb250aW51ZXMgd2l0aCB0aGUgY2xhc3NcbiAgIGF0dHJpYnV0ZXMuICBJZiBhIGNsYXNzIGF0dHJpYnV0ZSBpcyBmb3VuZCB0aGF0IGlzIGEgdXNlci1kZWZpbmVkXG4gICBmdW5jdGlvbiBvYmplY3QsIGl0IGlzIHRyYW5zZm9ybWVkIGludG8gYW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdFxuICAgd2hvc2UgIl9fc2VsZl9fIiBhdHRyaWJ1dGUgaXMgdGhlIGluc3RhbmNlLiAgU3RhdGljIG1ldGhvZCBhbmRcbiAgIGNsYXNzIG1ldGhvZCBvYmplY3RzIGFyZSBhbHNvIHRyYW5zZm9ybWVkOyBzZWUgYWJvdmUgdW5kZXJcbiAgICJDbGFzc2VzIi4gIFNlZSBzZWN0aW9uICpJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMqIGZvciBhbm90aGVyIHdheVxuICAgaW4gd2hpY2ggYXR0cmlidXRlcyBvZiBhIGNsYXNzIHJldHJpZXZlZCB2aWEgaXRzIGluc3RhbmNlcyBtYXlcbiAgIGRpZmZlciBmcm9tIHRoZSBvYmplY3RzIGFjdHVhbGx5IHN0b3JlZCBpbiB0aGUgY2xhc3NcJ3MgIl9fZGljdF9fIi5cbiAgIElmIG5vIGNsYXNzIGF0dHJpYnV0ZSBpcyBmb3VuZCwgYW5kIHRoZSBvYmplY3RcJ3MgY2xhc3MgaGFzIGFcbiAgICJfX2dldGF0dHJfXygpIiBtZXRob2QsIHRoYXQgaXMgY2FsbGVkIHRvIHNhdGlzZnkgdGhlIGxvb2t1cC5cblxuICAgQXR0cmlidXRlIGFzc2lnbm1lbnRzIGFuZCBkZWxldGlvbnMgdXBkYXRlIHRoZSBpbnN0YW5jZVwnc1xuICAgZGljdGlvbmFyeSwgbmV2ZXIgYSBjbGFzc1wncyBkaWN0aW9uYXJ5LiAgSWYgdGhlIGNsYXNzIGhhcyBhXG4gICAiX19zZXRhdHRyX18oKSIgb3IgIl9fZGVsYXR0cl9fKCkiIG1ldGhvZCwgdGhpcyBpcyBjYWxsZWQgaW5zdGVhZFxuICAgb2YgdXBkYXRpbmcgdGhlIGluc3RhbmNlIGRpY3Rpb25hcnkgZGlyZWN0bHkuXG5cbiAgIENsYXNzIGluc3RhbmNlcyBjYW4gcHJldGVuZCB0byBiZSBudW1iZXJzLCBzZXF1ZW5jZXMsIG9yIG1hcHBpbmdzXG4gICBpZiB0aGV5IGhhdmUgbWV0aG9kcyB3aXRoIGNlcnRhaW4gc3BlY2lhbCBuYW1lcy4gIFNlZSBzZWN0aW9uXG4gICAqU3BlY2lhbCBtZXRob2QgbmFtZXMqLlxuXG4gICBTcGVjaWFsIGF0dHJpYnV0ZXM6ICJfX2RpY3RfXyIgaXMgdGhlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5O1xuICAgIl9fY2xhc3NfXyIgaXMgdGhlIGluc3RhbmNlXCdzIGNsYXNzLlxuXG5JL08gb2JqZWN0cyAoYWxzbyBrbm93biBhcyBmaWxlIG9iamVjdHMpXG4gICBBICpmaWxlIG9iamVjdCogcmVwcmVzZW50cyBhbiBvcGVuIGZpbGUuICBWYXJpb3VzIHNob3J0Y3V0cyBhcmVcbiAgIGF2YWlsYWJsZSB0byBjcmVhdGUgZmlsZSBvYmplY3RzOiB0aGUgIm9wZW4oKSIgYnVpbHQtaW4gZnVuY3Rpb24sXG4gICBhbmQgYWxzbyAib3MucG9wZW4oKSIsICJvcy5mZG9wZW4oKSIsIGFuZCB0aGUgIm1ha2VmaWxlKCkiIG1ldGhvZFxuICAgb2Ygc29ja2V0IG9iamVjdHMgKGFuZCBwZXJoYXBzIGJ5IG90aGVyIGZ1bmN0aW9ucyBvciBtZXRob2RzXG4gICBwcm92aWRlZCBieSBleHRlbnNpb24gbW9kdWxlcykuXG5cbiAgIFRoZSBvYmplY3RzICJzeXMuc3RkaW4iLCAic3lzLnN0ZG91dCIgYW5kICJzeXMuc3RkZXJyIiBhcmVcbiAgIGluaXRpYWxpemVkIHRvIGZpbGUgb2JqZWN0cyBjb3JyZXNwb25kaW5nIHRvIHRoZSBpbnRlcnByZXRlclwnc1xuICAgc3RhbmRhcmQgaW5wdXQsIG91dHB1dCBhbmQgZXJyb3Igc3RyZWFtczsgdGhleSBhcmUgYWxsIG9wZW4gaW4gdGV4dFxuICAgbW9kZSBhbmQgdGhlcmVmb3JlIGZvbGxvdyB0aGUgaW50ZXJmYWNlIGRlZmluZWQgYnkgdGhlXG4gICAiaW8uVGV4dElPQmFzZSIgYWJzdHJhY3QgY2xhc3MuXG5cbkludGVybmFsIHR5cGVzXG4gICBBIGZldyB0eXBlcyB1c2VkIGludGVybmFsbHkgYnkgdGhlIGludGVycHJldGVyIGFyZSBleHBvc2VkIHRvIHRoZVxuICAgdXNlci4gVGhlaXIgZGVmaW5pdGlvbnMgbWF5IGNoYW5nZSB3aXRoIGZ1dHVyZSB2ZXJzaW9ucyBvZiB0aGVcbiAgIGludGVycHJldGVyLCBidXQgdGhleSBhcmUgbWVudGlvbmVkIGhlcmUgZm9yIGNvbXBsZXRlbmVzcy5cblxuICAgQ29kZSBvYmplY3RzXG4gICAgICBDb2RlIG9iamVjdHMgcmVwcmVzZW50ICpieXRlLWNvbXBpbGVkKiBleGVjdXRhYmxlIFB5dGhvbiBjb2RlLFxuICAgICAgb3IgKmJ5dGVjb2RlKi4gVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBhIGNvZGUgb2JqZWN0IGFuZCBhXG4gICAgICBmdW5jdGlvbiBvYmplY3QgaXMgdGhhdCB0aGUgZnVuY3Rpb24gb2JqZWN0IGNvbnRhaW5zIGFuIGV4cGxpY2l0XG4gICAgICByZWZlcmVuY2UgdG8gdGhlIGZ1bmN0aW9uXCdzIGdsb2JhbHMgKHRoZSBtb2R1bGUgaW4gd2hpY2ggaXQgd2FzXG4gICAgICBkZWZpbmVkKSwgd2hpbGUgYSBjb2RlIG9iamVjdCBjb250YWlucyBubyBjb250ZXh0OyBhbHNvIHRoZVxuICAgICAgZGVmYXVsdCBhcmd1bWVudCB2YWx1ZXMgYXJlIHN0b3JlZCBpbiB0aGUgZnVuY3Rpb24gb2JqZWN0LCBub3RcbiAgICAgIGluIHRoZSBjb2RlIG9iamVjdCAoYmVjYXVzZSB0aGV5IHJlcHJlc2VudCB2YWx1ZXMgY2FsY3VsYXRlZCBhdFxuICAgICAgcnVuLXRpbWUpLiAgVW5saWtlIGZ1bmN0aW9uIG9iamVjdHMsIGNvZGUgb2JqZWN0cyBhcmUgaW1tdXRhYmxlXG4gICAgICBhbmQgY29udGFpbiBubyByZWZlcmVuY2VzIChkaXJlY3RseSBvciBpbmRpcmVjdGx5KSB0byBtdXRhYmxlXG4gICAgICBvYmplY3RzLlxuXG4gICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiAiY29fbmFtZSIgZ2l2ZXMgdGhlIGZ1bmN0aW9uIG5hbWU7XG4gICAgICAiY29fYXJnY291bnQiIGlzIHRoZSBudW1iZXIgb2YgcG9zaXRpb25hbCBhcmd1bWVudHMgKGluY2x1ZGluZ1xuICAgICAgYXJndW1lbnRzIHdpdGggZGVmYXVsdCB2YWx1ZXMpOyAiY29fbmxvY2FscyIgaXMgdGhlIG51bWJlciBvZlxuICAgICAgbG9jYWwgdmFyaWFibGVzIHVzZWQgYnkgdGhlIGZ1bmN0aW9uIChpbmNsdWRpbmcgYXJndW1lbnRzKTtcbiAgICAgICJjb192YXJuYW1lcyIgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBuYW1lcyBvZiB0aGUgbG9jYWxcbiAgICAgIHZhcmlhYmxlcyAoc3RhcnRpbmcgd2l0aCB0aGUgYXJndW1lbnQgbmFtZXMpOyAiY29fY2VsbHZhcnMiIGlzIGFcbiAgICAgIHR1cGxlIGNvbnRhaW5pbmcgdGhlIG5hbWVzIG9mIGxvY2FsIHZhcmlhYmxlcyB0aGF0IGFyZVxuICAgICAgcmVmZXJlbmNlZCBieSBuZXN0ZWQgZnVuY3Rpb25zOyAiY29fZnJlZXZhcnMiIGlzIGEgdHVwbGVcbiAgICAgIGNvbnRhaW5pbmcgdGhlIG5hbWVzIG9mIGZyZWUgdmFyaWFibGVzOyAiY29fY29kZSIgaXMgYSBzdHJpbmdcbiAgICAgIHJlcHJlc2VudGluZyB0aGUgc2VxdWVuY2Ugb2YgYnl0ZWNvZGUgaW5zdHJ1Y3Rpb25zOyAiY29fY29uc3RzIlxuICAgICAgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBsaXRlcmFscyB1c2VkIGJ5IHRoZSBieXRlY29kZTtcbiAgICAgICJjb19uYW1lcyIgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBuYW1lcyB1c2VkIGJ5IHRoZSBieXRlY29kZTtcbiAgICAgICJjb19maWxlbmFtZSIgaXMgdGhlIGZpbGVuYW1lIGZyb20gd2hpY2ggdGhlIGNvZGUgd2FzIGNvbXBpbGVkO1xuICAgICAgImNvX2ZpcnN0bGluZW5vIiBpcyB0aGUgZmlyc3QgbGluZSBudW1iZXIgb2YgdGhlIGZ1bmN0aW9uO1xuICAgICAgImNvX2xub3RhYiIgaXMgYSBzdHJpbmcgZW5jb2RpbmcgdGhlIG1hcHBpbmcgZnJvbSBieXRlY29kZVxuICAgICAgb2Zmc2V0cyB0byBsaW5lIG51bWJlcnMgKGZvciBkZXRhaWxzIHNlZSB0aGUgc291cmNlIGNvZGUgb2YgdGhlXG4gICAgICBpbnRlcnByZXRlcik7ICJjb19zdGFja3NpemUiIGlzIHRoZSByZXF1aXJlZCBzdGFjayBzaXplXG4gICAgICAoaW5jbHVkaW5nIGxvY2FsIHZhcmlhYmxlcyk7ICJjb19mbGFncyIgaXMgYW4gaW50ZWdlciBlbmNvZGluZyBhXG4gICAgICBudW1iZXIgb2YgZmxhZ3MgZm9yIHRoZSBpbnRlcnByZXRlci5cblxuICAgICAgVGhlIGZvbGxvd2luZyBmbGFnIGJpdHMgYXJlIGRlZmluZWQgZm9yICJjb19mbGFncyI6IGJpdCAiMHgwNCJcbiAgICAgIGlzIHNldCBpZiB0aGUgZnVuY3Rpb24gdXNlcyB0aGUgIiphcmd1bWVudHMiIHN5bnRheCB0byBhY2NlcHQgYW5cbiAgICAgIGFyYml0cmFyeSBudW1iZXIgb2YgcG9zaXRpb25hbCBhcmd1bWVudHM7IGJpdCAiMHgwOCIgaXMgc2V0IGlmXG4gICAgICB0aGUgZnVuY3Rpb24gdXNlcyB0aGUgIioqa2V5d29yZHMiIHN5bnRheCB0byBhY2NlcHQgYXJiaXRyYXJ5XG4gICAgICBrZXl3b3JkIGFyZ3VtZW50czsgYml0ICIweDIwIiBpcyBzZXQgaWYgdGhlIGZ1bmN0aW9uIGlzIGFcbiAgICAgIGdlbmVyYXRvci5cblxuICAgICAgRnV0dXJlIGZlYXR1cmUgZGVjbGFyYXRpb25zICgiZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBkaXZpc2lvbiIpXG4gICAgICBhbHNvIHVzZSBiaXRzIGluICJjb19mbGFncyIgdG8gaW5kaWNhdGUgd2hldGhlciBhIGNvZGUgb2JqZWN0XG4gICAgICB3YXMgY29tcGlsZWQgd2l0aCBhIHBhcnRpY3VsYXIgZmVhdHVyZSBlbmFibGVkOiBiaXQgIjB4MjAwMCIgaXNcbiAgICAgIHNldCBpZiB0aGUgZnVuY3Rpb24gd2FzIGNvbXBpbGVkIHdpdGggZnV0dXJlIGRpdmlzaW9uIGVuYWJsZWQ7XG4gICAgICBiaXRzICIweDEwIiBhbmQgIjB4MTAwMCIgd2VyZSB1c2VkIGluIGVhcmxpZXIgdmVyc2lvbnMgb2ZcbiAgICAgIFB5dGhvbi5cblxuICAgICAgT3RoZXIgYml0cyBpbiAiY29fZmxhZ3MiIGFyZSByZXNlcnZlZCBmb3IgaW50ZXJuYWwgdXNlLlxuXG4gICAgICBJZiBhIGNvZGUgb2JqZWN0IHJlcHJlc2VudHMgYSBmdW5jdGlvbiwgdGhlIGZpcnN0IGl0ZW0gaW5cbiAgICAgICJjb19jb25zdHMiIGlzIHRoZSBkb2N1bWVudGF0aW9uIHN0cmluZyBvZiB0aGUgZnVuY3Rpb24sIG9yXG4gICAgICAiTm9uZSIgaWYgdW5kZWZpbmVkLlxuXG4gICBGcmFtZSBvYmplY3RzXG4gICAgICBGcmFtZSBvYmplY3RzIHJlcHJlc2VudCBleGVjdXRpb24gZnJhbWVzLiAgVGhleSBtYXkgb2NjdXIgaW5cbiAgICAgIHRyYWNlYmFjayBvYmplY3RzIChzZWUgYmVsb3cpLlxuXG4gICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiAiZl9iYWNrIiBpcyB0byB0aGUgcHJldmlvdXMgc3RhY2tcbiAgICAgIGZyYW1lICh0b3dhcmRzIHRoZSBjYWxsZXIpLCBvciAiTm9uZSIgaWYgdGhpcyBpcyB0aGUgYm90dG9tXG4gICAgICBzdGFjayBmcmFtZTsgImZfY29kZSIgaXMgdGhlIGNvZGUgb2JqZWN0IGJlaW5nIGV4ZWN1dGVkIGluIHRoaXNcbiAgICAgIGZyYW1lOyAiZl9sb2NhbHMiIGlzIHRoZSBkaWN0aW9uYXJ5IHVzZWQgdG8gbG9vayB1cCBsb2NhbFxuICAgICAgdmFyaWFibGVzOyAiZl9nbG9iYWxzIiBpcyB1c2VkIGZvciBnbG9iYWwgdmFyaWFibGVzO1xuICAgICAgImZfYnVpbHRpbnMiIGlzIHVzZWQgZm9yIGJ1aWx0LWluIChpbnRyaW5zaWMpIG5hbWVzOyAiZl9sYXN0aSJcbiAgICAgIGdpdmVzIHRoZSBwcmVjaXNlIGluc3RydWN0aW9uICh0aGlzIGlzIGFuIGluZGV4IGludG8gdGhlXG4gICAgICBieXRlY29kZSBzdHJpbmcgb2YgdGhlIGNvZGUgb2JqZWN0KS5cblxuICAgICAgU3BlY2lhbCB3cml0YWJsZSBhdHRyaWJ1dGVzOiAiZl90cmFjZSIsIGlmIG5vdCAiTm9uZSIsIGlzIGFcbiAgICAgIGZ1bmN0aW9uIGNhbGxlZCBhdCB0aGUgc3RhcnQgb2YgZWFjaCBzb3VyY2UgY29kZSBsaW5lICh0aGlzIGlzXG4gICAgICB1c2VkIGJ5IHRoZSBkZWJ1Z2dlcik7ICJmX2xpbmVubyIgaXMgdGhlIGN1cnJlbnQgbGluZSBudW1iZXIgb2ZcbiAgICAgIHRoZSBmcmFtZSAtLS0gd3JpdGluZyB0byB0aGlzIGZyb20gd2l0aGluIGEgdHJhY2UgZnVuY3Rpb24ganVtcHNcbiAgICAgIHRvIHRoZSBnaXZlbiBsaW5lIChvbmx5IGZvciB0aGUgYm90dG9tLW1vc3QgZnJhbWUpLiAgQSBkZWJ1Z2dlclxuICAgICAgY2FuIGltcGxlbWVudCBhIEp1bXAgY29tbWFuZCAoYWthIFNldCBOZXh0IFN0YXRlbWVudCkgYnkgd3JpdGluZ1xuICAgICAgdG8gZl9saW5lbm8uXG5cbiAgICAgIEZyYW1lIG9iamVjdHMgc3VwcG9ydCBvbmUgbWV0aG9kOlxuXG4gICAgICBmcmFtZS5jbGVhcigpXG5cbiAgICAgICAgIFRoaXMgbWV0aG9kIGNsZWFycyBhbGwgcmVmZXJlbmNlcyB0byBsb2NhbCB2YXJpYWJsZXMgaGVsZCBieVxuICAgICAgICAgdGhlIGZyYW1lLiAgQWxzbywgaWYgdGhlIGZyYW1lIGJlbG9uZ2VkIHRvIGEgZ2VuZXJhdG9yLCB0aGVcbiAgICAgICAgIGdlbmVyYXRvciBpcyBmaW5hbGl6ZWQuICBUaGlzIGhlbHBzIGJyZWFrIHJlZmVyZW5jZSBjeWNsZXNcbiAgICAgICAgIGludm9sdmluZyBmcmFtZSBvYmplY3RzIChmb3IgZXhhbXBsZSB3aGVuIGNhdGNoaW5nIGFuXG4gICAgICAgICBleGNlcHRpb24gYW5kIHN0b3JpbmcgaXRzIHRyYWNlYmFjayBmb3IgbGF0ZXIgdXNlKS5cblxuICAgICAgICAgIlJ1bnRpbWVFcnJvciIgaXMgcmFpc2VkIGlmIHRoZSBmcmFtZSBpcyBjdXJyZW50bHkgZXhlY3V0aW5nLlxuXG4gICAgICAgICBOZXcgaW4gdmVyc2lvbiAzLjQuXG5cbiAgIFRyYWNlYmFjayBvYmplY3RzXG4gICAgICBUcmFjZWJhY2sgb2JqZWN0cyByZXByZXNlbnQgYSBzdGFjayB0cmFjZSBvZiBhbiBleGNlcHRpb24uICBBXG4gICAgICB0cmFjZWJhY2sgb2JqZWN0IGlzIGNyZWF0ZWQgd2hlbiBhbiBleGNlcHRpb24gb2NjdXJzLiAgV2hlbiB0aGVcbiAgICAgIHNlYXJjaCBmb3IgYW4gZXhjZXB0aW9uIGhhbmRsZXIgdW53aW5kcyB0aGUgZXhlY3V0aW9uIHN0YWNrLCBhdFxuICAgICAgZWFjaCB1bndvdW5kIGxldmVsIGEgdHJhY2ViYWNrIG9iamVjdCBpcyBpbnNlcnRlZCBpbiBmcm9udCBvZlxuICAgICAgdGhlIGN1cnJlbnQgdHJhY2ViYWNrLiAgV2hlbiBhbiBleGNlcHRpb24gaGFuZGxlciBpcyBlbnRlcmVkLFxuICAgICAgdGhlIHN0YWNrIHRyYWNlIGlzIG1hZGUgYXZhaWxhYmxlIHRvIHRoZSBwcm9ncmFtLiAoU2VlIHNlY3Rpb25cbiAgICAgICpUaGUgdHJ5IHN0YXRlbWVudCouKSBJdCBpcyBhY2Nlc3NpYmxlIGFzIHRoZSB0aGlyZCBpdGVtIG9mIHRoZVxuICAgICAgdHVwbGUgcmV0dXJuZWQgYnkgInN5cy5leGNfaW5mbygpIi4gV2hlbiB0aGUgcHJvZ3JhbSBjb250YWlucyBub1xuICAgICAgc3VpdGFibGUgaGFuZGxlciwgdGhlIHN0YWNrIHRyYWNlIGlzIHdyaXR0ZW4gKG5pY2VseSBmb3JtYXR0ZWQpXG4gICAgICB0byB0aGUgc3RhbmRhcmQgZXJyb3Igc3RyZWFtOyBpZiB0aGUgaW50ZXJwcmV0ZXIgaXMgaW50ZXJhY3RpdmUsXG4gICAgICBpdCBpcyBhbHNvIG1hZGUgYXZhaWxhYmxlIHRvIHRoZSB1c2VyIGFzICJzeXMubGFzdF90cmFjZWJhY2siLlxuXG4gICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiAidGJfbmV4dCIgaXMgdGhlIG5leHQgbGV2ZWwgaW4gdGhlXG4gICAgICBzdGFjayB0cmFjZSAodG93YXJkcyB0aGUgZnJhbWUgd2hlcmUgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZCksIG9yXG4gICAgICAiTm9uZSIgaWYgdGhlcmUgaXMgbm8gbmV4dCBsZXZlbDsgInRiX2ZyYW1lIiBwb2ludHMgdG8gdGhlXG4gICAgICBleGVjdXRpb24gZnJhbWUgb2YgdGhlIGN1cnJlbnQgbGV2ZWw7ICJ0Yl9saW5lbm8iIGdpdmVzIHRoZSBsaW5lXG4gICAgICBudW1iZXIgd2hlcmUgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZDsgInRiX2xhc3RpIiBpbmRpY2F0ZXMgdGhlXG4gICAgICBwcmVjaXNlIGluc3RydWN0aW9uLiAgVGhlIGxpbmUgbnVtYmVyIGFuZCBsYXN0IGluc3RydWN0aW9uIGluXG4gICAgICB0aGUgdHJhY2ViYWNrIG1heSBkaWZmZXIgZnJvbSB0aGUgbGluZSBudW1iZXIgb2YgaXRzIGZyYW1lXG4gICAgICBvYmplY3QgaWYgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZCBpbiBhICJ0cnkiIHN0YXRlbWVudCB3aXRoIG5vXG4gICAgICBtYXRjaGluZyBleGNlcHQgY2xhdXNlIG9yIHdpdGggYSBmaW5hbGx5IGNsYXVzZS5cblxuICAgU2xpY2Ugb2JqZWN0c1xuICAgICAgU2xpY2Ugb2JqZWN0cyBhcmUgdXNlZCB0byByZXByZXNlbnQgc2xpY2VzIGZvciAiX19nZXRpdGVtX18oKSJcbiAgICAgIG1ldGhvZHMuICBUaGV5IGFyZSBhbHNvIGNyZWF0ZWQgYnkgdGhlIGJ1aWx0LWluICJzbGljZSgpIlxuICAgICAgZnVuY3Rpb24uXG5cbiAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6ICJzdGFydCIgaXMgdGhlIGxvd2VyIGJvdW5kOyAic3RvcCJcbiAgICAgIGlzIHRoZSB1cHBlciBib3VuZDsgInN0ZXAiIGlzIHRoZSBzdGVwIHZhbHVlOyBlYWNoIGlzICJOb25lIiBpZlxuICAgICAgb21pdHRlZC4gIFRoZXNlIGF0dHJpYnV0ZXMgY2FuIGhhdmUgYW55IHR5cGUuXG5cbiAgICAgIFNsaWNlIG9iamVjdHMgc3VwcG9ydCBvbmUgbWV0aG9kOlxuXG4gICAgICBzbGljZS5pbmRpY2VzKHNlbGYsIGxlbmd0aClcblxuICAgICAgICAgVGhpcyBtZXRob2QgdGFrZXMgYSBzaW5nbGUgaW50ZWdlciBhcmd1bWVudCAqbGVuZ3RoKiBhbmRcbiAgICAgICAgIGNvbXB1dGVzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzbGljZSB0aGF0IHRoZSBzbGljZSBvYmplY3RcbiAgICAgICAgIHdvdWxkIGRlc2NyaWJlIGlmIGFwcGxpZWQgdG8gYSBzZXF1ZW5jZSBvZiAqbGVuZ3RoKiBpdGVtcy5cbiAgICAgICAgIEl0IHJldHVybnMgYSB0dXBsZSBvZiB0aHJlZSBpbnRlZ2VyczsgcmVzcGVjdGl2ZWx5IHRoZXNlIGFyZVxuICAgICAgICAgdGhlICpzdGFydCogYW5kICpzdG9wKiBpbmRpY2VzIGFuZCB0aGUgKnN0ZXAqIG9yIHN0cmlkZVxuICAgICAgICAgbGVuZ3RoIG9mIHRoZSBzbGljZS4gTWlzc2luZyBvciBvdXQtb2YtYm91bmRzIGluZGljZXMgYXJlXG4gICAgICAgICBoYW5kbGVkIGluIGEgbWFubmVyIGNvbnNpc3RlbnQgd2l0aCByZWd1bGFyIHNsaWNlcy5cblxuICAgU3RhdGljIG1ldGhvZCBvYmplY3RzXG4gICAgICBTdGF0aWMgbWV0aG9kIG9iamVjdHMgcHJvdmlkZSBhIHdheSBvZiBkZWZlYXRpbmcgdGhlXG4gICAgICB0cmFuc2Zvcm1hdGlvbiBvZiBmdW5jdGlvbiBvYmplY3RzIHRvIG1ldGhvZCBvYmplY3RzIGRlc2NyaWJlZFxuICAgICAgYWJvdmUuIEEgc3RhdGljIG1ldGhvZCBvYmplY3QgaXMgYSB3cmFwcGVyIGFyb3VuZCBhbnkgb3RoZXJcbiAgICAgIG9iamVjdCwgdXN1YWxseSBhIHVzZXItZGVmaW5lZCBtZXRob2Qgb2JqZWN0LiBXaGVuIGEgc3RhdGljXG4gICAgICBtZXRob2Qgb2JqZWN0IGlzIHJldHJpZXZlZCBmcm9tIGEgY2xhc3Mgb3IgYSBjbGFzcyBpbnN0YW5jZSwgdGhlXG4gICAgICBvYmplY3QgYWN0dWFsbHkgcmV0dXJuZWQgaXMgdGhlIHdyYXBwZWQgb2JqZWN0LCB3aGljaCBpcyBub3RcbiAgICAgIHN1YmplY3QgdG8gYW55IGZ1cnRoZXIgdHJhbnNmb3JtYXRpb24uIFN0YXRpYyBtZXRob2Qgb2JqZWN0cyBhcmVcbiAgICAgIG5vdCB0aGVtc2VsdmVzIGNhbGxhYmxlLCBhbHRob3VnaCB0aGUgb2JqZWN0cyB0aGV5IHdyYXAgdXN1YWxseVxuICAgICAgYXJlLiBTdGF0aWMgbWV0aG9kIG9iamVjdHMgYXJlIGNyZWF0ZWQgYnkgdGhlIGJ1aWx0LWluXG4gICAgICAic3RhdGljbWV0aG9kKCkiIGNvbnN0cnVjdG9yLlxuXG4gICBDbGFzcyBtZXRob2Qgb2JqZWN0c1xuICAgICAgQSBjbGFzcyBtZXRob2Qgb2JqZWN0LCBsaWtlIGEgc3RhdGljIG1ldGhvZCBvYmplY3QsIGlzIGEgd3JhcHBlclxuICAgICAgYXJvdW5kIGFub3RoZXIgb2JqZWN0IHRoYXQgYWx0ZXJzIHRoZSB3YXkgaW4gd2hpY2ggdGhhdCBvYmplY3RcbiAgICAgIGlzIHJldHJpZXZlZCBmcm9tIGNsYXNzZXMgYW5kIGNsYXNzIGluc3RhbmNlcy4gVGhlIGJlaGF2aW91ciBvZlxuICAgICAgY2xhc3MgbWV0aG9kIG9iamVjdHMgdXBvbiBzdWNoIHJldHJpZXZhbCBpcyBkZXNjcmliZWQgYWJvdmUsXG4gICAgICB1bmRlciAiVXNlci1kZWZpbmVkIG1ldGhvZHMiLiBDbGFzcyBtZXRob2Qgb2JqZWN0cyBhcmUgY3JlYXRlZFxuICAgICAgYnkgdGhlIGJ1aWx0LWluICJjbGFzc21ldGhvZCgpIiBjb25zdHJ1Y3Rvci5cbicsCi0gJ3R5cGVzZnVuY3Rpb25zJzogdSdcbkZ1bmN0aW9uc1xuKioqKioqKioqXG5cbkZ1bmN0aW9uIG9iamVjdHMgYXJlIGNyZWF0ZWQgYnkgZnVuY3Rpb24gZGVmaW5pdGlvbnMuICBUaGUgb25seVxub3BlcmF0aW9uIG9uIGEgZnVuY3Rpb24gb2JqZWN0IGlzIHRvIGNhbGwgaXQ6ICJmdW5jKGFyZ3VtZW50LWxpc3QpIi5cblxuVGhlcmUgYXJlIHJlYWxseSB0d28gZmxhdm9ycyBvZiBmdW5jdGlvbiBvYmplY3RzOiBidWlsdC1pbiBmdW5jdGlvbnNcbmFuZCB1c2VyLWRlZmluZWQgZnVuY3Rpb25zLiAgQm90aCBzdXBwb3J0IHRoZSBzYW1lIG9wZXJhdGlvbiAodG8gY2FsbFxudGhlIGZ1bmN0aW9uKSwgYnV0IHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBkaWZmZXJlbnQsIGhlbmNlIHRoZVxuZGlmZmVyZW50IG9iamVjdCB0eXBlcy5cblxuU2VlICpGdW5jdGlvbiBkZWZpbml0aW9ucyogZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4nLAotICd0eXBlc21hcHBpbmcnOiB1J1xuTWFwcGluZyBUeXBlcyAtLS0gImRpY3QiXG4qKioqKioqKioqKioqKioqKioqKioqKipcblxuQSAqbWFwcGluZyogb2JqZWN0IG1hcHMgKmhhc2hhYmxlKiB2YWx1ZXMgdG8gYXJiaXRyYXJ5IG9iamVjdHMuXG5NYXBwaW5ncyBhcmUgbXV0YWJsZSBvYmplY3RzLiAgVGhlcmUgaXMgY3VycmVudGx5IG9ubHkgb25lIHN0YW5kYXJkXG5tYXBwaW5nIHR5cGUsIHRoZSAqZGljdGlvbmFyeSouICAoRm9yIG90aGVyIGNvbnRhaW5lcnMgc2VlIHRoZSBidWlsdC1cbmluICJsaXN0IiwgInNldCIsIGFuZCAidHVwbGUiIGNsYXNzZXMsIGFuZCB0aGUgImNvbGxlY3Rpb25zIiBtb2R1bGUuKVxuXG5BIGRpY3Rpb25hcnlcJ3Mga2V5cyBhcmUgKmFsbW9zdCogYXJiaXRyYXJ5IHZhbHVlcy4gIFZhbHVlcyB0aGF0IGFyZVxubm90ICpoYXNoYWJsZSosIHRoYXQgaXMsIHZhbHVlcyBjb250YWluaW5nIGxpc3RzLCBkaWN0aW9uYXJpZXMgb3Jcbm90aGVyIG11dGFibGUgdHlwZXMgKHRoYXQgYXJlIGNvbXBhcmVkIGJ5IHZhbHVlIHJhdGhlciB0aGFuIGJ5IG9iamVjdFxuaWRlbnRpdHkpIG1heSBub3QgYmUgdXNlZCBhcyBrZXlzLiAgTnVtZXJpYyB0eXBlcyB1c2VkIGZvciBrZXlzIG9iZXlcbnRoZSBub3JtYWwgcnVsZXMgZm9yIG51bWVyaWMgY29tcGFyaXNvbjogaWYgdHdvIG51bWJlcnMgY29tcGFyZSBlcXVhbFxuKHN1Y2ggYXMgIjEiIGFuZCAiMS4wIikgdGhlbiB0aGV5IGNhbiBiZSB1c2VkIGludGVyY2hhbmdlYWJseSB0byBpbmRleFxudGhlIHNhbWUgZGljdGlvbmFyeSBlbnRyeS4gIChOb3RlIGhvd2V2ZXIsIHRoYXQgc2luY2UgY29tcHV0ZXJzIHN0b3JlXG5mbG9hdGluZy1wb2ludCBudW1iZXJzIGFzIGFwcHJveGltYXRpb25zIGl0IGlzIHVzdWFsbHkgdW53aXNlIHRvIHVzZVxudGhlbSBhcyBkaWN0aW9uYXJ5IGtleXMuKVxuXG5EaWN0aW9uYXJpZXMgY2FuIGJlIGNyZWF0ZWQgYnkgcGxhY2luZyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mICJrZXk6XG52YWx1ZSIgcGFpcnMgd2l0aGluIGJyYWNlcywgZm9yIGV4YW1wbGU6ICJ7XCdqYWNrXCc6IDQwOTgsIFwnc2pvZXJkXCc6XG40MTI3fSIgb3IgIns0MDk4OiBcJ2phY2tcJywgNDEyNzogXCdzam9lcmRcJ30iLCBvciBieSB0aGUgImRpY3QiXG5jb25zdHJ1Y3Rvci5cblxuY2xhc3MgY2xhc3MgZGljdCgqKmt3YXJnKVxuY2xhc3MgY2xhc3MgZGljdChtYXBwaW5nLCAqKmt3YXJnKVxuY2xhc3MgY2xhc3MgZGljdChpdGVyYWJsZSwgKiprd2FyZylcblxuICAgUmV0dXJuIGEgbmV3IGRpY3Rpb25hcnkgaW5pdGlhbGl6ZWQgZnJvbSBhbiBvcHRpb25hbCBwb3NpdGlvbmFsXG4gICBhcmd1bWVudCBhbmQgYSBwb3NzaWJseSBlbXB0eSBzZXQgb2Yga2V5d29yZCBhcmd1bWVudHMuXG5cbiAgIElmIG5vIHBvc2l0aW9uYWwgYXJndW1lbnQgaXMgZ2l2ZW4sIGFuIGVtcHR5IGRpY3Rpb25hcnkgaXMgY3JlYXRlZC5cbiAgIElmIGEgcG9zaXRpb25hbCBhcmd1bWVudCBpcyBnaXZlbiBhbmQgaXQgaXMgYSBtYXBwaW5nIG9iamVjdCwgYVxuICAgZGljdGlvbmFyeSBpcyBjcmVhdGVkIHdpdGggdGhlIHNhbWUga2V5LXZhbHVlIHBhaXJzIGFzIHRoZSBtYXBwaW5nXG4gICBvYmplY3QuICBPdGhlcndpc2UsIHRoZSBwb3NpdGlvbmFsIGFyZ3VtZW50IG11c3QgYmUgYW4gKml0ZXJhYmxlKlxuICAgb2JqZWN0LiAgRWFjaCBpdGVtIGluIHRoZSBpdGVyYWJsZSBtdXN0IGl0c2VsZiBiZSBhbiBpdGVyYWJsZSB3aXRoXG4gICBleGFjdGx5IHR3byBvYmplY3RzLiAgVGhlIGZpcnN0IG9iamVjdCBvZiBlYWNoIGl0ZW0gYmVjb21lcyBhIGtleVxuICAgaW4gdGhlIG5ldyBkaWN0aW9uYXJ5LCBhbmQgdGhlIHNlY29uZCBvYmplY3QgdGhlIGNvcnJlc3BvbmRpbmdcbiAgIHZhbHVlLiAgSWYgYSBrZXkgb2NjdXJzIG1vcmUgdGhhbiBvbmNlLCB0aGUgbGFzdCB2YWx1ZSBmb3IgdGhhdCBrZXlcbiAgIGJlY29tZXMgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgaW4gdGhlIG5ldyBkaWN0aW9uYXJ5LlxuXG4gICBJZiBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgZ2l2ZW4sIHRoZSBrZXl3b3JkIGFyZ3VtZW50cyBhbmQgdGhlaXJcbiAgIHZhbHVlcyBhcmUgYWRkZWQgdG8gdGhlIGRpY3Rpb25hcnkgY3JlYXRlZCBmcm9tIHRoZSBwb3NpdGlvbmFsXG4gICBhcmd1bWVudC4gIElmIGEga2V5IGJlaW5nIGFkZGVkIGlzIGFscmVhZHkgcHJlc2VudCwgdGhlIHZhbHVlIGZyb21cbiAgIHRoZSBrZXl3b3JkIGFyZ3VtZW50IHJlcGxhY2VzIHRoZSB2YWx1ZSBmcm9tIHRoZSBwb3NpdGlvbmFsXG4gICBhcmd1bWVudC5cblxuICAgVG8gaWxsdXN0cmF0ZSwgdGhlIGZvbGxvd2luZyBleGFtcGxlcyBhbGwgcmV0dXJuIGEgZGljdGlvbmFyeSBlcXVhbFxuICAgdG8gInsib25lIjogMSwgInR3byI6IDIsICJ0aHJlZSI6IDN9IjpcblxuICAgICAgPj4+IGEgPSBkaWN0KG9uZT0xLCB0d289MiwgdGhyZWU9MylcbiAgICAgID4+PiBiID0ge1wnb25lXCc6IDEsIFwndHdvXCc6IDIsIFwndGhyZWVcJzogM31cbiAgICAgID4+PiBjID0gZGljdCh6aXAoW1wnb25lXCcsIFwndHdvXCcsIFwndGhyZWVcJ10sIFsxLCAyLCAzXSkpXG4gICAgICA+Pj4gZCA9IGRpY3QoWyhcJ3R3b1wnLCAyKSwgKFwnb25lXCcsIDEpLCAoXCd0aHJlZVwnLCAzKV0pXG4gICAgICA+Pj4gZSA9IGRpY3Qoe1wndGhyZWVcJzogMywgXCdvbmVcJzogMSwgXCd0d29cJzogMn0pXG4gICAgICA+Pj4gYSA9PSBiID09IGMgPT0gZCA9PSBlXG4gICAgICBUcnVlXG5cbiAgIFByb3ZpZGluZyBrZXl3b3JkIGFyZ3VtZW50cyBhcyBpbiB0aGUgZmlyc3QgZXhhbXBsZSBvbmx5IHdvcmtzIGZvclxuICAga2V5cyB0aGF0IGFyZSB2YWxpZCBQeXRob24gaWRlbnRpZmllcnMuICBPdGhlcndpc2UsIGFueSB2YWxpZCBrZXlzXG4gICBjYW4gYmUgdXNlZC5cblxuICAgVGhlc2UgYXJlIHRoZSBvcGVyYXRpb25zIHRoYXQgZGljdGlvbmFyaWVzIHN1cHBvcnQgKGFuZCB0aGVyZWZvcmUsXG4gICBjdXN0b20gbWFwcGluZyB0eXBlcyBzaG91bGQgc3VwcG9ydCB0b28pOlxuXG4gICBsZW4oZClcblxuICAgICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIGRpY3Rpb25hcnkgKmQqLlxuXG4gICBkW2tleV1cblxuICAgICAgUmV0dXJuIHRoZSBpdGVtIG9mICpkKiB3aXRoIGtleSAqa2V5Ki4gIFJhaXNlcyBhICJLZXlFcnJvciIgaWZcbiAgICAgICprZXkqIGlzIG5vdCBpbiB0aGUgbWFwLlxuXG4gICAgICBJZiBhIHN1YmNsYXNzIG9mIGRpY3QgZGVmaW5lcyBhIG1ldGhvZCAiX19taXNzaW5nX18oKSIgYW5kICprZXkqXG4gICAgICBpcyBub3QgcHJlc2VudCwgdGhlICJkW2tleV0iIG9wZXJhdGlvbiBjYWxscyB0aGF0IG1ldGhvZCB3aXRoXG4gICAgICB0aGUga2V5ICprZXkqIGFzIGFyZ3VtZW50LiAgVGhlICJkW2tleV0iIG9wZXJhdGlvbiB0aGVuIHJldHVybnNcbiAgICAgIG9yIHJhaXNlcyB3aGF0ZXZlciBpcyByZXR1cm5lZCBvciByYWlzZWQgYnkgdGhlXG4gICAgICAiX19taXNzaW5nX18oa2V5KSIgY2FsbC4gTm8gb3RoZXIgb3BlcmF0aW9ucyBvciBtZXRob2RzIGludm9rZVxuICAgICAgIl9fbWlzc2luZ19fKCkiLiBJZiAiX19taXNzaW5nX18oKSIgaXMgbm90IGRlZmluZWQsICJLZXlFcnJvciJcbiAgICAgIGlzIHJhaXNlZC4gIl9fbWlzc2luZ19fKCkiIG11c3QgYmUgYSBtZXRob2Q7IGl0IGNhbm5vdCBiZSBhblxuICAgICAgaW5zdGFuY2UgdmFyaWFibGU6XG5cbiAgICAgICAgID4+PiBjbGFzcyBDb3VudGVyKGRpY3QpOlxuICAgICAgICAgLi4uICAgICBkZWYgX19taXNzaW5nX18oc2VsZiwga2V5KTpcbiAgICAgICAgIC4uLiAgICAgICAgIHJldHVybiAwXG4gICAgICAgICA+Pj4gYyA9IENvdW50ZXIoKVxuICAgICAgICAgPj4+IGNbXCdyZWRcJ11cbiAgICAgICAgIDBcbiAgICAgICAgID4+PiBjW1wncmVkXCddICs9IDFcbiAgICAgICAgID4+PiBjW1wncmVkXCddXG4gICAgICAgICAxXG5cbiAgICAgIFRoZSBleGFtcGxlIGFib3ZlIHNob3dzIHBhcnQgb2YgdGhlIGltcGxlbWVudGF0aW9uIG9mXG4gICAgICAiY29sbGVjdGlvbnMuQ291bnRlciIuICBBIGRpZmZlcmVudCAiX19taXNzaW5nX18iIG1ldGhvZCBpcyB1c2VkXG4gICAgICBieSAiY29sbGVjdGlvbnMuZGVmYXVsdGRpY3QiLlxuXG4gICBkW2tleV0gPSB2YWx1ZVxuXG4gICAgICBTZXQgImRba2V5XSIgdG8gKnZhbHVlKi5cblxuICAgZGVsIGRba2V5XVxuXG4gICAgICBSZW1vdmUgImRba2V5XSIgZnJvbSAqZCouICBSYWlzZXMgYSAiS2V5RXJyb3IiIGlmICprZXkqIGlzIG5vdFxuICAgICAgaW4gdGhlIG1hcC5cblxuICAga2V5IGluIGRcblxuICAgICAgUmV0dXJuICJUcnVlIiBpZiAqZCogaGFzIGEga2V5ICprZXkqLCBlbHNlICJGYWxzZSIuXG5cbiAgIGtleSBub3QgaW4gZFxuXG4gICAgICBFcXVpdmFsZW50IHRvICJub3Qga2V5IGluIGQiLlxuXG4gICBpdGVyKGQpXG5cbiAgICAgIFJldHVybiBhbiBpdGVyYXRvciBvdmVyIHRoZSBrZXlzIG9mIHRoZSBkaWN0aW9uYXJ5LiAgVGhpcyBpcyBhXG4gICAgICBzaG9ydGN1dCBmb3IgIml0ZXIoZC5rZXlzKCkpIi5cblxuICAgY2xlYXIoKVxuXG4gICAgICBSZW1vdmUgYWxsIGl0ZW1zIGZyb20gdGhlIGRpY3Rpb25hcnkuXG5cbiAgIGNvcHkoKVxuXG4gICAgICBSZXR1cm4gYSBzaGFsbG93IGNvcHkgb2YgdGhlIGRpY3Rpb25hcnkuXG5cbiAgIGNsYXNzbWV0aG9kIGZyb21rZXlzKHNlcVssIHZhbHVlXSlcblxuICAgICAgQ3JlYXRlIGEgbmV3IGRpY3Rpb25hcnkgd2l0aCBrZXlzIGZyb20gKnNlcSogYW5kIHZhbHVlcyBzZXQgdG9cbiAgICAgICp2YWx1ZSouXG5cbiAgICAgICJmcm9ta2V5cygpIiBpcyBhIGNsYXNzIG1ldGhvZCB0aGF0IHJldHVybnMgYSBuZXcgZGljdGlvbmFyeS5cbiAgICAgICp2YWx1ZSogZGVmYXVsdHMgdG8gIk5vbmUiLlxuXG4gICBnZXQoa2V5WywgZGVmYXVsdF0pXG5cbiAgICAgIFJldHVybiB0aGUgdmFsdWUgZm9yICprZXkqIGlmICprZXkqIGlzIGluIHRoZSBkaWN0aW9uYXJ5LCBlbHNlXG4gICAgICAqZGVmYXVsdCouIElmICpkZWZhdWx0KiBpcyBub3QgZ2l2ZW4sIGl0IGRlZmF1bHRzIHRvICJOb25lIiwgc29cbiAgICAgIHRoYXQgdGhpcyBtZXRob2QgbmV2ZXIgcmFpc2VzIGEgIktleUVycm9yIi5cblxuICAgaXRlbXMoKVxuXG4gICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgZGljdGlvbmFyeVwncyBpdGVtcyAoIihrZXksIHZhbHVlKSJcbiAgICAgIHBhaXJzKS4gU2VlIHRoZSAqZG9jdW1lbnRhdGlvbiBvZiB2aWV3IG9iamVjdHMqLlxuXG4gICBrZXlzKClcblxuICAgICAgUmV0dXJuIGEgbmV3IHZpZXcgb2YgdGhlIGRpY3Rpb25hcnlcJ3Mga2V5cy4gIFNlZSB0aGVcbiAgICAgICpkb2N1bWVudGF0aW9uIG9mIHZpZXcgb2JqZWN0cyouXG5cbiAgIHBvcChrZXlbLCBkZWZhdWx0XSlcblxuICAgICAgSWYgKmtleSogaXMgaW4gdGhlIGRpY3Rpb25hcnksIHJlbW92ZSBpdCBhbmQgcmV0dXJuIGl0cyB2YWx1ZSxcbiAgICAgIGVsc2UgcmV0dXJuICpkZWZhdWx0Ki4gIElmICpkZWZhdWx0KiBpcyBub3QgZ2l2ZW4gYW5kICprZXkqIGlzXG4gICAgICBub3QgaW4gdGhlIGRpY3Rpb25hcnksIGEgIktleUVycm9yIiBpcyByYWlzZWQuXG5cbiAgIHBvcGl0ZW0oKVxuXG4gICAgICBSZW1vdmUgYW5kIHJldHVybiBhbiBhcmJpdHJhcnkgIihrZXksIHZhbHVlKSIgcGFpciBmcm9tIHRoZVxuICAgICAgZGljdGlvbmFyeS5cblxuICAgICAgInBvcGl0ZW0oKSIgaXMgdXNlZnVsIHRvIGRlc3RydWN0aXZlbHkgaXRlcmF0ZSBvdmVyIGFcbiAgICAgIGRpY3Rpb25hcnksIGFzIG9mdGVuIHVzZWQgaW4gc2V0IGFsZ29yaXRobXMuICBJZiB0aGUgZGljdGlvbmFyeVxuICAgICAgaXMgZW1wdHksIGNhbGxpbmcgInBvcGl0ZW0oKSIgcmFpc2VzIGEgIktleUVycm9yIi5cblxuICAgc2V0ZGVmYXVsdChrZXlbLCBkZWZhdWx0XSlcblxuICAgICAgSWYgKmtleSogaXMgaW4gdGhlIGRpY3Rpb25hcnksIHJldHVybiBpdHMgdmFsdWUuICBJZiBub3QsIGluc2VydFxuICAgICAgKmtleSogd2l0aCBhIHZhbHVlIG9mICpkZWZhdWx0KiBhbmQgcmV0dXJuICpkZWZhdWx0Ki4gICpkZWZhdWx0KlxuICAgICAgZGVmYXVsdHMgdG8gIk5vbmUiLlxuXG4gICB1cGRhdGUoW290aGVyXSlcblxuICAgICAgVXBkYXRlIHRoZSBkaWN0aW9uYXJ5IHdpdGggdGhlIGtleS92YWx1ZSBwYWlycyBmcm9tICpvdGhlciosXG4gICAgICBvdmVyd3JpdGluZyBleGlzdGluZyBrZXlzLiAgUmV0dXJuICJOb25lIi5cblxuICAgICAgInVwZGF0ZSgpIiBhY2NlcHRzIGVpdGhlciBhbm90aGVyIGRpY3Rpb25hcnkgb2JqZWN0IG9yIGFuXG4gICAgICBpdGVyYWJsZSBvZiBrZXkvdmFsdWUgcGFpcnMgKGFzIHR1cGxlcyBvciBvdGhlciBpdGVyYWJsZXMgb2ZcbiAgICAgIGxlbmd0aCB0d28pLiAgSWYga2V5d29yZCBhcmd1bWVudHMgYXJlIHNwZWNpZmllZCwgdGhlIGRpY3Rpb25hcnlcbiAgICAgIGlzIHRoZW4gdXBkYXRlZCB3aXRoIHRob3NlIGtleS92YWx1ZSBwYWlyczogImQudXBkYXRlKHJlZD0xLFxuICAgICAgYmx1ZT0yKSIuXG5cbiAgIHZhbHVlcygpXG5cbiAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSBkaWN0aW9uYXJ5XCdzIHZhbHVlcy4gIFNlZSB0aGVcbiAgICAgICpkb2N1bWVudGF0aW9uIG9mIHZpZXcgb2JqZWN0cyouXG5cbiAgIERpY3Rpb25hcmllcyBjb21wYXJlIGVxdWFsIGlmIGFuZCBvbmx5IGlmIHRoZXkgaGF2ZSB0aGUgc2FtZSAiKGtleSxcbiAgIHZhbHVlKSIgcGFpcnMuIE9yZGVyIGNvbXBhcmlzb25zIChcJzxcJywgXCc8PVwnLCBcJz49XCcsIFwnPlwnKSByYWlzZVxuICAgIlR5cGVFcnJvciIuXG5cblNlZSBhbHNvOiAidHlwZXMuTWFwcGluZ1Byb3h5VHlwZSIgY2FuIGJlIHVzZWQgdG8gY3JlYXRlIGEgcmVhZC1vbmx5XG4gIHZpZXcgb2YgYSAiZGljdCIuXG5cblxuRGljdGlvbmFyeSB2aWV3IG9iamVjdHNcbj09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBvYmplY3RzIHJldHVybmVkIGJ5ICJkaWN0LmtleXMoKSIsICJkaWN0LnZhbHVlcygpIiBhbmRcbiJkaWN0Lml0ZW1zKCkiIGFyZSAqdmlldyBvYmplY3RzKi4gIFRoZXkgcHJvdmlkZSBhIGR5bmFtaWMgdmlldyBvbiB0aGVcbmRpY3Rpb25hcnlcJ3MgZW50cmllcywgd2hpY2ggbWVhbnMgdGhhdCB3aGVuIHRoZSBkaWN0aW9uYXJ5IGNoYW5nZXMsXG50aGUgdmlldyByZWZsZWN0cyB0aGVzZSBjaGFuZ2VzLlxuXG5EaWN0aW9uYXJ5IHZpZXdzIGNhbiBiZSBpdGVyYXRlZCBvdmVyIHRvIHlpZWxkIHRoZWlyIHJlc3BlY3RpdmUgZGF0YSxcbmFuZCBzdXBwb3J0IG1lbWJlcnNoaXAgdGVzdHM6XG5cbmxlbihkaWN0dmlldylcblxuICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgZW50cmllcyBpbiB0aGUgZGljdGlvbmFyeS5cblxuaXRlcihkaWN0dmlldylcblxuICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgdGhlIGtleXMsIHZhbHVlcyBvciBpdGVtcyAocmVwcmVzZW50ZWQgYXNcbiAgIHR1cGxlcyBvZiAiKGtleSwgdmFsdWUpIikgaW4gdGhlIGRpY3Rpb25hcnkuXG5cbiAgIEtleXMgYW5kIHZhbHVlcyBhcmUgaXRlcmF0ZWQgb3ZlciBpbiBhbiBhcmJpdHJhcnkgb3JkZXIgd2hpY2ggaXNcbiAgIG5vbi1yYW5kb20sIHZhcmllcyBhY3Jvc3MgUHl0aG9uIGltcGxlbWVudGF0aW9ucywgYW5kIGRlcGVuZHMgb25cbiAgIHRoZSBkaWN0aW9uYXJ5XCdzIGhpc3Rvcnkgb2YgaW5zZXJ0aW9ucyBhbmQgZGVsZXRpb25zLiBJZiBrZXlzLFxuICAgdmFsdWVzIGFuZCBpdGVtcyB2aWV3cyBhcmUgaXRlcmF0ZWQgb3ZlciB3aXRoIG5vIGludGVydmVuaW5nXG4gICBtb2RpZmljYXRpb25zIHRvIHRoZSBkaWN0aW9uYXJ5LCB0aGUgb3JkZXIgb2YgaXRlbXMgd2lsbCBkaXJlY3RseVxuICAgY29ycmVzcG9uZC4gIFRoaXMgYWxsb3dzIHRoZSBjcmVhdGlvbiBvZiAiKHZhbHVlLCBrZXkpIiBwYWlycyB1c2luZ1xuICAgInppcCgpIjogInBhaXJzID0gemlwKGQudmFsdWVzKCksIGQua2V5cygpKSIuICBBbm90aGVyIHdheSB0b1xuICAgY3JlYXRlIHRoZSBzYW1lIGxpc3QgaXMgInBhaXJzID0gWyh2LCBrKSBmb3IgKGssIHYpIGluIGQuaXRlbXMoKV0iLlxuXG4gICBJdGVyYXRpbmcgdmlld3Mgd2hpbGUgYWRkaW5nIG9yIGRlbGV0aW5nIGVudHJpZXMgaW4gdGhlIGRpY3Rpb25hcnlcbiAgIG1heSByYWlzZSBhICJSdW50aW1lRXJyb3IiIG9yIGZhaWwgdG8gaXRlcmF0ZSBvdmVyIGFsbCBlbnRyaWVzLlxuXG54IGluIGRpY3R2aWV3XG5cbiAgIFJldHVybiAiVHJ1ZSIgaWYgKngqIGlzIGluIHRoZSB1bmRlcmx5aW5nIGRpY3Rpb25hcnlcJ3Mga2V5cywgdmFsdWVzXG4gICBvciBpdGVtcyAoaW4gdGhlIGxhdHRlciBjYXNlLCAqeCogc2hvdWxkIGJlIGEgIihrZXksIHZhbHVlKSJcbiAgIHR1cGxlKS5cblxuS2V5cyB2aWV3cyBhcmUgc2V0LWxpa2Ugc2luY2UgdGhlaXIgZW50cmllcyBhcmUgdW5pcXVlIGFuZCBoYXNoYWJsZS5cbklmIGFsbCB2YWx1ZXMgYXJlIGhhc2hhYmxlLCBzbyB0aGF0ICIoa2V5LCB2YWx1ZSkiIHBhaXJzIGFyZSB1bmlxdWVcbmFuZCBoYXNoYWJsZSwgdGhlbiB0aGUgaXRlbXMgdmlldyBpcyBhbHNvIHNldC1saWtlLiAgKFZhbHVlcyB2aWV3cyBhcmVcbm5vdCB0cmVhdGVkIGFzIHNldC1saWtlIHNpbmNlIHRoZSBlbnRyaWVzIGFyZSBnZW5lcmFsbHkgbm90IHVuaXF1ZS4pXG5Gb3Igc2V0LWxpa2Ugdmlld3MsIGFsbCBvZiB0aGUgb3BlcmF0aW9ucyBkZWZpbmVkIGZvciB0aGUgYWJzdHJhY3RcbmJhc2UgY2xhc3MgImNvbGxlY3Rpb25zLmFiYy5TZXQiIGFyZSBhdmFpbGFibGUgKGZvciBleGFtcGxlLCAiPT0iLFxuIjwiLCBvciAiXiIpLlxuXG5BbiBleGFtcGxlIG9mIGRpY3Rpb25hcnkgdmlldyB1c2FnZTpcblxuICAgPj4+IGRpc2hlcyA9IHtcJ2VnZ3NcJzogMiwgXCdzYXVzYWdlXCc6IDEsIFwnYmFjb25cJzogMSwgXCdzcGFtXCc6IDUwMH1cbiAgID4+PiBrZXlzID0gZGlzaGVzLmtleXMoKVxuICAgPj4+IHZhbHVlcyA9IGRpc2hlcy52YWx1ZXMoKVxuXG4gICA+Pj4gIyBpdGVyYXRpb25cbiAgID4+PiBuID0gMFxuICAgPj4+IGZvciB2YWwgaW4gdmFsdWVzOlxuICAgLi4uICAgICBuICs9IHZhbFxuICAgPj4+IHByaW50KG4pXG4gICA1MDRcblxuICAgPj4+ICMga2V5cyBhbmQgdmFsdWVzIGFyZSBpdGVyYXRlZCBvdmVyIGluIHRoZSBzYW1lIG9yZGVyXG4gICA+Pj4gbGlzdChrZXlzKVxuICAgW1wnZWdnc1wnLCBcJ2JhY29uXCcsIFwnc2F1c2FnZVwnLCBcJ3NwYW1cJ11cbiAgID4+PiBsaXN0KHZhbHVlcylcbiAgIFsyLCAxLCAxLCA1MDBdXG5cbiAgID4+PiAjIHZpZXcgb2JqZWN0cyBhcmUgZHluYW1pYyBhbmQgcmVmbGVjdCBkaWN0IGNoYW5nZXNcbiAgID4+PiBkZWwgZGlzaGVzW1wnZWdnc1wnXVxuICAgPj4+IGRlbCBkaXNoZXNbXCdzYXVzYWdlXCddXG4gICA+Pj4gbGlzdChrZXlzKVxuICAgW1wnc3BhbVwnLCBcJ2JhY29uXCddXG5cbiAgID4+PiAjIHNldCBvcGVyYXRpb25zXG4gICA+Pj4ga2V5cyAmIHtcJ2VnZ3NcJywgXCdiYWNvblwnLCBcJ3NhbGFkXCd9XG4gICB7XCdiYWNvblwnfVxuICAgPj4+IGtleXMgXiB7XCdzYXVzYWdlXCcsIFwnanVpY2VcJ31cbiAgIHtcJ2p1aWNlXCcsIFwnc2F1c2FnZVwnLCBcJ2JhY29uXCcsIFwnc3BhbVwnfVxuJywKLSAndHlwZXNtZXRob2RzJzogdSdcbk1ldGhvZHNcbioqKioqKipcblxuTWV0aG9kcyBhcmUgZnVuY3Rpb25zIHRoYXQgYXJlIGNhbGxlZCB1c2luZyB0aGUgYXR0cmlidXRlIG5vdGF0aW9uLlxuVGhlcmUgYXJlIHR3byBmbGF2b3JzOiBidWlsdC1pbiBtZXRob2RzIChzdWNoIGFzICJhcHBlbmQoKSIgb24gbGlzdHMpXG5hbmQgY2xhc3MgaW5zdGFuY2UgbWV0aG9kcy4gIEJ1aWx0LWluIG1ldGhvZHMgYXJlIGRlc2NyaWJlZCB3aXRoIHRoZVxudHlwZXMgdGhhdCBzdXBwb3J0IHRoZW0uXG5cbklmIHlvdSBhY2Nlc3MgYSBtZXRob2QgKGEgZnVuY3Rpb24gZGVmaW5lZCBpbiBhIGNsYXNzIG5hbWVzcGFjZSlcbnRocm91Z2ggYW4gaW5zdGFuY2UsIHlvdSBnZXQgYSBzcGVjaWFsIG9iamVjdDogYSAqYm91bmQgbWV0aG9kKiAoYWxzb1xuY2FsbGVkICppbnN0YW5jZSBtZXRob2QqKSBvYmplY3QuIFdoZW4gY2FsbGVkLCBpdCB3aWxsIGFkZCB0aGUgInNlbGYiXG5hcmd1bWVudCB0byB0aGUgYXJndW1lbnQgbGlzdC4gIEJvdW5kIG1ldGhvZHMgaGF2ZSB0d28gc3BlY2lhbCByZWFkLVxub25seSBhdHRyaWJ1dGVzOiAibS5fX3NlbGZfXyIgaXMgdGhlIG9iamVjdCBvbiB3aGljaCB0aGUgbWV0aG9kXG5vcGVyYXRlcywgYW5kICJtLl9fZnVuY19fIiBpcyB0aGUgZnVuY3Rpb24gaW1wbGVtZW50aW5nIHRoZSBtZXRob2QuXG5DYWxsaW5nICJtKGFyZy0xLCBhcmctMiwgLi4uLCBhcmctbikiIGlzIGNvbXBsZXRlbHkgZXF1aXZhbGVudCB0b1xuY2FsbGluZyAibS5fX2Z1bmNfXyhtLl9fc2VsZl9fLCBhcmctMSwgYXJnLTIsIC4uLiwgYXJnLW4pIi5cblxuTGlrZSBmdW5jdGlvbiBvYmplY3RzLCBib3VuZCBtZXRob2Qgb2JqZWN0cyBzdXBwb3J0IGdldHRpbmcgYXJiaXRyYXJ5XG5hdHRyaWJ1dGVzLiAgSG93ZXZlciwgc2luY2UgbWV0aG9kIGF0dHJpYnV0ZXMgYXJlIGFjdHVhbGx5IHN0b3JlZCBvblxudGhlIHVuZGVybHlpbmcgZnVuY3Rpb24gb2JqZWN0ICgibWV0aC5fX2Z1bmNfXyIpLCBzZXR0aW5nIG1ldGhvZFxuYXR0cmlidXRlcyBvbiBib3VuZCBtZXRob2RzIGlzIGRpc2FsbG93ZWQuICBBdHRlbXB0aW5nIHRvIHNldCBhblxuYXR0cmlidXRlIG9uIGEgbWV0aG9kIHJlc3VsdHMgaW4gYW4gIkF0dHJpYnV0ZUVycm9yIiBiZWluZyByYWlzZWQuICBJblxub3JkZXIgdG8gc2V0IGEgbWV0aG9kIGF0dHJpYnV0ZSwgeW91IG5lZWQgdG8gZXhwbGljaXRseSBzZXQgaXQgb24gdGhlXG51bmRlcmx5aW5nIGZ1bmN0aW9uIG9iamVjdDpcblxuICAgPj4+IGNsYXNzIEM6XG4gICAuLi4gICAgIGRlZiBtZXRob2Qoc2VsZik6XG4gICAuLi4gICAgICAgICBwYXNzXG4gICAuLi5cbiAgID4+PiBjID0gQygpXG4gICA+Pj4gYy5tZXRob2Qud2hvYW1pID0gXCdteSBuYW1lIGlzIG1ldGhvZFwnICAjIGNhblwndCBzZXQgb24gdGhlIG1ldGhvZFxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPlxuICAgQXR0cmlidXRlRXJyb3I6IFwnbWV0aG9kXCcgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgXCd3aG9hbWlcJ1xuICAgPj4+IGMubWV0aG9kLl9fZnVuY19fLndob2FtaSA9IFwnbXkgbmFtZSBpcyBtZXRob2RcJ1xuICAgPj4+IGMubWV0aG9kLndob2FtaVxuICAgXCdteSBuYW1lIGlzIG1ldGhvZFwnXG5cblNlZSAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbicsCi0gJ3R5cGVzbW9kdWxlcyc6IHUnXG5Nb2R1bGVzXG4qKioqKioqXG5cblRoZSBvbmx5IHNwZWNpYWwgb3BlcmF0aW9uIG9uIGEgbW9kdWxlIGlzIGF0dHJpYnV0ZSBhY2Nlc3M6ICJtLm5hbWUiLFxud2hlcmUgKm0qIGlzIGEgbW9kdWxlIGFuZCAqbmFtZSogYWNjZXNzZXMgYSBuYW1lIGRlZmluZWQgaW4gKm0qXCdzXG5zeW1ib2wgdGFibGUuIE1vZHVsZSBhdHRyaWJ1dGVzIGNhbiBiZSBhc3NpZ25lZCB0by4gIChOb3RlIHRoYXQgdGhlXG4iaW1wb3J0IiBzdGF0ZW1lbnQgaXMgbm90LCBzdHJpY3RseSBzcGVha2luZywgYW4gb3BlcmF0aW9uIG9uIGEgbW9kdWxlXG5vYmplY3Q7ICJpbXBvcnQgZm9vIiBkb2VzIG5vdCByZXF1aXJlIGEgbW9kdWxlIG9iamVjdCBuYW1lZCAqZm9vKiB0b1xuZXhpc3QsIHJhdGhlciBpdCByZXF1aXJlcyBhbiAoZXh0ZXJuYWwpICpkZWZpbml0aW9uKiBmb3IgYSBtb2R1bGVcbm5hbWVkICpmb28qIHNvbWV3aGVyZS4pXG5cbkEgc3BlY2lhbCBhdHRyaWJ1dGUgb2YgZXZlcnkgbW9kdWxlIGlzICJfX2RpY3RfXyIuIFRoaXMgaXMgdGhlXG5kaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIG1vZHVsZVwncyBzeW1ib2wgdGFibGUuIE1vZGlmeWluZyB0aGlzXG5kaWN0aW9uYXJ5IHdpbGwgYWN0dWFsbHkgY2hhbmdlIHRoZSBtb2R1bGVcJ3Mgc3ltYm9sIHRhYmxlLCBidXQgZGlyZWN0XG5hc3NpZ25tZW50IHRvIHRoZSAiX19kaWN0X18iIGF0dHJpYnV0ZSBpcyBub3QgcG9zc2libGUgKHlvdSBjYW4gd3JpdGVcbiJtLl9fZGljdF9fW1wnYVwnXSA9IDEiLCB3aGljaCBkZWZpbmVzICJtLmEiIHRvIGJlICIxIiwgYnV0IHlvdSBjYW5cJ3RcbndyaXRlICJtLl9fZGljdF9fID0ge30iKS4gIE1vZGlmeWluZyAiX19kaWN0X18iIGRpcmVjdGx5IGlzIG5vdFxucmVjb21tZW5kZWQuXG5cbk1vZHVsZXMgYnVpbHQgaW50byB0aGUgaW50ZXJwcmV0ZXIgYXJlIHdyaXR0ZW4gbGlrZSB0aGlzOiAiPG1vZHVsZVxuXCdzeXNcJyAoYnVpbHQtaW4pPiIuICBJZiBsb2FkZWQgZnJvbSBhIGZpbGUsIHRoZXkgYXJlIHdyaXR0ZW4gYXNcbiI8bW9kdWxlIFwnb3NcJyBmcm9tIFwnL3Vzci9sb2NhbC9saWIvcHl0aG9uWC5ZL29zLnB5Y1wnPiIuXG4nLAotICd0eXBlc3NlcSc6IHUnXG5TZXF1ZW5jZSBUeXBlcyAtLS0gImxpc3QiLCAidHVwbGUiLCAicmFuZ2UiXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cblRoZXJlIGFyZSB0aHJlZSBiYXNpYyBzZXF1ZW5jZSB0eXBlczogbGlzdHMsIHR1cGxlcywgYW5kIHJhbmdlXG5vYmplY3RzLiBBZGRpdGlvbmFsIHNlcXVlbmNlIHR5cGVzIHRhaWxvcmVkIGZvciBwcm9jZXNzaW5nIG9mICpiaW5hcnlcbmRhdGEqIGFuZCAqdGV4dCBzdHJpbmdzKiBhcmUgZGVzY3JpYmVkIGluIGRlZGljYXRlZCBzZWN0aW9ucy5cblxuXG5Db21tb24gU2VxdWVuY2UgT3BlcmF0aW9uc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIG9wZXJhdGlvbnMgaW4gdGhlIGZvbGxvd2luZyB0YWJsZSBhcmUgc3VwcG9ydGVkIGJ5IG1vc3Qgc2VxdWVuY2VcbnR5cGVzLCBib3RoIG11dGFibGUgYW5kIGltbXV0YWJsZS4gVGhlICJjb2xsZWN0aW9ucy5hYmMuU2VxdWVuY2UiIEFCQ1xuaXMgcHJvdmlkZWQgdG8gbWFrZSBpdCBlYXNpZXIgdG8gY29ycmVjdGx5IGltcGxlbWVudCB0aGVzZSBvcGVyYXRpb25zXG5vbiBjdXN0b20gc2VxdWVuY2UgdHlwZXMuXG5cblRoaXMgdGFibGUgbGlzdHMgdGhlIHNlcXVlbmNlIG9wZXJhdGlvbnMgc29ydGVkIGluIGFzY2VuZGluZyBwcmlvcml0eS5cbkluIHRoZSB0YWJsZSwgKnMqIGFuZCAqdCogYXJlIHNlcXVlbmNlcyBvZiB0aGUgc2FtZSB0eXBlLCAqbiosICppKixcbipqKiBhbmQgKmsqIGFyZSBpbnRlZ2VycyBhbmQgKngqIGlzIGFuIGFyYml0cmFyeSBvYmplY3QgdGhhdCBtZWV0cyBhbnlcbnR5cGUgYW5kIHZhbHVlIHJlc3RyaWN0aW9ucyBpbXBvc2VkIGJ5ICpzKi5cblxuVGhlICJpbiIgYW5kICJub3QgaW4iIG9wZXJhdGlvbnMgaGF2ZSB0aGUgc2FtZSBwcmlvcml0aWVzIGFzIHRoZVxuY29tcGFyaXNvbiBvcGVyYXRpb25zLiBUaGUgIisiIChjb25jYXRlbmF0aW9uKSBhbmQgIioiIChyZXBldGl0aW9uKVxub3BlcmF0aW9ucyBoYXZlIHRoZSBzYW1lIHByaW9yaXR5IGFzIHRoZSBjb3JyZXNwb25kaW5nIG51bWVyaWNcbm9wZXJhdGlvbnMuXG5cbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBPcGVyYXRpb24gICAgICAgICAgICAgICAgICB8IFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICAgICB8XG4rPT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PStcbnwgInggaW4gcyIgICAgICAgICAgICAgICAgICAgfCAiVHJ1ZSIgaWYgYW4gaXRlbSBvZiAqcyogaXMgICAgICB8ICgxKSAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGVxdWFsIHRvICp4KiwgZWxzZSAiRmFsc2UiICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgInggbm90IGluIHMiICAgICAgICAgICAgICAgfCAiRmFsc2UiIGlmIGFuIGl0ZW0gb2YgKnMqIGlzICAgICB8ICgxKSAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGVxdWFsIHRvICp4KiwgZWxzZSAiVHJ1ZSIgICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgInMgKyB0IiAgICAgICAgICAgICAgICAgICAgfCB0aGUgY29uY2F0ZW5hdGlvbiBvZiAqcyogYW5kICp0KiB8ICg2KSg3KSAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58ICJzICogbiIgb3IgIm4gKiBzIiAgICAgICAgIHwgZXF1aXZhbGVudCB0byBhZGRpbmcgKnMqIHRvICAgICAgfCAoMikoNykgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpdHNlbGYgKm4qIHRpbWVzICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58ICJzW2ldIiAgICAgICAgICAgICAgICAgICAgIHwgKmkqdGggaXRlbSBvZiAqcyosIG9yaWdpbiAwICAgICAgfCAoMykgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCAic1tpOmpdIiAgICAgICAgICAgICAgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogICAgIHwgKDMpKDQpICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgInNbaTpqOmtdIiAgICAgICAgICAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqICAgICB8ICgzKSg1KSAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdpdGggc3RlcCAqayogICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgImxlbihzKSIgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgKnMqICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58ICJtaW4ocykiICAgICAgICAgICAgICAgICAgIHwgc21hbGxlc3QgaXRlbSBvZiAqcyogICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCAibWF4KHMpIiAgICAgICAgICAgICAgICAgICB8IGxhcmdlc3QgaXRlbSBvZiAqcyogICAgICAgICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgInMuaW5kZXgoeFssIGlbLCBqXV0pIiAgICAgfCBpbmRleCBvZiB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiB8ICg4KSAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp4KiBpbiAqcyogKGF0IG9yIGFmdGVyIGluZGV4ICAgIHwgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKmkqIGFuZCBiZWZvcmUgaW5kZXggKmoqKSAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCAicy5jb3VudCh4KSIgICAgICAgICAgICAgICB8IHRvdGFsIG51bWJlciBvZiBvY2N1cnJlbmNlcyBvZiAgIHwgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKngqIGluICpzKiAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xuXG5TZXF1ZW5jZXMgb2YgdGhlIHNhbWUgdHlwZSBhbHNvIHN1cHBvcnQgY29tcGFyaXNvbnMuICBJbiBwYXJ0aWN1bGFyLFxudHVwbGVzIGFuZCBsaXN0cyBhcmUgY29tcGFyZWQgbGV4aWNvZ3JhcGhpY2FsbHkgYnkgY29tcGFyaW5nXG5jb3JyZXNwb25kaW5nIGVsZW1lbnRzLiBUaGlzIG1lYW5zIHRoYXQgdG8gY29tcGFyZSBlcXVhbCwgZXZlcnlcbmVsZW1lbnQgbXVzdCBjb21wYXJlIGVxdWFsIGFuZCB0aGUgdHdvIHNlcXVlbmNlcyBtdXN0IGJlIG9mIHRoZSBzYW1lXG50eXBlIGFuZCBoYXZlIHRoZSBzYW1lIGxlbmd0aC4gIChGb3IgZnVsbCBkZXRhaWxzIHNlZSAqQ29tcGFyaXNvbnMqIGluXG50aGUgbGFuZ3VhZ2UgcmVmZXJlbmNlLilcblxuTm90ZXM6XG5cbjEuIFdoaWxlIHRoZSAiaW4iIGFuZCAibm90IGluIiBvcGVyYXRpb25zIGFyZSB1c2VkIG9ubHkgZm9yIHNpbXBsZVxuICAgY29udGFpbm1lbnQgdGVzdGluZyBpbiB0aGUgZ2VuZXJhbCBjYXNlLCBzb21lIHNwZWNpYWxpc2VkIHNlcXVlbmNlc1xuICAgKHN1Y2ggYXMgInN0ciIsICJieXRlcyIgYW5kICJieXRlYXJyYXkiKSBhbHNvIHVzZSB0aGVtIGZvclxuICAgc3Vic2VxdWVuY2UgdGVzdGluZzpcblxuICAgICAgPj4+ICJnZyIgaW4gImVnZ3MiXG4gICAgICBUcnVlXG5cbjIuIFZhbHVlcyBvZiAqbiogbGVzcyB0aGFuICIwIiBhcmUgdHJlYXRlZCBhcyAiMCIgKHdoaWNoIHlpZWxkcyBhblxuICAgZW1wdHkgc2VxdWVuY2Ugb2YgdGhlIHNhbWUgdHlwZSBhcyAqcyopLiAgTm90ZSB0aGF0IGl0ZW1zIGluIHRoZVxuICAgc2VxdWVuY2UgKnMqIGFyZSBub3QgY29waWVkOyB0aGV5IGFyZSByZWZlcmVuY2VkIG11bHRpcGxlIHRpbWVzLlxuICAgVGhpcyBvZnRlbiBoYXVudHMgbmV3IFB5dGhvbiBwcm9ncmFtbWVyczsgY29uc2lkZXI6XG5cbiAgICAgID4+PiBsaXN0cyA9IFtbXV0gKiAzXG4gICAgICA+Pj4gbGlzdHNcbiAgICAgIFtbXSwgW10sIFtdXVxuICAgICAgPj4+IGxpc3RzWzBdLmFwcGVuZCgzKVxuICAgICAgPj4+IGxpc3RzXG4gICAgICBbWzNdLCBbM10sIFszXV1cblxuICAgV2hhdCBoYXMgaGFwcGVuZWQgaXMgdGhhdCAiW1tdXSIgaXMgYSBvbmUtZWxlbWVudCBsaXN0IGNvbnRhaW5pbmdcbiAgIGFuIGVtcHR5IGxpc3QsIHNvIGFsbCB0aHJlZSBlbGVtZW50cyBvZiAiW1tdXSAqIDMiIGFyZSByZWZlcmVuY2VzXG4gICB0byB0aGlzIHNpbmdsZSBlbXB0eSBsaXN0LiAgTW9kaWZ5aW5nIGFueSBvZiB0aGUgZWxlbWVudHMgb2ZcbiAgICJsaXN0cyIgbW9kaWZpZXMgdGhpcyBzaW5nbGUgbGlzdC4gWW91IGNhbiBjcmVhdGUgYSBsaXN0IG9mXG4gICBkaWZmZXJlbnQgbGlzdHMgdGhpcyB3YXk6XG5cbiAgICAgID4+PiBsaXN0cyA9IFtbXSBmb3IgaSBpbiByYW5nZSgzKV1cbiAgICAgID4+PiBsaXN0c1swXS5hcHBlbmQoMylcbiAgICAgID4+PiBsaXN0c1sxXS5hcHBlbmQoNSlcbiAgICAgID4+PiBsaXN0c1syXS5hcHBlbmQoNylcbiAgICAgID4+PiBsaXN0c1xuICAgICAgW1szXSwgWzVdLCBbN11dXG5cbiAgIEZ1cnRoZXIgZXhwbGFuYXRpb24gaXMgYXZhaWxhYmxlIGluIHRoZSBGQVEgZW50cnkgKkhvdyBkbyBJIGNyZWF0ZVxuICAgYSBtdWx0aWRpbWVuc2lvbmFsIGxpc3Q/Ki5cblxuMy4gSWYgKmkqIG9yICpqKiBpcyBuZWdhdGl2ZSwgdGhlIGluZGV4IGlzIHJlbGF0aXZlIHRvIHRoZSBlbmQgb2ZcbiAgIHRoZSBzdHJpbmc6ICJsZW4ocykgKyBpIiBvciAibGVuKHMpICsgaiIgaXMgc3Vic3RpdHV0ZWQuICBCdXQgbm90ZVxuICAgdGhhdCAiLTAiIGlzIHN0aWxsICIwIi5cblxuNC4gVGhlIHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogaXMgZGVmaW5lZCBhcyB0aGUgc2VxdWVuY2Ugb2ZcbiAgIGl0ZW1zIHdpdGggaW5kZXggKmsqIHN1Y2ggdGhhdCAiaSA8PSBrIDwgaiIuICBJZiAqaSogb3IgKmoqIGlzXG4gICBncmVhdGVyIHRoYW4gImxlbihzKSIsIHVzZSAibGVuKHMpIi4gIElmICppKiBpcyBvbWl0dGVkIG9yICJOb25lIixcbiAgIHVzZSAiMCIuICBJZiAqaiogaXMgb21pdHRlZCBvciAiTm9uZSIsIHVzZSAibGVuKHMpIi4gIElmICppKiBpc1xuICAgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICpqKiwgdGhlIHNsaWNlIGlzIGVtcHR5LlxuXG41LiBUaGUgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiB3aXRoIHN0ZXAgKmsqIGlzIGRlZmluZWQgYXMgdGhlXG4gICBzZXF1ZW5jZSBvZiBpdGVtcyB3aXRoIGluZGV4ICAieCA9IGkgKyBuKmsiIHN1Y2ggdGhhdCAiMCA8PSBuIDxcbiAgIChqLWkpL2siLiAgSW4gb3RoZXIgd29yZHMsIHRoZSBpbmRpY2VzIGFyZSAiaSIsICJpK2siLCAiaSsyKmsiLFxuICAgImkrMyprIiBhbmQgc28gb24sIHN0b3BwaW5nIHdoZW4gKmoqIGlzIHJlYWNoZWQgKGJ1dCBuZXZlclxuICAgaW5jbHVkaW5nICpqKikuICBJZiAqaSogb3IgKmoqIGlzIGdyZWF0ZXIgdGhhbiAibGVuKHMpIiwgdXNlXG4gICAibGVuKHMpIi4gIElmICppKiBvciAqaiogYXJlIG9taXR0ZWQgb3IgIk5vbmUiLCB0aGV5IGJlY29tZSAiZW5kIlxuICAgdmFsdWVzICh3aGljaCBlbmQgZGVwZW5kcyBvbiB0aGUgc2lnbiBvZiAqayopLiAgTm90ZSwgKmsqIGNhbm5vdCBiZVxuICAgemVyby4gSWYgKmsqIGlzICJOb25lIiwgaXQgaXMgdHJlYXRlZCBsaWtlICIxIi5cblxuNi4gQ29uY2F0ZW5hdGluZyBpbW11dGFibGUgc2VxdWVuY2VzIGFsd2F5cyByZXN1bHRzIGluIGEgbmV3XG4gICBvYmplY3QuIFRoaXMgbWVhbnMgdGhhdCBidWlsZGluZyB1cCBhIHNlcXVlbmNlIGJ5IHJlcGVhdGVkXG4gICBjb25jYXRlbmF0aW9uIHdpbGwgaGF2ZSBhIHF1YWRyYXRpYyBydW50aW1lIGNvc3QgaW4gdGhlIHRvdGFsXG4gICBzZXF1ZW5jZSBsZW5ndGguIFRvIGdldCBhIGxpbmVhciBydW50aW1lIGNvc3QsIHlvdSBtdXN0IHN3aXRjaCB0b1xuICAgb25lIG9mIHRoZSBhbHRlcm5hdGl2ZXMgYmVsb3c6XG5cbiAgICogaWYgY29uY2F0ZW5hdGluZyAic3RyIiBvYmplY3RzLCB5b3UgY2FuIGJ1aWxkIGEgbGlzdCBhbmQgdXNlXG4gICAgICJzdHIuam9pbigpIiBhdCB0aGUgZW5kIG9yIGVsc2Ugd3JpdGUgdG8gYW4gImlvLlN0cmluZ0lPIlxuICAgICBpbnN0YW5jZSBhbmQgcmV0cmlldmUgaXRzIHZhbHVlIHdoZW4gY29tcGxldGVcblxuICAgKiBpZiBjb25jYXRlbmF0aW5nICJieXRlcyIgb2JqZWN0cywgeW91IGNhbiBzaW1pbGFybHkgdXNlXG4gICAgICJieXRlcy5qb2luKCkiIG9yICJpby5CeXRlc0lPIiwgb3IgeW91IGNhbiBkbyBpbi1wbGFjZVxuICAgICBjb25jYXRlbmF0aW9uIHdpdGggYSAiYnl0ZWFycmF5IiBvYmplY3QuICAiYnl0ZWFycmF5IiBvYmplY3RzIGFyZVxuICAgICBtdXRhYmxlIGFuZCBoYXZlIGFuIGVmZmljaWVudCBvdmVyYWxsb2NhdGlvbiBtZWNoYW5pc21cblxuICAgKiBpZiBjb25jYXRlbmF0aW5nICJ0dXBsZSIgb2JqZWN0cywgZXh0ZW5kIGEgImxpc3QiIGluc3RlYWRcblxuICAgKiBmb3Igb3RoZXIgdHlwZXMsIGludmVzdGlnYXRlIHRoZSByZWxldmFudCBjbGFzcyBkb2N1bWVudGF0aW9uXG5cbjcuIFNvbWUgc2VxdWVuY2UgdHlwZXMgKHN1Y2ggYXMgInJhbmdlIikgb25seSBzdXBwb3J0IGl0ZW1cbiAgIHNlcXVlbmNlcyB0aGF0IGZvbGxvdyBzcGVjaWZpYyBwYXR0ZXJucywgYW5kIGhlbmNlIGRvblwndCBzdXBwb3J0XG4gICBzZXF1ZW5jZSBjb25jYXRlbmF0aW9uIG9yIHJlcGV0aXRpb24uXG5cbjguICJpbmRleCIgcmFpc2VzICJWYWx1ZUVycm9yIiB3aGVuICp4KiBpcyBub3QgZm91bmQgaW4gKnMqLiBXaGVuXG4gICBzdXBwb3J0ZWQsIHRoZSBhZGRpdGlvbmFsIGFyZ3VtZW50cyB0byB0aGUgaW5kZXggbWV0aG9kIGFsbG93XG4gICBlZmZpY2llbnQgc2VhcmNoaW5nIG9mIHN1YnNlY3Rpb25zIG9mIHRoZSBzZXF1ZW5jZS4gUGFzc2luZyB0aGVcbiAgIGV4dHJhIGFyZ3VtZW50cyBpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG8gdXNpbmcgInNbaTpqXS5pbmRleCh4KSIsXG4gICBvbmx5IHdpdGhvdXQgY29weWluZyBhbnkgZGF0YSBhbmQgd2l0aCB0aGUgcmV0dXJuZWQgaW5kZXggYmVpbmdcbiAgIHJlbGF0aXZlIHRvIHRoZSBzdGFydCBvZiB0aGUgc2VxdWVuY2UgcmF0aGVyIHRoYW4gdGhlIHN0YXJ0IG9mIHRoZVxuICAgc2xpY2UuXG5cblxuSW1tdXRhYmxlIFNlcXVlbmNlIFR5cGVzXG49PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIG9ubHkgb3BlcmF0aW9uIHRoYXQgaW1tdXRhYmxlIHNlcXVlbmNlIHR5cGVzIGdlbmVyYWxseSBpbXBsZW1lbnRcbnRoYXQgaXMgbm90IGFsc28gaW1wbGVtZW50ZWQgYnkgbXV0YWJsZSBzZXF1ZW5jZSB0eXBlcyBpcyBzdXBwb3J0IGZvclxudGhlICJoYXNoKCkiIGJ1aWx0LWluLlxuXG5UaGlzIHN1cHBvcnQgYWxsb3dzIGltbXV0YWJsZSBzZXF1ZW5jZXMsIHN1Y2ggYXMgInR1cGxlIiBpbnN0YW5jZXMsIHRvXG5iZSB1c2VkIGFzICJkaWN0IiBrZXlzIGFuZCBzdG9yZWQgaW4gInNldCIgYW5kICJmcm96ZW5zZXQiIGluc3RhbmNlcy5cblxuQXR0ZW1wdGluZyB0byBoYXNoIGFuIGltbXV0YWJsZSBzZXF1ZW5jZSB0aGF0IGNvbnRhaW5zIHVuaGFzaGFibGVcbnZhbHVlcyB3aWxsIHJlc3VsdCBpbiAiVHlwZUVycm9yIi5cblxuXG5NdXRhYmxlIFNlcXVlbmNlIFR5cGVzXG49PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBvcGVyYXRpb25zIGluIHRoZSBmb2xsb3dpbmcgdGFibGUgYXJlIGRlZmluZWQgb24gbXV0YWJsZSBzZXF1ZW5jZVxudHlwZXMuIFRoZSAiY29sbGVjdGlvbnMuYWJjLk11dGFibGVTZXF1ZW5jZSIgQUJDIGlzIHByb3ZpZGVkIHRvIG1ha2Vcbml0IGVhc2llciB0byBjb3JyZWN0bHkgaW1wbGVtZW50IHRoZXNlIG9wZXJhdGlvbnMgb24gY3VzdG9tIHNlcXVlbmNlXG50eXBlcy5cblxuSW4gdGhlIHRhYmxlICpzKiBpcyBhbiBpbnN0YW5jZSBvZiBhIG11dGFibGUgc2VxdWVuY2UgdHlwZSwgKnQqIGlzIGFueVxuaXRlcmFibGUgb2JqZWN0IGFuZCAqeCogaXMgYW4gYXJiaXRyYXJ5IG9iamVjdCB0aGF0IG1lZXRzIGFueSB0eXBlIGFuZFxudmFsdWUgcmVzdHJpY3Rpb25zIGltcG9zZWQgYnkgKnMqIChmb3IgZXhhbXBsZSwgImJ5dGVhcnJheSIgb25seVxuYWNjZXB0cyBpbnRlZ2VycyB0aGF0IG1lZXQgdGhlIHZhbHVlIHJlc3RyaWN0aW9uICIwIDw9IHggPD0gMjU1IikuXG5cbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBPcGVyYXRpb24gICAgICAgICAgICAgICAgICAgICAgfCBSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgICAgICAgICAgICAgICB8XG4rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PStcbnwgInNbaV0gPSB4IiAgICAgICAgICAgICAgICAgICAgIHwgaXRlbSAqaSogb2YgKnMqIGlzIHJlcGxhY2VkIGJ5ICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqeCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInNbaTpqXSA9IHQiICAgICAgICAgICAgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiBpcyAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBsYWNlZCBieSB0aGUgY29udGVudHMgb2YgdGhlICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGl0ZXJhYmxlICp0KiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiZGVsIHNbaTpqXSIgICAgICAgICAgICAgICAgICAgfCBzYW1lIGFzICJzW2k6al0gPSBbXSIgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInNbaTpqOmtdID0gdCIgICAgICAgICAgICAgICAgIHwgdGhlIGVsZW1lbnRzIG9mICJzW2k6ajprXSIgYXJlICAgfCAoMSkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBsYWNlZCBieSB0aG9zZSBvZiAqdCogICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgImRlbCBzW2k6ajprXSIgICAgICAgICAgICAgICAgIHwgcmVtb3ZlcyB0aGUgZWxlbWVudHMgb2YgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAic1tpOmo6a10iIGZyb20gdGhlIGxpc3QgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMuYXBwZW5kKHgpIiAgICAgICAgICAgICAgICAgIHwgYXBwZW5kcyAqeCogdG8gdGhlIGVuZCBvZiB0aGUgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzZXF1ZW5jZSAoc2FtZSBhcyAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICJzW2xlbihzKTpsZW4ocyldID0gW3hdIikgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicy5jbGVhcigpIiAgICAgICAgICAgICAgICAgICAgfCByZW1vdmVzIGFsbCBpdGVtcyBmcm9tICJzIiAoc2FtZSB8ICg1KSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFzICJkZWwgc1s6XSIpICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicy5jb3B5KCkiICAgICAgICAgICAgICAgICAgICAgfCBjcmVhdGVzIGEgc2hhbGxvdyBjb3B5IG9mICJzIiAgICB8ICg1KSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChzYW1lIGFzICJzWzpdIikgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicy5leHRlbmQodCkiIG9yICJzICs9IHQiICAgICAgfCBleHRlbmRzICpzKiB3aXRoIHRoZSBjb250ZW50cyBvZiB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp0KiAoZm9yIHRoZSBtb3N0IHBhcnQgdGhlIHNhbWUgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXMgInNbbGVuKHMpOmxlbihzKV0gPSB0IikgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzICo9IG4iICAgICAgICAgICAgICAgICAgICAgICB8IHVwZGF0ZXMgKnMqIHdpdGggaXRzIGNvbnRlbnRzICAgIHwgKDYpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwZWF0ZWQgKm4qIHRpbWVzICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzLmluc2VydChpLCB4KSIgICAgICAgICAgICAgICB8IGluc2VydHMgKngqIGludG8gKnMqIGF0IHRoZSAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaW5kZXggZ2l2ZW4gYnkgKmkqIChzYW1lIGFzICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAic1tpOmldID0gW3hdIikgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMucG9wKFtpXSkiICAgICAgICAgICAgICAgICAgIHwgcmV0cmlldmVzIHRoZSBpdGVtIGF0ICppKiBhbmQgICAgfCAoMikgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhbHNvIHJlbW92ZXMgaXQgZnJvbSAqcyogICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMucmVtb3ZlKHgpIiAgICAgICAgICAgICAgICAgIHwgcmVtb3ZlIHRoZSBmaXJzdCBpdGVtIGZyb20gKnMqICAgfCAoMykgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3aGVyZSAic1tpXSA9PSB4IiAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMucmV2ZXJzZSgpIiAgICAgICAgICAgICAgICAgIHwgcmV2ZXJzZXMgdGhlIGl0ZW1zIG9mICpzKiBpbiAgICAgfCAoNCkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuTm90ZXM6XG5cbjEuICp0KiBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoIGFzIHRoZSBzbGljZSBpdCBpcyByZXBsYWNpbmcuXG5cbjIuIFRoZSBvcHRpb25hbCBhcmd1bWVudCAqaSogZGVmYXVsdHMgdG8gIi0xIiwgc28gdGhhdCBieSBkZWZhdWx0XG4gICB0aGUgbGFzdCBpdGVtIGlzIHJlbW92ZWQgYW5kIHJldHVybmVkLlxuXG4zLiAicmVtb3ZlIiByYWlzZXMgIlZhbHVlRXJyb3IiIHdoZW4gKngqIGlzIG5vdCBmb3VuZCBpbiAqcyouXG5cbjQuIFRoZSAicmV2ZXJzZSgpIiBtZXRob2QgbW9kaWZpZXMgdGhlIHNlcXVlbmNlIGluIHBsYWNlIGZvclxuICAgZWNvbm9teSBvZiBzcGFjZSB3aGVuIHJldmVyc2luZyBhIGxhcmdlIHNlcXVlbmNlLiAgVG8gcmVtaW5kIHVzZXJzXG4gICB0aGF0IGl0IG9wZXJhdGVzIGJ5IHNpZGUgZWZmZWN0LCBpdCBkb2VzIG5vdCByZXR1cm4gdGhlIHJldmVyc2VkXG4gICBzZXF1ZW5jZS5cblxuNS4gImNsZWFyKCkiIGFuZCAiY29weSgpIiBhcmUgaW5jbHVkZWQgZm9yIGNvbnNpc3RlbmN5IHdpdGggdGhlXG4gICBpbnRlcmZhY2VzIG9mIG11dGFibGUgY29udGFpbmVycyB0aGF0IGRvblwndCBzdXBwb3J0IHNsaWNpbmdcbiAgIG9wZXJhdGlvbnMgKHN1Y2ggYXMgImRpY3QiIGFuZCAic2V0IilcblxuICAgTmV3IGluIHZlcnNpb24gMy4zOiAiY2xlYXIoKSIgYW5kICJjb3B5KCkiIG1ldGhvZHMuXG5cbjYuIFRoZSB2YWx1ZSAqbiogaXMgYW4gaW50ZWdlciwgb3IgYW4gb2JqZWN0IGltcGxlbWVudGluZ1xuICAgIl9faW5kZXhfXygpIi4gIFplcm8gYW5kIG5lZ2F0aXZlIHZhbHVlcyBvZiAqbiogY2xlYXIgdGhlIHNlcXVlbmNlLlxuICAgSXRlbXMgaW4gdGhlIHNlcXVlbmNlIGFyZSBub3QgY29waWVkOyB0aGV5IGFyZSByZWZlcmVuY2VkIG11bHRpcGxlXG4gICB0aW1lcywgYXMgZXhwbGFpbmVkIGZvciAicyAqIG4iIHVuZGVyICpDb21tb24gU2VxdWVuY2UgT3BlcmF0aW9ucyouXG5cblxuTGlzdHNcbj09PT09XG5cbkxpc3RzIGFyZSBtdXRhYmxlIHNlcXVlbmNlcywgdHlwaWNhbGx5IHVzZWQgdG8gc3RvcmUgY29sbGVjdGlvbnMgb2ZcbmhvbW9nZW5lb3VzIGl0ZW1zICh3aGVyZSB0aGUgcHJlY2lzZSBkZWdyZWUgb2Ygc2ltaWxhcml0eSB3aWxsIHZhcnkgYnlcbmFwcGxpY2F0aW9uKS5cblxuY2xhc3MgY2xhc3MgbGlzdChbaXRlcmFibGVdKVxuXG4gICBMaXN0cyBtYXkgYmUgY29uc3RydWN0ZWQgaW4gc2V2ZXJhbCB3YXlzOlxuXG4gICAqIFVzaW5nIGEgcGFpciBvZiBzcXVhcmUgYnJhY2tldHMgdG8gZGVub3RlIHRoZSBlbXB0eSBsaXN0OiAiW10iXG5cbiAgICogVXNpbmcgc3F1YXJlIGJyYWNrZXRzLCBzZXBhcmF0aW5nIGl0ZW1zIHdpdGggY29tbWFzOiAiW2FdIixcbiAgICAgIlthLCBiLCBjXSJcblxuICAgKiBVc2luZyBhIGxpc3QgY29tcHJlaGVuc2lvbjogIlt4IGZvciB4IGluIGl0ZXJhYmxlXSJcblxuICAgKiBVc2luZyB0aGUgdHlwZSBjb25zdHJ1Y3RvcjogImxpc3QoKSIgb3IgImxpc3QoaXRlcmFibGUpIlxuXG4gICBUaGUgY29uc3RydWN0b3IgYnVpbGRzIGEgbGlzdCB3aG9zZSBpdGVtcyBhcmUgdGhlIHNhbWUgYW5kIGluIHRoZVxuICAgc2FtZSBvcmRlciBhcyAqaXRlcmFibGUqXCdzIGl0ZW1zLiAgKml0ZXJhYmxlKiBtYXkgYmUgZWl0aGVyIGFcbiAgIHNlcXVlbmNlLCBhIGNvbnRhaW5lciB0aGF0IHN1cHBvcnRzIGl0ZXJhdGlvbiwgb3IgYW4gaXRlcmF0b3JcbiAgIG9iamVjdC4gIElmICppdGVyYWJsZSogaXMgYWxyZWFkeSBhIGxpc3QsIGEgY29weSBpcyBtYWRlIGFuZFxuICAgcmV0dXJuZWQsIHNpbWlsYXIgdG8gIml0ZXJhYmxlWzpdIi4gRm9yIGV4YW1wbGUsICJsaXN0KFwnYWJjXCcpIlxuICAgcmV0dXJucyAiW1wnYVwnLCBcJ2JcJywgXCdjXCddIiBhbmQgImxpc3QoICgxLCAyLCAzKSApIiByZXR1cm5zICJbMSwgMixcbiAgIDNdIi4gSWYgbm8gYXJndW1lbnQgaXMgZ2l2ZW4sIHRoZSBjb25zdHJ1Y3RvciBjcmVhdGVzIGEgbmV3IGVtcHR5XG4gICBsaXN0LCAiW10iLlxuXG4gICBNYW55IG90aGVyIG9wZXJhdGlvbnMgYWxzbyBwcm9kdWNlIGxpc3RzLCBpbmNsdWRpbmcgdGhlICJzb3J0ZWQoKSJcbiAgIGJ1aWx0LWluLlxuXG4gICBMaXN0cyBpbXBsZW1lbnQgYWxsIG9mIHRoZSAqY29tbW9uKiBhbmQgKm11dGFibGUqIHNlcXVlbmNlXG4gICBvcGVyYXRpb25zLiBMaXN0cyBhbHNvIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBhZGRpdGlvbmFsIG1ldGhvZDpcblxuICAgc29ydCgqLCBrZXk9Tm9uZSwgcmV2ZXJzZT1Ob25lKVxuXG4gICAgICBUaGlzIG1ldGhvZCBzb3J0cyB0aGUgbGlzdCBpbiBwbGFjZSwgdXNpbmcgb25seSAiPCIgY29tcGFyaXNvbnNcbiAgICAgIGJldHdlZW4gaXRlbXMuIEV4Y2VwdGlvbnMgYXJlIG5vdCBzdXBwcmVzc2VkIC0gaWYgYW55IGNvbXBhcmlzb25cbiAgICAgIG9wZXJhdGlvbnMgZmFpbCwgdGhlIGVudGlyZSBzb3J0IG9wZXJhdGlvbiB3aWxsIGZhaWwgKGFuZCB0aGVcbiAgICAgIGxpc3Qgd2lsbCBsaWtlbHkgYmUgbGVmdCBpbiBhIHBhcnRpYWxseSBtb2RpZmllZCBzdGF0ZSkuXG5cbiAgICAgICJzb3J0KCkiIGFjY2VwdHMgdHdvIGFyZ3VtZW50cyB0aGF0IGNhbiBvbmx5IGJlIHBhc3NlZCBieVxuICAgICAga2V5d29yZCAoKmtleXdvcmQtb25seSBhcmd1bWVudHMqKTpcblxuICAgICAgKmtleSogc3BlY2lmaWVzIGEgZnVuY3Rpb24gb2Ygb25lIGFyZ3VtZW50IHRoYXQgaXMgdXNlZCB0b1xuICAgICAgZXh0cmFjdCBhIGNvbXBhcmlzb24ga2V5IGZyb20gZWFjaCBsaXN0IGVsZW1lbnQgKGZvciBleGFtcGxlLFxuICAgICAgImtleT1zdHIubG93ZXIiKS4gVGhlIGtleSBjb3JyZXNwb25kaW5nIHRvIGVhY2ggaXRlbSBpbiB0aGUgbGlzdFxuICAgICAgaXMgY2FsY3VsYXRlZCBvbmNlIGFuZCB0aGVuIHVzZWQgZm9yIHRoZSBlbnRpcmUgc29ydGluZyBwcm9jZXNzLlxuICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgb2YgIk5vbmUiIG1lYW5zIHRoYXQgbGlzdCBpdGVtcyBhcmUgc29ydGVkXG4gICAgICBkaXJlY3RseSB3aXRob3V0IGNhbGN1bGF0aW5nIGEgc2VwYXJhdGUga2V5IHZhbHVlLlxuXG4gICAgICBUaGUgImZ1bmN0b29scy5jbXBfdG9fa2V5KCkiIHV0aWxpdHkgaXMgYXZhaWxhYmxlIHRvIGNvbnZlcnQgYVxuICAgICAgMi54IHN0eWxlICpjbXAqIGZ1bmN0aW9uIHRvIGEgKmtleSogZnVuY3Rpb24uXG5cbiAgICAgICpyZXZlcnNlKiBpcyBhIGJvb2xlYW4gdmFsdWUuICBJZiBzZXQgdG8gIlRydWUiLCB0aGVuIHRoZSBsaXN0XG4gICAgICBlbGVtZW50cyBhcmUgc29ydGVkIGFzIGlmIGVhY2ggY29tcGFyaXNvbiB3ZXJlIHJldmVyc2VkLlxuXG4gICAgICBUaGlzIG1ldGhvZCBtb2RpZmllcyB0aGUgc2VxdWVuY2UgaW4gcGxhY2UgZm9yIGVjb25vbXkgb2Ygc3BhY2VcbiAgICAgIHdoZW4gc29ydGluZyBhIGxhcmdlIHNlcXVlbmNlLiAgVG8gcmVtaW5kIHVzZXJzIHRoYXQgaXQgb3BlcmF0ZXNcbiAgICAgIGJ5IHNpZGUgZWZmZWN0LCBpdCBkb2VzIG5vdCByZXR1cm4gdGhlIHNvcnRlZCBzZXF1ZW5jZSAodXNlXG4gICAgICAic29ydGVkKCkiIHRvIGV4cGxpY2l0bHkgcmVxdWVzdCBhIG5ldyBzb3J0ZWQgbGlzdCBpbnN0YW5jZSkuXG5cbiAgICAgIFRoZSAic29ydCgpIiBtZXRob2QgaXMgZ3VhcmFudGVlZCB0byBiZSBzdGFibGUuICBBIHNvcnQgaXNcbiAgICAgIHN0YWJsZSBpZiBpdCBndWFyYW50ZWVzIG5vdCB0byBjaGFuZ2UgdGhlIHJlbGF0aXZlIG9yZGVyIG9mXG4gICAgICBlbGVtZW50cyB0aGF0IGNvbXBhcmUgZXF1YWwgLS0tIHRoaXMgaXMgaGVscGZ1bCBmb3Igc29ydGluZyBpblxuICAgICAgbXVsdGlwbGUgcGFzc2VzIChmb3IgZXhhbXBsZSwgc29ydCBieSBkZXBhcnRtZW50LCB0aGVuIGJ5IHNhbGFyeVxuICAgICAgZ3JhZGUpLlxuXG4gICAgICAqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIFdoaWxlIGEgbGlzdCBpcyBiZWluZyBzb3J0ZWQsXG4gICAgICB0aGUgZWZmZWN0IG9mIGF0dGVtcHRpbmcgdG8gbXV0YXRlLCBvciBldmVuIGluc3BlY3QsIHRoZSBsaXN0IGlzXG4gICAgICB1bmRlZmluZWQuICBUaGUgQyBpbXBsZW1lbnRhdGlvbiBvZiBQeXRob24gbWFrZXMgdGhlIGxpc3QgYXBwZWFyXG4gICAgICBlbXB0eSBmb3IgdGhlIGR1cmF0aW9uLCBhbmQgcmFpc2VzICJWYWx1ZUVycm9yIiBpZiBpdCBjYW4gZGV0ZWN0XG4gICAgICB0aGF0IHRoZSBsaXN0IGhhcyBiZWVuIG11dGF0ZWQgZHVyaW5nIGEgc29ydC5cblxuXG5UdXBsZXNcbj09PT09PVxuXG5UdXBsZXMgYXJlIGltbXV0YWJsZSBzZXF1ZW5jZXMsIHR5cGljYWxseSB1c2VkIHRvIHN0b3JlIGNvbGxlY3Rpb25zIG9mXG5oZXRlcm9nZW5lb3VzIGRhdGEgKHN1Y2ggYXMgdGhlIDItdHVwbGVzIHByb2R1Y2VkIGJ5IHRoZSAiZW51bWVyYXRlKCkiXG5idWlsdC1pbikuIFR1cGxlcyBhcmUgYWxzbyB1c2VkIGZvciBjYXNlcyB3aGVyZSBhbiBpbW11dGFibGUgc2VxdWVuY2Vcbm9mIGhvbW9nZW5lb3VzIGRhdGEgaXMgbmVlZGVkIChzdWNoIGFzIGFsbG93aW5nIHN0b3JhZ2UgaW4gYSAic2V0IiBvclxuImRpY3QiIGluc3RhbmNlKS5cblxuY2xhc3MgY2xhc3MgdHVwbGUoW2l0ZXJhYmxlXSlcblxuICAgVHVwbGVzIG1heSBiZSBjb25zdHJ1Y3RlZCBpbiBhIG51bWJlciBvZiB3YXlzOlxuXG4gICAqIFVzaW5nIGEgcGFpciBvZiBwYXJlbnRoZXNlcyB0byBkZW5vdGUgdGhlIGVtcHR5IHR1cGxlOiAiKCkiXG5cbiAgICogVXNpbmcgYSB0cmFpbGluZyBjb21tYSBmb3IgYSBzaW5nbGV0b24gdHVwbGU6ICJhLCIgb3IgIihhLCkiXG5cbiAgICogU2VwYXJhdGluZyBpdGVtcyB3aXRoIGNvbW1hczogImEsIGIsIGMiIG9yICIoYSwgYiwgYykiXG5cbiAgICogVXNpbmcgdGhlICJ0dXBsZSgpIiBidWlsdC1pbjogInR1cGxlKCkiIG9yICJ0dXBsZShpdGVyYWJsZSkiXG5cbiAgIFRoZSBjb25zdHJ1Y3RvciBidWlsZHMgYSB0dXBsZSB3aG9zZSBpdGVtcyBhcmUgdGhlIHNhbWUgYW5kIGluIHRoZVxuICAgc2FtZSBvcmRlciBhcyAqaXRlcmFibGUqXCdzIGl0ZW1zLiAgKml0ZXJhYmxlKiBtYXkgYmUgZWl0aGVyIGFcbiAgIHNlcXVlbmNlLCBhIGNvbnRhaW5lciB0aGF0IHN1cHBvcnRzIGl0ZXJhdGlvbiwgb3IgYW4gaXRlcmF0b3JcbiAgIG9iamVjdC4gIElmICppdGVyYWJsZSogaXMgYWxyZWFkeSBhIHR1cGxlLCBpdCBpcyByZXR1cm5lZFxuICAgdW5jaGFuZ2VkLiBGb3IgZXhhbXBsZSwgInR1cGxlKFwnYWJjXCcpIiByZXR1cm5zICIoXCdhXCcsIFwnYlwnLCBcJ2NcJykiXG4gICBhbmQgInR1cGxlKCBbMSwgMiwgM10gKSIgcmV0dXJucyAiKDEsIDIsIDMpIi4gSWYgbm8gYXJndW1lbnQgaXNcbiAgIGdpdmVuLCB0aGUgY29uc3RydWN0b3IgY3JlYXRlcyBhIG5ldyBlbXB0eSB0dXBsZSwgIigpIi5cblxuICAgTm90ZSB0aGF0IGl0IGlzIGFjdHVhbGx5IHRoZSBjb21tYSB3aGljaCBtYWtlcyBhIHR1cGxlLCBub3QgdGhlXG4gICBwYXJlbnRoZXNlcy4gVGhlIHBhcmVudGhlc2VzIGFyZSBvcHRpb25hbCwgZXhjZXB0IGluIHRoZSBlbXB0eVxuICAgdHVwbGUgY2FzZSwgb3Igd2hlbiB0aGV5IGFyZSBuZWVkZWQgdG8gYXZvaWQgc3ludGFjdGljIGFtYmlndWl0eS5cbiAgIEZvciBleGFtcGxlLCAiZihhLCBiLCBjKSIgaXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggdGhyZWUgYXJndW1lbnRzLFxuICAgd2hpbGUgImYoKGEsIGIsIGMpKSIgaXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggYSAzLXR1cGxlIGFzIHRoZSBzb2xlXG4gICBhcmd1bWVudC5cblxuICAgVHVwbGVzIGltcGxlbWVudCBhbGwgb2YgdGhlICpjb21tb24qIHNlcXVlbmNlIG9wZXJhdGlvbnMuXG5cbkZvciBoZXRlcm9nZW5lb3VzIGNvbGxlY3Rpb25zIG9mIGRhdGEgd2hlcmUgYWNjZXNzIGJ5IG5hbWUgaXMgY2xlYXJlclxudGhhbiBhY2Nlc3MgYnkgaW5kZXgsICJjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCkiIG1heSBiZSBhIG1vcmVcbmFwcHJvcHJpYXRlIGNob2ljZSB0aGFuIGEgc2ltcGxlIHR1cGxlIG9iamVjdC5cblxuXG5SYW5nZXNcbj09PT09PVxuXG5UaGUgInJhbmdlIiB0eXBlIHJlcHJlc2VudHMgYW4gaW1tdXRhYmxlIHNlcXVlbmNlIG9mIG51bWJlcnMgYW5kIGlzXG5jb21tb25seSB1c2VkIGZvciBsb29waW5nIGEgc3BlY2lmaWMgbnVtYmVyIG9mIHRpbWVzIGluICJmb3IiIGxvb3BzLlxuXG5jbGFzcyBjbGFzcyByYW5nZShzdG9wKVxuY2xhc3MgY2xhc3MgcmFuZ2Uoc3RhcnQsIHN0b3BbLCBzdGVwXSlcblxuICAgVGhlIGFyZ3VtZW50cyB0byB0aGUgcmFuZ2UgY29uc3RydWN0b3IgbXVzdCBiZSBpbnRlZ2VycyAoZWl0aGVyXG4gICBidWlsdC1pbiAiaW50IiBvciBhbnkgb2JqZWN0IHRoYXQgaW1wbGVtZW50cyB0aGUgIl9faW5kZXhfXyJcbiAgIHNwZWNpYWwgbWV0aG9kKS4gIElmIHRoZSAqc3RlcCogYXJndW1lbnQgaXMgb21pdHRlZCwgaXQgZGVmYXVsdHMgdG9cbiAgICIxIi4gSWYgdGhlICpzdGFydCogYXJndW1lbnQgaXMgb21pdHRlZCwgaXQgZGVmYXVsdHMgdG8gIjAiLiBJZlxuICAgKnN0ZXAqIGlzIHplcm8sICJWYWx1ZUVycm9yIiBpcyByYWlzZWQuXG5cbiAgIEZvciBhIHBvc2l0aXZlICpzdGVwKiwgdGhlIGNvbnRlbnRzIG9mIGEgcmFuZ2UgInIiIGFyZSBkZXRlcm1pbmVkXG4gICBieSB0aGUgZm9ybXVsYSAicltpXSA9IHN0YXJ0ICsgc3RlcCppIiB3aGVyZSAiaSA+PSAwIiBhbmQgInJbaV0gPFxuICAgc3RvcCIuXG5cbiAgIEZvciBhIG5lZ2F0aXZlICpzdGVwKiwgdGhlIGNvbnRlbnRzIG9mIHRoZSByYW5nZSBhcmUgc3RpbGxcbiAgIGRldGVybWluZWQgYnkgdGhlIGZvcm11bGEgInJbaV0gPSBzdGFydCArIHN0ZXAqaSIsIGJ1dCB0aGVcbiAgIGNvbnN0cmFpbnRzIGFyZSAiaSA+PSAwIiBhbmQgInJbaV0gPiBzdG9wIi5cblxuICAgQSByYW5nZSBvYmplY3Qgd2lsbCBiZSBlbXB0eSBpZiAiclswXSIgZG9lcyBub3QgbWVldCB0aGUgdmFsdWVcbiAgIGNvbnN0cmFpbnQuIFJhbmdlcyBkbyBzdXBwb3J0IG5lZ2F0aXZlIGluZGljZXMsIGJ1dCB0aGVzZSBhcmVcbiAgIGludGVycHJldGVkIGFzIGluZGV4aW5nIGZyb20gdGhlIGVuZCBvZiB0aGUgc2VxdWVuY2UgZGV0ZXJtaW5lZCBieVxuICAgdGhlIHBvc2l0aXZlIGluZGljZXMuXG5cbiAgIFJhbmdlcyBjb250YWluaW5nIGFic29sdXRlIHZhbHVlcyBsYXJnZXIgdGhhbiAic3lzLm1heHNpemUiIGFyZVxuICAgcGVybWl0dGVkIGJ1dCBzb21lIGZlYXR1cmVzIChzdWNoIGFzICJsZW4oKSIpIG1heSByYWlzZVxuICAgIk92ZXJmbG93RXJyb3IiLlxuXG4gICBSYW5nZSBleGFtcGxlczpcblxuICAgICAgPj4+IGxpc3QocmFuZ2UoMTApKVxuICAgICAgWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDldXG4gICAgICA+Pj4gbGlzdChyYW5nZSgxLCAxMSkpXG4gICAgICBbMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTBdXG4gICAgICA+Pj4gbGlzdChyYW5nZSgwLCAzMCwgNSkpXG4gICAgICBbMCwgNSwgMTAsIDE1LCAyMCwgMjVdXG4gICAgICA+Pj4gbGlzdChyYW5nZSgwLCAxMCwgMykpXG4gICAgICBbMCwgMywgNiwgOV1cbiAgICAgID4+PiBsaXN0KHJhbmdlKDAsIC0xMCwgLTEpKVxuICAgICAgWzAsIC0xLCAtMiwgLTMsIC00LCAtNSwgLTYsIC03LCAtOCwgLTldXG4gICAgICA+Pj4gbGlzdChyYW5nZSgwKSlcbiAgICAgIFtdXG4gICAgICA+Pj4gbGlzdChyYW5nZSgxLCAwKSlcbiAgICAgIFtdXG5cbiAgIFJhbmdlcyBpbXBsZW1lbnQgYWxsIG9mIHRoZSAqY29tbW9uKiBzZXF1ZW5jZSBvcGVyYXRpb25zIGV4Y2VwdFxuICAgY29uY2F0ZW5hdGlvbiBhbmQgcmVwZXRpdGlvbiAoZHVlIHRvIHRoZSBmYWN0IHRoYXQgcmFuZ2Ugb2JqZWN0c1xuICAgY2FuIG9ubHkgcmVwcmVzZW50IHNlcXVlbmNlcyB0aGF0IGZvbGxvdyBhIHN0cmljdCBwYXR0ZXJuIGFuZFxuICAgcmVwZXRpdGlvbiBhbmQgY29uY2F0ZW5hdGlvbiB3aWxsIHVzdWFsbHkgdmlvbGF0ZSB0aGF0IHBhdHRlcm4pLlxuXG4gICBzdGFydFxuXG4gICAgICBUaGUgdmFsdWUgb2YgdGhlICpzdGFydCogcGFyYW1ldGVyIChvciAiMCIgaWYgdGhlIHBhcmFtZXRlciB3YXNcbiAgICAgIG5vdCBzdXBwbGllZClcblxuICAgc3RvcFxuXG4gICAgICBUaGUgdmFsdWUgb2YgdGhlICpzdG9wKiBwYXJhbWV0ZXJcblxuICAgc3RlcFxuXG4gICAgICBUaGUgdmFsdWUgb2YgdGhlICpzdGVwKiBwYXJhbWV0ZXIgKG9yICIxIiBpZiB0aGUgcGFyYW1ldGVyIHdhc1xuICAgICAgbm90IHN1cHBsaWVkKVxuXG5UaGUgYWR2YW50YWdlIG9mIHRoZSAicmFuZ2UiIHR5cGUgb3ZlciBhIHJlZ3VsYXIgImxpc3QiIG9yICJ0dXBsZSIgaXNcbnRoYXQgYSAicmFuZ2UiIG9iamVjdCB3aWxsIGFsd2F5cyB0YWtlIHRoZSBzYW1lIChzbWFsbCkgYW1vdW50IG9mXG5tZW1vcnksIG5vIG1hdHRlciB0aGUgc2l6ZSBvZiB0aGUgcmFuZ2UgaXQgcmVwcmVzZW50cyAoYXMgaXQgb25seVxuc3RvcmVzIHRoZSAic3RhcnQiLCAic3RvcCIgYW5kICJzdGVwIiB2YWx1ZXMsIGNhbGN1bGF0aW5nIGluZGl2aWR1YWxcbml0ZW1zIGFuZCBzdWJyYW5nZXMgYXMgbmVlZGVkKS5cblxuUmFuZ2Ugb2JqZWN0cyBpbXBsZW1lbnQgdGhlICJjb2xsZWN0aW9ucy5hYmMuU2VxdWVuY2UiIEFCQywgYW5kXG5wcm92aWRlIGZlYXR1cmVzIHN1Y2ggYXMgY29udGFpbm1lbnQgdGVzdHMsIGVsZW1lbnQgaW5kZXggbG9va3VwLFxuc2xpY2luZyBhbmQgc3VwcG9ydCBmb3IgbmVnYXRpdmUgaW5kaWNlcyAoc2VlICpTZXF1ZW5jZSBUeXBlcyAtLS1cbmxpc3QsIHR1cGxlLCByYW5nZSopOlxuXG4+Pj4gciA9IHJhbmdlKDAsIDIwLCAyKVxuPj4+IHJcbnJhbmdlKDAsIDIwLCAyKVxuPj4+IDExIGluIHJcbkZhbHNlXG4+Pj4gMTAgaW4gclxuVHJ1ZVxuPj4+IHIuaW5kZXgoMTApXG41XG4+Pj4gcls1XVxuMTBcbj4+PiByWzo1XVxucmFuZ2UoMCwgMTAsIDIpXG4+Pj4gclstMV1cbjE4XG5cblRlc3RpbmcgcmFuZ2Ugb2JqZWN0cyBmb3IgZXF1YWxpdHkgd2l0aCAiPT0iIGFuZCAiIT0iIGNvbXBhcmVzIHRoZW0gYXNcbnNlcXVlbmNlcy4gIFRoYXQgaXMsIHR3byByYW5nZSBvYmplY3RzIGFyZSBjb25zaWRlcmVkIGVxdWFsIGlmIHRoZXlcbnJlcHJlc2VudCB0aGUgc2FtZSBzZXF1ZW5jZSBvZiB2YWx1ZXMuICAoTm90ZSB0aGF0IHR3byByYW5nZSBvYmplY3RzXG50aGF0IGNvbXBhcmUgZXF1YWwgbWlnaHQgaGF2ZSBkaWZmZXJlbnQgInN0YXJ0IiwgInN0b3AiIGFuZCAic3RlcCJcbmF0dHJpYnV0ZXMsIGZvciBleGFtcGxlICJyYW5nZSgwKSA9PSByYW5nZSgyLCAxLCAzKSIgb3IgInJhbmdlKDAsIDMsXG4yKSA9PSByYW5nZSgwLCA0LCAyKSIuKVxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4yOiBJbXBsZW1lbnQgdGhlIFNlcXVlbmNlIEFCQy4gU3VwcG9ydCBzbGljaW5nXG5hbmQgbmVnYXRpdmUgaW5kaWNlcy4gVGVzdCAiaW50IiBvYmplY3RzIGZvciBtZW1iZXJzaGlwIGluIGNvbnN0YW50XG50aW1lIGluc3RlYWQgb2YgaXRlcmF0aW5nIHRocm91Z2ggYWxsIGl0ZW1zLlxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4zOiBEZWZpbmUgXCc9PVwnIGFuZCBcJyE9XCcgdG8gY29tcGFyZSByYW5nZSBvYmplY3RzXG5iYXNlZCBvbiB0aGUgc2VxdWVuY2Ugb2YgdmFsdWVzIHRoZXkgZGVmaW5lIChpbnN0ZWFkIG9mIGNvbXBhcmluZ1xuYmFzZWQgb24gb2JqZWN0IGlkZW50aXR5KS5cblxuTmV3IGluIHZlcnNpb24gMy4zOiBUaGUgInN0YXJ0IiwgInN0b3AiIGFuZCAic3RlcCIgYXR0cmlidXRlcy5cbicsCi0gJ3R5cGVzc2VxLW11dGFibGUnOiB1J1xuTXV0YWJsZSBTZXF1ZW5jZSBUeXBlc1xuKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgb3BlcmF0aW9ucyBpbiB0aGUgZm9sbG93aW5nIHRhYmxlIGFyZSBkZWZpbmVkIG9uIG11dGFibGUgc2VxdWVuY2VcbnR5cGVzLiBUaGUgImNvbGxlY3Rpb25zLmFiYy5NdXRhYmxlU2VxdWVuY2UiIEFCQyBpcyBwcm92aWRlZCB0byBtYWtlXG5pdCBlYXNpZXIgdG8gY29ycmVjdGx5IGltcGxlbWVudCB0aGVzZSBvcGVyYXRpb25zIG9uIGN1c3RvbSBzZXF1ZW5jZVxudHlwZXMuXG5cbkluIHRoZSB0YWJsZSAqcyogaXMgYW4gaW5zdGFuY2Ugb2YgYSBtdXRhYmxlIHNlcXVlbmNlIHR5cGUsICp0KiBpcyBhbnlcbml0ZXJhYmxlIG9iamVjdCBhbmQgKngqIGlzIGFuIGFyYml0cmFyeSBvYmplY3QgdGhhdCBtZWV0cyBhbnkgdHlwZSBhbmRcbnZhbHVlIHJlc3RyaWN0aW9ucyBpbXBvc2VkIGJ5ICpzKiAoZm9yIGV4YW1wbGUsICJieXRlYXJyYXkiIG9ubHlcbmFjY2VwdHMgaW50ZWdlcnMgdGhhdCBtZWV0IHRoZSB2YWx1ZSByZXN0cmljdGlvbiAiMCA8PSB4IDw9IDI1NSIpLlxuXG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgT3BlcmF0aW9uICAgICAgICAgICAgICAgICAgICAgIHwgUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgICAgICAgICAgICAgICAgfFxuKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT0rXG58ICJzW2ldID0geCIgICAgICAgICAgICAgICAgICAgICB8IGl0ZW0gKmkqIG9mICpzKiBpcyByZXBsYWNlZCBieSAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKngqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzW2k6al0gPSB0IiAgICAgICAgICAgICAgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogaXMgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwbGFjZWQgYnkgdGhlIGNvbnRlbnRzIG9mIHRoZSAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpdGVyYWJsZSAqdCogICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgImRlbCBzW2k6al0iICAgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyAic1tpOmpdID0gW10iICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzW2k6ajprXSA9IHQiICAgICAgICAgICAgICAgICB8IHRoZSBlbGVtZW50cyBvZiAic1tpOmo6a10iIGFyZSAgIHwgKDEpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwbGFjZWQgYnkgdGhvc2Ugb2YgKnQqICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJkZWwgc1tpOmo6a10iICAgICAgICAgICAgICAgICB8IHJlbW92ZXMgdGhlIGVsZW1lbnRzIG9mICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgInNbaTpqOmtdIiBmcm9tIHRoZSBsaXN0ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzLmFwcGVuZCh4KSIgICAgICAgICAgICAgICAgICB8IGFwcGVuZHMgKngqIHRvIHRoZSBlbmQgb2YgdGhlICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2VxdWVuY2UgKHNhbWUgYXMgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAic1tsZW4ocyk6bGVuKHMpXSA9IFt4XSIpICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMuY2xlYXIoKSIgICAgICAgICAgICAgICAgICAgIHwgcmVtb3ZlcyBhbGwgaXRlbXMgZnJvbSAicyIgKHNhbWUgfCAoNSkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcyAiZGVsIHNbOl0iKSAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMuY29weSgpIiAgICAgICAgICAgICAgICAgICAgIHwgY3JlYXRlcyBhIHNoYWxsb3cgY29weSBvZiAicyIgICAgfCAoNSkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoc2FtZSBhcyAic1s6XSIpICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMuZXh0ZW5kKHQpIiBvciAicyArPSB0IiAgICAgIHwgZXh0ZW5kcyAqcyogd2l0aCB0aGUgY29udGVudHMgb2YgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqdCogKGZvciB0aGUgbW9zdCBwYXJ0IHRoZSBzYW1lICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFzICJzW2xlbihzKTpsZW4ocyldID0gdCIpICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicyAqPSBuIiAgICAgICAgICAgICAgICAgICAgICAgfCB1cGRhdGVzICpzKiB3aXRoIGl0cyBjb250ZW50cyAgICB8ICg2KSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGVhdGVkICpuKiB0aW1lcyAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicy5pbnNlcnQoaSwgeCkiICAgICAgICAgICAgICAgfCBpbnNlcnRzICp4KiBpbnRvICpzKiBhdCB0aGUgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGluZGV4IGdpdmVuIGJ5ICppKiAoc2FtZSBhcyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgInNbaTppXSA9IFt4XSIpICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzLnBvcChbaV0pIiAgICAgICAgICAgICAgICAgICB8IHJldHJpZXZlcyB0aGUgaXRlbSBhdCAqaSogYW5kICAgIHwgKDIpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWxzbyByZW1vdmVzIGl0IGZyb20gKnMqICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzLnJlbW92ZSh4KSIgICAgICAgICAgICAgICAgICB8IHJlbW92ZSB0aGUgZmlyc3QgaXRlbSBmcm9tICpzKiAgIHwgKDMpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgd2hlcmUgInNbaV0gPT0geCIgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzLnJldmVyc2UoKSIgICAgICAgICAgICAgICAgICB8IHJldmVyc2VzIHRoZSBpdGVtcyBvZiAqcyogaW4gICAgIHwgKDQpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cbk5vdGVzOlxuXG4xLiAqdCogbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aCBhcyB0aGUgc2xpY2UgaXQgaXMgcmVwbGFjaW5nLlxuXG4yLiBUaGUgb3B0aW9uYWwgYXJndW1lbnQgKmkqIGRlZmF1bHRzIHRvICItMSIsIHNvIHRoYXQgYnkgZGVmYXVsdFxuICAgdGhlIGxhc3QgaXRlbSBpcyByZW1vdmVkIGFuZCByZXR1cm5lZC5cblxuMy4gInJlbW92ZSIgcmFpc2VzICJWYWx1ZUVycm9yIiB3aGVuICp4KiBpcyBub3QgZm91bmQgaW4gKnMqLlxuXG40LiBUaGUgInJldmVyc2UoKSIgbWV0aG9kIG1vZGlmaWVzIHRoZSBzZXF1ZW5jZSBpbiBwbGFjZSBmb3JcbiAgIGVjb25vbXkgb2Ygc3BhY2Ugd2hlbiByZXZlcnNpbmcgYSBsYXJnZSBzZXF1ZW5jZS4gIFRvIHJlbWluZCB1c2Vyc1xuICAgdGhhdCBpdCBvcGVyYXRlcyBieSBzaWRlIGVmZmVjdCwgaXQgZG9lcyBub3QgcmV0dXJuIHRoZSByZXZlcnNlZFxuICAgc2VxdWVuY2UuXG5cbjUuICJjbGVhcigpIiBhbmQgImNvcHkoKSIgYXJlIGluY2x1ZGVkIGZvciBjb25zaXN0ZW5jeSB3aXRoIHRoZVxuICAgaW50ZXJmYWNlcyBvZiBtdXRhYmxlIGNvbnRhaW5lcnMgdGhhdCBkb25cJ3Qgc3VwcG9ydCBzbGljaW5nXG4gICBvcGVyYXRpb25zIChzdWNoIGFzICJkaWN0IiBhbmQgInNldCIpXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMzogImNsZWFyKCkiIGFuZCAiY29weSgpIiBtZXRob2RzLlxuXG42LiBUaGUgdmFsdWUgKm4qIGlzIGFuIGludGVnZXIsIG9yIGFuIG9iamVjdCBpbXBsZW1lbnRpbmdcbiAgICJfX2luZGV4X18oKSIuICBaZXJvIGFuZCBuZWdhdGl2ZSB2YWx1ZXMgb2YgKm4qIGNsZWFyIHRoZSBzZXF1ZW5jZS5cbiAgIEl0ZW1zIGluIHRoZSBzZXF1ZW5jZSBhcmUgbm90IGNvcGllZDsgdGhleSBhcmUgcmVmZXJlbmNlZCBtdWx0aXBsZVxuICAgdGltZXMsIGFzIGV4cGxhaW5lZCBmb3IgInMgKiBuIiB1bmRlciAqQ29tbW9uIFNlcXVlbmNlIE9wZXJhdGlvbnMqLlxuJywKLSAndW5hcnknOiB1J1xuVW5hcnkgYXJpdGhtZXRpYyBhbmQgYml0d2lzZSBvcGVyYXRpb25zXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuQWxsIHVuYXJ5IGFyaXRobWV0aWMgYW5kIGJpdHdpc2Ugb3BlcmF0aW9ucyBoYXZlIHRoZSBzYW1lIHByaW9yaXR5OlxuXG4gICB1X2V4cHIgOjo9IHBvd2VyIHwgIi0iIHVfZXhwciB8ICIrIiB1X2V4cHIgfCAifiIgdV9leHByXG5cblRoZSB1bmFyeSAiLSIgKG1pbnVzKSBvcGVyYXRvciB5aWVsZHMgdGhlIG5lZ2F0aW9uIG9mIGl0cyBudW1lcmljXG5hcmd1bWVudC5cblxuVGhlIHVuYXJ5ICIrIiAocGx1cykgb3BlcmF0b3IgeWllbGRzIGl0cyBudW1lcmljIGFyZ3VtZW50IHVuY2hhbmdlZC5cblxuVGhlIHVuYXJ5ICJ+IiAoaW52ZXJ0KSBvcGVyYXRvciB5aWVsZHMgdGhlIGJpdHdpc2UgaW52ZXJzaW9uIG9mIGl0c1xuaW50ZWdlciBhcmd1bWVudC4gIFRoZSBiaXR3aXNlIGludmVyc2lvbiBvZiAieCIgaXMgZGVmaW5lZCBhc1xuIi0oeCsxKSIuICBJdCBvbmx5IGFwcGxpZXMgdG8gaW50ZWdyYWwgbnVtYmVycy5cblxuSW4gYWxsIHRocmVlIGNhc2VzLCBpZiB0aGUgYXJndW1lbnQgZG9lcyBub3QgaGF2ZSB0aGUgcHJvcGVyIHR5cGUsIGFcbiJUeXBlRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQuXG4nLAotICd3aGlsZSc6IHUnXG5UaGUgIndoaWxlIiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgIndoaWxlIiBzdGF0ZW1lbnQgaXMgdXNlZCBmb3IgcmVwZWF0ZWQgZXhlY3V0aW9uIGFzIGxvbmcgYXMgYW5cbmV4cHJlc3Npb24gaXMgdHJ1ZTpcblxuICAgd2hpbGVfc3RtdCA6Oj0gIndoaWxlIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG5cblRoaXMgcmVwZWF0ZWRseSB0ZXN0cyB0aGUgZXhwcmVzc2lvbiBhbmQsIGlmIGl0IGlzIHRydWUsIGV4ZWN1dGVzIHRoZVxuZmlyc3Qgc3VpdGU7IGlmIHRoZSBleHByZXNzaW9uIGlzIGZhbHNlICh3aGljaCBtYXkgYmUgdGhlIGZpcnN0IHRpbWVcbml0IGlzIHRlc3RlZCkgdGhlIHN1aXRlIG9mIHRoZSAiZWxzZSIgY2xhdXNlLCBpZiBwcmVzZW50LCBpcyBleGVjdXRlZFxuYW5kIHRoZSBsb29wIHRlcm1pbmF0ZXMuXG5cbkEgImJyZWFrIiBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHRlcm1pbmF0ZXMgdGhlIGxvb3BcbndpdGhvdXQgZXhlY3V0aW5nIHRoZSAiZWxzZSIgY2xhdXNlXCdzIHN1aXRlLiAgQSAiY29udGludWUiIHN0YXRlbWVudFxuZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHNraXBzIHRoZSByZXN0IG9mIHRoZSBzdWl0ZSBhbmQgZ29lcyBiYWNrXG50byB0ZXN0aW5nIHRoZSBleHByZXNzaW9uLlxuJywKLSAnd2l0aCc6IHUnXG5UaGUgIndpdGgiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKipcblxuVGhlICJ3aXRoIiBzdGF0ZW1lbnQgaXMgdXNlZCB0byB3cmFwIHRoZSBleGVjdXRpb24gb2YgYSBibG9jayB3aXRoXG5tZXRob2RzIGRlZmluZWQgYnkgYSBjb250ZXh0IG1hbmFnZXIgKHNlZSBzZWN0aW9uICpXaXRoIFN0YXRlbWVudFxuQ29udGV4dCBNYW5hZ2VycyopLiBUaGlzIGFsbG93cyBjb21tb24gInRyeSIuLi4iZXhjZXB0Ii4uLiJmaW5hbGx5IlxudXNhZ2UgcGF0dGVybnMgdG8gYmUgZW5jYXBzdWxhdGVkIGZvciBjb252ZW5pZW50IHJldXNlLlxuXG4gICB3aXRoX3N0bXQgOjo9ICJ3aXRoIiB3aXRoX2l0ZW0gKCIsIiB3aXRoX2l0ZW0pKiAiOiIgc3VpdGVcbiAgIHdpdGhfaXRlbSA6Oj0gZXhwcmVzc2lvbiBbImFzIiB0YXJnZXRdXG5cblRoZSBleGVjdXRpb24gb2YgdGhlICJ3aXRoIiBzdGF0ZW1lbnQgd2l0aCBvbmUgIml0ZW0iIHByb2NlZWRzIGFzXG5mb2xsb3dzOlxuXG4xLiBUaGUgY29udGV4dCBleHByZXNzaW9uICh0aGUgZXhwcmVzc2lvbiBnaXZlbiBpbiB0aGUgIndpdGhfaXRlbSIpXG4gICBpcyBldmFsdWF0ZWQgdG8gb2J0YWluIGEgY29udGV4dCBtYW5hZ2VyLlxuXG4yLiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzICJfX2V4aXRfXygpIiBpcyBsb2FkZWQgZm9yIGxhdGVyIHVzZS5cblxuMy4gVGhlIGNvbnRleHQgbWFuYWdlclwncyAiX19lbnRlcl9fKCkiIG1ldGhvZCBpcyBpbnZva2VkLlxuXG40LiBJZiBhIHRhcmdldCB3YXMgaW5jbHVkZWQgaW4gdGhlICJ3aXRoIiBzdGF0ZW1lbnQsIHRoZSByZXR1cm5cbiAgIHZhbHVlIGZyb20gIl9fZW50ZXJfXygpIiBpcyBhc3NpZ25lZCB0byBpdC5cblxuICAgTm90ZTogVGhlICJ3aXRoIiBzdGF0ZW1lbnQgZ3VhcmFudGVlcyB0aGF0IGlmIHRoZSAiX19lbnRlcl9fKCkiXG4gICAgIG1ldGhvZCByZXR1cm5zIHdpdGhvdXQgYW4gZXJyb3IsIHRoZW4gIl9fZXhpdF9fKCkiIHdpbGwgYWx3YXlzIGJlXG4gICAgIGNhbGxlZC4gVGh1cywgaWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyB0aGUgYXNzaWdubWVudCB0byB0aGVcbiAgICAgdGFyZ2V0IGxpc3QsIGl0IHdpbGwgYmUgdHJlYXRlZCB0aGUgc2FtZSBhcyBhbiBlcnJvciBvY2N1cnJpbmdcbiAgICAgd2l0aGluIHRoZSBzdWl0ZSB3b3VsZCBiZS4gU2VlIHN0ZXAgNiBiZWxvdy5cblxuNS4gVGhlIHN1aXRlIGlzIGV4ZWN1dGVkLlxuXG42LiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzICJfX2V4aXRfXygpIiBtZXRob2QgaXMgaW52b2tlZC4gIElmIGFuXG4gICBleGNlcHRpb24gY2F1c2VkIHRoZSBzdWl0ZSB0byBiZSBleGl0ZWQsIGl0cyB0eXBlLCB2YWx1ZSwgYW5kXG4gICB0cmFjZWJhY2sgYXJlIHBhc3NlZCBhcyBhcmd1bWVudHMgdG8gIl9fZXhpdF9fKCkiLiBPdGhlcndpc2UsIHRocmVlXG4gICAiTm9uZSIgYXJndW1lbnRzIGFyZSBzdXBwbGllZC5cblxuICAgSWYgdGhlIHN1aXRlIHdhcyBleGl0ZWQgZHVlIHRvIGFuIGV4Y2VwdGlvbiwgYW5kIHRoZSByZXR1cm4gdmFsdWVcbiAgIGZyb20gdGhlICJfX2V4aXRfXygpIiBtZXRob2Qgd2FzIGZhbHNlLCB0aGUgZXhjZXB0aW9uIGlzIHJlcmFpc2VkLlxuICAgSWYgdGhlIHJldHVybiB2YWx1ZSB3YXMgdHJ1ZSwgdGhlIGV4Y2VwdGlvbiBpcyBzdXBwcmVzc2VkLCBhbmRcbiAgIGV4ZWN1dGlvbiBjb250aW51ZXMgd2l0aCB0aGUgc3RhdGVtZW50IGZvbGxvd2luZyB0aGUgIndpdGgiXG4gICBzdGF0ZW1lbnQuXG5cbiAgIElmIHRoZSBzdWl0ZSB3YXMgZXhpdGVkIGZvciBhbnkgcmVhc29uIG90aGVyIHRoYW4gYW4gZXhjZXB0aW9uLCB0aGVcbiAgIHJldHVybiB2YWx1ZSBmcm9tICJfX2V4aXRfXygpIiBpcyBpZ25vcmVkLCBhbmQgZXhlY3V0aW9uIHByb2NlZWRzXG4gICBhdCB0aGUgbm9ybWFsIGxvY2F0aW9uIGZvciB0aGUga2luZCBvZiBleGl0IHRoYXQgd2FzIHRha2VuLlxuXG5XaXRoIG1vcmUgdGhhbiBvbmUgaXRlbSwgdGhlIGNvbnRleHQgbWFuYWdlcnMgYXJlIHByb2Nlc3NlZCBhcyBpZlxubXVsdGlwbGUgIndpdGgiIHN0YXRlbWVudHMgd2VyZSBuZXN0ZWQ6XG5cbiAgIHdpdGggQSgpIGFzIGEsIEIoKSBhcyBiOlxuICAgICAgIHN1aXRlXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgd2l0aCBBKCkgYXMgYTpcbiAgICAgICB3aXRoIEIoKSBhcyBiOlxuICAgICAgICAgICBzdWl0ZVxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4xOiBTdXBwb3J0IGZvciBtdWx0aXBsZSBjb250ZXh0IGV4cHJlc3Npb25zLlxuXG5TZWUgYWxzbzogKipQRVAgMzQzKiogLSBUaGUgIndpdGgiIHN0YXRlbWVudFxuXG4gICAgIFRoZSBzcGVjaWZpY2F0aW9uLCBiYWNrZ3JvdW5kLCBhbmQgZXhhbXBsZXMgZm9yIHRoZSBQeXRob24gIndpdGgiXG4gICAgIHN0YXRlbWVudC5cbicsCi0gJ3lpZWxkJzogdSdcblRoZSAieWllbGQiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIHlpZWxkX3N0bXQgOjo9IHlpZWxkX2V4cHJlc3Npb25cblxuQSAieWllbGQiIHN0YXRlbWVudCBpcyBzZW1hbnRpY2FsbHkgZXF1aXZhbGVudCB0byBhICp5aWVsZFxuZXhwcmVzc2lvbiouIFRoZSB5aWVsZCBzdGF0ZW1lbnQgY2FuIGJlIHVzZWQgdG8gb21pdCB0aGUgcGFyZW50aGVzZXNcbnRoYXQgd291bGQgb3RoZXJ3aXNlIGJlIHJlcXVpcmVkIGluIHRoZSBlcXVpdmFsZW50IHlpZWxkIGV4cHJlc3Npb25cbnN0YXRlbWVudC4gRm9yIGV4YW1wbGUsIHRoZSB5aWVsZCBzdGF0ZW1lbnRzXG5cbiAgIHlpZWxkIDxleHByPlxuICAgeWllbGQgZnJvbSA8ZXhwcj5cblxuYXJlIGVxdWl2YWxlbnQgdG8gdGhlIHlpZWxkIGV4cHJlc3Npb24gc3RhdGVtZW50c1xuXG4gICAoeWllbGQgPGV4cHI+KVxuICAgKHlpZWxkIGZyb20gPGV4cHI+KVxuXG5ZaWVsZCBleHByZXNzaW9ucyBhbmQgc3RhdGVtZW50cyBhcmUgb25seSB1c2VkIHdoZW4gZGVmaW5pbmcgYVxuKmdlbmVyYXRvciogZnVuY3Rpb24sIGFuZCBhcmUgb25seSB1c2VkIGluIHRoZSBib2R5IG9mIHRoZSBnZW5lcmF0b3JcbmZ1bmN0aW9uLiAgVXNpbmcgeWllbGQgaW4gYSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIHN1ZmZpY2llbnQgdG8gY2F1c2VcbnRoYXQgZGVmaW5pdGlvbiB0byBjcmVhdGUgYSBnZW5lcmF0b3IgZnVuY3Rpb24gaW5zdGVhZCBvZiBhIG5vcm1hbFxuZnVuY3Rpb24uXG5cbkZvciBmdWxsIGRldGFpbHMgb2YgInlpZWxkIiBzZW1hbnRpY3MsIHJlZmVyIHRvIHRoZSAqWWllbGRcbmV4cHJlc3Npb25zKiBzZWN0aW9uLlxuJ30KKyMgQXV0b2dlbmVyYXRlZCBieSBTcGhpbnggb24gVHVlIERlYyAgNiAxODo1MTo1MSAyMDE2Cit0b3BpY3MgPSB7J2Fzc2VydCc6ICdcbicKKyAgICAgICAgICAgJ1RoZSAiYXNzZXJ0IiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnQXNzZXJ0IHN0YXRlbWVudHMgYXJlIGEgY29udmVuaWVudCB3YXkgdG8gaW5zZXJ0IGRlYnVnZ2luZyAnCisgICAgICAgICAgICdhc3NlcnRpb25zXG4nCisgICAgICAgICAgICdpbnRvIGEgcHJvZ3JhbTpcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgYXNzZXJ0X3N0bXQgOjo9ICJhc3NlcnQiIGV4cHJlc3Npb24gWyIsIiBleHByZXNzaW9uXVxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgc2ltcGxlIGZvcm0sICJhc3NlcnQgZXhwcmVzc2lvbiIsIGlzIGVxdWl2YWxlbnQgdG9cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgaWYgX19kZWJ1Z19fOlxuJworICAgICAgICAgICAnICAgICAgIGlmIG5vdCBleHByZXNzaW9uOiByYWlzZSBBc3NlcnRpb25FcnJvclxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgZXh0ZW5kZWQgZm9ybSwgImFzc2VydCBleHByZXNzaW9uMSwgZXhwcmVzc2lvbjIiLCBpcyAnCisgICAgICAgICAgICdlcXVpdmFsZW50IHRvXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIGlmIF9fZGVidWdfXzpcbicKKyAgICAgICAgICAgJyAgICAgICBpZiBub3QgZXhwcmVzc2lvbjE6IHJhaXNlIEFzc2VydGlvbkVycm9yKGV4cHJlc3Npb24yKVxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGVzZSBlcXVpdmFsZW5jZXMgYXNzdW1lIHRoYXQgIl9fZGVidWdfXyIgYW5kICJBc3NlcnRpb25FcnJvciIgJworICAgICAgICAgICAncmVmZXJcbicKKyAgICAgICAgICAgJ3RvIHRoZSBidWlsdC1pbiB2YXJpYWJsZXMgd2l0aCB0aG9zZSBuYW1lcy4gIEluIHRoZSBjdXJyZW50XG4nCisgICAgICAgICAgICdpbXBsZW1lbnRhdGlvbiwgdGhlIGJ1aWx0LWluIHZhcmlhYmxlICJfX2RlYnVnX18iIGlzICJUcnVlIiB1bmRlclxuJworICAgICAgICAgICAnbm9ybWFsIGNpcmN1bXN0YW5jZXMsICJGYWxzZSIgd2hlbiBvcHRpbWl6YXRpb24gaXMgcmVxdWVzdGVkICcKKyAgICAgICAgICAgJyhjb21tYW5kXG4nCisgICAgICAgICAgICdsaW5lIG9wdGlvbiAtTykuICBUaGUgY3VycmVudCBjb2RlIGdlbmVyYXRvciBlbWl0cyBubyBjb2RlIGZvciBhblxuJworICAgICAgICAgICAnYXNzZXJ0IHN0YXRlbWVudCB3aGVuIG9wdGltaXphdGlvbiBpcyByZXF1ZXN0ZWQgYXQgY29tcGlsZSB0aW1lLiAgJworICAgICAgICAgICAnTm90ZVxuJworICAgICAgICAgICAndGhhdCBpdCBpcyB1bm5lY2Vzc2FyeSB0byBpbmNsdWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgdGhlICcKKyAgICAgICAgICAgJ2V4cHJlc3Npb25cbicKKyAgICAgICAgICAgJ3RoYXQgZmFpbGVkIGluIHRoZSBlcnJvciBtZXNzYWdlOyBpdCB3aWxsIGJlIGRpc3BsYXllZCBhcyBwYXJ0IG9mICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnc3RhY2sgdHJhY2UuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0Fzc2lnbm1lbnRzIHRvICJfX2RlYnVnX18iIGFyZSBpbGxlZ2FsLiAgVGhlIHZhbHVlIGZvciB0aGUgJworICAgICAgICAgICAnYnVpbHQtaW5cbicKKyAgICAgICAgICAgJ3ZhcmlhYmxlIGlzIGRldGVybWluZWQgd2hlbiB0aGUgaW50ZXJwcmV0ZXIgc3RhcnRzLlxuJywKKyAnYXNzaWdubWVudCc6ICdcbicKKyAgICAgICAgICAgICAgICdBc3NpZ25tZW50IHN0YXRlbWVudHNcbicKKyAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdBc3NpZ25tZW50IHN0YXRlbWVudHMgYXJlIHVzZWQgdG8gKHJlKWJpbmQgbmFtZXMgdG8gdmFsdWVzIGFuZCAnCisgICAgICAgICAgICAgICAndG9cbicKKyAgICAgICAgICAgICAgICdtb2RpZnkgYXR0cmlidXRlcyBvciBpdGVtcyBvZiBtdXRhYmxlIG9iamVjdHM6XG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICAgYXNzaWdubWVudF9zdG10IDo6PSAodGFyZ2V0X2xpc3QgIj0iKSsgKHN0YXJyZWRfZXhwcmVzc2lvbiAnCisgICAgICAgICAgICAgICAnfCB5aWVsZF9leHByZXNzaW9uKVxuJworICAgICAgICAgICAgICAgJyAgIHRhcmdldF9saXN0ICAgICA6Oj0gdGFyZ2V0ICgiLCIgdGFyZ2V0KSogWyIsIl1cbicKKyAgICAgICAgICAgICAgICcgICB0YXJnZXQgICAgICAgICAgOjo9IGlkZW50aWZpZXJcbicKKyAgICAgICAgICAgICAgICcgICAgICAgICAgICAgIHwgIigiIFt0YXJnZXRfbGlzdF0gIikiXG4nCisgICAgICAgICAgICAgICAnICAgICAgICAgICAgICB8ICJbIiBbdGFyZ2V0X2xpc3RdICJdIlxuJworICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgfCBhdHRyaWJ1dGVyZWZcbicKKyAgICAgICAgICAgICAgICcgICAgICAgICAgICAgIHwgc3Vic2NyaXB0aW9uXG4nCisgICAgICAgICAgICAgICAnICAgICAgICAgICAgICB8IHNsaWNpbmdcbicKKyAgICAgICAgICAgICAgICcgICAgICAgICAgICAgIHwgIioiIHRhcmdldFxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyhTZWUgc2VjdGlvbiBQcmltYXJpZXMgZm9yIHRoZSBzeW50YXggZGVmaW5pdGlvbnMgZm9yICcKKyAgICAgICAgICAgICAgICcqYXR0cmlidXRlcmVmKixcbicKKyAgICAgICAgICAgICAgICcqc3Vic2NyaXB0aW9uKiwgYW5kICpzbGljaW5nKi4pXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnQW4gYXNzaWdubWVudCBzdGF0ZW1lbnQgZXZhbHVhdGVzIHRoZSBleHByZXNzaW9uIGxpc3QgJworICAgICAgICAgICAgICAgJyhyZW1lbWJlciB0aGF0XG4nCisgICAgICAgICAgICAgICAndGhpcyBjYW4gYmUgYSBzaW5nbGUgZXhwcmVzc2lvbiBvciBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0LCB0aGUgJworICAgICAgICAgICAgICAgJ2xhdHRlclxuJworICAgICAgICAgICAgICAgJ3lpZWxkaW5nIGEgdHVwbGUpIGFuZCBhc3NpZ25zIHRoZSBzaW5nbGUgcmVzdWx0aW5nIG9iamVjdCB0byAnCisgICAgICAgICAgICAgICAnZWFjaCBvZlxuJworICAgICAgICAgICAgICAgJ3RoZSB0YXJnZXQgbGlzdHMsIGZyb20gbGVmdCB0byByaWdodC5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdBc3NpZ25tZW50IGlzIGRlZmluZWQgcmVjdXJzaXZlbHkgZGVwZW5kaW5nIG9uIHRoZSBmb3JtIG9mIHRoZSAnCisgICAgICAgICAgICAgICAndGFyZ2V0XG4nCisgICAgICAgICAgICAgICAnKGxpc3QpLiBXaGVuIGEgdGFyZ2V0IGlzIHBhcnQgb2YgYSBtdXRhYmxlIG9iamVjdCAoYW4gJworICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZVxuJworICAgICAgICAgICAgICAgJ3JlZmVyZW5jZSwgc3Vic2NyaXB0aW9uIG9yIHNsaWNpbmcpLCB0aGUgbXV0YWJsZSBvYmplY3QgbXVzdFxuJworICAgICAgICAgICAgICAgJ3VsdGltYXRlbHkgcGVyZm9ybSB0aGUgYXNzaWdubWVudCBhbmQgZGVjaWRlIGFib3V0IGl0cyAnCisgICAgICAgICAgICAgICAndmFsaWRpdHksIGFuZFxuJworICAgICAgICAgICAgICAgJ21heSByYWlzZSBhbiBleGNlcHRpb24gaWYgdGhlIGFzc2lnbm1lbnQgaXMgdW5hY2NlcHRhYmxlLiAgVGhlICcKKyAgICAgICAgICAgICAgICdydWxlc1xuJworICAgICAgICAgICAgICAgJ29ic2VydmVkIGJ5IHZhcmlvdXMgdHlwZXMgYW5kIHRoZSBleGNlcHRpb25zIHJhaXNlZCBhcmUgZ2l2ZW4gJworICAgICAgICAgICAgICAgJ3dpdGggdGhlXG4nCisgICAgICAgICAgICAgICAnZGVmaW5pdGlvbiBvZiB0aGUgb2JqZWN0IHR5cGVzIChzZWUgc2VjdGlvbiBUaGUgc3RhbmRhcmQgdHlwZVxuJworICAgICAgICAgICAgICAgJ2hpZXJhcmNoeSkuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnQXNzaWdubWVudCBvZiBhbiBvYmplY3QgdG8gYSB0YXJnZXQgbGlzdCwgb3B0aW9uYWxseSBlbmNsb3NlZCAnCisgICAgICAgICAgICAgICAnaW5cbicKKyAgICAgICAgICAgICAgICdwYXJlbnRoZXNlcyBvciBzcXVhcmUgYnJhY2tldHMsIGlzIHJlY3Vyc2l2ZWx5IGRlZmluZWQgYXMgJworICAgICAgICAgICAgICAgJ2ZvbGxvd3MuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnKiBJZiB0aGUgdGFyZ2V0IGxpc3QgaXMgZW1wdHk6IFRoZSBvYmplY3QgbXVzdCBhbHNvIGJlIGFuICcKKyAgICAgICAgICAgICAgICdlbXB0eVxuJworICAgICAgICAgICAgICAgJyAgaXRlcmFibGUuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnKiBJZiB0aGUgdGFyZ2V0IGxpc3QgaXMgYSBzaW5nbGUgdGFyZ2V0IGluIHBhcmVudGhlc2VzOiBUaGUgJworICAgICAgICAgICAgICAgJ29iamVjdFxuJworICAgICAgICAgICAgICAgJyAgaXMgYXNzaWduZWQgdG8gdGhhdCB0YXJnZXQuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnKiBJZiB0aGUgdGFyZ2V0IGxpc3QgaXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiB0YXJnZXRzLCBvciAnCisgICAgICAgICAgICAgICAnYVxuJworICAgICAgICAgICAgICAgJyAgc2luZ2xlIHRhcmdldCBpbiBzcXVhcmUgYnJhY2tldHM6IFRoZSBvYmplY3QgbXVzdCBiZSBhbiAnCisgICAgICAgICAgICAgICAnaXRlcmFibGVcbicKKyAgICAgICAgICAgICAgICcgIHdpdGggdGhlIHNhbWUgbnVtYmVyIG9mIGl0ZW1zIGFzIHRoZXJlIGFyZSB0YXJnZXRzIGluIHRoZSAnCisgICAgICAgICAgICAgICAndGFyZ2V0XG4nCisgICAgICAgICAgICAgICAnICBsaXN0LCBhbmQgdGhlIGl0ZW1zIGFyZSBhc3NpZ25lZCwgZnJvbSBsZWZ0IHRvIHJpZ2h0LCB0byAnCisgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAnICBjb3JyZXNwb25kaW5nIHRhcmdldHMuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICAqIElmIHRoZSB0YXJnZXQgbGlzdCBjb250YWlucyBvbmUgdGFyZ2V0IHByZWZpeGVkIHdpdGggYW5cbicKKyAgICAgICAgICAgICAgICcgICAgYXN0ZXJpc2ssIGNhbGxlZCBhICJzdGFycmVkIiB0YXJnZXQ6IFRoZSBvYmplY3QgbXVzdCBiZSAnCisgICAgICAgICAgICAgICAnYW5cbicKKyAgICAgICAgICAgICAgICcgICAgaXRlcmFibGUgd2l0aCBhdCBsZWFzdCBhcyBtYW55IGl0ZW1zIGFzIHRoZXJlIGFyZSB0YXJnZXRzICcKKyAgICAgICAgICAgICAgICdpbiB0aGVcbicKKyAgICAgICAgICAgICAgICcgICAgdGFyZ2V0IGxpc3QsIG1pbnVzIG9uZS4gIFRoZSBmaXJzdCBpdGVtcyBvZiB0aGUgaXRlcmFibGUgJworICAgICAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAgICAgJyAgICBhc3NpZ25lZCwgZnJvbSBsZWZ0IHRvIHJpZ2h0LCB0byB0aGUgdGFyZ2V0cyBiZWZvcmUgdGhlICcKKyAgICAgICAgICAgICAgICdzdGFycmVkXG4nCisgICAgICAgICAgICAgICAnICAgIHRhcmdldC4gIFRoZSBmaW5hbCBpdGVtcyBvZiB0aGUgaXRlcmFibGUgYXJlIGFzc2lnbmVkIHRvICcKKyAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICcgICAgdGFyZ2V0cyBhZnRlciB0aGUgc3RhcnJlZCB0YXJnZXQuICBBIGxpc3Qgb2YgdGhlIHJlbWFpbmluZyAnCisgICAgICAgICAgICAgICAnaXRlbXNcbicKKyAgICAgICAgICAgICAgICcgICAgaW4gdGhlIGl0ZXJhYmxlIGlzIHRoZW4gYXNzaWduZWQgdG8gdGhlIHN0YXJyZWQgdGFyZ2V0ICcKKyAgICAgICAgICAgICAgICcodGhlIGxpc3RcbicKKyAgICAgICAgICAgICAgICcgICAgY2FuIGJlIGVtcHR5KS5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcgICogRWxzZTogVGhlIG9iamVjdCBtdXN0IGJlIGFuIGl0ZXJhYmxlIHdpdGggdGhlIHNhbWUgbnVtYmVyICcKKyAgICAgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAgICAgJyAgICBpdGVtcyBhcyB0aGVyZSBhcmUgdGFyZ2V0cyBpbiB0aGUgdGFyZ2V0IGxpc3QsIGFuZCB0aGUgJworICAgICAgICAgICAgICAgJ2l0ZW1zIGFyZVxuJworICAgICAgICAgICAgICAgJyAgICBhc3NpZ25lZCwgZnJvbSBsZWZ0IHRvIHJpZ2h0LCB0byB0aGUgY29ycmVzcG9uZGluZyAnCisgICAgICAgICAgICAgICAndGFyZ2V0cy5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdBc3NpZ25tZW50IG9mIGFuIG9iamVjdCB0byBhIHNpbmdsZSB0YXJnZXQgaXMgcmVjdXJzaXZlbHkgJworICAgICAgICAgICAgICAgJ2RlZmluZWQgYXNcbicKKyAgICAgICAgICAgICAgICdmb2xsb3dzLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyogSWYgdGhlIHRhcmdldCBpcyBhbiBpZGVudGlmaWVyIChuYW1lKTpcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcgICogSWYgdGhlIG5hbWUgZG9lcyBub3Qgb2NjdXIgaW4gYSAiZ2xvYmFsIiBvciAibm9ubG9jYWwiICcKKyAgICAgICAgICAgICAgICdzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgICAgICcgICAgaW4gdGhlIGN1cnJlbnQgY29kZSBibG9jazogdGhlIG5hbWUgaXMgYm91bmQgdG8gdGhlIG9iamVjdCAnCisgICAgICAgICAgICAgICAnaW4gdGhlXG4nCisgICAgICAgICAgICAgICAnICAgIGN1cnJlbnQgbG9jYWwgbmFtZXNwYWNlLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgKiBPdGhlcndpc2U6IHRoZSBuYW1lIGlzIGJvdW5kIHRvIHRoZSBvYmplY3QgaW4gdGhlIGdsb2JhbFxuJworICAgICAgICAgICAgICAgJyAgICBuYW1lc3BhY2Ugb3IgdGhlIG91dGVyIG5hbWVzcGFjZSBkZXRlcm1pbmVkIGJ5ICcKKyAgICAgICAgICAgICAgICcibm9ubG9jYWwiLFxuJworICAgICAgICAgICAgICAgJyAgICByZXNwZWN0aXZlbHkuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICBUaGUgbmFtZSBpcyByZWJvdW5kIGlmIGl0IHdhcyBhbHJlYWR5IGJvdW5kLiAgVGhpcyBtYXkgY2F1c2UgJworICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgJyAgcmVmZXJlbmNlIGNvdW50IGZvciB0aGUgb2JqZWN0IHByZXZpb3VzbHkgYm91bmQgdG8gdGhlIG5hbWUgJworICAgICAgICAgICAgICAgJ3RvIHJlYWNoXG4nCisgICAgICAgICAgICAgICAnICB6ZXJvLCBjYXVzaW5nIHRoZSBvYmplY3QgdG8gYmUgZGVhbGxvY2F0ZWQgYW5kIGl0cyAnCisgICAgICAgICAgICAgICAnZGVzdHJ1Y3RvciAoaWYgaXRcbicKKyAgICAgICAgICAgICAgICcgIGhhcyBvbmUpIHRvIGJlIGNhbGxlZC5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcqIElmIHRoZSB0YXJnZXQgaXMgYW4gYXR0cmlidXRlIHJlZmVyZW5jZTogVGhlIHByaW1hcnkgJworICAgICAgICAgICAgICAgJ2V4cHJlc3Npb24gaW5cbicKKyAgICAgICAgICAgICAgICcgIHRoZSByZWZlcmVuY2UgaXMgZXZhbHVhdGVkLiAgSXQgc2hvdWxkIHlpZWxkIGFuIG9iamVjdCB3aXRoXG4nCisgICAgICAgICAgICAgICAnICBhc3NpZ25hYmxlIGF0dHJpYnV0ZXM7IGlmIHRoaXMgaXMgbm90IHRoZSBjYXNlLCAiVHlwZUVycm9yIiAnCisgICAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAgICcgIHJhaXNlZC4gIFRoYXQgb2JqZWN0IGlzIHRoZW4gYXNrZWQgdG8gYXNzaWduIHRoZSBhc3NpZ25lZCAnCisgICAgICAgICAgICAgICAnb2JqZWN0IHRvXG4nCisgICAgICAgICAgICAgICAnICB0aGUgZ2l2ZW4gYXR0cmlidXRlOyBpZiBpdCBjYW5ub3QgcGVyZm9ybSB0aGUgYXNzaWdubWVudCwgaXQgJworICAgICAgICAgICAgICAgJ3JhaXNlc1xuJworICAgICAgICAgICAgICAgJyAgYW4gZXhjZXB0aW9uICh1c3VhbGx5IGJ1dCBub3QgbmVjZXNzYXJpbHkgJworICAgICAgICAgICAgICAgJyJBdHRyaWJ1dGVFcnJvciIpLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgTm90ZTogSWYgdGhlIG9iamVjdCBpcyBhIGNsYXNzIGluc3RhbmNlIGFuZCB0aGUgYXR0cmlidXRlICcKKyAgICAgICAgICAgICAgICdyZWZlcmVuY2VcbicKKyAgICAgICAgICAgICAgICcgIG9jY3VycyBvbiBib3RoIHNpZGVzIG9mIHRoZSBhc3NpZ25tZW50IG9wZXJhdG9yLCB0aGUgUkhTICcKKyAgICAgICAgICAgICAgICdleHByZXNzaW9uLFxuJworICAgICAgICAgICAgICAgJyAgImEueCIgY2FuIGFjY2VzcyBlaXRoZXIgYW4gaW5zdGFuY2UgYXR0cmlidXRlIG9yIChpZiBubyAnCisgICAgICAgICAgICAgICAnaW5zdGFuY2VcbicKKyAgICAgICAgICAgICAgICcgIGF0dHJpYnV0ZSBleGlzdHMpIGEgY2xhc3MgYXR0cmlidXRlLiAgVGhlIExIUyB0YXJnZXQgImEueCIgJworICAgICAgICAgICAgICAgJ2lzIGFsd2F5c1xuJworICAgICAgICAgICAgICAgJyAgc2V0IGFzIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSwgY3JlYXRpbmcgaXQgaWYgbmVjZXNzYXJ5LiAgJworICAgICAgICAgICAgICAgJ1RodXMsIHRoZVxuJworICAgICAgICAgICAgICAgJyAgdHdvIG9jY3VycmVuY2VzIG9mICJhLngiIGRvIG5vdCBuZWNlc3NhcmlseSByZWZlciB0byB0aGUgJworICAgICAgICAgICAgICAgJ3NhbWVcbicKKyAgICAgICAgICAgICAgICcgIGF0dHJpYnV0ZTogaWYgdGhlIFJIUyBleHByZXNzaW9uIHJlZmVycyB0byBhIGNsYXNzICcKKyAgICAgICAgICAgICAgICdhdHRyaWJ1dGUsIHRoZVxuJworICAgICAgICAgICAgICAgJyAgTEhTIGNyZWF0ZXMgYSBuZXcgaW5zdGFuY2UgYXR0cmlidXRlIGFzIHRoZSB0YXJnZXQgb2YgdGhlXG4nCisgICAgICAgICAgICAgICAnICBhc3NpZ25tZW50OlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgICAgY2xhc3MgQ2xzOlxuJworICAgICAgICAgICAgICAgJyAgICAgICAgIHggPSAzICAgICAgICAgICAgICMgY2xhc3MgdmFyaWFibGVcbicKKyAgICAgICAgICAgICAgICcgICAgIGluc3QgPSBDbHMoKVxuJworICAgICAgICAgICAgICAgJyAgICAgaW5zdC54ID0gaW5zdC54ICsgMSAgICMgd3JpdGVzIGluc3QueCBhcyA0IGxlYXZpbmcgQ2xzLnggJworICAgICAgICAgICAgICAgJ2FzIDNcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcgIFRoaXMgZGVzY3JpcHRpb24gZG9lcyBub3QgbmVjZXNzYXJpbHkgYXBwbHkgdG8gZGVzY3JpcHRvclxuJworICAgICAgICAgICAgICAgJyAgYXR0cmlidXRlcywgc3VjaCBhcyBwcm9wZXJ0aWVzIGNyZWF0ZWQgd2l0aCAicHJvcGVydHkoKSIuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnKiBJZiB0aGUgdGFyZ2V0IGlzIGEgc3Vic2NyaXB0aW9uOiBUaGUgcHJpbWFyeSBleHByZXNzaW9uIGluICcKKyAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICcgIHJlZmVyZW5jZSBpcyBldmFsdWF0ZWQuICBJdCBzaG91bGQgeWllbGQgZWl0aGVyIGEgbXV0YWJsZSAnCisgICAgICAgICAgICAgICAnc2VxdWVuY2VcbicKKyAgICAgICAgICAgICAgICcgIG9iamVjdCAoc3VjaCBhcyBhIGxpc3QpIG9yIGEgbWFwcGluZyBvYmplY3QgKHN1Y2ggYXMgYSAnCisgICAgICAgICAgICAgICAnZGljdGlvbmFyeSkuXG4nCisgICAgICAgICAgICAgICAnICBOZXh0LCB0aGUgc3Vic2NyaXB0IGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgSWYgdGhlIHByaW1hcnkgaXMgYSBtdXRhYmxlIHNlcXVlbmNlIG9iamVjdCAoc3VjaCBhcyBhICcKKyAgICAgICAgICAgICAgICdsaXN0KSwgdGhlXG4nCisgICAgICAgICAgICAgICAnICBzdWJzY3JpcHQgbXVzdCB5aWVsZCBhbiBpbnRlZ2VyLiAgSWYgaXQgaXMgbmVnYXRpdmUsIHRoZSAnCisgICAgICAgICAgICAgICAic2VxdWVuY2Unc1xuIgorICAgICAgICAgICAgICAgJyAgbGVuZ3RoIGlzIGFkZGVkIHRvIGl0LiAgVGhlIHJlc3VsdGluZyB2YWx1ZSBtdXN0IGJlIGEgJworICAgICAgICAgICAgICAgJ25vbm5lZ2F0aXZlXG4nCisgICAgICAgICAgICAgICAiICBpbnRlZ2VyIGxlc3MgdGhhbiB0aGUgc2VxdWVuY2UncyBsZW5ndGgsIGFuZCB0aGUgc2VxdWVuY2UgaXMgIgorICAgICAgICAgICAgICAgJ2Fza2VkXG4nCisgICAgICAgICAgICAgICAnICB0byBhc3NpZ24gdGhlIGFzc2lnbmVkIG9iamVjdCB0byBpdHMgaXRlbSB3aXRoIHRoYXQgaW5kZXguICAnCisgICAgICAgICAgICAgICAnSWYgdGhlXG4nCisgICAgICAgICAgICAgICAnICBpbmRleCBpcyBvdXQgb2YgcmFuZ2UsICJJbmRleEVycm9yIiBpcyByYWlzZWQgKGFzc2lnbm1lbnQgdG8gJworICAgICAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgICAgICcgIHN1YnNjcmlwdGVkIHNlcXVlbmNlIGNhbm5vdCBhZGQgbmV3IGl0ZW1zIHRvIGEgbGlzdCkuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICBJZiB0aGUgcHJpbWFyeSBpcyBhIG1hcHBpbmcgb2JqZWN0IChzdWNoIGFzIGEgZGljdGlvbmFyeSksICcKKyAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICIgIHN1YnNjcmlwdCBtdXN0IGhhdmUgYSB0eXBlIGNvbXBhdGlibGUgd2l0aCB0aGUgbWFwcGluZydzIGtleSAiCisgICAgICAgICAgICAgICAndHlwZSxcbicKKyAgICAgICAgICAgICAgICcgIGFuZCB0aGUgbWFwcGluZyBpcyB0aGVuIGFza2VkIHRvIGNyZWF0ZSBhIGtleS9kYXR1bSBwYWlyICcKKyAgICAgICAgICAgICAgICd3aGljaCBtYXBzXG4nCisgICAgICAgICAgICAgICAnICB0aGUgc3Vic2NyaXB0IHRvIHRoZSBhc3NpZ25lZCBvYmplY3QuICBUaGlzIGNhbiBlaXRoZXIgJworICAgICAgICAgICAgICAgJ3JlcGxhY2UgYW5cbicKKyAgICAgICAgICAgICAgICcgIGV4aXN0aW5nIGtleS92YWx1ZSBwYWlyIHdpdGggdGhlIHNhbWUga2V5IHZhbHVlLCBvciBpbnNlcnQgYSAnCisgICAgICAgICAgICAgICAnbmV3XG4nCisgICAgICAgICAgICAgICAnICBrZXkvdmFsdWUgcGFpciAoaWYgbm8ga2V5IHdpdGggdGhlIHNhbWUgdmFsdWUgZXhpc3RlZCkuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICBGb3IgdXNlci1kZWZpbmVkIG9iamVjdHMsIHRoZSAiX19zZXRpdGVtX18oKSIgbWV0aG9kIGlzICcKKyAgICAgICAgICAgICAgICdjYWxsZWQgd2l0aFxuJworICAgICAgICAgICAgICAgJyAgYXBwcm9wcmlhdGUgYXJndW1lbnRzLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyogSWYgdGhlIHRhcmdldCBpcyBhIHNsaWNpbmc6IFRoZSBwcmltYXJ5IGV4cHJlc3Npb24gaW4gdGhlXG4nCisgICAgICAgICAgICAgICAnICByZWZlcmVuY2UgaXMgZXZhbHVhdGVkLiAgSXQgc2hvdWxkIHlpZWxkIGEgbXV0YWJsZSBzZXF1ZW5jZSAnCisgICAgICAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgICAgICAnICAoc3VjaCBhcyBhIGxpc3QpLiAgVGhlIGFzc2lnbmVkIG9iamVjdCBzaG91bGQgYmUgYSBzZXF1ZW5jZSAnCisgICAgICAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgICAgICAnICBvZiB0aGUgc2FtZSB0eXBlLiAgTmV4dCwgdGhlIGxvd2VyIGFuZCB1cHBlciBib3VuZCAnCisgICAgICAgICAgICAgICAnZXhwcmVzc2lvbnMgYXJlXG4nCisgICAgICAgICAgICAgICAnICBldmFsdWF0ZWQsIGluc29mYXIgdGhleSBhcmUgcHJlc2VudDsgZGVmYXVsdHMgYXJlIHplcm8gYW5kICcKKyAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICIgIHNlcXVlbmNlJ3MgbGVuZ3RoLiAgVGhlIGJvdW5kcyBzaG91bGQgZXZhbHVhdGUgdG8gaW50ZWdlcnMuICIKKyAgICAgICAgICAgICAgICdJZlxuJworICAgICAgICAgICAgICAgIiAgZWl0aGVyIGJvdW5kIGlzIG5lZ2F0aXZlLCB0aGUgc2VxdWVuY2UncyBsZW5ndGggaXMgYWRkZWQgdG8gIgorICAgICAgICAgICAgICAgJ2l0LiAgVGhlXG4nCisgICAgICAgICAgICAgICAnICByZXN1bHRpbmcgYm91bmRzIGFyZSBjbGlwcGVkIHRvIGxpZSBiZXR3ZWVuIHplcm8gYW5kIHRoZSAnCisgICAgICAgICAgICAgICAic2VxdWVuY2Unc1xuIgorICAgICAgICAgICAgICAgJyAgbGVuZ3RoLCBpbmNsdXNpdmUuICBGaW5hbGx5LCB0aGUgc2VxdWVuY2Ugb2JqZWN0IGlzIGFza2VkIHRvICcKKyAgICAgICAgICAgICAgICdyZXBsYWNlXG4nCisgICAgICAgICAgICAgICAnICB0aGUgc2xpY2Ugd2l0aCB0aGUgaXRlbXMgb2YgdGhlIGFzc2lnbmVkIHNlcXVlbmNlLiAgVGhlICcKKyAgICAgICAgICAgICAgICdsZW5ndGggb2ZcbicKKyAgICAgICAgICAgICAgICcgIHRoZSBzbGljZSBtYXkgYmUgZGlmZmVyZW50IGZyb20gdGhlIGxlbmd0aCBvZiB0aGUgYXNzaWduZWQgJworICAgICAgICAgICAgICAgJ3NlcXVlbmNlLFxuJworICAgICAgICAgICAgICAgJyAgdGh1cyBjaGFuZ2luZyB0aGUgbGVuZ3RoIG9mIHRoZSB0YXJnZXQgc2VxdWVuY2UsIGlmIHRoZSAnCisgICAgICAgICAgICAgICAndGFyZ2V0XG4nCisgICAgICAgICAgICAgICAnICBzZXF1ZW5jZSBhbGxvd3MgaXQuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBJbiB0aGUgY3VycmVudCAnCisgICAgICAgICAgICAgICAnaW1wbGVtZW50YXRpb24sIHRoZVxuJworICAgICAgICAgICAgICAgJ3N5bnRheCBmb3IgdGFyZ2V0cyBpcyB0YWtlbiB0byBiZSB0aGUgc2FtZSBhcyBmb3IgZXhwcmVzc2lvbnMsICcKKyAgICAgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgICAgICdpbnZhbGlkIHN5bnRheCBpcyByZWplY3RlZCBkdXJpbmcgdGhlIGNvZGUgZ2VuZXJhdGlvbiBwaGFzZSwgJworICAgICAgICAgICAgICAgJ2NhdXNpbmdcbicKKyAgICAgICAgICAgICAgICdsZXNzIGRldGFpbGVkIGVycm9yIG1lc3NhZ2VzLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ0FsdGhvdWdoIHRoZSBkZWZpbml0aW9uIG9mIGFzc2lnbm1lbnQgaW1wbGllcyB0aGF0IG92ZXJsYXBzICcKKyAgICAgICAgICAgICAgICdiZXR3ZWVuXG4nCisgICAgICAgICAgICAgICAidGhlIGxlZnQtaGFuZCBzaWRlIGFuZCB0aGUgcmlnaHQtaGFuZCBzaWRlIGFyZSAnc2ltdWx0YW5lb3VzJyAiCisgICAgICAgICAgICAgICAnKGZvclxuJworICAgICAgICAgICAgICAgJ2V4YW1wbGUgImEsIGIgPSBiLCBhIiBzd2FwcyB0d28gdmFyaWFibGVzKSwgb3ZlcmxhcHMgKndpdGhpbiogJworICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgJ2NvbGxlY3Rpb24gb2YgYXNzaWduZWQtdG8gdmFyaWFibGVzIG9jY3VyIGxlZnQtdG8tcmlnaHQsICcKKyAgICAgICAgICAgICAgICdzb21ldGltZXNcbicKKyAgICAgICAgICAgICAgICdyZXN1bHRpbmcgaW4gY29uZnVzaW9uLiAgRm9yIGluc3RhbmNlLCB0aGUgZm9sbG93aW5nIHByb2dyYW0gJworICAgICAgICAgICAgICAgJ3ByaW50c1xuJworICAgICAgICAgICAgICAgJyJbMCwgMl0iOlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgIHggPSBbMCwgMV1cbicKKyAgICAgICAgICAgICAgICcgICBpID0gMFxuJworICAgICAgICAgICAgICAgJyAgIGksIHhbaV0gPSAxLCAyICAgICAgICAgIyBpIGlzIHVwZGF0ZWQsIHRoZW4geFtpXSBpcyAnCisgICAgICAgICAgICAgICAndXBkYXRlZFxuJworICAgICAgICAgICAgICAgJyAgIHByaW50KHgpXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnU2VlIGFsc286XG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICAqKlBFUCAzMTMyKiogLSBFeHRlbmRlZCBJdGVyYWJsZSBVbnBhY2tpbmdcbicKKyAgICAgICAgICAgICAgICcgICAgIFRoZSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgIip0YXJnZXQiIGZlYXR1cmUuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnQXVnbWVudGVkIGFzc2lnbm1lbnQgc3RhdGVtZW50c1xuJworICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdBdWdtZW50ZWQgYXNzaWdubWVudCBpcyB0aGUgY29tYmluYXRpb24sIGluIGEgc2luZ2xlICcKKyAgICAgICAgICAgICAgICdzdGF0ZW1lbnQsIG9mIGFcbicKKyAgICAgICAgICAgICAgICdiaW5hcnkgb3BlcmF0aW9uIGFuZCBhbiBhc3NpZ25tZW50IHN0YXRlbWVudDpcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcgICBhdWdtZW50ZWRfYXNzaWdubWVudF9zdG10IDo6PSBhdWd0YXJnZXQgYXVnb3AgJworICAgICAgICAgICAgICAgJyhleHByZXNzaW9uX2xpc3QgfCB5aWVsZF9leHByZXNzaW9uKVxuJworICAgICAgICAgICAgICAgJyAgIGF1Z3RhcmdldCAgICAgICAgICAgICAgICAgOjo9IGlkZW50aWZpZXIgfCBhdHRyaWJ1dGVyZWYgfCAnCisgICAgICAgICAgICAgICAnc3Vic2NyaXB0aW9uIHwgc2xpY2luZ1xuJworICAgICAgICAgICAgICAgJyAgIGF1Z29wICAgICAgICAgICAgICAgICAgICAgOjo9ICIrPSIgfCAiLT0iIHwgIio9IiB8ICJAPSIgfCAnCisgICAgICAgICAgICAgICAnIi89IiB8ICIvLz0iIHwgIiU9IiB8ICIqKj0iXG4nCisgICAgICAgICAgICAgICAnICAgICAgICAgICAgIHwgIj4+PSIgfCAiPDw9IiB8ICImPSIgfCAiXj0iIHwgInw9IlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyhTZWUgc2VjdGlvbiBQcmltYXJpZXMgZm9yIHRoZSBzeW50YXggZGVmaW5pdGlvbnMgb2YgdGhlIGxhc3QgJworICAgICAgICAgICAgICAgJ3RocmVlXG4nCisgICAgICAgICAgICAgICAnc3ltYm9scy4pXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnQW4gYXVnbWVudGVkIGFzc2lnbm1lbnQgZXZhbHVhdGVzIHRoZSB0YXJnZXQgKHdoaWNoLCB1bmxpa2UgJworICAgICAgICAgICAgICAgJ25vcm1hbFxuJworICAgICAgICAgICAgICAgJ2Fzc2lnbm1lbnQgc3RhdGVtZW50cywgY2Fubm90IGJlIGFuIHVucGFja2luZykgYW5kIHRoZSAnCisgICAgICAgICAgICAgICAnZXhwcmVzc2lvblxuJworICAgICAgICAgICAgICAgJ2xpc3QsIHBlcmZvcm1zIHRoZSBiaW5hcnkgb3BlcmF0aW9uIHNwZWNpZmljIHRvIHRoZSB0eXBlIG9mICcKKyAgICAgICAgICAgICAgICdhc3NpZ25tZW50XG4nCisgICAgICAgICAgICAgICAnb24gdGhlIHR3byBvcGVyYW5kcywgYW5kIGFzc2lnbnMgdGhlIHJlc3VsdCB0byB0aGUgb3JpZ2luYWwgJworICAgICAgICAgICAgICAgJ3RhcmdldC5cbicKKyAgICAgICAgICAgICAgICdUaGUgdGFyZ2V0IGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnQW4gYXVnbWVudGVkIGFzc2lnbm1lbnQgZXhwcmVzc2lvbiBsaWtlICJ4ICs9IDEiIGNhbiBiZSAnCisgICAgICAgICAgICAgICAncmV3cml0dGVuIGFzXG4nCisgICAgICAgICAgICAgICAnInggPSB4ICsgMSIgdG8gYWNoaWV2ZSBhIHNpbWlsYXIsIGJ1dCBub3QgZXhhY3RseSBlcXVhbCAnCisgICAgICAgICAgICAgICAnZWZmZWN0LiBJbiB0aGVcbicKKyAgICAgICAgICAgICAgICdhdWdtZW50ZWQgdmVyc2lvbiwgIngiIGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuIEFsc28sIHdoZW4gJworICAgICAgICAgICAgICAgJ3Bvc3NpYmxlLFxuJworICAgICAgICAgICAgICAgJ3RoZSBhY3R1YWwgb3BlcmF0aW9uIGlzIHBlcmZvcm1lZCAqaW4tcGxhY2UqLCBtZWFuaW5nIHRoYXQgJworICAgICAgICAgICAgICAgJ3JhdGhlciB0aGFuXG4nCisgICAgICAgICAgICAgICAnY3JlYXRpbmcgYSBuZXcgb2JqZWN0IGFuZCBhc3NpZ25pbmcgdGhhdCB0byB0aGUgdGFyZ2V0LCB0aGUgJworICAgICAgICAgICAgICAgJ29sZCBvYmplY3RcbicKKyAgICAgICAgICAgICAgICdpcyBtb2RpZmllZCBpbnN0ZWFkLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ1VubGlrZSBub3JtYWwgYXNzaWdubWVudHMsIGF1Z21lbnRlZCBhc3NpZ25tZW50cyBldmFsdWF0ZSB0aGUgJworICAgICAgICAgICAgICAgJ2xlZnQtXG4nCisgICAgICAgICAgICAgICAnaGFuZCBzaWRlICpiZWZvcmUqIGV2YWx1YXRpbmcgdGhlIHJpZ2h0LWhhbmQgc2lkZS4gIEZvciAnCisgICAgICAgICAgICAgICAnZXhhbXBsZSwgImFbaV1cbicKKyAgICAgICAgICAgICAgICcrPSBmKHgpIiBmaXJzdCBsb29rcy11cCAiYVtpXSIsIHRoZW4gaXQgZXZhbHVhdGVzICJmKHgpIiBhbmQgJworICAgICAgICAgICAgICAgJ3BlcmZvcm1zXG4nCisgICAgICAgICAgICAgICAndGhlIGFkZGl0aW9uLCBhbmQgbGFzdGx5LCBpdCB3cml0ZXMgdGhlIHJlc3VsdCBiYWNrIHRvICcKKyAgICAgICAgICAgICAgICciYVtpXSIuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnV2l0aCB0aGUgZXhjZXB0aW9uIG9mIGFzc2lnbmluZyB0byB0dXBsZXMgYW5kIG11bHRpcGxlIHRhcmdldHMgJworICAgICAgICAgICAgICAgJ2luIGFcbicKKyAgICAgICAgICAgICAgICdzaW5nbGUgc3RhdGVtZW50LCB0aGUgYXNzaWdubWVudCBkb25lIGJ5IGF1Z21lbnRlZCBhc3NpZ25tZW50XG4nCisgICAgICAgICAgICAgICAnc3RhdGVtZW50cyBpcyBoYW5kbGVkIHRoZSBzYW1lIHdheSBhcyBub3JtYWwgYXNzaWdubWVudHMuICcKKyAgICAgICAgICAgICAgICdTaW1pbGFybHksXG4nCisgICAgICAgICAgICAgICAnd2l0aCB0aGUgZXhjZXB0aW9uIG9mIHRoZSBwb3NzaWJsZSAqaW4tcGxhY2UqIGJlaGF2aW9yLCB0aGUgJworICAgICAgICAgICAgICAgJ2JpbmFyeVxuJworICAgICAgICAgICAgICAgJ29wZXJhdGlvbiBwZXJmb3JtZWQgYnkgYXVnbWVudGVkIGFzc2lnbm1lbnQgaXMgdGhlIHNhbWUgYXMgdGhlICcKKyAgICAgICAgICAgICAgICdub3JtYWxcbicKKyAgICAgICAgICAgICAgICdiaW5hcnkgb3BlcmF0aW9ucy5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdGb3IgdGFyZ2V0cyB3aGljaCBhcmUgYXR0cmlidXRlIHJlZmVyZW5jZXMsIHRoZSBzYW1lIGNhdmVhdCAnCisgICAgICAgICAgICAgICAnYWJvdXRcbicKKyAgICAgICAgICAgICAgICdjbGFzcyBhbmQgaW5zdGFuY2UgYXR0cmlidXRlcyBhcHBsaWVzIGFzIGZvciByZWd1bGFyICcKKyAgICAgICAgICAgICAgICdhc3NpZ25tZW50cy5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdBbm5vdGF0ZWQgYXNzaWdubWVudCBzdGF0ZW1lbnRzXG4nCisgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ0Fubm90YXRpb24gYXNzaWdubWVudCBpcyB0aGUgY29tYmluYXRpb24sIGluIGEgc2luZ2xlICcKKyAgICAgICAgICAgICAgICdzdGF0ZW1lbnQsIG9mIGFcbicKKyAgICAgICAgICAgICAgICd2YXJpYWJsZSBvciBhdHRyaWJ1dGUgYW5ub3RhdGlvbiBhbmQgYW4gb3B0aW9uYWwgYXNzaWdubWVudCAnCisgICAgICAgICAgICAgICAnc3RhdGVtZW50OlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgIGFubm90YXRlZF9hc3NpZ25tZW50X3N0bXQgOjo9IGF1Z3RhcmdldCAiOiIgZXhwcmVzc2lvbiBbIj0iICcKKyAgICAgICAgICAgICAgICdleHByZXNzaW9uXVxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ1RoZSBkaWZmZXJlbmNlIGZyb20gbm9ybWFsIEFzc2lnbm1lbnQgc3RhdGVtZW50cyBpcyB0aGF0IG9ubHkgJworICAgICAgICAgICAgICAgJ3NpbmdsZVxuJworICAgICAgICAgICAgICAgJ3RhcmdldCBhbmQgb25seSBzaW5nbGUgcmlnaHQgaGFuZCBzaWRlIHZhbHVlIGlzIGFsbG93ZWQuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnRm9yIHNpbXBsZSBuYW1lcyBhcyBhc3NpZ25tZW50IHRhcmdldHMsIGlmIGluIGNsYXNzIG9yIG1vZHVsZSAnCisgICAgICAgICAgICAgICAnc2NvcGUsXG4nCisgICAgICAgICAgICAgICAndGhlIGFubm90YXRpb25zIGFyZSBldmFsdWF0ZWQgYW5kIHN0b3JlZCBpbiBhIHNwZWNpYWwgY2xhc3Mgb3IgJworICAgICAgICAgICAgICAgJ21vZHVsZVxuJworICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZSAiX19hbm5vdGF0aW9uc19fIiB0aGF0IGlzIGEgZGljdGlvbmFyeSBtYXBwaW5nIGZyb20gJworICAgICAgICAgICAgICAgJ3ZhcmlhYmxlXG4nCisgICAgICAgICAgICAgICAnbmFtZXMgKG1hbmdsZWQgaWYgcHJpdmF0ZSkgdG8gZXZhbHVhdGVkIGFubm90YXRpb25zLiBUaGlzICcKKyAgICAgICAgICAgICAgICdhdHRyaWJ1dGUgaXNcbicKKyAgICAgICAgICAgICAgICd3cml0YWJsZSBhbmQgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIGF0IHRoZSBzdGFydCBvZiBjbGFzcyBvciAnCisgICAgICAgICAgICAgICAnbW9kdWxlXG4nCisgICAgICAgICAgICAgICAnYm9keSBleGVjdXRpb24sIGlmIGFubm90YXRpb25zIGFyZSBmb3VuZCBzdGF0aWNhbGx5LlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ0ZvciBleHByZXNzaW9ucyBhcyBhc3NpZ25tZW50IHRhcmdldHMsIHRoZSBhbm5vdGF0aW9ucyBhcmUgJworICAgICAgICAgICAgICAgJ2V2YWx1YXRlZFxuJworICAgICAgICAgICAgICAgJ2lmIGluIGNsYXNzIG9yIG1vZHVsZSBzY29wZSwgYnV0IG5vdCBzdG9yZWQuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnSWYgYSBuYW1lIGlzIGFubm90YXRlZCBpbiBhIGZ1bmN0aW9uIHNjb3BlLCB0aGVuIHRoaXMgbmFtZSBpcyAnCisgICAgICAgICAgICAgICAnbG9jYWxcbicKKyAgICAgICAgICAgICAgICdmb3IgdGhhdCBzY29wZS4gQW5ub3RhdGlvbnMgYXJlIG5ldmVyIGV2YWx1YXRlZCBhbmQgc3RvcmVkIGluICcKKyAgICAgICAgICAgICAgICdmdW5jdGlvblxuJworICAgICAgICAgICAgICAgJ3Njb3Blcy5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdJZiB0aGUgcmlnaHQgaGFuZCBzaWRlIGlzIHByZXNlbnQsIGFuIGFubm90YXRlZCBhc3NpZ25tZW50ICcKKyAgICAgICAgICAgICAgICdwZXJmb3Jtc1xuJworICAgICAgICAgICAgICAgJ3RoZSBhY3R1YWwgYXNzaWdubWVudCBiZWZvcmUgZXZhbHVhdGluZyBhbm5vdGF0aW9ucyAod2hlcmVcbicKKyAgICAgICAgICAgICAgICdhcHBsaWNhYmxlKS4gSWYgdGhlIHJpZ2h0IGhhbmQgc2lkZSBpcyBub3QgcHJlc2VudCBmb3IgYW4gJworICAgICAgICAgICAgICAgJ2V4cHJlc3Npb25cbicKKyAgICAgICAgICAgICAgICd0YXJnZXQsIHRoZW4gdGhlIGludGVycHJldGVyIGV2YWx1YXRlcyB0aGUgdGFyZ2V0IGV4Y2VwdCBmb3IgJworICAgICAgICAgICAgICAgJ3RoZSBsYXN0XG4nCisgICAgICAgICAgICAgICAnIl9fc2V0aXRlbV9fKCkiIG9yICJfX3NldGF0dHJfXygpIiBjYWxsLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ1NlZSBhbHNvOiAqKlBFUCA1MjYqKiAtIFZhcmlhYmxlIGFuZCBhdHRyaWJ1dGUgYW5ub3RhdGlvbiAnCisgICAgICAgICAgICAgICAnc3ludGF4XG4nCisgICAgICAgICAgICAgICAnICAqKlBFUCA0ODQqKiAtIFR5cGUgaGludHNcbicsCisgJ2F0b20taWRlbnRpZmllcnMnOiAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnSWRlbnRpZmllcnMgKE5hbWVzKVxuJworICAgICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdBbiBpZGVudGlmaWVyIG9jY3VycmluZyBhcyBhbiBhdG9tIGlzIGEgbmFtZS4gIFNlZSAnCisgICAgICAgICAgICAgICAgICAgICAnc2VjdGlvbiBJZGVudGlmaWVyc1xuJworICAgICAgICAgICAgICAgICAgICAgJ2FuZCBrZXl3b3JkcyBmb3IgbGV4aWNhbCBkZWZpbml0aW9uIGFuZCBzZWN0aW9uIE5hbWluZyAnCisgICAgICAgICAgICAgICAgICAgICAnYW5kIGJpbmRpbmcgZm9yXG4nCisgICAgICAgICAgICAgICAgICAgICAnZG9jdW1lbnRhdGlvbiBvZiBuYW1pbmcgYW5kIGJpbmRpbmcuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnV2hlbiB0aGUgbmFtZSBpcyBib3VuZCB0byBhbiBvYmplY3QsIGV2YWx1YXRpb24gb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdhdG9tIHlpZWxkc1xuJworICAgICAgICAgICAgICAgICAgICAgJ3RoYXQgb2JqZWN0LiBXaGVuIGEgbmFtZSBpcyBub3QgYm91bmQsIGFuIGF0dGVtcHQgdG8gJworICAgICAgICAgICAgICAgICAgICAgJ2V2YWx1YXRlIGl0XG4nCisgICAgICAgICAgICAgICAgICAgICAncmFpc2VzIGEgIk5hbWVFcnJvciIgZXhjZXB0aW9uLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyoqUHJpdmF0ZSBuYW1lIG1hbmdsaW5nOioqIFdoZW4gYW4gaWRlbnRpZmllciB0aGF0ICcKKyAgICAgICAgICAgICAgICAgICAgICd0ZXh0dWFsbHkgb2NjdXJzIGluXG4nCisgICAgICAgICAgICAgICAgICAgICAnYSBjbGFzcyBkZWZpbml0aW9uIGJlZ2lucyB3aXRoIHR3byBvciBtb3JlIHVuZGVyc2NvcmUgJworICAgICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlcnMgYW5kXG4nCisgICAgICAgICAgICAgICAgICAgICAnZG9lcyBub3QgZW5kIGluIHR3byBvciBtb3JlIHVuZGVyc2NvcmVzLCBpdCBpcyAnCisgICAgICAgICAgICAgICAgICAgICAnY29uc2lkZXJlZCBhICpwcml2YXRlXG4nCisgICAgICAgICAgICAgICAgICAgICAnbmFtZSogb2YgdGhhdCBjbGFzcy4gUHJpdmF0ZSBuYW1lcyBhcmUgdHJhbnNmb3JtZWQgdG8gYSAnCisgICAgICAgICAgICAgICAgICAgICAnbG9uZ2VyIGZvcm1cbicKKyAgICAgICAgICAgICAgICAgICAgICdiZWZvcmUgY29kZSBpcyBnZW5lcmF0ZWQgZm9yIHRoZW0uICBUaGUgdHJhbnNmb3JtYXRpb24gJworICAgICAgICAgICAgICAgICAgICAgJ2luc2VydHMgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnY2xhc3MgbmFtZSwgd2l0aCBsZWFkaW5nIHVuZGVyc2NvcmVzIHJlbW92ZWQgYW5kIGEgJworICAgICAgICAgICAgICAgICAgICAgJ3NpbmdsZSB1bmRlcnNjb3JlXG4nCisgICAgICAgICAgICAgICAgICAgICAnaW5zZXJ0ZWQsIGluIGZyb250IG9mIHRoZSBuYW1lLiAgRm9yIGV4YW1wbGUsIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnaWRlbnRpZmllciAiX19zcGFtIlxuJworICAgICAgICAgICAgICAgICAgICAgJ29jY3VycmluZyBpbiBhIGNsYXNzIG5hbWVkICJIYW0iIHdpbGwgYmUgdHJhbnNmb3JtZWQgdG8gJworICAgICAgICAgICAgICAgICAgICAgJyJfSGFtX19zcGFtIi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdUaGlzIHRyYW5zZm9ybWF0aW9uIGlzIGluZGVwZW5kZW50IG9mIHRoZSBzeW50YWN0aWNhbCAnCisgICAgICAgICAgICAgICAgICAgICAnY29udGV4dCBpbiB3aGljaFxuJworICAgICAgICAgICAgICAgICAgICAgJ3RoZSBpZGVudGlmaWVyIGlzIHVzZWQuICBJZiB0aGUgdHJhbnNmb3JtZWQgbmFtZSBpcyAnCisgICAgICAgICAgICAgICAgICAgICAnZXh0cmVtZWx5IGxvbmdcbicKKyAgICAgICAgICAgICAgICAgICAgICcobG9uZ2VyIHRoYW4gMjU1IGNoYXJhY3RlcnMpLCBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkICcKKyAgICAgICAgICAgICAgICAgICAgICd0cnVuY2F0aW9uIG1heVxuJworICAgICAgICAgICAgICAgICAgICAgJ2hhcHBlbi4gSWYgdGhlIGNsYXNzIG5hbWUgY29uc2lzdHMgb25seSBvZiB1bmRlcnNjb3JlcywgJworICAgICAgICAgICAgICAgICAgICAgJ25vXG4nCisgICAgICAgICAgICAgICAgICAgICAndHJhbnNmb3JtYXRpb24gaXMgZG9uZS5cbicsCisgJ2F0b20tbGl0ZXJhbHMnOiAnXG4nCisgICAgICAgICAgICAgICAgICAnTGl0ZXJhbHNcbicKKyAgICAgICAgICAgICAgICAgICcqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1B5dGhvbiBzdXBwb3J0cyBzdHJpbmcgYW5kIGJ5dGVzIGxpdGVyYWxzIGFuZCB2YXJpb3VzICcKKyAgICAgICAgICAgICAgICAgICdudW1lcmljXG4nCisgICAgICAgICAgICAgICAgICAnbGl0ZXJhbHM6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgbGl0ZXJhbCA6Oj0gc3RyaW5nbGl0ZXJhbCB8IGJ5dGVzbGl0ZXJhbFxuJworICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgIHwgaW50ZWdlciB8IGZsb2F0bnVtYmVyIHwgaW1hZ251bWJlclxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0V2YWx1YXRpb24gb2YgYSBsaXRlcmFsIHlpZWxkcyBhbiBvYmplY3Qgb2YgdGhlIGdpdmVuIHR5cGUgJworICAgICAgICAgICAgICAgICAgJyhzdHJpbmcsXG4nCisgICAgICAgICAgICAgICAgICAnYnl0ZXMsIGludGVnZXIsIGZsb2F0aW5nIHBvaW50IG51bWJlciwgY29tcGxleCBudW1iZXIpIHdpdGggJworICAgICAgICAgICAgICAgICAgJ3RoZSBnaXZlblxuJworICAgICAgICAgICAgICAgICAgJ3ZhbHVlLiAgVGhlIHZhbHVlIG1heSBiZSBhcHByb3hpbWF0ZWQgaW4gdGhlIGNhc2Ugb2YgJworICAgICAgICAgICAgICAgICAgJ2Zsb2F0aW5nIHBvaW50XG4nCisgICAgICAgICAgICAgICAgICAnYW5kIGltYWdpbmFyeSAoY29tcGxleCkgbGl0ZXJhbHMuICBTZWUgc2VjdGlvbiBMaXRlcmFscyBmb3IgJworICAgICAgICAgICAgICAgICAgJ2RldGFpbHMuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnQWxsIGxpdGVyYWxzIGNvcnJlc3BvbmQgdG8gaW1tdXRhYmxlIGRhdGEgdHlwZXMsIGFuZCBoZW5jZSAnCisgICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICAib2JqZWN0J3MgaWRlbnRpdHkgaXMgbGVzcyBpbXBvcnRhbnQgdGhhbiBpdHMgdmFsdWUuICAiCisgICAgICAgICAgICAgICAgICAnTXVsdGlwbGVcbicKKyAgICAgICAgICAgICAgICAgICdldmFsdWF0aW9ucyBvZiBsaXRlcmFscyB3aXRoIHRoZSBzYW1lIHZhbHVlIChlaXRoZXIgdGhlICcKKyAgICAgICAgICAgICAgICAgICdzYW1lXG4nCisgICAgICAgICAgICAgICAgICAnb2NjdXJyZW5jZSBpbiB0aGUgcHJvZ3JhbSB0ZXh0IG9yIGEgZGlmZmVyZW50IG9jY3VycmVuY2UpICcKKyAgICAgICAgICAgICAgICAgICdtYXkgb2J0YWluXG4nCisgICAgICAgICAgICAgICAgICAndGhlIHNhbWUgb2JqZWN0IG9yIGEgZGlmZmVyZW50IG9iamVjdCB3aXRoIHRoZSBzYW1lICcKKyAgICAgICAgICAgICAgICAgICd2YWx1ZS5cbicsCisgJ2F0dHJpYnV0ZS1hY2Nlc3MnOiAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnQ3VzdG9taXppbmcgYXR0cmlidXRlIGFjY2Vzc1xuJworICAgICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdUaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gY3VzdG9taXplIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnbWVhbmluZyBvZlxuJworICAgICAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZSBhY2Nlc3MgKHVzZSBvZiwgYXNzaWdubWVudCB0bywgb3IgZGVsZXRpb24gb2YgJworICAgICAgICAgICAgICAgICAgICAgJyJ4Lm5hbWUiKSBmb3JcbicKKyAgICAgICAgICAgICAgICAgICAgICdjbGFzcyBpbnN0YW5jZXMuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGxvb2t1cCBoYXMgbm90IGZvdW5kIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnYXR0cmlidXRlIGluIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIHVzdWFsIHBsYWNlcyAoaS5lLiBpdCBpcyBub3QgYW4gaW5zdGFuY2UgYXR0cmlidXRlICcKKyAgICAgICAgICAgICAgICAgICAgICdub3IgaXMgaXQgZm91bmRcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBpbiB0aGUgY2xhc3MgdHJlZSBmb3IgInNlbGYiKS4gICJuYW1lIiBpcyB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZSBuYW1lLiBUaGlzXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgbWV0aG9kIHNob3VsZCByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlICcKKyAgICAgICAgICAgICAgICAgICAgICdvciByYWlzZSBhblxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICJBdHRyaWJ1dGVFcnJvciIgZXhjZXB0aW9uLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIE5vdGUgdGhhdCBpZiB0aGUgYXR0cmlidXRlIGlzIGZvdW5kIHRocm91Z2ggdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdub3JtYWwgbWVjaGFuaXNtLFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICJfX2dldGF0dHJfXygpIiBpcyBub3QgY2FsbGVkLiAgKFRoaXMgaXMgYW4gJworICAgICAgICAgICAgICAgICAgICAgJ2ludGVudGlvbmFsIGFzeW1tZXRyeVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGJldHdlZW4gIl9fZ2V0YXR0cl9fKCkiIGFuZCAiX19zZXRhdHRyX18oKSIuKSBUaGlzIGlzICcKKyAgICAgICAgICAgICAgICAgICAgICdkb25lIGJvdGggZm9yXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgZWZmaWNpZW5jeSByZWFzb25zIGFuZCBiZWNhdXNlIG90aGVyd2lzZSAnCisgICAgICAgICAgICAgICAgICAgICAnIl9fZ2V0YXR0cl9fKCkiIHdvdWxkIGhhdmVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBubyB3YXkgdG8gYWNjZXNzIG90aGVyIGF0dHJpYnV0ZXMgb2YgdGhlIGluc3RhbmNlLiAgJworICAgICAgICAgICAgICAgICAgICAgJ05vdGUgdGhhdCBhdFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGxlYXN0IGZvciBpbnN0YW5jZSB2YXJpYWJsZXMsIHlvdSBjYW4gZmFrZSB0b3RhbCAnCisgICAgICAgICAgICAgICAgICAgICAnY29udHJvbCBieSBub3RcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBpbnNlcnRpbmcgYW55IHZhbHVlcyBpbiB0aGUgaW5zdGFuY2UgYXR0cmlidXRlICcKKyAgICAgICAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5IChidXRcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBpbnN0ZWFkIGluc2VydGluZyB0aGVtIGluIGFub3RoZXIgb2JqZWN0KS4gIFNlZSB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAiX19nZXRhdHRyaWJ1dGVfXygpIiBtZXRob2QgYmVsb3cgZm9yIGEgd2F5IHRvICcKKyAgICAgICAgICAgICAgICAgICAgICdhY3R1YWxseSBnZXQgdG90YWxcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBjb250cm9sIG92ZXIgYXR0cmlidXRlIGFjY2Vzcy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKVxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB1bmNvbmRpdGlvbmFsbHkgdG8gaW1wbGVtZW50IGF0dHJpYnV0ZSAnCisgICAgICAgICAgICAgICAgICAgICAnYWNjZXNzZXMgZm9yXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2VzIG9mIHRoZSBjbGFzcy4gSWYgdGhlIGNsYXNzIGFsc28gZGVmaW5lcyAnCisgICAgICAgICAgICAgICAgICAgICAnIl9fZ2V0YXR0cl9fKCkiLFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIHRoZSBsYXR0ZXIgd2lsbCBub3QgYmUgY2FsbGVkIHVubGVzcyAnCisgICAgICAgICAgICAgICAgICAgICAnIl9fZ2V0YXR0cmlidXRlX18oKSIgZWl0aGVyXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgY2FsbHMgaXQgZXhwbGljaXRseSBvciByYWlzZXMgYW4gIkF0dHJpYnV0ZUVycm9yIi4gJworICAgICAgICAgICAgICAgICAgICAgJ1RoaXMgbWV0aG9kXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgJworICAgICAgICAgICAgICAgICAgICAgJ2FuXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIkF0dHJpYnV0ZUVycm9yIiBleGNlcHRpb24uIEluIG9yZGVyIHRvIGF2b2lkICcKKyAgICAgICAgICAgICAgICAgICAgICdpbmZpbml0ZSByZWN1cnNpb24gaW5cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICB0aGlzIG1ldGhvZCwgaXRzIGltcGxlbWVudGF0aW9uIHNob3VsZCBhbHdheXMgY2FsbCAnCisgICAgICAgICAgICAgICAgICAgICAndGhlIGJhc2UgY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBtZXRob2Qgd2l0aCB0aGUgc2FtZSBuYW1lIHRvIGFjY2VzcyBhbnkgYXR0cmlidXRlcyBpdCAnCisgICAgICAgICAgICAgICAgICAgICAnbmVlZHMsIGZvclxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGV4YW1wbGUsICJvYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKSIuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgTm90ZTogVGhpcyBtZXRob2QgbWF5IHN0aWxsIGJlIGJ5cGFzc2VkIHdoZW4gbG9va2luZyAnCisgICAgICAgICAgICAgICAgICAgICAndXAgc3BlY2lhbFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICAgbWV0aG9kcyBhcyB0aGUgcmVzdWx0IG9mIGltcGxpY2l0IGludm9jYXRpb24gdmlhICcKKyAgICAgICAgICAgICAgICAgICAgICdsYW5ndWFnZSBzeW50YXhcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgIG9yIGJ1aWx0LWluIGZ1bmN0aW9ucy4gU2VlIFNwZWNpYWwgbWV0aG9kIGxvb2t1cC5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGFzc2lnbm1lbnQgaXMgYXR0ZW1wdGVkLiAgJworICAgICAgICAgICAgICAgICAgICAgJ1RoaXMgaXMgY2FsbGVkXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgaW5zdGVhZCBvZiB0aGUgbm9ybWFsIG1lY2hhbmlzbSAoaS5lLiBzdG9yZSB0aGUgdmFsdWUgJworICAgICAgICAgICAgICAgICAgICAgJ2luIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGluc3RhbmNlIGRpY3Rpb25hcnkpLiAqbmFtZSogaXMgdGhlIGF0dHJpYnV0ZSBuYW1lLCAnCisgICAgICAgICAgICAgICAgICAgICAnKnZhbHVlKiBpcyB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICB2YWx1ZSB0byBiZSBhc3NpZ25lZCB0byBpdC5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBJZiAiX19zZXRhdHRyX18oKSIgd2FudHMgdG8gYXNzaWduIHRvIGFuIGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGUsIGl0XG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgc2hvdWxkIGNhbGwgdGhlIGJhc2UgY2xhc3MgbWV0aG9kIHdpdGggdGhlIHNhbWUgbmFtZSwgJworICAgICAgICAgICAgICAgICAgICAgJ2ZvciBleGFtcGxlLFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICJvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpIi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19kZWxhdHRyX18oc2VsZiwgbmFtZSlcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBMaWtlICJfX3NldGF0dHJfXygpIiBidXQgZm9yIGF0dHJpYnV0ZSBkZWxldGlvbiAnCisgICAgICAgICAgICAgICAgICAgICAnaW5zdGVhZCBvZlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGFzc2lnbm1lbnQuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGlmICJkZWwgJworICAgICAgICAgICAgICAgICAgICAgJ29iai5uYW1lIiBpc1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIG1lYW5pbmdmdWwgZm9yIHRoZSBvYmplY3QuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZGlyX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgd2hlbiAiZGlyKCkiIGlzIGNhbGxlZCBvbiB0aGUgb2JqZWN0LiBBICcKKyAgICAgICAgICAgICAgICAgICAgICdzZXF1ZW5jZSBtdXN0IGJlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgcmV0dXJuZWQuICJkaXIoKSIgY29udmVydHMgdGhlIHJldHVybmVkIHNlcXVlbmNlIHRvIGEgJworICAgICAgICAgICAgICAgICAgICAgJ2xpc3QgYW5kXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgc29ydHMgaXQuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzXG4nCisgICAgICAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBtZXRob2RzIG9ubHkgYXBwbHkgd2hlbiBhbiBpbnN0YW5jZSBvZiB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgICAgICAgICAnY29udGFpbmluZyB0aGUgbWV0aG9kIChhIHNvLWNhbGxlZCAqZGVzY3JpcHRvciogY2xhc3MpICcKKyAgICAgICAgICAgICAgICAgICAgICdhcHBlYXJzIGluIGFuXG4nCisgICAgICAgICAgICAgICAgICAgICAnKm93bmVyKiBjbGFzcyAodGhlIGRlc2NyaXB0b3IgbXVzdCBiZSBpbiBlaXRoZXIgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICJvd25lcidzIGNsYXNzXG4iCisgICAgICAgICAgICAgICAgICAgICAnZGljdGlvbmFyeSBvciBpbiB0aGUgY2xhc3MgZGljdGlvbmFyeSBmb3Igb25lIG9mIGl0cyAnCisgICAgICAgICAgICAgICAgICAgICAncGFyZW50cykuICBJbiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICdleGFtcGxlcyBiZWxvdywgInRoZSBhdHRyaWJ1dGUiIHJlZmVycyB0byB0aGUgYXR0cmlidXRlICcKKyAgICAgICAgICAgICAgICAgICAgICd3aG9zZSBuYW1lIGlzXG4nCisgICAgICAgICAgICAgICAgICAgICAidGhlIGtleSBvZiB0aGUgcHJvcGVydHkgaW4gdGhlIG93bmVyIGNsYXNzJyAiCisgICAgICAgICAgICAgICAgICAgICAnIl9fZGljdF9fIi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19nZXRfXyhzZWxmLCBpbnN0YW5jZSwgb3duZXIpXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGdldCB0aGUgYXR0cmlidXRlIG9mIHRoZSBvd25lciBjbGFzcyAoY2xhc3MgJworICAgICAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGFjY2Vzcykgb3Igb2YgYW4gaW5zdGFuY2Ugb2YgdGhhdCBjbGFzcyAoaW5zdGFuY2UgJworICAgICAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGFjY2VzcykuICpvd25lciogaXMgYWx3YXlzIHRoZSBvd25lciBjbGFzcywgd2hpbGUgJworICAgICAgICAgICAgICAgICAgICAgJyppbnN0YW5jZSogaXMgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2UgdGhhdCB0aGUgYXR0cmlidXRlIHdhcyBhY2Nlc3NlZCB0aHJvdWdoLCBvciAnCisgICAgICAgICAgICAgICAgICAgICAnIk5vbmUiIHdoZW5cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICB0aGUgYXR0cmlidXRlIGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlICpvd25lciouICBUaGlzICcKKyAgICAgICAgICAgICAgICAgICAgICdtZXRob2Qgc2hvdWxkXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgcmV0dXJuIHRoZSAoY29tcHV0ZWQpIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZSBhbiAnCisgICAgICAgICAgICAgICAgICAgICAnIkF0dHJpYnV0ZUVycm9yIlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGV4Y2VwdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19zZXRfXyhzZWxmLCBpbnN0YW5jZSwgdmFsdWUpXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIHNldCB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogJworICAgICAgICAgICAgICAgICAgICAgJ29mIHRoZSBvd25lclxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGNsYXNzIHRvIGEgbmV3IHZhbHVlLCAqdmFsdWUqLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2RlbGV0ZV9fKHNlbGYsIGluc3RhbmNlKVxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBkZWxldGUgdGhlIGF0dHJpYnV0ZSBvbiBhbiBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICAgICAgICAnKmluc3RhbmNlKiBvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBvd25lciBjbGFzcy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19zZXRfbmFtZV9fKHNlbGYsIG93bmVyLCBuYW1lKVxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCBhdCB0aGUgdGltZSB0aGUgb3duaW5nIGNsYXNzICpvd25lciogaXMgJworICAgICAgICAgICAgICAgICAgICAgJ2NyZWF0ZWQuIFRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGRlc2NyaXB0b3IgaGFzIGJlZW4gYXNzaWduZWQgdG8gKm5hbWUqLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuNi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdUaGUgYXR0cmlidXRlICJfX29iamNsYXNzX18iIGlzIGludGVycHJldGVkIGJ5IHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnImluc3BlY3QiIG1vZHVsZSBhc1xuJworICAgICAgICAgICAgICAgICAgICAgJ3NwZWNpZnlpbmcgdGhlIGNsYXNzIHdoZXJlIHRoaXMgb2JqZWN0IHdhcyBkZWZpbmVkICcKKyAgICAgICAgICAgICAgICAgICAgICcoc2V0dGluZyB0aGlzXG4nCisgICAgICAgICAgICAgICAgICAgICAnYXBwcm9wcmlhdGVseSBjYW4gYXNzaXN0IGluIHJ1bnRpbWUgaW50cm9zcGVjdGlvbiBvZiAnCisgICAgICAgICAgICAgICAgICAgICAnZHluYW1pYyBjbGFzc1xuJworICAgICAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZXMpLiBGb3IgY2FsbGFibGVzLCBpdCBtYXkgaW5kaWNhdGUgdGhhdCBhbiAnCisgICAgICAgICAgICAgICAgICAgICAnaW5zdGFuY2Ugb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnZ2l2ZW4gdHlwZSAob3IgYSBzdWJjbGFzcykgaXMgZXhwZWN0ZWQgb3IgcmVxdWlyZWQgYXMgJworICAgICAgICAgICAgICAgICAgICAgJ3RoZSBmaXJzdFxuJworICAgICAgICAgICAgICAgICAgICAgJ3Bvc2l0aW9uYWwgYXJndW1lbnQgKGZvciBleGFtcGxlLCBDUHl0aG9uIHNldHMgdGhpcyAnCisgICAgICAgICAgICAgICAgICAgICAnYXR0cmlidXRlIGZvclxuJworICAgICAgICAgICAgICAgICAgICAgJ3VuYm91bmQgbWV0aG9kcyB0aGF0IGFyZSBpbXBsZW1lbnRlZCBpbiBDKS5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdJbnZva2luZyBEZXNjcmlwdG9yc1xuJworICAgICAgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnSW4gZ2VuZXJhbCwgYSBkZXNjcmlwdG9yIGlzIGFuIG9iamVjdCBhdHRyaWJ1dGUgd2l0aCAnCisgICAgICAgICAgICAgICAgICAgICAnImJpbmRpbmdcbicKKyAgICAgICAgICAgICAgICAgICAgICdiZWhhdmlvciIsIG9uZSB3aG9zZSBhdHRyaWJ1dGUgYWNjZXNzIGhhcyBiZWVuICcKKyAgICAgICAgICAgICAgICAgICAgICdvdmVycmlkZGVuIGJ5IG1ldGhvZHNcbicKKyAgICAgICAgICAgICAgICAgICAgICdpbiB0aGUgZGVzY3JpcHRvciBwcm90b2NvbDogICJfX2dldF9fKCkiLCAiX19zZXRfXygpIiwgJworICAgICAgICAgICAgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICAgICAgICAgICAgJyJfX2RlbGV0ZV9fKCkiLiBJZiBhbnkgb2YgdGhvc2UgbWV0aG9kcyBhcmUgZGVmaW5lZCBmb3IgJworICAgICAgICAgICAgICAgICAgICAgJ2FuIG9iamVjdCwgaXRcbicKKyAgICAgICAgICAgICAgICAgICAgICdpcyBzYWlkIHRvIGJlIGEgZGVzY3JpcHRvci5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdUaGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgYXR0cmlidXRlIGFjY2VzcyBpcyB0byBnZXQsICcKKyAgICAgICAgICAgICAgICAgICAgICdzZXQsIG9yIGRlbGV0ZVxuJworICAgICAgICAgICAgICAgICAgICAgInRoZSBhdHRyaWJ1dGUgZnJvbSBhbiBvYmplY3QncyBkaWN0aW9uYXJ5LiBGb3IgaW5zdGFuY2UsICIKKyAgICAgICAgICAgICAgICAgICAgICciYS54IiBoYXMgYVxuJworICAgICAgICAgICAgICAgICAgICAgJ2xvb2t1cCBjaGFpbiBzdGFydGluZyB3aXRoICJhLl9fZGljdF9fW1wneFwnXSIsIHRoZW5cbicKKyAgICAgICAgICAgICAgICAgICAgICcidHlwZShhKS5fX2RpY3RfX1tcJ3hcJ10iLCBhbmQgY29udGludWluZyB0aHJvdWdoIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnYmFzZSBjbGFzc2VzIG9mXG4nCisgICAgICAgICAgICAgICAgICAgICAnInR5cGUoYSkiIGV4Y2x1ZGluZyBtZXRhY2xhc3Nlcy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdIb3dldmVyLCBpZiB0aGUgbG9va2VkLXVwIHZhbHVlIGlzIGFuIG9iamVjdCBkZWZpbmluZyAnCisgICAgICAgICAgICAgICAgICAgICAnb25lIG9mIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJ2Rlc2NyaXB0b3IgbWV0aG9kcywgdGhlbiBQeXRob24gbWF5IG92ZXJyaWRlIHRoZSBkZWZhdWx0ICcKKyAgICAgICAgICAgICAgICAgICAgICdiZWhhdmlvciBhbmRcbicKKyAgICAgICAgICAgICAgICAgICAgICdpbnZva2UgdGhlIGRlc2NyaXB0b3IgbWV0aG9kIGluc3RlYWQuICBXaGVyZSB0aGlzIG9jY3VycyAnCisgICAgICAgICAgICAgICAgICAgICAnaW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAncHJlY2VkZW5jZSBjaGFpbiBkZXBlbmRzIG9uIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyAnCisgICAgICAgICAgICAgICAgICAgICAnd2VyZSBkZWZpbmVkIGFuZFxuJworICAgICAgICAgICAgICAgICAgICAgJ2hvdyB0aGV5IHdlcmUgY2FsbGVkLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1RoZSBzdGFydGluZyBwb2ludCBmb3IgZGVzY3JpcHRvciBpbnZvY2F0aW9uIGlzIGEgJworICAgICAgICAgICAgICAgICAgICAgJ2JpbmRpbmcsICJhLngiLiBIb3dcbicKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgYXJndW1lbnRzIGFyZSBhc3NlbWJsZWQgZGVwZW5kcyBvbiAiYSI6XG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnRGlyZWN0IENhbGxcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBUaGUgc2ltcGxlc3QgYW5kIGxlYXN0IGNvbW1vbiBjYWxsIGlzIHdoZW4gdXNlciBjb2RlICcKKyAgICAgICAgICAgICAgICAgICAgICdkaXJlY3RseVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGludm9rZXMgYSBkZXNjcmlwdG9yIG1ldGhvZDogICAgInguX19nZXRfXyhhKSIuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnSW5zdGFuY2UgQmluZGluZ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIElmIGJpbmRpbmcgdG8gYW4gb2JqZWN0IGluc3RhbmNlLCAiYS54IiBpcyAnCisgICAgICAgICAgICAgICAgICAgICAndHJhbnNmb3JtZWQgaW50byB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBjYWxsOiAidHlwZShhKS5fX2RpY3RfX1tcJ3hcJ10uX19nZXRfXyhhLCB0eXBlKGEpKSIuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnQ2xhc3MgQmluZGluZ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIElmIGJpbmRpbmcgdG8gYSBjbGFzcywgIkEueCIgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2NhbGw6XG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIkEuX19kaWN0X19bXCd4XCddLl9fZ2V0X18oTm9uZSwgQSkiLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1N1cGVyIEJpbmRpbmdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBJZiAiYSIgaXMgYW4gaW5zdGFuY2Ugb2YgInN1cGVyIiwgdGhlbiB0aGUgYmluZGluZyAnCisgICAgICAgICAgICAgICAgICAgICAnInN1cGVyKEIsXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgb2JqKS5tKCkiIHNlYXJjaGVzICJvYmouX19jbGFzc19fLl9fbXJvX18iIGZvciB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2Jhc2UgY2xhc3MgIkEiXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgaW1tZWRpYXRlbHkgcHJlY2VkaW5nICJCIiBhbmQgdGhlbiBpbnZva2VzIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnZGVzY3JpcHRvciB3aXRoIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGNhbGw6ICJBLl9fZGljdF9fW1wnbVwnXS5fX2dldF9fKG9iaiwgJworICAgICAgICAgICAgICAgICAgICAgJ29iai5fX2NsYXNzX18pIi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdGb3IgaW5zdGFuY2UgYmluZGluZ3MsIHRoZSBwcmVjZWRlbmNlIG9mIGRlc2NyaXB0b3IgJworICAgICAgICAgICAgICAgICAgICAgJ2ludm9jYXRpb24gZGVwZW5kc1xuJworICAgICAgICAgICAgICAgICAgICAgJ29uIHRoZSB3aGljaCBkZXNjcmlwdG9yIG1ldGhvZHMgYXJlIGRlZmluZWQuICBBICcKKyAgICAgICAgICAgICAgICAgICAgICdkZXNjcmlwdG9yIGNhbiBkZWZpbmVcbicKKyAgICAgICAgICAgICAgICAgICAgICdhbnkgY29tYmluYXRpb24gb2YgIl9fZ2V0X18oKSIsICJfX3NldF9fKCkiIGFuZCAnCisgICAgICAgICAgICAgICAgICAgICAnIl9fZGVsZXRlX18oKSIuICBJZiBpdFxuJworICAgICAgICAgICAgICAgICAgICAgJ2RvZXMgbm90IGRlZmluZSAiX19nZXRfXygpIiwgdGhlbiBhY2Nlc3NpbmcgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGUgd2lsbCByZXR1cm5cbicKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgZGVzY3JpcHRvciBvYmplY3QgaXRzZWxmIHVubGVzcyB0aGVyZSBpcyBhIHZhbHVlIGluICcKKyAgICAgICAgICAgICAgICAgICAgICJ0aGUgb2JqZWN0J3NcbiIKKyAgICAgICAgICAgICAgICAgICAgICdpbnN0YW5jZSBkaWN0aW9uYXJ5LiAgSWYgdGhlIGRlc2NyaXB0b3IgZGVmaW5lcyAnCisgICAgICAgICAgICAgICAgICAgICAnIl9fc2V0X18oKSIgYW5kL29yXG4nCisgICAgICAgICAgICAgICAgICAgICAnIl9fZGVsZXRlX18oKSIsIGl0IGlzIGEgZGF0YSBkZXNjcmlwdG9yOyBpZiBpdCBkZWZpbmVzICcKKyAgICAgICAgICAgICAgICAgICAgICduZWl0aGVyLCBpdCBpc1xuJworICAgICAgICAgICAgICAgICAgICAgJ2Egbm9uLWRhdGEgZGVzY3JpcHRvci4gIE5vcm1hbGx5LCBkYXRhIGRlc2NyaXB0b3JzICcKKyAgICAgICAgICAgICAgICAgICAgICdkZWZpbmUgYm90aFxuJworICAgICAgICAgICAgICAgICAgICAgJyJfX2dldF9fKCkiIGFuZCAiX19zZXRfXygpIiwgd2hpbGUgbm9uLWRhdGEgZGVzY3JpcHRvcnMgJworICAgICAgICAgICAgICAgICAgICAgJ2hhdmUganVzdCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICciX19nZXRfXygpIiBtZXRob2QuICBEYXRhIGRlc2NyaXB0b3JzIHdpdGggIl9fc2V0X18oKSIgJworICAgICAgICAgICAgICAgICAgICAgJ2FuZCAiX19nZXRfXygpIlxuJworICAgICAgICAgICAgICAgICAgICAgJ2RlZmluZWQgYWx3YXlzIG92ZXJyaWRlIGEgcmVkZWZpbml0aW9uIGluIGFuIGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5LiAgSW5cbicKKyAgICAgICAgICAgICAgICAgICAgICdjb250cmFzdCwgbm9uLWRhdGEgZGVzY3JpcHRvcnMgY2FuIGJlIG92ZXJyaWRkZW4gYnkgJworICAgICAgICAgICAgICAgICAgICAgJ2luc3RhbmNlcy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdQeXRob24gbWV0aG9kcyAoaW5jbHVkaW5nICJzdGF0aWNtZXRob2QoKSIgYW5kICcKKyAgICAgICAgICAgICAgICAgICAgICciY2xhc3NtZXRob2QoKSIpIGFyZVxuJworICAgICAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudGVkIGFzIG5vbi1kYXRhIGRlc2NyaXB0b3JzLiAgQWNjb3JkaW5nbHksICcKKyAgICAgICAgICAgICAgICAgICAgICdpbnN0YW5jZXMgY2FuXG4nCisgICAgICAgICAgICAgICAgICAgICAncmVkZWZpbmUgYW5kIG92ZXJyaWRlIG1ldGhvZHMuICBUaGlzIGFsbG93cyBpbmRpdmlkdWFsICcKKyAgICAgICAgICAgICAgICAgICAgICdpbnN0YW5jZXMgdG9cbicKKyAgICAgICAgICAgICAgICAgICAgICdhY3F1aXJlIGJlaGF2aW9ycyB0aGF0IGRpZmZlciBmcm9tIG90aGVyIGluc3RhbmNlcyBvZiAnCisgICAgICAgICAgICAgICAgICAgICAndGhlIHNhbWUgY2xhc3MuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnVGhlICJwcm9wZXJ0eSgpIiBmdW5jdGlvbiBpcyBpbXBsZW1lbnRlZCBhcyBhIGRhdGEgJworICAgICAgICAgICAgICAgICAgICAgJ2Rlc2NyaXB0b3IuXG4nCisgICAgICAgICAgICAgICAgICAgICAnQWNjb3JkaW5nbHksIGluc3RhbmNlcyBjYW5ub3Qgb3ZlcnJpZGUgdGhlIGJlaGF2aW9yIG9mIGEgJworICAgICAgICAgICAgICAgICAgICAgJ3Byb3BlcnR5LlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ19fc2xvdHNfX1xuJworICAgICAgICAgICAgICAgICAgICAgJz09PT09PT09PVxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ0J5IGRlZmF1bHQsIGluc3RhbmNlcyBvZiBjbGFzc2VzIGhhdmUgYSBkaWN0aW9uYXJ5IGZvciAnCisgICAgICAgICAgICAgICAgICAgICAnYXR0cmlidXRlXG4nCisgICAgICAgICAgICAgICAgICAgICAnc3RvcmFnZS4gIFRoaXMgd2FzdGVzIHNwYWNlIGZvciBvYmplY3RzIGhhdmluZyB2ZXJ5IGZldyAnCisgICAgICAgICAgICAgICAgICAgICAnaW5zdGFuY2VcbicKKyAgICAgICAgICAgICAgICAgICAgICd2YXJpYWJsZXMuICBUaGUgc3BhY2UgY29uc3VtcHRpb24gY2FuIGJlY29tZSBhY3V0ZSB3aGVuICcKKyAgICAgICAgICAgICAgICAgICAgICdjcmVhdGluZyBsYXJnZVxuJworICAgICAgICAgICAgICAgICAgICAgJ251bWJlcnMgb2YgaW5zdGFuY2VzLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1RoZSBkZWZhdWx0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nICpfX3Nsb3RzX18qIGluICcKKyAgICAgICAgICAgICAgICAgICAgICdhIGNsYXNzXG4nCisgICAgICAgICAgICAgICAgICAgICAnZGVmaW5pdGlvbi4gVGhlICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uIHRha2VzIGEgc2VxdWVuY2UgJworICAgICAgICAgICAgICAgICAgICAgJ29mIGluc3RhbmNlXG4nCisgICAgICAgICAgICAgICAgICAgICAndmFyaWFibGVzIGFuZCByZXNlcnZlcyBqdXN0IGVub3VnaCBzcGFjZSBpbiBlYWNoICcKKyAgICAgICAgICAgICAgICAgICAgICdpbnN0YW5jZSB0byBob2xkIGFcbicKKyAgICAgICAgICAgICAgICAgICAgICd2YWx1ZSBmb3IgZWFjaCB2YXJpYWJsZS4gIFNwYWNlIGlzIHNhdmVkIGJlY2F1c2UgJworICAgICAgICAgICAgICAgICAgICAgJypfX2RpY3RfXyogaXMgbm90XG4nCisgICAgICAgICAgICAgICAgICAgICAnY3JlYXRlZCBmb3IgZWFjaCBpbnN0YW5jZS5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19zbG90c19fXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgVGhpcyBjbGFzcyB2YXJpYWJsZSBjYW4gYmUgYXNzaWduZWQgYSBzdHJpbmcsICcKKyAgICAgICAgICAgICAgICAgICAgICdpdGVyYWJsZSwgb3Igc2VxdWVuY2VcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBvZiBzdHJpbmdzIHdpdGggdmFyaWFibGUgbmFtZXMgdXNlZCBieSBpbnN0YW5jZXMuICAnCisgICAgICAgICAgICAgICAgICAgICAnKl9fc2xvdHNfXypcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICByZXNlcnZlcyBzcGFjZSBmb3IgdGhlIGRlY2xhcmVkIHZhcmlhYmxlcyBhbmQgJworICAgICAgICAgICAgICAgICAgICAgJ3ByZXZlbnRzIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGF1dG9tYXRpYyBjcmVhdGlvbiBvZiAqX19kaWN0X18qIGFuZCAqX193ZWFrcmVmX18qICcKKyAgICAgICAgICAgICAgICAgICAgICdmb3IgZWFjaFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGluc3RhbmNlLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ05vdGVzIG9uIHVzaW5nICpfX3Nsb3RzX18qXG4nCisgICAgICAgICAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcqIFdoZW4gaW5oZXJpdGluZyBmcm9tIGEgY2xhc3Mgd2l0aG91dCAqX19zbG90c19fKiwgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICcqX19kaWN0X18qXG4nCisgICAgICAgICAgICAgICAgICAgICAnICBhdHRyaWJ1dGUgb2YgdGhhdCBjbGFzcyB3aWxsIGFsd2F5cyBiZSBhY2Nlc3NpYmxlLCBzbyAnCisgICAgICAgICAgICAgICAgICAgICAnYSAqX19zbG90c19fKlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgZGVmaW5pdGlvbiBpbiB0aGUgc3ViY2xhc3MgaXMgbWVhbmluZ2xlc3MuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnKiBXaXRob3V0IGEgKl9fZGljdF9fKiB2YXJpYWJsZSwgaW5zdGFuY2VzIGNhbm5vdCBiZSAnCisgICAgICAgICAgICAgICAgICAgICAnYXNzaWduZWQgbmV3XG4nCisgICAgICAgICAgICAgICAgICAgICAnICB2YXJpYWJsZXMgbm90IGxpc3RlZCBpbiB0aGUgKl9fc2xvdHNfXyogZGVmaW5pdGlvbi4gICcKKyAgICAgICAgICAgICAgICAgICAgICdBdHRlbXB0cyB0b1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgYXNzaWduIHRvIGFuIHVubGlzdGVkIHZhcmlhYmxlIG5hbWUgcmFpc2VzICcKKyAgICAgICAgICAgICAgICAgICAgICciQXR0cmlidXRlRXJyb3IiLiBJZlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgZHluYW1pYyBhc3NpZ25tZW50IG9mIG5ldyB2YXJpYWJsZXMgaXMgZGVzaXJlZCwgdGhlbiAnCisgICAgICAgICAgICAgICAgICAgICAnYWRkXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAiXCdfX2RpY3RfX1wnIiB0byB0aGUgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBpbiB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJypfX3Nsb3RzX18qXG4nCisgICAgICAgICAgICAgICAgICAgICAnICBkZWNsYXJhdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcqIFdpdGhvdXQgYSAqX193ZWFrcmVmX18qIHZhcmlhYmxlIGZvciBlYWNoIGluc3RhbmNlLCAnCisgICAgICAgICAgICAgICAgICAgICAnY2xhc3Nlc1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgZGVmaW5pbmcgKl9fc2xvdHNfXyogZG8gbm90IHN1cHBvcnQgd2VhayByZWZlcmVuY2VzIHRvICcKKyAgICAgICAgICAgICAgICAgICAgICdpdHNcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIGluc3RhbmNlcy4gSWYgd2VhayByZWZlcmVuY2Ugc3VwcG9ydCBpcyBuZWVkZWQsIHRoZW4gJworICAgICAgICAgICAgICAgICAgICAgJ2FkZFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIlwnX193ZWFrcmVmX19cJyIgdG8gdGhlIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICcqX19zbG90c19fKlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgZGVjbGFyYXRpb24uXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnKiAqX19zbG90c19fKiBhcmUgaW1wbGVtZW50ZWQgYXQgdGhlIGNsYXNzIGxldmVsIGJ5ICcKKyAgICAgICAgICAgICAgICAgICAgICdjcmVhdGluZ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgZGVzY3JpcHRvcnMgKEltcGxlbWVudGluZyBEZXNjcmlwdG9ycykgZm9yIGVhY2ggJworICAgICAgICAgICAgICAgICAgICAgJ3ZhcmlhYmxlIG5hbWUuICBBcyBhXG4nCisgICAgICAgICAgICAgICAgICAgICAnICByZXN1bHQsIGNsYXNzIGF0dHJpYnV0ZXMgY2Fubm90IGJlIHVzZWQgdG8gc2V0IGRlZmF1bHQgJworICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcyBmb3JcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIGluc3RhbmNlIHZhcmlhYmxlcyBkZWZpbmVkIGJ5ICpfX3Nsb3RzX18qOyBvdGhlcndpc2UsICcKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIGF0dHJpYnV0ZSB3b3VsZCBvdmVyd3JpdGUgdGhlIGRlc2NyaXB0b3IgYXNzaWdubWVudC5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcqIFRoZSBhY3Rpb24gb2YgYSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiBpcyBsaW1pdGVkIHRvICcKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIHdoZXJlIGl0IGlzIGRlZmluZWQuICBBcyBhIHJlc3VsdCwgc3ViY2xhc3NlcyB3aWxsICcKKyAgICAgICAgICAgICAgICAgICAgICdoYXZlIGEgKl9fZGljdF9fKlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgdW5sZXNzIHRoZXkgYWxzbyBkZWZpbmUgKl9fc2xvdHNfXyogKHdoaWNoIG11c3Qgb25seSAnCisgICAgICAgICAgICAgICAgICAgICAnY29udGFpbiBuYW1lc1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgb2YgYW55ICphZGRpdGlvbmFsKiBzbG90cykuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnKiBJZiBhIGNsYXNzIGRlZmluZXMgYSBzbG90IGFsc28gZGVmaW5lZCBpbiBhIGJhc2UgJworICAgICAgICAgICAgICAgICAgICAgJ2NsYXNzLCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIGluc3RhbmNlIHZhcmlhYmxlIGRlZmluZWQgYnkgdGhlIGJhc2UgY2xhc3Mgc2xvdCBpcyAnCisgICAgICAgICAgICAgICAgICAgICAnaW5hY2Nlc3NpYmxlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAoZXhjZXB0IGJ5IHJldHJpZXZpbmcgaXRzIGRlc2NyaXB0b3IgZGlyZWN0bHkgZnJvbSB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2Jhc2UgY2xhc3MpLlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgVGhpcyByZW5kZXJzIHRoZSBtZWFuaW5nIG9mIHRoZSBwcm9ncmFtIHVuZGVmaW5lZC4gIEluICcKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgZnV0dXJlLCBhXG4nCisgICAgICAgICAgICAgICAgICAgICAnICBjaGVjayBtYXkgYmUgYWRkZWQgdG8gcHJldmVudCB0aGlzLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyogTm9uZW1wdHkgKl9fc2xvdHNfXyogZG9lcyBub3Qgd29yayBmb3IgY2xhc3NlcyBkZXJpdmVkICcKKyAgICAgICAgICAgICAgICAgICAgICdmcm9tXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAidmFyaWFibGUtbGVuZ3RoIiBidWlsdC1pbiB0eXBlcyBzdWNoIGFzICJpbnQiLCAnCisgICAgICAgICAgICAgICAgICAgICAnImJ5dGVzIiBhbmQgInR1cGxlIi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcqIEFueSBub24tc3RyaW5nIGl0ZXJhYmxlIG1heSBiZSBhc3NpZ25lZCB0byAnCisgICAgICAgICAgICAgICAgICAgICAnKl9fc2xvdHNfXyouIE1hcHBpbmdzXG4nCisgICAgICAgICAgICAgICAgICAgICAnICBtYXkgYWxzbyBiZSB1c2VkOyBob3dldmVyLCBpbiB0aGUgZnV0dXJlLCBzcGVjaWFsICcKKyAgICAgICAgICAgICAgICAgICAgICdtZWFuaW5nIG1heSBiZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgYXNzaWduZWQgdG8gdGhlIHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIGVhY2gga2V5LlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyogKl9fY2xhc3NfXyogYXNzaWdubWVudCB3b3JrcyBvbmx5IGlmIGJvdGggY2xhc3NlcyBoYXZlICcKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgc2FtZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgKl9fc2xvdHNfXyouXG4nLAorICdhdHRyaWJ1dGUtcmVmZXJlbmNlcyc6ICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnQXR0cmlidXRlIHJlZmVyZW5jZXNcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0FuIGF0dHJpYnV0ZSByZWZlcmVuY2UgaXMgYSBwcmltYXJ5IGZvbGxvd2VkIGJ5IGEgJworICAgICAgICAgICAgICAgICAgICAgICAgICdwZXJpb2QgYW5kIGEgbmFtZTpcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgIGF0dHJpYnV0ZXJlZiA6Oj0gcHJpbWFyeSAiLiIgaWRlbnRpZmllclxuJworICAgICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnVGhlIHByaW1hcnkgbXVzdCBldmFsdWF0ZSB0byBhbiBvYmplY3Qgb2YgYSB0eXBlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAndGhhdCBzdXBwb3J0c1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGUgcmVmZXJlbmNlcywgd2hpY2ggbW9zdCBvYmplY3RzIGRvLiAgVGhpcyAnCisgICAgICAgICAgICAgICAgICAgICAgICAgJ29iamVjdCBpcyB0aGVuXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2Fza2VkIHRvIHByb2R1Y2UgdGhlIGF0dHJpYnV0ZSB3aG9zZSBuYW1lIGlzIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2lkZW50aWZpZXIuICBUaGlzXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb2R1Y3Rpb24gY2FuIGJlIGN1c3RvbWl6ZWQgYnkgb3ZlcnJpZGluZyB0aGUgJworICAgICAgICAgICAgICAgICAgICAgICAgICciX19nZXRhdHRyX18oKSIgbWV0aG9kLlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICdJZiB0aGlzIGF0dHJpYnV0ZSBpcyBub3QgYXZhaWxhYmxlLCB0aGUgZXhjZXB0aW9uICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAnIkF0dHJpYnV0ZUVycm9yIiBpc1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICdyYWlzZWQuICBPdGhlcndpc2UsIHRoZSB0eXBlIGFuZCB2YWx1ZSBvZiB0aGUgb2JqZWN0ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAncHJvZHVjZWQgaXNcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZGV0ZXJtaW5lZCBieSB0aGUgb2JqZWN0LiAgTXVsdGlwbGUgZXZhbHVhdGlvbnMgb2YgJworICAgICAgICAgICAgICAgICAgICAgICAgICd0aGUgc2FtZSBhdHRyaWJ1dGVcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAncmVmZXJlbmNlIG1heSB5aWVsZCBkaWZmZXJlbnQgb2JqZWN0cy5cbicsCisgJ2F1Z2Fzc2lnbic6ICdcbicKKyAgICAgICAgICAgICAgJ0F1Z21lbnRlZCBhc3NpZ25tZW50IHN0YXRlbWVudHNcbicKKyAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnQXVnbWVudGVkIGFzc2lnbm1lbnQgaXMgdGhlIGNvbWJpbmF0aW9uLCBpbiBhIHNpbmdsZSBzdGF0ZW1lbnQsICcKKyAgICAgICAgICAgICAgJ29mIGFcbicKKyAgICAgICAgICAgICAgJ2JpbmFyeSBvcGVyYXRpb24gYW5kIGFuIGFzc2lnbm1lbnQgc3RhdGVtZW50OlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICcgICBhdWdtZW50ZWRfYXNzaWdubWVudF9zdG10IDo6PSBhdWd0YXJnZXQgYXVnb3AgJworICAgICAgICAgICAgICAnKGV4cHJlc3Npb25fbGlzdCB8IHlpZWxkX2V4cHJlc3Npb24pXG4nCisgICAgICAgICAgICAgICcgICBhdWd0YXJnZXQgICAgICAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyIHwgYXR0cmlidXRlcmVmIHwgJworICAgICAgICAgICAgICAnc3Vic2NyaXB0aW9uIHwgc2xpY2luZ1xuJworICAgICAgICAgICAgICAnICAgYXVnb3AgICAgICAgICAgICAgICAgICAgICA6Oj0gIis9IiB8ICItPSIgfCAiKj0iIHwgIkA9IiB8ICcKKyAgICAgICAgICAgICAgJyIvPSIgfCAiLy89IiB8ICIlPSIgfCAiKio9IlxuJworICAgICAgICAgICAgICAnICAgICAgICAgICAgIHwgIj4+PSIgfCAiPDw9IiB8ICImPSIgfCAiXj0iIHwgInw9IlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICcoU2VlIHNlY3Rpb24gUHJpbWFyaWVzIGZvciB0aGUgc3ludGF4IGRlZmluaXRpb25zIG9mIHRoZSBsYXN0ICcKKyAgICAgICAgICAgICAgJ3RocmVlXG4nCisgICAgICAgICAgICAgICdzeW1ib2xzLilcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnQW4gYXVnbWVudGVkIGFzc2lnbm1lbnQgZXZhbHVhdGVzIHRoZSB0YXJnZXQgKHdoaWNoLCB1bmxpa2UgJworICAgICAgICAgICAgICAnbm9ybWFsXG4nCisgICAgICAgICAgICAgICdhc3NpZ25tZW50IHN0YXRlbWVudHMsIGNhbm5vdCBiZSBhbiB1bnBhY2tpbmcpIGFuZCB0aGUgJworICAgICAgICAgICAgICAnZXhwcmVzc2lvblxuJworICAgICAgICAgICAgICAnbGlzdCwgcGVyZm9ybXMgdGhlIGJpbmFyeSBvcGVyYXRpb24gc3BlY2lmaWMgdG8gdGhlIHR5cGUgb2YgJworICAgICAgICAgICAgICAnYXNzaWdubWVudFxuJworICAgICAgICAgICAgICAnb24gdGhlIHR3byBvcGVyYW5kcywgYW5kIGFzc2lnbnMgdGhlIHJlc3VsdCB0byB0aGUgb3JpZ2luYWwgJworICAgICAgICAgICAgICAndGFyZ2V0LlxuJworICAgICAgICAgICAgICAnVGhlIHRhcmdldCBpcyBvbmx5IGV2YWx1YXRlZCBvbmNlLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdBbiBhdWdtZW50ZWQgYXNzaWdubWVudCBleHByZXNzaW9uIGxpa2UgInggKz0gMSIgY2FuIGJlICcKKyAgICAgICAgICAgICAgJ3Jld3JpdHRlbiBhc1xuJworICAgICAgICAgICAgICAnInggPSB4ICsgMSIgdG8gYWNoaWV2ZSBhIHNpbWlsYXIsIGJ1dCBub3QgZXhhY3RseSBlcXVhbCBlZmZlY3QuICcKKyAgICAgICAgICAgICAgJ0luIHRoZVxuJworICAgICAgICAgICAgICAnYXVnbWVudGVkIHZlcnNpb24sICJ4IiBpcyBvbmx5IGV2YWx1YXRlZCBvbmNlLiBBbHNvLCB3aGVuICcKKyAgICAgICAgICAgICAgJ3Bvc3NpYmxlLFxuJworICAgICAgICAgICAgICAndGhlIGFjdHVhbCBvcGVyYXRpb24gaXMgcGVyZm9ybWVkICppbi1wbGFjZSosIG1lYW5pbmcgdGhhdCAnCisgICAgICAgICAgICAgICdyYXRoZXIgdGhhblxuJworICAgICAgICAgICAgICAnY3JlYXRpbmcgYSBuZXcgb2JqZWN0IGFuZCBhc3NpZ25pbmcgdGhhdCB0byB0aGUgdGFyZ2V0LCB0aGUgb2xkICcKKyAgICAgICAgICAgICAgJ29iamVjdFxuJworICAgICAgICAgICAgICAnaXMgbW9kaWZpZWQgaW5zdGVhZC5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnVW5saWtlIG5vcm1hbCBhc3NpZ25tZW50cywgYXVnbWVudGVkIGFzc2lnbm1lbnRzIGV2YWx1YXRlIHRoZSAnCisgICAgICAgICAgICAgICdsZWZ0LVxuJworICAgICAgICAgICAgICAnaGFuZCBzaWRlICpiZWZvcmUqIGV2YWx1YXRpbmcgdGhlIHJpZ2h0LWhhbmQgc2lkZS4gIEZvciAnCisgICAgICAgICAgICAgICdleGFtcGxlLCAiYVtpXVxuJworICAgICAgICAgICAgICAnKz0gZih4KSIgZmlyc3QgbG9va3MtdXAgImFbaV0iLCB0aGVuIGl0IGV2YWx1YXRlcyAiZih4KSIgYW5kICcKKyAgICAgICAgICAgICAgJ3BlcmZvcm1zXG4nCisgICAgICAgICAgICAgICd0aGUgYWRkaXRpb24sIGFuZCBsYXN0bHksIGl0IHdyaXRlcyB0aGUgcmVzdWx0IGJhY2sgdG8gImFbaV0iLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdXaXRoIHRoZSBleGNlcHRpb24gb2YgYXNzaWduaW5nIHRvIHR1cGxlcyBhbmQgbXVsdGlwbGUgdGFyZ2V0cyAnCisgICAgICAgICAgICAgICdpbiBhXG4nCisgICAgICAgICAgICAgICdzaW5nbGUgc3RhdGVtZW50LCB0aGUgYXNzaWdubWVudCBkb25lIGJ5IGF1Z21lbnRlZCBhc3NpZ25tZW50XG4nCisgICAgICAgICAgICAgICdzdGF0ZW1lbnRzIGlzIGhhbmRsZWQgdGhlIHNhbWUgd2F5IGFzIG5vcm1hbCBhc3NpZ25tZW50cy4gJworICAgICAgICAgICAgICAnU2ltaWxhcmx5LFxuJworICAgICAgICAgICAgICAnd2l0aCB0aGUgZXhjZXB0aW9uIG9mIHRoZSBwb3NzaWJsZSAqaW4tcGxhY2UqIGJlaGF2aW9yLCB0aGUgJworICAgICAgICAgICAgICAnYmluYXJ5XG4nCisgICAgICAgICAgICAgICdvcGVyYXRpb24gcGVyZm9ybWVkIGJ5IGF1Z21lbnRlZCBhc3NpZ25tZW50IGlzIHRoZSBzYW1lIGFzIHRoZSAnCisgICAgICAgICAgICAgICdub3JtYWxcbicKKyAgICAgICAgICAgICAgJ2JpbmFyeSBvcGVyYXRpb25zLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdGb3IgdGFyZ2V0cyB3aGljaCBhcmUgYXR0cmlidXRlIHJlZmVyZW5jZXMsIHRoZSBzYW1lIGNhdmVhdCAnCisgICAgICAgICAgICAgICdhYm91dFxuJworICAgICAgICAgICAgICAnY2xhc3MgYW5kIGluc3RhbmNlIGF0dHJpYnV0ZXMgYXBwbGllcyBhcyBmb3IgcmVndWxhciAnCisgICAgICAgICAgICAgICdhc3NpZ25tZW50cy5cbicsCisgJ2JpbmFyeSc6ICdcbicKKyAgICAgICAgICAgJ0JpbmFyeSBhcml0aG1ldGljIG9wZXJhdGlvbnNcbicKKyAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlIGJpbmFyeSBhcml0aG1ldGljIG9wZXJhdGlvbnMgaGF2ZSB0aGUgY29udmVudGlvbmFsIHByaW9yaXR5XG4nCisgICAgICAgICAgICdsZXZlbHMuICBOb3RlIHRoYXQgc29tZSBvZiB0aGVzZSBvcGVyYXRpb25zIGFsc28gYXBwbHkgdG8gY2VydGFpbiAnCisgICAgICAgICAgICdub24tXG4nCisgICAgICAgICAgICdudW1lcmljIHR5cGVzLiAgQXBhcnQgZnJvbSB0aGUgcG93ZXIgb3BlcmF0b3IsIHRoZXJlIGFyZSBvbmx5IHR3b1xuJworICAgICAgICAgICAnbGV2ZWxzLCBvbmUgZm9yIG11bHRpcGxpY2F0aXZlIG9wZXJhdG9ycyBhbmQgb25lIGZvciBhZGRpdGl2ZVxuJworICAgICAgICAgICAnb3BlcmF0b3JzOlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICBtX2V4cHIgOjo9IHVfZXhwciB8IG1fZXhwciAiKiIgdV9leHByIHwgbV9leHByICJAIiBtX2V4cHIgfFxuJworICAgICAgICAgICAnICAgICAgICAgICAgICBtX2V4cHIgIi8vIiB1X2V4cHJ8IG1fZXhwciAiLyIgdV9leHByIHxcbicKKyAgICAgICAgICAgJyAgICAgICAgICAgICAgbV9leHByICIlIiB1X2V4cHJcbicKKyAgICAgICAgICAgJyAgIGFfZXhwciA6Oj0gbV9leHByIHwgYV9leHByICIrIiBtX2V4cHIgfCBhX2V4cHIgIi0iIG1fZXhwclxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgIioiIChtdWx0aXBsaWNhdGlvbikgb3BlcmF0b3IgeWllbGRzIHRoZSBwcm9kdWN0IG9mIGl0cyAnCisgICAgICAgICAgICdhcmd1bWVudHMuXG4nCisgICAgICAgICAgICdUaGUgYXJndW1lbnRzIG11c3QgZWl0aGVyIGJvdGggYmUgbnVtYmVycywgb3Igb25lIGFyZ3VtZW50IG11c3QgYmUgJworICAgICAgICAgICAnYW5cbicKKyAgICAgICAgICAgJ2ludGVnZXIgYW5kIHRoZSBvdGhlciBtdXN0IGJlIGEgc2VxdWVuY2UuIEluIHRoZSBmb3JtZXIgY2FzZSwgdGhlXG4nCisgICAgICAgICAgICdudW1iZXJzIGFyZSBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZSBhbmQgdGhlbiBtdWx0aXBsaWVkICcKKyAgICAgICAgICAgJ3RvZ2V0aGVyLlxuJworICAgICAgICAgICAnSW4gdGhlIGxhdHRlciBjYXNlLCBzZXF1ZW5jZSByZXBldGl0aW9uIGlzIHBlcmZvcm1lZDsgYSBuZWdhdGl2ZVxuJworICAgICAgICAgICAncmVwZXRpdGlvbiBmYWN0b3IgeWllbGRzIGFuIGVtcHR5IHNlcXVlbmNlLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgIkAiIChhdCkgb3BlcmF0b3IgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgbWF0cml4XG4nCisgICAgICAgICAgICdtdWx0aXBsaWNhdGlvbi4gIE5vIGJ1aWx0aW4gUHl0aG9uIHR5cGVzIGltcGxlbWVudCB0aGlzIG9wZXJhdG9yLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdOZXcgaW4gdmVyc2lvbiAzLjUuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSAiLyIgKGRpdmlzaW9uKSBhbmQgIi8vIiAoZmxvb3IgZGl2aXNpb24pIG9wZXJhdG9ycyB5aWVsZCB0aGVcbicKKyAgICAgICAgICAgJ3F1b3RpZW50IG9mIHRoZWlyIGFyZ3VtZW50cy4gIFRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgZmlyc3RcbicKKyAgICAgICAgICAgJ2NvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLiBEaXZpc2lvbiBvZiBpbnRlZ2VycyB5aWVsZHMgYSBmbG9hdCwgJworICAgICAgICAgICAnd2hpbGVcbicKKyAgICAgICAgICAgJ2Zsb29yIGRpdmlzaW9uIG9mIGludGVnZXJzIHJlc3VsdHMgaW4gYW4gaW50ZWdlcjsgdGhlIHJlc3VsdCBpcyAnCisgICAgICAgICAgICd0aGF0XG4nCisgICAgICAgICAgICJvZiBtYXRoZW1hdGljYWwgZGl2aXNpb24gd2l0aCB0aGUgJ2Zsb29yJyBmdW5jdGlvbiBhcHBsaWVkIHRvIHRoZVxuIgorICAgICAgICAgICAncmVzdWx0LiAgRGl2aXNpb24gYnkgemVybyByYWlzZXMgdGhlICJaZXJvRGl2aXNpb25FcnJvciIgJworICAgICAgICAgICAnZXhjZXB0aW9uLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgIiUiIChtb2R1bG8pIG9wZXJhdG9yIHlpZWxkcyB0aGUgcmVtYWluZGVyIGZyb20gdGhlIGRpdmlzaW9uICcKKyAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICd0aGUgZmlyc3QgYXJndW1lbnQgYnkgdGhlIHNlY29uZC4gIFRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgJworICAgICAgICAgICAnZmlyc3RcbicKKyAgICAgICAgICAgJ2NvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLiAgQSB6ZXJvIHJpZ2h0IGFyZ3VtZW50IHJhaXNlcyB0aGVcbicKKyAgICAgICAgICAgJyJaZXJvRGl2aXNpb25FcnJvciIgZXhjZXB0aW9uLiAgVGhlIGFyZ3VtZW50cyBtYXkgYmUgZmxvYXRpbmcgJworICAgICAgICAgICAncG9pbnRcbicKKyAgICAgICAgICAgJ251bWJlcnMsIGUuZy4sICIzLjE0JTAuNyIgZXF1YWxzICIwLjM0IiAoc2luY2UgIjMuMTQiIGVxdWFscyAnCisgICAgICAgICAgICciNCowLjcgK1xuJworICAgICAgICAgICAnMC4zNCIuKSAgVGhlIG1vZHVsbyBvcGVyYXRvciBhbHdheXMgeWllbGRzIGEgcmVzdWx0IHdpdGggdGhlIHNhbWUgJworICAgICAgICAgICAnc2lnblxuJworICAgICAgICAgICAnYXMgaXRzIHNlY29uZCBvcGVyYW5kIChvciB6ZXJvKTsgdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSByZXN1bHQgJworICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgJ3N0cmljdGx5IHNtYWxsZXIgdGhhbiB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIHNlY29uZCBvcGVyYW5kICcKKyAgICAgICAgICAgJ1sxXS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlIGZsb29yIGRpdmlzaW9uIGFuZCBtb2R1bG8gb3BlcmF0b3JzIGFyZSBjb25uZWN0ZWQgYnkgdGhlICcKKyAgICAgICAgICAgJ2ZvbGxvd2luZ1xuJworICAgICAgICAgICAnaWRlbnRpdHk6ICJ4ID09ICh4Ly95KSp5ICsgKHgleSkiLiAgRmxvb3IgZGl2aXNpb24gYW5kIG1vZHVsbyBhcmUgJworICAgICAgICAgICAnYWxzb1xuJworICAgICAgICAgICAnY29ubmVjdGVkIHdpdGggdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJkaXZtb2QoKSI6ICJkaXZtb2QoeCwgeSkgPT1cbicKKyAgICAgICAgICAgJyh4Ly95LCB4JXkpIi4gWzJdLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdJbiBhZGRpdGlvbiB0byBwZXJmb3JtaW5nIHRoZSBtb2R1bG8gb3BlcmF0aW9uIG9uIG51bWJlcnMsIHRoZSAnCisgICAgICAgICAgICciJSJcbicKKyAgICAgICAgICAgJ29wZXJhdG9yIGlzIGFsc28gb3ZlcmxvYWRlZCBieSBzdHJpbmcgb2JqZWN0cyB0byBwZXJmb3JtICcKKyAgICAgICAgICAgJ29sZC1zdHlsZVxuJworICAgICAgICAgICAnc3RyaW5nIGZvcm1hdHRpbmcgKGFsc28ga25vd24gYXMgaW50ZXJwb2xhdGlvbikuICBUaGUgc3ludGF4IGZvclxuJworICAgICAgICAgICAnc3RyaW5nIGZvcm1hdHRpbmcgaXMgZGVzY3JpYmVkIGluIHRoZSBQeXRob24gTGlicmFyeSBSZWZlcmVuY2UsXG4nCisgICAgICAgICAgICdzZWN0aW9uIHByaW50Zi1zdHlsZSBTdHJpbmcgRm9ybWF0dGluZy5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlIGZsb29yIGRpdmlzaW9uIG9wZXJhdG9yLCB0aGUgbW9kdWxvIG9wZXJhdG9yLCBhbmQgdGhlICcKKyAgICAgICAgICAgJyJkaXZtb2QoKSJcbicKKyAgICAgICAgICAgJ2Z1bmN0aW9uIGFyZSBub3QgZGVmaW5lZCBmb3IgY29tcGxleCBudW1iZXJzLiAgSW5zdGVhZCwgY29udmVydCB0byAnCisgICAgICAgICAgICdhXG4nCisgICAgICAgICAgICdmbG9hdGluZyBwb2ludCBudW1iZXIgdXNpbmcgdGhlICJhYnMoKSIgZnVuY3Rpb24gaWYgYXBwcm9wcmlhdGUuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSAiKyIgKGFkZGl0aW9uKSBvcGVyYXRvciB5aWVsZHMgdGhlIHN1bSBvZiBpdHMgYXJndW1lbnRzLiAgVGhlXG4nCisgICAgICAgICAgICdhcmd1bWVudHMgbXVzdCBlaXRoZXIgYm90aCBiZSBudW1iZXJzIG9yIGJvdGggYmUgc2VxdWVuY2VzIG9mIHRoZSAnCisgICAgICAgICAgICdzYW1lXG4nCisgICAgICAgICAgICd0eXBlLiAgSW4gdGhlIGZvcm1lciBjYXNlLCB0aGUgbnVtYmVycyBhcmUgY29udmVydGVkIHRvIGEgY29tbW9uICcKKyAgICAgICAgICAgJ3R5cGVcbicKKyAgICAgICAgICAgJ2FuZCB0aGVuIGFkZGVkIHRvZ2V0aGVyLiBJbiB0aGUgbGF0dGVyIGNhc2UsIHRoZSBzZXF1ZW5jZXMgYXJlXG4nCisgICAgICAgICAgICdjb25jYXRlbmF0ZWQuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSAiLSIgKHN1YnRyYWN0aW9uKSBvcGVyYXRvciB5aWVsZHMgdGhlIGRpZmZlcmVuY2Ugb2YgaXRzICcKKyAgICAgICAgICAgJ2FyZ3VtZW50cy5cbicKKyAgICAgICAgICAgJ1RoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgZmlyc3QgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUuXG4nLAorICdiaXR3aXNlJzogJ1xuJworICAgICAgICAgICAgJ0JpbmFyeSBiaXR3aXNlIG9wZXJhdGlvbnNcbicKKyAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnRWFjaCBvZiB0aGUgdGhyZWUgYml0d2lzZSBvcGVyYXRpb25zIGhhcyBhIGRpZmZlcmVudCBwcmlvcml0eSAnCisgICAgICAgICAgICAnbGV2ZWw6XG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnICAgYW5kX2V4cHIgOjo9IHNoaWZ0X2V4cHIgfCBhbmRfZXhwciAiJiIgc2hpZnRfZXhwclxuJworICAgICAgICAgICAgJyAgIHhvcl9leHByIDo6PSBhbmRfZXhwciB8IHhvcl9leHByICJeIiBhbmRfZXhwclxuJworICAgICAgICAgICAgJyAgIG9yX2V4cHIgIDo6PSB4b3JfZXhwciB8IG9yX2V4cHIgInwiIHhvcl9leHByXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnVGhlICImIiBvcGVyYXRvciB5aWVsZHMgdGhlIGJpdHdpc2UgQU5EIG9mIGl0cyBhcmd1bWVudHMsIHdoaWNoICcKKyAgICAgICAgICAgICdtdXN0XG4nCisgICAgICAgICAgICAnYmUgaW50ZWdlcnMuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnVGhlICJeIiBvcGVyYXRvciB5aWVsZHMgdGhlIGJpdHdpc2UgWE9SIChleGNsdXNpdmUgT1IpIG9mIGl0c1xuJworICAgICAgICAgICAgJ2FyZ3VtZW50cywgd2hpY2ggbXVzdCBiZSBpbnRlZ2Vycy5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdUaGUgInwiIG9wZXJhdG9yIHlpZWxkcyB0aGUgYml0d2lzZSAoaW5jbHVzaXZlKSBPUiBvZiBpdHMgJworICAgICAgICAgICAgJ2FyZ3VtZW50cyxcbicKKyAgICAgICAgICAgICd3aGljaCBtdXN0IGJlIGludGVnZXJzLlxuJywKKyAnYmx0aW4tY29kZS1vYmplY3RzJzogJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAnQ29kZSBPYmplY3RzXG4nCisgICAgICAgICAgICAgICAgICAgICAgICcqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAnQ29kZSBvYmplY3RzIGFyZSB1c2VkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbiB0byAnCisgICAgICAgICAgICAgICAgICAgICAgICdyZXByZXNlbnQgInBzZXVkby1cbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBpbGVkIiBleGVjdXRhYmxlIFB5dGhvbiBjb2RlIHN1Y2ggYXMgYSBmdW5jdGlvbiAnCisgICAgICAgICAgICAgICAgICAgICAgICdib2R5LiBUaGV5IGRpZmZlclxuJworICAgICAgICAgICAgICAgICAgICAgICAiZnJvbSBmdW5jdGlvbiBvYmplY3RzIGJlY2F1c2UgdGhleSBkb24ndCBjb250YWluIGEgIgorICAgICAgICAgICAgICAgICAgICAgICAncmVmZXJlbmNlIHRvIHRoZWlyXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdnbG9iYWwgZXhlY3V0aW9uIGVudmlyb25tZW50LiAgQ29kZSBvYmplY3RzIGFyZSAnCisgICAgICAgICAgICAgICAgICAgICAgICdyZXR1cm5lZCBieSB0aGUgYnVpbHQtXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdpbiAiY29tcGlsZSgpIiBmdW5jdGlvbiBhbmQgY2FuIGJlIGV4dHJhY3RlZCBmcm9tICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ2Z1bmN0aW9uIG9iamVjdHNcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ3Rocm91Z2ggdGhlaXIgIl9fY29kZV9fIiBhdHRyaWJ1dGUuIFNlZSBhbHNvIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAgICciY29kZSIgbW9kdWxlLlxuJworICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdBIGNvZGUgb2JqZWN0IGNhbiBiZSBleGVjdXRlZCBvciBldmFsdWF0ZWQgYnkgcGFzc2luZyAnCisgICAgICAgICAgICAgICAgICAgICAgICdpdCAoaW5zdGVhZCBvZiBhXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdzb3VyY2Ugc3RyaW5nKSB0byB0aGUgImV4ZWMoKSIgb3IgImV2YWwoKSIgIGJ1aWx0LWluICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ2Z1bmN0aW9ucy5cbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAnU2VlIFRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSBmb3IgbW9yZSAnCisgICAgICAgICAgICAgICAgICAgICAgICdpbmZvcm1hdGlvbi5cbicsCisgJ2JsdGluLWVsbGlwc2lzLW9iamVjdCc6ICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ1RoZSBFbGxpcHNpcyBPYmplY3RcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICAnVGhpcyBvYmplY3QgaXMgY29tbW9ubHkgdXNlZCBieSBzbGljaW5nIChzZWUgJworICAgICAgICAgICAgICAgICAgICAgICAgICAnU2xpY2luZ3MpLiAgSXQgc3VwcG9ydHNcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vIHNwZWNpYWwgb3BlcmF0aW9ucy4gIFRoZXJlIGlzIGV4YWN0bHkgb25lICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VsbGlwc2lzIG9iamVjdCwgbmFtZWRcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJyJFbGxpcHNpcyIgKGEgYnVpbHQtaW4gbmFtZSkuICAidHlwZShFbGxpcHNpcykoKSIgJworICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvZHVjZXMgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICciRWxsaXBzaXMiIHNpbmdsZXRvbi5cbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICAnSXQgaXMgd3JpdHRlbiBhcyAiRWxsaXBzaXMiIG9yICIuLi4iLlxuJywKKyAnYmx0aW4tbnVsbC1vYmplY3QnOiAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgJ1RoZSBOdWxsIE9iamVjdFxuJworICAgICAgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgIlRoaXMgb2JqZWN0IGlzIHJldHVybmVkIGJ5IGZ1bmN0aW9ucyB0aGF0IGRvbid0ICIKKyAgICAgICAgICAgICAgICAgICAgICAnZXhwbGljaXRseSByZXR1cm4gYVxuJworICAgICAgICAgICAgICAgICAgICAgICd2YWx1ZS4gIEl0IHN1cHBvcnRzIG5vIHNwZWNpYWwgb3BlcmF0aW9ucy4gIFRoZXJlIGlzICcKKyAgICAgICAgICAgICAgICAgICAgICAnZXhhY3RseSBvbmUgbnVsbFxuJworICAgICAgICAgICAgICAgICAgICAgICdvYmplY3QsIG5hbWVkICJOb25lIiAoYSBidWlsdC1pbiBuYW1lKS4gICJ0eXBlKE5vbmUpKCkiICcKKyAgICAgICAgICAgICAgICAgICAgICAncHJvZHVjZXMgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAgJ3NhbWUgc2luZ2xldG9uLlxuJworICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAnSXQgaXMgd3JpdHRlbiBhcyAiTm9uZSIuXG4nLAorICdibHRpbi10eXBlLW9iamVjdHMnOiAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdUeXBlIE9iamVjdHNcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdUeXBlIG9iamVjdHMgcmVwcmVzZW50IHRoZSB2YXJpb3VzIG9iamVjdCB0eXBlcy4gIEFuICcKKyAgICAgICAgICAgICAgICAgICAgICAgIm9iamVjdCdzIHR5cGUgaXNcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgJ2FjY2Vzc2VkIGJ5IHRoZSBidWlsdC1pbiBmdW5jdGlvbiAidHlwZSgpIi4gIFRoZXJlIGFyZSAnCisgICAgICAgICAgICAgICAgICAgICAgICdubyBzcGVjaWFsXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdvcGVyYXRpb25zIG9uIHR5cGVzLiAgVGhlIHN0YW5kYXJkIG1vZHVsZSAidHlwZXMiICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ2RlZmluZXMgbmFtZXMgZm9yXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdhbGwgc3RhbmRhcmQgYnVpbHQtaW4gdHlwZXMuXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1R5cGVzIGFyZSB3cml0dGVuIGxpa2UgdGhpczogIjxjbGFzcyBcJ2ludFwnPiIuXG4nLAorICdib29sZWFucyc6ICdcbicKKyAgICAgICAgICAgICAnQm9vbGVhbiBvcGVyYXRpb25zXG4nCisgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgb3JfdGVzdCAgOjo9IGFuZF90ZXN0IHwgb3JfdGVzdCAib3IiIGFuZF90ZXN0XG4nCisgICAgICAgICAgICAgJyAgIGFuZF90ZXN0IDo6PSBub3RfdGVzdCB8IGFuZF90ZXN0ICJhbmQiIG5vdF90ZXN0XG4nCisgICAgICAgICAgICAgJyAgIG5vdF90ZXN0IDo6PSBjb21wYXJpc29uIHwgIm5vdCIgbm90X3Rlc3RcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0luIHRoZSBjb250ZXh0IG9mIEJvb2xlYW4gb3BlcmF0aW9ucywgYW5kIGFsc28gd2hlbiBleHByZXNzaW9ucyAnCisgICAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAgICd1c2VkIGJ5IGNvbnRyb2wgZmxvdyBzdGF0ZW1lbnRzLCB0aGUgZm9sbG93aW5nIHZhbHVlcyBhcmUgJworICAgICAgICAgICAgICdpbnRlcnByZXRlZFxuJworICAgICAgICAgICAgICdhcyBmYWxzZTogIkZhbHNlIiwgIk5vbmUiLCBudW1lcmljIHplcm8gb2YgYWxsIHR5cGVzLCBhbmQgZW1wdHlcbicKKyAgICAgICAgICAgICAnc3RyaW5ncyBhbmQgY29udGFpbmVycyAoaW5jbHVkaW5nIHN0cmluZ3MsIHR1cGxlcywgbGlzdHMsXG4nCisgICAgICAgICAgICAgJ2RpY3Rpb25hcmllcywgc2V0cyBhbmQgZnJvemVuc2V0cykuICBBbGwgb3RoZXIgdmFsdWVzIGFyZSAnCisgICAgICAgICAgICAgJ2ludGVycHJldGVkXG4nCisgICAgICAgICAgICAgJ2FzIHRydWUuICBVc2VyLWRlZmluZWQgb2JqZWN0cyBjYW4gY3VzdG9taXplIHRoZWlyIHRydXRoIHZhbHVlICcKKyAgICAgICAgICAgICAnYnlcbicKKyAgICAgICAgICAgICAncHJvdmlkaW5nIGEgIl9fYm9vbF9fKCkiIG1ldGhvZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBvcGVyYXRvciAibm90IiB5aWVsZHMgIlRydWUiIGlmIGl0cyBhcmd1bWVudCBpcyBmYWxzZSwgJworICAgICAgICAgICAgICciRmFsc2UiXG4nCisgICAgICAgICAgICAgJ290aGVyd2lzZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBleHByZXNzaW9uICJ4IGFuZCB5IiBmaXJzdCBldmFsdWF0ZXMgKngqOyBpZiAqeCogaXMgZmFsc2UsICcKKyAgICAgICAgICAgICAnaXRzXG4nCisgICAgICAgICAgICAgJ3ZhbHVlIGlzIHJldHVybmVkOyBvdGhlcndpc2UsICp5KiBpcyBldmFsdWF0ZWQgYW5kIHRoZSByZXN1bHRpbmcgJworICAgICAgICAgICAgICd2YWx1ZVxuJworICAgICAgICAgICAgICdpcyByZXR1cm5lZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBleHByZXNzaW9uICJ4IG9yIHkiIGZpcnN0IGV2YWx1YXRlcyAqeCo7IGlmICp4KiBpcyB0cnVlLCBpdHMgJworICAgICAgICAgICAgICd2YWx1ZVxuJworICAgICAgICAgICAgICdpcyByZXR1cm5lZDsgb3RoZXJ3aXNlLCAqeSogaXMgZXZhbHVhdGVkIGFuZCB0aGUgcmVzdWx0aW5nIHZhbHVlICcKKyAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAncmV0dXJuZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcoTm90ZSB0aGF0IG5laXRoZXIgImFuZCIgbm9yICJvciIgcmVzdHJpY3QgdGhlIHZhbHVlIGFuZCB0eXBlICcKKyAgICAgICAgICAgICAndGhleVxuJworICAgICAgICAgICAgICdyZXR1cm4gdG8gIkZhbHNlIiBhbmQgIlRydWUiLCBidXQgcmF0aGVyIHJldHVybiB0aGUgbGFzdCAnCisgICAgICAgICAgICAgJ2V2YWx1YXRlZFxuJworICAgICAgICAgICAgICdhcmd1bWVudC4gIFRoaXMgaXMgc29tZXRpbWVzIHVzZWZ1bCwgZS5nLiwgaWYgInMiIGlzIGEgc3RyaW5nICcKKyAgICAgICAgICAgICAndGhhdFxuJworICAgICAgICAgICAgICdzaG91bGQgYmUgcmVwbGFjZWQgYnkgYSBkZWZhdWx0IHZhbHVlIGlmIGl0IGlzIGVtcHR5LCB0aGUgJworICAgICAgICAgICAgICdleHByZXNzaW9uXG4nCisgICAgICAgICAgICAgJyJzIG9yIFwnZm9vXCciIHlpZWxkcyB0aGUgZGVzaXJlZCB2YWx1ZS4gIEJlY2F1c2UgIm5vdCIgaGFzIHRvICcKKyAgICAgICAgICAgICAnY3JlYXRlIGFcbicKKyAgICAgICAgICAgICAnbmV3IHZhbHVlLCBpdCByZXR1cm5zIGEgYm9vbGVhbiB2YWx1ZSByZWdhcmRsZXNzIG9mIHRoZSB0eXBlIG9mICcKKyAgICAgICAgICAgICAnaXRzXG4nCisgICAgICAgICAgICAgJ2FyZ3VtZW50IChmb3IgZXhhbXBsZSwgIm5vdCBcJ2Zvb1wnIiBwcm9kdWNlcyAiRmFsc2UiIHJhdGhlciAnCisgICAgICAgICAgICAgJ3RoYW4gIlwnXCciLilcbicsCisgJ2JyZWFrJzogJ1xuJworICAgICAgICAgICdUaGUgImJyZWFrIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBicmVha19zdG10IDo6PSAiYnJlYWsiXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICciYnJlYWsiIG1heSBvbmx5IG9jY3VyIHN5bnRhY3RpY2FsbHkgbmVzdGVkIGluIGEgImZvciIgb3IgIndoaWxlIlxuJworICAgICAgICAgICdsb29wLCBidXQgbm90IG5lc3RlZCBpbiBhIGZ1bmN0aW9uIG9yIGNsYXNzIGRlZmluaXRpb24gd2l0aGluIHRoYXRcbicKKyAgICAgICAgICAnbG9vcC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0l0IHRlcm1pbmF0ZXMgdGhlIG5lYXJlc3QgZW5jbG9zaW5nIGxvb3AsIHNraXBwaW5nIHRoZSBvcHRpb25hbCAnCisgICAgICAgICAgJyJlbHNlIlxuJworICAgICAgICAgICdjbGF1c2UgaWYgdGhlIGxvb3AgaGFzIG9uZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0lmIGEgImZvciIgbG9vcCBpcyB0ZXJtaW5hdGVkIGJ5ICJicmVhayIsIHRoZSBsb29wIGNvbnRyb2wgdGFyZ2V0XG4nCisgICAgICAgICAgJ2tlZXBzIGl0cyBjdXJyZW50IHZhbHVlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnV2hlbiAiYnJlYWsiIHBhc3NlcyBjb250cm9sIG91dCBvZiBhICJ0cnkiIHN0YXRlbWVudCB3aXRoIGEgJworICAgICAgICAgICciZmluYWxseSJcbicKKyAgICAgICAgICAnY2xhdXNlLCB0aGF0ICJmaW5hbGx5IiBjbGF1c2UgaXMgZXhlY3V0ZWQgYmVmb3JlIHJlYWxseSBsZWF2aW5nICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJ2xvb3AuXG4nLAorICdjYWxsYWJsZS10eXBlcyc6ICdcbicKKyAgICAgICAgICAgICAgICAgICAnRW11bGF0aW5nIGNhbGxhYmxlIG9iamVjdHNcbicKKyAgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2NhbGxfXyhzZWxmWywgYXJncy4uLl0pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgd2hlbiB0aGUgaW5zdGFuY2UgaXMgImNhbGxlZCIgYXMgYSBmdW5jdGlvbjsgaWYgJworICAgICAgICAgICAgICAgICAgICd0aGlzIG1ldGhvZFxuJworICAgICAgICAgICAgICAgICAgICcgICBpcyBkZWZpbmVkLCAieChhcmcxLCBhcmcyLCAuLi4pIiBpcyBhIHNob3J0aGFuZCBmb3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgInguX19jYWxsX18oYXJnMSwgYXJnMiwgLi4uKSIuXG4nLAorICdjYWxscyc6ICdcbicKKyAgICAgICAgICAnQ2FsbHNcbicKKyAgICAgICAgICAnKioqKipcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0EgY2FsbCBjYWxscyBhIGNhbGxhYmxlIG9iamVjdCAoZS5nLiwgYSAqZnVuY3Rpb24qKSB3aXRoIGEgJworICAgICAgICAgICdwb3NzaWJseVxuJworICAgICAgICAgICdlbXB0eSBzZXJpZXMgb2YgKmFyZ3VtZW50cyo6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBjYWxsICAgICAgICAgICAgICAgICA6Oj0gcHJpbWFyeSAiKCIgW2FyZ3VtZW50X2xpc3QgWyIsIl0gfCAnCisgICAgICAgICAgJ2NvbXByZWhlbnNpb25dICIpIlxuJworICAgICAgICAgICcgICBhcmd1bWVudF9saXN0ICAgICAgICA6Oj0gcG9zaXRpb25hbF9hcmd1bWVudHMgWyIsIiAnCisgICAgICAgICAgJ3N0YXJyZWRfYW5kX2tleXdvcmRzXVxuJworICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICAgIFsiLCIga2V5d29yZHNfYXJndW1lbnRzXVxuJworICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICB8IHN0YXJyZWRfYW5kX2tleXdvcmRzIFsiLCIgJworICAgICAgICAgICdrZXl3b3Jkc19hcmd1bWVudHNdXG4nCisgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgIHwga2V5d29yZHNfYXJndW1lbnRzXG4nCisgICAgICAgICAgJyAgIHBvc2l0aW9uYWxfYXJndW1lbnRzIDo6PSBbIioiXSBleHByZXNzaW9uICgiLCIgWyIqIl0gJworICAgICAgICAgICdleHByZXNzaW9uKSpcbicKKyAgICAgICAgICAnICAgc3RhcnJlZF9hbmRfa2V5d29yZHMgOjo9ICgiKiIgZXhwcmVzc2lvbiB8IGtleXdvcmRfaXRlbSlcbicKKyAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiLCIgIioiIGV4cHJlc3Npb24gfCAiLCIgJworICAgICAgICAgICdrZXl3b3JkX2l0ZW0pKlxuJworICAgICAgICAgICcgICBrZXl3b3Jkc19hcmd1bWVudHMgICA6Oj0gKGtleXdvcmRfaXRlbSB8ICIqKiIgZXhwcmVzc2lvbilcbicKKyAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgICAgICAoIiwiIGtleXdvcmRfaXRlbSB8ICIqKiIgZXhwcmVzc2lvbikqXG4nCisgICAgICAgICAgJyAgIGtleXdvcmRfaXRlbSAgICAgICAgIDo6PSBpZGVudGlmaWVyICI9IiBleHByZXNzaW9uXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBbiBvcHRpb25hbCB0cmFpbGluZyBjb21tYSBtYXkgYmUgcHJlc2VudCBhZnRlciB0aGUgcG9zaXRpb25hbCBhbmRcbicKKyAgICAgICAgICAna2V5d29yZCBhcmd1bWVudHMgYnV0IGRvZXMgbm90IGFmZmVjdCB0aGUgc2VtYW50aWNzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnVGhlIHByaW1hcnkgbXVzdCBldmFsdWF0ZSB0byBhIGNhbGxhYmxlIG9iamVjdCAodXNlci1kZWZpbmVkXG4nCisgICAgICAgICAgJ2Z1bmN0aW9ucywgYnVpbHQtaW4gZnVuY3Rpb25zLCBtZXRob2RzIG9mIGJ1aWx0LWluIG9iamVjdHMsIGNsYXNzXG4nCisgICAgICAgICAgJ29iamVjdHMsIG1ldGhvZHMgb2YgY2xhc3MgaW5zdGFuY2VzLCBhbmQgYWxsIG9iamVjdHMgaGF2aW5nIGFcbicKKyAgICAgICAgICAnIl9fY2FsbF9fKCkiIG1ldGhvZCBhcmUgY2FsbGFibGUpLiAgQWxsIGFyZ3VtZW50IGV4cHJlc3Npb25zIGFyZVxuJworICAgICAgICAgICdldmFsdWF0ZWQgYmVmb3JlIHRoZSBjYWxsIGlzIGF0dGVtcHRlZC4gIFBsZWFzZSByZWZlciB0byBzZWN0aW9uXG4nCisgICAgICAgICAgJ0Z1bmN0aW9uIGRlZmluaXRpb25zIGZvciB0aGUgc3ludGF4IG9mIGZvcm1hbCAqcGFyYW1ldGVyKiBsaXN0cy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0lmIGtleXdvcmQgYXJndW1lbnRzIGFyZSBwcmVzZW50LCB0aGV5IGFyZSBmaXJzdCBjb252ZXJ0ZWQgdG9cbicKKyAgICAgICAgICAncG9zaXRpb25hbCBhcmd1bWVudHMsIGFzIGZvbGxvd3MuICBGaXJzdCwgYSBsaXN0IG9mIHVuZmlsbGVkIHNsb3RzICcKKyAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAnY3JlYXRlZCBmb3IgdGhlIGZvcm1hbCBwYXJhbWV0ZXJzLiAgSWYgdGhlcmUgYXJlIE4gcG9zaXRpb25hbFxuJworICAgICAgICAgICdhcmd1bWVudHMsIHRoZXkgYXJlIHBsYWNlZCBpbiB0aGUgZmlyc3QgTiBzbG90cy4gIE5leHQsIGZvciBlYWNoXG4nCisgICAgICAgICAgJ2tleXdvcmQgYXJndW1lbnQsIHRoZSBpZGVudGlmaWVyIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZVxuJworICAgICAgICAgICdjb3JyZXNwb25kaW5nIHNsb3QgKGlmIHRoZSBpZGVudGlmaWVyIGlzIHRoZSBzYW1lIGFzIHRoZSBmaXJzdCAnCisgICAgICAgICAgJ2Zvcm1hbFxuJworICAgICAgICAgICdwYXJhbWV0ZXIgbmFtZSwgdGhlIGZpcnN0IHNsb3QgaXMgdXNlZCwgYW5kIHNvIG9uKS4gIElmIHRoZSBzbG90ICcKKyAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAnYWxyZWFkeSBmaWxsZWQsIGEgIlR5cGVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZC4gT3RoZXJ3aXNlLCB0aGVcbicKKyAgICAgICAgICAndmFsdWUgb2YgdGhlIGFyZ3VtZW50IGlzIHBsYWNlZCBpbiB0aGUgc2xvdCwgZmlsbGluZyBpdCAoZXZlbiBpZiAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICdleHByZXNzaW9uIGlzICJOb25lIiwgaXQgZmlsbHMgdGhlIHNsb3QpLiAgV2hlbiBhbGwgYXJndW1lbnRzIGhhdmVcbicKKyAgICAgICAgICAnYmVlbiBwcm9jZXNzZWQsIHRoZSBzbG90cyB0aGF0IGFyZSBzdGlsbCB1bmZpbGxlZCBhcmUgZmlsbGVkIHdpdGggJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnY29ycmVzcG9uZGluZyBkZWZhdWx0IHZhbHVlIGZyb20gdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24uICAnCisgICAgICAgICAgJyhEZWZhdWx0XG4nCisgICAgICAgICAgJ3ZhbHVlcyBhcmUgY2FsY3VsYXRlZCwgb25jZSwgd2hlbiB0aGUgZnVuY3Rpb24gaXMgZGVmaW5lZDsgdGh1cywgYVxuJworICAgICAgICAgICdtdXRhYmxlIG9iamVjdCBzdWNoIGFzIGEgbGlzdCBvciBkaWN0aW9uYXJ5IHVzZWQgYXMgZGVmYXVsdCB2YWx1ZSAnCisgICAgICAgICAgJ3dpbGxcbicKKyAgICAgICAgICAiYmUgc2hhcmVkIGJ5IGFsbCBjYWxscyB0aGF0IGRvbid0IHNwZWNpZnkgYW4gYXJndW1lbnQgdmFsdWUgZm9yICIKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJ2NvcnJlc3BvbmRpbmcgc2xvdDsgdGhpcyBzaG91bGQgdXN1YWxseSBiZSBhdm9pZGVkLikgIElmIHRoZXJlIGFyZSAnCisgICAgICAgICAgJ2FueVxuJworICAgICAgICAgICd1bmZpbGxlZCBzbG90cyBmb3Igd2hpY2ggbm8gZGVmYXVsdCB2YWx1ZSBpcyBzcGVjaWZpZWQsIGEgJworICAgICAgICAgICciVHlwZUVycm9yIlxuJworICAgICAgICAgICdleGNlcHRpb24gaXMgcmFpc2VkLiAgT3RoZXJ3aXNlLCB0aGUgbGlzdCBvZiBmaWxsZWQgc2xvdHMgaXMgdXNlZCAnCisgICAgICAgICAgJ2FzXG4nCisgICAgICAgICAgJ3RoZSBhcmd1bWVudCBsaXN0IGZvciB0aGUgY2FsbC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogQW4gaW1wbGVtZW50YXRpb24gbWF5IHByb3ZpZGVcbicKKyAgICAgICAgICAnYnVpbHQtaW4gZnVuY3Rpb25zIHdob3NlIHBvc2l0aW9uYWwgcGFyYW1ldGVycyBkbyBub3QgaGF2ZSBuYW1lcywgJworICAgICAgICAgICdldmVuXG4nCisgICAgICAgICAgImlmIHRoZXkgYXJlICduYW1lZCcgZm9yIHRoZSBwdXJwb3NlIG9mIGRvY3VtZW50YXRpb24sIGFuZCB3aGljaFxuIgorICAgICAgICAgICd0aGVyZWZvcmUgY2Fubm90IGJlIHN1cHBsaWVkIGJ5IGtleXdvcmQuICBJbiBDUHl0aG9uLCB0aGlzIGlzIHRoZSAnCisgICAgICAgICAgJ2Nhc2VcbicKKyAgICAgICAgICAnZm9yIGZ1bmN0aW9ucyBpbXBsZW1lbnRlZCBpbiBDIHRoYXQgdXNlICJQeUFyZ19QYXJzZVR1cGxlKCkiIHRvICcKKyAgICAgICAgICAncGFyc2VcbicKKyAgICAgICAgICAndGhlaXIgYXJndW1lbnRzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnSWYgdGhlcmUgYXJlIG1vcmUgcG9zaXRpb25hbCBhcmd1bWVudHMgdGhhbiB0aGVyZSBhcmUgZm9ybWFsICcKKyAgICAgICAgICAncGFyYW1ldGVyXG4nCisgICAgICAgICAgJ3Nsb3RzLCBhICJUeXBlRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQsIHVubGVzcyBhIGZvcm1hbCAnCisgICAgICAgICAgJ3BhcmFtZXRlclxuJworICAgICAgICAgICd1c2luZyB0aGUgc3ludGF4ICIqaWRlbnRpZmllciIgaXMgcHJlc2VudDsgaW4gdGhpcyBjYXNlLCB0aGF0ICcKKyAgICAgICAgICAnZm9ybWFsXG4nCisgICAgICAgICAgJ3BhcmFtZXRlciByZWNlaXZlcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlIGV4Y2VzcyBwb3NpdGlvbmFsICcKKyAgICAgICAgICAnYXJndW1lbnRzXG4nCisgICAgICAgICAgJyhvciBhbiBlbXB0eSB0dXBsZSBpZiB0aGVyZSB3ZXJlIG5vIGV4Y2VzcyBwb3NpdGlvbmFsIGFyZ3VtZW50cykuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdJZiBhbnkga2V5d29yZCBhcmd1bWVudCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgZm9ybWFsIHBhcmFtZXRlclxuJworICAgICAgICAgICduYW1lLCBhICJUeXBlRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQsIHVubGVzcyBhIGZvcm1hbCBwYXJhbWV0ZXJcbicKKyAgICAgICAgICAndXNpbmcgdGhlIHN5bnRheCAiKippZGVudGlmaWVyIiBpcyBwcmVzZW50OyBpbiB0aGlzIGNhc2UsIHRoYXQgJworICAgICAgICAgICdmb3JtYWxcbicKKyAgICAgICAgICAncGFyYW1ldGVyIHJlY2VpdmVzIGEgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBleGNlc3Mga2V5d29yZFxuJworICAgICAgICAgICdhcmd1bWVudHMgKHVzaW5nIHRoZSBrZXl3b3JkcyBhcyBrZXlzIGFuZCB0aGUgYXJndW1lbnQgdmFsdWVzIGFzXG4nCisgICAgICAgICAgJ2NvcnJlc3BvbmRpbmcgdmFsdWVzKSwgb3IgYSAobmV3KSBlbXB0eSBkaWN0aW9uYXJ5IGlmIHRoZXJlIHdlcmUgJworICAgICAgICAgICdub1xuJworICAgICAgICAgICdleGNlc3Mga2V5d29yZCBhcmd1bWVudHMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdJZiB0aGUgc3ludGF4ICIqZXhwcmVzc2lvbiIgYXBwZWFycyBpbiB0aGUgZnVuY3Rpb24gY2FsbCwgJworICAgICAgICAgICciZXhwcmVzc2lvbiJcbicKKyAgICAgICAgICAnbXVzdCBldmFsdWF0ZSB0byBhbiAqaXRlcmFibGUqLiAgRWxlbWVudHMgZnJvbSB0aGVzZSBpdGVyYWJsZXMgYXJlXG4nCisgICAgICAgICAgJ3RyZWF0ZWQgYXMgaWYgdGhleSB3ZXJlIGFkZGl0aW9uYWwgcG9zaXRpb25hbCBhcmd1bWVudHMuICBGb3IgdGhlICcKKyAgICAgICAgICAnY2FsbFxuJworICAgICAgICAgICciZih4MSwgeDIsICp5LCB4MywgeDQpIiwgaWYgKnkqIGV2YWx1YXRlcyB0byBhIHNlcXVlbmNlICp5MSosIC4uLixcbicKKyAgICAgICAgICAnKnlNKiwgdGhpcyBpcyBlcXVpdmFsZW50IHRvIGEgY2FsbCB3aXRoIE0rNCBwb3NpdGlvbmFsIGFyZ3VtZW50cyAnCisgICAgICAgICAgJyp4MSosXG4nCisgICAgICAgICAgJyp4MiosICp5MSosIC4uLiwgKnlNKiwgKngzKiwgKng0Ki5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0EgY29uc2VxdWVuY2Ugb2YgdGhpcyBpcyB0aGF0IGFsdGhvdWdoIHRoZSAiKmV4cHJlc3Npb24iIHN5bnRheCAnCisgICAgICAgICAgJ21heVxuJworICAgICAgICAgICdhcHBlYXIgKmFmdGVyKiBleHBsaWNpdCBrZXl3b3JkIGFyZ3VtZW50cywgaXQgaXMgcHJvY2Vzc2VkICcKKyAgICAgICAgICAnKmJlZm9yZSpcbicKKyAgICAgICAgICAndGhlIGtleXdvcmQgYXJndW1lbnRzIChhbmQgYW55ICIqKmV4cHJlc3Npb24iIGFyZ3VtZW50cyAtLSBzZWUgJworICAgICAgICAgICdiZWxvdykuXG4nCisgICAgICAgICAgJ1NvOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgPj4+IGRlZiBmKGEsIGIpOlxuJworICAgICAgICAgICcgICAuLi4gICAgIHByaW50KGEsIGIpXG4nCisgICAgICAgICAgJyAgIC4uLlxuJworICAgICAgICAgICcgICA+Pj4gZihiPTEsICooMiwpKVxuJworICAgICAgICAgICcgICAyIDFcbicKKyAgICAgICAgICAnICAgPj4+IGYoYT0xLCAqKDIsKSlcbicKKyAgICAgICAgICAnICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuJworICAgICAgICAgICcgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluID9cbicKKyAgICAgICAgICAiICAgVHlwZUVycm9yOiBmKCkgZ290IG11bHRpcGxlIHZhbHVlcyBmb3Iga2V5d29yZCBhcmd1bWVudCAnYSdcbiIKKyAgICAgICAgICAnICAgPj4+IGYoMSwgKigyLCkpXG4nCisgICAgICAgICAgJyAgIDEgMlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnSXQgaXMgdW51c3VhbCBmb3IgYm90aCBrZXl3b3JkIGFyZ3VtZW50cyBhbmQgdGhlICIqZXhwcmVzc2lvbiIgJworICAgICAgICAgICdzeW50YXhcbicKKyAgICAgICAgICAndG8gYmUgdXNlZCBpbiB0aGUgc2FtZSBjYWxsLCBzbyBpbiBwcmFjdGljZSB0aGlzIGNvbmZ1c2lvbiBkb2VzICcKKyAgICAgICAgICAnbm90XG4nCisgICAgICAgICAgJ2FyaXNlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnSWYgdGhlIHN5bnRheCAiKipleHByZXNzaW9uIiBhcHBlYXJzIGluIHRoZSBmdW5jdGlvbiBjYWxsLFxuJworICAgICAgICAgICciZXhwcmVzc2lvbiIgbXVzdCBldmFsdWF0ZSB0byBhICptYXBwaW5nKiwgdGhlIGNvbnRlbnRzIG9mIHdoaWNoICcKKyAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgJ3RyZWF0ZWQgYXMgYWRkaXRpb25hbCBrZXl3b3JkIGFyZ3VtZW50cy4gIElmIGEga2V5d29yZCBpcyBhbHJlYWR5XG4nCisgICAgICAgICAgJ3ByZXNlbnQgKGFzIGFuIGV4cGxpY2l0IGtleXdvcmQgYXJndW1lbnQsIG9yIGZyb20gYW5vdGhlciAnCisgICAgICAgICAgJ3VucGFja2luZyksXG4nCisgICAgICAgICAgJ2EgIlR5cGVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0Zvcm1hbCBwYXJhbWV0ZXJzIHVzaW5nIHRoZSBzeW50YXggIippZGVudGlmaWVyIiBvciAiKippZGVudGlmaWVyIlxuJworICAgICAgICAgICdjYW5ub3QgYmUgdXNlZCBhcyBwb3NpdGlvbmFsIGFyZ3VtZW50IHNsb3RzIG9yIGFzIGtleXdvcmQgYXJndW1lbnRcbicKKyAgICAgICAgICAnbmFtZXMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdDaGFuZ2VkIGluIHZlcnNpb24gMy41OiBGdW5jdGlvbiBjYWxscyBhY2NlcHQgYW55IG51bWJlciBvZiAiKiIgJworICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAnIioqIiB1bnBhY2tpbmdzLCBwb3NpdGlvbmFsIGFyZ3VtZW50cyBtYXkgZm9sbG93IGl0ZXJhYmxlICcKKyAgICAgICAgICAndW5wYWNraW5nc1xuJworICAgICAgICAgICcoIioiKSwgYW5kIGtleXdvcmQgYXJndW1lbnRzIG1heSBmb2xsb3cgZGljdGlvbmFyeSB1bnBhY2tpbmdzICcKKyAgICAgICAgICAnKCIqKiIpLlxuJworICAgICAgICAgICdPcmlnaW5hbGx5IHByb3Bvc2VkIGJ5ICoqUEVQIDQ0OCoqLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQSBjYWxsIGFsd2F5cyByZXR1cm5zIHNvbWUgdmFsdWUsIHBvc3NpYmx5ICJOb25lIiwgdW5sZXNzIGl0IHJhaXNlcyAnCisgICAgICAgICAgJ2FuXG4nCisgICAgICAgICAgJ2V4Y2VwdGlvbi4gIEhvdyB0aGlzIHZhbHVlIGlzIGNvbXB1dGVkIGRlcGVuZHMgb24gdGhlIHR5cGUgb2YgdGhlXG4nCisgICAgICAgICAgJ2NhbGxhYmxlIG9iamVjdC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0lmIGl0IGlzLS0tXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdhIHVzZXItZGVmaW5lZCBmdW5jdGlvbjpcbicKKyAgICAgICAgICAnICAgVGhlIGNvZGUgYmxvY2sgZm9yIHRoZSBmdW5jdGlvbiBpcyBleGVjdXRlZCwgcGFzc2luZyBpdCB0aGVcbicKKyAgICAgICAgICAnICAgYXJndW1lbnQgbGlzdC4gIFRoZSBmaXJzdCB0aGluZyB0aGUgY29kZSBibG9jayB3aWxsIGRvIGlzIGJpbmQgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgZm9ybWFsIHBhcmFtZXRlcnMgdG8gdGhlIGFyZ3VtZW50czsgdGhpcyBpcyBkZXNjcmliZWQgaW4gJworICAgICAgICAgICdzZWN0aW9uXG4nCisgICAgICAgICAgJyAgIEZ1bmN0aW9uIGRlZmluaXRpb25zLiAgV2hlbiB0aGUgY29kZSBibG9jayBleGVjdXRlcyBhICJyZXR1cm4iXG4nCisgICAgICAgICAgJyAgIHN0YXRlbWVudCwgdGhpcyBzcGVjaWZpZXMgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgZnVuY3Rpb24gJworICAgICAgICAgICdjYWxsLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnYSBidWlsdC1pbiBmdW5jdGlvbiBvciBtZXRob2Q6XG4nCisgICAgICAgICAgJyAgIFRoZSByZXN1bHQgaXMgdXAgdG8gdGhlIGludGVycHJldGVyOyBzZWUgQnVpbHQtaW4gRnVuY3Rpb25zIGZvciAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICBkZXNjcmlwdGlvbnMgb2YgYnVpbHQtaW4gZnVuY3Rpb25zIGFuZCBtZXRob2RzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnYSBjbGFzcyBvYmplY3Q6XG4nCisgICAgICAgICAgJyAgIEEgbmV3IGluc3RhbmNlIG9mIHRoYXQgY2xhc3MgaXMgcmV0dXJuZWQuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdhIGNsYXNzIGluc3RhbmNlIG1ldGhvZDpcbicKKyAgICAgICAgICAnICAgVGhlIGNvcnJlc3BvbmRpbmcgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIGlzIGNhbGxlZCwgd2l0aCBhbiAnCisgICAgICAgICAgJ2FyZ3VtZW50XG4nCisgICAgICAgICAgJyAgIGxpc3QgdGhhdCBpcyBvbmUgbG9uZ2VyIHRoYW4gdGhlIGFyZ3VtZW50IGxpc3Qgb2YgdGhlIGNhbGw6IHRoZVxuJworICAgICAgICAgICcgICBpbnN0YW5jZSBiZWNvbWVzIHRoZSBmaXJzdCBhcmd1bWVudC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ2EgY2xhc3MgaW5zdGFuY2U6XG4nCisgICAgICAgICAgJyAgIFRoZSBjbGFzcyBtdXN0IGRlZmluZSBhICJfX2NhbGxfXygpIiBtZXRob2Q7IHRoZSBlZmZlY3QgaXMgdGhlbiAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICBzYW1lIGFzIGlmIHRoYXQgbWV0aG9kIHdhcyBjYWxsZWQuXG4nLAorICdjbGFzcyc6ICdcbicKKyAgICAgICAgICAnQ2xhc3MgZGVmaW5pdGlvbnNcbicKKyAgICAgICAgICAnKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0EgY2xhc3MgZGVmaW5pdGlvbiBkZWZpbmVzIGEgY2xhc3Mgb2JqZWN0IChzZWUgc2VjdGlvbiBUaGUgJworICAgICAgICAgICdzdGFuZGFyZFxuJworICAgICAgICAgICd0eXBlIGhpZXJhcmNoeSk6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBjbGFzc2RlZiAgICA6Oj0gW2RlY29yYXRvcnNdICJjbGFzcyIgY2xhc3NuYW1lIFtpbmhlcml0YW5jZV0gIjoiICcKKyAgICAgICAgICAnc3VpdGVcbicKKyAgICAgICAgICAnICAgaW5oZXJpdGFuY2UgOjo9ICIoIiBbYXJndW1lbnRfbGlzdF0gIikiXG4nCisgICAgICAgICAgJyAgIGNsYXNzbmFtZSAgIDo6PSBpZGVudGlmaWVyXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBIGNsYXNzIGRlZmluaXRpb24gaXMgYW4gZXhlY3V0YWJsZSBzdGF0ZW1lbnQuICBUaGUgaW5oZXJpdGFuY2UgJworICAgICAgICAgICdsaXN0XG4nCisgICAgICAgICAgJ3VzdWFsbHkgZ2l2ZXMgYSBsaXN0IG9mIGJhc2UgY2xhc3NlcyAoc2VlIE1ldGFjbGFzc2VzIGZvciBtb3JlXG4nCisgICAgICAgICAgJ2FkdmFuY2VkIHVzZXMpLCBzbyBlYWNoIGl0ZW0gaW4gdGhlIGxpc3Qgc2hvdWxkIGV2YWx1YXRlIHRvIGEgJworICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICdvYmplY3Qgd2hpY2ggYWxsb3dzIHN1YmNsYXNzaW5nLiAgQ2xhc3NlcyB3aXRob3V0IGFuIGluaGVyaXRhbmNlICcKKyAgICAgICAgICAnbGlzdFxuJworICAgICAgICAgICdpbmhlcml0LCBieSBkZWZhdWx0LCBmcm9tIHRoZSBiYXNlIGNsYXNzICJvYmplY3QiOyBoZW5jZSxcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIGNsYXNzIEZvbzpcbicKKyAgICAgICAgICAnICAgICAgIHBhc3NcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ2lzIGVxdWl2YWxlbnQgdG9cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIGNsYXNzIEZvbyhvYmplY3QpOlxuJworICAgICAgICAgICcgICAgICAgcGFzc1xuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAiVGhlIGNsYXNzJ3Mgc3VpdGUgaXMgdGhlbiBleGVjdXRlZCBpbiBhIG5ldyBleGVjdXRpb24gZnJhbWUgKHNlZVxuIgorICAgICAgICAgICdOYW1pbmcgYW5kIGJpbmRpbmcpLCB1c2luZyBhIG5ld2x5IGNyZWF0ZWQgbG9jYWwgbmFtZXNwYWNlIGFuZCB0aGVcbicKKyAgICAgICAgICAnb3JpZ2luYWwgZ2xvYmFsIG5hbWVzcGFjZS4gKFVzdWFsbHksIHRoZSBzdWl0ZSBjb250YWlucyBtb3N0bHlcbicKKyAgICAgICAgICAiZnVuY3Rpb24gZGVmaW5pdGlvbnMuKSAgV2hlbiB0aGUgY2xhc3MncyBzdWl0ZSBmaW5pc2hlcyBleGVjdXRpb24sICIKKyAgICAgICAgICAnaXRzXG4nCisgICAgICAgICAgJ2V4ZWN1dGlvbiBmcmFtZSBpcyBkaXNjYXJkZWQgYnV0IGl0cyBsb2NhbCBuYW1lc3BhY2UgaXMgc2F2ZWQuIFs0XSAnCisgICAgICAgICAgJ0FcbicKKyAgICAgICAgICAnY2xhc3Mgb2JqZWN0IGlzIHRoZW4gY3JlYXRlZCB1c2luZyB0aGUgaW5oZXJpdGFuY2UgbGlzdCBmb3IgdGhlICcKKyAgICAgICAgICAnYmFzZVxuJworICAgICAgICAgICdjbGFzc2VzIGFuZCB0aGUgc2F2ZWQgbG9jYWwgbmFtZXNwYWNlIGZvciB0aGUgYXR0cmlidXRlICcKKyAgICAgICAgICAnZGljdGlvbmFyeS5cbicKKyAgICAgICAgICAnVGhlIGNsYXNzIG5hbWUgaXMgYm91bmQgdG8gdGhpcyBjbGFzcyBvYmplY3QgaW4gdGhlIG9yaWdpbmFsIGxvY2FsXG4nCisgICAgICAgICAgJ25hbWVzcGFjZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1RoZSBvcmRlciBpbiB3aGljaCBhdHRyaWJ1dGVzIGFyZSBkZWZpbmVkIGluIHRoZSBjbGFzcyBib2R5IGlzXG4nCisgICAgICAgICAgJ3ByZXNlcnZlZCBpbiB0aGUgbmV3IGNsYXNzXCdzICJfX2RpY3RfXyIuICBOb3RlIHRoYXQgdGhpcyBpcyAnCisgICAgICAgICAgJ3JlbGlhYmxlXG4nCisgICAgICAgICAgJ29ubHkgcmlnaHQgYWZ0ZXIgdGhlIGNsYXNzIGlzIGNyZWF0ZWQgYW5kIG9ubHkgZm9yIGNsYXNzZXMgdGhhdCAnCisgICAgICAgICAgJ3dlcmVcbicKKyAgICAgICAgICAnZGVmaW5lZCB1c2luZyB0aGUgZGVmaW5pdGlvbiBzeW50YXguXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdDbGFzcyBjcmVhdGlvbiBjYW4gYmUgY3VzdG9taXplZCBoZWF2aWx5IHVzaW5nIG1ldGFjbGFzc2VzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQ2xhc3NlcyBjYW4gYWxzbyBiZSBkZWNvcmF0ZWQ6IGp1c3QgbGlrZSB3aGVuIGRlY29yYXRpbmcgJworICAgICAgICAgICdmdW5jdGlvbnMsXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBAZjEoYXJnKVxuJworICAgICAgICAgICcgICBAZjJcbicKKyAgICAgICAgICAnICAgY2xhc3MgRm9vOiBwYXNzXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG9cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIGNsYXNzIEZvbzogcGFzc1xuJworICAgICAgICAgICcgICBGb28gPSBmMShhcmcpKGYyKEZvbykpXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdUaGUgZXZhbHVhdGlvbiBydWxlcyBmb3IgdGhlIGRlY29yYXRvciBleHByZXNzaW9ucyBhcmUgdGhlIHNhbWUgYXMgJworICAgICAgICAgICdmb3JcbicKKyAgICAgICAgICAnZnVuY3Rpb24gZGVjb3JhdG9ycy4gIFRoZSByZXN1bHQgaXMgdGhlbiBib3VuZCB0byB0aGUgY2xhc3MgbmFtZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgIioqUHJvZ3JhbW1lcidzIG5vdGU6KiogVmFyaWFibGVzIGRlZmluZWQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24gIgorICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAnY2xhc3MgYXR0cmlidXRlczsgdGhleSBhcmUgc2hhcmVkIGJ5IGluc3RhbmNlcy4gIEluc3RhbmNlICcKKyAgICAgICAgICAnYXR0cmlidXRlc1xuJworICAgICAgICAgICdjYW4gYmUgc2V0IGluIGEgbWV0aG9kIHdpdGggInNlbGYubmFtZSA9IHZhbHVlIi4gIEJvdGggY2xhc3MgYW5kXG4nCisgICAgICAgICAgJ2luc3RhbmNlIGF0dHJpYnV0ZXMgYXJlIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgbm90YXRpb24gJworICAgICAgICAgICciInNlbGYubmFtZSIiLFxuJworICAgICAgICAgICdhbmQgYW4gaW5zdGFuY2UgYXR0cmlidXRlIGhpZGVzIGEgY2xhc3MgYXR0cmlidXRlIHdpdGggdGhlIHNhbWUgJworICAgICAgICAgICduYW1lXG4nCisgICAgICAgICAgJ3doZW4gYWNjZXNzZWQgaW4gdGhpcyB3YXkuICBDbGFzcyBhdHRyaWJ1dGVzIGNhbiBiZSB1c2VkIGFzICcKKyAgICAgICAgICAnZGVmYXVsdHNcbicKKyAgICAgICAgICAnZm9yIGluc3RhbmNlIGF0dHJpYnV0ZXMsIGJ1dCB1c2luZyBtdXRhYmxlIHZhbHVlcyB0aGVyZSBjYW4gbGVhZCAnCisgICAgICAgICAgJ3RvXG4nCisgICAgICAgICAgJ3VuZXhwZWN0ZWQgcmVzdWx0cy4gIERlc2NyaXB0b3JzIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBpbnN0YW5jZVxuJworICAgICAgICAgICd2YXJpYWJsZXMgd2l0aCBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb24gZGV0YWlscy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1NlZSBhbHNvOiAqKlBFUCAzMTE1KiogLSBNZXRhY2xhc3NlcyBpbiBQeXRob24gMyAqKlBFUCAzMTI5KiogLVxuJworICAgICAgICAgICcgIENsYXNzIERlY29yYXRvcnNcbicsCisgJ2NvbXBhcmlzb25zJzogJ1xuJworICAgICAgICAgICAgICAgICdDb21wYXJpc29uc1xuJworICAgICAgICAgICAgICAgICcqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnVW5saWtlIEMsIGFsbCBjb21wYXJpc29uIG9wZXJhdGlvbnMgaW4gUHl0aG9uIGhhdmUgdGhlIHNhbWUgJworICAgICAgICAgICAgICAgICdwcmlvcml0eSxcbicKKyAgICAgICAgICAgICAgICAnd2hpY2ggaXMgbG93ZXIgdGhhbiB0aGF0IG9mIGFueSBhcml0aG1ldGljLCBzaGlmdGluZyBvciAnCisgICAgICAgICAgICAgICAgJ2JpdHdpc2VcbicKKyAgICAgICAgICAgICAgICAnb3BlcmF0aW9uLiAgQWxzbyB1bmxpa2UgQywgZXhwcmVzc2lvbnMgbGlrZSAiYSA8IGIgPCBjIiBoYXZlICcKKyAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgJ2ludGVycHJldGF0aW9uIHRoYXQgaXMgY29udmVudGlvbmFsIGluIG1hdGhlbWF0aWNzOlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICAgY29tcGFyaXNvbiAgICA6Oj0gb3JfZXhwciAoIGNvbXBfb3BlcmF0b3Igb3JfZXhwciApKlxuJworICAgICAgICAgICAgICAgICcgICBjb21wX29wZXJhdG9yIDo6PSAiPCIgfCAiPiIgfCAiPT0iIHwgIj49IiB8ICI8PSIgfCAiIT0iXG4nCisgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgIHwgImlzIiBbIm5vdCJdIHwgWyJub3QiXSAiaW4iXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdDb21wYXJpc29ucyB5aWVsZCBib29sZWFuIHZhbHVlczogIlRydWUiIG9yICJGYWxzZSIuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdDb21wYXJpc29ucyBjYW4gYmUgY2hhaW5lZCBhcmJpdHJhcmlseSwgZS5nLiwgInggPCB5IDw9IHoiICcKKyAgICAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAgICAnZXF1aXZhbGVudCB0byAieCA8IHkgYW5kIHkgPD0geiIsIGV4Y2VwdCB0aGF0ICJ5IiBpcyAnCisgICAgICAgICAgICAgICAgJ2V2YWx1YXRlZCBvbmx5XG4nCisgICAgICAgICAgICAgICAgJ29uY2UgKGJ1dCBpbiBib3RoIGNhc2VzICJ6IiBpcyBub3QgZXZhbHVhdGVkIGF0IGFsbCB3aGVuICJ4IDwgJworICAgICAgICAgICAgICAgICd5IiBpc1xuJworICAgICAgICAgICAgICAgICdmb3VuZCB0byBiZSBmYWxzZSkuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdGb3JtYWxseSwgaWYgKmEqLCAqYiosICpjKiwgLi4uLCAqeSosICp6KiBhcmUgZXhwcmVzc2lvbnMgYW5kICcKKyAgICAgICAgICAgICAgICAnKm9wMSosXG4nCisgICAgICAgICAgICAgICAgJypvcDIqLCAuLi4sICpvcE4qIGFyZSBjb21wYXJpc29uIG9wZXJhdG9ycywgdGhlbiAiYSBvcDEgYiBvcDIgJworICAgICAgICAgICAgICAgICdjIC4uLiB5XG4nCisgICAgICAgICAgICAgICAgJ29wTiB6IiBpcyBlcXVpdmFsZW50IHRvICJhIG9wMSBiIGFuZCBiIG9wMiBjIGFuZCAuLi4geSBvcE4gJworICAgICAgICAgICAgICAgICd6IiwgZXhjZXB0XG4nCisgICAgICAgICAgICAgICAgJ3RoYXQgZWFjaCBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCBhdCBtb3N0IG9uY2UuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdOb3RlIHRoYXQgImEgb3AxIGIgb3AyIGMiIGRvZXNuXCd0IGltcGx5IGFueSBraW5kIG9mICcKKyAgICAgICAgICAgICAgICAnY29tcGFyaXNvbiBiZXR3ZWVuXG4nCisgICAgICAgICAgICAgICAgJyphKiBhbmQgKmMqLCBzbyB0aGF0LCBlLmcuLCAieCA8IHkgPiB6IiBpcyBwZXJmZWN0bHkgbGVnYWwgJworICAgICAgICAgICAgICAgICcodGhvdWdoXG4nCisgICAgICAgICAgICAgICAgJ3BlcmhhcHMgbm90IHByZXR0eSkuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnVmFsdWUgY29tcGFyaXNvbnNcbicKKyAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1RoZSBvcGVyYXRvcnMgIjwiLCAiPiIsICI9PSIsICI+PSIsICI8PSIsIGFuZCAiIT0iIGNvbXBhcmUgJworICAgICAgICAgICAgICAgICd0aGUgdmFsdWVzXG4nCisgICAgICAgICAgICAgICAgJ29mIHR3byBvYmplY3RzLiAgVGhlIG9iamVjdHMgZG8gbm90IG5lZWQgdG8gaGF2ZSB0aGUgc2FtZSAnCisgICAgICAgICAgICAgICAgJ3R5cGUuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdDaGFwdGVyIE9iamVjdHMsIHZhbHVlcyBhbmQgdHlwZXMgc3RhdGVzIHRoYXQgb2JqZWN0cyBoYXZlIGEgJworICAgICAgICAgICAgICAgICd2YWx1ZSAoaW5cbicKKyAgICAgICAgICAgICAgICAnYWRkaXRpb24gdG8gdHlwZSBhbmQgaWRlbnRpdHkpLiAgVGhlIHZhbHVlIG9mIGFuIG9iamVjdCBpcyBhICcKKyAgICAgICAgICAgICAgICAncmF0aGVyXG4nCisgICAgICAgICAgICAgICAgJ2Fic3RyYWN0IG5vdGlvbiBpbiBQeXRob246IEZvciBleGFtcGxlLCB0aGVyZSBpcyBubyBjYW5vbmljYWwgJworICAgICAgICAgICAgICAgICdhY2Nlc3NcbicKKyAgICAgICAgICAgICAgICAibWV0aG9kIGZvciBhbiBvYmplY3QncyB2YWx1ZS4gIEFsc28sIHRoZXJlIGlzIG5vIHJlcXVpcmVtZW50ICIKKyAgICAgICAgICAgICAgICAndGhhdCB0aGVcbicKKyAgICAgICAgICAgICAgICAndmFsdWUgb2YgYW4gb2JqZWN0IHNob3VsZCBiZSBjb25zdHJ1Y3RlZCBpbiBhIHBhcnRpY3VsYXIgd2F5LCAnCisgICAgICAgICAgICAgICAgJ2UuZy5cbicKKyAgICAgICAgICAgICAgICAnY29tcHJpc2VkIG9mIGFsbCBpdHMgZGF0YSBhdHRyaWJ1dGVzLiBDb21wYXJpc29uIG9wZXJhdG9ycyAnCisgICAgICAgICAgICAgICAgJ2ltcGxlbWVudCBhXG4nCisgICAgICAgICAgICAgICAgJ3BhcnRpY3VsYXIgbm90aW9uIG9mIHdoYXQgdGhlIHZhbHVlIG9mIGFuIG9iamVjdCBpcy4gIE9uZSBjYW4gJworICAgICAgICAgICAgICAgICd0aGluayBvZlxuJworICAgICAgICAgICAgICAgICd0aGVtIGFzIGRlZmluaW5nIHRoZSB2YWx1ZSBvZiBhbiBvYmplY3QgaW5kaXJlY3RseSwgYnkgbWVhbnMgJworICAgICAgICAgICAgICAgICdvZiB0aGVpclxuJworICAgICAgICAgICAgICAgICdjb21wYXJpc29uIGltcGxlbWVudGF0aW9uLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnQmVjYXVzZSBhbGwgdHlwZXMgYXJlIChkaXJlY3Qgb3IgaW5kaXJlY3QpIHN1YnR5cGVzIG9mICcKKyAgICAgICAgICAgICAgICAnIm9iamVjdCIsIHRoZXlcbicKKyAgICAgICAgICAgICAgICAnaW5oZXJpdCB0aGUgZGVmYXVsdCBjb21wYXJpc29uIGJlaGF2aW9yIGZyb20gIm9iamVjdCIuICBUeXBlcyAnCisgICAgICAgICAgICAgICAgJ2NhblxuJworICAgICAgICAgICAgICAgICdjdXN0b21pemUgdGhlaXIgY29tcGFyaXNvbiBiZWhhdmlvciBieSBpbXBsZW1lbnRpbmcgKnJpY2ggJworICAgICAgICAgICAgICAgICdjb21wYXJpc29uXG4nCisgICAgICAgICAgICAgICAgJ21ldGhvZHMqIGxpa2UgIl9fbHRfXygpIiwgZGVzY3JpYmVkIGluIEJhc2ljIGN1c3RvbWl6YXRpb24uXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdUaGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbiAoIj09IiBhbmQgIiE9IikgJworICAgICAgICAgICAgICAgICdpcyBiYXNlZFxuJworICAgICAgICAgICAgICAgICdvbiB0aGUgaWRlbnRpdHkgb2YgdGhlIG9iamVjdHMuICBIZW5jZSwgZXF1YWxpdHkgY29tcGFyaXNvbiAnCisgICAgICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAgICAgJ2luc3RhbmNlcyB3aXRoIHRoZSBzYW1lIGlkZW50aXR5IHJlc3VsdHMgaW4gZXF1YWxpdHksIGFuZCAnCisgICAgICAgICAgICAgICAgJ2VxdWFsaXR5XG4nCisgICAgICAgICAgICAgICAgJ2NvbXBhcmlzb24gb2YgaW5zdGFuY2VzIHdpdGggZGlmZmVyZW50IGlkZW50aXRpZXMgcmVzdWx0cyBpblxuJworICAgICAgICAgICAgICAgICdpbmVxdWFsaXR5LiAgQSBtb3RpdmF0aW9uIGZvciB0aGlzIGRlZmF1bHQgYmVoYXZpb3IgaXMgdGhlICcKKyAgICAgICAgICAgICAgICAnZGVzaXJlIHRoYXRcbicKKyAgICAgICAgICAgICAgICAnYWxsIG9iamVjdHMgc2hvdWxkIGJlIHJlZmxleGl2ZSAoaS5lLiAieCBpcyB5IiBpbXBsaWVzICJ4ID09ICcKKyAgICAgICAgICAgICAgICAneSIpLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnQSBkZWZhdWx0IG9yZGVyIGNvbXBhcmlzb24gKCI8IiwgIj4iLCAiPD0iLCBhbmQgIj49IikgaXMgbm90ICcKKyAgICAgICAgICAgICAgICAncHJvdmlkZWQ7XG4nCisgICAgICAgICAgICAgICAgJ2FuIGF0dGVtcHQgcmFpc2VzICJUeXBlRXJyb3IiLiAgQSBtb3RpdmF0aW9uIGZvciB0aGlzIGRlZmF1bHQgJworICAgICAgICAgICAgICAgICdiZWhhdmlvclxuJworICAgICAgICAgICAgICAgICdpcyB0aGUgbGFjayBvZiBhIHNpbWlsYXIgaW52YXJpYW50IGFzIGZvciBlcXVhbGl0eS5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1RoZSBiZWhhdmlvciBvZiB0aGUgZGVmYXVsdCBlcXVhbGl0eSBjb21wYXJpc29uLCB0aGF0ICcKKyAgICAgICAgICAgICAgICAnaW5zdGFuY2VzIHdpdGhcbicKKyAgICAgICAgICAgICAgICAnZGlmZmVyZW50IGlkZW50aXRpZXMgYXJlIGFsd2F5cyB1bmVxdWFsLCBtYXkgYmUgaW4gY29udHJhc3QgJworICAgICAgICAgICAgICAgICd0byB3aGF0XG4nCisgICAgICAgICAgICAgICAgJ3R5cGVzIHdpbGwgbmVlZCB0aGF0IGhhdmUgYSBzZW5zaWJsZSBkZWZpbml0aW9uIG9mIG9iamVjdCAnCisgICAgICAgICAgICAgICAgJ3ZhbHVlIGFuZFxuJworICAgICAgICAgICAgICAgICd2YWx1ZS1iYXNlZCBlcXVhbGl0eS4gIFN1Y2ggdHlwZXMgd2lsbCBuZWVkIHRvIGN1c3RvbWl6ZSAnCisgICAgICAgICAgICAgICAgJ3RoZWlyXG4nCisgICAgICAgICAgICAgICAgJ2NvbXBhcmlzb24gYmVoYXZpb3IsIGFuZCBpbiBmYWN0LCBhIG51bWJlciBvZiBidWlsdC1pbiB0eXBlcyAnCisgICAgICAgICAgICAgICAgJ2hhdmUgZG9uZVxuJworICAgICAgICAgICAgICAgICd0aGF0LlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBsaXN0IGRlc2NyaWJlcyB0aGUgY29tcGFyaXNvbiBiZWhhdmlvciBvZiB0aGUgJworICAgICAgICAgICAgICAgICdtb3N0XG4nCisgICAgICAgICAgICAgICAgJ2ltcG9ydGFudCBidWlsdC1pbiB0eXBlcy5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogTnVtYmVycyBvZiBidWlsdC1pbiBudW1lcmljIHR5cGVzIChOdW1lcmljIFR5cGVzIC0tLSBpbnQsICcKKyAgICAgICAgICAgICAgICAnZmxvYXQsXG4nCisgICAgICAgICAgICAgICAgJyAgY29tcGxleCkgYW5kIG9mIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IHR5cGVzICcKKyAgICAgICAgICAgICAgICAnImZyYWN0aW9ucy5GcmFjdGlvbiIgYW5kXG4nCisgICAgICAgICAgICAgICAgJyAgImRlY2ltYWwuRGVjaW1hbCIgY2FuIGJlIGNvbXBhcmVkIHdpdGhpbiBhbmQgYWNyb3NzIHRoZWlyICcKKyAgICAgICAgICAgICAgICAndHlwZXMsXG4nCisgICAgICAgICAgICAgICAgJyAgd2l0aCB0aGUgcmVzdHJpY3Rpb24gdGhhdCBjb21wbGV4IG51bWJlcnMgZG8gbm90IHN1cHBvcnQgJworICAgICAgICAgICAgICAgICdvcmRlclxuJworICAgICAgICAgICAgICAgICcgIGNvbXBhcmlzb24uICBXaXRoaW4gdGhlIGxpbWl0cyBvZiB0aGUgdHlwZXMgaW52b2x2ZWQsIHRoZXkgJworICAgICAgICAgICAgICAgICdjb21wYXJlXG4nCisgICAgICAgICAgICAgICAgJyAgbWF0aGVtYXRpY2FsbHkgKGFsZ29yaXRobWljYWxseSkgY29ycmVjdCB3aXRob3V0IGxvc3Mgb2YgJworICAgICAgICAgICAgICAgICdwcmVjaXNpb24uXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgIFRoZSBub3QtYS1udW1iZXIgdmFsdWVzICJmbG9hdChcJ05hTlwnKSIgYW5kICcKKyAgICAgICAgICAgICAgICAnIkRlY2ltYWwoXCdOYU5cJykiIGFyZVxuJworICAgICAgICAgICAgICAgICcgIHNwZWNpYWwuICBUaGV5IGFyZSBpZGVudGljYWwgdG8gdGhlbXNlbHZlcyAoInggaXMgeCIgaXMgJworICAgICAgICAgICAgICAgICd0cnVlKSBidXRcbicKKyAgICAgICAgICAgICAgICAnICBhcmUgbm90IGVxdWFsIHRvIHRoZW1zZWx2ZXMgKCJ4ID09IHgiIGlzIGZhbHNlKS4gICcKKyAgICAgICAgICAgICAgICAnQWRkaXRpb25hbGx5LFxuJworICAgICAgICAgICAgICAgICcgIGNvbXBhcmluZyBhbnkgbnVtYmVyIHRvIGEgbm90LWEtbnVtYmVyIHZhbHVlIHdpbGwgcmV0dXJuICcKKyAgICAgICAgICAgICAgICAnIkZhbHNlIi5cbicKKyAgICAgICAgICAgICAgICAnICBGb3IgZXhhbXBsZSwgYm90aCAiMyA8IGZsb2F0KFwnTmFOXCcpIiBhbmQgImZsb2F0KFwnTmFOXCcpICcKKyAgICAgICAgICAgICAgICAnPCAzIiB3aWxsXG4nCisgICAgICAgICAgICAgICAgJyAgcmV0dXJuICJGYWxzZSIuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqIEJpbmFyeSBzZXF1ZW5jZXMgKGluc3RhbmNlcyBvZiAiYnl0ZXMiIG9yICJieXRlYXJyYXkiKSBjYW4gJworICAgICAgICAgICAgICAgICdiZVxuJworICAgICAgICAgICAgICAgICcgIGNvbXBhcmVkIHdpdGhpbiBhbmQgYWNyb3NzIHRoZWlyIHR5cGVzLiAgVGhleSBjb21wYXJlXG4nCisgICAgICAgICAgICAgICAgJyAgbGV4aWNvZ3JhcGhpY2FsbHkgdXNpbmcgdGhlIG51bWVyaWMgdmFsdWVzIG9mIHRoZWlyICcKKyAgICAgICAgICAgICAgICAnZWxlbWVudHMuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqIFN0cmluZ3MgKGluc3RhbmNlcyBvZiAic3RyIikgY29tcGFyZSBsZXhpY29ncmFwaGljYWxseSAnCisgICAgICAgICAgICAgICAgJ3VzaW5nIHRoZVxuJworICAgICAgICAgICAgICAgICcgIG51bWVyaWNhbCBVbmljb2RlIGNvZGUgcG9pbnRzICh0aGUgcmVzdWx0IG9mIHRoZSBidWlsdC1pbiAnCisgICAgICAgICAgICAgICAgJ2Z1bmN0aW9uXG4nCisgICAgICAgICAgICAgICAgJyAgIm9yZCgpIikgb2YgdGhlaXIgY2hhcmFjdGVycy4gWzNdXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgIFN0cmluZ3MgYW5kIGJpbmFyeSBzZXF1ZW5jZXMgY2Fubm90IGJlIGRpcmVjdGx5IGNvbXBhcmVkLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiBTZXF1ZW5jZXMgKGluc3RhbmNlcyBvZiAidHVwbGUiLCAibGlzdCIsIG9yICJyYW5nZSIpIGNhbiAnCisgICAgICAgICAgICAgICAgJ2JlXG4nCisgICAgICAgICAgICAgICAgJyAgY29tcGFyZWQgb25seSB3aXRoaW4gZWFjaCBvZiB0aGVpciB0eXBlcywgd2l0aCB0aGUgJworICAgICAgICAgICAgICAgICdyZXN0cmljdGlvbiB0aGF0XG4nCisgICAgICAgICAgICAgICAgJyAgcmFuZ2VzIGRvIG5vdCBzdXBwb3J0IG9yZGVyIGNvbXBhcmlzb24uICBFcXVhbGl0eSAnCisgICAgICAgICAgICAgICAgJ2NvbXBhcmlzb24gYWNyb3NzXG4nCisgICAgICAgICAgICAgICAgJyAgdGhlc2UgdHlwZXMgcmVzdWx0cyBpbiB1bmVxdWFsaXR5LCBhbmQgb3JkZXJpbmcgY29tcGFyaXNvbiAnCisgICAgICAgICAgICAgICAgJ2Fjcm9zc1xuJworICAgICAgICAgICAgICAgICcgIHRoZXNlIHR5cGVzIHJhaXNlcyAiVHlwZUVycm9yIi5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgU2VxdWVuY2VzIGNvbXBhcmUgbGV4aWNvZ3JhcGhpY2FsbHkgdXNpbmcgY29tcGFyaXNvbiBvZlxuJworICAgICAgICAgICAgICAgICcgIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMsIHdoZXJlYnkgcmVmbGV4aXZpdHkgb2YgdGhlIGVsZW1lbnRzICcKKyAgICAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAgICAnICBlbmZvcmNlZC5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgSW4gZW5mb3JjaW5nIHJlZmxleGl2aXR5IG9mIGVsZW1lbnRzLCB0aGUgY29tcGFyaXNvbiBvZiAnCisgICAgICAgICAgICAgICAgJ2NvbGxlY3Rpb25zXG4nCisgICAgICAgICAgICAgICAgJyAgYXNzdW1lcyB0aGF0IGZvciBhIGNvbGxlY3Rpb24gZWxlbWVudCAieCIsICJ4ID09IHgiIGlzICcKKyAgICAgICAgICAgICAgICAnYWx3YXlzIHRydWUuXG4nCisgICAgICAgICAgICAgICAgJyAgQmFzZWQgb24gdGhhdCBhc3N1bXB0aW9uLCBlbGVtZW50IGlkZW50aXR5IGlzIGNvbXBhcmVkICcKKyAgICAgICAgICAgICAgICAnZmlyc3QsIGFuZFxuJworICAgICAgICAgICAgICAgICcgIGVsZW1lbnQgY29tcGFyaXNvbiBpcyBwZXJmb3JtZWQgb25seSBmb3IgZGlzdGluY3QgJworICAgICAgICAgICAgICAgICdlbGVtZW50cy4gIFRoaXNcbicKKyAgICAgICAgICAgICAgICAnICBhcHByb2FjaCB5aWVsZHMgdGhlIHNhbWUgcmVzdWx0IGFzIGEgc3RyaWN0IGVsZW1lbnQgJworICAgICAgICAgICAgICAgICdjb21wYXJpc29uXG4nCisgICAgICAgICAgICAgICAgJyAgd291bGQsIGlmIHRoZSBjb21wYXJlZCBlbGVtZW50cyBhcmUgcmVmbGV4aXZlLiAgRm9yICcKKyAgICAgICAgICAgICAgICAnbm9uLXJlZmxleGl2ZVxuJworICAgICAgICAgICAgICAgICcgIGVsZW1lbnRzLCB0aGUgcmVzdWx0IGlzIGRpZmZlcmVudCB0aGFuIGZvciBzdHJpY3QgZWxlbWVudFxuJworICAgICAgICAgICAgICAgICcgIGNvbXBhcmlzb24sIGFuZCBtYXkgYmUgc3VycHJpc2luZzogIFRoZSBub24tcmVmbGV4aXZlICcKKyAgICAgICAgICAgICAgICAnbm90LWEtbnVtYmVyXG4nCisgICAgICAgICAgICAgICAgJyAgdmFsdWVzIGZvciBleGFtcGxlIHJlc3VsdCBpbiB0aGUgZm9sbG93aW5nIGNvbXBhcmlzb24gJworICAgICAgICAgICAgICAgICdiZWhhdmlvciB3aGVuXG4nCisgICAgICAgICAgICAgICAgJyAgdXNlZCBpbiBhIGxpc3Q6XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICIgICAgID4+PiBuYW4gPSBmbG9hdCgnTmFOJylcbiIKKyAgICAgICAgICAgICAgICAnICAgICA+Pj4gbmFuIGlzIG5hblxuJworICAgICAgICAgICAgICAgICcgICAgIFRydWVcbicKKyAgICAgICAgICAgICAgICAnICAgICA+Pj4gbmFuID09IG5hblxuJworICAgICAgICAgICAgICAgICcgICAgIEZhbHNlICAgICAgICAgICAgICAgICA8LS0gdGhlIGRlZmluZWQgbm9uLXJlZmxleGl2ZSAnCisgICAgICAgICAgICAgICAgJ2JlaGF2aW9yIG9mIE5hTlxuJworICAgICAgICAgICAgICAgICcgICAgID4+PiBbbmFuXSA9PSBbbmFuXVxuJworICAgICAgICAgICAgICAgICcgICAgIFRydWUgICAgICAgICAgICAgICAgICA8LS0gbGlzdCBlbmZvcmNlcyByZWZsZXhpdml0eSBhbmQgJworICAgICAgICAgICAgICAgICd0ZXN0cyBpZGVudGl0eSBmaXJzdFxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICBMZXhpY29ncmFwaGljYWwgY29tcGFyaXNvbiBiZXR3ZWVuIGJ1aWx0LWluIGNvbGxlY3Rpb25zICcKKyAgICAgICAgICAgICAgICAnd29ya3MgYXNcbicKKyAgICAgICAgICAgICAgICAnICBmb2xsb3dzOlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICAqIEZvciB0d28gY29sbGVjdGlvbnMgdG8gY29tcGFyZSBlcXVhbCwgdGhleSBtdXN0IGJlIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgJ3NhbWVcbicKKyAgICAgICAgICAgICAgICAnICAgIHR5cGUsIGhhdmUgdGhlIHNhbWUgbGVuZ3RoLCBhbmQgZWFjaCBwYWlyIG9mICcKKyAgICAgICAgICAgICAgICAnY29ycmVzcG9uZGluZ1xuJworICAgICAgICAgICAgICAgICcgICAgZWxlbWVudHMgbXVzdCBjb21wYXJlIGVxdWFsIChmb3IgZXhhbXBsZSwgIlsxLDJdID09ICcKKyAgICAgICAgICAgICAgICAnKDEsMikiIGlzXG4nCisgICAgICAgICAgICAgICAgJyAgICBmYWxzZSBiZWNhdXNlIHRoZSB0eXBlIGlzIG5vdCB0aGUgc2FtZSkuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgICogQ29sbGVjdGlvbnMgdGhhdCBzdXBwb3J0IG9yZGVyIGNvbXBhcmlzb24gYXJlIG9yZGVyZWQgdGhlICcKKyAgICAgICAgICAgICAgICAnc2FtZVxuJworICAgICAgICAgICAgICAgICcgICAgYXMgdGhlaXIgZmlyc3QgdW5lcXVhbCBlbGVtZW50cyAoZm9yIGV4YW1wbGUsICJbMSwyLHhdIDw9ICcKKyAgICAgICAgICAgICAgICAnWzEsMix5XSJcbicKKyAgICAgICAgICAgICAgICAnICAgIGhhcyB0aGUgc2FtZSB2YWx1ZSBhcyAieCA8PSB5IikuICBJZiBhIGNvcnJlc3BvbmRpbmcgJworICAgICAgICAgICAgICAgICdlbGVtZW50IGRvZXNcbicKKyAgICAgICAgICAgICAgICAnICAgIG5vdCBleGlzdCwgdGhlIHNob3J0ZXIgY29sbGVjdGlvbiBpcyBvcmRlcmVkIGZpcnN0IChmb3IgJworICAgICAgICAgICAgICAgICdleGFtcGxlLFxuJworICAgICAgICAgICAgICAgICcgICAgIlsxLDJdIDwgWzEsMiwzXSIgaXMgdHJ1ZSkuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqIE1hcHBpbmdzIChpbnN0YW5jZXMgb2YgImRpY3QiKSBjb21wYXJlIGVxdWFsIGlmIGFuZCBvbmx5IGlmICcKKyAgICAgICAgICAgICAgICAndGhleVxuJworICAgICAgICAgICAgICAgICcgIGhhdmUgZXF1YWwgKihrZXksIHZhbHVlKSogcGFpcnMuIEVxdWFsaXR5IGNvbXBhcmlzb24gb2YgdGhlICcKKyAgICAgICAgICAgICAgICAna2V5cyBhbmRcbicKKyAgICAgICAgICAgICAgICAnICBlbGVtZW50cyBlbmZvcmNlcyByZWZsZXhpdml0eS5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgT3JkZXIgY29tcGFyaXNvbnMgKCI8IiwgIj4iLCAiPD0iLCBhbmQgIj49IikgcmFpc2UgJworICAgICAgICAgICAgICAgICciVHlwZUVycm9yIi5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogU2V0cyAoaW5zdGFuY2VzIG9mICJzZXQiIG9yICJmcm96ZW5zZXQiKSBjYW4gYmUgY29tcGFyZWQgJworICAgICAgICAgICAgICAgICd3aXRoaW5cbicKKyAgICAgICAgICAgICAgICAnICBhbmQgYWNyb3NzIHRoZWlyIHR5cGVzLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICBUaGV5IGRlZmluZSBvcmRlciBjb21wYXJpc29uIG9wZXJhdG9ycyB0byBtZWFuIHN1YnNldCBhbmQgJworICAgICAgICAgICAgICAgICdzdXBlcnNldFxuJworICAgICAgICAgICAgICAgICcgIHRlc3RzLiAgVGhvc2UgcmVsYXRpb25zIGRvIG5vdCBkZWZpbmUgdG90YWwgb3JkZXJpbmdzIChmb3IgJworICAgICAgICAgICAgICAgICdleGFtcGxlLFxuJworICAgICAgICAgICAgICAgICcgIHRoZSB0d28gc2V0cyAiezEsMn0iIGFuZCAiezIsM30iIGFyZSBub3QgZXF1YWwsIG5vciBzdWJzZXRzICcKKyAgICAgICAgICAgICAgICAnb2Ygb25lXG4nCisgICAgICAgICAgICAgICAgJyAgYW5vdGhlciwgbm9yIHN1cGVyc2V0cyBvZiBvbmUgYW5vdGhlcikuICBBY2NvcmRpbmdseSwgc2V0cyAnCisgICAgICAgICAgICAgICAgJ2FyZSBub3RcbicKKyAgICAgICAgICAgICAgICAnICBhcHByb3ByaWF0ZSBhcmd1bWVudHMgZm9yIGZ1bmN0aW9ucyB3aGljaCBkZXBlbmQgb24gdG90YWwgJworICAgICAgICAgICAgICAgICdvcmRlcmluZ1xuJworICAgICAgICAgICAgICAgICcgIChmb3IgZXhhbXBsZSwgIm1pbigpIiwgIm1heCgpIiwgYW5kICJzb3J0ZWQoKSIgcHJvZHVjZSAnCisgICAgICAgICAgICAgICAgJ3VuZGVmaW5lZFxuJworICAgICAgICAgICAgICAgICcgIHJlc3VsdHMgZ2l2ZW4gYSBsaXN0IG9mIHNldHMgYXMgaW5wdXRzKS5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgQ29tcGFyaXNvbiBvZiBzZXRzIGVuZm9yY2VzIHJlZmxleGl2aXR5IG9mIGl0cyBlbGVtZW50cy5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogTW9zdCBvdGhlciBidWlsdC1pbiB0eXBlcyBoYXZlIG5vIGNvbXBhcmlzb24gbWV0aG9kcyAnCisgICAgICAgICAgICAgICAgJ2ltcGxlbWVudGVkLFxuJworICAgICAgICAgICAgICAgICcgIHNvIHRoZXkgaW5oZXJpdCB0aGUgZGVmYXVsdCBjb21wYXJpc29uIGJlaGF2aW9yLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnVXNlci1kZWZpbmVkIGNsYXNzZXMgdGhhdCBjdXN0b21pemUgdGhlaXIgY29tcGFyaXNvbiBiZWhhdmlvciAnCisgICAgICAgICAgICAgICAgJ3Nob3VsZFxuJworICAgICAgICAgICAgICAgICdmb2xsb3cgc29tZSBjb25zaXN0ZW5jeSBydWxlcywgaWYgcG9zc2libGU6XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqIEVxdWFsaXR5IGNvbXBhcmlzb24gc2hvdWxkIGJlIHJlZmxleGl2ZS4gSW4gb3RoZXIgd29yZHMsICcKKyAgICAgICAgICAgICAgICAnaWRlbnRpY2FsXG4nCisgICAgICAgICAgICAgICAgJyAgb2JqZWN0cyBzaG91bGQgY29tcGFyZSBlcXVhbDpcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgICAgInggaXMgeSIgaW1wbGllcyAieCA9PSB5IlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiBDb21wYXJpc29uIHNob3VsZCBiZSBzeW1tZXRyaWMuIEluIG90aGVyIHdvcmRzLCB0aGUgJworICAgICAgICAgICAgICAgICdmb2xsb3dpbmdcbicKKyAgICAgICAgICAgICAgICAnICBleHByZXNzaW9ucyBzaG91bGQgaGF2ZSB0aGUgc2FtZSByZXN1bHQ6XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgICAgICJ4ID09IHkiIGFuZCAieSA9PSB4IlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICAgICAieCAhPSB5IiBhbmQgInkgIT0geCJcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgICAgInggPCB5IiBhbmQgInkgPiB4IlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICAgICAieCA8PSB5IiBhbmQgInkgPj0geCJcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogQ29tcGFyaXNvbiBzaG91bGQgYmUgdHJhbnNpdGl2ZS4gVGhlIGZvbGxvd2luZyAnCisgICAgICAgICAgICAgICAgJyhub24tZXhoYXVzdGl2ZSlcbicKKyAgICAgICAgICAgICAgICAnICBleGFtcGxlcyBpbGx1c3RyYXRlIHRoYXQ6XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgICAgICJ4ID4geSBhbmQgeSA+IHoiIGltcGxpZXMgInggPiB6IlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICAgICAieCA8IHkgYW5kIHkgPD0geiIgaW1wbGllcyAieCA8IHoiXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqIEludmVyc2UgY29tcGFyaXNvbiBzaG91bGQgcmVzdWx0IGluIHRoZSBib29sZWFuIG5lZ2F0aW9uLiAnCisgICAgICAgICAgICAgICAgJ0luIG90aGVyXG4nCisgICAgICAgICAgICAgICAgJyAgd29yZHMsIHRoZSBmb2xsb3dpbmcgZXhwcmVzc2lvbnMgc2hvdWxkIGhhdmUgdGhlIHNhbWUgJworICAgICAgICAgICAgICAgICdyZXN1bHQ6XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgICAgICJ4ID09IHkiIGFuZCAibm90IHggIT0geSJcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgICAgInggPCB5IiBhbmQgIm5vdCB4ID49IHkiIChmb3IgdG90YWwgb3JkZXJpbmcpXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgICAgICJ4ID4geSIgYW5kICJub3QgeCA8PSB5IiAoZm9yIHRvdGFsIG9yZGVyaW5nKVxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICBUaGUgbGFzdCB0d28gZXhwcmVzc2lvbnMgYXBwbHkgdG8gdG90YWxseSBvcmRlcmVkICcKKyAgICAgICAgICAgICAgICAnY29sbGVjdGlvbnMgKGUuZy5cbicKKyAgICAgICAgICAgICAgICAnICB0byBzZXF1ZW5jZXMsIGJ1dCBub3QgdG8gc2V0cyBvciBtYXBwaW5ncykuIFNlZSBhbHNvIHRoZVxuJworICAgICAgICAgICAgICAgICcgICJ0b3RhbF9vcmRlcmluZygpIiBkZWNvcmF0b3IuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdQeXRob24gZG9lcyBub3QgZW5mb3JjZSB0aGVzZSBjb25zaXN0ZW5jeSBydWxlcy4gSW4gZmFjdCwgJworICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAnbm90LWEtbnVtYmVyIHZhbHVlcyBhcmUgYW4gZXhhbXBsZSBmb3Igbm90IGZvbGxvd2luZyB0aGVzZSAnCisgICAgICAgICAgICAgICAgJ3J1bGVzLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ01lbWJlcnNoaXAgdGVzdCBvcGVyYXRpb25zXG4nCisgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdUaGUgb3BlcmF0b3JzICJpbiIgYW5kICJub3QgaW4iIHRlc3QgZm9yIG1lbWJlcnNoaXAuICAieCBpbiAnCisgICAgICAgICAgICAgICAgJ3MiXG4nCisgICAgICAgICAgICAgICAgJ2V2YWx1YXRlcyB0byB0cnVlIGlmICp4KiBpcyBhIG1lbWJlciBvZiAqcyosIGFuZCBmYWxzZSAnCisgICAgICAgICAgICAgICAgJ290aGVyd2lzZS4gICJ4XG4nCisgICAgICAgICAgICAgICAgJ25vdCBpbiBzIiByZXR1cm5zIHRoZSBuZWdhdGlvbiBvZiAieCBpbiBzIi4gIEFsbCBidWlsdC1pbiAnCisgICAgICAgICAgICAgICAgJ3NlcXVlbmNlc1xuJworICAgICAgICAgICAgICAgICdhbmQgc2V0IHR5cGVzIHN1cHBvcnQgdGhpcyBhcyB3ZWxsIGFzIGRpY3Rpb25hcnksIGZvciB3aGljaCAnCisgICAgICAgICAgICAgICAgJyJpbiIgdGVzdHNcbicKKyAgICAgICAgICAgICAgICAnd2hldGhlciB0aGUgZGljdGlvbmFyeSBoYXMgYSBnaXZlbiBrZXkuIEZvciBjb250YWluZXIgdHlwZXMgJworICAgICAgICAgICAgICAgICdzdWNoIGFzXG4nCisgICAgICAgICAgICAgICAgJ2xpc3QsIHR1cGxlLCBzZXQsIGZyb3plbnNldCwgZGljdCwgb3IgY29sbGVjdGlvbnMuZGVxdWUsIHRoZVxuJworICAgICAgICAgICAgICAgICdleHByZXNzaW9uICJ4IGluIHkiIGlzIGVxdWl2YWxlbnQgdG8gImFueSh4IGlzIGUgb3IgeCA9PSBlICcKKyAgICAgICAgICAgICAgICAnZm9yIGUgaW5cbicKKyAgICAgICAgICAgICAgICAneSkiLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnRm9yIHRoZSBzdHJpbmcgYW5kIGJ5dGVzIHR5cGVzLCAieCBpbiB5IiBpcyB0cnVlIGlmIGFuZCBvbmx5ICcKKyAgICAgICAgICAgICAgICAnaWYgKngqIGlzXG4nCisgICAgICAgICAgICAgICAgJ2Egc3Vic3RyaW5nIG9mICp5Ki4gIEFuIGVxdWl2YWxlbnQgdGVzdCBpcyAieS5maW5kKHgpICE9ICcKKyAgICAgICAgICAgICAgICAnLTEiLiAgRW1wdHlcbicKKyAgICAgICAgICAgICAgICAnc3RyaW5ncyBhcmUgYWx3YXlzIGNvbnNpZGVyZWQgdG8gYmUgYSBzdWJzdHJpbmcgb2YgYW55IG90aGVyICcKKyAgICAgICAgICAgICAgICAnc3RyaW5nLFxuJworICAgICAgICAgICAgICAgICdzbyAiIiIgaW4gImFiYyIiIHdpbGwgcmV0dXJuICJUcnVlIi5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ0ZvciB1c2VyLWRlZmluZWQgY2xhc3NlcyB3aGljaCBkZWZpbmUgdGhlICJfX2NvbnRhaW5zX18oKSIgJworICAgICAgICAgICAgICAgICdtZXRob2QsICJ4XG4nCisgICAgICAgICAgICAgICAgJ2luIHkiIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgInkuX19jb250YWluc19fKHgpIiBpcyB0cnVlLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnRm9yIHVzZXItZGVmaW5lZCBjbGFzc2VzIHdoaWNoIGRvIG5vdCBkZWZpbmUgIl9fY29udGFpbnNfXygpIiAnCisgICAgICAgICAgICAgICAgJ2J1dCBkb1xuJworICAgICAgICAgICAgICAgICdkZWZpbmUgIl9faXRlcl9fKCkiLCAieCBpbiB5IiBpcyB0cnVlIGlmIHNvbWUgdmFsdWUgInoiIHdpdGggJworICAgICAgICAgICAgICAgICcieCA9PSB6IlxuJworICAgICAgICAgICAgICAgICdpcyBwcm9kdWNlZCB3aGlsZSBpdGVyYXRpbmcgb3ZlciAieSIuICBJZiBhbiBleGNlcHRpb24gaXMgJworICAgICAgICAgICAgICAgICdyYWlzZWRcbicKKyAgICAgICAgICAgICAgICAnZHVyaW5nIHRoZSBpdGVyYXRpb24sIGl0IGlzIGFzIGlmICJpbiIgcmFpc2VkIHRoYXQgJworICAgICAgICAgICAgICAgICdleGNlcHRpb24uXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdMYXN0bHksIHRoZSBvbGQtc3R5bGUgaXRlcmF0aW9uIHByb3RvY29sIGlzIHRyaWVkOiBpZiBhIGNsYXNzICcKKyAgICAgICAgICAgICAgICAnZGVmaW5lc1xuJworICAgICAgICAgICAgICAgICciX19nZXRpdGVtX18oKSIsICJ4IGluIHkiIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgdGhlcmUgaXMgYSAnCisgICAgICAgICAgICAgICAgJ25vbi1cbicKKyAgICAgICAgICAgICAgICAnbmVnYXRpdmUgaW50ZWdlciBpbmRleCAqaSogc3VjaCB0aGF0ICJ4ID09IHlbaV0iLCBhbmQgYWxsICcKKyAgICAgICAgICAgICAgICAnbG93ZXJcbicKKyAgICAgICAgICAgICAgICAnaW50ZWdlciBpbmRpY2VzIGRvIG5vdCByYWlzZSAiSW5kZXhFcnJvciIgZXhjZXB0aW9uLiAgKElmIGFueSAnCisgICAgICAgICAgICAgICAgJ290aGVyXG4nCisgICAgICAgICAgICAgICAgJ2V4Y2VwdGlvbiBpcyByYWlzZWQsIGl0IGlzIGFzIGlmICJpbiIgcmFpc2VkIHRoYXQgJworICAgICAgICAgICAgICAgICdleGNlcHRpb24pLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnVGhlIG9wZXJhdG9yICJub3QgaW4iIGlzIGRlZmluZWQgdG8gaGF2ZSB0aGUgaW52ZXJzZSB0cnVlICcKKyAgICAgICAgICAgICAgICAndmFsdWUgb2ZcbicKKyAgICAgICAgICAgICAgICAnImluIi5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdJZGVudGl0eSBjb21wYXJpc29uc1xuJworICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnVGhlIG9wZXJhdG9ycyAiaXMiIGFuZCAiaXMgbm90IiB0ZXN0IGZvciBvYmplY3QgaWRlbnRpdHk6ICJ4ICcKKyAgICAgICAgICAgICAgICAnaXMgeSIgaXNcbicKKyAgICAgICAgICAgICAgICAndHJ1ZSBpZiBhbmQgb25seSBpZiAqeCogYW5kICp5KiBhcmUgdGhlIHNhbWUgb2JqZWN0LiAgT2JqZWN0ICcKKyAgICAgICAgICAgICAgICAnaWRlbnRpdHlcbicKKyAgICAgICAgICAgICAgICAnaXMgZGV0ZXJtaW5lZCB1c2luZyB0aGUgImlkKCkiIGZ1bmN0aW9uLiAgInggaXMgbm90IHkiIHlpZWxkcyAnCisgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICdpbnZlcnNlIHRydXRoIHZhbHVlLiBbNF1cbicsCisgJ2NvbXBvdW5kJzogJ1xuJworICAgICAgICAgICAgICdDb21wb3VuZCBzdGF0ZW1lbnRzXG4nCisgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0NvbXBvdW5kIHN0YXRlbWVudHMgY29udGFpbiAoZ3JvdXBzIG9mKSBvdGhlciBzdGF0ZW1lbnRzOyB0aGV5ICcKKyAgICAgICAgICAgICAnYWZmZWN0XG4nCisgICAgICAgICAgICAgJ29yIGNvbnRyb2wgdGhlIGV4ZWN1dGlvbiBvZiB0aG9zZSBvdGhlciBzdGF0ZW1lbnRzIGluIHNvbWUgd2F5LiAgJworICAgICAgICAgICAgICdJblxuJworICAgICAgICAgICAgICdnZW5lcmFsLCBjb21wb3VuZCBzdGF0ZW1lbnRzIHNwYW4gbXVsdGlwbGUgbGluZXMsIGFsdGhvdWdoIGluICcKKyAgICAgICAgICAgICAnc2ltcGxlXG4nCisgICAgICAgICAgICAgJ2luY2FybmF0aW9ucyBhIHdob2xlIGNvbXBvdW5kIHN0YXRlbWVudCBtYXkgYmUgY29udGFpbmVkIGluIG9uZSAnCisgICAgICAgICAgICAgJ2xpbmUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgImlmIiwgIndoaWxlIiBhbmQgImZvciIgc3RhdGVtZW50cyBpbXBsZW1lbnQgdHJhZGl0aW9uYWwgJworICAgICAgICAgICAgICdjb250cm9sXG4nCisgICAgICAgICAgICAgJ2Zsb3cgY29uc3RydWN0cy4gICJ0cnkiIHNwZWNpZmllcyBleGNlcHRpb24gaGFuZGxlcnMgYW5kL29yICcKKyAgICAgICAgICAgICAnY2xlYW51cFxuJworICAgICAgICAgICAgICdjb2RlIGZvciBhIGdyb3VwIG9mIHN0YXRlbWVudHMsIHdoaWxlIHRoZSAid2l0aCIgc3RhdGVtZW50ICcKKyAgICAgICAgICAgICAnYWxsb3dzIHRoZVxuJworICAgICAgICAgICAgICdleGVjdXRpb24gb2YgaW5pdGlhbGl6YXRpb24gYW5kIGZpbmFsaXphdGlvbiBjb2RlIGFyb3VuZCBhIGJsb2NrICcKKyAgICAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAgICAnY29kZS4gIEZ1bmN0aW9uIGFuZCBjbGFzcyBkZWZpbml0aW9ucyBhcmUgYWxzbyBzeW50YWN0aWNhbGx5ICcKKyAgICAgICAgICAgICAnY29tcG91bmRcbicKKyAgICAgICAgICAgICAnc3RhdGVtZW50cy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgIkEgY29tcG91bmQgc3RhdGVtZW50IGNvbnNpc3RzIG9mIG9uZSBvciBtb3JlICdjbGF1c2VzLicgIEEgIgorICAgICAgICAgICAgICdjbGF1c2VcbicKKyAgICAgICAgICAgICAiY29uc2lzdHMgb2YgYSBoZWFkZXIgYW5kIGEgJ3N1aXRlLicgIFRoZSBjbGF1c2UgaGVhZGVycyBvZiBhXG4iCisgICAgICAgICAgICAgJ3BhcnRpY3VsYXIgY29tcG91bmQgc3RhdGVtZW50IGFyZSBhbGwgYXQgdGhlIHNhbWUgaW5kZW50YXRpb24gJworICAgICAgICAgICAgICdsZXZlbC5cbicKKyAgICAgICAgICAgICAnRWFjaCBjbGF1c2UgaGVhZGVyIGJlZ2lucyB3aXRoIGEgdW5pcXVlbHkgaWRlbnRpZnlpbmcga2V5d29yZCAnCisgICAgICAgICAgICAgJ2FuZCBlbmRzXG4nCisgICAgICAgICAgICAgJ3dpdGggYSBjb2xvbi4gIEEgc3VpdGUgaXMgYSBncm91cCBvZiBzdGF0ZW1lbnRzIGNvbnRyb2xsZWQgYnkgYVxuJworICAgICAgICAgICAgICdjbGF1c2UuICBBIHN1aXRlIGNhbiBiZSBvbmUgb3IgbW9yZSBzZW1pY29sb24tc2VwYXJhdGVkIHNpbXBsZVxuJworICAgICAgICAgICAgICdzdGF0ZW1lbnRzIG9uIHRoZSBzYW1lIGxpbmUgYXMgdGhlIGhlYWRlciwgZm9sbG93aW5nIHRoZSAnCisgICAgICAgICAgICAgImhlYWRlcidzXG4iCisgICAgICAgICAgICAgJ2NvbG9uLCBvciBpdCBjYW4gYmUgb25lIG9yIG1vcmUgaW5kZW50ZWQgc3RhdGVtZW50cyBvbiAnCisgICAgICAgICAgICAgJ3N1YnNlcXVlbnRcbicKKyAgICAgICAgICAgICAnbGluZXMuICBPbmx5IHRoZSBsYXR0ZXIgZm9ybSBvZiBhIHN1aXRlIGNhbiBjb250YWluIG5lc3RlZCAnCisgICAgICAgICAgICAgJ2NvbXBvdW5kXG4nCisgICAgICAgICAgICAgInN0YXRlbWVudHM7IHRoZSBmb2xsb3dpbmcgaXMgaWxsZWdhbCwgbW9zdGx5IGJlY2F1c2UgaXQgd291bGRuJ3QgIgorICAgICAgICAgICAgICdiZVxuJworICAgICAgICAgICAgICdjbGVhciB0byB3aGljaCAiaWYiIGNsYXVzZSBhIGZvbGxvd2luZyAiZWxzZSIgY2xhdXNlIHdvdWxkICcKKyAgICAgICAgICAgICAnYmVsb25nOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgaWYgdGVzdDE6IGlmIHRlc3QyOiBwcmludCh4KVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQWxzbyBub3RlIHRoYXQgdGhlIHNlbWljb2xvbiBiaW5kcyB0aWdodGVyIHRoYW4gdGhlIGNvbG9uIGluICcKKyAgICAgICAgICAgICAndGhpc1xuJworICAgICAgICAgICAgICdjb250ZXh0LCBzbyB0aGF0IGluIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSwgZWl0aGVyIGFsbCBvciBub25lIG9mICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyJwcmludCgpIiBjYWxscyBhcmUgZXhlY3V0ZWQ6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBpZiB4IDwgeSA8IHo6IHByaW50KHgpOyBwcmludCh5KTsgcHJpbnQoeilcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1N1bW1hcml6aW5nOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgY29tcG91bmRfc3RtdCA6Oj0gaWZfc3RtdFxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICB8IHdoaWxlX3N0bXRcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgfCBmb3Jfc3RtdFxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICB8IHRyeV9zdG10XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgIHwgd2l0aF9zdG10XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgIHwgZnVuY2RlZlxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICB8IGNsYXNzZGVmXG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgIHwgYXN5bmNfd2l0aF9zdG10XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgIHwgYXN5bmNfZm9yX3N0bXRcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgfCBhc3luY19mdW5jZGVmXG4nCisgICAgICAgICAgICAgJyAgIHN1aXRlICAgICAgICAgOjo9IHN0bXRfbGlzdCBORVdMSU5FIHwgTkVXTElORSBJTkRFTlQgJworICAgICAgICAgICAgICdzdGF0ZW1lbnQrIERFREVOVFxuJworICAgICAgICAgICAgICcgICBzdGF0ZW1lbnQgICAgIDo6PSBzdG10X2xpc3QgTkVXTElORSB8IGNvbXBvdW5kX3N0bXRcbicKKyAgICAgICAgICAgICAnICAgc3RtdF9saXN0ICAgICA6Oj0gc2ltcGxlX3N0bXQgKCI7IiBzaW1wbGVfc3RtdCkqIFsiOyJdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdOb3RlIHRoYXQgc3RhdGVtZW50cyBhbHdheXMgZW5kIGluIGEgIk5FV0xJTkUiIHBvc3NpYmx5IGZvbGxvd2VkICcKKyAgICAgICAgICAgICAnYnkgYVxuJworICAgICAgICAgICAgICciREVERU5UIi4gIEFsc28gbm90ZSB0aGF0IG9wdGlvbmFsIGNvbnRpbnVhdGlvbiBjbGF1c2VzIGFsd2F5cyAnCisgICAgICAgICAgICAgJ2JlZ2luXG4nCisgICAgICAgICAgICAgJ3dpdGggYSBrZXl3b3JkIHRoYXQgY2Fubm90IHN0YXJ0IGEgc3RhdGVtZW50LCB0aHVzIHRoZXJlIGFyZSBub1xuJworICAgICAgICAgICAgICdhbWJpZ3VpdGllcyAodGhlIFwnZGFuZ2xpbmcgImVsc2UiXCcgcHJvYmxlbSBpcyBzb2x2ZWQgaW4gUHl0aG9uICcKKyAgICAgICAgICAgICAnYnlcbicKKyAgICAgICAgICAgICAncmVxdWlyaW5nIG5lc3RlZCAiaWYiIHN0YXRlbWVudHMgdG8gYmUgaW5kZW50ZWQpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIGZvcm1hdHRpbmcgb2YgdGhlIGdyYW1tYXIgcnVsZXMgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9ucyAnCisgICAgICAgICAgICAgJ3BsYWNlc1xuJworICAgICAgICAgICAgICdlYWNoIGNsYXVzZSBvbiBhIHNlcGFyYXRlIGxpbmUgZm9yIGNsYXJpdHkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJpZiIgc3RhdGVtZW50XG4nCisgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJpZiIgc3RhdGVtZW50IGlzIHVzZWQgZm9yIGNvbmRpdGlvbmFsIGV4ZWN1dGlvbjpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGlmX3N0bXQgOjo9ICJpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGVcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgKCAiZWxpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGUgKSpcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdJdCBzZWxlY3RzIGV4YWN0bHkgb25lIG9mIHRoZSBzdWl0ZXMgYnkgZXZhbHVhdGluZyB0aGUgJworICAgICAgICAgICAgICdleHByZXNzaW9ucyBvbmVcbicKKyAgICAgICAgICAgICAnYnkgb25lIHVudGlsIG9uZSBpcyBmb3VuZCB0byBiZSB0cnVlIChzZWUgc2VjdGlvbiBCb29sZWFuICcKKyAgICAgICAgICAgICAnb3BlcmF0aW9uc1xuJworICAgICAgICAgICAgICdmb3IgdGhlIGRlZmluaXRpb24gb2YgdHJ1ZSBhbmQgZmFsc2UpOyB0aGVuIHRoYXQgc3VpdGUgaXMgJworICAgICAgICAgICAgICdleGVjdXRlZFxuJworICAgICAgICAgICAgICcoYW5kIG5vIG90aGVyIHBhcnQgb2YgdGhlICJpZiIgc3RhdGVtZW50IGlzIGV4ZWN1dGVkIG9yICcKKyAgICAgICAgICAgICAnZXZhbHVhdGVkKS5cbicKKyAgICAgICAgICAgICAnSWYgYWxsIGV4cHJlc3Npb25zIGFyZSBmYWxzZSwgdGhlIHN1aXRlIG9mIHRoZSAiZWxzZSIgY2xhdXNlLCAnCisgICAgICAgICAgICAgJ2lmXG4nCisgICAgICAgICAgICAgJ3ByZXNlbnQsIGlzIGV4ZWN1dGVkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAid2hpbGUiIHN0YXRlbWVudFxuJworICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAid2hpbGUiIHN0YXRlbWVudCBpcyB1c2VkIGZvciByZXBlYXRlZCBleGVjdXRpb24gYXMgbG9uZyBhcyAnCisgICAgICAgICAgICAgJ2FuXG4nCisgICAgICAgICAgICAgJ2V4cHJlc3Npb24gaXMgdHJ1ZTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIHdoaWxlX3N0bXQgOjo9ICJ3aGlsZSIgZXhwcmVzc2lvbiAiOiIgc3VpdGVcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGlzIHJlcGVhdGVkbHkgdGVzdHMgdGhlIGV4cHJlc3Npb24gYW5kLCBpZiBpdCBpcyB0cnVlLCAnCisgICAgICAgICAgICAgJ2V4ZWN1dGVzIHRoZVxuJworICAgICAgICAgICAgICdmaXJzdCBzdWl0ZTsgaWYgdGhlIGV4cHJlc3Npb24gaXMgZmFsc2UgKHdoaWNoIG1heSBiZSB0aGUgZmlyc3QgJworICAgICAgICAgICAgICd0aW1lXG4nCisgICAgICAgICAgICAgJ2l0IGlzIHRlc3RlZCkgdGhlIHN1aXRlIG9mIHRoZSAiZWxzZSIgY2xhdXNlLCBpZiBwcmVzZW50LCBpcyAnCisgICAgICAgICAgICAgJ2V4ZWN1dGVkXG4nCisgICAgICAgICAgICAgJ2FuZCB0aGUgbG9vcCB0ZXJtaW5hdGVzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQSAiYnJlYWsiIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgdGVybWluYXRlcyB0aGUgJworICAgICAgICAgICAgICdsb29wXG4nCisgICAgICAgICAgICAgJ3dpdGhvdXQgZXhlY3V0aW5nIHRoZSAiZWxzZSIgY2xhdXNlXCdzIHN1aXRlLiAgQSAiY29udGludWUiICcKKyAgICAgICAgICAgICAnc3RhdGVtZW50XG4nCisgICAgICAgICAgICAgJ2V4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSBza2lwcyB0aGUgcmVzdCBvZiB0aGUgc3VpdGUgYW5kIGdvZXMgJworICAgICAgICAgICAgICdiYWNrXG4nCisgICAgICAgICAgICAgJ3RvIHRlc3RpbmcgdGhlIGV4cHJlc3Npb24uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJmb3IiIHN0YXRlbWVudFxuJworICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgImZvciIgc3RhdGVtZW50IGlzIHVzZWQgdG8gaXRlcmF0ZSBvdmVyIHRoZSBlbGVtZW50cyBvZiBhICcKKyAgICAgICAgICAgICAnc2VxdWVuY2VcbicKKyAgICAgICAgICAgICAnKHN1Y2ggYXMgYSBzdHJpbmcsIHR1cGxlIG9yIGxpc3QpIG9yIG90aGVyIGl0ZXJhYmxlIG9iamVjdDpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGZvcl9zdG10IDo6PSAiZm9yIiB0YXJnZXRfbGlzdCAiaW4iIGV4cHJlc3Npb25fbGlzdCAiOiIgJworICAgICAgICAgICAgICdzdWl0ZVxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgZXhwcmVzc2lvbiBsaXN0IGlzIGV2YWx1YXRlZCBvbmNlOyBpdCBzaG91bGQgeWllbGQgYW4gJworICAgICAgICAgICAgICdpdGVyYWJsZVxuJworICAgICAgICAgICAgICdvYmplY3QuICBBbiBpdGVyYXRvciBpcyBjcmVhdGVkIGZvciB0aGUgcmVzdWx0IG9mIHRoZVxuJworICAgICAgICAgICAgICciZXhwcmVzc2lvbl9saXN0Ii4gIFRoZSBzdWl0ZSBpcyB0aGVuIGV4ZWN1dGVkIG9uY2UgZm9yIGVhY2ggJworICAgICAgICAgICAgICdpdGVtXG4nCisgICAgICAgICAgICAgJ3Byb3ZpZGVkIGJ5IHRoZSBpdGVyYXRvciwgaW4gdGhlIG9yZGVyIHJldHVybmVkIGJ5IHRoZSAnCisgICAgICAgICAgICAgJ2l0ZXJhdG9yLiAgRWFjaFxuJworICAgICAgICAgICAgICdpdGVtIGluIHR1cm4gaXMgYXNzaWduZWQgdG8gdGhlIHRhcmdldCBsaXN0IHVzaW5nIHRoZSBzdGFuZGFyZCAnCisgICAgICAgICAgICAgJ3J1bGVzXG4nCisgICAgICAgICAgICAgJ2ZvciBhc3NpZ25tZW50cyAoc2VlIEFzc2lnbm1lbnQgc3RhdGVtZW50cyksIGFuZCB0aGVuIHRoZSBzdWl0ZSAnCisgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgJ2V4ZWN1dGVkLiAgV2hlbiB0aGUgaXRlbXMgYXJlIGV4aGF1c3RlZCAod2hpY2ggaXMgaW1tZWRpYXRlbHkgJworICAgICAgICAgICAgICd3aGVuIHRoZVxuJworICAgICAgICAgICAgICdzZXF1ZW5jZSBpcyBlbXB0eSBvciBhbiBpdGVyYXRvciByYWlzZXMgYSAiU3RvcEl0ZXJhdGlvbiIgJworICAgICAgICAgICAgICdleGNlcHRpb24pLFxuJworICAgICAgICAgICAgICd0aGUgc3VpdGUgaW4gdGhlICJlbHNlIiBjbGF1c2UsIGlmIHByZXNlbnQsIGlzIGV4ZWN1dGVkLCBhbmQgdGhlICcKKyAgICAgICAgICAgICAnbG9vcFxuJworICAgICAgICAgICAgICd0ZXJtaW5hdGVzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQSAiYnJlYWsiIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgdGVybWluYXRlcyB0aGUgJworICAgICAgICAgICAgICdsb29wXG4nCisgICAgICAgICAgICAgJ3dpdGhvdXQgZXhlY3V0aW5nIHRoZSAiZWxzZSIgY2xhdXNlXCdzIHN1aXRlLiAgQSAiY29udGludWUiICcKKyAgICAgICAgICAgICAnc3RhdGVtZW50XG4nCisgICAgICAgICAgICAgJ2V4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSBza2lwcyB0aGUgcmVzdCBvZiB0aGUgc3VpdGUgYW5kICcKKyAgICAgICAgICAgICAnY29udGludWVzXG4nCisgICAgICAgICAgICAgJ3dpdGggdGhlIG5leHQgaXRlbSwgb3Igd2l0aCB0aGUgImVsc2UiIGNsYXVzZSBpZiB0aGVyZSBpcyBubyAnCisgICAgICAgICAgICAgJ25leHRcbicKKyAgICAgICAgICAgICAnaXRlbS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBmb3ItbG9vcCBtYWtlcyBhc3NpZ25tZW50cyB0byB0aGUgdmFyaWFibGVzKHMpIGluIHRoZSB0YXJnZXQgJworICAgICAgICAgICAgICdsaXN0LlxuJworICAgICAgICAgICAgICdUaGlzIG92ZXJ3cml0ZXMgYWxsIHByZXZpb3VzIGFzc2lnbm1lbnRzIHRvIHRob3NlIHZhcmlhYmxlcyAnCisgICAgICAgICAgICAgJ2luY2x1ZGluZ1xuJworICAgICAgICAgICAgICd0aG9zZSBtYWRlIGluIHRoZSBzdWl0ZSBvZiB0aGUgZm9yLWxvb3A6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBmb3IgaSBpbiByYW5nZSgxMCk6XG4nCisgICAgICAgICAgICAgJyAgICAgICBwcmludChpKVxuJworICAgICAgICAgICAgICcgICAgICAgaSA9IDUgICAgICAgICAgICAgIyB0aGlzIHdpbGwgbm90IGFmZmVjdCB0aGUgZm9yLWxvb3BcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgICAgICMgYmVjYXVzZSBpIHdpbGwgYmUgb3ZlcndyaXR0ZW4gd2l0aCAnCisgICAgICAgICAgICAgJ3RoZSBuZXh0XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgICAgICAjIGluZGV4IGluIHRoZSByYW5nZVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTmFtZXMgaW4gdGhlIHRhcmdldCBsaXN0IGFyZSBub3QgZGVsZXRlZCB3aGVuIHRoZSBsb29wIGlzICcKKyAgICAgICAgICAgICAnZmluaXNoZWQsXG4nCisgICAgICAgICAgICAgJ2J1dCBpZiB0aGUgc2VxdWVuY2UgaXMgZW1wdHksIHRoZXkgd2lsbCBub3QgaGF2ZSBiZWVuIGFzc2lnbmVkICcKKyAgICAgICAgICAgICAndG8gYXRcbicKKyAgICAgICAgICAgICAnYWxsIGJ5IHRoZSBsb29wLiAgSGludDogdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJyYW5nZSgpIiByZXR1cm5zICcKKyAgICAgICAgICAgICAnYW5cbicKKyAgICAgICAgICAgICAiaXRlcmF0b3Igb2YgaW50ZWdlcnMgc3VpdGFibGUgdG8gZW11bGF0ZSB0aGUgZWZmZWN0IG9mIFBhc2NhbCdzICIKKyAgICAgICAgICAgICAnImZvciBpXG4nCisgICAgICAgICAgICAgJzo9IGEgdG8gYiBkbyI7IGUuZy4sICJsaXN0KHJhbmdlKDMpKSIgcmV0dXJucyB0aGUgbGlzdCAiWzAsIDEsICcKKyAgICAgICAgICAgICAnMl0iLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTm90ZTogVGhlcmUgaXMgYSBzdWJ0bGV0eSB3aGVuIHRoZSBzZXF1ZW5jZSBpcyBiZWluZyBtb2RpZmllZCBieSAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcgIGxvb3AgKHRoaXMgY2FuIG9ubHkgb2NjdXIgZm9yIG11dGFibGUgc2VxdWVuY2VzLCBpLmUuIGxpc3RzKS4gICcKKyAgICAgICAgICAgICAnQW5cbicKKyAgICAgICAgICAgICAnICBpbnRlcm5hbCBjb3VudGVyIGlzIHVzZWQgdG8ga2VlcCB0cmFjayBvZiB3aGljaCBpdGVtIGlzIHVzZWQgJworICAgICAgICAgICAgICduZXh0LFxuJworICAgICAgICAgICAgICcgIGFuZCB0aGlzIGlzIGluY3JlbWVudGVkIG9uIGVhY2ggaXRlcmF0aW9uLiAgV2hlbiB0aGlzIGNvdW50ZXIgJworICAgICAgICAgICAgICdoYXNcbicKKyAgICAgICAgICAgICAnICByZWFjaGVkIHRoZSBsZW5ndGggb2YgdGhlIHNlcXVlbmNlIHRoZSBsb29wIHRlcm1pbmF0ZXMuICBUaGlzICcKKyAgICAgICAgICAgICAnbWVhbnNcbicKKyAgICAgICAgICAgICAnICB0aGF0IGlmIHRoZSBzdWl0ZSBkZWxldGVzIHRoZSBjdXJyZW50IChvciBhIHByZXZpb3VzKSBpdGVtICcKKyAgICAgICAgICAgICAnZnJvbSB0aGVcbicKKyAgICAgICAgICAgICAnICBzZXF1ZW5jZSwgdGhlIG5leHQgaXRlbSB3aWxsIGJlIHNraXBwZWQgKHNpbmNlIGl0IGdldHMgdGhlICcKKyAgICAgICAgICAgICAnaW5kZXggb2ZcbicKKyAgICAgICAgICAgICAnICB0aGUgY3VycmVudCBpdGVtIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gdHJlYXRlZCkuICBMaWtld2lzZSwgJworICAgICAgICAgICAgICdpZiB0aGVcbicKKyAgICAgICAgICAgICAnICBzdWl0ZSBpbnNlcnRzIGFuIGl0ZW0gaW4gdGhlIHNlcXVlbmNlIGJlZm9yZSB0aGUgY3VycmVudCBpdGVtLCAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcgIGN1cnJlbnQgaXRlbSB3aWxsIGJlIHRyZWF0ZWQgYWdhaW4gdGhlIG5leHQgdGltZSB0aHJvdWdoIHRoZSAnCisgICAgICAgICAgICAgJ2xvb3AuXG4nCisgICAgICAgICAgICAgJyAgVGhpcyBjYW4gbGVhZCB0byBuYXN0eSBidWdzIHRoYXQgY2FuIGJlIGF2b2lkZWQgYnkgbWFraW5nIGFcbicKKyAgICAgICAgICAgICAnICB0ZW1wb3JhcnkgY29weSB1c2luZyBhIHNsaWNlIG9mIHRoZSB3aG9sZSBzZXF1ZW5jZSwgZS5nLixcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgZm9yIHggaW4gYVs6XTpcbicKKyAgICAgICAgICAgICAnICAgICAgICAgaWYgeCA8IDA6IGEucmVtb3ZlKHgpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJ0cnkiIHN0YXRlbWVudFxuJworICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgInRyeSIgc3RhdGVtZW50IHNwZWNpZmllcyBleGNlcHRpb24gaGFuZGxlcnMgYW5kL29yIGNsZWFudXAgJworICAgICAgICAgICAgICdjb2RlXG4nCisgICAgICAgICAgICAgJ2ZvciBhIGdyb3VwIG9mIHN0YXRlbWVudHM6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICB0cnlfc3RtdCAgOjo9IHRyeTFfc3RtdCB8IHRyeTJfc3RtdFxuJworICAgICAgICAgICAgICcgICB0cnkxX3N0bXQgOjo9ICJ0cnkiICI6IiBzdWl0ZVxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICgiZXhjZXB0IiBbZXhwcmVzc2lvbiBbImFzIiBpZGVudGlmaWVyXV0gIjoiICcKKyAgICAgICAgICAgICAnc3VpdGUpK1xuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgIFsiZmluYWxseSIgIjoiIHN1aXRlXVxuJworICAgICAgICAgICAgICcgICB0cnkyX3N0bXQgOjo9ICJ0cnkiICI6IiBzdWl0ZVxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICJmaW5hbGx5IiAiOiIgc3VpdGVcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAiZXhjZXB0IiBjbGF1c2Uocykgc3BlY2lmeSBvbmUgb3IgbW9yZSBleGNlcHRpb24gaGFuZGxlcnMuICcKKyAgICAgICAgICAgICAnV2hlbiBub1xuJworICAgICAgICAgICAgICdleGNlcHRpb24gb2NjdXJzIGluIHRoZSAidHJ5IiBjbGF1c2UsIG5vIGV4Y2VwdGlvbiBoYW5kbGVyIGlzXG4nCisgICAgICAgICAgICAgJ2V4ZWN1dGVkLiBXaGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlICJ0cnkiIHN1aXRlLCBhIHNlYXJjaCAnCisgICAgICAgICAgICAgJ2ZvciBhblxuJworICAgICAgICAgICAgICdleGNlcHRpb24gaGFuZGxlciBpcyBzdGFydGVkLiAgVGhpcyBzZWFyY2ggaW5zcGVjdHMgdGhlIGV4Y2VwdCAnCisgICAgICAgICAgICAgJ2NsYXVzZXNcbicKKyAgICAgICAgICAgICAnaW4gdHVybiB1bnRpbCBvbmUgaXMgZm91bmQgdGhhdCBtYXRjaGVzIHRoZSBleGNlcHRpb24uICBBbiAnCisgICAgICAgICAgICAgJ2V4cHJlc3Npb24tXG4nCisgICAgICAgICAgICAgJ2xlc3MgZXhjZXB0IGNsYXVzZSwgaWYgcHJlc2VudCwgbXVzdCBiZSBsYXN0OyBpdCBtYXRjaGVzIGFueVxuJworICAgICAgICAgICAgICdleGNlcHRpb24uICBGb3IgYW4gZXhjZXB0IGNsYXVzZSB3aXRoIGFuIGV4cHJlc3Npb24sIHRoYXQgJworICAgICAgICAgICAgICdleHByZXNzaW9uXG4nCisgICAgICAgICAgICAgJ2lzIGV2YWx1YXRlZCwgYW5kIHRoZSBjbGF1c2UgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uIGlmIHRoZSAnCisgICAgICAgICAgICAgJ3Jlc3VsdGluZ1xuJworICAgICAgICAgICAgICdvYmplY3QgaXMgImNvbXBhdGlibGUiIHdpdGggdGhlIGV4Y2VwdGlvbi4gIEFuIG9iamVjdCBpcyAnCisgICAgICAgICAgICAgJ2NvbXBhdGlibGVcbicKKyAgICAgICAgICAgICAnd2l0aCBhbiBleGNlcHRpb24gaWYgaXQgaXMgdGhlIGNsYXNzIG9yIGEgYmFzZSBjbGFzcyBvZiB0aGUgJworICAgICAgICAgICAgICdleGNlcHRpb25cbicKKyAgICAgICAgICAgICAnb2JqZWN0IG9yIGEgdHVwbGUgY29udGFpbmluZyBhbiBpdGVtIGNvbXBhdGlibGUgd2l0aCB0aGUgJworICAgICAgICAgICAgICdleGNlcHRpb24uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdJZiBubyBleGNlcHQgY2xhdXNlIG1hdGNoZXMgdGhlIGV4Y2VwdGlvbiwgdGhlIHNlYXJjaCBmb3IgYW4gJworICAgICAgICAgICAgICdleGNlcHRpb25cbicKKyAgICAgICAgICAgICAnaGFuZGxlciBjb250aW51ZXMgaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIG9uIHRoZSBpbnZvY2F0aW9uICcKKyAgICAgICAgICAgICAnc3RhY2suXG4nCisgICAgICAgICAgICAgJ1sxXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnSWYgdGhlIGV2YWx1YXRpb24gb2YgYW4gZXhwcmVzc2lvbiBpbiB0aGUgaGVhZGVyIG9mIGFuIGV4Y2VwdCAnCisgICAgICAgICAgICAgJ2NsYXVzZVxuJworICAgICAgICAgICAgICdyYWlzZXMgYW4gZXhjZXB0aW9uLCB0aGUgb3JpZ2luYWwgc2VhcmNoIGZvciBhIGhhbmRsZXIgaXMgJworICAgICAgICAgICAgICdjYW5jZWxlZCBhbmRcbicKKyAgICAgICAgICAgICAnYSBzZWFyY2ggc3RhcnRzIGZvciB0aGUgbmV3IGV4Y2VwdGlvbiBpbiB0aGUgc3Vycm91bmRpbmcgY29kZSAnCisgICAgICAgICAgICAgJ2FuZCBvblxuJworICAgICAgICAgICAgICd0aGUgY2FsbCBzdGFjayAoaXQgaXMgdHJlYXRlZCBhcyBpZiB0aGUgZW50aXJlICJ0cnkiIHN0YXRlbWVudCAnCisgICAgICAgICAgICAgJ3JhaXNlZFxuJworICAgICAgICAgICAgICd0aGUgZXhjZXB0aW9uKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1doZW4gYSBtYXRjaGluZyBleGNlcHQgY2xhdXNlIGlzIGZvdW5kLCB0aGUgZXhjZXB0aW9uIGlzICcKKyAgICAgICAgICAgICAnYXNzaWduZWQgdG9cbicKKyAgICAgICAgICAgICAndGhlIHRhcmdldCBzcGVjaWZpZWQgYWZ0ZXIgdGhlICJhcyIga2V5d29yZCBpbiB0aGF0IGV4Y2VwdCAnCisgICAgICAgICAgICAgJ2NsYXVzZSwgaWZcbicKKyAgICAgICAgICAgICAicHJlc2VudCwgYW5kIHRoZSBleGNlcHQgY2xhdXNlJ3Mgc3VpdGUgaXMgZXhlY3V0ZWQuICBBbGwgZXhjZXB0XG4iCisgICAgICAgICAgICAgJ2NsYXVzZXMgbXVzdCBoYXZlIGFuIGV4ZWN1dGFibGUgYmxvY2suICBXaGVuIHRoZSBlbmQgb2YgdGhpcyAnCisgICAgICAgICAgICAgJ2Jsb2NrIGlzXG4nCisgICAgICAgICAgICAgJ3JlYWNoZWQsIGV4ZWN1dGlvbiBjb250aW51ZXMgbm9ybWFsbHkgYWZ0ZXIgdGhlIGVudGlyZSB0cnkgJworICAgICAgICAgICAgICdzdGF0ZW1lbnQuXG4nCisgICAgICAgICAgICAgJyhUaGlzIG1lYW5zIHRoYXQgaWYgdHdvIG5lc3RlZCBoYW5kbGVycyBleGlzdCBmb3IgdGhlIHNhbWUgJworICAgICAgICAgICAgICdleGNlcHRpb24sXG4nCisgICAgICAgICAgICAgJ2FuZCB0aGUgZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgdHJ5IGNsYXVzZSBvZiB0aGUgaW5uZXIgaGFuZGxlciwgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnb3V0ZXIgaGFuZGxlciB3aWxsIG5vdCBoYW5kbGUgdGhlIGV4Y2VwdGlvbi4pXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdXaGVuIGFuIGV4Y2VwdGlvbiBoYXMgYmVlbiBhc3NpZ25lZCB1c2luZyAiYXMgdGFyZ2V0IiwgaXQgaXMgJworICAgICAgICAgICAgICdjbGVhcmVkXG4nCisgICAgICAgICAgICAgJ2F0IHRoZSBlbmQgb2YgdGhlIGV4Y2VwdCBjbGF1c2UuICBUaGlzIGlzIGFzIGlmXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBleGNlcHQgRSBhcyBOOlxuJworICAgICAgICAgICAgICcgICAgICAgZm9vXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICd3YXMgdHJhbnNsYXRlZCB0b1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgZXhjZXB0IEUgYXMgTjpcbicKKyAgICAgICAgICAgICAnICAgICAgIHRyeTpcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICBmb29cbicKKyAgICAgICAgICAgICAnICAgICAgIGZpbmFsbHk6XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgZGVsIE5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoaXMgbWVhbnMgdGhlIGV4Y2VwdGlvbiBtdXN0IGJlIGFzc2lnbmVkIHRvIGEgZGlmZmVyZW50IG5hbWUgdG8gJworICAgICAgICAgICAgICdiZVxuJworICAgICAgICAgICAgICdhYmxlIHRvIHJlZmVyIHRvIGl0IGFmdGVyIHRoZSBleGNlcHQgY2xhdXNlLiAgRXhjZXB0aW9ucyBhcmUgJworICAgICAgICAgICAgICdjbGVhcmVkXG4nCisgICAgICAgICAgICAgJ2JlY2F1c2Ugd2l0aCB0aGUgdHJhY2ViYWNrIGF0dGFjaGVkIHRvIHRoZW0sIHRoZXkgZm9ybSBhICcKKyAgICAgICAgICAgICAncmVmZXJlbmNlXG4nCisgICAgICAgICAgICAgJ2N5Y2xlIHdpdGggdGhlIHN0YWNrIGZyYW1lLCBrZWVwaW5nIGFsbCBsb2NhbHMgaW4gdGhhdCBmcmFtZSAnCisgICAgICAgICAgICAgJ2FsaXZlXG4nCisgICAgICAgICAgICAgJ3VudGlsIHRoZSBuZXh0IGdhcmJhZ2UgY29sbGVjdGlvbiBvY2N1cnMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICJCZWZvcmUgYW4gZXhjZXB0IGNsYXVzZSdzIHN1aXRlIGlzIGV4ZWN1dGVkLCBkZXRhaWxzIGFib3V0IHRoZVxuIgorICAgICAgICAgICAgICdleGNlcHRpb24gYXJlIHN0b3JlZCBpbiB0aGUgInN5cyIgbW9kdWxlIGFuZCBjYW4gYmUgYWNjZXNzZWQgJworICAgICAgICAgICAgICd2aWFcbicKKyAgICAgICAgICAgICAnInN5cy5leGNfaW5mbygpIi4gInN5cy5leGNfaW5mbygpIiByZXR1cm5zIGEgMy10dXBsZSBjb25zaXN0aW5nICcKKyAgICAgICAgICAgICAnb2YgdGhlXG4nCisgICAgICAgICAgICAgJ2V4Y2VwdGlvbiBjbGFzcywgdGhlIGV4Y2VwdGlvbiBpbnN0YW5jZSBhbmQgYSB0cmFjZWJhY2sgb2JqZWN0ICcKKyAgICAgICAgICAgICAnKHNlZVxuJworICAgICAgICAgICAgICdzZWN0aW9uIFRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSkgaWRlbnRpZnlpbmcgdGhlIHBvaW50IGluICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJ3Byb2dyYW0gd2hlcmUgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZC4gICJzeXMuZXhjX2luZm8oKSIgdmFsdWVzICcKKyAgICAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgICAgJ3Jlc3RvcmVkIHRvIHRoZWlyIHByZXZpb3VzIHZhbHVlcyAoYmVmb3JlIHRoZSBjYWxsKSB3aGVuICcKKyAgICAgICAgICAgICAncmV0dXJuaW5nXG4nCisgICAgICAgICAgICAgJ2Zyb20gYSBmdW5jdGlvbiB0aGF0IGhhbmRsZWQgYW4gZXhjZXB0aW9uLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIG9wdGlvbmFsICJlbHNlIiBjbGF1c2UgaXMgZXhlY3V0ZWQgaWYgYW5kIHdoZW4gY29udHJvbCBmbG93cyAnCisgICAgICAgICAgICAgJ29mZlxuJworICAgICAgICAgICAgICd0aGUgZW5kIG9mIHRoZSAidHJ5IiBjbGF1c2UuIFsyXSBFeGNlcHRpb25zIGluIHRoZSAiZWxzZSIgY2xhdXNlICcKKyAgICAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgICAgJ25vdCBoYW5kbGVkIGJ5IHRoZSBwcmVjZWRpbmcgImV4Y2VwdCIgY2xhdXNlcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0lmICJmaW5hbGx5IiBpcyBwcmVzZW50LCBpdCBzcGVjaWZpZXMgYSBcJ2NsZWFudXBcJyBoYW5kbGVyLiAgJworICAgICAgICAgICAgICdUaGUgInRyeSJcbicKKyAgICAgICAgICAgICAnY2xhdXNlIGlzIGV4ZWN1dGVkLCBpbmNsdWRpbmcgYW55ICJleGNlcHQiIGFuZCAiZWxzZSIgY2xhdXNlcy4gICcKKyAgICAgICAgICAgICAnSWYgYW5cbicKKyAgICAgICAgICAgICAnZXhjZXB0aW9uIG9jY3VycyBpbiBhbnkgb2YgdGhlIGNsYXVzZXMgYW5kIGlzIG5vdCBoYW5kbGVkLCB0aGVcbicKKyAgICAgICAgICAgICAnZXhjZXB0aW9uIGlzIHRlbXBvcmFyaWx5IHNhdmVkLiBUaGUgImZpbmFsbHkiIGNsYXVzZSBpcyAnCisgICAgICAgICAgICAgJ2V4ZWN1dGVkLiAgSWZcbicKKyAgICAgICAgICAgICAndGhlcmUgaXMgYSBzYXZlZCBleGNlcHRpb24gaXQgaXMgcmUtcmFpc2VkIGF0IHRoZSBlbmQgb2YgdGhlICcKKyAgICAgICAgICAgICAnImZpbmFsbHkiXG4nCisgICAgICAgICAgICAgJ2NsYXVzZS4gIElmIHRoZSAiZmluYWxseSIgY2xhdXNlIHJhaXNlcyBhbm90aGVyIGV4Y2VwdGlvbiwgdGhlICcKKyAgICAgICAgICAgICAnc2F2ZWRcbicKKyAgICAgICAgICAgICAnZXhjZXB0aW9uIGlzIHNldCBhcyB0aGUgY29udGV4dCBvZiB0aGUgbmV3IGV4Y2VwdGlvbi4gSWYgdGhlICcKKyAgICAgICAgICAgICAnImZpbmFsbHkiXG4nCisgICAgICAgICAgICAgJ2NsYXVzZSBleGVjdXRlcyBhICJyZXR1cm4iIG9yICJicmVhayIgc3RhdGVtZW50LCB0aGUgc2F2ZWQgJworICAgICAgICAgICAgICdleGNlcHRpb25cbicKKyAgICAgICAgICAgICAnaXMgZGlzY2FyZGVkOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgPj4+IGRlZiBmKCk6XG4nCisgICAgICAgICAgICAgJyAgIC4uLiAgICAgdHJ5OlxuJworICAgICAgICAgICAgICcgICAuLi4gICAgICAgICAxLzBcbicKKyAgICAgICAgICAgICAnICAgLi4uICAgICBmaW5hbGx5OlxuJworICAgICAgICAgICAgICcgICAuLi4gICAgICAgICByZXR1cm4gNDJcbicKKyAgICAgICAgICAgICAnICAgLi4uXG4nCisgICAgICAgICAgICAgJyAgID4+PiBmKClcbicKKyAgICAgICAgICAgICAnICAgNDJcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBleGNlcHRpb24gaW5mb3JtYXRpb24gaXMgbm90IGF2YWlsYWJsZSB0byB0aGUgcHJvZ3JhbSAnCisgICAgICAgICAgICAgJ2R1cmluZ1xuJworICAgICAgICAgICAgICdleGVjdXRpb24gb2YgdGhlICJmaW5hbGx5IiBjbGF1c2UuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdXaGVuIGEgInJldHVybiIsICJicmVhayIgb3IgImNvbnRpbnVlIiBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQgaW4gJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnInRyeSIgc3VpdGUgb2YgYSAidHJ5Ii4uLiJmaW5hbGx5IiBzdGF0ZW1lbnQsIHRoZSAiZmluYWxseSIgJworICAgICAgICAgICAgICdjbGF1c2UgaXNcbicKKyAgICAgICAgICAgICAnYWxzbyBleGVjdXRlZCBcJ29uIHRoZSB3YXkgb3V0LlwnIEEgImNvbnRpbnVlIiBzdGF0ZW1lbnQgaXMgJworICAgICAgICAgICAgICdpbGxlZ2FsIGluXG4nCisgICAgICAgICAgICAgJ3RoZSAiZmluYWxseSIgY2xhdXNlLiAoVGhlIHJlYXNvbiBpcyBhIHByb2JsZW0gd2l0aCB0aGUgY3VycmVudFxuJworICAgICAgICAgICAgICdpbXBsZW1lbnRhdGlvbiAtLS0gdGhpcyByZXN0cmljdGlvbiBtYXkgYmUgbGlmdGVkIGluIHRoZSAnCisgICAgICAgICAgICAgJ2Z1dHVyZSkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgcmV0dXJuIHZhbHVlIG9mIGEgZnVuY3Rpb24gaXMgZGV0ZXJtaW5lZCBieSB0aGUgbGFzdCAnCisgICAgICAgICAgICAgJyJyZXR1cm4iXG4nCisgICAgICAgICAgICAgJ3N0YXRlbWVudCBleGVjdXRlZC4gIFNpbmNlIHRoZSAiZmluYWxseSIgY2xhdXNlIGFsd2F5cyBleGVjdXRlcywgJworICAgICAgICAgICAgICdhXG4nCisgICAgICAgICAgICAgJyJyZXR1cm4iIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgImZpbmFsbHkiIGNsYXVzZSB3aWxsIGFsd2F5cyAnCisgICAgICAgICAgICAgJ2JlIHRoZVxuJworICAgICAgICAgICAgICdsYXN0IG9uZSBleGVjdXRlZDpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgID4+PiBkZWYgZm9vKCk6XG4nCisgICAgICAgICAgICAgJyAgIC4uLiAgICAgdHJ5OlxuJworICAgICAgICAgICAgICIgICAuLi4gICAgICAgICByZXR1cm4gJ3RyeSdcbiIKKyAgICAgICAgICAgICAnICAgLi4uICAgICBmaW5hbGx5OlxuJworICAgICAgICAgICAgICIgICAuLi4gICAgICAgICByZXR1cm4gJ2ZpbmFsbHknXG4iCisgICAgICAgICAgICAgJyAgIC4uLlxuJworICAgICAgICAgICAgICcgICA+Pj4gZm9vKClcbicKKyAgICAgICAgICAgICAiICAgJ2ZpbmFsbHknXG4iCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIGV4Y2VwdGlvbnMgY2FuIGJlIGZvdW5kIGluIHNlY3Rpb25cbicKKyAgICAgICAgICAgICAnRXhjZXB0aW9ucywgYW5kIGluZm9ybWF0aW9uIG9uIHVzaW5nIHRoZSAicmFpc2UiIHN0YXRlbWVudCB0byAnCisgICAgICAgICAgICAgJ2dlbmVyYXRlXG4nCisgICAgICAgICAgICAgJ2V4Y2VwdGlvbnMgbWF5IGJlIGZvdW5kIGluIHNlY3Rpb24gVGhlIHJhaXNlIHN0YXRlbWVudC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgIndpdGgiIHN0YXRlbWVudFxuJworICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJ3aXRoIiBzdGF0ZW1lbnQgaXMgdXNlZCB0byB3cmFwIHRoZSBleGVjdXRpb24gb2YgYSBibG9jayAnCisgICAgICAgICAgICAgJ3dpdGhcbicKKyAgICAgICAgICAgICAnbWV0aG9kcyBkZWZpbmVkIGJ5IGEgY29udGV4dCBtYW5hZ2VyIChzZWUgc2VjdGlvbiBXaXRoICcKKyAgICAgICAgICAgICAnU3RhdGVtZW50XG4nCisgICAgICAgICAgICAgJ0NvbnRleHQgTWFuYWdlcnMpLiBUaGlzIGFsbG93cyBjb21tb24gJworICAgICAgICAgICAgICcidHJ5Ii4uLiJleGNlcHQiLi4uImZpbmFsbHkiXG4nCisgICAgICAgICAgICAgJ3VzYWdlIHBhdHRlcm5zIHRvIGJlIGVuY2Fwc3VsYXRlZCBmb3IgY29udmVuaWVudCByZXVzZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIHdpdGhfc3RtdCA6Oj0gIndpdGgiIHdpdGhfaXRlbSAoIiwiIHdpdGhfaXRlbSkqICI6IiBzdWl0ZVxuJworICAgICAgICAgICAgICcgICB3aXRoX2l0ZW0gOjo9IGV4cHJlc3Npb24gWyJhcyIgdGFyZ2V0XVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIGV4ZWN1dGlvbiBvZiB0aGUgIndpdGgiIHN0YXRlbWVudCB3aXRoIG9uZSAiaXRlbSIgcHJvY2VlZHMgJworICAgICAgICAgICAgICdhc1xuJworICAgICAgICAgICAgICdmb2xsb3dzOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnMS4gVGhlIGNvbnRleHQgZXhwcmVzc2lvbiAodGhlIGV4cHJlc3Npb24gZ2l2ZW4gaW4gdGhlICcKKyAgICAgICAgICAgICAnIndpdGhfaXRlbSIpXG4nCisgICAgICAgICAgICAgJyAgIGlzIGV2YWx1YXRlZCB0byBvYnRhaW4gYSBjb250ZXh0IG1hbmFnZXIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcyLiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzICJfX2V4aXRfXygpIiBpcyBsb2FkZWQgZm9yIGxhdGVyIHVzZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzMuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgIl9fZW50ZXJfXygpIiBtZXRob2QgaXMgaW52b2tlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzQuIElmIGEgdGFyZ2V0IHdhcyBpbmNsdWRlZCBpbiB0aGUgIndpdGgiIHN0YXRlbWVudCwgdGhlIHJldHVyblxuJworICAgICAgICAgICAgICcgICB2YWx1ZSBmcm9tICJfX2VudGVyX18oKSIgaXMgYXNzaWduZWQgdG8gaXQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBOb3RlOiBUaGUgIndpdGgiIHN0YXRlbWVudCBndWFyYW50ZWVzIHRoYXQgaWYgdGhlICcKKyAgICAgICAgICAgICAnIl9fZW50ZXJfXygpIlxuJworICAgICAgICAgICAgICcgICAgIG1ldGhvZCByZXR1cm5zIHdpdGhvdXQgYW4gZXJyb3IsIHRoZW4gIl9fZXhpdF9fKCkiIHdpbGwgJworICAgICAgICAgICAgICdhbHdheXMgYmVcbicKKyAgICAgICAgICAgICAnICAgICBjYWxsZWQuIFRodXMsIGlmIGFuIGVycm9yIG9jY3VycyBkdXJpbmcgdGhlIGFzc2lnbm1lbnQgdG8gJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnICAgICB0YXJnZXQgbGlzdCwgaXQgd2lsbCBiZSB0cmVhdGVkIHRoZSBzYW1lIGFzIGFuIGVycm9yICcKKyAgICAgICAgICAgICAnb2NjdXJyaW5nXG4nCisgICAgICAgICAgICAgJyAgICAgd2l0aGluIHRoZSBzdWl0ZSB3b3VsZCBiZS4gU2VlIHN0ZXAgNiBiZWxvdy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzUuIFRoZSBzdWl0ZSBpcyBleGVjdXRlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzYuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgIl9fZXhpdF9fKCkiIG1ldGhvZCBpcyBpbnZva2VkLiAgSWYgJworICAgICAgICAgICAgICdhblxuJworICAgICAgICAgICAgICcgICBleGNlcHRpb24gY2F1c2VkIHRoZSBzdWl0ZSB0byBiZSBleGl0ZWQsIGl0cyB0eXBlLCB2YWx1ZSwgJworICAgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgICAnICAgdHJhY2ViYWNrIGFyZSBwYXNzZWQgYXMgYXJndW1lbnRzIHRvICJfX2V4aXRfXygpIi4gT3RoZXJ3aXNlLCAnCisgICAgICAgICAgICAgJ3RocmVlXG4nCisgICAgICAgICAgICAgJyAgICJOb25lIiBhcmd1bWVudHMgYXJlIHN1cHBsaWVkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgSWYgdGhlIHN1aXRlIHdhcyBleGl0ZWQgZHVlIHRvIGFuIGV4Y2VwdGlvbiwgYW5kIHRoZSByZXR1cm4gJworICAgICAgICAgICAgICd2YWx1ZVxuJworICAgICAgICAgICAgICcgICBmcm9tIHRoZSAiX19leGl0X18oKSIgbWV0aG9kIHdhcyBmYWxzZSwgdGhlIGV4Y2VwdGlvbiBpcyAnCisgICAgICAgICAgICAgJ3JlcmFpc2VkLlxuJworICAgICAgICAgICAgICcgICBJZiB0aGUgcmV0dXJuIHZhbHVlIHdhcyB0cnVlLCB0aGUgZXhjZXB0aW9uIGlzIHN1cHByZXNzZWQsICcKKyAgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAgJyAgIGV4ZWN1dGlvbiBjb250aW51ZXMgd2l0aCB0aGUgc3RhdGVtZW50IGZvbGxvd2luZyB0aGUgIndpdGgiXG4nCisgICAgICAgICAgICAgJyAgIHN0YXRlbWVudC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIElmIHRoZSBzdWl0ZSB3YXMgZXhpdGVkIGZvciBhbnkgcmVhc29uIG90aGVyIHRoYW4gYW4gJworICAgICAgICAgICAgICdleGNlcHRpb24sIHRoZVxuJworICAgICAgICAgICAgICcgICByZXR1cm4gdmFsdWUgZnJvbSAiX19leGl0X18oKSIgaXMgaWdub3JlZCwgYW5kIGV4ZWN1dGlvbiAnCisgICAgICAgICAgICAgJ3Byb2NlZWRzXG4nCisgICAgICAgICAgICAgJyAgIGF0IHRoZSBub3JtYWwgbG9jYXRpb24gZm9yIHRoZSBraW5kIG9mIGV4aXQgdGhhdCB3YXMgdGFrZW4uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdXaXRoIG1vcmUgdGhhbiBvbmUgaXRlbSwgdGhlIGNvbnRleHQgbWFuYWdlcnMgYXJlIHByb2Nlc3NlZCBhcyAnCisgICAgICAgICAgICAgJ2lmXG4nCisgICAgICAgICAgICAgJ211bHRpcGxlICJ3aXRoIiBzdGF0ZW1lbnRzIHdlcmUgbmVzdGVkOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgd2l0aCBBKCkgYXMgYSwgQigpIGFzIGI6XG4nCisgICAgICAgICAgICAgJyAgICAgICBzdWl0ZVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnaXMgZXF1aXZhbGVudCB0b1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgd2l0aCBBKCkgYXMgYTpcbicKKyAgICAgICAgICAgICAnICAgICAgIHdpdGggQigpIGFzIGI6XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgc3VpdGVcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0NoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IFN1cHBvcnQgZm9yIG11bHRpcGxlIGNvbnRleHQgJworICAgICAgICAgICAgICdleHByZXNzaW9ucy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1NlZSBhbHNvOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAqKlBFUCAzNDMqKiAtIFRoZSAid2l0aCIgc3RhdGVtZW50XG4nCisgICAgICAgICAgICAgJyAgICAgVGhlIHNwZWNpZmljYXRpb24sIGJhY2tncm91bmQsIGFuZCBleGFtcGxlcyBmb3IgdGhlIFB5dGhvbiAnCisgICAgICAgICAgICAgJyJ3aXRoIlxuJworICAgICAgICAgICAgICcgICAgIHN0YXRlbWVudC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdGdW5jdGlvbiBkZWZpbml0aW9uc1xuJworICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQSBmdW5jdGlvbiBkZWZpbml0aW9uIGRlZmluZXMgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24gb2JqZWN0ICcKKyAgICAgICAgICAgICAnKHNlZVxuJworICAgICAgICAgICAgICdzZWN0aW9uIFRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSk6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBmdW5jZGVmICAgICAgICAgICAgICAgICA6Oj0gW2RlY29yYXRvcnNdICJkZWYiIGZ1bmNuYW1lICIoIiAnCisgICAgICAgICAgICAgJ1twYXJhbWV0ZXJfbGlzdF0gIikiIFsiLT4iIGV4cHJlc3Npb25dICI6IiBzdWl0ZVxuJworICAgICAgICAgICAgICcgICBkZWNvcmF0b3JzICAgICAgICAgICAgICA6Oj0gZGVjb3JhdG9yK1xuJworICAgICAgICAgICAgICcgICBkZWNvcmF0b3IgICAgICAgICAgICAgICA6Oj0gIkAiIGRvdHRlZF9uYW1lIFsiKCIgJworICAgICAgICAgICAgICdbYXJndW1lbnRfbGlzdCBbIiwiXV0gIikiXSBORVdMSU5FXG4nCisgICAgICAgICAgICAgJyAgIGRvdHRlZF9uYW1lICAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyICgiLiIgaWRlbnRpZmllcikqXG4nCisgICAgICAgICAgICAgJyAgIHBhcmFtZXRlcl9saXN0ICAgICAgICAgIDo6PSBkZWZwYXJhbWV0ZXIgKCIsIiBkZWZwYXJhbWV0ZXIpKiAnCisgICAgICAgICAgICAgJ1siLCIgW3BhcmFtZXRlcl9saXN0X3N0YXJhcmdzXV1cbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgIHwgcGFyYW1ldGVyX2xpc3Rfc3RhcmFyZ3NcbicKKyAgICAgICAgICAgICAnICAgcGFyYW1ldGVyX2xpc3Rfc3RhcmFyZ3MgOjo9ICIqIiBbcGFyYW1ldGVyXSAoIiwiICcKKyAgICAgICAgICAgICAnZGVmcGFyYW1ldGVyKSogWyIsIiBbIioqIiBwYXJhbWV0ZXIgWyIsIl1dXVxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAiKioiIHBhcmFtZXRlciBbIiwiXVxuJworICAgICAgICAgICAgICcgICBwYXJhbWV0ZXIgICAgICAgICAgICAgICA6Oj0gaWRlbnRpZmllciBbIjoiIGV4cHJlc3Npb25dXG4nCisgICAgICAgICAgICAgJyAgIGRlZnBhcmFtZXRlciAgICAgICAgICAgIDo6PSBwYXJhbWV0ZXIgWyI9IiBleHByZXNzaW9uXVxuJworICAgICAgICAgICAgICcgICBmdW5jbmFtZSAgICAgICAgICAgICAgICA6Oj0gaWRlbnRpZmllclxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50LiAgSXRzIGV4ZWN1dGlvbiAnCisgICAgICAgICAgICAgJ2JpbmRzXG4nCisgICAgICAgICAgICAgJ3RoZSBmdW5jdGlvbiBuYW1lIGluIHRoZSBjdXJyZW50IGxvY2FsIG5hbWVzcGFjZSB0byBhIGZ1bmN0aW9uICcKKyAgICAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgICAgJyhhIHdyYXBwZXIgYXJvdW5kIHRoZSBleGVjdXRhYmxlIGNvZGUgZm9yIHRoZSBmdW5jdGlvbikuICBUaGlzXG4nCisgICAgICAgICAgICAgJ2Z1bmN0aW9uIG9iamVjdCBjb250YWlucyBhIHJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBnbG9iYWwgJworICAgICAgICAgICAgICduYW1lc3BhY2VcbicKKyAgICAgICAgICAgICAnYXMgdGhlIGdsb2JhbCBuYW1lc3BhY2UgdG8gYmUgdXNlZCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBkb2VzIG5vdCBleGVjdXRlIHRoZSBmdW5jdGlvbiBib2R5OyB0aGlzICcKKyAgICAgICAgICAgICAnZ2V0c1xuJworICAgICAgICAgICAgICdleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZC4gWzNdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBIGZ1bmN0aW9uIGRlZmluaXRpb24gbWF5IGJlIHdyYXBwZWQgYnkgb25lIG9yIG1vcmUgKmRlY29yYXRvcipcbicKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbnMuIERlY29yYXRvciBleHByZXNzaW9ucyBhcmUgZXZhbHVhdGVkIHdoZW4gdGhlICcKKyAgICAgICAgICAgICAnZnVuY3Rpb24gaXNcbicKKyAgICAgICAgICAgICAnZGVmaW5lZCwgaW4gdGhlIHNjb3BlIHRoYXQgY29udGFpbnMgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24uICAnCisgICAgICAgICAgICAgJ1RoZVxuJworICAgICAgICAgICAgICdyZXN1bHQgbXVzdCBiZSBhIGNhbGxhYmxlLCB3aGljaCBpcyBpbnZva2VkIHdpdGggdGhlIGZ1bmN0aW9uICcKKyAgICAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgICAgJ2FzIHRoZSBvbmx5IGFyZ3VtZW50LiBUaGUgcmV0dXJuZWQgdmFsdWUgaXMgYm91bmQgdG8gdGhlICcKKyAgICAgICAgICAgICAnZnVuY3Rpb24gbmFtZVxuJworICAgICAgICAgICAgICdpbnN0ZWFkIG9mIHRoZSBmdW5jdGlvbiBvYmplY3QuICBNdWx0aXBsZSBkZWNvcmF0b3JzIGFyZSBhcHBsaWVkICcKKyAgICAgICAgICAgICAnaW5cbicKKyAgICAgICAgICAgICAnbmVzdGVkIGZhc2hpb24uIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvZGVcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEBmMShhcmcpXG4nCisgICAgICAgICAgICAgJyAgIEBmMlxuJworICAgICAgICAgICAgICcgICBkZWYgZnVuYygpOiBwYXNzXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG9cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGRlZiBmdW5jKCk6IHBhc3NcbicKKyAgICAgICAgICAgICAnICAgZnVuYyA9IGYxKGFyZykoZjIoZnVuYykpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdleGNlcHQgdGhhdCB0aGUgb3JpZ2luYWwgZnVuY3Rpb24gaXMgbm90IHRlbXBvcmFyaWx5IGJvdW5kIHRvICcKKyAgICAgICAgICAgICAndGhlIG5hbWVcbicKKyAgICAgICAgICAgICAnImZ1bmMiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnV2hlbiBvbmUgb3IgbW9yZSAqcGFyYW1ldGVycyogaGF2ZSB0aGUgZm9ybSAqcGFyYW1ldGVyKiAiPSJcbicKKyAgICAgICAgICAgICAnKmV4cHJlc3Npb24qLCB0aGUgZnVuY3Rpb24gaXMgc2FpZCB0byBoYXZlICJkZWZhdWx0IHBhcmFtZXRlciAnCisgICAgICAgICAgICAgJ3ZhbHVlcy4iXG4nCisgICAgICAgICAgICAgJ0ZvciBhIHBhcmFtZXRlciB3aXRoIGEgZGVmYXVsdCB2YWx1ZSwgdGhlIGNvcnJlc3BvbmRpbmcgJworICAgICAgICAgICAgICcqYXJndW1lbnQqIG1heVxuJworICAgICAgICAgICAgICJiZSBvbWl0dGVkIGZyb20gYSBjYWxsLCBpbiB3aGljaCBjYXNlIHRoZSBwYXJhbWV0ZXIncyBkZWZhdWx0ICIKKyAgICAgICAgICAgICAndmFsdWUgaXNcbicKKyAgICAgICAgICAgICAnc3Vic3RpdHV0ZWQuICBJZiBhIHBhcmFtZXRlciBoYXMgYSBkZWZhdWx0IHZhbHVlLCBhbGwgZm9sbG93aW5nXG4nCisgICAgICAgICAgICAgJ3BhcmFtZXRlcnMgdXAgdW50aWwgdGhlICIiKiIiIG11c3QgYWxzbyBoYXZlIGEgZGVmYXVsdCB2YWx1ZSAtLS0gJworICAgICAgICAgICAgICd0aGlzXG4nCisgICAgICAgICAgICAgJ2lzIGEgc3ludGFjdGljIHJlc3RyaWN0aW9uIHRoYXQgaXMgbm90IGV4cHJlc3NlZCBieSB0aGUgJworICAgICAgICAgICAgICdncmFtbWFyLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnKipEZWZhdWx0IHBhcmFtZXRlciB2YWx1ZXMgYXJlIGV2YWx1YXRlZCBmcm9tIGxlZnQgdG8gcmlnaHQgd2hlbiAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICdmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLioqIFRoaXMgbWVhbnMgdGhhdCB0aGUgJworICAgICAgICAgICAgICdleHByZXNzaW9uIGlzXG4nCisgICAgICAgICAgICAgJ2V2YWx1YXRlZCBvbmNlLCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBkZWZpbmVkLCBhbmQgdGhhdCB0aGUgc2FtZSAnCisgICAgICAgICAgICAgJyJwcmUtXG4nCisgICAgICAgICAgICAgJ2NvbXB1dGVkIiB2YWx1ZSBpcyB1c2VkIGZvciBlYWNoIGNhbGwuICBUaGlzIGlzIGVzcGVjaWFsbHkgJworICAgICAgICAgICAgICdpbXBvcnRhbnRcbicKKyAgICAgICAgICAgICAndG8gdW5kZXJzdGFuZCB3aGVuIGEgZGVmYXVsdCBwYXJhbWV0ZXIgaXMgYSBtdXRhYmxlIG9iamVjdCwgc3VjaCAnCisgICAgICAgICAgICAgJ2FzIGFcbicKKyAgICAgICAgICAgICAnbGlzdCBvciBhIGRpY3Rpb25hcnk6IGlmIHRoZSBmdW5jdGlvbiBtb2RpZmllcyB0aGUgb2JqZWN0IChlLmcuICcKKyAgICAgICAgICAgICAnYnlcbicKKyAgICAgICAgICAgICAnYXBwZW5kaW5nIGFuIGl0ZW0gdG8gYSBsaXN0KSwgdGhlIGRlZmF1bHQgdmFsdWUgaXMgaW4gZWZmZWN0ICcKKyAgICAgICAgICAgICAnbW9kaWZpZWQuXG4nCisgICAgICAgICAgICAgJ1RoaXMgaXMgZ2VuZXJhbGx5IG5vdCB3aGF0IHdhcyBpbnRlbmRlZC4gIEEgd2F5IGFyb3VuZCB0aGlzIGlzICcKKyAgICAgICAgICAgICAndG8gdXNlXG4nCisgICAgICAgICAgICAgJyJOb25lIiBhcyB0aGUgZGVmYXVsdCwgYW5kIGV4cGxpY2l0bHkgdGVzdCBmb3IgaXQgaW4gdGhlIGJvZHkgb2YgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnZnVuY3Rpb24sIGUuZy46XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBkZWYgd2hhdHNfb25fdGhlX3RlbGx5KHBlbmd1aW49Tm9uZSk6XG4nCisgICAgICAgICAgICAgJyAgICAgICBpZiBwZW5ndWluIGlzIE5vbmU6XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgcGVuZ3VpbiA9IFtdXG4nCisgICAgICAgICAgICAgJyAgICAgICBwZW5ndWluLmFwcGVuZCgicHJvcGVydHkgb2YgdGhlIHpvbyIpXG4nCisgICAgICAgICAgICAgJyAgICAgICByZXR1cm4gcGVuZ3VpblxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnRnVuY3Rpb24gY2FsbCBzZW1hbnRpY3MgYXJlIGRlc2NyaWJlZCBpbiBtb3JlIGRldGFpbCBpbiBzZWN0aW9uICcKKyAgICAgICAgICAgICAnQ2FsbHMuXG4nCisgICAgICAgICAgICAgJ0EgZnVuY3Rpb24gY2FsbCBhbHdheXMgYXNzaWducyB2YWx1ZXMgdG8gYWxsIHBhcmFtZXRlcnMgJworICAgICAgICAgICAgICdtZW50aW9uZWQgaW5cbicKKyAgICAgICAgICAgICAndGhlIHBhcmFtZXRlciBsaXN0LCBlaXRoZXIgZnJvbSBwb3NpdGlvbiBhcmd1bWVudHMsIGZyb20gJworICAgICAgICAgICAgICdrZXl3b3JkXG4nCisgICAgICAgICAgICAgJ2FyZ3VtZW50cywgb3IgZnJvbSBkZWZhdWx0IHZhbHVlcy4gIElmIHRoZSBmb3JtICIiKmlkZW50aWZpZXIiIiAnCisgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgJ3ByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgdHVwbGUgcmVjZWl2aW5nIGFueSBleGNlc3MgJworICAgICAgICAgICAgICdwb3NpdGlvbmFsXG4nCisgICAgICAgICAgICAgJ3BhcmFtZXRlcnMsIGRlZmF1bHRpbmcgdG8gdGhlIGVtcHR5IHR1cGxlLiBJZiB0aGUgZm9ybVxuJworICAgICAgICAgICAgICciIioqaWRlbnRpZmllciIiIGlzIHByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgbmV3IG9yZGVyZWRcbicKKyAgICAgICAgICAgICAnbWFwcGluZyByZWNlaXZpbmcgYW55IGV4Y2VzcyBrZXl3b3JkIGFyZ3VtZW50cywgZGVmYXVsdGluZyB0byBhICcKKyAgICAgICAgICAgICAnbmV3XG4nCisgICAgICAgICAgICAgJ2VtcHR5IG1hcHBpbmcgb2YgdGhlIHNhbWUgdHlwZS4gIFBhcmFtZXRlcnMgYWZ0ZXIgIiIqIiIgb3JcbicKKyAgICAgICAgICAgICAnIiIqaWRlbnRpZmllciIiIGFyZSBrZXl3b3JkLW9ubHkgcGFyYW1ldGVycyBhbmQgbWF5IG9ubHkgYmUgJworICAgICAgICAgICAgICdwYXNzZWRcbicKKyAgICAgICAgICAgICAndXNlZCBrZXl3b3JkIGFyZ3VtZW50cy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1BhcmFtZXRlcnMgbWF5IGhhdmUgYW5ub3RhdGlvbnMgb2YgdGhlIGZvcm0gIiI6IGV4cHJlc3Npb24iIiAnCisgICAgICAgICAgICAgJ2ZvbGxvd2luZ1xuJworICAgICAgICAgICAgICd0aGUgcGFyYW1ldGVyIG5hbWUuICBBbnkgcGFyYW1ldGVyIG1heSBoYXZlIGFuIGFubm90YXRpb24gZXZlbiAnCisgICAgICAgICAgICAgJ3Rob3NlXG4nCisgICAgICAgICAgICAgJ29mIHRoZSBmb3JtICIqaWRlbnRpZmllciIgb3IgIioqaWRlbnRpZmllciIuICBGdW5jdGlvbnMgbWF5ICcKKyAgICAgICAgICAgICAnaGF2ZVxuJworICAgICAgICAgICAgICcicmV0dXJuIiBhbm5vdGF0aW9uIG9mIHRoZSBmb3JtICIiLT4gZXhwcmVzc2lvbiIiIGFmdGVyIHRoZSAnCisgICAgICAgICAgICAgJ3BhcmFtZXRlclxuJworICAgICAgICAgICAgICdsaXN0LiAgVGhlc2UgYW5ub3RhdGlvbnMgY2FuIGJlIGFueSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbiBhbmQgJworICAgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgICAnZXZhbHVhdGVkIHdoZW4gdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgZXhlY3V0ZWQuICBBbm5vdGF0aW9ucyAnCisgICAgICAgICAgICAgJ21heVxuJworICAgICAgICAgICAgICdiZSBldmFsdWF0ZWQgaW4gYSBkaWZmZXJlbnQgb3JkZXIgdGhhbiB0aGV5IGFwcGVhciBpbiB0aGUgc291cmNlICcKKyAgICAgICAgICAgICAnY29kZS5cbicKKyAgICAgICAgICAgICAnVGhlIHByZXNlbmNlIG9mIGFubm90YXRpb25zIGRvZXMgbm90IGNoYW5nZSB0aGUgc2VtYW50aWNzIG9mIGFcbicKKyAgICAgICAgICAgICAnZnVuY3Rpb24uICBUaGUgYW5ub3RhdGlvbiB2YWx1ZXMgYXJlIGF2YWlsYWJsZSBhcyB2YWx1ZXMgb2YgYVxuJworICAgICAgICAgICAgICJkaWN0aW9uYXJ5IGtleWVkIGJ5IHRoZSBwYXJhbWV0ZXJzJyBuYW1lcyBpbiB0aGUgIgorICAgICAgICAgICAgICciX19hbm5vdGF0aW9uc19fIlxuJworICAgICAgICAgICAgICdhdHRyaWJ1dGUgb2YgdGhlIGZ1bmN0aW9uIG9iamVjdC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0l0IGlzIGFsc28gcG9zc2libGUgdG8gY3JlYXRlIGFub255bW91cyBmdW5jdGlvbnMgKGZ1bmN0aW9ucyBub3QgJworICAgICAgICAgICAgICdib3VuZFxuJworICAgICAgICAgICAgICd0byBhIG5hbWUpLCBmb3IgaW1tZWRpYXRlIHVzZSBpbiBleHByZXNzaW9ucy4gIFRoaXMgdXNlcyBsYW1iZGFcbicKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbnMsIGRlc2NyaWJlZCBpbiBzZWN0aW9uIExhbWJkYXMuICBOb3RlIHRoYXQgdGhlICcKKyAgICAgICAgICAgICAnbGFtYmRhXG4nCisgICAgICAgICAgICAgJ2V4cHJlc3Npb24gaXMgbWVyZWx5IGEgc2hvcnRoYW5kIGZvciBhIHNpbXBsaWZpZWQgZnVuY3Rpb24gJworICAgICAgICAgICAgICdkZWZpbml0aW9uO1xuJworICAgICAgICAgICAgICdhIGZ1bmN0aW9uIGRlZmluZWQgaW4gYSAiImRlZiIiIHN0YXRlbWVudCBjYW4gYmUgcGFzc2VkIGFyb3VuZCAnCisgICAgICAgICAgICAgJ29yXG4nCisgICAgICAgICAgICAgJ2Fzc2lnbmVkIHRvIGFub3RoZXIgbmFtZSBqdXN0IGxpa2UgYSBmdW5jdGlvbiBkZWZpbmVkIGJ5IGEgJworICAgICAgICAgICAgICdsYW1iZGFcbicKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbi4gIFRoZSAiImRlZiIiIGZvcm0gaXMgYWN0dWFsbHkgbW9yZSBwb3dlcmZ1bCBzaW5jZSAnCisgICAgICAgICAgICAgJ2l0XG4nCisgICAgICAgICAgICAgJ2FsbG93cyB0aGUgZXhlY3V0aW9uIG9mIG11bHRpcGxlIHN0YXRlbWVudHMgYW5kIGFubm90YXRpb25zLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAiKipQcm9ncmFtbWVyJ3Mgbm90ZToqKiBGdW5jdGlvbnMgYXJlIGZpcnN0LWNsYXNzIG9iamVjdHMuICBBICIKKyAgICAgICAgICAgICAnIiJkZWYiIlxuJworICAgICAgICAgICAgICdzdGF0ZW1lbnQgZXhlY3V0ZWQgaW5zaWRlIGEgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgbG9jYWxcbicKKyAgICAgICAgICAgICAnZnVuY3Rpb24gdGhhdCBjYW4gYmUgcmV0dXJuZWQgb3IgcGFzc2VkIGFyb3VuZC4gIEZyZWUgdmFyaWFibGVzICcKKyAgICAgICAgICAgICAndXNlZFxuJworICAgICAgICAgICAgICdpbiB0aGUgbmVzdGVkIGZ1bmN0aW9uIGNhbiBhY2Nlc3MgdGhlIGxvY2FsIHZhcmlhYmxlcyBvZiB0aGUgJworICAgICAgICAgICAgICdmdW5jdGlvblxuJworICAgICAgICAgICAgICdjb250YWluaW5nIHRoZSBkZWYuICBTZWUgc2VjdGlvbiBOYW1pbmcgYW5kIGJpbmRpbmcgZm9yICcKKyAgICAgICAgICAgICAnZGV0YWlscy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1NlZSBhbHNvOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAqKlBFUCAzMTA3KiogLSBGdW5jdGlvbiBBbm5vdGF0aW9uc1xuJworICAgICAgICAgICAgICcgICAgIFRoZSBvcmlnaW5hbCBzcGVjaWZpY2F0aW9uIGZvciBmdW5jdGlvbiBhbm5vdGF0aW9ucy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdDbGFzcyBkZWZpbml0aW9uc1xuJworICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQSBjbGFzcyBkZWZpbml0aW9uIGRlZmluZXMgYSBjbGFzcyBvYmplY3QgKHNlZSBzZWN0aW9uIFRoZSAnCisgICAgICAgICAgICAgJ3N0YW5kYXJkXG4nCisgICAgICAgICAgICAgJ3R5cGUgaGllcmFyY2h5KTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGNsYXNzZGVmICAgIDo6PSBbZGVjb3JhdG9yc10gImNsYXNzIiBjbGFzc25hbWUgW2luaGVyaXRhbmNlXSAnCisgICAgICAgICAgICAgJyI6IiBzdWl0ZVxuJworICAgICAgICAgICAgICcgICBpbmhlcml0YW5jZSA6Oj0gIigiIFthcmd1bWVudF9saXN0XSAiKSJcbicKKyAgICAgICAgICAgICAnICAgY2xhc3NuYW1lICAgOjo9IGlkZW50aWZpZXJcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0EgY2xhc3MgZGVmaW5pdGlvbiBpcyBhbiBleGVjdXRhYmxlIHN0YXRlbWVudC4gIFRoZSBpbmhlcml0YW5jZSAnCisgICAgICAgICAgICAgJ2xpc3RcbicKKyAgICAgICAgICAgICAndXN1YWxseSBnaXZlcyBhIGxpc3Qgb2YgYmFzZSBjbGFzc2VzIChzZWUgTWV0YWNsYXNzZXMgZm9yIG1vcmVcbicKKyAgICAgICAgICAgICAnYWR2YW5jZWQgdXNlcyksIHNvIGVhY2ggaXRlbSBpbiB0aGUgbGlzdCBzaG91bGQgZXZhbHVhdGUgdG8gYSAnCisgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgJ29iamVjdCB3aGljaCBhbGxvd3Mgc3ViY2xhc3NpbmcuICBDbGFzc2VzIHdpdGhvdXQgYW4gaW5oZXJpdGFuY2UgJworICAgICAgICAgICAgICdsaXN0XG4nCisgICAgICAgICAgICAgJ2luaGVyaXQsIGJ5IGRlZmF1bHQsIGZyb20gdGhlIGJhc2UgY2xhc3MgIm9iamVjdCI7IGhlbmNlLFxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgY2xhc3MgRm9vOlxuJworICAgICAgICAgICAgICcgICAgICAgcGFzc1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnaXMgZXF1aXZhbGVudCB0b1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgY2xhc3MgRm9vKG9iamVjdCk6XG4nCisgICAgICAgICAgICAgJyAgICAgICBwYXNzXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICJUaGUgY2xhc3MncyBzdWl0ZSBpcyB0aGVuIGV4ZWN1dGVkIGluIGEgbmV3IGV4ZWN1dGlvbiBmcmFtZSAiCisgICAgICAgICAgICAgJyhzZWVcbicKKyAgICAgICAgICAgICAnTmFtaW5nIGFuZCBiaW5kaW5nKSwgdXNpbmcgYSBuZXdseSBjcmVhdGVkIGxvY2FsIG5hbWVzcGFjZSBhbmQgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnb3JpZ2luYWwgZ2xvYmFsIG5hbWVzcGFjZS4gKFVzdWFsbHksIHRoZSBzdWl0ZSBjb250YWlucyBtb3N0bHlcbicKKyAgICAgICAgICAgICAiZnVuY3Rpb24gZGVmaW5pdGlvbnMuKSAgV2hlbiB0aGUgY2xhc3MncyBzdWl0ZSBmaW5pc2hlcyAiCisgICAgICAgICAgICAgJ2V4ZWN1dGlvbiwgaXRzXG4nCisgICAgICAgICAgICAgJ2V4ZWN1dGlvbiBmcmFtZSBpcyBkaXNjYXJkZWQgYnV0IGl0cyBsb2NhbCBuYW1lc3BhY2UgaXMgc2F2ZWQuICcKKyAgICAgICAgICAgICAnWzRdIEFcbicKKyAgICAgICAgICAgICAnY2xhc3Mgb2JqZWN0IGlzIHRoZW4gY3JlYXRlZCB1c2luZyB0aGUgaW5oZXJpdGFuY2UgbGlzdCBmb3IgdGhlICcKKyAgICAgICAgICAgICAnYmFzZVxuJworICAgICAgICAgICAgICdjbGFzc2VzIGFuZCB0aGUgc2F2ZWQgbG9jYWwgbmFtZXNwYWNlIGZvciB0aGUgYXR0cmlidXRlICcKKyAgICAgICAgICAgICAnZGljdGlvbmFyeS5cbicKKyAgICAgICAgICAgICAnVGhlIGNsYXNzIG5hbWUgaXMgYm91bmQgdG8gdGhpcyBjbGFzcyBvYmplY3QgaW4gdGhlIG9yaWdpbmFsICcKKyAgICAgICAgICAgICAnbG9jYWxcbicKKyAgICAgICAgICAgICAnbmFtZXNwYWNlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIG9yZGVyIGluIHdoaWNoIGF0dHJpYnV0ZXMgYXJlIGRlZmluZWQgaW4gdGhlIGNsYXNzIGJvZHkgaXNcbicKKyAgICAgICAgICAgICAncHJlc2VydmVkIGluIHRoZSBuZXcgY2xhc3NcJ3MgIl9fZGljdF9fIi4gIE5vdGUgdGhhdCB0aGlzIGlzICcKKyAgICAgICAgICAgICAncmVsaWFibGVcbicKKyAgICAgICAgICAgICAnb25seSByaWdodCBhZnRlciB0aGUgY2xhc3MgaXMgY3JlYXRlZCBhbmQgb25seSBmb3IgY2xhc3NlcyB0aGF0ICcKKyAgICAgICAgICAgICAnd2VyZVxuJworICAgICAgICAgICAgICdkZWZpbmVkIHVzaW5nIHRoZSBkZWZpbml0aW9uIHN5bnRheC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0NsYXNzIGNyZWF0aW9uIGNhbiBiZSBjdXN0b21pemVkIGhlYXZpbHkgdXNpbmcgbWV0YWNsYXNzZXMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdDbGFzc2VzIGNhbiBhbHNvIGJlIGRlY29yYXRlZDoganVzdCBsaWtlIHdoZW4gZGVjb3JhdGluZyAnCisgICAgICAgICAgICAgJ2Z1bmN0aW9ucyxcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEBmMShhcmcpXG4nCisgICAgICAgICAgICAgJyAgIEBmMlxuJworICAgICAgICAgICAgICcgICBjbGFzcyBGb286IHBhc3NcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2lzIHJvdWdobHkgZXF1aXZhbGVudCB0b1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgY2xhc3MgRm9vOiBwYXNzXG4nCisgICAgICAgICAgICAgJyAgIEZvbyA9IGYxKGFyZykoZjIoRm9vKSlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBldmFsdWF0aW9uIHJ1bGVzIGZvciB0aGUgZGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSB0aGUgc2FtZSAnCisgICAgICAgICAgICAgJ2FzIGZvclxuJworICAgICAgICAgICAgICdmdW5jdGlvbiBkZWNvcmF0b3JzLiAgVGhlIHJlc3VsdCBpcyB0aGVuIGJvdW5kIHRvIHRoZSBjbGFzcyAnCisgICAgICAgICAgICAgJ25hbWUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICIqKlByb2dyYW1tZXIncyBub3RlOioqIFZhcmlhYmxlcyBkZWZpbmVkIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uICIKKyAgICAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgICAgJ2NsYXNzIGF0dHJpYnV0ZXM7IHRoZXkgYXJlIHNoYXJlZCBieSBpbnN0YW5jZXMuICBJbnN0YW5jZSAnCisgICAgICAgICAgICAgJ2F0dHJpYnV0ZXNcbicKKyAgICAgICAgICAgICAnY2FuIGJlIHNldCBpbiBhIG1ldGhvZCB3aXRoICJzZWxmLm5hbWUgPSB2YWx1ZSIuICBCb3RoIGNsYXNzICcKKyAgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAgJ2luc3RhbmNlIGF0dHJpYnV0ZXMgYXJlIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgbm90YXRpb24gJworICAgICAgICAgICAgICciInNlbGYubmFtZSIiLFxuJworICAgICAgICAgICAgICdhbmQgYW4gaW5zdGFuY2UgYXR0cmlidXRlIGhpZGVzIGEgY2xhc3MgYXR0cmlidXRlIHdpdGggdGhlIHNhbWUgJworICAgICAgICAgICAgICduYW1lXG4nCisgICAgICAgICAgICAgJ3doZW4gYWNjZXNzZWQgaW4gdGhpcyB3YXkuICBDbGFzcyBhdHRyaWJ1dGVzIGNhbiBiZSB1c2VkIGFzICcKKyAgICAgICAgICAgICAnZGVmYXVsdHNcbicKKyAgICAgICAgICAgICAnZm9yIGluc3RhbmNlIGF0dHJpYnV0ZXMsIGJ1dCB1c2luZyBtdXRhYmxlIHZhbHVlcyB0aGVyZSBjYW4gbGVhZCAnCisgICAgICAgICAgICAgJ3RvXG4nCisgICAgICAgICAgICAgJ3VuZXhwZWN0ZWQgcmVzdWx0cy4gIERlc2NyaXB0b3JzIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBpbnN0YW5jZVxuJworICAgICAgICAgICAgICd2YXJpYWJsZXMgd2l0aCBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb24gZGV0YWlscy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1NlZSBhbHNvOiAqKlBFUCAzMTE1KiogLSBNZXRhY2xhc3NlcyBpbiBQeXRob24gMyAqKlBFUCAzMTI5KiogLVxuJworICAgICAgICAgICAgICcgIENsYXNzIERlY29yYXRvcnNcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdDb3JvdXRpbmVzXG4nCisgICAgICAgICAgICAgJz09PT09PT09PT1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ05ldyBpbiB2ZXJzaW9uIDMuNS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdDb3JvdXRpbmUgZnVuY3Rpb24gZGVmaW5pdGlvblxuJworICAgICAgICAgICAgICctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgYXN5bmNfZnVuY2RlZiA6Oj0gW2RlY29yYXRvcnNdICJhc3luYyIgImRlZiIgZnVuY25hbWUgIigiICcKKyAgICAgICAgICAgICAnW3BhcmFtZXRlcl9saXN0XSAiKSIgWyItPiIgZXhwcmVzc2lvbl0gIjoiIHN1aXRlXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdFeGVjdXRpb24gb2YgUHl0aG9uIGNvcm91dGluZXMgY2FuIGJlIHN1c3BlbmRlZCBhbmQgcmVzdW1lZCBhdCAnCisgICAgICAgICAgICAgJ21hbnlcbicKKyAgICAgICAgICAgICAncG9pbnRzIChzZWUgKmNvcm91dGluZSopLiAgSW4gdGhlIGJvZHkgb2YgYSBjb3JvdXRpbmUsIGFueSAnCisgICAgICAgICAgICAgJyJhd2FpdCIgYW5kXG4nCisgICAgICAgICAgICAgJyJhc3luYyIgaWRlbnRpZmllcnMgYmVjb21lIHJlc2VydmVkIGtleXdvcmRzOyAiYXdhaXQiICcKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbnMsXG4nCisgICAgICAgICAgICAgJyJhc3luYyBmb3IiIGFuZCAiYXN5bmMgd2l0aCIgY2FuIG9ubHkgYmUgdXNlZCBpbiBjb3JvdXRpbmUgJworICAgICAgICAgICAgICdib2RpZXMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdGdW5jdGlvbnMgZGVmaW5lZCB3aXRoICJhc3luYyBkZWYiIHN5bnRheCBhcmUgYWx3YXlzIGNvcm91dGluZVxuJworICAgICAgICAgICAgICdmdW5jdGlvbnMsIGV2ZW4gaWYgdGhleSBkbyBub3QgY29udGFpbiAiYXdhaXQiIG9yICJhc3luYyIgJworICAgICAgICAgICAgICdrZXl3b3Jkcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0l0IGlzIGEgIlN5bnRheEVycm9yIiB0byB1c2UgInlpZWxkIiBleHByZXNzaW9ucyBpbiAiYXN5bmMgZGVmIlxuJworICAgICAgICAgICAgICdjb3JvdXRpbmVzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQW4gZXhhbXBsZSBvZiBhIGNvcm91dGluZSBmdW5jdGlvbjpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGFzeW5jIGRlZiBmdW5jKHBhcmFtMSwgcGFyYW0yKTpcbicKKyAgICAgICAgICAgICAnICAgICAgIGRvX3N0dWZmKClcbicKKyAgICAgICAgICAgICAnICAgICAgIGF3YWl0IHNvbWVfY29yb3V0aW5lKClcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgImFzeW5jIGZvciIgc3RhdGVtZW50XG4nCisgICAgICAgICAgICAgJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGFzeW5jX2Zvcl9zdG10IDo6PSAiYXN5bmMiIGZvcl9zdG10XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBbiAqYXN5bmNocm9ub3VzIGl0ZXJhYmxlKiBpcyBhYmxlIHRvIGNhbGwgYXN5bmNocm9ub3VzIGNvZGUgaW4gJworICAgICAgICAgICAgICdpdHNcbicKKyAgICAgICAgICAgICAnKml0ZXIqIGltcGxlbWVudGF0aW9uLCBhbmQgKmFzeW5jaHJvbm91cyBpdGVyYXRvciogY2FuIGNhbGxcbicKKyAgICAgICAgICAgICAnYXN5bmNocm9ub3VzIGNvZGUgaW4gaXRzICpuZXh0KiBtZXRob2QuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgImFzeW5jIGZvciIgc3RhdGVtZW50IGFsbG93cyBjb252ZW5pZW50IGl0ZXJhdGlvbiBvdmVyXG4nCisgICAgICAgICAgICAgJ2FzeW5jaHJvbm91cyBpdGVyYXRvcnMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgZm9sbG93aW5nIGNvZGU6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBhc3luYyBmb3IgVEFSR0VUIGluIElURVI6XG4nCisgICAgICAgICAgICAgJyAgICAgICBCTE9DS1xuJworICAgICAgICAgICAgICcgICBlbHNlOlxuJworICAgICAgICAgICAgICcgICAgICAgQkxPQ0syXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdJcyBzZW1hbnRpY2FsbHkgZXF1aXZhbGVudCB0bzpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGl0ZXIgPSAoSVRFUilcbicKKyAgICAgICAgICAgICAnICAgaXRlciA9IHR5cGUoaXRlcikuX19haXRlcl9fKGl0ZXIpXG4nCisgICAgICAgICAgICAgJyAgIHJ1bm5pbmcgPSBUcnVlXG4nCisgICAgICAgICAgICAgJyAgIHdoaWxlIHJ1bm5pbmc6XG4nCisgICAgICAgICAgICAgJyAgICAgICB0cnk6XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgVEFSR0VUID0gYXdhaXQgdHlwZShpdGVyKS5fX2FuZXh0X18oaXRlcilcbicKKyAgICAgICAgICAgICAnICAgICAgIGV4Y2VwdCBTdG9wQXN5bmNJdGVyYXRpb246XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgcnVubmluZyA9IEZhbHNlXG4nCisgICAgICAgICAgICAgJyAgICAgICBlbHNlOlxuJworICAgICAgICAgICAgICcgICAgICAgICAgIEJMT0NLXG4nCisgICAgICAgICAgICAgJyAgIGVsc2U6XG4nCisgICAgICAgICAgICAgJyAgICAgICBCTE9DSzJcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1NlZSBhbHNvICJfX2FpdGVyX18oKSIgYW5kICJfX2FuZXh0X18oKSIgZm9yIGRldGFpbHMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdJdCBpcyBhICJTeW50YXhFcnJvciIgdG8gdXNlICJhc3luYyBmb3IiIHN0YXRlbWVudCBvdXRzaWRlIG9mICcKKyAgICAgICAgICAgICAnYW5cbicKKyAgICAgICAgICAgICAnImFzeW5jIGRlZiIgZnVuY3Rpb24uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJhc3luYyB3aXRoIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGFzeW5jX3dpdGhfc3RtdCA6Oj0gImFzeW5jIiB3aXRoX3N0bXRcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0FuICphc3luY2hyb25vdXMgY29udGV4dCBtYW5hZ2VyKiBpcyBhICpjb250ZXh0IG1hbmFnZXIqIHRoYXQgaXMgJworICAgICAgICAgICAgICdhYmxlXG4nCisgICAgICAgICAgICAgJ3RvIHN1c3BlbmQgZXhlY3V0aW9uIGluIGl0cyAqZW50ZXIqIGFuZCAqZXhpdCogbWV0aG9kcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBmb2xsb3dpbmcgY29kZTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGFzeW5jIHdpdGggRVhQUiBhcyBWQVI6XG4nCisgICAgICAgICAgICAgJyAgICAgICBCTE9DS1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnSXMgc2VtYW50aWNhbGx5IGVxdWl2YWxlbnQgdG86XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBtZ3IgPSAoRVhQUilcbicKKyAgICAgICAgICAgICAnICAgYWV4aXQgPSB0eXBlKG1ncikuX19hZXhpdF9fXG4nCisgICAgICAgICAgICAgJyAgIGFlbnRlciA9IHR5cGUobWdyKS5fX2FlbnRlcl9fKG1ncilcbicKKyAgICAgICAgICAgICAnICAgZXhjID0gVHJ1ZVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgVkFSID0gYXdhaXQgYWVudGVyXG4nCisgICAgICAgICAgICAgJyAgIHRyeTpcbicKKyAgICAgICAgICAgICAnICAgICAgIEJMT0NLXG4nCisgICAgICAgICAgICAgJyAgIGV4Y2VwdDpcbicKKyAgICAgICAgICAgICAnICAgICAgIGlmIG5vdCBhd2FpdCBhZXhpdChtZ3IsICpzeXMuZXhjX2luZm8oKSk6XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgcmFpc2VcbicKKyAgICAgICAgICAgICAnICAgZWxzZTpcbicKKyAgICAgICAgICAgICAnICAgICAgIGF3YWl0IGFleGl0KG1nciwgTm9uZSwgTm9uZSwgTm9uZSlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1NlZSBhbHNvICJfX2FlbnRlcl9fKCkiIGFuZCAiX19hZXhpdF9fKCkiIGZvciBkZXRhaWxzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnSXQgaXMgYSAiU3ludGF4RXJyb3IiIHRvIHVzZSAiYXN5bmMgd2l0aCIgc3RhdGVtZW50IG91dHNpZGUgb2YgJworICAgICAgICAgICAgICdhblxuJworICAgICAgICAgICAgICciYXN5bmMgZGVmIiBmdW5jdGlvbi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1NlZSBhbHNvOiAqKlBFUCA0OTIqKiAtIENvcm91dGluZXMgd2l0aCBhc3luYyBhbmQgYXdhaXQgc3ludGF4XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICctWyBGb290bm90ZXMgXS1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1sxXSBUaGUgZXhjZXB0aW9uIGlzIHByb3BhZ2F0ZWQgdG8gdGhlIGludm9jYXRpb24gc3RhY2sgdW5sZXNzXG4nCisgICAgICAgICAgICAgJyAgICB0aGVyZSBpcyBhICJmaW5hbGx5IiBjbGF1c2Ugd2hpY2ggaGFwcGVucyB0byByYWlzZSBhbm90aGVyXG4nCisgICAgICAgICAgICAgJyAgICBleGNlcHRpb24uIFRoYXQgbmV3IGV4Y2VwdGlvbiBjYXVzZXMgdGhlIG9sZCBvbmUgdG8gYmUgJworICAgICAgICAgICAgICdsb3N0LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnWzJdIEN1cnJlbnRseSwgY29udHJvbCAiZmxvd3Mgb2ZmIHRoZSBlbmQiIGV4Y2VwdCBpbiB0aGUgY2FzZSAnCisgICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAgJyAgICBhbiBleGNlcHRpb24gb3IgdGhlIGV4ZWN1dGlvbiBvZiBhICJyZXR1cm4iLCAiY29udGludWUiLCBvclxuJworICAgICAgICAgICAgICcgICAgImJyZWFrIiBzdGF0ZW1lbnQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdbM10gQSBzdHJpbmcgbGl0ZXJhbCBhcHBlYXJpbmcgYXMgdGhlIGZpcnN0IHN0YXRlbWVudCBpbiB0aGVcbicKKyAgICAgICAgICAgICAnICAgIGZ1bmN0aW9uIGJvZHkgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgZnVuY3Rpb25cJ3MgIl9fZG9jX18iXG4nCisgICAgICAgICAgICAgIiAgICBhdHRyaWJ1dGUgYW5kIHRoZXJlZm9yZSB0aGUgZnVuY3Rpb24ncyAqZG9jc3RyaW5nKi5cbiIKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1s0XSBBIHN0cmluZyBsaXRlcmFsIGFwcGVhcmluZyBhcyB0aGUgZmlyc3Qgc3RhdGVtZW50IGluIHRoZSAnCisgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgJyAgICBib2R5IGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIG5hbWVzcGFjZVwncyAiX19kb2NfXyIgaXRlbSAnCisgICAgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICAgICIgICAgdGhlcmVmb3JlIHRoZSBjbGFzcydzICpkb2NzdHJpbmcqLlxuIiwKKyAnY29udGV4dC1tYW5hZ2Vycyc6ICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdXaXRoIFN0YXRlbWVudCBDb250ZXh0IE1hbmFnZXJzXG4nCisgICAgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ0EgKmNvbnRleHQgbWFuYWdlciogaXMgYW4gb2JqZWN0IHRoYXQgZGVmaW5lcyB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ3J1bnRpbWUgY29udGV4dCB0b1xuJworICAgICAgICAgICAgICAgICAgICAgJ2JlIGVzdGFibGlzaGVkIHdoZW4gZXhlY3V0aW5nIGEgIndpdGgiIHN0YXRlbWVudC4gVGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdjb250ZXh0IG1hbmFnZXJcbicKKyAgICAgICAgICAgICAgICAgICAgICdoYW5kbGVzIHRoZSBlbnRyeSBpbnRvLCBhbmQgdGhlIGV4aXQgZnJvbSwgdGhlIGRlc2lyZWQgJworICAgICAgICAgICAgICAgICAgICAgJ3J1bnRpbWUgY29udGV4dFxuJworICAgICAgICAgICAgICAgICAgICAgJ2ZvciB0aGUgZXhlY3V0aW9uIG9mIHRoZSBibG9jayBvZiBjb2RlLiAgQ29udGV4dCAnCisgICAgICAgICAgICAgICAgICAgICAnbWFuYWdlcnMgYXJlIG5vcm1hbGx5XG4nCisgICAgICAgICAgICAgICAgICAgICAnaW52b2tlZCB1c2luZyB0aGUgIndpdGgiIHN0YXRlbWVudCAoZGVzY3JpYmVkIGluIHNlY3Rpb24gJworICAgICAgICAgICAgICAgICAgICAgJ1RoZSB3aXRoXG4nCisgICAgICAgICAgICAgICAgICAgICAnc3RhdGVtZW50KSwgYnV0IGNhbiBhbHNvIGJlIHVzZWQgYnkgZGlyZWN0bHkgaW52b2tpbmcgJworICAgICAgICAgICAgICAgICAgICAgJ3RoZWlyIG1ldGhvZHMuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnVHlwaWNhbCB1c2VzIG9mIGNvbnRleHQgbWFuYWdlcnMgaW5jbHVkZSBzYXZpbmcgYW5kICcKKyAgICAgICAgICAgICAgICAgICAgICdyZXN0b3JpbmcgdmFyaW91c1xuJworICAgICAgICAgICAgICAgICAgICAgJ2tpbmRzIG9mIGdsb2JhbCBzdGF0ZSwgbG9ja2luZyBhbmQgdW5sb2NraW5nIHJlc291cmNlcywgJworICAgICAgICAgICAgICAgICAgICAgJ2Nsb3Npbmcgb3BlbmVkXG4nCisgICAgICAgICAgICAgICAgICAgICAnZmlsZXMsIGV0Yy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBjb250ZXh0IG1hbmFnZXJzLCBzZWUgQ29udGV4dCAnCisgICAgICAgICAgICAgICAgICAgICAnTWFuYWdlciBUeXBlcy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19lbnRlcl9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgRW50ZXIgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiBUaGUgJworICAgICAgICAgICAgICAgICAgICAgJyJ3aXRoIlxuJworICAgICAgICAgICAgICAgICAgICAgIiAgIHN0YXRlbWVudCB3aWxsIGJpbmQgdGhpcyBtZXRob2QncyByZXR1cm4gdmFsdWUgdG8gdGhlICIKKyAgICAgICAgICAgICAgICAgICAgICd0YXJnZXQocylcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBzcGVjaWZpZWQgaW4gdGhlICJhcyIgY2xhdXNlIG9mIHRoZSBzdGF0ZW1lbnQsIGlmICcKKyAgICAgICAgICAgICAgICAgICAgICdhbnkuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsdWUsIHRyYWNlYmFjaylcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBFeGl0IHRoZSBydW50aW1lIGNvbnRleHQgcmVsYXRlZCB0byB0aGlzIG9iamVjdC4gVGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdwYXJhbWV0ZXJzXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgZGVzY3JpYmUgdGhlIGV4Y2VwdGlvbiB0aGF0IGNhdXNlZCB0aGUgY29udGV4dCB0byBiZSAnCisgICAgICAgICAgICAgICAgICAgICAnZXhpdGVkLiBJZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBjb250ZXh0IHdhcyBleGl0ZWQgd2l0aG91dCBhbiBleGNlcHRpb24sIGFsbCB0aHJlZSAnCisgICAgICAgICAgICAgICAgICAgICAnYXJndW1lbnRzIHdpbGxcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBiZSAiTm9uZSIuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgSWYgYW4gZXhjZXB0aW9uIGlzIHN1cHBsaWVkLCBhbmQgdGhlIG1ldGhvZCB3aXNoZXMgdG8gJworICAgICAgICAgICAgICAgICAgICAgJ3N1cHByZXNzIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGV4Y2VwdGlvbiAoaS5lLiwgcHJldmVudCBpdCBmcm9tIGJlaW5nIHByb3BhZ2F0ZWQpLCAnCisgICAgICAgICAgICAgICAgICAgICAnaXQgc2hvdWxkXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgcmV0dXJuIGEgdHJ1ZSB2YWx1ZS4gT3RoZXJ3aXNlLCB0aGUgZXhjZXB0aW9uIHdpbGwgYmUgJworICAgICAgICAgICAgICAgICAgICAgJ3Byb2Nlc3NlZFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIG5vcm1hbGx5IHVwb24gZXhpdCBmcm9tIHRoaXMgbWV0aG9kLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIE5vdGUgdGhhdCAiX19leGl0X18oKSIgbWV0aG9kcyBzaG91bGQgbm90IHJlcmFpc2UgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdwYXNzZWQtaW5cbicKKyAgICAgICAgICAgICAgICAgICAgICIgICBleGNlcHRpb247IHRoaXMgaXMgdGhlIGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5LlxuIgorICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1NlZSBhbHNvOlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgKipQRVAgMzQzKiogLSBUaGUgIndpdGgiIHN0YXRlbWVudFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICAgVGhlIHNwZWNpZmljYXRpb24sIGJhY2tncm91bmQsIGFuZCBleGFtcGxlcyBmb3IgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdQeXRob24gIndpdGgiXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgICBzdGF0ZW1lbnQuXG4nLAorICdjb250aW51ZSc6ICdcbicKKyAgICAgICAgICAgICAnVGhlICJjb250aW51ZSIgc3RhdGVtZW50XG4nCisgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgY29udGludWVfc3RtdCA6Oj0gImNvbnRpbnVlIlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnImNvbnRpbnVlIiBtYXkgb25seSBvY2N1ciBzeW50YWN0aWNhbGx5IG5lc3RlZCBpbiBhICJmb3IiIG9yICcKKyAgICAgICAgICAgICAnIndoaWxlIlxuJworICAgICAgICAgICAgICdsb29wLCBidXQgbm90IG5lc3RlZCBpbiBhIGZ1bmN0aW9uIG9yIGNsYXNzIGRlZmluaXRpb24gb3IgJworICAgICAgICAgICAgICciZmluYWxseSJcbicKKyAgICAgICAgICAgICAnY2xhdXNlIHdpdGhpbiB0aGF0IGxvb3AuICBJdCBjb250aW51ZXMgd2l0aCB0aGUgbmV4dCBjeWNsZSBvZiAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICduZWFyZXN0IGVuY2xvc2luZyBsb29wLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnV2hlbiAiY29udGludWUiIHBhc3NlcyBjb250cm9sIG91dCBvZiBhICJ0cnkiIHN0YXRlbWVudCB3aXRoIGFcbicKKyAgICAgICAgICAgICAnImZpbmFsbHkiIGNsYXVzZSwgdGhhdCAiZmluYWxseSIgY2xhdXNlIGlzIGV4ZWN1dGVkIGJlZm9yZSAnCisgICAgICAgICAgICAgJ3JlYWxseVxuJworICAgICAgICAgICAgICdzdGFydGluZyB0aGUgbmV4dCBsb29wIGN5Y2xlLlxuJywKKyAnY29udmVyc2lvbnMnOiAnXG4nCisgICAgICAgICAgICAgICAgJ0FyaXRobWV0aWMgY29udmVyc2lvbnNcbicKKyAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnV2hlbiBhIGRlc2NyaXB0aW9uIG9mIGFuIGFyaXRobWV0aWMgb3BlcmF0b3IgYmVsb3cgdXNlcyB0aGUgJworICAgICAgICAgICAgICAgICdwaHJhc2VcbicKKyAgICAgICAgICAgICAgICAnInRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUsIiB0aGlzICcKKyAgICAgICAgICAgICAgICAnbWVhbnNcbicKKyAgICAgICAgICAgICAgICAndGhhdCB0aGUgb3BlcmF0b3IgaW1wbGVtZW50YXRpb24gZm9yIGJ1aWx0LWluIHR5cGVzIHdvcmtzIGFzICcKKyAgICAgICAgICAgICAgICAnZm9sbG93czpcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogSWYgZWl0aGVyIGFyZ3VtZW50IGlzIGEgY29tcGxleCBudW1iZXIsIHRoZSBvdGhlciBpcyAnCisgICAgICAgICAgICAgICAgJ2NvbnZlcnRlZCB0b1xuJworICAgICAgICAgICAgICAgICcgIGNvbXBsZXg7XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqIG90aGVyd2lzZSwgaWYgZWl0aGVyIGFyZ3VtZW50IGlzIGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLCAnCisgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICcgIG90aGVyIGlzIGNvbnZlcnRlZCB0byBmbG9hdGluZyBwb2ludDtcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogb3RoZXJ3aXNlLCBib3RoIG11c3QgYmUgaW50ZWdlcnMgYW5kIG5vIGNvbnZlcnNpb24gaXMgJworICAgICAgICAgICAgICAgICduZWNlc3NhcnkuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdTb21lIGFkZGl0aW9uYWwgcnVsZXMgYXBwbHkgZm9yIGNlcnRhaW4gb3BlcmF0b3JzIChlLmcuLCBhICcKKyAgICAgICAgICAgICAgICAnc3RyaW5nIGFzIGFcbicKKyAgICAgICAgICAgICAgICAibGVmdCBhcmd1bWVudCB0byB0aGUgJyUnIG9wZXJhdG9yKS4gIEV4dGVuc2lvbnMgbXVzdCBkZWZpbmUgIgorICAgICAgICAgICAgICAgICd0aGVpciBvd25cbicKKyAgICAgICAgICAgICAgICAnY29udmVyc2lvbiBiZWhhdmlvci5cbicsCisgJ2N1c3RvbWl6YXRpb24nOiAnXG4nCisgICAgICAgICAgICAgICAgICAnQmFzaWMgY3VzdG9taXphdGlvblxuJworICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19uZXdfXyhjbHNbLCAuLi5dKVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgY2xhc3MgKmNscyouICAnCisgICAgICAgICAgICAgICAgICAnIl9fbmV3X18oKSIgaXMgYVxuJworICAgICAgICAgICAgICAgICAgJyAgIHN0YXRpYyBtZXRob2QgKHNwZWNpYWwtY2FzZWQgc28geW91IG5lZWQgbm90IGRlY2xhcmUgaXQgJworICAgICAgICAgICAgICAgICAgJ2FzIHN1Y2gpXG4nCisgICAgICAgICAgICAgICAgICAnICAgdGhhdCB0YWtlcyB0aGUgY2xhc3Mgb2Ygd2hpY2ggYW4gaW5zdGFuY2Ugd2FzIHJlcXVlc3RlZCAnCisgICAgICAgICAgICAgICAgICAnYXMgaXRzXG4nCisgICAgICAgICAgICAgICAgICAnICAgZmlyc3QgYXJndW1lbnQuICBUaGUgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgdGhvc2UgJworICAgICAgICAgICAgICAgICAgJ3Bhc3NlZCB0byB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICBvYmplY3QgY29uc3RydWN0b3IgZXhwcmVzc2lvbiAodGhlIGNhbGwgdG8gdGhlIGNsYXNzKS4gICcKKyAgICAgICAgICAgICAgICAgICdUaGUgcmV0dXJuXG4nCisgICAgICAgICAgICAgICAgICAnICAgdmFsdWUgb2YgIl9fbmV3X18oKSIgc2hvdWxkIGJlIHRoZSBuZXcgb2JqZWN0IGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgICcodXN1YWxseSBhblxuJworICAgICAgICAgICAgICAgICAgJyAgIGluc3RhbmNlIG9mICpjbHMqKS5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBUeXBpY2FsIGltcGxlbWVudGF0aW9ucyBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgICdjbGFzcyBieVxuJworICAgICAgICAgICAgICAgICAgJyAgIGludm9raW5nIHRoZSBzdXBlcmNsYXNzXCdzICJfX25ld19fKCkiIG1ldGhvZCB1c2luZ1xuJworICAgICAgICAgICAgICAgICAgJyAgICJzdXBlcihjdXJyZW50Y2xhc3MsIGNscykuX19uZXdfXyhjbHNbLCAuLi5dKSIgd2l0aCAnCisgICAgICAgICAgICAgICAgICAnYXBwcm9wcmlhdGVcbicKKyAgICAgICAgICAgICAgICAgICcgICBhcmd1bWVudHMgYW5kIHRoZW4gbW9kaWZ5aW5nIHRoZSBuZXdseS1jcmVhdGVkIGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgICdhc1xuJworICAgICAgICAgICAgICAgICAgJyAgIG5lY2Vzc2FyeSBiZWZvcmUgcmV0dXJuaW5nIGl0LlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIElmICJfX25ld19fKCkiIHJldHVybnMgYW4gaW5zdGFuY2Ugb2YgKmNscyosIHRoZW4gdGhlICcKKyAgICAgICAgICAgICAgICAgICduZXdcbicKKyAgICAgICAgICAgICAgICAgICcgICBpbnN0YW5jZVwncyAiX19pbml0X18oKSIgbWV0aG9kIHdpbGwgYmUgaW52b2tlZCBsaWtlXG4nCisgICAgICAgICAgICAgICAgICAnICAgIl9faW5pdF9fKHNlbGZbLCAuLi5dKSIsIHdoZXJlICpzZWxmKiBpcyB0aGUgbmV3ICcKKyAgICAgICAgICAgICAgICAgICdpbnN0YW5jZSBhbmQgdGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgd2VyZSBwYXNzZWQgdG8gJworICAgICAgICAgICAgICAgICAgJyJfX25ld19fKCkiLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIElmICJfX25ld19fKCkiIGRvZXMgbm90IHJldHVybiBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgJworICAgICAgICAgICAgICAgICAgJ3RoZW4gdGhlIG5ld1xuJworICAgICAgICAgICAgICAgICAgJyAgIGluc3RhbmNlXCdzICJfX2luaXRfXygpIiBtZXRob2Qgd2lsbCBub3QgYmUgaW52b2tlZC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICAiX19uZXdfXygpIiBpcyBpbnRlbmRlZCBtYWlubHkgdG8gYWxsb3cgc3ViY2xhc3NlcyBvZiAnCisgICAgICAgICAgICAgICAgICAnaW1tdXRhYmxlXG4nCisgICAgICAgICAgICAgICAgICAnICAgdHlwZXMgKGxpa2UgaW50LCBzdHIsIG9yIHR1cGxlKSB0byBjdXN0b21pemUgaW5zdGFuY2UgJworICAgICAgICAgICAgICAgICAgJ2NyZWF0aW9uLiAgSXRcbicKKyAgICAgICAgICAgICAgICAgICcgICBpcyBhbHNvIGNvbW1vbmx5IG92ZXJyaWRkZW4gaW4gY3VzdG9tIG1ldGFjbGFzc2VzIGluICcKKyAgICAgICAgICAgICAgICAgICdvcmRlciB0b1xuJworICAgICAgICAgICAgICAgICAgJyAgIGN1c3RvbWl6ZSBjbGFzcyBjcmVhdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pbml0X18oc2VsZlssIC4uLl0pXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIGFmdGVyIHRoZSBpbnN0YW5jZSBoYXMgYmVlbiBjcmVhdGVkIChieSAnCisgICAgICAgICAgICAgICAgICAnIl9fbmV3X18oKSIpLCBidXRcbicKKyAgICAgICAgICAgICAgICAgICcgICBiZWZvcmUgaXQgaXMgcmV0dXJuZWQgdG8gdGhlIGNhbGxlci4gIFRoZSBhcmd1bWVudHMgYXJlICcKKyAgICAgICAgICAgICAgICAgICd0aG9zZVxuJworICAgICAgICAgICAgICAgICAgJyAgIHBhc3NlZCB0byB0aGUgY2xhc3MgY29uc3RydWN0b3IgZXhwcmVzc2lvbi4gIElmIGEgYmFzZSAnCisgICAgICAgICAgICAgICAgICAnY2xhc3MgaGFzIGFuXG4nCisgICAgICAgICAgICAgICAgICAnICAgIl9faW5pdF9fKCkiIG1ldGhvZCwgdGhlIGRlcml2ZWQgY2xhc3NcJ3MgIl9faW5pdF9fKCkiICcKKyAgICAgICAgICAgICAgICAgICdtZXRob2QsIGlmXG4nCisgICAgICAgICAgICAgICAgICAnICAgYW55LCBtdXN0IGV4cGxpY2l0bHkgY2FsbCBpdCB0byBlbnN1cmUgcHJvcGVyICcKKyAgICAgICAgICAgICAgICAgICdpbml0aWFsaXphdGlvbiBvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlIGluc3RhbmNlOyBmb3IgZXhhbXBsZTpcbicKKyAgICAgICAgICAgICAgICAgICcgICAiQmFzZUNsYXNzLl9faW5pdF9fKHNlbGYsIFthcmdzLi4uXSkiLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIEJlY2F1c2UgIl9fbmV3X18oKSIgYW5kICJfX2luaXRfXygpIiB3b3JrIHRvZ2V0aGVyIGluICcKKyAgICAgICAgICAgICAgICAgICdjb25zdHJ1Y3RpbmdcbicKKyAgICAgICAgICAgICAgICAgICcgICBvYmplY3RzICgiX19uZXdfXygpIiB0byBjcmVhdGUgaXQsIGFuZCAiX19pbml0X18oKSIgdG8gJworICAgICAgICAgICAgICAgICAgJ2N1c3RvbWl6ZVxuJworICAgICAgICAgICAgICAgICAgJyAgIGl0KSwgbm8gbm9uLSJOb25lIiB2YWx1ZSBtYXkgYmUgcmV0dXJuZWQgYnkgJworICAgICAgICAgICAgICAgICAgJyJfX2luaXRfXygpIjsgZG9pbmcgc29cbicKKyAgICAgICAgICAgICAgICAgICcgICB3aWxsIGNhdXNlIGEgIlR5cGVFcnJvciIgdG8gYmUgcmFpc2VkIGF0IHJ1bnRpbWUuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZGVsX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgd2hlbiB0aGUgaW5zdGFuY2UgaXMgYWJvdXQgdG8gYmUgZGVzdHJveWVkLiAgVGhpcyAnCisgICAgICAgICAgICAgICAgICAnaXMgYWxzb1xuJworICAgICAgICAgICAgICAgICAgJyAgIGNhbGxlZCBhIGRlc3RydWN0b3IuICBJZiBhIGJhc2UgY2xhc3MgaGFzIGEgIl9fZGVsX18oKSIgJworICAgICAgICAgICAgICAgICAgJ21ldGhvZCwgdGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgZGVyaXZlZCBjbGFzc1wncyAiX19kZWxfXygpIiBtZXRob2QsIGlmIGFueSwgbXVzdCAnCisgICAgICAgICAgICAgICAgICAnZXhwbGljaXRseSBjYWxsIGl0XG4nCisgICAgICAgICAgICAgICAgICAnICAgdG8gZW5zdXJlIHByb3BlciBkZWxldGlvbiBvZiB0aGUgYmFzZSBjbGFzcyBwYXJ0IG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICAnaW5zdGFuY2UuXG4nCisgICAgICAgICAgICAgICAgICAnICAgTm90ZSB0aGF0IGl0IGlzIHBvc3NpYmxlICh0aG91Z2ggbm90IHJlY29tbWVuZGVkISkgZm9yICcKKyAgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICAiX19kZWxfXygpIiBtZXRob2QgdG8gcG9zdHBvbmUgZGVzdHJ1Y3Rpb24gb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgICdpbnN0YW5jZSBieVxuJworICAgICAgICAgICAgICAgICAgJyAgIGNyZWF0aW5nIGEgbmV3IHJlZmVyZW5jZSB0byBpdC4gIEl0IG1heSB0aGVuIGJlIGNhbGxlZCAnCisgICAgICAgICAgICAgICAgICAnYXQgYSBsYXRlclxuJworICAgICAgICAgICAgICAgICAgJyAgIHRpbWUgd2hlbiB0aGlzIG5ldyByZWZlcmVuY2UgaXMgZGVsZXRlZC4gIEl0IGlzIG5vdCAnCisgICAgICAgICAgICAgICAgICAnZ3VhcmFudGVlZCB0aGF0XG4nCisgICAgICAgICAgICAgICAgICAnICAgIl9fZGVsX18oKSIgbWV0aG9kcyBhcmUgY2FsbGVkIGZvciBvYmplY3RzIHRoYXQgc3RpbGwgJworICAgICAgICAgICAgICAgICAgJ2V4aXN0IHdoZW5cbicKKyAgICAgICAgICAgICAgICAgICcgICB0aGUgaW50ZXJwcmV0ZXIgZXhpdHMuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgTm90ZTogImRlbCB4IiBkb2VzblwndCBkaXJlY3RseSBjYWxsICJ4Ll9fZGVsX18oKSIgLS0tICcKKyAgICAgICAgICAgICAgICAgICd0aGUgZm9ybWVyXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBkZWNyZW1lbnRzIHRoZSByZWZlcmVuY2UgY291bnQgZm9yICJ4IiBieSBvbmUsIGFuZCB0aGUgJworICAgICAgICAgICAgICAgICAgJ2xhdHRlciBpc1xuJworICAgICAgICAgICAgICAgICAgJyAgICAgb25seSBjYWxsZWQgd2hlbiAieCJcJ3MgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVyby4gICcKKyAgICAgICAgICAgICAgICAgICdTb21lIGNvbW1vblxuJworICAgICAgICAgICAgICAgICAgJyAgICAgc2l0dWF0aW9ucyB0aGF0IG1heSBwcmV2ZW50IHRoZSByZWZlcmVuY2UgY291bnQgb2YgYW4gJworICAgICAgICAgICAgICAgICAgJ29iamVjdCBmcm9tXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBnb2luZyB0byB6ZXJvIGluY2x1ZGU6IGNpcmN1bGFyIHJlZmVyZW5jZXMgYmV0d2VlbiAnCisgICAgICAgICAgICAgICAgICAnb2JqZWN0cyAoZS5nLixcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGEgZG91Ymx5LWxpbmtlZCBsaXN0IG9yIGEgdHJlZSBkYXRhIHN0cnVjdHVyZSB3aXRoICcKKyAgICAgICAgICAgICAgICAgICdwYXJlbnQgYW5kXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBjaGlsZCBwb2ludGVycyk7IGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3Qgb24gdGhlICcKKyAgICAgICAgICAgICAgICAgICdzdGFjayBmcmFtZSBvZlxuJworICAgICAgICAgICAgICAgICAgJyAgICAgYSBmdW5jdGlvbiB0aGF0IGNhdWdodCBhbiBleGNlcHRpb24gKHRoZSB0cmFjZWJhY2sgJworICAgICAgICAgICAgICAgICAgJ3N0b3JlZCBpblxuJworICAgICAgICAgICAgICAgICAgJyAgICAgInN5cy5leGNfaW5mbygpWzJdIiBrZWVwcyB0aGUgc3RhY2sgZnJhbWUgYWxpdmUpOyBvciBhICcKKyAgICAgICAgICAgICAgICAgICdyZWZlcmVuY2VcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHRvIHRoZSBvYmplY3Qgb24gdGhlIHN0YWNrIGZyYW1lIHRoYXQgcmFpc2VkIGFuICcKKyAgICAgICAgICAgICAgICAgICd1bmhhbmRsZWRcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGV4Y2VwdGlvbiBpbiBpbnRlcmFjdGl2ZSBtb2RlICh0aGUgdHJhY2ViYWNrIHN0b3JlZCAnCisgICAgICAgICAgICAgICAgICAnaW5cbicKKyAgICAgICAgICAgICAgICAgICcgICAgICJzeXMubGFzdF90cmFjZWJhY2siIGtlZXBzIHRoZSBzdGFjayBmcmFtZSBhbGl2ZSkuICAnCisgICAgICAgICAgICAgICAgICAnVGhlIGZpcnN0XG4nCisgICAgICAgICAgICAgICAgICAnICAgICBzaXR1YXRpb24gY2FuIG9ubHkgYmUgcmVtZWRpZWQgYnkgZXhwbGljaXRseSBicmVha2luZyAnCisgICAgICAgICAgICAgICAgICAndGhlIGN5Y2xlcztcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHRoZSBzZWNvbmQgY2FuIGJlIHJlc29sdmVkIGJ5IGZyZWVpbmcgdGhlIHJlZmVyZW5jZSB0byAnCisgICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgICB0cmFjZWJhY2sgb2JqZWN0IHdoZW4gaXQgaXMgbm8gbG9uZ2VyIHVzZWZ1bCwgYW5kIHRoZSAnCisgICAgICAgICAgICAgICAgICAndGhpcmQgY2FuXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBiZSByZXNvbHZlZCBieSBzdG9yaW5nICJOb25lIiBpbiAic3lzLmxhc3RfdHJhY2ViYWNrIi4gJworICAgICAgICAgICAgICAgICAgJ0NpcmN1bGFyXG4nCisgICAgICAgICAgICAgICAgICAnICAgICByZWZlcmVuY2VzIHdoaWNoIGFyZSBnYXJiYWdlIGFyZSBkZXRlY3RlZCBhbmQgY2xlYW5lZCAnCisgICAgICAgICAgICAgICAgICAndXAgd2hlbiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICIgICAgIGN5Y2xpYyBnYXJiYWdlIGNvbGxlY3RvciBpcyBlbmFibGVkIChpdCdzIG9uIGJ5ICIKKyAgICAgICAgICAgICAgICAgICdkZWZhdWx0KS4gUmVmZXJcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHRvIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgImdjIiBtb2R1bGUgZm9yIG1vcmUgJworICAgICAgICAgICAgICAgICAgJ2luZm9ybWF0aW9uXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBhYm91dCB0aGlzIHRvcGljLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIFdhcm5pbmc6IER1ZSB0byB0aGUgcHJlY2FyaW91cyBjaXJjdW1zdGFuY2VzIHVuZGVyICcKKyAgICAgICAgICAgICAgICAgICd3aGljaFxuJworICAgICAgICAgICAgICAgICAgJyAgICAgIl9fZGVsX18oKSIgbWV0aG9kcyBhcmUgaW52b2tlZCwgZXhjZXB0aW9ucyB0aGF0IG9jY3VyICcKKyAgICAgICAgICAgICAgICAgICdkdXJpbmdcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHRoZWlyIGV4ZWN1dGlvbiBhcmUgaWdub3JlZCwgYW5kIGEgd2FybmluZyBpcyBwcmludGVkICcKKyAgICAgICAgICAgICAgICAgICd0b1xuJworICAgICAgICAgICAgICAgICAgJyAgICAgInN5cy5zdGRlcnIiIGluc3RlYWQuIEFsc28sIHdoZW4gIl9fZGVsX18oKSIgaXMgJworICAgICAgICAgICAgICAgICAgJ2ludm9rZWQgaW5cbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHJlc3BvbnNlIHRvIGEgbW9kdWxlIGJlaW5nIGRlbGV0ZWQgKGUuZy4sIHdoZW4gJworICAgICAgICAgICAgICAgICAgJ2V4ZWN1dGlvbiBvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHByb2dyYW0gaXMgZG9uZSksIG90aGVyIGdsb2JhbHMgcmVmZXJlbmNlZCBieSB0aGUgJworICAgICAgICAgICAgICAgICAgJyJfX2RlbF9fKCkiXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBtZXRob2QgbWF5IGFscmVhZHkgaGF2ZSBiZWVuIGRlbGV0ZWQgb3IgaW4gdGhlIHByb2Nlc3MgJworICAgICAgICAgICAgICAgICAgJ29mIGJlaW5nXG4nCisgICAgICAgICAgICAgICAgICAnICAgICB0b3JuIGRvd24gKGUuZy4gdGhlIGltcG9ydCBtYWNoaW5lcnkgc2h1dHRpbmcgZG93bikuICAnCisgICAgICAgICAgICAgICAgICAnRm9yIHRoaXNcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHJlYXNvbiwgIl9fZGVsX18oKSIgbWV0aG9kcyBzaG91bGQgZG8gdGhlIGFic29sdXRlICcKKyAgICAgICAgICAgICAgICAgICdtaW5pbXVtIG5lZWRlZFxuJworICAgICAgICAgICAgICAgICAgJyAgICAgdG8gbWFpbnRhaW4gZXh0ZXJuYWwgaW52YXJpYW50cy4gIFN0YXJ0aW5nIHdpdGggJworICAgICAgICAgICAgICAgICAgJ3ZlcnNpb24gMS41LFxuJworICAgICAgICAgICAgICAgICAgJyAgICAgUHl0aG9uIGd1YXJhbnRlZXMgdGhhdCBnbG9iYWxzIHdob3NlIG5hbWUgYmVnaW5zIHdpdGggJworICAgICAgICAgICAgICAgICAgJ2Egc2luZ2xlXG4nCisgICAgICAgICAgICAgICAgICAnICAgICB1bmRlcnNjb3JlIGFyZSBkZWxldGVkIGZyb20gdGhlaXIgbW9kdWxlIGJlZm9yZSBvdGhlciAnCisgICAgICAgICAgICAgICAgICAnZ2xvYmFscyBhcmVcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGRlbGV0ZWQ7IGlmIG5vIG90aGVyIHJlZmVyZW5jZXMgdG8gc3VjaCBnbG9iYWxzIGV4aXN0LCAnCisgICAgICAgICAgICAgICAgICAndGhpcyBtYXlcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGhlbHAgaW4gYXNzdXJpbmcgdGhhdCBpbXBvcnRlZCBtb2R1bGVzIGFyZSBzdGlsbCAnCisgICAgICAgICAgICAgICAgICAnYXZhaWxhYmxlIGF0IHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgICAgdGltZSB3aGVuIHRoZSAiX19kZWxfXygpIiBtZXRob2QgaXMgY2FsbGVkLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JlcHJfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCBieSB0aGUgInJlcHIoKSIgYnVpbHQtaW4gZnVuY3Rpb24gdG8gY29tcHV0ZSB0aGUgJworICAgICAgICAgICAgICAgICAgJyJvZmZpY2lhbCJcbicKKyAgICAgICAgICAgICAgICAgICcgICBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LiAgSWYgYXQgYWxsIHBvc3NpYmxlLCAnCisgICAgICAgICAgICAgICAgICAndGhpc1xuJworICAgICAgICAgICAgICAgICAgJyAgIHNob3VsZCBsb29rIGxpa2UgYSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbiB0aGF0IGNvdWxkIGJlICcKKyAgICAgICAgICAgICAgICAgICd1c2VkIHRvXG4nCisgICAgICAgICAgICAgICAgICAnICAgcmVjcmVhdGUgYW4gb2JqZWN0IHdpdGggdGhlIHNhbWUgdmFsdWUgKGdpdmVuIGFuICcKKyAgICAgICAgICAgICAgICAgICdhcHByb3ByaWF0ZVxuJworICAgICAgICAgICAgICAgICAgJyAgIGVudmlyb25tZW50KS4gIElmIHRoaXMgaXMgbm90IHBvc3NpYmxlLCBhIHN0cmluZyBvZiB0aGUgJworICAgICAgICAgICAgICAgICAgJ2Zvcm1cbicKKyAgICAgICAgICAgICAgICAgICcgICAiPC4uLnNvbWUgdXNlZnVsIGRlc2NyaXB0aW9uLi4uPiIgc2hvdWxkIGJlIHJldHVybmVkLiAnCisgICAgICAgICAgICAgICAgICAnVGhlIHJldHVyblxuJworICAgICAgICAgICAgICAgICAgJyAgIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2JqZWN0LiBJZiBhIGNsYXNzIGRlZmluZXMgJworICAgICAgICAgICAgICAgICAgJyJfX3JlcHJfXygpIiBidXRcbicKKyAgICAgICAgICAgICAgICAgICcgICBub3QgIl9fc3RyX18oKSIsIHRoZW4gIl9fcmVwcl9fKCkiIGlzIGFsc28gdXNlZCB3aGVuIGFuICcKKyAgICAgICAgICAgICAgICAgICciaW5mb3JtYWwiXG4nCisgICAgICAgICAgICAgICAgICAnICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGluc3RhbmNlcyBvZiB0aGF0IGNsYXNzIGlzICcKKyAgICAgICAgICAgICAgICAgICdyZXF1aXJlZC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBUaGlzIGlzIHR5cGljYWxseSB1c2VkIGZvciBkZWJ1Z2dpbmcsIHNvIGl0IGlzIGltcG9ydGFudCAnCisgICAgICAgICAgICAgICAgICAndGhhdCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICByZXByZXNlbnRhdGlvbiBpcyBpbmZvcm1hdGlvbi1yaWNoIGFuZCB1bmFtYmlndW91cy5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19zdHJfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCBieSAic3RyKG9iamVjdCkiIGFuZCB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zICcKKyAgICAgICAgICAgICAgICAgICciZm9ybWF0KCkiIGFuZFxuJworICAgICAgICAgICAgICAgICAgJyAgICJwcmludCgpIiB0byBjb21wdXRlIHRoZSAiaW5mb3JtYWwiIG9yIG5pY2VseSBwcmludGFibGUgJworICAgICAgICAgICAgICAgICAgJ3N0cmluZ1xuJworICAgICAgICAgICAgICAgICAgJyAgIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBiZSBhICcKKyAgICAgICAgICAgICAgICAgICdzdHJpbmdcbicKKyAgICAgICAgICAgICAgICAgICcgICBvYmplY3QuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgVGhpcyBtZXRob2QgZGlmZmVycyBmcm9tICJvYmplY3QuX19yZXByX18oKSIgaW4gdGhhdCAnCisgICAgICAgICAgICAgICAgICAndGhlcmUgaXMgbm9cbicKKyAgICAgICAgICAgICAgICAgICcgICBleHBlY3RhdGlvbiB0aGF0ICJfX3N0cl9fKCkiIHJldHVybiBhIHZhbGlkIFB5dGhvbiAnCisgICAgICAgICAgICAgICAgICAnZXhwcmVzc2lvbjogYVxuJworICAgICAgICAgICAgICAgICAgJyAgIG1vcmUgY29udmVuaWVudCBvciBjb25jaXNlIHJlcHJlc2VudGF0aW9uIGNhbiBiZSB1c2VkLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGRlZmluZWQgYnkgdGhlIGJ1aWx0LWluIHR5cGUgJworICAgICAgICAgICAgICAgICAgJyJvYmplY3QiXG4nCisgICAgICAgICAgICAgICAgICAnICAgY2FsbHMgIm9iamVjdC5fX3JlcHJfXygpIi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19ieXRlc19fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIGJ5ICJieXRlcygpIiB0byBjb21wdXRlIGEgYnl0ZS1zdHJpbmcgJworICAgICAgICAgICAgICAgICAgJ3JlcHJlc2VudGF0aW9uIG9mIGFuXG4nCisgICAgICAgICAgICAgICAgICAnICAgb2JqZWN0LiBUaGlzIHNob3VsZCByZXR1cm4gYSAiYnl0ZXMiIG9iamVjdC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19mb3JtYXRfXyhzZWxmLCBmb3JtYXRfc3BlYylcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgYnkgdGhlICJmb3JtYXQoKSIgYnVpbHQtaW4gZnVuY3Rpb24sIGFuZCBieSAnCisgICAgICAgICAgICAgICAgICAnZXh0ZW5zaW9uLFxuJworICAgICAgICAgICAgICAgICAgJyAgIGV2YWx1YXRpb24gb2YgZm9ybWF0dGVkIHN0cmluZyBsaXRlcmFscyBhbmQgdGhlICcKKyAgICAgICAgICAgICAgICAgICcic3RyLmZvcm1hdCgpIlxuJworICAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCwgdG8gcHJvZHVjZSBhICJmb3JtYXR0ZWQiIHN0cmluZyByZXByZXNlbnRhdGlvbiAnCisgICAgICAgICAgICAgICAgICAnb2YgYW5cbicKKyAgICAgICAgICAgICAgICAgICcgICBvYmplY3QuIFRoZSAiZm9ybWF0X3NwZWMiIGFyZ3VtZW50IGlzIGEgc3RyaW5nIHRoYXQgJworICAgICAgICAgICAgICAgICAgJ2NvbnRhaW5zIGFcbicKKyAgICAgICAgICAgICAgICAgICcgICBkZXNjcmlwdGlvbiBvZiB0aGUgZm9ybWF0dGluZyBvcHRpb25zIGRlc2lyZWQuIFRoZSAnCisgICAgICAgICAgICAgICAgICAnaW50ZXJwcmV0YXRpb25cbicKKyAgICAgICAgICAgICAgICAgICcgICBvZiB0aGUgImZvcm1hdF9zcGVjIiBhcmd1bWVudCBpcyB1cCB0byB0aGUgdHlwZSAnCisgICAgICAgICAgICAgICAgICAnaW1wbGVtZW50aW5nXG4nCisgICAgICAgICAgICAgICAgICAnICAgIl9fZm9ybWF0X18oKSIsIGhvd2V2ZXIgbW9zdCBjbGFzc2VzIHdpbGwgZWl0aGVyICcKKyAgICAgICAgICAgICAgICAgICdkZWxlZ2F0ZVxuJworICAgICAgICAgICAgICAgICAgJyAgIGZvcm1hdHRpbmcgdG8gb25lIG9mIHRoZSBidWlsdC1pbiB0eXBlcywgb3IgdXNlIGEgJworICAgICAgICAgICAgICAgICAgJ3NpbWlsYXJcbicKKyAgICAgICAgICAgICAgICAgICcgICBmb3JtYXR0aW5nIG9wdGlvbiBzeW50YXguXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgU2VlIEZvcm1hdCBTcGVjaWZpY2F0aW9uIE1pbmktTGFuZ3VhZ2UgZm9yIGEgZGVzY3JpcHRpb24gJworICAgICAgICAgICAgICAgICAgJ29mIHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgIHN0YW5kYXJkIGZvcm1hdHRpbmcgc3ludGF4LlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvYmplY3QuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuNDogVGhlIF9fZm9ybWF0X18gbWV0aG9kIG9mICcKKyAgICAgICAgICAgICAgICAgICcib2JqZWN0IiBpdHNlbGZcbicKKyAgICAgICAgICAgICAgICAgICcgICByYWlzZXMgYSAiVHlwZUVycm9yIiBpZiBwYXNzZWQgYW55IG5vbi1lbXB0eSBzdHJpbmcuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbHRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19sZV9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2VxX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbmVfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19ndF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2dlX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgVGhlc2UgYXJlIHRoZSBzby1jYWxsZWQgInJpY2ggY29tcGFyaXNvbiIgbWV0aG9kcy4gVGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgY29ycmVzcG9uZGVuY2UgYmV0d2VlbiBvcGVyYXRvciBzeW1ib2xzIGFuZCBtZXRob2QgbmFtZXMgJworICAgICAgICAgICAgICAgICAgJ2lzIGFzXG4nCisgICAgICAgICAgICAgICAgICAnICAgZm9sbG93czogIng8eSIgY2FsbHMgInguX19sdF9fKHkpIiwgIng8PXkiIGNhbGxzICcKKyAgICAgICAgICAgICAgICAgICcieC5fX2xlX18oeSkiLFxuJworICAgICAgICAgICAgICAgICAgJyAgICJ4PT15IiBjYWxscyAieC5fX2VxX18oeSkiLCAieCE9eSIgY2FsbHMgInguX19uZV9fKHkpIiwgJworICAgICAgICAgICAgICAgICAgJyJ4PnkiIGNhbGxzXG4nCisgICAgICAgICAgICAgICAgICAnICAgInguX19ndF9fKHkpIiwgYW5kICJ4Pj15IiBjYWxscyAieC5fX2dlX18oeSkiLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIEEgcmljaCBjb21wYXJpc29uIG1ldGhvZCBtYXkgcmV0dXJuIHRoZSBzaW5nbGV0b24gJworICAgICAgICAgICAgICAgICAgJyJOb3RJbXBsZW1lbnRlZCJcbicKKyAgICAgICAgICAgICAgICAgICcgICBpZiBpdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIG9wZXJhdGlvbiBmb3IgYSBnaXZlbiBwYWlyICcKKyAgICAgICAgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAgICAgICAgJyAgIGFyZ3VtZW50cy4gQnkgY29udmVudGlvbiwgIkZhbHNlIiBhbmQgIlRydWUiIGFyZSAnCisgICAgICAgICAgICAgICAgICAncmV0dXJuZWQgZm9yIGFcbicKKyAgICAgICAgICAgICAgICAgICcgICBzdWNjZXNzZnVsIGNvbXBhcmlzb24uIEhvd2V2ZXIsIHRoZXNlIG1ldGhvZHMgY2FuIHJldHVybiAnCisgICAgICAgICAgICAgICAgICAnYW55IHZhbHVlLFxuJworICAgICAgICAgICAgICAgICAgJyAgIHNvIGlmIHRoZSBjb21wYXJpc29uIG9wZXJhdG9yIGlzIHVzZWQgaW4gYSBCb29sZWFuICcKKyAgICAgICAgICAgICAgICAgICdjb250ZXh0IChlLmcuLFxuJworICAgICAgICAgICAgICAgICAgJyAgIGluIHRoZSBjb25kaXRpb24gb2YgYW4gImlmIiBzdGF0ZW1lbnQpLCBQeXRob24gd2lsbCBjYWxsICcKKyAgICAgICAgICAgICAgICAgICciYm9vbCgpIlxuJworICAgICAgICAgICAgICAgICAgJyAgIG9uIHRoZSB2YWx1ZSB0byBkZXRlcm1pbmUgaWYgdGhlIHJlc3VsdCBpcyB0cnVlIG9yICcKKyAgICAgICAgICAgICAgICAgICdmYWxzZS5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBCeSBkZWZhdWx0LCAiX19uZV9fKCkiIGRlbGVnYXRlcyB0byAiX19lcV9fKCkiIGFuZCAnCisgICAgICAgICAgICAgICAgICAnaW52ZXJ0cyB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICByZXN1bHQgdW5sZXNzIGl0IGlzICJOb3RJbXBsZW1lbnRlZCIuICBUaGVyZSBhcmUgbm8gJworICAgICAgICAgICAgICAgICAgJ290aGVyIGltcGxpZWRcbicKKyAgICAgICAgICAgICAgICAgICcgICByZWxhdGlvbnNoaXBzIGFtb25nIHRoZSBjb21wYXJpc29uIG9wZXJhdG9ycywgZm9yICcKKyAgICAgICAgICAgICAgICAgICdleGFtcGxlLCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICB0cnV0aCBvZiAiKHg8eSBvciB4PT15KSIgZG9lcyBub3QgaW1wbHkgIng8PXkiLiBUbyAnCisgICAgICAgICAgICAgICAgICAnYXV0b21hdGljYWxseVxuJworICAgICAgICAgICAgICAgICAgJyAgIGdlbmVyYXRlIG9yZGVyaW5nIG9wZXJhdGlvbnMgZnJvbSBhIHNpbmdsZSByb290ICcKKyAgICAgICAgICAgICAgICAgICdvcGVyYXRpb24sIHNlZVxuJworICAgICAgICAgICAgICAgICAgJyAgICJmdW5jdG9vbHMudG90YWxfb3JkZXJpbmcoKSIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgU2VlIHRoZSBwYXJhZ3JhcGggb24gIl9faGFzaF9fKCkiIGZvciBzb21lIGltcG9ydGFudCAnCisgICAgICAgICAgICAgICAgICAnbm90ZXMgb25cbicKKyAgICAgICAgICAgICAgICAgICcgICBjcmVhdGluZyAqaGFzaGFibGUqIG9iamVjdHMgd2hpY2ggc3VwcG9ydCBjdXN0b20gJworICAgICAgICAgICAgICAgICAgJ2NvbXBhcmlzb25cbicKKyAgICAgICAgICAgICAgICAgICcgICBvcGVyYXRpb25zIGFuZCBhcmUgdXNhYmxlIGFzIGRpY3Rpb25hcnkga2V5cy5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBUaGVyZSBhcmUgbm8gc3dhcHBlZC1hcmd1bWVudCB2ZXJzaW9ucyBvZiB0aGVzZSBtZXRob2RzICcKKyAgICAgICAgICAgICAgICAgICcodG8gYmUgdXNlZFxuJworICAgICAgICAgICAgICAgICAgJyAgIHdoZW4gdGhlIGxlZnQgYXJndW1lbnQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgb3BlcmF0aW9uICcKKyAgICAgICAgICAgICAgICAgICdidXQgdGhlIHJpZ2h0XG4nCisgICAgICAgICAgICAgICAgICAnICAgYXJndW1lbnQgZG9lcyk7IHJhdGhlciwgIl9fbHRfXygpIiBhbmQgIl9fZ3RfXygpIiBhcmUgJworICAgICAgICAgICAgICAgICAgImVhY2ggb3RoZXInc1xuIgorICAgICAgICAgICAgICAgICAgJyAgIHJlZmxlY3Rpb24sICJfX2xlX18oKSIgYW5kICJfX2dlX18oKSIgYXJlIGVhY2ggb3RoZXJcJ3MgJworICAgICAgICAgICAgICAgICAgJ3JlZmxlY3Rpb24sXG4nCisgICAgICAgICAgICAgICAgICAnICAgYW5kICJfX2VxX18oKSIgYW5kICJfX25lX18oKSIgYXJlIHRoZWlyIG93biByZWZsZWN0aW9uLiAnCisgICAgICAgICAgICAgICAgICAnSWYgdGhlXG4nCisgICAgICAgICAgICAgICAgICAiICAgb3BlcmFuZHMgYXJlIG9mIGRpZmZlcmVudCB0eXBlcywgYW5kIHJpZ2h0IG9wZXJhbmQncyAiCisgICAgICAgICAgICAgICAgICAndHlwZSBpcyBhXG4nCisgICAgICAgICAgICAgICAgICAiICAgZGlyZWN0IG9yIGluZGlyZWN0IHN1YmNsYXNzIG9mIHRoZSBsZWZ0IG9wZXJhbmQncyB0eXBlLCAiCisgICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgcmVmbGVjdGVkIG1ldGhvZCBvZiB0aGUgcmlnaHQgb3BlcmFuZCBoYXMgcHJpb3JpdHksICcKKyAgICAgICAgICAgICAgICAgICdvdGhlcndpc2UgdGhlXG4nCisgICAgICAgICAgICAgICAgICAiICAgbGVmdCBvcGVyYW5kJ3MgbWV0aG9kIGhhcyBwcmlvcml0eS4gIFZpcnR1YWwgc3ViY2xhc3NpbmcgIgorICAgICAgICAgICAgICAgICAgJ2lzIG5vdFxuJworICAgICAgICAgICAgICAgICAgJyAgIGNvbnNpZGVyZWQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faGFzaF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIGJ5IGJ1aWx0LWluIGZ1bmN0aW9uICJoYXNoKCkiIGFuZCBmb3Igb3BlcmF0aW9ucyAnCisgICAgICAgICAgICAgICAgICAnb24gbWVtYmVyc1xuJworICAgICAgICAgICAgICAgICAgJyAgIG9mIGhhc2hlZCBjb2xsZWN0aW9ucyBpbmNsdWRpbmcgInNldCIsICJmcm96ZW5zZXQiLCBhbmQgJworICAgICAgICAgICAgICAgICAgJyJkaWN0Ii5cbicKKyAgICAgICAgICAgICAgICAgICcgICAiX19oYXNoX18oKSIgc2hvdWxkIHJldHVybiBhbiBpbnRlZ2VyLiAgVGhlIG9ubHkgJworICAgICAgICAgICAgICAgICAgJ3JlcXVpcmVkIHByb3BlcnR5XG4nCisgICAgICAgICAgICAgICAgICAnICAgaXMgdGhhdCBvYmplY3RzIHdoaWNoIGNvbXBhcmUgZXF1YWwgaGF2ZSB0aGUgc2FtZSBoYXNoICcKKyAgICAgICAgICAgICAgICAgICd2YWx1ZTsgaXQgaXNcbicKKyAgICAgICAgICAgICAgICAgICcgICBhZHZpc2VkIHRvIHNvbWVob3cgbWl4IHRvZ2V0aGVyIChlLmcuIHVzaW5nIGV4Y2x1c2l2ZSAnCisgICAgICAgICAgICAgICAgICAnb3IpIHRoZSBoYXNoXG4nCisgICAgICAgICAgICAgICAgICAnICAgdmFsdWVzIGZvciB0aGUgY29tcG9uZW50cyBvZiB0aGUgb2JqZWN0IHRoYXQgYWxzbyBwbGF5IGEgJworICAgICAgICAgICAgICAgICAgJ3BhcnQgaW5cbicKKyAgICAgICAgICAgICAgICAgICcgICBjb21wYXJpc29uIG9mIG9iamVjdHMuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgTm90ZTogImhhc2goKSIgdHJ1bmNhdGVzIHRoZSB2YWx1ZSByZXR1cm5lZCBmcm9tIGFuICcKKyAgICAgICAgICAgICAgICAgICJvYmplY3Qnc1xuIgorICAgICAgICAgICAgICAgICAgJyAgICAgY3VzdG9tICJfX2hhc2hfXygpIiBtZXRob2QgdG8gdGhlIHNpemUgb2YgYSAnCisgICAgICAgICAgICAgICAgICAnIlB5X3NzaXplX3QiLiAgVGhpc1xuJworICAgICAgICAgICAgICAgICAgJyAgICAgaXMgdHlwaWNhbGx5IDggYnl0ZXMgb24gNjQtYml0IGJ1aWxkcyBhbmQgNCBieXRlcyBvbiAnCisgICAgICAgICAgICAgICAgICAnMzItYml0XG4nCisgICAgICAgICAgICAgICAgICAnICAgICBidWlsZHMuIElmIGFuIG9iamVjdFwncyAgICJfX2hhc2hfXygpIiBtdXN0ICcKKyAgICAgICAgICAgICAgICAgICdpbnRlcm9wZXJhdGUgb24gYnVpbGRzXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBvZiBkaWZmZXJlbnQgYml0IHNpemVzLCBiZSBzdXJlIHRvIGNoZWNrIHRoZSB3aWR0aCBvbiAnCisgICAgICAgICAgICAgICAgICAnYWxsXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBzdXBwb3J0ZWQgYnVpbGRzLiAgQW4gZWFzeSB3YXkgdG8gZG8gdGhpcyBpcyB3aXRoICcKKyAgICAgICAgICAgICAgICAgICcicHl0aG9uIC1jXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAiaW1wb3J0IHN5czsgcHJpbnQoc3lzLmhhc2hfaW5mby53aWR0aCkiIi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBJZiBhIGNsYXNzIGRvZXMgbm90IGRlZmluZSBhbiAiX19lcV9fKCkiIG1ldGhvZCBpdCAnCisgICAgICAgICAgICAgICAgICAnc2hvdWxkIG5vdFxuJworICAgICAgICAgICAgICAgICAgJyAgIGRlZmluZSBhICJfX2hhc2hfXygpIiBvcGVyYXRpb24gZWl0aGVyOyBpZiBpdCBkZWZpbmVzICcKKyAgICAgICAgICAgICAgICAgICciX19lcV9fKCkiXG4nCisgICAgICAgICAgICAgICAgICAnICAgYnV0IG5vdCAiX19oYXNoX18oKSIsIGl0cyBpbnN0YW5jZXMgd2lsbCBub3QgYmUgdXNhYmxlICcKKyAgICAgICAgICAgICAgICAgICdhcyBpdGVtcyBpblxuJworICAgICAgICAgICAgICAgICAgJyAgIGhhc2hhYmxlIGNvbGxlY3Rpb25zLiAgSWYgYSBjbGFzcyBkZWZpbmVzIG11dGFibGUgJworICAgICAgICAgICAgICAgICAgJ29iamVjdHMgYW5kXG4nCisgICAgICAgICAgICAgICAgICAnICAgaW1wbGVtZW50cyBhbiAiX19lcV9fKCkiIG1ldGhvZCwgaXQgc2hvdWxkIG5vdCAnCisgICAgICAgICAgICAgICAgICAnaW1wbGVtZW50XG4nCisgICAgICAgICAgICAgICAgICAnICAgIl9faGFzaF9fKCkiLCBzaW5jZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgaGFzaGFibGUgJworICAgICAgICAgICAgICAgICAgJ2NvbGxlY3Rpb25zXG4nCisgICAgICAgICAgICAgICAgICAiICAgcmVxdWlyZXMgdGhhdCBhIGtleSdzIGhhc2ggdmFsdWUgaXMgaW1tdXRhYmxlIChpZiB0aGUgIgorICAgICAgICAgICAgICAgICAgIm9iamVjdCdzIGhhc2hcbiIKKyAgICAgICAgICAgICAgICAgICcgICB2YWx1ZSBjaGFuZ2VzLCBpdCB3aWxsIGJlIGluIHRoZSB3cm9uZyBoYXNoIGJ1Y2tldCkuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgVXNlci1kZWZpbmVkIGNsYXNzZXMgaGF2ZSAiX19lcV9fKCkiIGFuZCAiX19oYXNoX18oKSIgJworICAgICAgICAgICAgICAgICAgJ21ldGhvZHMgYnlcbicKKyAgICAgICAgICAgICAgICAgICcgICBkZWZhdWx0OyB3aXRoIHRoZW0sIGFsbCBvYmplY3RzIGNvbXBhcmUgdW5lcXVhbCAoZXhjZXB0ICcKKyAgICAgICAgICAgICAgICAgICd3aXRoXG4nCisgICAgICAgICAgICAgICAgICAnICAgdGhlbXNlbHZlcykgYW5kICJ4Ll9faGFzaF9fKCkiIHJldHVybnMgYW4gYXBwcm9wcmlhdGUgJworICAgICAgICAgICAgICAgICAgJ3ZhbHVlIHN1Y2hcbicKKyAgICAgICAgICAgICAgICAgICcgICB0aGF0ICJ4ID09IHkiIGltcGxpZXMgYm90aCB0aGF0ICJ4IGlzIHkiIGFuZCAiaGFzaCh4KSA9PSAnCisgICAgICAgICAgICAgICAgICAnaGFzaCh5KSIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQSBjbGFzcyB0aGF0IG92ZXJyaWRlcyAiX19lcV9fKCkiIGFuZCBkb2VzIG5vdCBkZWZpbmUgJworICAgICAgICAgICAgICAgICAgJyJfX2hhc2hfXygpIlxuJworICAgICAgICAgICAgICAgICAgJyAgIHdpbGwgaGF2ZSBpdHMgIl9faGFzaF9fKCkiIGltcGxpY2l0bHkgc2V0IHRvICJOb25lIi4gICcKKyAgICAgICAgICAgICAgICAgICdXaGVuIHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgICJfX2hhc2hfXygpIiBtZXRob2Qgb2YgYSBjbGFzcyBpcyAiTm9uZSIsIGluc3RhbmNlcyBvZiAnCisgICAgICAgICAgICAgICAgICAndGhlIGNsYXNzXG4nCisgICAgICAgICAgICAgICAgICAnICAgd2lsbCByYWlzZSBhbiBhcHByb3ByaWF0ZSAiVHlwZUVycm9yIiB3aGVuIGEgcHJvZ3JhbSAnCisgICAgICAgICAgICAgICAgICAnYXR0ZW1wdHMgdG9cbicKKyAgICAgICAgICAgICAgICAgICcgICByZXRyaWV2ZSB0aGVpciBoYXNoIHZhbHVlLCBhbmQgd2lsbCBhbHNvIGJlIGNvcnJlY3RseSAnCisgICAgICAgICAgICAgICAgICAnaWRlbnRpZmllZCBhc1xuJworICAgICAgICAgICAgICAgICAgJyAgIHVuaGFzaGFibGUgd2hlbiBjaGVja2luZyAiaXNpbnN0YW5jZShvYmosICcKKyAgICAgICAgICAgICAgICAgICdjb2xsZWN0aW9ucy5IYXNoYWJsZSkiLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIElmIGEgY2xhc3MgdGhhdCBvdmVycmlkZXMgIl9fZXFfXygpIiBuZWVkcyB0byByZXRhaW4gJworICAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAgJyAgIGltcGxlbWVudGF0aW9uIG9mICJfX2hhc2hfXygpIiBmcm9tIGEgcGFyZW50IGNsYXNzLCB0aGUgJworICAgICAgICAgICAgICAgICAgJ2ludGVycHJldGVyXG4nCisgICAgICAgICAgICAgICAgICAnICAgbXVzdCBiZSB0b2xkIHRoaXMgZXhwbGljaXRseSBieSBzZXR0aW5nICJfX2hhc2hfXyA9XG4nCisgICAgICAgICAgICAgICAgICAnICAgPFBhcmVudENsYXNzPi5fX2hhc2hfXyIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgSWYgYSBjbGFzcyB0aGF0IGRvZXMgbm90IG92ZXJyaWRlICJfX2VxX18oKSIgd2lzaGVzIHRvICcKKyAgICAgICAgICAgICAgICAgICdzdXBwcmVzc1xuJworICAgICAgICAgICAgICAgICAgJyAgIGhhc2ggc3VwcG9ydCwgaXQgc2hvdWxkIGluY2x1ZGUgIl9faGFzaF9fID0gTm9uZSIgaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICAgICAgICAgJyAgIGRlZmluaXRpb24uIEEgY2xhc3Mgd2hpY2ggZGVmaW5lcyBpdHMgb3duICJfX2hhc2hfXygpIiAnCisgICAgICAgICAgICAgICAgICAndGhhdFxuJworICAgICAgICAgICAgICAgICAgJyAgIGV4cGxpY2l0bHkgcmFpc2VzIGEgIlR5cGVFcnJvciIgd291bGQgYmUgaW5jb3JyZWN0bHkgJworICAgICAgICAgICAgICAgICAgJ2lkZW50aWZpZWQgYXNcbicKKyAgICAgICAgICAgICAgICAgICcgICBoYXNoYWJsZSBieSBhbiAiaXNpbnN0YW5jZShvYmosIGNvbGxlY3Rpb25zLkhhc2hhYmxlKSIgJworICAgICAgICAgICAgICAgICAgJ2NhbGwuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgTm90ZTogQnkgZGVmYXVsdCwgdGhlICJfX2hhc2hfXygpIiB2YWx1ZXMgb2Ygc3RyLCBieXRlcyAnCisgICAgICAgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBkYXRldGltZSBvYmplY3RzIGFyZSAic2FsdGVkIiB3aXRoIGFuIHVucHJlZGljdGFibGUgJworICAgICAgICAgICAgICAgICAgJ3JhbmRvbSB2YWx1ZS5cbicKKyAgICAgICAgICAgICAgICAgICcgICAgIEFsdGhvdWdoIHRoZXkgcmVtYWluIGNvbnN0YW50IHdpdGhpbiBhbiBpbmRpdmlkdWFsICcKKyAgICAgICAgICAgICAgICAgICdQeXRob25cbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHByb2Nlc3MsIHRoZXkgYXJlIG5vdCBwcmVkaWN0YWJsZSBiZXR3ZWVuIHJlcGVhdGVkICcKKyAgICAgICAgICAgICAgICAgICdpbnZvY2F0aW9ucyBvZlxuJworICAgICAgICAgICAgICAgICAgJyAgICAgUHl0aG9uLlRoaXMgaXMgaW50ZW5kZWQgdG8gcHJvdmlkZSBwcm90ZWN0aW9uIGFnYWluc3QgJworICAgICAgICAgICAgICAgICAgJ2EgZGVuaWFsLVxuJworICAgICAgICAgICAgICAgICAgJyAgICAgb2Ytc2VydmljZSBjYXVzZWQgYnkgY2FyZWZ1bGx5LWNob3NlbiBpbnB1dHMgdGhhdCAnCisgICAgICAgICAgICAgICAgICAnZXhwbG9pdCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHdvcnN0IGNhc2UgcGVyZm9ybWFuY2Ugb2YgYSBkaWN0IGluc2VydGlvbiwgTyhuXjIpICcKKyAgICAgICAgICAgICAgICAgICdjb21wbGV4aXR5LlxuJworICAgICAgICAgICAgICAgICAgJyAgICAgU2VlICcKKyAgICAgICAgICAgICAgICAgICdodHRwOi8vd3d3Lm9jZXJ0Lm9yZy9hZHZpc29yaWVzL29jZXJ0LTIwMTEtMDAzLmh0bWwgZm9yXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBkZXRhaWxzLkNoYW5naW5nIGhhc2ggdmFsdWVzIGFmZmVjdHMgdGhlIGl0ZXJhdGlvbiAnCisgICAgICAgICAgICAgICAgICAnb3JkZXIgb2ZcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGRpY3RzLCBzZXRzIGFuZCBvdGhlciBtYXBwaW5ncy4gIFB5dGhvbiBoYXMgbmV2ZXIgbWFkZSAnCisgICAgICAgICAgICAgICAgICAnZ3VhcmFudGVlc1xuJworICAgICAgICAgICAgICAgICAgJyAgICAgYWJvdXQgdGhpcyBvcmRlcmluZyAoYW5kIGl0IHR5cGljYWxseSB2YXJpZXMgYmV0d2VlbiAnCisgICAgICAgICAgICAgICAgICAnMzItYml0IGFuZFxuJworICAgICAgICAgICAgICAgICAgJyAgICAgNjQtYml0IGJ1aWxkcykuU2VlIGFsc28gIlBZVEhPTkhBU0hTRUVEIi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBDaGFuZ2VkIGluIHZlcnNpb24gMy4zOiBIYXNoIHJhbmRvbWl6YXRpb24gaXMgZW5hYmxlZCBieSAnCisgICAgICAgICAgICAgICAgICAnZGVmYXVsdC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19ib29sX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50IHRydXRoIHZhbHVlIHRlc3RpbmcgYW5kIHRoZSBidWlsdC1pbiAnCisgICAgICAgICAgICAgICAgICAnb3BlcmF0aW9uXG4nCisgICAgICAgICAgICAgICAgICAnICAgImJvb2woKSI7IHNob3VsZCByZXR1cm4gIkZhbHNlIiBvciAiVHJ1ZSIuICBXaGVuIHRoaXMgJworICAgICAgICAgICAgICAgICAgJ21ldGhvZCBpcyBub3RcbicKKyAgICAgICAgICAgICAgICAgICcgICBkZWZpbmVkLCAiX19sZW5fXygpIiBpcyBjYWxsZWQsIGlmIGl0IGlzIGRlZmluZWQsIGFuZCAnCisgICAgICAgICAgICAgICAgICAndGhlIG9iamVjdCBpc1xuJworICAgICAgICAgICAgICAgICAgJyAgIGNvbnNpZGVyZWQgdHJ1ZSBpZiBpdHMgcmVzdWx0IGlzIG5vbnplcm8uICBJZiBhIGNsYXNzICcKKyAgICAgICAgICAgICAgICAgICdkZWZpbmVzXG4nCisgICAgICAgICAgICAgICAgICAnICAgbmVpdGhlciAiX19sZW5fXygpIiBub3IgIl9fYm9vbF9fKCkiLCBhbGwgaXRzIGluc3RhbmNlcyAnCisgICAgICAgICAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgICAgICAgICAnICAgY29uc2lkZXJlZCB0cnVlLlxuJywKKyAnZGVidWdnZXInOiAnXG4nCisgICAgICAgICAgICAgJyJwZGIiIC0tLSBUaGUgUHl0aG9uIERlYnVnZ2VyXG4nCisgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcqKlNvdXJjZSBjb2RlOioqIExpYi9wZGIucHlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBtb2R1bGUgInBkYiIgZGVmaW5lcyBhbiBpbnRlcmFjdGl2ZSBzb3VyY2UgY29kZSBkZWJ1Z2dlciAnCisgICAgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICAgICdQeXRob24gcHJvZ3JhbXMuICBJdCBzdXBwb3J0cyBzZXR0aW5nIChjb25kaXRpb25hbCkgYnJlYWtwb2ludHMgJworICAgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgICAnc2luZ2xlIHN0ZXBwaW5nIGF0IHRoZSBzb3VyY2UgbGluZSBsZXZlbCwgaW5zcGVjdGlvbiBvZiBzdGFjayAnCisgICAgICAgICAgICAgJ2ZyYW1lcyxcbicKKyAgICAgICAgICAgICAnc291cmNlIGNvZGUgbGlzdGluZywgYW5kIGV2YWx1YXRpb24gb2YgYXJiaXRyYXJ5IFB5dGhvbiBjb2RlIGluICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJ2NvbnRleHQgb2YgYW55IHN0YWNrIGZyYW1lLiAgSXQgYWxzbyBzdXBwb3J0cyBwb3N0LW1vcnRlbSAnCisgICAgICAgICAgICAgJ2RlYnVnZ2luZ1xuJworICAgICAgICAgICAgICdhbmQgY2FuIGJlIGNhbGxlZCB1bmRlciBwcm9ncmFtIGNvbnRyb2wuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgZGVidWdnZXIgaXMgZXh0ZW5zaWJsZSAtLSBpdCBpcyBhY3R1YWxseSBkZWZpbmVkIGFzIHRoZSAnCisgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgJyJQZGIiLiBUaGlzIGlzIGN1cnJlbnRseSB1bmRvY3VtZW50ZWQgYnV0IGVhc2lseSB1bmRlcnN0b29kIGJ5ICcKKyAgICAgICAgICAgICAncmVhZGluZ1xuJworICAgICAgICAgICAgICd0aGUgc291cmNlLiAgVGhlIGV4dGVuc2lvbiBpbnRlcmZhY2UgdXNlcyB0aGUgbW9kdWxlcyAiYmRiIiBhbmQgJworICAgICAgICAgICAgICciY21kIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBkZWJ1Z2dlclwncyBwcm9tcHQgaXMgIihQZGIpIi4gVHlwaWNhbCB1c2FnZSB0byBydW4gYSAnCisgICAgICAgICAgICAgJ3Byb2dyYW0gdW5kZXJcbicKKyAgICAgICAgICAgICAnY29udHJvbCBvZiB0aGUgZGVidWdnZXIgaXM6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICA+Pj4gaW1wb3J0IHBkYlxuJworICAgICAgICAgICAgICcgICA+Pj4gaW1wb3J0IG15bW9kdWxlXG4nCisgICAgICAgICAgICAgIiAgID4+PiBwZGIucnVuKCdteW1vZHVsZS50ZXN0KCknKVxuIgorICAgICAgICAgICAgICcgICA+IDxzdHJpbmc+KDApPygpXG4nCisgICAgICAgICAgICAgJyAgIChQZGIpIGNvbnRpbnVlXG4nCisgICAgICAgICAgICAgJyAgID4gPHN0cmluZz4oMSk/KClcbicKKyAgICAgICAgICAgICAnICAgKFBkYikgY29udGludWVcbicKKyAgICAgICAgICAgICAiICAgTmFtZUVycm9yOiAnc3BhbSdcbiIKKyAgICAgICAgICAgICAnICAgPiA8c3RyaW5nPigxKT8oKVxuJworICAgICAgICAgICAgICcgICAoUGRiKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMzogVGFiLWNvbXBsZXRpb24gdmlhIHRoZSAicmVhZGxpbmUiIG1vZHVsZSAnCisgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgJ2F2YWlsYWJsZSBmb3IgY29tbWFuZHMgYW5kIGNvbW1hbmQgYXJndW1lbnRzLCBlLmcuIHRoZSBjdXJyZW50ICcKKyAgICAgICAgICAgICAnZ2xvYmFsXG4nCisgICAgICAgICAgICAgJ2FuZCBsb2NhbCBuYW1lcyBhcmUgb2ZmZXJlZCBhcyBhcmd1bWVudHMgb2YgdGhlICJwIiBjb21tYW5kLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnInBkYi5weSIgY2FuIGFsc28gYmUgaW52b2tlZCBhcyBhIHNjcmlwdCB0byBkZWJ1ZyBvdGhlciAnCisgICAgICAgICAgICAgJ3NjcmlwdHMuICBGb3JcbicKKyAgICAgICAgICAgICAnZXhhbXBsZTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIHB5dGhvbjMgLW0gcGRiIG15c2NyaXB0LnB5XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdXaGVuIGludm9rZWQgYXMgYSBzY3JpcHQsIHBkYiB3aWxsIGF1dG9tYXRpY2FsbHkgZW50ZXIgJworICAgICAgICAgICAgICdwb3N0LW1vcnRlbVxuJworICAgICAgICAgICAgICdkZWJ1Z2dpbmcgaWYgdGhlIHByb2dyYW0gYmVpbmcgZGVidWdnZWQgZXhpdHMgYWJub3JtYWxseS4gIEFmdGVyICcKKyAgICAgICAgICAgICAncG9zdC1cbicKKyAgICAgICAgICAgICAnbW9ydGVtIGRlYnVnZ2luZyAob3IgYWZ0ZXIgbm9ybWFsIGV4aXQgb2YgdGhlIHByb2dyYW0pLCBwZGIgJworICAgICAgICAgICAgICd3aWxsXG4nCisgICAgICAgICAgICAgInJlc3RhcnQgdGhlIHByb2dyYW0uICBBdXRvbWF0aWMgcmVzdGFydGluZyBwcmVzZXJ2ZXMgcGRiJ3Mgc3RhdGUgIgorICAgICAgICAgICAgICcoc3VjaFxuJworICAgICAgICAgICAgICdhcyBicmVha3BvaW50cykgYW5kIGluIG1vc3QgY2FzZXMgaXMgbW9yZSB1c2VmdWwgdGhhbiBxdWl0dGluZyAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICJkZWJ1Z2dlciB1cG9uIHByb2dyYW0ncyBleGl0LlxuIgorICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTmV3IGluIHZlcnNpb24gMy4yOiAicGRiLnB5IiBub3cgYWNjZXB0cyBhICItYyIgb3B0aW9uIHRoYXQgJworICAgICAgICAgICAgICdleGVjdXRlc1xuJworICAgICAgICAgICAgICdjb21tYW5kcyBhcyBpZiBnaXZlbiBpbiBhICIucGRicmMiIGZpbGUsIHNlZSBEZWJ1Z2dlciBDb21tYW5kcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSB0eXBpY2FsIHVzYWdlIHRvIGJyZWFrIGludG8gdGhlIGRlYnVnZ2VyIGZyb20gYSBydW5uaW5nICcKKyAgICAgICAgICAgICAncHJvZ3JhbSBpc1xuJworICAgICAgICAgICAgICd0byBpbnNlcnRcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGltcG9ydCBwZGI7IHBkYi5zZXRfdHJhY2UoKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnYXQgdGhlIGxvY2F0aW9uIHlvdSB3YW50IHRvIGJyZWFrIGludG8gdGhlIGRlYnVnZ2VyLiAgWW91IGNhbiAnCisgICAgICAgICAgICAgJ3RoZW5cbicKKyAgICAgICAgICAgICAnc3RlcCB0aHJvdWdoIHRoZSBjb2RlIGZvbGxvd2luZyB0aGlzIHN0YXRlbWVudCwgYW5kIGNvbnRpbnVlICcKKyAgICAgICAgICAgICAncnVubmluZ1xuJworICAgICAgICAgICAgICd3aXRob3V0IHRoZSBkZWJ1Z2dlciB1c2luZyB0aGUgImNvbnRpbnVlIiBjb21tYW5kLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIHR5cGljYWwgdXNhZ2UgdG8gaW5zcGVjdCBhIGNyYXNoZWQgcHJvZ3JhbSBpczpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgID4+PiBpbXBvcnQgcGRiXG4nCisgICAgICAgICAgICAgJyAgID4+PiBpbXBvcnQgbXltb2R1bGVcbicKKyAgICAgICAgICAgICAnICAgPj4+IG15bW9kdWxlLnRlc3QoKVxuJworICAgICAgICAgICAgICcgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4nCisgICAgICAgICAgICAgJyAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gP1xuJworICAgICAgICAgICAgICcgICAgIEZpbGUgIi4vbXltb2R1bGUucHkiLCBsaW5lIDQsIGluIHRlc3RcbicKKyAgICAgICAgICAgICAnICAgICAgIHRlc3QyKClcbicKKyAgICAgICAgICAgICAnICAgICBGaWxlICIuL215bW9kdWxlLnB5IiwgbGluZSAzLCBpbiB0ZXN0MlxuJworICAgICAgICAgICAgICcgICAgICAgcHJpbnQoc3BhbSlcbicKKyAgICAgICAgICAgICAnICAgTmFtZUVycm9yOiBzcGFtXG4nCisgICAgICAgICAgICAgJyAgID4+PiBwZGIucG0oKVxuJworICAgICAgICAgICAgICcgICA+IC4vbXltb2R1bGUucHkoMyl0ZXN0MigpXG4nCisgICAgICAgICAgICAgJyAgIC0+IHByaW50KHNwYW0pXG4nCisgICAgICAgICAgICAgJyAgIChQZGIpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM7IGVhY2ggZW50ZXJzIHRoZSAnCisgICAgICAgICAgICAgJ2RlYnVnZ2VyXG4nCisgICAgICAgICAgICAgJ2luIGEgc2xpZ2h0bHkgZGlmZmVyZW50IHdheTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3BkYi5ydW4oc3RhdGVtZW50LCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRXhlY3V0ZSB0aGUgKnN0YXRlbWVudCogKGdpdmVuIGFzIGEgc3RyaW5nIG9yIGEgY29kZSBvYmplY3QpICcKKyAgICAgICAgICAgICAndW5kZXJcbicKKyAgICAgICAgICAgICAnICAgZGVidWdnZXIgY29udHJvbC4gIFRoZSBkZWJ1Z2dlciBwcm9tcHQgYXBwZWFycyBiZWZvcmUgYW55ICcKKyAgICAgICAgICAgICAnY29kZSBpc1xuJworICAgICAgICAgICAgICcgICBleGVjdXRlZDsgeW91IGNhbiBzZXQgYnJlYWtwb2ludHMgYW5kIHR5cGUgImNvbnRpbnVlIiwgb3IgeW91ICcKKyAgICAgICAgICAgICAnY2FuXG4nCisgICAgICAgICAgICAgJyAgIHN0ZXAgdGhyb3VnaCB0aGUgc3RhdGVtZW50IHVzaW5nICJzdGVwIiBvciAibmV4dCIgKGFsbCB0aGVzZVxuJworICAgICAgICAgICAgICcgICBjb21tYW5kcyBhcmUgZXhwbGFpbmVkIGJlbG93KS4gIFRoZSBvcHRpb25hbCAqZ2xvYmFscyogYW5kICcKKyAgICAgICAgICAgICAnKmxvY2FscypcbicKKyAgICAgICAgICAgICAnICAgYXJndW1lbnRzIHNwZWNpZnkgdGhlIGVudmlyb25tZW50IGluIHdoaWNoIHRoZSBjb2RlIGlzICcKKyAgICAgICAgICAgICAnZXhlY3V0ZWQ7IGJ5XG4nCisgICAgICAgICAgICAgJyAgIGRlZmF1bHQgdGhlIGRpY3Rpb25hcnkgb2YgdGhlIG1vZHVsZSAiX19tYWluX18iIGlzIHVzZWQuICAnCisgICAgICAgICAgICAgJyhTZWUgdGhlXG4nCisgICAgICAgICAgICAgJyAgIGV4cGxhbmF0aW9uIG9mIHRoZSBidWlsdC1pbiAiZXhlYygpIiBvciAiZXZhbCgpIiBmdW5jdGlvbnMuKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAncGRiLnJ1bmV2YWwoZXhwcmVzc2lvbiwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEV2YWx1YXRlIHRoZSAqZXhwcmVzc2lvbiogKGdpdmVuIGFzIGEgc3RyaW5nIG9yIGEgY29kZSAnCisgICAgICAgICAgICAgJ29iamVjdClcbicKKyAgICAgICAgICAgICAnICAgdW5kZXIgZGVidWdnZXIgY29udHJvbC4gIFdoZW4gInJ1bmV2YWwoKSIgcmV0dXJucywgaXQgcmV0dXJucyAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcgICB2YWx1ZSBvZiB0aGUgZXhwcmVzc2lvbi4gIE90aGVyd2lzZSB0aGlzIGZ1bmN0aW9uIGlzIHNpbWlsYXIgJworICAgICAgICAgICAgICd0b1xuJworICAgICAgICAgICAgICcgICAicnVuKCkiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAncGRiLnJ1bmNhbGwoZnVuY3Rpb24sICphcmdzLCAqKmt3ZHMpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBDYWxsIHRoZSAqZnVuY3Rpb24qIChhIGZ1bmN0aW9uIG9yIG1ldGhvZCBvYmplY3QsIG5vdCBhICcKKyAgICAgICAgICAgICAnc3RyaW5nKVxuJworICAgICAgICAgICAgICcgICB3aXRoIHRoZSBnaXZlbiBhcmd1bWVudHMuICBXaGVuICJydW5jYWxsKCkiIHJldHVybnMsIGl0ICcKKyAgICAgICAgICAgICAncmV0dXJuc1xuJworICAgICAgICAgICAgICcgICB3aGF0ZXZlciB0aGUgZnVuY3Rpb24gY2FsbCByZXR1cm5lZC4gIFRoZSBkZWJ1Z2dlciBwcm9tcHQgJworICAgICAgICAgICAgICdhcHBlYXJzXG4nCisgICAgICAgICAgICAgJyAgIGFzIHNvb24gYXMgdGhlIGZ1bmN0aW9uIGlzIGVudGVyZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdwZGIuc2V0X3RyYWNlKClcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEVudGVyIHRoZSBkZWJ1Z2dlciBhdCB0aGUgY2FsbGluZyBzdGFjayBmcmFtZS4gIFRoaXMgaXMgJworICAgICAgICAgICAgICd1c2VmdWwgdG9cbicKKyAgICAgICAgICAgICAnICAgaGFyZC1jb2RlIGEgYnJlYWtwb2ludCBhdCBhIGdpdmVuIHBvaW50IGluIGEgcHJvZ3JhbSwgZXZlbiBpZiAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcgICBjb2RlIGlzIG5vdCBvdGhlcndpc2UgYmVpbmcgZGVidWdnZWQgKGUuZy4gd2hlbiBhbiBhc3NlcnRpb25cbicKKyAgICAgICAgICAgICAnICAgZmFpbHMpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAncGRiLnBvc3RfbW9ydGVtKHRyYWNlYmFjaz1Ob25lKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRW50ZXIgcG9zdC1tb3J0ZW0gZGVidWdnaW5nIG9mIHRoZSBnaXZlbiAqdHJhY2ViYWNrKiBvYmplY3QuICAnCisgICAgICAgICAgICAgJ0lmIG5vXG4nCisgICAgICAgICAgICAgJyAgICp0cmFjZWJhY2sqIGlzIGdpdmVuLCBpdCB1c2VzIHRoZSBvbmUgb2YgdGhlIGV4Y2VwdGlvbiB0aGF0ICcKKyAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAnICAgY3VycmVudGx5IGJlaW5nIGhhbmRsZWQgKGFuIGV4Y2VwdGlvbiBtdXN0IGJlIGJlaW5nIGhhbmRsZWQgJworICAgICAgICAgICAgICdpZiB0aGVcbicKKyAgICAgICAgICAgICAnICAgZGVmYXVsdCBpcyB0byBiZSB1c2VkKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3BkYi5wbSgpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBFbnRlciBwb3N0LW1vcnRlbSBkZWJ1Z2dpbmcgb2YgdGhlIHRyYWNlYmFjayBmb3VuZCBpblxuJworICAgICAgICAgICAgICcgICAic3lzLmxhc3RfdHJhY2ViYWNrIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAicnVuKiIgZnVuY3Rpb25zIGFuZCAic2V0X3RyYWNlKCkiIGFyZSBhbGlhc2VzIGZvciAnCisgICAgICAgICAgICAgJ2luc3RhbnRpYXRpbmdcbicKKyAgICAgICAgICAgICAndGhlICJQZGIiIGNsYXNzIGFuZCBjYWxsaW5nIHRoZSBtZXRob2Qgb2YgdGhlIHNhbWUgbmFtZS4gIElmIHlvdSAnCisgICAgICAgICAgICAgJ3dhbnRcbicKKyAgICAgICAgICAgICAndG8gYWNjZXNzIGZ1cnRoZXIgZmVhdHVyZXMsIHlvdSBoYXZlIHRvIGRvIHRoaXMgeW91cnNlbGY6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICJjbGFzcyBwZGIuUGRiKGNvbXBsZXRla2V5PSd0YWInLCBzdGRpbj1Ob25lLCBzdGRvdXQ9Tm9uZSwgIgorICAgICAgICAgICAgICdza2lwPU5vbmUsIG5vc2lnaW50PUZhbHNlLCByZWFkcmM9VHJ1ZSlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICJQZGIiIGlzIHRoZSBkZWJ1Z2dlciBjbGFzcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFRoZSAqY29tcGxldGVrZXkqLCAqc3RkaW4qIGFuZCAqc3Rkb3V0KiBhcmd1bWVudHMgYXJlIHBhc3NlZCAnCisgICAgICAgICAgICAgJ3RvIHRoZVxuJworICAgICAgICAgICAgICcgICB1bmRlcmx5aW5nICJjbWQuQ21kIiBjbGFzczsgc2VlIHRoZSBkZXNjcmlwdGlvbiB0aGVyZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFRoZSAqc2tpcCogYXJndW1lbnQsIGlmIGdpdmVuLCBtdXN0IGJlIGFuIGl0ZXJhYmxlIG9mICcKKyAgICAgICAgICAgICAnZ2xvYi1zdHlsZVxuJworICAgICAgICAgICAgICcgICBtb2R1bGUgbmFtZSBwYXR0ZXJucy4gIFRoZSBkZWJ1Z2dlciB3aWxsIG5vdCBzdGVwIGludG8gZnJhbWVzICcKKyAgICAgICAgICAgICAndGhhdFxuJworICAgICAgICAgICAgICcgICBvcmlnaW5hdGUgaW4gYSBtb2R1bGUgdGhhdCBtYXRjaGVzIG9uZSBvZiB0aGVzZSBwYXR0ZXJucy4gJworICAgICAgICAgICAgICdbMV1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEJ5IGRlZmF1bHQsIFBkYiBzZXRzIGEgaGFuZGxlciBmb3IgdGhlIFNJR0lOVCBzaWduYWwgKHdoaWNoICcKKyAgICAgICAgICAgICAnaXMgc2VudFxuJworICAgICAgICAgICAgICcgICB3aGVuIHRoZSB1c2VyIHByZXNzZXMgIkN0cmwtQyIgb24gdGhlIGNvbnNvbGUpIHdoZW4geW91IGdpdmUgJworICAgICAgICAgICAgICdhXG4nCisgICAgICAgICAgICAgJyAgICJjb250aW51ZSIgY29tbWFuZC4gVGhpcyBhbGxvd3MgeW91IHRvIGJyZWFrIGludG8gdGhlICcKKyAgICAgICAgICAgICAnZGVidWdnZXJcbicKKyAgICAgICAgICAgICAnICAgYWdhaW4gYnkgcHJlc3NpbmcgIkN0cmwtQyIuICBJZiB5b3Ugd2FudCBQZGIgbm90IHRvIHRvdWNoICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyAgIFNJR0lOVCBoYW5kbGVyLCBzZXQgKm5vc2lnaW50KiB0byB0cnVlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgVGhlICpyZWFkcmMqIGFyZ3VtZW50IGRlZmF1bHRzIHRvIHRydWUgYW5kIGNvbnRyb2xzIHdoZXRoZXIgJworICAgICAgICAgICAgICdQZGJcbicKKyAgICAgICAgICAgICAnICAgd2lsbCBsb2FkIC5wZGJyYyBmaWxlcyBmcm9tIHRoZSBmaWxlc3lzdGVtLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRXhhbXBsZSBjYWxsIHRvIGVuYWJsZSB0cmFjaW5nIHdpdGggKnNraXAqOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAiICAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihza2lwPVsnZGphbmdvLionXSkuc2V0X3RyYWNlKClcbiIKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuMTogVGhlICpza2lwKiBhcmd1bWVudC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuMjogVGhlICpub3NpZ2ludCogYXJndW1lbnQuICBQcmV2aW91c2x5LCBhICcKKyAgICAgICAgICAgICAnU0lHSU5UXG4nCisgICAgICAgICAgICAgJyAgIGhhbmRsZXIgd2FzIG5ldmVyIHNldCBieSBQZGIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBDaGFuZ2VkIGluIHZlcnNpb24gMy42OiBUaGUgKnJlYWRyYyogYXJndW1lbnQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBydW4oc3RhdGVtZW50LCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lKVxuJworICAgICAgICAgICAgICcgICBydW5ldmFsKGV4cHJlc3Npb24sIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpXG4nCisgICAgICAgICAgICAgJyAgIHJ1bmNhbGwoZnVuY3Rpb24sICphcmdzLCAqKmt3ZHMpXG4nCisgICAgICAgICAgICAgJyAgIHNldF90cmFjZSgpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICBTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBmdW5jdGlvbnMgZXhwbGFpbmVkIGFib3ZlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0RlYnVnZ2VyIENvbW1hbmRzXG4nCisgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgY29tbWFuZHMgcmVjb2duaXplZCBieSB0aGUgZGVidWdnZXIgYXJlIGxpc3RlZCBiZWxvdy4gIE1vc3RcbicKKyAgICAgICAgICAgICAnY29tbWFuZHMgY2FuIGJlIGFiYnJldmlhdGVkIHRvIG9uZSBvciB0d28gbGV0dGVycyBhcyBpbmRpY2F0ZWQ7ICcKKyAgICAgICAgICAgICAnZS5nLlxuJworICAgICAgICAgICAgICciaChlbHApIiBtZWFucyB0aGF0IGVpdGhlciAiaCIgb3IgImhlbHAiIGNhbiBiZSB1c2VkIHRvIGVudGVyICcKKyAgICAgICAgICAgICAndGhlIGhlbHBcbicKKyAgICAgICAgICAgICAnY29tbWFuZCAoYnV0IG5vdCAiaGUiIG9yICJoZWwiLCBub3IgIkgiIG9yICJIZWxwIiBvciAiSEVMUCIpLlxuJworICAgICAgICAgICAgICdBcmd1bWVudHMgdG8gY29tbWFuZHMgbXVzdCBiZSBzZXBhcmF0ZWQgYnkgd2hpdGVzcGFjZSAoc3BhY2VzICcKKyAgICAgICAgICAgICAnb3JcbicKKyAgICAgICAgICAgICAndGFicykuICBPcHRpb25hbCBhcmd1bWVudHMgYXJlIGVuY2xvc2VkIGluIHNxdWFyZSBicmFja2V0cyAnCisgICAgICAgICAgICAgJygiW10iKSBpblxuJworICAgICAgICAgICAgICd0aGUgY29tbWFuZCBzeW50YXg7IHRoZSBzcXVhcmUgYnJhY2tldHMgbXVzdCBub3QgYmUgdHlwZWQuXG4nCisgICAgICAgICAgICAgJ0FsdGVybmF0aXZlcyBpbiB0aGUgY29tbWFuZCBzeW50YXggYXJlIHNlcGFyYXRlZCBieSBhIHZlcnRpY2FsICcKKyAgICAgICAgICAgICAnYmFyXG4nCisgICAgICAgICAgICAgJygifCIpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnRW50ZXJpbmcgYSBibGFuayBsaW5lIHJlcGVhdHMgdGhlIGxhc3QgY29tbWFuZCBlbnRlcmVkLiAgJworICAgICAgICAgICAgICdFeGNlcHRpb246IGlmXG4nCisgICAgICAgICAgICAgJ3RoZSBsYXN0IGNvbW1hbmQgd2FzIGEgImxpc3QiIGNvbW1hbmQsIHRoZSBuZXh0IDExIGxpbmVzIGFyZSAnCisgICAgICAgICAgICAgJ2xpc3RlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgIkNvbW1hbmRzIHRoYXQgdGhlIGRlYnVnZ2VyIGRvZXNuJ3QgcmVjb2duaXplIGFyZSBhc3N1bWVkIHRvIGJlICIKKyAgICAgICAgICAgICAnUHl0aG9uXG4nCisgICAgICAgICAgICAgJ3N0YXRlbWVudHMgYW5kIGFyZSBleGVjdXRlZCBpbiB0aGUgY29udGV4dCBvZiB0aGUgcHJvZ3JhbSBiZWluZ1xuJworICAgICAgICAgICAgICdkZWJ1Z2dlZC4gIFB5dGhvbiBzdGF0ZW1lbnRzIGNhbiBhbHNvIGJlIHByZWZpeGVkIHdpdGggYW4gJworICAgICAgICAgICAgICdleGNsYW1hdGlvblxuJworICAgICAgICAgICAgICdwb2ludCAoIiEiKS4gIFRoaXMgaXMgYSBwb3dlcmZ1bCB3YXkgdG8gaW5zcGVjdCB0aGUgcHJvZ3JhbSAnCisgICAgICAgICAgICAgJ2JlaW5nXG4nCisgICAgICAgICAgICAgJ2RlYnVnZ2VkOyBpdCBpcyBldmVuIHBvc3NpYmxlIHRvIGNoYW5nZSBhIHZhcmlhYmxlIG9yIGNhbGwgYSAnCisgICAgICAgICAgICAgJ2Z1bmN0aW9uLlxuJworICAgICAgICAgICAgICdXaGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnMgaW4gc3VjaCBhIHN0YXRlbWVudCwgdGhlIGV4Y2VwdGlvbiBuYW1lICcKKyAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAicHJpbnRlZCBidXQgdGhlIGRlYnVnZ2VyJ3Mgc3RhdGUgaXMgbm90IGNoYW5nZWQuXG4iCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgZGVidWdnZXIgc3VwcG9ydHMgYWxpYXNlcy4gIEFsaWFzZXMgY2FuIGhhdmUgcGFyYW1ldGVycyAnCisgICAgICAgICAgICAgJ3doaWNoXG4nCisgICAgICAgICAgICAgJ2FsbG93cyBvbmUgYSBjZXJ0YWluIGxldmVsIG9mIGFkYXB0YWJpbGl0eSB0byB0aGUgY29udGV4dCB1bmRlclxuJworICAgICAgICAgICAgICdleGFtaW5hdGlvbi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ011bHRpcGxlIGNvbW1hbmRzIG1heSBiZSBlbnRlcmVkIG9uIGEgc2luZ2xlIGxpbmUsIHNlcGFyYXRlZCBieSAnCisgICAgICAgICAgICAgJyI7OyIuXG4nCisgICAgICAgICAgICAgJyhBIHNpbmdsZSAiOyIgaXMgbm90IHVzZWQgYXMgaXQgaXMgdGhlIHNlcGFyYXRvciBmb3IgbXVsdGlwbGUgJworICAgICAgICAgICAgICdjb21tYW5kc1xuJworICAgICAgICAgICAgICdpbiBhIGxpbmUgdGhhdCBpcyBwYXNzZWQgdG8gdGhlIFB5dGhvbiBwYXJzZXIuKSAgTm8gaW50ZWxsaWdlbmNlICcKKyAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAnYXBwbGllZCB0byBzZXBhcmF0aW5nIHRoZSBjb21tYW5kczsgdGhlIGlucHV0IGlzIHNwbGl0IGF0IHRoZSAnCisgICAgICAgICAgICAgJ2ZpcnN0XG4nCisgICAgICAgICAgICAgJyI7OyIgcGFpciwgZXZlbiBpZiBpdCBpcyBpbiB0aGUgbWlkZGxlIG9mIGEgcXVvdGVkIHN0cmluZy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0lmIGEgZmlsZSAiLnBkYnJjIiBleGlzdHMgaW4gdGhlIHVzZXJcJ3MgaG9tZSBkaXJlY3Rvcnkgb3IgaW4gJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnY3VycmVudCBkaXJlY3RvcnksIGl0IGlzIHJlYWQgaW4gYW5kIGV4ZWN1dGVkIGFzIGlmIGl0IGhhZCBiZWVuICcKKyAgICAgICAgICAgICAndHlwZWRcbicKKyAgICAgICAgICAgICAnYXQgdGhlIGRlYnVnZ2VyIHByb21wdC4gIFRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3IgJworICAgICAgICAgICAgICdhbGlhc2VzLiAgSWZcbicKKyAgICAgICAgICAgICAnYm90aCBmaWxlcyBleGlzdCwgdGhlIG9uZSBpbiB0aGUgaG9tZSBkaXJlY3RvcnkgaXMgcmVhZCBmaXJzdCAnCisgICAgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICAgICdhbGlhc2VzIGRlZmluZWQgdGhlcmUgY2FuIGJlIG92ZXJyaWRkZW4gYnkgdGhlIGxvY2FsIGZpbGUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdDaGFuZ2VkIGluIHZlcnNpb24gMy4yOiAiLnBkYnJjIiBjYW4gbm93IGNvbnRhaW4gY29tbWFuZHMgdGhhdFxuJworICAgICAgICAgICAgICdjb250aW51ZSBkZWJ1Z2dpbmcsIHN1Y2ggYXMgImNvbnRpbnVlIiBvciAibmV4dCIuICBQcmV2aW91c2x5LCAnCisgICAgICAgICAgICAgJ3RoZXNlXG4nCisgICAgICAgICAgICAgJ2NvbW1hbmRzIGhhZCBubyBlZmZlY3QuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdoKGVscCkgW2NvbW1hbmRdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBXaXRob3V0IGFyZ3VtZW50LCBwcmludCB0aGUgbGlzdCBvZiBhdmFpbGFibGUgY29tbWFuZHMuICBXaXRoICcKKyAgICAgICAgICAgICAnYVxuJworICAgICAgICAgICAgICcgICAqY29tbWFuZCogYXMgYXJndW1lbnQsIHByaW50IGhlbHAgYWJvdXQgdGhhdCBjb21tYW5kLiAgImhlbHAgJworICAgICAgICAgICAgICdwZGIiXG4nCisgICAgICAgICAgICAgJyAgIGRpc3BsYXlzIHRoZSBmdWxsIGRvY3VtZW50YXRpb24gKHRoZSBkb2NzdHJpbmcgb2YgdGhlICJwZGIiXG4nCisgICAgICAgICAgICAgJyAgIG1vZHVsZSkuICBTaW5jZSB0aGUgKmNvbW1hbmQqIGFyZ3VtZW50IG11c3QgYmUgYW4gaWRlbnRpZmllciwgJworICAgICAgICAgICAgICciaGVscFxuJworICAgICAgICAgICAgICcgICBleGVjIiBtdXN0IGJlIGVudGVyZWQgdG8gZ2V0IGhlbHAgb24gdGhlICIhIiBjb21tYW5kLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAndyhoZXJlKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgUHJpbnQgYSBzdGFjayB0cmFjZSwgd2l0aCB0aGUgbW9zdCByZWNlbnQgZnJhbWUgYXQgdGhlICcKKyAgICAgICAgICAgICAnYm90dG9tLiAgQW5cbicKKyAgICAgICAgICAgICAnICAgYXJyb3cgaW5kaWNhdGVzIHRoZSBjdXJyZW50IGZyYW1lLCB3aGljaCBkZXRlcm1pbmVzIHRoZSAnCisgICAgICAgICAgICAgJ2NvbnRleHQgb2ZcbicKKyAgICAgICAgICAgICAnICAgbW9zdCBjb21tYW5kcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2Qob3duKSBbY291bnRdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBNb3ZlIHRoZSBjdXJyZW50IGZyYW1lICpjb3VudCogKGRlZmF1bHQgb25lKSBsZXZlbHMgZG93biBpbiAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcgICBzdGFjayB0cmFjZSAodG8gYSBuZXdlciBmcmFtZSkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICd1KHApIFtjb3VudF1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE1vdmUgdGhlIGN1cnJlbnQgZnJhbWUgKmNvdW50KiAoZGVmYXVsdCBvbmUpIGxldmVscyB1cCBpbiB0aGUgJworICAgICAgICAgICAgICdzdGFja1xuJworICAgICAgICAgICAgICcgICB0cmFjZSAodG8gYW4gb2xkZXIgZnJhbWUpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnYihyZWFrKSBbKFtmaWxlbmFtZTpdbGluZW5vIHwgZnVuY3Rpb24pIFssIGNvbmRpdGlvbl1dXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBXaXRoIGEgKmxpbmVubyogYXJndW1lbnQsIHNldCBhIGJyZWFrIHRoZXJlIGluIHRoZSBjdXJyZW50ICcKKyAgICAgICAgICAgICAnZmlsZS5cbicKKyAgICAgICAgICAgICAnICAgV2l0aCBhICpmdW5jdGlvbiogYXJndW1lbnQsIHNldCBhIGJyZWFrIGF0IHRoZSBmaXJzdCAnCisgICAgICAgICAgICAgJ2V4ZWN1dGFibGVcbicKKyAgICAgICAgICAgICAnICAgc3RhdGVtZW50IHdpdGhpbiB0aGF0IGZ1bmN0aW9uLiAgVGhlIGxpbmUgbnVtYmVyIG1heSBiZSAnCisgICAgICAgICAgICAgJ3ByZWZpeGVkXG4nCisgICAgICAgICAgICAgJyAgIHdpdGggYSBmaWxlbmFtZSBhbmQgYSBjb2xvbiwgdG8gc3BlY2lmeSBhIGJyZWFrcG9pbnQgaW4gJworICAgICAgICAgICAgICdhbm90aGVyXG4nCisgICAgICAgICAgICAgIiAgIGZpbGUgKHByb2JhYmx5IG9uZSB0aGF0IGhhc24ndCBiZWVuIGxvYWRlZCB5ZXQpLiAgVGhlIGZpbGUgIgorICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICcgICBzZWFyY2hlZCBvbiAic3lzLnBhdGgiLiAgTm90ZSB0aGF0IGVhY2ggYnJlYWtwb2ludCBpcyAnCisgICAgICAgICAgICAgJ2Fzc2lnbmVkIGFcbicKKyAgICAgICAgICAgICAnICAgbnVtYmVyIHRvIHdoaWNoIGFsbCB0aGUgb3RoZXIgYnJlYWtwb2ludCBjb21tYW5kcyByZWZlci5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIElmIGEgc2Vjb25kIGFyZ3VtZW50IGlzIHByZXNlbnQsIGl0IGlzIGFuIGV4cHJlc3Npb24gd2hpY2ggJworICAgICAgICAgICAgICdtdXN0XG4nCisgICAgICAgICAgICAgJyAgIGV2YWx1YXRlIHRvIHRydWUgYmVmb3JlIHRoZSBicmVha3BvaW50IGlzIGhvbm9yZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBXaXRob3V0IGFyZ3VtZW50LCBsaXN0IGFsbCBicmVha3MsIGluY2x1ZGluZyBmb3IgZWFjaCAnCisgICAgICAgICAgICAgJ2JyZWFrcG9pbnQsXG4nCisgICAgICAgICAgICAgJyAgIHRoZSBudW1iZXIgb2YgdGltZXMgdGhhdCBicmVha3BvaW50IGhhcyBiZWVuIGhpdCwgdGhlICcKKyAgICAgICAgICAgICAnY3VycmVudFxuJworICAgICAgICAgICAgICcgICBpZ25vcmUgY291bnQsIGFuZCB0aGUgYXNzb2NpYXRlZCBjb25kaXRpb24gaWYgYW55LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAndGJyZWFrIFsoW2ZpbGVuYW1lOl1saW5lbm8gfCBmdW5jdGlvbikgWywgY29uZGl0aW9uXV1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFRlbXBvcmFyeSBicmVha3BvaW50LCB3aGljaCBpcyByZW1vdmVkIGF1dG9tYXRpY2FsbHkgd2hlbiBpdCAnCisgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgJyAgIGZpcnN0IGhpdC4gVGhlIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgZm9yICJicmVhayIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdjbChlYXIpIFtmaWxlbmFtZTpsaW5lbm8gfCBicG51bWJlciBbYnBudW1iZXIgLi4uXV1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFdpdGggYSAqZmlsZW5hbWU6bGluZW5vKiBhcmd1bWVudCwgY2xlYXIgYWxsIHRoZSBicmVha3BvaW50cyAnCisgICAgICAgICAgICAgJ2F0XG4nCisgICAgICAgICAgICAgJyAgIHRoaXMgbGluZS4gV2l0aCBhIHNwYWNlIHNlcGFyYXRlZCBsaXN0IG9mIGJyZWFrcG9pbnQgbnVtYmVycywgJworICAgICAgICAgICAgICdjbGVhclxuJworICAgICAgICAgICAgICcgICB0aG9zZSBicmVha3BvaW50cy4gV2l0aG91dCBhcmd1bWVudCwgY2xlYXIgYWxsIGJyZWFrcyAoYnV0ICcKKyAgICAgICAgICAgICAnZmlyc3RcbicKKyAgICAgICAgICAgICAnICAgYXNrIGNvbmZpcm1hdGlvbikuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdkaXNhYmxlIFticG51bWJlciBbYnBudW1iZXIgLi4uXV1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIERpc2FibGUgdGhlIGJyZWFrcG9pbnRzIGdpdmVuIGFzIGEgc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2ZcbicKKyAgICAgICAgICAgICAnICAgYnJlYWtwb2ludCBudW1iZXJzLiAgRGlzYWJsaW5nIGEgYnJlYWtwb2ludCBtZWFucyBpdCBjYW5ub3QgJworICAgICAgICAgICAgICdjYXVzZVxuJworICAgICAgICAgICAgICcgICB0aGUgcHJvZ3JhbSB0byBzdG9wIGV4ZWN1dGlvbiwgYnV0IHVubGlrZSBjbGVhcmluZyBhICcKKyAgICAgICAgICAgICAnYnJlYWtwb2ludCwgaXRcbicKKyAgICAgICAgICAgICAnICAgcmVtYWlucyBpbiB0aGUgbGlzdCBvZiBicmVha3BvaW50cyBhbmQgY2FuIGJlIChyZS0pZW5hYmxlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2VuYWJsZSBbYnBudW1iZXIgW2JwbnVtYmVyIC4uLl1dXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBFbmFibGUgdGhlIGJyZWFrcG9pbnRzIHNwZWNpZmllZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2lnbm9yZSBicG51bWJlciBbY291bnRdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBTZXQgdGhlIGlnbm9yZSBjb3VudCBmb3IgdGhlIGdpdmVuIGJyZWFrcG9pbnQgbnVtYmVyLiAgSWYgJworICAgICAgICAgICAgICdjb3VudCBpc1xuJworICAgICAgICAgICAgICcgICBvbWl0dGVkLCB0aGUgaWdub3JlIGNvdW50IGlzIHNldCB0byAwLiAgQSBicmVha3BvaW50IGJlY29tZXMgJworICAgICAgICAgICAgICdhY3RpdmVcbicKKyAgICAgICAgICAgICAnICAgd2hlbiB0aGUgaWdub3JlIGNvdW50IGlzIHplcm8uICBXaGVuIG5vbi16ZXJvLCB0aGUgY291bnQgaXNcbicKKyAgICAgICAgICAgICAnICAgZGVjcmVtZW50ZWQgZWFjaCB0aW1lIHRoZSBicmVha3BvaW50IGlzIHJlYWNoZWQgYW5kIHRoZSAnCisgICAgICAgICAgICAgJ2JyZWFrcG9pbnRcbicKKyAgICAgICAgICAgICAnICAgaXMgbm90IGRpc2FibGVkIGFuZCBhbnkgYXNzb2NpYXRlZCBjb25kaXRpb24gZXZhbHVhdGVzIHRvICcKKyAgICAgICAgICAgICAndHJ1ZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2NvbmRpdGlvbiBicG51bWJlciBbY29uZGl0aW9uXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgU2V0IGEgbmV3ICpjb25kaXRpb24qIGZvciB0aGUgYnJlYWtwb2ludCwgYW4gZXhwcmVzc2lvbiB3aGljaCAnCisgICAgICAgICAgICAgJ211c3RcbicKKyAgICAgICAgICAgICAnICAgZXZhbHVhdGUgdG8gdHJ1ZSBiZWZvcmUgdGhlIGJyZWFrcG9pbnQgaXMgaG9ub3JlZC4gIElmICcKKyAgICAgICAgICAgICAnKmNvbmRpdGlvbipcbicKKyAgICAgICAgICAgICAnICAgaXMgYWJzZW50LCBhbnkgZXhpc3RpbmcgY29uZGl0aW9uIGlzIHJlbW92ZWQ7IGkuZS4sIHRoZSAnCisgICAgICAgICAgICAgJ2JyZWFrcG9pbnRcbicKKyAgICAgICAgICAgICAnICAgaXMgbWFkZSB1bmNvbmRpdGlvbmFsLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnY29tbWFuZHMgW2JwbnVtYmVyXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgU3BlY2lmeSBhIGxpc3Qgb2YgY29tbWFuZHMgZm9yIGJyZWFrcG9pbnQgbnVtYmVyICpicG51bWJlciouICAnCisgICAgICAgICAgICAgJ1RoZVxuJworICAgICAgICAgICAgICcgICBjb21tYW5kcyB0aGVtc2VsdmVzIGFwcGVhciBvbiB0aGUgZm9sbG93aW5nIGxpbmVzLiAgVHlwZSBhICcKKyAgICAgICAgICAgICAnbGluZVxuJworICAgICAgICAgICAgICcgICBjb250YWluaW5nIGp1c3QgImVuZCIgdG8gdGVybWluYXRlIHRoZSBjb21tYW5kcy4gQW4gZXhhbXBsZTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgIChQZGIpIGNvbW1hbmRzIDFcbicKKyAgICAgICAgICAgICAnICAgICAgKGNvbSkgcCBzb21lX3ZhcmlhYmxlXG4nCisgICAgICAgICAgICAgJyAgICAgIChjb20pIGVuZFxuJworICAgICAgICAgICAgICcgICAgICAoUGRiKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgVG8gcmVtb3ZlIGFsbCBjb21tYW5kcyBmcm9tIGEgYnJlYWtwb2ludCwgdHlwZSBjb21tYW5kcyBhbmQgJworICAgICAgICAgICAgICdmb2xsb3dcbicKKyAgICAgICAgICAgICAnICAgaXQgaW1tZWRpYXRlbHkgd2l0aCAiZW5kIjsgdGhhdCBpcywgZ2l2ZSBubyBjb21tYW5kcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFdpdGggbm8gKmJwbnVtYmVyKiBhcmd1bWVudCwgY29tbWFuZHMgcmVmZXJzIHRvIHRoZSBsYXN0ICcKKyAgICAgICAgICAgICAnYnJlYWtwb2ludFxuJworICAgICAgICAgICAgICcgICBzZXQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBZb3UgY2FuIHVzZSBicmVha3BvaW50IGNvbW1hbmRzIHRvIHN0YXJ0IHlvdXIgcHJvZ3JhbSB1cCAnCisgICAgICAgICAgICAgJ2FnYWluLlxuJworICAgICAgICAgICAgICcgICBTaW1wbHkgdXNlIHRoZSBjb250aW51ZSBjb21tYW5kLCBvciBzdGVwLCBvciBhbnkgb3RoZXIgJworICAgICAgICAgICAgICdjb21tYW5kIHRoYXRcbicKKyAgICAgICAgICAgICAnICAgcmVzdW1lcyBleGVjdXRpb24uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBTcGVjaWZ5aW5nIGFueSBjb21tYW5kIHJlc3VtaW5nIGV4ZWN1dGlvbiAoY3VycmVudGx5ICcKKyAgICAgICAgICAgICAnY29udGludWUsXG4nCisgICAgICAgICAgICAgJyAgIHN0ZXAsIG5leHQsIHJldHVybiwganVtcCwgcXVpdCBhbmQgdGhlaXIgYWJicmV2aWF0aW9ucykgJworICAgICAgICAgICAgICd0ZXJtaW5hdGVzXG4nCisgICAgICAgICAgICAgJyAgIHRoZSBjb21tYW5kIGxpc3QgKGFzIGlmIHRoYXQgY29tbWFuZCB3YXMgaW1tZWRpYXRlbHkgZm9sbG93ZWQgJworICAgICAgICAgICAgICdieVxuJworICAgICAgICAgICAgICcgICBlbmQpLiBUaGlzIGlzIGJlY2F1c2UgYW55IHRpbWUgeW91IHJlc3VtZSBleGVjdXRpb24gKGV2ZW4gJworICAgICAgICAgICAgICd3aXRoIGFcbicKKyAgICAgICAgICAgICAnICAgc2ltcGxlIG5leHQgb3Igc3RlcCksIHlvdSBtYXkgZW5jb3VudGVyIGFub3RoZXIgJworICAgICAgICAgICAgICdicmVha3BvaW504oCUd2hpY2hcbicKKyAgICAgICAgICAgICAnICAgY291bGQgaGF2ZSBpdHMgb3duIGNvbW1hbmQgbGlzdCwgbGVhZGluZyB0byBhbWJpZ3VpdGllcyBhYm91dCAnCisgICAgICAgICAgICAgJ3doaWNoXG4nCisgICAgICAgICAgICAgJyAgIGxpc3QgdG8gZXhlY3V0ZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgIiAgIElmIHlvdSB1c2UgdGhlICdzaWxlbnQnIGNvbW1hbmQgaW4gdGhlIGNvbW1hbmQgbGlzdCwgdGhlICIKKyAgICAgICAgICAgICAndXN1YWxcbicKKyAgICAgICAgICAgICAnICAgbWVzc2FnZSBhYm91dCBzdG9wcGluZyBhdCBhIGJyZWFrcG9pbnQgaXMgbm90IHByaW50ZWQuICBUaGlzICcKKyAgICAgICAgICAgICAnbWF5IGJlXG4nCisgICAgICAgICAgICAgJyAgIGRlc2lyYWJsZSBmb3IgYnJlYWtwb2ludHMgdGhhdCBhcmUgdG8gcHJpbnQgYSBzcGVjaWZpYyAnCisgICAgICAgICAgICAgJ21lc3NhZ2UgYW5kXG4nCisgICAgICAgICAgICAgJyAgIHRoZW4gY29udGludWUuICBJZiBub25lIG9mIHRoZSBvdGhlciBjb21tYW5kcyBwcmludCBhbnl0aGluZywgJworICAgICAgICAgICAgICd5b3VcbicKKyAgICAgICAgICAgICAnICAgc2VlIG5vIHNpZ24gdGhhdCB0aGUgYnJlYWtwb2ludCB3YXMgcmVhY2hlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3ModGVwKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRXhlY3V0ZSB0aGUgY3VycmVudCBsaW5lLCBzdG9wIGF0IHRoZSBmaXJzdCBwb3NzaWJsZSAnCisgICAgICAgICAgICAgJ29jY2FzaW9uXG4nCisgICAgICAgICAgICAgJyAgIChlaXRoZXIgaW4gYSBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCBvciBvbiB0aGUgbmV4dCBsaW5lIGluICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyAgIGN1cnJlbnQgZnVuY3Rpb24pLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnbihleHQpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBDb250aW51ZSBleGVjdXRpb24gdW50aWwgdGhlIG5leHQgbGluZSBpbiB0aGUgY3VycmVudCAnCisgICAgICAgICAgICAgJ2Z1bmN0aW9uIGlzXG4nCisgICAgICAgICAgICAgJyAgIHJlYWNoZWQgb3IgaXQgcmV0dXJucy4gIChUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuICJuZXh0IiBhbmQgJworICAgICAgICAgICAgICcic3RlcCJcbicKKyAgICAgICAgICAgICAnICAgaXMgdGhhdCAic3RlcCIgc3RvcHMgaW5zaWRlIGEgY2FsbGVkIGZ1bmN0aW9uLCB3aGlsZSAibmV4dCJcbicKKyAgICAgICAgICAgICAnICAgZXhlY3V0ZXMgY2FsbGVkIGZ1bmN0aW9ucyBhdCAobmVhcmx5KSBmdWxsIHNwZWVkLCBvbmx5ICcKKyAgICAgICAgICAgICAnc3RvcHBpbmcgYXRcbicKKyAgICAgICAgICAgICAnICAgdGhlIG5leHQgbGluZSBpbiB0aGUgY3VycmVudCBmdW5jdGlvbi4pXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICd1bnQoaWwpIFtsaW5lbm9dXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBXaXRob3V0IGFyZ3VtZW50LCBjb250aW51ZSBleGVjdXRpb24gdW50aWwgdGhlIGxpbmUgd2l0aCBhICcKKyAgICAgICAgICAgICAnbnVtYmVyXG4nCisgICAgICAgICAgICAgJyAgIGdyZWF0ZXIgdGhhbiB0aGUgY3VycmVudCBvbmUgaXMgcmVhY2hlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFdpdGggYSBsaW5lIG51bWJlciwgY29udGludWUgZXhlY3V0aW9uIHVudGlsIGEgbGluZSB3aXRoIGEgJworICAgICAgICAgICAgICdudW1iZXJcbicKKyAgICAgICAgICAgICAnICAgZ3JlYXRlciBvciBlcXVhbCB0byB0aGF0IGlzIHJlYWNoZWQuICBJbiBib3RoIGNhc2VzLCBhbHNvICcKKyAgICAgICAgICAgICAnc3RvcCB3aGVuXG4nCisgICAgICAgICAgICAgJyAgIHRoZSBjdXJyZW50IGZyYW1lIHJldHVybnMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBDaGFuZ2VkIGluIHZlcnNpb24gMy4yOiBBbGxvdyBnaXZpbmcgYW4gZXhwbGljaXQgbGluZSAnCisgICAgICAgICAgICAgJ251bWJlci5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3IoZXR1cm4pXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBDb250aW51ZSBleGVjdXRpb24gdW50aWwgdGhlIGN1cnJlbnQgZnVuY3Rpb24gcmV0dXJucy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2Mob250KGludWUpKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgQ29udGludWUgZXhlY3V0aW9uLCBvbmx5IHN0b3Agd2hlbiBhIGJyZWFrcG9pbnQgaXMgJworICAgICAgICAgICAgICdlbmNvdW50ZXJlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2oodW1wKSBsaW5lbm9cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFNldCB0aGUgbmV4dCBsaW5lIHRoYXQgd2lsbCBiZSBleGVjdXRlZC4gIE9ubHkgYXZhaWxhYmxlIGluICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyAgIGJvdHRvbS1tb3N0IGZyYW1lLiAgVGhpcyBsZXRzIHlvdSBqdW1wIGJhY2sgYW5kIGV4ZWN1dGUgY29kZSAnCisgICAgICAgICAgICAgJ2FnYWluLFxuJworICAgICAgICAgICAgICIgICBvciBqdW1wIGZvcndhcmQgdG8gc2tpcCBjb2RlIHRoYXQgeW91IGRvbid0IHdhbnQgdG8gcnVuLlxuIgorICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgSXQgc2hvdWxkIGJlIG5vdGVkIHRoYXQgbm90IGFsbCBqdW1wcyBhcmUgYWxsb3dlZCAtLSBmb3IgJworICAgICAgICAgICAgICdpbnN0YW5jZVxuJworICAgICAgICAgICAgICcgICBpdCBpcyBub3QgcG9zc2libGUgdG8ganVtcCBpbnRvIHRoZSBtaWRkbGUgb2YgYSAiZm9yIiBsb29wIG9yICcKKyAgICAgICAgICAgICAnb3V0XG4nCisgICAgICAgICAgICAgJyAgIG9mIGEgImZpbmFsbHkiIGNsYXVzZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2woaXN0KSBbZmlyc3RbLCBsYXN0XV1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIExpc3Qgc291cmNlIGNvZGUgZm9yIHRoZSBjdXJyZW50IGZpbGUuICBXaXRob3V0IGFyZ3VtZW50cywgJworICAgICAgICAgICAgICdsaXN0IDExXG4nCisgICAgICAgICAgICAgJyAgIGxpbmVzIGFyb3VuZCB0aGUgY3VycmVudCBsaW5lIG9yIGNvbnRpbnVlIHRoZSBwcmV2aW91cyAnCisgICAgICAgICAgICAgJ2xpc3RpbmcuXG4nCisgICAgICAgICAgICAgJyAgIFdpdGggIi4iIGFzIGFyZ3VtZW50LCBsaXN0IDExIGxpbmVzIGFyb3VuZCB0aGUgY3VycmVudCBsaW5lLiAgJworICAgICAgICAgICAgICdXaXRoXG4nCisgICAgICAgICAgICAgJyAgIG9uZSBhcmd1bWVudCwgbGlzdCAxMSBsaW5lcyBhcm91bmQgYXQgdGhhdCBsaW5lLiAgV2l0aCB0d29cbicKKyAgICAgICAgICAgICAnICAgYXJndW1lbnRzLCBsaXN0IHRoZSBnaXZlbiByYW5nZTsgaWYgdGhlIHNlY29uZCBhcmd1bWVudCBpcyAnCisgICAgICAgICAgICAgJ2xlc3NcbicKKyAgICAgICAgICAgICAnICAgdGhhbiB0aGUgZmlyc3QsIGl0IGlzIGludGVycHJldGVkIGFzIGEgY291bnQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBUaGUgY3VycmVudCBsaW5lIGluIHRoZSBjdXJyZW50IGZyYW1lIGlzIGluZGljYXRlZCBieSAiLT4iLiAgJworICAgICAgICAgICAgICdJZiBhblxuJworICAgICAgICAgICAgICcgICBleGNlcHRpb24gaXMgYmVpbmcgZGVidWdnZWQsIHRoZSBsaW5lIHdoZXJlIHRoZSBleGNlcHRpb24gJworICAgICAgICAgICAgICd3YXNcbicKKyAgICAgICAgICAgICAnICAgb3JpZ2luYWxseSByYWlzZWQgb3IgcHJvcGFnYXRlZCBpcyBpbmRpY2F0ZWQgYnkgIj4+IiwgaWYgaXQgJworICAgICAgICAgICAgICdkaWZmZXJzXG4nCisgICAgICAgICAgICAgJyAgIGZyb20gdGhlIGN1cnJlbnQgbGluZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuMjogVGhlICI+PiIgbWFya2VyLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnbGwgfCBsb25nbGlzdFxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTGlzdCBhbGwgc291cmNlIGNvZGUgZm9yIHRoZSBjdXJyZW50IGZ1bmN0aW9uIG9yIGZyYW1lLlxuJworICAgICAgICAgICAgICcgICBJbnRlcmVzdGluZyBsaW5lcyBhcmUgbWFya2VkIGFzIGZvciAibGlzdCIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAzLjIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdhKHJncylcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFByaW50IHRoZSBhcmd1bWVudCBsaXN0IG9mIHRoZSBjdXJyZW50IGZ1bmN0aW9uLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAncCBleHByZXNzaW9uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBFdmFsdWF0ZSB0aGUgKmV4cHJlc3Npb24qIGluIHRoZSBjdXJyZW50IGNvbnRleHQgYW5kIHByaW50ICcKKyAgICAgICAgICAgICAnaXRzXG4nCisgICAgICAgICAgICAgJyAgIHZhbHVlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTm90ZTogInByaW50KCkiIGNhbiBhbHNvIGJlIHVzZWQsIGJ1dCBpcyBub3QgYSBkZWJ1Z2dlciAnCisgICAgICAgICAgICAgJ2NvbW1hbmRcbicKKyAgICAgICAgICAgICAnICAgICAtLS0gdGhpcyBleGVjdXRlcyB0aGUgUHl0aG9uICJwcmludCgpIiBmdW5jdGlvbi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3BwIGV4cHJlc3Npb25cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIExpa2UgdGhlICJwIiBjb21tYW5kLCBleGNlcHQgdGhlIHZhbHVlIG9mIHRoZSBleHByZXNzaW9uIGlzICcKKyAgICAgICAgICAgICAncHJldHR5LVxuJworICAgICAgICAgICAgICcgICBwcmludGVkIHVzaW5nIHRoZSAicHByaW50IiBtb2R1bGUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICd3aGF0aXMgZXhwcmVzc2lvblxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgUHJpbnQgdGhlIHR5cGUgb2YgdGhlICpleHByZXNzaW9uKi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3NvdXJjZSBleHByZXNzaW9uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBUcnkgdG8gZ2V0IHNvdXJjZSBjb2RlIGZvciB0aGUgZ2l2ZW4gb2JqZWN0IGFuZCBkaXNwbGF5IGl0LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMy4yLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnZGlzcGxheSBbZXhwcmVzc2lvbl1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIERpc3BsYXkgdGhlIHZhbHVlIG9mIHRoZSBleHByZXNzaW9uIGlmIGl0IGNoYW5nZWQsIGVhY2ggdGltZVxuJworICAgICAgICAgICAgICcgICBleGVjdXRpb24gc3RvcHMgaW4gdGhlIGN1cnJlbnQgZnJhbWUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBXaXRob3V0IGV4cHJlc3Npb24sIGxpc3QgYWxsIGRpc3BsYXkgZXhwcmVzc2lvbnMgZm9yIHRoZSAnCisgICAgICAgICAgICAgJ2N1cnJlbnRcbicKKyAgICAgICAgICAgICAnICAgZnJhbWUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAzLjIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICd1bmRpc3BsYXkgW2V4cHJlc3Npb25dXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBEbyBub3QgZGlzcGxheSB0aGUgZXhwcmVzc2lvbiBhbnkgbW9yZSBpbiB0aGUgY3VycmVudCBmcmFtZS5cbicKKyAgICAgICAgICAgICAnICAgV2l0aG91dCBleHByZXNzaW9uLCBjbGVhciBhbGwgZGlzcGxheSBleHByZXNzaW9ucyBmb3IgdGhlICcKKyAgICAgICAgICAgICAnY3VycmVudFxuJworICAgICAgICAgICAgICcgICBmcmFtZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2ludGVyYWN0XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBTdGFydCBhbiBpbnRlcmFjdGl2ZSBpbnRlcnByZXRlciAodXNpbmcgdGhlICJjb2RlIiBtb2R1bGUpICcKKyAgICAgICAgICAgICAnd2hvc2VcbicKKyAgICAgICAgICAgICAnICAgZ2xvYmFsIG5hbWVzcGFjZSBjb250YWlucyBhbGwgdGhlIChnbG9iYWwgYW5kIGxvY2FsKSBuYW1lcyAnCisgICAgICAgICAgICAgJ2ZvdW5kIGluXG4nCisgICAgICAgICAgICAgJyAgIHRoZSBjdXJyZW50IHNjb3BlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMy4yLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnYWxpYXMgW25hbWUgW2NvbW1hbmRdXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgQ3JlYXRlIGFuIGFsaWFzIGNhbGxlZCAqbmFtZSogdGhhdCBleGVjdXRlcyAqY29tbWFuZCouICBUaGUgJworICAgICAgICAgICAgICdjb21tYW5kXG4nCisgICAgICAgICAgICAgJyAgIG11c3QgKm5vdCogYmUgZW5jbG9zZWQgaW4gcXVvdGVzLiAgUmVwbGFjZWFibGUgcGFyYW1ldGVycyBjYW4gJworICAgICAgICAgICAgICdiZVxuJworICAgICAgICAgICAgICcgICBpbmRpY2F0ZWQgYnkgIiUxIiwgIiUyIiwgYW5kIHNvIG9uLCB3aGlsZSAiJSoiIGlzIHJlcGxhY2VkIGJ5ICcKKyAgICAgICAgICAgICAnYWxsXG4nCisgICAgICAgICAgICAgJyAgIHRoZSBwYXJhbWV0ZXJzLiBJZiBubyBjb21tYW5kIGlzIGdpdmVuLCB0aGUgY3VycmVudCBhbGlhcyAnCisgICAgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICAgICcgICAqbmFtZSogaXMgc2hvd24uIElmIG5vIGFyZ3VtZW50cyBhcmUgZ2l2ZW4sIGFsbCBhbGlhc2VzIGFyZSAnCisgICAgICAgICAgICAgJ2xpc3RlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEFsaWFzZXMgbWF5IGJlIG5lc3RlZCBhbmQgY2FuIGNvbnRhaW4gYW55dGhpbmcgdGhhdCBjYW4gYmUgJworICAgICAgICAgICAgICdsZWdhbGx5XG4nCisgICAgICAgICAgICAgJyAgIHR5cGVkIGF0IHRoZSBwZGIgcHJvbXB0LiAgTm90ZSB0aGF0IGludGVybmFsIHBkYiBjb21tYW5kcyAnCisgICAgICAgICAgICAgJypjYW4qIGJlXG4nCisgICAgICAgICAgICAgJyAgIG92ZXJyaWRkZW4gYnkgYWxpYXNlcy4gIFN1Y2ggYSBjb21tYW5kIGlzIHRoZW4gaGlkZGVuIHVudGlsICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyAgIGFsaWFzIGlzIHJlbW92ZWQuICBBbGlhc2luZyBpcyByZWN1cnNpdmVseSBhcHBsaWVkIHRvIHRoZSAnCisgICAgICAgICAgICAgJ2ZpcnN0XG4nCisgICAgICAgICAgICAgJyAgIHdvcmQgb2YgdGhlIGNvbW1hbmQgbGluZTsgYWxsIG90aGVyIHdvcmRzIGluIHRoZSBsaW5lIGFyZSAnCisgICAgICAgICAgICAgJ2xlZnRcbicKKyAgICAgICAgICAgICAnICAgYWxvbmUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBBcyBhbiBleGFtcGxlLCBoZXJlIGFyZSB0d28gdXNlZnVsIGFsaWFzZXMgKGVzcGVjaWFsbHkgd2hlbiAnCisgICAgICAgICAgICAgJ3BsYWNlZFxuJworICAgICAgICAgICAgICcgICBpbiB0aGUgIi5wZGJyYyIgZmlsZSk6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICAjIFByaW50IGluc3RhbmNlIHZhcmlhYmxlcyAodXNhZ2UgInBpIGNsYXNzSW5zdCIpXG4nCisgICAgICAgICAgICAgJyAgICAgIGFsaWFzIHBpIGZvciBrIGluICUxLl9fZGljdF9fLmtleXMoKTogJworICAgICAgICAgICAgICdwcmludCgiJTEuIixrLCI9IiwlMS5fX2RpY3RfX1trXSlcbicKKyAgICAgICAgICAgICAnICAgICAgIyBQcmludCBpbnN0YW5jZSB2YXJpYWJsZXMgaW4gc2VsZlxuJworICAgICAgICAgICAgICcgICAgICBhbGlhcyBwcyBwaSBzZWxmXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICd1bmFsaWFzIG5hbWVcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIERlbGV0ZSB0aGUgc3BlY2lmaWVkIGFsaWFzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnISBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEV4ZWN1dGUgdGhlIChvbmUtbGluZSkgKnN0YXRlbWVudCogaW4gdGhlIGNvbnRleHQgb2YgdGhlICcKKyAgICAgICAgICAgICAnY3VycmVudFxuJworICAgICAgICAgICAgICcgICBzdGFjayBmcmFtZS4gVGhlIGV4Y2xhbWF0aW9uIHBvaW50IGNhbiBiZSBvbWl0dGVkIHVubGVzcyB0aGUgJworICAgICAgICAgICAgICdmaXJzdFxuJworICAgICAgICAgICAgICcgICB3b3JkIG9mIHRoZSBzdGF0ZW1lbnQgcmVzZW1ibGVzIGEgZGVidWdnZXIgY29tbWFuZC4gIFRvIHNldCAnCisgICAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgICAnICAgZ2xvYmFsIHZhcmlhYmxlLCB5b3UgY2FuIHByZWZpeCB0aGUgYXNzaWdubWVudCBjb21tYW5kIHdpdGggJworICAgICAgICAgICAgICdhXG4nCisgICAgICAgICAgICAgJyAgICJnbG9iYWwiIHN0YXRlbWVudCBvbiB0aGUgc2FtZSBsaW5lLCBlLmcuOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAiICAgICAgKFBkYikgZ2xvYmFsIGxpc3Rfb3B0aW9uczsgbGlzdF9vcHRpb25zID0gWyctbCddXG4iCisgICAgICAgICAgICAgJyAgICAgIChQZGIpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdydW4gW2FyZ3MgLi4uXVxuJworICAgICAgICAgICAgICdyZXN0YXJ0IFthcmdzIC4uLl1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFJlc3RhcnQgdGhlIGRlYnVnZ2VkIFB5dGhvbiBwcm9ncmFtLiAgSWYgYW4gYXJndW1lbnQgaXMgJworICAgICAgICAgICAgICdzdXBwbGllZCxcbicKKyAgICAgICAgICAgICAnICAgaXQgaXMgc3BsaXQgd2l0aCAic2hsZXgiIGFuZCB0aGUgcmVzdWx0IGlzIHVzZWQgYXMgdGhlIG5ld1xuJworICAgICAgICAgICAgICcgICAic3lzLmFyZ3YiLiBIaXN0b3J5LCBicmVha3BvaW50cywgYWN0aW9ucyBhbmQgZGVidWdnZXIgJworICAgICAgICAgICAgICdvcHRpb25zIGFyZVxuJworICAgICAgICAgICAgICcgICBwcmVzZXJ2ZWQuICJyZXN0YXJ0IiBpcyBhbiBhbGlhcyBmb3IgInJ1biIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdxKHVpdClcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFF1aXQgZnJvbSB0aGUgZGVidWdnZXIuICBUaGUgcHJvZ3JhbSBiZWluZyBleGVjdXRlZCBpcyAnCisgICAgICAgICAgICAgJ2Fib3J0ZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICctWyBGb290bm90ZXMgXS1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1sxXSBXaGV0aGVyIGEgZnJhbWUgaXMgY29uc2lkZXJlZCB0byBvcmlnaW5hdGUgaW4gYSBjZXJ0YWluICcKKyAgICAgICAgICAgICAnbW9kdWxlXG4nCisgICAgICAgICAgICAgJyAgICBpcyBkZXRlcm1pbmVkIGJ5IHRoZSAiX19uYW1lX18iIGluIHRoZSBmcmFtZSBnbG9iYWxzLlxuJywKKyAnZGVsJzogJ1xuJworICAgICAgICAnVGhlICJkZWwiIHN0YXRlbWVudFxuJworICAgICAgICAnKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAnXG4nCisgICAgICAgICcgICBkZWxfc3RtdCA6Oj0gImRlbCIgdGFyZ2V0X2xpc3RcbicKKyAgICAgICAgJ1xuJworICAgICAgICAnRGVsZXRpb24gaXMgcmVjdXJzaXZlbHkgZGVmaW5lZCB2ZXJ5IHNpbWlsYXIgdG8gdGhlIHdheSBhc3NpZ25tZW50ICcKKyAgICAgICAgJ2lzXG4nCisgICAgICAgICdkZWZpbmVkLiBSYXRoZXIgdGhhbiBzcGVsbGluZyBpdCBvdXQgaW4gZnVsbCBkZXRhaWxzLCBoZXJlIGFyZSBzb21lXG4nCisgICAgICAgICdoaW50cy5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnRGVsZXRpb24gb2YgYSB0YXJnZXQgbGlzdCByZWN1cnNpdmVseSBkZWxldGVzIGVhY2ggdGFyZ2V0LCBmcm9tIGxlZnRcbicKKyAgICAgICAgJ3RvIHJpZ2h0LlxuJworICAgICAgICAnXG4nCisgICAgICAgICdEZWxldGlvbiBvZiBhIG5hbWUgcmVtb3ZlcyB0aGUgYmluZGluZyBvZiB0aGF0IG5hbWUgZnJvbSB0aGUgbG9jYWwgJworICAgICAgICAnb3JcbicKKyAgICAgICAgJ2dsb2JhbCBuYW1lc3BhY2UsIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBuYW1lIG9jY3VycyBpbiBhICJnbG9iYWwiXG4nCisgICAgICAgICdzdGF0ZW1lbnQgaW4gdGhlIHNhbWUgY29kZSBibG9jay4gIElmIHRoZSBuYW1lIGlzIHVuYm91bmQsIGFcbicKKyAgICAgICAgJyJOYW1lRXJyb3IiIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZC5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnRGVsZXRpb24gb2YgYXR0cmlidXRlIHJlZmVyZW5jZXMsIHN1YnNjcmlwdGlvbnMgYW5kIHNsaWNpbmdzIGlzICcKKyAgICAgICAgJ3Bhc3NlZFxuJworICAgICAgICAndG8gdGhlIHByaW1hcnkgb2JqZWN0IGludm9sdmVkOyBkZWxldGlvbiBvZiBhIHNsaWNpbmcgaXMgaW4gZ2VuZXJhbFxuJworICAgICAgICAnZXF1aXZhbGVudCB0byBhc3NpZ25tZW50IG9mIGFuIGVtcHR5IHNsaWNlIG9mIHRoZSByaWdodCB0eXBlIChidXQgJworICAgICAgICAnZXZlblxuJworICAgICAgICAndGhpcyBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBzbGljZWQgb2JqZWN0KS5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMjogUHJldmlvdXNseSBpdCB3YXMgaWxsZWdhbCB0byBkZWxldGUgYSBuYW1lXG4nCisgICAgICAgICdmcm9tIHRoZSBsb2NhbCBuYW1lc3BhY2UgaWYgaXQgb2NjdXJzIGFzIGEgZnJlZSB2YXJpYWJsZSBpbiBhIG5lc3RlZFxuJworICAgICAgICAnYmxvY2suXG4nLAorICdkaWN0JzogJ1xuJworICAgICAgICAgJ0RpY3Rpb25hcnkgZGlzcGxheXNcbicKKyAgICAgICAgICcqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnQSBkaWN0aW9uYXJ5IGRpc3BsYXkgaXMgYSBwb3NzaWJseSBlbXB0eSBzZXJpZXMgb2Yga2V5L2RhdHVtIHBhaXJzXG4nCisgICAgICAgICAnZW5jbG9zZWQgaW4gY3VybHkgYnJhY2VzOlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJyAgIGRpY3RfZGlzcGxheSAgICAgICA6Oj0gInsiIFtrZXlfZGF0dW1fbGlzdCB8IGRpY3RfY29tcHJlaGVuc2lvbl0gJworICAgICAgICAgJyJ9IlxuJworICAgICAgICAgJyAgIGtleV9kYXR1bV9saXN0ICAgICA6Oj0ga2V5X2RhdHVtICgiLCIga2V5X2RhdHVtKSogWyIsIl1cbicKKyAgICAgICAgICcgICBrZXlfZGF0dW0gICAgICAgICAgOjo9IGV4cHJlc3Npb24gIjoiIGV4cHJlc3Npb24gfCAiKioiIG9yX2V4cHJcbicKKyAgICAgICAgICcgICBkaWN0X2NvbXByZWhlbnNpb24gOjo9IGV4cHJlc3Npb24gIjoiIGV4cHJlc3Npb24gY29tcF9mb3JcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdBIGRpY3Rpb25hcnkgZGlzcGxheSB5aWVsZHMgYSBuZXcgZGljdGlvbmFyeSBvYmplY3QuXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnSWYgYSBjb21tYS1zZXBhcmF0ZWQgc2VxdWVuY2Ugb2Yga2V5L2RhdHVtIHBhaXJzIGlzIGdpdmVuLCB0aGV5IGFyZVxuJworICAgICAgICAgJ2V2YWx1YXRlZCBmcm9tIGxlZnQgdG8gcmlnaHQgdG8gZGVmaW5lIHRoZSBlbnRyaWVzIG9mIHRoZSAnCisgICAgICAgICAnZGljdGlvbmFyeTpcbicKKyAgICAgICAgICdlYWNoIGtleSBvYmplY3QgaXMgdXNlZCBhcyBhIGtleSBpbnRvIHRoZSBkaWN0aW9uYXJ5IHRvIHN0b3JlIHRoZVxuJworICAgICAgICAgJ2NvcnJlc3BvbmRpbmcgZGF0dW0uICBUaGlzIG1lYW5zIHRoYXQgeW91IGNhbiBzcGVjaWZ5IHRoZSBzYW1lIGtleVxuJworICAgICAgICAgIm11bHRpcGxlIHRpbWVzIGluIHRoZSBrZXkvZGF0dW0gbGlzdCwgYW5kIHRoZSBmaW5hbCBkaWN0aW9uYXJ5J3MgIgorICAgICAgICAgJ3ZhbHVlXG4nCisgICAgICAgICAnZm9yIHRoYXQga2V5IHdpbGwgYmUgdGhlIGxhc3Qgb25lIGdpdmVuLlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJ0EgZG91YmxlIGFzdGVyaXNrICIqKiIgZGVub3RlcyAqZGljdGlvbmFyeSB1bnBhY2tpbmcqLiBJdHMgb3BlcmFuZFxuJworICAgICAgICAgJ211c3QgYmUgYSAqbWFwcGluZyouICBFYWNoIG1hcHBpbmcgaXRlbSBpcyBhZGRlZCB0byB0aGUgbmV3XG4nCisgICAgICAgICAnZGljdGlvbmFyeS4gIExhdGVyIHZhbHVlcyByZXBsYWNlIHZhbHVlcyBhbHJlYWR5IHNldCBieSBlYXJsaWVyXG4nCisgICAgICAgICAna2V5L2RhdHVtIHBhaXJzIGFuZCBlYXJsaWVyIGRpY3Rpb25hcnkgdW5wYWNraW5ncy5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdOZXcgaW4gdmVyc2lvbiAzLjU6IFVucGFja2luZyBpbnRvIGRpY3Rpb25hcnkgZGlzcGxheXMsIG9yaWdpbmFsbHlcbicKKyAgICAgICAgICdwcm9wb3NlZCBieSAqKlBFUCA0NDgqKi5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdBIGRpY3QgY29tcHJlaGVuc2lvbiwgaW4gY29udHJhc3QgdG8gbGlzdCBhbmQgc2V0IGNvbXByZWhlbnNpb25zLFxuJworICAgICAgICAgJ25lZWRzIHR3byBleHByZXNzaW9ucyBzZXBhcmF0ZWQgd2l0aCBhIGNvbG9uIGZvbGxvd2VkIGJ5IHRoZSB1c3VhbFxuJworICAgICAgICAgJyJmb3IiIGFuZCAiaWYiIGNsYXVzZXMuIFdoZW4gdGhlIGNvbXByZWhlbnNpb24gaXMgcnVuLCB0aGUgJworICAgICAgICAgJ3Jlc3VsdGluZ1xuJworICAgICAgICAgJ2tleSBhbmQgdmFsdWUgZWxlbWVudHMgYXJlIGluc2VydGVkIGluIHRoZSBuZXcgZGljdGlvbmFyeSBpbiB0aGUgJworICAgICAgICAgJ29yZGVyXG4nCisgICAgICAgICAndGhleSBhcmUgcHJvZHVjZWQuXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnUmVzdHJpY3Rpb25zIG9uIHRoZSB0eXBlcyBvZiB0aGUga2V5IHZhbHVlcyBhcmUgbGlzdGVkIGVhcmxpZXIgaW5cbicKKyAgICAgICAgICdzZWN0aW9uIFRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeS4gIChUbyBzdW1tYXJpemUsIHRoZSBrZXkgdHlwZVxuJworICAgICAgICAgJ3Nob3VsZCBiZSAqaGFzaGFibGUqLCB3aGljaCBleGNsdWRlcyBhbGwgbXV0YWJsZSBvYmplY3RzLikgIENsYXNoZXNcbicKKyAgICAgICAgICdiZXR3ZWVuIGR1cGxpY2F0ZSBrZXlzIGFyZSBub3QgZGV0ZWN0ZWQ7IHRoZSBsYXN0IGRhdHVtICh0ZXh0dWFsbHlcbicKKyAgICAgICAgICdyaWdodG1vc3QgaW4gdGhlIGRpc3BsYXkpIHN0b3JlZCBmb3IgYSBnaXZlbiBrZXkgdmFsdWUgcHJldmFpbHMuXG4nLAorICdkeW5hbWljLWZlYXR1cmVzJzogJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ0ludGVyYWN0aW9uIHdpdGggZHluYW1pYyBmZWF0dXJlc1xuJworICAgICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ05hbWUgcmVzb2x1dGlvbiBvZiBmcmVlIHZhcmlhYmxlcyBvY2N1cnMgYXQgcnVudGltZSwgbm90ICcKKyAgICAgICAgICAgICAgICAgICAgICdhdCBjb21waWxlXG4nCisgICAgICAgICAgICAgICAgICAgICAndGltZS4gVGhpcyBtZWFucyB0aGF0IHRoZSBmb2xsb3dpbmcgY29kZSB3aWxsIHByaW50IDQyOlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGkgPSAxMFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGRlZiBmKCk6XG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgICAgIHByaW50KGkpXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgaSA9IDQyXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgZigpXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnVGhlcmUgYXJlIHNldmVyYWwgY2FzZXMgd2hlcmUgUHl0aG9uIHN0YXRlbWVudHMgYXJlICcKKyAgICAgICAgICAgICAgICAgICAgICdpbGxlZ2FsIHdoZW4gdXNlZFxuJworICAgICAgICAgICAgICAgICAgICAgJ2luIGNvbmp1bmN0aW9uIHdpdGggbmVzdGVkIHNjb3BlcyB0aGF0IGNvbnRhaW4gZnJlZSAnCisgICAgICAgICAgICAgICAgICAgICAndmFyaWFibGVzLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ0lmIGEgdmFyaWFibGUgaXMgcmVmZXJlbmNlZCBpbiBhbiBlbmNsb3Npbmcgc2NvcGUsIGl0IGlzICcKKyAgICAgICAgICAgICAgICAgICAgICdpbGxlZ2FsIHRvXG4nCisgICAgICAgICAgICAgICAgICAgICAnZGVsZXRlIHRoZSBuYW1lLiAgQW4gZXJyb3Igd2lsbCBiZSByZXBvcnRlZCBhdCBjb21waWxlICcKKyAgICAgICAgICAgICAgICAgICAgICd0aW1lLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1RoZSAiZXZhbCgpIiBhbmQgImV4ZWMoKSIgZnVuY3Rpb25zIGRvIG5vdCBoYXZlIGFjY2VzcyAnCisgICAgICAgICAgICAgICAgICAgICAndG8gdGhlIGZ1bGxcbicKKyAgICAgICAgICAgICAgICAgICAgICdlbnZpcm9ubWVudCBmb3IgcmVzb2x2aW5nIG5hbWVzLiAgTmFtZXMgbWF5IGJlIHJlc29sdmVkICcKKyAgICAgICAgICAgICAgICAgICAgICdpbiB0aGUgbG9jYWxcbicKKyAgICAgICAgICAgICAgICAgICAgICdhbmQgZ2xvYmFsIG5hbWVzcGFjZXMgb2YgdGhlIGNhbGxlci4gIEZyZWUgdmFyaWFibGVzIGFyZSAnCisgICAgICAgICAgICAgICAgICAgICAnbm90IHJlc29sdmVkXG4nCisgICAgICAgICAgICAgICAgICAgICAnaW4gdGhlIG5lYXJlc3QgZW5jbG9zaW5nIG5hbWVzcGFjZSwgYnV0IGluIHRoZSBnbG9iYWwgJworICAgICAgICAgICAgICAgICAgICAgJ25hbWVzcGFjZS4gIFsxXVxuJworICAgICAgICAgICAgICAgICAgICAgJ1RoZSAiZXhlYygpIiBhbmQgImV2YWwoKSIgZnVuY3Rpb25zIGhhdmUgb3B0aW9uYWwgJworICAgICAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50cyB0b1xuJworICAgICAgICAgICAgICAgICAgICAgJ292ZXJyaWRlIHRoZSBnbG9iYWwgYW5kIGxvY2FsIG5hbWVzcGFjZS4gIElmIG9ubHkgb25lICcKKyAgICAgICAgICAgICAgICAgICAgICduYW1lc3BhY2UgaXNcbicKKyAgICAgICAgICAgICAgICAgICAgICdzcGVjaWZpZWQsIGl0IGlzIHVzZWQgZm9yIGJvdGguXG4nLAorICdlbHNlJzogJ1xuJworICAgICAgICAgJ1RoZSAiaWYiIHN0YXRlbWVudFxuJworICAgICAgICAgJyoqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJ1RoZSAiaWYiIHN0YXRlbWVudCBpcyB1c2VkIGZvciBjb25kaXRpb25hbCBleGVjdXRpb246XG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnICAgaWZfc3RtdCA6Oj0gImlmIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuJworICAgICAgICAgJyAgICAgICAgICAgICAgICggImVsaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlICkqXG4nCisgICAgICAgICAnICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnSXQgc2VsZWN0cyBleGFjdGx5IG9uZSBvZiB0aGUgc3VpdGVzIGJ5IGV2YWx1YXRpbmcgdGhlIGV4cHJlc3Npb25zICcKKyAgICAgICAgICdvbmVcbicKKyAgICAgICAgICdieSBvbmUgdW50aWwgb25lIGlzIGZvdW5kIHRvIGJlIHRydWUgKHNlZSBzZWN0aW9uIEJvb2xlYW4gJworICAgICAgICAgJ29wZXJhdGlvbnNcbicKKyAgICAgICAgICdmb3IgdGhlIGRlZmluaXRpb24gb2YgdHJ1ZSBhbmQgZmFsc2UpOyB0aGVuIHRoYXQgc3VpdGUgaXMgZXhlY3V0ZWRcbicKKyAgICAgICAgICcoYW5kIG5vIG90aGVyIHBhcnQgb2YgdGhlICJpZiIgc3RhdGVtZW50IGlzIGV4ZWN1dGVkIG9yIGV2YWx1YXRlZCkuXG4nCisgICAgICAgICAnSWYgYWxsIGV4cHJlc3Npb25zIGFyZSBmYWxzZSwgdGhlIHN1aXRlIG9mIHRoZSAiZWxzZSIgY2xhdXNlLCBpZlxuJworICAgICAgICAgJ3ByZXNlbnQsIGlzIGV4ZWN1dGVkLlxuJywKKyAnZXhjZXB0aW9ucyc6ICdcbicKKyAgICAgICAgICAgICAgICdFeGNlcHRpb25zXG4nCisgICAgICAgICAgICAgICAnKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ0V4Y2VwdGlvbnMgYXJlIGEgbWVhbnMgb2YgYnJlYWtpbmcgb3V0IG9mIHRoZSBub3JtYWwgZmxvdyBvZiAnCisgICAgICAgICAgICAgICAnY29udHJvbFxuJworICAgICAgICAgICAgICAgJ29mIGEgY29kZSBibG9jayBpbiBvcmRlciB0byBoYW5kbGUgZXJyb3JzIG9yIG90aGVyICcKKyAgICAgICAgICAgICAgICdleGNlcHRpb25hbFxuJworICAgICAgICAgICAgICAgJ2NvbmRpdGlvbnMuICBBbiBleGNlcHRpb24gaXMgKnJhaXNlZCogYXQgdGhlIHBvaW50IHdoZXJlIHRoZSAnCisgICAgICAgICAgICAgICAnZXJyb3IgaXNcbicKKyAgICAgICAgICAgICAgICdkZXRlY3RlZDsgaXQgbWF5IGJlICpoYW5kbGVkKiBieSB0aGUgc3Vycm91bmRpbmcgY29kZSBibG9jayBvciAnCisgICAgICAgICAgICAgICAnYnkgYW55XG4nCisgICAgICAgICAgICAgICAnY29kZSBibG9jayB0aGF0IGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgaW52b2tlZCB0aGUgY29kZSBibG9jayAnCisgICAgICAgICAgICAgICAnd2hlcmVcbicKKyAgICAgICAgICAgICAgICd0aGUgZXJyb3Igb2NjdXJyZWQuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnVGhlIFB5dGhvbiBpbnRlcnByZXRlciByYWlzZXMgYW4gZXhjZXB0aW9uIHdoZW4gaXQgZGV0ZWN0cyBhICcKKyAgICAgICAgICAgICAgICdydW4tdGltZVxuJworICAgICAgICAgICAgICAgJ2Vycm9yIChzdWNoIGFzIGRpdmlzaW9uIGJ5IHplcm8pLiAgQSBQeXRob24gcHJvZ3JhbSBjYW4gYWxzb1xuJworICAgICAgICAgICAgICAgJ2V4cGxpY2l0bHkgcmFpc2UgYW4gZXhjZXB0aW9uIHdpdGggdGhlICJyYWlzZSIgc3RhdGVtZW50LiAnCisgICAgICAgICAgICAgICAnRXhjZXB0aW9uXG4nCisgICAgICAgICAgICAgICAnaGFuZGxlcnMgYXJlIHNwZWNpZmllZCB3aXRoIHRoZSAidHJ5IiAuLi4gImV4Y2VwdCIgc3RhdGVtZW50LiAgJworICAgICAgICAgICAgICAgJ1RoZVxuJworICAgICAgICAgICAgICAgJyJmaW5hbGx5IiBjbGF1c2Ugb2Ygc3VjaCBhIHN0YXRlbWVudCBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5ICcKKyAgICAgICAgICAgICAgICdjbGVhbnVwXG4nCisgICAgICAgICAgICAgICAnY29kZSB3aGljaCBkb2VzIG5vdCBoYW5kbGUgdGhlIGV4Y2VwdGlvbiwgYnV0IGlzIGV4ZWN1dGVkICcKKyAgICAgICAgICAgICAgICd3aGV0aGVyIGFuXG4nCisgICAgICAgICAgICAgICAnZXhjZXB0aW9uIG9jY3VycmVkIG9yIG5vdCBpbiB0aGUgcHJlY2VkaW5nIGNvZGUuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnUHl0aG9uIHVzZXMgdGhlICJ0ZXJtaW5hdGlvbiIgbW9kZWwgb2YgZXJyb3IgaGFuZGxpbmc6IGFuICcKKyAgICAgICAgICAgICAgICdleGNlcHRpb25cbicKKyAgICAgICAgICAgICAgICdoYW5kbGVyIGNhbiBmaW5kIG91dCB3aGF0IGhhcHBlbmVkIGFuZCBjb250aW51ZSBleGVjdXRpb24gYXQgJworICAgICAgICAgICAgICAgJ2FuIG91dGVyXG4nCisgICAgICAgICAgICAgICAnbGV2ZWwsIGJ1dCBpdCBjYW5ub3QgcmVwYWlyIHRoZSBjYXVzZSBvZiB0aGUgZXJyb3IgYW5kIHJldHJ5ICcKKyAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICdmYWlsaW5nIG9wZXJhdGlvbiAoZXhjZXB0IGJ5IHJlLWVudGVyaW5nIHRoZSBvZmZlbmRpbmcgcGllY2UgJworICAgICAgICAgICAgICAgJ29mIGNvZGVcbicKKyAgICAgICAgICAgICAgICdmcm9tIHRoZSB0b3ApLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ1doZW4gYW4gZXhjZXB0aW9uIGlzIG5vdCBoYW5kbGVkIGF0IGFsbCwgdGhlIGludGVycHJldGVyICcKKyAgICAgICAgICAgICAgICd0ZXJtaW5hdGVzXG4nCisgICAgICAgICAgICAgICAnZXhlY3V0aW9uIG9mIHRoZSBwcm9ncmFtLCBvciByZXR1cm5zIHRvIGl0cyBpbnRlcmFjdGl2ZSBtYWluICcKKyAgICAgICAgICAgICAgICdsb29wLiAgSW5cbicKKyAgICAgICAgICAgICAgICdlaXRoZXIgY2FzZSwgaXQgcHJpbnRzIGEgc3RhY2sgYmFja3RyYWNlLCBleGNlcHQgd2hlbiB0aGUgJworICAgICAgICAgICAgICAgJ2V4Y2VwdGlvbiBpc1xuJworICAgICAgICAgICAgICAgJyJTeXN0ZW1FeGl0Ii5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdFeGNlcHRpb25zIGFyZSBpZGVudGlmaWVkIGJ5IGNsYXNzIGluc3RhbmNlcy4gIFRoZSAiZXhjZXB0IiAnCisgICAgICAgICAgICAgICAnY2xhdXNlIGlzXG4nCisgICAgICAgICAgICAgICAnc2VsZWN0ZWQgZGVwZW5kaW5nIG9uIHRoZSBjbGFzcyBvZiB0aGUgaW5zdGFuY2U6IGl0IG11c3QgJworICAgICAgICAgICAgICAgJ3JlZmVyZW5jZSB0aGVcbicKKyAgICAgICAgICAgICAgICdjbGFzcyBvZiB0aGUgaW5zdGFuY2Ugb3IgYSBiYXNlIGNsYXNzIHRoZXJlb2YuICBUaGUgaW5zdGFuY2UgJworICAgICAgICAgICAgICAgJ2NhbiBiZVxuJworICAgICAgICAgICAgICAgJ3JlY2VpdmVkIGJ5IHRoZSBoYW5kbGVyIGFuZCBjYW4gY2FycnkgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiAnCisgICAgICAgICAgICAgICAnYWJvdXQgdGhlXG4nCisgICAgICAgICAgICAgICAnZXhjZXB0aW9uYWwgY29uZGl0aW9uLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ05vdGU6IEV4Y2VwdGlvbiBtZXNzYWdlcyBhcmUgbm90IHBhcnQgb2YgdGhlIFB5dGhvbiBBUEkuICAnCisgICAgICAgICAgICAgICAnVGhlaXJcbicKKyAgICAgICAgICAgICAgICcgIGNvbnRlbnRzIG1heSBjaGFuZ2UgZnJvbSBvbmUgdmVyc2lvbiBvZiBQeXRob24gdG8gdGhlIG5leHQgJworICAgICAgICAgICAgICAgJ3dpdGhvdXRcbicKKyAgICAgICAgICAgICAgICcgIHdhcm5pbmcgYW5kIHNob3VsZCBub3QgYmUgcmVsaWVkIG9uIGJ5IGNvZGUgd2hpY2ggd2lsbCBydW4gJworICAgICAgICAgICAgICAgJ3VuZGVyXG4nCisgICAgICAgICAgICAgICAnICBtdWx0aXBsZSB2ZXJzaW9ucyBvZiB0aGUgaW50ZXJwcmV0ZXIuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnU2VlIGFsc28gdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSAidHJ5IiBzdGF0ZW1lbnQgaW4gc2VjdGlvbiBUaGUgJworICAgICAgICAgICAgICAgJ3RyeVxuJworICAgICAgICAgICAgICAgJ3N0YXRlbWVudCBhbmQgInJhaXNlIiBzdGF0ZW1lbnQgaW4gc2VjdGlvbiBUaGUgcmFpc2UgJworICAgICAgICAgICAgICAgJ3N0YXRlbWVudC5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICctWyBGb290bm90ZXMgXS1cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdbMV0gVGhpcyBsaW1pdGF0aW9uIG9jY3VycyBiZWNhdXNlIHRoZSBjb2RlIHRoYXQgaXMgZXhlY3V0ZWQgJworICAgICAgICAgICAgICAgJ2J5XG4nCisgICAgICAgICAgICAgICAnICAgIHRoZXNlIG9wZXJhdGlvbnMgaXMgbm90IGF2YWlsYWJsZSBhdCB0aGUgdGltZSB0aGUgbW9kdWxlICcKKyAgICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICAgJyAgICBjb21waWxlZC5cbicsCisgJ2V4ZWNtb2RlbCc6ICdcbicKKyAgICAgICAgICAgICAgJ0V4ZWN1dGlvbiBtb2RlbFxuJworICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnU3RydWN0dXJlIG9mIGEgcHJvZ3JhbVxuJworICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdBIFB5dGhvbiBwcm9ncmFtIGlzIGNvbnN0cnVjdGVkIGZyb20gY29kZSBibG9ja3MuIEEgKmJsb2NrKiBpcyAnCisgICAgICAgICAgICAgICdhIHBpZWNlXG4nCisgICAgICAgICAgICAgICdvZiBQeXRob24gcHJvZ3JhbSB0ZXh0IHRoYXQgaXMgZXhlY3V0ZWQgYXMgYSB1bml0LiBUaGUgJworICAgICAgICAgICAgICAnZm9sbG93aW5nIGFyZVxuJworICAgICAgICAgICAgICAnYmxvY2tzOiBhIG1vZHVsZSwgYSBmdW5jdGlvbiBib2R5LCBhbmQgYSBjbGFzcyBkZWZpbml0aW9uLiAnCisgICAgICAgICAgICAgICdFYWNoXG4nCisgICAgICAgICAgICAgICdjb21tYW5kIHR5cGVkIGludGVyYWN0aXZlbHkgaXMgYSBibG9jay4gIEEgc2NyaXB0IGZpbGUgKGEgZmlsZSAnCisgICAgICAgICAgICAgICdnaXZlblxuJworICAgICAgICAgICAgICAnYXMgc3RhbmRhcmQgaW5wdXQgdG8gdGhlIGludGVycHJldGVyIG9yIHNwZWNpZmllZCBhcyBhIGNvbW1hbmQgJworICAgICAgICAgICAgICAnbGluZVxuJworICAgICAgICAgICAgICAnYXJndW1lbnQgdG8gdGhlIGludGVycHJldGVyKSBpcyBhIGNvZGUgYmxvY2suICBBIHNjcmlwdCBjb21tYW5kICcKKyAgICAgICAgICAgICAgJyhhXG4nCisgICAgICAgICAgICAgICdjb21tYW5kIHNwZWNpZmllZCBvbiB0aGUgaW50ZXJwcmV0ZXIgY29tbWFuZCBsaW5lIHdpdGggdGhlICcKKyAgICAgICAgICAgICAgIicqKi1jKionXG4iCisgICAgICAgICAgICAgICdvcHRpb24pIGlzIGEgY29kZSBibG9jay4gIFRoZSBzdHJpbmcgYXJndW1lbnQgcGFzc2VkIHRvIHRoZSAnCisgICAgICAgICAgICAgICdidWlsdC1pblxuJworICAgICAgICAgICAgICAnZnVuY3Rpb25zICJldmFsKCkiIGFuZCAiZXhlYygpIiBpcyBhIGNvZGUgYmxvY2suXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0EgY29kZSBibG9jayBpcyBleGVjdXRlZCBpbiBhbiAqZXhlY3V0aW9uIGZyYW1lKi4gIEEgZnJhbWUgJworICAgICAgICAgICAgICAnY29udGFpbnNcbicKKyAgICAgICAgICAgICAgJ3NvbWUgYWRtaW5pc3RyYXRpdmUgaW5mb3JtYXRpb24gKHVzZWQgZm9yIGRlYnVnZ2luZykgYW5kICcKKyAgICAgICAgICAgICAgJ2RldGVybWluZXNcbicKKyAgICAgICAgICAgICAgIndoZXJlIGFuZCBob3cgZXhlY3V0aW9uIGNvbnRpbnVlcyBhZnRlciB0aGUgY29kZSBibG9jaydzICIKKyAgICAgICAgICAgICAgJ2V4ZWN1dGlvbiBoYXNcbicKKyAgICAgICAgICAgICAgJ2NvbXBsZXRlZC5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdOYW1pbmcgYW5kIGJpbmRpbmdcbicKKyAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0JpbmRpbmcgb2YgbmFtZXNcbicKKyAgICAgICAgICAgICAgJy0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnKk5hbWVzKiByZWZlciB0byBvYmplY3RzLiAgTmFtZXMgYXJlIGludHJvZHVjZWQgYnkgbmFtZSAnCisgICAgICAgICAgICAgICdiaW5kaW5nXG4nCisgICAgICAgICAgICAgICdvcGVyYXRpb25zLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdUaGUgZm9sbG93aW5nIGNvbnN0cnVjdHMgYmluZCBuYW1lczogZm9ybWFsIHBhcmFtZXRlcnMgdG8gJworICAgICAgICAgICAgICAnZnVuY3Rpb25zLFxuJworICAgICAgICAgICAgICAnImltcG9ydCIgc3RhdGVtZW50cywgY2xhc3MgYW5kIGZ1bmN0aW9uIGRlZmluaXRpb25zICh0aGVzZSBiaW5kICcKKyAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAnY2xhc3Mgb3IgZnVuY3Rpb24gbmFtZSBpbiB0aGUgZGVmaW5pbmcgYmxvY2spLCBhbmQgdGFyZ2V0cyB0aGF0ICcKKyAgICAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAgICAnaWRlbnRpZmllcnMgaWYgb2NjdXJyaW5nIGluIGFuIGFzc2lnbm1lbnQsICJmb3IiIGxvb3AgaGVhZGVyLCAnCisgICAgICAgICAgICAgICdvciBhZnRlclxuJworICAgICAgICAgICAgICAnImFzIiBpbiBhICJ3aXRoIiBzdGF0ZW1lbnQgb3IgImV4Y2VwdCIgY2xhdXNlLiBUaGUgImltcG9ydCIgJworICAgICAgICAgICAgICAnc3RhdGVtZW50XG4nCisgICAgICAgICAgICAgICdvZiB0aGUgZm9ybSAiZnJvbSAuLi4gaW1wb3J0ICoiIGJpbmRzIGFsbCBuYW1lcyBkZWZpbmVkIGluIHRoZVxuJworICAgICAgICAgICAgICAnaW1wb3J0ZWQgbW9kdWxlLCBleGNlcHQgdGhvc2UgYmVnaW5uaW5nIHdpdGggYW4gdW5kZXJzY29yZS4gICcKKyAgICAgICAgICAgICAgJ1RoaXMgZm9ybVxuJworICAgICAgICAgICAgICAnbWF5IG9ubHkgYmUgdXNlZCBhdCB0aGUgbW9kdWxlIGxldmVsLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdBIHRhcmdldCBvY2N1cnJpbmcgaW4gYSAiZGVsIiBzdGF0ZW1lbnQgaXMgYWxzbyBjb25zaWRlcmVkICcKKyAgICAgICAgICAgICAgJ2JvdW5kIGZvclxuJworICAgICAgICAgICAgICAndGhpcyBwdXJwb3NlICh0aG91Z2ggdGhlIGFjdHVhbCBzZW1hbnRpY3MgYXJlIHRvIHVuYmluZCB0aGUgJworICAgICAgICAgICAgICAnbmFtZSkuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0VhY2ggYXNzaWdubWVudCBvciBpbXBvcnQgc3RhdGVtZW50IG9jY3VycyB3aXRoaW4gYSBibG9jayAnCisgICAgICAgICAgICAgICdkZWZpbmVkIGJ5IGFcbicKKyAgICAgICAgICAgICAgJ2NsYXNzIG9yIGZ1bmN0aW9uIGRlZmluaXRpb24gb3IgYXQgdGhlIG1vZHVsZSBsZXZlbCAodGhlICcKKyAgICAgICAgICAgICAgJ3RvcC1sZXZlbFxuJworICAgICAgICAgICAgICAnY29kZSBibG9jaykuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0lmIGEgbmFtZSBpcyBib3VuZCBpbiBhIGJsb2NrLCBpdCBpcyBhIGxvY2FsIHZhcmlhYmxlIG9mIHRoYXQgJworICAgICAgICAgICAgICAnYmxvY2ssXG4nCisgICAgICAgICAgICAgICd1bmxlc3MgZGVjbGFyZWQgYXMgIm5vbmxvY2FsIiBvciAiZ2xvYmFsIi4gIElmIGEgbmFtZSBpcyBib3VuZCAnCisgICAgICAgICAgICAgICdhdCB0aGVcbicKKyAgICAgICAgICAgICAgJ21vZHVsZSBsZXZlbCwgaXQgaXMgYSBnbG9iYWwgdmFyaWFibGUuICAoVGhlIHZhcmlhYmxlcyBvZiB0aGUgJworICAgICAgICAgICAgICAnbW9kdWxlXG4nCisgICAgICAgICAgICAgICdjb2RlIGJsb2NrIGFyZSBsb2NhbCBhbmQgZ2xvYmFsLikgIElmIGEgdmFyaWFibGUgaXMgdXNlZCBpbiBhICcKKyAgICAgICAgICAgICAgJ2NvZGVcbicKKyAgICAgICAgICAgICAgJ2Jsb2NrIGJ1dCBub3QgZGVmaW5lZCB0aGVyZSwgaXQgaXMgYSAqZnJlZSB2YXJpYWJsZSouXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0VhY2ggb2NjdXJyZW5jZSBvZiBhIG5hbWUgaW4gdGhlIHByb2dyYW0gdGV4dCByZWZlcnMgdG8gdGhlICcKKyAgICAgICAgICAgICAgJypiaW5kaW5nKlxuJworICAgICAgICAgICAgICAnb2YgdGhhdCBuYW1lIGVzdGFibGlzaGVkIGJ5IHRoZSBmb2xsb3dpbmcgbmFtZSByZXNvbHV0aW9uICcKKyAgICAgICAgICAgICAgJ3J1bGVzLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1Jlc29sdXRpb24gb2YgbmFtZXNcbicKKyAgICAgICAgICAgICAgJy0tLS0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnQSAqc2NvcGUqIGRlZmluZXMgdGhlIHZpc2liaWxpdHkgb2YgYSBuYW1lIHdpdGhpbiBhIGJsb2NrLiAgSWYgJworICAgICAgICAgICAgICAnYSBsb2NhbFxuJworICAgICAgICAgICAgICAndmFyaWFibGUgaXMgZGVmaW5lZCBpbiBhIGJsb2NrLCBpdHMgc2NvcGUgaW5jbHVkZXMgdGhhdCBibG9jay4gICcKKyAgICAgICAgICAgICAgJ0lmIHRoZVxuJworICAgICAgICAgICAgICAnZGVmaW5pdGlvbiBvY2N1cnMgaW4gYSBmdW5jdGlvbiBibG9jaywgdGhlIHNjb3BlIGV4dGVuZHMgdG8gYW55ICcKKyAgICAgICAgICAgICAgJ2Jsb2Nrc1xuJworICAgICAgICAgICAgICAnY29udGFpbmVkIHdpdGhpbiB0aGUgZGVmaW5pbmcgb25lLCB1bmxlc3MgYSBjb250YWluZWQgYmxvY2sgJworICAgICAgICAgICAgICAnaW50cm9kdWNlc1xuJworICAgICAgICAgICAgICAnYSBkaWZmZXJlbnQgYmluZGluZyBmb3IgdGhlIG5hbWUuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1doZW4gYSBuYW1lIGlzIHVzZWQgaW4gYSBjb2RlIGJsb2NrLCBpdCBpcyByZXNvbHZlZCB1c2luZyB0aGUgJworICAgICAgICAgICAgICAnbmVhcmVzdFxuJworICAgICAgICAgICAgICAnZW5jbG9zaW5nIHNjb3BlLiAgVGhlIHNldCBvZiBhbGwgc3VjaCBzY29wZXMgdmlzaWJsZSB0byBhIGNvZGUgJworICAgICAgICAgICAgICAnYmxvY2tcbicKKyAgICAgICAgICAgICAgImlzIGNhbGxlZCB0aGUgYmxvY2sncyAqZW52aXJvbm1lbnQqLlxuIgorICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdXaGVuIGEgbmFtZSBpcyBub3QgZm91bmQgYXQgYWxsLCBhICJOYW1lRXJyb3IiIGV4Y2VwdGlvbiBpcyAnCisgICAgICAgICAgICAgICdyYWlzZWQuIElmXG4nCisgICAgICAgICAgICAgICd0aGUgY3VycmVudCBzY29wZSBpcyBhIGZ1bmN0aW9uIHNjb3BlLCBhbmQgdGhlIG5hbWUgcmVmZXJzIHRvIGEgJworICAgICAgICAgICAgICAnbG9jYWxcbicKKyAgICAgICAgICAgICAgJ3ZhcmlhYmxlIHRoYXQgaGFzIG5vdCB5ZXQgYmVlbiBib3VuZCB0byBhIHZhbHVlIGF0IHRoZSBwb2ludCAnCisgICAgICAgICAgICAgICd3aGVyZSB0aGVcbicKKyAgICAgICAgICAgICAgJ25hbWUgaXMgdXNlZCwgYW4gIlVuYm91bmRMb2NhbEVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLlxuJworICAgICAgICAgICAgICAnIlVuYm91bmRMb2NhbEVycm9yIiBpcyBhIHN1YmNsYXNzIG9mICJOYW1lRXJyb3IiLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdJZiBhIG5hbWUgYmluZGluZyBvcGVyYXRpb24gb2NjdXJzIGFueXdoZXJlIHdpdGhpbiBhIGNvZGUgJworICAgICAgICAgICAgICAnYmxvY2ssIGFsbFxuJworICAgICAgICAgICAgICAndXNlcyBvZiB0aGUgbmFtZSB3aXRoaW4gdGhlIGJsb2NrIGFyZSB0cmVhdGVkIGFzIHJlZmVyZW5jZXMgdG8gJworICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICdjdXJyZW50IGJsb2NrLiAgVGhpcyBjYW4gbGVhZCB0byBlcnJvcnMgd2hlbiBhIG5hbWUgaXMgdXNlZCAnCisgICAgICAgICAgICAgICd3aXRoaW4gYVxuJworICAgICAgICAgICAgICAnYmxvY2sgYmVmb3JlIGl0IGlzIGJvdW5kLiAgVGhpcyBydWxlIGlzIHN1YnRsZS4gIFB5dGhvbiBsYWNrc1xuJworICAgICAgICAgICAgICAnZGVjbGFyYXRpb25zIGFuZCBhbGxvd3MgbmFtZSBiaW5kaW5nIG9wZXJhdGlvbnMgdG8gb2NjdXIgJworICAgICAgICAgICAgICAnYW55d2hlcmVcbicKKyAgICAgICAgICAgICAgJ3dpdGhpbiBhIGNvZGUgYmxvY2suICBUaGUgbG9jYWwgdmFyaWFibGVzIG9mIGEgY29kZSBibG9jayBjYW4gJworICAgICAgICAgICAgICAnYmVcbicKKyAgICAgICAgICAgICAgJ2RldGVybWluZWQgYnkgc2Nhbm5pbmcgdGhlIGVudGlyZSB0ZXh0IG9mIHRoZSBibG9jayBmb3IgbmFtZSAnCisgICAgICAgICAgICAgICdiaW5kaW5nXG4nCisgICAgICAgICAgICAgICdvcGVyYXRpb25zLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdJZiB0aGUgImdsb2JhbCIgc3RhdGVtZW50IG9jY3VycyB3aXRoaW4gYSBibG9jaywgYWxsIHVzZXMgb2YgJworICAgICAgICAgICAgICAndGhlIG5hbWVcbicKKyAgICAgICAgICAgICAgJ3NwZWNpZmllZCBpbiB0aGUgc3RhdGVtZW50IHJlZmVyIHRvIHRoZSBiaW5kaW5nIG9mIHRoYXQgbmFtZSBpbiAnCisgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgJ3RvcC1sZXZlbCBuYW1lc3BhY2UuICBOYW1lcyBhcmUgcmVzb2x2ZWQgaW4gdGhlIHRvcC1sZXZlbCAnCisgICAgICAgICAgICAgICduYW1lc3BhY2UgYnlcbicKKyAgICAgICAgICAgICAgJ3NlYXJjaGluZyB0aGUgZ2xvYmFsIG5hbWVzcGFjZSwgaS5lLiB0aGUgbmFtZXNwYWNlIG9mIHRoZSAnCisgICAgICAgICAgICAgICdtb2R1bGVcbicKKyAgICAgICAgICAgICAgJ2NvbnRhaW5pbmcgdGhlIGNvZGUgYmxvY2ssIGFuZCB0aGUgYnVpbHRpbnMgbmFtZXNwYWNlLCB0aGUgJworICAgICAgICAgICAgICAnbmFtZXNwYWNlXG4nCisgICAgICAgICAgICAgICdvZiB0aGUgbW9kdWxlICJidWlsdGlucyIuICBUaGUgZ2xvYmFsIG5hbWVzcGFjZSBpcyBzZWFyY2hlZCAnCisgICAgICAgICAgICAgICdmaXJzdC4gIElmXG4nCisgICAgICAgICAgICAgICd0aGUgbmFtZSBpcyBub3QgZm91bmQgdGhlcmUsIHRoZSBidWlsdGlucyBuYW1lc3BhY2UgaXMgJworICAgICAgICAgICAgICAnc2VhcmNoZWQuICBUaGVcbicKKyAgICAgICAgICAgICAgJyJnbG9iYWwiIHN0YXRlbWVudCBtdXN0IHByZWNlZGUgYWxsIHVzZXMgb2YgdGhlIG5hbWUuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1RoZSAiZ2xvYmFsIiBzdGF0ZW1lbnQgaGFzIHRoZSBzYW1lIHNjb3BlIGFzIGEgbmFtZSBiaW5kaW5nICcKKyAgICAgICAgICAgICAgJ29wZXJhdGlvblxuJworICAgICAgICAgICAgICAnaW4gdGhlIHNhbWUgYmxvY2suICBJZiB0aGUgbmVhcmVzdCBlbmNsb3Npbmcgc2NvcGUgZm9yIGEgZnJlZSAnCisgICAgICAgICAgICAgICd2YXJpYWJsZVxuJworICAgICAgICAgICAgICAnY29udGFpbnMgYSBnbG9iYWwgc3RhdGVtZW50LCB0aGUgZnJlZSB2YXJpYWJsZSBpcyB0cmVhdGVkIGFzIGEgJworICAgICAgICAgICAgICAnZ2xvYmFsLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdUaGUgIm5vbmxvY2FsIiBzdGF0ZW1lbnQgY2F1c2VzIGNvcnJlc3BvbmRpbmcgbmFtZXMgdG8gcmVmZXIgJworICAgICAgICAgICAgICAndG9cbicKKyAgICAgICAgICAgICAgJ3ByZXZpb3VzbHkgYm91bmQgdmFyaWFibGVzIGluIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBmdW5jdGlvbiAnCisgICAgICAgICAgICAgICdzY29wZS5cbicKKyAgICAgICAgICAgICAgJyJTeW50YXhFcnJvciIgaXMgcmFpc2VkIGF0IGNvbXBpbGUgdGltZSBpZiB0aGUgZ2l2ZW4gbmFtZSBkb2VzICcKKyAgICAgICAgICAgICAgJ25vdFxuJworICAgICAgICAgICAgICAnZXhpc3QgaW4gYW55IGVuY2xvc2luZyBmdW5jdGlvbiBzY29wZS5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnVGhlIG5hbWVzcGFjZSBmb3IgYSBtb2R1bGUgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIHRoZSBmaXJzdCAnCisgICAgICAgICAgICAgICd0aW1lIGFcbicKKyAgICAgICAgICAgICAgJ21vZHVsZSBpcyBpbXBvcnRlZC4gIFRoZSBtYWluIG1vZHVsZSBmb3IgYSBzY3JpcHQgaXMgYWx3YXlzICcKKyAgICAgICAgICAgICAgJ2NhbGxlZFxuJworICAgICAgICAgICAgICAnIl9fbWFpbl9fIi5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnQ2xhc3MgZGVmaW5pdGlvbiBibG9ja3MgYW5kIGFyZ3VtZW50cyB0byAiZXhlYygpIiBhbmQgImV2YWwoKSIgJworICAgICAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgICAgICdzcGVjaWFsIGluIHRoZSBjb250ZXh0IG9mIG5hbWUgcmVzb2x1dGlvbi4gQSBjbGFzcyBkZWZpbml0aW9uICcKKyAgICAgICAgICAgICAgJ2lzIGFuXG4nCisgICAgICAgICAgICAgICdleGVjdXRhYmxlIHN0YXRlbWVudCB0aGF0IG1heSB1c2UgYW5kIGRlZmluZSBuYW1lcy4gVGhlc2UgJworICAgICAgICAgICAgICAncmVmZXJlbmNlc1xuJworICAgICAgICAgICAgICAnZm9sbG93IHRoZSBub3JtYWwgcnVsZXMgZm9yIG5hbWUgcmVzb2x1dGlvbiB3aXRoIGFuIGV4Y2VwdGlvbiAnCisgICAgICAgICAgICAgICd0aGF0XG4nCisgICAgICAgICAgICAgICd1bmJvdW5kIGxvY2FsIHZhcmlhYmxlcyBhcmUgbG9va2VkIHVwIGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlLiAnCisgICAgICAgICAgICAgICdUaGVcbicKKyAgICAgICAgICAgICAgJ25hbWVzcGFjZSBvZiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBiZWNvbWVzIHRoZSBhdHRyaWJ1dGUgJworICAgICAgICAgICAgICAnZGljdGlvbmFyeSBvZlxuJworICAgICAgICAgICAgICAndGhlIGNsYXNzLiBUaGUgc2NvcGUgb2YgbmFtZXMgZGVmaW5lZCBpbiBhIGNsYXNzIGJsb2NrIGlzICcKKyAgICAgICAgICAgICAgJ2xpbWl0ZWQgdG9cbicKKyAgICAgICAgICAgICAgJ3RoZSBjbGFzcyBibG9jazsgaXQgZG9lcyBub3QgZXh0ZW5kIHRvIHRoZSBjb2RlIGJsb2NrcyBvZiAnCisgICAgICAgICAgICAgICdtZXRob2RzIC0tXG4nCisgICAgICAgICAgICAgICd0aGlzIGluY2x1ZGVzIGNvbXByZWhlbnNpb25zIGFuZCBnZW5lcmF0b3IgZXhwcmVzc2lvbnMgc2luY2UgJworICAgICAgICAgICAgICAndGhleSBhcmVcbicKKyAgICAgICAgICAgICAgJ2ltcGxlbWVudGVkIHVzaW5nIGEgZnVuY3Rpb24gc2NvcGUuICBUaGlzIG1lYW5zIHRoYXQgdGhlICcKKyAgICAgICAgICAgICAgJ2ZvbGxvd2luZ1xuJworICAgICAgICAgICAgICAnd2lsbCBmYWlsOlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICcgICBjbGFzcyBBOlxuJworICAgICAgICAgICAgICAnICAgICAgIGEgPSA0MlxuJworICAgICAgICAgICAgICAnICAgICAgIGIgPSBsaXN0KGEgKyBpIGZvciBpIGluIHJhbmdlKDEwKSlcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdCdWlsdGlucyBhbmQgcmVzdHJpY3RlZCBleGVjdXRpb25cbicKKyAgICAgICAgICAgICAgJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdUaGUgYnVpbHRpbnMgbmFtZXNwYWNlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXhlY3V0aW9uIG9mIGEgY29kZSAnCisgICAgICAgICAgICAgICdibG9ja1xuJworICAgICAgICAgICAgICAnaXMgYWN0dWFsbHkgZm91bmQgYnkgbG9va2luZyB1cCB0aGUgbmFtZSAiX19idWlsdGluc19fIiBpbiBpdHMgJworICAgICAgICAgICAgICAnZ2xvYmFsXG4nCisgICAgICAgICAgICAgICduYW1lc3BhY2U7IHRoaXMgc2hvdWxkIGJlIGEgZGljdGlvbmFyeSBvciBhIG1vZHVsZSAoaW4gdGhlICcKKyAgICAgICAgICAgICAgJ2xhdHRlciBjYXNlXG4nCisgICAgICAgICAgICAgICJ0aGUgbW9kdWxlJ3MgZGljdGlvbmFyeSBpcyB1c2VkKS4gIEJ5IGRlZmF1bHQsIHdoZW4gaW4gdGhlICIKKyAgICAgICAgICAgICAgJyJfX21haW5fXyJcbicKKyAgICAgICAgICAgICAgJ21vZHVsZSwgIl9fYnVpbHRpbnNfXyIgaXMgdGhlIGJ1aWx0LWluIG1vZHVsZSAiYnVpbHRpbnMiOyB3aGVuICcKKyAgICAgICAgICAgICAgJ2luIGFueVxuJworICAgICAgICAgICAgICAnb3RoZXIgbW9kdWxlLCAiX19idWlsdGluc19fIiBpcyBhbiBhbGlhcyBmb3IgdGhlIGRpY3Rpb25hcnkgb2YgJworICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICciYnVpbHRpbnMiIG1vZHVsZSBpdHNlbGYuICAiX19idWlsdGluc19fIiBjYW4gYmUgc2V0IHRvIGEgJworICAgICAgICAgICAgICAndXNlci1jcmVhdGVkXG4nCisgICAgICAgICAgICAgICdkaWN0aW9uYXJ5IHRvIGNyZWF0ZSBhIHdlYWsgZm9ybSBvZiByZXN0cmljdGVkIGV4ZWN1dGlvbi5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBVc2VycyBzaG91bGQgbm90IHRvdWNoXG4nCisgICAgICAgICAgICAgICciX19idWlsdGluc19fIjsgaXQgaXMgc3RyaWN0bHkgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLiAgJworICAgICAgICAgICAgICAnVXNlcnNcbicKKyAgICAgICAgICAgICAgJ3dhbnRpbmcgdG8gb3ZlcnJpZGUgdmFsdWVzIGluIHRoZSBidWlsdGlucyBuYW1lc3BhY2Ugc2hvdWxkICcKKyAgICAgICAgICAgICAgJyJpbXBvcnQiXG4nCisgICAgICAgICAgICAgICd0aGUgImJ1aWx0aW5zIiBtb2R1bGUgYW5kIG1vZGlmeSBpdHMgYXR0cmlidXRlcyBhcHByb3ByaWF0ZWx5LlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0ludGVyYWN0aW9uIHdpdGggZHluYW1pYyBmZWF0dXJlc1xuJworICAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ05hbWUgcmVzb2x1dGlvbiBvZiBmcmVlIHZhcmlhYmxlcyBvY2N1cnMgYXQgcnVudGltZSwgbm90IGF0ICcKKyAgICAgICAgICAgICAgJ2NvbXBpbGVcbicKKyAgICAgICAgICAgICAgJ3RpbWUuIFRoaXMgbWVhbnMgdGhhdCB0aGUgZm9sbG93aW5nIGNvZGUgd2lsbCBwcmludCA0MjpcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnICAgaSA9IDEwXG4nCisgICAgICAgICAgICAgICcgICBkZWYgZigpOlxuJworICAgICAgICAgICAgICAnICAgICAgIHByaW50KGkpXG4nCisgICAgICAgICAgICAgICcgICBpID0gNDJcbicKKyAgICAgICAgICAgICAgJyAgIGYoKVxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdUaGVyZSBhcmUgc2V2ZXJhbCBjYXNlcyB3aGVyZSBQeXRob24gc3RhdGVtZW50cyBhcmUgaWxsZWdhbCAnCisgICAgICAgICAgICAgICd3aGVuIHVzZWRcbicKKyAgICAgICAgICAgICAgJ2luIGNvbmp1bmN0aW9uIHdpdGggbmVzdGVkIHNjb3BlcyB0aGF0IGNvbnRhaW4gZnJlZSB2YXJpYWJsZXMuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0lmIGEgdmFyaWFibGUgaXMgcmVmZXJlbmNlZCBpbiBhbiBlbmNsb3Npbmcgc2NvcGUsIGl0IGlzICcKKyAgICAgICAgICAgICAgJ2lsbGVnYWwgdG9cbicKKyAgICAgICAgICAgICAgJ2RlbGV0ZSB0aGUgbmFtZS4gIEFuIGVycm9yIHdpbGwgYmUgcmVwb3J0ZWQgYXQgY29tcGlsZSB0aW1lLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdUaGUgImV2YWwoKSIgYW5kICJleGVjKCkiIGZ1bmN0aW9ucyBkbyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhlICcKKyAgICAgICAgICAgICAgJ2Z1bGxcbicKKyAgICAgICAgICAgICAgJ2Vudmlyb25tZW50IGZvciByZXNvbHZpbmcgbmFtZXMuICBOYW1lcyBtYXkgYmUgcmVzb2x2ZWQgaW4gdGhlICcKKyAgICAgICAgICAgICAgJ2xvY2FsXG4nCisgICAgICAgICAgICAgICdhbmQgZ2xvYmFsIG5hbWVzcGFjZXMgb2YgdGhlIGNhbGxlci4gIEZyZWUgdmFyaWFibGVzIGFyZSBub3QgJworICAgICAgICAgICAgICAncmVzb2x2ZWRcbicKKyAgICAgICAgICAgICAgJ2luIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBuYW1lc3BhY2UsIGJ1dCBpbiB0aGUgZ2xvYmFsICcKKyAgICAgICAgICAgICAgJ25hbWVzcGFjZS4gIFsxXVxuJworICAgICAgICAgICAgICAnVGhlICJleGVjKCkiIGFuZCAiZXZhbCgpIiBmdW5jdGlvbnMgaGF2ZSBvcHRpb25hbCBhcmd1bWVudHMgdG9cbicKKyAgICAgICAgICAgICAgJ292ZXJyaWRlIHRoZSBnbG9iYWwgYW5kIGxvY2FsIG5hbWVzcGFjZS4gIElmIG9ubHkgb25lIG5hbWVzcGFjZSAnCisgICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICAnc3BlY2lmaWVkLCBpdCBpcyB1c2VkIGZvciBib3RoLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0V4Y2VwdGlvbnNcbicKKyAgICAgICAgICAgICAgJz09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnRXhjZXB0aW9ucyBhcmUgYSBtZWFucyBvZiBicmVha2luZyBvdXQgb2YgdGhlIG5vcm1hbCBmbG93IG9mICcKKyAgICAgICAgICAgICAgJ2NvbnRyb2xcbicKKyAgICAgICAgICAgICAgJ29mIGEgY29kZSBibG9jayBpbiBvcmRlciB0byBoYW5kbGUgZXJyb3JzIG9yIG90aGVyIGV4Y2VwdGlvbmFsXG4nCisgICAgICAgICAgICAgICdjb25kaXRpb25zLiAgQW4gZXhjZXB0aW9uIGlzICpyYWlzZWQqIGF0IHRoZSBwb2ludCB3aGVyZSB0aGUgJworICAgICAgICAgICAgICAnZXJyb3IgaXNcbicKKyAgICAgICAgICAgICAgJ2RldGVjdGVkOyBpdCBtYXkgYmUgKmhhbmRsZWQqIGJ5IHRoZSBzdXJyb3VuZGluZyBjb2RlIGJsb2NrIG9yICcKKyAgICAgICAgICAgICAgJ2J5IGFueVxuJworICAgICAgICAgICAgICAnY29kZSBibG9jayB0aGF0IGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgaW52b2tlZCB0aGUgY29kZSBibG9jayAnCisgICAgICAgICAgICAgICd3aGVyZVxuJworICAgICAgICAgICAgICAndGhlIGVycm9yIG9jY3VycmVkLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdUaGUgUHl0aG9uIGludGVycHJldGVyIHJhaXNlcyBhbiBleGNlcHRpb24gd2hlbiBpdCBkZXRlY3RzIGEgJworICAgICAgICAgICAgICAncnVuLXRpbWVcbicKKyAgICAgICAgICAgICAgJ2Vycm9yIChzdWNoIGFzIGRpdmlzaW9uIGJ5IHplcm8pLiAgQSBQeXRob24gcHJvZ3JhbSBjYW4gYWxzb1xuJworICAgICAgICAgICAgICAnZXhwbGljaXRseSByYWlzZSBhbiBleGNlcHRpb24gd2l0aCB0aGUgInJhaXNlIiBzdGF0ZW1lbnQuICcKKyAgICAgICAgICAgICAgJ0V4Y2VwdGlvblxuJworICAgICAgICAgICAgICAnaGFuZGxlcnMgYXJlIHNwZWNpZmllZCB3aXRoIHRoZSAidHJ5IiAuLi4gImV4Y2VwdCIgc3RhdGVtZW50LiAgJworICAgICAgICAgICAgICAnVGhlXG4nCisgICAgICAgICAgICAgICciZmluYWxseSIgY2xhdXNlIG9mIHN1Y2ggYSBzdGF0ZW1lbnQgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSAnCisgICAgICAgICAgICAgICdjbGVhbnVwXG4nCisgICAgICAgICAgICAgICdjb2RlIHdoaWNoIGRvZXMgbm90IGhhbmRsZSB0aGUgZXhjZXB0aW9uLCBidXQgaXMgZXhlY3V0ZWQgJworICAgICAgICAgICAgICAnd2hldGhlciBhblxuJworICAgICAgICAgICAgICAnZXhjZXB0aW9uIG9jY3VycmVkIG9yIG5vdCBpbiB0aGUgcHJlY2VkaW5nIGNvZGUuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1B5dGhvbiB1c2VzIHRoZSAidGVybWluYXRpb24iIG1vZGVsIG9mIGVycm9yIGhhbmRsaW5nOiBhbiAnCisgICAgICAgICAgICAgICdleGNlcHRpb25cbicKKyAgICAgICAgICAgICAgJ2hhbmRsZXIgY2FuIGZpbmQgb3V0IHdoYXQgaGFwcGVuZWQgYW5kIGNvbnRpbnVlIGV4ZWN1dGlvbiBhdCBhbiAnCisgICAgICAgICAgICAgICdvdXRlclxuJworICAgICAgICAgICAgICAnbGV2ZWwsIGJ1dCBpdCBjYW5ub3QgcmVwYWlyIHRoZSBjYXVzZSBvZiB0aGUgZXJyb3IgYW5kIHJldHJ5ICcKKyAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAnZmFpbGluZyBvcGVyYXRpb24gKGV4Y2VwdCBieSByZS1lbnRlcmluZyB0aGUgb2ZmZW5kaW5nIHBpZWNlIG9mICcKKyAgICAgICAgICAgICAgJ2NvZGVcbicKKyAgICAgICAgICAgICAgJ2Zyb20gdGhlIHRvcCkuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1doZW4gYW4gZXhjZXB0aW9uIGlzIG5vdCBoYW5kbGVkIGF0IGFsbCwgdGhlIGludGVycHJldGVyICcKKyAgICAgICAgICAgICAgJ3Rlcm1pbmF0ZXNcbicKKyAgICAgICAgICAgICAgJ2V4ZWN1dGlvbiBvZiB0aGUgcHJvZ3JhbSwgb3IgcmV0dXJucyB0byBpdHMgaW50ZXJhY3RpdmUgbWFpbiAnCisgICAgICAgICAgICAgICdsb29wLiAgSW5cbicKKyAgICAgICAgICAgICAgJ2VpdGhlciBjYXNlLCBpdCBwcmludHMgYSBzdGFjayBiYWNrdHJhY2UsIGV4Y2VwdCB3aGVuIHRoZSAnCisgICAgICAgICAgICAgICdleGNlcHRpb24gaXNcbicKKyAgICAgICAgICAgICAgJyJTeXN0ZW1FeGl0Ii5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnRXhjZXB0aW9ucyBhcmUgaWRlbnRpZmllZCBieSBjbGFzcyBpbnN0YW5jZXMuICBUaGUgImV4Y2VwdCIgJworICAgICAgICAgICAgICAnY2xhdXNlIGlzXG4nCisgICAgICAgICAgICAgICdzZWxlY3RlZCBkZXBlbmRpbmcgb24gdGhlIGNsYXNzIG9mIHRoZSBpbnN0YW5jZTogaXQgbXVzdCAnCisgICAgICAgICAgICAgICdyZWZlcmVuY2UgdGhlXG4nCisgICAgICAgICAgICAgICdjbGFzcyBvZiB0aGUgaW5zdGFuY2Ugb3IgYSBiYXNlIGNsYXNzIHRoZXJlb2YuICBUaGUgaW5zdGFuY2UgJworICAgICAgICAgICAgICAnY2FuIGJlXG4nCisgICAgICAgICAgICAgICdyZWNlaXZlZCBieSB0aGUgaGFuZGxlciBhbmQgY2FuIGNhcnJ5IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gJworICAgICAgICAgICAgICAnYWJvdXQgdGhlXG4nCisgICAgICAgICAgICAgICdleGNlcHRpb25hbCBjb25kaXRpb24uXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ05vdGU6IEV4Y2VwdGlvbiBtZXNzYWdlcyBhcmUgbm90IHBhcnQgb2YgdGhlIFB5dGhvbiBBUEkuICAnCisgICAgICAgICAgICAgICdUaGVpclxuJworICAgICAgICAgICAgICAnICBjb250ZW50cyBtYXkgY2hhbmdlIGZyb20gb25lIHZlcnNpb24gb2YgUHl0aG9uIHRvIHRoZSBuZXh0ICcKKyAgICAgICAgICAgICAgJ3dpdGhvdXRcbicKKyAgICAgICAgICAgICAgJyAgd2FybmluZyBhbmQgc2hvdWxkIG5vdCBiZSByZWxpZWQgb24gYnkgY29kZSB3aGljaCB3aWxsIHJ1biAnCisgICAgICAgICAgICAgICd1bmRlclxuJworICAgICAgICAgICAgICAnICBtdWx0aXBsZSB2ZXJzaW9ucyBvZiB0aGUgaW50ZXJwcmV0ZXIuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1NlZSBhbHNvIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgInRyeSIgc3RhdGVtZW50IGluIHNlY3Rpb24gVGhlICcKKyAgICAgICAgICAgICAgJ3RyeVxuJworICAgICAgICAgICAgICAnc3RhdGVtZW50IGFuZCAicmFpc2UiIHN0YXRlbWVudCBpbiBzZWN0aW9uIFRoZSByYWlzZSAnCisgICAgICAgICAgICAgICdzdGF0ZW1lbnQuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJy1bIEZvb3Rub3RlcyBdLVxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdbMV0gVGhpcyBsaW1pdGF0aW9uIG9jY3VycyBiZWNhdXNlIHRoZSBjb2RlIHRoYXQgaXMgZXhlY3V0ZWQgJworICAgICAgICAgICAgICAnYnlcbicKKyAgICAgICAgICAgICAgJyAgICB0aGVzZSBvcGVyYXRpb25zIGlzIG5vdCBhdmFpbGFibGUgYXQgdGhlIHRpbWUgdGhlIG1vZHVsZSAnCisgICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICAnICAgIGNvbXBpbGVkLlxuJywKKyAnZXhwcmxpc3RzJzogJ1xuJworICAgICAgICAgICAgICAnRXhwcmVzc2lvbiBsaXN0c1xuJworICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICcgICBleHByZXNzaW9uX2xpc3QgICAgOjo9IGV4cHJlc3Npb24gKCAiLCIgZXhwcmVzc2lvbiApKiBbIiwiXVxuJworICAgICAgICAgICAgICAnICAgc3RhcnJlZF9saXN0ICAgICAgIDo6PSBzdGFycmVkX2l0ZW0gKCAiLCIgc3RhcnJlZF9pdGVtICkqICcKKyAgICAgICAgICAgICAgJ1siLCJdXG4nCisgICAgICAgICAgICAgICcgICBzdGFycmVkX2V4cHJlc3Npb24gOjo9IGV4cHJlc3Npb24gfCAoIHN0YXJyZWRfaXRlbSAiLCIgKSogJworICAgICAgICAgICAgICAnW3N0YXJyZWRfaXRlbV1cbicKKyAgICAgICAgICAgICAgJyAgIHN0YXJyZWRfaXRlbSAgICAgICA6Oj0gZXhwcmVzc2lvbiB8ICIqIiBvcl9leHByXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0V4Y2VwdCB3aGVuIHBhcnQgb2YgYSBsaXN0IG9yIHNldCBkaXNwbGF5LCBhbiBleHByZXNzaW9uIGxpc3RcbicKKyAgICAgICAgICAgICAgJ2NvbnRhaW5pbmcgYXQgbGVhc3Qgb25lIGNvbW1hIHlpZWxkcyBhIHR1cGxlLiAgVGhlIGxlbmd0aCBvZiAnCisgICAgICAgICAgICAgICd0aGUgdHVwbGVcbicKKyAgICAgICAgICAgICAgJ2lzIHRoZSBudW1iZXIgb2YgZXhwcmVzc2lvbnMgaW4gdGhlIGxpc3QuICBUaGUgZXhwcmVzc2lvbnMgYXJlXG4nCisgICAgICAgICAgICAgICdldmFsdWF0ZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0LlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdBbiBhc3RlcmlzayAiKiIgZGVub3RlcyAqaXRlcmFibGUgdW5wYWNraW5nKi4gIEl0cyBvcGVyYW5kIG11c3QgJworICAgICAgICAgICAgICAnYmUgYW5cbicKKyAgICAgICAgICAgICAgJyppdGVyYWJsZSouICBUaGUgaXRlcmFibGUgaXMgZXhwYW5kZWQgaW50byBhIHNlcXVlbmNlIG9mIGl0ZW1zLCAnCisgICAgICAgICAgICAgICd3aGljaFxuJworICAgICAgICAgICAgICAnYXJlIGluY2x1ZGVkIGluIHRoZSBuZXcgdHVwbGUsIGxpc3QsIG9yIHNldCwgYXQgdGhlIHNpdGUgb2YgJworICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICd1bnBhY2tpbmcuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ05ldyBpbiB2ZXJzaW9uIDMuNTogSXRlcmFibGUgdW5wYWNraW5nIGluIGV4cHJlc3Npb24gbGlzdHMsICcKKyAgICAgICAgICAgICAgJ29yaWdpbmFsbHlcbicKKyAgICAgICAgICAgICAgJ3Byb3Bvc2VkIGJ5ICoqUEVQIDQ0OCoqLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdUaGUgdHJhaWxpbmcgY29tbWEgaXMgcmVxdWlyZWQgb25seSB0byBjcmVhdGUgYSBzaW5nbGUgdHVwbGUgJworICAgICAgICAgICAgICAnKGEuay5hLiBhXG4nCisgICAgICAgICAgICAgICcqc2luZ2xldG9uKik7IGl0IGlzIG9wdGlvbmFsIGluIGFsbCBvdGhlciBjYXNlcy4gIEEgc2luZ2xlICcKKyAgICAgICAgICAgICAgJ2V4cHJlc3Npb25cbicKKyAgICAgICAgICAgICAgIndpdGhvdXQgYSB0cmFpbGluZyBjb21tYSBkb2Vzbid0IGNyZWF0ZSBhIHR1cGxlLCBidXQgcmF0aGVyICIKKyAgICAgICAgICAgICAgJ3lpZWxkcyB0aGVcbicKKyAgICAgICAgICAgICAgJ3ZhbHVlIG9mIHRoYXQgZXhwcmVzc2lvbi4gKFRvIGNyZWF0ZSBhbiBlbXB0eSB0dXBsZSwgdXNlIGFuICcKKyAgICAgICAgICAgICAgJ2VtcHR5IHBhaXJcbicKKyAgICAgICAgICAgICAgJ29mIHBhcmVudGhlc2VzOiAiKCkiLilcbicsCisgJ2Zsb2F0aW5nJzogJ1xuJworICAgICAgICAgICAgICdGbG9hdGluZyBwb2ludCBsaXRlcmFsc1xuJworICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnRmxvYXRpbmcgcG9pbnQgbGl0ZXJhbHMgYXJlIGRlc2NyaWJlZCBieSB0aGUgZm9sbG93aW5nIGxleGljYWxcbicKKyAgICAgICAgICAgICAnZGVmaW5pdGlvbnM6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBmbG9hdG51bWJlciAgIDo6PSBwb2ludGZsb2F0IHwgZXhwb25lbnRmbG9hdFxuJworICAgICAgICAgICAgICcgICBwb2ludGZsb2F0ICAgIDo6PSBbZGlnaXRwYXJ0XSBmcmFjdGlvbiB8IGRpZ2l0cGFydCAiLiJcbicKKyAgICAgICAgICAgICAnICAgZXhwb25lbnRmbG9hdCA6Oj0gKGRpZ2l0cGFydCB8IHBvaW50ZmxvYXQpIGV4cG9uZW50XG4nCisgICAgICAgICAgICAgJyAgIGRpZ2l0cGFydCAgICAgOjo9IGRpZ2l0IChbIl8iXSBkaWdpdCkqXG4nCisgICAgICAgICAgICAgJyAgIGZyYWN0aW9uICAgICAgOjo9ICIuIiBkaWdpdHBhcnRcbicKKyAgICAgICAgICAgICAnICAgZXhwb25lbnQgICAgICA6Oj0gKCJlIiB8ICJFIikgWyIrIiB8ICItIl0gZGlnaXRwYXJ0XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdOb3RlIHRoYXQgdGhlIGludGVnZXIgYW5kIGV4cG9uZW50IHBhcnRzIGFyZSBhbHdheXMgaW50ZXJwcmV0ZWQgJworICAgICAgICAgICAgICd1c2luZ1xuJworICAgICAgICAgICAgICdyYWRpeCAxMC4gRm9yIGV4YW1wbGUsICIwNzdlMDEwIiBpcyBsZWdhbCwgYW5kIGRlbm90ZXMgdGhlIHNhbWUgJworICAgICAgICAgICAgICdudW1iZXJcbicKKyAgICAgICAgICAgICAnYXMgIjc3ZTEwIi4gVGhlIGFsbG93ZWQgcmFuZ2Ugb2YgZmxvYXRpbmcgcG9pbnQgbGl0ZXJhbHMgaXNcbicKKyAgICAgICAgICAgICAnaW1wbGVtZW50YXRpb24tZGVwZW5kZW50LiAgQXMgaW4gaW50ZWdlciBsaXRlcmFscywgdW5kZXJzY29yZXMgJworICAgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgICAnc3VwcG9ydGVkIGZvciBkaWdpdCBncm91cGluZy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1NvbWUgZXhhbXBsZXMgb2YgZmxvYXRpbmcgcG9pbnQgbGl0ZXJhbHM6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAzLjE0ICAgIDEwLiAgICAuMDAxICAgIDFlMTAwICAgIDMuMTRlLTEwICAgIDBlMCAgICAnCisgICAgICAgICAgICAgJzMuMTRfMTVfOTNcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ05vdGUgdGhhdCBudW1lcmljIGxpdGVyYWxzIGRvIG5vdCBpbmNsdWRlIGEgc2lnbjsgYSBwaHJhc2UgbGlrZSAnCisgICAgICAgICAgICAgJyItMSJcbicKKyAgICAgICAgICAgICAnaXMgYWN0dWFsbHkgYW4gZXhwcmVzc2lvbiBjb21wb3NlZCBvZiB0aGUgdW5hcnkgb3BlcmF0b3IgIi0iIGFuZCAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICdsaXRlcmFsICIxIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0NoYW5nZWQgaW4gdmVyc2lvbiAzLjY6IFVuZGVyc2NvcmVzIGFyZSBub3cgYWxsb3dlZCBmb3IgJworICAgICAgICAgICAgICdncm91cGluZ1xuJworICAgICAgICAgICAgICdwdXJwb3NlcyBpbiBsaXRlcmFscy5cbicsCisgJ2Zvcic6ICdcbicKKyAgICAgICAgJ1RoZSAiZm9yIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgJyoqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgJ1xuJworICAgICAgICAnVGhlICJmb3IiIHN0YXRlbWVudCBpcyB1c2VkIHRvIGl0ZXJhdGUgb3ZlciB0aGUgZWxlbWVudHMgb2YgYSAnCisgICAgICAgICdzZXF1ZW5jZVxuJworICAgICAgICAnKHN1Y2ggYXMgYSBzdHJpbmcsIHR1cGxlIG9yIGxpc3QpIG9yIG90aGVyIGl0ZXJhYmxlIG9iamVjdDpcbicKKyAgICAgICAgJ1xuJworICAgICAgICAnICAgZm9yX3N0bXQgOjo9ICJmb3IiIHRhcmdldF9saXN0ICJpbiIgZXhwcmVzc2lvbl9saXN0ICI6IiBzdWl0ZVxuJworICAgICAgICAnICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuJworICAgICAgICAnXG4nCisgICAgICAgICdUaGUgZXhwcmVzc2lvbiBsaXN0IGlzIGV2YWx1YXRlZCBvbmNlOyBpdCBzaG91bGQgeWllbGQgYW4gaXRlcmFibGVcbicKKyAgICAgICAgJ29iamVjdC4gIEFuIGl0ZXJhdG9yIGlzIGNyZWF0ZWQgZm9yIHRoZSByZXN1bHQgb2YgdGhlXG4nCisgICAgICAgICciZXhwcmVzc2lvbl9saXN0Ii4gIFRoZSBzdWl0ZSBpcyB0aGVuIGV4ZWN1dGVkIG9uY2UgZm9yIGVhY2ggaXRlbVxuJworICAgICAgICAncHJvdmlkZWQgYnkgdGhlIGl0ZXJhdG9yLCBpbiB0aGUgb3JkZXIgcmV0dXJuZWQgYnkgdGhlIGl0ZXJhdG9yLiAgJworICAgICAgICAnRWFjaFxuJworICAgICAgICAnaXRlbSBpbiB0dXJuIGlzIGFzc2lnbmVkIHRvIHRoZSB0YXJnZXQgbGlzdCB1c2luZyB0aGUgc3RhbmRhcmQgcnVsZXNcbicKKyAgICAgICAgJ2ZvciBhc3NpZ25tZW50cyAoc2VlIEFzc2lnbm1lbnQgc3RhdGVtZW50cyksIGFuZCB0aGVuIHRoZSBzdWl0ZSBpc1xuJworICAgICAgICAnZXhlY3V0ZWQuICBXaGVuIHRoZSBpdGVtcyBhcmUgZXhoYXVzdGVkICh3aGljaCBpcyBpbW1lZGlhdGVseSB3aGVuICcKKyAgICAgICAgJ3RoZVxuJworICAgICAgICAnc2VxdWVuY2UgaXMgZW1wdHkgb3IgYW4gaXRlcmF0b3IgcmFpc2VzIGEgIlN0b3BJdGVyYXRpb24iICcKKyAgICAgICAgJ2V4Y2VwdGlvbiksXG4nCisgICAgICAgICd0aGUgc3VpdGUgaW4gdGhlICJlbHNlIiBjbGF1c2UsIGlmIHByZXNlbnQsIGlzIGV4ZWN1dGVkLCBhbmQgdGhlICcKKyAgICAgICAgJ2xvb3BcbicKKyAgICAgICAgJ3Rlcm1pbmF0ZXMuXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ0EgImJyZWFrIiBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHRlcm1pbmF0ZXMgdGhlIGxvb3BcbicKKyAgICAgICAgJ3dpdGhvdXQgZXhlY3V0aW5nIHRoZSAiZWxzZSIgY2xhdXNlXCdzIHN1aXRlLiAgQSAiY29udGludWUiICcKKyAgICAgICAgJ3N0YXRlbWVudFxuJworICAgICAgICAnZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHNraXBzIHRoZSByZXN0IG9mIHRoZSBzdWl0ZSBhbmQgJworICAgICAgICAnY29udGludWVzXG4nCisgICAgICAgICd3aXRoIHRoZSBuZXh0IGl0ZW0sIG9yIHdpdGggdGhlICJlbHNlIiBjbGF1c2UgaWYgdGhlcmUgaXMgbm8gbmV4dFxuJworICAgICAgICAnaXRlbS5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnVGhlIGZvci1sb29wIG1ha2VzIGFzc2lnbm1lbnRzIHRvIHRoZSB2YXJpYWJsZXMocykgaW4gdGhlIHRhcmdldCAnCisgICAgICAgICdsaXN0LlxuJworICAgICAgICAnVGhpcyBvdmVyd3JpdGVzIGFsbCBwcmV2aW91cyBhc3NpZ25tZW50cyB0byB0aG9zZSB2YXJpYWJsZXMgJworICAgICAgICAnaW5jbHVkaW5nXG4nCisgICAgICAgICd0aG9zZSBtYWRlIGluIHRoZSBzdWl0ZSBvZiB0aGUgZm9yLWxvb3A6XG4nCisgICAgICAgICdcbicKKyAgICAgICAgJyAgIGZvciBpIGluIHJhbmdlKDEwKTpcbicKKyAgICAgICAgJyAgICAgICBwcmludChpKVxuJworICAgICAgICAnICAgICAgIGkgPSA1ICAgICAgICAgICAgICMgdGhpcyB3aWxsIG5vdCBhZmZlY3QgdGhlIGZvci1sb29wXG4nCisgICAgICAgICcgICAgICAgICAgICAgICAgICAgICAgICAgIyBiZWNhdXNlIGkgd2lsbCBiZSBvdmVyd3JpdHRlbiB3aXRoIHRoZSAnCisgICAgICAgICduZXh0XG4nCisgICAgICAgICcgICAgICAgICAgICAgICAgICAgICAgICAgIyBpbmRleCBpbiB0aGUgcmFuZ2VcbicKKyAgICAgICAgJ1xuJworICAgICAgICAnTmFtZXMgaW4gdGhlIHRhcmdldCBsaXN0IGFyZSBub3QgZGVsZXRlZCB3aGVuIHRoZSBsb29wIGlzIGZpbmlzaGVkLFxuJworICAgICAgICAnYnV0IGlmIHRoZSBzZXF1ZW5jZSBpcyBlbXB0eSwgdGhleSB3aWxsIG5vdCBoYXZlIGJlZW4gYXNzaWduZWQgdG8gYXRcbicKKyAgICAgICAgJ2FsbCBieSB0aGUgbG9vcC4gIEhpbnQ6IHRoZSBidWlsdC1pbiBmdW5jdGlvbiAicmFuZ2UoKSIgcmV0dXJucyBhblxuJworICAgICAgICAnaXRlcmF0b3Igb2YgaW50ZWdlcnMgc3VpdGFibGUgdG8gZW11bGF0ZSB0aGUgZWZmZWN0IG9mIFBhc2NhbFwncyAiZm9yICcKKyAgICAgICAgJ2lcbicKKyAgICAgICAgJzo9IGEgdG8gYiBkbyI7IGUuZy4sICJsaXN0KHJhbmdlKDMpKSIgcmV0dXJucyB0aGUgbGlzdCAiWzAsIDEsIDJdIi5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnTm90ZTogVGhlcmUgaXMgYSBzdWJ0bGV0eSB3aGVuIHRoZSBzZXF1ZW5jZSBpcyBiZWluZyBtb2RpZmllZCBieSB0aGVcbicKKyAgICAgICAgJyAgbG9vcCAodGhpcyBjYW4gb25seSBvY2N1ciBmb3IgbXV0YWJsZSBzZXF1ZW5jZXMsIGkuZS4gbGlzdHMpLiAgQW5cbicKKyAgICAgICAgJyAgaW50ZXJuYWwgY291bnRlciBpcyB1c2VkIHRvIGtlZXAgdHJhY2sgb2Ygd2hpY2ggaXRlbSBpcyB1c2VkIG5leHQsXG4nCisgICAgICAgICcgIGFuZCB0aGlzIGlzIGluY3JlbWVudGVkIG9uIGVhY2ggaXRlcmF0aW9uLiAgV2hlbiB0aGlzIGNvdW50ZXIgaGFzXG4nCisgICAgICAgICcgIHJlYWNoZWQgdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2UgdGhlIGxvb3AgdGVybWluYXRlcy4gIFRoaXMgJworICAgICAgICAnbWVhbnNcbicKKyAgICAgICAgJyAgdGhhdCBpZiB0aGUgc3VpdGUgZGVsZXRlcyB0aGUgY3VycmVudCAob3IgYSBwcmV2aW91cykgaXRlbSBmcm9tICcKKyAgICAgICAgJ3RoZVxuJworICAgICAgICAnICBzZXF1ZW5jZSwgdGhlIG5leHQgaXRlbSB3aWxsIGJlIHNraXBwZWQgKHNpbmNlIGl0IGdldHMgdGhlIGluZGV4ICcKKyAgICAgICAgJ29mXG4nCisgICAgICAgICcgIHRoZSBjdXJyZW50IGl0ZW0gd2hpY2ggaGFzIGFscmVhZHkgYmVlbiB0cmVhdGVkKS4gIExpa2V3aXNlLCBpZiAnCisgICAgICAgICd0aGVcbicKKyAgICAgICAgJyAgc3VpdGUgaW5zZXJ0cyBhbiBpdGVtIGluIHRoZSBzZXF1ZW5jZSBiZWZvcmUgdGhlIGN1cnJlbnQgaXRlbSwgdGhlXG4nCisgICAgICAgICcgIGN1cnJlbnQgaXRlbSB3aWxsIGJlIHRyZWF0ZWQgYWdhaW4gdGhlIG5leHQgdGltZSB0aHJvdWdoIHRoZSBsb29wLlxuJworICAgICAgICAnICBUaGlzIGNhbiBsZWFkIHRvIG5hc3R5IGJ1Z3MgdGhhdCBjYW4gYmUgYXZvaWRlZCBieSBtYWtpbmcgYVxuJworICAgICAgICAnICB0ZW1wb3JhcnkgY29weSB1c2luZyBhIHNsaWNlIG9mIHRoZSB3aG9sZSBzZXF1ZW5jZSwgZS5nLixcbicKKyAgICAgICAgJ1xuJworICAgICAgICAnICAgICBmb3IgeCBpbiBhWzpdOlxuJworICAgICAgICAnICAgICAgICAgaWYgeCA8IDA6IGEucmVtb3ZlKHgpXG4nLAorICdmb3JtYXRzdHJpbmdzJzogJ1xuJworICAgICAgICAgICAgICAgICAgJ0Zvcm1hdCBTdHJpbmcgU3ludGF4XG4nCisgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgInN0ci5mb3JtYXQoKSIgbWV0aG9kIGFuZCB0aGUgIkZvcm1hdHRlciIgY2xhc3Mgc2hhcmUgJworICAgICAgICAgICAgICAgICAgJ3RoZSBzYW1lXG4nCisgICAgICAgICAgICAgICAgICAnc3ludGF4IGZvciBmb3JtYXQgc3RyaW5ncyAoYWx0aG91Z2ggaW4gdGhlIGNhc2Ugb2YgJworICAgICAgICAgICAgICAgICAgJyJGb3JtYXR0ZXIiLFxuJworICAgICAgICAgICAgICAgICAgJ3N1YmNsYXNzZXMgY2FuIGRlZmluZSB0aGVpciBvd24gZm9ybWF0IHN0cmluZyBzeW50YXgpLiAgVGhlICcKKyAgICAgICAgICAgICAgICAgICdzeW50YXggaXNcbicKKyAgICAgICAgICAgICAgICAgICdyZWxhdGVkIHRvIHRoYXQgb2YgZm9ybWF0dGVkIHN0cmluZyBsaXRlcmFscywgYnV0IHRoZXJlICcKKyAgICAgICAgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgICAgICAgICdkaWZmZXJlbmNlcy5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdGb3JtYXQgc3RyaW5ncyBjb250YWluICJyZXBsYWNlbWVudCBmaWVsZHMiIHN1cnJvdW5kZWQgYnkgJworICAgICAgICAgICAgICAgICAgJ2N1cmx5IGJyYWNlc1xuJworICAgICAgICAgICAgICAgICAgJyJ7fSIuIEFueXRoaW5nIHRoYXQgaXMgbm90IGNvbnRhaW5lZCBpbiBicmFjZXMgaXMgJworICAgICAgICAgICAgICAgICAgJ2NvbnNpZGVyZWQgbGl0ZXJhbFxuJworICAgICAgICAgICAgICAgICAgJ3RleHQsIHdoaWNoIGlzIGNvcGllZCB1bmNoYW5nZWQgdG8gdGhlIG91dHB1dC4gIElmIHlvdSBuZWVkICcKKyAgICAgICAgICAgICAgICAgICd0byBpbmNsdWRlXG4nCisgICAgICAgICAgICAgICAgICAnYSBicmFjZSBjaGFyYWN0ZXIgaW4gdGhlIGxpdGVyYWwgdGV4dCwgaXQgY2FuIGJlIGVzY2FwZWQgYnkgJworICAgICAgICAgICAgICAgICAgJ2RvdWJsaW5nOlxuJworICAgICAgICAgICAgICAgICAgJyJ7eyIgYW5kICJ9fSIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlIGdyYW1tYXIgZm9yIGEgcmVwbGFjZW1lbnQgZmllbGQgaXMgYXMgZm9sbG93czpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICByZXBsYWNlbWVudF9maWVsZCA6Oj0gInsiIFtmaWVsZF9uYW1lXSBbIiEiICcKKyAgICAgICAgICAgICAgICAgICdjb252ZXJzaW9uXSBbIjoiIGZvcm1hdF9zcGVjXSAifSJcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICBmaWVsZF9uYW1lICAgICAgICA6Oj0gYXJnX25hbWUgKCIuIiBhdHRyaWJ1dGVfbmFtZSB8ICcKKyAgICAgICAgICAgICAgICAgICciWyIgZWxlbWVudF9pbmRleCAiXSIpKlxuJworICAgICAgICAgICAgICAgICAgJyAgICAgIGFyZ19uYW1lICAgICAgICAgIDo6PSBbaWRlbnRpZmllciB8IGludGVnZXJdXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAgYXR0cmlidXRlX25hbWUgICAgOjo9IGlkZW50aWZpZXJcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICBlbGVtZW50X2luZGV4ICAgICA6Oj0gaW50ZWdlciB8IGluZGV4X3N0cmluZ1xuJworICAgICAgICAgICAgICAgICAgJyAgICAgIGluZGV4X3N0cmluZyAgICAgIDo6PSA8YW55IHNvdXJjZSBjaGFyYWN0ZXIgZXhjZXB0ICcKKyAgICAgICAgICAgICAgICAgICciXSI+ICtcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICBjb252ZXJzaW9uICAgICAgICA6Oj0gInIiIHwgInMiIHwgImEiXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAgZm9ybWF0X3NwZWMgICAgICAgOjo9IDxkZXNjcmliZWQgaW4gdGhlIG5leHQgJworICAgICAgICAgICAgICAgICAgJ3NlY3Rpb24+XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnSW4gbGVzcyBmb3JtYWwgdGVybXMsIHRoZSByZXBsYWNlbWVudCBmaWVsZCBjYW4gc3RhcnQgd2l0aCAnCisgICAgICAgICAgICAgICAgICAnYVxuJworICAgICAgICAgICAgICAgICAgJypmaWVsZF9uYW1lKiB0aGF0IHNwZWNpZmllcyB0aGUgb2JqZWN0IHdob3NlIHZhbHVlIGlzIHRvIGJlICcKKyAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZWRcbicKKyAgICAgICAgICAgICAgICAgICdhbmQgaW5zZXJ0ZWQgaW50byB0aGUgb3V0cHV0IGluc3RlYWQgb2YgdGhlIHJlcGxhY2VtZW50ICcKKyAgICAgICAgICAgICAgICAgICdmaWVsZC4gVGhlXG4nCisgICAgICAgICAgICAgICAgICAnKmZpZWxkX25hbWUqIGlzIG9wdGlvbmFsbHkgZm9sbG93ZWQgYnkgYSAgKmNvbnZlcnNpb24qICcKKyAgICAgICAgICAgICAgICAgICdmaWVsZCwgd2hpY2ggaXNcbicKKyAgICAgICAgICAgICAgICAgICdwcmVjZWRlZCBieSBhbiBleGNsYW1hdGlvbiBwb2ludCAiXCchXCciLCBhbmQgYSAnCisgICAgICAgICAgICAgICAgICAnKmZvcm1hdF9zcGVjKiwgd2hpY2ggaXNcbicKKyAgICAgICAgICAgICAgICAgICdwcmVjZWRlZCBieSBhIGNvbG9uICJcJzpcJyIuICBUaGVzZSBzcGVjaWZ5IGEgbm9uLWRlZmF1bHQgJworICAgICAgICAgICAgICAgICAgJ2Zvcm1hdCBmb3IgdGhlXG4nCisgICAgICAgICAgICAgICAgICAncmVwbGFjZW1lbnQgdmFsdWUuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnU2VlIGFsc28gdGhlIEZvcm1hdCBTcGVjaWZpY2F0aW9uIE1pbmktTGFuZ3VhZ2Ugc2VjdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgKmZpZWxkX25hbWUqIGl0c2VsZiBiZWdpbnMgd2l0aCBhbiAqYXJnX25hbWUqIHRoYXQgaXMgJworICAgICAgICAgICAgICAgICAgJ2VpdGhlciBhXG4nCisgICAgICAgICAgICAgICAgICAibnVtYmVyIG9yIGEga2V5d29yZC4gIElmIGl0J3MgYSBudW1iZXIsIGl0IHJlZmVycyB0byBhICIKKyAgICAgICAgICAgICAgICAgICdwb3NpdGlvbmFsXG4nCisgICAgICAgICAgICAgICAgICAiYXJndW1lbnQsIGFuZCBpZiBpdCdzIGEga2V5d29yZCwgaXQgcmVmZXJzIHRvIGEgbmFtZWQgIgorICAgICAgICAgICAgICAgICAgJ2tleXdvcmRcbicKKyAgICAgICAgICAgICAgICAgICdhcmd1bWVudC4gIElmIHRoZSBudW1lcmljYWwgYXJnX25hbWVzIGluIGEgZm9ybWF0IHN0cmluZyAnCisgICAgICAgICAgICAgICAgICAnYXJlIDAsIDEsIDIsXG4nCisgICAgICAgICAgICAgICAgICAnLi4uIGluIHNlcXVlbmNlLCB0aGV5IGNhbiBhbGwgYmUgb21pdHRlZCAobm90IGp1c3Qgc29tZSkgJworICAgICAgICAgICAgICAgICAgJ2FuZCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICdudW1iZXJzIDAsIDEsIDIsIC4uLiB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgaW5zZXJ0ZWQgaW4gdGhhdCAnCisgICAgICAgICAgICAgICAgICAnb3JkZXIuXG4nCisgICAgICAgICAgICAgICAgICAnQmVjYXVzZSAqYXJnX25hbWUqIGlzIG5vdCBxdW90ZS1kZWxpbWl0ZWQsIGl0IGlzIG5vdCAnCisgICAgICAgICAgICAgICAgICAncG9zc2libGUgdG9cbicKKyAgICAgICAgICAgICAgICAgICdzcGVjaWZ5IGFyYml0cmFyeSBkaWN0aW9uYXJ5IGtleXMgKGUuZy4sIHRoZSBzdHJpbmdzICcKKyAgICAgICAgICAgICAgICAgICciXCcxMFwnIiBvclxuJworICAgICAgICAgICAgICAgICAgJyJcJzotXVwnIikgd2l0aGluIGEgZm9ybWF0IHN0cmluZy4gVGhlICphcmdfbmFtZSogY2FuIGJlICcKKyAgICAgICAgICAgICAgICAgICdmb2xsb3dlZCBieSBhbnlcbicKKyAgICAgICAgICAgICAgICAgICdudW1iZXIgb2YgaW5kZXggb3IgYXR0cmlidXRlIGV4cHJlc3Npb25zLiBBbiBleHByZXNzaW9uIG9mICcKKyAgICAgICAgICAgICAgICAgICd0aGUgZm9ybVxuJworICAgICAgICAgICAgICAgICAgJyJcJy5uYW1lXCciIHNlbGVjdHMgdGhlIG5hbWVkIGF0dHJpYnV0ZSB1c2luZyAiZ2V0YXR0cigpIiwgJworICAgICAgICAgICAgICAgICAgJ3doaWxlIGFuXG4nCisgICAgICAgICAgICAgICAgICAnZXhwcmVzc2lvbiBvZiB0aGUgZm9ybSAiXCdbaW5kZXhdXCciIGRvZXMgYW4gaW5kZXggbG9va3VwICcKKyAgICAgICAgICAgICAgICAgICd1c2luZ1xuJworICAgICAgICAgICAgICAgICAgJyJfX2dldGl0ZW1fXygpIi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdDaGFuZ2VkIGluIHZlcnNpb24gMy4xOiBUaGUgcG9zaXRpb25hbCBhcmd1bWVudCBzcGVjaWZpZXJzICcKKyAgICAgICAgICAgICAgICAgICdjYW4gYmVcbicKKyAgICAgICAgICAgICAgICAgICdvbWl0dGVkLCBzbyAiXCd7fSB7fVwnIiBpcyBlcXVpdmFsZW50IHRvICJcJ3swfSB7MX1cJyIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnU29tZSBzaW1wbGUgZm9ybWF0IHN0cmluZyBleGFtcGxlczpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICAiRmlyc3QsIHRob3Ugc2hhbHQgY291bnQgdG8gezB9IiAgIyBSZWZlcmVuY2VzIGZpcnN0ICcKKyAgICAgICAgICAgICAgICAgICdwb3NpdGlvbmFsIGFyZ3VtZW50XG4nCisgICAgICAgICAgICAgICAgICAnICAgIkJyaW5nIG1lIGEge30iICAgICAgICAgICAgICAgICAgICMgSW1wbGljaXRseSAnCisgICAgICAgICAgICAgICAgICAncmVmZXJlbmNlcyB0aGUgZmlyc3QgcG9zaXRpb25hbCBhcmd1bWVudFxuJworICAgICAgICAgICAgICAgICAgJyAgICJGcm9tIHt9IHRvIHt9IiAgICAgICAgICAgICAgICAgICAjIFNhbWUgYXMgIkZyb20gezB9IHRvICcKKyAgICAgICAgICAgICAgICAgICd7MX0iXG4nCisgICAgICAgICAgICAgICAgICAnICAgIk15IHF1ZXN0IGlzIHtuYW1lfSIgICAgICAgICAgICAgICMgUmVmZXJlbmNlcyBrZXl3b3JkICcKKyAgICAgICAgICAgICAgICAgICJhcmd1bWVudCAnbmFtZSdcbiIKKyAgICAgICAgICAgICAgICAgICcgICAiV2VpZ2h0IGluIHRvbnMgezAud2VpZ2h0fSIgICAgICAgIyBcJ3dlaWdodFwnIGF0dHJpYnV0ZSAnCisgICAgICAgICAgICAgICAgICAnb2YgZmlyc3QgcG9zaXRpb25hbCBhcmdcbicKKyAgICAgICAgICAgICAgICAgICcgICAiVW5pdHMgZGVzdHJveWVkOiB7cGxheWVyc1swXX0iICAgIyBGaXJzdCBlbGVtZW50IG9mICcKKyAgICAgICAgICAgICAgICAgICJrZXl3b3JkIGFyZ3VtZW50ICdwbGF5ZXJzJy5cbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgKmNvbnZlcnNpb24qIGZpZWxkIGNhdXNlcyBhIHR5cGUgY29lcmNpb24gYmVmb3JlICcKKyAgICAgICAgICAgICAgICAgICdmb3JtYXR0aW5nLlxuJworICAgICAgICAgICAgICAgICAgJ05vcm1hbGx5LCB0aGUgam9iIG9mIGZvcm1hdHRpbmcgYSB2YWx1ZSBpcyBkb25lIGJ5IHRoZSAnCisgICAgICAgICAgICAgICAgICAnIl9fZm9ybWF0X18oKSJcbicKKyAgICAgICAgICAgICAgICAgICdtZXRob2Qgb2YgdGhlIHZhbHVlIGl0c2VsZi4gIEhvd2V2ZXIsIGluIHNvbWUgY2FzZXMgaXQgaXMgJworICAgICAgICAgICAgICAgICAgJ2Rlc2lyYWJsZSB0b1xuJworICAgICAgICAgICAgICAgICAgJ2ZvcmNlIGEgdHlwZSB0byBiZSBmb3JtYXR0ZWQgYXMgYSBzdHJpbmcsIG92ZXJyaWRpbmcgaXRzICcKKyAgICAgICAgICAgICAgICAgICdvd25cbicKKyAgICAgICAgICAgICAgICAgICdkZWZpbml0aW9uIG9mIGZvcm1hdHRpbmcuICBCeSBjb252ZXJ0aW5nIHRoZSB2YWx1ZSB0byBhICcKKyAgICAgICAgICAgICAgICAgICdzdHJpbmcgYmVmb3JlXG4nCisgICAgICAgICAgICAgICAgICAnY2FsbGluZyAiX19mb3JtYXRfXygpIiwgdGhlIG5vcm1hbCBmb3JtYXR0aW5nIGxvZ2ljIGlzICcKKyAgICAgICAgICAgICAgICAgICdieXBhc3NlZC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaHJlZSBjb252ZXJzaW9uIGZsYWdzIGFyZSBjdXJyZW50bHkgc3VwcG9ydGVkOiAiXCchc1wnIiAnCisgICAgICAgICAgICAgICAgICAnd2hpY2ggY2FsbHNcbicKKyAgICAgICAgICAgICAgICAgICcic3RyKCkiIG9uIHRoZSB2YWx1ZSwgIlwnIXJcJyIgd2hpY2ggY2FsbHMgInJlcHIoKSIgYW5kICcKKyAgICAgICAgICAgICAgICAgICciXCchYVwnIiB3aGljaFxuJworICAgICAgICAgICAgICAgICAgJ2NhbGxzICJhc2NpaSgpIi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdTb21lIGV4YW1wbGVzOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgICJIYXJvbGRcJ3MgYSBjbGV2ZXIgezAhc30iICAgICAgICAjIENhbGxzIHN0cigpIG9uIHRoZSAnCisgICAgICAgICAgICAgICAgICAnYXJndW1lbnQgZmlyc3RcbicKKyAgICAgICAgICAgICAgICAgICcgICAiQnJpbmcgb3V0IHRoZSBob2x5IHtuYW1lIXJ9IiAgICAjIENhbGxzIHJlcHIoKSBvbiB0aGUgJworICAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50IGZpcnN0XG4nCisgICAgICAgICAgICAgICAgICAnICAgIk1vcmUgeyFhfSIgICAgICAgICAgICAgICAgICAgICAgIyBDYWxscyBhc2NpaSgpIG9uIHRoZSAnCisgICAgICAgICAgICAgICAgICAnYXJndW1lbnQgZmlyc3RcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgKmZvcm1hdF9zcGVjKiBmaWVsZCBjb250YWlucyBhIHNwZWNpZmljYXRpb24gb2YgaG93IHRoZSAnCisgICAgICAgICAgICAgICAgICAndmFsdWVcbicKKyAgICAgICAgICAgICAgICAgICdzaG91bGQgYmUgcHJlc2VudGVkLCBpbmNsdWRpbmcgc3VjaCBkZXRhaWxzIGFzIGZpZWxkIHdpZHRoLCAnCisgICAgICAgICAgICAgICAgICAnYWxpZ25tZW50LFxuJworICAgICAgICAgICAgICAgICAgJ3BhZGRpbmcsIGRlY2ltYWwgcHJlY2lzaW9uIGFuZCBzbyBvbi4gIEVhY2ggdmFsdWUgdHlwZSBjYW4gJworICAgICAgICAgICAgICAgICAgJ2RlZmluZSBpdHNcbicKKyAgICAgICAgICAgICAgICAgICdvd24gImZvcm1hdHRpbmcgbWluaS1sYW5ndWFnZSIgb3IgaW50ZXJwcmV0YXRpb24gb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgICcqZm9ybWF0X3NwZWMqLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ01vc3QgYnVpbHQtaW4gdHlwZXMgc3VwcG9ydCBhIGNvbW1vbiBmb3JtYXR0aW5nICcKKyAgICAgICAgICAgICAgICAgICdtaW5pLWxhbmd1YWdlLCB3aGljaFxuJworICAgICAgICAgICAgICAgICAgJ2lzIGRlc2NyaWJlZCBpbiB0aGUgbmV4dCBzZWN0aW9uLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0EgKmZvcm1hdF9zcGVjKiBmaWVsZCBjYW4gYWxzbyBpbmNsdWRlIG5lc3RlZCByZXBsYWNlbWVudCAnCisgICAgICAgICAgICAgICAgICAnZmllbGRzXG4nCisgICAgICAgICAgICAgICAgICAnd2l0aGluIGl0LiBUaGVzZSBuZXN0ZWQgcmVwbGFjZW1lbnQgZmllbGRzIG1heSBjb250YWluIGEgJworICAgICAgICAgICAgICAgICAgJ2ZpZWxkIG5hbWUsXG4nCisgICAgICAgICAgICAgICAgICAnY29udmVyc2lvbiBmbGFnIGFuZCBmb3JtYXQgc3BlY2lmaWNhdGlvbiwgYnV0IGRlZXBlciAnCisgICAgICAgICAgICAgICAgICAnbmVzdGluZyBpcyBub3RcbicKKyAgICAgICAgICAgICAgICAgICdhbGxvd2VkLiAgVGhlIHJlcGxhY2VtZW50IGZpZWxkcyB3aXRoaW4gdGhlIGZvcm1hdF9zcGVjICcKKyAgICAgICAgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgICAgICAgICdzdWJzdGl0dXRlZCBiZWZvcmUgdGhlICpmb3JtYXRfc3BlYyogc3RyaW5nIGlzIGludGVycHJldGVkLiAnCisgICAgICAgICAgICAgICAgICAnVGhpc1xuJworICAgICAgICAgICAgICAgICAgJ2FsbG93cyB0aGUgZm9ybWF0dGluZyBvZiBhIHZhbHVlIHRvIGJlIGR5bmFtaWNhbGx5ICcKKyAgICAgICAgICAgICAgICAgICdzcGVjaWZpZWQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnU2VlIHRoZSBGb3JtYXQgZXhhbXBsZXMgc2VjdGlvbiBmb3Igc29tZSBleGFtcGxlcy5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdGb3JtYXQgU3BlY2lmaWNhdGlvbiBNaW5pLUxhbmd1YWdlXG4nCisgICAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyJGb3JtYXQgc3BlY2lmaWNhdGlvbnMiIGFyZSB1c2VkIHdpdGhpbiByZXBsYWNlbWVudCBmaWVsZHMgJworICAgICAgICAgICAgICAgICAgJ2NvbnRhaW5lZFxuJworICAgICAgICAgICAgICAgICAgJ3dpdGhpbiBhIGZvcm1hdCBzdHJpbmcgdG8gZGVmaW5lIGhvdyBpbmRpdmlkdWFsIHZhbHVlcyBhcmUgJworICAgICAgICAgICAgICAgICAgJ3ByZXNlbnRlZFxuJworICAgICAgICAgICAgICAgICAgJyhzZWUgRm9ybWF0IFN0cmluZyBTeW50YXggYW5kIEZvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbHMpLiAnCisgICAgICAgICAgICAgICAgICAnVGhleSBjYW5cbicKKyAgICAgICAgICAgICAgICAgICdhbHNvIGJlIHBhc3NlZCBkaXJlY3RseSB0byB0aGUgYnVpbHQtaW4gImZvcm1hdCgpIiAnCisgICAgICAgICAgICAgICAgICAnZnVuY3Rpb24uICBFYWNoXG4nCisgICAgICAgICAgICAgICAgICAnZm9ybWF0dGFibGUgdHlwZSBtYXkgZGVmaW5lIGhvdyB0aGUgZm9ybWF0IHNwZWNpZmljYXRpb24gaXMgJworICAgICAgICAgICAgICAgICAgJ3RvIGJlXG4nCisgICAgICAgICAgICAgICAgICAnaW50ZXJwcmV0ZWQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnTW9zdCBidWlsdC1pbiB0eXBlcyBpbXBsZW1lbnQgdGhlIGZvbGxvd2luZyBvcHRpb25zIGZvciAnCisgICAgICAgICAgICAgICAgICAnZm9ybWF0XG4nCisgICAgICAgICAgICAgICAgICAnc3BlY2lmaWNhdGlvbnMsIGFsdGhvdWdoIHNvbWUgb2YgdGhlIGZvcm1hdHRpbmcgb3B0aW9ucyBhcmUgJworICAgICAgICAgICAgICAgICAgJ29ubHlcbicKKyAgICAgICAgICAgICAgICAgICdzdXBwb3J0ZWQgYnkgdGhlIG51bWVyaWMgdHlwZXMuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnQSBnZW5lcmFsIGNvbnZlbnRpb24gaXMgdGhhdCBhbiBlbXB0eSBmb3JtYXQgc3RyaW5nICgiIiIiKSAnCisgICAgICAgICAgICAgICAgICAncHJvZHVjZXNcbicKKyAgICAgICAgICAgICAgICAgICd0aGUgc2FtZSByZXN1bHQgYXMgaWYgeW91IGhhZCBjYWxsZWQgInN0cigpIiBvbiB0aGUgdmFsdWUuICcKKyAgICAgICAgICAgICAgICAgICdBIG5vbi1lbXB0eVxuJworICAgICAgICAgICAgICAgICAgJ2Zvcm1hdCBzdHJpbmcgdHlwaWNhbGx5IG1vZGlmaWVzIHRoZSByZXN1bHQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlIGdlbmVyYWwgZm9ybSBvZiBhICpzdGFuZGFyZCBmb3JtYXQgc3BlY2lmaWVyKiBpczpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBmb3JtYXRfc3BlYyAgICAgOjo9ICcKKyAgICAgICAgICAgICAgICAgICdbW2ZpbGxdYWxpZ25dW3NpZ25dWyNdWzBdW3dpZHRoXVtncm91cGluZ19vcHRpb25dWy5wcmVjaXNpb25dW3R5cGVdXG4nCisgICAgICAgICAgICAgICAgICAnICAgZmlsbCAgICAgICAgICAgIDo6PSA8YW55IGNoYXJhY3Rlcj5cbicKKyAgICAgICAgICAgICAgICAgICcgICBhbGlnbiAgICAgICAgICAgOjo9ICI8IiB8ICI+IiB8ICI9IiB8ICJeIlxuJworICAgICAgICAgICAgICAgICAgJyAgIHNpZ24gICAgICAgICAgICA6Oj0gIisiIHwgIi0iIHwgIiAiXG4nCisgICAgICAgICAgICAgICAgICAnICAgd2lkdGggICAgICAgICAgIDo6PSBpbnRlZ2VyXG4nCisgICAgICAgICAgICAgICAgICAnICAgZ3JvdXBpbmdfb3B0aW9uIDo6PSAiXyIgfCAiLCJcbicKKyAgICAgICAgICAgICAgICAgICcgICBwcmVjaXNpb24gICAgICAgOjo9IGludGVnZXJcbicKKyAgICAgICAgICAgICAgICAgICcgICB0eXBlICAgICAgICAgICAgOjo9ICJiIiB8ICJjIiB8ICJkIiB8ICJlIiB8ICJFIiB8ICJmIiB8ICcKKyAgICAgICAgICAgICAgICAgICciRiIgfCAiZyIgfCAiRyIgfCAibiIgfCAibyIgfCAicyIgfCAieCIgfCAiWCIgfCAiJSJcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdJZiBhIHZhbGlkICphbGlnbiogdmFsdWUgaXMgc3BlY2lmaWVkLCBpdCBjYW4gYmUgcHJlY2VkZWQgJworICAgICAgICAgICAgICAgICAgJ2J5IGEgKmZpbGwqXG4nCisgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVyIHRoYXQgY2FuIGJlIGFueSBjaGFyYWN0ZXIgYW5kIGRlZmF1bHRzIHRvIGEgc3BhY2UgJworICAgICAgICAgICAgICAgICAgJ2lmXG4nCisgICAgICAgICAgICAgICAgICAnb21pdHRlZC4gSXQgaXMgbm90IHBvc3NpYmxlIHRvIHVzZSBhIGxpdGVyYWwgY3VybHkgYnJhY2UgJworICAgICAgICAgICAgICAgICAgJygiInsiIiBvclxuJworICAgICAgICAgICAgICAgICAgJyIifSIiKSBhcyB0aGUgKmZpbGwqIGNoYXJhY3RlciBpbiBhIGZvcm1hdHRlZCBzdHJpbmcgJworICAgICAgICAgICAgICAgICAgJ2xpdGVyYWwgb3Igd2hlblxuJworICAgICAgICAgICAgICAgICAgJ3VzaW5nIHRoZSAic3RyLmZvcm1hdCgpIiBtZXRob2QuICBIb3dldmVyLCBpdCBpcyBwb3NzaWJsZSAnCisgICAgICAgICAgICAgICAgICAndG8gaW5zZXJ0IGFcbicKKyAgICAgICAgICAgICAgICAgICdjdXJseSBicmFjZSB3aXRoIGEgbmVzdGVkIHJlcGxhY2VtZW50IGZpZWxkLiAgVGhpcyAnCisgICAgICAgICAgICAgICAgICAibGltaXRhdGlvbiBkb2Vzbid0XG4iCisgICAgICAgICAgICAgICAgICAnYWZmZWN0IHRoZSAiZm9ybWF0KCkiIGZ1bmN0aW9uLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSBtZWFuaW5nIG9mIHRoZSB2YXJpb3VzIGFsaWdubWVudCBvcHRpb25zIGlzIGFzICcKKyAgICAgICAgICAgICAgICAgICdmb2xsb3dzOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgT3B0aW9uICAgIHwgJworICAgICAgICAgICAgICAgICAgJ01lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgICAgICAgJ3xcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJzxcJyIgICAgIHwgRm9yY2VzIHRoZSBmaWVsZCB0byBiZSBsZWZ0LWFsaWduZWQgJworICAgICAgICAgICAgICAgICAgJ3dpdGhpbiB0aGUgYXZhaWxhYmxlICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgc3BhY2UgKHRoaXMgaXMgdGhlIGRlZmF1bHQgZm9yIG1vc3QgJworICAgICAgICAgICAgICAgICAgJ29iamVjdHMpLiAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnPlwnIiAgICAgfCBGb3JjZXMgdGhlIGZpZWxkIHRvIGJlIHJpZ2h0LWFsaWduZWQgJworICAgICAgICAgICAgICAgICAgJ3dpdGhpbiB0aGUgYXZhaWxhYmxlICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBzcGFjZSAodGhpcyBpcyB0aGUgZGVmYXVsdCBmb3IgJworICAgICAgICAgICAgICAgICAgJ251bWJlcnMpLiAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCc9XCciICAgICB8IEZvcmNlcyB0aGUgcGFkZGluZyB0byBiZSBwbGFjZWQgYWZ0ZXIgJworICAgICAgICAgICAgICAgICAgJ3RoZSBzaWduIChpZiBhbnkpICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IGJ1dCBiZWZvcmUgdGhlIGRpZ2l0cy4gIFRoaXMgaXMgdXNlZCBmb3IgJworICAgICAgICAgICAgICAgICAgJ3ByaW50aW5nIGZpZWxkcyAgIHxcbicKKyAgICAgICAgICAgICAgICAgICIgICB8ICAgICAgICAgICB8IGluIHRoZSBmb3JtICcrMDAwMDAwMTIwJy4gVGhpcyBhbGlnbm1lbnQgIgorICAgICAgICAgICAgICAgICAgJ29wdGlvbiBpcyBvbmx5ICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHZhbGlkIGZvciBudW1lcmljIHR5cGVzLiAgSXQgYmVjb21lcyB0aGUgJworICAgICAgICAgICAgICAgICAgImRlZmF1bHQgd2hlbiAnMCcgIHxcbiIKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IGltbWVkaWF0ZWx5IHByZWNlZGVzIHRoZSBmaWVsZCAnCisgICAgICAgICAgICAgICAgICAnd2lkdGguICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJ15cJyIgICAgIHwgRm9yY2VzIHRoZSBmaWVsZCB0byBiZSBjZW50ZXJlZCB3aXRoaW4gJworICAgICAgICAgICAgICAgICAgJ3RoZSBhdmFpbGFibGUgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgJ3NwYWNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgICAgICAgJ3xcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdOb3RlIHRoYXQgdW5sZXNzIGEgbWluaW11bSBmaWVsZCB3aWR0aCBpcyBkZWZpbmVkLCB0aGUgJworICAgICAgICAgICAgICAgICAgJ2ZpZWxkIHdpZHRoXG4nCisgICAgICAgICAgICAgICAgICAnd2lsbCBhbHdheXMgYmUgdGhlIHNhbWUgc2l6ZSBhcyB0aGUgZGF0YSB0byBmaWxsIGl0LCBzbyAnCisgICAgICAgICAgICAgICAgICAndGhhdCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICdhbGlnbm1lbnQgb3B0aW9uIGhhcyBubyBtZWFuaW5nIGluIHRoaXMgY2FzZS5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgKnNpZ24qIG9wdGlvbiBpcyBvbmx5IHZhbGlkIGZvciBudW1iZXIgdHlwZXMsIGFuZCBjYW4gJworICAgICAgICAgICAgICAgICAgJ2JlIG9uZSBvZlxuJworICAgICAgICAgICAgICAgICAgJ3RoZSBmb2xsb3dpbmc6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCBPcHRpb24gICAgfCAnCisgICAgICAgICAgICAgICAgICAnTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnK1wnIiAgICAgfCBpbmRpY2F0ZXMgdGhhdCBhIHNpZ24gc2hvdWxkIGJlIHVzZWQgZm9yICcKKyAgICAgICAgICAgICAgICAgICdib3RoIHBvc2l0aXZlIGFzICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCB3ZWxsIGFzIG5lZ2F0aXZlICcKKyAgICAgICAgICAgICAgICAgICdudW1iZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCctXCciICAgICB8IGluZGljYXRlcyB0aGF0IGEgc2lnbiBzaG91bGQgYmUgdXNlZCAnCisgICAgICAgICAgICAgICAgICAnb25seSBmb3IgbmVnYXRpdmUgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IG51bWJlcnMgKHRoaXMgaXMgdGhlIGRlZmF1bHQgJworICAgICAgICAgICAgICAgICAgJ2JlaGF2aW9yKS4gICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8IHNwYWNlICAgICB8IGluZGljYXRlcyB0aGF0IGEgbGVhZGluZyBzcGFjZSBzaG91bGQgYmUgJworICAgICAgICAgICAgICAgICAgJ3VzZWQgb24gcG9zaXRpdmUgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IG51bWJlcnMsIGFuZCBhIG1pbnVzIHNpZ24gb24gbmVnYXRpdmUgJworICAgICAgICAgICAgICAgICAgJ251bWJlcnMuICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgIlwnI1wnIiBvcHRpb24gY2F1c2VzIHRoZSAiYWx0ZXJuYXRlIGZvcm0iIHRvIGJlIHVzZWQgJworICAgICAgICAgICAgICAgICAgJ2ZvciB0aGVcbicKKyAgICAgICAgICAgICAgICAgICdjb252ZXJzaW9uLiAgVGhlIGFsdGVybmF0ZSBmb3JtIGlzIGRlZmluZWQgZGlmZmVyZW50bHkgZm9yICcKKyAgICAgICAgICAgICAgICAgICdkaWZmZXJlbnRcbicKKyAgICAgICAgICAgICAgICAgICd0eXBlcy4gIFRoaXMgb3B0aW9uIGlzIG9ubHkgdmFsaWQgZm9yIGludGVnZXIsIGZsb2F0LCAnCisgICAgICAgICAgICAgICAgICAnY29tcGxleCBhbmRcbicKKyAgICAgICAgICAgICAgICAgICdEZWNpbWFsIHR5cGVzLiBGb3IgaW50ZWdlcnMsIHdoZW4gYmluYXJ5LCBvY3RhbCwgb3IgJworICAgICAgICAgICAgICAgICAgJ2hleGFkZWNpbWFsIG91dHB1dFxuJworICAgICAgICAgICAgICAgICAgJ2lzIHVzZWQsIHRoaXMgb3B0aW9uIGFkZHMgdGhlIHByZWZpeCByZXNwZWN0aXZlICJcJzBiXCciLCAnCisgICAgICAgICAgICAgICAgICAnIlwnMG9cJyIsIG9yXG4nCisgICAgICAgICAgICAgICAgICAnIlwnMHhcJyIgdG8gdGhlIG91dHB1dCB2YWx1ZS4gRm9yIGZsb2F0cywgY29tcGxleCBhbmQgJworICAgICAgICAgICAgICAgICAgJ0RlY2ltYWwgdGhlXG4nCisgICAgICAgICAgICAgICAgICAnYWx0ZXJuYXRlIGZvcm0gY2F1c2VzIHRoZSByZXN1bHQgb2YgdGhlIGNvbnZlcnNpb24gdG8gJworICAgICAgICAgICAgICAgICAgJ2Fsd2F5cyBjb250YWluIGFcbicKKyAgICAgICAgICAgICAgICAgICdkZWNpbWFsLXBvaW50IGNoYXJhY3RlciwgZXZlbiBpZiBubyBkaWdpdHMgZm9sbG93IGl0LiAnCisgICAgICAgICAgICAgICAgICAnTm9ybWFsbHksIGFcbicKKyAgICAgICAgICAgICAgICAgICdkZWNpbWFsLXBvaW50IGNoYXJhY3RlciBhcHBlYXJzIGluIHRoZSByZXN1bHQgb2YgdGhlc2UgJworICAgICAgICAgICAgICAgICAgJ2NvbnZlcnNpb25zXG4nCisgICAgICAgICAgICAgICAgICAnb25seSBpZiBhIGRpZ2l0IGZvbGxvd3MgaXQuIEluIGFkZGl0aW9uLCBmb3IgIlwnZ1wnIiBhbmQgJworICAgICAgICAgICAgICAgICAgJyJcJ0dcJyJcbicKKyAgICAgICAgICAgICAgICAgICdjb252ZXJzaW9ucywgdHJhaWxpbmcgemVyb3MgYXJlIG5vdCByZW1vdmVkIGZyb20gdGhlICcKKyAgICAgICAgICAgICAgICAgICdyZXN1bHQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlICJcJyxcJyIgb3B0aW9uIHNpZ25hbHMgdGhlIHVzZSBvZiBhIGNvbW1hIGZvciBhICcKKyAgICAgICAgICAgICAgICAgICd0aG91c2FuZHMgc2VwYXJhdG9yLlxuJworICAgICAgICAgICAgICAgICAgJ0ZvciBhIGxvY2FsZSBhd2FyZSBzZXBhcmF0b3IsIHVzZSB0aGUgIlwnblwnIiBpbnRlZ2VyICcKKyAgICAgICAgICAgICAgICAgICdwcmVzZW50YXRpb24gdHlwZVxuJworICAgICAgICAgICAgICAgICAgJ2luc3RlYWQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogQWRkZWQgdGhlICJcJyxcJyIgb3B0aW9uIChzZWUgYWxzbyAnCisgICAgICAgICAgICAgICAgICAnKipQRVAgMzc4KiopLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSAiXCdfXCciIG9wdGlvbiBzaWduYWxzIHRoZSB1c2Ugb2YgYW4gdW5kZXJzY29yZSBmb3IgYSAnCisgICAgICAgICAgICAgICAgICAndGhvdXNhbmRzXG4nCisgICAgICAgICAgICAgICAgICAnc2VwYXJhdG9yIGZvciBmbG9hdGluZyBwb2ludCBwcmVzZW50YXRpb24gdHlwZXMgYW5kIGZvciAnCisgICAgICAgICAgICAgICAgICAnaW50ZWdlclxuJworICAgICAgICAgICAgICAgICAgJ3ByZXNlbnRhdGlvbiB0eXBlICJcJ2RcJyIuICBGb3IgaW50ZWdlciBwcmVzZW50YXRpb24gdHlwZXMgJworICAgICAgICAgICAgICAgICAgJyJcJ2JcJyIsICJcJ29cJyIsXG4nCisgICAgICAgICAgICAgICAgICAnIlwneFwnIiwgYW5kICJcJ1hcJyIsIHVuZGVyc2NvcmVzIHdpbGwgYmUgaW5zZXJ0ZWQgZXZlcnkgNCAnCisgICAgICAgICAgICAgICAgICAnZGlnaXRzLiAgRm9yXG4nCisgICAgICAgICAgICAgICAgICAnb3RoZXIgcHJlc2VudGF0aW9uIHR5cGVzLCBzcGVjaWZ5aW5nIHRoaXMgb3B0aW9uIGlzIGFuICcKKyAgICAgICAgICAgICAgICAgICdlcnJvci5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdDaGFuZ2VkIGluIHZlcnNpb24gMy42OiBBZGRlZCB0aGUgIlwnX1wnIiBvcHRpb24gKHNlZSBhbHNvICcKKyAgICAgICAgICAgICAgICAgICcqKlBFUCA1MTUqKikuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnKndpZHRoKiBpcyBhIGRlY2ltYWwgaW50ZWdlciBkZWZpbmluZyB0aGUgbWluaW11bSBmaWVsZCAnCisgICAgICAgICAgICAgICAgICAnd2lkdGguICBJZiBub3RcbicKKyAgICAgICAgICAgICAgICAgICdzcGVjaWZpZWQsIHRoZW4gdGhlIGZpZWxkIHdpZHRoIHdpbGwgYmUgZGV0ZXJtaW5lZCBieSB0aGUgJworICAgICAgICAgICAgICAgICAgJ2NvbnRlbnQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnV2hlbiBubyBleHBsaWNpdCBhbGlnbm1lbnQgaXMgZ2l2ZW4sIHByZWNlZGluZyB0aGUgKndpZHRoKiAnCisgICAgICAgICAgICAgICAgICAnZmllbGQgYnkgYVxuJworICAgICAgICAgICAgICAgICAgJ3plcm8gKCJcJzBcJyIpIGNoYXJhY3RlciBlbmFibGVzIHNpZ24tYXdhcmUgemVyby1wYWRkaW5nICcKKyAgICAgICAgICAgICAgICAgICdmb3IgbnVtZXJpY1xuJworICAgICAgICAgICAgICAgICAgJ3R5cGVzLiAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIGEgKmZpbGwqIGNoYXJhY3RlciBvZiAiXCcwXCciICcKKyAgICAgICAgICAgICAgICAgICd3aXRoIGFuXG4nCisgICAgICAgICAgICAgICAgICAnKmFsaWdubWVudCogdHlwZSBvZiAiXCc9XCciLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSAqcHJlY2lzaW9uKiBpcyBhIGRlY2ltYWwgbnVtYmVyIGluZGljYXRpbmcgaG93IG1hbnkgJworICAgICAgICAgICAgICAgICAgJ2RpZ2l0cyBzaG91bGRcbicKKyAgICAgICAgICAgICAgICAgICdiZSBkaXNwbGF5ZWQgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnQgZm9yIGEgZmxvYXRpbmcgcG9pbnQgJworICAgICAgICAgICAgICAgICAgJ3ZhbHVlXG4nCisgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVkIHdpdGggIlwnZlwnIiBhbmQgIlwnRlwnIiwgb3IgYmVmb3JlIGFuZCBhZnRlciB0aGUgJworICAgICAgICAgICAgICAgICAgJ2RlY2ltYWwgcG9pbnRcbicKKyAgICAgICAgICAgICAgICAgICdmb3IgYSBmbG9hdGluZyBwb2ludCB2YWx1ZSBmb3JtYXR0ZWQgd2l0aCAiXCdnXCciIG9yICcKKyAgICAgICAgICAgICAgICAgICciXCdHXCciLiAgRm9yIG5vbi1cbicKKyAgICAgICAgICAgICAgICAgICdudW1iZXIgdHlwZXMgdGhlIGZpZWxkIGluZGljYXRlcyB0aGUgbWF4aW11bSBmaWVsZCBzaXplIC0gJworICAgICAgICAgICAgICAgICAgJ2luIG90aGVyXG4nCisgICAgICAgICAgICAgICAgICAnd29yZHMsIGhvdyBtYW55IGNoYXJhY3RlcnMgd2lsbCBiZSB1c2VkIGZyb20gdGhlIGZpZWxkICcKKyAgICAgICAgICAgICAgICAgICdjb250ZW50LiBUaGVcbicKKyAgICAgICAgICAgICAgICAgICcqcHJlY2lzaW9uKiBpcyBub3QgYWxsb3dlZCBmb3IgaW50ZWdlciB2YWx1ZXMuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnRmluYWxseSwgdGhlICp0eXBlKiBkZXRlcm1pbmVzIGhvdyB0aGUgZGF0YSBzaG91bGQgYmUgJworICAgICAgICAgICAgICAgICAgJ3ByZXNlbnRlZC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgYXZhaWxhYmxlIHN0cmluZyBwcmVzZW50YXRpb24gdHlwZXMgYXJlOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgVHlwZSAgICAgIHwgJworICAgICAgICAgICAgICAgICAgJ01lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgICAgICAgJ3xcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJ3NcJyIgICAgIHwgU3RyaW5nIGZvcm1hdC4gVGhpcyBpcyB0aGUgZGVmYXVsdCB0eXBlICcKKyAgICAgICAgICAgICAgICAgICdmb3Igc3RyaW5ncyBhbmQgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgbWF5IGJlICcKKyAgICAgICAgICAgICAgICAgICdvbWl0dGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgTm9uZSAgICAgIHwgVGhlIHNhbWUgYXMgJworICAgICAgICAgICAgICAgICAgJyJcJ3NcJyIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlIGF2YWlsYWJsZSBpbnRlZ2VyIHByZXNlbnRhdGlvbiB0eXBlcyBhcmU6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCBUeXBlICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAnTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnYlwnIiAgICAgfCBCaW5hcnkgZm9ybWF0LiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gJworICAgICAgICAgICAgICAgICAgJ2Jhc2UgMi4gICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCdjXCciICAgICB8IENoYXJhY3Rlci4gQ29udmVydHMgdGhlIGludGVnZXIgdG8gdGhlICcKKyAgICAgICAgICAgICAgICAgICdjb3JyZXNwb25kaW5nICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHVuaWNvZGUgY2hhcmFjdGVyIGJlZm9yZSAnCisgICAgICAgICAgICAgICAgICAncHJpbnRpbmcuICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJ2RcJyIgICAgIHwgRGVjaW1hbCBJbnRlZ2VyLiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gJworICAgICAgICAgICAgICAgICAgJ2Jhc2UgMTAuICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnb1wnIiAgICAgfCBPY3RhbCBmb3JtYXQuIE91dHB1dHMgdGhlIG51bWJlciBpbiBiYXNlICcKKyAgICAgICAgICAgICAgICAgICc4LiAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCd4XCciICAgICB8IEhleCBmb3JtYXQuIE91dHB1dHMgdGhlIG51bWJlciBpbiBiYXNlICcKKyAgICAgICAgICAgICAgICAgICcxNiwgdXNpbmcgbG93ZXItICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IGNhc2UgbGV0dGVycyBmb3IgdGhlIGRpZ2l0cyBhYm92ZSAnCisgICAgICAgICAgICAgICAgICAnOS4gICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJ1hcJyIgICAgIHwgSGV4IGZvcm1hdC4gT3V0cHV0cyB0aGUgbnVtYmVyIGluIGJhc2UgJworICAgICAgICAgICAgICAgICAgJzE2LCB1c2luZyB1cHBlci0gICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgY2FzZSBsZXR0ZXJzIGZvciB0aGUgZGlnaXRzIGFib3ZlICcKKyAgICAgICAgICAgICAgICAgICc5LiAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnblwnIiAgICAgfCBOdW1iZXIuIFRoaXMgaXMgdGhlIHNhbWUgYXMgIlwnZFwnIiwgJworICAgICAgICAgICAgICAgICAgJ2V4Y2VwdCB0aGF0IGl0IHVzZXMgdGhlIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IGN1cnJlbnQgbG9jYWxlIHNldHRpbmcgdG8gaW5zZXJ0IHRoZSAnCisgICAgICAgICAgICAgICAgICAnYXBwcm9wcmlhdGUgbnVtYmVyICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHNlcGFyYXRvciAnCisgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8IE5vbmUgICAgICB8IFRoZSBzYW1lIGFzICcKKyAgICAgICAgICAgICAgICAgICciXCdkXCciLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0luIGFkZGl0aW9uIHRvIHRoZSBhYm92ZSBwcmVzZW50YXRpb24gdHlwZXMsIGludGVnZXJzIGNhbiAnCisgICAgICAgICAgICAgICAgICAnYmUgZm9ybWF0dGVkXG4nCisgICAgICAgICAgICAgICAgICAnd2l0aCB0aGUgZmxvYXRpbmcgcG9pbnQgcHJlc2VudGF0aW9uIHR5cGVzIGxpc3RlZCBiZWxvdyAnCisgICAgICAgICAgICAgICAgICAnKGV4Y2VwdCAiXCduXCciXG4nCisgICAgICAgICAgICAgICAgICAnYW5kICJOb25lIikuIFdoZW4gZG9pbmcgc28sICJmbG9hdCgpIiBpcyB1c2VkIHRvIGNvbnZlcnQgJworICAgICAgICAgICAgICAgICAgJ3RoZSBpbnRlZ2VyXG4nCisgICAgICAgICAgICAgICAgICAndG8gYSBmbG9hdGluZyBwb2ludCBudW1iZXIgYmVmb3JlIGZvcm1hdHRpbmcuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlIGF2YWlsYWJsZSBwcmVzZW50YXRpb24gdHlwZXMgZm9yIGZsb2F0aW5nIHBvaW50IGFuZCAnCisgICAgICAgICAgICAgICAgICAnZGVjaW1hbCB2YWx1ZXNcbicKKyAgICAgICAgICAgICAgICAgICdhcmU6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCBUeXBlICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAnTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnZVwnIiAgICAgfCBFeHBvbmVudCBub3RhdGlvbi4gUHJpbnRzIHRoZSBudW1iZXIgaW4gJworICAgICAgICAgICAgICAgICAgJ3NjaWVudGlmaWMgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAiICAgfCAgICAgICAgICAgfCBub3RhdGlvbiB1c2luZyB0aGUgbGV0dGVyICdlJyB0byBpbmRpY2F0ZSAiCisgICAgICAgICAgICAgICAgICAndGhlIGV4cG9uZW50LiAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBUaGUgZGVmYXVsdCBwcmVjaXNpb24gaXMgJworICAgICAgICAgICAgICAgICAgJyI2Ii4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCdFXCciICAgICB8IEV4cG9uZW50IG5vdGF0aW9uLiBTYW1lIGFzICJcJ2VcJyIgJworICAgICAgICAgICAgICAgICAgJ2V4Y2VwdCBpdCB1c2VzIGFuIHVwcGVyICAgfFxuJworICAgICAgICAgICAgICAgICAgIiAgIHwgICAgICAgICAgIHwgY2FzZSAnRScgYXMgdGhlIHNlcGFyYXRvciAiCisgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVyLiAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnZlwnIiAgICAgfCBGaXhlZCBwb2ludC4gRGlzcGxheXMgdGhlIG51bWJlciBhcyBhICcKKyAgICAgICAgICAgICAgICAgICdmaXhlZC1wb2ludCBudW1iZXIuICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBUaGUgZGVmYXVsdCBwcmVjaXNpb24gaXMgJworICAgICAgICAgICAgICAgICAgJyI2Ii4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCdGXCciICAgICB8IEZpeGVkIHBvaW50LiBTYW1lIGFzICJcJ2ZcJyIsIGJ1dCAnCisgICAgICAgICAgICAgICAgICAnY29udmVydHMgIm5hbiIgdG8gIk5BTiIgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgYW5kICJpbmYiIHRvICcKKyAgICAgICAgICAgICAgICAgICciSU5GIi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnZ1wnIiAgICAgfCBHZW5lcmFsIGZvcm1hdC4gIEZvciBhIGdpdmVuIHByZWNpc2lvbiAnCisgICAgICAgICAgICAgICAgICAnInAgPj0gMSIsIHRoaXMgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCByb3VuZHMgdGhlIG51bWJlciB0byAicCIgc2lnbmlmaWNhbnQgJworICAgICAgICAgICAgICAgICAgJ2RpZ2l0cyBhbmQgdGhlbiAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBmb3JtYXRzIHRoZSByZXN1bHQgaW4gZWl0aGVyIGZpeGVkLXBvaW50ICcKKyAgICAgICAgICAgICAgICAgICdmb3JtYXQgb3IgaW4gICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBzY2llbnRpZmljIG5vdGF0aW9uLCBkZXBlbmRpbmcgb24gaXRzICcKKyAgICAgICAgICAgICAgICAgICdtYWduaXR1ZGUuICBUaGUgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBwcmVjaXNlIHJ1bGVzIGFyZSBhcyBmb2xsb3dzOiBzdXBwb3NlIHRoYXQgJworICAgICAgICAgICAgICAgICAgJ3RoZSByZXN1bHQgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBmb3JtYXR0ZWQgd2l0aCBwcmVzZW50YXRpb24gdHlwZSAiXCdlXCciICcKKyAgICAgICAgICAgICAgICAgICdhbmQgcHJlY2lzaW9uICJwLTEiIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHdvdWxkIGhhdmUgZXhwb25lbnQgImV4cCIuICBUaGVuIGlmICItNCA8PSAnCisgICAgICAgICAgICAgICAgICAnZXhwIDwgcCIsIHRoZSAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IG51bWJlciBpcyBmb3JtYXR0ZWQgd2l0aCBwcmVzZW50YXRpb24gdHlwZSAnCisgICAgICAgICAgICAgICAgICAnIlwnZlwnIiBhbmQgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgcHJlY2lzaW9uICJwLTEtZXhwIi4gIE90aGVyd2lzZSwgdGhlICcKKyAgICAgICAgICAgICAgICAgICdudW1iZXIgaXMgZm9ybWF0dGVkICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgd2l0aCBwcmVzZW50YXRpb24gdHlwZSAiXCdlXCciIGFuZCAnCisgICAgICAgICAgICAgICAgICAncHJlY2lzaW9uICJwLTEiLiBJbiBib3RoICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBjYXNlcyBpbnNpZ25pZmljYW50IHRyYWlsaW5nIHplcm9zIGFyZSAnCisgICAgICAgICAgICAgICAgICAncmVtb3ZlZCBmcm9tIHRoZSAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBzaWduaWZpY2FuZCwgYW5kIHRoZSBkZWNpbWFsIHBvaW50IGlzIGFsc28gJworICAgICAgICAgICAgICAgICAgJ3JlbW92ZWQgaWYgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCB0aGVyZSBhcmUgbm8gcmVtYWluaW5nIGRpZ2l0cyBmb2xsb3dpbmcgJworICAgICAgICAgICAgICAgICAgJ2l0LiAgUG9zaXRpdmUgYW5kICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBuZWdhdGl2ZSBpbmZpbml0eSwgcG9zaXRpdmUgYW5kIG5lZ2F0aXZlICcKKyAgICAgICAgICAgICAgICAgICd6ZXJvLCBhbmQgbmFucywgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBhcmUgZm9ybWF0dGVkIGFzICJpbmYiLCAiLWluZiIsICIwIiwgIi0wIiAnCisgICAgICAgICAgICAgICAgICAnYW5kICJuYW4iICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCByZXNwZWN0aXZlbHksIHJlZ2FyZGxlc3Mgb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgICdwcmVjaXNpb24uICBBIHByZWNpc2lvbiBvZiB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCAiMCIgaXMgdHJlYXRlZCBhcyBlcXVpdmFsZW50IHRvIGEgJworICAgICAgICAgICAgICAgICAgJ3ByZWNpc2lvbiBvZiAiMSIuIFRoZSAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBkZWZhdWx0IHByZWNpc2lvbiBpcyAnCisgICAgICAgICAgICAgICAgICAnIjYiLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCdHXCciICAgICB8IEdlbmVyYWwgZm9ybWF0LiBTYW1lIGFzICJcJ2dcJyIgZXhjZXB0ICcKKyAgICAgICAgICAgICAgICAgICdzd2l0Y2hlcyB0byAiXCdFXCciIGlmICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCB0aGUgbnVtYmVyIGdldHMgdG9vIGxhcmdlLiBUaGUgJworICAgICAgICAgICAgICAgICAgJ3JlcHJlc2VudGF0aW9ucyBvZiBpbmZpbml0eSB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBhbmQgTmFOIGFyZSB1cHBlcmNhc2VkLCAnCisgICAgICAgICAgICAgICAgICAndG9vLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCduXCciICAgICB8IE51bWJlci4gVGhpcyBpcyB0aGUgc2FtZSBhcyAiXCdnXCciLCAnCisgICAgICAgICAgICAgICAgICAnZXhjZXB0IHRoYXQgaXQgdXNlcyB0aGUgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgY3VycmVudCBsb2NhbGUgc2V0dGluZyB0byBpbnNlcnQgdGhlICcKKyAgICAgICAgICAgICAgICAgICdhcHByb3ByaWF0ZSBudW1iZXIgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgc2VwYXJhdG9yICcKKyAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnJVwnIiAgICAgfCBQZXJjZW50YWdlLiBNdWx0aXBsaWVzIHRoZSBudW1iZXIgYnkgMTAwICcKKyAgICAgICAgICAgICAgICAgICdhbmQgZGlzcGxheXMgaW4gICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBmaXhlZCAoIlwnZlwnIikgZm9ybWF0LCBmb2xsb3dlZCBieSBhICcKKyAgICAgICAgICAgICAgICAgICdwZXJjZW50IHNpZ24uICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8IE5vbmUgICAgICB8IFNpbWlsYXIgdG8gIlwnZ1wnIiwgZXhjZXB0IHRoYXQgJworICAgICAgICAgICAgICAgICAgJ2ZpeGVkLXBvaW50IG5vdGF0aW9uLCB3aGVuICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgdXNlZCwgaGFzIGF0IGxlYXN0IG9uZSBkaWdpdCBwYXN0IHRoZSAnCisgICAgICAgICAgICAgICAgICAnZGVjaW1hbCBwb2ludC4gVGhlICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgZGVmYXVsdCBwcmVjaXNpb24gaXMgYXMgaGlnaCBhcyBuZWVkZWQgdG8gJworICAgICAgICAgICAgICAgICAgJ3JlcHJlc2VudCB0aGUgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgcGFydGljdWxhciB2YWx1ZS4gVGhlIG92ZXJhbGwgZWZmZWN0IGlzIHRvICcKKyAgICAgICAgICAgICAgICAgICdtYXRjaCB0aGUgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgb3V0cHV0IG9mICJzdHIoKSIgYXMgYWx0ZXJlZCBieSB0aGUgb3RoZXIgJworICAgICAgICAgICAgICAgICAgJ2Zvcm1hdCAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgJ21vZGlmaWVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgICAgICAgJ3xcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdGb3JtYXQgZXhhbXBsZXNcbicKKyAgICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGlzIHNlY3Rpb24gY29udGFpbnMgZXhhbXBsZXMgb2YgdGhlICJzdHIuZm9ybWF0KCkiIHN5bnRheCAnCisgICAgICAgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAgICAgICAnY29tcGFyaXNvbiB3aXRoIHRoZSBvbGQgIiUiLWZvcm1hdHRpbmcuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnSW4gbW9zdCBvZiB0aGUgY2FzZXMgdGhlIHN5bnRheCBpcyBzaW1pbGFyIHRvIHRoZSBvbGQgJworICAgICAgICAgICAgICAgICAgJyIlIi1mb3JtYXR0aW5nLFxuJworICAgICAgICAgICAgICAgICAgJ3dpdGggdGhlIGFkZGl0aW9uIG9mIHRoZSAie30iIGFuZCB3aXRoICI6IiB1c2VkIGluc3RlYWQgb2YgJworICAgICAgICAgICAgICAgICAgJyIlIi4gRm9yXG4nCisgICAgICAgICAgICAgICAgICAnZXhhbXBsZSwgIlwnJTAzLjJmXCciIGNhbiBiZSB0cmFuc2xhdGVkIHRvICJcJ3s6MDMuMmZ9XCciLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSBuZXcgZm9ybWF0IHN5bnRheCBhbHNvIHN1cHBvcnRzIG5ldyBhbmQgZGlmZmVyZW50ICcKKyAgICAgICAgICAgICAgICAgICdvcHRpb25zLCBzaG93blxuJworICAgICAgICAgICAgICAgICAgJ2luIHRoZSBmb2xsb3cgZXhhbXBsZXMuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnQWNjZXNzaW5nIGFyZ3VtZW50cyBieSBwb3NpdGlvbjpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ3swfSwgezF9LCB7Mn0nLmZvcm1hdCgnYScsICdiJywgJ2MnKVxuIgorICAgICAgICAgICAgICAgICAgIiAgICdhLCBiLCBjJ1xuIgorICAgICAgICAgICAgICAgICAgIiAgID4+PiAne30sIHt9LCB7fScuZm9ybWF0KCdhJywgJ2InLCAnYycpICAjIDMuMSsgb25seVxuIgorICAgICAgICAgICAgICAgICAgIiAgICdhLCBiLCBjJ1xuIgorICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezJ9LCB7MX0sIHswfScuZm9ybWF0KCdhJywgJ2InLCAnYycpXG4iCisgICAgICAgICAgICAgICAgICAiICAgJ2MsIGIsIGEnXG4iCisgICAgICAgICAgICAgICAgICAiICAgPj4+ICd7Mn0sIHsxfSwgezB9Jy5mb3JtYXQoKidhYmMnKSAgICAgICMgdW5wYWNraW5nICIKKyAgICAgICAgICAgICAgICAgICdhcmd1bWVudCBzZXF1ZW5jZVxuJworICAgICAgICAgICAgICAgICAgIiAgICdjLCBiLCBhJ1xuIgorICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezB9ezF9ezB9Jy5mb3JtYXQoJ2FicmEnLCAnY2FkJykgICAjIGFyZ3VtZW50cycgIgorICAgICAgICAgICAgICAgICAgJ2luZGljZXMgY2FuIGJlIHJlcGVhdGVkXG4nCisgICAgICAgICAgICAgICAgICAiICAgJ2FicmFjYWRhYnJhJ1xuIgorICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0FjY2Vzc2luZyBhcmd1bWVudHMgYnkgbmFtZTpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ0Nvb3JkaW5hdGVzOiB7bGF0aXR1ZGV9LCAiCisgICAgICAgICAgICAgICAgICAie2xvbmdpdHVkZX0nLmZvcm1hdChsYXRpdHVkZT0nMzcuMjROJywgIgorICAgICAgICAgICAgICAgICAgImxvbmdpdHVkZT0nLTExNS44MVcnKVxuIgorICAgICAgICAgICAgICAgICAgIiAgICdDb29yZGluYXRlczogMzcuMjROLCAtMTE1LjgxVydcbiIKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gY29vcmQgPSB7J2xhdGl0dWRlJzogJzM3LjI0TicsICdsb25naXR1ZGUnOiAiCisgICAgICAgICAgICAgICAgICAiJy0xMTUuODFXJ31cbiIKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ0Nvb3JkaW5hdGVzOiB7bGF0aXR1ZGV9LCAiCisgICAgICAgICAgICAgICAgICAie2xvbmdpdHVkZX0nLmZvcm1hdCgqKmNvb3JkKVxuIgorICAgICAgICAgICAgICAgICAgIiAgICdDb29yZGluYXRlczogMzcuMjROLCAtMTE1LjgxVydcbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICJBY2Nlc3NpbmcgYXJndW1lbnRzJyBhdHRyaWJ1dGVzOlxuIgorICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgID4+PiBjID0gMy01alxuJworICAgICAgICAgICAgICAgICAgIiAgID4+PiAoJ1RoZSBjb21wbGV4IG51bWJlciB7MH0gaXMgZm9ybWVkIGZyb20gdGhlIHJlYWwgIgorICAgICAgICAgICAgICAgICAgInBhcnQgezAucmVhbH0gJ1xuIgorICAgICAgICAgICAgICAgICAgIiAgIC4uLiAgJ2FuZCB0aGUgaW1hZ2luYXJ5IHBhcnQgezAuaW1hZ30uJykuZm9ybWF0KGMpXG4iCisgICAgICAgICAgICAgICAgICAiICAgJ1RoZSBjb21wbGV4IG51bWJlciAoMy01aikgaXMgZm9ybWVkIGZyb20gdGhlIHJlYWwgcGFydCAiCisgICAgICAgICAgICAgICAgICAiMy4wIGFuZCB0aGUgaW1hZ2luYXJ5IHBhcnQgLTUuMC4nXG4iCisgICAgICAgICAgICAgICAgICAnICAgPj4+IGNsYXNzIFBvaW50OlxuJworICAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHgsIHkpOlxuJworICAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgICAgIHNlbGYueCwgc2VsZi55ID0geCwgeVxuJworICAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgZGVmIF9fc3RyX18oc2VsZik6XG4nCisgICAgICAgICAgICAgICAgICAiICAgLi4uICAgICAgICAgcmV0dXJuICdQb2ludCh7c2VsZi54fSwgIgorICAgICAgICAgICAgICAgICAgIntzZWxmLnl9KScuZm9ybWF0KHNlbGY9c2VsZilcbiIKKyAgICAgICAgICAgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gc3RyKFBvaW50KDQsIDIpKVxuJworICAgICAgICAgICAgICAgICAgIiAgICdQb2ludCg0LCAyKSdcbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICJBY2Nlc3NpbmcgYXJndW1lbnRzJyBpdGVtczpcbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gY29vcmQgPSAoMywgNSlcbicKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ1g6IHswWzBdfTsgIFk6IHswWzFdfScuZm9ybWF0KGNvb3JkKVxuIgorICAgICAgICAgICAgICAgICAgIiAgICdYOiAzOyAgWTogNSdcbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdSZXBsYWNpbmcgIiVzIiBhbmQgIiVyIjpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gInJlcHIoKSBzaG93cyBxdW90ZXM6IHshcn07IHN0cigpIGRvZXNuXCd0OiAnCisgICAgICAgICAgICAgICAgICAneyFzfSIuZm9ybWF0KFwndGVzdDFcJywgXCd0ZXN0MlwnKVxuJworICAgICAgICAgICAgICAgICAgJyAgICJyZXByKCkgc2hvd3MgcXVvdGVzOiBcJ3Rlc3QxXCc7IHN0cigpIGRvZXNuXCd0OiB0ZXN0MiJcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdBbGlnbmluZyB0aGUgdGV4dCBhbmQgc3BlY2lmeWluZyBhIHdpZHRoOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezo8MzB9Jy5mb3JtYXQoJ2xlZnQgYWxpZ25lZCcpXG4iCisgICAgICAgICAgICAgICAgICAiICAgJ2xlZnQgYWxpZ25lZCAgICAgICAgICAgICAgICAgICdcbiIKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ3s6PjMwfScuZm9ybWF0KCdyaWdodCBhbGlnbmVkJylcbiIKKyAgICAgICAgICAgICAgICAgICIgICAnICAgICAgICAgICAgICAgICByaWdodCBhbGlnbmVkJ1xuIgorICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezpeMzB9Jy5mb3JtYXQoJ2NlbnRlcmVkJylcbiIKKyAgICAgICAgICAgICAgICAgICIgICAnICAgICAgICAgICBjZW50ZXJlZCAgICAgICAgICAgJ1xuIgorICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezoqXjMwfScuZm9ybWF0KCdjZW50ZXJlZCcpICAjIHVzZSAnKicgYXMgYSBmaWxsICIKKyAgICAgICAgICAgICAgICAgICdjaGFyXG4nCisgICAgICAgICAgICAgICAgICAiICAgJyoqKioqKioqKioqY2VudGVyZWQqKioqKioqKioqKidcbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdSZXBsYWNpbmcgIiUrZiIsICIlLWYiLCBhbmQgIiUgZiIgYW5kIHNwZWNpZnlpbmcgYSBzaWduOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezorZn07IHs6K2Z9Jy5mb3JtYXQoMy4xNCwgLTMuMTQpICAjIHNob3cgaXQgIgorICAgICAgICAgICAgICAgICAgJ2Fsd2F5c1xuJworICAgICAgICAgICAgICAgICAgIiAgICcrMy4xNDAwMDA7IC0zLjE0MDAwMCdcbiIKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ3s6IGZ9OyB7OiBmfScuZm9ybWF0KDMuMTQsIC0zLjE0KSAgIyBzaG93IGEgc3BhY2UgIgorICAgICAgICAgICAgICAgICAgJ2ZvciBwb3NpdGl2ZSBudW1iZXJzXG4nCisgICAgICAgICAgICAgICAgICAiICAgJyAzLjE0MDAwMDsgLTMuMTQwMDAwJ1xuIgorICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezotZn07IHs6LWZ9Jy5mb3JtYXQoMy4xNCwgLTMuMTQpICAjIHNob3cgb25seSB0aGUgIgorICAgICAgICAgICAgICAgICAgIm1pbnVzIC0tIHNhbWUgYXMgJ3s6Zn07IHs6Zn0nXG4iCisgICAgICAgICAgICAgICAgICAiICAgJzMuMTQwMDAwOyAtMy4xNDAwMDAnXG4iCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnUmVwbGFjaW5nICIleCIgYW5kICIlbyIgYW5kIGNvbnZlcnRpbmcgdGhlIHZhbHVlIHRvICcKKyAgICAgICAgICAgICAgICAgICdkaWZmZXJlbnQgYmFzZXM6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgPj4+ICMgZm9ybWF0IGFsc28gc3VwcG9ydHMgYmluYXJ5IG51bWJlcnNcbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gImludDogezA6ZH07ICBoZXg6IHswOnh9OyAgb2N0OiB7MDpvfTsgIGJpbjogJworICAgICAgICAgICAgICAgICAgJ3swOmJ9Ii5mb3JtYXQoNDIpXG4nCisgICAgICAgICAgICAgICAgICAiICAgJ2ludDogNDI7ICBoZXg6IDJhOyAgb2N0OiA1MjsgIGJpbjogMTAxMDEwJ1xuIgorICAgICAgICAgICAgICAgICAgJyAgID4+PiAjIHdpdGggMHgsIDBvLCBvciAwYiBhcyBwcmVmaXg6XG4nCisgICAgICAgICAgICAgICAgICAnICAgPj4+ICJpbnQ6IHswOmR9OyAgaGV4OiB7MDojeH07ICBvY3Q6IHswOiNvfTsgIGJpbjogJworICAgICAgICAgICAgICAgICAgJ3swOiNifSIuZm9ybWF0KDQyKVxuJworICAgICAgICAgICAgICAgICAgIiAgICdpbnQ6IDQyOyAgaGV4OiAweDJhOyAgb2N0OiAwbzUyOyAgYmluOiAwYjEwMTAxMCdcbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdVc2luZyB0aGUgY29tbWEgYXMgYSB0aG91c2FuZHMgc2VwYXJhdG9yOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezosfScuZm9ybWF0KDEyMzQ1Njc4OTApXG4iCisgICAgICAgICAgICAgICAgICAiICAgJzEsMjM0LDU2Nyw4OTAnXG4iCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnRXhwcmVzc2luZyBhIHBlcmNlbnRhZ2U6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgPj4+IHBvaW50cyA9IDE5XG4nCisgICAgICAgICAgICAgICAgICAnICAgPj4+IHRvdGFsID0gMjJcbicKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ0NvcnJlY3QgYW5zd2VyczogezouMiV9Jy5mb3JtYXQocG9pbnRzL3RvdGFsKVxuIgorICAgICAgICAgICAgICAgICAgIiAgICdDb3JyZWN0IGFuc3dlcnM6IDg2LjM2JSdcbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdVc2luZyB0eXBlLXNwZWNpZmljIGZvcm1hdHRpbmc6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgPj4+IGltcG9ydCBkYXRldGltZVxuJworICAgICAgICAgICAgICAgICAgJyAgID4+PiBkID0gZGF0ZXRpbWUuZGF0ZXRpbWUoMjAxMCwgNywgNCwgMTIsIDE1LCA1OClcbicKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ3s6JVktJW0tJWQgJUg6JU06JVN9Jy5mb3JtYXQoZClcbiIKKyAgICAgICAgICAgICAgICAgICIgICAnMjAxMC0wNy0wNCAxMjoxNTo1OCdcbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdOZXN0aW5nIGFyZ3VtZW50cyBhbmQgbW9yZSBjb21wbGV4IGV4YW1wbGVzOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgIiAgID4+PiBmb3IgYWxpZ24sIHRleHQgaW4gemlwKCc8Xj4nLCBbJ2xlZnQnLCAnY2VudGVyJywgIgorICAgICAgICAgICAgICAgICAgIidyaWdodCddKTpcbiIKKyAgICAgICAgICAgICAgICAgICIgICAuLi4gICAgICd7MDp7ZmlsbH17YWxpZ259MTZ9Jy5mb3JtYXQodGV4dCwgZmlsbD1hbGlnbiwgIgorICAgICAgICAgICAgICAgICAgJ2FsaWduPWFsaWduKVxuJworICAgICAgICAgICAgICAgICAgJyAgIC4uLlxuJworICAgICAgICAgICAgICAgICAgIiAgICdsZWZ0PDw8PDw8PDw8PDw8J1xuIgorICAgICAgICAgICAgICAgICAgIiAgICdeXl5eXmNlbnRlcl5eXl5eJ1xuIgorICAgICAgICAgICAgICAgICAgIiAgICc+Pj4+Pj4+Pj4+PnJpZ2h0J1xuIgorICAgICAgICAgICAgICAgICAgJyAgID4+PlxuJworICAgICAgICAgICAgICAgICAgJyAgID4+PiBvY3RldHMgPSBbMTkyLCAxNjgsIDAsIDFdXG4nCisgICAgICAgICAgICAgICAgICAiICAgPj4+ICd7OjAyWH17OjAyWH17OjAyWH17OjAyWH0nLmZvcm1hdCgqb2N0ZXRzKVxuIgorICAgICAgICAgICAgICAgICAgIiAgICdDMEE4MDAwMSdcbiIKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gaW50KF8sIDE2KVxuJworICAgICAgICAgICAgICAgICAgJyAgIDMyMzIyMzU1MjFcbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj5cbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gd2lkdGggPSA1XG4nCisgICAgICAgICAgICAgICAgICAnICAgPj4+IGZvciBudW0gaW4gcmFuZ2UoNSwxMik6ICNkb2N0ZXN0OiAnCisgICAgICAgICAgICAgICAgICAnK05PUk1BTElaRV9XSElURVNQQUNFXG4nCisgICAgICAgICAgICAgICAgICAiICAgLi4uICAgICBmb3IgYmFzZSBpbiAnZFhvYic6XG4iCisgICAgICAgICAgICAgICAgICAiICAgLi4uICAgICAgICAgcHJpbnQoJ3swOnt3aWR0aH17YmFzZX19Jy5mb3JtYXQobnVtLCAiCisgICAgICAgICAgICAgICAgICAiYmFzZT1iYXNlLCB3aWR0aD13aWR0aCksIGVuZD0nICcpXG4iCisgICAgICAgICAgICAgICAgICAnICAgLi4uICAgICBwcmludCgpXG4nCisgICAgICAgICAgICAgICAgICAnICAgLi4uXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAgIDUgICAgIDUgICAgIDUgICAxMDFcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICAgNiAgICAgNiAgICAgNiAgIDExMFxuJworICAgICAgICAgICAgICAgICAgJyAgICAgICA3ICAgICA3ICAgICA3ICAgMTExXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAgIDggICAgIDggICAgMTAgIDEwMDBcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICAgOSAgICAgOSAgICAxMSAgMTAwMVxuJworICAgICAgICAgICAgICAgICAgJyAgICAgIDEwICAgICBBICAgIDEyICAxMDEwXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAgMTEgICAgIEIgICAgMTMgIDEwMTFcbicsCisgJ2Z1bmN0aW9uJzogJ1xuJworICAgICAgICAgICAgICdGdW5jdGlvbiBkZWZpbml0aW9uc1xuJworICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQSBmdW5jdGlvbiBkZWZpbml0aW9uIGRlZmluZXMgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24gb2JqZWN0ICcKKyAgICAgICAgICAgICAnKHNlZVxuJworICAgICAgICAgICAgICdzZWN0aW9uIFRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSk6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBmdW5jZGVmICAgICAgICAgICAgICAgICA6Oj0gW2RlY29yYXRvcnNdICJkZWYiIGZ1bmNuYW1lICIoIiAnCisgICAgICAgICAgICAgJ1twYXJhbWV0ZXJfbGlzdF0gIikiIFsiLT4iIGV4cHJlc3Npb25dICI6IiBzdWl0ZVxuJworICAgICAgICAgICAgICcgICBkZWNvcmF0b3JzICAgICAgICAgICAgICA6Oj0gZGVjb3JhdG9yK1xuJworICAgICAgICAgICAgICcgICBkZWNvcmF0b3IgICAgICAgICAgICAgICA6Oj0gIkAiIGRvdHRlZF9uYW1lIFsiKCIgJworICAgICAgICAgICAgICdbYXJndW1lbnRfbGlzdCBbIiwiXV0gIikiXSBORVdMSU5FXG4nCisgICAgICAgICAgICAgJyAgIGRvdHRlZF9uYW1lICAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyICgiLiIgaWRlbnRpZmllcikqXG4nCisgICAgICAgICAgICAgJyAgIHBhcmFtZXRlcl9saXN0ICAgICAgICAgIDo6PSBkZWZwYXJhbWV0ZXIgKCIsIiBkZWZwYXJhbWV0ZXIpKiAnCisgICAgICAgICAgICAgJ1siLCIgW3BhcmFtZXRlcl9saXN0X3N0YXJhcmdzXV1cbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgIHwgcGFyYW1ldGVyX2xpc3Rfc3RhcmFyZ3NcbicKKyAgICAgICAgICAgICAnICAgcGFyYW1ldGVyX2xpc3Rfc3RhcmFyZ3MgOjo9ICIqIiBbcGFyYW1ldGVyXSAoIiwiICcKKyAgICAgICAgICAgICAnZGVmcGFyYW1ldGVyKSogWyIsIiBbIioqIiBwYXJhbWV0ZXIgWyIsIl1dXVxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAiKioiIHBhcmFtZXRlciBbIiwiXVxuJworICAgICAgICAgICAgICcgICBwYXJhbWV0ZXIgICAgICAgICAgICAgICA6Oj0gaWRlbnRpZmllciBbIjoiIGV4cHJlc3Npb25dXG4nCisgICAgICAgICAgICAgJyAgIGRlZnBhcmFtZXRlciAgICAgICAgICAgIDo6PSBwYXJhbWV0ZXIgWyI9IiBleHByZXNzaW9uXVxuJworICAgICAgICAgICAgICcgICBmdW5jbmFtZSAgICAgICAgICAgICAgICA6Oj0gaWRlbnRpZmllclxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50LiAgSXRzIGV4ZWN1dGlvbiAnCisgICAgICAgICAgICAgJ2JpbmRzXG4nCisgICAgICAgICAgICAgJ3RoZSBmdW5jdGlvbiBuYW1lIGluIHRoZSBjdXJyZW50IGxvY2FsIG5hbWVzcGFjZSB0byBhIGZ1bmN0aW9uICcKKyAgICAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgICAgJyhhIHdyYXBwZXIgYXJvdW5kIHRoZSBleGVjdXRhYmxlIGNvZGUgZm9yIHRoZSBmdW5jdGlvbikuICBUaGlzXG4nCisgICAgICAgICAgICAgJ2Z1bmN0aW9uIG9iamVjdCBjb250YWlucyBhIHJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBnbG9iYWwgJworICAgICAgICAgICAgICduYW1lc3BhY2VcbicKKyAgICAgICAgICAgICAnYXMgdGhlIGdsb2JhbCBuYW1lc3BhY2UgdG8gYmUgdXNlZCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBkb2VzIG5vdCBleGVjdXRlIHRoZSBmdW5jdGlvbiBib2R5OyB0aGlzICcKKyAgICAgICAgICAgICAnZ2V0c1xuJworICAgICAgICAgICAgICdleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZC4gWzNdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBIGZ1bmN0aW9uIGRlZmluaXRpb24gbWF5IGJlIHdyYXBwZWQgYnkgb25lIG9yIG1vcmUgKmRlY29yYXRvcipcbicKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbnMuIERlY29yYXRvciBleHByZXNzaW9ucyBhcmUgZXZhbHVhdGVkIHdoZW4gdGhlICcKKyAgICAgICAgICAgICAnZnVuY3Rpb24gaXNcbicKKyAgICAgICAgICAgICAnZGVmaW5lZCwgaW4gdGhlIHNjb3BlIHRoYXQgY29udGFpbnMgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24uICAnCisgICAgICAgICAgICAgJ1RoZVxuJworICAgICAgICAgICAgICdyZXN1bHQgbXVzdCBiZSBhIGNhbGxhYmxlLCB3aGljaCBpcyBpbnZva2VkIHdpdGggdGhlIGZ1bmN0aW9uICcKKyAgICAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgICAgJ2FzIHRoZSBvbmx5IGFyZ3VtZW50LiBUaGUgcmV0dXJuZWQgdmFsdWUgaXMgYm91bmQgdG8gdGhlICcKKyAgICAgICAgICAgICAnZnVuY3Rpb24gbmFtZVxuJworICAgICAgICAgICAgICdpbnN0ZWFkIG9mIHRoZSBmdW5jdGlvbiBvYmplY3QuICBNdWx0aXBsZSBkZWNvcmF0b3JzIGFyZSBhcHBsaWVkICcKKyAgICAgICAgICAgICAnaW5cbicKKyAgICAgICAgICAgICAnbmVzdGVkIGZhc2hpb24uIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvZGVcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEBmMShhcmcpXG4nCisgICAgICAgICAgICAgJyAgIEBmMlxuJworICAgICAgICAgICAgICcgICBkZWYgZnVuYygpOiBwYXNzXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG9cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGRlZiBmdW5jKCk6IHBhc3NcbicKKyAgICAgICAgICAgICAnICAgZnVuYyA9IGYxKGFyZykoZjIoZnVuYykpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdleGNlcHQgdGhhdCB0aGUgb3JpZ2luYWwgZnVuY3Rpb24gaXMgbm90IHRlbXBvcmFyaWx5IGJvdW5kIHRvICcKKyAgICAgICAgICAgICAndGhlIG5hbWVcbicKKyAgICAgICAgICAgICAnImZ1bmMiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnV2hlbiBvbmUgb3IgbW9yZSAqcGFyYW1ldGVycyogaGF2ZSB0aGUgZm9ybSAqcGFyYW1ldGVyKiAiPSJcbicKKyAgICAgICAgICAgICAnKmV4cHJlc3Npb24qLCB0aGUgZnVuY3Rpb24gaXMgc2FpZCB0byBoYXZlICJkZWZhdWx0IHBhcmFtZXRlciAnCisgICAgICAgICAgICAgJ3ZhbHVlcy4iXG4nCisgICAgICAgICAgICAgJ0ZvciBhIHBhcmFtZXRlciB3aXRoIGEgZGVmYXVsdCB2YWx1ZSwgdGhlIGNvcnJlc3BvbmRpbmcgJworICAgICAgICAgICAgICcqYXJndW1lbnQqIG1heVxuJworICAgICAgICAgICAgICJiZSBvbWl0dGVkIGZyb20gYSBjYWxsLCBpbiB3aGljaCBjYXNlIHRoZSBwYXJhbWV0ZXIncyBkZWZhdWx0ICIKKyAgICAgICAgICAgICAndmFsdWUgaXNcbicKKyAgICAgICAgICAgICAnc3Vic3RpdHV0ZWQuICBJZiBhIHBhcmFtZXRlciBoYXMgYSBkZWZhdWx0IHZhbHVlLCBhbGwgZm9sbG93aW5nXG4nCisgICAgICAgICAgICAgJ3BhcmFtZXRlcnMgdXAgdW50aWwgdGhlICIiKiIiIG11c3QgYWxzbyBoYXZlIGEgZGVmYXVsdCB2YWx1ZSAtLS0gJworICAgICAgICAgICAgICd0aGlzXG4nCisgICAgICAgICAgICAgJ2lzIGEgc3ludGFjdGljIHJlc3RyaWN0aW9uIHRoYXQgaXMgbm90IGV4cHJlc3NlZCBieSB0aGUgJworICAgICAgICAgICAgICdncmFtbWFyLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnKipEZWZhdWx0IHBhcmFtZXRlciB2YWx1ZXMgYXJlIGV2YWx1YXRlZCBmcm9tIGxlZnQgdG8gcmlnaHQgd2hlbiAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICdmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLioqIFRoaXMgbWVhbnMgdGhhdCB0aGUgJworICAgICAgICAgICAgICdleHByZXNzaW9uIGlzXG4nCisgICAgICAgICAgICAgJ2V2YWx1YXRlZCBvbmNlLCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBkZWZpbmVkLCBhbmQgdGhhdCB0aGUgc2FtZSAnCisgICAgICAgICAgICAgJyJwcmUtXG4nCisgICAgICAgICAgICAgJ2NvbXB1dGVkIiB2YWx1ZSBpcyB1c2VkIGZvciBlYWNoIGNhbGwuICBUaGlzIGlzIGVzcGVjaWFsbHkgJworICAgICAgICAgICAgICdpbXBvcnRhbnRcbicKKyAgICAgICAgICAgICAndG8gdW5kZXJzdGFuZCB3aGVuIGEgZGVmYXVsdCBwYXJhbWV0ZXIgaXMgYSBtdXRhYmxlIG9iamVjdCwgc3VjaCAnCisgICAgICAgICAgICAgJ2FzIGFcbicKKyAgICAgICAgICAgICAnbGlzdCBvciBhIGRpY3Rpb25hcnk6IGlmIHRoZSBmdW5jdGlvbiBtb2RpZmllcyB0aGUgb2JqZWN0IChlLmcuICcKKyAgICAgICAgICAgICAnYnlcbicKKyAgICAgICAgICAgICAnYXBwZW5kaW5nIGFuIGl0ZW0gdG8gYSBsaXN0KSwgdGhlIGRlZmF1bHQgdmFsdWUgaXMgaW4gZWZmZWN0ICcKKyAgICAgICAgICAgICAnbW9kaWZpZWQuXG4nCisgICAgICAgICAgICAgJ1RoaXMgaXMgZ2VuZXJhbGx5IG5vdCB3aGF0IHdhcyBpbnRlbmRlZC4gIEEgd2F5IGFyb3VuZCB0aGlzIGlzICcKKyAgICAgICAgICAgICAndG8gdXNlXG4nCisgICAgICAgICAgICAgJyJOb25lIiBhcyB0aGUgZGVmYXVsdCwgYW5kIGV4cGxpY2l0bHkgdGVzdCBmb3IgaXQgaW4gdGhlIGJvZHkgb2YgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnZnVuY3Rpb24sIGUuZy46XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBkZWYgd2hhdHNfb25fdGhlX3RlbGx5KHBlbmd1aW49Tm9uZSk6XG4nCisgICAgICAgICAgICAgJyAgICAgICBpZiBwZW5ndWluIGlzIE5vbmU6XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgcGVuZ3VpbiA9IFtdXG4nCisgICAgICAgICAgICAgJyAgICAgICBwZW5ndWluLmFwcGVuZCgicHJvcGVydHkgb2YgdGhlIHpvbyIpXG4nCisgICAgICAgICAgICAgJyAgICAgICByZXR1cm4gcGVuZ3VpblxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnRnVuY3Rpb24gY2FsbCBzZW1hbnRpY3MgYXJlIGRlc2NyaWJlZCBpbiBtb3JlIGRldGFpbCBpbiBzZWN0aW9uICcKKyAgICAgICAgICAgICAnQ2FsbHMuXG4nCisgICAgICAgICAgICAgJ0EgZnVuY3Rpb24gY2FsbCBhbHdheXMgYXNzaWducyB2YWx1ZXMgdG8gYWxsIHBhcmFtZXRlcnMgJworICAgICAgICAgICAgICdtZW50aW9uZWQgaW5cbicKKyAgICAgICAgICAgICAndGhlIHBhcmFtZXRlciBsaXN0LCBlaXRoZXIgZnJvbSBwb3NpdGlvbiBhcmd1bWVudHMsIGZyb20gJworICAgICAgICAgICAgICdrZXl3b3JkXG4nCisgICAgICAgICAgICAgJ2FyZ3VtZW50cywgb3IgZnJvbSBkZWZhdWx0IHZhbHVlcy4gIElmIHRoZSBmb3JtICIiKmlkZW50aWZpZXIiIiAnCisgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgJ3ByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgdHVwbGUgcmVjZWl2aW5nIGFueSBleGNlc3MgJworICAgICAgICAgICAgICdwb3NpdGlvbmFsXG4nCisgICAgICAgICAgICAgJ3BhcmFtZXRlcnMsIGRlZmF1bHRpbmcgdG8gdGhlIGVtcHR5IHR1cGxlLiBJZiB0aGUgZm9ybVxuJworICAgICAgICAgICAgICciIioqaWRlbnRpZmllciIiIGlzIHByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgbmV3IG9yZGVyZWRcbicKKyAgICAgICAgICAgICAnbWFwcGluZyByZWNlaXZpbmcgYW55IGV4Y2VzcyBrZXl3b3JkIGFyZ3VtZW50cywgZGVmYXVsdGluZyB0byBhICcKKyAgICAgICAgICAgICAnbmV3XG4nCisgICAgICAgICAgICAgJ2VtcHR5IG1hcHBpbmcgb2YgdGhlIHNhbWUgdHlwZS4gIFBhcmFtZXRlcnMgYWZ0ZXIgIiIqIiIgb3JcbicKKyAgICAgICAgICAgICAnIiIqaWRlbnRpZmllciIiIGFyZSBrZXl3b3JkLW9ubHkgcGFyYW1ldGVycyBhbmQgbWF5IG9ubHkgYmUgJworICAgICAgICAgICAgICdwYXNzZWRcbicKKyAgICAgICAgICAgICAndXNlZCBrZXl3b3JkIGFyZ3VtZW50cy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1BhcmFtZXRlcnMgbWF5IGhhdmUgYW5ub3RhdGlvbnMgb2YgdGhlIGZvcm0gIiI6IGV4cHJlc3Npb24iIiAnCisgICAgICAgICAgICAgJ2ZvbGxvd2luZ1xuJworICAgICAgICAgICAgICd0aGUgcGFyYW1ldGVyIG5hbWUuICBBbnkgcGFyYW1ldGVyIG1heSBoYXZlIGFuIGFubm90YXRpb24gZXZlbiAnCisgICAgICAgICAgICAgJ3Rob3NlXG4nCisgICAgICAgICAgICAgJ29mIHRoZSBmb3JtICIqaWRlbnRpZmllciIgb3IgIioqaWRlbnRpZmllciIuICBGdW5jdGlvbnMgbWF5ICcKKyAgICAgICAgICAgICAnaGF2ZVxuJworICAgICAgICAgICAgICcicmV0dXJuIiBhbm5vdGF0aW9uIG9mIHRoZSBmb3JtICIiLT4gZXhwcmVzc2lvbiIiIGFmdGVyIHRoZSAnCisgICAgICAgICAgICAgJ3BhcmFtZXRlclxuJworICAgICAgICAgICAgICdsaXN0LiAgVGhlc2UgYW5ub3RhdGlvbnMgY2FuIGJlIGFueSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbiBhbmQgJworICAgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgICAnZXZhbHVhdGVkIHdoZW4gdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgZXhlY3V0ZWQuICBBbm5vdGF0aW9ucyAnCisgICAgICAgICAgICAgJ21heVxuJworICAgICAgICAgICAgICdiZSBldmFsdWF0ZWQgaW4gYSBkaWZmZXJlbnQgb3JkZXIgdGhhbiB0aGV5IGFwcGVhciBpbiB0aGUgc291cmNlICcKKyAgICAgICAgICAgICAnY29kZS5cbicKKyAgICAgICAgICAgICAnVGhlIHByZXNlbmNlIG9mIGFubm90YXRpb25zIGRvZXMgbm90IGNoYW5nZSB0aGUgc2VtYW50aWNzIG9mIGFcbicKKyAgICAgICAgICAgICAnZnVuY3Rpb24uICBUaGUgYW5ub3RhdGlvbiB2YWx1ZXMgYXJlIGF2YWlsYWJsZSBhcyB2YWx1ZXMgb2YgYVxuJworICAgICAgICAgICAgICJkaWN0aW9uYXJ5IGtleWVkIGJ5IHRoZSBwYXJhbWV0ZXJzJyBuYW1lcyBpbiB0aGUgIgorICAgICAgICAgICAgICciX19hbm5vdGF0aW9uc19fIlxuJworICAgICAgICAgICAgICdhdHRyaWJ1dGUgb2YgdGhlIGZ1bmN0aW9uIG9iamVjdC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0l0IGlzIGFsc28gcG9zc2libGUgdG8gY3JlYXRlIGFub255bW91cyBmdW5jdGlvbnMgKGZ1bmN0aW9ucyBub3QgJworICAgICAgICAgICAgICdib3VuZFxuJworICAgICAgICAgICAgICd0byBhIG5hbWUpLCBmb3IgaW1tZWRpYXRlIHVzZSBpbiBleHByZXNzaW9ucy4gIFRoaXMgdXNlcyBsYW1iZGFcbicKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbnMsIGRlc2NyaWJlZCBpbiBzZWN0aW9uIExhbWJkYXMuICBOb3RlIHRoYXQgdGhlICcKKyAgICAgICAgICAgICAnbGFtYmRhXG4nCisgICAgICAgICAgICAgJ2V4cHJlc3Npb24gaXMgbWVyZWx5IGEgc2hvcnRoYW5kIGZvciBhIHNpbXBsaWZpZWQgZnVuY3Rpb24gJworICAgICAgICAgICAgICdkZWZpbml0aW9uO1xuJworICAgICAgICAgICAgICdhIGZ1bmN0aW9uIGRlZmluZWQgaW4gYSAiImRlZiIiIHN0YXRlbWVudCBjYW4gYmUgcGFzc2VkIGFyb3VuZCAnCisgICAgICAgICAgICAgJ29yXG4nCisgICAgICAgICAgICAgJ2Fzc2lnbmVkIHRvIGFub3RoZXIgbmFtZSBqdXN0IGxpa2UgYSBmdW5jdGlvbiBkZWZpbmVkIGJ5IGEgJworICAgICAgICAgICAgICdsYW1iZGFcbicKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbi4gIFRoZSAiImRlZiIiIGZvcm0gaXMgYWN0dWFsbHkgbW9yZSBwb3dlcmZ1bCBzaW5jZSAnCisgICAgICAgICAgICAgJ2l0XG4nCisgICAgICAgICAgICAgJ2FsbG93cyB0aGUgZXhlY3V0aW9uIG9mIG11bHRpcGxlIHN0YXRlbWVudHMgYW5kIGFubm90YXRpb25zLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAiKipQcm9ncmFtbWVyJ3Mgbm90ZToqKiBGdW5jdGlvbnMgYXJlIGZpcnN0LWNsYXNzIG9iamVjdHMuICBBICIKKyAgICAgICAgICAgICAnIiJkZWYiIlxuJworICAgICAgICAgICAgICdzdGF0ZW1lbnQgZXhlY3V0ZWQgaW5zaWRlIGEgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgbG9jYWxcbicKKyAgICAgICAgICAgICAnZnVuY3Rpb24gdGhhdCBjYW4gYmUgcmV0dXJuZWQgb3IgcGFzc2VkIGFyb3VuZC4gIEZyZWUgdmFyaWFibGVzICcKKyAgICAgICAgICAgICAndXNlZFxuJworICAgICAgICAgICAgICdpbiB0aGUgbmVzdGVkIGZ1bmN0aW9uIGNhbiBhY2Nlc3MgdGhlIGxvY2FsIHZhcmlhYmxlcyBvZiB0aGUgJworICAgICAgICAgICAgICdmdW5jdGlvblxuJworICAgICAgICAgICAgICdjb250YWluaW5nIHRoZSBkZWYuICBTZWUgc2VjdGlvbiBOYW1pbmcgYW5kIGJpbmRpbmcgZm9yICcKKyAgICAgICAgICAgICAnZGV0YWlscy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1NlZSBhbHNvOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAqKlBFUCAzMTA3KiogLSBGdW5jdGlvbiBBbm5vdGF0aW9uc1xuJworICAgICAgICAgICAgICcgICAgIFRoZSBvcmlnaW5hbCBzcGVjaWZpY2F0aW9uIGZvciBmdW5jdGlvbiBhbm5vdGF0aW9ucy5cbicsCisgJ2dsb2JhbCc6ICdcbicKKyAgICAgICAgICAgJ1RoZSAiZ2xvYmFsIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgZ2xvYmFsX3N0bXQgOjo9ICJnbG9iYWwiIGlkZW50aWZpZXIgKCIsIiBpZGVudGlmaWVyKSpcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlICJnbG9iYWwiIHN0YXRlbWVudCBpcyBhIGRlY2xhcmF0aW9uIHdoaWNoIGhvbGRzIGZvciB0aGUgJworICAgICAgICAgICAnZW50aXJlXG4nCisgICAgICAgICAgICdjdXJyZW50IGNvZGUgYmxvY2suICBJdCBtZWFucyB0aGF0IHRoZSBsaXN0ZWQgaWRlbnRpZmllcnMgYXJlIHRvICcKKyAgICAgICAgICAgJ2JlXG4nCisgICAgICAgICAgICdpbnRlcnByZXRlZCBhcyBnbG9iYWxzLiAgSXQgd291bGQgYmUgaW1wb3NzaWJsZSB0byBhc3NpZ24gdG8gYSAnCisgICAgICAgICAgICdnbG9iYWxcbicKKyAgICAgICAgICAgJ3ZhcmlhYmxlIHdpdGhvdXQgImdsb2JhbCIsIGFsdGhvdWdoIGZyZWUgdmFyaWFibGVzIG1heSByZWZlciB0b1xuJworICAgICAgICAgICAnZ2xvYmFscyB3aXRob3V0IGJlaW5nIGRlY2xhcmVkIGdsb2JhbC5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnTmFtZXMgbGlzdGVkIGluIGEgImdsb2JhbCIgc3RhdGVtZW50IG11c3Qgbm90IGJlIHVzZWQgaW4gdGhlIHNhbWUgJworICAgICAgICAgICAnY29kZVxuJworICAgICAgICAgICAnYmxvY2sgdGV4dHVhbGx5IHByZWNlZGluZyB0aGF0ICJnbG9iYWwiIHN0YXRlbWVudC5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnTmFtZXMgbGlzdGVkIGluIGEgImdsb2JhbCIgc3RhdGVtZW50IG11c3Qgbm90IGJlIGRlZmluZWQgYXMgJworICAgICAgICAgICAnZm9ybWFsXG4nCisgICAgICAgICAgICdwYXJhbWV0ZXJzIG9yIGluIGEgImZvciIgbG9vcCBjb250cm9sIHRhcmdldCwgImNsYXNzIiBkZWZpbml0aW9uLFxuJworICAgICAgICAgICAnZnVuY3Rpb24gZGVmaW5pdGlvbiwgImltcG9ydCIgc3RhdGVtZW50LCBvciB2YXJpYWJsZSBhbm5vdGF0aW9uLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIFRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIGRvZXMgJworICAgICAgICAgICAnbm90XG4nCisgICAgICAgICAgICdlbmZvcmNlIHNvbWUgb2YgdGhlc2UgcmVzdHJpY3Rpb24sIGJ1dCBwcm9ncmFtcyBzaG91bGQgbm90IGFidXNlICcKKyAgICAgICAgICAgJ3RoaXNcbicKKyAgICAgICAgICAgJ2ZyZWVkb20sIGFzIGZ1dHVyZSBpbXBsZW1lbnRhdGlvbnMgbWF5IGVuZm9yY2UgdGhlbSBvciBzaWxlbnRseSAnCisgICAgICAgICAgICdjaGFuZ2VcbicKKyAgICAgICAgICAgJ3RoZSBtZWFuaW5nIG9mIHRoZSBwcm9ncmFtLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcqKlByb2dyYW1tZXJcJ3Mgbm90ZToqKiB0aGUgImdsb2JhbCIgaXMgYSBkaXJlY3RpdmUgdG8gdGhlICcKKyAgICAgICAgICAgJ3BhcnNlci4gIEl0XG4nCisgICAgICAgICAgICdhcHBsaWVzIG9ubHkgdG8gY29kZSBwYXJzZWQgYXQgdGhlIHNhbWUgdGltZSBhcyB0aGUgImdsb2JhbCJcbicKKyAgICAgICAgICAgJ3N0YXRlbWVudC4gSW4gcGFydGljdWxhciwgYSAiZ2xvYmFsIiBzdGF0ZW1lbnQgY29udGFpbmVkIGluIGEgJworICAgICAgICAgICAnc3RyaW5nXG4nCisgICAgICAgICAgICdvciBjb2RlIG9iamVjdCBzdXBwbGllZCB0byB0aGUgYnVpbHQtaW4gImV4ZWMoKSIgZnVuY3Rpb24gZG9lcyAnCisgICAgICAgICAgICdub3RcbicKKyAgICAgICAgICAgJ2FmZmVjdCB0aGUgY29kZSBibG9jayAqY29udGFpbmluZyogdGhlIGZ1bmN0aW9uIGNhbGwsIGFuZCBjb2RlXG4nCisgICAgICAgICAgICdjb250YWluZWQgaW4gc3VjaCBhIHN0cmluZyBpcyB1bmFmZmVjdGVkIGJ5ICJnbG9iYWwiIHN0YXRlbWVudHMgaW4gJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICdjb2RlIGNvbnRhaW5pbmcgdGhlIGZ1bmN0aW9uIGNhbGwuICBUaGUgc2FtZSBhcHBsaWVzIHRvIHRoZSAnCisgICAgICAgICAgICciZXZhbCgpIlxuJworICAgICAgICAgICAnYW5kICJjb21waWxlKCkiIGZ1bmN0aW9ucy5cbicsCisgJ2lkLWNsYXNzZXMnOiAnXG4nCisgICAgICAgICAgICAgICAnUmVzZXJ2ZWQgY2xhc3NlcyBvZiBpZGVudGlmaWVyc1xuJworICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdDZXJ0YWluIGNsYXNzZXMgb2YgaWRlbnRpZmllcnMgKGJlc2lkZXMga2V5d29yZHMpIGhhdmUgJworICAgICAgICAgICAgICAgJ3NwZWNpYWxcbicKKyAgICAgICAgICAgICAgICdtZWFuaW5ncy4gIFRoZXNlIGNsYXNzZXMgYXJlIGlkZW50aWZpZWQgYnkgdGhlIHBhdHRlcm5zIG9mICcKKyAgICAgICAgICAgICAgICdsZWFkaW5nIGFuZFxuJworICAgICAgICAgICAgICAgJ3RyYWlsaW5nIHVuZGVyc2NvcmUgY2hhcmFjdGVyczpcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICciXyoiXG4nCisgICAgICAgICAgICAgICAnICAgTm90IGltcG9ydGVkIGJ5ICJmcm9tIG1vZHVsZSBpbXBvcnQgKiIuICBUaGUgc3BlY2lhbCAnCisgICAgICAgICAgICAgICAnaWRlbnRpZmllciAiXyJcbicKKyAgICAgICAgICAgICAgICcgICBpcyB1c2VkIGluIHRoZSBpbnRlcmFjdGl2ZSBpbnRlcnByZXRlciB0byBzdG9yZSB0aGUgcmVzdWx0ICcKKyAgICAgICAgICAgICAgICdvZiB0aGVcbicKKyAgICAgICAgICAgICAgICcgICBsYXN0IGV2YWx1YXRpb247IGl0IGlzIHN0b3JlZCBpbiB0aGUgImJ1aWx0aW5zIiBtb2R1bGUuICAnCisgICAgICAgICAgICAgICAnV2hlbiBub3RcbicKKyAgICAgICAgICAgICAgICcgICBpbiBpbnRlcmFjdGl2ZSBtb2RlLCAiXyIgaGFzIG5vIHNwZWNpYWwgbWVhbmluZyBhbmQgaXMgbm90ICcKKyAgICAgICAgICAgICAgICdkZWZpbmVkLlxuJworICAgICAgICAgICAgICAgJyAgIFNlZSBzZWN0aW9uIFRoZSBpbXBvcnQgc3RhdGVtZW50LlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgIE5vdGU6IFRoZSBuYW1lICJfIiBpcyBvZnRlbiB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGhcbicKKyAgICAgICAgICAgICAgICcgICAgIGludGVybmF0aW9uYWxpemF0aW9uOyByZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlXG4nCisgICAgICAgICAgICAgICAnICAgICAiZ2V0dGV4dCIgbW9kdWxlIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoaXMgJworICAgICAgICAgICAgICAgJ2NvbnZlbnRpb24uXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnIl9fKl9fIlxuJworICAgICAgICAgICAgICAgJyAgIFN5c3RlbS1kZWZpbmVkIG5hbWVzLiBUaGVzZSBuYW1lcyBhcmUgZGVmaW5lZCBieSB0aGUgJworICAgICAgICAgICAgICAgJ2ludGVycHJldGVyXG4nCisgICAgICAgICAgICAgICAnICAgYW5kIGl0cyBpbXBsZW1lbnRhdGlvbiAoaW5jbHVkaW5nIHRoZSBzdGFuZGFyZCBsaWJyYXJ5KS4gICcKKyAgICAgICAgICAgICAgICdDdXJyZW50XG4nCisgICAgICAgICAgICAgICAnICAgc3lzdGVtIG5hbWVzIGFyZSBkaXNjdXNzZWQgaW4gdGhlIFNwZWNpYWwgbWV0aG9kIG5hbWVzICcKKyAgICAgICAgICAgICAgICdzZWN0aW9uIGFuZFxuJworICAgICAgICAgICAgICAgJyAgIGVsc2V3aGVyZS4gIE1vcmUgd2lsbCBsaWtlbHkgYmUgZGVmaW5lZCBpbiBmdXR1cmUgdmVyc2lvbnMgJworICAgICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAgICAnICAgUHl0aG9uLiAgKkFueSogdXNlIG9mICJfXypfXyIgbmFtZXMsIGluIGFueSBjb250ZXh0LCB0aGF0ICcKKyAgICAgICAgICAgICAgICdkb2VzIG5vdFxuJworICAgICAgICAgICAgICAgJyAgIGZvbGxvdyBleHBsaWNpdGx5IGRvY3VtZW50ZWQgdXNlLCBpcyBzdWJqZWN0IHRvIGJyZWFrYWdlICcKKyAgICAgICAgICAgICAgICd3aXRob3V0XG4nCisgICAgICAgICAgICAgICAnICAgd2FybmluZy5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICciX18qIlxuJworICAgICAgICAgICAgICAgJyAgIENsYXNzLXByaXZhdGUgbmFtZXMuICBOYW1lcyBpbiB0aGlzIGNhdGVnb3J5LCB3aGVuIHVzZWQgJworICAgICAgICAgICAgICAgJ3dpdGhpbiB0aGVcbicKKyAgICAgICAgICAgICAgICcgICBjb250ZXh0IG9mIGEgY2xhc3MgZGVmaW5pdGlvbiwgYXJlIHJlLXdyaXR0ZW4gdG8gdXNlIGEgJworICAgICAgICAgICAgICAgJ21hbmdsZWQgZm9ybVxuJworICAgICAgICAgICAgICAgJyAgIHRvIGhlbHAgYXZvaWQgbmFtZSBjbGFzaGVzIGJldHdlZW4gInByaXZhdGUiIGF0dHJpYnV0ZXMgb2YgJworICAgICAgICAgICAgICAgJ2Jhc2UgYW5kXG4nCisgICAgICAgICAgICAgICAnICAgZGVyaXZlZCBjbGFzc2VzLiBTZWUgc2VjdGlvbiBJZGVudGlmaWVycyAoTmFtZXMpLlxuJywKKyAnaWRlbnRpZmllcnMnOiAnXG4nCisgICAgICAgICAgICAgICAgJ0lkZW50aWZpZXJzIGFuZCBrZXl3b3Jkc1xuJworICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ0lkZW50aWZpZXJzIChhbHNvIHJlZmVycmVkIHRvIGFzICpuYW1lcyopIGFyZSBkZXNjcmliZWQgYnkgJworICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAnZm9sbG93aW5nIGxleGljYWwgZGVmaW5pdGlvbnMuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdUaGUgc3ludGF4IG9mIGlkZW50aWZpZXJzIGluIFB5dGhvbiBpcyBiYXNlZCBvbiB0aGUgVW5pY29kZSAnCisgICAgICAgICAgICAgICAgJ3N0YW5kYXJkXG4nCisgICAgICAgICAgICAgICAgJ2FubmV4IFVBWC0zMSwgd2l0aCBlbGFib3JhdGlvbiBhbmQgY2hhbmdlcyBhcyBkZWZpbmVkIGJlbG93OyAnCisgICAgICAgICAgICAgICAgJ3NlZSBhbHNvXG4nCisgICAgICAgICAgICAgICAgJyoqUEVQIDMxMzEqKiBmb3IgZnVydGhlciBkZXRhaWxzLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnV2l0aGluIHRoZSBBU0NJSSByYW5nZSAoVSswMDAxLi5VKzAwN0YpLCB0aGUgdmFsaWQgY2hhcmFjdGVycyAnCisgICAgICAgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICAgICAgICdpZGVudGlmaWVycyBhcmUgdGhlIHNhbWUgYXMgaW4gUHl0aG9uIDIueDogdGhlIHVwcGVyY2FzZSBhbmQgJworICAgICAgICAgICAgICAgICdsb3dlcmNhc2VcbicKKyAgICAgICAgICAgICAgICAnbGV0dGVycyAiQSIgdGhyb3VnaCAiWiIsIHRoZSB1bmRlcnNjb3JlICJfIiBhbmQsIGV4Y2VwdCBmb3IgJworICAgICAgICAgICAgICAgICd0aGUgZmlyc3RcbicKKyAgICAgICAgICAgICAgICAnY2hhcmFjdGVyLCB0aGUgZGlnaXRzICIwIiB0aHJvdWdoICI5Ii5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1B5dGhvbiAzLjAgaW50cm9kdWNlcyBhZGRpdGlvbmFsIGNoYXJhY3RlcnMgZnJvbSBvdXRzaWRlIHRoZSAnCisgICAgICAgICAgICAgICAgJ0FTQ0lJXG4nCisgICAgICAgICAgICAgICAgJ3JhbmdlIChzZWUgKipQRVAgMzEzMSoqKS4gIEZvciB0aGVzZSBjaGFyYWN0ZXJzLCB0aGUgJworICAgICAgICAgICAgICAgICdjbGFzc2lmaWNhdGlvblxuJworICAgICAgICAgICAgICAgICd1c2VzIHRoZSB2ZXJzaW9uIG9mIHRoZSBVbmljb2RlIENoYXJhY3RlciBEYXRhYmFzZSBhcyAnCisgICAgICAgICAgICAgICAgJ2luY2x1ZGVkIGluIHRoZVxuJworICAgICAgICAgICAgICAgICcidW5pY29kZWRhdGEiIG1vZHVsZS5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ0lkZW50aWZpZXJzIGFyZSB1bmxpbWl0ZWQgaW4gbGVuZ3RoLiAgQ2FzZSBpcyBzaWduaWZpY2FudC5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgIGlkZW50aWZpZXIgICA6Oj0geGlkX3N0YXJ0IHhpZF9jb250aW51ZSpcbicKKyAgICAgICAgICAgICAgICAnICAgaWRfc3RhcnQgICAgIDo6PSA8YWxsIGNoYXJhY3RlcnMgaW4gZ2VuZXJhbCBjYXRlZ29yaWVzIEx1LCAnCisgICAgICAgICAgICAgICAgJ0xsLCBMdCwgTG0sIExvLCBObCwgdGhlIHVuZGVyc2NvcmUsIGFuZCBjaGFyYWN0ZXJzIHdpdGggdGhlICcKKyAgICAgICAgICAgICAgICAnT3RoZXJfSURfU3RhcnQgcHJvcGVydHk+XG4nCisgICAgICAgICAgICAgICAgJyAgIGlkX2NvbnRpbnVlICA6Oj0gPGFsbCBjaGFyYWN0ZXJzIGluIGlkX3N0YXJ0LCBwbHVzICcKKyAgICAgICAgICAgICAgICAnY2hhcmFjdGVycyBpbiB0aGUgY2F0ZWdvcmllcyBNbiwgTWMsIE5kLCBQYyBhbmQgb3RoZXJzIHdpdGggJworICAgICAgICAgICAgICAgICd0aGUgT3RoZXJfSURfQ29udGludWUgcHJvcGVydHk+XG4nCisgICAgICAgICAgICAgICAgJyAgIHhpZF9zdGFydCAgICA6Oj0gPGFsbCBjaGFyYWN0ZXJzIGluIGlkX3N0YXJ0IHdob3NlIE5GS0MgJworICAgICAgICAgICAgICAgICdub3JtYWxpemF0aW9uIGlzIGluICJpZF9zdGFydCB4aWRfY29udGludWUqIj5cbicKKyAgICAgICAgICAgICAgICAnICAgeGlkX2NvbnRpbnVlIDo6PSA8YWxsIGNoYXJhY3RlcnMgaW4gaWRfY29udGludWUgd2hvc2UgTkZLQyAnCisgICAgICAgICAgICAgICAgJ25vcm1hbGl6YXRpb24gaXMgaW4gImlkX2NvbnRpbnVlKiI+XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdUaGUgVW5pY29kZSBjYXRlZ29yeSBjb2RlcyBtZW50aW9uZWQgYWJvdmUgc3RhbmQgZm9yOlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiAqTHUqIC0gdXBwZXJjYXNlIGxldHRlcnNcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogKkxsKiAtIGxvd2VyY2FzZSBsZXR0ZXJzXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqICpMdCogLSB0aXRsZWNhc2UgbGV0dGVyc1xuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiAqTG0qIC0gbW9kaWZpZXIgbGV0dGVyc1xuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiAqTG8qIC0gb3RoZXIgbGV0dGVyc1xuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiAqTmwqIC0gbGV0dGVyIG51bWJlcnNcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogKk1uKiAtIG5vbnNwYWNpbmcgbWFya3NcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogKk1jKiAtIHNwYWNpbmcgY29tYmluaW5nIG1hcmtzXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqICpOZCogLSBkZWNpbWFsIG51bWJlcnNcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogKlBjKiAtIGNvbm5lY3RvciBwdW5jdHVhdGlvbnNcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogKk90aGVyX0lEX1N0YXJ0KiAtIGV4cGxpY2l0IGxpc3Qgb2YgY2hhcmFjdGVycyBpbiAnCisgICAgICAgICAgICAgICAgJ1Byb3BMaXN0LnR4dCB0b1xuJworICAgICAgICAgICAgICAgICcgIHN1cHBvcnQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogKk90aGVyX0lEX0NvbnRpbnVlKiAtIGxpa2V3aXNlXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdBbGwgaWRlbnRpZmllcnMgYXJlIGNvbnZlcnRlZCBpbnRvIHRoZSBub3JtYWwgZm9ybSBORktDIHdoaWxlICcKKyAgICAgICAgICAgICAgICAncGFyc2luZztcbicKKyAgICAgICAgICAgICAgICAnY29tcGFyaXNvbiBvZiBpZGVudGlmaWVycyBpcyBiYXNlZCBvbiBORktDLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnQSBub24tbm9ybWF0aXZlIEhUTUwgZmlsZSBsaXN0aW5nIGFsbCB2YWxpZCBpZGVudGlmaWVyICcKKyAgICAgICAgICAgICAgICAnY2hhcmFjdGVycyBmb3JcbicKKyAgICAgICAgICAgICAgICAnVW5pY29kZSA0LjEgY2FuIGJlIGZvdW5kIGF0IGh0dHBzOi8vd3d3LmRjbC5ocGkudW5pLVxuJworICAgICAgICAgICAgICAgICdwb3RzZGFtLmRlL2hvbWUvbG9ld2lzL3RhYmxlLTMxMzEuaHRtbC5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdLZXl3b3Jkc1xuJworICAgICAgICAgICAgICAgICc9PT09PT09PVxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBpZGVudGlmaWVycyBhcmUgdXNlZCBhcyByZXNlcnZlZCB3b3Jkcywgb3IgJworICAgICAgICAgICAgICAgICcqa2V5d29yZHMqIG9mXG4nCisgICAgICAgICAgICAgICAgJ3RoZSBsYW5ndWFnZSwgYW5kIGNhbm5vdCBiZSB1c2VkIGFzIG9yZGluYXJ5IGlkZW50aWZpZXJzLiAgJworICAgICAgICAgICAgICAgICdUaGV5IG11c3RcbicKKyAgICAgICAgICAgICAgICAnYmUgc3BlbGxlZCBleGFjdGx5IGFzIHdyaXR0ZW4gaGVyZTpcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgIEZhbHNlICAgICAgY2xhc3MgICAgICBmaW5hbGx5ICAgIGlzICAgICAgICAgcmV0dXJuXG4nCisgICAgICAgICAgICAgICAgJyAgIE5vbmUgICAgICAgY29udGludWUgICBmb3IgICAgICAgIGxhbWJkYSAgICAgdHJ5XG4nCisgICAgICAgICAgICAgICAgJyAgIFRydWUgICAgICAgZGVmICAgICAgICBmcm9tICAgICAgIG5vbmxvY2FsICAgd2hpbGVcbicKKyAgICAgICAgICAgICAgICAnICAgYW5kICAgICAgICBkZWwgICAgICAgIGdsb2JhbCAgICAgbm90ICAgICAgICB3aXRoXG4nCisgICAgICAgICAgICAgICAgJyAgIGFzICAgICAgICAgZWxpZiAgICAgICBpZiAgICAgICAgIG9yICAgICAgICAgeWllbGRcbicKKyAgICAgICAgICAgICAgICAnICAgYXNzZXJ0ICAgICBlbHNlICAgICAgIGltcG9ydCAgICAgcGFzc1xuJworICAgICAgICAgICAgICAgICcgICBicmVhayAgICAgIGV4Y2VwdCAgICAgaW4gICAgICAgICByYWlzZVxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1Jlc2VydmVkIGNsYXNzZXMgb2YgaWRlbnRpZmllcnNcbicKKyAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnQ2VydGFpbiBjbGFzc2VzIG9mIGlkZW50aWZpZXJzIChiZXNpZGVzIGtleXdvcmRzKSBoYXZlICcKKyAgICAgICAgICAgICAgICAnc3BlY2lhbFxuJworICAgICAgICAgICAgICAgICdtZWFuaW5ncy4gIFRoZXNlIGNsYXNzZXMgYXJlIGlkZW50aWZpZWQgYnkgdGhlIHBhdHRlcm5zIG9mICcKKyAgICAgICAgICAgICAgICAnbGVhZGluZyBhbmRcbicKKyAgICAgICAgICAgICAgICAndHJhaWxpbmcgdW5kZXJzY29yZSBjaGFyYWN0ZXJzOlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnIl8qIlxuJworICAgICAgICAgICAgICAgICcgICBOb3QgaW1wb3J0ZWQgYnkgImZyb20gbW9kdWxlIGltcG9ydCAqIi4gIFRoZSBzcGVjaWFsICcKKyAgICAgICAgICAgICAgICAnaWRlbnRpZmllciAiXyJcbicKKyAgICAgICAgICAgICAgICAnICAgaXMgdXNlZCBpbiB0aGUgaW50ZXJhY3RpdmUgaW50ZXJwcmV0ZXIgdG8gc3RvcmUgdGhlIHJlc3VsdCAnCisgICAgICAgICAgICAgICAgJ29mIHRoZVxuJworICAgICAgICAgICAgICAgICcgICBsYXN0IGV2YWx1YXRpb247IGl0IGlzIHN0b3JlZCBpbiB0aGUgImJ1aWx0aW5zIiBtb2R1bGUuICAnCisgICAgICAgICAgICAgICAgJ1doZW4gbm90XG4nCisgICAgICAgICAgICAgICAgJyAgIGluIGludGVyYWN0aXZlIG1vZGUsICJfIiBoYXMgbm8gc3BlY2lhbCBtZWFuaW5nIGFuZCBpcyBub3QgJworICAgICAgICAgICAgICAgICdkZWZpbmVkLlxuJworICAgICAgICAgICAgICAgICcgICBTZWUgc2VjdGlvbiBUaGUgaW1wb3J0IHN0YXRlbWVudC5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgIE5vdGU6IFRoZSBuYW1lICJfIiBpcyBvZnRlbiB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGhcbicKKyAgICAgICAgICAgICAgICAnICAgICBpbnRlcm5hdGlvbmFsaXphdGlvbjsgcmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb24gZm9yICcKKyAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgJyAgICAgImdldHRleHQiIG1vZHVsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGlzICcKKyAgICAgICAgICAgICAgICAnY29udmVudGlvbi5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyJfXypfXyJcbicKKyAgICAgICAgICAgICAgICAnICAgU3lzdGVtLWRlZmluZWQgbmFtZXMuIFRoZXNlIG5hbWVzIGFyZSBkZWZpbmVkIGJ5IHRoZSAnCisgICAgICAgICAgICAgICAgJ2ludGVycHJldGVyXG4nCisgICAgICAgICAgICAgICAgJyAgIGFuZCBpdHMgaW1wbGVtZW50YXRpb24gKGluY2x1ZGluZyB0aGUgc3RhbmRhcmQgbGlicmFyeSkuICAnCisgICAgICAgICAgICAgICAgJ0N1cnJlbnRcbicKKyAgICAgICAgICAgICAgICAnICAgc3lzdGVtIG5hbWVzIGFyZSBkaXNjdXNzZWQgaW4gdGhlIFNwZWNpYWwgbWV0aG9kIG5hbWVzICcKKyAgICAgICAgICAgICAgICAnc2VjdGlvbiBhbmRcbicKKyAgICAgICAgICAgICAgICAnICAgZWxzZXdoZXJlLiAgTW9yZSB3aWxsIGxpa2VseSBiZSBkZWZpbmVkIGluIGZ1dHVyZSB2ZXJzaW9ucyAnCisgICAgICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAgICAgJyAgIFB5dGhvbi4gICpBbnkqIHVzZSBvZiAiX18qX18iIG5hbWVzLCBpbiBhbnkgY29udGV4dCwgdGhhdCAnCisgICAgICAgICAgICAgICAgJ2RvZXMgbm90XG4nCisgICAgICAgICAgICAgICAgJyAgIGZvbGxvdyBleHBsaWNpdGx5IGRvY3VtZW50ZWQgdXNlLCBpcyBzdWJqZWN0IHRvIGJyZWFrYWdlICcKKyAgICAgICAgICAgICAgICAnd2l0aG91dFxuJworICAgICAgICAgICAgICAgICcgICB3YXJuaW5nLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnIl9fKiJcbicKKyAgICAgICAgICAgICAgICAnICAgQ2xhc3MtcHJpdmF0ZSBuYW1lcy4gIE5hbWVzIGluIHRoaXMgY2F0ZWdvcnksIHdoZW4gdXNlZCAnCisgICAgICAgICAgICAgICAgJ3dpdGhpbiB0aGVcbicKKyAgICAgICAgICAgICAgICAnICAgY29udGV4dCBvZiBhIGNsYXNzIGRlZmluaXRpb24sIGFyZSByZS13cml0dGVuIHRvIHVzZSBhICcKKyAgICAgICAgICAgICAgICAnbWFuZ2xlZCBmb3JtXG4nCisgICAgICAgICAgICAgICAgJyAgIHRvIGhlbHAgYXZvaWQgbmFtZSBjbGFzaGVzIGJldHdlZW4gInByaXZhdGUiIGF0dHJpYnV0ZXMgb2YgJworICAgICAgICAgICAgICAgICdiYXNlIGFuZFxuJworICAgICAgICAgICAgICAgICcgICBkZXJpdmVkIGNsYXNzZXMuIFNlZSBzZWN0aW9uIElkZW50aWZpZXJzIChOYW1lcykuXG4nLAorICdpZic6ICdcbicKKyAgICAgICAnVGhlICJpZiIgc3RhdGVtZW50XG4nCisgICAgICAgJyoqKioqKioqKioqKioqKioqKlxuJworICAgICAgICdcbicKKyAgICAgICAnVGhlICJpZiIgc3RhdGVtZW50IGlzIHVzZWQgZm9yIGNvbmRpdGlvbmFsIGV4ZWN1dGlvbjpcbicKKyAgICAgICAnXG4nCisgICAgICAgJyAgIGlmX3N0bXQgOjo9ICJpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGVcbicKKyAgICAgICAnICAgICAgICAgICAgICAgKCAiZWxpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGUgKSpcbicKKyAgICAgICAnICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4nCisgICAgICAgJ1xuJworICAgICAgICdJdCBzZWxlY3RzIGV4YWN0bHkgb25lIG9mIHRoZSBzdWl0ZXMgYnkgZXZhbHVhdGluZyB0aGUgZXhwcmVzc2lvbnMgJworICAgICAgICdvbmVcbicKKyAgICAgICAnYnkgb25lIHVudGlsIG9uZSBpcyBmb3VuZCB0byBiZSB0cnVlIChzZWUgc2VjdGlvbiBCb29sZWFuIG9wZXJhdGlvbnNcbicKKyAgICAgICAnZm9yIHRoZSBkZWZpbml0aW9uIG9mIHRydWUgYW5kIGZhbHNlKTsgdGhlbiB0aGF0IHN1aXRlIGlzIGV4ZWN1dGVkXG4nCisgICAgICAgJyhhbmQgbm8gb3RoZXIgcGFydCBvZiB0aGUgImlmIiBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQgb3IgZXZhbHVhdGVkKS5cbicKKyAgICAgICAnSWYgYWxsIGV4cHJlc3Npb25zIGFyZSBmYWxzZSwgdGhlIHN1aXRlIG9mIHRoZSAiZWxzZSIgY2xhdXNlLCBpZlxuJworICAgICAgICdwcmVzZW50LCBpcyBleGVjdXRlZC5cbicsCisgJ2ltYWdpbmFyeSc6ICdcbicKKyAgICAgICAgICAgICAgJ0ltYWdpbmFyeSBsaXRlcmFsc1xuJworICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0ltYWdpbmFyeSBsaXRlcmFscyBhcmUgZGVzY3JpYmVkIGJ5IHRoZSBmb2xsb3dpbmcgbGV4aWNhbCAnCisgICAgICAgICAgICAgICdkZWZpbml0aW9uczpcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnICAgaW1hZ251bWJlciA6Oj0gKGZsb2F0bnVtYmVyIHwgZGlnaXRwYXJ0KSAoImoiIHwgIkoiKVxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdBbiBpbWFnaW5hcnkgbGl0ZXJhbCB5aWVsZHMgYSBjb21wbGV4IG51bWJlciB3aXRoIGEgcmVhbCBwYXJ0ICcKKyAgICAgICAgICAgICAgJ29mIDAuMC5cbicKKyAgICAgICAgICAgICAgJ0NvbXBsZXggbnVtYmVycyBhcmUgcmVwcmVzZW50ZWQgYXMgYSBwYWlyIG9mIGZsb2F0aW5nIHBvaW50ICcKKyAgICAgICAgICAgICAgJ251bWJlcnNcbicKKyAgICAgICAgICAgICAgJ2FuZCBoYXZlIHRoZSBzYW1lIHJlc3RyaWN0aW9ucyBvbiB0aGVpciByYW5nZS4gIFRvIGNyZWF0ZSBhICcKKyAgICAgICAgICAgICAgJ2NvbXBsZXhcbicKKyAgICAgICAgICAgICAgJ251bWJlciB3aXRoIGEgbm9uemVybyByZWFsIHBhcnQsIGFkZCBhIGZsb2F0aW5nIHBvaW50IG51bWJlciB0byAnCisgICAgICAgICAgICAgICdpdCxcbicKKyAgICAgICAgICAgICAgJ2UuZy4sICIoMys0aikiLiAgU29tZSBleGFtcGxlcyBvZiBpbWFnaW5hcnkgbGl0ZXJhbHM6XG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJyAgIDMuMTRqICAgMTAuaiAgICAxMGogICAgIC4wMDFqICAgMWUxMDBqICAgMy4xNGUtMTBqICAgJworICAgICAgICAgICAgICAnMy4xNF8xNV85M2pcbicsCisgJ2ltcG9ydCc6ICdcbicKKyAgICAgICAgICAgJ1RoZSAiaW1wb3J0IiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgaW1wb3J0X3N0bXQgICAgIDo6PSAiaW1wb3J0IiBtb2R1bGUgWyJhcyIgbmFtZV0gKCAiLCIgbW9kdWxlICcKKyAgICAgICAgICAgJ1siYXMiIG5hbWVdICkqXG4nCisgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgfCAiZnJvbSIgcmVsYXRpdmVfbW9kdWxlICJpbXBvcnQiIGlkZW50aWZpZXIgJworICAgICAgICAgICAnWyJhcyIgbmFtZV1cbicKKyAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAoICIsIiBpZGVudGlmaWVyIFsiYXMiIG5hbWVdICkqXG4nCisgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgfCAiZnJvbSIgcmVsYXRpdmVfbW9kdWxlICJpbXBvcnQiICIoIiAnCisgICAgICAgICAgICdpZGVudGlmaWVyIFsiYXMiIG5hbWVdXG4nCisgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgKCAiLCIgaWRlbnRpZmllciBbImFzIiBuYW1lXSApKiBbIiwiXSAiKSJcbicKKyAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICB8ICJmcm9tIiBtb2R1bGUgImltcG9ydCIgIioiXG4nCisgICAgICAgICAgICcgICBtb2R1bGUgICAgICAgICAgOjo9IChpZGVudGlmaWVyICIuIikqIGlkZW50aWZpZXJcbicKKyAgICAgICAgICAgJyAgIHJlbGF0aXZlX21vZHVsZSA6Oj0gIi4iKiBtb2R1bGUgfCAiLiIrXG4nCisgICAgICAgICAgICcgICBuYW1lICAgICAgICAgICAgOjo9IGlkZW50aWZpZXJcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlIGJhc2ljIGltcG9ydCBzdGF0ZW1lbnQgKG5vICJmcm9tIiBjbGF1c2UpIGlzIGV4ZWN1dGVkIGluIHR3b1xuJworICAgICAgICAgICAnc3RlcHM6XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJzEuIGZpbmQgYSBtb2R1bGUsIGxvYWRpbmcgYW5kIGluaXRpYWxpemluZyBpdCBpZiBuZWNlc3NhcnlcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnMi4gZGVmaW5lIGEgbmFtZSBvciBuYW1lcyBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGZvciB0aGUgc2NvcGVcbicKKyAgICAgICAgICAgJyAgIHdoZXJlIHRoZSAiaW1wb3J0IiBzdGF0ZW1lbnQgb2NjdXJzLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdXaGVuIHRoZSBzdGF0ZW1lbnQgY29udGFpbnMgbXVsdGlwbGUgY2xhdXNlcyAoc2VwYXJhdGVkIGJ5IGNvbW1hcykgJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICd0d28gc3RlcHMgYXJlIGNhcnJpZWQgb3V0IHNlcGFyYXRlbHkgZm9yIGVhY2ggY2xhdXNlLCBqdXN0IGFzICcKKyAgICAgICAgICAgJ3Rob3VnaFxuJworICAgICAgICAgICAndGhlIGNsYXVzZXMgaGFkIGJlZW4gc2VwYXJhdGVkIG91dCBpbnRvIGluZGl2aWR1YWwgaW1wb3J0ICcKKyAgICAgICAgICAgJ3N0YXRlbWVudHMuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSBkZXRhaWxzIG9mIHRoZSBmaXJzdCBzdGVwLCBmaW5kaW5nIGFuZCBsb2FkaW5nIG1vZHVsZXMgYXJlXG4nCisgICAgICAgICAgICdkZXNjcmliZWQgaW4gZ3JlYXRlciBkZXRhaWwgaW4gdGhlIHNlY3Rpb24gb24gdGhlIGltcG9ydCBzeXN0ZW0sICcKKyAgICAgICAgICAgJ3doaWNoXG4nCisgICAgICAgICAgICdhbHNvIGRlc2NyaWJlcyB0aGUgdmFyaW91cyB0eXBlcyBvZiBwYWNrYWdlcyBhbmQgbW9kdWxlcyB0aGF0IGNhbiAnCisgICAgICAgICAgICdiZVxuJworICAgICAgICAgICAnaW1wb3J0ZWQsIGFzIHdlbGwgYXMgYWxsIHRoZSBob29rcyB0aGF0IGNhbiBiZSB1c2VkIHRvIGN1c3RvbWl6ZSAnCisgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgJ2ltcG9ydCBzeXN0ZW0uIE5vdGUgdGhhdCBmYWlsdXJlcyBpbiB0aGlzIHN0ZXAgbWF5IGluZGljYXRlICcKKyAgICAgICAgICAgJ2VpdGhlclxuJworICAgICAgICAgICAndGhhdCB0aGUgbW9kdWxlIGNvdWxkIG5vdCBiZSBsb2NhdGVkLCAqb3IqIHRoYXQgYW4gZXJyb3Igb2NjdXJyZWRcbicKKyAgICAgICAgICAgJ3doaWxlIGluaXRpYWxpemluZyB0aGUgbW9kdWxlLCB3aGljaCBpbmNsdWRlcyBleGVjdXRpb24gb2YgdGhlXG4nCisgICAgICAgICAgICJtb2R1bGUncyBjb2RlLlxuIgorICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdJZiB0aGUgcmVxdWVzdGVkIG1vZHVsZSBpcyByZXRyaWV2ZWQgc3VjY2Vzc2Z1bGx5LCBpdCB3aWxsIGJlICcKKyAgICAgICAgICAgJ21hZGVcbicKKyAgICAgICAgICAgJ2F2YWlsYWJsZSBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGluIG9uZSBvZiB0aHJlZSB3YXlzOlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcqIElmIHRoZSBtb2R1bGUgbmFtZSBpcyBmb2xsb3dlZCBieSAiYXMiLCB0aGVuIHRoZSBuYW1lIGZvbGxvd2luZ1xuJworICAgICAgICAgICAnICAiYXMiIGlzIGJvdW5kIGRpcmVjdGx5IHRvIHRoZSBpbXBvcnRlZCBtb2R1bGUuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyogSWYgbm8gb3RoZXIgbmFtZSBpcyBzcGVjaWZpZWQsIGFuZCB0aGUgbW9kdWxlIGJlaW5nIGltcG9ydGVkIGlzICcKKyAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgIiAgdG9wIGxldmVsIG1vZHVsZSwgdGhlIG1vZHVsZSdzIG5hbWUgaXMgYm91bmQgaW4gdGhlIGxvY2FsICIKKyAgICAgICAgICAgJ25hbWVzcGFjZVxuJworICAgICAgICAgICAnICBhcyBhIHJlZmVyZW5jZSB0byB0aGUgaW1wb3J0ZWQgbW9kdWxlXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyogSWYgdGhlIG1vZHVsZSBiZWluZyBpbXBvcnRlZCBpcyAqbm90KiBhIHRvcCBsZXZlbCBtb2R1bGUsIHRoZW4gJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICcgIG5hbWUgb2YgdGhlIHRvcCBsZXZlbCBwYWNrYWdlIHRoYXQgY29udGFpbnMgdGhlIG1vZHVsZSBpcyBib3VuZCAnCisgICAgICAgICAgICdpblxuJworICAgICAgICAgICAnICB0aGUgbG9jYWwgbmFtZXNwYWNlIGFzIGEgcmVmZXJlbmNlIHRvIHRoZSB0b3AgbGV2ZWwgcGFja2FnZS4gJworICAgICAgICAgICAnVGhlXG4nCisgICAgICAgICAgICcgIGltcG9ydGVkIG1vZHVsZSBtdXN0IGJlIGFjY2Vzc2VkIHVzaW5nIGl0cyBmdWxsIHF1YWxpZmllZCBuYW1lXG4nCisgICAgICAgICAgICcgIHJhdGhlciB0aGFuIGRpcmVjdGx5XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSAiZnJvbSIgZm9ybSB1c2VzIGEgc2xpZ2h0bHkgbW9yZSBjb21wbGV4IHByb2Nlc3M6XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJzEuIGZpbmQgdGhlIG1vZHVsZSBzcGVjaWZpZWQgaW4gdGhlICJmcm9tIiBjbGF1c2UsIGxvYWRpbmcgYW5kXG4nCisgICAgICAgICAgICcgICBpbml0aWFsaXppbmcgaXQgaWYgbmVjZXNzYXJ5O1xuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcyLiBmb3IgZWFjaCBvZiB0aGUgaWRlbnRpZmllcnMgc3BlY2lmaWVkIGluIHRoZSAiaW1wb3J0IiBjbGF1c2VzOlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICAxLiBjaGVjayBpZiB0aGUgaW1wb3J0ZWQgbW9kdWxlIGhhcyBhbiBhdHRyaWJ1dGUgYnkgdGhhdCBuYW1lXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIDIuIGlmIG5vdCwgYXR0ZW1wdCB0byBpbXBvcnQgYSBzdWJtb2R1bGUgd2l0aCB0aGF0IG5hbWUgYW5kICcKKyAgICAgICAgICAgJ3RoZW5cbicKKyAgICAgICAgICAgJyAgICAgIGNoZWNrIHRoZSBpbXBvcnRlZCBtb2R1bGUgYWdhaW4gZm9yIHRoYXQgYXR0cmlidXRlXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIDMuIGlmIHRoZSBhdHRyaWJ1dGUgaXMgbm90IGZvdW5kLCAiSW1wb3J0RXJyb3IiIGlzIHJhaXNlZC5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgNC4gb3RoZXJ3aXNlLCBhIHJlZmVyZW5jZSB0byB0aGF0IHZhbHVlIGlzIHN0b3JlZCBpbiB0aGUgbG9jYWxcbicKKyAgICAgICAgICAgJyAgICAgIG5hbWVzcGFjZSwgdXNpbmcgdGhlIG5hbWUgaW4gdGhlICJhcyIgY2xhdXNlIGlmIGl0IGlzICcKKyAgICAgICAgICAgJ3ByZXNlbnQsXG4nCisgICAgICAgICAgICcgICAgICBvdGhlcndpc2UgdXNpbmcgdGhlIGF0dHJpYnV0ZSBuYW1lXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0V4YW1wbGVzOlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICBpbXBvcnQgZm9vICAgICAgICAgICAgICAgICAjIGZvbyBpbXBvcnRlZCBhbmQgYm91bmQgbG9jYWxseVxuJworICAgICAgICAgICAnICAgaW1wb3J0IGZvby5iYXIuYmF6ICAgICAgICAgIyBmb28uYmFyLmJheiBpbXBvcnRlZCwgZm9vIGJvdW5kICcKKyAgICAgICAgICAgJ2xvY2FsbHlcbicKKyAgICAgICAgICAgJyAgIGltcG9ydCBmb28uYmFyLmJheiBhcyBmYmIgICMgZm9vLmJhci5iYXogaW1wb3J0ZWQgYW5kIGJvdW5kIGFzICcKKyAgICAgICAgICAgJ2ZiYlxuJworICAgICAgICAgICAnICAgZnJvbSBmb28uYmFyIGltcG9ydCBiYXogICAgIyBmb28uYmFyLmJheiBpbXBvcnRlZCBhbmQgYm91bmQgYXMgJworICAgICAgICAgICAnYmF6XG4nCisgICAgICAgICAgICcgICBmcm9tIGZvbyBpbXBvcnQgYXR0ciAgICAgICAjIGZvbyBpbXBvcnRlZCBhbmQgZm9vLmF0dHIgYm91bmQgYXMgJworICAgICAgICAgICAnYXR0clxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdJZiB0aGUgbGlzdCBvZiBpZGVudGlmaWVycyBpcyByZXBsYWNlZCBieSBhIHN0YXIgKCJcJypcJyIpLCBhbGwgJworICAgICAgICAgICAncHVibGljXG4nCisgICAgICAgICAgICduYW1lcyBkZWZpbmVkIGluIHRoZSBtb2R1bGUgYXJlIGJvdW5kIGluIHRoZSBsb2NhbCBuYW1lc3BhY2UgZm9yICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnc2NvcGUgd2hlcmUgdGhlICJpbXBvcnQiIHN0YXRlbWVudCBvY2N1cnMuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSAqcHVibGljIG5hbWVzKiBkZWZpbmVkIGJ5IGEgbW9kdWxlIGFyZSBkZXRlcm1pbmVkIGJ5IGNoZWNraW5nICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnbW9kdWxlXCdzIG5hbWVzcGFjZSBmb3IgYSB2YXJpYWJsZSBuYW1lZCAiX19hbGxfXyI7IGlmIGRlZmluZWQsIGl0ICcKKyAgICAgICAgICAgJ211c3RcbicKKyAgICAgICAgICAgJ2JlIGEgc2VxdWVuY2Ugb2Ygc3RyaW5ncyB3aGljaCBhcmUgbmFtZXMgZGVmaW5lZCBvciBpbXBvcnRlZCBieSAnCisgICAgICAgICAgICd0aGF0XG4nCisgICAgICAgICAgICdtb2R1bGUuICBUaGUgbmFtZXMgZ2l2ZW4gaW4gIl9fYWxsX18iIGFyZSBhbGwgY29uc2lkZXJlZCBwdWJsaWMgJworICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICdhcmUgcmVxdWlyZWQgdG8gZXhpc3QuICBJZiAiX19hbGxfXyIgaXMgbm90IGRlZmluZWQsIHRoZSBzZXQgb2YgJworICAgICAgICAgICAncHVibGljXG4nCisgICAgICAgICAgICJuYW1lcyBpbmNsdWRlcyBhbGwgbmFtZXMgZm91bmQgaW4gdGhlIG1vZHVsZSdzIG5hbWVzcGFjZSB3aGljaCBkbyAiCisgICAgICAgICAgICdub3RcbicKKyAgICAgICAgICAgJ2JlZ2luIHdpdGggYW4gdW5kZXJzY29yZSBjaGFyYWN0ZXIgKCJcJ19cJyIpLiAgIl9fYWxsX18iIHNob3VsZCAnCisgICAgICAgICAgICdjb250YWluXG4nCisgICAgICAgICAgICd0aGUgZW50aXJlIHB1YmxpYyBBUEkuIEl0IGlzIGludGVuZGVkIHRvIGF2b2lkIGFjY2lkZW50YWxseSAnCisgICAgICAgICAgICdleHBvcnRpbmdcbicKKyAgICAgICAgICAgJ2l0ZW1zIHRoYXQgYXJlIG5vdCBwYXJ0IG9mIHRoZSBBUEkgKHN1Y2ggYXMgbGlicmFyeSBtb2R1bGVzIHdoaWNoICcKKyAgICAgICAgICAgJ3dlcmVcbicKKyAgICAgICAgICAgJ2ltcG9ydGVkIGFuZCB1c2VkIHdpdGhpbiB0aGUgbW9kdWxlKS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlIHdpbGQgY2FyZCBmb3JtIG9mIGltcG9ydCAtLS0gImZyb20gbW9kdWxlIGltcG9ydCAqIiAtLS0gaXMgJworICAgICAgICAgICAnb25seVxuJworICAgICAgICAgICAnYWxsb3dlZCBhdCB0aGUgbW9kdWxlIGxldmVsLiAgQXR0ZW1wdGluZyB0byB1c2UgaXQgaW4gY2xhc3Mgb3JcbicKKyAgICAgICAgICAgJ2Z1bmN0aW9uIGRlZmluaXRpb25zIHdpbGwgcmFpc2UgYSAiU3ludGF4RXJyb3IiLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdXaGVuIHNwZWNpZnlpbmcgd2hhdCBtb2R1bGUgdG8gaW1wb3J0IHlvdSBkbyBub3QgaGF2ZSB0byBzcGVjaWZ5ICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnYWJzb2x1dGUgbmFtZSBvZiB0aGUgbW9kdWxlLiBXaGVuIGEgbW9kdWxlIG9yIHBhY2thZ2UgaXMgJworICAgICAgICAgICAnY29udGFpbmVkXG4nCisgICAgICAgICAgICd3aXRoaW4gYW5vdGhlciBwYWNrYWdlIGl0IGlzIHBvc3NpYmxlIHRvIG1ha2UgYSByZWxhdGl2ZSBpbXBvcnQgJworICAgICAgICAgICAnd2l0aGluXG4nCisgICAgICAgICAgICd0aGUgc2FtZSB0b3AgcGFja2FnZSB3aXRob3V0IGhhdmluZyB0byBtZW50aW9uIHRoZSBwYWNrYWdlIG5hbWUuICcKKyAgICAgICAgICAgJ0J5XG4nCisgICAgICAgICAgICd1c2luZyBsZWFkaW5nIGRvdHMgaW4gdGhlIHNwZWNpZmllZCBtb2R1bGUgb3IgcGFja2FnZSBhZnRlciAiZnJvbSIgJworICAgICAgICAgICAneW91XG4nCisgICAgICAgICAgICdjYW4gc3BlY2lmeSBob3cgaGlnaCB0byB0cmF2ZXJzZSB1cCB0aGUgY3VycmVudCBwYWNrYWdlIGhpZXJhcmNoeVxuJworICAgICAgICAgICAnd2l0aG91dCBzcGVjaWZ5aW5nIGV4YWN0IG5hbWVzLiBPbmUgbGVhZGluZyBkb3QgbWVhbnMgdGhlIGN1cnJlbnRcbicKKyAgICAgICAgICAgJ3BhY2thZ2Ugd2hlcmUgdGhlIG1vZHVsZSBtYWtpbmcgdGhlIGltcG9ydCBleGlzdHMuIFR3byBkb3RzIG1lYW5zICcKKyAgICAgICAgICAgJ3VwXG4nCisgICAgICAgICAgICdvbmUgcGFja2FnZSBsZXZlbC4gVGhyZWUgZG90cyBpcyB1cCB0d28gbGV2ZWxzLCBldGMuIFNvIGlmIHlvdSAnCisgICAgICAgICAgICdleGVjdXRlXG4nCisgICAgICAgICAgICciZnJvbSAuIGltcG9ydCBtb2QiIGZyb20gYSBtb2R1bGUgaW4gdGhlICJwa2ciIHBhY2thZ2UgdGhlbiB5b3UgJworICAgICAgICAgICAnd2lsbFxuJworICAgICAgICAgICAnZW5kIHVwIGltcG9ydGluZyAicGtnLm1vZCIuIElmIHlvdSBleGVjdXRlICJmcm9tIC4uc3VicGtnMiBpbXBvcnQgJworICAgICAgICAgICAnbW9kIlxuJworICAgICAgICAgICAnZnJvbSB3aXRoaW4gInBrZy5zdWJwa2cxIiB5b3Ugd2lsbCBpbXBvcnQgInBrZy5zdWJwa2cyLm1vZCIuIFRoZVxuJworICAgICAgICAgICAnc3BlY2lmaWNhdGlvbiBmb3IgcmVsYXRpdmUgaW1wb3J0cyBpcyBjb250YWluZWQgd2l0aGluICoqUEVQICcKKyAgICAgICAgICAgJzMyOCoqLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICciaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoKSIgaXMgcHJvdmlkZWQgdG8gc3VwcG9ydCBhcHBsaWNhdGlvbnMgJworICAgICAgICAgICAndGhhdFxuJworICAgICAgICAgICAnZGV0ZXJtaW5lIGR5bmFtaWNhbGx5IHRoZSBtb2R1bGVzIHRvIGJlIGxvYWRlZC5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdGdXR1cmUgc3RhdGVtZW50c1xuJworICAgICAgICAgICAnPT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnQSAqZnV0dXJlIHN0YXRlbWVudCogaXMgYSBkaXJlY3RpdmUgdG8gdGhlIGNvbXBpbGVyIHRoYXQgYSAnCisgICAgICAgICAgICdwYXJ0aWN1bGFyXG4nCisgICAgICAgICAgICdtb2R1bGUgc2hvdWxkIGJlIGNvbXBpbGVkIHVzaW5nIHN5bnRheCBvciBzZW1hbnRpY3MgdGhhdCB3aWxsIGJlXG4nCisgICAgICAgICAgICdhdmFpbGFibGUgaW4gYSBzcGVjaWZpZWQgZnV0dXJlIHJlbGVhc2Ugb2YgUHl0aG9uIHdoZXJlIHRoZSAnCisgICAgICAgICAgICdmZWF0dXJlXG4nCisgICAgICAgICAgICdiZWNvbWVzIHN0YW5kYXJkLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgZnV0dXJlIHN0YXRlbWVudCBpcyBpbnRlbmRlZCB0byBlYXNlIG1pZ3JhdGlvbiB0byBmdXR1cmUgJworICAgICAgICAgICAndmVyc2lvbnNcbicKKyAgICAgICAgICAgJ29mIFB5dGhvbiB0aGF0IGludHJvZHVjZSBpbmNvbXBhdGlibGUgY2hhbmdlcyB0byB0aGUgbGFuZ3VhZ2UuICAnCisgICAgICAgICAgICdJdFxuJworICAgICAgICAgICAnYWxsb3dzIHVzZSBvZiB0aGUgbmV3IGZlYXR1cmVzIG9uIGEgcGVyLW1vZHVsZSBiYXNpcyBiZWZvcmUgdGhlXG4nCisgICAgICAgICAgICdyZWxlYXNlIGluIHdoaWNoIHRoZSBmZWF0dXJlIGJlY29tZXMgc3RhbmRhcmQuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIGZ1dHVyZV9zdGF0ZW1lbnQgOjo9ICJmcm9tIiAiX19mdXR1cmVfXyIgImltcG9ydCIgZmVhdHVyZSBbImFzIiAnCisgICAgICAgICAgICduYW1lXVxuJworICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgICAgKCIsIiBmZWF0dXJlIFsiYXMiIG5hbWVdKSpcbicKKyAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgICAgIHwgImZyb20iICJfX2Z1dHVyZV9fIiAiaW1wb3J0IiAiKCIgZmVhdHVyZSAnCisgICAgICAgICAgICdbImFzIiBuYW1lXVxuJworICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgICAgKCIsIiBmZWF0dXJlIFsiYXMiIG5hbWVdKSogWyIsIl0gIikiXG4nCisgICAgICAgICAgICcgICBmZWF0dXJlICAgICAgICAgIDo6PSBpZGVudGlmaWVyXG4nCisgICAgICAgICAgICcgICBuYW1lICAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0EgZnV0dXJlIHN0YXRlbWVudCBtdXN0IGFwcGVhciBuZWFyIHRoZSB0b3Agb2YgdGhlIG1vZHVsZS4gIFRoZSAnCisgICAgICAgICAgICdvbmx5XG4nCisgICAgICAgICAgICdsaW5lcyB0aGF0IGNhbiBhcHBlYXIgYmVmb3JlIGEgZnV0dXJlIHN0YXRlbWVudCBhcmU6XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyogdGhlIG1vZHVsZSBkb2NzdHJpbmcgKGlmIGFueSksXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyogY29tbWVudHMsXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyogYmxhbmsgbGluZXMsIGFuZFxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcqIG90aGVyIGZ1dHVyZSBzdGF0ZW1lbnRzLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgZmVhdHVyZXMgcmVjb2duaXplZCBieSBQeXRob24gMy4wIGFyZSAiYWJzb2x1dGVfaW1wb3J0IixcbicKKyAgICAgICAgICAgJyJkaXZpc2lvbiIsICJnZW5lcmF0b3JzIiwgInVuaWNvZGVfbGl0ZXJhbHMiLCAicHJpbnRfZnVuY3Rpb24iLFxuJworICAgICAgICAgICAnIm5lc3RlZF9zY29wZXMiIGFuZCAid2l0aF9zdGF0ZW1lbnQiLiAgVGhleSBhcmUgYWxsIHJlZHVuZGFudCAnCisgICAgICAgICAgICdiZWNhdXNlXG4nCisgICAgICAgICAgICd0aGV5IGFyZSBhbHdheXMgZW5hYmxlZCwgYW5kIG9ubHkga2VwdCBmb3IgYmFja3dhcmRzICcKKyAgICAgICAgICAgJ2NvbXBhdGliaWxpdHkuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0EgZnV0dXJlIHN0YXRlbWVudCBpcyByZWNvZ25pemVkIGFuZCB0cmVhdGVkIHNwZWNpYWxseSBhdCBjb21waWxlXG4nCisgICAgICAgICAgICd0aW1lOiBDaGFuZ2VzIHRvIHRoZSBzZW1hbnRpY3Mgb2YgY29yZSBjb25zdHJ1Y3RzIGFyZSBvZnRlblxuJworICAgICAgICAgICAnaW1wbGVtZW50ZWQgYnkgZ2VuZXJhdGluZyBkaWZmZXJlbnQgY29kZS4gIEl0IG1heSBldmVuIGJlIHRoZSAnCisgICAgICAgICAgICdjYXNlXG4nCisgICAgICAgICAgICd0aGF0IGEgbmV3IGZlYXR1cmUgaW50cm9kdWNlcyBuZXcgaW5jb21wYXRpYmxlIHN5bnRheCAoc3VjaCBhcyBhICcKKyAgICAgICAgICAgJ25ld1xuJworICAgICAgICAgICAncmVzZXJ2ZWQgd29yZCksIGluIHdoaWNoIGNhc2UgdGhlIGNvbXBpbGVyIG1heSBuZWVkIHRvIHBhcnNlIHRoZVxuJworICAgICAgICAgICAnbW9kdWxlIGRpZmZlcmVudGx5LiAgU3VjaCBkZWNpc2lvbnMgY2Fubm90IGJlIHB1c2hlZCBvZmYgdW50aWxcbicKKyAgICAgICAgICAgJ3J1bnRpbWUuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0ZvciBhbnkgZ2l2ZW4gcmVsZWFzZSwgdGhlIGNvbXBpbGVyIGtub3dzIHdoaWNoIGZlYXR1cmUgbmFtZXMgJworICAgICAgICAgICAnaGF2ZVxuJworICAgICAgICAgICAnYmVlbiBkZWZpbmVkLCBhbmQgcmFpc2VzIGEgY29tcGlsZS10aW1lIGVycm9yIGlmIGEgZnV0dXJlICcKKyAgICAgICAgICAgJ3N0YXRlbWVudFxuJworICAgICAgICAgICAnY29udGFpbnMgYSBmZWF0dXJlIG5vdCBrbm93biB0byBpdC5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlIGRpcmVjdCBydW50aW1lIHNlbWFudGljcyBhcmUgdGhlIHNhbWUgYXMgZm9yIGFueSBpbXBvcnQgJworICAgICAgICAgICAnc3RhdGVtZW50OlxuJworICAgICAgICAgICAndGhlcmUgaXMgYSBzdGFuZGFyZCBtb2R1bGUgIl9fZnV0dXJlX18iLCBkZXNjcmliZWQgbGF0ZXIsIGFuZCBpdCAnCisgICAgICAgICAgICd3aWxsXG4nCisgICAgICAgICAgICdiZSBpbXBvcnRlZCBpbiB0aGUgdXN1YWwgd2F5IGF0IHRoZSB0aW1lIHRoZSBmdXR1cmUgc3RhdGVtZW50IGlzXG4nCisgICAgICAgICAgICdleGVjdXRlZC5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlIGludGVyZXN0aW5nIHJ1bnRpbWUgc2VtYW50aWNzIGRlcGVuZCBvbiB0aGUgc3BlY2lmaWMgZmVhdHVyZVxuJworICAgICAgICAgICAnZW5hYmxlZCBieSB0aGUgZnV0dXJlIHN0YXRlbWVudC5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnTm90ZSB0aGF0IHRoZXJlIGlzIG5vdGhpbmcgc3BlY2lhbCBhYm91dCB0aGUgc3RhdGVtZW50OlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICBpbXBvcnQgX19mdXR1cmVfXyBbYXMgbmFtZV1cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAiVGhhdCBpcyBub3QgYSBmdXR1cmUgc3RhdGVtZW50OyBpdCdzIGFuIG9yZGluYXJ5IGltcG9ydCBzdGF0ZW1lbnQgIgorICAgICAgICAgICAnd2l0aFxuJworICAgICAgICAgICAnbm8gc3BlY2lhbCBzZW1hbnRpY3Mgb3Igc3ludGF4IHJlc3RyaWN0aW9ucy5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnQ29kZSBjb21waWxlZCBieSBjYWxscyB0byB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zICJleGVjKCkiIGFuZFxuJworICAgICAgICAgICAnImNvbXBpbGUoKSIgdGhhdCBvY2N1ciBpbiBhIG1vZHVsZSAiTSIgY29udGFpbmluZyBhIGZ1dHVyZSAnCisgICAgICAgICAgICdzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgJ3dpbGwsIGJ5IGRlZmF1bHQsIHVzZSB0aGUgbmV3IHN5bnRheCBvciBzZW1hbnRpY3MgYXNzb2NpYXRlZCB3aXRoICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnZnV0dXJlIHN0YXRlbWVudC4gIFRoaXMgY2FuIGJlIGNvbnRyb2xsZWQgYnkgb3B0aW9uYWwgYXJndW1lbnRzICcKKyAgICAgICAgICAgJ3RvXG4nCisgICAgICAgICAgICciY29tcGlsZSgpIiAtLS0gc2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoYXQgZnVuY3Rpb24gZm9yICcKKyAgICAgICAgICAgJ2RldGFpbHMuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0EgZnV0dXJlIHN0YXRlbWVudCB0eXBlZCBhdCBhbiBpbnRlcmFjdGl2ZSBpbnRlcnByZXRlciBwcm9tcHQgJworICAgICAgICAgICAnd2lsbFxuJworICAgICAgICAgICAndGFrZSBlZmZlY3QgZm9yIHRoZSByZXN0IG9mIHRoZSBpbnRlcnByZXRlciBzZXNzaW9uLiAgSWYgYW5cbicKKyAgICAgICAgICAgJ2ludGVycHJldGVyIGlzIHN0YXJ0ZWQgd2l0aCB0aGUgIi1pIiBvcHRpb24sIGlzIHBhc3NlZCBhIHNjcmlwdCAnCisgICAgICAgICAgICduYW1lXG4nCisgICAgICAgICAgICd0byBleGVjdXRlLCBhbmQgdGhlIHNjcmlwdCBpbmNsdWRlcyBhIGZ1dHVyZSBzdGF0ZW1lbnQsIGl0IHdpbGwgYmUgJworICAgICAgICAgICAnaW5cbicKKyAgICAgICAgICAgJ2VmZmVjdCBpbiB0aGUgaW50ZXJhY3RpdmUgc2Vzc2lvbiBzdGFydGVkIGFmdGVyIHRoZSBzY3JpcHQgaXNcbicKKyAgICAgICAgICAgJ2V4ZWN1dGVkLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdTZWUgYWxzbzpcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAqKlBFUCAyMzYqKiAtIEJhY2sgdG8gdGhlIF9fZnV0dXJlX19cbicKKyAgICAgICAgICAgJyAgICAgVGhlIG9yaWdpbmFsIHByb3Bvc2FsIGZvciB0aGUgX19mdXR1cmVfXyBtZWNoYW5pc20uXG4nLAorICdpbic6ICdcbicKKyAgICAgICAnTWVtYmVyc2hpcCB0ZXN0IG9wZXJhdGlvbnNcbicKKyAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAnXG4nCisgICAgICAgJ1RoZSBvcGVyYXRvcnMgImluIiBhbmQgIm5vdCBpbiIgdGVzdCBmb3IgbWVtYmVyc2hpcC4gICJ4IGluIHMiXG4nCisgICAgICAgJ2V2YWx1YXRlcyB0byB0cnVlIGlmICp4KiBpcyBhIG1lbWJlciBvZiAqcyosIGFuZCBmYWxzZSBvdGhlcndpc2UuICAieFxuJworICAgICAgICdub3QgaW4gcyIgcmV0dXJucyB0aGUgbmVnYXRpb24gb2YgInggaW4gcyIuICBBbGwgYnVpbHQtaW4gc2VxdWVuY2VzXG4nCisgICAgICAgJ2FuZCBzZXQgdHlwZXMgc3VwcG9ydCB0aGlzIGFzIHdlbGwgYXMgZGljdGlvbmFyeSwgZm9yIHdoaWNoICJpbiIgJworICAgICAgICd0ZXN0c1xuJworICAgICAgICd3aGV0aGVyIHRoZSBkaWN0aW9uYXJ5IGhhcyBhIGdpdmVuIGtleS4gRm9yIGNvbnRhaW5lciB0eXBlcyBzdWNoIGFzXG4nCisgICAgICAgJ2xpc3QsIHR1cGxlLCBzZXQsIGZyb3plbnNldCwgZGljdCwgb3IgY29sbGVjdGlvbnMuZGVxdWUsIHRoZVxuJworICAgICAgICdleHByZXNzaW9uICJ4IGluIHkiIGlzIGVxdWl2YWxlbnQgdG8gImFueSh4IGlzIGUgb3IgeCA9PSBlIGZvciBlIGluXG4nCisgICAgICAgJ3kpIi5cbicKKyAgICAgICAnXG4nCisgICAgICAgJ0ZvciB0aGUgc3RyaW5nIGFuZCBieXRlcyB0eXBlcywgInggaW4geSIgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiAqeCogJworICAgICAgICdpc1xuJworICAgICAgICdhIHN1YnN0cmluZyBvZiAqeSouICBBbiBlcXVpdmFsZW50IHRlc3QgaXMgInkuZmluZCh4KSAhPSAtMSIuICBFbXB0eVxuJworICAgICAgICdzdHJpbmdzIGFyZSBhbHdheXMgY29uc2lkZXJlZCB0byBiZSBhIHN1YnN0cmluZyBvZiBhbnkgb3RoZXIgc3RyaW5nLFxuJworICAgICAgICdzbyAiIiIgaW4gImFiYyIiIHdpbGwgcmV0dXJuICJUcnVlIi5cbicKKyAgICAgICAnXG4nCisgICAgICAgJ0ZvciB1c2VyLWRlZmluZWQgY2xhc3NlcyB3aGljaCBkZWZpbmUgdGhlICJfX2NvbnRhaW5zX18oKSIgbWV0aG9kLCAieFxuJworICAgICAgICdpbiB5IiBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmICJ5Ll9fY29udGFpbnNfXyh4KSIgaXMgdHJ1ZS5cbicKKyAgICAgICAnXG4nCisgICAgICAgJ0ZvciB1c2VyLWRlZmluZWQgY2xhc3NlcyB3aGljaCBkbyBub3QgZGVmaW5lICJfX2NvbnRhaW5zX18oKSIgYnV0IGRvXG4nCisgICAgICAgJ2RlZmluZSAiX19pdGVyX18oKSIsICJ4IGluIHkiIGlzIHRydWUgaWYgc29tZSB2YWx1ZSAieiIgd2l0aCAieCA9PSB6IlxuJworICAgICAgICdpcyBwcm9kdWNlZCB3aGlsZSBpdGVyYXRpbmcgb3ZlciAieSIuICBJZiBhbiBleGNlcHRpb24gaXMgcmFpc2VkXG4nCisgICAgICAgJ2R1cmluZyB0aGUgaXRlcmF0aW9uLCBpdCBpcyBhcyBpZiAiaW4iIHJhaXNlZCB0aGF0IGV4Y2VwdGlvbi5cbicKKyAgICAgICAnXG4nCisgICAgICAgJ0xhc3RseSwgdGhlIG9sZC1zdHlsZSBpdGVyYXRpb24gcHJvdG9jb2wgaXMgdHJpZWQ6IGlmIGEgY2xhc3MgZGVmaW5lc1xuJworICAgICAgICciX19nZXRpdGVtX18oKSIsICJ4IGluIHkiIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgdGhlcmUgaXMgYSBub24tXG4nCisgICAgICAgJ25lZ2F0aXZlIGludGVnZXIgaW5kZXggKmkqIHN1Y2ggdGhhdCAieCA9PSB5W2ldIiwgYW5kIGFsbCBsb3dlclxuJworICAgICAgICdpbnRlZ2VyIGluZGljZXMgZG8gbm90IHJhaXNlICJJbmRleEVycm9yIiBleGNlcHRpb24uICAoSWYgYW55IG90aGVyXG4nCisgICAgICAgJ2V4Y2VwdGlvbiBpcyByYWlzZWQsIGl0IGlzIGFzIGlmICJpbiIgcmFpc2VkIHRoYXQgZXhjZXB0aW9uKS5cbicKKyAgICAgICAnXG4nCisgICAgICAgJ1RoZSBvcGVyYXRvciAibm90IGluIiBpcyBkZWZpbmVkIHRvIGhhdmUgdGhlIGludmVyc2UgdHJ1ZSB2YWx1ZSBvZlxuJworICAgICAgICciaW4iLlxuJywKKyAnaW50ZWdlcnMnOiAnXG4nCisgICAgICAgICAgICAgJ0ludGVnZXIgbGl0ZXJhbHNcbicKKyAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnSW50ZWdlciBsaXRlcmFscyBhcmUgZGVzY3JpYmVkIGJ5IHRoZSBmb2xsb3dpbmcgbGV4aWNhbCAnCisgICAgICAgICAgICAgJ2RlZmluaXRpb25zOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgaW50ZWdlciAgICAgIDo6PSBkZWNpbnRlZ2VyIHwgYmluaW50ZWdlciB8IG9jdGludGVnZXIgfCAnCisgICAgICAgICAgICAgJ2hleGludGVnZXJcbicKKyAgICAgICAgICAgICAnICAgZGVjaW50ZWdlciAgIDo6PSBub256ZXJvZGlnaXQgKFsiXyJdIGRpZ2l0KSogfCAiMCIrIChbIl8iXSAnCisgICAgICAgICAgICAgJyIwIikqXG4nCisgICAgICAgICAgICAgJyAgIGJpbmludGVnZXIgICA6Oj0gIjAiICgiYiIgfCAiQiIpIChbIl8iXSBiaW5kaWdpdCkrXG4nCisgICAgICAgICAgICAgJyAgIG9jdGludGVnZXIgICA6Oj0gIjAiICgibyIgfCAiTyIpIChbIl8iXSBvY3RkaWdpdCkrXG4nCisgICAgICAgICAgICAgJyAgIGhleGludGVnZXIgICA6Oj0gIjAiICgieCIgfCAiWCIpIChbIl8iXSBoZXhkaWdpdCkrXG4nCisgICAgICAgICAgICAgJyAgIG5vbnplcm9kaWdpdCA6Oj0gIjEiLi4uIjkiXG4nCisgICAgICAgICAgICAgJyAgIGRpZ2l0ICAgICAgICA6Oj0gIjAiLi4uIjkiXG4nCisgICAgICAgICAgICAgJyAgIGJpbmRpZ2l0ICAgICA6Oj0gIjAiIHwgIjEiXG4nCisgICAgICAgICAgICAgJyAgIG9jdGRpZ2l0ICAgICA6Oj0gIjAiLi4uIjciXG4nCisgICAgICAgICAgICAgJyAgIGhleGRpZ2l0ICAgICA6Oj0gZGlnaXQgfCAiYSIuLi4iZiIgfCAiQSIuLi4iRiJcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZXJlIGlzIG5vIGxpbWl0IGZvciB0aGUgbGVuZ3RoIG9mIGludGVnZXIgbGl0ZXJhbHMgYXBhcnQgZnJvbSAnCisgICAgICAgICAgICAgJ3doYXRcbicKKyAgICAgICAgICAgICAnY2FuIGJlIHN0b3JlZCBpbiBhdmFpbGFibGUgbWVtb3J5LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVW5kZXJzY29yZXMgYXJlIGlnbm9yZWQgZm9yIGRldGVybWluaW5nIHRoZSBudW1lcmljIHZhbHVlIG9mICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJ2xpdGVyYWwuICBUaGV5IGNhbiBiZSB1c2VkIHRvIGdyb3VwIGRpZ2l0cyBmb3IgZW5oYW5jZWQgJworICAgICAgICAgICAgICdyZWFkYWJpbGl0eS5cbicKKyAgICAgICAgICAgICAnT25lIHVuZGVyc2NvcmUgY2FuIG9jY3VyIGJldHdlZW4gZGlnaXRzLCBhbmQgYWZ0ZXIgYmFzZSAnCisgICAgICAgICAgICAgJ3NwZWNpZmllcnNcbicKKyAgICAgICAgICAgICAnbGlrZSAiMHgiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTm90ZSB0aGF0IGxlYWRpbmcgemVyb3MgaW4gYSBub24temVybyBkZWNpbWFsIG51bWJlciBhcmUgbm90ICcKKyAgICAgICAgICAgICAnYWxsb3dlZC5cbicKKyAgICAgICAgICAgICAnVGhpcyBpcyBmb3IgZGlzYW1iaWd1YXRpb24gd2l0aCBDLXN0eWxlIG9jdGFsIGxpdGVyYWxzLCB3aGljaCAnCisgICAgICAgICAgICAgJ1B5dGhvblxuJworICAgICAgICAgICAgICd1c2VkIGJlZm9yZSB2ZXJzaW9uIDMuMC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1NvbWUgZXhhbXBsZXMgb2YgaW50ZWdlciBsaXRlcmFsczpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIDcgICAgIDIxNDc0ODM2NDcgICAgICAgICAgICAgICAgICAgICAgICAwbzE3NyAgICAwYjEwMDExMDExMVxuJworICAgICAgICAgICAgICcgICAzICAgICA3OTIyODE2MjUxNDI2NDMzNzU5MzU0Mzk1MDMzNiAgICAgMG8zNzcgICAgMHhkZWFkYmVlZlxuJworICAgICAgICAgICAgICcgICAgICAgICAxMDBfMDAwXzAwMF8wMDAgICAgICAgICAgICAgICAgICAgMGJfMTExMF8wMTAxXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdDaGFuZ2VkIGluIHZlcnNpb24gMy42OiBVbmRlcnNjb3JlcyBhcmUgbm93IGFsbG93ZWQgZm9yICcKKyAgICAgICAgICAgICAnZ3JvdXBpbmdcbicKKyAgICAgICAgICAgICAncHVycG9zZXMgaW4gbGl0ZXJhbHMuXG4nLAorICdsYW1iZGEnOiAnXG4nCisgICAgICAgICAgICdMYW1iZGFzXG4nCisgICAgICAgICAgICcqKioqKioqXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIGxhbWJkYV9leHByICAgICAgICA6Oj0gImxhbWJkYSIgW3BhcmFtZXRlcl9saXN0XTogZXhwcmVzc2lvblxuJworICAgICAgICAgICAnICAgbGFtYmRhX2V4cHJfbm9jb25kIDo6PSAibGFtYmRhIiBbcGFyYW1ldGVyX2xpc3RdOiAnCisgICAgICAgICAgICdleHByZXNzaW9uX25vY29uZFxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdMYW1iZGEgZXhwcmVzc2lvbnMgKHNvbWV0aW1lcyBjYWxsZWQgbGFtYmRhIGZvcm1zKSBhcmUgdXNlZCB0byAnCisgICAgICAgICAgICdjcmVhdGVcbicKKyAgICAgICAgICAgJ2Fub255bW91cyBmdW5jdGlvbnMuIFRoZSBleHByZXNzaW9uICJsYW1iZGEgYXJndW1lbnRzOiAnCisgICAgICAgICAgICdleHByZXNzaW9uIlxuJworICAgICAgICAgICAneWllbGRzIGEgZnVuY3Rpb24gb2JqZWN0LiAgVGhlIHVubmFtZWQgb2JqZWN0IGJlaGF2ZXMgbGlrZSBhICcKKyAgICAgICAgICAgJ2Z1bmN0aW9uXG4nCisgICAgICAgICAgICdvYmplY3QgZGVmaW5lZCB3aXRoOlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICBkZWYgPGxhbWJkYT4oYXJndW1lbnRzKTpcbicKKyAgICAgICAgICAgJyAgICAgICByZXR1cm4gZXhwcmVzc2lvblxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdTZWUgc2VjdGlvbiBGdW5jdGlvbiBkZWZpbml0aW9ucyBmb3IgdGhlIHN5bnRheCBvZiBwYXJhbWV0ZXIgJworICAgICAgICAgICAnbGlzdHMuXG4nCisgICAgICAgICAgICdOb3RlIHRoYXQgZnVuY3Rpb25zIGNyZWF0ZWQgd2l0aCBsYW1iZGEgZXhwcmVzc2lvbnMgY2Fubm90ICcKKyAgICAgICAgICAgJ2NvbnRhaW5cbicKKyAgICAgICAgICAgJ3N0YXRlbWVudHMgb3IgYW5ub3RhdGlvbnMuXG4nLAorICdsaXN0cyc6ICdcbicKKyAgICAgICAgICAnTGlzdCBkaXNwbGF5c1xuJworICAgICAgICAgICcqKioqKioqKioqKioqXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBIGxpc3QgZGlzcGxheSBpcyBhIHBvc3NpYmx5IGVtcHR5IHNlcmllcyBvZiBleHByZXNzaW9ucyBlbmNsb3NlZCAnCisgICAgICAgICAgJ2luXG4nCisgICAgICAgICAgJ3NxdWFyZSBicmFja2V0czpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIGxpc3RfZGlzcGxheSA6Oj0gIlsiIFtzdGFycmVkX2xpc3QgfCBjb21wcmVoZW5zaW9uXSAiXSJcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0EgbGlzdCBkaXNwbGF5IHlpZWxkcyBhIG5ldyBsaXN0IG9iamVjdCwgdGhlIGNvbnRlbnRzIGJlaW5nICcKKyAgICAgICAgICAnc3BlY2lmaWVkXG4nCisgICAgICAgICAgJ2J5IGVpdGhlciBhIGxpc3Qgb2YgZXhwcmVzc2lvbnMgb3IgYSBjb21wcmVoZW5zaW9uLiAgV2hlbiBhIGNvbW1hLVxuJworICAgICAgICAgICdzZXBhcmF0ZWQgbGlzdCBvZiBleHByZXNzaW9ucyBpcyBzdXBwbGllZCwgaXRzIGVsZW1lbnRzIGFyZSAnCisgICAgICAgICAgJ2V2YWx1YXRlZFxuJworICAgICAgICAgICdmcm9tIGxlZnQgdG8gcmlnaHQgYW5kIHBsYWNlZCBpbnRvIHRoZSBsaXN0IG9iamVjdCBpbiB0aGF0IG9yZGVyLlxuJworICAgICAgICAgICdXaGVuIGEgY29tcHJlaGVuc2lvbiBpcyBzdXBwbGllZCwgdGhlIGxpc3QgaXMgY29uc3RydWN0ZWQgZnJvbSB0aGVcbicKKyAgICAgICAgICAnZWxlbWVudHMgcmVzdWx0aW5nIGZyb20gdGhlIGNvbXByZWhlbnNpb24uXG4nLAorICduYW1pbmcnOiAnXG4nCisgICAgICAgICAgICdOYW1pbmcgYW5kIGJpbmRpbmdcbicKKyAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0JpbmRpbmcgb2YgbmFtZXNcbicKKyAgICAgICAgICAgJz09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnKk5hbWVzKiByZWZlciB0byBvYmplY3RzLiAgTmFtZXMgYXJlIGludHJvZHVjZWQgYnkgbmFtZSBiaW5kaW5nXG4nCisgICAgICAgICAgICdvcGVyYXRpb25zLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgZm9sbG93aW5nIGNvbnN0cnVjdHMgYmluZCBuYW1lczogZm9ybWFsIHBhcmFtZXRlcnMgdG8gJworICAgICAgICAgICAnZnVuY3Rpb25zLFxuJworICAgICAgICAgICAnImltcG9ydCIgc3RhdGVtZW50cywgY2xhc3MgYW5kIGZ1bmN0aW9uIGRlZmluaXRpb25zICh0aGVzZSBiaW5kICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnY2xhc3Mgb3IgZnVuY3Rpb24gbmFtZSBpbiB0aGUgZGVmaW5pbmcgYmxvY2spLCBhbmQgdGFyZ2V0cyB0aGF0ICcKKyAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAnaWRlbnRpZmllcnMgaWYgb2NjdXJyaW5nIGluIGFuIGFzc2lnbm1lbnQsICJmb3IiIGxvb3AgaGVhZGVyLCBvciAnCisgICAgICAgICAgICdhZnRlclxuJworICAgICAgICAgICAnImFzIiBpbiBhICJ3aXRoIiBzdGF0ZW1lbnQgb3IgImV4Y2VwdCIgY2xhdXNlLiBUaGUgImltcG9ydCIgJworICAgICAgICAgICAnc3RhdGVtZW50XG4nCisgICAgICAgICAgICdvZiB0aGUgZm9ybSAiZnJvbSAuLi4gaW1wb3J0ICoiIGJpbmRzIGFsbCBuYW1lcyBkZWZpbmVkIGluIHRoZVxuJworICAgICAgICAgICAnaW1wb3J0ZWQgbW9kdWxlLCBleGNlcHQgdGhvc2UgYmVnaW5uaW5nIHdpdGggYW4gdW5kZXJzY29yZS4gIFRoaXMgJworICAgICAgICAgICAnZm9ybVxuJworICAgICAgICAgICAnbWF5IG9ubHkgYmUgdXNlZCBhdCB0aGUgbW9kdWxlIGxldmVsLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdBIHRhcmdldCBvY2N1cnJpbmcgaW4gYSAiZGVsIiBzdGF0ZW1lbnQgaXMgYWxzbyBjb25zaWRlcmVkIGJvdW5kICcKKyAgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICAndGhpcyBwdXJwb3NlICh0aG91Z2ggdGhlIGFjdHVhbCBzZW1hbnRpY3MgYXJlIHRvIHVuYmluZCB0aGUgJworICAgICAgICAgICAnbmFtZSkuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0VhY2ggYXNzaWdubWVudCBvciBpbXBvcnQgc3RhdGVtZW50IG9jY3VycyB3aXRoaW4gYSBibG9jayBkZWZpbmVkICcKKyAgICAgICAgICAgJ2J5IGFcbicKKyAgICAgICAgICAgJ2NsYXNzIG9yIGZ1bmN0aW9uIGRlZmluaXRpb24gb3IgYXQgdGhlIG1vZHVsZSBsZXZlbCAodGhlICcKKyAgICAgICAgICAgJ3RvcC1sZXZlbFxuJworICAgICAgICAgICAnY29kZSBibG9jaykuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0lmIGEgbmFtZSBpcyBib3VuZCBpbiBhIGJsb2NrLCBpdCBpcyBhIGxvY2FsIHZhcmlhYmxlIG9mIHRoYXQgJworICAgICAgICAgICAnYmxvY2ssXG4nCisgICAgICAgICAgICd1bmxlc3MgZGVjbGFyZWQgYXMgIm5vbmxvY2FsIiBvciAiZ2xvYmFsIi4gIElmIGEgbmFtZSBpcyBib3VuZCBhdCAnCisgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgJ21vZHVsZSBsZXZlbCwgaXQgaXMgYSBnbG9iYWwgdmFyaWFibGUuICAoVGhlIHZhcmlhYmxlcyBvZiB0aGUgJworICAgICAgICAgICAnbW9kdWxlXG4nCisgICAgICAgICAgICdjb2RlIGJsb2NrIGFyZSBsb2NhbCBhbmQgZ2xvYmFsLikgIElmIGEgdmFyaWFibGUgaXMgdXNlZCBpbiBhICcKKyAgICAgICAgICAgJ2NvZGVcbicKKyAgICAgICAgICAgJ2Jsb2NrIGJ1dCBub3QgZGVmaW5lZCB0aGVyZSwgaXQgaXMgYSAqZnJlZSB2YXJpYWJsZSouXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0VhY2ggb2NjdXJyZW5jZSBvZiBhIG5hbWUgaW4gdGhlIHByb2dyYW0gdGV4dCByZWZlcnMgdG8gdGhlICcKKyAgICAgICAgICAgJypiaW5kaW5nKlxuJworICAgICAgICAgICAnb2YgdGhhdCBuYW1lIGVzdGFibGlzaGVkIGJ5IHRoZSBmb2xsb3dpbmcgbmFtZSByZXNvbHV0aW9uIHJ1bGVzLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1Jlc29sdXRpb24gb2YgbmFtZXNcbicKKyAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnQSAqc2NvcGUqIGRlZmluZXMgdGhlIHZpc2liaWxpdHkgb2YgYSBuYW1lIHdpdGhpbiBhIGJsb2NrLiAgSWYgYSAnCisgICAgICAgICAgICdsb2NhbFxuJworICAgICAgICAgICAndmFyaWFibGUgaXMgZGVmaW5lZCBpbiBhIGJsb2NrLCBpdHMgc2NvcGUgaW5jbHVkZXMgdGhhdCBibG9jay4gIElmICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnZGVmaW5pdGlvbiBvY2N1cnMgaW4gYSBmdW5jdGlvbiBibG9jaywgdGhlIHNjb3BlIGV4dGVuZHMgdG8gYW55ICcKKyAgICAgICAgICAgJ2Jsb2Nrc1xuJworICAgICAgICAgICAnY29udGFpbmVkIHdpdGhpbiB0aGUgZGVmaW5pbmcgb25lLCB1bmxlc3MgYSBjb250YWluZWQgYmxvY2sgJworICAgICAgICAgICAnaW50cm9kdWNlc1xuJworICAgICAgICAgICAnYSBkaWZmZXJlbnQgYmluZGluZyBmb3IgdGhlIG5hbWUuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1doZW4gYSBuYW1lIGlzIHVzZWQgaW4gYSBjb2RlIGJsb2NrLCBpdCBpcyByZXNvbHZlZCB1c2luZyB0aGUgJworICAgICAgICAgICAnbmVhcmVzdFxuJworICAgICAgICAgICAnZW5jbG9zaW5nIHNjb3BlLiAgVGhlIHNldCBvZiBhbGwgc3VjaCBzY29wZXMgdmlzaWJsZSB0byBhIGNvZGUgJworICAgICAgICAgICAnYmxvY2tcbicKKyAgICAgICAgICAgImlzIGNhbGxlZCB0aGUgYmxvY2sncyAqZW52aXJvbm1lbnQqLlxuIgorICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdXaGVuIGEgbmFtZSBpcyBub3QgZm91bmQgYXQgYWxsLCBhICJOYW1lRXJyb3IiIGV4Y2VwdGlvbiBpcyAnCisgICAgICAgICAgICdyYWlzZWQuIElmXG4nCisgICAgICAgICAgICd0aGUgY3VycmVudCBzY29wZSBpcyBhIGZ1bmN0aW9uIHNjb3BlLCBhbmQgdGhlIG5hbWUgcmVmZXJzIHRvIGEgJworICAgICAgICAgICAnbG9jYWxcbicKKyAgICAgICAgICAgJ3ZhcmlhYmxlIHRoYXQgaGFzIG5vdCB5ZXQgYmVlbiBib3VuZCB0byBhIHZhbHVlIGF0IHRoZSBwb2ludCB3aGVyZSAnCisgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgJ25hbWUgaXMgdXNlZCwgYW4gIlVuYm91bmRMb2NhbEVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLlxuJworICAgICAgICAgICAnIlVuYm91bmRMb2NhbEVycm9yIiBpcyBhIHN1YmNsYXNzIG9mICJOYW1lRXJyb3IiLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdJZiBhIG5hbWUgYmluZGluZyBvcGVyYXRpb24gb2NjdXJzIGFueXdoZXJlIHdpdGhpbiBhIGNvZGUgYmxvY2ssICcKKyAgICAgICAgICAgJ2FsbFxuJworICAgICAgICAgICAndXNlcyBvZiB0aGUgbmFtZSB3aXRoaW4gdGhlIGJsb2NrIGFyZSB0cmVhdGVkIGFzIHJlZmVyZW5jZXMgdG8gJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICdjdXJyZW50IGJsb2NrLiAgVGhpcyBjYW4gbGVhZCB0byBlcnJvcnMgd2hlbiBhIG5hbWUgaXMgdXNlZCB3aXRoaW4gJworICAgICAgICAgICAnYVxuJworICAgICAgICAgICAnYmxvY2sgYmVmb3JlIGl0IGlzIGJvdW5kLiAgVGhpcyBydWxlIGlzIHN1YnRsZS4gIFB5dGhvbiBsYWNrc1xuJworICAgICAgICAgICAnZGVjbGFyYXRpb25zIGFuZCBhbGxvd3MgbmFtZSBiaW5kaW5nIG9wZXJhdGlvbnMgdG8gb2NjdXIgYW55d2hlcmVcbicKKyAgICAgICAgICAgJ3dpdGhpbiBhIGNvZGUgYmxvY2suICBUaGUgbG9jYWwgdmFyaWFibGVzIG9mIGEgY29kZSBibG9jayBjYW4gYmVcbicKKyAgICAgICAgICAgJ2RldGVybWluZWQgYnkgc2Nhbm5pbmcgdGhlIGVudGlyZSB0ZXh0IG9mIHRoZSBibG9jayBmb3IgbmFtZSAnCisgICAgICAgICAgICdiaW5kaW5nXG4nCisgICAgICAgICAgICdvcGVyYXRpb25zLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdJZiB0aGUgImdsb2JhbCIgc3RhdGVtZW50IG9jY3VycyB3aXRoaW4gYSBibG9jaywgYWxsIHVzZXMgb2YgdGhlICcKKyAgICAgICAgICAgJ25hbWVcbicKKyAgICAgICAgICAgJ3NwZWNpZmllZCBpbiB0aGUgc3RhdGVtZW50IHJlZmVyIHRvIHRoZSBiaW5kaW5nIG9mIHRoYXQgbmFtZSBpbiAnCisgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgJ3RvcC1sZXZlbCBuYW1lc3BhY2UuICBOYW1lcyBhcmUgcmVzb2x2ZWQgaW4gdGhlIHRvcC1sZXZlbCAnCisgICAgICAgICAgICduYW1lc3BhY2UgYnlcbicKKyAgICAgICAgICAgJ3NlYXJjaGluZyB0aGUgZ2xvYmFsIG5hbWVzcGFjZSwgaS5lLiB0aGUgbmFtZXNwYWNlIG9mIHRoZSBtb2R1bGVcbicKKyAgICAgICAgICAgJ2NvbnRhaW5pbmcgdGhlIGNvZGUgYmxvY2ssIGFuZCB0aGUgYnVpbHRpbnMgbmFtZXNwYWNlLCB0aGUgJworICAgICAgICAgICAnbmFtZXNwYWNlXG4nCisgICAgICAgICAgICdvZiB0aGUgbW9kdWxlICJidWlsdGlucyIuICBUaGUgZ2xvYmFsIG5hbWVzcGFjZSBpcyBzZWFyY2hlZCAnCisgICAgICAgICAgICdmaXJzdC4gIElmXG4nCisgICAgICAgICAgICd0aGUgbmFtZSBpcyBub3QgZm91bmQgdGhlcmUsIHRoZSBidWlsdGlucyBuYW1lc3BhY2UgaXMgc2VhcmNoZWQuICAnCisgICAgICAgICAgICdUaGVcbicKKyAgICAgICAgICAgJyJnbG9iYWwiIHN0YXRlbWVudCBtdXN0IHByZWNlZGUgYWxsIHVzZXMgb2YgdGhlIG5hbWUuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSAiZ2xvYmFsIiBzdGF0ZW1lbnQgaGFzIHRoZSBzYW1lIHNjb3BlIGFzIGEgbmFtZSBiaW5kaW5nICcKKyAgICAgICAgICAgJ29wZXJhdGlvblxuJworICAgICAgICAgICAnaW4gdGhlIHNhbWUgYmxvY2suICBJZiB0aGUgbmVhcmVzdCBlbmNsb3Npbmcgc2NvcGUgZm9yIGEgZnJlZSAnCisgICAgICAgICAgICd2YXJpYWJsZVxuJworICAgICAgICAgICAnY29udGFpbnMgYSBnbG9iYWwgc3RhdGVtZW50LCB0aGUgZnJlZSB2YXJpYWJsZSBpcyB0cmVhdGVkIGFzIGEgJworICAgICAgICAgICAnZ2xvYmFsLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgIm5vbmxvY2FsIiBzdGF0ZW1lbnQgY2F1c2VzIGNvcnJlc3BvbmRpbmcgbmFtZXMgdG8gcmVmZXIgdG9cbicKKyAgICAgICAgICAgJ3ByZXZpb3VzbHkgYm91bmQgdmFyaWFibGVzIGluIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBmdW5jdGlvbiAnCisgICAgICAgICAgICdzY29wZS5cbicKKyAgICAgICAgICAgJyJTeW50YXhFcnJvciIgaXMgcmFpc2VkIGF0IGNvbXBpbGUgdGltZSBpZiB0aGUgZ2l2ZW4gbmFtZSBkb2VzICcKKyAgICAgICAgICAgJ25vdFxuJworICAgICAgICAgICAnZXhpc3QgaW4gYW55IGVuY2xvc2luZyBmdW5jdGlvbiBzY29wZS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlIG5hbWVzcGFjZSBmb3IgYSBtb2R1bGUgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIHRoZSBmaXJzdCB0aW1lICcKKyAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgJ21vZHVsZSBpcyBpbXBvcnRlZC4gIFRoZSBtYWluIG1vZHVsZSBmb3IgYSBzY3JpcHQgaXMgYWx3YXlzICcKKyAgICAgICAgICAgJ2NhbGxlZFxuJworICAgICAgICAgICAnIl9fbWFpbl9fIi5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnQ2xhc3MgZGVmaW5pdGlvbiBibG9ja3MgYW5kIGFyZ3VtZW50cyB0byAiZXhlYygpIiBhbmQgImV2YWwoKSIgJworICAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgICdzcGVjaWFsIGluIHRoZSBjb250ZXh0IG9mIG5hbWUgcmVzb2x1dGlvbi4gQSBjbGFzcyBkZWZpbml0aW9uIGlzICcKKyAgICAgICAgICAgJ2FuXG4nCisgICAgICAgICAgICdleGVjdXRhYmxlIHN0YXRlbWVudCB0aGF0IG1heSB1c2UgYW5kIGRlZmluZSBuYW1lcy4gVGhlc2UgJworICAgICAgICAgICAncmVmZXJlbmNlc1xuJworICAgICAgICAgICAnZm9sbG93IHRoZSBub3JtYWwgcnVsZXMgZm9yIG5hbWUgcmVzb2x1dGlvbiB3aXRoIGFuIGV4Y2VwdGlvbiAnCisgICAgICAgICAgICd0aGF0XG4nCisgICAgICAgICAgICd1bmJvdW5kIGxvY2FsIHZhcmlhYmxlcyBhcmUgbG9va2VkIHVwIGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlLiAnCisgICAgICAgICAgICdUaGVcbicKKyAgICAgICAgICAgJ25hbWVzcGFjZSBvZiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBiZWNvbWVzIHRoZSBhdHRyaWJ1dGUgZGljdGlvbmFyeSAnCisgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAndGhlIGNsYXNzLiBUaGUgc2NvcGUgb2YgbmFtZXMgZGVmaW5lZCBpbiBhIGNsYXNzIGJsb2NrIGlzIGxpbWl0ZWQgJworICAgICAgICAgICAndG9cbicKKyAgICAgICAgICAgJ3RoZSBjbGFzcyBibG9jazsgaXQgZG9lcyBub3QgZXh0ZW5kIHRvIHRoZSBjb2RlIGJsb2NrcyBvZiBtZXRob2RzICcKKyAgICAgICAgICAgJy0tXG4nCisgICAgICAgICAgICd0aGlzIGluY2x1ZGVzIGNvbXByZWhlbnNpb25zIGFuZCBnZW5lcmF0b3IgZXhwcmVzc2lvbnMgc2luY2UgdGhleSAnCisgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgJ2ltcGxlbWVudGVkIHVzaW5nIGEgZnVuY3Rpb24gc2NvcGUuICBUaGlzIG1lYW5zIHRoYXQgdGhlICcKKyAgICAgICAgICAgJ2ZvbGxvd2luZ1xuJworICAgICAgICAgICAnd2lsbCBmYWlsOlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICBjbGFzcyBBOlxuJworICAgICAgICAgICAnICAgICAgIGEgPSA0MlxuJworICAgICAgICAgICAnICAgICAgIGIgPSBsaXN0KGEgKyBpIGZvciBpIGluIHJhbmdlKDEwKSlcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdCdWlsdGlucyBhbmQgcmVzdHJpY3RlZCBleGVjdXRpb25cbicKKyAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgYnVpbHRpbnMgbmFtZXNwYWNlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXhlY3V0aW9uIG9mIGEgY29kZSAnCisgICAgICAgICAgICdibG9ja1xuJworICAgICAgICAgICAnaXMgYWN0dWFsbHkgZm91bmQgYnkgbG9va2luZyB1cCB0aGUgbmFtZSAiX19idWlsdGluc19fIiBpbiBpdHMgJworICAgICAgICAgICAnZ2xvYmFsXG4nCisgICAgICAgICAgICduYW1lc3BhY2U7IHRoaXMgc2hvdWxkIGJlIGEgZGljdGlvbmFyeSBvciBhIG1vZHVsZSAoaW4gdGhlIGxhdHRlciAnCisgICAgICAgICAgICdjYXNlXG4nCisgICAgICAgICAgICJ0aGUgbW9kdWxlJ3MgZGljdGlvbmFyeSBpcyB1c2VkKS4gIEJ5IGRlZmF1bHQsIHdoZW4gaW4gdGhlICIKKyAgICAgICAgICAgJyJfX21haW5fXyJcbicKKyAgICAgICAgICAgJ21vZHVsZSwgIl9fYnVpbHRpbnNfXyIgaXMgdGhlIGJ1aWx0LWluIG1vZHVsZSAiYnVpbHRpbnMiOyB3aGVuIGluICcKKyAgICAgICAgICAgJ2FueVxuJworICAgICAgICAgICAnb3RoZXIgbW9kdWxlLCAiX19idWlsdGluc19fIiBpcyBhbiBhbGlhcyBmb3IgdGhlIGRpY3Rpb25hcnkgb2YgJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICciYnVpbHRpbnMiIG1vZHVsZSBpdHNlbGYuICAiX19idWlsdGluc19fIiBjYW4gYmUgc2V0IHRvIGEgJworICAgICAgICAgICAndXNlci1jcmVhdGVkXG4nCisgICAgICAgICAgICdkaWN0aW9uYXJ5IHRvIGNyZWF0ZSBhIHdlYWsgZm9ybSBvZiByZXN0cmljdGVkIGV4ZWN1dGlvbi5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBVc2VycyBzaG91bGQgbm90IHRvdWNoXG4nCisgICAgICAgICAgICciX19idWlsdGluc19fIjsgaXQgaXMgc3RyaWN0bHkgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLiAgVXNlcnNcbicKKyAgICAgICAgICAgJ3dhbnRpbmcgdG8gb3ZlcnJpZGUgdmFsdWVzIGluIHRoZSBidWlsdGlucyBuYW1lc3BhY2Ugc2hvdWxkICcKKyAgICAgICAgICAgJyJpbXBvcnQiXG4nCisgICAgICAgICAgICd0aGUgImJ1aWx0aW5zIiBtb2R1bGUgYW5kIG1vZGlmeSBpdHMgYXR0cmlidXRlcyBhcHByb3ByaWF0ZWx5LlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0ludGVyYWN0aW9uIHdpdGggZHluYW1pYyBmZWF0dXJlc1xuJworICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ05hbWUgcmVzb2x1dGlvbiBvZiBmcmVlIHZhcmlhYmxlcyBvY2N1cnMgYXQgcnVudGltZSwgbm90IGF0ICcKKyAgICAgICAgICAgJ2NvbXBpbGVcbicKKyAgICAgICAgICAgJ3RpbWUuIFRoaXMgbWVhbnMgdGhhdCB0aGUgZm9sbG93aW5nIGNvZGUgd2lsbCBwcmludCA0MjpcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgaSA9IDEwXG4nCisgICAgICAgICAgICcgICBkZWYgZigpOlxuJworICAgICAgICAgICAnICAgICAgIHByaW50KGkpXG4nCisgICAgICAgICAgICcgICBpID0gNDJcbicKKyAgICAgICAgICAgJyAgIGYoKVxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGVyZSBhcmUgc2V2ZXJhbCBjYXNlcyB3aGVyZSBQeXRob24gc3RhdGVtZW50cyBhcmUgaWxsZWdhbCB3aGVuICcKKyAgICAgICAgICAgJ3VzZWRcbicKKyAgICAgICAgICAgJ2luIGNvbmp1bmN0aW9uIHdpdGggbmVzdGVkIHNjb3BlcyB0aGF0IGNvbnRhaW4gZnJlZSB2YXJpYWJsZXMuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0lmIGEgdmFyaWFibGUgaXMgcmVmZXJlbmNlZCBpbiBhbiBlbmNsb3Npbmcgc2NvcGUsIGl0IGlzIGlsbGVnYWwgJworICAgICAgICAgICAndG9cbicKKyAgICAgICAgICAgJ2RlbGV0ZSB0aGUgbmFtZS4gIEFuIGVycm9yIHdpbGwgYmUgcmVwb3J0ZWQgYXQgY29tcGlsZSB0aW1lLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgImV2YWwoKSIgYW5kICJleGVjKCkiIGZ1bmN0aW9ucyBkbyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhlICcKKyAgICAgICAgICAgJ2Z1bGxcbicKKyAgICAgICAgICAgJ2Vudmlyb25tZW50IGZvciByZXNvbHZpbmcgbmFtZXMuICBOYW1lcyBtYXkgYmUgcmVzb2x2ZWQgaW4gdGhlICcKKyAgICAgICAgICAgJ2xvY2FsXG4nCisgICAgICAgICAgICdhbmQgZ2xvYmFsIG5hbWVzcGFjZXMgb2YgdGhlIGNhbGxlci4gIEZyZWUgdmFyaWFibGVzIGFyZSBub3QgJworICAgICAgICAgICAncmVzb2x2ZWRcbicKKyAgICAgICAgICAgJ2luIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBuYW1lc3BhY2UsIGJ1dCBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4gICcKKyAgICAgICAgICAgJ1sxXVxuJworICAgICAgICAgICAnVGhlICJleGVjKCkiIGFuZCAiZXZhbCgpIiBmdW5jdGlvbnMgaGF2ZSBvcHRpb25hbCBhcmd1bWVudHMgdG9cbicKKyAgICAgICAgICAgJ292ZXJyaWRlIHRoZSBnbG9iYWwgYW5kIGxvY2FsIG5hbWVzcGFjZS4gIElmIG9ubHkgb25lIG5hbWVzcGFjZSAnCisgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAnc3BlY2lmaWVkLCBpdCBpcyB1c2VkIGZvciBib3RoLlxuJywKKyAnbm9ubG9jYWwnOiAnXG4nCisgICAgICAgICAgICAgJ1RoZSAibm9ubG9jYWwiIHN0YXRlbWVudFxuJworICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIG5vbmxvY2FsX3N0bXQgOjo9ICJub25sb2NhbCIgaWRlbnRpZmllciAoIiwiIGlkZW50aWZpZXIpKlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJub25sb2NhbCIgc3RhdGVtZW50IGNhdXNlcyB0aGUgbGlzdGVkIGlkZW50aWZpZXJzIHRvIHJlZmVyICcKKyAgICAgICAgICAgICAndG9cbicKKyAgICAgICAgICAgICAncHJldmlvdXNseSBib3VuZCB2YXJpYWJsZXMgaW4gdGhlIG5lYXJlc3QgZW5jbG9zaW5nIHNjb3BlICcKKyAgICAgICAgICAgICAnZXhjbHVkaW5nXG4nCisgICAgICAgICAgICAgJ2dsb2JhbHMuIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgdGhlIGRlZmF1bHQgYmVoYXZpb3IgZm9yICcKKyAgICAgICAgICAgICAnYmluZGluZyBpc1xuJworICAgICAgICAgICAgICd0byBzZWFyY2ggdGhlIGxvY2FsIG5hbWVzcGFjZSBmaXJzdC4gIFRoZSBzdGF0ZW1lbnQgYWxsb3dzXG4nCisgICAgICAgICAgICAgJ2VuY2Fwc3VsYXRlZCBjb2RlIHRvIHJlYmluZCB2YXJpYWJsZXMgb3V0c2lkZSBvZiB0aGUgbG9jYWwgJworICAgICAgICAgICAgICdzY29wZVxuJworICAgICAgICAgICAgICdiZXNpZGVzIHRoZSBnbG9iYWwgKG1vZHVsZSkgc2NvcGUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdOYW1lcyBsaXN0ZWQgaW4gYSAibm9ubG9jYWwiIHN0YXRlbWVudCwgdW5saWtlIHRob3NlIGxpc3RlZCBpbiAnCisgICAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgICAnImdsb2JhbCIgc3RhdGVtZW50LCBtdXN0IHJlZmVyIHRvIHByZS1leGlzdGluZyBiaW5kaW5ncyBpbiBhblxuJworICAgICAgICAgICAgICdlbmNsb3Npbmcgc2NvcGUgKHRoZSBzY29wZSBpbiB3aGljaCBhIG5ldyBiaW5kaW5nIHNob3VsZCBiZSAnCisgICAgICAgICAgICAgJ2NyZWF0ZWRcbicKKyAgICAgICAgICAgICAnY2Fubm90IGJlIGRldGVybWluZWQgdW5hbWJpZ3VvdXNseSkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdOYW1lcyBsaXN0ZWQgaW4gYSAibm9ubG9jYWwiIHN0YXRlbWVudCBtdXN0IG5vdCBjb2xsaWRlIHdpdGggJworICAgICAgICAgICAgICdwcmUtXG4nCisgICAgICAgICAgICAgJ2V4aXN0aW5nIGJpbmRpbmdzIGluIHRoZSBsb2NhbCBzY29wZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1NlZSBhbHNvOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAqKlBFUCAzMTA0KiogLSBBY2Nlc3MgdG8gTmFtZXMgaW4gT3V0ZXIgU2NvcGVzXG4nCisgICAgICAgICAgICAgJyAgICAgVGhlIHNwZWNpZmljYXRpb24gZm9yIHRoZSAibm9ubG9jYWwiIHN0YXRlbWVudC5cbicsCisgJ251bWJlcnMnOiAnXG4nCisgICAgICAgICAgICAnTnVtZXJpYyBsaXRlcmFsc1xuJworICAgICAgICAgICAgJyoqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdUaGVyZSBhcmUgdGhyZWUgdHlwZXMgb2YgbnVtZXJpYyBsaXRlcmFsczogaW50ZWdlcnMsIGZsb2F0aW5nICcKKyAgICAgICAgICAgICdwb2ludFxuJworICAgICAgICAgICAgJ251bWJlcnMsIGFuZCBpbWFnaW5hcnkgbnVtYmVycy4gIFRoZXJlIGFyZSBubyBjb21wbGV4IGxpdGVyYWxzXG4nCisgICAgICAgICAgICAnKGNvbXBsZXggbnVtYmVycyBjYW4gYmUgZm9ybWVkIGJ5IGFkZGluZyBhIHJlYWwgbnVtYmVyIGFuZCBhblxuJworICAgICAgICAgICAgJ2ltYWdpbmFyeSBudW1iZXIpLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ05vdGUgdGhhdCBudW1lcmljIGxpdGVyYWxzIGRvIG5vdCBpbmNsdWRlIGEgc2lnbjsgYSBwaHJhc2UgbGlrZSAnCisgICAgICAgICAgICAnIi0xIlxuJworICAgICAgICAgICAgJ2lzIGFjdHVhbGx5IGFuIGV4cHJlc3Npb24gY29tcG9zZWQgb2YgdGhlIHVuYXJ5IG9wZXJhdG9yIFwnIi0iXCcgJworICAgICAgICAgICAgJ2FuZCB0aGVcbicKKyAgICAgICAgICAgICdsaXRlcmFsICIxIi5cbicsCisgJ251bWVyaWMtdHlwZXMnOiAnXG4nCisgICAgICAgICAgICAgICAgICAnRW11bGF0aW5nIG51bWVyaWMgdHlwZXNcbicKKyAgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBlbXVsYXRlIG51bWVyaWMgJworICAgICAgICAgICAgICAgICAgJ29iamVjdHMuXG4nCisgICAgICAgICAgICAgICAgICAnTWV0aG9kcyBjb3JyZXNwb25kaW5nIHRvIG9wZXJhdGlvbnMgdGhhdCBhcmUgbm90IHN1cHBvcnRlZCAnCisgICAgICAgICAgICAgICAgICAnYnkgdGhlXG4nCisgICAgICAgICAgICAgICAgICAncGFydGljdWxhciBraW5kIG9mIG51bWJlciBpbXBsZW1lbnRlZCAoZS5nLiwgYml0d2lzZSAnCisgICAgICAgICAgICAgICAgICAnb3BlcmF0aW9ucyBmb3JcbicKKyAgICAgICAgICAgICAgICAgICdub24taW50ZWdyYWwgbnVtYmVycykgc2hvdWxkIGJlIGxlZnQgdW5kZWZpbmVkLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2FkZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3N1Yl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX211bF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX21hdG11bF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3RydWVkaXZfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19mbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX21vZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2Rpdm1vZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Bvd19fKHNlbGYsIG90aGVyWywgbW9kdWxvXSlcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19sc2hpZnRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19yc2hpZnRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19hbmRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX194b3JfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19vcl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJpbmFyeSAnCisgICAgICAgICAgICAgICAgICAnYXJpdGhtZXRpY1xuJworICAgICAgICAgICAgICAgICAgJyAgIG9wZXJhdGlvbnMgKCIrIiwgIi0iLCAiKiIsICJAIiwgIi8iLCAiLy8iLCAiJSIsICcKKyAgICAgICAgICAgICAgICAgICciZGl2bW9kKCkiLFxuJworICAgICAgICAgICAgICAgICAgJyAgICJwb3coKSIsICIqKiIsICI8PCIsICI+PiIsICImIiwgIl4iLCAifCIpLiAgRm9yICcKKyAgICAgICAgICAgICAgICAgICdpbnN0YW5jZSwgdG9cbicKKyAgICAgICAgICAgICAgICAgICcgICBldmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiAieCArIHkiLCB3aGVyZSAqeCogaXMgYW4gJworICAgICAgICAgICAgICAgICAgJ2luc3RhbmNlIG9mIGFcbicKKyAgICAgICAgICAgICAgICAgICcgICBjbGFzcyB0aGF0IGhhcyBhbiAiX19hZGRfXygpIiBtZXRob2QsICJ4Ll9fYWRkX18oeSkiIGlzICcKKyAgICAgICAgICAgICAgICAgICdjYWxsZWQuXG4nCisgICAgICAgICAgICAgICAgICAnICAgVGhlICJfX2Rpdm1vZF9fKCkiIG1ldGhvZCBzaG91bGQgYmUgdGhlIGVxdWl2YWxlbnQgdG8gJworICAgICAgICAgICAgICAgICAgJ3VzaW5nXG4nCisgICAgICAgICAgICAgICAgICAnICAgIl9fZmxvb3JkaXZfXygpIiBhbmQgIl9fbW9kX18oKSI7IGl0IHNob3VsZCBub3QgYmUgJworICAgICAgICAgICAgICAgICAgJ3JlbGF0ZWQgdG9cbicKKyAgICAgICAgICAgICAgICAgICcgICAiX190cnVlZGl2X18oKSIuICBOb3RlIHRoYXQgIl9fcG93X18oKSIgc2hvdWxkIGJlICcKKyAgICAgICAgICAgICAgICAgICdkZWZpbmVkIHRvIGFjY2VwdFxuJworICAgICAgICAgICAgICAgICAgJyAgIGFuIG9wdGlvbmFsIHRoaXJkIGFyZ3VtZW50IGlmIHRoZSB0ZXJuYXJ5IHZlcnNpb24gb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgICdidWlsdC1pblxuJworICAgICAgICAgICAgICAgICAgJyAgICJwb3coKSIgZnVuY3Rpb24gaXMgdG8gYmUgc3VwcG9ydGVkLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIElmIG9uZSBvZiB0aG9zZSBtZXRob2RzIGRvZXMgbm90IHN1cHBvcnQgdGhlIG9wZXJhdGlvbiAnCisgICAgICAgICAgICAgICAgICAnd2l0aCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICBzdXBwbGllZCBhcmd1bWVudHMsIGl0IHNob3VsZCByZXR1cm4gIk5vdEltcGxlbWVudGVkIi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19yYWRkX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcnN1Yl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JtdWxfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19ybWF0bXVsX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcnRydWVkaXZfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19yZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19ybW9kX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcmRpdm1vZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Jwb3dfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19ybHNoaWZ0X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcnJzaGlmdF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JhbmRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19yeG9yX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcm9yX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYmluYXJ5ICcKKyAgICAgICAgICAgICAgICAgICdhcml0aG1ldGljXG4nCisgICAgICAgICAgICAgICAgICAnICAgb3BlcmF0aW9ucyAoIisiLCAiLSIsICIqIiwgIkAiLCAiLyIsICIvLyIsICIlIiwgJworICAgICAgICAgICAgICAgICAgJyJkaXZtb2QoKSIsXG4nCisgICAgICAgICAgICAgICAgICAnICAgInBvdygpIiwgIioqIiwgIjw8IiwgIj4+IiwgIiYiLCAiXiIsICJ8Iikgd2l0aCByZWZsZWN0ZWQgJworICAgICAgICAgICAgICAgICAgJyhzd2FwcGVkKVxuJworICAgICAgICAgICAgICAgICAgJyAgIG9wZXJhbmRzLiAgVGhlc2UgZnVuY3Rpb25zIGFyZSBvbmx5IGNhbGxlZCBpZiB0aGUgbGVmdCAnCisgICAgICAgICAgICAgICAgICAnb3BlcmFuZCBkb2VzXG4nCisgICAgICAgICAgICAgICAgICAnICAgbm90IHN1cHBvcnQgdGhlIGNvcnJlc3BvbmRpbmcgb3BlcmF0aW9uIFszXSBhbmQgdGhlICcKKyAgICAgICAgICAgICAgICAgICdvcGVyYW5kcyBhcmUgb2ZcbicKKyAgICAgICAgICAgICAgICAgICcgICBkaWZmZXJlbnQgdHlwZXMuIFs0XSBGb3IgaW5zdGFuY2UsIHRvIGV2YWx1YXRlIHRoZSAnCisgICAgICAgICAgICAgICAgICAnZXhwcmVzc2lvbiAieCAtXG4nCisgICAgICAgICAgICAgICAgICAnICAgeSIsIHdoZXJlICp5KiBpcyBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzIHRoYXQgaGFzIGFuICcKKyAgICAgICAgICAgICAgICAgICciX19yc3ViX18oKSJcbicKKyAgICAgICAgICAgICAgICAgICcgICBtZXRob2QsICJ5Ll9fcnN1Yl9fKHgpIiBpcyBjYWxsZWQgaWYgInguX19zdWJfXyh5KSIgJworICAgICAgICAgICAgICAgICAgJ3JldHVybnNcbicKKyAgICAgICAgICAgICAgICAgICcgICAqTm90SW1wbGVtZW50ZWQqLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIE5vdGUgdGhhdCB0ZXJuYXJ5ICJwb3coKSIgd2lsbCBub3QgdHJ5IGNhbGxpbmcgJworICAgICAgICAgICAgICAgICAgJyJfX3Jwb3dfXygpIiAodGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgY29lcmNpb24gcnVsZXMgd291bGQgYmVjb21lIHRvbyBjb21wbGljYXRlZCkuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAiICAgTm90ZTogSWYgdGhlIHJpZ2h0IG9wZXJhbmQncyB0eXBlIGlzIGEgc3ViY2xhc3Mgb2YgdGhlICIKKyAgICAgICAgICAgICAgICAgICdsZWZ0XG4nCisgICAgICAgICAgICAgICAgICAiICAgICBvcGVyYW5kJ3MgdHlwZSBhbmQgdGhhdCBzdWJjbGFzcyBwcm92aWRlcyB0aGUgIgorICAgICAgICAgICAgICAgICAgJ3JlZmxlY3RlZCBtZXRob2RcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGZvciB0aGUgb3BlcmF0aW9uLCB0aGlzIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBiZWZvcmUgJworICAgICAgICAgICAgICAgICAgJ3RoZSBsZWZ0XG4nCisgICAgICAgICAgICAgICAgICAiICAgICBvcGVyYW5kJ3Mgbm9uLXJlZmxlY3RlZCBtZXRob2QuICBUaGlzIGJlaGF2aW9yIGFsbG93cyAiCisgICAgICAgICAgICAgICAgICAnc3ViY2xhc3Nlc1xuJworICAgICAgICAgICAgICAgICAgIiAgICAgdG8gb3ZlcnJpZGUgdGhlaXIgYW5jZXN0b3JzJyBvcGVyYXRpb25zLlxuIgorICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lhZGRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pc3ViX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW11bF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2ltYXRtdWxfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pdHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lmbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2ltb2RfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pcG93X18oc2VsZiwgb3RoZXJbLCBtb2R1bG9dKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lsc2hpZnRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pcnNoaWZ0X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faWFuZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2l4b3JfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pb3JfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBhdWdtZW50ZWQgJworICAgICAgICAgICAgICAgICAgJ2FyaXRobWV0aWNcbicKKyAgICAgICAgICAgICAgICAgICcgICBhc3NpZ25tZW50cyAoIis9IiwgIi09IiwgIio9IiwgIkA9IiwgIi89IiwgIi8vPSIsICIlPSIsICcKKyAgICAgICAgICAgICAgICAgICciKio9IixcbicKKyAgICAgICAgICAgICAgICAgICcgICAiPDw9IiwgIj4+PSIsICImPSIsICJePSIsICJ8PSIpLiAgVGhlc2UgbWV0aG9kcyBzaG91bGQgJworICAgICAgICAgICAgICAgICAgJ2F0dGVtcHQgdG9cbicKKyAgICAgICAgICAgICAgICAgICcgICBkbyB0aGUgb3BlcmF0aW9uIGluLXBsYWNlIChtb2RpZnlpbmcgKnNlbGYqKSBhbmQgcmV0dXJuICcKKyAgICAgICAgICAgICAgICAgICd0aGUgcmVzdWx0XG4nCisgICAgICAgICAgICAgICAgICAnICAgKHdoaWNoIGNvdWxkIGJlLCBidXQgZG9lcyBub3QgaGF2ZSB0byBiZSwgKnNlbGYqKS4gIElmIGEgJworICAgICAgICAgICAgICAgICAgJ3NwZWNpZmljXG4nCisgICAgICAgICAgICAgICAgICAnICAgbWV0aG9kIGlzIG5vdCBkZWZpbmVkLCB0aGUgYXVnbWVudGVkIGFzc2lnbm1lbnQgZmFsbHMgJworICAgICAgICAgICAgICAgICAgJ2JhY2sgdG8gdGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgbm9ybWFsIG1ldGhvZHMuICBGb3IgaW5zdGFuY2UsIGlmICp4KiBpcyBhbiBpbnN0YW5jZSBvZiAnCisgICAgICAgICAgICAgICAgICAnYSBjbGFzc1xuJworICAgICAgICAgICAgICAgICAgJyAgIHdpdGggYW4gIl9faWFkZF9fKCkiIG1ldGhvZCwgInggKz0geSIgaXMgZXF1aXZhbGVudCB0byAnCisgICAgICAgICAgICAgICAgICAnInggPVxuJworICAgICAgICAgICAgICAgICAgJyAgIHguX19pYWRkX18oeSkiIC4gT3RoZXJ3aXNlLCAieC5fX2FkZF9fKHkpIiBhbmQgJworICAgICAgICAgICAgICAgICAgJyJ5Ll9fcmFkZF9fKHgpIiBhcmVcbicKKyAgICAgICAgICAgICAgICAgICcgICBjb25zaWRlcmVkLCBhcyB3aXRoIHRoZSBldmFsdWF0aW9uIG9mICJ4ICsgeSIuIEluICcKKyAgICAgICAgICAgICAgICAgICdjZXJ0YWluXG4nCisgICAgICAgICAgICAgICAgICAnICAgc2l0dWF0aW9ucywgYXVnbWVudGVkIGFzc2lnbm1lbnQgY2FuIHJlc3VsdCBpbiAnCisgICAgICAgICAgICAgICAgICAndW5leHBlY3RlZCBlcnJvcnNcbicKKyAgICAgICAgICAgICAgICAgICIgICAoc2VlIFdoeSBkb2VzIGFfdHVwbGVbaV0gKz0gWydpdGVtJ10gcmFpc2UgYW4gZXhjZXB0aW9uICIKKyAgICAgICAgICAgICAgICAgICd3aGVuIHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgIGFkZGl0aW9uIHdvcmtzPyksIGJ1dCB0aGlzIGJlaGF2aW9yIGlzIGluIGZhY3QgcGFydCBvZiAnCisgICAgICAgICAgICAgICAgICAndGhlIGRhdGFcbicKKyAgICAgICAgICAgICAgICAgICcgICBtb2RlbC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19uZWdfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Bvc19fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fYWJzX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pbnZlcnRfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIHVuYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9ucyAnCisgICAgICAgICAgICAgICAgICAnKCItIiwgIisiLFxuJworICAgICAgICAgICAgICAgICAgJyAgICJhYnMoKSIgYW5kICJ+IikuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fY29tcGxleF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW50X18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19mbG9hdF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcm91bmRfXyhzZWxmWywgbl0pXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zICJjb21wbGV4KCkiLCAnCisgICAgICAgICAgICAgICAgICAnImludCgpIixcbicKKyAgICAgICAgICAgICAgICAgICcgICAiZmxvYXQoKSIgYW5kICJyb3VuZCgpIi4gIFNob3VsZCByZXR1cm4gYSB2YWx1ZSBvZiB0aGUgJworICAgICAgICAgICAgICAgICAgJ2FwcHJvcHJpYXRlXG4nCisgICAgICAgICAgICAgICAgICAnICAgdHlwZS5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pbmRleF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCAib3BlcmF0b3IuaW5kZXgoKSIsIGFuZCB3aGVuZXZlciAnCisgICAgICAgICAgICAgICAgICAnUHl0aG9uIG5lZWRzXG4nCisgICAgICAgICAgICAgICAgICAnICAgdG8gbG9zc2xlc3NseSBjb252ZXJ0IHRoZSBudW1lcmljIG9iamVjdCB0byBhbiBpbnRlZ2VyICcKKyAgICAgICAgICAgICAgICAgICdvYmplY3QgKHN1Y2hcbicKKyAgICAgICAgICAgICAgICAgICcgICBhcyBpbiBzbGljaW5nLCBvciBpbiB0aGUgYnVpbHQtaW4gImJpbigpIiwgImhleCgpIiBhbmQgJworICAgICAgICAgICAgICAgICAgJyJvY3QoKSJcbicKKyAgICAgICAgICAgICAgICAgICcgICBmdW5jdGlvbnMpLiBQcmVzZW5jZSBvZiB0aGlzIG1ldGhvZCBpbmRpY2F0ZXMgdGhhdCB0aGUgJworICAgICAgICAgICAgICAgICAgJ251bWVyaWNcbicKKyAgICAgICAgICAgICAgICAgICcgICBvYmplY3QgaXMgYW4gaW50ZWdlciB0eXBlLiAgTXVzdCByZXR1cm4gYW4gaW50ZWdlci5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBOb3RlOiBJbiBvcmRlciB0byBoYXZlIGEgY29oZXJlbnQgaW50ZWdlciB0eXBlIGNsYXNzLCAnCisgICAgICAgICAgICAgICAgICAnd2hlblxuJworICAgICAgICAgICAgICAgICAgJyAgICAgIl9faW5kZXhfXygpIiBpcyBkZWZpbmVkICJfX2ludF9fKCkiIHNob3VsZCBhbHNvIGJlICcKKyAgICAgICAgICAgICAgICAgICdkZWZpbmVkLCBhbmRcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGJvdGggc2hvdWxkIHJldHVybiB0aGUgc2FtZSB2YWx1ZS5cbicsCisgJ29iamVjdHMnOiAnXG4nCisgICAgICAgICAgICAnT2JqZWN0cywgdmFsdWVzIGFuZCB0eXBlc1xuJworICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICIqT2JqZWN0cyogYXJlIFB5dGhvbidzIGFic3RyYWN0aW9uIGZvciBkYXRhLiAgQWxsIGRhdGEgaW4gYSAiCisgICAgICAgICAgICAnUHl0aG9uXG4nCisgICAgICAgICAgICAncHJvZ3JhbSBpcyByZXByZXNlbnRlZCBieSBvYmplY3RzIG9yIGJ5IHJlbGF0aW9ucyBiZXR3ZWVuICcKKyAgICAgICAgICAgICdvYmplY3RzLiAoSW5cbicKKyAgICAgICAgICAgICdhIHNlbnNlLCBhbmQgaW4gY29uZm9ybWFuY2UgdG8gVm9uIE5ldW1hbm5cJ3MgbW9kZWwgb2YgYSAic3RvcmVkXG4nCisgICAgICAgICAgICAncHJvZ3JhbSBjb21wdXRlciwiIGNvZGUgaXMgYWxzbyByZXByZXNlbnRlZCBieSBvYmplY3RzLilcbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICJFdmVyeSBvYmplY3QgaGFzIGFuIGlkZW50aXR5LCBhIHR5cGUgYW5kIGEgdmFsdWUuICBBbiBvYmplY3Qnc1xuIgorICAgICAgICAgICAgJyppZGVudGl0eSogbmV2ZXIgY2hhbmdlcyBvbmNlIGl0IGhhcyBiZWVuIGNyZWF0ZWQ7IHlvdSBtYXkgdGhpbmsgJworICAgICAgICAgICAgJ29mIGl0XG4nCisgICAgICAgICAgICAnYXMgdGhlIG9iamVjdFwncyBhZGRyZXNzIGluIG1lbW9yeS4gIFRoZSBcJyJpcyJcJyBvcGVyYXRvciAnCisgICAgICAgICAgICAnY29tcGFyZXMgdGhlXG4nCisgICAgICAgICAgICAnaWRlbnRpdHkgb2YgdHdvIG9iamVjdHM7IHRoZSAiaWQoKSIgZnVuY3Rpb24gcmV0dXJucyBhbiBpbnRlZ2VyXG4nCisgICAgICAgICAgICAncmVwcmVzZW50aW5nIGl0cyBpZGVudGl0eS5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICcqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIEZvciBDUHl0aG9uLCAiaWQoeCkiIGlzIHRoZSAnCisgICAgICAgICAgICAnbWVtb3J5XG4nCisgICAgICAgICAgICAnYWRkcmVzcyB3aGVyZSAieCIgaXMgc3RvcmVkLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgIkFuIG9iamVjdCdzIHR5cGUgZGV0ZXJtaW5lcyB0aGUgb3BlcmF0aW9ucyB0aGF0IHRoZSBvYmplY3QgIgorICAgICAgICAgICAgJ3N1cHBvcnRzXG4nCisgICAgICAgICAgICAnKGUuZy4sICJkb2VzIGl0IGhhdmUgYSBsZW5ndGg/IikgYW5kIGFsc28gZGVmaW5lcyB0aGUgcG9zc2libGUgJworICAgICAgICAgICAgJ3ZhbHVlc1xuJworICAgICAgICAgICAgJ2ZvciBvYmplY3RzIG9mIHRoYXQgdHlwZS4gIFRoZSAidHlwZSgpIiBmdW5jdGlvbiByZXR1cm5zIGFuICcKKyAgICAgICAgICAgICJvYmplY3Qnc1xuIgorICAgICAgICAgICAgJ3R5cGUgKHdoaWNoIGlzIGFuIG9iamVjdCBpdHNlbGYpLiAgTGlrZSBpdHMgaWRlbnRpdHksIGFuICcKKyAgICAgICAgICAgICJvYmplY3Qnc1xuIgorICAgICAgICAgICAgJyp0eXBlKiBpcyBhbHNvIHVuY2hhbmdlYWJsZS4gWzFdXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnVGhlICp2YWx1ZSogb2Ygc29tZSBvYmplY3RzIGNhbiBjaGFuZ2UuICBPYmplY3RzIHdob3NlIHZhbHVlIGNhblxuJworICAgICAgICAgICAgJ2NoYW5nZSBhcmUgc2FpZCB0byBiZSAqbXV0YWJsZSo7IG9iamVjdHMgd2hvc2UgdmFsdWUgaXMgJworICAgICAgICAgICAgJ3VuY2hhbmdlYWJsZVxuJworICAgICAgICAgICAgJ29uY2UgdGhleSBhcmUgY3JlYXRlZCBhcmUgY2FsbGVkICppbW11dGFibGUqLiAoVGhlIHZhbHVlIG9mIGFuXG4nCisgICAgICAgICAgICAnaW1tdXRhYmxlIGNvbnRhaW5lciBvYmplY3QgdGhhdCBjb250YWlucyBhIHJlZmVyZW5jZSB0byBhICcKKyAgICAgICAgICAgICdtdXRhYmxlXG4nCisgICAgICAgICAgICAib2JqZWN0IGNhbiBjaGFuZ2Ugd2hlbiB0aGUgbGF0dGVyJ3MgdmFsdWUgaXMgY2hhbmdlZDsgaG93ZXZlciAiCisgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAnY29udGFpbmVyIGlzIHN0aWxsIGNvbnNpZGVyZWQgaW1tdXRhYmxlLCBiZWNhdXNlIHRoZSBjb2xsZWN0aW9uICcKKyAgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAgJ29iamVjdHMgaXQgY29udGFpbnMgY2Fubm90IGJlIGNoYW5nZWQuICBTbywgaW1tdXRhYmlsaXR5IGlzIG5vdFxuJworICAgICAgICAgICAgJ3N0cmljdGx5IHRoZSBzYW1lIGFzIGhhdmluZyBhbiB1bmNoYW5nZWFibGUgdmFsdWUsIGl0IGlzIG1vcmUgJworICAgICAgICAgICAgJ3N1YnRsZS4pXG4nCisgICAgICAgICAgICAiQW4gb2JqZWN0J3MgbXV0YWJpbGl0eSBpcyBkZXRlcm1pbmVkIGJ5IGl0cyB0eXBlOyBmb3IgaW5zdGFuY2UsXG4iCisgICAgICAgICAgICAnbnVtYmVycywgc3RyaW5ncyBhbmQgdHVwbGVzIGFyZSBpbW11dGFibGUsIHdoaWxlIGRpY3Rpb25hcmllcyAnCisgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAnbGlzdHMgYXJlIG11dGFibGUuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnT2JqZWN0cyBhcmUgbmV2ZXIgZXhwbGljaXRseSBkZXN0cm95ZWQ7IGhvd2V2ZXIsIHdoZW4gdGhleSAnCisgICAgICAgICAgICAnYmVjb21lXG4nCisgICAgICAgICAgICAndW5yZWFjaGFibGUgdGhleSBtYXkgYmUgZ2FyYmFnZS1jb2xsZWN0ZWQuICBBbiBpbXBsZW1lbnRhdGlvbiBpc1xuJworICAgICAgICAgICAgJ2FsbG93ZWQgdG8gcG9zdHBvbmUgZ2FyYmFnZSBjb2xsZWN0aW9uIG9yIG9taXQgaXQgYWx0b2dldGhlciAtLS0gJworICAgICAgICAgICAgJ2l0IGlzXG4nCisgICAgICAgICAgICAnYSBtYXR0ZXIgb2YgaW1wbGVtZW50YXRpb24gcXVhbGl0eSBob3cgZ2FyYmFnZSBjb2xsZWN0aW9uIGlzXG4nCisgICAgICAgICAgICAnaW1wbGVtZW50ZWQsIGFzIGxvbmcgYXMgbm8gb2JqZWN0cyBhcmUgY29sbGVjdGVkIHRoYXQgYXJlIHN0aWxsXG4nCisgICAgICAgICAgICAncmVhY2hhYmxlLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJyoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogQ1B5dGhvbiBjdXJyZW50bHkgdXNlcyBhICcKKyAgICAgICAgICAgICdyZWZlcmVuY2UtXG4nCisgICAgICAgICAgICAnY291bnRpbmcgc2NoZW1lIHdpdGggKG9wdGlvbmFsKSBkZWxheWVkIGRldGVjdGlvbiBvZiBjeWNsaWNhbGx5ICcKKyAgICAgICAgICAgICdsaW5rZWRcbicKKyAgICAgICAgICAgICdnYXJiYWdlLCB3aGljaCBjb2xsZWN0cyBtb3N0IG9iamVjdHMgYXMgc29vbiBhcyB0aGV5IGJlY29tZVxuJworICAgICAgICAgICAgJ3VucmVhY2hhYmxlLCBidXQgaXMgbm90IGd1YXJhbnRlZWQgdG8gY29sbGVjdCBnYXJiYWdlIGNvbnRhaW5pbmdcbicKKyAgICAgICAgICAgICdjaXJjdWxhciByZWZlcmVuY2VzLiAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZSAiZ2MiIG1vZHVsZSAnCisgICAgICAgICAgICAnZm9yXG4nCisgICAgICAgICAgICAnaW5mb3JtYXRpb24gb24gY29udHJvbGxpbmcgdGhlIGNvbGxlY3Rpb24gb2YgY3ljbGljIGdhcmJhZ2UuICcKKyAgICAgICAgICAgICdPdGhlclxuJworICAgICAgICAgICAgJ2ltcGxlbWVudGF0aW9ucyBhY3QgZGlmZmVyZW50bHkgYW5kIENQeXRob24gbWF5IGNoYW5nZS4gRG8gbm90ICcKKyAgICAgICAgICAgICdkZXBlbmRcbicKKyAgICAgICAgICAgICdvbiBpbW1lZGlhdGUgZmluYWxpemF0aW9uIG9mIG9iamVjdHMgd2hlbiB0aGV5IGJlY29tZSB1bnJlYWNoYWJsZSAnCisgICAgICAgICAgICAnKHNvXG4nCisgICAgICAgICAgICAneW91IHNob3VsZCBhbHdheXMgY2xvc2UgZmlsZXMgZXhwbGljaXRseSkuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAiTm90ZSB0aGF0IHRoZSB1c2Ugb2YgdGhlIGltcGxlbWVudGF0aW9uJ3MgdHJhY2luZyBvciBkZWJ1Z2dpbmdcbiIKKyAgICAgICAgICAgICdmYWNpbGl0aWVzIG1heSBrZWVwIG9iamVjdHMgYWxpdmUgdGhhdCB3b3VsZCBub3JtYWxseSBiZSAnCisgICAgICAgICAgICAnY29sbGVjdGFibGUuXG4nCisgICAgICAgICAgICAnQWxzbyBub3RlIHRoYXQgY2F0Y2hpbmcgYW4gZXhjZXB0aW9uIHdpdGggYSBcJyJ0cnkiLi4uImV4Y2VwdCJcJ1xuJworICAgICAgICAgICAgJ3N0YXRlbWVudCBtYXkga2VlcCBvYmplY3RzIGFsaXZlLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ1NvbWUgb2JqZWN0cyBjb250YWluIHJlZmVyZW5jZXMgdG8gImV4dGVybmFsIiByZXNvdXJjZXMgc3VjaCBhcyAnCisgICAgICAgICAgICAnb3BlblxuJworICAgICAgICAgICAgJ2ZpbGVzIG9yIHdpbmRvd3MuICBJdCBpcyB1bmRlcnN0b29kIHRoYXQgdGhlc2UgcmVzb3VyY2VzIGFyZSAnCisgICAgICAgICAgICAnZnJlZWRcbicKKyAgICAgICAgICAgICd3aGVuIHRoZSBvYmplY3QgaXMgZ2FyYmFnZS1jb2xsZWN0ZWQsIGJ1dCBzaW5jZSBnYXJiYWdlICcKKyAgICAgICAgICAgICdjb2xsZWN0aW9uIGlzXG4nCisgICAgICAgICAgICAnbm90IGd1YXJhbnRlZWQgdG8gaGFwcGVuLCBzdWNoIG9iamVjdHMgYWxzbyBwcm92aWRlIGFuIGV4cGxpY2l0ICcKKyAgICAgICAgICAgICd3YXkgdG9cbicKKyAgICAgICAgICAgICdyZWxlYXNlIHRoZSBleHRlcm5hbCByZXNvdXJjZSwgdXN1YWxseSBhICJjbG9zZSgpIiBtZXRob2QuICcKKyAgICAgICAgICAgICdQcm9ncmFtc1xuJworICAgICAgICAgICAgJ2FyZSBzdHJvbmdseSByZWNvbW1lbmRlZCB0byBleHBsaWNpdGx5IGNsb3NlIHN1Y2ggb2JqZWN0cy4gIFRoZVxuJworICAgICAgICAgICAgJ1wnInRyeSIuLi4iZmluYWxseSJcJyBzdGF0ZW1lbnQgYW5kIHRoZSBcJyJ3aXRoIlwnIHN0YXRlbWVudCAnCisgICAgICAgICAgICAncHJvdmlkZVxuJworICAgICAgICAgICAgJ2NvbnZlbmllbnQgd2F5cyB0byBkbyB0aGlzLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ1NvbWUgb2JqZWN0cyBjb250YWluIHJlZmVyZW5jZXMgdG8gb3RoZXIgb2JqZWN0czsgdGhlc2UgYXJlICcKKyAgICAgICAgICAgICdjYWxsZWRcbicKKyAgICAgICAgICAgICcqY29udGFpbmVycyouIEV4YW1wbGVzIG9mIGNvbnRhaW5lcnMgYXJlIHR1cGxlcywgbGlzdHMgYW5kXG4nCisgICAgICAgICAgICAiZGljdGlvbmFyaWVzLiAgVGhlIHJlZmVyZW5jZXMgYXJlIHBhcnQgb2YgYSBjb250YWluZXIncyB2YWx1ZS4gICIKKyAgICAgICAgICAgICdJblxuJworICAgICAgICAgICAgJ21vc3QgY2FzZXMsIHdoZW4gd2UgdGFsayBhYm91dCB0aGUgdmFsdWUgb2YgYSBjb250YWluZXIsIHdlIGltcGx5ICcKKyAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICd2YWx1ZXMsIG5vdCB0aGUgaWRlbnRpdGllcyBvZiB0aGUgY29udGFpbmVkIG9iamVjdHM7IGhvd2V2ZXIsICcKKyAgICAgICAgICAgICd3aGVuIHdlXG4nCisgICAgICAgICAgICAndGFsayBhYm91dCB0aGUgbXV0YWJpbGl0eSBvZiBhIGNvbnRhaW5lciwgb25seSB0aGUgaWRlbnRpdGllcyBvZiAnCisgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAnaW1tZWRpYXRlbHkgY29udGFpbmVkIG9iamVjdHMgYXJlIGltcGxpZWQuICBTbywgaWYgYW4gaW1tdXRhYmxlXG4nCisgICAgICAgICAgICAnY29udGFpbmVyIChsaWtlIGEgdHVwbGUpIGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIGEgbXV0YWJsZSAnCisgICAgICAgICAgICAnb2JqZWN0LCBpdHNcbicKKyAgICAgICAgICAgICd2YWx1ZSBjaGFuZ2VzIGlmIHRoYXQgbXV0YWJsZSBvYmplY3QgaXMgY2hhbmdlZC5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdUeXBlcyBhZmZlY3QgYWxtb3N0IGFsbCBhc3BlY3RzIG9mIG9iamVjdCBiZWhhdmlvci4gIEV2ZW4gdGhlXG4nCisgICAgICAgICAgICAnaW1wb3J0YW5jZSBvZiBvYmplY3QgaWRlbnRpdHkgaXMgYWZmZWN0ZWQgaW4gc29tZSBzZW5zZTogZm9yICcKKyAgICAgICAgICAgICdpbW11dGFibGVcbicKKyAgICAgICAgICAgICd0eXBlcywgb3BlcmF0aW9ucyB0aGF0IGNvbXB1dGUgbmV3IHZhbHVlcyBtYXkgYWN0dWFsbHkgcmV0dXJuIGFcbicKKyAgICAgICAgICAgICdyZWZlcmVuY2UgdG8gYW55IGV4aXN0aW5nIG9iamVjdCB3aXRoIHRoZSBzYW1lIHR5cGUgYW5kIHZhbHVlLCAnCisgICAgICAgICAgICAnd2hpbGVcbicKKyAgICAgICAgICAgICdmb3IgbXV0YWJsZSBvYmplY3RzIHRoaXMgaXMgbm90IGFsbG93ZWQuICBFLmcuLCBhZnRlciAiYSA9IDE7IGIgPSAnCisgICAgICAgICAgICAnMSIsXG4nCisgICAgICAgICAgICAnImEiIGFuZCAiYiIgbWF5IG9yIG1heSBub3QgcmVmZXIgdG8gdGhlIHNhbWUgb2JqZWN0IHdpdGggdGhlICcKKyAgICAgICAgICAgICd2YWx1ZVxuJworICAgICAgICAgICAgJ29uZSwgZGVwZW5kaW5nIG9uIHRoZSBpbXBsZW1lbnRhdGlvbiwgYnV0IGFmdGVyICJjID0gW107IGQgPSBbXSIsICcKKyAgICAgICAgICAgICciYyJcbicKKyAgICAgICAgICAgICdhbmQgImQiIGFyZSBndWFyYW50ZWVkIHRvIHJlZmVyIHRvIHR3byBkaWZmZXJlbnQsIHVuaXF1ZSwgbmV3bHlcbicKKyAgICAgICAgICAgICdjcmVhdGVkIGVtcHR5IGxpc3RzLiAoTm90ZSB0aGF0ICJjID0gZCA9IFtdIiBhc3NpZ25zIHRoZSBzYW1lICcKKyAgICAgICAgICAgICdvYmplY3RcbicKKyAgICAgICAgICAgICd0byBib3RoICJjIiBhbmQgImQiLilcbicsCisgJ29wZXJhdG9yLXN1bW1hcnknOiAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnT3BlcmF0b3IgcHJlY2VkZW5jZVxuJworICAgICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdUaGUgZm9sbG93aW5nIHRhYmxlIHN1bW1hcml6ZXMgdGhlIG9wZXJhdG9yIHByZWNlZGVuY2UgJworICAgICAgICAgICAgICAgICAgICAgJ2luIFB5dGhvbiwgZnJvbVxuJworICAgICAgICAgICAgICAgICAgICAgJ2xvd2VzdCBwcmVjZWRlbmNlIChsZWFzdCBiaW5kaW5nKSB0byBoaWdoZXN0IHByZWNlZGVuY2UgJworICAgICAgICAgICAgICAgICAgICAgJyhtb3N0XG4nCisgICAgICAgICAgICAgICAgICAgICAnYmluZGluZykuICBPcGVyYXRvcnMgaW4gdGhlIHNhbWUgYm94IGhhdmUgdGhlIHNhbWUgJworICAgICAgICAgICAgICAgICAgICAgJ3ByZWNlZGVuY2UuICBVbmxlc3NcbicKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgc3ludGF4IGlzIGV4cGxpY2l0bHkgZ2l2ZW4sIG9wZXJhdG9ycyBhcmUgYmluYXJ5LiAgJworICAgICAgICAgICAgICAgICAgICAgJ09wZXJhdG9ycyBpblxuJworICAgICAgICAgICAgICAgICAgICAgJ3RoZSBzYW1lIGJveCBncm91cCBsZWZ0IHRvIHJpZ2h0IChleGNlcHQgZm9yICcKKyAgICAgICAgICAgICAgICAgICAgICdleHBvbmVudGlhdGlvbiwgd2hpY2hcbicKKyAgICAgICAgICAgICAgICAgICAgICdncm91cHMgZnJvbSByaWdodCB0byBsZWZ0KS5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdOb3RlIHRoYXQgY29tcGFyaXNvbnMsIG1lbWJlcnNoaXAgdGVzdHMsIGFuZCBpZGVudGl0eSAnCisgICAgICAgICAgICAgICAgICAgICAndGVzdHMsIGFsbCBoYXZlXG4nCisgICAgICAgICAgICAgICAgICAgICAndGhlIHNhbWUgcHJlY2VkZW5jZSBhbmQgaGF2ZSBhIGxlZnQtdG8tcmlnaHQgY2hhaW5pbmcgJworICAgICAgICAgICAgICAgICAgICAgJ2ZlYXR1cmUgYXNcbicKKyAgICAgICAgICAgICAgICAgICAgICdkZXNjcmliZWQgaW4gdGhlIENvbXBhcmlzb25zIHNlY3Rpb24uXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgT3BlcmF0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgImxhbWJkYSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnTGFtYmRhIGV4cHJlc3Npb24gICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgImlmIiAtLSAiZWxzZSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnQ29uZGl0aW9uYWwgZXhwcmVzc2lvbiAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgIm9yIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnQm9vbGVhbiBPUiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgImFuZCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnQm9vbGVhbiBBTkQgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgIm5vdCIgIngiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnQm9vbGVhbiBOT1QgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgImluIiwgIm5vdCBpbiIsICJpcyIsICJpcyBub3QiLCAiPCIsICI8PSIsICI+IiwgfCAnCisgICAgICAgICAgICAgICAgICAgICAnQ29tcGFyaXNvbnMsIGluY2x1ZGluZyBtZW1iZXJzaGlwICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiPj0iLCAiIT0iLCAiPT0iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICd0ZXN0cyBhbmQgaWRlbnRpdHkgdGVzdHMgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAifCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdCaXR3aXNlIE9SICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiXiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdCaXR3aXNlIFhPUiAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiJiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdCaXR3aXNlIEFORCAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiPDwiLCAiPj4iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdTaGlmdHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiKyIsICItIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdBZGRpdGlvbiBhbmQgc3VidHJhY3Rpb24gICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiKiIsICJAIiwgIi8iLCAiLy8iLCAiJSIgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdNdWx0aXBsaWNhdGlvbiwgbWF0cml4IG11bHRpcGxpY2F0aW9uIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ2RpdmlzaW9uLCByZW1haW5kZXIgWzVdICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICIreCIsICIteCIsICJ+eCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ1Bvc2l0aXZlLCBuZWdhdGl2ZSwgYml0d2lzZSBOT1QgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICIqKiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ0V4cG9uZW50aWF0aW9uIFs2XSAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJhd2FpdCIgIngiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ0F3YWl0IGV4cHJlc3Npb24gICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJ4W2luZGV4XSIsICJ4W2luZGV4OmluZGV4XSIsICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ1N1YnNjcmlwdGlvbiwgc2xpY2luZywgY2FsbCwgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgIngoYXJndW1lbnRzLi4uKSIsICJ4LmF0dHJpYnV0ZSIgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnYXR0cmlidXRlIHJlZmVyZW5jZSAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgIihleHByZXNzaW9ucy4uLikiLCAiW2V4cHJlc3Npb25zLi4uXSIsICJ7a2V5OiAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnQmluZGluZyBvciB0dXBsZSBkaXNwbGF5LCBsaXN0ICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCB2YWx1ZS4uLn0iLCAie2V4cHJlc3Npb25zLi4ufSIgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdkaXNwbGF5LCBkaWN0aW9uYXJ5IGRpc3BsYXksIHNldCAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ2Rpc3BsYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICctWyBGb290bm90ZXMgXS1cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdbMV0gV2hpbGUgImFicyh4JXkpIDwgYWJzKHkpIiBpcyB0cnVlIG1hdGhlbWF0aWNhbGx5LCAnCisgICAgICAgICAgICAgICAgICAgICAnZm9yIGZsb2F0c1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBpdCBtYXkgbm90IGJlIHRydWUgbnVtZXJpY2FsbHkgZHVlIHRvIHJvdW5kb2ZmLiAgRm9yICcKKyAgICAgICAgICAgICAgICAgICAgICdleGFtcGxlLCBhbmRcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgYXNzdW1pbmcgYSBwbGF0Zm9ybSBvbiB3aGljaCBhIFB5dGhvbiBmbG9hdCBpcyBhbiAnCisgICAgICAgICAgICAgICAgICAgICAnSUVFRSA3NTQgZG91YmxlLVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBwcmVjaXNpb24gbnVtYmVyLCBpbiBvcmRlciB0aGF0ICItMWUtMTAwICUgMWUxMDAiICcKKyAgICAgICAgICAgICAgICAgICAgICdoYXZlIHRoZSBzYW1lXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIHNpZ24gYXMgIjFlMTAwIiwgdGhlIGNvbXB1dGVkIHJlc3VsdCBpcyAiLTFlLTEwMCArICcKKyAgICAgICAgICAgICAgICAgICAgICcxZTEwMCIsIHdoaWNoXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIGlzIG51bWVyaWNhbGx5IGV4YWN0bHkgZXF1YWwgdG8gIjFlMTAwIi4gIFRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnZnVuY3Rpb25cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgIm1hdGguZm1vZCgpIiByZXR1cm5zIGEgcmVzdWx0IHdob3NlIHNpZ24gbWF0Y2hlcyAnCisgICAgICAgICAgICAgICAgICAgICAndGhlIHNpZ24gb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIGZpcnN0IGFyZ3VtZW50IGluc3RlYWQsIGFuZCBzbyByZXR1cm5zICItMWUtMTAwIiBpbiAnCisgICAgICAgICAgICAgICAgICAgICAndGhpcyBjYXNlLlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBXaGljaCBhcHByb2FjaCBpcyBtb3JlIGFwcHJvcHJpYXRlIGRlcGVuZHMgb24gdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdhcHBsaWNhdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdbMl0gSWYgeCBpcyB2ZXJ5IGNsb3NlIHRvIGFuIGV4YWN0IGludGVnZXIgbXVsdGlwbGUgb2YgJworICAgICAgICAgICAgICAgICAgICAgInksIGl0J3NcbiIKKyAgICAgICAgICAgICAgICAgICAgICcgICAgcG9zc2libGUgZm9yICJ4Ly95IiB0byBiZSBvbmUgbGFyZ2VyIHRoYW4gJworICAgICAgICAgICAgICAgICAgICAgJyIoeC14JXkpLy95IiBkdWUgdG9cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgcm91bmRpbmcuICBJbiBzdWNoIGNhc2VzLCBQeXRob24gcmV0dXJucyB0aGUgbGF0dGVyICcKKyAgICAgICAgICAgICAgICAgICAgICdyZXN1bHQsIGluXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIG9yZGVyIHRvIHByZXNlcnZlIHRoYXQgImRpdm1vZCh4LHkpWzBdICogeSArIHggJSB5IiAnCisgICAgICAgICAgICAgICAgICAgICAnYmUgdmVyeSBjbG9zZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICB0byAieCIuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnWzNdIFRoZSBVbmljb2RlIHN0YW5kYXJkIGRpc3Rpbmd1aXNoZXMgYmV0d2VlbiAqY29kZSAnCisgICAgICAgICAgICAgICAgICAgICAncG9pbnRzKiAoZS5nLlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBVKzAwNDEpIGFuZCAqYWJzdHJhY3QgY2hhcmFjdGVycyogKGUuZy4gIkxBVElOICcKKyAgICAgICAgICAgICAgICAgICAgICdDQVBJVEFMIExFVFRFUiBBIikuXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIFdoaWxlIG1vc3QgYWJzdHJhY3QgY2hhcmFjdGVycyBpbiBVbmljb2RlIGFyZSBvbmx5ICcKKyAgICAgICAgICAgICAgICAgICAgICdyZXByZXNlbnRlZFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICB1c2luZyBvbmUgY29kZSBwb2ludCwgdGhlcmUgaXMgYSBudW1iZXIgb2YgYWJzdHJhY3QgJworICAgICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlcnNcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgdGhhdCBjYW4gaW4gYWRkaXRpb24gYmUgcmVwcmVzZW50ZWQgdXNpbmcgYSBzZXF1ZW5jZSAnCisgICAgICAgICAgICAgICAgICAgICAnb2YgbW9yZSB0aGFuXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIG9uZSBjb2RlIHBvaW50LiAgRm9yIGV4YW1wbGUsIHRoZSBhYnN0cmFjdCBjaGFyYWN0ZXIgJworICAgICAgICAgICAgICAgICAgICAgJyJMQVRJTlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQSIgY2FuIGJlIHJlcHJlc2VudGVkIGFzICcKKyAgICAgICAgICAgICAgICAgICAgICdhIHNpbmdsZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICAqcHJlY29tcG9zZWQgY2hhcmFjdGVyKiBhdCBjb2RlIHBvc2l0aW9uIFUrMDBDNywgb3IgJworICAgICAgICAgICAgICAgICAgICAgJ2FzIGEgc2VxdWVuY2VcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgb2YgYSAqYmFzZSBjaGFyYWN0ZXIqIGF0IGNvZGUgcG9zaXRpb24gVSswMDQzIChMQVRJTiAnCisgICAgICAgICAgICAgICAgICAgICAnQ0FQSVRBTFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBMRVRURVIgQyksIGZvbGxvd2VkIGJ5IGEgKmNvbWJpbmluZyBjaGFyYWN0ZXIqIGF0ICcKKyAgICAgICAgICAgICAgICAgICAgICdjb2RlIHBvc2l0aW9uXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIFUrMDMyNyAoQ09NQklOSU5HIENFRElMTEEpLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBUaGUgY29tcGFyaXNvbiBvcGVyYXRvcnMgb24gc3RyaW5ncyBjb21wYXJlIGF0IHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnbGV2ZWwgb2ZcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgVW5pY29kZSBjb2RlIHBvaW50cy4gVGhpcyBtYXkgYmUgY291bnRlci1pbnR1aXRpdmUgJworICAgICAgICAgICAgICAgICAgICAgJ3RvIGh1bWFucy4gIEZvclxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBleGFtcGxlLCAiIlxcdTAwQzciID09ICJcXHUwMDQzXFx1MDMyNyIiIGlzICJGYWxzZSIsICcKKyAgICAgICAgICAgICAgICAgICAgICdldmVuIHRob3VnaCBib3RoXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIHN0cmluZ3MgcmVwcmVzZW50IHRoZSBzYW1lIGFic3RyYWN0IGNoYXJhY3RlciAiTEFUSU4gJworICAgICAgICAgICAgICAgICAgICAgJ0NBUElUQUxcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgTEVUVEVSIEMgV0lUSCBDRURJTExBIi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgVG8gY29tcGFyZSBzdHJpbmdzIGF0IHRoZSBsZXZlbCBvZiBhYnN0cmFjdCAnCisgICAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVycyAodGhhdCBpcyxcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgaW4gYSB3YXkgaW50dWl0aXZlIHRvIGh1bWFucyksIHVzZSAnCisgICAgICAgICAgICAgICAgICAgICAnInVuaWNvZGVkYXRhLm5vcm1hbGl6ZSgpIi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdbNF0gRHVlIHRvIGF1dG9tYXRpYyBnYXJiYWdlLWNvbGxlY3Rpb24sIGZyZWUgbGlzdHMsIGFuZCAnCisgICAgICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIGR5bmFtaWMgbmF0dXJlIG9mIGRlc2NyaXB0b3JzLCB5b3UgbWF5IG5vdGljZSAnCisgICAgICAgICAgICAgICAgICAgICAnc2VlbWluZ2x5IHVudXN1YWxcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgYmVoYXZpb3VyIGluIGNlcnRhaW4gdXNlcyBvZiB0aGUgImlzIiBvcGVyYXRvciwgbGlrZSAnCisgICAgICAgICAgICAgICAgICAgICAndGhvc2VcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgaW52b2x2aW5nIGNvbXBhcmlzb25zIGJldHdlZW4gaW5zdGFuY2UgbWV0aG9kcywgb3IgJworICAgICAgICAgICAgICAgICAgICAgJ2NvbnN0YW50cy5cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgQ2hlY2sgdGhlaXIgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1s1XSBUaGUgIiUiIG9wZXJhdG9yIGlzIGFsc28gdXNlZCBmb3Igc3RyaW5nIGZvcm1hdHRpbmc7ICcKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgc2FtZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBwcmVjZWRlbmNlIGFwcGxpZXMuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnWzZdIFRoZSBwb3dlciBvcGVyYXRvciAiKioiIGJpbmRzIGxlc3MgdGlnaHRseSB0aGFuIGFuICcKKyAgICAgICAgICAgICAgICAgICAgICdhcml0aG1ldGljXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIG9yIGJpdHdpc2UgdW5hcnkgb3BlcmF0b3Igb24gaXRzIHJpZ2h0LCB0aGF0IGlzLCAnCisgICAgICAgICAgICAgICAgICAgICAnIjIqKi0xIiBpcyAiMC41Ii5cbicsCisgJ3Bhc3MnOiAnXG4nCisgICAgICAgICAnVGhlICJwYXNzIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJyAgIHBhc3Nfc3RtdCA6Oj0gInBhc3MiXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnInBhc3MiIGlzIGEgbnVsbCBvcGVyYXRpb24gLS0tIHdoZW4gaXQgaXMgZXhlY3V0ZWQsIG5vdGhpbmcgJworICAgICAgICAgJ2hhcHBlbnMuXG4nCisgICAgICAgICAnSXQgaXMgdXNlZnVsIGFzIGEgcGxhY2Vob2xkZXIgd2hlbiBhIHN0YXRlbWVudCBpcyByZXF1aXJlZFxuJworICAgICAgICAgJ3N5bnRhY3RpY2FsbHksIGJ1dCBubyBjb2RlIG5lZWRzIHRvIGJlIGV4ZWN1dGVkLCBmb3IgZXhhbXBsZTpcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcgICBkZWYgZihhcmcpOiBwYXNzICAgICMgYSBmdW5jdGlvbiB0aGF0IGRvZXMgbm90aGluZyAoeWV0KVxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJyAgIGNsYXNzIEM6IHBhc3MgICAgICAgIyBhIGNsYXNzIHdpdGggbm8gbWV0aG9kcyAoeWV0KVxuJywKKyAncG93ZXInOiAnXG4nCisgICAgICAgICAgJ1RoZSBwb3dlciBvcGVyYXRvclxuJworICAgICAgICAgICcqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1RoZSBwb3dlciBvcGVyYXRvciBiaW5kcyBtb3JlIHRpZ2h0bHkgdGhhbiB1bmFyeSBvcGVyYXRvcnMgb24gaXRzXG4nCisgICAgICAgICAgJ2xlZnQ7IGl0IGJpbmRzIGxlc3MgdGlnaHRseSB0aGFuIHVuYXJ5IG9wZXJhdG9ycyBvbiBpdHMgcmlnaHQuICAnCisgICAgICAgICAgJ1RoZVxuJworICAgICAgICAgICdzeW50YXggaXM6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBwb3dlciA6Oj0gKCBhd2FpdF9leHByIHwgcHJpbWFyeSApIFsiKioiIHVfZXhwcl1cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1RodXMsIGluIGFuIHVucGFyZW50aGVzaXplZCBzZXF1ZW5jZSBvZiBwb3dlciBhbmQgdW5hcnkgb3BlcmF0b3JzLCAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICdvcGVyYXRvcnMgYXJlIGV2YWx1YXRlZCBmcm9tIHJpZ2h0IHRvIGxlZnQgKHRoaXMgZG9lcyBub3QgJworICAgICAgICAgICdjb25zdHJhaW5cbicKKyAgICAgICAgICAndGhlIGV2YWx1YXRpb24gb3JkZXIgZm9yIHRoZSBvcGVyYW5kcyk6ICItMSoqMiIgcmVzdWx0cyBpbiAiLTEiLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnVGhlIHBvd2VyIG9wZXJhdG9yIGhhcyB0aGUgc2FtZSBzZW1hbnRpY3MgYXMgdGhlIGJ1aWx0LWluICJwb3coKSJcbicKKyAgICAgICAgICAnZnVuY3Rpb24sIHdoZW4gY2FsbGVkIHdpdGggdHdvIGFyZ3VtZW50czogaXQgeWllbGRzIGl0cyBsZWZ0ICcKKyAgICAgICAgICAnYXJndW1lbnRcbicKKyAgICAgICAgICAncmFpc2VkIHRvIHRoZSBwb3dlciBvZiBpdHMgcmlnaHQgYXJndW1lbnQuICBUaGUgbnVtZXJpYyBhcmd1bWVudHMgJworICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAnZmlyc3QgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUsIGFuZCB0aGUgcmVzdWx0IGlzIG9mIHRoYXQgdHlwZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0ZvciBpbnQgb3BlcmFuZHMsIHRoZSByZXN1bHQgaGFzIHRoZSBzYW1lIHR5cGUgYXMgdGhlIG9wZXJhbmRzICcKKyAgICAgICAgICAndW5sZXNzXG4nCisgICAgICAgICAgJ3RoZSBzZWNvbmQgYXJndW1lbnQgaXMgbmVnYXRpdmU7IGluIHRoYXQgY2FzZSwgYWxsIGFyZ3VtZW50cyBhcmVcbicKKyAgICAgICAgICAnY29udmVydGVkIHRvIGZsb2F0IGFuZCBhIGZsb2F0IHJlc3VsdCBpcyBkZWxpdmVyZWQuIEZvciBleGFtcGxlLFxuJworICAgICAgICAgICciMTAqKjIiIHJldHVybnMgIjEwMCIsIGJ1dCAiMTAqKi0yIiByZXR1cm5zICIwLjAxIi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1JhaXNpbmcgIjAuMCIgdG8gYSBuZWdhdGl2ZSBwb3dlciByZXN1bHRzIGluIGEgJworICAgICAgICAgICciWmVyb0RpdmlzaW9uRXJyb3IiLlxuJworICAgICAgICAgICdSYWlzaW5nIGEgbmVnYXRpdmUgbnVtYmVyIHRvIGEgZnJhY3Rpb25hbCBwb3dlciByZXN1bHRzIGluIGEgJworICAgICAgICAgICciY29tcGxleCJcbicKKyAgICAgICAgICAnbnVtYmVyLiAoSW4gZWFybGllciB2ZXJzaW9ucyBpdCByYWlzZWQgYSAiVmFsdWVFcnJvciIuKVxuJywKKyAncmFpc2UnOiAnXG4nCisgICAgICAgICAgJ1RoZSAicmFpc2UiIHN0YXRlbWVudFxuJworICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIHJhaXNlX3N0bXQgOjo9ICJyYWlzZSIgW2V4cHJlc3Npb24gWyJmcm9tIiBleHByZXNzaW9uXV1cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0lmIG5vIGV4cHJlc3Npb25zIGFyZSBwcmVzZW50LCAicmFpc2UiIHJlLXJhaXNlcyB0aGUgbGFzdCAnCisgICAgICAgICAgJ2V4Y2VwdGlvblxuJworICAgICAgICAgICd0aGF0IHdhcyBhY3RpdmUgaW4gdGhlIGN1cnJlbnQgc2NvcGUuICBJZiBubyBleGNlcHRpb24gaXMgYWN0aXZlICcKKyAgICAgICAgICAnaW5cbicKKyAgICAgICAgICAndGhlIGN1cnJlbnQgc2NvcGUsIGEgIlJ1bnRpbWVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZCBpbmRpY2F0aW5nXG4nCisgICAgICAgICAgJ3RoYXQgdGhpcyBpcyBhbiBlcnJvci5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ090aGVyd2lzZSwgInJhaXNlIiBldmFsdWF0ZXMgdGhlIGZpcnN0IGV4cHJlc3Npb24gYXMgdGhlIGV4Y2VwdGlvblxuJworICAgICAgICAgICdvYmplY3QuICBJdCBtdXN0IGJlIGVpdGhlciBhIHN1YmNsYXNzIG9yIGFuIGluc3RhbmNlIG9mXG4nCisgICAgICAgICAgJyJCYXNlRXhjZXB0aW9uIi4gSWYgaXQgaXMgYSBjbGFzcywgdGhlIGV4Y2VwdGlvbiBpbnN0YW5jZSB3aWxsIGJlXG4nCisgICAgICAgICAgJ29idGFpbmVkIHdoZW4gbmVlZGVkIGJ5IGluc3RhbnRpYXRpbmcgdGhlIGNsYXNzIHdpdGggbm8gYXJndW1lbnRzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAiVGhlICp0eXBlKiBvZiB0aGUgZXhjZXB0aW9uIGlzIHRoZSBleGNlcHRpb24gaW5zdGFuY2UncyBjbGFzcywgdGhlXG4iCisgICAgICAgICAgJyp2YWx1ZSogaXMgdGhlIGluc3RhbmNlIGl0c2VsZi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0EgdHJhY2ViYWNrIG9iamVjdCBpcyBub3JtYWxseSBjcmVhdGVkIGF1dG9tYXRpY2FsbHkgd2hlbiBhbiAnCisgICAgICAgICAgJ2V4Y2VwdGlvblxuJworICAgICAgICAgICdpcyByYWlzZWQgYW5kIGF0dGFjaGVkIHRvIGl0IGFzIHRoZSAiX190cmFjZWJhY2tfXyIgYXR0cmlidXRlLCAnCisgICAgICAgICAgJ3doaWNoXG4nCisgICAgICAgICAgJ2lzIHdyaXRhYmxlLiBZb3UgY2FuIGNyZWF0ZSBhbiBleGNlcHRpb24gYW5kIHNldCB5b3VyIG93biB0cmFjZWJhY2sgJworICAgICAgICAgICdpblxuJworICAgICAgICAgICdvbmUgc3RlcCB1c2luZyB0aGUgIndpdGhfdHJhY2ViYWNrKCkiIGV4Y2VwdGlvbiBtZXRob2QgKHdoaWNoICcKKyAgICAgICAgICAncmV0dXJuc1xuJworICAgICAgICAgICd0aGUgc2FtZSBleGNlcHRpb24gaW5zdGFuY2UsIHdpdGggaXRzIHRyYWNlYmFjayBzZXQgdG8gaXRzICcKKyAgICAgICAgICAnYXJndW1lbnQpLFxuJworICAgICAgICAgICdsaWtlIHNvOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgcmFpc2UgRXhjZXB0aW9uKCJmb28gb2NjdXJyZWQiKS53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2tvYmopXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdUaGUgImZyb20iIGNsYXVzZSBpcyB1c2VkIGZvciBleGNlcHRpb24gY2hhaW5pbmc6IGlmIGdpdmVuLCB0aGUgJworICAgICAgICAgICdzZWNvbmRcbicKKyAgICAgICAgICAnKmV4cHJlc3Npb24qIG11c3QgYmUgYW5vdGhlciBleGNlcHRpb24gY2xhc3Mgb3IgaW5zdGFuY2UsIHdoaWNoICcKKyAgICAgICAgICAnd2lsbFxuJworICAgICAgICAgICd0aGVuIGJlIGF0dGFjaGVkIHRvIHRoZSByYWlzZWQgZXhjZXB0aW9uIGFzIHRoZSAiX19jYXVzZV9fIiAnCisgICAgICAgICAgJ2F0dHJpYnV0ZVxuJworICAgICAgICAgICcod2hpY2ggaXMgd3JpdGFibGUpLiAgSWYgdGhlIHJhaXNlZCBleGNlcHRpb24gaXMgbm90IGhhbmRsZWQsIGJvdGhcbicKKyAgICAgICAgICAnZXhjZXB0aW9ucyB3aWxsIGJlIHByaW50ZWQ6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICA+Pj4gdHJ5OlxuJworICAgICAgICAgICcgICAuLi4gICAgIHByaW50KDEgLyAwKVxuJworICAgICAgICAgICcgICAuLi4gZXhjZXB0IEV4Y2VwdGlvbiBhcyBleGM6XG4nCisgICAgICAgICAgJyAgIC4uLiAgICAgcmFpc2UgUnVudGltZUVycm9yKCJTb21ldGhpbmcgYmFkIGhhcHBlbmVkIikgZnJvbSBleGNcbicKKyAgICAgICAgICAnICAgLi4uXG4nCisgICAgICAgICAgJyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbicKKyAgICAgICAgICAnICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAyLCBpbiA8bW9kdWxlPlxuJworICAgICAgICAgICcgICBaZXJvRGl2aXNpb25FcnJvcjogaW50IGRpdmlzaW9uIG9yIG1vZHVsbyBieSB6ZXJvXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBUaGUgYWJvdmUgZXhjZXB0aW9uIHdhcyB0aGUgZGlyZWN0IGNhdXNlIG9mIHRoZSBmb2xsb3dpbmcgJworICAgICAgICAgICdleGNlcHRpb246XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4nCisgICAgICAgICAgJyAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgNCwgaW4gPG1vZHVsZT5cbicKKyAgICAgICAgICAnICAgUnVudGltZUVycm9yOiBTb21ldGhpbmcgYmFkIGhhcHBlbmVkXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBIHNpbWlsYXIgbWVjaGFuaXNtIHdvcmtzIGltcGxpY2l0bHkgaWYgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZCAnCisgICAgICAgICAgJ2luc2lkZVxuJworICAgICAgICAgICdhbiBleGNlcHRpb24gaGFuZGxlciBvciBhICJmaW5hbGx5IiBjbGF1c2U6IHRoZSBwcmV2aW91cyBleGNlcHRpb24gJworICAgICAgICAgICdpc1xuJworICAgICAgICAgICd0aGVuIGF0dGFjaGVkIGFzIHRoZSBuZXcgZXhjZXB0aW9uXCdzICJfX2NvbnRleHRfXyIgYXR0cmlidXRlOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgPj4+IHRyeTpcbicKKyAgICAgICAgICAnICAgLi4uICAgICBwcmludCgxIC8gMClcbicKKyAgICAgICAgICAnICAgLi4uIGV4Y2VwdDpcbicKKyAgICAgICAgICAnICAgLi4uICAgICByYWlzZSBSdW50aW1lRXJyb3IoIlNvbWV0aGluZyBiYWQgaGFwcGVuZWQiKVxuJworICAgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgICAnICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuJworICAgICAgICAgICcgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDIsIGluIDxtb2R1bGU+XG4nCisgICAgICAgICAgJyAgIFplcm9EaXZpc2lvbkVycm9yOiBpbnQgZGl2aXNpb24gb3IgbW9kdWxvIGJ5IHplcm9cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIER1cmluZyBoYW5kbGluZyBvZiB0aGUgYWJvdmUgZXhjZXB0aW9uLCBhbm90aGVyIGV4Y2VwdGlvbiAnCisgICAgICAgICAgJ29jY3VycmVkOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuJworICAgICAgICAgICcgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDQsIGluIDxtb2R1bGU+XG4nCisgICAgICAgICAgJyAgIFJ1bnRpbWVFcnJvcjogU29tZXRoaW5nIGJhZCBoYXBwZW5lZFxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiBleGNlcHRpb25zIGNhbiBiZSBmb3VuZCBpbiBzZWN0aW9uXG4nCisgICAgICAgICAgJ0V4Y2VwdGlvbnMsIGFuZCBpbmZvcm1hdGlvbiBhYm91dCBoYW5kbGluZyBleGNlcHRpb25zIGlzIGluICcKKyAgICAgICAgICAnc2VjdGlvblxuJworICAgICAgICAgICdUaGUgdHJ5IHN0YXRlbWVudC5cbicsCisgJ3JldHVybic6ICdcbicKKyAgICAgICAgICAgJ1RoZSAicmV0dXJuIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgcmV0dXJuX3N0bXQgOjo9ICJyZXR1cm4iIFtleHByZXNzaW9uX2xpc3RdXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyJyZXR1cm4iIG1heSBvbmx5IG9jY3VyIHN5bnRhY3RpY2FsbHkgbmVzdGVkIGluIGEgZnVuY3Rpb24gJworICAgICAgICAgICAnZGVmaW5pdGlvbixcbicKKyAgICAgICAgICAgJ25vdCB3aXRoaW4gYSBuZXN0ZWQgY2xhc3MgZGVmaW5pdGlvbi5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnSWYgYW4gZXhwcmVzc2lvbiBsaXN0IGlzIHByZXNlbnQsIGl0IGlzIGV2YWx1YXRlZCwgZWxzZSAiTm9uZSIgaXNcbicKKyAgICAgICAgICAgJ3N1YnN0aXR1dGVkLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcicmV0dXJuIiBsZWF2ZXMgdGhlIGN1cnJlbnQgZnVuY3Rpb24gY2FsbCB3aXRoIHRoZSBleHByZXNzaW9uIGxpc3QgJworICAgICAgICAgICAnKG9yXG4nCisgICAgICAgICAgICciTm9uZSIpIGFzIHJldHVybiB2YWx1ZS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnV2hlbiAicmV0dXJuIiBwYXNzZXMgY29udHJvbCBvdXQgb2YgYSAidHJ5IiBzdGF0ZW1lbnQgd2l0aCBhICcKKyAgICAgICAgICAgJyJmaW5hbGx5IlxuJworICAgICAgICAgICAnY2xhdXNlLCB0aGF0ICJmaW5hbGx5IiBjbGF1c2UgaXMgZXhlY3V0ZWQgYmVmb3JlIHJlYWxseSBsZWF2aW5nICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnZnVuY3Rpb24uXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0luIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uLCB0aGUgInJldHVybiIgc3RhdGVtZW50IGluZGljYXRlcyB0aGF0ICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnZ2VuZXJhdG9yIGlzIGRvbmUgYW5kIHdpbGwgY2F1c2UgIlN0b3BJdGVyYXRpb24iIHRvIGJlIHJhaXNlZC4gJworICAgICAgICAgICAnVGhlXG4nCisgICAgICAgICAgICdyZXR1cm5lZCB2YWx1ZSAoaWYgYW55KSBpcyB1c2VkIGFzIGFuIGFyZ3VtZW50IHRvIGNvbnN0cnVjdFxuJworICAgICAgICAgICAnIlN0b3BJdGVyYXRpb24iIGFuZCBiZWNvbWVzIHRoZSAiU3RvcEl0ZXJhdGlvbi52YWx1ZSIgYXR0cmlidXRlLlxuJywKKyAnc2VxdWVuY2UtdHlwZXMnOiAnXG4nCisgICAgICAgICAgICAgICAgICAgJ0VtdWxhdGluZyBjb250YWluZXIgdHlwZXNcbicKKyAgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGltcGxlbWVudCAnCisgICAgICAgICAgICAgICAgICAgJ2NvbnRhaW5lciBvYmplY3RzLlxuJworICAgICAgICAgICAgICAgICAgICdDb250YWluZXJzIHVzdWFsbHkgYXJlIHNlcXVlbmNlcyAoc3VjaCBhcyBsaXN0cyBvciB0dXBsZXMpICcKKyAgICAgICAgICAgICAgICAgICAnb3IgbWFwcGluZ3NcbicKKyAgICAgICAgICAgICAgICAgICAnKGxpa2UgZGljdGlvbmFyaWVzKSwgYnV0IGNhbiByZXByZXNlbnQgb3RoZXIgY29udGFpbmVycyBhcyAnCisgICAgICAgICAgICAgICAgICAgJ3dlbGwuICBUaGVcbicKKyAgICAgICAgICAgICAgICAgICAnZmlyc3Qgc2V0IG9mIG1ldGhvZHMgaXMgdXNlZCBlaXRoZXIgdG8gZW11bGF0ZSBhIHNlcXVlbmNlICcKKyAgICAgICAgICAgICAgICAgICAnb3IgdG9cbicKKyAgICAgICAgICAgICAgICAgICAnZW11bGF0ZSBhIG1hcHBpbmc7IHRoZSBkaWZmZXJlbmNlIGlzIHRoYXQgZm9yIGEgc2VxdWVuY2UsICcKKyAgICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICAgJ2FsbG93YWJsZSBrZXlzIHNob3VsZCBiZSB0aGUgaW50ZWdlcnMgKmsqIGZvciB3aGljaCAiMCA8PSAnCisgICAgICAgICAgICAgICAgICAgJ2sgPCBOIiB3aGVyZVxuJworICAgICAgICAgICAgICAgICAgICcqTiogaXMgdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2UsIG9yIHNsaWNlIG9iamVjdHMsIHdoaWNoICcKKyAgICAgICAgICAgICAgICAgICAnZGVmaW5lIGFcbicKKyAgICAgICAgICAgICAgICAgICAncmFuZ2Ugb2YgaXRlbXMuICBJdCBpcyBhbHNvIHJlY29tbWVuZGVkIHRoYXQgbWFwcGluZ3MgJworICAgICAgICAgICAgICAgICAgICdwcm92aWRlIHRoZVxuJworICAgICAgICAgICAgICAgICAgICdtZXRob2RzICJrZXlzKCkiLCAidmFsdWVzKCkiLCAiaXRlbXMoKSIsICJnZXQoKSIsICcKKyAgICAgICAgICAgICAgICAgICAnImNsZWFyKCkiLFxuJworICAgICAgICAgICAgICAgICAgICcic2V0ZGVmYXVsdCgpIiwgInBvcCgpIiwgInBvcGl0ZW0oKSIsICJjb3B5KCkiLCBhbmQgJworICAgICAgICAgICAgICAgICAgICcidXBkYXRlKCkiXG4nCisgICAgICAgICAgICAgICAgICAgImJlaGF2aW5nIHNpbWlsYXIgdG8gdGhvc2UgZm9yIFB5dGhvbidzIHN0YW5kYXJkIGRpY3Rpb25hcnkgIgorICAgICAgICAgICAgICAgICAgICdvYmplY3RzLlxuJworICAgICAgICAgICAgICAgICAgICdUaGUgImNvbGxlY3Rpb25zIiBtb2R1bGUgcHJvdmlkZXMgYSAiTXV0YWJsZU1hcHBpbmciICcKKyAgICAgICAgICAgICAgICAgICAnYWJzdHJhY3QgYmFzZVxuJworICAgICAgICAgICAgICAgICAgICdjbGFzcyB0byBoZWxwIGNyZWF0ZSB0aG9zZSBtZXRob2RzIGZyb20gYSBiYXNlIHNldCBvZiAnCisgICAgICAgICAgICAgICAgICAgJyJfX2dldGl0ZW1fXygpIixcbicKKyAgICAgICAgICAgICAgICAgICAnIl9fc2V0aXRlbV9fKCkiLCAiX19kZWxpdGVtX18oKSIsIGFuZCAia2V5cygpIi4gTXV0YWJsZSAnCisgICAgICAgICAgICAgICAgICAgJ3NlcXVlbmNlc1xuJworICAgICAgICAgICAgICAgICAgICdzaG91bGQgcHJvdmlkZSBtZXRob2RzICJhcHBlbmQoKSIsICJjb3VudCgpIiwgImluZGV4KCkiLCAnCisgICAgICAgICAgICAgICAgICAgJyJleHRlbmQoKSIsXG4nCisgICAgICAgICAgICAgICAgICAgJyJpbnNlcnQoKSIsICJwb3AoKSIsICJyZW1vdmUoKSIsICJyZXZlcnNlKCkiIGFuZCAic29ydCgpIiwgJworICAgICAgICAgICAgICAgICAgICdsaWtlIFB5dGhvblxuJworICAgICAgICAgICAgICAgICAgICdzdGFuZGFyZCBsaXN0IG9iamVjdHMuICBGaW5hbGx5LCBzZXF1ZW5jZSB0eXBlcyBzaG91bGQgJworICAgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRcbicKKyAgICAgICAgICAgICAgICAgICAnYWRkaXRpb24gKG1lYW5pbmcgY29uY2F0ZW5hdGlvbikgYW5kIG11bHRpcGxpY2F0aW9uICcKKyAgICAgICAgICAgICAgICAgICAnKG1lYW5pbmdcbicKKyAgICAgICAgICAgICAgICAgICAncmVwZXRpdGlvbikgYnkgZGVmaW5pbmcgdGhlIG1ldGhvZHMgIl9fYWRkX18oKSIsICcKKyAgICAgICAgICAgICAgICAgICAnIl9fcmFkZF9fKCkiLFxuJworICAgICAgICAgICAgICAgICAgICciX19pYWRkX18oKSIsICJfX211bF9fKCkiLCAiX19ybXVsX18oKSIgYW5kICJfX2ltdWxfXygpIiAnCisgICAgICAgICAgICAgICAgICAgJ2Rlc2NyaWJlZFxuJworICAgICAgICAgICAgICAgICAgICdiZWxvdzsgdGhleSBzaG91bGQgbm90IGRlZmluZSBvdGhlciBudW1lcmljYWwgb3BlcmF0b3JzLiAgJworICAgICAgICAgICAgICAgICAgICdJdCBpc1xuJworICAgICAgICAgICAgICAgICAgICdyZWNvbW1lbmRlZCB0aGF0IGJvdGggbWFwcGluZ3MgYW5kIHNlcXVlbmNlcyBpbXBsZW1lbnQgJworICAgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnIl9fY29udGFpbnNfXygpIiBtZXRob2QgdG8gYWxsb3cgZWZmaWNpZW50IHVzZSBvZiB0aGUgImluIiAnCisgICAgICAgICAgICAgICAgICAgJ29wZXJhdG9yO1xuJworICAgICAgICAgICAgICAgICAgICdmb3IgbWFwcGluZ3MsICJpbiIgc2hvdWxkIHNlYXJjaCB0aGUgbWFwcGluZ1wncyBrZXlzOyBmb3IgJworICAgICAgICAgICAgICAgICAgICdzZXF1ZW5jZXMsIGl0XG4nCisgICAgICAgICAgICAgICAgICAgJ3Nob3VsZCBzZWFyY2ggdGhyb3VnaCB0aGUgdmFsdWVzLiAgSXQgaXMgZnVydGhlciAnCisgICAgICAgICAgICAgICAgICAgJ3JlY29tbWVuZGVkIHRoYXQgYm90aFxuJworICAgICAgICAgICAgICAgICAgICdtYXBwaW5ncyBhbmQgc2VxdWVuY2VzIGltcGxlbWVudCB0aGUgIl9faXRlcl9fKCkiIG1ldGhvZCAnCisgICAgICAgICAgICAgICAgICAgJ3RvIGFsbG93XG4nCisgICAgICAgICAgICAgICAgICAgJ2VmZmljaWVudCBpdGVyYXRpb24gdGhyb3VnaCB0aGUgY29udGFpbmVyOyBmb3IgbWFwcGluZ3MsICcKKyAgICAgICAgICAgICAgICAgICAnIl9faXRlcl9fKCkiXG4nCisgICAgICAgICAgICAgICAgICAgJ3Nob3VsZCBiZSB0aGUgc2FtZSBhcyAia2V5cygpIjsgZm9yIHNlcXVlbmNlcywgaXQgc2hvdWxkICcKKyAgICAgICAgICAgICAgICAgICAnaXRlcmF0ZVxuJworICAgICAgICAgICAgICAgICAgICd0aHJvdWdoIHRoZSB2YWx1ZXMuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19sZW5fXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gImxlbigpIi4gICcKKyAgICAgICAgICAgICAgICAgICAnU2hvdWxkIHJldHVyblxuJworICAgICAgICAgICAgICAgICAgICcgICB0aGUgbGVuZ3RoIG9mIHRoZSBvYmplY3QsIGFuIGludGVnZXIgIj49IiAwLiAgQWxzbywgYW4gJworICAgICAgICAgICAgICAgICAgICdvYmplY3QgdGhhdFxuJworICAgICAgICAgICAgICAgICAgICcgICBkb2VzblwndCBkZWZpbmUgYSAiX19ib29sX18oKSIgbWV0aG9kIGFuZCB3aG9zZSAnCisgICAgICAgICAgICAgICAgICAgJyJfX2xlbl9fKCkiIG1ldGhvZFxuJworICAgICAgICAgICAgICAgICAgICcgICByZXR1cm5zIHplcm8gaXMgY29uc2lkZXJlZCB0byBiZSBmYWxzZSBpbiBhIEJvb2xlYW4gJworICAgICAgICAgICAgICAgICAgICdjb250ZXh0LlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbGVuZ3RoX2hpbnRfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCAib3BlcmF0b3IubGVuZ3RoX2hpbnQoKSIuIFNob3VsZCAnCisgICAgICAgICAgICAgICAgICAgJ3JldHVybiBhblxuJworICAgICAgICAgICAgICAgICAgICcgICBlc3RpbWF0ZWQgbGVuZ3RoIGZvciB0aGUgb2JqZWN0ICh3aGljaCBtYXkgYmUgZ3JlYXRlciAnCisgICAgICAgICAgICAgICAgICAgJ29yIGxlc3MgdGhhblxuJworICAgICAgICAgICAgICAgICAgICcgICB0aGUgYWN0dWFsIGxlbmd0aCkuIFRoZSBsZW5ndGggbXVzdCBiZSBhbiBpbnRlZ2VyICI+PSIgJworICAgICAgICAgICAgICAgICAgICcwLiBUaGlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCBpcyBwdXJlbHkgYW4gb3B0aW1pemF0aW9uIGFuZCBpcyBuZXZlciByZXF1aXJlZCAnCisgICAgICAgICAgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICAgICAgICAgICcgICBjb3JyZWN0bmVzcy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuNC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ05vdGU6IFNsaWNpbmcgaXMgZG9uZSBleGNsdXNpdmVseSB3aXRoIHRoZSBmb2xsb3dpbmcgdGhyZWUgJworICAgICAgICAgICAgICAgICAgICdtZXRob2RzLlxuJworICAgICAgICAgICAgICAgICAgICcgIEEgY2FsbCBsaWtlXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICAgIGFbMToyXSA9IGJcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgaXMgdHJhbnNsYXRlZCB0b1xuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICBhW3NsaWNlKDEsIDIsIE5vbmUpXSA9IGJcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgYW5kIHNvIGZvcnRoLiAgTWlzc2luZyBzbGljZSBpdGVtcyBhcmUgYWx3YXlzIGZpbGxlZCBpbiAnCisgICAgICAgICAgICAgICAgICAgJ3dpdGggIk5vbmUiLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZ2V0aXRlbV9fKHNlbGYsIGtleSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgZXZhbHVhdGlvbiBvZiAic2VsZltrZXldIi4gRm9yICcKKyAgICAgICAgICAgICAgICAgICAnc2VxdWVuY2UgdHlwZXMsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRoZSBhY2NlcHRlZCBrZXlzIHNob3VsZCBiZSBpbnRlZ2VycyBhbmQgc2xpY2UgJworICAgICAgICAgICAgICAgICAgICdvYmplY3RzLiAgTm90ZSB0aGF0XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRoZSBzcGVjaWFsIGludGVycHJldGF0aW9uIG9mIG5lZ2F0aXZlIGluZGV4ZXMgKGlmIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ2NsYXNzIHdpc2hlc1xuJworICAgICAgICAgICAgICAgICAgICcgICB0byBlbXVsYXRlIGEgc2VxdWVuY2UgdHlwZSkgaXMgdXAgdG8gdGhlICcKKyAgICAgICAgICAgICAgICAgICAnIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC4gSWZcbicKKyAgICAgICAgICAgICAgICAgICAnICAgKmtleSogaXMgb2YgYW4gaW5hcHByb3ByaWF0ZSB0eXBlLCAiVHlwZUVycm9yIiBtYXkgYmUgJworICAgICAgICAgICAgICAgICAgICdyYWlzZWQ7IGlmIG9mXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGEgdmFsdWUgb3V0c2lkZSB0aGUgc2V0IG9mIGluZGV4ZXMgZm9yIHRoZSBzZXF1ZW5jZSAnCisgICAgICAgICAgICAgICAgICAgJyhhZnRlciBhbnlcbicKKyAgICAgICAgICAgICAgICAgICAnICAgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZiBuZWdhdGl2ZSB2YWx1ZXMpLCAnCisgICAgICAgICAgICAgICAgICAgJyJJbmRleEVycm9yIiBzaG91bGQgYmVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcmFpc2VkLiBGb3IgbWFwcGluZyB0eXBlcywgaWYgKmtleSogaXMgbWlzc2luZyAobm90IGluICcKKyAgICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNvbnRhaW5lciksICJLZXlFcnJvciIgc2hvdWxkIGJlIHJhaXNlZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIE5vdGU6ICJmb3IiIGxvb3BzIGV4cGVjdCB0aGF0IGFuICJJbmRleEVycm9yIiB3aWxsIGJlICcKKyAgICAgICAgICAgICAgICAgICAncmFpc2VkIGZvclxuJworICAgICAgICAgICAgICAgICAgICcgICAgIGlsbGVnYWwgaW5kZXhlcyB0byBhbGxvdyBwcm9wZXIgZGV0ZWN0aW9uIG9mIHRoZSBlbmQgJworICAgICAgICAgICAgICAgICAgICdvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICBzZXF1ZW5jZS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX21pc3NpbmdfXyhzZWxmLCBrZXkpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgYnkgImRpY3QiLiJfX2dldGl0ZW1fXygpIiB0byBpbXBsZW1lbnQgJworICAgICAgICAgICAgICAgICAgICcic2VsZltrZXldIiBmb3IgZGljdFxuJworICAgICAgICAgICAgICAgICAgICcgICBzdWJjbGFzc2VzIHdoZW4ga2V5IGlzIG5vdCBpbiB0aGUgZGljdGlvbmFyeS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCBhc3NpZ25tZW50IHRvICJzZWxmW2tleV0iLiAgU2FtZSAnCisgICAgICAgICAgICAgICAgICAgJ25vdGUgYXMgZm9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJfX2dldGl0ZW1fXygpIi4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgZm9yICcKKyAgICAgICAgICAgICAgICAgICAnbWFwcGluZ3MgaWZcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhlIG9iamVjdHMgc3VwcG9ydCBjaGFuZ2VzIHRvIHRoZSB2YWx1ZXMgZm9yIGtleXMsIG9yICcKKyAgICAgICAgICAgICAgICAgICAnaWYgbmV3IGtleXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY2FuIGJlIGFkZGVkLCBvciBmb3Igc2VxdWVuY2VzIGlmIGVsZW1lbnRzIGNhbiBiZSAnCisgICAgICAgICAgICAgICAgICAgJ3JlcGxhY2VkLiAgVGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHNhbWUgZXhjZXB0aW9ucyBzaG91bGQgYmUgcmFpc2VkIGZvciBpbXByb3BlciAqa2V5KiAnCisgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcyBhcyBmb3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhlICJfX2dldGl0ZW1fXygpIiBtZXRob2QuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19kZWxpdGVtX18oc2VsZiwga2V5KVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCBkZWxldGlvbiBvZiAic2VsZltrZXldIi4gIFNhbWUgbm90ZSAnCisgICAgICAgICAgICAgICAgICAgJ2FzIGZvclxuJworICAgICAgICAgICAgICAgICAgICcgICAiX19nZXRpdGVtX18oKSIuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGZvciAnCisgICAgICAgICAgICAgICAgICAgJ21hcHBpbmdzIGlmXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRoZSBvYmplY3RzIHN1cHBvcnQgcmVtb3ZhbCBvZiBrZXlzLCBvciBmb3Igc2VxdWVuY2VzICcKKyAgICAgICAgICAgICAgICAgICAnaWYgZWxlbWVudHNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY2FuIGJlIHJlbW92ZWQgZnJvbSB0aGUgc2VxdWVuY2UuICBUaGUgc2FtZSBleGNlcHRpb25zICcKKyAgICAgICAgICAgICAgICAgICAnc2hvdWxkIGJlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHJhaXNlZCBmb3IgaW1wcm9wZXIgKmtleSogdmFsdWVzIGFzIGZvciB0aGUgJworICAgICAgICAgICAgICAgICAgICciX19nZXRpdGVtX18oKSIgbWV0aG9kLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faXRlcl9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiBhbiBpdGVyYXRvciBpcyByZXF1aXJlZCBmb3IgJworICAgICAgICAgICAgICAgICAgICdhIGNvbnRhaW5lci5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgVGhpcyBtZXRob2Qgc2hvdWxkIHJldHVybiBhIG5ldyBpdGVyYXRvciBvYmplY3QgdGhhdCAnCisgICAgICAgICAgICAgICAgICAgJ2NhbiBpdGVyYXRlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG92ZXIgYWxsIHRoZSBvYmplY3RzIGluIHRoZSBjb250YWluZXIuICBGb3IgbWFwcGluZ3MsICcKKyAgICAgICAgICAgICAgICAgICAnaXQgc2hvdWxkXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGl0ZXJhdGUgb3ZlciB0aGUga2V5cyBvZiB0aGUgY29udGFpbmVyLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgSXRlcmF0b3Igb2JqZWN0cyBhbHNvIG5lZWQgdG8gaW1wbGVtZW50IHRoaXMgbWV0aG9kOyAnCisgICAgICAgICAgICAgICAgICAgJ3RoZXkgYXJlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHJlcXVpcmVkIHRvIHJldHVybiB0aGVtc2VsdmVzLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gJworICAgICAgICAgICAgICAgICAgICdpdGVyYXRvclxuJworICAgICAgICAgICAgICAgICAgICcgICBvYmplY3RzLCBzZWUgSXRlcmF0b3IgVHlwZXMuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19yZXZlcnNlZF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgKGlmIHByZXNlbnQpIGJ5IHRoZSAicmV2ZXJzZWQoKSIgYnVpbHQtaW4gdG8gJworICAgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcmV2ZXJzZSBpdGVyYXRpb24uICBJdCBzaG91bGQgcmV0dXJuIGEgbmV3IGl0ZXJhdG9yICcKKyAgICAgICAgICAgICAgICAgICAnb2JqZWN0IHRoYXRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgaXRlcmF0ZXMgb3ZlciBhbGwgdGhlIG9iamVjdHMgaW4gdGhlIGNvbnRhaW5lciBpbiAnCisgICAgICAgICAgICAgICAgICAgJ3JldmVyc2Ugb3JkZXIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBJZiB0aGUgIl9fcmV2ZXJzZWRfXygpIiBtZXRob2QgaXMgbm90IHByb3ZpZGVkLCB0aGUgJworICAgICAgICAgICAgICAgICAgICcicmV2ZXJzZWQoKSJcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYnVpbHQtaW4gd2lsbCBmYWxsIGJhY2sgdG8gdXNpbmcgdGhlIHNlcXVlbmNlIHByb3RvY29sICcKKyAgICAgICAgICAgICAgICAgICAnKCJfX2xlbl9fKCkiXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFuZCAiX19nZXRpdGVtX18oKSIpLiAgT2JqZWN0cyB0aGF0IHN1cHBvcnQgdGhlICcKKyAgICAgICAgICAgICAgICAgICAnc2VxdWVuY2UgcHJvdG9jb2xcbicKKyAgICAgICAgICAgICAgICAgICAnICAgc2hvdWxkIG9ubHkgcHJvdmlkZSAiX19yZXZlcnNlZF9fKCkiIGlmIHRoZXkgY2FuICcKKyAgICAgICAgICAgICAgICAgICAncHJvdmlkZSBhblxuJworICAgICAgICAgICAgICAgICAgICcgICBpbXBsZW1lbnRhdGlvbiB0aGF0IGlzIG1vcmUgZWZmaWNpZW50IHRoYW4gdGhlIG9uZSAnCisgICAgICAgICAgICAgICAgICAgJ3Byb3ZpZGVkIGJ5XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJyZXZlcnNlZCgpIi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ1RoZSBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzICgiaW4iIGFuZCAibm90IGluIikgYXJlICcKKyAgICAgICAgICAgICAgICAgICAnbm9ybWFsbHlcbicKKyAgICAgICAgICAgICAgICAgICAnaW1wbGVtZW50ZWQgYXMgYW4gaXRlcmF0aW9uIHRocm91Z2ggYSBzZXF1ZW5jZS4gIEhvd2V2ZXIsICcKKyAgICAgICAgICAgICAgICAgICAnY29udGFpbmVyXG4nCisgICAgICAgICAgICAgICAgICAgJ29iamVjdHMgY2FuIHN1cHBseSB0aGUgZm9sbG93aW5nIHNwZWNpYWwgbWV0aG9kIHdpdGggYSAnCisgICAgICAgICAgICAgICAgICAgJ21vcmUgZWZmaWNpZW50XG4nCisgICAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudGF0aW9uLCB3aGljaCBhbHNvIGRvZXMgbm90IHJlcXVpcmUgdGhlIG9iamVjdCBiZSAnCisgICAgICAgICAgICAgICAgICAgJ2Egc2VxdWVuY2UuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19jb250YWluc19fKHNlbGYsIGl0ZW0pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50IG1lbWJlcnNoaXAgdGVzdCBvcGVyYXRvcnMuICBTaG91bGQgJworICAgICAgICAgICAgICAgICAgICdyZXR1cm4gdHJ1ZVxuJworICAgICAgICAgICAgICAgICAgICcgICBpZiAqaXRlbSogaXMgaW4gKnNlbGYqLCBmYWxzZSBvdGhlcndpc2UuICBGb3IgbWFwcGluZyAnCisgICAgICAgICAgICAgICAgICAgJ29iamVjdHMsIHRoaXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgc2hvdWxkIGNvbnNpZGVyIHRoZSBrZXlzIG9mIHRoZSBtYXBwaW5nIHJhdGhlciB0aGFuIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcyBvclxuJworICAgICAgICAgICAgICAgICAgICcgICB0aGUga2V5LWl0ZW0gcGFpcnMuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBGb3Igb2JqZWN0cyB0aGF0IGRvblwndCBkZWZpbmUgIl9fY29udGFpbnNfXygpIiwgdGhlICcKKyAgICAgICAgICAgICAgICAgICAnbWVtYmVyc2hpcCB0ZXN0XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGZpcnN0IHRyaWVzIGl0ZXJhdGlvbiB2aWEgIl9faXRlcl9fKCkiLCB0aGVuIHRoZSBvbGQgJworICAgICAgICAgICAgICAgICAgICdzZXF1ZW5jZVxuJworICAgICAgICAgICAgICAgICAgICcgICBpdGVyYXRpb24gcHJvdG9jb2wgdmlhICJfX2dldGl0ZW1fXygpIiwgc2VlIHRoaXMgJworICAgICAgICAgICAgICAgICAgICdzZWN0aW9uIGluIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBsYW5ndWFnZSByZWZlcmVuY2UuXG4nLAorICdzaGlmdGluZyc6ICdcbicKKyAgICAgICAgICAgICAnU2hpZnRpbmcgb3BlcmF0aW9uc1xuJworICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgc2hpZnRpbmcgb3BlcmF0aW9ucyBoYXZlIGxvd2VyIHByaW9yaXR5IHRoYW4gdGhlIGFyaXRobWV0aWNcbicKKyAgICAgICAgICAgICAnb3BlcmF0aW9uczpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIHNoaWZ0X2V4cHIgOjo9IGFfZXhwciB8IHNoaWZ0X2V4cHIgKCAiPDwiIHwgIj4+IiApIGFfZXhwclxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlc2Ugb3BlcmF0b3JzIGFjY2VwdCBpbnRlZ2VycyBhcyBhcmd1bWVudHMuICBUaGV5IHNoaWZ0IHRoZSAnCisgICAgICAgICAgICAgJ2ZpcnN0XG4nCisgICAgICAgICAgICAgJ2FyZ3VtZW50IHRvIHRoZSBsZWZ0IG9yIHJpZ2h0IGJ5IHRoZSBudW1iZXIgb2YgYml0cyBnaXZlbiBieSAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICdzZWNvbmQgYXJndW1lbnQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBIHJpZ2h0IHNoaWZ0IGJ5ICpuKiBiaXRzIGlzIGRlZmluZWQgYXMgZmxvb3IgZGl2aXNpb24gYnkgJworICAgICAgICAgICAgICcicG93KDIsbikiLlxuJworICAgICAgICAgICAgICdBIGxlZnQgc2hpZnQgYnkgKm4qIGJpdHMgaXMgZGVmaW5lZCBhcyBtdWx0aXBsaWNhdGlvbiB3aXRoICcKKyAgICAgICAgICAgICAnInBvdygyLG4pIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ05vdGU6IEluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLCB0aGUgcmlnaHQtaGFuZCBvcGVyYW5kIGlzXG4nCisgICAgICAgICAgICAgJyAgcmVxdWlyZWQgdG8gYmUgYXQgbW9zdCAic3lzLm1heHNpemUiLiAgSWYgdGhlIHJpZ2h0LWhhbmQgJworICAgICAgICAgICAgICdvcGVyYW5kIGlzXG4nCisgICAgICAgICAgICAgJyAgbGFyZ2VyIHRoYW4gInN5cy5tYXhzaXplIiBhbiAiT3ZlcmZsb3dFcnJvciIgZXhjZXB0aW9uIGlzICcKKyAgICAgICAgICAgICAncmFpc2VkLlxuJywKKyAnc2xpY2luZ3MnOiAnXG4nCisgICAgICAgICAgICAgJ1NsaWNpbmdzXG4nCisgICAgICAgICAgICAgJyoqKioqKioqXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBIHNsaWNpbmcgc2VsZWN0cyBhIHJhbmdlIG9mIGl0ZW1zIGluIGEgc2VxdWVuY2Ugb2JqZWN0IChlLmcuLCAnCisgICAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgICAnc3RyaW5nLCB0dXBsZSBvciBsaXN0KS4gIFNsaWNpbmdzIG1heSBiZSB1c2VkIGFzIGV4cHJlc3Npb25zIG9yICcKKyAgICAgICAgICAgICAnYXNcbicKKyAgICAgICAgICAgICAndGFyZ2V0cyBpbiBhc3NpZ25tZW50IG9yICJkZWwiIHN0YXRlbWVudHMuICBUaGUgc3ludGF4IGZvciBhICcKKyAgICAgICAgICAgICAnc2xpY2luZzpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIHNsaWNpbmcgICAgICA6Oj0gcHJpbWFyeSAiWyIgc2xpY2VfbGlzdCAiXSJcbicKKyAgICAgICAgICAgICAnICAgc2xpY2VfbGlzdCAgIDo6PSBzbGljZV9pdGVtICgiLCIgc2xpY2VfaXRlbSkqIFsiLCJdXG4nCisgICAgICAgICAgICAgJyAgIHNsaWNlX2l0ZW0gICA6Oj0gZXhwcmVzc2lvbiB8IHByb3Blcl9zbGljZVxuJworICAgICAgICAgICAgICcgICBwcm9wZXJfc2xpY2UgOjo9IFtsb3dlcl9ib3VuZF0gIjoiIFt1cHBlcl9ib3VuZF0gWyAiOiIgJworICAgICAgICAgICAgICdbc3RyaWRlXSBdXG4nCisgICAgICAgICAgICAgJyAgIGxvd2VyX2JvdW5kICA6Oj0gZXhwcmVzc2lvblxuJworICAgICAgICAgICAgICcgICB1cHBlcl9ib3VuZCAgOjo9IGV4cHJlc3Npb25cbicKKyAgICAgICAgICAgICAnICAgc3RyaWRlICAgICAgIDo6PSBleHByZXNzaW9uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGVyZSBpcyBhbWJpZ3VpdHkgaW4gdGhlIGZvcm1hbCBzeW50YXggaGVyZTogYW55dGhpbmcgdGhhdCAnCisgICAgICAgICAgICAgJ2xvb2tzIGxpa2VcbicKKyAgICAgICAgICAgICAnYW4gZXhwcmVzc2lvbiBsaXN0IGFsc28gbG9va3MgbGlrZSBhIHNsaWNlIGxpc3QsIHNvIGFueSAnCisgICAgICAgICAgICAgJ3N1YnNjcmlwdGlvblxuJworICAgICAgICAgICAgICdjYW4gYmUgaW50ZXJwcmV0ZWQgYXMgYSBzbGljaW5nLiAgUmF0aGVyIHRoYW4gZnVydGhlciAnCisgICAgICAgICAgICAgJ2NvbXBsaWNhdGluZyB0aGVcbicKKyAgICAgICAgICAgICAnc3ludGF4LCB0aGlzIGlzIGRpc2FtYmlndWF0ZWQgYnkgZGVmaW5pbmcgdGhhdCBpbiB0aGlzIGNhc2UgdGhlXG4nCisgICAgICAgICAgICAgJ2ludGVycHJldGF0aW9uIGFzIGEgc3Vic2NyaXB0aW9uIHRha2VzIHByaW9yaXR5IG92ZXIgdGhlXG4nCisgICAgICAgICAgICAgJ2ludGVycHJldGF0aW9uIGFzIGEgc2xpY2luZyAodGhpcyBpcyB0aGUgY2FzZSBpZiB0aGUgc2xpY2UgbGlzdFxuJworICAgICAgICAgICAgICdjb250YWlucyBubyBwcm9wZXIgc2xpY2UpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIHNlbWFudGljcyBmb3IgYSBzbGljaW5nIGFyZSBhcyBmb2xsb3dzLiAgVGhlIHByaW1hcnkgaXMgJworICAgICAgICAgICAgICdpbmRleGVkXG4nCisgICAgICAgICAgICAgJyh1c2luZyB0aGUgc2FtZSAiX19nZXRpdGVtX18oKSIgbWV0aG9kIGFzIG5vcm1hbCBzdWJzY3JpcHRpb24pICcKKyAgICAgICAgICAgICAnd2l0aCBhXG4nCisgICAgICAgICAgICAgJ2tleSB0aGF0IGlzIGNvbnN0cnVjdGVkIGZyb20gdGhlIHNsaWNlIGxpc3QsIGFzIGZvbGxvd3MuICBJZiB0aGUgJworICAgICAgICAgICAgICdzbGljZVxuJworICAgICAgICAgICAgICdsaXN0IGNvbnRhaW5zIGF0IGxlYXN0IG9uZSBjb21tYSwgdGhlIGtleSBpcyBhIHR1cGxlIGNvbnRhaW5pbmcgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnY29udmVyc2lvbiBvZiB0aGUgc2xpY2UgaXRlbXM7IG90aGVyd2lzZSwgdGhlIGNvbnZlcnNpb24gb2YgdGhlICcKKyAgICAgICAgICAgICAnbG9uZVxuJworICAgICAgICAgICAgICdzbGljZSBpdGVtIGlzIHRoZSBrZXkuICBUaGUgY29udmVyc2lvbiBvZiBhIHNsaWNlIGl0ZW0gdGhhdCBpcyAnCisgICAgICAgICAgICAgJ2FuXG4nCisgICAgICAgICAgICAgJ2V4cHJlc3Npb24gaXMgdGhhdCBleHByZXNzaW9uLiAgVGhlIGNvbnZlcnNpb24gb2YgYSBwcm9wZXIgc2xpY2UgJworICAgICAgICAgICAgICdpcyBhXG4nCisgICAgICAgICAgICAgJ3NsaWNlIG9iamVjdCAoc2VlIHNlY3Rpb24gVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KSB3aG9zZSAnCisgICAgICAgICAgICAgJyJzdGFydCIsXG4nCisgICAgICAgICAgICAgJyJzdG9wIiBhbmQgInN0ZXAiIGF0dHJpYnV0ZXMgYXJlIHRoZSB2YWx1ZXMgb2YgdGhlIGV4cHJlc3Npb25zICcKKyAgICAgICAgICAgICAnZ2l2ZW5cbicKKyAgICAgICAgICAgICAnYXMgbG93ZXIgYm91bmQsIHVwcGVyIGJvdW5kIGFuZCBzdHJpZGUsIHJlc3BlY3RpdmVseSwgJworICAgICAgICAgICAgICdzdWJzdGl0dXRpbmdcbicKKyAgICAgICAgICAgICAnIk5vbmUiIGZvciBtaXNzaW5nIGV4cHJlc3Npb25zLlxuJywKKyAnc3BlY2lhbGF0dHJzJzogJ1xuJworICAgICAgICAgICAgICAgICAnU3BlY2lhbCBBdHRyaWJ1dGVzXG4nCisgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIGltcGxlbWVudGF0aW9uIGFkZHMgYSBmZXcgc3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlcyAnCisgICAgICAgICAgICAgICAgICd0byBzZXZlcmFsXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QgdHlwZXMsIHdoZXJlIHRoZXkgYXJlIHJlbGV2YW50LiAgU29tZSBvZiB0aGVzZSBhcmUgJworICAgICAgICAgICAgICAgICAnbm90IHJlcG9ydGVkXG4nCisgICAgICAgICAgICAgICAgICdieSB0aGUgImRpcigpIiBidWlsdC1pbiBmdW5jdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZGljdF9fXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIEEgZGljdGlvbmFyeSBvciBvdGhlciBtYXBwaW5nIG9iamVjdCB1c2VkIHRvIHN0b3JlIGFuICcKKyAgICAgICAgICAgICAgICAgIm9iamVjdCdzXG4iCisgICAgICAgICAgICAgICAgICcgICAod3JpdGFibGUpIGF0dHJpYnV0ZXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ2luc3RhbmNlLl9fY2xhc3NfX1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGUgY2xhc3MgdG8gd2hpY2ggYSBjbGFzcyBpbnN0YW5jZSBiZWxvbmdzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcy5fX2Jhc2VzX19cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhlIHR1cGxlIG9mIGJhc2UgY2xhc3NlcyBvZiBhIGNsYXNzIG9iamVjdC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnZGVmaW5pdGlvbi5fX25hbWVfX1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGUgbmFtZSBvZiB0aGUgY2xhc3MsIGZ1bmN0aW9uLCBtZXRob2QsIGRlc2NyaXB0b3IsIG9yICcKKyAgICAgICAgICAgICAgICAgJ2dlbmVyYXRvclxuJworICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2UuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ2RlZmluaXRpb24uX19xdWFsbmFtZV9fXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoZSAqcXVhbGlmaWVkIG5hbWUqIG9mIHRoZSBjbGFzcywgZnVuY3Rpb24sIG1ldGhvZCwgJworICAgICAgICAgICAgICAgICAnZGVzY3JpcHRvciwgb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgIGdlbmVyYXRvciBpbnN0YW5jZS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMy4zLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcy5fX21yb19fXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoaXMgYXR0cmlidXRlIGlzIGEgdHVwbGUgb2YgY2xhc3NlcyB0aGF0IGFyZSBjb25zaWRlcmVkICcKKyAgICAgICAgICAgICAgICAgJ3doZW5cbicKKyAgICAgICAgICAgICAgICAgJyAgIGxvb2tpbmcgZm9yIGJhc2UgY2xhc3NlcyBkdXJpbmcgbWV0aG9kIHJlc29sdXRpb24uXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ2NsYXNzLm1ybygpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoaXMgbWV0aG9kIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGEgbWV0YWNsYXNzIHRvIGN1c3RvbWl6ZSAnCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCByZXNvbHV0aW9uIG9yZGVyIGZvciBpdHMgaW5zdGFuY2VzLiAgSXQgaXMgY2FsbGVkICcKKyAgICAgICAgICAgICAgICAgJ2F0IGNsYXNzXG4nCisgICAgICAgICAgICAgICAgICcgICBpbnN0YW50aWF0aW9uLCBhbmQgaXRzIHJlc3VsdCBpcyBzdG9yZWQgaW4gIl9fbXJvX18iLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcy5fX3N1YmNsYXNzZXNfXygpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIEVhY2ggY2xhc3Mga2VlcHMgYSBsaXN0IG9mIHdlYWsgcmVmZXJlbmNlcyB0byBpdHMgJworICAgICAgICAgICAgICAgICAnaW1tZWRpYXRlXG4nCisgICAgICAgICAgICAgICAgICcgICBzdWJjbGFzc2VzLiAgVGhpcyBtZXRob2QgcmV0dXJucyBhIGxpc3Qgb2YgYWxsIHRob3NlICcKKyAgICAgICAgICAgICAgICAgJ3JlZmVyZW5jZXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIHN0aWxsIGFsaXZlLiBFeGFtcGxlOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICA+Pj4gaW50Ll9fc3ViY2xhc3Nlc19fKClcbicKKyAgICAgICAgICAgICAgICAgIiAgICAgIFs8Y2xhc3MgJ2Jvb2wnPl1cbiIKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnLVsgRm9vdG5vdGVzIF0tXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1sxXSBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIHRoZXNlIHNwZWNpYWwgbWV0aG9kcyBtYXkgYmUgJworICAgICAgICAgICAgICAgICAnZm91bmRcbicKKyAgICAgICAgICAgICAgICAgJyAgICBpbiB0aGUgUHl0aG9uIFJlZmVyZW5jZSBNYW51YWwgKEJhc2ljIGN1c3RvbWl6YXRpb24pLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdbMl0gQXMgYSBjb25zZXF1ZW5jZSwgdGhlIGxpc3QgIlsxLCAyXSIgaXMgY29uc2lkZXJlZCBlcXVhbCAnCisgICAgICAgICAgICAgICAgICd0b1xuJworICAgICAgICAgICAgICAgICAnICAgICJbMS4wLCAyLjBdIiwgYW5kIHNpbWlsYXJseSBmb3IgdHVwbGVzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICJbM10gVGhleSBtdXN0IGhhdmUgc2luY2UgdGhlIHBhcnNlciBjYW4ndCB0ZWxsIHRoZSB0eXBlIG9mICIKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnICAgIG9wZXJhbmRzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdbNF0gQ2FzZWQgY2hhcmFjdGVycyBhcmUgdGhvc2Ugd2l0aCBnZW5lcmFsIGNhdGVnb3J5ICcKKyAgICAgICAgICAgICAgICAgJ3Byb3BlcnR5XG4nCisgICAgICAgICAgICAgICAgICcgICAgYmVpbmcgb25lIG9mICJMdSIgKExldHRlciwgdXBwZXJjYXNlKSwgIkxsIiAoTGV0dGVyLCAnCisgICAgICAgICAgICAgICAgICdsb3dlcmNhc2UpLFxuJworICAgICAgICAgICAgICAgICAnICAgIG9yICJMdCIgKExldHRlciwgdGl0bGVjYXNlKS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnWzVdIFRvIGZvcm1hdCBvbmx5IGEgdHVwbGUgeW91IHNob3VsZCB0aGVyZWZvcmUgcHJvdmlkZSBhXG4nCisgICAgICAgICAgICAgICAgICcgICAgc2luZ2xldG9uIHR1cGxlIHdob3NlIG9ubHkgZWxlbWVudCBpcyB0aGUgdHVwbGUgdG8gYmUgJworICAgICAgICAgICAgICAgICAnZm9ybWF0dGVkLlxuJywKKyAnc3BlY2lhbG5hbWVzJzogJ1xuJworICAgICAgICAgICAgICAgICAnU3BlY2lhbCBtZXRob2QgbmFtZXNcbicKKyAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0EgY2xhc3MgY2FuIGltcGxlbWVudCBjZXJ0YWluIG9wZXJhdGlvbnMgdGhhdCBhcmUgaW52b2tlZCBieSAnCisgICAgICAgICAgICAgICAgICdzcGVjaWFsXG4nCisgICAgICAgICAgICAgICAgICdzeW50YXggKHN1Y2ggYXMgYXJpdGhtZXRpYyBvcGVyYXRpb25zIG9yIHN1YnNjcmlwdGluZyBhbmQgJworICAgICAgICAgICAgICAgICAnc2xpY2luZykgYnlcbicKKyAgICAgICAgICAgICAgICAgImRlZmluaW5nIG1ldGhvZHMgd2l0aCBzcGVjaWFsIG5hbWVzLiBUaGlzIGlzIFB5dGhvbidzICIKKyAgICAgICAgICAgICAgICAgJ2FwcHJvYWNoIHRvXG4nCisgICAgICAgICAgICAgICAgICcqb3BlcmF0b3Igb3ZlcmxvYWRpbmcqLCBhbGxvd2luZyBjbGFzc2VzIHRvIGRlZmluZSB0aGVpciBvd24gJworICAgICAgICAgICAgICAgICAnYmVoYXZpb3JcbicKKyAgICAgICAgICAgICAgICAgJ3dpdGggcmVzcGVjdCB0byBsYW5ndWFnZSBvcGVyYXRvcnMuICBGb3IgaW5zdGFuY2UsIGlmIGEgJworICAgICAgICAgICAgICAgICAnY2xhc3MgZGVmaW5lc1xuJworICAgICAgICAgICAgICAgICAnYSBtZXRob2QgbmFtZWQgIl9fZ2V0aXRlbV9fKCkiLCBhbmQgIngiIGlzIGFuIGluc3RhbmNlIG9mICcKKyAgICAgICAgICAgICAgICAgJ3RoaXMgY2xhc3MsXG4nCisgICAgICAgICAgICAgICAgICd0aGVuICJ4W2ldIiBpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG8gInR5cGUoeCkuX19nZXRpdGVtX18oeCwgJworICAgICAgICAgICAgICAgICAnaSkiLlxuJworICAgICAgICAgICAgICAgICAnRXhjZXB0IHdoZXJlIG1lbnRpb25lZCwgYXR0ZW1wdHMgdG8gZXhlY3V0ZSBhbiBvcGVyYXRpb24gJworICAgICAgICAgICAgICAgICAncmFpc2UgYW5cbicKKyAgICAgICAgICAgICAgICAgJ2V4Y2VwdGlvbiB3aGVuIG5vIGFwcHJvcHJpYXRlIG1ldGhvZCBpcyBkZWZpbmVkICh0eXBpY2FsbHlcbicKKyAgICAgICAgICAgICAgICAgJyJBdHRyaWJ1dGVFcnJvciIgb3IgIlR5cGVFcnJvciIpLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdTZXR0aW5nIGEgc3BlY2lhbCBtZXRob2QgdG8gIk5vbmUiIGluZGljYXRlcyB0aGF0IHRoZSAnCisgICAgICAgICAgICAgICAgICdjb3JyZXNwb25kaW5nXG4nCisgICAgICAgICAgICAgICAgICdvcGVyYXRpb24gaXMgbm90IGF2YWlsYWJsZS4gIEZvciBleGFtcGxlLCBpZiBhIGNsYXNzIHNldHMgJworICAgICAgICAgICAgICAgICAnIl9faXRlcl9fKCkiXG4nCisgICAgICAgICAgICAgICAgICd0byAiTm9uZSIsIHRoZSBjbGFzcyBpcyBub3QgaXRlcmFibGUsIHNvIGNhbGxpbmcgIml0ZXIoKSIgb24gJworICAgICAgICAgICAgICAgICAnaXRzXG4nCisgICAgICAgICAgICAgICAgICdpbnN0YW5jZXMgd2lsbCByYWlzZSBhICJUeXBlRXJyb3IiICh3aXRob3V0IGZhbGxpbmcgYmFjayB0b1xuJworICAgICAgICAgICAgICAgICAnIl9fZ2V0aXRlbV9fKCkiKS4gWzJdXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1doZW4gaW1wbGVtZW50aW5nIGEgY2xhc3MgdGhhdCBlbXVsYXRlcyBhbnkgYnVpbHQtaW4gdHlwZSwgJworICAgICAgICAgICAgICAgICAnaXQgaXNcbicKKyAgICAgICAgICAgICAgICAgJ2ltcG9ydGFudCB0aGF0IHRoZSBlbXVsYXRpb24gb25seSBiZSBpbXBsZW1lbnRlZCB0byB0aGUgJworICAgICAgICAgICAgICAgICAnZGVncmVlIHRoYXQgaXRcbicKKyAgICAgICAgICAgICAgICAgJ21ha2VzIHNlbnNlIGZvciB0aGUgb2JqZWN0IGJlaW5nIG1vZGVsbGVkLiAgRm9yIGV4YW1wbGUsICcKKyAgICAgICAgICAgICAgICAgJ3NvbWVcbicKKyAgICAgICAgICAgICAgICAgJ3NlcXVlbmNlcyBtYXkgd29yayB3ZWxsIHdpdGggcmV0cmlldmFsIG9mIGluZGl2aWR1YWwgJworICAgICAgICAgICAgICAgICAnZWxlbWVudHMsIGJ1dFxuJworICAgICAgICAgICAgICAgICAnZXh0cmFjdGluZyBhIHNsaWNlIG1heSBub3QgbWFrZSBzZW5zZS4gIChPbmUgZXhhbXBsZSBvZiB0aGlzICcKKyAgICAgICAgICAgICAgICAgJ2lzIHRoZVxuJworICAgICAgICAgICAgICAgICAnIk5vZGVMaXN0IiBpbnRlcmZhY2UgaW4gdGhlIFczQ1wncyBEb2N1bWVudCBPYmplY3QgTW9kZWwuKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0Jhc2ljIGN1c3RvbWl6YXRpb25cbicKKyAgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbmV3X18oY2xzWywgLi4uXSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBjbGFzcyAqY2xzKi4gICcKKyAgICAgICAgICAgICAgICAgJyJfX25ld19fKCkiIGlzIGFcbicKKyAgICAgICAgICAgICAgICAgJyAgIHN0YXRpYyBtZXRob2QgKHNwZWNpYWwtY2FzZWQgc28geW91IG5lZWQgbm90IGRlY2xhcmUgaXQgJworICAgICAgICAgICAgICAgICAnYXMgc3VjaClcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoYXQgdGFrZXMgdGhlIGNsYXNzIG9mIHdoaWNoIGFuIGluc3RhbmNlIHdhcyByZXF1ZXN0ZWQgJworICAgICAgICAgICAgICAgICAnYXMgaXRzXG4nCisgICAgICAgICAgICAgICAgICcgICBmaXJzdCBhcmd1bWVudC4gIFRoZSByZW1haW5pbmcgYXJndW1lbnRzIGFyZSB0aG9zZSBwYXNzZWQgJworICAgICAgICAgICAgICAgICAndG8gdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBvYmplY3QgY29uc3RydWN0b3IgZXhwcmVzc2lvbiAodGhlIGNhbGwgdG8gdGhlIGNsYXNzKS4gICcKKyAgICAgICAgICAgICAgICAgJ1RoZSByZXR1cm5cbicKKyAgICAgICAgICAgICAgICAgJyAgIHZhbHVlIG9mICJfX25ld19fKCkiIHNob3VsZCBiZSB0aGUgbmV3IG9iamVjdCBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICAgICcodXN1YWxseSBhblxuJworICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2Ugb2YgKmNscyopLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUeXBpY2FsIGltcGxlbWVudGF0aW9ucyBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzIGJ5XG4nCisgICAgICAgICAgICAgICAgICcgICBpbnZva2luZyB0aGUgc3VwZXJjbGFzc1wncyAiX19uZXdfXygpIiBtZXRob2QgdXNpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgICJzdXBlcihjdXJyZW50Y2xhc3MsIGNscykuX19uZXdfXyhjbHNbLCAuLi5dKSIgd2l0aCAnCisgICAgICAgICAgICAgICAgICdhcHByb3ByaWF0ZVxuJworICAgICAgICAgICAgICAgICAnICAgYXJndW1lbnRzIGFuZCB0aGVuIG1vZGlmeWluZyB0aGUgbmV3bHktY3JlYXRlZCBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICAgICdhc1xuJworICAgICAgICAgICAgICAgICAnICAgbmVjZXNzYXJ5IGJlZm9yZSByZXR1cm5pbmcgaXQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIElmICJfX25ld19fKCkiIHJldHVybnMgYW4gaW5zdGFuY2Ugb2YgKmNscyosIHRoZW4gdGhlICcKKyAgICAgICAgICAgICAgICAgJ25ld1xuJworICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2VcJ3MgIl9faW5pdF9fKCkiIG1ldGhvZCB3aWxsIGJlIGludm9rZWQgbGlrZVxuJworICAgICAgICAgICAgICAgICAnICAgIl9faW5pdF9fKHNlbGZbLCAuLi5dKSIsIHdoZXJlICpzZWxmKiBpcyB0aGUgbmV3IGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgJ2FuZCB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIHdlcmUgcGFzc2VkIHRvICcKKyAgICAgICAgICAgICAgICAgJyJfX25ld19fKCkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBJZiAiX19uZXdfXygpIiBkb2VzIG5vdCByZXR1cm4gYW4gaW5zdGFuY2Ugb2YgKmNscyosIHRoZW4gJworICAgICAgICAgICAgICAgICAndGhlIG5ld1xuJworICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2VcJ3MgIl9faW5pdF9fKCkiIG1ldGhvZCB3aWxsIG5vdCBiZSBpbnZva2VkLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAiX19uZXdfXygpIiBpcyBpbnRlbmRlZCBtYWlubHkgdG8gYWxsb3cgc3ViY2xhc3NlcyBvZiAnCisgICAgICAgICAgICAgICAgICdpbW11dGFibGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHR5cGVzIChsaWtlIGludCwgc3RyLCBvciB0dXBsZSkgdG8gY3VzdG9taXplIGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgJ2NyZWF0aW9uLiAgSXRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGlzIGFsc28gY29tbW9ubHkgb3ZlcnJpZGRlbiBpbiBjdXN0b20gbWV0YWNsYXNzZXMgaW4gJworICAgICAgICAgICAgICAgICAnb3JkZXIgdG9cbicKKyAgICAgICAgICAgICAgICAgJyAgIGN1c3RvbWl6ZSBjbGFzcyBjcmVhdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW5pdF9fKHNlbGZbLCAuLi5dKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgYWZ0ZXIgdGhlIGluc3RhbmNlIGhhcyBiZWVuIGNyZWF0ZWQgKGJ5ICcKKyAgICAgICAgICAgICAgICAgJyJfX25ld19fKCkiKSwgYnV0XG4nCisgICAgICAgICAgICAgICAgICcgICBiZWZvcmUgaXQgaXMgcmV0dXJuZWQgdG8gdGhlIGNhbGxlci4gIFRoZSBhcmd1bWVudHMgYXJlICcKKyAgICAgICAgICAgICAgICAgJ3Rob3NlXG4nCisgICAgICAgICAgICAgICAgICcgICBwYXNzZWQgdG8gdGhlIGNsYXNzIGNvbnN0cnVjdG9yIGV4cHJlc3Npb24uICBJZiBhIGJhc2UgJworICAgICAgICAgICAgICAgICAnY2xhc3MgaGFzIGFuXG4nCisgICAgICAgICAgICAgICAgICcgICAiX19pbml0X18oKSIgbWV0aG9kLCB0aGUgZGVyaXZlZCBjbGFzc1wncyAiX19pbml0X18oKSIgJworICAgICAgICAgICAgICAgICAnbWV0aG9kLCBpZlxuJworICAgICAgICAgICAgICAgICAnICAgYW55LCBtdXN0IGV4cGxpY2l0bHkgY2FsbCBpdCB0byBlbnN1cmUgcHJvcGVyICcKKyAgICAgICAgICAgICAgICAgJ2luaXRpYWxpemF0aW9uIG9mIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgYmFzZSBjbGFzcyBwYXJ0IG9mIHRoZSBpbnN0YW5jZTsgZm9yIGV4YW1wbGU6XG4nCisgICAgICAgICAgICAgICAgICcgICAiQmFzZUNsYXNzLl9faW5pdF9fKHNlbGYsIFthcmdzLi4uXSkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBCZWNhdXNlICJfX25ld19fKCkiIGFuZCAiX19pbml0X18oKSIgd29yayB0b2dldGhlciBpbiAnCisgICAgICAgICAgICAgICAgICdjb25zdHJ1Y3RpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgIG9iamVjdHMgKCJfX25ld19fKCkiIHRvIGNyZWF0ZSBpdCwgYW5kICJfX2luaXRfXygpIiB0byAnCisgICAgICAgICAgICAgICAgICdjdXN0b21pemVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGl0KSwgbm8gbm9uLSJOb25lIiB2YWx1ZSBtYXkgYmUgcmV0dXJuZWQgYnkgIl9faW5pdF9fKCkiOyAnCisgICAgICAgICAgICAgICAgICdkb2luZyBzb1xuJworICAgICAgICAgICAgICAgICAnICAgd2lsbCBjYXVzZSBhICJUeXBlRXJyb3IiIHRvIGJlIHJhaXNlZCBhdCBydW50aW1lLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19kZWxfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgd2hlbiB0aGUgaW5zdGFuY2UgaXMgYWJvdXQgdG8gYmUgZGVzdHJveWVkLiAgVGhpcyAnCisgICAgICAgICAgICAgICAgICdpcyBhbHNvXG4nCisgICAgICAgICAgICAgICAgICcgICBjYWxsZWQgYSBkZXN0cnVjdG9yLiAgSWYgYSBiYXNlIGNsYXNzIGhhcyBhICJfX2RlbF9fKCkiICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZCwgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBkZXJpdmVkIGNsYXNzXCdzICJfX2RlbF9fKCkiIG1ldGhvZCwgaWYgYW55LCBtdXN0ICcKKyAgICAgICAgICAgICAgICAgJ2V4cGxpY2l0bHkgY2FsbCBpdFxuJworICAgICAgICAgICAgICAgICAnICAgdG8gZW5zdXJlIHByb3BlciBkZWxldGlvbiBvZiB0aGUgYmFzZSBjbGFzcyBwYXJ0IG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICdpbnN0YW5jZS5cbicKKyAgICAgICAgICAgICAgICAgJyAgIE5vdGUgdGhhdCBpdCBpcyBwb3NzaWJsZSAodGhvdWdoIG5vdCByZWNvbW1lbmRlZCEpIGZvciAnCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgICJfX2RlbF9fKCkiIG1ldGhvZCB0byBwb3N0cG9uZSBkZXN0cnVjdGlvbiBvZiB0aGUgJworICAgICAgICAgICAgICAgICAnaW5zdGFuY2UgYnlcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNyZWF0aW5nIGEgbmV3IHJlZmVyZW5jZSB0byBpdC4gIEl0IG1heSB0aGVuIGJlIGNhbGxlZCBhdCAnCisgICAgICAgICAgICAgICAgICdhIGxhdGVyXG4nCisgICAgICAgICAgICAgICAgICcgICB0aW1lIHdoZW4gdGhpcyBuZXcgcmVmZXJlbmNlIGlzIGRlbGV0ZWQuICBJdCBpcyBub3QgJworICAgICAgICAgICAgICAgICAnZ3VhcmFudGVlZCB0aGF0XG4nCisgICAgICAgICAgICAgICAgICcgICAiX19kZWxfXygpIiBtZXRob2RzIGFyZSBjYWxsZWQgZm9yIG9iamVjdHMgdGhhdCBzdGlsbCAnCisgICAgICAgICAgICAgICAgICdleGlzdCB3aGVuXG4nCisgICAgICAgICAgICAgICAgICcgICB0aGUgaW50ZXJwcmV0ZXIgZXhpdHMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIE5vdGU6ICJkZWwgeCIgZG9lc25cJ3QgZGlyZWN0bHkgY2FsbCAieC5fX2RlbF9fKCkiIC0tLSAnCisgICAgICAgICAgICAgICAgICd0aGUgZm9ybWVyXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGRlY3JlbWVudHMgdGhlIHJlZmVyZW5jZSBjb3VudCBmb3IgIngiIGJ5IG9uZSwgYW5kIHRoZSAnCisgICAgICAgICAgICAgICAgICdsYXR0ZXIgaXNcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgb25seSBjYWxsZWQgd2hlbiAieCJcJ3MgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVyby4gICcKKyAgICAgICAgICAgICAgICAgJ1NvbWUgY29tbW9uXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHNpdHVhdGlvbnMgdGhhdCBtYXkgcHJldmVudCB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIGFuICcKKyAgICAgICAgICAgICAgICAgJ29iamVjdCBmcm9tXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGdvaW5nIHRvIHplcm8gaW5jbHVkZTogY2lyY3VsYXIgcmVmZXJlbmNlcyBiZXR3ZWVuICcKKyAgICAgICAgICAgICAgICAgJ29iamVjdHMgKGUuZy4sXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGEgZG91Ymx5LWxpbmtlZCBsaXN0IG9yIGEgdHJlZSBkYXRhIHN0cnVjdHVyZSB3aXRoICcKKyAgICAgICAgICAgICAgICAgJ3BhcmVudCBhbmRcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgY2hpbGQgcG9pbnRlcnMpOyBhIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0IG9uIHRoZSBzdGFjayAnCisgICAgICAgICAgICAgICAgICdmcmFtZSBvZlxuJworICAgICAgICAgICAgICAgICAnICAgICBhIGZ1bmN0aW9uIHRoYXQgY2F1Z2h0IGFuIGV4Y2VwdGlvbiAodGhlIHRyYWNlYmFjayAnCisgICAgICAgICAgICAgICAgICdzdG9yZWQgaW5cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgInN5cy5leGNfaW5mbygpWzJdIiBrZWVwcyB0aGUgc3RhY2sgZnJhbWUgYWxpdmUpOyBvciBhICcKKyAgICAgICAgICAgICAgICAgJ3JlZmVyZW5jZVxuJworICAgICAgICAgICAgICAgICAnICAgICB0byB0aGUgb2JqZWN0IG9uIHRoZSBzdGFjayBmcmFtZSB0aGF0IHJhaXNlZCBhbiAnCisgICAgICAgICAgICAgICAgICd1bmhhbmRsZWRcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgZXhjZXB0aW9uIGluIGludGVyYWN0aXZlIG1vZGUgKHRoZSB0cmFjZWJhY2sgc3RvcmVkIGluXG4nCisgICAgICAgICAgICAgICAgICcgICAgICJzeXMubGFzdF90cmFjZWJhY2siIGtlZXBzIHRoZSBzdGFjayBmcmFtZSBhbGl2ZSkuICBUaGUgJworICAgICAgICAgICAgICAgICAnZmlyc3RcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgc2l0dWF0aW9uIGNhbiBvbmx5IGJlIHJlbWVkaWVkIGJ5IGV4cGxpY2l0bHkgYnJlYWtpbmcgJworICAgICAgICAgICAgICAgICAndGhlIGN5Y2xlcztcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgdGhlIHNlY29uZCBjYW4gYmUgcmVzb2x2ZWQgYnkgZnJlZWluZyB0aGUgcmVmZXJlbmNlIHRvICcKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnICAgICB0cmFjZWJhY2sgb2JqZWN0IHdoZW4gaXQgaXMgbm8gbG9uZ2VyIHVzZWZ1bCwgYW5kIHRoZSAnCisgICAgICAgICAgICAgICAgICd0aGlyZCBjYW5cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgYmUgcmVzb2x2ZWQgYnkgc3RvcmluZyAiTm9uZSIgaW4gInN5cy5sYXN0X3RyYWNlYmFjayIuICcKKyAgICAgICAgICAgICAgICAgJ0NpcmN1bGFyXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHJlZmVyZW5jZXMgd2hpY2ggYXJlIGdhcmJhZ2UgYXJlIGRldGVjdGVkIGFuZCBjbGVhbmVkICcKKyAgICAgICAgICAgICAgICAgJ3VwIHdoZW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICIgICAgIGN5Y2xpYyBnYXJiYWdlIGNvbGxlY3RvciBpcyBlbmFibGVkIChpdCdzIG9uIGJ5ICIKKyAgICAgICAgICAgICAgICAgJ2RlZmF1bHQpLiBSZWZlclxuJworICAgICAgICAgICAgICAgICAnICAgICB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlICJnYyIgbW9kdWxlIGZvciBtb3JlICcKKyAgICAgICAgICAgICAgICAgJ2luZm9ybWF0aW9uXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGFib3V0IHRoaXMgdG9waWMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFdhcm5pbmc6IER1ZSB0byB0aGUgcHJlY2FyaW91cyBjaXJjdW1zdGFuY2VzIHVuZGVyIHdoaWNoXG4nCisgICAgICAgICAgICAgICAgICcgICAgICJfX2RlbF9fKCkiIG1ldGhvZHMgYXJlIGludm9rZWQsIGV4Y2VwdGlvbnMgdGhhdCBvY2N1ciAnCisgICAgICAgICAgICAgICAgICdkdXJpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgdGhlaXIgZXhlY3V0aW9uIGFyZSBpZ25vcmVkLCBhbmQgYSB3YXJuaW5nIGlzIHByaW50ZWQgJworICAgICAgICAgICAgICAgICAndG9cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgInN5cy5zdGRlcnIiIGluc3RlYWQuIEFsc28sIHdoZW4gIl9fZGVsX18oKSIgaXMgaW52b2tlZCAnCisgICAgICAgICAgICAgICAgICdpblxuJworICAgICAgICAgICAgICAgICAnICAgICByZXNwb25zZSB0byBhIG1vZHVsZSBiZWluZyBkZWxldGVkIChlLmcuLCB3aGVuICcKKyAgICAgICAgICAgICAgICAgJ2V4ZWN1dGlvbiBvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgcHJvZ3JhbSBpcyBkb25lKSwgb3RoZXIgZ2xvYmFscyByZWZlcmVuY2VkIGJ5IHRoZSAnCisgICAgICAgICAgICAgICAgICciX19kZWxfXygpIlxuJworICAgICAgICAgICAgICAgICAnICAgICBtZXRob2QgbWF5IGFscmVhZHkgaGF2ZSBiZWVuIGRlbGV0ZWQgb3IgaW4gdGhlIHByb2Nlc3MgJworICAgICAgICAgICAgICAgICAnb2YgYmVpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgdG9ybiBkb3duIChlLmcuIHRoZSBpbXBvcnQgbWFjaGluZXJ5IHNodXR0aW5nIGRvd24pLiAgJworICAgICAgICAgICAgICAgICAnRm9yIHRoaXNcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgcmVhc29uLCAiX19kZWxfXygpIiBtZXRob2RzIHNob3VsZCBkbyB0aGUgYWJzb2x1dGUgJworICAgICAgICAgICAgICAgICAnbWluaW11bSBuZWVkZWRcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgdG8gbWFpbnRhaW4gZXh0ZXJuYWwgaW52YXJpYW50cy4gIFN0YXJ0aW5nIHdpdGggdmVyc2lvbiAnCisgICAgICAgICAgICAgICAgICcxLjUsXG4nCisgICAgICAgICAgICAgICAgICcgICAgIFB5dGhvbiBndWFyYW50ZWVzIHRoYXQgZ2xvYmFscyB3aG9zZSBuYW1lIGJlZ2lucyB3aXRoIGEgJworICAgICAgICAgICAgICAgICAnc2luZ2xlXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHVuZGVyc2NvcmUgYXJlIGRlbGV0ZWQgZnJvbSB0aGVpciBtb2R1bGUgYmVmb3JlIG90aGVyICcKKyAgICAgICAgICAgICAgICAgJ2dsb2JhbHMgYXJlXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGRlbGV0ZWQ7IGlmIG5vIG90aGVyIHJlZmVyZW5jZXMgdG8gc3VjaCBnbG9iYWxzIGV4aXN0LCAnCisgICAgICAgICAgICAgICAgICd0aGlzIG1heVxuJworICAgICAgICAgICAgICAgICAnICAgICBoZWxwIGluIGFzc3VyaW5nIHRoYXQgaW1wb3J0ZWQgbW9kdWxlcyBhcmUgc3RpbGwgJworICAgICAgICAgICAgICAgICAnYXZhaWxhYmxlIGF0IHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgICB0aW1lIHdoZW4gdGhlICJfX2RlbF9fKCkiIG1ldGhvZCBpcyBjYWxsZWQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JlcHJfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgYnkgdGhlICJyZXByKCkiIGJ1aWx0LWluIGZ1bmN0aW9uIHRvIGNvbXB1dGUgdGhlICcKKyAgICAgICAgICAgICAgICAgJyJvZmZpY2lhbCJcbicKKyAgICAgICAgICAgICAgICAgJyAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuICBJZiBhdCBhbGwgcG9zc2libGUsICcKKyAgICAgICAgICAgICAgICAgJ3RoaXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIHNob3VsZCBsb29rIGxpa2UgYSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbiB0aGF0IGNvdWxkIGJlICcKKyAgICAgICAgICAgICAgICAgJ3VzZWQgdG9cbicKKyAgICAgICAgICAgICAgICAgJyAgIHJlY3JlYXRlIGFuIG9iamVjdCB3aXRoIHRoZSBzYW1lIHZhbHVlIChnaXZlbiBhbiAnCisgICAgICAgICAgICAgICAgICdhcHByb3ByaWF0ZVxuJworICAgICAgICAgICAgICAgICAnICAgZW52aXJvbm1lbnQpLiAgSWYgdGhpcyBpcyBub3QgcG9zc2libGUsIGEgc3RyaW5nIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICdmb3JtXG4nCisgICAgICAgICAgICAgICAgICcgICAiPC4uLnNvbWUgdXNlZnVsIGRlc2NyaXB0aW9uLi4uPiIgc2hvdWxkIGJlIHJldHVybmVkLiBUaGUgJworICAgICAgICAgICAgICAgICAncmV0dXJuXG4nCisgICAgICAgICAgICAgICAgICcgICB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9iamVjdC4gSWYgYSBjbGFzcyBkZWZpbmVzICcKKyAgICAgICAgICAgICAgICAgJyJfX3JlcHJfXygpIiBidXRcbicKKyAgICAgICAgICAgICAgICAgJyAgIG5vdCAiX19zdHJfXygpIiwgdGhlbiAiX19yZXByX18oKSIgaXMgYWxzbyB1c2VkIHdoZW4gYW4gJworICAgICAgICAgICAgICAgICAnImluZm9ybWFsIlxuJworICAgICAgICAgICAgICAgICAnICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGluc3RhbmNlcyBvZiB0aGF0IGNsYXNzIGlzICcKKyAgICAgICAgICAgICAgICAgJ3JlcXVpcmVkLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGlzIGlzIHR5cGljYWxseSB1c2VkIGZvciBkZWJ1Z2dpbmcsIHNvIGl0IGlzIGltcG9ydGFudCAnCisgICAgICAgICAgICAgICAgICd0aGF0IHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgcmVwcmVzZW50YXRpb24gaXMgaW5mb3JtYXRpb24tcmljaCBhbmQgdW5hbWJpZ3VvdXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3N0cl9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCBieSAic3RyKG9iamVjdCkiIGFuZCB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zICcKKyAgICAgICAgICAgICAgICAgJyJmb3JtYXQoKSIgYW5kXG4nCisgICAgICAgICAgICAgICAgICcgICAicHJpbnQoKSIgdG8gY29tcHV0ZSB0aGUgImluZm9ybWFsIiBvciBuaWNlbHkgcHJpbnRhYmxlICcKKyAgICAgICAgICAgICAgICAgJ3N0cmluZ1xuJworICAgICAgICAgICAgICAgICAnICAgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LiAgVGhlIHJldHVybiB2YWx1ZSBtdXN0IGJlIGEgJworICAgICAgICAgICAgICAgICAnc3RyaW5nXG4nCisgICAgICAgICAgICAgICAgICcgICBvYmplY3QuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoaXMgbWV0aG9kIGRpZmZlcnMgZnJvbSAib2JqZWN0Ll9fcmVwcl9fKCkiIGluIHRoYXQgJworICAgICAgICAgICAgICAgICAndGhlcmUgaXMgbm9cbicKKyAgICAgICAgICAgICAgICAgJyAgIGV4cGVjdGF0aW9uIHRoYXQgIl9fc3RyX18oKSIgcmV0dXJuIGEgdmFsaWQgUHl0aG9uICcKKyAgICAgICAgICAgICAgICAgJ2V4cHJlc3Npb246IGFcbicKKyAgICAgICAgICAgICAgICAgJyAgIG1vcmUgY29udmVuaWVudCBvciBjb25jaXNlIHJlcHJlc2VudGF0aW9uIGNhbiBiZSB1c2VkLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkIGJ5IHRoZSBidWlsdC1pbiB0eXBlICcKKyAgICAgICAgICAgICAgICAgJyJvYmplY3QiXG4nCisgICAgICAgICAgICAgICAgICcgICBjYWxscyAib2JqZWN0Ll9fcmVwcl9fKCkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19ieXRlc19fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCBieSAiYnl0ZXMoKSIgdG8gY29tcHV0ZSBhIGJ5dGUtc3RyaW5nICcKKyAgICAgICAgICAgICAgICAgJ3JlcHJlc2VudGF0aW9uIG9mIGFuXG4nCisgICAgICAgICAgICAgICAgICcgICBvYmplY3QuIFRoaXMgc2hvdWxkIHJldHVybiBhICJieXRlcyIgb2JqZWN0LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19mb3JtYXRfXyhzZWxmLCBmb3JtYXRfc3BlYylcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIGJ5IHRoZSAiZm9ybWF0KCkiIGJ1aWx0LWluIGZ1bmN0aW9uLCBhbmQgYnkgJworICAgICAgICAgICAgICAgICAnZXh0ZW5zaW9uLFxuJworICAgICAgICAgICAgICAgICAnICAgZXZhbHVhdGlvbiBvZiBmb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWxzIGFuZCB0aGUgJworICAgICAgICAgICAgICAgICAnInN0ci5mb3JtYXQoKSJcbicKKyAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCwgdG8gcHJvZHVjZSBhICJmb3JtYXR0ZWQiIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiAnCisgICAgICAgICAgICAgICAgICdhblxuJworICAgICAgICAgICAgICAgICAnICAgb2JqZWN0LiBUaGUgImZvcm1hdF9zcGVjIiBhcmd1bWVudCBpcyBhIHN0cmluZyB0aGF0ICcKKyAgICAgICAgICAgICAgICAgJ2NvbnRhaW5zIGFcbicKKyAgICAgICAgICAgICAgICAgJyAgIGRlc2NyaXB0aW9uIG9mIHRoZSBmb3JtYXR0aW5nIG9wdGlvbnMgZGVzaXJlZC4gVGhlICcKKyAgICAgICAgICAgICAgICAgJ2ludGVycHJldGF0aW9uXG4nCisgICAgICAgICAgICAgICAgICcgICBvZiB0aGUgImZvcm1hdF9zcGVjIiBhcmd1bWVudCBpcyB1cCB0byB0aGUgdHlwZSAnCisgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgICJfX2Zvcm1hdF9fKCkiLCBob3dldmVyIG1vc3QgY2xhc3NlcyB3aWxsIGVpdGhlciAnCisgICAgICAgICAgICAgICAgICdkZWxlZ2F0ZVxuJworICAgICAgICAgICAgICAgICAnICAgZm9ybWF0dGluZyB0byBvbmUgb2YgdGhlIGJ1aWx0LWluIHR5cGVzLCBvciB1c2UgYSAnCisgICAgICAgICAgICAgICAgICdzaW1pbGFyXG4nCisgICAgICAgICAgICAgICAgICcgICBmb3JtYXR0aW5nIG9wdGlvbiBzeW50YXguXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFNlZSBGb3JtYXQgU3BlY2lmaWNhdGlvbiBNaW5pLUxhbmd1YWdlIGZvciBhIGRlc2NyaXB0aW9uICcKKyAgICAgICAgICAgICAgICAgJ29mIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgc3RhbmRhcmQgZm9ybWF0dGluZyBzeW50YXguXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvYmplY3QuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjQ6IFRoZSBfX2Zvcm1hdF9fIG1ldGhvZCBvZiAib2JqZWN0IiAnCisgICAgICAgICAgICAgICAgICdpdHNlbGZcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJhaXNlcyBhICJUeXBlRXJyb3IiIGlmIHBhc3NlZCBhbnkgbm9uLWVtcHR5IHN0cmluZy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbHRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2xlX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19lcV9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbmVfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2d0X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19nZV9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGVzZSBhcmUgdGhlIHNvLWNhbGxlZCAicmljaCBjb21wYXJpc29uIiBtZXRob2RzLiBUaGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNvcnJlc3BvbmRlbmNlIGJldHdlZW4gb3BlcmF0b3Igc3ltYm9scyBhbmQgbWV0aG9kIG5hbWVzICcKKyAgICAgICAgICAgICAgICAgJ2lzIGFzXG4nCisgICAgICAgICAgICAgICAgICcgICBmb2xsb3dzOiAieDx5IiBjYWxscyAieC5fX2x0X18oeSkiLCAieDw9eSIgY2FsbHMgJworICAgICAgICAgICAgICAgICAnInguX19sZV9fKHkpIixcbicKKyAgICAgICAgICAgICAgICAgJyAgICJ4PT15IiBjYWxscyAieC5fX2VxX18oeSkiLCAieCE9eSIgY2FsbHMgInguX19uZV9fKHkpIiwgJworICAgICAgICAgICAgICAgICAnIng+eSIgY2FsbHNcbicKKyAgICAgICAgICAgICAgICAgJyAgICJ4Ll9fZ3RfXyh5KSIsIGFuZCAieD49eSIgY2FsbHMgInguX19nZV9fKHkpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQSByaWNoIGNvbXBhcmlzb24gbWV0aG9kIG1heSByZXR1cm4gdGhlIHNpbmdsZXRvbiAnCisgICAgICAgICAgICAgICAgICciTm90SW1wbGVtZW50ZWQiXG4nCisgICAgICAgICAgICAgICAgICcgICBpZiBpdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIG9wZXJhdGlvbiBmb3IgYSBnaXZlbiBwYWlyICcKKyAgICAgICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAgICAgICcgICBhcmd1bWVudHMuIEJ5IGNvbnZlbnRpb24sICJGYWxzZSIgYW5kICJUcnVlIiBhcmUgcmV0dXJuZWQgJworICAgICAgICAgICAgICAgICAnZm9yIGFcbicKKyAgICAgICAgICAgICAgICAgJyAgIHN1Y2Nlc3NmdWwgY29tcGFyaXNvbi4gSG93ZXZlciwgdGhlc2UgbWV0aG9kcyBjYW4gcmV0dXJuICcKKyAgICAgICAgICAgICAgICAgJ2FueSB2YWx1ZSxcbicKKyAgICAgICAgICAgICAgICAgJyAgIHNvIGlmIHRoZSBjb21wYXJpc29uIG9wZXJhdG9yIGlzIHVzZWQgaW4gYSBCb29sZWFuICcKKyAgICAgICAgICAgICAgICAgJ2NvbnRleHQgKGUuZy4sXG4nCisgICAgICAgICAgICAgICAgICcgICBpbiB0aGUgY29uZGl0aW9uIG9mIGFuICJpZiIgc3RhdGVtZW50KSwgUHl0aG9uIHdpbGwgY2FsbCAnCisgICAgICAgICAgICAgICAgICciYm9vbCgpIlxuJworICAgICAgICAgICAgICAgICAnICAgb24gdGhlIHZhbHVlIHRvIGRldGVybWluZSBpZiB0aGUgcmVzdWx0IGlzIHRydWUgb3IgJworICAgICAgICAgICAgICAgICAnZmFsc2UuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIEJ5IGRlZmF1bHQsICJfX25lX18oKSIgZGVsZWdhdGVzIHRvICJfX2VxX18oKSIgYW5kICcKKyAgICAgICAgICAgICAgICAgJ2ludmVydHMgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICByZXN1bHQgdW5sZXNzIGl0IGlzICJOb3RJbXBsZW1lbnRlZCIuICBUaGVyZSBhcmUgbm8gb3RoZXIgJworICAgICAgICAgICAgICAgICAnaW1wbGllZFxuJworICAgICAgICAgICAgICAgICAnICAgcmVsYXRpb25zaGlwcyBhbW9uZyB0aGUgY29tcGFyaXNvbiBvcGVyYXRvcnMsIGZvciAnCisgICAgICAgICAgICAgICAgICdleGFtcGxlLCB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRydXRoIG9mICIoeDx5IG9yIHg9PXkpIiBkb2VzIG5vdCBpbXBseSAieDw9eSIuIFRvICcKKyAgICAgICAgICAgICAgICAgJ2F1dG9tYXRpY2FsbHlcbicKKyAgICAgICAgICAgICAgICAgJyAgIGdlbmVyYXRlIG9yZGVyaW5nIG9wZXJhdGlvbnMgZnJvbSBhIHNpbmdsZSByb290ICcKKyAgICAgICAgICAgICAgICAgJ29wZXJhdGlvbiwgc2VlXG4nCisgICAgICAgICAgICAgICAgICcgICAiZnVuY3Rvb2xzLnRvdGFsX29yZGVyaW5nKCkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBTZWUgdGhlIHBhcmFncmFwaCBvbiAiX19oYXNoX18oKSIgZm9yIHNvbWUgaW1wb3J0YW50ICcKKyAgICAgICAgICAgICAgICAgJ25vdGVzIG9uXG4nCisgICAgICAgICAgICAgICAgICcgICBjcmVhdGluZyAqaGFzaGFibGUqIG9iamVjdHMgd2hpY2ggc3VwcG9ydCBjdXN0b20gJworICAgICAgICAgICAgICAgICAnY29tcGFyaXNvblxuJworICAgICAgICAgICAgICAgICAnICAgb3BlcmF0aW9ucyBhbmQgYXJlIHVzYWJsZSBhcyBkaWN0aW9uYXJ5IGtleXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoZXJlIGFyZSBubyBzd2FwcGVkLWFyZ3VtZW50IHZlcnNpb25zIG9mIHRoZXNlIG1ldGhvZHMgJworICAgICAgICAgICAgICAgICAnKHRvIGJlIHVzZWRcbicKKyAgICAgICAgICAgICAgICAgJyAgIHdoZW4gdGhlIGxlZnQgYXJndW1lbnQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgb3BlcmF0aW9uIGJ1dCAnCisgICAgICAgICAgICAgICAgICd0aGUgcmlnaHRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFyZ3VtZW50IGRvZXMpOyByYXRoZXIsICJfX2x0X18oKSIgYW5kICJfX2d0X18oKSIgYXJlICcKKyAgICAgICAgICAgICAgICAgImVhY2ggb3RoZXInc1xuIgorICAgICAgICAgICAgICAgICAnICAgcmVmbGVjdGlvbiwgIl9fbGVfXygpIiBhbmQgIl9fZ2VfXygpIiBhcmUgZWFjaCBvdGhlclwncyAnCisgICAgICAgICAgICAgICAgICdyZWZsZWN0aW9uLFxuJworICAgICAgICAgICAgICAgICAnICAgYW5kICJfX2VxX18oKSIgYW5kICJfX25lX18oKSIgYXJlIHRoZWlyIG93biByZWZsZWN0aW9uLiAnCisgICAgICAgICAgICAgICAgICdJZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgIiAgIG9wZXJhbmRzIGFyZSBvZiBkaWZmZXJlbnQgdHlwZXMsIGFuZCByaWdodCBvcGVyYW5kJ3MgdHlwZSAiCisgICAgICAgICAgICAgICAgICdpcyBhXG4nCisgICAgICAgICAgICAgICAgICIgICBkaXJlY3Qgb3IgaW5kaXJlY3Qgc3ViY2xhc3Mgb2YgdGhlIGxlZnQgb3BlcmFuZCdzIHR5cGUsICIKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnICAgcmVmbGVjdGVkIG1ldGhvZCBvZiB0aGUgcmlnaHQgb3BlcmFuZCBoYXMgcHJpb3JpdHksICcKKyAgICAgICAgICAgICAgICAgJ290aGVyd2lzZSB0aGVcbicKKyAgICAgICAgICAgICAgICAgIiAgIGxlZnQgb3BlcmFuZCdzIG1ldGhvZCBoYXMgcHJpb3JpdHkuICBWaXJ0dWFsIHN1YmNsYXNzaW5nICIKKyAgICAgICAgICAgICAgICAgJ2lzIG5vdFxuJworICAgICAgICAgICAgICAgICAnICAgY29uc2lkZXJlZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faGFzaF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCBieSBidWlsdC1pbiBmdW5jdGlvbiAiaGFzaCgpIiBhbmQgZm9yIG9wZXJhdGlvbnMgJworICAgICAgICAgICAgICAgICAnb24gbWVtYmVyc1xuJworICAgICAgICAgICAgICAgICAnICAgb2YgaGFzaGVkIGNvbGxlY3Rpb25zIGluY2x1ZGluZyAic2V0IiwgImZyb3plbnNldCIsIGFuZCAnCisgICAgICAgICAgICAgICAgICciZGljdCIuXG4nCisgICAgICAgICAgICAgICAgICcgICAiX19oYXNoX18oKSIgc2hvdWxkIHJldHVybiBhbiBpbnRlZ2VyLiAgVGhlIG9ubHkgcmVxdWlyZWQgJworICAgICAgICAgICAgICAgICAncHJvcGVydHlcbicKKyAgICAgICAgICAgICAgICAgJyAgIGlzIHRoYXQgb2JqZWN0cyB3aGljaCBjb21wYXJlIGVxdWFsIGhhdmUgdGhlIHNhbWUgaGFzaCAnCisgICAgICAgICAgICAgICAgICd2YWx1ZTsgaXQgaXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFkdmlzZWQgdG8gc29tZWhvdyBtaXggdG9nZXRoZXIgKGUuZy4gdXNpbmcgZXhjbHVzaXZlIG9yKSAnCisgICAgICAgICAgICAgICAgICd0aGUgaGFzaFxuJworICAgICAgICAgICAgICAgICAnICAgdmFsdWVzIGZvciB0aGUgY29tcG9uZW50cyBvZiB0aGUgb2JqZWN0IHRoYXQgYWxzbyBwbGF5IGEgJworICAgICAgICAgICAgICAgICAncGFydCBpblxuJworICAgICAgICAgICAgICAgICAnICAgY29tcGFyaXNvbiBvZiBvYmplY3RzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBOb3RlOiAiaGFzaCgpIiB0cnVuY2F0ZXMgdGhlIHZhbHVlIHJldHVybmVkIGZyb20gYW4gJworICAgICAgICAgICAgICAgICAib2JqZWN0J3NcbiIKKyAgICAgICAgICAgICAgICAgJyAgICAgY3VzdG9tICJfX2hhc2hfXygpIiBtZXRob2QgdG8gdGhlIHNpemUgb2YgYSAnCisgICAgICAgICAgICAgICAgICciUHlfc3NpemVfdCIuICBUaGlzXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGlzIHR5cGljYWxseSA4IGJ5dGVzIG9uIDY0LWJpdCBidWlsZHMgYW5kIDQgYnl0ZXMgb24gJworICAgICAgICAgICAgICAgICAnMzItYml0XG4nCisgICAgICAgICAgICAgICAgICcgICAgIGJ1aWxkcy4gSWYgYW4gb2JqZWN0XCdzICAgIl9faGFzaF9fKCkiIG11c3QgJworICAgICAgICAgICAgICAgICAnaW50ZXJvcGVyYXRlIG9uIGJ1aWxkc1xuJworICAgICAgICAgICAgICAgICAnICAgICBvZiBkaWZmZXJlbnQgYml0IHNpemVzLCBiZSBzdXJlIHRvIGNoZWNrIHRoZSB3aWR0aCBvbiAnCisgICAgICAgICAgICAgICAgICdhbGxcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgc3VwcG9ydGVkIGJ1aWxkcy4gIEFuIGVhc3kgd2F5IHRvIGRvIHRoaXMgaXMgd2l0aCAnCisgICAgICAgICAgICAgICAgICcicHl0aG9uIC1jXG4nCisgICAgICAgICAgICAgICAgICcgICAgICJpbXBvcnQgc3lzOyBwcmludChzeXMuaGFzaF9pbmZvLndpZHRoKSIiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBJZiBhIGNsYXNzIGRvZXMgbm90IGRlZmluZSBhbiAiX19lcV9fKCkiIG1ldGhvZCBpdCBzaG91bGQgJworICAgICAgICAgICAgICAgICAnbm90XG4nCisgICAgICAgICAgICAgICAgICcgICBkZWZpbmUgYSAiX19oYXNoX18oKSIgb3BlcmF0aW9uIGVpdGhlcjsgaWYgaXQgZGVmaW5lcyAnCisgICAgICAgICAgICAgICAgICciX19lcV9fKCkiXG4nCisgICAgICAgICAgICAgICAgICcgICBidXQgbm90ICJfX2hhc2hfXygpIiwgaXRzIGluc3RhbmNlcyB3aWxsIG5vdCBiZSB1c2FibGUgYXMgJworICAgICAgICAgICAgICAgICAnaXRlbXMgaW5cbicKKyAgICAgICAgICAgICAgICAgJyAgIGhhc2hhYmxlIGNvbGxlY3Rpb25zLiAgSWYgYSBjbGFzcyBkZWZpbmVzIG11dGFibGUgb2JqZWN0cyAnCisgICAgICAgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGltcGxlbWVudHMgYW4gIl9fZXFfXygpIiBtZXRob2QsIGl0IHNob3VsZCBub3QgaW1wbGVtZW50XG4nCisgICAgICAgICAgICAgICAgICcgICAiX19oYXNoX18oKSIsIHNpbmNlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBoYXNoYWJsZSAnCisgICAgICAgICAgICAgICAgICdjb2xsZWN0aW9uc1xuJworICAgICAgICAgICAgICAgICAiICAgcmVxdWlyZXMgdGhhdCBhIGtleSdzIGhhc2ggdmFsdWUgaXMgaW1tdXRhYmxlIChpZiB0aGUgIgorICAgICAgICAgICAgICAgICAib2JqZWN0J3MgaGFzaFxuIgorICAgICAgICAgICAgICAgICAnICAgdmFsdWUgY2hhbmdlcywgaXQgd2lsbCBiZSBpbiB0aGUgd3JvbmcgaGFzaCBidWNrZXQpLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBVc2VyLWRlZmluZWQgY2xhc3NlcyBoYXZlICJfX2VxX18oKSIgYW5kICJfX2hhc2hfXygpIiAnCisgICAgICAgICAgICAgICAgICdtZXRob2RzIGJ5XG4nCisgICAgICAgICAgICAgICAgICcgICBkZWZhdWx0OyB3aXRoIHRoZW0sIGFsbCBvYmplY3RzIGNvbXBhcmUgdW5lcXVhbCAoZXhjZXB0ICcKKyAgICAgICAgICAgICAgICAgJ3dpdGhcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoZW1zZWx2ZXMpIGFuZCAieC5fX2hhc2hfXygpIiByZXR1cm5zIGFuIGFwcHJvcHJpYXRlICcKKyAgICAgICAgICAgICAgICAgJ3ZhbHVlIHN1Y2hcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoYXQgInggPT0geSIgaW1wbGllcyBib3RoIHRoYXQgInggaXMgeSIgYW5kICJoYXNoKHgpID09ICcKKyAgICAgICAgICAgICAgICAgJ2hhc2goeSkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBBIGNsYXNzIHRoYXQgb3ZlcnJpZGVzICJfX2VxX18oKSIgYW5kIGRvZXMgbm90IGRlZmluZSAnCisgICAgICAgICAgICAgICAgICciX19oYXNoX18oKSJcbicKKyAgICAgICAgICAgICAgICAgJyAgIHdpbGwgaGF2ZSBpdHMgIl9faGFzaF9fKCkiIGltcGxpY2l0bHkgc2V0IHRvICJOb25lIi4gICcKKyAgICAgICAgICAgICAgICAgJ1doZW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICAiX19oYXNoX18oKSIgbWV0aG9kIG9mIGEgY2xhc3MgaXMgIk5vbmUiLCBpbnN0YW5jZXMgb2YgJworICAgICAgICAgICAgICAgICAndGhlIGNsYXNzXG4nCisgICAgICAgICAgICAgICAgICcgICB3aWxsIHJhaXNlIGFuIGFwcHJvcHJpYXRlICJUeXBlRXJyb3IiIHdoZW4gYSBwcm9ncmFtICcKKyAgICAgICAgICAgICAgICAgJ2F0dGVtcHRzIHRvXG4nCisgICAgICAgICAgICAgICAgICcgICByZXRyaWV2ZSB0aGVpciBoYXNoIHZhbHVlLCBhbmQgd2lsbCBhbHNvIGJlIGNvcnJlY3RseSAnCisgICAgICAgICAgICAgICAgICdpZGVudGlmaWVkIGFzXG4nCisgICAgICAgICAgICAgICAgICcgICB1bmhhc2hhYmxlIHdoZW4gY2hlY2tpbmcgImlzaW5zdGFuY2Uob2JqLCAnCisgICAgICAgICAgICAgICAgICdjb2xsZWN0aW9ucy5IYXNoYWJsZSkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBJZiBhIGNsYXNzIHRoYXQgb3ZlcnJpZGVzICJfX2VxX18oKSIgbmVlZHMgdG8gcmV0YWluIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgaW1wbGVtZW50YXRpb24gb2YgIl9faGFzaF9fKCkiIGZyb20gYSBwYXJlbnQgY2xhc3MsIHRoZSAnCisgICAgICAgICAgICAgICAgICdpbnRlcnByZXRlclxuJworICAgICAgICAgICAgICAgICAnICAgbXVzdCBiZSB0b2xkIHRoaXMgZXhwbGljaXRseSBieSBzZXR0aW5nICJfX2hhc2hfXyA9XG4nCisgICAgICAgICAgICAgICAgICcgICA8UGFyZW50Q2xhc3M+Ll9faGFzaF9fIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgSWYgYSBjbGFzcyB0aGF0IGRvZXMgbm90IG92ZXJyaWRlICJfX2VxX18oKSIgd2lzaGVzIHRvICcKKyAgICAgICAgICAgICAgICAgJ3N1cHByZXNzXG4nCisgICAgICAgICAgICAgICAgICcgICBoYXNoIHN1cHBvcnQsIGl0IHNob3VsZCBpbmNsdWRlICJfX2hhc2hfXyA9IE5vbmUiIGluIHRoZSAnCisgICAgICAgICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICAgICAgICAnICAgZGVmaW5pdGlvbi4gQSBjbGFzcyB3aGljaCBkZWZpbmVzIGl0cyBvd24gIl9faGFzaF9fKCkiICcKKyAgICAgICAgICAgICAgICAgJ3RoYXRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGV4cGxpY2l0bHkgcmFpc2VzIGEgIlR5cGVFcnJvciIgd291bGQgYmUgaW5jb3JyZWN0bHkgJworICAgICAgICAgICAgICAgICAnaWRlbnRpZmllZCBhc1xuJworICAgICAgICAgICAgICAgICAnICAgaGFzaGFibGUgYnkgYW4gImlzaW5zdGFuY2Uob2JqLCBjb2xsZWN0aW9ucy5IYXNoYWJsZSkiICcKKyAgICAgICAgICAgICAgICAgJ2NhbGwuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIE5vdGU6IEJ5IGRlZmF1bHQsIHRoZSAiX19oYXNoX18oKSIgdmFsdWVzIG9mIHN0ciwgYnl0ZXMgJworICAgICAgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGRhdGV0aW1lIG9iamVjdHMgYXJlICJzYWx0ZWQiIHdpdGggYW4gdW5wcmVkaWN0YWJsZSAnCisgICAgICAgICAgICAgICAgICdyYW5kb20gdmFsdWUuXG4nCisgICAgICAgICAgICAgICAgICcgICAgIEFsdGhvdWdoIHRoZXkgcmVtYWluIGNvbnN0YW50IHdpdGhpbiBhbiBpbmRpdmlkdWFsICcKKyAgICAgICAgICAgICAgICAgJ1B5dGhvblxuJworICAgICAgICAgICAgICAgICAnICAgICBwcm9jZXNzLCB0aGV5IGFyZSBub3QgcHJlZGljdGFibGUgYmV0d2VlbiByZXBlYXRlZCAnCisgICAgICAgICAgICAgICAgICdpbnZvY2F0aW9ucyBvZlxuJworICAgICAgICAgICAgICAgICAnICAgICBQeXRob24uVGhpcyBpcyBpbnRlbmRlZCB0byBwcm92aWRlIHByb3RlY3Rpb24gYWdhaW5zdCBhICcKKyAgICAgICAgICAgICAgICAgJ2RlbmlhbC1cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgb2Ytc2VydmljZSBjYXVzZWQgYnkgY2FyZWZ1bGx5LWNob3NlbiBpbnB1dHMgdGhhdCAnCisgICAgICAgICAgICAgICAgICdleHBsb2l0IHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgICB3b3JzdCBjYXNlIHBlcmZvcm1hbmNlIG9mIGEgZGljdCBpbnNlcnRpb24sIE8obl4yKSAnCisgICAgICAgICAgICAgICAgICdjb21wbGV4aXR5LlxuJworICAgICAgICAgICAgICAgICAnICAgICBTZWUgaHR0cDovL3d3dy5vY2VydC5vcmcvYWR2aXNvcmllcy9vY2VydC0yMDExLTAwMy5odG1sICcKKyAgICAgICAgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICAgICAgICAnICAgICBkZXRhaWxzLkNoYW5naW5nIGhhc2ggdmFsdWVzIGFmZmVjdHMgdGhlIGl0ZXJhdGlvbiAnCisgICAgICAgICAgICAgICAgICdvcmRlciBvZlxuJworICAgICAgICAgICAgICAgICAnICAgICBkaWN0cywgc2V0cyBhbmQgb3RoZXIgbWFwcGluZ3MuICBQeXRob24gaGFzIG5ldmVyIG1hZGUgJworICAgICAgICAgICAgICAgICAnZ3VhcmFudGVlc1xuJworICAgICAgICAgICAgICAgICAnICAgICBhYm91dCB0aGlzIG9yZGVyaW5nIChhbmQgaXQgdHlwaWNhbGx5IHZhcmllcyBiZXR3ZWVuICcKKyAgICAgICAgICAgICAgICAgJzMyLWJpdCBhbmRcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgNjQtYml0IGJ1aWxkcykuU2VlIGFsc28gIlBZVEhPTkhBU0hTRUVEIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMzogSGFzaCByYW5kb21pemF0aW9uIGlzIGVuYWJsZWQgYnkgJworICAgICAgICAgICAgICAgICAnZGVmYXVsdC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fYm9vbF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgdHJ1dGggdmFsdWUgdGVzdGluZyBhbmQgdGhlIGJ1aWx0LWluICcKKyAgICAgICAgICAgICAgICAgJ29wZXJhdGlvblxuJworICAgICAgICAgICAgICAgICAnICAgImJvb2woKSI7IHNob3VsZCByZXR1cm4gIkZhbHNlIiBvciAiVHJ1ZSIuICBXaGVuIHRoaXMgJworICAgICAgICAgICAgICAgICAnbWV0aG9kIGlzIG5vdFxuJworICAgICAgICAgICAgICAgICAnICAgZGVmaW5lZCwgIl9fbGVuX18oKSIgaXMgY2FsbGVkLCBpZiBpdCBpcyBkZWZpbmVkLCBhbmQgdGhlICcKKyAgICAgICAgICAgICAgICAgJ29iamVjdCBpc1xuJworICAgICAgICAgICAgICAgICAnICAgY29uc2lkZXJlZCB0cnVlIGlmIGl0cyByZXN1bHQgaXMgbm9uemVyby4gIElmIGEgY2xhc3MgJworICAgICAgICAgICAgICAgICAnZGVmaW5lc1xuJworICAgICAgICAgICAgICAgICAnICAgbmVpdGhlciAiX19sZW5fXygpIiBub3IgIl9fYm9vbF9fKCkiLCBhbGwgaXRzIGluc3RhbmNlcyAnCisgICAgICAgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNvbnNpZGVyZWQgdHJ1ZS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdDdXN0b21pemluZyBhdHRyaWJ1dGUgYWNjZXNzXG4nCisgICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBjdXN0b21pemUgdGhlICcKKyAgICAgICAgICAgICAgICAgJ21lYW5pbmcgb2ZcbicKKyAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZSBhY2Nlc3MgKHVzZSBvZiwgYXNzaWdubWVudCB0bywgb3IgZGVsZXRpb24gb2YgJworICAgICAgICAgICAgICAgICAnIngubmFtZSIpIGZvclxuJworICAgICAgICAgICAgICAgICAnY2xhc3MgaW5zdGFuY2VzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19nZXRhdHRyX18oc2VsZiwgbmFtZSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGxvb2t1cCBoYXMgbm90IGZvdW5kIHRoZSAnCisgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGUgaW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICB1c3VhbCBwbGFjZXMgKGkuZS4gaXQgaXMgbm90IGFuIGluc3RhbmNlIGF0dHJpYnV0ZSBub3IgaXMgJworICAgICAgICAgICAgICAgICAnaXQgZm91bmRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGluIHRoZSBjbGFzcyB0cmVlIGZvciAic2VsZiIpLiAgIm5hbWUiIGlzIHRoZSBhdHRyaWJ1dGUgJworICAgICAgICAgICAgICAgICAnbmFtZS4gVGhpc1xuJworICAgICAgICAgICAgICAgICAnICAgbWV0aG9kIHNob3VsZCByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yICcKKyAgICAgICAgICAgICAgICAgJ3JhaXNlIGFuXG4nCisgICAgICAgICAgICAgICAgICcgICAiQXR0cmlidXRlRXJyb3IiIGV4Y2VwdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgTm90ZSB0aGF0IGlmIHRoZSBhdHRyaWJ1dGUgaXMgZm91bmQgdGhyb3VnaCB0aGUgbm9ybWFsICcKKyAgICAgICAgICAgICAgICAgJ21lY2hhbmlzbSxcbicKKyAgICAgICAgICAgICAgICAgJyAgICJfX2dldGF0dHJfXygpIiBpcyBub3QgY2FsbGVkLiAgKFRoaXMgaXMgYW4gaW50ZW50aW9uYWwgJworICAgICAgICAgICAgICAgICAnYXN5bW1ldHJ5XG4nCisgICAgICAgICAgICAgICAgICcgICBiZXR3ZWVuICJfX2dldGF0dHJfXygpIiBhbmQgIl9fc2V0YXR0cl9fKCkiLikgVGhpcyBpcyAnCisgICAgICAgICAgICAgICAgICdkb25lIGJvdGggZm9yXG4nCisgICAgICAgICAgICAgICAgICcgICBlZmZpY2llbmN5IHJlYXNvbnMgYW5kIGJlY2F1c2Ugb3RoZXJ3aXNlICJfX2dldGF0dHJfXygpIiAnCisgICAgICAgICAgICAgICAgICd3b3VsZCBoYXZlXG4nCisgICAgICAgICAgICAgICAgICcgICBubyB3YXkgdG8gYWNjZXNzIG90aGVyIGF0dHJpYnV0ZXMgb2YgdGhlIGluc3RhbmNlLiAgTm90ZSAnCisgICAgICAgICAgICAgICAgICd0aGF0IGF0XG4nCisgICAgICAgICAgICAgICAgICcgICBsZWFzdCBmb3IgaW5zdGFuY2UgdmFyaWFibGVzLCB5b3UgY2FuIGZha2UgdG90YWwgY29udHJvbCAnCisgICAgICAgICAgICAgICAgICdieSBub3RcbicKKyAgICAgICAgICAgICAgICAgJyAgIGluc2VydGluZyBhbnkgdmFsdWVzIGluIHRoZSBpbnN0YW5jZSBhdHRyaWJ1dGUgZGljdGlvbmFyeSAnCisgICAgICAgICAgICAgICAgICcoYnV0XG4nCisgICAgICAgICAgICAgICAgICcgICBpbnN0ZWFkIGluc2VydGluZyB0aGVtIGluIGFub3RoZXIgb2JqZWN0KS4gIFNlZSB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgICJfX2dldGF0dHJpYnV0ZV9fKCkiIG1ldGhvZCBiZWxvdyBmb3IgYSB3YXkgdG8gYWN0dWFsbHkgJworICAgICAgICAgICAgICAgICAnZ2V0IHRvdGFsXG4nCisgICAgICAgICAgICAgICAgICcgICBjb250cm9sIG92ZXIgYXR0cmlidXRlIGFjY2Vzcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHVuY29uZGl0aW9uYWxseSB0byBpbXBsZW1lbnQgYXR0cmlidXRlIGFjY2Vzc2VzICcKKyAgICAgICAgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2VzIG9mIHRoZSBjbGFzcy4gSWYgdGhlIGNsYXNzIGFsc28gZGVmaW5lcyAnCisgICAgICAgICAgICAgICAgICciX19nZXRhdHRyX18oKSIsXG4nCisgICAgICAgICAgICAgICAgICcgICB0aGUgbGF0dGVyIHdpbGwgbm90IGJlIGNhbGxlZCB1bmxlc3MgIl9fZ2V0YXR0cmlidXRlX18oKSIgJworICAgICAgICAgICAgICAgICAnZWl0aGVyXG4nCisgICAgICAgICAgICAgICAgICcgICBjYWxscyBpdCBleHBsaWNpdGx5IG9yIHJhaXNlcyBhbiAiQXR0cmlidXRlRXJyb3IiLiBUaGlzICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZFxuJworICAgICAgICAgICAgICAgICAnICAgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW5cbicKKyAgICAgICAgICAgICAgICAgJyAgICJBdHRyaWJ1dGVFcnJvciIgZXhjZXB0aW9uLiBJbiBvcmRlciB0byBhdm9pZCBpbmZpbml0ZSAnCisgICAgICAgICAgICAgICAgICdyZWN1cnNpb24gaW5cbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoaXMgbWV0aG9kLCBpdHMgaW1wbGVtZW50YXRpb24gc2hvdWxkIGFsd2F5cyBjYWxsIHRoZSAnCisgICAgICAgICAgICAgICAgICdiYXNlIGNsYXNzXG4nCisgICAgICAgICAgICAgICAgICcgICBtZXRob2Qgd2l0aCB0aGUgc2FtZSBuYW1lIHRvIGFjY2VzcyBhbnkgYXR0cmlidXRlcyBpdCAnCisgICAgICAgICAgICAgICAgICduZWVkcywgZm9yXG4nCisgICAgICAgICAgICAgICAgICcgICBleGFtcGxlLCAib2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBOb3RlOiBUaGlzIG1ldGhvZCBtYXkgc3RpbGwgYmUgYnlwYXNzZWQgd2hlbiBsb29raW5nIHVwICcKKyAgICAgICAgICAgICAgICAgJ3NwZWNpYWxcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgbWV0aG9kcyBhcyB0aGUgcmVzdWx0IG9mIGltcGxpY2l0IGludm9jYXRpb24gdmlhICcKKyAgICAgICAgICAgICAgICAgJ2xhbmd1YWdlIHN5bnRheFxuJworICAgICAgICAgICAgICAgICAnICAgICBvciBidWlsdC1pbiBmdW5jdGlvbnMuIFNlZSBTcGVjaWFsIG1ldGhvZCBsb29rdXAuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGFzc2lnbm1lbnQgaXMgYXR0ZW1wdGVkLiAgVGhpcyAnCisgICAgICAgICAgICAgICAgICdpcyBjYWxsZWRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGluc3RlYWQgb2YgdGhlIG5vcm1hbCBtZWNoYW5pc20gKGkuZS4gc3RvcmUgdGhlIHZhbHVlIGluICcKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2UgZGljdGlvbmFyeSkuICpuYW1lKiBpcyB0aGUgYXR0cmlidXRlIG5hbWUsICcKKyAgICAgICAgICAgICAgICAgJyp2YWx1ZSogaXMgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICB2YWx1ZSB0byBiZSBhc3NpZ25lZCB0byBpdC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgSWYgIl9fc2V0YXR0cl9fKCkiIHdhbnRzIHRvIGFzc2lnbiB0byBhbiBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGUsIGl0XG4nCisgICAgICAgICAgICAgICAgICcgICBzaG91bGQgY2FsbCB0aGUgYmFzZSBjbGFzcyBtZXRob2Qgd2l0aCB0aGUgc2FtZSBuYW1lLCBmb3IgJworICAgICAgICAgICAgICAgICAnZXhhbXBsZSxcbicKKyAgICAgICAgICAgICAgICAgJyAgICJvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZGVsYXR0cl9fKHNlbGYsIG5hbWUpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIExpa2UgIl9fc2V0YXR0cl9fKCkiIGJ1dCBmb3IgYXR0cmlidXRlIGRlbGV0aW9uIGluc3RlYWQgJworICAgICAgICAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFzc2lnbm1lbnQuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGlmICJkZWwgJworICAgICAgICAgICAgICAgICAnb2JqLm5hbWUiIGlzXG4nCisgICAgICAgICAgICAgICAgICcgICBtZWFuaW5nZnVsIGZvciB0aGUgb2JqZWN0LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19kaXJfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgd2hlbiAiZGlyKCkiIGlzIGNhbGxlZCBvbiB0aGUgb2JqZWN0LiBBIHNlcXVlbmNlICcKKyAgICAgICAgICAgICAgICAgJ211c3QgYmVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJldHVybmVkLiAiZGlyKCkiIGNvbnZlcnRzIHRoZSByZXR1cm5lZCBzZXF1ZW5jZSB0byBhICcKKyAgICAgICAgICAgICAgICAgJ2xpc3QgYW5kXG4nCisgICAgICAgICAgICAgICAgICcgICBzb3J0cyBpdC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnNcbicKKyAgICAgICAgICAgICAgICAgJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgZm9sbG93aW5nIG1ldGhvZHMgb25seSBhcHBseSB3aGVuIGFuIGluc3RhbmNlIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICAgICAgICAnY29udGFpbmluZyB0aGUgbWV0aG9kIChhIHNvLWNhbGxlZCAqZGVzY3JpcHRvciogY2xhc3MpICcKKyAgICAgICAgICAgICAgICAgJ2FwcGVhcnMgaW4gYW5cbicKKyAgICAgICAgICAgICAgICAgIipvd25lciogY2xhc3MgKHRoZSBkZXNjcmlwdG9yIG11c3QgYmUgaW4gZWl0aGVyIHRoZSBvd25lcidzICIKKyAgICAgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5IG9yIGluIHRoZSBjbGFzcyBkaWN0aW9uYXJ5IGZvciBvbmUgb2YgaXRzICcKKyAgICAgICAgICAgICAgICAgJ3BhcmVudHMpLiAgSW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICdleGFtcGxlcyBiZWxvdywgInRoZSBhdHRyaWJ1dGUiIHJlZmVycyB0byB0aGUgYXR0cmlidXRlICcKKyAgICAgICAgICAgICAgICAgJ3dob3NlIG5hbWUgaXNcbicKKyAgICAgICAgICAgICAgICAgJ3RoZSBrZXkgb2YgdGhlIHByb3BlcnR5IGluIHRoZSBvd25lciBjbGFzc1wnICJfX2RpY3RfXyIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2dldF9fKHNlbGYsIGluc3RhbmNlLCBvd25lcilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGdldCB0aGUgYXR0cmlidXRlIG9mIHRoZSBvd25lciBjbGFzcyAoY2xhc3MgJworICAgICAgICAgICAgICAgICAnYXR0cmlidXRlXG4nCisgICAgICAgICAgICAgICAgICcgICBhY2Nlc3MpIG9yIG9mIGFuIGluc3RhbmNlIG9mIHRoYXQgY2xhc3MgKGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZVxuJworICAgICAgICAgICAgICAgICAnICAgYWNjZXNzKS4gKm93bmVyKiBpcyBhbHdheXMgdGhlIG93bmVyIGNsYXNzLCB3aGlsZSAnCisgICAgICAgICAgICAgICAgICcqaW5zdGFuY2UqIGlzIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2UgdGhhdCB0aGUgYXR0cmlidXRlIHdhcyBhY2Nlc3NlZCB0aHJvdWdoLCBvciAnCisgICAgICAgICAgICAgICAgICciTm9uZSIgd2hlblxuJworICAgICAgICAgICAgICAgICAnICAgdGhlIGF0dHJpYnV0ZSBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSAqb3duZXIqLiAgVGhpcyAnCisgICAgICAgICAgICAgICAgICdtZXRob2Qgc2hvdWxkXG4nCisgICAgICAgICAgICAgICAgICcgICByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlIGFuICcKKyAgICAgICAgICAgICAgICAgJyJBdHRyaWJ1dGVFcnJvciJcbicKKyAgICAgICAgICAgICAgICAgJyAgIGV4Y2VwdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fc2V0X18oc2VsZiwgaW5zdGFuY2UsIHZhbHVlKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gc2V0IHRoZSBhdHRyaWJ1dGUgb24gYW4gaW5zdGFuY2UgKmluc3RhbmNlKiBvZiAnCisgICAgICAgICAgICAgICAgICd0aGUgb3duZXJcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNsYXNzIHRvIGEgbmV3IHZhbHVlLCAqdmFsdWUqLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19kZWxldGVfXyhzZWxmLCBpbnN0YW5jZSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGRlbGV0ZSB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogJworICAgICAgICAgICAgICAgICAnb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBvd25lciBjbGFzcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fc2V0X25hbWVfXyhzZWxmLCBvd25lciwgbmFtZSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIGF0IHRoZSB0aW1lIHRoZSBvd25pbmcgY2xhc3MgKm93bmVyKiBpcyBjcmVhdGVkLiAnCisgICAgICAgICAgICAgICAgICdUaGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGRlc2NyaXB0b3IgaGFzIGJlZW4gYXNzaWduZWQgdG8gKm5hbWUqLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAzLjYuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBhdHRyaWJ1dGUgIl9fb2JqY2xhc3NfXyIgaXMgaW50ZXJwcmV0ZWQgYnkgdGhlICJpbnNwZWN0IiAnCisgICAgICAgICAgICAgICAgICdtb2R1bGUgYXNcbicKKyAgICAgICAgICAgICAgICAgJ3NwZWNpZnlpbmcgdGhlIGNsYXNzIHdoZXJlIHRoaXMgb2JqZWN0IHdhcyBkZWZpbmVkIChzZXR0aW5nICcKKyAgICAgICAgICAgICAgICAgJ3RoaXNcbicKKyAgICAgICAgICAgICAgICAgJ2FwcHJvcHJpYXRlbHkgY2FuIGFzc2lzdCBpbiBydW50aW1lIGludHJvc3BlY3Rpb24gb2YgZHluYW1pYyAnCisgICAgICAgICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICAgICAgICAnYXR0cmlidXRlcykuIEZvciBjYWxsYWJsZXMsIGl0IG1heSBpbmRpY2F0ZSB0aGF0IGFuIGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgJ29mIHRoZVxuJworICAgICAgICAgICAgICAgICAnZ2l2ZW4gdHlwZSAob3IgYSBzdWJjbGFzcykgaXMgZXhwZWN0ZWQgb3IgcmVxdWlyZWQgYXMgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2ZpcnN0XG4nCisgICAgICAgICAgICAgICAgICdwb3NpdGlvbmFsIGFyZ3VtZW50IChmb3IgZXhhbXBsZSwgQ1B5dGhvbiBzZXRzIHRoaXMgJworICAgICAgICAgICAgICAgICAnYXR0cmlidXRlIGZvclxuJworICAgICAgICAgICAgICAgICAndW5ib3VuZCBtZXRob2RzIHRoYXQgYXJlIGltcGxlbWVudGVkIGluIEMpLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0ludm9raW5nIERlc2NyaXB0b3JzXG4nCisgICAgICAgICAgICAgICAgICctLS0tLS0tLS0tLS0tLS0tLS0tLVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdJbiBnZW5lcmFsLCBhIGRlc2NyaXB0b3IgaXMgYW4gb2JqZWN0IGF0dHJpYnV0ZSB3aXRoICcKKyAgICAgICAgICAgICAgICAgJyJiaW5kaW5nXG4nCisgICAgICAgICAgICAgICAgICdiZWhhdmlvciIsIG9uZSB3aG9zZSBhdHRyaWJ1dGUgYWNjZXNzIGhhcyBiZWVuIG92ZXJyaWRkZW4gYnkgJworICAgICAgICAgICAgICAgICAnbWV0aG9kc1xuJworICAgICAgICAgICAgICAgICAnaW4gdGhlIGRlc2NyaXB0b3IgcHJvdG9jb2w6ICAiX19nZXRfXygpIiwgIl9fc2V0X18oKSIsIGFuZFxuJworICAgICAgICAgICAgICAgICAnIl9fZGVsZXRlX18oKSIuIElmIGFueSBvZiB0aG9zZSBtZXRob2RzIGFyZSBkZWZpbmVkIGZvciBhbiAnCisgICAgICAgICAgICAgICAgICdvYmplY3QsIGl0XG4nCisgICAgICAgICAgICAgICAgICdpcyBzYWlkIHRvIGJlIGEgZGVzY3JpcHRvci5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIGRlZmF1bHQgYmVoYXZpb3IgZm9yIGF0dHJpYnV0ZSBhY2Nlc3MgaXMgdG8gZ2V0LCBzZXQsIG9yICcKKyAgICAgICAgICAgICAgICAgJ2RlbGV0ZVxuJworICAgICAgICAgICAgICAgICAidGhlIGF0dHJpYnV0ZSBmcm9tIGFuIG9iamVjdCdzIGRpY3Rpb25hcnkuIEZvciBpbnN0YW5jZSwgIgorICAgICAgICAgICAgICAgICAnImEueCIgaGFzIGFcbicKKyAgICAgICAgICAgICAgICAgJ2xvb2t1cCBjaGFpbiBzdGFydGluZyB3aXRoICJhLl9fZGljdF9fW1wneFwnXSIsIHRoZW5cbicKKyAgICAgICAgICAgICAgICAgJyJ0eXBlKGEpLl9fZGljdF9fW1wneFwnXSIsIGFuZCBjb250aW51aW5nIHRocm91Z2ggdGhlIGJhc2UgJworICAgICAgICAgICAgICAgICAnY2xhc3NlcyBvZlxuJworICAgICAgICAgICAgICAgICAnInR5cGUoYSkiIGV4Y2x1ZGluZyBtZXRhY2xhc3Nlcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnSG93ZXZlciwgaWYgdGhlIGxvb2tlZC11cCB2YWx1ZSBpcyBhbiBvYmplY3QgZGVmaW5pbmcgb25lIG9mICcKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnZGVzY3JpcHRvciBtZXRob2RzLCB0aGVuIFB5dGhvbiBtYXkgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgJworICAgICAgICAgICAgICAgICAnYmVoYXZpb3IgYW5kXG4nCisgICAgICAgICAgICAgICAgICdpbnZva2UgdGhlIGRlc2NyaXB0b3IgbWV0aG9kIGluc3RlYWQuICBXaGVyZSB0aGlzIG9jY3VycyBpbiAnCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgJ3ByZWNlZGVuY2UgY2hhaW4gZGVwZW5kcyBvbiB3aGljaCBkZXNjcmlwdG9yIG1ldGhvZHMgd2VyZSAnCisgICAgICAgICAgICAgICAgICdkZWZpbmVkIGFuZFxuJworICAgICAgICAgICAgICAgICAnaG93IHRoZXkgd2VyZSBjYWxsZWQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBzdGFydGluZyBwb2ludCBmb3IgZGVzY3JpcHRvciBpbnZvY2F0aW9uIGlzIGEgYmluZGluZywgJworICAgICAgICAgICAgICAgICAnImEueCIuIEhvd1xuJworICAgICAgICAgICAgICAgICAndGhlIGFyZ3VtZW50cyBhcmUgYXNzZW1ibGVkIGRlcGVuZHMgb24gImEiOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdEaXJlY3QgQ2FsbFxuJworICAgICAgICAgICAgICAgICAnICAgVGhlIHNpbXBsZXN0IGFuZCBsZWFzdCBjb21tb24gY2FsbCBpcyB3aGVuIHVzZXIgY29kZSAnCisgICAgICAgICAgICAgICAgICdkaXJlY3RseVxuJworICAgICAgICAgICAgICAgICAnICAgaW52b2tlcyBhIGRlc2NyaXB0b3IgbWV0aG9kOiAgICAieC5fX2dldF9fKGEpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnSW5zdGFuY2UgQmluZGluZ1xuJworICAgICAgICAgICAgICAgICAnICAgSWYgYmluZGluZyB0byBhbiBvYmplY3QgaW5zdGFuY2UsICJhLngiIGlzIHRyYW5zZm9ybWVkICcKKyAgICAgICAgICAgICAgICAgJ2ludG8gdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBjYWxsOiAidHlwZShhKS5fX2RpY3RfX1tcJ3hcJ10uX19nZXRfXyhhLCB0eXBlKGEpKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0NsYXNzIEJpbmRpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgIElmIGJpbmRpbmcgdG8gYSBjbGFzcywgIkEueCIgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgJworICAgICAgICAgICAgICAgICAnY2FsbDpcbicKKyAgICAgICAgICAgICAgICAgJyAgICJBLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKE5vbmUsIEEpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnU3VwZXIgQmluZGluZ1xuJworICAgICAgICAgICAgICAgICAnICAgSWYgImEiIGlzIGFuIGluc3RhbmNlIG9mICJzdXBlciIsIHRoZW4gdGhlIGJpbmRpbmcgJworICAgICAgICAgICAgICAgICAnInN1cGVyKEIsXG4nCisgICAgICAgICAgICAgICAgICcgICBvYmopLm0oKSIgc2VhcmNoZXMgIm9iai5fX2NsYXNzX18uX19tcm9fXyIgZm9yIHRoZSBiYXNlICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzICJBIlxuJworICAgICAgICAgICAgICAgICAnICAgaW1tZWRpYXRlbHkgcHJlY2VkaW5nICJCIiBhbmQgdGhlbiBpbnZva2VzIHRoZSBkZXNjcmlwdG9yICcKKyAgICAgICAgICAgICAgICAgJ3dpdGggdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBjYWxsOiAiQS5fX2RpY3RfX1tcJ21cJ10uX19nZXRfXyhvYmosIG9iai5fX2NsYXNzX18pIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnRm9yIGluc3RhbmNlIGJpbmRpbmdzLCB0aGUgcHJlY2VkZW5jZSBvZiBkZXNjcmlwdG9yICcKKyAgICAgICAgICAgICAgICAgJ2ludm9jYXRpb24gZGVwZW5kc1xuJworICAgICAgICAgICAgICAgICAnb24gdGhlIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyBhcmUgZGVmaW5lZC4gIEEgZGVzY3JpcHRvciAnCisgICAgICAgICAgICAgICAgICdjYW4gZGVmaW5lXG4nCisgICAgICAgICAgICAgICAgICdhbnkgY29tYmluYXRpb24gb2YgIl9fZ2V0X18oKSIsICJfX3NldF9fKCkiIGFuZCAnCisgICAgICAgICAgICAgICAgICciX19kZWxldGVfXygpIi4gIElmIGl0XG4nCisgICAgICAgICAgICAgICAgICdkb2VzIG5vdCBkZWZpbmUgIl9fZ2V0X18oKSIsIHRoZW4gYWNjZXNzaW5nIHRoZSBhdHRyaWJ1dGUgJworICAgICAgICAgICAgICAgICAnd2lsbCByZXR1cm5cbicKKyAgICAgICAgICAgICAgICAgJ3RoZSBkZXNjcmlwdG9yIG9iamVjdCBpdHNlbGYgdW5sZXNzIHRoZXJlIGlzIGEgdmFsdWUgaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgIm9iamVjdCdzXG4iCisgICAgICAgICAgICAgICAgICdpbnN0YW5jZSBkaWN0aW9uYXJ5LiAgSWYgdGhlIGRlc2NyaXB0b3IgZGVmaW5lcyAiX19zZXRfXygpIiAnCisgICAgICAgICAgICAgICAgICdhbmQvb3JcbicKKyAgICAgICAgICAgICAgICAgJyJfX2RlbGV0ZV9fKCkiLCBpdCBpcyBhIGRhdGEgZGVzY3JpcHRvcjsgaWYgaXQgZGVmaW5lcyAnCisgICAgICAgICAgICAgICAgICduZWl0aGVyLCBpdCBpc1xuJworICAgICAgICAgICAgICAgICAnYSBub24tZGF0YSBkZXNjcmlwdG9yLiAgTm9ybWFsbHksIGRhdGEgZGVzY3JpcHRvcnMgZGVmaW5lICcKKyAgICAgICAgICAgICAgICAgJ2JvdGhcbicKKyAgICAgICAgICAgICAgICAgJyJfX2dldF9fKCkiIGFuZCAiX19zZXRfXygpIiwgd2hpbGUgbm9uLWRhdGEgZGVzY3JpcHRvcnMgaGF2ZSAnCisgICAgICAgICAgICAgICAgICdqdXN0IHRoZVxuJworICAgICAgICAgICAgICAgICAnIl9fZ2V0X18oKSIgbWV0aG9kLiAgRGF0YSBkZXNjcmlwdG9ycyB3aXRoICJfX3NldF9fKCkiIGFuZCAnCisgICAgICAgICAgICAgICAgICciX19nZXRfXygpIlxuJworICAgICAgICAgICAgICAgICAnZGVmaW5lZCBhbHdheXMgb3ZlcnJpZGUgYSByZWRlZmluaXRpb24gaW4gYW4gaW5zdGFuY2UgJworICAgICAgICAgICAgICAgICAnZGljdGlvbmFyeS4gIEluXG4nCisgICAgICAgICAgICAgICAgICdjb250cmFzdCwgbm9uLWRhdGEgZGVzY3JpcHRvcnMgY2FuIGJlIG92ZXJyaWRkZW4gYnkgJworICAgICAgICAgICAgICAgICAnaW5zdGFuY2VzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdQeXRob24gbWV0aG9kcyAoaW5jbHVkaW5nICJzdGF0aWNtZXRob2QoKSIgYW5kICcKKyAgICAgICAgICAgICAgICAgJyJjbGFzc21ldGhvZCgpIikgYXJlXG4nCisgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRlZCBhcyBub24tZGF0YSBkZXNjcmlwdG9ycy4gIEFjY29yZGluZ2x5LCBpbnN0YW5jZXMgJworICAgICAgICAgICAgICAgICAnY2FuXG4nCisgICAgICAgICAgICAgICAgICdyZWRlZmluZSBhbmQgb3ZlcnJpZGUgbWV0aG9kcy4gIFRoaXMgYWxsb3dzIGluZGl2aWR1YWwgJworICAgICAgICAgICAgICAgICAnaW5zdGFuY2VzIHRvXG4nCisgICAgICAgICAgICAgICAgICdhY3F1aXJlIGJlaGF2aW9ycyB0aGF0IGRpZmZlciBmcm9tIG90aGVyIGluc3RhbmNlcyBvZiB0aGUgJworICAgICAgICAgICAgICAgICAnc2FtZSBjbGFzcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlICJwcm9wZXJ0eSgpIiBmdW5jdGlvbiBpcyBpbXBsZW1lbnRlZCBhcyBhIGRhdGEgJworICAgICAgICAgICAgICAgICAnZGVzY3JpcHRvci5cbicKKyAgICAgICAgICAgICAgICAgJ0FjY29yZGluZ2x5LCBpbnN0YW5jZXMgY2Fubm90IG92ZXJyaWRlIHRoZSBiZWhhdmlvciBvZiBhICcKKyAgICAgICAgICAgICAgICAgJ3Byb3BlcnR5LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ19fc2xvdHNfX1xuJworICAgICAgICAgICAgICAgICAnLS0tLS0tLS0tXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0J5IGRlZmF1bHQsIGluc3RhbmNlcyBvZiBjbGFzc2VzIGhhdmUgYSBkaWN0aW9uYXJ5IGZvciAnCisgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGVcbicKKyAgICAgICAgICAgICAgICAgJ3N0b3JhZ2UuICBUaGlzIHdhc3RlcyBzcGFjZSBmb3Igb2JqZWN0cyBoYXZpbmcgdmVyeSBmZXcgJworICAgICAgICAgICAgICAgICAnaW5zdGFuY2VcbicKKyAgICAgICAgICAgICAgICAgJ3ZhcmlhYmxlcy4gIFRoZSBzcGFjZSBjb25zdW1wdGlvbiBjYW4gYmVjb21lIGFjdXRlIHdoZW4gJworICAgICAgICAgICAgICAgICAnY3JlYXRpbmcgbGFyZ2VcbicKKyAgICAgICAgICAgICAgICAgJ251bWJlcnMgb2YgaW5zdGFuY2VzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgZGVmYXVsdCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBkZWZpbmluZyAqX19zbG90c19fKiBpbiBhICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgICAgICdkZWZpbml0aW9uLiBUaGUgKl9fc2xvdHNfXyogZGVjbGFyYXRpb24gdGFrZXMgYSBzZXF1ZW5jZSBvZiAnCisgICAgICAgICAgICAgICAgICdpbnN0YW5jZVxuJworICAgICAgICAgICAgICAgICAndmFyaWFibGVzIGFuZCByZXNlcnZlcyBqdXN0IGVub3VnaCBzcGFjZSBpbiBlYWNoIGluc3RhbmNlIHRvICcKKyAgICAgICAgICAgICAgICAgJ2hvbGQgYVxuJworICAgICAgICAgICAgICAgICAndmFsdWUgZm9yIGVhY2ggdmFyaWFibGUuICBTcGFjZSBpcyBzYXZlZCBiZWNhdXNlICpfX2RpY3RfXyogJworICAgICAgICAgICAgICAgICAnaXMgbm90XG4nCisgICAgICAgICAgICAgICAgICdjcmVhdGVkIGZvciBlYWNoIGluc3RhbmNlLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19zbG90c19fXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoaXMgY2xhc3MgdmFyaWFibGUgY2FuIGJlIGFzc2lnbmVkIGEgc3RyaW5nLCBpdGVyYWJsZSwgJworICAgICAgICAgICAgICAgICAnb3Igc2VxdWVuY2VcbicKKyAgICAgICAgICAgICAgICAgJyAgIG9mIHN0cmluZ3Mgd2l0aCB2YXJpYWJsZSBuYW1lcyB1c2VkIGJ5IGluc3RhbmNlcy4gICcKKyAgICAgICAgICAgICAgICAgJypfX3Nsb3RzX18qXG4nCisgICAgICAgICAgICAgICAgICcgICByZXNlcnZlcyBzcGFjZSBmb3IgdGhlIGRlY2xhcmVkIHZhcmlhYmxlcyBhbmQgcHJldmVudHMgJworICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBhdXRvbWF0aWMgY3JlYXRpb24gb2YgKl9fZGljdF9fKiBhbmQgKl9fd2Vha3JlZl9fKiBmb3IgJworICAgICAgICAgICAgICAgICAnZWFjaFxuJworICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2UuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnTm90ZXMgb24gdXNpbmcgKl9fc2xvdHNfXypcbicKKyAgICAgICAgICAgICAgICAgJ35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogV2hlbiBpbmhlcml0aW5nIGZyb20gYSBjbGFzcyB3aXRob3V0ICpfX3Nsb3RzX18qLCB0aGUgJworICAgICAgICAgICAgICAgICAnKl9fZGljdF9fKlxuJworICAgICAgICAgICAgICAgICAnICBhdHRyaWJ1dGUgb2YgdGhhdCBjbGFzcyB3aWxsIGFsd2F5cyBiZSBhY2Nlc3NpYmxlLCBzbyBhICcKKyAgICAgICAgICAgICAgICAgJypfX3Nsb3RzX18qXG4nCisgICAgICAgICAgICAgICAgICcgIGRlZmluaXRpb24gaW4gdGhlIHN1YmNsYXNzIGlzIG1lYW5pbmdsZXNzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIFdpdGhvdXQgYSAqX19kaWN0X18qIHZhcmlhYmxlLCBpbnN0YW5jZXMgY2Fubm90IGJlICcKKyAgICAgICAgICAgICAgICAgJ2Fzc2lnbmVkIG5ld1xuJworICAgICAgICAgICAgICAgICAnICB2YXJpYWJsZXMgbm90IGxpc3RlZCBpbiB0aGUgKl9fc2xvdHNfXyogZGVmaW5pdGlvbi4gICcKKyAgICAgICAgICAgICAgICAgJ0F0dGVtcHRzIHRvXG4nCisgICAgICAgICAgICAgICAgICcgIGFzc2lnbiB0byBhbiB1bmxpc3RlZCB2YXJpYWJsZSBuYW1lIHJhaXNlcyAnCisgICAgICAgICAgICAgICAgICciQXR0cmlidXRlRXJyb3IiLiBJZlxuJworICAgICAgICAgICAgICAgICAnICBkeW5hbWljIGFzc2lnbm1lbnQgb2YgbmV3IHZhcmlhYmxlcyBpcyBkZXNpcmVkLCB0aGVuIGFkZFxuJworICAgICAgICAgICAgICAgICAnICAiXCdfX2RpY3RfX1wnIiB0byB0aGUgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBpbiB0aGUgJworICAgICAgICAgICAgICAgICAnKl9fc2xvdHNfXypcbicKKyAgICAgICAgICAgICAgICAgJyAgZGVjbGFyYXRpb24uXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogV2l0aG91dCBhICpfX3dlYWtyZWZfXyogdmFyaWFibGUgZm9yIGVhY2ggaW5zdGFuY2UsICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzZXNcbicKKyAgICAgICAgICAgICAgICAgJyAgZGVmaW5pbmcgKl9fc2xvdHNfXyogZG8gbm90IHN1cHBvcnQgd2VhayByZWZlcmVuY2VzIHRvICcKKyAgICAgICAgICAgICAgICAgJ2l0c1xuJworICAgICAgICAgICAgICAgICAnICBpbnN0YW5jZXMuIElmIHdlYWsgcmVmZXJlbmNlIHN1cHBvcnQgaXMgbmVlZGVkLCB0aGVuIGFkZFxuJworICAgICAgICAgICAgICAgICAnICAiXCdfX3dlYWtyZWZfX1wnIiB0byB0aGUgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBpbiB0aGUgJworICAgICAgICAgICAgICAgICAnKl9fc2xvdHNfXypcbicKKyAgICAgICAgICAgICAgICAgJyAgZGVjbGFyYXRpb24uXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogKl9fc2xvdHNfXyogYXJlIGltcGxlbWVudGVkIGF0IHRoZSBjbGFzcyBsZXZlbCBieSAnCisgICAgICAgICAgICAgICAgICdjcmVhdGluZ1xuJworICAgICAgICAgICAgICAgICAnICBkZXNjcmlwdG9ycyAoSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzKSBmb3IgZWFjaCB2YXJpYWJsZSAnCisgICAgICAgICAgICAgICAgICduYW1lLiAgQXMgYVxuJworICAgICAgICAgICAgICAgICAnICByZXN1bHQsIGNsYXNzIGF0dHJpYnV0ZXMgY2Fubm90IGJlIHVzZWQgdG8gc2V0IGRlZmF1bHQgJworICAgICAgICAgICAgICAgICAndmFsdWVzIGZvclxuJworICAgICAgICAgICAgICAgICAnICBpbnN0YW5jZSB2YXJpYWJsZXMgZGVmaW5lZCBieSAqX19zbG90c19fKjsgb3RoZXJ3aXNlLCB0aGUgJworICAgICAgICAgICAgICAgICAnY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJyAgYXR0cmlidXRlIHdvdWxkIG92ZXJ3cml0ZSB0aGUgZGVzY3JpcHRvciBhc3NpZ25tZW50LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIFRoZSBhY3Rpb24gb2YgYSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiBpcyBsaW1pdGVkIHRvIHRoZSAnCisgICAgICAgICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICAgICAgICAnICB3aGVyZSBpdCBpcyBkZWZpbmVkLiAgQXMgYSByZXN1bHQsIHN1YmNsYXNzZXMgd2lsbCBoYXZlIGEgJworICAgICAgICAgICAgICAgICAnKl9fZGljdF9fKlxuJworICAgICAgICAgICAgICAgICAnICB1bmxlc3MgdGhleSBhbHNvIGRlZmluZSAqX19zbG90c19fKiAod2hpY2ggbXVzdCBvbmx5ICcKKyAgICAgICAgICAgICAgICAgJ2NvbnRhaW4gbmFtZXNcbicKKyAgICAgICAgICAgICAgICAgJyAgb2YgYW55ICphZGRpdGlvbmFsKiBzbG90cykuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogSWYgYSBjbGFzcyBkZWZpbmVzIGEgc2xvdCBhbHNvIGRlZmluZWQgaW4gYSBiYXNlIGNsYXNzLCAnCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgaW5zdGFuY2UgdmFyaWFibGUgZGVmaW5lZCBieSB0aGUgYmFzZSBjbGFzcyBzbG90IGlzICcKKyAgICAgICAgICAgICAgICAgJ2luYWNjZXNzaWJsZVxuJworICAgICAgICAgICAgICAgICAnICAoZXhjZXB0IGJ5IHJldHJpZXZpbmcgaXRzIGRlc2NyaXB0b3IgZGlyZWN0bHkgZnJvbSB0aGUgJworICAgICAgICAgICAgICAgICAnYmFzZSBjbGFzcykuXG4nCisgICAgICAgICAgICAgICAgICcgIFRoaXMgcmVuZGVycyB0aGUgbWVhbmluZyBvZiB0aGUgcHJvZ3JhbSB1bmRlZmluZWQuICBJbiB0aGUgJworICAgICAgICAgICAgICAgICAnZnV0dXJlLCBhXG4nCisgICAgICAgICAgICAgICAgICcgIGNoZWNrIG1heSBiZSBhZGRlZCB0byBwcmV2ZW50IHRoaXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogTm9uZW1wdHkgKl9fc2xvdHNfXyogZG9lcyBub3Qgd29yayBmb3IgY2xhc3NlcyBkZXJpdmVkICcKKyAgICAgICAgICAgICAgICAgJ2Zyb21cbicKKyAgICAgICAgICAgICAgICAgJyAgInZhcmlhYmxlLWxlbmd0aCIgYnVpbHQtaW4gdHlwZXMgc3VjaCBhcyAiaW50IiwgImJ5dGVzIiAnCisgICAgICAgICAgICAgICAgICdhbmQgInR1cGxlIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnKiBBbnkgbm9uLXN0cmluZyBpdGVyYWJsZSBtYXkgYmUgYXNzaWduZWQgdG8gKl9fc2xvdHNfXyouICcKKyAgICAgICAgICAgICAgICAgJ01hcHBpbmdzXG4nCisgICAgICAgICAgICAgICAgICcgIG1heSBhbHNvIGJlIHVzZWQ7IGhvd2V2ZXIsIGluIHRoZSBmdXR1cmUsIHNwZWNpYWwgbWVhbmluZyAnCisgICAgICAgICAgICAgICAgICdtYXkgYmVcbicKKyAgICAgICAgICAgICAgICAgJyAgYXNzaWduZWQgdG8gdGhlIHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIGVhY2gga2V5LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqICpfX2NsYXNzX18qIGFzc2lnbm1lbnQgd29ya3Mgb25seSBpZiBib3RoIGNsYXNzZXMgaGF2ZSB0aGUgJworICAgICAgICAgICAgICAgICAnc2FtZVxuJworICAgICAgICAgICAgICAgICAnICAqX19zbG90c19fKi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdDdXN0b21pemluZyBjbGFzcyBjcmVhdGlvblxuJworICAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnV2hlbmV2ZXIgYSBjbGFzcyBpbmhlcml0cyBmcm9tIGFub3RoZXIgY2xhc3MsICcKKyAgICAgICAgICAgICAgICAgJypfX2luaXRfc3ViY2xhc3NfXyogaXNcbicKKyAgICAgICAgICAgICAgICAgJ2NhbGxlZCBvbiB0aGF0IGNsYXNzLiBUaGlzIHdheSwgaXQgaXMgcG9zc2libGUgdG8gd3JpdGUgJworICAgICAgICAgICAgICAgICAnY2xhc3NlcyB3aGljaFxuJworICAgICAgICAgICAgICAgICAnY2hhbmdlIHRoZSBiZWhhdmlvciBvZiBzdWJjbGFzc2VzLiBUaGlzIGlzIGNsb3NlbHkgcmVsYXRlZCAnCisgICAgICAgICAgICAgICAgICd0byBjbGFzc1xuJworICAgICAgICAgICAgICAgICAnZGVjb3JhdG9ycywgYnV0IHdoZXJlIGNsYXNzIGRlY29yYXRvcnMgb25seSBhZmZlY3QgdGhlICcKKyAgICAgICAgICAgICAgICAgJ3NwZWNpZmljIGNsYXNzXG4nCisgICAgICAgICAgICAgICAgICd0aGV5XCdyZSBhcHBsaWVkIHRvLCAiX19pbml0X3N1YmNsYXNzX18iIHNvbGVseSBhcHBsaWVzIHRvICcKKyAgICAgICAgICAgICAgICAgJ2Z1dHVyZVxuJworICAgICAgICAgICAgICAgICAnc3ViY2xhc3NlcyBvZiB0aGUgY2xhc3MgZGVmaW5pbmcgdGhlIG1ldGhvZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnY2xhc3NtZXRob2Qgb2JqZWN0Ll9faW5pdF9zdWJjbGFzc19fKGNscylcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW5ldmVyIHRoZSBjb250YWluaW5nIGNsYXNzIGlzICcKKyAgICAgICAgICAgICAgICAgJ3N1YmNsYXNzZWQuXG4nCisgICAgICAgICAgICAgICAgICcgICAqY2xzKiBpcyB0aGVuIHRoZSBuZXcgc3ViY2xhc3MuIElmIGRlZmluZWQgYXMgYSBub3JtYWwgJworICAgICAgICAgICAgICAgICAnaW5zdGFuY2VcbicKKyAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCwgdGhpcyBtZXRob2QgaXMgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gYSBjbGFzcyAnCisgICAgICAgICAgICAgICAgICdtZXRob2QuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIEtleXdvcmQgYXJndW1lbnRzIHdoaWNoIGFyZSBnaXZlbiB0byBhIG5ldyBjbGFzcyBhcmUgJworICAgICAgICAgICAgICAgICAncGFzc2VkIHRvIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgcGFyZW50XCdzIGNsYXNzICJfX2luaXRfc3ViY2xhc3NfXyIuIEZvciBjb21wYXRpYmlsaXR5ICcKKyAgICAgICAgICAgICAgICAgJ3dpdGggb3RoZXJcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNsYXNzZXMgdXNpbmcgIl9faW5pdF9zdWJjbGFzc19fIiwgb25lIHNob3VsZCB0YWtlIG91dCAnCisgICAgICAgICAgICAgICAgICd0aGUgbmVlZGVkXG4nCisgICAgICAgICAgICAgICAgICcgICBrZXl3b3JkIGFyZ3VtZW50cyBhbmQgcGFzcyB0aGUgb3RoZXJzIG92ZXIgdG8gdGhlIGJhc2UgJworICAgICAgICAgICAgICAgICAnY2xhc3MsIGFzXG4nCisgICAgICAgICAgICAgICAgICcgICBpbjpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgY2xhc3MgUGhpbG9zb3BoZXI6XG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgICAgZGVmIF9faW5pdF9zdWJjbGFzc19fKGNscywgZGVmYXVsdF9uYW1lLCAnCisgICAgICAgICAgICAgICAgICcqKmt3YXJncyk6XG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X3N1YmNsYXNzX18oKiprd2FyZ3MpXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgICAgICAgIGNscy5kZWZhdWx0X25hbWUgPSBkZWZhdWx0X25hbWVcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgY2xhc3MgQXVzdHJhbGlhblBoaWxvc29waGVyKFBoaWxvc29waGVyLCAnCisgICAgICAgICAgICAgICAgICdkZWZhdWx0X25hbWU9IkJydWNlIik6XG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgICAgcGFzc1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiAib2JqZWN0Ll9faW5pdF9zdWJjbGFzc19fIiAnCisgICAgICAgICAgICAgICAgICdkb2VzIG5vdGhpbmcsXG4nCisgICAgICAgICAgICAgICAgICcgICBidXQgcmFpc2VzIGFuIGVycm9yIGlmIGl0IGlzIGNhbGxlZCB3aXRoIGFueSBhcmd1bWVudHMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIE5vdGU6IFRoZSBtZXRhY2xhc3MgaGludCAibWV0YWNsYXNzIiBpcyBjb25zdW1lZCBieSB0aGUgJworICAgICAgICAgICAgICAgICAncmVzdCBvZlxuJworICAgICAgICAgICAgICAgICAnICAgICB0aGUgdHlwZSBtYWNoaW5lcnksIGFuZCBpcyBuZXZlciBwYXNzZWQgdG8gJworICAgICAgICAgICAgICAgICAnIl9faW5pdF9zdWJjbGFzc19fIlxuJworICAgICAgICAgICAgICAgICAnICAgICBpbXBsZW1lbnRhdGlvbnMuIFRoZSBhY3R1YWwgbWV0YWNsYXNzIChyYXRoZXIgdGhhbiB0aGUgJworICAgICAgICAgICAgICAgICAnZXhwbGljaXRcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgaGludCkgY2FuIGJlIGFjY2Vzc2VkIGFzICJ0eXBlKGNscykiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAzLjYuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnTWV0YWNsYXNzZXNcbicKKyAgICAgICAgICAgICAgICAgJy0tLS0tLS0tLS0tXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0J5IGRlZmF1bHQsIGNsYXNzZXMgYXJlIGNvbnN0cnVjdGVkIHVzaW5nICJ0eXBlKCkiLiBUaGUgJworICAgICAgICAgICAgICAgICAnY2xhc3MgYm9keSBpc1xuJworICAgICAgICAgICAgICAgICAnZXhlY3V0ZWQgaW4gYSBuZXcgbmFtZXNwYWNlIGFuZCB0aGUgY2xhc3MgbmFtZSBpcyBib3VuZCAnCisgICAgICAgICAgICAgICAgICdsb2NhbGx5IHRvIHRoZVxuJworICAgICAgICAgICAgICAgICAncmVzdWx0IG9mICJ0eXBlKG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIGNsYXNzIGNyZWF0aW9uIHByb2Nlc3MgY2FuIGJlIGN1c3RvbWl6ZWQgYnkgcGFzc2luZyB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyJtZXRhY2xhc3MiIGtleXdvcmQgYXJndW1lbnQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24gbGluZSwgJworICAgICAgICAgICAgICAgICAnb3IgYnlcbicKKyAgICAgICAgICAgICAgICAgJ2luaGVyaXRpbmcgZnJvbSBhbiBleGlzdGluZyBjbGFzcyB0aGF0IGluY2x1ZGVkIHN1Y2ggYW4gJworICAgICAgICAgICAgICAgICAnYXJndW1lbnQuIEluXG4nCisgICAgICAgICAgICAgICAgICd0aGUgZm9sbG93aW5nIGV4YW1wbGUsIGJvdGggIk15Q2xhc3MiIGFuZCAiTXlTdWJjbGFzcyIgYXJlICcKKyAgICAgICAgICAgICAgICAgJ2luc3RhbmNlc1xuJworICAgICAgICAgICAgICAgICAnb2YgIk1ldGEiOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBjbGFzcyBNZXRhKHR5cGUpOlxuJworICAgICAgICAgICAgICAgICAnICAgICAgIHBhc3NcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgY2xhc3MgTXlDbGFzcyhtZXRhY2xhc3M9TWV0YSk6XG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgcGFzc1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBjbGFzcyBNeVN1YmNsYXNzKE15Q2xhc3MpOlxuJworICAgICAgICAgICAgICAgICAnICAgICAgIHBhc3NcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQW55IG90aGVyIGtleXdvcmQgYXJndW1lbnRzIHRoYXQgYXJlIHNwZWNpZmllZCBpbiB0aGUgY2xhc3MgJworICAgICAgICAgICAgICAgICAnZGVmaW5pdGlvblxuJworICAgICAgICAgICAgICAgICAnYXJlIHBhc3NlZCB0aHJvdWdoIHRvIGFsbCBtZXRhY2xhc3Mgb3BlcmF0aW9ucyBkZXNjcmliZWQgJworICAgICAgICAgICAgICAgICAnYmVsb3cuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1doZW4gYSBjbGFzcyBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLCB0aGUgZm9sbG93aW5nIHN0ZXBzICcKKyAgICAgICAgICAgICAgICAgJ29jY3VyOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MgaXMgZGV0ZXJtaW5lZFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIHRoZSBjbGFzcyBuYW1lc3BhY2UgaXMgcHJlcGFyZWRcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnKiB0aGUgY2xhc3MgYm9keSBpcyBleGVjdXRlZFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIHRoZSBjbGFzcyBvYmplY3QgaXMgY3JlYXRlZFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0RldGVybWluaW5nIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcyBmb3IgYSBjbGFzcyBkZWZpbml0aW9uIGlzICcKKyAgICAgICAgICAgICAgICAgJ2RldGVybWluZWQgYXNcbicKKyAgICAgICAgICAgICAgICAgJ2ZvbGxvd3M6XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogaWYgbm8gYmFzZXMgYW5kIG5vIGV4cGxpY2l0IG1ldGFjbGFzcyBhcmUgZ2l2ZW4sIHRoZW4gJworICAgICAgICAgICAgICAgICAnInR5cGUoKSIgaXNcbicKKyAgICAgICAgICAgICAgICAgJyAgdXNlZFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIGlmIGFuIGV4cGxpY2l0IG1ldGFjbGFzcyBpcyBnaXZlbiBhbmQgaXQgaXMgKm5vdCogYW4gJworICAgICAgICAgICAgICAgICAnaW5zdGFuY2Ugb2ZcbicKKyAgICAgICAgICAgICAgICAgJyAgInR5cGUoKSIsIHRoZW4gaXQgaXMgdXNlZCBkaXJlY3RseSBhcyB0aGUgbWV0YWNsYXNzXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogaWYgYW4gaW5zdGFuY2Ugb2YgInR5cGUoKSIgaXMgZ2l2ZW4gYXMgdGhlIGV4cGxpY2l0ICcKKyAgICAgICAgICAgICAgICAgJ21ldGFjbGFzcywgb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgYmFzZXMgYXJlIGRlZmluZWQsIHRoZW4gdGhlIG1vc3QgZGVyaXZlZCBtZXRhY2xhc3MgaXMgJworICAgICAgICAgICAgICAgICAndXNlZFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgbW9zdCBkZXJpdmVkIG1ldGFjbGFzcyBpcyBzZWxlY3RlZCBmcm9tIHRoZSBleHBsaWNpdGx5ICcKKyAgICAgICAgICAgICAgICAgJ3NwZWNpZmllZFxuJworICAgICAgICAgICAgICAgICAnbWV0YWNsYXNzIChpZiBhbnkpIGFuZCB0aGUgbWV0YWNsYXNzZXMgKGkuZS4gInR5cGUoY2xzKSIpIG9mICcKKyAgICAgICAgICAgICAgICAgJ2FsbFxuJworICAgICAgICAgICAgICAgICAnc3BlY2lmaWVkIGJhc2UgY2xhc3Nlcy4gVGhlIG1vc3QgZGVyaXZlZCBtZXRhY2xhc3MgaXMgb25lICcKKyAgICAgICAgICAgICAgICAgJ3doaWNoIGlzIGFcbicKKyAgICAgICAgICAgICAgICAgJ3N1YnR5cGUgb2YgKmFsbCogb2YgdGhlc2UgY2FuZGlkYXRlIG1ldGFjbGFzc2VzLiBJZiBub25lIG9mICcKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnY2FuZGlkYXRlIG1ldGFjbGFzc2VzIG1lZXRzIHRoYXQgY3JpdGVyaW9uLCB0aGVuIHRoZSBjbGFzcyAnCisgICAgICAgICAgICAgICAgICdkZWZpbml0aW9uXG4nCisgICAgICAgICAgICAgICAgICd3aWxsIGZhaWwgd2l0aCAiVHlwZUVycm9yIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdQcmVwYXJpbmcgdGhlIGNsYXNzIG5hbWVzcGFjZVxuJworICAgICAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnT25jZSB0aGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzIGhhcyBiZWVuIGlkZW50aWZpZWQsIHRoZW4gdGhlICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgICAgICduYW1lc3BhY2UgaXMgcHJlcGFyZWQuIElmIHRoZSBtZXRhY2xhc3MgaGFzIGEgIl9fcHJlcGFyZV9fIiAnCisgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGUsXG4nCisgICAgICAgICAgICAgICAgICdpdCBpcyBjYWxsZWQgYXMgIm5hbWVzcGFjZSA9IG1ldGFjbGFzcy5fX3ByZXBhcmVfXyhuYW1lLCAnCisgICAgICAgICAgICAgICAgICdiYXNlcyxcbicKKyAgICAgICAgICAgICAgICAgJyoqa3dkcykiICh3aGVyZSB0aGUgYWRkaXRpb25hbCBrZXl3b3JkIGFyZ3VtZW50cywgaWYgYW55LCAnCisgICAgICAgICAgICAgICAgICdjb21lIGZyb21cbicKKyAgICAgICAgICAgICAgICAgJ3RoZSBjbGFzcyBkZWZpbml0aW9uKS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnSWYgdGhlIG1ldGFjbGFzcyBoYXMgbm8gIl9fcHJlcGFyZV9fIiBhdHRyaWJ1dGUsIHRoZW4gdGhlICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgICAgICduYW1lc3BhY2UgaXMgaW5pdGlhbGlzZWQgYXMgYW4gZW1wdHkgb3JkZXJlZCBtYXBwaW5nLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdTZWUgYWxzbzpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAqKlBFUCAzMTE1KiogLSBNZXRhY2xhc3NlcyBpbiBQeXRob24gMzAwMFxuJworICAgICAgICAgICAgICAgICAnICAgICBJbnRyb2R1Y2VkIHRoZSAiX19wcmVwYXJlX18iIG5hbWVzcGFjZSBob29rXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnRXhlY3V0aW5nIHRoZSBjbGFzcyBib2R5XG4nCisgICAgICAgICAgICAgICAgICctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIGNsYXNzIGJvZHkgaXMgZXhlY3V0ZWQgKGFwcHJveGltYXRlbHkpIGFzICJleGVjKGJvZHksICcKKyAgICAgICAgICAgICAgICAgJ2dsb2JhbHMoKSxcbicKKyAgICAgICAgICAgICAgICAgJ25hbWVzcGFjZSkiLiBUaGUga2V5IGRpZmZlcmVuY2UgZnJvbSBhIG5vcm1hbCBjYWxsIHRvICcKKyAgICAgICAgICAgICAgICAgJyJleGVjKCkiIGlzIHRoYXRcbicKKyAgICAgICAgICAgICAgICAgJ2xleGljYWwgc2NvcGluZyBhbGxvd3MgdGhlIGNsYXNzIGJvZHkgKGluY2x1ZGluZyBhbnkgJworICAgICAgICAgICAgICAgICAnbWV0aG9kcykgdG9cbicKKyAgICAgICAgICAgICAgICAgJ3JlZmVyZW5jZSBuYW1lcyBmcm9tIHRoZSBjdXJyZW50IGFuZCBvdXRlciBzY29wZXMgd2hlbiB0aGUgJworICAgICAgICAgICAgICAgICAnY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJ2RlZmluaXRpb24gb2NjdXJzIGluc2lkZSBhIGZ1bmN0aW9uLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdIb3dldmVyLCBldmVuIHdoZW4gdGhlIGNsYXNzIGRlZmluaXRpb24gb2NjdXJzIGluc2lkZSB0aGUgJworICAgICAgICAgICAgICAgICAnZnVuY3Rpb24sXG4nCisgICAgICAgICAgICAgICAgICdtZXRob2RzIGRlZmluZWQgaW5zaWRlIHRoZSBjbGFzcyBzdGlsbCBjYW5ub3Qgc2VlIG5hbWVzICcKKyAgICAgICAgICAgICAgICAgJ2RlZmluZWQgYXQgdGhlXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcyBzY29wZS4gQ2xhc3MgdmFyaWFibGVzIG11c3QgYmUgYWNjZXNzZWQgdGhyb3VnaCB0aGUgJworICAgICAgICAgICAgICAgICAnZmlyc3RcbicKKyAgICAgICAgICAgICAgICAgJ3BhcmFtZXRlciBvZiBpbnN0YW5jZSBvciBjbGFzcyBtZXRob2RzLCBvciB0aHJvdWdoIHRoZSAnCisgICAgICAgICAgICAgICAgICdpbXBsaWNpdFxuJworICAgICAgICAgICAgICAgICAnbGV4aWNhbGx5IHNjb3BlZCAiX19jbGFzc19fIiByZWZlcmVuY2UgZGVzY3JpYmVkIGluIHRoZSBuZXh0ICcKKyAgICAgICAgICAgICAgICAgJ3NlY3Rpb24uXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQ3JlYXRpbmcgdGhlIGNsYXNzIG9iamVjdFxuJworICAgICAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdPbmNlIHRoZSBjbGFzcyBuYW1lc3BhY2UgaGFzIGJlZW4gcG9wdWxhdGVkIGJ5IGV4ZWN1dGluZyB0aGUgJworICAgICAgICAgICAgICAgICAnY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJ2JvZHksIHRoZSBjbGFzcyBvYmplY3QgaXMgY3JlYXRlZCBieSBjYWxsaW5nICcKKyAgICAgICAgICAgICAgICAgJyJtZXRhY2xhc3MobmFtZSwgYmFzZXMsXG4nCisgICAgICAgICAgICAgICAgICduYW1lc3BhY2UsICoqa3dkcykiICh0aGUgYWRkaXRpb25hbCBrZXl3b3JkcyBwYXNzZWQgaGVyZSBhcmUgJworICAgICAgICAgICAgICAgICAndGhlIHNhbWVcbicKKyAgICAgICAgICAgICAgICAgJ2FzIHRob3NlIHBhc3NlZCB0byAiX19wcmVwYXJlX18iKS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhpcyBjbGFzcyBvYmplY3QgaXMgdGhlIG9uZSB0aGF0IHdpbGwgYmUgcmVmZXJlbmNlZCBieSB0aGUgJworICAgICAgICAgICAgICAgICAnemVyby1cbicKKyAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50IGZvcm0gb2YgInN1cGVyKCkiLiAiX19jbGFzc19fIiBpcyBhbiBpbXBsaWNpdCAnCisgICAgICAgICAgICAgICAgICdjbG9zdXJlXG4nCisgICAgICAgICAgICAgICAgICdyZWZlcmVuY2UgY3JlYXRlZCBieSB0aGUgY29tcGlsZXIgaWYgYW55IG1ldGhvZHMgaW4gYSBjbGFzcyAnCisgICAgICAgICAgICAgICAgICdib2R5IHJlZmVyXG4nCisgICAgICAgICAgICAgICAgICd0byBlaXRoZXIgIl9fY2xhc3NfXyIgb3IgInN1cGVyIi4gVGhpcyBhbGxvd3MgdGhlIHplcm8gJworICAgICAgICAgICAgICAgICAnYXJndW1lbnQgZm9ybVxuJworICAgICAgICAgICAgICAgICAnb2YgInN1cGVyKCkiIHRvIGNvcnJlY3RseSBpZGVudGlmeSB0aGUgY2xhc3MgYmVpbmcgZGVmaW5lZCAnCisgICAgICAgICAgICAgICAgICdiYXNlZCBvblxuJworICAgICAgICAgICAgICAgICAnbGV4aWNhbCBzY29waW5nLCB3aGlsZSB0aGUgY2xhc3Mgb3IgaW5zdGFuY2UgdGhhdCB3YXMgdXNlZCAnCisgICAgICAgICAgICAgICAgICd0byBtYWtlIHRoZVxuJworICAgICAgICAgICAgICAgICAnY3VycmVudCBjYWxsIGlzIGlkZW50aWZpZWQgYmFzZWQgb24gdGhlIGZpcnN0IGFyZ3VtZW50ICcKKyAgICAgICAgICAgICAgICAgJ3Bhc3NlZCB0byB0aGVcbicKKyAgICAgICAgICAgICAgICAgJ21ldGhvZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBJbiBDUHl0aG9uIDMuNiBhbmQgbGF0ZXIsICcKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnIl9fY2xhc3NfXyIgY2VsbCBpcyBwYXNzZWQgdG8gdGhlIG1ldGFjbGFzcyBhcyBhICcKKyAgICAgICAgICAgICAgICAgJyJfX2NsYXNzY2VsbF9fIiBlbnRyeVxuJworICAgICAgICAgICAgICAgICAnaW4gdGhlIGNsYXNzIG5hbWVzcGFjZS4gSWYgcHJlc2VudCwgdGhpcyBtdXN0IGJlIHByb3BhZ2F0ZWQgJworICAgICAgICAgICAgICAgICAndXAgdG8gdGhlXG4nCisgICAgICAgICAgICAgICAgICcidHlwZS5fX25ld19fIiBjYWxsIGluIG9yZGVyIGZvciB0aGUgY2xhc3MgdG8gYmUgJworICAgICAgICAgICAgICAgICAnaW5pdGlhbGlzZWRcbicKKyAgICAgICAgICAgICAgICAgJ2NvcnJlY3RseS4gRmFpbGluZyB0byBkbyBzbyB3aWxsIHJlc3VsdCBpbiBhICcKKyAgICAgICAgICAgICAgICAgJyJEZXByZWNhdGlvbldhcm5pbmciIGluXG4nCisgICAgICAgICAgICAgICAgICdQeXRob24gMy42LCBhbmQgYSAiUnVudGltZVdhcm5pbmciIGluIHRoZSBmdXR1cmUuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1doZW4gdXNpbmcgdGhlIGRlZmF1bHQgbWV0YWNsYXNzICJ0eXBlIiwgb3IgYW55IG1ldGFjbGFzcyAnCisgICAgICAgICAgICAgICAgICd0aGF0XG4nCisgICAgICAgICAgICAgICAgICd1bHRpbWF0ZWx5IGNhbGxzICJ0eXBlLl9fbmV3X18iLCB0aGUgZm9sbG93aW5nIGFkZGl0aW9uYWxcbicKKyAgICAgICAgICAgICAgICAgJ2N1c3RvbWlzYXRpb24gc3RlcHMgYXJlIGludm9rZWQgYWZ0ZXIgY3JlYXRpbmcgdGhlIGNsYXNzICcKKyAgICAgICAgICAgICAgICAgJ29iamVjdDpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnKiBmaXJzdCwgInR5cGUuX19uZXdfXyIgY29sbGVjdHMgYWxsIG9mIHRoZSBkZXNjcmlwdG9ycyBpbiAnCisgICAgICAgICAgICAgICAgICd0aGUgY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJyAgbmFtZXNwYWNlIHRoYXQgZGVmaW5lIGEgIl9fc2V0X25hbWVfXygpIiBtZXRob2Q7XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogc2Vjb25kLCBhbGwgb2YgdGhlc2UgIl9fc2V0X25hbWVfXyIgbWV0aG9kcyBhcmUgY2FsbGVkICcKKyAgICAgICAgICAgICAgICAgJ3dpdGggdGhlXG4nCisgICAgICAgICAgICAgICAgICcgIGNsYXNzIGJlaW5nIGRlZmluZWQgYW5kIHRoZSBhc3NpZ25lZCBuYW1lIG9mIHRoYXQgJworICAgICAgICAgICAgICAgICAncGFydGljdWxhclxuJworICAgICAgICAgICAgICAgICAnICBkZXNjcmlwdG9yOyBhbmRcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnKiBmaW5hbGx5LCB0aGUgIl9faW5pdF9zdWJjbGFzc19fKCkiIGhvb2sgaXMgY2FsbGVkIG9uIHRoZSAnCisgICAgICAgICAgICAgICAgICdpbW1lZGlhdGVcbicKKyAgICAgICAgICAgICAgICAgJyAgcGFyZW50IG9mIHRoZSBuZXcgY2xhc3MgaW4gaXRzIG1ldGhvZCByZXNvbHV0aW9uIG9yZGVyLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdBZnRlciB0aGUgY2xhc3Mgb2JqZWN0IGlzIGNyZWF0ZWQsIGl0IGlzIHBhc3NlZCB0byB0aGUgJworICAgICAgICAgICAgICAgICAnY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJ2RlY29yYXRvcnMgaW5jbHVkZWQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24gKGlmIGFueSkgYW5kIHRoZSAnCisgICAgICAgICAgICAgICAgICdyZXN1bHRpbmdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdCBpcyBib3VuZCBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGFzIHRoZSBkZWZpbmVkICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdXaGVuIGEgbmV3IGNsYXNzIGlzIGNyZWF0ZWQgYnkgInR5cGUuX19uZXdfXyIsIHRoZSBvYmplY3QgJworICAgICAgICAgICAgICAgICAncHJvdmlkZWQgYXNcbicKKyAgICAgICAgICAgICAgICAgJ3RoZSBuYW1lc3BhY2UgcGFyYW1ldGVyIGlzIGNvcGllZCB0byBhIG5ldyBvcmRlcmVkIG1hcHBpbmcgJworICAgICAgICAgICAgICAgICAnYW5kIHRoZVxuJworICAgICAgICAgICAgICAgICAnb3JpZ2luYWwgb2JqZWN0IGlzIGRpc2NhcmRlZC4gVGhlIG5ldyBjb3B5IGlzIHdyYXBwZWQgaW4gYSAnCisgICAgICAgICAgICAgICAgICdyZWFkLW9ubHlcbicKKyAgICAgICAgICAgICAgICAgJ3Byb3h5LCB3aGljaCBiZWNvbWVzIHRoZSAiX19kaWN0X18iIGF0dHJpYnV0ZSBvZiB0aGUgY2xhc3MgJworICAgICAgICAgICAgICAgICAnb2JqZWN0LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdTZWUgYWxzbzpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAqKlBFUCAzMTM1KiogLSBOZXcgc3VwZXJcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgRGVzY3JpYmVzIHRoZSBpbXBsaWNpdCAiX19jbGFzc19fIiBjbG9zdXJlIHJlZmVyZW5jZVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ01ldGFjbGFzcyBleGFtcGxlXG4nCisgICAgICAgICAgICAgICAgICctLS0tLS0tLS0tLS0tLS0tLVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgcG90ZW50aWFsIHVzZXMgZm9yIG1ldGFjbGFzc2VzIGFyZSBib3VuZGxlc3MuIFNvbWUgaWRlYXMgJworICAgICAgICAgICAgICAgICAndGhhdCBoYXZlXG4nCisgICAgICAgICAgICAgICAgICdiZWVuIGV4cGxvcmVkIGluY2x1ZGUgbG9nZ2luZywgaW50ZXJmYWNlIGNoZWNraW5nLCAnCisgICAgICAgICAgICAgICAgICdhdXRvbWF0aWNcbicKKyAgICAgICAgICAgICAgICAgJ2RlbGVnYXRpb24sIGF1dG9tYXRpYyBwcm9wZXJ0eSBjcmVhdGlvbiwgcHJveGllcywgJworICAgICAgICAgICAgICAgICAnZnJhbWV3b3JrcywgYW5kXG4nCisgICAgICAgICAgICAgICAgICdhdXRvbWF0aWMgcmVzb3VyY2UgbG9ja2luZy9zeW5jaHJvbml6YXRpb24uXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0hlcmUgaXMgYW4gZXhhbXBsZSBvZiBhIG1ldGFjbGFzcyB0aGF0IHVzZXMgYW5cbicKKyAgICAgICAgICAgICAgICAgJyJjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCIgdG8gcmVtZW1iZXIgdGhlIG9yZGVyIHRoYXQgY2xhc3MgJworICAgICAgICAgICAgICAgICAndmFyaWFibGVzXG4nCisgICAgICAgICAgICAgICAgICdhcmUgZGVmaW5lZDpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgY2xhc3MgT3JkZXJlZENsYXNzKHR5cGUpOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgQGNsYXNzbWV0aG9kXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgZGVmIF9fcHJlcGFyZV9fKG1ldGFjbHMsIG5hbWUsIGJhc2VzLCAqKmt3ZHMpOlxuJworICAgICAgICAgICAgICAgICAnICAgICAgICAgICByZXR1cm4gY29sbGVjdGlvbnMuT3JkZXJlZERpY3QoKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgZGVmIF9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlLCAqKmt3ZHMpOlxuJworICAgICAgICAgICAgICAgICAnICAgICAgICAgICByZXN1bHQgPSB0eXBlLl9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgJworICAgICAgICAgICAgICAgICAnZGljdChuYW1lc3BhY2UpKVxuJworICAgICAgICAgICAgICAgICAnICAgICAgICAgICByZXN1bHQubWVtYmVycyA9IHR1cGxlKG5hbWVzcGFjZSlcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgcmV0dXJuIHJlc3VsdFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBjbGFzcyBBKG1ldGFjbGFzcz1PcmRlcmVkQ2xhc3MpOlxuJworICAgICAgICAgICAgICAgICAnICAgICAgIGRlZiBvbmUoc2VsZik6IHBhc3NcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICBkZWYgdHdvKHNlbGYpOiBwYXNzXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgZGVmIHRocmVlKHNlbGYpOiBwYXNzXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgZGVmIGZvdXIoc2VsZik6IHBhc3NcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgPj4+IEEubWVtYmVyc1xuJworICAgICAgICAgICAgICAgICAiICAgKCdfX21vZHVsZV9fJywgJ29uZScsICd0d28nLCAndGhyZWUnLCAnZm91cicpXG4iCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1doZW4gdGhlIGNsYXNzIGRlZmluaXRpb24gZm9yICpBKiBnZXRzIGV4ZWN1dGVkLCB0aGUgcHJvY2VzcyAnCisgICAgICAgICAgICAgICAgICdiZWdpbnNcbicKKyAgICAgICAgICAgICAgICAgJ3dpdGggY2FsbGluZyB0aGUgbWV0YWNsYXNzXCdzICJfX3ByZXBhcmVfXygpIiBtZXRob2Qgd2hpY2ggJworICAgICAgICAgICAgICAgICAncmV0dXJucyBhblxuJworICAgICAgICAgICAgICAgICAnZW1wdHkgImNvbGxlY3Rpb25zLk9yZGVyZWREaWN0Ii4gIFRoYXQgbWFwcGluZyByZWNvcmRzIHRoZSAnCisgICAgICAgICAgICAgICAgICdtZXRob2RzIGFuZFxuJworICAgICAgICAgICAgICAgICAnYXR0cmlidXRlcyBvZiAqQSogYXMgdGhleSBhcmUgZGVmaW5lZCB3aXRoaW4gdGhlIGJvZHkgb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgICAgICdzdGF0ZW1lbnQuIE9uY2UgdGhvc2UgZGVmaW5pdGlvbnMgYXJlIGV4ZWN1dGVkLCB0aGUgb3JkZXJlZCAnCisgICAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5XG4nCisgICAgICAgICAgICAgICAgICdpcyBmdWxseSBwb3B1bGF0ZWQgYW5kIHRoZSBtZXRhY2xhc3NcJ3MgIl9fbmV3X18oKSIgbWV0aG9kICcKKyAgICAgICAgICAgICAgICAgJ2dldHNcbicKKyAgICAgICAgICAgICAgICAgJ2ludm9rZWQuICBUaGF0IG1ldGhvZCBidWlsZHMgdGhlIG5ldyB0eXBlIGFuZCBpdCBzYXZlcyB0aGUgJworICAgICAgICAgICAgICAgICAnb3JkZXJlZFxuJworICAgICAgICAgICAgICAgICAnZGljdGlvbmFyeSBrZXlzIGluIGFuIGF0dHJpYnV0ZSBjYWxsZWQgIm1lbWJlcnMiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0N1c3RvbWl6aW5nIGluc3RhbmNlIGFuZCBzdWJjbGFzcyBjaGVja3NcbicKKyAgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBtZXRob2RzIGFyZSB1c2VkIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0ICcKKyAgICAgICAgICAgICAgICAgJ2JlaGF2aW9yIG9mIHRoZVxuJworICAgICAgICAgICAgICAgICAnImlzaW5zdGFuY2UoKSIgYW5kICJpc3N1YmNsYXNzKCkiIGJ1aWx0LWluIGZ1bmN0aW9ucy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnSW4gcGFydGljdWxhciwgdGhlIG1ldGFjbGFzcyAiYWJjLkFCQ01ldGEiIGltcGxlbWVudHMgdGhlc2UgJworICAgICAgICAgICAgICAgICAnbWV0aG9kcyBpblxuJworICAgICAgICAgICAgICAgICAnb3JkZXIgdG8gYWxsb3cgdGhlIGFkZGl0aW9uIG9mIEFic3RyYWN0IEJhc2UgQ2xhc3NlcyAoQUJDcykgJworICAgICAgICAgICAgICAgICAnYXNcbicKKyAgICAgICAgICAgICAgICAgJyJ2aXJ0dWFsIGJhc2UgY2xhc3NlcyIgdG8gYW55IGNsYXNzIG9yIHR5cGUgKGluY2x1ZGluZyAnCisgICAgICAgICAgICAgICAgICdidWlsdC1pblxuJworICAgICAgICAgICAgICAgICAndHlwZXMpLCBpbmNsdWRpbmcgb3RoZXIgQUJDcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnY2xhc3MuX19pbnN0YW5jZWNoZWNrX18oc2VsZiwgaW5zdGFuY2UpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0cnVlIGlmICppbnN0YW5jZSogc2hvdWxkIGJlIGNvbnNpZGVyZWQgYSAoZGlyZWN0ICcKKyAgICAgICAgICAgICAgICAgJ29yXG4nCisgICAgICAgICAgICAgICAgICcgICBpbmRpcmVjdCkgaW5zdGFuY2Ugb2YgKmNsYXNzKi4gSWYgZGVmaW5lZCwgY2FsbGVkIHRvICcKKyAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudFxuJworICAgICAgICAgICAgICAgICAnICAgImlzaW5zdGFuY2UoaW5zdGFuY2UsIGNsYXNzKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ2NsYXNzLl9fc3ViY2xhc3NjaGVja19fKHNlbGYsIHN1YmNsYXNzKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiAqc3ViY2xhc3MqIHNob3VsZCBiZSBjb25zaWRlcmVkIGEgKGRpcmVjdCAnCisgICAgICAgICAgICAgICAgICdvclxuJworICAgICAgICAgICAgICAgICAnICAgaW5kaXJlY3QpIHN1YmNsYXNzIG9mICpjbGFzcyouICBJZiBkZWZpbmVkLCBjYWxsZWQgdG8gJworICAgICAgICAgICAgICAgICAnaW1wbGVtZW50XG4nCisgICAgICAgICAgICAgICAgICcgICAiaXNzdWJjbGFzcyhzdWJjbGFzcywgY2xhc3MpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnTm90ZSB0aGF0IHRoZXNlIG1ldGhvZHMgYXJlIGxvb2tlZCB1cCBvbiB0aGUgdHlwZSAnCisgICAgICAgICAgICAgICAgICcobWV0YWNsYXNzKSBvZiBhXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcy4gIFRoZXkgY2Fubm90IGJlIGRlZmluZWQgYXMgY2xhc3MgbWV0aG9kcyBpbiB0aGUgJworICAgICAgICAgICAgICAgICAnYWN0dWFsIGNsYXNzLlxuJworICAgICAgICAgICAgICAgICAnVGhpcyBpcyBjb25zaXN0ZW50IHdpdGggdGhlIGxvb2t1cCBvZiBzcGVjaWFsIG1ldGhvZHMgdGhhdCAnCisgICAgICAgICAgICAgICAgICdhcmUgY2FsbGVkXG4nCisgICAgICAgICAgICAgICAgICdvbiBpbnN0YW5jZXMsIG9ubHkgaW4gdGhpcyBjYXNlIHRoZSBpbnN0YW5jZSBpcyBpdHNlbGYgYSAnCisgICAgICAgICAgICAgICAgICdjbGFzcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnU2VlIGFsc286XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgKipQRVAgMzExOSoqIC0gSW50cm9kdWNpbmcgQWJzdHJhY3QgQmFzZSBDbGFzc2VzXG4nCisgICAgICAgICAgICAgICAgICcgICAgIEluY2x1ZGVzIHRoZSBzcGVjaWZpY2F0aW9uIGZvciBjdXN0b21pemluZyAnCisgICAgICAgICAgICAgICAgICciaXNpbnN0YW5jZSgpIiBhbmRcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgImlzc3ViY2xhc3MoKSIgYmVoYXZpb3IgdGhyb3VnaCAiX19pbnN0YW5jZWNoZWNrX18oKSIgJworICAgICAgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAgICAgICcgICAgICJfX3N1YmNsYXNzY2hlY2tfXygpIiwgd2l0aCBtb3RpdmF0aW9uIGZvciB0aGlzICcKKyAgICAgICAgICAgICAgICAgJ2Z1bmN0aW9uYWxpdHkgaW5cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgdGhlIGNvbnRleHQgb2YgYWRkaW5nIEFic3RyYWN0IEJhc2UgQ2xhc3NlcyAoc2VlIHRoZSAnCisgICAgICAgICAgICAgICAgICciYWJjIlxuJworICAgICAgICAgICAgICAgICAnICAgICBtb2R1bGUpIHRvIHRoZSBsYW5ndWFnZS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdFbXVsYXRpbmcgY2FsbGFibGUgb2JqZWN0c1xuJworICAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fY2FsbF9fKHNlbGZbLCBhcmdzLi4uXSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHdoZW4gdGhlIGluc3RhbmNlIGlzICJjYWxsZWQiIGFzIGEgZnVuY3Rpb247IGlmICcKKyAgICAgICAgICAgICAgICAgJ3RoaXMgbWV0aG9kXG4nCisgICAgICAgICAgICAgICAgICcgICBpcyBkZWZpbmVkLCAieChhcmcxLCBhcmcyLCAuLi4pIiBpcyBhIHNob3J0aGFuZCBmb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgICJ4Ll9fY2FsbF9fKGFyZzEsIGFyZzIsIC4uLikiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0VtdWxhdGluZyBjb250YWluZXIgdHlwZXNcbicKKyAgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGltcGxlbWVudCBjb250YWluZXIgJworICAgICAgICAgICAgICAgICAnb2JqZWN0cy5cbicKKyAgICAgICAgICAgICAgICAgJ0NvbnRhaW5lcnMgdXN1YWxseSBhcmUgc2VxdWVuY2VzIChzdWNoIGFzIGxpc3RzIG9yIHR1cGxlcykgJworICAgICAgICAgICAgICAgICAnb3IgbWFwcGluZ3NcbicKKyAgICAgICAgICAgICAgICAgJyhsaWtlIGRpY3Rpb25hcmllcyksIGJ1dCBjYW4gcmVwcmVzZW50IG90aGVyIGNvbnRhaW5lcnMgYXMgJworICAgICAgICAgICAgICAgICAnd2VsbC4gIFRoZVxuJworICAgICAgICAgICAgICAgICAnZmlyc3Qgc2V0IG9mIG1ldGhvZHMgaXMgdXNlZCBlaXRoZXIgdG8gZW11bGF0ZSBhIHNlcXVlbmNlIG9yICcKKyAgICAgICAgICAgICAgICAgJ3RvXG4nCisgICAgICAgICAgICAgICAgICdlbXVsYXRlIGEgbWFwcGluZzsgdGhlIGRpZmZlcmVuY2UgaXMgdGhhdCBmb3IgYSBzZXF1ZW5jZSwgJworICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICdhbGxvd2FibGUga2V5cyBzaG91bGQgYmUgdGhlIGludGVnZXJzICprKiBmb3Igd2hpY2ggIjAgPD0gayAnCisgICAgICAgICAgICAgICAgICc8IE4iIHdoZXJlXG4nCisgICAgICAgICAgICAgICAgICcqTiogaXMgdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2UsIG9yIHNsaWNlIG9iamVjdHMsIHdoaWNoICcKKyAgICAgICAgICAgICAgICAgJ2RlZmluZSBhXG4nCisgICAgICAgICAgICAgICAgICdyYW5nZSBvZiBpdGVtcy4gIEl0IGlzIGFsc28gcmVjb21tZW5kZWQgdGhhdCBtYXBwaW5ncyAnCisgICAgICAgICAgICAgICAgICdwcm92aWRlIHRoZVxuJworICAgICAgICAgICAgICAgICAnbWV0aG9kcyAia2V5cygpIiwgInZhbHVlcygpIiwgIml0ZW1zKCkiLCAiZ2V0KCkiLCAnCisgICAgICAgICAgICAgICAgICciY2xlYXIoKSIsXG4nCisgICAgICAgICAgICAgICAgICcic2V0ZGVmYXVsdCgpIiwgInBvcCgpIiwgInBvcGl0ZW0oKSIsICJjb3B5KCkiLCBhbmQgJworICAgICAgICAgICAgICAgICAnInVwZGF0ZSgpIlxuJworICAgICAgICAgICAgICAgICAiYmVoYXZpbmcgc2ltaWxhciB0byB0aG9zZSBmb3IgUHl0aG9uJ3Mgc3RhbmRhcmQgZGljdGlvbmFyeSAiCisgICAgICAgICAgICAgICAgICdvYmplY3RzLlxuJworICAgICAgICAgICAgICAgICAnVGhlICJjb2xsZWN0aW9ucyIgbW9kdWxlIHByb3ZpZGVzIGEgIk11dGFibGVNYXBwaW5nIiAnCisgICAgICAgICAgICAgICAgICdhYnN0cmFjdCBiYXNlXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcyB0byBoZWxwIGNyZWF0ZSB0aG9zZSBtZXRob2RzIGZyb20gYSBiYXNlIHNldCBvZiAnCisgICAgICAgICAgICAgICAgICciX19nZXRpdGVtX18oKSIsXG4nCisgICAgICAgICAgICAgICAgICciX19zZXRpdGVtX18oKSIsICJfX2RlbGl0ZW1fXygpIiwgYW5kICJrZXlzKCkiLiBNdXRhYmxlICcKKyAgICAgICAgICAgICAgICAgJ3NlcXVlbmNlc1xuJworICAgICAgICAgICAgICAgICAnc2hvdWxkIHByb3ZpZGUgbWV0aG9kcyAiYXBwZW5kKCkiLCAiY291bnQoKSIsICJpbmRleCgpIiwgJworICAgICAgICAgICAgICAgICAnImV4dGVuZCgpIixcbicKKyAgICAgICAgICAgICAgICAgJyJpbnNlcnQoKSIsICJwb3AoKSIsICJyZW1vdmUoKSIsICJyZXZlcnNlKCkiIGFuZCAic29ydCgpIiwgJworICAgICAgICAgICAgICAgICAnbGlrZSBQeXRob25cbicKKyAgICAgICAgICAgICAgICAgJ3N0YW5kYXJkIGxpc3Qgb2JqZWN0cy4gIEZpbmFsbHksIHNlcXVlbmNlIHR5cGVzIHNob3VsZCAnCisgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRcbicKKyAgICAgICAgICAgICAgICAgJ2FkZGl0aW9uIChtZWFuaW5nIGNvbmNhdGVuYXRpb24pIGFuZCBtdWx0aXBsaWNhdGlvbiAnCisgICAgICAgICAgICAgICAgICcobWVhbmluZ1xuJworICAgICAgICAgICAgICAgICAncmVwZXRpdGlvbikgYnkgZGVmaW5pbmcgdGhlIG1ldGhvZHMgIl9fYWRkX18oKSIsICcKKyAgICAgICAgICAgICAgICAgJyJfX3JhZGRfXygpIixcbicKKyAgICAgICAgICAgICAgICAgJyJfX2lhZGRfXygpIiwgIl9fbXVsX18oKSIsICJfX3JtdWxfXygpIiBhbmQgIl9faW11bF9fKCkiICcKKyAgICAgICAgICAgICAgICAgJ2Rlc2NyaWJlZFxuJworICAgICAgICAgICAgICAgICAnYmVsb3c7IHRoZXkgc2hvdWxkIG5vdCBkZWZpbmUgb3RoZXIgbnVtZXJpY2FsIG9wZXJhdG9ycy4gIEl0ICcKKyAgICAgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgICAgICdyZWNvbW1lbmRlZCB0aGF0IGJvdGggbWFwcGluZ3MgYW5kIHNlcXVlbmNlcyBpbXBsZW1lbnQgdGhlXG4nCisgICAgICAgICAgICAgICAgICciX19jb250YWluc19fKCkiIG1ldGhvZCB0byBhbGxvdyBlZmZpY2llbnQgdXNlIG9mIHRoZSAiaW4iICcKKyAgICAgICAgICAgICAgICAgJ29wZXJhdG9yO1xuJworICAgICAgICAgICAgICAgICAnZm9yIG1hcHBpbmdzLCAiaW4iIHNob3VsZCBzZWFyY2ggdGhlIG1hcHBpbmdcJ3Mga2V5czsgZm9yICcKKyAgICAgICAgICAgICAgICAgJ3NlcXVlbmNlcywgaXRcbicKKyAgICAgICAgICAgICAgICAgJ3Nob3VsZCBzZWFyY2ggdGhyb3VnaCB0aGUgdmFsdWVzLiAgSXQgaXMgZnVydGhlciByZWNvbW1lbmRlZCAnCisgICAgICAgICAgICAgICAgICd0aGF0IGJvdGhcbicKKyAgICAgICAgICAgICAgICAgJ21hcHBpbmdzIGFuZCBzZXF1ZW5jZXMgaW1wbGVtZW50IHRoZSAiX19pdGVyX18oKSIgbWV0aG9kIHRvICcKKyAgICAgICAgICAgICAgICAgJ2FsbG93XG4nCisgICAgICAgICAgICAgICAgICdlZmZpY2llbnQgaXRlcmF0aW9uIHRocm91Z2ggdGhlIGNvbnRhaW5lcjsgZm9yIG1hcHBpbmdzLCAnCisgICAgICAgICAgICAgICAgICciX19pdGVyX18oKSJcbicKKyAgICAgICAgICAgICAgICAgJ3Nob3VsZCBiZSB0aGUgc2FtZSBhcyAia2V5cygpIjsgZm9yIHNlcXVlbmNlcywgaXQgc2hvdWxkICcKKyAgICAgICAgICAgICAgICAgJ2l0ZXJhdGVcbicKKyAgICAgICAgICAgICAgICAgJ3Rocm91Z2ggdGhlIHZhbHVlcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbGVuX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gImxlbigpIi4gICcKKyAgICAgICAgICAgICAgICAgJ1Nob3VsZCByZXR1cm5cbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoZSBsZW5ndGggb2YgdGhlIG9iamVjdCwgYW4gaW50ZWdlciAiPj0iIDAuICBBbHNvLCBhbiAnCisgICAgICAgICAgICAgICAgICdvYmplY3QgdGhhdFxuJworICAgICAgICAgICAgICAgICAnICAgZG9lc25cJ3QgZGVmaW5lIGEgIl9fYm9vbF9fKCkiIG1ldGhvZCBhbmQgd2hvc2UgJworICAgICAgICAgICAgICAgICAnIl9fbGVuX18oKSIgbWV0aG9kXG4nCisgICAgICAgICAgICAgICAgICcgICByZXR1cm5zIHplcm8gaXMgY29uc2lkZXJlZCB0byBiZSBmYWxzZSBpbiBhIEJvb2xlYW4gJworICAgICAgICAgICAgICAgICAnY29udGV4dC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbGVuZ3RoX2hpbnRfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50ICJvcGVyYXRvci5sZW5ndGhfaGludCgpIi4gU2hvdWxkICcKKyAgICAgICAgICAgICAgICAgJ3JldHVybiBhblxuJworICAgICAgICAgICAgICAgICAnICAgZXN0aW1hdGVkIGxlbmd0aCBmb3IgdGhlIG9iamVjdCAod2hpY2ggbWF5IGJlIGdyZWF0ZXIgb3IgJworICAgICAgICAgICAgICAgICAnbGVzcyB0aGFuXG4nCisgICAgICAgICAgICAgICAgICcgICB0aGUgYWN0dWFsIGxlbmd0aCkuIFRoZSBsZW5ndGggbXVzdCBiZSBhbiBpbnRlZ2VyICI+PSIgMC4gJworICAgICAgICAgICAgICAgICAnVGhpc1xuJworICAgICAgICAgICAgICAgICAnICAgbWV0aG9kIGlzIHB1cmVseSBhbiBvcHRpbWl6YXRpb24gYW5kIGlzIG5ldmVyIHJlcXVpcmVkICcKKyAgICAgICAgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICAgICAgICAnICAgY29ycmVjdG5lc3MuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuNC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnTm90ZTogU2xpY2luZyBpcyBkb25lIGV4Y2x1c2l2ZWx5IHdpdGggdGhlIGZvbGxvd2luZyB0aHJlZSAnCisgICAgICAgICAgICAgICAgICdtZXRob2RzLlxuJworICAgICAgICAgICAgICAgICAnICBBIGNhbGwgbGlrZVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGFbMToyXSA9IGJcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICBpcyB0cmFuc2xhdGVkIHRvXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgYVtzbGljZSgxLCAyLCBOb25lKV0gPSBiXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgYW5kIHNvIGZvcnRoLiAgTWlzc2luZyBzbGljZSBpdGVtcyBhcmUgYWx3YXlzIGZpbGxlZCBpbiAnCisgICAgICAgICAgICAgICAgICd3aXRoICJOb25lIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZ2V0aXRlbV9fKHNlbGYsIGtleSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCBldmFsdWF0aW9uIG9mICJzZWxmW2tleV0iLiBGb3IgJworICAgICAgICAgICAgICAgICAnc2VxdWVuY2UgdHlwZXMsXG4nCisgICAgICAgICAgICAgICAgICcgICB0aGUgYWNjZXB0ZWQga2V5cyBzaG91bGQgYmUgaW50ZWdlcnMgYW5kIHNsaWNlIG9iamVjdHMuICAnCisgICAgICAgICAgICAgICAgICdOb3RlIHRoYXRcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoZSBzcGVjaWFsIGludGVycHJldGF0aW9uIG9mIG5lZ2F0aXZlIGluZGV4ZXMgKGlmIHRoZSAnCisgICAgICAgICAgICAgICAgICdjbGFzcyB3aXNoZXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRvIGVtdWxhdGUgYSBzZXF1ZW5jZSB0eXBlKSBpcyB1cCB0byB0aGUgIl9fZ2V0aXRlbV9fKCkiICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZC4gSWZcbicKKyAgICAgICAgICAgICAgICAgJyAgICprZXkqIGlzIG9mIGFuIGluYXBwcm9wcmlhdGUgdHlwZSwgIlR5cGVFcnJvciIgbWF5IGJlICcKKyAgICAgICAgICAgICAgICAgJ3JhaXNlZDsgaWYgb2ZcbicKKyAgICAgICAgICAgICAgICAgJyAgIGEgdmFsdWUgb3V0c2lkZSB0aGUgc2V0IG9mIGluZGV4ZXMgZm9yIHRoZSBzZXF1ZW5jZSAnCisgICAgICAgICAgICAgICAgICcoYWZ0ZXIgYW55XG4nCisgICAgICAgICAgICAgICAgICcgICBzcGVjaWFsIGludGVycHJldGF0aW9uIG9mIG5lZ2F0aXZlIHZhbHVlcyksICJJbmRleEVycm9yIiAnCisgICAgICAgICAgICAgICAgICdzaG91bGQgYmVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJhaXNlZC4gRm9yIG1hcHBpbmcgdHlwZXMsIGlmICprZXkqIGlzIG1pc3NpbmcgKG5vdCBpbiAnCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNvbnRhaW5lciksICJLZXlFcnJvciIgc2hvdWxkIGJlIHJhaXNlZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgTm90ZTogImZvciIgbG9vcHMgZXhwZWN0IHRoYXQgYW4gIkluZGV4RXJyb3IiIHdpbGwgYmUgJworICAgICAgICAgICAgICAgICAncmFpc2VkIGZvclxuJworICAgICAgICAgICAgICAgICAnICAgICBpbGxlZ2FsIGluZGV4ZXMgdG8gYWxsb3cgcHJvcGVyIGRldGVjdGlvbiBvZiB0aGUgZW5kIG9mICcKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnICAgICBzZXF1ZW5jZS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbWlzc2luZ19fKHNlbGYsIGtleSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIGJ5ICJkaWN0Ii4iX19nZXRpdGVtX18oKSIgdG8gaW1wbGVtZW50ICJzZWxmW2tleV0iICcKKyAgICAgICAgICAgICAgICAgJ2ZvciBkaWN0XG4nCisgICAgICAgICAgICAgICAgICcgICBzdWJjbGFzc2VzIHdoZW4ga2V5IGlzIG5vdCBpbiB0aGUgZGljdGlvbmFyeS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgYXNzaWdubWVudCB0byAic2VsZltrZXldIi4gIFNhbWUgbm90ZSAnCisgICAgICAgICAgICAgICAgICdhcyBmb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgICJfX2dldGl0ZW1fXygpIi4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgZm9yICcKKyAgICAgICAgICAgICAgICAgJ21hcHBpbmdzIGlmXG4nCisgICAgICAgICAgICAgICAgICcgICB0aGUgb2JqZWN0cyBzdXBwb3J0IGNoYW5nZXMgdG8gdGhlIHZhbHVlcyBmb3Iga2V5cywgb3IgaWYgJworICAgICAgICAgICAgICAgICAnbmV3IGtleXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNhbiBiZSBhZGRlZCwgb3IgZm9yIHNlcXVlbmNlcyBpZiBlbGVtZW50cyBjYW4gYmUgJworICAgICAgICAgICAgICAgICAncmVwbGFjZWQuICBUaGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHNhbWUgZXhjZXB0aW9ucyBzaG91bGQgYmUgcmFpc2VkIGZvciBpbXByb3BlciAqa2V5KiAnCisgICAgICAgICAgICAgICAgICd2YWx1ZXMgYXMgZm9yXG4nCisgICAgICAgICAgICAgICAgICcgICB0aGUgIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZGVsaXRlbV9fKHNlbGYsIGtleSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCBkZWxldGlvbiBvZiAic2VsZltrZXldIi4gIFNhbWUgbm90ZSAnCisgICAgICAgICAgICAgICAgICdhcyBmb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgICJfX2dldGl0ZW1fXygpIi4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgZm9yICcKKyAgICAgICAgICAgICAgICAgJ21hcHBpbmdzIGlmXG4nCisgICAgICAgICAgICAgICAgICcgICB0aGUgb2JqZWN0cyBzdXBwb3J0IHJlbW92YWwgb2Yga2V5cywgb3IgZm9yIHNlcXVlbmNlcyBpZiAnCisgICAgICAgICAgICAgICAgICdlbGVtZW50c1xuJworICAgICAgICAgICAgICAgICAnICAgY2FuIGJlIHJlbW92ZWQgZnJvbSB0aGUgc2VxdWVuY2UuICBUaGUgc2FtZSBleGNlcHRpb25zICcKKyAgICAgICAgICAgICAgICAgJ3Nob3VsZCBiZVxuJworICAgICAgICAgICAgICAgICAnICAgcmFpc2VkIGZvciBpbXByb3BlciAqa2V5KiB2YWx1ZXMgYXMgZm9yIHRoZSAnCisgICAgICAgICAgICAgICAgICciX19nZXRpdGVtX18oKSIgbWV0aG9kLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19pdGVyX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW4gYW4gaXRlcmF0b3IgaXMgcmVxdWlyZWQgZm9yIGEgJworICAgICAgICAgICAgICAgICAnY29udGFpbmVyLlxuJworICAgICAgICAgICAgICAgICAnICAgVGhpcyBtZXRob2Qgc2hvdWxkIHJldHVybiBhIG5ldyBpdGVyYXRvciBvYmplY3QgdGhhdCBjYW4gJworICAgICAgICAgICAgICAgICAnaXRlcmF0ZVxuJworICAgICAgICAgICAgICAgICAnICAgb3ZlciBhbGwgdGhlIG9iamVjdHMgaW4gdGhlIGNvbnRhaW5lci4gIEZvciBtYXBwaW5ncywgaXQgJworICAgICAgICAgICAgICAgICAnc2hvdWxkXG4nCisgICAgICAgICAgICAgICAgICcgICBpdGVyYXRlIG92ZXIgdGhlIGtleXMgb2YgdGhlIGNvbnRhaW5lci5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgSXRlcmF0b3Igb2JqZWN0cyBhbHNvIG5lZWQgdG8gaW1wbGVtZW50IHRoaXMgbWV0aG9kOyB0aGV5ICcKKyAgICAgICAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAgICAgICAnICAgcmVxdWlyZWQgdG8gcmV0dXJuIHRoZW1zZWx2ZXMuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiAnCisgICAgICAgICAgICAgICAgICdpdGVyYXRvclxuJworICAgICAgICAgICAgICAgICAnICAgb2JqZWN0cywgc2VlIEl0ZXJhdG9yIFR5cGVzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19yZXZlcnNlZF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCAoaWYgcHJlc2VudCkgYnkgdGhlICJyZXZlcnNlZCgpIiBidWlsdC1pbiB0byAnCisgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJldmVyc2UgaXRlcmF0aW9uLiAgSXQgc2hvdWxkIHJldHVybiBhIG5ldyBpdGVyYXRvciAnCisgICAgICAgICAgICAgICAgICdvYmplY3QgdGhhdFxuJworICAgICAgICAgICAgICAgICAnICAgaXRlcmF0ZXMgb3ZlciBhbGwgdGhlIG9iamVjdHMgaW4gdGhlIGNvbnRhaW5lciBpbiByZXZlcnNlICcKKyAgICAgICAgICAgICAgICAgJ29yZGVyLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBJZiB0aGUgIl9fcmV2ZXJzZWRfXygpIiBtZXRob2QgaXMgbm90IHByb3ZpZGVkLCB0aGUgJworICAgICAgICAgICAgICAgICAnInJldmVyc2VkKCkiXG4nCisgICAgICAgICAgICAgICAgICcgICBidWlsdC1pbiB3aWxsIGZhbGwgYmFjayB0byB1c2luZyB0aGUgc2VxdWVuY2UgcHJvdG9jb2wgJworICAgICAgICAgICAgICAgICAnKCJfX2xlbl9fKCkiXG4nCisgICAgICAgICAgICAgICAgICcgICBhbmQgIl9fZ2V0aXRlbV9fKCkiKS4gIE9iamVjdHMgdGhhdCBzdXBwb3J0IHRoZSBzZXF1ZW5jZSAnCisgICAgICAgICAgICAgICAgICdwcm90b2NvbFxuJworICAgICAgICAgICAgICAgICAnICAgc2hvdWxkIG9ubHkgcHJvdmlkZSAiX19yZXZlcnNlZF9fKCkiIGlmIHRoZXkgY2FuIHByb3ZpZGUgJworICAgICAgICAgICAgICAgICAnYW5cbicKKyAgICAgICAgICAgICAgICAgJyAgIGltcGxlbWVudGF0aW9uIHRoYXQgaXMgbW9yZSBlZmZpY2llbnQgdGhhbiB0aGUgb25lICcKKyAgICAgICAgICAgICAgICAgJ3Byb3ZpZGVkIGJ5XG4nCisgICAgICAgICAgICAgICAgICcgICAicmV2ZXJzZWQoKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzICgiaW4iIGFuZCAibm90IGluIikgYXJlICcKKyAgICAgICAgICAgICAgICAgJ25vcm1hbGx5XG4nCisgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRlZCBhcyBhbiBpdGVyYXRpb24gdGhyb3VnaCBhIHNlcXVlbmNlLiAgSG93ZXZlciwgJworICAgICAgICAgICAgICAgICAnY29udGFpbmVyXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3RzIGNhbiBzdXBwbHkgdGhlIGZvbGxvd2luZyBzcGVjaWFsIG1ldGhvZCB3aXRoIGEgbW9yZSAnCisgICAgICAgICAgICAgICAgICdlZmZpY2llbnRcbicKKyAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudGF0aW9uLCB3aGljaCBhbHNvIGRvZXMgbm90IHJlcXVpcmUgdGhlIG9iamVjdCBiZSBhICcKKyAgICAgICAgICAgICAgICAgJ3NlcXVlbmNlLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19jb250YWluc19fKHNlbGYsIGl0ZW0pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgbWVtYmVyc2hpcCB0ZXN0IG9wZXJhdG9ycy4gIFNob3VsZCAnCisgICAgICAgICAgICAgICAgICdyZXR1cm4gdHJ1ZVxuJworICAgICAgICAgICAgICAgICAnICAgaWYgKml0ZW0qIGlzIGluICpzZWxmKiwgZmFsc2Ugb3RoZXJ3aXNlLiAgRm9yIG1hcHBpbmcgJworICAgICAgICAgICAgICAgICAnb2JqZWN0cywgdGhpc1xuJworICAgICAgICAgICAgICAgICAnICAgc2hvdWxkIGNvbnNpZGVyIHRoZSBrZXlzIG9mIHRoZSBtYXBwaW5nIHJhdGhlciB0aGFuIHRoZSAnCisgICAgICAgICAgICAgICAgICd2YWx1ZXMgb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoZSBrZXktaXRlbSBwYWlycy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgRm9yIG9iamVjdHMgdGhhdCBkb25cJ3QgZGVmaW5lICJfX2NvbnRhaW5zX18oKSIsIHRoZSAnCisgICAgICAgICAgICAgICAgICdtZW1iZXJzaGlwIHRlc3RcbicKKyAgICAgICAgICAgICAgICAgJyAgIGZpcnN0IHRyaWVzIGl0ZXJhdGlvbiB2aWEgIl9faXRlcl9fKCkiLCB0aGVuIHRoZSBvbGQgJworICAgICAgICAgICAgICAgICAnc2VxdWVuY2VcbicKKyAgICAgICAgICAgICAgICAgJyAgIGl0ZXJhdGlvbiBwcm90b2NvbCB2aWEgIl9fZ2V0aXRlbV9fKCkiLCBzZWUgdGhpcyBzZWN0aW9uICcKKyAgICAgICAgICAgICAgICAgJ2luIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgbGFuZ3VhZ2UgcmVmZXJlbmNlLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0VtdWxhdGluZyBudW1lcmljIHR5cGVzXG4nCisgICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gZW11bGF0ZSBudW1lcmljICcKKyAgICAgICAgICAgICAgICAgJ29iamVjdHMuXG4nCisgICAgICAgICAgICAgICAgICdNZXRob2RzIGNvcnJlc3BvbmRpbmcgdG8gb3BlcmF0aW9ucyB0aGF0IGFyZSBub3Qgc3VwcG9ydGVkICcKKyAgICAgICAgICAgICAgICAgJ2J5IHRoZVxuJworICAgICAgICAgICAgICAgICAncGFydGljdWxhciBraW5kIG9mIG51bWJlciBpbXBsZW1lbnRlZCAoZS5nLiwgYml0d2lzZSAnCisgICAgICAgICAgICAgICAgICdvcGVyYXRpb25zIGZvclxuJworICAgICAgICAgICAgICAgICAnbm9uLWludGVncmFsIG51bWJlcnMpIHNob3VsZCBiZSBsZWZ0IHVuZGVmaW5lZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fYWRkX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19zdWJfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX211bF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbWF0bXVsX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX190cnVlZGl2X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19mbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbW9kX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19kaXZtb2RfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Bvd19fKHNlbGYsIG90aGVyWywgbW9kdWxvXSlcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2xzaGlmdF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcnNoaWZ0X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19hbmRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3hvcl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fb3JfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYmluYXJ5ICcKKyAgICAgICAgICAgICAgICAgJ2FyaXRobWV0aWNcbicKKyAgICAgICAgICAgICAgICAgJyAgIG9wZXJhdGlvbnMgKCIrIiwgIi0iLCAiKiIsICJAIiwgIi8iLCAiLy8iLCAiJSIsICcKKyAgICAgICAgICAgICAgICAgJyJkaXZtb2QoKSIsXG4nCisgICAgICAgICAgICAgICAgICcgICAicG93KCkiLCAiKioiLCAiPDwiLCAiPj4iLCAiJiIsICJeIiwgInwiKS4gIEZvciBpbnN0YW5jZSwgJworICAgICAgICAgICAgICAgICAndG9cbicKKyAgICAgICAgICAgICAgICAgJyAgIGV2YWx1YXRlIHRoZSBleHByZXNzaW9uICJ4ICsgeSIsIHdoZXJlICp4KiBpcyBhbiBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICAgICdvZiBhXG4nCisgICAgICAgICAgICAgICAgICcgICBjbGFzcyB0aGF0IGhhcyBhbiAiX19hZGRfXygpIiBtZXRob2QsICJ4Ll9fYWRkX18oeSkiIGlzICcKKyAgICAgICAgICAgICAgICAgJ2NhbGxlZC5cbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoZSAiX19kaXZtb2RfXygpIiBtZXRob2Qgc2hvdWxkIGJlIHRoZSBlcXVpdmFsZW50IHRvICcKKyAgICAgICAgICAgICAgICAgJ3VzaW5nXG4nCisgICAgICAgICAgICAgICAgICcgICAiX19mbG9vcmRpdl9fKCkiIGFuZCAiX19tb2RfXygpIjsgaXQgc2hvdWxkIG5vdCBiZSAnCisgICAgICAgICAgICAgICAgICdyZWxhdGVkIHRvXG4nCisgICAgICAgICAgICAgICAgICcgICAiX190cnVlZGl2X18oKSIuICBOb3RlIHRoYXQgIl9fcG93X18oKSIgc2hvdWxkIGJlIGRlZmluZWQgJworICAgICAgICAgICAgICAgICAndG8gYWNjZXB0XG4nCisgICAgICAgICAgICAgICAgICcgICBhbiBvcHRpb25hbCB0aGlyZCBhcmd1bWVudCBpZiB0aGUgdGVybmFyeSB2ZXJzaW9uIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICdidWlsdC1pblxuJworICAgICAgICAgICAgICAgICAnICAgInBvdygpIiBmdW5jdGlvbiBpcyB0byBiZSBzdXBwb3J0ZWQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIElmIG9uZSBvZiB0aG9zZSBtZXRob2RzIGRvZXMgbm90IHN1cHBvcnQgdGhlIG9wZXJhdGlvbiAnCisgICAgICAgICAgICAgICAgICd3aXRoIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgc3VwcGxpZWQgYXJndW1lbnRzLCBpdCBzaG91bGQgcmV0dXJuICJOb3RJbXBsZW1lbnRlZCIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JhZGRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JzdWJfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JtdWxfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JtYXRtdWxfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3J0cnVlZGl2X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19yZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Jtb2RfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JkaXZtb2RfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Jwb3dfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Jsc2hpZnRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Jyc2hpZnRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JhbmRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3J4b3JfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Jvcl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgJworICAgICAgICAgICAgICAgICAnYXJpdGhtZXRpY1xuJworICAgICAgICAgICAgICAgICAnICAgb3BlcmF0aW9ucyAoIisiLCAiLSIsICIqIiwgIkAiLCAiLyIsICIvLyIsICIlIiwgJworICAgICAgICAgICAgICAgICAnImRpdm1vZCgpIixcbicKKyAgICAgICAgICAgICAgICAgJyAgICJwb3coKSIsICIqKiIsICI8PCIsICI+PiIsICImIiwgIl4iLCAifCIpIHdpdGggcmVmbGVjdGVkICcKKyAgICAgICAgICAgICAgICAgJyhzd2FwcGVkKVxuJworICAgICAgICAgICAgICAgICAnICAgb3BlcmFuZHMuICBUaGVzZSBmdW5jdGlvbnMgYXJlIG9ubHkgY2FsbGVkIGlmIHRoZSBsZWZ0ICcKKyAgICAgICAgICAgICAgICAgJ29wZXJhbmQgZG9lc1xuJworICAgICAgICAgICAgICAgICAnICAgbm90IHN1cHBvcnQgdGhlIGNvcnJlc3BvbmRpbmcgb3BlcmF0aW9uIFszXSBhbmQgdGhlICcKKyAgICAgICAgICAgICAgICAgJ29wZXJhbmRzIGFyZSBvZlxuJworICAgICAgICAgICAgICAgICAnICAgZGlmZmVyZW50IHR5cGVzLiBbNF0gRm9yIGluc3RhbmNlLCB0byBldmFsdWF0ZSB0aGUgJworICAgICAgICAgICAgICAgICAnZXhwcmVzc2lvbiAieCAtXG4nCisgICAgICAgICAgICAgICAgICcgICB5Iiwgd2hlcmUgKnkqIGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBoYXMgYW4gJworICAgICAgICAgICAgICAgICAnIl9fcnN1Yl9fKCkiXG4nCisgICAgICAgICAgICAgICAgICcgICBtZXRob2QsICJ5Ll9fcnN1Yl9fKHgpIiBpcyBjYWxsZWQgaWYgInguX19zdWJfXyh5KSIgJworICAgICAgICAgICAgICAgICAncmV0dXJuc1xuJworICAgICAgICAgICAgICAgICAnICAgKk5vdEltcGxlbWVudGVkKi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgTm90ZSB0aGF0IHRlcm5hcnkgInBvdygpIiB3aWxsIG5vdCB0cnkgY2FsbGluZyAnCisgICAgICAgICAgICAgICAgICciX19ycG93X18oKSIgKHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgY29lcmNpb24gcnVsZXMgd291bGQgYmVjb21lIHRvbyBjb21wbGljYXRlZCkuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgIiAgIE5vdGU6IElmIHRoZSByaWdodCBvcGVyYW5kJ3MgdHlwZSBpcyBhIHN1YmNsYXNzIG9mIHRoZSAiCisgICAgICAgICAgICAgICAgICdsZWZ0XG4nCisgICAgICAgICAgICAgICAgICIgICAgIG9wZXJhbmQncyB0eXBlIGFuZCB0aGF0IHN1YmNsYXNzIHByb3ZpZGVzIHRoZSByZWZsZWN0ZWQgIgorICAgICAgICAgICAgICAgICAnbWV0aG9kXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGZvciB0aGUgb3BlcmF0aW9uLCB0aGlzIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBiZWZvcmUgJworICAgICAgICAgICAgICAgICAndGhlIGxlZnRcbicKKyAgICAgICAgICAgICAgICAgIiAgICAgb3BlcmFuZCdzIG5vbi1yZWZsZWN0ZWQgbWV0aG9kLiAgVGhpcyBiZWhhdmlvciBhbGxvd3MgIgorICAgICAgICAgICAgICAgICAnc3ViY2xhc3Nlc1xuJworICAgICAgICAgICAgICAgICAiICAgICB0byBvdmVycmlkZSB0aGVpciBhbmNlc3RvcnMnIG9wZXJhdGlvbnMuXG4iCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lhZGRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lzdWJfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2ltdWxfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2ltYXRtdWxfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2l0cnVlZGl2X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19pZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2ltb2RfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lwb3dfXyhzZWxmLCBvdGhlclssIG1vZHVsb10pXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19pbHNoaWZ0X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19pcnNoaWZ0X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19pYW5kX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19peG9yX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19pb3JfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYXVnbWVudGVkICcKKyAgICAgICAgICAgICAgICAgJ2FyaXRobWV0aWNcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFzc2lnbm1lbnRzICgiKz0iLCAiLT0iLCAiKj0iLCAiQD0iLCAiLz0iLCAiLy89IiwgIiU9IiwgJworICAgICAgICAgICAgICAgICAnIioqPSIsXG4nCisgICAgICAgICAgICAgICAgICcgICAiPDw9IiwgIj4+PSIsICImPSIsICJePSIsICJ8PSIpLiAgVGhlc2UgbWV0aG9kcyBzaG91bGQgJworICAgICAgICAgICAgICAgICAnYXR0ZW1wdCB0b1xuJworICAgICAgICAgICAgICAgICAnICAgZG8gdGhlIG9wZXJhdGlvbiBpbi1wbGFjZSAobW9kaWZ5aW5nICpzZWxmKikgYW5kIHJldHVybiAnCisgICAgICAgICAgICAgICAgICd0aGUgcmVzdWx0XG4nCisgICAgICAgICAgICAgICAgICcgICAod2hpY2ggY291bGQgYmUsIGJ1dCBkb2VzIG5vdCBoYXZlIHRvIGJlLCAqc2VsZiopLiAgSWYgYSAnCisgICAgICAgICAgICAgICAgICdzcGVjaWZpY1xuJworICAgICAgICAgICAgICAgICAnICAgbWV0aG9kIGlzIG5vdCBkZWZpbmVkLCB0aGUgYXVnbWVudGVkIGFzc2lnbm1lbnQgZmFsbHMgJworICAgICAgICAgICAgICAgICAnYmFjayB0byB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIG5vcm1hbCBtZXRob2RzLiAgRm9yIGluc3RhbmNlLCBpZiAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYSAnCisgICAgICAgICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICAgICAgICAnICAgd2l0aCBhbiAiX19pYWRkX18oKSIgbWV0aG9kLCAieCArPSB5IiBpcyBlcXVpdmFsZW50IHRvICJ4ICcKKyAgICAgICAgICAgICAgICAgJz1cbicKKyAgICAgICAgICAgICAgICAgJyAgIHguX19pYWRkX18oeSkiIC4gT3RoZXJ3aXNlLCAieC5fX2FkZF9fKHkpIiBhbmQgJworICAgICAgICAgICAgICAgICAnInkuX19yYWRkX18oeCkiIGFyZVxuJworICAgICAgICAgICAgICAgICAnICAgY29uc2lkZXJlZCwgYXMgd2l0aCB0aGUgZXZhbHVhdGlvbiBvZiAieCArIHkiLiBJbiAnCisgICAgICAgICAgICAgICAgICdjZXJ0YWluXG4nCisgICAgICAgICAgICAgICAgICcgICBzaXR1YXRpb25zLCBhdWdtZW50ZWQgYXNzaWdubWVudCBjYW4gcmVzdWx0IGluIHVuZXhwZWN0ZWQgJworICAgICAgICAgICAgICAgICAnZXJyb3JzXG4nCisgICAgICAgICAgICAgICAgICIgICAoc2VlIFdoeSBkb2VzIGFfdHVwbGVbaV0gKz0gWydpdGVtJ10gcmFpc2UgYW4gZXhjZXB0aW9uICIKKyAgICAgICAgICAgICAgICAgJ3doZW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBhZGRpdGlvbiB3b3Jrcz8pLCBidXQgdGhpcyBiZWhhdmlvciBpcyBpbiBmYWN0IHBhcnQgb2YgJworICAgICAgICAgICAgICAgICAndGhlIGRhdGFcbicKKyAgICAgICAgICAgICAgICAgJyAgIG1vZGVsLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19uZWdfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcG9zX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2Fic19fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19pbnZlcnRfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50IHRoZSB1bmFyeSBhcml0aG1ldGljIG9wZXJhdGlvbnMgKCItIiwgJworICAgICAgICAgICAgICAgICAnIisiLFxuJworICAgICAgICAgICAgICAgICAnICAgImFicygpIiBhbmQgIn4iKS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fY29tcGxleF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19pbnRfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZmxvYXRfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcm91bmRfXyhzZWxmWywgbl0pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyAiY29tcGxleCgpIiwgJworICAgICAgICAgICAgICAgICAnImludCgpIixcbicKKyAgICAgICAgICAgICAgICAgJyAgICJmbG9hdCgpIiBhbmQgInJvdW5kKCkiLiAgU2hvdWxkIHJldHVybiBhIHZhbHVlIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICdhcHByb3ByaWF0ZVxuJworICAgICAgICAgICAgICAgICAnICAgdHlwZS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW5kZXhfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50ICJvcGVyYXRvci5pbmRleCgpIiwgYW5kIHdoZW5ldmVyICcKKyAgICAgICAgICAgICAgICAgJ1B5dGhvbiBuZWVkc1xuJworICAgICAgICAgICAgICAgICAnICAgdG8gbG9zc2xlc3NseSBjb252ZXJ0IHRoZSBudW1lcmljIG9iamVjdCB0byBhbiBpbnRlZ2VyICcKKyAgICAgICAgICAgICAgICAgJ29iamVjdCAoc3VjaFxuJworICAgICAgICAgICAgICAgICAnICAgYXMgaW4gc2xpY2luZywgb3IgaW4gdGhlIGJ1aWx0LWluICJiaW4oKSIsICJoZXgoKSIgYW5kICcKKyAgICAgICAgICAgICAgICAgJyJvY3QoKSJcbicKKyAgICAgICAgICAgICAgICAgJyAgIGZ1bmN0aW9ucykuIFByZXNlbmNlIG9mIHRoaXMgbWV0aG9kIGluZGljYXRlcyB0aGF0IHRoZSAnCisgICAgICAgICAgICAgICAgICdudW1lcmljXG4nCisgICAgICAgICAgICAgICAgICcgICBvYmplY3QgaXMgYW4gaW50ZWdlciB0eXBlLiAgTXVzdCByZXR1cm4gYW4gaW50ZWdlci5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgTm90ZTogSW4gb3JkZXIgdG8gaGF2ZSBhIGNvaGVyZW50IGludGVnZXIgdHlwZSBjbGFzcywgJworICAgICAgICAgICAgICAgICAnd2hlblxuJworICAgICAgICAgICAgICAgICAnICAgICAiX19pbmRleF9fKCkiIGlzIGRlZmluZWQgIl9faW50X18oKSIgc2hvdWxkIGFsc28gYmUgJworICAgICAgICAgICAgICAgICAnZGVmaW5lZCwgYW5kXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGJvdGggc2hvdWxkIHJldHVybiB0aGUgc2FtZSB2YWx1ZS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdXaXRoIFN0YXRlbWVudCBDb250ZXh0IE1hbmFnZXJzXG4nCisgICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0EgKmNvbnRleHQgbWFuYWdlciogaXMgYW4gb2JqZWN0IHRoYXQgZGVmaW5lcyB0aGUgcnVudGltZSAnCisgICAgICAgICAgICAgICAgICdjb250ZXh0IHRvXG4nCisgICAgICAgICAgICAgICAgICdiZSBlc3RhYmxpc2hlZCB3aGVuIGV4ZWN1dGluZyBhICJ3aXRoIiBzdGF0ZW1lbnQuIFRoZSAnCisgICAgICAgICAgICAgICAgICdjb250ZXh0IG1hbmFnZXJcbicKKyAgICAgICAgICAgICAgICAgJ2hhbmRsZXMgdGhlIGVudHJ5IGludG8sIGFuZCB0aGUgZXhpdCBmcm9tLCB0aGUgZGVzaXJlZCAnCisgICAgICAgICAgICAgICAgICdydW50aW1lIGNvbnRleHRcbicKKyAgICAgICAgICAgICAgICAgJ2ZvciB0aGUgZXhlY3V0aW9uIG9mIHRoZSBibG9jayBvZiBjb2RlLiAgQ29udGV4dCBtYW5hZ2VycyAnCisgICAgICAgICAgICAgICAgICdhcmUgbm9ybWFsbHlcbicKKyAgICAgICAgICAgICAgICAgJ2ludm9rZWQgdXNpbmcgdGhlICJ3aXRoIiBzdGF0ZW1lbnQgKGRlc2NyaWJlZCBpbiBzZWN0aW9uIFRoZSAnCisgICAgICAgICAgICAgICAgICd3aXRoXG4nCisgICAgICAgICAgICAgICAgICdzdGF0ZW1lbnQpLCBidXQgY2FuIGFsc28gYmUgdXNlZCBieSBkaXJlY3RseSBpbnZva2luZyB0aGVpciAnCisgICAgICAgICAgICAgICAgICdtZXRob2RzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUeXBpY2FsIHVzZXMgb2YgY29udGV4dCBtYW5hZ2VycyBpbmNsdWRlIHNhdmluZyBhbmQgJworICAgICAgICAgICAgICAgICAncmVzdG9yaW5nIHZhcmlvdXNcbicKKyAgICAgICAgICAgICAgICAgJ2tpbmRzIG9mIGdsb2JhbCBzdGF0ZSwgbG9ja2luZyBhbmQgdW5sb2NraW5nIHJlc291cmNlcywgJworICAgICAgICAgICAgICAgICAnY2xvc2luZyBvcGVuZWRcbicKKyAgICAgICAgICAgICAgICAgJ2ZpbGVzLCBldGMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0ZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGNvbnRleHQgbWFuYWdlcnMsIHNlZSBDb250ZXh0ICcKKyAgICAgICAgICAgICAgICAgJ01hbmFnZXIgVHlwZXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2VudGVyX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgRW50ZXIgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiBUaGUgJworICAgICAgICAgICAgICAgICAnIndpdGgiXG4nCisgICAgICAgICAgICAgICAgICIgICBzdGF0ZW1lbnQgd2lsbCBiaW5kIHRoaXMgbWV0aG9kJ3MgcmV0dXJuIHZhbHVlIHRvIHRoZSAiCisgICAgICAgICAgICAgICAgICd0YXJnZXQocylcbicKKyAgICAgICAgICAgICAgICAgJyAgIHNwZWNpZmllZCBpbiB0aGUgImFzIiBjbGF1c2Ugb2YgdGhlIHN0YXRlbWVudCwgaWYgYW55LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWx1ZSwgdHJhY2ViYWNrKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBFeGl0IHRoZSBydW50aW1lIGNvbnRleHQgcmVsYXRlZCB0byB0aGlzIG9iamVjdC4gVGhlICcKKyAgICAgICAgICAgICAgICAgJ3BhcmFtZXRlcnNcbicKKyAgICAgICAgICAgICAgICAgJyAgIGRlc2NyaWJlIHRoZSBleGNlcHRpb24gdGhhdCBjYXVzZWQgdGhlIGNvbnRleHQgdG8gYmUgJworICAgICAgICAgICAgICAgICAnZXhpdGVkLiBJZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNvbnRleHQgd2FzIGV4aXRlZCB3aXRob3V0IGFuIGV4Y2VwdGlvbiwgYWxsIHRocmVlICcKKyAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50cyB3aWxsXG4nCisgICAgICAgICAgICAgICAgICcgICBiZSAiTm9uZSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIElmIGFuIGV4Y2VwdGlvbiBpcyBzdXBwbGllZCwgYW5kIHRoZSBtZXRob2Qgd2lzaGVzIHRvICcKKyAgICAgICAgICAgICAgICAgJ3N1cHByZXNzIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgZXhjZXB0aW9uIChpLmUuLCBwcmV2ZW50IGl0IGZyb20gYmVpbmcgcHJvcGFnYXRlZCksIGl0ICcKKyAgICAgICAgICAgICAgICAgJ3Nob3VsZFxuJworICAgICAgICAgICAgICAgICAnICAgcmV0dXJuIGEgdHJ1ZSB2YWx1ZS4gT3RoZXJ3aXNlLCB0aGUgZXhjZXB0aW9uIHdpbGwgYmUgJworICAgICAgICAgICAgICAgICAncHJvY2Vzc2VkXG4nCisgICAgICAgICAgICAgICAgICcgICBub3JtYWxseSB1cG9uIGV4aXQgZnJvbSB0aGlzIG1ldGhvZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgTm90ZSB0aGF0ICJfX2V4aXRfXygpIiBtZXRob2RzIHNob3VsZCBub3QgcmVyYWlzZSB0aGUgJworICAgICAgICAgICAgICAgICAncGFzc2VkLWluXG4nCisgICAgICAgICAgICAgICAgICIgICBleGNlcHRpb247IHRoaXMgaXMgdGhlIGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5LlxuIgorICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdTZWUgYWxzbzpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAqKlBFUCAzNDMqKiAtIFRoZSAid2l0aCIgc3RhdGVtZW50XG4nCisgICAgICAgICAgICAgICAgICcgICAgIFRoZSBzcGVjaWZpY2F0aW9uLCBiYWNrZ3JvdW5kLCBhbmQgZXhhbXBsZXMgZm9yIHRoZSAnCisgICAgICAgICAgICAgICAgICdQeXRob24gIndpdGgiXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHN0YXRlbWVudC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdTcGVjaWFsIG1ldGhvZCBsb29rdXBcbicKKyAgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdGb3IgY3VzdG9tIGNsYXNzZXMsIGltcGxpY2l0IGludm9jYXRpb25zIG9mIHNwZWNpYWwgbWV0aG9kcyAnCisgICAgICAgICAgICAgICAgICdhcmUgb25seVxuJworICAgICAgICAgICAgICAgICAiZ3VhcmFudGVlZCB0byB3b3JrIGNvcnJlY3RseSBpZiBkZWZpbmVkIG9uIGFuIG9iamVjdCdzIHR5cGUsICIKKyAgICAgICAgICAgICAgICAgJ25vdCBpblxuJworICAgICAgICAgICAgICAgICAidGhlIG9iamVjdCdzIGluc3RhbmNlIGRpY3Rpb25hcnkuICBUaGF0IGJlaGF2aW91ciBpcyB0aGUgIgorICAgICAgICAgICAgICAgICAncmVhc29uIHdoeVxuJworICAgICAgICAgICAgICAgICAndGhlIGZvbGxvd2luZyBjb2RlIHJhaXNlcyBhbiBleGNlcHRpb246XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBjbGFzcyBDOlxuJworICAgICAgICAgICAgICAgICAnICAgLi4uICAgICBwYXNzXG4nCisgICAgICAgICAgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBjID0gQygpXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gYy5fX2xlbl9fID0gbGFtYmRhOiA1XG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gbGVuKGMpXG4nCisgICAgICAgICAgICAgICAgICcgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4nCisgICAgICAgICAgICAgICAgICcgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+XG4nCisgICAgICAgICAgICAgICAgICIgICBUeXBlRXJyb3I6IG9iamVjdCBvZiB0eXBlICdDJyBoYXMgbm8gbGVuKClcbiIKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhpcyBiZWhhdmlvdXIgbGllcyB3aXRoIGEgbnVtYmVyIG9mICcKKyAgICAgICAgICAgICAgICAgJ3NwZWNpYWxcbicKKyAgICAgICAgICAgICAgICAgJ21ldGhvZHMgc3VjaCBhcyAiX19oYXNoX18oKSIgYW5kICJfX3JlcHJfXygpIiB0aGF0IGFyZSAnCisgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRlZCBieVxuJworICAgICAgICAgICAgICAgICAnYWxsIG9iamVjdHMsIGluY2x1ZGluZyB0eXBlIG9iamVjdHMuIElmIHRoZSBpbXBsaWNpdCBsb29rdXAgJworICAgICAgICAgICAgICAgICAnb2YgdGhlc2VcbicKKyAgICAgICAgICAgICAgICAgJ21ldGhvZHMgdXNlZCB0aGUgY29udmVudGlvbmFsIGxvb2t1cCBwcm9jZXNzLCB0aGV5IHdvdWxkICcKKyAgICAgICAgICAgICAgICAgJ2ZhaWwgd2hlblxuJworICAgICAgICAgICAgICAgICAnaW52b2tlZCBvbiB0aGUgdHlwZSBvYmplY3QgaXRzZWxmOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gMSAuX19oYXNoX18oKSA9PSBoYXNoKDEpXG4nCisgICAgICAgICAgICAgICAgICcgICBUcnVlXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gaW50Ll9faGFzaF9fKCkgPT0gaGFzaChpbnQpXG4nCisgICAgICAgICAgICAgICAgICcgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4nCisgICAgICAgICAgICAgICAgICcgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+XG4nCisgICAgICAgICAgICAgICAgICIgICBUeXBlRXJyb3I6IGRlc2NyaXB0b3IgJ19faGFzaF9fJyBvZiAnaW50JyBvYmplY3QgbmVlZHMgYW4gIgorICAgICAgICAgICAgICAgICAnYXJndW1lbnRcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnSW5jb3JyZWN0bHkgYXR0ZW1wdGluZyB0byBpbnZva2UgYW4gdW5ib3VuZCBtZXRob2Qgb2YgYSAnCisgICAgICAgICAgICAgICAgICdjbGFzcyBpbiB0aGlzXG4nCisgICAgICAgICAgICAgICAgICJ3YXkgaXMgc29tZXRpbWVzIHJlZmVycmVkIHRvIGFzICdtZXRhY2xhc3MgY29uZnVzaW9uJywgYW5kICIKKyAgICAgICAgICAgICAgICAgJ2lzIGF2b2lkZWRcbicKKyAgICAgICAgICAgICAgICAgJ2J5IGJ5cGFzc2luZyB0aGUgaW5zdGFuY2Ugd2hlbiBsb29raW5nIHVwIHNwZWNpYWwgbWV0aG9kczpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgPj4+IHR5cGUoMSkuX19oYXNoX18oMSkgPT0gaGFzaCgxKVxuJworICAgICAgICAgICAgICAgICAnICAgVHJ1ZVxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IHR5cGUoaW50KS5fX2hhc2hfXyhpbnQpID09IGhhc2goaW50KVxuJworICAgICAgICAgICAgICAgICAnICAgVHJ1ZVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdJbiBhZGRpdGlvbiB0byBieXBhc3NpbmcgYW55IGluc3RhbmNlIGF0dHJpYnV0ZXMgaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgJ2ludGVyZXN0IG9mXG4nCisgICAgICAgICAgICAgICAgICdjb3JyZWN0bmVzcywgaW1wbGljaXQgc3BlY2lhbCBtZXRob2QgbG9va3VwIGdlbmVyYWxseSBhbHNvICcKKyAgICAgICAgICAgICAgICAgJ2J5cGFzc2VzXG4nCisgICAgICAgICAgICAgICAgICd0aGUgIl9fZ2V0YXR0cmlidXRlX18oKSIgbWV0aG9kIGV2ZW4gb2YgdGhlIG9iamVjdFwncyAnCisgICAgICAgICAgICAgICAgICdtZXRhY2xhc3M6XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBjbGFzcyBNZXRhKHR5cGUpOlxuJworICAgICAgICAgICAgICAgICAnICAgLi4uICAgICBkZWYgX19nZXRhdHRyaWJ1dGVfXygqYXJncyk6XG4nCisgICAgICAgICAgICAgICAgICcgICAuLi4gICAgICAgICBwcmludCgiTWV0YWNsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkIilcbicKKyAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgICAgIHJldHVybiB0eXBlLl9fZ2V0YXR0cmlidXRlX18oKmFyZ3MpXG4nCisgICAgICAgICAgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBjbGFzcyBDKG9iamVjdCwgbWV0YWNsYXNzPU1ldGEpOlxuJworICAgICAgICAgICAgICAgICAnICAgLi4uICAgICBkZWYgX19sZW5fXyhzZWxmKTpcbicKKyAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgICAgIHJldHVybiAxMFxuJworICAgICAgICAgICAgICAgICAnICAgLi4uICAgICBkZWYgX19nZXRhdHRyaWJ1dGVfXygqYXJncyk6XG4nCisgICAgICAgICAgICAgICAgICcgICAuLi4gICAgICAgICBwcmludCgiQ2xhc3MgZ2V0YXR0cmlidXRlIGludm9rZWQiKVxuJworICAgICAgICAgICAgICAgICAnICAgLi4uICAgICAgICAgcmV0dXJuIG9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKCphcmdzKVxuJworICAgICAgICAgICAgICAgICAnICAgLi4uXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gYyA9IEMoKVxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IGMuX19sZW5fXygpICAgICAgICAgICAgICAgICAjIEV4cGxpY2l0IGxvb2t1cCB2aWEgJworICAgICAgICAgICAgICAgICAnaW5zdGFuY2VcbicKKyAgICAgICAgICAgICAgICAgJyAgIENsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkXG4nCisgICAgICAgICAgICAgICAgICcgICAxMFxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IHR5cGUoYykuX19sZW5fXyhjKSAgICAgICAgICAjIEV4cGxpY2l0IGxvb2t1cCB2aWEgJworICAgICAgICAgICAgICAgICAndHlwZVxuJworICAgICAgICAgICAgICAgICAnICAgTWV0YWNsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkXG4nCisgICAgICAgICAgICAgICAgICcgICAxMFxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IGxlbihjKSAgICAgICAgICAgICAgICAgICAgICAjIEltcGxpY2l0IGxvb2t1cFxuJworICAgICAgICAgICAgICAgICAnICAgMTBcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQnlwYXNzaW5nIHRoZSAiX19nZXRhdHRyaWJ1dGVfXygpIiBtYWNoaW5lcnkgaW4gdGhpcyBmYXNoaW9uICcKKyAgICAgICAgICAgICAgICAgJ3Byb3ZpZGVzXG4nCisgICAgICAgICAgICAgICAgICdzaWduaWZpY2FudCBzY29wZSBmb3Igc3BlZWQgb3B0aW1pc2F0aW9ucyB3aXRoaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgJ2ludGVycHJldGVyLCBhdFxuJworICAgICAgICAgICAgICAgICAndGhlIGNvc3Qgb2Ygc29tZSBmbGV4aWJpbGl0eSBpbiB0aGUgaGFuZGxpbmcgb2Ygc3BlY2lhbCAnCisgICAgICAgICAgICAgICAgICdtZXRob2RzICh0aGVcbicKKyAgICAgICAgICAgICAgICAgJ3NwZWNpYWwgbWV0aG9kICptdXN0KiBiZSBzZXQgb24gdGhlIGNsYXNzIG9iamVjdCBpdHNlbGYgaW4gJworICAgICAgICAgICAgICAgICAnb3JkZXIgdG8gYmVcbicKKyAgICAgICAgICAgICAgICAgJ2NvbnNpc3RlbnRseSBpbnZva2VkIGJ5IHRoZSBpbnRlcnByZXRlcikuXG4nLAorICdzdHJpbmctbWV0aG9kcyc6ICdcbicKKyAgICAgICAgICAgICAgICAgICAnU3RyaW5nIE1ldGhvZHNcbicKKyAgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ1N0cmluZ3MgaW1wbGVtZW50IGFsbCBvZiB0aGUgY29tbW9uIHNlcXVlbmNlIG9wZXJhdGlvbnMsICcKKyAgICAgICAgICAgICAgICAgICAnYWxvbmcgd2l0aFxuJworICAgICAgICAgICAgICAgICAgICd0aGUgYWRkaXRpb25hbCBtZXRob2RzIGRlc2NyaWJlZCBiZWxvdy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ1N0cmluZ3MgYWxzbyBzdXBwb3J0IHR3byBzdHlsZXMgb2Ygc3RyaW5nIGZvcm1hdHRpbmcsIG9uZSAnCisgICAgICAgICAgICAgICAgICAgJ3Byb3ZpZGluZyBhXG4nCisgICAgICAgICAgICAgICAgICAgJ2xhcmdlIGRlZ3JlZSBvZiBmbGV4aWJpbGl0eSBhbmQgY3VzdG9taXphdGlvbiAoc2VlICcKKyAgICAgICAgICAgICAgICAgICAnInN0ci5mb3JtYXQoKSIsXG4nCisgICAgICAgICAgICAgICAgICAgJ0Zvcm1hdCBTdHJpbmcgU3ludGF4IGFuZCBDdXN0b20gU3RyaW5nIEZvcm1hdHRpbmcpIGFuZCB0aGUgJworICAgICAgICAgICAgICAgICAgICdvdGhlciBiYXNlZFxuJworICAgICAgICAgICAgICAgICAgICdvbiBDICJwcmludGYiIHN0eWxlIGZvcm1hdHRpbmcgdGhhdCBoYW5kbGVzIGEgbmFycm93ZXIgJworICAgICAgICAgICAgICAgICAgICdyYW5nZSBvZiB0eXBlc1xuJworICAgICAgICAgICAgICAgICAgICdhbmQgaXMgc2xpZ2h0bHkgaGFyZGVyIHRvIHVzZSBjb3JyZWN0bHksIGJ1dCBpcyBvZnRlbiAnCisgICAgICAgICAgICAgICAgICAgJ2Zhc3RlciBmb3IgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJ2Nhc2VzIGl0IGNhbiBoYW5kbGUgKHByaW50Zi1zdHlsZSBTdHJpbmcgRm9ybWF0dGluZykuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdUaGUgVGV4dCBQcm9jZXNzaW5nIFNlcnZpY2VzIHNlY3Rpb24gb2YgdGhlIHN0YW5kYXJkICcKKyAgICAgICAgICAgICAgICAgICAnbGlicmFyeSBjb3ZlcnMgYVxuJworICAgICAgICAgICAgICAgICAgICdudW1iZXIgb2Ygb3RoZXIgbW9kdWxlcyB0aGF0IHByb3ZpZGUgdmFyaW91cyB0ZXh0IHJlbGF0ZWQgJworICAgICAgICAgICAgICAgICAgICd1dGlsaXRpZXNcbicKKyAgICAgICAgICAgICAgICAgICAnKGluY2x1ZGluZyByZWd1bGFyIGV4cHJlc3Npb24gc3VwcG9ydCBpbiB0aGUgInJlIiAnCisgICAgICAgICAgICAgICAgICAgJ21vZHVsZSkuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuY2FwaXRhbGl6ZSgpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBpdHMgZmlyc3QgY2hhcmFjdGVyICcKKyAgICAgICAgICAgICAgICAgICAnY2FwaXRhbGl6ZWRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYW5kIHRoZSByZXN0IGxvd2VyY2FzZWQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuY2FzZWZvbGQoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGEgY2FzZWZvbGRlZCBjb3B5IG9mIHRoZSBzdHJpbmcuIENhc2Vmb2xkZWQgJworICAgICAgICAgICAgICAgICAgICdzdHJpbmdzIG1heSBiZVxuJworICAgICAgICAgICAgICAgICAgICcgICB1c2VkIGZvciBjYXNlbGVzcyBtYXRjaGluZy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIENhc2Vmb2xkaW5nIGlzIHNpbWlsYXIgdG8gbG93ZXJjYXNpbmcgYnV0IG1vcmUgJworICAgICAgICAgICAgICAgICAgICdhZ2dyZXNzaXZlIGJlY2F1c2VcbicKKyAgICAgICAgICAgICAgICAgICAnICAgaXQgaXMgaW50ZW5kZWQgdG8gcmVtb3ZlIGFsbCBjYXNlIGRpc3RpbmN0aW9ucyBpbiBhICcKKyAgICAgICAgICAgICAgICAgICAnc3RyaW5nLiBGb3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZXhhbXBsZSwgdGhlIEdlcm1hbiBsb3dlcmNhc2UgbGV0dGVyICJcJ8OfXCciIGlzICcKKyAgICAgICAgICAgICAgICAgICAnZXF1aXZhbGVudCB0byAiInNzIiIuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFNpbmNlIGl0IGlzIGFscmVhZHkgbG93ZXJjYXNlLCAibG93ZXIoKSIgd291bGQgZG8gJworICAgICAgICAgICAgICAgICAgICdub3RoaW5nIHRvICJcJ8OfXCciO1xuJworICAgICAgICAgICAgICAgICAgICcgICAiY2FzZWZvbGQoKSIgY29udmVydHMgaXQgdG8gIiJzcyIiLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgVGhlIGNhc2Vmb2xkaW5nIGFsZ29yaXRobSBpcyBkZXNjcmliZWQgaW4gc2VjdGlvbiAzLjEzICcKKyAgICAgICAgICAgICAgICAgICAnb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFVuaWNvZGUgU3RhbmRhcmQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAzLjMuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuY2VudGVyKHdpZHRoWywgZmlsbGNoYXJdKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGNlbnRlcmVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCAqd2lkdGgqLiBQYWRkaW5nICcKKyAgICAgICAgICAgICAgICAgICAnaXMgZG9uZVxuJworICAgICAgICAgICAgICAgICAgICcgICB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogKGRlZmF1bHQgaXMgYW4gQVNDSUkgJworICAgICAgICAgICAgICAgICAgICdzcGFjZSkuIFRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBvcmlnaW5hbCBzdHJpbmcgaXMgcmV0dXJuZWQgaWYgKndpZHRoKiBpcyBsZXNzIHRoYW4gb3IgJworICAgICAgICAgICAgICAgICAgICdlcXVhbCB0b1xuJworICAgICAgICAgICAgICAgICAgICcgICAibGVuKHMpIi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5jb3VudChzdWJbLCBzdGFydFssIGVuZF1dKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRoZSBudW1iZXIgb2Ygbm9uLW92ZXJsYXBwaW5nIG9jY3VycmVuY2VzIG9mICcKKyAgICAgICAgICAgICAgICAgICAnc3Vic3RyaW5nICpzdWIqXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGluIHRoZSByYW5nZSBbKnN0YXJ0KiwgKmVuZCpdLiAgT3B0aW9uYWwgYXJndW1lbnRzICcKKyAgICAgICAgICAgICAgICAgICAnKnN0YXJ0KiBhbmRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgKmVuZCogYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlIG5vdGF0aW9uLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmVuY29kZShlbmNvZGluZz0idXRmLTgiLCBlcnJvcnM9InN0cmljdCIpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYW4gZW5jb2RlZCB2ZXJzaW9uIG9mIHRoZSBzdHJpbmcgYXMgYSBieXRlcyAnCisgICAgICAgICAgICAgICAgICAgJ29iamVjdC4gRGVmYXVsdFxuJworICAgICAgICAgICAgICAgICAgICcgICBlbmNvZGluZyBpcyAiXCd1dGYtOFwnIi4gKmVycm9ycyogbWF5IGJlIGdpdmVuIHRvIHNldCBhICcKKyAgICAgICAgICAgICAgICAgICAnZGlmZmVyZW50XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGVycm9yIGhhbmRsaW5nIHNjaGVtZS4gVGhlIGRlZmF1bHQgZm9yICplcnJvcnMqIGlzICcKKyAgICAgICAgICAgICAgICAgICAnIlwnc3RyaWN0XCciLFxuJworICAgICAgICAgICAgICAgICAgICcgICBtZWFuaW5nIHRoYXQgZW5jb2RpbmcgZXJyb3JzIHJhaXNlIGEgIlVuaWNvZGVFcnJvciIuICcKKyAgICAgICAgICAgICAgICAgICAnT3RoZXIgcG9zc2libGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdmFsdWVzIGFyZSAiXCdpZ25vcmVcJyIsICJcJ3JlcGxhY2VcJyIsICcKKyAgICAgICAgICAgICAgICAgICAnIlwneG1sY2hhcnJlZnJlcGxhY2VcJyIsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJcJ2JhY2tzbGFzaHJlcGxhY2VcJyIgYW5kIGFueSBvdGhlciBuYW1lIHJlZ2lzdGVyZWQgJworICAgICAgICAgICAgICAgICAgICd2aWFcbicKKyAgICAgICAgICAgICAgICAgICAnICAgImNvZGVjcy5yZWdpc3Rlcl9lcnJvcigpIiwgc2VlIHNlY3Rpb24gRXJyb3IgSGFuZGxlcnMuICcKKyAgICAgICAgICAgICAgICAgICAnRm9yIGEgbGlzdFxuJworICAgICAgICAgICAgICAgICAgICcgICBvZiBwb3NzaWJsZSBlbmNvZGluZ3MsIHNlZSBzZWN0aW9uIFN0YW5kYXJkIEVuY29kaW5ncy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IFN1cHBvcnQgZm9yIGtleXdvcmQgYXJndW1lbnRzICcKKyAgICAgICAgICAgICAgICAgICAnYWRkZWQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuZW5kc3dpdGgoc3VmZml4Wywgc3RhcnRbLCBlbmRdXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiAiVHJ1ZSIgaWYgdGhlIHN0cmluZyBlbmRzIHdpdGggdGhlIHNwZWNpZmllZCAnCisgICAgICAgICAgICAgICAgICAgJypzdWZmaXgqLFxuJworICAgICAgICAgICAgICAgICAgICcgICBvdGhlcndpc2UgcmV0dXJuICJGYWxzZSIuICAqc3VmZml4KiBjYW4gYWxzbyBiZSBhIHR1cGxlICcKKyAgICAgICAgICAgICAgICAgICAnb2Ygc3VmZml4ZXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdG8gbG9vayBmb3IuICBXaXRoIG9wdGlvbmFsICpzdGFydCosIHRlc3QgYmVnaW5uaW5nIGF0ICcKKyAgICAgICAgICAgICAgICAgICAndGhhdFxuJworICAgICAgICAgICAgICAgICAgICcgICBwb3NpdGlvbi4gIFdpdGggb3B0aW9uYWwgKmVuZCosIHN0b3AgY29tcGFyaW5nIGF0IHRoYXQgJworICAgICAgICAgICAgICAgICAgICdwb3NpdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5leHBhbmR0YWJzKHRhYnNpemU9OClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aGVyZSBhbGwgdGFiIGNoYXJhY3RlcnMgJworICAgICAgICAgICAgICAgICAgICdhcmUgcmVwbGFjZWRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYnkgb25lIG9yIG1vcmUgc3BhY2VzLCBkZXBlbmRpbmcgb24gdGhlIGN1cnJlbnQgY29sdW1uICcKKyAgICAgICAgICAgICAgICAgICAnYW5kIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBnaXZlbiB0YWIgc2l6ZS4gIFRhYiBwb3NpdGlvbnMgb2NjdXIgZXZlcnkgKnRhYnNpemUqICcKKyAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVyc1xuJworICAgICAgICAgICAgICAgICAgICcgICAoZGVmYXVsdCBpcyA4LCBnaXZpbmcgdGFiIHBvc2l0aW9ucyBhdCBjb2x1bW5zIDAsIDgsIDE2ICcKKyAgICAgICAgICAgICAgICAgICAnYW5kIHNvIG9uKS5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgVG8gZXhwYW5kIHRoZSBzdHJpbmcsIHRoZSBjdXJyZW50IGNvbHVtbiBpcyBzZXQgdG8gemVybyAnCisgICAgICAgICAgICAgICAgICAgJ2FuZCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgc3RyaW5nIGlzIGV4YW1pbmVkIGNoYXJhY3RlciBieSBjaGFyYWN0ZXIuICBJZiB0aGUgJworICAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXIgaXMgYVxuJworICAgICAgICAgICAgICAgICAgICcgICB0YWIgKCJcXHQiKSwgb25lIG9yIG1vcmUgc3BhY2UgY2hhcmFjdGVycyBhcmUgaW5zZXJ0ZWQgJworICAgICAgICAgICAgICAgICAgICdpbiB0aGUgcmVzdWx0XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHVudGlsIHRoZSBjdXJyZW50IGNvbHVtbiBpcyBlcXVhbCB0byB0aGUgbmV4dCB0YWIgJworICAgICAgICAgICAgICAgICAgICdwb3NpdGlvbi4gKFRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICB0YWIgY2hhcmFjdGVyIGl0c2VsZiBpcyBub3QgY29waWVkLikgIElmIHRoZSBjaGFyYWN0ZXIgJworICAgICAgICAgICAgICAgICAgICdpcyBhIG5ld2xpbmVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgKCJcXG4iKSBvciByZXR1cm4gKCJcXHIiKSwgaXQgaXMgY29waWVkIGFuZCB0aGUgY3VycmVudCAnCisgICAgICAgICAgICAgICAgICAgJ2NvbHVtbiBpc1xuJworICAgICAgICAgICAgICAgICAgICcgICByZXNldCB0byB6ZXJvLiAgQW55IG90aGVyIGNoYXJhY3RlciBpcyBjb3BpZWQgdW5jaGFuZ2VkICcKKyAgICAgICAgICAgICAgICAgICAnYW5kIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBjdXJyZW50IGNvbHVtbiBpcyBpbmNyZW1lbnRlZCBieSBvbmUgcmVnYXJkbGVzcyBvZiBob3cgJworICAgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY2hhcmFjdGVyIGlzIHJlcHJlc2VudGVkIHdoZW4gcHJpbnRlZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgIiAgID4+PiAnMDFcXHQwMTJcXHQwMTIzXFx0MDEyMzQnLmV4cGFuZHRhYnMoKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAnMDEgICAgICAwMTIgICAgIDAxMjMgICAgMDEyMzQnXG4iCisgICAgICAgICAgICAgICAgICAgIiAgID4+PiAnMDFcXHQwMTJcXHQwMTIzXFx0MDEyMzQnLmV4cGFuZHRhYnMoNClcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgJzAxICAwMTIgMDEyMyAgICAwMTIzNCdcbiIKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5maW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdGhlIGxvd2VzdCBpbmRleCBpbiB0aGUgc3RyaW5nIHdoZXJlIHN1YnN0cmluZyAnCisgICAgICAgICAgICAgICAgICAgJypzdWIqIGlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGZvdW5kIHdpdGhpbiB0aGUgc2xpY2UgInNbc3RhcnQ6ZW5kXSIuICBPcHRpb25hbCAnCisgICAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50cyAqc3RhcnQqXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFuZCAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2Ugbm90YXRpb24uICBSZXR1cm4gJworICAgICAgICAgICAgICAgICAgICciLTEiIGlmXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICpzdWIqIGlzIG5vdCBmb3VuZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIE5vdGU6IFRoZSAiZmluZCgpIiBtZXRob2Qgc2hvdWxkIGJlIHVzZWQgb25seSBpZiB5b3UgJworICAgICAgICAgICAgICAgICAgICduZWVkIHRvIGtub3dcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICB0aGUgcG9zaXRpb24gb2YgKnN1YiouICBUbyBjaGVjayBpZiAqc3ViKiBpcyBhICcKKyAgICAgICAgICAgICAgICAgICAnc3Vic3RyaW5nIG9yIG5vdCxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICB1c2UgdGhlICJpbiIgb3BlcmF0b3I6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICIgICAgICAgID4+PiAnUHknIGluICdQeXRob24nXG4iCisgICAgICAgICAgICAgICAgICAgJyAgICAgICAgVHJ1ZVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmZvcm1hdCgqYXJncywgKiprd2FyZ3MpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBQZXJmb3JtIGEgc3RyaW5nIGZvcm1hdHRpbmcgb3BlcmF0aW9uLiAgVGhlIHN0cmluZyBvbiAnCisgICAgICAgICAgICAgICAgICAgJ3doaWNoIHRoaXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgbWV0aG9kIGlzIGNhbGxlZCBjYW4gY29udGFpbiBsaXRlcmFsIHRleHQgb3IgJworICAgICAgICAgICAgICAgICAgICdyZXBsYWNlbWVudCBmaWVsZHNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZGVsaW1pdGVkIGJ5IGJyYWNlcyAie30iLiAgRWFjaCByZXBsYWNlbWVudCBmaWVsZCAnCisgICAgICAgICAgICAgICAgICAgJ2NvbnRhaW5zIGVpdGhlclxuJworICAgICAgICAgICAgICAgICAgICcgICB0aGUgbnVtZXJpYyBpbmRleCBvZiBhIHBvc2l0aW9uYWwgYXJndW1lbnQsIG9yIHRoZSBuYW1lICcKKyAgICAgICAgICAgICAgICAgICAnb2YgYVxuJworICAgICAgICAgICAgICAgICAgICcgICBrZXl3b3JkIGFyZ3VtZW50LiAgUmV0dXJucyBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aGVyZSAnCisgICAgICAgICAgICAgICAgICAgJ2VhY2hcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcmVwbGFjZW1lbnQgZmllbGQgaXMgcmVwbGFjZWQgd2l0aCB0aGUgc3RyaW5nIHZhbHVlIG9mICcKKyAgICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNvcnJlc3BvbmRpbmcgYXJndW1lbnQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICA+Pj4gIlRoZSBzdW0gb2YgMSArIDIgaXMgezB9Ii5mb3JtYXQoMSsyKVxuJworICAgICAgICAgICAgICAgICAgICIgICAnVGhlIHN1bSBvZiAxICsgMiBpcyAzJ1xuIgorICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgU2VlIEZvcm1hdCBTdHJpbmcgU3ludGF4IGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ3ZhcmlvdXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZm9ybWF0dGluZyBvcHRpb25zIHRoYXQgY2FuIGJlIHNwZWNpZmllZCBpbiBmb3JtYXQgJworICAgICAgICAgICAgICAgICAgICdzdHJpbmdzLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmZvcm1hdF9tYXAobWFwcGluZylcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFNpbWlsYXIgdG8gInN0ci5mb3JtYXQoKiptYXBwaW5nKSIsIGV4Y2VwdCB0aGF0ICcKKyAgICAgICAgICAgICAgICAgICAnIm1hcHBpbmciIGlzIHVzZWRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZGlyZWN0bHkgYW5kIG5vdCBjb3BpZWQgdG8gYSAiZGljdCIuICBUaGlzIGlzIHVzZWZ1bCBpZiAnCisgICAgICAgICAgICAgICAgICAgJ2ZvciBleGFtcGxlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJtYXBwaW5nIiBpcyBhIGRpY3Qgc3ViY2xhc3M6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICA+Pj4gY2xhc3MgRGVmYXVsdChkaWN0KTpcbicKKyAgICAgICAgICAgICAgICAgICAnICAgLi4uICAgICBkZWYgX19taXNzaW5nX18oc2VsZiwga2V5KTpcbicKKyAgICAgICAgICAgICAgICAgICAnICAgLi4uICAgICAgICAgcmV0dXJuIGtleVxuJworICAgICAgICAgICAgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgICAgICAgICAgICAiICAgPj4+ICd7bmFtZX0gd2FzIGJvcm4gaW4gIgorICAgICAgICAgICAgICAgICAgICJ7Y291bnRyeX0nLmZvcm1hdF9tYXAoRGVmYXVsdChuYW1lPSdHdWlkbycpKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAnR3VpZG8gd2FzIGJvcm4gaW4gY291bnRyeSdcbiIKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5pbmRleChzdWJbLCBzdGFydFssIGVuZF1dKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgTGlrZSAiZmluZCgpIiwgYnV0IHJhaXNlICJWYWx1ZUVycm9yIiB3aGVuIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ3N1YnN0cmluZyBpcyBub3RcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZm91bmQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuaXNhbG51bSgpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSAnCisgICAgICAgICAgICAgICAgICAgJ2FscGhhbnVtZXJpYyBhbmRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgQSAnCisgICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlciAiYyJcbicKKyAgICAgICAgICAgICAgICAgICAnICAgaXMgYWxwaGFudW1lcmljIGlmIG9uZSBvZiB0aGUgZm9sbG93aW5nIHJldHVybnMgJworICAgICAgICAgICAgICAgICAgICciVHJ1ZSI6XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJjLmlzYWxwaGEoKSIsICJjLmlzZGVjaW1hbCgpIiwgImMuaXNkaWdpdCgpIiwgb3IgJworICAgICAgICAgICAgICAgICAgICciYy5pc251bWVyaWMoKSIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuaXNhbHBoYSgpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSAnCisgICAgICAgICAgICAgICAgICAgJ2FscGhhYmV0aWMgYW5kXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gICcKKyAgICAgICAgICAgICAgICAgICAnQWxwaGFiZXRpY1xuJworICAgICAgICAgICAgICAgICAgICcgICBjaGFyYWN0ZXJzIGFyZSB0aG9zZSBjaGFyYWN0ZXJzIGRlZmluZWQgaW4gdGhlIFVuaWNvZGUgJworICAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZGF0YWJhc2UgYXMgIkxldHRlciIsIGkuZS4sIHRob3NlIHdpdGggZ2VuZXJhbCBjYXRlZ29yeSAnCisgICAgICAgICAgICAgICAgICAgJ3Byb3BlcnR5XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGJlaW5nIG9uZSBvZiAiTG0iLCAiTHQiLCAiTHUiLCAiTGwiLCBvciAiTG8iLiAgTm90ZSAnCisgICAgICAgICAgICAgICAgICAgJ3RoYXQgdGhpcyBpc1xuJworICAgICAgICAgICAgICAgICAgICcgICBkaWZmZXJlbnQgZnJvbSB0aGUgIkFscGhhYmV0aWMiIHByb3BlcnR5IGRlZmluZWQgaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgICAnVW5pY29kZVxuJworICAgICAgICAgICAgICAgICAgICcgICBTdGFuZGFyZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5pc2RlY2ltYWwoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgZGVjaW1hbCAnCisgICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlcnNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gJworICAgICAgICAgICAgICAgICAgICdEZWNpbWFsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNoYXJhY3RlcnMgYXJlIHRob3NlIGZyb20gZ2VuZXJhbCBjYXRlZ29yeSAiTmQiLiBUaGlzICcKKyAgICAgICAgICAgICAgICAgICAnY2F0ZWdvcnlcbicKKyAgICAgICAgICAgICAgICAgICAnICAgaW5jbHVkZXMgZGlnaXQgY2hhcmFjdGVycywgYW5kIGFsbCBjaGFyYWN0ZXJzIHRoYXQgY2FuICcKKyAgICAgICAgICAgICAgICAgICAnYmUgdXNlZCB0b1xuJworICAgICAgICAgICAgICAgICAgICcgICBmb3JtIGRlY2ltYWwtcmFkaXggbnVtYmVycywgZS5nLiBVKzA2NjAsIEFSQUJJQy1JTkRJQyAnCisgICAgICAgICAgICAgICAgICAgJ0RJR0lUIFpFUk8uXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuaXNkaWdpdCgpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBkaWdpdHMgJworICAgICAgICAgICAgICAgICAgICdhbmQgdGhlcmUgaXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgRGlnaXRzICcKKyAgICAgICAgICAgICAgICAgICAnaW5jbHVkZSBkZWNpbWFsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNoYXJhY3RlcnMgYW5kIGRpZ2l0cyB0aGF0IG5lZWQgc3BlY2lhbCBoYW5kbGluZywgc3VjaCAnCisgICAgICAgICAgICAgICAgICAgJ2FzIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBjb21wYXRpYmlsaXR5IHN1cGVyc2NyaXB0IGRpZ2l0cy4gIEZvcm1hbGx5LCBhIGRpZ2l0IGlzICcKKyAgICAgICAgICAgICAgICAgICAnYSBjaGFyYWN0ZXJcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhhdCBoYXMgdGhlIHByb3BlcnR5IHZhbHVlIE51bWVyaWNfVHlwZT1EaWdpdCBvclxuJworICAgICAgICAgICAgICAgICAgICcgICBOdW1lcmljX1R5cGU9RGVjaW1hbC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5pc2lkZW50aWZpZXIoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRydWUgaWYgdGhlIHN0cmluZyBpcyBhIHZhbGlkIGlkZW50aWZpZXIgJworICAgICAgICAgICAgICAgICAgICdhY2NvcmRpbmcgdG8gdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGxhbmd1YWdlIGRlZmluaXRpb24sIHNlY3Rpb24gSWRlbnRpZmllcnMgYW5kIGtleXdvcmRzLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgVXNlICJrZXl3b3JkLmlza2V5d29yZCgpIiB0byB0ZXN0IGZvciByZXNlcnZlZCAnCisgICAgICAgICAgICAgICAgICAgJ2lkZW50aWZpZXJzIHN1Y2ggYXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgImRlZiIgYW5kICJjbGFzcyIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuaXNsb3dlcigpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2FzZWQgY2hhcmFjdGVycyBbNF0gaW4gdGhlIHN0cmluZyAnCisgICAgICAgICAgICAgICAgICAgJ2FyZSBsb3dlcmNhc2VcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjYXNlZCBjaGFyYWN0ZXIsIGZhbHNlICcKKyAgICAgICAgICAgICAgICAgICAnb3RoZXJ3aXNlLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmlzbnVtZXJpYygpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBudW1lcmljICcKKyAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVycyxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gJworICAgICAgICAgICAgICAgICAgICdOdW1lcmljXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNoYXJhY3RlcnMgaW5jbHVkZSBkaWdpdCBjaGFyYWN0ZXJzLCBhbmQgYWxsIGNoYXJhY3RlcnMgJworICAgICAgICAgICAgICAgICAgICd0aGF0IGhhdmVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhlIFVuaWNvZGUgbnVtZXJpYyB2YWx1ZSBwcm9wZXJ0eSwgZS5nLiBVKzIxNTUsIFZVTEdBUiAnCisgICAgICAgICAgICAgICAgICAgJ0ZSQUNUSU9OXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIE9ORSBGSUZUSC4gIEZvcm1hbGx5LCBudW1lcmljIGNoYXJhY3RlcnMgYXJlIHRob3NlIHdpdGggJworICAgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcHJvcGVydHkgdmFsdWUgTnVtZXJpY19UeXBlPURpZ2l0LCBOdW1lcmljX1R5cGU9RGVjaW1hbCAnCisgICAgICAgICAgICAgICAgICAgJ29yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIE51bWVyaWNfVHlwZT1OdW1lcmljLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmlzcHJpbnRhYmxlKClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlICcKKyAgICAgICAgICAgICAgICAgICAncHJpbnRhYmxlIG9yIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBzdHJpbmcgaXMgZW1wdHksIGZhbHNlIG90aGVyd2lzZS4gIE5vbnByaW50YWJsZSAnCisgICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlcnMgYXJlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRob3NlIGNoYXJhY3RlcnMgZGVmaW5lZCBpbiB0aGUgVW5pY29kZSBjaGFyYWN0ZXIgJworICAgICAgICAgICAgICAgICAgICdkYXRhYmFzZSBhc1xuJworICAgICAgICAgICAgICAgICAgICcgICAiT3RoZXIiIG9yICJTZXBhcmF0b3IiLCBleGNlcHRpbmcgdGhlIEFTQ0lJIHNwYWNlICcKKyAgICAgICAgICAgICAgICAgICAnKDB4MjApIHdoaWNoIGlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNvbnNpZGVyZWQgcHJpbnRhYmxlLiAgKE5vdGUgdGhhdCBwcmludGFibGUgY2hhcmFjdGVycyAnCisgICAgICAgICAgICAgICAgICAgJ2luIHRoaXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY29udGV4dCBhcmUgdGhvc2Ugd2hpY2ggc2hvdWxkIG5vdCBiZSBlc2NhcGVkIHdoZW4gJworICAgICAgICAgICAgICAgICAgICcicmVwcigpIiBpc1xuJworICAgICAgICAgICAgICAgICAgICcgICBpbnZva2VkIG9uIGEgc3RyaW5nLiAgSXQgaGFzIG5vIGJlYXJpbmcgb24gdGhlIGhhbmRsaW5nICcKKyAgICAgICAgICAgICAgICAgICAnb2Ygc3RyaW5nc1xuJworICAgICAgICAgICAgICAgICAgICcgICB3cml0dGVuIHRvICJzeXMuc3Rkb3V0IiBvciAic3lzLnN0ZGVyciIuKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmlzc3BhY2UoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRydWUgaWYgdGhlcmUgYXJlIG9ubHkgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIGluICcKKyAgICAgICAgICAgICAgICAgICAndGhlIHN0cmluZ1xuJworICAgICAgICAgICAgICAgICAgICcgICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgJworICAgICAgICAgICAgICAgICAgICdXaGl0ZXNwYWNlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNoYXJhY3RlcnMgIGFyZSB0aG9zZSBjaGFyYWN0ZXJzIGRlZmluZWQgaW4gdGhlIFVuaWNvZGUgJworICAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZGF0YWJhc2UgYXMgIk90aGVyIiBvciAiU2VwYXJhdG9yIiBhbmQgdGhvc2Ugd2l0aCAnCisgICAgICAgICAgICAgICAgICAgJ2JpZGlyZWN0aW9uYWxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcHJvcGVydHkgYmVpbmcgb25lIG9mICJXUyIsICJCIiwgb3IgIlMiLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmlzdGl0bGUoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRydWUgaWYgdGhlIHN0cmluZyBpcyBhIHRpdGxlY2FzZWQgc3RyaW5nIGFuZCAnCisgICAgICAgICAgICAgICAgICAgJ3RoZXJlIGlzIGF0XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZvciBleGFtcGxlIHVwcGVyY2FzZSBjaGFyYWN0ZXJzICcKKyAgICAgICAgICAgICAgICAgICAnbWF5IG9ubHlcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZm9sbG93IHVuY2FzZWQgY2hhcmFjdGVycyBhbmQgbG93ZXJjYXNlIGNoYXJhY3RlcnMgb25seSAnCisgICAgICAgICAgICAgICAgICAgJ2Nhc2VkIG9uZXMuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBmYWxzZSBvdGhlcndpc2UuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuaXN1cHBlcigpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2FzZWQgY2hhcmFjdGVycyBbNF0gaW4gdGhlIHN0cmluZyAnCisgICAgICAgICAgICAgICAgICAgJ2FyZSB1cHBlcmNhc2VcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjYXNlZCBjaGFyYWN0ZXIsIGZhbHNlICcKKyAgICAgICAgICAgICAgICAgICAnb3RoZXJ3aXNlLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmpvaW4oaXRlcmFibGUpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBzdHJpbmcgd2hpY2ggaXMgdGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgICAnc3RyaW5ncyBpbiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgKml0ZXJhYmxlKiAqaXRlcmFibGUqLiAgQSAiVHlwZUVycm9yIiB3aWxsIGJlIHJhaXNlZCBpZiAnCisgICAgICAgICAgICAgICAgICAgJ3RoZXJlIGFyZVxuJworICAgICAgICAgICAgICAgICAgICcgICBhbnkgbm9uLXN0cmluZyB2YWx1ZXMgaW4gKml0ZXJhYmxlKiwgaW5jbHVkaW5nICJieXRlcyIgJworICAgICAgICAgICAgICAgICAgICdvYmplY3RzLlxuJworICAgICAgICAgICAgICAgICAgICcgICBUaGUgc2VwYXJhdG9yIGJldHdlZW4gZWxlbWVudHMgaXMgdGhlIHN0cmluZyBwcm92aWRpbmcgJworICAgICAgICAgICAgICAgICAgICd0aGlzIG1ldGhvZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5sanVzdCh3aWR0aFssIGZpbGxjaGFyXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0aGUgc3RyaW5nIGxlZnQganVzdGlmaWVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCAnCisgICAgICAgICAgICAgICAgICAgJyp3aWR0aCouXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFBhZGRpbmcgaXMgZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogKGRlZmF1bHQgJworICAgICAgICAgICAgICAgICAgICdpcyBhbiBBU0NJSVxuJworICAgICAgICAgICAgICAgICAgICcgICBzcGFjZSkuIFRoZSBvcmlnaW5hbCBzdHJpbmcgaXMgcmV0dXJuZWQgaWYgKndpZHRoKiBpcyAnCisgICAgICAgICAgICAgICAgICAgJ2xlc3MgdGhhbiBvclxuJworICAgICAgICAgICAgICAgICAgICcgICBlcXVhbCB0byAibGVuKHMpIi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5sb3dlcigpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgdGhlIGNhc2VkICcKKyAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVycyBbNF1cbicKKyAgICAgICAgICAgICAgICAgICAnICAgY29udmVydGVkIHRvIGxvd2VyY2FzZS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFRoZSBsb3dlcmNhc2luZyBhbGdvcml0aG0gdXNlZCBpcyBkZXNjcmliZWQgaW4gc2VjdGlvbiAnCisgICAgICAgICAgICAgICAgICAgJzMuMTMgb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFVuaWNvZGUgU3RhbmRhcmQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIubHN0cmlwKFtjaGFyc10pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBsZWFkaW5nIGNoYXJhY3RlcnMgJworICAgICAgICAgICAgICAgICAgICdyZW1vdmVkLiAgVGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICpjaGFycyogYXJndW1lbnQgaXMgYSBzdHJpbmcgc3BlY2lmeWluZyB0aGUgc2V0IG9mICcKKyAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVycyB0byBiZVxuJworICAgICAgICAgICAgICAgICAgICcgICByZW1vdmVkLiAgSWYgb21pdHRlZCBvciAiTm9uZSIsIHRoZSAqY2hhcnMqIGFyZ3VtZW50ICcKKyAgICAgICAgICAgICAgICAgICAnZGVmYXVsdHMgdG9cbicKKyAgICAgICAgICAgICAgICAgICAnICAgcmVtb3Zpbmcgd2hpdGVzcGFjZS4gIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIG5vdCBhICcKKyAgICAgICAgICAgICAgICAgICAncHJlZml4OyByYXRoZXIsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFsbCBjb21iaW5hdGlvbnMgb2YgaXRzIHZhbHVlcyBhcmUgc3RyaXBwZWQ6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gJyAgIHNwYWNpb3VzICAgJy5sc3RyaXAoKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICAnc3BhY2lvdXMgICAnXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnd3d3LmV4YW1wbGUuY29tJy5sc3RyaXAoJ2Ntb3d6LicpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgICdleGFtcGxlLmNvbSdcbiIKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0YXRpYyBzdHIubWFrZXRyYW5zKHhbLCB5Wywgel1dKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgVGhpcyBzdGF0aWMgbWV0aG9kIHJldHVybnMgYSB0cmFuc2xhdGlvbiB0YWJsZSB1c2FibGUgJworICAgICAgICAgICAgICAgICAgICdmb3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgInN0ci50cmFuc2xhdGUoKSIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBJZiB0aGVyZSBpcyBvbmx5IG9uZSBhcmd1bWVudCwgaXQgbXVzdCBiZSBhIGRpY3Rpb25hcnkgJworICAgICAgICAgICAgICAgICAgICdtYXBwaW5nXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFVuaWNvZGUgb3JkaW5hbHMgKGludGVnZXJzKSBvciBjaGFyYWN0ZXJzIChzdHJpbmdzIG9mICcKKyAgICAgICAgICAgICAgICAgICAnbGVuZ3RoIDEpIHRvXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFVuaWNvZGUgb3JkaW5hbHMsIHN0cmluZ3MgKG9mIGFyYml0cmFyeSBsZW5ndGhzKSBvciAnCisgICAgICAgICAgICAgICAgICAgJyJOb25lIi5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgQ2hhcmFjdGVyIGtleXMgd2lsbCB0aGVuIGJlIGNvbnZlcnRlZCB0byBvcmRpbmFscy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIElmIHRoZXJlIGFyZSB0d28gYXJndW1lbnRzLCB0aGV5IG11c3QgYmUgc3RyaW5ncyBvZiAnCisgICAgICAgICAgICAgICAgICAgJ2VxdWFsIGxlbmd0aCxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYW5kIGluIHRoZSByZXN1bHRpbmcgZGljdGlvbmFyeSwgZWFjaCBjaGFyYWN0ZXIgaW4geCAnCisgICAgICAgICAgICAgICAgICAgJ3dpbGwgYmUgbWFwcGVkXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRvIHRoZSBjaGFyYWN0ZXIgYXQgdGhlIHNhbWUgcG9zaXRpb24gaW4geS4gIElmIHRoZXJlICcKKyAgICAgICAgICAgICAgICAgICAnaXMgYSB0aGlyZFxuJworICAgICAgICAgICAgICAgICAgICcgICBhcmd1bWVudCwgaXQgbXVzdCBiZSBhIHN0cmluZywgd2hvc2UgY2hhcmFjdGVycyB3aWxsIGJlICcKKyAgICAgICAgICAgICAgICAgICAnbWFwcGVkIHRvXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJOb25lIiBpbiB0aGUgcmVzdWx0LlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnBhcnRpdGlvbihzZXApXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBTcGxpdCB0aGUgc3RyaW5nIGF0IHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mICpzZXAqLCBhbmQgJworICAgICAgICAgICAgICAgICAgICdyZXR1cm4gYVxuJworICAgICAgICAgICAgICAgICAgICcgICAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHBhcnQgYmVmb3JlIHRoZSBzZXBhcmF0b3IsIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ3NlcGFyYXRvclxuJworICAgICAgICAgICAgICAgICAgICcgICBpdHNlbGYsIGFuZCB0aGUgcGFydCBhZnRlciB0aGUgc2VwYXJhdG9yLiAgSWYgdGhlICcKKyAgICAgICAgICAgICAgICAgICAnc2VwYXJhdG9yIGlzIG5vdFxuJworICAgICAgICAgICAgICAgICAgICcgICBmb3VuZCwgcmV0dXJuIGEgMy10dXBsZSBjb250YWluaW5nIHRoZSBzdHJpbmcgaXRzZWxmLCAnCisgICAgICAgICAgICAgICAgICAgJ2ZvbGxvd2VkIGJ5XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHR3byBlbXB0eSBzdHJpbmdzLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnJlcGxhY2Uob2xkLCBuZXdbLCBjb3VudF0pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgb2NjdXJyZW5jZXMgb2YgJworICAgICAgICAgICAgICAgICAgICdzdWJzdHJpbmcgKm9sZCpcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcmVwbGFjZWQgYnkgKm5ldyouICBJZiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgKmNvdW50KiBpcyAnCisgICAgICAgICAgICAgICAgICAgJ2dpdmVuLCBvbmx5XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRoZSBmaXJzdCAqY291bnQqIG9jY3VycmVuY2VzIGFyZSByZXBsYWNlZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5yZmluZChzdWJbLCBzdGFydFssIGVuZF1dKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRoZSBoaWdoZXN0IGluZGV4IGluIHRoZSBzdHJpbmcgd2hlcmUgc3Vic3RyaW5nICcKKyAgICAgICAgICAgICAgICAgICAnKnN1YiogaXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZm91bmQsIHN1Y2ggdGhhdCAqc3ViKiBpcyBjb250YWluZWQgd2l0aGluICcKKyAgICAgICAgICAgICAgICAgICAnInNbc3RhcnQ6ZW5kXSIuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIE9wdGlvbmFsIGFyZ3VtZW50cyAqc3RhcnQqIGFuZCAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgYXMgJworICAgICAgICAgICAgICAgICAgICdpbiBzbGljZVxuJworICAgICAgICAgICAgICAgICAgICcgICBub3RhdGlvbi4gIFJldHVybiAiLTEiIG9uIGZhaWx1cmUuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIucmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBMaWtlICJyZmluZCgpIiBidXQgcmFpc2VzICJWYWx1ZUVycm9yIiB3aGVuIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ3N1YnN0cmluZyAqc3ViKiBpc1xuJworICAgICAgICAgICAgICAgICAgICcgICBub3QgZm91bmQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIucmp1c3Qod2lkdGhbLCBmaWxsY2hhcl0pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdGhlIHN0cmluZyByaWdodCBqdXN0aWZpZWQgaW4gYSBzdHJpbmcgb2YgbGVuZ3RoICcKKyAgICAgICAgICAgICAgICAgICAnKndpZHRoKi5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgUGFkZGluZyBpcyBkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgKmZpbGxjaGFyKiAoZGVmYXVsdCAnCisgICAgICAgICAgICAgICAgICAgJ2lzIGFuIEFTQ0lJXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHNwYWNlKS4gVGhlIG9yaWdpbmFsIHN0cmluZyBpcyByZXR1cm5lZCBpZiAqd2lkdGgqIGlzICcKKyAgICAgICAgICAgICAgICAgICAnbGVzcyB0aGFuIG9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGVxdWFsIHRvICJsZW4ocykiLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnJwYXJ0aXRpb24oc2VwKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgU3BsaXQgdGhlIHN0cmluZyBhdCB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mICpzZXAqLCBhbmQgJworICAgICAgICAgICAgICAgICAgICdyZXR1cm4gYVxuJworICAgICAgICAgICAgICAgICAgICcgICAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHBhcnQgYmVmb3JlIHRoZSBzZXBhcmF0b3IsIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ3NlcGFyYXRvclxuJworICAgICAgICAgICAgICAgICAgICcgICBpdHNlbGYsIGFuZCB0aGUgcGFydCBhZnRlciB0aGUgc2VwYXJhdG9yLiAgSWYgdGhlICcKKyAgICAgICAgICAgICAgICAgICAnc2VwYXJhdG9yIGlzIG5vdFxuJworICAgICAgICAgICAgICAgICAgICcgICBmb3VuZCwgcmV0dXJuIGEgMy10dXBsZSBjb250YWluaW5nIHR3byBlbXB0eSBzdHJpbmdzLCAnCisgICAgICAgICAgICAgICAgICAgJ2ZvbGxvd2VkIGJ5XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRoZSBzdHJpbmcgaXRzZWxmLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnJzcGxpdChzZXA9Tm9uZSwgbWF4c3BsaXQ9LTEpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBsaXN0IG9mIHRoZSB3b3JkcyBpbiB0aGUgc3RyaW5nLCB1c2luZyAqc2VwKiAnCisgICAgICAgICAgICAgICAgICAgJ2FzIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBkZWxpbWl0ZXIgc3RyaW5nLiBJZiAqbWF4c3BsaXQqIGlzIGdpdmVuLCBhdCBtb3N0ICcKKyAgICAgICAgICAgICAgICAgICAnKm1heHNwbGl0KiBzcGxpdHNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYXJlIGRvbmUsIHRoZSAqcmlnaHRtb3N0KiBvbmVzLiAgSWYgKnNlcCogaXMgbm90ICcKKyAgICAgICAgICAgICAgICAgICAnc3BlY2lmaWVkIG9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJOb25lIiwgYW55IHdoaXRlc3BhY2Ugc3RyaW5nIGlzIGEgc2VwYXJhdG9yLiAgRXhjZXB0ICcKKyAgICAgICAgICAgICAgICAgICAnZm9yIHNwbGl0dGluZ1xuJworICAgICAgICAgICAgICAgICAgICcgICBmcm9tIHRoZSByaWdodCwgInJzcGxpdCgpIiBiZWhhdmVzIGxpa2UgInNwbGl0KCkiIHdoaWNoICcKKyAgICAgICAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZGVzY3JpYmVkIGluIGRldGFpbCBiZWxvdy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5yc3RyaXAoW2NoYXJzXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIHRyYWlsaW5nIGNoYXJhY3RlcnMgJworICAgICAgICAgICAgICAgICAgICdyZW1vdmVkLiAgVGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICpjaGFycyogYXJndW1lbnQgaXMgYSBzdHJpbmcgc3BlY2lmeWluZyB0aGUgc2V0IG9mICcKKyAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVycyB0byBiZVxuJworICAgICAgICAgICAgICAgICAgICcgICByZW1vdmVkLiAgSWYgb21pdHRlZCBvciAiTm9uZSIsIHRoZSAqY2hhcnMqIGFyZ3VtZW50ICcKKyAgICAgICAgICAgICAgICAgICAnZGVmYXVsdHMgdG9cbicKKyAgICAgICAgICAgICAgICAgICAnICAgcmVtb3Zpbmcgd2hpdGVzcGFjZS4gIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIG5vdCBhICcKKyAgICAgICAgICAgICAgICAgICAnc3VmZml4OyByYXRoZXIsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFsbCBjb21iaW5hdGlvbnMgb2YgaXRzIHZhbHVlcyBhcmUgc3RyaXBwZWQ6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gJyAgIHNwYWNpb3VzICAgJy5yc3RyaXAoKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICAnICAgc3BhY2lvdXMnXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnbWlzc2lzc2lwcGknLnJzdHJpcCgnaXB6JylcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgJ21pc3Npc3MnXG4iCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuc3BsaXQoc2VwPU5vbmUsIG1heHNwbGl0PS0xKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGEgbGlzdCBvZiB0aGUgd29yZHMgaW4gdGhlIHN0cmluZywgdXNpbmcgKnNlcCogJworICAgICAgICAgICAgICAgICAgICdhcyB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZGVsaW1pdGVyIHN0cmluZy4gIElmICptYXhzcGxpdCogaXMgZ2l2ZW4sIGF0IG1vc3QgJworICAgICAgICAgICAgICAgICAgICcqbWF4c3BsaXQqXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHNwbGl0cyBhcmUgZG9uZSAodGh1cywgdGhlIGxpc3Qgd2lsbCBoYXZlIGF0IG1vc3QgJworICAgICAgICAgICAgICAgICAgICcibWF4c3BsaXQrMSJcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZWxlbWVudHMpLiAgSWYgKm1heHNwbGl0KiBpcyBub3Qgc3BlY2lmaWVkIG9yICItMSIsICcKKyAgICAgICAgICAgICAgICAgICAndGhlbiB0aGVyZSBpc1xuJworICAgICAgICAgICAgICAgICAgICcgICBubyBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIHNwbGl0cyAoYWxsIHBvc3NpYmxlIHNwbGl0cyAnCisgICAgICAgICAgICAgICAgICAgJ2FyZSBtYWRlKS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIElmICpzZXAqIGlzIGdpdmVuLCBjb25zZWN1dGl2ZSBkZWxpbWl0ZXJzIGFyZSBub3QgJworICAgICAgICAgICAgICAgICAgICdncm91cGVkIHRvZ2V0aGVyXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFuZCBhcmUgZGVlbWVkIHRvIGRlbGltaXQgZW1wdHkgc3RyaW5ncyAoZm9yIGV4YW1wbGUsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJcJzEsLDJcJy5zcGxpdChcJyxcJykiIHJldHVybnMgIltcJzFcJywgXCdcJywgJworICAgICAgICAgICAgICAgICAgICdcJzJcJ10iKS4gIFRoZSAqc2VwKiBhcmd1bWVudFxuJworICAgICAgICAgICAgICAgICAgICcgICBtYXkgY29uc2lzdCBvZiBtdWx0aXBsZSBjaGFyYWN0ZXJzIChmb3IgZXhhbXBsZSxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgIlwnMTw+Mjw+M1wnLnNwbGl0KFwnPD5cJykiIHJldHVybnMgIltcJzFcJywgXCcyXCcsICcKKyAgICAgICAgICAgICAgICAgICAnXCczXCddIikuIFNwbGl0dGluZyBhblxuJworICAgICAgICAgICAgICAgICAgICcgICBlbXB0eSBzdHJpbmcgd2l0aCBhIHNwZWNpZmllZCBzZXBhcmF0b3IgcmV0dXJucyAnCisgICAgICAgICAgICAgICAgICAgJyJbXCdcJ10iLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgRm9yIGV4YW1wbGU6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gJzEsMiwzJy5zcGxpdCgnLCcpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgIFsnMScsICcyJywgJzMnXVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gJzEsMiwzJy5zcGxpdCgnLCcsIG1heHNwbGl0PTEpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgIFsnMScsICcyLDMnXVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gJzEsMiwsMywnLnNwbGl0KCcsJylcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgWycxJywgJzInLCAnJywgJzMnLCAnJ11cbiIKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIElmICpzZXAqIGlzIG5vdCBzcGVjaWZpZWQgb3IgaXMgIk5vbmUiLCBhIGRpZmZlcmVudCAnCisgICAgICAgICAgICAgICAgICAgJ3NwbGl0dGluZ1xuJworICAgICAgICAgICAgICAgICAgICcgICBhbGdvcml0aG0gaXMgYXBwbGllZDogcnVucyBvZiBjb25zZWN1dGl2ZSB3aGl0ZXNwYWNlICcKKyAgICAgICAgICAgICAgICAgICAnYXJlIHJlZ2FyZGVkXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFzIGEgc2luZ2xlIHNlcGFyYXRvciwgYW5kIHRoZSByZXN1bHQgd2lsbCBjb250YWluIG5vICcKKyAgICAgICAgICAgICAgICAgICAnZW1wdHkgc3RyaW5nc1xuJworICAgICAgICAgICAgICAgICAgICcgICBhdCB0aGUgc3RhcnQgb3IgZW5kIGlmIHRoZSBzdHJpbmcgaGFzIGxlYWRpbmcgb3IgJworICAgICAgICAgICAgICAgICAgICd0cmFpbGluZ1xuJworICAgICAgICAgICAgICAgICAgICcgICB3aGl0ZXNwYWNlLiAgQ29uc2VxdWVudGx5LCBzcGxpdHRpbmcgYW4gZW1wdHkgc3RyaW5nIG9yICcKKyAgICAgICAgICAgICAgICAgICAnYSBzdHJpbmdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY29uc2lzdGluZyBvZiBqdXN0IHdoaXRlc3BhY2Ugd2l0aCBhICJOb25lIiBzZXBhcmF0b3IgJworICAgICAgICAgICAgICAgICAgICdyZXR1cm5zICJbXSIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBGb3IgZXhhbXBsZTpcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnMSAyIDMnLnNwbGl0KClcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgWycxJywgJzInLCAnMyddXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnMSAyIDMnLnNwbGl0KG1heHNwbGl0PTEpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgIFsnMScsICcyIDMnXVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gJyAgIDEgICAyICAgMyAgICcuc3BsaXQoKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICBbJzEnLCAnMicsICczJ11cbiIKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5zcGxpdGxpbmVzKFtrZWVwZW5kc10pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBsaXN0IG9mIHRoZSBsaW5lcyBpbiB0aGUgc3RyaW5nLCBicmVha2luZyBhdCAnCisgICAgICAgICAgICAgICAgICAgJ2xpbmVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYm91bmRhcmllcy4gIExpbmUgYnJlYWtzIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgICAncmVzdWx0aW5nIGxpc3RcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdW5sZXNzICprZWVwZW5kcyogaXMgZ2l2ZW4gYW5kIHRydWUuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBUaGlzIG1ldGhvZCBzcGxpdHMgb24gdGhlIGZvbGxvd2luZyBsaW5lIGJvdW5kYXJpZXMuICAnCisgICAgICAgICAgICAgICAgICAgJ0luXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHBhcnRpY3VsYXIsIHRoZSBib3VuZGFyaWVzIGFyZSBhIHN1cGVyc2V0IG9mICp1bml2ZXJzYWwgJworICAgICAgICAgICAgICAgICAgICduZXdsaW5lcyouXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHwgUmVwcmVzZW50YXRpb24gICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgJ0Rlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgICcrPT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuJworICAgICAgICAgICAgICAgICAgICcgICB8ICJcXG4iICAgICAgICAgICAgICAgICAgICB8IExpbmUgJworICAgICAgICAgICAgICAgICAgICdGZWVkICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHwgIlxcciIgICAgICAgICAgICAgICAgICAgIHwgQ2FycmlhZ2UgJworICAgICAgICAgICAgICAgICAgICdSZXR1cm4gICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAnICAgfCAiXFxyXFxuIiAgICAgICAgICAgICAgICAgIHwgQ2FycmlhZ2UgUmV0dXJuICsgTGluZSAnCisgICAgICAgICAgICAgICAgICAgJ0ZlZWQgICB8XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAnICAgfCAiXFx2IiBvciAiXFx4MGIiICAgICAgICAgIHwgTGluZSAnCisgICAgICAgICAgICAgICAgICAgJ1RhYnVsYXRpb24gICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAnICAgfCAiXFxmIiBvciAiXFx4MGMiICAgICAgICAgIHwgRm9ybSAnCisgICAgICAgICAgICAgICAgICAgJ0ZlZWQgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAnICAgfCAiXFx4MWMiICAgICAgICAgICAgICAgICAgfCBGaWxlICcKKyAgICAgICAgICAgICAgICAgICAnU2VwYXJhdG9yICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICcgICB8ICJcXHgxZCIgICAgICAgICAgICAgICAgICB8IEdyb3VwICcKKyAgICAgICAgICAgICAgICAgICAnU2VwYXJhdG9yICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHwgIlxceDFlIiAgICAgICAgICAgICAgICAgIHwgUmVjb3JkICcKKyAgICAgICAgICAgICAgICAgICAnU2VwYXJhdG9yICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAnICAgfCAiXFx4ODUiICAgICAgICAgICAgICAgICAgfCBOZXh0IExpbmUgKEMxIENvbnRyb2wgJworICAgICAgICAgICAgICAgICAgICdDb2RlKSAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICcgICB8ICJcXHUyMDI4IiAgICAgICAgICAgICAgICB8IExpbmUgJworICAgICAgICAgICAgICAgICAgICdTZXBhcmF0b3IgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHwgIlxcdTIwMjkiICAgICAgICAgICAgICAgIHwgUGFyYWdyYXBoICcKKyAgICAgICAgICAgICAgICAgICAnU2VwYXJhdG9yICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjI6ICJcXHYiIGFuZCAiXFxmIiBhZGRlZCB0byBsaXN0ICcKKyAgICAgICAgICAgICAgICAgICAnb2YgbGluZVxuJworICAgICAgICAgICAgICAgICAgICcgICBib3VuZGFyaWVzLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgRm9yIGV4YW1wbGU6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gJ2FiIGNcXG5cXG5kZSBmZ1xccmtsXFxyXFxuJy5zcGxpdGxpbmVzKClcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgWydhYiBjJywgJycsICdkZSBmZycsICdrbCddXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnYWIgY1xcblxcbmRlICIKKyAgICAgICAgICAgICAgICAgICAiZmdcXHJrbFxcclxcbicuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICBbJ2FiIGNcXG4nLCAnXFxuJywgJ2RlIGZnXFxyJywgJ2tsXFxyXFxuJ11cbiIKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFVubGlrZSAic3BsaXQoKSIgd2hlbiBhIGRlbGltaXRlciBzdHJpbmcgKnNlcCogaXMgJworICAgICAgICAgICAgICAgICAgICdnaXZlbiwgdGhpc1xuJworICAgICAgICAgICAgICAgICAgICcgICBtZXRob2QgcmV0dXJucyBhbiBlbXB0eSBsaXN0IGZvciB0aGUgZW1wdHkgc3RyaW5nLCBhbmQgJworICAgICAgICAgICAgICAgICAgICdhIHRlcm1pbmFsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGxpbmUgYnJlYWsgZG9lcyBub3QgcmVzdWx0IGluIGFuIGV4dHJhIGxpbmU6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICAgICA+Pj4gIiIuc3BsaXRsaW5lcygpXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgIFtdXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgID4+PiAiT25lIGxpbmVcXG4iLnNwbGl0bGluZXMoKVxuJworICAgICAgICAgICAgICAgICAgICIgICAgICBbJ09uZSBsaW5lJ11cbiIKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIEZvciBjb21wYXJpc29uLCAic3BsaXQoXCdcXG5cJykiIGdpdmVzOlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAiICAgICAgPj4+ICcnLnNwbGl0KCdcXG4nKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICBbJyddXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnVHdvIGxpbmVzXFxuJy5zcGxpdCgnXFxuJylcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgWydUd28gbGluZXMnLCAnJ11cbiIKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5zdGFydHN3aXRoKHByZWZpeFssIHN0YXJ0WywgZW5kXV0pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gIlRydWUiIGlmIHN0cmluZyBzdGFydHMgd2l0aCB0aGUgKnByZWZpeCosICcKKyAgICAgICAgICAgICAgICAgICAnb3RoZXJ3aXNlIHJldHVyblxuJworICAgICAgICAgICAgICAgICAgICcgICAiRmFsc2UiLiAqcHJlZml4KiBjYW4gYWxzbyBiZSBhIHR1cGxlIG9mIHByZWZpeGVzIHRvICcKKyAgICAgICAgICAgICAgICAgICAnbG9vayBmb3IuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFdpdGggb3B0aW9uYWwgKnN0YXJ0KiwgdGVzdCBzdHJpbmcgYmVnaW5uaW5nIGF0IHRoYXQgJworICAgICAgICAgICAgICAgICAgICdwb3NpdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgV2l0aCBvcHRpb25hbCAqZW5kKiwgc3RvcCBjb21wYXJpbmcgc3RyaW5nIGF0IHRoYXQgJworICAgICAgICAgICAgICAgICAgICdwb3NpdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5zdHJpcChbY2hhcnNdKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggdGhlIGxlYWRpbmcgYW5kICcKKyAgICAgICAgICAgICAgICAgICAndHJhaWxpbmdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY2hhcmFjdGVycyByZW1vdmVkLiBUaGUgKmNoYXJzKiBhcmd1bWVudCBpcyBhIHN0cmluZyAnCisgICAgICAgICAgICAgICAgICAgJ3NwZWNpZnlpbmcgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHNldCBvZiBjaGFyYWN0ZXJzIHRvIGJlIHJlbW92ZWQuIElmIG9taXR0ZWQgb3IgIk5vbmUiLCAnCisgICAgICAgICAgICAgICAgICAgJ3RoZSAqY2hhcnMqXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFyZ3VtZW50IGRlZmF1bHRzIHRvIHJlbW92aW5nIHdoaXRlc3BhY2UuIFRoZSAqY2hhcnMqICcKKyAgICAgICAgICAgICAgICAgICAnYXJndW1lbnQgaXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgbm90IGEgcHJlZml4IG9yIHN1ZmZpeDsgcmF0aGVyLCBhbGwgY29tYmluYXRpb25zIG9mIGl0cyAnCisgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcyBhcmVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgc3RyaXBwZWQ6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gJyAgIHNwYWNpb3VzICAgJy5zdHJpcCgpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgICdzcGFjaW91cydcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgPj4+ICd3d3cuZXhhbXBsZS5jb20nLnN0cmlwKCdjbW93ei4nKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICAnZXhhbXBsZSdcbiIKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFRoZSBvdXRlcm1vc3QgbGVhZGluZyBhbmQgdHJhaWxpbmcgKmNoYXJzKiBhcmd1bWVudCAnCisgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcyBhcmVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgc3RyaXBwZWQgZnJvbSB0aGUgc3RyaW5nLiBDaGFyYWN0ZXJzIGFyZSByZW1vdmVkIGZyb20gJworICAgICAgICAgICAgICAgICAgICd0aGUgbGVhZGluZ1xuJworICAgICAgICAgICAgICAgICAgICcgICBlbmQgdW50aWwgcmVhY2hpbmcgYSBzdHJpbmcgY2hhcmFjdGVyIHRoYXQgaXMgbm90ICcKKyAgICAgICAgICAgICAgICAgICAnY29udGFpbmVkIGluIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBzZXQgb2YgY2hhcmFjdGVycyBpbiAqY2hhcnMqLiBBIHNpbWlsYXIgYWN0aW9uIHRha2VzICcKKyAgICAgICAgICAgICAgICAgICAncGxhY2Ugb24gdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRyYWlsaW5nIGVuZC4gRm9yIGV4YW1wbGU6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gY29tbWVudF9zdHJpbmcgPSAnIy4uLi4uLi4gU2VjdGlvbiAzLjIuMSBJc3N1ZSAiCisgICAgICAgICAgICAgICAgICAgIiMzMiAuLi4uLi4uJ1xuIgorICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gY29tbWVudF9zdHJpbmcuc3RyaXAoJy4jISAnKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICAnU2VjdGlvbiAzLjIuMSBJc3N1ZSAjMzInXG4iCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuc3dhcGNhc2UoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggdXBwZXJjYXNlIGNoYXJhY3RlcnMgJworICAgICAgICAgICAgICAgICAgICdjb252ZXJ0ZWQgdG9cbicKKyAgICAgICAgICAgICAgICAgICAnICAgbG93ZXJjYXNlIGFuZCB2aWNlIHZlcnNhLiBOb3RlIHRoYXQgaXQgaXMgbm90ICcKKyAgICAgICAgICAgICAgICAgICAnbmVjZXNzYXJpbHkgdHJ1ZSB0aGF0XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJzLnN3YXBjYXNlKCkuc3dhcGNhc2UoKSA9PSBzIi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci50aXRsZSgpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSB0aXRsZWNhc2VkIHZlcnNpb24gb2YgdGhlIHN0cmluZyB3aGVyZSB3b3JkcyAnCisgICAgICAgICAgICAgICAgICAgJ3N0YXJ0IHdpdGggYW5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgdXBwZXJjYXNlIGNoYXJhY3RlciBhbmQgdGhlIHJlbWFpbmluZyBjaGFyYWN0ZXJzIGFyZSAnCisgICAgICAgICAgICAgICAgICAgJ2xvd2VyY2FzZS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIEZvciBleGFtcGxlOlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAiICAgICAgPj4+ICdIZWxsbyB3b3JsZCcudGl0bGUoKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICAnSGVsbG8gV29ybGQnXG4iCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBUaGUgYWxnb3JpdGhtIHVzZXMgYSBzaW1wbGUgbGFuZ3VhZ2UtaW5kZXBlbmRlbnQgJworICAgICAgICAgICAgICAgICAgICdkZWZpbml0aW9uIG9mIGFcbicKKyAgICAgICAgICAgICAgICAgICAnICAgd29yZCBhcyBncm91cHMgb2YgY29uc2VjdXRpdmUgbGV0dGVycy4gIFRoZSBkZWZpbml0aW9uICcKKyAgICAgICAgICAgICAgICAgICAnd29ya3MgaW5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgbWFueSBjb250ZXh0cyBidXQgaXQgbWVhbnMgdGhhdCBhcG9zdHJvcGhlcyBpbiAnCisgICAgICAgICAgICAgICAgICAgJ2NvbnRyYWN0aW9ucyBhbmRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcG9zc2Vzc2l2ZXMgZm9ybSB3b3JkIGJvdW5kYXJpZXMsIHdoaWNoIG1heSBub3QgYmUgdGhlICcKKyAgICAgICAgICAgICAgICAgICAnZGVzaXJlZFxuJworICAgICAgICAgICAgICAgICAgICcgICByZXN1bHQ6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICAgICA+Pj4gInRoZXlcJ3JlIGJpbGxcJ3MgZnJpZW5kcyBmcm9tIHRoZSBVSyIudGl0bGUoKVxuJworICAgICAgICAgICAgICAgICAgICcgICAgICAiVGhleVwnUmUgQmlsbFwnUyBGcmllbmRzIEZyb20gVGhlIFVrIlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgQSB3b3JrYXJvdW5kIGZvciBhcG9zdHJvcGhlcyBjYW4gYmUgY29uc3RydWN0ZWQgdXNpbmcgJworICAgICAgICAgICAgICAgICAgICdyZWd1bGFyXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGV4cHJlc3Npb25zOlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICAgPj4+IGltcG9ydCByZVxuJworICAgICAgICAgICAgICAgICAgICcgICAgICA+Pj4gZGVmIHRpdGxlY2FzZShzKTpcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICAgLi4uICAgICByZXR1cm4gcmUuc3ViKHIiW0EtWmEtel0rKFwnW0EtWmEtel0rKT8iLFxuJworICAgICAgICAgICAgICAgICAgICcgICAgICAuLi4gICAgICAgICAgICAgICAgICAgbGFtYmRhIG1vOiAnCisgICAgICAgICAgICAgICAgICAgJ21vLmdyb3VwKDApWzBdLnVwcGVyKCkgK1xuJworICAgICAgICAgICAgICAgICAgICcgICAgICAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgICAgICAgJ21vLmdyb3VwKDApWzE6XS5sb3dlcigpLFxuJworICAgICAgICAgICAgICAgICAgICcgICAgICAuLi4gICAgICAgICAgICAgICAgICAgcylcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICAgLi4uXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgID4+PiB0aXRsZWNhc2UoInRoZXlcJ3JlIGJpbGxcJ3MgZnJpZW5kcy4iKVxuJworICAgICAgICAgICAgICAgICAgICcgICAgICAiVGhleVwncmUgQmlsbFwncyBGcmllbmRzLiJcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci50cmFuc2xhdGUodGFibGUpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgaW4gd2hpY2ggZWFjaCBjaGFyYWN0ZXIgaGFzICcKKyAgICAgICAgICAgICAgICAgICAnYmVlbiBtYXBwZWRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhyb3VnaCB0aGUgZ2l2ZW4gdHJhbnNsYXRpb24gdGFibGUuICBUaGUgdGFibGUgbXVzdCBiZSAnCisgICAgICAgICAgICAgICAgICAgJ2FuIG9iamVjdFxuJworICAgICAgICAgICAgICAgICAgICcgICB0aGF0IGltcGxlbWVudHMgaW5kZXhpbmcgdmlhICJfX2dldGl0ZW1fXygpIiwgdHlwaWNhbGx5ICcKKyAgICAgICAgICAgICAgICAgICAnYSAqbWFwcGluZypcbicKKyAgICAgICAgICAgICAgICAgICAnICAgb3IgKnNlcXVlbmNlKi4gIFdoZW4gaW5kZXhlZCBieSBhIFVuaWNvZGUgb3JkaW5hbCAoYW4gJworICAgICAgICAgICAgICAgICAgICdpbnRlZ2VyKSwgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRhYmxlIG9iamVjdCBjYW4gZG8gYW55IG9mIHRoZSBmb2xsb3dpbmc6IHJldHVybiBhICcKKyAgICAgICAgICAgICAgICAgICAnVW5pY29kZSBvcmRpbmFsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG9yIGEgc3RyaW5nLCB0byBtYXAgdGhlIGNoYXJhY3RlciB0byBvbmUgb3IgbW9yZSBvdGhlciAnCisgICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlcnM7XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHJldHVybiAiTm9uZSIsIHRvIGRlbGV0ZSB0aGUgY2hhcmFjdGVyIGZyb20gdGhlIHJldHVybiAnCisgICAgICAgICAgICAgICAgICAgJ3N0cmluZzsgb3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcmFpc2UgYSAiTG9va3VwRXJyb3IiIGV4Y2VwdGlvbiwgdG8gbWFwIHRoZSBjaGFyYWN0ZXIgJworICAgICAgICAgICAgICAgICAgICd0byBpdHNlbGYuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBZb3UgY2FuIHVzZSAic3RyLm1ha2V0cmFucygpIiB0byBjcmVhdGUgYSB0cmFuc2xhdGlvbiAnCisgICAgICAgICAgICAgICAgICAgJ21hcCBmcm9tXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNoYXJhY3Rlci10by1jaGFyYWN0ZXIgbWFwcGluZ3MgaW4gZGlmZmVyZW50IGZvcm1hdHMuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBTZWUgYWxzbyB0aGUgImNvZGVjcyIgbW9kdWxlIGZvciBhIG1vcmUgZmxleGlibGUgJworICAgICAgICAgICAgICAgICAgICdhcHByb2FjaCB0byBjdXN0b21cbicKKyAgICAgICAgICAgICAgICAgICAnICAgY2hhcmFjdGVyIG1hcHBpbmdzLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnVwcGVyKClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGFsbCB0aGUgY2FzZWQgJworICAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJzIFs0XVxuJworICAgICAgICAgICAgICAgICAgICcgICBjb252ZXJ0ZWQgdG8gdXBwZXJjYXNlLiAgTm90ZSB0aGF0ICcKKyAgICAgICAgICAgICAgICAgICAnInN0ci51cHBlcigpLmlzdXBwZXIoKSIgbWlnaHQgYmVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgIkZhbHNlIiBpZiAicyIgY29udGFpbnMgdW5jYXNlZCBjaGFyYWN0ZXJzIG9yIGlmIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ1VuaWNvZGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY2F0ZWdvcnkgb2YgdGhlIHJlc3VsdGluZyBjaGFyYWN0ZXIocykgaXMgbm90ICJMdSIgJworICAgICAgICAgICAgICAgICAgICcoTGV0dGVyLFxuJworICAgICAgICAgICAgICAgICAgICcgICB1cHBlcmNhc2UpLCBidXQgZS5nLiAiTHQiIChMZXR0ZXIsIHRpdGxlY2FzZSkuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBUaGUgdXBwZXJjYXNpbmcgYWxnb3JpdGhtIHVzZWQgaXMgZGVzY3JpYmVkIGluIHNlY3Rpb24gJworICAgICAgICAgICAgICAgICAgICczLjEzIG9mIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBVbmljb2RlIFN0YW5kYXJkLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnpmaWxsKHdpZHRoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIGxlZnQgZmlsbGVkIHdpdGggQVNDSUkgJworICAgICAgICAgICAgICAgICAgICciXCcwXCciIGRpZ2l0cyB0b1xuJworICAgICAgICAgICAgICAgICAgICcgICBtYWtlIGEgc3RyaW5nIG9mIGxlbmd0aCAqd2lkdGgqLiBBIGxlYWRpbmcgc2lnbiBwcmVmaXhcbicKKyAgICAgICAgICAgICAgICAgICAnICAgKCJcJytcJyIvIlwnLVwnIikgaXMgaGFuZGxlZCBieSBpbnNlcnRpbmcgdGhlIHBhZGRpbmcgJworICAgICAgICAgICAgICAgICAgICcqYWZ0ZXIqIHRoZSBzaWduXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNoYXJhY3RlciByYXRoZXIgdGhhbiBiZWZvcmUuIFRoZSBvcmlnaW5hbCBzdHJpbmcgaXMgJworICAgICAgICAgICAgICAgICAgICdyZXR1cm5lZCBpZlxuJworICAgICAgICAgICAgICAgICAgICcgICAqd2lkdGgqIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byAibGVuKHMpIi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIEZvciBleGFtcGxlOlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICAgPj4+ICI0MiIuemZpbGwoNSlcbicKKyAgICAgICAgICAgICAgICAgICAiICAgICAgJzAwMDQyJ1xuIgorICAgICAgICAgICAgICAgICAgICcgICAgICA+Pj4gIi00MiIuemZpbGwoNSlcbicKKyAgICAgICAgICAgICAgICAgICAiICAgICAgJy0wMDQyJ1xuIiwKKyAnc3RyaW5ncyc6ICdcbicKKyAgICAgICAgICAgICdTdHJpbmcgYW5kIEJ5dGVzIGxpdGVyYWxzXG4nCisgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ1N0cmluZyBsaXRlcmFscyBhcmUgZGVzY3JpYmVkIGJ5IHRoZSBmb2xsb3dpbmcgbGV4aWNhbCAnCisgICAgICAgICAgICAnZGVmaW5pdGlvbnM6XG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnICAgc3RyaW5nbGl0ZXJhbCAgIDo6PSBbc3RyaW5ncHJlZml4XShzaG9ydHN0cmluZyB8IGxvbmdzdHJpbmcpXG4nCisgICAgICAgICAgICAnICAgc3RyaW5ncHJlZml4ICAgIDo6PSAiciIgfCAidSIgfCAiUiIgfCAiVSIgfCAiZiIgfCAiRiJcbicKKyAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgIHwgImZyIiB8ICJGciIgfCAiZlIiIHwgIkZSIiB8ICJyZiIgfCAickYiIHwgJworICAgICAgICAgICAgJyJSZiIgfCAiUkYiXG4nCisgICAgICAgICAgICAnICAgc2hvcnRzdHJpbmcgICAgIDo6PSAiXCciIHNob3J0c3RyaW5naXRlbSogIlwnIiB8IFwnIlwnICcKKyAgICAgICAgICAgICdzaG9ydHN0cmluZ2l0ZW0qIFwnIlwnXG4nCisgICAgICAgICAgICAnICAgbG9uZ3N0cmluZyAgICAgIDo6PSAiXCdcJ1wnIiBsb25nc3RyaW5naXRlbSogIlwnXCdcJyIgfCAnCisgICAgICAgICAgICAnXCciIiJcJyBsb25nc3RyaW5naXRlbSogXCciIiJcJ1xuJworICAgICAgICAgICAgJyAgIHNob3J0c3RyaW5naXRlbSA6Oj0gc2hvcnRzdHJpbmdjaGFyIHwgc3RyaW5nZXNjYXBlc2VxXG4nCisgICAgICAgICAgICAnICAgbG9uZ3N0cmluZ2l0ZW0gIDo6PSBsb25nc3RyaW5nY2hhciB8IHN0cmluZ2VzY2FwZXNlcVxuJworICAgICAgICAgICAgJyAgIHNob3J0c3RyaW5nY2hhciA6Oj0gPGFueSBzb3VyY2UgY2hhcmFjdGVyIGV4Y2VwdCAiXFwiIG9yICcKKyAgICAgICAgICAgICduZXdsaW5lIG9yIHRoZSBxdW90ZT5cbicKKyAgICAgICAgICAgICcgICBsb25nc3RyaW5nY2hhciAgOjo9IDxhbnkgc291cmNlIGNoYXJhY3RlciBleGNlcHQgIlxcIj5cbicKKyAgICAgICAgICAgICcgICBzdHJpbmdlc2NhcGVzZXEgOjo9ICJcXCIgPGFueSBzb3VyY2UgY2hhcmFjdGVyPlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJyAgIGJ5dGVzbGl0ZXJhbCAgIDo6PSBieXRlc3ByZWZpeChzaG9ydGJ5dGVzIHwgbG9uZ2J5dGVzKVxuJworICAgICAgICAgICAgJyAgIGJ5dGVzcHJlZml4ICAgIDo6PSAiYiIgfCAiQiIgfCAiYnIiIHwgIkJyIiB8ICJiUiIgfCAiQlIiIHwgJworICAgICAgICAgICAgJyJyYiIgfCAickIiIHwgIlJiIiB8ICJSQiJcbicKKyAgICAgICAgICAgICcgICBzaG9ydGJ5dGVzICAgICA6Oj0gIlwnIiBzaG9ydGJ5dGVzaXRlbSogIlwnIiB8IFwnIlwnICcKKyAgICAgICAgICAgICdzaG9ydGJ5dGVzaXRlbSogXCciXCdcbicKKyAgICAgICAgICAgICcgICBsb25nYnl0ZXMgICAgICA6Oj0gIlwnXCdcJyIgbG9uZ2J5dGVzaXRlbSogIlwnXCdcJyIgfCBcJyIiIlwnICcKKyAgICAgICAgICAgICdsb25nYnl0ZXNpdGVtKiBcJyIiIlwnXG4nCisgICAgICAgICAgICAnICAgc2hvcnRieXRlc2l0ZW0gOjo9IHNob3J0Ynl0ZXNjaGFyIHwgYnl0ZXNlc2NhcGVzZXFcbicKKyAgICAgICAgICAgICcgICBsb25nYnl0ZXNpdGVtICA6Oj0gbG9uZ2J5dGVzY2hhciB8IGJ5dGVzZXNjYXBlc2VxXG4nCisgICAgICAgICAgICAnICAgc2hvcnRieXRlc2NoYXIgOjo9IDxhbnkgQVNDSUkgY2hhcmFjdGVyIGV4Y2VwdCAiXFwiIG9yIG5ld2xpbmUgJworICAgICAgICAgICAgJ29yIHRoZSBxdW90ZT5cbicKKyAgICAgICAgICAgICcgICBsb25nYnl0ZXNjaGFyICA6Oj0gPGFueSBBU0NJSSBjaGFyYWN0ZXIgZXhjZXB0ICJcXCI+XG4nCisgICAgICAgICAgICAnICAgYnl0ZXNlc2NhcGVzZXEgOjo9ICJcXCIgPGFueSBBU0NJSSBjaGFyYWN0ZXI+XG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnT25lIHN5bnRhY3RpYyByZXN0cmljdGlvbiBub3QgaW5kaWNhdGVkIGJ5IHRoZXNlIHByb2R1Y3Rpb25zIGlzICcKKyAgICAgICAgICAgICd0aGF0XG4nCisgICAgICAgICAgICAnd2hpdGVzcGFjZSBpcyBub3QgYWxsb3dlZCBiZXR3ZWVuIHRoZSAic3RyaW5ncHJlZml4IiBvciAnCisgICAgICAgICAgICAnImJ5dGVzcHJlZml4IlxuJworICAgICAgICAgICAgJ2FuZCB0aGUgcmVzdCBvZiB0aGUgbGl0ZXJhbC4gVGhlIHNvdXJjZSBjaGFyYWN0ZXIgc2V0IGlzIGRlZmluZWQgJworICAgICAgICAgICAgJ2J5XG4nCisgICAgICAgICAgICAndGhlIGVuY29kaW5nIGRlY2xhcmF0aW9uOyBpdCBpcyBVVEYtOCBpZiBubyBlbmNvZGluZyBkZWNsYXJhdGlvbiAnCisgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICdnaXZlbiBpbiB0aGUgc291cmNlIGZpbGU7IHNlZSBzZWN0aW9uIEVuY29kaW5nIGRlY2xhcmF0aW9ucy5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdJbiBwbGFpbiBFbmdsaXNoOiBCb3RoIHR5cGVzIG9mIGxpdGVyYWxzIGNhbiBiZSBlbmNsb3NlZCBpbiAnCisgICAgICAgICAgICAnbWF0Y2hpbmdcbicKKyAgICAgICAgICAgICdzaW5nbGUgcXVvdGVzICgiXCciKSBvciBkb3VibGUgcXVvdGVzICgiIiIpLiAgVGhleSBjYW4gYWxzbyBiZSAnCisgICAgICAgICAgICAnZW5jbG9zZWRcbicKKyAgICAgICAgICAgICdpbiBtYXRjaGluZyBncm91cHMgb2YgdGhyZWUgc2luZ2xlIG9yIGRvdWJsZSBxdW90ZXMgKHRoZXNlIGFyZVxuJworICAgICAgICAgICAgJ2dlbmVyYWxseSByZWZlcnJlZCB0byBhcyAqdHJpcGxlLXF1b3RlZCBzdHJpbmdzKikuICBUaGUgJworICAgICAgICAgICAgJ2JhY2tzbGFzaFxuJworICAgICAgICAgICAgJygiXFwiKSBjaGFyYWN0ZXIgaXMgdXNlZCB0byBlc2NhcGUgY2hhcmFjdGVycyB0aGF0IG90aGVyd2lzZSBoYXZlICcKKyAgICAgICAgICAgICdhXG4nCisgICAgICAgICAgICAnc3BlY2lhbCBtZWFuaW5nLCBzdWNoIGFzIG5ld2xpbmUsIGJhY2tzbGFzaCBpdHNlbGYsIG9yIHRoZSBxdW90ZVxuJworICAgICAgICAgICAgJ2NoYXJhY3Rlci5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdCeXRlcyBsaXRlcmFscyBhcmUgYWx3YXlzIHByZWZpeGVkIHdpdGggIlwnYlwnIiBvciAiXCdCXCciOyB0aGV5ICcKKyAgICAgICAgICAgICdwcm9kdWNlXG4nCisgICAgICAgICAgICAnYW4gaW5zdGFuY2Ugb2YgdGhlICJieXRlcyIgdHlwZSBpbnN0ZWFkIG9mIHRoZSAic3RyIiB0eXBlLiAgVGhleSAnCisgICAgICAgICAgICAnbWF5XG4nCisgICAgICAgICAgICAnb25seSBjb250YWluIEFTQ0lJIGNoYXJhY3RlcnM7IGJ5dGVzIHdpdGggYSBudW1lcmljIHZhbHVlIG9mIDEyOCAnCisgICAgICAgICAgICAnb3JcbicKKyAgICAgICAgICAgICdncmVhdGVyIG11c3QgYmUgZXhwcmVzc2VkIHdpdGggZXNjYXBlcy5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdBcyBvZiBQeXRob24gMy4zIGl0IGlzIHBvc3NpYmxlIGFnYWluIHRvIHByZWZpeCBzdHJpbmcgbGl0ZXJhbHMgJworICAgICAgICAgICAgJ3dpdGggYVxuJworICAgICAgICAgICAgJyJ1IiBwcmVmaXggdG8gc2ltcGxpZnkgbWFpbnRlbmFuY2Ugb2YgZHVhbCAyLnggYW5kIDMueCAnCisgICAgICAgICAgICAnY29kZWJhc2VzLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ0JvdGggc3RyaW5nIGFuZCBieXRlcyBsaXRlcmFscyBtYXkgb3B0aW9uYWxseSBiZSBwcmVmaXhlZCB3aXRoIGFcbicKKyAgICAgICAgICAgICdsZXR0ZXIgIlwnclwnIiBvciAiXCdSXCciOyBzdWNoIHN0cmluZ3MgYXJlIGNhbGxlZCAqcmF3IHN0cmluZ3MqICcKKyAgICAgICAgICAgICdhbmQgdHJlYXRcbicKKyAgICAgICAgICAgICdiYWNrc2xhc2hlcyBhcyBsaXRlcmFsIGNoYXJhY3RlcnMuICBBcyBhIHJlc3VsdCwgaW4gc3RyaW5nICcKKyAgICAgICAgICAgICdsaXRlcmFscyxcbicKKyAgICAgICAgICAgICciXCdcXFVcJyIgYW5kICJcJ1xcdVwnIiBlc2NhcGVzIGluIHJhdyBzdHJpbmdzIGFyZSBub3QgdHJlYXRlZCAnCisgICAgICAgICAgICAnc3BlY2lhbGx5LlxuJworICAgICAgICAgICAgIkdpdmVuIHRoYXQgUHl0aG9uIDIueCdzIHJhdyB1bmljb2RlIGxpdGVyYWxzIGJlaGF2ZSBkaWZmZXJlbnRseSAiCisgICAgICAgICAgICAndGhhblxuJworICAgICAgICAgICAgJ1B5dGhvbiAzLnhcJ3MgdGhlICJcJ3VyXCciIHN5bnRheCBpcyBub3Qgc3VwcG9ydGVkLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ05ldyBpbiB2ZXJzaW9uIDMuMzogVGhlICJcJ3JiXCciIHByZWZpeCBvZiByYXcgYnl0ZXMgbGl0ZXJhbHMgaGFzICcKKyAgICAgICAgICAgICdiZWVuXG4nCisgICAgICAgICAgICAnYWRkZWQgYXMgYSBzeW5vbnltIG9mICJcJ2JyXCciLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ05ldyBpbiB2ZXJzaW9uIDMuMzogU3VwcG9ydCBmb3IgdGhlIHVuaWNvZGUgbGVnYWN5IGxpdGVyYWxcbicKKyAgICAgICAgICAgICcoInVcJ3ZhbHVlXCciKSB3YXMgcmVpbnRyb2R1Y2VkIHRvIHNpbXBsaWZ5IHRoZSBtYWludGVuYW5jZSBvZiAnCisgICAgICAgICAgICAnZHVhbFxuJworICAgICAgICAgICAgJ1B5dGhvbiAyLnggYW5kIDMueCBjb2RlYmFzZXMuIFNlZSAqKlBFUCA0MTQqKiBmb3IgbW9yZSAnCisgICAgICAgICAgICAnaW5mb3JtYXRpb24uXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnQSBzdHJpbmcgbGl0ZXJhbCB3aXRoICJcJ2ZcJyIgb3IgIlwnRlwnIiBpbiBpdHMgcHJlZml4IGlzIGEgJworICAgICAgICAgICAgJypmb3JtYXR0ZWRcbicKKyAgICAgICAgICAgICdzdHJpbmcgbGl0ZXJhbCo7IHNlZSBGb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWxzLiAgVGhlICJcJ2ZcJyIgbWF5ICcKKyAgICAgICAgICAgICdiZVxuJworICAgICAgICAgICAgJ2NvbWJpbmVkIHdpdGggIlwnclwnIiwgYnV0IG5vdCB3aXRoICJcJ2JcJyIgb3IgIlwndVwnIiwgdGhlcmVmb3JlICcKKyAgICAgICAgICAgICdyYXdcbicKKyAgICAgICAgICAgICdmb3JtYXR0ZWQgc3RyaW5ncyBhcmUgcG9zc2libGUsIGJ1dCBmb3JtYXR0ZWQgYnl0ZXMgbGl0ZXJhbHMgYXJlICcKKyAgICAgICAgICAgICdub3QuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnSW4gdHJpcGxlLXF1b3RlZCBsaXRlcmFscywgdW5lc2NhcGVkIG5ld2xpbmVzIGFuZCBxdW90ZXMgYXJlICcKKyAgICAgICAgICAgICdhbGxvd2VkXG4nCisgICAgICAgICAgICAnKGFuZCBhcmUgcmV0YWluZWQpLCBleGNlcHQgdGhhdCB0aHJlZSB1bmVzY2FwZWQgcXVvdGVzIGluIGEgcm93XG4nCisgICAgICAgICAgICAndGVybWluYXRlIHRoZSBsaXRlcmFsLiAgKEEgInF1b3RlIiBpcyB0aGUgY2hhcmFjdGVyIHVzZWQgdG8gb3BlbiAnCisgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAnbGl0ZXJhbCwgaS5lLiBlaXRoZXIgIlwnIiBvciAiIiIuKVxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ1VubGVzcyBhbiAiXCdyXCciIG9yICJcJ1JcJyIgcHJlZml4IGlzIHByZXNlbnQsIGVzY2FwZSBzZXF1ZW5jZXMgJworICAgICAgICAgICAgJ2luIHN0cmluZ1xuJworICAgICAgICAgICAgJ2FuZCBieXRlcyBsaXRlcmFscyBhcmUgaW50ZXJwcmV0ZWQgYWNjb3JkaW5nIHRvIHJ1bGVzIHNpbWlsYXIgdG8gJworICAgICAgICAgICAgJ3Rob3NlXG4nCisgICAgICAgICAgICAndXNlZCBieSBTdGFuZGFyZCBDLiAgVGhlIHJlY29nbml6ZWQgZXNjYXBlIHNlcXVlbmNlcyBhcmU6XG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ3wgRXNjYXBlIFNlcXVlbmNlICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgICcKKyAgICAgICAgICAgICd8XG4nCisgICAgICAgICAgICAnKz09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09K1xuJworICAgICAgICAgICAgJ3wgIlxcbmV3bGluZSIgICAgICAgIHwgQmFja3NsYXNoIGFuZCBuZXdsaW5lIGlnbm9yZWQgICAgICcKKyAgICAgICAgICAgICd8ICAgICAgICAgfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8ICJcXFxcIiAgICAgICAgICAgICAgfCBCYWNrc2xhc2ggKCJcXCIpICAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICd8ICAgICAgICAgfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8ICJcXFwnIiAgICAgICAgICAgICAgfCBTaW5nbGUgcXVvdGUgKCJcJyIpICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICd8ICAgICAgICAgfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8ICJcXCIiICAgICAgICAgICAgICB8IERvdWJsZSBxdW90ZSAoIiIiKSAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAnfCAgICAgICAgIHxcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnfCAiXFxhIiAgICAgICAgICAgICAgfCBBU0NJSSBCZWxsIChCRUwpICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgJ3wgICAgICAgICB8XG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ3wgIlxcYiIgICAgICAgICAgICAgIHwgQVNDSUkgQmFja3NwYWNlIChCUykgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICd8ICAgICAgICAgfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8ICJcXGYiICAgICAgICAgICAgICB8IEFTQ0lJIEZvcm1mZWVkIChGRikgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAnfCAgICAgICAgIHxcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnfCAiXFxuIiAgICAgICAgICAgICAgfCBBU0NJSSBMaW5lZmVlZCAoTEYpICAgICAgICAgICAgICAgJworICAgICAgICAgICAgJ3wgICAgICAgICB8XG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ3wgIlxcciIgICAgICAgICAgICAgIHwgQVNDSUkgQ2FycmlhZ2UgUmV0dXJuIChDUikgICAgICAgICcKKyAgICAgICAgICAgICd8ICAgICAgICAgfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8ICJcXHQiICAgICAgICAgICAgICB8IEFTQ0lJIEhvcml6b250YWwgVGFiIChUQUIpICAgICAgICAnCisgICAgICAgICAgICAnfCAgICAgICAgIHxcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnfCAiXFx2IiAgICAgICAgICAgICAgfCBBU0NJSSBWZXJ0aWNhbCBUYWIgKFZUKSAgICAgICAgICAgJworICAgICAgICAgICAgJ3wgICAgICAgICB8XG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ3wgIlxcb29vIiAgICAgICAgICAgIHwgQ2hhcmFjdGVyIHdpdGggb2N0YWwgdmFsdWUgKm9vbyogIHwgJworICAgICAgICAgICAgJygxLDMpICAgfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8ICJcXHhoaCIgICAgICAgICAgICB8IENoYXJhY3RlciB3aXRoIGhleCB2YWx1ZSAqaGgqICAgICB8ICcKKyAgICAgICAgICAgICcoMiwzKSAgIHxcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnRXNjYXBlIHNlcXVlbmNlcyBvbmx5IHJlY29nbml6ZWQgaW4gc3RyaW5nIGxpdGVyYWxzIGFyZTpcbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnfCBFc2NhcGUgU2VxdWVuY2UgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgJworICAgICAgICAgICAgJ3xcbicKKyAgICAgICAgICAgICcrPT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT0rXG4nCisgICAgICAgICAgICAnfCAiXFxOe25hbWV9IiAgICAgICAgfCBDaGFyYWN0ZXIgbmFtZWQgKm5hbWUqIGluIHRoZSAgICAgfCAnCisgICAgICAgICAgICAnKDQpICAgICB8XG4nCisgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICB8IFVuaWNvZGUgZGF0YWJhc2UgICAgICAgICAgICAgICAgICB8ICAgICAgICAgJworICAgICAgICAgICAgJ3xcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnfCAiXFx1eHh4eCIgICAgICAgICAgfCBDaGFyYWN0ZXIgd2l0aCAxNi1iaXQgaGV4IHZhbHVlICAgfCAnCisgICAgICAgICAgICAnKDUpICAgICB8XG4nCisgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICB8ICp4eHh4KiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgJworICAgICAgICAgICAgJ3xcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnfCAiXFxVeHh4eHh4eHgiICAgICAgfCBDaGFyYWN0ZXIgd2l0aCAzMi1iaXQgaGV4IHZhbHVlICAgfCAnCisgICAgICAgICAgICAnKDYpICAgICB8XG4nCisgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICB8ICp4eHh4eHh4eCogICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgJworICAgICAgICAgICAgJ3xcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnTm90ZXM6XG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnMS4gQXMgaW4gU3RhbmRhcmQgQywgdXAgdG8gdGhyZWUgb2N0YWwgZGlnaXRzIGFyZSBhY2NlcHRlZC5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICcyLiBVbmxpa2UgaW4gU3RhbmRhcmQgQywgZXhhY3RseSB0d28gaGV4IGRpZ2l0cyBhcmUgcmVxdWlyZWQuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnMy4gSW4gYSBieXRlcyBsaXRlcmFsLCBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgZXNjYXBlcyBkZW5vdGUgdGhlXG4nCisgICAgICAgICAgICAnICAgYnl0ZSB3aXRoIHRoZSBnaXZlbiB2YWx1ZS4gSW4gYSBzdHJpbmcgbGl0ZXJhbCwgdGhlc2UgZXNjYXBlc1xuJworICAgICAgICAgICAgJyAgIGRlbm90ZSBhIFVuaWNvZGUgY2hhcmFjdGVyIHdpdGggdGhlIGdpdmVuIHZhbHVlLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJzQuIENoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IFN1cHBvcnQgZm9yIG5hbWUgYWxpYXNlcyBbMV0gaGFzIGJlZW5cbicKKyAgICAgICAgICAgICcgICBhZGRlZC5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICc1LiBFeGFjdGx5IGZvdXIgaGV4IGRpZ2l0cyBhcmUgcmVxdWlyZWQuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnNi4gQW55IFVuaWNvZGUgY2hhcmFjdGVyIGNhbiBiZSBlbmNvZGVkIHRoaXMgd2F5LiAgRXhhY3RseSBlaWdodFxuJworICAgICAgICAgICAgJyAgIGhleCBkaWdpdHMgYXJlIHJlcXVpcmVkLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ1VubGlrZSBTdGFuZGFyZCBDLCBhbGwgdW5yZWNvZ25pemVkIGVzY2FwZSBzZXF1ZW5jZXMgYXJlIGxlZnQgaW4gJworICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgJ3N0cmluZyB1bmNoYW5nZWQsIGkuZS4sICp0aGUgYmFja3NsYXNoIGlzIGxlZnQgaW4gdGhlIHJlc3VsdCouICAnCisgICAgICAgICAgICAnKFRoaXNcbicKKyAgICAgICAgICAgICdiZWhhdmlvciBpcyB1c2VmdWwgd2hlbiBkZWJ1Z2dpbmc6IGlmIGFuIGVzY2FwZSBzZXF1ZW5jZSBpcyAnCisgICAgICAgICAgICAnbWlzdHlwZWQsXG4nCisgICAgICAgICAgICAndGhlIHJlc3VsdGluZyBvdXRwdXQgaXMgbW9yZSBlYXNpbHkgcmVjb2duaXplZCBhcyBicm9rZW4uKSAgSXQgaXMgJworICAgICAgICAgICAgJ2Fsc29cbicKKyAgICAgICAgICAgICdpbXBvcnRhbnQgdG8gbm90ZSB0aGF0IHRoZSBlc2NhcGUgc2VxdWVuY2VzIG9ubHkgcmVjb2duaXplZCBpbiAnCisgICAgICAgICAgICAnc3RyaW5nXG4nCisgICAgICAgICAgICAnbGl0ZXJhbHMgZmFsbCBpbnRvIHRoZSBjYXRlZ29yeSBvZiB1bnJlY29nbml6ZWQgZXNjYXBlcyBmb3IgJworICAgICAgICAgICAgJ2J5dGVzXG4nCisgICAgICAgICAgICAnbGl0ZXJhbHMuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuNjogVW5yZWNvZ25pemVkIGVzY2FwZSBzZXF1ZW5jZXMgcHJvZHVjZSAnCisgICAgICAgICAgICAnYVxuJworICAgICAgICAgICAgJyAgIERlcHJlY2F0aW9uV2FybmluZy4gIEluIHNvbWUgZnV0dXJlIHZlcnNpb24gb2YgUHl0aG9uIHRoZXkgJworICAgICAgICAgICAgJ3dpbGwgYmVcbicKKyAgICAgICAgICAgICcgICBhIFN5bnRheEVycm9yLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ0V2ZW4gaW4gYSByYXcgbGl0ZXJhbCwgcXVvdGVzIGNhbiBiZSBlc2NhcGVkIHdpdGggYSBiYWNrc2xhc2gsICcKKyAgICAgICAgICAgICdidXQgdGhlXG4nCisgICAgICAgICAgICAnYmFja3NsYXNoIHJlbWFpbnMgaW4gdGhlIHJlc3VsdDsgZm9yIGV4YW1wbGUsICJyIlxcIiIiIGlzIGEgJworICAgICAgICAgICAgJ3ZhbGlkXG4nCisgICAgICAgICAgICAnc3RyaW5nIGxpdGVyYWwgY29uc2lzdGluZyBvZiB0d28gY2hhcmFjdGVyczogYSBiYWNrc2xhc2ggYW5kIGEgJworICAgICAgICAgICAgJ2RvdWJsZVxuJworICAgICAgICAgICAgJ3F1b3RlOyAiciJcXCIiIGlzIG5vdCBhIHZhbGlkIHN0cmluZyBsaXRlcmFsIChldmVuIGEgcmF3IHN0cmluZyAnCisgICAgICAgICAgICAnY2Fubm90XG4nCisgICAgICAgICAgICAnZW5kIGluIGFuIG9kZCBudW1iZXIgb2YgYmFja3NsYXNoZXMpLiAgU3BlY2lmaWNhbGx5LCAqYSByYXcgJworICAgICAgICAgICAgJ2xpdGVyYWxcbicKKyAgICAgICAgICAgICdjYW5ub3QgZW5kIGluIGEgc2luZ2xlIGJhY2tzbGFzaCogKHNpbmNlIHRoZSBiYWNrc2xhc2ggd291bGQgJworICAgICAgICAgICAgJ2VzY2FwZVxuJworICAgICAgICAgICAgJ3RoZSBmb2xsb3dpbmcgcXVvdGUgY2hhcmFjdGVyKS4gIE5vdGUgYWxzbyB0aGF0IGEgc2luZ2xlICcKKyAgICAgICAgICAgICdiYWNrc2xhc2hcbicKKyAgICAgICAgICAgICdmb2xsb3dlZCBieSBhIG5ld2xpbmUgaXMgaW50ZXJwcmV0ZWQgYXMgdGhvc2UgdHdvIGNoYXJhY3RlcnMgYXMgJworICAgICAgICAgICAgJ3BhcnRcbicKKyAgICAgICAgICAgICdvZiB0aGUgbGl0ZXJhbCwgKm5vdCogYXMgYSBsaW5lIGNvbnRpbnVhdGlvbi5cbicsCisgJ3N1YnNjcmlwdGlvbnMnOiAnXG4nCisgICAgICAgICAgICAgICAgICAnU3Vic2NyaXB0aW9uc1xuJworICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdBIHN1YnNjcmlwdGlvbiBzZWxlY3RzIGFuIGl0ZW0gb2YgYSBzZXF1ZW5jZSAoc3RyaW5nLCB0dXBsZSAnCisgICAgICAgICAgICAgICAgICAnb3IgbGlzdClcbicKKyAgICAgICAgICAgICAgICAgICdvciBtYXBwaW5nIChkaWN0aW9uYXJ5KSBvYmplY3Q6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgc3Vic2NyaXB0aW9uIDo6PSBwcmltYXJ5ICJbIiBleHByZXNzaW9uX2xpc3QgIl0iXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlIHByaW1hcnkgbXVzdCBldmFsdWF0ZSB0byBhbiBvYmplY3QgdGhhdCBzdXBwb3J0cyAnCisgICAgICAgICAgICAgICAgICAnc3Vic2NyaXB0aW9uXG4nCisgICAgICAgICAgICAgICAgICAnKGxpc3RzIG9yIGRpY3Rpb25hcmllcyBmb3IgZXhhbXBsZSkuICBVc2VyLWRlZmluZWQgb2JqZWN0cyAnCisgICAgICAgICAgICAgICAgICAnY2FuIHN1cHBvcnRcbicKKyAgICAgICAgICAgICAgICAgICdzdWJzY3JpcHRpb24gYnkgZGVmaW5pbmcgYSAiX19nZXRpdGVtX18oKSIgbWV0aG9kLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0ZvciBidWlsdC1pbiBvYmplY3RzLCB0aGVyZSBhcmUgdHdvIHR5cGVzIG9mIG9iamVjdHMgdGhhdCAnCisgICAgICAgICAgICAgICAgICAnc3VwcG9ydFxuJworICAgICAgICAgICAgICAgICAgJ3N1YnNjcmlwdGlvbjpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdJZiB0aGUgcHJpbWFyeSBpcyBhIG1hcHBpbmcsIHRoZSBleHByZXNzaW9uIGxpc3QgbXVzdCAnCisgICAgICAgICAgICAgICAgICAnZXZhbHVhdGUgdG8gYW5cbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3Qgd2hvc2UgdmFsdWUgaXMgb25lIG9mIHRoZSBrZXlzIG9mIHRoZSBtYXBwaW5nLCBhbmQgJworICAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAgJ3N1YnNjcmlwdGlvbiBzZWxlY3RzIHRoZSB2YWx1ZSBpbiB0aGUgbWFwcGluZyB0aGF0ICcKKyAgICAgICAgICAgICAgICAgICdjb3JyZXNwb25kcyB0byB0aGF0XG4nCisgICAgICAgICAgICAgICAgICAna2V5LiAgKFRoZSBleHByZXNzaW9uIGxpc3QgaXMgYSB0dXBsZSBleGNlcHQgaWYgaXQgaGFzICcKKyAgICAgICAgICAgICAgICAgICdleGFjdGx5IG9uZVxuJworICAgICAgICAgICAgICAgICAgJ2l0ZW0uKVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0lmIHRoZSBwcmltYXJ5IGlzIGEgc2VxdWVuY2UsIHRoZSBleHByZXNzaW9uIChsaXN0KSBtdXN0ICcKKyAgICAgICAgICAgICAgICAgICdldmFsdWF0ZSB0b1xuJworICAgICAgICAgICAgICAgICAgJ2FuIGludGVnZXIgb3IgYSBzbGljZSAoYXMgZGlzY3Vzc2VkIGluIHRoZSBmb2xsb3dpbmcgJworICAgICAgICAgICAgICAgICAgJ3NlY3Rpb24pLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSBmb3JtYWwgc3ludGF4IG1ha2VzIG5vIHNwZWNpYWwgcHJvdmlzaW9uIGZvciBuZWdhdGl2ZSAnCisgICAgICAgICAgICAgICAgICAnaW5kaWNlcyBpblxuJworICAgICAgICAgICAgICAgICAgJ3NlcXVlbmNlczsgaG93ZXZlciwgYnVpbHQtaW4gc2VxdWVuY2VzIGFsbCBwcm92aWRlIGEgJworICAgICAgICAgICAgICAgICAgJyJfX2dldGl0ZW1fXygpIlxuJworICAgICAgICAgICAgICAgICAgJ21ldGhvZCB0aGF0IGludGVycHJldHMgbmVnYXRpdmUgaW5kaWNlcyBieSBhZGRpbmcgdGhlICcKKyAgICAgICAgICAgICAgICAgICdsZW5ndGggb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICAnc2VxdWVuY2UgdG8gdGhlIGluZGV4IChzbyB0aGF0ICJ4Wy0xXSIgc2VsZWN0cyB0aGUgbGFzdCAnCisgICAgICAgICAgICAgICAgICAnaXRlbSBvZiAieCIpLlxuJworICAgICAgICAgICAgICAgICAgJ1RoZSByZXN1bHRpbmcgdmFsdWUgbXVzdCBiZSBhIG5vbm5lZ2F0aXZlIGludGVnZXIgbGVzcyB0aGFuICcKKyAgICAgICAgICAgICAgICAgICd0aGUgbnVtYmVyXG4nCisgICAgICAgICAgICAgICAgICAnb2YgaXRlbXMgaW4gdGhlIHNlcXVlbmNlLCBhbmQgdGhlIHN1YnNjcmlwdGlvbiBzZWxlY3RzIHRoZSAnCisgICAgICAgICAgICAgICAgICAnaXRlbSB3aG9zZVxuJworICAgICAgICAgICAgICAgICAgJ2luZGV4IGlzIHRoYXQgdmFsdWUgKGNvdW50aW5nIGZyb20gemVybykuIFNpbmNlIHRoZSBzdXBwb3J0ICcKKyAgICAgICAgICAgICAgICAgICdmb3JcbicKKyAgICAgICAgICAgICAgICAgICJuZWdhdGl2ZSBpbmRpY2VzIGFuZCBzbGljaW5nIG9jY3VycyBpbiB0aGUgb2JqZWN0J3MgIgorICAgICAgICAgICAgICAgICAgJyJfX2dldGl0ZW1fXygpIlxuJworICAgICAgICAgICAgICAgICAgJ21ldGhvZCwgc3ViY2xhc3NlcyBvdmVycmlkaW5nIHRoaXMgbWV0aG9kIHdpbGwgbmVlZCB0byAnCisgICAgICAgICAgICAgICAgICAnZXhwbGljaXRseSBhZGRcbicKKyAgICAgICAgICAgICAgICAgICd0aGF0IHN1cHBvcnQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAiQSBzdHJpbmcncyBpdGVtcyBhcmUgY2hhcmFjdGVycy4gIEEgY2hhcmFjdGVyIGlzIG5vdCBhICIKKyAgICAgICAgICAgICAgICAgICdzZXBhcmF0ZSBkYXRhXG4nCisgICAgICAgICAgICAgICAgICAndHlwZSBidXQgYSBzdHJpbmcgb2YgZXhhY3RseSBvbmUgY2hhcmFjdGVyLlxuJywKKyAndHJ1dGgnOiAnXG4nCisgICAgICAgICAgJ1RydXRoIFZhbHVlIFRlc3RpbmdcbicKKyAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQW55IG9iamVjdCBjYW4gYmUgdGVzdGVkIGZvciB0cnV0aCB2YWx1ZSwgZm9yIHVzZSBpbiBhbiAiaWYiIG9yXG4nCisgICAgICAgICAgJyJ3aGlsZSIgY29uZGl0aW9uIG9yIGFzIG9wZXJhbmQgb2YgdGhlIEJvb2xlYW4gb3BlcmF0aW9ucyBiZWxvdy4gJworICAgICAgICAgICdUaGVcbicKKyAgICAgICAgICAnZm9sbG93aW5nIHZhbHVlcyBhcmUgY29uc2lkZXJlZCBmYWxzZTpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyogIk5vbmUiXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcqICJGYWxzZSJcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyogemVybyBvZiBhbnkgbnVtZXJpYyB0eXBlLCBmb3IgZXhhbXBsZSwgIjAiLCAiMC4wIiwgIjBqIi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyogYW55IGVtcHR5IHNlcXVlbmNlLCBmb3IgZXhhbXBsZSwgIlwnXCciLCAiKCkiLCAiW10iLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnKiBhbnkgZW1wdHkgbWFwcGluZywgZm9yIGV4YW1wbGUsICJ7fSIuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcqIGluc3RhbmNlcyBvZiB1c2VyLWRlZmluZWQgY2xhc3NlcywgaWYgdGhlIGNsYXNzIGRlZmluZXMgYVxuJworICAgICAgICAgICcgICJfX2Jvb2xfXygpIiBvciAiX19sZW5fXygpIiBtZXRob2QsIHdoZW4gdGhhdCBtZXRob2QgcmV0dXJucyB0aGVcbicKKyAgICAgICAgICAnICBpbnRlZ2VyIHplcm8gb3IgImJvb2wiIHZhbHVlICJGYWxzZSIuIFsxXVxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQWxsIG90aGVyIHZhbHVlcyBhcmUgY29uc2lkZXJlZCB0cnVlIC0tLSBzbyBvYmplY3RzIG9mIG1hbnkgdHlwZXMgJworICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAnYWx3YXlzIHRydWUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdPcGVyYXRpb25zIGFuZCBidWlsdC1pbiBmdW5jdGlvbnMgdGhhdCBoYXZlIGEgQm9vbGVhbiByZXN1bHQgJworICAgICAgICAgICdhbHdheXNcbicKKyAgICAgICAgICAncmV0dXJuICIwIiBvciAiRmFsc2UiIGZvciBmYWxzZSBhbmQgIjEiIG9yICJUcnVlIiBmb3IgdHJ1ZSwgdW5sZXNzXG4nCisgICAgICAgICAgJ290aGVyd2lzZSBzdGF0ZWQuIChJbXBvcnRhbnQgZXhjZXB0aW9uOiB0aGUgQm9vbGVhbiBvcGVyYXRpb25zICcKKyAgICAgICAgICAnIm9yIlxuJworICAgICAgICAgICdhbmQgImFuZCIgYWx3YXlzIHJldHVybiBvbmUgb2YgdGhlaXIgb3BlcmFuZHMuKVxuJywKKyAndHJ5JzogJ1xuJworICAgICAgICAnVGhlICJ0cnkiIHN0YXRlbWVudFxuJworICAgICAgICAnKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAnXG4nCisgICAgICAgICdUaGUgInRyeSIgc3RhdGVtZW50IHNwZWNpZmllcyBleGNlcHRpb24gaGFuZGxlcnMgYW5kL29yIGNsZWFudXAgY29kZVxuJworICAgICAgICAnZm9yIGEgZ3JvdXAgb2Ygc3RhdGVtZW50czpcbicKKyAgICAgICAgJ1xuJworICAgICAgICAnICAgdHJ5X3N0bXQgIDo6PSB0cnkxX3N0bXQgfCB0cnkyX3N0bXRcbicKKyAgICAgICAgJyAgIHRyeTFfc3RtdCA6Oj0gInRyeSIgIjoiIHN1aXRlXG4nCisgICAgICAgICcgICAgICAgICAgICAgICAgICgiZXhjZXB0IiBbZXhwcmVzc2lvbiBbImFzIiBpZGVudGlmaWVyXV0gIjoiICcKKyAgICAgICAgJ3N1aXRlKStcbicKKyAgICAgICAgJyAgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4nCisgICAgICAgICcgICAgICAgICAgICAgICAgIFsiZmluYWxseSIgIjoiIHN1aXRlXVxuJworICAgICAgICAnICAgdHJ5Ml9zdG10IDo6PSAidHJ5IiAiOiIgc3VpdGVcbicKKyAgICAgICAgJyAgICAgICAgICAgICAgICAgImZpbmFsbHkiICI6IiBzdWl0ZVxuJworICAgICAgICAnXG4nCisgICAgICAgICdUaGUgImV4Y2VwdCIgY2xhdXNlKHMpIHNwZWNpZnkgb25lIG9yIG1vcmUgZXhjZXB0aW9uIGhhbmRsZXJzLiBXaGVuICcKKyAgICAgICAgJ25vXG4nCisgICAgICAgICdleGNlcHRpb24gb2NjdXJzIGluIHRoZSAidHJ5IiBjbGF1c2UsIG5vIGV4Y2VwdGlvbiBoYW5kbGVyIGlzXG4nCisgICAgICAgICdleGVjdXRlZC4gV2hlbiBhbiBleGNlcHRpb24gb2NjdXJzIGluIHRoZSAidHJ5IiBzdWl0ZSwgYSBzZWFyY2ggZm9yICcKKyAgICAgICAgJ2FuXG4nCisgICAgICAgICdleGNlcHRpb24gaGFuZGxlciBpcyBzdGFydGVkLiAgVGhpcyBzZWFyY2ggaW5zcGVjdHMgdGhlIGV4Y2VwdCAnCisgICAgICAgICdjbGF1c2VzXG4nCisgICAgICAgICdpbiB0dXJuIHVudGlsIG9uZSBpcyBmb3VuZCB0aGF0IG1hdGNoZXMgdGhlIGV4Y2VwdGlvbi4gIEFuICcKKyAgICAgICAgJ2V4cHJlc3Npb24tXG4nCisgICAgICAgICdsZXNzIGV4Y2VwdCBjbGF1c2UsIGlmIHByZXNlbnQsIG11c3QgYmUgbGFzdDsgaXQgbWF0Y2hlcyBhbnlcbicKKyAgICAgICAgJ2V4Y2VwdGlvbi4gIEZvciBhbiBleGNlcHQgY2xhdXNlIHdpdGggYW4gZXhwcmVzc2lvbiwgdGhhdCBleHByZXNzaW9uXG4nCisgICAgICAgICdpcyBldmFsdWF0ZWQsIGFuZCB0aGUgY2xhdXNlIG1hdGNoZXMgdGhlIGV4Y2VwdGlvbiBpZiB0aGUgcmVzdWx0aW5nXG4nCisgICAgICAgICdvYmplY3QgaXMgImNvbXBhdGlibGUiIHdpdGggdGhlIGV4Y2VwdGlvbi4gIEFuIG9iamVjdCBpcyBjb21wYXRpYmxlXG4nCisgICAgICAgICd3aXRoIGFuIGV4Y2VwdGlvbiBpZiBpdCBpcyB0aGUgY2xhc3Mgb3IgYSBiYXNlIGNsYXNzIG9mIHRoZSAnCisgICAgICAgICdleGNlcHRpb25cbicKKyAgICAgICAgJ29iamVjdCBvciBhIHR1cGxlIGNvbnRhaW5pbmcgYW4gaXRlbSBjb21wYXRpYmxlIHdpdGggdGhlIGV4Y2VwdGlvbi5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnSWYgbm8gZXhjZXB0IGNsYXVzZSBtYXRjaGVzIHRoZSBleGNlcHRpb24sIHRoZSBzZWFyY2ggZm9yIGFuICcKKyAgICAgICAgJ2V4Y2VwdGlvblxuJworICAgICAgICAnaGFuZGxlciBjb250aW51ZXMgaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIG9uIHRoZSBpbnZvY2F0aW9uICcKKyAgICAgICAgJ3N0YWNrLlxuJworICAgICAgICAnWzFdXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ0lmIHRoZSBldmFsdWF0aW9uIG9mIGFuIGV4cHJlc3Npb24gaW4gdGhlIGhlYWRlciBvZiBhbiBleGNlcHQgY2xhdXNlXG4nCisgICAgICAgICdyYWlzZXMgYW4gZXhjZXB0aW9uLCB0aGUgb3JpZ2luYWwgc2VhcmNoIGZvciBhIGhhbmRsZXIgaXMgY2FuY2VsZWQgJworICAgICAgICAnYW5kXG4nCisgICAgICAgICdhIHNlYXJjaCBzdGFydHMgZm9yIHRoZSBuZXcgZXhjZXB0aW9uIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBvblxuJworICAgICAgICAndGhlIGNhbGwgc3RhY2sgKGl0IGlzIHRyZWF0ZWQgYXMgaWYgdGhlIGVudGlyZSAidHJ5IiBzdGF0ZW1lbnQgJworICAgICAgICAncmFpc2VkXG4nCisgICAgICAgICd0aGUgZXhjZXB0aW9uKS5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnV2hlbiBhIG1hdGNoaW5nIGV4Y2VwdCBjbGF1c2UgaXMgZm91bmQsIHRoZSBleGNlcHRpb24gaXMgYXNzaWduZWQgdG9cbicKKyAgICAgICAgJ3RoZSB0YXJnZXQgc3BlY2lmaWVkIGFmdGVyIHRoZSAiYXMiIGtleXdvcmQgaW4gdGhhdCBleGNlcHQgY2xhdXNlLCAnCisgICAgICAgICdpZlxuJworICAgICAgICAicHJlc2VudCwgYW5kIHRoZSBleGNlcHQgY2xhdXNlJ3Mgc3VpdGUgaXMgZXhlY3V0ZWQuICBBbGwgZXhjZXB0XG4iCisgICAgICAgICdjbGF1c2VzIG11c3QgaGF2ZSBhbiBleGVjdXRhYmxlIGJsb2NrLiAgV2hlbiB0aGUgZW5kIG9mIHRoaXMgYmxvY2sgJworICAgICAgICAnaXNcbicKKyAgICAgICAgJ3JlYWNoZWQsIGV4ZWN1dGlvbiBjb250aW51ZXMgbm9ybWFsbHkgYWZ0ZXIgdGhlIGVudGlyZSB0cnkgJworICAgICAgICAnc3RhdGVtZW50LlxuJworICAgICAgICAnKFRoaXMgbWVhbnMgdGhhdCBpZiB0d28gbmVzdGVkIGhhbmRsZXJzIGV4aXN0IGZvciB0aGUgc2FtZSAnCisgICAgICAgICdleGNlcHRpb24sXG4nCisgICAgICAgICdhbmQgdGhlIGV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlIHRyeSBjbGF1c2Ugb2YgdGhlIGlubmVyIGhhbmRsZXIsIHRoZVxuJworICAgICAgICAnb3V0ZXIgaGFuZGxlciB3aWxsIG5vdCBoYW5kbGUgdGhlIGV4Y2VwdGlvbi4pXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ1doZW4gYW4gZXhjZXB0aW9uIGhhcyBiZWVuIGFzc2lnbmVkIHVzaW5nICJhcyB0YXJnZXQiLCBpdCBpcyBjbGVhcmVkXG4nCisgICAgICAgICdhdCB0aGUgZW5kIG9mIHRoZSBleGNlcHQgY2xhdXNlLiAgVGhpcyBpcyBhcyBpZlxuJworICAgICAgICAnXG4nCisgICAgICAgICcgICBleGNlcHQgRSBhcyBOOlxuJworICAgICAgICAnICAgICAgIGZvb1xuJworICAgICAgICAnXG4nCisgICAgICAgICd3YXMgdHJhbnNsYXRlZCB0b1xuJworICAgICAgICAnXG4nCisgICAgICAgICcgICBleGNlcHQgRSBhcyBOOlxuJworICAgICAgICAnICAgICAgIHRyeTpcbicKKyAgICAgICAgJyAgICAgICAgICAgZm9vXG4nCisgICAgICAgICcgICAgICAgZmluYWxseTpcbicKKyAgICAgICAgJyAgICAgICAgICAgZGVsIE5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnVGhpcyBtZWFucyB0aGUgZXhjZXB0aW9uIG11c3QgYmUgYXNzaWduZWQgdG8gYSBkaWZmZXJlbnQgbmFtZSB0byBiZVxuJworICAgICAgICAnYWJsZSB0byByZWZlciB0byBpdCBhZnRlciB0aGUgZXhjZXB0IGNsYXVzZS4gIEV4Y2VwdGlvbnMgYXJlIGNsZWFyZWRcbicKKyAgICAgICAgJ2JlY2F1c2Ugd2l0aCB0aGUgdHJhY2ViYWNrIGF0dGFjaGVkIHRvIHRoZW0sIHRoZXkgZm9ybSBhIHJlZmVyZW5jZVxuJworICAgICAgICAnY3ljbGUgd2l0aCB0aGUgc3RhY2sgZnJhbWUsIGtlZXBpbmcgYWxsIGxvY2FscyBpbiB0aGF0IGZyYW1lIGFsaXZlXG4nCisgICAgICAgICd1bnRpbCB0aGUgbmV4dCBnYXJiYWdlIGNvbGxlY3Rpb24gb2NjdXJzLlxuJworICAgICAgICAnXG4nCisgICAgICAgICJCZWZvcmUgYW4gZXhjZXB0IGNsYXVzZSdzIHN1aXRlIGlzIGV4ZWN1dGVkLCBkZXRhaWxzIGFib3V0IHRoZVxuIgorICAgICAgICAnZXhjZXB0aW9uIGFyZSBzdG9yZWQgaW4gdGhlICJzeXMiIG1vZHVsZSBhbmQgY2FuIGJlIGFjY2Vzc2VkIHZpYVxuJworICAgICAgICAnInN5cy5leGNfaW5mbygpIi4gInN5cy5leGNfaW5mbygpIiByZXR1cm5zIGEgMy10dXBsZSBjb25zaXN0aW5nIG9mICcKKyAgICAgICAgJ3RoZVxuJworICAgICAgICAnZXhjZXB0aW9uIGNsYXNzLCB0aGUgZXhjZXB0aW9uIGluc3RhbmNlIGFuZCBhIHRyYWNlYmFjayBvYmplY3QgKHNlZVxuJworICAgICAgICAnc2VjdGlvbiBUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkpIGlkZW50aWZ5aW5nIHRoZSBwb2ludCBpbiB0aGVcbicKKyAgICAgICAgJ3Byb2dyYW0gd2hlcmUgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZC4gICJzeXMuZXhjX2luZm8oKSIgdmFsdWVzIGFyZVxuJworICAgICAgICAncmVzdG9yZWQgdG8gdGhlaXIgcHJldmlvdXMgdmFsdWVzIChiZWZvcmUgdGhlIGNhbGwpIHdoZW4gcmV0dXJuaW5nXG4nCisgICAgICAgICdmcm9tIGEgZnVuY3Rpb24gdGhhdCBoYW5kbGVkIGFuIGV4Y2VwdGlvbi5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnVGhlIG9wdGlvbmFsICJlbHNlIiBjbGF1c2UgaXMgZXhlY3V0ZWQgaWYgYW5kIHdoZW4gY29udHJvbCBmbG93cyBvZmZcbicKKyAgICAgICAgJ3RoZSBlbmQgb2YgdGhlICJ0cnkiIGNsYXVzZS4gWzJdIEV4Y2VwdGlvbnMgaW4gdGhlICJlbHNlIiBjbGF1c2UgYXJlXG4nCisgICAgICAgICdub3QgaGFuZGxlZCBieSB0aGUgcHJlY2VkaW5nICJleGNlcHQiIGNsYXVzZXMuXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ0lmICJmaW5hbGx5IiBpcyBwcmVzZW50LCBpdCBzcGVjaWZpZXMgYSBcJ2NsZWFudXBcJyBoYW5kbGVyLiAgVGhlICcKKyAgICAgICAgJyJ0cnkiXG4nCisgICAgICAgICdjbGF1c2UgaXMgZXhlY3V0ZWQsIGluY2x1ZGluZyBhbnkgImV4Y2VwdCIgYW5kICJlbHNlIiBjbGF1c2VzLiAgSWYgJworICAgICAgICAnYW5cbicKKyAgICAgICAgJ2V4Y2VwdGlvbiBvY2N1cnMgaW4gYW55IG9mIHRoZSBjbGF1c2VzIGFuZCBpcyBub3QgaGFuZGxlZCwgdGhlXG4nCisgICAgICAgICdleGNlcHRpb24gaXMgdGVtcG9yYXJpbHkgc2F2ZWQuIFRoZSAiZmluYWxseSIgY2xhdXNlIGlzIGV4ZWN1dGVkLiAgJworICAgICAgICAnSWZcbicKKyAgICAgICAgJ3RoZXJlIGlzIGEgc2F2ZWQgZXhjZXB0aW9uIGl0IGlzIHJlLXJhaXNlZCBhdCB0aGUgZW5kIG9mIHRoZSAnCisgICAgICAgICciZmluYWxseSJcbicKKyAgICAgICAgJ2NsYXVzZS4gIElmIHRoZSAiZmluYWxseSIgY2xhdXNlIHJhaXNlcyBhbm90aGVyIGV4Y2VwdGlvbiwgdGhlIHNhdmVkXG4nCisgICAgICAgICdleGNlcHRpb24gaXMgc2V0IGFzIHRoZSBjb250ZXh0IG9mIHRoZSBuZXcgZXhjZXB0aW9uLiBJZiB0aGUgJworICAgICAgICAnImZpbmFsbHkiXG4nCisgICAgICAgICdjbGF1c2UgZXhlY3V0ZXMgYSAicmV0dXJuIiBvciAiYnJlYWsiIHN0YXRlbWVudCwgdGhlIHNhdmVkIGV4Y2VwdGlvblxuJworICAgICAgICAnaXMgZGlzY2FyZGVkOlxuJworICAgICAgICAnXG4nCisgICAgICAgICcgICA+Pj4gZGVmIGYoKTpcbicKKyAgICAgICAgJyAgIC4uLiAgICAgdHJ5OlxuJworICAgICAgICAnICAgLi4uICAgICAgICAgMS8wXG4nCisgICAgICAgICcgICAuLi4gICAgIGZpbmFsbHk6XG4nCisgICAgICAgICcgICAuLi4gICAgICAgICByZXR1cm4gNDJcbicKKyAgICAgICAgJyAgIC4uLlxuJworICAgICAgICAnICAgPj4+IGYoKVxuJworICAgICAgICAnICAgNDJcbicKKyAgICAgICAgJ1xuJworICAgICAgICAnVGhlIGV4Y2VwdGlvbiBpbmZvcm1hdGlvbiBpcyBub3QgYXZhaWxhYmxlIHRvIHRoZSBwcm9ncmFtIGR1cmluZ1xuJworICAgICAgICAnZXhlY3V0aW9uIG9mIHRoZSAiZmluYWxseSIgY2xhdXNlLlxuJworICAgICAgICAnXG4nCisgICAgICAgICdXaGVuIGEgInJldHVybiIsICJicmVhayIgb3IgImNvbnRpbnVlIiBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQgaW4gdGhlXG4nCisgICAgICAgICcidHJ5IiBzdWl0ZSBvZiBhICJ0cnkiLi4uImZpbmFsbHkiIHN0YXRlbWVudCwgdGhlICJmaW5hbGx5IiBjbGF1c2UgJworICAgICAgICAnaXNcbicKKyAgICAgICAgJ2Fsc28gZXhlY3V0ZWQgXCdvbiB0aGUgd2F5IG91dC5cJyBBICJjb250aW51ZSIgc3RhdGVtZW50IGlzIGlsbGVnYWwgJworICAgICAgICAnaW5cbicKKyAgICAgICAgJ3RoZSAiZmluYWxseSIgY2xhdXNlLiAoVGhlIHJlYXNvbiBpcyBhIHByb2JsZW0gd2l0aCB0aGUgY3VycmVudFxuJworICAgICAgICAnaW1wbGVtZW50YXRpb24gLS0tIHRoaXMgcmVzdHJpY3Rpb24gbWF5IGJlIGxpZnRlZCBpbiB0aGUgZnV0dXJlKS5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnVGhlIHJldHVybiB2YWx1ZSBvZiBhIGZ1bmN0aW9uIGlzIGRldGVybWluZWQgYnkgdGhlIGxhc3QgInJldHVybiJcbicKKyAgICAgICAgJ3N0YXRlbWVudCBleGVjdXRlZC4gIFNpbmNlIHRoZSAiZmluYWxseSIgY2xhdXNlIGFsd2F5cyBleGVjdXRlcywgYVxuJworICAgICAgICAnInJldHVybiIgc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSAiZmluYWxseSIgY2xhdXNlIHdpbGwgYWx3YXlzIGJlICcKKyAgICAgICAgJ3RoZVxuJworICAgICAgICAnbGFzdCBvbmUgZXhlY3V0ZWQ6XG4nCisgICAgICAgICdcbicKKyAgICAgICAgJyAgID4+PiBkZWYgZm9vKCk6XG4nCisgICAgICAgICcgICAuLi4gICAgIHRyeTpcbicKKyAgICAgICAgIiAgIC4uLiAgICAgICAgIHJldHVybiAndHJ5J1xuIgorICAgICAgICAnICAgLi4uICAgICBmaW5hbGx5OlxuJworICAgICAgICAiICAgLi4uICAgICAgICAgcmV0dXJuICdmaW5hbGx5J1xuIgorICAgICAgICAnICAgLi4uXG4nCisgICAgICAgICcgICA+Pj4gZm9vKClcbicKKyAgICAgICAgIiAgICdmaW5hbGx5J1xuIgorICAgICAgICAnXG4nCisgICAgICAgICdBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIGV4Y2VwdGlvbnMgY2FuIGJlIGZvdW5kIGluIHNlY3Rpb25cbicKKyAgICAgICAgJ0V4Y2VwdGlvbnMsIGFuZCBpbmZvcm1hdGlvbiBvbiB1c2luZyB0aGUgInJhaXNlIiBzdGF0ZW1lbnQgdG8gJworICAgICAgICAnZ2VuZXJhdGVcbicKKyAgICAgICAgJ2V4Y2VwdGlvbnMgbWF5IGJlIGZvdW5kIGluIHNlY3Rpb24gVGhlIHJhaXNlIHN0YXRlbWVudC5cbicsCisgJ3R5cGVzJzogJ1xuJworICAgICAgICAgICdUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHlcbicKKyAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdCZWxvdyBpcyBhIGxpc3Qgb2YgdGhlIHR5cGVzIHRoYXQgYXJlIGJ1aWx0IGludG8gUHl0aG9uLiAgJworICAgICAgICAgICdFeHRlbnNpb25cbicKKyAgICAgICAgICAnbW9kdWxlcyAod3JpdHRlbiBpbiBDLCBKYXZhLCBvciBvdGhlciBsYW5ndWFnZXMsIGRlcGVuZGluZyBvbiB0aGVcbicKKyAgICAgICAgICAnaW1wbGVtZW50YXRpb24pIGNhbiBkZWZpbmUgYWRkaXRpb25hbCB0eXBlcy4gIEZ1dHVyZSB2ZXJzaW9ucyBvZlxuJworICAgICAgICAgICdQeXRob24gbWF5IGFkZCB0eXBlcyB0byB0aGUgdHlwZSBoaWVyYXJjaHkgKGUuZy4sIHJhdGlvbmFsICcKKyAgICAgICAgICAnbnVtYmVycyxcbicKKyAgICAgICAgICAnZWZmaWNpZW50bHkgc3RvcmVkIGFycmF5cyBvZiBpbnRlZ2VycywgZXRjLiksIGFsdGhvdWdoIHN1Y2ggJworICAgICAgICAgICdhZGRpdGlvbnNcbicKKyAgICAgICAgICAnd2lsbCBvZnRlbiBiZSBwcm92aWRlZCB2aWEgdGhlIHN0YW5kYXJkIGxpYnJhcnkgaW5zdGVhZC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1NvbWUgb2YgdGhlIHR5cGUgZGVzY3JpcHRpb25zIGJlbG93IGNvbnRhaW4gYSBwYXJhZ3JhcGggbGlzdGluZ1xuJworICAgICAgICAgICInc3BlY2lhbCBhdHRyaWJ1dGVzLicgIFRoZXNlIGFyZSBhdHRyaWJ1dGVzIHRoYXQgcHJvdmlkZSBhY2Nlc3MgdG8gIgorICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnaW1wbGVtZW50YXRpb24gYW5kIGFyZSBub3QgaW50ZW5kZWQgZm9yIGdlbmVyYWwgdXNlLiAgVGhlaXIgJworICAgICAgICAgICdkZWZpbml0aW9uXG4nCisgICAgICAgICAgJ21heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ05vbmVcbicKKyAgICAgICAgICAnICAgVGhpcyB0eXBlIGhhcyBhIHNpbmdsZSB2YWx1ZS4gIFRoZXJlIGlzIGEgc2luZ2xlIG9iamVjdCB3aXRoICcKKyAgICAgICAgICAndGhpc1xuJworICAgICAgICAgICcgICB2YWx1ZS4gVGhpcyBvYmplY3QgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgYnVpbHQtaW4gbmFtZSAiTm9uZSIuICcKKyAgICAgICAgICAnSXRcbicKKyAgICAgICAgICAnICAgaXMgdXNlZCB0byBzaWduaWZ5IHRoZSBhYnNlbmNlIG9mIGEgdmFsdWUgaW4gbWFueSBzaXR1YXRpb25zLCAnCisgICAgICAgICAgJ2UuZy4sXG4nCisgICAgICAgICAgIiAgIGl0IGlzIHJldHVybmVkIGZyb20gZnVuY3Rpb25zIHRoYXQgZG9uJ3QgZXhwbGljaXRseSByZXR1cm5cbiIKKyAgICAgICAgICAnICAgYW55dGhpbmcuIEl0cyB0cnV0aCB2YWx1ZSBpcyBmYWxzZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ05vdEltcGxlbWVudGVkXG4nCisgICAgICAgICAgJyAgIFRoaXMgdHlwZSBoYXMgYSBzaW5nbGUgdmFsdWUuICBUaGVyZSBpcyBhIHNpbmdsZSBvYmplY3Qgd2l0aCAnCisgICAgICAgICAgJ3RoaXNcbicKKyAgICAgICAgICAnICAgdmFsdWUuIFRoaXMgb2JqZWN0IGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlIGJ1aWx0LWluIG5hbWVcbicKKyAgICAgICAgICAnICAgIk5vdEltcGxlbWVudGVkIi4gTnVtZXJpYyBtZXRob2RzIGFuZCByaWNoIGNvbXBhcmlzb24gbWV0aG9kc1xuJworICAgICAgICAgICcgICBzaG91bGQgcmV0dXJuIHRoaXMgdmFsdWUgaWYgdGhleSBkbyBub3QgaW1wbGVtZW50IHRoZSBvcGVyYXRpb24gJworICAgICAgICAgICdmb3JcbicKKyAgICAgICAgICAnICAgdGhlIG9wZXJhbmRzIHByb3ZpZGVkLiAgKFRoZSBpbnRlcnByZXRlciB3aWxsIHRoZW4gdHJ5IHRoZVxuJworICAgICAgICAgICcgICByZWZsZWN0ZWQgb3BlcmF0aW9uLCBvciBzb21lIG90aGVyIGZhbGxiYWNrLCBkZXBlbmRpbmcgb24gdGhlXG4nCisgICAgICAgICAgJyAgIG9wZXJhdG9yLikgIEl0cyB0cnV0aCB2YWx1ZSBpcyB0cnVlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgU2VlIEltcGxlbWVudGluZyB0aGUgYXJpdGhtZXRpYyBvcGVyYXRpb25zIGZvciBtb3JlIGRldGFpbHMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdFbGxpcHNpc1xuJworICAgICAgICAgICcgICBUaGlzIHR5cGUgaGFzIGEgc2luZ2xlIHZhbHVlLiAgVGhlcmUgaXMgYSBzaW5nbGUgb2JqZWN0IHdpdGggJworICAgICAgICAgICd0aGlzXG4nCisgICAgICAgICAgJyAgIHZhbHVlLiBUaGlzIG9iamVjdCBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBsaXRlcmFsICIuLi4iIG9yIHRoZVxuJworICAgICAgICAgICcgICBidWlsdC1pbiBuYW1lICJFbGxpcHNpcyIuICBJdHMgdHJ1dGggdmFsdWUgaXMgdHJ1ZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyJudW1iZXJzLk51bWJlciJcbicKKyAgICAgICAgICAnICAgVGhlc2UgYXJlIGNyZWF0ZWQgYnkgbnVtZXJpYyBsaXRlcmFscyBhbmQgcmV0dXJuZWQgYXMgcmVzdWx0cyAnCisgICAgICAgICAgJ2J5XG4nCisgICAgICAgICAgJyAgIGFyaXRobWV0aWMgb3BlcmF0b3JzIGFuZCBhcml0aG1ldGljIGJ1aWx0LWluIGZ1bmN0aW9ucy4gICcKKyAgICAgICAgICAnTnVtZXJpY1xuJworICAgICAgICAgICcgICBvYmplY3RzIGFyZSBpbW11dGFibGU7IG9uY2UgY3JlYXRlZCB0aGVpciB2YWx1ZSBuZXZlciBjaGFuZ2VzLlxuJworICAgICAgICAgICcgICBQeXRob24gbnVtYmVycyBhcmUgb2YgY291cnNlIHN0cm9uZ2x5IHJlbGF0ZWQgdG8gbWF0aGVtYXRpY2FsXG4nCisgICAgICAgICAgJyAgIG51bWJlcnMsIGJ1dCBzdWJqZWN0IHRvIHRoZSBsaW1pdGF0aW9ucyBvZiBudW1lcmljYWwgJworICAgICAgICAgICdyZXByZXNlbnRhdGlvblxuJworICAgICAgICAgICcgICBpbiBjb21wdXRlcnMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBQeXRob24gZGlzdGluZ3Vpc2hlcyBiZXR3ZWVuIGludGVnZXJzLCBmbG9hdGluZyBwb2ludCBudW1iZXJzLCAnCisgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICcgICBjb21wbGV4IG51bWJlcnM6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAibnVtYmVycy5JbnRlZ3JhbCJcbicKKyAgICAgICAgICAnICAgICAgVGhlc2UgcmVwcmVzZW50IGVsZW1lbnRzIGZyb20gdGhlIG1hdGhlbWF0aWNhbCBzZXQgb2YgJworICAgICAgICAgICdpbnRlZ2Vyc1xuJworICAgICAgICAgICcgICAgICAocG9zaXRpdmUgYW5kIG5lZ2F0aXZlKS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFRoZXJlIGFyZSB0d28gdHlwZXMgb2YgaW50ZWdlcnM6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBJbnRlZ2VycyAoImludCIpXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICAgICBUaGVzZSByZXByZXNlbnQgbnVtYmVycyBpbiBhbiB1bmxpbWl0ZWQgcmFuZ2UsIHN1YmplY3QgdG9cbicKKyAgICAgICAgICAnICAgICAgICAgYXZhaWxhYmxlICh2aXJ0dWFsKSBtZW1vcnkgb25seS4gIEZvciB0aGUgcHVycG9zZSBvZiAnCisgICAgICAgICAgJ3NoaWZ0XG4nCisgICAgICAgICAgJyAgICAgICAgIGFuZCBtYXNrIG9wZXJhdGlvbnMsIGEgYmluYXJ5IHJlcHJlc2VudGF0aW9uIGlzIGFzc3VtZWQsICcKKyAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgIiAgICAgICAgIG5lZ2F0aXZlIG51bWJlcnMgYXJlIHJlcHJlc2VudGVkIGluIGEgdmFyaWFudCBvZiAyJ3NcbiIKKyAgICAgICAgICAnICAgICAgICAgY29tcGxlbWVudCB3aGljaCBnaXZlcyB0aGUgaWxsdXNpb24gb2YgYW4gaW5maW5pdGUgc3RyaW5nICcKKyAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAnICAgICAgICAgc2lnbiBiaXRzIGV4dGVuZGluZyB0byB0aGUgbGVmdC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIEJvb2xlYW5zICgiYm9vbCIpXG4nCisgICAgICAgICAgJyAgICAgICAgIFRoZXNlIHJlcHJlc2VudCB0aGUgdHJ1dGggdmFsdWVzIEZhbHNlIGFuZCBUcnVlLiAgVGhlIHR3b1xuJworICAgICAgICAgICcgICAgICAgICBvYmplY3RzIHJlcHJlc2VudGluZyB0aGUgdmFsdWVzICJGYWxzZSIgYW5kICJUcnVlIiBhcmUgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgICAgb25seSBCb29sZWFuIG9iamVjdHMuIFRoZSBCb29sZWFuIHR5cGUgaXMgYSBzdWJ0eXBlIG9mICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgICAgICAgIGludGVnZXIgdHlwZSwgYW5kIEJvb2xlYW4gdmFsdWVzIGJlaGF2ZSBsaWtlIHRoZSB2YWx1ZXMgMCAnCisgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICcgICAgICAgICAxLCByZXNwZWN0aXZlbHksIGluIGFsbW9zdCBhbGwgY29udGV4dHMsIHRoZSBleGNlcHRpb24gJworICAgICAgICAgICdiZWluZ1xuJworICAgICAgICAgICcgICAgICAgICB0aGF0IHdoZW4gY29udmVydGVkIHRvIGEgc3RyaW5nLCB0aGUgc3RyaW5ncyAiIkZhbHNlIiIgb3JcbicKKyAgICAgICAgICAnICAgICAgICAgIiJUcnVlIiIgYXJlIHJldHVybmVkLCByZXNwZWN0aXZlbHkuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBUaGUgcnVsZXMgZm9yIGludGVnZXIgcmVwcmVzZW50YXRpb24gYXJlIGludGVuZGVkIHRvIGdpdmUgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgbW9zdCBtZWFuaW5nZnVsIGludGVycHJldGF0aW9uIG9mIHNoaWZ0IGFuZCBtYXNrIG9wZXJhdGlvbnNcbicKKyAgICAgICAgICAnICAgICAgaW52b2x2aW5nIG5lZ2F0aXZlIGludGVnZXJzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgIm51bWJlcnMuUmVhbCIgKCJmbG9hdCIpXG4nCisgICAgICAgICAgJyAgICAgIFRoZXNlIHJlcHJlc2VudCBtYWNoaW5lLWxldmVsIGRvdWJsZSBwcmVjaXNpb24gZmxvYXRpbmcgJworICAgICAgICAgICdwb2ludFxuJworICAgICAgICAgICcgICAgICBudW1iZXJzLiBZb3UgYXJlIGF0IHRoZSBtZXJjeSBvZiB0aGUgdW5kZXJseWluZyBtYWNoaW5lXG4nCisgICAgICAgICAgJyAgICAgIGFyY2hpdGVjdHVyZSAoYW5kIEMgb3IgSmF2YSBpbXBsZW1lbnRhdGlvbikgZm9yIHRoZSBhY2NlcHRlZFxuJworICAgICAgICAgICcgICAgICByYW5nZSBhbmQgaGFuZGxpbmcgb2Ygb3ZlcmZsb3cuIFB5dGhvbiBkb2VzIG5vdCBzdXBwb3J0ICcKKyAgICAgICAgICAnc2luZ2xlLVxuJworICAgICAgICAgICcgICAgICBwcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgbnVtYmVyczsgdGhlIHNhdmluZ3MgaW4gcHJvY2Vzc29yICcKKyAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgJyAgICAgIG1lbW9yeSB1c2FnZSB0aGF0IGFyZSB1c3VhbGx5IHRoZSByZWFzb24gZm9yIHVzaW5nIHRoZXNlIGFyZVxuJworICAgICAgICAgICcgICAgICBkd2FyZmVkIGJ5IHRoZSBvdmVyaGVhZCBvZiB1c2luZyBvYmplY3RzIGluIFB5dGhvbiwgc28gdGhlcmUgJworICAgICAgICAgICdpc1xuJworICAgICAgICAgICcgICAgICBubyByZWFzb24gdG8gY29tcGxpY2F0ZSB0aGUgbGFuZ3VhZ2Ugd2l0aCB0d28ga2luZHMgb2YgJworICAgICAgICAgICdmbG9hdGluZ1xuJworICAgICAgICAgICcgICAgICBwb2ludCBudW1iZXJzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgIm51bWJlcnMuQ29tcGxleCIgKCJjb21wbGV4IilcbicKKyAgICAgICAgICAnICAgICAgVGhlc2UgcmVwcmVzZW50IGNvbXBsZXggbnVtYmVycyBhcyBhIHBhaXIgb2YgbWFjaGluZS1sZXZlbFxuJworICAgICAgICAgICcgICAgICBkb3VibGUgcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IG51bWJlcnMuICBUaGUgc2FtZSBjYXZlYXRzICcKKyAgICAgICAgICAnYXBwbHlcbicKKyAgICAgICAgICAnICAgICAgYXMgZm9yIGZsb2F0aW5nIHBvaW50IG51bWJlcnMuIFRoZSByZWFsIGFuZCBpbWFnaW5hcnkgcGFydHMgJworICAgICAgICAgICdvZiBhXG4nCisgICAgICAgICAgJyAgICAgIGNvbXBsZXggbnVtYmVyICJ6IiBjYW4gYmUgcmV0cmlldmVkIHRocm91Z2ggdGhlIHJlYWQtb25seVxuJworICAgICAgICAgICcgICAgICBhdHRyaWJ1dGVzICJ6LnJlYWwiIGFuZCAiei5pbWFnIi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1NlcXVlbmNlc1xuJworICAgICAgICAgICcgICBUaGVzZSByZXByZXNlbnQgZmluaXRlIG9yZGVyZWQgc2V0cyBpbmRleGVkIGJ5IG5vbi1uZWdhdGl2ZVxuJworICAgICAgICAgICcgICBudW1iZXJzLiBUaGUgYnVpbHQtaW4gZnVuY3Rpb24gImxlbigpIiByZXR1cm5zIHRoZSBudW1iZXIgb2YgJworICAgICAgICAgICdpdGVtc1xuJworICAgICAgICAgICcgICBvZiBhIHNlcXVlbmNlLiBXaGVuIHRoZSBsZW5ndGggb2YgYSBzZXF1ZW5jZSBpcyAqbiosIHRoZSBpbmRleCAnCisgICAgICAgICAgJ3NldFxuJworICAgICAgICAgICcgICBjb250YWlucyB0aGUgbnVtYmVycyAwLCAxLCAuLi4sICpuKi0xLiAgSXRlbSAqaSogb2Ygc2VxdWVuY2UgKmEqICcKKyAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAnICAgc2VsZWN0ZWQgYnkgImFbaV0iLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgU2VxdWVuY2VzIGFsc28gc3VwcG9ydCBzbGljaW5nOiAiYVtpOmpdIiBzZWxlY3RzIGFsbCBpdGVtcyB3aXRoXG4nCisgICAgICAgICAgJyAgIGluZGV4ICprKiBzdWNoIHRoYXQgKmkqICI8PSIgKmsqICI8IiAqaiouICBXaGVuIHVzZWQgYXMgYW5cbicKKyAgICAgICAgICAnICAgZXhwcmVzc2lvbiwgYSBzbGljZSBpcyBhIHNlcXVlbmNlIG9mIHRoZSBzYW1lIHR5cGUuICBUaGlzICcKKyAgICAgICAgICAnaW1wbGllc1xuJworICAgICAgICAgICcgICB0aGF0IHRoZSBpbmRleCBzZXQgaXMgcmVudW1iZXJlZCBzbyB0aGF0IGl0IHN0YXJ0cyBhdCAwLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgU29tZSBzZXF1ZW5jZXMgYWxzbyBzdXBwb3J0ICJleHRlbmRlZCBzbGljaW5nIiB3aXRoIGEgdGhpcmQgJworICAgICAgICAgICcic3RlcCJcbicKKyAgICAgICAgICAnICAgcGFyYW1ldGVyOiAiYVtpOmo6a10iIHNlbGVjdHMgYWxsIGl0ZW1zIG9mICphKiB3aXRoIGluZGV4ICp4KiAnCisgICAgICAgICAgJ3doZXJlXG4nCisgICAgICAgICAgJyAgICJ4ID0gaSArIG4qayIsICpuKiAiPj0iICIwIiBhbmQgKmkqICI8PSIgKngqICI8IiAqaiouXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBTZXF1ZW5jZXMgYXJlIGRpc3Rpbmd1aXNoZWQgYWNjb3JkaW5nIHRvIHRoZWlyIG11dGFiaWxpdHk6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBJbW11dGFibGUgc2VxdWVuY2VzXG4nCisgICAgICAgICAgJyAgICAgIEFuIG9iamVjdCBvZiBhbiBpbW11dGFibGUgc2VxdWVuY2UgdHlwZSBjYW5ub3QgY2hhbmdlIG9uY2UgaXQgJworICAgICAgICAgICdpc1xuJworICAgICAgICAgICcgICAgICBjcmVhdGVkLiAgKElmIHRoZSBvYmplY3QgY29udGFpbnMgcmVmZXJlbmNlcyB0byBvdGhlciAnCisgICAgICAgICAgJ29iamVjdHMsXG4nCisgICAgICAgICAgJyAgICAgIHRoZXNlIG90aGVyIG9iamVjdHMgbWF5IGJlIG11dGFibGUgYW5kIG1heSBiZSBjaGFuZ2VkOyAnCisgICAgICAgICAgJ2hvd2V2ZXIsXG4nCisgICAgICAgICAgJyAgICAgIHRoZSBjb2xsZWN0aW9uIG9mIG9iamVjdHMgZGlyZWN0bHkgcmVmZXJlbmNlZCBieSBhbiAnCisgICAgICAgICAgJ2ltbXV0YWJsZVxuJworICAgICAgICAgICcgICAgICBvYmplY3QgY2Fubm90IGNoYW5nZS4pXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBUaGUgZm9sbG93aW5nIHR5cGVzIGFyZSBpbW11dGFibGUgc2VxdWVuY2VzOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgU3RyaW5nc1xuJworICAgICAgICAgICcgICAgICAgICBBIHN0cmluZyBpcyBhIHNlcXVlbmNlIG9mIHZhbHVlcyB0aGF0IHJlcHJlc2VudCBVbmljb2RlICcKKyAgICAgICAgICAnY29kZVxuJworICAgICAgICAgICcgICAgICAgICBwb2ludHMuIEFsbCB0aGUgY29kZSBwb2ludHMgaW4gdGhlIHJhbmdlICJVKzAwMDAgLSAnCisgICAgICAgICAgJ1UrMTBGRkZGIlxuJworICAgICAgICAgICIgICAgICAgICBjYW4gYmUgcmVwcmVzZW50ZWQgaW4gYSBzdHJpbmcuICBQeXRob24gZG9lc24ndCBoYXZlIGEgIgorICAgICAgICAgICciY2hhciJcbicKKyAgICAgICAgICAnICAgICAgICAgdHlwZTsgaW5zdGVhZCwgZXZlcnkgY29kZSBwb2ludCBpbiB0aGUgc3RyaW5nIGlzICcKKyAgICAgICAgICAncmVwcmVzZW50ZWRcbicKKyAgICAgICAgICAnICAgICAgICAgYXMgYSBzdHJpbmcgb2JqZWN0IHdpdGggbGVuZ3RoICIxIi4gIFRoZSBidWlsdC1pbiAnCisgICAgICAgICAgJ2Z1bmN0aW9uXG4nCisgICAgICAgICAgJyAgICAgICAgICJvcmQoKSIgY29udmVydHMgYSBjb2RlIHBvaW50IGZyb20gaXRzIHN0cmluZyBmb3JtIHRvIGFuXG4nCisgICAgICAgICAgJyAgICAgICAgIGludGVnZXIgaW4gdGhlIHJhbmdlICIwIC0gMTBGRkZGIjsgImNocigpIiBjb252ZXJ0cyBhblxuJworICAgICAgICAgICcgICAgICAgICBpbnRlZ2VyIGluIHRoZSByYW5nZSAiMCAtIDEwRkZGRiIgdG8gdGhlIGNvcnJlc3BvbmRpbmcgJworICAgICAgICAgICdsZW5ndGhcbicKKyAgICAgICAgICAnICAgICAgICAgIjEiIHN0cmluZyBvYmplY3QuICJzdHIuZW5jb2RlKCkiIGNhbiBiZSB1c2VkIHRvIGNvbnZlcnQgJworICAgICAgICAgICdhXG4nCisgICAgICAgICAgJyAgICAgICAgICJzdHIiIHRvICJieXRlcyIgdXNpbmcgdGhlIGdpdmVuIHRleHQgZW5jb2RpbmcsIGFuZFxuJworICAgICAgICAgICcgICAgICAgICAiYnl0ZXMuZGVjb2RlKCkiIGNhbiBiZSB1c2VkIHRvIGFjaGlldmUgdGhlIG9wcG9zaXRlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgVHVwbGVzXG4nCisgICAgICAgICAgJyAgICAgICAgIFRoZSBpdGVtcyBvZiBhIHR1cGxlIGFyZSBhcmJpdHJhcnkgUHl0aG9uIG9iamVjdHMuIFR1cGxlcyAnCisgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgJyAgICAgICAgIHR3byBvciBtb3JlIGl0ZW1zIGFyZSBmb3JtZWQgYnkgY29tbWEtc2VwYXJhdGVkIGxpc3RzIG9mXG4nCisgICAgICAgICAgIiAgICAgICAgIGV4cHJlc3Npb25zLiAgQSB0dXBsZSBvZiBvbmUgaXRlbSAoYSAnc2luZ2xldG9uJykgY2FuIGJlXG4iCisgICAgICAgICAgJyAgICAgICAgIGZvcm1lZCBieSBhZmZpeGluZyBhIGNvbW1hIHRvIGFuIGV4cHJlc3Npb24gKGFuIGV4cHJlc3Npb24gJworICAgICAgICAgICdieVxuJworICAgICAgICAgICcgICAgICAgICBpdHNlbGYgZG9lcyBub3QgY3JlYXRlIGEgdHVwbGUsIHNpbmNlIHBhcmVudGhlc2VzIG11c3QgYmVcbicKKyAgICAgICAgICAnICAgICAgICAgdXNhYmxlIGZvciBncm91cGluZyBvZiBleHByZXNzaW9ucykuICBBbiBlbXB0eSB0dXBsZSBjYW4gJworICAgICAgICAgICdiZVxuJworICAgICAgICAgICcgICAgICAgICBmb3JtZWQgYnkgYW4gZW1wdHkgcGFpciBvZiBwYXJlbnRoZXNlcy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIEJ5dGVzXG4nCisgICAgICAgICAgJyAgICAgICAgIEEgYnl0ZXMgb2JqZWN0IGlzIGFuIGltbXV0YWJsZSBhcnJheS4gIFRoZSBpdGVtcyBhcmUgJworICAgICAgICAgICc4LWJpdFxuJworICAgICAgICAgICcgICAgICAgICBieXRlcywgcmVwcmVzZW50ZWQgYnkgaW50ZWdlcnMgaW4gdGhlIHJhbmdlIDAgPD0geCA8IDI1Ni5cbicKKyAgICAgICAgICAnICAgICAgICAgQnl0ZXMgbGl0ZXJhbHMgKGxpa2UgImJcJ2FiY1wnIikgYW5kIHRoZSBidWlsdC1pbiAnCisgICAgICAgICAgJ2Z1bmN0aW9uXG4nCisgICAgICAgICAgJyAgICAgICAgICJieXRlcygpIiBjYW4gYmUgdXNlZCB0byBjb25zdHJ1Y3QgYnl0ZXMgb2JqZWN0cy4gIEFsc28sXG4nCisgICAgICAgICAgJyAgICAgICAgIGJ5dGVzIG9iamVjdHMgY2FuIGJlIGRlY29kZWQgdG8gc3RyaW5ncyB2aWEgdGhlICcKKyAgICAgICAgICAnImRlY29kZSgpIlxuJworICAgICAgICAgICcgICAgICAgICBtZXRob2QuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBNdXRhYmxlIHNlcXVlbmNlc1xuJworICAgICAgICAgICcgICAgICBNdXRhYmxlIHNlcXVlbmNlcyBjYW4gYmUgY2hhbmdlZCBhZnRlciB0aGV5IGFyZSBjcmVhdGVkLiAgJworICAgICAgICAgICdUaGVcbicKKyAgICAgICAgICAnICAgICAgc3Vic2NyaXB0aW9uIGFuZCBzbGljaW5nIG5vdGF0aW9ucyBjYW4gYmUgdXNlZCBhcyB0aGUgdGFyZ2V0ICcKKyAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAnICAgICAgYXNzaWdubWVudCBhbmQgImRlbCIgKGRlbGV0ZSkgc3RhdGVtZW50cy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFRoZXJlIGFyZSBjdXJyZW50bHkgdHdvIGludHJpbnNpYyBtdXRhYmxlIHNlcXVlbmNlIHR5cGVzOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgTGlzdHNcbicKKyAgICAgICAgICAnICAgICAgICAgVGhlIGl0ZW1zIG9mIGEgbGlzdCBhcmUgYXJiaXRyYXJ5IFB5dGhvbiBvYmplY3RzLiAgTGlzdHMgJworICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAnICAgICAgICAgZm9ybWVkIGJ5IHBsYWNpbmcgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBleHByZXNzaW9ucyAnCisgICAgICAgICAgJ2luXG4nCisgICAgICAgICAgJyAgICAgICAgIHNxdWFyZSBicmFja2V0cy4gKE5vdGUgdGhhdCB0aGVyZSBhcmUgbm8gc3BlY2lhbCBjYXNlcyAnCisgICAgICAgICAgJ25lZWRlZFxuJworICAgICAgICAgICcgICAgICAgICB0byBmb3JtIGxpc3RzIG9mIGxlbmd0aCAwIG9yIDEuKVxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgQnl0ZSBBcnJheXNcbicKKyAgICAgICAgICAnICAgICAgICAgQSBieXRlYXJyYXkgb2JqZWN0IGlzIGEgbXV0YWJsZSBhcnJheS4gVGhleSBhcmUgY3JlYXRlZCAnCisgICAgICAgICAgJ2J5XG4nCisgICAgICAgICAgJyAgICAgICAgIHRoZSBidWlsdC1pbiAiYnl0ZWFycmF5KCkiIGNvbnN0cnVjdG9yLiAgQXNpZGUgZnJvbSBiZWluZ1xuJworICAgICAgICAgICcgICAgICAgICBtdXRhYmxlIChhbmQgaGVuY2UgdW5oYXNoYWJsZSksIGJ5dGUgYXJyYXlzIG90aGVyd2lzZSAnCisgICAgICAgICAgJ3Byb3ZpZGVcbicKKyAgICAgICAgICAnICAgICAgICAgdGhlIHNhbWUgaW50ZXJmYWNlIGFuZCBmdW5jdGlvbmFsaXR5IGFzIGltbXV0YWJsZSBieXRlc1xuJworICAgICAgICAgICcgICAgICAgICBvYmplY3RzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgVGhlIGV4dGVuc2lvbiBtb2R1bGUgImFycmF5IiBwcm92aWRlcyBhbiBhZGRpdGlvbmFsIGV4YW1wbGUgJworICAgICAgICAgICdvZiBhXG4nCisgICAgICAgICAgJyAgICAgIG11dGFibGUgc2VxdWVuY2UgdHlwZSwgYXMgZG9lcyB0aGUgImNvbGxlY3Rpb25zIiBtb2R1bGUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdTZXQgdHlwZXNcbicKKyAgICAgICAgICAnICAgVGhlc2UgcmVwcmVzZW50IHVub3JkZXJlZCwgZmluaXRlIHNldHMgb2YgdW5pcXVlLCBpbW11dGFibGVcbicKKyAgICAgICAgICAnICAgb2JqZWN0cy4gQXMgc3VjaCwgdGhleSBjYW5ub3QgYmUgaW5kZXhlZCBieSBhbnkgc3Vic2NyaXB0LiAnCisgICAgICAgICAgJ0hvd2V2ZXIsXG4nCisgICAgICAgICAgJyAgIHRoZXkgY2FuIGJlIGl0ZXJhdGVkIG92ZXIsIGFuZCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gImxlbigpIlxuJworICAgICAgICAgICcgICByZXR1cm5zIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gYSBzZXQuIENvbW1vbiB1c2VzIGZvciBzZXRzIGFyZSAnCisgICAgICAgICAgJ2Zhc3RcbicKKyAgICAgICAgICAnICAgbWVtYmVyc2hpcCB0ZXN0aW5nLCByZW1vdmluZyBkdXBsaWNhdGVzIGZyb20gYSBzZXF1ZW5jZSwgYW5kXG4nCisgICAgICAgICAgJyAgIGNvbXB1dGluZyBtYXRoZW1hdGljYWwgb3BlcmF0aW9ucyBzdWNoIGFzIGludGVyc2VjdGlvbiwgdW5pb24sXG4nCisgICAgICAgICAgJyAgIGRpZmZlcmVuY2UsIGFuZCBzeW1tZXRyaWMgZGlmZmVyZW5jZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIEZvciBzZXQgZWxlbWVudHMsIHRoZSBzYW1lIGltbXV0YWJpbGl0eSBydWxlcyBhcHBseSBhcyBmb3JcbicKKyAgICAgICAgICAnICAgZGljdGlvbmFyeSBrZXlzLiBOb3RlIHRoYXQgbnVtZXJpYyB0eXBlcyBvYmV5IHRoZSBub3JtYWwgcnVsZXMgJworICAgICAgICAgICdmb3JcbicKKyAgICAgICAgICAnICAgbnVtZXJpYyBjb21wYXJpc29uOiBpZiB0d28gbnVtYmVycyBjb21wYXJlIGVxdWFsIChlLmcuLCAiMSIgYW5kXG4nCisgICAgICAgICAgJyAgICIxLjAiKSwgb25seSBvbmUgb2YgdGhlbSBjYW4gYmUgY29udGFpbmVkIGluIGEgc2V0LlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgVGhlcmUgYXJlIGN1cnJlbnRseSB0d28gaW50cmluc2ljIHNldCB0eXBlczpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFNldHNcbicKKyAgICAgICAgICAnICAgICAgVGhlc2UgcmVwcmVzZW50IGEgbXV0YWJsZSBzZXQuIFRoZXkgYXJlIGNyZWF0ZWQgYnkgdGhlICcKKyAgICAgICAgICAnYnVpbHQtaW5cbicKKyAgICAgICAgICAnICAgICAgInNldCgpIiBjb25zdHJ1Y3RvciBhbmQgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgYnkgJworICAgICAgICAgICdzZXZlcmFsXG4nCisgICAgICAgICAgJyAgICAgIG1ldGhvZHMsIHN1Y2ggYXMgImFkZCgpIi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIEZyb3plbiBzZXRzXG4nCisgICAgICAgICAgJyAgICAgIFRoZXNlIHJlcHJlc2VudCBhbiBpbW11dGFibGUgc2V0LiAgVGhleSBhcmUgY3JlYXRlZCBieSB0aGVcbicKKyAgICAgICAgICAnICAgICAgYnVpbHQtaW4gImZyb3plbnNldCgpIiBjb25zdHJ1Y3Rvci4gIEFzIGEgZnJvemVuc2V0IGlzICcKKyAgICAgICAgICAnaW1tdXRhYmxlXG4nCisgICAgICAgICAgJyAgICAgIGFuZCAqaGFzaGFibGUqLCBpdCBjYW4gYmUgdXNlZCBhZ2FpbiBhcyBhbiBlbGVtZW50IG9mICcKKyAgICAgICAgICAnYW5vdGhlclxuJworICAgICAgICAgICcgICAgICBzZXQsIG9yIGFzIGEgZGljdGlvbmFyeSBrZXkuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdNYXBwaW5nc1xuJworICAgICAgICAgICcgICBUaGVzZSByZXByZXNlbnQgZmluaXRlIHNldHMgb2Ygb2JqZWN0cyBpbmRleGVkIGJ5IGFyYml0cmFyeSAnCisgICAgICAgICAgJ2luZGV4XG4nCisgICAgICAgICAgJyAgIHNldHMuIFRoZSBzdWJzY3JpcHQgbm90YXRpb24gImFba10iIHNlbGVjdHMgdGhlIGl0ZW0gaW5kZXhlZCBieSAnCisgICAgICAgICAgJyJrIlxuJworICAgICAgICAgICcgICBmcm9tIHRoZSBtYXBwaW5nICJhIjsgdGhpcyBjYW4gYmUgdXNlZCBpbiBleHByZXNzaW9ucyBhbmQgYXMgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgdGFyZ2V0IG9mIGFzc2lnbm1lbnRzIG9yICJkZWwiIHN0YXRlbWVudHMuIFRoZSBidWlsdC1pbiAnCisgICAgICAgICAgJ2Z1bmN0aW9uXG4nCisgICAgICAgICAgJyAgICJsZW4oKSIgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIGEgbWFwcGluZy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFRoZXJlIGlzIGN1cnJlbnRseSBhIHNpbmdsZSBpbnRyaW5zaWMgbWFwcGluZyB0eXBlOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgRGljdGlvbmFyaWVzXG4nCisgICAgICAgICAgJyAgICAgIFRoZXNlIHJlcHJlc2VudCBmaW5pdGUgc2V0cyBvZiBvYmplY3RzIGluZGV4ZWQgYnkgbmVhcmx5XG4nCisgICAgICAgICAgJyAgICAgIGFyYml0cmFyeSB2YWx1ZXMuICBUaGUgb25seSB0eXBlcyBvZiB2YWx1ZXMgbm90IGFjY2VwdGFibGUgJworICAgICAgICAgICdhc1xuJworICAgICAgICAgICcgICAgICBrZXlzIGFyZSB2YWx1ZXMgY29udGFpbmluZyBsaXN0cyBvciBkaWN0aW9uYXJpZXMgb3Igb3RoZXJcbicKKyAgICAgICAgICAnICAgICAgbXV0YWJsZSB0eXBlcyB0aGF0IGFyZSBjb21wYXJlZCBieSB2YWx1ZSByYXRoZXIgdGhhbiBieSAnCisgICAgICAgICAgJ29iamVjdFxuJworICAgICAgICAgICcgICAgICBpZGVudGl0eSwgdGhlIHJlYXNvbiBiZWluZyB0aGF0IHRoZSBlZmZpY2llbnQgaW1wbGVtZW50YXRpb24gJworICAgICAgICAgICdvZlxuJworICAgICAgICAgICIgICAgICBkaWN0aW9uYXJpZXMgcmVxdWlyZXMgYSBrZXkncyBoYXNoIHZhbHVlIHRvIHJlbWFpbiBjb25zdGFudC5cbiIKKyAgICAgICAgICAnICAgICAgTnVtZXJpYyB0eXBlcyB1c2VkIGZvciBrZXlzIG9iZXkgdGhlIG5vcm1hbCBydWxlcyBmb3IgJworICAgICAgICAgICdudW1lcmljXG4nCisgICAgICAgICAgJyAgICAgIGNvbXBhcmlzb246IGlmIHR3byBudW1iZXJzIGNvbXBhcmUgZXF1YWwgKGUuZy4sICIxIiBhbmQgJworICAgICAgICAgICciMS4wIilcbicKKyAgICAgICAgICAnICAgICAgdGhlbiB0aGV5IGNhbiBiZSB1c2VkIGludGVyY2hhbmdlYWJseSB0byBpbmRleCB0aGUgc2FtZVxuJworICAgICAgICAgICcgICAgICBkaWN0aW9uYXJ5IGVudHJ5LlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgRGljdGlvbmFyaWVzIGFyZSBtdXRhYmxlOyB0aGV5IGNhbiBiZSBjcmVhdGVkIGJ5IHRoZSAiey4uLn0iXG4nCisgICAgICAgICAgJyAgICAgIG5vdGF0aW9uIChzZWUgc2VjdGlvbiBEaWN0aW9uYXJ5IGRpc3BsYXlzKS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFRoZSBleHRlbnNpb24gbW9kdWxlcyAiZGJtLm5kYm0iIGFuZCAiZGJtLmdudSIgcHJvdmlkZVxuJworICAgICAgICAgICcgICAgICBhZGRpdGlvbmFsIGV4YW1wbGVzIG9mIG1hcHBpbmcgdHlwZXMsIGFzIGRvZXMgdGhlICcKKyAgICAgICAgICAnImNvbGxlY3Rpb25zIlxuJworICAgICAgICAgICcgICAgICBtb2R1bGUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdDYWxsYWJsZSB0eXBlc1xuJworICAgICAgICAgICcgICBUaGVzZSBhcmUgdGhlIHR5cGVzIHRvIHdoaWNoIHRoZSBmdW5jdGlvbiBjYWxsIG9wZXJhdGlvbiAoc2VlXG4nCisgICAgICAgICAgJyAgIHNlY3Rpb24gQ2FsbHMpIGNhbiBiZSBhcHBsaWVkOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgVXNlci1kZWZpbmVkIGZ1bmN0aW9uc1xuJworICAgICAgICAgICcgICAgICBBIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBvYmplY3QgaXMgY3JlYXRlZCBieSBhIGZ1bmN0aW9uXG4nCisgICAgICAgICAgJyAgICAgIGRlZmluaXRpb24gKHNlZSBzZWN0aW9uIEZ1bmN0aW9uIGRlZmluaXRpb25zKS4gIEl0IHNob3VsZCBiZVxuJworICAgICAgICAgICcgICAgICBjYWxsZWQgd2l0aCBhbiBhcmd1bWVudCBsaXN0IGNvbnRhaW5pbmcgdGhlIHNhbWUgbnVtYmVyIG9mICcKKyAgICAgICAgICAnaXRlbXNcbicKKyAgICAgICAgICAiICAgICAgYXMgdGhlIGZ1bmN0aW9uJ3MgZm9ybWFsIHBhcmFtZXRlciBsaXN0LlxuIgorICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgU3BlY2lhbCBhdHRyaWJ1dGVzOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgJworICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICcgICAgICB8IEF0dHJpYnV0ZSAgICAgICAgICAgICAgICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgICcKKyAgICAgICAgICAnKz09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PStcbicKKyAgICAgICAgICAnICAgICAgfCAiX19kb2NfXyIgICAgICAgICAgICAgICAgIHwgVGhlIGZ1bmN0aW9uXCdzICcKKyAgICAgICAgICAnZG9jdW1lbnRhdGlvbiAgICB8IFdyaXRhYmxlICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nLCBvciAiTm9uZSIgaWYgICAgICAgICAgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB1bmF2YWlsYWJsZTsgbm90IGluaGVyaXRlZCBieSAgICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN1YmNsYXNzZXMgICAgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgJworICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICcgICAgICB8ICJfX25hbWVfXyIgICAgICAgICAgICAgICAgfCBUaGUgZnVuY3Rpb25cJ3MgJworICAgICAgICAgICduYW1lICAgICAgICAgICAgIHwgV3JpdGFibGUgICAgfFxuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgJyAgICAgIHwgIl9fcXVhbG5hbWVfXyIgICAgICAgICAgICB8IFRoZSBmdW5jdGlvblwncyAqcXVhbGlmaWVkICcKKyAgICAgICAgICAnbmFtZSogfCBXcml0YWJsZSAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldyBpbiB2ZXJzaW9uIDMuMy4gICAgICAgICAgICAgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgJworICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICcgICAgICB8ICJfX21vZHVsZV9fIiAgICAgICAgICAgICAgfCBUaGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRoZSAgICAgICcKKyAgICAgICAgICAnfCBXcml0YWJsZSAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZ1bmN0aW9uIHdhcyBkZWZpbmVkIGluLCBvciAgICAgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIk5vbmUiIGlmIHVuYXZhaWxhYmxlLiAgICAgICAgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgJyAgICAgIHwgIl9fZGVmYXVsdHNfXyIgICAgICAgICAgICB8IEEgdHVwbGUgY29udGFpbmluZyBkZWZhdWx0ICAgICAgJworICAgICAgICAgICd8IFdyaXRhYmxlICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXJndW1lbnQgdmFsdWVzIGZvciB0aG9zZSAgICAgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcmd1bWVudHMgdGhhdCBoYXZlIGRlZmF1bHRzLCAgICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG9yICJOb25lIiBpZiBubyBhcmd1bWVudHMgaGF2ZSAgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYSBkZWZhdWx0IHZhbHVlICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgJyAgICAgIHwgIl9fY29kZV9fIiAgICAgICAgICAgICAgICB8IFRoZSBjb2RlIG9iamVjdCByZXByZXNlbnRpbmcgICAgJworICAgICAgICAgICd8IFdyaXRhYmxlICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGhlIGNvbXBpbGVkIGZ1bmN0aW9uIGJvZHkuICAgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgJyAgICAgIHwgIl9fZ2xvYmFsc19fIiAgICAgICAgICAgICB8IEEgcmVmZXJlbmNlIHRvIHRoZSBkaWN0aW9uYXJ5ICAgJworICAgICAgICAgICd8IFJlYWQtb25seSAgIHxcbicKKyAgICAgICAgICAiICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGhhdCBob2xkcyB0aGUgZnVuY3Rpb24ncyAgICAgICAiCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBnbG9iYWwgdmFyaWFibGVzIC0tLSB0aGUgZ2xvYmFsICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG5hbWVzcGFjZSBvZiB0aGUgbW9kdWxlIGluICAgICAgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgd2hpY2ggdGhlIGZ1bmN0aW9uIHdhcyBkZWZpbmVkLiAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgJyAgICAgIHwgIl9fZGljdF9fIiAgICAgICAgICAgICAgICB8IFRoZSBuYW1lc3BhY2Ugc3VwcG9ydGluZyAgICAgICAgJworICAgICAgICAgICd8IFdyaXRhYmxlICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXJiaXRyYXJ5IGZ1bmN0aW9uIGF0dHJpYnV0ZXMuICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgJyAgICAgIHwgIl9fY2xvc3VyZV9fIiAgICAgICAgICAgICB8ICJOb25lIiBvciBhIHR1cGxlIG9mIGNlbGxzIHRoYXQgJworICAgICAgICAgICd8IFJlYWQtb25seSAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY29udGFpbiBiaW5kaW5ncyBmb3IgdGhlICAgICAgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICIgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmdW5jdGlvbidzIGZyZWUgdmFyaWFibGVzLiAgICAgICIKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgICcKKyAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAnICAgICAgfCAiX19hbm5vdGF0aW9uc19fIiAgICAgICAgIHwgQSBkaWN0IGNvbnRhaW5pbmcgYW5ub3RhdGlvbnMgICAnCisgICAgICAgICAgJ3wgV3JpdGFibGUgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZiBwYXJhbWV0ZXJzLiAgVGhlIGtleXMgb2YgdGhlICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGRpY3QgYXJlIHRoZSBwYXJhbWV0ZXIgbmFtZXMsICAgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYW5kICJcJ3JldHVyblwnIiBmb3IgdGhlICcKKyAgICAgICAgICAncmV0dXJuICAgfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFubm90YXRpb24sIGlmIHByb3ZpZGVkLiAgICAgICAgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgJworICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICcgICAgICB8ICJfX2t3ZGVmYXVsdHNfXyIgICAgICAgICAgfCBBIGRpY3QgY29udGFpbmluZyBkZWZhdWx0cyBmb3IgICcKKyAgICAgICAgICAnfCBXcml0YWJsZSAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGtleXdvcmQtb25seSBwYXJhbWV0ZXJzLiAgICAgICAgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgJworICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgTW9zdCBvZiB0aGUgYXR0cmlidXRlcyBsYWJlbGxlZCAiV3JpdGFibGUiIGNoZWNrIHRoZSB0eXBlIG9mICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgICAgIGFzc2lnbmVkIHZhbHVlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgRnVuY3Rpb24gb2JqZWN0cyBhbHNvIHN1cHBvcnQgZ2V0dGluZyBhbmQgc2V0dGluZyBhcmJpdHJhcnlcbicKKyAgICAgICAgICAnICAgICAgYXR0cmlidXRlcywgd2hpY2ggY2FuIGJlIHVzZWQsIGZvciBleGFtcGxlLCB0byBhdHRhY2ggJworICAgICAgICAgICdtZXRhZGF0YVxuJworICAgICAgICAgICcgICAgICB0byBmdW5jdGlvbnMuICBSZWd1bGFyIGF0dHJpYnV0ZSBkb3Qtbm90YXRpb24gaXMgdXNlZCB0byBnZXQgJworICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAnICAgICAgc2V0IHN1Y2ggYXR0cmlidXRlcy4gKk5vdGUgdGhhdCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiAnCisgICAgICAgICAgJ29ubHlcbicKKyAgICAgICAgICAnICAgICAgc3VwcG9ydHMgZnVuY3Rpb24gYXR0cmlidXRlcyBvbiB1c2VyLWRlZmluZWQgZnVuY3Rpb25zLiAnCisgICAgICAgICAgJ0Z1bmN0aW9uXG4nCisgICAgICAgICAgJyAgICAgIGF0dHJpYnV0ZXMgb24gYnVpbHQtaW4gZnVuY3Rpb25zIG1heSBiZSBzdXBwb3J0ZWQgaW4gdGhlXG4nCisgICAgICAgICAgJyAgICAgIGZ1dHVyZS4qXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICIgICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IGEgZnVuY3Rpb24ncyBkZWZpbml0aW9uIGNhbiBiZVxuIgorICAgICAgICAgICcgICAgICByZXRyaWV2ZWQgZnJvbSBpdHMgY29kZSBvYmplY3Q7IHNlZSB0aGUgZGVzY3JpcHRpb24gb2YgJworICAgICAgICAgICdpbnRlcm5hbFxuJworICAgICAgICAgICcgICAgICB0eXBlcyBiZWxvdy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIEluc3RhbmNlIG1ldGhvZHNcbicKKyAgICAgICAgICAnICAgICAgQW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBjb21iaW5lcyBhIGNsYXNzLCBhIGNsYXNzIGluc3RhbmNlICcKKyAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgJyAgICAgIGFueSBjYWxsYWJsZSBvYmplY3QgKG5vcm1hbGx5IGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uKS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6ICJfX3NlbGZfXyIgaXMgdGhlIGNsYXNzICcKKyAgICAgICAgICAnaW5zdGFuY2VcbicKKyAgICAgICAgICAnICAgICAgb2JqZWN0LCAiX19mdW5jX18iIGlzIHRoZSBmdW5jdGlvbiBvYmplY3Q7ICJfX2RvY19fIiBpcyB0aGVcbicKKyAgICAgICAgICAnICAgICAgbWV0aG9kXCdzIGRvY3VtZW50YXRpb24gKHNhbWUgYXMgIl9fZnVuY19fLl9fZG9jX18iKTsgJworICAgICAgICAgICciX19uYW1lX18iXG4nCisgICAgICAgICAgJyAgICAgIGlzIHRoZSBtZXRob2QgbmFtZSAoc2FtZSBhcyAiX19mdW5jX18uX19uYW1lX18iKTsgJworICAgICAgICAgICciX19tb2R1bGVfXyJcbicKKyAgICAgICAgICAnICAgICAgaXMgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgbWV0aG9kIHdhcyBkZWZpbmVkIGluLCBvciAnCisgICAgICAgICAgJyJOb25lIlxuJworICAgICAgICAgICcgICAgICBpZiB1bmF2YWlsYWJsZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIE1ldGhvZHMgYWxzbyBzdXBwb3J0IGFjY2Vzc2luZyAoYnV0IG5vdCBzZXR0aW5nKSB0aGUgJworICAgICAgICAgICdhcmJpdHJhcnlcbicKKyAgICAgICAgICAnICAgICAgZnVuY3Rpb24gYXR0cmlidXRlcyBvbiB0aGUgdW5kZXJseWluZyBmdW5jdGlvbiBvYmplY3QuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBVc2VyLWRlZmluZWQgbWV0aG9kIG9iamVjdHMgbWF5IGJlIGNyZWF0ZWQgd2hlbiBnZXR0aW5nIGFuXG4nCisgICAgICAgICAgJyAgICAgIGF0dHJpYnV0ZSBvZiBhIGNsYXNzIChwZXJoYXBzIHZpYSBhbiBpbnN0YW5jZSBvZiB0aGF0IGNsYXNzKSwgJworICAgICAgICAgICdpZlxuJworICAgICAgICAgICcgICAgICB0aGF0IGF0dHJpYnV0ZSBpcyBhIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBvYmplY3Qgb3IgYSBjbGFzc1xuJworICAgICAgICAgICcgICAgICBtZXRob2Qgb2JqZWN0LlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgV2hlbiBhbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0IGlzIGNyZWF0ZWQgYnkgcmV0cmlldmluZyBhICcKKyAgICAgICAgICAndXNlci1cbicKKyAgICAgICAgICAnICAgICAgZGVmaW5lZCBmdW5jdGlvbiBvYmplY3QgZnJvbSBhIGNsYXNzIHZpYSBvbmUgb2YgaXRzICcKKyAgICAgICAgICAnaW5zdGFuY2VzLFxuJworICAgICAgICAgICcgICAgICBpdHMgIl9fc2VsZl9fIiBhdHRyaWJ1dGUgaXMgdGhlIGluc3RhbmNlLCBhbmQgdGhlIG1ldGhvZCAnCisgICAgICAgICAgJ29iamVjdFxuJworICAgICAgICAgICcgICAgICBpcyBzYWlkIHRvIGJlIGJvdW5kLiAgVGhlIG5ldyBtZXRob2RcJ3MgIl9fZnVuY19fIiBhdHRyaWJ1dGUgJworICAgICAgICAgICdpc1xuJworICAgICAgICAgICcgICAgICB0aGUgb3JpZ2luYWwgZnVuY3Rpb24gb2JqZWN0LlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgV2hlbiBhIHVzZXItZGVmaW5lZCBtZXRob2Qgb2JqZWN0IGlzIGNyZWF0ZWQgYnkgcmV0cmlldmluZ1xuJworICAgICAgICAgICcgICAgICBhbm90aGVyIG1ldGhvZCBvYmplY3QgZnJvbSBhIGNsYXNzIG9yIGluc3RhbmNlLCB0aGUgYmVoYXZpb3VyICcKKyAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAnICAgICAgdGhlIHNhbWUgYXMgZm9yIGEgZnVuY3Rpb24gb2JqZWN0LCBleGNlcHQgdGhhdCB0aGUgJworICAgICAgICAgICciX19mdW5jX18iXG4nCisgICAgICAgICAgJyAgICAgIGF0dHJpYnV0ZSBvZiB0aGUgbmV3IGluc3RhbmNlIGlzIG5vdCB0aGUgb3JpZ2luYWwgbWV0aG9kICcKKyAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgJyAgICAgIGJ1dCBpdHMgIl9fZnVuY19fIiBhdHRyaWJ1dGUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgY3JlYXRlZCBieSByZXRyaWV2aW5nIGEgJworICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICcgICAgICBtZXRob2Qgb2JqZWN0IGZyb20gYSBjbGFzcyBvciBpbnN0YW5jZSwgaXRzICJfX3NlbGZfXyIgJworICAgICAgICAgICdhdHRyaWJ1dGVcbicKKyAgICAgICAgICAnICAgICAgaXMgdGhlIGNsYXNzIGl0c2VsZiwgYW5kIGl0cyAiX19mdW5jX18iIGF0dHJpYnV0ZSBpcyB0aGVcbicKKyAgICAgICAgICAnICAgICAgZnVuY3Rpb24gb2JqZWN0IHVuZGVybHlpbmcgdGhlIGNsYXNzIG1ldGhvZC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFdoZW4gYW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBpcyBjYWxsZWQsIHRoZSB1bmRlcmx5aW5nXG4nCisgICAgICAgICAgJyAgICAgIGZ1bmN0aW9uICgiX19mdW5jX18iKSBpcyBjYWxsZWQsIGluc2VydGluZyB0aGUgY2xhc3MgJworICAgICAgICAgICdpbnN0YW5jZVxuJworICAgICAgICAgICcgICAgICAoIl9fc2VsZl9fIikgaW4gZnJvbnQgb2YgdGhlIGFyZ3VtZW50IGxpc3QuICBGb3IgaW5zdGFuY2UsICcKKyAgICAgICAgICAnd2hlblxuJworICAgICAgICAgICcgICAgICAiQyIgaXMgYSBjbGFzcyB3aGljaCBjb250YWlucyBhIGRlZmluaXRpb24gZm9yIGEgZnVuY3Rpb24gJworICAgICAgICAgICciZigpIixcbicKKyAgICAgICAgICAnICAgICAgYW5kICJ4IiBpcyBhbiBpbnN0YW5jZSBvZiAiQyIsIGNhbGxpbmcgInguZigxKSIgaXMgZXF1aXZhbGVudCAnCisgICAgICAgICAgJ3RvXG4nCisgICAgICAgICAgJyAgICAgIGNhbGxpbmcgIkMuZih4LCAxKSIuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgZGVyaXZlZCBmcm9tIGEgY2xhc3MgJworICAgICAgICAgICdtZXRob2RcbicKKyAgICAgICAgICAnICAgICAgb2JqZWN0LCB0aGUgImNsYXNzIGluc3RhbmNlIiBzdG9yZWQgaW4gIl9fc2VsZl9fIiB3aWxsICcKKyAgICAgICAgICAnYWN0dWFsbHlcbicKKyAgICAgICAgICAnICAgICAgYmUgdGhlIGNsYXNzIGl0c2VsZiwgc28gdGhhdCBjYWxsaW5nIGVpdGhlciAieC5mKDEpIiBvciAnCisgICAgICAgICAgJyJDLmYoMSkiXG4nCisgICAgICAgICAgJyAgICAgIGlzIGVxdWl2YWxlbnQgdG8gY2FsbGluZyAiZihDLDEpIiB3aGVyZSAiZiIgaXMgdGhlICcKKyAgICAgICAgICAndW5kZXJseWluZ1xuJworICAgICAgICAgICcgICAgICBmdW5jdGlvbi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIE5vdGUgdGhhdCB0aGUgdHJhbnNmb3JtYXRpb24gZnJvbSBmdW5jdGlvbiBvYmplY3QgdG8gJworICAgICAgICAgICdpbnN0YW5jZVxuJworICAgICAgICAgICcgICAgICBtZXRob2Qgb2JqZWN0IGhhcHBlbnMgZWFjaCB0aW1lIHRoZSBhdHRyaWJ1dGUgaXMgcmV0cmlldmVkICcKKyAgICAgICAgICAnZnJvbVxuJworICAgICAgICAgICcgICAgICB0aGUgaW5zdGFuY2UuICBJbiBzb21lIGNhc2VzLCBhIGZydWl0ZnVsIG9wdGltaXphdGlvbiBpcyB0b1xuJworICAgICAgICAgICcgICAgICBhc3NpZ24gdGhlIGF0dHJpYnV0ZSB0byBhIGxvY2FsIHZhcmlhYmxlIGFuZCBjYWxsIHRoYXQgbG9jYWxcbicKKyAgICAgICAgICAnICAgICAgdmFyaWFibGUuIEFsc28gbm90aWNlIHRoYXQgdGhpcyB0cmFuc2Zvcm1hdGlvbiBvbmx5IGhhcHBlbnMgJworICAgICAgICAgICdmb3JcbicKKyAgICAgICAgICAnICAgICAgdXNlci1kZWZpbmVkIGZ1bmN0aW9uczsgb3RoZXIgY2FsbGFibGUgb2JqZWN0cyAoYW5kIGFsbCBub24tXG4nCisgICAgICAgICAgJyAgICAgIGNhbGxhYmxlIG9iamVjdHMpIGFyZSByZXRyaWV2ZWQgd2l0aG91dCB0cmFuc2Zvcm1hdGlvbi4gIEl0ICcKKyAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAnICAgICAgYWxzbyBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0IHVzZXItZGVmaW5lZCBmdW5jdGlvbnMgd2hpY2ggYXJlXG4nCisgICAgICAgICAgJyAgICAgIGF0dHJpYnV0ZXMgb2YgYSBjbGFzcyBpbnN0YW5jZSBhcmUgbm90IGNvbnZlcnRlZCB0byBib3VuZFxuJworICAgICAgICAgICcgICAgICBtZXRob2RzOyB0aGlzICpvbmx5KiBoYXBwZW5zIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGFuICcKKyAgICAgICAgICAnYXR0cmlidXRlXG4nCisgICAgICAgICAgJyAgICAgIG9mIHRoZSBjbGFzcy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIEdlbmVyYXRvciBmdW5jdGlvbnNcbicKKyAgICAgICAgICAnICAgICAgQSBmdW5jdGlvbiBvciBtZXRob2Qgd2hpY2ggdXNlcyB0aGUgInlpZWxkIiBzdGF0ZW1lbnQgKHNlZVxuJworICAgICAgICAgICcgICAgICBzZWN0aW9uIFRoZSB5aWVsZCBzdGF0ZW1lbnQpIGlzIGNhbGxlZCBhICpnZW5lcmF0b3IgJworICAgICAgICAgICdmdW5jdGlvbiouXG4nCisgICAgICAgICAgJyAgICAgIFN1Y2ggYSBmdW5jdGlvbiwgd2hlbiBjYWxsZWQsIGFsd2F5cyByZXR1cm5zIGFuIGl0ZXJhdG9yICcKKyAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgJyAgICAgIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGV4ZWN1dGUgdGhlIGJvZHkgb2YgdGhlIGZ1bmN0aW9uOiAgJworICAgICAgICAgICdjYWxsaW5nXG4nCisgICAgICAgICAgJyAgICAgIHRoZSBpdGVyYXRvclwncyAiaXRlcmF0b3IuX19uZXh0X18oKSIgbWV0aG9kIHdpbGwgY2F1c2UgdGhlXG4nCisgICAgICAgICAgJyAgICAgIGZ1bmN0aW9uIHRvIGV4ZWN1dGUgdW50aWwgaXQgcHJvdmlkZXMgYSB2YWx1ZSB1c2luZyB0aGUgJworICAgICAgICAgICcieWllbGQiXG4nCisgICAgICAgICAgJyAgICAgIHN0YXRlbWVudC4gIFdoZW4gdGhlIGZ1bmN0aW9uIGV4ZWN1dGVzIGEgInJldHVybiIgc3RhdGVtZW50ICcKKyAgICAgICAgICAnb3JcbicKKyAgICAgICAgICAnICAgICAgZmFsbHMgb2ZmIHRoZSBlbmQsIGEgIlN0b3BJdGVyYXRpb24iIGV4Y2VwdGlvbiBpcyByYWlzZWQgYW5kICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgICAgIGl0ZXJhdG9yIHdpbGwgaGF2ZSByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIHNldCBvZiB2YWx1ZXMgdG8gJworICAgICAgICAgICdiZVxuJworICAgICAgICAgICcgICAgICByZXR1cm5lZC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIENvcm91dGluZSBmdW5jdGlvbnNcbicKKyAgICAgICAgICAnICAgICAgQSBmdW5jdGlvbiBvciBtZXRob2Qgd2hpY2ggaXMgZGVmaW5lZCB1c2luZyAiYXN5bmMgZGVmIiBpc1xuJworICAgICAgICAgICcgICAgICBjYWxsZWQgYSAqY29yb3V0aW5lIGZ1bmN0aW9uKi4gIFN1Y2ggYSBmdW5jdGlvbiwgd2hlbiAnCisgICAgICAgICAgJ2NhbGxlZCxcbicKKyAgICAgICAgICAnICAgICAgcmV0dXJucyBhICpjb3JvdXRpbmUqIG9iamVjdC4gIEl0IG1heSBjb250YWluICJhd2FpdCJcbicKKyAgICAgICAgICAnICAgICAgZXhwcmVzc2lvbnMsIGFzIHdlbGwgYXMgImFzeW5jIHdpdGgiIGFuZCAiYXN5bmMgZm9yIiAnCisgICAgICAgICAgJ3N0YXRlbWVudHMuXG4nCisgICAgICAgICAgJyAgICAgIFNlZSBhbHNvIHRoZSBDb3JvdXRpbmUgT2JqZWN0cyBzZWN0aW9uLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgQnVpbHQtaW4gZnVuY3Rpb25zXG4nCisgICAgICAgICAgJyAgICAgIEEgYnVpbHQtaW4gZnVuY3Rpb24gb2JqZWN0IGlzIGEgd3JhcHBlciBhcm91bmQgYSBDIGZ1bmN0aW9uLlxuJworICAgICAgICAgICcgICAgICBFeGFtcGxlcyBvZiBidWlsdC1pbiBmdW5jdGlvbnMgYXJlICJsZW4oKSIgYW5kICJtYXRoLnNpbigpIlxuJworICAgICAgICAgICcgICAgICAoIm1hdGgiIGlzIGEgc3RhbmRhcmQgYnVpbHQtaW4gbW9kdWxlKS4gVGhlIG51bWJlciBhbmQgdHlwZSAnCisgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgJyAgICAgIHRoZSBhcmd1bWVudHMgYXJlIGRldGVybWluZWQgYnkgdGhlIEMgZnVuY3Rpb24uIFNwZWNpYWwgJworICAgICAgICAgICdyZWFkLVxuJworICAgICAgICAgICcgICAgICBvbmx5IGF0dHJpYnV0ZXM6ICJfX2RvY19fIiBpcyB0aGUgZnVuY3Rpb25cJ3MgZG9jdW1lbnRhdGlvblxuJworICAgICAgICAgICcgICAgICBzdHJpbmcsIG9yICJOb25lIiBpZiB1bmF2YWlsYWJsZTsgIl9fbmFtZV9fIiBpcyB0aGUgJworICAgICAgICAgICJmdW5jdGlvbidzXG4iCisgICAgICAgICAgJyAgICAgIG5hbWU7ICJfX3NlbGZfXyIgaXMgc2V0IHRvICJOb25lIiAoYnV0IHNlZSB0aGUgbmV4dCBpdGVtKTtcbicKKyAgICAgICAgICAnICAgICAgIl9fbW9kdWxlX18iIGlzIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdGhlIGZ1bmN0aW9uIHdhcyAnCisgICAgICAgICAgJ2RlZmluZWRcbicKKyAgICAgICAgICAnICAgICAgaW4gb3IgIk5vbmUiIGlmIHVuYXZhaWxhYmxlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgQnVpbHQtaW4gbWV0aG9kc1xuJworICAgICAgICAgICcgICAgICBUaGlzIGlzIHJlYWxseSBhIGRpZmZlcmVudCBkaXNndWlzZSBvZiBhIGJ1aWx0LWluIGZ1bmN0aW9uLCAnCisgICAgICAgICAgJ3RoaXNcbicKKyAgICAgICAgICAnICAgICAgdGltZSBjb250YWluaW5nIGFuIG9iamVjdCBwYXNzZWQgdG8gdGhlIEMgZnVuY3Rpb24gYXMgYW5cbicKKyAgICAgICAgICAnICAgICAgaW1wbGljaXQgZXh0cmEgYXJndW1lbnQuICBBbiBleGFtcGxlIG9mIGEgYnVpbHQtaW4gbWV0aG9kIGlzXG4nCisgICAgICAgICAgJyAgICAgICJhbGlzdC5hcHBlbmQoKSIsIGFzc3VtaW5nICphbGlzdCogaXMgYSBsaXN0IG9iamVjdC4gSW4gdGhpc1xuJworICAgICAgICAgICcgICAgICBjYXNlLCB0aGUgc3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlICJfX3NlbGZfXyIgaXMgc2V0IHRvICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgICAgIG9iamVjdCBkZW5vdGVkIGJ5ICphbGlzdCouXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBDbGFzc2VzXG4nCisgICAgICAgICAgJyAgICAgIENsYXNzZXMgYXJlIGNhbGxhYmxlLiAgVGhlc2Ugb2JqZWN0cyBub3JtYWxseSBhY3QgYXMgJworICAgICAgICAgICdmYWN0b3JpZXNcbicKKyAgICAgICAgICAnICAgICAgZm9yIG5ldyBpbnN0YW5jZXMgb2YgdGhlbXNlbHZlcywgYnV0IHZhcmlhdGlvbnMgYXJlIHBvc3NpYmxlICcKKyAgICAgICAgICAnZm9yXG4nCisgICAgICAgICAgJyAgICAgIGNsYXNzIHR5cGVzIHRoYXQgb3ZlcnJpZGUgIl9fbmV3X18oKSIuICBUaGUgYXJndW1lbnRzIG9mIHRoZVxuJworICAgICAgICAgICcgICAgICBjYWxsIGFyZSBwYXNzZWQgdG8gIl9fbmV3X18oKSIgYW5kLCBpbiB0aGUgdHlwaWNhbCBjYXNlLCB0b1xuJworICAgICAgICAgICcgICAgICAiX19pbml0X18oKSIgdG8gaW5pdGlhbGl6ZSB0aGUgbmV3IGluc3RhbmNlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgQ2xhc3MgSW5zdGFuY2VzXG4nCisgICAgICAgICAgJyAgICAgIEluc3RhbmNlcyBvZiBhcmJpdHJhcnkgY2xhc3NlcyBjYW4gYmUgbWFkZSBjYWxsYWJsZSBieSAnCisgICAgICAgICAgJ2RlZmluaW5nXG4nCisgICAgICAgICAgJyAgICAgIGEgIl9fY2FsbF9fKCkiIG1ldGhvZCBpbiB0aGVpciBjbGFzcy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ01vZHVsZXNcbicKKyAgICAgICAgICAnICAgTW9kdWxlcyBhcmUgYSBiYXNpYyBvcmdhbml6YXRpb25hbCB1bml0IG9mIFB5dGhvbiBjb2RlLCBhbmQgYXJlXG4nCisgICAgICAgICAgJyAgIGNyZWF0ZWQgYnkgdGhlIGltcG9ydCBzeXN0ZW0gYXMgaW52b2tlZCBlaXRoZXIgYnkgdGhlICJpbXBvcnQiXG4nCisgICAgICAgICAgJyAgIHN0YXRlbWVudCAoc2VlICJpbXBvcnQiKSwgb3IgYnkgY2FsbGluZyBmdW5jdGlvbnMgc3VjaCBhc1xuJworICAgICAgICAgICcgICAiaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoKSIgYW5kIGJ1aWx0LWluICJfX2ltcG9ydF9fKCkiLiAgQSAnCisgICAgICAgICAgJ21vZHVsZVxuJworICAgICAgICAgICcgICBvYmplY3QgaGFzIGEgbmFtZXNwYWNlIGltcGxlbWVudGVkIGJ5IGEgZGljdGlvbmFyeSBvYmplY3QgKHRoaXMgJworICAgICAgICAgICdpc1xuJworICAgICAgICAgICcgICB0aGUgZGljdGlvbmFyeSByZWZlcmVuY2VkIGJ5IHRoZSAiX19nbG9iYWxzX18iIGF0dHJpYnV0ZSBvZlxuJworICAgICAgICAgICcgICBmdW5jdGlvbnMgZGVmaW5lZCBpbiB0aGUgbW9kdWxlKS4gIEF0dHJpYnV0ZSByZWZlcmVuY2VzIGFyZVxuJworICAgICAgICAgICcgICB0cmFuc2xhdGVkIHRvIGxvb2t1cHMgaW4gdGhpcyBkaWN0aW9uYXJ5LCBlLmcuLCAibS54IiBpcyAnCisgICAgICAgICAgJ2VxdWl2YWxlbnRcbicKKyAgICAgICAgICAnICAgdG8gIm0uX19kaWN0X19bIngiXSIuIEEgbW9kdWxlIG9iamVjdCBkb2VzIG5vdCBjb250YWluIHRoZSBjb2RlXG4nCisgICAgICAgICAgIiAgIG9iamVjdCB1c2VkIHRvIGluaXRpYWxpemUgdGhlIG1vZHVsZSAoc2luY2UgaXQgaXNuJ3QgbmVlZGVkICIKKyAgICAgICAgICAnb25jZVxuJworICAgICAgICAgICcgICB0aGUgaW5pdGlhbGl6YXRpb24gaXMgZG9uZSkuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICIgICBBdHRyaWJ1dGUgYXNzaWdubWVudCB1cGRhdGVzIHRoZSBtb2R1bGUncyBuYW1lc3BhY2UgZGljdGlvbmFyeSxcbiIKKyAgICAgICAgICAnICAgZS5nLiwgIm0ueCA9IDEiIGlzIGVxdWl2YWxlbnQgdG8gIm0uX19kaWN0X19bIngiXSA9IDEiLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgUHJlZGVmaW5lZCAod3JpdGFibGUpIGF0dHJpYnV0ZXM6ICJfX25hbWVfXyIgaXMgdGhlIG1vZHVsZVwncyAnCisgICAgICAgICAgJ25hbWU7XG4nCisgICAgICAgICAgJyAgICJfX2RvY19fIiBpcyB0aGUgbW9kdWxlXCdzIGRvY3VtZW50YXRpb24gc3RyaW5nLCBvciAiTm9uZSIgaWZcbicKKyAgICAgICAgICAnICAgdW5hdmFpbGFibGU7ICJfX2Fubm90YXRpb25zX18iIChvcHRpb25hbCkgaXMgYSBkaWN0aW9uYXJ5XG4nCisgICAgICAgICAgJyAgIGNvbnRhaW5pbmcgKnZhcmlhYmxlIGFubm90YXRpb25zKiBjb2xsZWN0ZWQgZHVyaW5nIG1vZHVsZSBib2R5XG4nCisgICAgICAgICAgJyAgIGV4ZWN1dGlvbjsgIl9fZmlsZV9fIiBpcyB0aGUgcGF0aG5hbWUgb2YgdGhlIGZpbGUgZnJvbSB3aGljaCAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICBtb2R1bGUgd2FzIGxvYWRlZCwgaWYgaXQgd2FzIGxvYWRlZCBmcm9tIGEgZmlsZS4gVGhlICJfX2ZpbGVfXyJcbicKKyAgICAgICAgICAnICAgYXR0cmlidXRlIG1heSBiZSBtaXNzaW5nIGZvciBjZXJ0YWluIHR5cGVzIG9mIG1vZHVsZXMsIHN1Y2ggYXMgJworICAgICAgICAgICdDXG4nCisgICAgICAgICAgJyAgIG1vZHVsZXMgdGhhdCBhcmUgc3RhdGljYWxseSBsaW5rZWQgaW50byB0aGUgaW50ZXJwcmV0ZXI7IGZvclxuJworICAgICAgICAgICcgICBleHRlbnNpb24gbW9kdWxlcyBsb2FkZWQgZHluYW1pY2FsbHkgZnJvbSBhIHNoYXJlZCBsaWJyYXJ5LCBpdCAnCisgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgJyAgIHRoZSBwYXRobmFtZSBvZiB0aGUgc2hhcmVkIGxpYnJhcnkgZmlsZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZTogIl9fZGljdF9fIiBpcyB0aGUgbW9kdWxlXCdzICcKKyAgICAgICAgICAnbmFtZXNwYWNlXG4nCisgICAgICAgICAgJyAgIGFzIGEgZGljdGlvbmFyeSBvYmplY3QuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIEJlY2F1c2Ugb2YgdGhlIHdheSBDUHl0aG9uXG4nCisgICAgICAgICAgJyAgIGNsZWFycyBtb2R1bGUgZGljdGlvbmFyaWVzLCB0aGUgbW9kdWxlIGRpY3Rpb25hcnkgd2lsbCBiZSAnCisgICAgICAgICAgJ2NsZWFyZWRcbicKKyAgICAgICAgICAnICAgd2hlbiB0aGUgbW9kdWxlIGZhbGxzIG91dCBvZiBzY29wZSBldmVuIGlmIHRoZSBkaWN0aW9uYXJ5IHN0aWxsICcKKyAgICAgICAgICAnaGFzXG4nCisgICAgICAgICAgJyAgIGxpdmUgcmVmZXJlbmNlcy4gIFRvIGF2b2lkIHRoaXMsIGNvcHkgdGhlIGRpY3Rpb25hcnkgb3Iga2VlcCAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICBtb2R1bGUgYXJvdW5kIHdoaWxlIHVzaW5nIGl0cyBkaWN0aW9uYXJ5IGRpcmVjdGx5LlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQ3VzdG9tIGNsYXNzZXNcbicKKyAgICAgICAgICAnICAgQ3VzdG9tIGNsYXNzIHR5cGVzIGFyZSB0eXBpY2FsbHkgY3JlYXRlZCBieSBjbGFzcyBkZWZpbml0aW9ucyAnCisgICAgICAgICAgJyhzZWVcbicKKyAgICAgICAgICAnICAgc2VjdGlvbiBDbGFzcyBkZWZpbml0aW9ucykuICBBIGNsYXNzIGhhcyBhIG5hbWVzcGFjZSBpbXBsZW1lbnRlZCAnCisgICAgICAgICAgJ2J5XG4nCisgICAgICAgICAgJyAgIGEgZGljdGlvbmFyeSBvYmplY3QuIENsYXNzIGF0dHJpYnV0ZSByZWZlcmVuY2VzIGFyZSB0cmFuc2xhdGVkICcKKyAgICAgICAgICAndG9cbicKKyAgICAgICAgICAnICAgbG9va3VwcyBpbiB0aGlzIGRpY3Rpb25hcnksIGUuZy4sICJDLngiIGlzIHRyYW5zbGF0ZWQgdG9cbicKKyAgICAgICAgICAnICAgIkMuX19kaWN0X19bIngiXSIgKGFsdGhvdWdoIHRoZXJlIGFyZSBhIG51bWJlciBvZiBob29rcyB3aGljaCAnCisgICAgICAgICAgJ2FsbG93XG4nCisgICAgICAgICAgJyAgIGZvciBvdGhlciBtZWFucyBvZiBsb2NhdGluZyBhdHRyaWJ1dGVzKS4gV2hlbiB0aGUgYXR0cmlidXRlIG5hbWUgJworICAgICAgICAgICdpc1xuJworICAgICAgICAgICcgICBub3QgZm91bmQgdGhlcmUsIHRoZSBhdHRyaWJ1dGUgc2VhcmNoIGNvbnRpbnVlcyBpbiB0aGUgYmFzZVxuJworICAgICAgICAgICcgICBjbGFzc2VzLiBUaGlzIHNlYXJjaCBvZiB0aGUgYmFzZSBjbGFzc2VzIHVzZXMgdGhlIEMzIG1ldGhvZFxuJworICAgICAgICAgICcgICByZXNvbHV0aW9uIG9yZGVyIHdoaWNoIGJlaGF2ZXMgY29ycmVjdGx5IGV2ZW4gaW4gdGhlIHByZXNlbmNlICcKKyAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAiICAgJ2RpYW1vbmQnIGluaGVyaXRhbmNlIHN0cnVjdHVyZXMgd2hlcmUgdGhlcmUgYXJlIG11bHRpcGxlXG4iCisgICAgICAgICAgJyAgIGluaGVyaXRhbmNlIHBhdGhzIGxlYWRpbmcgYmFjayB0byBhIGNvbW1vbiBhbmNlc3Rvci4gQWRkaXRpb25hbFxuJworICAgICAgICAgICcgICBkZXRhaWxzIG9uIHRoZSBDMyBNUk8gdXNlZCBieSBQeXRob24gY2FuIGJlIGZvdW5kIGluIHRoZVxuJworICAgICAgICAgICcgICBkb2N1bWVudGF0aW9uIGFjY29tcGFueWluZyB0aGUgMi4zIHJlbGVhc2UgYXRcbicKKyAgICAgICAgICAnICAgaHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kb3dubG9hZC9yZWxlYXNlcy8yLjMvbXJvLy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFdoZW4gYSBjbGFzcyBhdHRyaWJ1dGUgcmVmZXJlbmNlIChmb3IgY2xhc3MgIkMiLCBzYXkpIHdvdWxkICcKKyAgICAgICAgICAneWllbGQgYVxuJworICAgICAgICAgICcgICBjbGFzcyBtZXRob2Qgb2JqZWN0LCBpdCBpcyB0cmFuc2Zvcm1lZCBpbnRvIGFuIGluc3RhbmNlIG1ldGhvZFxuJworICAgICAgICAgICcgICBvYmplY3Qgd2hvc2UgIl9fc2VsZl9fIiBhdHRyaWJ1dGVzIGlzICJDIi4gIFdoZW4gaXQgd291bGQgeWllbGQgJworICAgICAgICAgICdhXG4nCisgICAgICAgICAgJyAgIHN0YXRpYyBtZXRob2Qgb2JqZWN0LCBpdCBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBvYmplY3Qgd3JhcHBlZCAnCisgICAgICAgICAgJ2J5XG4nCisgICAgICAgICAgJyAgIHRoZSBzdGF0aWMgbWV0aG9kIG9iamVjdC4gU2VlIHNlY3Rpb24gSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzICcKKyAgICAgICAgICAnZm9yXG4nCisgICAgICAgICAgJyAgIGFub3RoZXIgd2F5IGluIHdoaWNoIGF0dHJpYnV0ZXMgcmV0cmlldmVkIGZyb20gYSBjbGFzcyBtYXkgJworICAgICAgICAgICdkaWZmZXJcbicKKyAgICAgICAgICAnICAgZnJvbSB0aG9zZSBhY3R1YWxseSBjb250YWluZWQgaW4gaXRzICJfX2RpY3RfXyIuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICIgICBDbGFzcyBhdHRyaWJ1dGUgYXNzaWdubWVudHMgdXBkYXRlIHRoZSBjbGFzcydzIGRpY3Rpb25hcnksICIKKyAgICAgICAgICAnbmV2ZXJcbicKKyAgICAgICAgICAnICAgdGhlIGRpY3Rpb25hcnkgb2YgYSBiYXNlIGNsYXNzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgQSBjbGFzcyBvYmplY3QgY2FuIGJlIGNhbGxlZCAoc2VlIGFib3ZlKSB0byB5aWVsZCBhIGNsYXNzICcKKyAgICAgICAgICAnaW5zdGFuY2VcbicKKyAgICAgICAgICAnICAgKHNlZSBiZWxvdykuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBTcGVjaWFsIGF0dHJpYnV0ZXM6ICJfX25hbWVfXyIgaXMgdGhlIGNsYXNzIG5hbWU7ICJfX21vZHVsZV9fIiAnCisgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgJyAgIHRoZSBtb2R1bGUgbmFtZSBpbiB3aGljaCB0aGUgY2xhc3Mgd2FzIGRlZmluZWQ7ICJfX2RpY3RfXyIgaXMgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBjbGFzc1wncyBuYW1lc3BhY2U7ICJfX2Jhc2VzX18iIGlzIGEgJworICAgICAgICAgICd0dXBsZVxuJworICAgICAgICAgICcgICAocG9zc2libHkgZW1wdHkgb3IgYSBzaW5nbGV0b24pIGNvbnRhaW5pbmcgdGhlIGJhc2UgY2xhc3NlcywgaW4gJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgb3JkZXIgb2YgdGhlaXIgb2NjdXJyZW5jZSBpbiB0aGUgYmFzZSBjbGFzcyBsaXN0OyAiX19kb2NfXyIgaXMgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgY2xhc3NcJ3MgZG9jdW1lbnRhdGlvbiBzdHJpbmcsIG9yICJOb25lIiBpZiB1bmRlZmluZWQ7XG4nCisgICAgICAgICAgJyAgICJfX2Fubm90YXRpb25zX18iIChvcHRpb25hbCkgaXMgYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgJworICAgICAgICAgICcqdmFyaWFibGVcbicKKyAgICAgICAgICAnICAgYW5ub3RhdGlvbnMqIGNvbGxlY3RlZCBkdXJpbmcgY2xhc3MgYm9keSBleGVjdXRpb24uXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdDbGFzcyBpbnN0YW5jZXNcbicKKyAgICAgICAgICAnICAgQSBjbGFzcyBpbnN0YW5jZSBpcyBjcmVhdGVkIGJ5IGNhbGxpbmcgYSBjbGFzcyBvYmplY3QgKHNlZSAnCisgICAgICAgICAgJ2Fib3ZlKS5cbicKKyAgICAgICAgICAnICAgQSBjbGFzcyBpbnN0YW5jZSBoYXMgYSBuYW1lc3BhY2UgaW1wbGVtZW50ZWQgYXMgYSBkaWN0aW9uYXJ5ICcKKyAgICAgICAgICAnd2hpY2hcbicKKyAgICAgICAgICAnICAgaXMgdGhlIGZpcnN0IHBsYWNlIGluIHdoaWNoIGF0dHJpYnV0ZSByZWZlcmVuY2VzIGFyZSBzZWFyY2hlZC5cbicKKyAgICAgICAgICAiICAgV2hlbiBhbiBhdHRyaWJ1dGUgaXMgbm90IGZvdW5kIHRoZXJlLCBhbmQgdGhlIGluc3RhbmNlJ3MgY2xhc3MgIgorICAgICAgICAgICdoYXNcbicKKyAgICAgICAgICAnICAgYW4gYXR0cmlidXRlIGJ5IHRoYXQgbmFtZSwgdGhlIHNlYXJjaCBjb250aW51ZXMgd2l0aCB0aGUgY2xhc3NcbicKKyAgICAgICAgICAnICAgYXR0cmlidXRlcy4gIElmIGEgY2xhc3MgYXR0cmlidXRlIGlzIGZvdW5kIHRoYXQgaXMgYSAnCisgICAgICAgICAgJ3VzZXItZGVmaW5lZFxuJworICAgICAgICAgICcgICBmdW5jdGlvbiBvYmplY3QsIGl0IGlzIHRyYW5zZm9ybWVkIGludG8gYW4gaW5zdGFuY2UgbWV0aG9kICcKKyAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgJyAgIHdob3NlICJfX3NlbGZfXyIgYXR0cmlidXRlIGlzIHRoZSBpbnN0YW5jZS4gIFN0YXRpYyBtZXRob2QgYW5kXG4nCisgICAgICAgICAgJyAgIGNsYXNzIG1ldGhvZCBvYmplY3RzIGFyZSBhbHNvIHRyYW5zZm9ybWVkOyBzZWUgYWJvdmUgdW5kZXJcbicKKyAgICAgICAgICAnICAgIkNsYXNzZXMiLiAgU2VlIHNlY3Rpb24gSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzIGZvciBhbm90aGVyIHdheSAnCisgICAgICAgICAgJ2luXG4nCisgICAgICAgICAgJyAgIHdoaWNoIGF0dHJpYnV0ZXMgb2YgYSBjbGFzcyByZXRyaWV2ZWQgdmlhIGl0cyBpbnN0YW5jZXMgbWF5ICcKKyAgICAgICAgICAnZGlmZmVyXG4nCisgICAgICAgICAgJyAgIGZyb20gdGhlIG9iamVjdHMgYWN0dWFsbHkgc3RvcmVkIGluIHRoZSBjbGFzc1wncyAiX19kaWN0X18iLiAgSWYgJworICAgICAgICAgICdub1xuJworICAgICAgICAgICIgICBjbGFzcyBhdHRyaWJ1dGUgaXMgZm91bmQsIGFuZCB0aGUgb2JqZWN0J3MgY2xhc3MgaGFzIGFcbiIKKyAgICAgICAgICAnICAgIl9fZ2V0YXR0cl9fKCkiIG1ldGhvZCwgdGhhdCBpcyBjYWxsZWQgdG8gc2F0aXNmeSB0aGUgbG9va3VwLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAiICAgQXR0cmlidXRlIGFzc2lnbm1lbnRzIGFuZCBkZWxldGlvbnMgdXBkYXRlIHRoZSBpbnN0YW5jZSdzXG4iCisgICAgICAgICAgIiAgIGRpY3Rpb25hcnksIG5ldmVyIGEgY2xhc3MncyBkaWN0aW9uYXJ5LiAgSWYgdGhlIGNsYXNzIGhhcyBhXG4iCisgICAgICAgICAgJyAgICJfX3NldGF0dHJfXygpIiBvciAiX19kZWxhdHRyX18oKSIgbWV0aG9kLCB0aGlzIGlzIGNhbGxlZCAnCisgICAgICAgICAgJ2luc3RlYWRcbicKKyAgICAgICAgICAnICAgb2YgdXBkYXRpbmcgdGhlIGluc3RhbmNlIGRpY3Rpb25hcnkgZGlyZWN0bHkuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBDbGFzcyBpbnN0YW5jZXMgY2FuIHByZXRlbmQgdG8gYmUgbnVtYmVycywgc2VxdWVuY2VzLCBvciAnCisgICAgICAgICAgJ21hcHBpbmdzXG4nCisgICAgICAgICAgJyAgIGlmIHRoZXkgaGF2ZSBtZXRob2RzIHdpdGggY2VydGFpbiBzcGVjaWFsIG5hbWVzLiAgU2VlIHNlY3Rpb25cbicKKyAgICAgICAgICAnICAgU3BlY2lhbCBtZXRob2QgbmFtZXMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBTcGVjaWFsIGF0dHJpYnV0ZXM6ICJfX2RpY3RfXyIgaXMgdGhlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5O1xuJworICAgICAgICAgICcgICAiX19jbGFzc19fIiBpcyB0aGUgaW5zdGFuY2VcJ3MgY2xhc3MuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdJL08gb2JqZWN0cyAoYWxzbyBrbm93biBhcyBmaWxlIG9iamVjdHMpXG4nCisgICAgICAgICAgJyAgIEEgKmZpbGUgb2JqZWN0KiByZXByZXNlbnRzIGFuIG9wZW4gZmlsZS4gIFZhcmlvdXMgc2hvcnRjdXRzIGFyZVxuJworICAgICAgICAgICcgICBhdmFpbGFibGUgdG8gY3JlYXRlIGZpbGUgb2JqZWN0czogdGhlICJvcGVuKCkiIGJ1aWx0LWluICcKKyAgICAgICAgICAnZnVuY3Rpb24sXG4nCisgICAgICAgICAgJyAgIGFuZCBhbHNvICJvcy5wb3BlbigpIiwgIm9zLmZkb3BlbigpIiwgYW5kIHRoZSAibWFrZWZpbGUoKSIgJworICAgICAgICAgICdtZXRob2RcbicKKyAgICAgICAgICAnICAgb2Ygc29ja2V0IG9iamVjdHMgKGFuZCBwZXJoYXBzIGJ5IG90aGVyIGZ1bmN0aW9ucyBvciBtZXRob2RzXG4nCisgICAgICAgICAgJyAgIHByb3ZpZGVkIGJ5IGV4dGVuc2lvbiBtb2R1bGVzKS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFRoZSBvYmplY3RzICJzeXMuc3RkaW4iLCAic3lzLnN0ZG91dCIgYW5kICJzeXMuc3RkZXJyIiBhcmVcbicKKyAgICAgICAgICAiICAgaW5pdGlhbGl6ZWQgdG8gZmlsZSBvYmplY3RzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGludGVycHJldGVyJ3NcbiIKKyAgICAgICAgICAnICAgc3RhbmRhcmQgaW5wdXQsIG91dHB1dCBhbmQgZXJyb3Igc3RyZWFtczsgdGhleSBhcmUgYWxsIG9wZW4gaW4gJworICAgICAgICAgICd0ZXh0XG4nCisgICAgICAgICAgJyAgIG1vZGUgYW5kIHRoZXJlZm9yZSBmb2xsb3cgdGhlIGludGVyZmFjZSBkZWZpbmVkIGJ5IHRoZVxuJworICAgICAgICAgICcgICAiaW8uVGV4dElPQmFzZSIgYWJzdHJhY3QgY2xhc3MuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdJbnRlcm5hbCB0eXBlc1xuJworICAgICAgICAgICcgICBBIGZldyB0eXBlcyB1c2VkIGludGVybmFsbHkgYnkgdGhlIGludGVycHJldGVyIGFyZSBleHBvc2VkIHRvICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgIHVzZXIuIFRoZWlyIGRlZmluaXRpb25zIG1heSBjaGFuZ2Ugd2l0aCBmdXR1cmUgdmVyc2lvbnMgb2YgdGhlXG4nCisgICAgICAgICAgJyAgIGludGVycHJldGVyLCBidXQgdGhleSBhcmUgbWVudGlvbmVkIGhlcmUgZm9yIGNvbXBsZXRlbmVzcy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIENvZGUgb2JqZWN0c1xuJworICAgICAgICAgICcgICAgICBDb2RlIG9iamVjdHMgcmVwcmVzZW50ICpieXRlLWNvbXBpbGVkKiBleGVjdXRhYmxlIFB5dGhvbiAnCisgICAgICAgICAgJ2NvZGUsXG4nCisgICAgICAgICAgJyAgICAgIG9yICpieXRlY29kZSouIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gYSBjb2RlIG9iamVjdCBhbmQgYVxuJworICAgICAgICAgICcgICAgICBmdW5jdGlvbiBvYmplY3QgaXMgdGhhdCB0aGUgZnVuY3Rpb24gb2JqZWN0IGNvbnRhaW5zIGFuICcKKyAgICAgICAgICAnZXhwbGljaXRcbicKKyAgICAgICAgICAiICAgICAgcmVmZXJlbmNlIHRvIHRoZSBmdW5jdGlvbidzIGdsb2JhbHMgKHRoZSBtb2R1bGUgaW4gd2hpY2ggaXQgIgorICAgICAgICAgICd3YXNcbicKKyAgICAgICAgICAnICAgICAgZGVmaW5lZCksIHdoaWxlIGEgY29kZSBvYmplY3QgY29udGFpbnMgbm8gY29udGV4dDsgYWxzbyB0aGVcbicKKyAgICAgICAgICAnICAgICAgZGVmYXVsdCBhcmd1bWVudCB2YWx1ZXMgYXJlIHN0b3JlZCBpbiB0aGUgZnVuY3Rpb24gb2JqZWN0LCAnCisgICAgICAgICAgJ25vdFxuJworICAgICAgICAgICcgICAgICBpbiB0aGUgY29kZSBvYmplY3QgKGJlY2F1c2UgdGhleSByZXByZXNlbnQgdmFsdWVzIGNhbGN1bGF0ZWQgJworICAgICAgICAgICdhdFxuJworICAgICAgICAgICcgICAgICBydW4tdGltZSkuICBVbmxpa2UgZnVuY3Rpb24gb2JqZWN0cywgY29kZSBvYmplY3RzIGFyZSAnCisgICAgICAgICAgJ2ltbXV0YWJsZVxuJworICAgICAgICAgICcgICAgICBhbmQgY29udGFpbiBubyByZWZlcmVuY2VzIChkaXJlY3RseSBvciBpbmRpcmVjdGx5KSB0byAnCisgICAgICAgICAgJ211dGFibGVcbicKKyAgICAgICAgICAnICAgICAgb2JqZWN0cy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6ICJjb19uYW1lIiBnaXZlcyB0aGUgZnVuY3Rpb24gJworICAgICAgICAgICduYW1lO1xuJworICAgICAgICAgICcgICAgICAiY29fYXJnY291bnQiIGlzIHRoZSBudW1iZXIgb2YgcG9zaXRpb25hbCBhcmd1bWVudHMgJworICAgICAgICAgICcoaW5jbHVkaW5nXG4nCisgICAgICAgICAgJyAgICAgIGFyZ3VtZW50cyB3aXRoIGRlZmF1bHQgdmFsdWVzKTsgImNvX25sb2NhbHMiIGlzIHRoZSBudW1iZXIgJworICAgICAgICAgICdvZlxuJworICAgICAgICAgICcgICAgICBsb2NhbCB2YXJpYWJsZXMgdXNlZCBieSB0aGUgZnVuY3Rpb24gKGluY2x1ZGluZyBhcmd1bWVudHMpO1xuJworICAgICAgICAgICcgICAgICAiY29fdmFybmFtZXMiIGlzIGEgdHVwbGUgY29udGFpbmluZyB0aGUgbmFtZXMgb2YgdGhlIGxvY2FsXG4nCisgICAgICAgICAgJyAgICAgIHZhcmlhYmxlcyAoc3RhcnRpbmcgd2l0aCB0aGUgYXJndW1lbnQgbmFtZXMpOyAiY29fY2VsbHZhcnMiICcKKyAgICAgICAgICAnaXMgYVxuJworICAgICAgICAgICcgICAgICB0dXBsZSBjb250YWluaW5nIHRoZSBuYW1lcyBvZiBsb2NhbCB2YXJpYWJsZXMgdGhhdCBhcmVcbicKKyAgICAgICAgICAnICAgICAgcmVmZXJlbmNlZCBieSBuZXN0ZWQgZnVuY3Rpb25zOyAiY29fZnJlZXZhcnMiIGlzIGEgdHVwbGVcbicKKyAgICAgICAgICAnICAgICAgY29udGFpbmluZyB0aGUgbmFtZXMgb2YgZnJlZSB2YXJpYWJsZXM7ICJjb19jb2RlIiBpcyBhICcKKyAgICAgICAgICAnc3RyaW5nXG4nCisgICAgICAgICAgJyAgICAgIHJlcHJlc2VudGluZyB0aGUgc2VxdWVuY2Ugb2YgYnl0ZWNvZGUgaW5zdHJ1Y3Rpb25zOyAnCisgICAgICAgICAgJyJjb19jb25zdHMiXG4nCisgICAgICAgICAgJyAgICAgIGlzIGEgdHVwbGUgY29udGFpbmluZyB0aGUgbGl0ZXJhbHMgdXNlZCBieSB0aGUgYnl0ZWNvZGU7XG4nCisgICAgICAgICAgJyAgICAgICJjb19uYW1lcyIgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBuYW1lcyB1c2VkIGJ5IHRoZSAnCisgICAgICAgICAgJ2J5dGVjb2RlO1xuJworICAgICAgICAgICcgICAgICAiY29fZmlsZW5hbWUiIGlzIHRoZSBmaWxlbmFtZSBmcm9tIHdoaWNoIHRoZSBjb2RlIHdhcyAnCisgICAgICAgICAgJ2NvbXBpbGVkO1xuJworICAgICAgICAgICcgICAgICAiY29fZmlyc3RsaW5lbm8iIGlzIHRoZSBmaXJzdCBsaW5lIG51bWJlciBvZiB0aGUgZnVuY3Rpb247XG4nCisgICAgICAgICAgJyAgICAgICJjb19sbm90YWIiIGlzIGEgc3RyaW5nIGVuY29kaW5nIHRoZSBtYXBwaW5nIGZyb20gYnl0ZWNvZGVcbicKKyAgICAgICAgICAnICAgICAgb2Zmc2V0cyB0byBsaW5lIG51bWJlcnMgKGZvciBkZXRhaWxzIHNlZSB0aGUgc291cmNlIGNvZGUgb2YgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgaW50ZXJwcmV0ZXIpOyAiY29fc3RhY2tzaXplIiBpcyB0aGUgcmVxdWlyZWQgc3RhY2sgc2l6ZVxuJworICAgICAgICAgICcgICAgICAoaW5jbHVkaW5nIGxvY2FsIHZhcmlhYmxlcyk7ICJjb19mbGFncyIgaXMgYW4gaW50ZWdlciAnCisgICAgICAgICAgJ2VuY29kaW5nIGFcbicKKyAgICAgICAgICAnICAgICAgbnVtYmVyIG9mIGZsYWdzIGZvciB0aGUgaW50ZXJwcmV0ZXIuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBUaGUgZm9sbG93aW5nIGZsYWcgYml0cyBhcmUgZGVmaW5lZCBmb3IgImNvX2ZsYWdzIjogYml0ICcKKyAgICAgICAgICAnIjB4MDQiXG4nCisgICAgICAgICAgJyAgICAgIGlzIHNldCBpZiB0aGUgZnVuY3Rpb24gdXNlcyB0aGUgIiphcmd1bWVudHMiIHN5bnRheCB0byBhY2NlcHQgJworICAgICAgICAgICdhblxuJworICAgICAgICAgICcgICAgICBhcmJpdHJhcnkgbnVtYmVyIG9mIHBvc2l0aW9uYWwgYXJndW1lbnRzOyBiaXQgIjB4MDgiIGlzIHNldCAnCisgICAgICAgICAgJ2lmXG4nCisgICAgICAgICAgJyAgICAgIHRoZSBmdW5jdGlvbiB1c2VzIHRoZSAiKiprZXl3b3JkcyIgc3ludGF4IHRvIGFjY2VwdCAnCisgICAgICAgICAgJ2FyYml0cmFyeVxuJworICAgICAgICAgICcgICAgICBrZXl3b3JkIGFyZ3VtZW50czsgYml0ICIweDIwIiBpcyBzZXQgaWYgdGhlIGZ1bmN0aW9uIGlzIGFcbicKKyAgICAgICAgICAnICAgICAgZ2VuZXJhdG9yLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgRnV0dXJlIGZlYXR1cmUgZGVjbGFyYXRpb25zICgiZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCAnCisgICAgICAgICAgJ2RpdmlzaW9uIilcbicKKyAgICAgICAgICAnICAgICAgYWxzbyB1c2UgYml0cyBpbiAiY29fZmxhZ3MiIHRvIGluZGljYXRlIHdoZXRoZXIgYSBjb2RlICcKKyAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgJyAgICAgIHdhcyBjb21waWxlZCB3aXRoIGEgcGFydGljdWxhciBmZWF0dXJlIGVuYWJsZWQ6IGJpdCAiMHgyMDAwIiAnCisgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgJyAgICAgIHNldCBpZiB0aGUgZnVuY3Rpb24gd2FzIGNvbXBpbGVkIHdpdGggZnV0dXJlIGRpdmlzaW9uICcKKyAgICAgICAgICAnZW5hYmxlZDtcbicKKyAgICAgICAgICAnICAgICAgYml0cyAiMHgxMCIgYW5kICIweDEwMDAiIHdlcmUgdXNlZCBpbiBlYXJsaWVyIHZlcnNpb25zIG9mXG4nCisgICAgICAgICAgJyAgICAgIFB5dGhvbi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIE90aGVyIGJpdHMgaW4gImNvX2ZsYWdzIiBhcmUgcmVzZXJ2ZWQgZm9yIGludGVybmFsIHVzZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIElmIGEgY29kZSBvYmplY3QgcmVwcmVzZW50cyBhIGZ1bmN0aW9uLCB0aGUgZmlyc3QgaXRlbSBpblxuJworICAgICAgICAgICcgICAgICAiY29fY29uc3RzIiBpcyB0aGUgZG9jdW1lbnRhdGlvbiBzdHJpbmcgb2YgdGhlIGZ1bmN0aW9uLCBvclxuJworICAgICAgICAgICcgICAgICAiTm9uZSIgaWYgdW5kZWZpbmVkLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgRnJhbWUgb2JqZWN0c1xuJworICAgICAgICAgICcgICAgICBGcmFtZSBvYmplY3RzIHJlcHJlc2VudCBleGVjdXRpb24gZnJhbWVzLiAgVGhleSBtYXkgb2NjdXIgaW5cbicKKyAgICAgICAgICAnICAgICAgdHJhY2ViYWNrIG9iamVjdHMgKHNlZSBiZWxvdykuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiAiZl9iYWNrIiBpcyB0byB0aGUgcHJldmlvdXMgJworICAgICAgICAgICdzdGFja1xuJworICAgICAgICAgICcgICAgICBmcmFtZSAodG93YXJkcyB0aGUgY2FsbGVyKSwgb3IgIk5vbmUiIGlmIHRoaXMgaXMgdGhlIGJvdHRvbVxuJworICAgICAgICAgICcgICAgICBzdGFjayBmcmFtZTsgImZfY29kZSIgaXMgdGhlIGNvZGUgb2JqZWN0IGJlaW5nIGV4ZWN1dGVkIGluICcKKyAgICAgICAgICAndGhpc1xuJworICAgICAgICAgICcgICAgICBmcmFtZTsgImZfbG9jYWxzIiBpcyB0aGUgZGljdGlvbmFyeSB1c2VkIHRvIGxvb2sgdXAgbG9jYWxcbicKKyAgICAgICAgICAnICAgICAgdmFyaWFibGVzOyAiZl9nbG9iYWxzIiBpcyB1c2VkIGZvciBnbG9iYWwgdmFyaWFibGVzO1xuJworICAgICAgICAgICcgICAgICAiZl9idWlsdGlucyIgaXMgdXNlZCBmb3IgYnVpbHQtaW4gKGludHJpbnNpYykgbmFtZXM7ICcKKyAgICAgICAgICAnImZfbGFzdGkiXG4nCisgICAgICAgICAgJyAgICAgIGdpdmVzIHRoZSBwcmVjaXNlIGluc3RydWN0aW9uICh0aGlzIGlzIGFuIGluZGV4IGludG8gdGhlXG4nCisgICAgICAgICAgJyAgICAgIGJ5dGVjb2RlIHN0cmluZyBvZiB0aGUgY29kZSBvYmplY3QpLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgU3BlY2lhbCB3cml0YWJsZSBhdHRyaWJ1dGVzOiAiZl90cmFjZSIsIGlmIG5vdCAiTm9uZSIsIGlzIGFcbicKKyAgICAgICAgICAnICAgICAgZnVuY3Rpb24gY2FsbGVkIGF0IHRoZSBzdGFydCBvZiBlYWNoIHNvdXJjZSBjb2RlIGxpbmUgKHRoaXMgJworICAgICAgICAgICdpc1xuJworICAgICAgICAgICcgICAgICB1c2VkIGJ5IHRoZSBkZWJ1Z2dlcik7ICJmX2xpbmVubyIgaXMgdGhlIGN1cnJlbnQgbGluZSBudW1iZXIgJworICAgICAgICAgICdvZlxuJworICAgICAgICAgICcgICAgICB0aGUgZnJhbWUgLS0tIHdyaXRpbmcgdG8gdGhpcyBmcm9tIHdpdGhpbiBhIHRyYWNlIGZ1bmN0aW9uICcKKyAgICAgICAgICAnanVtcHNcbicKKyAgICAgICAgICAnICAgICAgdG8gdGhlIGdpdmVuIGxpbmUgKG9ubHkgZm9yIHRoZSBib3R0b20tbW9zdCBmcmFtZSkuICBBICcKKyAgICAgICAgICAnZGVidWdnZXJcbicKKyAgICAgICAgICAnICAgICAgY2FuIGltcGxlbWVudCBhIEp1bXAgY29tbWFuZCAoYWthIFNldCBOZXh0IFN0YXRlbWVudCkgYnkgJworICAgICAgICAgICd3cml0aW5nXG4nCisgICAgICAgICAgJyAgICAgIHRvIGZfbGluZW5vLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgRnJhbWUgb2JqZWN0cyBzdXBwb3J0IG9uZSBtZXRob2Q6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBmcmFtZS5jbGVhcigpXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICAgICBUaGlzIG1ldGhvZCBjbGVhcnMgYWxsIHJlZmVyZW5jZXMgdG8gbG9jYWwgdmFyaWFibGVzIGhlbGQgJworICAgICAgICAgICdieVxuJworICAgICAgICAgICcgICAgICAgICB0aGUgZnJhbWUuICBBbHNvLCBpZiB0aGUgZnJhbWUgYmVsb25nZWQgdG8gYSBnZW5lcmF0b3IsICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgICAgICAgIGdlbmVyYXRvciBpcyBmaW5hbGl6ZWQuICBUaGlzIGhlbHBzIGJyZWFrIHJlZmVyZW5jZSAnCisgICAgICAgICAgJ2N5Y2xlc1xuJworICAgICAgICAgICcgICAgICAgICBpbnZvbHZpbmcgZnJhbWUgb2JqZWN0cyAoZm9yIGV4YW1wbGUgd2hlbiBjYXRjaGluZyBhblxuJworICAgICAgICAgICcgICAgICAgICBleGNlcHRpb24gYW5kIHN0b3JpbmcgaXRzIHRyYWNlYmFjayBmb3IgbGF0ZXIgdXNlKS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgICAgICJSdW50aW1lRXJyb3IiIGlzIHJhaXNlZCBpZiB0aGUgZnJhbWUgaXMgY3VycmVudGx5ICcKKyAgICAgICAgICAnZXhlY3V0aW5nLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgICAgTmV3IGluIHZlcnNpb24gMy40LlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgVHJhY2ViYWNrIG9iamVjdHNcbicKKyAgICAgICAgICAnICAgICAgVHJhY2ViYWNrIG9iamVjdHMgcmVwcmVzZW50IGEgc3RhY2sgdHJhY2Ugb2YgYW4gZXhjZXB0aW9uLiAgJworICAgICAgICAgICdBXG4nCisgICAgICAgICAgJyAgICAgIHRyYWNlYmFjayBvYmplY3QgaXMgY3JlYXRlZCB3aGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnMuICBXaGVuICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgICAgIHNlYXJjaCBmb3IgYW4gZXhjZXB0aW9uIGhhbmRsZXIgdW53aW5kcyB0aGUgZXhlY3V0aW9uIHN0YWNrLCAnCisgICAgICAgICAgJ2F0XG4nCisgICAgICAgICAgJyAgICAgIGVhY2ggdW53b3VuZCBsZXZlbCBhIHRyYWNlYmFjayBvYmplY3QgaXMgaW5zZXJ0ZWQgaW4gZnJvbnQgJworICAgICAgICAgICdvZlxuJworICAgICAgICAgICcgICAgICB0aGUgY3VycmVudCB0cmFjZWJhY2suICBXaGVuIGFuIGV4Y2VwdGlvbiBoYW5kbGVyIGlzICcKKyAgICAgICAgICAnZW50ZXJlZCxcbicKKyAgICAgICAgICAnICAgICAgdGhlIHN0YWNrIHRyYWNlIGlzIG1hZGUgYXZhaWxhYmxlIHRvIHRoZSBwcm9ncmFtLiAoU2VlICcKKyAgICAgICAgICAnc2VjdGlvblxuJworICAgICAgICAgICcgICAgICBUaGUgdHJ5IHN0YXRlbWVudC4pIEl0IGlzIGFjY2Vzc2libGUgYXMgdGhlIHRoaXJkIGl0ZW0gb2YgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgdHVwbGUgcmV0dXJuZWQgYnkgInN5cy5leGNfaW5mbygpIi4gV2hlbiB0aGUgcHJvZ3JhbSBjb250YWlucyAnCisgICAgICAgICAgJ25vXG4nCisgICAgICAgICAgJyAgICAgIHN1aXRhYmxlIGhhbmRsZXIsIHRoZSBzdGFjayB0cmFjZSBpcyB3cml0dGVuIChuaWNlbHkgJworICAgICAgICAgICdmb3JtYXR0ZWQpXG4nCisgICAgICAgICAgJyAgICAgIHRvIHRoZSBzdGFuZGFyZCBlcnJvciBzdHJlYW07IGlmIHRoZSBpbnRlcnByZXRlciBpcyAnCisgICAgICAgICAgJ2ludGVyYWN0aXZlLFxuJworICAgICAgICAgICcgICAgICBpdCBpcyBhbHNvIG1hZGUgYXZhaWxhYmxlIHRvIHRoZSB1c2VyIGFzICcKKyAgICAgICAgICAnInN5cy5sYXN0X3RyYWNlYmFjayIuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiAidGJfbmV4dCIgaXMgdGhlIG5leHQgbGV2ZWwgaW4gJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgc3RhY2sgdHJhY2UgKHRvd2FyZHMgdGhlIGZyYW1lIHdoZXJlIHRoZSBleGNlcHRpb24gb2NjdXJyZWQpLCAnCisgICAgICAgICAgJ29yXG4nCisgICAgICAgICAgJyAgICAgICJOb25lIiBpZiB0aGVyZSBpcyBubyBuZXh0IGxldmVsOyAidGJfZnJhbWUiIHBvaW50cyB0byB0aGVcbicKKyAgICAgICAgICAnICAgICAgZXhlY3V0aW9uIGZyYW1lIG9mIHRoZSBjdXJyZW50IGxldmVsOyAidGJfbGluZW5vIiBnaXZlcyB0aGUgJworICAgICAgICAgICdsaW5lXG4nCisgICAgICAgICAgJyAgICAgIG51bWJlciB3aGVyZSB0aGUgZXhjZXB0aW9uIG9jY3VycmVkOyAidGJfbGFzdGkiIGluZGljYXRlcyAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICAgICBwcmVjaXNlIGluc3RydWN0aW9uLiAgVGhlIGxpbmUgbnVtYmVyIGFuZCBsYXN0IGluc3RydWN0aW9uICcKKyAgICAgICAgICAnaW5cbicKKyAgICAgICAgICAnICAgICAgdGhlIHRyYWNlYmFjayBtYXkgZGlmZmVyIGZyb20gdGhlIGxpbmUgbnVtYmVyIG9mIGl0cyBmcmFtZVxuJworICAgICAgICAgICcgICAgICBvYmplY3QgaWYgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZCBpbiBhICJ0cnkiIHN0YXRlbWVudCB3aXRoICcKKyAgICAgICAgICAnbm9cbicKKyAgICAgICAgICAnICAgICAgbWF0Y2hpbmcgZXhjZXB0IGNsYXVzZSBvciB3aXRoIGEgZmluYWxseSBjbGF1c2UuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBTbGljZSBvYmplY3RzXG4nCisgICAgICAgICAgJyAgICAgIFNsaWNlIG9iamVjdHMgYXJlIHVzZWQgdG8gcmVwcmVzZW50IHNsaWNlcyBmb3IgJworICAgICAgICAgICciX19nZXRpdGVtX18oKSJcbicKKyAgICAgICAgICAnICAgICAgbWV0aG9kcy4gIFRoZXkgYXJlIGFsc28gY3JlYXRlZCBieSB0aGUgYnVpbHQtaW4gInNsaWNlKCkiXG4nCisgICAgICAgICAgJyAgICAgIGZ1bmN0aW9uLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogInN0YXJ0IiBpcyB0aGUgbG93ZXIgYm91bmQ7ICcKKyAgICAgICAgICAnInN0b3AiXG4nCisgICAgICAgICAgJyAgICAgIGlzIHRoZSB1cHBlciBib3VuZDsgInN0ZXAiIGlzIHRoZSBzdGVwIHZhbHVlOyBlYWNoIGlzICJOb25lIiAnCisgICAgICAgICAgJ2lmXG4nCisgICAgICAgICAgJyAgICAgIG9taXR0ZWQuICBUaGVzZSBhdHRyaWJ1dGVzIGNhbiBoYXZlIGFueSB0eXBlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgU2xpY2Ugb2JqZWN0cyBzdXBwb3J0IG9uZSBtZXRob2Q6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBzbGljZS5pbmRpY2VzKHNlbGYsIGxlbmd0aClcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgICAgIFRoaXMgbWV0aG9kIHRha2VzIGEgc2luZ2xlIGludGVnZXIgYXJndW1lbnQgKmxlbmd0aCogYW5kXG4nCisgICAgICAgICAgJyAgICAgICAgIGNvbXB1dGVzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzbGljZSB0aGF0IHRoZSBzbGljZSAnCisgICAgICAgICAgJ29iamVjdFxuJworICAgICAgICAgICcgICAgICAgICB3b3VsZCBkZXNjcmliZSBpZiBhcHBsaWVkIHRvIGEgc2VxdWVuY2Ugb2YgKmxlbmd0aCogJworICAgICAgICAgICdpdGVtcy5cbicKKyAgICAgICAgICAnICAgICAgICAgSXQgcmV0dXJucyBhIHR1cGxlIG9mIHRocmVlIGludGVnZXJzOyByZXNwZWN0aXZlbHkgdGhlc2UgJworICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAnICAgICAgICAgdGhlICpzdGFydCogYW5kICpzdG9wKiBpbmRpY2VzIGFuZCB0aGUgKnN0ZXAqIG9yIHN0cmlkZVxuJworICAgICAgICAgICcgICAgICAgICBsZW5ndGggb2YgdGhlIHNsaWNlLiBNaXNzaW5nIG9yIG91dC1vZi1ib3VuZHMgaW5kaWNlcyBhcmVcbicKKyAgICAgICAgICAnICAgICAgICAgaGFuZGxlZCBpbiBhIG1hbm5lciBjb25zaXN0ZW50IHdpdGggcmVndWxhciBzbGljZXMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBTdGF0aWMgbWV0aG9kIG9iamVjdHNcbicKKyAgICAgICAgICAnICAgICAgU3RhdGljIG1ldGhvZCBvYmplY3RzIHByb3ZpZGUgYSB3YXkgb2YgZGVmZWF0aW5nIHRoZVxuJworICAgICAgICAgICcgICAgICB0cmFuc2Zvcm1hdGlvbiBvZiBmdW5jdGlvbiBvYmplY3RzIHRvIG1ldGhvZCBvYmplY3RzICcKKyAgICAgICAgICAnZGVzY3JpYmVkXG4nCisgICAgICAgICAgJyAgICAgIGFib3ZlLiBBIHN0YXRpYyBtZXRob2Qgb2JqZWN0IGlzIGEgd3JhcHBlciBhcm91bmQgYW55IG90aGVyXG4nCisgICAgICAgICAgJyAgICAgIG9iamVjdCwgdXN1YWxseSBhIHVzZXItZGVmaW5lZCBtZXRob2Qgb2JqZWN0LiBXaGVuIGEgc3RhdGljXG4nCisgICAgICAgICAgJyAgICAgIG1ldGhvZCBvYmplY3QgaXMgcmV0cmlldmVkIGZyb20gYSBjbGFzcyBvciBhIGNsYXNzIGluc3RhbmNlLCAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICAgICBvYmplY3QgYWN0dWFsbHkgcmV0dXJuZWQgaXMgdGhlIHdyYXBwZWQgb2JqZWN0LCB3aGljaCBpcyBub3RcbicKKyAgICAgICAgICAnICAgICAgc3ViamVjdCB0byBhbnkgZnVydGhlciB0cmFuc2Zvcm1hdGlvbi4gU3RhdGljIG1ldGhvZCBvYmplY3RzICcKKyAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgJyAgICAgIG5vdCB0aGVtc2VsdmVzIGNhbGxhYmxlLCBhbHRob3VnaCB0aGUgb2JqZWN0cyB0aGV5IHdyYXAgJworICAgICAgICAgICd1c3VhbGx5XG4nCisgICAgICAgICAgJyAgICAgIGFyZS4gU3RhdGljIG1ldGhvZCBvYmplY3RzIGFyZSBjcmVhdGVkIGJ5IHRoZSBidWlsdC1pblxuJworICAgICAgICAgICcgICAgICAic3RhdGljbWV0aG9kKCkiIGNvbnN0cnVjdG9yLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgQ2xhc3MgbWV0aG9kIG9iamVjdHNcbicKKyAgICAgICAgICAnICAgICAgQSBjbGFzcyBtZXRob2Qgb2JqZWN0LCBsaWtlIGEgc3RhdGljIG1ldGhvZCBvYmplY3QsIGlzIGEgJworICAgICAgICAgICd3cmFwcGVyXG4nCisgICAgICAgICAgJyAgICAgIGFyb3VuZCBhbm90aGVyIG9iamVjdCB0aGF0IGFsdGVycyB0aGUgd2F5IGluIHdoaWNoIHRoYXQgJworICAgICAgICAgICdvYmplY3RcbicKKyAgICAgICAgICAnICAgICAgaXMgcmV0cmlldmVkIGZyb20gY2xhc3NlcyBhbmQgY2xhc3MgaW5zdGFuY2VzLiBUaGUgYmVoYXZpb3VyICcKKyAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAnICAgICAgY2xhc3MgbWV0aG9kIG9iamVjdHMgdXBvbiBzdWNoIHJldHJpZXZhbCBpcyBkZXNjcmliZWQgYWJvdmUsXG4nCisgICAgICAgICAgJyAgICAgIHVuZGVyICJVc2VyLWRlZmluZWQgbWV0aG9kcyIuIENsYXNzIG1ldGhvZCBvYmplY3RzIGFyZSAnCisgICAgICAgICAgJ2NyZWF0ZWRcbicKKyAgICAgICAgICAnICAgICAgYnkgdGhlIGJ1aWx0LWluICJjbGFzc21ldGhvZCgpIiBjb25zdHJ1Y3Rvci5cbicsCisgJ3R5cGVzZnVuY3Rpb25zJzogJ1xuJworICAgICAgICAgICAgICAgICAgICdGdW5jdGlvbnNcbicKKyAgICAgICAgICAgICAgICAgICAnKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdGdW5jdGlvbiBvYmplY3RzIGFyZSBjcmVhdGVkIGJ5IGZ1bmN0aW9uIGRlZmluaXRpb25zLiAgVGhlICcKKyAgICAgICAgICAgICAgICAgICAnb25seVxuJworICAgICAgICAgICAgICAgICAgICdvcGVyYXRpb24gb24gYSBmdW5jdGlvbiBvYmplY3QgaXMgdG8gY2FsbCBpdDogJworICAgICAgICAgICAgICAgICAgICciZnVuYyhhcmd1bWVudC1saXN0KSIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdUaGVyZSBhcmUgcmVhbGx5IHR3byBmbGF2b3JzIG9mIGZ1bmN0aW9uIG9iamVjdHM6IGJ1aWx0LWluICcKKyAgICAgICAgICAgICAgICAgICAnZnVuY3Rpb25zXG4nCisgICAgICAgICAgICAgICAgICAgJ2FuZCB1c2VyLWRlZmluZWQgZnVuY3Rpb25zLiAgQm90aCBzdXBwb3J0IHRoZSBzYW1lICcKKyAgICAgICAgICAgICAgICAgICAnb3BlcmF0aW9uICh0byBjYWxsXG4nCisgICAgICAgICAgICAgICAgICAgJ3RoZSBmdW5jdGlvbiksIGJ1dCB0aGUgaW1wbGVtZW50YXRpb24gaXMgZGlmZmVyZW50LCBoZW5jZSAnCisgICAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAgICdkaWZmZXJlbnQgb2JqZWN0IHR5cGVzLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnU2VlIEZ1bmN0aW9uIGRlZmluaXRpb25zIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuJywKKyAndHlwZXNtYXBwaW5nJzogJ1xuJworICAgICAgICAgICAgICAgICAnTWFwcGluZyBUeXBlcyAtLS0gImRpY3QiXG4nCisgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQSAqbWFwcGluZyogb2JqZWN0IG1hcHMgKmhhc2hhYmxlKiB2YWx1ZXMgdG8gYXJiaXRyYXJ5ICcKKyAgICAgICAgICAgICAgICAgJ29iamVjdHMuXG4nCisgICAgICAgICAgICAgICAgICdNYXBwaW5ncyBhcmUgbXV0YWJsZSBvYmplY3RzLiAgVGhlcmUgaXMgY3VycmVudGx5IG9ubHkgb25lICcKKyAgICAgICAgICAgICAgICAgJ3N0YW5kYXJkXG4nCisgICAgICAgICAgICAgICAgICdtYXBwaW5nIHR5cGUsIHRoZSAqZGljdGlvbmFyeSouICAoRm9yIG90aGVyIGNvbnRhaW5lcnMgc2VlICcKKyAgICAgICAgICAgICAgICAgJ3RoZSBidWlsdC1cbicKKyAgICAgICAgICAgICAgICAgJ2luICJsaXN0IiwgInNldCIsIGFuZCAidHVwbGUiIGNsYXNzZXMsIGFuZCB0aGUgImNvbGxlY3Rpb25zIiAnCisgICAgICAgICAgICAgICAgICdtb2R1bGUuKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICJBIGRpY3Rpb25hcnkncyBrZXlzIGFyZSAqYWxtb3N0KiBhcmJpdHJhcnkgdmFsdWVzLiAgVmFsdWVzICIKKyAgICAgICAgICAgICAgICAgJ3RoYXQgYXJlXG4nCisgICAgICAgICAgICAgICAgICdub3QgKmhhc2hhYmxlKiwgdGhhdCBpcywgdmFsdWVzIGNvbnRhaW5pbmcgbGlzdHMsICcKKyAgICAgICAgICAgICAgICAgJ2RpY3Rpb25hcmllcyBvclxuJworICAgICAgICAgICAgICAgICAnb3RoZXIgbXV0YWJsZSB0eXBlcyAodGhhdCBhcmUgY29tcGFyZWQgYnkgdmFsdWUgcmF0aGVyIHRoYW4gJworICAgICAgICAgICAgICAgICAnYnkgb2JqZWN0XG4nCisgICAgICAgICAgICAgICAgICdpZGVudGl0eSkgbWF5IG5vdCBiZSB1c2VkIGFzIGtleXMuICBOdW1lcmljIHR5cGVzIHVzZWQgZm9yICcKKyAgICAgICAgICAgICAgICAgJ2tleXMgb2JleVxuJworICAgICAgICAgICAgICAgICAndGhlIG5vcm1hbCBydWxlcyBmb3IgbnVtZXJpYyBjb21wYXJpc29uOiBpZiB0d28gbnVtYmVycyAnCisgICAgICAgICAgICAgICAgICdjb21wYXJlIGVxdWFsXG4nCisgICAgICAgICAgICAgICAgICcoc3VjaCBhcyAiMSIgYW5kICIxLjAiKSB0aGVuIHRoZXkgY2FuIGJlIHVzZWQgJworICAgICAgICAgICAgICAgICAnaW50ZXJjaGFuZ2VhYmx5IHRvIGluZGV4XG4nCisgICAgICAgICAgICAgICAgICd0aGUgc2FtZSBkaWN0aW9uYXJ5IGVudHJ5LiAgKE5vdGUgaG93ZXZlciwgdGhhdCBzaW5jZSAnCisgICAgICAgICAgICAgICAgICdjb21wdXRlcnMgc3RvcmVcbicKKyAgICAgICAgICAgICAgICAgJ2Zsb2F0aW5nLXBvaW50IG51bWJlcnMgYXMgYXBwcm94aW1hdGlvbnMgaXQgaXMgdXN1YWxseSAnCisgICAgICAgICAgICAgICAgICd1bndpc2UgdG8gdXNlXG4nCisgICAgICAgICAgICAgICAgICd0aGVtIGFzIGRpY3Rpb25hcnkga2V5cy4pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0RpY3Rpb25hcmllcyBjYW4gYmUgY3JlYXRlZCBieSBwbGFjaW5nIGEgY29tbWEtc2VwYXJhdGVkICcKKyAgICAgICAgICAgICAgICAgJ2xpc3Qgb2YgImtleTpcbicKKyAgICAgICAgICAgICAgICAgJ3ZhbHVlIiBwYWlycyB3aXRoaW4gYnJhY2VzLCBmb3IgZXhhbXBsZTogIntcJ2phY2tcJzogNDA5OCwgJworICAgICAgICAgICAgICAgICAiJ3Nqb2VyZCc6XG4iCisgICAgICAgICAgICAgICAgICc0MTI3fSIgb3IgIns0MDk4OiBcJ2phY2tcJywgNDEyNzogXCdzam9lcmRcJ30iLCBvciBieSB0aGUgJworICAgICAgICAgICAgICAgICAnImRpY3QiXG4nCisgICAgICAgICAgICAgICAgICdjb25zdHJ1Y3Rvci5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnY2xhc3MgZGljdCgqKmt3YXJnKVxuJworICAgICAgICAgICAgICAgICAnY2xhc3MgZGljdChtYXBwaW5nLCAqKmt3YXJnKVxuJworICAgICAgICAgICAgICAgICAnY2xhc3MgZGljdChpdGVyYWJsZSwgKiprd2FyZylcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGEgbmV3IGRpY3Rpb25hcnkgaW5pdGlhbGl6ZWQgZnJvbSBhbiBvcHRpb25hbCAnCisgICAgICAgICAgICAgICAgICdwb3NpdGlvbmFsXG4nCisgICAgICAgICAgICAgICAgICcgICBhcmd1bWVudCBhbmQgYSBwb3NzaWJseSBlbXB0eSBzZXQgb2Yga2V5d29yZCBhcmd1bWVudHMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIElmIG5vIHBvc2l0aW9uYWwgYXJndW1lbnQgaXMgZ2l2ZW4sIGFuIGVtcHR5IGRpY3Rpb25hcnkgJworICAgICAgICAgICAgICAgICAnaXMgY3JlYXRlZC5cbicKKyAgICAgICAgICAgICAgICAgJyAgIElmIGEgcG9zaXRpb25hbCBhcmd1bWVudCBpcyBnaXZlbiBhbmQgaXQgaXMgYSBtYXBwaW5nICcKKyAgICAgICAgICAgICAgICAgJ29iamVjdCwgYVxuJworICAgICAgICAgICAgICAgICAnICAgZGljdGlvbmFyeSBpcyBjcmVhdGVkIHdpdGggdGhlIHNhbWUga2V5LXZhbHVlIHBhaXJzIGFzICcKKyAgICAgICAgICAgICAgICAgJ3RoZSBtYXBwaW5nXG4nCisgICAgICAgICAgICAgICAgICcgICBvYmplY3QuICBPdGhlcndpc2UsIHRoZSBwb3NpdGlvbmFsIGFyZ3VtZW50IG11c3QgYmUgYW4gJworICAgICAgICAgICAgICAgICAnKml0ZXJhYmxlKlxuJworICAgICAgICAgICAgICAgICAnICAgb2JqZWN0LiAgRWFjaCBpdGVtIGluIHRoZSBpdGVyYWJsZSBtdXN0IGl0c2VsZiBiZSBhbiAnCisgICAgICAgICAgICAgICAgICdpdGVyYWJsZSB3aXRoXG4nCisgICAgICAgICAgICAgICAgICcgICBleGFjdGx5IHR3byBvYmplY3RzLiAgVGhlIGZpcnN0IG9iamVjdCBvZiBlYWNoIGl0ZW0gJworICAgICAgICAgICAgICAgICAnYmVjb21lcyBhIGtleVxuJworICAgICAgICAgICAgICAgICAnICAgaW4gdGhlIG5ldyBkaWN0aW9uYXJ5LCBhbmQgdGhlIHNlY29uZCBvYmplY3QgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2NvcnJlc3BvbmRpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgIHZhbHVlLiAgSWYgYSBrZXkgb2NjdXJzIG1vcmUgdGhhbiBvbmNlLCB0aGUgbGFzdCB2YWx1ZSAnCisgICAgICAgICAgICAgICAgICdmb3IgdGhhdCBrZXlcbicKKyAgICAgICAgICAgICAgICAgJyAgIGJlY29tZXMgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgaW4gdGhlIG5ldyBkaWN0aW9uYXJ5LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBJZiBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgZ2l2ZW4sIHRoZSBrZXl3b3JkIGFyZ3VtZW50cyBhbmQgJworICAgICAgICAgICAgICAgICAndGhlaXJcbicKKyAgICAgICAgICAgICAgICAgJyAgIHZhbHVlcyBhcmUgYWRkZWQgdG8gdGhlIGRpY3Rpb25hcnkgY3JlYXRlZCBmcm9tIHRoZSAnCisgICAgICAgICAgICAgICAgICdwb3NpdGlvbmFsXG4nCisgICAgICAgICAgICAgICAgICcgICBhcmd1bWVudC4gIElmIGEga2V5IGJlaW5nIGFkZGVkIGlzIGFscmVhZHkgcHJlc2VudCwgdGhlICcKKyAgICAgICAgICAgICAgICAgJ3ZhbHVlIGZyb21cbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoZSBrZXl3b3JkIGFyZ3VtZW50IHJlcGxhY2VzIHRoZSB2YWx1ZSBmcm9tIHRoZSAnCisgICAgICAgICAgICAgICAgICdwb3NpdGlvbmFsXG4nCisgICAgICAgICAgICAgICAgICcgICBhcmd1bWVudC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVG8gaWxsdXN0cmF0ZSwgdGhlIGZvbGxvd2luZyBleGFtcGxlcyBhbGwgcmV0dXJuIGEgJworICAgICAgICAgICAgICAgICAnZGljdGlvbmFyeSBlcXVhbFxuJworICAgICAgICAgICAgICAgICAnICAgdG8gInsib25lIjogMSwgInR3byI6IDIsICJ0aHJlZSI6IDN9IjpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgPj4+IGEgPSBkaWN0KG9uZT0xLCB0d289MiwgdGhyZWU9MylcbicKKyAgICAgICAgICAgICAgICAgIiAgICAgID4+PiBiID0geydvbmUnOiAxLCAndHdvJzogMiwgJ3RocmVlJzogM31cbiIKKyAgICAgICAgICAgICAgICAgIiAgICAgID4+PiBjID0gZGljdCh6aXAoWydvbmUnLCAndHdvJywgJ3RocmVlJ10sIFsxLCAyLCAzXSkpXG4iCisgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gZCA9IGRpY3QoWygndHdvJywgMiksICgnb25lJywgMSksICgndGhyZWUnLCAzKV0pXG4iCisgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gZSA9IGRpY3Qoeyd0aHJlZSc6IDMsICdvbmUnOiAxLCAndHdvJzogMn0pXG4iCisgICAgICAgICAgICAgICAgICcgICAgICA+Pj4gYSA9PSBiID09IGMgPT0gZCA9PSBlXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBUcnVlXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFByb3ZpZGluZyBrZXl3b3JkIGFyZ3VtZW50cyBhcyBpbiB0aGUgZmlyc3QgZXhhbXBsZSBvbmx5ICcKKyAgICAgICAgICAgICAgICAgJ3dvcmtzIGZvclxuJworICAgICAgICAgICAgICAgICAnICAga2V5cyB0aGF0IGFyZSB2YWxpZCBQeXRob24gaWRlbnRpZmllcnMuICBPdGhlcndpc2UsIGFueSAnCisgICAgICAgICAgICAgICAgICd2YWxpZCBrZXlzXG4nCisgICAgICAgICAgICAgICAgICcgICBjYW4gYmUgdXNlZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhlc2UgYXJlIHRoZSBvcGVyYXRpb25zIHRoYXQgZGljdGlvbmFyaWVzIHN1cHBvcnQgKGFuZCAnCisgICAgICAgICAgICAgICAgICd0aGVyZWZvcmUsXG4nCisgICAgICAgICAgICAgICAgICcgICBjdXN0b20gbWFwcGluZyB0eXBlcyBzaG91bGQgc3VwcG9ydCB0b28pOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBsZW4oZClcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIGRpY3Rpb25hcnkgKmQqLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBkW2tleV1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgUmV0dXJuIHRoZSBpdGVtIG9mICpkKiB3aXRoIGtleSAqa2V5Ki4gIFJhaXNlcyBhICcKKyAgICAgICAgICAgICAgICAgJyJLZXlFcnJvciIgaWZcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICprZXkqIGlzIG5vdCBpbiB0aGUgbWFwLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBJZiBhIHN1YmNsYXNzIG9mIGRpY3QgZGVmaW5lcyBhIG1ldGhvZCAiX19taXNzaW5nX18oKSIgJworICAgICAgICAgICAgICAgICAnYW5kICprZXkqXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBpcyBub3QgcHJlc2VudCwgdGhlICJkW2tleV0iIG9wZXJhdGlvbiBjYWxscyB0aGF0ICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZCB3aXRoXG4nCisgICAgICAgICAgICAgICAgICcgICAgICB0aGUga2V5ICprZXkqIGFzIGFyZ3VtZW50LiAgVGhlICJkW2tleV0iIG9wZXJhdGlvbiAnCisgICAgICAgICAgICAgICAgICd0aGVuIHJldHVybnNcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIG9yIHJhaXNlcyB3aGF0ZXZlciBpcyByZXR1cm5lZCBvciByYWlzZWQgYnkgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAiX19taXNzaW5nX18oa2V5KSIgY2FsbC4gTm8gb3RoZXIgb3BlcmF0aW9ucyBvciAnCisgICAgICAgICAgICAgICAgICdtZXRob2RzIGludm9rZVxuJworICAgICAgICAgICAgICAgICAnICAgICAgIl9fbWlzc2luZ19fKCkiLiBJZiAiX19taXNzaW5nX18oKSIgaXMgbm90IGRlZmluZWQsICcKKyAgICAgICAgICAgICAgICAgJyJLZXlFcnJvciJcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGlzIHJhaXNlZC4gIl9fbWlzc2luZ19fKCkiIG11c3QgYmUgYSBtZXRob2Q7IGl0IGNhbm5vdCAnCisgICAgICAgICAgICAgICAgICdiZSBhblxuJworICAgICAgICAgICAgICAgICAnICAgICAgaW5zdGFuY2UgdmFyaWFibGU6XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICAgID4+PiBjbGFzcyBDb3VudGVyKGRpY3QpOlxuJworICAgICAgICAgICAgICAgICAnICAgICAgICAgLi4uICAgICBkZWYgX19taXNzaW5nX18oc2VsZiwga2V5KTpcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICAgIC4uLiAgICAgICAgIHJldHVybiAwXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgICA+Pj4gYyA9IENvdW50ZXIoKVxuJworICAgICAgICAgICAgICAgICAiICAgICAgICAgPj4+IGNbJ3JlZCddXG4iCisgICAgICAgICAgICAgICAgICcgICAgICAgICAwXG4nCisgICAgICAgICAgICAgICAgICIgICAgICAgICA+Pj4gY1sncmVkJ10gKz0gMVxuIgorICAgICAgICAgICAgICAgICAiICAgICAgICAgPj4+IGNbJ3JlZCddXG4iCisgICAgICAgICAgICAgICAgICcgICAgICAgICAxXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFRoZSBleGFtcGxlIGFib3ZlIHNob3dzIHBhcnQgb2YgdGhlIGltcGxlbWVudGF0aW9uIG9mXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAiY29sbGVjdGlvbnMuQ291bnRlciIuICBBIGRpZmZlcmVudCAiX19taXNzaW5nX18iICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZCBpcyB1c2VkXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBieSAiY29sbGVjdGlvbnMuZGVmYXVsdGRpY3QiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBkW2tleV0gPSB2YWx1ZVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBTZXQgImRba2V5XSIgdG8gKnZhbHVlKi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgZGVsIGRba2V5XVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBSZW1vdmUgImRba2V5XSIgZnJvbSAqZCouICBSYWlzZXMgYSAiS2V5RXJyb3IiIGlmICcKKyAgICAgICAgICAgICAgICAgJyprZXkqIGlzIG5vdFxuJworICAgICAgICAgICAgICAgICAnICAgICAgaW4gdGhlIG1hcC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAga2V5IGluIGRcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgUmV0dXJuICJUcnVlIiBpZiAqZCogaGFzIGEga2V5ICprZXkqLCBlbHNlICJGYWxzZSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGtleSBub3QgaW4gZFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBFcXVpdmFsZW50IHRvICJub3Qga2V5IGluIGQiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBpdGVyKGQpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFJldHVybiBhbiBpdGVyYXRvciBvdmVyIHRoZSBrZXlzIG9mIHRoZSBkaWN0aW9uYXJ5LiAgJworICAgICAgICAgICAgICAgICAnVGhpcyBpcyBhXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBzaG9ydGN1dCBmb3IgIml0ZXIoZC5rZXlzKCkpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgY2xlYXIoKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBSZW1vdmUgYWxsIGl0ZW1zIGZyb20gdGhlIGRpY3Rpb25hcnkuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNvcHkoKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBSZXR1cm4gYSBzaGFsbG93IGNvcHkgb2YgdGhlIGRpY3Rpb25hcnkuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNsYXNzbWV0aG9kIGZyb21rZXlzKHNlcVssIHZhbHVlXSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgQ3JlYXRlIGEgbmV3IGRpY3Rpb25hcnkgd2l0aCBrZXlzIGZyb20gKnNlcSogYW5kICcKKyAgICAgICAgICAgICAgICAgJ3ZhbHVlcyBzZXQgdG9cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICp2YWx1ZSouXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICJmcm9ta2V5cygpIiBpcyBhIGNsYXNzIG1ldGhvZCB0aGF0IHJldHVybnMgYSBuZXcgJworICAgICAgICAgICAgICAgICAnZGljdGlvbmFyeS5cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICp2YWx1ZSogZGVmYXVsdHMgdG8gIk5vbmUiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBnZXQoa2V5WywgZGVmYXVsdF0pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFJldHVybiB0aGUgdmFsdWUgZm9yICprZXkqIGlmICprZXkqIGlzIGluIHRoZSAnCisgICAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5LCBlbHNlXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAqZGVmYXVsdCouIElmICpkZWZhdWx0KiBpcyBub3QgZ2l2ZW4sIGl0IGRlZmF1bHRzIHRvICcKKyAgICAgICAgICAgICAgICAgJyJOb25lIiwgc29cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIHRoYXQgdGhpcyBtZXRob2QgbmV2ZXIgcmFpc2VzIGEgIktleUVycm9yIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgaXRlbXMoKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgZGljdGlvbmFyeVwncyBpdGVtcyAoIihrZXksICcKKyAgICAgICAgICAgICAgICAgJ3ZhbHVlKSJcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIHBhaXJzKS4gU2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIHZpZXcgb2JqZWN0cy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAga2V5cygpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgIiAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSBkaWN0aW9uYXJ5J3Mga2V5cy4gIFNlZSB0aGVcbiIKKyAgICAgICAgICAgICAgICAgJyAgICAgIGRvY3VtZW50YXRpb24gb2YgdmlldyBvYmplY3RzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBwb3Aoa2V5WywgZGVmYXVsdF0pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIElmICprZXkqIGlzIGluIHRoZSBkaWN0aW9uYXJ5LCByZW1vdmUgaXQgYW5kIHJldHVybiAnCisgICAgICAgICAgICAgICAgICdpdHMgdmFsdWUsXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBlbHNlIHJldHVybiAqZGVmYXVsdCouICBJZiAqZGVmYXVsdCogaXMgbm90IGdpdmVuIGFuZCAnCisgICAgICAgICAgICAgICAgICcqa2V5KiBpc1xuJworICAgICAgICAgICAgICAgICAnICAgICAgbm90IGluIHRoZSBkaWN0aW9uYXJ5LCBhICJLZXlFcnJvciIgaXMgcmFpc2VkLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBwb3BpdGVtKClcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgUmVtb3ZlIGFuZCByZXR1cm4gYW4gYXJiaXRyYXJ5ICIoa2V5LCB2YWx1ZSkiIHBhaXIgJworICAgICAgICAgICAgICAgICAnZnJvbSB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGRpY3Rpb25hcnkuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICJwb3BpdGVtKCkiIGlzIHVzZWZ1bCB0byBkZXN0cnVjdGl2ZWx5IGl0ZXJhdGUgb3ZlciBhXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBkaWN0aW9uYXJ5LCBhcyBvZnRlbiB1c2VkIGluIHNldCBhbGdvcml0aG1zLiAgSWYgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2RpY3Rpb25hcnlcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGlzIGVtcHR5LCBjYWxsaW5nICJwb3BpdGVtKCkiIHJhaXNlcyBhICJLZXlFcnJvciIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIHNldGRlZmF1bHQoa2V5WywgZGVmYXVsdF0pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIElmICprZXkqIGlzIGluIHRoZSBkaWN0aW9uYXJ5LCByZXR1cm4gaXRzIHZhbHVlLiAgSWYgJworICAgICAgICAgICAgICAgICAnbm90LCBpbnNlcnRcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICprZXkqIHdpdGggYSB2YWx1ZSBvZiAqZGVmYXVsdCogYW5kIHJldHVybiAqZGVmYXVsdCouICAnCisgICAgICAgICAgICAgICAgICcqZGVmYXVsdCpcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGRlZmF1bHRzIHRvICJOb25lIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgdXBkYXRlKFtvdGhlcl0pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFVwZGF0ZSB0aGUgZGljdGlvbmFyeSB3aXRoIHRoZSBrZXkvdmFsdWUgcGFpcnMgZnJvbSAnCisgICAgICAgICAgICAgICAgICcqb3RoZXIqLFxuJworICAgICAgICAgICAgICAgICAnICAgICAgb3ZlcndyaXRpbmcgZXhpc3Rpbmcga2V5cy4gIFJldHVybiAiTm9uZSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICJ1cGRhdGUoKSIgYWNjZXB0cyBlaXRoZXIgYW5vdGhlciBkaWN0aW9uYXJ5IG9iamVjdCBvciAnCisgICAgICAgICAgICAgICAgICdhblxuJworICAgICAgICAgICAgICAgICAnICAgICAgaXRlcmFibGUgb2Yga2V5L3ZhbHVlIHBhaXJzIChhcyB0dXBsZXMgb3Igb3RoZXIgJworICAgICAgICAgICAgICAgICAnaXRlcmFibGVzIG9mXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBsZW5ndGggdHdvKS4gIElmIGtleXdvcmQgYXJndW1lbnRzIGFyZSBzcGVjaWZpZWQsIHRoZSAnCisgICAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5XG4nCisgICAgICAgICAgICAgICAgICcgICAgICBpcyB0aGVuIHVwZGF0ZWQgd2l0aCB0aG9zZSBrZXkvdmFsdWUgcGFpcnM6ICcKKyAgICAgICAgICAgICAgICAgJyJkLnVwZGF0ZShyZWQ9MSxcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGJsdWU9MikiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICB2YWx1ZXMoKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICIgICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgZGljdGlvbmFyeSdzIHZhbHVlcy4gIFNlZSAiCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGRvY3VtZW50YXRpb24gb2YgdmlldyBvYmplY3RzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBEaWN0aW9uYXJpZXMgY29tcGFyZSBlcXVhbCBpZiBhbmQgb25seSBpZiB0aGV5IGhhdmUgdGhlICcKKyAgICAgICAgICAgICAgICAgJ3NhbWUgIihrZXksXG4nCisgICAgICAgICAgICAgICAgICcgICB2YWx1ZSkiIHBhaXJzLiBPcmRlciBjb21wYXJpc29ucyAoXCc8XCcsIFwnPD1cJywgXCc+PVwnLCAnCisgICAgICAgICAgICAgICAgICInPicpIHJhaXNlXG4iCisgICAgICAgICAgICAgICAgICcgICAiVHlwZUVycm9yIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnU2VlIGFsc286ICJ0eXBlcy5NYXBwaW5nUHJveHlUeXBlIiBjYW4gYmUgdXNlZCB0byBjcmVhdGUgYSAnCisgICAgICAgICAgICAgICAgICdyZWFkLW9ubHlcbicKKyAgICAgICAgICAgICAgICAgJyAgdmlldyBvZiBhICJkaWN0Ii5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdEaWN0aW9uYXJ5IHZpZXcgb2JqZWN0c1xuJworICAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIG9iamVjdHMgcmV0dXJuZWQgYnkgImRpY3Qua2V5cygpIiwgImRpY3QudmFsdWVzKCkiIGFuZFxuJworICAgICAgICAgICAgICAgICAnImRpY3QuaXRlbXMoKSIgYXJlICp2aWV3IG9iamVjdHMqLiAgVGhleSBwcm92aWRlIGEgZHluYW1pYyAnCisgICAgICAgICAgICAgICAgICd2aWV3IG9uIHRoZVxuJworICAgICAgICAgICAgICAgICAiZGljdGlvbmFyeSdzIGVudHJpZXMsIHdoaWNoIG1lYW5zIHRoYXQgd2hlbiB0aGUgZGljdGlvbmFyeSAiCisgICAgICAgICAgICAgICAgICdjaGFuZ2VzLFxuJworICAgICAgICAgICAgICAgICAndGhlIHZpZXcgcmVmbGVjdHMgdGhlc2UgY2hhbmdlcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnRGljdGlvbmFyeSB2aWV3cyBjYW4gYmUgaXRlcmF0ZWQgb3ZlciB0byB5aWVsZCB0aGVpciAnCisgICAgICAgICAgICAgICAgICdyZXNwZWN0aXZlIGRhdGEsXG4nCisgICAgICAgICAgICAgICAgICdhbmQgc3VwcG9ydCBtZW1iZXJzaGlwIHRlc3RzOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdsZW4oZGljdHZpZXcpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0aGUgbnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIGRpY3Rpb25hcnkuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ2l0ZXIoZGljdHZpZXcpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhbiBpdGVyYXRvciBvdmVyIHRoZSBrZXlzLCB2YWx1ZXMgb3IgaXRlbXMgJworICAgICAgICAgICAgICAgICAnKHJlcHJlc2VudGVkIGFzXG4nCisgICAgICAgICAgICAgICAgICcgICB0dXBsZXMgb2YgIihrZXksIHZhbHVlKSIpIGluIHRoZSBkaWN0aW9uYXJ5LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBLZXlzIGFuZCB2YWx1ZXMgYXJlIGl0ZXJhdGVkIG92ZXIgaW4gYW4gYXJiaXRyYXJ5IG9yZGVyICcKKyAgICAgICAgICAgICAgICAgJ3doaWNoIGlzXG4nCisgICAgICAgICAgICAgICAgICcgICBub24tcmFuZG9tLCB2YXJpZXMgYWNyb3NzIFB5dGhvbiBpbXBsZW1lbnRhdGlvbnMsIGFuZCAnCisgICAgICAgICAgICAgICAgICdkZXBlbmRzIG9uXG4nCisgICAgICAgICAgICAgICAgICIgICB0aGUgZGljdGlvbmFyeSdzIGhpc3Rvcnkgb2YgaW5zZXJ0aW9ucyBhbmQgZGVsZXRpb25zLiBJZiAiCisgICAgICAgICAgICAgICAgICdrZXlzLFxuJworICAgICAgICAgICAgICAgICAnICAgdmFsdWVzIGFuZCBpdGVtcyB2aWV3cyBhcmUgaXRlcmF0ZWQgb3ZlciB3aXRoIG5vICcKKyAgICAgICAgICAgICAgICAgJ2ludGVydmVuaW5nXG4nCisgICAgICAgICAgICAgICAgICcgICBtb2RpZmljYXRpb25zIHRvIHRoZSBkaWN0aW9uYXJ5LCB0aGUgb3JkZXIgb2YgaXRlbXMgd2lsbCAnCisgICAgICAgICAgICAgICAgICdkaXJlY3RseVxuJworICAgICAgICAgICAgICAgICAnICAgY29ycmVzcG9uZC4gIFRoaXMgYWxsb3dzIHRoZSBjcmVhdGlvbiBvZiAiKHZhbHVlLCBrZXkpIiAnCisgICAgICAgICAgICAgICAgICdwYWlycyB1c2luZ1xuJworICAgICAgICAgICAgICAgICAnICAgInppcCgpIjogInBhaXJzID0gemlwKGQudmFsdWVzKCksIGQua2V5cygpKSIuICBBbm90aGVyICcKKyAgICAgICAgICAgICAgICAgJ3dheSB0b1xuJworICAgICAgICAgICAgICAgICAnICAgY3JlYXRlIHRoZSBzYW1lIGxpc3QgaXMgInBhaXJzID0gWyh2LCBrKSBmb3IgKGssIHYpIGluICcKKyAgICAgICAgICAgICAgICAgJ2QuaXRlbXMoKV0iLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBJdGVyYXRpbmcgdmlld3Mgd2hpbGUgYWRkaW5nIG9yIGRlbGV0aW5nIGVudHJpZXMgaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgJ2RpY3Rpb25hcnlcbicKKyAgICAgICAgICAgICAgICAgJyAgIG1heSByYWlzZSBhICJSdW50aW1lRXJyb3IiIG9yIGZhaWwgdG8gaXRlcmF0ZSBvdmVyIGFsbCAnCisgICAgICAgICAgICAgICAgICdlbnRyaWVzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICd4IGluIGRpY3R2aWV3XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFJldHVybiAiVHJ1ZSIgaWYgKngqIGlzIGluIHRoZSB1bmRlcmx5aW5nIGRpY3Rpb25hcnlcJ3MgJworICAgICAgICAgICAgICAgICAna2V5cywgdmFsdWVzXG4nCisgICAgICAgICAgICAgICAgICcgICBvciBpdGVtcyAoaW4gdGhlIGxhdHRlciBjYXNlLCAqeCogc2hvdWxkIGJlIGEgIihrZXksICcKKyAgICAgICAgICAgICAgICAgJ3ZhbHVlKSJcbicKKyAgICAgICAgICAgICAgICAgJyAgIHR1cGxlKS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnS2V5cyB2aWV3cyBhcmUgc2V0LWxpa2Ugc2luY2UgdGhlaXIgZW50cmllcyBhcmUgdW5pcXVlIGFuZCAnCisgICAgICAgICAgICAgICAgICdoYXNoYWJsZS5cbicKKyAgICAgICAgICAgICAgICAgJ0lmIGFsbCB2YWx1ZXMgYXJlIGhhc2hhYmxlLCBzbyB0aGF0ICIoa2V5LCB2YWx1ZSkiIHBhaXJzIGFyZSAnCisgICAgICAgICAgICAgICAgICd1bmlxdWVcbicKKyAgICAgICAgICAgICAgICAgJ2FuZCBoYXNoYWJsZSwgdGhlbiB0aGUgaXRlbXMgdmlldyBpcyBhbHNvIHNldC1saWtlLiAgKFZhbHVlcyAnCisgICAgICAgICAgICAgICAgICd2aWV3cyBhcmVcbicKKyAgICAgICAgICAgICAgICAgJ25vdCB0cmVhdGVkIGFzIHNldC1saWtlIHNpbmNlIHRoZSBlbnRyaWVzIGFyZSBnZW5lcmFsbHkgbm90ICcKKyAgICAgICAgICAgICAgICAgJ3VuaXF1ZS4pXG4nCisgICAgICAgICAgICAgICAgICdGb3Igc2V0LWxpa2Ugdmlld3MsIGFsbCBvZiB0aGUgb3BlcmF0aW9ucyBkZWZpbmVkIGZvciB0aGUgJworICAgICAgICAgICAgICAgICAnYWJzdHJhY3RcbicKKyAgICAgICAgICAgICAgICAgJ2Jhc2UgY2xhc3MgImNvbGxlY3Rpb25zLmFiYy5TZXQiIGFyZSBhdmFpbGFibGUgKGZvciBleGFtcGxlLCAnCisgICAgICAgICAgICAgICAgICciPT0iLFxuJworICAgICAgICAgICAgICAgICAnIjwiLCBvciAiXiIpLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdBbiBleGFtcGxlIG9mIGRpY3Rpb25hcnkgdmlldyB1c2FnZTpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAiICAgPj4+IGRpc2hlcyA9IHsnZWdncyc6IDIsICdzYXVzYWdlJzogMSwgJ2JhY29uJzogMSwgIgorICAgICAgICAgICAgICAgICAiJ3NwYW0nOiA1MDB9XG4iCisgICAgICAgICAgICAgICAgICcgICA+Pj4ga2V5cyA9IGRpc2hlcy5rZXlzKClcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiB2YWx1ZXMgPSBkaXNoZXMudmFsdWVzKClcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgPj4+ICMgaXRlcmF0aW9uXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gbiA9IDBcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBmb3IgdmFsIGluIHZhbHVlczpcbicKKyAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgbiArPSB2YWxcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBwcmludChuKVxuJworICAgICAgICAgICAgICAgICAnICAgNTA0XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiAjIGtleXMgYW5kIHZhbHVlcyBhcmUgaXRlcmF0ZWQgb3ZlciBpbiB0aGUgc2FtZSAnCisgICAgICAgICAgICAgICAgICdvcmRlclxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IGxpc3Qoa2V5cylcbicKKyAgICAgICAgICAgICAgICAgIiAgIFsnZWdncycsICdiYWNvbicsICdzYXVzYWdlJywgJ3NwYW0nXVxuIgorICAgICAgICAgICAgICAgICAnICAgPj4+IGxpc3QodmFsdWVzKVxuJworICAgICAgICAgICAgICAgICAnICAgWzIsIDEsIDEsIDUwMF1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgPj4+ICMgdmlldyBvYmplY3RzIGFyZSBkeW5hbWljIGFuZCByZWZsZWN0IGRpY3QgY2hhbmdlc1xuJworICAgICAgICAgICAgICAgICAiICAgPj4+IGRlbCBkaXNoZXNbJ2VnZ3MnXVxuIgorICAgICAgICAgICAgICAgICAiICAgPj4+IGRlbCBkaXNoZXNbJ3NhdXNhZ2UnXVxuIgorICAgICAgICAgICAgICAgICAnICAgPj4+IGxpc3Qoa2V5cylcbicKKyAgICAgICAgICAgICAgICAgIiAgIFsnc3BhbScsICdiYWNvbiddXG4iCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiAjIHNldCBvcGVyYXRpb25zXG4nCisgICAgICAgICAgICAgICAgICIgICA+Pj4ga2V5cyAmIHsnZWdncycsICdiYWNvbicsICdzYWxhZCd9XG4iCisgICAgICAgICAgICAgICAgICIgICB7J2JhY29uJ31cbiIKKyAgICAgICAgICAgICAgICAgIiAgID4+PiBrZXlzIF4geydzYXVzYWdlJywgJ2p1aWNlJ31cbiIKKyAgICAgICAgICAgICAgICAgIiAgIHsnanVpY2UnLCAnc2F1c2FnZScsICdiYWNvbicsICdzcGFtJ31cbiIsCisgJ3R5cGVzbWV0aG9kcyc6ICdcbicKKyAgICAgICAgICAgICAgICAgJ01ldGhvZHNcbicKKyAgICAgICAgICAgICAgICAgJyoqKioqKipcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnTWV0aG9kcyBhcmUgZnVuY3Rpb25zIHRoYXQgYXJlIGNhbGxlZCB1c2luZyB0aGUgYXR0cmlidXRlICcKKyAgICAgICAgICAgICAgICAgJ25vdGF0aW9uLlxuJworICAgICAgICAgICAgICAgICAnVGhlcmUgYXJlIHR3byBmbGF2b3JzOiBidWlsdC1pbiBtZXRob2RzIChzdWNoIGFzICJhcHBlbmQoKSIgJworICAgICAgICAgICAgICAgICAnb24gbGlzdHMpXG4nCisgICAgICAgICAgICAgICAgICdhbmQgY2xhc3MgaW5zdGFuY2UgbWV0aG9kcy4gIEJ1aWx0LWluIG1ldGhvZHMgYXJlIGRlc2NyaWJlZCAnCisgICAgICAgICAgICAgICAgICd3aXRoIHRoZVxuJworICAgICAgICAgICAgICAgICAndHlwZXMgdGhhdCBzdXBwb3J0IHRoZW0uXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0lmIHlvdSBhY2Nlc3MgYSBtZXRob2QgKGEgZnVuY3Rpb24gZGVmaW5lZCBpbiBhIGNsYXNzICcKKyAgICAgICAgICAgICAgICAgJ25hbWVzcGFjZSlcbicKKyAgICAgICAgICAgICAgICAgJ3Rocm91Z2ggYW4gaW5zdGFuY2UsIHlvdSBnZXQgYSBzcGVjaWFsIG9iamVjdDogYSAqYm91bmQgJworICAgICAgICAgICAgICAgICAnbWV0aG9kKiAoYWxzb1xuJworICAgICAgICAgICAgICAgICAnY2FsbGVkICppbnN0YW5jZSBtZXRob2QqKSBvYmplY3QuIFdoZW4gY2FsbGVkLCBpdCB3aWxsIGFkZCAnCisgICAgICAgICAgICAgICAgICd0aGUgInNlbGYiXG4nCisgICAgICAgICAgICAgICAgICdhcmd1bWVudCB0byB0aGUgYXJndW1lbnQgbGlzdC4gIEJvdW5kIG1ldGhvZHMgaGF2ZSB0d28gJworICAgICAgICAgICAgICAgICAnc3BlY2lhbCByZWFkLVxuJworICAgICAgICAgICAgICAgICAnb25seSBhdHRyaWJ1dGVzOiAibS5fX3NlbGZfXyIgaXMgdGhlIG9iamVjdCBvbiB3aGljaCB0aGUgJworICAgICAgICAgICAgICAgICAnbWV0aG9kXG4nCisgICAgICAgICAgICAgICAgICdvcGVyYXRlcywgYW5kICJtLl9fZnVuY19fIiBpcyB0aGUgZnVuY3Rpb24gaW1wbGVtZW50aW5nIHRoZSAnCisgICAgICAgICAgICAgICAgICdtZXRob2QuXG4nCisgICAgICAgICAgICAgICAgICdDYWxsaW5nICJtKGFyZy0xLCBhcmctMiwgLi4uLCBhcmctbikiIGlzIGNvbXBsZXRlbHkgJworICAgICAgICAgICAgICAgICAnZXF1aXZhbGVudCB0b1xuJworICAgICAgICAgICAgICAgICAnY2FsbGluZyAibS5fX2Z1bmNfXyhtLl9fc2VsZl9fLCBhcmctMSwgYXJnLTIsIC4uLiwgYXJnLW4pIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnTGlrZSBmdW5jdGlvbiBvYmplY3RzLCBib3VuZCBtZXRob2Qgb2JqZWN0cyBzdXBwb3J0IGdldHRpbmcgJworICAgICAgICAgICAgICAgICAnYXJiaXRyYXJ5XG4nCisgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGVzLiAgSG93ZXZlciwgc2luY2UgbWV0aG9kIGF0dHJpYnV0ZXMgYXJlIGFjdHVhbGx5ICcKKyAgICAgICAgICAgICAgICAgJ3N0b3JlZCBvblxuJworICAgICAgICAgICAgICAgICAndGhlIHVuZGVybHlpbmcgZnVuY3Rpb24gb2JqZWN0ICgibWV0aC5fX2Z1bmNfXyIpLCBzZXR0aW5nICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZFxuJworICAgICAgICAgICAgICAgICAnYXR0cmlidXRlcyBvbiBib3VuZCBtZXRob2RzIGlzIGRpc2FsbG93ZWQuICBBdHRlbXB0aW5nIHRvICcKKyAgICAgICAgICAgICAgICAgJ3NldCBhblxuJworICAgICAgICAgICAgICAgICAnYXR0cmlidXRlIG9uIGEgbWV0aG9kIHJlc3VsdHMgaW4gYW4gIkF0dHJpYnV0ZUVycm9yIiBiZWluZyAnCisgICAgICAgICAgICAgICAgICdyYWlzZWQuICBJblxuJworICAgICAgICAgICAgICAgICAnb3JkZXIgdG8gc2V0IGEgbWV0aG9kIGF0dHJpYnV0ZSwgeW91IG5lZWQgdG8gZXhwbGljaXRseSBzZXQgJworICAgICAgICAgICAgICAgICAnaXQgb24gdGhlXG4nCisgICAgICAgICAgICAgICAgICd1bmRlcmx5aW5nIGZ1bmN0aW9uIG9iamVjdDpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgPj4+IGNsYXNzIEM6XG4nCisgICAgICAgICAgICAgICAgICcgICAuLi4gICAgIGRlZiBtZXRob2Qoc2VsZik6XG4nCisgICAgICAgICAgICAgICAgICcgICAuLi4gICAgICAgICBwYXNzXG4nCisgICAgICAgICAgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBjID0gQygpXG4nCisgICAgICAgICAgICAgICAgICIgICA+Pj4gYy5tZXRob2Qud2hvYW1pID0gJ215IG5hbWUgaXMgbWV0aG9kJyAgIyBjYW4ndCBzZXQgb24gIgorICAgICAgICAgICAgICAgICAndGhlIG1ldGhvZFxuJworICAgICAgICAgICAgICAgICAnICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuJworICAgICAgICAgICAgICAgICAnICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPlxuJworICAgICAgICAgICAgICAgICAiICAgQXR0cmlidXRlRXJyb3I6ICdtZXRob2QnIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICIKKyAgICAgICAgICAgICAgICAgIid3aG9hbWknXG4iCisgICAgICAgICAgICAgICAgICIgICA+Pj4gYy5tZXRob2QuX19mdW5jX18ud2hvYW1pID0gJ215IG5hbWUgaXMgbWV0aG9kJ1xuIgorICAgICAgICAgICAgICAgICAnICAgPj4+IGMubWV0aG9kLndob2FtaVxuJworICAgICAgICAgICAgICAgICAiICAgJ215IG5hbWUgaXMgbWV0aG9kJ1xuIgorICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdTZWUgVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5IGZvciBtb3JlIGluZm9ybWF0aW9uLlxuJywKKyAndHlwZXNtb2R1bGVzJzogJ1xuJworICAgICAgICAgICAgICAgICAnTW9kdWxlc1xuJworICAgICAgICAgICAgICAgICAnKioqKioqKlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgb25seSBzcGVjaWFsIG9wZXJhdGlvbiBvbiBhIG1vZHVsZSBpcyBhdHRyaWJ1dGUgYWNjZXNzOiAnCisgICAgICAgICAgICAgICAgICcibS5uYW1lIixcbicKKyAgICAgICAgICAgICAgICAgJ3doZXJlICptKiBpcyBhIG1vZHVsZSBhbmQgKm5hbWUqIGFjY2Vzc2VzIGEgbmFtZSBkZWZpbmVkIGluICcKKyAgICAgICAgICAgICAgICAgIiptKidzXG4iCisgICAgICAgICAgICAgICAgICdzeW1ib2wgdGFibGUuIE1vZHVsZSBhdHRyaWJ1dGVzIGNhbiBiZSBhc3NpZ25lZCB0by4gIChOb3RlICcKKyAgICAgICAgICAgICAgICAgJ3RoYXQgdGhlXG4nCisgICAgICAgICAgICAgICAgICciaW1wb3J0IiBzdGF0ZW1lbnQgaXMgbm90LCBzdHJpY3RseSBzcGVha2luZywgYW4gb3BlcmF0aW9uICcKKyAgICAgICAgICAgICAgICAgJ29uIGEgbW9kdWxlXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3Q7ICJpbXBvcnQgZm9vIiBkb2VzIG5vdCByZXF1aXJlIGEgbW9kdWxlIG9iamVjdCBuYW1lZCAnCisgICAgICAgICAgICAgICAgICcqZm9vKiB0b1xuJworICAgICAgICAgICAgICAgICAnZXhpc3QsIHJhdGhlciBpdCByZXF1aXJlcyBhbiAoZXh0ZXJuYWwpICpkZWZpbml0aW9uKiBmb3IgYSAnCisgICAgICAgICAgICAgICAgICdtb2R1bGVcbicKKyAgICAgICAgICAgICAgICAgJ25hbWVkICpmb28qIHNvbWV3aGVyZS4pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0Egc3BlY2lhbCBhdHRyaWJ1dGUgb2YgZXZlcnkgbW9kdWxlIGlzICJfX2RpY3RfXyIuIFRoaXMgaXMgJworICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICJkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIG1vZHVsZSdzIHN5bWJvbCB0YWJsZS4gTW9kaWZ5aW5nICIKKyAgICAgICAgICAgICAgICAgJ3RoaXNcbicKKyAgICAgICAgICAgICAgICAgImRpY3Rpb25hcnkgd2lsbCBhY3R1YWxseSBjaGFuZ2UgdGhlIG1vZHVsZSdzIHN5bWJvbCB0YWJsZSwgIgorICAgICAgICAgICAgICAgICAnYnV0IGRpcmVjdFxuJworICAgICAgICAgICAgICAgICAnYXNzaWdubWVudCB0byB0aGUgIl9fZGljdF9fIiBhdHRyaWJ1dGUgaXMgbm90IHBvc3NpYmxlICh5b3UgJworICAgICAgICAgICAgICAgICAnY2FuIHdyaXRlXG4nCisgICAgICAgICAgICAgICAgICcibS5fX2RpY3RfX1tcJ2FcJ10gPSAxIiwgd2hpY2ggZGVmaW5lcyAibS5hIiB0byBiZSAiMSIsIGJ1dCAnCisgICAgICAgICAgICAgICAgICJ5b3UgY2FuJ3RcbiIKKyAgICAgICAgICAgICAgICAgJ3dyaXRlICJtLl9fZGljdF9fID0ge30iKS4gIE1vZGlmeWluZyAiX19kaWN0X18iIGRpcmVjdGx5IGlzICcKKyAgICAgICAgICAgICAgICAgJ25vdFxuJworICAgICAgICAgICAgICAgICAncmVjb21tZW5kZWQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ01vZHVsZXMgYnVpbHQgaW50byB0aGUgaW50ZXJwcmV0ZXIgYXJlIHdyaXR0ZW4gbGlrZSB0aGlzOiAnCisgICAgICAgICAgICAgICAgICciPG1vZHVsZVxuJworICAgICAgICAgICAgICAgICAnXCdzeXNcJyAoYnVpbHQtaW4pPiIuICBJZiBsb2FkZWQgZnJvbSBhIGZpbGUsIHRoZXkgYXJlICcKKyAgICAgICAgICAgICAgICAgJ3dyaXR0ZW4gYXNcbicKKyAgICAgICAgICAgICAgICAgJyI8bW9kdWxlIFwnb3NcJyBmcm9tICcKKyAgICAgICAgICAgICAgICAgJ1wnL3Vzci9sb2NhbC9saWIvcHl0aG9uWC5ZL29zLnB5Y1wnPiIuXG4nLAorICd0eXBlc3NlcSc6ICdcbicKKyAgICAgICAgICAgICAnU2VxdWVuY2UgVHlwZXMgLS0tICJsaXN0IiwgInR1cGxlIiwgInJhbmdlIlxuJworICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGVyZSBhcmUgdGhyZWUgYmFzaWMgc2VxdWVuY2UgdHlwZXM6IGxpc3RzLCB0dXBsZXMsIGFuZCByYW5nZVxuJworICAgICAgICAgICAgICdvYmplY3RzLiBBZGRpdGlvbmFsIHNlcXVlbmNlIHR5cGVzIHRhaWxvcmVkIGZvciBwcm9jZXNzaW5nIG9mICcKKyAgICAgICAgICAgICAnYmluYXJ5XG4nCisgICAgICAgICAgICAgJ2RhdGEgYW5kIHRleHQgc3RyaW5ncyBhcmUgZGVzY3JpYmVkIGluIGRlZGljYXRlZCBzZWN0aW9ucy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdDb21tb24gU2VxdWVuY2UgT3BlcmF0aW9uc1xuJworICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIG9wZXJhdGlvbnMgaW4gdGhlIGZvbGxvd2luZyB0YWJsZSBhcmUgc3VwcG9ydGVkIGJ5IG1vc3QgJworICAgICAgICAgICAgICdzZXF1ZW5jZVxuJworICAgICAgICAgICAgICd0eXBlcywgYm90aCBtdXRhYmxlIGFuZCBpbW11dGFibGUuIFRoZSAnCisgICAgICAgICAgICAgJyJjb2xsZWN0aW9ucy5hYmMuU2VxdWVuY2UiIEFCQ1xuJworICAgICAgICAgICAgICdpcyBwcm92aWRlZCB0byBtYWtlIGl0IGVhc2llciB0byBjb3JyZWN0bHkgaW1wbGVtZW50IHRoZXNlICcKKyAgICAgICAgICAgICAnb3BlcmF0aW9uc1xuJworICAgICAgICAgICAgICdvbiBjdXN0b20gc2VxdWVuY2UgdHlwZXMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGlzIHRhYmxlIGxpc3RzIHRoZSBzZXF1ZW5jZSBvcGVyYXRpb25zIHNvcnRlZCBpbiBhc2NlbmRpbmcgJworICAgICAgICAgICAgICdwcmlvcml0eS5cbicKKyAgICAgICAgICAgICAnSW4gdGhlIHRhYmxlLCAqcyogYW5kICp0KiBhcmUgc2VxdWVuY2VzIG9mIHRoZSBzYW1lIHR5cGUsICpuKiwgJworICAgICAgICAgICAgICcqaSosXG4nCisgICAgICAgICAgICAgJypqKiBhbmQgKmsqIGFyZSBpbnRlZ2VycyBhbmQgKngqIGlzIGFuIGFyYml0cmFyeSBvYmplY3QgdGhhdCAnCisgICAgICAgICAgICAgJ21lZXRzIGFueVxuJworICAgICAgICAgICAgICd0eXBlIGFuZCB2YWx1ZSByZXN0cmljdGlvbnMgaW1wb3NlZCBieSAqcyouXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgImluIiBhbmQgIm5vdCBpbiIgb3BlcmF0aW9ucyBoYXZlIHRoZSBzYW1lIHByaW9yaXRpZXMgYXMgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnY29tcGFyaXNvbiBvcGVyYXRpb25zLiBUaGUgIisiIChjb25jYXRlbmF0aW9uKSBhbmQgIioiICcKKyAgICAgICAgICAgICAnKHJlcGV0aXRpb24pXG4nCisgICAgICAgICAgICAgJ29wZXJhdGlvbnMgaGF2ZSB0aGUgc2FtZSBwcmlvcml0eSBhcyB0aGUgY29ycmVzcG9uZGluZyBudW1lcmljXG4nCisgICAgICAgICAgICAgJ29wZXJhdGlvbnMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCBPcGVyYXRpb24gICAgICAgICAgICAgICAgICB8IFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAnfCBOb3RlcyAgICAgIHxcbicKKyAgICAgICAgICAgICAnKz09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT0rXG4nCisgICAgICAgICAgICAgJ3wgInggaW4gcyIgICAgICAgICAgICAgICAgICAgfCAiVHJ1ZSIgaWYgYW4gaXRlbSBvZiAqcyogaXMgICAgICAnCisgICAgICAgICAgICAgJ3wgKDEpICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBlcXVhbCB0byAqeCosIGVsc2UgIkZhbHNlIiAgICAgICAnCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJ4IG5vdCBpbiBzIiAgICAgICAgICAgICAgIHwgIkZhbHNlIiBpZiBhbiBpdGVtIG9mICpzKiBpcyAgICAgJworICAgICAgICAgICAgICd8ICgxKSAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZXF1YWwgdG8gKngqLCBlbHNlICJUcnVlIiAgICAgICAgJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAicyArIHQiICAgICAgICAgICAgICAgICAgICB8IHRoZSBjb25jYXRlbmF0aW9uIG9mICpzKiBhbmQgKnQqICcKKyAgICAgICAgICAgICAnfCAoNikoNykgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInMgKiBuIiBvciAibiAqIHMiICAgICAgICAgfCBlcXVpdmFsZW50IHRvIGFkZGluZyAqcyogdG8gICAgICAnCisgICAgICAgICAgICAgJ3wgKDIpKDcpICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpdHNlbGYgKm4qIHRpbWVzICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzW2ldIiAgICAgICAgICAgICAgICAgICAgIHwgKmkqdGggaXRlbSBvZiAqcyosIG9yaWdpbiAwICAgICAgJworICAgICAgICAgICAgICd8ICgzKSAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAic1tpOmpdIiAgICAgICAgICAgICAgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogICAgICcKKyAgICAgICAgICAgICAnfCAoMykoNCkgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInNbaTpqOmtdIiAgICAgICAgICAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqICAgICAnCisgICAgICAgICAgICAgJ3wgKDMpKDUpICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3aXRoIHN0ZXAgKmsqICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJsZW4ocykiICAgICAgICAgICAgICAgICAgIHwgbGVuZ3RoIG9mICpzKiAgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAibWluKHMpIiAgICAgICAgICAgICAgICAgICB8IHNtYWxsZXN0IGl0ZW0gb2YgKnMqICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgIm1heChzKSIgICAgICAgICAgICAgICAgICAgfCBsYXJnZXN0IGl0ZW0gb2YgKnMqICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzLmluZGV4KHhbLCBpWywgal1dKSIgICAgIHwgaW5kZXggb2YgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgJworICAgICAgICAgICAgICd8ICg4KSAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKngqIGluICpzKiAoYXQgb3IgYWZ0ZXIgaW5kZXggICAgJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKmkqIGFuZCBiZWZvcmUgaW5kZXggKmoqKSAgICAgICAgJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAicy5jb3VudCh4KSIgICAgICAgICAgICAgICB8IHRvdGFsIG51bWJlciBvZiBvY2N1cnJlbmNlcyBvZiAgICcKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp4KiBpbiAqcyogICAgICAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdTZXF1ZW5jZXMgb2YgdGhlIHNhbWUgdHlwZSBhbHNvIHN1cHBvcnQgY29tcGFyaXNvbnMuICBJbiAnCisgICAgICAgICAgICAgJ3BhcnRpY3VsYXIsXG4nCisgICAgICAgICAgICAgJ3R1cGxlcyBhbmQgbGlzdHMgYXJlIGNvbXBhcmVkIGxleGljb2dyYXBoaWNhbGx5IGJ5IGNvbXBhcmluZ1xuJworICAgICAgICAgICAgICdjb3JyZXNwb25kaW5nIGVsZW1lbnRzLiBUaGlzIG1lYW5zIHRoYXQgdG8gY29tcGFyZSBlcXVhbCwgZXZlcnlcbicKKyAgICAgICAgICAgICAnZWxlbWVudCBtdXN0IGNvbXBhcmUgZXF1YWwgYW5kIHRoZSB0d28gc2VxdWVuY2VzIG11c3QgYmUgb2YgdGhlICcKKyAgICAgICAgICAgICAnc2FtZVxuJworICAgICAgICAgICAgICd0eXBlIGFuZCBoYXZlIHRoZSBzYW1lIGxlbmd0aC4gIChGb3IgZnVsbCBkZXRhaWxzIHNlZSAnCisgICAgICAgICAgICAgJ0NvbXBhcmlzb25zIGluXG4nCisgICAgICAgICAgICAgJ3RoZSBsYW5ndWFnZSByZWZlcmVuY2UuKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTm90ZXM6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcxLiBXaGlsZSB0aGUgImluIiBhbmQgIm5vdCBpbiIgb3BlcmF0aW9ucyBhcmUgdXNlZCBvbmx5IGZvciAnCisgICAgICAgICAgICAgJ3NpbXBsZVxuJworICAgICAgICAgICAgICcgICBjb250YWlubWVudCB0ZXN0aW5nIGluIHRoZSBnZW5lcmFsIGNhc2UsIHNvbWUgc3BlY2lhbGlzZWQgJworICAgICAgICAgICAgICdzZXF1ZW5jZXNcbicKKyAgICAgICAgICAgICAnICAgKHN1Y2ggYXMgInN0ciIsICJieXRlcyIgYW5kICJieXRlYXJyYXkiKSBhbHNvIHVzZSB0aGVtIGZvclxuJworICAgICAgICAgICAgICcgICBzdWJzZXF1ZW5jZSB0ZXN0aW5nOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgICAgPj4+ICJnZyIgaW4gImVnZ3MiXG4nCisgICAgICAgICAgICAgJyAgICAgIFRydWVcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzIuIFZhbHVlcyBvZiAqbiogbGVzcyB0aGFuICIwIiBhcmUgdHJlYXRlZCBhcyAiMCIgKHdoaWNoIHlpZWxkcyAnCisgICAgICAgICAgICAgJ2FuXG4nCisgICAgICAgICAgICAgJyAgIGVtcHR5IHNlcXVlbmNlIG9mIHRoZSBzYW1lIHR5cGUgYXMgKnMqKS4gIE5vdGUgdGhhdCBpdGVtcyBpbiAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcgICBzZXF1ZW5jZSAqcyogYXJlIG5vdCBjb3BpZWQ7IHRoZXkgYXJlIHJlZmVyZW5jZWQgbXVsdGlwbGUgJworICAgICAgICAgICAgICd0aW1lcy5cbicKKyAgICAgICAgICAgICAnICAgVGhpcyBvZnRlbiBoYXVudHMgbmV3IFB5dGhvbiBwcm9ncmFtbWVyczsgY29uc2lkZXI6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICA+Pj4gbGlzdHMgPSBbW11dICogM1xuJworICAgICAgICAgICAgICcgICAgICA+Pj4gbGlzdHNcbicKKyAgICAgICAgICAgICAnICAgICAgW1tdLCBbXSwgW11dXG4nCisgICAgICAgICAgICAgJyAgICAgID4+PiBsaXN0c1swXS5hcHBlbmQoMylcbicKKyAgICAgICAgICAgICAnICAgICAgPj4+IGxpc3RzXG4nCisgICAgICAgICAgICAgJyAgICAgIFtbM10sIFszXSwgWzNdXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgV2hhdCBoYXMgaGFwcGVuZWQgaXMgdGhhdCAiW1tdXSIgaXMgYSBvbmUtZWxlbWVudCBsaXN0ICcKKyAgICAgICAgICAgICAnY29udGFpbmluZ1xuJworICAgICAgICAgICAgICcgICBhbiBlbXB0eSBsaXN0LCBzbyBhbGwgdGhyZWUgZWxlbWVudHMgb2YgIltbXV0gKiAzIiBhcmUgJworICAgICAgICAgICAgICdyZWZlcmVuY2VzXG4nCisgICAgICAgICAgICAgJyAgIHRvIHRoaXMgc2luZ2xlIGVtcHR5IGxpc3QuICBNb2RpZnlpbmcgYW55IG9mIHRoZSBlbGVtZW50cyBvZlxuJworICAgICAgICAgICAgICcgICAibGlzdHMiIG1vZGlmaWVzIHRoaXMgc2luZ2xlIGxpc3QuIFlvdSBjYW4gY3JlYXRlIGEgbGlzdCBvZlxuJworICAgICAgICAgICAgICcgICBkaWZmZXJlbnQgbGlzdHMgdGhpcyB3YXk6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICA+Pj4gbGlzdHMgPSBbW10gZm9yIGkgaW4gcmFuZ2UoMyldXG4nCisgICAgICAgICAgICAgJyAgICAgID4+PiBsaXN0c1swXS5hcHBlbmQoMylcbicKKyAgICAgICAgICAgICAnICAgICAgPj4+IGxpc3RzWzFdLmFwcGVuZCg1KVxuJworICAgICAgICAgICAgICcgICAgICA+Pj4gbGlzdHNbMl0uYXBwZW5kKDcpXG4nCisgICAgICAgICAgICAgJyAgICAgID4+PiBsaXN0c1xuJworICAgICAgICAgICAgICcgICAgICBbWzNdLCBbNV0sIFs3XV1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEZ1cnRoZXIgZXhwbGFuYXRpb24gaXMgYXZhaWxhYmxlIGluIHRoZSBGQVEgZW50cnkgSG93IGRvIEkgJworICAgICAgICAgICAgICdjcmVhdGUgYVxuJworICAgICAgICAgICAgICcgICBtdWx0aWRpbWVuc2lvbmFsIGxpc3Q/LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnMy4gSWYgKmkqIG9yICpqKiBpcyBuZWdhdGl2ZSwgdGhlIGluZGV4IGlzIHJlbGF0aXZlIHRvIHRoZSBlbmQgJworICAgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAgICcgICB0aGUgc3RyaW5nOiAibGVuKHMpICsgaSIgb3IgImxlbihzKSArIGoiIGlzIHN1YnN0aXR1dGVkLiAgQnV0ICcKKyAgICAgICAgICAgICAnbm90ZVxuJworICAgICAgICAgICAgICcgICB0aGF0ICItMCIgaXMgc3RpbGwgIjAiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnNC4gVGhlIHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogaXMgZGVmaW5lZCBhcyB0aGUgc2VxdWVuY2UgJworICAgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAgICcgICBpdGVtcyB3aXRoIGluZGV4ICprKiBzdWNoIHRoYXQgImkgPD0gayA8IGoiLiAgSWYgKmkqIG9yICpqKiAnCisgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgJyAgIGdyZWF0ZXIgdGhhbiAibGVuKHMpIiwgdXNlICJsZW4ocykiLiAgSWYgKmkqIGlzIG9taXR0ZWQgb3IgJworICAgICAgICAgICAgICciTm9uZSIsXG4nCisgICAgICAgICAgICAgJyAgIHVzZSAiMCIuICBJZiAqaiogaXMgb21pdHRlZCBvciAiTm9uZSIsIHVzZSAibGVuKHMpIi4gIElmICppKiAnCisgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgJyAgIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAqaiosIHRoZSBzbGljZSBpcyBlbXB0eS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzUuIFRoZSBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqIHdpdGggc3RlcCAqayogaXMgZGVmaW5lZCBhcyAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcgICBzZXF1ZW5jZSBvZiBpdGVtcyB3aXRoIGluZGV4ICAieCA9IGkgKyBuKmsiIHN1Y2ggdGhhdCAiMCA8PSBuICcKKyAgICAgICAgICAgICAnPFxuJworICAgICAgICAgICAgICcgICAoai1pKS9rIi4gIEluIG90aGVyIHdvcmRzLCB0aGUgaW5kaWNlcyBhcmUgImkiLCAiaStrIiwgJworICAgICAgICAgICAgICciaSsyKmsiLFxuJworICAgICAgICAgICAgICcgICAiaSszKmsiIGFuZCBzbyBvbiwgc3RvcHBpbmcgd2hlbiAqaiogaXMgcmVhY2hlZCAoYnV0IG5ldmVyXG4nCisgICAgICAgICAgICAgJyAgIGluY2x1ZGluZyAqaiopLiAgSWYgKmkqIG9yICpqKiBpcyBncmVhdGVyIHRoYW4gImxlbihzKSIsIHVzZVxuJworICAgICAgICAgICAgICcgICAibGVuKHMpIi4gIElmICppKiBvciAqaiogYXJlIG9taXR0ZWQgb3IgIk5vbmUiLCB0aGV5IGJlY29tZSAnCisgICAgICAgICAgICAgJyJlbmQiXG4nCisgICAgICAgICAgICAgJyAgIHZhbHVlcyAod2hpY2ggZW5kIGRlcGVuZHMgb24gdGhlIHNpZ24gb2YgKmsqKS4gIE5vdGUsICprKiAnCisgICAgICAgICAgICAgJ2Nhbm5vdCBiZVxuJworICAgICAgICAgICAgICcgICB6ZXJvLiBJZiAqayogaXMgIk5vbmUiLCBpdCBpcyB0cmVhdGVkIGxpa2UgIjEiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnNi4gQ29uY2F0ZW5hdGluZyBpbW11dGFibGUgc2VxdWVuY2VzIGFsd2F5cyByZXN1bHRzIGluIGEgbmV3XG4nCisgICAgICAgICAgICAgJyAgIG9iamVjdC4gVGhpcyBtZWFucyB0aGF0IGJ1aWxkaW5nIHVwIGEgc2VxdWVuY2UgYnkgcmVwZWF0ZWRcbicKKyAgICAgICAgICAgICAnICAgY29uY2F0ZW5hdGlvbiB3aWxsIGhhdmUgYSBxdWFkcmF0aWMgcnVudGltZSBjb3N0IGluIHRoZSAnCisgICAgICAgICAgICAgJ3RvdGFsXG4nCisgICAgICAgICAgICAgJyAgIHNlcXVlbmNlIGxlbmd0aC4gVG8gZ2V0IGEgbGluZWFyIHJ1bnRpbWUgY29zdCwgeW91IG11c3QgJworICAgICAgICAgICAgICdzd2l0Y2ggdG9cbicKKyAgICAgICAgICAgICAnICAgb25lIG9mIHRoZSBhbHRlcm5hdGl2ZXMgYmVsb3c6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAqIGlmIGNvbmNhdGVuYXRpbmcgInN0ciIgb2JqZWN0cywgeW91IGNhbiBidWlsZCBhIGxpc3QgYW5kICcKKyAgICAgICAgICAgICAndXNlXG4nCisgICAgICAgICAgICAgJyAgICAgInN0ci5qb2luKCkiIGF0IHRoZSBlbmQgb3IgZWxzZSB3cml0ZSB0byBhbiAiaW8uU3RyaW5nSU8iXG4nCisgICAgICAgICAgICAgJyAgICAgaW5zdGFuY2UgYW5kIHJldHJpZXZlIGl0cyB2YWx1ZSB3aGVuIGNvbXBsZXRlXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAqIGlmIGNvbmNhdGVuYXRpbmcgImJ5dGVzIiBvYmplY3RzLCB5b3UgY2FuIHNpbWlsYXJseSB1c2VcbicKKyAgICAgICAgICAgICAnICAgICAiYnl0ZXMuam9pbigpIiBvciAiaW8uQnl0ZXNJTyIsIG9yIHlvdSBjYW4gZG8gaW4tcGxhY2VcbicKKyAgICAgICAgICAgICAnICAgICBjb25jYXRlbmF0aW9uIHdpdGggYSAiYnl0ZWFycmF5IiBvYmplY3QuICAiYnl0ZWFycmF5IiAnCisgICAgICAgICAgICAgJ29iamVjdHMgYXJlXG4nCisgICAgICAgICAgICAgJyAgICAgbXV0YWJsZSBhbmQgaGF2ZSBhbiBlZmZpY2llbnQgb3ZlcmFsbG9jYXRpb24gbWVjaGFuaXNtXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAqIGlmIGNvbmNhdGVuYXRpbmcgInR1cGxlIiBvYmplY3RzLCBleHRlbmQgYSAibGlzdCIgaW5zdGVhZFxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgKiBmb3Igb3RoZXIgdHlwZXMsIGludmVzdGlnYXRlIHRoZSByZWxldmFudCBjbGFzcyAnCisgICAgICAgICAgICAgJ2RvY3VtZW50YXRpb25cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzcuIFNvbWUgc2VxdWVuY2UgdHlwZXMgKHN1Y2ggYXMgInJhbmdlIikgb25seSBzdXBwb3J0IGl0ZW1cbicKKyAgICAgICAgICAgICAiICAgc2VxdWVuY2VzIHRoYXQgZm9sbG93IHNwZWNpZmljIHBhdHRlcm5zLCBhbmQgaGVuY2UgZG9uJ3QgIgorICAgICAgICAgICAgICdzdXBwb3J0XG4nCisgICAgICAgICAgICAgJyAgIHNlcXVlbmNlIGNvbmNhdGVuYXRpb24gb3IgcmVwZXRpdGlvbi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzguICJpbmRleCIgcmFpc2VzICJWYWx1ZUVycm9yIiB3aGVuICp4KiBpcyBub3QgZm91bmQgaW4gKnMqLiAnCisgICAgICAgICAgICAgJ1doZW5cbicKKyAgICAgICAgICAgICAnICAgc3VwcG9ydGVkLCB0aGUgYWRkaXRpb25hbCBhcmd1bWVudHMgdG8gdGhlIGluZGV4IG1ldGhvZCAnCisgICAgICAgICAgICAgJ2FsbG93XG4nCisgICAgICAgICAgICAgJyAgIGVmZmljaWVudCBzZWFyY2hpbmcgb2Ygc3Vic2VjdGlvbnMgb2YgdGhlIHNlcXVlbmNlLiBQYXNzaW5nICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyAgIGV4dHJhIGFyZ3VtZW50cyBpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG8gdXNpbmcgJworICAgICAgICAgICAgICcic1tpOmpdLmluZGV4KHgpIixcbicKKyAgICAgICAgICAgICAnICAgb25seSB3aXRob3V0IGNvcHlpbmcgYW55IGRhdGEgYW5kIHdpdGggdGhlIHJldHVybmVkIGluZGV4ICcKKyAgICAgICAgICAgICAnYmVpbmdcbicKKyAgICAgICAgICAgICAnICAgcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IG9mIHRoZSBzZXF1ZW5jZSByYXRoZXIgdGhhbiB0aGUgc3RhcnQgJworICAgICAgICAgICAgICdvZiB0aGVcbicKKyAgICAgICAgICAgICAnICAgc2xpY2UuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnSW1tdXRhYmxlIFNlcXVlbmNlIFR5cGVzXG4nCisgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIG9ubHkgb3BlcmF0aW9uIHRoYXQgaW1tdXRhYmxlIHNlcXVlbmNlIHR5cGVzIGdlbmVyYWxseSAnCisgICAgICAgICAgICAgJ2ltcGxlbWVudFxuJworICAgICAgICAgICAgICd0aGF0IGlzIG5vdCBhbHNvIGltcGxlbWVudGVkIGJ5IG11dGFibGUgc2VxdWVuY2UgdHlwZXMgaXMgJworICAgICAgICAgICAgICdzdXBwb3J0IGZvclxuJworICAgICAgICAgICAgICd0aGUgImhhc2goKSIgYnVpbHQtaW4uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGlzIHN1cHBvcnQgYWxsb3dzIGltbXV0YWJsZSBzZXF1ZW5jZXMsIHN1Y2ggYXMgInR1cGxlIiAnCisgICAgICAgICAgICAgJ2luc3RhbmNlcywgdG9cbicKKyAgICAgICAgICAgICAnYmUgdXNlZCBhcyAiZGljdCIga2V5cyBhbmQgc3RvcmVkIGluICJzZXQiIGFuZCAiZnJvemVuc2V0IiAnCisgICAgICAgICAgICAgJ2luc3RhbmNlcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0F0dGVtcHRpbmcgdG8gaGFzaCBhbiBpbW11dGFibGUgc2VxdWVuY2UgdGhhdCBjb250YWlucyAnCisgICAgICAgICAgICAgJ3VuaGFzaGFibGVcbicKKyAgICAgICAgICAgICAndmFsdWVzIHdpbGwgcmVzdWx0IGluICJUeXBlRXJyb3IiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ011dGFibGUgU2VxdWVuY2UgVHlwZXNcbicKKyAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIG9wZXJhdGlvbnMgaW4gdGhlIGZvbGxvd2luZyB0YWJsZSBhcmUgZGVmaW5lZCBvbiBtdXRhYmxlICcKKyAgICAgICAgICAgICAnc2VxdWVuY2VcbicKKyAgICAgICAgICAgICAndHlwZXMuIFRoZSAiY29sbGVjdGlvbnMuYWJjLk11dGFibGVTZXF1ZW5jZSIgQUJDIGlzIHByb3ZpZGVkIHRvICcKKyAgICAgICAgICAgICAnbWFrZVxuJworICAgICAgICAgICAgICdpdCBlYXNpZXIgdG8gY29ycmVjdGx5IGltcGxlbWVudCB0aGVzZSBvcGVyYXRpb25zIG9uIGN1c3RvbSAnCisgICAgICAgICAgICAgJ3NlcXVlbmNlXG4nCisgICAgICAgICAgICAgJ3R5cGVzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnSW4gdGhlIHRhYmxlICpzKiBpcyBhbiBpbnN0YW5jZSBvZiBhIG11dGFibGUgc2VxdWVuY2UgdHlwZSwgKnQqICcKKyAgICAgICAgICAgICAnaXMgYW55XG4nCisgICAgICAgICAgICAgJ2l0ZXJhYmxlIG9iamVjdCBhbmQgKngqIGlzIGFuIGFyYml0cmFyeSBvYmplY3QgdGhhdCBtZWV0cyBhbnkgJworICAgICAgICAgICAgICd0eXBlIGFuZFxuJworICAgICAgICAgICAgICd2YWx1ZSByZXN0cmljdGlvbnMgaW1wb3NlZCBieSAqcyogKGZvciBleGFtcGxlLCAiYnl0ZWFycmF5IiAnCisgICAgICAgICAgICAgJ29ubHlcbicKKyAgICAgICAgICAgICAnYWNjZXB0cyBpbnRlZ2VycyB0aGF0IG1lZXQgdGhlIHZhbHVlIHJlc3RyaWN0aW9uICIwIDw9IHggPD0gJworICAgICAgICAgICAgICcyNTUiKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8IE9wZXJhdGlvbiAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAnUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PStcbicKKyAgICAgICAgICAgICAnfCAic1tpXSA9IHgiICAgICAgICAgICAgICAgICAgICAgfCBpdGVtICppKiBvZiAqcyogaXMgcmVwbGFjZWQgJworICAgICAgICAgICAgICdieSAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgJyp4KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInNbaTpqXSA9IHQiICAgICAgICAgICAgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiAnCisgICAgICAgICAgICAgJ2lzICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwbGFjZWQgYnkgdGhlIGNvbnRlbnRzIG9mICcKKyAgICAgICAgICAgICAndGhlICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaXRlcmFibGUgJworICAgICAgICAgICAgICcqdCogICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJkZWwgc1tpOmpdIiAgICAgICAgICAgICAgICAgICB8IHNhbWUgYXMgInNbaTpqXSA9ICcKKyAgICAgICAgICAgICAnW10iICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAic1tpOmo6a10gPSB0IiAgICAgICAgICAgICAgICAgfCB0aGUgZWxlbWVudHMgb2YgInNbaTpqOmtdIiAnCisgICAgICAgICAgICAgJ2FyZSAgIHwgKDEpICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBsYWNlZCBieSB0aG9zZSBvZiAnCisgICAgICAgICAgICAgJyp0KiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgImRlbCBzW2k6ajprXSIgICAgICAgICAgICAgICAgIHwgcmVtb3ZlcyB0aGUgZWxlbWVudHMgJworICAgICAgICAgICAgICdvZiAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgInNbaTpqOmtdIiBmcm9tIHRoZSAnCisgICAgICAgICAgICAgJ2xpc3QgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzLmFwcGVuZCh4KSIgICAgICAgICAgICAgICAgICB8IGFwcGVuZHMgKngqIHRvIHRoZSBlbmQgb2YgJworICAgICAgICAgICAgICd0aGUgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNlcXVlbmNlIChzYW1lICcKKyAgICAgICAgICAgICAnYXMgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICJzW2xlbihzKTpsZW4ocyldID0gJworICAgICAgICAgICAgICdbeF0iKSAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAicy5jbGVhcigpIiAgICAgICAgICAgICAgICAgICAgfCByZW1vdmVzIGFsbCBpdGVtcyBmcm9tICJzIiAnCisgICAgICAgICAgICAgJyhzYW1lIHwgKDUpICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcyAiZGVsICcKKyAgICAgICAgICAgICAnc1s6XSIpICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInMuY29weSgpIiAgICAgICAgICAgICAgICAgICAgIHwgY3JlYXRlcyBhIHNoYWxsb3cgY29weSBvZiAnCisgICAgICAgICAgICAgJyJzIiAgICB8ICg1KSAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKHNhbWUgYXMgJworICAgICAgICAgICAgICcic1s6XSIpICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzLmV4dGVuZCh0KSIgb3IgInMgKz0gdCIgICAgICB8IGV4dGVuZHMgKnMqIHdpdGggdGhlIGNvbnRlbnRzICcKKyAgICAgICAgICAgICAnb2YgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp0KiAoZm9yIHRoZSBtb3N0IHBhcnQgdGhlICcKKyAgICAgICAgICAgICAnc2FtZSAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFzICJzW2xlbihzKTpsZW4ocyldID0gJworICAgICAgICAgICAgICd0IikgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAicyAqPSBuIiAgICAgICAgICAgICAgICAgICAgICAgfCB1cGRhdGVzICpzKiB3aXRoIGl0cyAnCisgICAgICAgICAgICAgJ2NvbnRlbnRzICAgIHwgKDYpICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBlYXRlZCAqbiogJworICAgICAgICAgICAgICd0aW1lcyAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInMuaW5zZXJ0KGksIHgpIiAgICAgICAgICAgICAgIHwgaW5zZXJ0cyAqeCogaW50byAqcyogYXQgJworICAgICAgICAgICAgICd0aGUgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaW5kZXggZ2l2ZW4gYnkgKmkqIChzYW1lICcKKyAgICAgICAgICAgICAnYXMgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgInNbaTppXSA9ICcKKyAgICAgICAgICAgICAnW3hdIikgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzLnBvcChbaV0pIiAgICAgICAgICAgICAgICAgICB8IHJldHJpZXZlcyB0aGUgaXRlbSBhdCAqaSogJworICAgICAgICAgICAgICdhbmQgICAgfCAoMikgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFsc28gcmVtb3ZlcyBpdCBmcm9tICcKKyAgICAgICAgICAgICAnKnMqICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAicy5yZW1vdmUoeCkiICAgICAgICAgICAgICAgICAgfCByZW1vdmUgdGhlIGZpcnN0IGl0ZW0gZnJvbSAnCisgICAgICAgICAgICAgJypzKiAgIHwgKDMpICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3aGVyZSAic1tpXSA9PSAnCisgICAgICAgICAgICAgJ3giICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInMucmV2ZXJzZSgpIiAgICAgICAgICAgICAgICAgIHwgcmV2ZXJzZXMgdGhlIGl0ZW1zIG9mICpzKiAnCisgICAgICAgICAgICAgJ2luICAgICB8ICg0KSAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICdwbGFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTm90ZXM6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcxLiAqdCogbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aCBhcyB0aGUgc2xpY2UgaXQgaXMgcmVwbGFjaW5nLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnMi4gVGhlIG9wdGlvbmFsIGFyZ3VtZW50ICppKiBkZWZhdWx0cyB0byAiLTEiLCBzbyB0aGF0IGJ5ICcKKyAgICAgICAgICAgICAnZGVmYXVsdFxuJworICAgICAgICAgICAgICcgICB0aGUgbGFzdCBpdGVtIGlzIHJlbW92ZWQgYW5kIHJldHVybmVkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnMy4gInJlbW92ZSIgcmFpc2VzICJWYWx1ZUVycm9yIiB3aGVuICp4KiBpcyBub3QgZm91bmQgaW4gKnMqLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnNC4gVGhlICJyZXZlcnNlKCkiIG1ldGhvZCBtb2RpZmllcyB0aGUgc2VxdWVuY2UgaW4gcGxhY2UgZm9yXG4nCisgICAgICAgICAgICAgJyAgIGVjb25vbXkgb2Ygc3BhY2Ugd2hlbiByZXZlcnNpbmcgYSBsYXJnZSBzZXF1ZW5jZS4gIFRvIHJlbWluZCAnCisgICAgICAgICAgICAgJ3VzZXJzXG4nCisgICAgICAgICAgICAgJyAgIHRoYXQgaXQgb3BlcmF0ZXMgYnkgc2lkZSBlZmZlY3QsIGl0IGRvZXMgbm90IHJldHVybiB0aGUgJworICAgICAgICAgICAgICdyZXZlcnNlZFxuJworICAgICAgICAgICAgICcgICBzZXF1ZW5jZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzUuICJjbGVhcigpIiBhbmQgImNvcHkoKSIgYXJlIGluY2x1ZGVkIGZvciBjb25zaXN0ZW5jeSB3aXRoIHRoZVxuJworICAgICAgICAgICAgICIgICBpbnRlcmZhY2VzIG9mIG11dGFibGUgY29udGFpbmVycyB0aGF0IGRvbid0IHN1cHBvcnQgc2xpY2luZ1xuIgorICAgICAgICAgICAgICcgICBvcGVyYXRpb25zIChzdWNoIGFzICJkaWN0IiBhbmQgInNldCIpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAzLjM6ICJjbGVhcigpIiBhbmQgImNvcHkoKSIgbWV0aG9kcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzYuIFRoZSB2YWx1ZSAqbiogaXMgYW4gaW50ZWdlciwgb3IgYW4gb2JqZWN0IGltcGxlbWVudGluZ1xuJworICAgICAgICAgICAgICcgICAiX19pbmRleF9fKCkiLiAgWmVybyBhbmQgbmVnYXRpdmUgdmFsdWVzIG9mICpuKiBjbGVhciB0aGUgJworICAgICAgICAgICAgICdzZXF1ZW5jZS5cbicKKyAgICAgICAgICAgICAnICAgSXRlbXMgaW4gdGhlIHNlcXVlbmNlIGFyZSBub3QgY29waWVkOyB0aGV5IGFyZSByZWZlcmVuY2VkICcKKyAgICAgICAgICAgICAnbXVsdGlwbGVcbicKKyAgICAgICAgICAgICAnICAgdGltZXMsIGFzIGV4cGxhaW5lZCBmb3IgInMgKiBuIiB1bmRlciBDb21tb24gU2VxdWVuY2UgJworICAgICAgICAgICAgICdPcGVyYXRpb25zLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0xpc3RzXG4nCisgICAgICAgICAgICAgJz09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdMaXN0cyBhcmUgbXV0YWJsZSBzZXF1ZW5jZXMsIHR5cGljYWxseSB1c2VkIHRvIHN0b3JlIGNvbGxlY3Rpb25zICcKKyAgICAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAgICAnaG9tb2dlbmVvdXMgaXRlbXMgKHdoZXJlIHRoZSBwcmVjaXNlIGRlZ3JlZSBvZiBzaW1pbGFyaXR5IHdpbGwgJworICAgICAgICAgICAgICd2YXJ5IGJ5XG4nCisgICAgICAgICAgICAgJ2FwcGxpY2F0aW9uKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2NsYXNzIGxpc3QoW2l0ZXJhYmxlXSlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIExpc3RzIG1heSBiZSBjb25zdHJ1Y3RlZCBpbiBzZXZlcmFsIHdheXM6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAqIFVzaW5nIGEgcGFpciBvZiBzcXVhcmUgYnJhY2tldHMgdG8gZGVub3RlIHRoZSBlbXB0eSBsaXN0OiAnCisgICAgICAgICAgICAgJyJbXSJcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICogVXNpbmcgc3F1YXJlIGJyYWNrZXRzLCBzZXBhcmF0aW5nIGl0ZW1zIHdpdGggY29tbWFzOiAnCisgICAgICAgICAgICAgJyJbYV0iLFxuJworICAgICAgICAgICAgICcgICAgICJbYSwgYiwgY10iXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAqIFVzaW5nIGEgbGlzdCBjb21wcmVoZW5zaW9uOiAiW3ggZm9yIHggaW4gaXRlcmFibGVdIlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgKiBVc2luZyB0aGUgdHlwZSBjb25zdHJ1Y3RvcjogImxpc3QoKSIgb3IgImxpc3QoaXRlcmFibGUpIlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgVGhlIGNvbnN0cnVjdG9yIGJ1aWxkcyBhIGxpc3Qgd2hvc2UgaXRlbXMgYXJlIHRoZSBzYW1lIGFuZCBpbiAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICIgICBzYW1lIG9yZGVyIGFzICppdGVyYWJsZSoncyBpdGVtcy4gICppdGVyYWJsZSogbWF5IGJlIGVpdGhlciAiCisgICAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgICAnICAgc2VxdWVuY2UsIGEgY29udGFpbmVyIHRoYXQgc3VwcG9ydHMgaXRlcmF0aW9uLCBvciBhbiAnCisgICAgICAgICAgICAgJ2l0ZXJhdG9yXG4nCisgICAgICAgICAgICAgJyAgIG9iamVjdC4gIElmICppdGVyYWJsZSogaXMgYWxyZWFkeSBhIGxpc3QsIGEgY29weSBpcyBtYWRlIGFuZFxuJworICAgICAgICAgICAgICcgICByZXR1cm5lZCwgc2ltaWxhciB0byAiaXRlcmFibGVbOl0iLiBGb3IgZXhhbXBsZSwgJworICAgICAgICAgICAgICcibGlzdChcJ2FiY1wnKSJcbicKKyAgICAgICAgICAgICAnICAgcmV0dXJucyAiW1wnYVwnLCBcJ2JcJywgXCdjXCddIiBhbmQgImxpc3QoICgxLCAyLCAzKSApIiAnCisgICAgICAgICAgICAgJ3JldHVybnMgIlsxLCAyLFxuJworICAgICAgICAgICAgICcgICAzXSIuIElmIG5vIGFyZ3VtZW50IGlzIGdpdmVuLCB0aGUgY29uc3RydWN0b3IgY3JlYXRlcyBhIG5ldyAnCisgICAgICAgICAgICAgJ2VtcHR5XG4nCisgICAgICAgICAgICAgJyAgIGxpc3QsICJbXSIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBNYW55IG90aGVyIG9wZXJhdGlvbnMgYWxzbyBwcm9kdWNlIGxpc3RzLCBpbmNsdWRpbmcgdGhlICcKKyAgICAgICAgICAgICAnInNvcnRlZCgpIlxuJworICAgICAgICAgICAgICcgICBidWlsdC1pbi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIExpc3RzIGltcGxlbWVudCBhbGwgb2YgdGhlIGNvbW1vbiBhbmQgbXV0YWJsZSBzZXF1ZW5jZSAnCisgICAgICAgICAgICAgJ29wZXJhdGlvbnMuXG4nCisgICAgICAgICAgICAgJyAgIExpc3RzIGFsc28gcHJvdmlkZSB0aGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgbWV0aG9kOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgc29ydCgqLCBrZXk9Tm9uZSwgcmV2ZXJzZT1Ob25lKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgICAgVGhpcyBtZXRob2Qgc29ydHMgdGhlIGxpc3QgaW4gcGxhY2UsIHVzaW5nIG9ubHkgIjwiICcKKyAgICAgICAgICAgICAnY29tcGFyaXNvbnNcbicKKyAgICAgICAgICAgICAnICAgICAgYmV0d2VlbiBpdGVtcy4gRXhjZXB0aW9ucyBhcmUgbm90IHN1cHByZXNzZWQgLSBpZiBhbnkgJworICAgICAgICAgICAgICdjb21wYXJpc29uXG4nCisgICAgICAgICAgICAgJyAgICAgIG9wZXJhdGlvbnMgZmFpbCwgdGhlIGVudGlyZSBzb3J0IG9wZXJhdGlvbiB3aWxsIGZhaWwgKGFuZCAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcgICAgICBsaXN0IHdpbGwgbGlrZWx5IGJlIGxlZnQgaW4gYSBwYXJ0aWFsbHkgbW9kaWZpZWQgc3RhdGUpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgICAgInNvcnQoKSIgYWNjZXB0cyB0d28gYXJndW1lbnRzIHRoYXQgY2FuIG9ubHkgYmUgcGFzc2VkIGJ5XG4nCisgICAgICAgICAgICAgJyAgICAgIGtleXdvcmQgKGtleXdvcmQtb25seSBhcmd1bWVudHMpOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgICAgKmtleSogc3BlY2lmaWVzIGEgZnVuY3Rpb24gb2Ygb25lIGFyZ3VtZW50IHRoYXQgaXMgdXNlZCAnCisgICAgICAgICAgICAgJ3RvXG4nCisgICAgICAgICAgICAgJyAgICAgIGV4dHJhY3QgYSBjb21wYXJpc29uIGtleSBmcm9tIGVhY2ggbGlzdCBlbGVtZW50IChmb3IgJworICAgICAgICAgICAgICdleGFtcGxlLFxuJworICAgICAgICAgICAgICcgICAgICAia2V5PXN0ci5sb3dlciIpLiBUaGUga2V5IGNvcnJlc3BvbmRpbmcgdG8gZWFjaCBpdGVtIGluICcKKyAgICAgICAgICAgICAndGhlIGxpc3RcbicKKyAgICAgICAgICAgICAnICAgICAgaXMgY2FsY3VsYXRlZCBvbmNlIGFuZCB0aGVuIHVzZWQgZm9yIHRoZSBlbnRpcmUgc29ydGluZyAnCisgICAgICAgICAgICAgJ3Byb2Nlc3MuXG4nCisgICAgICAgICAgICAgJyAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIG9mICJOb25lIiBtZWFucyB0aGF0IGxpc3QgaXRlbXMgYXJlICcKKyAgICAgICAgICAgICAnc29ydGVkXG4nCisgICAgICAgICAgICAgJyAgICAgIGRpcmVjdGx5IHdpdGhvdXQgY2FsY3VsYXRpbmcgYSBzZXBhcmF0ZSBrZXkgdmFsdWUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICBUaGUgImZ1bmN0b29scy5jbXBfdG9fa2V5KCkiIHV0aWxpdHkgaXMgYXZhaWxhYmxlIHRvICcKKyAgICAgICAgICAgICAnY29udmVydCBhXG4nCisgICAgICAgICAgICAgJyAgICAgIDIueCBzdHlsZSAqY21wKiBmdW5jdGlvbiB0byBhICprZXkqIGZ1bmN0aW9uLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgICAgKnJldmVyc2UqIGlzIGEgYm9vbGVhbiB2YWx1ZS4gIElmIHNldCB0byAiVHJ1ZSIsIHRoZW4gdGhlICcKKyAgICAgICAgICAgICAnbGlzdFxuJworICAgICAgICAgICAgICcgICAgICBlbGVtZW50cyBhcmUgc29ydGVkIGFzIGlmIGVhY2ggY29tcGFyaXNvbiB3ZXJlIHJldmVyc2VkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgICAgVGhpcyBtZXRob2QgbW9kaWZpZXMgdGhlIHNlcXVlbmNlIGluIHBsYWNlIGZvciBlY29ub215IG9mICcKKyAgICAgICAgICAgICAnc3BhY2VcbicKKyAgICAgICAgICAgICAnICAgICAgd2hlbiBzb3J0aW5nIGEgbGFyZ2Ugc2VxdWVuY2UuICBUbyByZW1pbmQgdXNlcnMgdGhhdCBpdCAnCisgICAgICAgICAgICAgJ29wZXJhdGVzXG4nCisgICAgICAgICAgICAgJyAgICAgIGJ5IHNpZGUgZWZmZWN0LCBpdCBkb2VzIG5vdCByZXR1cm4gdGhlIHNvcnRlZCBzZXF1ZW5jZSAnCisgICAgICAgICAgICAgJyh1c2VcbicKKyAgICAgICAgICAgICAnICAgICAgInNvcnRlZCgpIiB0byBleHBsaWNpdGx5IHJlcXVlc3QgYSBuZXcgc29ydGVkIGxpc3QgJworICAgICAgICAgICAgICdpbnN0YW5jZSkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICBUaGUgInNvcnQoKSIgbWV0aG9kIGlzIGd1YXJhbnRlZWQgdG8gYmUgc3RhYmxlLiAgQSBzb3J0ICcKKyAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAnICAgICAgc3RhYmxlIGlmIGl0IGd1YXJhbnRlZXMgbm90IHRvIGNoYW5nZSB0aGUgcmVsYXRpdmUgb3JkZXIgJworICAgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAgICcgICAgICBlbGVtZW50cyB0aGF0IGNvbXBhcmUgZXF1YWwgLS0tIHRoaXMgaXMgaGVscGZ1bCBmb3IgJworICAgICAgICAgICAgICdzb3J0aW5nIGluXG4nCisgICAgICAgICAgICAgJyAgICAgIG11bHRpcGxlIHBhc3NlcyAoZm9yIGV4YW1wbGUsIHNvcnQgYnkgZGVwYXJ0bWVudCwgdGhlbiBieSAnCisgICAgICAgICAgICAgJ3NhbGFyeVxuJworICAgICAgICAgICAgICcgICAgICBncmFkZSkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICAqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIFdoaWxlIGEgbGlzdCBpcyBiZWluZyAnCisgICAgICAgICAgICAgJ3NvcnRlZCxcbicKKyAgICAgICAgICAgICAnICAgICAgdGhlIGVmZmVjdCBvZiBhdHRlbXB0aW5nIHRvIG11dGF0ZSwgb3IgZXZlbiBpbnNwZWN0LCB0aGUgJworICAgICAgICAgICAgICdsaXN0IGlzXG4nCisgICAgICAgICAgICAgJyAgICAgIHVuZGVmaW5lZC4gIFRoZSBDIGltcGxlbWVudGF0aW9uIG9mIFB5dGhvbiBtYWtlcyB0aGUgbGlzdCAnCisgICAgICAgICAgICAgJ2FwcGVhclxuJworICAgICAgICAgICAgICcgICAgICBlbXB0eSBmb3IgdGhlIGR1cmF0aW9uLCBhbmQgcmFpc2VzICJWYWx1ZUVycm9yIiBpZiBpdCBjYW4gJworICAgICAgICAgICAgICdkZXRlY3RcbicKKyAgICAgICAgICAgICAnICAgICAgdGhhdCB0aGUgbGlzdCBoYXMgYmVlbiBtdXRhdGVkIGR1cmluZyBhIHNvcnQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVHVwbGVzXG4nCisgICAgICAgICAgICAgJz09PT09PVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVHVwbGVzIGFyZSBpbW11dGFibGUgc2VxdWVuY2VzLCB0eXBpY2FsbHkgdXNlZCB0byBzdG9yZSAnCisgICAgICAgICAgICAgJ2NvbGxlY3Rpb25zIG9mXG4nCisgICAgICAgICAgICAgJ2hldGVyb2dlbmVvdXMgZGF0YSAoc3VjaCBhcyB0aGUgMi10dXBsZXMgcHJvZHVjZWQgYnkgdGhlICcKKyAgICAgICAgICAgICAnImVudW1lcmF0ZSgpIlxuJworICAgICAgICAgICAgICdidWlsdC1pbikuIFR1cGxlcyBhcmUgYWxzbyB1c2VkIGZvciBjYXNlcyB3aGVyZSBhbiBpbW11dGFibGUgJworICAgICAgICAgICAgICdzZXF1ZW5jZVxuJworICAgICAgICAgICAgICdvZiBob21vZ2VuZW91cyBkYXRhIGlzIG5lZWRlZCAoc3VjaCBhcyBhbGxvd2luZyBzdG9yYWdlIGluIGEgJworICAgICAgICAgICAgICcic2V0IiBvclxuJworICAgICAgICAgICAgICciZGljdCIgaW5zdGFuY2UpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnY2xhc3MgdHVwbGUoW2l0ZXJhYmxlXSlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFR1cGxlcyBtYXkgYmUgY29uc3RydWN0ZWQgaW4gYSBudW1iZXIgb2Ygd2F5czpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICogVXNpbmcgYSBwYWlyIG9mIHBhcmVudGhlc2VzIHRvIGRlbm90ZSB0aGUgZW1wdHkgdHVwbGU6ICcKKyAgICAgICAgICAgICAnIigpIlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgKiBVc2luZyBhIHRyYWlsaW5nIGNvbW1hIGZvciBhIHNpbmdsZXRvbiB0dXBsZTogImEsIiBvciAnCisgICAgICAgICAgICAgJyIoYSwpIlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgKiBTZXBhcmF0aW5nIGl0ZW1zIHdpdGggY29tbWFzOiAiYSwgYiwgYyIgb3IgIihhLCBiLCBjKSJcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICogVXNpbmcgdGhlICJ0dXBsZSgpIiBidWlsdC1pbjogInR1cGxlKCkiIG9yICcKKyAgICAgICAgICAgICAnInR1cGxlKGl0ZXJhYmxlKSJcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFRoZSBjb25zdHJ1Y3RvciBidWlsZHMgYSB0dXBsZSB3aG9zZSBpdGVtcyBhcmUgdGhlIHNhbWUgYW5kICcKKyAgICAgICAgICAgICAnaW4gdGhlXG4nCisgICAgICAgICAgICAgIiAgIHNhbWUgb3JkZXIgYXMgKml0ZXJhYmxlKidzIGl0ZW1zLiAgKml0ZXJhYmxlKiBtYXkgYmUgZWl0aGVyICIKKyAgICAgICAgICAgICAnYVxuJworICAgICAgICAgICAgICcgICBzZXF1ZW5jZSwgYSBjb250YWluZXIgdGhhdCBzdXBwb3J0cyBpdGVyYXRpb24sIG9yIGFuICcKKyAgICAgICAgICAgICAnaXRlcmF0b3JcbicKKyAgICAgICAgICAgICAnICAgb2JqZWN0LiAgSWYgKml0ZXJhYmxlKiBpcyBhbHJlYWR5IGEgdHVwbGUsIGl0IGlzIHJldHVybmVkXG4nCisgICAgICAgICAgICAgJyAgIHVuY2hhbmdlZC4gRm9yIGV4YW1wbGUsICJ0dXBsZShcJ2FiY1wnKSIgcmV0dXJucyAiKFwnYVwnLCAnCisgICAgICAgICAgICAgJ1wnYlwnLCBcJ2NcJykiXG4nCisgICAgICAgICAgICAgJyAgIGFuZCAidHVwbGUoIFsxLCAyLCAzXSApIiByZXR1cm5zICIoMSwgMiwgMykiLiBJZiBubyBhcmd1bWVudCAnCisgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgJyAgIGdpdmVuLCB0aGUgY29uc3RydWN0b3IgY3JlYXRlcyBhIG5ldyBlbXB0eSB0dXBsZSwgIigpIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE5vdGUgdGhhdCBpdCBpcyBhY3R1YWxseSB0aGUgY29tbWEgd2hpY2ggbWFrZXMgYSB0dXBsZSwgbm90ICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyAgIHBhcmVudGhlc2VzLiBUaGUgcGFyZW50aGVzZXMgYXJlIG9wdGlvbmFsLCBleGNlcHQgaW4gdGhlICcKKyAgICAgICAgICAgICAnZW1wdHlcbicKKyAgICAgICAgICAgICAnICAgdHVwbGUgY2FzZSwgb3Igd2hlbiB0aGV5IGFyZSBuZWVkZWQgdG8gYXZvaWQgc3ludGFjdGljICcKKyAgICAgICAgICAgICAnYW1iaWd1aXR5LlxuJworICAgICAgICAgICAgICcgICBGb3IgZXhhbXBsZSwgImYoYSwgYiwgYykiIGlzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIHRocmVlICcKKyAgICAgICAgICAgICAnYXJndW1lbnRzLFxuJworICAgICAgICAgICAgICcgICB3aGlsZSAiZigoYSwgYiwgYykpIiBpcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBhIDMtdHVwbGUgYXMgdGhlICcKKyAgICAgICAgICAgICAnc29sZVxuJworICAgICAgICAgICAgICcgICBhcmd1bWVudC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFR1cGxlcyBpbXBsZW1lbnQgYWxsIG9mIHRoZSBjb21tb24gc2VxdWVuY2Ugb3BlcmF0aW9ucy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0ZvciBoZXRlcm9nZW5lb3VzIGNvbGxlY3Rpb25zIG9mIGRhdGEgd2hlcmUgYWNjZXNzIGJ5IG5hbWUgaXMgJworICAgICAgICAgICAgICdjbGVhcmVyXG4nCisgICAgICAgICAgICAgJ3RoYW4gYWNjZXNzIGJ5IGluZGV4LCAiY29sbGVjdGlvbnMubmFtZWR0dXBsZSgpIiBtYXkgYmUgYSBtb3JlXG4nCisgICAgICAgICAgICAgJ2FwcHJvcHJpYXRlIGNob2ljZSB0aGFuIGEgc2ltcGxlIHR1cGxlIG9iamVjdC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdSYW5nZXNcbicKKyAgICAgICAgICAgICAnPT09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgInJhbmdlIiB0eXBlIHJlcHJlc2VudHMgYW4gaW1tdXRhYmxlIHNlcXVlbmNlIG9mIG51bWJlcnMgYW5kICcKKyAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAnY29tbW9ubHkgdXNlZCBmb3IgbG9vcGluZyBhIHNwZWNpZmljIG51bWJlciBvZiB0aW1lcyBpbiAiZm9yIiAnCisgICAgICAgICAgICAgJ2xvb3BzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnY2xhc3MgcmFuZ2Uoc3RvcClcbicKKyAgICAgICAgICAgICAnY2xhc3MgcmFuZ2Uoc3RhcnQsIHN0b3BbLCBzdGVwXSlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFRoZSBhcmd1bWVudHMgdG8gdGhlIHJhbmdlIGNvbnN0cnVjdG9yIG11c3QgYmUgaW50ZWdlcnMgJworICAgICAgICAgICAgICcoZWl0aGVyXG4nCisgICAgICAgICAgICAgJyAgIGJ1aWx0LWluICJpbnQiIG9yIGFueSBvYmplY3QgdGhhdCBpbXBsZW1lbnRzIHRoZSAiX19pbmRleF9fIlxuJworICAgICAgICAgICAgICcgICBzcGVjaWFsIG1ldGhvZCkuICBJZiB0aGUgKnN0ZXAqIGFyZ3VtZW50IGlzIG9taXR0ZWQsIGl0ICcKKyAgICAgICAgICAgICAnZGVmYXVsdHMgdG9cbicKKyAgICAgICAgICAgICAnICAgIjEiLiBJZiB0aGUgKnN0YXJ0KiBhcmd1bWVudCBpcyBvbWl0dGVkLCBpdCBkZWZhdWx0cyB0byAiMCIuICcKKyAgICAgICAgICAgICAnSWZcbicKKyAgICAgICAgICAgICAnICAgKnN0ZXAqIGlzIHplcm8sICJWYWx1ZUVycm9yIiBpcyByYWlzZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBGb3IgYSBwb3NpdGl2ZSAqc3RlcCosIHRoZSBjb250ZW50cyBvZiBhIHJhbmdlICJyIiBhcmUgJworICAgICAgICAgICAgICdkZXRlcm1pbmVkXG4nCisgICAgICAgICAgICAgJyAgIGJ5IHRoZSBmb3JtdWxhICJyW2ldID0gc3RhcnQgKyBzdGVwKmkiIHdoZXJlICJpID49IDAiIGFuZCAnCisgICAgICAgICAgICAgJyJyW2ldIDxcbicKKyAgICAgICAgICAgICAnICAgc3RvcCIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBGb3IgYSBuZWdhdGl2ZSAqc3RlcCosIHRoZSBjb250ZW50cyBvZiB0aGUgcmFuZ2UgYXJlIHN0aWxsXG4nCisgICAgICAgICAgICAgJyAgIGRldGVybWluZWQgYnkgdGhlIGZvcm11bGEgInJbaV0gPSBzdGFydCArIHN0ZXAqaSIsIGJ1dCB0aGVcbicKKyAgICAgICAgICAgICAnICAgY29uc3RyYWludHMgYXJlICJpID49IDAiIGFuZCAicltpXSA+IHN0b3AiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgQSByYW5nZSBvYmplY3Qgd2lsbCBiZSBlbXB0eSBpZiAiclswXSIgZG9lcyBub3QgbWVldCB0aGUgJworICAgICAgICAgICAgICd2YWx1ZVxuJworICAgICAgICAgICAgICcgICBjb25zdHJhaW50LiBSYW5nZXMgZG8gc3VwcG9ydCBuZWdhdGl2ZSBpbmRpY2VzLCBidXQgdGhlc2UgJworICAgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgICAnICAgaW50ZXJwcmV0ZWQgYXMgaW5kZXhpbmcgZnJvbSB0aGUgZW5kIG9mIHRoZSBzZXF1ZW5jZSAnCisgICAgICAgICAgICAgJ2RldGVybWluZWQgYnlcbicKKyAgICAgICAgICAgICAnICAgdGhlIHBvc2l0aXZlIGluZGljZXMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBSYW5nZXMgY29udGFpbmluZyBhYnNvbHV0ZSB2YWx1ZXMgbGFyZ2VyIHRoYW4gInN5cy5tYXhzaXplIiAnCisgICAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAgICcgICBwZXJtaXR0ZWQgYnV0IHNvbWUgZmVhdHVyZXMgKHN1Y2ggYXMgImxlbigpIikgbWF5IHJhaXNlXG4nCisgICAgICAgICAgICAgJyAgICJPdmVyZmxvd0Vycm9yIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFJhbmdlIGV4YW1wbGVzOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgICAgPj4+IGxpc3QocmFuZ2UoMTApKVxuJworICAgICAgICAgICAgICcgICAgICBbMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOV1cbicKKyAgICAgICAgICAgICAnICAgICAgPj4+IGxpc3QocmFuZ2UoMSwgMTEpKVxuJworICAgICAgICAgICAgICcgICAgICBbMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTBdXG4nCisgICAgICAgICAgICAgJyAgICAgID4+PiBsaXN0KHJhbmdlKDAsIDMwLCA1KSlcbicKKyAgICAgICAgICAgICAnICAgICAgWzAsIDUsIDEwLCAxNSwgMjAsIDI1XVxuJworICAgICAgICAgICAgICcgICAgICA+Pj4gbGlzdChyYW5nZSgwLCAxMCwgMykpXG4nCisgICAgICAgICAgICAgJyAgICAgIFswLCAzLCA2LCA5XVxuJworICAgICAgICAgICAgICcgICAgICA+Pj4gbGlzdChyYW5nZSgwLCAtMTAsIC0xKSlcbicKKyAgICAgICAgICAgICAnICAgICAgWzAsIC0xLCAtMiwgLTMsIC00LCAtNSwgLTYsIC03LCAtOCwgLTldXG4nCisgICAgICAgICAgICAgJyAgICAgID4+PiBsaXN0KHJhbmdlKDApKVxuJworICAgICAgICAgICAgICcgICAgICBbXVxuJworICAgICAgICAgICAgICcgICAgICA+Pj4gbGlzdChyYW5nZSgxLCAwKSlcbicKKyAgICAgICAgICAgICAnICAgICAgW11cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFJhbmdlcyBpbXBsZW1lbnQgYWxsIG9mIHRoZSBjb21tb24gc2VxdWVuY2Ugb3BlcmF0aW9ucyAnCisgICAgICAgICAgICAgJ2V4Y2VwdFxuJworICAgICAgICAgICAgICcgICBjb25jYXRlbmF0aW9uIGFuZCByZXBldGl0aW9uIChkdWUgdG8gdGhlIGZhY3QgdGhhdCByYW5nZSAnCisgICAgICAgICAgICAgJ29iamVjdHNcbicKKyAgICAgICAgICAgICAnICAgY2FuIG9ubHkgcmVwcmVzZW50IHNlcXVlbmNlcyB0aGF0IGZvbGxvdyBhIHN0cmljdCBwYXR0ZXJuICcKKyAgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAgJyAgIHJlcGV0aXRpb24gYW5kIGNvbmNhdGVuYXRpb24gd2lsbCB1c3VhbGx5IHZpb2xhdGUgdGhhdCAnCisgICAgICAgICAgICAgJ3BhdHRlcm4pLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgc3RhcnRcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgIFRoZSB2YWx1ZSBvZiB0aGUgKnN0YXJ0KiBwYXJhbWV0ZXIgKG9yICIwIiBpZiB0aGUgJworICAgICAgICAgICAgICdwYXJhbWV0ZXIgd2FzXG4nCisgICAgICAgICAgICAgJyAgICAgIG5vdCBzdXBwbGllZClcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIHN0b3BcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgIFRoZSB2YWx1ZSBvZiB0aGUgKnN0b3AqIHBhcmFtZXRlclxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgc3RlcFxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgICAgVGhlIHZhbHVlIG9mIHRoZSAqc3RlcCogcGFyYW1ldGVyIChvciAiMSIgaWYgdGhlIHBhcmFtZXRlciAnCisgICAgICAgICAgICAgJ3dhc1xuJworICAgICAgICAgICAgICcgICAgICBub3Qgc3VwcGxpZWQpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgYWR2YW50YWdlIG9mIHRoZSAicmFuZ2UiIHR5cGUgb3ZlciBhIHJlZ3VsYXIgImxpc3QiIG9yICcKKyAgICAgICAgICAgICAnInR1cGxlIiBpc1xuJworICAgICAgICAgICAgICd0aGF0IGEgInJhbmdlIiBvYmplY3Qgd2lsbCBhbHdheXMgdGFrZSB0aGUgc2FtZSAoc21hbGwpIGFtb3VudCAnCisgICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAgJ21lbW9yeSwgbm8gbWF0dGVyIHRoZSBzaXplIG9mIHRoZSByYW5nZSBpdCByZXByZXNlbnRzIChhcyBpdCAnCisgICAgICAgICAgICAgJ29ubHlcbicKKyAgICAgICAgICAgICAnc3RvcmVzIHRoZSAic3RhcnQiLCAic3RvcCIgYW5kICJzdGVwIiB2YWx1ZXMsIGNhbGN1bGF0aW5nICcKKyAgICAgICAgICAgICAnaW5kaXZpZHVhbFxuJworICAgICAgICAgICAgICdpdGVtcyBhbmQgc3VicmFuZ2VzIGFzIG5lZWRlZCkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdSYW5nZSBvYmplY3RzIGltcGxlbWVudCB0aGUgImNvbGxlY3Rpb25zLmFiYy5TZXF1ZW5jZSIgQUJDLCBhbmRcbicKKyAgICAgICAgICAgICAncHJvdmlkZSBmZWF0dXJlcyBzdWNoIGFzIGNvbnRhaW5tZW50IHRlc3RzLCBlbGVtZW50IGluZGV4ICcKKyAgICAgICAgICAgICAnbG9va3VwLFxuJworICAgICAgICAgICAgICdzbGljaW5nIGFuZCBzdXBwb3J0IGZvciBuZWdhdGl2ZSBpbmRpY2VzIChzZWUgU2VxdWVuY2UgVHlwZXMgLS0tICcKKyAgICAgICAgICAgICAnbGlzdCxcbicKKyAgICAgICAgICAgICAndHVwbGUsIHJhbmdlKTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJz4+PiByID0gcmFuZ2UoMCwgMjAsIDIpXG4nCisgICAgICAgICAgICAgJz4+PiByXG4nCisgICAgICAgICAgICAgJ3JhbmdlKDAsIDIwLCAyKVxuJworICAgICAgICAgICAgICc+Pj4gMTEgaW4gclxuJworICAgICAgICAgICAgICdGYWxzZVxuJworICAgICAgICAgICAgICc+Pj4gMTAgaW4gclxuJworICAgICAgICAgICAgICdUcnVlXG4nCisgICAgICAgICAgICAgJz4+PiByLmluZGV4KDEwKVxuJworICAgICAgICAgICAgICc1XG4nCisgICAgICAgICAgICAgJz4+PiByWzVdXG4nCisgICAgICAgICAgICAgJzEwXG4nCisgICAgICAgICAgICAgJz4+PiByWzo1XVxuJworICAgICAgICAgICAgICdyYW5nZSgwLCAxMCwgMilcbicKKyAgICAgICAgICAgICAnPj4+IHJbLTFdXG4nCisgICAgICAgICAgICAgJzE4XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUZXN0aW5nIHJhbmdlIG9iamVjdHMgZm9yIGVxdWFsaXR5IHdpdGggIj09IiBhbmQgIiE9IiBjb21wYXJlcyAnCisgICAgICAgICAgICAgJ3RoZW0gYXNcbicKKyAgICAgICAgICAgICAnc2VxdWVuY2VzLiAgVGhhdCBpcywgdHdvIHJhbmdlIG9iamVjdHMgYXJlIGNvbnNpZGVyZWQgZXF1YWwgaWYgJworICAgICAgICAgICAgICd0aGV5XG4nCisgICAgICAgICAgICAgJ3JlcHJlc2VudCB0aGUgc2FtZSBzZXF1ZW5jZSBvZiB2YWx1ZXMuICAoTm90ZSB0aGF0IHR3byByYW5nZSAnCisgICAgICAgICAgICAgJ29iamVjdHNcbicKKyAgICAgICAgICAgICAndGhhdCBjb21wYXJlIGVxdWFsIG1pZ2h0IGhhdmUgZGlmZmVyZW50ICJzdGFydCIsICJzdG9wIiBhbmQgJworICAgICAgICAgICAgICcic3RlcCJcbicKKyAgICAgICAgICAgICAnYXR0cmlidXRlcywgZm9yIGV4YW1wbGUgInJhbmdlKDApID09IHJhbmdlKDIsIDEsIDMpIiBvciAnCisgICAgICAgICAgICAgJyJyYW5nZSgwLCAzLFxuJworICAgICAgICAgICAgICcyKSA9PSByYW5nZSgwLCA0LCAyKSIuKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMjogSW1wbGVtZW50IHRoZSBTZXF1ZW5jZSBBQkMuIFN1cHBvcnQgJworICAgICAgICAgICAgICdzbGljaW5nXG4nCisgICAgICAgICAgICAgJ2FuZCBuZWdhdGl2ZSBpbmRpY2VzLiBUZXN0ICJpbnQiIG9iamVjdHMgZm9yIG1lbWJlcnNoaXAgaW4gJworICAgICAgICAgICAgICdjb25zdGFudFxuJworICAgICAgICAgICAgICd0aW1lIGluc3RlYWQgb2YgaXRlcmF0aW5nIHRocm91Z2ggYWxsIGl0ZW1zLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAiQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMzogRGVmaW5lICc9PScgYW5kICchPScgdG8gY29tcGFyZSByYW5nZSAiCisgICAgICAgICAgICAgJ29iamVjdHNcbicKKyAgICAgICAgICAgICAnYmFzZWQgb24gdGhlIHNlcXVlbmNlIG9mIHZhbHVlcyB0aGV5IGRlZmluZSAoaW5zdGVhZCBvZiAnCisgICAgICAgICAgICAgJ2NvbXBhcmluZ1xuJworICAgICAgICAgICAgICdiYXNlZCBvbiBvYmplY3QgaWRlbnRpdHkpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTmV3IGluIHZlcnNpb24gMy4zOiBUaGUgInN0YXJ0IiwgInN0b3AiIGFuZCAic3RlcCIgYXR0cmlidXRlcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1NlZSBhbHNvOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAqIFRoZSBsaW5zcGFjZSByZWNpcGUgc2hvd3MgaG93IHRvIGltcGxlbWVudCBhIGxhenkgdmVyc2lvbiAnCisgICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAgJyAgICByYW5nZSB0aGF0IHN1aXRhYmxlIGZvciBmbG9hdGluZyBwb2ludCBhcHBsaWNhdGlvbnMuXG4nLAorICd0eXBlc3NlcS1tdXRhYmxlJzogJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ011dGFibGUgU2VxdWVuY2UgVHlwZXNcbicKKyAgICAgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnVGhlIG9wZXJhdGlvbnMgaW4gdGhlIGZvbGxvd2luZyB0YWJsZSBhcmUgZGVmaW5lZCBvbiAnCisgICAgICAgICAgICAgICAgICAgICAnbXV0YWJsZSBzZXF1ZW5jZVxuJworICAgICAgICAgICAgICAgICAgICAgJ3R5cGVzLiBUaGUgImNvbGxlY3Rpb25zLmFiYy5NdXRhYmxlU2VxdWVuY2UiIEFCQyBpcyAnCisgICAgICAgICAgICAgICAgICAgICAncHJvdmlkZWQgdG8gbWFrZVxuJworICAgICAgICAgICAgICAgICAgICAgJ2l0IGVhc2llciB0byBjb3JyZWN0bHkgaW1wbGVtZW50IHRoZXNlIG9wZXJhdGlvbnMgb24gJworICAgICAgICAgICAgICAgICAgICAgJ2N1c3RvbSBzZXF1ZW5jZVxuJworICAgICAgICAgICAgICAgICAgICAgJ3R5cGVzLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ0luIHRoZSB0YWJsZSAqcyogaXMgYW4gaW5zdGFuY2Ugb2YgYSBtdXRhYmxlIHNlcXVlbmNlICcKKyAgICAgICAgICAgICAgICAgICAgICd0eXBlLCAqdCogaXMgYW55XG4nCisgICAgICAgICAgICAgICAgICAgICAnaXRlcmFibGUgb2JqZWN0IGFuZCAqeCogaXMgYW4gYXJiaXRyYXJ5IG9iamVjdCB0aGF0ICcKKyAgICAgICAgICAgICAgICAgICAgICdtZWV0cyBhbnkgdHlwZSBhbmRcbicKKyAgICAgICAgICAgICAgICAgICAgICd2YWx1ZSByZXN0cmljdGlvbnMgaW1wb3NlZCBieSAqcyogKGZvciBleGFtcGxlLCAnCisgICAgICAgICAgICAgICAgICAgICAnImJ5dGVhcnJheSIgb25seVxuJworICAgICAgICAgICAgICAgICAgICAgJ2FjY2VwdHMgaW50ZWdlcnMgdGhhdCBtZWV0IHRoZSB2YWx1ZSByZXN0cmljdGlvbiAiMCA8PSB4ICcKKyAgICAgICAgICAgICAgICAgICAgICc8PSAyNTUiKS5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8IE9wZXJhdGlvbiAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgICAgICAgICAgJys9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09K1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgInNbaV0gPSB4IiAgICAgICAgICAgICAgICAgICAgIHwgaXRlbSAqaSogb2YgKnMqIGlzICcKKyAgICAgICAgICAgICAgICAgICAgICdyZXBsYWNlZCBieSAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICcqeCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgInNbaTpqXSA9IHQiICAgICAgICAgICAgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqICcKKyAgICAgICAgICAgICAgICAgICAgICd0byAqaiogaXMgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGxhY2VkIGJ5IHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnY29udGVudHMgb2YgdGhlICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpdGVyYWJsZSAnCisgICAgICAgICAgICAgICAgICAgICAnKnQqICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgImRlbCBzW2k6al0iICAgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyAic1tpOmpdID0gJworICAgICAgICAgICAgICAgICAgICAgJ1tdIiAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJzW2k6ajprXSA9IHQiICAgICAgICAgICAgICAgICB8IHRoZSBlbGVtZW50cyBvZiAnCisgICAgICAgICAgICAgICAgICAgICAnInNbaTpqOmtdIiBhcmUgICB8ICgxKSAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBsYWNlZCBieSB0aG9zZSBvZiAnCisgICAgICAgICAgICAgICAgICAgICAnKnQqICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgImRlbCBzW2k6ajprXSIgICAgICAgICAgICAgICAgIHwgcmVtb3ZlcyB0aGUgZWxlbWVudHMgJworICAgICAgICAgICAgICAgICAgICAgJ29mICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICJzW2k6ajprXSIgZnJvbSB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2xpc3QgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAicy5hcHBlbmQoeCkiICAgICAgICAgICAgICAgICAgfCBhcHBlbmRzICp4KiB0byB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2VuZCBvZiB0aGUgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2VxdWVuY2UgKHNhbWUgJworICAgICAgICAgICAgICAgICAgICAgJ2FzICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICJzW2xlbihzKTpsZW4ocyldID0gJworICAgICAgICAgICAgICAgICAgICAgJ1t4XSIpICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAicy5jbGVhcigpIiAgICAgICAgICAgICAgICAgICAgfCByZW1vdmVzIGFsbCBpdGVtcyAnCisgICAgICAgICAgICAgICAgICAgICAnZnJvbSAicyIgKHNhbWUgfCAoNSkgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXMgImRlbCAnCisgICAgICAgICAgICAgICAgICAgICAnc1s6XSIpICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJzLmNvcHkoKSIgICAgICAgICAgICAgICAgICAgICB8IGNyZWF0ZXMgYSBzaGFsbG93ICcKKyAgICAgICAgICAgICAgICAgICAgICdjb3B5IG9mICJzIiAgICB8ICg1KSAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoc2FtZSBhcyAnCisgICAgICAgICAgICAgICAgICAgICAnInNbOl0iKSAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgInMuZXh0ZW5kKHQpIiBvciAicyArPSB0IiAgICAgIHwgZXh0ZW5kcyAqcyogd2l0aCB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2NvbnRlbnRzIG9mIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp0KiAoZm9yIHRoZSBtb3N0ICcKKyAgICAgICAgICAgICAgICAgICAgICdwYXJ0IHRoZSBzYW1lICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcyAic1tsZW4ocyk6bGVuKHMpXSAnCisgICAgICAgICAgICAgICAgICAgICAnPSB0IikgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgInMgKj0gbiIgICAgICAgICAgICAgICAgICAgICAgIHwgdXBkYXRlcyAqcyogd2l0aCBpdHMgJworICAgICAgICAgICAgICAgICAgICAgJ2NvbnRlbnRzICAgIHwgKDYpICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGVhdGVkICpuKiAnCisgICAgICAgICAgICAgICAgICAgICAndGltZXMgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAicy5pbnNlcnQoaSwgeCkiICAgICAgICAgICAgICAgfCBpbnNlcnRzICp4KiBpbnRvICpzKiAnCisgICAgICAgICAgICAgICAgICAgICAnYXQgdGhlICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaW5kZXggZ2l2ZW4gYnkgKmkqICcKKyAgICAgICAgICAgICAgICAgICAgICcoc2FtZSBhcyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICJzW2k6aV0gPSAnCisgICAgICAgICAgICAgICAgICAgICAnW3hdIikgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAicy5wb3AoW2ldKSIgICAgICAgICAgICAgICAgICAgfCByZXRyaWV2ZXMgdGhlIGl0ZW0gYXQgJworICAgICAgICAgICAgICAgICAgICAgJyppKiBhbmQgICAgfCAoMikgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWxzbyByZW1vdmVzIGl0IGZyb20gJworICAgICAgICAgICAgICAgICAgICAgJypzKiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJzLnJlbW92ZSh4KSIgICAgICAgICAgICAgICAgICB8IHJlbW92ZSB0aGUgZmlyc3QgaXRlbSAnCisgICAgICAgICAgICAgICAgICAgICAnZnJvbSAqcyogICB8ICgzKSAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3aGVyZSAic1tpXSA9PSAnCisgICAgICAgICAgICAgICAgICAgICAneCIgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgInMucmV2ZXJzZSgpIiAgICAgICAgICAgICAgICAgIHwgcmV2ZXJzZXMgdGhlIGl0ZW1zIG9mICcKKyAgICAgICAgICAgICAgICAgICAgICcqcyogaW4gICAgIHwgKDQpICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdwbGFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ05vdGVzOlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJzEuICp0KiBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoIGFzIHRoZSBzbGljZSBpdCBpcyAnCisgICAgICAgICAgICAgICAgICAgICAncmVwbGFjaW5nLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJzIuIFRoZSBvcHRpb25hbCBhcmd1bWVudCAqaSogZGVmYXVsdHMgdG8gIi0xIiwgc28gdGhhdCAnCisgICAgICAgICAgICAgICAgICAgICAnYnkgZGVmYXVsdFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIHRoZSBsYXN0IGl0ZW0gaXMgcmVtb3ZlZCBhbmQgcmV0dXJuZWQuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnMy4gInJlbW92ZSIgcmFpc2VzICJWYWx1ZUVycm9yIiB3aGVuICp4KiBpcyBub3QgZm91bmQgaW4gJworICAgICAgICAgICAgICAgICAgICAgJypzKi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICc0LiBUaGUgInJldmVyc2UoKSIgbWV0aG9kIG1vZGlmaWVzIHRoZSBzZXF1ZW5jZSBpbiBwbGFjZSAnCisgICAgICAgICAgICAgICAgICAgICAnZm9yXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgZWNvbm9teSBvZiBzcGFjZSB3aGVuIHJldmVyc2luZyBhIGxhcmdlIHNlcXVlbmNlLiAgVG8gJworICAgICAgICAgICAgICAgICAgICAgJ3JlbWluZCB1c2Vyc1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIHRoYXQgaXQgb3BlcmF0ZXMgYnkgc2lkZSBlZmZlY3QsIGl0IGRvZXMgbm90IHJldHVybiAnCisgICAgICAgICAgICAgICAgICAgICAndGhlIHJldmVyc2VkXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgc2VxdWVuY2UuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnNS4gImNsZWFyKCkiIGFuZCAiY29weSgpIiBhcmUgaW5jbHVkZWQgZm9yIGNvbnNpc3RlbmN5ICcKKyAgICAgICAgICAgICAgICAgICAgICd3aXRoIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgIiAgIGludGVyZmFjZXMgb2YgbXV0YWJsZSBjb250YWluZXJzIHRoYXQgZG9uJ3Qgc3VwcG9ydCAiCisgICAgICAgICAgICAgICAgICAgICAnc2xpY2luZ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIG9wZXJhdGlvbnMgKHN1Y2ggYXMgImRpY3QiIGFuZCAic2V0IilcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAzLjM6ICJjbGVhcigpIiBhbmQgImNvcHkoKSIgbWV0aG9kcy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICc2LiBUaGUgdmFsdWUgKm4qIGlzIGFuIGludGVnZXIsIG9yIGFuIG9iamVjdCAnCisgICAgICAgICAgICAgICAgICAgICAnaW1wbGVtZW50aW5nXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIl9faW5kZXhfXygpIi4gIFplcm8gYW5kIG5lZ2F0aXZlIHZhbHVlcyBvZiAqbiogY2xlYXIgJworICAgICAgICAgICAgICAgICAgICAgJ3RoZSBzZXF1ZW5jZS5cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBJdGVtcyBpbiB0aGUgc2VxdWVuY2UgYXJlIG5vdCBjb3BpZWQ7IHRoZXkgYXJlICcKKyAgICAgICAgICAgICAgICAgICAgICdyZWZlcmVuY2VkIG11bHRpcGxlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgdGltZXMsIGFzIGV4cGxhaW5lZCBmb3IgInMgKiBuIiB1bmRlciBDb21tb24gU2VxdWVuY2UgJworICAgICAgICAgICAgICAgICAgICAgJ09wZXJhdGlvbnMuXG4nLAorICd1bmFyeSc6ICdcbicKKyAgICAgICAgICAnVW5hcnkgYXJpdGhtZXRpYyBhbmQgYml0d2lzZSBvcGVyYXRpb25zXG4nCisgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQWxsIHVuYXJ5IGFyaXRobWV0aWMgYW5kIGJpdHdpc2Ugb3BlcmF0aW9ucyBoYXZlIHRoZSBzYW1lICcKKyAgICAgICAgICAncHJpb3JpdHk6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICB1X2V4cHIgOjo9IHBvd2VyIHwgIi0iIHVfZXhwciB8ICIrIiB1X2V4cHIgfCAifiIgdV9leHByXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdUaGUgdW5hcnkgIi0iIChtaW51cykgb3BlcmF0b3IgeWllbGRzIHRoZSBuZWdhdGlvbiBvZiBpdHMgbnVtZXJpY1xuJworICAgICAgICAgICdhcmd1bWVudC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1RoZSB1bmFyeSAiKyIgKHBsdXMpIG9wZXJhdG9yIHlpZWxkcyBpdHMgbnVtZXJpYyBhcmd1bWVudCAnCisgICAgICAgICAgJ3VuY2hhbmdlZC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1RoZSB1bmFyeSAifiIgKGludmVydCkgb3BlcmF0b3IgeWllbGRzIHRoZSBiaXR3aXNlIGludmVyc2lvbiBvZiAnCisgICAgICAgICAgJ2l0c1xuJworICAgICAgICAgICdpbnRlZ2VyIGFyZ3VtZW50LiAgVGhlIGJpdHdpc2UgaW52ZXJzaW9uIG9mICJ4IiBpcyBkZWZpbmVkIGFzXG4nCisgICAgICAgICAgJyItKHgrMSkiLiAgSXQgb25seSBhcHBsaWVzIHRvIGludGVncmFsIG51bWJlcnMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdJbiBhbGwgdGhyZWUgY2FzZXMsIGlmIHRoZSBhcmd1bWVudCBkb2VzIG5vdCBoYXZlIHRoZSBwcm9wZXIgdHlwZSwgJworICAgICAgICAgICdhXG4nCisgICAgICAgICAgJyJUeXBlRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQuXG4nLAorICd3aGlsZSc6ICdcbicKKyAgICAgICAgICAnVGhlICJ3aGlsZSIgc3RhdGVtZW50XG4nCisgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnVGhlICJ3aGlsZSIgc3RhdGVtZW50IGlzIHVzZWQgZm9yIHJlcGVhdGVkIGV4ZWN1dGlvbiBhcyBsb25nIGFzIGFuXG4nCisgICAgICAgICAgJ2V4cHJlc3Npb24gaXMgdHJ1ZTpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIHdoaWxlX3N0bXQgOjo9ICJ3aGlsZSIgZXhwcmVzc2lvbiAiOiIgc3VpdGVcbicKKyAgICAgICAgICAnICAgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdUaGlzIHJlcGVhdGVkbHkgdGVzdHMgdGhlIGV4cHJlc3Npb24gYW5kLCBpZiBpdCBpcyB0cnVlLCBleGVjdXRlcyAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICdmaXJzdCBzdWl0ZTsgaWYgdGhlIGV4cHJlc3Npb24gaXMgZmFsc2UgKHdoaWNoIG1heSBiZSB0aGUgZmlyc3QgJworICAgICAgICAgICd0aW1lXG4nCisgICAgICAgICAgJ2l0IGlzIHRlc3RlZCkgdGhlIHN1aXRlIG9mIHRoZSAiZWxzZSIgY2xhdXNlLCBpZiBwcmVzZW50LCBpcyAnCisgICAgICAgICAgJ2V4ZWN1dGVkXG4nCisgICAgICAgICAgJ2FuZCB0aGUgbG9vcCB0ZXJtaW5hdGVzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQSAiYnJlYWsiIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgdGVybWluYXRlcyB0aGUgJworICAgICAgICAgICdsb29wXG4nCisgICAgICAgICAgJ3dpdGhvdXQgZXhlY3V0aW5nIHRoZSAiZWxzZSIgY2xhdXNlXCdzIHN1aXRlLiAgQSAiY29udGludWUiICcKKyAgICAgICAgICAnc3RhdGVtZW50XG4nCisgICAgICAgICAgJ2V4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSBza2lwcyB0aGUgcmVzdCBvZiB0aGUgc3VpdGUgYW5kIGdvZXMgJworICAgICAgICAgICdiYWNrXG4nCisgICAgICAgICAgJ3RvIHRlc3RpbmcgdGhlIGV4cHJlc3Npb24uXG4nLAorICd3aXRoJzogJ1xuJworICAgICAgICAgJ1RoZSAid2l0aCIgc3RhdGVtZW50XG4nCisgICAgICAgICAnKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdUaGUgIndpdGgiIHN0YXRlbWVudCBpcyB1c2VkIHRvIHdyYXAgdGhlIGV4ZWN1dGlvbiBvZiBhIGJsb2NrIHdpdGhcbicKKyAgICAgICAgICdtZXRob2RzIGRlZmluZWQgYnkgYSBjb250ZXh0IG1hbmFnZXIgKHNlZSBzZWN0aW9uIFdpdGggU3RhdGVtZW50XG4nCisgICAgICAgICAnQ29udGV4dCBNYW5hZ2VycykuIFRoaXMgYWxsb3dzIGNvbW1vbiAidHJ5Ii4uLiJleGNlcHQiLi4uImZpbmFsbHkiXG4nCisgICAgICAgICAndXNhZ2UgcGF0dGVybnMgdG8gYmUgZW5jYXBzdWxhdGVkIGZvciBjb252ZW5pZW50IHJldXNlLlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJyAgIHdpdGhfc3RtdCA6Oj0gIndpdGgiIHdpdGhfaXRlbSAoIiwiIHdpdGhfaXRlbSkqICI6IiBzdWl0ZVxuJworICAgICAgICAgJyAgIHdpdGhfaXRlbSA6Oj0gZXhwcmVzc2lvbiBbImFzIiB0YXJnZXRdXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnVGhlIGV4ZWN1dGlvbiBvZiB0aGUgIndpdGgiIHN0YXRlbWVudCB3aXRoIG9uZSAiaXRlbSIgcHJvY2VlZHMgYXNcbicKKyAgICAgICAgICdmb2xsb3dzOlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJzEuIFRoZSBjb250ZXh0IGV4cHJlc3Npb24gKHRoZSBleHByZXNzaW9uIGdpdmVuIGluIHRoZSAid2l0aF9pdGVtIilcbicKKyAgICAgICAgICcgICBpcyBldmFsdWF0ZWQgdG8gb2J0YWluIGEgY29udGV4dCBtYW5hZ2VyLlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJzIuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgIl9fZXhpdF9fKCkiIGlzIGxvYWRlZCBmb3IgbGF0ZXIgdXNlLlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJzMuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgIl9fZW50ZXJfXygpIiBtZXRob2QgaXMgaW52b2tlZC5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICc0LiBJZiBhIHRhcmdldCB3YXMgaW5jbHVkZWQgaW4gdGhlICJ3aXRoIiBzdGF0ZW1lbnQsIHRoZSByZXR1cm5cbicKKyAgICAgICAgICcgICB2YWx1ZSBmcm9tICJfX2VudGVyX18oKSIgaXMgYXNzaWduZWQgdG8gaXQuXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnICAgTm90ZTogVGhlICJ3aXRoIiBzdGF0ZW1lbnQgZ3VhcmFudGVlcyB0aGF0IGlmIHRoZSAiX19lbnRlcl9fKCkiXG4nCisgICAgICAgICAnICAgICBtZXRob2QgcmV0dXJucyB3aXRob3V0IGFuIGVycm9yLCB0aGVuICJfX2V4aXRfXygpIiB3aWxsIGFsd2F5cyAnCisgICAgICAgICAnYmVcbicKKyAgICAgICAgICcgICAgIGNhbGxlZC4gVGh1cywgaWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyB0aGUgYXNzaWdubWVudCB0byB0aGVcbicKKyAgICAgICAgICcgICAgIHRhcmdldCBsaXN0LCBpdCB3aWxsIGJlIHRyZWF0ZWQgdGhlIHNhbWUgYXMgYW4gZXJyb3Igb2NjdXJyaW5nXG4nCisgICAgICAgICAnICAgICB3aXRoaW4gdGhlIHN1aXRlIHdvdWxkIGJlLiBTZWUgc3RlcCA2IGJlbG93LlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJzUuIFRoZSBzdWl0ZSBpcyBleGVjdXRlZC5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICc2LiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzICJfX2V4aXRfXygpIiBtZXRob2QgaXMgaW52b2tlZC4gIElmIGFuXG4nCisgICAgICAgICAnICAgZXhjZXB0aW9uIGNhdXNlZCB0aGUgc3VpdGUgdG8gYmUgZXhpdGVkLCBpdHMgdHlwZSwgdmFsdWUsIGFuZFxuJworICAgICAgICAgJyAgIHRyYWNlYmFjayBhcmUgcGFzc2VkIGFzIGFyZ3VtZW50cyB0byAiX19leGl0X18oKSIuIE90aGVyd2lzZSwgJworICAgICAgICAgJ3RocmVlXG4nCisgICAgICAgICAnICAgIk5vbmUiIGFyZ3VtZW50cyBhcmUgc3VwcGxpZWQuXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnICAgSWYgdGhlIHN1aXRlIHdhcyBleGl0ZWQgZHVlIHRvIGFuIGV4Y2VwdGlvbiwgYW5kIHRoZSByZXR1cm4gJworICAgICAgICAgJ3ZhbHVlXG4nCisgICAgICAgICAnICAgZnJvbSB0aGUgIl9fZXhpdF9fKCkiIG1ldGhvZCB3YXMgZmFsc2UsIHRoZSBleGNlcHRpb24gaXMgJworICAgICAgICAgJ3JlcmFpc2VkLlxuJworICAgICAgICAgJyAgIElmIHRoZSByZXR1cm4gdmFsdWUgd2FzIHRydWUsIHRoZSBleGNlcHRpb24gaXMgc3VwcHJlc3NlZCwgYW5kXG4nCisgICAgICAgICAnICAgZXhlY3V0aW9uIGNvbnRpbnVlcyB3aXRoIHRoZSBzdGF0ZW1lbnQgZm9sbG93aW5nIHRoZSAid2l0aCJcbicKKyAgICAgICAgICcgICBzdGF0ZW1lbnQuXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnICAgSWYgdGhlIHN1aXRlIHdhcyBleGl0ZWQgZm9yIGFueSByZWFzb24gb3RoZXIgdGhhbiBhbiBleGNlcHRpb24sICcKKyAgICAgICAgICd0aGVcbicKKyAgICAgICAgICcgICByZXR1cm4gdmFsdWUgZnJvbSAiX19leGl0X18oKSIgaXMgaWdub3JlZCwgYW5kIGV4ZWN1dGlvbiAnCisgICAgICAgICAncHJvY2VlZHNcbicKKyAgICAgICAgICcgICBhdCB0aGUgbm9ybWFsIGxvY2F0aW9uIGZvciB0aGUga2luZCBvZiBleGl0IHRoYXQgd2FzIHRha2VuLlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJ1dpdGggbW9yZSB0aGFuIG9uZSBpdGVtLCB0aGUgY29udGV4dCBtYW5hZ2VycyBhcmUgcHJvY2Vzc2VkIGFzIGlmXG4nCisgICAgICAgICAnbXVsdGlwbGUgIndpdGgiIHN0YXRlbWVudHMgd2VyZSBuZXN0ZWQ6XG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnICAgd2l0aCBBKCkgYXMgYSwgQigpIGFzIGI6XG4nCisgICAgICAgICAnICAgICAgIHN1aXRlXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnaXMgZXF1aXZhbGVudCB0b1xuJworICAgICAgICAgJ1xuJworICAgICAgICAgJyAgIHdpdGggQSgpIGFzIGE6XG4nCisgICAgICAgICAnICAgICAgIHdpdGggQigpIGFzIGI6XG4nCisgICAgICAgICAnICAgICAgICAgICBzdWl0ZVxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJ0NoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IFN1cHBvcnQgZm9yIG11bHRpcGxlIGNvbnRleHQgZXhwcmVzc2lvbnMuXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnU2VlIGFsc286XG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnICAqKlBFUCAzNDMqKiAtIFRoZSAid2l0aCIgc3RhdGVtZW50XG4nCisgICAgICAgICAnICAgICBUaGUgc3BlY2lmaWNhdGlvbiwgYmFja2dyb3VuZCwgYW5kIGV4YW1wbGVzIGZvciB0aGUgUHl0aG9uICcKKyAgICAgICAgICcid2l0aCJcbicKKyAgICAgICAgICcgICAgIHN0YXRlbWVudC5cbicsCisgJ3lpZWxkJzogJ1xuJworICAgICAgICAgICdUaGUgInlpZWxkIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICB5aWVsZF9zdG10IDo6PSB5aWVsZF9leHByZXNzaW9uXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBICJ5aWVsZCIgc3RhdGVtZW50IGlzIHNlbWFudGljYWxseSBlcXVpdmFsZW50IHRvIGEgeWllbGQgJworICAgICAgICAgICdleHByZXNzaW9uLlxuJworICAgICAgICAgICdUaGUgeWllbGQgc3RhdGVtZW50IGNhbiBiZSB1c2VkIHRvIG9taXQgdGhlIHBhcmVudGhlc2VzIHRoYXQgd291bGRcbicKKyAgICAgICAgICAnb3RoZXJ3aXNlIGJlIHJlcXVpcmVkIGluIHRoZSBlcXVpdmFsZW50IHlpZWxkIGV4cHJlc3Npb24gJworICAgICAgICAgICdzdGF0ZW1lbnQuXG4nCisgICAgICAgICAgJ0ZvciBleGFtcGxlLCB0aGUgeWllbGQgc3RhdGVtZW50c1xuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgeWllbGQgPGV4cHI+XG4nCisgICAgICAgICAgJyAgIHlpZWxkIGZyb20gPGV4cHI+XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdhcmUgZXF1aXZhbGVudCB0byB0aGUgeWllbGQgZXhwcmVzc2lvbiBzdGF0ZW1lbnRzXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAoeWllbGQgPGV4cHI+KVxuJworICAgICAgICAgICcgICAoeWllbGQgZnJvbSA8ZXhwcj4pXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdZaWVsZCBleHByZXNzaW9ucyBhbmQgc3RhdGVtZW50cyBhcmUgb25seSB1c2VkIHdoZW4gZGVmaW5pbmcgYVxuJworICAgICAgICAgICcqZ2VuZXJhdG9yKiBmdW5jdGlvbiwgYW5kIGFyZSBvbmx5IHVzZWQgaW4gdGhlIGJvZHkgb2YgdGhlICcKKyAgICAgICAgICAnZ2VuZXJhdG9yXG4nCisgICAgICAgICAgJ2Z1bmN0aW9uLiAgVXNpbmcgeWllbGQgaW4gYSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIHN1ZmZpY2llbnQgdG8gJworICAgICAgICAgICdjYXVzZVxuJworICAgICAgICAgICd0aGF0IGRlZmluaXRpb24gdG8gY3JlYXRlIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uIGluc3RlYWQgb2YgYSBub3JtYWxcbicKKyAgICAgICAgICAnZnVuY3Rpb24uXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdGb3IgZnVsbCBkZXRhaWxzIG9mICJ5aWVsZCIgc2VtYW50aWNzLCByZWZlciB0byB0aGUgWWllbGQgJworICAgICAgICAgICdleHByZXNzaW9uc1xuJworICAgICAgICAgICdzZWN0aW9uLlxuJ30KZGlmZiAtLWdpdCBhL0xpYi9yYW5kb20ucHkgYi9MaWIvcmFuZG9tLnB5CmluZGV4IDRlZmJiMGEuLjQ5YjBmMTQgMTAwNjQ0Ci0tLSBhL0xpYi9yYW5kb20ucHkKKysrIGIvTGliL3JhbmRvbS5weQpAQCAtOCw2ICs4LDcgQEAKICAgICAtLS0tLS0tLS0KICAgICAgICAgICAgcGljayByYW5kb20gZWxlbWVudAogICAgICAgICAgICBwaWNrIHJhbmRvbSBzYW1wbGUKKyAgICAgICAgICAgcGljayB3ZWlnaHRlZCByYW5kb20gc2FtcGxlCiAgICAgICAgICAgIGdlbmVyYXRlIHJhbmRvbSBwZXJtdXRhdGlvbgogCiAgICAgZGlzdHJpYnV0aW9ucyBvbiB0aGUgcmVhbCBsaW5lOgpAQCAtNDMsMTIgKzQ0LDE0IEBACiBmcm9tIG9zIGltcG9ydCB1cmFuZG9tIGFzIF91cmFuZG9tCiBmcm9tIF9jb2xsZWN0aW9uc19hYmMgaW1wb3J0IFNldCBhcyBfU2V0LCBTZXF1ZW5jZSBhcyBfU2VxdWVuY2UKIGZyb20gaGFzaGxpYiBpbXBvcnQgc2hhNTEyIGFzIF9zaGE1MTIKK2ltcG9ydCBpdGVydG9vbHMgYXMgX2l0ZXJ0b29scworaW1wb3J0IGJpc2VjdCBhcyBfYmlzZWN0CiAKIF9fYWxsX18gPSBbIlJhbmRvbSIsInNlZWQiLCJyYW5kb20iLCJ1bmlmb3JtIiwicmFuZGludCIsImNob2ljZSIsInNhbXBsZSIsCiAgICAgICAgICAgICJyYW5kcmFuZ2UiLCJzaHVmZmxlIiwibm9ybWFsdmFyaWF0ZSIsImxvZ25vcm12YXJpYXRlIiwKICAgICAgICAgICAgImV4cG92YXJpYXRlIiwidm9ubWlzZXN2YXJpYXRlIiwiZ2FtbWF2YXJpYXRlIiwidHJpYW5ndWxhciIsCiAgICAgICAgICAgICJnYXVzcyIsImJldGF2YXJpYXRlIiwicGFyZXRvdmFyaWF0ZSIsIndlaWJ1bGx2YXJpYXRlIiwKLSAgICAgICAgICAgImdldHN0YXRlIiwic2V0c3RhdGUiLCAiZ2V0cmFuZGJpdHMiLAorICAgICAgICAgICAiZ2V0c3RhdGUiLCJzZXRzdGF0ZSIsICJnZXRyYW5kYml0cyIsICJjaG9pY2VzIiwKICAgICAgICAgICAgIlN5c3RlbVJhbmRvbSJdCiAKIE5WX01BR0lDQ09OU1QgPSA0ICogX2V4cCgtMC41KS9fc3FydCgyLjApCkBAIC0xMDUsMTUgKzEwOCw2IEBACiAKICAgICAgICAgIiIiCiAKLSAgICAgICAgaWYgYSBpcyBOb25lOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICMgU2VlZCB3aXRoIGVub3VnaCBieXRlcyB0byBzcGFuIHRoZSAxOTkzNyBiaXQKLSAgICAgICAgICAgICAgICAjIHN0YXRlIHNwYWNlIGZvciB0aGUgTWVyc2VubmUgVHdpc3RlcgotICAgICAgICAgICAgICAgIGEgPSBpbnQuZnJvbV9ieXRlcyhfdXJhbmRvbSgyNTAwKSwgJ2JpZycpCi0gICAgICAgICAgICBleGNlcHQgTm90SW1wbGVtZW50ZWRFcnJvcjoKLSAgICAgICAgICAgICAgICBpbXBvcnQgdGltZQotICAgICAgICAgICAgICAgIGEgPSBpbnQodGltZS50aW1lKCkgKiAyNTYpICMgdXNlIGZyYWN0aW9uYWwgc2Vjb25kcwotCiAgICAgICAgIGlmIHZlcnNpb24gPT0gMSBhbmQgaXNpbnN0YW5jZShhLCAoc3RyLCBieXRlcykpOgogICAgICAgICAgICAgeCA9IG9yZChhWzBdKSA8PCA3IGlmIGEgZWxzZSAwCiAgICAgICAgICAgICBmb3IgYyBpbiBhOgpAQCAtMTIxLDEyICsxMTUsMTEgQEAKICAgICAgICAgICAgIHggXj0gbGVuKGEpCiAgICAgICAgICAgICBhID0gLTIgaWYgeCA9PSAtMSBlbHNlIHgKIAotICAgICAgICBpZiB2ZXJzaW9uID09IDI6Ci0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKGEsIChzdHIsIGJ5dGVzLCBieXRlYXJyYXkpKToKLSAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGEsIHN0cik6Ci0gICAgICAgICAgICAgICAgICAgIGEgPSBhLmVuY29kZSgpCi0gICAgICAgICAgICAgICAgYSArPSBfc2hhNTEyKGEpLmRpZ2VzdCgpCi0gICAgICAgICAgICAgICAgYSA9IGludC5mcm9tX2J5dGVzKGEsICdiaWcnKQorICAgICAgICBpZiB2ZXJzaW9uID09IDIgYW5kIGlzaW5zdGFuY2UoYSwgKHN0ciwgYnl0ZXMsIGJ5dGVhcnJheSkpOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShhLCBzdHIpOgorICAgICAgICAgICAgICAgIGEgPSBhLmVuY29kZSgpCisgICAgICAgICAgICBhICs9IF9zaGE1MTIoYSkuZGlnZXN0KCkKKyAgICAgICAgICAgIGEgPSBpbnQuZnJvbV9ieXRlcyhhLCAnYmlnJykKIAogICAgICAgICBzdXBlcigpLnNlZWQoYSkKICAgICAgICAgc2VsZi5nYXVzc19uZXh0ID0gTm9uZQpAQCAtMzIxLDcgKzMxNCw3IEBACiAgICAgICAgIHJhbmRiZWxvdyA9IHNlbGYuX3JhbmRiZWxvdwogICAgICAgICBuID0gbGVuKHBvcHVsYXRpb24pCiAgICAgICAgIGlmIG5vdCAwIDw9IGsgPD0gbjoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlNhbXBsZSBsYXJnZXIgdGhhbiBwb3B1bGF0aW9uIikKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlNhbXBsZSBsYXJnZXIgdGhhbiBwb3B1bGF0aW9uIG9yIGlzIG5lZ2F0aXZlIikKICAgICAgICAgcmVzdWx0ID0gW05vbmVdICogawogICAgICAgICBzZXRzaXplID0gMjEgICAgICAgICMgc2l6ZSBvZiBhIHNtYWxsIHNldCBtaW51cyBzaXplIG9mIGFuIGVtcHR5IGxpc3QKICAgICAgICAgaWYgayA+IDU6CkBAIC0zNDQsNiArMzM3LDI4IEBACiAgICAgICAgICAgICAgICAgcmVzdWx0W2ldID0gcG9wdWxhdGlvbltqXQogICAgICAgICByZXR1cm4gcmVzdWx0CiAKKyAgICBkZWYgY2hvaWNlcyhzZWxmLCBwb3B1bGF0aW9uLCB3ZWlnaHRzPU5vbmUsICosIGN1bV93ZWlnaHRzPU5vbmUsIGs9MSk6CisgICAgICAgICIiIlJldHVybiBhIGsgc2l6ZWQgbGlzdCBvZiBwb3B1bGF0aW9uIGVsZW1lbnRzIGNob3NlbiB3aXRoIHJlcGxhY2VtZW50LgorCisgICAgICAgIElmIHRoZSByZWxhdGl2ZSB3ZWlnaHRzIG9yIGN1bXVsYXRpdmUgd2VpZ2h0cyBhcmUgbm90IHNwZWNpZmllZCwKKyAgICAgICAgdGhlIHNlbGVjdGlvbnMgYXJlIG1hZGUgd2l0aCBlcXVhbCBwcm9iYWJpbGl0eS4KKworICAgICAgICAiIiIKKyAgICAgICAgcmFuZG9tID0gc2VsZi5yYW5kb20KKyAgICAgICAgaWYgY3VtX3dlaWdodHMgaXMgTm9uZToKKyAgICAgICAgICAgIGlmIHdlaWdodHMgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBfaW50ID0gaW50CisgICAgICAgICAgICAgICAgdG90YWwgPSBsZW4ocG9wdWxhdGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm4gW3BvcHVsYXRpb25bX2ludChyYW5kb20oKSAqIHRvdGFsKV0gZm9yIGkgaW4gcmFuZ2UoayldCisgICAgICAgICAgICBjdW1fd2VpZ2h0cyA9IGxpc3QoX2l0ZXJ0b29scy5hY2N1bXVsYXRlKHdlaWdodHMpKQorICAgICAgICBlbGlmIHdlaWdodHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ0Nhbm5vdCBzcGVjaWZ5IGJvdGggd2VpZ2h0cyBhbmQgY3VtdWxhdGl2ZSB3ZWlnaHRzJykKKyAgICAgICAgaWYgbGVuKGN1bV93ZWlnaHRzKSAhPSBsZW4ocG9wdWxhdGlvbik6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdUaGUgbnVtYmVyIG9mIHdlaWdodHMgZG9lcyBub3QgbWF0Y2ggdGhlIHBvcHVsYXRpb24nKQorICAgICAgICBiaXNlY3QgPSBfYmlzZWN0LmJpc2VjdAorICAgICAgICB0b3RhbCA9IGN1bV93ZWlnaHRzWy0xXQorICAgICAgICByZXR1cm4gW3BvcHVsYXRpb25bYmlzZWN0KGN1bV93ZWlnaHRzLCByYW5kb20oKSAqIHRvdGFsKV0gZm9yIGkgaW4gcmFuZ2UoayldCisKICMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tIHJlYWwtdmFsdWVkIGRpc3RyaWJ1dGlvbnMgIC0tLS0tLS0tLS0tLS0tLS0tLS0KIAogIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gdW5pZm9ybSBkaXN0cmlidXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNjE1LDExICs2MzAsMTEgQEAKIAogICAgICAgICAjIFRoaXMgdmVyc2lvbiBkdWUgdG8gSmFubmUgU2lua2tvbmVuLCBhbmQgbWF0Y2hlcyBhbGwgdGhlIHN0ZAogICAgICAgICAjIHRleHRzIChlLmcuLCBLbnV0aCBWb2wgMiBFZCAzIHBnIDEzNCAidGhlIGJldGEgZGlzdHJpYnV0aW9uIikuCi0gICAgICAgIHkgPSBzZWxmLmdhbW1hdmFyaWF0ZShhbHBoYSwgMS4pCisgICAgICAgIHkgPSBzZWxmLmdhbW1hdmFyaWF0ZShhbHBoYSwgMS4wKQogICAgICAgICBpZiB5ID09IDA6CiAgICAgICAgICAgICByZXR1cm4gMC4wCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4geSAvICh5ICsgc2VsZi5nYW1tYXZhcmlhdGUoYmV0YSwgMS4pKQorICAgICAgICAgICAgcmV0dXJuIHkgLyAoeSArIHNlbGYuZ2FtbWF2YXJpYXRlKGJldGEsIDEuMCkpCiAKICMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tIFBhcmV0byAtLS0tLS0tLS0tLS0tLS0tLS0tLQogCkBAIC03MzQsNiArNzQ5LDcgQEAKIHJhbmRyYW5nZSA9IF9pbnN0LnJhbmRyYW5nZQogc2FtcGxlID0gX2luc3Quc2FtcGxlCiBzaHVmZmxlID0gX2luc3Quc2h1ZmZsZQorY2hvaWNlcyA9IF9pbnN0LmNob2ljZXMKIG5vcm1hbHZhcmlhdGUgPSBfaW5zdC5ub3JtYWx2YXJpYXRlCiBsb2dub3JtdmFyaWF0ZSA9IF9pbnN0LmxvZ25vcm12YXJpYXRlCiBleHBvdmFyaWF0ZSA9IF9pbnN0LmV4cG92YXJpYXRlCmRpZmYgLS1naXQgYS9MaWIvcmUucHkgYi9MaWIvcmUucHkKaW5kZXggZGRlODkwMS4uZDMyMWNmZiAxMDA2NDQKLS0tIGEvTGliL3JlLnB5CisrKyBiL0xpYi9yZS5weQpAQCAtMTE5LDkgKzExOSwxMCBAQAogCiAiIiIKIAotaW1wb3J0IHN5cworaW1wb3J0IGVudW0KIGltcG9ydCBzcmVfY29tcGlsZQogaW1wb3J0IHNyZV9wYXJzZQoraW1wb3J0IGZ1bmN0b29scwogdHJ5OgogICAgIGltcG9ydCBfbG9jYWxlCiBleGNlcHQgSW1wb3J0RXJyb3I6CkBAIC0xMzgsMTggKzEzOSwyNiBAQAogCiBfX3ZlcnNpb25fXyA9ICIyLjIuMSIKIAotIyBmbGFncwotQSA9IEFTQ0lJID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfQVNDSUkgIyBhc3N1bWUgYXNjaWkgImxvY2FsZSIKLUkgPSBJR05PUkVDQVNFID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfSUdOT1JFQ0FTRSAjIGlnbm9yZSBjYXNlCi1MID0gTE9DQUxFID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfTE9DQUxFICMgYXNzdW1lIGN1cnJlbnQgOC1iaXQgbG9jYWxlCi1VID0gVU5JQ09ERSA9IHNyZV9jb21waWxlLlNSRV9GTEFHX1VOSUNPREUgIyBhc3N1bWUgdW5pY29kZSAibG9jYWxlIgotTSA9IE1VTFRJTElORSA9IHNyZV9jb21waWxlLlNSRV9GTEFHX01VTFRJTElORSAjIG1ha2UgYW5jaG9ycyBsb29rIGZvciBuZXdsaW5lCi1TID0gRE9UQUxMID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfRE9UQUxMICMgbWFrZSBkb3QgbWF0Y2ggbmV3bGluZQotWCA9IFZFUkJPU0UgPSBzcmVfY29tcGlsZS5TUkVfRkxBR19WRVJCT1NFICMgaWdub3JlIHdoaXRlc3BhY2UgYW5kIGNvbW1lbnRzCi0KLSMgc3JlIGV4dGVuc2lvbnMgKGV4cGVyaW1lbnRhbCwgZG9uJ3QgcmVseSBvbiB0aGVzZSkKLVQgPSBURU1QTEFURSA9IHNyZV9jb21waWxlLlNSRV9GTEFHX1RFTVBMQVRFICMgZGlzYWJsZSBiYWNrdHJhY2tpbmcKLURFQlVHID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfREVCVUcgIyBkdW1wIHBhdHRlcm4gYWZ0ZXIgY29tcGlsYXRpb24KK2NsYXNzIFJlZ2V4RmxhZyhlbnVtLkludEZsYWcpOgorICAgIEFTQ0lJID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfQVNDSUkgIyBhc3N1bWUgYXNjaWkgImxvY2FsZSIKKyAgICBJR05PUkVDQVNFID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfSUdOT1JFQ0FTRSAjIGlnbm9yZSBjYXNlCisgICAgTE9DQUxFID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfTE9DQUxFICMgYXNzdW1lIGN1cnJlbnQgOC1iaXQgbG9jYWxlCisgICAgVU5JQ09ERSA9IHNyZV9jb21waWxlLlNSRV9GTEFHX1VOSUNPREUgIyBhc3N1bWUgdW5pY29kZSAibG9jYWxlIgorICAgIE1VTFRJTElORSA9IHNyZV9jb21waWxlLlNSRV9GTEFHX01VTFRJTElORSAjIG1ha2UgYW5jaG9ycyBsb29rIGZvciBuZXdsaW5lCisgICAgRE9UQUxMID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfRE9UQUxMICMgbWFrZSBkb3QgbWF0Y2ggbmV3bGluZQorICAgIFZFUkJPU0UgPSBzcmVfY29tcGlsZS5TUkVfRkxBR19WRVJCT1NFICMgaWdub3JlIHdoaXRlc3BhY2UgYW5kIGNvbW1lbnRzCisgICAgQSA9IEFTQ0lJCisgICAgSSA9IElHTk9SRUNBU0UKKyAgICBMID0gTE9DQUxFCisgICAgVSA9IFVOSUNPREUKKyAgICBNID0gTVVMVElMSU5FCisgICAgUyA9IERPVEFMTAorICAgIFggPSBWRVJCT1NFCisgICAgIyBzcmUgZXh0ZW5zaW9ucyAoZXhwZXJpbWVudGFsLCBkb24ndCByZWx5IG9uIHRoZXNlKQorICAgIFRFTVBMQVRFID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfVEVNUExBVEUgIyBkaXNhYmxlIGJhY2t0cmFja2luZworICAgIFQgPSBURU1QTEFURQorICAgIERFQlVHID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfREVCVUcgIyBkdW1wIHBhdHRlcm4gYWZ0ZXIgY29tcGlsYXRpb24KK2dsb2JhbHMoKS51cGRhdGUoUmVnZXhGbGFnLl9fbWVtYmVyc19fKQogCiAjIHNyZSBleGNlcHRpb24KIGVycm9yID0gc3JlX2NvbXBpbGUuZXJyb3IKQEAgLTIyNiw3ICsyMzUsNyBAQAogZGVmIHB1cmdlKCk6CiAgICAgIkNsZWFyIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gY2FjaGVzIgogICAgIF9jYWNoZS5jbGVhcigpCi0gICAgX2NhY2hlX3JlcGwuY2xlYXIoKQorICAgIF9jb21waWxlX3JlcGwuY2FjaGVfY2xlYXIoKQogCiBkZWYgdGVtcGxhdGUocGF0dGVybiwgZmxhZ3M9MCk6CiAgICAgIkNvbXBpbGUgYSB0ZW1wbGF0ZSBwYXR0ZXJuLCByZXR1cm5pbmcgYSBwYXR0ZXJuIG9iamVjdCIKQEAgLTI3MCw3ICsyNzksNiBAQAogIyBpbnRlcm5hbHMKIAogX2NhY2hlID0ge30KLV9jYWNoZV9yZXBsID0ge30KIAogX3BhdHRlcm5fdHlwZSA9IHR5cGUoc3JlX2NvbXBpbGUuY29tcGlsZSgiIiwgMCkpCiAKQEAgLTMwMywxNyArMzExLDEwIEBACiAgICAgICAgIF9jYWNoZVt0eXBlKHBhdHRlcm4pLCBwYXR0ZXJuLCBmbGFnc10gPSBwLCBsb2MKICAgICByZXR1cm4gcAogCitAZnVuY3Rvb2xzLmxydV9jYWNoZShfTUFYQ0FDSEUpCiBkZWYgX2NvbXBpbGVfcmVwbChyZXBsLCBwYXR0ZXJuKToKICAgICAjIGludGVybmFsOiBjb21waWxlIHJlcGxhY2VtZW50IHBhdHRlcm4KLSAgICB0cnk6Ci0gICAgICAgIHJldHVybiBfY2FjaGVfcmVwbFtyZXBsLCBwYXR0ZXJuXQotICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgcGFzcwotICAgIHAgPSBzcmVfcGFyc2UucGFyc2VfdGVtcGxhdGUocmVwbCwgcGF0dGVybikKLSAgICBpZiBsZW4oX2NhY2hlX3JlcGwpID49IF9NQVhDQUNIRToKLSAgICAgICAgX2NhY2hlX3JlcGwuY2xlYXIoKQotICAgIF9jYWNoZV9yZXBsW3JlcGwsIHBhdHRlcm5dID0gcAotICAgIHJldHVybiBwCisgICAgcmV0dXJuIHNyZV9wYXJzZS5wYXJzZV90ZW1wbGF0ZShyZXBsLCBwYXR0ZXJuKQogCiBkZWYgX2V4cGFuZChwYXR0ZXJuLCBtYXRjaCwgdGVtcGxhdGUpOgogICAgICMgaW50ZXJuYWw6IG1hdGNoLmV4cGFuZCBpbXBsZW1lbnRhdGlvbiBob29rCkBAIC0zNTMsNyArMzU0LDcgQEAKICAgICAgICAgZm9yIHBocmFzZSwgYWN0aW9uIGluIGxleGljb246CiAgICAgICAgICAgICBnaWQgPSBzLm9wZW5ncm91cCgpCiAgICAgICAgICAgICBwLmFwcGVuZChzcmVfcGFyc2UuU3ViUGF0dGVybihzLCBbCi0gICAgICAgICAgICAgICAgKFNVQlBBVFRFUk4sIChnaWQsIHNyZV9wYXJzZS5wYXJzZShwaHJhc2UsIGZsYWdzKSkpLAorICAgICAgICAgICAgICAgIChTVUJQQVRURVJOLCAoZ2lkLCAwLCAwLCBzcmVfcGFyc2UucGFyc2UocGhyYXNlLCBmbGFncykpKSwKICAgICAgICAgICAgICAgICBdKSkKICAgICAgICAgICAgIHMuY2xvc2Vncm91cChnaWQsIHBbLTFdKQogICAgICAgICBwID0gc3JlX3BhcnNlLlN1YlBhdHRlcm4ocywgWyhCUkFOQ0gsIChOb25lLCBwKSldKQpkaWZmIC0tZ2l0IGEvTGliL3JsY29tcGxldGVyLnB5IGIvTGliL3JsY29tcGxldGVyLnB5CmluZGV4IDQwMWE2MjYuLmJjYTRhN2IgMTAwNjQ0Ci0tLSBhL0xpYi9ybGNvbXBsZXRlci5weQorKysgYi9MaWIvcmxjb21wbGV0ZXIucHkKQEAgLTExMyw2ICsxMTMsMTIgQEAKICAgICAgICAgZm9yIHdvcmQgaW4ga2V5d29yZC5rd2xpc3Q6CiAgICAgICAgICAgICBpZiB3b3JkWzpuXSA9PSB0ZXh0OgogICAgICAgICAgICAgICAgIHNlZW4uYWRkKHdvcmQpCisgICAgICAgICAgICAgICAgaWYgd29yZCBpbiB7J2ZpbmFsbHknLCAndHJ5J306CisgICAgICAgICAgICAgICAgICAgIHdvcmQgPSB3b3JkICsgJzonCisgICAgICAgICAgICAgICAgZWxpZiB3b3JkIG5vdCBpbiB7J0ZhbHNlJywgJ05vbmUnLCAnVHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JyZWFrJywgJ2NvbnRpbnVlJywgJ3Bhc3MnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbHNlJ306CisgICAgICAgICAgICAgICAgICAgIHdvcmQgPSB3b3JkICsgJyAnCiAgICAgICAgICAgICAgICAgbWF0Y2hlcy5hcHBlbmQod29yZCkKICAgICAgICAgZm9yIG5zcGFjZSBpbiBbc2VsZi5uYW1lc3BhY2UsIGJ1aWx0aW5zLl9fZGljdF9fXToKICAgICAgICAgICAgIGZvciB3b3JkLCB2YWwgaW4gbnNwYWNlLml0ZW1zKCk6CkBAIC0xNTIsMTQgKzE1OCwzMCBAQAogICAgICAgICAgICAgd29yZHMudXBkYXRlKGdldF9jbGFzc19tZW1iZXJzKHRoaXNvYmplY3QuX19jbGFzc19fKSkKICAgICAgICAgbWF0Y2hlcyA9IFtdCiAgICAgICAgIG4gPSBsZW4oYXR0cikKLSAgICAgICAgZm9yIHdvcmQgaW4gd29yZHM6Ci0gICAgICAgICAgICBpZiB3b3JkWzpuXSA9PSBhdHRyOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgdmFsID0gZ2V0YXR0cih0aGlzb2JqZWN0LCB3b3JkKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlICAjIEV4Y2x1ZGUgcHJvcGVydGllcyB0aGF0IGFyZSBub3Qgc2V0Ci0gICAgICAgICAgICAgICAgd29yZCA9IHNlbGYuX2NhbGxhYmxlX3Bvc3RmaXgodmFsLCAiJXMuJXMiICUgKGV4cHIsIHdvcmQpKQotICAgICAgICAgICAgICAgIG1hdGNoZXMuYXBwZW5kKHdvcmQpCisgICAgICAgIGlmIGF0dHIgPT0gJyc6CisgICAgICAgICAgICBub3ByZWZpeCA9ICdfJworICAgICAgICBlbGlmIGF0dHIgPT0gJ18nOgorICAgICAgICAgICAgbm9wcmVmaXggPSAnX18nCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBub3ByZWZpeCA9IE5vbmUKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGZvciB3b3JkIGluIHdvcmRzOgorICAgICAgICAgICAgICAgIGlmICh3b3JkWzpuXSA9PSBhdHRyIGFuZAorICAgICAgICAgICAgICAgICAgICBub3QgKG5vcHJlZml4IGFuZCB3b3JkWzpuKzFdID09IG5vcHJlZml4KSk6CisgICAgICAgICAgICAgICAgICAgIG1hdGNoID0gIiVzLiVzIiAlIChleHByLCB3b3JkKQorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICB2YWwgPSBnZXRhdHRyKHRoaXNvYmplY3QsIHdvcmQpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICAgICAgICAgICAgICBwYXNzICAjIEluY2x1ZGUgZXZlbiBpZiBhdHRyaWJ1dGUgbm90IHNldAorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggPSBzZWxmLl9jYWxsYWJsZV9wb3N0Zml4KHZhbCwgbWF0Y2gpCisgICAgICAgICAgICAgICAgICAgIG1hdGNoZXMuYXBwZW5kKG1hdGNoKQorICAgICAgICAgICAgaWYgbWF0Y2hlcyBvciBub3Qgbm9wcmVmaXg6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGlmIG5vcHJlZml4ID09ICdfJzoKKyAgICAgICAgICAgICAgICBub3ByZWZpeCA9ICdfXycKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbm9wcmVmaXggPSBOb25lCiAgICAgICAgIG1hdGNoZXMuc29ydCgpCiAgICAgICAgIHJldHVybiBtYXRjaGVzCiAKZGlmZiAtLWdpdCBhL0xpYi9zY2hlZC5weSBiL0xpYi9zY2hlZC5weQppbmRleCBiNDc2NDhkLi4zZDhjMDExIDEwMDY0NAotLS0gYS9MaWIvc2NoZWQucHkKKysrIGIvTGliL3NjaGVkLnB5CkBAIC0yMywxMSArMjMsNiBAQAogaGFzIGFub3RoZXIgd2F5IHRvIHJlZmVyZW5jZSBwcml2YXRlIGRhdGEgKGJlc2lkZXMgZ2xvYmFsIHZhcmlhYmxlcykuCiAiIiIKIAotIyBYWFggVGhlIHRpbWVmdW5jIGFuZCBkZWxheWZ1bmMgc2hvdWxkIGhhdmUgYmVlbiBkZWZpbmVkIGFzIG1ldGhvZHMKLSMgWFhYIHNvIHlvdSBjYW4gZGVmaW5lIG5ldyBraW5kcyBvZiBzY2hlZHVsZXJzIHVzaW5nIHN1YmNsYXNzaW5nCi0jIFhYWCBpbnN0ZWFkIG9mIGhhdmluZyB0byBkZWZpbmUgYSBtb2R1bGUgb3IgY2xhc3MganVzdCB0byBob2xkCi0jIFhYWCB0aGUgZ2xvYmFsIHN0YXRlIG9mIHlvdXIgcGFydGljdWxhciB0aW1lIGFuZCBkZWxheSBmdW5jdGlvbnMuCi0KIGltcG9ydCB0aW1lCiBpbXBvcnQgaGVhcHEKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUKQEAgLTQwLDEyICszNSwyNCBAQAogX19hbGxfXyA9IFsic2NoZWR1bGVyIl0KIAogY2xhc3MgRXZlbnQobmFtZWR0dXBsZSgnRXZlbnQnLCAndGltZSwgcHJpb3JpdHksIGFjdGlvbiwgYXJndW1lbnQsIGt3YXJncycpKToKKyAgICBfX3Nsb3RzX18gPSBbXQogICAgIGRlZiBfX2VxX18ocywgbyk6IHJldHVybiAocy50aW1lLCBzLnByaW9yaXR5KSA9PSAoby50aW1lLCBvLnByaW9yaXR5KQogICAgIGRlZiBfX2x0X18ocywgbyk6IHJldHVybiAocy50aW1lLCBzLnByaW9yaXR5KSA8ICAoby50aW1lLCBvLnByaW9yaXR5KQogICAgIGRlZiBfX2xlX18ocywgbyk6IHJldHVybiAocy50aW1lLCBzLnByaW9yaXR5KSA8PSAoby50aW1lLCBvLnByaW9yaXR5KQogICAgIGRlZiBfX2d0X18ocywgbyk6IHJldHVybiAocy50aW1lLCBzLnByaW9yaXR5KSA+ICAoby50aW1lLCBvLnByaW9yaXR5KQogICAgIGRlZiBfX2dlX18ocywgbyk6IHJldHVybiAocy50aW1lLCBzLnByaW9yaXR5KSA+PSAoby50aW1lLCBvLnByaW9yaXR5KQogCitFdmVudC50aW1lLl9fZG9jX18gPSAoJycnTnVtZXJpYyB0eXBlIGNvbXBhdGlibGUgd2l0aCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZQordGltZWZ1bmMgZnVuY3Rpb24gcGFzc2VkIHRvIHRoZSBjb25zdHJ1Y3Rvci4nJycpCitFdmVudC5wcmlvcml0eS5fX2RvY19fID0gKCcnJ0V2ZW50cyBzY2hlZHVsZWQgZm9yIHRoZSBzYW1lIHRpbWUgd2lsbCBiZSBleGVjdXRlZAoraW4gdGhlIG9yZGVyIG9mIHRoZWlyIHByaW9yaXR5LicnJykKK0V2ZW50LmFjdGlvbi5fX2RvY19fID0gKCcnJ0V4ZWN1dGluZyB0aGUgZXZlbnQgbWVhbnMgZXhlY3V0aW5nCithY3Rpb24oKmFyZ3VtZW50LCAqKmt3YXJncyknJycpCitFdmVudC5hcmd1bWVudC5fX2RvY19fID0gKCcnJ2FyZ3VtZW50IGlzIGEgc2VxdWVuY2UgaG9sZGluZyB0aGUgcG9zaXRpb25hbAorYXJndW1lbnRzIGZvciB0aGUgYWN0aW9uLicnJykKK0V2ZW50Lmt3YXJncy5fX2RvY19fID0gKCcnJ2t3YXJncyBpcyBhIGRpY3Rpb25hcnkgaG9sZGluZyB0aGUga2V5d29yZAorYXJndW1lbnRzIGZvciB0aGUgYWN0aW9uLicnJykKKwogX3NlbnRpbmVsID0gb2JqZWN0KCkKIAogY2xhc3Mgc2NoZWR1bGVyOgpkaWZmIC0tZ2l0IGEvTGliL3NlY3JldHMucHkgYi9MaWIvc2VjcmV0cy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yN2ZhNDUwCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3NlY3JldHMucHkKQEAgLTAsMCArMSw3MSBAQAorIiIiR2VuZXJhdGUgY3J5cHRvZ3JhcGhpY2FsbHkgc3Ryb25nIHBzZXVkby1yYW5kb20gbnVtYmVycyBzdWl0YWJsZSBmb3IKK21hbmFnaW5nIHNlY3JldHMgc3VjaCBhcyBhY2NvdW50IGF1dGhlbnRpY2F0aW9uLCB0b2tlbnMsIGFuZCBzaW1pbGFyLgorCitTZWUgUEVQIDUwNiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KK2h0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTA1MDYvCisKKyIiIgorCitfX2FsbF9fID0gWydjaG9pY2UnLCAncmFuZGJlbG93JywgJ3JhbmRiaXRzJywgJ1N5c3RlbVJhbmRvbScsCisgICAgICAgICAgICd0b2tlbl9ieXRlcycsICd0b2tlbl9oZXgnLCAndG9rZW5fdXJsc2FmZScsCisgICAgICAgICAgICdjb21wYXJlX2RpZ2VzdCcsCisgICAgICAgICAgIF0KKworCitpbXBvcnQgYmFzZTY0CitpbXBvcnQgYmluYXNjaWkKK2ltcG9ydCBvcworCitmcm9tIGhtYWMgaW1wb3J0IGNvbXBhcmVfZGlnZXN0Citmcm9tIHJhbmRvbSBpbXBvcnQgU3lzdGVtUmFuZG9tCisKK19zeXNyYW5kID0gU3lzdGVtUmFuZG9tKCkKKworcmFuZGJpdHMgPSBfc3lzcmFuZC5nZXRyYW5kYml0cworY2hvaWNlID0gX3N5c3JhbmQuY2hvaWNlCisKK2RlZiByYW5kYmVsb3coZXhjbHVzaXZlX3VwcGVyX2JvdW5kKToKKyAgICAiIiJSZXR1cm4gYSByYW5kb20gaW50IGluIHRoZSByYW5nZSBbMCwgbikuIiIiCisgICAgcmV0dXJuIF9zeXNyYW5kLl9yYW5kYmVsb3coZXhjbHVzaXZlX3VwcGVyX2JvdW5kKQorCitERUZBVUxUX0VOVFJPUFkgPSAzMiAgIyBudW1iZXIgb2YgYnl0ZXMgdG8gcmV0dXJuIGJ5IGRlZmF1bHQKKworZGVmIHRva2VuX2J5dGVzKG5ieXRlcz1Ob25lKToKKyAgICAiIiJSZXR1cm4gYSByYW5kb20gYnl0ZSBzdHJpbmcgY29udGFpbmluZyAqbmJ5dGVzKiBieXRlcy4KKworICAgIElmICpuYnl0ZXMqIGlzIGBgTm9uZWBgIG9yIG5vdCBzdXBwbGllZCwgYSByZWFzb25hYmxlCisgICAgZGVmYXVsdCBpcyB1c2VkLgorCisgICAgPj4+IHRva2VuX2J5dGVzKDE2KSAgI2RvY3Rlc3Q6K1NLSVAKKyAgICBiJ1xceGViclxceDE3RCp0XFx4YWVcXHhkNFxceGUzU1xceGI2XFx4ZTJcXHhlYlAxXFx4OGInCisKKyAgICAiIiIKKyAgICBpZiBuYnl0ZXMgaXMgTm9uZToKKyAgICAgICAgbmJ5dGVzID0gREVGQVVMVF9FTlRST1BZCisgICAgcmV0dXJuIG9zLnVyYW5kb20obmJ5dGVzKQorCitkZWYgdG9rZW5faGV4KG5ieXRlcz1Ob25lKToKKyAgICAiIiJSZXR1cm4gYSByYW5kb20gdGV4dCBzdHJpbmcsIGluIGhleGFkZWNpbWFsLgorCisgICAgVGhlIHN0cmluZyBoYXMgKm5ieXRlcyogcmFuZG9tIGJ5dGVzLCBlYWNoIGJ5dGUgY29udmVydGVkIHRvIHR3bworICAgIGhleCBkaWdpdHMuICBJZiAqbmJ5dGVzKiBpcyBgYE5vbmVgYCBvciBub3Qgc3VwcGxpZWQsIGEgcmVhc29uYWJsZQorICAgIGRlZmF1bHQgaXMgdXNlZC4KKworICAgID4+PiB0b2tlbl9oZXgoMTYpICAjZG9jdGVzdDorU0tJUAorICAgICdmOWJmNzhiOWExOGNlNmQ0NmEwY2QyYjBiODZkZjlkYScKKworICAgICIiIgorICAgIHJldHVybiBiaW5hc2NpaS5oZXhsaWZ5KHRva2VuX2J5dGVzKG5ieXRlcykpLmRlY29kZSgnYXNjaWknKQorCitkZWYgdG9rZW5fdXJsc2FmZShuYnl0ZXM9Tm9uZSk6CisgICAgIiIiUmV0dXJuIGEgcmFuZG9tIFVSTC1zYWZlIHRleHQgc3RyaW5nLCBpbiBCYXNlNjQgZW5jb2RpbmcuCisKKyAgICBUaGUgc3RyaW5nIGhhcyAqbmJ5dGVzKiByYW5kb20gYnl0ZXMuICBJZiAqbmJ5dGVzKiBpcyBgYE5vbmVgYAorICAgIG9yIG5vdCBzdXBwbGllZCwgYSByZWFzb25hYmxlIGRlZmF1bHQgaXMgdXNlZC4KKworICAgID4+PiB0b2tlbl91cmxzYWZlKDE2KSAgI2RvY3Rlc3Q6K1NLSVAKKyAgICAnRHJtaHplNkVQY3YwZk5fODFCai1uQScKKworICAgICIiIgorICAgIHRvayA9IHRva2VuX2J5dGVzKG5ieXRlcykKKyAgICByZXR1cm4gYmFzZTY0LnVybHNhZmVfYjY0ZW5jb2RlKHRvaykucnN0cmlwKGInPScpLmRlY29kZSgnYXNjaWknKQpkaWZmIC0tZ2l0IGEvTGliL3NobGV4LnB5IGIvTGliL3NobGV4LnB5CmluZGV4IGVjZDJlZmQuLmU4NzI2NmYgMTAwNjQ0Ci0tLSBhL0xpYi9zaGxleC5weQorKysgYi9MaWIvc2hsZXgucHkKQEAgLTUsNiArNSw3IEBACiAjIHB1c2hfc291cmNlKCkgYW5kIHBvcF9zb3VyY2UoKSBtYWRlIGV4cGxpY2l0IGJ5IEVTUiwgSmFudWFyeSAyMDAxLgogIyBQb3NpeCBjb21wbGlhbmNlLCBzcGxpdCgpLCBzdHJpbmcgYXJndW1lbnRzLCBhbmQKICMgaXRlcmF0b3IgaW50ZXJmYWNlIGJ5IEd1c3Rhdm8gTmllbWV5ZXIsIEFwcmlsIDIwMDMuCisjIGNoYW5nZXMgdG8gdG9rZW5pemUgbW9yZSBsaWtlIFBvc2l4IHNoZWxscyBieSBWaW5heSBTYWppcCwgSnVseSAyMDE2LgogCiBpbXBvcnQgb3MKIGltcG9ydCByZQpAQCAtMTcsNyArMTgsOCBAQAogCiBjbGFzcyBzaGxleDoKICAgICAiQSBsZXhpY2FsIGFuYWx5emVyIGNsYXNzIGZvciBzaW1wbGUgc2hlbGwtbGlrZSBzeW50YXhlcy4iCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGluc3RyZWFtPU5vbmUsIGluZmlsZT1Ob25lLCBwb3NpeD1GYWxzZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGluc3RyZWFtPU5vbmUsIGluZmlsZT1Ob25lLCBwb3NpeD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgcHVuY3R1YXRpb25fY2hhcnM9RmFsc2UpOgogICAgICAgICBpZiBpc2luc3RhbmNlKGluc3RyZWFtLCBzdHIpOgogICAgICAgICAgICAgaW5zdHJlYW0gPSBTdHJpbmdJTyhpbnN0cmVhbSkKICAgICAgICAgaWYgaW5zdHJlYW0gaXMgbm90IE5vbmU6CkBAIC00OSw2ICs1MSwxOSBAQAogICAgICAgICBzZWxmLnRva2VuID0gJycKICAgICAgICAgc2VsZi5maWxlc3RhY2sgPSBkZXF1ZSgpCiAgICAgICAgIHNlbGYuc291cmNlID0gTm9uZQorICAgICAgICBpZiBub3QgcHVuY3R1YXRpb25fY2hhcnM6CisgICAgICAgICAgICBwdW5jdHVhdGlvbl9jaGFycyA9ICcnCisgICAgICAgIGVsaWYgcHVuY3R1YXRpb25fY2hhcnMgaXMgVHJ1ZToKKyAgICAgICAgICAgIHB1bmN0dWF0aW9uX2NoYXJzID0gJygpOzw+fCYnCisgICAgICAgIHNlbGYucHVuY3R1YXRpb25fY2hhcnMgPSBwdW5jdHVhdGlvbl9jaGFycworICAgICAgICBpZiBwdW5jdHVhdGlvbl9jaGFyczoKKyAgICAgICAgICAgICMgX3B1c2hiYWNrX2NoYXJzIGlzIGEgcHVzaCBiYWNrIHF1ZXVlIHVzZWQgYnkgbG9va2FoZWFkIGxvZ2ljCisgICAgICAgICAgICBzZWxmLl9wdXNoYmFja19jaGFycyA9IGRlcXVlKCkKKyAgICAgICAgICAgICMgdGhlc2UgY2hhcnMgYWRkZWQgYmVjYXVzZSBhbGxvd2VkIGluIGZpbGUgbmFtZXMsIGFyZ3MsIHdpbGRjYXJkcworICAgICAgICAgICAgc2VsZi53b3JkY2hhcnMgKz0gJ34tLi8qPz0nCisgICAgICAgICAgICAjcmVtb3ZlIGFueSBwdW5jdHVhdGlvbiBjaGFycyBmcm9tIHdvcmRjaGFycworICAgICAgICAgICAgdCA9IHNlbGYud29yZGNoYXJzLm1ha2V0cmFucyhkaWN0LmZyb21rZXlzKHB1bmN0dWF0aW9uX2NoYXJzKSkKKyAgICAgICAgICAgIHNlbGYud29yZGNoYXJzID0gc2VsZi53b3JkY2hhcnMudHJhbnNsYXRlKHQpCiAKICAgICBkZWYgcHVzaF90b2tlbihzZWxmLCB0b2spOgogICAgICAgICAiUHVzaCBhIHRva2VuIG9udG8gdGhlIHN0YWNrIHBvcHBlZCBieSB0aGUgZ2V0X3Rva2VuIG1ldGhvZCIKQEAgLTExNSwxMiArMTMwLDE1IEBACiAgICAgICAgIHF1b3RlZCA9IEZhbHNlCiAgICAgICAgIGVzY2FwZWRzdGF0ZSA9ICcgJwogICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgbmV4dGNoYXIgPSBzZWxmLmluc3RyZWFtLnJlYWQoMSkKKyAgICAgICAgICAgIGlmIHNlbGYucHVuY3R1YXRpb25fY2hhcnMgYW5kIHNlbGYuX3B1c2hiYWNrX2NoYXJzOgorICAgICAgICAgICAgICAgIG5leHRjaGFyID0gc2VsZi5fcHVzaGJhY2tfY2hhcnMucG9wKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbmV4dGNoYXIgPSBzZWxmLmluc3RyZWFtLnJlYWQoMSkKICAgICAgICAgICAgIGlmIG5leHRjaGFyID09ICdcbic6Ci0gICAgICAgICAgICAgICAgc2VsZi5saW5lbm8gPSBzZWxmLmxpbmVubyArIDEKKyAgICAgICAgICAgICAgICBzZWxmLmxpbmVubyArPSAxCiAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnID49IDM6Ci0gICAgICAgICAgICAgICAgcHJpbnQoInNobGV4OiBpbiBzdGF0ZSIsIHJlcHIoc2VsZi5zdGF0ZSksIFwKLSAgICAgICAgICAgICAgICAgICAgICAiSSBzZWUgY2hhcmFjdGVyOiIsIHJlcHIobmV4dGNoYXIpKQorICAgICAgICAgICAgICAgIHByaW50KCJzaGxleDogaW4gc3RhdGUgJXIgSSBzZWUgY2hhcmFjdGVyOiAlciIgJSAoc2VsZi5zdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRjaGFyKSkKICAgICAgICAgICAgIGlmIHNlbGYuc3RhdGUgaXMgTm9uZToKICAgICAgICAgICAgICAgICBzZWxmLnRva2VuID0gJycgICAgICAgICMgcGFzdCBlbmQgb2YgZmlsZQogICAgICAgICAgICAgICAgIGJyZWFrCkBAIC0xMzcsMTMgKzE1NSwxNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICBlbGlmIG5leHRjaGFyIGluIHNlbGYuY29tbWVudGVyczoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5pbnN0cmVhbS5yZWFkbGluZSgpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYubGluZW5vID0gc2VsZi5saW5lbm8gKyAxCisgICAgICAgICAgICAgICAgICAgIHNlbGYubGluZW5vICs9IDEKICAgICAgICAgICAgICAgICBlbGlmIHNlbGYucG9zaXggYW5kIG5leHRjaGFyIGluIHNlbGYuZXNjYXBlOgogICAgICAgICAgICAgICAgICAgICBlc2NhcGVkc3RhdGUgPSAnYScKICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IG5leHRjaGFyCiAgICAgICAgICAgICAgICAgZWxpZiBuZXh0Y2hhciBpbiBzZWxmLndvcmRjaGFyczoKICAgICAgICAgICAgICAgICAgICAgc2VsZi50b2tlbiA9IG5leHRjaGFyCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAnYScKKyAgICAgICAgICAgICAgICBlbGlmIG5leHRjaGFyIGluIHNlbGYucHVuY3R1YXRpb25fY2hhcnM6CisgICAgICAgICAgICAgICAgICAgIHNlbGYudG9rZW4gPSBuZXh0Y2hhcgorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gJ2MnCiAgICAgICAgICAgICAgICAgZWxpZiBuZXh0Y2hhciBpbiBzZWxmLnF1b3RlczoKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYucG9zaXg6CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnRva2VuID0gbmV4dGNoYXIKQEAgLTE2NiwxNyArMTg3LDE3IEBACiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIk5vIGNsb3NpbmcgcXVvdGF0aW9uIikKICAgICAgICAgICAgICAgICBpZiBuZXh0Y2hhciA9PSBzZWxmLnN0YXRlOgogICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5wb3NpeDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudG9rZW4gPSBzZWxmLnRva2VuICsgbmV4dGNoYXIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudG9rZW4gKz0gbmV4dGNoYXIKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAnICcKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gJ2EnCi0gICAgICAgICAgICAgICAgZWxpZiBzZWxmLnBvc2l4IGFuZCBuZXh0Y2hhciBpbiBzZWxmLmVzY2FwZSBhbmQgXAotICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSBpbiBzZWxmLmVzY2FwZWRxdW90ZXM6CisgICAgICAgICAgICAgICAgZWxpZiAoc2VsZi5wb3NpeCBhbmQgbmV4dGNoYXIgaW4gc2VsZi5lc2NhcGUgYW5kIHNlbGYuc3RhdGUKKyAgICAgICAgICAgICAgICAgICAgICBpbiBzZWxmLmVzY2FwZWRxdW90ZXMpOgogICAgICAgICAgICAgICAgICAgICBlc2NhcGVkc3RhdGUgPSBzZWxmLnN0YXRlCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSBuZXh0Y2hhcgogICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYudG9rZW4gPSBzZWxmLnRva2VuICsgbmV4dGNoYXIKKyAgICAgICAgICAgICAgICAgICAgc2VsZi50b2tlbiArPSBuZXh0Y2hhcgogICAgICAgICAgICAgZWxpZiBzZWxmLnN0YXRlIGluIHNlbGYuZXNjYXBlOgogICAgICAgICAgICAgICAgIGlmIG5vdCBuZXh0Y2hhcjogICAgICAjIGVuZCBvZiBmaWxlCiAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuZGVidWcgPj0gMjoKQEAgLTE4NSwxMiArMjA2LDEyIEBACiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIk5vIGVzY2FwZWQgY2hhcmFjdGVyIikKICAgICAgICAgICAgICAgICAjIEluIHBvc2l4IHNoZWxscywgb25seSB0aGUgcXVvdGUgaXRzZWxmIG9yIHRoZSBlc2NhcGUKICAgICAgICAgICAgICAgICAjIGNoYXJhY3RlciBtYXkgYmUgZXNjYXBlZCB3aXRoaW4gcXVvdGVzLgotICAgICAgICAgICAgICAgIGlmIGVzY2FwZWRzdGF0ZSBpbiBzZWxmLnF1b3RlcyBhbmQgXAotICAgICAgICAgICAgICAgICAgIG5leHRjaGFyICE9IHNlbGYuc3RhdGUgYW5kIG5leHRjaGFyICE9IGVzY2FwZWRzdGF0ZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi50b2tlbiA9IHNlbGYudG9rZW4gKyBzZWxmLnN0YXRlCi0gICAgICAgICAgICAgICAgc2VsZi50b2tlbiA9IHNlbGYudG9rZW4gKyBuZXh0Y2hhcgorICAgICAgICAgICAgICAgIGlmIChlc2NhcGVkc3RhdGUgaW4gc2VsZi5xdW90ZXMgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBuZXh0Y2hhciAhPSBzZWxmLnN0YXRlIGFuZCBuZXh0Y2hhciAhPSBlc2NhcGVkc3RhdGUpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnRva2VuICs9IHNlbGYuc3RhdGUKKyAgICAgICAgICAgICAgICBzZWxmLnRva2VuICs9IG5leHRjaGFyCiAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IGVzY2FwZWRzdGF0ZQotICAgICAgICAgICAgZWxpZiBzZWxmLnN0YXRlID09ICdhJzoKKyAgICAgICAgICAgIGVsaWYgc2VsZi5zdGF0ZSBpbiAoJ2EnLCAnYycpOgogICAgICAgICAgICAgICAgIGlmIG5vdCBuZXh0Y2hhcjoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IE5vbmUgICAjIGVuZCBvZiBmaWxlCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCkBAIC0yMDQsNyArMjI1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgZWxpZiBuZXh0Y2hhciBpbiBzZWxmLmNvbW1lbnRlcnM6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuaW5zdHJlYW0ucmVhZGxpbmUoKQotICAgICAgICAgICAgICAgICAgICBzZWxmLmxpbmVubyA9IHNlbGYubGluZW5vICsgMQorICAgICAgICAgICAgICAgICAgICBzZWxmLmxpbmVubyArPSAxCiAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYucG9zaXg6CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gJyAnCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLnRva2VuIG9yIChzZWxmLnBvc2l4IGFuZCBxdW90ZWQpOgpAQCAtMjE2LDExICsyMzcsMjIgQEAKICAgICAgICAgICAgICAgICBlbGlmIHNlbGYucG9zaXggYW5kIG5leHRjaGFyIGluIHNlbGYuZXNjYXBlOgogICAgICAgICAgICAgICAgICAgICBlc2NhcGVkc3RhdGUgPSAnYScKICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IG5leHRjaGFyCi0gICAgICAgICAgICAgICAgZWxpZiBuZXh0Y2hhciBpbiBzZWxmLndvcmRjaGFycyBvciBuZXh0Y2hhciBpbiBzZWxmLnF1b3RlcyBcCi0gICAgICAgICAgICAgICAgICAgIG9yIHNlbGYud2hpdGVzcGFjZV9zcGxpdDoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi50b2tlbiA9IHNlbGYudG9rZW4gKyBuZXh0Y2hhcgorICAgICAgICAgICAgICAgIGVsaWYgc2VsZi5zdGF0ZSA9PSAnYyc6CisgICAgICAgICAgICAgICAgICAgIGlmIG5leHRjaGFyIGluIHNlbGYucHVuY3R1YXRpb25fY2hhcnM6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnRva2VuICs9IG5leHRjaGFyCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBuZXh0Y2hhciBub3QgaW4gc2VsZi53aGl0ZXNwYWNlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3B1c2hiYWNrX2NoYXJzLmFwcGVuZChuZXh0Y2hhcikKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAnICcKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgZWxpZiAobmV4dGNoYXIgaW4gc2VsZi53b3JkY2hhcnMgb3IgbmV4dGNoYXIgaW4gc2VsZi5xdW90ZXMKKyAgICAgICAgICAgICAgICAgICAgICBvciBzZWxmLndoaXRlc3BhY2Vfc3BsaXQpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnRva2VuICs9IG5leHRjaGFyCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5wdXNoYmFjay5hcHBlbmRsZWZ0KG5leHRjaGFyKQorICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLnB1bmN0dWF0aW9uX2NoYXJzOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcHVzaGJhY2tfY2hhcnMuYXBwZW5kKG5leHRjaGFyKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wdXNoYmFjay5hcHBlbmRsZWZ0KG5leHRjaGFyKQogICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnID49IDI6CiAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgic2hsZXg6IEkgc2VlIHB1bmN0dWF0aW9uIGluIHdvcmQgc3RhdGUiKQogICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gJyAnCmRpZmYgLS1naXQgYS9MaWIvc2h1dGlsLnB5IGIvTGliL3NodXRpbC5weQppbmRleCAxNmNhODBiLi5iZDQ3NjBmIDEwMDY0NAotLS0gYS9MaWIvc2h1dGlsLnB5CisrKyBiL0xpYi9zaHV0aWwucHkKQEAgLTk4MSw2ICs5ODEsOSBAQAogCiAgICAgX19hbGxfXy5hcHBlbmQoJ2Rpc2tfdXNhZ2UnKQogICAgIF9udHVwbGVfZGlza3VzYWdlID0gY29sbGVjdGlvbnMubmFtZWR0dXBsZSgndXNhZ2UnLCAndG90YWwgdXNlZCBmcmVlJykKKyAgICBfbnR1cGxlX2Rpc2t1c2FnZS50b3RhbC5fX2RvY19fID0gJ1RvdGFsIHNwYWNlIGluIGJ5dGVzJworICAgIF9udHVwbGVfZGlza3VzYWdlLnVzZWQuX19kb2NfXyA9ICdVc2VkIHNwYWNlIGluIGJ5dGVzJworICAgIF9udHVwbGVfZGlza3VzYWdlLmZyZWUuX19kb2NfXyA9ICdGcmVlIHNwYWNlIGluIGJ5dGVzJwogCiAgICAgZGVmIGRpc2tfdXNhZ2UocGF0aCk6CiAgICAgICAgICIiIlJldHVybiBkaXNrIHVzYWdlIHN0YXRpc3RpY3MgYWJvdXQgdGhlIGdpdmVuIHBhdGguCmRpZmYgLS1naXQgYS9MaWIvc2l0ZS1wYWNrYWdlcy9SRUFETUUudHh0IGIvTGliL3NpdGUtcGFja2FnZXMvUkVBRE1FLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzNmNjI1Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3NpdGUtcGFja2FnZXMvUkVBRE1FLnR4dApAQCAtMCwwICsxLDIgQEAKK1RoaXMgZGlyZWN0b3J5IGV4aXN0cyBzbyB0aGF0IDNyZCBwYXJ0eSBwYWNrYWdlcyBjYW4gYmUgaW5zdGFsbGVkCitoZXJlLiAgUmVhZCB0aGUgc291cmNlIGZvciBzaXRlLnB5IGZvciBtb3JlIGRldGFpbHMuCmRpZmYgLS1naXQgYS9MaWIvc2l0ZS5weSBiL0xpYi9zaXRlLnB5CmluZGV4IDNmNzhlZjUuLjBmYzkyMDAgMTAwNjQ0Ci0tLSBhL0xpYi9zaXRlLnB5CisrKyBiL0xpYi9zaXRlLnB5CkBAIC02MCw3ICs2MCw4IEBACiAKIFRoZSByZWFkbGluZSBtb2R1bGUgaXMgYWxzbyBhdXRvbWF0aWNhbGx5IGNvbmZpZ3VyZWQgdG8gZW5hYmxlCiBjb21wbGV0aW9uIGZvciBzeXN0ZW1zIHRoYXQgc3VwcG9ydCBpdC4gIFRoaXMgY2FuIGJlIG92ZXJyaWRkZW4gaW4KLXNpdGVjdXN0b21pemUsIHVzZXJjdXN0b21pemUgb3IgUFlUSE9OU1RBUlRVUC4KK3NpdGVjdXN0b21pemUsIHVzZXJjdXN0b21pemUgb3IgUFlUSE9OU1RBUlRVUC4gIFN0YXJ0aW5nIFB5dGhvbiBpbgoraXNvbGF0ZWQgbW9kZSAoLUkpIGRpc2FibGVzIGF1dG9tYXRpYyByZWFkbGluZSBjb25maWd1cmF0aW9uLgogCiBBZnRlciB0aGVzZSBvcGVyYXRpb25zLCBhbiBhdHRlbXB0IGlzIG1hZGUgdG8gaW1wb3J0IGEgbW9kdWxlCiBuYW1lZCBzaXRlY3VzdG9taXplLCB3aGljaCBjYW4gcGVyZm9ybSBhcmJpdHJhcnkgYWRkaXRpb25hbApAQCAtMTMxLDEzICsxMzIsMTMgQEAKIAogCiBkZWYgX2luaXRfcGF0aGluZm8oKToKLSAgICAiIiJSZXR1cm4gYSBzZXQgY29udGFpbmluZyBhbGwgZXhpc3RpbmcgZGlyZWN0b3J5IGVudHJpZXMgZnJvbSBzeXMucGF0aCIiIgorICAgICIiIlJldHVybiBhIHNldCBjb250YWluaW5nIGFsbCBleGlzdGluZyBmaWxlIHN5c3RlbSBpdGVtcyBmcm9tIHN5cy5wYXRoLiIiIgogICAgIGQgPSBzZXQoKQotICAgIGZvciBkaXIgaW4gc3lzLnBhdGg6CisgICAgZm9yIGl0ZW0gaW4gc3lzLnBhdGg6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIoZGlyKToKLSAgICAgICAgICAgICAgICBkaXIsIGRpcmNhc2UgPSBtYWtlcGF0aChkaXIpCi0gICAgICAgICAgICAgICAgZC5hZGQoZGlyY2FzZSkKKyAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGl0ZW0pOgorICAgICAgICAgICAgICAgIF8sIGl0ZW1jYXNlID0gbWFrZXBhdGgoaXRlbSkKKyAgICAgICAgICAgICAgICBkLmFkZChpdGVtY2FzZSkKICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgcmV0dXJuIGQKQEAgLTE1MCw5ICsxNTEsOSBAQAogICAgICIiIgogICAgIGlmIGtub3duX3BhdGhzIGlzIE5vbmU6CiAgICAgICAgIGtub3duX3BhdGhzID0gX2luaXRfcGF0aGluZm8oKQotICAgICAgICByZXNldCA9IDEKKyAgICAgICAgcmVzZXQgPSBUcnVlCiAgICAgZWxzZToKLSAgICAgICAgcmVzZXQgPSAwCisgICAgICAgIHJlc2V0ID0gRmFsc2UKICAgICBmdWxsbmFtZSA9IG9zLnBhdGguam9pbihzaXRlZGlyLCBuYW1lKQogICAgIHRyeToKICAgICAgICAgZiA9IG9wZW4oZnVsbG5hbWUsICJyIikKQEAgLTE5MCw5ICsxOTEsOSBAQAogICAgICdzaXRlZGlyJyIiIgogICAgIGlmIGtub3duX3BhdGhzIGlzIE5vbmU6CiAgICAgICAgIGtub3duX3BhdGhzID0gX2luaXRfcGF0aGluZm8oKQotICAgICAgICByZXNldCA9IDEKKyAgICAgICAgcmVzZXQgPSBUcnVlCiAgICAgZWxzZToKLSAgICAgICAgcmVzZXQgPSAwCisgICAgICAgIHJlc2V0ID0gRmFsc2UKICAgICBzaXRlZGlyLCBzaXRlZGlyY2FzZSA9IG1ha2VwYXRoKHNpdGVkaXIpCiAgICAgaWYgbm90IHNpdGVkaXJjYXNlIGluIGtub3duX3BhdGhzOgogICAgICAgICBzeXMucGF0aC5hcHBlbmQoc2l0ZWRpcikgICAgICAgICMgQWRkIHBhdGggY29tcG9uZW50CkBAIC0zMDQsNyArMzA1LDcgQEAKIAogICAgICAgICBpZiBvcy5zZXAgPT0gJy8nOgogICAgICAgICAgICAgc2l0ZXBhY2thZ2VzLmFwcGVuZChvcy5wYXRoLmpvaW4ocHJlZml4LCAibGliIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uIiArIHN5cy52ZXJzaW9uWzozXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uJWQuJWQiICUgc3lzLnZlcnNpb25faW5mb1s6Ml0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNpdGUtcGFja2FnZXMiKSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNpdGVwYWNrYWdlcy5hcHBlbmQocHJlZml4KQpAQCAtMzE3LDcgKzMxOCw3IEBACiAgICAgICAgICAgICBpZiBmcmFtZXdvcms6CiAgICAgICAgICAgICAgICAgc2l0ZXBhY2thZ2VzLmFwcGVuZCgKICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbigiL0xpYnJhcnkiLCBmcmFtZXdvcmssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzLnZlcnNpb25bOjNdLCAic2l0ZS1wYWNrYWdlcyIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICclZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXSwgInNpdGUtcGFja2FnZXMiKSkKICAgICByZXR1cm4gc2l0ZXBhY2thZ2VzCiAKIGRlZiBhZGRzaXRlcGFja2FnZXMoa25vd25fcGF0aHMsIHByZWZpeGVzPU5vbmUpOgpAQCAtMzM1LDkgKzMzNiw3IEBACiAgICAgVGhlIHJlcHIgb2YgZWFjaCBvYmplY3QgY29udGFpbnMgYSBoaW50IGF0IGhvdyBpdCB3b3Jrcy4KIAogICAgICIiIgotICAgIGlmIG9zLnNlcCA9PSAnOic6Ci0gICAgICAgIGVvZiA9ICdDbWQtUScKLSAgICBlbGlmIG9zLnNlcCA9PSAnXFwnOgorICAgIGlmIG9zLnNlcCA9PSAnXFwnOgogICAgICAgICBlb2YgPSAnQ3RybC1aIHBsdXMgUmV0dXJuJwogICAgIGVsc2U6CiAgICAgICAgIGVvZiA9ICdDdHJsLUQgKGkuZS4gRU9GKScKQEAgLTQyMywyMyArNDIyLDYgQEAKIAogICAgIHN5cy5fX2ludGVyYWN0aXZlaG9va19fID0gcmVnaXN0ZXJfcmVhZGxpbmUKIAotZGVmIGFsaWFzbWJjcygpOgotICAgICIiIk9uIFdpbmRvd3MsIHNvbWUgZGVmYXVsdCBlbmNvZGluZ3MgYXJlIG5vdCBwcm92aWRlZCBieSBQeXRob24sCi0gICAgd2hpbGUgdGhleSBhcmUgYWx3YXlzIGF2YWlsYWJsZSBhcyAibWJjcyIgaW4gZWFjaCBsb2NhbGUuIE1ha2UKLSAgICB0aGVtIHVzYWJsZSBieSBhbGlhc2luZyB0byAibWJjcyIgaW4gc3VjaCBhIGNhc2UuIiIiCi0gICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6Ci0gICAgICAgIGltcG9ydCBfYm9vdGxvY2FsZSwgY29kZWNzCi0gICAgICAgIGVuYyA9IF9ib290bG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKQotICAgICAgICBpZiBlbmMuc3RhcnRzd2l0aCgnY3AnKTogICAgICAgICAgICAjICJjcCoqKiIgPwotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGNvZGVjcy5sb29rdXAoZW5jKQotICAgICAgICAgICAgZXhjZXB0IExvb2t1cEVycm9yOgotICAgICAgICAgICAgICAgIGltcG9ydCBlbmNvZGluZ3MKLSAgICAgICAgICAgICAgICBlbmNvZGluZ3MuX2NhY2hlW2VuY10gPSBlbmNvZGluZ3MuX3Vua25vd24KLSAgICAgICAgICAgICAgICBlbmNvZGluZ3MuYWxpYXNlcy5hbGlhc2VzW2VuY10gPSAnbWJjcycKLQotQ09ORklHX0xJTkUgPSByJ14oP1A8a2V5Pihcd3xbLV9dKSspXHMqPVxzKig/UDx2YWx1ZT4uKilccyokJwotCiBkZWYgdmVudihrbm93bl9wYXRocyk6CiAgICAgZ2xvYmFsIFBSRUZJWEVTLCBFTkFCTEVfVVNFUl9TSVRFCiAKQEAgLTQ2MSwyOSArNDQzLDIwIEBACiAgICAgICAgIF0KIAogICAgIGlmIGNhbmRpZGF0ZV9jb25mczoKLSAgICAgICAgaW1wb3J0IHJlCi0gICAgICAgIGNvbmZpZ19saW5lID0gcmUuY29tcGlsZShDT05GSUdfTElORSkKICAgICAgICAgdmlydHVhbF9jb25mID0gY2FuZGlkYXRlX2NvbmZzWzBdCiAgICAgICAgIHN5c3RlbV9zaXRlID0gInRydWUiCiAgICAgICAgICMgSXNzdWUgMjUxODU6IFVzZSBVVEYtOCwgYXMgdGhhdCdzIHdoYXQgdGhlIHZlbnYgbW9kdWxlIHVzZXMgd2hlbgogICAgICAgICAjIHdyaXRpbmcgdGhlIGZpbGUuCiAgICAgICAgIHdpdGggb3Blbih2aXJ0dWFsX2NvbmYsIGVuY29kaW5nPSd1dGYtOCcpIGFzIGY6CiAgICAgICAgICAgICBmb3IgbGluZSBpbiBmOgotICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKLSAgICAgICAgICAgICAgICBtID0gY29uZmlnX2xpbmUubWF0Y2gobGluZSkKLSAgICAgICAgICAgICAgICBpZiBtOgotICAgICAgICAgICAgICAgICAgICBkID0gbS5ncm91cGRpY3QoKQotICAgICAgICAgICAgICAgICAgICBrZXksIHZhbHVlID0gZFsna2V5J10ubG93ZXIoKSwgZFsndmFsdWUnXQorICAgICAgICAgICAgICAgIGlmICc9JyBpbiBsaW5lOgorICAgICAgICAgICAgICAgICAgICBrZXksIF8sIHZhbHVlID0gbGluZS5wYXJ0aXRpb24oJz0nKQorICAgICAgICAgICAgICAgICAgICBrZXkgPSBrZXkuc3RyaXAoKS5sb3dlcigpCisgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuc3RyaXAoKQogICAgICAgICAgICAgICAgICAgICBpZiBrZXkgPT0gJ2luY2x1ZGUtc3lzdGVtLXNpdGUtcGFja2FnZXMnOgogICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtX3NpdGUgPSB2YWx1ZS5sb3dlcigpCiAgICAgICAgICAgICAgICAgICAgIGVsaWYga2V5ID09ICdob21lJzoKICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5faG9tZSA9IHZhbHVlCi0gICAgICAgICAgICAgICAgICAgIGVsaWYga2V5ID09ICdhcHBsb2NhbCcgYW5kIHZhbHVlLmxvd2VyKCkgPT0gJ3RydWUnOgotICAgICAgICAgICAgICAgICAgICAgICAgIyBBcHAtbG9jYWwgaW5zdGFsbHMgdXNlIHRoZSBleGVfZGlyIGFzIHByZWZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICMgbm90IG9uZSBsZXZlbCBoaWdoZXIsIGFuZCBkbyBub3QgdXNlIHN5c3RlbQotICAgICAgICAgICAgICAgICAgICAgICAgIyBzaXRlIHBhY2thZ2VzLgotICAgICAgICAgICAgICAgICAgICAgICAgc2l0ZV9wcmVmaXggPSBleGVfZGlyCi0gICAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW1fc2l0ZSA9ICdmYWxzZScKIAogICAgICAgICBzeXMucHJlZml4ID0gc3lzLmV4ZWNfcHJlZml4ID0gc2l0ZV9wcmVmaXgKIApAQCAtNTA0LDExICs0NzcsMTUgQEAKIGRlZiBleGVjc2l0ZWN1c3RvbWl6ZSgpOgogICAgICIiIlJ1biBjdXN0b20gc2l0ZSBzcGVjaWZpYyBjb2RlLCBpZiBhdmFpbGFibGUuIiIiCiAgICAgdHJ5OgotICAgICAgICBpbXBvcnQgc2l0ZWN1c3RvbWl6ZQotICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgcGFzcworICAgICAgICB0cnk6CisgICAgICAgICAgICBpbXBvcnQgc2l0ZWN1c3RvbWl6ZQorICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgaWYgZXhjLm5hbWUgPT0gJ3NpdGVjdXN0b21pemUnOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UKICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGVycjoKLSAgICAgICAgaWYgb3MuZW52aXJvbi5nZXQoIlBZVEhPTlZFUkJPU0UiKToKKyAgICAgICAgaWYgc3lzLmZsYWdzLnZlcmJvc2U6CiAgICAgICAgICAgICBzeXMuZXhjZXB0aG9vaygqc3lzLmV4Y19pbmZvKCkpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKApAQCAtNTIwLDExICs0OTcsMTUgQEAKIGRlZiBleGVjdXNlcmN1c3RvbWl6ZSgpOgogICAgICIiIlJ1biBjdXN0b20gdXNlciBzcGVjaWZpYyBjb2RlLCBpZiBhdmFpbGFibGUuIiIiCiAgICAgdHJ5OgotICAgICAgICBpbXBvcnQgdXNlcmN1c3RvbWl6ZQotICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgcGFzcworICAgICAgICB0cnk6CisgICAgICAgICAgICBpbXBvcnQgdXNlcmN1c3RvbWl6ZQorICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgaWYgZXhjLm5hbWUgPT0gJ3VzZXJjdXN0b21pemUnOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UKICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGVycjoKLSAgICAgICAgaWYgb3MuZW52aXJvbi5nZXQoIlBZVEhPTlZFUkJPU0UiKToKKyAgICAgICAgaWYgc3lzLmZsYWdzLnZlcmJvc2U6CiAgICAgICAgICAgICBzeXMuZXhjZXB0aG9vaygqc3lzLmV4Y19pbmZvKCkpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKApAQCAtNTUxLDEzICs1MzIsMTMgQEAKICAgICBzZXRxdWl0KCkKICAgICBzZXRjb3B5cmlnaHQoKQogICAgIHNldGhlbHBlcigpCi0gICAgZW5hYmxlcmxjb21wbGV0ZXIoKQotICAgIGFsaWFzbWJjcygpCisgICAgaWYgbm90IHN5cy5mbGFncy5pc29sYXRlZDoKKyAgICAgICAgZW5hYmxlcmxjb21wbGV0ZXIoKQogICAgIGV4ZWNzaXRlY3VzdG9taXplKCkKICAgICBpZiBFTkFCTEVfVVNFUl9TSVRFOgogICAgICAgICBleGVjdXNlcmN1c3RvbWl6ZSgpCiAKLSMgUHJldmVudCBlZGl0aW9uIG9mIHN5cy5wYXRoIHdoZW4gcHl0aG9uIHdhcyBzdGFydGVkIHdpdGggLVMgYW5kCisjIFByZXZlbnQgZXh0ZW5kaW5nIG9mIHN5cy5wYXRoIHdoZW4gcHl0aG9uIHdhcyBzdGFydGVkIHdpdGggLVMgYW5kCiAjIHNpdGUgaXMgaW1wb3J0ZWQgbGF0ZXIuCiBpZiBub3Qgc3lzLmZsYWdzLm5vX3NpdGU6CiAgICAgbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvc210cGQucHkgYi9MaWIvc210cGQucHkKaW5kZXggNzMyMDY2ZS4uODEwM2NhOSAxMDA3NTUKLS0tIGEvTGliL3NtdHBkLnB5CisrKyBiL0xpYi9zbXRwZC5weQpAQCAtODksNyArODksMTAgQEAKIGZyb20gd2FybmluZ3MgaW1wb3J0IHdhcm4KIGZyb20gZW1haWwuX2hlYWRlcl92YWx1ZV9wYXJzZXIgaW1wb3J0IGdldF9hZGRyX3NwZWMsIGdldF9hbmdsZV9hZGRyCiAKLV9fYWxsX18gPSBbIlNNVFBTZXJ2ZXIiLCJEZWJ1Z2dpbmdTZXJ2ZXIiLCJQdXJlUHJveHkiLCJNYWlsbWFuUHJveHkiXQorX19hbGxfXyA9IFsKKyAgICAiU01UUENoYW5uZWwiLCAiU01UUFNlcnZlciIsICJEZWJ1Z2dpbmdTZXJ2ZXIiLCAiUHVyZVByb3h5IiwKKyAgICAiTWFpbG1hblByb3h5IiwKK10KIAogcHJvZ3JhbSA9IHN5cy5hcmd2WzBdCiBfX3ZlcnNpb25fXyA9ICdQeXRob24gU01UUCBwcm94eSB2ZXJzaW9uIDAuMycKQEAgLTEyOCwyNCArMTMxLDE3IEBACiAgICAgICAgICAgICByZXR1cm4gc2VsZi5jb21tYW5kX3NpemVfbGltaXQKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzZXJ2ZXIsIGNvbm4sIGFkZHIsIGRhdGFfc2l6ZV9saW1pdD1EQVRBX1NJWkVfREVGQVVMVCwKLSAgICAgICAgICAgICAgICAgbWFwPU5vbmUsIGVuYWJsZV9TTVRQVVRGOD1GYWxzZSwgZGVjb2RlX2RhdGE9Tm9uZSk6CisgICAgICAgICAgICAgICAgIG1hcD1Ob25lLCBlbmFibGVfU01UUFVURjg9RmFsc2UsIGRlY29kZV9kYXRhPUZhbHNlKToKICAgICAgICAgYXN5bmNoYXQuYXN5bmNfY2hhdC5fX2luaXRfXyhzZWxmLCBjb25uLCBtYXA9bWFwKQogICAgICAgICBzZWxmLnNtdHBfc2VydmVyID0gc2VydmVyCiAgICAgICAgIHNlbGYuY29ubiA9IGNvbm4KICAgICAgICAgc2VsZi5hZGRyID0gYWRkcgogICAgICAgICBzZWxmLmRhdGFfc2l6ZV9saW1pdCA9IGRhdGFfc2l6ZV9saW1pdAogICAgICAgICBzZWxmLmVuYWJsZV9TTVRQVVRGOCA9IGVuYWJsZV9TTVRQVVRGOAotICAgICAgICBpZiBlbmFibGVfU01UUFVURjg6Ci0gICAgICAgICAgICBpZiBkZWNvZGVfZGF0YToKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJkZWNvZGVfZGF0YSBhbmQgZW5hYmxlX1NNVFBVVEY4IGNhbm5vdCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgYmUgc2V0IHRvIFRydWUgYXQgdGhlIHNhbWUgdGltZSIpCi0gICAgICAgICAgICBkZWNvZGVfZGF0YSA9IEZhbHNlCi0gICAgICAgIGlmIGRlY29kZV9kYXRhIGlzIE5vbmU6Ci0gICAgICAgICAgICB3YXJuKCJUaGUgZGVjb2RlX2RhdGEgZGVmYXVsdCBvZiBUcnVlIHdpbGwgY2hhbmdlIHRvIEZhbHNlIGluIDMuNjsiCi0gICAgICAgICAgICAgICAgICIgc3BlY2lmeSBhbiBleHBsaWNpdCB2YWx1ZSBmb3IgdGhpcyBrZXl3b3JkIiwKLSAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQotICAgICAgICAgICAgZGVjb2RlX2RhdGEgPSBUcnVlCiAgICAgICAgIHNlbGYuX2RlY29kZV9kYXRhID0gZGVjb2RlX2RhdGEKKyAgICAgICAgaWYgZW5hYmxlX1NNVFBVVEY4IGFuZCBkZWNvZGVfZGF0YToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImRlY29kZV9kYXRhIGFuZCBlbmFibGVfU01UUFVURjggY2Fubm90IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGJlIHNldCB0byBUcnVlIGF0IHRoZSBzYW1lIHRpbWUiKQogICAgICAgICBpZiBkZWNvZGVfZGF0YToKICAgICAgICAgICAgIHNlbGYuX2VtcHR5c3RyaW5nID0gJycKICAgICAgICAgICAgIHNlbGYuX2xpbmVzZXAgPSAnXHJcbicKQEAgLTYzNSwyMyArNjMxLDE1IEBACiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgbG9jYWxhZGRyLCByZW1vdGVhZGRyLAogICAgICAgICAgICAgICAgICBkYXRhX3NpemVfbGltaXQ9REFUQV9TSVpFX0RFRkFVTFQsIG1hcD1Ob25lLAotICAgICAgICAgICAgICAgICBlbmFibGVfU01UUFVURjg9RmFsc2UsIGRlY29kZV9kYXRhPU5vbmUpOgorICAgICAgICAgICAgICAgICBlbmFibGVfU01UUFVURjg9RmFsc2UsIGRlY29kZV9kYXRhPUZhbHNlKToKICAgICAgICAgc2VsZi5fbG9jYWxhZGRyID0gbG9jYWxhZGRyCiAgICAgICAgIHNlbGYuX3JlbW90ZWFkZHIgPSByZW1vdGVhZGRyCiAgICAgICAgIHNlbGYuZGF0YV9zaXplX2xpbWl0ID0gZGF0YV9zaXplX2xpbWl0CiAgICAgICAgIHNlbGYuZW5hYmxlX1NNVFBVVEY4ID0gZW5hYmxlX1NNVFBVVEY4Ci0gICAgICAgIGlmIGVuYWJsZV9TTVRQVVRGODoKLSAgICAgICAgICAgIGlmIGRlY29kZV9kYXRhOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlRoZSBkZWNvZGVfZGF0YSBhbmQgZW5hYmxlX1NNVFBVVEY4IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBwYXJhbWV0ZXJzIGNhbm5vdCBiZSBzZXQgdG8gVHJ1ZSBhdCB0aGUiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHNhbWUgdGltZS4iKQotICAgICAgICAgICAgZGVjb2RlX2RhdGEgPSBGYWxzZQotICAgICAgICBpZiBkZWNvZGVfZGF0YSBpcyBOb25lOgotICAgICAgICAgICAgd2FybigiVGhlIGRlY29kZV9kYXRhIGRlZmF1bHQgb2YgVHJ1ZSB3aWxsIGNoYW5nZSB0byBGYWxzZSBpbiAzLjY7IgotICAgICAgICAgICAgICAgICAiIHNwZWNpZnkgYW4gZXhwbGljaXQgdmFsdWUgZm9yIHRoaXMga2V5d29yZCIsCi0gICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKLSAgICAgICAgICAgIGRlY29kZV9kYXRhID0gVHJ1ZQogICAgICAgICBzZWxmLl9kZWNvZGVfZGF0YSA9IGRlY29kZV9kYXRhCisgICAgICAgIGlmIGVuYWJsZV9TTVRQVVRGOCBhbmQgZGVjb2RlX2RhdGE6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJkZWNvZGVfZGF0YSBhbmQgZW5hYmxlX1NNVFBVVEY4IGNhbm5vdCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBiZSBzZXQgdG8gVHJ1ZSBhdCB0aGUgc2FtZSB0aW1lIikKICAgICAgICAgYXN5bmNvcmUuZGlzcGF0Y2hlci5fX2luaXRfXyhzZWxmLCBtYXA9bWFwKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBnYWlfcmVzdWx0cyA9IHNvY2tldC5nZXRhZGRyaW5mbygqbG9jYWxhZGRyLApAQCAtNjk4LDkgKzY4Niw5IEBACiAgICAgICAgIGNvbnRhaW5pbmcgYSBgLicgZm9sbG93ZWQgYnkgb3RoZXIgdGV4dCBoYXMgaGFkIHRoZSBsZWFkaW5nIGRvdAogICAgICAgICByZW1vdmVkLgogCi0gICAgICAgIGt3YXJncyBpcyBhIGRpY3Rpb25hcnkgY29udGFpbmluZyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLiBJdCBpcyBlbXB0eQotICAgICAgICB1bmxlc3MgZGVjb2RlX2RhdGE9RmFsc2Ugb3IgZW5hYmxlX1NNVFBVVEY4PVRydWUgd2FzIGdpdmVuIGFzIGluaXQKLSAgICAgICAgcGFyYW1ldGVyLCBpbiB3aGljaCBjYXNlIHV0IHdpbGwgY29udGFpbiB0aGUgZm9sbG93aW5nIGtleXM6CisgICAgICAgIGt3YXJncyBpcyBhIGRpY3Rpb25hcnkgY29udGFpbmluZyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLiAgSXQgaXMKKyAgICAgICAgZW1wdHkgaWYgZGVjb2RlX2RhdGE9VHJ1ZSB3YXMgZ2l2ZW4gYXMgaW5pdCBwYXJhbWV0ZXIsIG90aGVyd2lzZQorICAgICAgICBpdCB3aWxsIGNvbnRhaW4gdGhlIGZvbGxvd2luZyBrZXlzOgogICAgICAgICAgICAgJ21haWxfb3B0aW9ucyc6IGxpc3Qgb2YgcGFyYW1ldGVycyB0byB0aGUgbWFpbCBjb21tYW5kLiAgQWxsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudHMgYXJlIHVwcGVyY2FzZSBzdHJpbmdzLiAgRXhhbXBsZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ0JPRFk9OEJJVE1JTUUnLCAnU01UUFVURjgnXS4KZGlmZiAtLWdpdCBhL0xpYi9zbXRwbGliLnB5IGIvTGliL3NtdHBsaWIucHkKaW5kZXggNWI5ZTY2NS4uZjdjMmM3NyAxMDA3NTUKLS0tIGEvTGliL3NtdHBsaWIucHkKKysrIGIvTGliL3NtdHBsaWIucHkKQEAgLTc1OSw2ICs3NTksMTAgQEAKICAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgbm90IE5vbmUgYW5kIGNlcnRmaWxlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNvbnRleHQgYW5kIGNlcnRmaWxlIGFyZ3VtZW50cyBhcmUgbXV0dWFsbHkgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4Y2x1c2l2ZSIpCisgICAgICAgICAgICBpZiBrZXlmaWxlIGlzIG5vdCBOb25lIG9yIGNlcnRmaWxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oImtleWZpbGUgYW5kIGNlcnRmaWxlIGFyZSBkZXByZWNhdGVkLCB1c2UgYSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjdXN0b20gY29udGV4dCBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgogICAgICAgICAgICAgICAgIGNvbnRleHQgPSBzc2wuX2NyZWF0ZV9zdGRsaWJfY29udGV4dChjZXJ0ZmlsZT1jZXJ0ZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5ZmlsZT1rZXlmaWxlKQpAQCAtMTAxMSw2ICsxMDE1LDEwIEBACiAgICAgICAgICAgICBpZiBjb250ZXh0IGlzIG5vdCBOb25lIGFuZCBjZXJ0ZmlsZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjb250ZXh0IGFuZCBjZXJ0ZmlsZSBhcmd1bWVudHMgYXJlIG11dHVhbGx5ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleGNsdXNpdmUiKQorICAgICAgICAgICAgaWYga2V5ZmlsZSBpcyBub3QgTm9uZSBvciBjZXJ0ZmlsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJrZXlmaWxlIGFuZCBjZXJ0ZmlsZSBhcmUgZGVwcmVjYXRlZCwgdXNlIGEiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY3VzdG9tIGNvbnRleHQgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgICAgIHNlbGYua2V5ZmlsZSA9IGtleWZpbGUKICAgICAgICAgICAgIHNlbGYuY2VydGZpbGUgPSBjZXJ0ZmlsZQogICAgICAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgpkaWZmIC0tZ2l0IGEvTGliL3NuZGhkci5weSBiL0xpYi9zbmRoZHIucHkKaW5kZXggZTU5MDFlYy4uN2VjYWZiNCAxMDA2NDQKLS0tIGEvTGliL3NuZGhkci5weQorKysgYi9MaWIvc25kaGRyLnB5CkBAIC0zNyw2ICszNywxOCBAQAogU25kSGVhZGVycyA9IG5hbWVkdHVwbGUoJ1NuZEhlYWRlcnMnLAogICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpbGV0eXBlIGZyYW1lcmF0ZSBuY2hhbm5lbHMgbmZyYW1lcyBzYW1wd2lkdGgnKQogCitTbmRIZWFkZXJzLmZpbGV0eXBlLl9fZG9jX18gPSAoIiIiVGhlIHZhbHVlIGZvciB0eXBlIGluZGljYXRlcyB0aGUgZGF0YSB0eXBlCithbmQgd2lsbCBiZSBvbmUgb2YgdGhlIHN0cmluZ3MgJ2FpZmMnLCAnYWlmZicsICdhdScsJ2hjb20nLAorJ3NuZHInLCAnc25kdCcsICd2b2MnLCAnd2F2JywgJzhzdngnLCAnc2InLCAndWInLCBvciAndWwnLiIiIikKK1NuZEhlYWRlcnMuZnJhbWVyYXRlLl9fZG9jX18gPSAoIiIiVGhlIHNhbXBsaW5nX3JhdGUgd2lsbCBiZSBlaXRoZXIgdGhlIGFjdHVhbAordmFsdWUgb3IgMCBpZiB1bmtub3duIG9yIGRpZmZpY3VsdCB0byBkZWNvZGUuIiIiKQorU25kSGVhZGVycy5uY2hhbm5lbHMuX19kb2NfXyA9ICgiIiJUaGUgbnVtYmVyIG9mIGNoYW5uZWxzIG9yIDAgaWYgaXQgY2Fubm90IGJlCitkZXRlcm1pbmVkIG9yIGlmIHRoZSB2YWx1ZSBpcyBkaWZmaWN1bHQgdG8gZGVjb2RlLiIiIikKK1NuZEhlYWRlcnMubmZyYW1lcy5fX2RvY19fID0gKCIiIlRoZSB2YWx1ZSBmb3IgZnJhbWVzIHdpbGwgYmUgZWl0aGVyIHRoZSBudW1iZXIKK29mIGZyYW1lcyBvciAtMS4iIiIpCitTbmRIZWFkZXJzLnNhbXB3aWR0aC5fX2RvY19fID0gKCIiIkVpdGhlciB0aGUgc2FtcGxlIHNpemUgaW4gYml0cyBvcgorJ0EnIGZvciBBLUxBVyBvciAnVScgZm9yIHUtTEFXLiIiIikKKwogZGVmIHdoYXQoZmlsZW5hbWUpOgogICAgICIiIkd1ZXNzIHRoZSB0eXBlIG9mIGEgc291bmQgZmlsZS4iIiIKICAgICByZXMgPSB3aGF0aGRyKGZpbGVuYW1lKQpkaWZmIC0tZ2l0IGEvTGliL3NvY2tldC5weSBiL0xpYi9zb2NrZXQucHkKaW5kZXggYTljYWIzMi4uNzQwZTcxNyAxMDA2NDQKLS0tIGEvTGliL3NvY2tldC5weQorKysgYi9MaWIvc29ja2V0LnB5CkBAIC01MCw3ICs1MCw3IEBACiBmcm9tIF9zb2NrZXQgaW1wb3J0ICoKIAogaW1wb3J0IG9zLCBzeXMsIGlvLCBzZWxlY3RvcnMKLWZyb20gZW51bSBpbXBvcnQgSW50RW51bQorZnJvbSBlbnVtIGltcG9ydCBJbnRFbnVtLCBJbnRGbGFnCiAKIHRyeToKICAgICBpbXBvcnQgZXJybm8KQEAgLTgwLDYgKzgwLDE2IEBACiAgICAgICAgIF9fbmFtZV9fLAogICAgICAgICBsYW1iZGEgQzogQy5pc3VwcGVyKCkgYW5kIEMuc3RhcnRzd2l0aCgnU09DS18nKSkKIAorSW50RmxhZy5fY29udmVydCgKKyAgICAgICAgJ01zZ0ZsYWcnLAorICAgICAgICBfX25hbWVfXywKKyAgICAgICAgbGFtYmRhIEM6IEMuaXN1cHBlcigpIGFuZCBDLnN0YXJ0c3dpdGgoJ01TR18nKSkKKworSW50RmxhZy5fY29udmVydCgKKyAgICAgICAgJ0FkZHJlc3NJbmZvJywKKyAgICAgICAgX19uYW1lX18sCisgICAgICAgIGxhbWJkYSBDOiBDLmlzdXBwZXIoKSBhbmQgQy5zdGFydHN3aXRoKCdBSV8nKSkKKwogX0xPQ0FMSE9TVCAgICA9ICcxMjcuMC4wLjEnCiBfTE9DQUxIT1NUX1Y2ID0gJzo6MScKIApkaWZmIC0tZ2l0IGEvTGliL3NvY2tldHNlcnZlci5weSBiL0xpYi9zb2NrZXRzZXJ2ZXIucHkKaW5kZXggODgwODgxMy4uNDFhMzc2NiAxMDA2NDQKLS0tIGEvTGliL3NvY2tldHNlcnZlci5weQorKysgYi9MaWIvc29ja2V0c2VydmVyLnB5CkBAIC0xMjcsMTYgKzEyNywyMCBAQAogaW1wb3J0IHNlbGVjdG9ycwogaW1wb3J0IG9zCiBpbXBvcnQgZXJybm8KK2ltcG9ydCBzeXMKIHRyeToKICAgICBpbXBvcnQgdGhyZWFkaW5nCiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgaW1wb3J0IGR1bW15X3RocmVhZGluZyBhcyB0aHJlYWRpbmcKK2Zyb20gaW8gaW1wb3J0IEJ1ZmZlcmVkSU9CYXNlCiBmcm9tIHRpbWUgaW1wb3J0IG1vbm90b25pYyBhcyB0aW1lCiAKLV9fYWxsX18gPSBbIkJhc2VTZXJ2ZXIiLCAiVENQU2VydmVyIiwgIlVEUFNlcnZlciIsICJGb3JraW5nVURQU2VydmVyIiwKLSAgICAgICAgICAgIkZvcmtpbmdUQ1BTZXJ2ZXIiLCAiVGhyZWFkaW5nVURQU2VydmVyIiwgIlRocmVhZGluZ1RDUFNlcnZlciIsCitfX2FsbF9fID0gWyJCYXNlU2VydmVyIiwgIlRDUFNlcnZlciIsICJVRFBTZXJ2ZXIiLAorICAgICAgICAgICAiVGhyZWFkaW5nVURQU2VydmVyIiwgIlRocmVhZGluZ1RDUFNlcnZlciIsCiAgICAgICAgICAgICJCYXNlUmVxdWVzdEhhbmRsZXIiLCAiU3RyZWFtUmVxdWVzdEhhbmRsZXIiLAotICAgICAgICAgICAiRGF0YWdyYW1SZXF1ZXN0SGFuZGxlciIsICJUaHJlYWRpbmdNaXhJbiIsICJGb3JraW5nTWl4SW4iXQorICAgICAgICAgICAiRGF0YWdyYW1SZXF1ZXN0SGFuZGxlciIsICJUaHJlYWRpbmdNaXhJbiJdCitpZiBoYXNhdHRyKG9zLCAiZm9yayIpOgorICAgIF9fYWxsX18uZXh0ZW5kKFsiRm9ya2luZ1VEUFNlcnZlciIsIkZvcmtpbmdUQ1BTZXJ2ZXIiLCAiRm9ya2luZ01peEluIl0pCiBpZiBoYXNhdHRyKHNvY2tldCwgIkFGX1VOSVgiKToKICAgICBfX2FsbF9fLmV4dGVuZChbIlVuaXhTdHJlYW1TZXJ2ZXIiLCJVbml4RGF0YWdyYW1TZXJ2ZXIiLAogICAgICAgICAgICAgICAgICAgICAiVGhyZWFkaW5nVW5peFN0cmVhbVNlcnZlciIsCkBAIC0zMTEsOSArMzE1LDEyIEBACiAgICAgICAgIGlmIHNlbGYudmVyaWZ5X3JlcXVlc3QocmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHNlbGYucHJvY2Vzc19yZXF1ZXN0KHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKQotICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgICAgICBzZWxmLmhhbmRsZV9lcnJvcihyZXF1ZXN0LCBjbGllbnRfYWRkcmVzcykKICAgICAgICAgICAgICAgICBzZWxmLnNodXRkb3duX3JlcXVlc3QocmVxdWVzdCkKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICBzZWxmLnNodXRkb3duX3JlcXVlc3QocmVxdWVzdCkKKyAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5zaHV0ZG93bl9yZXF1ZXN0KHJlcXVlc3QpCiAKQEAgLTM2NywxMiArMzc0LDE4IEBACiAgICAgICAgIFRoZSBkZWZhdWx0IGlzIHRvIHByaW50IGEgdHJhY2ViYWNrIGFuZCBjb250aW51ZS4KIAogICAgICAgICAiIiIKLSAgICAgICAgcHJpbnQoJy0nKjQwKQotICAgICAgICBwcmludCgnRXhjZXB0aW9uIGhhcHBlbmVkIGR1cmluZyBwcm9jZXNzaW5nIG9mIHJlcXVlc3QgZnJvbScsIGVuZD0nICcpCi0gICAgICAgIHByaW50KGNsaWVudF9hZGRyZXNzKQorICAgICAgICBwcmludCgnLScqNDAsIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgcHJpbnQoJ0V4Y2VwdGlvbiBoYXBwZW5lZCBkdXJpbmcgcHJvY2Vzc2luZyBvZiByZXF1ZXN0IGZyb20nLAorICAgICAgICAgICAgY2xpZW50X2FkZHJlc3MsIGZpbGU9c3lzLnN0ZGVycikKICAgICAgICAgaW1wb3J0IHRyYWNlYmFjawotICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkgIyBYWFggQnV0IHRoaXMgZ29lcyB0byBzdGRlcnIhCi0gICAgICAgIHByaW50KCctJyo0MCkKKyAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YygpCisgICAgICAgIHByaW50KCctJyo0MCwgZmlsZT1zeXMuc3RkZXJyKQorCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6CisgICAgICAgIHNlbGYuc2VydmVyX2Nsb3NlKCkKIAogCiBjbGFzcyBUQ1BTZXJ2ZXIoQmFzZVNlcnZlcik6CkBAIC01MjcsODUgKzU0MCw4NiBAQAogICAgICAgICAjIE5vIG5lZWQgdG8gY2xvc2UgYW55dGhpbmcuCiAgICAgICAgIHBhc3MKIAotY2xhc3MgRm9ya2luZ01peEluOgoraWYgaGFzYXR0cihvcywgImZvcmsiKToKKyAgICBjbGFzcyBGb3JraW5nTWl4SW46CisgICAgICAgICIiIk1peC1pbiBjbGFzcyB0byBoYW5kbGUgZWFjaCByZXF1ZXN0IGluIGEgbmV3IHByb2Nlc3MuIiIiCiAKLSAgICAiIiJNaXgtaW4gY2xhc3MgdG8gaGFuZGxlIGVhY2ggcmVxdWVzdCBpbiBhIG5ldyBwcm9jZXNzLiIiIgorICAgICAgICB0aW1lb3V0ID0gMzAwCisgICAgICAgIGFjdGl2ZV9jaGlsZHJlbiA9IE5vbmUKKyAgICAgICAgbWF4X2NoaWxkcmVuID0gNDAKIAotICAgIHRpbWVvdXQgPSAzMDAKLSAgICBhY3RpdmVfY2hpbGRyZW4gPSBOb25lCi0gICAgbWF4X2NoaWxkcmVuID0gNDAKLQotICAgIGRlZiBjb2xsZWN0X2NoaWxkcmVuKHNlbGYpOgotICAgICAgICAiIiJJbnRlcm5hbCByb3V0aW5lIHRvIHdhaXQgZm9yIGNoaWxkcmVuIHRoYXQgaGF2ZSBleGl0ZWQuIiIiCi0gICAgICAgIGlmIHNlbGYuYWN0aXZlX2NoaWxkcmVuIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICAjIElmIHdlJ3JlIGFib3ZlIHRoZSBtYXggbnVtYmVyIG9mIGNoaWxkcmVuLCB3YWl0IGFuZCByZWFwIHRoZW0gdW50aWwKLSAgICAgICAgIyB3ZSBnbyBiYWNrIGJlbG93IHRocmVzaG9sZC4gTm90ZSB0aGF0IHdlIHVzZSB3YWl0cGlkKC0xKSBiZWxvdyB0byBiZQotICAgICAgICAjIGFibGUgdG8gY29sbGVjdCBjaGlsZHJlbiBpbiBzaXplKDxkZWZ1bmN0IGNoaWxkcmVuPikgc3lzY2FsbHMgaW5zdGVhZAotICAgICAgICAjIG9mIHNpemUoPGNoaWxkcmVuPik6IHRoZSBkb3duc2lkZSBpcyB0aGF0IHRoaXMgbWlnaHQgcmVhcCBjaGlsZHJlbgotICAgICAgICAjIHdoaWNoIHdlIGRpZG4ndCBzcGF3biwgd2hpY2ggaXMgd2h5IHdlIG9ubHkgcmVzb3J0IHRvIHRoaXMgd2hlbiB3ZSdyZQotICAgICAgICAjIGFib3ZlIG1heF9jaGlsZHJlbi4KLSAgICAgICAgd2hpbGUgbGVuKHNlbGYuYWN0aXZlX2NoaWxkcmVuKSA+PSBzZWxmLm1heF9jaGlsZHJlbjoKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBwaWQsIF8gPSBvcy53YWl0cGlkKC0xLCAwKQotICAgICAgICAgICAgICAgIHNlbGYuYWN0aXZlX2NoaWxkcmVuLmRpc2NhcmQocGlkKQotICAgICAgICAgICAgZXhjZXB0IENoaWxkUHJvY2Vzc0Vycm9yOgotICAgICAgICAgICAgICAgICMgd2UgZG9uJ3QgaGF2ZSBhbnkgY2hpbGRyZW4sIHdlJ3JlIGRvbmUKLSAgICAgICAgICAgICAgICBzZWxmLmFjdGl2ZV9jaGlsZHJlbi5jbGVhcigpCi0gICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgICAgICBicmVhawotCi0gICAgICAgICMgTm93IHJlYXAgYWxsIGRlZnVuY3QgY2hpbGRyZW4uCi0gICAgICAgIGZvciBwaWQgaW4gc2VsZi5hY3RpdmVfY2hpbGRyZW4uY29weSgpOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHBpZCwgXyA9IG9zLndhaXRwaWQocGlkLCBvcy5XTk9IQU5HKQotICAgICAgICAgICAgICAgICMgaWYgdGhlIGNoaWxkIGhhc24ndCBleGl0ZWQgeWV0LCBwaWQgd2lsbCBiZSAwIGFuZCBpZ25vcmVkIGJ5Ci0gICAgICAgICAgICAgICAgIyBkaXNjYXJkKCkgYmVsb3cKLSAgICAgICAgICAgICAgICBzZWxmLmFjdGl2ZV9jaGlsZHJlbi5kaXNjYXJkKHBpZCkKLSAgICAgICAgICAgIGV4Y2VwdCBDaGlsZFByb2Nlc3NFcnJvcjoKLSAgICAgICAgICAgICAgICAjIHNvbWVvbmUgZWxzZSByZWFwZWQgaXQKLSAgICAgICAgICAgICAgICBzZWxmLmFjdGl2ZV9jaGlsZHJlbi5kaXNjYXJkKHBpZCkKLSAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgICAgIHBhc3MKLQotICAgIGRlZiBoYW5kbGVfdGltZW91dChzZWxmKToKLSAgICAgICAgIiIiV2FpdCBmb3Igem9tYmllcyBhZnRlciBzZWxmLnRpbWVvdXQgc2Vjb25kcyBvZiBpbmFjdGl2aXR5LgotCi0gICAgICAgIE1heSBiZSBleHRlbmRlZCwgZG8gbm90IG92ZXJyaWRlLgotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5jb2xsZWN0X2NoaWxkcmVuKCkKLQotICAgIGRlZiBzZXJ2aWNlX2FjdGlvbnMoc2VsZik6Ci0gICAgICAgICIiIkNvbGxlY3QgdGhlIHpvbWJpZSBjaGlsZCBwcm9jZXNzZXMgcmVndWxhcmx5IGluIHRoZSBGb3JraW5nTWl4SW4uCi0KLSAgICAgICAgc2VydmljZV9hY3Rpb25zIGlzIGNhbGxlZCBpbiB0aGUgQmFzZVNlcnZlcidzIHNlcnZlX2ZvcnZlciBsb29wLgotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5jb2xsZWN0X2NoaWxkcmVuKCkKLQotICAgIGRlZiBwcm9jZXNzX3JlcXVlc3Qoc2VsZiwgcmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpOgotICAgICAgICAiIiJGb3JrIGEgbmV3IHN1YnByb2Nlc3MgdG8gcHJvY2VzcyB0aGUgcmVxdWVzdC4iIiIKLSAgICAgICAgcGlkID0gb3MuZm9yaygpCi0gICAgICAgIGlmIHBpZDoKLSAgICAgICAgICAgICMgUGFyZW50IHByb2Nlc3MKKyAgICAgICAgZGVmIGNvbGxlY3RfY2hpbGRyZW4oc2VsZik6CisgICAgICAgICAgICAiIiJJbnRlcm5hbCByb3V0aW5lIHRvIHdhaXQgZm9yIGNoaWxkcmVuIHRoYXQgaGF2ZSBleGl0ZWQuIiIiCiAgICAgICAgICAgICBpZiBzZWxmLmFjdGl2ZV9jaGlsZHJlbiBpcyBOb25lOgotICAgICAgICAgICAgICAgIHNlbGYuYWN0aXZlX2NoaWxkcmVuID0gc2V0KCkKLSAgICAgICAgICAgIHNlbGYuYWN0aXZlX2NoaWxkcmVuLmFkZChwaWQpCi0gICAgICAgICAgICBzZWxmLmNsb3NlX3JlcXVlc3QocmVxdWVzdCkKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBDaGlsZCBwcm9jZXNzLgotICAgICAgICAgICAgIyBUaGlzIG11c3QgbmV2ZXIgcmV0dXJuLCBoZW5jZSBvcy5fZXhpdCgpIQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNlbGYuZmluaXNoX3JlcXVlc3QocmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpCi0gICAgICAgICAgICAgICAgc2VsZi5zaHV0ZG93bl9yZXF1ZXN0KHJlcXVlc3QpCi0gICAgICAgICAgICAgICAgb3MuX2V4aXQoMCkKLSAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAgICAgIyBJZiB3ZSdyZSBhYm92ZSB0aGUgbWF4IG51bWJlciBvZiBjaGlsZHJlbiwgd2FpdCBhbmQgcmVhcCB0aGVtIHVudGlsCisgICAgICAgICAgICAjIHdlIGdvIGJhY2sgYmVsb3cgdGhyZXNob2xkLiBOb3RlIHRoYXQgd2UgdXNlIHdhaXRwaWQoLTEpIGJlbG93IHRvIGJlCisgICAgICAgICAgICAjIGFibGUgdG8gY29sbGVjdCBjaGlsZHJlbiBpbiBzaXplKDxkZWZ1bmN0IGNoaWxkcmVuPikgc3lzY2FsbHMgaW5zdGVhZAorICAgICAgICAgICAgIyBvZiBzaXplKDxjaGlsZHJlbj4pOiB0aGUgZG93bnNpZGUgaXMgdGhhdCB0aGlzIG1pZ2h0IHJlYXAgY2hpbGRyZW4KKyAgICAgICAgICAgICMgd2hpY2ggd2UgZGlkbid0IHNwYXduLCB3aGljaCBpcyB3aHkgd2Ugb25seSByZXNvcnQgdG8gdGhpcyB3aGVuIHdlJ3JlCisgICAgICAgICAgICAjIGFib3ZlIG1heF9jaGlsZHJlbi4KKyAgICAgICAgICAgIHdoaWxlIGxlbihzZWxmLmFjdGl2ZV9jaGlsZHJlbikgPj0gc2VsZi5tYXhfY2hpbGRyZW46CiAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBwaWQsIF8gPSBvcy53YWl0cGlkKC0xLCAwKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFjdGl2ZV9jaGlsZHJlbi5kaXNjYXJkKHBpZCkKKyAgICAgICAgICAgICAgICBleGNlcHQgQ2hpbGRQcm9jZXNzRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICMgd2UgZG9uJ3QgaGF2ZSBhbnkgY2hpbGRyZW4sIHdlJ3JlIGRvbmUKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hY3RpdmVfY2hpbGRyZW4uY2xlYXIoKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgICAgICAjIE5vdyByZWFwIGFsbCBkZWZ1bmN0IGNoaWxkcmVuLgorICAgICAgICAgICAgZm9yIHBpZCBpbiBzZWxmLmFjdGl2ZV9jaGlsZHJlbi5jb3B5KCk6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBwaWQsIF8gPSBvcy53YWl0cGlkKHBpZCwgb3MuV05PSEFORykKKyAgICAgICAgICAgICAgICAgICAgIyBpZiB0aGUgY2hpbGQgaGFzbid0IGV4aXRlZCB5ZXQsIHBpZCB3aWxsIGJlIDAgYW5kIGlnbm9yZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgIyBkaXNjYXJkKCkgYmVsb3cKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hY3RpdmVfY2hpbGRyZW4uZGlzY2FyZChwaWQpCisgICAgICAgICAgICAgICAgZXhjZXB0IENoaWxkUHJvY2Vzc0Vycm9yOgorICAgICAgICAgICAgICAgICAgICAjIHNvbWVvbmUgZWxzZSByZWFwZWQgaXQKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hY3RpdmVfY2hpbGRyZW4uZGlzY2FyZChwaWQpCisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBkZWYgaGFuZGxlX3RpbWVvdXQoc2VsZik6CisgICAgICAgICAgICAiIiJXYWl0IGZvciB6b21iaWVzIGFmdGVyIHNlbGYudGltZW91dCBzZWNvbmRzIG9mIGluYWN0aXZpdHkuCisKKyAgICAgICAgICAgIE1heSBiZSBleHRlbmRlZCwgZG8gbm90IG92ZXJyaWRlLgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBzZWxmLmNvbGxlY3RfY2hpbGRyZW4oKQorCisgICAgICAgIGRlZiBzZXJ2aWNlX2FjdGlvbnMoc2VsZik6CisgICAgICAgICAgICAiIiJDb2xsZWN0IHRoZSB6b21iaWUgY2hpbGQgcHJvY2Vzc2VzIHJlZ3VsYXJseSBpbiB0aGUgRm9ya2luZ01peEluLgorCisgICAgICAgICAgICBzZXJ2aWNlX2FjdGlvbnMgaXMgY2FsbGVkIGluIHRoZSBCYXNlU2VydmVyJ3Mgc2VydmVfZm9ydmVyIGxvb3AuCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIHNlbGYuY29sbGVjdF9jaGlsZHJlbigpCisKKyAgICAgICAgZGVmIHByb2Nlc3NfcmVxdWVzdChzZWxmLCByZXF1ZXN0LCBjbGllbnRfYWRkcmVzcyk6CisgICAgICAgICAgICAiIiJGb3JrIGEgbmV3IHN1YnByb2Nlc3MgdG8gcHJvY2VzcyB0aGUgcmVxdWVzdC4iIiIKKyAgICAgICAgICAgIHBpZCA9IG9zLmZvcmsoKQorICAgICAgICAgICAgaWYgcGlkOgorICAgICAgICAgICAgICAgICMgUGFyZW50IHByb2Nlc3MKKyAgICAgICAgICAgICAgICBpZiBzZWxmLmFjdGl2ZV9jaGlsZHJlbiBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFjdGl2ZV9jaGlsZHJlbiA9IHNldCgpCisgICAgICAgICAgICAgICAgc2VsZi5hY3RpdmVfY2hpbGRyZW4uYWRkKHBpZCkKKyAgICAgICAgICAgICAgICBzZWxmLmNsb3NlX3JlcXVlc3QocmVxdWVzdCkKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBDaGlsZCBwcm9jZXNzLgorICAgICAgICAgICAgICAgICMgVGhpcyBtdXN0IG5ldmVyIHJldHVybiwgaGVuY2Ugb3MuX2V4aXQoKSEKKyAgICAgICAgICAgICAgICBzdGF0dXMgPSAxCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBzZWxmLmZpbmlzaF9yZXF1ZXN0KHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKQorICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSAwCisgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5oYW5kbGVfZXJyb3IocmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuc2h1dGRvd25fcmVxdWVzdChyZXF1ZXN0KQogICAgICAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgICAgIG9zLl9leGl0KDEpCisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2h1dGRvd25fcmVxdWVzdChyZXF1ZXN0KQorICAgICAgICAgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgICAgICAgICAgb3MuX2V4aXQoc3RhdHVzKQogCiAKIGNsYXNzIFRocmVhZGluZ01peEluOgpAQCAtNjIzLDkgKzYzNyw5IEBACiAgICAgICAgICIiIgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLmZpbmlzaF9yZXF1ZXN0KHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKQotICAgICAgICAgICAgc2VsZi5zaHV0ZG93bl9yZXF1ZXN0KHJlcXVlc3QpCi0gICAgICAgIGV4Y2VwdDoKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgIHNlbGYuaGFuZGxlX2Vycm9yKHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKQorICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc2VsZi5zaHV0ZG93bl9yZXF1ZXN0KHJlcXVlc3QpCiAKICAgICBkZWYgcHJvY2Vzc19yZXF1ZXN0KHNlbGYsIHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKToKQEAgLTYzNiw4ICs2NTAsOSBAQAogICAgICAgICB0LnN0YXJ0KCkKIAogCi1jbGFzcyBGb3JraW5nVURQU2VydmVyKEZvcmtpbmdNaXhJbiwgVURQU2VydmVyKTogcGFzcwotY2xhc3MgRm9ya2luZ1RDUFNlcnZlcihGb3JraW5nTWl4SW4sIFRDUFNlcnZlcik6IHBhc3MKK2lmIGhhc2F0dHIob3MsICJmb3JrIik6CisgICAgY2xhc3MgRm9ya2luZ1VEUFNlcnZlcihGb3JraW5nTWl4SW4sIFVEUFNlcnZlcik6IHBhc3MKKyAgICBjbGFzcyBGb3JraW5nVENQU2VydmVyKEZvcmtpbmdNaXhJbiwgVENQU2VydmVyKTogcGFzcwogCiBjbGFzcyBUaHJlYWRpbmdVRFBTZXJ2ZXIoVGhyZWFkaW5nTWl4SW4sIFVEUFNlcnZlcik6IHBhc3MKIGNsYXNzIFRocmVhZGluZ1RDUFNlcnZlcihUaHJlYWRpbmdNaXhJbiwgVENQU2VydmVyKTogcGFzcwpAQCAtNzI5LDcgKzc0NCwxMCBAQAogICAgICAgICAgICAgc2VsZi5jb25uZWN0aW9uLnNldHNvY2tvcHQoc29ja2V0LklQUFJPVE9fVENQLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LlRDUF9OT0RFTEFZLCBUcnVlKQogICAgICAgICBzZWxmLnJmaWxlID0gc2VsZi5jb25uZWN0aW9uLm1ha2VmaWxlKCdyYicsIHNlbGYucmJ1ZnNpemUpCi0gICAgICAgIHNlbGYud2ZpbGUgPSBzZWxmLmNvbm5lY3Rpb24ubWFrZWZpbGUoJ3diJywgc2VsZi53YnVmc2l6ZSkKKyAgICAgICAgaWYgc2VsZi53YnVmc2l6ZSA9PSAwOgorICAgICAgICAgICAgc2VsZi53ZmlsZSA9IF9Tb2NrZXRXcml0ZXIoc2VsZi5jb25uZWN0aW9uKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi53ZmlsZSA9IHNlbGYuY29ubmVjdGlvbi5tYWtlZmlsZSgnd2InLCBzZWxmLndidWZzaXplKQogCiAgICAgZGVmIGZpbmlzaChzZWxmKToKICAgICAgICAgaWYgbm90IHNlbGYud2ZpbGUuY2xvc2VkOgpAQCAtNzQyLDYgKzc2MCwyNCBAQAogICAgICAgICBzZWxmLndmaWxlLmNsb3NlKCkKICAgICAgICAgc2VsZi5yZmlsZS5jbG9zZSgpCiAKK2NsYXNzIF9Tb2NrZXRXcml0ZXIoQnVmZmVyZWRJT0Jhc2UpOgorICAgICIiIlNpbXBsZSB3cml0YWJsZSBCdWZmZXJlZElPQmFzZSBpbXBsZW1lbnRhdGlvbiBmb3IgYSBzb2NrZXQKKworICAgIERvZXMgbm90IGhvbGQgZGF0YSBpbiBhIGJ1ZmZlciwgYXZvaWRpbmcgYW55IG5lZWQgdG8gY2FsbCBmbHVzaCgpLiIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNvY2spOgorICAgICAgICBzZWxmLl9zb2NrID0gc29jaworCisgICAgZGVmIHdyaXRhYmxlKHNlbGYpOgorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIHdyaXRlKHNlbGYsIGIpOgorICAgICAgICBzZWxmLl9zb2NrLnNlbmRhbGwoYikKKyAgICAgICAgd2l0aCBtZW1vcnl2aWV3KGIpIGFzIHZpZXc6CisgICAgICAgICAgICByZXR1cm4gdmlldy5uYnl0ZXMKKworICAgIGRlZiBmaWxlbm8oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9zb2NrLmZpbGVubygpCiAKIGNsYXNzIERhdGFncmFtUmVxdWVzdEhhbmRsZXIoQmFzZVJlcXVlc3RIYW5kbGVyKToKIApkaWZmIC0tZ2l0IGEvTGliL3NxbGl0ZTMvdGVzdC9kYmFwaS5weSBiL0xpYi9zcWxpdGUzL3Rlc3QvZGJhcGkucHkKaW5kZXggN2ZiOGQ3ZS4uY2I4NTgxNCAxMDA2NDQKLS0tIGEvTGliL3NxbGl0ZTMvdGVzdC9kYmFwaS5weQorKysgYi9MaWIvc3FsaXRlMy90ZXN0L2RiYXBpLnB5CkBAIC0xODgsNyArMTg4LDEwIEBACiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLmN4ID0gc3FsaXRlLmNvbm5lY3QoIjptZW1vcnk6IikKICAgICAgICAgc2VsZi5jdSA9IHNlbGYuY3guY3Vyc29yKCkKLSAgICAgICAgc2VsZi5jdS5leGVjdXRlKCJjcmVhdGUgdGFibGUgdGVzdChpZCBpbnRlZ2VyIHByaW1hcnkga2V5LCBuYW1lIHRleHQsIGluY29tZSBudW1iZXIpIikKKyAgICAgICAgc2VsZi5jdS5leGVjdXRlKAorICAgICAgICAgICAgImNyZWF0ZSB0YWJsZSB0ZXN0KGlkIGludGVnZXIgcHJpbWFyeSBrZXksIG5hbWUgdGV4dCwgIgorICAgICAgICAgICAgImluY29tZSBudW1iZXIsIHVuaXF1ZV90ZXN0IHRleHQgdW5pcXVlKSIKKyAgICAgICAgKQogICAgICAgICBzZWxmLmN1LmV4ZWN1dGUoImluc2VydCBpbnRvIHRlc3QobmFtZSkgdmFsdWVzICg/KSIsICgiZm9vIiwpKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgpAQCAtNDYyLDYgKzQ2NSw0NCBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CiAgICAgICAgICAgICBjdXIgPSBzcWxpdGUuQ3Vyc29yKGZvbykKIAorICAgIGRlZiBDaGVja0xhc3RSb3dJRE9uUmVwbGFjZShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIElOU0VSVCBPUiBSRVBMQUNFIGFuZCBSRVBMQUNFIElOVE8gc2hvdWxkIHByb2R1Y2UgdGhlIHNhbWUgYmVoYXZpb3IuCisgICAgICAgICIiIgorICAgICAgICBzcWwgPSAne30gSU5UTyB0ZXN0KGlkLCB1bmlxdWVfdGVzdCkgVkFMVUVTICg/LCA/KScKKyAgICAgICAgZm9yIHN0YXRlbWVudCBpbiAoJ0lOU0VSVCBPUiBSRVBMQUNFJywgJ1JFUExBQ0UnKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHN0YXRlbWVudD1zdGF0ZW1lbnQpOgorICAgICAgICAgICAgICAgIHNlbGYuY3UuZXhlY3V0ZShzcWwuZm9ybWF0KHN0YXRlbWVudCksICgxLCAnZm9vJykpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmN1Lmxhc3Ryb3dpZCwgMSkKKworICAgIGRlZiBDaGVja0xhc3RSb3dJRE9uSWdub3JlKHNlbGYpOgorICAgICAgICBzZWxmLmN1LmV4ZWN1dGUoCisgICAgICAgICAgICAiaW5zZXJ0IG9yIGlnbm9yZSBpbnRvIHRlc3QodW5pcXVlX3Rlc3QpIHZhbHVlcyAoPykiLAorICAgICAgICAgICAgKCd0ZXN0JywpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY3UubGFzdHJvd2lkLCAyKQorICAgICAgICBzZWxmLmN1LmV4ZWN1dGUoCisgICAgICAgICAgICAiaW5zZXJ0IG9yIGlnbm9yZSBpbnRvIHRlc3QodW5pcXVlX3Rlc3QpIHZhbHVlcyAoPykiLAorICAgICAgICAgICAgKCd0ZXN0JywpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY3UubGFzdHJvd2lkLCAyKQorCisgICAgZGVmIENoZWNrTGFzdFJvd0lESW5zZXJ0T1Ioc2VsZik6CisgICAgICAgIHJlc3VsdHMgPSBbXQorICAgICAgICBmb3Igc3RhdGVtZW50IGluICgnRkFJTCcsICdBQk9SVCcsICdST0xMQkFDSycpOgorICAgICAgICAgICAgc3FsID0gJ0lOU0VSVCBPUiB7fSBJTlRPIHRlc3QodW5pcXVlX3Rlc3QpIFZBTFVFUyAoPyknCisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChzdGF0ZW1lbnQ9J0lOU0VSVCBPUiB7fScuZm9ybWF0KHN0YXRlbWVudCkpOgorICAgICAgICAgICAgICAgIHNlbGYuY3UuZXhlY3V0ZShzcWwuZm9ybWF0KHN0YXRlbWVudCksIChzdGF0ZW1lbnQsKSkKKyAgICAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZCgoc3RhdGVtZW50LCBzZWxmLmN1Lmxhc3Ryb3dpZCkpCisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzcWxpdGUuSW50ZWdyaXR5RXJyb3IpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmN1LmV4ZWN1dGUoc3FsLmZvcm1hdChzdGF0ZW1lbnQpLCAoc3RhdGVtZW50LCkpCisgICAgICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQoKHN0YXRlbWVudCwgc2VsZi5jdS5sYXN0cm93aWQpKQorICAgICAgICBleHBlY3RlZCA9IFsKKyAgICAgICAgICAgICgnRkFJTCcsIDIpLCAoJ0ZBSUwnLCAyKSwKKyAgICAgICAgICAgICgnQUJPUlQnLCAzKSwgKCdBQk9SVCcsIDMpLAorICAgICAgICAgICAgKCdST0xMQkFDSycsIDQpLCAoJ1JPTExCQUNLJywgNCksCisgICAgICAgIF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRzLCBleHBlY3RlZCkKKworCiBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICdUaGlzIHRlc3QgcmVxdWlyZXMgdGhyZWFkaW5nLicpCiBjbGFzcyBUaHJlYWRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3NxbGl0ZTMvdGVzdC90cmFuc2FjdGlvbnMucHkgYi9MaWIvc3FsaXRlMy90ZXN0L3RyYW5zYWN0aW9ucy5weQppbmRleCBhMjUzNjBhLi40NWYxYjA0IDEwMDY0NAotLS0gYS9MaWIvc3FsaXRlMy90ZXN0L3RyYW5zYWN0aW9ucy5weQorKysgYi9MaWIvc3FsaXRlMy90ZXN0L3RyYW5zYWN0aW9ucy5weQpAQCAtNTIsMTMgKzUyLDEzIEBACiAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgcGFzcwogCi0gICAgZGVmIENoZWNrRE1MZG9lc0F1dG9Db21taXRCZWZvcmUoc2VsZik6CisgICAgZGVmIENoZWNrRE1MRG9lc05vdEF1dG9Db21taXRCZWZvcmUoc2VsZik6CiAgICAgICAgIHNlbGYuY3VyMS5leGVjdXRlKCJjcmVhdGUgdGFibGUgdGVzdChpKSIpCiAgICAgICAgIHNlbGYuY3VyMS5leGVjdXRlKCJpbnNlcnQgaW50byB0ZXN0KGkpIHZhbHVlcyAoNSkiKQogICAgICAgICBzZWxmLmN1cjEuZXhlY3V0ZSgiY3JlYXRlIHRhYmxlIHRlc3QyKGopIikKICAgICAgICAgc2VsZi5jdXIyLmV4ZWN1dGUoInNlbGVjdCBpIGZyb20gdGVzdCIpCiAgICAgICAgIHJlcyA9IHNlbGYuY3VyMi5mZXRjaGFsbCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlcyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlcyksIDApCiAKICAgICBkZWYgQ2hlY2tJbnNlcnRTdGFydHNUcmFuc2FjdGlvbihzZWxmKToKICAgICAgICAgc2VsZi5jdXIxLmV4ZWN1dGUoImNyZWF0ZSB0YWJsZSB0ZXN0KGkpIikKQEAgLTE1MywxMSArMTUzLDYgQEAKICAgICAgICAgc2VsZi5jb24gPSBzcWxpdGUuY29ubmVjdCgiOm1lbW9yeToiKQogICAgICAgICBzZWxmLmN1ciA9IHNlbGYuY29uLmN1cnNvcigpCiAKLSAgICBkZWYgQ2hlY2tWYWN1dW0oc2VsZik6Ci0gICAgICAgIHNlbGYuY3VyLmV4ZWN1dGUoImNyZWF0ZSB0YWJsZSB0ZXN0KGkpIikKLSAgICAgICAgc2VsZi5jdXIuZXhlY3V0ZSgiaW5zZXJ0IGludG8gdGVzdChpKSB2YWx1ZXMgKDUpIikKLSAgICAgICAgc2VsZi5jdXIuZXhlY3V0ZSgidmFjdXVtIikKLQogICAgIGRlZiBDaGVja0Ryb3BUYWJsZShzZWxmKToKICAgICAgICAgc2VsZi5jdXIuZXhlY3V0ZSgiY3JlYXRlIHRhYmxlIHRlc3QoaSkiKQogICAgICAgICBzZWxmLmN1ci5leGVjdXRlKCJpbnNlcnQgaW50byB0ZXN0KGkpIHZhbHVlcyAoNSkiKQpAQCAtMTcyLDEwICsxNjcsMzUgQEAKICAgICAgICAgc2VsZi5jdXIuY2xvc2UoKQogICAgICAgICBzZWxmLmNvbi5jbG9zZSgpCiAKK2NsYXNzIFRyYW5zYWN0aW9uYWxEREwodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5jb24gPSBzcWxpdGUuY29ubmVjdCgiOm1lbW9yeToiKQorCisgICAgZGVmIENoZWNrRGRsRG9lc05vdEF1dG9zdGFydFRyYW5zYWN0aW9uKHNlbGYpOgorICAgICAgICAjIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSByZWFzb25zLCBEREwgc3RhdGVtZW50cyBzaG91bGQgbm90CisgICAgICAgICMgaW1wbGljaXRseSBzdGFydCBhIHRyYW5zYWN0aW9uLgorICAgICAgICBzZWxmLmNvbi5leGVjdXRlKCJjcmVhdGUgdGFibGUgdGVzdChpKSIpCisgICAgICAgIHNlbGYuY29uLnJvbGxiYWNrKCkKKyAgICAgICAgcmVzdWx0ID0gc2VsZi5jb24uZXhlY3V0ZSgic2VsZWN0ICogZnJvbSB0ZXN0IikuZmV0Y2hhbGwoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgW10pCisKKyAgICBkZWYgQ2hlY2tUcmFuc2FjdGlvbmFsRERMKHNlbGYpOgorICAgICAgICAjIFlvdSBjYW4gYWNoaWV2ZSB0cmFuc2FjdGlvbmFsIERETCBieSBpc3N1aW5nIGEgQkVHSU4KKyAgICAgICAgIyBzdGF0ZW1lbnQgbWFudWFsbHkuCisgICAgICAgIHNlbGYuY29uLmV4ZWN1dGUoImJlZ2luIikKKyAgICAgICAgc2VsZi5jb24uZXhlY3V0ZSgiY3JlYXRlIHRhYmxlIHRlc3QoaSkiKQorICAgICAgICBzZWxmLmNvbi5yb2xsYmFjaygpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3FsaXRlLk9wZXJhdGlvbmFsRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5jb24uZXhlY3V0ZSgic2VsZWN0ICogZnJvbSB0ZXN0IikKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgc2VsZi5jb24uY2xvc2UoKQorCiBkZWYgc3VpdGUoKToKICAgICBkZWZhdWx0X3N1aXRlID0gdW5pdHRlc3QubWFrZVN1aXRlKFRyYW5zYWN0aW9uVGVzdHMsICJDaGVjayIpCiAgICAgc3BlY2lhbF9jb21tYW5kX3N1aXRlID0gdW5pdHRlc3QubWFrZVN1aXRlKFNwZWNpYWxDb21tYW5kVGVzdHMsICJDaGVjayIpCi0gICAgcmV0dXJuIHVuaXR0ZXN0LlRlc3RTdWl0ZSgoZGVmYXVsdF9zdWl0ZSwgc3BlY2lhbF9jb21tYW5kX3N1aXRlKSkKKyAgICBkZGxfc3VpdGUgPSB1bml0dGVzdC5tYWtlU3VpdGUoVHJhbnNhY3Rpb25hbERETCwgIkNoZWNrIikKKyAgICByZXR1cm4gdW5pdHRlc3QuVGVzdFN1aXRlKChkZWZhdWx0X3N1aXRlLCBzcGVjaWFsX2NvbW1hbmRfc3VpdGUsIGRkbF9zdWl0ZSkpCiAKIGRlZiB0ZXN0KCk6CiAgICAgcnVubmVyID0gdW5pdHRlc3QuVGV4dFRlc3RSdW5uZXIoKQpkaWZmIC0tZ2l0IGEvTGliL3NyZV9jb21waWxlLnB5IGIvTGliL3NyZV9jb21waWxlLnB5CmluZGV4IDUwMmIwNjEuLjQyMGQ4M2QgMTAwNjQ0Ci0tLSBhL0xpYi9zcmVfY29tcGlsZS5weQorKysgYi9MaWIvc3JlX2NvbXBpbGUucHkKQEAgLTcxLDcgKzcxLDggQEAKICAgICBBU1NFUlRfQ09ERVMgPSBfQVNTRVJUX0NPREVTCiAgICAgaWYgKGZsYWdzICYgU1JFX0ZMQUdfSUdOT1JFQ0FTRSBhbmQKICAgICAgICAgICAgIG5vdCAoZmxhZ3MgJiBTUkVfRkxBR19MT0NBTEUpIGFuZAotICAgICAgICAgICAgZmxhZ3MgJiBTUkVfRkxBR19VTklDT0RFKToKKyAgICAgICAgICAgIGZsYWdzICYgU1JFX0ZMQUdfVU5JQ09ERSBhbmQKKyAgICAgICAgICAgIG5vdCAoZmxhZ3MgJiBTUkVfRkxBR19BU0NJSSkpOgogICAgICAgICBmaXhlcyA9IF9pZ25vcmVjYXNlX2ZpeGVzCiAgICAgZWxzZToKICAgICAgICAgZml4ZXMgPSBOb25lCkBAIC0xMzcsMTQgKzEzOCwxNSBAQAogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIGVtaXQoTUlOX1VOVElMKQogICAgICAgICBlbGlmIG9wIGlzIFNVQlBBVFRFUk46Ci0gICAgICAgICAgICBpZiBhdlswXToKKyAgICAgICAgICAgIGdyb3VwLCBhZGRfZmxhZ3MsIGRlbF9mbGFncywgcCA9IGF2CisgICAgICAgICAgICBpZiBncm91cDoKICAgICAgICAgICAgICAgICBlbWl0KE1BUkspCi0gICAgICAgICAgICAgICAgZW1pdCgoYXZbMF0tMSkqMikKLSAgICAgICAgICAgICMgX2NvbXBpbGVfaW5mbyhjb2RlLCBhdlsxXSwgZmxhZ3MpCi0gICAgICAgICAgICBfY29tcGlsZShjb2RlLCBhdlsxXSwgZmxhZ3MpCi0gICAgICAgICAgICBpZiBhdlswXToKKyAgICAgICAgICAgICAgICBlbWl0KChncm91cC0xKSoyKQorICAgICAgICAgICAgIyBfY29tcGlsZV9pbmZvKGNvZGUsIHAsIChmbGFncyB8IGFkZF9mbGFncykgJiB+ZGVsX2ZsYWdzKQorICAgICAgICAgICAgX2NvbXBpbGUoY29kZSwgcCwgKGZsYWdzIHwgYWRkX2ZsYWdzKSAmIH5kZWxfZmxhZ3MpCisgICAgICAgICAgICBpZiBncm91cDoKICAgICAgICAgICAgICAgICBlbWl0KE1BUkspCi0gICAgICAgICAgICAgICAgZW1pdCgoYXZbMF0tMSkqMisxKQorICAgICAgICAgICAgICAgIGVtaXQoKGdyb3VwLTEpKjIrMSkKICAgICAgICAgZWxpZiBvcCBpbiBTVUNDRVNTX0NPREVTOgogICAgICAgICAgICAgZW1pdChvcCkKICAgICAgICAgZWxpZiBvcCBpbiBBU1NFUlRfQ09ERVM6CkBAIC0xNzIsNyArMTc0LDcgQEAKICAgICAgICAgICAgICAgICBhdiA9IEFUX01VTFRJTElORS5nZXQoYXYsIGF2KQogICAgICAgICAgICAgaWYgZmxhZ3MgJiBTUkVfRkxBR19MT0NBTEU6CiAgICAgICAgICAgICAgICAgYXYgPSBBVF9MT0NBTEUuZ2V0KGF2LCBhdikKLSAgICAgICAgICAgIGVsaWYgZmxhZ3MgJiBTUkVfRkxBR19VTklDT0RFOgorICAgICAgICAgICAgZWxpZiAoZmxhZ3MgJiBTUkVfRkxBR19VTklDT0RFKSBhbmQgbm90IChmbGFncyAmIFNSRV9GTEFHX0FTQ0lJKToKICAgICAgICAgICAgICAgICBhdiA9IEFUX1VOSUNPREUuZ2V0KGF2LCBhdikKICAgICAgICAgICAgIGVtaXQoYXYpCiAgICAgICAgIGVsaWYgb3AgaXMgQlJBTkNIOgpAQCAtMTkzLDcgKzE5NSw3IEBACiAgICAgICAgICAgICBlbWl0KG9wKQogICAgICAgICAgICAgaWYgZmxhZ3MgJiBTUkVfRkxBR19MT0NBTEU6CiAgICAgICAgICAgICAgICAgYXYgPSBDSF9MT0NBTEVbYXZdCi0gICAgICAgICAgICBlbGlmIGZsYWdzICYgU1JFX0ZMQUdfVU5JQ09ERToKKyAgICAgICAgICAgIGVsaWYgKGZsYWdzICYgU1JFX0ZMQUdfVU5JQ09ERSkgYW5kIG5vdCAoZmxhZ3MgJiBTUkVfRkxBR19BU0NJSSk6CiAgICAgICAgICAgICAgICAgYXYgPSBDSF9VTklDT0RFW2F2XQogICAgICAgICAgICAgZW1pdChhdikKICAgICAgICAgZWxpZiBvcCBpcyBHUk9VUFJFRjoKQEAgLTIzNyw3ICsyMzksNyBAQAogICAgICAgICBlbGlmIG9wIGlzIENBVEVHT1JZOgogICAgICAgICAgICAgaWYgZmxhZ3MgJiBTUkVfRkxBR19MT0NBTEU6CiAgICAgICAgICAgICAgICAgZW1pdChDSF9MT0NBTEVbYXZdKQotICAgICAgICAgICAgZWxpZiBmbGFncyAmIFNSRV9GTEFHX1VOSUNPREU6CisgICAgICAgICAgICBlbGlmIChmbGFncyAmIFNSRV9GTEFHX1VOSUNPREUpIGFuZCBub3QgKGZsYWdzICYgU1JFX0ZMQUdfQVNDSUkpOgogICAgICAgICAgICAgICAgIGVtaXQoQ0hfVU5JQ09ERVthdl0pCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGVtaXQoYXYpCkBAIC00MDksNDIgKzQxMSw0MiBAQAogICAgICAgICAgICAgdGFibGVbaV0gPSBpZHggKyAxCiAgICAgcmV0dXJuIHRhYmxlCiAKLWRlZiBfY29tcGlsZV9pbmZvKGNvZGUsIHBhdHRlcm4sIGZsYWdzKToKLSAgICAjIGludGVybmFsOiBjb21waWxlIGFuIGluZm8gYmxvY2suICBpbiB0aGUgY3VycmVudCB2ZXJzaW9uLAotICAgICMgdGhpcyBjb250YWlucyBtaW4vbWF4IHBhdHRlcm4gd2lkdGgsIGFuZCBhbiBvcHRpb25hbCBsaXRlcmFsCi0gICAgIyBwcmVmaXggb3IgYSBjaGFyYWN0ZXIgbWFwCi0gICAgbG8sIGhpID0gcGF0dGVybi5nZXR3aWR0aCgpCi0gICAgaWYgaGkgPiBNQVhDT0RFOgotICAgICAgICBoaSA9IE1BWENPREUKLSAgICBpZiBsbyA9PSAwOgotICAgICAgICBjb2RlLmV4dGVuZChbSU5GTywgNCwgMCwgbG8sIGhpXSkKLSAgICAgICAgcmV0dXJuCi0gICAgIyBsb29rIGZvciBhIGxpdGVyYWwgcHJlZml4CitkZWYgX2dldF9saXRlcmFsX3ByZWZpeChwYXR0ZXJuKToKKyAgICAjIGxvb2sgZm9yIGxpdGVyYWwgcHJlZml4CiAgICAgcHJlZml4ID0gW10KICAgICBwcmVmaXhhcHBlbmQgPSBwcmVmaXguYXBwZW5kCi0gICAgcHJlZml4X3NraXAgPSAwCisgICAgcHJlZml4X3NraXAgPSBOb25lCisgICAgZm9yIG9wLCBhdiBpbiBwYXR0ZXJuLmRhdGE6CisgICAgICAgIGlmIG9wIGlzIExJVEVSQUw6CisgICAgICAgICAgICBwcmVmaXhhcHBlbmQoYXYpCisgICAgICAgIGVsaWYgb3AgaXMgU1VCUEFUVEVSTjoKKyAgICAgICAgICAgIGdyb3VwLCBhZGRfZmxhZ3MsIGRlbF9mbGFncywgcCA9IGF2CisgICAgICAgICAgICBpZiBhZGRfZmxhZ3MgJiBTUkVfRkxBR19JR05PUkVDQVNFOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBwcmVmaXgxLCBwcmVmaXhfc2tpcDEsIGdvdF9hbGwgPSBfZ2V0X2xpdGVyYWxfcHJlZml4KHApCisgICAgICAgICAgICBpZiBwcmVmaXhfc2tpcCBpcyBOb25lOgorICAgICAgICAgICAgICAgIGlmIGdyb3VwIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBwcmVmaXhfc2tpcCA9IGxlbihwcmVmaXgpCisgICAgICAgICAgICAgICAgZWxpZiBwcmVmaXhfc2tpcDEgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHByZWZpeF9za2lwID0gbGVuKHByZWZpeCkgKyBwcmVmaXhfc2tpcDEKKyAgICAgICAgICAgIHByZWZpeC5leHRlbmQocHJlZml4MSkKKyAgICAgICAgICAgIGlmIG5vdCBnb3RfYWxsOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBicmVhaworICAgIGVsc2U6CisgICAgICAgIHJldHVybiBwcmVmaXgsIHByZWZpeF9za2lwLCBUcnVlCisgICAgcmV0dXJuIHByZWZpeCwgcHJlZml4X3NraXAsIEZhbHNlCisKK2RlZiBfZ2V0X2NoYXJzZXRfcHJlZml4KHBhdHRlcm4pOgogICAgIGNoYXJzZXQgPSBbXSAjIG5vdCB1c2VkCiAgICAgY2hhcnNldGFwcGVuZCA9IGNoYXJzZXQuYXBwZW5kCi0gICAgaWYgbm90IChmbGFncyAmIFNSRV9GTEFHX0lHTk9SRUNBU0UpOgotICAgICAgICAjIGxvb2sgZm9yIGxpdGVyYWwgcHJlZml4Ci0gICAgICAgIGZvciBvcCwgYXYgaW4gcGF0dGVybi5kYXRhOgotICAgICAgICAgICAgaWYgb3AgaXMgTElURVJBTDoKLSAgICAgICAgICAgICAgICBpZiBsZW4ocHJlZml4KSA9PSBwcmVmaXhfc2tpcDoKLSAgICAgICAgICAgICAgICAgICAgcHJlZml4X3NraXAgPSBwcmVmaXhfc2tpcCArIDEKLSAgICAgICAgICAgICAgICBwcmVmaXhhcHBlbmQoYXYpCi0gICAgICAgICAgICBlbGlmIG9wIGlzIFNVQlBBVFRFUk4gYW5kIGxlbihhdlsxXSkgPT0gMToKLSAgICAgICAgICAgICAgICBvcCwgYXYgPSBhdlsxXVswXQotICAgICAgICAgICAgICAgIGlmIG9wIGlzIExJVEVSQUw6Ci0gICAgICAgICAgICAgICAgICAgIHByZWZpeGFwcGVuZChhdikKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAjIGlmIG5vIHByZWZpeCwgbG9vayBmb3IgY2hhcnNldCBwcmVmaXgKLSAgICAgICAgaWYgbm90IHByZWZpeCBhbmQgcGF0dGVybi5kYXRhOgotICAgICAgICAgICAgb3AsIGF2ID0gcGF0dGVybi5kYXRhWzBdCi0gICAgICAgICAgICBpZiBvcCBpcyBTVUJQQVRURVJOIGFuZCBhdlsxXToKLSAgICAgICAgICAgICAgICBvcCwgYXYgPSBhdlsxXVswXQorICAgIGlmIHBhdHRlcm4uZGF0YToKKyAgICAgICAgb3AsIGF2ID0gcGF0dGVybi5kYXRhWzBdCisgICAgICAgIGlmIG9wIGlzIFNVQlBBVFRFUk46CisgICAgICAgICAgICBncm91cCwgYWRkX2ZsYWdzLCBkZWxfZmxhZ3MsIHAgPSBhdgorICAgICAgICAgICAgaWYgcCBhbmQgbm90IChhZGRfZmxhZ3MgJiBTUkVfRkxBR19JR05PUkVDQVNFKToKKyAgICAgICAgICAgICAgICBvcCwgYXYgPSBwWzBdCiAgICAgICAgICAgICAgICAgaWYgb3AgaXMgTElURVJBTDoKICAgICAgICAgICAgICAgICAgICAgY2hhcnNldGFwcGVuZCgob3AsIGF2KSkKICAgICAgICAgICAgICAgICBlbGlmIG9wIGlzIEJSQU5DSDoKQEAgLTQ2MCwyMSArNDYyLDQzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJzZXQgPSBjCi0gICAgICAgICAgICBlbGlmIG9wIGlzIEJSQU5DSDoKLSAgICAgICAgICAgICAgICBjID0gW10KLSAgICAgICAgICAgICAgICBjYXBwZW5kID0gYy5hcHBlbmQKLSAgICAgICAgICAgICAgICBmb3IgcCBpbiBhdlsxXToKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IHA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICBvcCwgYXYgPSBwWzBdCi0gICAgICAgICAgICAgICAgICAgIGlmIG9wIGlzIExJVEVSQUw6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXBwZW5kKChvcCwgYXYpKQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxpZiBvcCBpcyBCUkFOQ0g6CisgICAgICAgICAgICBjID0gW10KKyAgICAgICAgICAgIGNhcHBlbmQgPSBjLmFwcGVuZAorICAgICAgICAgICAgZm9yIHAgaW4gYXZbMV06CisgICAgICAgICAgICAgICAgaWYgbm90IHA6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgb3AsIGF2ID0gcFswXQorICAgICAgICAgICAgICAgIGlmIG9wIGlzIExJVEVSQUw6CisgICAgICAgICAgICAgICAgICAgIGNhcHBlbmQoKG9wLCBhdikpCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgY2hhcnNldCA9IGMKLSAgICAgICAgICAgIGVsaWYgb3AgaXMgSU46Ci0gICAgICAgICAgICAgICAgY2hhcnNldCA9IGF2CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGNoYXJzZXQgPSBjCisgICAgICAgIGVsaWYgb3AgaXMgSU46CisgICAgICAgICAgICBjaGFyc2V0ID0gYXYKKyAgICByZXR1cm4gY2hhcnNldAorCitkZWYgX2NvbXBpbGVfaW5mbyhjb2RlLCBwYXR0ZXJuLCBmbGFncyk6CisgICAgIyBpbnRlcm5hbDogY29tcGlsZSBhbiBpbmZvIGJsb2NrLiAgaW4gdGhlIGN1cnJlbnQgdmVyc2lvbiwKKyAgICAjIHRoaXMgY29udGFpbnMgbWluL21heCBwYXR0ZXJuIHdpZHRoLCBhbmQgYW4gb3B0aW9uYWwgbGl0ZXJhbAorICAgICMgcHJlZml4IG9yIGEgY2hhcmFjdGVyIG1hcAorICAgIGxvLCBoaSA9IHBhdHRlcm4uZ2V0d2lkdGgoKQorICAgIGlmIGhpID4gTUFYQ09ERToKKyAgICAgICAgaGkgPSBNQVhDT0RFCisgICAgaWYgbG8gPT0gMDoKKyAgICAgICAgY29kZS5leHRlbmQoW0lORk8sIDQsIDAsIGxvLCBoaV0pCisgICAgICAgIHJldHVybgorICAgICMgbG9vayBmb3IgYSBsaXRlcmFsIHByZWZpeAorICAgIHByZWZpeCA9IFtdCisgICAgcHJlZml4X3NraXAgPSAwCisgICAgY2hhcnNldCA9IFtdICMgbm90IHVzZWQKKyAgICBpZiBub3QgKGZsYWdzICYgU1JFX0ZMQUdfSUdOT1JFQ0FTRSk6CisgICAgICAgICMgbG9vayBmb3IgbGl0ZXJhbCBwcmVmaXgKKyAgICAgICAgcHJlZml4LCBwcmVmaXhfc2tpcCwgZ290X2FsbCA9IF9nZXRfbGl0ZXJhbF9wcmVmaXgocGF0dGVybikKKyAgICAgICAgIyBpZiBubyBwcmVmaXgsIGxvb2sgZm9yIGNoYXJzZXQgcHJlZml4CisgICAgICAgIGlmIG5vdCBwcmVmaXg6CisgICAgICAgICAgICBjaGFyc2V0ID0gX2dldF9jaGFyc2V0X3ByZWZpeChwYXR0ZXJuKQogIyMgICAgIGlmIHByZWZpeDoKICMjICAgICAgICAgcHJpbnQoIioqKiBQUkVGSVgiLCBwcmVmaXgsIHByZWZpeF9za2lwKQogIyMgICAgIGlmIGNoYXJzZXQ6CkBAIC00ODcsNyArNTExLDcgQEAKICAgICBtYXNrID0gMAogICAgIGlmIHByZWZpeDoKICAgICAgICAgbWFzayA9IFNSRV9JTkZPX1BSRUZJWAotICAgICAgICBpZiBsZW4ocHJlZml4KSA9PSBwcmVmaXhfc2tpcCA9PSBsZW4ocGF0dGVybi5kYXRhKToKKyAgICAgICAgaWYgcHJlZml4X3NraXAgaXMgTm9uZSBhbmQgZ290X2FsbDoKICAgICAgICAgICAgIG1hc2sgPSBtYXNrIHwgU1JFX0lORk9fTElURVJBTAogICAgIGVsaWYgY2hhcnNldDoKICAgICAgICAgbWFzayA9IG1hc2sgfCBTUkVfSU5GT19DSEFSU0VUCkBAIC01MDIsNiArNTI2LDggQEAKICAgICAjIGFkZCBsaXRlcmFsIHByZWZpeAogICAgIGlmIHByZWZpeDoKICAgICAgICAgZW1pdChsZW4ocHJlZml4KSkgIyBsZW5ndGgKKyAgICAgICAgaWYgcHJlZml4X3NraXAgaXMgTm9uZToKKyAgICAgICAgICAgIHByZWZpeF9za2lwID0gIGxlbihwcmVmaXgpCiAgICAgICAgIGVtaXQocHJlZml4X3NraXApICMgc2tpcAogICAgICAgICBjb2RlLmV4dGVuZChwcmVmaXgpCiAgICAgICAgICMgZ2VuZXJhdGUgb3ZlcmxhcCB0YWJsZQpkaWZmIC0tZ2l0IGEvTGliL3NyZV9wYXJzZS5weSBiL0xpYi9zcmVfcGFyc2UucHkKaW5kZXggNGZmNTBkMS4uNmFhNDljMyAxMDA2NDQKLS0tIGEvTGliL3NyZV9wYXJzZS5weQorKysgYi9MaWIvc3JlX3BhcnNlLnB5CkBAIC02NSw2ICs2NSwxMiBAQAogICAgICJ1IjogU1JFX0ZMQUdfVU5JQ09ERSwKIH0KIAorR0xPQkFMX0ZMQUdTID0gKFNSRV9GTEFHX0FTQ0lJIHwgU1JFX0ZMQUdfTE9DQUxFIHwgU1JFX0ZMQUdfVU5JQ09ERSB8CisgICAgICAgICAgICAgICAgU1JFX0ZMQUdfREVCVUcgfCBTUkVfRkxBR19URU1QTEFURSkKKworY2xhc3MgVmVyYm9zZShFeGNlcHRpb24pOgorICAgIHBhc3MKKwogY2xhc3MgUGF0dGVybjoKICAgICAjIG1hc3RlciBwYXR0ZXJuIG9iamVjdC4gIGtlZXBzIHRyYWNrIG9mIGdsb2JhbCBhdHRyaWJ1dGVzCiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgpAQCAtMTg0LDcgKzE5MCw3IEBACiAgICAgICAgICAgICAgICAgbG8gPSBsbyArIGkKICAgICAgICAgICAgICAgICBoaSA9IGhpICsgagogICAgICAgICAgICAgZWxpZiBvcCBpcyBTVUJQQVRURVJOOgotICAgICAgICAgICAgICAgIGksIGogPSBhdlsxXS5nZXR3aWR0aCgpCisgICAgICAgICAgICAgICAgaSwgaiA9IGF2Wy0xXS5nZXR3aWR0aCgpCiAgICAgICAgICAgICAgICAgbG8gPSBsbyArIGkKICAgICAgICAgICAgICAgICBoaSA9IGhpICsgagogICAgICAgICAgICAgZWxpZiBvcCBpbiBfUkVQRUFUQ09ERVM6CkBAIC0yNzMsNiArMjc5LDkgQEAKICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgcmVzdWx0ICs9IGMKICAgICAgICAgcmV0dXJuIHJlc3VsdAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBwb3Moc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmluZGV4IC0gbGVuKHNlbGYubmV4dCBvciAnJykKICAgICBkZWYgdGVsbChzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuaW5kZXggLSBsZW4oc2VsZi5uZXh0IG9yICcnKQogICAgIGRlZiBzZWVrKHNlbGYsIGluZGV4KToKQEAgLTI4MiwzMyArMjkxLDYgQEAKICAgICBkZWYgZXJyb3Ioc2VsZiwgbXNnLCBvZmZzZXQ9MCk6CiAgICAgICAgIHJldHVybiBlcnJvcihtc2csIHNlbGYuc3RyaW5nLCBzZWxmLnRlbGwoKSAtIG9mZnNldCkKIAotIyBUaGUgZm9sbG93aW5nIHRocmVlIGZ1bmN0aW9ucyBhcmUgbm90IHVzZWQgaW4gdGhpcyBtb2R1bGUgYW55bW9yZSwgYnV0IHdlIGtlZXAKLSMgdGhlbSBoZXJlICh3aXRoIERlcHJlY2F0aW9uV2FybmluZ3MpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4KLQotZGVmIGlzaWRlbnQoY2hhcik6Ci0gICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgd2FybmluZ3Mud2Fybignc3JlX3BhcnNlLmlzaWRlbnQoKSB3aWxsIGJlIHJlbW92ZWQgaW4gMy41JywKLSAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQotICAgIHJldHVybiAiYSIgPD0gY2hhciA8PSAieiIgb3IgIkEiIDw9IGNoYXIgPD0gIloiIG9yIGNoYXIgPT0gIl8iCi0KLWRlZiBpc2RpZ2l0KGNoYXIpOgotICAgIGltcG9ydCB3YXJuaW5ncwotICAgIHdhcm5pbmdzLndhcm4oJ3NyZV9wYXJzZS5pc2RpZ2l0KCkgd2lsbCBiZSByZW1vdmVkIGluIDMuNScsCi0gICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKLSAgICByZXR1cm4gIjAiIDw9IGNoYXIgPD0gIjkiCi0KLWRlZiBpc25hbWUobmFtZSk6Ci0gICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgd2FybmluZ3Mud2Fybignc3JlX3BhcnNlLmlzbmFtZSgpIHdpbGwgYmUgcmVtb3ZlZCBpbiAzLjUnLAotICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCi0gICAgIyBjaGVjayB0aGF0IGdyb3VwIG5hbWUgaXMgYSB2YWxpZCBzdHJpbmcKLSAgICBpZiBub3QgaXNpZGVudChuYW1lWzBdKToKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgZm9yIGNoYXIgaW4gbmFtZVsxOl06Ci0gICAgICAgIGlmIG5vdCBpc2lkZW50KGNoYXIpIGFuZCBub3QgaXNkaWdpdChjaGFyKToKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgIHJldHVybiBUcnVlCi0KIGRlZiBfY2xhc3NfZXNjYXBlKHNvdXJjZSwgZXNjYXBlKToKICAgICAjIGhhbmRsZSBlc2NhcGUgY29kZSBpbnNpZGUgY2hhcmFjdGVyIGNsYXNzCiAgICAgY29kZSA9IEVTQ0FQRVMuZ2V0KGVzY2FwZSkKQEAgLTM1MSw5ICszMzMsNyBAQAogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgogICAgICAgICBpZiBsZW4oZXNjYXBlKSA9PSAyOgogICAgICAgICAgICAgaWYgYyBpbiBBU0NJSUxFVFRFUlM6Ci0gICAgICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybignYmFkIGVzY2FwZSAlcycgJSBlc2NhcGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9OCkKKyAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoJ2JhZCBlc2NhcGUgJXMnICUgZXNjYXBlLCBsZW4oZXNjYXBlKSkKICAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBvcmQoZXNjYXBlWzFdKQogICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICBwYXNzCkBAIC00MTUsMTggKzM5NSwxNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKGVzY2FwZSkpCiAgICAgICAgICAgICAgICAgc3RhdGUuY2hlY2tsb29rYmVoaW5kZ3JvdXAoZ3JvdXAsIHNvdXJjZSkKICAgICAgICAgICAgICAgICByZXR1cm4gR1JPVVBSRUYsIGdyb3VwCi0gICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoImludmFsaWQgZ3JvdXAgcmVmZXJlbmNlIiwgbGVuKGVzY2FwZSkpCisgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoImludmFsaWQgZ3JvdXAgcmVmZXJlbmNlICVkIiAlIGdyb3VwLCBsZW4oZXNjYXBlKSAtIDEpCiAgICAgICAgIGlmIGxlbihlc2NhcGUpID09IDI6CiAgICAgICAgICAgICBpZiBjIGluIEFTQ0lJTEVUVEVSUzoKLSAgICAgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKLSAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCdiYWQgZXNjYXBlICVzJyAlIGVzY2FwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD04KQorICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigiYmFkIGVzY2FwZSAlcyIgJSBlc2NhcGUsIGxlbihlc2NhcGUpKQogICAgICAgICAgICAgcmV0dXJuIExJVEVSQUwsIG9yZChlc2NhcGVbMV0pCiAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgIHBhc3MKICAgICByYWlzZSBzb3VyY2UuZXJyb3IoImJhZCBlc2NhcGUgJXMiICUgZXNjYXBlLCBsZW4oZXNjYXBlKSkKIAotZGVmIF9wYXJzZV9zdWIoc291cmNlLCBzdGF0ZSwgbmVzdGVkPVRydWUpOgorZGVmIF9wYXJzZV9zdWIoc291cmNlLCBzdGF0ZSwgdmVyYm9zZSwgbmVzdGVkPVRydWUpOgogICAgICMgcGFyc2UgYW4gYWx0ZXJuYXRpb246IGF8YnxjCiAKICAgICBpdGVtcyA9IFtdCkBAIC00MzQsNyArNDEyLDcgQEAKICAgICBzb3VyY2VtYXRjaCA9IHNvdXJjZS5tYXRjaAogICAgIHN0YXJ0ID0gc291cmNlLnRlbGwoKQogICAgIHdoaWxlIFRydWU6Ci0gICAgICAgIGl0ZW1zYXBwZW5kKF9wYXJzZShzb3VyY2UsIHN0YXRlKSkKKyAgICAgICAgaXRlbXNhcHBlbmQoX3BhcnNlKHNvdXJjZSwgc3RhdGUsIHZlcmJvc2UpKQogICAgICAgICBpZiBub3Qgc291cmNlbWF0Y2goInwiKToKICAgICAgICAgICAgIGJyZWFrCiAKQEAgLTQ3NiwxMCArNDU0LDEwIEBACiAgICAgc3VicGF0dGVybi5hcHBlbmQoKEJSQU5DSCwgKE5vbmUsIGl0ZW1zKSkpCiAgICAgcmV0dXJuIHN1YnBhdHRlcm4KIAotZGVmIF9wYXJzZV9zdWJfY29uZChzb3VyY2UsIHN0YXRlLCBjb25kZ3JvdXApOgotICAgIGl0ZW1feWVzID0gX3BhcnNlKHNvdXJjZSwgc3RhdGUpCitkZWYgX3BhcnNlX3N1Yl9jb25kKHNvdXJjZSwgc3RhdGUsIGNvbmRncm91cCwgdmVyYm9zZSk6CisgICAgaXRlbV95ZXMgPSBfcGFyc2Uoc291cmNlLCBzdGF0ZSwgdmVyYm9zZSkKICAgICBpZiBzb3VyY2UubWF0Y2goInwiKToKLSAgICAgICAgaXRlbV9ubyA9IF9wYXJzZShzb3VyY2UsIHN0YXRlKQorICAgICAgICBpdGVtX25vID0gX3BhcnNlKHNvdXJjZSwgc3RhdGUsIHZlcmJvc2UpCiAgICAgICAgIGlmIHNvdXJjZS5uZXh0ID09ICJ8IjoKICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigiY29uZGl0aW9uYWwgYmFja3JlZiB3aXRoIG1vcmUgdGhhbiB0d28gYnJhbmNoZXMiKQogICAgIGVsc2U6CkBAIC00ODgsNyArNDY2LDcgQEAKICAgICBzdWJwYXR0ZXJuLmFwcGVuZCgoR1JPVVBSRUZfRVhJU1RTLCAoY29uZGdyb3VwLCBpdGVtX3llcywgaXRlbV9ubykpKQogICAgIHJldHVybiBzdWJwYXR0ZXJuCiAKLWRlZiBfcGFyc2Uoc291cmNlLCBzdGF0ZSk6CitkZWYgX3BhcnNlKHNvdXJjZSwgc3RhdGUsIHZlcmJvc2UpOgogICAgICMgcGFyc2UgYSBzaW1wbGUgcGF0dGVybgogICAgIHN1YnBhdHRlcm4gPSBTdWJQYXR0ZXJuKHN0YXRlKQogCkBAIC00OTgsNyArNDc2LDYgQEAKICAgICBzb3VyY2VtYXRjaCA9IHNvdXJjZS5tYXRjaAogICAgIF9sZW4gPSBsZW4KICAgICBfb3JkID0gb3JkCi0gICAgdmVyYm9zZSA9IHN0YXRlLmZsYWdzICYgU1JFX0ZMQUdfVkVSQk9TRQogCiAgICAgd2hpbGUgVHJ1ZToKIApAQCAtNjUyLDYgKzYyOSw4IEBACiAgICAgICAgICAgICBncm91cCA9IFRydWUKICAgICAgICAgICAgIG5hbWUgPSBOb25lCiAgICAgICAgICAgICBjb25kZ3JvdXAgPSBOb25lCisgICAgICAgICAgICBhZGRfZmxhZ3MgPSAwCisgICAgICAgICAgICBkZWxfZmxhZ3MgPSAwCiAgICAgICAgICAgICBpZiBzb3VyY2VtYXRjaCgiPyIpOgogICAgICAgICAgICAgICAgICMgb3B0aW9ucwogICAgICAgICAgICAgICAgIGNoYXIgPSBzb3VyY2VnZXQoKQpAQCAtNzEzLDcgKzY5Miw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBsb29rYmVoaW5kZ3JvdXBzID0gc3RhdGUubG9va2JlaGluZGdyb3VwcwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgbG9va2JlaGluZGdyb3VwcyBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLmxvb2tiZWhpbmRncm91cHMgPSBzdGF0ZS5ncm91cHMKLSAgICAgICAgICAgICAgICAgICAgcCA9IF9wYXJzZV9zdWIoc291cmNlLCBzdGF0ZSkKKyAgICAgICAgICAgICAgICAgICAgcCA9IF9wYXJzZV9zdWIoc291cmNlLCBzdGF0ZSwgdmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgaWYgZGlyIDwgMDoKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxvb2tiZWhpbmRncm91cHMgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5sb29rYmVoaW5kZ3JvdXBzID0gTm9uZQpAQCAtNzQ2LDIyICs3MjUsMjYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoImJhZCBncm91cCBudW1iZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oY29uZG5hbWUpICsgMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNvbmRncm91cCA+PSBNQVhHUk9VUFM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihjb25kbmFtZSkgKyAxKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9ICJpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZSAlZCIgJSBjb25kZ3JvdXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IobXNnLCBsZW4oY29uZG5hbWUpICsgMSkKICAgICAgICAgICAgICAgICAgICAgc3RhdGUuY2hlY2tsb29rYmVoaW5kZ3JvdXAoY29uZGdyb3VwLCBzb3VyY2UpCi0gICAgICAgICAgICAgICAgZWxpZiBjaGFyIGluIEZMQUdTOgorICAgICAgICAgICAgICAgIGVsaWYgY2hhciBpbiBGTEFHUyBvciBjaGFyID09ICItIjoKICAgICAgICAgICAgICAgICAgICAgIyBmbGFncwotICAgICAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUuZmxhZ3MgfD0gRkxBR1NbY2hhcl0KLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgPSBzb3VyY2VnZXQoKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgY2hhciBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigibWlzc2luZyApIikKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNoYXIgPT0gIikiOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBjaGFyIG5vdCBpbiBGTEFHUzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoInVua25vd24gZmxhZyIsIGxlbihjaGFyKSkKLSAgICAgICAgICAgICAgICAgICAgdmVyYm9zZSA9IHN0YXRlLmZsYWdzICYgU1JFX0ZMQUdfVkVSQk9TRQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICBwb3MgPSBzb3VyY2UucG9zCisgICAgICAgICAgICAgICAgICAgIGZsYWdzID0gX3BhcnNlX2ZsYWdzKHNvdXJjZSwgc3RhdGUsIGNoYXIpCisgICAgICAgICAgICAgICAgICAgIGlmIGZsYWdzIGlzIE5vbmU6ICAjIGdsb2JhbCBmbGFncworICAgICAgICAgICAgICAgICAgICAgICAgaWYgcG9zICE9IDM6ICAjICIoP3giCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0ZsYWdzIG5vdCBhdCB0aGUgc3RhcnQgb2YgdGhlIGV4cHJlc3Npb24gJXMlcycgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2Uuc3RyaW5nWzoyMF0sICAjIHRydW5jYXRlIGxvbmcgcmVnZXhlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAodHJ1bmNhdGVkKScgaWYgbGVuKHNvdXJjZS5zdHJpbmcpID4gMjAgZWxzZSAnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICBhZGRfZmxhZ3MsIGRlbF9mbGFncyA9IGZsYWdzCisgICAgICAgICAgICAgICAgICAgIGdyb3VwID0gTm9uZQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigidW5rbm93biBleHRlbnNpb24gPyIgKyBjaGFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKGNoYXIpICsgMSkKQEAgLTc3MywxNSArNzU2LDE3IEBACiAgICAgICAgICAgICAgICAgZXhjZXB0IGVycm9yIGFzIGVycjoKICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKGVyci5tc2csIGxlbihuYW1lKSArIDEpIGZyb20gTm9uZQogICAgICAgICAgICAgaWYgY29uZGdyb3VwOgotICAgICAgICAgICAgICAgIHAgPSBfcGFyc2Vfc3ViX2NvbmQoc291cmNlLCBzdGF0ZSwgY29uZGdyb3VwKQorICAgICAgICAgICAgICAgIHAgPSBfcGFyc2Vfc3ViX2NvbmQoc291cmNlLCBzdGF0ZSwgY29uZGdyb3VwLCB2ZXJib3NlKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBwID0gX3BhcnNlX3N1Yihzb3VyY2UsIHN0YXRlKQorICAgICAgICAgICAgICAgIHN1Yl92ZXJib3NlID0gKCh2ZXJib3NlIG9yIChhZGRfZmxhZ3MgJiBTUkVfRkxBR19WRVJCT1NFKSkgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IChkZWxfZmxhZ3MgJiBTUkVfRkxBR19WRVJCT1NFKSkKKyAgICAgICAgICAgICAgICBwID0gX3BhcnNlX3N1Yihzb3VyY2UsIHN0YXRlLCBzdWJfdmVyYm9zZSkKICAgICAgICAgICAgIGlmIG5vdCBzb3VyY2UubWF0Y2goIikiKToKICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoIm1pc3NpbmcgKSwgdW50ZXJtaW5hdGVkIHN1YnBhdHRlcm4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UudGVsbCgpIC0gc3RhcnQpCiAgICAgICAgICAgICBpZiBncm91cCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBzdGF0ZS5jbG9zZWdyb3VwKGdyb3VwLCBwKQotICAgICAgICAgICAgc3VicGF0dGVybmFwcGVuZCgoU1VCUEFUVEVSTiwgKGdyb3VwLCBwKSkpCisgICAgICAgICAgICBzdWJwYXR0ZXJuYXBwZW5kKChTVUJQQVRURVJOLCAoZ3JvdXAsIGFkZF9mbGFncywgZGVsX2ZsYWdzLCBwKSkpCiAKICAgICAgICAgZWxpZiB0aGlzID09ICJeIjoKICAgICAgICAgICAgIHN1YnBhdHRlcm5hcHBlbmQoKEFULCBBVF9CRUdJTk5JTkcpKQpAQCAtNzk0LDE0ICs3NzksNTggQEAKIAogICAgIHJldHVybiBzdWJwYXR0ZXJuCiAKK2RlZiBfcGFyc2VfZmxhZ3Moc291cmNlLCBzdGF0ZSwgY2hhcik6CisgICAgc291cmNlZ2V0ID0gc291cmNlLmdldAorICAgIGFkZF9mbGFncyA9IDAKKyAgICBkZWxfZmxhZ3MgPSAwCisgICAgaWYgY2hhciAhPSAiLSI6CisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBhZGRfZmxhZ3MgfD0gRkxBR1NbY2hhcl0KKyAgICAgICAgICAgIGNoYXIgPSBzb3VyY2VnZXQoKQorICAgICAgICAgICAgaWYgY2hhciBpcyBOb25lOgorICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigibWlzc2luZyAtLCA6IG9yICkiKQorICAgICAgICAgICAgaWYgY2hhciBpbiAiKS06IjoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgaWYgY2hhciBub3QgaW4gRkxBR1M6CisgICAgICAgICAgICAgICAgbXNnID0gInVua25vd24gZmxhZyIgaWYgY2hhci5pc2FscGhhKCkgZWxzZSAibWlzc2luZyAtLCA6IG9yICkiCisgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKG1zZywgbGVuKGNoYXIpKQorICAgIGlmIGNoYXIgPT0gIikiOgorICAgICAgICBpZiAoKGFkZF9mbGFncyAmIFNSRV9GTEFHX1ZFUkJPU0UpIGFuZAorICAgICAgICAgICAgbm90IChzdGF0ZS5mbGFncyAmIFNSRV9GTEFHX1ZFUkJPU0UpKToKKyAgICAgICAgICAgIHJhaXNlIFZlcmJvc2UKKyAgICAgICAgc3RhdGUuZmxhZ3MgfD0gYWRkX2ZsYWdzCisgICAgICAgIHJldHVybiBOb25lCisgICAgaWYgYWRkX2ZsYWdzICYgR0xPQkFMX0ZMQUdTOgorICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoImJhZCBpbmxpbmUgZmxhZ3M6IGNhbm5vdCB0dXJuIG9uIGdsb2JhbCBmbGFnIiwgMSkKKyAgICBpZiBjaGFyID09ICItIjoKKyAgICAgICAgY2hhciA9IHNvdXJjZWdldCgpCisgICAgICAgIGlmIGNoYXIgaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigibWlzc2luZyBmbGFnIikKKyAgICAgICAgaWYgY2hhciBub3QgaW4gRkxBR1M6CisgICAgICAgICAgICBtc2cgPSAidW5rbm93biBmbGFnIiBpZiBjaGFyLmlzYWxwaGEoKSBlbHNlICJtaXNzaW5nIGZsYWciCisgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IobXNnLCBsZW4oY2hhcikpCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBkZWxfZmxhZ3MgfD0gRkxBR1NbY2hhcl0KKyAgICAgICAgICAgIGNoYXIgPSBzb3VyY2VnZXQoKQorICAgICAgICAgICAgaWYgY2hhciBpcyBOb25lOgorICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigibWlzc2luZyA6IikKKyAgICAgICAgICAgIGlmIGNoYXIgPT0gIjoiOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBpZiBjaGFyIG5vdCBpbiBGTEFHUzoKKyAgICAgICAgICAgICAgICBtc2cgPSAidW5rbm93biBmbGFnIiBpZiBjaGFyLmlzYWxwaGEoKSBlbHNlICJtaXNzaW5nIDoiCisgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKG1zZywgbGVuKGNoYXIpKQorICAgIGFzc2VydCBjaGFyID09ICI6IgorICAgIGlmIGRlbF9mbGFncyAmIEdMT0JBTF9GTEFHUzoKKyAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJiYWQgaW5saW5lIGZsYWdzOiBjYW5ub3QgdHVybiBvZmYgZ2xvYmFsIGZsYWciLCAxKQorICAgIGlmIGFkZF9mbGFncyAmIGRlbF9mbGFnczoKKyAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJiYWQgaW5saW5lIGZsYWdzOiBmbGFnIHR1cm5lZCBvbiBhbmQgb2ZmIiwgMSkKKyAgICByZXR1cm4gYWRkX2ZsYWdzLCBkZWxfZmxhZ3MKKwogZGVmIGZpeF9mbGFncyhzcmMsIGZsYWdzKToKICAgICAjIENoZWNrIGFuZCBmaXggZmxhZ3MgYWNjb3JkaW5nIHRvIHRoZSB0eXBlIG9mIHBhdHRlcm4gKHN0ciBvciBieXRlcykKICAgICBpZiBpc2luc3RhbmNlKHNyYywgc3RyKToKICAgICAgICAgaWYgZmxhZ3MgJiBTUkVfRkxBR19MT0NBTEU6Ci0gICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKLSAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oIkxPQ0FMRSBmbGFnIHdpdGggYSBzdHIgcGF0dGVybiBpcyBkZXByZWNhdGVkLiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJXaWxsIGJlIGFuIGVycm9yIGluIDMuNiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD02KQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY2Fubm90IHVzZSBMT0NBTEUgZmxhZyB3aXRoIGEgc3RyIHBhdHRlcm4iKQogICAgICAgICBpZiBub3QgZmxhZ3MgJiBTUkVfRkxBR19BU0NJSToKICAgICAgICAgICAgIGZsYWdzIHw9IFNSRV9GTEFHX1VOSUNPREUKICAgICAgICAgZWxpZiBmbGFncyAmIFNSRV9GTEFHX1VOSUNPREU6CkBAIC04MTAsMTAgKzgzOSw3IEBACiAgICAgICAgIGlmIGZsYWdzICYgU1JFX0ZMQUdfVU5JQ09ERToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNhbm5vdCB1c2UgVU5JQ09ERSBmbGFnIHdpdGggYSBieXRlcyBwYXR0ZXJuIikKICAgICAgICAgaWYgZmxhZ3MgJiBTUkVfRkxBR19MT0NBTEUgYW5kIGZsYWdzICYgU1JFX0ZMQUdfQVNDSUk6Ci0gICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKLSAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oIkFTQ0lJIGFuZCBMT0NBTEUgZmxhZ3MgYXJlIGluY29tcGF0aWJsZS4gIgotICAgICAgICAgICAgICAgICAgICAgICAgICAiV2lsbCBiZSBhbiBlcnJvciBpbiAzLjYiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9NikKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkFTQ0lJIGFuZCBMT0NBTEUgZmxhZ3MgYXJlIGluY29tcGF0aWJsZSIpCiAgICAgcmV0dXJuIGZsYWdzCiAKIGRlZiBwYXJzZShzdHIsIGZsYWdzPTAsIHBhdHRlcm49Tm9uZSk6CkBAIC04MjYsMTggKzg1MiwyMyBAQAogICAgIHBhdHRlcm4uZmxhZ3MgPSBmbGFncwogICAgIHBhdHRlcm4uc3RyID0gc3RyCiAKLSAgICBwID0gX3BhcnNlX3N1Yihzb3VyY2UsIHBhdHRlcm4sIDApCisgICAgdHJ5OgorICAgICAgICBwID0gX3BhcnNlX3N1Yihzb3VyY2UsIHBhdHRlcm4sIGZsYWdzICYgU1JFX0ZMQUdfVkVSQk9TRSwgRmFsc2UpCisgICAgZXhjZXB0IFZlcmJvc2U6CisgICAgICAgICMgdGhlIFZFUkJPU0UgZmxhZyB3YXMgc3dpdGNoZWQgb24gaW5zaWRlIHRoZSBwYXR0ZXJuLiAgdG8gYmUKKyAgICAgICAgIyBvbiB0aGUgc2FmZSBzaWRlLCB3ZSdsbCBwYXJzZSB0aGUgd2hvbGUgdGhpbmcgYWdhaW4uLi4KKyAgICAgICAgcGF0dGVybiA9IFBhdHRlcm4oKQorICAgICAgICBwYXR0ZXJuLmZsYWdzID0gZmxhZ3MgfCBTUkVfRkxBR19WRVJCT1NFCisgICAgICAgIHBhdHRlcm4uc3RyID0gc3RyCisgICAgICAgIHNvdXJjZS5zZWVrKDApCisgICAgICAgIHAgPSBfcGFyc2Vfc3ViKHNvdXJjZSwgcGF0dGVybiwgVHJ1ZSwgRmFsc2UpCisKICAgICBwLnBhdHRlcm4uZmxhZ3MgPSBmaXhfZmxhZ3Moc3RyLCBwLnBhdHRlcm4uZmxhZ3MpCiAKICAgICBpZiBzb3VyY2UubmV4dCBpcyBub3QgTm9uZToKICAgICAgICAgYXNzZXJ0IHNvdXJjZS5uZXh0ID09ICIpIgogICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoInVuYmFsYW5jZWQgcGFyZW50aGVzaXMiKQogCi0gICAgaWYgbm90IChmbGFncyAmIFNSRV9GTEFHX1ZFUkJPU0UpIGFuZCBwLnBhdHRlcm4uZmxhZ3MgJiBTUkVfRkxBR19WRVJCT1NFOgotICAgICAgICAjIHRoZSBWRVJCT1NFIGZsYWcgd2FzIHN3aXRjaGVkIG9uIGluc2lkZSB0aGUgcGF0dGVybi4gIHRvIGJlCi0gICAgICAgICMgb24gdGhlIHNhZmUgc2lkZSwgd2UnbGwgcGFyc2UgdGhlIHdob2xlIHRoaW5nIGFnYWluLi4uCi0gICAgICAgIHJldHVybiBwYXJzZShzdHIsIHAucGF0dGVybi5mbGFncykKLQogICAgIGlmIGZsYWdzICYgU1JFX0ZMQUdfREVCVUc6CiAgICAgICAgIHAuZHVtcCgpCiAKQEAgLTg1Miw3ICs4ODMsOSBAQAogICAgIGxpdGVyYWxzID0gW10KICAgICBsaXRlcmFsID0gW10KICAgICBsYXBwZW5kID0gbGl0ZXJhbC5hcHBlbmQKLSAgICBkZWYgYWRkZ3JvdXAoaW5kZXgpOgorICAgIGRlZiBhZGRncm91cChpbmRleCwgcG9zKToKKyAgICAgICAgaWYgaW5kZXggPiBwYXR0ZXJuLmdyb3VwczoKKyAgICAgICAgICAgIHJhaXNlIHMuZXJyb3IoImludmFsaWQgZ3JvdXAgcmVmZXJlbmNlICVkIiAlIGluZGV4LCBwb3MpCiAgICAgICAgIGlmIGxpdGVyYWw6CiAgICAgICAgICAgICBsaXRlcmFscy5hcHBlbmQoJycuam9pbihsaXRlcmFsKSkKICAgICAgICAgICAgIGRlbCBsaXRlcmFsWzpdCkBAIC04ODUsOSArOTE4LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHMuZXJyb3IoImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAlciIgJSBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4obmFtZSkgKyAxKSBmcm9tIE5vbmUKICAgICAgICAgICAgICAgICAgICAgaWYgaW5kZXggPj0gTUFYR1JPVVBTOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugcy5lcnJvcigiaW52YWxpZCBncm91cCByZWZlcmVuY2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugcy5lcnJvcigiaW52YWxpZCBncm91cCByZWZlcmVuY2UgJWQiICUgaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihuYW1lKSArIDEpCi0gICAgICAgICAgICAgICAgYWRkZ3JvdXAoaW5kZXgpCisgICAgICAgICAgICAgICAgYWRkZ3JvdXAoaW5kZXgsIGxlbihuYW1lKSArIDEpCiAgICAgICAgICAgICBlbGlmIGMgPT0gIjAiOgogICAgICAgICAgICAgICAgIGlmIHMubmV4dCBpbiBPQ1RESUdJVFM6CiAgICAgICAgICAgICAgICAgICAgIHRoaXMgKz0gc2dldCgpCkBAIC05MDgsNyArOTQxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyYW5nZSAwLTBvMzc3JyAlIHRoaXMsIGxlbih0aGlzKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGxhcHBlbmQoY2hyKGMpKQogICAgICAgICAgICAgICAgIGlmIG5vdCBpc29jdGFsOgotICAgICAgICAgICAgICAgICAgICBhZGRncm91cChpbnQodGhpc1sxOl0pKQorICAgICAgICAgICAgICAgICAgICBhZGRncm91cChpbnQodGhpc1sxOl0pLCBsZW4odGhpcykgLSAxKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIHRoaXMgPSBjaHIoRVNDQVBFU1t0aGlzXVsxXSkKQEAgLTkzNyw1ICs5NzAsNSBAQAogICAgICAgICBmb3IgaW5kZXgsIGdyb3VwIGluIGdyb3VwczoKICAgICAgICAgICAgIGxpdGVyYWxzW2luZGV4XSA9IGcoZ3JvdXApIG9yIGVtcHR5CiAgICAgZXhjZXB0IEluZGV4RXJyb3I6Ci0gICAgICAgIHJhaXNlIGVycm9yKCJpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZSIpCisgICAgICAgIHJhaXNlIGVycm9yKCJpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZSAlZCIgJSBpbmRleCkKICAgICByZXR1cm4gZW1wdHkuam9pbihsaXRlcmFscykKZGlmZiAtLWdpdCBhL0xpYi9zc2wucHkgYi9MaWIvc3NsLnB5CmluZGV4IGUxOTEzOTAuLjhhZDRhMzMgMTAwNjQ0Ci0tLSBhL0xpYi9zc2wucHkKKysrIGIvTGliL3NzbC5weQpAQCAtNTIsNiArNTIsOCBAQAogUFJPVE9DT0xfU1NMdjMKIFBST1RPQ09MX1NTTHYyMwogUFJPVE9DT0xfVExTCitQUk9UT0NPTF9UTFNfQ0xJRU5UCitQUk9UT0NPTF9UTFNfU0VSVkVSCiBQUk9UT0NPTF9UTFN2MQogUFJPVE9DT0xfVExTdjFfMQogUFJPVE9DT0xfVExTdjFfMgpAQCAtOTQsMTcgKzk2LDE2IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgb3MKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUKLWZyb20gZW51bSBpbXBvcnQgRW51bSBhcyBfRW51bSwgSW50RW51bSBhcyBfSW50RW51bQorZnJvbSBlbnVtIGltcG9ydCBFbnVtIGFzIF9FbnVtLCBJbnRFbnVtIGFzIF9JbnRFbnVtLCBJbnRGbGFnIGFzIF9JbnRGbGFnCiAKIGltcG9ydCBfc3NsICAgICAgICAgICAgICMgaWYgd2UgY2FuJ3QgaW1wb3J0IGl0LCBsZXQgdGhlIGVycm9yIHByb3BhZ2F0ZQogCiBmcm9tIF9zc2wgaW1wb3J0IE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIsIE9QRU5TU0xfVkVSU0lPTl9JTkZPLCBPUEVOU1NMX1ZFUlNJT04KLWZyb20gX3NzbCBpbXBvcnQgX1NTTENvbnRleHQsIE1lbW9yeUJJTworZnJvbSBfc3NsIGltcG9ydCBfU1NMQ29udGV4dCwgTWVtb3J5QklPLCBTU0xTZXNzaW9uCiBmcm9tIF9zc2wgaW1wb3J0ICgKICAgICBTU0xFcnJvciwgU1NMWmVyb1JldHVybkVycm9yLCBTU0xXYW50UmVhZEVycm9yLCBTU0xXYW50V3JpdGVFcnJvciwKICAgICBTU0xTeXNjYWxsRXJyb3IsIFNTTEVPRkVycm9yLAogICAgICkKLWZyb20gX3NzbCBpbXBvcnQgQ0VSVF9OT05FLCBDRVJUX09QVElPTkFMLCBDRVJUX1JFUVVJUkVECiBmcm9tIF9zc2wgaW1wb3J0IHR4dDJvYmogYXMgX3R4dDJvYmosIG5pZDJvYmogYXMgX25pZDJvYmoKIGZyb20gX3NzbCBpbXBvcnQgUkFORF9zdGF0dXMsIFJBTkRfYWRkLCBSQU5EX2J5dGVzLCBSQU5EX3BzZXVkb19ieXRlcwogdHJ5OgpAQCAtMTEzLDMyICsxMTQsNDcgQEAKICAgICAjIExpYnJlU1NMIGRvZXMgbm90IHByb3ZpZGUgUkFORF9lZ2QKICAgICBwYXNzCiAKLWRlZiBfaW1wb3J0X3N5bWJvbHMocHJlZml4KToKLSAgICBmb3IgbiBpbiBkaXIoX3NzbCk6Ci0gICAgICAgIGlmIG4uc3RhcnRzd2l0aChwcmVmaXgpOgotICAgICAgICAgICAgZ2xvYmFscygpW25dID0gZ2V0YXR0cihfc3NsLCBuKQotCi1faW1wb3J0X3N5bWJvbHMoJ09QXycpCi1faW1wb3J0X3N5bWJvbHMoJ0FMRVJUX0RFU0NSSVBUSU9OXycpCi1faW1wb3J0X3N5bWJvbHMoJ1NTTF9FUlJPUl8nKQotX2ltcG9ydF9zeW1ib2xzKCdWRVJJRllfJykKIAogZnJvbSBfc3NsIGltcG9ydCBIQVNfU05JLCBIQVNfRUNESCwgSEFTX05QTiwgSEFTX0FMUE4KLQogZnJvbSBfc3NsIGltcG9ydCBfT1BFTlNTTF9BUElfVkVSU0lPTgogCisKIF9JbnRFbnVtLl9jb252ZXJ0KAotICAgICAgICAnX1NTTE1ldGhvZCcsIF9fbmFtZV9fLAotICAgICAgICBsYW1iZGEgbmFtZTogbmFtZS5zdGFydHN3aXRoKCdQUk9UT0NPTF8nKSBhbmQgbmFtZSAhPSAnUFJPVE9DT0xfU1NMdjIzJywKLSAgICAgICAgc291cmNlPV9zc2wpCisgICAgJ19TU0xNZXRob2QnLCBfX25hbWVfXywKKyAgICBsYW1iZGEgbmFtZTogbmFtZS5zdGFydHN3aXRoKCdQUk9UT0NPTF8nKSBhbmQgbmFtZSAhPSAnUFJPVE9DT0xfU1NMdjIzJywKKyAgICBzb3VyY2U9X3NzbCkKKworX0ludEZsYWcuX2NvbnZlcnQoCisgICAgJ09wdGlvbnMnLCBfX25hbWVfXywKKyAgICBsYW1iZGEgbmFtZTogbmFtZS5zdGFydHN3aXRoKCdPUF8nKSwKKyAgICBzb3VyY2U9X3NzbCkKKworX0ludEVudW0uX2NvbnZlcnQoCisgICAgJ0FsZXJ0RGVzY3JpcHRpb24nLCBfX25hbWVfXywKKyAgICBsYW1iZGEgbmFtZTogbmFtZS5zdGFydHN3aXRoKCdBTEVSVF9ERVNDUklQVElPTl8nKSwKKyAgICBzb3VyY2U9X3NzbCkKKworX0ludEVudW0uX2NvbnZlcnQoCisgICAgJ1NTTEVycm9yTnVtYmVyJywgX19uYW1lX18sCisgICAgbGFtYmRhIG5hbWU6IG5hbWUuc3RhcnRzd2l0aCgnU1NMX0VSUk9SXycpLAorICAgIHNvdXJjZT1fc3NsKQorCitfSW50RmxhZy5fY29udmVydCgKKyAgICAnVmVyaWZ5RmxhZ3MnLCBfX25hbWVfXywKKyAgICBsYW1iZGEgbmFtZTogbmFtZS5zdGFydHN3aXRoKCdWRVJJRllfJyksCisgICAgc291cmNlPV9zc2wpCisKK19JbnRFbnVtLl9jb252ZXJ0KAorICAgICdWZXJpZnlNb2RlJywgX19uYW1lX18sCisgICAgbGFtYmRhIG5hbWU6IG5hbWUuc3RhcnRzd2l0aCgnQ0VSVF8nKSwKKyAgICBzb3VyY2U9X3NzbCkKKwogCiBQUk9UT0NPTF9TU0x2MjMgPSBfU1NMTWV0aG9kLlBST1RPQ09MX1NTTHYyMyA9IF9TU0xNZXRob2QuUFJPVE9DT0xfVExTCiBfUFJPVE9DT0xfTkFNRVMgPSB7dmFsdWU6IG5hbWUgZm9yIG5hbWUsIHZhbHVlIGluIF9TU0xNZXRob2QuX19tZW1iZXJzX18uaXRlbXMoKX0KIAotdHJ5OgotICAgIF9TU0x2Ml9JRl9FWElTVFMgPSBQUk9UT0NPTF9TU0x2MgotZXhjZXB0IE5hbWVFcnJvcjoKLSAgICBfU1NMdjJfSUZfRVhJU1RTID0gTm9uZQorX1NTTHYyX0lGX0VYSVNUUyA9IGdldGF0dHIoX1NTTE1ldGhvZCwgJ1BST1RPQ09MX1NTTHYyJywgTm9uZSkKKwogCiBpZiBzeXMucGxhdGZvcm0gPT0gIndpbjMyIjoKICAgICBmcm9tIF9zc2wgaW1wb3J0IGVudW1fY2VydGlmaWNhdGVzLCBlbnVtX2NybHMKQEAgLTM3NywxOCArMzkzLDE4IEBACiAgICAgZGVmIHdyYXBfc29ja2V0KHNlbGYsIHNvY2ssIHNlcnZlcl9zaWRlPUZhbHNlLAogICAgICAgICAgICAgICAgICAgICBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1UcnVlLAogICAgICAgICAgICAgICAgICAgICBzdXBwcmVzc19yYWdnZWRfZW9mcz1UcnVlLAotICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9Tm9uZSk6CisgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1Ob25lLCBzZXNzaW9uPU5vbmUpOgogICAgICAgICByZXR1cm4gU1NMU29ja2V0KHNvY2s9c29jaywgc2VydmVyX3NpZGU9c2VydmVyX3NpZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q9ZG9faGFuZHNoYWtlX29uX2Nvbm5lY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcHJlc3NfcmFnZ2VkX2VvZnM9c3VwcHJlc3NfcmFnZ2VkX2VvZnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPXNlcnZlcl9ob3N0bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBfY29udGV4dD1zZWxmKQorICAgICAgICAgICAgICAgICAgICAgICAgIF9jb250ZXh0PXNlbGYsIF9zZXNzaW9uPXNlc3Npb24pCiAKICAgICBkZWYgd3JhcF9iaW8oc2VsZiwgaW5jb21pbmcsIG91dGdvaW5nLCBzZXJ2ZXJfc2lkZT1GYWxzZSwKLSAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPU5vbmUpOgorICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9Tm9uZSwgc2Vzc2lvbj1Ob25lKToKICAgICAgICAgc3Nsb2JqID0gc2VsZi5fd3JhcF9iaW8oaW5jb21pbmcsIG91dGdvaW5nLCBzZXJ2ZXJfc2lkZT1zZXJ2ZXJfc2lkZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPXNlcnZlcl9ob3N0bmFtZSkKLSAgICAgICAgcmV0dXJuIFNTTE9iamVjdChzc2xvYmopCisgICAgICAgIHJldHVybiBTU0xPYmplY3Qoc3Nsb2JqLCBzZXNzaW9uPXNlc3Npb24pCiAKICAgICBkZWYgc2V0X25wbl9wcm90b2NvbHMoc2VsZiwgbnBuX3Byb3RvY29scyk6CiAgICAgICAgIHByb3RvcyA9IGJ5dGVhcnJheSgpCkBAIC00MzQsNiArNDUwLDM0IEBACiAgICAgICAgICAgICAgICAgc2VsZi5fbG9hZF93aW5kb3dzX3N0b3JlX2NlcnRzKHN0b3JlbmFtZSwgcHVycG9zZSkKICAgICAgICAgc2VsZi5zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMoKQogCisgICAgQHByb3BlcnR5CisgICAgZGVmIG9wdGlvbnMoc2VsZik6CisgICAgICAgIHJldHVybiBPcHRpb25zKHN1cGVyKCkub3B0aW9ucykKKworICAgIEBvcHRpb25zLnNldHRlcgorICAgIGRlZiBvcHRpb25zKHNlbGYsIHZhbHVlKToKKyAgICAgICAgc3VwZXIoU1NMQ29udGV4dCwgU1NMQ29udGV4dCkub3B0aW9ucy5fX3NldF9fKHNlbGYsIHZhbHVlKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHZlcmlmeV9mbGFncyhzZWxmKToKKyAgICAgICAgcmV0dXJuIFZlcmlmeUZsYWdzKHN1cGVyKCkudmVyaWZ5X2ZsYWdzKQorCisgICAgQHZlcmlmeV9mbGFncy5zZXR0ZXIKKyAgICBkZWYgdmVyaWZ5X2ZsYWdzKHNlbGYsIHZhbHVlKToKKyAgICAgICAgc3VwZXIoU1NMQ29udGV4dCwgU1NMQ29udGV4dCkudmVyaWZ5X2ZsYWdzLl9fc2V0X18oc2VsZiwgdmFsdWUpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdmVyaWZ5X21vZGUoc2VsZik6CisgICAgICAgIHZhbHVlID0gc3VwZXIoKS52ZXJpZnlfbW9kZQorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gVmVyaWZ5TW9kZSh2YWx1ZSkKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICByZXR1cm4gdmFsdWUKKworICAgIEB2ZXJpZnlfbW9kZS5zZXR0ZXIKKyAgICBkZWYgdmVyaWZ5X21vZGUoc2VsZiwgdmFsdWUpOgorICAgICAgICBzdXBlcihTU0xDb250ZXh0LCBTU0xDb250ZXh0KS52ZXJpZnlfbW9kZS5fX3NldF9fKHNlbGYsIHZhbHVlKQorCiAKIGRlZiBjcmVhdGVfZGVmYXVsdF9jb250ZXh0KHB1cnBvc2U9UHVycG9zZS5TRVJWRVJfQVVUSCwgKiwgY2FmaWxlPU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXBhdGg9Tm9uZSwgY2FkYXRhPU5vbmUpOgpAQCAtNDQ2LDMyICs0OTAsMTYgQEAKICAgICBpZiBub3QgaXNpbnN0YW5jZShwdXJwb3NlLCBfQVNOMU9iamVjdCk6CiAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihwdXJwb3NlKQogCisgICAgIyBTU0xDb250ZXh0IHNldHMgT1BfTk9fU1NMdjIsIE9QX05PX1NTTHYzLCBPUF9OT19DT01QUkVTU0lPTiwKKyAgICAjIE9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSwgT1BfU0lOR0xFX0RIX1VTRSBhbmQgT1BfU0lOR0xFX0VDREhfVVNFCisgICAgIyBieSBkZWZhdWx0LgogICAgIGNvbnRleHQgPSBTU0xDb250ZXh0KFBST1RPQ09MX1RMUykKIAotICAgICMgU1NMdjIgY29uc2lkZXJlZCBoYXJtZnVsLgotICAgIGNvbnRleHQub3B0aW9ucyB8PSBPUF9OT19TU0x2MgotCi0gICAgIyBTU0x2MyBoYXMgcHJvYmxlbWF0aWMgc2VjdXJpdHkgYW5kIGlzIG9ubHkgcmVxdWlyZWQgZm9yIHJlYWxseSBvbGQKLSAgICAjIGNsaWVudHMgc3VjaCBhcyBJRTYgb24gV2luZG93cyBYUAotICAgIGNvbnRleHQub3B0aW9ucyB8PSBPUF9OT19TU0x2MwotCi0gICAgIyBkaXNhYmxlIGNvbXByZXNzaW9uIHRvIHByZXZlbnQgQ1JJTUUgYXR0YWNrcyAoT3BlblNTTCAxLjArKQotICAgIGNvbnRleHQub3B0aW9ucyB8PSBnZXRhdHRyKF9zc2wsICJPUF9OT19DT01QUkVTU0lPTiIsIDApCi0KICAgICBpZiBwdXJwb3NlID09IFB1cnBvc2UuU0VSVkVSX0FVVEg6CiAgICAgICAgICMgdmVyaWZ5IGNlcnRzIGFuZCBob3N0IG5hbWUgaW4gY2xpZW50IG1vZGUKICAgICAgICAgY29udGV4dC52ZXJpZnlfbW9kZSA9IENFUlRfUkVRVUlSRUQKICAgICAgICAgY29udGV4dC5jaGVja19ob3N0bmFtZSA9IFRydWUKICAgICBlbGlmIHB1cnBvc2UgPT0gUHVycG9zZS5DTElFTlRfQVVUSDoKLSAgICAgICAgIyBQcmVmZXIgdGhlIHNlcnZlcidzIGNpcGhlcnMgYnkgZGVmYXVsdCBzbyB0aGF0IHdlIGdldCBzdHJvbmdlcgotICAgICAgICAjIGVuY3J5cHRpb24KLSAgICAgICAgY29udGV4dC5vcHRpb25zIHw9IGdldGF0dHIoX3NzbCwgIk9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSIsIDApCi0KLSAgICAgICAgIyBVc2Ugc2luZ2xlIHVzZSBrZXlzIGluIG9yZGVyIHRvIGltcHJvdmUgZm9yd2FyZCBzZWNyZWN5Ci0gICAgICAgIGNvbnRleHQub3B0aW9ucyB8PSBnZXRhdHRyKF9zc2wsICJPUF9TSU5HTEVfREhfVVNFIiwgMCkKLSAgICAgICAgY29udGV4dC5vcHRpb25zIHw9IGdldGF0dHIoX3NzbCwgIk9QX1NJTkdMRV9FQ0RIX1VTRSIsIDApCi0KLSAgICAgICAgIyBkaXNhbGxvdyBjaXBoZXJzIHdpdGgga25vd24gdnVsbmVyYWJpbGl0aWVzCiAgICAgICAgIGNvbnRleHQuc2V0X2NpcGhlcnMoX1JFU1RSSUNURURfU0VSVkVSX0NJUEhFUlMpCiAKICAgICBpZiBjYWZpbGUgb3IgY2FwYXRoIG9yIGNhZGF0YToKQEAgLTQ5NywxMiArNTI1LDEwIEBACiAgICAgaWYgbm90IGlzaW5zdGFuY2UocHVycG9zZSwgX0FTTjFPYmplY3QpOgogICAgICAgICByYWlzZSBUeXBlRXJyb3IocHVycG9zZSkKIAorICAgICMgU1NMQ29udGV4dCBzZXRzIE9QX05PX1NTTHYyLCBPUF9OT19TU0x2MywgT1BfTk9fQ09NUFJFU1NJT04sCisgICAgIyBPUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UsIE9QX1NJTkdMRV9ESF9VU0UgYW5kIE9QX1NJTkdMRV9FQ0RIX1VTRQorICAgICMgYnkgZGVmYXVsdC4KICAgICBjb250ZXh0ID0gU1NMQ29udGV4dChwcm90b2NvbCkKLSAgICAjIFNTTHYyIGNvbnNpZGVyZWQgaGFybWZ1bC4KLSAgICBjb250ZXh0Lm9wdGlvbnMgfD0gT1BfTk9fU1NMdjIKLSAgICAjIFNTTHYzIGhhcyBwcm9ibGVtYXRpYyBzZWN1cml0eSBhbmQgaXMgb25seSByZXF1aXJlZCBmb3IgcmVhbGx5IG9sZAotICAgICMgY2xpZW50cyBzdWNoIGFzIElFNiBvbiBXaW5kb3dzIFhQCi0gICAgY29udGV4dC5vcHRpb25zIHw9IE9QX05PX1NTTHYzCiAKICAgICBpZiBjZXJ0X3JlcXMgaXMgbm90IE5vbmU6CiAgICAgICAgIGNvbnRleHQudmVyaWZ5X21vZGUgPSBjZXJ0X3JlcXMKQEAgLTU0OCwxMCArNTc0LDEyIEBACiAgICAgICogVGhlIGBgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3RgYCBhbmQgYGBzdXBwcmVzc19yYWdnZWRfZW9mc2BgIG1hY2hpbmVyeS4KICAgICAiIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzc2xvYmosIG93bmVyPU5vbmUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzc2xvYmosIG93bmVyPU5vbmUsIHNlc3Npb249Tm9uZSk6CiAgICAgICAgIHNlbGYuX3NzbG9iaiA9IHNzbG9iagogICAgICAgICAjIE5vdGU6IF9zc2xvYmogdGFrZXMgYSB3ZWFrIHJlZmVyZW5jZSB0byBvd25lcgogICAgICAgICBzZWxmLl9zc2xvYmoub3duZXIgPSBvd25lciBvciBzZWxmCisgICAgICAgIGlmIHNlc3Npb24gaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLl9zc2xvYmouc2Vzc2lvbiA9IHNlc3Npb24KIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBjb250ZXh0KHNlbGYpOgpAQCAtNTYzLDYgKzU5MSwyMCBAQAogICAgICAgICBzZWxmLl9zc2xvYmouY29udGV4dCA9IGN0eAogCiAgICAgQHByb3BlcnR5CisgICAgZGVmIHNlc3Npb24oc2VsZik6CisgICAgICAgICIiIlRoZSBTU0xTZXNzaW9uIGZvciBjbGllbnQgc29ja2V0LiIiIgorICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLnNlc3Npb24KKworICAgIEBzZXNzaW9uLnNldHRlcgorICAgIGRlZiBzZXNzaW9uKHNlbGYsIHNlc3Npb24pOgorICAgICAgICBzZWxmLl9zc2xvYmouc2Vzc2lvbiA9IHNlc3Npb24KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzZXNzaW9uX3JldXNlZChzZWxmKToKKyAgICAgICAgIiIiV2FzIHRoZSBjbGllbnQgc2Vzc2lvbiByZXVzZWQgZHVyaW5nIGhhbmRzaGFrZSIiIgorICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLnNlc3Npb25fcmV1c2VkCisKKyAgICBAcHJvcGVydHkKICAgICBkZWYgc2VydmVyX3NpZGUoc2VsZik6CiAgICAgICAgICIiIldoZXRoZXIgdGhpcyBpcyBhIHNlcnZlci1zaWRlIHNvY2tldC4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai5zZXJ2ZXJfc2lkZQpAQCAtNjc5LDcgKzcyMSw3IEBACiAgICAgICAgICAgICAgICAgIGZhbWlseT1BRl9JTkVULCB0eXBlPVNPQ0tfU1RSRUFNLCBwcm90bz0wLCBmaWxlbm89Tm9uZSwKICAgICAgICAgICAgICAgICAgc3VwcHJlc3NfcmFnZ2VkX2VvZnM9VHJ1ZSwgbnBuX3Byb3RvY29scz1Ob25lLCBjaXBoZXJzPU5vbmUsCiAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1Ob25lLAotICAgICAgICAgICAgICAgICBfY29udGV4dD1Ob25lKToKKyAgICAgICAgICAgICAgICAgX2NvbnRleHQ9Tm9uZSwgX3Nlc3Npb249Tm9uZSk6CiAKICAgICAgICAgaWYgX2NvbnRleHQ6CiAgICAgICAgICAgICBzZWxmLl9jb250ZXh0ID0gX2NvbnRleHQKQEAgLTcxMSwxMSArNzUzLDE2IEBACiAgICAgICAgICMgbWl4ZWQgaW4uCiAgICAgICAgIGlmIHNvY2suZ2V0c29ja29wdChTT0xfU09DS0VULCBTT19UWVBFKSAhPSBTT0NLX1NUUkVBTToKICAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoIm9ubHkgc3RyZWFtIHNvY2tldHMgYXJlIHN1cHBvcnRlZCIpCi0gICAgICAgIGlmIHNlcnZlcl9zaWRlIGFuZCBzZXJ2ZXJfaG9zdG5hbWU6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJzZXJ2ZXJfaG9zdG5hbWUgY2FuIG9ubHkgYmUgc3BlY2lmaWVkICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluIGNsaWVudCBtb2RlIikKKyAgICAgICAgaWYgc2VydmVyX3NpZGU6CisgICAgICAgICAgICBpZiBzZXJ2ZXJfaG9zdG5hbWU6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigic2VydmVyX2hvc3RuYW1lIGNhbiBvbmx5IGJlIHNwZWNpZmllZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW4gY2xpZW50IG1vZGUiKQorICAgICAgICAgICAgaWYgX3Nlc3Npb24gaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigic2Vzc2lvbiBjYW4gb25seSBiZSBzcGVjaWZpZWQgaW4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNsaWVudCBtb2RlIikKICAgICAgICAgaWYgc2VsZi5fY29udGV4dC5jaGVja19ob3N0bmFtZSBhbmQgbm90IHNlcnZlcl9ob3N0bmFtZToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNoZWNrX2hvc3RuYW1lIHJlcXVpcmVzIHNlcnZlcl9ob3N0bmFtZSIpCisgICAgICAgIHNlbGYuX3Nlc3Npb24gPSBfc2Vzc2lvbgogICAgICAgICBzZWxmLnNlcnZlcl9zaWRlID0gc2VydmVyX3NpZGUKICAgICAgICAgc2VsZi5zZXJ2ZXJfaG9zdG5hbWUgPSBzZXJ2ZXJfaG9zdG5hbWUKICAgICAgICAgc2VsZi5kb19oYW5kc2hha2Vfb25fY29ubmVjdCA9IGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0CkBAIC03NTEsNyArNzk4LDggQEAKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzc2xvYmogPSBzZWxmLl9jb250ZXh0Ll93cmFwX3NvY2tldChzZWxmLCBzZXJ2ZXJfc2lkZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWUpCi0gICAgICAgICAgICAgICAgc2VsZi5fc3Nsb2JqID0gU1NMT2JqZWN0KHNzbG9iaiwgb3duZXI9c2VsZikKKyAgICAgICAgICAgICAgICBzZWxmLl9zc2xvYmogPSBTU0xPYmplY3Qoc3Nsb2JqLCBvd25lcj1zZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uPXNlbGYuX3Nlc3Npb24pCiAgICAgICAgICAgICAgICAgaWYgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q6CiAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBzZWxmLmdldHRpbWVvdXQoKQogICAgICAgICAgICAgICAgICAgICBpZiB0aW1lb3V0ID09IDAuMDoKQEAgLTc3Miw2ICs4MjAsMjQgQEAKICAgICAgICAgc2VsZi5fY29udGV4dCA9IGN0eAogICAgICAgICBzZWxmLl9zc2xvYmouY29udGV4dCA9IGN0eAogCisgICAgQHByb3BlcnR5CisgICAgZGVmIHNlc3Npb24oc2VsZik6CisgICAgICAgICIiIlRoZSBTU0xTZXNzaW9uIGZvciBjbGllbnQgc29ja2V0LiIiIgorICAgICAgICBpZiBzZWxmLl9zc2xvYmogaXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLnNlc3Npb24KKworICAgIEBzZXNzaW9uLnNldHRlcgorICAgIGRlZiBzZXNzaW9uKHNlbGYsIHNlc3Npb24pOgorICAgICAgICBzZWxmLl9zZXNzaW9uID0gc2Vzc2lvbgorICAgICAgICBpZiBzZWxmLl9zc2xvYmogaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLl9zc2xvYmouc2Vzc2lvbiA9IHNlc3Npb24KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzZXNzaW9uX3JldXNlZChzZWxmKToKKyAgICAgICAgIiIiV2FzIHRoZSBjbGllbnQgc2Vzc2lvbiByZXVzZWQgZHVyaW5nIGhhbmRzaGFrZSIiIgorICAgICAgICBpZiBzZWxmLl9zc2xvYmogaXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLnNlc3Npb25fcmV1c2VkCisKICAgICBkZWYgZHVwKHNlbGYpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZCgiQ2FuJ3QgZHVwKCkgJXMgaW5zdGFuY2VzIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fKQpAQCAtODk4LDcgKzk2NCw2IEBACiAgICAgICAgICAgICB3aGlsZSAoY291bnQgPCBhbW91bnQpOgogICAgICAgICAgICAgICAgIHYgPSBzZWxmLnNlbmQoZGF0YVtjb3VudDpdKQogICAgICAgICAgICAgICAgIGNvdW50ICs9IHYKLSAgICAgICAgICAgIHJldHVybiBhbW91bnQKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBzb2NrZXQuc2VuZGFsbChzZWxmLCBkYXRhLCBmbGFncykKIApAQCAtMTAwNSw3ICsxMDcwLDggQEAKICAgICAgICAgaWYgc2VsZi5fY29ubmVjdGVkOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiYXR0ZW1wdCB0byBjb25uZWN0IGFscmVhZHktY29ubmVjdGVkIFNTTFNvY2tldCEiKQogICAgICAgICBzc2xvYmogPSBzZWxmLmNvbnRleHQuX3dyYXBfc29ja2V0KHNlbGYsIEZhbHNlLCBzZWxmLnNlcnZlcl9ob3N0bmFtZSkKLSAgICAgICAgc2VsZi5fc3Nsb2JqID0gU1NMT2JqZWN0KHNzbG9iaiwgb3duZXI9c2VsZikKKyAgICAgICAgc2VsZi5fc3Nsb2JqID0gU1NMT2JqZWN0KHNzbG9iaiwgb3duZXI9c2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb249c2VsZi5fc2Vzc2lvbikKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaWYgY29ubmVjdF9leDoKICAgICAgICAgICAgICAgICByYyA9IHNvY2tldC5jb25uZWN0X2V4KHNlbGYsIGFkZHIpCkBAIC0xMDY4LDcgKzExMzQsNiBAQAogICAgICAgICAgICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PVRydWUsCiAgICAgICAgICAgICAgICAgc3VwcHJlc3NfcmFnZ2VkX2VvZnM9VHJ1ZSwKICAgICAgICAgICAgICAgICBjaXBoZXJzPU5vbmUpOgotCiAgICAgcmV0dXJuIFNTTFNvY2tldChzb2NrPXNvY2ssIGtleWZpbGU9a2V5ZmlsZSwgY2VydGZpbGU9Y2VydGZpbGUsCiAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfc2lkZT1zZXJ2ZXJfc2lkZSwgY2VydF9yZXFzPWNlcnRfcmVxcywKICAgICAgICAgICAgICAgICAgICAgIHNzbF92ZXJzaW9uPXNzbF92ZXJzaW9uLCBjYV9jZXJ0cz1jYV9jZXJ0cywKZGlmZiAtLWdpdCBhL0xpYi9zdGF0aXN0aWNzLnB5IGIvTGliL3N0YXRpc3RpY3MucHkKaW5kZXggNGY1YzFjMS4uMzBmZTU1YyAxMDA2NDQKLS0tIGEvTGliL3N0YXRpc3RpY3MucHkKKysrIGIvTGliL3N0YXRpc3RpY3MucHkKQEAgLTEsMjAgKzEsMyBAQAotIyMgIE1vZHVsZSBzdGF0aXN0aWNzLnB5Ci0jIwotIyMgIENvcHlyaWdodCAoYykgMjAxMyBTdGV2ZW4gRCdBcHJhbm8gPHN0ZXZlK3B5dGhvbkBwZWFyd29vZC5pbmZvPi4KLSMjCi0jIyAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0jIyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotIyMgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIyMKLSMjICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSMjCi0jIyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyMgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0jIyAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotIyMgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotCi0KICIiIgogQmFzaWMgc3RhdGlzdGljcyBtb2R1bGUuCiAKQEAgLTI4LDYgKzExLDcgQEAKIEZ1bmN0aW9uICAgICAgICAgICAgRGVzY3JpcHRpb24KID09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiBtZWFuICAgICAgICAgICAgICAgIEFyaXRobWV0aWMgbWVhbiAoYXZlcmFnZSkgb2YgZGF0YS4KK2hhcm1vbmljX21lYW4gICAgICAgSGFybW9uaWMgbWVhbiBvZiBkYXRhLgogbWVkaWFuICAgICAgICAgICAgICBNZWRpYW4gKG1pZGRsZSB2YWx1ZSkgb2YgZGF0YS4KIG1lZGlhbl9sb3cgICAgICAgICAgTG93IG1lZGlhbiBvZiBkYXRhLgogbWVkaWFuX2hpZ2ggICAgICAgICBIaWdoIG1lZGlhbiBvZiBkYXRhLgpAQCAtOTUsMTYgKzc5LDE4IEBACiBfX2FsbF9fID0gWyAnU3RhdGlzdGljc0Vycm9yJywKICAgICAgICAgICAgICdwc3RkZXYnLCAncHZhcmlhbmNlJywgJ3N0ZGV2JywgJ3ZhcmlhbmNlJywKICAgICAgICAgICAgICdtZWRpYW4nLCAgJ21lZGlhbl9sb3cnLCAnbWVkaWFuX2hpZ2gnLCAnbWVkaWFuX2dyb3VwZWQnLAotICAgICAgICAgICAgJ21lYW4nLCAnbW9kZScsCisgICAgICAgICAgICAnbWVhbicsICdtb2RlJywgJ2hhcm1vbmljX21lYW4nLAogICAgICAgICAgIF0KIAotCiBpbXBvcnQgY29sbGVjdGlvbnMKK2ltcG9ydCBkZWNpbWFsCiBpbXBvcnQgbWF0aAoraW1wb3J0IG51bWJlcnMKIAogZnJvbSBmcmFjdGlvbnMgaW1wb3J0IEZyYWN0aW9uCiBmcm9tIGRlY2ltYWwgaW1wb3J0IERlY2ltYWwKLWZyb20gaXRlcnRvb2xzIGltcG9ydCBncm91cGJ5Citmcm9tIGl0ZXJ0b29scyBpbXBvcnQgZ3JvdXBieSwgY2hhaW4KK2Zyb20gYmlzZWN0IGltcG9ydCBiaXNlY3RfbGVmdCwgYmlzZWN0X3JpZ2h0CiAKIAogCkBAIC0xMzQsNyArMTIwLDggQEAKIAogICAgIFNvbWUgc291cmNlcyBvZiByb3VuZC1vZmYgZXJyb3Igd2lsbCBiZSBhdm9pZGVkOgogCi0gICAgPj4+IF9zdW0oWzFlNTAsIDEsIC0xZTUwXSAqIDEwMDApICAjIEJ1aWx0LWluIHN1bSByZXR1cm5zIHplcm8uCisgICAgIyBCdWlsdC1pbiBzdW0gcmV0dXJucyB6ZXJvLgorICAgID4+PiBfc3VtKFsxZTUwLCAxLCAtMWU1MF0gKiAxMDAwKQogICAgICg8Y2xhc3MgJ2Zsb2F0Jz4sIEZyYWN0aW9uKDEwMDAsIDEpLCAzMDAwKQogCiAgICAgRnJhY3Rpb25zIGFuZCBEZWNpbWFscyBhcmUgYWxzbyBzdXBwb3J0ZWQ6CkBAIC0yMjMsNTYgKzIxMCwyNiBAQAogICAgICAgICAjIE9wdGltaXNlIHRoZSBjb21tb24gY2FzZSBvZiBmbG9hdHMuIFdlIGV4cGVjdCB0aGF0IHRoZSBtb3N0IG9mdGVuCiAgICAgICAgICMgdXNlZCBudW1lcmljIHR5cGUgd2lsbCBiZSBidWlsdGluIGZsb2F0cywgc28gdHJ5IHRvIG1ha2UgdGhpcyBhcwogICAgICAgICAjIGZhc3QgYXMgcG9zc2libGUuCi0gICAgICAgIGlmIHR5cGUoeCkgaXMgZmxvYXQ6CisgICAgICAgIGlmIHR5cGUoeCkgaXMgZmxvYXQgb3IgdHlwZSh4KSBpcyBEZWNpbWFsOgogICAgICAgICAgICAgcmV0dXJuIHguYXNfaW50ZWdlcl9yYXRpbygpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgICMgeCBtYXkgYmUgYW4gaW50LCBGcmFjdGlvbiwgb3IgSW50ZWdyYWwgQUJDLgogICAgICAgICAgICAgcmV0dXJuICh4Lm51bWVyYXRvciwgeC5kZW5vbWluYXRvcikKICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICMgeCBtYXkgYmUgYSBmbG9hdCBzdWJjbGFzcy4KKyAgICAgICAgICAgICAgICAjIHggbWF5IGJlIGEgZmxvYXQgb3IgRGVjaW1hbCBzdWJjbGFzcy4KICAgICAgICAgICAgICAgICByZXR1cm4geC5hc19pbnRlZ2VyX3JhdGlvKCkKICAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICMgeCBtYXkgYmUgYSBEZWNpbWFsLgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2RlY2ltYWxfdG9fcmF0aW8oeCkKLSAgICAgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgICMgSnVzdCBnaXZlIHVwPwotICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgIyBKdXN0IGdpdmUgdXA/CisgICAgICAgICAgICAgICAgcGFzcwogICAgIGV4Y2VwdCAoT3ZlcmZsb3dFcnJvciwgVmFsdWVFcnJvcik6CiAgICAgICAgICMgZmxvYXQgTkFOIG9yIElORi4KLSAgICAgICAgYXNzZXJ0IG5vdCBtYXRoLmlzZmluaXRlKHgpCisgICAgICAgIGFzc2VydCBub3QgX2lzZmluaXRlKHgpCiAgICAgICAgIHJldHVybiAoeCwgTm9uZSkKICAgICBtc2cgPSAiY2FuJ3QgY29udmVydCB0eXBlICd7fScgdG8gbnVtZXJhdG9yL2Rlbm9taW5hdG9yIgogICAgIHJhaXNlIFR5cGVFcnJvcihtc2cuZm9ybWF0KHR5cGUoeCkuX19uYW1lX18pKQogCiAKLSMgRklYTUUgVGhpcyBpcyBmYXN0ZXIgdGhhbiBGcmFjdGlvbi5mcm9tX2RlY2ltYWwsIGJ1dCBzdGlsbCB0b28gc2xvdy4KLWRlZiBfZGVjaW1hbF90b19yYXRpbyhkKToKLSAgICAiIiJDb252ZXJ0IERlY2ltYWwgZCB0byBleGFjdCBpbnRlZ2VyIHJhdGlvIChudW1lcmF0b3IsIGRlbm9taW5hdG9yKS4KLQotICAgID4+PiBmcm9tIGRlY2ltYWwgaW1wb3J0IERlY2ltYWwKLSAgICA+Pj4gX2RlY2ltYWxfdG9fcmF0aW8oRGVjaW1hbCgiMi42IikpCi0gICAgKDI2LCAxMCkKLQotICAgICIiIgotICAgIHNpZ24sIGRpZ2l0cywgZXhwID0gZC5hc190dXBsZSgpCi0gICAgaWYgZXhwIGluICgnRicsICduJywgJ04nKTogICMgSU5GLCBOQU4sIHNOQU4KLSAgICAgICAgYXNzZXJ0IG5vdCBkLmlzX2Zpbml0ZSgpCi0gICAgICAgIHJldHVybiAoZCwgTm9uZSkKLSAgICBudW0gPSAwCi0gICAgZm9yIGRpZ2l0IGluIGRpZ2l0czoKLSAgICAgICAgbnVtID0gbnVtKjEwICsgZGlnaXQKLSAgICBpZiBleHAgPCAwOgotICAgICAgICBkZW4gPSAxMCoqLWV4cAotICAgIGVsc2U6Ci0gICAgICAgIG51bSAqPSAxMCoqZXhwCi0gICAgICAgIGRlbiA9IDEKLSAgICBpZiBzaWduOgotICAgICAgICBudW0gPSAtbnVtCi0gICAgcmV0dXJuIChudW0sIGRlbikKLQotCiBkZWYgX2NvbnZlcnQodmFsdWUsIFQpOgogICAgICIiIkNvbnZlcnQgdmFsdWUgdG8gZ2l2ZW4gbnVtZXJpYyB0eXBlIFQuIiIiCiAgICAgaWYgdHlwZSh2YWx1ZSkgaXMgVDoKQEAgLTMwNSw2ICsyNjIsMzAgQEAKICAgICByZXR1cm4gdGFibGUKIAogCitkZWYgX2ZpbmRfbHRlcShhLCB4KToKKyAgICAnTG9jYXRlIHRoZSBsZWZ0bW9zdCB2YWx1ZSBleGFjdGx5IGVxdWFsIHRvIHgnCisgICAgaSA9IGJpc2VjdF9sZWZ0KGEsIHgpCisgICAgaWYgaSAhPSBsZW4oYSkgYW5kIGFbaV0gPT0geDoKKyAgICAgICAgcmV0dXJuIGkKKyAgICByYWlzZSBWYWx1ZUVycm9yCisKKworZGVmIF9maW5kX3J0ZXEoYSwgbCwgeCk6CisgICAgJ0xvY2F0ZSB0aGUgcmlnaHRtb3N0IHZhbHVlIGV4YWN0bHkgZXF1YWwgdG8geCcKKyAgICBpID0gYmlzZWN0X3JpZ2h0KGEsIHgsIGxvPWwpCisgICAgaWYgaSAhPSAobGVuKGEpKzEpIGFuZCBhW2ktMV0gPT0geDoKKyAgICAgICAgcmV0dXJuIGktMQorICAgIHJhaXNlIFZhbHVlRXJyb3IKKworCitkZWYgX2ZhaWxfbmVnKHZhbHVlcywgZXJybXNnPSduZWdhdGl2ZSB2YWx1ZScpOgorICAgICIiIkl0ZXJhdGUgb3ZlciB2YWx1ZXMsIGZhaWxpbmcgaWYgYW55IGFyZSBsZXNzIHRoYW4gemVyby4iIiIKKyAgICBmb3IgeCBpbiB2YWx1ZXM6CisgICAgICAgIGlmIHggPCAwOgorICAgICAgICAgICAgcmFpc2UgU3RhdGlzdGljc0Vycm9yKGVycm1zZykKKyAgICAgICAgeWllbGQgeAorCisKICMgPT09IE1lYXN1cmVzIG9mIGNlbnRyYWwgdGVuZGVuY3kgKGF2ZXJhZ2VzKSA9PT0KIAogZGVmIG1lYW4oZGF0YSk6CkBAIC0zMzMsNiArMzE0LDUyIEBACiAgICAgcmV0dXJuIF9jb252ZXJ0KHRvdGFsL24sIFQpCiAKIAorZGVmIGhhcm1vbmljX21lYW4oZGF0YSk6CisgICAgIiIiUmV0dXJuIHRoZSBoYXJtb25pYyBtZWFuIG9mIGRhdGEuCisKKyAgICBUaGUgaGFybW9uaWMgbWVhbiwgc29tZXRpbWVzIGNhbGxlZCB0aGUgc3ViY29udHJhcnkgbWVhbiwgaXMgdGhlCisgICAgcmVjaXByb2NhbCBvZiB0aGUgYXJpdGhtZXRpYyBtZWFuIG9mIHRoZSByZWNpcHJvY2FscyBvZiB0aGUgZGF0YSwKKyAgICBhbmQgaXMgb2Z0ZW4gYXBwcm9wcmlhdGUgd2hlbiBhdmVyYWdpbmcgcXVhbnRpdGllcyB3aGljaCBhcmUgcmF0ZXMKKyAgICBvciByYXRpb3MsIGZvciBleGFtcGxlIHNwZWVkcy4gRXhhbXBsZToKKworICAgIFN1cHBvc2UgYW4gaW52ZXN0b3IgcHVyY2hhc2VzIGFuIGVxdWFsIHZhbHVlIG9mIHNoYXJlcyBpbiBlYWNoIG9mCisgICAgdGhyZWUgY29tcGFuaWVzLCB3aXRoIFAvRSAocHJpY2UvZWFybmluZykgcmF0aW9zIG9mIDIuNSwgMyBhbmQgMTAuCisgICAgV2hhdCBpcyB0aGUgYXZlcmFnZSBQL0UgcmF0aW8gZm9yIHRoZSBpbnZlc3RvcidzIHBvcnRmb2xpbz8KKworICAgID4+PiBoYXJtb25pY19tZWFuKFsyLjUsIDMsIDEwXSkgICMgRm9yIGFuIGVxdWFsIGludmVzdG1lbnQgcG9ydGZvbGlvLgorICAgIDMuNgorCisgICAgVXNpbmcgdGhlIGFyaXRobWV0aWMgbWVhbiB3b3VsZCBnaXZlIGFuIGF2ZXJhZ2Ugb2YgYWJvdXQgNS4xNjcsIHdoaWNoCisgICAgaXMgdG9vIGhpZ2guCisKKyAgICBJZiBgYGRhdGFgYCBpcyBlbXB0eSwgb3IgYW55IGVsZW1lbnQgaXMgbGVzcyB0aGFuIHplcm8sCisgICAgYGBoYXJtb25pY19tZWFuYGAgd2lsbCByYWlzZSBgYFN0YXRpc3RpY3NFcnJvcmBgLgorICAgICIiIgorICAgICMgRm9yIGEganVzdGlmaWNhdGlvbiBmb3IgdXNpbmcgaGFybW9uaWMgbWVhbiBmb3IgUC9FIHJhdGlvcywgc2VlCisgICAgIyBodHRwOi8vZml4dGhlcGl0Y2gucGVsbHVjaWQuY29tL2NvbXBzLWFuYWx5c2lzLXRoZS1taXNzaW5nLWhhcm1vbnktb2Ytc3VtbWFyeS1zdGF0aXN0aWNzLworICAgICMgaHR0cDovL3BhcGVycy5zc3JuLmNvbS9zb2wzL3BhcGVycy5jZm0/YWJzdHJhY3RfaWQ9MjYyMTA4NworICAgIGlmIGl0ZXIoZGF0YSkgaXMgZGF0YToKKyAgICAgICAgZGF0YSA9IGxpc3QoZGF0YSkKKyAgICBlcnJtc2cgPSAnaGFybW9uaWMgbWVhbiBkb2VzIG5vdCBzdXBwb3J0IG5lZ2F0aXZlIHZhbHVlcycKKyAgICBuID0gbGVuKGRhdGEpCisgICAgaWYgbiA8IDE6CisgICAgICAgIHJhaXNlIFN0YXRpc3RpY3NFcnJvcignaGFybW9uaWNfbWVhbiByZXF1aXJlcyBhdCBsZWFzdCBvbmUgZGF0YSBwb2ludCcpCisgICAgZWxpZiBuID09IDE6CisgICAgICAgIHggPSBkYXRhWzBdCisgICAgICAgIGlmIGlzaW5zdGFuY2UoeCwgKG51bWJlcnMuUmVhbCwgRGVjaW1hbCkpOgorICAgICAgICAgICAgaWYgeCA8IDA6CisgICAgICAgICAgICAgICAgcmFpc2UgU3RhdGlzdGljc0Vycm9yKGVycm1zZykKKyAgICAgICAgICAgIHJldHVybiB4CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ3Vuc3VwcG9ydGVkIHR5cGUnKQorICAgIHRyeToKKyAgICAgICAgVCwgdG90YWwsIGNvdW50ID0gX3N1bSgxL3ggZm9yIHggaW4gX2ZhaWxfbmVnKGRhdGEsIGVycm1zZykpCisgICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yOgorICAgICAgICByZXR1cm4gMAorICAgIGFzc2VydCBjb3VudCA9PSBuCisgICAgcmV0dXJuIF9jb252ZXJ0KG4vdG90YWwsIFQpCisKKwogIyBGSVhNRTogaW52ZXN0aWdhdGUgd2F5cyB0byBjYWxjdWxhdGUgbWVkaWFucyB3aXRob3V0IHNvcnRpbmc/IFF1aWNrc2VsZWN0PwogZGVmIG1lZGlhbihkYXRhKToKICAgICAiIiJSZXR1cm4gdGhlIG1lZGlhbiAobWlkZGxlIHZhbHVlKSBvZiBudW1lcmljIGRhdGEuCkBAIC00NDIsOSArNDY5LDE1IEBACiAgICAgZXhjZXB0IFR5cGVFcnJvcjoKICAgICAgICAgIyBNaXhlZCB0eXBlLiBGb3Igbm93IHdlIGp1c3QgY29lcmNlIHRvIGZsb2F0LgogICAgICAgICBMID0gZmxvYXQoeCkgLSBmbG9hdChpbnRlcnZhbCkvMgotICAgIGNmID0gZGF0YS5pbmRleCh4KSAgIyBOdW1iZXIgb2YgdmFsdWVzIGJlbG93IHRoZSBtZWRpYW4gaW50ZXJ2YWwuCi0gICAgIyBGSVhNRSBUaGUgZm9sbG93aW5nIGxpbmUgY291bGQgYmUgbW9yZSBlZmZpY2llbnQgZm9yIGJpZyBsaXN0cy4KLSAgICBmID0gZGF0YS5jb3VudCh4KSAgIyBOdW1iZXIgb2YgZGF0YSBwb2ludHMgaW4gdGhlIG1lZGlhbiBpbnRlcnZhbC4KKworICAgICMgVXNlcyBiaXNlY3Rpb24gc2VhcmNoIHRvIHNlYXJjaCBmb3IgeCBpbiBkYXRhIHdpdGggbG9nKG4pIHRpbWUgY29tcGxleGl0eQorICAgICMgRmluZCB0aGUgcG9zaXRpb24gb2YgbGVmdG1vc3Qgb2NjdXJyZW5jZSBvZiB4IGluIGRhdGEKKyAgICBsMSA9IF9maW5kX2x0ZXEoZGF0YSwgeCkKKyAgICAjIEZpbmQgdGhlIHBvc2l0aW9uIG9mIHJpZ2h0bW9zdCBvY2N1cnJlbmNlIG9mIHggaW4gZGF0YVtsMS4uLmxlbihkYXRhKV0KKyAgICAjIEFzc3VtaW5nIGFsd2F5cyBsMSA8PSBsMgorICAgIGwyID0gX2ZpbmRfcnRlcShkYXRhLCBsMSwgeCkKKyAgICBjZiA9IGwxCisgICAgZiA9IGwyIC0gbDEgKyAxCiAgICAgcmV0dXJuIEwgKyBpbnRlcnZhbCoobi8yIC0gY2YpL2YKIAogCmRpZmYgLS1naXQgYS9MaWIvc3RyaW5nLnB5IGIvTGliL3N0cmluZy5weQppbmRleCA4OTI4N2M0Li5jOTAyMDA3IDEwMDY0NAotLS0gYS9MaWIvc3RyaW5nLnB5CisrKyBiL0xpYi9zdHJpbmcucHkKQEAgLTI4LDcgKzI4LDcgQEAKIGRpZ2l0cyA9ICcwMTIzNDU2Nzg5JwogaGV4ZGlnaXRzID0gZGlnaXRzICsgJ2FiY2RlZicgKyAnQUJDREVGJwogb2N0ZGlnaXRzID0gJzAxMjM0NTY3JwotcHVuY3R1YXRpb24gPSAiIiIhIiMkJSYnKCkqKywtLi86Ozw9Pj9AW1xdXl9ge3x9fiIiIgorcHVuY3R1YXRpb24gPSByIiIiISIjJCUmJygpKissLS4vOjs8PT4/QFtcXV5fYHt8fX4iIiIKIHByaW50YWJsZSA9IGRpZ2l0cyArIGFzY2lpX2xldHRlcnMgKyBwdW5jdHVhdGlvbiArIHdoaXRlc3BhY2UKIAogIyBGdW5jdGlvbnMgd2hpY2ggYXJlbid0IGF2YWlsYWJsZSBhcyBzdHJpbmcgbWV0aG9kcy4KQEAgLTExNiwxMCArMTE2LDcgQEAKICAgICAgICAgICAgICMgQ2hlY2sgdGhlIG1vc3QgY29tbW9uIHBhdGggZmlyc3QuCiAgICAgICAgICAgICBuYW1lZCA9IG1vLmdyb3VwKCduYW1lZCcpIG9yIG1vLmdyb3VwKCdicmFjZWQnKQogICAgICAgICAgICAgaWYgbmFtZWQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgdmFsID0gbWFwcGluZ1tuYW1lZF0KLSAgICAgICAgICAgICAgICAjIFdlIHVzZSB0aGlzIGlkaW9tIGluc3RlYWQgb2Ygc3RyKCkgYmVjYXVzZSB0aGUgbGF0dGVyIHdpbGwKLSAgICAgICAgICAgICAgICAjIGZhaWwgaWYgdmFsIGlzIGEgVW5pY29kZSBjb250YWluaW5nIG5vbi1BU0NJSSBjaGFyYWN0ZXJzLgotICAgICAgICAgICAgICAgIHJldHVybiAnJXMnICUgKHZhbCwpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0cihtYXBwaW5nW25hbWVkXSkKICAgICAgICAgICAgIGlmIG1vLmdyb3VwKCdlc2NhcGVkJykgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZGVsaW1pdGVyCiAgICAgICAgICAgICBpZiBtby5ncm91cCgnaW52YWxpZCcpIGlzIG5vdCBOb25lOgpAQCAtMTQ2LDkgKzE0Myw3IEBACiAgICAgICAgICAgICBuYW1lZCA9IG1vLmdyb3VwKCduYW1lZCcpIG9yIG1vLmdyb3VwKCdicmFjZWQnKQogICAgICAgICAgICAgaWYgbmFtZWQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAjIFdlIHVzZSB0aGlzIGlkaW9tIGluc3RlYWQgb2Ygc3RyKCkgYmVjYXVzZSB0aGUgbGF0dGVyCi0gICAgICAgICAgICAgICAgICAgICMgd2lsbCBmYWlsIGlmIHZhbCBpcyBhIFVuaWNvZGUgY29udGFpbmluZyBub24tQVNDSUkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuICclcycgJSAobWFwcGluZ1tuYW1lZF0sKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RyKG1hcHBpbmdbbmFtZWRdKQogICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1vLmdyb3VwKCkKICAgICAgICAgICAgIGlmIG1vLmdyb3VwKCdlc2NhcGVkJykgaXMgbm90IE5vbmU6CmRpZmYgLS1naXQgYS9MaWIvc3VicHJvY2Vzcy5weSBiL0xpYi9zdWJwcm9jZXNzLnB5CmluZGV4IDUwMmUyNmIuLjBiODgwZjYgMTAwNjQ0Ci0tLSBhL0xpYi9zdWJwcm9jZXNzLnB5CisrKyBiL0xpYi9zdWJwcm9jZXNzLnB5CkBAIC03MSw3ICs3MSwxNiBAQAogICAgICAgICBzZWxmLnN0ZGVyciA9IHN0ZGVycgogCiAgICAgZGVmIF9fc3RyX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAiQ29tbWFuZCAnJXMnIHJldHVybmVkIG5vbi16ZXJvIGV4aXQgc3RhdHVzICVkIiAlIChzZWxmLmNtZCwgc2VsZi5yZXR1cm5jb2RlKQorICAgICAgICBpZiBzZWxmLnJldHVybmNvZGUgYW5kIHNlbGYucmV0dXJuY29kZSA8IDA6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcmV0dXJuICJDb21tYW5kICclcycgZGllZCB3aXRoICVyLiIgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNtZCwgc2lnbmFsLlNpZ25hbHMoLXNlbGYucmV0dXJuY29kZSkpCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICByZXR1cm4gIkNvbW1hbmQgJyVzJyBkaWVkIHdpdGggdW5rbm93biBzaWduYWwgJWQuIiAlICgKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY21kLCAtc2VsZi5yZXR1cm5jb2RlKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuICJDb21tYW5kICclcycgcmV0dXJuZWQgbm9uLXplcm8gZXhpdCBzdGF0dXMgJWQuIiAlICgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5jbWQsIHNlbGYucmV0dXJuY29kZSkKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBzdGRvdXQoc2VsZik6CkBAIC0xNjEsNyArMTcwLDggQEAKICAgICBfX2FsbF9fLmV4dGVuZChbIkNSRUFURV9ORVdfQ09OU09MRSIsICJDUkVBVEVfTkVXX1BST0NFU1NfR1JPVVAiLAogICAgICAgICAgICAgICAgICAgICAiU1REX0lOUFVUX0hBTkRMRSIsICJTVERfT1VUUFVUX0hBTkRMRSIsCiAgICAgICAgICAgICAgICAgICAgICJTVERfRVJST1JfSEFORExFIiwgIlNXX0hJREUiLAotICAgICAgICAgICAgICAgICAgICAiU1RBUlRGX1VTRVNUREhBTkRMRVMiLCAiU1RBUlRGX1VTRVNIT1dXSU5ET1ciXSkKKyAgICAgICAgICAgICAgICAgICAgIlNUQVJURl9VU0VTVERIQU5ETEVTIiwgIlNUQVJURl9VU0VTSE9XV0lORE9XIiwKKyAgICAgICAgICAgICAgICAgICAgIlNUQVJUVVBJTkZPIl0pCiAKICAgICBjbGFzcyBIYW5kbGUoaW50KToKICAgICAgICAgY2xvc2VkID0gRmFsc2UKQEAgLTIxMCw2ICsyMjAsMTYgQEAKICMgYnV0IGl0J3MgaGVyZSBzbyB0aGF0IGl0IGNhbiBiZSBpbXBvcnRlZCB3aGVuIFB5dGhvbiBpcyBjb21waWxlZCB3aXRob3V0CiAjIHRocmVhZHMuCiAKK2RlZiBfb3B0aW1fYXJnc19mcm9tX2ludGVycHJldGVyX2ZsYWdzKCk6CisgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBjb21tYW5kLWxpbmUgYXJndW1lbnRzIHJlcHJvZHVjaW5nIHRoZSBjdXJyZW50CisgICAgb3B0aW1pemF0aW9uIHNldHRpbmdzIGluIHN5cy5mbGFncy4iIiIKKyAgICBhcmdzID0gW10KKyAgICB2YWx1ZSA9IHN5cy5mbGFncy5vcHRpbWl6ZQorICAgIGlmIHZhbHVlID4gMDoKKyAgICAgICAgYXJncy5hcHBlbmQoJy0nICsgJ08nICogdmFsdWUpCisgICAgcmV0dXJuIGFyZ3MKKworCiBkZWYgX2FyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncygpOgogICAgICIiIlJldHVybiBhIGxpc3Qgb2YgY29tbWFuZC1saW5lIGFyZ3VtZW50cyByZXByb2R1Y2luZyB0aGUgY3VycmVudAogICAgIHNldHRpbmdzIGluIHN5cy5mbGFncyBhbmQgc3lzLndhcm5vcHRpb25zLiIiIgpAQCAtMjE3LDcgKzIzNyw2IEBACiAgICAgICAgICdkZWJ1Zyc6ICdkJywKICAgICAgICAgIyAnaW5zcGVjdCc6ICdpJywKICAgICAgICAgIyAnaW50ZXJhY3RpdmUnOiAnaScsCi0gICAgICAgICdvcHRpbWl6ZSc6ICdPJywKICAgICAgICAgJ2RvbnRfd3JpdGVfYnl0ZWNvZGUnOiAnQicsCiAgICAgICAgICdub191c2VyX3NpdGUnOiAncycsCiAgICAgICAgICdub19zaXRlJzogJ1MnLApAQCAtMjI1LDggKzI0NCw5IEBACiAgICAgICAgICd2ZXJib3NlJzogJ3YnLAogICAgICAgICAnYnl0ZXNfd2FybmluZyc6ICdiJywKICAgICAgICAgJ3F1aWV0JzogJ3EnLAorICAgICAgICAjIC1PIGlzIGhhbmRsZWQgaW4gX29wdGltX2FyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncygpCiAgICAgfQotICAgIGFyZ3MgPSBbXQorICAgIGFyZ3MgPSBfb3B0aW1fYXJnc19mcm9tX2ludGVycHJldGVyX2ZsYWdzKCkKICAgICBmb3IgZmxhZywgb3B0IGluIGZsYWdfb3B0X21hcC5pdGVtcygpOgogICAgICAgICB2ID0gZ2V0YXR0cihzeXMuZmxhZ3MsIGZsYWcpCiAgICAgICAgIGlmIHYgPiAwOgpAQCAtNDc2LDggKzQ5Niw4IEBACiAgICAgIiIiICAgIFJldHVybiAoc3RhdHVzLCBvdXRwdXQpIG9mIGV4ZWN1dGluZyBjbWQgaW4gYSBzaGVsbC4KIAogICAgIEV4ZWN1dGUgdGhlIHN0cmluZyAnY21kJyBpbiBhIHNoZWxsIHdpdGggJ2NoZWNrX291dHB1dCcgYW5kCi0gICAgcmV0dXJuIGEgMi10dXBsZSAoc3RhdHVzLCBvdXRwdXQpLiBVbml2ZXJzYWwgbmV3bGluZXMgbW9kZSBpcyB1c2VkLAotICAgIG1lYW5pbmcgdGhhdCB0aGUgcmVzdWx0IHdpdGggYmUgZGVjb2RlZCB0byBhIHN0cmluZy4KKyAgICByZXR1cm4gYSAyLXR1cGxlIChzdGF0dXMsIG91dHB1dCkuIFRoZSBsb2NhbGUgZW5jb2RpbmcgaXMgdXNlZAorICAgIHRvIGRlY29kZSB0aGUgb3V0cHV0IGFuZCBwcm9jZXNzIG5ld2xpbmVzLgogCiAgICAgQSB0cmFpbGluZyBuZXdsaW5lIGlzIHN0cmlwcGVkIGZyb20gdGhlIG91dHB1dC4KICAgICBUaGUgZXhpdCBzdGF0dXMgZm9yIHRoZSBjb21tYW5kIGNhbiBiZSBpbnRlcnByZXRlZApAQCAtNTU1LDYgKzU3NSw5IEBACiAKICAgICAgIHBhc3NfZmRzIChQT1NJWCBvbmx5KQogCisgICAgICBlbmNvZGluZyBhbmQgZXJyb3JzOiBUZXh0IG1vZGUgZW5jb2RpbmcgYW5kIGVycm9yIGhhbmRsaW5nIHRvIHVzZSBmb3IKKyAgICAgICAgICBmaWxlIG9iamVjdHMgc3RkaW4sIHN0ZG91dCBhbmQgc3RkZXJyLgorCiAgICAgQXR0cmlidXRlczoKICAgICAgICAgc3RkaW4sIHN0ZG91dCwgc3RkZXJyLCBwaWQsIHJldHVybmNvZGUKICAgICAiIiIKQEAgLTU2Niw3ICs1ODksNyBAQAogICAgICAgICAgICAgICAgICBzaGVsbD1GYWxzZSwgY3dkPU5vbmUsIGVudj1Ob25lLCB1bml2ZXJzYWxfbmV3bGluZXM9RmFsc2UsCiAgICAgICAgICAgICAgICAgIHN0YXJ0dXBpbmZvPU5vbmUsIGNyZWF0aW9uZmxhZ3M9MCwKICAgICAgICAgICAgICAgICAgcmVzdG9yZV9zaWduYWxzPVRydWUsIHN0YXJ0X25ld19zZXNzaW9uPUZhbHNlLAotICAgICAgICAgICAgICAgICBwYXNzX2Zkcz0oKSk6CisgICAgICAgICAgICAgICAgIHBhc3NfZmRzPSgpLCAqLCBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSk6CiAgICAgICAgICIiIkNyZWF0ZSBuZXcgUG9wZW4gaW5zdGFuY2UuIiIiCiAgICAgICAgIF9jbGVhbnVwKCkKICAgICAgICAgIyBIZWxkIHdoaWxlIGFueXRoaW5nIGlzIGNhbGxpbmcgd2FpdHBpZCBiZWZvcmUgcmV0dXJuY29kZSBoYXMgYmVlbgpAQCAtNjE5LDYgKzY0Miw4IEBACiAgICAgICAgIHNlbGYucGlkID0gTm9uZQogICAgICAgICBzZWxmLnJldHVybmNvZGUgPSBOb25lCiAgICAgICAgIHNlbGYudW5pdmVyc2FsX25ld2xpbmVzID0gdW5pdmVyc2FsX25ld2xpbmVzCisgICAgICAgIHNlbGYuZW5jb2RpbmcgPSBlbmNvZGluZworICAgICAgICBzZWxmLmVycm9ycyA9IGVycm9ycwogCiAgICAgICAgICMgSW5wdXQgYW5kIG91dHB1dCBvYmplY3RzLiBUaGUgZ2VuZXJhbCBwcmluY2lwbGUgaXMgbGlrZQogICAgICAgICAjIHRoaXM6CkBAIC02NTEsMjIgKzY3NiwyOCBAQAogICAgICAgICAgICAgaWYgZXJycmVhZCAhPSAtMToKICAgICAgICAgICAgICAgICBlcnJyZWFkID0gbXN2Y3J0Lm9wZW5fb3NmaGFuZGxlKGVycnJlYWQuRGV0YWNoKCksIDApCiAKLSAgICAgICAgaWYgcDJjd3JpdGUgIT0gLTE6Ci0gICAgICAgICAgICBzZWxmLnN0ZGluID0gaW8ub3BlbihwMmN3cml0ZSwgJ3diJywgYnVmc2l6ZSkKLSAgICAgICAgICAgIGlmIHVuaXZlcnNhbF9uZXdsaW5lczoKLSAgICAgICAgICAgICAgICBzZWxmLnN0ZGluID0gaW8uVGV4dElPV3JhcHBlcihzZWxmLnN0ZGluLCB3cml0ZV90aHJvdWdoPVRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZV9idWZmZXJpbmc9KGJ1ZnNpemUgPT0gMSkpCi0gICAgICAgIGlmIGMycHJlYWQgIT0gLTE6Ci0gICAgICAgICAgICBzZWxmLnN0ZG91dCA9IGlvLm9wZW4oYzJwcmVhZCwgJ3JiJywgYnVmc2l6ZSkKLSAgICAgICAgICAgIGlmIHVuaXZlcnNhbF9uZXdsaW5lczoKLSAgICAgICAgICAgICAgICBzZWxmLnN0ZG91dCA9IGlvLlRleHRJT1dyYXBwZXIoc2VsZi5zdGRvdXQpCi0gICAgICAgIGlmIGVycnJlYWQgIT0gLTE6Ci0gICAgICAgICAgICBzZWxmLnN0ZGVyciA9IGlvLm9wZW4oZXJycmVhZCwgJ3JiJywgYnVmc2l6ZSkKLSAgICAgICAgICAgIGlmIHVuaXZlcnNhbF9uZXdsaW5lczoKLSAgICAgICAgICAgICAgICBzZWxmLnN0ZGVyciA9IGlvLlRleHRJT1dyYXBwZXIoc2VsZi5zdGRlcnIpCisgICAgICAgIHRleHRfbW9kZSA9IGVuY29kaW5nIG9yIGVycm9ycyBvciB1bml2ZXJzYWxfbmV3bGluZXMKIAogICAgICAgICBzZWxmLl9jbG9zZWRfY2hpbGRfcGlwZV9mZHMgPSBGYWxzZQorCiAgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIHAyY3dyaXRlICE9IC0xOgorICAgICAgICAgICAgICAgIHNlbGYuc3RkaW4gPSBpby5vcGVuKHAyY3dyaXRlLCAnd2InLCBidWZzaXplKQorICAgICAgICAgICAgICAgIGlmIHRleHRfbW9kZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGRpbiA9IGlvLlRleHRJT1dyYXBwZXIoc2VsZi5zdGRpbiwgd3JpdGVfdGhyb3VnaD1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVfYnVmZmVyaW5nPShidWZzaXplID09IDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nPWVuY29kaW5nLCBlcnJvcnM9ZXJyb3JzKQorICAgICAgICAgICAgaWYgYzJwcmVhZCAhPSAtMToKKyAgICAgICAgICAgICAgICBzZWxmLnN0ZG91dCA9IGlvLm9wZW4oYzJwcmVhZCwgJ3JiJywgYnVmc2l6ZSkKKyAgICAgICAgICAgICAgICBpZiB0ZXh0X21vZGU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3Rkb3V0ID0gaW8uVGV4dElPV3JhcHBlcihzZWxmLnN0ZG91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZz1lbmNvZGluZywgZXJyb3JzPWVycm9ycykKKyAgICAgICAgICAgIGlmIGVycnJlYWQgIT0gLTE6CisgICAgICAgICAgICAgICAgc2VsZi5zdGRlcnIgPSBpby5vcGVuKGVycnJlYWQsICdyYicsIGJ1ZnNpemUpCisgICAgICAgICAgICAgICAgaWYgdGV4dF9tb2RlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0ZGVyciA9IGlvLlRleHRJT1dyYXBwZXIoc2VsZi5zdGRlcnIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9ZW5jb2RpbmcsIGVycm9ycz1lcnJvcnMpCisKICAgICAgICAgICAgIHNlbGYuX2V4ZWN1dGVfY2hpbGQoYXJncywgZXhlY3V0YWJsZSwgcHJlZXhlY19mbiwgY2xvc2VfZmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzX2ZkcywgY3dkLCBlbnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0dXBpbmZvLCBjcmVhdGlvbmZsYWdzLCBzaGVsbCwKQEAgLTcwMCw5ICs3MzEsOCBAQAogCiAgICAgICAgICAgICByYWlzZQogCi0KLSAgICBkZWYgX3RyYW5zbGF0ZV9uZXdsaW5lcyhzZWxmLCBkYXRhLCBlbmNvZGluZyk6Ci0gICAgICAgIGRhdGEgPSBkYXRhLmRlY29kZShlbmNvZGluZykKKyAgICBkZWYgX3RyYW5zbGF0ZV9uZXdsaW5lcyhzZWxmLCBkYXRhLCBlbmNvZGluZywgZXJyb3JzKToKKyAgICAgICAgZGF0YSA9IGRhdGEuZGVjb2RlKGVuY29kaW5nLCBlcnJvcnMpCiAgICAgICAgIHJldHVybiBkYXRhLnJlcGxhY2UoIlxyXG4iLCAiXG4iKS5yZXBsYWNlKCJcciIsICJcbiIpCiAKICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgpAQCAtNzI0LDYgKzc1NCwxMSBAQAogICAgICAgICBpZiBub3Qgc2VsZi5fY2hpbGRfY3JlYXRlZDoKICAgICAgICAgICAgICMgV2UgZGlkbid0IGdldCB0byBzdWNjZXNzZnVsbHkgY3JlYXRlIGEgY2hpbGQgcHJvY2Vzcy4KICAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBzZWxmLnJldHVybmNvZGUgaXMgTm9uZToKKyAgICAgICAgICAgICMgTm90IHJlYWRpbmcgc3VicHJvY2VzcyBleGl0IHN0YXR1cyBjcmVhdGVzIGEgem9tYmkgcHJvY2VzcyB3aGljaAorICAgICAgICAgICAgIyBpcyBvbmx5IGRlc3Ryb3llZCBhdCB0aGUgcGFyZW50IHB5dGhvbiBwcm9jZXNzIGV4aXQKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInN1YnByb2Nlc3MgJXMgaXMgc3RpbGwgcnVubmluZyIgJSBzZWxmLnBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VXYXJuaW5nLCBzb3VyY2U9c2VsZikKICAgICAgICAgIyBJbiBjYXNlIHRoZSBjaGlsZCBoYXNuJ3QgYmVlbiB3YWl0ZWQgb24sIGNoZWNrIGlmIGl0J3MgZG9uZS4KICAgICAgICAgc2VsZi5faW50ZXJuYWxfcG9sbChfZGVhZHN0YXRlPV9tYXhzaXplKQogICAgICAgICBpZiBzZWxmLnJldHVybmNvZGUgaXMgTm9uZSBhbmQgX2FjdGl2ZSBpcyBub3QgTm9uZToKQEAgLTk5Niw2ICsxMDMxLDEwIEBACiAgICAgICAgICAgICAiIiJXYWl0IGZvciBjaGlsZCBwcm9jZXNzIHRvIHRlcm1pbmF0ZS4gIFJldHVybnMgcmV0dXJuY29kZQogICAgICAgICAgICAgYXR0cmlidXRlLiIiIgogICAgICAgICAgICAgaWYgZW5kdGltZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKAorICAgICAgICAgICAgICAgICAgICAiJ2VuZHRpbWUnIGFyZ3VtZW50IGlzIGRlcHJlY2F0ZWQ7IHVzZSAndGltZW91dCcuIiwKKyAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICBzdGFja2xldmVsPTIpCiAgICAgICAgICAgICAgICAgdGltZW91dCA9IHNlbGYuX3JlbWFpbmluZ190aW1lKGVuZHRpbWUpCiAgICAgICAgICAgICBpZiB0aW1lb3V0IGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgdGltZW91dF9taWxsaXMgPSBfd2luYXBpLklORklOSVRFCkBAIC0xMjUxLDkgKzEyOTAsMTQgQEAKIAogICAgICAgICAgICAgaWYgZXJycGlwZV9kYXRhOgogICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgb3Mud2FpdHBpZChzZWxmLnBpZCwgMCkKKyAgICAgICAgICAgICAgICAgICAgcGlkLCBzdHMgPSBvcy53YWl0cGlkKHNlbGYucGlkLCAwKQorICAgICAgICAgICAgICAgICAgICBpZiBwaWQgPT0gc2VsZi5waWQ6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9oYW5kbGVfZXhpdHN0YXR1cyhzdHMpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJldHVybmNvZGUgPSBzeXMubWF4c2l6ZQogICAgICAgICAgICAgICAgIGV4Y2VwdCBDaGlsZFByb2Nlc3NFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgcGFzcworCiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25fbmFtZSwgaGV4X2Vycm5vLCBlcnJfbXNnID0gKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycnBpcGVfZGF0YS5zcGxpdChiJzonLCAyKSkKQEAgLTEzNTIsOCArMTM5NiwxMSBAQAogICAgICAgICAgICAgaWYgc2VsZi5yZXR1cm5jb2RlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnJldHVybmNvZGUKIAotICAgICAgICAgICAgIyBlbmR0aW1lIGlzIHByZWZlcnJlZCB0byB0aW1lb3V0LiAgdGltZW91dCBpcyBvbmx5IHVzZWQgZm9yCi0gICAgICAgICAgICAjIHByaW50aW5nLgorICAgICAgICAgICAgaWYgZW5kdGltZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKAorICAgICAgICAgICAgICAgICAgICAiJ2VuZHRpbWUnIGFyZ3VtZW50IGlzIGRlcHJlY2F0ZWQ7IHVzZSAndGltZW91dCcuIiwKKyAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICBzdGFja2xldmVsPTIpCiAgICAgICAgICAgICBpZiBlbmR0aW1lIGlzIG5vdCBOb25lIG9yIHRpbWVvdXQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgaWYgZW5kdGltZSBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgICBlbmR0aW1lID0gX3RpbWUoKSArIHRpbWVvdXQKQEAgLTE0NzksMTMgKzE1MjYsMTUgQEAKIAogICAgICAgICAgICAgIyBUcmFuc2xhdGUgbmV3bGluZXMsIGlmIHJlcXVlc3RlZC4KICAgICAgICAgICAgICMgVGhpcyBhbHNvIHR1cm5zIGJ5dGVzIGludG8gc3RyaW5ncy4KLSAgICAgICAgICAgIGlmIHNlbGYudW5pdmVyc2FsX25ld2xpbmVzOgorICAgICAgICAgICAgaWYgc2VsZi5lbmNvZGluZyBvciBzZWxmLmVycm9ycyBvciBzZWxmLnVuaXZlcnNhbF9uZXdsaW5lczoKICAgICAgICAgICAgICAgICBpZiBzdGRvdXQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgIHN0ZG91dCA9IHNlbGYuX3RyYW5zbGF0ZV9uZXdsaW5lcyhzdGRvdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0ZG91dC5lbmNvZGluZykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3Rkb3V0LmVuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGRvdXQuZXJyb3JzKQogICAgICAgICAgICAgICAgIGlmIHN0ZGVyciBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICAgc3RkZXJyID0gc2VsZi5fdHJhbnNsYXRlX25ld2xpbmVzKHN0ZGVyciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RkZXJyLmVuY29kaW5nKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGRlcnIuZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0ZGVyci5lcnJvcnMpCiAKICAgICAgICAgICAgIHJldHVybiAoc3Rkb3V0LCBzdGRlcnIpCiAKQEAgLTE0OTcsOCArMTU0NiwxMCBAQAogICAgICAgICAgICAgaWYgc2VsZi5zdGRpbiBhbmQgc2VsZi5faW5wdXQgaXMgTm9uZToKICAgICAgICAgICAgICAgICBzZWxmLl9pbnB1dF9vZmZzZXQgPSAwCiAgICAgICAgICAgICAgICAgc2VsZi5faW5wdXQgPSBpbnB1dAotICAgICAgICAgICAgICAgIGlmIHNlbGYudW5pdmVyc2FsX25ld2xpbmVzIGFuZCBpbnB1dCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5faW5wdXQgPSBzZWxmLl9pbnB1dC5lbmNvZGUoc2VsZi5zdGRpbi5lbmNvZGluZykKKyAgICAgICAgICAgICAgICBpZiBpbnB1dCBpcyBub3QgTm9uZSBhbmQgKAorICAgICAgICAgICAgICAgICAgICBzZWxmLmVuY29kaW5nIG9yIHNlbGYuZXJyb3JzIG9yIHNlbGYudW5pdmVyc2FsX25ld2xpbmVzKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5faW5wdXQgPSBzZWxmLl9pbnB1dC5lbmNvZGUoc2VsZi5zdGRpbi5lbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGRpbi5lcnJvcnMpCiAKIAogICAgICAgICBkZWYgc2VuZF9zaWduYWwoc2VsZiwgc2lnKToKZGlmZiAtLWdpdCBhL0xpYi9zeW1ib2wucHkgYi9MaWIvc3ltYm9sLnB5CmluZGV4IDc1NDE0OTcuLmQ5ZjAxZTAgMTAwNzU1Ci0tLSBhL0xpYi9zeW1ib2wucHkKKysrIGIvTGliL3N5bWJvbC5weQpAQCAtMjcsNzQgKzI3LDc1IEBACiBzaW1wbGVfc3RtdCA9IDI3MAogc21hbGxfc3RtdCA9IDI3MQogZXhwcl9zdG10ID0gMjcyCi10ZXN0bGlzdF9zdGFyX2V4cHIgPSAyNzMKLWF1Z2Fzc2lnbiA9IDI3NAotZGVsX3N0bXQgPSAyNzUKLXBhc3Nfc3RtdCA9IDI3NgotZmxvd19zdG10ID0gMjc3Ci1icmVha19zdG10ID0gMjc4Ci1jb250aW51ZV9zdG10ID0gMjc5Ci1yZXR1cm5fc3RtdCA9IDI4MAoteWllbGRfc3RtdCA9IDI4MQotcmFpc2Vfc3RtdCA9IDI4MgotaW1wb3J0X3N0bXQgPSAyODMKLWltcG9ydF9uYW1lID0gMjg0Ci1pbXBvcnRfZnJvbSA9IDI4NQotaW1wb3J0X2FzX25hbWUgPSAyODYKLWRvdHRlZF9hc19uYW1lID0gMjg3Ci1pbXBvcnRfYXNfbmFtZXMgPSAyODgKLWRvdHRlZF9hc19uYW1lcyA9IDI4OQotZG90dGVkX25hbWUgPSAyOTAKLWdsb2JhbF9zdG10ID0gMjkxCi1ub25sb2NhbF9zdG10ID0gMjkyCi1hc3NlcnRfc3RtdCA9IDI5MwotY29tcG91bmRfc3RtdCA9IDI5NAotYXN5bmNfc3RtdCA9IDI5NQotaWZfc3RtdCA9IDI5Ngotd2hpbGVfc3RtdCA9IDI5NwotZm9yX3N0bXQgPSAyOTgKLXRyeV9zdG10ID0gMjk5Ci13aXRoX3N0bXQgPSAzMDAKLXdpdGhfaXRlbSA9IDMwMQotZXhjZXB0X2NsYXVzZSA9IDMwMgotc3VpdGUgPSAzMDMKLXRlc3QgPSAzMDQKLXRlc3Rfbm9jb25kID0gMzA1Ci1sYW1iZGVmID0gMzA2Ci1sYW1iZGVmX25vY29uZCA9IDMwNwotb3JfdGVzdCA9IDMwOAotYW5kX3Rlc3QgPSAzMDkKLW5vdF90ZXN0ID0gMzEwCi1jb21wYXJpc29uID0gMzExCi1jb21wX29wID0gMzEyCi1zdGFyX2V4cHIgPSAzMTMKLWV4cHIgPSAzMTQKLXhvcl9leHByID0gMzE1Ci1hbmRfZXhwciA9IDMxNgotc2hpZnRfZXhwciA9IDMxNwotYXJpdGhfZXhwciA9IDMxOAotdGVybSA9IDMxOQotZmFjdG9yID0gMzIwCi1wb3dlciA9IDMyMQotYXRvbV9leHByID0gMzIyCi1hdG9tID0gMzIzCi10ZXN0bGlzdF9jb21wID0gMzI0Ci10cmFpbGVyID0gMzI1Ci1zdWJzY3JpcHRsaXN0ID0gMzI2Ci1zdWJzY3JpcHQgPSAzMjcKLXNsaWNlb3AgPSAzMjgKLWV4cHJsaXN0ID0gMzI5Ci10ZXN0bGlzdCA9IDMzMAotZGljdG9yc2V0bWFrZXIgPSAzMzEKLWNsYXNzZGVmID0gMzMyCi1hcmdsaXN0ID0gMzMzCi1hcmd1bWVudCA9IDMzNAotY29tcF9pdGVyID0gMzM1Ci1jb21wX2ZvciA9IDMzNgotY29tcF9pZiA9IDMzNwotZW5jb2RpbmdfZGVjbCA9IDMzOAoteWllbGRfZXhwciA9IDMzOQoteWllbGRfYXJnID0gMzQwCithbm5hc3NpZ24gPSAyNzMKK3Rlc3RsaXN0X3N0YXJfZXhwciA9IDI3NAorYXVnYXNzaWduID0gMjc1CitkZWxfc3RtdCA9IDI3NgorcGFzc19zdG10ID0gMjc3CitmbG93X3N0bXQgPSAyNzgKK2JyZWFrX3N0bXQgPSAyNzkKK2NvbnRpbnVlX3N0bXQgPSAyODAKK3JldHVybl9zdG10ID0gMjgxCit5aWVsZF9zdG10ID0gMjgyCityYWlzZV9zdG10ID0gMjgzCitpbXBvcnRfc3RtdCA9IDI4NAoraW1wb3J0X25hbWUgPSAyODUKK2ltcG9ydF9mcm9tID0gMjg2CitpbXBvcnRfYXNfbmFtZSA9IDI4NworZG90dGVkX2FzX25hbWUgPSAyODgKK2ltcG9ydF9hc19uYW1lcyA9IDI4OQorZG90dGVkX2FzX25hbWVzID0gMjkwCitkb3R0ZWRfbmFtZSA9IDI5MQorZ2xvYmFsX3N0bXQgPSAyOTIKK25vbmxvY2FsX3N0bXQgPSAyOTMKK2Fzc2VydF9zdG10ID0gMjk0Citjb21wb3VuZF9zdG10ID0gMjk1Cithc3luY19zdG10ID0gMjk2CitpZl9zdG10ID0gMjk3Cit3aGlsZV9zdG10ID0gMjk4Citmb3Jfc3RtdCA9IDI5OQordHJ5X3N0bXQgPSAzMDAKK3dpdGhfc3RtdCA9IDMwMQord2l0aF9pdGVtID0gMzAyCitleGNlcHRfY2xhdXNlID0gMzAzCitzdWl0ZSA9IDMwNAordGVzdCA9IDMwNQordGVzdF9ub2NvbmQgPSAzMDYKK2xhbWJkZWYgPSAzMDcKK2xhbWJkZWZfbm9jb25kID0gMzA4Citvcl90ZXN0ID0gMzA5CithbmRfdGVzdCA9IDMxMAorbm90X3Rlc3QgPSAzMTEKK2NvbXBhcmlzb24gPSAzMTIKK2NvbXBfb3AgPSAzMTMKK3N0YXJfZXhwciA9IDMxNAorZXhwciA9IDMxNQoreG9yX2V4cHIgPSAzMTYKK2FuZF9leHByID0gMzE3CitzaGlmdF9leHByID0gMzE4Cithcml0aF9leHByID0gMzE5Cit0ZXJtID0gMzIwCitmYWN0b3IgPSAzMjEKK3Bvd2VyID0gMzIyCithdG9tX2V4cHIgPSAzMjMKK2F0b20gPSAzMjQKK3Rlc3RsaXN0X2NvbXAgPSAzMjUKK3RyYWlsZXIgPSAzMjYKK3N1YnNjcmlwdGxpc3QgPSAzMjcKK3N1YnNjcmlwdCA9IDMyOAorc2xpY2VvcCA9IDMyOQorZXhwcmxpc3QgPSAzMzAKK3Rlc3RsaXN0ID0gMzMxCitkaWN0b3JzZXRtYWtlciA9IDMzMgorY2xhc3NkZWYgPSAzMzMKK2FyZ2xpc3QgPSAzMzQKK2FyZ3VtZW50ID0gMzM1Citjb21wX2l0ZXIgPSAzMzYKK2NvbXBfZm9yID0gMzM3Citjb21wX2lmID0gMzM4CitlbmNvZGluZ19kZWNsID0gMzM5Cit5aWVsZF9leHByID0gMzQwCit5aWVsZF9hcmcgPSAzNDEKICMtLWVuZCBjb25zdGFudHMtLQogCiBzeW1fbmFtZSA9IHt9CmRpZmYgLS1naXQgYS9MaWIvc3ltdGFibGUucHkgYi9MaWIvc3ltdGFibGUucHkKaW5kZXggODRmZWM0YS4uYjBlNTI2MCAxMDA2NDQKLS0tIGEvTGliL3N5bXRhYmxlLnB5CisrKyBiL0xpYi9zeW10YWJsZS5weQpAQCAtMiw3ICsyLDcgQEAKIAogaW1wb3J0IF9zeW10YWJsZQogZnJvbSBfc3ltdGFibGUgaW1wb3J0IChVU0UsIERFRl9HTE9CQUwsIERFRl9MT0NBTCwgREVGX1BBUkFNLAotICAgICBERUZfSU1QT1JULCBERUZfQk9VTkQsIFNDT1BFX09GRiwgU0NPUEVfTUFTSywgRlJFRSwKKyAgICAgREVGX0lNUE9SVCwgREVGX0JPVU5ELCBERUZfQU5OT1QsIFNDT1BFX09GRiwgU0NPUEVfTUFTSywgRlJFRSwKICAgICAgTE9DQUwsIEdMT0JBTF9JTVBMSUNJVCwgR0xPQkFMX0VYUExJQ0lULCBDRUxMKQogCiBpbXBvcnQgd2Vha3JlZgpAQCAtMTkwLDYgKzE5MCw5IEBACiAgICAgZGVmIGlzX2xvY2FsKHNlbGYpOgogICAgICAgICByZXR1cm4gYm9vbChzZWxmLl9fZmxhZ3MgJiBERUZfQk9VTkQpCiAKKyAgICBkZWYgaXNfYW5ub3RhdGVkKHNlbGYpOgorICAgICAgICByZXR1cm4gYm9vbChzZWxmLl9fZmxhZ3MgJiBERUZfQU5OT1QpCisKICAgICBkZWYgaXNfZnJlZShzZWxmKToKICAgICAgICAgcmV0dXJuIGJvb2woc2VsZi5fX3Njb3BlID09IEZSRUUpCiAKZGlmZiAtLWdpdCBhL0xpYi9zeXNjb25maWcucHkgYi9MaWIvc3lzY29uZmlnLnB5CmluZGV4IDljMzRiZTAuLjkzMTRlNzEgMTAwNjQ0Ci0tLSBhL0xpYi9zeXNjb25maWcucHkKKysrIGIvTGliL3N5c2NvbmZpZy5weQpAQCAtODYsOCArODYsOCBAQAogICMgRklYTUUgZG9uJ3QgcmVseSBvbiBzeXMudmVyc2lvbiBoZXJlLCBpdHMgZm9ybWF0IGlzIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbAogICMgb2YgQ1B5dGhvbiwgdXNlIHN5cy52ZXJzaW9uX2luZm8gb3Igc3lzLmhleHZlcnNpb24KIF9QWV9WRVJTSU9OID0gc3lzLnZlcnNpb24uc3BsaXQoKVswXQotX1BZX1ZFUlNJT05fU0hPUlQgPSBzeXMudmVyc2lvbls6M10KLV9QWV9WRVJTSU9OX1NIT1JUX05PX0RPVCA9IF9QWV9WRVJTSU9OWzBdICsgX1BZX1ZFUlNJT05bMl0KK19QWV9WRVJTSU9OX1NIT1JUID0gJyVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdCitfUFlfVkVSU0lPTl9TSE9SVF9OT19ET1QgPSAnJWQlZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXQogX1BSRUZJWCA9IG9zLnBhdGgubm9ybXBhdGgoc3lzLnByZWZpeCkKIF9CQVNFX1BSRUZJWCA9IG9zLnBhdGgubm9ybXBhdGgoc3lzLmJhc2VfcHJlZml4KQogX0VYRUNfUFJFRklYID0gb3MucGF0aC5ub3JtcGF0aChzeXMuZXhlY19wcmVmaXgpCkBAIC0yMTUsNyArMjE1LDcgQEAKICAgICAjIFJlZ2V4ZXMgbmVlZGVkIGZvciBwYXJzaW5nIE1ha2VmaWxlIChhbmQgc2ltaWxhciBzeW50YXhlcywKICAgICAjIGxpa2Ugb2xkLXN0eWxlIFNldHVwIGZpbGVzKS4KICAgICBpbXBvcnQgcmUKLSAgICBfdmFyaWFibGVfcnggPSByZS5jb21waWxlKCIoW2EtekEtWl1bYS16QS1aMC05X10rKVxzKj1ccyooLiopIikKKyAgICBfdmFyaWFibGVfcnggPSByZS5jb21waWxlKHIiKFthLXpBLVpdW2EtekEtWjAtOV9dKylccyo9XHMqKC4qKSIpCiAgICAgX2ZpbmR2YXIxX3J4ID0gcmUuY29tcGlsZShyIlwkXCgoW0EtWmEtel1bQS1aYS16MC05X10qKVwpIikKICAgICBfZmluZHZhcjJfcnggPSByZS5jb21waWxlKHIiXCR7KFtBLVphLXpdW0EtWmEtejAtOV9dKil9IikKIApAQCAtMzM3LDggKzMzNywyMCBAQAogICAgICAgICBjb25maWdfZGlyX25hbWUgPSAnY29uZmlnLSVzJXMnICUgKF9QWV9WRVJTSU9OX1NIT1JULCBzeXMuYWJpZmxhZ3MpCiAgICAgZWxzZToKICAgICAgICAgY29uZmlnX2Rpcl9uYW1lID0gJ2NvbmZpZycKKyAgICBpZiBoYXNhdHRyKHN5cy5pbXBsZW1lbnRhdGlvbiwgJ19tdWx0aWFyY2gnKToKKyAgICAgICAgY29uZmlnX2Rpcl9uYW1lICs9ICctJXMnICUgc3lzLmltcGxlbWVudGF0aW9uLl9tdWx0aWFyY2gKICAgICByZXR1cm4gb3MucGF0aC5qb2luKGdldF9wYXRoKCdzdGRsaWInKSwgY29uZmlnX2Rpcl9uYW1lLCAnTWFrZWZpbGUnKQogCisKK2RlZiBfZ2V0X3N5c2NvbmZpZ2RhdGFfbmFtZSgpOgorICAgIHJldHVybiBvcy5lbnZpcm9uLmdldCgnX1BZVEhPTl9TWVNDT05GSUdEQVRBX05BTUUnLAorICAgICAgICAnX3N5c2NvbmZpZ2RhdGFfe2FiaX1fe3BsYXRmb3JtfV97bXVsdGlhcmNofScuZm9ybWF0KAorICAgICAgICBhYmk9c3lzLmFiaWZsYWdzLAorICAgICAgICBwbGF0Zm9ybT1zeXMucGxhdGZvcm0sCisgICAgICAgIG11bHRpYXJjaD1nZXRhdHRyKHN5cy5pbXBsZW1lbnRhdGlvbiwgJ19tdWx0aWFyY2gnLCAnJyksCisgICAgKSkKKworCiBkZWYgX2dlbmVyYXRlX3Bvc2l4X3ZhcnMoKToKICAgICAiIiJHZW5lcmF0ZSB0aGUgUHl0aG9uIG1vZHVsZSBjb250YWluaW5nIGJ1aWxkLXRpbWUgdmFyaWFibGVzLiIiIgogICAgIGltcG9ydCBwcHJpbnQKQEAgLTM3OSwxNCArMzkxLDE0IEBACiAgICAgIyBfc3lzY29uZmlnZGF0YSBtb2R1bGUgbWFudWFsbHkgYW5kIHBvcHVsYXRlIGl0IHdpdGggdGhlIGJ1aWxkIHZhcnMuCiAgICAgIyBUaGlzIGlzIG1vcmUgdGhhbiBzdWZmaWNpZW50IGZvciBlbnN1cmluZyB0aGUgc3Vic2VxdWVudCBjYWxsIHRvCiAgICAgIyBnZXRfcGxhdGZvcm0oKSBzdWNjZWVkcy4KLSAgICBuYW1lID0gJ19zeXNjb25maWdkYXRhJworICAgIG5hbWUgPSBfZ2V0X3N5c2NvbmZpZ2RhdGFfbmFtZSgpCiAgICAgaWYgJ2RhcndpbicgaW4gc3lzLnBsYXRmb3JtOgogICAgICAgICBpbXBvcnQgdHlwZXMKICAgICAgICAgbW9kdWxlID0gdHlwZXMuTW9kdWxlVHlwZShuYW1lKQogICAgICAgICBtb2R1bGUuYnVpbGRfdGltZV92YXJzID0gdmFycwogICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG1vZHVsZQogCi0gICAgcHlidWlsZGRpciA9ICdidWlsZC9saWIuJXMtJXMnICUgKGdldF9wbGF0Zm9ybSgpLCBzeXMudmVyc2lvbls6M10pCisgICAgcHlidWlsZGRpciA9ICdidWlsZC9saWIuJXMtJXMnICUgKGdldF9wbGF0Zm9ybSgpLCBfUFlfVkVSU0lPTl9TSE9SVCkKICAgICBpZiBoYXNhdHRyKHN5cywgImdldHRvdGFscmVmY291bnQiKToKICAgICAgICAgcHlidWlsZGRpciArPSAnLXB5ZGVidWcnCiAgICAgb3MubWFrZWRpcnMocHlidWlsZGRpciwgZXhpc3Rfb2s9VHJ1ZSkKQEAgLTQwNSw3ICs0MTcsOSBAQAogZGVmIF9pbml0X3Bvc2l4KHZhcnMpOgogICAgICIiIkluaXRpYWxpemUgdGhlIG1vZHVsZSBhcyBhcHByb3ByaWF0ZSBmb3IgUE9TSVggc3lzdGVtcy4iIiIKICAgICAjIF9zeXNjb25maWdkYXRhIGlzIGdlbmVyYXRlZCBhdCBidWlsZCB0aW1lLCBzZWUgX2dlbmVyYXRlX3Bvc2l4X3ZhcnMoKQotICAgIGZyb20gX3N5c2NvbmZpZ2RhdGEgaW1wb3J0IGJ1aWxkX3RpbWVfdmFycworICAgIG5hbWUgPSBfZ2V0X3N5c2NvbmZpZ2RhdGFfbmFtZSgpCisgICAgX3RlbXAgPSBfX2ltcG9ydF9fKG5hbWUsIGdsb2JhbHMoKSwgbG9jYWxzKCksIFsnYnVpbGRfdGltZV92YXJzJ10sIDApCisgICAgYnVpbGRfdGltZV92YXJzID0gX3RlbXAuYnVpbGRfdGltZV92YXJzCiAgICAgdmFycy51cGRhdGUoYnVpbGRfdGltZV92YXJzKQogCiBkZWYgX2luaXRfbm9uX3Bvc2l4KHZhcnMpOgpAQCAtNTE4LDcgKzUzMiw3IEBACiAgICAgICAgIF9DT05GSUdfVkFSU1snZXhlY19wcmVmaXgnXSA9IF9FWEVDX1BSRUZJWAogICAgICAgICBfQ09ORklHX1ZBUlNbJ3B5X3ZlcnNpb24nXSA9IF9QWV9WRVJTSU9OCiAgICAgICAgIF9DT05GSUdfVkFSU1sncHlfdmVyc2lvbl9zaG9ydCddID0gX1BZX1ZFUlNJT05fU0hPUlQKLSAgICAgICAgX0NPTkZJR19WQVJTWydweV92ZXJzaW9uX25vZG90J10gPSBfUFlfVkVSU0lPTlswXSArIF9QWV9WRVJTSU9OWzJdCisgICAgICAgIF9DT05GSUdfVkFSU1sncHlfdmVyc2lvbl9ub2RvdCddID0gX1BZX1ZFUlNJT05fU0hPUlRfTk9fRE9UCiAgICAgICAgIF9DT05GSUdfVkFSU1snaW5zdGFsbGVkX2Jhc2UnXSA9IF9CQVNFX1BSRUZJWAogICAgICAgICBfQ09ORklHX1ZBUlNbJ2Jhc2UnXSA9IF9QUkVGSVgKICAgICAgICAgX0NPTkZJR19WQVJTWydpbnN0YWxsZWRfcGxhdGJhc2UnXSA9IF9CQVNFX0VYRUNfUFJFRklYCmRpZmYgLS1naXQgYS9MaWIvdGFyZmlsZS5weSBiL0xpYi90YXJmaWxlLnB5CmluZGV4IDk5OWE5OWIuLjVkNGM4NmMgMTAwNzU1Ci0tLSBhL0xpYi90YXJmaWxlLnB5CisrKyBiL0xpYi90YXJmaWxlLnB5CkBAIC01MCw5ICs1MCwxMyBAQAogaW1wb3J0IHJlCiAKIHRyeToKLSAgICBpbXBvcnQgZ3JwLCBwd2QKKyAgICBpbXBvcnQgcHdkCiBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgZ3JwID0gcHdkID0gTm9uZQorICAgIHB3ZCA9IE5vbmUKK3RyeToKKyAgICBpbXBvcnQgZ3JwCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgZ3JwID0gTm9uZQogCiAjIG9zLnN5bWxpbmsgb24gV2luZG93cyBwcmlvciB0byA2LjAgcmFpc2VzIE5vdEltcGxlbWVudGVkRXJyb3IKIHN5bWxpbmtfZXhjZXB0aW9uID0gKEF0dHJpYnV0ZUVycm9yLCBOb3RJbXBsZW1lbnRlZEVycm9yKQpAQCAtNjQsNyArNjgsMTAgQEAKICAgICBwYXNzCiAKICMgZnJvbSB0YXJmaWxlIGltcG9ydCAqCi1fX2FsbF9fID0gWyJUYXJGaWxlIiwgIlRhckluZm8iLCAiaXNfdGFyZmlsZSIsICJUYXJFcnJvciJdCitfX2FsbF9fID0gWyJUYXJGaWxlIiwgIlRhckluZm8iLCAiaXNfdGFyZmlsZSIsICJUYXJFcnJvciIsICJSZWFkRXJyb3IiLAorICAgICAgICAgICAiQ29tcHJlc3Npb25FcnJvciIsICJTdHJlYW1FcnJvciIsICJFeHRyYWN0RXJyb3IiLCAiSGVhZGVyRXJyb3IiLAorICAgICAgICAgICAiRU5DT0RJTkciLCAiVVNUQVJfRk9STUFUIiwgIkdOVV9GT1JNQVQiLCAiUEFYX0ZPUk1BVCIsCisgICAgICAgICAgICJERUZBVUxUX0ZPUk1BVCIsICJvcGVuIl0KIAogIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyB0YXIgY29uc3RhbnRzCkBAIC0xNDEsNyArMTQ4LDcgQEAKICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgaW5pdGlhbGl6YXRpb24KICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWlmIG9zLm5hbWUgaW4gKCJudCIsICJjZSIpOgoraWYgb3MubmFtZSA9PSAibnQiOgogICAgIEVOQ09ESU5HID0gInV0Zi04IgogZWxzZToKICAgICBFTkNPRElORyA9IHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKQpAQCAtMjI1LDIxICsyMzIsMjEgQEAKICAgICBzaWduZWRfY2hrc3VtID0gMjU2ICsgc3VtKHN0cnVjdC51bnBhY2tfZnJvbSgiMTQ4Yjh4MzU2YiIsIGJ1ZikpCiAgICAgcmV0dXJuIHVuc2lnbmVkX2Noa3N1bSwgc2lnbmVkX2Noa3N1bQogCi1kZWYgY29weWZpbGVvYmooc3JjLCBkc3QsIGxlbmd0aD1Ob25lLCBleGNlcHRpb249T1NFcnJvcik6CitkZWYgY29weWZpbGVvYmooc3JjLCBkc3QsIGxlbmd0aD1Ob25lLCBleGNlcHRpb249T1NFcnJvciwgYnVmc2l6ZT1Ob25lKToKICAgICAiIiJDb3B5IGxlbmd0aCBieXRlcyBmcm9tIGZpbGVvYmogc3JjIHRvIGZpbGVvYmogZHN0LgogICAgICAgIElmIGxlbmd0aCBpcyBOb25lLCBjb3B5IHRoZSBlbnRpcmUgY29udGVudC4KICAgICAiIiIKKyAgICBidWZzaXplID0gYnVmc2l6ZSBvciAxNiAqIDEwMjQKICAgICBpZiBsZW5ndGggPT0gMDoKICAgICAgICAgcmV0dXJuCiAgICAgaWYgbGVuZ3RoIGlzIE5vbmU6Ci0gICAgICAgIHNodXRpbC5jb3B5ZmlsZW9iaihzcmMsIGRzdCkKKyAgICAgICAgc2h1dGlsLmNvcHlmaWxlb2JqKHNyYywgZHN0LCBidWZzaXplKQogICAgICAgICByZXR1cm4KIAotICAgIEJVRlNJWkUgPSAxNiAqIDEwMjQKLSAgICBibG9ja3MsIHJlbWFpbmRlciA9IGRpdm1vZChsZW5ndGgsIEJVRlNJWkUpCisgICAgYmxvY2tzLCByZW1haW5kZXIgPSBkaXZtb2QobGVuZ3RoLCBidWZzaXplKQogICAgIGZvciBiIGluIHJhbmdlKGJsb2Nrcyk6Ci0gICAgICAgIGJ1ZiA9IHNyYy5yZWFkKEJVRlNJWkUpCi0gICAgICAgIGlmIGxlbihidWYpIDwgQlVGU0laRToKKyAgICAgICAgYnVmID0gc3JjLnJlYWQoYnVmc2l6ZSkKKyAgICAgICAgaWYgbGVuKGJ1ZikgPCBidWZzaXplOgogICAgICAgICAgICAgcmFpc2UgZXhjZXB0aW9uKCJ1bmV4cGVjdGVkIGVuZCBvZiBkYXRhIikKICAgICAgICAgZHN0LndyaXRlKGJ1ZikKIApAQCAtMTQwMCw3ICsxNDA3LDggQEAKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lPU5vbmUsIG1vZGU9InIiLCBmaWxlb2JqPU5vbmUsIGZvcm1hdD1Ob25lLAogICAgICAgICAgICAgdGFyaW5mbz1Ob25lLCBkZXJlZmVyZW5jZT1Ob25lLCBpZ25vcmVfemVyb3M9Tm9uZSwgZW5jb2Rpbmc9Tm9uZSwKLSAgICAgICAgICAgIGVycm9ycz0ic3Vycm9nYXRlZXNjYXBlIiwgcGF4X2hlYWRlcnM9Tm9uZSwgZGVidWc9Tm9uZSwgZXJyb3JsZXZlbD1Ob25lKToKKyAgICAgICAgICAgIGVycm9ycz0ic3Vycm9nYXRlZXNjYXBlIiwgcGF4X2hlYWRlcnM9Tm9uZSwgZGVidWc9Tm9uZSwKKyAgICAgICAgICAgIGVycm9ybGV2ZWw9Tm9uZSwgY29weWJ1ZnNpemU9Tm9uZSk6CiAgICAgICAgICIiIk9wZW4gYW4gKHVuY29tcHJlc3NlZCkgdGFyIGFyY2hpdmUgYG5hbWUnLiBgbW9kZScgaXMgZWl0aGVyICdyJyB0bwogICAgICAgICAgICByZWFkIGZyb20gYW4gZXhpc3RpbmcgYXJjaGl2ZSwgJ2EnIHRvIGFwcGVuZCBkYXRhIHRvIGFuIGV4aXN0aW5nCiAgICAgICAgICAgIGZpbGUgb3IgJ3cnIHRvIGNyZWF0ZSBhIG5ldyBmaWxlIG92ZXJ3cml0aW5nIGFuIGV4aXN0aW5nIG9uZS4gYG1vZGUnCkBAIC0xNDU2LDYgKzE0NjQsNyBAQAogICAgICAgICAgICAgc2VsZi5lcnJvcmxldmVsID0gZXJyb3JsZXZlbAogCiAgICAgICAgICMgSW5pdCBkYXRhc3RydWN0dXJlcy4KKyAgICAgICAgc2VsZi5jb3B5YnVmc2l6ZSA9IGNvcHlidWZzaXplCiAgICAgICAgIHNlbGYuY2xvc2VkID0gRmFsc2UKICAgICAgICAgc2VsZi5tZW1iZXJzID0gW10gICAgICAgIyBsaXN0IG9mIG1lbWJlcnMgYXMgVGFySW5mbyBvYmplY3RzCiAgICAgICAgIHNlbGYuX2xvYWRlZCA9IEZhbHNlICAgICMgZmxhZyBpZiBhbGwgbWVtYmVycyBoYXZlIGJlZW4gcmVhZApAQCAtMTU1Nyw3ICsxNTY2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgc2F2ZWRfcG9zID0gZmlsZW9iai50ZWxsKCkKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jKG5hbWUsICJyIiwgZmlsZW9iaiwgKiprd2FyZ3MpCi0gICAgICAgICAgICAgICAgZXhjZXB0IChSZWFkRXJyb3IsIENvbXByZXNzaW9uRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgZXhjZXB0IChSZWFkRXJyb3IsIENvbXByZXNzaW9uRXJyb3IpOgogICAgICAgICAgICAgICAgICAgICBpZiBmaWxlb2JqIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW9iai5zZWVrKHNhdmVkX3BvcykKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKQEAgLTE5NjIsMTAgKzE5NzEsMTAgQEAKICAgICAgICAgYnVmID0gdGFyaW5mby50b2J1ZihzZWxmLmZvcm1hdCwgc2VsZi5lbmNvZGluZywgc2VsZi5lcnJvcnMpCiAgICAgICAgIHNlbGYuZmlsZW9iai53cml0ZShidWYpCiAgICAgICAgIHNlbGYub2Zmc2V0ICs9IGxlbihidWYpCi0KKyAgICAgICAgYnVmc2l6ZT1zZWxmLmNvcHlidWZzaXplCiAgICAgICAgICMgSWYgdGhlcmUncyBkYXRhIHRvIGZvbGxvdywgYXBwZW5kIGl0LgogICAgICAgICBpZiBmaWxlb2JqIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgY29weWZpbGVvYmooZmlsZW9iaiwgc2VsZi5maWxlb2JqLCB0YXJpbmZvLnNpemUpCisgICAgICAgICAgICBjb3B5ZmlsZW9iaihmaWxlb2JqLCBzZWxmLmZpbGVvYmosIHRhcmluZm8uc2l6ZSwgYnVmc2l6ZT1idWZzaXplKQogICAgICAgICAgICAgYmxvY2tzLCByZW1haW5kZXIgPSBkaXZtb2QodGFyaW5mby5zaXplLCBCTE9DS1NJWkUpCiAgICAgICAgICAgICBpZiByZW1haW5kZXIgPiAwOgogICAgICAgICAgICAgICAgIHNlbGYuZmlsZW9iai53cml0ZShOVUwgKiAoQkxPQ0tTSVpFIC0gcmVtYWluZGVyKSkKQEAgLTIxNDcsMTUgKzIxNTYsMTYgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHNvdXJjZSA9IHNlbGYuZmlsZW9iagogICAgICAgICBzb3VyY2Uuc2Vlayh0YXJpbmZvLm9mZnNldF9kYXRhKQorICAgICAgICBidWZzaXplID0gc2VsZi5jb3B5YnVmc2l6ZQogICAgICAgICB3aXRoIGJsdG5fb3Blbih0YXJnZXRwYXRoLCAid2IiKSBhcyB0YXJnZXQ6CiAgICAgICAgICAgICBpZiB0YXJpbmZvLnNwYXJzZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBmb3Igb2Zmc2V0LCBzaXplIGluIHRhcmluZm8uc3BhcnNlOgogICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc2VlayhvZmZzZXQpCi0gICAgICAgICAgICAgICAgICAgIGNvcHlmaWxlb2JqKHNvdXJjZSwgdGFyZ2V0LCBzaXplLCBSZWFkRXJyb3IpCisgICAgICAgICAgICAgICAgICAgIGNvcHlmaWxlb2JqKHNvdXJjZSwgdGFyZ2V0LCBzaXplLCBSZWFkRXJyb3IsIGJ1ZnNpemUpCiAgICAgICAgICAgICAgICAgdGFyZ2V0LnNlZWsodGFyaW5mby5zaXplKQogICAgICAgICAgICAgICAgIHRhcmdldC50cnVuY2F0ZSgpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGNvcHlmaWxlb2JqKHNvdXJjZSwgdGFyZ2V0LCB0YXJpbmZvLnNpemUsIFJlYWRFcnJvcikKKyAgICAgICAgICAgICAgICBjb3B5ZmlsZW9iaihzb3VyY2UsIHRhcmdldCwgdGFyaW5mby5zaXplLCBSZWFkRXJyb3IsIGJ1ZnNpemUpCiAKICAgICBkZWYgbWFrZXVua25vd24oc2VsZiwgdGFyaW5mbywgdGFyZ2V0cGF0aCk6CiAgICAgICAgICIiIk1ha2UgYSBmaWxlIGZyb20gYSBUYXJJbmZvIG9iamVjdCB3aXRoIGFuIHVua25vd24gdHlwZQpAQCAtMjIxMywyOCArMjIyMywzMSBAQAogCiAgICAgZGVmIGNob3duKHNlbGYsIHRhcmluZm8sIHRhcmdldHBhdGgsIG51bWVyaWNfb3duZXIpOgogICAgICAgICAiIiJTZXQgb3duZXIgb2YgdGFyZ2V0cGF0aCBhY2NvcmRpbmcgdG8gdGFyaW5mby4gSWYgbnVtZXJpY19vd25lcgotICAgICAgICAgICBpcyBUcnVlLCB1c2UgLmdpZC8udWlkIGluc3RlYWQgb2YgLmduYW1lLy51bmFtZS4KKyAgICAgICAgICAgaXMgVHJ1ZSwgdXNlIC5naWQvLnVpZCBpbnN0ZWFkIG9mIC5nbmFtZS8udW5hbWUuIElmIG51bWVyaWNfb3duZXIKKyAgICAgICAgICAgaXMgRmFsc2UsIGZhbGwgYmFjayB0byAuZ2lkLy51aWQgd2hlbiB0aGUgc2VhcmNoIGJhc2VkIG9uIG5hbWUKKyAgICAgICAgICAgZmFpbHMuCiAgICAgICAgICIiIgotICAgICAgICBpZiBwd2QgYW5kIGhhc2F0dHIob3MsICJnZXRldWlkIikgYW5kIG9zLmdldGV1aWQoKSA9PSAwOgorICAgICAgICBpZiBoYXNhdHRyKG9zLCAiZ2V0ZXVpZCIpIGFuZCBvcy5nZXRldWlkKCkgPT0gMDoKICAgICAgICAgICAgICMgV2UgaGF2ZSB0byBiZSByb290IHRvIGRvIHNvLgotICAgICAgICAgICAgaWYgbnVtZXJpY19vd25lcjoKLSAgICAgICAgICAgICAgICBnID0gdGFyaW5mby5naWQKLSAgICAgICAgICAgICAgICB1ID0gdGFyaW5mby51aWQKLSAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICBnID0gdGFyaW5mby5naWQKKyAgICAgICAgICAgIHUgPSB0YXJpbmZvLnVpZAorICAgICAgICAgICAgaWYgbm90IG51bWVyaWNfb3duZXI6CiAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBnID0gZ3JwLmdldGdybmFtKHRhcmluZm8uZ25hbWUpWzJdCisgICAgICAgICAgICAgICAgICAgIGlmIGdycDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBncnAuZ2V0Z3JuYW0odGFyaW5mby5nbmFtZSlbMl0KICAgICAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIGcgPSB0YXJpbmZvLmdpZAorICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICB1ID0gcHdkLmdldHB3bmFtKHRhcmluZm8udW5hbWUpWzJdCisgICAgICAgICAgICAgICAgICAgIGlmIHB3ZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBwd2QuZ2V0cHduYW0odGFyaW5mby51bmFtZSlbMl0KICAgICAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIHUgPSB0YXJpbmZvLnVpZAorICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgaWYgdGFyaW5mby5pc3N5bSgpIGFuZCBoYXNhdHRyKG9zLCAibGNob3duIik6CiAgICAgICAgICAgICAgICAgICAgIG9zLmxjaG93bih0YXJnZXRwYXRoLCB1LCBnKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIG9zLmNob3duKHRhcmdldHBhdGgsIHUsIGcpCi0gICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgcmFpc2UgRXh0cmFjdEVycm9yKCJjb3VsZCBub3QgY2hhbmdlIG93bmVyIikKIAogICAgIGRlZiBjaG1vZChzZWxmLCB0YXJpbmZvLCB0YXJnZXRwYXRoKToKQEAgLTIyNDMsNyArMjI1Niw3IEBACiAgICAgICAgIGlmIGhhc2F0dHIob3MsICdjaG1vZCcpOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIG9zLmNobW9kKHRhcmdldHBhdGgsIHRhcmluZm8ubW9kZSkKLSAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICByYWlzZSBFeHRyYWN0RXJyb3IoImNvdWxkIG5vdCBjaGFuZ2UgbW9kZSIpCiAKICAgICBkZWYgdXRpbWUoc2VsZiwgdGFyaW5mbywgdGFyZ2V0cGF0aCk6CkBAIC0yMjUzLDcgKzIyNjYsNyBAQAogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIG9zLnV0aW1lKHRhcmdldHBhdGgsICh0YXJpbmZvLm10aW1lLCB0YXJpbmZvLm10aW1lKSkKLSAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICByYWlzZSBFeHRyYWN0RXJyb3IoImNvdWxkIG5vdCBjaGFuZ2UgbW9kaWZpY2F0aW9uIHRpbWUiKQogCiAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0yMzc2LDkgKzIzODksMzIgQEAKICAgICAgICAgIiIiUHJvdmlkZSBhbiBpdGVyYXRvciBvYmplY3QuCiAgICAgICAgICIiIgogICAgICAgICBpZiBzZWxmLl9sb2FkZWQ6Ci0gICAgICAgICAgICByZXR1cm4gaXRlcihzZWxmLm1lbWJlcnMpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gVGFySXRlcihzZWxmKQorICAgICAgICAgICAgeWllbGQgZnJvbSBzZWxmLm1lbWJlcnMKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICMgWWllbGQgaXRlbXMgdXNpbmcgVGFyRmlsZSdzIG5leHQoKSBtZXRob2QuCisgICAgICAgICMgV2hlbiBhbGwgbWVtYmVycyBoYXZlIGJlZW4gcmVhZCwgc2V0IFRhckZpbGUgYXMgX2xvYWRlZC4KKyAgICAgICAgaW5kZXggPSAwCisgICAgICAgICMgRml4IGZvciBTRiAjMTEwMDQyOTogVW5kZXIgcmFyZSBjaXJjdW1zdGFuY2VzIGl0IGNhbgorICAgICAgICAjIGhhcHBlbiB0aGF0IGdldG1lbWJlcnMoKSBpcyBjYWxsZWQgZHVyaW5nIGl0ZXJhdGlvbiwKKyAgICAgICAgIyB3aGljaCB3aWxsIGhhdmUgYWxyZWFkeSBleGhhdXN0ZWQgdGhlIG5leHQoKSBtZXRob2QuCisgICAgICAgIGlmIHNlbGYuZmlyc3RtZW1iZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICB0YXJpbmZvID0gc2VsZi5uZXh0KCkKKyAgICAgICAgICAgIGluZGV4ICs9IDEKKyAgICAgICAgICAgIHlpZWxkIHRhcmluZm8KKworICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgaWYgaW5kZXggPCBsZW4oc2VsZi5tZW1iZXJzKToKKyAgICAgICAgICAgICAgICB0YXJpbmZvID0gc2VsZi5tZW1iZXJzW2luZGV4XQorICAgICAgICAgICAgZWxpZiBub3Qgc2VsZi5fbG9hZGVkOgorICAgICAgICAgICAgICAgIHRhcmluZm8gPSBzZWxmLm5leHQoKQorICAgICAgICAgICAgICAgIGlmIG5vdCB0YXJpbmZvOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9sb2FkZWQgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIGluZGV4ICs9IDEKKyAgICAgICAgICAgIHlpZWxkIHRhcmluZm8KIAogICAgIGRlZiBfZGJnKHNlbGYsIGxldmVsLCBtc2cpOgogICAgICAgICAiIiJXcml0ZSBkZWJ1Z2dpbmcgb3V0cHV0IHRvIHN5cy5zdGRlcnIuCkBAIC0yMzk5LDQ1ICsyNDM1LDYgQEAKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9leHRmaWxlb2JqOgogICAgICAgICAgICAgICAgIHNlbGYuZmlsZW9iai5jbG9zZSgpCiAgICAgICAgICAgICBzZWxmLmNsb3NlZCA9IFRydWUKLSMgY2xhc3MgVGFyRmlsZQotCi1jbGFzcyBUYXJJdGVyOgotICAgICIiIkl0ZXJhdG9yIENsYXNzLgotCi0gICAgICAgZm9yIHRhcmluZm8gaW4gVGFyRmlsZSguLi4pOgotICAgICAgICAgICBzdWl0ZS4uLgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRhcmZpbGUpOgotICAgICAgICAiIiJDb25zdHJ1Y3QgYSBUYXJJdGVyIG9iamVjdC4KLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYudGFyZmlsZSA9IHRhcmZpbGUKLSAgICAgICAgc2VsZi5pbmRleCA9IDAKLSAgICBkZWYgX19pdGVyX18oc2VsZik6Ci0gICAgICAgICIiIlJldHVybiBpdGVyYXRvciBvYmplY3QuCi0gICAgICAgICIiIgotICAgICAgICByZXR1cm4gc2VsZgotICAgIGRlZiBfX25leHRfXyhzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIHRoZSBuZXh0IGl0ZW0gdXNpbmcgVGFyRmlsZSdzIG5leHQoKSBtZXRob2QuCi0gICAgICAgICAgIFdoZW4gYWxsIG1lbWJlcnMgaGF2ZSBiZWVuIHJlYWQsIHNldCBUYXJGaWxlIGFzIF9sb2FkZWQuCi0gICAgICAgICIiIgotICAgICAgICAjIEZpeCBmb3IgU0YgIzExMDA0Mjk6IFVuZGVyIHJhcmUgY2lyY3Vtc3RhbmNlcyBpdCBjYW4KLSAgICAgICAgIyBoYXBwZW4gdGhhdCBnZXRtZW1iZXJzKCkgaXMgY2FsbGVkIGR1cmluZyBpdGVyYXRpb24sCi0gICAgICAgICMgd2hpY2ggd2lsbCBjYXVzZSBUYXJJdGVyIHRvIHN0b3AgcHJlbWF0dXJlbHkuCi0KLSAgICAgICAgaWYgc2VsZi5pbmRleCA9PSAwIGFuZCBzZWxmLnRhcmZpbGUuZmlyc3RtZW1iZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICB0YXJpbmZvID0gc2VsZi50YXJmaWxlLm5leHQoKQotICAgICAgICBlbGlmIHNlbGYuaW5kZXggPCBsZW4oc2VsZi50YXJmaWxlLm1lbWJlcnMpOgotICAgICAgICAgICAgdGFyaW5mbyA9IHNlbGYudGFyZmlsZS5tZW1iZXJzW3NlbGYuaW5kZXhdCi0gICAgICAgIGVsaWYgbm90IHNlbGYudGFyZmlsZS5fbG9hZGVkOgotICAgICAgICAgICAgdGFyaW5mbyA9IHNlbGYudGFyZmlsZS5uZXh0KCkKLSAgICAgICAgICAgIGlmIG5vdCB0YXJpbmZvOgotICAgICAgICAgICAgICAgIHNlbGYudGFyZmlsZS5fbG9hZGVkID0gVHJ1ZQotICAgICAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KLSAgICAgICAgc2VsZi5pbmRleCArPSAxCi0gICAgICAgIHJldHVybiB0YXJpbmZvCiAKICMtLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBleHBvcnRlZCBmdW5jdGlvbnMKZGlmZiAtLWdpdCBhL0xpYi90ZWxuZXRsaWIucHkgYi9MaWIvdGVsbmV0bGliLnB5CmluZGV4IDcyZGFiYzcuLmIwODYzYjEgMTAwNjQ0Ci0tLSBhL0xpYi90ZWxuZXRsaWIucHkKKysrIGIvTGliL3RlbG5ldGxpYi5weQpAQCAtNjM3LDYgKzYzNywxMiBAQAogICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IKICAgICAgICAgcmV0dXJuICgtMSwgTm9uZSwgdGV4dCkKIAorICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgdHlwZSwgdmFsdWUsIHRyYWNlYmFjayk6CisgICAgICAgIHNlbGYuY2xvc2UoKQorCiAKIGRlZiB0ZXN0KCk6CiAgICAgIiIiVGVzdCBwcm9ncmFtIGZvciB0ZWxuZXRsaWIuCkBAIC02NjAsMTEgKzY2NiwxMCBAQAogICAgICAgICAgICAgcG9ydCA9IGludChwb3J0c3RyKQogICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgIHBvcnQgPSBzb2NrZXQuZ2V0c2VydmJ5bmFtZShwb3J0c3RyLCAndGNwJykKLSAgICB0biA9IFRlbG5ldCgpCi0gICAgdG4uc2V0X2RlYnVnbGV2ZWwoZGVidWdsZXZlbCkKLSAgICB0bi5vcGVuKGhvc3QsIHBvcnQsIHRpbWVvdXQ9MC41KQotICAgIHRuLmludGVyYWN0KCkKLSAgICB0bi5jbG9zZSgpCisgICAgd2l0aCBUZWxuZXQoKSBhcyB0bjoKKyAgICAgICAgdG4uc2V0X2RlYnVnbGV2ZWwoZGVidWdsZXZlbCkKKyAgICAgICAgdG4ub3Blbihob3N0LCBwb3J0LCB0aW1lb3V0PTAuNSkKKyAgICAgICAgdG4uaW50ZXJhY3QoKQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHRlc3QoKQpkaWZmIC0tZ2l0IGEvTGliL3RlbXBmaWxlLnB5IGIvTGliL3RlbXBmaWxlLnB5CmluZGV4IGFkNjg3YjkuLjYxNDYyMzUgMTAwNjQ0Ci0tLSBhL0xpYi90ZW1wZmlsZS5weQorKysgYi9MaWIvdGVtcGZpbGUucHkKQEAgLTc5Nyw3ICs3OTcsNiBAQAogICAgICAgICBfc2h1dGlsLnJtdHJlZShuYW1lKQogICAgICAgICBfd2FybmluZ3Mud2Fybih3YXJuX21lc3NhZ2UsIFJlc291cmNlV2FybmluZykKIAotCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgICByZXR1cm4gIjx7fSB7IXJ9PiIuZm9ybWF0KHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzZWxmLm5hbWUpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L19fbWFpbl9fLnB5IGIvTGliL3Rlc3QvX19tYWluX18ucHkKaW5kZXggZDVmYmUxNS4uMTlhNmIyYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvX19tYWluX18ucHkKKysrIGIvTGliL3Rlc3QvX19tYWluX18ucHkKQEAgLTEsMyArMSwyIEBACi1mcm9tIHRlc3QgaW1wb3J0IHJlZ3J0ZXN0Ci0KLXJlZ3J0ZXN0Lm1haW5faW5fdGVtcF9jd2QoKQorZnJvbSB0ZXN0LmxpYnJlZ3J0ZXN0IGltcG9ydCBtYWluCittYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L190ZXN0X211bHRpcHJvY2Vzc2luZy5weSBiL0xpYi90ZXN0L190ZXN0X211bHRpcHJvY2Vzc2luZy5weQppbmRleCA5Yjc4OWMyLi5iNWY0NzgyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9fdGVzdF9tdWx0aXByb2Nlc3NpbmcucHkKKysrIGIvTGliL3Rlc3QvX3Rlc3RfbXVsdGlwcm9jZXNzaW5nLnB5CkBAIC0xNjI4LDEzICsxNjI4LDMzIEBACiAgICAgICAgIGQgPSBbYSwgYl0KICAgICAgICAgZSA9IHNlbGYubGlzdChkKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgZVs6XSwKKyAgICAgICAgICAgIFtlbGVtZW50WzpdIGZvciBlbGVtZW50IGluIGVdLAogICAgICAgICAgICAgW1swLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5XSwgWzAsIDEsIDIsIDMsIDQsIDAsIDEsIDIsIDMsIDRdXQogICAgICAgICAgICAgKQogCiAgICAgICAgIGYgPSBzZWxmLmxpc3QoW2FdKQogICAgICAgICBhLmFwcGVuZCgnaGVsbG8nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZbOl0sIFtbMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgJ2hlbGxvJ11dKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZbMF1bOl0sIFswLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAnaGVsbG8nXSkKKworICAgIGRlZiB0ZXN0X2xpc3RfcHJveHlfaW5fbGlzdChzZWxmKToKKyAgICAgICAgYSA9IHNlbGYubGlzdChbc2VsZi5saXN0KHJhbmdlKDMpKSBmb3IgX2kgaW4gcmFuZ2UoMyldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtpbm5lcls6XSBmb3IgaW5uZXIgaW4gYV0sIFtbMCwgMSwgMl1dICogMykKKworICAgICAgICBhWzBdWy0xXSA9IDU1CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYVswXVs6XSwgWzAsIDEsIDU1XSkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMSwgMyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFbaV1bOl0sIFswLCAxLCAyXSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFbMV0ucG9wKCksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFbMV0pLCAyKQorICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCAzLCAyKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFbaV0pLCAzKQorCisgICAgICAgIGRlbCBhCisKKyAgICAgICAgYiA9IHNlbGYubGlzdCgpCisgICAgICAgIGIuYXBwZW5kKGIpCisgICAgICAgIGRlbCBiCiAKICAgICBkZWYgdGVzdF9kaWN0KHNlbGYpOgogICAgICAgICBkID0gc2VsZi5kaWN0KCkKQEAgLTE2NDYsNiArMTY2Niw1MiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChkLnZhbHVlcygpKSwgW2NocihpKSBmb3IgaSBpbiBpbmRpY2VzXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQoZC5pdGVtcygpKSwgWyhpLCBjaHIoaSkpIGZvciBpIGluIGluZGljZXNdKQogCisgICAgZGVmIHRlc3RfZGljdF9wcm94eV9uZXN0ZWQoc2VsZik6CisgICAgICAgIHBldHMgPSBzZWxmLmRpY3QoZmVycmV0cz0yLCBoYW1zdGVycz00KQorICAgICAgICBzdXBwbGllcyA9IHNlbGYuZGljdCh3YXRlcj0xMCwgZmVlZD0zKQorICAgICAgICBkID0gc2VsZi5kaWN0KHBldHM9cGV0cywgc3VwcGxpZXM9c3VwcGxpZXMpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdXBwbGllc1snd2F0ZXInXSwgMTApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZFsnc3VwcGxpZXMnXVsnd2F0ZXInXSwgMTApCisKKyAgICAgICAgZFsnc3VwcGxpZXMnXVsnYmxhbmtldHMnXSA9IDUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdXBwbGllc1snYmxhbmtldHMnXSwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkWydzdXBwbGllcyddWydibGFua2V0cyddLCA1KQorCisgICAgICAgIGRbJ3N1cHBsaWVzJ11bJ3dhdGVyJ10gPSA3CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VwcGxpZXNbJ3dhdGVyJ10sIDcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZFsnc3VwcGxpZXMnXVsnd2F0ZXInXSwgNykKKworICAgICAgICBkZWwgcGV0cworICAgICAgICBkZWwgc3VwcGxpZXMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkWydwZXRzJ11bJ2ZlcnJldHMnXSwgMikKKyAgICAgICAgZFsnc3VwcGxpZXMnXVsnYmxhbmtldHMnXSA9IDExCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZFsnc3VwcGxpZXMnXVsnYmxhbmtldHMnXSwgMTEpCisKKyAgICAgICAgcGV0cyA9IGRbJ3BldHMnXQorICAgICAgICBzdXBwbGllcyA9IGRbJ3N1cHBsaWVzJ10KKyAgICAgICAgc3VwcGxpZXNbJ3dhdGVyJ10gPSA3CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VwcGxpZXNbJ3dhdGVyJ10sIDcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZFsnc3VwcGxpZXMnXVsnd2F0ZXInXSwgNykKKworICAgICAgICBkLmNsZWFyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZCksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VwcGxpZXNbJ3dhdGVyJ10sIDcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGV0c1snaGFtc3RlcnMnXSwgNCkKKworICAgICAgICBsID0gc2VsZi5saXN0KFtwZXRzLCBzdXBwbGllc10pCisgICAgICAgIGxbMF1bJ21hcm1vdHMnXSA9IDEKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwZXRzWydtYXJtb3RzJ10sIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobFswXVsnbWFybW90cyddLCAxKQorCisgICAgICAgIGRlbCBwZXRzCisgICAgICAgIGRlbCBzdXBwbGllcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxbMF1bJ21hcm1vdHMnXSwgMSkKKworICAgICAgICBvdXRlciA9IHNlbGYubGlzdChbWzg4LCA5OV0sIGxdKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uob3V0ZXJbMF0sIGxpc3QpICAjIE5vdCBhIExpc3RQcm94eQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dGVyWy0xXVstMV1bJ2ZlZWQnXSwgMykKKwogICAgIGRlZiB0ZXN0X25hbWVzcGFjZShzZWxmKToKICAgICAgICAgbiA9IHNlbGYuTmFtZXNwYWNlKCkKICAgICAgICAgbi5uYW1lID0gJ0JvYicKQEAgLTE2NjgsNiArMTczNCwxMCBAQAogZGVmIG11bCh4LCB5KToKICAgICByZXR1cm4geCp5CiAKK2RlZiByYWlzZV9sYXJnZV92YWx1ZXJyb3Iod2FpdCk6CisgICAgdGltZS5zbGVlcCh3YWl0KQorICAgIHJhaXNlIFZhbHVlRXJyb3IoIngiICogMTAyNCoqMikKKwogY2xhc3MgU2F5V2hlbkVycm9yKFZhbHVlRXJyb3IpOiBwYXNzCiAKIGRlZiBleGNlcHRpb25fdGhyb3dpbmdfZ2VuZXJhdG9yKHRvdGFsLCB3aGVuKToKQEAgLTE5MTAsNiArMTk4MCwyNiBAQAogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpOgogICAgICAgICAgICAgICAgIHAuYXBwbHkoc2VsZi5fdGVzdF93cmFwcGVkX2V4Y2VwdGlvbikKIAorICAgIGRlZiB0ZXN0X21hcF9ub19mYWlsZmFzdChzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMjM5OTI6IHRoZSBmYWlsLWZhc3QgYmVoYXZpb3VyIHdoZW4gYW4gZXhjZXB0aW9uIGlzIHJhaXNlZAorICAgICAgICAjIGR1cmluZyBtYXAoKSB3b3VsZCBtYWtlIFBvb2wuam9pbigpIGRlYWRsb2NrLCBiZWNhdXNlIGEgd29ya2VyCisgICAgICAgICMgcHJvY2VzcyB3b3VsZCBmaWxsIHRoZSByZXN1bHQgcXVldWUgKGFmdGVyIHRoZSByZXN1bHQgaGFuZGxlciB0aHJlYWQKKyAgICAgICAgIyB0ZXJtaW5hdGVkLCBoZW5jZSBub3QgZHJhaW5pbmcgaXQgYW55bW9yZSkuCisKKyAgICAgICAgdF9zdGFydCA9IHRpbWUudGltZSgpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5Qb29sKDIpIGFzIHA6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBwLm1hcChyYWlzZV9sYXJnZV92YWx1ZXJyb3IsIFswLCAxXSkKKyAgICAgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDAuNSkKKyAgICAgICAgICAgICAgICAgICAgcC5jbG9zZSgpCisgICAgICAgICAgICAgICAgICAgIHAuam9pbigpCisKKyAgICAgICAgIyBjaGVjayB0aGF0IHdlIGluZGVlZCB3YWl0ZWQgZm9yIGFsbCBqb2JzCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcih0aW1lLnRpbWUoKSAtIHRfc3RhcnQsIDAuOSkKKwogCiBkZWYgcmFpc2luZygpOgogICAgIHJhaXNlIEtleUVycm9yKCJrZXkiKQpAQCAtMzc4MCw3ICszODcwLDcgQEAKICAgICAgICAgcC5zdGRlcnIuY2xvc2UoKQogICAgICAgICBleHBlY3RlZCA9ICdzZW1hcGhvcmVfdHJhY2tlcjogVGhlcmUgYXBwZWFyIHRvIGJlIDIgbGVha2VkIHNlbWFwaG9yZXMnCiAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoZXJyLCBleHBlY3RlZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSZWdleChlcnIsICdzZW1hcGhvcmVfdHJhY2tlcjogJXI6IFxbRXJybm8nICUgbmFtZTEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoZXJyLCByJ3NlbWFwaG9yZV90cmFja2VyOiAlcjogXFtFcnJubycgJSBuYW1lMSkKIAogIwogIyBNaXhpbnMKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2Fubl9tb2R1bGUucHkgYi9MaWIvdGVzdC9hbm5fbW9kdWxlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllNmI4N2QKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9hbm5fbW9kdWxlLnB5CkBAIC0wLDAgKzEsNTMgQEAKKworCisiIiIKK1RoZSBtb2R1bGUgZm9yIHRlc3RpbmcgdmFyaWFibGUgYW5ub3RhdGlvbnMuCitFbXB0eSBsaW5lcyBhYm92ZSBhcmUgZm9yIGdvb2QgcmVhc29uICh0ZXN0aW5nIGZvciBjb3JyZWN0IGxpbmUgbnVtYmVycykKKyIiIgorCitmcm9tIHR5cGluZyBpbXBvcnQgT3B0aW9uYWwKKworX19hbm5vdGF0aW9uc19fWzFdID0gMgorCitjbGFzcyBDOgorCisgICAgeCA9IDU7IHk6IE9wdGlvbmFsWydDJ10gPSBOb25lCisKK2Zyb20gdHlwaW5nIGltcG9ydCBUdXBsZQoreDogaW50ID0gNTsgeTogc3RyID0geDsgZjogVHVwbGVbaW50LCBpbnRdCisKK2NsYXNzIE0odHlwZSk6CisKKyAgICBfX2Fubm90YXRpb25zX19bJzEyMyddID0gMTIzCisgICAgbzogdHlwZSA9IG9iamVjdAorCisocGFycyk6IGJvb2wgPSBUcnVlCisKK2NsYXNzIEQoQyk6CisgICAgajogc3RyID0gJ2hpJzsgazogc3RyPSAnYnllJworCitmcm9tIHR5cGVzIGltcG9ydCBuZXdfY2xhc3MKK2hfY2xhc3MgPSBuZXdfY2xhc3MoJ0gnLCAoQywpKQoral9jbGFzcyA9IG5ld19jbGFzcygnSicpCisKK2NsYXNzIEYoKToKKyAgICB6OiBpbnQgPSA1CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHgpOgorICAgICAgICBwYXNzCisKK2NsYXNzIFkoRik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzdXBlcihGLCBzZWxmKS5fX2luaXRfXygxMjMpCisKK2NsYXNzIE1ldGEodHlwZSk6CisgICAgZGVmIF9fbmV3X18obWV0YSwgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSk6CisgICAgICAgIHJldHVybiBzdXBlcigpLl9fbmV3X18obWV0YSwgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSkKKworY2xhc3MgUyhtZXRhY2xhc3MgPSBNZXRhKToKKyAgICB4OiBzdHIgPSAnc29tZXRoaW5nJworICAgIHk6IHN0ciA9ICdzb21ldGhpbmcgZWxzZScKKworZGVmIGZvbyh4OiBpbnQgPSAxMCk6CisgICAgZGVmIGJhcih5OiBMaXN0W3N0cl0pOgorICAgICAgICB4OiBzdHIgPSAneWVzJworICAgIGJhcigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9hbm5fbW9kdWxlMi5weSBiL0xpYi90ZXN0L2Fubl9tb2R1bGUyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2Y2Y1YjMKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9hbm5fbW9kdWxlMi5weQpAQCAtMCwwICsxLDM2IEBACisiIiIKK1NvbWUgY29ycmVjdCBzeW50YXggZm9yIHZhcmlhYmxlIGFubm90YXRpb24gaGVyZS4KK01vcmUgZXhhbXBsZXMgYXJlIGluIHRlc3RfZ3JhbW1hciBhbmQgdGVzdF9wYXJzZXIuCisiIiIKKworZnJvbSB0eXBpbmcgaW1wb3J0IG5vX3R5cGVfY2hlY2ssIENsYXNzVmFyCisKK2k6IGludCA9IDEKK2o6IGludAoreDogZmxvYXQgPSBpLzEwCisKK2RlZiBmKCk6CisgICAgY2xhc3MgQzogLi4uCisgICAgcmV0dXJuIEMoKQorCitmKCkubmV3X2F0dHI6IG9iamVjdCA9IG9iamVjdCgpCisKK2NsYXNzIEM6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHg6IGludCkgLT4gTm9uZToKKyAgICAgICAgc2VsZi54ID0geAorCitjID0gQyg1KQorYy5uZXdfYXR0cjogaW50ID0gMTAKKworX19hbm5vdGF0aW9uc19fID0ge30KKworCitAbm9fdHlwZV9jaGVjaworY2xhc3MgTlRDOgorICAgIGRlZiBtZXRoKHNlbGYsIHBhcmFtOiBjb21wbGV4KSAtPiBOb25lOgorICAgICAgICAuLi4KKworY2xhc3MgQ1Y6CisgICAgdmFyOiBDbGFzc1ZhclsnQ1YnXQorCitDVi52YXIgPSBDVigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9hbm5fbW9kdWxlMy5weSBiL0xpYi90ZXN0L2Fubl9tb2R1bGUzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjY2Q3YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9hbm5fbW9kdWxlMy5weQpAQCAtMCwwICsxLDE4IEBACisiIiIKK0NvcnJlY3Qgc3ludGF4IGZvciB2YXJpYWJsZSBhbm5vdGF0aW9uIHRoYXQgc2hvdWxkIGZhaWwgYXQgcnVudGltZQoraW4gYSBjZXJ0YWluIG1hbm5lci4gTW9yZSBleGFtcGxlcyBhcmUgaW4gdGVzdF9ncmFtbWFyIGFuZCB0ZXN0X3BhcnNlci4KKyIiIgorCitkZWYgZl9iYWRfYW5uKCk6CisgICAgX19hbm5vdGF0aW9uc19fWzFdID0gMgorCitjbGFzcyBDX09LOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB4OiBpbnQpIC0+IE5vbmU6CisgICAgICAgIHNlbGYueDogbm9fc3VjaF9uYW1lID0geCAgIyBUaGlzIG9uZSBpcyBPSyBhcyBwcm9wb3NlZCBieSBHdWlkbworCitjbGFzcyBEX2JhZF9hbm46CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHg6IGludCkgLT4gTm9uZToKKyAgICAgICAgc2ZlbC55OiBpbnQgPSAwCisKK2RlZiBnX2JhZF9hbm4oKToKKyAgICBub19zdWNoX25hbWUuYXR0cjogaW50ID0gMApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvYXVkaW90ZXN0cy5weSBiL0xpYi90ZXN0L2F1ZGlvdGVzdHMucHkKaW5kZXggMGFlMjI0Mi4uZDNlOGU5ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvYXVkaW90ZXN0cy5weQorKysgYi9MaWIvdGVzdC9hdWRpb3Rlc3RzLnB5CkBAIC0xLDkgKzEsOCBAQAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGZpbmRmaWxlLCBURVNURk4sIHVubGluawotaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgYXJyYXkKIGltcG9ydCBpbwogaW1wb3J0IHBpY2tsZQotaW1wb3J0IHN5cworCiAKIGNsYXNzIFVuc2Vla2FibGVJTyhpby5GaWxlSU8pOgogICAgIGRlZiB0ZWxsKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvYXV0b3Rlc3QucHkgYi9MaWIvdGVzdC9hdXRvdGVzdC5weQppbmRleCA0MWMyMDg4Li5mYTg1Y2MxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9hdXRvdGVzdC5weQorKysgYi9MaWIvdGVzdC9hdXRvdGVzdC5weQpAQCAtMSw2ICsxLDUgQEAKICMgVGhpcyBzaG91bGQgYmUgZXF1aXZhbGVudCB0byBydW5uaW5nIHJlZ3J0ZXN0LnB5IGZyb20gdGhlIGNtZGxpbmUuCiAjIEl0IGNhbiBiZSBlc3BlY2lhbGx5IGhhbmR5IGlmIHlvdSdyZSBpbiBhbiBpbnRlcmFjdGl2ZSBzaGVsbCwgZS5nLiwKICMgZnJvbSB0ZXN0IGltcG9ydCBhdXRvdGVzdC4KLQotZnJvbSB0ZXN0IGltcG9ydCByZWdydGVzdAotcmVncnRlc3QubWFpbigpCitmcm9tIHRlc3QubGlicmVncnRlc3QgaW1wb3J0IG1haW4KK21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jMS5weSBiL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzEucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiODVlMjkuLjAwMDAwMDAKLS0tIGEvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jMS5weQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotYXN5bmMgZGVmIGZvbyhhPWF3YWl0IHNvbWV0aGluZygpKToKLSAgICBwYXNzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmMyLnB5IGIvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jMi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmI4NWUyOS4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmMyLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1hc3luYyBkZWYgZm9vKGE9YXdhaXQgc29tZXRoaW5nKCkpOgotICAgIHBhc3MKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzMucHkgYi9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmMzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZGUxYmM1Li4wMDAwMDAwCi0tLSBhL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzMucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWFzeW5jIGRlZiBmb28oKToKLSAgICBbaSBhc3luYyBmb3IgaSBpbiBlbHNdCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM0LnB5IGIvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jNC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDAzM2IyOC4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1hc3luYyBkZWYgZm9vKCk6Ci0gICAgYXdhaXQKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzUucHkgYi9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM1LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZDE5YWY2Li4wMDAwMDAwCi0tLSBhL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzUucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWRlZiBmb28oKToKLSAgICBhd2FpdCBzb21ldGhpbmcoKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jNi5weSBiL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzYucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiMGEyM2QuLjAwMDAwMDAKLS0tIGEvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jNi5weQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotYXN5bmMgZGVmIGZvbygpOgotICAgIHlpZWxkCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM3LnB5IGIvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jNy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTFlNGJmOS4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM3LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1hc3luYyBkZWYgZm9vKCk6Ci0gICAgeWllbGQgZnJvbSBbXQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jOC5weSBiL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzgucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjNjM2ZjkuLjAwMDAwMDAKLS0tIGEvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jOC5weQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotYXN5bmMgZGVmIGZvbygpOgotICAgIGF3YWl0IGF3YWl0IGZ1dApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvY2FwYXRoLzBlNDAxNWI5LjAgYi9MaWIvdGVzdC9jYXBhdGgvMGU0MDE1YjkuMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjZkMjU5Yi4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC9jYXBhdGgvMGU0MDE1YjkuMAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLS0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQotTUlJQ2xUQ0NBZjZnQXdJQkFnSUpBS0dVOTV3S1I4cFRNQTBHQ1NxR1NJYjNEUUVCQlFVQU1IQXhDekFKQmdOVgotQkFZVEFsaFpNUmN3RlFZRFZRUUhEQTVEWVhOMGJHVWdRVzUwYUhKaGVERWpNQ0VHQTFVRUNnd2FVSGwwYUc5dQotSUZOdlpuUjNZWEpsSUVadmRXNWtZWFJwYjI0eEl6QWhCZ05WQkFNTUduTmxiR1l0YzJsbmJtVmtMbkI1ZEdodgotYm5SbGMzUXVibVYwTUI0WERURTBNVEV3TWpFNE1Ea3lPVm9YRFRJME1UQXpNREU0TURreU9Wb3djREVMTUFrRwotQTFVRUJoTUNXRmt4RnpBVkJnTlZCQWNNRGtOaGMzUnNaU0JCYm5Sb2NtRjRNU013SVFZRFZRUUtEQnBRZVhSbwotYjI0Z1UyOW1kSGRoY21VZ1JtOTFibVJoZEdsdmJqRWpNQ0VHQTFVRUF3d2FjMlZzWmkxemFXZHVaV1F1Y0hsMAotYUc5dWRHVnpkQzV1WlhRd2daOHdEUVlKS29aSWh2Y05BUUVCQlFBRGdZMEFNSUdKQW9HQkFORFhRWFc5dGp5WgotWHQwSXYydExMMStqaW5yNHdHZzM2aW9MRExGa01mKzJZMUdMMHYwQm5LWUc0TjFPS2xBVTE1TFhHZUdlcjh2bQotU3YveUl2bWRyRUx2aEFiYm8zdzRhOVRNWVFBNFhrSVZMZHZ1M212Tk9BZXQrOFBNSnhuMjZkYkRoRzgwOUFMdgotRUhZNTdsUXNCUzNHNTlSWnlCUFZxQXFtSW1XTkpuVnpBZ01CQUFHak56QTFNQ1VHQTFVZEVRUWVNQnlDR25ObAotYkdZdGMybG5ibVZrTG5CNWRHaHZiblJsYzNRdWJtVjBNQXdHQTFVZEV3UUZNQU1CQWY4d0RRWUpLb1pJaHZjTgotQVFFRkJRQURnWUVBSXV6QWhnTW91SnBOZGYzVVJDSElpbmV5b1N0NldLLzkrZXlVY2psS09yRG9YTlphRDcyaAotVFhNZUtZb1d2SnlWY1NMS0w4Y2tQdERvYmdQMk9UdDBVa3lBYWowbitaSGFxcTFsSDJ5VmZHVUExSUxKdjUxNQotQzhCcWJ2Vlp1cW0zaTd5Z213M2JxRS9sWU1nT3JZdFhYbnFPcno2bnZzRTZZYzlWOXJGZmxPTT0KLS0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2NhcGF0aC9iMTkzMDIxOC4wIGIvTGliL3Rlc3QvY2FwYXRoL2IxOTMwMjE4LjAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzczMzQ5YwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2NhcGF0aC9iMTkzMDIxOC4wCkBAIC0wLDAgKzEsMjEgQEAKKy0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQorTUlJRGJUQ0NBbFdnQXdJQkFnSUpBTENTWkxIeTJpSFFNQTBHQ1NxR1NJYjNEUUVCQlFVQU1FMHhDekFKQmdOVgorQkFZVEFsaFpNU1l3SkFZRFZRUUtEQjFRZVhSb2IyNGdVMjltZEhkaGNtVWdSbTkxYm1SaGRHbHZiaUJEUVRFVworTUJRR0ExVUVBd3dOYjNWeUxXTmhMWE5sY25abGNqQWVGdzB4TXpBeE1EUXhPVFEzTURkYUZ3MHlNekF4TURJeAorT1RRM01EZGFNRTB4Q3pBSkJnTlZCQVlUQWxoWk1TWXdKQVlEVlFRS0RCMVFlWFJvYjI0Z1UyOW1kSGRoY21VZworUm05MWJtUmhkR2x2YmlCRFFURVdNQlFHQTFVRUF3d05iM1Z5TFdOaExYTmxjblpsY2pDQ0FTSXdEUVlKS29aSQoraHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPZmU2ZU1NbndDMm9mMHJXNWJTYjh6Z3ZvYTVJRjdzQTNwVgorcStxazZmbEpoZEptMWUzSGV1cFdqaTJQNTBMaVlpaXBuOVlianV1MXRKeWZGS3ZmNXBTTGRoMCtiU1JoN1F5LworQUlwaEROOWN5RFp6RmdETlI3cHRwS1IwaUlNakNobjhDYWM4U2t2VDV4MHQ1T3BNVkNIekp0dUpOeGpVQXJ0QQorTWwray95MGM5OVM3N0k3UFhJS3M1bndJYkVpRllRZC9KZUJjNEx3MFgrQzVCRWQxeUVjTGpield5R2hmTTROaQorMGlCRU5iR3RnUnFLemJ3MXNGeUxSOVlZNlp3WWw4d0JQQ25NNkI3azVNRzQzdWZDRVJpSFdwTTAyS1lsOXhSeAorNitRaG90SVBMaTdVWWdBMTA5YnZYR0JMVEtrVTR0MFZXRVkzTXlhMzV5NWQ3VUxreFUwQ0F3RUFBYU5RTUU0dworSFFZRFZSME9CQllFRkx6ZFl0bDIyaHZTVkd2UDRHYWJIaDU3Vmd3TE1COEdBMVVkSXdRWU1CYUFGTHpkWXRsMgorMmh2U1ZHdlA0R2FiSGg1N1Znd0xNQXdHQTFVZEV3UUZNQU1CQWY4d0RRWUpLb1pJaHZjTkFRRUZCUUFEZ2dFQgorQUgwSzljdU4wMTI5bVk3NEt3KzY2OExacGlkUExuc3ZEbVRZSERWUVR1NzhrTG1OYmFqRnhnYXdyL010dnp1NAorUWdmZEdIMXRsVlJYaFJoZ1J5L3JlQnY1NkJmOVdnMkhGeWlzVEdybXZDbjA5RlZ3S1VMZWhlcXJiQ01HWkRCMQorQW81VHZGNEJNemZNSHMyNHBQM0s1RjlsTzRNY2h2RlZBcUE2ajl1UnQwQVV0T2VOMHU1enV1UGxOQzI4bEc5TworSkFiM1g0c09wNDVyM2w1MTlES2FVTEZFTTVyUUJlSjRndi9iMm9wajY2bmQwYitnWWEzam5vb2tYV0lPNTB5UgorZisvZk5EWTdMMTMxaExJdnhHMlRsaHB2TUNqeDJoS2FaTFJBTXgyOTNpdFRxT3ErMXJ4T2x2VkUreklZcnRVZgorOW1tdnRrNTdIVmpzTzZsVG8xNVl5SjQ9CistLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9jYXBhdGgvY2U3Yjg2NDMuMCBiL0xpYi90ZXN0L2NhcGF0aC9jZTdiODY0My4wCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNmQyNTliLi4wMDAwMDAwCi0tLSBhL0xpYi90ZXN0L2NhcGF0aC9jZTdiODY0My4wCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCi1NSUlDbFRDQ0FmNmdBd0lCQWdJSkFLR1U5NXdLUjhwVE1BMEdDU3FHU0liM0RRRUJCUVVBTUhBeEN6QUpCZ05WCi1CQVlUQWxoWk1SY3dGUVlEVlFRSERBNURZWE4wYkdVZ1FXNTBhSEpoZURFak1DRUdBMVVFQ2d3YVVIbDBhRzl1Ci1JRk52Wm5SM1lYSmxJRVp2ZFc1a1lYUnBiMjR4SXpBaEJnTlZCQU1NR25ObGJHWXRjMmxuYm1Wa0xuQjVkR2h2Ci1iblJsYzNRdWJtVjBNQjRYRFRFME1URXdNakU0TURreU9Wb1hEVEkwTVRBek1ERTRNRGt5T1Zvd2NERUxNQWtHCi1BMVVFQmhNQ1dGa3hGekFWQmdOVkJBY01Ea05oYzNSc1pTQkJiblJvY21GNE1TTXdJUVlEVlFRS0RCcFFlWFJvCi1iMjRnVTI5bWRIZGhjbVVnUm05MWJtUmhkR2x2YmpFak1DRUdBMVVFQXd3YWMyVnNaaTF6YVdkdVpXUXVjSGwwCi1hRzl1ZEdWemRDNXVaWFF3Z1o4d0RRWUpLb1pJaHZjTkFRRUJCUUFEZ1kwQU1JR0pBb0dCQU5EWFFYVzl0anlaCi1YdDBJdjJ0TEwxK2ppbnI0d0dnMzZpb0xETEZrTWYrMlkxR0wwdjBCbktZRzROMU9LbEFVMTVMWEdlR2VyOHZtCi1Tdi95SXZtZHJFTHZoQWJibzN3NGE5VE1ZUUE0WGtJVkxkdnUzbXZOT0FldCs4UE1KeG4yNmRiRGhHODA5QUx2Ci1FSFk1N2xRc0JTM0c1OVJaeUJQVnFBcW1JbVdOSm5WekFnTUJBQUdqTnpBMU1DVUdBMVVkRVFRZU1CeUNHbk5sCi1iR1l0YzJsbmJtVmtMbkI1ZEdodmJuUmxjM1F1Ym1WME1Bd0dBMVVkRXdRRk1BTUJBZjh3RFFZSktvWklodmNOCi1BUUVGQlFBRGdZRUFJdXpBaGdNb3VKcE5kZjNVUkNISWluZXlvU3Q2V0svOStleVVjamxLT3JEb1hOWmFENzJoCi1UWE1lS1lvV3ZKeVZjU0xLTDhja1B0RG9iZ1AyT1R0MFVreUFhajBuK1pIYXFxMWxIMnlWZkdVQTFJTEp2NTE1Ci1DOEJxYnZWWnVxbTNpN3lnbXczYnFFL2xZTWdPcll0WFhucU9yejZudnNFNlljOVY5ckZmbE9NPQotLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvY2FwYXRoL2NlZmYxNzEwLjAgYi9MaWIvdGVzdC9jYXBhdGgvY2VmZjE3MTAuMApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzMzNDljCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvY2FwYXRoL2NlZmYxNzEwLjAKQEAgLTAsMCArMSwyMSBAQAorLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCitNSUlEYlRDQ0FsV2dBd0lCQWdJSkFMQ1NaTEh5MmlIUU1BMEdDU3FHU0liM0RRRUJCUVVBTUUweEN6QUpCZ05WCitCQVlUQWxoWk1TWXdKQVlEVlFRS0RCMVFlWFJvYjI0Z1UyOW1kSGRoY21VZ1JtOTFibVJoZEdsdmJpQkRRVEVXCitNQlFHQTFVRUF3d05iM1Z5TFdOaExYTmxjblpsY2pBZUZ3MHhNekF4TURReE9UUTNNRGRhRncweU16QXhNREl4CitPVFEzTURkYU1FMHhDekFKQmdOVkJBWVRBbGhaTVNZd0pBWURWUVFLREIxUWVYUm9iMjRnVTI5bWRIZGhjbVVnCitSbTkxYm1SaGRHbHZiaUJEUVRFV01CUUdBMVVFQXd3TmIzVnlMV05oTFhObGNuWmxjakNDQVNJd0RRWUpLb1pJCitodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU9mZTZlTU1ud0Myb2Ywclc1YlNiOHpndm9hNUlGN3NBM3BWCitxK3FrNmZsSmhkSm0xZTNIZXVwV2ppMlA1MExpWWlpcG45WWJqdXUxdEp5ZkZLdmY1cFNMZGgwK2JTUmg3UXkvCitBSXBoRE45Y3lEWnpGZ0ROUjdwdHBLUjBpSU1qQ2huOENhYzhTa3ZUNXgwdDVPcE1WQ0h6SnR1Sk54alVBcnRBCitNbCtrL3kwYzk5Uzc3STdQWElLczVud0liRWlGWVFkL0plQmM0THcwWCtDNUJFZDF5RWNMamJ6V3lHaGZNNE5pCiswaUJFTmJHdGdScUt6Yncxc0Z5TFI5WVk2WndZbDh3QlBDbk02QjdrNU1HNDN1ZkNFUmlIV3BNMDJLWWw5eFJ4Cis2K1Fob3RJUExpN1VZZ0ExMDlidlhHQkxUS2tVNHQwVldFWTNNeWEzNXk1ZDdVTGt4VTBDQXdFQUFhTlFNRTR3CitIUVlEVlIwT0JCWUVGTHpkWXRsMjJodlNWR3ZQNEdhYkhoNTdWZ3dMTUI4R0ExVWRJd1FZTUJhQUZMemRZdGwyCisyaHZTVkd2UDRHYWJIaDU3Vmd3TE1Bd0dBMVVkRXdRRk1BTUJBZjh3RFFZSktvWklodmNOQVFFRkJRQURnZ0VCCitBSDBLOWN1TjAxMjltWTc0S3crNjY4TFpwaWRQTG5zdkRtVFlIRFZRVHU3OGtMbU5iYWpGeGdhd3IvTXR2enU0CitRZ2ZkR0gxdGxWUlhoUmhnUnkvcmVCdjU2QmY5V2cySEZ5aXNUR3JtdkNuMDlGVndLVUxlaGVxcmJDTUdaREIxCitBbzVUdkY0Qk16Zk1IczI0cFAzSzVGOWxPNE1jaHZGVkFxQTZqOXVSdDBBVXRPZU4wdTV6dXVQbE5DMjhsRzlPCitKQWIzWDRzT3A0NXIzbDUxOURLYVVMRkVNNXJRQmVKNGd2L2Iyb3BqNjZuZDBiK2dZYTNqbm9va1hXSU81MHlSCitmKy9mTkRZN0wxMzFoTEl2eEcyVGxocHZNQ2p4MmhLYVpMUkFNeDI5M2l0VHFPcSsxcnhPbHZWRSt6SVlydFVmCis5bW12dGs1N0hWanNPNmxUbzE1WXlKND0KKy0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2NtYXRoX3Rlc3RjYXNlcy50eHQgYi9MaWIvdGVzdC9jbWF0aF90ZXN0Y2FzZXMudHh0CmluZGV4IDliMDg2NTMuLmRkN2U0NTggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L2NtYXRoX3Rlc3RjYXNlcy50eHQKKysrIGIvTGliL3Rlc3QvY21hdGhfdGVzdGNhc2VzLnR4dApAQCAtNTMsNiArNTMsMTIgQEAKIC0tIE1QRlIgaG9tZXBhZ2UgYXQgaHR0cDovL3d3dy5tcGZyLm9yZyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUKIC0tIE1QRlIgcHJvamVjdC4KIAorLS0gQSBtaW5vcml0eSBvZiB0aGUgdGVzdCBjYXNlcyB3ZXJlIGdlbmVyYXRlZCB3aXRoIHRoZSBoZWxwIG9mCistLSBtcG1hdGggMC4xOSBhdCAxMDAgYml0IGFjY3VyYWN5IChodHRwOi8vbXBtYXRoLm9yZykgdG8gaW1wcm92ZQorLS0gY292ZXJhZ2Ugb2YgcmVhbCBmdW5jdGlvbnMgd2l0aCByZWFsLXZhbHVlZCBhcmd1bWVudHMuIFRoZXNlIGFyZQorLS0gdXNlZCBpbiB0ZXN0LnRlc3RfbWF0aC5NYXRoVGVzdHMudGVzdF90ZXN0ZmlsZSwgYXMgd2VsbCBhcyBpbgorLS0gdGVzdF9jbWF0aC4KKwogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLS0gYWNvczogSW52ZXJzZSBjb3NpbmUgLS0KQEAgLTg0OCw2ICs4NTQsMTggQEAKIGF0YW4wMzAzIGF0YW4gLTFlLTE2NSAxLjAgLT4gLTAuNzg1Mzk4MTYzMzk3NDQ4MjggMTkwLjMwOTg0Mzc2MjI4ODc1CiBhdGFuMDMwNCBhdGFuIC05Ljk5OTg4ODY3MTgyNjgzMDFlLTMyMSAtMS4wIC0+IC0wLjc4NTM5ODE2MzM5NzQ0ODI4IC0zNjguNzYwMTk0MDM1NzY2OTIKIAorLS0gQWRkaXRpb25hbCByZWFsIHZhbHVlcyAobXBtYXRoKQorYXRhbjA0MDAgYXRhbiAxLjc5NzY5MzEzNDg2MjMxNTdlKzMwOCAwLjAgLT4gMS41NzA3OTYzMjY3OTQ4OTY2MTkyIDAuMAorYXRhbjA0MDEgYXRhbiAtMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDggMC4wIC0+IC0xLjU3MDc5NjMyNjc5NDg5NjYxOTIgMC4wCithdGFuMDQwMiBhdGFuIDFlLTE3IDAuMCAtPiAxLjAwMDAwMDAwMDAwMDAwMDA3MTVlLTE3IDAuMAorYXRhbjA0MDMgYXRhbiAtMWUtMTcgMC4wIC0+IC0xLjAwMDAwMDAwMDAwMDAwMDA3MTVlLTE3IDAuMAorYXRhbjA0MDQgYXRhbiAwLjAwMDEgMC4wIC0+IDAuMDAwMDk5OTk5OTk5NjY2NjY2NjczNDU5IDAuMAorYXRhbjA0MDUgYXRhbiAtMC4wMDAxIDAuMCAtPiAtMC4wMDAwOTk5OTk5OTk2NjY2NjY2NzM0NTkgMC4wCithdGFuMDQwNiBhdGFuIDAuOTk5OTk5OTk5OTk5OTk5IDAuMCAtPiAwLjc4NTM5ODE2MzM5NzQ0NzgxMDAyIDAuMAorYXRhbjA0MDcgYXRhbiAxLjAwMDAwMDAwMDAwMDAwMSAwLjAgLT4gMC43ODUzOTgxNjMzOTc0NDg4NjQ3MyAwLjAKK2F0YW4wNDA4IGF0YW4gMTQuMTAxNDE5OTQ3MTcxNzE5IDAuMCAtPiAxLjQ5OTk5OTk5OTk5OTk5OTk5NjkgMC4wCithdGFuMDQwOSBhdGFuIDEyNTUuNzY1NTkxNTAwNzg5NyAwLjAgLT4gMS41NzAwMDAwMDAwMDAwMDAwNjIyIDAuMAorCiAtLSBzcGVjaWFsIHZhbHVlcwogYXRhbjEwMDAgYXRhbiAtMC4wIDAuMCAtPiAtMC4wIDAuMAogYXRhbjEwMDEgYXRhbiBuYW4gMC4wIC0+IG5hbiAwLjAKQEAgLTE1MTQsNiArMTUzMiwxMSBAQAogc3FydDAxNDAgc3FydCAxLjY5OTk5OTk5OTk5OTk5OTllKzMwOCAtMS42OTk5OTk5OTk5OTk5OTk5ZSszMDggLT4gMS40MzI1MDg4MjMwMTU0NTczZSsxNTQgLTUuOTMzNjQ1ODI3MTIxMjIwN2UrMTUzCiBzcXJ0MDE0MSBzcXJ0IC0xLjc5N2UrMzA4IC05Ljk5OTk5OTk5OTk5OTk5OTllKzMwNiAtPiAzLjcyODQ0NzY0MzIwNTczMDdlKzE1MiAtMS4zNDEwNDA2ODk5ODAyOTAxZSsxNTQKIAorLS0gQWRkaXRpb25hbCByZWFsIHZhbHVlcyAobXBtYXRoKQorc3FydDAxNTAgc3FydCAxLjc5NzY5MzEzNDg2MjMxNTdlKzMwOCAwLjAgLT4gMS4zNDA3ODA3OTI5OTQyNTk2MzU1ZSsxNTQgMC4wCitzcXJ0MDE1MSBzcXJ0IDIuMjI1MDczODU4NTA3MjAxNGUtMzA4IDAuMCAtPiAxLjQ5MTY2ODE0NjI0MDA0MTM0ODdlLTE1NCAwLjAKK3NxcnQwMTUyIHNxcnQgNWUtMzI0IDAuMCAtPiAyLjIyMjc1ODc0OTQ4NTA3NzQ4MzRlLTE2MiAwLjAKKwogLS0gc3BlY2lhbCB2YWx1ZXMKIHNxcnQxMDAwIHNxcnQgMC4wIDAuMCAtPiAwLjAgMC4wCiBzcXJ0MTAwMSBzcXJ0IC0wLjAgMC4wIC0+IDAuMCAwLjAKQEAgLTE2MTYsNiArMTYzOSwyMCBAQAogZXhwMDA1MyBleHAgNzEwLjAgMS42IC0+IC02LjUyMzE1Nzk5OTU1MDEzNzJlKzMwNiBpbmYgICBvdmVyZmxvdwogZXhwMDA1NCBleHAgNzEwLjAgMi44IC0+IC1pbmYgNy40ODM2MTc3NDE3NDQ4NTI4ZSszMDcgICBvdmVyZmxvdwogCistLSBBZGRpdGlvbmFsIHJlYWwgdmFsdWVzIChtcG1hdGgpCitleHAwMDcwIGV4cCAxZS0wOCAwLjAgLT4gMS4wMDAwMDAwMTAwMDAwMDAwNSAwLjAKK2V4cDAwNzEgZXhwIDAuMDAwMyAwLjAgLT4gMS4wMDAzMDAwNDUwMDQ1MDAzMzc1IDAuMAorZXhwMDA3MiBleHAgMC4yIDAuMCAtPiAxLjIyMTQwMjc1ODE2MDE2OTg0NzUgMC4wCitleHAwMDczIGV4cCAxLjAgMC4wIC0+IDIuNzE4MjgxODI4NDU5MDQ1MjM1NCAwLjAKK2V4cDAwNzQgZXhwIC0xZS0wOCAwLjAgLT4gMC45OTk5OTk5OTAwMDAwMDAwNSAwLjAKK2V4cDAwNzUgZXhwIC0wLjAwMDMgMC4wIC0+IDAuOTk5NzAwMDQ0OTk1NTAwMzM3NTEgMC4wCitleHAwMDc2IGV4cCAtMS4wIDAuMCAtPiAwLjM2Nzg3OTQ0MTE3MTQ0MjMyMTYgMC4wCitleHAwMDc3IGV4cCAyLjIyMDQ0NjA0OTI1MDMxM2UtMTYgMC4wIC0+IDEuMDAwMDAwMDAwMDAwMDAwMjIyIDAuMAorZXhwMDA3OCBleHAgLTEuMTEwMjIzMDI0NjI1MTU2NWUtMTYgMC4wIC0+IDAuOTk5OTk5OTk5OTk5OTk5ODg4OTggMC4wCitleHAwMDc5IGV4cCAyLjMwMjU4NTA5Mjk5NDA0NiAwLjAgLT4gMTAuMDAwMDAwMDAwMDAwMDAyMTcxIDAuMAorZXhwMDA4MCBleHAgLTIuMzAyNTg1MDkyOTk0MDQ2IDAuMCAtPiAwLjA5OTk5OTk5OTk5OTk5OTk3ODI5MiAwLjAKK2V4cDAwODEgZXhwIDcwOS43ODI3IDAuMCAtPiAxLjc5NzY2OTk1NjY2MzgwMTQ2NTRlKzMwOCAwLjAKKwogLS0gc3BlY2lhbCB2YWx1ZXMKIGV4cDEwMDAgZXhwIDAuMCAwLjAgLT4gMS4wIDAuMAogZXhwMTAwMSBleHAgLTAuMCAwLjAgLT4gMS4wIDAuMApAQCAtMTcwOCw2ICsxNzQ1LDIzIEBACiBjb3NoMDAzMCBjb3NoIDcxMC41IDIuMzUxOTk5OTk5OTk5OTk5OSAtPiAtMS4yOTY3NDY1MjM5MzU1OTk4ZSszMDggMS4zMDc2NzA3OTA4ODU3MzMzZSszMDgKIGNvc2gwMDMxIGNvc2ggLTcxMC41IDAuNjk5OTk5OTk5OTk5OTk5OTYgLT4gMS40MDg1NDY2MzgxMzkyNDk5ZSszMDggLTEuMTg2NDAyNDY2NjQ1MDIzOWUrMzA4CiAKKy0tIEFkZGl0aW9uYWwgcmVhbCB2YWx1ZXMgKG1wbWF0aCkKK2Nvc2gwMDUwIGNvc2ggMWUtMTUwIDAuMCAtPiAxLjAgMC4wCitjb3NoMDA1MSBjb3NoIDFlLTE4IDAuMCAtPiAxLjAgMC4wCitjb3NoMDA1MiBjb3NoIDFlLTA5IDAuMCAtPiAxLjAwMDAwMDAwMDAwMDAwMDAwMDUgMC4wCitjb3NoMDA1MyBjb3NoIDAuMDAwMyAwLjAgLT4gMS4wMDAwMDAwNDUwMDAwMDAzMzc1IDAuMAorY29zaDAwNTQgY29zaCAwLjIgMC4wIC0+IDEuMDIwMDY2NzU1NjE5MDc1ODQ4NSAwLjAKK2Nvc2gwMDU1IGNvc2ggMS4wIDAuMCAtPiAxLjU0MzA4MDYzNDgxNTI0Mzc3ODUgMC4wCitjb3NoMDA1NiBjb3NoIC0xZS0xOCAwLjAgLT4gMS4wIC0wLjAKK2Nvc2gwMDU3IGNvc2ggLTAuMDAwMyAwLjAgLT4gMS4wMDAwMDAwNDUwMDAwMDAzMzc1IC0wLjAKK2Nvc2gwMDU4IGNvc2ggLTEuMCAwLjAgLT4gMS41NDMwODA2MzQ4MTUyNDM3Nzg1IC0wLjAKK2Nvc2gwMDU5IGNvc2ggMS4zMTY5NTc4OTY5MjQ4MTY4IDAuMCAtPiAyLjAwMDAwMDAwMDAwMDAwMDE1MDQgMC4wCitjb3NoMDA2MCBjb3NoIC0xLjMxNjk1Nzg5NjkyNDgxNjggMC4wIC0+IDIuMDAwMDAwMDAwMDAwMDAwMTUwNCAtMC4wCitjb3NoMDA2MSBjb3NoIDE3LjMyODY3OTUxMzk5ODYzMyAwLjAgLT4gMTY3NzcyMTYuMDAwMDAwMDIxOTM4IDAuMAorY29zaDAwNjIgY29zaCAxOC43MTQ5NzM4NzUxMTg1MjQgMC4wIC0+IDY3MTA4ODY0LjAwMDAwMDA0MzY2MiAwLjAKK2Nvc2gwMDYzIGNvc2ggNzA5Ljc4MjcgMC4wIC0+IDguOTg4MzQ5NzgzMzE5MDA3MzI3MmUrMzA3IDAuMAorY29zaDAwNjQgY29zaCAtNzA5Ljc4MjcgMC4wIC0+IDguOTg4MzQ5NzgzMzE5MDA3MzI3MmUrMzA3IC0wLjAKKwogLS0gc3BlY2lhbCB2YWx1ZXMKIGNvc2gxMDAwIGNvc2ggMC4wIDAuMCAtPiAxLjAgMC4wCiBjb3NoMTAwMSBjb3NoIDAuMCBpbmYgLT4gbmFuIDAuMCAgICAgICAgaW52YWxpZCBpZ25vcmUtaW1hZy1zaWduCkBAIC0xODAwLDYgKzE4NTQsMjQgQEAKIHNpbmgwMDMwIHNpbmggNzEwLjUgLTIuMzk5OTk5OTk5OTk5OTk5OSAtPiAtMS4zNTc5OTcwNTY0ODg1OTE5ZSszMDggLTEuMjQzOTQ0NzA5MDc3OThlKzMwOAogc2luaDAwMzEgc2luaCAtNzEwLjUgMC44MDAwMDAwMDAwMDAwMDAwNCAtPiAtMS4yODMwNjcxNjAxNzM1MTY0ZSszMDggMS4zMjEwOTU0MTkzOTk3Njc4ZSszMDgKIAorLS0gQWRkaXRpb25hbCByZWFsIHZhbHVlcyAobXBtYXRoKQorc2luaDAwNTAgc2luaCAxZS0xMDAgMC4wIC0+IDEuMDAwMDAwMDAwMDAwMDAwMDJlLTEwMCAwLjAKK3NpbmgwMDUxIHNpbmggNWUtMTcgMC4wIC0+IDQuOTk5OTk5OTk5OTk5OTk5ODk1NWUtMTcgMC4wCitzaW5oMDA1MiBzaW5oIDFlLTE2IDAuMCAtPiA5Ljk5OTk5OTk5OTk5OTk5OTc5MWUtMTcgMC4wCitzaW5oMDA1MyBzaW5oIDMuN2UtMDggMC4wIC0+IDMuNzAwMDAwMDAwMDAwMDAwODg4NWUtOCAwLjAKK3NpbmgwMDU0IHNpbmggMC4wMDEgMC4wIC0+IDAuMDAxMDAwMDAwMTY2NjY2Njc1MDIwOCAwLjAKK3NpbmgwMDU1IHNpbmggMC4yIDAuMCAtPiAwLjIwMTMzNjAwMjU0MTA5Mzk5ODk1IDAuMAorc2luaDAwNTYgc2luaCAxLjAgMC4wIC0+IDEuMTc1MjAxMTkzNjQzODAxNDU2OSAwLjAKK3NpbmgwMDU3IHNpbmggLTMuN2UtMDggMC4wIC0+IC0zLjcwMDAwMDAwMDAwMDAwMDg4ODVlLTggMC4wCitzaW5oMDA1OCBzaW5oIC0wLjAwMSAwLjAgLT4gLTAuMDAxMDAwMDAwMTY2NjY2Njc1MDIwOCAwLjAKK3NpbmgwMDU5IHNpbmggLTEuMCAwLjAgLT4gLTEuMTc1MjAxMTkzNjQzODAxNDU2OSAwLjAKK3NpbmgwMDYwIHNpbmggMS40NDM2MzU0NzUxNzg4MTAzIDAuMCAtPiAxLjk5OTk5OTk5OTk5OTk5OTkwNzggMC4wCitzaW5oMDA2MSBzaW5oIC0xLjQ0MzYzNTQ3NTE3ODgxMDMgMC4wIC0+IC0xLjk5OTk5OTk5OTk5OTk5OTkwNzggMC4wCitzaW5oMDA2MiBzaW5oIDE3LjMyODY3OTUxMzk5ODYzMyAwLjAgLT4gMTY3NzcyMTUuOTk5OTk5OTkyMTM2IDAuMAorc2luaDAwNjMgc2luaCAxOC43MTQ5NzM4NzUxMTg1MjQgMC4wIC0+IDY3MTA4ODY0LjAwMDAwMDAzNjIxMSAwLjAKK3NpbmgwMDY0IHNpbmggNzA5Ljc4MjcgMC4wIC0+IDguOTg4MzQ5NzgzMzE5MDA3MzI3MmUrMzA3IDAuMAorc2luaDAwNjUgc2luaCAtNzA5Ljc4MjcgMC4wIC0+IC04Ljk4ODM0OTc4MzMxOTAwNzMyNzJlKzMwNyAwLjAKKwogLS0gc3BlY2lhbCB2YWx1ZXMKIHNpbmgxMDAwIHNpbmggMC4wIDAuMCAtPiAwLjAgMC4wCiBzaW5oMTAwMSBzaW5oIDAuMCBpbmYgLT4gMC4wIG5hbiAgICAgICAgaW52YWxpZCBpZ25vcmUtcmVhbC1zaWduCkBAIC0xODk3LDYgKzE5NjksMjQgQEAKIHRhbmgwMDMyIHRhbmggMTAwMCAtMi4zMTk5OTk5OTk5OTk5OTk4IC0+IDEuMCAwLjAKIHRhbmgwMDMzIHRhbmggLTEuMDAwMDAwMDAwMDAwMDAwMWUrMzAwIC05LjY2OTk5OTk5OTk5OTk5OTkgLT4gLTEuMCAtMC4wCiAKKy0tIEFkZGl0aW9uYWwgcmVhbCB2YWx1ZXMgKG1wbWF0aCkKK3RhbmgwMDUwIHRhbmggMWUtMTAwIDAuMCAtPiAxLjAwMDAwMDAwMDAwMDAwMDAyZS0xMDAgMC4wCit0YW5oMDA1MSB0YW5oIDVlLTE3IDAuMCAtPiA0Ljk5OTk5OTk5OTk5OTk5OTg5NTVlLTE3IDAuMAordGFuaDAwNTIgdGFuaCAxZS0xNiAwLjAgLT4gOS45OTk5OTk5OTk5OTk5OTk3OTFlLTE3IDAuMAordGFuaDAwNTMgdGFuaCAzLjdlLTA4IDAuMCAtPiAzLjY5OTk5OTk5OTk5OTk5ODM1NTllLTggMC4wCit0YW5oMDA1NCB0YW5oIDAuMDAxIDAuMCAtPiAwLjAwMDk5OTk5OTY2NjY2NjgwMDAyMDc2IDAuMAordGFuaDAwNTUgdGFuaCAwLjIgMC4wIC0+IDAuMTk3Mzc1MzIwMjI0OTA0MDExNDEgMC4wCit0YW5oMDA1NiB0YW5oIDEuMCAwLjAgLT4gMC43NjE1OTQxNTU5NTU3NjQ4ODgxMiAwLjAKK3RhbmgwMDU3IHRhbmggLTMuN2UtMDggMC4wIC0+IC0zLjY5OTk5OTk5OTk5OTk5ODM1NTllLTggMC4wCit0YW5oMDA1OCB0YW5oIC0wLjAwMSAwLjAgLT4gLTAuMDAwOTk5OTk5NjY2NjY2ODAwMDIwNzYgMC4wCit0YW5oMDA1OSB0YW5oIC0xLjAgMC4wIC0+IC0wLjc2MTU5NDE1NTk1NTc2NDg4ODEyIDAuMAordGFuaDAwNjAgdGFuaCAwLjU0OTMwNjE0NDMzNDA1NDkgMC4wIC0+IDAuNTAwMDAwMDAwMDAwMDAwMDM0MDIgMC4wCit0YW5oMDA2MSB0YW5oIC0wLjU0OTMwNjE0NDMzNDA1NDkgMC4wIC0+IC0wLjUwMDAwMDAwMDAwMDAwMDAzNDAyIDAuMAordGFuaDAwNjIgdGFuaCAxNy4zMjg2Nzk1MTM5OTg2MzMgMC4wIC0+IDAuOTk5OTk5OTk5OTk5OTk4MjIzNjQgMC4wCit0YW5oMDA2MyB0YW5oIDE4LjcxNDk3Mzg3NTExODUyNCAwLjAgLT4gMC45OTk5OTk5OTk5OTk5OTk4ODg5OCAwLjAKK3RhbmgwMDY0IHRhbmggNzExIDAuMCAtPiAxLjAgMC4wCit0YW5oMDA2NSB0YW5oIDEuNzk3ZSszMDggMC4wIC0+IDEuMCAwLjAKKwogLS1zcGVjaWFsIHZhbHVlcwogdGFuaDEwMDAgdGFuaCAwLjAgMC4wIC0+IDAuMCAwLjAKIHRhbmgxMDAxIHRhbmggMC4wIGluZiAtPiBuYW4gbmFuICAgICAgICBpbnZhbGlkCkBAIC0xOTg1LDYgKzIwNzUsMjIgQEAKIGNvczAwMjIgY29zIDcuOTkxNDUxNTQzMzg1ODUxNSAwLjcxNjU5OTY2NjE1NTAxNDM2IC0+IC0wLjE3Mzc1NDM5OTA2OTM2NTY2IC0wLjc3MjE3MDQzNTI3Mjk0NTgyCiBjb3MwMDIzIGNvcyAwLjQ1MTI0MzUxMTUyNTQwMjI2IDEuNjk5MjY5Mzk5MzgxMjE1OCAtPiAyLjU0MzQ3Nzk0ODk3MjIzNyAtMS4xNTI4MTkzNjk0ODc1NDc3CiAKKy0tIEFkZGl0aW9uYWwgcmVhbCB2YWx1ZXMgKG1wbWF0aCkKK2NvczAwNTAgY29zIDFlLTE1MCAwLjAgLT4gMS4wIC0wLjAKK2NvczAwNTEgY29zIDFlLTE4IDAuMCAtPiAxLjAgLTAuMAorY29zMDA1MiBjb3MgMWUtMDkgMC4wIC0+IDAuOTk5OTk5OTk5OTk5OTk5OTk5NSAtMC4wCitjb3MwMDUzIGNvcyAwLjAwMDMgMC4wIC0+IDAuOTk5OTk5OTU1MDAwMDAwMzM3NSAtMC4wCitjb3MwMDU0IGNvcyAwLjIgMC4wIC0+IDAuOTgwMDY2NTc3ODQxMjQxNjI4OTIgLTAuMAorY29zMDA1NSBjb3MgMS4wIDAuMCAtPiAwLjU0MDMwMjMwNTg2ODEzOTcxNzQgLTAuMAorY29zMDA1NiBjb3MgLTFlLTE4IDAuMCAtPiAxLjAgMC4wCitjb3MwMDU3IGNvcyAtMC4wMDAzIDAuMCAtPiAwLjk5OTk5OTk1NTAwMDAwMDMzNzUgMC4wCitjb3MwMDU4IGNvcyAtMS4wIDAuMCAtPiAwLjU0MDMwMjMwNTg2ODEzOTcxNzQgMC4wCitjb3MwMDU5IGNvcyAxLjA0NzE5NzU1MTE5NjU5NzYgMC4wIC0+IDAuNTAwMDAwMDAwMDAwMDAwMDk5NDUgLTAuMAorY29zMDA2MCBjb3MgMi41NzA3OTYzMjY3OTQ4OTY2IDAuMCAtPiAtMC44NDE0NzA5ODQ4MDc4OTY0NzM1NyAtMC4wCitjb3MwMDYxIGNvcyAtMi41NzA3OTYzMjY3OTQ4OTY2IDAuMCAtPiAtMC44NDE0NzA5ODQ4MDc4OTY0NzM1NyAwLjAKK2NvczAwNjIgY29zIDcuMjI1NjYzMTAzMjU2NTIzIDAuMCAtPiAwLjU4Nzc4NTI1MjI5MjQ3NDA3NTU5IC0wLjAKK2NvczAwNjMgY29zIC04Ljc5NjQ1OTQzMDA1MTQyIDAuMCAtPiAtMC44MDkwMTY5OTQzNzQ5NDcyMjI1NSAwLjAKKwogLS0gc3BlY2lhbCB2YWx1ZXMKIGNvczEwMDAgY29zIC0wLjAgMC4wIC0+IDEuMCAwLjAKIGNvczEwMDEgY29zIC1pbmYgMC4wIC0+IG5hbiAwLjAgaW52YWxpZCBpZ25vcmUtaW1hZy1zaWduCkBAIC0yMDczLDYgKzIxNzksMjIgQEAKIHNpbjAwMjIgc2luIDEuMTUxODA4NzM1NDQwMzcyNSA0Ljg1OTcyMzU5NjYxNTA1NTggLT4gNTguOTE5MTQxOTg5NjAzMDQxIDI2LjIzNzAwMzQwMzc1ODg1Mgogc2luMDAyMyBzaW4gMC4wMDA4Nzc3MzA3ODQwNjY0OTE5MiAzNC43OTIzNzkyMTEzMTIwOTUgLT4gNTY1NTQ4MTQ1NTY5LjM4MjQ1IDY0NDMyOTY4NTgyMjcwMC42MgogCistLSBBZGRpdGlvbmFsIHJlYWwgdmFsdWVzIChtcG1hdGgpCitzaW4wMDUwIHNpbiAxZS0xMDAgMC4wIC0+IDEuMDAwMDAwMDAwMDAwMDAwMDJlLTEwMCAwLjAKK3NpbjAwNTEgc2luIDMuN2UtMDggMC4wIC0+IDMuNjk5OTk5OTk5OTk5OTk5MjAwMWUtOCAwLjAKK3NpbjAwNTIgc2luIDAuMDAxIDAuMCAtPiAwLjAwMDk5OTk5OTgzMzMzMzM0MTY4NzQ4IDAuMAorc2luMDA1MyBzaW4gMC4yIDAuMCAtPiAwLjE5ODY2OTMzMDc5NTA2MTIyNjM0IDAuMAorc2luMDA1NCBzaW4gMS4wIDAuMCAtPiAwLjg0MTQ3MDk4NDgwNzg5NjUwNjY1IDAuMAorc2luMDA1NSBzaW4gLTMuN2UtMDggMC4wIC0+IC0zLjY5OTk5OTk5OTk5OTk5OTIwMDFlLTggMC4wCitzaW4wMDU2IHNpbiAtMC4wMDEgMC4wIC0+IC0wLjAwMDk5OTk5OTgzMzMzMzM0MTY4NzQ4IDAuMAorc2luMDA1NyBzaW4gLTEuMCAwLjAgLT4gLTAuODQxNDcwOTg0ODA3ODk2NTA2NjUgMC4wCitzaW4wMDU4IHNpbiAwLjUyMzU5ODc3NTU5ODI5ODkgMC4wIC0+IDAuNTAwMDAwMDAwMDAwMDAwMDQ2NDIgMC4wCitzaW4wMDU5IHNpbiAtMC41MjM1OTg3NzU1OTgyOTg5IDAuMCAtPiAtMC41MDAwMDAwMDAwMDAwMDAwNDY0MiAwLjAKK3NpbjAwNjAgc2luIDIuNjE3OTkzODc3OTkxNDk0NCAwLjAgLT4gMC40OTk5OTk5OTk5OTk5OTk5NjAxOCAtMC4wCitzaW4wMDYxIHNpbiAtMi42MTc5OTM4Nzc5OTE0OTQ0IDAuMCAtPiAtMC40OTk5OTk5OTk5OTk5OTk5NjAxOCAtMC4wCitzaW4wMDYyIHNpbiA3LjIyNTY2MzEwMzI1NjUyMyAwLjAgLT4gMC44MDkwMTY5OTQzNzQ5NDY3MzY0OCAwLjAKK3NpbjAwNjMgc2luIC04Ljc5NjQ1OTQzMDA1MTQyIDAuMCAtPiAtMC41ODc3ODUyNTIyOTI0NzM0MDY1OCAtMC4wCisKIC0tIHNwZWNpYWwgdmFsdWVzCiBzaW4xMDAwIHNpbiAtMC4wIDAuMCAtPiAtMC4wIDAuMAogc2luMTAwMSBzaW4gLWluZiAwLjAgLT4gbmFuIDAuMCBpbnZhbGlkIGlnbm9yZS1pbWFnLXNpZ24KQEAgLTIxNjEsNiArMjI4MywyNSBAQAogdGFuMDAyMiB0YW4gMS4xNjE1MzEzOTAwODgwNTc3IDEuNzk1NjI5ODcyODY0NzEwNyAtPiAwLjA0MTc5MzE4NjgyNjM5MDM2MiAxLjAzNzUzMzk1NDYwMzQ3OTIKIHRhbjAwMjMgdGFuIDAuMDY3MDE0Nzc5NDc3OTA4OTQ1IDUuODUxNzM2MTU3NzQ1NzA5NyAtPiAyLjIwODg2Mzk3NTQ4MDAwMzRlLTA2IDAuOTk5OTgzNjE4MjQyMDA2MQogCistLSBBZGRpdGlvbmFsIHJlYWwgdmFsdWVzIChtcG1hdGgpCit0YW4wMDUwIHRhbiAxZS0xMDAgMC4wIC0+IDEuMDAwMDAwMDAwMDAwMDAwMDJlLTEwMCAwLjAKK3RhbjAwNTEgdGFuIDMuN2UtMDggMC4wIC0+IDMuNzAwMDAwMDAwMDAwMDAxNzMyOGUtOCAwLjAKK3RhbjAwNTIgdGFuIDAuMDAxIDAuMCAtPiAwLjAwMTAwMDAwMDMzMzMzMzQ2NjY4NzUgMC4wCit0YW4wMDUzIHRhbiAwLjIgMC4wIC0+IDAuMjAyNzEwMDM1NTA4NjcyNDk0ODggMC4wCit0YW4wMDU0IHRhbiAxLjAgMC4wIC0+IDEuNTU3NDA3NzI0NjU0OTAyMjMwNSAwLjAKK3RhbjAwNTUgdGFuIC0zLjdlLTA4IDAuMCAtPiAtMy43MDAwMDAwMDAwMDAwMDE3MzI4ZS04IDAuMAordGFuMDA1NiB0YW4gLTAuMDAxIDAuMCAtPiAtMC4wMDEwMDAwMDAzMzMzMzM0NjY2ODc1IDAuMAordGFuMDA1NyB0YW4gLTEuMCAwLjAgLT4gLTEuNTU3NDA3NzI0NjU0OTAyMjMwNSAwLjAKK3RhbjAwNTggdGFuIDAuNDYzNjQ3NjA5MDAwODA2MSAwLjAgLT4gMC40OTk5OTk5OTk5OTk5OTk5NzE2MyAwLjAKK3RhbjAwNTkgdGFuIC0wLjQ2MzY0NzYwOTAwMDgwNjEgMC4wIC0+IC0wLjQ5OTk5OTk5OTk5OTk5OTk3MTYzIDAuMAordGFuMDA2MCB0YW4gMS4xMDcxNDg3MTc3OTQwOTA0IDAuMCAtPiAxLjk5OTk5OTk5OTk5OTk5OTUyOTggMC4wCit0YW4wMDYxIHRhbiAtMS4xMDcxNDg3MTc3OTQwOTA0IDAuMCAtPiAtMS45OTk5OTk5OTk5OTk5OTk1Mjk4IDAuMAordGFuMDA2MiB0YW4gMS41IDAuMCAtPiAxNC4xMDE0MTk5NDcxNzE3MTkzODggMC4wCit0YW4wMDYzIHRhbiAxLjU3IDAuMCAtPiAxMjU1Ljc2NTU5MTUwMDc4OTY0NzUgMC4wCit0YW4wMDY0IHRhbiAxLjU3MDc5NjMyNjc5NDg5NjEgMC4wIC0+IDE5Nzg5Mzc5NjYwOTUyMTkuMDUzOCAwLjAKK3RhbjAwNjUgdGFuIDcuMjI1NjYzMTAzMjU2NTIzIDAuMCAtPiAxLjM3NjM4MTkyMDQ3MTE3MDE1MjIgMC4wCit0YW4wMDY2IHRhbiAtOC43OTY0NTk0MzAwNTE0MiAwLjAgLT4gMC43MjY1NDI1MjgwMDUzNjE0MDk4IDAuMAorCiAtLSBzcGVjaWFsIHZhbHVlcwogdGFuMTAwMCB0YW4gLTAuMCAwLjAgLT4gLTAuMCAwLjAKIHRhbjEwMDEgdGFuIC1pbmYgMC4wIC0+IG5hbiBuYW4gaW52YWxpZApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZGF0ZXRpbWV0ZXN0ZXIucHkgYi9MaWIvdGVzdC9kYXRldGltZXRlc3Rlci5weQppbmRleCAwODYwZGI4Li5kNjUxODZkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9kYXRldGltZXRlc3Rlci5weQorKysgYi9MaWIvdGVzdC9kYXRldGltZXRlc3Rlci5weQpAQCAtMiwxNCArMiwyMiBAQAogCiBTZWUgaHR0cDovL3d3dy56b3BlLm9yZy9NZW1iZXJzL2ZkcmFrZS9EYXRlVGltZVdpa2kvVGVzdENhc2VzCiAiIiIKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBpc19yZXNvdXJjZV9lbmFibGVkCisKK2ltcG9ydCBpdGVydG9vbHMKK2ltcG9ydCBiaXNlY3QKIAogaW1wb3J0IGNvcHkKIGltcG9ydCBkZWNpbWFsCiBpbXBvcnQgc3lzCitpbXBvcnQgb3MKIGltcG9ydCBwaWNrbGUKIGltcG9ydCByYW5kb20KK2ltcG9ydCBzdHJ1Y3QKIGltcG9ydCB1bml0dGVzdAogCitmcm9tIGFycmF5IGltcG9ydCBhcnJheQorCiBmcm9tIG9wZXJhdG9yIGltcG9ydCBsdCwgbGUsIGd0LCBnZSwgZXEsIG5lLCB0cnVlZGl2LCBmbG9vcmRpdiwgbW9kCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydApAQCAtMjg0LDcgKzI5Miw4IEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKTogc2VsZi5FU1QuZHN0KDUpCiAKICAgICBkZWYgdGVzdF90em5hbWUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1VUQyswMDowMCcsIHRpbWV6b25lKFpFUk8pLnR6bmFtZShOb25lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVVRDJywgdGltZXpvbmUudXRjLnR6bmFtZShOb25lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVVRDJywgdGltZXpvbmUoWkVSTykudHpuYW1lKE5vbmUpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdVVEMtMDU6MDAnLCB0aW1lem9uZSgtNSAqIEhPVVIpLnR6bmFtZShOb25lKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVVRDKzA5OjMwJywgdGltZXpvbmUoOS41ICogSE9VUikudHpuYW1lKE5vbmUpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdVVEMtMDA6MDEnLCB0aW1lem9uZSh0aW1lZGVsdGEobWludXRlcz0tMSkpLnR6bmFtZShOb25lKSkKQEAgLTEzMjAsNiArMTMyOSw3IEBACiAgICAgICAgICAgICBncmVlbiA9IHBpY2tsZXIuZHVtcHMob3JpZywgcHJvdG8pCiAgICAgICAgICAgICBkZXJpdmVkID0gdW5waWNrbGVyLmxvYWRzKGdyZWVuKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcmlnLCBkZXJpdmVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9yaWcuX19yZWR1Y2VfXygpLCBvcmlnLl9fcmVkdWNlX2V4X18oMikpCiAKICAgICBkZWYgdGVzdF9jb21wYXJlKHNlbGYpOgogICAgICAgICB0MSA9IHNlbGYudGhlY2xhc3MoMiwgMywgNCkKQEAgLTE1NTgsMTMgKzE1NjgsMzIgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHQsIGR0MikKIAogICAgIGRlZiB0ZXN0X2lzb2Zvcm1hdChzZWxmKToKLSAgICAgICAgdCA9IHNlbGYudGhlY2xhc3MoMiwgMywgMiwgNCwgNSwgMSwgMTIzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KCksICAgICIwMDAyLTAzLTAyVDA0OjA1OjAxLjAwMDEyMyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQoJ1QnKSwgIjAwMDItMDMtMDJUMDQ6MDU6MDEuMDAwMTIzIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCgnICcpLCAiMDAwMi0wMy0wMiAwNDowNTowMS4wMDAxMjMiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KCdceDAwJyksICIwMDAyLTAzLTAyXHgwMDA0OjA1OjAxLjAwMDEyMyIpCisgICAgICAgIHQgPSBzZWxmLnRoZWNsYXNzKDEsIDIsIDMsIDQsIDUsIDEsIDEyMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCgpLCAgICAiMDAwMS0wMi0wM1QwNDowNTowMS4wMDAxMjMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KCdUJyksICIwMDAxLTAyLTAzVDA0OjA1OjAxLjAwMDEyMyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQoJyAnKSwgIjAwMDEtMDItMDMgMDQ6MDU6MDEuMDAwMTIzIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCgnXHgwMCcpLCAiMDAwMS0wMi0wM1x4MDAwNDowNTowMS4wMDAxMjMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdob3VycycpLCAiMDAwMS0wMi0wM1QwNCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQodGltZXNwZWM9J21pbnV0ZXMnKSwgIjAwMDEtMDItMDNUMDQ6MDUiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdzZWNvbmRzJyksICIwMDAxLTAyLTAzVDA0OjA1OjAxIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nbWlsbGlzZWNvbmRzJyksICIwMDAxLTAyLTAzVDA0OjA1OjAxLjAwMCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQodGltZXNwZWM9J21pY3Jvc2Vjb25kcycpLCAiMDAwMS0wMi0wM1QwNDowNTowMS4wMDAxMjMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdhdXRvJyksICIwMDAxLTAyLTAzVDA0OjA1OjAxLjAwMDEyMyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQoc2VwPScgJywgdGltZXNwZWM9J21pbnV0ZXMnKSwgIjAwMDEtMDItMDMgMDQ6MDUiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB0Lmlzb2Zvcm1hdCwgdGltZXNwZWM9J2ZvbycpCiAgICAgICAgICMgc3RyIGlzIElTTyBmb3JtYXQgd2l0aCB0aGUgc2VwYXJhdG9yIGZvcmNlZCB0byBhIGJsYW5rLgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih0KSwgIjAwMDItMDMtMDIgMDQ6MDU6MDEuMDAwMTIzIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIodCksICIwMDAxLTAyLTAzIDA0OjA1OjAxLjAwMDEyMyIpCisKKyAgICAgICAgdCA9IHNlbGYudGhlY2xhc3MoMSwgMiwgMywgNCwgNSwgMSwgOTk5NTAwLCB0emluZm89dGltZXpvbmUudXRjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdtaWxsaXNlY29uZHMnKSwgIjAwMDEtMDItMDNUMDQ6MDU6MDEuOTk5KzAwOjAwIikKKworICAgICAgICB0ID0gc2VsZi50aGVjbGFzcygxLCAyLCAzLCA0LCA1LCAxLCA5OTk1MDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQodGltZXNwZWM9J21pbGxpc2Vjb25kcycpLCAiMDAwMS0wMi0wM1QwNDowNTowMS45OTkiKQorCisgICAgICAgIHQgPSBzZWxmLnRoZWNsYXNzKDEsIDIsIDMsIDQsIDUsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQodGltZXNwZWM9J2F1dG8nKSwgIjAwMDEtMDItMDNUMDQ6MDU6MDEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdtaWxsaXNlY29uZHMnKSwgIjAwMDEtMDItMDNUMDQ6MDU6MDEuMDAwIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nbWljcm9zZWNvbmRzJyksICIwMDAxLTAyLTAzVDA0OjA1OjAxLjAwMDAwMCIpCiAKICAgICAgICAgdCA9IHNlbGYudGhlY2xhc3MoMiwgMywgMikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCgpLCAgICAiMDAwMi0wMy0wMlQwMDowMDowMCIpCkBAIC0xNTcyLDYgKzE2MDEsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCgnICcpLCAiMDAwMi0wMy0wMiAwMDowMDowMCIpCiAgICAgICAgICMgc3RyIGlzIElTTyBmb3JtYXQgd2l0aCB0aGUgc2VwYXJhdG9yIGZvcmNlZCB0byBhIGJsYW5rLgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih0KSwgIjAwMDItMDMtMDIgMDA6MDA6MDAiKQorICAgICAgICAjIElTTyBmb3JtYXQgd2l0aCB0aW1lem9uZQorICAgICAgICB0eiA9IEZpeGVkT2Zmc2V0KHRpbWVkZWx0YShzZWNvbmRzPTE2KSwgJ1hYWCcpCisgICAgICAgIHQgPSBzZWxmLnRoZWNsYXNzKDIsIDMsIDIsIHR6aW5mbz10eikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCgpLCAiMDAwMi0wMy0wMlQwMDowMDowMCswMDowMDoxNiIpCiAKICAgICBkZWYgdGVzdF9mb3JtYXQoc2VsZik6CiAgICAgICAgIGR0ID0gc2VsZi50aGVjbGFzcygyMDA3LCA5LCAxMCwgNCwgNSwgMSwgMTIzKQpAQCAtMTY5MSw2ICsxNzI0LDE0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYudGhlY2xhc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMDAsIDEsIDMxLCAyMywgNTksIDU5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAxMDAwMDAwKQorICAgICAgICAjIGJhZCBmb2xkCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYudGhlY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMDAsIDEsIDMxLCBmb2xkPS0xKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLnRoZWNsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAyMDAwLCAxLCAzMSwgZm9sZD0yKQorICAgICAgICAjIFBvc2l0aW9uYWwgZm9sZDoKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnRoZWNsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAyMDAwLCAxLCAzMSwgMjMsIDU5LCA1OSwgMCwgTm9uZSwgMSkKIAogICAgIGRlZiB0ZXN0X2hhc2hfZXF1YWxpdHkoc2VsZik6CiAgICAgICAgIGQgPSBzZWxmLnRoZWNsYXNzKDIwMDAsIDEyLCAzMSwgMjMsIDMwLCAxNykKQEAgLTE3OTAsNiArMTgzMSw3IEBACiAgICAgICAgICAgICBncmVlbiA9IHBpY2tsZXIuZHVtcHMob3JpZywgcHJvdG8pCiAgICAgICAgICAgICBkZXJpdmVkID0gdW5waWNrbGVyLmxvYWRzKGdyZWVuKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcmlnLCBkZXJpdmVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9yaWcuX19yZWR1Y2VfXygpLCBvcmlnLl9fcmVkdWNlX2V4X18oMikpCiAKICAgICBkZWYgdGVzdF9tb3JlX3BpY2tsaW5nKHNlbGYpOgogICAgICAgICBhID0gc2VsZi50aGVjbGFzcygyMDAzLCAyLCA3LCAxNiwgNDgsIDM3LCA0NDQxMTYpCkBAIC0xODc0LDE2ICsxOTE2LDIwIEBACiAgICAgICAgIHQgPSBzZWxmLnRoZWNsYXNzKDE5NzAsIDEsIDEsIDEsIDIsIDMsIDQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC50aW1lc3RhbXAoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAxODAwMC4wICsgMzYwMCArIDIqNjAgKyAzICsgNCoxZS02KQotICAgICAgICAjIE1pc3NpbmcgaG91ciBtYXkgcHJvZHVjZSBwbGF0Zm9ybS1kZXBlbmRlbnQgcmVzdWx0Ci0gICAgICAgIHQgPSBzZWxmLnRoZWNsYXNzKDIwMTIsIDMsIDExLCAyLCAzMCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLnRoZWNsYXNzLmZyb210aW1lc3RhbXAodC50aW1lc3RhbXAoKSksCi0gICAgICAgICAgICAgICAgICAgICAgW3QgLSB0aW1lZGVsdGEoaG91cnM9MSksIHQgKyB0aW1lZGVsdGEoaG91cnM9MSldKQorICAgICAgICAjIE1pc3NpbmcgaG91cgorICAgICAgICB0MCA9IHNlbGYudGhlY2xhc3MoMjAxMiwgMywgMTEsIDIsIDMwKQorICAgICAgICB0MSA9IHQwLnJlcGxhY2UoZm9sZD0xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudGhlY2xhc3MuZnJvbXRpbWVzdGFtcCh0MS50aW1lc3RhbXAoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgdDAgLSB0aW1lZGVsdGEoaG91cnM9MSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50aGVjbGFzcy5mcm9tdGltZXN0YW1wKHQwLnRpbWVzdGFtcCgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB0MSArIHRpbWVkZWx0YShob3Vycz0xKSkKICAgICAgICAgIyBBbWJpZ3VvdXMgaG91ciBkZWZhdWx0cyB0byBEU1QKICAgICAgICAgdCA9IHNlbGYudGhlY2xhc3MoMjAxMiwgMTEsIDQsIDEsIDMwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudGhlY2xhc3MuZnJvbXRpbWVzdGFtcCh0LnRpbWVzdGFtcCgpKSwgdCkKIAogICAgICAgICAjIFRpbWVzdGFtcCBtYXkgcmFpc2UgYW4gb3ZlcmZsb3cgZXJyb3Igb24gc29tZSBwbGF0Zm9ybXMKLSAgICAgICAgZm9yIHQgaW4gW3NlbGYudGhlY2xhc3MoMSwxLDEpLCBzZWxmLnRoZWNsYXNzKDk5OTksMTIsMTIpXToKKyAgICAgICAgIyBYWFg6IERvIHdlIGNhcmUgdG8gc3VwcG9ydCB0aGUgZmlyc3QgYW5kIGxhc3QgeWVhcj8KKyAgICAgICAgZm9yIHQgaW4gW3NlbGYudGhlY2xhc3MoMiwxLDEpLCBzZWxmLnRoZWNsYXNzKDk5OTgsMTIsMTIpXToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzID0gdC50aW1lc3RhbXAoKQogICAgICAgICAgICAgZXhjZXB0IE92ZXJmbG93RXJyb3I6CkBAIC0xOTAyLDYgKzE5NDgsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQudGltZXN0YW1wKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgMTgwMDAgKyAzNjAwICsgMio2MCArIDMgKyA0KjFlLTYpCiAKKyAgICBAc3VwcG9ydC5ydW5fd2l0aF90eignTVNLLTAzJykgICMgU29tZXRoaW5nIGVhc3Qgb2YgR3JlZW53aWNoCiAgICAgZGVmIHRlc3RfbWljcm9zZWNvbmRfcm91bmRpbmcoc2VsZik6CiAgICAgICAgIGZvciBmdHMgaW4gW3NlbGYudGhlY2xhc3MuZnJvbXRpbWVzdGFtcCwKICAgICAgICAgICAgICAgICAgICAgc2VsZi50aGVjbGFzcy51dGNmcm9tdGltZXN0YW1wXToKQEAgLTIwNzYsMTEgKzIxMjMsMjIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb21iaW5lKSAjIG5lZWQgYW4gYXJnCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29tYmluZSwgZCkgIyBuZWVkIHR3byBhcmdzCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29tYmluZSwgdCwgZCkgIyBhcmdzIHJldmVyc2VkCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29tYmluZSwgZCwgdCwgMSkgIyB0b28gbWFueSBhcmdzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29tYmluZSwgZCwgdCwgMSkgIyB3cm9uZyB0emluZm8gdHlwZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvbWJpbmUsIGQsIHQsIDEsIDIpICAjIHRvbyBtYW55IGFyZ3MKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb21iaW5lLCAiZGF0ZSIsICJ0aW1lIikgIyB3cm9uZyB0eXBlcwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvbWJpbmUsIGQsICJ0aW1lIikgIyB3cm9uZyB0eXBlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29tYmluZSwgImRhdGUiLCB0KSAjIHdyb25nIHR5cGUKIAorICAgICAgICAjIHR6aW5mbz0gYXJndW1lbnQKKyAgICAgICAgZHQgPSBjb21iaW5lKGQsIHQsIHRpbWV6b25lLnV0YykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhkdC50emluZm8sIHRpbWV6b25lLnV0YykKKyAgICAgICAgZHQgPSBjb21iaW5lKGQsIHQsIHR6aW5mbz10aW1lem9uZS51dGMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZHQudHppbmZvLCB0aW1lem9uZS51dGMpCisgICAgICAgIHQgPSB0aW1lKCkKKyAgICAgICAgZHQgPSBjb21iaW5lKGR0LCB0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0LmRhdGUoKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdC50aW1lKCksIHQpCisKICAgICBkZWYgdGVzdF9yZXBsYWNlKHNlbGYpOgogICAgICAgICBjbHMgPSBzZWxmLnRoZWNsYXNzCiAgICAgICAgIGFyZ3MgPSBbMSwgMiwgMywgNCwgNSwgNiwgN10KQEAgLTIxMDcsNiArMjE2NSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGJhc2UucmVwbGFjZSwgeWVhcj0yMDAxKQogCiAgICAgZGVmIHRlc3RfYXN0aW1lem9uZShzZWxmKToKKyAgICAgICAgcmV0dXJuICAjIFRoZSByZXN0IGlzIG5vIGxvbmdlciBhcHBsaWNhYmxlCiAgICAgICAgICMgUHJldHR5IGJvcmluZyEgIFRoZSBUWiB0ZXN0IGlzIG1vcmUgaW50ZXJlc3RpbmcgaGVyZS4gIGFzdGltZXpvbmUoKQogICAgICAgICAjIHNpbXBseSBjYW4ndCBiZSBhcHBsaWVkIHRvIGEgbmFpdmUgb2JqZWN0LgogICAgICAgICBkdCA9IHNlbGYudGhlY2xhc3Mubm93KCkKQEAgLTIzMjQsNiArMjM4MywyMyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KCksICIwMDowMDowMC4xMDAwMDAiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KCksIHN0cih0KSkKIAorICAgICAgICB0ID0gc2VsZi50aGVjbGFzcyhob3VyPTEyLCBtaW51dGU9MzQsIHNlY29uZD01NiwgbWljcm9zZWNvbmQ9MTIzNDU2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdob3VycycpLCAiMTIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdtaW51dGVzJyksICIxMjozNCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQodGltZXNwZWM9J3NlY29uZHMnKSwgIjEyOjM0OjU2IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nbWlsbGlzZWNvbmRzJyksICIxMjozNDo1Ni4xMjMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdtaWNyb3NlY29uZHMnKSwgIjEyOjM0OjU2LjEyMzQ1NiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQodGltZXNwZWM9J2F1dG8nKSwgIjEyOjM0OjU2LjEyMzQ1NiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHQuaXNvZm9ybWF0LCB0aW1lc3BlYz0nbW9ua2V5JykKKworICAgICAgICB0ID0gc2VsZi50aGVjbGFzcyhob3VyPTEyLCBtaW51dGU9MzQsIHNlY29uZD01NiwgbWljcm9zZWNvbmQ9OTk5NTAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdtaWxsaXNlY29uZHMnKSwgIjEyOjM0OjU2Ljk5OSIpCisKKyAgICAgICAgdCA9IHNlbGYudGhlY2xhc3MoaG91cj0xMiwgbWludXRlPTM0LCBzZWNvbmQ9NTYsIG1pY3Jvc2Vjb25kPTApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQodGltZXNwZWM9J21pbGxpc2Vjb25kcycpLCAiMTI6MzQ6NTYuMDAwIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nbWljcm9zZWNvbmRzJyksICIxMjozNDo1Ni4wMDAwMDAiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdhdXRvJyksICIxMjozNDo1NiIpCisKICAgICBkZWYgdGVzdF8xNjUzNzM2KHNlbGYpOgogICAgICAgICAjIHZlcmlmeSBpdCBkb2Vzbid0IGFjY2VwdCBleHRyYSBrZXl3b3JkIGFyZ3VtZW50cwogICAgICAgICB0ID0gc2VsZi50aGVjbGFzcyhzZWNvbmQ9MSkKQEAgLTIzOTUsNiArMjQ3MSw3IEBACiAgICAgICAgICAgICBncmVlbiA9IHBpY2tsZXIuZHVtcHMob3JpZywgcHJvdG8pCiAgICAgICAgICAgICBkZXJpdmVkID0gdW5waWNrbGVyLmxvYWRzKGdyZWVuKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcmlnLCBkZXJpdmVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9yaWcuX19yZWR1Y2VfXygpLCBvcmlnLl9fcmVkdWNlX2V4X18oMikpCiAKICAgICBkZWYgdGVzdF9waWNrbGluZ19zdWJjbGFzc190aW1lKHNlbGYpOgogICAgICAgICBhcmdzID0gMjAsIDU5LCAxNiwgNjQqKjIKQEAgLTI1ODIsOSArMjY1OSw5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHQudXRjb2Zmc2V0KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB0LmRzdCkKIAotICAgICAgICAjIE5vdCBhIHdob2xlIG51bWJlciBvZiBtaW51dGVzLgorICAgICAgICAjIE5vdCBhIHdob2xlIG51bWJlciBvZiBzZWNvbmRzLgogICAgICAgICBjbGFzcyBDNyh0emluZm8pOgotICAgICAgICAgICAgZGVmIHV0Y29mZnNldChzZWxmLCBkdCk6IHJldHVybiB0aW1lZGVsdGEoc2Vjb25kcz02MSkKKyAgICAgICAgICAgIGRlZiB1dGNvZmZzZXQoc2VsZiwgZHQpOiByZXR1cm4gdGltZWRlbHRhKG1pY3Jvc2Vjb25kcz02MSkKICAgICAgICAgICAgIGRlZiBkc3Qoc2VsZiwgZHQpOiByZXR1cm4gdGltZWRlbHRhKG1pY3Jvc2Vjb25kcz0tODEpCiAgICAgICAgIHQgPSBjbHMoMSwgMSwgMSwgdHppbmZvPUM3KCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHQudXRjb2Zmc2V0KQpAQCAtMjc1NSw2ICsyODMyLDcgQEAKICAgICAgICAgICAgIGdyZWVuID0gcGlja2xlci5kdW1wcyhvcmlnLCBwcm90bykKICAgICAgICAgICAgIGRlcml2ZWQgPSB1bnBpY2tsZXIubG9hZHMoZ3JlZW4pCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9yaWcsIGRlcml2ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3JpZy5fX3JlZHVjZV9fKCksIG9yaWcuX19yZWR1Y2VfZXhfXygyKSkKIAogICAgICAgICAjIFRyeSBvbmUgd2l0aCBhIHR6aW5mby4KICAgICAgICAgdGluZm8gPSBQaWNrbGFibGVGaXhlZE9mZnNldCgtMzAwLCAnY29va2llJykKQEAgLTI3NjYsNiArMjg0NCw3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZGVyaXZlZC50emluZm8sIFBpY2tsYWJsZUZpeGVkT2Zmc2V0KQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZXJpdmVkLnV0Y29mZnNldCgpLCB0aW1lZGVsdGEobWludXRlcz0tMzAwKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVyaXZlZC50em5hbWUoKSwgJ2Nvb2tpZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3JpZy5fX3JlZHVjZV9fKCksIG9yaWcuX19yZWR1Y2VfZXhfXygyKSkKIAogICAgIGRlZiB0ZXN0X21vcmVfYm9vbChzZWxmKToKICAgICAgICAgIyB0aW1lIGlzIGFsd2F5cyBUcnVlLgpAQCAtMjk2OSw2ICszMDQ4LDcgQEAKICAgICAgICAgICAgIGdyZWVuID0gcGlja2xlci5kdW1wcyhvcmlnLCBwcm90bykKICAgICAgICAgICAgIGRlcml2ZWQgPSB1bnBpY2tsZXIubG9hZHMoZ3JlZW4pCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9yaWcsIGRlcml2ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3JpZy5fX3JlZHVjZV9fKCksIG9yaWcuX19yZWR1Y2VfZXhfXygyKSkKIAogICAgICAgICAjIFRyeSBvbmUgd2l0aCBhIHR6aW5mby4KICAgICAgICAgdGluZm8gPSBQaWNrbGFibGVGaXhlZE9mZnNldCgtMzAwLCAnY29va2llJykKQEAgLTI5ODEsNiArMzA2MSw3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZGVyaXZlZC50emluZm8sIFBpY2tsYWJsZUZpeGVkT2Zmc2V0KQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZXJpdmVkLnV0Y29mZnNldCgpLCB0aW1lZGVsdGEobWludXRlcz0tMzAwKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVyaXZlZC50em5hbWUoKSwgJ2Nvb2tpZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3JpZy5fX3JlZHVjZV9fKCksIG9yaWcuX19yZWR1Y2VfZXhfXygyKSkKIAogICAgIGRlZiB0ZXN0X2V4dHJlbWVfaGFzaGVzKHNlbGYpOgogICAgICAgICAjIElmIGFuIGF0dGVtcHQgaXMgbWFkZSB0byBoYXNoIHRoZXNlIHZpYSBzdWJ0cmFjdGluZyB0aGUgb2Zmc2V0CkBAIC0zOTI3LDEyICs0MDA4LDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGV0aW1lKHh4LCB4eCwgeHgsIHh4LCB4eCwgeHgsIHh4KSkKIAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnXmFuIGludGVnZXIgaXMgcmVxdWlyZWQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXChnb3QgdHlwZSBzdHJcKSQnKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ1woZ290IHR5cGUgc3RyXCkkJyk6CiAgICAgICAgICAgICBkYXRldGltZSgxMCwgMTAsICcxMCcpCiAKICAgICAgICAgZjEwID0gTnVtYmVyKDEwLjkpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdeX19pbnRfXyByZXR1cm5lZCBub24taW50ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1wodHlwZSBmbG9hdFwpJCcpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInXCh0eXBlIGZsb2F0XCkkJyk6CiAgICAgICAgICAgICBkYXRldGltZSgxMCwgMTAsIGYxMCkKIAogICAgICAgICBjbGFzcyBGbG9hdChmbG9hdCk6CkBAIC0zOTU3LDUgKzQwMzgsNzkwIEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKICAgICAgICAgICAgIGRhdGV0aW1lKDEwLCAxMCwgMTAsIDEwLCAxMCwgMTAsIDEwLikKIAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgTG9jYWwgVGltZSBEaXNhbWJpZ3VhdGlvbgorCisjIEFuIGV4cGVyaW1lbnRhbCByZWltcGxlbWVudGF0aW9uIG9mIGZyb211dGMgdGhhdCByZXNwZWN0cyB0aGUgImZvbGQiIGZsYWcuCisKK2NsYXNzIHR6aW5mbzIodHppbmZvKToKKworICAgIGRlZiBmcm9tdXRjKHNlbGYsIGR0KToKKyAgICAgICAgImRhdGV0aW1lIGluIFVUQyAtPiBkYXRldGltZSBpbiBsb2NhbCB0aW1lLiIKKworICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShkdCwgZGF0ZXRpbWUpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJmcm9tdXRjKCkgcmVxdWlyZXMgYSBkYXRldGltZSBhcmd1bWVudCIpCisgICAgICAgIGlmIGR0LnR6aW5mbyBpcyBub3Qgc2VsZjoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImR0LnR6aW5mbyBpcyBub3Qgc2VsZiIpCisgICAgICAgICMgUmV0dXJuZWQgdmFsdWUgc2F0aXNmaWVzCisgICAgICAgICMgICAgICAgICAgZHQgKyBsZHQudXRjb2Zmc2V0KCkgPSBsZHQKKyAgICAgICAgb2ZmMCA9IGR0LnJlcGxhY2UoZm9sZD0wKS51dGNvZmZzZXQoKQorICAgICAgICBvZmYxID0gZHQucmVwbGFjZShmb2xkPTEpLnV0Y29mZnNldCgpCisgICAgICAgIGlmIG9mZjAgaXMgTm9uZSBvciBvZmYxIGlzIE5vbmUgb3IgZHQuZHN0KCkgaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKKyAgICAgICAgaWYgb2ZmMCA9PSBvZmYxOgorICAgICAgICAgICAgbGR0ID0gZHQgKyBvZmYwCisgICAgICAgICAgICBvZmYxID0gbGR0LnV0Y29mZnNldCgpCisgICAgICAgICAgICBpZiBvZmYwID09IG9mZjE6CisgICAgICAgICAgICAgICAgcmV0dXJuIGxkdAorICAgICAgICAjIE5vdywgd2UgZGlzY292ZXJlZCBib3RoIHBvc3NpYmxlIG9mZnNldHMsIHNvCisgICAgICAgICMgd2UgY2FuIGp1c3QgdHJ5IGZvdXIgcG9zc2libGUgc29sdXRpb25zOgorICAgICAgICBmb3Igb2ZmIGluIFtvZmYwLCBvZmYxXToKKyAgICAgICAgICAgIGxkdCA9IGR0ICsgb2ZmCisgICAgICAgICAgICBpZiBsZHQudXRjb2Zmc2V0KCkgPT0gb2ZmOgorICAgICAgICAgICAgICAgIHJldHVybiBsZHQKKyAgICAgICAgICAgIGxkdCA9IGxkdC5yZXBsYWNlKGZvbGQ9MSkKKyAgICAgICAgICAgIGlmIGxkdC51dGNvZmZzZXQoKSA9PSBvZmY6CisgICAgICAgICAgICAgICAgcmV0dXJuIGxkdAorCisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIk5vIHN1aXRhYmxlIGxvY2FsIHRpbWUgZm91bmQiKQorCisjIFJlaW1wbGVtZW50aW5nIHNpbXBsaWZpZWQgVVMgdGltZXpvbmVzIHRvIHJlc3BlY3QgdGhlICJmb2xkIiBmbGFnOgorCitjbGFzcyBVU1RpbWVab25lMih0emluZm8yKToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3VycywgcmVwcm5hbWUsIHN0ZG5hbWUsIGRzdG5hbWUpOgorICAgICAgICBzZWxmLnN0ZG9mZnNldCA9IHRpbWVkZWx0YShob3Vycz1ob3VycykKKyAgICAgICAgc2VsZi5yZXBybmFtZSA9IHJlcHJuYW1lCisgICAgICAgIHNlbGYuc3RkbmFtZSA9IHN0ZG5hbWUKKyAgICAgICAgc2VsZi5kc3RuYW1lID0gZHN0bmFtZQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5yZXBybmFtZQorCisgICAgZGVmIHR6bmFtZShzZWxmLCBkdCk6CisgICAgICAgIGlmIHNlbGYuZHN0KGR0KToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmRzdG5hbWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnN0ZG5hbWUKKworICAgIGRlZiB1dGNvZmZzZXQoc2VsZiwgZHQpOgorICAgICAgICByZXR1cm4gc2VsZi5zdGRvZmZzZXQgKyBzZWxmLmRzdChkdCkKKworICAgIGRlZiBkc3Qoc2VsZiwgZHQpOgorICAgICAgICBpZiBkdCBpcyBOb25lIG9yIGR0LnR6aW5mbyBpcyBOb25lOgorICAgICAgICAgICAgIyBBbiBleGNlcHRpb24gaW5zdGVhZCBtYXkgYmUgc2Vuc2libGUgaGVyZSwgaW4gb25lIG9yIG1vcmUgb2YKKyAgICAgICAgICAgICMgdGhlIGNhc2VzLgorICAgICAgICAgICAgcmV0dXJuIFpFUk8KKyAgICAgICAgYXNzZXJ0IGR0LnR6aW5mbyBpcyBzZWxmCisKKyAgICAgICAgIyBGaW5kIGZpcnN0IFN1bmRheSBpbiBBcHJpbC4KKyAgICAgICAgc3RhcnQgPSBmaXJzdF9zdW5kYXlfb25fb3JfYWZ0ZXIoRFNUU1RBUlQucmVwbGFjZSh5ZWFyPWR0LnllYXIpKQorICAgICAgICBhc3NlcnQgc3RhcnQud2Vla2RheSgpID09IDYgYW5kIHN0YXJ0Lm1vbnRoID09IDQgYW5kIHN0YXJ0LmRheSA8PSA3CisKKyAgICAgICAgIyBGaW5kIGxhc3QgU3VuZGF5IGluIE9jdG9iZXIuCisgICAgICAgIGVuZCA9IGZpcnN0X3N1bmRheV9vbl9vcl9hZnRlcihEU1RFTkQucmVwbGFjZSh5ZWFyPWR0LnllYXIpKQorICAgICAgICBhc3NlcnQgZW5kLndlZWtkYXkoKSA9PSA2IGFuZCBlbmQubW9udGggPT0gMTAgYW5kIGVuZC5kYXkgPj0gMjUKKworICAgICAgICAjIENhbid0IGNvbXBhcmUgbmFpdmUgdG8gYXdhcmUgb2JqZWN0cywgc28gc3RyaXAgdGhlIHRpbWV6b25lIGZyb20KKyAgICAgICAgIyBkdCBmaXJzdC4KKyAgICAgICAgZHQgPSBkdC5yZXBsYWNlKHR6aW5mbz1Ob25lKQorICAgICAgICBpZiBzdGFydCArIEhPVVIgPD0gZHQgPCBlbmQ6CisgICAgICAgICAgICAjIERTVCBpcyBpbiBlZmZlY3QuCisgICAgICAgICAgICByZXR1cm4gSE9VUgorICAgICAgICBlbGlmIGVuZCA8PSBkdCA8IGVuZCArIEhPVVI6CisgICAgICAgICAgICAjIEZvbGQgKGFuIGFtYmlndW91cyBob3VyKTogdXNlIGR0LmZvbGQgdG8gZGlzYW1iaWd1YXRlLgorICAgICAgICAgICAgcmV0dXJuIFpFUk8gaWYgZHQuZm9sZCBlbHNlIEhPVVIKKyAgICAgICAgZWxpZiBzdGFydCA8PSBkdCA8IHN0YXJ0ICsgSE9VUjoKKyAgICAgICAgICAgICMgR2FwIChhIG5vbi1leGlzdGVudCBob3VyKTogcmV2ZXJzZSB0aGUgZm9sZCBydWxlLgorICAgICAgICAgICAgcmV0dXJuIEhPVVIgaWYgZHQuZm9sZCBlbHNlIFpFUk8KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgRFNUIGlzIG9mZi4KKyAgICAgICAgICAgIHJldHVybiBaRVJPCisKK0Vhc3Rlcm4yICA9IFVTVGltZVpvbmUyKC01LCAiRWFzdGVybjIiLCAgIkVTVCIsICJFRFQiKQorQ2VudHJhbDIgID0gVVNUaW1lWm9uZTIoLTYsICJDZW50cmFsMiIsICAiQ1NUIiwgIkNEVCIpCitNb3VudGFpbjIgPSBVU1RpbWVab25lMigtNywgIk1vdW50YWluMiIsICJNU1QiLCAiTURUIikKK1BhY2lmaWMyICA9IFVTVGltZVpvbmUyKC04LCAiUGFjaWZpYzIiLCAgIlBTVCIsICJQRFQiKQorCisjIEV1cm9wZV9WaWxuaXVzXzE5NDEgdHppbmZvIGltcGxlbWVudGF0aW9uIHJlcHJvZHVjZXMgdGhlIGZvbGxvd2luZworIyAxOTQxIHRyYW5zaXRpb24gZnJvbSBPbHNvbidzIHR6ZGlzdDoKKyMKKyMgWm9uZSBOQU1FICAgICAgICAgICBHTVRPRkYgUlVMRVMgIEZPUk1BVCBbVU5USUxdCisjIFpvbmVFdXJvcGUvVmlsbml1cyAgMTowMCAgIC0gICAgICBDRVQgICAgMTk0MCBBdWcgIDMKKyMgICAgICAgICAgICAgICAgICAgICAzOjAwICAgLSAgICAgIE1TSyAgICAxOTQxIEp1biAyNAorIyAgICAgICAgICAgICAgICAgICAgIDE6MDAgICBDLUV1ciAgQ0Ulc1QgIDE5NDQgQXVnCisjCisjICQgemR1bXAgLXYgRXVyb3BlL1ZpbG5pdXMgfCBncmVwIDE5NDEKKyMgRXVyb3BlL1ZpbG5pdXMgIE1vbiBKdW4gMjMgMjA6NTk6NTkgMTk0MSBVVEMgPSBNb24gSnVuIDIzIDIzOjU5OjU5IDE5NDEgTVNLIGlzZHN0PTAgZ210b2ZmPTEwODAwCisjIEV1cm9wZS9WaWxuaXVzICBNb24gSnVuIDIzIDIxOjAwOjAwIDE5NDEgVVRDID0gTW9uIEp1biAyMyAyMzowMDowMCAxOTQxIENFU1QgaXNkc3Q9MSBnbXRvZmY9NzIwMAorCitjbGFzcyBFdXJvcGVfVmlsbml1c18xOTQxKHR6aW5mbyk6CisgICAgZGVmIF91dGNfZm9sZChzZWxmKToKKyAgICAgICAgcmV0dXJuIFtkYXRldGltZSgxOTQxLCA2LCAyMywgMjEsIHR6aW5mbz1zZWxmKSwgICMgTW9uIEp1biAyMyAyMTowMDowMCAxOTQxIFVUQworICAgICAgICAgICAgICAgIGRhdGV0aW1lKDE5NDEsIDYsIDIzLCAyMiwgdHppbmZvPXNlbGYpXSAgIyBNb24gSnVuIDIzIDIyOjAwOjAwIDE5NDEgVVRDCisKKyAgICBkZWYgX2xvY19mb2xkKHNlbGYpOgorICAgICAgICByZXR1cm4gW2RhdGV0aW1lKDE5NDEsIDYsIDIzLCAyMywgdHppbmZvPXNlbGYpLCAgIyBNb24gSnVuIDIzIDIzOjAwOjAwIDE5NDEgTVNLIC8gQ0VTVAorICAgICAgICAgICAgICAgIGRhdGV0aW1lKDE5NDEsIDYsIDI0LCAwLCB0emluZm89c2VsZildICAgIyBNb24gSnVuIDI0IDAwOjAwOjAwIDE5NDEgQ0VTVAorCisgICAgZGVmIHV0Y29mZnNldChzZWxmLCBkdCk6CisgICAgICAgIGZvbGRfc3RhcnQsIGZvbGRfc3RvcCA9IHNlbGYuX2xvY19mb2xkKCkKKyAgICAgICAgaWYgZHQgPCBmb2xkX3N0YXJ0OgorICAgICAgICAgICAgcmV0dXJuIDMgKiBIT1VSCisgICAgICAgIGlmIGR0IDwgZm9sZF9zdG9wOgorICAgICAgICAgICAgcmV0dXJuICgyIGlmIGR0LmZvbGQgZWxzZSAzKSAqIEhPVVIKKyAgICAgICAgIyBpZiBkdCA+PSBmb2xkX3N0b3AKKyAgICAgICAgcmV0dXJuIDIgKiBIT1VSCisKKyAgICBkZWYgZHN0KHNlbGYsIGR0KToKKyAgICAgICAgZm9sZF9zdGFydCwgZm9sZF9zdG9wID0gc2VsZi5fbG9jX2ZvbGQoKQorICAgICAgICBpZiBkdCA8IGZvbGRfc3RhcnQ6CisgICAgICAgICAgICByZXR1cm4gMCAqIEhPVVIKKyAgICAgICAgaWYgZHQgPCBmb2xkX3N0b3A6CisgICAgICAgICAgICByZXR1cm4gKDEgaWYgZHQuZm9sZCBlbHNlIDApICogSE9VUgorICAgICAgICAjIGlmIGR0ID49IGZvbGRfc3RvcAorICAgICAgICByZXR1cm4gMSAqIEhPVVIKKworICAgIGRlZiB0em5hbWUoc2VsZiwgZHQpOgorICAgICAgICBmb2xkX3N0YXJ0LCBmb2xkX3N0b3AgPSBzZWxmLl9sb2NfZm9sZCgpCisgICAgICAgIGlmIGR0IDwgZm9sZF9zdGFydDoKKyAgICAgICAgICAgIHJldHVybiAnTVNLJworICAgICAgICBpZiBkdCA8IGZvbGRfc3RvcDoKKyAgICAgICAgICAgIHJldHVybiAoJ01TSycsICdDRVNUJylbZHQuZm9sZF0KKyAgICAgICAgIyBpZiBkdCA+PSBmb2xkX3N0b3AKKyAgICAgICAgcmV0dXJuICdDRVNUJworCisgICAgZGVmIGZyb211dGMoc2VsZiwgZHQpOgorICAgICAgICBhc3NlcnQgZHQuZm9sZCA9PSAwCisgICAgICAgIGFzc2VydCBkdC50emluZm8gaXMgc2VsZgorICAgICAgICBpZiBkdC55ZWFyICE9IDE5NDE6CisgICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisgICAgICAgIGZvbGRfc3RhcnQsIGZvbGRfc3RvcCA9IHNlbGYuX3V0Y19mb2xkKCkKKyAgICAgICAgaWYgZHQgPCBmb2xkX3N0YXJ0OgorICAgICAgICAgICAgcmV0dXJuIGR0ICsgMyAqIEhPVVIKKyAgICAgICAgaWYgZHQgPCBmb2xkX3N0b3A6CisgICAgICAgICAgICByZXR1cm4gKGR0ICsgMiAqIEhPVVIpLnJlcGxhY2UoZm9sZD0xKQorICAgICAgICAjIGlmIGR0ID49IGZvbGRfc3RvcAorICAgICAgICByZXR1cm4gZHQgKyAyICogSE9VUgorCisKK2NsYXNzIFRlc3RMb2NhbFRpbWVEaXNhbWJpZ3VhdGlvbih1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF92aWxuaXVzXzE5NDFfZnJvbXV0YyhzZWxmKToKKyAgICAgICAgVmlsbml1cyA9IEV1cm9wZV9WaWxuaXVzXzE5NDEoKQorCisgICAgICAgIGdkdCA9IGRhdGV0aW1lKDE5NDEsIDYsIDIzLCAyMCwgNTksIDU5LCB0emluZm89dGltZXpvbmUudXRjKQorICAgICAgICBsZHQgPSBnZHQuYXN0aW1lem9uZShWaWxuaXVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxkdC5zdHJmdGltZSgiJWMgJVoleiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdNb24gSnVuIDIzIDIzOjU5OjU5IDE5NDEgTVNLKzAzMDAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxkdC5mb2xkLCAwKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGxkdC5kc3QoKSkKKworICAgICAgICBnZHQgPSBkYXRldGltZSgxOTQxLCA2LCAyMywgMjEsIHR6aW5mbz10aW1lem9uZS51dGMpCisgICAgICAgIGxkdCA9IGdkdC5hc3RpbWV6b25lKFZpbG5pdXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGR0LnN0cmZ0aW1lKCIlYyAlWiV6IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ01vbiBKdW4gMjMgMjM6MDA6MDAgMTk0MSBDRVNUKzAyMDAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxkdC5mb2xkLCAxKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobGR0LmRzdCgpKQorCisgICAgICAgIGdkdCA9IGRhdGV0aW1lKDE5NDEsIDYsIDIzLCAyMiwgdHppbmZvPXRpbWV6b25lLnV0YykKKyAgICAgICAgbGR0ID0gZ2R0LmFzdGltZXpvbmUoVmlsbml1cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZHQuc3RyZnRpbWUoIiVjICVaJXoiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnVHVlIEp1biAyNCAwMDowMDowMCAxOTQxIENFU1QrMDIwMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGR0LmZvbGQsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsZHQuZHN0KCkpCisKKyAgICBkZWYgdGVzdF92aWxuaXVzXzE5NDFfdG91dGMoc2VsZik6CisgICAgICAgIFZpbG5pdXMgPSBFdXJvcGVfVmlsbml1c18xOTQxKCkKKworICAgICAgICBsZHQgPSBkYXRldGltZSgxOTQxLCA2LCAyMywgMjIsIDU5LCA1OSwgdHppbmZvPVZpbG5pdXMpCisgICAgICAgIGdkdCA9IGxkdC5hc3RpbWV6b25lKHRpbWV6b25lLnV0YykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZHQuc3RyZnRpbWUoIiVjICVaIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ01vbiBKdW4gMjMgMTk6NTk6NTkgMTk0MSBVVEMnKQorCisgICAgICAgIGxkdCA9IGRhdGV0aW1lKDE5NDEsIDYsIDIzLCAyMywgNTksIDU5LCB0emluZm89Vmlsbml1cykKKyAgICAgICAgZ2R0ID0gbGR0LmFzdGltZXpvbmUodGltZXpvbmUudXRjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdkdC5zdHJmdGltZSgiJWMgJVoiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnTW9uIEp1biAyMyAyMDo1OTo1OSAxOTQxIFVUQycpCisKKyAgICAgICAgbGR0ID0gZGF0ZXRpbWUoMTk0MSwgNiwgMjMsIDIzLCA1OSwgNTksIHR6aW5mbz1WaWxuaXVzLCBmb2xkPTEpCisgICAgICAgIGdkdCA9IGxkdC5hc3RpbWV6b25lKHRpbWV6b25lLnV0YykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZHQuc3RyZnRpbWUoIiVjICVaIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ01vbiBKdW4gMjMgMjE6NTk6NTkgMTk0MSBVVEMnKQorCisgICAgICAgIGxkdCA9IGRhdGV0aW1lKDE5NDEsIDYsIDI0LCAwLCB0emluZm89Vmlsbml1cykKKyAgICAgICAgZ2R0ID0gbGR0LmFzdGltZXpvbmUodGltZXpvbmUudXRjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdkdC5zdHJmdGltZSgiJWMgJVoiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnTW9uIEp1biAyMyAyMjowMDowMCAxOTQxIFVUQycpCisKKworICAgIGRlZiB0ZXN0X2NvbnN0cnVjdG9ycyhzZWxmKToKKyAgICAgICAgdCA9IHRpbWUoMCwgZm9sZD0xKQorICAgICAgICBkdCA9IGRhdGV0aW1lKDEsIDEsIDEsIGZvbGQ9MSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LmZvbGQsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHQuZm9sZCwgMSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgdGltZSgwLCAwLCAwLCAwLCBOb25lLCAwKQorCisgICAgZGVmIHRlc3RfbWVtYmVyKHNlbGYpOgorICAgICAgICBkdCA9IGRhdGV0aW1lKDEsIDEsIDEsIGZvbGQ9MSkKKyAgICAgICAgdCA9IGR0LnRpbWUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuZm9sZCwgMSkKKyAgICAgICAgdCA9IGR0LnRpbWV0eigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5mb2xkLCAxKQorCisgICAgZGVmIHRlc3RfcmVwbGFjZShzZWxmKToKKyAgICAgICAgdCA9IHRpbWUoMCkKKyAgICAgICAgZHQgPSBkYXRldGltZSgxLCAxLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQucmVwbGFjZShmb2xkPTEpLmZvbGQsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHQucmVwbGFjZShmb2xkPTEpLmZvbGQsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5yZXBsYWNlKGZvbGQ9MCkuZm9sZCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdC5yZXBsYWNlKGZvbGQ9MCkuZm9sZCwgMCkKKyAgICAgICAgIyBDaGVjayB0aGF0IHJlcGxhY2VtZW50IG9mIG90aGVyIGZpZWxkcyBkb2VzIG5vdCBjaGFuZ2UgImZvbGQiLgorICAgICAgICB0ID0gdC5yZXBsYWNlKGZvbGQ9MSwgdHppbmZvPUVhc3Rlcm4pCisgICAgICAgIGR0ID0gZHQucmVwbGFjZShmb2xkPTEsIHR6aW5mbz1FYXN0ZXJuKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQucmVwbGFjZSh0emluZm89Tm9uZSkuZm9sZCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdC5yZXBsYWNlKHR6aW5mbz1Ob25lKS5mb2xkLCAxKQorICAgICAgICAjIENoZWNrIHRoYXQgZm9sZCBpcyBhIGtleXdvcmQtb25seSBhcmd1bWVudAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB0LnJlcGxhY2UoMSwgMSwgMSwgTm9uZSwgMSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgZHQucmVwbGFjZSgxLCAxLCAxLCAxLCAxLCAxLCAxLCBOb25lLCAxKQorCisgICAgZGVmIHRlc3RfY29tcGFyaXNvbihzZWxmKToKKyAgICAgICAgdCA9IHRpbWUoMCkKKyAgICAgICAgZHQgPSBkYXRldGltZSgxLCAxLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQsIHQucmVwbGFjZShmb2xkPTEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0LCBkdC5yZXBsYWNlKGZvbGQ9MSkpCisKKyAgICBkZWYgdGVzdF9oYXNoKHNlbGYpOgorICAgICAgICB0ID0gdGltZSgwKQorICAgICAgICBkdCA9IGRhdGV0aW1lKDEsIDEsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaCh0KSwgaGFzaCh0LnJlcGxhY2UoZm9sZD0xKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChkdCksIGhhc2goZHQucmVwbGFjZShmb2xkPTEpKSkKKworICAgIEBzdXBwb3J0LnJ1bl93aXRoX3R6KCdFU1QrMDVFRFQsTTMuMi4wLE0xMS4xLjAnKQorICAgIGRlZiB0ZXN0X2Zyb210aW1lc3RhbXAoc2VsZik6CisgICAgICAgIHMgPSAxNDE0OTA2MjAwCisgICAgICAgIGR0MCA9IGRhdGV0aW1lLmZyb210aW1lc3RhbXAocykKKyAgICAgICAgZHQxID0gZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcChzICsgMzYwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdDAuZm9sZCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdDEuZm9sZCwgMSkKKworICAgIEBzdXBwb3J0LnJ1bl93aXRoX3R6KCdBdXN0cmFsaWEvTG9yZF9Ib3dlJykKKyAgICBkZWYgdGVzdF9mcm9tdGltZXN0YW1wX2xvcmRfaG93ZShzZWxmKToKKyAgICAgICAgdG0gPSBfdGltZS5sb2NhbHRpbWUoMS40ZTkpCisgICAgICAgIGlmIF90aW1lLnN0cmZ0aW1lKCclWiV6JywgdG0pICE9ICdMSFNUKzEwMzAnOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnQXVzdHJhbGlhL0xvcmRfSG93ZSB0aW1lem9uZSBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0nKQorICAgICAgICAjICQgVFo9QXVzdHJhbGlhL0xvcmRfSG93ZSBkYXRlIC1yIDE0MjgxNTg3MDAKKyAgICAgICAgIyBTdW4gQXByICA1IDAxOjQ1OjAwIExIRFQgMjAxNQorICAgICAgICAjICQgVFo9QXVzdHJhbGlhL0xvcmRfSG93ZSBkYXRlIC1yIDE0MjgxNjA1MDAKKyAgICAgICAgIyBTdW4gQXByICA1IDAxOjQ1OjAwIExIU1QgMjAxNQorICAgICAgICBzID0gMTQyODE1ODcwMAorICAgICAgICB0MCA9IGRhdGV0aW1lLmZyb210aW1lc3RhbXAocykKKyAgICAgICAgdDEgPSBkYXRldGltZS5mcm9tdGltZXN0YW1wKHMgKyAxODAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQwLCB0MSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0MC5mb2xkLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQxLmZvbGQsIDEpCisKKworICAgIEBzdXBwb3J0LnJ1bl93aXRoX3R6KCdFU1QrMDVFRFQsTTMuMi4wLE0xMS4xLjAnKQorICAgIGRlZiB0ZXN0X3RpbWVzdGFtcChzZWxmKToKKyAgICAgICAgZHQwID0gZGF0ZXRpbWUoMjAxNCwgMTEsIDIsIDEsIDMwKQorICAgICAgICBkdDEgPSBkdDAucmVwbGFjZShmb2xkPTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHQwLnRpbWVzdGFtcCgpICsgMzYwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBkdDEudGltZXN0YW1wKCkpCisKKyAgICBAc3VwcG9ydC5ydW5fd2l0aF90eignQXVzdHJhbGlhL0xvcmRfSG93ZScpCisgICAgZGVmIHRlc3RfdGltZXN0YW1wX2xvcmRfaG93ZShzZWxmKToKKyAgICAgICAgdG0gPSBfdGltZS5sb2NhbHRpbWUoMS40ZTkpCisgICAgICAgIGlmIF90aW1lLnN0cmZ0aW1lKCclWiV6JywgdG0pICE9ICdMSFNUKzEwMzAnOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnQXVzdHJhbGlhL0xvcmRfSG93ZSB0aW1lem9uZSBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0nKQorICAgICAgICB0ID0gZGF0ZXRpbWUoMjAxNSwgNCwgNSwgMSwgNDUpCisgICAgICAgIHMwID0gdC5yZXBsYWNlKGZvbGQ9MCkudGltZXN0YW1wKCkKKyAgICAgICAgczEgPSB0LnJlcGxhY2UoZm9sZD0xKS50aW1lc3RhbXAoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMwICsgMTgwMCwgczEpCisKKworICAgIEBzdXBwb3J0LnJ1bl93aXRoX3R6KCdFU1QrMDVFRFQsTTMuMi4wLE0xMS4xLjAnKQorICAgIGRlZiB0ZXN0X2FzdGltZXpvbmUoc2VsZik6CisgICAgICAgIGR0MCA9IGRhdGV0aW1lKDIwMTQsIDExLCAyLCAxLCAzMCkKKyAgICAgICAgZHQxID0gZHQwLnJlcGxhY2UoZm9sZD0xKQorICAgICAgICAjIENvbnZlcnQgYm90aCBuYWl2ZSBpbnN0YW5jZXMgdG8gYXdhcmUuCisgICAgICAgIGFkdDAgPSBkdDAuYXN0aW1lem9uZSgpCisgICAgICAgIGFkdDEgPSBkdDEuYXN0aW1lem9uZSgpCisgICAgICAgICMgQ2hlY2sgdGhhdCB0aGUgZmlyc3QgaW5zdGFuY2UgaW4gRFNUIHpvbmUgYW5kIHRoZSBzZWNvbmQgaW4gU1RECisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWR0MC50em5hbWUoKSwgJ0VEVCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWR0MS50em5hbWUoKSwgJ0VTVCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWR0MCArIEhPVVIsIGFkdDEpCisgICAgICAgICMgQXdhcmUgaW5zdGFuY2VzIHdpdGggZml4ZWQgb2Zmc2V0IHR6aW5mbydzIGFsd2F5cyBoYXZlIGZvbGQ9MAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkdDAuZm9sZCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZHQxLmZvbGQsIDApCisKKworICAgIGRlZiB0ZXN0X3BpY2tsZV9mb2xkKHNlbGYpOgorICAgICAgICB0ID0gdGltZShmb2xkPTEpCisgICAgICAgIGR0ID0gZGF0ZXRpbWUoMSwgMSwgMSwgZm9sZD0xKQorICAgICAgICBmb3IgcGlja2xlciwgdW5waWNrbGVyLCBwcm90byBpbiBwaWNrbGVfY2hvaWNlczoKKyAgICAgICAgICAgIGZvciB4IGluIFt0LCBkdF06CisgICAgICAgICAgICAgICAgcyA9IHBpY2tsZXIuZHVtcHMoeCwgcHJvdG8pCisgICAgICAgICAgICAgICAgeSA9IHVucGlja2xlci5sb2FkcyhzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgeSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCgwIGlmIHByb3RvIDwgNCBlbHNlIHguZm9sZCksIHkuZm9sZCkKKworICAgIGRlZiB0ZXN0X3JlcHIoc2VsZik6CisgICAgICAgIHQgPSB0aW1lKGZvbGQ9MSkKKyAgICAgICAgZHQgPSBkYXRldGltZSgxLCAxLCAxLCBmb2xkPTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih0KSwgJ2RhdGV0aW1lLnRpbWUoMCwgMCwgZm9sZD0xKScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihkdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGV0aW1lLmRhdGV0aW1lKDEsIDEsIDEsIDAsIDAsIGZvbGQ9MSknKQorCisgICAgZGVmIHRlc3RfZHN0KHNlbGYpOgorICAgICAgICAjIExldCdzIGZpcnN0IGVzdGFibGlzaCB0aGF0IHRoaW5ncyB3b3JrIGluIHJlZ3VsYXIgdGltZXMuCisgICAgICAgIGR0X3N1bW1lciA9IGRhdGV0aW1lKDIwMDIsIDEwLCAyNywgMSwgdHppbmZvPUVhc3Rlcm4yKSAtIHRpbWVkZWx0YS5yZXNvbHV0aW9uCisgICAgICAgIGR0X3dpbnRlciA9IGRhdGV0aW1lKDIwMDIsIDEwLCAyNywgMiwgdHppbmZvPUVhc3Rlcm4yKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0X3N1bW1lci5kc3QoKSwgSE9VUikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdF93aW50ZXIuZHN0KCksIFpFUk8pCisgICAgICAgICMgVGhlIGRpc2FtYmlndWF0aW9uIGZsYWcgaXMgaWdub3JlZAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0X3N1bW1lci5yZXBsYWNlKGZvbGQ9MSkuZHN0KCksIEhPVVIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHRfd2ludGVyLnJlcGxhY2UoZm9sZD0xKS5kc3QoKSwgWkVSTykKKworICAgICAgICAjIFBpY2sgbG9jYWwgdGltZSBpbiB0aGUgZm9sZC4KKyAgICAgICAgZm9yIG1pbnV0ZSBpbiBbMCwgMzAsIDU5XToKKyAgICAgICAgICAgIGR0ID0gZGF0ZXRpbWUoMjAwMiwgMTAsIDI3LCAxLCBtaW51dGUsIHR6aW5mbz1FYXN0ZXJuMikKKyAgICAgICAgICAgICMgV2l0aCBmb2xkPTAgKHRoZSBkZWZhdWx0KSBpdCBpcyBpbiBEU1QuCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0LmRzdCgpLCBIT1VSKQorICAgICAgICAgICAgIyBXaXRoIGZvbGQ9MSBpdCBpcyBpbiBTVEQuCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0LnJlcGxhY2UoZm9sZD0xKS5kc3QoKSwgWkVSTykKKworICAgICAgICAjIFBpY2sgbG9jYWwgdGltZSBpbiB0aGUgZ2FwLgorICAgICAgICBmb3IgbWludXRlIGluIFswLCAzMCwgNTldOgorICAgICAgICAgICAgZHQgPSBkYXRldGltZSgyMDAyLCA0LCA3LCAyLCBtaW51dGUsIHR6aW5mbz1FYXN0ZXJuMikKKyAgICAgICAgICAgICMgV2l0aCBmb2xkPTAgKHRoZSBkZWZhdWx0KSBpdCBpcyBpbiBTVEQuCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0LmRzdCgpLCBaRVJPKQorICAgICAgICAgICAgIyBXaXRoIGZvbGQ9MSBpdCBpcyBpbiBEU1QuCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0LnJlcGxhY2UoZm9sZD0xKS5kc3QoKSwgSE9VUikKKworCisgICAgZGVmIHRlc3RfdXRjb2Zmc2V0KHNlbGYpOgorICAgICAgICAjIExldCdzIGZpcnN0IGVzdGFibGlzaCB0aGF0IHRoaW5ncyB3b3JrIGluIHJlZ3VsYXIgdGltZXMuCisgICAgICAgIGR0X3N1bW1lciA9IGRhdGV0aW1lKDIwMDIsIDEwLCAyNywgMSwgdHppbmZvPUVhc3Rlcm4yKSAtIHRpbWVkZWx0YS5yZXNvbHV0aW9uCisgICAgICAgIGR0X3dpbnRlciA9IGRhdGV0aW1lKDIwMDIsIDEwLCAyNywgMiwgdHppbmZvPUVhc3Rlcm4yKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0X3N1bW1lci51dGNvZmZzZXQoKSwgLTQgKiBIT1VSKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0X3dpbnRlci51dGNvZmZzZXQoKSwgLTUgKiBIT1VSKQorICAgICAgICAjIFRoZSBkaXNhbWJpZ3VhdGlvbiBmbGFnIGlzIGlnbm9yZWQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdF9zdW1tZXIucmVwbGFjZShmb2xkPTEpLnV0Y29mZnNldCgpLCAtNCAqIEhPVVIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHRfd2ludGVyLnJlcGxhY2UoZm9sZD0xKS51dGNvZmZzZXQoKSwgLTUgKiBIT1VSKQorCisgICAgZGVmIHRlc3RfZnJvbXV0YyhzZWxmKToKKyAgICAgICAgIyBMZXQncyBmaXJzdCBlc3RhYmxpc2ggdGhhdCB0aGluZ3Mgd29yayBpbiByZWd1bGFyIHRpbWVzLgorICAgICAgICB1X3N1bW1lciA9IGRhdGV0aW1lKDIwMDIsIDEwLCAyNywgNiwgdHppbmZvPUVhc3Rlcm4yKSAtIHRpbWVkZWx0YS5yZXNvbHV0aW9uCisgICAgICAgIHVfd2ludGVyID0gZGF0ZXRpbWUoMjAwMiwgMTAsIDI3LCA3LCB0emluZm89RWFzdGVybjIpCisgICAgICAgIHRfc3VtbWVyID0gRWFzdGVybjIuZnJvbXV0Yyh1X3N1bW1lcikKKyAgICAgICAgdF93aW50ZXIgPSBFYXN0ZXJuMi5mcm9tdXRjKHVfd2ludGVyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRfc3VtbWVyLCB1X3N1bW1lciAtIDQgKiBIT1VSKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRfd2ludGVyLCB1X3dpbnRlciAtIDUgKiBIT1VSKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRfc3VtbWVyLmZvbGQsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodF93aW50ZXIuZm9sZCwgMCkKKworICAgICAgICAjIFdoYXQgaGFwcGVucyBpbiB0aGUgZmFsbC1iYWNrIGZvbGQ/CisgICAgICAgIHUgPSBkYXRldGltZSgyMDAyLCAxMCwgMjcsIDUsIDMwLCB0emluZm89RWFzdGVybjIpCisgICAgICAgIHQwID0gRWFzdGVybjIuZnJvbXV0Yyh1KQorICAgICAgICB1ICs9IEhPVVIKKyAgICAgICAgdDEgPSBFYXN0ZXJuMi5mcm9tdXRjKHUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDAsIHQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQwLmZvbGQsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDEuZm9sZCwgMSkKKyAgICAgICAgIyBUaGUgdHJpY2t5IHBhcnQgaXMgd2hlbiB1IGlzIGluIHRoZSBsb2NhbCBmb2xkOgorICAgICAgICB1ID0gZGF0ZXRpbWUoMjAwMiwgMTAsIDI3LCAxLCAzMCwgdHppbmZvPUVhc3Rlcm4yKQorICAgICAgICB0ID0gRWFzdGVybjIuZnJvbXV0Yyh1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCh0LmRheSwgdC5ob3VyKSwgKDI2LCAyMSkpCisgICAgICAgICMgLi4gb3IgZ2V0cyBpbnRvIHRoZSBsb2NhbCBmb2xkIGFmdGVyIGEgc3RhbmRhcmQgdGltZSBhZGp1c3RtZW50CisgICAgICAgIHUgPSBkYXRldGltZSgyMDAyLCAxMCwgMjcsIDYsIDMwLCB0emluZm89RWFzdGVybjIpCisgICAgICAgIHQgPSBFYXN0ZXJuMi5mcm9tdXRjKHUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKHQuZGF5LCB0LmhvdXIpLCAoMjcsIDEpKQorCisgICAgICAgICMgV2hhdCBoYXBwZW5zIGluIHRoZSBzcHJpbmctZm9yd2FyZCBnYXA/CisgICAgICAgIHUgPSBkYXRldGltZSgyMDAyLCA0LCA3LCAyLCAwLCB0emluZm89RWFzdGVybjIpCisgICAgICAgIHQgPSBFYXN0ZXJuMi5mcm9tdXRjKHUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKHQuZGF5LCB0LmhvdXIpLCAoNiwgMjEpKQorCisgICAgZGVmIHRlc3RfbWl4ZWRfY29tcGFyZV9yZWd1bGFyKHNlbGYpOgorICAgICAgICB0ID0gZGF0ZXRpbWUoMjAwMCwgMSwgMSwgdHppbmZvPUVhc3Rlcm4yKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQsIHQuYXN0aW1lem9uZSh0aW1lem9uZS51dGMpKQorICAgICAgICB0ID0gZGF0ZXRpbWUoMjAwMCwgNiwgMSwgdHppbmZvPUVhc3Rlcm4yKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQsIHQuYXN0aW1lem9uZSh0aW1lem9uZS51dGMpKQorCisgICAgZGVmIHRlc3RfbWl4ZWRfY29tcGFyZV9mb2xkKHNlbGYpOgorICAgICAgICB0X2ZvbGQgPSBkYXRldGltZSgyMDAyLCAxMCwgMjcsIDEsIDQ1LCB0emluZm89RWFzdGVybjIpCisgICAgICAgIHRfZm9sZF91dGMgPSB0X2ZvbGQuYXN0aW1lem9uZSh0aW1lem9uZS51dGMpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodF9mb2xkLCB0X2ZvbGRfdXRjKQorCisgICAgZGVmIHRlc3RfbWl4ZWRfY29tcGFyZV9nYXAoc2VsZik6CisgICAgICAgIHRfZ2FwID0gZGF0ZXRpbWUoMjAwMiwgNCwgNywgMiwgNDUsIHR6aW5mbz1FYXN0ZXJuMikKKyAgICAgICAgdF9nYXBfdXRjID0gdF9nYXAuYXN0aW1lem9uZSh0aW1lem9uZS51dGMpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodF9nYXAsIHRfZ2FwX3V0YykKKworICAgIGRlZiB0ZXN0X2hhc2hfYXdhcmUoc2VsZik6CisgICAgICAgIHQgPSBkYXRldGltZSgyMDAwLCAxLCAxLCB0emluZm89RWFzdGVybjIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaCh0KSwgaGFzaCh0LnJlcGxhY2UoZm9sZD0xKSkpCisgICAgICAgIHRfZm9sZCA9IGRhdGV0aW1lKDIwMDIsIDEwLCAyNywgMSwgNDUsIHR6aW5mbz1FYXN0ZXJuMikKKyAgICAgICAgdF9nYXAgPSBkYXRldGltZSgyMDAyLCA0LCA3LCAyLCA0NSwgdHppbmZvPUVhc3Rlcm4yKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2godF9mb2xkKSwgaGFzaCh0X2ZvbGQucmVwbGFjZShmb2xkPTEpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKHRfZ2FwKSwgaGFzaCh0X2dhcC5yZXBsYWNlKGZvbGQ9MSkpKQorCitTRUMgPSB0aW1lZGVsdGEoMCwgMSkKKworZGVmIHBhaXJzKGl0ZXJhYmxlKToKKyAgICBhLCBiID0gaXRlcnRvb2xzLnRlZShpdGVyYWJsZSkKKyAgICBuZXh0KGIsIE5vbmUpCisgICAgcmV0dXJuIHppcChhLCBiKQorCitjbGFzcyBab25lSW5mbyh0emluZm8pOgorICAgIHpvbmVyb290ID0gJy91c3Ivc2hhcmUvem9uZWluZm8nCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHV0LCB0aSk6CisgICAgICAgICIiIgorCisgICAgICAgIDpwYXJhbSB1dDogYXJyYXkKKyAgICAgICAgICAgIEFycmF5IG9mIHRyYW5zaXRpb24gcG9pbnQgdGltZXN0YW1wcworICAgICAgICA6cGFyYW0gdGk6IGxpc3QKKyAgICAgICAgICAgIEEgbGlzdCBvZiAob2Zmc2V0LCBpc2RzdCwgYWJicikgdHVwbGVzCisgICAgICAgIDpyZXR1cm46IE5vbmUKKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYudXQgPSB1dAorICAgICAgICBzZWxmLnRpID0gdGkKKyAgICAgICAgc2VsZi5sdCA9IHNlbGYuaW52ZXJ0KHV0LCB0aSkKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgaW52ZXJ0KHV0LCB0aSk6CisgICAgICAgIGx0ID0gKGFycmF5KCdxJywgdXQpLCBhcnJheSgncScsIHV0KSkKKyAgICAgICAgaWYgdXQ6CisgICAgICAgICAgICBvZmZzZXQgPSB0aVswXVswXSAvLyBTRUMKKyAgICAgICAgICAgIGx0WzBdWzBdICs9IG9mZnNldAorICAgICAgICAgICAgbHRbMV1bMF0gKz0gb2Zmc2V0CisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgxLCBsZW4odXQpKToKKyAgICAgICAgICAgICAgICBsdFswXVtpXSArPSB0aVtpLTFdWzBdIC8vIFNFQworICAgICAgICAgICAgICAgIGx0WzFdW2ldICs9IHRpW2ldWzBdIC8vIFNFQworICAgICAgICByZXR1cm4gbHQKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBmcm9tZmlsZShjbHMsIGZpbGVvYmopOgorICAgICAgICBpZiBmaWxlb2JqLnJlYWQoNCkuZGVjb2RlKCkgIT0gIlRaaWYiOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibm90IGEgem9uZWluZm8gZmlsZSIpCisgICAgICAgIGZpbGVvYmouc2VlaygzMikKKyAgICAgICAgY291bnRzID0gYXJyYXkoJ2knKQorICAgICAgICBjb3VudHMuZnJvbWZpbGUoZmlsZW9iaiwgMykKKyAgICAgICAgaWYgc3lzLmJ5dGVvcmRlciAhPSAnYmlnJzoKKyAgICAgICAgICAgIGNvdW50cy5ieXRlc3dhcCgpCisKKyAgICAgICAgdXQgPSBhcnJheSgnaScpCisgICAgICAgIHV0LmZyb21maWxlKGZpbGVvYmosIGNvdW50c1swXSkKKyAgICAgICAgaWYgc3lzLmJ5dGVvcmRlciAhPSAnYmlnJzoKKyAgICAgICAgICAgIHV0LmJ5dGVzd2FwKCkKKworICAgICAgICB0eXBlX2luZGljZXMgPSBhcnJheSgnQicpCisgICAgICAgIHR5cGVfaW5kaWNlcy5mcm9tZmlsZShmaWxlb2JqLCBjb3VudHNbMF0pCisKKyAgICAgICAgdHRpcyA9IFtdCisgICAgICAgIGZvciBpIGluIHJhbmdlKGNvdW50c1sxXSk6CisgICAgICAgICAgICB0dGlzLmFwcGVuZChzdHJ1Y3QudW5wYWNrKCI+bGJiIiwgZmlsZW9iai5yZWFkKDYpKSkKKworICAgICAgICBhYmJycyA9IGZpbGVvYmoucmVhZChjb3VudHNbMl0pCisKKyAgICAgICAgIyBDb252ZXJ0IHR0aXMKKyAgICAgICAgZm9yIGksIChnbXRvZmYsIGlzZHN0LCBhYmJyaW5kKSBpbiBlbnVtZXJhdGUodHRpcyk6CisgICAgICAgICAgICBhYmJyID0gYWJicnNbYWJicmluZDphYmJycy5maW5kKDAsIGFiYnJpbmQpXS5kZWNvZGUoKQorICAgICAgICAgICAgdHRpc1tpXSA9ICh0aW1lZGVsdGEoMCwgZ210b2ZmKSwgaXNkc3QsIGFiYnIpCisKKyAgICAgICAgdGkgPSBbTm9uZV0gKiBsZW4odXQpCisgICAgICAgIGZvciBpLCBpZHggaW4gZW51bWVyYXRlKHR5cGVfaW5kaWNlcyk6CisgICAgICAgICAgICB0aVtpXSA9IHR0aXNbaWR4XQorCisgICAgICAgIHNlbGYgPSBjbHModXQsIHRpKQorCisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZnJvbW5hbWUoY2xzLCBuYW1lKToKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihjbHMuem9uZXJvb3QsIG5hbWUpCisgICAgICAgIHdpdGggb3BlbihwYXRoLCAncmInKSBhcyBmOgorICAgICAgICAgICAgcmV0dXJuIGNscy5mcm9tZmlsZShmKQorCisgICAgRVBPQ0hPUkRJTkFMID0gZGF0ZSgxOTcwLCAxLCAxKS50b29yZGluYWwoKQorCisgICAgZGVmIGZyb211dGMoc2VsZiwgZHQpOgorICAgICAgICAiIiJkYXRldGltZSBpbiBVVEMgLT4gZGF0ZXRpbWUgaW4gbG9jYWwgdGltZS4iIiIKKworICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShkdCwgZGF0ZXRpbWUpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJmcm9tdXRjKCkgcmVxdWlyZXMgYSBkYXRldGltZSBhcmd1bWVudCIpCisgICAgICAgIGlmIGR0LnR6aW5mbyBpcyBub3Qgc2VsZjoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImR0LnR6aW5mbyBpcyBub3Qgc2VsZiIpCisKKyAgICAgICAgdGltZXN0YW1wID0gKChkdC50b29yZGluYWwoKSAtIHNlbGYuRVBPQ0hPUkRJTkFMKSAqIDg2NDAwCisgICAgICAgICAgICAgICAgICAgICArIGR0LmhvdXIgKiAzNjAwCisgICAgICAgICAgICAgICAgICAgICArIGR0Lm1pbnV0ZSAqIDYwCisgICAgICAgICAgICAgICAgICAgICArIGR0LnNlY29uZCkKKworICAgICAgICBpZiB0aW1lc3RhbXAgPCBzZWxmLnV0WzFdOgorICAgICAgICAgICAgdHRpID0gc2VsZi50aVswXQorICAgICAgICAgICAgZm9sZCA9IDAKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlkeCA9IGJpc2VjdC5iaXNlY3RfcmlnaHQoc2VsZi51dCwgdGltZXN0YW1wKQorICAgICAgICAgICAgYXNzZXJ0IHNlbGYudXRbaWR4LTFdIDw9IHRpbWVzdGFtcAorICAgICAgICAgICAgYXNzZXJ0IGlkeCA9PSBsZW4oc2VsZi51dCkgb3IgdGltZXN0YW1wIDwgc2VsZi51dFtpZHhdCisgICAgICAgICAgICB0dGlfcHJldiwgdHRpID0gc2VsZi50aVtpZHgtMjppZHhdCisgICAgICAgICAgICAjIERldGVjdCBmb2xkCisgICAgICAgICAgICBzaGlmdCA9IHR0aV9wcmV2WzBdIC0gdHRpWzBdCisgICAgICAgICAgICBmb2xkID0gKHNoaWZ0ID4gdGltZWRlbHRhKDAsIHRpbWVzdGFtcCAtIHNlbGYudXRbaWR4LTFdKSkKKyAgICAgICAgZHQgKz0gdHRpWzBdCisgICAgICAgIGlmIGZvbGQ6CisgICAgICAgICAgICByZXR1cm4gZHQucmVwbGFjZShmb2xkPTEpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gZHQKKworICAgIGRlZiBfZmluZF90aShzZWxmLCBkdCwgaSk6CisgICAgICAgIHRpbWVzdGFtcCA9ICgoZHQudG9vcmRpbmFsKCkgLSBzZWxmLkVQT0NIT1JESU5BTCkgKiA4NjQwMAorICAgICAgICAgICAgICsgZHQuaG91ciAqIDM2MDAKKyAgICAgICAgICAgICArIGR0Lm1pbnV0ZSAqIDYwCisgICAgICAgICAgICAgKyBkdC5zZWNvbmQpCisgICAgICAgIGx0ID0gc2VsZi5sdFtkdC5mb2xkXQorICAgICAgICBpZHggPSBiaXNlY3QuYmlzZWN0X3JpZ2h0KGx0LCB0aW1lc3RhbXApCisKKyAgICAgICAgcmV0dXJuIHNlbGYudGlbbWF4KDAsIGlkeCAtIDEpXVtpXQorCisgICAgZGVmIHV0Y29mZnNldChzZWxmLCBkdCk6CisgICAgICAgIHJldHVybiBzZWxmLl9maW5kX3RpKGR0LCAwKQorCisgICAgZGVmIGRzdChzZWxmLCBkdCk6CisgICAgICAgIGlzZHN0ID0gc2VsZi5fZmluZF90aShkdCwgMSkKKyAgICAgICAgIyBYWFg6IFdlIGNhbm5vdCBhY2N1cmF0ZWx5IGRldGVybWluZSB0aGUgInNhdmUiIHZhbHVlLAorICAgICAgICAjIHNvIGxldCdzIHJldHVybiAxaCB3aGVuZXZlciBEU1QgaXMgaW4gZWZmZWN0LiAgU2luY2UKKyAgICAgICAgIyB3ZSBkb24ndCB1c2UgZHN0KCkgaW4gZnJvbXV0YygpLCBpdCBpcyB1bmxpa2VseSB0aGF0CisgICAgICAgICMgaXQgd2lsbCBiZSBuZWVkZWQgZm9yIGFueXRoaW5nIG1vcmUgdGhhbiBib29sKGRzdCgpKS4KKyAgICAgICAgcmV0dXJuIFpFUk8gaWYgaXNkc3QgZWxzZSBIT1VSCisKKyAgICBkZWYgdHpuYW1lKHNlbGYsIGR0KToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbmRfdGkoZHQsIDIpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgem9uZW5hbWVzKGNscywgem9uZWRpcj1Ob25lKToKKyAgICAgICAgaWYgem9uZWRpciBpcyBOb25lOgorICAgICAgICAgICAgem9uZWRpciA9IGNscy56b25lcm9vdAorICAgICAgICB6b25lX3RhYiA9IG9zLnBhdGguam9pbih6b25lZGlyLCAnem9uZS50YWInKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBmID0gb3Blbih6b25lX3RhYikKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgd2l0aCBmOgorICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKKyAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCisgICAgICAgICAgICAgICAgaWYgbGluZSBhbmQgbm90IGxpbmUuc3RhcnRzd2l0aCgnIycpOgorICAgICAgICAgICAgICAgICAgICB5aWVsZCBsaW5lLnNwbGl0KClbMl0KKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzdGF0cyhjbHMsIHN0YXJ0X3llYXI9MSk6CisgICAgICAgIGNvdW50ID0gZ2FwX2NvdW50ID0gZm9sZF9jb3VudCA9IHplcm9zX2NvdW50ID0gMAorICAgICAgICBtaW5fZ2FwID0gbWluX2ZvbGQgPSB0aW1lZGVsdGEubWF4CisgICAgICAgIG1heF9nYXAgPSBtYXhfZm9sZCA9IFpFUk8KKyAgICAgICAgbWluX2dhcF9kYXRldGltZSA9IG1heF9nYXBfZGF0ZXRpbWUgPSBkYXRldGltZS5taW4KKyAgICAgICAgbWluX2dhcF96b25lID0gbWF4X2dhcF96b25lID0gTm9uZQorICAgICAgICBtaW5fZm9sZF9kYXRldGltZSA9IG1heF9mb2xkX2RhdGV0aW1lID0gZGF0ZXRpbWUubWluCisgICAgICAgIG1pbl9mb2xkX3pvbmUgPSBtYXhfZm9sZF96b25lID0gTm9uZQorICAgICAgICBzdGF0c19zaW5jZSA9IGRhdGV0aW1lKHN0YXJ0X3llYXIsIDEsIDEpICMgU3RhcnRpbmcgZnJvbSAxOTcwIGVsaW1pbmF0ZXMgYSBsb3Qgb2Ygbm9pc2UKKyAgICAgICAgZm9yIHpvbmVuYW1lIGluIGNscy56b25lbmFtZXMoKToKKyAgICAgICAgICAgIGNvdW50ICs9IDEKKyAgICAgICAgICAgIHR6ID0gY2xzLmZyb21uYW1lKHpvbmVuYW1lKQorICAgICAgICAgICAgZm9yIGR0LCBzaGlmdCBpbiB0ei50cmFuc2l0aW9ucygpOgorICAgICAgICAgICAgICAgIGlmIGR0IDwgc3RhdHNfc2luY2U6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgaWYgc2hpZnQgPiBaRVJPOgorICAgICAgICAgICAgICAgICAgICBnYXBfY291bnQgKz0gMQorICAgICAgICAgICAgICAgICAgICBpZiAoc2hpZnQsIGR0KSA+IChtYXhfZ2FwLCBtYXhfZ2FwX2RhdGV0aW1lKToKKyAgICAgICAgICAgICAgICAgICAgICAgIG1heF9nYXAgPSBzaGlmdAorICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2dhcF96b25lID0gem9uZW5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgIG1heF9nYXBfZGF0ZXRpbWUgPSBkdAorICAgICAgICAgICAgICAgICAgICBpZiAoc2hpZnQsIGRhdGV0aW1lLm1heCAtIGR0KSA8IChtaW5fZ2FwLCBkYXRldGltZS5tYXggLSBtaW5fZ2FwX2RhdGV0aW1lKToKKyAgICAgICAgICAgICAgICAgICAgICAgIG1pbl9nYXAgPSBzaGlmdAorICAgICAgICAgICAgICAgICAgICAgICAgbWluX2dhcF96b25lID0gem9uZW5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgIG1pbl9nYXBfZGF0ZXRpbWUgPSBkdAorICAgICAgICAgICAgICAgIGVsaWYgc2hpZnQgPCBaRVJPOgorICAgICAgICAgICAgICAgICAgICBmb2xkX2NvdW50ICs9IDEKKyAgICAgICAgICAgICAgICAgICAgc2hpZnQgPSAtc2hpZnQKKyAgICAgICAgICAgICAgICAgICAgaWYgKHNoaWZ0LCBkdCkgPiAobWF4X2ZvbGQsIG1heF9mb2xkX2RhdGV0aW1lKToKKyAgICAgICAgICAgICAgICAgICAgICAgIG1heF9mb2xkID0gc2hpZnQKKyAgICAgICAgICAgICAgICAgICAgICAgIG1heF9mb2xkX3pvbmUgPSB6b25lbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2ZvbGRfZGF0ZXRpbWUgPSBkdAorICAgICAgICAgICAgICAgICAgICBpZiAoc2hpZnQsIGRhdGV0aW1lLm1heCAtIGR0KSA8IChtaW5fZm9sZCwgZGF0ZXRpbWUubWF4IC0gbWluX2ZvbGRfZGF0ZXRpbWUpOgorICAgICAgICAgICAgICAgICAgICAgICAgbWluX2ZvbGQgPSBzaGlmdAorICAgICAgICAgICAgICAgICAgICAgICAgbWluX2ZvbGRfem9uZSA9IHpvbmVuYW1lCisgICAgICAgICAgICAgICAgICAgICAgICBtaW5fZm9sZF9kYXRldGltZSA9IGR0CisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgemVyb3NfY291bnQgKz0gMQorICAgICAgICB0cmFuc19jb3VudHMgPSAoZ2FwX2NvdW50LCBmb2xkX2NvdW50LCB6ZXJvc19jb3VudCkKKyAgICAgICAgcHJpbnQoIk51bWJlciBvZiB6b25lczogICAgICAgJTVkIiAlIGNvdW50KQorICAgICAgICBwcmludCgiTnVtYmVyIG9mIHRyYW5zaXRpb25zOiAlNWQgPSAlZCAoZ2FwcykgKyAlZCAoZm9sZHMpICsgJWQgKHplcm9zKSIgJQorICAgICAgICAgICAgICAoKHN1bSh0cmFuc19jb3VudHMpLCkgKyB0cmFuc19jb3VudHMpKQorICAgICAgICBwcmludCgiTWluIGdhcDogICAgICAgICAlMTZzIGF0ICVzIGluICVzIiAlIChtaW5fZ2FwLCBtaW5fZ2FwX2RhdGV0aW1lLCBtaW5fZ2FwX3pvbmUpKQorICAgICAgICBwcmludCgiTWF4IGdhcDogICAgICAgICAlMTZzIGF0ICVzIGluICVzIiAlIChtYXhfZ2FwLCBtYXhfZ2FwX2RhdGV0aW1lLCBtYXhfZ2FwX3pvbmUpKQorICAgICAgICBwcmludCgiTWluIGZvbGQ6ICAgICAgICAlMTZzIGF0ICVzIGluICVzIiAlIChtaW5fZm9sZCwgbWluX2ZvbGRfZGF0ZXRpbWUsIG1pbl9mb2xkX3pvbmUpKQorICAgICAgICBwcmludCgiTWF4IGZvbGQ6ICAgICAgICAlMTZzIGF0ICVzIGluICVzIiAlIChtYXhfZm9sZCwgbWF4X2ZvbGRfZGF0ZXRpbWUsIG1heF9mb2xkX3pvbmUpKQorCisKKyAgICBkZWYgdHJhbnNpdGlvbnMoc2VsZik6CisgICAgICAgIGZvciAoXywgcHJldl90aSksICh0LCB0aSkgaW4gcGFpcnMoemlwKHNlbGYudXQsIHNlbGYudGkpKToKKyAgICAgICAgICAgIHNoaWZ0ID0gdGlbMF0gLSBwcmV2X3RpWzBdCisgICAgICAgICAgICB5aWVsZCBkYXRldGltZS51dGNmcm9tdGltZXN0YW1wKHQpLCBzaGlmdAorCisgICAgZGVmIG5vbmRzdF9mb2xkcyhzZWxmKToKKyAgICAgICAgIiIiRmluZCBhbGwgZm9sZHMgd2l0aCB0aGUgc2FtZSB2YWx1ZSBvZiBpc2RzdCBvbiBib3RoIHNpZGVzIG9mIHRoZSB0cmFuc2l0aW9uLiIiIgorICAgICAgICBmb3IgKF8sIHByZXZfdGkpLCAodCwgdGkpIGluIHBhaXJzKHppcChzZWxmLnV0LCBzZWxmLnRpKSk6CisgICAgICAgICAgICBzaGlmdCA9IHRpWzBdIC0gcHJldl90aVswXQorICAgICAgICAgICAgaWYgc2hpZnQgPCBaRVJPIGFuZCB0aVsxXSA9PSBwcmV2X3RpWzFdOgorICAgICAgICAgICAgICAgIHlpZWxkIGRhdGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAodCksIC1zaGlmdCwgcHJldl90aVsyXSwgdGlbMl0KKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBwcmludF9hbGxfbm9uZHN0X2ZvbGRzKGNscywgc2FtZV9hYmJyPUZhbHNlLCBzdGFydF95ZWFyPTEpOgorICAgICAgICBjb3VudCA9IDAKKyAgICAgICAgZm9yIHpvbmVuYW1lIGluIGNscy56b25lbmFtZXMoKToKKyAgICAgICAgICAgIHR6ID0gY2xzLmZyb21uYW1lKHpvbmVuYW1lKQorICAgICAgICAgICAgZm9yIGR0LCBzaGlmdCwgcHJldl9hYmJyLCBhYmJyIGluIHR6Lm5vbmRzdF9mb2xkcygpOgorICAgICAgICAgICAgICAgIGlmIGR0LnllYXIgPCBzdGFydF95ZWFyIG9yIHNhbWVfYWJiciBhbmQgcHJldl9hYmJyICE9IGFiYnI6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgY291bnQgKz0gMQorICAgICAgICAgICAgICAgIHByaW50KCIlM2QpICUtMzBzICVzICUxMHMgJTVzIC0+ICVzIiAlCisgICAgICAgICAgICAgICAgICAgICAgKGNvdW50LCB6b25lbmFtZSwgZHQsIHNoaWZ0LCBwcmV2X2FiYnIsIGFiYnIpKQorCisgICAgZGVmIGZvbGRzKHNlbGYpOgorICAgICAgICBmb3IgdCwgc2hpZnQgaW4gc2VsZi50cmFuc2l0aW9ucygpOgorICAgICAgICAgICAgaWYgc2hpZnQgPCBaRVJPOgorICAgICAgICAgICAgICAgIHlpZWxkIHQsIC1zaGlmdAorCisgICAgZGVmIGdhcHMoc2VsZik6CisgICAgICAgIGZvciB0LCBzaGlmdCBpbiBzZWxmLnRyYW5zaXRpb25zKCk6CisgICAgICAgICAgICBpZiBzaGlmdCA+IFpFUk86CisgICAgICAgICAgICAgICAgeWllbGQgdCwgc2hpZnQKKworICAgIGRlZiB6ZXJvcyhzZWxmKToKKyAgICAgICAgZm9yIHQsIHNoaWZ0IGluIHNlbGYudHJhbnNpdGlvbnMoKToKKyAgICAgICAgICAgIGlmIG5vdCBzaGlmdDoKKyAgICAgICAgICAgICAgICB5aWVsZCB0CisKKworY2xhc3MgWm9uZUluZm9UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICB6b25lbmFtZSA9ICdBbWVyaWNhL05ld19Zb3JrJworCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gIndpbjMyIjoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIlNraXBwaW5nIHpvbmVpbmZvIHRlc3RzIG9uIFdpbmRvd3MiKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLnR6ID0gWm9uZUluZm8uZnJvbW5hbWUoc2VsZi56b25lbmFtZSkKKyAgICAgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yIGFzIGVycjoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIlNraXBwaW5nICVzOiAlcyIgJSAoc2VsZi56b25lbmFtZSwgZXJyKSkKKworICAgIGRlZiBhc3NlcnRFcXVpdkRhdGV0aW1lcyhzZWxmLCBhLCBiKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoYS5yZXBsYWNlKHR6aW5mbz1Ob25lKSwgYS5mb2xkLCBpZChhLnR6aW5mbykpLAorICAgICAgICAgICAgICAgICAgICAgICAgIChiLnJlcGxhY2UodHppbmZvPU5vbmUpLCBiLmZvbGQsIGlkKGIudHppbmZvKSkpCisKKyAgICBkZWYgdGVzdF9mb2xkcyhzZWxmKToKKyAgICAgICAgdHogPSBzZWxmLnR6CisgICAgICAgIGZvciBkdCwgc2hpZnQgaW4gdHouZm9sZHMoKToKKyAgICAgICAgICAgIGZvciB4IGluIFswICogc2hpZnQsIDAuNSAqIHNoaWZ0LCBzaGlmdCAtIHRpbWVkZWx0YS5yZXNvbHV0aW9uXToKKyAgICAgICAgICAgICAgICB1ZHQgPSBkdCArIHgKKyAgICAgICAgICAgICAgICBsZHQgPSB0ei5mcm9tdXRjKHVkdC5yZXBsYWNlKHR6aW5mbz10eikpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZHQuZm9sZCwgMSkKKyAgICAgICAgICAgICAgICBhZHQgPSB1ZHQucmVwbGFjZSh0emluZm89dGltZXpvbmUudXRjKS5hc3RpbWV6b25lKHR6KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1aXZEYXRldGltZXMoYWR0LCBsZHQpCisgICAgICAgICAgICAgICAgdXRjb2Zmc2V0ID0gbGR0LnV0Y29mZnNldCgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZHQucmVwbGFjZSh0emluZm89Tm9uZSksIHVkdCArIHV0Y29mZnNldCkKKyAgICAgICAgICAgICAgICAjIFJvdW5kIHRyaXAKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWl2RGF0ZXRpbWVzKGxkdC5hc3RpbWV6b25lKHRpbWV6b25lLnV0YyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ZHQucmVwbGFjZSh0emluZm89dGltZXpvbmUudXRjKSkKKworCisgICAgICAgICAgICBmb3IgeCBpbiBbLXRpbWVkZWx0YS5yZXNvbHV0aW9uLCBzaGlmdF06CisgICAgICAgICAgICAgICAgdWR0ID0gZHQgKyB4CisgICAgICAgICAgICAgICAgdWR0ID0gdWR0LnJlcGxhY2UodHppbmZvPXR6KQorICAgICAgICAgICAgICAgIGxkdCA9IHR6LmZyb211dGModWR0KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGR0LmZvbGQsIDApCisKKyAgICBkZWYgdGVzdF9nYXBzKHNlbGYpOgorICAgICAgICB0eiA9IHNlbGYudHoKKyAgICAgICAgZm9yIGR0LCBzaGlmdCBpbiB0ei5nYXBzKCk6CisgICAgICAgICAgICBmb3IgeCBpbiBbMCAqIHNoaWZ0LCAwLjUgKiBzaGlmdCwgc2hpZnQgLSB0aW1lZGVsdGEucmVzb2x1dGlvbl06CisgICAgICAgICAgICAgICAgdWR0ID0gZHQgKyB4CisgICAgICAgICAgICAgICAgdWR0ID0gdWR0LnJlcGxhY2UodHppbmZvPXR6KQorICAgICAgICAgICAgICAgIGxkdCA9IHR6LmZyb211dGModWR0KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGR0LmZvbGQsIDApCisgICAgICAgICAgICAgICAgYWR0ID0gdWR0LnJlcGxhY2UodHppbmZvPXRpbWV6b25lLnV0YykuYXN0aW1lem9uZSh0eikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWl2RGF0ZXRpbWVzKGFkdCwgbGR0KQorICAgICAgICAgICAgICAgIHV0Y29mZnNldCA9IGxkdC51dGNvZmZzZXQoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGR0LnJlcGxhY2UodHppbmZvPU5vbmUpLCB1ZHQucmVwbGFjZSh0emluZm89Tm9uZSkgKyB1dGNvZmZzZXQpCisgICAgICAgICAgICAgICAgIyBDcmVhdGUgYSBsb2NhbCB0aW1lIGluc2lkZSB0aGUgZ2FwCisgICAgICAgICAgICAgICAgbGR0ID0gdHouZnJvbXV0YyhkdC5yZXBsYWNlKHR6aW5mbz10eikpIC0gc2hpZnQgKyB4CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGxkdC5yZXBsYWNlKGZvbGQ9MSkudXRjb2Zmc2V0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxkdC5yZXBsYWNlKGZvbGQ9MCkudXRjb2Zmc2V0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBdCAlcy4iICUgbGR0KQorCisgICAgICAgICAgICBmb3IgeCBpbiBbLXRpbWVkZWx0YS5yZXNvbHV0aW9uLCBzaGlmdF06CisgICAgICAgICAgICAgICAgdWR0ID0gZHQgKyB4CisgICAgICAgICAgICAgICAgbGR0ID0gdHouZnJvbXV0Yyh1ZHQucmVwbGFjZSh0emluZm89dHopKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGR0LmZvbGQsIDApCisKKyAgICBkZWYgdGVzdF9zeXN0ZW1fdHJhbnNpdGlvbnMoc2VsZik6CisgICAgICAgIGlmICgnUml5YWRoOCcgaW4gc2VsZi56b25lbmFtZSBvcgorICAgICAgICAgICAgIyBGcm9tIHR6ZGF0YSBORVdTIGZpbGU6CisgICAgICAgICAgICAjIFRoZSBmaWxlcyBzb2xhcjg3LCBzb2xhcjg4LCBhbmQgc29sYXI4OSBhcmUgbm8gbG9uZ2VyIGRpc3RyaWJ1dGVkLgorICAgICAgICAgICAgIyBUaGV5IHdlcmUgYSBuZWdhdGl2ZSBleHBlcmltZW50IC0gdGhhdCBpcywgYSBkZW1vbnN0cmF0aW9uIHRoYXQKKyAgICAgICAgICAgICMgdHogZGF0YSBjYW4gcmVwcmVzZW50IHNvbGFyIHRpbWUgb25seSB3aXRoIHNvbWUgZGlmZmljdWx0eSBhbmQgZXJyb3IuCisgICAgICAgICAgICAjIFRoZWlyIHByZXNlbmNlIGluIHRoZSBkaXN0cmlidXRpb24gY2F1c2VkIGNvbmZ1c2lvbiwgYXMgUml5YWRoCisgICAgICAgICAgICAjIGNpdmlsIHRpbWUgd2FzIGdlbmVyYWxseSBub3Qgc29sYXIgdGltZSBpbiB0aG9zZSB5ZWFycy4KKyAgICAgICAgICAgICAgICBzZWxmLnpvbmVuYW1lLnN0YXJ0c3dpdGgoJ3JpZ2h0LycpKToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIlNraXBwaW5nICVzIiAlIHNlbGYuem9uZW5hbWUpCisgICAgICAgIHR6ID0gc2VsZi50egorICAgICAgICBUWiA9IG9zLmVudmlyb24uZ2V0KCdUWicpCisgICAgICAgIG9zLmVudmlyb25bJ1RaJ10gPSBzZWxmLnpvbmVuYW1lCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIF90aW1lLnR6c2V0KCkKKyAgICAgICAgICAgIGZvciB1ZHQsIHNoaWZ0IGluIHR6LnRyYW5zaXRpb25zKCk6CisgICAgICAgICAgICAgICAgaWYgdWR0LnllYXIgPj0gMjAzNzoKKyAgICAgICAgICAgICAgICAgICAgIyBTeXN0ZW0gc3VwcG9ydCBmb3IgdGltZXMgYXJvdW5kIHRoZSBlbmQgb2YgMzItYml0IHRpbWVfdAorICAgICAgICAgICAgICAgICAgICAjIGFuZCBsYXRlciBpcyBmbGFreSBvbiBtYW55IHN5c3RlbXMuCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgczAgPSAodWR0IC0gZGF0ZXRpbWUoMTk3MCwgMSwgMSkpIC8vIFNFQworICAgICAgICAgICAgICAgIHNzID0gc2hpZnQgLy8gU0VDICAgIyBzaGlmdCBzZWNvbmRzCisgICAgICAgICAgICAgICAgZm9yIHggaW4gWy00MCAqIDM2MDAsIC0yMCozNjAwLCAtMSwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3MgLSAxLCBzcyArIDIwICogMzYwMCwgc3MgKyA0MCAqIDM2MDBdOgorICAgICAgICAgICAgICAgICAgICBzID0gczAgKyB4CisgICAgICAgICAgICAgICAgICAgIHNkdCA9IGRhdGV0aW1lLmZyb210aW1lc3RhbXAocykKKyAgICAgICAgICAgICAgICAgICAgdHpkdCA9IGRhdGV0aW1lLmZyb210aW1lc3RhbXAocywgdHopLnJlcGxhY2UodHppbmZvPU5vbmUpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1aXZEYXRldGltZXMoc2R0LCB0emR0KQorICAgICAgICAgICAgICAgICAgICBzMSA9IHNkdC50aW1lc3RhbXAoKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMsIHMxKQorICAgICAgICAgICAgICAgIGlmIHNzID4gMDogICMgZ2FwCisgICAgICAgICAgICAgICAgICAgICMgQ3JlYXRlIGxvY2FsIHRpbWUgaW5zaWRlIHRoZSBnYXAKKyAgICAgICAgICAgICAgICAgICAgZHQgPSBkYXRldGltZS5mcm9tdGltZXN0YW1wKHMwKSAtIHNoaWZ0IC8gMgorICAgICAgICAgICAgICAgICAgICB0czAgPSBkdC50aW1lc3RhbXAoKQorICAgICAgICAgICAgICAgICAgICB0czEgPSBkdC5yZXBsYWNlKGZvbGQ9MSkudGltZXN0YW1wKCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0czAsIHMwICsgc3MgLyAyKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRzMSwgczAgLSBzcyAvIDIpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBpZiBUWiBpcyBOb25lOgorICAgICAgICAgICAgICAgIGRlbCBvcy5lbnZpcm9uWydUWiddCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG9zLmVudmlyb25bJ1RaJ10gPSBUWgorICAgICAgICAgICAgX3RpbWUudHpzZXQoKQorCisKK2NsYXNzIFpvbmVJbmZvQ29tcGxldGVUZXN0KHVuaXR0ZXN0LlRlc3RTdWl0ZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICB0ZXN0cyA9IFtdCisgICAgICAgIGlmIGlzX3Jlc291cmNlX2VuYWJsZWQoJ3R6ZGF0YScpOgorICAgICAgICAgICAgZm9yIG5hbWUgaW4gWm9uZUluZm8uem9uZW5hbWVzKCk6CisgICAgICAgICAgICAgICAgVGVzdCA9IHR5cGUoJ1pvbmVJbmZvVGVzdFslc10nICUgbmFtZSwgKFpvbmVJbmZvVGVzdCwpLCB7fSkKKyAgICAgICAgICAgICAgICBUZXN0LnpvbmVuYW1lID0gbmFtZQorICAgICAgICAgICAgICAgIGZvciBtZXRob2QgaW4gZGlyKFRlc3QpOgorICAgICAgICAgICAgICAgICAgICBpZiBtZXRob2Quc3RhcnRzd2l0aCgndGVzdF8nKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RzLmFwcGVuZChUZXN0KG1ldGhvZCkpCisgICAgICAgIHN1cGVyKCkuX19pbml0X18odGVzdHMpCisKKyMgSXJhbiBoYWQgYSBzdWItbWludXRlIFVUQyBvZmZzZXQgYmVmb3JlIDE5NDYuCitjbGFzcyBJcmFuVGVzdChab25lSW5mb1Rlc3QpOgorICAgIHpvbmVuYW1lID0gJ0FzaWEvVGVocmFuJworCitkZWYgbG9hZF90ZXN0cyhsb2FkZXIsIHN0YW5kYXJkX3Rlc3RzLCBwYXR0ZXJuKToKKyAgICBzdGFuZGFyZF90ZXN0cy5hZGRUZXN0KFpvbmVJbmZvQ29tcGxldGVUZXN0KCkpCisgICAgcmV0dXJuIHN0YW5kYXJkX3Rlc3RzCisKKwogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2R0cmFjZWRhdGEvYXNzZXJ0X3VzYWJsZS5kIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9hc3NlcnRfdXNhYmxlLmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGIyZDRkYQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvYXNzZXJ0X3VzYWJsZS5kCkBAIC0wLDAgKzEsNSBAQAorQkVHSU4KK3sKKyAgICBwcmludGYoInByb2JlOiBzdWNjZXNzXG4iKTsKKyAgICBleGl0KDApOworfQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZHRyYWNlZGF0YS9hc3NlcnRfdXNhYmxlLnN0cCBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvYXNzZXJ0X3VzYWJsZS5zdHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODhlN2U2OAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvYXNzZXJ0X3VzYWJsZS5zdHAKQEAgLTAsMCArMSw1IEBACitwcm9iZSBiZWdpbgoreworICBwcmludGxuKCJwcm9iZTogc3VjY2VzcyIpCisgIGV4aXQgKCkKK30KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2R0cmFjZWRhdGEvY2FsbF9zdGFjay5kIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9jYWxsX3N0YWNrLmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDUwZTkzOQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvY2FsbF9zdGFjay5kCkBAIC0wLDAgKzEsMzEgQEAKK3NlbGYgaW50IGluZGVudDsKKworcHl0aG9uJHRhcmdldDo6OmZ1bmN0aW9uLWVudHJ5CisvY29weWluc3RyKGFyZzEpID09ICJzdGFydCIvCit7CisgICAgc2VsZi0+dHJhY2UgPSAxOworfQorCitweXRob24kdGFyZ2V0Ojo6ZnVuY3Rpb24tZW50cnkKKy9zZWxmLT50cmFjZS8KK3sKKyAgICBwcmludGYoIiVkXHQlKnM6IiwgdGltZXN0YW1wLCAxNSwgcHJvYmVuYW1lKTsKKyAgICBwcmludGYoIiUqcyIsIHNlbGYtPmluZGVudCwgIiIpOyAKKyAgICBwcmludGYoIiVzOiVzOiVkXG4iLCBiYXNlbmFtZShjb3B5aW5zdHIoYXJnMCkpLCBjb3B5aW5zdHIoYXJnMSksIGFyZzIpOworICAgIHNlbGYtPmluZGVudCsrOworfQorCitweXRob24kdGFyZ2V0Ojo6ZnVuY3Rpb24tcmV0dXJuCisvc2VsZi0+dHJhY2UvCit7CisgICAgc2VsZi0+aW5kZW50LS07CisgICAgcHJpbnRmKCIlZFx0JSpzOiIsIHRpbWVzdGFtcCwgMTUsIHByb2JlbmFtZSk7CisgICAgcHJpbnRmKCIlKnMiLCBzZWxmLT5pbmRlbnQsICIiKTsgCisgICAgcHJpbnRmKCIlczolczolZFxuIiwgYmFzZW5hbWUoY29weWluc3RyKGFyZzApKSwgY29weWluc3RyKGFyZzEpLCBhcmcyKTsKK30KKworcHl0aG9uJHRhcmdldDo6OmZ1bmN0aW9uLXJldHVybgorL2NvcHlpbnN0cihhcmcxKSA9PSAic3RhcnQiLworeworICAgIHNlbGYtPnRyYWNlID0gMDsKK30KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2R0cmFjZWRhdGEvY2FsbF9zdGFjay5kLmV4cGVjdGVkIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9jYWxsX3N0YWNrLmQuZXhwZWN0ZWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjc4NDlkMQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvY2FsbF9zdGFjay5kLmV4cGVjdGVkCkBAIC0wLDAgKzEsMTggQEAKKyBmdW5jdGlvbi1lbnRyeTpjYWxsX3N0YWNrLnB5OnN0YXJ0OjIzCisgZnVuY3Rpb24tZW50cnk6IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMToxCisgZnVuY3Rpb24tZW50cnk6ICBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzM6OQorZnVuY3Rpb24tcmV0dXJuOiAgY2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjEwCitmdW5jdGlvbi1yZXR1cm46IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMToyCisgZnVuY3Rpb24tZW50cnk6IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMjo1CisgZnVuY3Rpb24tZW50cnk6ICBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzE6MQorIGZ1bmN0aW9uLWVudHJ5OiAgIGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMzo5CitmdW5jdGlvbi1yZXR1cm46ICAgY2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjEwCitmdW5jdGlvbi1yZXR1cm46ICBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzE6MgorZnVuY3Rpb24tcmV0dXJuOiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzI6NgorIGZ1bmN0aW9uLWVudHJ5OiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzM6OQorZnVuY3Rpb24tcmV0dXJuOiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzM6MTAKKyBmdW5jdGlvbi1lbnRyeTogY2FsbF9zdGFjay5weTpmdW5jdGlvbl80OjEzCitmdW5jdGlvbi1yZXR1cm46IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fNDoxNAorIGZ1bmN0aW9uLWVudHJ5OiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzU6MTgKK2Z1bmN0aW9uLXJldHVybjogY2FsbF9zdGFjay5weTpmdW5jdGlvbl81OjIxCitmdW5jdGlvbi1yZXR1cm46Y2FsbF9zdGFjay5weTpzdGFydDoyOApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZHRyYWNlZGF0YS9jYWxsX3N0YWNrLnB5IGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9jYWxsX3N0YWNrLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlOWYzYWUKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2NhbGxfc3RhY2sucHkKQEAgLTAsMCArMSwzMCBAQAorZGVmIGZ1bmN0aW9uXzEoKToKKyAgICBmdW5jdGlvbl8zKDEsIDIpCisKKyMgQ2hlY2sgc3RhY2t0cmFjZQorZGVmIGZ1bmN0aW9uXzIoKToKKyAgICBmdW5jdGlvbl8xKCkKKworIyBDQUxMX0ZVTkNUSU9OX1ZBUgorZGVmIGZ1bmN0aW9uXzMoZHVtbXksIGR1bW15Mik6CisgICAgcGFzcworCisjIENBTExfRlVOQ1RJT05fS1cKK2RlZiBmdW5jdGlvbl80KCoqZHVtbXkpOgorICAgIHJldHVybiAxCisgICAgcmV0dXJuIDIgICMgdW5yZWFjaGFibGUKKworIyBDQUxMX0ZVTkNUSU9OX1ZBUl9LVworZGVmIGZ1bmN0aW9uXzUoZHVtbXksIGR1bW15MiwgKipkdW1teTMpOgorICAgIGlmIEZhbHNlOgorICAgICAgICByZXR1cm4gNworICAgIHJldHVybiA4CisKK2RlZiBzdGFydCgpOgorICAgIGZ1bmN0aW9uXzEoKQorICAgIGZ1bmN0aW9uXzIoKQorICAgIGZ1bmN0aW9uXzMoMSwgMikKKyAgICBmdW5jdGlvbl80KHRlc3Q9NDIpCisgICAgZnVuY3Rpb25fNSgqKDEsIDIpLCAqKnsidGVzdCI6IDQyfSkKKworc3RhcnQoKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZHRyYWNlZGF0YS9jYWxsX3N0YWNrLnN0cCBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvY2FsbF9zdGFjay5zdHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQwODJjMgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvY2FsbF9zdGFjay5zdHAKQEAgLTAsMCArMSw0MSBAQAorZ2xvYmFsIHRyYWNpbmcKKworZnVuY3Rpb24gYmFzZW5hbWU6c3RyaW5nKHBhdGg6c3RyaW5nKQoreworICAgIGxhc3RfdG9rZW4gPSB0b2tlbiA9IHRva2VuaXplKHBhdGgsICIvIik7CisgICAgd2hpbGUgKHRva2VuICE9ICIiKSB7CisgICAgICAgIGxhc3RfdG9rZW4gPSB0b2tlbjsKKyAgICAgICAgdG9rZW4gPSB0b2tlbml6ZSgiIiwgIi8iKTsKKyAgICB9CisgICAgcmV0dXJuIGxhc3RfdG9rZW47Cit9CisKK3Byb2JlIHByb2Nlc3MubWFyaygiZnVuY3Rpb25fX2VudHJ5IikKK3sKKyAgICBmdW5jbmFtZSA9IHVzZXJfc3RyaW5nKCRhcmcyKTsKKworICAgIGlmIChmdW5jbmFtZSA9PSAic3RhcnQiKSB7CisgICAgICAgIHRyYWNpbmcgPSAxOworICAgIH0KK30KKworcHJvYmUgcHJvY2Vzcy5tYXJrKCJmdW5jdGlvbl9fZW50cnkiKSwgcHJvY2Vzcy5tYXJrKCJmdW5jdGlvbl9fcmV0dXJuIikKK3sKKyAgICBmaWxlbmFtZSA9IHVzZXJfc3RyaW5nKCRhcmcxKTsKKyAgICBmdW5jbmFtZSA9IHVzZXJfc3RyaW5nKCRhcmcyKTsKKyAgICBsaW5lbm8gPSAkYXJnMzsKKworICAgIGlmICh0cmFjaW5nKSB7CisgICAgICAgIHByaW50ZigiJWRcdCVzOiVzOiVzOiVkXG4iLCBnZXR0aW1lb2ZkYXlfdXMoKSwgJCRuYW1lLAorICAgICAgICAgICAgICAgYmFzZW5hbWUoZmlsZW5hbWUpLCBmdW5jbmFtZSwgbGluZW5vKTsKKyAgICB9Cit9CisKK3Byb2JlIHByb2Nlc3MubWFyaygiZnVuY3Rpb25fX3JldHVybiIpCit7CisgICAgZnVuY25hbWUgPSB1c2VyX3N0cmluZygkYXJnMik7CisKKyAgICBpZiAoZnVuY25hbWUgPT0gInN0YXJ0IikgeworICAgICAgICB0cmFjaW5nID0gMDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9kdHJhY2VkYXRhL2NhbGxfc3RhY2suc3RwLmV4cGVjdGVkIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9jYWxsX3N0YWNrLnN0cC5leHBlY3RlZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMmNmMzk2Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9jYWxsX3N0YWNrLnN0cC5leHBlY3RlZApAQCAtMCwwICsxLDE0IEBACitmdW5jdGlvbl9fZW50cnk6Y2FsbF9zdGFjay5weTpzdGFydDoyMworZnVuY3Rpb25fX2VudHJ5OmNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMToxCitmdW5jdGlvbl9fcmV0dXJuOmNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMToyCitmdW5jdGlvbl9fZW50cnk6Y2FsbF9zdGFjay5weTpmdW5jdGlvbl8yOjUKK2Z1bmN0aW9uX19lbnRyeTpjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzE6MQorZnVuY3Rpb25fX3JldHVybjpjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzE6MgorZnVuY3Rpb25fX3JldHVybjpjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzI6NgorZnVuY3Rpb25fX2VudHJ5OmNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMzo5CitmdW5jdGlvbl9fcmV0dXJuOmNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMzoxMAorZnVuY3Rpb25fX2VudHJ5OmNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fNDoxMworZnVuY3Rpb25fX3JldHVybjpjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzQ6MTQKK2Z1bmN0aW9uX19lbnRyeTpjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzU6MTgKK2Z1bmN0aW9uX19yZXR1cm46Y2FsbF9zdGFjay5weTpmdW5jdGlvbl81OjIxCitmdW5jdGlvbl9fcmV0dXJuOmNhbGxfc3RhY2sucHk6c3RhcnQ6MjgKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2R0cmFjZWRhdGEvZ2MuZCBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvZ2MuZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDkxNDg3Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9nYy5kCkBAIC0wLDAgKzEsMTggQEAKK3B5dGhvbiR0YXJnZXQ6OjpmdW5jdGlvbi1lbnRyeQorL2NvcHlpbnN0cihhcmcxKSA9PSAic3RhcnQiLworeworICAgIHNlbGYtPnRyYWNlID0gMTsKK30KKworcHl0aG9uJHRhcmdldDo6OmdjLXN0YXJ0LAorcHl0aG9uJHRhcmdldDo6OmdjLWRvbmUKKy9zZWxmLT50cmFjZS8KK3sKKyAgICBwcmludGYoIiVkXHQlczolbGRcbiIsIHRpbWVzdGFtcCwgcHJvYmVuYW1lLCBhcmcwKTsKK30KKworcHl0aG9uJHRhcmdldDo6OmZ1bmN0aW9uLXJldHVybgorL2NvcHlpbnN0cihhcmcxKSA9PSAic3RhcnQiLworeworICAgIHNlbGYtPnRyYWNlID0gMDsKK30KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2R0cmFjZWRhdGEvZ2MuZC5leHBlY3RlZCBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvZ2MuZC5leHBlY3RlZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTVhYzJhCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9nYy5kLmV4cGVjdGVkCkBAIC0wLDAgKzEsOCBAQAorZ2Mtc3RhcnQ6MAorZ2MtZG9uZTowCitnYy1zdGFydDoxCitnYy1kb25lOjAKK2djLXN0YXJ0OjIKK2djLWRvbmU6MAorZ2Mtc3RhcnQ6MgorZ2MtZG9uZToxCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9kdHJhY2VkYXRhL2djLnB5IGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9nYy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNDRhNzgzCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9nYy5weQpAQCAtMCwwICsxLDEzIEBACitpbXBvcnQgZ2MKKworZGVmIHN0YXJ0KCk6CisgICAgZ2MuY29sbGVjdCgwKQorICAgIGdjLmNvbGxlY3QoMSkKKyAgICBnYy5jb2xsZWN0KDIpCisgICAgbCA9IFtdCisgICAgbC5hcHBlbmQobCkKKyAgICBkZWwgbAorICAgIGdjLmNvbGxlY3QoMikKKworZ2MuY29sbGVjdCgpCitzdGFydCgpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9kdHJhY2VkYXRhL2djLnN0cCBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvZ2Muc3RwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2MmM2ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2djLnN0cApAQCAtMCwwICsxLDI2IEBACitnbG9iYWwgdHJhY2luZworCitwcm9iZSBwcm9jZXNzLm1hcmsoImZ1bmN0aW9uX19lbnRyeSIpCit7CisgICAgZnVuY25hbWUgPSB1c2VyX3N0cmluZygkYXJnMik7CisKKyAgICBpZiAoZnVuY25hbWUgPT0gInN0YXJ0IikgeworICAgICAgICB0cmFjaW5nID0gMTsKKyAgICB9Cit9CisKK3Byb2JlIHByb2Nlc3MubWFyaygiZ2NfX3N0YXJ0IiksIHByb2Nlc3MubWFyaygiZ2NfX2RvbmUiKQoreworICAgIGlmICh0cmFjaW5nKSB7CisgICAgICAgIHByaW50ZigiJWRcdCVzOiVsZFxuIiwgZ2V0dGltZW9mZGF5X3VzKCksICQkbmFtZSwgJGFyZzEpOworICAgIH0KK30KKworcHJvYmUgcHJvY2Vzcy5tYXJrKCJmdW5jdGlvbl9fcmV0dXJuIikKK3sKKyAgICBmdW5jbmFtZSA9IHVzZXJfc3RyaW5nKCRhcmcyKTsKKworICAgIGlmIChmdW5jbmFtZSA9PSAic3RhcnQiKSB7CisgICAgICAgIHRyYWNpbmcgPSAwOworICAgIH0KK30KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2R0cmFjZWRhdGEvZ2Muc3RwLmV4cGVjdGVkIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9nYy5zdHAuZXhwZWN0ZWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2U2ZTYyMgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvZ2Muc3RwLmV4cGVjdGVkCkBAIC0wLDAgKzEsOCBAQAorZ2NfX3N0YXJ0OjAKK2djX19kb25lOjAKK2djX19zdGFydDoxCitnY19fZG9uZTowCitnY19fc3RhcnQ6MgorZ2NfX2RvbmU6MAorZ2NfX3N0YXJ0OjIKK2djX19kb25lOjEKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2R0cmFjZWRhdGEvaW5zdGFuY2UucHkgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2luc3RhbmNlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxNDIxMzcKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2luc3RhbmNlLnB5CkBAIC0wLDAgKzEsMjQgQEAKK2ltcG9ydCBnYworCitjbGFzcyBvbGRfc3R5bGVfY2xhc3MoKToKKyAgICBwYXNzCitjbGFzcyBuZXdfc3R5bGVfY2xhc3Mob2JqZWN0KToKKyAgICBwYXNzCisKK2EgPSBvbGRfc3R5bGVfY2xhc3MoKQorZGVsIGEKK2djLmNvbGxlY3QoKQorYiA9IG5ld19zdHlsZV9jbGFzcygpCitkZWwgYgorZ2MuY29sbGVjdCgpCisKK2EgPSBvbGRfc3R5bGVfY2xhc3MoKQorZGVsIG9sZF9zdHlsZV9jbGFzcworZ2MuY29sbGVjdCgpCitiID0gbmV3X3N0eWxlX2NsYXNzKCkKK2RlbCBuZXdfc3R5bGVfY2xhc3MKK2djLmNvbGxlY3QoKQorZGVsIGEKK2djLmNvbGxlY3QoKQorZGVsIGIKK2djLmNvbGxlY3QoKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZHRyYWNlZGF0YS9saW5lLmQgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2xpbmUuZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wM2YyMmRiCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9saW5lLmQKQEAgLTAsMCArMSw3IEBACitweXRob24kdGFyZ2V0Ojo6bGluZQorLyhjb3B5aW5zdHIoYXJnMSk9PSJ0ZXN0X2xpbmUiKS8KK3sKKyAgICBwcmludGYoIiVkXHQlczolczolczolZFxuIiwgdGltZXN0YW1wLAorICAgICAgICBwcm9iZW5hbWUsIGJhc2VuYW1lKGNvcHlpbnN0cihhcmcwKSksCisgICAgICAgIGNvcHlpbnN0cihhcmcxKSwgYXJnMik7Cit9CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9kdHJhY2VkYXRhL2xpbmUuZC5leHBlY3RlZCBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvbGluZS5kLmV4cGVjdGVkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliMTZjZTcKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2xpbmUuZC5leHBlY3RlZApAQCAtMCwwICsxLDIwIEBACitsaW5lOmxpbmUucHk6dGVzdF9saW5lOjIKK2xpbmU6bGluZS5weTp0ZXN0X2xpbmU6MworbGluZTpsaW5lLnB5OnRlc3RfbGluZTo0CitsaW5lOmxpbmUucHk6dGVzdF9saW5lOjUKK2xpbmU6bGluZS5weTp0ZXN0X2xpbmU6NgorbGluZTpsaW5lLnB5OnRlc3RfbGluZTo3CitsaW5lOmxpbmUucHk6dGVzdF9saW5lOjgKK2xpbmU6bGluZS5weTp0ZXN0X2xpbmU6OQorbGluZTpsaW5lLnB5OnRlc3RfbGluZToxMAorbGluZTpsaW5lLnB5OnRlc3RfbGluZToxMQorbGluZTpsaW5lLnB5OnRlc3RfbGluZTo0CitsaW5lOmxpbmUucHk6dGVzdF9saW5lOjUKK2xpbmU6bGluZS5weTp0ZXN0X2xpbmU6NgorbGluZTpsaW5lLnB5OnRlc3RfbGluZTo3CitsaW5lOmxpbmUucHk6dGVzdF9saW5lOjgKK2xpbmU6bGluZS5weTp0ZXN0X2xpbmU6MTAKK2xpbmU6bGluZS5weTp0ZXN0X2xpbmU6MTEKK2xpbmU6bGluZS5weTp0ZXN0X2xpbmU6NAorbGluZTpsaW5lLnB5OnRlc3RfbGluZToxMgorbGluZTpsaW5lLnB5OnRlc3RfbGluZToxMwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZHRyYWNlZGF0YS9saW5lLnB5IGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9saW5lLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5MzBmZjMKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2xpbmUucHkKQEAgLTAsMCArMSwxNyBAQAorZGVmIHRlc3RfbGluZSgpOgorICAgIGEgPSAxCisgICAgcHJpbnQoJyMgUHJlYW1ibGUnLCBhKQorICAgIGZvciBpIGluIHJhbmdlKDIpOgorICAgICAgICBhID0gaQorICAgICAgICBiID0gaSsyCisgICAgICAgIGMgPSBpKzMKKyAgICAgICAgaWYgYyA8IDQ6CisgICAgICAgICAgICBhID0gYworICAgICAgICBkID0gYSArIGIgK2MKKyAgICAgICAgcHJpbnQoJyMnLCBhLCBiLCBjLCBkKQorICAgIGEgPSAxCisgICAgcHJpbnQoJyMgRXBpbG9ndWUnLCBhKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdGVzdF9saW5lKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2VpbnRyZGF0YS9laW50cl90ZXN0ZXIucHkgYi9MaWIvdGVzdC9laW50cmRhdGEvZWludHJfdGVzdGVyLnB5CmluZGV4IGUzZjFhYTUuLmQxOTRlNzcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L2VpbnRyZGF0YS9laW50cl90ZXN0ZXIucHkKKysrIGIvTGliL3Rlc3QvZWludHJkYXRhL2VpbnRyX3Rlc3Rlci5weQpAQCAtOSw3ICs5LDcgQEAKICIiIgogCiBpbXBvcnQgY29udGV4dGxpYgotaW1wb3J0IGlvCitpbXBvcnQgZmF1bHRoYW5kbGVyCiBpbXBvcnQgb3MKIGltcG9ydCBzZWxlY3QKIGltcG9ydCBzaWduYWwKQEAgLTIwLDYgKzIwLDcgQEAKIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2FuZHJvaWRfbm90X3Jvb3QgPSBzdXBwb3J0LmFuZHJvaWRfbm90X3Jvb3QKIAogQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKIGRlZiBraWxsX29uX2Vycm9yKHByb2MpOgpAQCAtNTAsNiArNTEsMTAgQEAKICAgICAgICAgc2lnbmFsLnNldGl0aW1lcihzaWduYWwuSVRJTUVSX1JFQUwsIGNscy5zaWduYWxfZGVsYXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xzLnNpZ25hbF9wZXJpb2QpCiAKKyAgICAgICAgIyBJc3N1ZSAjMjUyNzc6IFVzZSBmYXVsdGhhbmRsZXIgdG8gdHJ5IHRvIGRlYnVnIGEgaGFuZyBvbiBGcmVlQlNECisgICAgICAgIGlmIGhhc2F0dHIoZmF1bHRoYW5kbGVyLCAnZHVtcF90cmFjZWJhY2tfbGF0ZXInKToKKyAgICAgICAgICAgIGZhdWx0aGFuZGxlci5kdW1wX3RyYWNlYmFja19sYXRlcigxMCAqIDYwLCBleGl0PVRydWUpCisKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgc3RvcF9hbGFybShjbHMpOgogICAgICAgICBzaWduYWwuc2V0aXRpbWVyKHNpZ25hbC5JVElNRVJfUkVBTCwgMCwgMCkKQEAgLTU4LDYgKzYzLDggQEAKICAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgogICAgICAgICBjbHMuc3RvcF9hbGFybSgpCiAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0FMUk0sIGNscy5vcmlnX2hhbmRsZXIpCisgICAgICAgIGlmIGhhc2F0dHIoZmF1bHRoYW5kbGVyLCAnY2FuY2VsX2R1bXBfdHJhY2ViYWNrX2xhdGVyJyk6CisgICAgICAgICAgICBmYXVsdGhhbmRsZXIuY2FuY2VsX2R1bXBfdHJhY2ViYWNrX2xhdGVyKCkKIAogICAgIGRlZiBzdWJwcm9jZXNzKHNlbGYsICphcmdzLCAqKmt3KToKICAgICAgICAgY21kX2FyZ3MgPSAoc3lzLmV4ZWN1dGFibGUsICctYycpICsgYXJncwpAQCAtNzcsNiArODQsOSBAQAogICAgICAgICBwcm9jZXNzZXMgPSBbc2VsZi5uZXdfc2xlZXBfcHJvY2VzcygpIGZvciBfIGluIHJhbmdlKG51bSldCiAgICAgICAgIGZvciBfIGluIHJhbmdlKG51bSk6CiAgICAgICAgICAgICB3YWl0X2Z1bmMoKQorICAgICAgICAjIENhbGwgdGhlIFBvcGVuIG1ldGhvZCB0byBhdm9pZCBhIFJlc291cmNlV2FybmluZworICAgICAgICBmb3IgcHJvYyBpbiBwcm9jZXNzZXM6CisgICAgICAgICAgICBwcm9jLndhaXQoKQogCiAgICAgZGVmIHRlc3Rfd2FpdChzZWxmKToKICAgICAgICAgc2VsZi5fdGVzdF93YWl0X211bHRpcGxlKG9zLndhaXQpCkBAIC04OCw2ICs5OCw4IEBACiAgICAgZGVmIF90ZXN0X3dhaXRfc2luZ2xlKHNlbGYsIHdhaXRfZnVuYyk6CiAgICAgICAgIHByb2MgPSBzZWxmLm5ld19zbGVlcF9wcm9jZXNzKCkKICAgICAgICAgd2FpdF9mdW5jKHByb2MucGlkKQorICAgICAgICAjIENhbGwgdGhlIFBvcGVuIG1ldGhvZCB0byBhdm9pZCBhIFJlc291cmNlV2FybmluZworICAgICAgICBwcm9jLndhaXQoKQogCiAgICAgZGVmIHRlc3Rfd2FpdHBpZChzZWxmKToKICAgICAgICAgc2VsZi5fdGVzdF93YWl0X3NpbmdsZShsYW1iZGEgcGlkOiBvcy53YWl0cGlkKHBpZCwgMCkpCkBAIC0zMDAsNiArMzEyLDcgQEAKICAgICAjIGh0dHBzOi8vYnVncy5mcmVlYnNkLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjAzMTYyCiAgICAgQHN1cHBvcnQucmVxdWlyZXNfZnJlZWJzZF92ZXJzaW9uKDEwLCAzKQogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdta2ZpZm8nKSwgJ25lZWRzIG1rZmlmbygpJykKKyAgICBAdW5pdHRlc3Quc2tpcElmKGFuZHJvaWRfbm90X3Jvb3QsICJta2ZpZm8gbm90IGFsbG93ZWQsIG5vbiByb290IHVzZXIiKQogICAgIGRlZiBfdGVzdF9vcGVuKHNlbGYsIGRvX29wZW5fY2xvc2VfcmVhZGVyLCBkb19vcGVuX2Nsb3NlX3dyaXRlcik6CiAgICAgICAgIGZpbGVuYW1lID0gc3VwcG9ydC5URVNURk4KIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZXhjZXB0aW9uX2hpZXJhcmNoeS50eHQgYi9MaWIvdGVzdC9leGNlcHRpb25faGllcmFyY2h5LnR4dAppbmRleCAwNTEzNzY1Li43MzMzYjJhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9leGNlcHRpb25faGllcmFyY2h5LnR4dAorKysgYi9MaWIvdGVzdC9leGNlcHRpb25faGllcmFyY2h5LnR4dApAQCAtMTQsNiArMTQsNyBAQAogICAgICAgKy0tIEJ1ZmZlckVycm9yCiAgICAgICArLS0gRU9GRXJyb3IKICAgICAgICstLSBJbXBvcnRFcnJvcgorICAgICAgICAgICArLS0gTW9kdWxlTm90Rm91bmRFcnJvcgogICAgICAgKy0tIExvb2t1cEVycm9yCiAgICAgICB8ICAgICstLSBJbmRleEVycm9yCiAgICAgICB8ICAgICstLSBLZXlFcnJvcgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbGlicmVncnRlc3QvX19pbml0X18ucHkgYi9MaWIvdGVzdC9saWJyZWdydGVzdC9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YmEwZTZlCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvbGlicmVncnRlc3QvX19pbml0X18ucHkKQEAgLTAsMCArMSw1IEBACisjIFdlIGltcG9ydCBpbXBvcnRsaWIgKkFTQVAqIGluIG9yZGVyIHRvIHRlc3QgIzE1Mzg2CitpbXBvcnQgaW1wb3J0bGliCisKK2Zyb20gdGVzdC5saWJyZWdydGVzdC5jbWRsaW5lIGltcG9ydCBfcGFyc2VfYXJncywgUkVTT1VSQ0VfTkFNRVMKK2Zyb20gdGVzdC5saWJyZWdydGVzdC5tYWluIGltcG9ydCBtYWluCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9saWJyZWdydGVzdC9jbWRsaW5lLnB5IGIvTGliL3Rlc3QvbGlicmVncnRlc3QvY21kbGluZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjIxZjVmCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvbGlicmVncnRlc3QvY21kbGluZS5weQpAQCAtMCwwICsxLDM0NyBAQAoraW1wb3J0IGFyZ3BhcnNlCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorCisKK1VTQUdFID0gIiIiXAorcHl0aG9uIC1tIHRlc3QgW29wdGlvbnNdIFt0ZXN0X25hbWUxIFt0ZXN0X25hbWUyIC4uLl1dCitweXRob24gcGF0aC90by9MaWIvdGVzdC9yZWdydGVzdC5weSBbb3B0aW9uc10gW3Rlc3RfbmFtZTEgW3Rlc3RfbmFtZTIgLi4uXV0KKyIiIgorCitERVNDUklQVElPTiA9ICIiIlwKK1J1biBQeXRob24gcmVncmVzc2lvbiB0ZXN0cy4KKworSWYgbm8gYXJndW1lbnRzIG9yIG9wdGlvbnMgYXJlIHByb3ZpZGVkLCBmaW5kcyBhbGwgZmlsZXMgbWF0Y2hpbmcKK3RoZSBwYXR0ZXJuICJ0ZXN0XyoiIGluIHRoZSBMaWIvdGVzdCBzdWJkaXJlY3RvcnkgYW5kIHJ1bnMKK3RoZW0gaW4gYWxwaGFiZXRpY2FsIG9yZGVyIChidXQgc2VlIC1NIGFuZCAtdSwgYmVsb3csIGZvciBleGNlcHRpb25zKS4KKworRm9yIG1vcmUgcmlnb3JvdXMgdGVzdGluZywgaXQgaXMgdXNlZnVsIHRvIHVzZSB0aGUgZm9sbG93aW5nCitjb21tYW5kIGxpbmU6CisKK3B5dGhvbiAtRSAtV2QgLW0gdGVzdCBbb3B0aW9uc10gW3Rlc3RfbmFtZTEgLi4uXQorIiIiCisKK0VQSUxPRyA9ICIiIlwKK0FkZGl0aW9uYWwgb3B0aW9uIGRldGFpbHM6CisKKy1yIHJhbmRvbWl6ZXMgdGVzdCBleGVjdXRpb24gb3JkZXIuIFlvdSBjYW4gdXNlIC0tcmFuZHNlZWQ9aW50IHRvIHByb3ZpZGUgYW4KK2ludCBzZWVkIHZhbHVlIGZvciB0aGUgcmFuZG9taXplcjsgdGhpcyBpcyB1c2VmdWwgZm9yIHJlcHJvZHVjaW5nIHRyb3VibGVzb21lCit0ZXN0IG9yZGVycy4KKworLXMgT24gdGhlIGZpcnN0IGludm9jYXRpb24gb2YgcmVncnRlc3QgdXNpbmcgLXMsIHRoZSBmaXJzdCB0ZXN0IGZpbGUgZm91bmQKK29yIHRoZSBmaXJzdCB0ZXN0IGZpbGUgZ2l2ZW4gb24gdGhlIGNvbW1hbmQgbGluZSBpcyBydW4sIGFuZCB0aGUgbmFtZSBvZgordGhlIG5leHQgdGVzdCBpcyByZWNvcmRlZCBpbiBhIGZpbGUgbmFtZWQgcHluZXh0dGVzdC4gIElmIHJ1biBmcm9tIHRoZQorUHl0aG9uIGJ1aWxkIGRpcmVjdG9yeSwgcHluZXh0dGVzdCBpcyBsb2NhdGVkIGluIHRoZSAnYnVpbGQnIHN1YmRpcmVjdG9yeSwKK290aGVyd2lzZSBpdCBpcyBsb2NhdGVkIGluIHRlbXBmaWxlLmdldHRlbXBkaXIoKS4gIE9uIHN1YnNlcXVlbnQgcnVucywKK3RoZSB0ZXN0IGluIHB5bmV4dHRlc3QgaXMgcnVuLCBhbmQgdGhlIG5leHQgdGVzdCBpcyB3cml0dGVuIHRvIHB5bmV4dHRlc3QuCitXaGVuIHRoZSBsYXN0IHRlc3QgaGFzIGJlZW4gcnVuLCBweW5leHR0ZXN0IGlzIGRlbGV0ZWQuICBJbiB0aGlzIHdheSBpdAoraXMgcG9zc2libGUgdG8gc2luZ2xlIHN0ZXAgdGhyb3VnaCB0aGUgdGVzdCBmaWxlcy4gIFRoaXMgaXMgdXNlZnVsIHdoZW4KK2RvaW5nIG1lbW9yeSBhbmFseXNpcyBvbiB0aGUgUHl0aG9uIGludGVycHJldGVyLCB3aGljaCBwcm9jZXNzIHRlbmRzIHRvCitjb25zdW1lIHRvbyBtYW55IHJlc291cmNlcyB0byBydW4gdGhlIGZ1bGwgcmVncmVzc2lvbiB0ZXN0IG5vbi1zdG9wLgorCistUyBpcyB1c2VkIHRvIGNvbnRpbnVlIHJ1bm5pbmcgdGVzdHMgYWZ0ZXIgYW4gYWJvcnRlZCBydW4uICBJdCB3aWxsCittYWludGFpbiB0aGUgb3JkZXIgYSBzdGFuZGFyZCBydW4gKGllLCB0aGlzIGFzc3VtZXMgLXIgaXMgbm90IHVzZWQpLgorVGhpcyBpcyB1c2VmdWwgYWZ0ZXIgdGhlIHRlc3RzIGhhdmUgcHJlbWF0dXJlbHkgc3RvcHBlZCBmb3Igc29tZSBleHRlcm5hbAorcmVhc29uIGFuZCB5b3Ugd2FudCB0byBzdGFydCBydW5uaW5nIGZyb20gd2hlcmUgeW91IGxlZnQgb2ZmIHJhdGhlcgordGhhbiBzdGFydGluZyBmcm9tIHRoZSBiZWdpbm5pbmcuCisKKy1mIHJlYWRzIHRoZSBuYW1lcyBvZiB0ZXN0cyBmcm9tIHRoZSBmaWxlIGdpdmVuIGFzIGYncyBhcmd1bWVudCwgb25lCitvciBtb3JlIHRlc3QgbmFtZXMgcGVyIGxpbmUuICBXaGl0ZXNwYWNlIGlzIGlnbm9yZWQuICBCbGFuayBsaW5lcyBhbmQKK2xpbmVzIGJlZ2lubmluZyB3aXRoICcjJyBhcmUgaWdub3JlZC4gIFRoaXMgaXMgZXNwZWNpYWxseSB1c2VmdWwgZm9yCit3aGl0dGxpbmcgZG93biBmYWlsdXJlcyBpbnZvbHZpbmcgaW50ZXJhY3Rpb25zIGFtb25nIHRlc3RzLgorCistTCBjYXVzZXMgdGhlIGxlYWtzKDEpIGNvbW1hbmQgdG8gYmUgcnVuIGp1c3QgYmVmb3JlIGV4aXQgaWYgaXQgZXhpc3RzLgorbGVha3MoMSkgaXMgYXZhaWxhYmxlIG9uIE1hYyBPUyBYIGFuZCBwcmVzdW1hYmx5IG9uIHNvbWUgb3RoZXIKK0ZyZWVCU0QtZGVyaXZlZCBzeXN0ZW1zLgorCistUiBydW5zIGVhY2ggdGVzdCBzZXZlcmFsIHRpbWVzIGFuZCBleGFtaW5lcyBzeXMuZ2V0dG90YWxyZWZjb3VudCgpIHRvCitzZWUgaWYgdGhlIHRlc3QgYXBwZWFycyB0byBiZSBsZWFraW5nIHJlZmVyZW5jZXMuICBUaGUgYXJndW1lbnQgc2hvdWxkCitiZSBvZiB0aGUgZm9ybSBzdGFiOnJ1bjpmbmFtZSB3aGVyZSAnc3RhYicgaXMgdGhlIG51bWJlciBvZiB0aW1lcyB0aGUKK3Rlc3QgaXMgcnVuIHRvIGxldCBnZXR0b3RhbHJlZmNvdW50IHNldHRsZSBkb3duLCAncnVuJyBpcyB0aGUgbnVtYmVyCitvZiB0aW1lcyBmdXJ0aGVyIGl0IGlzIHJ1biBhbmQgJ2ZuYW1lJyBpcyB0aGUgbmFtZSBvZiB0aGUgZmlsZSB0aGUKK3JlcG9ydHMgYXJlIHdyaXR0ZW4gdG8uICBUaGVzZSBwYXJhbWV0ZXJzIGFsbCBoYXZlIGRlZmF1bHRzICg1LCA0IGFuZAorInJlZmxvZy50eHQiIHJlc3BlY3RpdmVseSksIGFuZCB0aGUgbWluaW1hbCBpbnZvY2F0aW9uIGlzICctUiA6Jy4KKworLU0gcnVucyB0ZXN0cyB0aGF0IHJlcXVpcmUgYW4gZXhvcmJpdGFudCBhbW91bnQgb2YgbWVtb3J5LiBUaGVzZSB0ZXN0cwordHlwaWNhbGx5IHRyeSB0byBhc2NlcnRhaW4gY29udGFpbmVycyBrZWVwIHdvcmtpbmcgd2hlbiBjb250YWluaW5nIG1vcmUgdGhhbgorMiBiaWxsaW9uIG9iamVjdHMsIHdoaWNoIG9ubHkgd29ya3Mgb24gNjQtYml0IHN5c3RlbXMuIFRoZXJlIGFyZSBhbHNvIHNvbWUKK3Rlc3RzIHRoYXQgdHJ5IHRvIGV4aGF1c3QgdGhlIGFkZHJlc3Mgc3BhY2Ugb2YgdGhlIHByb2Nlc3MsIHdoaWNoIG9ubHkgbWFrZXMKK3NlbnNlIG9uIDMyLWJpdCBzeXN0ZW1zIHdpdGggYXQgbGVhc3QgMkdiIG9mIG1lbW9yeS4gVGhlIHBhc3NlZC1pbiBtZW1saW1pdCwKK3doaWNoIGlzIGEgc3RyaW5nIGluIHRoZSBmb3JtIG9mICcyLjVHYicsIGRldGVybWluZXMgaG93bXVjaCBtZW1vcnkgdGhlCit0ZXN0cyB3aWxsIGxpbWl0IHRoZW1zZWx2ZXMgdG8gKGJ1dCB0aGV5IG1heSBnbyBzbGlnaHRseSBvdmVyLikgVGhlIG51bWJlcgorc2hvdWxkbid0IGJlIG1vcmUgbWVtb3J5IHRoYW4gdGhlIG1hY2hpbmUgaGFzIChpbmNsdWRpbmcgc3dhcCBtZW1vcnkpLiBZb3UKK3Nob3VsZCBhbHNvIGtlZXAgaW4gbWluZCB0aGF0IHN3YXAgbWVtb3J5IGlzIGdlbmVyYWxseSBtdWNoLCBtdWNoIHNsb3dlcgordGhhbiBSQU0sIGFuZCBzZXR0aW5nIG1lbWxpbWl0IHRvIGFsbCBhdmFpbGFibGUgUkFNIG9yIGhpZ2hlciB3aWxsIGhlYXZpbHkKK3RheCB0aGUgbWFjaGluZS4gT24gdGhlIG90aGVyIGhhbmQsIGl0IGlzIG5vIHVzZSBydW5uaW5nIHRoZXNlIHRlc3RzIHdpdGggYQorbGltaXQgb2YgbGVzcyB0aGFuIDIuNUdiLCBhbmQgbWFueSByZXF1aXJlIG1vcmUgdGhhbiAyMEdiLiBUZXN0cyB0aGF0IGV4cGVjdAordG8gdXNlIG1vcmUgdGhhbiBtZW1saW1pdCBtZW1vcnkgd2lsbCBiZSBza2lwcGVkLiBUaGUgYmlnLW1lbW9yeSB0ZXN0cworZ2VuZXJhbGx5IHJ1biB2ZXJ5LCB2ZXJ5IGxvbmcuCisKKy11IGlzIHVzZWQgdG8gc3BlY2lmeSB3aGljaCBzcGVjaWFsIHJlc291cmNlIGludGVuc2l2ZSB0ZXN0cyB0byBydW4sCitzdWNoIGFzIHRob3NlIHJlcXVpcmluZyBsYXJnZSBmaWxlIHN1cHBvcnQgb3IgbmV0d29yayBjb25uZWN0aXZpdHkuCitUaGUgYXJndW1lbnQgaXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiB3b3JkcyBpbmRpY2F0aW5nIHRoZQorcmVzb3VyY2VzIHRvIHRlc3QuICBDdXJyZW50bHkgb25seSB0aGUgZm9sbG93aW5nIGFyZSBkZWZpbmVkOgorCisgICAgYWxsIC0gICAgICAgRW5hYmxlIGFsbCBzcGVjaWFsIHJlc291cmNlcy4KKworICAgIG5vbmUgLSAgICAgIERpc2FibGUgYWxsIHNwZWNpYWwgcmVzb3VyY2VzICh0aGlzIGlzIHRoZSBkZWZhdWx0KS4KKworICAgIGF1ZGlvIC0gICAgIFRlc3RzIHRoYXQgdXNlIHRoZSBhdWRpbyBkZXZpY2UuICAoVGhlcmUgYXJlIGtub3duCisgICAgICAgICAgICAgICAgY2FzZXMgb2YgYnJva2VuIGF1ZGlvIGRyaXZlcnMgdGhhdCBjYW4gY3Jhc2ggUHl0aG9uIG9yCisgICAgICAgICAgICAgICAgZXZlbiB0aGUgTGludXgga2VybmVsLikKKworICAgIGN1cnNlcyAtICAgIFRlc3RzIHRoYXQgdXNlIGN1cnNlcyBhbmQgd2lsbCBtb2RpZnkgdGhlIHRlcm1pbmFsJ3MKKyAgICAgICAgICAgICAgICBzdGF0ZSBhbmQgb3V0cHV0IG1vZGVzLgorCisgICAgbGFyZ2VmaWxlIC0gSXQgaXMgb2theSB0byBydW4gc29tZSB0ZXN0IHRoYXQgbWF5IGNyZWF0ZSBodWdlCisgICAgICAgICAgICAgICAgZmlsZXMuICBUaGVzZSB0ZXN0cyBjYW4gdGFrZSBhIGxvbmcgdGltZSBhbmQgbWF5CisgICAgICAgICAgICAgICAgY29uc3VtZSA+MkdCIG9mIGRpc2sgc3BhY2UgdGVtcG9yYXJpbHkuCisKKyAgICBuZXR3b3JrIC0gICBJdCBpcyBva2F5IHRvIHJ1biB0ZXN0cyB0aGF0IHVzZSBleHRlcm5hbCBuZXR3b3JrCisgICAgICAgICAgICAgICAgcmVzb3VyY2UsIGUuZy4gdGVzdGluZyBTU0wgc3VwcG9ydCBmb3Igc29ja2V0cy4KKworICAgIGRlY2ltYWwgLSAgIFRlc3QgdGhlIGRlY2ltYWwgbW9kdWxlIGFnYWluc3QgYSBsYXJnZSBzdWl0ZSB0aGF0CisgICAgICAgICAgICAgICAgdmVyaWZpZXMgY29tcGxpYW5jZSB3aXRoIHN0YW5kYXJkcy4KKworICAgIGNwdSAtICAgICAgIFVzZWQgZm9yIGNlcnRhaW4gQ1BVLWhlYXZ5IHRlc3RzLgorCisgICAgc3VicHJvY2VzcyAgUnVuIGFsbCB0ZXN0cyBmb3IgdGhlIHN1YnByb2Nlc3MgbW9kdWxlLgorCisgICAgdXJsZmV0Y2ggLSAgSXQgaXMgb2theSB0byBkb3dubG9hZCBmaWxlcyByZXF1aXJlZCBvbiB0ZXN0aW5nLgorCisgICAgZ3VpIC0gICAgICAgUnVuIHRlc3RzIHRoYXQgcmVxdWlyZSBhIHJ1bm5pbmcgR1VJLgorCisgICAgdHpkYXRhIC0gICAgUnVuIHRlc3RzIHRoYXQgcmVxdWlyZSB0aW1lem9uZSBkYXRhLgorCitUbyBlbmFibGUgYWxsIHJlc291cmNlcyBleGNlcHQgb25lLCB1c2UgJy11YWxsLC08cmVzb3VyY2U+Jy4gIEZvcgorZXhhbXBsZSwgdG8gcnVuIGFsbCB0aGUgdGVzdHMgZXhjZXB0IGZvciB0aGUgZ3VpIHRlc3RzLCBnaXZlIHRoZQorb3B0aW9uICctdWFsbCwtZ3VpJy4KKyIiIgorCisKK1JFU09VUkNFX05BTUVTID0gKCdhdWRpbycsICdjdXJzZXMnLCAnbGFyZ2VmaWxlJywgJ25ldHdvcmsnLAorICAgICAgICAgICAgICAgICAgJ2RlY2ltYWwnLCAnY3B1JywgJ3N1YnByb2Nlc3MnLCAndXJsZmV0Y2gnLCAnZ3VpJywgJ3R6ZGF0YScpCisKK2NsYXNzIF9BcmdQYXJzZXIoYXJncGFyc2UuQXJndW1lbnRQYXJzZXIpOgorCisgICAgZGVmIGVycm9yKHNlbGYsIG1lc3NhZ2UpOgorICAgICAgICBzdXBlcigpLmVycm9yKG1lc3NhZ2UgKyAiXG5QYXNzIC1oIG9yIC0taGVscCBmb3IgY29tcGxldGUgaGVscC4iKQorCisKK2RlZiBfY3JlYXRlX3BhcnNlcigpOgorICAgICMgU2V0IHByb2cgdG8gcHJldmVudCB0aGUgdW5pbmZvcm1hdGl2ZSAiX19tYWluX18ucHkiIGZyb20gZGlzcGxheWluZyBpbgorICAgICMgZXJyb3IgbWVzc2FnZXMgd2hlbiB1c2luZyAicHl0aG9uIC1tIHRlc3QgLi4uIi4KKyAgICBwYXJzZXIgPSBfQXJnUGFyc2VyKHByb2c9J3JlZ3J0ZXN0LnB5JywKKyAgICAgICAgICAgICAgICAgICAgICAgIHVzYWdlPVVTQUdFLAorICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249REVTQ1JJUFRJT04sCisgICAgICAgICAgICAgICAgICAgICAgICBlcGlsb2c9RVBJTE9HLAorICAgICAgICAgICAgICAgICAgICAgICAgYWRkX2hlbHA9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZXJfY2xhc3M9YXJncGFyc2UuUmF3RGVzY3JpcHRpb25IZWxwRm9ybWF0dGVyKQorCisgICAgIyBBcmd1bWVudHMgd2l0aCB0aGlzIGNsYXVzZSBhZGRlZCB0byBpdHMgaGVscCBhcmUgZGVzY3JpYmVkIGZ1cnRoZXIgaW4KKyAgICAjIHRoZSBlcGlsb2cncyAiQWRkaXRpb25hbCBvcHRpb24gZGV0YWlscyIgc2VjdGlvbi4KKyAgICBtb3JlX2RldGFpbHMgPSAnICBTZWUgdGhlIHNlY3Rpb24gYXQgYm90dG9tIGZvciBtb3JlIGRldGFpbHMuJworCisgICAgZ3JvdXAgPSBwYXJzZXIuYWRkX2FyZ3VtZW50X2dyb3VwKCdHZW5lcmFsIG9wdGlvbnMnKQorICAgICMgV2UgYWRkIGhlbHAgZXhwbGljaXRseSB0byBjb250cm9sIHdoYXQgYXJndW1lbnQgZ3JvdXAgaXQgcmVuZGVycyB1bmRlci4KKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1oJywgJy0taGVscCcsIGFjdGlvbj0naGVscCcsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3Nob3cgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQnKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS10aW1lb3V0JywgbWV0YXZhcj0nVElNRU9VVCcsIHR5cGU9ZmxvYXQsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdkdW1wIHRoZSB0cmFjZWJhY2sgYW5kIGV4aXQgaWYgYSB0ZXN0IHRha2VzICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vcmUgdGhhbiBUSU1FT1VUIHNlY29uZHM7IGRpc2FibGVkIGlmIFRJTUVPVVQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXMgbmVnYXRpdmUgb3IgZXF1YWxzIHRvIHplcm8nKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS13YWl0JywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nd2FpdCBmb3IgdXNlciBpbnB1dCwgZS5nLiwgYWxsb3cgYSBkZWJ1Z2dlciAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RvIGJlIGF0dGFjaGVkJykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy0tc2xhdmVhcmdzJywgbWV0YXZhcj0nQVJHUycpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctUycsICctLXN0YXJ0JywgbWV0YXZhcj0nU1RBUlQnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSd0aGUgbmFtZSBvZiB0aGUgdGVzdCBhdCB3aGljaCB0byBzdGFydC4nICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3JlX2RldGFpbHMpCisKKyAgICBncm91cCA9IHBhcnNlci5hZGRfYXJndW1lbnRfZ3JvdXAoJ1ZlcmJvc2l0eScpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctdicsICctLXZlcmJvc2UnLCBhY3Rpb249J2NvdW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncnVuIHRlc3RzIGluIHZlcmJvc2UgbW9kZSB3aXRoIG91dHB1dCB0byBzdGRvdXQnKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLXcnLCAnLS12ZXJib3NlMicsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3JlLXJ1biBmYWlsZWQgdGVzdHMgaW4gdmVyYm9zZSBtb2RlJykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1XJywgJy0tdmVyYm9zZTMnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdkaXNwbGF5IHRlc3Qgb3V0cHV0IG9uIGZhaWx1cmUnKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLXEnLCAnLS1xdWlldCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J25vIG91dHB1dCB1bmxlc3Mgb25lIG9yIG1vcmUgdGVzdHMgZmFpbCcpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctbycsICctLXNsb3dlc3QnLCBhY3Rpb249J3N0b3JlX3RydWUnLCBkZXN0PSdwcmludF9zbG93JywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncHJpbnQgdGhlIHNsb3dlc3QgMTAgdGVzdHMnKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS1oZWFkZXInLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdwcmludCBoZWFkZXIgd2l0aCBpbnRlcnByZXRlciBpbmZvJykKKworICAgIGdyb3VwID0gcGFyc2VyLmFkZF9hcmd1bWVudF9ncm91cCgnU2VsZWN0aW5nIHRlc3RzJykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1yJywgJy0tcmFuZG9taXplJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncmFuZG9taXplIHRlc3QgZXhlY3V0aW9uIG9yZGVyLicgKyBtb3JlX2RldGFpbHMpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLXJhbmRzZWVkJywgbWV0YXZhcj0nU0VFRCcsCisgICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3JhbmRvbV9zZWVkJywgdHlwZT1pbnQsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3Bhc3MgYSByYW5kb20gc2VlZCB0byByZXByb2R1Y2UgYSBwcmV2aW91cyAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JhbmRvbSBydW4nKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLWYnLCAnLS1mcm9tZmlsZScsIG1ldGF2YXI9J0ZJTEUnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdyZWFkIG5hbWVzIG9mIHRlc3RzIHRvIHJ1biBmcm9tIGEgZmlsZS4nICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3JlX2RldGFpbHMpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCcteCcsICctLWV4Y2x1ZGUnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdhcmd1bWVudHMgYXJlIHRlc3RzIHRvICpleGNsdWRlKicpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctcycsICctLXNpbmdsZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3NpbmdsZSBzdGVwIHRocm91Z2ggYSBzZXQgb2YgdGVzdHMuJyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9yZV9kZXRhaWxzKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLW0nLCAnLS1tYXRjaCcsIG1ldGF2YXI9J1BBVCcsCisgICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J21hdGNoX3Rlc3RzJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nbWF0Y2ggdGVzdCBjYXNlcyBhbmQgbWV0aG9kcyB3aXRoIGdsb2IgcGF0dGVybiBQQVQnKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLUcnLCAnLS1mYWlsZmFzdCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2ZhaWwgYXMgc29vbiBhcyBhIHRlc3QgZmFpbHMgKG9ubHkgd2l0aCAtdiBvciAtVyknKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLXUnLCAnLS11c2UnLCBtZXRhdmFyPSdSRVMxLFJFUzIsLi4uJywKKyAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdhcHBlbmQnLCB0eXBlPXJlc291cmNlc19saXN0LAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdzcGVjaWZ5IHdoaWNoIHNwZWNpYWwgcmVzb3VyY2UgaW50ZW5zaXZlIHRlc3RzICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG8gcnVuLicgKyBtb3JlX2RldGFpbHMpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctTScsICctLW1lbWxpbWl0JywgbWV0YXZhcj0nTElNSVQnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdydW4gdmVyeSBsYXJnZSBtZW1vcnktY29uc3VtaW5nIHRlc3RzLicgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vcmVfZGV0YWlscykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy0tdGVzdGRpcicsIG1ldGF2YXI9J0RJUicsCisgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9cmVsYXRpdmVfZmlsZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2V4ZWN1dGUgdGVzdCBmaWxlcyBpbiB0aGUgc3BlY2lmaWVkIGRpcmVjdG9yeSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyhpbnN0ZWFkIG9mIHRoZSBQeXRob24gc3RkbGliIHRlc3Qgc3VpdGUpJykKKworICAgIGdyb3VwID0gcGFyc2VyLmFkZF9hcmd1bWVudF9ncm91cCgnU3BlY2lhbCBydW5zJykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1sJywgJy0tZmluZGxlYWtzJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0naWYgR0MgaXMgYXZhaWxhYmxlIGRldGVjdCB0ZXN0cyB0aGF0IGxlYWsgbWVtb3J5JykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1MJywgJy0tcnVubGVha3MnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdydW4gdGhlIGxlYWtzKDEpIGNvbW1hbmQganVzdCBiZWZvcmUgZXhpdC4nICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3JlX2RldGFpbHMpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctUicsICctLWh1bnRybGVha3MnLCBtZXRhdmFyPSdSVU5DT1VOVFMnLAorICAgICAgICAgICAgICAgICAgICAgICB0eXBlPWh1bnRybGVha3MsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3NlYXJjaCBmb3IgcmVmZXJlbmNlIGxlYWtzIChuZWVkcyBkZWJ1ZyBidWlsZCwgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJ5IHNsb3cpLicgKyBtb3JlX2RldGFpbHMpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctaicsICctLW11bHRpcHJvY2VzcycsIG1ldGF2YXI9J1BST0NFU1NFUycsCisgICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3VzZV9tcCcsIHR5cGU9aW50LAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdydW4gUFJPQ0VTU0VTIHByb2Nlc3NlcyBhdCBvbmNlJykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1UJywgJy0tY292ZXJhZ2UnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSd0cmFjZScsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3R1cm4gb24gY29kZSBjb3ZlcmFnZSB0cmFjaW5nIHVzaW5nIHRoZSB0cmFjZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vZHVsZScpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctRCcsICctLWNvdmVyZGlyJywgbWV0YXZhcj0nRElSJywKKyAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1yZWxhdGl2ZV9maWxlbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZGlyZWN0b3J5IHdoZXJlIGNvdmVyYWdlIGZpbGVzIGFyZSBwdXQnKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLU4nLCAnLS1ub2NvdmVyZGlyJywKKyAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV9jb25zdCcsIGNvbnN0PU5vbmUsIGRlc3Q9J2NvdmVyZGlyJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncHV0IGNvdmVyYWdlIGZpbGVzIGFsb25nc2lkZSBtb2R1bGVzJykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy10JywgJy0tdGhyZXNob2xkJywgbWV0YXZhcj0nVEhSRVNIT0xEJywKKyAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1pbnQsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2NhbGwgZ2Muc2V0X3RocmVzaG9sZChUSFJFU0hPTEQpJykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1uJywgJy0tbm93aW5kb3dzJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nc3VwcHJlc3MgZXJyb3IgbWVzc2FnZSBib3hlcyBvbiBXaW5kb3dzJykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1GJywgJy0tZm9yZXZlcicsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3J1biB0aGUgc3BlY2lmaWVkIHRlc3RzIGluIGEgbG9vcCwgdW50aWwgYW4gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnJvciBoYXBwZW5zJykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy0tbGlzdC10ZXN0cycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9Im9ubHkgd3JpdGUgdGhlIG5hbWUgb2YgdGVzdHMgdGhhdCB3aWxsIGJlIHJ1biwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkb24ndCBleGVjdXRlIHRoZW0iKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLVAnLCAnLS1wZ28nLCBkZXN0PSdwZ28nLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdlbmFibGUgUHJvZmlsZSBHdWlkZWQgT3B0aW1pemF0aW9uIHRyYWluaW5nJykKKworICAgIHJldHVybiBwYXJzZXIKKworCitkZWYgcmVsYXRpdmVfZmlsZW5hbWUoc3RyaW5nKToKKyAgICAjIENXRCBpcyByZXBsYWNlZCB3aXRoIGEgdGVtcG9yYXJ5IGRpciBiZWZvcmUgY2FsbGluZyBtYWluKCksIHNvIHdlCisgICAgIyBqb2luIGl0IHdpdGggdGhlIHNhdmVkIENXRCBzbyBpdCBlbmRzIHVwIHdoZXJlIHRoZSB1c2VyIGV4cGVjdHMuCisgICAgcmV0dXJuIG9zLnBhdGguam9pbihzdXBwb3J0LlNBVkVEQ1dELCBzdHJpbmcpCisKKworZGVmIGh1bnRybGVha3Moc3RyaW5nKToKKyAgICBhcmdzID0gc3RyaW5nLnNwbGl0KCc6JykKKyAgICBpZiBsZW4oYXJncykgbm90IGluICgyLCAzKToKKyAgICAgICAgcmFpc2UgYXJncGFyc2UuQXJndW1lbnRUeXBlRXJyb3IoCisgICAgICAgICAgICAnbmVlZHMgMiBvciAzIGNvbG9uLXNlcGFyYXRlZCBhcmd1bWVudHMnKQorICAgIG53YXJtdXAgPSBpbnQoYXJnc1swXSkgaWYgYXJnc1swXSBlbHNlIDUKKyAgICBudHJhY2tlZCA9IGludChhcmdzWzFdKSBpZiBhcmdzWzFdIGVsc2UgNAorICAgIGZuYW1lID0gYXJnc1syXSBpZiBsZW4oYXJncykgPiAyIGFuZCBhcmdzWzJdIGVsc2UgJ3JlZmxvZy50eHQnCisgICAgcmV0dXJuIG53YXJtdXAsIG50cmFja2VkLCBmbmFtZQorCisKK2RlZiByZXNvdXJjZXNfbGlzdChzdHJpbmcpOgorICAgIHUgPSBbeC5sb3dlcigpIGZvciB4IGluIHN0cmluZy5zcGxpdCgnLCcpXQorICAgIGZvciByIGluIHU6CisgICAgICAgIGlmIHIgPT0gJ2FsbCcgb3IgciA9PSAnbm9uZSc6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpZiByWzBdID09ICctJzoKKyAgICAgICAgICAgIHIgPSByWzE6XQorICAgICAgICBpZiByIG5vdCBpbiBSRVNPVVJDRV9OQU1FUzoKKyAgICAgICAgICAgIHJhaXNlIGFyZ3BhcnNlLkFyZ3VtZW50VHlwZUVycm9yKCdpbnZhbGlkIHJlc291cmNlOiAnICsgcikKKyAgICByZXR1cm4gdQorCisKK2RlZiBfcGFyc2VfYXJncyhhcmdzLCAqKmt3YXJncyk6CisgICAgIyBEZWZhdWx0cworICAgIG5zID0gYXJncGFyc2UuTmFtZXNwYWNlKHRlc3RkaXI9Tm9uZSwgdmVyYm9zZT0wLCBxdWlldD1GYWxzZSwKKyAgICAgICAgIGV4Y2x1ZGU9RmFsc2UsIHNpbmdsZT1GYWxzZSwgcmFuZG9taXplPUZhbHNlLCBmcm9tZmlsZT1Ob25lLAorICAgICAgICAgZmluZGxlYWtzPUZhbHNlLCB1c2VfcmVzb3VyY2VzPU5vbmUsIHRyYWNlPUZhbHNlLCBjb3ZlcmRpcj0nY292ZXJhZ2UnLAorICAgICAgICAgcnVubGVha3M9RmFsc2UsIGh1bnRybGVha3M9RmFsc2UsIHZlcmJvc2UyPUZhbHNlLCBwcmludF9zbG93PUZhbHNlLAorICAgICAgICAgcmFuZG9tX3NlZWQ9Tm9uZSwgdXNlX21wPU5vbmUsIHZlcmJvc2UzPUZhbHNlLCBmb3JldmVyPUZhbHNlLAorICAgICAgICAgaGVhZGVyPUZhbHNlLCBmYWlsZmFzdD1GYWxzZSwgbWF0Y2hfdGVzdHM9Tm9uZSwgcGdvPUZhbHNlKQorICAgIGZvciBrLCB2IGluIGt3YXJncy5pdGVtcygpOgorICAgICAgICBpZiBub3QgaGFzYXR0cihucywgayk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJyVyIGlzIGFuIGludmFsaWQga2V5d29yZCBhcmd1bWVudCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvciB0aGlzIGZ1bmN0aW9uJyAlIGspCisgICAgICAgIHNldGF0dHIobnMsIGssIHYpCisgICAgaWYgbnMudXNlX3Jlc291cmNlcyBpcyBOb25lOgorICAgICAgICBucy51c2VfcmVzb3VyY2VzID0gW10KKworICAgIHBhcnNlciA9IF9jcmVhdGVfcGFyc2VyKCkKKyAgICAjIElzc3VlICMxNDE5MTogYXJncGFyc2UgZG9lc24ndCBzdXBwb3J0ICJpbnRlcm1peGVkIiBwb3NpdGlvbmFsIGFuZAorICAgICMgb3B0aW9uYWwgYXJndW1lbnRzLiBVc2UgcGFyc2Vfa25vd25fYXJncygpIGFzIHdvcmthcm91bmQuCisgICAgbnMuYXJncyA9IHBhcnNlci5wYXJzZV9rbm93bl9hcmdzKGFyZ3M9YXJncywgbmFtZXNwYWNlPW5zKVsxXQorICAgIGZvciBhcmcgaW4gbnMuYXJnczoKKyAgICAgICAgaWYgYXJnLnN0YXJ0c3dpdGgoJy0nKToKKyAgICAgICAgICAgIHBhcnNlci5lcnJvcigidW5yZWNvZ25pemVkIGFyZ3VtZW50czogJXMiICUgYXJnKQorICAgICAgICAgICAgc3lzLmV4aXQoMSkKKworICAgIGlmIG5zLnNpbmdsZSBhbmQgbnMuZnJvbWZpbGU6CisgICAgICAgIHBhcnNlci5lcnJvcigiLXMgYW5kIC1mIGRvbid0IGdvIHRvZ2V0aGVyISIpCisgICAgaWYgbnMudXNlX21wIGlzIG5vdCBOb25lIGFuZCBucy50cmFjZToKKyAgICAgICAgcGFyc2VyLmVycm9yKCItVCBhbmQgLWogZG9uJ3QgZ28gdG9nZXRoZXIhIikKKyAgICBpZiBucy51c2VfbXAgaXMgbm90IE5vbmUgYW5kIG5zLmZpbmRsZWFrczoKKyAgICAgICAgcGFyc2VyLmVycm9yKCItbCBhbmQgLWogZG9uJ3QgZ28gdG9nZXRoZXIhIikKKyAgICBpZiBucy5mYWlsZmFzdCBhbmQgbm90IChucy52ZXJib3NlIG9yIG5zLnZlcmJvc2UzKToKKyAgICAgICAgcGFyc2VyLmVycm9yKCItRy8tLWZhaWxmYXN0IG5lZWRzIGVpdGhlciAtdiBvciAtVyIpCisgICAgaWYgbnMucGdvIGFuZCAobnMudmVyYm9zZSBvciBucy52ZXJib3NlMiBvciBucy52ZXJib3NlMyk6CisgICAgICAgIHBhcnNlci5lcnJvcigiLS1wZ28vLXYgZG9uJ3QgZ28gdG9nZXRoZXIhIikKKworICAgIGlmIG5zLm5vd2luZG93czoKKyAgICAgICAgcHJpbnQoIldhcm5pbmc6IHRoZSAtLW5vd2luZG93cyAoLW4pIG9wdGlvbiBpcyBkZXByZWNhdGVkLiAiCisgICAgICAgICAgICAgICJVc2UgLXZ2IHRvIGRpc3BsYXkgYXNzZXJ0aW9ucyBpbiBzdGRlcnIuIiwgZmlsZT1zeXMuc3RkZXJyKQorCisgICAgaWYgbnMucXVpZXQ6CisgICAgICAgIG5zLnZlcmJvc2UgPSAwCisgICAgaWYgbnMudGltZW91dCBpcyBub3QgTm9uZToKKyAgICAgICAgaWYgbnMudGltZW91dCA8PSAwOgorICAgICAgICAgICAgbnMudGltZW91dCA9IE5vbmUKKyAgICBpZiBucy51c2VfbXAgaXMgbm90IE5vbmU6CisgICAgICAgIGlmIG5zLnVzZV9tcCA8PSAwOgorICAgICAgICAgICAgIyBVc2UgYWxsIGNvcmVzICsgZXh0cmFzIGZvciB0ZXN0cyB0aGF0IGxpa2UgdG8gc2xlZXAKKyAgICAgICAgICAgIG5zLnVzZV9tcCA9IDIgKyAob3MuY3B1X2NvdW50KCkgb3IgMSkKKyAgICBpZiBucy51c2U6CisgICAgICAgIGZvciBhIGluIG5zLnVzZToKKyAgICAgICAgICAgIGZvciByIGluIGE6CisgICAgICAgICAgICAgICAgaWYgciA9PSAnYWxsJzoKKyAgICAgICAgICAgICAgICAgICAgbnMudXNlX3Jlc291cmNlc1s6XSA9IFJFU09VUkNFX05BTUVTCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgaWYgciA9PSAnbm9uZSc6CisgICAgICAgICAgICAgICAgICAgIGRlbCBucy51c2VfcmVzb3VyY2VzWzpdCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgcmVtb3ZlID0gRmFsc2UKKyAgICAgICAgICAgICAgICBpZiByWzBdID09ICctJzoKKyAgICAgICAgICAgICAgICAgICAgcmVtb3ZlID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICByID0gclsxOl0KKyAgICAgICAgICAgICAgICBpZiByZW1vdmU6CisgICAgICAgICAgICAgICAgICAgIGlmIHIgaW4gbnMudXNlX3Jlc291cmNlczoKKyAgICAgICAgICAgICAgICAgICAgICAgIG5zLnVzZV9yZXNvdXJjZXMucmVtb3ZlKHIpCisgICAgICAgICAgICAgICAgZWxpZiByIG5vdCBpbiBucy51c2VfcmVzb3VyY2VzOgorICAgICAgICAgICAgICAgICAgICBucy51c2VfcmVzb3VyY2VzLmFwcGVuZChyKQorICAgIGlmIG5zLnJhbmRvbV9zZWVkIGlzIG5vdCBOb25lOgorICAgICAgICBucy5yYW5kb21pemUgPSBUcnVlCisKKyAgICByZXR1cm4gbnMKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2xpYnJlZ3J0ZXN0L21haW4ucHkgYi9MaWIvdGVzdC9saWJyZWdydGVzdC9tYWluLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwZWZmYzkKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9saWJyZWdydGVzdC9tYWluLnB5CkBAIC0wLDAgKzEsNTMyIEBACitpbXBvcnQgZGF0ZXRpbWUKK2ltcG9ydCBmYXVsdGhhbmRsZXIKK2ltcG9ydCBsb2NhbGUKK2ltcG9ydCBvcworaW1wb3J0IHBsYXRmb3JtCitpbXBvcnQgcmFuZG9tCitpbXBvcnQgcmUKK2ltcG9ydCBzeXMKK2ltcG9ydCBzeXNjb25maWcKK2ltcG9ydCB0ZW1wZmlsZQoraW1wb3J0IHRleHR3cmFwCitpbXBvcnQgdGltZQorZnJvbSB0ZXN0LmxpYnJlZ3J0ZXN0LmNtZGxpbmUgaW1wb3J0IF9wYXJzZV9hcmdzCitmcm9tIHRlc3QubGlicmVncnRlc3QucnVudGVzdCBpbXBvcnQgKAorICAgIGZpbmR0ZXN0cywgcnVudGVzdCwKKyAgICBTVERURVNUUywgTk9UVEVTVFMsIFBBU1NFRCwgRkFJTEVELCBFTlZfQ0hBTkdFRCwgU0tJUFBFRCwgUkVTT1VSQ0VfREVOSUVELAorICAgIElOVEVSUlVQVEVELCBDSElMRF9FUlJPUiwKKyAgICBQUk9HUkVTU19NSU5fVElNRSwgZm9ybWF0X3Rlc3RfcmVzdWx0KQorZnJvbSB0ZXN0LmxpYnJlZ3J0ZXN0LnNldHVwIGltcG9ydCBzZXR1cF90ZXN0cworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Cit0cnk6CisgICAgaW1wb3J0IGdjCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgZ2MgPSBOb25lCisKKworIyBXaGVuIHRlc3RzIGFyZSBydW4gZnJvbSB0aGUgUHl0aG9uIGJ1aWxkIGRpcmVjdG9yeSwgaXQgaXMgYmVzdCBwcmFjdGljZQorIyB0byBrZWVwIHRoZSB0ZXN0IGZpbGVzIGluIGEgc3ViZm9sZGVyLiAgVGhpcyBlYXNlcyB0aGUgY2xlYW51cCBvZiBsZWZ0b3ZlcgorIyBmaWxlcyB1c2luZyB0aGUgIm1ha2UgZGlzdGNsZWFuIiBjb21tYW5kLgoraWYgc3lzY29uZmlnLmlzX3B5dGhvbl9idWlsZCgpOgorICAgIFRFTVBESVIgPSBvcy5wYXRoLmpvaW4oc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdzcmNkaXInKSwgJ2J1aWxkJykKK2Vsc2U6CisgICAgVEVNUERJUiA9IHRlbXBmaWxlLmdldHRlbXBkaXIoKQorVEVNUERJUiA9IG9zLnBhdGguYWJzcGF0aChURU1QRElSKQorCisKK2RlZiBmb3JtYXRfZHVyYXRpb24oc2Vjb25kcyk6CisgICAgaWYgc2Vjb25kcyA8IDEuMDoKKyAgICAgICAgcmV0dXJuICclLjBmIG1zJyAlIChzZWNvbmRzICogMWUzKQorICAgIGlmIHNlY29uZHMgPCA2MC4wOgorICAgICAgICByZXR1cm4gJyUuMGYgc2VjJyAlIHNlY29uZHMKKworICAgIG1pbnV0ZXMsIHNlY29uZHMgPSBkaXZtb2Qoc2Vjb25kcywgNjAuMCkKKyAgICByZXR1cm4gJyUuMGYgbWluICUuMGYgc2VjJyAlIChtaW51dGVzLCBzZWNvbmRzKQorCisKK2NsYXNzIFJlZ3J0ZXN0OgorICAgICIiIkV4ZWN1dGUgYSB0ZXN0IHN1aXRlLgorCisgICAgVGhpcyBhbHNvIHBhcnNlcyBjb21tYW5kLWxpbmUgb3B0aW9ucyBhbmQgbW9kaWZpZXMgaXRzIGJlaGF2aW9yCisgICAgYWNjb3JkaW5nbHkuCisKKyAgICB0ZXN0cyAtLSBhIGxpc3Qgb2Ygc3RyaW5ncyBjb250YWluaW5nIHRlc3QgbmFtZXMgKG9wdGlvbmFsKQorICAgIHRlc3RkaXIgLS0gdGhlIGRpcmVjdG9yeSBpbiB3aGljaCB0byBsb29rIGZvciB0ZXN0cyAob3B0aW9uYWwpCisKKyAgICBVc2VycyBvdGhlciB0aGFuIHRoZSBQeXRob24gdGVzdCBzdWl0ZSB3aWxsIGNlcnRhaW5seSB3YW50IHRvCisgICAgc3BlY2lmeSB0ZXN0ZGlyOyBpZiBpdCdzIG9taXR0ZWQsIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUKKyAgICBQeXRob24gdGVzdCBzdWl0ZSBpcyBzZWFyY2hlZCBmb3IuCisKKyAgICBJZiB0aGUgdGVzdHMgYXJndW1lbnQgaXMgb21pdHRlZCwgdGhlIHRlc3RzIGxpc3RlZCBvbiB0aGUKKyAgICBjb21tYW5kLWxpbmUgd2lsbCBiZSB1c2VkLiAgSWYgdGhhdCdzIGVtcHR5LCB0b28sIHRoZW4gYWxsICoucHkKKyAgICBmaWxlcyBiZWdpbm5pbmcgd2l0aCB0ZXN0XyB3aWxsIGJlIHVzZWQuCisKKyAgICBUaGUgb3RoZXIgZGVmYXVsdCBhcmd1bWVudHMgKHZlcmJvc2UsIHF1aWV0LCBleGNsdWRlLAorICAgIHNpbmdsZSwgcmFuZG9taXplLCBmaW5kbGVha3MsIHVzZV9yZXNvdXJjZXMsIHRyYWNlLCBjb3ZlcmRpciwKKyAgICBwcmludF9zbG93LCBhbmQgcmFuZG9tX3NlZWQpIGFsbG93IHByb2dyYW1tZXJzIGNhbGxpbmcgbWFpbigpCisgICAgZGlyZWN0bHkgdG8gc2V0IHRoZSB2YWx1ZXMgdGhhdCB3b3VsZCBub3JtYWxseSBiZSBzZXQgYnkgZmxhZ3MKKyAgICBvbiB0aGUgY29tbWFuZCBsaW5lLgorICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgIyBOYW1lc3BhY2Ugb2YgY29tbWFuZCBsaW5lIG9wdGlvbnMKKyAgICAgICAgc2VsZi5ucyA9IE5vbmUKKworICAgICAgICAjIHRlc3RzCisgICAgICAgIHNlbGYudGVzdHMgPSBbXQorICAgICAgICBzZWxmLnNlbGVjdGVkID0gW10KKworICAgICAgICAjIHRlc3QgcmVzdWx0cworICAgICAgICBzZWxmLmdvb2QgPSBbXQorICAgICAgICBzZWxmLmJhZCA9IFtdCisgICAgICAgIHNlbGYuc2tpcHBlZCA9IFtdCisgICAgICAgIHNlbGYucmVzb3VyY2VfZGVuaWVkcyA9IFtdCisgICAgICAgIHNlbGYuZW52aXJvbm1lbnRfY2hhbmdlZCA9IFtdCisgICAgICAgIHNlbGYuaW50ZXJydXB0ZWQgPSBGYWxzZQorCisgICAgICAgICMgdXNlZCBieSAtLXNsb3cKKyAgICAgICAgc2VsZi50ZXN0X3RpbWVzID0gW10KKworICAgICAgICAjIHVzZWQgYnkgLS1jb3ZlcmFnZSwgdHJhY2UuVHJhY2UgaW5zdGFuY2UKKyAgICAgICAgc2VsZi50cmFjZXIgPSBOb25lCisKKyAgICAgICAgIyB1c2VkIGJ5IC0tZmluZGxlYWtzLCBzdG9yZSBmb3IgZ2MuZ2FyYmFnZQorICAgICAgICBzZWxmLmZvdW5kX2dhcmJhZ2UgPSBbXQorCisgICAgICAgICMgdXNlZCB0byBkaXNwbGF5IHRoZSBwcm9ncmVzcyBiYXIgIlsgMy8xMDBdIgorICAgICAgICBzZWxmLnN0YXJ0X3RpbWUgPSB0aW1lLm1vbm90b25pYygpCisgICAgICAgIHNlbGYudGVzdF9jb3VudCA9ICcnCisgICAgICAgIHNlbGYudGVzdF9jb3VudF93aWR0aCA9IDEKKworICAgICAgICAjIHVzZWQgYnkgLS1zaW5nbGUKKyAgICAgICAgc2VsZi5uZXh0X3NpbmdsZV90ZXN0ID0gTm9uZQorICAgICAgICBzZWxmLm5leHRfc2luZ2xlX2ZpbGVuYW1lID0gTm9uZQorCisgICAgZGVmIGFjY3VtdWxhdGVfcmVzdWx0KHNlbGYsIHRlc3QsIHJlc3VsdCk6CisgICAgICAgIG9rLCB0ZXN0X3RpbWUgPSByZXN1bHQKKyAgICAgICAgaWYgb2sgbm90IGluIChDSElMRF9FUlJPUiwgSU5URVJSVVBURUQpOgorICAgICAgICAgICAgc2VsZi50ZXN0X3RpbWVzLmFwcGVuZCgodGVzdF90aW1lLCB0ZXN0KSkKKyAgICAgICAgaWYgb2sgPT0gUEFTU0VEOgorICAgICAgICAgICAgc2VsZi5nb29kLmFwcGVuZCh0ZXN0KQorICAgICAgICBlbGlmIG9rID09IEZBSUxFRDoKKyAgICAgICAgICAgIHNlbGYuYmFkLmFwcGVuZCh0ZXN0KQorICAgICAgICBlbGlmIG9rID09IEVOVl9DSEFOR0VEOgorICAgICAgICAgICAgc2VsZi5lbnZpcm9ubWVudF9jaGFuZ2VkLmFwcGVuZCh0ZXN0KQorICAgICAgICBlbGlmIG9rID09IFNLSVBQRUQ6CisgICAgICAgICAgICBzZWxmLnNraXBwZWQuYXBwZW5kKHRlc3QpCisgICAgICAgIGVsaWYgb2sgPT0gUkVTT1VSQ0VfREVOSUVEOgorICAgICAgICAgICAgc2VsZi5za2lwcGVkLmFwcGVuZCh0ZXN0KQorICAgICAgICAgICAgc2VsZi5yZXNvdXJjZV9kZW5pZWRzLmFwcGVuZCh0ZXN0KQorCisgICAgZGVmIGRpc3BsYXlfcHJvZ3Jlc3Moc2VsZiwgdGVzdF9pbmRleCwgdGVzdCk6CisgICAgICAgIGlmIHNlbGYubnMucXVpZXQ6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaWYgc2VsZi5iYWQgYW5kIG5vdCBzZWxmLm5zLnBnbzoKKyAgICAgICAgICAgIGZtdCA9ICJ7dGltZX0gW3t0ZXN0X2luZGV4Ontjb3VudF93aWR0aH19e3Rlc3RfY291bnR9L3tuYmFkfV0ge3Rlc3RfbmFtZX0iCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBmbXQgPSAie3RpbWV9IFt7dGVzdF9pbmRleDp7Y291bnRfd2lkdGh9fXt0ZXN0X2NvdW50fV0ge3Rlc3RfbmFtZX0iCisgICAgICAgIHRlc3RfdGltZSA9IHRpbWUubW9ub3RvbmljKCkgLSBzZWxmLnN0YXJ0X3RpbWUKKyAgICAgICAgdGVzdF90aW1lID0gZGF0ZXRpbWUudGltZWRlbHRhKHNlY29uZHM9aW50KHRlc3RfdGltZSkpCisgICAgICAgIGxpbmUgPSBmbXQuZm9ybWF0KGNvdW50X3dpZHRoPXNlbGYudGVzdF9jb3VudF93aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9pbmRleD10ZXN0X2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2NvdW50PXNlbGYudGVzdF9jb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbmJhZD1sZW4oc2VsZi5iYWQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X25hbWU9dGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZT10ZXN0X3RpbWUpCisgICAgICAgIHByaW50KGxpbmUsIGZsdXNoPVRydWUpCisKKyAgICBkZWYgcGFyc2VfYXJncyhzZWxmLCBrd2FyZ3MpOgorICAgICAgICBucyA9IF9wYXJzZV9hcmdzKHN5cy5hcmd2WzE6XSwgKiprd2FyZ3MpCisKKyAgICAgICAgaWYgbnMudGltZW91dCBhbmQgbm90IGhhc2F0dHIoZmF1bHRoYW5kbGVyLCAnZHVtcF90cmFjZWJhY2tfbGF0ZXInKToKKyAgICAgICAgICAgIHByaW50KCJXYXJuaW5nOiBUaGUgdGltZW91dCBvcHRpb24gcmVxdWlyZXMgIgorICAgICAgICAgICAgICAgICAgImZhdWx0aGFuZGxlci5kdW1wX3RyYWNlYmFja19sYXRlciIsIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgICAgIG5zLnRpbWVvdXQgPSBOb25lCisKKyAgICAgICAgaWYgbnMudGhyZXNob2xkIGlzIG5vdCBOb25lIGFuZCBnYyBpcyBOb25lOgorICAgICAgICAgICAgcHJpbnQoJ05vIEdDIGF2YWlsYWJsZSwgaWdub3JlIC0tdGhyZXNob2xkLicsIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgICAgIG5zLnRocmVzaG9sZCA9IE5vbmUKKworICAgICAgICBpZiBucy5maW5kbGVha3M6CisgICAgICAgICAgICBpZiBnYyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAjIFVuY29tbWVudCB0aGUgbGluZSBiZWxvdyB0byByZXBvcnQgZ2FyYmFnZSB0aGF0IGlzIG5vdAorICAgICAgICAgICAgICAgICMgZnJlZWFibGUgYnkgcmVmZXJlbmNlIGNvdW50aW5nIGFsb25lLiAgQnkgZGVmYXVsdCBvbmx5CisgICAgICAgICAgICAgICAgIyBnYXJiYWdlIHRoYXQgaXMgbm90IGNvbGxlY3RhYmxlIGJ5IHRoZSBHQyBpcyByZXBvcnRlZC4KKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgI2djLnNldF9kZWJ1ZyhnYy5ERUJVR19TQVZFQUxMKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBwcmludCgnTm8gR0MgYXZhaWxhYmxlLCBkaXNhYmxpbmcgLS1maW5kbGVha3MnLAorICAgICAgICAgICAgICAgICAgICAgIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgICAgICAgICBucy5maW5kbGVha3MgPSBGYWxzZQorCisgICAgICAgICMgU3RyaXAgLnB5IGV4dGVuc2lvbnMuCisgICAgICAgIHJlbW92ZXB5KG5zLmFyZ3MpCisKKyAgICAgICAgcmV0dXJuIG5zCisKKyAgICBkZWYgZmluZF90ZXN0cyhzZWxmLCB0ZXN0cyk6CisgICAgICAgIHNlbGYudGVzdHMgPSB0ZXN0cworCisgICAgICAgIGlmIHNlbGYubnMuc2luZ2xlOgorICAgICAgICAgICAgc2VsZi5uZXh0X3NpbmdsZV9maWxlbmFtZSA9IG9zLnBhdGguam9pbihURU1QRElSLCAncHluZXh0dGVzdCcpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgd2l0aCBvcGVuKHNlbGYubmV4dF9zaW5nbGVfZmlsZW5hbWUsICdyJykgYXMgZnA6CisgICAgICAgICAgICAgICAgICAgIG5leHRfdGVzdCA9IGZwLnJlYWQoKS5zdHJpcCgpCisgICAgICAgICAgICAgICAgICAgIHNlbGYudGVzdHMgPSBbbmV4dF90ZXN0XQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIGlmIHNlbGYubnMuZnJvbWZpbGU6CisgICAgICAgICAgICBzZWxmLnRlc3RzID0gW10KKyAgICAgICAgICAgICMgcmVnZXggdG8gbWF0Y2ggJ3Rlc3RfYnVpbHRpbicgaW4gbGluZToKKyAgICAgICAgICAgICMgJzA6MDA6MDAgWyAgNC80MDBdIHRlc3RfYnVpbHRpbiAtLSB0ZXN0X2RpY3QgdG9vayAxIHNlYycKKyAgICAgICAgICAgIHJlZ2V4ID0gKHInXig/OlswLTldKzpbMC05XSs6WzAtOV0rICopPycKKyAgICAgICAgICAgICAgICAgICAgIHInKD86XFtbMC05LyBdK1xdICopPycKKyAgICAgICAgICAgICAgICAgICAgIHInKHRlc3RfW2EtekEtWjAtOV9dKyknKQorICAgICAgICAgICAgcmVnZXggPSByZS5jb21waWxlKHJlZ2V4KQorICAgICAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihzdXBwb3J0LlNBVkVEQ1dELCBzZWxmLm5zLmZyb21maWxlKSkgYXMgZnA6CisgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gZnA6CisgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKKyAgICAgICAgICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCcjJyk6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICBtYXRjaCA9IHJlZ2V4Lm1hdGNoKGxpbmUpCisgICAgICAgICAgICAgICAgICAgIGlmIG1hdGNoIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICBzZWxmLnRlc3RzLmFwcGVuZChtYXRjaC5ncm91cCgxKSkKKworICAgICAgICByZW1vdmVweShzZWxmLnRlc3RzKQorCisgICAgICAgIHN0ZHRlc3RzID0gU1REVEVTVFNbOl0KKyAgICAgICAgbm90dGVzdHMgPSBOT1RURVNUUy5jb3B5KCkKKyAgICAgICAgaWYgc2VsZi5ucy5leGNsdWRlOgorICAgICAgICAgICAgZm9yIGFyZyBpbiBzZWxmLm5zLmFyZ3M6CisgICAgICAgICAgICAgICAgaWYgYXJnIGluIHN0ZHRlc3RzOgorICAgICAgICAgICAgICAgICAgICBzdGR0ZXN0cy5yZW1vdmUoYXJnKQorICAgICAgICAgICAgICAgIG5vdHRlc3RzLmFkZChhcmcpCisgICAgICAgICAgICBzZWxmLm5zLmFyZ3MgPSBbXQorCisgICAgICAgICMgaWYgdGVzdGRpciBpcyBzZXQsIHRoZW4gd2UgYXJlIG5vdCBydW5uaW5nIHRoZSBweXRob24gdGVzdHMgc3VpdGUsIHNvCisgICAgICAgICMgZG9uJ3QgYWRkIGRlZmF1bHQgdGVzdHMgdG8gYmUgZXhlY3V0ZWQgb3Igc2tpcHBlZCAocGFzcyBlbXB0eSB2YWx1ZXMpCisgICAgICAgIGlmIHNlbGYubnMudGVzdGRpcjoKKyAgICAgICAgICAgIGFsbHRlc3RzID0gZmluZHRlc3RzKHNlbGYubnMudGVzdGRpciwgbGlzdCgpLCBzZXQoKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFsbHRlc3RzID0gZmluZHRlc3RzKHNlbGYubnMudGVzdGRpciwgc3RkdGVzdHMsIG5vdHRlc3RzKQorCisgICAgICAgIGlmIG5vdCBzZWxmLm5zLmZyb21maWxlOgorICAgICAgICAgICAgc2VsZi5zZWxlY3RlZCA9IHNlbGYudGVzdHMgb3Igc2VsZi5ucy5hcmdzIG9yIGFsbHRlc3RzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLnNlbGVjdGVkID0gc2VsZi50ZXN0cworICAgICAgICBpZiBzZWxmLm5zLnNpbmdsZToKKyAgICAgICAgICAgIHNlbGYuc2VsZWN0ZWQgPSBzZWxmLnNlbGVjdGVkWzoxXQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHBvcyA9IGFsbHRlc3RzLmluZGV4KHNlbGYuc2VsZWN0ZWRbMF0pCisgICAgICAgICAgICAgICAgc2VsZi5uZXh0X3NpbmdsZV90ZXN0ID0gYWxsdGVzdHNbcG9zICsgMV0KKyAgICAgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICAjIFJlbW92ZSBhbGwgdGhlIHNlbGVjdGVkIHRlc3RzIHRoYXQgcHJlY2VkZSBzdGFydCBpZiBpdCdzIHNldC4KKyAgICAgICAgaWYgc2VsZi5ucy5zdGFydDoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBkZWwgc2VsZi5zZWxlY3RlZFs6c2VsZi5zZWxlY3RlZC5pbmRleChzZWxmLm5zLnN0YXJ0KV0KKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgIHByaW50KCJDb3VsZG4ndCBmaW5kIHN0YXJ0aW5nIHRlc3QgKCVzKSwgdXNpbmcgYWxsIHRlc3RzIgorICAgICAgICAgICAgICAgICAgICAgICUgc2VsZi5ucy5zdGFydCwgZmlsZT1zeXMuc3RkZXJyKQorCisgICAgICAgIGlmIHNlbGYubnMucmFuZG9taXplOgorICAgICAgICAgICAgaWYgc2VsZi5ucy5yYW5kb21fc2VlZCBpcyBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYubnMucmFuZG9tX3NlZWQgPSByYW5kb20ucmFuZHJhbmdlKDEwMDAwMDAwKQorICAgICAgICAgICAgcmFuZG9tLnNlZWQoc2VsZi5ucy5yYW5kb21fc2VlZCkKKyAgICAgICAgICAgIHJhbmRvbS5zaHVmZmxlKHNlbGYuc2VsZWN0ZWQpCisKKyAgICBkZWYgbGlzdF90ZXN0cyhzZWxmKToKKyAgICAgICAgZm9yIG5hbWUgaW4gc2VsZi5zZWxlY3RlZDoKKyAgICAgICAgICAgIHByaW50KG5hbWUpCisKKyAgICBkZWYgcmVydW5fZmFpbGVkX3Rlc3RzKHNlbGYpOgorICAgICAgICBzZWxmLm5zLnZlcmJvc2UgPSBUcnVlCisgICAgICAgIHNlbGYubnMuZmFpbGZhc3QgPSBGYWxzZQorICAgICAgICBzZWxmLm5zLnZlcmJvc2UzID0gRmFsc2UKKyAgICAgICAgc2VsZi5ucy5tYXRjaF90ZXN0cyA9IE5vbmUKKworICAgICAgICBwcmludCgiUmUtcnVubmluZyBmYWlsZWQgdGVzdHMgaW4gdmVyYm9zZSBtb2RlIikKKyAgICAgICAgZm9yIHRlc3QgaW4gc2VsZi5iYWRbOl06CisgICAgICAgICAgICBwcmludCgiUmUtcnVubmluZyB0ZXN0ICVyIGluIHZlcmJvc2UgbW9kZSIgJSB0ZXN0LCBmbHVzaD1UcnVlKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYubnMudmVyYm9zZSA9IFRydWUKKyAgICAgICAgICAgICAgICBvayA9IHJ1bnRlc3Qoc2VsZi5ucywgdGVzdCkKKyAgICAgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKKyAgICAgICAgICAgICAgICBzZWxmLmludGVycnVwdGVkID0gVHJ1ZQorICAgICAgICAgICAgICAgICMgcHJpbnQgYSBuZXdsaW5lIHNlcGFyYXRlIGZyb20gdGhlIF5DCisgICAgICAgICAgICAgICAgcHJpbnQoKQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGlmIG9rWzBdIGluIHtQQVNTRUQsIEVOVl9DSEFOR0VELCBTS0lQUEVELCBSRVNPVVJDRV9ERU5JRUR9OgorICAgICAgICAgICAgICAgICAgICBzZWxmLmJhZC5yZW1vdmUodGVzdCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIHNlbGYuYmFkOgorICAgICAgICAgICAgICAgIHByaW50KGNvdW50KGxlbihzZWxmLmJhZCksICd0ZXN0JyksICJmYWlsZWQgYWdhaW46IikKKyAgICAgICAgICAgICAgICBwcmludGxpc3Qoc2VsZi5iYWQpCisKKyAgICBkZWYgZGlzcGxheV9yZXN1bHQoc2VsZik6CisgICAgICAgIGlmIHNlbGYuaW50ZXJydXB0ZWQ6CisgICAgICAgICAgICAjIHByaW50IGEgbmV3bGluZSBhZnRlciBeQworICAgICAgICAgICAgcHJpbnQoKQorICAgICAgICAgICAgcHJpbnQoIlRlc3Qgc3VpdGUgaW50ZXJydXB0ZWQgYnkgc2lnbmFsIFNJR0lOVC4iKQorICAgICAgICAgICAgZXhlY3V0ZWQgPSBzZXQoc2VsZi5nb29kKSB8IHNldChzZWxmLmJhZCkgfCBzZXQoc2VsZi5za2lwcGVkKQorICAgICAgICAgICAgb21pdHRlZCA9IHNldChzZWxmLnNlbGVjdGVkKSAtIGV4ZWN1dGVkCisgICAgICAgICAgICBwcmludChjb3VudChsZW4ob21pdHRlZCksICJ0ZXN0IiksICJvbWl0dGVkOiIpCisgICAgICAgICAgICBwcmludGxpc3Qob21pdHRlZCkKKworICAgICAgICAjIElmIHJ1bm5pbmcgdGhlIHRlc3Qgc3VpdGUgZm9yIFBHTyB0aGVuIG5vIG9uZSBjYXJlcyBhYm91dAorICAgICAgICAjIHJlc3VsdHMuCisgICAgICAgIGlmIHNlbGYubnMucGdvOgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgaWYgc2VsZi5nb29kIGFuZCBub3Qgc2VsZi5ucy5xdWlldDoKKyAgICAgICAgICAgIGlmIChub3Qgc2VsZi5iYWQKKyAgICAgICAgICAgICAgICBhbmQgbm90IHNlbGYuc2tpcHBlZAorICAgICAgICAgICAgICAgIGFuZCBub3Qgc2VsZi5pbnRlcnJ1cHRlZAorICAgICAgICAgICAgICAgIGFuZCBsZW4oc2VsZi5nb29kKSA+IDEpOgorICAgICAgICAgICAgICAgIHByaW50KCJBbGwiLCBlbmQ9JyAnKQorICAgICAgICAgICAgcHJpbnQoY291bnQobGVuKHNlbGYuZ29vZCksICJ0ZXN0IiksICJPSy4iKQorCisgICAgICAgIGlmIHNlbGYubnMucHJpbnRfc2xvdzoKKyAgICAgICAgICAgIHNlbGYudGVzdF90aW1lcy5zb3J0KHJldmVyc2U9VHJ1ZSkKKyAgICAgICAgICAgIHByaW50KCkKKyAgICAgICAgICAgIHByaW50KCIxMCBzbG93ZXN0IHRlc3RzOiIpCisgICAgICAgICAgICBmb3IgdGltZSwgdGVzdCBpbiBzZWxmLnRlc3RfdGltZXNbOjEwXToKKyAgICAgICAgICAgICAgICBwcmludCgiLSAlczogJXMiICUgKHRlc3QsIGZvcm1hdF9kdXJhdGlvbih0aW1lKSkpCisKKyAgICAgICAgaWYgc2VsZi5iYWQ6CisgICAgICAgICAgICBwcmludCgpCisgICAgICAgICAgICBwcmludChjb3VudChsZW4oc2VsZi5iYWQpLCAidGVzdCIpLCAiZmFpbGVkOiIpCisgICAgICAgICAgICBwcmludGxpc3Qoc2VsZi5iYWQpCisKKyAgICAgICAgaWYgc2VsZi5lbnZpcm9ubWVudF9jaGFuZ2VkOgorICAgICAgICAgICAgcHJpbnQoKQorICAgICAgICAgICAgcHJpbnQoInt9IGFsdGVyZWQgdGhlIGV4ZWN1dGlvbiBlbnZpcm9ubWVudDoiLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgIGNvdW50KGxlbihzZWxmLmVudmlyb25tZW50X2NoYW5nZWQpLCAidGVzdCIpKSkKKyAgICAgICAgICAgIHByaW50bGlzdChzZWxmLmVudmlyb25tZW50X2NoYW5nZWQpCisKKyAgICAgICAgaWYgc2VsZi5za2lwcGVkIGFuZCBub3Qgc2VsZi5ucy5xdWlldDoKKyAgICAgICAgICAgIHByaW50KCkKKyAgICAgICAgICAgIHByaW50KGNvdW50KGxlbihzZWxmLnNraXBwZWQpLCAidGVzdCIpLCAic2tpcHBlZDoiKQorICAgICAgICAgICAgcHJpbnRsaXN0KHNlbGYuc2tpcHBlZCkKKworICAgIGRlZiBydW5fdGVzdHNfc2VxdWVudGlhbChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5ucy50cmFjZToKKyAgICAgICAgICAgIGltcG9ydCB0cmFjZQorICAgICAgICAgICAgc2VsZi50cmFjZXIgPSB0cmFjZS5UcmFjZSh0cmFjZT1GYWxzZSwgY291bnQ9VHJ1ZSkKKworICAgICAgICBzYXZlX21vZHVsZXMgPSBzeXMubW9kdWxlcy5rZXlzKCkKKworICAgICAgICBwcmludCgiUnVuIHRlc3RzIHNlcXVlbnRpYWxseSIpCisKKyAgICAgICAgcHJldmlvdXNfdGVzdCA9IE5vbmUKKyAgICAgICAgZm9yIHRlc3RfaW5kZXgsIHRlc3QgaW4gZW51bWVyYXRlKHNlbGYudGVzdHMsIDEpOgorICAgICAgICAgICAgc3RhcnRfdGltZSA9IHRpbWUubW9ub3RvbmljKCkKKworICAgICAgICAgICAgdGV4dCA9IHRlc3QKKyAgICAgICAgICAgIGlmIHByZXZpb3VzX3Rlc3Q6CisgICAgICAgICAgICAgICAgdGV4dCA9ICclcyAtLSAlcycgJSAodGV4dCwgcHJldmlvdXNfdGVzdCkKKyAgICAgICAgICAgIHNlbGYuZGlzcGxheV9wcm9ncmVzcyh0ZXN0X2luZGV4LCB0ZXh0KQorCisgICAgICAgICAgICBpZiBzZWxmLnRyYWNlcjoKKyAgICAgICAgICAgICAgICAjIElmIHdlJ3JlIHRyYWNpbmcgY29kZSBjb3ZlcmFnZSwgdGhlbiB3ZSBkb24ndCBleGl0IHdpdGggc3RhdHVzCisgICAgICAgICAgICAgICAgIyBpZiBvbiBhIGZhbHNlIHJldHVybiB2YWx1ZSBmcm9tIG1haW4uCisgICAgICAgICAgICAgICAgY21kID0gKCdyZXN1bHQgPSBydW50ZXN0KHNlbGYubnMsIHRlc3QpOyAnCisgICAgICAgICAgICAgICAgICAgICAgICdzZWxmLmFjY3VtdWxhdGVfcmVzdWx0KHRlc3QsIHJlc3VsdCknKQorICAgICAgICAgICAgICAgIG5zID0gZGljdChsb2NhbHMoKSkKKyAgICAgICAgICAgICAgICBzZWxmLnRyYWNlci5ydW5jdHgoY21kLCBnbG9iYWxzPWdsb2JhbHMoKSwgbG9jYWxzPW5zKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IG5zWydyZXN1bHQnXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJ1bnRlc3Qoc2VsZi5ucywgdGVzdCkKKyAgICAgICAgICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuaW50ZXJydXB0ZWQgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYWNjdW11bGF0ZV9yZXN1bHQodGVzdCwgKElOVEVSUlVQVEVELCBOb25lKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFjY3VtdWxhdGVfcmVzdWx0KHRlc3QsIHJlc3VsdCkKKworICAgICAgICAgICAgcHJldmlvdXNfdGVzdCA9IGZvcm1hdF90ZXN0X3Jlc3VsdCh0ZXN0LCByZXN1bHRbMF0pCisgICAgICAgICAgICB0ZXN0X3RpbWUgPSB0aW1lLm1vbm90b25pYygpIC0gc3RhcnRfdGltZQorICAgICAgICAgICAgaWYgdGVzdF90aW1lID49IFBST0dSRVNTX01JTl9USU1FOgorICAgICAgICAgICAgICAgIHByZXZpb3VzX3Rlc3QgPSAiJXMgaW4gJXMiICUgKHByZXZpb3VzX3Rlc3QsIGZvcm1hdF9kdXJhdGlvbih0ZXN0X3RpbWUpKQorICAgICAgICAgICAgZWxpZiByZXN1bHRbMF0gPT0gUEFTU0VEOgorICAgICAgICAgICAgICAgICMgYmUgcXVpZXQ6IHNheSBub3RoaW5nIGlmIHRoZSB0ZXN0IHBhc3NlZCBzaG9ydGx5CisgICAgICAgICAgICAgICAgcHJldmlvdXNfdGVzdCA9IE5vbmUKKworICAgICAgICAgICAgaWYgc2VsZi5ucy5maW5kbGVha3M6CisgICAgICAgICAgICAgICAgZ2MuY29sbGVjdCgpCisgICAgICAgICAgICAgICAgaWYgZ2MuZ2FyYmFnZToKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoIldhcm5pbmc6IHRlc3QgY3JlYXRlZCIsIGxlbihnYy5nYXJiYWdlKSwgZW5kPScgJykKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoInVuY29sbGVjdGFibGUgb2JqZWN0KHMpLiIpCisgICAgICAgICAgICAgICAgICAgICMgbW92ZSB0aGUgdW5jb2xsZWN0YWJsZSBvYmplY3RzIHNvbWV3aGVyZSBzbyB3ZSBkb24ndCBzZWUKKyAgICAgICAgICAgICAgICAgICAgIyB0aGVtIGFnYWluCisgICAgICAgICAgICAgICAgICAgIHNlbGYuZm91bmRfZ2FyYmFnZS5leHRlbmQoZ2MuZ2FyYmFnZSkKKyAgICAgICAgICAgICAgICAgICAgZGVsIGdjLmdhcmJhZ2VbOl0KKworICAgICAgICAgICAgIyBVbmxvYWQgdGhlIG5ld2x5IGltcG9ydGVkIG1vZHVsZXMgKGJlc3QgZWZmb3J0IGZpbmFsaXphdGlvbikKKyAgICAgICAgICAgIGZvciBtb2R1bGUgaW4gc3lzLm1vZHVsZXMua2V5cygpOgorICAgICAgICAgICAgICAgIGlmIG1vZHVsZSBub3QgaW4gc2F2ZV9tb2R1bGVzIGFuZCBtb2R1bGUuc3RhcnRzd2l0aCgidGVzdC4iKToKKyAgICAgICAgICAgICAgICAgICAgc3VwcG9ydC51bmxvYWQobW9kdWxlKQorCisgICAgICAgIGlmIHByZXZpb3VzX3Rlc3Q6CisgICAgICAgICAgICBwcmludChwcmV2aW91c190ZXN0KQorCisgICAgZGVmIF90ZXN0X2ZvcmV2ZXIoc2VsZiwgdGVzdHMpOgorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgZm9yIHRlc3QgaW4gdGVzdHM6CisgICAgICAgICAgICAgICAgeWllbGQgdGVzdAorICAgICAgICAgICAgICAgIGlmIHNlbGYuYmFkOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4KKworICAgIGRlZiBydW5fdGVzdHMoc2VsZik6CisgICAgICAgICMgRm9yIGEgcGFydGlhbCBydW4sIHdlIGRvIG5vdCBuZWVkIHRvIGNsdXR0ZXIgdGhlIG91dHB1dC4KKyAgICAgICAgaWYgKHNlbGYubnMudmVyYm9zZQorICAgICAgICAgICAgb3Igc2VsZi5ucy5oZWFkZXIKKyAgICAgICAgICAgIG9yIG5vdCAoc2VsZi5ucy5wZ28gb3Igc2VsZi5ucy5xdWlldCBvciBzZWxmLm5zLnNpbmdsZQorICAgICAgICAgICAgICAgICAgICBvciBzZWxmLnRlc3RzIG9yIHNlbGYubnMuYXJncykpOgorICAgICAgICAgICAgIyBQcmludCBiYXNpYyBwbGF0Zm9ybSBpbmZvcm1hdGlvbgorICAgICAgICAgICAgcHJpbnQoIj09IiwgcGxhdGZvcm0ucHl0aG9uX2ltcGxlbWVudGF0aW9uKCksICpzeXMudmVyc2lvbi5zcGxpdCgpKQorICAgICAgICAgICAgcHJpbnQoIj09ICAiLCBwbGF0Zm9ybS5wbGF0Zm9ybShhbGlhc2VkPVRydWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMtZW5kaWFuIiAlIHN5cy5ieXRlb3JkZXIpCisgICAgICAgICAgICBwcmludCgiPT0gICIsICJoYXNoIGFsZ29yaXRobToiLCBzeXMuaGFzaF9pbmZvLmFsZ29yaXRobSwKKyAgICAgICAgICAgICAgICAgICI2NGJpdCIgaWYgc3lzLm1heHNpemUgPiAyKiozMiBlbHNlICIzMmJpdCIpCisgICAgICAgICAgICBwcmludCgiPT0gIGN3ZDoiLCBvcy5nZXRjd2QoKSkKKyAgICAgICAgICAgIHByaW50KCI9PSAgZW5jb2RpbmdzOiBsb2NhbGU9JXMsIEZTPSVzIgorICAgICAgICAgICAgICAgICAgJSAobG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKSwKKyAgICAgICAgICAgICAgICAgICAgIHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKSkpCisgICAgICAgICAgICBwcmludCgiVGVzdGluZyB3aXRoIGZsYWdzOiIsIHN5cy5mbGFncykKKworICAgICAgICBpZiBzZWxmLm5zLnJhbmRvbWl6ZToKKyAgICAgICAgICAgIHByaW50KCJVc2luZyByYW5kb20gc2VlZCIsIHNlbGYubnMucmFuZG9tX3NlZWQpCisKKyAgICAgICAgaWYgc2VsZi5ucy5mb3JldmVyOgorICAgICAgICAgICAgc2VsZi50ZXN0cyA9IHNlbGYuX3Rlc3RfZm9yZXZlcihsaXN0KHNlbGYuc2VsZWN0ZWQpKQorICAgICAgICAgICAgc2VsZi50ZXN0X2NvdW50ID0gJycKKyAgICAgICAgICAgIHNlbGYudGVzdF9jb3VudF93aWR0aCA9IDMKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYudGVzdHMgPSBpdGVyKHNlbGYuc2VsZWN0ZWQpCisgICAgICAgICAgICBzZWxmLnRlc3RfY291bnQgPSAnL3t9Jy5mb3JtYXQobGVuKHNlbGYuc2VsZWN0ZWQpKQorICAgICAgICAgICAgc2VsZi50ZXN0X2NvdW50X3dpZHRoID0gbGVuKHNlbGYudGVzdF9jb3VudCkgLSAxCisKKyAgICAgICAgaWYgc2VsZi5ucy51c2VfbXA6CisgICAgICAgICAgICBmcm9tIHRlc3QubGlicmVncnRlc3QucnVudGVzdF9tcCBpbXBvcnQgcnVuX3Rlc3RzX211bHRpcHJvY2VzcworICAgICAgICAgICAgcnVuX3Rlc3RzX211bHRpcHJvY2VzcyhzZWxmKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5ydW5fdGVzdHNfc2VxdWVudGlhbCgpCisKKyAgICBkZWYgZmluYWxpemUoc2VsZik6CisgICAgICAgIGlmIHNlbGYubmV4dF9zaW5nbGVfZmlsZW5hbWU6CisgICAgICAgICAgICBpZiBzZWxmLm5leHRfc2luZ2xlX3Rlc3Q6CisgICAgICAgICAgICAgICAgd2l0aCBvcGVuKHNlbGYubmV4dF9zaW5nbGVfZmlsZW5hbWUsICd3JykgYXMgZnA6CisgICAgICAgICAgICAgICAgICAgIGZwLndyaXRlKHNlbGYubmV4dF9zaW5nbGVfdGVzdCArICdcbicpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG9zLnVubGluayhzZWxmLm5leHRfc2luZ2xlX2ZpbGVuYW1lKQorCisgICAgICAgIGlmIHNlbGYudHJhY2VyOgorICAgICAgICAgICAgciA9IHNlbGYudHJhY2VyLnJlc3VsdHMoKQorICAgICAgICAgICAgci53cml0ZV9yZXN1bHRzKHNob3dfbWlzc2luZz1UcnVlLCBzdW1tYXJ5PVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY292ZXJkaXI9c2VsZi5ucy5jb3ZlcmRpcikKKworICAgICAgICBwcmludCgpCisgICAgICAgIGR1cmF0aW9uID0gdGltZS5tb25vdG9uaWMoKSAtIHNlbGYuc3RhcnRfdGltZQorICAgICAgICBwcmludCgiVG90YWwgZHVyYXRpb246ICVzIiAlIGZvcm1hdF9kdXJhdGlvbihkdXJhdGlvbikpCisKKyAgICAgICAgaWYgc2VsZi5iYWQ6CisgICAgICAgICAgICByZXN1bHQgPSAiRkFJTFVSRSIKKyAgICAgICAgZWxpZiBzZWxmLmludGVycnVwdGVkOgorICAgICAgICAgICAgcmVzdWx0ID0gIklOVEVSUlVQVEVEIgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmVzdWx0ID0gIlNVQ0NFU1MiCisgICAgICAgIHByaW50KCJUZXN0cyByZXN1bHQ6ICVzIiAlIHJlc3VsdCkKKworICAgICAgICBpZiBzZWxmLm5zLnJ1bmxlYWtzOgorICAgICAgICAgICAgb3Muc3lzdGVtKCJsZWFrcyAlZCIgJSBvcy5nZXRwaWQoKSkKKworICAgIGRlZiBtYWluKHNlbGYsIHRlc3RzPU5vbmUsICoqa3dhcmdzKToKKyAgICAgICAgZ2xvYmFsIFRFTVBESVIKKworICAgICAgICBpZiBzeXNjb25maWcuaXNfcHl0aG9uX2J1aWxkKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgb3MubWtkaXIoVEVNUERJUikKKyAgICAgICAgICAgIGV4Y2VwdCBGaWxlRXhpc3RzRXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgICMgRGVmaW5lIGEgd3JpdGFibGUgdGVtcCBkaXIgdGhhdCB3aWxsIGJlIHVzZWQgYXMgY3dkIHdoaWxlIHJ1bm5pbmcKKyAgICAgICAgIyB0aGUgdGVzdHMuIFRoZSBuYW1lIG9mIHRoZSBkaXIgaW5jbHVkZXMgdGhlIHBpZCB0byBhbGxvdyBwYXJhbGxlbAorICAgICAgICAjIHRlc3RpbmcgKHNlZSB0aGUgLWogb3B0aW9uKS4KKyAgICAgICAgdGVzdF9jd2QgPSAndGVzdF9weXRob25fe30nLmZvcm1hdChvcy5nZXRwaWQoKSkKKyAgICAgICAgdGVzdF9jd2QgPSBvcy5wYXRoLmpvaW4oVEVNUERJUiwgdGVzdF9jd2QpCisKKyAgICAgICAgIyBSdW4gdGhlIHRlc3RzIGluIGEgY29udGV4dCBtYW5hZ2VyIHRoYXQgdGVtcG9yYXJpbHkgY2hhbmdlcyB0aGUgQ1dEIHRvIGEKKyAgICAgICAgIyB0ZW1wb3JhcnkgYW5kIHdyaXRhYmxlIGRpcmVjdG9yeS4gIElmIGl0J3Mgbm90IHBvc3NpYmxlIHRvIGNyZWF0ZSBvcgorICAgICAgICAjIGNoYW5nZSB0aGUgQ1dELCB0aGUgb3JpZ2luYWwgQ1dEIHdpbGwgYmUgdXNlZC4gIFRoZSBvcmlnaW5hbCBDV0QgaXMKKyAgICAgICAgIyBhdmFpbGFibGUgZnJvbSBzdXBwb3J0LlNBVkVEQ1dELgorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9jd2QodGVzdF9jd2QsIHF1aWV0PVRydWUpOgorICAgICAgICAgICAgc2VsZi5fbWFpbih0ZXN0cywga3dhcmdzKQorCisgICAgZGVmIF9tYWluKHNlbGYsIHRlc3RzLCBrd2FyZ3MpOgorICAgICAgICBzZWxmLm5zID0gc2VsZi5wYXJzZV9hcmdzKGt3YXJncykKKworICAgICAgICBpZiBzZWxmLm5zLnNsYXZlYXJncyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGZyb20gdGVzdC5saWJyZWdydGVzdC5ydW50ZXN0X21wIGltcG9ydCBydW5fdGVzdHNfc2xhdmUKKyAgICAgICAgICAgIHJ1bl90ZXN0c19zbGF2ZShzZWxmLm5zLnNsYXZlYXJncykKKworICAgICAgICBpZiBzZWxmLm5zLndhaXQ6CisgICAgICAgICAgICBpbnB1dCgiUHJlc3MgYW55IGtleSB0byBjb250aW51ZS4uLiIpCisKKyAgICAgICAgc3VwcG9ydC5QR08gPSBzZWxmLm5zLnBnbworCisgICAgICAgIHNldHVwX3Rlc3RzKHNlbGYubnMpCisKKyAgICAgICAgc2VsZi5maW5kX3Rlc3RzKHRlc3RzKQorCisgICAgICAgIGlmIHNlbGYubnMubGlzdF90ZXN0czoKKyAgICAgICAgICAgIHNlbGYubGlzdF90ZXN0cygpCisgICAgICAgICAgICBzeXMuZXhpdCgwKQorCisgICAgICAgIHNlbGYucnVuX3Rlc3RzKCkKKyAgICAgICAgc2VsZi5kaXNwbGF5X3Jlc3VsdCgpCisKKyAgICAgICAgaWYgc2VsZi5ucy52ZXJib3NlMiBhbmQgc2VsZi5iYWQ6CisgICAgICAgICAgICBzZWxmLnJlcnVuX2ZhaWxlZF90ZXN0cygpCisKKyAgICAgICAgc2VsZi5maW5hbGl6ZSgpCisgICAgICAgIHN5cy5leGl0KGxlbihzZWxmLmJhZCkgPiAwIG9yIHNlbGYuaW50ZXJydXB0ZWQpCisKKworZGVmIHJlbW92ZXB5KG5hbWVzKToKKyAgICBpZiBub3QgbmFtZXM6CisgICAgICAgIHJldHVybgorICAgIGZvciBpZHgsIG5hbWUgaW4gZW51bWVyYXRlKG5hbWVzKToKKyAgICAgICAgYmFzZW5hbWUsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQobmFtZSkKKyAgICAgICAgaWYgZXh0ID09ICcucHknOgorICAgICAgICAgICAgbmFtZXNbaWR4XSA9IGJhc2VuYW1lCisKKworZGVmIGNvdW50KG4sIHdvcmQpOgorICAgIGlmIG4gPT0gMToKKyAgICAgICAgcmV0dXJuICIlZCAlcyIgJSAobiwgd29yZCkKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gIiVkICVzcyIgJSAobiwgd29yZCkKKworCitkZWYgcHJpbnRsaXN0KHgsIHdpZHRoPTcwLCBpbmRlbnQ9NCk6CisgICAgIiIiUHJpbnQgdGhlIGVsZW1lbnRzIG9mIGl0ZXJhYmxlIHggdG8gc3Rkb3V0LgorCisgICAgT3B0aW9uYWwgYXJnIHdpZHRoIChkZWZhdWx0IDcwKSBpcyB0aGUgbWF4aW11bSBsaW5lIGxlbmd0aC4KKyAgICBPcHRpb25hbCBhcmcgaW5kZW50IChkZWZhdWx0IDQpIGlzIHRoZSBudW1iZXIgb2YgYmxhbmtzIHdpdGggd2hpY2ggdG8KKyAgICBiZWdpbiBlYWNoIGxpbmUuCisgICAgIiIiCisKKyAgICBibGFua3MgPSAnICcgKiBpbmRlbnQKKyAgICAjIFByaW50IHRoZSBzb3J0ZWQgbGlzdDogJ3gnIG1heSBiZSBhICctLXJhbmRvbScgbGlzdCBvciBhIHNldCgpCisgICAgcHJpbnQodGV4dHdyYXAuZmlsbCgnICcuam9pbihzdHIoZWx0KSBmb3IgZWx0IGluIHNvcnRlZCh4KSksIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbF9pbmRlbnQ9YmxhbmtzLCBzdWJzZXF1ZW50X2luZGVudD1ibGFua3MpKQorCisKK2RlZiBtYWluKHRlc3RzPU5vbmUsICoqa3dhcmdzKToKKyAgICAiIiJSdW4gdGhlIFB5dGhvbiBzdWl0ZS4iIiIKKyAgICBSZWdydGVzdCgpLm1haW4odGVzdHM9dGVzdHMsICoqa3dhcmdzKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbGlicmVncnRlc3QvcmVmbGVhay5weSBiL0xpYi90ZXN0L2xpYnJlZ3J0ZXN0L3JlZmxlYWsucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2IzZDI0NQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2xpYnJlZ3J0ZXN0L3JlZmxlYWsucHkKQEAgLTAsMCArMSwyNjkgQEAKK2ltcG9ydCBlcnJubworaW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBzeXMKK2ltcG9ydCB3YXJuaW5ncworZnJvbSBpbnNwZWN0IGltcG9ydCBpc2Fic3RyYWN0Citmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKKworCit0cnk6CisgICAgTUFYRkQgPSBvcy5zeXNjb25mKCJTQ19PUEVOX01BWCIpCitleGNlcHQgRXhjZXB0aW9uOgorICAgIE1BWEZEID0gMjU2CisKKworZGVmIGZkX2NvdW50KCk6CisgICAgIiIiQ291bnQgdGhlIG51bWJlciBvZiBvcGVuIGZpbGUgZGVzY3JpcHRvcnMiIiIKKyAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgoJ2xpbnV4JywgJ2ZyZWVic2QnKSk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG5hbWVzID0gb3MubGlzdGRpcigiL3Byb2Mvc2VsZi9mZCIpCisgICAgICAgICAgICByZXR1cm4gbGVuKG5hbWVzKQorICAgICAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6CisgICAgICAgICAgICBwYXNzCisKKyAgICBjb3VudCA9IDAKKyAgICBmb3IgZmQgaW4gcmFuZ2UoTUFYRkQpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICAjIFByZWZlciBkdXAoKSBvdmVyIGZzdGF0KCkuIGZzdGF0KCkgY2FuIHJlcXVpcmUgaW5wdXQvb3V0cHV0CisgICAgICAgICAgICAjIHdoZXJlYXMgZHVwKCkgZG9lc24ndC4KKyAgICAgICAgICAgIGZkMiA9IG9zLmR1cChmZCkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRUJBREY6CisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG9zLmNsb3NlKGZkMikKKyAgICAgICAgICAgIGNvdW50ICs9IDEKKyAgICByZXR1cm4gY291bnQKKworCitkZWYgZGFzaF9SKHRoZV9tb2R1bGUsIHRlc3QsIGluZGlyZWN0X3Rlc3QsIGh1bnRybGVha3MpOgorICAgICIiIlJ1biBhIHRlc3QgbXVsdGlwbGUgdGltZXMsIGxvb2tpbmcgZm9yIHJlZmVyZW5jZSBsZWFrcy4KKworICAgIFJldHVybnM6CisgICAgICAgIEZhbHNlIGlmIHRoZSB0ZXN0IGRpZG4ndCBsZWFrIHJlZmVyZW5jZXM7IFRydWUgaWYgd2UgZGV0ZWN0ZWQgcmVmbGVha3MuCisgICAgIiIiCisgICAgIyBUaGlzIGNvZGUgaXMgaGFja2lzaCBhbmQgaW5lbGVnYW50LCBidXQgaXQgc2VlbXMgdG8gZG8gdGhlIGpvYi4KKyAgICBpbXBvcnQgY29weXJlZworICAgIGltcG9ydCBjb2xsZWN0aW9ucy5hYmMKKworICAgIGlmIG5vdCBoYXNhdHRyKHN5cywgJ2dldHRvdGFscmVmY291bnQnKToKKyAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJUcmFja2luZyByZWZlcmVuY2UgbGVha3MgcmVxdWlyZXMgYSBkZWJ1ZyBidWlsZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAib2YgUHl0aG9uIikKKworICAgICMgU2F2ZSBjdXJyZW50IHZhbHVlcyBmb3IgZGFzaF9SX2NsZWFudXAoKSB0byByZXN0b3JlLgorICAgIGZzID0gd2FybmluZ3MuZmlsdGVyc1s6XQorICAgIHBzID0gY29weXJlZy5kaXNwYXRjaF90YWJsZS5jb3B5KCkKKyAgICBwaWMgPSBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS5jb3B5KCkKKyAgICB0cnk6CisgICAgICAgIGltcG9ydCB6aXBpbXBvcnQKKyAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgIHpkYyA9IE5vbmUgIyBSdW4gdW5tb2RpZmllZCBvbiBwbGF0Zm9ybXMgd2l0aG91dCB6aXBpbXBvcnQgc3VwcG9ydAorICAgIGVsc2U6CisgICAgICAgIHpkYyA9IHppcGltcG9ydC5femlwX2RpcmVjdG9yeV9jYWNoZS5jb3B5KCkKKyAgICBhYmNzID0ge30KKyAgICBmb3IgYWJjIGluIFtnZXRhdHRyKGNvbGxlY3Rpb25zLmFiYywgYSkgZm9yIGEgaW4gY29sbGVjdGlvbnMuYWJjLl9fYWxsX19dOgorICAgICAgICBpZiBub3QgaXNhYnN0cmFjdChhYmMpOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgZm9yIG9iaiBpbiBhYmMuX19zdWJjbGFzc2VzX18oKSArIFthYmNdOgorICAgICAgICAgICAgYWJjc1tvYmpdID0gb2JqLl9hYmNfcmVnaXN0cnkuY29weSgpCisKKyAgICBud2FybXVwLCBudHJhY2tlZCwgZm5hbWUgPSBodW50cmxlYWtzCisgICAgZm5hbWUgPSBvcy5wYXRoLmpvaW4oc3VwcG9ydC5TQVZFRENXRCwgZm5hbWUpCisgICAgcmVwY291bnQgPSBud2FybXVwICsgbnRyYWNrZWQKKyAgICByY19kZWx0YXMgPSBbMF0gKiByZXBjb3VudAorICAgIGFsbG9jX2RlbHRhcyA9IFswXSAqIHJlcGNvdW50CisgICAgZmRfZGVsdGFzID0gWzBdICogcmVwY291bnQKKworICAgIHByaW50KCJiZWdpbm5pbmciLCByZXBjb3VudCwgInJlcGV0aXRpb25zIiwgZmlsZT1zeXMuc3RkZXJyKQorICAgIHByaW50KCgiMTIzNDU2Nzg5MCIqKHJlcGNvdW50Ly8xMCArIDEpKVs6cmVwY291bnRdLCBmaWxlPXN5cy5zdGRlcnIsCisgICAgICAgICAgZmx1c2g9VHJ1ZSkKKyAgICAjIGluaXRpYWxpemUgdmFyaWFibGVzIHRvIG1ha2UgcHlmbGFrZXMgcXVpZXQKKyAgICByY19iZWZvcmUgPSBhbGxvY19iZWZvcmUgPSBmZF9iZWZvcmUgPSAwCisgICAgZm9yIGkgaW4gcmFuZ2UocmVwY291bnQpOgorICAgICAgICBpbmRpcmVjdF90ZXN0KCkKKyAgICAgICAgYWxsb2NfYWZ0ZXIsIHJjX2FmdGVyLCBmZF9hZnRlciA9IGRhc2hfUl9jbGVhbnVwKGZzLCBwcywgcGljLCB6ZGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYmNzKQorICAgICAgICBwcmludCgnLicsIGVuZD0nJywgZmx1c2g9VHJ1ZSkKKyAgICAgICAgaWYgaSA+PSBud2FybXVwOgorICAgICAgICAgICAgcmNfZGVsdGFzW2ldID0gcmNfYWZ0ZXIgLSByY19iZWZvcmUKKyAgICAgICAgICAgIGFsbG9jX2RlbHRhc1tpXSA9IGFsbG9jX2FmdGVyIC0gYWxsb2NfYmVmb3JlCisgICAgICAgICAgICBmZF9kZWx0YXNbaV0gPSBmZF9hZnRlciAtIGZkX2JlZm9yZQorICAgICAgICBhbGxvY19iZWZvcmUgPSBhbGxvY19hZnRlcgorICAgICAgICByY19iZWZvcmUgPSByY19hZnRlcgorICAgICAgICBmZF9iZWZvcmUgPSBmZF9hZnRlcgorICAgIHByaW50KGZpbGU9c3lzLnN0ZGVycikKKyAgICAjIFRoZXNlIGNoZWNrZXJzIHJldHVybiBGYWxzZSBvbiBzdWNjZXNzLCBUcnVlIG9uIGZhaWx1cmUKKyAgICBkZWYgY2hlY2tfcmNfZGVsdGFzKGRlbHRhcyk6CisgICAgICAgIHJldHVybiBhbnkoZGVsdGFzKQorICAgIGRlZiBjaGVja19hbGxvY19kZWx0YXMoZGVsdGFzKToKKyAgICAgICAgIyBBdCBsZWFzdCAxLzNyZCBvZiAwcworICAgICAgICBpZiAzICogZGVsdGFzLmNvdW50KDApIDwgbGVuKGRlbHRhcyk6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAjIE5vdGhpbmcgZWxzZSB0aGFuIDFzLCAwcyBhbmQgLTFzCisgICAgICAgIGlmIG5vdCBzZXQoZGVsdGFzKSA8PSB7MSwwLC0xfToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBGYWxzZQorICAgIGZhaWxlZCA9IEZhbHNlCisgICAgZm9yIGRlbHRhcywgaXRlbV9uYW1lLCBjaGVja2VyIGluIFsKKyAgICAgICAgKHJjX2RlbHRhcywgJ3JlZmVyZW5jZXMnLCBjaGVja19yY19kZWx0YXMpLAorICAgICAgICAoYWxsb2NfZGVsdGFzLCAnbWVtb3J5IGJsb2NrcycsIGNoZWNrX2FsbG9jX2RlbHRhcyksCisgICAgICAgIChmZF9kZWx0YXMsICdmaWxlIGRlc2NyaXB0b3JzJywgY2hlY2tfcmNfZGVsdGFzKV06CisgICAgICAgIGlmIGNoZWNrZXIoZGVsdGFzKToKKyAgICAgICAgICAgIG1zZyA9ICclcyBsZWFrZWQgJXMgJXMsIHN1bT0lcycgJSAoCisgICAgICAgICAgICAgICAgdGVzdCwgZGVsdGFzW253YXJtdXA6XSwgaXRlbV9uYW1lLCBzdW0oZGVsdGFzKSkKKyAgICAgICAgICAgIHByaW50KG1zZywgZmlsZT1zeXMuc3RkZXJyLCBmbHVzaD1UcnVlKQorICAgICAgICAgICAgd2l0aCBvcGVuKGZuYW1lLCAiYSIpIGFzIHJlZnJlcDoKKyAgICAgICAgICAgICAgICBwcmludChtc2csIGZpbGU9cmVmcmVwKQorICAgICAgICAgICAgICAgIHJlZnJlcC5mbHVzaCgpCisgICAgICAgICAgICBmYWlsZWQgPSBUcnVlCisgICAgcmV0dXJuIGZhaWxlZAorCisKK2RlZiBkYXNoX1JfY2xlYW51cChmcywgcHMsIHBpYywgemRjLCBhYmNzKToKKyAgICBpbXBvcnQgZ2MsIGNvcHlyZWcKKyAgICBpbXBvcnQgY29sbGVjdGlvbnMuYWJjCisgICAgZnJvbSB3ZWFrcmVmIGltcG9ydCBXZWFrU2V0CisKKyAgICAjIFJlc3RvcmUgc29tZSBvcmlnaW5hbCB2YWx1ZXMuCisgICAgd2FybmluZ3MuZmlsdGVyc1s6XSA9IGZzCisgICAgY29weXJlZy5kaXNwYXRjaF90YWJsZS5jbGVhcigpCisgICAgY29weXJlZy5kaXNwYXRjaF90YWJsZS51cGRhdGUocHMpCisgICAgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUuY2xlYXIoKQorICAgIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLnVwZGF0ZShwaWMpCisgICAgdHJ5OgorICAgICAgICBpbXBvcnQgemlwaW1wb3J0CisgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICBwYXNzICMgUnVuIHVubW9kaWZpZWQgb24gcGxhdGZvcm1zIHdpdGhvdXQgemlwaW1wb3J0IHN1cHBvcnQKKyAgICBlbHNlOgorICAgICAgICB6aXBpbXBvcnQuX3ppcF9kaXJlY3RvcnlfY2FjaGUuY2xlYXIoKQorICAgICAgICB6aXBpbXBvcnQuX3ppcF9kaXJlY3RvcnlfY2FjaGUudXBkYXRlKHpkYykKKworICAgICMgY2xlYXIgdHlwZSBjYWNoZQorICAgIHN5cy5fY2xlYXJfdHlwZV9jYWNoZSgpCisKKyAgICAjIENsZWFyIEFCQyByZWdpc3RyaWVzLCByZXN0b3JpbmcgcHJldmlvdXNseSBzYXZlZCBBQkMgcmVnaXN0cmllcy4KKyAgICBmb3IgYWJjIGluIFtnZXRhdHRyKGNvbGxlY3Rpb25zLmFiYywgYSkgZm9yIGEgaW4gY29sbGVjdGlvbnMuYWJjLl9fYWxsX19dOgorICAgICAgICBpZiBub3QgaXNhYnN0cmFjdChhYmMpOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgZm9yIG9iaiBpbiBhYmMuX19zdWJjbGFzc2VzX18oKSArIFthYmNdOgorICAgICAgICAgICAgb2JqLl9hYmNfcmVnaXN0cnkgPSBhYmNzLmdldChvYmosIFdlYWtTZXQoKSkuY29weSgpCisgICAgICAgICAgICBvYmouX2FiY19jYWNoZS5jbGVhcigpCisgICAgICAgICAgICBvYmouX2FiY19uZWdhdGl2ZV9jYWNoZS5jbGVhcigpCisKKyAgICBjbGVhcl9jYWNoZXMoKQorCisgICAgIyBDb2xsZWN0IGN5Y2xpYyB0cmFzaCBhbmQgcmVhZCBtZW1vcnkgc3RhdGlzdGljcyBpbW1lZGlhdGVseSBhZnRlci4KKyAgICBmdW5jMSA9IHN5cy5nZXRhbGxvY2F0ZWRibG9ja3MKKyAgICBmdW5jMiA9IHN5cy5nZXR0b3RhbHJlZmNvdW50CisgICAgZ2MuY29sbGVjdCgpCisgICAgcmV0dXJuIGZ1bmMxKCksIGZ1bmMyKCksIGZkX2NvdW50KCkKKworCitkZWYgY2xlYXJfY2FjaGVzKCk6CisgICAgaW1wb3J0IGdjCisKKyAgICAjIENsZWFyIHRoZSB3YXJuaW5ncyByZWdpc3RyeSwgc28gdGhleSBjYW4gYmUgZGlzcGxheWVkIGFnYWluCisgICAgZm9yIG1vZCBpbiBzeXMubW9kdWxlcy52YWx1ZXMoKToKKyAgICAgICAgaWYgaGFzYXR0cihtb2QsICdfX3dhcm5pbmdyZWdpc3RyeV9fJyk6CisgICAgICAgICAgICBkZWwgbW9kLl9fd2FybmluZ3JlZ2lzdHJ5X18KKworICAgICMgRmx1c2ggc3RhbmRhcmQgb3V0cHV0LCBzbyB0aGF0IGJ1ZmZlcmVkIGRhdGEgaXMgc2VudCB0byB0aGUgT1MgYW5kCisgICAgIyBhc3NvY2lhdGVkIFB5dGhvbiBvYmplY3RzIGFyZSByZWNsYWltZWQuCisgICAgZm9yIHN0cmVhbSBpbiAoc3lzLnN0ZG91dCwgc3lzLnN0ZGVyciwgc3lzLl9fc3Rkb3V0X18sIHN5cy5fX3N0ZGVycl9fKToKKyAgICAgICAgaWYgc3RyZWFtIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc3RyZWFtLmZsdXNoKCkKKworICAgICMgQ2xlYXIgYXNzb3J0ZWQgbW9kdWxlIGNhY2hlcy4KKyAgICAjIERvbid0IHdvcnJ5IGFib3V0IHJlc2V0dGluZyB0aGUgY2FjaGUgaWYgdGhlIG1vZHVsZSBpcyBub3QgbG9hZGVkCisgICAgdHJ5OgorICAgICAgICBkaXN0dXRpbHNfZGlyX3V0aWwgPSBzeXMubW9kdWxlc1snZGlzdHV0aWxzLmRpcl91dGlsJ10KKyAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgIHBhc3MKKyAgICBlbHNlOgorICAgICAgICBkaXN0dXRpbHNfZGlyX3V0aWwuX3BhdGhfY3JlYXRlZC5jbGVhcigpCisgICAgcmUucHVyZ2UoKQorCisgICAgdHJ5OgorICAgICAgICBfc3RycHRpbWUgPSBzeXMubW9kdWxlc1snX3N0cnB0aW1lJ10KKyAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgIHBhc3MKKyAgICBlbHNlOgorICAgICAgICBfc3RycHRpbWUuX3JlZ2V4X2NhY2hlLmNsZWFyKCkKKworICAgIHRyeToKKyAgICAgICAgdXJsbGliX3BhcnNlID0gc3lzLm1vZHVsZXNbJ3VybGxpYi5wYXJzZSddCisgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICBwYXNzCisgICAgZWxzZToKKyAgICAgICAgdXJsbGliX3BhcnNlLmNsZWFyX2NhY2hlKCkKKworICAgIHRyeToKKyAgICAgICAgdXJsbGliX3JlcXVlc3QgPSBzeXMubW9kdWxlc1sndXJsbGliLnJlcXVlc3QnXQorICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgcGFzcworICAgIGVsc2U6CisgICAgICAgIHVybGxpYl9yZXF1ZXN0LnVybGNsZWFudXAoKQorCisgICAgdHJ5OgorICAgICAgICBsaW5lY2FjaGUgPSBzeXMubW9kdWxlc1snbGluZWNhY2hlJ10KKyAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgIHBhc3MKKyAgICBlbHNlOgorICAgICAgICBsaW5lY2FjaGUuY2xlYXJjYWNoZSgpCisKKyAgICB0cnk6CisgICAgICAgIG1pbWV0eXBlcyA9IHN5cy5tb2R1bGVzWydtaW1ldHlwZXMnXQorICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgcGFzcworICAgIGVsc2U6CisgICAgICAgIG1pbWV0eXBlcy5fZGVmYXVsdF9taW1lX3R5cGVzKCkKKworICAgIHRyeToKKyAgICAgICAgZmlsZWNtcCA9IHN5cy5tb2R1bGVzWydmaWxlY21wJ10KKyAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgIHBhc3MKKyAgICBlbHNlOgorICAgICAgICBmaWxlY21wLl9jYWNoZS5jbGVhcigpCisKKyAgICB0cnk6CisgICAgICAgIHN0cnVjdCA9IHN5cy5tb2R1bGVzWydzdHJ1Y3QnXQorICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgcGFzcworICAgIGVsc2U6CisgICAgICAgIHN0cnVjdC5fY2xlYXJjYWNoZSgpCisKKyAgICB0cnk6CisgICAgICAgIGRvY3Rlc3QgPSBzeXMubW9kdWxlc1snZG9jdGVzdCddCisgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICBwYXNzCisgICAgZWxzZToKKyAgICAgICAgZG9jdGVzdC5tYXN0ZXIgPSBOb25lCisKKyAgICB0cnk6CisgICAgICAgIGN0eXBlcyA9IHN5cy5tb2R1bGVzWydjdHlwZXMnXQorICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgcGFzcworICAgIGVsc2U6CisgICAgICAgIGN0eXBlcy5fcmVzZXRfY2FjaGUoKQorCisgICAgdHJ5OgorICAgICAgICB0eXBpbmcgPSBzeXMubW9kdWxlc1sndHlwaW5nJ10KKyAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgIHBhc3MKKyAgICBlbHNlOgorICAgICAgICBmb3IgZiBpbiB0eXBpbmcuX2NsZWFudXBzOgorICAgICAgICAgICAgZigpCisKKyAgICBnYy5jb2xsZWN0KCkKKworCitkZWYgd2FybV9jYWNoZXMoKToKKyAgICAjIGNoYXIgY2FjaGUKKyAgICBzID0gYnl0ZXMocmFuZ2UoMjU2KSkKKyAgICBmb3IgaSBpbiByYW5nZSgyNTYpOgorICAgICAgICBzW2k6aSsxXQorICAgICMgdW5pY29kZSBjYWNoZQorICAgIFtjaHIoaSkgZm9yIGkgaW4gcmFuZ2UoMjU2KV0KKyAgICAjIGludCBjYWNoZQorICAgIGxpc3QocmFuZ2UoLTUsIDI1NykpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9saWJyZWdydGVzdC9ydW50ZXN0LnB5IGIvTGliL3Rlc3QvbGlicmVncnRlc3QvcnVudGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTBkZjBhCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvbGlicmVncnRlc3QvcnVudGVzdC5weQpAQCAtMCwwICsxLDI0NSBAQAoraW1wb3J0IGZhdWx0aGFuZGxlcgoraW1wb3J0IGltcG9ydGxpYgoraW1wb3J0IGlvCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB0aW1lCitpbXBvcnQgdHJhY2ViYWNrCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorZnJvbSB0ZXN0LmxpYnJlZ3J0ZXN0LnJlZmxlYWsgaW1wb3J0IGRhc2hfUiwgY2xlYXJfY2FjaGVzCitmcm9tIHRlc3QubGlicmVncnRlc3Quc2F2ZV9lbnYgaW1wb3J0IHNhdmVkX3Rlc3RfZW52aXJvbm1lbnQKKworCisjIFRlc3QgcmVzdWx0IGNvbnN0YW50cy4KK1BBU1NFRCA9IDEKK0ZBSUxFRCA9IDAKK0VOVl9DSEFOR0VEID0gLTEKK1NLSVBQRUQgPSAtMgorUkVTT1VSQ0VfREVOSUVEID0gLTMKK0lOVEVSUlVQVEVEID0gLTQKK0NISUxEX0VSUk9SID0gLTUgICAjIGVycm9yIGluIGEgY2hpbGQgcHJvY2VzcworCitfRk9STUFUX1RFU1RfUkVTVUxUID0geworICAgIFBBU1NFRDogJyVzIHBhc3NlZCcsCisgICAgRkFJTEVEOiAnJXMgZmFpbGVkJywKKyAgICBFTlZfQ0hBTkdFRDogJyVzIGZhaWxlZCAoZW52IGNoYW5nZWQpJywKKyAgICBTS0lQUEVEOiAnJXMgc2tpcHBlZCcsCisgICAgUkVTT1VSQ0VfREVOSUVEOiAnJXMgc2tpcHBlZCAocmVzb3VyY2UgZGVuaWVkKScsCisgICAgSU5URVJSVVBURUQ6ICclcyBpbnRlcnJ1cHRlZCcsCisgICAgQ0hJTERfRVJST1I6ICclcyBjcmFzaGVkJywKK30KKworIyBNaW5pbXVtIGR1cmF0aW9uIG9mIGEgdGVzdCB0byBkaXNwbGF5IGl0cyBkdXJhdGlvbiBvciB0byBtZW50aW9uIHRoYXQKKyMgdGhlIHRlc3QgaXMgcnVubmluZyBpbiBiYWNrZ3JvdW5kCitQUk9HUkVTU19NSU5fVElNRSA9IDMwLjAgICAjIHNlY29uZHMKKworIyBzbWFsbCBzZXQgb2YgdGVzdHMgdG8gZGV0ZXJtaW5lIGlmIHdlIGhhdmUgYSBiYXNpY2FsbHkgZnVuY3Rpb25pbmcgaW50ZXJwcmV0ZXIKKyMgKGkuZS4gaWYgYW55IG9mIHRoZXNlIGZhaWwsIHRoZW4gYW55dGhpbmcgZWxzZSBpcyBsaWtlbHkgdG8gZm9sbG93KQorU1REVEVTVFMgPSBbCisgICAgJ3Rlc3RfZ3JhbW1hcicsCisgICAgJ3Rlc3Rfb3Bjb2RlcycsCisgICAgJ3Rlc3RfZGljdCcsCisgICAgJ3Rlc3RfYnVpbHRpbicsCisgICAgJ3Rlc3RfZXhjZXB0aW9ucycsCisgICAgJ3Rlc3RfdHlwZXMnLAorICAgICd0ZXN0X3VuaXR0ZXN0JywKKyAgICAndGVzdF9kb2N0ZXN0JywKKyAgICAndGVzdF9kb2N0ZXN0MicsCisgICAgJ3Rlc3Rfc3VwcG9ydCcKK10KKworIyBzZXQgb2YgdGVzdHMgdGhhdCB3ZSBkb24ndCB3YW50IHRvIGJlIGV4ZWN1dGVkIHdoZW4gdXNpbmcgcmVncnRlc3QKK05PVFRFU1RTID0gc2V0KCkKKworCitkZWYgZm9ybWF0X3Rlc3RfcmVzdWx0KHRlc3RfbmFtZSwgcmVzdWx0KToKKyAgICBmbXQgPSBfRk9STUFUX1RFU1RfUkVTVUxULmdldChyZXN1bHQsICIlcyIpCisgICAgcmV0dXJuIGZtdCAlIHRlc3RfbmFtZQorCisKK2RlZiBmaW5kdGVzdHModGVzdGRpcj1Ob25lLCBzdGR0ZXN0cz1TVERURVNUUywgbm90dGVzdHM9Tk9UVEVTVFMpOgorICAgICIiIlJldHVybiBhIGxpc3Qgb2YgYWxsIGFwcGxpY2FibGUgdGVzdCBtb2R1bGVzLiIiIgorICAgIHRlc3RkaXIgPSBmaW5kdGVzdGRpcih0ZXN0ZGlyKQorICAgIG5hbWVzID0gb3MubGlzdGRpcih0ZXN0ZGlyKQorICAgIHRlc3RzID0gW10KKyAgICBvdGhlcnMgPSBzZXQoc3RkdGVzdHMpIHwgbm90dGVzdHMKKyAgICBmb3IgbmFtZSBpbiBuYW1lczoKKyAgICAgICAgbW9kLCBleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KG5hbWUpCisgICAgICAgIGlmIG1vZFs6NV0gPT0gInRlc3RfIiBhbmQgZXh0IGluICgiLnB5IiwgIiIpIGFuZCBtb2Qgbm90IGluIG90aGVyczoKKyAgICAgICAgICAgIHRlc3RzLmFwcGVuZChtb2QpCisgICAgcmV0dXJuIHN0ZHRlc3RzICsgc29ydGVkKHRlc3RzKQorCisKK2RlZiBydW50ZXN0KG5zLCB0ZXN0KToKKyAgICAiIiJSdW4gYSBzaW5nbGUgdGVzdC4KKworICAgIG5zIC0tIHJlZ3J0ZXN0IG5hbWVzcGFjZSBvZiBvcHRpb25zCisgICAgdGVzdCAtLSB0aGUgbmFtZSBvZiB0aGUgdGVzdAorCisgICAgUmV0dXJucyB0aGUgdHVwbGUgKHJlc3VsdCwgdGVzdF90aW1lKSwgd2hlcmUgcmVzdWx0IGlzIG9uZSBvZiB0aGUKKyAgICBjb25zdGFudHM6CisKKyAgICAgICAgSU5URVJSVVBURUQgICAgICBLZXlib2FyZEludGVycnVwdCB3aGVuIHJ1biB1bmRlciAtagorICAgICAgICBSRVNPVVJDRV9ERU5JRUQgIHRlc3Qgc2tpcHBlZCBiZWNhdXNlIHJlc291cmNlIGRlbmllZAorICAgICAgICBTS0lQUEVEICAgICAgICAgIHRlc3Qgc2tpcHBlZCBmb3Igc29tZSBvdGhlciByZWFzb24KKyAgICAgICAgRU5WX0NIQU5HRUQgICAgICB0ZXN0IGZhaWxlZCBiZWNhdXNlIGl0IGNoYW5nZWQgdGhlIGV4ZWN1dGlvbiBlbnZpcm9ubWVudAorICAgICAgICBGQUlMRUQgICAgICAgICAgIHRlc3QgZmFpbGVkCisgICAgICAgIFBBU1NFRCAgICAgICAgICAgdGVzdCBwYXNzZWQKKyAgICAiIiIKKworICAgIG91dHB1dF9vbl9mYWlsdXJlID0gbnMudmVyYm9zZTMKKworICAgIHVzZV90aW1lb3V0ID0gKG5zLnRpbWVvdXQgaXMgbm90IE5vbmUpCisgICAgaWYgdXNlX3RpbWVvdXQ6CisgICAgICAgIGZhdWx0aGFuZGxlci5kdW1wX3RyYWNlYmFja19sYXRlcihucy50aW1lb3V0LCBleGl0PVRydWUpCisgICAgdHJ5OgorICAgICAgICBzdXBwb3J0Lm1hdGNoX3Rlc3RzID0gbnMubWF0Y2hfdGVzdHMKKyAgICAgICAgaWYgbnMuZmFpbGZhc3Q6CisgICAgICAgICAgICBzdXBwb3J0LmZhaWxmYXN0ID0gVHJ1ZQorICAgICAgICBpZiBvdXRwdXRfb25fZmFpbHVyZToKKyAgICAgICAgICAgIHN1cHBvcnQudmVyYm9zZSA9IFRydWUKKworICAgICAgICAgICAgIyBSZXVzZSB0aGUgc2FtZSBpbnN0YW5jZSB0byBhbGwgY2FsbHMgdG8gcnVudGVzdCgpLiBTb21lCisgICAgICAgICAgICAjIHRlc3RzIGtlZXAgYSByZWZlcmVuY2UgdG8gc3lzLnN0ZG91dCBvciBzeXMuc3RkZXJyCisgICAgICAgICAgICAjIChlZy4gdGVzdF9hcmdwYXJzZSkuCisgICAgICAgICAgICBpZiBydW50ZXN0LnN0cmluZ2lvIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgc3RyZWFtID0gaW8uU3RyaW5nSU8oKQorICAgICAgICAgICAgICAgIHJ1bnRlc3Quc3RyaW5naW8gPSBzdHJlYW0KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc3RyZWFtID0gcnVudGVzdC5zdHJpbmdpbworICAgICAgICAgICAgICAgIHN0cmVhbS5zZWVrKDApCisgICAgICAgICAgICAgICAgc3RyZWFtLnRydW5jYXRlKCkKKworICAgICAgICAgICAgb3JpZ19zdGRvdXQgPSBzeXMuc3Rkb3V0CisgICAgICAgICAgICBvcmlnX3N0ZGVyciA9IHN5cy5zdGRlcnIKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0ID0gc3RyZWFtCisgICAgICAgICAgICAgICAgc3lzLnN0ZGVyciA9IHN0cmVhbQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJ1bnRlc3RfaW5uZXIobnMsIHRlc3QsIGRpc3BsYXlfZmFpbHVyZT1GYWxzZSkKKyAgICAgICAgICAgICAgICBpZiByZXN1bHRbMF0gIT0gUEFTU0VEOgorICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSBzdHJlYW0uZ2V0dmFsdWUoKQorICAgICAgICAgICAgICAgICAgICBvcmlnX3N0ZGVyci53cml0ZShvdXRwdXQpCisgICAgICAgICAgICAgICAgICAgIG9yaWdfc3RkZXJyLmZsdXNoKCkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgc3lzLnN0ZG91dCA9IG9yaWdfc3Rkb3V0CisgICAgICAgICAgICAgICAgc3lzLnN0ZGVyciA9IG9yaWdfc3RkZXJyCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzdXBwb3J0LnZlcmJvc2UgPSBucy52ZXJib3NlICAjIFRlbGwgdGVzdHMgdG8gYmUgbW9kZXJhdGVseSBxdWlldAorICAgICAgICAgICAgcmVzdWx0ID0gcnVudGVzdF9pbm5lcihucywgdGVzdCwgZGlzcGxheV9mYWlsdXJlPW5vdCBucy52ZXJib3NlKQorICAgICAgICByZXR1cm4gcmVzdWx0CisgICAgZmluYWxseToKKyAgICAgICAgaWYgdXNlX3RpbWVvdXQ6CisgICAgICAgICAgICBmYXVsdGhhbmRsZXIuY2FuY2VsX2R1bXBfdHJhY2ViYWNrX2xhdGVyKCkKKyAgICAgICAgY2xlYW51cF90ZXN0X2Ryb3BwaW5ncyh0ZXN0LCBucy52ZXJib3NlKQorcnVudGVzdC5zdHJpbmdpbyA9IE5vbmUKKworCitkZWYgcnVudGVzdF9pbm5lcihucywgdGVzdCwgZGlzcGxheV9mYWlsdXJlPVRydWUpOgorICAgIHN1cHBvcnQudW5sb2FkKHRlc3QpCisKKyAgICB0ZXN0X3RpbWUgPSAwLjAKKyAgICByZWZsZWFrID0gRmFsc2UgICMgVHJ1ZSBpZiB0aGUgdGVzdCBsZWFrZWQgcmVmZXJlbmNlcy4KKyAgICB0cnk6CisgICAgICAgIGlmIHRlc3Quc3RhcnRzd2l0aCgndGVzdC4nKSBvciBucy50ZXN0ZGlyOgorICAgICAgICAgICAgYWJzdGVzdCA9IHRlc3QKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgQWx3YXlzIGltcG9ydCBpdCBmcm9tIHRoZSB0ZXN0IHBhY2thZ2UKKyAgICAgICAgICAgIGFic3Rlc3QgPSAndGVzdC4nICsgdGVzdAorICAgICAgICBjbGVhcl9jYWNoZXMoKQorICAgICAgICB3aXRoIHNhdmVkX3Rlc3RfZW52aXJvbm1lbnQodGVzdCwgbnMudmVyYm9zZSwgbnMucXVpZXQsIHBnbz1ucy5wZ28pIGFzIGVudmlyb25tZW50OgorICAgICAgICAgICAgc3RhcnRfdGltZSA9IHRpbWUudGltZSgpCisgICAgICAgICAgICB0aGVfbW9kdWxlID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoYWJzdGVzdCkKKyAgICAgICAgICAgICMgSWYgdGhlIHRlc3QgaGFzIGEgdGVzdF9tYWluLCB0aGF0IHdpbGwgcnVuIHRoZSBhcHByb3ByaWF0ZQorICAgICAgICAgICAgIyB0ZXN0cy4gIElmIG5vdCwgdXNlIG5vcm1hbCB1bml0dGVzdCB0ZXN0IGxvYWRpbmcuCisgICAgICAgICAgICB0ZXN0X3J1bm5lciA9IGdldGF0dHIodGhlX21vZHVsZSwgInRlc3RfbWFpbiIsIE5vbmUpCisgICAgICAgICAgICBpZiB0ZXN0X3J1bm5lciBpcyBOb25lOgorICAgICAgICAgICAgICAgIGRlZiB0ZXN0X3J1bm5lcigpOgorICAgICAgICAgICAgICAgICAgICBsb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKKyAgICAgICAgICAgICAgICAgICAgdGVzdHMgPSBsb2FkZXIubG9hZFRlc3RzRnJvbU1vZHVsZSh0aGVfbW9kdWxlKQorICAgICAgICAgICAgICAgICAgICBmb3IgZXJyb3IgaW4gbG9hZGVyLmVycm9yczoKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KGVycm9yLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgICAgICAgICAgICAgIGlmIGxvYWRlci5lcnJvcnM6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oImVycm9ycyB3aGlsZSBsb2FkaW5nIHRlc3RzIikKKyAgICAgICAgICAgICAgICAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QodGVzdHMpCisgICAgICAgICAgICB0ZXN0X3J1bm5lcigpCisgICAgICAgICAgICBpZiBucy5odW50cmxlYWtzOgorICAgICAgICAgICAgICAgIHJlZmxlYWsgPSBkYXNoX1IodGhlX21vZHVsZSwgdGVzdCwgdGVzdF9ydW5uZXIsIG5zLmh1bnRybGVha3MpCisgICAgICAgICAgICB0ZXN0X3RpbWUgPSB0aW1lLnRpbWUoKSAtIHN0YXJ0X3RpbWUKKyAgICBleGNlcHQgc3VwcG9ydC5SZXNvdXJjZURlbmllZCBhcyBtc2c6CisgICAgICAgIGlmIG5vdCBucy5xdWlldCBhbmQgbm90IG5zLnBnbzoKKyAgICAgICAgICAgIHByaW50KHRlc3QsICJza2lwcGVkIC0tIiwgbXNnLCBmbHVzaD1UcnVlKQorICAgICAgICByZXR1cm4gUkVTT1VSQ0VfREVOSUVELCB0ZXN0X3RpbWUKKyAgICBleGNlcHQgdW5pdHRlc3QuU2tpcFRlc3QgYXMgbXNnOgorICAgICAgICBpZiBub3QgbnMucXVpZXQgYW5kIG5vdCBucy5wZ286CisgICAgICAgICAgICBwcmludCh0ZXN0LCAic2tpcHBlZCAtLSIsIG1zZywgZmx1c2g9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIFNLSVBQRUQsIHRlc3RfdGltZQorICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKKyAgICAgICAgcmFpc2UKKyAgICBleGNlcHQgc3VwcG9ydC5UZXN0RmFpbGVkIGFzIG1zZzoKKyAgICAgICAgaWYgbm90IG5zLnBnbzoKKyAgICAgICAgICAgIGlmIGRpc3BsYXlfZmFpbHVyZToKKyAgICAgICAgICAgICAgICBwcmludCgidGVzdCIsIHRlc3QsICJmYWlsZWQgLS0iLCBtc2csIGZpbGU9c3lzLnN0ZGVyciwKKyAgICAgICAgICAgICAgICAgICAgICBmbHVzaD1UcnVlKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBwcmludCgidGVzdCIsIHRlc3QsICJmYWlsZWQiLCBmaWxlPXN5cy5zdGRlcnIsIGZsdXNoPVRydWUpCisgICAgICAgIHJldHVybiBGQUlMRUQsIHRlc3RfdGltZQorICAgIGV4Y2VwdDoKKyAgICAgICAgbXNnID0gdHJhY2ViYWNrLmZvcm1hdF9leGMoKQorICAgICAgICBpZiBub3QgbnMucGdvOgorICAgICAgICAgICAgcHJpbnQoInRlc3QiLCB0ZXN0LCAiY3Jhc2hlZCAtLSIsIG1zZywgZmlsZT1zeXMuc3RkZXJyLAorICAgICAgICAgICAgICAgICAgZmx1c2g9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIEZBSUxFRCwgdGVzdF90aW1lCisgICAgZWxzZToKKyAgICAgICAgaWYgcmVmbGVhazoKKyAgICAgICAgICAgIHJldHVybiBGQUlMRUQsIHRlc3RfdGltZQorICAgICAgICBpZiBlbnZpcm9ubWVudC5jaGFuZ2VkOgorICAgICAgICAgICAgcmV0dXJuIEVOVl9DSEFOR0VELCB0ZXN0X3RpbWUKKyAgICAgICAgcmV0dXJuIFBBU1NFRCwgdGVzdF90aW1lCisKKworZGVmIGNsZWFudXBfdGVzdF9kcm9wcGluZ3ModGVzdG5hbWUsIHZlcmJvc2UpOgorICAgIGltcG9ydCBzaHV0aWwKKyAgICBpbXBvcnQgc3RhdAorICAgIGltcG9ydCBnYworCisgICAgIyBGaXJzdCBraWxsIGFueSBkYW5nbGluZyByZWZlcmVuY2VzIHRvIG9wZW4gZmlsZXMgZXRjLgorICAgICMgVGhpcyBjYW4gYWxzbyBpc3N1ZSBzb21lIFJlc291cmNlV2FybmluZ3Mgd2hpY2ggd291bGQgb3RoZXJ3aXNlIGdldAorICAgICMgdHJpZ2dlcmVkIGR1cmluZyB0aGUgZm9sbG93aW5nIHRlc3QgcnVuLCBhbmQgcG9zc2libHkgcHJvZHVjZSBmYWlsdXJlcy4KKyAgICBnYy5jb2xsZWN0KCkKKworICAgICMgVHJ5IHRvIGNsZWFuIHVwIGp1bmsgY29tbW9ubHkgbGVmdCBiZWhpbmQuICBXaGlsZSB0ZXN0cyBzaG91bGRuJ3QgbGVhdmUKKyAgICAjIGFueSBmaWxlcyBvciBkaXJlY3RvcmllcyBiZWhpbmQsIHdoZW4gYSB0ZXN0IGZhaWxzIHRoYXQgY2FuIGJlIHRlZGlvdXMKKyAgICAjIGZvciBpdCB0byBhcnJhbmdlLiAgVGhlIGNvbnNlcXVlbmNlcyBjYW4gYmUgZXNwZWNpYWxseSBuYXN0eSBvbiBXaW5kb3dzLAorICAgICMgc2luY2UgaWYgYSB0ZXN0IGxlYXZlcyBhIGZpbGUgb3BlbiwgaXQgY2Fubm90IGJlIGRlbGV0ZWQgYnkgbmFtZSAod2hpbGUKKyAgICAjIHRoZXJlJ3Mgbm90aGluZyB3ZSBjYW4gZG8gYWJvdXQgdGhhdCBoZXJlIGVpdGhlciwgd2UgY2FuIGRpc3BsYXkgdGhlCisgICAgIyBuYW1lIG9mIHRoZSBvZmZlbmRpbmcgdGVzdCwgd2hpY2ggaXMgYSByZWFsIGhlbHApLgorICAgIGZvciBuYW1lIGluIChzdXBwb3J0LlRFU1RGTiwKKyAgICAgICAgICAgICAgICAgImRiX2hvbWUiLAorICAgICAgICAgICAgICAgICk6CisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhuYW1lKToKKyAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgaWYgb3MucGF0aC5pc2RpcihuYW1lKToKKyAgICAgICAgICAgIGtpbmQsIG51a2VyID0gImRpcmVjdG9yeSIsIHNodXRpbC5ybXRyZWUKKyAgICAgICAgZWxpZiBvcy5wYXRoLmlzZmlsZShuYW1lKToKKyAgICAgICAgICAgIGtpbmQsIG51a2VyID0gImZpbGUiLCBvcy51bmxpbmsKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFN5c3RlbUVycm9yKCJvcy5wYXRoIHNheXMgJXIgZXhpc3RzIGJ1dCBpcyBuZWl0aGVyICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkaXJlY3Rvcnkgbm9yIGZpbGUiICUgbmFtZSkKKworICAgICAgICBpZiB2ZXJib3NlOgorICAgICAgICAgICAgcHJpbnQoIiVyIGxlZnQgYmVoaW5kICVzICVyIiAlICh0ZXN0bmFtZSwga2luZCwgbmFtZSkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgaWYgd2UgaGF2ZSBjaG1vZCwgZml4IHBvc3NpYmxlIHBlcm1pc3Npb25zIHByb2JsZW1zCisgICAgICAgICAgICAjIHRoYXQgbWlnaHQgcHJldmVudCBjbGVhbnVwCisgICAgICAgICAgICBpZiAoaGFzYXR0cihvcywgJ2NobW9kJykpOgorICAgICAgICAgICAgICAgIG9zLmNobW9kKG5hbWUsIHN0YXQuU19JUldYVSB8IHN0YXQuU19JUldYRyB8IHN0YXQuU19JUldYTykKKyAgICAgICAgICAgIG51a2VyKG5hbWUpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgbXNnOgorICAgICAgICAgICAgcHJpbnQoKCIlciBsZWZ0IGJlaGluZCAlcyAlciBhbmQgaXQgY291bGRuJ3QgYmUgIgorICAgICAgICAgICAgICAgICJyZW1vdmVkOiAlcyIgJSAodGVzdG5hbWUsIGtpbmQsIG5hbWUsIG1zZykpLCBmaWxlPXN5cy5zdGRlcnIpCisKKworZGVmIGZpbmR0ZXN0ZGlyKHBhdGg9Tm9uZSk6CisgICAgcmV0dXJuIHBhdGggb3Igb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykpIG9yIG9zLmN1cmRpcgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbGlicmVncnRlc3QvcnVudGVzdF9tcC5weSBiL0xpYi90ZXN0L2xpYnJlZ3J0ZXN0L3J1bnRlc3RfbXAucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTYwNGMxNgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2xpYnJlZ3J0ZXN0L3J1bnRlc3RfbXAucHkKQEAgLTAsMCArMSwyNDUgQEAKK2ltcG9ydCBmYXVsdGhhbmRsZXIKK2ltcG9ydCBqc29uCitpbXBvcnQgb3MKK2ltcG9ydCBxdWV1ZQoraW1wb3J0IHN5cworaW1wb3J0IHRpbWUKK2ltcG9ydCB0cmFjZWJhY2sKK2ltcG9ydCB0eXBlcworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Cit0cnk6CisgICAgaW1wb3J0IHRocmVhZGluZworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHByaW50KCJNdWx0aXByb2Nlc3Mgb3B0aW9uIHJlcXVpcmVzIHRocmVhZCBzdXBwb3J0IikKKyAgICBzeXMuZXhpdCgyKQorCitmcm9tIHRlc3QubGlicmVncnRlc3QucnVudGVzdCBpbXBvcnQgKAorICAgIHJ1bnRlc3QsIElOVEVSUlVQVEVELCBDSElMRF9FUlJPUiwgUFJPR1JFU1NfTUlOX1RJTUUsCisgICAgZm9ybWF0X3Rlc3RfcmVzdWx0KQorZnJvbSB0ZXN0LmxpYnJlZ3J0ZXN0LnNldHVwIGltcG9ydCBzZXR1cF90ZXN0cworCisKKyMgRGlzcGxheSB0aGUgcnVubmluZyB0ZXN0cyBpZiBub3RoaW5nIGhhcHBlbmVkIGxhc3QgTiBzZWNvbmRzCitQUk9HUkVTU19VUERBVEUgPSAzMC4wICAgIyBzZWNvbmRzCisKKyMgSWYgaW50ZXJydXB0ZWQsIGRpc3BsYXkgdGhlIHdhaXQgcHJvZ3Jlc3MgZXZlcnkgTiBzZWNvbmRzCitXQUlUX1BST0dSRVNTID0gMi4wICAgIyBzZWNvbmRzCisKKworZGVmIHJ1bl90ZXN0X2luX3N1YnByb2Nlc3ModGVzdG5hbWUsIG5zKToKKyAgICAiIiJSdW4gdGhlIGdpdmVuIHRlc3QgaW4gYSBzdWJwcm9jZXNzIHdpdGggLS1zbGF2ZWFyZ3MuCisKKyAgICBucyBpcyB0aGUgb3B0aW9uIE5hbWVzcGFjZSBwYXJzZWQgZnJvbSBjb21tYW5kLWxpbmUgYXJndW1lbnRzLiByZWdydGVzdAorICAgIGlzIGludm9rZWQgaW4gYSBzdWJwcm9jZXNzIHdpdGggdGhlIC0tc2xhdmVhcmdzIGFyZ3VtZW50OyB3aGVuIHRoZQorICAgIHN1YnByb2Nlc3MgZXhpdHMsIGl0cyByZXR1cm4gY29kZSwgc3Rkb3V0IGFuZCBzdGRlcnIgYXJlIHJldHVybmVkIGFzIGEKKyAgICAzLXR1cGxlLgorICAgICIiIgorICAgIGZyb20gc3VicHJvY2VzcyBpbXBvcnQgUG9wZW4sIFBJUEUKKworICAgIG5zX2RpY3QgPSB2YXJzKG5zKQorICAgIHNsYXZlYXJncyA9IChuc19kaWN0LCB0ZXN0bmFtZSkKKyAgICBzbGF2ZWFyZ3MgPSBqc29uLmR1bXBzKHNsYXZlYXJncykKKworICAgIGNtZCA9IFtzeXMuZXhlY3V0YWJsZSwgKnN1cHBvcnQuYXJnc19mcm9tX2ludGVycHJldGVyX2ZsYWdzKCksCisgICAgICAgICAgICctWCcsICdmYXVsdGhhbmRsZXInLAorICAgICAgICAgICAnLW0nLCAndGVzdC5yZWdydGVzdCcsCisgICAgICAgICAgICctLXNsYXZlYXJncycsIHNsYXZlYXJnc10KKyAgICBpZiBucy5wZ286CisgICAgICAgIGNtZCArPSBbJy0tcGdvJ10KKworICAgICMgUnVubmluZyB0aGUgY2hpbGQgZnJvbSB0aGUgc2FtZSB3b3JraW5nIGRpcmVjdG9yeSBhcyByZWdydGVzdCdzIG9yaWdpbmFsCisgICAgIyBpbnZvY2F0aW9uIGVuc3VyZXMgdGhhdCBURU1QRElSIGZvciB0aGUgY2hpbGQgaXMgdGhlIHNhbWUgd2hlbgorICAgICMgc3lzY29uZmlnLmlzX3B5dGhvbl9idWlsZCgpIGlzIHRydWUuIFNlZSBpc3N1ZSAxNTMwMC4KKyAgICBwb3BlbiA9IFBvcGVuKGNtZCwKKyAgICAgICAgICAgICAgICAgIHN0ZG91dD1QSVBFLCBzdGRlcnI9UElQRSwKKyAgICAgICAgICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlLAorICAgICAgICAgICAgICAgICAgY2xvc2VfZmRzPShvcy5uYW1lICE9ICdudCcpLAorICAgICAgICAgICAgICAgICAgY3dkPXN1cHBvcnQuU0FWRURDV0QpCisgICAgd2l0aCBwb3BlbjoKKyAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwb3Blbi5jb21tdW5pY2F0ZSgpCisgICAgICAgIHJldGNvZGUgPSBwb3Blbi53YWl0KCkKKyAgICByZXR1cm4gcmV0Y29kZSwgc3Rkb3V0LCBzdGRlcnIKKworCitkZWYgcnVuX3Rlc3RzX3NsYXZlKHNsYXZlYXJncyk6CisgICAgbnNfZGljdCwgdGVzdG5hbWUgPSBqc29uLmxvYWRzKHNsYXZlYXJncykKKyAgICBucyA9IHR5cGVzLlNpbXBsZU5hbWVzcGFjZSgqKm5zX2RpY3QpCisKKyAgICBzZXR1cF90ZXN0cyhucykKKworICAgIHRyeToKKyAgICAgICAgcmVzdWx0ID0gcnVudGVzdChucywgdGVzdG5hbWUpCisgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgorICAgICAgICByZXN1bHQgPSBJTlRFUlJVUFRFRCwgJycKKyAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbiBhcyBlOgorICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKKyAgICAgICAgcmVzdWx0ID0gQ0hJTERfRVJST1IsIHN0cihlKQorCisgICAgcHJpbnQoKSAgICMgRm9yY2UgYSBuZXdsaW5lIChqdXN0IGluIGNhc2UpCisgICAgcHJpbnQoanNvbi5kdW1wcyhyZXN1bHQpLCBmbHVzaD1UcnVlKQorICAgIHN5cy5leGl0KDApCisKKworIyBXZSBkbyBub3QgdXNlIGEgZ2VuZXJhdG9yIHNvIG11bHRpcGxlIHRocmVhZHMgY2FuIGNhbGwgbmV4dCgpLgorY2xhc3MgTXVsdGlwcm9jZXNzSXRlcmF0b3I6CisKKyAgICAiIiJBIHRocmVhZC1zYWZlIGl0ZXJhdG9yIG92ZXIgdGVzdHMgZm9yIG11bHRpcHJvY2VzcyBtb2RlLiIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RzKToKKyAgICAgICAgc2VsZi5pbnRlcnJ1cHRlZCA9IEZhbHNlCisgICAgICAgIHNlbGYubG9jayA9IHRocmVhZGluZy5Mb2NrKCkKKyAgICAgICAgc2VsZi50ZXN0cyA9IHRlc3RzCisKKyAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19uZXh0X18oc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5sb2NrOgorICAgICAgICAgICAgaWYgc2VsZi5pbnRlcnJ1cHRlZDoKKyAgICAgICAgICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uKCd0ZXN0cyBpbnRlcnJ1cHRlZCcpCisgICAgICAgICAgICByZXR1cm4gbmV4dChzZWxmLnRlc3RzKQorCisKK2NsYXNzIE11bHRpcHJvY2Vzc1RocmVhZCh0aHJlYWRpbmcuVGhyZWFkKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcGVuZGluZywgb3V0cHV0LCBucyk6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18oKQorICAgICAgICBzZWxmLnBlbmRpbmcgPSBwZW5kaW5nCisgICAgICAgIHNlbGYub3V0cHV0ID0gb3V0cHV0CisgICAgICAgIHNlbGYubnMgPSBucworICAgICAgICBzZWxmLmN1cnJlbnRfdGVzdCA9IE5vbmUKKyAgICAgICAgc2VsZi5zdGFydF90aW1lID0gTm9uZQorCisgICAgZGVmIF9ydW50ZXN0KHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICB0ZXN0ID0gbmV4dChzZWxmLnBlbmRpbmcpCisgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgc2VsZi5vdXRwdXQucHV0KChOb25lLCBOb25lLCBOb25lLCBOb25lKSkKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5zdGFydF90aW1lID0gdGltZS5tb25vdG9uaWMoKQorICAgICAgICAgICAgc2VsZi5jdXJyZW50X3Rlc3QgPSB0ZXN0CisKKyAgICAgICAgICAgIHJldGNvZGUsIHN0ZG91dCwgc3RkZXJyID0gcnVuX3Rlc3RfaW5fc3VicHJvY2Vzcyh0ZXN0LCBzZWxmLm5zKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc2VsZi5jdXJyZW50X3Rlc3QgPSBOb25lCisKKyAgICAgICAgc3Rkb3V0LCBfLCByZXN1bHQgPSBzdGRvdXQuc3RyaXAoKS5ycGFydGl0aW9uKCJcbiIpCisgICAgICAgIGlmIHJldGNvZGUgIT0gMDoKKyAgICAgICAgICAgIHJlc3VsdCA9IChDSElMRF9FUlJPUiwgIkV4aXQgY29kZSAlcyIgJSByZXRjb2RlKQorICAgICAgICAgICAgc2VsZi5vdXRwdXQucHV0KCh0ZXN0LCBzdGRvdXQucnN0cmlwKCksIHN0ZGVyci5yc3RyaXAoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0KSkKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgaWYgbm90IHJlc3VsdDoKKyAgICAgICAgICAgIHNlbGYub3V0cHV0LnB1dCgoTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSkpCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgIHJlc3VsdCA9IGpzb24ubG9hZHMocmVzdWx0KQorICAgICAgICBzZWxmLm91dHB1dC5wdXQoKHRlc3QsIHN0ZG91dC5yc3RyaXAoKSwgc3RkZXJyLnJzdHJpcCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCkpCisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIHJ1bihzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc3RvcCA9IEZhbHNlCisgICAgICAgICAgICB3aGlsZSBub3Qgc3RvcDoKKyAgICAgICAgICAgICAgICBzdG9wID0gc2VsZi5fcnVudGVzdCgpCisgICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uOgorICAgICAgICAgICAgc2VsZi5vdXRwdXQucHV0KChOb25lLCBOb25lLCBOb25lLCBOb25lKSkKKyAgICAgICAgICAgIHJhaXNlCisKKworZGVmIHJ1bl90ZXN0c19tdWx0aXByb2Nlc3MocmVncnRlc3QpOgorICAgIG91dHB1dCA9IHF1ZXVlLlF1ZXVlKCkKKyAgICBwZW5kaW5nID0gTXVsdGlwcm9jZXNzSXRlcmF0b3IocmVncnRlc3QudGVzdHMpCisgICAgdGVzdF90aW1lb3V0ID0gcmVncnRlc3QubnMudGltZW91dAorICAgIHVzZV90aW1lb3V0ID0gKHRlc3RfdGltZW91dCBpcyBub3QgTm9uZSkKKworICAgIHdvcmtlcnMgPSBbTXVsdGlwcm9jZXNzVGhyZWFkKHBlbmRpbmcsIG91dHB1dCwgcmVncnRlc3QubnMpCisgICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShyZWdydGVzdC5ucy51c2VfbXApXQorICAgIHByaW50KCJSdW4gdGVzdHMgaW4gcGFyYWxsZWwgdXNpbmcgJXMgY2hpbGQgcHJvY2Vzc2VzIgorICAgICAgICAgICUgbGVuKHdvcmtlcnMpKQorICAgIGZvciB3b3JrZXIgaW4gd29ya2VyczoKKyAgICAgICAgd29ya2VyLnN0YXJ0KCkKKworICAgIGRlZiBnZXRfcnVubmluZyh3b3JrZXJzKToKKyAgICAgICAgcnVubmluZyA9IFtdCisgICAgICAgIGZvciB3b3JrZXIgaW4gd29ya2VyczoKKyAgICAgICAgICAgIGN1cnJlbnRfdGVzdCA9IHdvcmtlci5jdXJyZW50X3Rlc3QKKyAgICAgICAgICAgIGlmIG5vdCBjdXJyZW50X3Rlc3Q6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGR0ID0gdGltZS5tb25vdG9uaWMoKSAtIHdvcmtlci5zdGFydF90aW1lCisgICAgICAgICAgICBpZiBkdCA+PSBQUk9HUkVTU19NSU5fVElNRToKKyAgICAgICAgICAgICAgICBydW5uaW5nLmFwcGVuZCgnJXMgKCUuMGYgc2VjKScgJSAoY3VycmVudF90ZXN0LCBkdCkpCisgICAgICAgIHJldHVybiBydW5uaW5nCisKKyAgICBmaW5pc2hlZCA9IDAKKyAgICB0ZXN0X2luZGV4ID0gMQorICAgIGdldF90aW1lb3V0ID0gbWF4KFBST0dSRVNTX1VQREFURSwgUFJPR1JFU1NfTUlOX1RJTUUpCisgICAgdHJ5OgorICAgICAgICB3aGlsZSBmaW5pc2hlZCA8IHJlZ3J0ZXN0Lm5zLnVzZV9tcDoKKyAgICAgICAgICAgIGlmIHVzZV90aW1lb3V0OgorICAgICAgICAgICAgICAgIGZhdWx0aGFuZGxlci5kdW1wX3RyYWNlYmFja19sYXRlcih0ZXN0X3RpbWVvdXQsIGV4aXQ9VHJ1ZSkKKworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGl0ZW0gPSBvdXRwdXQuZ2V0KHRpbWVvdXQ9Z2V0X3RpbWVvdXQpCisgICAgICAgICAgICBleGNlcHQgcXVldWUuRW1wdHk6CisgICAgICAgICAgICAgICAgcnVubmluZyA9IGdldF9ydW5uaW5nKHdvcmtlcnMpCisgICAgICAgICAgICAgICAgaWYgcnVubmluZyBhbmQgbm90IHJlZ3J0ZXN0Lm5zLnBnbzoKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ3J1bm5pbmc6ICVzJyAlICcsICcuam9pbihydW5uaW5nKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICB0ZXN0LCBzdGRvdXQsIHN0ZGVyciwgcmVzdWx0ID0gaXRlbQorICAgICAgICAgICAgaWYgdGVzdCBpcyBOb25lOgorICAgICAgICAgICAgICAgIGZpbmlzaGVkICs9IDEKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgcmVncnRlc3QuYWNjdW11bGF0ZV9yZXN1bHQodGVzdCwgcmVzdWx0KQorCisgICAgICAgICAgICAjIERpc3BsYXkgcHJvZ3Jlc3MKKyAgICAgICAgICAgIG9rLCB0ZXN0X3RpbWUgPSByZXN1bHQKKyAgICAgICAgICAgIHRleHQgPSBmb3JtYXRfdGVzdF9yZXN1bHQodGVzdCwgb2spCisgICAgICAgICAgICBpZiAob2sgbm90IGluIChDSElMRF9FUlJPUiwgSU5URVJSVVBURUQpCisgICAgICAgICAgICAgICAgYW5kIHRlc3RfdGltZSA+PSBQUk9HUkVTU19NSU5fVElNRQorICAgICAgICAgICAgICAgIGFuZCBub3QgcmVncnRlc3QubnMucGdvKToKKyAgICAgICAgICAgICAgICB0ZXh0ICs9ICcgKCUuMGYgc2VjKScgJSB0ZXN0X3RpbWUKKyAgICAgICAgICAgIHJ1bm5pbmcgPSBnZXRfcnVubmluZyh3b3JrZXJzKQorICAgICAgICAgICAgaWYgcnVubmluZyBhbmQgbm90IHJlZ3J0ZXN0Lm5zLnBnbzoKKyAgICAgICAgICAgICAgICB0ZXh0ICs9ICcgLS0gcnVubmluZzogJXMnICUgJywgJy5qb2luKHJ1bm5pbmcpCisgICAgICAgICAgICByZWdydGVzdC5kaXNwbGF5X3Byb2dyZXNzKHRlc3RfaW5kZXgsIHRleHQpCisKKyAgICAgICAgICAgICMgQ29weSBzdGRvdXQgYW5kIHN0ZGVyciBmcm9tIHRoZSBjaGlsZCBwcm9jZXNzCisgICAgICAgICAgICBpZiBzdGRvdXQ6CisgICAgICAgICAgICAgICAgcHJpbnQoc3Rkb3V0LCBmbHVzaD1UcnVlKQorICAgICAgICAgICAgaWYgc3RkZXJyIGFuZCBub3QgcmVncnRlc3QubnMucGdvOgorICAgICAgICAgICAgICAgIHByaW50KHN0ZGVyciwgZmlsZT1zeXMuc3RkZXJyLCBmbHVzaD1UcnVlKQorCisgICAgICAgICAgICBpZiByZXN1bHRbMF0gPT0gSU5URVJSVVBURUQ6CisgICAgICAgICAgICAgICAgcmFpc2UgS2V5Ym9hcmRJbnRlcnJ1cHQKKyAgICAgICAgICAgIGlmIHJlc3VsdFswXSA9PSBDSElMRF9FUlJPUjoKKyAgICAgICAgICAgICAgICBtc2cgPSAiQ2hpbGQgZXJyb3Igb24ge306IHt9Ii5mb3JtYXQodGVzdCwgcmVzdWx0WzFdKQorICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbihtc2cpCisgICAgICAgICAgICB0ZXN0X2luZGV4ICs9IDEKKyAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CisgICAgICAgIHJlZ3J0ZXN0LmludGVycnVwdGVkID0gVHJ1ZQorICAgICAgICBwZW5kaW5nLmludGVycnVwdGVkID0gVHJ1ZQorICAgICAgICBwcmludCgpCisgICAgZmluYWxseToKKyAgICAgICAgaWYgdXNlX3RpbWVvdXQ6CisgICAgICAgICAgICBmYXVsdGhhbmRsZXIuY2FuY2VsX2R1bXBfdHJhY2ViYWNrX2xhdGVyKCkKKworICAgICMgSWYgdGVzdHMgYXJlIGludGVycnVwdGVkLCB3YWl0IHVudGlsIHRlc3RzIGNvbXBsZXRlCisgICAgd2FpdF9zdGFydCA9IHRpbWUubW9ub3RvbmljKCkKKyAgICB3aGlsZSBUcnVlOgorICAgICAgICBydW5uaW5nID0gW3dvcmtlci5jdXJyZW50X3Rlc3QgZm9yIHdvcmtlciBpbiB3b3JrZXJzXQorICAgICAgICBydW5uaW5nID0gbGlzdChmaWx0ZXIoYm9vbCwgcnVubmluZykpCisgICAgICAgIGlmIG5vdCBydW5uaW5nOgorICAgICAgICAgICAgYnJlYWsKKworICAgICAgICBkdCA9IHRpbWUubW9ub3RvbmljKCkgLSB3YWl0X3N0YXJ0CisgICAgICAgIGxpbmUgPSAiV2FpdGluZyBmb3IgJXMgKCVzIHRlc3RzKSIgJSAoJywgJy5qb2luKHJ1bm5pbmcpLCBsZW4ocnVubmluZykpCisgICAgICAgIGlmIGR0ID49IFdBSVRfUFJPR1JFU1M6CisgICAgICAgICAgICBsaW5lID0gIiVzIHNpbmNlICUuMGYgc2VjIiAlIChsaW5lLCBkdCkKKyAgICAgICAgcHJpbnQobGluZSkKKyAgICAgICAgZm9yIHdvcmtlciBpbiB3b3JrZXJzOgorICAgICAgICAgICAgd29ya2VyLmpvaW4oV0FJVF9QUk9HUkVTUykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2xpYnJlZ3J0ZXN0L3NhdmVfZW52LnB5IGIvTGliL3Rlc3QvbGlicmVncnRlc3Qvc2F2ZV9lbnYucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTZhZDNhZgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2xpYnJlZ3J0ZXN0L3NhdmVfZW52LnB5CkBAIC0wLDAgKzEsMjg1IEBACitpbXBvcnQgYnVpbHRpbnMKK2ltcG9ydCBsb2NhbGUKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgb3MKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBzeXMKK2ltcG9ydCBzeXNjb25maWcKK2ltcG9ydCB3YXJuaW5ncworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Cit0cnk6CisgICAgaW1wb3J0IHRocmVhZGluZworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHRocmVhZGluZyA9IE5vbmUKK3RyeToKKyAgICBpbXBvcnQgX211bHRpcHJvY2Vzc2luZywgbXVsdGlwcm9jZXNzaW5nLnByb2Nlc3MKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBtdWx0aXByb2Nlc3NpbmcgPSBOb25lCisKKworIyBVbml0IHRlc3RzIGFyZSBzdXBwb3NlZCB0byBsZWF2ZSB0aGUgZXhlY3V0aW9uIGVudmlyb25tZW50IHVuY2hhbmdlZAorIyBvbmNlIHRoZXkgY29tcGxldGUuICBCdXQgc29tZXRpbWVzIHRlc3RzIGhhdmUgYnVncywgZXNwZWNpYWxseSB3aGVuCisjIHRlc3RzIGZhaWwsIGFuZCB0aGUgY2hhbmdlcyB0byBlbnZpcm9ubWVudCBnbyBvbiB0byBtZXNzIHVwIG90aGVyCisjIHRlc3RzLiAgVGhpcyBjYW4gY2F1c2UgaXNzdWVzIHdpdGggYnVpbGRib3Qgc3RhYmlsaXR5LCBzaW5jZSB0ZXN0cworIyBhcmUgcnVuIGluIHJhbmRvbSBvcmRlciBhbmQgc28gcHJvYmxlbXMgbWF5IGFwcGVhciB0byBjb21lIGFuZCBnby4KKyMgVGhlcmUgYXJlIGEgZmV3IHRoaW5ncyB3ZSBjYW4gc2F2ZSBhbmQgcmVzdG9yZSB0byBtaXRpZ2F0ZSB0aGlzLCBhbmQKKyMgdGhlIGZvbGxvd2luZyBjb250ZXh0IG1hbmFnZXIgaGFuZGxlcyB0aGlzIHRhc2suCisKK2NsYXNzIHNhdmVkX3Rlc3RfZW52aXJvbm1lbnQ6CisgICAgIiIiU2F2ZSBiaXRzIG9mIHRoZSB0ZXN0IGVudmlyb25tZW50IGFuZCByZXN0b3JlIHRoZW0gYXQgYmxvY2sgZXhpdC4KKworICAgICAgICB3aXRoIHNhdmVkX3Rlc3RfZW52aXJvbm1lbnQodGVzdG5hbWUsIHZlcmJvc2UsIHF1aWV0KToKKyAgICAgICAgICAgICNzdHVmZgorCisgICAgVW5sZXNzIHF1aWV0IGlzIFRydWUsIGEgd2FybmluZyBpcyBwcmludGVkIHRvIHN0ZGVyciBpZiBhbnkgb2YKKyAgICB0aGUgc2F2ZWQgaXRlbXMgd2FzIGNoYW5nZWQgYnkgdGhlIHRlc3QuICBUaGUgYXR0cmlidXRlICdjaGFuZ2VkJworICAgIGlzIGluaXRpYWxseSBGYWxzZSwgYnV0IGlzIHNldCB0byBUcnVlIGlmIGEgY2hhbmdlIGlzIGRldGVjdGVkLgorCisgICAgSWYgdmVyYm9zZSBpcyBtb3JlIHRoYW4gMSwgdGhlIGJlZm9yZSBhbmQgYWZ0ZXIgc3RhdGUgb2YgY2hhbmdlZAorICAgIGl0ZW1zIGlzIGFsc28gcHJpbnRlZC4KKyAgICAiIiIKKworICAgIGNoYW5nZWQgPSBGYWxzZQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RuYW1lLCB2ZXJib3NlPTAsIHF1aWV0PUZhbHNlLCAqLCBwZ289RmFsc2UpOgorICAgICAgICBzZWxmLnRlc3RuYW1lID0gdGVzdG5hbWUKKyAgICAgICAgc2VsZi52ZXJib3NlID0gdmVyYm9zZQorICAgICAgICBzZWxmLnF1aWV0ID0gcXVpZXQKKyAgICAgICAgc2VsZi5wZ28gPSBwZ28KKworICAgICMgVG8gYWRkIHRoaW5ncyB0byBzYXZlIGFuZCByZXN0b3JlLCBhZGQgYSBuYW1lIFhYWCB0byB0aGUgcmVzb3VyY2VzIGxpc3QKKyAgICAjIGFuZCBhZGQgY29ycmVzcG9uZGluZyBnZXRfWFhYL3Jlc3RvcmVfWFhYIGZ1bmN0aW9ucy4gIGdldF9YWFggc2hvdWxkCisgICAgIyByZXR1cm4gdGhlIHZhbHVlIHRvIGJlIHNhdmVkIGFuZCBjb21wYXJlZCBhZ2FpbnN0IGEgc2Vjb25kIGNhbGwgdG8gdGhlCisgICAgIyBnZXQgZnVuY3Rpb24gd2hlbiB0ZXN0IGV4ZWN1dGlvbiBjb21wbGV0ZXMuICByZXN0b3JlX1hYWCBzaG91bGQgYWNjZXB0CisgICAgIyB0aGUgc2F2ZWQgdmFsdWUgYW5kIHJlc3RvcmUgdGhlIHJlc291cmNlIHVzaW5nIGl0LiAgSXQgd2lsbCBiZSBjYWxsZWQgaWYKKyAgICAjIGFuZCBvbmx5IGlmIGEgY2hhbmdlIGluIHRoZSB2YWx1ZSBpcyBkZXRlY3RlZC4KKyAgICAjCisgICAgIyBOb3RlOiBYWFggd2lsbCBoYXZlIGFueSAnLicgcmVwbGFjZWQgd2l0aCAnXycgY2hhcmFjdGVycyB3aGVuIGRldGVybWluaW5nCisgICAgIyB0aGUgY29ycmVzcG9uZGluZyBtZXRob2QgbmFtZXMuCisKKyAgICByZXNvdXJjZXMgPSAoJ3N5cy5hcmd2JywgJ2N3ZCcsICdzeXMuc3RkaW4nLCAnc3lzLnN0ZG91dCcsICdzeXMuc3RkZXJyJywKKyAgICAgICAgICAgICAgICAgJ29zLmVudmlyb24nLCAnc3lzLnBhdGgnLCAnc3lzLnBhdGhfaG9va3MnLCAnX19pbXBvcnRfXycsCisgICAgICAgICAgICAgICAgICd3YXJuaW5ncy5maWx0ZXJzJywgJ2FzeW5jb3JlLnNvY2tldF9tYXAnLAorICAgICAgICAgICAgICAgICAnbG9nZ2luZy5faGFuZGxlcnMnLCAnbG9nZ2luZy5faGFuZGxlckxpc3QnLCAnc3lzLmdldHRyYWNlJywKKyAgICAgICAgICAgICAgICAgJ3N5cy53YXJub3B0aW9ucycsCisgICAgICAgICAgICAgICAgICMgbXVsdGlwcm9jZXNzaW5nLnByb2Nlc3MuX2NsZWFudXAoKSBtYXkgcmVsZWFzZSByZWYKKyAgICAgICAgICAgICAgICAgIyB0byBhIHRocmVhZCwgc28gY2hlY2sgcHJvY2Vzc2VzIGZpcnN0LgorICAgICAgICAgICAgICAgICAnbXVsdGlwcm9jZXNzaW5nLnByb2Nlc3MuX2RhbmdsaW5nJywgJ3RocmVhZGluZy5fZGFuZ2xpbmcnLAorICAgICAgICAgICAgICAgICAnc3lzY29uZmlnLl9DT05GSUdfVkFSUycsICdzeXNjb25maWcuX0lOU1RBTExfU0NIRU1FUycsCisgICAgICAgICAgICAgICAgICdmaWxlcycsICdsb2NhbGUnLCAnd2FybmluZ3Muc2hvd3dhcm5pbmcnLAorICAgICAgICAgICAgICAgICAnc2h1dGlsX2FyY2hpdmVfZm9ybWF0cycsICdzaHV0aWxfdW5wYWNrX2Zvcm1hdHMnLAorICAgICAgICAgICAgICAgICkKKworICAgIGRlZiBnZXRfc3lzX2FyZ3Yoc2VsZik6CisgICAgICAgIHJldHVybiBpZChzeXMuYXJndiksIHN5cy5hcmd2LCBzeXMuYXJndls6XQorICAgIGRlZiByZXN0b3JlX3N5c19hcmd2KHNlbGYsIHNhdmVkX2FyZ3YpOgorICAgICAgICBzeXMuYXJndiA9IHNhdmVkX2FyZ3ZbMV0KKyAgICAgICAgc3lzLmFyZ3ZbOl0gPSBzYXZlZF9hcmd2WzJdCisKKyAgICBkZWYgZ2V0X2N3ZChzZWxmKToKKyAgICAgICAgcmV0dXJuIG9zLmdldGN3ZCgpCisgICAgZGVmIHJlc3RvcmVfY3dkKHNlbGYsIHNhdmVkX2N3ZCk6CisgICAgICAgIG9zLmNoZGlyKHNhdmVkX2N3ZCkKKworICAgIGRlZiBnZXRfc3lzX3N0ZG91dChzZWxmKToKKyAgICAgICAgcmV0dXJuIHN5cy5zdGRvdXQKKyAgICBkZWYgcmVzdG9yZV9zeXNfc3Rkb3V0KHNlbGYsIHNhdmVkX3N0ZG91dCk6CisgICAgICAgIHN5cy5zdGRvdXQgPSBzYXZlZF9zdGRvdXQKKworICAgIGRlZiBnZXRfc3lzX3N0ZGVycihzZWxmKToKKyAgICAgICAgcmV0dXJuIHN5cy5zdGRlcnIKKyAgICBkZWYgcmVzdG9yZV9zeXNfc3RkZXJyKHNlbGYsIHNhdmVkX3N0ZGVycik6CisgICAgICAgIHN5cy5zdGRlcnIgPSBzYXZlZF9zdGRlcnIKKworICAgIGRlZiBnZXRfc3lzX3N0ZGluKHNlbGYpOgorICAgICAgICByZXR1cm4gc3lzLnN0ZGluCisgICAgZGVmIHJlc3RvcmVfc3lzX3N0ZGluKHNlbGYsIHNhdmVkX3N0ZGluKToKKyAgICAgICAgc3lzLnN0ZGluID0gc2F2ZWRfc3RkaW4KKworICAgIGRlZiBnZXRfb3NfZW52aXJvbihzZWxmKToKKyAgICAgICAgcmV0dXJuIGlkKG9zLmVudmlyb24pLCBvcy5lbnZpcm9uLCBkaWN0KG9zLmVudmlyb24pCisgICAgZGVmIHJlc3RvcmVfb3NfZW52aXJvbihzZWxmLCBzYXZlZF9lbnZpcm9uKToKKyAgICAgICAgb3MuZW52aXJvbiA9IHNhdmVkX2Vudmlyb25bMV0KKyAgICAgICAgb3MuZW52aXJvbi5jbGVhcigpCisgICAgICAgIG9zLmVudmlyb24udXBkYXRlKHNhdmVkX2Vudmlyb25bMl0pCisKKyAgICBkZWYgZ2V0X3N5c19wYXRoKHNlbGYpOgorICAgICAgICByZXR1cm4gaWQoc3lzLnBhdGgpLCBzeXMucGF0aCwgc3lzLnBhdGhbOl0KKyAgICBkZWYgcmVzdG9yZV9zeXNfcGF0aChzZWxmLCBzYXZlZF9wYXRoKToKKyAgICAgICAgc3lzLnBhdGggPSBzYXZlZF9wYXRoWzFdCisgICAgICAgIHN5cy5wYXRoWzpdID0gc2F2ZWRfcGF0aFsyXQorCisgICAgZGVmIGdldF9zeXNfcGF0aF9ob29rcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGlkKHN5cy5wYXRoX2hvb2tzKSwgc3lzLnBhdGhfaG9va3MsIHN5cy5wYXRoX2hvb2tzWzpdCisgICAgZGVmIHJlc3RvcmVfc3lzX3BhdGhfaG9va3Moc2VsZiwgc2F2ZWRfaG9va3MpOgorICAgICAgICBzeXMucGF0aF9ob29rcyA9IHNhdmVkX2hvb2tzWzFdCisgICAgICAgIHN5cy5wYXRoX2hvb2tzWzpdID0gc2F2ZWRfaG9va3NbMl0KKworICAgIGRlZiBnZXRfc3lzX2dldHRyYWNlKHNlbGYpOgorICAgICAgICByZXR1cm4gc3lzLmdldHRyYWNlKCkKKyAgICBkZWYgcmVzdG9yZV9zeXNfZ2V0dHJhY2Uoc2VsZiwgdHJhY2VfZnhuKToKKyAgICAgICAgc3lzLnNldHRyYWNlKHRyYWNlX2Z4bikKKworICAgIGRlZiBnZXRfX19pbXBvcnRfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGJ1aWx0aW5zLl9faW1wb3J0X18KKyAgICBkZWYgcmVzdG9yZV9fX2ltcG9ydF9fKHNlbGYsIGltcG9ydF8pOgorICAgICAgICBidWlsdGlucy5fX2ltcG9ydF9fID0gaW1wb3J0XworCisgICAgZGVmIGdldF93YXJuaW5nc19maWx0ZXJzKHNlbGYpOgorICAgICAgICByZXR1cm4gaWQod2FybmluZ3MuZmlsdGVycyksIHdhcm5pbmdzLmZpbHRlcnMsIHdhcm5pbmdzLmZpbHRlcnNbOl0KKyAgICBkZWYgcmVzdG9yZV93YXJuaW5nc19maWx0ZXJzKHNlbGYsIHNhdmVkX2ZpbHRlcnMpOgorICAgICAgICB3YXJuaW5ncy5maWx0ZXJzID0gc2F2ZWRfZmlsdGVyc1sxXQorICAgICAgICB3YXJuaW5ncy5maWx0ZXJzWzpdID0gc2F2ZWRfZmlsdGVyc1syXQorCisgICAgZGVmIGdldF9hc3luY29yZV9zb2NrZXRfbWFwKHNlbGYpOgorICAgICAgICBhc3luY29yZSA9IHN5cy5tb2R1bGVzLmdldCgnYXN5bmNvcmUnKQorICAgICAgICAjIFhYWCBNYWtpbmcgYSBjb3B5IGtlZXBzIG9iamVjdHMgYWxpdmUgdW50aWwgX19leGl0X18gZ2V0cyBjYWxsZWQuCisgICAgICAgIHJldHVybiBhc3luY29yZSBhbmQgYXN5bmNvcmUuc29ja2V0X21hcC5jb3B5KCkgb3Ige30KKyAgICBkZWYgcmVzdG9yZV9hc3luY29yZV9zb2NrZXRfbWFwKHNlbGYsIHNhdmVkX21hcCk6CisgICAgICAgIGFzeW5jb3JlID0gc3lzLm1vZHVsZXMuZ2V0KCdhc3luY29yZScpCisgICAgICAgIGlmIGFzeW5jb3JlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgYXN5bmNvcmUuY2xvc2VfYWxsKGlnbm9yZV9hbGw9VHJ1ZSkKKyAgICAgICAgICAgIGFzeW5jb3JlLnNvY2tldF9tYXAudXBkYXRlKHNhdmVkX21hcCkKKworICAgIGRlZiBnZXRfc2h1dGlsX2FyY2hpdmVfZm9ybWF0cyhzZWxmKToKKyAgICAgICAgIyB3ZSBjb3VsZCBjYWxsIGdldF9hcmNoaXZlc19mb3JtYXRzKCkgYnV0IHRoYXQgb25seSByZXR1cm5zIHRoZQorICAgICAgICAjIHJlZ2lzdHJ5IGtleXM7IHdlIHdhbnQgdG8gY2hlY2sgdGhlIHZhbHVlcyB0b28gKHRoZSBmdW5jdGlvbnMgdGhhdAorICAgICAgICAjIGFyZSByZWdpc3RlcmVkKQorICAgICAgICByZXR1cm4gc2h1dGlsLl9BUkNISVZFX0ZPUk1BVFMsIHNodXRpbC5fQVJDSElWRV9GT1JNQVRTLmNvcHkoKQorICAgIGRlZiByZXN0b3JlX3NodXRpbF9hcmNoaXZlX2Zvcm1hdHMoc2VsZiwgc2F2ZWQpOgorICAgICAgICBzaHV0aWwuX0FSQ0hJVkVfRk9STUFUUyA9IHNhdmVkWzBdCisgICAgICAgIHNodXRpbC5fQVJDSElWRV9GT1JNQVRTLmNsZWFyKCkKKyAgICAgICAgc2h1dGlsLl9BUkNISVZFX0ZPUk1BVFMudXBkYXRlKHNhdmVkWzFdKQorCisgICAgZGVmIGdldF9zaHV0aWxfdW5wYWNrX2Zvcm1hdHMoc2VsZik6CisgICAgICAgIHJldHVybiBzaHV0aWwuX1VOUEFDS19GT1JNQVRTLCBzaHV0aWwuX1VOUEFDS19GT1JNQVRTLmNvcHkoKQorICAgIGRlZiByZXN0b3JlX3NodXRpbF91bnBhY2tfZm9ybWF0cyhzZWxmLCBzYXZlZCk6CisgICAgICAgIHNodXRpbC5fVU5QQUNLX0ZPUk1BVFMgPSBzYXZlZFswXQorICAgICAgICBzaHV0aWwuX1VOUEFDS19GT1JNQVRTLmNsZWFyKCkKKyAgICAgICAgc2h1dGlsLl9VTlBBQ0tfRk9STUFUUy51cGRhdGUoc2F2ZWRbMV0pCisKKyAgICBkZWYgZ2V0X2xvZ2dpbmdfX2hhbmRsZXJzKHNlbGYpOgorICAgICAgICAjIF9oYW5kbGVycyBpcyBhIFdlYWtWYWx1ZURpY3Rpb25hcnkKKyAgICAgICAgcmV0dXJuIGlkKGxvZ2dpbmcuX2hhbmRsZXJzKSwgbG9nZ2luZy5faGFuZGxlcnMsIGxvZ2dpbmcuX2hhbmRsZXJzLmNvcHkoKQorICAgIGRlZiByZXN0b3JlX2xvZ2dpbmdfX2hhbmRsZXJzKHNlbGYsIHNhdmVkX2hhbmRsZXJzKToKKyAgICAgICAgIyBDYW4ndCBlYXNpbHkgcmV2ZXJ0IHRoZSBsb2dnaW5nIHN0YXRlCisgICAgICAgIHBhc3MKKworICAgIGRlZiBnZXRfbG9nZ2luZ19faGFuZGxlckxpc3Qoc2VsZik6CisgICAgICAgICMgX2hhbmRsZXJMaXN0IGlzIGEgbGlzdCBvZiB3ZWFrcmVmcyB0byBoYW5kbGVycworICAgICAgICByZXR1cm4gaWQobG9nZ2luZy5faGFuZGxlckxpc3QpLCBsb2dnaW5nLl9oYW5kbGVyTGlzdCwgbG9nZ2luZy5faGFuZGxlckxpc3RbOl0KKyAgICBkZWYgcmVzdG9yZV9sb2dnaW5nX19oYW5kbGVyTGlzdChzZWxmLCBzYXZlZF9oYW5kbGVyTGlzdCk6CisgICAgICAgICMgQ2FuJ3QgZWFzaWx5IHJldmVydCB0aGUgbG9nZ2luZyBzdGF0ZQorICAgICAgICBwYXNzCisKKyAgICBkZWYgZ2V0X3N5c193YXJub3B0aW9ucyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGlkKHN5cy53YXJub3B0aW9ucyksIHN5cy53YXJub3B0aW9ucywgc3lzLndhcm5vcHRpb25zWzpdCisgICAgZGVmIHJlc3RvcmVfc3lzX3dhcm5vcHRpb25zKHNlbGYsIHNhdmVkX29wdGlvbnMpOgorICAgICAgICBzeXMud2Fybm9wdGlvbnMgPSBzYXZlZF9vcHRpb25zWzFdCisgICAgICAgIHN5cy53YXJub3B0aW9uc1s6XSA9IHNhdmVkX29wdGlvbnNbMl0KKworICAgICMgQ29udHJvbGxpbmcgZGFuZ2xpbmcgcmVmZXJlbmNlcyB0byBUaHJlYWQgb2JqZWN0cyBjYW4gbWFrZSBpdCBlYXNpZXIKKyAgICAjIHRvIHRyYWNrIHJlZmVyZW5jZSBsZWFrcy4KKyAgICBkZWYgZ2V0X3RocmVhZGluZ19fZGFuZ2xpbmcoc2VsZik6CisgICAgICAgIGlmIG5vdCB0aHJlYWRpbmc6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAjIFRoaXMgY29waWVzIHRoZSB3ZWFrcmVmcyB3aXRob3V0IG1ha2luZyBhbnkgc3Ryb25nIHJlZmVyZW5jZQorICAgICAgICByZXR1cm4gdGhyZWFkaW5nLl9kYW5nbGluZy5jb3B5KCkKKyAgICBkZWYgcmVzdG9yZV90aHJlYWRpbmdfX2RhbmdsaW5nKHNlbGYsIHNhdmVkKToKKyAgICAgICAgaWYgbm90IHRocmVhZGluZzoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICB0aHJlYWRpbmcuX2RhbmdsaW5nLmNsZWFyKCkKKyAgICAgICAgdGhyZWFkaW5nLl9kYW5nbGluZy51cGRhdGUoc2F2ZWQpCisKKyAgICAjIFNhbWUgZm9yIFByb2Nlc3Mgb2JqZWN0cworICAgIGRlZiBnZXRfbXVsdGlwcm9jZXNzaW5nX3Byb2Nlc3NfX2RhbmdsaW5nKHNlbGYpOgorICAgICAgICBpZiBub3QgbXVsdGlwcm9jZXNzaW5nOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgIyBVbmpvaW5lZCBwcm9jZXNzIG9iamVjdHMgY2FuIHN1cnZpdmUgYWZ0ZXIgcHJvY2VzcyBleGl0cworICAgICAgICBtdWx0aXByb2Nlc3NpbmcucHJvY2Vzcy5fY2xlYW51cCgpCisgICAgICAgICMgVGhpcyBjb3BpZXMgdGhlIHdlYWtyZWZzIHdpdGhvdXQgbWFraW5nIGFueSBzdHJvbmcgcmVmZXJlbmNlCisgICAgICAgIHJldHVybiBtdWx0aXByb2Nlc3NpbmcucHJvY2Vzcy5fZGFuZ2xpbmcuY29weSgpCisgICAgZGVmIHJlc3RvcmVfbXVsdGlwcm9jZXNzaW5nX3Byb2Nlc3NfX2RhbmdsaW5nKHNlbGYsIHNhdmVkKToKKyAgICAgICAgaWYgbm90IG11bHRpcHJvY2Vzc2luZzoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBtdWx0aXByb2Nlc3NpbmcucHJvY2Vzcy5fZGFuZ2xpbmcuY2xlYXIoKQorICAgICAgICBtdWx0aXByb2Nlc3NpbmcucHJvY2Vzcy5fZGFuZ2xpbmcudXBkYXRlKHNhdmVkKQorCisgICAgZGVmIGdldF9zeXNjb25maWdfX0NPTkZJR19WQVJTKHNlbGYpOgorICAgICAgICAjIG1ha2Ugc3VyZSB0aGUgZGljdCBpcyBpbml0aWFsaXplZAorICAgICAgICBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ3ByZWZpeCcpCisgICAgICAgIHJldHVybiAoaWQoc3lzY29uZmlnLl9DT05GSUdfVkFSUyksIHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMsCisgICAgICAgICAgICAgICAgZGljdChzeXNjb25maWcuX0NPTkZJR19WQVJTKSkKKyAgICBkZWYgcmVzdG9yZV9zeXNjb25maWdfX0NPTkZJR19WQVJTKHNlbGYsIHNhdmVkKToKKyAgICAgICAgc3lzY29uZmlnLl9DT05GSUdfVkFSUyA9IHNhdmVkWzFdCisgICAgICAgIHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMuY2xlYXIoKQorICAgICAgICBzeXNjb25maWcuX0NPTkZJR19WQVJTLnVwZGF0ZShzYXZlZFsyXSkKKworICAgIGRlZiBnZXRfc3lzY29uZmlnX19JTlNUQUxMX1NDSEVNRVMoc2VsZik6CisgICAgICAgIHJldHVybiAoaWQoc3lzY29uZmlnLl9JTlNUQUxMX1NDSEVNRVMpLCBzeXNjb25maWcuX0lOU1RBTExfU0NIRU1FUywKKyAgICAgICAgICAgICAgICBzeXNjb25maWcuX0lOU1RBTExfU0NIRU1FUy5jb3B5KCkpCisgICAgZGVmIHJlc3RvcmVfc3lzY29uZmlnX19JTlNUQUxMX1NDSEVNRVMoc2VsZiwgc2F2ZWQpOgorICAgICAgICBzeXNjb25maWcuX0lOU1RBTExfU0NIRU1FUyA9IHNhdmVkWzFdCisgICAgICAgIHN5c2NvbmZpZy5fSU5TVEFMTF9TQ0hFTUVTLmNsZWFyKCkKKyAgICAgICAgc3lzY29uZmlnLl9JTlNUQUxMX1NDSEVNRVMudXBkYXRlKHNhdmVkWzJdKQorCisgICAgZGVmIGdldF9maWxlcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNvcnRlZChmbiArICgnLycgaWYgb3MucGF0aC5pc2RpcihmbikgZWxzZSAnJykKKyAgICAgICAgICAgICAgICAgICAgICBmb3IgZm4gaW4gb3MubGlzdGRpcigpKQorICAgIGRlZiByZXN0b3JlX2ZpbGVzKHNlbGYsIHNhdmVkX3ZhbHVlKToKKyAgICAgICAgZm4gPSBzdXBwb3J0LlRFU1RGTgorICAgICAgICBpZiBmbiBub3QgaW4gc2F2ZWRfdmFsdWUgYW5kIChmbiArICcvJykgbm90IGluIHNhdmVkX3ZhbHVlOgorICAgICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZm4pOgorICAgICAgICAgICAgICAgIHN1cHBvcnQudW5saW5rKGZuKQorICAgICAgICAgICAgZWxpZiBvcy5wYXRoLmlzZGlyKGZuKToKKyAgICAgICAgICAgICAgICBzdXBwb3J0LnJtdHJlZShmbikKKworICAgIF9sYyA9IFtnZXRhdHRyKGxvY2FsZSwgbGMpIGZvciBsYyBpbiBkaXIobG9jYWxlKQorICAgICAgICAgICBpZiBsYy5zdGFydHN3aXRoKCdMQ18nKV0KKyAgICBkZWYgZ2V0X2xvY2FsZShzZWxmKToKKyAgICAgICAgcGFpcmluZ3MgPSBbXQorICAgICAgICBmb3IgbGMgaW4gc2VsZi5fbGM6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcGFpcmluZ3MuYXBwZW5kKChsYywgbG9jYWxlLnNldGxvY2FsZShsYywgTm9uZSkpKQorICAgICAgICAgICAgZXhjZXB0IChUeXBlRXJyb3IsIFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIHJldHVybiBwYWlyaW5ncworICAgIGRlZiByZXN0b3JlX2xvY2FsZShzZWxmLCBzYXZlZCk6CisgICAgICAgIGZvciBsYywgc2V0dGluZyBpbiBzYXZlZDoKKyAgICAgICAgICAgIGxvY2FsZS5zZXRsb2NhbGUobGMsIHNldHRpbmcpCisKKyAgICBkZWYgZ2V0X3dhcm5pbmdzX3Nob3d3YXJuaW5nKHNlbGYpOgorICAgICAgICByZXR1cm4gd2FybmluZ3Muc2hvd3dhcm5pbmcKKyAgICBkZWYgcmVzdG9yZV93YXJuaW5nc19zaG93d2FybmluZyhzZWxmLCBmeG4pOgorICAgICAgICB3YXJuaW5ncy5zaG93d2FybmluZyA9IGZ4bgorCisgICAgZGVmIHJlc291cmNlX2luZm8oc2VsZik6CisgICAgICAgIGZvciBuYW1lIGluIHNlbGYucmVzb3VyY2VzOgorICAgICAgICAgICAgbWV0aG9kX3N1ZmZpeCA9IG5hbWUucmVwbGFjZSgnLicsICdfJykKKyAgICAgICAgICAgIGdldF9uYW1lID0gJ2dldF8nICsgbWV0aG9kX3N1ZmZpeAorICAgICAgICAgICAgcmVzdG9yZV9uYW1lID0gJ3Jlc3RvcmVfJyArIG1ldGhvZF9zdWZmaXgKKyAgICAgICAgICAgIHlpZWxkIG5hbWUsIGdldGF0dHIoc2VsZiwgZ2V0X25hbWUpLCBnZXRhdHRyKHNlbGYsIHJlc3RvcmVfbmFtZSkKKworICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIHNlbGYuc2F2ZWRfdmFsdWVzID0gZGljdCgobmFtZSwgZ2V0KCkpIGZvciBuYW1lLCBnZXQsIHJlc3RvcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHNlbGYucmVzb3VyY2VfaW5mbygpKQorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIF9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsLCBleGNfdGIpOgorICAgICAgICBzYXZlZF92YWx1ZXMgPSBzZWxmLnNhdmVkX3ZhbHVlcworICAgICAgICBkZWwgc2VsZi5zYXZlZF92YWx1ZXMKKyAgICAgICAgc3VwcG9ydC5nY19jb2xsZWN0KCkgICMgU29tZSByZXNvdXJjZXMgdXNlIHdlYWsgcmVmZXJlbmNlcworICAgICAgICBmb3IgbmFtZSwgZ2V0LCByZXN0b3JlIGluIHNlbGYucmVzb3VyY2VfaW5mbygpOgorICAgICAgICAgICAgY3VycmVudCA9IGdldCgpCisgICAgICAgICAgICBvcmlnaW5hbCA9IHNhdmVkX3ZhbHVlcy5wb3AobmFtZSkKKyAgICAgICAgICAgICMgQ2hlY2sgZm9yIGNoYW5nZXMgdG8gdGhlIHJlc291cmNlJ3MgdmFsdWUKKyAgICAgICAgICAgIGlmIGN1cnJlbnQgIT0gb3JpZ2luYWw6CisgICAgICAgICAgICAgICAgc2VsZi5jaGFuZ2VkID0gVHJ1ZQorICAgICAgICAgICAgICAgIHJlc3RvcmUob3JpZ2luYWwpCisgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYucXVpZXQgYW5kIG5vdCBzZWxmLnBnbzoKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoZiJXYXJuaW5nIC0tIHtuYW1lfSB3YXMgbW9kaWZpZWQgYnkge3NlbGYudGVzdG5hbWV9IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZT1zeXMuc3RkZXJyLCBmbHVzaD1UcnVlKQorICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLnZlcmJvc2UgPiAxOgorICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoZiIgIEJlZm9yZToge29yaWdpbmFsfVxuICBBZnRlcjogIHtjdXJyZW50fSAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZT1zeXMuc3RkZXJyLCBmbHVzaD1UcnVlKQorICAgICAgICByZXR1cm4gRmFsc2UKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2xpYnJlZ3J0ZXN0L3NldHVwLnB5IGIvTGliL3Rlc3QvbGlicmVncnRlc3Qvc2V0dXAucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWQyNDUzMQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2xpYnJlZ3J0ZXN0L3NldHVwLnB5CkBAIC0wLDAgKzEsMTIxIEBACitpbXBvcnQgYXRleGl0CitpbXBvcnQgZmF1bHRoYW5kbGVyCitpbXBvcnQgb3MKK2ltcG9ydCBzaWduYWwKK2ltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Cit0cnk6CisgICAgaW1wb3J0IGdjCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgZ2MgPSBOb25lCisKK2Zyb20gdGVzdC5saWJyZWdydGVzdC5yZWZsZWFrIGltcG9ydCB3YXJtX2NhY2hlcworCisKK2RlZiBzZXR1cF90ZXN0cyhucyk6CisgICAgIyBEaXNwbGF5IHRoZSBQeXRob24gdHJhY2ViYWNrIG9uIGZhdGFsIGVycm9ycyAoZS5nLiBzZWdmYXVsdCkKKyAgICBmYXVsdGhhbmRsZXIuZW5hYmxlKGFsbF90aHJlYWRzPVRydWUpCisKKyAgICAjIERpc3BsYXkgdGhlIFB5dGhvbiB0cmFjZWJhY2sgb24gU0lHQUxSTSBvciBTSUdVU1IxIHNpZ25hbAorICAgIHNpZ25hbHMgPSBbXQorICAgIGlmIGhhc2F0dHIoc2lnbmFsLCAnU0lHQUxSTScpOgorICAgICAgICBzaWduYWxzLmFwcGVuZChzaWduYWwuU0lHQUxSTSkKKyAgICBpZiBoYXNhdHRyKHNpZ25hbCwgJ1NJR1VTUjEnKToKKyAgICAgICAgc2lnbmFscy5hcHBlbmQoc2lnbmFsLlNJR1VTUjEpCisgICAgZm9yIHNpZ251bSBpbiBzaWduYWxzOgorICAgICAgICBmYXVsdGhhbmRsZXIucmVnaXN0ZXIoc2lnbnVtLCBjaGFpbj1UcnVlKQorCisgICAgcmVwbGFjZV9zdGRvdXQoKQorICAgIHN1cHBvcnQucmVjb3JkX29yaWdpbmFsX3N0ZG91dChzeXMuc3Rkb3V0KQorCisgICAgaWYgbnMudGVzdGRpcjoKKyAgICAgICAgIyBQcmVwZW5kIHRlc3QgZGlyZWN0b3J5IHRvIHN5cy5wYXRoLCBzbyBydW50ZXN0KCkgd2lsbCBiZSBhYmxlCisgICAgICAgICMgdG8gbG9jYXRlIHRlc3RzCisgICAgICAgIHN5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmFic3BhdGgobnMudGVzdGRpcikpCisKKyAgICAjIFNvbWUgdGltZXMgX19wYXRoX18gYW5kIF9fZmlsZV9fIGFyZSBub3QgYWJzb2x1dGUgKGUuZy4gd2hpbGUgcnVubmluZyBmcm9tCisgICAgIyBMaWIvKSBhbmQsIGlmIHdlIGNoYW5nZSB0aGUgQ1dEIHRvIHJ1biB0aGUgdGVzdHMgaW4gYSB0ZW1wb3JhcnkgZGlyLCBzb21lCisgICAgIyBpbXBvcnRzIG1pZ2h0IGZhaWwuICBUaGlzIGFmZmVjdHMgb25seSB0aGUgbW9kdWxlcyBpbXBvcnRlZCBiZWZvcmUgb3MuY2hkaXIoKS4KKyAgICAjIFRoZXNlIG1vZHVsZXMgYXJlIHNlYXJjaGVkIGZpcnN0IGluIHN5cy5wYXRoWzBdIChzbyAnJyAtLSB0aGUgQ1dEKSBhbmQgaWYKKyAgICAjIHRoZXkgYXJlIGZvdW5kIGluIHRoZSBDV0QgdGhlaXIgX19maWxlX18gYW5kIF9fcGF0aF9fIHdpbGwgYmUgcmVsYXRpdmUgKHRoaXMKKyAgICAjIGhhcHBlbnMgYmVmb3JlIHRoZSBjaGRpcikuICBBbGwgdGhlIG1vZHVsZXMgaW1wb3J0ZWQgYWZ0ZXIgdGhlIGNoZGlyLCBhcmUKKyAgICAjIG5vdCBmb3VuZCBpbiB0aGUgQ1dELCBhbmQgc2luY2UgdGhlIG90aGVyIHBhdGhzIGluIHN5cy5wYXRoWzE6XSBhcmUgYWJzb2x1dGUKKyAgICAjIChzaXRlLnB5IGFic29sdXRpemUgdGhlbSksIHRoZSBfX2ZpbGVfXyBhbmQgX19wYXRoX18gd2lsbCBiZSBhYnNvbHV0ZSB0b28uCisgICAgIyBUaGVyZWZvcmUgaXQgaXMgbmVjZXNzYXJ5IHRvIGFic29sdXRpemUgbWFudWFsbHkgdGhlIF9fZmlsZV9fIGFuZCBfX3BhdGhfXyBvZgorICAgICMgdGhlIHBhY2thZ2VzIHRvIHByZXZlbnQgbGF0ZXIgaW1wb3J0cyB0byBmYWlsIHdoZW4gdGhlIENXRCBpcyBkaWZmZXJlbnQuCisgICAgZm9yIG1vZHVsZSBpbiBzeXMubW9kdWxlcy52YWx1ZXMoKToKKyAgICAgICAgaWYgaGFzYXR0cihtb2R1bGUsICdfX3BhdGhfXycpOgorICAgICAgICAgICAgZm9yIGluZGV4LCBwYXRoIGluIGVudW1lcmF0ZShtb2R1bGUuX19wYXRoX18pOgorICAgICAgICAgICAgICAgIG1vZHVsZS5fX3BhdGhfX1tpbmRleF0gPSBvcy5wYXRoLmFic3BhdGgocGF0aCkKKyAgICAgICAgaWYgaGFzYXR0cihtb2R1bGUsICdfX2ZpbGVfXycpOgorICAgICAgICAgICAgbW9kdWxlLl9fZmlsZV9fID0gb3MucGF0aC5hYnNwYXRoKG1vZHVsZS5fX2ZpbGVfXykKKworICAgICMgTWFjT1NYIChhLmsuYS4gRGFyd2luKSBoYXMgYSBkZWZhdWx0IHN0YWNrIHNpemUgdGhhdCBpcyB0b28gc21hbGwKKyAgICAjIGZvciBkZWVwbHkgcmVjdXJzaXZlIHJlZ3VsYXIgZXhwcmVzc2lvbnMuICBXZSBzZWUgdGhpcyBhcyBjcmFzaGVzIGluCisgICAgIyB0aGUgUHl0aG9uIHRlc3Qgc3VpdGUgd2hlbiBydW5uaW5nIHRlc3RfcmUucHkgYW5kIHRlc3Rfc3JlLnB5LiAgVGhlCisgICAgIyBmaXggaXMgdG8gc2V0IHRoZSBzdGFjayBsaW1pdCB0byAyMDQ4LgorICAgICMgVGhpcyBhcHByb2FjaCBtYXkgYWxzbyBiZSB1c2VmdWwgZm9yIG90aGVyIFVuaXh5IHBsYXRmb3JtcyB0aGF0CisgICAgIyBzdWZmZXIgZnJvbSBzbWFsbCBkZWZhdWx0IHN0YWNrIGxpbWl0cy4KKyAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGltcG9ydCByZXNvdXJjZQorICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzb2Z0LCBoYXJkID0gcmVzb3VyY2UuZ2V0cmxpbWl0KHJlc291cmNlLlJMSU1JVF9TVEFDSykKKyAgICAgICAgICAgIG5ld3NvZnQgPSBtaW4oaGFyZCwgbWF4KHNvZnQsIDEwMjQqMjA0OCkpCisgICAgICAgICAgICByZXNvdXJjZS5zZXRybGltaXQocmVzb3VyY2UuUkxJTUlUX1NUQUNLLCAobmV3c29mdCwgaGFyZCkpCisKKyAgICBpZiBucy5odW50cmxlYWtzOgorICAgICAgICB1bml0dGVzdC5CYXNlVGVzdFN1aXRlLl9jbGVhbnVwID0gRmFsc2UKKworICAgICAgICAjIEF2b2lkIGZhbHNlIHBvc2l0aXZlcyBkdWUgdG8gdmFyaW91cyBjYWNoZXMKKyAgICAgICAgIyBmaWxsaW5nIHNsb3dseSB3aXRoIHJhbmRvbSBkYXRhOgorICAgICAgICB3YXJtX2NhY2hlcygpCisKKyAgICBpZiBucy5tZW1saW1pdCBpcyBub3QgTm9uZToKKyAgICAgICAgc3VwcG9ydC5zZXRfbWVtbGltaXQobnMubWVtbGltaXQpCisKKyAgICBpZiBucy50aHJlc2hvbGQgaXMgbm90IE5vbmU6CisgICAgICAgIGdjLnNldF90aHJlc2hvbGQobnMudGhyZXNob2xkKQorCisgICAgdHJ5OgorICAgICAgICBpbXBvcnQgbXN2Y3J0CisgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICBwYXNzCisgICAgZWxzZToKKyAgICAgICAgbXN2Y3J0LlNldEVycm9yTW9kZShtc3ZjcnQuU0VNX0ZBSUxDUklUSUNBTEVSUk9SU3wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc3ZjcnQuU0VNX05PQUxJR05NRU5URkFVTFRFWENFUFR8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXN2Y3J0LlNFTV9OT0dQRkFVTFRFUlJPUkJPWHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc3ZjcnQuU0VNX05PT1BFTkZJTEVFUlJPUkJPWCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbXN2Y3J0LkNydFNldFJlcG9ydE1vZGUKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgIyByZWxlYXNlIGJ1aWxkCisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBmb3IgbSBpbiBbbXN2Y3J0LkNSVF9XQVJOLCBtc3ZjcnQuQ1JUX0VSUk9SLCBtc3ZjcnQuQ1JUX0FTU0VSVF06CisgICAgICAgICAgICAgICAgaWYgbnMudmVyYm9zZSBhbmQgbnMudmVyYm9zZSA+PSAyOgorICAgICAgICAgICAgICAgICAgICBtc3ZjcnQuQ3J0U2V0UmVwb3J0TW9kZShtLCBtc3ZjcnQuQ1JUREJHX01PREVfRklMRSkKKyAgICAgICAgICAgICAgICAgICAgbXN2Y3J0LkNydFNldFJlcG9ydEZpbGUobSwgbXN2Y3J0LkNSVERCR19GSUxFX1NUREVSUikKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBtc3ZjcnQuQ3J0U2V0UmVwb3J0TW9kZShtLCAwKQorCisgICAgc3VwcG9ydC51c2VfcmVzb3VyY2VzID0gbnMudXNlX3Jlc291cmNlcworCisKK2RlZiByZXBsYWNlX3N0ZG91dCgpOgorICAgICIiIlNldCBzdGRvdXQgZW5jb2RlciBlcnJvciBoYW5kbGVyIHRvIGJhY2tzbGFzaHJlcGxhY2UgKGFzIHN0ZGVyciBlcnJvcgorICAgIGhhbmRsZXIpIHRvIGF2b2lkIFVuaWNvZGVFbmNvZGVFcnJvciB3aGVuIHByaW50aW5nIGEgdHJhY2ViYWNrIiIiCisgICAgc3Rkb3V0ID0gc3lzLnN0ZG91dAorICAgIHN5cy5zdGRvdXQgPSBvcGVuKHN0ZG91dC5maWxlbm8oKSwgJ3cnLAorICAgICAgICBlbmNvZGluZz1zdGRvdXQuZW5jb2RpbmcsCisgICAgICAgIGVycm9ycz0iYmFja3NsYXNocmVwbGFjZSIsCisgICAgICAgIGNsb3NlZmQ9RmFsc2UsCisgICAgICAgIG5ld2xpbmU9J1xuJykKKworICAgIGRlZiByZXN0b3JlX3N0ZG91dCgpOgorICAgICAgICBzeXMuc3Rkb3V0LmNsb3NlKCkKKyAgICAgICAgc3lzLnN0ZG91dCA9IHN0ZG91dAorICAgIGF0ZXhpdC5yZWdpc3RlcihyZXN0b3JlX3N0ZG91dCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2xpc3RfdGVzdHMucHkgYi9MaWIvdGVzdC9saXN0X3Rlc3RzLnB5CmluZGV4IGYyMGZkYzAuLjI2ZTkzNjggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L2xpc3RfdGVzdHMucHkKKysrIGIvTGliL3Rlc3QvbGlzdF90ZXN0cy5weQpAQCAtMjY2LDkgKzI2NiwyMSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEsIGxpc3QoInNwYW1lZ2dzIikpCiAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBhLmV4dGVuZCwgTm9uZSkKLQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGEuZXh0ZW5kKQogCisgICAgICAgICMgb3ZlcmZsb3cgdGVzdC4gaXNzdWUxNjIxCisgICAgICAgIGNsYXNzIEN1c3RvbUl0ZXI6CisgICAgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKyAgICAgICAgICAgIGRlZiBfX25leHRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uCisgICAgICAgICAgICBkZWYgX19sZW5ndGhfaGludF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzeXMubWF4c2l6ZQorICAgICAgICBhID0gc2VsZi50eXBlMnRlc3QoWzEsMiwzLDRdKQorICAgICAgICBhLmV4dGVuZChDdXN0b21JdGVyKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYSwgWzEsMiwzLDRdKQorCisKICAgICBkZWYgdGVzdF9pbnNlcnQoc2VsZik6CiAgICAgICAgIGEgPSBzZWxmLnR5cGUydGVzdChbMCwgMSwgMl0pCiAgICAgICAgIGEuaW5zZXJ0KDAsIC0yKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbG9ja190ZXN0cy5weSBiL0xpYi90ZXN0L2xvY2tfdGVzdHMucHkKaW5kZXggYTY0YWExOC4uYTZjYjNiMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvbG9ja190ZXN0cy5weQorKysgYi9MaWIvdGVzdC9sb2NrX3Rlc3RzLnB5CkBAIC03LDYgKzcsNyBAQAogZnJvbSBfdGhyZWFkIGltcG9ydCBzdGFydF9uZXdfdGhyZWFkLCBUSU1FT1VUX01BWAogaW1wb3J0IHRocmVhZGluZwogaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgd2Vha3JlZgogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIApAQCAtMTk4LDYgKzE5OSwxNyBAQAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHJlc3VsdHNbMF0pCiAgICAgICAgIHNlbGYuYXNzZXJ0VGltZW91dChyZXN1bHRzWzFdLCAwLjUpCiAKKyAgICBkZWYgdGVzdF93ZWFrcmVmX2V4aXN0cyhzZWxmKToKKyAgICAgICAgbG9jayA9IHNlbGYubG9ja3R5cGUoKQorICAgICAgICByZWYgPSB3ZWFrcmVmLnJlZihsb2NrKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZWYoKSkKKworICAgIGRlZiB0ZXN0X3dlYWtyZWZfZGVsZXRlZChzZWxmKToKKyAgICAgICAgbG9jayA9IHNlbGYubG9ja3R5cGUoKQorICAgICAgICByZWYgPSB3ZWFrcmVmLnJlZihsb2NrKQorICAgICAgICBkZWwgbG9jaworICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZWYoKSkKKwogCiBjbGFzcyBMb2NrVGVzdHMoQmFzZUxvY2tUZXN0cyk6CiAgICAgIiIiCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9tYWtlX3NzbF9jZXJ0cy5weSBiL0xpYi90ZXN0L21ha2Vfc3NsX2NlcnRzLnB5CmluZGV4IGExZjI5OGQuLjRkOWYwMWIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L21ha2Vfc3NsX2NlcnRzLnB5CisrKyBiL0xpYi90ZXN0L21ha2Vfc3NsX2NlcnRzLnB5CkBAIC0zLDcgKzMsNiBAQAogCiBpbXBvcnQgb3MKIGltcG9ydCBzaHV0aWwKLWltcG9ydCBzeXMKIGltcG9ydCB0ZW1wZmlsZQogZnJvbSBzdWJwcm9jZXNzIGltcG9ydCAqCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3BpY2tsZXRlc3Rlci5weSBiL0xpYi90ZXN0L3BpY2tsZXRlc3Rlci5weQppbmRleCA3OTIyYjU0Li41YzgzMzYxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9waWNrbGV0ZXN0ZXIucHkKKysrIGIvTGliL3Rlc3QvcGlja2xldGVzdGVyLnB5CkBAIC0xMDAwLDcgKzEwMDAsNyBAQAogICAgICAgICAgICAgYicwJywgICAgICAgICAgICAgICAgICAgICAgICMgUE9QCiAgICAgICAgICAgICBiJzEnLCAgICAgICAgICAgICAgICAgICAgICAgIyBQT1BfTUFSSwogICAgICAgICAgICAgYicyJywgICAgICAgICAgICAgICAgICAgICAgICMgRFVQCi0gICAgICAgICAgICAjIGInKDInLCAgICAgICAgICAgICAgICAgICAgIyBQeVVucGlja2xlciBkb2Vzbid0IHJhaXNlCisgICAgICAgICAgICBiJygyJywKICAgICAgICAgICAgIGInUicsICAgICAgICAgICAgICAgICAgICAgICAjIFJFRFVDRQogICAgICAgICAgICAgYicpUicsCiAgICAgICAgICAgICBiJ2EnLCAgICAgICAgICAgICAgICAgICAgICAgIyBBUFBFTkQKQEAgLTEwMDksNyArMTAwOSw3IEBACiAgICAgICAgICAgICBiJ05iJywKICAgICAgICAgICAgIGInZCcsICAgICAgICAgICAgICAgICAgICAgICAjIERJQ1QKICAgICAgICAgICAgIGInZScsICAgICAgICAgICAgICAgICAgICAgICAjIEFQUEVORFMKLSAgICAgICAgICAgICMgYicoZScsICAgICAgICAgICAgICAgICAgICAjIFB5VW5waWNrbGVyIHJhaXNlcyBBdHRyaWJ1dGVFcnJvcgorICAgICAgICAgICAgYicoZScsCiAgICAgICAgICAgICBiJ2lidWlsdGluc1xubGlzdFxuJywgICAgICAgIyBJTlNUCiAgICAgICAgICAgICBiJ2wnLCAgICAgICAgICAgICAgICAgICAgICAgIyBMSVNUCiAgICAgICAgICAgICBiJ28nLCAgICAgICAgICAgICAgICAgICAgICAgIyBPQkoKQEAgLTEwMjIsNyArMTAyMiw3IEBACiAgICAgICAgICAgICBiJ05OcycsCiAgICAgICAgICAgICBiJ3QnLCAgICAgICAgICAgICAgICAgICAgICAgIyBUVVBMRQogICAgICAgICAgICAgYid1JywgICAgICAgICAgICAgICAgICAgICAgICMgU0VUSVRFTVMKLSAgICAgICAgICAgICMgYicodScsICAgICAgICAgICAgICAgICAgICAjIFB5VW5waWNrbGVyIGRvZXNuJ3QgcmFpc2UKKyAgICAgICAgICAgIGInKHUnLAogICAgICAgICAgICAgYid9KE51JywKICAgICAgICAgICAgIGInXHg4MScsICAgICAgICAgICAgICAgICAgICAjIE5FV09CSgogICAgICAgICAgICAgYicpXHg4MScsCkBAIC0xMDMzLDcgKzEwMzMsNyBAQAogICAgICAgICAgICAgYidOXHg4NycsCiAgICAgICAgICAgICBiJ05OXHg4NycsCiAgICAgICAgICAgICBiJ1x4OTAnLCAgICAgICAgICAgICAgICAgICAgIyBBRERJVEVNUwotICAgICAgICAgICAgIyBiJyhceDkwJywgICAgICAgICAgICAgICAgICMgUHlVbnBpY2tsZXIgcmFpc2VzIEF0dHJpYnV0ZUVycm9yCisgICAgICAgICAgICBiJyhceDkwJywKICAgICAgICAgICAgIGInXHg5MScsICAgICAgICAgICAgICAgICAgICAjIEZST1pFTlNFVAogICAgICAgICAgICAgYidceDkyJywgICAgICAgICAgICAgICAgICAgICMgTkVXT0JKX0VYCiAgICAgICAgICAgICBiJyl9XHg5MicsCkBAIC0xMDQ2LDcgKzEwNDYsNyBAQAogCiAgICAgZGVmIHRlc3RfYmFkX21hcmsoc2VsZik6CiAgICAgICAgIGJhZHBpY2tsZXMgPSBbCi0gICAgICAgICAgICAjIGInTiguJywgICAgICAgICAgICAgICAgICAgICAjIFNUT1AKKyAgICAgICAgICAgIGInTiguJywgICAgICAgICAgICAgICAgICAgICAjIFNUT1AKICAgICAgICAgICAgIGInTigyJywgICAgICAgICAgICAgICAgICAgICAjIERVUAogICAgICAgICAgICAgYidjYnVpbHRpbnNcbmxpc3RcbikoUicsICAgICMgUkVEVUNFCiAgICAgICAgICAgICBiJ2NidWlsdGluc1xubGlzdFxuKClSJywKQEAgLTEwODEsNyArMTA4MSw3IEBACiAgICAgICAgICAgICBiJ04oXHg5NCcsICAgICAgICAgICAgICAgICAgIyBNRU1PSVpFCiAgICAgICAgIF0KICAgICAgICAgZm9yIHAgaW4gYmFkcGlja2xlczoKLSAgICAgICAgICAgIHNlbGYuY2hlY2tfdW5waWNrbGluZ19lcnJvcihzZWxmLmJhZF9tYXJrX2Vycm9ycywgcCkKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfdW5waWNrbGluZ19lcnJvcihzZWxmLmJhZF9zdGFja19lcnJvcnMsIHApCiAKICAgICBkZWYgdGVzdF90cnVuY2F0ZWRfZGF0YShzZWxmKToKICAgICAgICAgc2VsZi5jaGVja191bnBpY2tsaW5nX2Vycm9yKEVPRkVycm9yLCBiJycpCkBAIC0xODU1LDE2ICsxODU1LDE0IEBACiAgICAgICAgIHguYWJjID0gNjY2CiAgICAgICAgIGZvciBwcm90byBpbiBwcm90b2NvbHM6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChwcm90bz1wcm90byk6Ci0gICAgICAgICAgICAgICAgaWYgMiA8PSBwcm90byA8IDQ6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYuZHVtcHMsIHgsIHByb3RvKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgIHMgPSBzZWxmLmR1bXBzKHgsIHByb3RvKQogICAgICAgICAgICAgICAgIGlmIHByb3RvIDwgMToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihiJ1xuTDY0MjA2JywgcykgICMgTE9ORwogICAgICAgICAgICAgICAgIGVsaWYgcHJvdG8gPCAyOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGInTVx4Y2VceGZhJywgcykgICMgQklOSU5UMgorICAgICAgICAgICAgICAgIGVsaWYgcHJvdG8gPCA0OgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGInWFx4MDRceDAwXHgwMFx4MDBGQUNFJywgcykgICMgQklOVU5JQ09ERQogICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGFzc2VydCBwcm90byA+PSA0CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYidceDhjXHgwNEZBQ0UnLCBzKSAgIyBTSE9SVF9CSU5VTklDT0RFCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcGNvZGVfaW5fcGlja2xlKHBpY2tsZS5ORVdPQkosIHMpKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Bjb2RlX2luX3BpY2tsZShwaWNrbGUuTkVXT0JKX0VYLCBzKSwKQEAgLTI1ODMsMTEgKzI1ODEsNiBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhwaWNrbGUuUGlja2xpbmdFcnJvciwgQmFkUGlja2xlcigpLmR1bXAsIDApCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHBpY2tsZS5VbnBpY2tsaW5nRXJyb3IsIEJhZFVucGlja2xlcigpLmxvYWQpCiAKLSAgICBkZWYgdGVzdF9iYWRfaW5wdXQoc2VsZik6Ci0gICAgICAgICMgVGVzdCBpc3N1ZTQyOTgKLSAgICAgICAgcyA9IGJ5dGVzKFsweDU4LCAwLCAwLCAwLCAweDU0XSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRU9GRXJyb3IsIHBpY2tsZS5sb2FkcywgcykKLQogCiBjbGFzcyBBYnN0cmFjdFBlcnNpc3RlbnRQaWNrbGVyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9weWRvY19tb2QucHkgYi9MaWIvdGVzdC9weWRvY19tb2QucHkKaW5kZXggY2RhMWM5ZS4uOWMxZmZmNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvcHlkb2NfbW9kLnB5CisrKyBiL0xpYi90ZXN0L3B5ZG9jX21vZC5weQpAQCAtMTIsNyArMTIsNyBAQAogICAgICAgICBwYXNzCiAKIGNsYXNzIEIob2JqZWN0KToKLSAgICBOT19NRUFOSU5HID0gImVnZ3MiCisgICAgTk9fTUVBTklORzogc3RyID0gImVnZ3MiCiAgICAgcGFzcwogCiBjbGFzcyBDKG9iamVjdCk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9yZV90ZXN0cy5weSBiL0xpYi90ZXN0L3JlX3Rlc3RzLnB5CmluZGV4IDhjMTU4ZjguLmEzNzlkMzMgMTAwNzU1Ci0tLSBhL0xpYi90ZXN0L3JlX3Rlc3RzLnB5CisrKyBiL0xpYi90ZXN0L3JlX3Rlc3RzLnB5CkBAIC0xMDYsOCArMTA2LDggQEAKICAgICAoJ2EuKmInLCAnYWNjXG5jY2InLCBGQUlMKSwKICAgICAoJ2EuezQsNX1iJywgJ2FjY1xuY2NiJywgRkFJTCksCiAgICAgKCdhLmInLCAnYVxyYicsIFNVQ0NFRUQsICdmb3VuZCcsICdhXHJiJyksCi0gICAgKCdhLmIoP3MpJywgJ2FcbmInLCBTVUNDRUVELCAnZm91bmQnLCAnYVxuYicpLAotICAgICgnYS4qKD9zKWInLCAnYWNjXG5jY2InLCBTVUNDRUVELCAnZm91bmQnLCAnYWNjXG5jY2InKSwKKyAgICAoJyg/cylhLmInLCAnYVxuYicsIFNVQ0NFRUQsICdmb3VuZCcsICdhXG5iJyksCisgICAgKCcoP3MpYS4qYicsICdhY2NcbmNjYicsIFNVQ0NFRUQsICdmb3VuZCcsICdhY2NcbmNjYicpLAogICAgICgnKD9zKWEuezQsNX1iJywgJ2FjY1xuY2NiJywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ2FjY1xuY2NiJyksCiAgICAgKCcoP3MpYS5iJywgJ2FcbmInLCBTVUNDRUVELCAnZm91bmQnLCAnYVxuYicpLAogCkBAIC0xNTgsNyArMTU4LDcgQEAKICAgICAoJyhhYmMnLCAnLScsIFNZTlRBWF9FUlJPUiksCiAgICAgKCdhXScsICdhXScsIFNVQ0NFRUQsICdmb3VuZCcsICdhXScpLAogICAgICgnYVtdXWInLCAnYV1iJywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ2FdYicpLAotICAgICgnYVtcXV1iJywgJ2FdYicsIFNVQ0NFRUQsICdmb3VuZCcsICdhXWInKSwKKyAgICAoJ2FbXFxdXWInLCAnYV1iJywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ2FdYicpLAogICAgICgnYVteYmNdZCcsICdhZWQnLCBTVUNDRUVELCAnZm91bmQnLCAnYWVkJyksCiAgICAgKCdhW15iY11kJywgJ2FiZCcsIEZBSUwpLAogICAgICgnYVteLWJdYycsICdhZGMnLCBTVUNDRUVELCAnZm91bmQnLCAnYWRjJyksCkBAIC01NTEsNyArNTUxLDcgQEAKICAgICAjIGxvb2tiZWhpbmQ6IHNwbGl0IGJ5IDogYnV0IG5vdCBpZiBpdCBpcyBlc2NhcGVkIGJ5IC0uCiAgICAgKCcoPzwhLSk6KC4qPykoPzwhLSk6JywgJ2E6YmMtOmRlOmYnLCBTVUNDRUVELCAnZzEnLCAnYmMtOmRlJyApLAogICAgICMgZXNjYXBpbmcgd2l0aCBcIGFzIHdlIGtub3cgaXQKLSAgICAoJyg/PCFcXFwpOiguKj8pKD88IVxcXCk6JywgJ2E6YmNcXDpkZTpmJywgU1VDQ0VFRCwgJ2cxJywgJ2JjXFw6ZGUnICksCisgICAgKCcoPzwhXFxcXCk6KC4qPykoPzwhXFxcXCk6JywgJ2E6YmNcXDpkZTpmJywgU1VDQ0VFRCwgJ2cxJywgJ2JjXFw6ZGUnICksCiAgICAgIyB0ZXJtaW5hdGluZyB3aXRoICcgYW5kIGVzY2FwaW5nIHdpdGggPyBhcyBpbiBlZGlmYWN0CiAgICAgKCIoPzwhXFw/KScoLio/KSg/PCFcXD8pJyIsICJhJ2JjPydkZSdmIiwgU1VDQ0VFRCwgJ2cxJywgImJjPydkZSIgKSwKIApAQCAtNTYzLDcgKzU2Myw3IEBACiAgICAgIyBDaGVjayBvZGQgcGxhY2VtZW50IG9mIGVtYmVkZGVkIHBhdHRlcm4gbW9kaWZpZXJzCiAKICAgICAjIG5vdCBhbiBlcnJvciB1bmRlciBQQ1JFL1BSRToKLSAgICAoJ3coP2kpJywgJ1cnLCBTVUNDRUVELCAnZm91bmQnLCAnVycpLAorICAgICgnKD9pKXcnLCAnVycsIFNVQ0NFRUQsICdmb3VuZCcsICdXJyksCiAgICAgIyAoJ3coP2kpJywgJ1cnLCBTWU5UQVhfRVJST1IpLAogCiAgICAgIyBDb21tZW50cyB1c2luZyB0aGUgeCBlbWJlZGRlZCBwYXR0ZXJuIG1vZGlmaWVyCkBAIC02MjcsNyArNjI3LDcgQEAKICAgICAjIGJ1ZyAxMTQwMzM6IG5vdGhpbmcgdG8gcmVwZWF0CiAgICAgKHInKHg/KT8nLCAneCcsIFNVQ0NFRUQsICdmb3VuZCcsICd4JyksCiAgICAgIyBidWcgMTE1MDQwOiByZXNjYW4gaWYgZmxhZ3MgYXJlIG1vZGlmaWVkIGluc2lkZSBwYXR0ZXJuCi0gICAgKHInICg/eClmb28gJywgJ2ZvbycsIFNVQ0NFRUQsICdmb3VuZCcsICdmb28nKSwKKyAgICAocicoP3gpIGZvbyAnLCAnZm9vJywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ2ZvbycpLAogICAgICMgYnVnIDExNTYxODogbmVnYXRpdmUgbG9va2FoZWFkCiAgICAgKHInKD88IWFiYykoZC5mKScsICdhYmNkZWZkb2YnLCBTVUNDRUVELCAnZm91bmQnLCAnZG9mJyksCiAgICAgIyBidWcgMTE2MjUxOiBjaGFyYWN0ZXIgY2xhc3MgYnVnCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9yZWdydGVzdC5weSBiL0xpYi90ZXN0L3JlZ3J0ZXN0LnB5CmluZGV4IGMxZDg1ZjYuLjIxYjBlZGYgMTAwNzU1Ci0tLSBhL0xpYi90ZXN0L3JlZ3J0ZXN0LnB5CisrKyBiL0xpYi90ZXN0L3JlZ3J0ZXN0LnB5CkBAIC02LDE2NzAgKzYsMzMgQEAKIFJ1biB0aGlzIHNjcmlwdCB3aXRoIC1oIG9yIC0taGVscCBmb3IgZG9jdW1lbnRhdGlvbi4KICIiIgogCi1VU0FHRSA9ICIiIlwKLXB5dGhvbiAtbSB0ZXN0IFtvcHRpb25zXSBbdGVzdF9uYW1lMSBbdGVzdF9uYW1lMiAuLi5dXQotcHl0aG9uIHBhdGgvdG8vTGliL3Rlc3QvcmVncnRlc3QucHkgW29wdGlvbnNdIFt0ZXN0X25hbWUxIFt0ZXN0X25hbWUyIC4uLl1dCi0iIiIKLQotREVTQ1JJUFRJT04gPSAiIiJcCi1SdW4gUHl0aG9uIHJlZ3Jlc3Npb24gdGVzdHMuCi0KLUlmIG5vIGFyZ3VtZW50cyBvciBvcHRpb25zIGFyZSBwcm92aWRlZCwgZmluZHMgYWxsIGZpbGVzIG1hdGNoaW5nCi10aGUgcGF0dGVybiAidGVzdF8qIiBpbiB0aGUgTGliL3Rlc3Qgc3ViZGlyZWN0b3J5IGFuZCBydW5zCi10aGVtIGluIGFscGhhYmV0aWNhbCBvcmRlciAoYnV0IHNlZSAtTSBhbmQgLXUsIGJlbG93LCBmb3IgZXhjZXB0aW9ucykuCi0KLUZvciBtb3JlIHJpZ29yb3VzIHRlc3RpbmcsIGl0IGlzIHVzZWZ1bCB0byB1c2UgdGhlIGZvbGxvd2luZwotY29tbWFuZCBsaW5lOgotCi1weXRob24gLUUgLVdkIC1tIHRlc3QgW29wdGlvbnNdIFt0ZXN0X25hbWUxIC4uLl0KLSIiIgotCi1FUElMT0cgPSAiIiJcCi1BZGRpdGlvbmFsIG9wdGlvbiBkZXRhaWxzOgotCi0tciByYW5kb21pemVzIHRlc3QgZXhlY3V0aW9uIG9yZGVyLiBZb3UgY2FuIHVzZSAtLXJhbmRzZWVkPWludCB0byBwcm92aWRlIGFuCi1pbnQgc2VlZCB2YWx1ZSBmb3IgdGhlIHJhbmRvbWl6ZXI7IHRoaXMgaXMgdXNlZnVsIGZvciByZXByb2R1Y2luZyB0cm91Ymxlc29tZQotdGVzdCBvcmRlcnMuCi0KLS1zIE9uIHRoZSBmaXJzdCBpbnZvY2F0aW9uIG9mIHJlZ3J0ZXN0IHVzaW5nIC1zLCB0aGUgZmlyc3QgdGVzdCBmaWxlIGZvdW5kCi1vciB0aGUgZmlyc3QgdGVzdCBmaWxlIGdpdmVuIG9uIHRoZSBjb21tYW5kIGxpbmUgaXMgcnVuLCBhbmQgdGhlIG5hbWUgb2YKLXRoZSBuZXh0IHRlc3QgaXMgcmVjb3JkZWQgaW4gYSBmaWxlIG5hbWVkIHB5bmV4dHRlc3QuICBJZiBydW4gZnJvbSB0aGUKLVB5dGhvbiBidWlsZCBkaXJlY3RvcnksIHB5bmV4dHRlc3QgaXMgbG9jYXRlZCBpbiB0aGUgJ2J1aWxkJyBzdWJkaXJlY3RvcnksCi1vdGhlcndpc2UgaXQgaXMgbG9jYXRlZCBpbiB0ZW1wZmlsZS5nZXR0ZW1wZGlyKCkuICBPbiBzdWJzZXF1ZW50IHJ1bnMsCi10aGUgdGVzdCBpbiBweW5leHR0ZXN0IGlzIHJ1biwgYW5kIHRoZSBuZXh0IHRlc3QgaXMgd3JpdHRlbiB0byBweW5leHR0ZXN0LgotV2hlbiB0aGUgbGFzdCB0ZXN0IGhhcyBiZWVuIHJ1biwgcHluZXh0dGVzdCBpcyBkZWxldGVkLiAgSW4gdGhpcyB3YXkgaXQKLWlzIHBvc3NpYmxlIHRvIHNpbmdsZSBzdGVwIHRocm91Z2ggdGhlIHRlc3QgZmlsZXMuICBUaGlzIGlzIHVzZWZ1bCB3aGVuCi1kb2luZyBtZW1vcnkgYW5hbHlzaXMgb24gdGhlIFB5dGhvbiBpbnRlcnByZXRlciwgd2hpY2ggcHJvY2VzcyB0ZW5kcyB0bwotY29uc3VtZSB0b28gbWFueSByZXNvdXJjZXMgdG8gcnVuIHRoZSBmdWxsIHJlZ3Jlc3Npb24gdGVzdCBub24tc3RvcC4KLQotLVMgaXMgdXNlZCB0byBjb250aW51ZSBydW5uaW5nIHRlc3RzIGFmdGVyIGFuIGFib3J0ZWQgcnVuLiAgSXQgd2lsbAotbWFpbnRhaW4gdGhlIG9yZGVyIGEgc3RhbmRhcmQgcnVuIChpZSwgdGhpcyBhc3N1bWVzIC1yIGlzIG5vdCB1c2VkKS4KLVRoaXMgaXMgdXNlZnVsIGFmdGVyIHRoZSB0ZXN0cyBoYXZlIHByZW1hdHVyZWx5IHN0b3BwZWQgZm9yIHNvbWUgZXh0ZXJuYWwKLXJlYXNvbiBhbmQgeW91IHdhbnQgdG8gc3RhcnQgcnVubmluZyBmcm9tIHdoZXJlIHlvdSBsZWZ0IG9mZiByYXRoZXIKLXRoYW4gc3RhcnRpbmcgZnJvbSB0aGUgYmVnaW5uaW5nLgotCi0tZiByZWFkcyB0aGUgbmFtZXMgb2YgdGVzdHMgZnJvbSB0aGUgZmlsZSBnaXZlbiBhcyBmJ3MgYXJndW1lbnQsIG9uZQotb3IgbW9yZSB0ZXN0IG5hbWVzIHBlciBsaW5lLiAgV2hpdGVzcGFjZSBpcyBpZ25vcmVkLiAgQmxhbmsgbGluZXMgYW5kCi1saW5lcyBiZWdpbm5pbmcgd2l0aCAnIycgYXJlIGlnbm9yZWQuICBUaGlzIGlzIGVzcGVjaWFsbHkgdXNlZnVsIGZvcgotd2hpdHRsaW5nIGRvd24gZmFpbHVyZXMgaW52b2x2aW5nIGludGVyYWN0aW9ucyBhbW9uZyB0ZXN0cy4KLQotLUwgY2F1c2VzIHRoZSBsZWFrcygxKSBjb21tYW5kIHRvIGJlIHJ1biBqdXN0IGJlZm9yZSBleGl0IGlmIGl0IGV4aXN0cy4KLWxlYWtzKDEpIGlzIGF2YWlsYWJsZSBvbiBNYWMgT1MgWCBhbmQgcHJlc3VtYWJseSBvbiBzb21lIG90aGVyCi1GcmVlQlNELWRlcml2ZWQgc3lzdGVtcy4KLQotLVIgcnVucyBlYWNoIHRlc3Qgc2V2ZXJhbCB0aW1lcyBhbmQgZXhhbWluZXMgc3lzLmdldHRvdGFscmVmY291bnQoKSB0bwotc2VlIGlmIHRoZSB0ZXN0IGFwcGVhcnMgdG8gYmUgbGVha2luZyByZWZlcmVuY2VzLiAgVGhlIGFyZ3VtZW50IHNob3VsZAotYmUgb2YgdGhlIGZvcm0gc3RhYjpydW46Zm5hbWUgd2hlcmUgJ3N0YWInIGlzIHRoZSBudW1iZXIgb2YgdGltZXMgdGhlCi10ZXN0IGlzIHJ1biB0byBsZXQgZ2V0dG90YWxyZWZjb3VudCBzZXR0bGUgZG93biwgJ3J1bicgaXMgdGhlIG51bWJlcgotb2YgdGltZXMgZnVydGhlciBpdCBpcyBydW4gYW5kICdmbmFtZScgaXMgdGhlIG5hbWUgb2YgdGhlIGZpbGUgdGhlCi1yZXBvcnRzIGFyZSB3cml0dGVuIHRvLiAgVGhlc2UgcGFyYW1ldGVycyBhbGwgaGF2ZSBkZWZhdWx0cyAoNSwgNCBhbmQKLSJyZWZsb2cudHh0IiByZXNwZWN0aXZlbHkpLCBhbmQgdGhlIG1pbmltYWwgaW52b2NhdGlvbiBpcyAnLVIgOicuCi0KLS1NIHJ1bnMgdGVzdHMgdGhhdCByZXF1aXJlIGFuIGV4b3JiaXRhbnQgYW1vdW50IG9mIG1lbW9yeS4gVGhlc2UgdGVzdHMKLXR5cGljYWxseSB0cnkgdG8gYXNjZXJ0YWluIGNvbnRhaW5lcnMga2VlcCB3b3JraW5nIHdoZW4gY29udGFpbmluZyBtb3JlIHRoYW4KLTIgYmlsbGlvbiBvYmplY3RzLCB3aGljaCBvbmx5IHdvcmtzIG9uIDY0LWJpdCBzeXN0ZW1zLiBUaGVyZSBhcmUgYWxzbyBzb21lCi10ZXN0cyB0aGF0IHRyeSB0byBleGhhdXN0IHRoZSBhZGRyZXNzIHNwYWNlIG9mIHRoZSBwcm9jZXNzLCB3aGljaCBvbmx5IG1ha2VzCi1zZW5zZSBvbiAzMi1iaXQgc3lzdGVtcyB3aXRoIGF0IGxlYXN0IDJHYiBvZiBtZW1vcnkuIFRoZSBwYXNzZWQtaW4gbWVtbGltaXQsCi13aGljaCBpcyBhIHN0cmluZyBpbiB0aGUgZm9ybSBvZiAnMi41R2InLCBkZXRlcm1pbmVzIGhvd211Y2ggbWVtb3J5IHRoZQotdGVzdHMgd2lsbCBsaW1pdCB0aGVtc2VsdmVzIHRvIChidXQgdGhleSBtYXkgZ28gc2xpZ2h0bHkgb3Zlci4pIFRoZSBudW1iZXIKLXNob3VsZG4ndCBiZSBtb3JlIG1lbW9yeSB0aGFuIHRoZSBtYWNoaW5lIGhhcyAoaW5jbHVkaW5nIHN3YXAgbWVtb3J5KS4gWW91Ci1zaG91bGQgYWxzbyBrZWVwIGluIG1pbmQgdGhhdCBzd2FwIG1lbW9yeSBpcyBnZW5lcmFsbHkgbXVjaCwgbXVjaCBzbG93ZXIKLXRoYW4gUkFNLCBhbmQgc2V0dGluZyBtZW1saW1pdCB0byBhbGwgYXZhaWxhYmxlIFJBTSBvciBoaWdoZXIgd2lsbCBoZWF2aWx5Ci10YXggdGhlIG1hY2hpbmUuIE9uIHRoZSBvdGhlciBoYW5kLCBpdCBpcyBubyB1c2UgcnVubmluZyB0aGVzZSB0ZXN0cyB3aXRoIGEKLWxpbWl0IG9mIGxlc3MgdGhhbiAyLjVHYiwgYW5kIG1hbnkgcmVxdWlyZSBtb3JlIHRoYW4gMjBHYi4gVGVzdHMgdGhhdCBleHBlY3QKLXRvIHVzZSBtb3JlIHRoYW4gbWVtbGltaXQgbWVtb3J5IHdpbGwgYmUgc2tpcHBlZC4gVGhlIGJpZy1tZW1vcnkgdGVzdHMKLWdlbmVyYWxseSBydW4gdmVyeSwgdmVyeSBsb25nLgotCi0tdSBpcyB1c2VkIHRvIHNwZWNpZnkgd2hpY2ggc3BlY2lhbCByZXNvdXJjZSBpbnRlbnNpdmUgdGVzdHMgdG8gcnVuLAotc3VjaCBhcyB0aG9zZSByZXF1aXJpbmcgbGFyZ2UgZmlsZSBzdXBwb3J0IG9yIG5ldHdvcmsgY29ubmVjdGl2aXR5LgotVGhlIGFyZ3VtZW50IGlzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2Ygd29yZHMgaW5kaWNhdGluZyB0aGUKLXJlc291cmNlcyB0byB0ZXN0LiAgQ3VycmVudGx5IG9ubHkgdGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lZDoKLQotICAgIGFsbCAtICAgICAgIEVuYWJsZSBhbGwgc3BlY2lhbCByZXNvdXJjZXMuCi0KLSAgICBub25lIC0gICAgICBEaXNhYmxlIGFsbCBzcGVjaWFsIHJlc291cmNlcyAodGhpcyBpcyB0aGUgZGVmYXVsdCkuCi0KLSAgICBhdWRpbyAtICAgICBUZXN0cyB0aGF0IHVzZSB0aGUgYXVkaW8gZGV2aWNlLiAgKFRoZXJlIGFyZSBrbm93bgotICAgICAgICAgICAgICAgIGNhc2VzIG9mIGJyb2tlbiBhdWRpbyBkcml2ZXJzIHRoYXQgY2FuIGNyYXNoIFB5dGhvbiBvcgotICAgICAgICAgICAgICAgIGV2ZW4gdGhlIExpbnV4IGtlcm5lbC4pCi0KLSAgICBjdXJzZXMgLSAgICBUZXN0cyB0aGF0IHVzZSBjdXJzZXMgYW5kIHdpbGwgbW9kaWZ5IHRoZSB0ZXJtaW5hbCdzCi0gICAgICAgICAgICAgICAgc3RhdGUgYW5kIG91dHB1dCBtb2Rlcy4KLQotICAgIGxhcmdlZmlsZSAtIEl0IGlzIG9rYXkgdG8gcnVuIHNvbWUgdGVzdCB0aGF0IG1heSBjcmVhdGUgaHVnZQotICAgICAgICAgICAgICAgIGZpbGVzLiAgVGhlc2UgdGVzdHMgY2FuIHRha2UgYSBsb25nIHRpbWUgYW5kIG1heQotICAgICAgICAgICAgICAgIGNvbnN1bWUgPjJHQiBvZiBkaXNrIHNwYWNlIHRlbXBvcmFyaWx5LgotCi0gICAgbmV0d29yayAtICAgSXQgaXMgb2theSB0byBydW4gdGVzdHMgdGhhdCB1c2UgZXh0ZXJuYWwgbmV0d29yawotICAgICAgICAgICAgICAgIHJlc291cmNlLCBlLmcuIHRlc3RpbmcgU1NMIHN1cHBvcnQgZm9yIHNvY2tldHMuCi0KLSAgICBkZWNpbWFsIC0gICBUZXN0IHRoZSBkZWNpbWFsIG1vZHVsZSBhZ2FpbnN0IGEgbGFyZ2Ugc3VpdGUgdGhhdAotICAgICAgICAgICAgICAgIHZlcmlmaWVzIGNvbXBsaWFuY2Ugd2l0aCBzdGFuZGFyZHMuCi0KLSAgICBjcHUgLSAgICAgICBVc2VkIGZvciBjZXJ0YWluIENQVS1oZWF2eSB0ZXN0cy4KLQotICAgIHN1YnByb2Nlc3MgIFJ1biBhbGwgdGVzdHMgZm9yIHRoZSBzdWJwcm9jZXNzIG1vZHVsZS4KLQotICAgIHVybGZldGNoIC0gIEl0IGlzIG9rYXkgdG8gZG93bmxvYWQgZmlsZXMgcmVxdWlyZWQgb24gdGVzdGluZy4KLQotICAgIGd1aSAtICAgICAgIFJ1biB0ZXN0cyB0aGF0IHJlcXVpcmUgYSBydW5uaW5nIEdVSS4KLQotVG8gZW5hYmxlIGFsbCByZXNvdXJjZXMgZXhjZXB0IG9uZSwgdXNlICctdWFsbCwtPHJlc291cmNlPicuICBGb3IKLWV4YW1wbGUsIHRvIHJ1biBhbGwgdGhlIHRlc3RzIGV4Y2VwdCBmb3IgdGhlIGd1aSB0ZXN0cywgZ2l2ZSB0aGUKLW9wdGlvbiAnLXVhbGwsLWd1aScuCi0iIiIKLQogIyBXZSBpbXBvcnQgaW1wb3J0bGliICpBU0FQKiBpbiBvcmRlciB0byB0ZXN0ICMxNTM4NgogaW1wb3J0IGltcG9ydGxpYgogCi1pbXBvcnQgYXJncGFyc2UKLWltcG9ydCBidWlsdGlucwotaW1wb3J0IGZhdWx0aGFuZGxlcgotaW1wb3J0IGlvCi1pbXBvcnQganNvbgotaW1wb3J0IGxvY2FsZQotaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcwotaW1wb3J0IHBsYXRmb3JtCi1pbXBvcnQgcmFuZG9tCi1pbXBvcnQgcmUKLWltcG9ydCBzaHV0aWwKLWltcG9ydCBzaWduYWwKIGltcG9ydCBzeXMKLWltcG9ydCBzeXNjb25maWcKLWltcG9ydCB0ZW1wZmlsZQotaW1wb3J0IHRpbWUKLWltcG9ydCB0cmFjZWJhY2sKLWltcG9ydCB1bml0dGVzdAotaW1wb3J0IHdhcm5pbmdzCi1mcm9tIGluc3BlY3QgaW1wb3J0IGlzYWJzdHJhY3QKK2Zyb20gdGVzdC5saWJyZWdydGVzdCBpbXBvcnQgbWFpbgogCi10cnk6Ci0gICAgaW1wb3J0IHRocmVhZGluZwotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIHRocmVhZGluZyA9IE5vbmUKLXRyeToKLSAgICBpbXBvcnQgX211bHRpcHJvY2Vzc2luZywgbXVsdGlwcm9jZXNzaW5nLnByb2Nlc3MKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBtdWx0aXByb2Nlc3NpbmcgPSBOb25lCiAKKyMgQWxpYXMgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgKGp1c3QgaW4gY2FzZSkKK21haW5faW5fdGVtcF9jd2QgPSBtYWluCiAKLSMgU29tZSB0aW1lcyBfX3BhdGhfXyBhbmQgX19maWxlX18gYXJlIG5vdCBhYnNvbHV0ZSAoZS5nLiB3aGlsZSBydW5uaW5nIGZyb20KLSMgTGliLykgYW5kLCBpZiB3ZSBjaGFuZ2UgdGhlIENXRCB0byBydW4gdGhlIHRlc3RzIGluIGEgdGVtcG9yYXJ5IGRpciwgc29tZQotIyBpbXBvcnRzIG1pZ2h0IGZhaWwuICBUaGlzIGFmZmVjdHMgb25seSB0aGUgbW9kdWxlcyBpbXBvcnRlZCBiZWZvcmUgb3MuY2hkaXIoKS4KLSMgVGhlc2UgbW9kdWxlcyBhcmUgc2VhcmNoZWQgZmlyc3QgaW4gc3lzLnBhdGhbMF0gKHNvICcnIC0tIHRoZSBDV0QpIGFuZCBpZgotIyB0aGV5IGFyZSBmb3VuZCBpbiB0aGUgQ1dEIHRoZWlyIF9fZmlsZV9fIGFuZCBfX3BhdGhfXyB3aWxsIGJlIHJlbGF0aXZlICh0aGlzCi0jIGhhcHBlbnMgYmVmb3JlIHRoZSBjaGRpcikuICBBbGwgdGhlIG1vZHVsZXMgaW1wb3J0ZWQgYWZ0ZXIgdGhlIGNoZGlyLCBhcmUKLSMgbm90IGZvdW5kIGluIHRoZSBDV0QsIGFuZCBzaW5jZSB0aGUgb3RoZXIgcGF0aHMgaW4gc3lzLnBhdGhbMTpdIGFyZSBhYnNvbHV0ZQotIyAoc2l0ZS5weSBhYnNvbHV0aXplIHRoZW0pLCB0aGUgX19maWxlX18gYW5kIF9fcGF0aF9fIHdpbGwgYmUgYWJzb2x1dGUgdG9vLgotIyBUaGVyZWZvcmUgaXQgaXMgbmVjZXNzYXJ5IHRvIGFic29sdXRpemUgbWFudWFsbHkgdGhlIF9fZmlsZV9fIGFuZCBfX3BhdGhfXyBvZgotIyB0aGUgcGFja2FnZXMgdG8gcHJldmVudCBsYXRlciBpbXBvcnRzIHRvIGZhaWwgd2hlbiB0aGUgQ1dEIGlzIGRpZmZlcmVudC4KLWZvciBtb2R1bGUgaW4gc3lzLm1vZHVsZXMudmFsdWVzKCk6Ci0gICAgaWYgaGFzYXR0cihtb2R1bGUsICdfX3BhdGhfXycpOgotICAgICAgICBtb2R1bGUuX19wYXRoX18gPSBbb3MucGF0aC5hYnNwYXRoKHBhdGgpIGZvciBwYXRoIGluIG1vZHVsZS5fX3BhdGhfX10KLSAgICBpZiBoYXNhdHRyKG1vZHVsZSwgJ19fZmlsZV9fJyk6Ci0gICAgICAgIG1vZHVsZS5fX2ZpbGVfXyA9IG9zLnBhdGguYWJzcGF0aChtb2R1bGUuX19maWxlX18pCiAKLQotIyBNYWNPU1ggKGEuay5hLiBEYXJ3aW4pIGhhcyBhIGRlZmF1bHQgc3RhY2sgc2l6ZSB0aGF0IGlzIHRvbyBzbWFsbAotIyBmb3IgZGVlcGx5IHJlY3Vyc2l2ZSByZWd1bGFyIGV4cHJlc3Npb25zLiAgV2Ugc2VlIHRoaXMgYXMgY3Jhc2hlcyBpbgotIyB0aGUgUHl0aG9uIHRlc3Qgc3VpdGUgd2hlbiBydW5uaW5nIHRlc3RfcmUucHkgYW5kIHRlc3Rfc3JlLnB5LiAgVGhlCi0jIGZpeCBpcyB0byBzZXQgdGhlIHN0YWNrIGxpbWl0IHRvIDIwNDguCi0jIFRoaXMgYXBwcm9hY2ggbWF5IGFsc28gYmUgdXNlZnVsIGZvciBvdGhlciBVbml4eSBwbGF0Zm9ybXMgdGhhdAotIyBzdWZmZXIgZnJvbSBzbWFsbCBkZWZhdWx0IHN0YWNrIGxpbWl0cy4KLWlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKLSAgICB0cnk6Ci0gICAgICAgIGltcG9ydCByZXNvdXJjZQotICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgcGFzcwotICAgIGVsc2U6Ci0gICAgICAgIHNvZnQsIGhhcmQgPSByZXNvdXJjZS5nZXRybGltaXQocmVzb3VyY2UuUkxJTUlUX1NUQUNLKQotICAgICAgICBuZXdzb2Z0ID0gbWluKGhhcmQsIG1heChzb2Z0LCAxMDI0KjIwNDgpKQotICAgICAgICByZXNvdXJjZS5zZXRybGltaXQocmVzb3VyY2UuUkxJTUlUX1NUQUNLLCAobmV3c29mdCwgaGFyZCkpCi0KLSMgVGVzdCByZXN1bHQgY29uc3RhbnRzLgotUEFTU0VEID0gMQotRkFJTEVEID0gMAotRU5WX0NIQU5HRUQgPSAtMQotU0tJUFBFRCA9IC0yCi1SRVNPVVJDRV9ERU5JRUQgPSAtMwotSU5URVJSVVBURUQgPSAtNAotQ0hJTERfRVJST1IgPSAtNSAgICMgZXJyb3IgaW4gYSBjaGlsZCBwcm9jZXNzCi0KLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotCi1SRVNPVVJDRV9OQU1FUyA9ICgnYXVkaW8nLCAnY3Vyc2VzJywgJ2xhcmdlZmlsZScsICduZXR3b3JrJywKLSAgICAgICAgICAgICAgICAgICdkZWNpbWFsJywgJ2NwdScsICdzdWJwcm9jZXNzJywgJ3VybGZldGNoJywgJ2d1aScpCi0KLSMgV2hlbiB0ZXN0cyBhcmUgcnVuIGZyb20gdGhlIFB5dGhvbiBidWlsZCBkaXJlY3RvcnksIGl0IGlzIGJlc3QgcHJhY3RpY2UKLSMgdG8ga2VlcCB0aGUgdGVzdCBmaWxlcyBpbiBhIHN1YmZvbGRlci4gIFRoaXMgZWFzZXMgdGhlIGNsZWFudXAgb2YgbGVmdG92ZXIKLSMgZmlsZXMgdXNpbmcgdGhlICJtYWtlIGRpc3RjbGVhbiIgY29tbWFuZC4KLWlmIHN5c2NvbmZpZy5pc19weXRob25fYnVpbGQoKToKLSAgICBURU1QRElSID0gb3MucGF0aC5qb2luKHN5c2NvbmZpZy5nZXRfY29uZmlnX3Zhcignc3JjZGlyJyksICdidWlsZCcpCi1lbHNlOgotICAgIFRFTVBESVIgPSB0ZW1wZmlsZS5nZXR0ZW1wZGlyKCkKLVRFTVBESVIgPSBvcy5wYXRoLmFic3BhdGgoVEVNUERJUikKLQotY2xhc3MgX0FyZ1BhcnNlcihhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcik6Ci0KLSAgICBkZWYgZXJyb3Ioc2VsZiwgbWVzc2FnZSk6Ci0gICAgICAgIHN1cGVyKCkuZXJyb3IobWVzc2FnZSArICJcblBhc3MgLWggb3IgLS1oZWxwIGZvciBjb21wbGV0ZSBoZWxwLiIpCi0KLWRlZiBfY3JlYXRlX3BhcnNlcigpOgotICAgICMgU2V0IHByb2cgdG8gcHJldmVudCB0aGUgdW5pbmZvcm1hdGl2ZSAiX19tYWluX18ucHkiIGZyb20gZGlzcGxheWluZyBpbgotICAgICMgZXJyb3IgbWVzc2FnZXMgd2hlbiB1c2luZyAicHl0aG9uIC1tIHRlc3QgLi4uIi4KLSAgICBwYXJzZXIgPSBfQXJnUGFyc2VyKHByb2c9J3JlZ3J0ZXN0LnB5JywKLSAgICAgICAgICAgICAgICAgICAgICAgIHVzYWdlPVVTQUdFLAotICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249REVTQ1JJUFRJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICBlcGlsb2c9RVBJTE9HLAotICAgICAgICAgICAgICAgICAgICAgICAgYWRkX2hlbHA9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZXJfY2xhc3M9YXJncGFyc2UuUmF3RGVzY3JpcHRpb25IZWxwRm9ybWF0dGVyKQotCi0gICAgIyBBcmd1bWVudHMgd2l0aCB0aGlzIGNsYXVzZSBhZGRlZCB0byBpdHMgaGVscCBhcmUgZGVzY3JpYmVkIGZ1cnRoZXIgaW4KLSAgICAjIHRoZSBlcGlsb2cncyAiQWRkaXRpb25hbCBvcHRpb24gZGV0YWlscyIgc2VjdGlvbi4KLSAgICBtb3JlX2RldGFpbHMgPSAnICBTZWUgdGhlIHNlY3Rpb24gYXQgYm90dG9tIGZvciBtb3JlIGRldGFpbHMuJwotCi0gICAgZ3JvdXAgPSBwYXJzZXIuYWRkX2FyZ3VtZW50X2dyb3VwKCdHZW5lcmFsIG9wdGlvbnMnKQotICAgICMgV2UgYWRkIGhlbHAgZXhwbGljaXRseSB0byBjb250cm9sIHdoYXQgYXJndW1lbnQgZ3JvdXAgaXQgcmVuZGVycyB1bmRlci4KLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1oJywgJy0taGVscCcsIGFjdGlvbj0naGVscCcsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3Nob3cgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQnKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS10aW1lb3V0JywgbWV0YXZhcj0nVElNRU9VVCcsIHR5cGU9ZmxvYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdkdW1wIHRoZSB0cmFjZWJhY2sgYW5kIGV4aXQgaWYgYSB0ZXN0IHRha2VzICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vcmUgdGhhbiBUSU1FT1VUIHNlY29uZHM7IGRpc2FibGVkIGlmIFRJTUVPVVQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXMgbmVnYXRpdmUgb3IgZXF1YWxzIHRvIHplcm8nKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS13YWl0JywgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nd2FpdCBmb3IgdXNlciBpbnB1dCwgZS5nLiwgYWxsb3cgYSBkZWJ1Z2dlciAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RvIGJlIGF0dGFjaGVkJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy0tc2xhdmVhcmdzJywgbWV0YXZhcj0nQVJHUycpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctUycsICctLXN0YXJ0JywgbWV0YXZhcj0nU1RBUlQnLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSd0aGUgbmFtZSBvZiB0aGUgdGVzdCBhdCB3aGljaCB0byBzdGFydC4nICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3JlX2RldGFpbHMpCi0KLSAgICBncm91cCA9IHBhcnNlci5hZGRfYXJndW1lbnRfZ3JvdXAoJ1ZlcmJvc2l0eScpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctdicsICctLXZlcmJvc2UnLCBhY3Rpb249J2NvdW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncnVuIHRlc3RzIGluIHZlcmJvc2UgbW9kZSB3aXRoIG91dHB1dCB0byBzdGRvdXQnKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLXcnLCAnLS12ZXJib3NlMicsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3JlLXJ1biBmYWlsZWQgdGVzdHMgaW4gdmVyYm9zZSBtb2RlJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1XJywgJy0tdmVyYm9zZTMnLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdkaXNwbGF5IHRlc3Qgb3V0cHV0IG9uIGZhaWx1cmUnKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLXEnLCAnLS1xdWlldCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J25vIG91dHB1dCB1bmxlc3Mgb25lIG9yIG1vcmUgdGVzdHMgZmFpbCcpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctbycsICctLXNsb3cnLCBhY3Rpb249J3N0b3JlX3RydWUnLCBkZXN0PSdwcmludF9zbG93JywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncHJpbnQgdGhlIHNsb3dlc3QgMTAgdGVzdHMnKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS1oZWFkZXInLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdwcmludCBoZWFkZXIgd2l0aCBpbnRlcnByZXRlciBpbmZvJykKLQotICAgIGdyb3VwID0gcGFyc2VyLmFkZF9hcmd1bWVudF9ncm91cCgnU2VsZWN0aW5nIHRlc3RzJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1yJywgJy0tcmFuZG9taXplJywgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncmFuZG9taXplIHRlc3QgZXhlY3V0aW9uIG9yZGVyLicgKyBtb3JlX2RldGFpbHMpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLXJhbmRzZWVkJywgbWV0YXZhcj0nU0VFRCcsCi0gICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3JhbmRvbV9zZWVkJywgdHlwZT1pbnQsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3Bhc3MgYSByYW5kb20gc2VlZCB0byByZXByb2R1Y2UgYSBwcmV2aW91cyAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JhbmRvbSBydW4nKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLWYnLCAnLS1mcm9tZmlsZScsIG1ldGF2YXI9J0ZJTEUnLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdyZWFkIG5hbWVzIG9mIHRlc3RzIHRvIHJ1biBmcm9tIGEgZmlsZS4nICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3JlX2RldGFpbHMpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCcteCcsICctLWV4Y2x1ZGUnLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdhcmd1bWVudHMgYXJlIHRlc3RzIHRvICpleGNsdWRlKicpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctcycsICctLXNpbmdsZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3NpbmdsZSBzdGVwIHRocm91Z2ggYSBzZXQgb2YgdGVzdHMuJyArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9yZV9kZXRhaWxzKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLW0nLCAnLS1tYXRjaCcsIG1ldGF2YXI9J1BBVCcsCi0gICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J21hdGNoX3Rlc3RzJywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nbWF0Y2ggdGVzdCBjYXNlcyBhbmQgbWV0aG9kcyB3aXRoIGdsb2IgcGF0dGVybiBQQVQnKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLUcnLCAnLS1mYWlsZmFzdCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2ZhaWwgYXMgc29vbiBhcyBhIHRlc3QgZmFpbHMgKG9ubHkgd2l0aCAtdiBvciAtVyknKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLXUnLCAnLS11c2UnLCBtZXRhdmFyPSdSRVMxLFJFUzIsLi4uJywKLSAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdhcHBlbmQnLCB0eXBlPXJlc291cmNlc19saXN0LAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdzcGVjaWZ5IHdoaWNoIHNwZWNpYWwgcmVzb3VyY2UgaW50ZW5zaXZlIHRlc3RzICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG8gcnVuLicgKyBtb3JlX2RldGFpbHMpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctTScsICctLW1lbWxpbWl0JywgbWV0YXZhcj0nTElNSVQnLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdydW4gdmVyeSBsYXJnZSBtZW1vcnktY29uc3VtaW5nIHRlc3RzLicgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vcmVfZGV0YWlscykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy0tdGVzdGRpcicsIG1ldGF2YXI9J0RJUicsCi0gICAgICAgICAgICAgICAgICAgICAgIHR5cGU9cmVsYXRpdmVfZmlsZW5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2V4ZWN1dGUgdGVzdCBmaWxlcyBpbiB0aGUgc3BlY2lmaWVkIGRpcmVjdG9yeSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJyhpbnN0ZWFkIG9mIHRoZSBQeXRob24gc3RkbGliIHRlc3Qgc3VpdGUpJykKLQotICAgIGdyb3VwID0gcGFyc2VyLmFkZF9hcmd1bWVudF9ncm91cCgnU3BlY2lhbCBydW5zJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1sJywgJy0tZmluZGxlYWtzJywgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0naWYgR0MgaXMgYXZhaWxhYmxlIGRldGVjdCB0ZXN0cyB0aGF0IGxlYWsgbWVtb3J5JykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1MJywgJy0tcnVubGVha3MnLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdydW4gdGhlIGxlYWtzKDEpIGNvbW1hbmQganVzdCBiZWZvcmUgZXhpdC4nICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3JlX2RldGFpbHMpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctUicsICctLWh1bnRybGVha3MnLCBtZXRhdmFyPSdSVU5DT1VOVFMnLAotICAgICAgICAgICAgICAgICAgICAgICB0eXBlPWh1bnRybGVha3MsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3NlYXJjaCBmb3IgcmVmZXJlbmNlIGxlYWtzIChuZWVkcyBkZWJ1ZyBidWlsZCwgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJ5IHNsb3cpLicgKyBtb3JlX2RldGFpbHMpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctaicsICctLW11bHRpcHJvY2VzcycsIG1ldGF2YXI9J1BST0NFU1NFUycsCi0gICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3VzZV9tcCcsIHR5cGU9aW50LAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdydW4gUFJPQ0VTU0VTIHByb2Nlc3NlcyBhdCBvbmNlJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1UJywgJy0tY292ZXJhZ2UnLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSd0cmFjZScsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3R1cm4gb24gY29kZSBjb3ZlcmFnZSB0cmFjaW5nIHVzaW5nIHRoZSB0cmFjZSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vZHVsZScpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctRCcsICctLWNvdmVyZGlyJywgbWV0YXZhcj0nRElSJywKLSAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1yZWxhdGl2ZV9maWxlbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZGlyZWN0b3J5IHdoZXJlIGNvdmVyYWdlIGZpbGVzIGFyZSBwdXQnKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLU4nLCAnLS1ub2NvdmVyZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV9jb25zdCcsIGNvbnN0PU5vbmUsIGRlc3Q9J2NvdmVyZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncHV0IGNvdmVyYWdlIGZpbGVzIGFsb25nc2lkZSBtb2R1bGVzJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy10JywgJy0tdGhyZXNob2xkJywgbWV0YXZhcj0nVEhSRVNIT0xEJywKLSAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1pbnQsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2NhbGwgZ2Muc2V0X3RocmVzaG9sZChUSFJFU0hPTEQpJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1uJywgJy0tbm93aW5kb3dzJywgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nc3VwcHJlc3MgZXJyb3IgbWVzc2FnZSBib3hlcyBvbiBXaW5kb3dzJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1GJywgJy0tZm9yZXZlcicsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3J1biB0aGUgc3BlY2lmaWVkIHRlc3RzIGluIGEgbG9vcCwgdW50aWwgYW4gJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnJvciBoYXBwZW5zJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1QJywgJy0tcGdvJywgZGVzdD0ncGdvJywgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZW5hYmxlIFByb2ZpbGUgR3VpZGVkIE9wdGltaXphdGlvbiB0cmFpbmluZycpCi0KLSAgICByZXR1cm4gcGFyc2VyCi0KLWRlZiByZWxhdGl2ZV9maWxlbmFtZShzdHJpbmcpOgotICAgICMgQ1dEIGlzIHJlcGxhY2VkIHdpdGggYSB0ZW1wb3JhcnkgZGlyIGJlZm9yZSBjYWxsaW5nIG1haW4oKSwgc28gd2UKLSAgICAjIGpvaW4gaXQgd2l0aCB0aGUgc2F2ZWQgQ1dEIHNvIGl0IGVuZHMgdXAgd2hlcmUgdGhlIHVzZXIgZXhwZWN0cy4KLSAgICByZXR1cm4gb3MucGF0aC5qb2luKHN1cHBvcnQuU0FWRURDV0QsIHN0cmluZykKLQotZGVmIGh1bnRybGVha3Moc3RyaW5nKToKLSAgICBhcmdzID0gc3RyaW5nLnNwbGl0KCc6JykKLSAgICBpZiBsZW4oYXJncykgbm90IGluICgyLCAzKToKLSAgICAgICAgcmFpc2UgYXJncGFyc2UuQXJndW1lbnRUeXBlRXJyb3IoCi0gICAgICAgICAgICAnbmVlZHMgMiBvciAzIGNvbG9uLXNlcGFyYXRlZCBhcmd1bWVudHMnKQotICAgIG53YXJtdXAgPSBpbnQoYXJnc1swXSkgaWYgYXJnc1swXSBlbHNlIDUKLSAgICBudHJhY2tlZCA9IGludChhcmdzWzFdKSBpZiBhcmdzWzFdIGVsc2UgNAotICAgIGZuYW1lID0gYXJnc1syXSBpZiBsZW4oYXJncykgPiAyIGFuZCBhcmdzWzJdIGVsc2UgJ3JlZmxvZy50eHQnCi0gICAgcmV0dXJuIG53YXJtdXAsIG50cmFja2VkLCBmbmFtZQotCi1kZWYgcmVzb3VyY2VzX2xpc3Qoc3RyaW5nKToKLSAgICB1ID0gW3gubG93ZXIoKSBmb3IgeCBpbiBzdHJpbmcuc3BsaXQoJywnKV0KLSAgICBmb3IgciBpbiB1OgotICAgICAgICBpZiByID09ICdhbGwnIG9yIHIgPT0gJ25vbmUnOgotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgaWYgclswXSA9PSAnLSc6Ci0gICAgICAgICAgICByID0gclsxOl0KLSAgICAgICAgaWYgciBub3QgaW4gUkVTT1VSQ0VfTkFNRVM6Ci0gICAgICAgICAgICByYWlzZSBhcmdwYXJzZS5Bcmd1bWVudFR5cGVFcnJvcignaW52YWxpZCByZXNvdXJjZTogJyArIHIpCi0gICAgcmV0dXJuIHUKLQotZGVmIF9wYXJzZV9hcmdzKGFyZ3MsICoqa3dhcmdzKToKLSAgICAjIERlZmF1bHRzCi0gICAgbnMgPSBhcmdwYXJzZS5OYW1lc3BhY2UodGVzdGRpcj1Ob25lLCB2ZXJib3NlPTAsIHF1aWV0PUZhbHNlLAotICAgICAgICAgZXhjbHVkZT1GYWxzZSwgc2luZ2xlPUZhbHNlLCByYW5kb21pemU9RmFsc2UsIGZyb21maWxlPU5vbmUsCi0gICAgICAgICBmaW5kbGVha3M9RmFsc2UsIHVzZV9yZXNvdXJjZXM9Tm9uZSwgdHJhY2U9RmFsc2UsIGNvdmVyZGlyPSdjb3ZlcmFnZScsCi0gICAgICAgICBydW5sZWFrcz1GYWxzZSwgaHVudHJsZWFrcz1GYWxzZSwgdmVyYm9zZTI9RmFsc2UsIHByaW50X3Nsb3c9RmFsc2UsCi0gICAgICAgICByYW5kb21fc2VlZD1Ob25lLCB1c2VfbXA9Tm9uZSwgdmVyYm9zZTM9RmFsc2UsIGZvcmV2ZXI9RmFsc2UsCi0gICAgICAgICBoZWFkZXI9RmFsc2UsIGZhaWxmYXN0PUZhbHNlLCBtYXRjaF90ZXN0cz1Ob25lLCBwZ289RmFsc2UpCi0gICAgZm9yIGssIHYgaW4ga3dhcmdzLml0ZW1zKCk6Ci0gICAgICAgIGlmIG5vdCBoYXNhdHRyKG5zLCBrKToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignJXIgaXMgYW4gaW52YWxpZCBrZXl3b3JkIGFyZ3VtZW50ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9yIHRoaXMgZnVuY3Rpb24nICUgaykKLSAgICAgICAgc2V0YXR0cihucywgaywgdikKLSAgICBpZiBucy51c2VfcmVzb3VyY2VzIGlzIE5vbmU6Ci0gICAgICAgIG5zLnVzZV9yZXNvdXJjZXMgPSBbXQotCi0gICAgcGFyc2VyID0gX2NyZWF0ZV9wYXJzZXIoKQotICAgICMgSXNzdWUgIzE0MTkxOiBhcmdwYXJzZSBkb2Vzbid0IHN1cHBvcnQgImludGVybWl4ZWQiIHBvc2l0aW9uYWwgYW5kCi0gICAgIyBvcHRpb25hbCBhcmd1bWVudHMuIFVzZSBwYXJzZV9rbm93bl9hcmdzKCkgYXMgd29ya2Fyb3VuZC4KLSAgICBucy5hcmdzID0gcGFyc2VyLnBhcnNlX2tub3duX2FyZ3MoYXJncz1hcmdzLCBuYW1lc3BhY2U9bnMpWzFdCi0gICAgZm9yIGFyZyBpbiBucy5hcmdzOgotICAgICAgICBpZiBhcmcuc3RhcnRzd2l0aCgnLScpOgotICAgICAgICAgICAgcGFyc2VyLmVycm9yKCJ1bnJlY29nbml6ZWQgYXJndW1lbnRzOiAlcyIgJSBhcmcpCi0gICAgICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgaWYgbnMuc2luZ2xlIGFuZCBucy5mcm9tZmlsZToKLSAgICAgICAgcGFyc2VyLmVycm9yKCItcyBhbmQgLWYgZG9uJ3QgZ28gdG9nZXRoZXIhIikKLSAgICBpZiBucy51c2VfbXAgaXMgbm90IE5vbmUgYW5kIG5zLnRyYWNlOgotICAgICAgICBwYXJzZXIuZXJyb3IoIi1UIGFuZCAtaiBkb24ndCBnbyB0b2dldGhlciEiKQotICAgIGlmIG5zLnVzZV9tcCBpcyBub3QgTm9uZSBhbmQgbnMuZmluZGxlYWtzOgotICAgICAgICBwYXJzZXIuZXJyb3IoIi1sIGFuZCAtaiBkb24ndCBnbyB0b2dldGhlciEiKQotICAgIGlmIG5zLnVzZV9tcCBpcyBub3QgTm9uZSBhbmQgbnMubWVtbGltaXQ6Ci0gICAgICAgIHBhcnNlci5lcnJvcigiLU0gYW5kIC1qIGRvbid0IGdvIHRvZ2V0aGVyISIpCi0gICAgaWYgbnMuZmFpbGZhc3QgYW5kIG5vdCAobnMudmVyYm9zZSBvciBucy52ZXJib3NlMyk6Ci0gICAgICAgIHBhcnNlci5lcnJvcigiLUcvLS1mYWlsZmFzdCBuZWVkcyBlaXRoZXIgLXYgb3IgLVciKQotCi0gICAgaWYgbnMucXVpZXQ6Ci0gICAgICAgIG5zLnZlcmJvc2UgPSAwCi0gICAgaWYgbnMudGltZW91dCBpcyBub3QgTm9uZToKLSAgICAgICAgaWYgaGFzYXR0cihmYXVsdGhhbmRsZXIsICdkdW1wX3RyYWNlYmFja19sYXRlcicpOgotICAgICAgICAgICAgaWYgbnMudGltZW91dCA8PSAwOgotICAgICAgICAgICAgICAgIG5zLnRpbWVvdXQgPSBOb25lCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwcmludCgiV2FybmluZzogVGhlIHRpbWVvdXQgb3B0aW9uIHJlcXVpcmVzICIKLSAgICAgICAgICAgICAgICAgICJmYXVsdGhhbmRsZXIuZHVtcF90cmFjZWJhY2tfbGF0ZXIiKQotICAgICAgICAgICAgbnMudGltZW91dCA9IE5vbmUKLSAgICBpZiBucy51c2VfbXAgaXMgbm90IE5vbmU6Ci0gICAgICAgIGlmIG5zLnVzZV9tcCA8PSAwOgotICAgICAgICAgICAgIyBVc2UgYWxsIGNvcmVzICsgZXh0cmFzIGZvciB0ZXN0cyB0aGF0IGxpa2UgdG8gc2xlZXAKLSAgICAgICAgICAgIG5zLnVzZV9tcCA9IDIgKyAob3MuY3B1X2NvdW50KCkgb3IgMSkKLSAgICAgICAgaWYgbnMudXNlX21wID09IDE6Ci0gICAgICAgICAgICBucy51c2VfbXAgPSBOb25lCi0gICAgaWYgbnMudXNlOgotICAgICAgICBmb3IgYSBpbiBucy51c2U6Ci0gICAgICAgICAgICBmb3IgciBpbiBhOgotICAgICAgICAgICAgICAgIGlmIHIgPT0gJ2FsbCc6Ci0gICAgICAgICAgICAgICAgICAgIG5zLnVzZV9yZXNvdXJjZXNbOl0gPSBSRVNPVVJDRV9OQU1FUwotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGlmIHIgPT0gJ25vbmUnOgotICAgICAgICAgICAgICAgICAgICBkZWwgbnMudXNlX3Jlc291cmNlc1s6XQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIHJlbW92ZSA9IEZhbHNlCi0gICAgICAgICAgICAgICAgaWYgclswXSA9PSAnLSc6Ci0gICAgICAgICAgICAgICAgICAgIHJlbW92ZSA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgciA9IHJbMTpdCi0gICAgICAgICAgICAgICAgaWYgcmVtb3ZlOgotICAgICAgICAgICAgICAgICAgICBpZiByIGluIG5zLnVzZV9yZXNvdXJjZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBucy51c2VfcmVzb3VyY2VzLnJlbW92ZShyKQotICAgICAgICAgICAgICAgIGVsaWYgciBub3QgaW4gbnMudXNlX3Jlc291cmNlczoKLSAgICAgICAgICAgICAgICAgICAgbnMudXNlX3Jlc291cmNlcy5hcHBlbmQocikKLSAgICBpZiBucy5yYW5kb21fc2VlZCBpcyBub3QgTm9uZToKLSAgICAgICAgbnMucmFuZG9taXplID0gVHJ1ZQotCi0gICAgcmV0dXJuIG5zCi0KLQotZGVmIHJ1bl90ZXN0X2luX3N1YnByb2Nlc3ModGVzdG5hbWUsIG5zKToKLSAgICAiIiJSdW4gdGhlIGdpdmVuIHRlc3QgaW4gYSBzdWJwcm9jZXNzIHdpdGggLS1zbGF2ZWFyZ3MuCi0KLSAgICBucyBpcyB0aGUgb3B0aW9uIE5hbWVzcGFjZSBwYXJzZWQgZnJvbSBjb21tYW5kLWxpbmUgYXJndW1lbnRzLiByZWdydGVzdAotICAgIGlzIGludm9rZWQgaW4gYSBzdWJwcm9jZXNzIHdpdGggdGhlIC0tc2xhdmVhcmdzIGFyZ3VtZW50OyB3aGVuIHRoZQotICAgIHN1YnByb2Nlc3MgZXhpdHMsIGl0cyByZXR1cm4gY29kZSwgc3Rkb3V0IGFuZCBzdGRlcnIgYXJlIHJldHVybmVkIGFzIGEKLSAgICAzLXR1cGxlLgotICAgICIiIgotICAgIGZyb20gc3VicHJvY2VzcyBpbXBvcnQgUG9wZW4sIFBJUEUKLSAgICBiYXNlX2NtZCA9IChbc3lzLmV4ZWN1dGFibGVdICsgc3VwcG9ydC5hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKSArCi0gICAgICAgICAgICAgICAgWyctWCcsICdmYXVsdGhhbmRsZXInLCAnLW0nLCAndGVzdC5yZWdydGVzdCddKQotICAgICMgcmVxdWlyZWQgdG8gc3Bhd24gYSBuZXcgcHJvY2VzcyB3aXRoIFBHTyBmbGFnIG9uL29mZgotICAgIGlmIG5zLnBnbzoKLSAgICAgICAgYmFzZV9jbWQgPSBiYXNlX2NtZCArIFsnLS1wZ28nXQotICAgIHNsYXZlYXJncyA9ICgKLSAgICAgICAgICAgICh0ZXN0bmFtZSwgbnMudmVyYm9zZSwgbnMucXVpZXQpLAotICAgICAgICAgICAgZGljdChodW50cmxlYWtzPW5zLmh1bnRybGVha3MsCi0gICAgICAgICAgICAgICAgIHVzZV9yZXNvdXJjZXM9bnMudXNlX3Jlc291cmNlcywKLSAgICAgICAgICAgICAgICAgb3V0cHV0X29uX2ZhaWx1cmU9bnMudmVyYm9zZTMsCi0gICAgICAgICAgICAgICAgIHRpbWVvdXQ9bnMudGltZW91dCwgZmFpbGZhc3Q9bnMuZmFpbGZhc3QsCi0gICAgICAgICAgICAgICAgIG1hdGNoX3Rlc3RzPW5zLm1hdGNoX3Rlc3RzLCBwZ289bnMucGdvKSkKLSAgICAjIFJ1bm5pbmcgdGhlIGNoaWxkIGZyb20gdGhlIHNhbWUgd29ya2luZyBkaXJlY3RvcnkgYXMgcmVncnRlc3QncyBvcmlnaW5hbAotICAgICMgaW52b2NhdGlvbiBlbnN1cmVzIHRoYXQgVEVNUERJUiBmb3IgdGhlIGNoaWxkIGlzIHRoZSBzYW1lIHdoZW4KLSAgICAjIHN5c2NvbmZpZy5pc19weXRob25fYnVpbGQoKSBpcyB0cnVlLiBTZWUgaXNzdWUgMTUzMDAuCi0gICAgcG9wZW4gPSBQb3BlbihiYXNlX2NtZCArIFsnLS1zbGF2ZWFyZ3MnLCBqc29uLmR1bXBzKHNsYXZlYXJncyldLAotICAgICAgICAgICAgICAgICAgc3Rkb3V0PVBJUEUsIHN0ZGVycj1QSVBFLAotICAgICAgICAgICAgICAgICAgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUsCi0gICAgICAgICAgICAgICAgICBjbG9zZV9mZHM9KG9zLm5hbWUgIT0gJ250JyksCi0gICAgICAgICAgICAgICAgICBjd2Q9c3VwcG9ydC5TQVZFRENXRCkKLSAgICBzdGRvdXQsIHN0ZGVyciA9IHBvcGVuLmNvbW11bmljYXRlKCkKLSAgICByZXRjb2RlID0gcG9wZW4ud2FpdCgpCi0gICAgcmV0dXJuIHJldGNvZGUsIHN0ZG91dCwgc3RkZXJyCi0KLQotZGVmIG1haW4odGVzdHM9Tm9uZSwgKiprd2FyZ3MpOgotICAgICIiIkV4ZWN1dGUgYSB0ZXN0IHN1aXRlLgotCi0gICAgVGhpcyBhbHNvIHBhcnNlcyBjb21tYW5kLWxpbmUgb3B0aW9ucyBhbmQgbW9kaWZpZXMgaXRzIGJlaGF2aW9yCi0gICAgYWNjb3JkaW5nbHkuCi0KLSAgICB0ZXN0cyAtLSBhIGxpc3Qgb2Ygc3RyaW5ncyBjb250YWluaW5nIHRlc3QgbmFtZXMgKG9wdGlvbmFsKQotICAgIHRlc3RkaXIgLS0gdGhlIGRpcmVjdG9yeSBpbiB3aGljaCB0byBsb29rIGZvciB0ZXN0cyAob3B0aW9uYWwpCi0KLSAgICBVc2VycyBvdGhlciB0aGFuIHRoZSBQeXRob24gdGVzdCBzdWl0ZSB3aWxsIGNlcnRhaW5seSB3YW50IHRvCi0gICAgc3BlY2lmeSB0ZXN0ZGlyOyBpZiBpdCdzIG9taXR0ZWQsIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUKLSAgICBQeXRob24gdGVzdCBzdWl0ZSBpcyBzZWFyY2hlZCBmb3IuCi0KLSAgICBJZiB0aGUgdGVzdHMgYXJndW1lbnQgaXMgb21pdHRlZCwgdGhlIHRlc3RzIGxpc3RlZCBvbiB0aGUKLSAgICBjb21tYW5kLWxpbmUgd2lsbCBiZSB1c2VkLiAgSWYgdGhhdCdzIGVtcHR5LCB0b28sIHRoZW4gYWxsICoucHkKLSAgICBmaWxlcyBiZWdpbm5pbmcgd2l0aCB0ZXN0XyB3aWxsIGJlIHVzZWQuCi0KLSAgICBUaGUgb3RoZXIgZGVmYXVsdCBhcmd1bWVudHMgKHZlcmJvc2UsIHF1aWV0LCBleGNsdWRlLAotICAgIHNpbmdsZSwgcmFuZG9taXplLCBmaW5kbGVha3MsIHVzZV9yZXNvdXJjZXMsIHRyYWNlLCBjb3ZlcmRpciwKLSAgICBwcmludF9zbG93LCBhbmQgcmFuZG9tX3NlZWQpIGFsbG93IHByb2dyYW1tZXJzIGNhbGxpbmcgbWFpbigpCi0gICAgZGlyZWN0bHkgdG8gc2V0IHRoZSB2YWx1ZXMgdGhhdCB3b3VsZCBub3JtYWxseSBiZSBzZXQgYnkgZmxhZ3MKLSAgICBvbiB0aGUgY29tbWFuZCBsaW5lLgotICAgICIiIgotICAgICMgRGlzcGxheSB0aGUgUHl0aG9uIHRyYWNlYmFjayBvbiBmYXRhbCBlcnJvcnMgKGUuZy4gc2VnZmF1bHQpCi0gICAgZmF1bHRoYW5kbGVyLmVuYWJsZShhbGxfdGhyZWFkcz1UcnVlKQotCi0gICAgIyBEaXNwbGF5IHRoZSBQeXRob24gdHJhY2ViYWNrIG9uIFNJR0FMUk0gb3IgU0lHVVNSMSBzaWduYWwKLSAgICBzaWduYWxzID0gW10KLSAgICBpZiBoYXNhdHRyKHNpZ25hbCwgJ1NJR0FMUk0nKToKLSAgICAgICAgc2lnbmFscy5hcHBlbmQoc2lnbmFsLlNJR0FMUk0pCi0gICAgaWYgaGFzYXR0cihzaWduYWwsICdTSUdVU1IxJyk6Ci0gICAgICAgIHNpZ25hbHMuYXBwZW5kKHNpZ25hbC5TSUdVU1IxKQotICAgIGZvciBzaWdudW0gaW4gc2lnbmFsczoKLSAgICAgICAgZmF1bHRoYW5kbGVyLnJlZ2lzdGVyKHNpZ251bSwgY2hhaW49VHJ1ZSkKLQotICAgIHJlcGxhY2Vfc3Rkb3V0KCkKLQotICAgIHN1cHBvcnQucmVjb3JkX29yaWdpbmFsX3N0ZG91dChzeXMuc3Rkb3V0KQotCi0gICAgbnMgPSBfcGFyc2VfYXJncyhzeXMuYXJndlsxOl0sICoqa3dhcmdzKQotCi0gICAgaWYgbnMuaHVudHJsZWFrczoKLSAgICAgICAgIyBBdm9pZCBmYWxzZSBwb3NpdGl2ZXMgZHVlIHRvIHZhcmlvdXMgY2FjaGVzCi0gICAgICAgICMgZmlsbGluZyBzbG93bHkgd2l0aCByYW5kb20gZGF0YToKLSAgICAgICAgd2FybV9jYWNoZXMoKQotICAgIGlmIG5zLm1lbWxpbWl0IGlzIG5vdCBOb25lOgotICAgICAgICBzdXBwb3J0LnNldF9tZW1saW1pdChucy5tZW1saW1pdCkKLSAgICBpZiBucy50aHJlc2hvbGQgaXMgbm90IE5vbmU6Ci0gICAgICAgIGltcG9ydCBnYwotICAgICAgICBnYy5zZXRfdGhyZXNob2xkKG5zLnRocmVzaG9sZCkKLSAgICBpZiBucy5ub3dpbmRvd3M6Ci0gICAgICAgIHByaW50KCdUaGUgLS1ub3dpbmRvd3MgKC1uKSBvcHRpb24gaXMgZGVwcmVjYXRlZC4gJwotICAgICAgICAgICAgICAnVXNlIC12diB0byBkaXNwbGF5IGFzc2VydGlvbnMgaW4gc3RkZXJyLicpCi0gICAgdHJ5OgotICAgICAgICBpbXBvcnQgbXN2Y3J0Ci0gICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICBwYXNzCi0gICAgZWxzZToKLSAgICAgICAgbXN2Y3J0LlNldEVycm9yTW9kZShtc3ZjcnQuU0VNX0ZBSUxDUklUSUNBTEVSUk9SU3wKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc3ZjcnQuU0VNX05PQUxJR05NRU5URkFVTFRFWENFUFR8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXN2Y3J0LlNFTV9OT0dQRkFVTFRFUlJPUkJPWHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc3ZjcnQuU0VNX05PT1BFTkZJTEVFUlJPUkJPWCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbXN2Y3J0LkNydFNldFJlcG9ydE1vZGUKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgIyByZWxlYXNlIGJ1aWxkCi0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBmb3IgbSBpbiBbbXN2Y3J0LkNSVF9XQVJOLCBtc3ZjcnQuQ1JUX0VSUk9SLCBtc3ZjcnQuQ1JUX0FTU0VSVF06Ci0gICAgICAgICAgICAgICAgaWYgbnMudmVyYm9zZSBhbmQgbnMudmVyYm9zZSA+PSAyOgotICAgICAgICAgICAgICAgICAgICBtc3ZjcnQuQ3J0U2V0UmVwb3J0TW9kZShtLCBtc3ZjcnQuQ1JUREJHX01PREVfRklMRSkKLSAgICAgICAgICAgICAgICAgICAgbXN2Y3J0LkNydFNldFJlcG9ydEZpbGUobSwgbXN2Y3J0LkNSVERCR19GSUxFX1NUREVSUikKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBtc3ZjcnQuQ3J0U2V0UmVwb3J0TW9kZShtLCAwKQotICAgIGlmIG5zLndhaXQ6Ci0gICAgICAgIGlucHV0KCJQcmVzcyBhbnkga2V5IHRvIGNvbnRpbnVlLi4uIikKLQotICAgIGlmIG5zLnNsYXZlYXJncyBpcyBub3QgTm9uZToKLSAgICAgICAgYXJncywga3dhcmdzID0ganNvbi5sb2Fkcyhucy5zbGF2ZWFyZ3MpCi0gICAgICAgIGlmIGt3YXJncy5nZXQoJ2h1bnRybGVha3MnKToKLSAgICAgICAgICAgIHVuaXR0ZXN0LkJhc2VUZXN0U3VpdGUuX2NsZWFudXAgPSBGYWxzZQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXN1bHQgPSBydW50ZXN0KCphcmdzLCAqKmt3YXJncykKLSAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgotICAgICAgICAgICAgcmVzdWx0ID0gSU5URVJSVVBURUQsICcnCi0gICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKLSAgICAgICAgICAgIHJlc3VsdCA9IENISUxEX0VSUk9SLCBzdHIoZSkKLSAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCi0gICAgICAgIHByaW50KCkgICAjIEZvcmNlIGEgbmV3bGluZSAoanVzdCBpbiBjYXNlKQotICAgICAgICBwcmludChqc29uLmR1bXBzKHJlc3VsdCkpCi0gICAgICAgIHN5cy5leGl0KDApCi0KLSAgICBnb29kID0gW10KLSAgICBiYWQgPSBbXQotICAgIHNraXBwZWQgPSBbXQotICAgIHJlc291cmNlX2RlbmllZHMgPSBbXQotICAgIGVudmlyb25tZW50X2NoYW5nZWQgPSBbXQotICAgIGludGVycnVwdGVkID0gRmFsc2UKLQotICAgIGlmIG5zLmZpbmRsZWFrczoKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgaW1wb3J0IGdjCi0gICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgICAgIHByaW50KCdObyBHQyBhdmFpbGFibGUsIGRpc2FibGluZyBmaW5kbGVha3MuJykKLSAgICAgICAgICAgIG5zLmZpbmRsZWFrcyA9IEZhbHNlCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIFVuY29tbWVudCB0aGUgbGluZSBiZWxvdyB0byByZXBvcnQgZ2FyYmFnZSB0aGF0IGlzIG5vdAotICAgICAgICAgICAgIyBmcmVlYWJsZSBieSByZWZlcmVuY2UgY291bnRpbmcgYWxvbmUuICBCeSBkZWZhdWx0IG9ubHkKLSAgICAgICAgICAgICMgZ2FyYmFnZSB0aGF0IGlzIG5vdCBjb2xsZWN0YWJsZSBieSB0aGUgR0MgaXMgcmVwb3J0ZWQuCi0gICAgICAgICAgICAjZ2Muc2V0X2RlYnVnKGdjLkRFQlVHX1NBVkVBTEwpCi0gICAgICAgICAgICBmb3VuZF9nYXJiYWdlID0gW10KLQotICAgIGlmIG5zLmh1bnRybGVha3M6Ci0gICAgICAgIHVuaXR0ZXN0LkJhc2VUZXN0U3VpdGUuX2NsZWFudXAgPSBGYWxzZQotCi0gICAgaWYgbnMuc2luZ2xlOgotICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGguam9pbihURU1QRElSLCAncHluZXh0dGVzdCcpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgJ3InKSBhcyBmcDoKLSAgICAgICAgICAgICAgICBuZXh0X3Rlc3QgPSBmcC5yZWFkKCkuc3RyaXAoKQotICAgICAgICAgICAgICAgIHRlc3RzID0gW25leHRfdGVzdF0KLSAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0KLSAgICBpZiBucy5mcm9tZmlsZToKLSAgICAgICAgdGVzdHMgPSBbXQotICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKHN1cHBvcnQuU0FWRURDV0QsIG5zLmZyb21maWxlKSkgYXMgZnA6Ci0gICAgICAgICAgICBjb3VudF9wYXQgPSByZS5jb21waWxlKHInXFtccypcZCsvXHMqXGQrXF0nKQotICAgICAgICAgICAgZm9yIGxpbmUgaW4gZnA6Ci0gICAgICAgICAgICAgICAgbGluZSA9IGNvdW50X3BhdC5zdWIoJycsIGxpbmUpCi0gICAgICAgICAgICAgICAgZ3V0cyA9IGxpbmUuc3BsaXQoKSAjIGFzc3VtaW5nIG5vIHRlc3QgaGFzIHdoaXRlc3BhY2UgaW4gaXRzIG5hbWUKLSAgICAgICAgICAgICAgICBpZiBndXRzIGFuZCBub3QgZ3V0c1swXS5zdGFydHN3aXRoKCcjJyk6Ci0gICAgICAgICAgICAgICAgICAgIHRlc3RzLmV4dGVuZChndXRzKQotCi0gICAgIyBTdHJpcCAucHkgZXh0ZW5zaW9ucy4KLSAgICByZW1vdmVweShucy5hcmdzKQotICAgIHJlbW92ZXB5KHRlc3RzKQotCi0gICAgc3RkdGVzdHMgPSBTVERURVNUU1s6XQotICAgIG5vdHRlc3RzID0gTk9UVEVTVFMuY29weSgpCi0gICAgaWYgbnMuZXhjbHVkZToKLSAgICAgICAgZm9yIGFyZyBpbiBucy5hcmdzOgotICAgICAgICAgICAgaWYgYXJnIGluIHN0ZHRlc3RzOgotICAgICAgICAgICAgICAgIHN0ZHRlc3RzLnJlbW92ZShhcmcpCi0gICAgICAgICAgICBub3R0ZXN0cy5hZGQoYXJnKQotICAgICAgICBucy5hcmdzID0gW10KLQotICAgICMgRm9yIGEgcGFydGlhbCBydW4sIHdlIGRvIG5vdCBuZWVkIHRvIGNsdXR0ZXIgdGhlIG91dHB1dC4KLSAgICBpZiAobnMudmVyYm9zZSBvciBucy5oZWFkZXIgb3IKLSAgICAgICAgICAgIG5vdCAobnMucGdvIG9yIG5zLnF1aWV0IG9yIG5zLnNpbmdsZSBvciB0ZXN0cyBvciBucy5hcmdzKSk6Ci0gICAgICAgICMgUHJpbnQgYmFzaWMgcGxhdGZvcm0gaW5mb3JtYXRpb24KLSAgICAgICAgcHJpbnQoIj09IiwgcGxhdGZvcm0ucHl0aG9uX2ltcGxlbWVudGF0aW9uKCksICpzeXMudmVyc2lvbi5zcGxpdCgpKQotICAgICAgICBwcmludCgiPT0gICIsIHBsYXRmb3JtLnBsYXRmb3JtKGFsaWFzZWQ9VHJ1ZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAiJXMtZW5kaWFuIiAlIHN5cy5ieXRlb3JkZXIpCi0gICAgICAgIHByaW50KCI9PSAgIiwgImhhc2ggYWxnb3JpdGhtOiIsIHN5cy5oYXNoX2luZm8uYWxnb3JpdGhtLAotICAgICAgICAgICAgICAgICI2NGJpdCIgaWYgc3lzLm1heHNpemUgPiAyKiozMiBlbHNlICIzMmJpdCIpCi0gICAgICAgIHByaW50KCI9PSAgIiwgb3MuZ2V0Y3dkKCkpCi0gICAgICAgIHByaW50KCJUZXN0aW5nIHdpdGggZmxhZ3M6Iiwgc3lzLmZsYWdzKQotCi0gICAgIyBpZiB0ZXN0ZGlyIGlzIHNldCwgdGhlbiB3ZSBhcmUgbm90IHJ1bm5pbmcgdGhlIHB5dGhvbiB0ZXN0cyBzdWl0ZSwgc28KLSAgICAjIGRvbid0IGFkZCBkZWZhdWx0IHRlc3RzIHRvIGJlIGV4ZWN1dGVkIG9yIHNraXBwZWQgKHBhc3MgZW1wdHkgdmFsdWVzKQotICAgIGlmIG5zLnRlc3RkaXI6Ci0gICAgICAgIGFsbHRlc3RzID0gZmluZHRlc3RzKG5zLnRlc3RkaXIsIGxpc3QoKSwgc2V0KCkpCi0gICAgZWxzZToKLSAgICAgICAgYWxsdGVzdHMgPSBmaW5kdGVzdHMobnMudGVzdGRpciwgc3RkdGVzdHMsIG5vdHRlc3RzKQotCi0gICAgc2VsZWN0ZWQgPSB0ZXN0cyBvciBucy5hcmdzIG9yIGFsbHRlc3RzCi0gICAgaWYgbnMuc2luZ2xlOgotICAgICAgICBzZWxlY3RlZCA9IHNlbGVjdGVkWzoxXQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBuZXh0X3NpbmdsZV90ZXN0ID0gYWxsdGVzdHNbYWxsdGVzdHMuaW5kZXgoc2VsZWN0ZWRbMF0pKzFdCi0gICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgotICAgICAgICAgICAgbmV4dF9zaW5nbGVfdGVzdCA9IE5vbmUKLSAgICAjIFJlbW92ZSBhbGwgdGhlIHNlbGVjdGVkIHRlc3RzIHRoYXQgcHJlY2VkZSBzdGFydCBpZiBpdCdzIHNldC4KLSAgICBpZiBucy5zdGFydDoKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZGVsIHNlbGVjdGVkWzpzZWxlY3RlZC5pbmRleChucy5zdGFydCldCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgcHJpbnQoIkNvdWxkbid0IGZpbmQgc3RhcnRpbmcgdGVzdCAoJXMpLCB1c2luZyBhbGwgdGVzdHMiICUgbnMuc3RhcnQpCi0gICAgaWYgbnMucmFuZG9taXplOgotICAgICAgICBpZiBucy5yYW5kb21fc2VlZCBpcyBOb25lOgotICAgICAgICAgICAgbnMucmFuZG9tX3NlZWQgPSByYW5kb20ucmFuZHJhbmdlKDEwMDAwMDAwKQotICAgICAgICByYW5kb20uc2VlZChucy5yYW5kb21fc2VlZCkKLSAgICAgICAgcHJpbnQoIlVzaW5nIHJhbmRvbSBzZWVkIiwgbnMucmFuZG9tX3NlZWQpCi0gICAgICAgIHJhbmRvbS5zaHVmZmxlKHNlbGVjdGVkKQotICAgIGlmIG5zLnRyYWNlOgotICAgICAgICBpbXBvcnQgdHJhY2UsIHRlbXBmaWxlCi0gICAgICAgIHRyYWNlciA9IHRyYWNlLlRyYWNlKGlnbm9yZWRpcnM9W3N5cy5iYXNlX3ByZWZpeCwgc3lzLmJhc2VfZXhlY19wcmVmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBmaWxlLmdldHRlbXBkaXIoKV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlPUZhbHNlLCBjb3VudD1UcnVlKQotCi0gICAgdGVzdF90aW1lcyA9IFtdCi0gICAgc3VwcG9ydC52ZXJib3NlID0gbnMudmVyYm9zZSAgICAgICMgVGVsbCB0ZXN0cyB0byBiZSBtb2RlcmF0ZWx5IHF1aWV0Ci0gICAgc3VwcG9ydC51c2VfcmVzb3VyY2VzID0gbnMudXNlX3Jlc291cmNlcwotICAgIHNhdmVfbW9kdWxlcyA9IHN5cy5tb2R1bGVzLmtleXMoKQotCi0gICAgZGVmIGFjY3VtdWxhdGVfcmVzdWx0KHRlc3QsIHJlc3VsdCk6Ci0gICAgICAgIG9rLCB0ZXN0X3RpbWUgPSByZXN1bHQKLSAgICAgICAgaWYgb2sgbm90IGluIChDSElMRF9FUlJPUiwgSU5URVJSVVBURUQpOgotICAgICAgICAgICAgdGVzdF90aW1lcy5hcHBlbmQoKHRlc3RfdGltZSwgdGVzdCkpCi0gICAgICAgIGlmIG9rID09IFBBU1NFRDoKLSAgICAgICAgICAgIGdvb2QuYXBwZW5kKHRlc3QpCi0gICAgICAgIGVsaWYgb2sgPT0gRkFJTEVEOgotICAgICAgICAgICAgYmFkLmFwcGVuZCh0ZXN0KQotICAgICAgICBlbGlmIG9rID09IEVOVl9DSEFOR0VEOgotICAgICAgICAgICAgZW52aXJvbm1lbnRfY2hhbmdlZC5hcHBlbmQodGVzdCkKLSAgICAgICAgZWxpZiBvayA9PSBTS0lQUEVEOgotICAgICAgICAgICAgc2tpcHBlZC5hcHBlbmQodGVzdCkKLSAgICAgICAgZWxpZiBvayA9PSBSRVNPVVJDRV9ERU5JRUQ6Ci0gICAgICAgICAgICBza2lwcGVkLmFwcGVuZCh0ZXN0KQotICAgICAgICAgICAgcmVzb3VyY2VfZGVuaWVkcy5hcHBlbmQodGVzdCkKLQotICAgIGlmIG5zLmZvcmV2ZXI6Ci0gICAgICAgIGRlZiB0ZXN0X2ZvcmV2ZXIodGVzdHM9bGlzdChzZWxlY3RlZCkpOgotICAgICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICAgICBmb3IgdGVzdCBpbiB0ZXN0czoKLSAgICAgICAgICAgICAgICAgICAgeWllbGQgdGVzdAotICAgICAgICAgICAgICAgICAgICBpZiBiYWQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgdGVzdHMgPSB0ZXN0X2ZvcmV2ZXIoKQotICAgICAgICB0ZXN0X2NvdW50ID0gJycKLSAgICAgICAgdGVzdF9jb3VudF93aWR0aCA9IDMKLSAgICBlbHNlOgotICAgICAgICB0ZXN0cyA9IGl0ZXIoc2VsZWN0ZWQpCi0gICAgICAgIHRlc3RfY291bnQgPSAnL3t9Jy5mb3JtYXQobGVuKHNlbGVjdGVkKSkKLSAgICAgICAgdGVzdF9jb3VudF93aWR0aCA9IGxlbih0ZXN0X2NvdW50KSAtIDEKLQotICAgIGlmIG5zLnVzZV9tcDoKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZnJvbSB0aHJlYWRpbmcgaW1wb3J0IFRocmVhZAotICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICBwcmludCgiTXVsdGlwcm9jZXNzIG9wdGlvbiByZXF1aXJlcyB0aHJlYWQgc3VwcG9ydCIpCi0gICAgICAgICAgICBzeXMuZXhpdCgyKQotICAgICAgICBmcm9tIHF1ZXVlIGltcG9ydCBRdWV1ZQotICAgICAgICBkZWJ1Z19vdXRwdXRfcGF0ID0gcmUuY29tcGlsZShyIlxbXGQrIHJlZnMsIFxkKyBibG9ja3NcXSQiKQotICAgICAgICBvdXRwdXQgPSBRdWV1ZSgpCi0gICAgICAgIHBlbmRpbmcgPSBNdWx0aXByb2Nlc3NUZXN0cyh0ZXN0cykKLSAgICAgICAgZGVmIHdvcmsoKToKLSAgICAgICAgICAgICMgQSB3b3JrZXIgdGhyZWFkLgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgIHRlc3QgPSBuZXh0KHBlbmRpbmcpCi0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0LnB1dCgoTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgICAgICAgICAgcmV0Y29kZSwgc3Rkb3V0LCBzdGRlcnIgPSBydW5fdGVzdF9pbl9zdWJwcm9jZXNzKHRlc3QsIG5zKQotICAgICAgICAgICAgICAgICAgICAjIFN0cmlwIGxhc3QgcmVmY291bnQgb3V0cHV0IGxpbmUgaWYgaXQgZXhpc3RzLCBzaW5jZSBpdAotICAgICAgICAgICAgICAgICAgICAjIGNvbWVzIGZyb20gdGhlIHNodXRkb3duIG9mIHRoZSBpbnRlcnByZXRlciBpbiB0aGUgc3ViY29tbWFuZC4KLSAgICAgICAgICAgICAgICAgICAgc3RkZXJyID0gZGVidWdfb3V0cHV0X3BhdC5zdWIoIiIsIHN0ZGVycikKLSAgICAgICAgICAgICAgICAgICAgc3Rkb3V0LCBfLCByZXN1bHQgPSBzdGRvdXQuc3RyaXAoKS5ycGFydGl0aW9uKCJcbiIpCi0gICAgICAgICAgICAgICAgICAgIGlmIHJldGNvZGUgIT0gMDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChDSElMRF9FUlJPUiwgIkV4aXQgY29kZSAlcyIgJSByZXRjb2RlKQotICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0LnB1dCgodGVzdCwgc3Rkb3V0LnJzdHJpcCgpLCBzdGRlcnIucnN0cmlwKCksIHJlc3VsdCkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IHJlc3VsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dC5wdXQoKE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGpzb24ubG9hZHMocmVzdWx0KQotICAgICAgICAgICAgICAgICAgICBvdXRwdXQucHV0KCh0ZXN0LCBzdGRvdXQucnN0cmlwKCksIHN0ZGVyci5yc3RyaXAoKSwgcmVzdWx0KSkKLSAgICAgICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uOgotICAgICAgICAgICAgICAgIG91dHB1dC5wdXQoKE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpKQotICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgIHdvcmtlcnMgPSBbVGhyZWFkKHRhcmdldD13b3JrKSBmb3IgaSBpbiByYW5nZShucy51c2VfbXApXQotICAgICAgICBmb3Igd29ya2VyIGluIHdvcmtlcnM6Ci0gICAgICAgICAgICB3b3JrZXIuc3RhcnQoKQotICAgICAgICBmaW5pc2hlZCA9IDAKLSAgICAgICAgdGVzdF9pbmRleCA9IDEKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2hpbGUgZmluaXNoZWQgPCBucy51c2VfbXA6Ci0gICAgICAgICAgICAgICAgdGVzdCwgc3Rkb3V0LCBzdGRlcnIsIHJlc3VsdCA9IG91dHB1dC5nZXQoKQotICAgICAgICAgICAgICAgIGlmIHRlc3QgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgZmluaXNoZWQgKz0gMQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGFjY3VtdWxhdGVfcmVzdWx0KHRlc3QsIHJlc3VsdCkKLSAgICAgICAgICAgICAgICBpZiBub3QgbnMucXVpZXQ6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGJhZCBhbmQgbm90IG5zLnBnbzoKLSAgICAgICAgICAgICAgICAgICAgICAgIGZtdCA9ICJbezE6ezB9fXsyfS97M31dIHs0fSIKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGZtdCA9ICJbezE6ezB9fXsyfV0gezR9IgotICAgICAgICAgICAgICAgICAgICBwcmludChmbXQuZm9ybWF0KAotICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9jb3VudF93aWR0aCwgdGVzdF9pbmRleCwgdGVzdF9jb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxlbihiYWQpLCB0ZXN0KSkKLSAgICAgICAgICAgICAgICBpZiBzdGRvdXQ6Ci0gICAgICAgICAgICAgICAgICAgIHByaW50KHN0ZG91dCkKLSAgICAgICAgICAgICAgICBpZiBzdGRlcnIgYW5kIG5vdCBucy5wZ286Ci0gICAgICAgICAgICAgICAgICAgIHByaW50KHN0ZGVyciwgZmlsZT1zeXMuc3RkZXJyKQotICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQotICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIuZmx1c2goKQotICAgICAgICAgICAgICAgIGlmIHJlc3VsdFswXSA9PSBJTlRFUlJVUFRFRDoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgS2V5Ym9hcmRJbnRlcnJ1cHQKLSAgICAgICAgICAgICAgICBpZiByZXN1bHRbMF0gPT0gQ0hJTERfRVJST1I6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ2hpbGQgZXJyb3Igb24ge306IHt9Ii5mb3JtYXQodGVzdCwgcmVzdWx0WzFdKSkKLSAgICAgICAgICAgICAgICB0ZXN0X2luZGV4ICs9IDEKLSAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgotICAgICAgICAgICAgaW50ZXJydXB0ZWQgPSBUcnVlCi0gICAgICAgICAgICBwZW5kaW5nLmludGVycnVwdGVkID0gVHJ1ZQotICAgICAgICBmb3Igd29ya2VyIGluIHdvcmtlcnM6Ci0gICAgICAgICAgICB3b3JrZXIuam9pbigpCi0gICAgZWxzZToKLSAgICAgICAgZm9yIHRlc3RfaW5kZXgsIHRlc3QgaW4gZW51bWVyYXRlKHRlc3RzLCAxKToKLSAgICAgICAgICAgIGlmIG5vdCBucy5xdWlldDoKLSAgICAgICAgICAgICAgICBpZiBiYWQgYW5kIG5vdCBucy5wZ286Ci0gICAgICAgICAgICAgICAgICAgIGZtdCA9ICJbezE6ezB9fXsyfS97M31dIHs0fSIKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBmbXQgPSAiW3sxOnswfX17Mn1dIHs0fSIKLSAgICAgICAgICAgICAgICBwcmludChmbXQuZm9ybWF0KAotICAgICAgICAgICAgICAgICAgICB0ZXN0X2NvdW50X3dpZHRoLCB0ZXN0X2luZGV4LCB0ZXN0X2NvdW50LCBsZW4oYmFkKSwgdGVzdCkpCi0gICAgICAgICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCi0gICAgICAgICAgICBpZiBucy50cmFjZToKLSAgICAgICAgICAgICAgICAjIElmIHdlJ3JlIHRyYWNpbmcgY29kZSBjb3ZlcmFnZSwgdGhlbiB3ZSBkb24ndCBleGl0IHdpdGggc3RhdHVzCi0gICAgICAgICAgICAgICAgIyBpZiBvbiBhIGZhbHNlIHJldHVybiB2YWx1ZSBmcm9tIG1haW4uCi0gICAgICAgICAgICAgICAgdHJhY2VyLnJ1bmN0eCgncnVudGVzdCh0ZXN0LCBucy52ZXJib3NlLCBucy5xdWlldCwgdGltZW91dD1ucy50aW1lb3V0KScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWxzPWdsb2JhbHMoKSwgbG9jYWxzPXZhcnMoKSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBydW50ZXN0KHRlc3QsIG5zLnZlcmJvc2UsIG5zLnF1aWV0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zLmh1bnRybGVha3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X29uX2ZhaWx1cmU9bnMudmVyYm9zZTMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dD1ucy50aW1lb3V0LCBmYWlsZmFzdD1ucy5mYWlsZmFzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF90ZXN0cz1ucy5tYXRjaF90ZXN0cywgcGdvPW5zLnBnbykKLSAgICAgICAgICAgICAgICAgICAgYWNjdW11bGF0ZV9yZXN1bHQodGVzdCwgcmVzdWx0KQotICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKLSAgICAgICAgICAgICAgICAgICAgaW50ZXJydXB0ZWQgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBpZiBucy5maW5kbGVha3M6Ci0gICAgICAgICAgICAgICAgZ2MuY29sbGVjdCgpCi0gICAgICAgICAgICAgICAgaWYgZ2MuZ2FyYmFnZToKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQoIldhcm5pbmc6IHRlc3QgY3JlYXRlZCIsIGxlbihnYy5nYXJiYWdlKSwgZW5kPScgJykKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQoInVuY29sbGVjdGFibGUgb2JqZWN0KHMpLiIpCi0gICAgICAgICAgICAgICAgICAgICMgbW92ZSB0aGUgdW5jb2xsZWN0YWJsZSBvYmplY3RzIHNvbWV3aGVyZSBzbyB3ZSBkb24ndCBzZWUKLSAgICAgICAgICAgICAgICAgICAgIyB0aGVtIGFnYWluCi0gICAgICAgICAgICAgICAgICAgIGZvdW5kX2dhcmJhZ2UuZXh0ZW5kKGdjLmdhcmJhZ2UpCi0gICAgICAgICAgICAgICAgICAgIGRlbCBnYy5nYXJiYWdlWzpdCi0gICAgICAgICAgICAjIFVubG9hZCB0aGUgbmV3bHkgaW1wb3J0ZWQgbW9kdWxlcyAoYmVzdCBlZmZvcnQgZmluYWxpemF0aW9uKQotICAgICAgICAgICAgZm9yIG1vZHVsZSBpbiBzeXMubW9kdWxlcy5rZXlzKCk6Ci0gICAgICAgICAgICAgICAgaWYgbW9kdWxlIG5vdCBpbiBzYXZlX21vZHVsZXMgYW5kIG1vZHVsZS5zdGFydHN3aXRoKCJ0ZXN0LiIpOgotICAgICAgICAgICAgICAgICAgICBzdXBwb3J0LnVubG9hZChtb2R1bGUpCi0KLSAgICBpZiBpbnRlcnJ1cHRlZCBhbmQgbm90IG5zLnBnbzoKLSAgICAgICAgIyBwcmludCBhIG5ld2xpbmUgYWZ0ZXIgXkMKLSAgICAgICAgcHJpbnQoKQotICAgICAgICBwcmludCgiVGVzdCBzdWl0ZSBpbnRlcnJ1cHRlZCBieSBzaWduYWwgU0lHSU5ULiIpCi0gICAgICAgIG9taXR0ZWQgPSBzZXQoc2VsZWN0ZWQpIC0gc2V0KGdvb2QpIC0gc2V0KGJhZCkgLSBzZXQoc2tpcHBlZCkKLSAgICAgICAgcHJpbnQoY291bnQobGVuKG9taXR0ZWQpLCAidGVzdCIpLCAib21pdHRlZDoiKQotICAgICAgICBwcmludGxpc3Qob21pdHRlZCkKLSAgICBpZiBnb29kIGFuZCBub3QgbnMucXVpZXQgYW5kIG5vdCBucy5wZ286Ci0gICAgICAgIGlmIG5vdCBiYWQgYW5kIG5vdCBza2lwcGVkIGFuZCBub3QgaW50ZXJydXB0ZWQgYW5kIGxlbihnb29kKSA+IDE6Ci0gICAgICAgICAgICBwcmludCgiQWxsIiwgZW5kPScgJykKLSAgICAgICAgcHJpbnQoY291bnQobGVuKGdvb2QpLCAidGVzdCIpLCAiT0suIikKLSAgICBpZiBucy5wcmludF9zbG93OgotICAgICAgICB0ZXN0X3RpbWVzLnNvcnQocmV2ZXJzZT1UcnVlKQotICAgICAgICBwcmludCgiMTAgc2xvd2VzdCB0ZXN0czoiKQotICAgICAgICBmb3IgdGltZSwgdGVzdCBpbiB0ZXN0X3RpbWVzWzoxMF06Ci0gICAgICAgICAgICBwcmludCgiJXM6ICUuMWZzIiAlICh0ZXN0LCB0aW1lKSkKLSAgICBpZiBiYWQgYW5kIG5vdCBucy5wZ286Ci0gICAgICAgIHByaW50KGNvdW50KGxlbihiYWQpLCAidGVzdCIpLCAiZmFpbGVkOiIpCi0gICAgICAgIHByaW50bGlzdChiYWQpCi0gICAgaWYgZW52aXJvbm1lbnRfY2hhbmdlZCBhbmQgbm90IG5zLnBnbzoKLSAgICAgICAgcHJpbnQoInt9IGFsdGVyZWQgdGhlIGV4ZWN1dGlvbiBlbnZpcm9ubWVudDoiLmZvcm1hdCgKLSAgICAgICAgICAgICAgICAgY291bnQobGVuKGVudmlyb25tZW50X2NoYW5nZWQpLCAidGVzdCIpKSkKLSAgICAgICAgcHJpbnRsaXN0KGVudmlyb25tZW50X2NoYW5nZWQpCi0gICAgaWYgc2tpcHBlZCBhbmQgbm90IG5zLnF1aWV0IGFuZCBub3QgbnMucGdvOgotICAgICAgICBwcmludChjb3VudChsZW4oc2tpcHBlZCksICJ0ZXN0IiksICJza2lwcGVkOiIpCi0gICAgICAgIHByaW50bGlzdChza2lwcGVkKQotCi0gICAgaWYgbnMudmVyYm9zZTIgYW5kIGJhZDoKLSAgICAgICAgcHJpbnQoIlJlLXJ1bm5pbmcgZmFpbGVkIHRlc3RzIGluIHZlcmJvc2UgbW9kZSIpCi0gICAgICAgIGZvciB0ZXN0IGluIGJhZFs6XToKLSAgICAgICAgICAgIGlmIG5vdCBucy5wZ286Ci0gICAgICAgICAgICAgICAgcHJpbnQoIlJlLXJ1bm5pbmcgdGVzdCAlciBpbiB2ZXJib3NlIG1vZGUiICUgdGVzdCkKLSAgICAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG5zLnZlcmJvc2UgPSBUcnVlCi0gICAgICAgICAgICAgICAgb2sgPSBydW50ZXN0KHRlc3QsIFRydWUsIG5zLnF1aWV0LCBucy5odW50cmxlYWtzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PW5zLnRpbWVvdXQsIHBnbz1ucy5wZ28pCi0gICAgICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgICAgICAgICAgIyBwcmludCBhIG5ld2xpbmUgc2VwYXJhdGUgZnJvbSB0aGUgXkMKLSAgICAgICAgICAgICAgICBwcmludCgpCi0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaWYgb2tbMF0gaW4ge1BBU1NFRCwgRU5WX0NIQU5HRUQsIFNLSVBQRUQsIFJFU09VUkNFX0RFTklFRH06Ci0gICAgICAgICAgICAgICAgICAgIGJhZC5yZW1vdmUodGVzdCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIGJhZDoKLSAgICAgICAgICAgICAgICBwcmludChjb3VudChsZW4oYmFkKSwgJ3Rlc3QnKSwgImZhaWxlZCBhZ2FpbjoiKQotICAgICAgICAgICAgICAgIHByaW50bGlzdChiYWQpCi0KLSAgICBpZiBucy5zaW5nbGU6Ci0gICAgICAgIGlmIG5leHRfc2luZ2xlX3Rlc3Q6Ci0gICAgICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICd3JykgYXMgZnA6Ci0gICAgICAgICAgICAgICAgZnAud3JpdGUobmV4dF9zaW5nbGVfdGVzdCArICdcbicpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBvcy51bmxpbmsoZmlsZW5hbWUpCi0KLSAgICBpZiBucy50cmFjZToKLSAgICAgICAgciA9IHRyYWNlci5yZXN1bHRzKCkKLSAgICAgICAgci53cml0ZV9yZXN1bHRzKHNob3dfbWlzc2luZz1UcnVlLCBzdW1tYXJ5PVRydWUsIGNvdmVyZGlyPW5zLmNvdmVyZGlyKQotCi0gICAgaWYgbnMucnVubGVha3M6Ci0gICAgICAgIG9zLnN5c3RlbSgibGVha3MgJWQiICUgb3MuZ2V0cGlkKCkpCi0KLSAgICBzeXMuZXhpdChsZW4oYmFkKSA+IDAgb3IgaW50ZXJydXB0ZWQpCi0KLQotIyBzbWFsbCBzZXQgb2YgdGVzdHMgdG8gZGV0ZXJtaW5lIGlmIHdlIGhhdmUgYSBiYXNpY2FsbHkgZnVuY3Rpb25pbmcgaW50ZXJwcmV0ZXIKLSMgKGkuZS4gaWYgYW55IG9mIHRoZXNlIGZhaWwsIHRoZW4gYW55dGhpbmcgZWxzZSBpcyBsaWtlbHkgdG8gZm9sbG93KQotU1REVEVTVFMgPSBbCi0gICAgJ3Rlc3RfZ3JhbW1hcicsCi0gICAgJ3Rlc3Rfb3Bjb2RlcycsCi0gICAgJ3Rlc3RfZGljdCcsCi0gICAgJ3Rlc3RfYnVpbHRpbicsCi0gICAgJ3Rlc3RfZXhjZXB0aW9ucycsCi0gICAgJ3Rlc3RfdHlwZXMnLAotICAgICd0ZXN0X3VuaXR0ZXN0JywKLSAgICAndGVzdF9kb2N0ZXN0JywKLSAgICAndGVzdF9kb2N0ZXN0MicsCi0gICAgJ3Rlc3Rfc3VwcG9ydCcKLV0KLQotIyBzZXQgb2YgdGVzdHMgdGhhdCB3ZSBkb24ndCB3YW50IHRvIGJlIGV4ZWN1dGVkIHdoZW4gdXNpbmcgcmVncnRlc3QKLU5PVFRFU1RTID0gc2V0KCkKLQotZGVmIGZpbmR0ZXN0cyh0ZXN0ZGlyPU5vbmUsIHN0ZHRlc3RzPVNURFRFU1RTLCBub3R0ZXN0cz1OT1RURVNUUyk6Ci0gICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBhbGwgYXBwbGljYWJsZSB0ZXN0IG1vZHVsZXMuIiIiCi0gICAgdGVzdGRpciA9IGZpbmR0ZXN0ZGlyKHRlc3RkaXIpCi0gICAgbmFtZXMgPSBvcy5saXN0ZGlyKHRlc3RkaXIpCi0gICAgdGVzdHMgPSBbXQotICAgIG90aGVycyA9IHNldChzdGR0ZXN0cykgfCBub3R0ZXN0cwotICAgIGZvciBuYW1lIGluIG5hbWVzOgotICAgICAgICBtb2QsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQobmFtZSkKLSAgICAgICAgaWYgbW9kWzo1XSA9PSAidGVzdF8iIGFuZCBleHQgaW4gKCIucHkiLCAiIikgYW5kIG1vZCBub3QgaW4gb3RoZXJzOgotICAgICAgICAgICAgdGVzdHMuYXBwZW5kKG1vZCkKLSAgICByZXR1cm4gc3RkdGVzdHMgKyBzb3J0ZWQodGVzdHMpCi0KLSMgV2UgZG8gbm90IHVzZSBhIGdlbmVyYXRvciBzbyBtdWx0aXBsZSB0aHJlYWRzIGNhbiBjYWxsIG5leHQoKS4KLWNsYXNzIE11bHRpcHJvY2Vzc1Rlc3RzKG9iamVjdCk6Ci0KLSAgICAiIiJBIHRocmVhZC1zYWZlIGl0ZXJhdG9yIG92ZXIgdGVzdHMgZm9yIG11bHRpcHJvY2VzcyBtb2RlLiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RzKToKLSAgICAgICAgc2VsZi5pbnRlcnJ1cHRlZCA9IEZhbHNlCi0gICAgICAgIHNlbGYubG9jayA9IHRocmVhZGluZy5Mb2NrKCkKLSAgICAgICAgc2VsZi50ZXN0cyA9IHRlc3RzCi0KLSAgICBkZWYgX19pdGVyX18oc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmCi0KLSAgICBkZWYgX19uZXh0X18oc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5sb2NrOgotICAgICAgICAgICAgaWYgc2VsZi5pbnRlcnJ1cHRlZDoKLSAgICAgICAgICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uKCd0ZXN0cyBpbnRlcnJ1cHRlZCcpCi0gICAgICAgICAgICByZXR1cm4gbmV4dChzZWxmLnRlc3RzKQotCi1kZWYgcmVwbGFjZV9zdGRvdXQoKToKLSAgICAiIiJTZXQgc3Rkb3V0IGVuY29kZXIgZXJyb3IgaGFuZGxlciB0byBiYWNrc2xhc2hyZXBsYWNlIChhcyBzdGRlcnIgZXJyb3IKLSAgICBoYW5kbGVyKSB0byBhdm9pZCBVbmljb2RlRW5jb2RlRXJyb3Igd2hlbiBwcmludGluZyBhIHRyYWNlYmFjayIiIgotICAgIGltcG9ydCBhdGV4aXQKLQotICAgIHN0ZG91dCA9IHN5cy5zdGRvdXQKLSAgICBzeXMuc3Rkb3V0ID0gb3BlbihzdGRvdXQuZmlsZW5vKCksICd3JywKLSAgICAgICAgZW5jb2Rpbmc9c3Rkb3V0LmVuY29kaW5nLAotICAgICAgICBlcnJvcnM9ImJhY2tzbGFzaHJlcGxhY2UiLAotICAgICAgICBjbG9zZWZkPUZhbHNlLAotICAgICAgICBuZXdsaW5lPSdcbicpCi0KLSAgICBkZWYgcmVzdG9yZV9zdGRvdXQoKToKLSAgICAgICAgc3lzLnN0ZG91dC5jbG9zZSgpCi0gICAgICAgIHN5cy5zdGRvdXQgPSBzdGRvdXQKLSAgICBhdGV4aXQucmVnaXN0ZXIocmVzdG9yZV9zdGRvdXQpCi0KLWRlZiBydW50ZXN0KHRlc3QsIHZlcmJvc2UsIHF1aWV0LAotICAgICAgICAgICAgaHVudHJsZWFrcz1GYWxzZSwgdXNlX3Jlc291cmNlcz1Ob25lLAotICAgICAgICAgICAgb3V0cHV0X29uX2ZhaWx1cmU9RmFsc2UsIGZhaWxmYXN0PUZhbHNlLCBtYXRjaF90ZXN0cz1Ob25lLAotICAgICAgICAgICAgdGltZW91dD1Ob25lLCAqLCBwZ289RmFsc2UpOgotICAgICIiIlJ1biBhIHNpbmdsZSB0ZXN0LgotCi0gICAgdGVzdCAtLSB0aGUgbmFtZSBvZiB0aGUgdGVzdAotICAgIHZlcmJvc2UgLS0gaWYgdHJ1ZSwgcHJpbnQgbW9yZSBtZXNzYWdlcwotICAgIHF1aWV0IC0tIGlmIHRydWUsIGRvbid0IHByaW50ICdza2lwcGVkJyBtZXNzYWdlcyAocHJvYmFibHkgcmVkdW5kYW50KQotICAgIGh1bnRybGVha3MgLS0gcnVuIG11bHRpcGxlIHRpbWVzIHRvIHRlc3QgZm9yIGxlYWtzOyByZXF1aXJlcyBhIGRlYnVnCi0gICAgICAgICAgICAgICAgICBidWlsZDsgYSB0cmlwbGUgY29ycmVzcG9uZGluZyB0byAtUidzIHRocmVlIGFyZ3VtZW50cwotICAgIHVzZV9yZXNvdXJjZXMgLS0gbGlzdCBvZiBleHRyYSByZXNvdXJjZXMgdG8gdXNlCi0gICAgb3V0cHV0X29uX2ZhaWx1cmUgLS0gaWYgdHJ1ZSwgZGlzcGxheSB0ZXN0IG91dHB1dCBvbiBmYWlsdXJlCi0gICAgdGltZW91dCAtLSBkdW1wIHRoZSB0cmFjZWJhY2sgYW5kIGV4aXQgaWYgYSB0ZXN0IHRha2VzIG1vcmUgdGhhbgotICAgICAgICAgICAgICAgdGltZW91dCBzZWNvbmRzCi0gICAgZmFpbGZhc3QsIG1hdGNoX3Rlc3RzIC0tIFNlZSByZWdydGVzdCBjb21tYW5kLWxpbmUgZmxhZ3MgZm9yIHRoZXNlLgotICAgIHBnbyAtLSBpZiB0cnVlLCBkbyBub3QgcHJpbnQgdW5uZWNlc3NhcnkgaW5mbyB3aGVuIHJ1bm5pbmcgdGhlIHRlc3QKLSAgICAgICAgICAgZm9yIFByb2ZpbGUgR3VpZGVkIE9wdGltaXphdGlvbiBidWlsZAotCi0gICAgUmV0dXJucyB0aGUgdHVwbGUgcmVzdWx0LCB0ZXN0X3RpbWUsIHdoZXJlIHJlc3VsdCBpcyBvbmUgb2YgdGhlIGNvbnN0YW50czoKLSAgICAgICAgSU5URVJSVVBURUQgICAgICBLZXlib2FyZEludGVycnVwdCB3aGVuIHJ1biB1bmRlciAtagotICAgICAgICBSRVNPVVJDRV9ERU5JRUQgIHRlc3Qgc2tpcHBlZCBiZWNhdXNlIHJlc291cmNlIGRlbmllZAotICAgICAgICBTS0lQUEVEICAgICAgICAgIHRlc3Qgc2tpcHBlZCBmb3Igc29tZSBvdGhlciByZWFzb24KLSAgICAgICAgRU5WX0NIQU5HRUQgICAgICB0ZXN0IGZhaWxlZCBiZWNhdXNlIGl0IGNoYW5nZWQgdGhlIGV4ZWN1dGlvbiBlbnZpcm9ubWVudAotICAgICAgICBGQUlMRUQgICAgICAgICAgIHRlc3QgZmFpbGVkCi0gICAgICAgIFBBU1NFRCAgICAgICAgICAgdGVzdCBwYXNzZWQKLSAgICAiIiIKLSAgICBpZiB1c2VfcmVzb3VyY2VzIGlzIG5vdCBOb25lOgotICAgICAgICBzdXBwb3J0LnVzZV9yZXNvdXJjZXMgPSB1c2VfcmVzb3VyY2VzCi0gICAgdXNlX3RpbWVvdXQgPSAodGltZW91dCBpcyBub3QgTm9uZSkKLSAgICBpZiB1c2VfdGltZW91dDoKLSAgICAgICAgZmF1bHRoYW5kbGVyLmR1bXBfdHJhY2ViYWNrX2xhdGVyKHRpbWVvdXQsIGV4aXQ9VHJ1ZSkKLSAgICB0cnk6Ci0gICAgICAgIHN1cHBvcnQubWF0Y2hfdGVzdHMgPSBtYXRjaF90ZXN0cwotICAgICAgICBpZiBmYWlsZmFzdDoKLSAgICAgICAgICAgIHN1cHBvcnQuZmFpbGZhc3QgPSBUcnVlCi0gICAgICAgIGlmIG91dHB1dF9vbl9mYWlsdXJlOgotICAgICAgICAgICAgc3VwcG9ydC52ZXJib3NlID0gVHJ1ZQotCi0gICAgICAgICAgICAjIFJldXNlIHRoZSBzYW1lIGluc3RhbmNlIHRvIGFsbCBjYWxscyB0byBydW50ZXN0KCkuIFNvbWUKLSAgICAgICAgICAgICMgdGVzdHMga2VlcCBhIHJlZmVyZW5jZSB0byBzeXMuc3Rkb3V0IG9yIHN5cy5zdGRlcnIKLSAgICAgICAgICAgICMgKGVnLiB0ZXN0X2FyZ3BhcnNlKS4KLSAgICAgICAgICAgIGlmIHJ1bnRlc3Quc3RyaW5naW8gaXMgTm9uZToKLSAgICAgICAgICAgICAgICBzdHJlYW0gPSBpby5TdHJpbmdJTygpCi0gICAgICAgICAgICAgICAgcnVudGVzdC5zdHJpbmdpbyA9IHN0cmVhbQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzdHJlYW0gPSBydW50ZXN0LnN0cmluZ2lvCi0gICAgICAgICAgICAgICAgc3RyZWFtLnNlZWsoMCkKLSAgICAgICAgICAgICAgICBzdHJlYW0udHJ1bmNhdGUoKQotCi0gICAgICAgICAgICBvcmlnX3N0ZG91dCA9IHN5cy5zdGRvdXQKLSAgICAgICAgICAgIG9yaWdfc3RkZXJyID0gc3lzLnN0ZGVycgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQgPSBzdHJlYW0KLSAgICAgICAgICAgICAgICBzeXMuc3RkZXJyID0gc3RyZWFtCi0gICAgICAgICAgICAgICAgcmVzdWx0ID0gcnVudGVzdF9pbm5lcih0ZXN0LCB2ZXJib3NlLCBxdWlldCwgaHVudHJsZWFrcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlfZmFpbHVyZT1GYWxzZSwgcGdvPXBnbykKLSAgICAgICAgICAgICAgICBpZiByZXN1bHRbMF0gIT0gUEFTU0VEIGFuZCBub3QgcGdvOgotICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSBzdHJlYW0uZ2V0dmFsdWUoKQotICAgICAgICAgICAgICAgICAgICBvcmlnX3N0ZGVyci53cml0ZShvdXRwdXQpCi0gICAgICAgICAgICAgICAgICAgIG9yaWdfc3RkZXJyLmZsdXNoKCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgc3lzLnN0ZG91dCA9IG9yaWdfc3Rkb3V0Ci0gICAgICAgICAgICAgICAgc3lzLnN0ZGVyciA9IG9yaWdfc3RkZXJyCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzdXBwb3J0LnZlcmJvc2UgPSB2ZXJib3NlICAjIFRlbGwgdGVzdHMgdG8gYmUgbW9kZXJhdGVseSBxdWlldAotICAgICAgICAgICAgcmVzdWx0ID0gcnVudGVzdF9pbm5lcih0ZXN0LCB2ZXJib3NlLCBxdWlldCwgaHVudHJsZWFrcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheV9mYWlsdXJlPW5vdCB2ZXJib3NlLCBwZ289cGdvKQotICAgICAgICByZXR1cm4gcmVzdWx0Ci0gICAgZmluYWxseToKLSAgICAgICAgaWYgdXNlX3RpbWVvdXQ6Ci0gICAgICAgICAgICBmYXVsdGhhbmRsZXIuY2FuY2VsX2R1bXBfdHJhY2ViYWNrX2xhdGVyKCkKLSAgICAgICAgY2xlYW51cF90ZXN0X2Ryb3BwaW5ncyh0ZXN0LCB2ZXJib3NlKQotcnVudGVzdC5zdHJpbmdpbyA9IE5vbmUKLQotIyBVbml0IHRlc3RzIGFyZSBzdXBwb3NlZCB0byBsZWF2ZSB0aGUgZXhlY3V0aW9uIGVudmlyb25tZW50IHVuY2hhbmdlZAotIyBvbmNlIHRoZXkgY29tcGxldGUuICBCdXQgc29tZXRpbWVzIHRlc3RzIGhhdmUgYnVncywgZXNwZWNpYWxseSB3aGVuCi0jIHRlc3RzIGZhaWwsIGFuZCB0aGUgY2hhbmdlcyB0byBlbnZpcm9ubWVudCBnbyBvbiB0byBtZXNzIHVwIG90aGVyCi0jIHRlc3RzLiAgVGhpcyBjYW4gY2F1c2UgaXNzdWVzIHdpdGggYnVpbGRib3Qgc3RhYmlsaXR5LCBzaW5jZSB0ZXN0cwotIyBhcmUgcnVuIGluIHJhbmRvbSBvcmRlciBhbmQgc28gcHJvYmxlbXMgbWF5IGFwcGVhciB0byBjb21lIGFuZCBnby4KLSMgVGhlcmUgYXJlIGEgZmV3IHRoaW5ncyB3ZSBjYW4gc2F2ZSBhbmQgcmVzdG9yZSB0byBtaXRpZ2F0ZSB0aGlzLCBhbmQKLSMgdGhlIGZvbGxvd2luZyBjb250ZXh0IG1hbmFnZXIgaGFuZGxlcyB0aGlzIHRhc2suCi0KLWNsYXNzIHNhdmVkX3Rlc3RfZW52aXJvbm1lbnQ6Ci0gICAgIiIiU2F2ZSBiaXRzIG9mIHRoZSB0ZXN0IGVudmlyb25tZW50IGFuZCByZXN0b3JlIHRoZW0gYXQgYmxvY2sgZXhpdC4KLQotICAgICAgICB3aXRoIHNhdmVkX3Rlc3RfZW52aXJvbm1lbnQodGVzdG5hbWUsIHZlcmJvc2UsIHF1aWV0KToKLSAgICAgICAgICAgICNzdHVmZgotCi0gICAgVW5sZXNzIHF1aWV0IGlzIFRydWUsIGEgd2FybmluZyBpcyBwcmludGVkIHRvIHN0ZGVyciBpZiBhbnkgb2YKLSAgICB0aGUgc2F2ZWQgaXRlbXMgd2FzIGNoYW5nZWQgYnkgdGhlIHRlc3QuICBUaGUgYXR0cmlidXRlICdjaGFuZ2VkJwotICAgIGlzIGluaXRpYWxseSBGYWxzZSwgYnV0IGlzIHNldCB0byBUcnVlIGlmIGEgY2hhbmdlIGlzIGRldGVjdGVkLgotCi0gICAgSWYgdmVyYm9zZSBpcyBtb3JlIHRoYW4gMSwgdGhlIGJlZm9yZSBhbmQgYWZ0ZXIgc3RhdGUgb2YgY2hhbmdlZAotICAgIGl0ZW1zIGlzIGFsc28gcHJpbnRlZC4KLSAgICAiIiIKLQotICAgIGNoYW5nZWQgPSBGYWxzZQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RuYW1lLCB2ZXJib3NlPTAsIHF1aWV0PUZhbHNlLCAqLCBwZ289RmFsc2UpOgotICAgICAgICBzZWxmLnRlc3RuYW1lID0gdGVzdG5hbWUKLSAgICAgICAgc2VsZi52ZXJib3NlID0gdmVyYm9zZQotICAgICAgICBzZWxmLnF1aWV0ID0gcXVpZXQKLSAgICAgICAgc2VsZi5wZ28gPSBwZ28KLQotICAgICMgVG8gYWRkIHRoaW5ncyB0byBzYXZlIGFuZCByZXN0b3JlLCBhZGQgYSBuYW1lIFhYWCB0byB0aGUgcmVzb3VyY2VzIGxpc3QKLSAgICAjIGFuZCBhZGQgY29ycmVzcG9uZGluZyBnZXRfWFhYL3Jlc3RvcmVfWFhYIGZ1bmN0aW9ucy4gIGdldF9YWFggc2hvdWxkCi0gICAgIyByZXR1cm4gdGhlIHZhbHVlIHRvIGJlIHNhdmVkIGFuZCBjb21wYXJlZCBhZ2FpbnN0IGEgc2Vjb25kIGNhbGwgdG8gdGhlCi0gICAgIyBnZXQgZnVuY3Rpb24gd2hlbiB0ZXN0IGV4ZWN1dGlvbiBjb21wbGV0ZXMuICByZXN0b3JlX1hYWCBzaG91bGQgYWNjZXB0Ci0gICAgIyB0aGUgc2F2ZWQgdmFsdWUgYW5kIHJlc3RvcmUgdGhlIHJlc291cmNlIHVzaW5nIGl0LiAgSXQgd2lsbCBiZSBjYWxsZWQgaWYKLSAgICAjIGFuZCBvbmx5IGlmIGEgY2hhbmdlIGluIHRoZSB2YWx1ZSBpcyBkZXRlY3RlZC4KLSAgICAjCi0gICAgIyBOb3RlOiBYWFggd2lsbCBoYXZlIGFueSAnLicgcmVwbGFjZWQgd2l0aCAnXycgY2hhcmFjdGVycyB3aGVuIGRldGVybWluaW5nCi0gICAgIyB0aGUgY29ycmVzcG9uZGluZyBtZXRob2QgbmFtZXMuCi0KLSAgICByZXNvdXJjZXMgPSAoJ3N5cy5hcmd2JywgJ2N3ZCcsICdzeXMuc3RkaW4nLCAnc3lzLnN0ZG91dCcsICdzeXMuc3RkZXJyJywKLSAgICAgICAgICAgICAgICAgJ29zLmVudmlyb24nLCAnc3lzLnBhdGgnLCAnc3lzLnBhdGhfaG9va3MnLCAnX19pbXBvcnRfXycsCi0gICAgICAgICAgICAgICAgICdhc3luY29yZS5zb2NrZXRfbWFwJywKLSAgICAgICAgICAgICAgICAgJ2xvZ2dpbmcuX2hhbmRsZXJzJywgJ2xvZ2dpbmcuX2hhbmRsZXJMaXN0JywgJ3N5cy5nZXR0cmFjZScsCi0gICAgICAgICAgICAgICAgICdzeXMud2Fybm9wdGlvbnMnLAotICAgICAgICAgICAgICAgICAjIG11bHRpcHJvY2Vzc2luZy5wcm9jZXNzLl9jbGVhbnVwKCkgbWF5IHJlbGVhc2UgcmVmCi0gICAgICAgICAgICAgICAgICMgdG8gYSB0aHJlYWQsIHNvIGNoZWNrIHByb2Nlc3NlcyBmaXJzdC4KLSAgICAgICAgICAgICAgICAgJ211bHRpcHJvY2Vzc2luZy5wcm9jZXNzLl9kYW5nbGluZycsICd0aHJlYWRpbmcuX2RhbmdsaW5nJywKLSAgICAgICAgICAgICAgICAgJ3N5c2NvbmZpZy5fQ09ORklHX1ZBUlMnLCAnc3lzY29uZmlnLl9JTlNUQUxMX1NDSEVNRVMnLAotICAgICAgICAgICAgICAgICAnZmlsZXMnLCAnbG9jYWxlJywgJ3dhcm5pbmdzLnNob3d3YXJuaW5nJywKLSAgICAgICAgICAgICAgICAgJ3NodXRpbF9hcmNoaXZlX2Zvcm1hdHMnLCAnc2h1dGlsX3VucGFja19mb3JtYXRzJywKLSAgICAgICAgICAgICAgICApCi0KLSAgICBkZWYgZ2V0X3N5c19hcmd2KHNlbGYpOgotICAgICAgICByZXR1cm4gaWQoc3lzLmFyZ3YpLCBzeXMuYXJndiwgc3lzLmFyZ3ZbOl0KLSAgICBkZWYgcmVzdG9yZV9zeXNfYXJndihzZWxmLCBzYXZlZF9hcmd2KToKLSAgICAgICAgc3lzLmFyZ3YgPSBzYXZlZF9hcmd2WzFdCi0gICAgICAgIHN5cy5hcmd2WzpdID0gc2F2ZWRfYXJndlsyXQotCi0gICAgZGVmIGdldF9jd2Qoc2VsZik6Ci0gICAgICAgIHJldHVybiBvcy5nZXRjd2QoKQotICAgIGRlZiByZXN0b3JlX2N3ZChzZWxmLCBzYXZlZF9jd2QpOgotICAgICAgICBvcy5jaGRpcihzYXZlZF9jd2QpCi0KLSAgICBkZWYgZ2V0X3N5c19zdGRvdXQoc2VsZik6Ci0gICAgICAgIHJldHVybiBzeXMuc3Rkb3V0Ci0gICAgZGVmIHJlc3RvcmVfc3lzX3N0ZG91dChzZWxmLCBzYXZlZF9zdGRvdXQpOgotICAgICAgICBzeXMuc3Rkb3V0ID0gc2F2ZWRfc3Rkb3V0Ci0KLSAgICBkZWYgZ2V0X3N5c19zdGRlcnIoc2VsZik6Ci0gICAgICAgIHJldHVybiBzeXMuc3RkZXJyCi0gICAgZGVmIHJlc3RvcmVfc3lzX3N0ZGVycihzZWxmLCBzYXZlZF9zdGRlcnIpOgotICAgICAgICBzeXMuc3RkZXJyID0gc2F2ZWRfc3RkZXJyCi0KLSAgICBkZWYgZ2V0X3N5c19zdGRpbihzZWxmKToKLSAgICAgICAgcmV0dXJuIHN5cy5zdGRpbgotICAgIGRlZiByZXN0b3JlX3N5c19zdGRpbihzZWxmLCBzYXZlZF9zdGRpbik6Ci0gICAgICAgIHN5cy5zdGRpbiA9IHNhdmVkX3N0ZGluCi0KLSAgICBkZWYgZ2V0X29zX2Vudmlyb24oc2VsZik6Ci0gICAgICAgIHJldHVybiBpZChvcy5lbnZpcm9uKSwgb3MuZW52aXJvbiwgZGljdChvcy5lbnZpcm9uKQotICAgIGRlZiByZXN0b3JlX29zX2Vudmlyb24oc2VsZiwgc2F2ZWRfZW52aXJvbik6Ci0gICAgICAgIG9zLmVudmlyb24gPSBzYXZlZF9lbnZpcm9uWzFdCi0gICAgICAgIG9zLmVudmlyb24uY2xlYXIoKQotICAgICAgICBvcy5lbnZpcm9uLnVwZGF0ZShzYXZlZF9lbnZpcm9uWzJdKQotCi0gICAgZGVmIGdldF9zeXNfcGF0aChzZWxmKToKLSAgICAgICAgcmV0dXJuIGlkKHN5cy5wYXRoKSwgc3lzLnBhdGgsIHN5cy5wYXRoWzpdCi0gICAgZGVmIHJlc3RvcmVfc3lzX3BhdGgoc2VsZiwgc2F2ZWRfcGF0aCk6Ci0gICAgICAgIHN5cy5wYXRoID0gc2F2ZWRfcGF0aFsxXQotICAgICAgICBzeXMucGF0aFs6XSA9IHNhdmVkX3BhdGhbMl0KLQotICAgIGRlZiBnZXRfc3lzX3BhdGhfaG9va3Moc2VsZik6Ci0gICAgICAgIHJldHVybiBpZChzeXMucGF0aF9ob29rcyksIHN5cy5wYXRoX2hvb2tzLCBzeXMucGF0aF9ob29rc1s6XQotICAgIGRlZiByZXN0b3JlX3N5c19wYXRoX2hvb2tzKHNlbGYsIHNhdmVkX2hvb2tzKToKLSAgICAgICAgc3lzLnBhdGhfaG9va3MgPSBzYXZlZF9ob29rc1sxXQotICAgICAgICBzeXMucGF0aF9ob29rc1s6XSA9IHNhdmVkX2hvb2tzWzJdCi0KLSAgICBkZWYgZ2V0X3N5c19nZXR0cmFjZShzZWxmKToKLSAgICAgICAgcmV0dXJuIHN5cy5nZXR0cmFjZSgpCi0gICAgZGVmIHJlc3RvcmVfc3lzX2dldHRyYWNlKHNlbGYsIHRyYWNlX2Z4bik6Ci0gICAgICAgIHN5cy5zZXR0cmFjZSh0cmFjZV9meG4pCi0KLSAgICBkZWYgZ2V0X19faW1wb3J0X18oc2VsZik6Ci0gICAgICAgIHJldHVybiBidWlsdGlucy5fX2ltcG9ydF9fCi0gICAgZGVmIHJlc3RvcmVfX19pbXBvcnRfXyhzZWxmLCBpbXBvcnRfKToKLSAgICAgICAgYnVpbHRpbnMuX19pbXBvcnRfXyA9IGltcG9ydF8KLQotICAgIGRlZiBnZXRfYXN5bmNvcmVfc29ja2V0X21hcChzZWxmKToKLSAgICAgICAgYXN5bmNvcmUgPSBzeXMubW9kdWxlcy5nZXQoJ2FzeW5jb3JlJykKLSAgICAgICAgIyBYWFggTWFraW5nIGEgY29weSBrZWVwcyBvYmplY3RzIGFsaXZlIHVudGlsIF9fZXhpdF9fIGdldHMgY2FsbGVkLgotICAgICAgICByZXR1cm4gYXN5bmNvcmUgYW5kIGFzeW5jb3JlLnNvY2tldF9tYXAuY29weSgpIG9yIHt9Ci0gICAgZGVmIHJlc3RvcmVfYXN5bmNvcmVfc29ja2V0X21hcChzZWxmLCBzYXZlZF9tYXApOgotICAgICAgICBhc3luY29yZSA9IHN5cy5tb2R1bGVzLmdldCgnYXN5bmNvcmUnKQotICAgICAgICBpZiBhc3luY29yZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGFzeW5jb3JlLmNsb3NlX2FsbChpZ25vcmVfYWxsPVRydWUpCi0gICAgICAgICAgICBhc3luY29yZS5zb2NrZXRfbWFwLnVwZGF0ZShzYXZlZF9tYXApCi0KLSAgICBkZWYgZ2V0X3NodXRpbF9hcmNoaXZlX2Zvcm1hdHMoc2VsZik6Ci0gICAgICAgICMgd2UgY291bGQgY2FsbCBnZXRfYXJjaGl2ZXNfZm9ybWF0cygpIGJ1dCB0aGF0IG9ubHkgcmV0dXJucyB0aGUKLSAgICAgICAgIyByZWdpc3RyeSBrZXlzOyB3ZSB3YW50IHRvIGNoZWNrIHRoZSB2YWx1ZXMgdG9vICh0aGUgZnVuY3Rpb25zIHRoYXQKLSAgICAgICAgIyBhcmUgcmVnaXN0ZXJlZCkKLSAgICAgICAgcmV0dXJuIHNodXRpbC5fQVJDSElWRV9GT1JNQVRTLCBzaHV0aWwuX0FSQ0hJVkVfRk9STUFUUy5jb3B5KCkKLSAgICBkZWYgcmVzdG9yZV9zaHV0aWxfYXJjaGl2ZV9mb3JtYXRzKHNlbGYsIHNhdmVkKToKLSAgICAgICAgc2h1dGlsLl9BUkNISVZFX0ZPUk1BVFMgPSBzYXZlZFswXQotICAgICAgICBzaHV0aWwuX0FSQ0hJVkVfRk9STUFUUy5jbGVhcigpCi0gICAgICAgIHNodXRpbC5fQVJDSElWRV9GT1JNQVRTLnVwZGF0ZShzYXZlZFsxXSkKLQotICAgIGRlZiBnZXRfc2h1dGlsX3VucGFja19mb3JtYXRzKHNlbGYpOgotICAgICAgICByZXR1cm4gc2h1dGlsLl9VTlBBQ0tfRk9STUFUUywgc2h1dGlsLl9VTlBBQ0tfRk9STUFUUy5jb3B5KCkKLSAgICBkZWYgcmVzdG9yZV9zaHV0aWxfdW5wYWNrX2Zvcm1hdHMoc2VsZiwgc2F2ZWQpOgotICAgICAgICBzaHV0aWwuX1VOUEFDS19GT1JNQVRTID0gc2F2ZWRbMF0KLSAgICAgICAgc2h1dGlsLl9VTlBBQ0tfRk9STUFUUy5jbGVhcigpCi0gICAgICAgIHNodXRpbC5fVU5QQUNLX0ZPUk1BVFMudXBkYXRlKHNhdmVkWzFdKQotCi0gICAgZGVmIGdldF9sb2dnaW5nX19oYW5kbGVycyhzZWxmKToKLSAgICAgICAgIyBfaGFuZGxlcnMgaXMgYSBXZWFrVmFsdWVEaWN0aW9uYXJ5Ci0gICAgICAgIHJldHVybiBpZChsb2dnaW5nLl9oYW5kbGVycyksIGxvZ2dpbmcuX2hhbmRsZXJzLCBsb2dnaW5nLl9oYW5kbGVycy5jb3B5KCkKLSAgICBkZWYgcmVzdG9yZV9sb2dnaW5nX19oYW5kbGVycyhzZWxmLCBzYXZlZF9oYW5kbGVycyk6Ci0gICAgICAgICMgQ2FuJ3QgZWFzaWx5IHJldmVydCB0aGUgbG9nZ2luZyBzdGF0ZQotICAgICAgICBwYXNzCi0KLSAgICBkZWYgZ2V0X2xvZ2dpbmdfX2hhbmRsZXJMaXN0KHNlbGYpOgotICAgICAgICAjIF9oYW5kbGVyTGlzdCBpcyBhIGxpc3Qgb2Ygd2Vha3JlZnMgdG8gaGFuZGxlcnMKLSAgICAgICAgcmV0dXJuIGlkKGxvZ2dpbmcuX2hhbmRsZXJMaXN0KSwgbG9nZ2luZy5faGFuZGxlckxpc3QsIGxvZ2dpbmcuX2hhbmRsZXJMaXN0WzpdCi0gICAgZGVmIHJlc3RvcmVfbG9nZ2luZ19faGFuZGxlckxpc3Qoc2VsZiwgc2F2ZWRfaGFuZGxlckxpc3QpOgotICAgICAgICAjIENhbid0IGVhc2lseSByZXZlcnQgdGhlIGxvZ2dpbmcgc3RhdGUKLSAgICAgICAgcGFzcwotCi0gICAgZGVmIGdldF9zeXNfd2Fybm9wdGlvbnMoc2VsZik6Ci0gICAgICAgIHJldHVybiBpZChzeXMud2Fybm9wdGlvbnMpLCBzeXMud2Fybm9wdGlvbnMsIHN5cy53YXJub3B0aW9uc1s6XQotICAgIGRlZiByZXN0b3JlX3N5c193YXJub3B0aW9ucyhzZWxmLCBzYXZlZF9vcHRpb25zKToKLSAgICAgICAgc3lzLndhcm5vcHRpb25zID0gc2F2ZWRfb3B0aW9uc1sxXQotICAgICAgICBzeXMud2Fybm9wdGlvbnNbOl0gPSBzYXZlZF9vcHRpb25zWzJdCi0KLSAgICAjIENvbnRyb2xsaW5nIGRhbmdsaW5nIHJlZmVyZW5jZXMgdG8gVGhyZWFkIG9iamVjdHMgY2FuIG1ha2UgaXQgZWFzaWVyCi0gICAgIyB0byB0cmFjayByZWZlcmVuY2UgbGVha3MuCi0gICAgZGVmIGdldF90aHJlYWRpbmdfX2RhbmdsaW5nKHNlbGYpOgotICAgICAgICBpZiBub3QgdGhyZWFkaW5nOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgIyBUaGlzIGNvcGllcyB0aGUgd2Vha3JlZnMgd2l0aG91dCBtYWtpbmcgYW55IHN0cm9uZyByZWZlcmVuY2UKLSAgICAgICAgcmV0dXJuIHRocmVhZGluZy5fZGFuZ2xpbmcuY29weSgpCi0gICAgZGVmIHJlc3RvcmVfdGhyZWFkaW5nX19kYW5nbGluZyhzZWxmLCBzYXZlZCk6Ci0gICAgICAgIGlmIG5vdCB0aHJlYWRpbmc6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgdGhyZWFkaW5nLl9kYW5nbGluZy5jbGVhcigpCi0gICAgICAgIHRocmVhZGluZy5fZGFuZ2xpbmcudXBkYXRlKHNhdmVkKQotCi0gICAgIyBTYW1lIGZvciBQcm9jZXNzIG9iamVjdHMKLSAgICBkZWYgZ2V0X211bHRpcHJvY2Vzc2luZ19wcm9jZXNzX19kYW5nbGluZyhzZWxmKToKLSAgICAgICAgaWYgbm90IG11bHRpcHJvY2Vzc2luZzoKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgICMgVW5qb2luZWQgcHJvY2VzcyBvYmplY3RzIGNhbiBzdXJ2aXZlIGFmdGVyIHByb2Nlc3MgZXhpdHMKLSAgICAgICAgbXVsdGlwcm9jZXNzaW5nLnByb2Nlc3MuX2NsZWFudXAoKQotICAgICAgICAjIFRoaXMgY29waWVzIHRoZSB3ZWFrcmVmcyB3aXRob3V0IG1ha2luZyBhbnkgc3Ryb25nIHJlZmVyZW5jZQotICAgICAgICByZXR1cm4gbXVsdGlwcm9jZXNzaW5nLnByb2Nlc3MuX2RhbmdsaW5nLmNvcHkoKQotICAgIGRlZiByZXN0b3JlX211bHRpcHJvY2Vzc2luZ19wcm9jZXNzX19kYW5nbGluZyhzZWxmLCBzYXZlZCk6Ci0gICAgICAgIGlmIG5vdCBtdWx0aXByb2Nlc3Npbmc6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgbXVsdGlwcm9jZXNzaW5nLnByb2Nlc3MuX2RhbmdsaW5nLmNsZWFyKCkKLSAgICAgICAgbXVsdGlwcm9jZXNzaW5nLnByb2Nlc3MuX2RhbmdsaW5nLnVwZGF0ZShzYXZlZCkKLQotICAgIGRlZiBnZXRfc3lzY29uZmlnX19DT05GSUdfVkFSUyhzZWxmKToKLSAgICAgICAgIyBtYWtlIHN1cmUgdGhlIGRpY3QgaXMgaW5pdGlhbGl6ZWQKLSAgICAgICAgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdwcmVmaXgnKQotICAgICAgICByZXR1cm4gKGlkKHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMpLCBzeXNjb25maWcuX0NPTkZJR19WQVJTLAotICAgICAgICAgICAgICAgIGRpY3Qoc3lzY29uZmlnLl9DT05GSUdfVkFSUykpCi0gICAgZGVmIHJlc3RvcmVfc3lzY29uZmlnX19DT05GSUdfVkFSUyhzZWxmLCBzYXZlZCk6Ci0gICAgICAgIHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMgPSBzYXZlZFsxXQotICAgICAgICBzeXNjb25maWcuX0NPTkZJR19WQVJTLmNsZWFyKCkKLSAgICAgICAgc3lzY29uZmlnLl9DT05GSUdfVkFSUy51cGRhdGUoc2F2ZWRbMl0pCi0KLSAgICBkZWYgZ2V0X3N5c2NvbmZpZ19fSU5TVEFMTF9TQ0hFTUVTKHNlbGYpOgotICAgICAgICByZXR1cm4gKGlkKHN5c2NvbmZpZy5fSU5TVEFMTF9TQ0hFTUVTKSwgc3lzY29uZmlnLl9JTlNUQUxMX1NDSEVNRVMsCi0gICAgICAgICAgICAgICAgc3lzY29uZmlnLl9JTlNUQUxMX1NDSEVNRVMuY29weSgpKQotICAgIGRlZiByZXN0b3JlX3N5c2NvbmZpZ19fSU5TVEFMTF9TQ0hFTUVTKHNlbGYsIHNhdmVkKToKLSAgICAgICAgc3lzY29uZmlnLl9JTlNUQUxMX1NDSEVNRVMgPSBzYXZlZFsxXQotICAgICAgICBzeXNjb25maWcuX0lOU1RBTExfU0NIRU1FUy5jbGVhcigpCi0gICAgICAgIHN5c2NvbmZpZy5fSU5TVEFMTF9TQ0hFTUVTLnVwZGF0ZShzYXZlZFsyXSkKLQotICAgIGRlZiBnZXRfZmlsZXMoc2VsZik6Ci0gICAgICAgIHJldHVybiBzb3J0ZWQoZm4gKyAoJy8nIGlmIG9zLnBhdGguaXNkaXIoZm4pIGVsc2UgJycpCi0gICAgICAgICAgICAgICAgICAgICAgZm9yIGZuIGluIG9zLmxpc3RkaXIoKSkKLSAgICBkZWYgcmVzdG9yZV9maWxlcyhzZWxmLCBzYXZlZF92YWx1ZSk6Ci0gICAgICAgIGZuID0gc3VwcG9ydC5URVNURk4KLSAgICAgICAgaWYgZm4gbm90IGluIHNhdmVkX3ZhbHVlIGFuZCAoZm4gKyAnLycpIG5vdCBpbiBzYXZlZF92YWx1ZToKLSAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGZuKToKLSAgICAgICAgICAgICAgICBzdXBwb3J0LnVubGluayhmbikKLSAgICAgICAgICAgIGVsaWYgb3MucGF0aC5pc2Rpcihmbik6Ci0gICAgICAgICAgICAgICAgc3VwcG9ydC5ybXRyZWUoZm4pCi0KLSAgICBfbGMgPSBbZ2V0YXR0cihsb2NhbGUsIGxjKSBmb3IgbGMgaW4gZGlyKGxvY2FsZSkKLSAgICAgICAgICAgaWYgbGMuc3RhcnRzd2l0aCgnTENfJyldCi0gICAgZGVmIGdldF9sb2NhbGUoc2VsZik6Ci0gICAgICAgIHBhaXJpbmdzID0gW10KLSAgICAgICAgZm9yIGxjIGluIHNlbGYuX2xjOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHBhaXJpbmdzLmFwcGVuZCgobGMsIGxvY2FsZS5zZXRsb2NhbGUobGMsIE5vbmUpKSkKLSAgICAgICAgICAgIGV4Y2VwdCAoVHlwZUVycm9yLCBWYWx1ZUVycm9yKToKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICByZXR1cm4gcGFpcmluZ3MKLSAgICBkZWYgcmVzdG9yZV9sb2NhbGUoc2VsZiwgc2F2ZWQpOgotICAgICAgICBmb3IgbGMsIHNldHRpbmcgaW4gc2F2ZWQ6Ci0gICAgICAgICAgICBsb2NhbGUuc2V0bG9jYWxlKGxjLCBzZXR0aW5nKQotCi0gICAgZGVmIGdldF93YXJuaW5nc19zaG93d2FybmluZyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHdhcm5pbmdzLnNob3d3YXJuaW5nCi0gICAgZGVmIHJlc3RvcmVfd2FybmluZ3Nfc2hvd3dhcm5pbmcoc2VsZiwgZnhuKToKLSAgICAgICAgd2FybmluZ3Muc2hvd3dhcm5pbmcgPSBmeG4KLQotICAgIGRlZiByZXNvdXJjZV9pbmZvKHNlbGYpOgotICAgICAgICBmb3IgbmFtZSBpbiBzZWxmLnJlc291cmNlczoKLSAgICAgICAgICAgIG1ldGhvZF9zdWZmaXggPSBuYW1lLnJlcGxhY2UoJy4nLCAnXycpCi0gICAgICAgICAgICBnZXRfbmFtZSA9ICdnZXRfJyArIG1ldGhvZF9zdWZmaXgKLSAgICAgICAgICAgIHJlc3RvcmVfbmFtZSA9ICdyZXN0b3JlXycgKyBtZXRob2Rfc3VmZml4Ci0gICAgICAgICAgICB5aWVsZCBuYW1lLCBnZXRhdHRyKHNlbGYsIGdldF9uYW1lKSwgZ2V0YXR0cihzZWxmLCByZXN0b3JlX25hbWUpCi0KLSAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgotICAgICAgICBzZWxmLnNhdmVkX3ZhbHVlcyA9IGRpY3QoKG5hbWUsIGdldCgpKSBmb3IgbmFtZSwgZ2V0LCByZXN0b3JlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBzZWxmLnJlc291cmNlX2luZm8oKSkKLSAgICAgICAgcmV0dXJuIHNlbGYKLQotICAgIGRlZiBfX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbCwgZXhjX3RiKToKLSAgICAgICAgc2F2ZWRfdmFsdWVzID0gc2VsZi5zYXZlZF92YWx1ZXMKLSAgICAgICAgZGVsIHNlbGYuc2F2ZWRfdmFsdWVzCi0gICAgICAgIHN1cHBvcnQuZ2NfY29sbGVjdCgpICAjIFNvbWUgcmVzb3VyY2VzIHVzZSB3ZWFrIHJlZmVyZW5jZXMKLSAgICAgICAgZm9yIG5hbWUsIGdldCwgcmVzdG9yZSBpbiBzZWxmLnJlc291cmNlX2luZm8oKToKLSAgICAgICAgICAgIGN1cnJlbnQgPSBnZXQoKQotICAgICAgICAgICAgb3JpZ2luYWwgPSBzYXZlZF92YWx1ZXMucG9wKG5hbWUpCi0gICAgICAgICAgICAjIENoZWNrIGZvciBjaGFuZ2VzIHRvIHRoZSByZXNvdXJjZSdzIHZhbHVlCi0gICAgICAgICAgICBpZiBjdXJyZW50ICE9IG9yaWdpbmFsOgotICAgICAgICAgICAgICAgIHNlbGYuY2hhbmdlZCA9IFRydWUKLSAgICAgICAgICAgICAgICByZXN0b3JlKG9yaWdpbmFsKQotICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLnF1aWV0IGFuZCBub3Qgc2VsZi5wZ286Ci0gICAgICAgICAgICAgICAgICAgIHByaW50KCJXYXJuaW5nIC0tIHt9IHdhcyBtb2RpZmllZCBieSB7fSIuZm9ybWF0KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIHNlbGYudGVzdG5hbWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU9c3lzLnN0ZGVycikKLSAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi52ZXJib3NlID4gMSBhbmQgbm90IHNlbGYucGdvOgotICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiAgQmVmb3JlOiB7fVxuICBBZnRlcjogIHt9ICIuZm9ybWF0KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbCwgY3VycmVudCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU9c3lzLnN0ZGVycikKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLQotZGVmIHJ1bnRlc3RfaW5uZXIodGVzdCwgdmVyYm9zZSwgcXVpZXQsCi0gICAgICAgICAgICAgICAgICBodW50cmxlYWtzPUZhbHNlLCBkaXNwbGF5X2ZhaWx1cmU9VHJ1ZSwgcGdvPUZhbHNlKToKLSAgICBzdXBwb3J0LnVubG9hZCh0ZXN0KQotCi0gICAgdGVzdF90aW1lID0gMC4wCi0gICAgcmVmbGVhayA9IEZhbHNlICAjIFRydWUgaWYgdGhlIHRlc3QgbGVha2VkIHJlZmVyZW5jZXMuCi0gICAgdHJ5OgotICAgICAgICBpZiB0ZXN0LnN0YXJ0c3dpdGgoJ3Rlc3QuJyk6Ci0gICAgICAgICAgICBhYnN0ZXN0ID0gdGVzdAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBBbHdheXMgaW1wb3J0IGl0IGZyb20gdGhlIHRlc3QgcGFja2FnZQotICAgICAgICAgICAgYWJzdGVzdCA9ICd0ZXN0LicgKyB0ZXN0Ci0gICAgICAgIGNsZWFyX2NhY2hlcygpCi0gICAgICAgIHdpdGggc2F2ZWRfdGVzdF9lbnZpcm9ubWVudCh0ZXN0LCB2ZXJib3NlLCBxdWlldCwgcGdvPXBnbykgYXMgZW52aXJvbm1lbnQ6Ci0gICAgICAgICAgICBzdGFydF90aW1lID0gdGltZS50aW1lKCkKLSAgICAgICAgICAgIHRoZV9tb2R1bGUgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShhYnN0ZXN0KQotICAgICAgICAgICAgIyBJZiB0aGUgdGVzdCBoYXMgYSB0ZXN0X21haW4sIHRoYXQgd2lsbCBydW4gdGhlIGFwcHJvcHJpYXRlCi0gICAgICAgICAgICAjIHRlc3RzLiAgSWYgbm90LCB1c2Ugbm9ybWFsIHVuaXR0ZXN0IHRlc3QgbG9hZGluZy4KLSAgICAgICAgICAgIHRlc3RfcnVubmVyID0gZ2V0YXR0cih0aGVfbW9kdWxlLCAidGVzdF9tYWluIiwgTm9uZSkKLSAgICAgICAgICAgIGlmIHRlc3RfcnVubmVyIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgZGVmIHRlc3RfcnVubmVyKCk6Ci0gICAgICAgICAgICAgICAgICAgIGxvYWRlciA9IHVuaXR0ZXN0LlRlc3RMb2FkZXIoKQotICAgICAgICAgICAgICAgICAgICB0ZXN0cyA9IGxvYWRlci5sb2FkVGVzdHNGcm9tTW9kdWxlKHRoZV9tb2R1bGUpCi0gICAgICAgICAgICAgICAgICAgIGZvciBlcnJvciBpbiBsb2FkZXIuZXJyb3JzOgotICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoZXJyb3IsIGZpbGU9c3lzLnN0ZGVycikKLSAgICAgICAgICAgICAgICAgICAgaWYgbG9hZGVyLmVycm9yczoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiZXJyb3JzIHdoaWxlIGxvYWRpbmcgdGVzdHMiKQotICAgICAgICAgICAgICAgICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCh0ZXN0cykKLSAgICAgICAgICAgIHRlc3RfcnVubmVyKCkKLSAgICAgICAgICAgIGlmIGh1bnRybGVha3M6Ci0gICAgICAgICAgICAgICAgcmVmbGVhayA9IGRhc2hfUih0aGVfbW9kdWxlLCB0ZXN0LCB0ZXN0X3J1bm5lciwgaHVudHJsZWFrcykKLSAgICAgICAgICAgIHRlc3RfdGltZSA9IHRpbWUudGltZSgpIC0gc3RhcnRfdGltZQotICAgIGV4Y2VwdCBzdXBwb3J0LlJlc291cmNlRGVuaWVkIGFzIG1zZzoKLSAgICAgICAgaWYgbm90IHF1aWV0IGFuZCBub3QgcGdvOgotICAgICAgICAgICAgcHJpbnQodGVzdCwgInNraXBwZWQgLS0iLCBtc2cpCi0gICAgICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKLSAgICAgICAgcmV0dXJuIFJFU09VUkNFX0RFTklFRCwgdGVzdF90aW1lCi0gICAgZXhjZXB0IHVuaXR0ZXN0LlNraXBUZXN0IGFzIG1zZzoKLSAgICAgICAgaWYgbm90IHF1aWV0IGFuZCBub3QgcGdvOgotICAgICAgICAgICAgcHJpbnQodGVzdCwgInNraXBwZWQgLS0iLCBtc2cpCi0gICAgICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKLSAgICAgICAgcmV0dXJuIFNLSVBQRUQsIHRlc3RfdGltZQotICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKLSAgICAgICAgcmFpc2UKLSAgICBleGNlcHQgc3VwcG9ydC5UZXN0RmFpbGVkIGFzIG1zZzoKLSAgICAgICAgaWYgbm90IHBnbzoKLSAgICAgICAgICAgIGlmIGRpc3BsYXlfZmFpbHVyZToKLSAgICAgICAgICAgICAgICBwcmludCgidGVzdCIsIHRlc3QsICJmYWlsZWQgLS0iLCBtc2csIGZpbGU9c3lzLnN0ZGVycikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcHJpbnQoInRlc3QiLCB0ZXN0LCAiZmFpbGVkIiwgZmlsZT1zeXMuc3RkZXJyKQotICAgICAgICBzeXMuc3RkZXJyLmZsdXNoKCkKLSAgICAgICAgcmV0dXJuIEZBSUxFRCwgdGVzdF90aW1lCi0gICAgZXhjZXB0OgotICAgICAgICBtc2cgPSB0cmFjZWJhY2suZm9ybWF0X2V4YygpCi0gICAgICAgIGlmIG5vdCBwZ286Ci0gICAgICAgICAgICBwcmludCgidGVzdCIsIHRlc3QsICJjcmFzaGVkIC0tIiwgbXNnLCBmaWxlPXN5cy5zdGRlcnIpCi0gICAgICAgIHN5cy5zdGRlcnIuZmx1c2goKQotICAgICAgICByZXR1cm4gRkFJTEVELCB0ZXN0X3RpbWUKLSAgICBlbHNlOgotICAgICAgICBpZiByZWZsZWFrOgotICAgICAgICAgICAgcmV0dXJuIEZBSUxFRCwgdGVzdF90aW1lCi0gICAgICAgIGlmIGVudmlyb25tZW50LmNoYW5nZWQ6Ci0gICAgICAgICAgICByZXR1cm4gRU5WX0NIQU5HRUQsIHRlc3RfdGltZQotICAgICAgICByZXR1cm4gUEFTU0VELCB0ZXN0X3RpbWUKLQotZGVmIGNsZWFudXBfdGVzdF9kcm9wcGluZ3ModGVzdG5hbWUsIHZlcmJvc2UpOgotICAgIGltcG9ydCBzaHV0aWwKLSAgICBpbXBvcnQgc3RhdAotICAgIGltcG9ydCBnYwotCi0gICAgIyBGaXJzdCBraWxsIGFueSBkYW5nbGluZyByZWZlcmVuY2VzIHRvIG9wZW4gZmlsZXMgZXRjLgotICAgICMgVGhpcyBjYW4gYWxzbyBpc3N1ZSBzb21lIFJlc291cmNlV2FybmluZ3Mgd2hpY2ggd291bGQgb3RoZXJ3aXNlIGdldAotICAgICMgdHJpZ2dlcmVkIGR1cmluZyB0aGUgZm9sbG93aW5nIHRlc3QgcnVuLCBhbmQgcG9zc2libHkgcHJvZHVjZSBmYWlsdXJlcy4KLSAgICBnYy5jb2xsZWN0KCkKLQotICAgICMgVHJ5IHRvIGNsZWFuIHVwIGp1bmsgY29tbW9ubHkgbGVmdCBiZWhpbmQuICBXaGlsZSB0ZXN0cyBzaG91bGRuJ3QgbGVhdmUKLSAgICAjIGFueSBmaWxlcyBvciBkaXJlY3RvcmllcyBiZWhpbmQsIHdoZW4gYSB0ZXN0IGZhaWxzIHRoYXQgY2FuIGJlIHRlZGlvdXMKLSAgICAjIGZvciBpdCB0byBhcnJhbmdlLiAgVGhlIGNvbnNlcXVlbmNlcyBjYW4gYmUgZXNwZWNpYWxseSBuYXN0eSBvbiBXaW5kb3dzLAotICAgICMgc2luY2UgaWYgYSB0ZXN0IGxlYXZlcyBhIGZpbGUgb3BlbiwgaXQgY2Fubm90IGJlIGRlbGV0ZWQgYnkgbmFtZSAod2hpbGUKLSAgICAjIHRoZXJlJ3Mgbm90aGluZyB3ZSBjYW4gZG8gYWJvdXQgdGhhdCBoZXJlIGVpdGhlciwgd2UgY2FuIGRpc3BsYXkgdGhlCi0gICAgIyBuYW1lIG9mIHRoZSBvZmZlbmRpbmcgdGVzdCwgd2hpY2ggaXMgYSByZWFsIGhlbHApLgotICAgIGZvciBuYW1lIGluIChzdXBwb3J0LlRFU1RGTiwKLSAgICAgICAgICAgICAgICAgImRiX2hvbWUiLAotICAgICAgICAgICAgICAgICk6Ci0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhuYW1lKToKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgaWYgb3MucGF0aC5pc2RpcihuYW1lKToKLSAgICAgICAgICAgIGtpbmQsIG51a2VyID0gImRpcmVjdG9yeSIsIHNodXRpbC5ybXRyZWUKLSAgICAgICAgZWxpZiBvcy5wYXRoLmlzZmlsZShuYW1lKToKLSAgICAgICAgICAgIGtpbmQsIG51a2VyID0gImZpbGUiLCBvcy51bmxpbmsKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIFN5c3RlbUVycm9yKCJvcy5wYXRoIHNheXMgJXIgZXhpc3RzIGJ1dCBpcyBuZWl0aGVyICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkaXJlY3Rvcnkgbm9yIGZpbGUiICUgbmFtZSkKLQotICAgICAgICBpZiB2ZXJib3NlOgotICAgICAgICAgICAgcHJpbnQoIiVyIGxlZnQgYmVoaW5kICVzICVyIiAlICh0ZXN0bmFtZSwga2luZCwgbmFtZSkpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgICMgaWYgd2UgaGF2ZSBjaG1vZCwgZml4IHBvc3NpYmxlIHBlcm1pc3Npb25zIHByb2JsZW1zCi0gICAgICAgICAgICAjIHRoYXQgbWlnaHQgcHJldmVudCBjbGVhbnVwCi0gICAgICAgICAgICBpZiAoaGFzYXR0cihvcywgJ2NobW9kJykpOgotICAgICAgICAgICAgICAgIG9zLmNobW9kKG5hbWUsIHN0YXQuU19JUldYVSB8IHN0YXQuU19JUldYRyB8IHN0YXQuU19JUldYTykKLSAgICAgICAgICAgIG51a2VyKG5hbWUpCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgbXNnOgotICAgICAgICAgICAgcHJpbnQoKCIlciBsZWZ0IGJlaGluZCAlcyAlciBhbmQgaXQgY291bGRuJ3QgYmUgIgotICAgICAgICAgICAgICAgICJyZW1vdmVkOiAlcyIgJSAodGVzdG5hbWUsIGtpbmQsIG5hbWUsIG1zZykpLCBmaWxlPXN5cy5zdGRlcnIpCi0KLWRlZiBkYXNoX1IodGhlX21vZHVsZSwgdGVzdCwgaW5kaXJlY3RfdGVzdCwgaHVudHJsZWFrcyk6Ci0gICAgIiIiUnVuIGEgdGVzdCBtdWx0aXBsZSB0aW1lcywgbG9va2luZyBmb3IgcmVmZXJlbmNlIGxlYWtzLgotCi0gICAgUmV0dXJuczoKLSAgICAgICAgRmFsc2UgaWYgdGhlIHRlc3QgZGlkbid0IGxlYWsgcmVmZXJlbmNlczsgVHJ1ZSBpZiB3ZSBkZXRlY3RlZCByZWZsZWFrcy4KLSAgICAiIiIKLSAgICAjIFRoaXMgY29kZSBpcyBoYWNraXNoIGFuZCBpbmVsZWdhbnQsIGJ1dCBpdCBzZWVtcyB0byBkbyB0aGUgam9iLgotICAgIGltcG9ydCBjb3B5cmVnCi0gICAgaW1wb3J0IGNvbGxlY3Rpb25zLmFiYwotCi0gICAgaWYgbm90IGhhc2F0dHIoc3lzLCAnZ2V0dG90YWxyZWZjb3VudCcpOgotICAgICAgICByYWlzZSBFeGNlcHRpb24oIlRyYWNraW5nIHJlZmVyZW5jZSBsZWFrcyByZXF1aXJlcyBhIGRlYnVnIGJ1aWxkICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJvZiBQeXRob24iKQotCi0gICAgIyBTYXZlIGN1cnJlbnQgdmFsdWVzIGZvciBkYXNoX1JfY2xlYW51cCgpIHRvIHJlc3RvcmUuCi0gICAgZnMgPSB3YXJuaW5ncy5maWx0ZXJzWzpdCi0gICAgcHMgPSBjb3B5cmVnLmRpc3BhdGNoX3RhYmxlLmNvcHkoKQotICAgIHBpYyA9IHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLmNvcHkoKQotICAgIHRyeToKLSAgICAgICAgaW1wb3J0IHppcGltcG9ydAotICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgemRjID0gTm9uZSAjIFJ1biB1bm1vZGlmaWVkIG9uIHBsYXRmb3JtcyB3aXRob3V0IHppcGltcG9ydCBzdXBwb3J0Ci0gICAgZWxzZToKLSAgICAgICAgemRjID0gemlwaW1wb3J0Ll96aXBfZGlyZWN0b3J5X2NhY2hlLmNvcHkoKQotICAgIGFiY3MgPSB7fQotICAgIGZvciBhYmMgaW4gW2dldGF0dHIoY29sbGVjdGlvbnMuYWJjLCBhKSBmb3IgYSBpbiBjb2xsZWN0aW9ucy5hYmMuX19hbGxfX106Ci0gICAgICAgIGlmIG5vdCBpc2Fic3RyYWN0KGFiYyk6Ci0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBmb3Igb2JqIGluIGFiYy5fX3N1YmNsYXNzZXNfXygpICsgW2FiY106Ci0gICAgICAgICAgICBhYmNzW29ial0gPSBvYmouX2FiY19yZWdpc3RyeS5jb3B5KCkKLQotICAgIG53YXJtdXAsIG50cmFja2VkLCBmbmFtZSA9IGh1bnRybGVha3MKLSAgICBmbmFtZSA9IG9zLnBhdGguam9pbihzdXBwb3J0LlNBVkVEQ1dELCBmbmFtZSkKLSAgICByZXBjb3VudCA9IG53YXJtdXAgKyBudHJhY2tlZAotICAgIHJjX2RlbHRhcyA9IFswXSAqIHJlcGNvdW50Ci0gICAgYWxsb2NfZGVsdGFzID0gWzBdICogcmVwY291bnQKLQotICAgIHByaW50KCJiZWdpbm5pbmciLCByZXBjb3VudCwgInJlcGV0aXRpb25zIiwgZmlsZT1zeXMuc3RkZXJyKQotICAgIHByaW50KCgiMTIzNDU2Nzg5MCIqKHJlcGNvdW50Ly8xMCArIDEpKVs6cmVwY291bnRdLCBmaWxlPXN5cy5zdGRlcnIpCi0gICAgc3lzLnN0ZGVyci5mbHVzaCgpCi0gICAgZm9yIGkgaW4gcmFuZ2UocmVwY291bnQpOgotICAgICAgICBpbmRpcmVjdF90ZXN0KCkKLSAgICAgICAgYWxsb2NfYWZ0ZXIsIHJjX2FmdGVyID0gZGFzaF9SX2NsZWFudXAoZnMsIHBzLCBwaWMsIHpkYywgYWJjcykKLSAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnLicpCi0gICAgICAgIHN5cy5zdGRlcnIuZmx1c2goKQotICAgICAgICBpZiBpID49IG53YXJtdXA6Ci0gICAgICAgICAgICByY19kZWx0YXNbaV0gPSByY19hZnRlciAtIHJjX2JlZm9yZQotICAgICAgICAgICAgYWxsb2NfZGVsdGFzW2ldID0gYWxsb2NfYWZ0ZXIgLSBhbGxvY19iZWZvcmUKLSAgICAgICAgYWxsb2NfYmVmb3JlLCByY19iZWZvcmUgPSBhbGxvY19hZnRlciwgcmNfYWZ0ZXIKLSAgICBwcmludChmaWxlPXN5cy5zdGRlcnIpCi0gICAgIyBUaGVzZSBjaGVja2VycyByZXR1cm4gRmFsc2Ugb24gc3VjY2VzcywgVHJ1ZSBvbiBmYWlsdXJlCi0gICAgZGVmIGNoZWNrX3JjX2RlbHRhcyhkZWx0YXMpOgotICAgICAgICByZXR1cm4gYW55KGRlbHRhcykKLSAgICBkZWYgY2hlY2tfYWxsb2NfZGVsdGFzKGRlbHRhcyk6Ci0gICAgICAgICMgQXQgbGVhc3QgMS8zcmQgb2YgMHMKLSAgICAgICAgaWYgMyAqIGRlbHRhcy5jb3VudCgwKSA8IGxlbihkZWx0YXMpOgotICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgIyBOb3RoaW5nIGVsc2UgdGhhbiAxcywgMHMgYW5kIC0xcwotICAgICAgICBpZiBub3Qgc2V0KGRlbHRhcykgPD0gezEsMCwtMX06Ci0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICByZXR1cm4gRmFsc2UKLSAgICBmYWlsZWQgPSBGYWxzZQotICAgIGZvciBkZWx0YXMsIGl0ZW1fbmFtZSwgY2hlY2tlciBpbiBbCi0gICAgICAgIChyY19kZWx0YXMsICdyZWZlcmVuY2VzJywgY2hlY2tfcmNfZGVsdGFzKSwKLSAgICAgICAgKGFsbG9jX2RlbHRhcywgJ21lbW9yeSBibG9ja3MnLCBjaGVja19hbGxvY19kZWx0YXMpXToKLSAgICAgICAgaWYgY2hlY2tlcihkZWx0YXMpOgotICAgICAgICAgICAgbXNnID0gJyVzIGxlYWtlZCAlcyAlcywgc3VtPSVzJyAlICgKLSAgICAgICAgICAgICAgICB0ZXN0LCBkZWx0YXNbbndhcm11cDpdLCBpdGVtX25hbWUsIHN1bShkZWx0YXMpKQotICAgICAgICAgICAgcHJpbnQobXNnLCBmaWxlPXN5cy5zdGRlcnIpCi0gICAgICAgICAgICBzeXMuc3RkZXJyLmZsdXNoKCkKLSAgICAgICAgICAgIHdpdGggb3BlbihmbmFtZSwgImEiKSBhcyByZWZyZXA6Ci0gICAgICAgICAgICAgICAgcHJpbnQobXNnLCBmaWxlPXJlZnJlcCkKLSAgICAgICAgICAgICAgICByZWZyZXAuZmx1c2goKQotICAgICAgICAgICAgZmFpbGVkID0gVHJ1ZQotICAgIHJldHVybiBmYWlsZWQKLQotZGVmIGRhc2hfUl9jbGVhbnVwKGZzLCBwcywgcGljLCB6ZGMsIGFiY3MpOgotICAgIGltcG9ydCBnYywgY29weXJlZwotICAgIGltcG9ydCBjb2xsZWN0aW9ucy5hYmMKLSAgICBmcm9tIHdlYWtyZWYgaW1wb3J0IFdlYWtTZXQKLQotICAgICMgUmVzdG9yZSBzb21lIG9yaWdpbmFsIHZhbHVlcy4KLSAgICB3YXJuaW5ncy5maWx0ZXJzWzpdID0gZnMKLSAgICBjb3B5cmVnLmRpc3BhdGNoX3RhYmxlLmNsZWFyKCkKLSAgICBjb3B5cmVnLmRpc3BhdGNoX3RhYmxlLnVwZGF0ZShwcykKLSAgICBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS5jbGVhcigpCi0gICAgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUudXBkYXRlKHBpYykKLSAgICB0cnk6Ci0gICAgICAgIGltcG9ydCB6aXBpbXBvcnQKLSAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgIHBhc3MgIyBSdW4gdW5tb2RpZmllZCBvbiBwbGF0Zm9ybXMgd2l0aG91dCB6aXBpbXBvcnQgc3VwcG9ydAotICAgIGVsc2U6Ci0gICAgICAgIHppcGltcG9ydC5femlwX2RpcmVjdG9yeV9jYWNoZS5jbGVhcigpCi0gICAgICAgIHppcGltcG9ydC5femlwX2RpcmVjdG9yeV9jYWNoZS51cGRhdGUoemRjKQotCi0gICAgIyBjbGVhciB0eXBlIGNhY2hlCi0gICAgc3lzLl9jbGVhcl90eXBlX2NhY2hlKCkKLQotICAgICMgQ2xlYXIgQUJDIHJlZ2lzdHJpZXMsIHJlc3RvcmluZyBwcmV2aW91c2x5IHNhdmVkIEFCQyByZWdpc3RyaWVzLgotICAgIGZvciBhYmMgaW4gW2dldGF0dHIoY29sbGVjdGlvbnMuYWJjLCBhKSBmb3IgYSBpbiBjb2xsZWN0aW9ucy5hYmMuX19hbGxfX106Ci0gICAgICAgIGlmIG5vdCBpc2Fic3RyYWN0KGFiYyk6Ci0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBmb3Igb2JqIGluIGFiYy5fX3N1YmNsYXNzZXNfXygpICsgW2FiY106Ci0gICAgICAgICAgICBvYmouX2FiY19yZWdpc3RyeSA9IGFiY3MuZ2V0KG9iaiwgV2Vha1NldCgpKS5jb3B5KCkKLSAgICAgICAgICAgIG9iai5fYWJjX2NhY2hlLmNsZWFyKCkKLSAgICAgICAgICAgIG9iai5fYWJjX25lZ2F0aXZlX2NhY2hlLmNsZWFyKCkKLQotICAgIGNsZWFyX2NhY2hlcygpCi0KLSAgICAjIENvbGxlY3QgY3ljbGljIHRyYXNoIGFuZCByZWFkIG1lbW9yeSBzdGF0aXN0aWNzIGltbWVkaWF0ZWx5IGFmdGVyLgotICAgIGZ1bmMxID0gc3lzLmdldGFsbG9jYXRlZGJsb2NrcwotICAgIGZ1bmMyID0gc3lzLmdldHRvdGFscmVmY291bnQKLSAgICBnYy5jb2xsZWN0KCkKLSAgICByZXR1cm4gZnVuYzEoKSwgZnVuYzIoKQotCi1kZWYgY2xlYXJfY2FjaGVzKCk6Ci0gICAgaW1wb3J0IGdjCi0KLSAgICAjIENsZWFyIHRoZSB3YXJuaW5ncyByZWdpc3RyeSwgc28gdGhleSBjYW4gYmUgZGlzcGxheWVkIGFnYWluCi0gICAgZm9yIG1vZCBpbiBzeXMubW9kdWxlcy52YWx1ZXMoKToKLSAgICAgICAgaWYgaGFzYXR0cihtb2QsICdfX3dhcm5pbmdyZWdpc3RyeV9fJyk6Ci0gICAgICAgICAgICBkZWwgbW9kLl9fd2FybmluZ3JlZ2lzdHJ5X18KLQotICAgICMgRmx1c2ggc3RhbmRhcmQgb3V0cHV0LCBzbyB0aGF0IGJ1ZmZlcmVkIGRhdGEgaXMgc2VudCB0byB0aGUgT1MgYW5kCi0gICAgIyBhc3NvY2lhdGVkIFB5dGhvbiBvYmplY3RzIGFyZSByZWNsYWltZWQuCi0gICAgZm9yIHN0cmVhbSBpbiAoc3lzLnN0ZG91dCwgc3lzLnN0ZGVyciwgc3lzLl9fc3Rkb3V0X18sIHN5cy5fX3N0ZGVycl9fKToKLSAgICAgICAgaWYgc3RyZWFtIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc3RyZWFtLmZsdXNoKCkKLQotICAgICMgQ2xlYXIgYXNzb3J0ZWQgbW9kdWxlIGNhY2hlcy4KLSAgICAjIERvbid0IHdvcnJ5IGFib3V0IHJlc2V0dGluZyB0aGUgY2FjaGUgaWYgdGhlIG1vZHVsZSBpcyBub3QgbG9hZGVkCi0gICAgdHJ5OgotICAgICAgICBkaXN0dXRpbHNfZGlyX3V0aWwgPSBzeXMubW9kdWxlc1snZGlzdHV0aWxzLmRpcl91dGlsJ10KLSAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgIHBhc3MKLSAgICBlbHNlOgotICAgICAgICBkaXN0dXRpbHNfZGlyX3V0aWwuX3BhdGhfY3JlYXRlZC5jbGVhcigpCi0KLSAgICByZS5wdXJnZSgpCi0KLSAgICB0cnk6Ci0gICAgICAgIF9zdHJwdGltZSA9IHN5cy5tb2R1bGVzWydfc3RycHRpbWUnXQotICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgcGFzcwotICAgIGVsc2U6Ci0gICAgICAgIF9zdHJwdGltZS5fcmVnZXhfY2FjaGUuY2xlYXIoKQotCi0gICAgdHJ5OgotICAgICAgICB1cmxsaWJfcGFyc2UgPSBzeXMubW9kdWxlc1sndXJsbGliLnBhcnNlJ10KLSAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgIHBhc3MKLSAgICBlbHNlOgotICAgICAgICB1cmxsaWJfcGFyc2UuY2xlYXJfY2FjaGUoKQotCi0gICAgdHJ5OgotICAgICAgICB1cmxsaWJfcmVxdWVzdCA9IHN5cy5tb2R1bGVzWyd1cmxsaWIucmVxdWVzdCddCi0gICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICBwYXNzCi0gICAgZWxzZToKLSAgICAgICAgdXJsbGliX3JlcXVlc3QudXJsY2xlYW51cCgpCi0KLSAgICB0cnk6Ci0gICAgICAgIGxpbmVjYWNoZSA9IHN5cy5tb2R1bGVzWydsaW5lY2FjaGUnXQotICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgcGFzcwotICAgIGVsc2U6Ci0gICAgICAgIGxpbmVjYWNoZS5jbGVhcmNhY2hlKCkKLQotICAgIHRyeToKLSAgICAgICAgbWltZXR5cGVzID0gc3lzLm1vZHVsZXNbJ21pbWV0eXBlcyddCi0gICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICBwYXNzCi0gICAgZWxzZToKLSAgICAgICAgbWltZXR5cGVzLl9kZWZhdWx0X21pbWVfdHlwZXMoKQotCi0gICAgdHJ5OgotICAgICAgICBmaWxlY21wID0gc3lzLm1vZHVsZXNbJ2ZpbGVjbXAnXQotICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgcGFzcwotICAgIGVsc2U6Ci0gICAgICAgIGZpbGVjbXAuX2NhY2hlLmNsZWFyKCkKLQotICAgIHRyeToKLSAgICAgICAgc3RydWN0ID0gc3lzLm1vZHVsZXNbJ3N0cnVjdCddCi0gICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICBwYXNzCi0gICAgZWxzZToKLSAgICAgICAgc3RydWN0Ll9jbGVhcmNhY2hlKCkKLQotICAgIHRyeToKLSAgICAgICAgZG9jdGVzdCA9IHN5cy5tb2R1bGVzWydkb2N0ZXN0J10KLSAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgIHBhc3MKLSAgICBlbHNlOgotICAgICAgICBkb2N0ZXN0Lm1hc3RlciA9IE5vbmUKLQotICAgIHRyeToKLSAgICAgICAgY3R5cGVzID0gc3lzLm1vZHVsZXNbJ2N0eXBlcyddCi0gICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICBwYXNzCi0gICAgZWxzZToKLSAgICAgICAgY3R5cGVzLl9yZXNldF9jYWNoZSgpCi0KLSAgICB0cnk6Ci0gICAgICAgIHR5cGluZyA9IHN5cy5tb2R1bGVzWyd0eXBpbmcnXQotICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgcGFzcwotICAgIGVsc2U6Ci0gICAgICAgIGZvciBmIGluIHR5cGluZy5fY2xlYW51cHM6Ci0gICAgICAgICAgICBmKCkKLQotICAgIGdjLmNvbGxlY3QoKQotCi1kZWYgd2FybV9jYWNoZXMoKToKLSAgICAjIGNoYXIgY2FjaGUKLSAgICBzID0gYnl0ZXMocmFuZ2UoMjU2KSkKLSAgICBmb3IgaSBpbiByYW5nZSgyNTYpOgotICAgICAgICBzW2k6aSsxXQotICAgICMgdW5pY29kZSBjYWNoZQotICAgIHggPSBbY2hyKGkpIGZvciBpIGluIHJhbmdlKDI1NildCi0gICAgIyBpbnQgY2FjaGUKLSAgICB4ID0gbGlzdChyYW5nZSgtNSwgMjU3KSkKLQotZGVmIGZpbmR0ZXN0ZGlyKHBhdGg9Tm9uZSk6Ci0gICAgcmV0dXJuIHBhdGggb3Igb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSBvciBvcy5jdXJkaXIKLQotZGVmIHJlbW92ZXB5KG5hbWVzKToKLSAgICBpZiBub3QgbmFtZXM6Ci0gICAgICAgIHJldHVybgotICAgIGZvciBpZHgsIG5hbWUgaW4gZW51bWVyYXRlKG5hbWVzKToKLSAgICAgICAgYmFzZW5hbWUsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQobmFtZSkKLSAgICAgICAgaWYgZXh0ID09ICcucHknOgotICAgICAgICAgICAgbmFtZXNbaWR4XSA9IGJhc2VuYW1lCi0KLWRlZiBjb3VudChuLCB3b3JkKToKLSAgICBpZiBuID09IDE6Ci0gICAgICAgIHJldHVybiAiJWQgJXMiICUgKG4sIHdvcmQpCi0gICAgZWxzZToKLSAgICAgICAgcmV0dXJuICIlZCAlc3MiICUgKG4sIHdvcmQpCi0KLWRlZiBwcmludGxpc3QoeCwgd2lkdGg9NzAsIGluZGVudD00KToKLSAgICAiIiJQcmludCB0aGUgZWxlbWVudHMgb2YgaXRlcmFibGUgeCB0byBzdGRvdXQuCi0KLSAgICBPcHRpb25hbCBhcmcgd2lkdGggKGRlZmF1bHQgNzApIGlzIHRoZSBtYXhpbXVtIGxpbmUgbGVuZ3RoLgotICAgIE9wdGlvbmFsIGFyZyBpbmRlbnQgKGRlZmF1bHQgNCkgaXMgdGhlIG51bWJlciBvZiBibGFua3Mgd2l0aCB3aGljaCB0bwotICAgIGJlZ2luIGVhY2ggbGluZS4KLSAgICAiIiIKLQotICAgIGZyb20gdGV4dHdyYXAgaW1wb3J0IGZpbGwKLSAgICBibGFua3MgPSAnICcgKiBpbmRlbnQKLSAgICAjIFByaW50IHRoZSBzb3J0ZWQgbGlzdDogJ3gnIG1heSBiZSBhICctLXJhbmRvbScgbGlzdCBvciBhIHNldCgpCi0gICAgcHJpbnQoZmlsbCgnICcuam9pbihzdHIoZWx0KSBmb3IgZWx0IGluIHNvcnRlZCh4KSksIHdpZHRoLAotICAgICAgICAgICAgICAgaW5pdGlhbF9pbmRlbnQ9YmxhbmtzLCBzdWJzZXF1ZW50X2luZGVudD1ibGFua3MpKQotCi0KLWRlZiBtYWluX2luX3RlbXBfY3dkKCk6Ci0gICAgIiIiUnVuIG1haW4oKSBpbiBhIHRlbXBvcmFyeSB3b3JraW5nIGRpcmVjdG9yeS4iIiIKLSAgICBpZiBzeXNjb25maWcuaXNfcHl0aG9uX2J1aWxkKCk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG9zLm1rZGlyKFRFTVBESVIpCi0gICAgICAgIGV4Y2VwdCBGaWxlRXhpc3RzRXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0KLSAgICAjIERlZmluZSBhIHdyaXRhYmxlIHRlbXAgZGlyIHRoYXQgd2lsbCBiZSB1c2VkIGFzIGN3ZCB3aGlsZSBydW5uaW5nCi0gICAgIyB0aGUgdGVzdHMuIFRoZSBuYW1lIG9mIHRoZSBkaXIgaW5jbHVkZXMgdGhlIHBpZCB0byBhbGxvdyBwYXJhbGxlbAotICAgICMgdGVzdGluZyAoc2VlIHRoZSAtaiBvcHRpb24pLgotICAgIHRlc3RfY3dkID0gJ3Rlc3RfcHl0aG9uX3t9Jy5mb3JtYXQob3MuZ2V0cGlkKCkpCi0gICAgdGVzdF9jd2QgPSBvcy5wYXRoLmpvaW4oVEVNUERJUiwgdGVzdF9jd2QpCi0KLSAgICAjIFJ1biB0aGUgdGVzdHMgaW4gYSBjb250ZXh0IG1hbmFnZXIgdGhhdCB0ZW1wb3JhcmlseSBjaGFuZ2VzIHRoZSBDV0QgdG8gYQotICAgICMgdGVtcG9yYXJ5IGFuZCB3cml0YWJsZSBkaXJlY3RvcnkuICBJZiBpdCdzIG5vdCBwb3NzaWJsZSB0byBjcmVhdGUgb3IKLSAgICAjIGNoYW5nZSB0aGUgQ1dELCB0aGUgb3JpZ2luYWwgQ1dEIHdpbGwgYmUgdXNlZC4gIFRoZSBvcmlnaW5hbCBDV0QgaXMKLSAgICAjIGF2YWlsYWJsZSBmcm9tIHN1cHBvcnQuU0FWRURDV0QuCi0gICAgd2l0aCBzdXBwb3J0LnRlbXBfY3dkKHRlc3RfY3dkLCBxdWlldD1UcnVlKToKLSAgICAgICAgbWFpbigpCi0KK2RlZiBfbWFpbigpOgorICAgIGdsb2JhbCBfX2ZpbGVfXwogCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgICMgUmVtb3ZlIHJlZ3J0ZXN0LnB5J3Mgb3duIGRpcmVjdG9yeSBmcm9tIHRoZSBtb2R1bGUgc2VhcmNoIHBhdGguIERlc3BpdGUKICAgICAjIHRoZSBlbGltaW5hdGlvbiBvZiBpbXBsaWNpdCByZWxhdGl2ZSBpbXBvcnRzLCB0aGlzIGlzIHN0aWxsIG5lZWRlZCB0bwogICAgICMgZW5zdXJlIHRoYXQgc3VibW9kdWxlcyBvZiB0aGUgdGVzdCBwYWNrYWdlIGRvIG5vdCBpbmFwcHJvcHJpYXRlbHkgYXBwZWFyCiAgICAgIyBhcyB0b3AtbGV2ZWwgbW9kdWxlcyBldmVuIHdoZW4gcGVvcGxlIChvciBidWlsZGJvdHMhKSBpbnZva2UgcmVncnRlc3QucHkKICAgICAjIGRpcmVjdGx5IGluc3RlYWQgb2YgdXNpbmcgdGhlIC1tIHN3aXRjaAogICAgIG15ZGlyID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGgubm9ybXBhdGgob3MucGF0aC5kaXJuYW1lKHN5cy5hcmd2WzBdKSkpCi0gICAgaSA9IGxlbihzeXMucGF0aCkKKyAgICBpID0gbGVuKHN5cy5wYXRoKSAtIDEKICAgICB3aGlsZSBpID49IDA6Ci0gICAgICAgIGkgLT0gMQogICAgICAgICBpZiBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5ub3JtcGF0aChzeXMucGF0aFtpXSkpID09IG15ZGlyOgogICAgICAgICAgICAgZGVsIHN5cy5wYXRoW2ldCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpIC09IDEKIAogICAgICMgZmluZHRlc3RkaXIoKSBnZXRzIHRoZSBkaXJuYW1lIG91dCBvZiBfX2ZpbGVfXywgc28gd2UgaGF2ZSB0byBtYWtlIGl0CiAgICAgIyBhYnNvbHV0ZSBiZWZvcmUgY2hhbmdpbmcgdGhlIHdvcmtpbmcgZGlyZWN0b3J5LgpAQCAtMTY4MCw0ICs0Myw4IEBACiAgICAgIyBzYW5pdHkgY2hlY2sKICAgICBhc3NlcnQgX19maWxlX18gPT0gb3MucGF0aC5hYnNwYXRoKHN5cy5hcmd2WzBdKQogCi0gICAgbWFpbl9pbl90ZW1wX2N3ZCgpCisgICAgbWFpbigpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9zZXFfdGVzdHMucHkgYi9MaWIvdGVzdC9zZXFfdGVzdHMucHkKaW5kZXggNzJmNDg0NS4uMWU3YTZmNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3Qvc2VxX3Rlc3RzLnB5CisrKyBiL0xpYi90ZXN0L3NlcV90ZXN0cy5weQpAQCAtMzE4LDcgKzMxOCw2IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlkKHMpLCBpZChzKjEpKQogCiAgICAgZGVmIHRlc3RfYmlncmVwZWF0KHNlbGYpOgotICAgICAgICBpbXBvcnQgc3lzCiAgICAgICAgIGlmIHN5cy5tYXhzaXplIDw9IDIxNDc0ODM2NDc6CiAgICAgICAgICAgICB4ID0gc2VsZi50eXBlMnRlc3QoWzBdKQogICAgICAgICAgICAgeCAqPSAyKioxNgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3Qvc2lnbmFsaW50ZXJwcm9jdGVzdGVyLnB5IGIvTGliL3Rlc3Qvc2lnbmFsaW50ZXJwcm9jdGVzdGVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzYWUxNzAKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9zaWduYWxpbnRlcnByb2N0ZXN0ZXIucHkKQEAgLTAsMCArMSw4NCBAQAoraW1wb3J0IG9zCitpbXBvcnQgc2lnbmFsCitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHN5cworaW1wb3J0IHRpbWUKK2ltcG9ydCB1bml0dGVzdAorCisKK2NsYXNzIFNJR1VTUjFFeGNlcHRpb24oRXhjZXB0aW9uKToKKyAgICBwYXNzCisKKworY2xhc3MgSW50ZXJQcm9jZXNzU2lnbmFsVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5nb3Rfc2lnbmFscyA9IHsnU0lHSFVQJzogMCwgJ1NJR1VTUjEnOiAwLCAnU0lHQUxSTSc6IDB9CisKKyAgICBkZWYgc2lnaHVwX2hhbmRsZXIoc2VsZiwgc2lnbnVtLCBmcmFtZSk6CisgICAgICAgIHNlbGYuZ290X3NpZ25hbHNbJ1NJR0hVUCddICs9IDEKKworICAgIGRlZiBzaWd1c3IxX2hhbmRsZXIoc2VsZiwgc2lnbnVtLCBmcmFtZSk6CisgICAgICAgIHNlbGYuZ290X3NpZ25hbHNbJ1NJR1VTUjEnXSArPSAxCisgICAgICAgIHJhaXNlIFNJR1VTUjFFeGNlcHRpb24KKworICAgIGRlZiB3YWl0X3NpZ25hbChzZWxmLCBjaGlsZCwgc2lnbmFtZSwgZXhjX2NsYXNzPU5vbmUpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiBjaGlsZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAjIFRoaXMgd2FpdCBzaG91bGQgYmUgaW50ZXJydXB0ZWQgYnkgZXhjX2NsYXNzCisgICAgICAgICAgICAgICAgIyAoaWYgc2V0KQorICAgICAgICAgICAgICAgIGNoaWxkLndhaXQoKQorCisgICAgICAgICAgICB0aW1lb3V0ID0gMTAuMAorICAgICAgICAgICAgZGVhZGxpbmUgPSB0aW1lLm1vbm90b25pYygpICsgdGltZW91dAorCisgICAgICAgICAgICB3aGlsZSB0aW1lLm1vbm90b25pYygpIDwgZGVhZGxpbmU6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5nb3Rfc2lnbmFsc1tzaWduYW1lXToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICAgICAgc2lnbmFsLnBhdXNlKCkKKyAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb24gYXMgZXhjOgorICAgICAgICAgICAgaWYgZXhjX2NsYXNzIGlzIG5vdCBOb25lIGFuZCBpc2luc3RhbmNlKGV4YywgZXhjX2NsYXNzKToKKyAgICAgICAgICAgICAgICAjIGdvdCB0aGUgZXhwZWN0ZWQgZXhjZXB0aW9uCisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICByYWlzZQorCisgICAgICAgIHNlbGYuZmFpbCgnc2lnbmFsICVzIG5vdCByZWNlaXZlZCBhZnRlciAlcyBzZWNvbmRzJworICAgICAgICAgICAgICAgICAgJSAoc2lnbmFtZSwgdGltZW91dCkpCisKKyAgICBkZWYgc3VicHJvY2Vzc19zZW5kX3NpZ25hbChzZWxmLCBwaWQsIHNpZ25hbWUpOgorICAgICAgICBjb2RlID0gJ2ltcG9ydCBvcywgc2lnbmFsOyBvcy5raWxsKCVzLCBzaWduYWwuJXMpJyAlIChwaWQsIHNpZ25hbWUpCisgICAgICAgIGFyZ3MgPSBbc3lzLmV4ZWN1dGFibGUsICctSScsICctYycsIGNvZGVdCisgICAgICAgIHJldHVybiBzdWJwcm9jZXNzLlBvcGVuKGFyZ3MpCisKKyAgICBkZWYgdGVzdF9pbnRlcnByb2Nlc3Nfc2lnbmFsKHNlbGYpOgorICAgICAgICAjIEluc3RhbGwgaGFuZGxlcnMuIFRoaXMgZnVuY3Rpb24gcnVucyBpbiBhIHN1Yi1wcm9jZXNzLCBzbyB3ZQorICAgICAgICAjIGRvbid0IHdvcnJ5IGFib3V0IHJlLXNldHRpbmcgdGhlIGRlZmF1bHQgaGFuZGxlcnMuCisgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0hVUCwgc2VsZi5zaWdodXBfaGFuZGxlcikKKyAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHVVNSMSwgc2VsZi5zaWd1c3IxX2hhbmRsZXIpCisgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR1VTUjIsIHNpZ25hbC5TSUdfSUdOKQorICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdBTFJNLCBzaWduYWwuZGVmYXVsdF9pbnRfaGFuZGxlcikKKworICAgICAgICAjIExldCB0aGUgc3ViLXByb2Nlc3NlcyBrbm93IHdobyB0byBzZW5kIHNpZ25hbHMgdG8uCisgICAgICAgIHBpZCA9IHN0cihvcy5nZXRwaWQoKSkKKworICAgICAgICB3aXRoIHNlbGYuc3VicHJvY2Vzc19zZW5kX3NpZ25hbChwaWQsICJTSUdIVVAiKSBhcyBjaGlsZDoKKyAgICAgICAgICAgIHNlbGYud2FpdF9zaWduYWwoY2hpbGQsICdTSUdIVVAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ290X3NpZ25hbHMsIHsnU0lHSFVQJzogMSwgJ1NJR1VTUjEnOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU0lHQUxSTSc6IDB9KQorCisgICAgICAgIHdpdGggc2VsZi5zdWJwcm9jZXNzX3NlbmRfc2lnbmFsKHBpZCwgIlNJR1VTUjEiKSBhcyBjaGlsZDoKKyAgICAgICAgICAgIHNlbGYud2FpdF9zaWduYWwoY2hpbGQsICdTSUdVU1IxJywgU0lHVVNSMUV4Y2VwdGlvbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdvdF9zaWduYWxzLCB7J1NJR0hVUCc6IDEsICdTSUdVU1IxJzogMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1NJR0FMUk0nOiAwfSkKKworICAgICAgICB3aXRoIHNlbGYuc3VicHJvY2Vzc19zZW5kX3NpZ25hbChwaWQsICJTSUdVU1IyIikgYXMgY2hpbGQ6CisgICAgICAgICAgICAjIE5vdGhpbmcgc2hvdWxkIGhhcHBlbjogU0lHVVNSMiBpcyBpZ25vcmVkCisgICAgICAgICAgICBjaGlsZC53YWl0KCkKKworICAgICAgICBzaWduYWwuYWxhcm0oMSkKKyAgICAgICAgc2VsZi53YWl0X3NpZ25hbChOb25lLCAnU0lHQUxSTScsIEtleWJvYXJkSW50ZXJydXB0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ290X3NpZ25hbHMsIHsnU0lHSFVQJzogMSwgJ1NJR1VTUjEnOiAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU0lHQUxSTSc6IDB9KQorCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9zb3J0cGVyZi5weSBiL0xpYi90ZXN0L3NvcnRwZXJmLnB5CmluZGV4IDkwNzIyZjcuLjE3MWU1Y2UgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3NvcnRwZXJmLnB5CisrKyBiL0xpYi90ZXN0L3NvcnRwZXJmLnB5CkBAIC02NCw3ICs2NCw3IEBACiAgICAgZmx1c2goKQogCiBkZWYgdGFidWxhdGUocik6Ci0gICAgIiIiVGFidWxhdGUgc29ydCBzcGVlZCBmb3IgbGlzdHMgb2YgdmFyaW91cyBzaXplcy4KKyAgICByIiIiVGFidWxhdGUgc29ydCBzcGVlZCBmb3IgbGlzdHMgb2YgdmFyaW91cyBzaXplcy4KIAogICAgIFRoZSBzaXplcyBhcmUgMioqaSBmb3IgaSBpbiByICh0aGUgYXJndW1lbnQsIGEgbGlzdCkuCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3N1cHBvcnQvX19pbml0X18ucHkgYi9MaWIvdGVzdC9zdXBwb3J0L19faW5pdF9fLnB5CmluZGV4IGQwZDEyNmEuLjE1ZDhmYzggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3N1cHBvcnQvX19pbml0X18ucHkKKysrIGIvTGliL3Rlc3Qvc3VwcG9ydC9fX2luaXRfXy5weQpAQCAtMjYsNiArMjYsNyBAQAogaW1wb3J0IHN5c2NvbmZpZwogaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgdGltZQoraW1wb3J0IHR5cGVzCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB1cmxsaWIuZXJyb3IKIGltcG9ydCB3YXJuaW5ncwpAQCAtODksMTEgKzkwLDEzIEBACiAgICAgImJpZ21lbXRlc3QiLCAiYmlnYWRkcnNwYWNldGVzdCIsICJjcHl0aG9uX29ubHkiLCAiZ2V0X2F0dHJpYnV0ZSIsCiAgICAgInJlcXVpcmVzX0lFRUVfNzU0IiwgInNraXBfdW5sZXNzX3hhdHRyIiwgInJlcXVpcmVzX3psaWIiLAogICAgICJhbnRpY2lwYXRlX2ZhaWx1cmUiLCAibG9hZF9wYWNrYWdlX3Rlc3RzIiwgImRldGVjdF9hcGlfbWlzbWF0Y2giLAotICAgICAicmVxdWlyZXNfbXVsdGlwcm9jZXNzaW5nX3F1ZXVlIiwKKyAgICAiY2hlY2tfX2FsbF9fIiwgInJlcXVpcmVzX2FuZHJvaWRfbGV2ZWwiLCAicmVxdWlyZXNfbXVsdGlwcm9jZXNzaW5nX3F1ZXVlIiwKICAgICAjIHN5cwotICAgICJpc19qeXRob24iLCAiY2hlY2tfaW1wbF9kZXRhaWwiLAorICAgICJpc19qeXRob24iLCAiaXNfYW5kcm9pZCIsICJjaGVja19pbXBsX2RldGFpbCIsICJ1bml4X3NoZWxsIiwKKyAgICAic2V0c3dpdGNoaW50ZXJ2YWwiLCAiYW5kcm9pZF9ub3Rfcm9vdCIsCiAgICAgIyBuZXR3b3JrCiAgICAgIkhPU1QiLCAiSVBWNl9FTkFCTEVEIiwgImZpbmRfdW51c2VkX3BvcnQiLCAiYmluZF9wb3J0IiwgIm9wZW5fdXJscmVzb3VyY2UiLAorICAgICJiaW5kX3VuaXhfc29ja2V0IiwKICAgICAjIHByb2Nlc3NlcwogICAgICd0ZW1wX3VtYXNrJywgInJlYXBfY2hpbGRyZW4iLAogICAgICMgbG9nZ2luZwpAQCAtMTA0LDcgKzEwNyw3IEBACiAgICAgImNoZWNrX3dhcm5pbmdzIiwgImNoZWNrX25vX3Jlc291cmNlX3dhcm5pbmciLCAiRW52aXJvbm1lbnRWYXJHdWFyZCIsCiAgICAgInJ1bl93aXRoX2xvY2FsZSIsICJzd2FwX2l0ZW0iLAogICAgICJzd2FwX2F0dHIiLCAiTWF0Y2hlciIsICJzZXRfbWVtbGltaXQiLCAiU3VwcHJlc3NDcmFzaFJlcG9ydCIsICJzb3J0ZGljdCIsCi0gICAgInJ1bl93aXRoX3R6IiwKKyAgICAicnVuX3dpdGhfdHoiLCAiUEdPIiwgIm1pc3NpbmdfY29tcGlsZXJfZXhlY3V0YWJsZSIsCiAgICAgXQogCiBjbGFzcyBFcnJvcihFeGNlcHRpb24pOgpAQCAtNzA2LDYgKzcwOSwxNSBAQAogICAgIHBvcnQgPSBzb2NrLmdldHNvY2tuYW1lKClbMV0KICAgICByZXR1cm4gcG9ydAogCitkZWYgYmluZF91bml4X3NvY2tldChzb2NrLCBhZGRyKToKKyAgICAiIiJCaW5kIGEgdW5peCBzb2NrZXQsIHJhaXNpbmcgU2tpcFRlc3QgaWYgUGVybWlzc2lvbkVycm9yIGlzIHJhaXNlZC4iIiIKKyAgICBhc3NlcnQgc29jay5mYW1pbHkgPT0gc29ja2V0LkFGX1VOSVgKKyAgICB0cnk6CisgICAgICAgIHNvY2suYmluZChhZGRyKQorICAgIGV4Y2VwdCBQZXJtaXNzaW9uRXJyb3I6CisgICAgICAgIHNvY2suY2xvc2UoKQorICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgnY2Fubm90IGJpbmQgQUZfVU5JWCBzb2NrZXRzJykKKwogZGVmIF9pc19pcHY2X2VuYWJsZWQoKToKICAgICAiIiJDaGVjayB3aGV0aGVyIElQdjYgaXMgZW5hYmxlZCBvbiB0aGlzIGhvc3QuIiIiCiAgICAgaWYgc29ja2V0Lmhhc19pcHY2OgpAQCAtNzY1LDYgKzc3NywxNSBAQAogCiBpc19qeXRob24gPSBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnamF2YScpCiAKK19BTkRST0lEX0FQSV9MRVZFTCA9IHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignQU5EUk9JRF9BUElfTEVWRUwnKQoraXNfYW5kcm9pZCA9IChfQU5EUk9JRF9BUElfTEVWRUwgaXMgbm90IE5vbmUgYW5kIF9BTkRST0lEX0FQSV9MRVZFTCA+IDApCithbmRyb2lkX25vdF9yb290ID0gKGlzX2FuZHJvaWQgYW5kIG9zLmdldGV1aWQoKSAhPSAwKQorCitpZiBzeXMucGxhdGZvcm0gIT0gJ3dpbjMyJzoKKyAgICB1bml4X3NoZWxsID0gJy9zeXN0ZW0vYmluL3NoJyBpZiBpc19hbmRyb2lkIGVsc2UgJy9iaW4vc2gnCitlbHNlOgorICAgIHVuaXhfc2hlbGwgPSBOb25lCisKICMgRmlsZW5hbWUgdXNlZCBmb3IgdGVzdGluZwogaWYgb3MubmFtZSA9PSAnamF2YSc6CiAgICAgIyBKeXRob24gZGlzYWxsb3dzIEAgaW4gbW9kdWxlIG5hbWVzCkBAIC04MzQsNyArODU1LDcgQEAKICMgZW5jb2RlZCBieSB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZyAoaW4gc3RyaWN0IG1vZGUpLiBJdCBjYW4gYmUgTm9uZSBpZiB3ZQogIyBjYW5ub3QgZ2VuZXJhdGUgc3VjaCBmaWxlbmFtZS4KIFRFU1RGTl9VTkVOQ09EQUJMRSA9IE5vbmUKLWlmIG9zLm5hbWUgaW4gKCdudCcsICdjZScpOgoraWYgb3MubmFtZSA9PSAnbnQnOgogICAgICMgc2tpcCB3aW4zMnMgKDApIG9yIFdpbmRvd3MgOXgvTUUgKDEpCiAgICAgaWYgc3lzLmdldHdpbmRvd3N2ZXJzaW9uKCkucGxhdGZvcm0gPj0gMjoKICAgICAgICAgIyBEaWZmZXJlbnQga2luZHMgb2YgY2hhcmFjdGVycyBmcm9tIHZhcmlvdXMgbGFuZ3VhZ2VzIHRvIG1pbmltaXplIHRoZQpAQCAtOTAxLDYgKzkyMiwxMCBAQAogIyBTYXZlIHRoZSBpbml0aWFsIGN3ZAogU0FWRURDV0QgPSBvcy5nZXRjd2QoKQogCisjIFNldCBieSBsaWJyZWdydGVzdC9tYWluLnB5IHNvIHdlIGNhbiBza2lwIHRlc3RzIHRoYXQgYXJlIG5vdAorIyB1c2VmdWwgZm9yIFBHTworUEdPID0gRmFsc2UKKwogQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKIGRlZiB0ZW1wX2RpcihwYXRoPU5vbmUsIHF1aWV0PUZhbHNlKToKICAgICAiIiJSZXR1cm4gYSBjb250ZXh0IG1hbmFnZXIgdGhhdCBjcmVhdGVzIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeS4KQEAgLTE3NTEsNiArMTc3NiwxMyBAQAogICAgIGVsc2U6CiAgICAgICAgIHJldHVybiB1bml0dGVzdC5za2lwKCJyZXNvdXJjZSB7MCFyfSBpcyBub3QgZW5hYmxlZCIuZm9ybWF0KHJlc291cmNlKSkKIAorZGVmIHJlcXVpcmVzX2FuZHJvaWRfbGV2ZWwobGV2ZWwsIHJlYXNvbik6CisgICAgaWYgaXNfYW5kcm9pZCBhbmQgX0FORFJPSURfQVBJX0xFVkVMIDwgbGV2ZWw6CisgICAgICAgIHJldHVybiB1bml0dGVzdC5za2lwKCclcyBhdCBBbmRyb2lkIEFQSSBsZXZlbCAlZCcgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVhc29uLCBfQU5EUk9JRF9BUElfTEVWRUwpKQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiBfaWQKKwogZGVmIGNweXRob25fb25seSh0ZXN0KToKICAgICAiIiIKICAgICBEZWNvcmF0b3IgZm9yIHRlc3RzIG9ubHkgYXBwbGljYWJsZSBvbiBDUHl0aG9uLgpAQCAtMjEzMyw2ICsyMTY1LDExIEBACiAgICAgc2V0dGluZ3MgaW4gc3lzLmZsYWdzIGFuZCBzeXMud2Fybm9wdGlvbnMuIiIiCiAgICAgcmV0dXJuIHN1YnByb2Nlc3MuX2FyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncygpCiAKK2RlZiBvcHRpbV9hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKToKKyAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIGNvbW1hbmQtbGluZSBhcmd1bWVudHMgcmVwcm9kdWNpbmcgdGhlIGN1cnJlbnQKKyAgICBvcHRpbWl6YXRpb24gc2V0dGluZ3MgaW4gc3lzLmZsYWdzLiIiIgorICAgIHJldHVybiBzdWJwcm9jZXNzLl9vcHRpbV9hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKQorCiAjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAjIFN1cHBvcnQgZm9yIGFzc2VydGlvbnMgYWJvdXQgbG9nZ2luZy4KICM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQEAgLTIyMzksNyArMjI3Niw3IEBACiAgICAgICAgICAgICAgICAgICAgIG9zLnNldHhhdHRyKGZwLmZpbGVubygpLCBiInVzZXIudGVzdCIsIGIiIikKICAgICAgICAgICAgICAgICAgICAgIyBLZXJuZWxzIDwgMi42LjM5IGRvbid0IHJlc3BlY3Qgc2V0eGF0dHIgZmxhZ3MuCiAgICAgICAgICAgICAgICAgICAgIGtlcm5lbF92ZXJzaW9uID0gcGxhdGZvcm0ucmVsZWFzZSgpCi0gICAgICAgICAgICAgICAgICAgIG0gPSByZS5tYXRjaCgiMi42LihcZHsxLDJ9KSIsIGtlcm5lbF92ZXJzaW9uKQorICAgICAgICAgICAgICAgICAgICBtID0gcmUubWF0Y2gociIyLjYuKFxkezEsMn0pIiwga2VybmVsX3ZlcnNpb24pCiAgICAgICAgICAgICAgICAgICAgIGNhbiA9IG0gaXMgTm9uZSBvciBpbnQobS5ncm91cCgxKSkgPj0gMzkKICAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgY2FuID0gRmFsc2UKQEAgLTIyODQsNiArMjMyMSw2NSBAQAogICAgIHJldHVybiBtaXNzaW5nX2l0ZW1zCiAKIAorZGVmIGNoZWNrX19hbGxfXyh0ZXN0X2Nhc2UsIG1vZHVsZSwgbmFtZV9vZl9tb2R1bGU9Tm9uZSwgZXh0cmE9KCksCisgICAgICAgICAgICAgICAgIGJsYWNrbGlzdD0oKSk6CisgICAgIiIiQXNzZXJ0IHRoYXQgdGhlIF9fYWxsX18gdmFyaWFibGUgb2YgJ21vZHVsZScgY29udGFpbnMgYWxsIHB1YmxpYyBuYW1lcy4KKworICAgIFRoZSBtb2R1bGUncyBwdWJsaWMgbmFtZXMgKGl0cyBBUEkpIGFyZSBkZXRlY3RlZCBhdXRvbWF0aWNhbGx5IGJhc2VkIG9uCisgICAgd2hldGhlciB0aGV5IG1hdGNoIHRoZSBwdWJsaWMgbmFtZSBjb252ZW50aW9uIGFuZCB3ZXJlIGRlZmluZWQgaW4KKyAgICAnbW9kdWxlJy4KKworICAgIFRoZSAnbmFtZV9vZl9tb2R1bGUnIGFyZ3VtZW50IGNhbiBzcGVjaWZ5IChhcyBhIHN0cmluZyBvciB0dXBsZSB0aGVyZW9mKQorICAgIHdoYXQgbW9kdWxlKHMpIGFuIEFQSSBjb3VsZCBiZSBkZWZpbmVkIGluIGluIG9yZGVyIHRvIGJlIGRldGVjdGVkIGFzIGEKKyAgICBwdWJsaWMgQVBJLiBPbmUgY2FzZSBmb3IgdGhpcyBpcyB3aGVuICdtb2R1bGUnIGltcG9ydHMgcGFydCBvZiBpdHMgcHVibGljCisgICAgQVBJIGZyb20gb3RoZXIgbW9kdWxlcywgcG9zc2libHkgYSBDIGJhY2tlbmQgKGxpa2UgJ2NzdicgYW5kIGl0cyAnX2NzdicpLgorCisgICAgVGhlICdleHRyYScgYXJndW1lbnQgY2FuIGJlIGEgc2V0IG9mIG5hbWVzIHRoYXQgd291bGRuJ3Qgb3RoZXJ3aXNlIGJlCisgICAgYXV0b21hdGljYWxseSBkZXRlY3RlZCBhcyAicHVibGljIiwgbGlrZSBvYmplY3RzIHdpdGhvdXQgYSBwcm9wZXIKKyAgICAnX19tb2R1bGVfXycgYXR0cml1YnV0ZS4gSWYgcHJvdmlkZWQsIGl0IHdpbGwgYmUgYWRkZWQgdG8gdGhlCisgICAgYXV0b21hdGljYWxseSBkZXRlY3RlZCBvbmVzLgorCisgICAgVGhlICdibGFja2xpc3QnIGFyZ3VtZW50IGNhbiBiZSBhIHNldCBvZiBuYW1lcyB0aGF0IG11c3Qgbm90IGJlIHRyZWF0ZWQKKyAgICBhcyBwYXJ0IG9mIHRoZSBwdWJsaWMgQVBJIGV2ZW4gdGhvdWdoIHRoZWlyIG5hbWVzIGluZGljYXRlIG90aGVyd2lzZS4KKworICAgIFVzYWdlOgorICAgICAgICBpbXBvcnQgYmFyCisgICAgICAgIGltcG9ydCBmb28KKyAgICAgICAgaW1wb3J0IHVuaXR0ZXN0CisgICAgICAgIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorCisgICAgICAgIGNsYXNzIE1pc2NUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgICAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgZm9vKQorCisgICAgICAgIGNsYXNzIE90aGVyVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIGV4dHJhID0geydCQVJfQ09OU1QnLCAnRk9PX0NPTlNUJ30KKyAgICAgICAgICAgICAgICBibGFja2xpc3QgPSB7J2Jheid9ICAjIFVuZG9jdW1lbnRlZCBuYW1lLgorICAgICAgICAgICAgICAgICMgYmFyIGltcG9ydHMgcGFydCBvZiBpdHMgQVBJIGZyb20gX2Jhci4KKyAgICAgICAgICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCBiYXIsICgnYmFyJywgJ19iYXInKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYT1leHRyYSwgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKworICAgICIiIgorCisgICAgaWYgbmFtZV9vZl9tb2R1bGUgaXMgTm9uZToKKyAgICAgICAgbmFtZV9vZl9tb2R1bGUgPSAobW9kdWxlLl9fbmFtZV9fLCApCisgICAgZWxpZiBpc2luc3RhbmNlKG5hbWVfb2ZfbW9kdWxlLCBzdHIpOgorICAgICAgICBuYW1lX29mX21vZHVsZSA9IChuYW1lX29mX21vZHVsZSwgKQorCisgICAgZXhwZWN0ZWQgPSBzZXQoZXh0cmEpCisKKyAgICBmb3IgbmFtZSBpbiBkaXIobW9kdWxlKToKKyAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKCdfJykgb3IgbmFtZSBpbiBibGFja2xpc3Q6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBvYmogPSBnZXRhdHRyKG1vZHVsZSwgbmFtZSkKKyAgICAgICAgaWYgKGdldGF0dHIob2JqLCAnX19tb2R1bGVfXycsIE5vbmUpIGluIG5hbWVfb2ZfbW9kdWxlIG9yCisgICAgICAgICAgICAgICAgKG5vdCBoYXNhdHRyKG9iaiwgJ19fbW9kdWxlX18nKSBhbmQKKyAgICAgICAgICAgICAgICAgbm90IGlzaW5zdGFuY2Uob2JqLCB0eXBlcy5Nb2R1bGVUeXBlKSkpOgorICAgICAgICAgICAgZXhwZWN0ZWQuYWRkKG5hbWUpCisgICAgdGVzdF9jYXNlLmFzc2VydENvdW50RXF1YWwobW9kdWxlLl9fYWxsX18sIGV4cGVjdGVkKQorCisKIGNsYXNzIFN1cHByZXNzQ3Jhc2hSZXBvcnQ6CiAgICAgIiIiVHJ5IHRvIHByZXZlbnQgYSBjcmFzaCByZXBvcnQgZnJvbSBwb3BwaW5nIHVwLgogCkBAIC0yNDQ1LDMgKzI1NDEsNDMgQEAKICAgICAjIFRoZSBzZXF1ZW5jZSBzaG91bGQgYmUgZGVhbGxvY2F0ZWQganVzdCBhZnRlciB0aGUgZW5kIG9mIGl0ZXJhdGluZwogICAgIGdjX2NvbGxlY3QoKQogICAgIHRlc3QuYXNzZXJ0VHJ1ZShkb25lKQorCisKK2RlZiBtaXNzaW5nX2NvbXBpbGVyX2V4ZWN1dGFibGUoY21kX25hbWVzPVtdKToKKyAgICAiIiJDaGVjayBpZiB0aGUgY29tcGlsZXIgY29tcG9uZW50cyB1c2VkIHRvIGJ1aWxkIHRoZSBpbnRlcnByZXRlciBleGlzdC4KKworICAgIENoZWNrIGZvciB0aGUgZXhpc3RlbmNlIG9mIHRoZSBjb21waWxlciBleGVjdXRhYmxlcyB3aG9zZSBuYW1lcyBhcmUgbGlzdGVkCisgICAgaW4gJ2NtZF9uYW1lcycgb3IgYWxsIHRoZSBjb21waWxlciBleGVjdXRhYmxlcyB3aGVuICdjbWRfbmFtZXMnIGlzIGVtcHR5CisgICAgYW5kIHJldHVybiB0aGUgZmlyc3QgbWlzc2luZyBleGVjdXRhYmxlIG9yIE5vbmUgd2hlbiBub25lIGlzIGZvdW5kCisgICAgbWlzc2luZy4KKworICAgICIiIgorICAgIGZyb20gZGlzdHV0aWxzIGltcG9ydCBjY29tcGlsZXIsIHN5c2NvbmZpZywgc3Bhd24KKyAgICBjb21waWxlciA9IGNjb21waWxlci5uZXdfY29tcGlsZXIoKQorICAgIHN5c2NvbmZpZy5jdXN0b21pemVfY29tcGlsZXIoY29tcGlsZXIpCisgICAgZm9yIG5hbWUgaW4gY29tcGlsZXIuZXhlY3V0YWJsZXM6CisgICAgICAgIGlmIGNtZF9uYW1lcyBhbmQgbmFtZSBub3QgaW4gY21kX25hbWVzOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgY21kID0gZ2V0YXR0cihjb21waWxlciwgbmFtZSkKKyAgICAgICAgaWYgY21kX25hbWVzOgorICAgICAgICAgICAgYXNzZXJ0IGNtZCBpcyBub3QgTm9uZSwgXAorICAgICAgICAgICAgICAgICAgICAidGhlICclcycgZXhlY3V0YWJsZSBpcyBub3QgY29uZmlndXJlZCIgJSBuYW1lCisgICAgICAgIGVsaWYgY21kIGlzIE5vbmU6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpZiBzcGF3bi5maW5kX2V4ZWN1dGFibGUoY21kWzBdKSBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIGNtZFswXQorCisKK19pc19hbmRyb2lkX2VtdWxhdG9yID0gTm9uZQorZGVmIHNldHN3aXRjaGludGVydmFsKGludGVydmFsKToKKyAgICAjIFNldHRpbmcgYSB2ZXJ5IGxvdyBnaWwgaW50ZXJ2YWwgb24gdGhlIEFuZHJvaWQgZW11bGF0b3IgY2F1c2VzIHB5dGhvbgorICAgICMgdG8gaGFuZyAoaXNzdWUgIzI2OTM5KS4KKyAgICBtaW5pbXVtX2ludGVydmFsID0gMWUtNQorICAgIGlmIGlzX2FuZHJvaWQgYW5kIGludGVydmFsIDwgbWluaW11bV9pbnRlcnZhbDoKKyAgICAgICAgZ2xvYmFsIF9pc19hbmRyb2lkX2VtdWxhdG9yCisgICAgICAgIGlmIF9pc19hbmRyb2lkX2VtdWxhdG9yIGlzIE5vbmU6CisgICAgICAgICAgICBfaXNfYW5kcm9pZF9lbXVsYXRvciA9IChzdWJwcm9jZXNzLmNoZWNrX291dHB1dCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ2dldHByb3AnLCAncm8ua2VybmVsLnFlbXUnXSkuc3RyaXAoKSA9PSBiJzEnKQorICAgICAgICBpZiBfaXNfYW5kcm9pZF9lbXVsYXRvcjoKKyAgICAgICAgICAgIGludGVydmFsID0gbWluaW11bV9pbnRlcnZhbAorICAgIHJldHVybiBzeXMuc2V0c3dpdGNoaW50ZXJ2YWwoaW50ZXJ2YWwpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X19fYWxsX18ucHkgYi9MaWIvdGVzdC90ZXN0X19fYWxsX18ucHkKaW5kZXggZTk0ZDk4NC4uYWU5MTE0ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9fX2FsbF9fLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfX19hbGxfXy5weQpAQCAtMzgsNiArMzgsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RuYW1lLCBlLl9fY2xhc3NfXy5fX25hbWVfXywgZSkpCiAgICAgICAgICAgICBpZiAiX19idWlsdGluc19fIiBpbiBuYW1lczoKICAgICAgICAgICAgICAgICBkZWwgbmFtZXNbIl9fYnVpbHRpbnNfXyJdCisgICAgICAgICAgICBpZiAnX19hbm5vdGF0aW9uc19fJyBpbiBuYW1lczoKKyAgICAgICAgICAgICAgICBkZWwgbmFtZXNbJ19fYW5ub3RhdGlvbnNfXyddCiAgICAgICAgICAgICBrZXlzID0gc2V0KG5hbWVzKQogICAgICAgICAgICAgYWxsX2xpc3QgPSBzeXMubW9kdWxlc1ttb2RuYW1lXS5fX2FsbF9fCiAgICAgICAgICAgICBhbGxfc2V0ID0gc2V0KGFsbF9saXN0KQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9fbG9jYWxlLnB5IGIvTGliL3Rlc3QvdGVzdF9fbG9jYWxlLnB5CmluZGV4IDU4ZjJmMDQuLmFiNGUyNDcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfX2xvY2FsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X19sb2NhbGUucHkKQEAgLTQsNyArNCw2IEBACiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgbmxfbGFuZ2luZm8gPSBOb25lCiAKLWltcG9ydCBjb2RlY3MKIGltcG9ydCBsb2NhbGUKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9fb3N4X3N1cHBvcnQucHkgYi9MaWIvdGVzdC90ZXN0X19vc3hfc3VwcG9ydC5weQppbmRleCBhYzYzMjVhLi5iY2JhOGNhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X19vc3hfc3VwcG9ydC5weQorKysgYi9MaWIvdGVzdC90ZXN0X19vc3hfc3VwcG9ydC5weQpAQCAtNCw3ICs0LDYgQEAKIAogaW1wb3J0IG9zCiBpbXBvcnQgcGxhdGZvcm0KLWltcG9ydCBzaHV0aWwKIGltcG9ydCBzdGF0CiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYWlmYy5weSBiL0xpYi90ZXN0L3Rlc3RfYWlmYy5weQppbmRleCBhYjUxNDM3Li4xYmQxZjg5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2FpZmMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9haWZjLnB5CkBAIC0yLDcgKzIsNiBAQAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IGF1ZGlvdGVzdHMKIGZyb20gYXVkaW9vcCBpbXBvcnQgYnl0ZXN3YXAKLWltcG9ydCBvcwogaW1wb3J0IGlvCiBpbXBvcnQgc3lzCiBpbXBvcnQgc3RydWN0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2FyZ3BhcnNlLnB5IGIvTGliL3Rlc3QvdGVzdF9hcmdwYXJzZS5weQppbmRleCA0Nzc5YTEzLi5iYzgzMTYxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2FyZ3BhcnNlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYXJncGFyc2UucHkKQEAgLTQ1MTIsNiArNDUxMiwyMSBAQAogICAgICAgICBzdHJpbmcgPSAiTmFtZXNwYWNlKGJhcj0nc3BhbScsIGZvbz00MikiCiAgICAgICAgIHNlbGYuYXNzZXJ0U3RyaW5nRXF1YWwobnMsIHN0cmluZykKIAorICAgIGRlZiB0ZXN0X25hbWVzcGFjZV9zdGFya3dhcmdzX25vdGlkZW50aWZpZXIoc2VsZik6CisgICAgICAgIG5zID0gYXJncGFyc2UuTmFtZXNwYWNlKCoqeyciJzogJ3F1b3RlJ30pCisgICAgICAgIHN0cmluZyA9ICIiIk5hbWVzcGFjZSgqKnsnIic6ICdxdW90ZSd9KSIiIgorICAgICAgICBzZWxmLmFzc2VydFN0cmluZ0VxdWFsKG5zLCBzdHJpbmcpCisKKyAgICBkZWYgdGVzdF9uYW1lc3BhY2Vfa3dhcmdzX2FuZF9zdGFya3dhcmdzX25vdGlkZW50aWZpZXIoc2VsZik6CisgICAgICAgIG5zID0gYXJncGFyc2UuTmFtZXNwYWNlKGE9MSwgKip7JyInOiAncXVvdGUnfSkKKyAgICAgICAgc3RyaW5nID0gIiIiTmFtZXNwYWNlKGE9MSwgKip7JyInOiAncXVvdGUnfSkiIiIKKyAgICAgICAgc2VsZi5hc3NlcnRTdHJpbmdFcXVhbChucywgc3RyaW5nKQorCisgICAgZGVmIHRlc3RfbmFtZXNwYWNlX3N0YXJrd2FyZ3NfaWRlbnRpZmllcihzZWxmKToKKyAgICAgICAgbnMgPSBhcmdwYXJzZS5OYW1lc3BhY2UoKip7J3ZhbGlkJzogVHJ1ZX0pCisgICAgICAgIHN0cmluZyA9ICJOYW1lc3BhY2UodmFsaWQ9VHJ1ZSkiCisgICAgICAgIHNlbGYuYXNzZXJ0U3RyaW5nRXF1YWwobnMsIHN0cmluZykKKwogICAgIGRlZiB0ZXN0X3BhcnNlcihzZWxmKToKICAgICAgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIocHJvZz0nUFJPRycpCiAgICAgICAgIHN0cmluZyA9ICgKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYXJyYXkucHkgYi9MaWIvdGVzdC90ZXN0X2FycmF5LnB5CmluZGV4IDJhMjFlNzQuLjFmODk2N2MgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYXJyYXkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9hcnJheS5weQpAQCAtNyw4ICs3LDYgQEAKIGltcG9ydCB3ZWFrcmVmCiBpbXBvcnQgcGlja2xlCiBpbXBvcnQgb3BlcmF0b3IKLWltcG9ydCBpbwotaW1wb3J0IG1hdGgKIGltcG9ydCBzdHJ1Y3QKIGltcG9ydCBzeXMKIGltcG9ydCB3YXJuaW5ncwpAQCAtMzI4LDggKzMyNiwxOSBAQAogICAgICAgICAgICAgZCA9IHBpY2tsZS5kdW1wcygoaXRvcmlnLCBvcmlnKSwgcHJvdG8pCiAgICAgICAgICAgICBpdCwgYSA9IHBpY2tsZS5sb2FkcyhkKQogICAgICAgICAgICAgYS5mcm9tbGlzdChkYXRhMikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShpdCksIHR5cGUoaXRvcmlnKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpdCksIGRhdGEyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGl0KSwgW10pCisKKyAgICBkZWYgdGVzdF9leGhhdXN0ZWRfaXRlcmF0b3Ioc2VsZik6CisgICAgICAgIGEgPSBhcnJheS5hcnJheShzZWxmLnR5cGVjb2RlLCBzZWxmLmV4YW1wbGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChhKSwgbGlzdChzZWxmLmV4YW1wbGUpKQorICAgICAgICBleGhpdCA9IGl0ZXIoYSkKKyAgICAgICAgZW1waXQgPSBpdGVyKGEpCisgICAgICAgIGZvciB4IGluIGV4aGl0OiAgIyBleGhhdXN0IHRoZSBpdGVyYXRvcgorICAgICAgICAgICAgbmV4dChlbXBpdCkgICMgbm90IGV4aGF1c3RlZAorICAgICAgICBhLmFwcGVuZChzZWxmLm91dHNpZGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChleGhpdCksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZW1waXQpLCBbc2VsZi5vdXRzaWRlXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGEpLCBsaXN0KHNlbGYuZXhhbXBsZSkgKyBbc2VsZi5vdXRzaWRlXSkKIAogICAgIGRlZiB0ZXN0X2luc2VydChzZWxmKToKICAgICAgICAgYSA9IGFycmF5LmFycmF5KHNlbGYudHlwZWNvZGUsIHNlbGYuZXhhbXBsZSkKQEAgLTEwODAsNiArMTA4OSwxMiBAQAogICAgICAgICBhID0gYXJyYXkuYXJyYXkoJ0InLCBiIiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBnZXRidWZmZXJfd2l0aF9udWxsX3ZpZXcsIGEpCiAKKyAgICBkZWYgdGVzdF9mcmVlX2FmdGVyX2l0ZXJhdGluZyhzZWxmKToKKyAgICAgICAgc3VwcG9ydC5jaGVja19mcmVlX2FmdGVyX2l0ZXJhdGluZyhzZWxmLCBpdGVyLCBhcnJheS5hcnJheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi50eXBlY29kZSwpKQorICAgICAgICBzdXBwb3J0LmNoZWNrX2ZyZWVfYWZ0ZXJfaXRlcmF0aW5nKHNlbGYsIHJldmVyc2VkLCBhcnJheS5hcnJheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi50eXBlY29kZSwpKQorCiBjbGFzcyBTdHJpbmdUZXN0KEJhc2VUZXN0KToKIAogICAgIGRlZiB0ZXN0X3NldGl0ZW0oc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2FzdC5weSBiL0xpYi90ZXN0L3Rlc3RfYXN0LnB5CmluZGV4IGQzZTZkMzUuLjhjNjI0MDggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYXN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYXN0LnB5CkBAIC0xLDcgKzEsOCBAQAoraW1wb3J0IGFzdAoraW1wb3J0IGRpcwogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBhc3QKIGltcG9ydCB3ZWFrcmVmCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydApAQCAtMTE1LDYgKzExNiw4IEBACiAgICAgIyBQRVAgNDQ4OiBBZGRpdGlvbmFsIFVucGFja2luZyBHZW5lcmFsaXphdGlvbnMKICAgICAieyoqezE6Mn0sIDI6M30iLAogICAgICJ7KnsxLCAyfSwgM30iLAorICAgICMgQXN5bmNocm9ub3VzIGNvbXByZWhlbnNpb25zCisgICAgImFzeW5jIGRlZiBmKCk6XG4gW2kgYXN5bmMgZm9yIGIgaW4gY10iLAogXQogCiAjIFRoZXNlIGFyZSBjb21waWxlZCB0aHJvdWdoICJzaW5nbGUiCkBAIC0yMzgsNyArMjQxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgYXN0X3RyZWUgPSBjb21waWxlKGksICI/Iiwga2luZCwgYXN0LlB5Q0ZfT05MWV9BU1QpCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodG9fdHVwbGUoYXN0X3RyZWUpLCBvKQogICAgICAgICAgICAgICAgICAgICBzZWxmLl9hc3NlcnRUcnVlb3JkZXIoYXN0X3RyZWUsICgwLCAwKSkKLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChhY3Rpb249ImNvbXBpbGluZyIsIGlucHV0PWkpOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGFjdGlvbj0iY29tcGlsaW5nIiwgaW5wdXQ9aSwga2luZD1raW5kKToKICAgICAgICAgICAgICAgICAgICAgY29tcGlsZShhc3RfdHJlZSwgIj8iLCBraW5kKQogCiAgICAgZGVmIHRlc3Rfc2xpY2Uoc2VsZik6CkBAIC01NDcsNiArNTUwLDE3IEBACiAgICAgICAgICAgICBjb21waWxlKG1vZCwgJ3Rlc3QnLCAnZXhlYycpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oImludmFsaWQgaW50ZWdlciB2YWx1ZTogTm9uZSIsIHN0cihjbS5leGNlcHRpb24pKQogCisgICAgZGVmIHRlc3RfbGV2ZWxfYXNfbm9uZShzZWxmKToKKyAgICAgICAgYm9keSA9IFthc3QuSW1wb3J0RnJvbShtb2R1bGU9J3RpbWUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzPVthc3QuYWxpYXMobmFtZT0nc2xlZXAnKV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWw9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lbm89MCwgY29sX29mZnNldD0wKV0KKyAgICAgICAgbW9kID0gYXN0Lk1vZHVsZShib2R5KQorICAgICAgICBjb2RlID0gY29tcGlsZShtb2QsICd0ZXN0JywgJ2V4ZWMnKQorICAgICAgICBucyA9IHt9CisgICAgICAgIGV4ZWMoY29kZSwgbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3NsZWVwJywgbnMpCisKIAogY2xhc3MgQVNUVmFsaWRhdG9yVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC03NDIsNyArNzU2LDcgQEAKIAogICAgIGRlZiB0ZXN0X2ltcG9ydGZyb20oc2VsZik6CiAgICAgICAgIGltcCA9IGFzdC5JbXBvcnRGcm9tKE5vbmUsIFthc3QuYWxpYXMoIngiLCBOb25lKV0sIC00MikKLSAgICAgICAgc2VsZi5zdG10KGltcCwgImxldmVsIGxlc3MgdGhhbiAtMSIpCisgICAgICAgIHNlbGYuc3RtdChpbXAsICJOZWdhdGl2ZSBJbXBvcnRGcm9tIGxldmVsIikKICAgICAgICAgc2VsZi5zdG10KGFzdC5JbXBvcnRGcm9tKE5vbmUsIFtdLCAwKSwgImVtcHR5IG5hbWVzIG9uIEltcG9ydEZyb20iKQogCiAgICAgZGVmIHRlc3RfZ2xvYmFsKHNlbGYpOgpAQCAtNzk3LDIxICs4MTEsMjEgQEAKICAgICBkZWYgX2NoZWNrX2NvbXByZWhlbnNpb24oc2VsZiwgZmFjKToKICAgICAgICAgc2VsZi5leHByKGZhYyhbXSksICJjb21wcmVoZW5zaW9uIHdpdGggbm8gZ2VuZXJhdG9ycyIpCiAgICAgICAgIGcgPSBhc3QuY29tcHJlaGVuc2lvbihhc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKSwgW10pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpLCBbXSwgMCkKICAgICAgICAgc2VsZi5leHByKGZhYyhbZ10pLCAibXVzdCBoYXZlIFN0b3JlIGNvbnRleHQiKQogICAgICAgICBnID0gYXN0LmNvbXByZWhlbnNpb24oYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSwgW10pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSwgW10sIDApCiAgICAgICAgIHNlbGYuZXhwcihmYWMoW2ddKSwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQogICAgICAgICB4ID0gYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkKICAgICAgICAgeSA9IGFzdC5OYW1lKCJ5IiwgYXN0LkxvYWQoKSkKLSAgICAgICAgZyA9IGFzdC5jb21wcmVoZW5zaW9uKHgsIHksIFtOb25lXSkKKyAgICAgICAgZyA9IGFzdC5jb21wcmVoZW5zaW9uKHgsIHksIFtOb25lXSwgMCkKICAgICAgICAgc2VsZi5leHByKGZhYyhbZ10pLCAiTm9uZSBkaXNhbGxvd2VkIikKLSAgICAgICAgZyA9IGFzdC5jb21wcmVoZW5zaW9uKHgsIHksIFthc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKV0pCisgICAgICAgIGcgPSBhc3QuY29tcHJlaGVuc2lvbih4LCB5LCBbYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSldLCAwKQogICAgICAgICBzZWxmLmV4cHIoZmFjKFtnXSksICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKIAogICAgIGRlZiBfc2ltcGxlX2NvbXAoc2VsZiwgZmFjKToKICAgICAgICAgZyA9IGFzdC5jb21wcmVoZW5zaW9uKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKSwgW10pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpLCBbXSwgMCkKICAgICAgICAgc2VsZi5leHByKGZhYyhhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSwgW2ddKSwKICAgICAgICAgICAgICAgICAgICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKICAgICAgICAgZGVmIHdyYXAoZ2Vucyk6CkBAIC04MjksNyArODQzLDcgQEAKIAogICAgIGRlZiB0ZXN0X2RpY3Rjb21wKHNlbGYpOgogICAgICAgICBnID0gYXN0LmNvbXByZWhlbnNpb24oYXN0Lk5hbWUoInkiLCBhc3QuU3RvcmUoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuTmFtZSgicCIsIGFzdC5Mb2FkKCkpLCBbXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5OYW1lKCJwIiwgYXN0LkxvYWQoKSksIFtdLCAwKQogICAgICAgICBjID0gYXN0LkRpY3RDb21wKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5OYW1lKCJ5IiwgYXN0LkxvYWQoKSksIFtnXSkKICAgICAgICAgc2VsZi5leHByKGMsICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKQEAgLTkzMyw2ICs5NDcsMTI1IEBACiAgICAgICAgICAgICBjb21waWxlKG1vZCwgZm4sICJleGVjIikKIAogCitjbGFzcyBDb25zdGFudFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJUZXN0cyBvbiB0aGUgYXN0LkNvbnN0YW50IG5vZGUgdHlwZS4iIiIKKworICAgIGRlZiBjb21waWxlX2NvbnN0YW50KHNlbGYsIHZhbHVlKToKKyAgICAgICAgdHJlZSA9IGFzdC5wYXJzZSgieCA9IDEyMyIpCisKKyAgICAgICAgbm9kZSA9IHRyZWUuYm9keVswXS52YWx1ZQorICAgICAgICBuZXdfbm9kZSA9IGFzdC5Db25zdGFudCh2YWx1ZT12YWx1ZSkKKyAgICAgICAgYXN0LmNvcHlfbG9jYXRpb24obmV3X25vZGUsIG5vZGUpCisgICAgICAgIHRyZWUuYm9keVswXS52YWx1ZSA9IG5ld19ub2RlCisKKyAgICAgICAgY29kZSA9IGNvbXBpbGUodHJlZSwgIjxzdHJpbmc+IiwgImV4ZWMiKQorCisgICAgICAgIG5zID0ge30KKyAgICAgICAgZXhlYyhjb2RlLCBucykKKyAgICAgICAgcmV0dXJuIG5zWyd4J10KKworICAgIGRlZiB0ZXN0X3ZhbGlkYXRpb24oc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHNlbGYuY29tcGlsZV9jb25zdGFudChbMSwgMiwgM10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgImdvdCBhbiBpbnZhbGlkIHR5cGUgaW4gQ29uc3RhbnQ6IGxpc3QiKQorCisgICAgZGVmIHRlc3Rfc2luZ2xldG9ucyhzZWxmKToKKyAgICAgICAgZm9yIGNvbnN0IGluIChOb25lLCBGYWxzZSwgVHJ1ZSwgRWxsaXBzaXMsIGInJywgZnJvemVuc2V0KCkpOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoY29uc3Q9Y29uc3QpOgorICAgICAgICAgICAgICAgIHZhbHVlID0gc2VsZi5jb21waWxlX2NvbnN0YW50KGNvbnN0KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModmFsdWUsIGNvbnN0KQorCisgICAgZGVmIHRlc3RfdmFsdWVzKHNlbGYpOgorICAgICAgICBuZXN0ZWRfdHVwbGUgPSAoMSwpCisgICAgICAgIG5lc3RlZF9mcm96ZW5zZXQgPSBmcm96ZW5zZXQoezF9KQorICAgICAgICBmb3IgbGV2ZWwgaW4gcmFuZ2UoMyk6CisgICAgICAgICAgICBuZXN0ZWRfdHVwbGUgPSAobmVzdGVkX3R1cGxlLCAyKQorICAgICAgICAgICAgbmVzdGVkX2Zyb3plbnNldCA9IGZyb3plbnNldCh7bmVzdGVkX2Zyb3plbnNldCwgMn0pCisgICAgICAgIHZhbHVlcyA9ICgxMjMsIDEyMy4wLCAxMjNqLAorICAgICAgICAgICAgICAgICAgInVuaWNvZGUiLCBiJ2J5dGVzJywKKyAgICAgICAgICAgICAgICAgIHR1cGxlKCJ0dXBsZSIpLCBmcm96ZW5zZXQoImZyb3plbnNldCIpLAorICAgICAgICAgICAgICAgICAgbmVzdGVkX3R1cGxlLCBuZXN0ZWRfZnJvemVuc2V0KQorICAgICAgICBmb3IgdmFsdWUgaW4gdmFsdWVzOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QodmFsdWU9dmFsdWUpOgorICAgICAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuY29tcGlsZV9jb25zdGFudCh2YWx1ZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgdmFsdWUpCisKKyAgICBkZWYgdGVzdF9hc3NpZ25fdG9fY29uc3RhbnQoc2VsZik6CisgICAgICAgIHRyZWUgPSBhc3QucGFyc2UoInggPSAxIikKKworICAgICAgICB0YXJnZXQgPSB0cmVlLmJvZHlbMF0udGFyZ2V0c1swXQorICAgICAgICBuZXdfdGFyZ2V0ID0gYXN0LkNvbnN0YW50KHZhbHVlPTEpCisgICAgICAgIGFzdC5jb3B5X2xvY2F0aW9uKG5ld190YXJnZXQsIHRhcmdldCkKKyAgICAgICAgdHJlZS5ib2R5WzBdLnRhcmdldHNbMF0gPSBuZXdfdGFyZ2V0CisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIGNvbXBpbGUodHJlZSwgInN0cmluZyIsICJleGVjIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwcmVzc2lvbiB3aGljaCBjYW4ndCBiZSBhc3NpZ25lZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgInRvIGluIFN0b3JlIGNvbnRleHQiKQorCisgICAgZGVmIHRlc3RfZ2V0X2RvY3N0cmluZyhzZWxmKToKKyAgICAgICAgdHJlZSA9IGFzdC5wYXJzZSgiJ2RvY3N0cmluZydcbnggPSAxIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhc3QuZ2V0X2RvY3N0cmluZyh0cmVlKSwgJ2RvY3N0cmluZycpCisKKyAgICAgICAgdHJlZS5ib2R5WzBdLnZhbHVlID0gYXN0LkNvbnN0YW50KHZhbHVlPSdjb25zdGFudCBkb2NzdHJpbmcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFzdC5nZXRfZG9jc3RyaW5nKHRyZWUpLCAnY29uc3RhbnQgZG9jc3RyaW5nJykKKworICAgIGRlZiBnZXRfbG9hZF9jb25zdChzZWxmLCB0cmVlKToKKyAgICAgICAgIyBDb21waWxlIHRvIGJ5dGVjb2RlLCBkaXNhc3NlbWJsZSBhbmQgZ2V0IHBhcmFtZXRlciBvZiBMT0FEX0NPTlNUCisgICAgICAgICMgaW5zdHJ1Y3Rpb25zCisgICAgICAgIGNvID0gY29tcGlsZSh0cmVlLCAnPHN0cmluZz4nLCAnZXhlYycpCisgICAgICAgIGNvbnN0cyA9IFtdCisgICAgICAgIGZvciBpbnN0ciBpbiBkaXMuZ2V0X2luc3RydWN0aW9ucyhjbyk6CisgICAgICAgICAgICBpZiBpbnN0ci5vcG5hbWUgPT0gJ0xPQURfQ09OU1QnOgorICAgICAgICAgICAgICAgIGNvbnN0cy5hcHBlbmQoaW5zdHIuYXJndmFsKQorICAgICAgICByZXR1cm4gY29uc3RzCisKKyAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9sb2FkX2NvbnN0KHNlbGYpOgorICAgICAgICBjb25zdHMgPSBbTm9uZSwKKyAgICAgICAgICAgICAgICAgIFRydWUsIEZhbHNlLAorICAgICAgICAgICAgICAgICAgMTI0LAorICAgICAgICAgICAgICAgICAgMi4wLAorICAgICAgICAgICAgICAgICAgM2osCisgICAgICAgICAgICAgICAgICAidW5pY29kZSIsCisgICAgICAgICAgICAgICAgICBiJ2J5dGVzJywKKyAgICAgICAgICAgICAgICAgICgxLCAyLCAzKV0KKworICAgICAgICBjb2RlID0gJ1xuJy5qb2luKFsneD17IXJ9Jy5mb3JtYXQoY29uc3QpIGZvciBjb25zdCBpbiBjb25zdHNdKQorICAgICAgICBjb2RlICs9ICdcbnggPSAuLi4nCisgICAgICAgIGNvbnN0cy5leHRlbmQoKEVsbGlwc2lzLCBOb25lKSkKKworICAgICAgICB0cmVlID0gYXN0LnBhcnNlKGNvZGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRfbG9hZF9jb25zdCh0cmVlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHMpCisKKyAgICAgICAgIyBSZXBsYWNlIGV4cHJlc3Npb24gbm9kZXMgd2l0aCBjb25zdGFudHMKKyAgICAgICAgZm9yIGFzc2lnbiwgY29uc3QgaW4gemlwKHRyZWUuYm9keSwgY29uc3RzKToKKyAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGFzc2lnbiwgYXN0LkFzc2lnbiksIGFzdC5kdW1wKGFzc2lnbikKKyAgICAgICAgICAgIG5ld19ub2RlID0gYXN0LkNvbnN0YW50KHZhbHVlPWNvbnN0KQorICAgICAgICAgICAgYXN0LmNvcHlfbG9jYXRpb24obmV3X25vZGUsIGFzc2lnbi52YWx1ZSkKKyAgICAgICAgICAgIGFzc2lnbi52YWx1ZSA9IG5ld19ub2RlCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdldF9sb2FkX2NvbnN0KHRyZWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cykKKworICAgIGRlZiB0ZXN0X2xpdGVyYWxfZXZhbChzZWxmKToKKyAgICAgICAgdHJlZSA9IGFzdC5wYXJzZSgiMSArIDIiKQorICAgICAgICBiaW5vcCA9IHRyZWUuYm9keVswXS52YWx1ZQorCisgICAgICAgIG5ld19sZWZ0ID0gYXN0LkNvbnN0YW50KHZhbHVlPTEwKQorICAgICAgICBhc3QuY29weV9sb2NhdGlvbihuZXdfbGVmdCwgYmlub3AubGVmdCkKKyAgICAgICAgYmlub3AubGVmdCA9IG5ld19sZWZ0CisKKyAgICAgICAgbmV3X3JpZ2h0ID0gYXN0LkNvbnN0YW50KHZhbHVlPTIwKQorICAgICAgICBhc3QuY29weV9sb2NhdGlvbihuZXdfcmlnaHQsIGJpbm9wLnJpZ2h0KQorICAgICAgICBiaW5vcC5yaWdodCA9IG5ld19yaWdodAorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXN0LmxpdGVyYWxfZXZhbChiaW5vcCksIDMwKQorCisKIGRlZiBtYWluKCk6CiAgICAgaWYgX19uYW1lX18gIT0gJ19fbWFpbl9fJzoKICAgICAgICAgcmV0dXJuCkBAIC05NDAsOCArMTA3Myw5IEBACiAgICAgICAgIGZvciBzdGF0ZW1lbnRzLCBraW5kIGluICgoZXhlY190ZXN0cywgImV4ZWMiKSwgKHNpbmdsZV90ZXN0cywgInNpbmdsZSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGV2YWxfdGVzdHMsICJldmFsIikpOgogICAgICAgICAgICAgcHJpbnQoa2luZCsiX3Jlc3VsdHMgPSBbIikKLSAgICAgICAgICAgIGZvciBzIGluIHN0YXRlbWVudHM6Ci0gICAgICAgICAgICAgICAgcHJpbnQocmVwcih0b190dXBsZShjb21waWxlKHMsICI/Iiwga2luZCwgMHg0MDApKSkrIiwiKQorICAgICAgICAgICAgZm9yIHN0YXRlbWVudCBpbiBzdGF0ZW1lbnRzOgorICAgICAgICAgICAgICAgIHRyZWUgPSBhc3QucGFyc2Uoc3RhdGVtZW50LCAiPyIsIGtpbmQpCisgICAgICAgICAgICAgICAgcHJpbnQoIiVyLCIgJSAodG9fdHVwbGUodHJlZSksKSkKICAgICAgICAgICAgIHByaW50KCJdIikKICAgICAgICAgcHJpbnQoIm1haW4oKSIpCiAgICAgICAgIHJhaXNlIFN5c3RlbUV4aXQKQEAgLTk3OSwxOSArMTExMywyMCBAQAogKCdNb2R1bGUnLCBbKCdGb3InLCAoMSwgMCksICgnTmFtZScsICgxLCA0KSwgJ3YnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDkpLCAndicsICgnTG9hZCcsKSksIFsoJ0JyZWFrJywgKDEsIDExKSldLCBbXSldKSwKICgnTW9kdWxlJywgWygnRm9yJywgKDEsIDApLCAoJ05hbWUnLCAoMSwgNCksICd2JywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCA5KSwgJ3YnLCAoJ0xvYWQnLCkpLCBbKCdDb250aW51ZScsICgxLCAxMSkpXSwgW10pXSksCiAoJ01vZHVsZScsIFsoJ0ZvcicsICgxLCAwKSwgKCdUdXBsZScsICgxLCA0KSwgWygnTmFtZScsICgxLCA0KSwgJ2EnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDYpLCAnYicsICgnU3RvcmUnLCkpXSwgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxMSksICdjJywgKCdMb2FkJywpKSwgWygnUGFzcycsICgxLCAxNCkpXSwgW10pXSksCi0oJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnTGlzdENvbXAnLCAoMSwgMSksICgnVHVwbGUnLCAoMSwgMiksIFsoJ05hbWUnLCAoMSwgMiksICdhJywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDEsIDQpLCAnYicsICgnTG9hZCcsKSldLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdUdXBsZScsICgxLCAxMSksIFsoJ05hbWUnLCAoMSwgMTEpLCAnYScsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTMpLCAnYicsICgnU3RvcmUnLCkpXSwgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxOCksICdjJywgKCdMb2FkJywpKSwgW10pXSkpXSksCi0oJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnR2VuZXJhdG9yRXhwJywgKDEsIDEpLCAoJ1R1cGxlJywgKDEsIDIpLCBbKCdOYW1lJywgKDEsIDIpLCAnYScsICgnTG9hZCcsKSksICgnTmFtZScsICgxLCA0KSwgJ2InLCAoJ0xvYWQnLCkpXSwgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnVHVwbGUnLCAoMSwgMTEpLCBbKCdOYW1lJywgKDEsIDExKSwgJ2EnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDEzKSwgJ2InLCAoJ1N0b3JlJywpKV0sICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTgpLCAnYycsICgnTG9hZCcsKSksIFtdKV0pKV0pLAotKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ0dlbmVyYXRvckV4cCcsICgxLCAxKSwgKCdUdXBsZScsICgxLCAyKSwgWygnTmFtZScsICgxLCAyKSwgJ2EnLCAoJ0xvYWQnLCkpLCAoJ05hbWUnLCAoMSwgNCksICdiJywgKCdMb2FkJywpKV0sICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ1R1cGxlJywgKDEsIDEyKSwgWygnTmFtZScsICgxLCAxMiksICdhJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxNCksICdiJywgKCdTdG9yZScsKSldLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDIwKSwgJ2MnLCAoJ0xvYWQnLCkpLCBbXSldKSldKSwKLSgnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdHZW5lcmF0b3JFeHAnLCAoMiwgNCksICgnVHVwbGUnLCAoMywgNCksIFsoJ05hbWUnLCAoMywgNCksICdBYScsICgnTG9hZCcsKSksICgnTmFtZScsICg1LCA3KSwgJ0JiJywgKCdMb2FkJywpKV0sICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ1R1cGxlJywgKDgsIDQpLCBbKCdOYW1lJywgKDgsIDQpLCAnQWEnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEwLCA0KSwgJ0JiJywgKCdTdG9yZScsKSldLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEwLCAxMCksICdDYycsICgnTG9hZCcsKSksIFtdKV0pKV0pLAotKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ0RpY3RDb21wJywgKDEsIDApLCAoJ05hbWUnLCAoMSwgMSksICdhJywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDEsIDUpLCAnYicsICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ05hbWUnLCAoMSwgMTEpLCAndycsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTYpLCAneCcsICgnTG9hZCcsKSksIFtdKSwgKCdjb21wcmVoZW5zaW9uJywgKCdOYW1lJywgKDEsIDIyKSwgJ20nLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDI3KSwgJ3AnLCAoJ0xvYWQnLCkpLCBbKCdOYW1lJywgKDEsIDMyKSwgJ2cnLCAoJ0xvYWQnLCkpXSldKSldKSwKLSgnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdEaWN0Q29tcCcsICgxLCAwKSwgKCdOYW1lJywgKDEsIDEpLCAnYScsICgnTG9hZCcsKSksICgnTmFtZScsICgxLCA1KSwgJ2InLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdUdXBsZScsICgxLCAxMSksIFsoJ05hbWUnLCAoMSwgMTEpLCAndicsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTMpLCAndycsICgnU3RvcmUnLCkpXSwgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxOCksICd4JywgKCdMb2FkJywpKSwgW10pXSkpXSksCi0oJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnU2V0Q29tcCcsICgxLCAwKSwgKCdOYW1lJywgKDEsIDEpLCAncicsICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ05hbWUnLCAoMSwgNyksICdsJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxMiksICd4JywgKCdMb2FkJywpKSwgWygnTmFtZScsICgxLCAxNyksICdnJywgKCdMb2FkJywpKV0pXSkpXSksCi0oJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnU2V0Q29tcCcsICgxLCAwKSwgKCdOYW1lJywgKDEsIDEpLCAncicsICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ1R1cGxlJywgKDEsIDcpLCBbKCdOYW1lJywgKDEsIDcpLCAnbCcsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgOSksICdtJywgKCdTdG9yZScsKSldLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDE0KSwgJ3gnLCAoJ0xvYWQnLCkpLCBbXSldKSldKSwKKygnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdMaXN0Q29tcCcsICgxLCAxKSwgKCdUdXBsZScsICgxLCAyKSwgWygnTmFtZScsICgxLCAyKSwgJ2EnLCAoJ0xvYWQnLCkpLCAoJ05hbWUnLCAoMSwgNCksICdiJywgKCdMb2FkJywpKV0sICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ1R1cGxlJywgKDEsIDExKSwgWygnTmFtZScsICgxLCAxMSksICdhJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxMyksICdiJywgKCdTdG9yZScsKSldLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDE4KSwgJ2MnLCAoJ0xvYWQnLCkpLCBbXSwgMCldKSldKSwKKygnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdHZW5lcmF0b3JFeHAnLCAoMSwgMSksICgnVHVwbGUnLCAoMSwgMiksIFsoJ05hbWUnLCAoMSwgMiksICdhJywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDEsIDQpLCAnYicsICgnTG9hZCcsKSldLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdUdXBsZScsICgxLCAxMSksIFsoJ05hbWUnLCAoMSwgMTEpLCAnYScsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTMpLCAnYicsICgnU3RvcmUnLCkpXSwgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxOCksICdjJywgKCdMb2FkJywpKSwgW10sIDApXSkpXSksCisoJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnR2VuZXJhdG9yRXhwJywgKDEsIDEpLCAoJ1R1cGxlJywgKDEsIDIpLCBbKCdOYW1lJywgKDEsIDIpLCAnYScsICgnTG9hZCcsKSksICgnTmFtZScsICgxLCA0KSwgJ2InLCAoJ0xvYWQnLCkpXSwgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnVHVwbGUnLCAoMSwgMTIpLCBbKCdOYW1lJywgKDEsIDEyKSwgJ2EnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDE0KSwgJ2InLCAoJ1N0b3JlJywpKV0sICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMjApLCAnYycsICgnTG9hZCcsKSksIFtdLCAwKV0pKV0pLAorKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ0dlbmVyYXRvckV4cCcsICgyLCA0KSwgKCdUdXBsZScsICgzLCA0KSwgWygnTmFtZScsICgzLCA0KSwgJ0FhJywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDUsIDcpLCAnQmInLCAoJ0xvYWQnLCkpXSwgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnVHVwbGUnLCAoOCwgNCksIFsoJ05hbWUnLCAoOCwgNCksICdBYScsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMTAsIDQpLCAnQmInLCAoJ1N0b3JlJywpKV0sICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMTAsIDEwKSwgJ0NjJywgKCdMb2FkJywpKSwgW10sIDApXSkpXSksCisoJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnRGljdENvbXAnLCAoMSwgMCksICgnTmFtZScsICgxLCAxKSwgJ2EnLCAoJ0xvYWQnLCkpLCAoJ05hbWUnLCAoMSwgNSksICdiJywgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnTmFtZScsICgxLCAxMSksICd3JywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxNiksICd4JywgKCdMb2FkJywpKSwgW10sIDApLCAoJ2NvbXByZWhlbnNpb24nLCAoJ05hbWUnLCAoMSwgMjIpLCAnbScsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMjcpLCAncCcsICgnTG9hZCcsKSksIFsoJ05hbWUnLCAoMSwgMzIpLCAnZycsICgnTG9hZCcsKSldLCAwKV0pKV0pLAorKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ0RpY3RDb21wJywgKDEsIDApLCAoJ05hbWUnLCAoMSwgMSksICdhJywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDEsIDUpLCAnYicsICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ1R1cGxlJywgKDEsIDExKSwgWygnTmFtZScsICgxLCAxMSksICd2JywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxMyksICd3JywgKCdTdG9yZScsKSldLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDE4KSwgJ3gnLCAoJ0xvYWQnLCkpLCBbXSwgMCldKSldKSwKKygnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdTZXRDb21wJywgKDEsIDApLCAoJ05hbWUnLCAoMSwgMSksICdyJywgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnTmFtZScsICgxLCA3KSwgJ2wnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDEyKSwgJ3gnLCAoJ0xvYWQnLCkpLCBbKCdOYW1lJywgKDEsIDE3KSwgJ2cnLCAoJ0xvYWQnLCkpXSwgMCldKSldKSwKKygnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdTZXRDb21wJywgKDEsIDApLCAoJ05hbWUnLCAoMSwgMSksICdyJywgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnVHVwbGUnLCAoMSwgNyksIFsoJ05hbWUnLCAoMSwgNyksICdsJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCA5KSwgJ20nLCAoJ1N0b3JlJywpKV0sICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTQpLCAneCcsICgnTG9hZCcsKSksIFtdLCAwKV0pKV0pLAogKCdNb2R1bGUnLCBbKCdBc3luY0Z1bmN0aW9uRGVmJywgKDEsIDYpLCAnZicsICgnYXJndW1lbnRzJywgW10sIE5vbmUsIFtdLCBbXSwgTm9uZSwgW10pLCBbKCdFeHByJywgKDIsIDEpLCAoJ0F3YWl0JywgKDIsIDEpLCAoJ0NhbGwnLCAoMiwgNyksICgnTmFtZScsICgyLCA3KSwgJ3NvbWV0aGluZycsICgnTG9hZCcsKSksIFtdLCBbXSkpKV0sIFtdLCBOb25lKV0pLAogKCdNb2R1bGUnLCBbKCdBc3luY0Z1bmN0aW9uRGVmJywgKDEsIDYpLCAnZicsICgnYXJndW1lbnRzJywgW10sIE5vbmUsIFtdLCBbXSwgTm9uZSwgW10pLCBbKCdBc3luY0ZvcicsICgyLCA3KSwgKCdOYW1lJywgKDIsIDExKSwgJ2UnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDIsIDE2KSwgJ2knLCAoJ0xvYWQnLCkpLCBbKCdFeHByJywgKDIsIDE5KSwgKCdOdW0nLCAoMiwgMTkpLCAxKSldLCBbKCdFeHByJywgKDMsIDcpLCAoJ051bScsICgzLCA3KSwgMikpXSldLCBbXSwgTm9uZSldKSwKICgnTW9kdWxlJywgWygnQXN5bmNGdW5jdGlvbkRlZicsICgxLCA2KSwgJ2YnLCAoJ2FyZ3VtZW50cycsIFtdLCBOb25lLCBbXSwgW10sIE5vbmUsIFtdKSwgWygnQXN5bmNXaXRoJywgKDIsIDcpLCBbKCd3aXRoaXRlbScsICgnTmFtZScsICgyLCAxMiksICdhJywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDIsIDE3KSwgJ2InLCAoJ1N0b3JlJywpKSldLCBbKCdFeHByJywgKDIsIDIwKSwgKCdOdW0nLCAoMiwgMjApLCAxKSldKV0sIFtdLCBOb25lKV0pLAogKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ0RpY3QnLCAoMSwgMCksIFtOb25lLCAoJ051bScsICgxLCAxMCksIDIpXSwgWygnRGljdCcsICgxLCAzKSwgWygnTnVtJywgKDEsIDQpLCAxKV0sIFsoJ051bScsICgxLCA2KSwgMildKSwgKCdOdW0nLCAoMSwgMTIpLCAzKV0pKV0pLAogKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ1NldCcsICgxLCAwKSwgWygnU3RhcnJlZCcsICgxLCAxKSwgKCdTZXQnLCAoMSwgMiksIFsoJ051bScsICgxLCAzKSwgMSksICgnTnVtJywgKDEsIDYpLCAyKV0pLCAoJ0xvYWQnLCkpLCAoJ051bScsICgxLCAxMCksIDMpXSkpXSksCisoJ01vZHVsZScsIFsoJ0FzeW5jRnVuY3Rpb25EZWYnLCAoMSwgNiksICdmJywgKCdhcmd1bWVudHMnLCBbXSwgTm9uZSwgW10sIFtdLCBOb25lLCBbXSksIFsoJ0V4cHInLCAoMiwgMSksICgnTGlzdENvbXAnLCAoMiwgMiksICgnTmFtZScsICgyLCAyKSwgJ2knLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdOYW1lJywgKDIsIDE0KSwgJ2InLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDIsIDE5KSwgJ2MnLCAoJ0xvYWQnLCkpLCBbXSwgMSldKSldLCBbXSwgTm9uZSldKSwKIF0KIHNpbmdsZV9yZXN1bHRzID0gWwogKCdJbnRlcmFjdGl2ZScsIFsoJ0V4cHInLCAoMSwgMCksICgnQmluT3AnLCAoMSwgMCksICgnTnVtJywgKDEsIDApLCAxKSwgKCdBZGQnLCksICgnTnVtJywgKDEsIDIpLCAyKSkpXSksCkBAIC0xMDA2LDggKzExNDEsOCBAQAogKCdFeHByZXNzaW9uJywgKCdEaWN0JywgKDEsIDApLCBbXSwgW10pKSwKICgnRXhwcmVzc2lvbicsICgnU2V0JywgKDEsIDApLCBbKCdOYW1lQ29uc3RhbnQnLCAoMSwgMSksIE5vbmUpXSkpLAogKCdFeHByZXNzaW9uJywgKCdEaWN0JywgKDEsIDApLCBbKCdOdW0nLCAoMiwgNiksIDEpXSwgWygnTnVtJywgKDQsIDEwKSwgMildKSksCi0oJ0V4cHJlc3Npb24nLCAoJ0xpc3RDb21wJywgKDEsIDEpLCAoJ05hbWUnLCAoMSwgMSksICdhJywgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnTmFtZScsICgxLCA3KSwgJ2InLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDEyKSwgJ2MnLCAoJ0xvYWQnLCkpLCBbKCdOYW1lJywgKDEsIDE3KSwgJ2QnLCAoJ0xvYWQnLCkpXSldKSksCi0oJ0V4cHJlc3Npb24nLCAoJ0dlbmVyYXRvckV4cCcsICgxLCAxKSwgKCdOYW1lJywgKDEsIDEpLCAnYScsICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ05hbWUnLCAoMSwgNyksICdiJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxMiksICdjJywgKCdMb2FkJywpKSwgWygnTmFtZScsICgxLCAxNyksICdkJywgKCdMb2FkJywpKV0pXSkpLAorKCdFeHByZXNzaW9uJywgKCdMaXN0Q29tcCcsICgxLCAxKSwgKCdOYW1lJywgKDEsIDEpLCAnYScsICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ05hbWUnLCAoMSwgNyksICdiJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxMiksICdjJywgKCdMb2FkJywpKSwgWygnTmFtZScsICgxLCAxNyksICdkJywgKCdMb2FkJywpKV0sIDApXSkpLAorKCdFeHByZXNzaW9uJywgKCdHZW5lcmF0b3JFeHAnLCAoMSwgMSksICgnTmFtZScsICgxLCAxKSwgJ2EnLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdOYW1lJywgKDEsIDcpLCAnYicsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTIpLCAnYycsICgnTG9hZCcsKSksIFsoJ05hbWUnLCAoMSwgMTcpLCAnZCcsICgnTG9hZCcsKSldLCAwKV0pKSwKICgnRXhwcmVzc2lvbicsICgnQ29tcGFyZScsICgxLCAwKSwgKCdOdW0nLCAoMSwgMCksIDEpLCBbKCdMdCcsKSwgKCdMdCcsKV0sIFsoJ051bScsICgxLCA0KSwgMiksICgnTnVtJywgKDEsIDgpLCAzKV0pKSwKICgnRXhwcmVzc2lvbicsICgnQ2FsbCcsICgxLCAwKSwgKCdOYW1lJywgKDEsIDApLCAnZicsICgnTG9hZCcsKSksIFsoJ051bScsICgxLCAyKSwgMSksICgnTnVtJywgKDEsIDQpLCAyKSwgKCdTdGFycmVkJywgKDEsIDEwKSwgKCdOYW1lJywgKDEsIDExKSwgJ2QnLCAoJ0xvYWQnLCkpLCAoJ0xvYWQnLCkpXSwgWygna2V5d29yZCcsICdjJywgKCdOdW0nLCAoMSwgOCksIDMpKSwgKCdrZXl3b3JkJywgTm9uZSwgKCdOYW1lJywgKDEsIDE1KSwgJ2UnLCAoJ0xvYWQnLCkpKV0pKSwKICgnRXhwcmVzc2lvbicsICgnTnVtJywgKDEsIDApLCAxMCkpLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9hc3luY2dlbi5weSBiL0xpYi90ZXN0L3Rlc3RfYXN5bmNnZW4ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzRhYjhhMAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfYXN5bmNnZW4ucHkKQEAgLTAsMCArMSwxMDQ0IEBACitpbXBvcnQgaW5zcGVjdAoraW1wb3J0IHN5cworaW1wb3J0IHR5cGVzCitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSB1bml0dGVzdCBpbXBvcnQgbW9jaworCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgaW1wb3J0X21vZHVsZQorYXN5bmNpbyA9IGltcG9ydF9tb2R1bGUoImFzeW5jaW8iKQorCisKK2NsYXNzIEF3YWl0RXhjZXB0aW9uKEV4Y2VwdGlvbik6CisgICAgcGFzcworCisKK0B0eXBlcy5jb3JvdXRpbmUKK2RlZiBhd2FpdGFibGUoKiwgdGhyb3c9RmFsc2UpOgorICAgIGlmIHRocm93OgorICAgICAgICB5aWVsZCAoJ3Rocm93JywpCisgICAgZWxzZToKKyAgICAgICAgeWllbGQgKCdyZXN1bHQnLCkKKworCitkZWYgcnVuX3VudGlsX2NvbXBsZXRlKGNvcm8pOgorICAgIGV4YyA9IEZhbHNlCisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgZXhjOgorICAgICAgICAgICAgICAgIGV4YyA9IEZhbHNlCisgICAgICAgICAgICAgICAgZnV0ID0gY29yby50aHJvdyhBd2FpdEV4Y2VwdGlvbikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZnV0ID0gY29yby5zZW5kKE5vbmUpCisgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uIGFzIGV4OgorICAgICAgICAgICAgcmV0dXJuIGV4LmFyZ3NbMF0KKworICAgICAgICBpZiBmdXQgPT0gKCd0aHJvdycsKToKKyAgICAgICAgICAgIGV4YyA9IFRydWUKKworCitkZWYgdG9fbGlzdChnZW4pOgorICAgIGFzeW5jIGRlZiBpdGVyYXRlKCk6CisgICAgICAgIHJlcyA9IFtdCisgICAgICAgIGFzeW5jIGZvciBpIGluIGdlbjoKKyAgICAgICAgICAgIHJlcy5hcHBlbmQoaSkKKyAgICAgICAgcmV0dXJuIHJlcworCisgICAgcmV0dXJuIHJ1bl91bnRpbF9jb21wbGV0ZShpdGVyYXRlKCkpCisKKworY2xhc3MgQXN5bmNHZW5TeW50YXhUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9zeW50YXhfMDEoc2VsZik6CisgICAgICAgIGNvZGUgPSAnJydhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBhd2FpdCBhYmMKKyAgICAgICAgICAgIHlpZWxkIGZyb20gMTIzCisgICAgICAgICcnJworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgJ3lpZWxkIGZyb20uKmluc2lkZSBhc3luYycpOgorICAgICAgICAgICAgZXhlYyhjb2RlLCB7fSwge30pCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fc3ludGF4XzAyKHNlbGYpOgorICAgICAgICBjb2RlID0gJycnYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgeWllbGQgZnJvbSAxMjMKKyAgICAgICAgJycnCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5bnRheEVycm9yLCAneWllbGQgZnJvbS4qaW5zaWRlIGFzeW5jJyk6CisgICAgICAgICAgICBleGVjKGNvZGUsIHt9LCB7fSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9zeW50YXhfMDMoc2VsZik6CisgICAgICAgIGNvZGUgPSAnJydhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBhd2FpdCBhYmMKKyAgICAgICAgICAgIHlpZWxkCisgICAgICAgICAgICByZXR1cm4gMTIzCisgICAgICAgICcnJworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgJ3JldHVybi4qdmFsdWUuKmFzeW5jIGdlbicpOgorICAgICAgICAgICAgZXhlYyhjb2RlLCB7fSwge30pCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fc3ludGF4XzA0KHNlbGYpOgorICAgICAgICBjb2RlID0gJycnYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgeWllbGQKKyAgICAgICAgICAgIHJldHVybiAxMjMKKyAgICAgICAgJycnCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5bnRheEVycm9yLCAncmV0dXJuLip2YWx1ZS4qYXN5bmMgZ2VuJyk6CisgICAgICAgICAgICBleGVjKGNvZGUsIHt9LCB7fSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9zeW50YXhfMDUoc2VsZik6CisgICAgICAgIGNvZGUgPSAnJydhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBpZiAwOgorICAgICAgICAgICAgICAgIHlpZWxkCisgICAgICAgICAgICByZXR1cm4gMTIKKyAgICAgICAgJycnCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5bnRheEVycm9yLCAncmV0dXJuLip2YWx1ZS4qYXN5bmMgZ2VuJyk6CisgICAgICAgICAgICBleGVjKGNvZGUsIHt9LCB7fSkKKworCitjbGFzcyBBc3luY0dlblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIGNvbXBhcmVfZ2VuZXJhdG9ycyhzZWxmLCBzeW5jX2dlbiwgYXN5bmNfZ2VuKToKKyAgICAgICAgZGVmIHN5bmNfaXRlcmF0ZShnKToKKyAgICAgICAgICAgIHJlcyA9IFtdCisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgcmVzLmFwcGVuZChnLl9fbmV4dF9fKCkpCisgICAgICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICAgICAgICAgIHJlcy5hcHBlbmQoJ1NUT1AnKQorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXg6CisgICAgICAgICAgICAgICAgICAgIHJlcy5hcHBlbmQoc3RyKHR5cGUoZXgpKSkKKyAgICAgICAgICAgIHJldHVybiByZXMKKworICAgICAgICBkZWYgYXN5bmNfaXRlcmF0ZShnKToKKyAgICAgICAgICAgIHJlcyA9IFtdCisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgZy5fX2FuZXh0X18oKS5fX25leHRfXygpCisgICAgICAgICAgICAgICAgZXhjZXB0IFN0b3BBc3luY0l0ZXJhdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgcmVzLmFwcGVuZCgnU1RPUCcpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb24gYXMgZXg6CisgICAgICAgICAgICAgICAgICAgIGlmIGV4LmFyZ3M6CisgICAgICAgICAgICAgICAgICAgICAgICByZXMuYXBwZW5kKGV4LmFyZ3NbMF0pCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICByZXMuYXBwZW5kKCdFTVBUWSBTdG9wSXRlcmF0aW9uJykKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBleDoKKyAgICAgICAgICAgICAgICAgICAgcmVzLmFwcGVuZChzdHIodHlwZShleCkpKQorICAgICAgICAgICAgcmV0dXJuIHJlcworCisgICAgICAgIHN5bmNfZ2VuX3Jlc3VsdCA9IHN5bmNfaXRlcmF0ZShzeW5jX2dlbikKKyAgICAgICAgYXN5bmNfZ2VuX3Jlc3VsdCA9IGFzeW5jX2l0ZXJhdGUoYXN5bmNfZ2VuKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5bmNfZ2VuX3Jlc3VsdCwgYXN5bmNfZ2VuX3Jlc3VsdCkKKyAgICAgICAgcmV0dXJuIGFzeW5jX2dlbl9yZXN1bHQKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9pdGVyYXRpb25fMDEoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBnZW4oKToKKyAgICAgICAgICAgIGF3YWl0IGF3YWl0YWJsZSgpCisgICAgICAgICAgICBhID0geWllbGQgMTIzCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGEsIE5vbmUpCisgICAgICAgICAgICBhd2FpdCBhd2FpdGFibGUoKQorICAgICAgICAgICAgeWllbGQgNDU2CisgICAgICAgICAgICBhd2FpdCBhd2FpdGFibGUoKQorICAgICAgICAgICAgeWllbGQgNzg5CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0b19saXN0KGdlbigpKSwgWzEyMywgNDU2LCA3ODldKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2l0ZXJhdGlvbl8wMihzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgYXdhaXQgYXdhaXRhYmxlKCkKKyAgICAgICAgICAgIHlpZWxkIDEyMworICAgICAgICAgICAgYXdhaXQgYXdhaXRhYmxlKCkKKworICAgICAgICBnID0gZ2VuKCkKKyAgICAgICAgYWkgPSBnLl9fYWl0ZXJfXygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWkuX19hbmV4dF9fKCkuX19uZXh0X18oKSwgKCdyZXN1bHQnLCkpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgYWkuX19hbmV4dF9fKCkuX19uZXh0X18oKQorICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBleDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXguYXJnc1swXSwgMTIzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdTdG9wSXRlcmF0aW9uIHdhcyBub3QgcmFpc2VkJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFpLl9fYW5leHRfXygpLl9fbmV4dF9fKCksICgncmVzdWx0JywpKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGFpLl9fYW5leHRfXygpLl9fbmV4dF9fKCkKKyAgICAgICAgZXhjZXB0IFN0b3BBc3luY0l0ZXJhdGlvbiBhcyBleDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXguYXJncykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnU3RvcEFzeW5jSXRlcmF0aW9uIHdhcyBub3QgcmFpc2VkJykKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9leGNlcHRpb25fMDMoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBnZW4oKToKKyAgICAgICAgICAgIGF3YWl0IGF3YWl0YWJsZSgpCisgICAgICAgICAgICB5aWVsZCAxMjMKKyAgICAgICAgICAgIGF3YWl0IGF3YWl0YWJsZSh0aHJvdz1UcnVlKQorICAgICAgICAgICAgeWllbGQgNDU2CisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBd2FpdEV4Y2VwdGlvbik6CisgICAgICAgICAgICB0b19saXN0KGdlbigpKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2V4Y2VwdGlvbl8wNChzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgYXdhaXQgYXdhaXRhYmxlKCkKKyAgICAgICAgICAgIHlpZWxkIDEyMworICAgICAgICAgICAgMSAvIDAKKworICAgICAgICBnID0gZ2VuKCkKKyAgICAgICAgYWkgPSBnLl9fYWl0ZXJfXygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWkuX19hbmV4dF9fKCkuX19uZXh0X18oKSwgKCdyZXN1bHQnLCkpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgYWkuX19hbmV4dF9fKCkuX19uZXh0X18oKQorICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBleDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXguYXJnc1swXSwgMTIzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdTdG9wSXRlcmF0aW9uIHdhcyBub3QgcmFpc2VkJykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yKToKKyAgICAgICAgICAgIGFpLl9fYW5leHRfXygpLl9fbmV4dF9fKCkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9leGNlcHRpb25fMDUoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBnZW4oKToKKyAgICAgICAgICAgIHlpZWxkIDEyMworICAgICAgICAgICAgcmFpc2UgU3RvcEFzeW5jSXRlcmF0aW9uCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFJ1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhc3luYyBnZW5lcmF0b3IuKlN0b3BBc3luY0l0ZXJhdGlvbicpOgorICAgICAgICAgICAgdG9fbGlzdChnZW4oKSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9leGNlcHRpb25fMDYoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBnZW4oKToKKyAgICAgICAgICAgIHlpZWxkIDEyMworICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChSdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXN5bmMgZ2VuZXJhdG9yLipTdG9wSXRlcmF0aW9uJyk6CisgICAgICAgICAgICB0b19saXN0KGdlbigpKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2V4Y2VwdGlvbl8wNyhzZWxmKToKKyAgICAgICAgZGVmIHN5bmNfZ2VuKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgICAgIDEgLyAwCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHlpZWxkIDIKKyAgICAgICAgICAgICAgICB5aWVsZCAzCisKKyAgICAgICAgICAgIHlpZWxkIDEwMAorCisgICAgICAgIGFzeW5jIGRlZiBhc3luY19nZW4oKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICAgICAgMSAvIDAKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgeWllbGQgMgorICAgICAgICAgICAgICAgIHlpZWxkIDMKKworICAgICAgICAgICAgeWllbGQgMTAwCisKKyAgICAgICAgc2VsZi5jb21wYXJlX2dlbmVyYXRvcnMoc3luY19nZW4oKSwgYXN5bmNfZ2VuKCkpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fZXhjZXB0aW9uXzA4KHNlbGYpOgorICAgICAgICBkZWYgc3luY19nZW4oKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHlpZWxkIDIKKyAgICAgICAgICAgICAgICAxIC8gMAorICAgICAgICAgICAgICAgIHlpZWxkIDMKKworICAgICAgICAgICAgeWllbGQgMTAwCisKKyAgICAgICAgYXN5bmMgZGVmIGFzeW5jX2dlbigpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgICAgICBhd2FpdCBhd2FpdGFibGUoKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBhd2FpdCBhd2FpdGFibGUoKQorICAgICAgICAgICAgICAgIHlpZWxkIDIKKyAgICAgICAgICAgICAgICAxIC8gMAorICAgICAgICAgICAgICAgIHlpZWxkIDMKKworICAgICAgICAgICAgeWllbGQgMTAwCisKKyAgICAgICAgc2VsZi5jb21wYXJlX2dlbmVyYXRvcnMoc3luY19nZW4oKSwgYXN5bmNfZ2VuKCkpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fZXhjZXB0aW9uXzA5KHNlbGYpOgorICAgICAgICBkZWYgc3luY19nZW4oKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICAgICAgMSAvIDAKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgeWllbGQgMgorICAgICAgICAgICAgICAgIHlpZWxkIDMKKworICAgICAgICAgICAgeWllbGQgMTAwCisKKyAgICAgICAgYXN5bmMgZGVmIGFzeW5jX2dlbigpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGF3YWl0IGF3YWl0YWJsZSgpCisgICAgICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgICAgIDEgLyAwCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHlpZWxkIDIKKyAgICAgICAgICAgICAgICBhd2FpdCBhd2FpdGFibGUoKQorICAgICAgICAgICAgICAgIHlpZWxkIDMKKworICAgICAgICAgICAgeWllbGQgMTAwCisKKyAgICAgICAgc2VsZi5jb21wYXJlX2dlbmVyYXRvcnMoc3luY19nZW4oKSwgYXN5bmNfZ2VuKCkpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fZXhjZXB0aW9uXzEwKHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZ2VuKCk6CisgICAgICAgICAgICB5aWVsZCAxMjMKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub24tTm9uZSB2YWx1ZSAuKiBhc3luYyBnZW5lcmF0b3IiKToKKyAgICAgICAgICAgIGdlbigpLl9fYW5leHRfXygpLnNlbmQoMTAwKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FwaV8wMShzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgeWllbGQgMTIzCisKKyAgICAgICAgZyA9IGdlbigpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnLl9fbmFtZV9fLCAnZ2VuJykKKyAgICAgICAgZy5fX25hbWVfXyA9ICcxMjMnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZy5fX25hbWVfXywgJzEyMycpCisKKyAgICAgICAgc2VsZi5hc3NlcnRJbignLmdlbicsIGcuX19xdWFsbmFtZV9fKQorICAgICAgICBnLl9fcXVhbG5hbWVfXyA9ICcxMjMnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZy5fX3F1YWxuYW1lX18sICcxMjMnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGcuYWdfYXdhaXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShnLmFnX2ZyYW1lLCB0eXBlcy5GcmFtZVR5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZy5hZ19ydW5uaW5nKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZy5hZ19jb2RlLCB0eXBlcy5Db2RlVHlwZSkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5zcGVjdC5pc2F3YWl0YWJsZShnLmFjbG9zZSgpKSkKKworCitjbGFzcyBBc3luY0dlbkFzeW5jaW9UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5sb29wID0gYXN5bmNpby5uZXdfZXZlbnRfbG9vcCgpCisgICAgICAgIGFzeW5jaW8uc2V0X2V2ZW50X2xvb3AoTm9uZSkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgc2VsZi5sb29wLmNsb3NlKCkKKyAgICAgICAgc2VsZi5sb29wID0gTm9uZQorCisgICAgYXN5bmMgZGVmIHRvX2xpc3Qoc2VsZiwgZ2VuKToKKyAgICAgICAgcmVzID0gW10KKyAgICAgICAgYXN5bmMgZm9yIGkgaW4gZ2VuOgorICAgICAgICAgICAgcmVzLmFwcGVuZChpKQorICAgICAgICByZXR1cm4gcmVzCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb18wMShzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgIHlpZWxkIDIKKyAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIHlpZWxkIDMKKworICAgICAgICByZXMgPSBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYudG9fbGlzdChnZW4oKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCBbMSwgMl0pCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb18wMihzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgIHlpZWxkIDIKKyAgICAgICAgICAgIDEgLyAwCisgICAgICAgICAgICB5aWVsZCAzCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcik6CisgICAgICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYudG9fbGlzdChnZW4oKSkpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb18wMyhzZWxmKToKKyAgICAgICAgbG9vcCA9IHNlbGYubG9vcAorCisgICAgICAgIGNsYXNzIEdlbjoKKyAgICAgICAgICAgIGFzeW5jIGRlZiBfX2FpdGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1sb29wKQorICAgICAgICAgICAgICAgIHlpZWxkIDIKKworICAgICAgICByZXMgPSBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLnRvX2xpc3QoR2VuKCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgWzEsIDJdKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FzeW5jaW9fYW5leHRfMDQoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgeWllbGQgMgorICAgICAgICAgICAgICAgIHlpZWxkIDMKKyAgICAgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvcjoKKyAgICAgICAgICAgICAgICB5aWVsZCAxMDAwCisgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgeWllbGQgNAorCisgICAgICAgIGFzeW5jIGRlZiBydW4xKCk6CisgICAgICAgICAgICBpdCA9IGZvbygpLl9fYWl0ZXJfXygpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXdhaXQgaXQuX19hbmV4dF9fKCksIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF3YWl0IGl0Ll9fYW5leHRfXygpLCAyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhd2FpdCBpdC5fX2FuZXh0X18oKSwgMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXdhaXQgaXQuX19hbmV4dF9fKCksIDQpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BBc3luY0l0ZXJhdGlvbik6CisgICAgICAgICAgICAgICAgYXdhaXQgaXQuX19hbmV4dF9fKCkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEFzeW5jSXRlcmF0aW9uKToKKyAgICAgICAgICAgICAgICBhd2FpdCBpdC5fX2FuZXh0X18oKQorCisgICAgICAgIGFzeW5jIGRlZiBydW4yKCk6CisgICAgICAgICAgICBpdCA9IGZvbygpLl9fYWl0ZXJfXygpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXdhaXQgaXQuX19hbmV4dF9fKCksIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF3YWl0IGl0Ll9fYW5leHRfXygpLCAyKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGl0Ll9fYW5leHRfXygpLnRocm93KFplcm9EaXZpc2lvbkVycm9yKQorICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb24gYXMgZXg6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleC5hcmdzWzBdLCAxMDAwKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1N0b3BJdGVyYXRpb24gd2FzIG5vdCByYWlzZWQnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhd2FpdCBpdC5fX2FuZXh0X18oKSwgNCkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEFzeW5jSXRlcmF0aW9uKToKKyAgICAgICAgICAgICAgICBhd2FpdCBpdC5fX2FuZXh0X18oKQorCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUocnVuMSgpKQorICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJ1bjIoKSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9hc3luY2lvX2FuZXh0XzA1KHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICB2ID0geWllbGQgMQorICAgICAgICAgICAgdiA9IHlpZWxkIHYKKyAgICAgICAgICAgIHlpZWxkIHYgKiAxMDAKKworICAgICAgICBhc3luYyBkZWYgcnVuKCk6CisgICAgICAgICAgICBpdCA9IGZvbygpLl9fYWl0ZXJfXygpCisKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpdC5fX2FuZXh0X18oKS5zZW5kKE5vbmUpCisgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBleDoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4LmFyZ3NbMF0sIDEpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnU3RvcEl0ZXJhdGlvbiB3YXMgbm90IHJhaXNlZCcpCisKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpdC5fX2FuZXh0X18oKS5zZW5kKDEwKQorICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb24gYXMgZXg6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleC5hcmdzWzBdLCAxMCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdTdG9wSXRlcmF0aW9uIHdhcyBub3QgcmFpc2VkJykKKworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGl0Ll9fYW5leHRfXygpLnNlbmQoMTIpCisgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBleDoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4LmFyZ3NbMF0sIDEyMDApCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnU3RvcEl0ZXJhdGlvbiB3YXMgbm90IHJhaXNlZCcpCisKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEFzeW5jSXRlcmF0aW9uKToKKyAgICAgICAgICAgICAgICBhd2FpdCBpdC5fX2FuZXh0X18oKQorCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUocnVuKCkpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb19hbmV4dF8wNihzZWxmKToKKyAgICAgICAgRE9ORSA9IDAKKworICAgICAgICAjIHRlc3Qgc3luY2hyb25vdXMgZ2VuZXJhdG9ycworICAgICAgICBkZWYgZm9vKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgeWllbGQKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIGcgPSBmb28oKQorICAgICAgICBnLnNlbmQoTm9uZSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uKToKKyAgICAgICAgICAgIGcuc2VuZChOb25lKQorCisgICAgICAgICMgbm93IHdpdGggYXN5bmNocm9ub3VzIGdlbmVyYXRvcnMKKworICAgICAgICBhc3luYyBkZWYgZ2VuKCk6CisgICAgICAgICAgICBub25sb2NhbCBET05FCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgeWllbGQKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBET05FID0gMQorCisgICAgICAgIGFzeW5jIGRlZiBydW4oKToKKyAgICAgICAgICAgIG5vbmxvY2FsIERPTkUKKyAgICAgICAgICAgIGcgPSBnZW4oKQorICAgICAgICAgICAgYXdhaXQgZy5hc2VuZChOb25lKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTdG9wQXN5bmNJdGVyYXRpb24pOgorICAgICAgICAgICAgICAgIGF3YWl0IGcuYXNlbmQoTm9uZSkKKyAgICAgICAgICAgIERPTkUgKz0gMTAKKworICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJ1bigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERPTkUsIDExKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FzeW5jaW9fYW5leHRfdHVwbGUoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCAoMSwpCisgICAgICAgICAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3I6CisgICAgICAgICAgICAgICAgeWllbGQgKDIsKQorCisgICAgICAgIGFzeW5jIGRlZiBydW4oKToKKyAgICAgICAgICAgIGl0ID0gZm9vKCkuX19haXRlcl9fKCkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhd2FpdCBpdC5fX2FuZXh0X18oKSwgKDEsKSkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbikgYXMgY206CisgICAgICAgICAgICAgICAgaXQuX19hbmV4dF9fKCkudGhyb3coWmVyb0RpdmlzaW9uRXJyb3IpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5hcmdzWzBdLCAoMiwpKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTdG9wQXN5bmNJdGVyYXRpb24pOgorICAgICAgICAgICAgICAgIGF3YWl0IGl0Ll9fYW5leHRfXygpCisKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShydW4oKSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9hc3luY2lvX2FuZXh0X3N0b3BpdGVyYXRpb24oc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCBTdG9wSXRlcmF0aW9uKDEpCisgICAgICAgICAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3I6CisgICAgICAgICAgICAgICAgeWllbGQgU3RvcEl0ZXJhdGlvbigzKQorCisgICAgICAgIGFzeW5jIGRlZiBydW4oKToKKyAgICAgICAgICAgIGl0ID0gZm9vKCkuX19haXRlcl9fKCkKKworICAgICAgICAgICAgdiA9IGF3YWl0IGl0Ll9fYW5leHRfXygpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UodiwgU3RvcEl0ZXJhdGlvbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodi52YWx1ZSwgMSkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbikgYXMgY206CisgICAgICAgICAgICAgICAgaXQuX19hbmV4dF9fKCkudGhyb3coWmVyb0RpdmlzaW9uRXJyb3IpCisgICAgICAgICAgICB2ID0gY20uZXhjZXB0aW9uLmFyZ3NbMF0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh2LCBTdG9wSXRlcmF0aW9uKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LnZhbHVlLCAzKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTdG9wQXN5bmNJdGVyYXRpb24pOgorICAgICAgICAgICAgICAgIGF3YWl0IGl0Ll9fYW5leHRfXygpCisKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShydW4oKSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9hc3luY2lvX2FjbG9zZV8wNihzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgICAgICAxIC8gMAorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIHlpZWxkIDEyCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bigpOgorICAgICAgICAgICAgZ2VuID0gZm9vKCkKKyAgICAgICAgICAgIGl0ID0gZ2VuLl9fYWl0ZXJfXygpCisgICAgICAgICAgICBhd2FpdCBpdC5fX2FuZXh0X18oKQorICAgICAgICAgICAgYXdhaXQgZ2VuLmFjbG9zZSgpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgICAgIFJ1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAiYXN5bmMgZ2VuZXJhdG9yIGlnbm9yZWQgR2VuZXJhdG9yRXhpdCIpOgorICAgICAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShydW4oKSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9hc3luY2lvX2FjbG9zZV8wNyhzZWxmKToKKyAgICAgICAgRE9ORSA9IDAKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBub25sb2NhbCBET05FCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgICAgIDEgLyAwCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICBET05FICs9IDEKKyAgICAgICAgICAgIERPTkUgKz0gMTAwMAorCisgICAgICAgIGFzeW5jIGRlZiBydW4oKToKKyAgICAgICAgICAgIGdlbiA9IGZvbygpCisgICAgICAgICAgICBpdCA9IGdlbi5fX2FpdGVyX18oKQorICAgICAgICAgICAgYXdhaXQgaXQuX19hbmV4dF9fKCkKKyAgICAgICAgICAgIGF3YWl0IGdlbi5hY2xvc2UoKQorCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUocnVuKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRE9ORSwgMSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9hc3luY2lvX2FjbG9zZV8wOChzZWxmKToKKyAgICAgICAgRE9ORSA9IDAKKworICAgICAgICBmdXQgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKworICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBub25sb2NhbCBET05FCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgICAgIGF3YWl0IGZ1dAorICAgICAgICAgICAgICAgIERPTkUgKz0gMTAwMAorICAgICAgICAgICAgICAgIHlpZWxkIDIKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIERPTkUgKz0gMQorICAgICAgICAgICAgRE9ORSArPSAxMDAwCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bigpOgorICAgICAgICAgICAgZ2VuID0gZm9vKCkKKyAgICAgICAgICAgIGl0ID0gZ2VuLl9fYWl0ZXJfXygpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF3YWl0IGl0Ll9fYW5leHRfXygpLCAxKQorICAgICAgICAgICAgdCA9IHNlbGYubG9vcC5jcmVhdGVfdGFzayhpdC5fX2FuZXh0X18oKSkKKyAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICBhd2FpdCBnZW4uYWNsb3NlKCkKKyAgICAgICAgICAgIHJldHVybiB0CisKKyAgICAgICAgdCA9IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUocnVuKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRE9ORSwgMSkKKworICAgICAgICAjIFNpbGVuY2UgUmVzb3VyY2VXYXJuaW5ncworICAgICAgICBmdXQuY2FuY2VsKCkKKyAgICAgICAgdC5jYW5jZWwoKQorICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FzeW5jaW9fZ2NfYWNsb3NlXzA5KHNlbGYpOgorICAgICAgICBET05FID0gMAorCisgICAgICAgIGFzeW5jIGRlZiBnZW4oKToKKyAgICAgICAgICAgIG5vbmxvY2FsIERPTkUKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICBET05FID0gMQorCisgICAgICAgIGFzeW5jIGRlZiBydW4oKToKKyAgICAgICAgICAgIGcgPSBnZW4oKQorICAgICAgICAgICAgYXdhaXQgZy5fX2FuZXh0X18oKQorICAgICAgICAgICAgYXdhaXQgZy5fX2FuZXh0X18oKQorICAgICAgICAgICAgZGVsIGcKKworICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjEsIGxvb3A9c2VsZi5sb29wKQorCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUocnVuKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRE9ORSwgMSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9hc3luY2lvX2FjbG9zZV8xMChzZWxmKToKKyAgICAgICAgRE9ORSA9IDAKKworICAgICAgICAjIHRlc3Qgc3luY2hyb25vdXMgZ2VuZXJhdG9ycworICAgICAgICBkZWYgZm9vKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgeWllbGQKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIGcgPSBmb28oKQorICAgICAgICBnLnNlbmQoTm9uZSkKKyAgICAgICAgZy5jbG9zZSgpCisKKyAgICAgICAgIyBub3cgd2l0aCBhc3luY2hyb25vdXMgZ2VuZXJhdG9ycworCisgICAgICAgIGFzeW5jIGRlZiBnZW4oKToKKyAgICAgICAgICAgIG5vbmxvY2FsIERPTkUKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZAorICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIERPTkUgPSAxCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bigpOgorICAgICAgICAgICAgbm9ubG9jYWwgRE9ORQorICAgICAgICAgICAgZyA9IGdlbigpCisgICAgICAgICAgICBhd2FpdCBnLmFzZW5kKE5vbmUpCisgICAgICAgICAgICBhd2FpdCBnLmFjbG9zZSgpCisgICAgICAgICAgICBET05FICs9IDEwCisKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShydW4oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChET05FLCAxMSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9hc3luY2lvX2FjbG9zZV8xMShzZWxmKToKKyAgICAgICAgRE9ORSA9IDAKKworICAgICAgICAjIHRlc3Qgc3luY2hyb25vdXMgZ2VuZXJhdG9ycworICAgICAgICBkZWYgZm9vKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgeWllbGQKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICB5aWVsZAorICAgICAgICBnID0gZm9vKCkKKyAgICAgICAgZy5zZW5kKE5vbmUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChSdW50aW1lRXJyb3IsICdpZ25vcmVkIEdlbmVyYXRvckV4aXQnKToKKyAgICAgICAgICAgIGcuY2xvc2UoKQorCisgICAgICAgICMgbm93IHdpdGggYXN5bmNocm9ub3VzIGdlbmVyYXRvcnMKKworICAgICAgICBhc3luYyBkZWYgZ2VuKCk6CisgICAgICAgICAgICBub25sb2NhbCBET05FCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgeWllbGQKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICB5aWVsZAorICAgICAgICAgICAgRE9ORSArPSAxCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bigpOgorICAgICAgICAgICAgbm9ubG9jYWwgRE9ORQorICAgICAgICAgICAgZyA9IGdlbigpCisgICAgICAgICAgICBhd2FpdCBnLmFzZW5kKE5vbmUpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoUnVudGltZUVycm9yLCAnaWdub3JlZCBHZW5lcmF0b3JFeGl0Jyk6CisgICAgICAgICAgICAgICAgYXdhaXQgZy5hY2xvc2UoKQorICAgICAgICAgICAgRE9ORSArPSAxMAorCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUocnVuKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRE9ORSwgMTApCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb19hc2VuZF8wMShzZWxmKToKKyAgICAgICAgRE9ORSA9IDAKKworICAgICAgICAjIFNhbml0eSBjaGVjazoKKyAgICAgICAgZGVmIHNnZW4oKToKKyAgICAgICAgICAgIHYgPSB5aWVsZCAxCisgICAgICAgICAgICB5aWVsZCB2ICogMgorICAgICAgICBzZyA9IHNnZW4oKQorICAgICAgICB2ID0gc2cuc2VuZChOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIDEpCisgICAgICAgIHYgPSBzZy5zZW5kKDEwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCAyMDApCisKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgbm9ubG9jYWwgRE9ORQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgdiA9IHlpZWxkIDEKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIHlpZWxkIHYgKiAyCisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIERPTkUgPSAxCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bigpOgorICAgICAgICAgICAgZyA9IGdlbigpCisKKyAgICAgICAgICAgIHYgPSBhd2FpdCBnLmFzZW5kKE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIDEpCisKKyAgICAgICAgICAgIHYgPSBhd2FpdCBnLmFzZW5kKDEwMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgMjAwKQorCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BBc3luY0l0ZXJhdGlvbik6CisgICAgICAgICAgICAgICAgYXdhaXQgZy5hc2VuZChOb25lKQorCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUocnVuKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRE9ORSwgMSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9hc3luY2lvX2FzZW5kXzAyKHNlbGYpOgorICAgICAgICBET05FID0gMAorCisgICAgICAgIGFzeW5jIGRlZiBzbGVlcF9uX2NyYXNoKGRlbGF5KToKKyAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoZGVsYXksIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgMSAvIDAKKworICAgICAgICBhc3luYyBkZWYgZ2VuKCk6CisgICAgICAgICAgICBub25sb2NhbCBET05FCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICB2ID0geWllbGQgMQorICAgICAgICAgICAgICAgIGF3YWl0IHNsZWVwX25fY3Jhc2goMC4wMSkKKyAgICAgICAgICAgICAgICBET05FICs9IDEwMDAKKyAgICAgICAgICAgICAgICB5aWVsZCB2ICogMgorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgRE9ORSA9IDEKKworICAgICAgICBhc3luYyBkZWYgcnVuKCk6CisgICAgICAgICAgICBnID0gZ2VuKCkKKworICAgICAgICAgICAgdiA9IGF3YWl0IGcuYXNlbmQoTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgMSkKKworICAgICAgICAgICAgYXdhaXQgZy5hc2VuZCgxMDApCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcik6CisgICAgICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJ1bigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERPTkUsIDEpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb19hc2VuZF8wMyhzZWxmKToKKyAgICAgICAgRE9ORSA9IDAKKworICAgICAgICBhc3luYyBkZWYgc2xlZXBfbl9jcmFzaChkZWxheSk6CisgICAgICAgICAgICBmdXQgPSBhc3luY2lvLmVuc3VyZV9mdXR1cmUoYXN5bmNpby5zbGVlcChkZWxheSwgbG9vcD1zZWxmLmxvb3ApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgc2VsZi5sb29wLmNhbGxfbGF0ZXIoZGVsYXkgLyAyLCBsYW1iZGE6IGZ1dC5jYW5jZWwoKSkKKyAgICAgICAgICAgIHJldHVybiBhd2FpdCBmdXQKKworICAgICAgICBhc3luYyBkZWYgZ2VuKCk6CisgICAgICAgICAgICBub25sb2NhbCBET05FCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICB2ID0geWllbGQgMQorICAgICAgICAgICAgICAgIGF3YWl0IHNsZWVwX25fY3Jhc2goMC4wMSkKKyAgICAgICAgICAgICAgICBET05FICs9IDEwMDAKKyAgICAgICAgICAgICAgICB5aWVsZCB2ICogMgorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgRE9ORSA9IDEKKworICAgICAgICBhc3luYyBkZWYgcnVuKCk6CisgICAgICAgICAgICBnID0gZ2VuKCkKKworICAgICAgICAgICAgdiA9IGF3YWl0IGcuYXNlbmQoTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgMSkKKworICAgICAgICAgICAgYXdhaXQgZy5hc2VuZCgxMDApCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhhc3luY2lvLkNhbmNlbGxlZEVycm9yKToKKyAgICAgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUocnVuKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRE9ORSwgMSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9hc3luY2lvX2F0aHJvd18wMShzZWxmKToKKyAgICAgICAgRE9ORSA9IDAKKworICAgICAgICBjbGFzcyBGb29FcihFeGNlcHRpb24pOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgICMgU2FuaXR5IGNoZWNrOgorICAgICAgICBkZWYgc2dlbigpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHYgPSB5aWVsZCAxCisgICAgICAgICAgICBleGNlcHQgRm9vRXI6CisgICAgICAgICAgICAgICAgdiA9IDEwMDAKKyAgICAgICAgICAgIHlpZWxkIHYgKiAyCisgICAgICAgIHNnID0gc2dlbigpCisgICAgICAgIHYgPSBzZy5zZW5kKE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgMSkKKyAgICAgICAgdiA9IHNnLnRocm93KEZvb0VyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIDIwMDApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbik6CisgICAgICAgICAgICBzZy5zZW5kKE5vbmUpCisKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgbm9ubG9jYWwgRE9ORQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICB2ID0geWllbGQgMQorICAgICAgICAgICAgICAgIGV4Y2VwdCBGb29FcjoKKyAgICAgICAgICAgICAgICAgICAgdiA9IDEwMDAKKyAgICAgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICB5aWVsZCB2ICogMgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgIyByZXR1cm4KKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIERPTkUgPSAxCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bigpOgorICAgICAgICAgICAgZyA9IGdlbigpCisKKyAgICAgICAgICAgIHYgPSBhd2FpdCBnLmFzZW5kKE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIDEpCisKKyAgICAgICAgICAgIHYgPSBhd2FpdCBnLmF0aHJvdyhGb29FcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgMjAwMCkKKworICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTdG9wQXN5bmNJdGVyYXRpb24pOgorICAgICAgICAgICAgICAgIGF3YWl0IGcuYXNlbmQoTm9uZSkKKworICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJ1bigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERPTkUsIDEpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb19hdGhyb3dfMDIoc2VsZik6CisgICAgICAgIERPTkUgPSAwCisKKyAgICAgICAgY2xhc3MgRm9vRXIoRXhjZXB0aW9uKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBhc3luYyBkZWYgc2xlZXBfbl9jcmFzaChkZWxheSk6CisgICAgICAgICAgICBmdXQgPSBhc3luY2lvLmVuc3VyZV9mdXR1cmUoYXN5bmNpby5zbGVlcChkZWxheSwgbG9vcD1zZWxmLmxvb3ApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgc2VsZi5sb29wLmNhbGxfbGF0ZXIoZGVsYXkgLyAyLCBsYW1iZGE6IGZ1dC5jYW5jZWwoKSkKKyAgICAgICAgICAgIHJldHVybiBhd2FpdCBmdXQKKworICAgICAgICBhc3luYyBkZWYgZ2VuKCk6CisgICAgICAgICAgICBub25sb2NhbCBET05FCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHYgPSB5aWVsZCAxCisgICAgICAgICAgICAgICAgZXhjZXB0IEZvb0VyOgorICAgICAgICAgICAgICAgICAgICBhd2FpdCBzbGVlcF9uX2NyYXNoKDAuMDEpCisgICAgICAgICAgICAgICAgeWllbGQgdiAqIDIKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgICMgcmV0dXJuCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICBET05FID0gMQorCisgICAgICAgIGFzeW5jIGRlZiBydW4oKToKKyAgICAgICAgICAgIGcgPSBnZW4oKQorCisgICAgICAgICAgICB2ID0gYXdhaXQgZy5hc2VuZChOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCAxKQorCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgYXdhaXQgZy5hdGhyb3coRm9vRXIpCisgICAgICAgICAgICBleGNlcHQgYXN5bmNpby5DYW5jZWxsZWRFcnJvcjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERPTkUsIDEpCisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdDYW5jZWxsZWRFcnJvciB3YXMgbm90IHJhaXNlZCcpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhhc3luY2lvLkNhbmNlbGxlZEVycm9yKToKKyAgICAgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUocnVuKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRE9ORSwgMSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9hc3luY2lvX2F0aHJvd18wMyhzZWxmKToKKyAgICAgICAgRE9ORSA9IDAKKworICAgICAgICAjIHRlc3Qgc3luY2hyb25vdXMgZ2VuZXJhdG9ycworICAgICAgICBkZWYgZm9vKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgeWllbGQKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIGcgPSBmb28oKQorICAgICAgICBnLnNlbmQoTm9uZSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uKToKKyAgICAgICAgICAgIGcudGhyb3coVmFsdWVFcnJvcikKKworICAgICAgICAjIG5vdyB3aXRoIGFzeW5jaHJvbm91cyBnZW5lcmF0b3JzCisKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgbm9ubG9jYWwgRE9ORQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHlpZWxkCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgRE9ORSA9IDEKKworICAgICAgICBhc3luYyBkZWYgcnVuKCk6CisgICAgICAgICAgICBub25sb2NhbCBET05FCisgICAgICAgICAgICBnID0gZ2VuKCkKKyAgICAgICAgICAgIGF3YWl0IGcuYXNlbmQoTm9uZSkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEFzeW5jSXRlcmF0aW9uKToKKyAgICAgICAgICAgICAgICBhd2FpdCBnLmF0aHJvdyhWYWx1ZUVycm9yKQorICAgICAgICAgICAgRE9ORSArPSAxMAorCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUocnVuKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRE9ORSwgMTEpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb19hdGhyb3dfdHVwbGUoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBnZW4oKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3I6CisgICAgICAgICAgICAgICAgeWllbGQgKDIsKQorCisgICAgICAgIGFzeW5jIGRlZiBydW4oKToKKyAgICAgICAgICAgIGcgPSBnZW4oKQorICAgICAgICAgICAgdiA9IGF3YWl0IGcuYXNlbmQoTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgMSkKKyAgICAgICAgICAgIHYgPSBhd2FpdCBnLmF0aHJvdyhaZXJvRGl2aXNpb25FcnJvcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgKDIsKSkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEFzeW5jSXRlcmF0aW9uKToKKyAgICAgICAgICAgICAgICBhd2FpdCBnLmFzZW5kKE5vbmUpCisKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShydW4oKSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9hc3luY2lvX2F0aHJvd19zdG9waXRlcmF0aW9uKHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZ2VuKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yOgorICAgICAgICAgICAgICAgIHlpZWxkIFN0b3BJdGVyYXRpb24oMikKKworICAgICAgICBhc3luYyBkZWYgcnVuKCk6CisgICAgICAgICAgICBnID0gZ2VuKCkKKyAgICAgICAgICAgIHYgPSBhd2FpdCBnLmFzZW5kKE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIDEpCisgICAgICAgICAgICB2ID0gYXdhaXQgZy5hdGhyb3coWmVyb0RpdmlzaW9uRXJyb3IpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UodiwgU3RvcEl0ZXJhdGlvbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodi52YWx1ZSwgMikKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEFzeW5jSXRlcmF0aW9uKToKKyAgICAgICAgICAgICAgICBhd2FpdCBnLmFzZW5kKE5vbmUpCisKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShydW4oKSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9hc3luY2lvX3NodXRkb3duXzAxKHNlbGYpOgorICAgICAgICBmaW5hbGl6ZWQgPSAwCisKKyAgICAgICAgYXN5bmMgZGVmIHdhaXRlcih0aW1lb3V0KToKKyAgICAgICAgICAgIG5vbmxvY2FsIGZpbmFsaXplZAorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAodGltZW91dCwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIGZpbmFsaXplZCArPSAxCisKKyAgICAgICAgYXN5bmMgZGVmIHdhaXQoKToKKyAgICAgICAgICAgIGFzeW5jIGZvciBfIGluIHdhaXRlcigxKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgdDEgPSBzZWxmLmxvb3AuY3JlYXRlX3Rhc2sod2FpdCgpKQorICAgICAgICB0MiA9IHNlbGYubG9vcC5jcmVhdGVfdGFzayh3YWl0KCkpCisKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShhc3luY2lvLnNsZWVwKDAuMSwgbG9vcD1zZWxmLmxvb3ApKQorCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5sb29wLnNodXRkb3duX2FzeW5jZ2VucygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbmFsaXplZCwgMikKKworICAgICAgICAjIFNpbGVuY2Ugd2FybmluZ3MKKyAgICAgICAgdDEuY2FuY2VsKCkKKyAgICAgICAgdDIuY2FuY2VsKCkKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShhc3luY2lvLnNsZWVwKDAuMSwgbG9vcD1zZWxmLmxvb3ApKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FzeW5jaW9fc2h1dGRvd25fMDIoc2VsZik6CisgICAgICAgIGxvZ2dlZCA9IDAKKworICAgICAgICBkZWYgbG9nZ2VyKGxvb3AsIGNvbnRleHQpOgorICAgICAgICAgICAgbm9ubG9jYWwgbG9nZ2VkCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdhc3luY2dlbicsIGNvbnRleHQpCisgICAgICAgICAgICBleHBlY3RlZCA9ICdhbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xvc2luZyBvZiBhc3luY2hyb25vdXMnCisgICAgICAgICAgICBpZiBleHBlY3RlZCBpbiBjb250ZXh0WydtZXNzYWdlJ106CisgICAgICAgICAgICAgICAgbG9nZ2VkICs9IDEKKworICAgICAgICBhc3luYyBkZWYgd2FpdGVyKHRpbWVvdXQpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAodGltZW91dCwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAxIC8gMAorCisgICAgICAgIGFzeW5jIGRlZiB3YWl0KCk6CisgICAgICAgICAgICBhc3luYyBmb3IgXyBpbiB3YWl0ZXIoMSk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHQgPSBzZWxmLmxvb3AuY3JlYXRlX3Rhc2sod2FpdCgpKQorICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKGFzeW5jaW8uc2xlZXAoMC4xLCBsb29wPXNlbGYubG9vcCkpCisKKyAgICAgICAgc2VsZi5sb29wLnNldF9leGNlcHRpb25faGFuZGxlcihsb2dnZXIpCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5sb29wLnNodXRkb3duX2FzeW5jZ2VucygpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9nZ2VkLCAxKQorCisgICAgICAgICMgU2lsZW5jZSB3YXJuaW5ncworICAgICAgICB0LmNhbmNlbCgpCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoYXN5bmNpby5zbGVlcCgwLjEsIGxvb3A9c2VsZi5sb29wKSkKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYXN5bmNoYXQucHkgYi9MaWIvdGVzdC90ZXN0X2FzeW5jaGF0LnB5CmluZGV4IDNhMzNmYzguLjBlYmE3NmQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYXN5bmNoYXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9hc3luY2hhdC5weQpAQCAtMTIsNyArMTIsNiBAQAogaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IHdhcm5pbmdzCiBpbXBvcnQgdW5pdHRlc3QubW9jawogdHJ5OgogICAgIGltcG9ydCB0aHJlYWRpbmcKQEAgLTI5NywzNyArMjk2LDYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhc3luY2hhdC5maW5kX3ByZWZpeF9hdF9lbmQoInF3ZXJ0eWRramYiLCAiXHJcbiIpLCAwKQogCiAKLWNsYXNzIFRlc3RGaWZvKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgdGVzdF9iYXNpYyhzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZykgYXMgY206Ci0gICAgICAgICAgICBmID0gYXN5bmNoYXQuZmlmbygpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLndhcm5pbmcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICJmaWZvIGNsYXNzIHdpbGwgYmUgcmVtb3ZlZCBpbiBQeXRob24gMy42IikKLSAgICAgICAgZi5wdXNoKDcpCi0gICAgICAgIGYucHVzaChiJ2EnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihmKSwgMikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLmZpcnN0KCksIDcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5wb3AoKSwgKDEsIDcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihmKSwgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLmZpcnN0KCksIGInYScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5pc19lbXB0eSgpLCBGYWxzZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnBvcCgpLCAoMSwgYidhJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGYpLCAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuaXNfZW1wdHkoKSwgVHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnBvcCgpLCAoMCwgTm9uZSkpCi0KLSAgICBkZWYgdGVzdF9naXZlbl9saXN0KHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKSBhcyBjbToKLSAgICAgICAgICAgIGYgPSBhc3luY2hhdC5maWZvKFtiJ3gnLCAxNywgM10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLndhcm5pbmcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICJmaWZvIGNsYXNzIHdpbGwgYmUgcmVtb3ZlZCBpbiBQeXRob24gMy42IikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZiksIDMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5wb3AoKSwgKDEsIGIneCcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucG9wKCksICgxLCAxNykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5wb3AoKSwgKDEsIDMpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucG9wKCksICgwLCBOb25lKSkKLQotCiBjbGFzcyBUZXN0Tm90Q29ubmVjdGVkKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9kaXNhbGxvd19uZWdhdGl2ZV90ZXJtaW5hdG9yKHNlbGYpOgogICAgICAgICAjIElzc3VlICMxMTI1OQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9hc3luY2lvL3Rlc3RfZnV0dXJlcy5weSBiL0xpYi90ZXN0L3Rlc3RfYXN5bmNpby90ZXN0X2Z1dHVyZXMucHkKaW5kZXggYzMwNmI3Ny4uODlhZmRjYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9hc3luY2lvL3Rlc3RfZnV0dXJlcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2FzeW5jaW8vdGVzdF9mdXR1cmVzLnB5CkBAIC05LDYgKzksNyBAQAogCiBpbXBvcnQgYXN5bmNpbwogZnJvbSBhc3luY2lvIGltcG9ydCB0ZXN0X3V0aWxzCitmcm9tIGFzeW5jaW8gaW1wb3J0IGZ1dHVyZXMKIHRyeToKICAgICBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKQEAgLTk0LDcgKzk1LDEwIEBACiAgICAgICAgIGFzc2VydCBnIGlzIGYKIAogCi1jbGFzcyBGdXR1cmVUZXN0cyh0ZXN0X3V0aWxzLlRlc3RDYXNlKToKK2NsYXNzIEJhc2VGdXR1cmVUZXN0czoKKworICAgIGRlZiBfbmV3X2Z1dHVyZShzZWxmLCBsb29wPU5vbmUpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHN1cGVyKCkuc2V0VXAoKQpAQCAtMTEwLDIyICsxMTQsMjIgQEAKIAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGFzeW5jaW8uaXNmdXR1cmUoTXlGdXR1cmUpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoYXN5bmNpby5pc2Z1dHVyZShNeUZ1dHVyZSgpKSkKLQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGFzeW5jaW8uaXNmdXR1cmUoMSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYXN5bmNpby5pc2Z1dHVyZShhc3luY2lvLkZ1dHVyZSkpCiAKICAgICAgICAgIyBBcyBgaXNpbnN0YW5jZShNb2NrKCksIEZ1dHVyZSlgIHJldHVybnMgYEZhbHNlYAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGFzeW5jaW8uaXNmdXR1cmUobW9jay5Nb2NrKCkpKQogCi0gICAgICAgICMgQXMgYGlzaW5zdGFuY2UoTW9jayhGdXR1cmUpLCBGdXR1cmUpYCByZXR1cm5zIGBUcnVlYAotICAgICAgICBzZWxmLmFzc2VydFRydWUoYXN5bmNpby5pc2Z1dHVyZShtb2NrLk1vY2soYXN5bmNpby5GdXR1cmUpKSkKLQotICAgICAgICBmID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGYgPSBzZWxmLl9uZXdfZnV0dXJlKGxvb3A9c2VsZi5sb29wKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoYXN5bmNpby5pc2Z1dHVyZShmKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShhc3luY2lvLmlzZnV0dXJlKHR5cGUoZikpKQorCisgICAgICAgICMgQXMgYGlzaW5zdGFuY2UoTW9jayhGdXR1cmUpLCBGdXR1cmUpYCByZXR1cm5zIGBUcnVlYAorICAgICAgICBzZWxmLmFzc2VydFRydWUoYXN5bmNpby5pc2Z1dHVyZShtb2NrLk1vY2sodHlwZShmKSkpKQorCiAgICAgICAgIGYuY2FuY2VsKCkKIAogICAgIGRlZiB0ZXN0X2luaXRpYWxfc3RhdGUoc2VsZik6Ci0gICAgICAgIGYgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZiA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi5jYW5jZWxsZWQoKSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmLmRvbmUoKSkKICAgICAgICAgZi5jYW5jZWwoKQpAQCAtMTMzLDE1ICsxMzcsMTUgQEAKIAogICAgIGRlZiB0ZXN0X2luaXRfY29uc3RydWN0b3JfZGVmYXVsdF9sb29wKHNlbGYpOgogICAgICAgICBhc3luY2lvLnNldF9ldmVudF9sb29wKHNlbGYubG9vcCkKLSAgICAgICAgZiA9IGFzeW5jaW8uRnV0dXJlKCkKKyAgICAgICAgZiA9IHNlbGYuX25ld19mdXR1cmUoKQogICAgICAgICBzZWxmLmFzc2VydElzKGYuX2xvb3AsIHNlbGYubG9vcCkKIAogICAgIGRlZiB0ZXN0X2NvbnN0cnVjdG9yX3Bvc2l0aW9uYWwoc2VsZik6CiAgICAgICAgICMgTWFrZSBzdXJlIEZ1dHVyZSBkb2Vzbid0IGFjY2VwdCBhIHBvc2l0aW9uYWwgYXJndW1lbnQKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBhc3luY2lvLkZ1dHVyZSwgNDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5fbmV3X2Z1dHVyZSwgNDIpCiAKICAgICBkZWYgdGVzdF9jYW5jZWwoc2VsZik6Ci0gICAgICAgIGYgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZiA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmLmNhbmNlbCgpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoZi5jYW5jZWxsZWQoKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGYuZG9uZSgpKQpAQCAtMTUyLDcgKzE1Niw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi5jYW5jZWwoKSkKIAogICAgIGRlZiB0ZXN0X3Jlc3VsdChzZWxmKToKLSAgICAgICAgZiA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmID0gc2VsZi5fbmV3X2Z1dHVyZShsb29wPXNlbGYubG9vcCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoYXN5bmNpby5JbnZhbGlkU3RhdGVFcnJvciwgZi5yZXN1bHQpCiAKICAgICAgICAgZi5zZXRfcmVzdWx0KDQyKQpAQCAtMTY2LDcgKzE3MCw3IEBACiAKICAgICBkZWYgdGVzdF9leGNlcHRpb24oc2VsZik6CiAgICAgICAgIGV4YyA9IFJ1bnRpbWVFcnJvcigpCi0gICAgICAgIGYgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZiA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGFzeW5jaW8uSW52YWxpZFN0YXRlRXJyb3IsIGYuZXhjZXB0aW9uKQogCiAgICAgICAgICMgU3RvcEl0ZXJhdGlvbiBjYW5ub3QgYmUgcmFpc2VkIGludG8gYSBGdXR1cmUgLSBDUHl0aG9uIGlzc3VlMjYyMjEKQEAgLTE4MywxMiArMTg3LDEyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi5jYW5jZWwoKSkKIAogICAgIGRlZiB0ZXN0X2V4Y2VwdGlvbl9jbGFzcyhzZWxmKToKLSAgICAgICAgZiA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmID0gc2VsZi5fbmV3X2Z1dHVyZShsb29wPXNlbGYubG9vcCkKICAgICAgICAgZi5zZXRfZXhjZXB0aW9uKFJ1bnRpbWVFcnJvcikKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGYuZXhjZXB0aW9uKCksIFJ1bnRpbWVFcnJvcikKIAogICAgIGRlZiB0ZXN0X3lpZWxkX2Zyb21fdHdpY2Uoc2VsZik6Ci0gICAgICAgIGYgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZiA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAKICAgICAgICAgZGVmIGZpeHR1cmUoKToKICAgICAgICAgICAgIHlpZWxkICdBJwpAQCAtMjA3LDcgKzIxMSw3IEBACiAKICAgICBkZWYgdGVzdF9mdXR1cmVfcmVwcihzZWxmKToKICAgICAgICAgc2VsZi5sb29wLnNldF9kZWJ1ZyhUcnVlKQotICAgICAgICBmX3BlbmRpbmdfZGVidWcgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZl9wZW5kaW5nX2RlYnVnID0gc2VsZi5fbmV3X2Z1dHVyZShsb29wPXNlbGYubG9vcCkKICAgICAgICAgZnJhbWUgPSBmX3BlbmRpbmdfZGVidWcuX3NvdXJjZV90cmFjZWJhY2tbLTFdCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihmX3BlbmRpbmdfZGVidWcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICc8RnV0dXJlIHBlbmRpbmcgY3JlYXRlZCBhdCAlczolcz4nCkBAIC0yMTUsMjEgKzIxOSwyMSBAQAogICAgICAgICBmX3BlbmRpbmdfZGVidWcuY2FuY2VsKCkKIAogICAgICAgICBzZWxmLmxvb3Auc2V0X2RlYnVnKEZhbHNlKQotICAgICAgICBmX3BlbmRpbmcgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZl9wZW5kaW5nID0gc2VsZi5fbmV3X2Z1dHVyZShsb29wPXNlbGYubG9vcCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGZfcGVuZGluZyksICc8RnV0dXJlIHBlbmRpbmc+JykKICAgICAgICAgZl9wZW5kaW5nLmNhbmNlbCgpCiAKLSAgICAgICAgZl9jYW5jZWxsZWQgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZl9jYW5jZWxsZWQgPSBzZWxmLl9uZXdfZnV0dXJlKGxvb3A9c2VsZi5sb29wKQogICAgICAgICBmX2NhbmNlbGxlZC5jYW5jZWwoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoZl9jYW5jZWxsZWQpLCAnPEZ1dHVyZSBjYW5jZWxsZWQ+JykKIAotICAgICAgICBmX3Jlc3VsdCA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmX3Jlc3VsdCA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIGZfcmVzdWx0LnNldF9yZXN1bHQoNCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGZfcmVzdWx0KSwgJzxGdXR1cmUgZmluaXNoZWQgcmVzdWx0PTQ+JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmX3Jlc3VsdC5yZXN1bHQoKSwgNCkKIAogICAgICAgICBleGMgPSBSdW50aW1lRXJyb3IoKQotICAgICAgICBmX2V4Y2VwdGlvbiA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmX2V4Y2VwdGlvbiA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIGZfZXhjZXB0aW9uLnNldF9leGNlcHRpb24oZXhjKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoZl9leGNlcHRpb24pLAogICAgICAgICAgICAgICAgICAgICAgICAgICc8RnV0dXJlIGZpbmlzaGVkIGV4Y2VwdGlvbj1SdW50aW1lRXJyb3IoKT4nKQpAQCAtMjQwLDcgKzI0NCw3IEBACiAgICAgICAgICAgICB0ZXh0ID0gJyVzKCkgYXQgJXM6JXMnICUgKGZ1bmMuX19xdWFsbmFtZV9fLCBmaWxlbmFtZSwgbGluZW5vKQogICAgICAgICAgICAgcmV0dXJuIHJlLmVzY2FwZSh0ZXh0KQogCi0gICAgICAgIGZfb25lX2NhbGxiYWNrcyA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmX29uZV9jYWxsYmFja3MgPSBzZWxmLl9uZXdfZnV0dXJlKGxvb3A9c2VsZi5sb29wKQogICAgICAgICBmX29uZV9jYWxsYmFja3MuYWRkX2RvbmVfY2FsbGJhY2soX2Zha2VmdW5jKQogICAgICAgICBmYWtlX3JlcHIgPSBmdW5jX3JlcHIoX2Zha2VmdW5jKQogICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHJlcHIoZl9vbmVfY2FsbGJhY2tzKSwKQEAgLTI0OSw3ICsyNTMsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoZl9vbmVfY2FsbGJhY2tzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAnPEZ1dHVyZSBjYW5jZWxsZWQ+JykKIAotICAgICAgICBmX3R3b19jYWxsYmFja3MgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZl90d29fY2FsbGJhY2tzID0gc2VsZi5fbmV3X2Z1dHVyZShsb29wPXNlbGYubG9vcCkKICAgICAgICAgZl90d29fY2FsbGJhY2tzLmFkZF9kb25lX2NhbGxiYWNrKGZpcnN0X2NiKQogICAgICAgICBmX3R3b19jYWxsYmFja3MuYWRkX2RvbmVfY2FsbGJhY2sobGFzdF9jYikKICAgICAgICAgZmlyc3RfcmVwciA9IGZ1bmNfcmVwcihmaXJzdF9jYikKQEAgLTI1OCw3ICsyNjIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIHInPEZ1dHVyZSBwZW5kaW5nIGNiPVxbJXMsICVzXF0+JwogICAgICAgICAgICAgICAgICAgICAgICAgICUgKGZpcnN0X3JlcHIsIGxhc3RfcmVwcikpCiAKLSAgICAgICAgZl9tYW55X2NhbGxiYWNrcyA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmX21hbnlfY2FsbGJhY2tzID0gc2VsZi5fbmV3X2Z1dHVyZShsb29wPXNlbGYubG9vcCkKICAgICAgICAgZl9tYW55X2NhbGxiYWNrcy5hZGRfZG9uZV9jYWxsYmFjayhmaXJzdF9jYikKICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoOCk6CiAgICAgICAgICAgICBmX21hbnlfY2FsbGJhY2tzLmFkZF9kb25lX2NhbGxiYWNrKF9mYWtlZnVuYykKQEAgLTI3MywzMSArMjc3LDMxIEBACiAgICAgZGVmIHRlc3RfY29weV9zdGF0ZShzZWxmKToKICAgICAgICAgZnJvbSBhc3luY2lvLmZ1dHVyZXMgaW1wb3J0IF9jb3B5X2Z1dHVyZV9zdGF0ZQogCi0gICAgICAgIGYgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZiA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIGYuc2V0X3Jlc3VsdCgxMCkKIAotICAgICAgICBuZXdmID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIG5ld2YgPSBzZWxmLl9uZXdfZnV0dXJlKGxvb3A9c2VsZi5sb29wKQogICAgICAgICBfY29weV9mdXR1cmVfc3RhdGUoZiwgbmV3ZikKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5ld2YuZG9uZSgpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld2YucmVzdWx0KCksIDEwKQogCi0gICAgICAgIGZfZXhjZXB0aW9uID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZfZXhjZXB0aW9uID0gc2VsZi5fbmV3X2Z1dHVyZShsb29wPXNlbGYubG9vcCkKICAgICAgICAgZl9leGNlcHRpb24uc2V0X2V4Y2VwdGlvbihSdW50aW1lRXJyb3IoKSkKIAotICAgICAgICBuZXdmX2V4Y2VwdGlvbiA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBuZXdmX2V4Y2VwdGlvbiA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIF9jb3B5X2Z1dHVyZV9zdGF0ZShmX2V4Y2VwdGlvbiwgbmV3Zl9leGNlcHRpb24pCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShuZXdmX2V4Y2VwdGlvbi5kb25lKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgbmV3Zl9leGNlcHRpb24ucmVzdWx0KQogCi0gICAgICAgIGZfY2FuY2VsbGVkID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZfY2FuY2VsbGVkID0gc2VsZi5fbmV3X2Z1dHVyZShsb29wPXNlbGYubG9vcCkKICAgICAgICAgZl9jYW5jZWxsZWQuY2FuY2VsKCkKIAotICAgICAgICBuZXdmX2NhbmNlbGxlZCA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBuZXdmX2NhbmNlbGxlZCA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIF9jb3B5X2Z1dHVyZV9zdGF0ZShmX2NhbmNlbGxlZCwgbmV3Zl9jYW5jZWxsZWQpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShuZXdmX2NhbmNlbGxlZC5jYW5jZWxsZWQoKSkKIAogICAgIGRlZiB0ZXN0X2l0ZXIoc2VsZik6Ci0gICAgICAgIGZ1dCA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmdXQgPSBzZWxmLl9uZXdfZnV0dXJlKGxvb3A9c2VsZi5sb29wKQogCiAgICAgICAgIGRlZiBjb3JvKCk6CiAgICAgICAgICAgICB5aWVsZCBmcm9tIGZ1dApAQCAtMzEwLDIwICszMTQsMjAgQEAKIAogICAgIEBtb2NrLnBhdGNoKCdhc3luY2lvLmJhc2VfZXZlbnRzLmxvZ2dlcicpCiAgICAgZGVmIHRlc3RfdGJfbG9nZ2VyX2FiYW5kb25lZChzZWxmLCBtX2xvZyk6Ci0gICAgICAgIGZ1dCA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmdXQgPSBzZWxmLl9uZXdfZnV0dXJlKGxvb3A9c2VsZi5sb29wKQogICAgICAgICBkZWwgZnV0CiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobV9sb2cuZXJyb3IuY2FsbGVkKQogCiAgICAgQG1vY2sucGF0Y2goJ2FzeW5jaW8uYmFzZV9ldmVudHMubG9nZ2VyJykKICAgICBkZWYgdGVzdF90Yl9sb2dnZXJfcmVzdWx0X3VucmV0cmlldmVkKHNlbGYsIG1fbG9nKToKLSAgICAgICAgZnV0ID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZ1dCA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIGZ1dC5zZXRfcmVzdWx0KDQyKQogICAgICAgICBkZWwgZnV0CiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobV9sb2cuZXJyb3IuY2FsbGVkKQogCiAgICAgQG1vY2sucGF0Y2goJ2FzeW5jaW8uYmFzZV9ldmVudHMubG9nZ2VyJykKICAgICBkZWYgdGVzdF90Yl9sb2dnZXJfcmVzdWx0X3JldHJpZXZlZChzZWxmLCBtX2xvZyk6Ci0gICAgICAgIGZ1dCA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmdXQgPSBzZWxmLl9uZXdfZnV0dXJlKGxvb3A9c2VsZi5sb29wKQogICAgICAgICBmdXQuc2V0X3Jlc3VsdCg0MikKICAgICAgICAgZnV0LnJlc3VsdCgpCiAgICAgICAgIGRlbCBmdXQKQEAgLTMzMSw3ICszMzUsNyBAQAogCiAgICAgQG1vY2sucGF0Y2goJ2FzeW5jaW8uYmFzZV9ldmVudHMubG9nZ2VyJykKICAgICBkZWYgdGVzdF90Yl9sb2dnZXJfZXhjZXB0aW9uX3VucmV0cmlldmVkKHNlbGYsIG1fbG9nKToKLSAgICAgICAgZnV0ID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZ1dCA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIGZ1dC5zZXRfZXhjZXB0aW9uKFJ1bnRpbWVFcnJvcignYm9vbScpKQogICAgICAgICBkZWwgZnV0CiAgICAgICAgIHRlc3RfdXRpbHMucnVuX2JyaWVmbHkoc2VsZi5sb29wKQpAQCAtMzQwLDcgKzM0NCw3IEBACiAKICAgICBAbW9jay5wYXRjaCgnYXN5bmNpby5iYXNlX2V2ZW50cy5sb2dnZXInKQogICAgIGRlZiB0ZXN0X3RiX2xvZ2dlcl9leGNlcHRpb25fcmV0cmlldmVkKHNlbGYsIG1fbG9nKToKLSAgICAgICAgZnV0ID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZ1dCA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIGZ1dC5zZXRfZXhjZXB0aW9uKFJ1bnRpbWVFcnJvcignYm9vbScpKQogICAgICAgICBmdXQuZXhjZXB0aW9uKCkKICAgICAgICAgZGVsIGZ1dApAQCAtMzQ4LDcgKzM1Miw3IEBACiAKICAgICBAbW9jay5wYXRjaCgnYXN5bmNpby5iYXNlX2V2ZW50cy5sb2dnZXInKQogICAgIGRlZiB0ZXN0X3RiX2xvZ2dlcl9leGNlcHRpb25fcmVzdWx0X3JldHJpZXZlZChzZWxmLCBtX2xvZyk6Ci0gICAgICAgIGZ1dCA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmdXQgPSBzZWxmLl9uZXdfZnV0dXJlKGxvb3A9c2VsZi5sb29wKQogICAgICAgICBmdXQuc2V0X2V4Y2VwdGlvbihSdW50aW1lRXJyb3IoJ2Jvb20nKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBmdXQucmVzdWx0KQogICAgICAgICBkZWwgZnV0CkBAIC0zNjIsMTIgKzM2NiwxMiBAQAogICAgICAgICBmMSA9IGV4LnN1Ym1pdChydW4sICdvaScpCiAgICAgICAgIGYyID0gYXN5bmNpby53cmFwX2Z1dHVyZShmMSwgbG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIHJlcywgaWRlbnQgPSBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKGYyKQotICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZjIsIGFzeW5jaW8uRnV0dXJlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYXN5bmNpby5pc2Z1dHVyZShmMikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCAnb2knKQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkZW50LCB0aHJlYWRpbmcuZ2V0X2lkZW50KCkpCiAKICAgICBkZWYgdGVzdF93cmFwX2Z1dHVyZV9mdXR1cmUoc2VsZik6Ci0gICAgICAgIGYxID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGYxID0gc2VsZi5fbmV3X2Z1dHVyZShsb29wPXNlbGYubG9vcCkKICAgICAgICAgZjIgPSBhc3luY2lvLndyYXBfZnV0dXJlKGYxKQogICAgICAgICBzZWxmLmFzc2VydElzKGYxLCBmMikKIApAQCAtNDAyLDEwICs0MDYsMTAgQEAKICAgICBkZWYgdGVzdF9mdXR1cmVfc291cmNlX3RyYWNlYmFjayhzZWxmKToKICAgICAgICAgc2VsZi5sb29wLnNldF9kZWJ1ZyhUcnVlKQogCi0gICAgICAgIGZ1dHVyZSA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmdXR1cmUgPSBzZWxmLl9uZXdfZnV0dXJlKGxvb3A9c2VsZi5sb29wKQogICAgICAgICBsaW5lbm8gPSBzeXMuX2dldGZyYW1lKCkuZl9saW5lbm8gLSAxCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShmdXR1cmUuX3NvdXJjZV90cmFjZWJhY2ssIGxpc3QpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnV0dXJlLl9zb3VyY2VfdHJhY2ViYWNrWy0xXVs6M10sCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnV0dXJlLl9zb3VyY2VfdHJhY2ViYWNrWy0yXVs6M10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fZmlsZV9fLAogICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lbm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0X2Z1dHVyZV9zb3VyY2VfdHJhY2ViYWNrJykpCkBAIC00MjEsNTcgKzQyNSwxOCBAQAogICAgICAgICAgICAgICAgIHJldHVybiBleGMKICAgICAgICAgZXhjID0gbWVtb3J5X2Vycm9yKCkKIAotICAgICAgICBmdXR1cmUgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKLSAgICAgICAgaWYgZGVidWc6Ci0gICAgICAgICAgICBzb3VyY2VfdHJhY2ViYWNrID0gZnV0dXJlLl9zb3VyY2VfdHJhY2ViYWNrCisgICAgICAgIGZ1dHVyZSA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIGZ1dHVyZS5zZXRfZXhjZXB0aW9uKGV4YykKICAgICAgICAgZnV0dXJlID0gTm9uZQogICAgICAgICB0ZXN0X3V0aWxzLnJ1bl9icmllZmx5KHNlbGYubG9vcCkKICAgICAgICAgc3VwcG9ydC5nY19jb2xsZWN0KCkKIAogICAgICAgICBpZiBzeXMudmVyc2lvbl9pbmZvID49ICgzLCA0KToKLSAgICAgICAgICAgIGlmIGRlYnVnOgotICAgICAgICAgICAgICAgIGZyYW1lID0gc291cmNlX3RyYWNlYmFja1stMV0KLSAgICAgICAgICAgICAgICByZWdleCA9IChyJ15GdXR1cmUgZXhjZXB0aW9uIHdhcyBuZXZlciByZXRyaWV2ZWRcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICByJ2Z1dHVyZTogPEZ1dHVyZSBmaW5pc2hlZCBleGNlcHRpb249TWVtb3J5RXJyb3JcKFwpICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidjcmVhdGVkIGF0IHtmaWxlbmFtZX06e2xpbmVub30+XG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgcidzb3VyY2VfdHJhY2ViYWNrOiBPYmplY3QgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInY3JlYXRlZCBhdCBcKG1vc3QgcmVjZW50IGNhbGwgbGFzdFwpOlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgIHInICBGaWxlJwotICAgICAgICAgICAgICAgICAgICAgICAgIHInLipcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICByJyAgRmlsZSAie2ZpbGVuYW1lfSIsIGxpbmUge2xpbmVub30sICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ2luIGNoZWNrX2Z1dHVyZV9leGNlcHRpb25fbmV2ZXJfcmV0cmlldmVkXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgcicgICAgZnV0dXJlID0gYXN5bmNpb1wuRnV0dXJlXChsb29wPXNlbGZcLmxvb3BcKSQnCi0gICAgICAgICAgICAgICAgICAgICAgICAgKS5mb3JtYXQoZmlsZW5hbWU9cmUuZXNjYXBlKGZyYW1lWzBdKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lbm89ZnJhbWVbMV0pCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJlZ2V4ID0gKHInXkZ1dHVyZSBleGNlcHRpb24gd2FzIG5ldmVyIHJldHJpZXZlZFxuJwotICAgICAgICAgICAgICAgICAgICAgICAgIHInZnV0dXJlOiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcic8RnV0dXJlIGZpbmlzaGVkIGV4Y2VwdGlvbj1NZW1vcnlFcnJvclwoXCk+JCcKLSAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICByZWdleCA9IHInXkZ1dHVyZSBleGNlcHRpb24gd2FzIG5ldmVyIHJldHJpZXZlZFxuJwogICAgICAgICAgICAgZXhjX2luZm8gPSAodHlwZShleGMpLCBleGMsIGV4Yy5fX3RyYWNlYmFja19fKQogICAgICAgICAgICAgbV9sb2cuZXJyb3IuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgobW9jay5BTlksIGV4Y19pbmZvPWV4Y19pbmZvKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgZGVidWc6Ci0gICAgICAgICAgICAgICAgZnJhbWUgPSBzb3VyY2VfdHJhY2ViYWNrWy0xXQotICAgICAgICAgICAgICAgIHJlZ2V4ID0gKHInXkZ1dHVyZS9UYXNrIGV4Y2VwdGlvbiB3YXMgbmV2ZXIgcmV0cmlldmVkXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgcidGdXR1cmUvVGFzayBjcmVhdGVkIGF0IFwobW9zdCByZWNlbnQgY2FsbCBsYXN0XCk6XG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgcicgIEZpbGUnCi0gICAgICAgICAgICAgICAgICAgICAgICAgcicuKlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgIHInICBGaWxlICJ7ZmlsZW5hbWV9IiwgbGluZSB7bGluZW5vfSwgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInaW4gY2hlY2tfZnV0dXJlX2V4Y2VwdGlvbl9uZXZlcl9yZXRyaWV2ZWRcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICByJyAgICBmdXR1cmUgPSBhc3luY2lvXC5GdXR1cmVcKGxvb3A9c2VsZlwubG9vcFwpXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgcidUcmFjZWJhY2sgXChtb3N0IHJlY2VudCBjYWxsIGxhc3RcKTpcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICByJy4qXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgcidNZW1vcnlFcnJvciQnCi0gICAgICAgICAgICAgICAgICAgICAgICAgKS5mb3JtYXQoZmlsZW5hbWU9cmUuZXNjYXBlKGZyYW1lWzBdKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lbm89ZnJhbWVbMV0pCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJlZ2V4ID0gKHInXkZ1dHVyZS9UYXNrIGV4Y2VwdGlvbiB3YXMgbmV2ZXIgcmV0cmlldmVkXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgcidUcmFjZWJhY2sgXChtb3N0IHJlY2VudCBjYWxsIGxhc3RcKTpcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICByJy4qXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgcidNZW1vcnlFcnJvciQnCi0gICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgcmVnZXggPSByJ15GdXR1cmUvVGFzayBleGNlcHRpb24gd2FzIG5ldmVyIHJldHJpZXZlZFxuJwogICAgICAgICAgICAgbV9sb2cuZXJyb3IuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgobW9jay5BTlksIGV4Y19pbmZvPUZhbHNlKQogICAgICAgICBtZXNzYWdlID0gbV9sb2cuZXJyb3IuY2FsbF9hcmdzWzBdWzBdCiAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgobWVzc2FnZSwgcmUuY29tcGlsZShyZWdleCwgcmUuRE9UQUxMKSkKQEAgLTQ4MywxNCArNDQ4LDQ5IEBACiAgICAgICAgIHNlbGYuY2hlY2tfZnV0dXJlX2V4Y2VwdGlvbl9uZXZlcl9yZXRyaWV2ZWQoVHJ1ZSkKIAogICAgIGRlZiB0ZXN0X3NldF9yZXN1bHRfdW5sZXNzX2NhbmNlbGxlZChzZWxmKToKLSAgICAgICAgZnJvbSBhc3luY2lvIGltcG9ydCBmdXR1cmVzCi0gICAgICAgIGZ1dCA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmdXQgPSBzZWxmLl9uZXdfZnV0dXJlKGxvb3A9c2VsZi5sb29wKQogICAgICAgICBmdXQuY2FuY2VsKCkKICAgICAgICAgZnV0dXJlcy5fc2V0X3Jlc3VsdF91bmxlc3NfY2FuY2VsbGVkKGZ1dCwgMikKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZ1dC5jYW5jZWxsZWQoKSkKIAorICAgIGRlZiB0ZXN0X2Z1dHVyZV9zdG9wX2l0ZXJhdGlvbl9hcmdzKHNlbGYpOgorICAgICAgICBmdXQgPSBzZWxmLl9uZXdfZnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmdXQuc2V0X3Jlc3VsdCgoMSwgMikpCisgICAgICAgIGZpID0gZnV0Ll9faXRlcl9fKCkKKyAgICAgICAgcmVzdWx0ID0gTm9uZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBmaS5zZW5kKE5vbmUpCisgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uIGFzIGV4OgorICAgICAgICAgICAgcmVzdWx0ID0gZXguYXJnc1swXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdTdG9wSXRlcmF0aW9uIHdhcyBleHBlY3RlZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCAoMSwgMikpCiAKLWNsYXNzIEZ1dHVyZURvbmVDYWxsYmFja1Rlc3RzKHRlc3RfdXRpbHMuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2Z1dHVyZV9pdGVyX3Rocm93KHNlbGYpOgorICAgICAgICBmdXQgPSBzZWxmLl9uZXdfZnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmaSA9IGl0ZXIoZnV0KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGZpLnRocm93LAorICAgICAgICAgICAgICAgICAgICAgICAgICBFeGNlcHRpb24sIEV4Y2VwdGlvbigiZWxlcGhhbnQiKSwgMzIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZmkudGhyb3csCisgICAgICAgICAgICAgICAgICAgICAgICAgIEV4Y2VwdGlvbigiZWxlcGhhbnQiKSwgRXhjZXB0aW9uKCJlbGVwaGFudCIpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGZpLnRocm93LCBsaXN0KQorCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoZnV0dXJlcywgJ19DRnV0dXJlJyksCisgICAgICAgICAgICAgICAgICAgICAncmVxdWlyZXMgdGhlIEMgX2FzeW5jaW8gbW9kdWxlJykKK2NsYXNzIENGdXR1cmVUZXN0cyhCYXNlRnV0dXJlVGVzdHMsIHRlc3RfdXRpbHMuVGVzdENhc2UpOgorCisgICAgZGVmIF9uZXdfZnV0dXJlKHNlbGYsICAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICByZXR1cm4gZnV0dXJlcy5fQ0Z1dHVyZSgqYXJncywgKiprd2FyZ3MpCisKKworY2xhc3MgUHlGdXR1cmVUZXN0cyhCYXNlRnV0dXJlVGVzdHMsIHRlc3RfdXRpbHMuVGVzdENhc2UpOgorCisgICAgZGVmIF9uZXdfZnV0dXJlKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHJldHVybiBmdXR1cmVzLl9QeUZ1dHVyZSgqYXJncywgKiprd2FyZ3MpCisKKworY2xhc3MgQmFzZUZ1dHVyZURvbmVDYWxsYmFja1Rlc3RzKCk6CiAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHN1cGVyKCkuc2V0VXAoKQpAQCAtNTA2LDcgKzUwNiw3IEBACiAgICAgICAgIHJldHVybiBiYWdfYXBwZW5kZXIKIAogICAgIGRlZiBfbmV3X2Z1dHVyZShzZWxmKToKLSAgICAgICAgcmV0dXJuIGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKICAgICBkZWYgdGVzdF9jYWxsYmFja3NfaW52b2tlZF9vbl9zZXRfcmVzdWx0KHNlbGYpOgogICAgICAgICBiYWcgPSBbXQpAQCAtNTcwLDUgKzU3MCwyMSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVzdWx0KCksICdmb28nKQogCiAKK0B1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoZnV0dXJlcywgJ19DRnV0dXJlJyksCisgICAgICAgICAgICAgICAgICAgICAncmVxdWlyZXMgdGhlIEMgX2FzeW5jaW8gbW9kdWxlJykKK2NsYXNzIENGdXR1cmVEb25lQ2FsbGJhY2tUZXN0cyhCYXNlRnV0dXJlRG9uZUNhbGxiYWNrVGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF91dGlscy5UZXN0Q2FzZSk6CisKKyAgICBkZWYgX25ld19mdXR1cmUoc2VsZik6CisgICAgICAgIHJldHVybiBmdXR1cmVzLl9DRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorCisKK2NsYXNzIFB5RnV0dXJlRG9uZUNhbGxiYWNrVGVzdHMoQmFzZUZ1dHVyZURvbmVDYWxsYmFja1Rlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X3V0aWxzLlRlc3RDYXNlKToKKworICAgIGRlZiBfbmV3X2Z1dHVyZShzZWxmKToKKyAgICAgICAgcmV0dXJuIGZ1dHVyZXMuX1B5RnV0dXJlKGxvb3A9c2VsZi5sb29wKQorCisKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2FzeW5jaW8vdGVzdF90YXNrcy5weSBiL0xpYi90ZXN0L3Rlc3RfYXN5bmNpby90ZXN0X3Rhc2tzLnB5CmluZGV4IDk4NzI5MjYuLmExOGQ0OWEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYXN5bmNpby90ZXN0X3Rhc2tzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYXN5bmNpby90ZXN0X3Rhc2tzLnB5CkBAIC0xLDUgKzEsNiBAQAogIiIiVGVzdHMgZm9yIHRhc2tzLnB5LiIiIgogCitpbXBvcnQgY29sbGVjdGlvbnMKIGltcG9ydCBjb250ZXh0bGliCiBpbXBvcnQgZnVuY3Rvb2xzCiBpbXBvcnQgaW8KQEAgLTE0LDYgKzE1LDggQEAKIAogaW1wb3J0IGFzeW5jaW8KIGZyb20gYXN5bmNpbyBpbXBvcnQgY29yb3V0aW5lcworZnJvbSBhc3luY2lvIGltcG9ydCBmdXR1cmVzCitmcm9tIGFzeW5jaW8gaW1wb3J0IHRhc2tzCiBmcm9tIGFzeW5jaW8gaW1wb3J0IHRlc3RfdXRpbHMKIHRyeToKICAgICBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKQEAgLTcyLDE1ICs3NSwyNiBAQAogICAgICAgICBwYXNzCiAKIAotY2xhc3MgVGFza1Rlc3RzKHRlc3RfdXRpbHMuVGVzdENhc2UpOgorY2xhc3MgQmFzZVRhc2tUZXN0czoKKworICAgIFRhc2sgPSBOb25lCisgICAgRnV0dXJlID0gTm9uZQorCisgICAgZGVmIG5ld190YXNrKHNlbGYsIGxvb3AsIGNvcm8pOgorICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18uVGFzayhjb3JvLCBsb29wPWxvb3ApCisKKyAgICBkZWYgbmV3X2Z1dHVyZShzZWxmLCBsb29wKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fLkZ1dHVyZShsb29wPWxvb3ApCiAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHN1cGVyKCkuc2V0VXAoKQogICAgICAgICBzZWxmLmxvb3AgPSBzZWxmLm5ld190ZXN0X2xvb3AoKQorICAgICAgICBzZWxmLmxvb3Auc2V0X3Rhc2tfZmFjdG9yeShzZWxmLm5ld190YXNrKQorICAgICAgICBzZWxmLmxvb3AuY3JlYXRlX2Z1dHVyZSA9IGxhbWJkYTogc2VsZi5uZXdfZnV0dXJlKHNlbGYubG9vcCkKIAogICAgIGRlZiB0ZXN0X290aGVyX2xvb3BfZnV0dXJlKHNlbGYpOgogICAgICAgICBvdGhlcl9sb29wID0gYXN5bmNpby5uZXdfZXZlbnRfbG9vcCgpCi0gICAgICAgIGZ1dCA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9b3RoZXJfbG9vcCkKKyAgICAgICAgZnV0ID0gc2VsZi5uZXdfZnV0dXJlKG90aGVyX2xvb3ApCiAKICAgICAgICAgQGFzeW5jaW8uY29yb3V0aW5lCiAgICAgICAgIGRlZiBydW4oZnV0KToKQEAgLTEwOCw3ICsxMjIsNyBAQAogICAgICAgICBAYXN5bmNpby5jb3JvdXRpbmUKICAgICAgICAgZGVmIG5vdG11Y2goKToKICAgICAgICAgICAgIHJldHVybiAnb2snCi0gICAgICAgIHQgPSBhc3luY2lvLlRhc2sobm90bXVjaCgpLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgdCA9IHNlbGYubmV3X3Rhc2soc2VsZi5sb29wLCBub3RtdWNoKCkpCiAgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUodCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHQuZG9uZSgpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQucmVzdWx0KCksICdvaycpCkBAIC0xMTYsNyArMTMwLDcgQEAKIAogICAgICAgICBsb29wID0gYXN5bmNpby5uZXdfZXZlbnRfbG9vcCgpCiAgICAgICAgIHNlbGYuc2V0X2V2ZW50X2xvb3AobG9vcCkKLSAgICAgICAgdCA9IGFzeW5jaW8uVGFzayhub3RtdWNoKCksIGxvb3A9bG9vcCkKKyAgICAgICAgdCA9IHNlbGYubmV3X3Rhc2sobG9vcCwgbm90bXVjaCgpKQogICAgICAgICBzZWxmLmFzc2VydElzKHQuX2xvb3AsIGxvb3ApCiAgICAgICAgIGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHQpCiAgICAgICAgIGxvb3AuY2xvc2UoKQpAQCAtMTM5LDcgKzE1Myw3IEBACiAgICAgICAgIGxvb3AuY2xvc2UoKQogCiAgICAgZGVmIHRlc3RfZW5zdXJlX2Z1dHVyZV9mdXR1cmUoc2VsZik6Ci0gICAgICAgIGZfb3JpZyA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmX29yaWcgPSBzZWxmLm5ld19mdXR1cmUoc2VsZi5sb29wKQogICAgICAgICBmX29yaWcuc2V0X3Jlc3VsdCgna28nKQogCiAgICAgICAgIGYgPSBhc3luY2lvLmVuc3VyZV9mdXR1cmUoZl9vcmlnKQpAQCAtMTYzLDcgKzE3Nyw3IEBACiAgICAgICAgIEBhc3luY2lvLmNvcm91dGluZQogICAgICAgICBkZWYgbm90bXVjaCgpOgogICAgICAgICAgICAgcmV0dXJuICdvaycKLSAgICAgICAgdF9vcmlnID0gYXN5bmNpby5UYXNrKG5vdG11Y2goKSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgIHRfb3JpZyA9IHNlbGYubmV3X3Rhc2soc2VsZi5sb29wLCBub3RtdWNoKCkpCiAgICAgICAgIHQgPSBhc3luY2lvLmVuc3VyZV9mdXR1cmUodF9vcmlnKQogICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHQpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0LmRvbmUoKSkKQEAgLTIwNCw3ICsyMTgsNyBAQAogICAgICAgICAgICAgYXN5bmNpby5lbnN1cmVfZnV0dXJlKCdvaycpCiAKICAgICBkZWYgdGVzdF9hc3luY193YXJuaW5nKHNlbGYpOgotICAgICAgICBmID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGYgPSBzZWxmLm5ld19mdXR1cmUoc2VsZi5sb29wKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmdW5jdGlvbiBpcyBkZXByZWNhdGVkLCB1c2UgZW5zdXJlXycpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhmLCBhc3luY2lvLmFzeW5jKGYpKQpAQCAtMjUxLDggKzI2NSw4IEBACiAgICAgICAgICMgdGVzdCBjb3JvdXRpbmUgZnVuY3Rpb24KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChub3RtdWNoLl9fbmFtZV9fLCAnbm90bXVjaCcpCiAgICAgICAgIGlmIFBZMzU6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5vdG11Y2guX19xdWFsbmFtZV9fLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVGFza1Rlc3RzLnRlc3RfdGFza19yZXByLjxsb2NhbHM+Lm5vdG11Y2gnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSZWdleChub3RtdWNoLl9fcXVhbG5hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidcdysudGVzdF90YXNrX3JlcHIuPGxvY2Fscz4ubm90bXVjaCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobm90bXVjaC5fX21vZHVsZV9fLCBfX25hbWVfXykKIAogICAgICAgICBmaWxlbmFtZSwgbGluZW5vID0gdGVzdF91dGlscy5nZXRfZnVuY3Rpb25fc291cmNlKG5vdG11Y2gpCkBAIC0yNjEsNyArMjc1LDcgQEAKICAgICAgICAgIyB0ZXN0IGNvcm91dGluZSBvYmplY3QKICAgICAgICAgZ2VuID0gbm90bXVjaCgpCiAgICAgICAgIGlmIGNvcm91dGluZXMuX0RFQlVHIG9yIFBZMzU6Ci0gICAgICAgICAgICBjb3JvX3F1YWxuYW1lID0gJ1Rhc2tUZXN0cy50ZXN0X3Rhc2tfcmVwci48bG9jYWxzPi5ub3RtdWNoJworICAgICAgICAgICAgY29yb19xdWFsbmFtZSA9ICdCYXNlVGFza1Rlc3RzLnRlc3RfdGFza19yZXByLjxsb2NhbHM+Lm5vdG11Y2gnCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBjb3JvX3F1YWxuYW1lID0gJ25vdG11Y2gnCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2VuLl9fbmFtZV9fLCAnbm90bXVjaCcpCkBAIC0yNzAsNyArMjg0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yb19xdWFsbmFtZSkKIAogICAgICAgICAjIHRlc3QgcGVuZGluZyBUYXNrCi0gICAgICAgIHQgPSBhc3luY2lvLlRhc2soZ2VuLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgdCA9IHNlbGYubmV3X3Rhc2soc2VsZi5sb29wLCBnZW4pCiAgICAgICAgIHQuYWRkX2RvbmVfY2FsbGJhY2soRHVtbXkoKSkKIAogICAgICAgICBjb3JvID0gZm9ybWF0X2Nvcm91dGluZShjb3JvX3F1YWxuYW1lLCAncnVubmluZycsIHNyYywKQEAgLTI5Miw3ICszMDYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICc8VGFzayBjYW5jZWxsZWQgJXM+JyAlIGNvcm8pCiAKICAgICAgICAgIyB0ZXN0IGZpbmlzaGVkIFRhc2sKLSAgICAgICAgdCA9IGFzeW5jaW8uVGFzayhub3RtdWNoKCksIGxvb3A9c2VsZi5sb29wKQorICAgICAgICB0ID0gc2VsZi5uZXdfdGFzayhzZWxmLmxvb3AsIG5vdG11Y2goKSkKICAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZSh0KQogICAgICAgICBjb3JvID0gZm9ybWF0X2Nvcm91dGluZShjb3JvX3F1YWxuYW1lLCAnZG9uZScsIHNyYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5fc291cmNlX3RyYWNlYmFjaykKQEAgLTMxMSw5ICszMjUsOSBAQAogICAgICAgICAjIHRlc3QgY29yb3V0aW5lIGZ1bmN0aW9uCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobm90bXVjaC5fX25hbWVfXywgJ25vdG11Y2gnKQogICAgICAgICBpZiBQWTM1OgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChub3RtdWNoLl9fcXVhbG5hbWVfXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1Rhc2tUZXN0cy50ZXN0X3Rhc2tfcmVwcl9jb3JvX2RlY29yYXRvcicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy48bG9jYWxzPi5ub3RtdWNoJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgobm90bXVjaC5fX3F1YWxuYW1lX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInXHcrLnRlc3RfdGFza19yZXByX2Nvcm9fZGVjb3JhdG9yJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ1wuPGxvY2Fscz5cLm5vdG11Y2gnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5vdG11Y2guX19tb2R1bGVfXywgX19uYW1lX18pCiAKICAgICAgICAgIyB0ZXN0IGNvcm91dGluZSBvYmplY3QKQEAgLTMyMyw3ICszMzcsNyBAQAogICAgICAgICAgICAgIyBmdW5jdGlvbiwgYXMgZXhwZWN0ZWQsIGFuZCBoYXZlIGEgcXVhbGlmaWVkIG5hbWUgKF9fcXVhbG5hbWVfXwogICAgICAgICAgICAgIyBhdHRyaWJ1dGUpLgogICAgICAgICAgICAgY29yb19uYW1lID0gJ25vdG11Y2gnCi0gICAgICAgICAgICBjb3JvX3F1YWxuYW1lID0gKCdUYXNrVGVzdHMudGVzdF90YXNrX3JlcHJfY29yb19kZWNvcmF0b3InCisgICAgICAgICAgICBjb3JvX3F1YWxuYW1lID0gKCdCYXNlVGFza1Rlc3RzLnRlc3RfdGFza19yZXByX2Nvcm9fZGVjb3JhdG9yJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLjxsb2NhbHM+Lm5vdG11Y2gnKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgIyBPbiBQeXRob24gPCAzLjUsIGdlbmVyYXRvcnMgaW5oZXJpdCB0aGUgbmFtZSBvZiB0aGUgY29kZSwgbm90IG9mCkBAIC0zNTEsNyArMzY1LDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihnZW4pLCAnPENvcm9XcmFwcGVyICVzPicgJSBjb3JvKQogCiAgICAgICAgICMgdGVzdCBwZW5kaW5nIFRhc2sKLSAgICAgICAgdCA9IGFzeW5jaW8uVGFzayhnZW4sIGxvb3A9c2VsZi5sb29wKQorICAgICAgICB0ID0gc2VsZi5uZXdfdGFzayhzZWxmLmxvb3AsIGdlbikKICAgICAgICAgdC5hZGRfZG9uZV9jYWxsYmFjayhEdW1teSgpKQogCiAgICAgICAgICMgZm9ybWF0IHRoZSBjb3JvdXRpbmUgb2JqZWN0CkBAIC0zNzQsOCArMzg4LDggQEAKICAgICAgICAgZGVmIHdhaXRfZm9yKGZ1dCk6CiAgICAgICAgICAgICByZXR1cm4gKHlpZWxkIGZyb20gZnV0KQogCi0gICAgICAgIGZ1dCA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQotICAgICAgICB0YXNrID0gYXN5bmNpby5UYXNrKHdhaXRfZm9yKGZ1dCksIGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmdXQgPSBzZWxmLm5ld19mdXR1cmUoc2VsZi5sb29wKQorICAgICAgICB0YXNrID0gc2VsZi5uZXdfdGFzayhzZWxmLmxvb3AsIHdhaXRfZm9yKGZ1dCkpCiAgICAgICAgIHRlc3RfdXRpbHMucnVuX2JyaWVmbHkoc2VsZi5sb29wKQogICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHJlcHIodGFzayksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzxUYXNrIC4qIHdhaXRfZm9yPSVzPicgJSByZS5lc2NhcGUocmVwcihmdXQpKSkKQEAgLTQwMSwxMCArNDE1LDExIEBACiAgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAodGFzay5fY29yby5jbG9zZSkKIAogICAgICAgICBjb3JvX3JlcHIgPSByZXByKHRhc2suX2Nvcm8pCi0gICAgICAgIGV4cGVjdGVkID0gKCc8Q29yb1dyYXBwZXIgVGFza1Rlc3RzLnRlc3RfdGFza19yZXByX3BhcnRpYWxfY29yb3dyYXBwZXInCi0gICAgICAgICAgICAgICAgICAgICcuPGxvY2Fscz4uZnVuYygxKSgpIHJ1bm5pbmcsICcpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb3JvX3JlcHIuc3RhcnRzd2l0aChleHBlY3RlZCksCi0gICAgICAgICAgICAgICAgICAgICAgICBjb3JvX3JlcHIpCisgICAgICAgIGV4cGVjdGVkID0gKAorICAgICAgICAgICAgcic8Q29yb1dyYXBwZXIgXHcrLnRlc3RfdGFza19yZXByX3BhcnRpYWxfY29yb3dyYXBwZXInCisgICAgICAgICAgICByJ1wuPGxvY2Fscz5cLmZ1bmNcKDFcKVwoXCkgcnVubmluZywgJworICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoY29yb19yZXByLCBleHBlY3RlZCkKIAogICAgIGRlZiB0ZXN0X3Rhc2tfYmFzaWNzKHNlbGYpOgogICAgICAgICBAYXN5bmNpby5jb3JvdXRpbmUKQEAgLTQzOCw3ICs0NTMsNyBAQAogICAgICAgICAgICAgeWllbGQgZnJvbSBhc3luY2lvLnNsZWVwKDEwLjAsIGxvb3A9bG9vcCkKICAgICAgICAgICAgIHJldHVybiAxMgogCi0gICAgICAgIHQgPSBhc3luY2lvLlRhc2sodGFzaygpLCBsb29wPWxvb3ApCisgICAgICAgIHQgPSBzZWxmLm5ld190YXNrKGxvb3AsIHRhc2soKSkKICAgICAgICAgbG9vcC5jYWxsX3Nvb24odC5jYW5jZWwpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoYXN5bmNpby5DYW5jZWxsZWRFcnJvcik6CiAgICAgICAgICAgICBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZSh0KQpAQCAtNDUzLDcgKzQ2OCw3IEBACiAgICAgICAgICAgICB5aWVsZAogICAgICAgICAgICAgcmV0dXJuIDEyCiAKLSAgICAgICAgdCA9IGFzeW5jaW8uVGFzayh0YXNrKCksIGxvb3A9c2VsZi5sb29wKQorICAgICAgICB0ID0gc2VsZi5uZXdfdGFzayhzZWxmLmxvb3AsIHRhc2soKSkKICAgICAgICAgdGVzdF91dGlscy5ydW5fYnJpZWZseShzZWxmLmxvb3ApICAjIHN0YXJ0IGNvcm8KICAgICAgICAgdC5jYW5jZWwoKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKQEAgLTQ2MywxNCArNDc4LDE0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodC5jYW5jZWwoKSkKIAogICAgIGRlZiB0ZXN0X2NhbmNlbF9pbm5lcl9mdXR1cmUoc2VsZik6Ci0gICAgICAgIGYgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZiA9IHNlbGYubmV3X2Z1dHVyZShzZWxmLmxvb3ApCiAKICAgICAgICAgQGFzeW5jaW8uY29yb3V0aW5lCiAgICAgICAgIGRlZiB0YXNrKCk6CiAgICAgICAgICAgICB5aWVsZCBmcm9tIGYKICAgICAgICAgICAgIHJldHVybiAxMgogCi0gICAgICAgIHQgPSBhc3luY2lvLlRhc2sodGFzaygpLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgdCA9IHNlbGYubmV3X3Rhc2soc2VsZi5sb29wLCB0YXNrKCkpCiAgICAgICAgIHRlc3RfdXRpbHMucnVuX2JyaWVmbHkoc2VsZi5sb29wKSAgIyBzdGFydCB0YXNrCiAgICAgICAgIGYuY2FuY2VsKCkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhhc3luY2lvLkNhbmNlbGxlZEVycm9yKToKQEAgLTQ3OSwxNCArNDk0LDE0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0LmNhbmNlbGxlZCgpKQogCiAgICAgZGVmIHRlc3RfY2FuY2VsX2JvdGhfdGFza19hbmRfaW5uZXJfZnV0dXJlKHNlbGYpOgotICAgICAgICBmID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGYgPSBzZWxmLm5ld19mdXR1cmUoc2VsZi5sb29wKQogCiAgICAgICAgIEBhc3luY2lvLmNvcm91dGluZQogICAgICAgICBkZWYgdGFzaygpOgogICAgICAgICAgICAgeWllbGQgZnJvbSBmCiAgICAgICAgICAgICByZXR1cm4gMTIKIAotICAgICAgICB0ID0gYXN5bmNpby5UYXNrKHRhc2soKSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgIHQgPSBzZWxmLm5ld190YXNrKHNlbGYubG9vcCwgdGFzaygpKQogICAgICAgICB0ZXN0X3V0aWxzLnJ1bl9icmllZmx5KHNlbGYubG9vcCkKIAogICAgICAgICBmLmNhbmNlbCgpCkBAIC01MDAsOCArNTE1LDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHQuY2FuY2VsbGVkKCkpCiAKICAgICBkZWYgdGVzdF9jYW5jZWxfdGFza19jYXRjaGluZyhzZWxmKToKLSAgICAgICAgZnV0MSA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQotICAgICAgICBmdXQyID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZ1dDEgPSBzZWxmLm5ld19mdXR1cmUoc2VsZi5sb29wKQorICAgICAgICBmdXQyID0gc2VsZi5uZXdfZnV0dXJlKHNlbGYubG9vcCkKIAogICAgICAgICBAYXN5bmNpby5jb3JvdXRpbmUKICAgICAgICAgZGVmIHRhc2soKToKQEAgLTUxMSw3ICs1MjYsNyBAQAogICAgICAgICAgICAgZXhjZXB0IGFzeW5jaW8uQ2FuY2VsbGVkRXJyb3I6CiAgICAgICAgICAgICAgICAgcmV0dXJuIDQyCiAKLSAgICAgICAgdCA9IGFzeW5jaW8uVGFzayh0YXNrKCksIGxvb3A9c2VsZi5sb29wKQorICAgICAgICB0ID0gc2VsZi5uZXdfdGFzayhzZWxmLmxvb3AsIHRhc2soKSkKICAgICAgICAgdGVzdF91dGlscy5ydW5fYnJpZWZseShzZWxmLmxvb3ApCiAgICAgICAgIHNlbGYuYXNzZXJ0SXModC5fZnV0X3dhaXRlciwgZnV0MSkgICMgV2hpdGUtYm94IHRlc3QuCiAgICAgICAgIGZ1dDEuc2V0X3Jlc3VsdChOb25lKQpAQCAtNTI0LDkgKzUzOSw5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodC5jYW5jZWxsZWQoKSkKIAogICAgIGRlZiB0ZXN0X2NhbmNlbF90YXNrX2lnbm9yaW5nKHNlbGYpOgotICAgICAgICBmdXQxID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCi0gICAgICAgIGZ1dDIgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKLSAgICAgICAgZnV0MyA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmdXQxID0gc2VsZi5uZXdfZnV0dXJlKHNlbGYubG9vcCkKKyAgICAgICAgZnV0MiA9IHNlbGYubmV3X2Z1dHVyZShzZWxmLmxvb3ApCisgICAgICAgIGZ1dDMgPSBzZWxmLm5ld19mdXR1cmUoc2VsZi5sb29wKQogCiAgICAgICAgIEBhc3luY2lvLmNvcm91dGluZQogICAgICAgICBkZWYgdGFzaygpOgpAQCAtNTM4LDcgKzU1Myw3IEBACiAgICAgICAgICAgICByZXMgPSB5aWVsZCBmcm9tIGZ1dDMKICAgICAgICAgICAgIHJldHVybiByZXMKIAotICAgICAgICB0ID0gYXN5bmNpby5UYXNrKHRhc2soKSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgIHQgPSBzZWxmLm5ld190YXNrKHNlbGYubG9vcCwgdGFzaygpKQogICAgICAgICB0ZXN0X3V0aWxzLnJ1bl9icmllZmx5KHNlbGYubG9vcCkKICAgICAgICAgc2VsZi5hc3NlcnRJcyh0Ll9mdXRfd2FpdGVyLCBmdXQxKSAgIyBXaGl0ZS1ib3ggdGVzdC4KICAgICAgICAgZnV0MS5zZXRfcmVzdWx0KE5vbmUpCkBAIC01NjYsNyArNTgxLDcgQEAKICAgICAgICAgICAgIHlpZWxkIGZyb20gYXN5bmNpby5zbGVlcCgxMDAsIGxvb3A9bG9vcCkKICAgICAgICAgICAgIHJldHVybiAxMgogCi0gICAgICAgIHQgPSBhc3luY2lvLlRhc2sodGFzaygpLCBsb29wPWxvb3ApCisgICAgICAgIHQgPSBzZWxmLm5ld190YXNrKGxvb3AsIHRhc2soKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCiAgICAgICAgICAgICBhc3luY2lvLkNhbmNlbGxlZEVycm9yLCBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZSwgdCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHQuZG9uZSgpKQpAQCAtNTk5LDcgKzYxNCw3IEBACiAgICAgICAgICAgICAgICAgaWYgeCA9PSAyOgogICAgICAgICAgICAgICAgICAgICBsb29wLnN0b3AoKQogCi0gICAgICAgIHQgPSBhc3luY2lvLlRhc2sodGFzaygpLCBsb29wPWxvb3ApCisgICAgICAgIHQgPSBzZWxmLm5ld190YXNrKGxvb3AsIHRhc2soKSkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgbG9vcC5ydW5fdW50aWxfY29tcGxldGUodCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwKQEAgLTYzNyw3ICs2NTIsNyBAQAogICAgICAgICAgICAgICAgIGZvb19ydW5uaW5nID0gRmFsc2UKICAgICAgICAgICAgIHJldHVybiAnZG9uZScKIAotICAgICAgICBmdXQgPSBhc3luY2lvLlRhc2soZm9vKCksIGxvb3A9bG9vcCkKKyAgICAgICAgZnV0ID0gc2VsZi5uZXdfdGFzayhsb29wLCBmb28oKSkKIAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGFzeW5jaW8uVGltZW91dEVycm9yKToKICAgICAgICAgICAgIGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKGFzeW5jaW8ud2FpdF9mb3IoZnV0LCAwLjEsIGxvb3A9bG9vcCkpCkBAIC02NzcsNyArNjkyLDcgQEAKIAogICAgICAgICBhc3luY2lvLnNldF9ldmVudF9sb29wKGxvb3ApCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGZ1dCA9IGFzeW5jaW8uVGFzayhmb28oKSwgbG9vcD1sb29wKQorICAgICAgICAgICAgZnV0ID0gc2VsZi5uZXdfdGFzayhsb29wLCBmb28oKSkKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoYXN5bmNpby5UaW1lb3V0RXJyb3IpOgogICAgICAgICAgICAgICAgIGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKGFzeW5jaW8ud2FpdF9mb3IoZnV0LCAwLjAxKSkKICAgICAgICAgZmluYWxseToKQEAgLTY5Niw3ICs3MTEsNyBAQAogCiAgICAgICAgIGxvb3AgPSBzZWxmLm5ld190ZXN0X2xvb3AoZ2VuKQogCi0gICAgICAgIGZ1dCA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9bG9vcCkKKyAgICAgICAgZnV0ID0gc2VsZi5uZXdfZnV0dXJlKGxvb3ApCiAgICAgICAgIHRhc2sgPSBhc3luY2lvLndhaXRfZm9yKGZ1dCwgdGltZW91dD0wLjIsIGxvb3A9bG9vcCkKICAgICAgICAgbG9vcC5jYWxsX2xhdGVyKDAuMSwgZnV0LnNldF9yZXN1bHQsICJvayIpCiAgICAgICAgIHJlcyA9IGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHRhc2spCkBAIC03MTMsOCArNzI4LDggQEAKIAogICAgICAgICBsb29wID0gc2VsZi5uZXdfdGVzdF9sb29wKGdlbikKIAotICAgICAgICBhID0gYXN5bmNpby5UYXNrKGFzeW5jaW8uc2xlZXAoMC4xLCBsb29wPWxvb3ApLCBsb29wPWxvb3ApCi0gICAgICAgIGIgPSBhc3luY2lvLlRhc2soYXN5bmNpby5zbGVlcCgwLjE1LCBsb29wPWxvb3ApLCBsb29wPWxvb3ApCisgICAgICAgIGEgPSBzZWxmLm5ld190YXNrKGxvb3AsIGFzeW5jaW8uc2xlZXAoMC4xLCBsb29wPWxvb3ApKQorICAgICAgICBiID0gc2VsZi5uZXdfdGFzayhsb29wLCBhc3luY2lvLnNsZWVwKDAuMTUsIGxvb3A9bG9vcCkpCiAKICAgICAgICAgQGFzeW5jaW8uY29yb3V0aW5lCiAgICAgICAgIGRlZiBmb28oKToKQEAgLTcyMywxMiArNzM4LDEyIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBlbmRpbmcsIHNldCgpKQogICAgICAgICAgICAgcmV0dXJuIDQyCiAKLSAgICAgICAgcmVzID0gbG9vcC5ydW5fdW50aWxfY29tcGxldGUoYXN5bmNpby5UYXNrKGZvbygpLCBsb29wPWxvb3ApKQorICAgICAgICByZXMgPSBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLm5ld190YXNrKGxvb3AsIGZvbygpKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIDQyKQogICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKDAuMTUsIGxvb3AudGltZSgpKQogCiAgICAgICAgICMgRG9pbmcgaXQgYWdhaW4gc2hvdWxkIHRha2Ugbm8gdGltZSBhbmQgZXhlcmNpc2UgYSBkaWZmZXJlbnQgcGF0aC4KLSAgICAgICAgcmVzID0gbG9vcC5ydW5fdW50aWxfY29tcGxldGUoYXN5bmNpby5UYXNrKGZvbygpLCBsb29wPWxvb3ApKQorICAgICAgICByZXMgPSBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLm5ld190YXNrKGxvb3AsIGZvbygpKSkKICAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbCgwLjE1LCBsb29wLnRpbWUoKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIDQyKQogCkBAIC03NDMsOCArNzU4LDggQEAKIAogICAgICAgICBsb29wID0gc2VsZi5uZXdfdGVzdF9sb29wKGdlbikKIAotICAgICAgICBhID0gYXN5bmNpby5UYXNrKGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1sb29wKSwgbG9vcD1sb29wKQotICAgICAgICBiID0gYXN5bmNpby5UYXNrKGFzeW5jaW8uc2xlZXAoMC4wMTUsIGxvb3A9bG9vcCksIGxvb3A9bG9vcCkKKyAgICAgICAgYSA9IHNlbGYubmV3X3Rhc2sobG9vcCwgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPWxvb3ApKQorICAgICAgICBiID0gc2VsZi5uZXdfdGFzayhsb29wLCBhc3luY2lvLnNsZWVwKDAuMDE1LCBsb29wPWxvb3ApKQogCiAgICAgICAgIEBhc3luY2lvLmNvcm91dGluZQogICAgICAgICBkZWYgZm9vKCk6CkBAIC03NTUsNyArNzcwLDcgQEAKIAogICAgICAgICBhc3luY2lvLnNldF9ldmVudF9sb29wKGxvb3ApCiAgICAgICAgIHJlcyA9IGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKAotICAgICAgICAgICAgYXN5bmNpby5UYXNrKGZvbygpLCBsb29wPWxvb3ApKQorICAgICAgICAgICAgc2VsZi5uZXdfdGFzayhsb29wLCBmb28oKSkpCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIDQyKQogCkBAIC03NjUsOSArNzgwLDkgQEAKICAgICAgICAgICAgIHJldHVybiBzCiAgICAgICAgIGMgPSBjb3JvKCd0ZXN0JykKIAotICAgICAgICB0YXNrID0gYXN5bmNpby5UYXNrKAotICAgICAgICAgICAgYXN5bmNpby53YWl0KFtjLCBjLCBjb3JvKCdzcGFtJyldLCBsb29wPXNlbGYubG9vcCksCi0gICAgICAgICAgICBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgdGFzayA9c2VsZi5uZXdfdGFzaygKKyAgICAgICAgICAgIHNlbGYubG9vcCwKKyAgICAgICAgICAgIGFzeW5jaW8ud2FpdChbYywgYywgY29ybygnc3BhbScpXSwgbG9vcD1zZWxmLmxvb3ApKQogCiAgICAgICAgIGRvbmUsIHBlbmRpbmcgPSBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHRhc2spCiAKQEAgLTc5OCwxMiArODEzLDEyIEBACiAKICAgICAgICAgbG9vcCA9IHNlbGYubmV3X3Rlc3RfbG9vcChnZW4pCiAKLSAgICAgICAgYSA9IGFzeW5jaW8uVGFzayhhc3luY2lvLnNsZWVwKDEwLjAsIGxvb3A9bG9vcCksIGxvb3A9bG9vcCkKLSAgICAgICAgYiA9IGFzeW5jaW8uVGFzayhhc3luY2lvLnNsZWVwKDAuMSwgbG9vcD1sb29wKSwgbG9vcD1sb29wKQotICAgICAgICB0YXNrID0gYXN5bmNpby5UYXNrKAorICAgICAgICBhID0gc2VsZi5uZXdfdGFzayhsb29wLCBhc3luY2lvLnNsZWVwKDEwLjAsIGxvb3A9bG9vcCkpCisgICAgICAgIGIgPSBzZWxmLm5ld190YXNrKGxvb3AsIGFzeW5jaW8uc2xlZXAoMC4xLCBsb29wPWxvb3ApKQorICAgICAgICB0YXNrID0gc2VsZi5uZXdfdGFzaygKKyAgICAgICAgICAgIGxvb3AsCiAgICAgICAgICAgICBhc3luY2lvLndhaXQoW2IsIGFdLCByZXR1cm5fd2hlbj1hc3luY2lvLkZJUlNUX0NPTVBMRVRFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBsb29wPWxvb3ApLAotICAgICAgICAgICAgbG9vcD1sb29wKQorICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3A9bG9vcCkpCiAKICAgICAgICAgZG9uZSwgcGVuZGluZyA9IGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHRhc2spCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoe2J9LCBkb25lKQpAQCAtODMwLDEyICs4NDUsMTIgQEAKICAgICAgICAgICAgIHlpZWxkCiAgICAgICAgICAgICB5aWVsZAogCi0gICAgICAgIGEgPSBhc3luY2lvLlRhc2soY29ybzEoKSwgbG9vcD1zZWxmLmxvb3ApCi0gICAgICAgIGIgPSBhc3luY2lvLlRhc2soY29ybzIoKSwgbG9vcD1zZWxmLmxvb3ApCi0gICAgICAgIHRhc2sgPSBhc3luY2lvLlRhc2soCisgICAgICAgIGEgPSBzZWxmLm5ld190YXNrKHNlbGYubG9vcCwgY29ybzEoKSkKKyAgICAgICAgYiA9IHNlbGYubmV3X3Rhc2soc2VsZi5sb29wLCBjb3JvMigpKQorICAgICAgICB0YXNrID0gc2VsZi5uZXdfdGFzaygKKyAgICAgICAgICAgIHNlbGYubG9vcCwKICAgICAgICAgICAgIGFzeW5jaW8ud2FpdChbYiwgYV0sIHJldHVybl93aGVuPWFzeW5jaW8uRklSU1RfQ09NUExFVEVELAotICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3A9c2VsZi5sb29wKSwKLSAgICAgICAgICAgIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3A9c2VsZi5sb29wKSkKIAogICAgICAgICBkb25lLCBwZW5kaW5nID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZSh0YXNrKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHthLCBifSwgZG9uZSkKQEAgLTg1NCwxNyArODY5LDE3IEBACiAgICAgICAgIGxvb3AgPSBzZWxmLm5ld190ZXN0X2xvb3AoZ2VuKQogCiAgICAgICAgICMgZmlyc3RfZXhjZXB0aW9uLCB0YXNrIGFscmVhZHkgaGFzIGV4Y2VwdGlvbgotICAgICAgICBhID0gYXN5bmNpby5UYXNrKGFzeW5jaW8uc2xlZXAoMTAuMCwgbG9vcD1sb29wKSwgbG9vcD1sb29wKQorICAgICAgICBhID0gc2VsZi5uZXdfdGFzayhsb29wLCBhc3luY2lvLnNsZWVwKDEwLjAsIGxvb3A9bG9vcCkpCiAKICAgICAgICAgQGFzeW5jaW8uY29yb3V0aW5lCiAgICAgICAgIGRlZiBleGMoKToKICAgICAgICAgICAgIHJhaXNlIFplcm9EaXZpc2lvbkVycm9yKCdlcnInKQogCi0gICAgICAgIGIgPSBhc3luY2lvLlRhc2soZXhjKCksIGxvb3A9bG9vcCkKLSAgICAgICAgdGFzayA9IGFzeW5jaW8uVGFzaygKKyAgICAgICAgYiA9IHNlbGYubmV3X3Rhc2sobG9vcCwgZXhjKCkpCisgICAgICAgIHRhc2sgPSBzZWxmLm5ld190YXNrKAorICAgICAgICAgICAgbG9vcCwKICAgICAgICAgICAgIGFzeW5jaW8ud2FpdChbYiwgYV0sIHJldHVybl93aGVuPWFzeW5jaW8uRklSU1RfRVhDRVBUSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3A9bG9vcCksCi0gICAgICAgICAgICBsb29wPWxvb3ApCisgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcD1sb29wKSkKIAogICAgICAgICBkb25lLCBwZW5kaW5nID0gbG9vcC5ydW5fdW50aWxfY29tcGxldGUodGFzaykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh7Yn0sIGRvbmUpCkBAIC04ODcsMTQgKzkwMiwxNCBAQAogICAgICAgICBsb29wID0gc2VsZi5uZXdfdGVzdF9sb29wKGdlbikKIAogICAgICAgICAjIGZpcnN0X2V4Y2VwdGlvbiwgZXhjZXB0aW9uIGR1cmluZyB3YWl0aW5nCi0gICAgICAgIGEgPSBhc3luY2lvLlRhc2soYXN5bmNpby5zbGVlcCgxMC4wLCBsb29wPWxvb3ApLCBsb29wPWxvb3ApCisgICAgICAgIGEgPSBzZWxmLm5ld190YXNrKGxvb3AsIGFzeW5jaW8uc2xlZXAoMTAuMCwgbG9vcD1sb29wKSkKIAogICAgICAgICBAYXN5bmNpby5jb3JvdXRpbmUKICAgICAgICAgZGVmIGV4YygpOgogICAgICAgICAgICAgeWllbGQgZnJvbSBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9bG9vcCkKICAgICAgICAgICAgIHJhaXNlIFplcm9EaXZpc2lvbkVycm9yKCdlcnInKQogCi0gICAgICAgIGIgPSBhc3luY2lvLlRhc2soZXhjKCksIGxvb3A9bG9vcCkKKyAgICAgICAgYiA9IHNlbGYubmV3X3Rhc2sobG9vcCwgZXhjKCkpCiAgICAgICAgIHRhc2sgPSBhc3luY2lvLndhaXQoW2IsIGFdLCByZXR1cm5fd2hlbj1hc3luY2lvLkZJUlNUX0VYQ0VQVElPTiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wPWxvb3ApCiAKQEAgLTkxOCwxNCArOTMzLDE0IEBACiAKICAgICAgICAgbG9vcCA9IHNlbGYubmV3X3Rlc3RfbG9vcChnZW4pCiAKLSAgICAgICAgYSA9IGFzeW5jaW8uVGFzayhhc3luY2lvLnNsZWVwKDAuMSwgbG9vcD1sb29wKSwgbG9vcD1sb29wKQorICAgICAgICBhID0gc2VsZi5uZXdfdGFzayhsb29wLCBhc3luY2lvLnNsZWVwKDAuMSwgbG9vcD1sb29wKSkKIAogICAgICAgICBAYXN5bmNpby5jb3JvdXRpbmUKICAgICAgICAgZGVmIHNsZWVwZXIoKToKICAgICAgICAgICAgIHlpZWxkIGZyb20gYXN5bmNpby5zbGVlcCgwLjE1LCBsb29wPWxvb3ApCiAgICAgICAgICAgICByYWlzZSBaZXJvRGl2aXNpb25FcnJvcigncmVhbGx5JykKIAotICAgICAgICBiID0gYXN5bmNpby5UYXNrKHNsZWVwZXIoKSwgbG9vcD1sb29wKQorICAgICAgICBiID0gc2VsZi5uZXdfdGFzayhsb29wLCBzbGVlcGVyKCkpCiAKICAgICAgICAgQGFzeW5jaW8uY29yb3V0aW5lCiAgICAgICAgIGRlZiBmb28oKToKQEAgLTkzNSwxMCArOTUwLDEwIEBACiAgICAgICAgICAgICBlcnJvcnMgPSBzZXQoZiBmb3IgZiBpbiBkb25lIGlmIGYuZXhjZXB0aW9uKCkgaXMgbm90IE5vbmUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihlcnJvcnMpLCAxKQogCi0gICAgICAgIGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKGFzeW5jaW8uVGFzayhmb28oKSwgbG9vcD1sb29wKSkKKyAgICAgICAgbG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5uZXdfdGFzayhsb29wLCBmb28oKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoMC4xNSwgbG9vcC50aW1lKCkpCiAKLSAgICAgICAgbG9vcC5ydW5fdW50aWxfY29tcGxldGUoYXN5bmNpby5UYXNrKGZvbygpLCBsb29wPWxvb3ApKQorICAgICAgICBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLm5ld190YXNrKGxvb3AsIGZvbygpKSkKICAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbCgwLjE1LCBsb29wLnRpbWUoKSkKIAogICAgIGRlZiB0ZXN0X3dhaXRfd2l0aF90aW1lb3V0KHNlbGYpOgpAQCAtOTU0LDggKzk2OSw4IEBACiAKICAgICAgICAgbG9vcCA9IHNlbGYubmV3X3Rlc3RfbG9vcChnZW4pCiAKLSAgICAgICAgYSA9IGFzeW5jaW8uVGFzayhhc3luY2lvLnNsZWVwKDAuMSwgbG9vcD1sb29wKSwgbG9vcD1sb29wKQotICAgICAgICBiID0gYXN5bmNpby5UYXNrKGFzeW5jaW8uc2xlZXAoMC4xNSwgbG9vcD1sb29wKSwgbG9vcD1sb29wKQorICAgICAgICBhID0gc2VsZi5uZXdfdGFzayhsb29wLCBhc3luY2lvLnNsZWVwKDAuMSwgbG9vcD1sb29wKSkKKyAgICAgICAgYiA9IHNlbGYubmV3X3Rhc2sobG9vcCwgYXN5bmNpby5zbGVlcCgwLjE1LCBsb29wPWxvb3ApKQogCiAgICAgICAgIEBhc3luY2lvLmNvcm91dGluZQogICAgICAgICBkZWYgZm9vKCk6CkBAIC05NjQsNyArOTc5LDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZG9uZSwgc2V0KFthXSkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBlbmRpbmcsIHNldChbYl0pKQogCi0gICAgICAgIGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKGFzeW5jaW8uVGFzayhmb28oKSwgbG9vcD1sb29wKSkKKyAgICAgICAgbG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5uZXdfdGFzayhsb29wLCBmb28oKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoMC4xMSwgbG9vcC50aW1lKCkpCiAKICAgICAgICAgIyBtb3ZlIGZvcndhcmQgdG8gY2xvc2UgZ2VuZXJhdG9yCkBAIC05ODQsOCArOTk5LDggQEAKIAogICAgICAgICBsb29wID0gc2VsZi5uZXdfdGVzdF9sb29wKGdlbikKIAotICAgICAgICBhID0gYXN5bmNpby5UYXNrKGFzeW5jaW8uc2xlZXAoMC4xLCBsb29wPWxvb3ApLCBsb29wPWxvb3ApCi0gICAgICAgIGIgPSBhc3luY2lvLlRhc2soYXN5bmNpby5zbGVlcCgwLjE1LCBsb29wPWxvb3ApLCBsb29wPWxvb3ApCisgICAgICAgIGEgPSBzZWxmLm5ld190YXNrKGxvb3AsIGFzeW5jaW8uc2xlZXAoMC4xLCBsb29wPWxvb3ApKQorICAgICAgICBiID0gc2VsZi5uZXdfdGFzayhsb29wLCBhc3luY2lvLnNsZWVwKDAuMTUsIGxvb3A9bG9vcCkpCiAKICAgICAgICAgZG9uZSwgcGVuZGluZyA9IGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKAogICAgICAgICAgICAgYXN5bmNpby53YWl0KFtiLCBhXSwgdGltZW91dD0wLjEsIGxvb3A9bG9vcCkpCkBAIC0xMDMzLDE0ICsxMDQ4LDE0IEBACiAgICAgICAgICAgICAgICAgdmFsdWVzLmFwcGVuZCgoeWllbGQgZnJvbSBmKSkKICAgICAgICAgICAgIHJldHVybiB2YWx1ZXMKIAotICAgICAgICByZXMgPSBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZShhc3luY2lvLlRhc2soZm9vKCksIGxvb3A9bG9vcCkpCisgICAgICAgIHJlcyA9IGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYubmV3X3Rhc2sobG9vcCwgZm9vKCkpKQogICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKDAuMTUsIGxvb3AudGltZSgpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2EnIGluIHJlc1s6Ml0pCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnYicgaW4gcmVzWzoyXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNbMl0sICdjJykKIAogICAgICAgICAjIERvaW5nIGl0IGFnYWluIHNob3VsZCB0YWtlIG5vIHRpbWUgYW5kIGV4ZXJjaXNlIGEgZGlmZmVyZW50IHBhdGguCi0gICAgICAgIHJlcyA9IGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKGFzeW5jaW8uVGFzayhmb28oKSwgbG9vcD1sb29wKSkKKyAgICAgICAgcmVzID0gbG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5uZXdfdGFzayhsb29wLCBmb28oKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoMC4xNSwgbG9vcC50aW1lKCkpCiAKICAgICBkZWYgdGVzdF9hc19jb21wbGV0ZWRfd2l0aF90aW1lb3V0KHNlbGYpOgpAQCAtMTA2OSw3ICsxMDg0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgdmFsdWVzLmFwcGVuZCgoMiwgZXhjKSkKICAgICAgICAgICAgIHJldHVybiB2YWx1ZXMKIAotICAgICAgICByZXMgPSBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZShhc3luY2lvLlRhc2soZm9vKCksIGxvb3A9bG9vcCkpCisgICAgICAgIHJlcyA9IGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYubmV3X3Rhc2sobG9vcCwgZm9vKCkpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXMpLCAyLCByZXMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzWzBdLCAoMSwgJ2EnKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNbMV1bMF0sIDIpCkBAIC0xMDk3LDcgKzExMTIsNyBAQAogICAgICAgICAgICAgICAgIHYgPSB5aWVsZCBmcm9tIGYKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsICdhJykKIAotICAgICAgICBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZShhc3luY2lvLlRhc2soZm9vKCksIGxvb3A9bG9vcCkpCisgICAgICAgIGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYubmV3X3Rhc2sobG9vcCwgZm9vKCkpKQogCiAgICAgZGVmIHRlc3RfYXNfY29tcGxldGVkX3JldmVyc2Vfd2FpdChzZWxmKToKIApAQCAtMTE1Nyw3ICsxMTcyLDcgQEAKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCh5aWVsZCBmcm9tIGYpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAogCi0gICAgICAgIGZ1dCA9IGFzeW5jaW8uVGFzayhydW5uZXIoKSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZ1dCA9IHNlbGYubmV3X3Rhc2soc2VsZi5sb29wLCBydW5uZXIoKSkKICAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShmdXQpCiAgICAgICAgIHJlc3VsdCA9IGZ1dC5yZXN1bHQoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChyZXN1bHQpLCB7J2hhbScsICdzcGFtJ30pCkBAIC0xMTgwLDcgKzExOTUsNyBAQAogICAgICAgICAgICAgcmVzID0geWllbGQgZnJvbSBhc3luY2lvLnNsZWVwKGR0LzIsIGFyZywgbG9vcD1sb29wKQogICAgICAgICAgICAgcmV0dXJuIHJlcwogCi0gICAgICAgIHQgPSBhc3luY2lvLlRhc2soc2xlZXBlcigwLjEsICd5ZWFoJyksIGxvb3A9bG9vcCkKKyAgICAgICAgdCA9IHNlbGYubmV3X3Rhc2sobG9vcCwgc2xlZXBlcigwLjEsICd5ZWFoJykpCiAgICAgICAgIGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHQpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0LmRvbmUoKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LnJlc3VsdCgpLCAneWVhaCcpCkBAIC0xMTk1LDggKzEyMTAsNyBAQAogCiAgICAgICAgIGxvb3AgPSBzZWxmLm5ld190ZXN0X2xvb3AoZ2VuKQogCi0gICAgICAgIHQgPSBhc3luY2lvLlRhc2soYXN5bmNpby5zbGVlcCgxMC4wLCAneWVhaCcsIGxvb3A9bG9vcCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgbG9vcD1sb29wKQorICAgICAgICB0ID0gc2VsZi5uZXdfdGFzayhsb29wLCBhc3luY2lvLnNsZWVwKDEwLjAsICd5ZWFoJywgbG9vcD1sb29wKSkKIAogICAgICAgICBoYW5kbGUgPSBOb25lCiAgICAgICAgIG9yaWdfY2FsbF9sYXRlciA9IGxvb3AuY2FsbF9sYXRlcgpAQCAtMTIzMiw3ICsxMjQ2LDcgQEAKIAogICAgICAgICBAYXN5bmNpby5jb3JvdXRpbmUKICAgICAgICAgZGVmIGRvaXQoKToKLSAgICAgICAgICAgIHNsZWVwZXIgPSBhc3luY2lvLlRhc2soc2xlZXAoNTAwMCksIGxvb3A9bG9vcCkKKyAgICAgICAgICAgIHNsZWVwZXIgPSBzZWxmLm5ld190YXNrKGxvb3AsIHNsZWVwKDUwMDApKQogICAgICAgICAgICAgbG9vcC5jYWxsX2xhdGVyKDAuMSwgc2xlZXBlci5jYW5jZWwpCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgeWllbGQgZnJvbSBzbGVlcGVyCkBAIC0xMjQ2LDEzICsxMjYwLDEzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoMC4xLCBsb29wLnRpbWUoKSkKIAogICAgIGRlZiB0ZXN0X3Rhc2tfY2FuY2VsX3dhaXRlcl9mdXR1cmUoc2VsZik6Ci0gICAgICAgIGZ1dCA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmdXQgPSBzZWxmLm5ld19mdXR1cmUoc2VsZi5sb29wKQogCiAgICAgICAgIEBhc3luY2lvLmNvcm91dGluZQogICAgICAgICBkZWYgY29ybygpOgogICAgICAgICAgICAgeWllbGQgZnJvbSBmdXQKIAotICAgICAgICB0YXNrID0gYXN5bmNpby5UYXNrKGNvcm8oKSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgIHRhc2sgPSBzZWxmLm5ld190YXNrKHNlbGYubG9vcCwgY29ybygpKQogICAgICAgICB0ZXN0X3V0aWxzLnJ1bl9icmllZmx5KHNlbGYubG9vcCkKICAgICAgICAgc2VsZi5hc3NlcnRJcyh0YXNrLl9mdXRfd2FpdGVyLCBmdXQpCiAKQEAgLTEyNjksNyArMTI4Myw3IEBACiAgICAgICAgICAgICByZXR1cm4gJ2tvJwogCiAgICAgICAgIGdlbiA9IG5vdG11Y2goKQotICAgICAgICB0YXNrID0gYXN5bmNpby5UYXNrKGdlbiwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgIHRhc2sgPSBzZWxmLm5ld190YXNrKHNlbGYubG9vcCwgZ2VuKQogICAgICAgICB0YXNrLnNldF9yZXN1bHQoJ29rJykKIAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvciwgdGFzay5fc3RlcCkKQEAgLTEzMDUsNyArMTMxOSw3IEBACiAgICAgICAgICAgICBub25sb2NhbCByZXN1bHQKICAgICAgICAgICAgIHJlc3VsdCA9IHlpZWxkIGZyb20gZnV0CiAKLSAgICAgICAgdCA9IGFzeW5jaW8uVGFzayh3YWl0X2Zvcl9mdXR1cmUoKSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgIHQgPSBzZWxmLm5ld190YXNrKHNlbGYubG9vcCwgd2FpdF9mb3JfZnV0dXJlKCkpCiAgICAgICAgIHRlc3RfdXRpbHMucnVuX2JyaWVmbHkoc2VsZi5sb29wKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoZnV0LmNiX2FkZGVkKQogCkBAIC0xMzIxLDcgKzEzMzUsNyBAQAogICAgICAgICBkZWYgbm90bXV0Y2goKToKICAgICAgICAgICAgIHJhaXNlIEJhc2VFeGNlcHRpb24oKQogCi0gICAgICAgIHRhc2sgPSBhc3luY2lvLlRhc2sobm90bXV0Y2goKSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgIHRhc2sgPSBzZWxmLm5ld190YXNrKHNlbGYubG9vcCwgbm90bXV0Y2goKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQmFzZUV4Y2VwdGlvbiwgdGFzay5fc3RlcCkKIAogICAgICAgICBzZWxmLmFzc2VydFRydWUodGFzay5kb25lKCkpCkBAIC0xMzQ5LDcgKzEzNjMsNyBAQAogICAgICAgICAgICAgZXhjZXB0IGFzeW5jaW8uQ2FuY2VsbGVkRXJyb3I6CiAgICAgICAgICAgICAgICAgcmFpc2UgYmFzZV9leGMKIAotICAgICAgICB0YXNrID0gYXN5bmNpby5UYXNrKG5vdG11dGNoKCksIGxvb3A9bG9vcCkKKyAgICAgICAgdGFzayA9IHNlbGYubmV3X3Rhc2sobG9vcCwgbm90bXV0Y2goKSkKICAgICAgICAgdGVzdF91dGlscy5ydW5fYnJpZWZseShsb29wKQogCiAgICAgICAgIHRhc2suY2FuY2VsKCkKQEAgLTEzNzksNyArMTM5Myw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYXN5bmNpby5pc2Nvcm91dGluZWZ1bmN0aW9uKG1vY2suTW9jaygpKSkKIAogICAgIGRlZiB0ZXN0X3lpZWxkX3ZzX3lpZWxkX2Zyb20oc2VsZik6Ci0gICAgICAgIGZ1dCA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmdXQgPSBzZWxmLm5ld19mdXR1cmUoc2VsZi5sb29wKQogCiAgICAgICAgIEBhc3luY2lvLmNvcm91dGluZQogICAgICAgICBkZWYgd2FpdF9mb3JfZnV0dXJlKCk6CkBAIC0xNDIzLDcgKzE0MzcsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgJ3Rlc3QnKQogCiAgICAgZGVmIHRlc3RfY29yb3V0aW5lX25vbl9nZW5fZnVuY3Rpb25fcmV0dXJuX2Z1dHVyZShzZWxmKToKLSAgICAgICAgZnV0ID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZ1dCA9IHNlbGYubmV3X2Z1dHVyZShzZWxmLmxvb3ApCiAKICAgICAgICAgQGFzeW5jaW8uY29yb3V0aW5lCiAgICAgICAgIGRlZiBmdW5jKCk6CkBAIC0xNDMzLDQ5ICsxNDQ3LDUzIEBACiAgICAgICAgIGRlZiBjb3JvKCk6CiAgICAgICAgICAgICBmdXQuc2V0X3Jlc3VsdCgndGVzdCcpCiAKLSAgICAgICAgdDEgPSBhc3luY2lvLlRhc2soZnVuYygpLCBsb29wPXNlbGYubG9vcCkKLSAgICAgICAgdDIgPSBhc3luY2lvLlRhc2soY29ybygpLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgdDEgPSBzZWxmLm5ld190YXNrKHNlbGYubG9vcCwgZnVuYygpKQorICAgICAgICB0MiA9IHNlbGYubmV3X3Rhc2soc2VsZi5sb29wLCBjb3JvKCkpCiAgICAgICAgIHJlcyA9IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUodDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCAndGVzdCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHQyLnJlc3VsdCgpKQogCiAgICAgZGVmIHRlc3RfY3VycmVudF90YXNrKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydElzTm9uZShhc3luY2lvLlRhc2suY3VycmVudF90YXNrKGxvb3A9c2VsZi5sb29wKSkKKyAgICAgICAgVGFzayA9IHNlbGYuX19jbGFzc19fLlRhc2sKKworICAgICAgICBzZWxmLmFzc2VydElzTm9uZShUYXNrLmN1cnJlbnRfdGFzayhsb29wPXNlbGYubG9vcCkpCiAKICAgICAgICAgQGFzeW5jaW8uY29yb3V0aW5lCiAgICAgICAgIGRlZiBjb3JvKGxvb3ApOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGFzeW5jaW8uVGFzay5jdXJyZW50X3Rhc2sobG9vcD1sb29wKSBpcyB0YXNrKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFRhc2suY3VycmVudF90YXNrKGxvb3A9bG9vcCkgaXMgdGFzaykKIAotICAgICAgICB0YXNrID0gYXN5bmNpby5UYXNrKGNvcm8oc2VsZi5sb29wKSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgIHRhc2sgPSBzZWxmLm5ld190YXNrKHNlbGYubG9vcCwgY29ybyhzZWxmLmxvb3ApKQogICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHRhc2spCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGFzeW5jaW8uVGFzay5jdXJyZW50X3Rhc2sobG9vcD1zZWxmLmxvb3ApKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShUYXNrLmN1cnJlbnRfdGFzayhsb29wPXNlbGYubG9vcCkpCiAKICAgICBkZWYgdGVzdF9jdXJyZW50X3Rhc2tfd2l0aF9pbnRlcmxlYXZpbmdfdGFza3Moc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGFzeW5jaW8uVGFzay5jdXJyZW50X3Rhc2sobG9vcD1zZWxmLmxvb3ApKQorICAgICAgICBUYXNrID0gc2VsZi5fX2NsYXNzX18uVGFzawogCi0gICAgICAgIGZ1dDEgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKLSAgICAgICAgZnV0MiA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShUYXNrLmN1cnJlbnRfdGFzayhsb29wPXNlbGYubG9vcCkpCisKKyAgICAgICAgZnV0MSA9IHNlbGYubmV3X2Z1dHVyZShzZWxmLmxvb3ApCisgICAgICAgIGZ1dDIgPSBzZWxmLm5ld19mdXR1cmUoc2VsZi5sb29wKQogCiAgICAgICAgIEBhc3luY2lvLmNvcm91dGluZQogICAgICAgICBkZWYgY29ybzEobG9vcCk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYXN5bmNpby5UYXNrLmN1cnJlbnRfdGFzayhsb29wPWxvb3ApIGlzIHRhc2sxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFRhc2suY3VycmVudF90YXNrKGxvb3A9bG9vcCkgaXMgdGFzazEpCiAgICAgICAgICAgICB5aWVsZCBmcm9tIGZ1dDEKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhc3luY2lvLlRhc2suY3VycmVudF90YXNrKGxvb3A9bG9vcCkgaXMgdGFzazEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoVGFzay5jdXJyZW50X3Rhc2sobG9vcD1sb29wKSBpcyB0YXNrMSkKICAgICAgICAgICAgIGZ1dDIuc2V0X3Jlc3VsdChUcnVlKQogCiAgICAgICAgIEBhc3luY2lvLmNvcm91dGluZQogICAgICAgICBkZWYgY29ybzIobG9vcCk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYXN5bmNpby5UYXNrLmN1cnJlbnRfdGFzayhsb29wPWxvb3ApIGlzIHRhc2syKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFRhc2suY3VycmVudF90YXNrKGxvb3A9bG9vcCkgaXMgdGFzazIpCiAgICAgICAgICAgICBmdXQxLnNldF9yZXN1bHQoVHJ1ZSkKICAgICAgICAgICAgIHlpZWxkIGZyb20gZnV0MgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGFzeW5jaW8uVGFzay5jdXJyZW50X3Rhc2sobG9vcD1sb29wKSBpcyB0YXNrMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShUYXNrLmN1cnJlbnRfdGFzayhsb29wPWxvb3ApIGlzIHRhc2syKQogCi0gICAgICAgIHRhc2sxID0gYXN5bmNpby5UYXNrKGNvcm8xKHNlbGYubG9vcCksIGxvb3A9c2VsZi5sb29wKQotICAgICAgICB0YXNrMiA9IGFzeW5jaW8uVGFzayhjb3JvMihzZWxmLmxvb3ApLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgdGFzazEgPSBzZWxmLm5ld190YXNrKHNlbGYubG9vcCwgY29ybzEoc2VsZi5sb29wKSkKKyAgICAgICAgdGFzazIgPSBzZWxmLm5ld190YXNrKHNlbGYubG9vcCwgY29ybzIoc2VsZi5sb29wKSkKIAogICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKGFzeW5jaW8ud2FpdCgodGFzazEsIHRhc2syKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcD1zZWxmLmxvb3ApKQotICAgICAgICBzZWxmLmFzc2VydElzTm9uZShhc3luY2lvLlRhc2suY3VycmVudF90YXNrKGxvb3A9c2VsZi5sb29wKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoVGFzay5jdXJyZW50X3Rhc2sobG9vcD1zZWxmLmxvb3ApKQogCiAgICAgIyBTb21lIHRob3JvdWdoIHRlc3RzIGZvciBjYW5jZWxsYXRpb24gcHJvcGFnYXRpb24gdGhyb3VnaAogICAgICMgY29yb3V0aW5lcywgdGFza3MgYW5kIHdhaXQoKS4KQEAgLTE0ODMsNyArMTUwMSw3IEBACiAgICAgZGVmIHRlc3RfeWllbGRfZnV0dXJlX3Bhc3Nlc19jYW5jZWwoc2VsZik6CiAgICAgICAgICMgQ2FuY2VsbGluZyBvdXRlcigpIGNhbmNlbHMgaW5uZXIoKSBjYW5jZWxzIHdhaXRlci4KICAgICAgICAgcHJvb2YgPSAwCi0gICAgICAgIHdhaXRlciA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICB3YWl0ZXIgPSBzZWxmLm5ld19mdXR1cmUoc2VsZi5sb29wKQogCiAgICAgICAgIEBhc3luY2lvLmNvcm91dGluZQogICAgICAgICBkZWYgaW5uZXIoKToKQEAgLTE1MTcsNyArMTUzNSw3IEBACiAgICAgICAgICMgQ2FuY2VsbGluZyBvdXRlcigpIG1ha2VzIHdhaXQoKSByZXR1cm4gZWFybHksIGxlYXZlcyBpbm5lcigpCiAgICAgICAgICMgcnVubmluZy4KICAgICAgICAgcHJvb2YgPSAwCi0gICAgICAgIHdhaXRlciA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICB3YWl0ZXIgPSBzZWxmLm5ld19mdXR1cmUoc2VsZi5sb29wKQogCiAgICAgICAgIEBhc3luY2lvLmNvcm91dGluZQogICAgICAgICBkZWYgaW5uZXIoKToKQEAgLTE1NDEsMTQgKzE1NTksMTQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcm9vZiwgMSkKIAogICAgIGRlZiB0ZXN0X3NoaWVsZF9yZXN1bHQoc2VsZik6Ci0gICAgICAgIGlubmVyID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGlubmVyID0gc2VsZi5uZXdfZnV0dXJlKHNlbGYubG9vcCkKICAgICAgICAgb3V0ZXIgPSBhc3luY2lvLnNoaWVsZChpbm5lcikKICAgICAgICAgaW5uZXIuc2V0X3Jlc3VsdCg0MikKICAgICAgICAgcmVzID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShvdXRlcikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIDQyKQogCiAgICAgZGVmIHRlc3Rfc2hpZWxkX2V4Y2VwdGlvbihzZWxmKToKLSAgICAgICAgaW5uZXIgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgaW5uZXIgPSBzZWxmLm5ld19mdXR1cmUoc2VsZi5sb29wKQogICAgICAgICBvdXRlciA9IGFzeW5jaW8uc2hpZWxkKGlubmVyKQogICAgICAgICB0ZXN0X3V0aWxzLnJ1bl9icmllZmx5KHNlbGYubG9vcCkKICAgICAgICAgZXhjID0gUnVudGltZUVycm9yKCdleHBlY3RlZCcpCkBAIC0xNTU3LDcgKzE1NzUsNyBAQAogICAgICAgICBzZWxmLmFzc2VydElzKG91dGVyLmV4Y2VwdGlvbigpLCBleGMpCiAKICAgICBkZWYgdGVzdF9zaGllbGRfY2FuY2VsKHNlbGYpOgotICAgICAgICBpbm5lciA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBpbm5lciA9IHNlbGYubmV3X2Z1dHVyZShzZWxmLmxvb3ApCiAgICAgICAgIG91dGVyID0gYXN5bmNpby5zaGllbGQoaW5uZXIpCiAgICAgICAgIHRlc3RfdXRpbHMucnVuX2JyaWVmbHkoc2VsZi5sb29wKQogICAgICAgICBpbm5lci5jYW5jZWwoKQpAQCAtMTU2NSw3ICsxNTgzLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG91dGVyLmNhbmNlbGxlZCgpKQogCiAgICAgZGVmIHRlc3Rfc2hpZWxkX3Nob3J0Y3V0KHNlbGYpOgotICAgICAgICBmdXQgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZnV0ID0gc2VsZi5uZXdfZnV0dXJlKHNlbGYubG9vcCkKICAgICAgICAgZnV0LnNldF9yZXN1bHQoNDIpCiAgICAgICAgIHJlcyA9IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoYXN5bmNpby5zaGllbGQoZnV0KSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIDQyKQpAQCAtMTU3Myw3ICsxNTkxLDcgQEAKICAgICBkZWYgdGVzdF9zaGllbGRfZWZmZWN0KHNlbGYpOgogICAgICAgICAjIENhbmNlbGxpbmcgb3V0ZXIoKSBkb2VzIG5vdCBhZmZlY3QgaW5uZXIoKS4KICAgICAgICAgcHJvb2YgPSAwCi0gICAgICAgIHdhaXRlciA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICB3YWl0ZXIgPSBzZWxmLm5ld19mdXR1cmUoc2VsZi5sb29wKQogCiAgICAgICAgIEBhc3luY2lvLmNvcm91dGluZQogICAgICAgICBkZWYgaW5uZXIoKToKQEAgLTE1OTcsOCArMTYxNSw4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJvb2YsIDEpCiAKICAgICBkZWYgdGVzdF9zaGllbGRfZ2F0aGVyKHNlbGYpOgotICAgICAgICBjaGlsZDEgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKLSAgICAgICAgY2hpbGQyID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGNoaWxkMSA9IHNlbGYubmV3X2Z1dHVyZShzZWxmLmxvb3ApCisgICAgICAgIGNoaWxkMiA9IHNlbGYubmV3X2Z1dHVyZShzZWxmLmxvb3ApCiAgICAgICAgIHBhcmVudCA9IGFzeW5jaW8uZ2F0aGVyKGNoaWxkMSwgY2hpbGQyLCBsb29wPXNlbGYubG9vcCkKICAgICAgICAgb3V0ZXIgPSBhc3luY2lvLnNoaWVsZChwYXJlbnQsIGxvb3A9c2VsZi5sb29wKQogICAgICAgICB0ZXN0X3V0aWxzLnJ1bl9icmllZmx5KHNlbGYubG9vcCkKQEAgLTE2MTEsOCArMTYyOSw4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyZW50LnJlc3VsdCgpLCBbMSwgMl0pCiAKICAgICBkZWYgdGVzdF9nYXRoZXJfc2hpZWxkKHNlbGYpOgotICAgICAgICBjaGlsZDEgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKLSAgICAgICAgY2hpbGQyID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGNoaWxkMSA9IHNlbGYubmV3X2Z1dHVyZShzZWxmLmxvb3ApCisgICAgICAgIGNoaWxkMiA9IHNlbGYubmV3X2Z1dHVyZShzZWxmLmxvb3ApCiAgICAgICAgIGlubmVyMSA9IGFzeW5jaW8uc2hpZWxkKGNoaWxkMSwgbG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIGlubmVyMiA9IGFzeW5jaW8uc2hpZWxkKGNoaWxkMiwgbG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIHBhcmVudCA9IGFzeW5jaW8uZ2F0aGVyKGlubmVyMSwgaW5uZXIyLCBsb29wPXNlbGYubG9vcCkKQEAgLTE2MjgsNyArMTY0Niw3IEBACiAgICAgICAgIHRlc3RfdXRpbHMucnVuX2JyaWVmbHkoc2VsZi5sb29wKQogCiAgICAgZGVmIHRlc3RfYXNfY29tcGxldGVkX2ludmFsaWRfYXJncyhzZWxmKToKLSAgICAgICAgZnV0ID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZ1dCA9IHNlbGYubmV3X2Z1dHVyZShzZWxmLmxvb3ApCiAKICAgICAgICAgIyBhc19jb21wbGV0ZWQoKSBleHBlY3RzIGEgbGlzdCBvZiBmdXR1cmVzLCBub3QgYSBmdXR1cmUgaW5zdGFuY2UKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlLApAQCAtMTYzOSw3ICsxNjU3LDcgQEAKICAgICAgICAgY29yby5jbG9zZSgpCiAKICAgICBkZWYgdGVzdF93YWl0X2ludmFsaWRfYXJncyhzZWxmKToKLSAgICAgICAgZnV0ID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZ1dCA9IHNlbGYubmV3X2Z1dHVyZShzZWxmLmxvb3ApCiAKICAgICAgICAgIyB3YWl0KCkgZXhwZWN0cyBhIGxpc3Qgb2YgZnV0dXJlcywgbm90IGEgZnV0dXJlIGluc3RhbmNlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZSwKQEAgLTE2NjYsNyArMTY4NCw3IEBACiAgICAgICAgICAgICAgICAgeWllbGQgZnJvbSBmdXQKIAogICAgICAgICAgICAgIyBBIGNvbXBsZXRlZCBGdXR1cmUgdXNlZCB0byBydW4gdGhlIGNvcm91dGluZS4KLSAgICAgICAgICAgIGZ1dCA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgZnV0ID0gc2VsZi5uZXdfZnV0dXJlKHNlbGYubG9vcCkKICAgICAgICAgICAgIGZ1dC5zZXRfcmVzdWx0KE5vbmUpCiAKICAgICAgICAgICAgICMgQ2FsbCB0aGUgY29yb3V0aW5lLgpAQCAtMTcwMCwxNSArMTcxOCwxNSBAQAogCiAgICAgICAgICAgICBAYXN5bmNpby5jb3JvdXRpbmUKICAgICAgICAgICAgIGRlZiB0MigpOgotICAgICAgICAgICAgICAgIGYgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKLSAgICAgICAgICAgICAgICBhc3luY2lvLlRhc2sodDMoZiksIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIGYgPSBzZWxmLm5ld19mdXR1cmUoc2VsZi5sb29wKQorICAgICAgICAgICAgICAgIHNlbGYubmV3X3Rhc2soc2VsZi5sb29wLCB0MyhmKSkKICAgICAgICAgICAgICAgICByZXR1cm4gKHlpZWxkIGZyb20gZikKIAogICAgICAgICAgICAgQGFzeW5jaW8uY29yb3V0aW5lCiAgICAgICAgICAgICBkZWYgdDMoZik6CiAgICAgICAgICAgICAgICAgZi5zZXRfcmVzdWx0KCgxLCAyLCAzKSkKIAotICAgICAgICAgICAgdGFzayA9IGFzeW5jaW8uVGFzayh0MSgpLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgIHRhc2sgPSBzZWxmLm5ld190YXNrKHNlbGYubG9vcCwgdDEoKSkKICAgICAgICAgICAgIHZhbCA9IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUodGFzaykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsLCAoMSwgMiwgMykpCiAKQEAgLTE3NzEsOSArMTc4OSwxMSBAQAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFBZMzQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgcHl0aG9uIDMuNCBvciBsYXRlcicpCiAgICAgZGVmIHRlc3RfbG9nX2Rlc3Ryb3llZF9wZW5kaW5nX3Rhc2soc2VsZik6CisgICAgICAgIFRhc2sgPSBzZWxmLl9fY2xhc3NfXy5UYXNrCisKICAgICAgICAgQGFzeW5jaW8uY29yb3V0aW5lCiAgICAgICAgIGRlZiBraWxsX21lKGxvb3ApOgotICAgICAgICAgICAgZnV0dXJlID0gYXN5bmNpby5GdXR1cmUobG9vcD1sb29wKQorICAgICAgICAgICAgZnV0dXJlID0gc2VsZi5uZXdfZnV0dXJlKGxvb3ApCiAgICAgICAgICAgICB5aWVsZCBmcm9tIGZ1dHVyZQogICAgICAgICAgICAgIyBhdCB0aGlzIHBvaW50LCB0aGUgb25seSByZWZlcmVuY2UgdG8ga2lsbF9tZSgpIHRhc2sgaXMKICAgICAgICAgICAgICMgdGhlIFRhc2suX3dha2V1cCgpIG1ldGhvZCBpbiBmdXR1cmUuX2NhbGxiYWNrcwpAQCAtMTc4Niw3ICsxODA2LDcgQEAKICAgICAgICAgIyBzY2hlZHVsZSB0aGUgdGFzawogICAgICAgICBjb3JvID0ga2lsbF9tZShzZWxmLmxvb3ApCiAgICAgICAgIHRhc2sgPSBhc3luY2lvLmVuc3VyZV9mdXR1cmUoY29ybywgbG9vcD1zZWxmLmxvb3ApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXN5bmNpby5UYXNrLmFsbF90YXNrcyhsb29wPXNlbGYubG9vcCksIHt0YXNrfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUYXNrLmFsbF90YXNrcyhsb29wPXNlbGYubG9vcCksIHt0YXNrfSkKIAogICAgICAgICAjIGV4ZWN1dGUgdGhlIHRhc2sgc28gaXQgd2FpdHMgZm9yIGZ1dHVyZQogICAgICAgICBzZWxmLmxvb3AuX3J1bl9vbmNlKCkKQEAgLTE4MDEsNyArMTgyMSw3IEBACiAgICAgICAgICMgbm8gbW9yZSByZWZlcmVuY2UgdG8ga2lsbF9tZSgpIHRhc2s6IHRoZSB0YXNrIGlzIGRlc3Ryb3llZCBieSB0aGUgR0MKICAgICAgICAgc3VwcG9ydC5nY19jb2xsZWN0KCkKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFzeW5jaW8uVGFzay5hbGxfdGFza3MobG9vcD1zZWxmLmxvb3ApLCBzZXQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUYXNrLmFsbF90YXNrcyhsb29wPXNlbGYubG9vcCksIHNldCgpKQogCiAgICAgICAgIG1vY2tfaGFuZGxlci5hc3NlcnRfY2FsbGVkX3dpdGgoc2VsZi5sb29wLCB7CiAgICAgICAgICAgICAnbWVzc2FnZSc6ICdUYXNrIHdhcyBkZXN0cm95ZWQgYnV0IGl0IGlzIHBlbmRpbmchJywKQEAgLTE4NjYsMTAgKzE4ODYsMTAgQEAKICAgICBkZWYgdGVzdF90YXNrX3NvdXJjZV90cmFjZWJhY2soc2VsZik6CiAgICAgICAgIHNlbGYubG9vcC5zZXRfZGVidWcoVHJ1ZSkKIAotICAgICAgICB0YXNrID0gYXN5bmNpby5UYXNrKGNvcm91dGluZV9mdW5jdGlvbigpLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgdGFzayA9IHNlbGYubmV3X3Rhc2soc2VsZi5sb29wLCBjb3JvdXRpbmVfZnVuY3Rpb24oKSkKICAgICAgICAgbGluZW5vID0gc3lzLl9nZXRmcmFtZSgpLmZfbGluZW5vIC0gMQogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UodGFzay5fc291cmNlX3RyYWNlYmFjaywgbGlzdCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0YXNrLl9zb3VyY2VfdHJhY2ViYWNrWy0xXVs6M10sCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGFzay5fc291cmNlX3RyYWNlYmFja1stMl1bOjNdLAogICAgICAgICAgICAgICAgICAgICAgICAgIChfX2ZpbGVfXywKICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZW5vLAogICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdF90YXNrX3NvdXJjZV90cmFjZWJhY2snKSkKQEAgLTE4ODEsNyArMTkwMSw3IEBACiAKICAgICAgICAgQGFzeW5jaW8uY29yb3V0aW5lCiAgICAgICAgIGRlZiBibG9ja2luZ19jb3JvdXRpbmUoKToKLSAgICAgICAgICAgIGZ1dCA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9bG9vcCkKKyAgICAgICAgICAgIGZ1dCA9IHNlbGYubmV3X2Z1dHVyZShsb29wKQogICAgICAgICAgICAgIyBCbG9jazogZnV0IHJlc3VsdCBpcyBuZXZlciBzZXQKICAgICAgICAgICAgIHlpZWxkIGZyb20gZnV0CiAKQEAgLTE5MDgsNyArMTkyOCw3IEBACiAgICAgICAgIGxvb3AgPSBhc3luY2lvLm5ld19ldmVudF9sb29wKCkKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGxvb3AuY2xvc2UpCiAKLSAgICAgICAgZnV0ID0gYXN5bmNpby5GdXR1cmUobG9vcD1sb29wKQorICAgICAgICBmdXQgPSBzZWxmLm5ld19mdXR1cmUobG9vcCkKICAgICAgICAgIyBUaGUgaW5kaXJlY3Rpb24gZnV0LT5jaGlsZF9jb3JvIGlzIG5lZWRlZCBzaW5jZSBvdGhlcndpc2UgdGhlCiAgICAgICAgICMgZ2F0aGVyaW5nIHRhc2sgaXMgZG9uZSBhdCB0aGUgc2FtZSB0aW1lIGFzIHRoZSBjaGlsZCBmdXR1cmUKICAgICAgICAgZGVmIGNoaWxkX2Nvcm8oKToKQEAgLTE5MzIsNiArMTk1MiwxNzIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShnYXRoZXJfdGFzay5jYW5jZWxsZWQoKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnYXRoZXJfdGFzay5yZXN1bHQoKSwgWzQyXSkKIAorICAgIGRlZiB0ZXN0X2V4Y2VwdGlvbl90cmFjZWJhY2soc2VsZik6CisgICAgICAgICMgU2VlIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyODg0MworCisgICAgICAgIEBhc3luY2lvLmNvcm91dGluZQorICAgICAgICBkZWYgZm9vKCk6CisgICAgICAgICAgICAxIC8gMAorCisgICAgICAgIEBhc3luY2lvLmNvcm91dGluZQorICAgICAgICBkZWYgbWFpbigpOgorICAgICAgICAgICAgdGFzayA9IHNlbGYubmV3X3Rhc2soc2VsZi5sb29wLCBmb28oKSkKKyAgICAgICAgICAgIHlpZWxkICAjIHNraXAgb25lIGxvb3AgaXRlcmF0aW9uCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZSh0YXNrLmV4Y2VwdGlvbigpLl9fdHJhY2ViYWNrX18pCisKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShtYWluKCkpCisKKyAgICBAbW9jay5wYXRjaCgnYXN5bmNpby5iYXNlX2V2ZW50cy5sb2dnZXInKQorICAgIGRlZiB0ZXN0X2Vycm9yX2luX2NhbGxfc29vbihzZWxmLCBtX2xvZyk6CisgICAgICAgIGRlZiBjYWxsX3Nvb24oY2FsbGJhY2ssICphcmdzKToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKKyAgICAgICAgc2VsZi5sb29wLmNhbGxfc29vbiA9IGNhbGxfc29vbgorCisgICAgICAgIEBhc3luY2lvLmNvcm91dGluZQorICAgICAgICBkZWYgY29ybygpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobV9sb2cuZXJyb3IuY2FsbGVkKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBzZWxmLm5ld190YXNrKHNlbGYubG9vcCwgY29ybygpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtX2xvZy5lcnJvci5jYWxsZWQpCisgICAgICAgIG1lc3NhZ2UgPSBtX2xvZy5lcnJvci5jYWxsX2FyZ3NbMF1bMF0KKyAgICAgICAgc2VsZi5hc3NlcnRJbignVGFzayB3YXMgZGVzdHJveWVkIGJ1dCBpdCBpcyBwZW5kaW5nJywgbWVzc2FnZSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuVGFzay5hbGxfdGFza3Moc2VsZi5sb29wKSwgc2V0KCkpCisKKworZGVmIGFkZF9zdWJjbGFzc190ZXN0cyhjbHMpOgorICAgIEJhc2VUYXNrID0gY2xzLlRhc2sKKyAgICBCYXNlRnV0dXJlID0gY2xzLkZ1dHVyZQorCisgICAgaWYgQmFzZVRhc2sgaXMgTm9uZSBvciBCYXNlRnV0dXJlIGlzIE5vbmU6CisgICAgICAgIHJldHVybiBjbHMKKworICAgIGNsYXNzIENvbW1vbkZ1dHVyZToKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICBzZWxmLmNhbGxzID0gY29sbGVjdGlvbnMuZGVmYXVsdGRpY3QobGFtYmRhOiAwKQorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqYXJncywgKiprd2FyZ3MpCisKKyAgICAgICAgZGVmIF9zY2hlZHVsZV9jYWxsYmFja3Moc2VsZik6CisgICAgICAgICAgICBzZWxmLmNhbGxzWydfc2NoZWR1bGVfY2FsbGJhY2tzJ10gKz0gMQorICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuX3NjaGVkdWxlX2NhbGxiYWNrcygpCisKKyAgICAgICAgZGVmIGFkZF9kb25lX2NhbGxiYWNrKHNlbGYsICphcmdzKToKKyAgICAgICAgICAgIHNlbGYuY2FsbHNbJ2FkZF9kb25lX2NhbGxiYWNrJ10gKz0gMQorICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuYWRkX2RvbmVfY2FsbGJhY2soKmFyZ3MpCisKKyAgICBjbGFzcyBUYXNrKENvbW1vbkZ1dHVyZSwgQmFzZVRhc2spOgorICAgICAgICBkZWYgX3N0ZXAoc2VsZiwgKmFyZ3MpOgorICAgICAgICAgICAgc2VsZi5jYWxsc1snX3N0ZXAnXSArPSAxCisgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5fc3RlcCgqYXJncykKKworICAgICAgICBkZWYgX3dha2V1cChzZWxmLCAqYXJncyk6CisgICAgICAgICAgICBzZWxmLmNhbGxzWydfd2FrZXVwJ10gKz0gMQorICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuX3dha2V1cCgqYXJncykKKworICAgIGNsYXNzIEZ1dHVyZShDb21tb25GdXR1cmUsIEJhc2VGdXR1cmUpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF9zdWJjbGFzc2VzX2N0YXNrX2NmdXR1cmUoc2VsZik6CisgICAgICAgIGZ1dCA9IHNlbGYuRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorCisgICAgICAgIGFzeW5jIGRlZiBmdW5jKCk6CisgICAgICAgICAgICBzZWxmLmxvb3AuY2FsbF9zb29uKGxhbWJkYTogZnV0LnNldF9yZXN1bHQoJ3NwYW0nKSkKKyAgICAgICAgICAgIHJldHVybiBhd2FpdCBmdXQKKworICAgICAgICB0YXNrID0gc2VsZi5UYXNrKGZ1bmMoKSwgbG9vcD1zZWxmLmxvb3ApCisKKyAgICAgICAgcmVzdWx0ID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZSh0YXNrKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCAnc3BhbScpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGRpY3QodGFzay5jYWxscyksCisgICAgICAgICAgICB7J19zdGVwJzogMiwgJ193YWtldXAnOiAxLCAnYWRkX2RvbmVfY2FsbGJhY2snOiAxLAorICAgICAgICAgICAgICdfc2NoZWR1bGVfY2FsbGJhY2tzJzogMX0pCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGRpY3QoZnV0LmNhbGxzKSwKKyAgICAgICAgICAgIHsnYWRkX2RvbmVfY2FsbGJhY2snOiAxLCAnX3NjaGVkdWxlX2NhbGxiYWNrcyc6IDF9KQorCisgICAgIyBBZGQgcGF0Y2hlZCBUYXNrICYgRnV0dXJlIGJhY2sgdG8gdGhlIHRlc3QgY2FzZQorICAgIGNscy5UYXNrID0gVGFzaworICAgIGNscy5GdXR1cmUgPSBGdXR1cmUKKworICAgICMgQWRkIGFuIGV4dHJhIHVuaXQtdGVzdAorICAgIGNscy50ZXN0X3N1YmNsYXNzZXNfY3Rhc2tfY2Z1dHVyZSA9IHRlc3Rfc3ViY2xhc3Nlc19jdGFza19jZnV0dXJlCisKKyAgICAjIERpc2FibGUgdGhlICJ0ZXN0X3Rhc2tfc291cmNlX3RyYWNlYmFjayIgdGVzdAorICAgICMgKHRoZSB0ZXN0IGlzIGhhcmRjb2RlZCBmb3IgYSBwYXJ0aWN1bGFyIGNhbGwgc3RhY2ssIHdoaWNoCisgICAgIyBpcyBzbGlnaHRseSBkaWZmZXJlbnQgZm9yIFRhc2sgc3ViY2xhc3NlcykKKyAgICBjbHMudGVzdF90YXNrX3NvdXJjZV90cmFjZWJhY2sgPSBOb25lCisKKyAgICByZXR1cm4gY2xzCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihmdXR1cmVzLCAnX0NGdXR1cmUnKSwKKyAgICAgICAgICAgICAgICAgICAgICdyZXF1aXJlcyB0aGUgQyBfYXN5bmNpbyBtb2R1bGUnKQorY2xhc3MgQ1Rhc2tfQ0Z1dHVyZV9UZXN0cyhCYXNlVGFza1Rlc3RzLCB0ZXN0X3V0aWxzLlRlc3RDYXNlKToKKyAgICBUYXNrID0gZ2V0YXR0cih0YXNrcywgJ19DVGFzaycsIE5vbmUpCisgICAgRnV0dXJlID0gZ2V0YXR0cihmdXR1cmVzLCAnX0NGdXR1cmUnLCBOb25lKQorCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoZnV0dXJlcywgJ19DRnV0dXJlJyksCisgICAgICAgICAgICAgICAgICAgICAncmVxdWlyZXMgdGhlIEMgX2FzeW5jaW8gbW9kdWxlJykKK0BhZGRfc3ViY2xhc3NfdGVzdHMKK2NsYXNzIENUYXNrX0NGdXR1cmVfU3ViY2xhc3NUZXN0cyhCYXNlVGFza1Rlc3RzLCB0ZXN0X3V0aWxzLlRlc3RDYXNlKToKKyAgICBUYXNrID0gZ2V0YXR0cih0YXNrcywgJ19DVGFzaycsIE5vbmUpCisgICAgRnV0dXJlID0gZ2V0YXR0cihmdXR1cmVzLCAnX0NGdXR1cmUnLCBOb25lKQorCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoZnV0dXJlcywgJ19DRnV0dXJlJyksCisgICAgICAgICAgICAgICAgICAgICAncmVxdWlyZXMgdGhlIEMgX2FzeW5jaW8gbW9kdWxlJykKK2NsYXNzIENUYXNrX1B5RnV0dXJlX1Rlc3RzKEJhc2VUYXNrVGVzdHMsIHRlc3RfdXRpbHMuVGVzdENhc2UpOgorICAgIFRhc2sgPSBnZXRhdHRyKHRhc2tzLCAnX0NUYXNrJywgTm9uZSkKKyAgICBGdXR1cmUgPSBmdXR1cmVzLl9QeUZ1dHVyZQorCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoZnV0dXJlcywgJ19DRnV0dXJlJyksCisgICAgICAgICAgICAgICAgICAgICAncmVxdWlyZXMgdGhlIEMgX2FzeW5jaW8gbW9kdWxlJykKK2NsYXNzIFB5VGFza19DRnV0dXJlX1Rlc3RzKEJhc2VUYXNrVGVzdHMsIHRlc3RfdXRpbHMuVGVzdENhc2UpOgorICAgIFRhc2sgPSB0YXNrcy5fUHlUYXNrCisgICAgRnV0dXJlID0gZ2V0YXR0cihmdXR1cmVzLCAnX0NGdXR1cmUnLCBOb25lKQorCisKK2NsYXNzIFB5VGFza19QeUZ1dHVyZV9UZXN0cyhCYXNlVGFza1Rlc3RzLCB0ZXN0X3V0aWxzLlRlc3RDYXNlKToKKyAgICBUYXNrID0gdGFza3MuX1B5VGFzaworICAgIEZ1dHVyZSA9IGZ1dHVyZXMuX1B5RnV0dXJlCisKKworQGFkZF9zdWJjbGFzc190ZXN0cworY2xhc3MgUHlUYXNrX1B5RnV0dXJlX1N1YmNsYXNzVGVzdHMoQmFzZVRhc2tUZXN0cywgdGVzdF91dGlscy5UZXN0Q2FzZSk6CisgICAgVGFzayA9IHRhc2tzLl9QeVRhc2sKKyAgICBGdXR1cmUgPSBmdXR1cmVzLl9QeUZ1dHVyZQorCisKK2NsYXNzIEdlbmVyaWNUYXNrVGVzdHModGVzdF91dGlscy5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9mdXR1cmVfc3ViY2xhc3Moc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKGFzeW5jaW8uVGFzaywgYXN5bmNpby5GdXR1cmUpKQorCisgICAgZGVmIHRlc3RfYXN5bmNpb19tb2R1bGVfY29tcGlsZWQoc2VsZik6CisgICAgICAgICMgQmVjYXVzZSBvZiBjaXJjdWxhciBpbXBvcnRzIGl0J3MgZWFzeSB0byBtYWtlIF9hc3luY2lvCisgICAgICAgICMgbW9kdWxlIG5vbi1pbXBvcnRhYmxlLiAgVGhpcyBpcyBhIHNpbXBsZSB0ZXN0IHRoYXQgd2lsbAorICAgICAgICAjIGZhaWwgb24gc3lzdGVtcyB3aGVyZSBDIG1vZHVsZXMgd2VyZSBzdWNjZXNzZnVsbHkgY29tcGlsZWQKKyAgICAgICAgIyAoaGVuY2UgdGhlIHRlc3QgZm9yIF9mdW5jdG9vbHMpLCBidXQgX2FzeW5jaW8gc29tZWhvdyBkaWRuJ3QuCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGltcG9ydCBfZnVuY3Rvb2xzCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpbXBvcnQgX2FzeW5jaW8KKyAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ19hc3luY2lvIG1vZHVsZSBpcyBtaXNzaW5nJykKKwogCiBjbGFzcyBHYXRoZXJUZXN0c0Jhc2U6CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYXN5bmNvcmUucHkgYi9MaWIvdGVzdC90ZXN0X2FzeW5jb3JlLnB5CmluZGV4IDM4NTc5MTYuLjUxYzY1NzMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYXN5bmNvcmUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9hc3luY29yZS5weQpAQCAtMTEsNiArMTEsOSBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIGlvIGltcG9ydCBCeXRlc0lPCiAKK2lmIHN1cHBvcnQuUEdPOgorICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJ0ZXN0IGlzIG5vdCBoZWxwZnVsIGZvciBQR08iKQorCiB0cnk6CiAgICAgaW1wb3J0IHRocmVhZGluZwogZXhjZXB0IEltcG9ydEVycm9yOgpAQCAtOTIsNyArOTUsOSBAQAogICAgIGlmIEhBU19VTklYX1NPQ0tFVFMgYW5kIHNvY2suZmFtaWx5ID09IHNvY2tldC5BRl9VTklYOgogICAgICAgICAjIE1ha2Ugc3VyZSB0aGUgcGF0aCBkb2Vzbid0IGV4aXN0LgogICAgICAgICBzdXBwb3J0LnVubGluayhhZGRyKQotICAgIHNvY2suYmluZChhZGRyKQorICAgICAgICBzdXBwb3J0LmJpbmRfdW5peF9zb2NrZXQoc29jaywgYWRkcikKKyAgICBlbHNlOgorICAgICAgICBzb2NrLmJpbmQoYWRkcikKIAogCiBjbGFzcyBIZWxwZXJGdW5jdGlvblRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYXVnYXNzaWduLnB5IGIvTGliL3Rlc3QvdGVzdF9hdWdhc3NpZ24ucHkKaW5kZXggNTA5M2U5ZC4uNTkzMGQ5ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9hdWdhc3NpZ24ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9hdWdhc3NpZ24ucHkKQEAgLTgzLDYgKzgzLDEwIEBACiAgICAgICAgICAgICBkZWYgX19pYWRkX18oc2VsZiwgdmFsKToKICAgICAgICAgICAgICAgICByZXR1cm4gYXVnX3Rlc3QzKHNlbGYudmFsICsgdmFsKQogCisgICAgICAgIGNsYXNzIGF1Z190ZXN0NChhdWdfdGVzdDMpOgorICAgICAgICAgICAgIiIiQmxvY2tzIGluaGVyaXRhbmNlLCBhbmQgZmFsbGJhY2sgdG8gX19hZGRfXyIiIgorICAgICAgICAgICAgX19pYWRkX18gPSBOb25lCisKICAgICAgICAgeCA9IGF1Z190ZXN0KDEpCiAgICAgICAgIHkgPSB4CiAgICAgICAgIHggKz0gMTAKQEAgLTEwNiw2ICsxMTAsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkgaXMgbm90IHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC52YWwsIDEzKQogCisgICAgICAgIHggPSBhdWdfdGVzdDQoNCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgeCArPSAxMAorCiAKICAgICBkZWYgdGVzdEN1c3RvbU1ldGhvZHMyKHRlc3Rfc2VsZik6CiAgICAgICAgIG91dHB1dCA9IFtdCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BlcDM1Mi5weSBiL0xpYi90ZXN0L3Rlc3RfYmFzZWV4Y2VwdGlvbi5weQpzaW1pbGFyaXR5IGluZGV4IDk5JQpyZW5hbWUgZnJvbSBMaWIvdGVzdC90ZXN0X3BlcDM1Mi5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9iYXNlZXhjZXB0aW9uLnB5CmluZGV4IDdjOThjNDYuLjI3ZDUxNGYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGVwMzUyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYmFzZWV4Y2VwdGlvbi5weQpAQCAtMSw2ICsxLDUgQEAKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IGJ1aWx0aW5zCi1pbXBvcnQgd2FybmluZ3MKIGltcG9ydCBvcwogZnJvbSBwbGF0Zm9ybSBpbXBvcnQgc3lzdGVtIGFzIHBsYXRmb3JtX3N5c3RlbQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2JpZ21lbS5weSBiL0xpYi90ZXN0L3Rlc3RfYmlnbWVtLnB5CmluZGV4IDQwYWM5YmYuLjYxMzNiYmMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYmlnbWVtLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYmlnbWVtLnB5CkBAIC0xNCw3ICsxNCw2IEBACiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBvcGVyYXRvcgogaW1wb3J0IHN5cwotaW1wb3J0IGZ1bmN0b29scwogCiAjIFRoZXNlIHRlc3RzIGFsbCB1c2Ugb25lIG9mIHRoZSBiaWdtZW10ZXN0IGRlY29yYXRvcnMgdG8gaW5kaWNhdGUgaG93IG11Y2gKICMgbWVtb3J5IHRoZXkgdXNlIGFuZCBob3cgbXVjaCBtZW1vcnkgdGhleSBuZWVkIHRvIGJlIGV2ZW4gbWVhbmluZ2Z1bC4gIFRoZQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9iaW5hc2NpaS5weSBiL0xpYi90ZXN0L3Rlc3RfYmluYXNjaWkucHkKaW5kZXggMDM0MjQ1ZC4uNmIzZTQzNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9iaW5hc2NpaS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2JpbmFzY2lpLnB5CkBAIC0xNTksMTEgKzE1OSwyNSBAQAogICAgICAgICAjIFRoZW4gY2FsY3VsYXRlIHRoZSBoZXhiaW40IGJpbmFyeS10by1BU0NJSSB0cmFuc2xhdGlvbgogICAgICAgICBybGUgPSBiaW5hc2NpaS5ybGVjb2RlX2hxeChzZWxmLmRhdGEpCiAgICAgICAgIGEgPSBiaW5hc2NpaS5iMmFfaHF4KHNlbGYudHlwZTJ0ZXN0KHJsZSkpCisKICAgICAgICAgYiwgXyA9IGJpbmFzY2lpLmEyYl9ocXgoc2VsZi50eXBlMnRlc3QoYSkpCiAgICAgICAgIHJlcyA9IGJpbmFzY2lpLnJsZWRlY29kZV9ocXgoYikKLQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgc2VsZi5yYXdkYXRhKQogCisgICAgZGVmIHRlc3RfcmxlKHNlbGYpOgorICAgICAgICAjIHRlc3QgcmVwZXRpdGlvbiB3aXRoIGEgcmVwZXRpdGlvbiBsb25nZXIgdGhhbiB0aGUgbGltaXQgb2YgMjU1CisgICAgICAgIGRhdGEgPSAoYidhJyAqIDEwMCArIGInYicgKyBiJ2MnICogMzAwKQorCisgICAgICAgIGVuY29kZWQgPSBiaW5hc2NpaS5ybGVjb2RlX2hxeChkYXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVuY29kZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgKGInYVx4OTBkJyAgICAgICMgJ2EnICogMTAwCisgICAgICAgICAgICAgICAgICAgICAgICAgIGInYicgICAgICAgICAgICMgJ2InCisgICAgICAgICAgICAgICAgICAgICAgICAgIGInY1x4OTBceGZmJyAgICMgJ2MnICogMjU1CisgICAgICAgICAgICAgICAgICAgICAgICAgIGInY1x4OTAtJykpICAgICMgJ2MnICogNDUKKworICAgICAgICBkZWNvZGVkID0gYmluYXNjaWkucmxlZGVjb2RlX2hxeChlbmNvZGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29kZWQsIGRhdGEpCisKICAgICBkZWYgdGVzdF9oZXgoc2VsZik6CiAgICAgICAgICMgdGVzdCBoZXhsaWZpY2F0aW9uCiAgICAgICAgIHMgPSBiJ3tzXDAwNVwwMDBcMDAwXDAwMHdvcmxkaVwwMDJcMDAwXDAwMFwwMDBzXDAwNVwwMDBcMDAwXDAwMGhlbGxvaVwwMDFcMDAwXDAwMFwwMDAwJwpAQCAtMzMxLDYgKzM0NSwxNiBAQAogICAgICAgICAgICAgIyBub24tQVNDSUkgc3RyaW5nCiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBhMmIsICJceDgwIikKIAorICAgIGRlZiB0ZXN0X2IyYV9iYXNlNjRfbmV3bGluZShzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMjUzNTc6IHRlc3QgbmV3bGluZSBwYXJhbWV0ZXIKKyAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KGInaGVsbG8nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJpbmFzY2lpLmIyYV9iYXNlNjQoYiksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidhR1ZzYkc4PVxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiaW5hc2NpaS5iMmFfYmFzZTY0KGIsIG5ld2xpbmU9VHJ1ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidhR1ZzYkc4PVxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiaW5hc2NpaS5iMmFfYmFzZTY0KGIsIG5ld2xpbmU9RmFsc2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInYUdWc2JHOD0nKQorCiAKIGNsYXNzIEFycmF5QmluQVNDSUlUZXN0KEJpbkFTQ0lJVGVzdCk6CiAgICAgZGVmIHR5cGUydGVzdChzZWxmLCBzKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYmluaGV4LnB5IGIvTGliL3Rlc3QvdGVzdF9iaW5oZXgucHkKaW5kZXggOWQ0Yzg1YS4uMjFmNDQ2MyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9iaW5oZXgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9iaW5oZXgucHkKQEAgLTQsNyArNCw2IEBACiAgICBCYXNlZCBvbiBhbiBvcmlnaW5hbCB0ZXN0IGJ5IFJvZ2VyIEUuIE1hc3NlLgogIiIiCiBpbXBvcnQgYmluaGV4Ci1pbXBvcnQgb3MKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYmlub3AucHkgYi9MaWIvdGVzdC90ZXN0X2Jpbm9wLnB5CmluZGV4IGU5ZGJkZGMuLjNlZDAxOGUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYmlub3AucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9iaW5vcC5weQpAQCAtMiw3ICsyLDcgQEAKIAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gb3BlcmF0b3IgaW1wb3J0IGVxLCBuZSwgbHQsIGd0LCBsZSwgZ2UKK2Zyb20gb3BlcmF0b3IgaW1wb3J0IGVxLCBsZSwgbmUKIGZyb20gYWJjIGltcG9ydCBBQkNNZXRhCiAKIGRlZiBnY2QoYSwgYik6CkBAIC0zODgsNiArMzg4LDU0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Bfc2VxdWVuY2UoZXEsIEIsIFYpLCBbJ0IuX19lcV9fJywgJ1YuX19lcV9fJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Bfc2VxdWVuY2UobGUsIEIsIFYpLCBbJ0IuX19sZV9fJywgJ1YuX19nZV9fJ10pCiAKK2NsYXNzIFN1cEVxKG9iamVjdCk6CisgICAgIiIiQ2xhc3MgdGhhdCBjYW4gdGVzdCBlcXVhbGl0eSIiIgorICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gVHJ1ZQorCitjbGFzcyBTKFN1cEVxKToKKyAgICAiIiJTdWJjbGFzcyBvZiBTdXBFcSB0aGF0IHNob3VsZCBmYWlsIiIiCisgICAgX19lcV9fID0gTm9uZQorCitjbGFzcyBGKG9iamVjdCk6CisgICAgIiIiSW5kZXBlbmRlbnQgY2xhc3MgdGhhdCBzaG91bGQgZmFsbCBiYWNrIiIiCisKK2NsYXNzIFgob2JqZWN0KToKKyAgICAiIiJJbmRlcGVuZGVudCBjbGFzcyB0aGF0IHNob3VsZCBmYWlsIiIiCisgICAgX19lcV9fID0gTm9uZQorCitjbGFzcyBTTihTdXBFcSk6CisgICAgIiIiU3ViY2xhc3Mgb2YgU3VwRXEgdGhhdCBjYW4gdGVzdCBlcXVhbGl0eSwgYnV0IG5vdCBub24tZXF1YWxpdHkiIiIKKyAgICBfX25lX18gPSBOb25lCisKK2NsYXNzIFhOOgorICAgICIiIkluZGVwZW5kZW50IGNsYXNzIHRoYXQgY2FuIHRlc3QgZXF1YWxpdHksIGJ1dCBub3Qgbm9uLWVxdWFsaXR5IiIiCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBUcnVlCisgICAgX19uZV9fID0gTm9uZQorCitjbGFzcyBGYWxsYmFja0Jsb2NraW5nVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIlVuaXQgdGVzdHMgZm9yIE5vbmUgbWV0aG9kIGJsb2NraW5nIiIiCisKKyAgICBkZWYgdGVzdF9mYWxsYmFja19ybWV0aG9kX2Jsb2NraW5nKHNlbGYpOgorICAgICAgICBlLCBmLCBzLCB4ID0gU3VwRXEoKSwgRigpLCBTKCksIFgoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUsIGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZSwgZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLCBlKQorICAgICAgICAjIGxlZnQgb3BlcmFuZCBpcyBjaGVja2VkIGZpcnN0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZSwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBlcSwgeCwgZSkKKyAgICAgICAgIyBTIGlzIGEgc3ViY2xhc3MsIHNvIGl0J3MgYWx3YXlzIGNoZWNrZWQgZmlyc3QKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBlcSwgZSwgcykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBlcSwgcywgZSkKKworICAgIGRlZiB0ZXN0X2ZhbGxiYWNrX25lX2Jsb2NraW5nKHNlbGYpOgorICAgICAgICBlLCBzbiwgeG4gPSBTdXBFcSgpLCBTTigpLCBYTigpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZSAhPSBlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG5lLCBlLCBzbikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBuZSwgc24sIGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZSAhPSB4bikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBuZSwgeG4sIGUpCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Jvb2wucHkgYi9MaWIvdGVzdC90ZXN0X2Jvb2wucHkKaW5kZXggZDMwYTNiOS4uOWY4ZjBlMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9ib29sLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYm9vbC5weQpAQCAtOTYsNiArOTYsMTMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZS8xLCAwKQogICAgICAgICBzZWxmLmFzc2VydElzTm90KEZhbHNlLzEsIEZhbHNlKQogCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSUxLCAwKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KFRydWUlMSwgRmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSUyLCAxKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KFRydWUlMiwgVHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSUxLCAwKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KEZhbHNlJTEsIEZhbHNlKQorCiAgICAgICAgIGZvciBiIGluIEZhbHNlLCBUcnVlOgogICAgICAgICAgICAgZm9yIGkgaW4gMCwgMSwgMjoKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIqKmksIGludChiKSoqaSkKQEAgLTMzMyw2ICszNDAsMTcgQEAKICAgICAgICAgICAgICAgICBleGNlcHQgKEV4Y2VwdGlvbikgYXMgZV9sZW46CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGVfYm9vbCksIHN0cihlX2xlbikpCiAKKyAgICBkZWYgdGVzdF9ibG9ja2VkKHNlbGYpOgorICAgICAgICBjbGFzcyBBOgorICAgICAgICAgICAgX19ib29sX18gPSBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYm9vbCwgQSgpKQorCisgICAgICAgIGNsYXNzIEI6CisgICAgICAgICAgICBkZWYgX19sZW5fXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gMTAKKyAgICAgICAgICAgIF9fYm9vbF9fID0gTm9uZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJvb2wsIEIoKSkKKwogICAgIGRlZiB0ZXN0X3JlYWxfYW5kX2ltYWcoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZS5yZWFsLCAxKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUuaW1hZywgMCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYnVmZmVyLnB5IGIvTGliL3Rlc3QvdGVzdF9idWZmZXIucHkKaW5kZXggMmVlZjlmYy4uYjgzZjJmMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9idWZmZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9idWZmZXIucHkKQEAgLTE2LDcgKzE2LDYgQEAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSBpdGVydG9vbHMgaW1wb3J0IHBlcm11dGF0aW9ucywgcHJvZHVjdAogZnJvbSByYW5kb20gaW1wb3J0IHJhbmRyYW5nZSwgc2FtcGxlLCBjaG9pY2UKLWZyb20gc3lzY29uZmlnIGltcG9ydCBnZXRfY29uZmlnX3ZhcgogaW1wb3J0IHdhcm5pbmdzCiBpbXBvcnQgc3lzLCBhcnJheSwgaW8KIGZyb20gZGVjaW1hbCBpbXBvcnQgRGVjaW1hbApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9idWZpby5weSBiL0xpYi90ZXN0L3Rlc3RfYnVmaW8ucHkKaW5kZXggOTkzMWM4NC4uZmVhNmRhNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9idWZpby5weQorKysgYi9MaWIvdGVzdC90ZXN0X2J1ZmlvLnB5CkBAIC01OSw3ICs1OSw3IEBACiAgICAgICAgIHNlbGYuZHJpdmVfb25lKGIiMTIzNDU2Nzg5MFwwMFwwMVwwMlwwM1wwNFwwNVwwNiIpCiAKICAgICBkZWYgdGVzdF9udWxscGF0KHNlbGYpOgotICAgICAgICBzZWxmLmRyaXZlX29uZShieXRlcygxMDAwKSkKKyAgICAgICAgc2VsZi5kcml2ZV9vbmUoYidcMCcgKiAxMDAwKQogCiAKIGNsYXNzIENCdWZmZXJTaXplVGVzdChCdWZmZXJTaXplVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9idWlsdGluLnB5IGIvTGliL3Rlc3QvdGVzdF9idWlsdGluLnB5CmluZGV4IDBiMDMzNDAuLmE3OTIwOTkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYnVpbHRpbi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2J1aWx0aW4ucHkKQEAgLTgyLDcgKzgyLDcgQEAKICAgICAgICAgKCcnLCBWYWx1ZUVycm9yKSwKICAgICAgICAgKCcgJywgVmFsdWVFcnJvciksCiAgICAgICAgICgnICBcdFx0ICAnLCBWYWx1ZUVycm9yKSwKLSAgICAgICAgKHN0cihiJ1x1MDY2M1x1MDY2MVx1MDY2NCAnLCdyYXctdW5pY29kZS1lc2NhcGUnKSwgMzE0KSwKKyAgICAgICAgKHN0cihicidcdTA2NjNcdTA2NjFcdTA2NjQgJywncmF3LXVuaWNvZGUtZXNjYXBlJyksIDMxNCksCiAgICAgICAgIChjaHIoMHgyMDApLCBWYWx1ZUVycm9yKSwKIF0KIApAQCAtMTA0LDcgKzEwNCw3IEBACiAgICAgICAgICgnJywgVmFsdWVFcnJvciksCiAgICAgICAgICgnICcsIFZhbHVlRXJyb3IpLAogICAgICAgICAoJyAgXHRcdCAgJywgVmFsdWVFcnJvciksCi0gICAgICAgIChzdHIoYidcdTA2NjNcdTA2NjFcdTA2NjQgJywncmF3LXVuaWNvZGUtZXNjYXBlJyksIDMxNCksCisgICAgICAgIChzdHIoYnInXHUwNjYzXHUwNjYxXHUwNjY0ICcsJ3Jhdy11bmljb2RlLWVzY2FwZScpLCAzMTQpLAogICAgICAgICAoY2hyKDB4MjAwKSwgVmFsdWVFcnJvciksCiBdCiAKQEAgLTE3MDgsMjEgKzE3MDgsMTEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LnNwYW0oKSwgJ3NwYW00MicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC50b19ieXRlcygyLCAnbGl0dGxlJyksIGInXHgyYVx4MDAnKQogCi0gICAgZGVmIHRlc3RfdHlwZV9uZXdfa2V5d29yZHMoc2VsZik6Ci0gICAgICAgIGNsYXNzIEI6Ci0gICAgICAgICAgICBkZWYgaGFtKHNlbGYpOgotICAgICAgICAgICAgICAgIHJldHVybiAnaGFtJWQnICUgc2VsZgotICAgICAgICBDID0gdHlwZS5fX25ld19fKHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT0nQycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgYmFzZXM9KEIsIGludCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgZGljdD17J3NwYW0nOiBsYW1iZGEgc2VsZjogJ3NwYW0lcycgJSBzZWxmfSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLl9fbmFtZV9fLCAnQycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5fX3F1YWxuYW1lX18sICdDJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLl9fbW9kdWxlX18sIF9fbmFtZV9fKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuX19iYXNlc19fLCAoQiwgaW50KSkKLSAgICAgICAgc2VsZi5hc3NlcnRJcyhDLl9fYmFzZV9fLCBpbnQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3NwYW0nLCBDLl9fZGljdF9fKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdoYW0nLCBDLl9fZGljdF9fKQorICAgIGRlZiB0ZXN0X3R5cGVfbm9rd2FyZ3Moc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHR5cGUoJ2EnLCAoKSwge30sIHg9NSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgdHlwZSgnYScsICgpLCBkaWN0PXt9KQogCiAgICAgZGVmIHRlc3RfdHlwZV9uYW1lKHNlbGYpOgogICAgICAgICBmb3IgbmFtZSBpbiAnQScsICdceGM0JywgJ1xVMDAwMWY0MGQnLCAnQi5BJywgJzQyJywgJyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2J5dGVzLnB5IGIvTGliL3Rlc3QvdGVzdF9ieXRlcy5weQppbmRleCAzMjg4YTViLi5iMzk2YTc2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2J5dGVzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYnl0ZXMucHkKQEAgLTIxNiw3ICsyMTYsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIHNlbGYudHlwZTJ0ZXN0KHNhbXBsZVs6LTNdLCAidXRmLTgiKSkKIAogICAgIGRlZiB0ZXN0X2RlY29kZShzZWxmKToKLSAgICAgICAgc2FtcGxlID0gIkhlbGxvIHdvcmxkXG5cdTEyMzRcdTU2NzhcdTlhYmNcZGVmMFxkZWYwIgorICAgICAgICBzYW1wbGUgPSAiSGVsbG8gd29ybGRcblx1MTIzNFx1NTY3OFx1OWFiYyIKICAgICAgICAgZm9yIGVuYyBpbiAoInV0Zi04IiwgInV0Zi0xNiIpOgogICAgICAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KHNhbXBsZSwgZW5jKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmRlY29kZShlbmMpLCBzYW1wbGUpCkBAIC0yNjksNiArMjY5LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnROb3RJbigyMDAsIGIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxhbWJkYTogMzAwIGluIGIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxhbWJkYTogLTEgaW4gYikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbGFtYmRhOiBzeXMubWF4c2l6ZSsxIGluIGIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBOb25lIGluIGIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBmbG9hdChvcmQoJ2EnKSkgaW4gYikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6ICJhIiBpbiBiKQpAQCAtMzAwLDYgKzMwMSwyMCBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLnR5cGUydGVzdC5mcm9taGV4LCAnXHgwMCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYudHlwZTJ0ZXN0LmZyb21oZXgsICcxMiAgIFx4MDAgICAzNCcpCiAKKyAgICAgICAgZm9yIGRhdGEsIHBvcyBpbiAoCisgICAgICAgICAgICAjIGludmFsaWQgZmlyc3QgaGV4YWRlY2ltYWwgY2hhcmFjdGVyCisgICAgICAgICAgICAoJzEyIHg0IDU2JywgMyksCisgICAgICAgICAgICAjIGludmFsaWQgc2Vjb25kIGhleGFkZWNpbWFsIGNoYXJhY3RlcgorICAgICAgICAgICAgKCcxMiAzeCA1NicsIDQpLAorICAgICAgICAgICAgIyB0d28gaW52YWxpZCBoZXhhZGVjaW1hbCBjaGFyYWN0ZXJzCisgICAgICAgICAgICAoJzEyIHh5IDU2JywgMyksCisgICAgICAgICAgICAjIHRlc3Qgbm9uLUFTQ0lJIHN0cmluZworICAgICAgICAgICAgKCcxMiAzXHhmZiA1NicsIDQpLAorICAgICAgICApOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBzZWxmLnR5cGUydGVzdC5mcm9taGV4KGRhdGEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdhdCBwb3NpdGlvbiAlcycgJSBwb3MsIHN0cihjbS5leGNlcHRpb24pKQorCiAgICAgZGVmIHRlc3RfaGV4KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYudHlwZTJ0ZXN0LmhleCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnR5cGUydGVzdC5oZXgsIDEpCkBAIC02NzQsNiArNjg5LDM3IEBACiAgICAgICAgIHRlc3Quc3VwcG9ydC5jaGVja19mcmVlX2FmdGVyX2l0ZXJhdGluZyhzZWxmLCBpdGVyLCBzZWxmLnR5cGUydGVzdCkKICAgICAgICAgdGVzdC5zdXBwb3J0LmNoZWNrX2ZyZWVfYWZ0ZXJfaXRlcmF0aW5nKHNlbGYsIHJldmVyc2VkLCBzZWxmLnR5cGUydGVzdCkKIAorICAgIGRlZiB0ZXN0X3RyYW5zbGF0ZShzZWxmKToKKyAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KGInaGVsbG8nKQorICAgICAgICByb3NldHRhID0gYnl0ZWFycmF5KHJhbmdlKDI1NikpCisgICAgICAgIHJvc2V0dGFbb3JkKCdvJyldID0gb3JkKCdlJykKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGIudHJhbnNsYXRlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGIudHJhbnNsYXRlLCBOb25lLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiLnRyYW5zbGF0ZSwgYnl0ZXMocmFuZ2UoMjU1KSkpCisKKyAgICAgICAgYyA9IGIudHJhbnNsYXRlKHJvc2V0dGEsIGInaGVsbG8nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGInaGVsbG8nKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoYywgc2VsZi50eXBlMnRlc3QpCisKKyAgICAgICAgYyA9IGIudHJhbnNsYXRlKHJvc2V0dGEpCisgICAgICAgIGQgPSBiLnRyYW5zbGF0ZShyb3NldHRhLCBiJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYywgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLCBiJ2hlbGxlJykKKworICAgICAgICBjID0gYi50cmFuc2xhdGUocm9zZXR0YSwgYidsJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLCBiJ2hlZScpCisgICAgICAgIGMgPSBiLnRyYW5zbGF0ZShOb25lLCBiJ2UnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMsIGInaGxsbycpCisKKyAgICAgICAgIyB0ZXN0IGRlbGV0ZSBhcyBhIGtleXdvcmQgYXJndW1lbnQKKyAgICAgICAgYyA9IGIudHJhbnNsYXRlKHJvc2V0dGEsIGRlbGV0ZT1iJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYywgYidoZWxsZScpCisgICAgICAgIGMgPSBiLnRyYW5zbGF0ZShyb3NldHRhLCBkZWxldGU9YidsJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLCBiJ2hlZScpCisgICAgICAgIGMgPSBiLnRyYW5zbGF0ZShOb25lLCBkZWxldGU9YidlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLCBiJ2hsbG8nKQorCiAKIGNsYXNzIEJ5dGVzVGVzdChCYXNlQnl0ZXNUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgdHlwZTJ0ZXN0ID0gYnl0ZXMKQEAgLTcyMiwzMSArNzY4LDE0MiBAQAogCiAgICAgIyBUZXN0IFB5Qnl0ZXNfRnJvbUZvcm1hdCgpCiAgICAgZGVmIHRlc3RfZnJvbV9mb3JtYXQoc2VsZik6Ci0gICAgICAgIHRlc3Quc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCdjdHlwZXMnKQotICAgICAgICBmcm9tIGN0eXBlcyBpbXBvcnQgcHl0aG9uYXBpLCBweV9vYmplY3QsIGNfaW50LCBjX2NoYXJfcAorICAgICAgICBjdHlwZXMgPSB0ZXN0LnN1cHBvcnQuaW1wb3J0X21vZHVsZSgnY3R5cGVzJykKKyAgICAgICAgX3Rlc3RjYXBpID0gdGVzdC5zdXBwb3J0LmltcG9ydF9tb2R1bGUoJ190ZXN0Y2FwaScpCisgICAgICAgIGZyb20gY3R5cGVzIGltcG9ydCBweXRob25hcGksIHB5X29iamVjdAorICAgICAgICBmcm9tIGN0eXBlcyBpbXBvcnQgKAorICAgICAgICAgICAgY19pbnQsIGNfdWludCwKKyAgICAgICAgICAgIGNfbG9uZywgY191bG9uZywKKyAgICAgICAgICAgIGNfc2l6ZV90LCBjX3NzaXplX3QsCisgICAgICAgICAgICBjX2NoYXJfcCkKKwogICAgICAgICBQeUJ5dGVzX0Zyb21Gb3JtYXQgPSBweXRob25hcGkuUHlCeXRlc19Gcm9tRm9ybWF0CiAgICAgICAgIFB5Qnl0ZXNfRnJvbUZvcm1hdC5yZXN0eXBlID0gcHlfb2JqZWN0CiAKKyAgICAgICAgIyBiYXNpYyB0ZXN0cwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJ2Zvcm1hdCcpLAogICAgICAgICAgICAgICAgICAgICAgICAgIGInZm9ybWF0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYidIZWxsbyAlcyAhJywgYid3b3JsZCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInSGVsbG8gd29ybGQgIScpCiAKKyAgICAgICAgIyB0ZXN0IGZvcm1hdHRlcnMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYidjPSVjJywgY19pbnQoMCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInYz1cMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInYz0lYycsIGNfaW50KG9yZCgnQCcpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidjPUAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJ2M9JWMnLCBjX2ludCgyNTUpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ2M9XHhmZicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInZD0lZCBsZD0lbGQgemQ9JXpkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY19pbnQoMSksIGNfbG9uZygyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY19zaXplX3QoMykpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInZD0xIGxkPTIgemQ9MycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInZD0lZCBsZD0lbGQgemQ9JXpkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY19pbnQoLTEpLCBjX2xvbmcoLTIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjX3NpemVfdCgtMykpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInZD0tMSBsZD0tMiB6ZD0tMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGIndT0ldSBsdT0lbHUgenU9JXp1JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY191aW50KDEyMyksIGNfdWxvbmcoNDU2KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY19zaXplX3QoNzg5KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgYid1PTEyMyBsdT00NTYgenU9Nzg5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYidpPSVpJywgY19pbnQoMTIzKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidpPTEyMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInaT0laScsIGNfaW50KC0xMjMpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ2k9LTEyMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGIneD0leCcsIGNfaW50KDB4YWJjKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgYid4PWFiYycpCisKKyAgICAgICAgc2l6ZW9mX3B0ciA9IGN0eXBlcy5zaXplb2YoY19jaGFyX3ApCisKKyAgICAgICAgaWYgb3MubmFtZSA9PSAnbnQnOgorICAgICAgICAgICAgIyBXaW5kb3dzIChNU0NSVCkKKyAgICAgICAgICAgIHB0cl9mb3JtYXQgPSAnMHglMHt9WCcuZm9ybWF0KDIgKiBzaXplb2ZfcHRyKQorICAgICAgICAgICAgZGVmIHB0cl9mb3JtYXR0ZXIocHRyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gKHB0cl9mb3JtYXQgJSBwdHIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIFVOSVggKGdsaWJjKQorICAgICAgICAgICAgZGVmIHB0cl9mb3JtYXR0ZXIocHRyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gJyUjeCcgJSBwdHIKKworICAgICAgICBwdHIgPSAweGFiY2RlZgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJ3B0cj0lcCcsIGNfY2hhcl9wKHB0cikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgncHRyPScgKyBwdHJfZm9ybWF0dGVyKHB0cikpLmVuY29kZSgnYXNjaWknKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYidzPSVzJywgY19jaGFyX3AoYidjc3RyJykpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGIncz1jc3RyJykKKworICAgICAgICAjIHRlc3QgbWluaW11bSBhbmQgbWF4aW11bSBpbnRlZ2VyIHZhbHVlcworICAgICAgICBzaXplX21heCA9IGNfc2l6ZV90KC0xKS52YWx1ZQorICAgICAgICBmb3IgZm9ybWF0c3RyLCBjdHlwZXNfdHlwZSwgdmFsdWUsIHB5X2Zvcm1hdHRlciBpbiAoCisgICAgICAgICAgICAoYiclZCcsIGNfaW50LCBfdGVzdGNhcGkuSU5UX01JTiwgc3RyKSwKKyAgICAgICAgICAgIChiJyVkJywgY19pbnQsIF90ZXN0Y2FwaS5JTlRfTUFYLCBzdHIpLAorICAgICAgICAgICAgKGInJWxkJywgY19sb25nLCBfdGVzdGNhcGkuTE9OR19NSU4sIHN0ciksCisgICAgICAgICAgICAoYiclbGQnLCBjX2xvbmcsIF90ZXN0Y2FwaS5MT05HX01BWCwgc3RyKSwKKyAgICAgICAgICAgIChiJyVsdScsIGNfdWxvbmcsIF90ZXN0Y2FwaS5VTE9OR19NQVgsIHN0ciksCisgICAgICAgICAgICAoYiclemQnLCBjX3NzaXplX3QsIF90ZXN0Y2FwaS5QWV9TU0laRV9UX01JTiwgc3RyKSwKKyAgICAgICAgICAgIChiJyV6ZCcsIGNfc3NpemVfdCwgX3Rlc3RjYXBpLlBZX1NTSVpFX1RfTUFYLCBzdHIpLAorICAgICAgICAgICAgKGInJXp1JywgY19zaXplX3QsIHNpemVfbWF4LCBzdHIpLAorICAgICAgICAgICAgKGInJXAnLCBjX2NoYXJfcCwgc2l6ZV9tYXgsIHB0cl9mb3JtYXR0ZXIpLAorICAgICAgICApOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoZm9ybWF0c3RyLCBjdHlwZXNfdHlwZSh2YWx1ZSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweV9mb3JtYXR0ZXIodmFsdWUpLmVuY29kZSgnYXNjaWknKSksCisKKyAgICAgICAgIyB3aWR0aCBhbmQgcHJlY2lzaW9uICh3aWR0aCBpcyBjdXJyZW50bHkgaWdub3JlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYiclNXMnLCBiJ2EnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ2EnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJyUuM3MnLCBiJ2FiY2RlZicpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInYWJjJykKKworICAgICAgICAjICclJScgZm9ybWF0dGVyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInJSUnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJyUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJ1slJV0nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ1slXScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInJSUlYycsIGNfaW50KG9yZCgnXycpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgYiclXycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInJSVzJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgYiclcycpCisKKyAgICAgICAgIyBJbnZhbGlkIGZvcm1hdHMgYW5kIHBhcnRpYWwgZm9ybWF0dGluZwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJyUnKSwgYiclJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYiclJScpLCBiJyUnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJyUlcycpLCBiJyVzJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYidbJSVdJyksIGInWyVdJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYiclJSVjJywgY19pbnQob3JkKCdfJykpKSwgYiclXycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGIneD0laSB5PSUnLCBjX2ludCgyKSwgY19pbnQoMykpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGIneD0yIHk9JScpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYidjOiVjJywgY19pbnQoMjU1KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgYidjOlx4ZmYnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJ3M6JXMnLCBjX2NoYXJfcChiJ2NzdHInKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgYidzOmNzdHInKQotCi0gICAgICAgICMgSXNzdWUgIzE5OTY5CisgICAgICAgICMgSXNzdWUgIzE5OTY5OiAlYyBtdXN0IHJhaXNlIE92ZXJmbG93RXJyb3IgZm9yIHZhbHVlcworICAgICAgICAjIG5vdCBpbiB0aGUgcmFuZ2UgWzA7IDI1NV0KICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19Gcm9tRm9ybWF0LCBiJyVjJywgY19pbnQoLTEpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0Zyb21Gb3JtYXQsIGInJWMnLCBjX2ludCgyNTYpKQogCisgICAgZGVmIHRlc3RfYnl0ZXNfYmxvY2tpbmcoc2VsZik6CisgICAgICAgIGNsYXNzIEl0ZXJhdGlvbkJsb2NrZWQobGlzdCk6CisgICAgICAgICAgICBfX2J5dGVzX18gPSBOb25lCisgICAgICAgIGkgPSBbMCwgMSwgMiwgM10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcyhpKSwgYidceDAwXHgwMVx4MDJceDAzJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBieXRlcywgSXRlcmF0aW9uQmxvY2tlZChpKSkKKworICAgICAgICAjIEF0IGxlYXN0IGluIENQeXRob24sIGJlY2F1c2UgYnl0ZXMuX19uZXdfXyBhbmQgdGhlIEMgQVBJCisgICAgICAgICMgUHlCeXRlc19Gcm9tT2JqZWN0IGhhdmUgZGlmZmVyZW50IGZhbGxiYWNrIHJ1bGVzLCBpbnRlZ2VyCisgICAgICAgICMgZmFsbGJhY2sgaXMgaGFuZGxlZCBzcGVjaWFsbHksIHNvIHRlc3Qgc2VwYXJhdGVseS4KKyAgICAgICAgY2xhc3MgSW50QmxvY2tlZChpbnQpOgorICAgICAgICAgICAgX19ieXRlc19fID0gTm9uZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVzKDMpLCBiJ1wwXDBcMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnl0ZXMsIEludEJsb2NrZWQoMykpCisKKyAgICAgICAgIyBXaGlsZSB0aGVyZSBpcyBubyBzZXBhcmF0ZWx5LWRlZmluZWQgcnVsZSBmb3IgaGFuZGxpbmcgYnl0ZXMKKyAgICAgICAgIyBzdWJjbGFzc2VzIGRpZmZlcmVudGx5IGZyb20gb3RoZXIgYnVmZmVyLWludGVyZmFjZSBjbGFzc2VzLAorICAgICAgICAjIGFuIGltcGxlbWVudGF0aW9uIG1heSB3ZWxsIHNwZWNpYWwtY2FzZSB0aGVtIChhcyBDUHl0aG9uIDIueAorICAgICAgICAjIHN0ciBkaWQpLCBzbyB0ZXN0IHRoZW0gc2VwYXJhdGVseS4KKyAgICAgICAgY2xhc3MgQnl0ZXNTdWJjbGFzc0Jsb2NrZWQoYnl0ZXMpOgorICAgICAgICAgICAgX19ieXRlc19fID0gTm9uZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVzKGInYWInKSwgYidhYicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnl0ZXMsIEJ5dGVzU3ViY2xhc3NCbG9ja2VkKGInYWInKSkKKworICAgICAgICBjbGFzcyBCdWZmZXJCbG9ja2VkKGJ5dGVhcnJheSk6CisgICAgICAgICAgICBfX2J5dGVzX18gPSBOb25lCisgICAgICAgIGJhLCBiYiA9IGJ5dGVhcnJheShiJ2FiJyksIEJ1ZmZlckJsb2NrZWQoYidhYicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoYmEpLCBiJ2FiJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBieXRlcywgYmIpCisKIAogY2xhc3MgQnl0ZUFycmF5VGVzdChCYXNlQnl0ZXNUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgdHlwZTJ0ZXN0ID0gYnl0ZWFycmF5CkBAIC0xMzMyLDI0ICsxNDg5LDYgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2IiJXMiJyAlIGNocihjKSkKIAotICAgIGRlZiB0ZXN0X3RyYW5zbGF0ZShzZWxmKToKLSAgICAgICAgYiA9IGInaGVsbG8nCi0gICAgICAgIGJhID0gYnl0ZWFycmF5KGIpCi0gICAgICAgIHJvc2V0dGEgPSBieXRlYXJyYXkocmFuZ2UoMCwgMjU2KSkKLSAgICAgICAgcm9zZXR0YVtvcmQoJ28nKV0gPSBvcmQoJ2UnKQotICAgICAgICBjID0gYi50cmFuc2xhdGUocm9zZXR0YSwgYidsJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBiJ2hlbGxvJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLCBiJ2hlZScpCi0gICAgICAgIGMgPSBiYS50cmFuc2xhdGUocm9zZXR0YSwgYidsJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiYSwgYidoZWxsbycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYywgYidoZWUnKQotICAgICAgICBjID0gYi50cmFuc2xhdGUoTm9uZSwgYidlJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLCBiJ2hsbG8nKQotICAgICAgICBjID0gYmEudHJhbnNsYXRlKE5vbmUsIGInZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYywgYidobGxvJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiLnRyYW5zbGF0ZSwgTm9uZSwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiYS50cmFuc2xhdGUsIE5vbmUsIE5vbmUpCi0KICAgICBkZWYgdGVzdF9zcGxpdF9ieXRlYXJyYXkoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidhIGInLnNwbGl0KG1lbW9yeXZpZXcoYicgJykpLCBbYidhJywgYidiJ10pCiAKQEAgLTE1MTMsNyArMTY1MiwzMiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGEpLCB0eXBlKGIpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGEueSksIHR5cGUoYi55KSkKIAotICAgIHRlc3RfZnJvbWhleCA9IEJhc2VCeXRlc1Rlc3QudGVzdF9mcm9taGV4CisgICAgZGVmIHRlc3RfZnJvbWhleChzZWxmKToKKyAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0LmZyb21oZXgoJzFhMkIzMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgYidceDFhXHgyYlx4MzAnKQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoYiksIHNlbGYudHlwZTJ0ZXN0KQorCisgICAgICAgIGNsYXNzIEIxKHNlbGYuYmFzZXR5cGUpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18oY2xzLCB2YWx1ZSk6CisgICAgICAgICAgICAgICAgbWUgPSBzZWxmLmJhc2V0eXBlLl9fbmV3X18oY2xzLCB2YWx1ZSkKKyAgICAgICAgICAgICAgICBtZS5mb28gPSAnYmFyJworICAgICAgICAgICAgICAgIHJldHVybiBtZQorCisgICAgICAgIGIgPSBCMS5mcm9taGV4KCcxYTJCMzAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGInXHgxYVx4MmJceDMwJykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGIpLCBCMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmZvbywgJ2JhcicpCisKKyAgICAgICAgY2xhc3MgQjIoc2VsZi5iYXNldHlwZSk6CisgICAgICAgICAgICBkZWYgX19pbml0X18obWUsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5iYXNldHlwZSBpcyBub3QgYnl0ZXM6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYmFzZXR5cGUuX19pbml0X18obWUsICphcmdzLCAqKmt3YXJncykKKyAgICAgICAgICAgICAgICBtZS5mb28gPSAnYmFyJworCisgICAgICAgIGIgPSBCMi5mcm9taGV4KCcxYTJCMzAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGInXHgxYVx4MmJceDMwJykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGIpLCBCMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmZvbywgJ2JhcicpCiAKIAogY2xhc3MgQnl0ZUFycmF5U3ViY2xhc3MoYnl0ZWFycmF5KToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYnoyLnB5IGIvTGliL3Rlc3QvdGVzdF9iejIucHkKaW5kZXggMzRmNjQ3OC4uZWFhNDcyYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9iejIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9iejIucHkKQEAgLTYsNiArNiw3IEBACiBpbXBvcnQgb3MKIGltcG9ydCBwaWNrbGUKIGltcG9ydCBnbG9iCitpbXBvcnQgcGF0aGxpYgogaW1wb3J0IHJhbmRvbQogaW1wb3J0IHNodXRpbAogaW1wb3J0IHN1YnByb2Nlc3MKQEAgLTU1MywxMyArNTU0LDIwIEBACiAgICAgICAgIHdpdGggQloyRmlsZShzdHJfZmlsZW5hbWUsICJyYiIpIGFzIGY6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBzZWxmLkRBVEEpCiAKKyAgICBkZWYgdGVzdE9wZW5QYXRoTGlrZUZpbGVuYW1lKHNlbGYpOgorICAgICAgICBmaWxlbmFtZSA9IHBhdGhsaWIuUGF0aChzZWxmLmZpbGVuYW1lKQorICAgICAgICB3aXRoIEJaMkZpbGUoZmlsZW5hbWUsICJ3YiIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKHNlbGYuREFUQSkKKyAgICAgICAgd2l0aCBCWjJGaWxlKGZpbGVuYW1lLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgc2VsZi5EQVRBKQorCiAgICAgZGVmIHRlc3REZWNvbXByZXNzTGltaXRlZChzZWxmKToKICAgICAgICAgIiIiRGVjb21wcmVzc2VkIGRhdGEgYnVmZmVyaW5nIHNob3VsZCBiZSBsaW1pdGVkIiIiCi0gICAgICAgIGJvbWIgPSBiejIuY29tcHJlc3MoYnl0ZXMoaW50KDJlNikpLCBjb21wcmVzc2xldmVsPTkpCisgICAgICAgIGJvbWIgPSBiejIuY29tcHJlc3MoYidcMCcgKiBpbnQoMmU2KSwgY29tcHJlc3NsZXZlbD05KQogICAgICAgICBzZWxmLmFzc2VydExlc3MobGVuKGJvbWIpLCBfY29tcHJlc3Npb24uQlVGRkVSX1NJWkUpCiAKICAgICAgICAgZGVjb21wID0gQloyRmlsZShCeXRlc0lPKGJvbWIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVzKDEpLCBkZWNvbXAucmVhZCgxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvbXAucmVhZCgxKSwgYidcMCcpCiAgICAgICAgIG1heF9kZWNvbXAgPSAxICsgREVGQVVMVF9CVUZGRVJfU0laRQogICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChkZWNvbXAuX2J1ZmZlci5yYXcudGVsbCgpLCBtYXhfZGVjb21wLAogICAgICAgICAgICAgIkV4Y2Vzc2l2ZSBhbW91bnQgb2YgZGF0YSB3YXMgZGVjb21wcmVzc2VkIikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY2FsZW5kYXIucHkgYi9MaWIvdGVzdC90ZXN0X2NhbGVuZGFyLnB5CmluZGV4IGFjY2YyNTEuLjJiYzRmZWUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY2FsZW5kYXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jYWxlbmRhci5weQpAQCAtNzIyLDE5ICs3MjIsMTkgQEAKIAogICAgIGRlZiBhc3NlcnRGYWlsdXJlKHNlbGYsICphcmdzKToKICAgICAgICAgcmMsIHN0ZG91dCwgc3RkZXJyID0gYXNzZXJ0X3B5dGhvbl9mYWlsdXJlKCctbScsICdjYWxlbmRhcicsICphcmdzKQotICAgICAgICBzZWxmLmFzc2VydEluKGInVXNhZ2U6Jywgc3RkZXJyKQorICAgICAgICBzZWxmLmFzc2VydEluKGIndXNhZ2U6Jywgc3RkZXJyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJjLCAyKQogCiAgICAgZGVmIHRlc3RfaGVscChzZWxmKToKICAgICAgICAgc3Rkb3V0ID0gc2VsZi5ydW5fb2soJy1oJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbihiJ1VzYWdlOicsIHN0ZG91dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihiJ3VzYWdlOicsIHN0ZG91dCkKICAgICAgICAgc2VsZi5hc3NlcnRJbihiJ2NhbGVuZGFyLnB5Jywgc3Rkb3V0KQogICAgICAgICBzZWxmLmFzc2VydEluKGInLS1oZWxwJywgc3Rkb3V0KQogCiAgICAgZGVmIHRlc3RfaWxsZWdhbF9hcmd1bWVudHMoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RmFpbHVyZSgnLXonKQotICAgICAgICAjc2VsZi5hc3NlcnRGYWlsdXJlKCdzcGFtJykKLSAgICAgICAgI3NlbGYuYXNzZXJ0RmFpbHVyZSgnMjAwNCcsICdzcGFtJykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWlsdXJlKCdzcGFtJykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWlsdXJlKCcyMDA0JywgJ3NwYW0nKQogICAgICAgICBzZWxmLmFzc2VydEZhaWx1cmUoJy10JywgJ2h0bWwnLCAnMjAwNCcsICcxJykKIAogICAgIGRlZiB0ZXN0X291dHB1dF9jdXJyZW50X3llYXIoc2VsZik6CkBAIC04MzUsNSArODM1LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgYidocmVmPSJjdXN0b20uY3NzIiAvPicsIHN0ZG91dCkKIAogCitjbGFzcyBNaXNjVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKKyAgICAgICAgYmxhY2tsaXN0ID0geydtZGF5cycsICdKYW51YXJ5JywgJ0ZlYnJ1YXJ5JywgJ0VQT0NIJywKKyAgICAgICAgICAgICAgICAgICAgICdNT05EQVknLCAnVFVFU0RBWScsICdXRURORVNEQVknLCAnVEhVUlNEQVknLCAnRlJJREFZJywKKyAgICAgICAgICAgICAgICAgICAgICdTQVRVUkRBWScsICdTVU5EQVknLCAnZGlmZmVyZW50X2xvY2FsZScsICdjJywKKyAgICAgICAgICAgICAgICAgICAgICdwcndlZWsnLCAnd2VlaycsICdmb3JtYXQnLCAnZm9ybWF0c3RyaW5nJywgJ21haW4nfQorICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCBjYWxlbmRhciwgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKworCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jYXBpLnB5IGIvTGliL3Rlc3QvdGVzdF9jYXBpLnB5CmluZGV4IDFlYWRkMjIuLjZjMzYyNWQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY2FwaS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NhcGkucHkKQEAgLTQsOCArNCwxMCBAQAogaW1wb3J0IG9zCiBpbXBvcnQgcGlja2xlCiBpbXBvcnQgcmFuZG9tCitpbXBvcnQgcmUKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCitpbXBvcnQgc3lzY29uZmlnCiBpbXBvcnQgdGV4dHdyYXAKIGltcG9ydCB0aW1lCiBpbXBvcnQgdW5pdHRlc3QKQEAgLTIyMCw4ICsyMjIsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicidyZXN1bHQgd2l0aCBhbiBlcnJvciBzZXRcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnInVmFsdWVFcnJvclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicidcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnInRHVyaW5nIGhhbmRsaW5nIG9mIHRoZSBhYm92ZSBleGNlcHRpb24sICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnInYW5vdGhlciBleGNlcHRpb24gb2NjdXJyZWQ6XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyJ1RoZSBhYm92ZSBleGNlcHRpb24gd2FzIHRoZSBkaXJlY3QgY2F1c2UgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicidvZiB0aGUgZm9sbG93aW5nIGV4Y2VwdGlvbjpcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnInXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyJ1N5c3RlbUVycm9yOiA8YnVpbHQtaW4gJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicidmdW5jdGlvbiByZXR1cm5fcmVzdWx0X3dpdGhfZXJyb3I+ICcKQEAgLTQ0Miw2ICs0NDQsNyBAQAogICAgICAgICBzZWxmLm1heERpZmYgPSBOb25lCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0LnN0cmlwKCksIGV4cGVjdGVkX291dHB1dCkKIAorCiBjbGFzcyBTa2lwaXRlbVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3Rfc2tpcGl0ZW0oc2VsZik6CkBAIC00OTEsMTAgKzQ5NCwxMCBAQAogICAgICAgICAgICAgICAgIF90ZXN0Y2FwaS5wYXJzZV90dXBsZV9hbmRfa2V5d29yZHModHVwbGVfMSwgZGljdF9iLAogICAgICAgICAgICAgICAgICAgICBmb3JtYXQuZW5jb2RlKCJhc2NpaSIpLCBrZXl3b3JkcykKICAgICAgICAgICAgICAgICB3aGVuX25vdF9za2lwcGVkID0gRmFsc2UKLSAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGV4Y2VwdCBTeXN0ZW1FcnJvciBhcyBlOgogICAgICAgICAgICAgICAgIHMgPSAiYXJndW1lbnQgMSAoaW1wb3NzaWJsZTxiYWQgZm9ybWF0IGNoYXI+KSIKICAgICAgICAgICAgICAgICB3aGVuX25vdF9za2lwcGVkID0gKHN0cihlKSA9PSBzKQotICAgICAgICAgICAgZXhjZXB0IFJ1bnRpbWVFcnJvciBhcyBlOgorICAgICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKICAgICAgICAgICAgICAgICB3aGVuX25vdF9za2lwcGVkID0gRmFsc2UKIAogICAgICAgICAgICAgIyB0ZXN0IHRoZSBmb3JtYXQgdW5pdCB3aGVuIHNraXBwZWQKQEAgLTUwMyw3ICs1MDYsNyBAQAogICAgICAgICAgICAgICAgIF90ZXN0Y2FwaS5wYXJzZV90dXBsZV9hbmRfa2V5d29yZHMoZW1wdHlfdHVwbGUsIGRpY3RfYiwKICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWxfZm9ybWF0LmVuY29kZSgiYXNjaWkiKSwga2V5d29yZHMpCiAgICAgICAgICAgICAgICAgd2hlbl9za2lwcGVkID0gRmFsc2UKLSAgICAgICAgICAgIGV4Y2VwdCBSdW50aW1lRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGV4Y2VwdCBTeXN0ZW1FcnJvciBhcyBlOgogICAgICAgICAgICAgICAgIHMgPSAiaW1wb3NzaWJsZTxiYWQgZm9ybWF0IGNoYXI+OiAne30nIi5mb3JtYXQoZm9ybWF0KQogICAgICAgICAgICAgICAgIHdoZW5fc2tpcHBlZCA9IChzdHIoZSkgPT0gcykKIApAQCAtNTI0LDYgKzUyNywzMiBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBfdGVzdGNhcGkucGFyc2VfdHVwbGVfYW5kX2tleXdvcmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAoKSwge30sIGInJywgWzQyXSkKIAorICAgIGRlZiB0ZXN0X3Bvc2l0aW9uYWxfb25seShzZWxmKToKKyAgICAgICAgcGFyc2UgPSBfdGVzdGNhcGkucGFyc2VfdHVwbGVfYW5kX2tleXdvcmRzCisKKyAgICAgICAgcGFyc2UoKDEsIDIsIDMpLCB7fSwgYidPT08nLCBbJycsICcnLCAnYSddKQorICAgICAgICBwYXJzZSgoMSwgMiksIHsnYSc6IDN9LCBiJ09PTycsIFsnJywgJycsICdhJ10pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICAgICByJ0Z1bmN0aW9uIHRha2VzIGF0IGxlYXN0IDIgcG9zaXRpb25hbCBhcmd1bWVudHMgXCgxIGdpdmVuXCknKToKKyAgICAgICAgICAgIHBhcnNlKCgxLCksIHsnYSc6IDN9LCBiJ09PTycsIFsnJywgJycsICdhJ10pCisgICAgICAgIHBhcnNlKCgxLCksIHt9LCBiJ098T08nLCBbJycsICcnLCAnYSddKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgICAgcidGdW5jdGlvbiB0YWtlcyBhdCBsZWFzdCAxIHBvc2l0aW9uYWwgYXJndW1lbnRzIFwoMCBnaXZlblwpJyk6CisgICAgICAgICAgICBwYXJzZSgoKSwge30sIGInT3xPTycsIFsnJywgJycsICdhJ10pCisgICAgICAgIHBhcnNlKCgxLCAyKSwgeydhJzogM30sIGInT08kTycsIFsnJywgJycsICdhJ10pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICAgICByJ0Z1bmN0aW9uIHRha2VzIGV4YWN0bHkgMiBwb3NpdGlvbmFsIGFyZ3VtZW50cyBcKDEgZ2l2ZW5cKScpOgorICAgICAgICAgICAgcGFyc2UoKDEsKSwgeydhJzogM30sIGInT08kTycsIFsnJywgJycsICdhJ10pCisgICAgICAgIHBhcnNlKCgxLCksIHt9LCBiJ098TyRPJywgWycnLCAnJywgJ2EnXSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgIHInRnVuY3Rpb24gdGFrZXMgYXQgbGVhc3QgMSBwb3NpdGlvbmFsIGFyZ3VtZW50cyBcKDAgZ2l2ZW5cKScpOgorICAgICAgICAgICAgcGFyc2UoKCksIHt9LCBiJ098TyRPJywgWycnLCAnJywgJ2EnXSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5c3RlbUVycm9yLCByJ0VtcHR5IHBhcmFtZXRlciBuYW1lIGFmdGVyIFwkJyk6CisgICAgICAgICAgICBwYXJzZSgoMSwpLCB7fSwgYidPfCRPTycsIFsnJywgJycsICdhJ10pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeXN0ZW1FcnJvciwgJ0VtcHR5IGtleXdvcmQnKToKKyAgICAgICAgICAgIHBhcnNlKCgxLCksIHt9LCBiJ098T08nLCBbJycsICdhJywgJyddKQorCisKIEB1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCiBjbGFzcyBUZXN0VGhyZWFkU3RhdGUodW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC01NDgsNiArNTc3LDcgQEAKICAgICAgICAgdC5zdGFydCgpCiAgICAgICAgIHQuam9pbigpCiAKKwogY2xhc3MgVGVzdF90ZXN0Y2FwaSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfX3Rlc3RjYXBpKHNlbGYpOgogICAgICAgICBmb3IgbmFtZSBpbiBkaXIoX3Rlc3RjYXBpKToKQEAgLTU1Niw1ICs1ODYsODUgQEAKICAgICAgICAgICAgICAgICAgICAgdGVzdCA9IGdldGF0dHIoX3Rlc3RjYXBpLCBuYW1lKQogICAgICAgICAgICAgICAgICAgICB0ZXN0KCkKIAorCitjbGFzcyBQeU1lbURlYnVnVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIFBZVEhPTk1BTExPQyA9ICdkZWJ1ZycKKyAgICAjICcweDA0YzA2ZTAnIG9yICcwNEMwNkUwJworICAgIFBUUl9SRUdFWCA9IHInKD86MHgpP1swLTlhLWZBLUZdKycKKworICAgIGRlZiBjaGVjayhzZWxmLCBjb2RlKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LlN1cHByZXNzQ3Jhc2hSZXBvcnQoKToKKyAgICAgICAgICAgIG91dCA9IGFzc2VydF9weXRob25fZmFpbHVyZSgnLWMnLCBjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBZVEhPTk1BTExPQz1zZWxmLlBZVEhPTk1BTExPQykKKyAgICAgICAgc3RkZXJyID0gb3V0LmVycgorICAgICAgICByZXR1cm4gc3RkZXJyLmRlY29kZSgnYXNjaWknLCAncmVwbGFjZScpCisKKyAgICBkZWYgdGVzdF9idWZmZXJfb3ZlcmZsb3coc2VsZik6CisgICAgICAgIG91dCA9IHNlbGYuY2hlY2soJ2ltcG9ydCBfdGVzdGNhcGk7IF90ZXN0Y2FwaS5weW1lbV9idWZmZXJfb3ZlcmZsb3coKScpCisgICAgICAgIHJlZ2V4ID0gKHIiRGVidWcgbWVtb3J5IGJsb2NrIGF0IGFkZHJlc3MgcD17cHRyfTogQVBJICdtJ1xuIgorICAgICAgICAgICAgICAgICByIiAgICAxNiBieXRlcyBvcmlnaW5hbGx5IHJlcXVlc3RlZFxuIgorICAgICAgICAgICAgICAgICByIiAgICBUaGUgWzAtOV0gcGFkIGJ5dGVzIGF0IHAtWzAtOV0gYXJlIEZPUkJJRERFTkJZVEUsIGFzIGV4cGVjdGVkLlxuIgorICAgICAgICAgICAgICAgICByIiAgICBUaGUgWzAtOV0gcGFkIGJ5dGVzIGF0IHRhaWw9e3B0cn0gYXJlIG5vdCBhbGwgRk9SQklEREVOQllURSBcKDB4WzAtOWEtZl17ezJ9fVwpOlxuIgorICAgICAgICAgICAgICAgICByIiAgICAgICAgYXQgdGFpbFwrMDogMHg3OCBcKlwqXCogT1VDSFxuIgorICAgICAgICAgICAgICAgICByIiAgICAgICAgYXQgdGFpbFwrMTogMHhmYlxuIgorICAgICAgICAgICAgICAgICByIiAgICAgICAgYXQgdGFpbFwrMjogMHhmYlxuIgorICAgICAgICAgICAgICAgICByIiAgICAgICAgLipcbiIKKyAgICAgICAgICAgICAgICAgciIgICAgVGhlIGJsb2NrIHdhcyBtYWRlIGJ5IGNhbGwgI1swLTldKyB0byBkZWJ1ZyBtYWxsb2MvcmVhbGxvYy5cbiIKKyAgICAgICAgICAgICAgICAgciIgICAgRGF0YSBhdCBwOiBjYiBjYiBjYiAuKlxuIgorICAgICAgICAgICAgICAgICByIlxuIgorICAgICAgICAgICAgICAgICByIkZhdGFsIFB5dGhvbiBlcnJvcjogYmFkIHRyYWlsaW5nIHBhZCBieXRlIikKKyAgICAgICAgcmVnZXggPSByZWdleC5mb3JtYXQocHRyPXNlbGYuUFRSX1JFR0VYKQorICAgICAgICByZWdleCA9IHJlLmNvbXBpbGUocmVnZXgsIGZsYWdzPXJlLkRPVEFMTCkKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChvdXQsIHJlZ2V4KQorCisgICAgZGVmIHRlc3RfYXBpX21pc3VzZShzZWxmKToKKyAgICAgICAgb3V0ID0gc2VsZi5jaGVjaygnaW1wb3J0IF90ZXN0Y2FwaTsgX3Rlc3RjYXBpLnB5bWVtX2FwaV9taXN1c2UoKScpCisgICAgICAgIHJlZ2V4ID0gKHIiRGVidWcgbWVtb3J5IGJsb2NrIGF0IGFkZHJlc3MgcD17cHRyfTogQVBJICdtJ1xuIgorICAgICAgICAgICAgICAgICByIiAgICAxNiBieXRlcyBvcmlnaW5hbGx5IHJlcXVlc3RlZFxuIgorICAgICAgICAgICAgICAgICByIiAgICBUaGUgWzAtOV0gcGFkIGJ5dGVzIGF0IHAtWzAtOV0gYXJlIEZPUkJJRERFTkJZVEUsIGFzIGV4cGVjdGVkLlxuIgorICAgICAgICAgICAgICAgICByIiAgICBUaGUgWzAtOV0gcGFkIGJ5dGVzIGF0IHRhaWw9e3B0cn0gYXJlIEZPUkJJRERFTkJZVEUsIGFzIGV4cGVjdGVkLlxuIgorICAgICAgICAgICAgICAgICByIiAgICBUaGUgYmxvY2sgd2FzIG1hZGUgYnkgY2FsbCAjWzAtOV0rIHRvIGRlYnVnIG1hbGxvYy9yZWFsbG9jLlxuIgorICAgICAgICAgICAgICAgICByIiAgICBEYXRhIGF0IHA6IGNiIGNiIGNiIC4qXG4iCisgICAgICAgICAgICAgICAgIHIiXG4iCisgICAgICAgICAgICAgICAgIHIiRmF0YWwgUHl0aG9uIGVycm9yOiBiYWQgSUQ6IEFsbG9jYXRlZCB1c2luZyBBUEkgJ20nLCB2ZXJpZmllZCB1c2luZyBBUEkgJ3InXG4iKQorICAgICAgICByZWdleCA9IHJlZ2V4LmZvcm1hdChwdHI9c2VsZi5QVFJfUkVHRVgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgob3V0LCByZWdleCkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ1Rlc3QgcmVxdWlyZXMgYSBHSUwgKG11bHRpdGhyZWFkaW5nKScpCisgICAgZGVmIGNoZWNrX21hbGxvY193aXRob3V0X2dpbChzZWxmLCBjb2RlKToKKyAgICAgICAgb3V0ID0gc2VsZi5jaGVjayhjb2RlKQorICAgICAgICBleHBlY3RlZCA9ICgnRmF0YWwgUHl0aG9uIGVycm9yOiBQeXRob24gbWVtb3J5IGFsbG9jYXRvciBjYWxsZWQgJworICAgICAgICAgICAgICAgICAgICAnd2l0aG91dCBob2xkaW5nIHRoZSBHSUwnKQorICAgICAgICBzZWxmLmFzc2VydEluKGV4cGVjdGVkLCBvdXQpCisKKyAgICBkZWYgdGVzdF9weW1lbV9tYWxsb2Nfd2l0aG91dF9naWwoc2VsZik6CisgICAgICAgICMgRGVidWcgaG9va3MgbXVzdCByYWlzZSBhbiBlcnJvciBpZiBQeU1lbV9NYWxsb2MoKSBpcyBjYWxsZWQKKyAgICAgICAgIyB3aXRob3V0IGhvbGRpbmcgdGhlIEdJTAorICAgICAgICBjb2RlID0gJ2ltcG9ydCBfdGVzdGNhcGk7IF90ZXN0Y2FwaS5weW1lbV9tYWxsb2Nfd2l0aG91dF9naWwoKScKKyAgICAgICAgc2VsZi5jaGVja19tYWxsb2Nfd2l0aG91dF9naWwoY29kZSkKKworICAgIGRlZiB0ZXN0X3B5b2JqZWN0X21hbGxvY193aXRob3V0X2dpbChzZWxmKToKKyAgICAgICAgIyBEZWJ1ZyBob29rcyBtdXN0IHJhaXNlIGFuIGVycm9yIGlmIFB5T2JqZWN0X01hbGxvYygpIGlzIGNhbGxlZAorICAgICAgICAjIHdpdGhvdXQgaG9sZGluZyB0aGUgR0lMCisgICAgICAgIGNvZGUgPSAnaW1wb3J0IF90ZXN0Y2FwaTsgX3Rlc3RjYXBpLnB5b2JqZWN0X21hbGxvY193aXRob3V0X2dpbCgpJworICAgICAgICBzZWxmLmNoZWNrX21hbGxvY193aXRob3V0X2dpbChjb2RlKQorCisKK2NsYXNzIFB5TWVtTWFsbG9jRGVidWdUZXN0cyhQeU1lbURlYnVnVGVzdHMpOgorICAgIFBZVEhPTk1BTExPQyA9ICdtYWxsb2NfZGVidWcnCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdXSVRIX1BZTUFMTE9DJykgPT0gMSwKKyAgICAgICAgICAgICAgICAgICAgICduZWVkIHB5bWFsbG9jJykKK2NsYXNzIFB5TWVtUHltYWxsb2NEZWJ1Z1Rlc3RzKFB5TWVtRGVidWdUZXN0cyk6CisgICAgUFlUSE9OTUFMTE9DID0gJ3B5bWFsbG9jX2RlYnVnJworCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKFB5X0RFQlVHLCAnbmVlZCBQeV9ERUJVRycpCitjbGFzcyBQeU1lbURlZmF1bHRUZXN0cyhQeU1lbURlYnVnVGVzdHMpOgorICAgICMgdGVzdCBkZWZhdWx0IGFsbG9jYXRvciBvZiBQeXRob24gY29tcGlsZWQgaW4gZGVidWcgbW9kZQorICAgIFBZVEhPTk1BTExPQyA9ICcnCisKKwogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY2dpLnB5IGIvTGliL3Rlc3QvdGVzdF9jZ2kucHkKaW5kZXggYWI5ZjZhYi4uNjM3MzIyMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jZ2kucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jZ2kucHkKQEAgLTcsNiArNyw3IEBACiBpbXBvcnQgd2FybmluZ3MKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUKIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPLCBCeXRlc0lPCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogY2xhc3MgSGFja2VkU3lzTW9kdWxlOgogICAgICMgVGhlIHJlZ3Jlc3Npb24gdGVzdCB3aWxsIGhhdmUgcmVhbCB2YWx1ZXMgaW4gc3lzLmFyZ3YsIHdoaWNoCkBAIC0xNDcsNyArMTQ4LDcgQEAKICAgICBkZWYgdGVzdF9lc2NhcGUoc2VsZik6CiAgICAgICAgICMgY2dpLmVzY2FwZSgpIGlzIGRlcHJlY2F0ZWQuCiAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKLSAgICAgICAgICAgIHdhcm5pbmdzLmZpbHRlcndhcm5pbmdzKCdpZ25vcmUnLCAnY2dpXC5lc2NhcGUnLAorICAgICAgICAgICAgd2FybmluZ3MuZmlsdGVyd2FybmluZ3MoJ2lnbm9yZScsIHInY2dpXC5lc2NhcGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInRlc3QgJmFtcDsgc3RyaW5nIiwgY2dpLmVzY2FwZSgidGVzdCAmIHN0cmluZyIpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiJmx0O3Rlc3Qgc3RyaW5nJmd0OyIsIGNnaS5lc2NhcGUoIjx0ZXN0IHN0cmluZz4iKSkKQEAgLTQ3Myw2ICs0NzQsMTEgQEAKICAgICAgICAgICAgIGNnaS5wYXJzZV9oZWFkZXIoJ2Zvcm0tZGF0YTsgbmFtZT0iZmlsZXMiOyBmaWxlbmFtZT0iZm9cXCJvO2JhciInKSwKICAgICAgICAgICAgICgiZm9ybS1kYXRhIiwgeyJuYW1lIjogImZpbGVzIiwgImZpbGVuYW1lIjogJ2ZvIm87YmFyJ30pKQogCisgICAgZGVmIHRlc3RfYWxsKHNlbGYpOgorICAgICAgICBibGFja2xpc3QgPSB7ImxvZ2ZpbGUiLCAibG9nZnAiLCAiaW5pdGxvZyIsICJkb2xvZyIsICJub2xvZyIsCisgICAgICAgICAgICAgICAgICAgICAiY2xvc2Vsb2ciLCAibG9nIiwgIm1heGxlbiIsICJ2YWxpZF9ib3VuZGFyeSJ9CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIGNnaSwgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKwogCiBCT1VOREFSWSA9ICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS03MjE4MzczNzMzNTA3MDU1MjY2ODgxNjQ2ODQiCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY2hhcm1hcGNvZGVjLnB5IGIvTGliL3Rlc3QvdGVzdF9jaGFybWFwY29kZWMucHkKaW5kZXggNDA2NGFlZi4uMGQ0NTk0ZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jaGFybWFwY29kZWMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jaGFybWFwY29kZWMucHkKQEAgLTksNyArOSw3IEBACiAKICIiIiMiCiAKLWltcG9ydCB0ZXN0LnN1cHBvcnQsIHVuaXR0ZXN0CitpbXBvcnQgdW5pdHRlc3QKIAogaW1wb3J0IGNvZGVjcwogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NtYXRoLnB5IGIvTGliL3Rlc3QvdGVzdF9jbWF0aC5weQppbmRleCAxZjg4NGU1Li4wNDUxZmIwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NtYXRoLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY21hdGgucHkKQEAgLTQsNiArNCw4IEBACiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBjbWF0aCwgbWF0aAogZnJvbSBjbWF0aCBpbXBvcnQgcGhhc2UsIHBvbGFyLCByZWN0LCBwaQoraW1wb3J0IHBsYXRmb3JtCitpbXBvcnQgc3lzCiBpbXBvcnQgc3lzY29uZmlnCiAKIElORiA9IGZsb2F0KCdpbmYnKQpAQCAtMTU0LDYgKzE1NiwyMyBAQAogICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKGNtYXRoLmUsIGVfZXhwZWN0ZWQsIHBsYWNlcz05LAogICAgICAgICAgICAgbXNnPSJjbWF0aC5lIGlzIHt9OyBzaG91bGQgYmUge30iLmZvcm1hdChjbWF0aC5lLCBlX2V4cGVjdGVkKSkKIAorICAgIGRlZiB0ZXN0X2luZmluaXR5X2FuZF9uYW5fY29uc3RhbnRzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtYXRoLmluZi5yZWFsLCBtYXRoLmluZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbWF0aC5pbmYuaW1hZywgMC4wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtYXRoLmluZmoucmVhbCwgMC4wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtYXRoLmluZmouaW1hZywgbWF0aC5pbmYpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNuYW4oY21hdGgubmFuLnJlYWwpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtYXRoLm5hbi5pbWFnLCAwLjApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21hdGgubmFuai5yZWFsLCAwLjApCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKGNtYXRoLm5hbmouaW1hZykpCisKKyAgICAgICAgIyBDaGVjayBjb25zaXN0ZW5jeSB3aXRoIHJlcHJzLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoY21hdGguaW5mKSwgImluZiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihjbWF0aC5pbmZqKSwgImluZmoiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoY21hdGgubmFuKSwgIm5hbiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihjbWF0aC5uYW5qKSwgIm5hbmoiKQorCiAgICAgZGVmIHRlc3RfdXNlcl9vYmplY3Qoc2VsZik6CiAgICAgICAgICMgVGVzdCBhdXRvbWF0aWMgY2FsbGluZyBvZiBfX2NvbXBsZXhfXyBhbmQgX19mbG9hdF9fIGJ5IGNtYXRoCiAgICAgICAgICMgZnVuY3Rpb25zCkBAIC0zMTUsNiArMzM0LDE4IEBACiAKICAgICBAcmVxdWlyZXNfSUVFRV83NTQKICAgICBkZWYgdGVzdF9zcGVjaWZpY192YWx1ZXMoc2VsZik6CisgICAgICAgICMgU29tZSB0ZXN0cyBuZWVkIHRvIGJlIHNraXBwZWQgb24gYW5jaWVudCBPUyBYIHZlcnNpb25zLgorICAgICAgICAjIFNlZSBpc3N1ZSAjMjc5NTMuCisgICAgICAgIFNLSVBfT05fVElHRVIgPSB7J3RhbjAwNjQnfQorCisgICAgICAgIG9zeF92ZXJzaW9uID0gTm9uZQorICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgICAgICAgICB2ZXJzaW9uX3R4dCA9IHBsYXRmb3JtLm1hY192ZXIoKVswXQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG9zeF92ZXJzaW9uID0gdHVwbGUobWFwKGludCwgdmVyc2lvbl90eHQuc3BsaXQoJy4nKSkpCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisKICAgICAgICAgZGVmIHJlY3RfY29tcGxleCh6KToKICAgICAgICAgICAgICIiIldyYXBwZWQgdmVyc2lvbiBvZiByZWN0IHRoYXQgYWNjZXB0cyBhIGNvbXBsZXggbnVtYmVyIGluc3RlYWQgb2YKICAgICAgICAgICAgIHR3byBmbG9hdCBhcmd1bWVudHMuIiIiCkBAIC0zMjgsNiArMzU5LDEyIEBACiAgICAgICAgIGZvciBpZCwgZm4sIGFyLCBhaSwgZXIsIGVpLCBmbGFncyBpbiBwYXJzZV90ZXN0ZmlsZSh0ZXN0X2ZpbGUpOgogICAgICAgICAgICAgYXJnID0gY29tcGxleChhciwgYWkpCiAgICAgICAgICAgICBleHBlY3RlZCA9IGNvbXBsZXgoZXIsIGVpKQorCisgICAgICAgICAgICAjIFNraXAgY2VydGFpbiB0ZXN0cyBvbiBPUyBYIDEwLjQuCisgICAgICAgICAgICBpZiBvc3hfdmVyc2lvbiBpcyBub3QgTm9uZSBhbmQgb3N4X3ZlcnNpb24gPCAoMTAsIDUpOgorICAgICAgICAgICAgICAgIGlmIGlkIGluIFNLSVBfT05fVElHRVI6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKICAgICAgICAgICAgIGlmIGZuID09ICdyZWN0JzoKICAgICAgICAgICAgICAgICBmdW5jdGlvbiA9IHJlY3RfY29tcGxleAogICAgICAgICAgICAgZWxpZiBmbiA9PSAncG9sYXInOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jbWRfbGluZS5weSBiL0xpYi90ZXN0L3Rlc3RfY21kX2xpbmUucHkKaW5kZXggM2QyZjc2OS4uYWUyYmNkNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jbWRfbGluZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NtZF9saW5lLnB5CkBAIC04LDcgKzgsNyBAQAogaW1wb3J0IHN5cwogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCB0ZW1wZmlsZQotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHNjcmlwdF9oZWxwZXIKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBzY3JpcHRfaGVscGVyLCBpc19hbmRyb2lkCiBmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCAoc3Bhd25fcHl0aG9uLCBraWxsX3B5dGhvbiwgYXNzZXJ0X3B5dGhvbl9vaywKICAgICBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUpCiAKQEAgLTQzLDcgKzQzLDcgQEAKIAogICAgIGRlZiB0ZXN0X3ZlcnNpb24oc2VsZik6CiAgICAgICAgIHZlcnNpb24gPSAoJ1B5dGhvbiAlZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXSkuZW5jb2RlKCJhc2NpaSIpCi0gICAgICAgIGZvciBzd2l0Y2ggaW4gJy1WJywgJy0tdmVyc2lvbic6CisgICAgICAgIGZvciBzd2l0Y2ggaW4gJy1WJywgJy0tdmVyc2lvbicsICctVlYnOgogICAgICAgICAgICAgcmMsIG91dCwgZXJyID0gYXNzZXJ0X3B5dGhvbl9vayhzd2l0Y2gpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGVyci5zdGFydHN3aXRoKHZlcnNpb24pKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG91dC5zdGFydHN3aXRoKHZlcnNpb24pKQpAQCAtMTc4LDE1ICsxNzgsMTYgQEAKICAgICAgICAgaWYgbm90IHN0ZG91dC5zdGFydHN3aXRoKHBhdHRlcm4pOgogICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoIiVhIGRvZXNuJ3Qgc3RhcnQgd2l0aCAlYSIgJSAoc3Rkb3V0LCBwYXR0ZXJuKSkKIAotICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJywgJ3Rlc3Qgc3BlY2lmaWMgdG8gTWFjIE9TIFgnKQotICAgIGRlZiB0ZXN0X29zeF91dGY4KHNlbGYpOgorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKChzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbicgb3IKKyAgICAgICAgICAgICAgICBpc19hbmRyb2lkKSwgJ3Rlc3Qgc3BlY2lmaWMgdG8gTWFjIE9TIFggYW5kIEFuZHJvaWQnKQorICAgIGRlZiB0ZXN0X29zeF9hbmRyb2lkX3V0Zjgoc2VsZik6CiAgICAgICAgIGRlZiBjaGVja19vdXRwdXQodGV4dCk6CiAgICAgICAgICAgICBkZWNvZGVkID0gdGV4dC5kZWNvZGUoJ3V0Zi04JywgJ3N1cnJvZ2F0ZWVzY2FwZScpCiAgICAgICAgICAgICBleHBlY3RlZCA9IGFzY2lpKGRlY29kZWQpLmVuY29kZSgnYXNjaWknKSArIGInXG4nCiAKICAgICAgICAgICAgIGVudiA9IG9zLmVudmlyb24uY29weSgpCiAgICAgICAgICAgICAjIEMgbG9jYWxlIGdpdmVzIEFTQ0lJIGxvY2FsZSBlbmNvZGluZywgYnV0IFB5dGhvbiB1c2VzIFVURi04Ci0gICAgICAgICAgICAjIHRvIHBhcnNlIHRoZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzIG9uIE1hYyBPUyBYCisgICAgICAgICAgICAjIHRvIHBhcnNlIHRoZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzIG9uIE1hYyBPUyBYIGFuZCBBbmRyb2lkLgogICAgICAgICAgICAgZW52WydMQ19BTEwnXSA9ICdDJwogCiAgICAgICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbigKQEAgLTM0OCw4ICszNDksOSBAQAogICAgICAgICAgICAgdGVzdC5zdXBwb3J0LlN1cHByZXNzQ3Jhc2hSZXBvcnQoKS5fX2VudGVyX18oKQogICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgneCcpCiAgICAgICAgICAgICBvcy5jbG9zZShzeXMuc3Rkb3V0LmZpbGVubygpKSIiIgotICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCctYycsIGNvZGUpCisgICAgICAgIHJjLCBvdXQsIGVyciA9IGFzc2VydF9weXRob25fZmFpbHVyZSgnLWMnLCBjb2RlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInJywgb3V0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEyMCwgcmMpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoZXJyLmRlY29kZSgnYXNjaWknLCAnaWdub3JlJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ0V4Y2VwdGlvbiBpZ25vcmVkIGluLipcbk9TRXJyb3I6IC4qJykKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jbWRfbGluZV9zY3JpcHQucHkgYi9MaWIvdGVzdC90ZXN0X2NtZF9saW5lX3NjcmlwdC5weQppbmRleCA5MTlmMzYxLi5lMDU4ZWNkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NtZF9saW5lX3NjcmlwdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NtZF9saW5lX3NjcmlwdC5weQpAQCAtMTM5LDkgKzEzOSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfYXJndjAsIGV4cGVjdGVkX3BhdGgwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3BhY2thZ2UsIGV4cGVjdGVkX2xvYWRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqY21kX2xpbmVfc3dpdGNoZXMpOgotICAgICAgICBpZiBub3QgX19kZWJ1Z19fOgotICAgICAgICAgICAgY21kX2xpbmVfc3dpdGNoZXMgKz0gKCctJyArICdPJyAqIHN5cy5mbGFncy5vcHRpbWl6ZSwpCi0gICAgICAgIHJ1bl9hcmdzID0gY21kX2xpbmVfc3dpdGNoZXMgKyAoc2NyaXB0X25hbWUsKSArIHR1cGxlKGV4YW1wbGVfYXJncykKKyAgICAgICAgcnVuX2FyZ3MgPSBbKnN1cHBvcnQub3B0aW1fYXJnc19mcm9tX2ludGVycHJldGVyX2ZsYWdzKCksCisgICAgICAgICAgICAgICAgICAgICpjbWRfbGluZV9zd2l0Y2hlcywgc2NyaXB0X25hbWUsICpleGFtcGxlX2FyZ3NdCiAgICAgICAgIHJjLCBvdXQsIGVyciA9IGFzc2VydF9weXRob25fb2soKnJ1bl9hcmdzLCBfX2lzb2xhdGVkPUZhbHNlKQogICAgICAgICBzZWxmLl9jaGVja19vdXRwdXQoc2NyaXB0X25hbWUsIHJjLCBvdXQgKyBlcnIsIGV4cGVjdGVkX2ZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9hcmd2MCwgZXhwZWN0ZWRfcGF0aDAsCkBAIC00MzAsNyArNDI5LDcgQEAKICAgICAgICAgICAgICgnYnVpbHRpbnMueCcsIGJyJ0Vycm9yIHdoaWxlIGZpbmRpbmcgbW9kdWxlIHNwZWNpZmljYXRpb24uKicKICAgICAgICAgICAgICAgICBicidBdHRyaWJ1dGVFcnJvcicpLAogICAgICAgICAgICAgKCdidWlsdGlucy54LnknLCBicidFcnJvciB3aGlsZSBmaW5kaW5nIG1vZHVsZSBzcGVjaWZpY2F0aW9uLionCi0gICAgICAgICAgICAgICAgYnInSW1wb3J0RXJyb3IuKk5vIG1vZHVsZSBuYW1lZC4qbm90IGEgcGFja2FnZScpLAorICAgICAgICAgICAgICAgIGJyJ01vZHVsZU5vdEZvdW5kRXJyb3IuKk5vIG1vZHVsZSBuYW1lZC4qbm90IGEgcGFja2FnZScpLAogICAgICAgICAgICAgKCdvcy5wYXRoJywgYnInbG9hZGVyLipjYW5ub3QgaGFuZGxlJyksCiAgICAgICAgICAgICAoJ2ltcG9ydGxpYicsIGJyJ05vIG1vZHVsZSBuYW1lZC4qJwogICAgICAgICAgICAgICAgIGJyJ2lzIGEgcGFja2FnZSBhbmQgY2Fubm90IGJlIGRpcmVjdGx5IGV4ZWN1dGVkJyksCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVfbW9kdWxlLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlX21vZHVsZS5weQppbmRleCAzMzk0YjM5Li4xYThmNjk5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVfbW9kdWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZV9tb2R1bGUucHkKQEAgLTY5LDcgKzY5LDcgQEAKICAgICAgICAgIyB3aXRoIGJhbm5lcgogICAgICAgICBzZWxmLmluZnVuYy5zaWRlX2VmZmVjdCA9IEVPRkVycm9yKCdGaW5pc2hlZCcpCiAgICAgICAgIHNlbGYuY29uc29sZS5pbnRlcmFjdChiYW5uZXI9J0ZvbycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlbGYuc3RkZXJyLm1ldGhvZF9jYWxscyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlbGYuc3RkZXJyLm1ldGhvZF9jYWxscyksIDMpCiAgICAgICAgIGJhbm5lcl9jYWxsID0gc2VsZi5zdGRlcnIubWV0aG9kX2NhbGxzWzBdCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmFubmVyX2NhbGwsIFsnd3JpdGUnLCAoJ0Zvb1xuJywpLCB7fV0pCiAKQEAgLTc3LDggKzc3LDM2IEBACiAgICAgICAgIHNlbGYuc3RkZXJyLnJlc2V0X21vY2soKQogICAgICAgICBzZWxmLmluZnVuYy5zaWRlX2VmZmVjdCA9IEVPRkVycm9yKCdGaW5pc2hlZCcpCiAgICAgICAgIHNlbGYuY29uc29sZS5pbnRlcmFjdChiYW5uZXI9JycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlbGYuc3RkZXJyLm1ldGhvZF9jYWxscyksIDIpCisKKyAgICBkZWYgdGVzdF9leGl0X21zZyhzZWxmKToKKyAgICAgICAgIyBkZWZhdWx0IGV4aXQgbWVzc2FnZQorICAgICAgICBzZWxmLmluZnVuYy5zaWRlX2VmZmVjdCA9IEVPRkVycm9yKCdGaW5pc2hlZCcpCisgICAgICAgIHNlbGYuY29uc29sZS5pbnRlcmFjdChiYW5uZXI9JycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlbGYuc3RkZXJyLm1ldGhvZF9jYWxscyksIDIpCisgICAgICAgIGVycl9tc2cgPSBzZWxmLnN0ZGVyci5tZXRob2RfY2FsbHNbMV0KKyAgICAgICAgZXhwZWN0ZWQgPSAnbm93IGV4aXRpbmcgSW50ZXJhY3RpdmVDb25zb2xlLi4uXG4nCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyX21zZywgWyd3cml0ZScsIChleHBlY3RlZCwpLCB7fV0pCisKKyAgICAgICAgIyBubyBleGl0IG1lc3NhZ2UKKyAgICAgICAgc2VsZi5zdGRlcnIucmVzZXRfbW9jaygpCisgICAgICAgIHNlbGYuaW5mdW5jLnNpZGVfZWZmZWN0ID0gRU9GRXJyb3IoJ0ZpbmlzaGVkJykKKyAgICAgICAgc2VsZi5jb25zb2xlLmludGVyYWN0KGJhbm5lcj0nJywgZXhpdG1zZz0nJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5zdGRlcnIubWV0aG9kX2NhbGxzKSwgMSkKIAorICAgICAgICAjIGN1c3RvbSBleGl0IG1lc3NhZ2UKKyAgICAgICAgc2VsZi5zdGRlcnIucmVzZXRfbW9jaygpCisgICAgICAgIG1lc3NhZ2UgPSAoCisgICAgICAgICAgICAnYnllISBcTntHUkVFSyBTTUFMTCBMRVRURVIgWkVUQX1cTntDWVJJTExJQyBTTUFMTCBMRVRURVIgWkhFfScKKyAgICAgICAgICAgICkKKyAgICAgICAgc2VsZi5pbmZ1bmMuc2lkZV9lZmZlY3QgPSBFT0ZFcnJvcignRmluaXNoZWQnKQorICAgICAgICBzZWxmLmNvbnNvbGUuaW50ZXJhY3QoYmFubmVyPScnLCBleGl0bXNnPW1lc3NhZ2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlbGYuc3RkZXJyLm1ldGhvZF9jYWxscyksIDIpCisgICAgICAgIGVycl9tc2cgPSBzZWxmLnN0ZGVyci5tZXRob2RfY2FsbHNbMV0KKyAgICAgICAgZXhwZWN0ZWQgPSBtZXNzYWdlICsgJ1xuJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVycl9tc2csIFsnd3JpdGUnLCAoZXhwZWN0ZWQsKSwge31dKQorCisKICAgICBkZWYgdGVzdF9jYXVzZV90YihzZWxmKToKICAgICAgICAgc2VsZi5pbmZ1bmMuc2lkZV9lZmZlY3QgPSBbInJhaXNlIFZhbHVlRXJyb3IoJycpIGZyb20gQXR0cmlidXRlRXJyb3IiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU9GRXJyb3IoJ0ZpbmlzaGVkJyldCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjY2FsbGJhY2tzLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY2NhbGxiYWNrcy5weQppbmRleCBlZTFlMjhhLi42YTNlOTkzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjY2FsbGJhY2tzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNjYWxsYmFja3MucHkKQEAgLTQsNyArNCw2IEBACiBpbXBvcnQgdGVzdC5zdXBwb3J0CiBpbXBvcnQgdW5pY29kZWRhdGEKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IHdhcm5pbmdzCiAKIGNsYXNzIFBvc1JldHVybjoKICAgICAjIHRoaXMgY2FuIGJlIHVzZWQgZm9yIGNvbmZpZ3VyYWJsZSBjYWxsYmFja3MKQEAgLTI4MSwxMiArMjgwLDEyIEBACiAgICAgICAgICkKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgYiJcXHUzMDQyXHUzeHh4Ii5kZWNvZGUoInVuaWNvZGUtZXNjYXBlIiwgInRlc3QuaGFuZGxlcjEiKSwKKyAgICAgICAgICAgIGIiXFx1MzA0MlxcdTN4eHgiLmRlY29kZSgidW5pY29kZS1lc2NhcGUiLCAidGVzdC5oYW5kbGVyMSIpLAogICAgICAgICAgICAgIlx1MzA0Mls8OTI+PDExNz48NTE+XXh4eCIKICAgICAgICAgKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBiIlxcdTMwNDJcdTN4eCIuZGVjb2RlKCJ1bmljb2RlLWVzY2FwZSIsICJ0ZXN0LmhhbmRsZXIxIiksCisgICAgICAgICAgICBiIlxcdTMwNDJcXHUzeHgiLmRlY29kZSgidW5pY29kZS1lc2NhcGUiLCAidGVzdC5oYW5kbGVyMSIpLAogICAgICAgICAgICAgIlx1MzA0Mls8OTI+PDExNz48NTE+XXh4IgogICAgICAgICApCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfY24ucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2NuLnB5CmluZGV4IGQwZTNhMTUuLjNiZGY3ZDAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfY24ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19jbi5weQpAQCAtMyw3ICszLDYgQEAKICMgICBDb2RlYyBlbmNvZGluZyB0ZXN0cyBmb3IgUFJDIGVuY29kaW5ncy4KICMKIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2hrLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19oay5weQppbmRleCBiYjliZTExLi5jNWUyZjk5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2hrLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfaGsucHkKQEAgLTMsNyArMyw2IEBACiAjICAgQ29kZWMgZW5jb2RpbmcgdGVzdHMgZm9yIEhvbmdLb25nIGVuY29kaW5ncy4KICMKIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2lzbzIwMjIucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2lzbzIwMjIucHkKaW5kZXggOGEzY2E3MC4uMDBlYTFjMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19pc28yMDIyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfaXNvMjAyMi5weQpAQCAtMSw2ICsxLDUgQEAKICMgQ29kZWMgZW5jb2RpbmcgdGVzdHMgZm9yIElTTyAyMDIyIGVuY29kaW5ncy4KIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2pwLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19qcC5weQppbmRleCA0NGI2M2EwLi45NDM3OGQxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2pwLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfanAucHkKQEAgLTMsNyArMyw2IEBACiAjICAgQ29kZWMgZW5jb2RpbmcgdGVzdHMgZm9yIEphcGFuZXNlIGVuY29kaW5ncy4KICMKIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2tyLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19rci5weQppbmRleCBiNmE3NGZiLi44NjNkMTZiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2tyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3Nfa3IucHkKQEAgLTMsNyArMyw2IEBACiAjICAgQ29kZWMgZW5jb2RpbmcgdGVzdHMgZm9yIFJPSyBlbmNvZGluZ3MuCiAjCiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0IGltcG9ydCBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc190dy5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfdHcucHkKaW5kZXggOTE3NDI5Ni4uYmIxZDEzMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc190dy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX3R3LnB5CkBAIC0zLDcgKzMsNiBAQAogIyAgIENvZGVjIGVuY29kaW5nIHRlc3RzIGZvciBST0MgZW5jb2RpbmdzLgogIwogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdCBpbXBvcnQgbXVsdGlieXRlY29kZWNfc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2NuLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfY24ucHkKaW5kZXggZjFiZDM4NC4uODllNTFjNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfY24ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfY24ucHkKQEAgLTMsNyArMyw2IEBACiAjICAgQ29kZWMgbWFwcGluZyB0ZXN0cyBmb3IgUFJDIGVuY29kaW5ncwogIwogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdCBpbXBvcnQgbXVsdGlieXRlY29kZWNfc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2hrLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfaGsucHkKaW5kZXggNGMwYzQxNS4uN2E0OGQyNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfaGsucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfaGsucHkKQEAgLTMsNyArMyw2IEBACiAjICAgQ29kZWMgbWFwcGluZyB0ZXN0cyBmb3IgSG9uZ0tvbmcgZW5jb2RpbmdzCiAjCiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0IGltcG9ydCBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfanAucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19qcC5weQppbmRleCA1NzczODIzLi5mZGZlYzgwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19qcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19qcC5weQpAQCAtMyw3ICszLDYgQEAKICMgICBDb2RlYyBtYXBwaW5nIHRlc3RzIGZvciBKYXBhbmVzZSBlbmNvZGluZ3MKICMKIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19rci5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2tyLnB5CmluZGV4IDZjYjQxYzguLjQ3MWNkNzQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2tyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2tyLnB5CkBAIC0zLDcgKzMsNiBAQAogIyAgIENvZGVjIG1hcHBpbmcgdGVzdHMgZm9yIFJPSyBlbmNvZGluZ3MKICMKIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc190dy5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX3R3LnB5CmluZGV4IDJlYTQ0YjUuLjE0NWE5N2QgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX3R3LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX3R3LnB5CkBAIC0zLDcgKzMsNiBAQAogIyAgIENvZGVjIG1hcHBpbmcgdGVzdHMgZm9yIFJPQyBlbmNvZGluZ3MKICMKIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjcy5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNzLnB5CmluZGV4IDAxM2VjNjQuLjFlNjNlZDggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNzLnB5CkBAIC00LDE2ICs0LDEwIEBACiBpbXBvcnQgbG9jYWxlCiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCB3YXJuaW5ncwogaW1wb3J0IGVuY29kaW5ncwogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAotaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6Ci0gICAgVklTVEFfT1JfTEFURVIgPSAoc3lzLmdldHdpbmRvd3N2ZXJzaW9uKCkubWFqb3IgPj0gNikKLWVsc2U6Ci0gICAgVklTVEFfT1JfTEFURVIgPSBGYWxzZQotCiB0cnk6CiAgICAgaW1wb3J0IGN0eXBlcwogZXhjZXB0IEltcG9ydEVycm9yOgpAQCAtMjcsNiArMjEsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGVyKGlucHV0KSwgKGV4cGVjdCwgbGVuKGlucHV0KSkpCiAgICAgcmV0dXJuIGNoZWNrCiAKKwogY2xhc3MgUXVldWUob2JqZWN0KToKICAgICAiIiIKICAgICBxdWV1ZTogd3JpdGUgYnl0ZXMgYXQgb25lIGVuZCwgcmVhZCBieXRlcyBmcm9tIHRoZSBvdGhlciBlbmQKQEAgLTQ3LDYgKzQyLDcgQEAKICAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IHNlbGYuX2J1ZmZlcltzaXplOl0KICAgICAgICAgICAgIHJldHVybiBzCiAKKwogY2xhc3MgTWl4SW5DaGVja1N0YXRlSGFuZGxpbmc6CiAgICAgZGVmIGNoZWNrX3N0YXRlX2hhbmRsaW5nX2RlY29kZShzZWxmLCBlbmNvZGluZywgdSwgcyk6CiAgICAgICAgIGZvciBpIGluIHJhbmdlKGxlbihzKSsxKToKQEAgLTgwLDYgKzc2LDcgQEAKICAgICAgICAgICAgIHBhcnQyID0gZC5lbmNvZGUodVtpOl0sIFRydWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMsIHBhcnQxK3BhcnQyKQogCisKIGNsYXNzIFJlYWRUZXN0KE1peEluQ2hlY2tTdGF0ZUhhbmRsaW5nKToKICAgICBkZWYgY2hlY2tfcGFydGlhbChzZWxmLCBpbnB1dCwgcGFydGlhbHJlc3VsdHMpOgogICAgICAgICAjIGdldCBhIFN0cmVhbVJlYWRlciBmb3IgdGhlIGVuY29kaW5nIGFuZCBmZWVkIHRoZSBieXRlc3RyaW5nIHZlcnNpb24KQEAgLTM1OCw2ICszNTUsMTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW1x1REM4MF0iLmVuY29kZShzZWxmLmVuY29kaW5nLCAicmVwbGFjZSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICJbP10iLmVuY29kZShzZWxmLmVuY29kaW5nKSkKIAorICAgICAgICAjIHNlcXVlbnRpYWwgc3Vycm9nYXRlIGNoYXJhY3RlcnMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW1x1RDgwMFx1REM4MF0iLmVuY29kZShzZWxmLmVuY29kaW5nLCAiaWdub3JlIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgIltdIi5lbmNvZGUoc2VsZi5lbmNvZGluZykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIltcdUQ4MDBcdURDODBdIi5lbmNvZGUoc2VsZi5lbmNvZGluZywgInJlcGxhY2UiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiWz8/XSIuZW5jb2RlKHNlbGYuZW5jb2RpbmcpKQorCiAgICAgICAgIGJvbSA9ICIiLmVuY29kZShzZWxmLmVuY29kaW5nKQogICAgICAgICBmb3IgYmVmb3JlLCBhZnRlciBpbiBbKCJcVTAwMDEwZmZmIiwgIkEiKSwgKCJbIiwgIl0iKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiQSIsICJcVTAwMDEwZmZmIildOgpAQCAtMzgzLDYgKzM4Niw3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3Rfc2VxdWVuY2UuZGVjb2RlKHNlbGYuZW5jb2RpbmcsICJiYWNrc2xhc2hyZXBsYWNlIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZm9yZSArIGJhY2tzbGFzaHJlcGxhY2UgKyBhZnRlcikKIAorCiBjbGFzcyBVVEYzMlRlc3QoUmVhZFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICJ1dGYtMzIiCiAgICAgaWYgc3lzLmJ5dGVvcmRlciA9PSAnbGl0dGxlJzoKQEAgLTQ3OCw2ICs0ODIsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcVTAwMDEwMDAwJyAqIDEwMjQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZWNzLnV0Zl8zMl9kZWNvZGUoZW5jb2RlZF9iZSlbMF0pCiAKKwogY2xhc3MgVVRGMzJMRVRlc3QoUmVhZFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICJ1dGYtMzItbGUiCiAgICAgaWxsX2Zvcm1lZF9zZXF1ZW5jZSA9IGIiXHg4MFx4ZGNceDAwXHgwMCIKQEAgLTUyMyw2ICs1MjgsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcVTAwMDEwMDAwJyAqIDEwMjQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZWNzLnV0Zl8zMl9sZV9kZWNvZGUoZW5jb2RlZClbMF0pCiAKKwogY2xhc3MgVVRGMzJCRVRlc3QoUmVhZFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICJ1dGYtMzItYmUiCiAgICAgaWxsX2Zvcm1lZF9zZXF1ZW5jZSA9IGIiXHgwMFx4MDBceGRjXHg4MCIKQEAgLTc0Nyw2ICs3NTMsNyBAQAogICAgIGVuY29kaW5nID0gInV0Zi04IgogICAgIGlsbF9mb3JtZWRfc2VxdWVuY2UgPSBiIlx4ZWRceGIyXHg4MCIKICAgICBpbGxfZm9ybWVkX3NlcXVlbmNlX3JlcGxhY2UgPSAiXHVmZmZkIiAqIDMKKyAgICBCT00gPSBiJycKIAogICAgIGRlZiB0ZXN0X3BhcnRpYWwoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tfcGFydGlhbCgKQEAgLTc3NSwyNyArNzgyLDQ5IEBACiAgICAgICAgIHNlbGYuY2hlY2tfc3RhdGVfaGFuZGxpbmdfZGVjb2RlKHNlbGYuZW5jb2RpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUsIHUuZW5jb2RlKHNlbGYuZW5jb2RpbmcpKQogCisgICAgZGVmIHRlc3RfZGVjb2RlX2Vycm9yKHNlbGYpOgorICAgICAgICBmb3IgZGF0YSwgZXJyb3JfaGFuZGxlciwgZXhwZWN0ZWQgaW4gKAorICAgICAgICAgICAgKGInW1x4ODBceGZmXScsICdpZ25vcmUnLCAnW10nKSwKKyAgICAgICAgICAgIChiJ1tceDgwXHhmZl0nLCAncmVwbGFjZScsICdbXHVmZmZkXHVmZmZkXScpLAorICAgICAgICAgICAgKGInW1x4ODBceGZmXScsICdzdXJyb2dhdGVlc2NhcGUnLCAnW1x1ZGM4MFx1ZGNmZl0nKSwKKyAgICAgICAgICAgIChiJ1tceDgwXHhmZl0nLCAnYmFja3NsYXNocmVwbGFjZScsICdbXFx4ODBcXHhmZl0nKSwKKyAgICAgICAgKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGRhdGE9ZGF0YSwgZXJyb3JfaGFuZGxlcj1lcnJvcl9oYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ9ZXhwZWN0ZWQpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YS5kZWNvZGUoc2VsZi5lbmNvZGluZywgZXJyb3JfaGFuZGxlciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCkKKwogICAgIGRlZiB0ZXN0X2xvbmVfc3Vycm9nYXRlcyhzZWxmKToKICAgICAgICAgc3VwZXIoKS50ZXN0X2xvbmVfc3Vycm9nYXRlcygpCiAgICAgICAgICMgbm90IHN1cmUgaWYgdGhpcyBpcyBtYWtpbmcgc2Vuc2UgZm9yCiAgICAgICAgICMgVVRGLTE2IGFuZCBVVEYtMzIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW1x1REM4MF0iLmVuY29kZSgndXRmLTgnLCAic3Vycm9nYXRlZXNjYXBlIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgYidbXHg4MF0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJbXHVEQzgwXSIuZW5jb2RlKHNlbGYuZW5jb2RpbmcsICJzdXJyb2dhdGVlc2NhcGUiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLkJPTSArIGInW1x4ODBdJykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVFbmNvZGVFcnJvcikgYXMgY206CisgICAgICAgICAgICAiW1x1REM4MFx1RDgwMFx1REZGRl0iLmVuY29kZShzZWxmLmVuY29kaW5nLCAic3Vycm9nYXRlZXNjYXBlIikKKyAgICAgICAgZXhjID0gY20uZXhjZXB0aW9uCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhjLm9iamVjdFtleGMuc3RhcnQ6ZXhjLmVuZF0sICdcdUQ4MDBcdURGRkYnKQogCiAgICAgZGVmIHRlc3Rfc3Vycm9nYXRlcGFzc19oYW5kbGVyKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJhYmNcdWQ4MDBkZWYiLmVuY29kZSgidXRmLTgiLCAic3Vycm9nYXRlcGFzcyIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGIiYWJjXHhlZFx4YTBceDgwZGVmIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiImFiY1x4ZWRceGEwXHg4MGRlZiIuZGVjb2RlKCJ1dGYtOCIsICJzdXJyb2dhdGVwYXNzIiksCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoImFiY1x1ZDgwMGRlZiIuZW5jb2RlKHNlbGYuZW5jb2RpbmcsICJzdXJyb2dhdGVwYXNzIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5CT00gKyBiImFiY1x4ZWRceGEwXHg4MGRlZiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIlxVMDAwMTBmZmZcdUQ4MDAiLmVuY29kZShzZWxmLmVuY29kaW5nLCAic3Vycm9nYXRlcGFzcyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuQk9NICsgYiJceGYwXHg5MFx4YmZceGJmXHhlZFx4YTBceDgwIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW1x1RDgwMFx1REM4MF0iLmVuY29kZShzZWxmLmVuY29kaW5nLCAic3Vycm9nYXRlcGFzcyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuQk9NICsgYidbXHhlZFx4YTBceDgwXHhlZFx4YjJceDgwXScpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiImFiY1x4ZWRceGEwXHg4MGRlZiIuZGVjb2RlKHNlbGYuZW5jb2RpbmcsICJzdXJyb2dhdGVwYXNzIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgImFiY1x1ZDgwMGRlZiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIlxVMDAwMTBmZmZcdUQ4MDAiLmVuY29kZSgidXRmLTgiLCAic3Vycm9nYXRlcGFzcyIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGIiXHhmMFx4OTBceGJmXHhiZlx4ZWRceGEwXHg4MCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiJceGYwXHg5MFx4YmZceGJmXHhlZFx4YTBceDgwIi5kZWNvZGUoInV0Zi04IiwgInN1cnJvZ2F0ZXBhc3MiKSwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiIlx4ZjBceDkwXHhiZlx4YmZceGVkXHhhMFx4ODAiLmRlY29kZShzZWxmLmVuY29kaW5nLCAic3Vycm9nYXRlcGFzcyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICJcVTAwMDEwZmZmXHVEODAwIikKKwogICAgICAgICBzZWxmLmFzc2VydFRydWUoY29kZWNzLmxvb2t1cF9lcnJvcigic3Vycm9nYXRlcGFzcyIpKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVEZWNvZGVFcnJvcik6Ci0gICAgICAgICAgICBiImFiY1x4ZWRceGEwIi5kZWNvZGUoInV0Zi04IiwgInN1cnJvZ2F0ZXBhc3MiKQorICAgICAgICAgICAgYiJhYmNceGVkXHhhMCIuZGVjb2RlKHNlbGYuZW5jb2RpbmcsICJzdXJyb2dhdGVwYXNzIikKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRGVjb2RlRXJyb3IpOgotICAgICAgICAgICAgYiJhYmNceGVkXHhhMHoiLmRlY29kZSgidXRmLTgiLCAic3Vycm9nYXRlcGFzcyIpCisgICAgICAgICAgICBiImFiY1x4ZWRceGEweiIuZGVjb2RlKHNlbGYuZW5jb2RpbmcsICJzdXJyb2dhdGVwYXNzIikKKwogCiBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJywKICAgICAgICAgICAgICAgICAgICAgICdjcDY1MDAxIGlzIGEgV2luZG93cy1vbmx5IGNvZGVjJykKQEAgLTgwNywxOCArODM2LDEzIEBACiAgICAgICAgICAgICAoJ2FiYycsICdzdHJpY3QnLCBiJ2FiYycpLAogICAgICAgICAgICAgKCdceGU5XHUyMGFjJywgJ3N0cmljdCcsICBiJ1x4YzNceGE5XHhlMlx4ODJceGFjJyksCiAgICAgICAgICAgICAoJ1xVMDAxMGZmZmYnLCAnc3RyaWN0JywgYidceGY0XHg4Zlx4YmZceGJmJyksCisgICAgICAgICAgICAoJ1x1ZGM4MCcsICdzdHJpY3QnLCBOb25lKSwKKyAgICAgICAgICAgICgnXHVkYzgwJywgJ2lnbm9yZScsIGInJyksCisgICAgICAgICAgICAoJ1x1ZGM4MCcsICdyZXBsYWNlJywgYic/JyksCisgICAgICAgICAgICAoJ1x1ZGM4MCcsICdiYWNrc2xhc2hyZXBsYWNlJywgYidcXHVkYzgwJyksCisgICAgICAgICAgICAoJ1x1ZGM4MCcsICduYW1lcmVwbGFjZScsIGInXFx1ZGM4MCcpLAorICAgICAgICAgICAgKCdcdWRjODAnLCAnc3Vycm9nYXRlcGFzcycsIGInXHhlZFx4YjJceDgwJyksCiAgICAgICAgIF0KLSAgICAgICAgaWYgVklTVEFfT1JfTEFURVI6Ci0gICAgICAgICAgICB0ZXN0cy5leHRlbmQoKAotICAgICAgICAgICAgICAgICgnXHVkYzgwJywgJ3N0cmljdCcsIE5vbmUpLAotICAgICAgICAgICAgICAgICgnXHVkYzgwJywgJ2lnbm9yZScsIGInJyksCi0gICAgICAgICAgICAgICAgKCdcdWRjODAnLCAncmVwbGFjZScsIGInPycpLAotICAgICAgICAgICAgICAgICgnXHVkYzgwJywgJ2JhY2tzbGFzaHJlcGxhY2UnLCBiJ1xcdWRjODAnKSwKLSAgICAgICAgICAgICAgICAoJ1x1ZGM4MCcsICduYW1lcmVwbGFjZScsIGInXFx1ZGM4MCcpLAotICAgICAgICAgICAgICAgICgnXHVkYzgwJywgJ3N1cnJvZ2F0ZXBhc3MnLCBiJ1x4ZWRceGIyXHg4MCcpLAotICAgICAgICAgICAgKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHRlc3RzLmFwcGVuZCgoJ1x1ZGM4MCcsICdzdHJpY3QnLCBiJ1x4ZWRceGIyXHg4MCcpKQogICAgICAgICBmb3IgdGV4dCwgZXJyb3JzLCBleHBlY3RlZCBpbiB0ZXN0czoKICAgICAgICAgICAgIGlmIGV4cGVjdGVkIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHRyeToKQEAgLTg0NSwxNyArODY5LDEwIEBACiAgICAgICAgICAgICAoYidbXHhmZl0nLCAnaWdub3JlJywgJ1tdJyksCiAgICAgICAgICAgICAoYidbXHhmZl0nLCAncmVwbGFjZScsICdbXHVmZmZkXScpLAogICAgICAgICAgICAgKGInW1x4ZmZdJywgJ3N1cnJvZ2F0ZWVzY2FwZScsICdbXHVkY2ZmXScpLAorICAgICAgICAgICAgKGInW1x4ZWRceGIyXHg4MF0nLCAnc3RyaWN0JywgTm9uZSksCisgICAgICAgICAgICAoYidbXHhlZFx4YjJceDgwXScsICdpZ25vcmUnLCAnW10nKSwKKyAgICAgICAgICAgIChiJ1tceGVkXHhiMlx4ODBdJywgJ3JlcGxhY2UnLCAnW1x1ZmZmZFx1ZmZmZFx1ZmZmZF0nKSwKICAgICAgICAgXQotICAgICAgICBpZiBWSVNUQV9PUl9MQVRFUjoKLSAgICAgICAgICAgIHRlc3RzLmV4dGVuZCgoCi0gICAgICAgICAgICAgICAgKGInW1x4ZWRceGIyXHg4MF0nLCAnc3RyaWN0JywgTm9uZSksCi0gICAgICAgICAgICAgICAgKGInW1x4ZWRceGIyXHg4MF0nLCAnaWdub3JlJywgJ1tdJyksCi0gICAgICAgICAgICAgICAgKGInW1x4ZWRceGIyXHg4MF0nLCAncmVwbGFjZScsICdbXHVmZmZkXHVmZmZkXHVmZmZkXScpLAotICAgICAgICAgICAgKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHRlc3RzLmV4dGVuZCgoCi0gICAgICAgICAgICAgICAgKGInW1x4ZWRceGIyXHg4MF0nLCAnc3RyaWN0JywgJ1tcdWRjODBdJyksCi0gICAgICAgICAgICApKQogICAgICAgICBmb3IgcmF3LCBlcnJvcnMsIGV4cGVjdGVkIGluIHRlc3RzOgogICAgICAgICAgICAgaWYgZXhwZWN0ZWQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgdHJ5OgpAQCAtODcwLDcgKzg4Nyw2IEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZURlY29kZUVycm9yLAogICAgICAgICAgICAgICAgICAgICByYXcuZGVjb2RlLCAnY3A2NTAwMScsIGVycm9ycykKIAotICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFZJU1RBX09SX0xBVEVSLCAncmVxdWlyZSBXaW5kb3dzIFZpc3RhIG9yIGxhdGVyJykKICAgICBkZWYgdGVzdF9sb25lX3N1cnJvZ2F0ZXMoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVFbmNvZGVFcnJvciwgIlx1ZDgwMCIuZW5jb2RlLCAiY3A2NTAwMSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVEZWNvZGVFcnJvciwgYiJceGVkXHhhMFx4ODAiLmRlY29kZSwgImNwNjUwMDEiKQpAQCAtODg3LDcgKzkwMyw2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIltcdURDODBdIi5lbmNvZGUoImNwNjUwMDEiLCAicmVwbGFjZSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIGInWz9dJykKIAotICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFZJU1RBX09SX0xBVEVSLCAncmVxdWlyZSBXaW5kb3dzIFZpc3RhIG9yIGxhdGVyJykKICAgICBkZWYgdGVzdF9zdXJyb2dhdGVwYXNzX2hhbmRsZXIoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoImFiY1x1ZDgwMGRlZiIuZW5jb2RlKCJjcDY1MDAxIiwgInN1cnJvZ2F0ZXBhc3MiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBiImFiY1x4ZWRceGEwXHg4MGRlZiIpCkBAIC0xMDU5LDYgKzEwNzQsNyBAQAogCiBjbGFzcyBVVEY4U2lnVGVzdChVVEY4VGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gInV0Zi04LXNpZyIKKyAgICBCT00gPSBjb2RlY3MuQk9NX1VURjgKIAogICAgIGRlZiB0ZXN0X3BhcnRpYWwoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tfcGFydGlhbCgKQEAgLTExNTksNyArMTE3NSw3IEBACiAgICAgICAgIGNoZWNrKGIiW1xcXG5dIiwgYiJbXSIpCiAgICAgICAgIGNoZWNrKGJyJ1tcIl0nLCBiJ1siXScpCiAgICAgICAgIGNoZWNrKGJyIltcJ10iLCBiIlsnXSIpCi0gICAgICAgIGNoZWNrKGJyIltcXF0iLCBiciJbXF0iKQorICAgICAgICBjaGVjayhiciJbXFxdIiwgYiJbXFxdIikKICAgICAgICAgY2hlY2soYnIiW1xhXSIsIGIiW1x4MDddIikKICAgICAgICAgY2hlY2soYnIiW1xiXSIsIGIiW1x4MDhdIikKICAgICAgICAgY2hlY2soYnIiW1x0XSIsIGIiW1x4MDldIikKQEAgLTExNjgsNyArMTE4NCw2IEBACiAgICAgICAgIGNoZWNrKGJyIltcZl0iLCBiIltceDBjXSIpCiAgICAgICAgIGNoZWNrKGJyIltccl0iLCBiIltceDBkXSIpCiAgICAgICAgIGNoZWNrKGJyIltcN10iLCBiIltceDA3XSIpCi0gICAgICAgIGNoZWNrKGJyIltcOF0iLCBiciJbXDhdIikKICAgICAgICAgY2hlY2soYnIiW1w3OF0iLCBiIltceDA3OF0iKQogICAgICAgICBjaGVjayhiciJbXDQxXSIsIGIiWyFdIikKICAgICAgICAgY2hlY2soYnIiW1w0MThdIiwgYiJbIThdIikKQEAgLTExNzYsMTIgKzExOTEsMTggQEAKICAgICAgICAgY2hlY2soYnIiW1wxMDEwXSIsIGIiW0EwXSIpCiAgICAgICAgIGNoZWNrKGJyIltcNTAxXSIsIGIiW0FdIikKICAgICAgICAgY2hlY2soYnIiW1x4NDFdIiwgYiJbQV0iKQotICAgICAgICBjaGVjayhiciJbXFg0MV0iLCBiciJbXFg0MV0iKQogICAgICAgICBjaGVjayhiciJbXHg0MTBdIiwgYiJbQTBdIikKLSAgICAgICAgZm9yIGIgaW4gcmFuZ2UoMjU2KToKLSAgICAgICAgICAgIGlmIGIgbm90IGluIGInXG4iXCdcXGFidG52ZnIwMTIzNDU2N3gnOgotICAgICAgICAgICAgICAgIGIgPSBieXRlcyhbYl0pCi0gICAgICAgICAgICAgICAgY2hlY2soYidcXCcgKyBiLCBiJ1xcJyArIGIpCisgICAgICAgIGZvciBpIGluIHJhbmdlKDk3LCAxMjMpOgorICAgICAgICAgICAgYiA9IGJ5dGVzKFtpXSkKKyAgICAgICAgICAgIGlmIGIgbm90IGluIGInYWJmbnJ0dngnOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgICAgICAgICBjaGVjayhiIlxcIiArIGIsIGIiXFwiICsgYikKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgICAgIGNoZWNrKGIiXFwiICsgYi51cHBlcigpLCBiIlxcIiArIGIudXBwZXIoKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBjaGVjayhiciJcOCIsIGIiXFw4IikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBjaGVjayhiciJcOSIsIGIiXFw5IikKIAogICAgIGRlZiB0ZXN0X2Vycm9ycyhzZWxmKToKICAgICAgICAgZGVjb2RlID0gY29kZWNzLmVzY2FwZV9kZWNvZGUKQEAgLTExOTQsNiArMTIxNSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlKGJyIltceDBdXHgwIiwgImlnbm9yZSIpLCAoYiJbXSIsIDgpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29kZShiciJbXHgwXVx4MCIsICJyZXBsYWNlIiksIChiIls/XT8iLCA4KSkKIAorCiBjbGFzcyBSZWNvZGluZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X3JlY29kaW5nKHNlbGYpOgogICAgICAgICBmID0gaW8uQnl0ZXNJTygpCkBAIC0xMzEzLDYgKzEzMzUsNyBAQAogICAgIGlmIGxlbihpKSE9MjoKICAgICAgICAgcHJpbnQocmVwcihpKSkKIAorCiBjbGFzcyBQdW55Y29kZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2VuY29kZShzZWxmKToKICAgICAgICAgZm9yIHVuaSwgcHVueSBpbiBwdW55Y29kZV90ZXN0Y2FzZXM6CkBAIC0xMzMyLDYgKzEzNTUsNyBAQAogICAgICAgICAgICAgcHVueSA9IHB1bnkuZGVjb2RlKCJhc2NpaSIpLmVuY29kZSgiYXNjaWkiKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1bmksIHB1bnkuZGVjb2RlKCJwdW55Y29kZSIpKQogCisKIGNsYXNzIFVuaWNvZGVJbnRlcm5hbFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFNJWkVPRl9XQ0hBUl9UID09IDQsICdzcGVjaWZpYyB0byAzMi1iaXQgd2NoYXJfdCcpCiAgICAgZGVmIHRlc3RfYnVnMTI1MTMwMChzZWxmKToKQEAgLTE1ODYsNiArMTYxMCw3IEBACiAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBzdXBwb3J0LlRlc3RGYWlsZWQoIlRlc3QgMy4lZDogJXMiICUgKHBvcysxLCBzdHIoZSkpKQogCisKIGNsYXNzIElETkFDb2RlY1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2J1aWx0aW5fZGVjb2RlKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihiInB5dGhvbi5vcmciLCAiaWRuYSIpLCAicHl0aG9uLm9yZyIpCkBAIC0xNjcyLDYgKzE2OTcsNyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRXhjZXB0aW9uLAogICAgICAgICAgICAgICAgIGIicHl0aG9uLm9yZyIuZGVjb2RlLCAiaWRuYSIsIGVycm9ycykKIAorCiBjbGFzcyBDb2RlY3NNb2R1bGVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2RlY29kZShzZWxmKToKQEAgLTE3ODAsNiArMTgwNiw3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRXJyb3IsCiAgICAgICAgICAgICAgICAgY29kZWNzLmRlY29kZSwgYidhYmMnLCAndW5kZWZpbmVkJywgZXJyb3JzKQogCisKIGNsYXNzIFN0cmVhbVJlYWRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHNldFVwKHNlbGYpOgpAQCAtMTc5MCw2ICsxODE3LDcgQEAKICAgICAgICAgZiA9IHNlbGYucmVhZGVyKHNlbGYuc3RyZWFtKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZGxpbmVzKCksIFsnXHVkNTVjXG4nLCAnXHVhZTAwJ10pCiAKKwogY2xhc3MgRW5jb2RlZEZpbGVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2Jhc2ljKHNlbGYpOgpAQCAtMTkwOSw2ICsxOTM3LDggQEAKIAogaWYgaGFzYXR0cihjb2RlY3MsICJtYmNzX2VuY29kZSIpOgogICAgIGFsbF91bmljb2RlX2VuY29kaW5ncy5hcHBlbmQoIm1iY3MiKQoraWYgaGFzYXR0cihjb2RlY3MsICJvZW1fZW5jb2RlIik6CisgICAgYWxsX3VuaWNvZGVfZW5jb2RpbmdzLmFwcGVuZCgib2VtIikKIAogIyBUaGUgZm9sbG93aW5nIGVuY29kaW5nIGlzIG5vdCB0ZXN0ZWQsIGJlY2F1c2UgaXQncyBub3Qgc3VwcG9zZWQKICMgdG8gd29yazoKQEAgLTE5MjAsNiArMTk1MCw3IEBACiAgICAgInVuaWNvZGVfaW50ZXJuYWwiCiBdCiAKKwogY2xhc3MgQmFzaWNVbmljb2RlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSwgTWl4SW5DaGVja1N0YXRlSGFuZGxpbmcpOgogICAgIGRlZiB0ZXN0X2Jhc2ljcyhzZWxmKToKICAgICAgICAgcyA9ICJhYmMxMjMiICAjIGFsbCBjb2RlY3Mgc2hvdWxkIGJlIGFibGUgdG8gZW5jb2RlIHRoZXNlCkBAIC0yMDgyLDYgKzIxMTMsNyBAQAogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tfc3RhdGVfaGFuZGxpbmdfZGVjb2RlKGVuY29kaW5nLCB1LCB1LmVuY29kZShlbmNvZGluZykpCiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja19zdGF0ZV9oYW5kbGluZ19lbmNvZGUoZW5jb2RpbmcsIHUsIHUuZW5jb2RlKGVuY29kaW5nKSkKIAorCiBjbGFzcyBDaGFybWFwVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfZGVjb2RlX3dpdGhfc3RyaW5nX21hcChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKQEAgLTIzMzIsNiArMjM2NCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLnN0cmVhbXdyaXRlciwgJ3N0cmljdCcpIGFzIHNydzoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3J3LnJlYWQoKSwgIlx4ZmMiKQogCisKIGNsYXNzIFR5cGVzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfZGVjb2RlX3VuaWNvZGUoc2VsZik6CiAgICAgICAgICMgTW9zdCBkZWNvZGVycyBkb24ndCBhY2NlcHQgdW5pY29kZSBpbnB1dApAQCAtMjQyMCw3ICsyNDUzLDYgQEAKICAgICAgICAgY2hlY2soYnIiW1xmXSIsICJbXHgwY10iKQogICAgICAgICBjaGVjayhiciJbXHJdIiwgIltceDBkXSIpCiAgICAgICAgIGNoZWNrKGJyIltcN10iLCAiW1x4MDddIikKLSAgICAgICAgY2hlY2soYnIiW1w4XSIsIHIiW1w4XSIpCiAgICAgICAgIGNoZWNrKGJyIltcNzhdIiwgIltceDA3OF0iKQogICAgICAgICBjaGVjayhiciJbXDQxXSIsICJbIV0iKQogICAgICAgICBjaGVjayhiciJbXDQxOF0iLCAiWyE4XSIpCkBAIC0yNDMwLDkgKzI0NjIsMTggQEAKICAgICAgICAgY2hlY2soYnIiW1x4NDEwXSIsICJbQTBdIikKICAgICAgICAgY2hlY2soYnIiXHUyMGFjIiwgIlx1MjBhYyIpCiAgICAgICAgIGNoZWNrKGJyIlxVMDAwMWQxMjAiLCAiXFUwMDAxZDEyMCIpCi0gICAgICAgIGZvciBiIGluIHJhbmdlKDI1Nik6Ci0gICAgICAgICAgICBpZiBiIG5vdCBpbiBiJ1xuIlwnXFxhYnRudmZyMDEyMzQ1Njd4dVVOJzoKLSAgICAgICAgICAgICAgICBjaGVjayhiJ1xcJyArIGJ5dGVzKFtiXSksICdcXCcgKyBjaHIoYikpCisgICAgICAgIGZvciBpIGluIHJhbmdlKDk3LCAxMjMpOgorICAgICAgICAgICAgYiA9IGJ5dGVzKFtpXSkKKyAgICAgICAgICAgIGlmIGIgbm90IGluIGInYWJmbnJ0dXZ4JzoKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgICAgICAgICAgY2hlY2soYiJcXCIgKyBiLCAiXFwiICsgY2hyKGkpKQorICAgICAgICAgICAgaWYgYi51cHBlcigpIG5vdCBpbiBiJ1VOJzoKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgICAgICAgICAgY2hlY2soYiJcXCIgKyBiLnVwcGVyKCksICJcXCIgKyBjaHIoaS0zMikpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgY2hlY2soYnIiXDgiLCAiXFw4IikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBjaGVjayhiciJcOSIsICJcXDkiKQogCiAgICAgZGVmIHRlc3RfZGVjb2RlX2Vycm9ycyhzZWxmKToKICAgICAgICAgZGVjb2RlID0gY29kZWNzLnVuaWNvZGVfZXNjYXBlX2RlY29kZQpAQCAtMjY0Miw2ICsyNjgzLDcgQEAKICAgICBieXRlc190cmFuc2Zvcm1fZW5jb2RpbmdzLmFwcGVuZCgiYnoyX2NvZGVjIikKICAgICB0cmFuc2Zvcm1fYWxpYXNlc1siYnoyX2NvZGVjIl0gPSBbImJ6MiJdCiAKKwogY2xhc3MgVHJhbnNmb3JtQ29kZWNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2Jhc2ljcyhzZWxmKToKQEAgLTI2OTQsOCArMjczNiw4IEBACiAgICAgICAgIGJhZF9pbnB1dCA9ICJiYWQgaW5wdXQgdHlwZSIKICAgICAgICAgZm9yIGVuY29kaW5nIGluIGJ5dGVzX3RyYW5zZm9ybV9lbmNvZGluZ3M6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChlbmNvZGluZz1lbmNvZGluZyk6Ci0gICAgICAgICAgICAgICAgZm10ID0gKCAieyFyfSBpcyBub3QgYSB0ZXh0IGVuY29kaW5nOyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAidXNlIGNvZGVjcy5lbmNvZGVcKFwpIHRvIGhhbmRsZSBhcmJpdHJhcnkgY29kZWNzIikKKyAgICAgICAgICAgICAgICBmbXQgPSAociJ7IXJ9IGlzIG5vdCBhIHRleHQgZW5jb2Rpbmc7ICIKKyAgICAgICAgICAgICAgICAgICAgICAgciJ1c2UgY29kZWNzLmVuY29kZVwoXCkgdG8gaGFuZGxlIGFyYml0cmFyeSBjb2RlY3MiKQogICAgICAgICAgICAgICAgIG1zZyA9IGZtdC5mb3JtYXQoZW5jb2RpbmcpCiAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KExvb2t1cEVycm9yLCBtc2cpIGFzIGZhaWx1cmU6CiAgICAgICAgICAgICAgICAgICAgIGJhZF9pbnB1dC5lbmNvZGUoZW5jb2RpbmcpCkBAIC0yNzA0LDcgKzI3NDYsNyBAQAogICAgIGRlZiB0ZXN0X3RleHRfdG9fYmluYXJ5X2JsYWNrbGlzdHNfdGV4dF90cmFuc2Zvcm1zKHNlbGYpOgogICAgICAgICAjIENoZWNrIHN0ci5lbmNvZGUgZ2l2ZXMgYSBnb29kIGVycm9yIG1lc3NhZ2UgZm9yIHN0ciAtPiBzdHIgY29kZWNzCiAgICAgICAgIG1zZyA9IChyIl4ncm90XzEzJyBpcyBub3QgYSB0ZXh0IGVuY29kaW5nOyAiCi0gICAgICAgICAgICAgICAgInVzZSBjb2RlY3MuZW5jb2RlXChcKSB0byBoYW5kbGUgYXJiaXRyYXJ5IGNvZGVjcyIpCisgICAgICAgICAgICAgICByInVzZSBjb2RlY3MuZW5jb2RlXChcKSB0byBoYW5kbGUgYXJiaXRyYXJ5IGNvZGVjcyIpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChMb29rdXBFcnJvciwgbXNnKToKICAgICAgICAgICAgICJqdXN0IGFuIGV4YW1wbGUgbWVzc2FnZSIuZW5jb2RlKCJyb3RfMTMiKQogCkBAIC0yNzE2LDcgKzI3NTgsNyBAQAogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoZW5jb2Rpbmc9ZW5jb2RpbmcpOgogICAgICAgICAgICAgICAgIGVuY29kZWRfZGF0YSA9IGNvZGVjcy5lbmNvZGUoZGF0YSwgZW5jb2RpbmcpCiAgICAgICAgICAgICAgICAgZm10ID0gKHIieyFyfSBpcyBub3QgYSB0ZXh0IGVuY29kaW5nOyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAidXNlIGNvZGVjcy5kZWNvZGVcKFwpIHRvIGhhbmRsZSBhcmJpdHJhcnkgY29kZWNzIikKKyAgICAgICAgICAgICAgICAgICAgICAgciJ1c2UgY29kZWNzLmRlY29kZVwoXCkgdG8gaGFuZGxlIGFyYml0cmFyeSBjb2RlY3MiKQogICAgICAgICAgICAgICAgIG1zZyA9IGZtdC5mb3JtYXQoZW5jb2RpbmcpCiAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KExvb2t1cEVycm9yLCBtc2cpOgogICAgICAgICAgICAgICAgICAgICBlbmNvZGVkX2RhdGEuZGVjb2RlKGVuY29kaW5nKQpAQCAtMjcyOCw3ICsyNzcwLDcgQEAKICAgICAgICAgZm9yIGJhZF9pbnB1dCBpbiAoYiJpbW11dGFibGUiLCBieXRlYXJyYXkoYiJtdXRhYmxlIikpOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoYmFkX2lucHV0PWJhZF9pbnB1dCk6CiAgICAgICAgICAgICAgICAgbXNnID0gKHIiXidyb3RfMTMnIGlzIG5vdCBhIHRleHQgZW5jb2Rpbmc7ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJ1c2UgY29kZWNzLmRlY29kZVwoXCkgdG8gaGFuZGxlIGFyYml0cmFyeSBjb2RlY3MiKQorICAgICAgICAgICAgICAgICAgICAgICByInVzZSBjb2RlY3MuZGVjb2RlXChcKSB0byBoYW5kbGUgYXJiaXRyYXJ5IGNvZGVjcyIpCiAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KExvb2t1cEVycm9yLCBtc2cpIGFzIGZhaWx1cmU6CiAgICAgICAgICAgICAgICAgICAgIGJhZF9pbnB1dC5kZWNvZGUoInJvdF8xMyIpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZmFpbHVyZS5leGNlcHRpb24uX19jYXVzZV9fKQpAQCAtMjk0NywxMiArMjk4OSwxMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29kZWQsIGIibm90IHN0ciEiKQogICAgICAgICAjIFRleHQgbW9kZWwgbWV0aG9kcyBzaG91bGQgY29tcGxhaW4KICAgICAgICAgZm10ID0gKHIiXnshcn0gZW5jb2RlciByZXR1cm5lZCAnc3RyJyBpbnN0ZWFkIG9mICdieXRlcyc7ICIKLSAgICAgICAgICAgICAgICAidXNlIGNvZGVjcy5lbmNvZGVcKFwpIHRvIGVuY29kZSB0byBhcmJpdHJhcnkgdHlwZXMkIikKKyAgICAgICAgICAgICAgIHIidXNlIGNvZGVjcy5lbmNvZGVcKFwpIHRvIGVuY29kZSB0byBhcmJpdHJhcnkgdHlwZXMkIikKICAgICAgICAgbXNnID0gZm10LmZvcm1hdChzZWxmLmNvZGVjX25hbWUpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIG1zZyk6CiAgICAgICAgICAgICAic3RyX2lucHV0Ii5lbmNvZGUoc2VsZi5jb2RlY19uYW1lKQogICAgICAgICBmbXQgPSAociJeeyFyfSBkZWNvZGVyIHJldHVybmVkICdieXRlcycgaW5zdGVhZCBvZiAnc3RyJzsgIgotICAgICAgICAgICAgICAgICJ1c2UgY29kZWNzLmRlY29kZVwoXCkgdG8gZGVjb2RlIHRvIGFyYml0cmFyeSB0eXBlcyQiKQorICAgICAgICAgICAgICAgciJ1c2UgY29kZWNzLmRlY29kZVwoXCkgdG8gZGVjb2RlIHRvIGFyYml0cmFyeSB0eXBlcyQiKQogICAgICAgICBtc2cgPSBmbXQuZm9ybWF0KHNlbGYuY29kZWNfbmFtZSkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgbXNnKToKICAgICAgICAgICAgIGIiYnl0ZXMgaW5wdXQiLmRlY29kZShzZWxmLmNvZGVjX25hbWUpCkBAIC0zMDkzLDExICszMTM1LDEwIEBACiAgICAgICAgICAgICAoYidceGZmXHhmNFx4OGZceGJmXHhiZicsICdpZ25vcmUnLCAnXFUwMDEwZmZmZicpLAogICAgICAgICAgICAgKGInXHhmZlx4ZjRceDhmXHhiZlx4YmYnLCAncmVwbGFjZScsICdcdWZmZmRcVTAwMTBmZmZmJyksCiAgICAgICAgICkpCi0gICAgICAgIGlmIFZJU1RBX09SX0xBVEVSOgotICAgICAgICAgICAgc2VsZi5jaGVja19lbmNvZGUoc2VsZi5DUF9VVEY4LCAoCi0gICAgICAgICAgICAgICAgKCdbXFUwMDEwZmZmZlx1REM4MF0nLCAnaWdub3JlJywgYidbXHhmNFx4OGZceGJmXHhiZl0nKSwKLSAgICAgICAgICAgICAgICAoJ1tcVTAwMTBmZmZmXHVEQzgwXScsICdyZXBsYWNlJywgYidbXHhmNFx4OGZceGJmXHhiZj9dJyksCi0gICAgICAgICAgICApKQorICAgICAgICBzZWxmLmNoZWNrX2VuY29kZShzZWxmLkNQX1VURjgsICgKKyAgICAgICAgICAgICgnW1xVMDAxMGZmZmZcdURDODBdJywgJ2lnbm9yZScsIGInW1x4ZjRceDhmXHhiZlx4YmZdJyksCisgICAgICAgICAgICAoJ1tcVTAwMTBmZmZmXHVEQzgwXScsICdyZXBsYWNlJywgYidbXHhmNFx4OGZceGJmXHhiZj9dJyksCisgICAgICAgICkpCiAKICAgICBkZWYgdGVzdF9pbmNyZW1lbnRhbChzZWxmKToKICAgICAgICAgZGVjb2RlZCA9IGNvZGVjcy5jb2RlX3BhZ2VfZGVjb2RlKDkzMiwgYidceDgyJywgJ3N0cmljdCcsIEZhbHNlKQpAQCAtMzExOCw2ICszMTU5LDk2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGYWxzZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvZGVkLCAoJ2FiYycsIDMpKQogCisgICAgZGVmIHRlc3RfbWJjc19hbGlhcyhzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IGxvb2tpbmcgdXAgb3VyICdkZWZhdWx0JyBjb2RlcGFnZSB3aWxsIHJldHVybgorICAgICAgICAjIG1iY3Mgd2hlbiB3ZSBkb24ndCBoYXZlIGEgbW9yZSBzcGVjaWZpYyBvbmUgYXZhaWxhYmxlCisgICAgICAgIGltcG9ydCBfYm9vdGxvY2FsZQorICAgICAgICBkZWYgX2dldF9mYWtlX2NvZGVwYWdlKCphKToKKyAgICAgICAgICAgIHJldHVybiAnY3AxMjMnCisgICAgICAgIG9sZF9nZXRwcmVmZXJyZWRlbmNvZGluZyA9IF9ib290bG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nCisgICAgICAgIF9ib290bG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nID0gX2dldF9mYWtlX2NvZGVwYWdlCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGNvZGVjID0gY29kZWNzLmxvb2t1cCgnY3AxMjMnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlYy5uYW1lLCAnbWJjcycpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBfYm9vdGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyA9IG9sZF9nZXRwcmVmZXJyZWRlbmNvZGluZworCisKK2NsYXNzIEFTQ0lJVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfZW5jb2RlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdhYmMxMjMnLmVuY29kZSgnYXNjaWknKSwgYidhYmMxMjMnKQorCisgICAgZGVmIHRlc3RfZW5jb2RlX2Vycm9yKHNlbGYpOgorICAgICAgICBmb3IgZGF0YSwgZXJyb3JfaGFuZGxlciwgZXhwZWN0ZWQgaW4gKAorICAgICAgICAgICAgKCdbXHg4MFx4ZmZcdTIwYWNdJywgJ2lnbm9yZScsIGInW10nKSwKKyAgICAgICAgICAgICgnW1x4ODBceGZmXHUyMGFjXScsICdyZXBsYWNlJywgYidbPz8/XScpLAorICAgICAgICAgICAgKCdbXHg4MFx4ZmZcdTIwYWNdJywgJ3htbGNoYXJyZWZyZXBsYWNlJywgYidbJiMxMjg7JiMyNTU7JiM4MzY0O10nKSwKKyAgICAgICAgICAgICgnW1x4ODBceGZmXHUyMGFjXFUwMDBhYmNkZV0nLCAnYmFja3NsYXNocmVwbGFjZScsCisgICAgICAgICAgICAgYidbXFx4ODBcXHhmZlxcdTIwYWNcXFUwMDBhYmNkZV0nKSwKKyAgICAgICAgICAgICgnW1x1ZGM4MFx1ZGNmZl0nLCAnc3Vycm9nYXRlZXNjYXBlJywgYidbXHg4MFx4ZmZdJyksCisgICAgICAgICk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChkYXRhPWRhdGEsIGVycm9yX2hhbmRsZXI9ZXJyb3JfaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkPWV4cGVjdGVkKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEuZW5jb2RlKCdhc2NpaScsIGVycm9yX2hhbmRsZXIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9lbmNvZGVfc3Vycm9nYXRlZXNjYXBlX2Vycm9yKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVFbmNvZGVFcnJvcik6CisgICAgICAgICAgICAjIHRoZSBmaXJzdCBjaGFyYWN0ZXIgY2FuIGJlIGRlY29kZWQsIGJ1dCBub3QgdGhlIHNlY29uZAorICAgICAgICAgICAgJ1x1ZGM4MFx4ZmYnLmVuY29kZSgnYXNjaWknLCAnc3Vycm9nYXRlZXNjYXBlJykKKworICAgIGRlZiB0ZXN0X2RlY29kZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ2FiYycuZGVjb2RlKCdhc2NpaScpLCAnYWJjJykKKworICAgIGRlZiB0ZXN0X2RlY29kZV9lcnJvcihzZWxmKToKKyAgICAgICAgZm9yIGRhdGEsIGVycm9yX2hhbmRsZXIsIGV4cGVjdGVkIGluICgKKyAgICAgICAgICAgIChiJ1tceDgwXHhmZl0nLCAnaWdub3JlJywgJ1tdJyksCisgICAgICAgICAgICAoYidbXHg4MFx4ZmZdJywgJ3JlcGxhY2UnLCAnW1x1ZmZmZFx1ZmZmZF0nKSwKKyAgICAgICAgICAgIChiJ1tceDgwXHhmZl0nLCAnc3Vycm9nYXRlZXNjYXBlJywgJ1tcdWRjODBcdWRjZmZdJyksCisgICAgICAgICAgICAoYidbXHg4MFx4ZmZdJywgJ2JhY2tzbGFzaHJlcGxhY2UnLCAnW1xceDgwXFx4ZmZdJyksCisgICAgICAgICk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChkYXRhPWRhdGEsIGVycm9yX2hhbmRsZXI9ZXJyb3JfaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkPWV4cGVjdGVkKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEuZGVjb2RlKCdhc2NpaScsIGVycm9yX2hhbmRsZXIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQpCisKKworY2xhc3MgTGF0aW4xVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfZW5jb2RlKHNlbGYpOgorICAgICAgICBmb3IgZGF0YSwgZXhwZWN0ZWQgaW4gKAorICAgICAgICAgICAgKCdhYmMnLCBiJ2FiYycpLAorICAgICAgICAgICAgKCdceDgwXHhlOVx4ZmYnLCBiJ1x4ODBceGU5XHhmZicpLAorICAgICAgICApOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoZGF0YT1kYXRhLCBleHBlY3RlZD1leHBlY3RlZCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLmVuY29kZSgnbGF0aW4xJyksIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3RfZW5jb2RlX2Vycm9ycyhzZWxmKToKKyAgICAgICAgZm9yIGRhdGEsIGVycm9yX2hhbmRsZXIsIGV4cGVjdGVkIGluICgKKyAgICAgICAgICAgICgnW1x1MjBhY1x1ZGM4MF0nLCAnaWdub3JlJywgYidbXScpLAorICAgICAgICAgICAgKCdbXHUyMGFjXHVkYzgwXScsICdyZXBsYWNlJywgYidbPz9dJyksCisgICAgICAgICAgICAoJ1tcdTIwYWNcVTAwMGFiY2RlXScsICdiYWNrc2xhc2hyZXBsYWNlJywKKyAgICAgICAgICAgICBiJ1tcXHUyMGFjXFxVMDAwYWJjZGVdJyksCisgICAgICAgICAgICAoJ1tcdTIwYWNcdWRjODBdJywgJ3htbGNoYXJyZWZyZXBsYWNlJywgYidbJiM4MzY0OyYjNTY0NDg7XScpLAorICAgICAgICAgICAgKCdbXHVkYzgwXHVkY2ZmXScsICdzdXJyb2dhdGVlc2NhcGUnLCBiJ1tceDgwXHhmZl0nKSwKKyAgICAgICAgKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGRhdGE9ZGF0YSwgZXJyb3JfaGFuZGxlcj1lcnJvcl9oYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ9ZXhwZWN0ZWQpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YS5lbmNvZGUoJ2xhdGluMScsIGVycm9yX2hhbmRsZXIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9lbmNvZGVfc3Vycm9nYXRlZXNjYXBlX2Vycm9yKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVFbmNvZGVFcnJvcik6CisgICAgICAgICAgICAjIHRoZSBmaXJzdCBjaGFyYWN0ZXIgY2FuIGJlIGRlY29kZWQsIGJ1dCBub3QgdGhlIHNlY29uZAorICAgICAgICAgICAgJ1x1ZGM4MFx1MjBhYycuZW5jb2RlKCdsYXRpbjEnLCAnc3Vycm9nYXRlZXNjYXBlJykKKworICAgIGRlZiB0ZXN0X2RlY29kZShzZWxmKToKKyAgICAgICAgZm9yIGRhdGEsIGV4cGVjdGVkIGluICgKKyAgICAgICAgICAgIChiJ2FiYycsICdhYmMnKSwKKyAgICAgICAgICAgIChiJ1tceDgwXHhmZl0nLCAnW1x4ODBceGZmXScpLAorICAgICAgICApOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoZGF0YT1kYXRhLCBleHBlY3RlZD1leHBlY3RlZCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLmRlY29kZSgnbGF0aW4xJyksIGV4cGVjdGVkKQorCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVvcC5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZW9wLnB5CmluZGV4IDUwOWJmNWQuLjk4ZGEyNmYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZW9wLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZW9wLnB5CkBAIC0yODIsNyArMjgyLDYgQEAKICAgICAgICAgYWkoImlmIChhID09IDEgYW5kIGIgPSAyKTogcGFzcyIpCiAKICAgICAgICAgYWkoImRlbCAxIikKLSAgICAgICAgYWkoImRlbCAoKSIpCiAgICAgICAgIGFpKCJkZWwgKDEsKSIpCiAgICAgICAgIGFpKCJkZWwgWzFdIikKICAgICAgICAgYWkoImRlbCAnMSciKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2xsZWN0aW9ucy5weSBiL0xpYi90ZXN0L3Rlc3RfY29sbGVjdGlvbnMucHkKaW5kZXggNTIzODM4Mi4uODc0NTRjYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2xsZWN0aW9ucy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbGxlY3Rpb25zLnB5CkBAIC0xOSwxMSArMTksMTIgQEAKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IFVzZXJEaWN0LCBVc2VyU3RyaW5nLCBVc2VyTGlzdAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgQ2hhaW5NYXAKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCi1mcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgQXdhaXRhYmxlLCBDb3JvdXRpbmUsIEFzeW5jSXRlcmF0b3IsIEFzeW5jSXRlcmFibGUKLWZyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBIYXNoYWJsZSwgSXRlcmFibGUsIEl0ZXJhdG9yLCBHZW5lcmF0b3IKLWZyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBTaXplZCwgQ29udGFpbmVyLCBDYWxsYWJsZQorZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IEF3YWl0YWJsZSwgQ29yb3V0aW5lCitmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgQXN5bmNJdGVyYXRvciwgQXN5bmNJdGVyYWJsZSwgQXN5bmNHZW5lcmF0b3IKK2Zyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBIYXNoYWJsZSwgSXRlcmFibGUsIEl0ZXJhdG9yLCBHZW5lcmF0b3IsIFJldmVyc2libGUKK2Zyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBTaXplZCwgQ29udGFpbmVyLCBDYWxsYWJsZSwgQ29sbGVjdGlvbgogZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IFNldCwgTXV0YWJsZVNldAotZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IE1hcHBpbmcsIE11dGFibGVNYXBwaW5nLCBLZXlzVmlldywgSXRlbXNWaWV3Citmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgTWFwcGluZywgTXV0YWJsZU1hcHBpbmcsIEtleXNWaWV3LCBJdGVtc1ZpZXcsIFZhbHVlc1ZpZXcKIGZyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBTZXF1ZW5jZSwgTXV0YWJsZVNlcXVlbmNlCiBmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgQnl0ZVN0cmluZwogCkBAIC0yNDIsNiArMjQzLDEwIEBACiAgICAgICAgIF06CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWVkdHVwbGUoJ05UJywgc3BlYywgcmVuYW1lPVRydWUpLl9maWVsZHMsIHJlbmFtZWQpCiAKKyAgICBkZWYgdGVzdF9tb2R1bGVfcGFyYW1ldGVyKHNlbGYpOgorICAgICAgICBOVCA9IG5hbWVkdHVwbGUoJ05UJywgWyd4JywgJ3knXSwgbW9kdWxlPWNvbGxlY3Rpb25zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5ULl9fbW9kdWxlX18sIGNvbGxlY3Rpb25zKQorCiAgICAgZGVmIHRlc3RfaW5zdGFuY2Uoc2VsZik6CiAgICAgICAgIFBvaW50ID0gbmFtZWR0dXBsZSgnUG9pbnQnLCAneCB5JykKICAgICAgICAgcCA9IFBvaW50KDExLCAyMikKQEAgLTQxMiw2ICs0MTcsMTggQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOVENvbG9yLl9maWVsZHMsICgncmVkJywgJ2dyZWVuJywgJ2JsdWUnKSkKICAgICAgICAgZ2xvYmFscygpLnBvcCgnTlRDb2xvcicsIE5vbmUpICAgICAgICAgICMgY2xlYW4tdXAgYWZ0ZXIgdGhpcyB0ZXN0CiAKKyAgICBkZWYgdGVzdF9rZXl3b3JkX29ubHlfYXJndW1lbnRzKHNlbGYpOgorICAgICAgICAjIFNlZSBpc3N1ZSAyNTYyOAorICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgdGVtcGxhdGU6CisgICAgICAgICAgICBOVCA9IG5hbWVkdHVwbGUoJ05UJywgWyd4JywgJ3knXSwgdmVyYm9zZT1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEluKCdjbGFzcyBOVCcsIE5ULl9zb3VyY2UpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIE5UID0gbmFtZWR0dXBsZSgnTlQnLCBbJ3gnLCAneSddLCBUcnVlKQorCisgICAgICAgIE5UID0gbmFtZWR0dXBsZSgnTlQnLCBbJ2FiYycsICdkZWYnXSwgcmVuYW1lPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTlQuX2ZpZWxkcywgKCdhYmMnLCAnXzEnKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgTlQgPSBuYW1lZHR1cGxlKCdOVCcsIFsnYWJjJywgJ2RlZiddLCBGYWxzZSwgVHJ1ZSkKIAogICAgIGRlZiB0ZXN0X25hbWVkdHVwbGVfc3ViY2xhc3NfaXNzdWVfMjQ5MzEoc2VsZik6CiAgICAgICAgIGNsYXNzIFBvaW50KG5hbWVkdHVwbGUoJ19Qb2ludCcsIFsneCcsICd5J10pKToKQEAgLTQ4Nyw2ICs1MDQsOSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG90aGVyLnJpZ2h0X3NpZGUsJ1JpZ2h0IHNpZGUgbm90IGNhbGxlZCBmb3IgJXMuJXMnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAodHlwZShpbnN0YW5jZSksIG5hbWUpKQogCitkZWYgX3Rlc3RfZ2VuKCk6CisgICAgeWllbGQKKwogY2xhc3MgVGVzdE9uZVRyaWNrUG9ueUFCQ3MoQUJDVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfQXdhaXRhYmxlKHNlbGYpOgpAQCAtNjc0LDcgKzY5NCw3IEBACiAgICAgICAgIHNhbXBsZXMgPSBbYnl0ZXMoKSwgc3RyKCksCiAgICAgICAgICAgICAgICAgICAgdHVwbGUoKSwgbGlzdCgpLCBzZXQoKSwgZnJvemVuc2V0KCksIGRpY3QoKSwKICAgICAgICAgICAgICAgICAgICBkaWN0KCkua2V5cygpLCBkaWN0KCkuaXRlbXMoKSwgZGljdCgpLnZhbHVlcygpLAotICAgICAgICAgICAgICAgICAgIChsYW1iZGE6ICh5aWVsZCkpKCksCisgICAgICAgICAgICAgICAgICAgX3Rlc3RfZ2VuKCksCiAgICAgICAgICAgICAgICAgICAgKHggZm9yIHggaW4gW10pLAogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgZm9yIHggaW4gc2FtcGxlczoKQEAgLTY4OCw2ICs3MDgsMTYxIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhzdHIsIEkpKQogICAgICAgICBzZWxmLnZhbGlkYXRlX2Fic3RyYWN0X21ldGhvZHMoSXRlcmFibGUsICdfX2l0ZXJfXycpCiAgICAgICAgIHNlbGYudmFsaWRhdGVfaXNpbnN0YW5jZShJdGVyYWJsZSwgJ19faXRlcl9fJykKKyAgICAgICAgIyBDaGVjayBOb25lIGJsb2NraW5nCisgICAgICAgIGNsYXNzIEl0OgorICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOiByZXR1cm4gaXRlcihbXSkKKyAgICAgICAgY2xhc3MgSXRCbG9ja2VkKEl0KToKKyAgICAgICAgICAgIF9faXRlcl9fID0gTm9uZQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhJdCwgSXRlcmFibGUpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShJdCgpLCBJdGVyYWJsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhJdEJsb2NrZWQsIEl0ZXJhYmxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc2luc3RhbmNlKEl0QmxvY2tlZCgpLCBJdGVyYWJsZSkpCisKKyAgICBkZWYgdGVzdF9SZXZlcnNpYmxlKHNlbGYpOgorICAgICAgICAjIENoZWNrIHNvbWUgbm9uLXJldmVyc2libGVzCisgICAgICAgIG5vbl9zYW1wbGVzID0gW05vbmUsIDQyLCAzLjE0LCAxaiwgZGljdCgpLCBzZXQoKSwgZnJvemVuc2V0KCldCisgICAgICAgIGZvciB4IGluIG5vbl9zYW1wbGVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKHgsIFJldmVyc2libGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3ModHlwZSh4KSwgUmV2ZXJzaWJsZSksIHJlcHIodHlwZSh4KSkpCisgICAgICAgICMgQ2hlY2sgc29tZSBub24tcmV2ZXJzaWJsZSBpdGVyYWJsZXMKKyAgICAgICAgbm9uX3JldmVyc2libGVzID0gW2RpY3QoKS5rZXlzKCksIGRpY3QoKS5pdGVtcygpLCBkaWN0KCkudmFsdWVzKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3VudGVyKCksIENvdW50ZXIoKS5rZXlzKCksIENvdW50ZXIoKS5pdGVtcygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQ291bnRlcigpLnZhbHVlcygpLCBfdGVzdF9nZW4oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICh4IGZvciB4IGluIFtdKSwgaXRlcihbXSksIHJldmVyc2VkKFtdKV0KKyAgICAgICAgZm9yIHggaW4gbm9uX3JldmVyc2libGVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKHgsIFJldmVyc2libGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3ModHlwZSh4KSwgUmV2ZXJzaWJsZSksIHJlcHIodHlwZSh4KSkpCisgICAgICAgICMgQ2hlY2sgc29tZSByZXZlcnNpYmxlIGl0ZXJhYmxlcworICAgICAgICBzYW1wbGVzID0gW2J5dGVzKCksIHN0cigpLCB0dXBsZSgpLCBsaXN0KCksIE9yZGVyZWREaWN0KCksCisgICAgICAgICAgICAgICAgICAgT3JkZXJlZERpY3QoKS5rZXlzKCksIE9yZGVyZWREaWN0KCkuaXRlbXMoKSwKKyAgICAgICAgICAgICAgICAgICBPcmRlcmVkRGljdCgpLnZhbHVlcygpXQorICAgICAgICBmb3IgeCBpbiBzYW1wbGVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHgsIFJldmVyc2libGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyh0eXBlKHgpLCBSZXZlcnNpYmxlKSwgcmVwcih0eXBlKHgpKSkKKyAgICAgICAgIyBDaGVjayBhbHNvIE1hcHBpbmcsIE11dGFibGVNYXBwaW5nLCBhbmQgU2VxdWVuY2UKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoU2VxdWVuY2UsIFJldmVyc2libGUpLCByZXByKFNlcXVlbmNlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKE1hcHBpbmcsIFJldmVyc2libGUpLCByZXByKE1hcHBpbmcpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoTXV0YWJsZU1hcHBpbmcsIFJldmVyc2libGUpLCByZXByKE11dGFibGVNYXBwaW5nKSkKKyAgICAgICAgIyBDaGVjayBkaXJlY3Qgc3ViY2xhc3NpbmcKKyAgICAgICAgY2xhc3MgUihSZXZlcnNpYmxlKToKKyAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gaXRlcihsaXN0KCkpCisgICAgICAgICAgICBkZWYgX19yZXZlcnNlZF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBpdGVyKGxpc3QoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJldmVyc2VkKFIoKSkpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKGZsb2F0LCBSKSkKKyAgICAgICAgc2VsZi52YWxpZGF0ZV9hYnN0cmFjdF9tZXRob2RzKFJldmVyc2libGUsICdfX3JldmVyc2VkX18nLCAnX19pdGVyX18nKQorICAgICAgICAjIENoZWNrIHJldmVyc2libGUgbm9uLWl0ZXJhYmxlICh3aGljaCBpcyBub3QgUmV2ZXJzaWJsZSkKKyAgICAgICAgY2xhc3MgUmV2Tm9JdGVyOgorICAgICAgICAgICAgZGVmIF9fcmV2ZXJzZWRfXyhzZWxmKTogcmV0dXJuIHJldmVyc2VkKFtdKQorICAgICAgICBjbGFzcyBSZXZQbHVzSXRlcihSZXZOb0l0ZXIpOgorICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOiByZXR1cm4gaXRlcihbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKFJldk5vSXRlciwgUmV2ZXJzaWJsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNpbnN0YW5jZShSZXZOb0l0ZXIoKSwgUmV2ZXJzaWJsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKFJldlBsdXNJdGVyLCBSZXZlcnNpYmxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoUmV2UGx1c0l0ZXIoKSwgUmV2ZXJzaWJsZSkpCisgICAgICAgICMgQ2hlY2sgTm9uZSBibG9ja2luZworICAgICAgICBjbGFzcyBSZXY6CisgICAgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6IHJldHVybiBpdGVyKFtdKQorICAgICAgICAgICAgZGVmIF9fcmV2ZXJzZWRfXyhzZWxmKTogcmV0dXJuIHJldmVyc2VkKFtdKQorICAgICAgICBjbGFzcyBSZXZJdEJsb2NrZWQoUmV2KToKKyAgICAgICAgICAgIF9faXRlcl9fID0gTm9uZQorICAgICAgICBjbGFzcyBSZXZSZXZCbG9ja2VkKFJldik6CisgICAgICAgICAgICBfX3JldmVyc2VkX18gPSBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKFJldiwgUmV2ZXJzaWJsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKFJldigpLCBSZXZlcnNpYmxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKFJldkl0QmxvY2tlZCwgUmV2ZXJzaWJsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNpbnN0YW5jZShSZXZJdEJsb2NrZWQoKSwgUmV2ZXJzaWJsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhSZXZSZXZCbG9ja2VkLCBSZXZlcnNpYmxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc2luc3RhbmNlKFJldlJldkJsb2NrZWQoKSwgUmV2ZXJzaWJsZSkpCisKKyAgICBkZWYgdGVzdF9Db2xsZWN0aW9uKHNlbGYpOgorICAgICAgICAjIENoZWNrIHNvbWUgbm9uLWNvbGxlY3Rpb25zCisgICAgICAgIG5vbl9jb2xsZWN0aW9ucyA9IFtOb25lLCA0MiwgMy4xNCwgMWosIGxhbWJkYSB4OiAyKnhdCisgICAgICAgIGZvciB4IGluIG5vbl9jb2xsZWN0aW9uczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZSh4LCBDb2xsZWN0aW9uKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKHR5cGUoeCksIENvbGxlY3Rpb24pLCByZXByKHR5cGUoeCkpKQorICAgICAgICAjIENoZWNrIHNvbWUgbm9uLWNvbGxlY3Rpb24gaXRlcmFibGVzCisgICAgICAgIG5vbl9jb2xfaXRlcmFibGVzID0gW190ZXN0X2dlbigpLCBpdGVyKGInJyksIGl0ZXIoYnl0ZWFycmF5KCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeCBmb3IgeCBpbiBbXSksIGRpY3QoKS52YWx1ZXMoKV0KKyAgICAgICAgZm9yIHggaW4gbm9uX2NvbF9pdGVyYWJsZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UoeCwgQ29sbGVjdGlvbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyh0eXBlKHgpLCBDb2xsZWN0aW9uKSwgcmVwcih0eXBlKHgpKSkKKyAgICAgICAgIyBDaGVjayBzb21lIGNvbGxlY3Rpb25zCisgICAgICAgIHNhbXBsZXMgPSBbc2V0KCksIGZyb3plbnNldCgpLCBkaWN0KCksIGJ5dGVzKCksIHN0cigpLCB0dXBsZSgpLAorICAgICAgICAgICAgICAgICAgIGxpc3QoKSwgZGljdCgpLmtleXMoKSwgZGljdCgpLml0ZW1zKCldCisgICAgICAgIGZvciB4IGluIHNhbXBsZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoeCwgQ29sbGVjdGlvbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKHR5cGUoeCksIENvbGxlY3Rpb24pLCByZXByKHR5cGUoeCkpKQorICAgICAgICAjIENoZWNrIGFsc28gTWFwcGluZywgTXV0YWJsZU1hcHBpbmcsIGV0Yy4KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoU2VxdWVuY2UsIENvbGxlY3Rpb24pLCByZXByKFNlcXVlbmNlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoTWFwcGluZywgQ29sbGVjdGlvbiksIHJlcHIoTWFwcGluZykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKE11dGFibGVNYXBwaW5nLCBDb2xsZWN0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHIoTXV0YWJsZU1hcHBpbmcpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhTZXQsIENvbGxlY3Rpb24pLCByZXByKFNldCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKE11dGFibGVTZXQsIENvbGxlY3Rpb24pLCByZXByKE11dGFibGVTZXQpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhTZXF1ZW5jZSwgQ29sbGVjdGlvbiksIHJlcHIoTXV0YWJsZVNldCkpCisgICAgICAgICMgQ2hlY2sgZGlyZWN0IHN1YmNsYXNzaW5nCisgICAgICAgIGNsYXNzIENvbChDb2xsZWN0aW9uKToKKyAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gaXRlcihsaXN0KCkpCisgICAgICAgICAgICBkZWYgX19sZW5fXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gMAorICAgICAgICAgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBpdGVtKToKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgY2xhc3MgRGVyQ29sKENvbCk6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGl0ZXIoQ29sKCkpKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhsaXN0LCBDb2wpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3Moc2V0LCBDb2wpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoZmxvYXQsIENvbCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpdGVyKERlckNvbCgpKSksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MobGlzdCwgRGVyQ29sKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKHNldCwgRGVyQ29sKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKGZsb2F0LCBEZXJDb2wpKQorICAgICAgICBzZWxmLnZhbGlkYXRlX2Fic3RyYWN0X21ldGhvZHMoQ29sbGVjdGlvbiwgJ19fbGVuX18nLCAnX19pdGVyX18nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19fY29udGFpbnNfXycpCisgICAgICAgICMgQ2hlY2sgc2l6ZWQgY29udGFpbmVyIG5vbi1pdGVyYWJsZSAod2hpY2ggaXMgbm90IENvbGxlY3Rpb24pIGV0Yy4KKyAgICAgICAgY2xhc3MgQ29sTm9JdGVyOgorICAgICAgICAgICAgZGVmIF9fbGVuX18oc2VsZik6IHJldHVybiAwCisgICAgICAgICAgICBkZWYgX19jb250YWluc19fKHNlbGYsIGl0ZW0pOiByZXR1cm4gRmFsc2UKKyAgICAgICAgY2xhc3MgQ29sTm9TaXplOgorICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOiByZXR1cm4gaXRlcihbXSkKKyAgICAgICAgICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgaXRlbSk6IHJldHVybiBGYWxzZQorICAgICAgICBjbGFzcyBDb2xOb0NvbnQ6CisgICAgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6IHJldHVybiBpdGVyKFtdKQorICAgICAgICAgICAgZGVmIF9fbGVuX18oc2VsZik6IHJldHVybiAwCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhDb2xOb0l0ZXIsIENvbGxlY3Rpb24pKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzaW5zdGFuY2UoQ29sTm9JdGVyKCksIENvbGxlY3Rpb24pKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoQ29sTm9TaXplLCBDb2xsZWN0aW9uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc2luc3RhbmNlKENvbE5vU2l6ZSgpLCBDb2xsZWN0aW9uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKENvbE5vQ29udCwgQ29sbGVjdGlvbikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNpbnN0YW5jZShDb2xOb0NvbnQoKSwgQ29sbGVjdGlvbikpCisgICAgICAgICMgQ2hlY2sgTm9uZSBibG9ja2luZworICAgICAgICBjbGFzcyBTaXplQmxvY2s6CisgICAgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6IHJldHVybiBpdGVyKFtdKQorICAgICAgICAgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmKTogcmV0dXJuIEZhbHNlCisgICAgICAgICAgICBfX2xlbl9fID0gTm9uZQorICAgICAgICBjbGFzcyBJdGVyQmxvY2s6CisgICAgICAgICAgICBkZWYgX19sZW5fXyhzZWxmKTogcmV0dXJuIDAKKyAgICAgICAgICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZik6IHJldHVybiBUcnVlCisgICAgICAgICAgICBfX2l0ZXJfXyA9IE5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKFNpemVCbG9jaywgQ29sbGVjdGlvbikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNpbnN0YW5jZShTaXplQmxvY2soKSwgQ29sbGVjdGlvbikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhJdGVyQmxvY2ssIENvbGxlY3Rpb24pKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzaW5zdGFuY2UoSXRlckJsb2NrKCksIENvbGxlY3Rpb24pKQorICAgICAgICAjIENoZWNrIE5vbmUgYmxvY2tpbmcgaW4gc3ViY2xhc3MKKyAgICAgICAgY2xhc3MgQ29sSW1wbDoKKyAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gaXRlcihsaXN0KCkpCisgICAgICAgICAgICBkZWYgX19sZW5fXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gMAorICAgICAgICAgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBpdGVtKToKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgY2xhc3MgTm9uQ29sKENvbEltcGwpOgorICAgICAgICAgICAgX19jb250YWluc19fID0gTm9uZQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoTm9uQ29sLCBDb2xsZWN0aW9uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc2luc3RhbmNlKE5vbkNvbCgpLCBDb2xsZWN0aW9uKSkKKwogCiAgICAgZGVmIHRlc3RfSXRlcmF0b3Ioc2VsZik6CiAgICAgICAgIG5vbl9zYW1wbGVzID0gW05vbmUsIDQyLCAzLjE0LCAxaiwgYiIiLCAiIiwgKCksIFtdLCB7fSwgc2V0KCldCkBAIC02OTksNyArODc0LDcgQEAKICAgICAgICAgICAgICAgICAgICBpdGVyKHNldCgpKSwgaXRlcihmcm96ZW5zZXQoKSksCiAgICAgICAgICAgICAgICAgICAgaXRlcihkaWN0KCkua2V5cygpKSwgaXRlcihkaWN0KCkuaXRlbXMoKSksCiAgICAgICAgICAgICAgICAgICAgaXRlcihkaWN0KCkudmFsdWVzKCkpLAotICAgICAgICAgICAgICAgICAgIChsYW1iZGE6ICh5aWVsZCkpKCksCisgICAgICAgICAgICAgICAgICAgX3Rlc3RfZ2VuKCksCiAgICAgICAgICAgICAgICAgICAgKHggZm9yIHggaW4gW10pLAogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgZm9yIHggaW4gc2FtcGxlczoKQEAgLTc4NSw5ICs5NjAsOTAgQEAKIAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIElnbm9yZUdlbmVyYXRvckV4aXQoKS5jbG9zZSkKIAorICAgIGRlZiB0ZXN0X0FzeW5jR2VuZXJhdG9yKHNlbGYpOgorICAgICAgICBjbGFzcyBOb25BR2VuMToKKyAgICAgICAgICAgIGRlZiBfX2FpdGVyX18oc2VsZik6IHJldHVybiBzZWxmCisgICAgICAgICAgICBkZWYgX19hbmV4dF9fKHNlbGYpOiByZXR1cm4gTm9uZQorICAgICAgICAgICAgZGVmIGFjbG9zZShzZWxmKTogcGFzcworICAgICAgICAgICAgZGVmIGF0aHJvdyhzZWxmLCB0eXAsIHZhbD1Ob25lLCB0Yj1Ob25lKTogcGFzcworCisgICAgICAgIGNsYXNzIE5vbkFHZW4yOgorICAgICAgICAgICAgZGVmIF9fYWl0ZXJfXyhzZWxmKTogcmV0dXJuIHNlbGYKKyAgICAgICAgICAgIGRlZiBfX2FuZXh0X18oc2VsZik6IHJldHVybiBOb25lCisgICAgICAgICAgICBkZWYgYWNsb3NlKHNlbGYpOiBwYXNzCisgICAgICAgICAgICBkZWYgYXNlbmQoc2VsZiwgdmFsdWUpOiByZXR1cm4gdmFsdWUKKworICAgICAgICBjbGFzcyBOb25BR2VuMzoKKyAgICAgICAgICAgIGRlZiBhY2xvc2Uoc2VsZik6IHBhc3MKKyAgICAgICAgICAgIGRlZiBhc2VuZChzZWxmLCB2YWx1ZSk6IHJldHVybiB2YWx1ZQorICAgICAgICAgICAgZGVmIGF0aHJvdyhzZWxmLCB0eXAsIHZhbD1Ob25lLCB0Yj1Ob25lKTogcGFzcworCisgICAgICAgIG5vbl9zYW1wbGVzID0gWworICAgICAgICAgICAgTm9uZSwgNDIsIDMuMTQsIDFqLCBiIiIsICIiLCAoKSwgW10sIHt9LCBzZXQoKSwKKyAgICAgICAgICAgIGl0ZXIoKCkpLCBpdGVyKFtdKSwgTm9uQUdlbjEoKSwgTm9uQUdlbjIoKSwgTm9uQUdlbjMoKV0KKyAgICAgICAgZm9yIHggaW4gbm9uX3NhbXBsZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UoeCwgQXN5bmNHZW5lcmF0b3IpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3ModHlwZSh4KSwgQXN5bmNHZW5lcmF0b3IpLCByZXByKHR5cGUoeCkpKQorCisgICAgICAgIGNsYXNzIEdlbjoKKyAgICAgICAgICAgIGRlZiBfX2FpdGVyX18oc2VsZik6IHJldHVybiBzZWxmCisgICAgICAgICAgICBhc3luYyBkZWYgX19hbmV4dF9fKHNlbGYpOiByZXR1cm4gTm9uZQorICAgICAgICAgICAgYXN5bmMgZGVmIGFjbG9zZShzZWxmKTogcGFzcworICAgICAgICAgICAgYXN5bmMgZGVmIGFzZW5kKHNlbGYsIHZhbHVlKTogcmV0dXJuIHZhbHVlCisgICAgICAgICAgICBhc3luYyBkZWYgYXRocm93KHNlbGYsIHR5cCwgdmFsPU5vbmUsIHRiPU5vbmUpOiBwYXNzCisKKyAgICAgICAgY2xhc3MgTWluaW1hbEFHZW4oQXN5bmNHZW5lcmF0b3IpOgorICAgICAgICAgICAgYXN5bmMgZGVmIGFzZW5kKHNlbGYsIHZhbHVlKToKKyAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUKKyAgICAgICAgICAgIGFzeW5jIGRlZiBhdGhyb3coc2VsZiwgdHlwLCB2YWw9Tm9uZSwgdGI9Tm9uZSk6CisgICAgICAgICAgICAgICAgYXdhaXQgc3VwZXIoKS5hdGhyb3codHlwLCB2YWwsIHRiKQorCisgICAgICAgIGFzeW5jIGRlZiBnZW4oKToKKyAgICAgICAgICAgIHlpZWxkIDEKKworICAgICAgICBzYW1wbGVzID0gW2dlbigpLCBHZW4oKSwgTWluaW1hbEFHZW4oKV0KKyAgICAgICAgZm9yIHggaW4gc2FtcGxlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh4LCBBc3luY0l0ZXJhdG9yKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHgsIEFzeW5jR2VuZXJhdG9yKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3ModHlwZSh4KSwgQXN5bmNHZW5lcmF0b3IpLCByZXByKHR5cGUoeCkpKQorICAgICAgICBzZWxmLnZhbGlkYXRlX2Fic3RyYWN0X21ldGhvZHMoQXN5bmNHZW5lcmF0b3IsICdhc2VuZCcsICdhdGhyb3cnKQorCisgICAgICAgIGRlZiBydW5fYXN5bmMoY29ybyk6CisgICAgICAgICAgICByZXN1bHQgPSBOb25lCisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgY29yby5zZW5kKE5vbmUpCisgICAgICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb24gYXMgZXg6CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGV4LmFyZ3NbMF0gaWYgZXguYXJncyBlbHNlIE5vbmUKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQKKworICAgICAgICAjIG1peGluIHRlc3RzCisgICAgICAgIG1nZW4gPSBNaW5pbWFsQUdlbigpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobWdlbiwgbWdlbi5fX2FpdGVyX18oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhydW5fYXN5bmMobWdlbi5hc2VuZChOb25lKSksIHJ1bl9hc3luYyhtZ2VuLl9fYW5leHRfXygpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBydW5fYXN5bmMobWdlbi5hc2VuZCgyKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJ1bl9hc3luYyhtZ2VuLmFjbG9zZSgpKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHJ1bl9hc3luYyhtZ2VuLmF0aHJvdyhWYWx1ZUVycm9yKSkKKworICAgICAgICBjbGFzcyBGYWlsT25DbG9zZShBc3luY0dlbmVyYXRvcik6CisgICAgICAgICAgICBhc3luYyBkZWYgYXNlbmQoc2VsZiwgdmFsdWUpOiByZXR1cm4gdmFsdWUKKyAgICAgICAgICAgIGFzeW5jIGRlZiBhdGhyb3coc2VsZiwgKmFyZ3MpOiByYWlzZSBWYWx1ZUVycm9yCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHJ1bl9hc3luYyhGYWlsT25DbG9zZSgpLmFjbG9zZSgpKQorCisgICAgICAgIGNsYXNzIElnbm9yZUdlbmVyYXRvckV4aXQoQXN5bmNHZW5lcmF0b3IpOgorICAgICAgICAgICAgYXN5bmMgZGVmIGFzZW5kKHNlbGYsIHZhbHVlKTogcmV0dXJuIHZhbHVlCisgICAgICAgICAgICBhc3luYyBkZWYgYXRocm93KHNlbGYsICphcmdzKTogcGFzcworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKKyAgICAgICAgICAgIHJ1bl9hc3luYyhJZ25vcmVHZW5lcmF0b3JFeGl0KCkuYWNsb3NlKCkpCisKICAgICBkZWYgdGVzdF9TaXplZChzZWxmKToKICAgICAgICAgbm9uX3NhbXBsZXMgPSBbTm9uZSwgNDIsIDMuMTQsIDFqLAotICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhOiAoeWllbGQpKSgpLAorICAgICAgICAgICAgICAgICAgICAgICBfdGVzdF9nZW4oKSwKICAgICAgICAgICAgICAgICAgICAgICAgKHggZm9yIHggaW4gW10pLAogICAgICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgIGZvciB4IGluIG5vbl9zYW1wbGVzOgpAQCAtODA1LDcgKzEwNjEsNyBAQAogCiAgICAgZGVmIHRlc3RfQ29udGFpbmVyKHNlbGYpOgogICAgICAgICBub25fc2FtcGxlcyA9IFtOb25lLCA0MiwgMy4xNCwgMWosCi0gICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGE6ICh5aWVsZCkpKCksCisgICAgICAgICAgICAgICAgICAgICAgIF90ZXN0X2dlbigpLAogICAgICAgICAgICAgICAgICAgICAgICAoeCBmb3IgeCBpbiBbXSksCiAgICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgZm9yIHggaW4gbm9uX3NhbXBsZXM6CkBAIC04MjQsNyArMTA4MCw3IEBACiAgICAgZGVmIHRlc3RfQ2FsbGFibGUoc2VsZik6CiAgICAgICAgIG5vbl9zYW1wbGVzID0gW05vbmUsIDQyLCAzLjE0LCAxaiwKICAgICAgICAgICAgICAgICAgICAgICAgIiIsIGIiIiwgKCksIFtdLCB7fSwgc2V0KCksCi0gICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGE6ICh5aWVsZCkpKCksCisgICAgICAgICAgICAgICAgICAgICAgIF90ZXN0X2dlbigpLAogICAgICAgICAgICAgICAgICAgICAgICAoeCBmb3IgeCBpbiBbXSksCiAgICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgZm9yIHggaW4gbm9uX3NhbXBsZXM6CkBAIC04NDIsMTQgKzEwOTgsMTQgQEAKICAgICAgICAgc2VsZi52YWxpZGF0ZV9pc2luc3RhbmNlKENhbGxhYmxlLCAnX19jYWxsX18nKQogCiAgICAgZGVmIHRlc3RfZGlyZWN0X3N1YmNsYXNzaW5nKHNlbGYpOgotICAgICAgICBmb3IgQiBpbiBIYXNoYWJsZSwgSXRlcmFibGUsIEl0ZXJhdG9yLCBTaXplZCwgQ29udGFpbmVyLCBDYWxsYWJsZToKKyAgICAgICAgZm9yIEIgaW4gSGFzaGFibGUsIEl0ZXJhYmxlLCBJdGVyYXRvciwgUmV2ZXJzaWJsZSwgU2l6ZWQsIENvbnRhaW5lciwgQ2FsbGFibGU6CiAgICAgICAgICAgICBjbGFzcyBDKEIpOgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKEMsIEIpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKGludCwgQykpCiAKICAgICBkZWYgdGVzdF9yZWdpc3RyYXRpb24oc2VsZik6Ci0gICAgICAgIGZvciBCIGluIEhhc2hhYmxlLCBJdGVyYWJsZSwgSXRlcmF0b3IsIFNpemVkLCBDb250YWluZXIsIENhbGxhYmxlOgorICAgICAgICBmb3IgQiBpbiBIYXNoYWJsZSwgSXRlcmFibGUsIEl0ZXJhdG9yLCBSZXZlcnNpYmxlLCBTaXplZCwgQ29udGFpbmVyLCBDYWxsYWJsZToKICAgICAgICAgICAgIGNsYXNzIEM6CiAgICAgICAgICAgICAgICAgX19oYXNoX18gPSBOb25lICAjIE1ha2Ugc3VyZSBpdCBpc24ndCBoYXNoYWJsZSBieSBkZWZhdWx0CiAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoQywgQiksIEIuX19uYW1lX18pCkBAIC0xMDQ5LDYgKzEzMDUsMjYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShuY3MgPiBjcykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5jcyA+PSBjcykKIAorICAgIGRlZiB0ZXN0X2lzc3VlMjY5MTUoc2VsZik6CisgICAgICAgICMgQ29udGFpbmVyIG1lbWJlcnNoaXAgdGVzdCBzaG91bGQgY2hlY2sgaWRlbnRpdHkgZmlyc3QKKyAgICAgICAgY2xhc3MgQ3VzdG9tRXF1YWxPYmplY3Q6CisgICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgY2xhc3MgQ3VzdG9tU2VxdWVuY2UobGlzdCk6CisgICAgICAgICAgICBkZWYgX19jb250YWluc19fKHNlbGYsIHZhbHVlKToKKyAgICAgICAgICAgICAgICByZXR1cm4gU2VxdWVuY2UuX19jb250YWluc19fKHNlbGYsIHZhbHVlKQorCisgICAgICAgIG5hbiA9IGZsb2F0KCduYW4nKQorICAgICAgICBvYmogPSBDdXN0b21FcXVhbE9iamVjdCgpCisgICAgICAgIGNvbnRhaW5lcnMgPSBbCisgICAgICAgICAgICBDdXN0b21TZXF1ZW5jZShbbmFuLCBvYmpdKSwKKyAgICAgICAgICAgIEl0ZW1zVmlldyh7MTogbmFuLCAyOiBvYmp9KSwKKyAgICAgICAgICAgIFZhbHVlc1ZpZXcoezE6IG5hbiwgMjogb2JqfSkKKyAgICAgICAgXQorICAgICAgICBmb3IgY29udGFpbmVyIGluIGNvbnRhaW5lcnM6CisgICAgICAgICAgICBmb3IgZWxlbSBpbiBjb250YWluZXI6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlbGVtLCBjb250YWluZXIpCisKICAgICBkZWYgYXNzZXJ0U2FtZVNldChzZWxmLCBzMSwgczIpOgogICAgICAgICAjIGNvZXJjZSBib3RoIHRvIGEgcmVhbCBzZXQgdGhlbiBjaGVjayBlcXVhbGl0eQogICAgICAgICBzZWxmLmFzc2VydFNldEVxdWFsKHNldChzMSksIHNldChzMikpCkBAIC0xMjE5LDYgKzE0OTUsNyBAQAogICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgogICAgICAgICAgICAgICAgIHJldHVybiBpdGVyKCgpKQogICAgICAgICBzZWxmLnZhbGlkYXRlX2NvbXBhcmlzb24oTXlNYXBwaW5nKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcmV2ZXJzZWQsIE15TWFwcGluZygpKQogCiAgICAgZGVmIHRlc3RfTXV0YWJsZU1hcHBpbmcoc2VsZik6CiAgICAgICAgIGZvciBzYW1wbGUgaW4gW2RpY3RdOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb21waWxlLnB5IGIvTGliL3Rlc3QvdGVzdF9jb21waWxlLnB5CmluZGV4IDgyNGU4NDMuLjQwOWVjODYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29tcGlsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbXBpbGUucHkKQEAgLTQ3MywxMCArNDczLDEzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgezE6IDIsIDM6IDR9KQogCiAgICAgZGVmIHRlc3RfY29tcGlsZV9maWxlbmFtZShzZWxmKToKLSAgICAgICAgZm9yIGZpbGVuYW1lIGluICgnZmlsZS5weScsIGInZmlsZS5weScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZWFycmF5KGInZmlsZS5weScpLCBtZW1vcnl2aWV3KGInZmlsZS5weScpKToKKyAgICAgICAgZm9yIGZpbGVuYW1lIGluICdmaWxlLnB5JywgYidmaWxlLnB5JzoKICAgICAgICAgICAgIGNvZGUgPSBjb21waWxlKCdwYXNzJywgZmlsZW5hbWUsICdleGVjJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZS5jb19maWxlbmFtZSwgJ2ZpbGUucHknKQorICAgICAgICBmb3IgZmlsZW5hbWUgaW4gYnl0ZWFycmF5KGInZmlsZS5weScpLCBtZW1vcnl2aWV3KGInZmlsZS5weScpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICAgICAgY29kZSA9IGNvbXBpbGUoJ3Bhc3MnLCBmaWxlbmFtZSwgJ2V4ZWMnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlLmNvX2ZpbGVuYW1lLCAnZmlsZS5weScpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29tcGlsZSwgJ3Bhc3MnLCBsaXN0KGInZmlsZS5weScpLCAnZXhlYycpCiAKICAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKQEAgLTY2MSw2ICs2NjQsMTYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGYxKDApKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoZjIoMC4wKSkKIAorICAgIGRlZiB0ZXN0X3BhdGhfbGlrZV9vYmplY3RzKHNlbGYpOgorICAgICAgICAjIEFuIGltcGxpY2l0IHRlc3QgZm9yIFB5VW5pY29kZV9GU0RlY29kZXIoKS4KKyAgICAgICAgY2xhc3MgUGF0aExpa2U6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCk6CisgICAgICAgICAgICAgICAgc2VsZi5fcGF0aCA9IHBhdGgKKyAgICAgICAgICAgIGRlZiBfX2ZzcGF0aF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9wYXRoCisKKyAgICAgICAgY29tcGlsZSgiNDIiLCBQYXRoTGlrZSgidGVzdF9jb21waWxlX3BhdGhsaWtlIiksICJzaW5nbGUiKQorCiAKIGNsYXNzIFRlc3RTdGFja1NpemUodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICMgVGhlc2UgdGVzdHMgY2hlY2sgdGhhdCB0aGUgY29tcHV0ZWQgc3RhY2sgc2l6ZSBmb3IgYSBjb2RlIG9iamVjdApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb21waWxlYWxsLnB5IGIvTGliL3Rlc3QvdGVzdF9jb21waWxlYWxsLnB5CmluZGV4IDJjZThhNjEuLjIzNTZlZmMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29tcGlsZWFsbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbXBpbGVhbGwucHkKQEAgLTEsNiArMSw3IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgY29tcGlsZWFsbAogaW1wb3J0IGltcG9ydGxpYi51dGlsCitpbXBvcnQgdGVzdC50ZXN0X2ltcG9ydGxpYi51dGlsCiBpbXBvcnQgb3MKIGltcG9ydCBwYXRobGliCiBpbXBvcnQgcHlfY29tcGlsZQpAQCAtNDAsNiArNDEsMTEgQEAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHNodXRpbC5ybXRyZWUoc2VsZi5kaXJlY3RvcnkpCiAKKyAgICBkZWYgYWRkX2JhZF9zb3VyY2VfZmlsZShzZWxmKToKKyAgICAgICAgc2VsZi5iYWRfc291cmNlX3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5kaXJlY3RvcnksICdfdGVzdF9iYWQucHknKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5iYWRfc291cmNlX3BhdGgsICd3JykgYXMgZmlsZToKKyAgICAgICAgICAgIGZpbGUud3JpdGUoJ3ggKFxuJykKKwogICAgIGRlZiBkYXRhKHNlbGYpOgogICAgICAgICB3aXRoIG9wZW4oc2VsZi5iY19wYXRoLCAncmInKSBhcyBmaWxlOgogICAgICAgICAgICAgZGF0YSA9IGZpbGUucmVhZCg4KQpAQCAtNzgsMTUgKzg0LDQ3IEBACiAgICAgICAgICAgICAgICAgb3MudW5saW5rKGZuKQogICAgICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgY29tcGlsZWFsbC5jb21waWxlX2ZpbGUoc2VsZi5zb3VyY2VfcGF0aCwgZm9yY2U9RmFsc2UsIHF1aWV0PVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb21waWxlYWxsLmNvbXBpbGVfZmlsZShzZWxmLnNvdXJjZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yY2U9RmFsc2UsIHF1aWV0PVRydWUpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUoc2VsZi5iY19wYXRoKSBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBvcy5wYXRoLmlzZmlsZShzZWxmLmJjX3BhdGgyKSkKICAgICAgICAgb3MudW5saW5rKHNlbGYuYmNfcGF0aCkKLSAgICAgICAgY29tcGlsZWFsbC5jb21waWxlX2RpcihzZWxmLmRpcmVjdG9yeSwgZm9yY2U9RmFsc2UsIHF1aWV0PVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb21waWxlYWxsLmNvbXBpbGVfZGlyKHNlbGYuZGlyZWN0b3J5LCBmb3JjZT1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVpZXQ9VHJ1ZSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShzZWxmLmJjX3BhdGgpIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5pc2ZpbGUoc2VsZi5iY19wYXRoMikpCiAgICAgICAgIG9zLnVubGluayhzZWxmLmJjX3BhdGgpCiAgICAgICAgIG9zLnVubGluayhzZWxmLmJjX3BhdGgyKQorICAgICAgICAjIFRlc3QgYWdhaW5zdCBiYWQgZmlsZXMKKyAgICAgICAgc2VsZi5hZGRfYmFkX3NvdXJjZV9maWxlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjb21waWxlYWxsLmNvbXBpbGVfZmlsZShzZWxmLmJhZF9zb3VyY2VfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JjZT1GYWxzZSwgcXVpZXQ9MikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY29tcGlsZWFsbC5jb21waWxlX2RpcihzZWxmLmRpcmVjdG9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlPUZhbHNlLCBxdWlldD0yKSkKKworICAgIGRlZiB0ZXN0X2NvbXBpbGVfZmlsZV9wYXRobGlrZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmlzZmlsZShzZWxmLmJjX3BhdGgpKQorICAgICAgICAjIHdlIHNob3VsZCBhbHNvIHRlc3QgdGhlIG91dHB1dAorICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgc3Rkb3V0OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvbXBpbGVhbGwuY29tcGlsZV9maWxlKHBhdGhsaWIuUGF0aChzZWxmLnNvdXJjZV9wYXRoKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoc3Rkb3V0LmdldHZhbHVlKCksIHInQ29tcGlsaW5nIChbXldpbmRvd3NQYXRofFBvc2l4UGF0aF0uKiknKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUoc2VsZi5iY19wYXRoKSkKKworICAgIGRlZiB0ZXN0X2NvbXBpbGVfZmlsZV9wYXRobGlrZV9kZGlyKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguaXNmaWxlKHNlbGYuYmNfcGF0aCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb21waWxlYWxsLmNvbXBpbGVfZmlsZShwYXRobGliLlBhdGgoc2VsZi5zb3VyY2VfcGF0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZGlyPXBhdGhsaWIuUGF0aCgnZGRpcl9wYXRoJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWlldD0yKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKHNlbGYuYmNfcGF0aCkpCisKKyAgICBkZWYgdGVzdF9jb21waWxlX3BhdGgoc2VsZik6CisgICAgICAgIHdpdGggdGVzdC50ZXN0X2ltcG9ydGxpYi51dGlsLmltcG9ydF9zdGF0ZShwYXRoPVtzZWxmLmRpcmVjdG9yeV0pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvbXBpbGVhbGwuY29tcGlsZV9wYXRoKHF1aWV0PTIpKQorCisgICAgICAgIHdpdGggdGVzdC50ZXN0X2ltcG9ydGxpYi51dGlsLmltcG9ydF9zdGF0ZShwYXRoPVtzZWxmLmRpcmVjdG9yeV0pOgorICAgICAgICAgICAgc2VsZi5hZGRfYmFkX3NvdXJjZV9maWxlKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY29tcGlsZWFsbC5jb21waWxlX3BhdGgoc2tpcF9jdXJkaXI9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlPVRydWUsIHF1aWV0PTIpKQogCiAgICAgZGVmIHRlc3Rfbm9fcHljYWNoZV9pbl9ub25fcGFja2FnZShzZWxmKToKICAgICAgICAgIyBCdWcgODU2MyByZXBvcnRlZCB0aGF0IF9fcHljYWNoZV9fIGRpcmVjdG9yaWVzIGdvdCBjcmVhdGVkIGJ5CkBAIC0xMTUsNiArMTUzLDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpbWl6YXRpb249b3B0KQogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUoY2FjaGVkMykpCiAKKyAgICBkZWYgdGVzdF9jb21waWxlX2Rpcl9wYXRobGlrZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmlzZmlsZShzZWxmLmJjX3BhdGgpKQorICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgc3Rkb3V0OgorICAgICAgICAgICAgY29tcGlsZWFsbC5jb21waWxlX2RpcihwYXRobGliLlBhdGgoc2VsZi5kaXJlY3RvcnkpKQorICAgICAgICBsaW5lID0gc3Rkb3V0LmdldHZhbHVlKCkuc3BsaXRsaW5lcygpWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgobGluZSwgcidMaXN0aW5nIChbXldpbmRvd3NQYXRofFBvc2l4UGF0aF0uKiknKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUoc2VsZi5iY19wYXRoKSkKKwogICAgIEBtb2NrLnBhdGNoKCdjb21waWxlYWxsLlByb2Nlc3NQb29sRXhlY3V0b3InKQogICAgIGRlZiB0ZXN0X2NvbXBpbGVfcG9vbF9jYWxsZWQoc2VsZiwgcG9vbF9tb2NrKToKICAgICAgICAgY29tcGlsZWFsbC5jb21waWxlX2RpcihzZWxmLmRpcmVjdG9yeSwgcXVpZXQ9VHJ1ZSwgd29ya2Vycz01KQpAQCAtMTk3LDEwICsyNDMsOSBAQAogICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoJ25vdCBhbGwgZW50cmllcyBvbiBzeXMucGF0aCBhcmUgd3JpdGFibGUnKQogCiAgICAgZGVmIF9nZXRfcnVuX2FyZ3Moc2VsZiwgYXJncyk6Ci0gICAgICAgIGludGVycF9hcmdzID0gWyctUyddCi0gICAgICAgIGlmIHN5cy5mbGFncy5vcHRpbWl6ZToKLSAgICAgICAgICAgIGludGVycF9hcmdzLmFwcGVuZCh7MSA6ICctTycsIDIgOiAnLU9PJ31bc3lzLmZsYWdzLm9wdGltaXplXSkKLSAgICAgICAgcmV0dXJuIGludGVycF9hcmdzICsgWyctbScsICdjb21waWxlYWxsJ10gKyBsaXN0KGFyZ3MpCisgICAgICAgIHJldHVybiBbKnN1cHBvcnQub3B0aW1fYXJnc19mcm9tX2ludGVycHJldGVyX2ZsYWdzKCksCisgICAgICAgICAgICAgICAgJy1TJywgJy1tJywgJ2NvbXBpbGVhbGwnLAorICAgICAgICAgICAgICAgICphcmdzXQogCiAgICAgZGVmIGFzc2VydFJ1bk9LKHNlbGYsICphcmdzLCAqKmVudl92YXJzKToKICAgICAgICAgcmMsIG91dCwgZXJyID0gc2NyaXB0X2hlbHBlci5hc3NlcnRfcHl0aG9uX29rKApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb21wbGV4LnB5IGIvTGliL3Rlc3QvdGVzdF9jb21wbGV4LnB5CmluZGV4IDQwM2VlM2IuLmMyNDljYTcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29tcGxleC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbXBsZXgucHkKQEAgLTEsNSArMSw3IEBACiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorZnJvbSB0ZXN0LnRlc3RfZ3JhbW1hciBpbXBvcnQgKFZBTElEX1VOREVSU0NPUkVfTElURVJBTFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5WQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTKQogCiBmcm9tIHJhbmRvbSBpbXBvcnQgcmFuZG9tCiBmcm9tIG1hdGggaW1wb3J0IGF0YW4yLCBpc25hbiwgY29weXNpZ24KQEAgLTM4NSw2ICszODcsMTggQEAKICAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChjb21wbGV4KGNvbXBsZXgxKDFqKSksIDJqKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvbXBsZXgsIGNvbXBsZXgyKDFqKSkKIAorICAgIGRlZiB0ZXN0X3VuZGVyc2NvcmVzKHNlbGYpOgorICAgICAgICAjIGNoZWNrIHVuZGVyc2NvcmVzCisgICAgICAgIGZvciBsaXQgaW4gVkFMSURfVU5ERVJTQ09SRV9MSVRFUkFMUzoKKyAgICAgICAgICAgIGlmIG5vdCBhbnkoY2ggaW4gbGl0IGZvciBjaCBpbiAneFhvT2JCJyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV4KGxpdCksIGV2YWwobGl0KSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXgobGl0KSwgY29tcGxleChsaXQucmVwbGFjZSgnXycsICcnKSkpCisgICAgICAgIGZvciBsaXQgaW4gSU5WQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTOgorICAgICAgICAgICAgaWYgbGl0IGluICgnMF83JywgJzA5Xzk5Jyk6ICAjIG9jdGFscyBhcmUgbm90IHJlY29nbml6ZWQgaGVyZQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBub3QgYW55KGNoIGluIGxpdCBmb3IgY2ggaW4gJ3hYb09iQicpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvbXBsZXgsIGxpdCkKKwogICAgIGRlZiB0ZXN0X2hhc2goc2VsZik6CiAgICAgICAgIGZvciB4IGluIHJhbmdlKC0zMCwgMzApOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKHgpLCBoYXNoKGNvbXBsZXgoeCwgMCkpKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb25jdXJyZW50X2Z1dHVyZXMucHkgYi9MaWIvdGVzdC90ZXN0X2NvbmN1cnJlbnRfZnV0dXJlcy5weQppbmRleCA3NTEzODE1Li4yM2U5NWIyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvbmN1cnJlbnRfZnV0dXJlcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbmN1cnJlbnRfZnV0dXJlcy5weQpAQCAtMTU0LDYgKzE1NCwzMCBAQAogICAgICAgICBmb3IgdCBpbiB0aHJlYWRzOgogICAgICAgICAgICAgdC5qb2luKCkKIAorICAgIGRlZiB0ZXN0X3RocmVhZF9uYW1lc19hc3NpZ25lZChzZWxmKToKKyAgICAgICAgZXhlY3V0b3IgPSBmdXR1cmVzLlRocmVhZFBvb2xFeGVjdXRvcigKKyAgICAgICAgICAgIG1heF93b3JrZXJzPTUsIHRocmVhZF9uYW1lX3ByZWZpeD0nU3BlY2lhbFBvb2wnKQorICAgICAgICBleGVjdXRvci5tYXAoYWJzLCByYW5nZSgtNSwgNSkpCisgICAgICAgIHRocmVhZHMgPSBleGVjdXRvci5fdGhyZWFkcworICAgICAgICBkZWwgZXhlY3V0b3IKKworICAgICAgICBmb3IgdCBpbiB0aHJlYWRzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSZWdleCh0Lm5hbWUsIHInXlNwZWNpYWxQb29sX1swLTRdJCcpCisgICAgICAgICAgICB0LmpvaW4oKQorCisgICAgZGVmIHRlc3RfdGhyZWFkX25hbWVzX2RlZmF1bHQoc2VsZik6CisgICAgICAgIGV4ZWN1dG9yID0gZnV0dXJlcy5UaHJlYWRQb29sRXhlY3V0b3IobWF4X3dvcmtlcnM9NSkKKyAgICAgICAgZXhlY3V0b3IubWFwKGFicywgcmFuZ2UoLTUsIDUpKQorICAgICAgICB0aHJlYWRzID0gZXhlY3V0b3IuX3RocmVhZHMKKyAgICAgICAgZGVsIGV4ZWN1dG9yCisKKyAgICAgICAgZm9yIHQgaW4gdGhyZWFkczoKKyAgICAgICAgICAgICMgV2UgZG9uJ3QgcGFydGljdWxhcmx5IGNhcmUgd2hhdCB0aGUgZGVmYXVsdCBuYW1lIGlzLCBqdXN0IHRoYXQKKyAgICAgICAgICAgICMgaXQgaGFzIGEgZGVmYXVsdCBuYW1lIGltcGx5aW5nIHRoYXQgaXQgaXMgYSBUaHJlYWRQb29sRXhlY3V0b3IKKyAgICAgICAgICAgICMgZm9sbG93ZWQgYnkgd2hhdCBsb29rcyBsaWtlIGEgdGhyZWFkIG51bWJlci4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgodC5uYW1lLCByJ14uKlRocmVhZFBvb2xFeGVjdXRvci4qX1swLTRdJCcpCisgICAgICAgICAgICB0LmpvaW4oKQorCiAKIGNsYXNzIFByb2Nlc3NQb29sU2h1dGRvd25UZXN0KFByb2Nlc3NQb29sTWl4aW4sIEV4ZWN1dG9yU2h1dGRvd25UZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIF9wcmltZV9leGVjdXRvcihzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29uZmlncGFyc2VyLnB5IGIvTGliL3Rlc3QvdGVzdF9jb25maWdwYXJzZXIucHkKaW5kZXggODY0YTFkMC4uMGQwNjA4MCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb25maWdwYXJzZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb25maWdwYXJzZXIucHkKQEAgLTIwNzYsNSArMjA3NiwxMSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZmdbJ3R3byddLmdldGxlbignb25lJyksIDUpCiAKIAorY2xhc3MgTWlzY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgIGJsYWNrbGlzdCA9IHsiRXJyb3IifQorICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCBjb25maWdwYXJzZXIsIGJsYWNrbGlzdD1ibGFja2xpc3QpCisKKwogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29udGFpbnMucHkgYi9MaWIvdGVzdC90ZXN0X2NvbnRhaW5zLnB5CmluZGV4IDNjNmJkZWYuLjAzNmExZDAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29udGFpbnMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb250YWlucy5weQpAQCAtODQsNiArODQsMzEgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb250YWluZXIgPT0gY29uc3RydWN0b3IodmFsdWVzKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb250YWluZXIgPT0gY29udGFpbmVyKQogCisgICAgZGVmIHRlc3RfYmxvY2tfZmFsbGJhY2soc2VsZik6CisgICAgICAgICMgYmxvY2tpbmcgZmFsbGJhY2sgd2l0aCBfX2NvbnRhaW5zX18gPSBOb25lCisgICAgICAgIGNsYXNzIEJ5Q29udGFpbnMob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBjID0gQnlDb250YWlucygpCisgICAgICAgIGNsYXNzIEJsb2NrQ29udGFpbnMoQnlDb250YWlucyk6CisgICAgICAgICAgICAiIiJJcyBub3QgYSBjb250YWluZXIKKworICAgICAgICAgICAgVGhpcyBjbGFzcyBpcyBhIHBlcmZlY3RseSBnb29kIGl0ZXJhYmxlIChhcyB0ZXN0ZWQgYnkKKyAgICAgICAgICAgIGxpc3QoYmMpKSwgYXMgd2VsbCBhcyBpbmhlcml0aW5nIGZyb20gYSBwZXJmZWN0bHkgZ29vZAorICAgICAgICAgICAgY29udGFpbmVyLCBidXQgX19jb250YWluc19fID0gTm9uZSBwcmV2ZW50cyB0aGUgdXN1YWwKKyAgICAgICAgICAgIGZhbGxiYWNrIHRvIGl0ZXJhdGlvbiBpbiB0aGUgY29udGFpbmVyIHByb3RvY29sLiBUaGF0CisgICAgICAgICAgICBpcywgbm9ybWFsbHksIDAgaW4gYmMgd291bGQgZmFsbCBiYWNrIHRvIHRoZSBlcXVpdmFsZW50CisgICAgICAgICAgICBvZiBhbnkoeD09MCBmb3IgeCBpbiBiYyksIGJ1dCBoZXJlIGl0J3MgYmxvY2tlZCBmcm9tCisgICAgICAgICAgICBkb2luZyBzby4KKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHdoaWxlIEZhbHNlOgorICAgICAgICAgICAgICAgICAgICB5aWVsZCBOb25lCisgICAgICAgICAgICBfX2NvbnRhaW5zX18gPSBOb25lCisgICAgICAgIGJjID0gQmxvY2tDb250YWlucygpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoMCBpbiBjKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKDAgaW4gbGlzdChiYykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiAwIGluIGJjKQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb250ZXh0bGliLnB5IGIvTGliL3Rlc3QvdGVzdF9jb250ZXh0bGliLnB5CmluZGV4IDUxNjQwM2UuLmMwNGM4MDQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29udGV4dGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbnRleHRsaWIucHkKQEAgLTEyLDYgKzEyLDM5IEBACiAgICAgdGhyZWFkaW5nID0gTm9uZQogCiAKK2NsYXNzIFRlc3RBYnN0cmFjdENvbnRleHRNYW5hZ2VyKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2VudGVyKHNlbGYpOgorICAgICAgICBjbGFzcyBEZWZhdWx0RW50ZXIoQWJzdHJhY3RDb250ZXh0TWFuYWdlcik6CisgICAgICAgICAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MpOgorICAgICAgICAgICAgICAgIHN1cGVyKCkuX19leGl0X18oKmFyZ3MpCisKKyAgICAgICAgbWFuYWdlciA9IERlZmF1bHRFbnRlcigpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobWFuYWdlci5fX2VudGVyX18oKSwgbWFuYWdlcikKKworICAgIGRlZiB0ZXN0X2V4aXRfaXNfYWJzdHJhY3Qoc2VsZik6CisgICAgICAgIGNsYXNzIE1pc3NpbmdFeGl0KEFic3RyYWN0Q29udGV4dE1hbmFnZXIpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIE1pc3NpbmdFeGl0KCkKKworICAgIGRlZiB0ZXN0X3N0cnVjdHVyYWxfc3ViY2xhc3Npbmcoc2VsZik6CisgICAgICAgIGNsYXNzIE1hbmFnZXJGcm9tU2NyYXRjaDoKKyAgICAgICAgICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKyAgICAgICAgICAgIGRlZiBfX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCB0cmFjZWJhY2spOgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoTWFuYWdlckZyb21TY3JhdGNoLCBBYnN0cmFjdENvbnRleHRNYW5hZ2VyKSkKKworICAgICAgICBjbGFzcyBEZWZhdWx0RW50ZXIoQWJzdHJhY3RDb250ZXh0TWFuYWdlcik6CisgICAgICAgICAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MpOgorICAgICAgICAgICAgICAgIHN1cGVyKCkuX19leGl0X18oKmFyZ3MpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoRGVmYXVsdEVudGVyLCBBYnN0cmFjdENvbnRleHRNYW5hZ2VyKSkKKworCiBjbGFzcyBDb250ZXh0TWFuYWdlclRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2NvbnRleHRtYW5hZ2VyX3BsYWluKHNlbGYpOgpAQCAtODksNyArMTIyLDcgQEAKICAgICAgICAgZGVmIHdvb2hvbygpOgogICAgICAgICAgICAgeWllbGQKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdG9wSXRlcmF0aW9uIik6CiAgICAgICAgICAgICAgICAgd2l0aCB3b29ob28oKToKICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc3RvcF9leGMKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29weS5weSBiL0xpYi90ZXN0L3Rlc3RfY29weS5weQppbmRleCAwZTFmNjcwLi40NWE2OTIwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvcHkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb3B5LnB5CkBAIC05OCw3ICs5OCw3IEBACiAgICAgICAgIHRlc3RzID0gW05vbmUsIC4uLiwgTm90SW1wbGVtZW50ZWQsCiAgICAgICAgICAgICAgICAgIDQyLCAyKioxMDAsIDMuMTQsIFRydWUsIEZhbHNlLCAxaiwKICAgICAgICAgICAgICAgICAgImhlbGxvIiwgImhlbGxvXHUxMjM0IiwgZi5fX2NvZGVfXywKLSAgICAgICAgICAgICAgICAgYiJ3b3JsZCIsIGJ5dGVzKHJhbmdlKDI1NikpLCByYW5nZSgxMCksCisgICAgICAgICAgICAgICAgIGIid29ybGQiLCBieXRlcyhyYW5nZSgyNTYpKSwgcmFuZ2UoMTApLCBzbGljZSgxLCAxMCwgMiksCiAgICAgICAgICAgICAgICAgIE5ld1N0eWxlLCBDbGFzc2ljLCBtYXgsIFdpdGhNZXRhY2xhc3NdCiAgICAgICAgIGZvciB4IGluIHRlc3RzOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhjb3B5LmNvcHkoeCksIHgpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Nvcm91dGluZXMucHkgYi9MaWIvdGVzdC90ZXN0X2Nvcm91dGluZXMucHkKaW5kZXggNGEzMjdiNS4uNzg0MzlhMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb3JvdXRpbmVzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29yb3V0aW5lcy5weQpAQCAtNjksNTUgKzY5LDEzMCBAQAogY2xhc3MgQXN5bmNCYWRTeW50YXhUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2JhZHN5bnRheF8xKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoU3ludGF4RXJyb3IsICInYXdhaXQnIG91dHNpZGUiKToKLSAgICAgICAgICAgIGltcG9ydCB0ZXN0LmJhZHN5bnRheF9hc3luYzEKLQotICAgIGRlZiB0ZXN0X2JhZHN5bnRheF8yKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoU3ludGF4RXJyb3IsICInYXdhaXQnIG91dHNpZGUiKToKLSAgICAgICAgICAgIGltcG9ydCB0ZXN0LmJhZHN5bnRheF9hc3luYzIKLQotICAgIGRlZiB0ZXN0X2JhZHN5bnRheF8zKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoU3ludGF4RXJyb3IsICdpbnZhbGlkIHN5bnRheCcpOgotICAgICAgICAgICAgaW1wb3J0IHRlc3QuYmFkc3ludGF4X2FzeW5jMwotCi0gICAgZGVmIHRlc3RfYmFkc3ludGF4XzQoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgJ2ludmFsaWQgc3ludGF4Jyk6Ci0gICAgICAgICAgICBpbXBvcnQgdGVzdC5iYWRzeW50YXhfYXN5bmM0Ci0KLSAgICBkZWYgdGVzdF9iYWRzeW50YXhfNShzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5bnRheEVycm9yLCAnaW52YWxpZCBzeW50YXgnKToKLSAgICAgICAgICAgIGltcG9ydCB0ZXN0LmJhZHN5bnRheF9hc3luYzUKLQotICAgIGRlZiB0ZXN0X2JhZHN5bnRheF82KHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCi0gICAgICAgICAgICBTeW50YXhFcnJvciwgIid5aWVsZCcgaW5zaWRlIGFzeW5jIGZ1bmN0aW9uIik6Ci0KLSAgICAgICAgICAgIGltcG9ydCB0ZXN0LmJhZHN5bnRheF9hc3luYzYKLQotICAgIGRlZiB0ZXN0X2JhZHN5bnRheF83KHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCi0gICAgICAgICAgICBTeW50YXhFcnJvciwgIid5aWVsZCBmcm9tJyBpbnNpZGUgYXN5bmMgZnVuY3Rpb24iKToKLQotICAgICAgICAgICAgaW1wb3J0IHRlc3QuYmFkc3ludGF4X2FzeW5jNwotCi0gICAgZGVmIHRlc3RfYmFkc3ludGF4Xzgoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgJ2ludmFsaWQgc3ludGF4Jyk6Ci0gICAgICAgICAgICBpbXBvcnQgdGVzdC5iYWRzeW50YXhfYXN5bmM4Ci0KLSAgICBkZWYgdGVzdF9iYWRzeW50YXhfOShzZWxmKToKLSAgICAgICAgbnMgPSB7fQotICAgICAgICBmb3IgY29tcCBpbiB7Jyhhd2FpdCBhIGZvciBhIGluIGIpJywKLSAgICAgICAgICAgICAgICAgICAgICdbYXdhaXQgYSBmb3IgYSBpbiBiXScsCi0gICAgICAgICAgICAgICAgICAgICAne2F3YWl0IGEgZm9yIGEgaW4gYn0nLAotICAgICAgICAgICAgICAgICAgICAgJ3thd2FpdCBhOiBjIGZvciBhIGluIGJ9J306Ci0KLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgJ2F3YWl0LippbiBjb21wcmVoZW4nKToKLSAgICAgICAgICAgICAgICBleGVjKCdhc3luYyBkZWYgZigpOlxuXHR7fScuZm9ybWF0KGNvbXApLCBucywgbnMpCi0KLSAgICBkZWYgdGVzdF9iYWRzeW50YXhfMTAoc2VsZik6Ci0gICAgICAgICMgVGVzdHMgZm9yIGlzc3VlIDI0NjE5Ci0KICAgICAgICAgc2FtcGxlcyA9IFsKKyAgICAgICAgICAgICIiImRlZiBmb28oKToKKyAgICAgICAgICAgICAgICBhd2FpdCBzb21ldGhpbmcoKQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhd2FpdCBzb21ldGhpbmcoKSIiIiwKKworICAgICAgICAgICAgIiIiYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gW10KKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgIGF3YWl0IGF3YWl0IGZ1dAorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKGE9YXdhaXQgc29tZXRoaW5nKCkpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiYXN5bmMgZGVmIGZvbyhhOmF3YWl0IHNvbWV0aGluZygpKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICBkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgIFtpIGFzeW5jIGZvciBpIGluIGVsc10KKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgIGRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgW2F3YWl0IGkgZm9yIGkgaW4gZWxzXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICBbaSBmb3IgaSBpbiBlbHMKKyAgICAgICAgICAgICAgICAgICAgYXN5bmMgZm9yIGIgaW4gZWxzXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICBbaSBmb3IgaSBpbiBlbHMKKyAgICAgICAgICAgICAgICAgICAgZm9yIGMgaW4gYgorICAgICAgICAgICAgICAgICAgICBhc3luYyBmb3IgYiBpbiBlbHNdCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICBkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgIFtpIGZvciBpIGluIGVscworICAgICAgICAgICAgICAgICAgICBhc3luYyBmb3IgYiBpbiBlbHMKKyAgICAgICAgICAgICAgICAgICAgZm9yIGMgaW4gYl0KKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgIGRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgW2kgZm9yIGkgaW4gZWxzCisgICAgICAgICAgICAgICAgICAgIGZvciBiIGluIGF3YWl0IGVsc10KKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgIGRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgW2kgZm9yIGkgaW4gZWxzCisgICAgICAgICAgICAgICAgICAgIGZvciBiIGluIGVscworICAgICAgICAgICAgICAgICAgICAgICAgaWYgYXdhaXQgYl0KKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgIGRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgW2kgZm9yIGkgaW4gYXdhaXQgZWxzXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICBbaSBmb3IgaSBpbiBlbHMgaWYgYXdhaXQgaV0KKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICBbaSBhc3luYyBmb3IgaSBpbiBlbHNdCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgW2F3YWl0IGkgZm9yIGkgaW4gZWxzXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgIFtpIGZvciBpIGluIGVscworICAgICAgICAgICAgICAgICAgICBhc3luYyBmb3IgYiBpbiBlbHNdCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgW2kgZm9yIGkgaW4gZWxzCisgICAgICAgICAgICAgICAgICAgIGZvciBjIGluIGIKKyAgICAgICAgICAgICAgICAgICAgYXN5bmMgZm9yIGIgaW4gZWxzXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgIFtpIGZvciBpIGluIGVscworICAgICAgICAgICAgICAgICAgICBhc3luYyBmb3IgYiBpbiBlbHMKKyAgICAgICAgICAgICAgICAgICAgZm9yIGMgaW4gYl0KKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICBbaSBmb3IgaSBpbiBlbHMKKyAgICAgICAgICAgICAgICAgICAgZm9yIGIgaW4gYXdhaXQgZWxzXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgIFtpIGZvciBpIGluIGVscworICAgICAgICAgICAgICAgICAgICBmb3IgYiBpbiBlbHMKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGF3YWl0IGJdCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgW2kgZm9yIGkgaW4gYXdhaXQgZWxzXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgIFtpIGZvciBpIGluIGVscyBpZiBhd2FpdCBpXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgYXdhaXQKKyAgICAgICAgICAgICIiIiwKKwogICAgICAgICAgICAgIiIiYXN5bmMgZGVmIGZvbygpOgogICAgICAgICAgICAgICAgICAgIGRlZiBiYXIoKTogcGFzcwogICAgICAgICAgICAgICAgICAgIGF3YWl0ID0gMQpAQCAtMjgzLDU3ICszNTgsMTEwIEBACiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChjb2RlPWNvZGUpLCBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvcik6CiAgICAgICAgICAgICAgICAgY29tcGlsZShjb2RlLCAiPHRlc3Q+IiwgImV4ZWMiKQogCisgICAgZGVmIHRlc3RfYmFkc3ludGF4XzIoc2VsZik6CisgICAgICAgIHNhbXBsZXMgPSBbCisgICAgICAgICAgICAiIiJkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgYXdhaXQgPSAxCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImNsYXNzIEJhcjoKKyAgICAgICAgICAgICAgICBkZWYgYXN5bmMoKTogcGFzcworICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJjbGFzcyBCYXI6CisgICAgICAgICAgICAgICAgYXN5bmMgPSAxCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImNsYXNzIGFzeW5jOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiY2xhc3MgYXdhaXQ6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJpbXBvcnQgbWF0aCBhcyBhd2FpdCIiIiwKKworICAgICAgICAgICAgIiIiZGVmIGFzeW5jKCk6CisgICAgICAgICAgICAgICAgcGFzcyIiIiwKKworICAgICAgICAgICAgIiIiZGVmIGZvbygqLCBhd2FpdD0xKToKKyAgICAgICAgICAgICAgICBwYXNzIiIiCisKKyAgICAgICAgICAgICIiImFzeW5jID0gMSIiIiwKKworICAgICAgICAgICAgIiIicHJpbnQoYXdhaXQ9MSkiIiIKKyAgICAgICAgXQorCisgICAgICAgIGZvciBjb2RlIGluIHNhbXBsZXM6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChjb2RlPWNvZGUpLCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoCisgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgIidhd2FpdCcgd2lsbCBiZWNvbWUgcmVzZXJ2ZWQga2V5d29yZHMiKToKKyAgICAgICAgICAgICAgICBjb21waWxlKGNvZGUsICI8dGVzdD4iLCAiZXhlYyIpCisKKyAgICBkZWYgdGVzdF9iYWRzeW50YXhfMyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiZXJyb3IiKQorICAgICAgICAgICAgICAgIGNvbXBpbGUoImFzeW5jID0gMSIsICI8dGVzdD4iLCAiZXhlYyIpCisKICAgICBkZWYgdGVzdF9nb29kc3ludGF4XzEoc2VsZik6CiAgICAgICAgICMgVGVzdHMgZm9yIGlzc3VlIDI0NjE5CiAKLSAgICAgICAgZGVmIGZvbyhhd2FpdCk6Ci0gICAgICAgICAgICBhc3luYyBkZWYgZm9vKCk6IHBhc3MKLSAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKToKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICByZXR1cm4gYXdhaXQgKyAxCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vKDEwKSwgMTEpCisgICAgICAgIHNhbXBsZXMgPSBbCisgICAgICAgICAgICAnJydkZWYgZm9vKGF3YWl0KToKKyAgICAgICAgICAgICAgICBhc3luYyBkZWYgZm9vKCk6IHBhc3MKKyAgICAgICAgICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgKyAxCisgICAgICAgICAgICAnJycsCiAKLSAgICAgICAgZGVmIGZvbyhhd2FpdCk6Ci0gICAgICAgICAgICBhc3luYyBkZWYgZm9vKCk6IHBhc3MKLSAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKTogcGFzcwotICAgICAgICAgICAgcmV0dXJuIGF3YWl0ICsgMgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbygyMCksIDIyKQorICAgICAgICAgICAgJycnZGVmIGZvbyhhd2FpdCk6CisgICAgICAgICAgICAgICAgYXN5bmMgZGVmIGZvbygpOiBwYXNzCisgICAgICAgICAgICAgICAgYXN5bmMgZGVmIGZvbygpOiBwYXNzCisgICAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0ICsgMQorICAgICAgICAgICAgJycnLAogCi0gICAgICAgIGRlZiBmb28oYXdhaXQpOgorICAgICAgICAgICAgJycnZGVmIGZvbyhhd2FpdCk6CiAKLSAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKTogcGFzcworICAgICAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKTogcGFzcwogCi0gICAgICAgICAgICBhc3luYyBkZWYgZm9vKCk6IHBhc3MKKyAgICAgICAgICAgICAgICBhc3luYyBkZWYgZm9vKCk6IHBhc3MKIAotICAgICAgICAgICAgcmV0dXJuIGF3YWl0ICsgMgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbygyMCksIDIyKQorICAgICAgICAgICAgICAgIHJldHVybiBhd2FpdCArIDEKKyAgICAgICAgICAgICcnJywKIAotICAgICAgICBkZWYgZm9vKGF3YWl0KToKLSAgICAgICAgICAgICIiInNwYW0iIiIKLSAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKTogXAotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgICMgMTIzCi0gICAgICAgICAgICBhc3luYyBkZWYgZm9vKCk6IHBhc3MKLSAgICAgICAgICAgICMgNDU2Ci0gICAgICAgICAgICByZXR1cm4gYXdhaXQgKyAyCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vKDIwKSwgMjIpCisgICAgICAgICAgICAnJydkZWYgZm9vKGF3YWl0KToKKyAgICAgICAgICAgICAgICAiIiJzcGFtIiIiCisgICAgICAgICAgICAgICAgYXN5bmMgZGVmIGZvbygpOiBcCisgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICAjIDEyMworICAgICAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKTogcGFzcworICAgICAgICAgICAgICAgICMgNDU2CisgICAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0ICsgMQorICAgICAgICAgICAgJycnLAogCi0gICAgICAgIGRlZiBmb28oYXdhaXQpOgotICAgICAgICAgICAgZGVmIGZvbygpOiBwYXNzCi0gICAgICAgICAgICBkZWYgZm9vKCk6IHBhc3MKLSAgICAgICAgICAgIGFzeW5jIGRlZiBiYXIoKTogcmV0dXJuIGF3YWl0XwotICAgICAgICAgICAgYXdhaXRfID0gYXdhaXQKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBiYXIoKS5zZW5kKE5vbmUpCi0gICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBleDoKLSAgICAgICAgICAgICAgICByZXR1cm4gZXguYXJnc1swXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbyg0MiksIDQyKQorICAgICAgICAgICAgJycnZGVmIGZvbyhhd2FpdCk6CisgICAgICAgICAgICAgICAgZGVmIGZvbygpOiBwYXNzCisgICAgICAgICAgICAgICAgZGVmIGZvbygpOiBwYXNzCisgICAgICAgICAgICAgICAgYXN5bmMgZGVmIGJhcigpOiByZXR1cm4gYXdhaXRfCisgICAgICAgICAgICAgICAgYXdhaXRfID0gYXdhaXQKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGJhcigpLnNlbmQoTm9uZSkKKyAgICAgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBleDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4LmFyZ3NbMF0gKyAxCisgICAgICAgICAgICAnJycKKyAgICAgICAgXQogCi0gICAgICAgIGFzeW5jIGRlZiBmKCk6Ci0gICAgICAgICAgICBhc3luYyBkZWYgZygpOiBwYXNzCi0gICAgICAgICAgICBhd2FpdCB6Ci0gICAgICAgIGF3YWl0ID0gMQotICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5zcGVjdC5pc2Nvcm91dGluZWZ1bmN0aW9uKGYpKQorICAgICAgICBmb3IgY29kZSBpbiBzYW1wbGVzOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoY29kZT1jb2RlKToKKyAgICAgICAgICAgICAgICBsb2MgPSB7fQorCisgICAgICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIpCisgICAgICAgICAgICAgICAgICAgIGV4ZWMoY29kZSwgbG9jLCBsb2MpCisKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvY1snZm9vJ10oMTApLCAxMSkKIAogCiBjbGFzcyBUb2tlbml6ZXJSZWdyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC05MDYsNyArMTAzNCw3IEBACiAgICAgICAgICAgICByZXR1cm4gYXdhaXQgQXdhaXRhYmxlKCkKIAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCi0gICAgICAgICAgICBUeXBlRXJyb3IsICJfX2F3YWl0X19cKFwpIHJldHVybmVkIGEgY29yb3V0aW5lIik6CisgICAgICAgICAgICBUeXBlRXJyb3IsIHIiX19hd2FpdF9fXChcKSByZXR1cm5lZCBhIGNvcm91dGluZSIpOgogCiAgICAgICAgICAgICBydW5fYXN5bmMoZm9vKCkpCiAKQEAgLTEyNzAsNyArMTM5OCw3IEBACiAKICAgICAgICAgYnVmZmVyID0gW10KICAgICAgICAgYXN5bmMgZGVmIHRlc3QxKCk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAibGVnYWN5Iik6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsICJsZWdhY3kiKToKICAgICAgICAgICAgICAgICBhc3luYyBmb3IgaTEsIGkyIGluIEFzeW5jSXRlcigpOgogICAgICAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKGkxICsgaTIpCiAKQEAgLTEyODQsNyArMTQxMiw3IEBACiAgICAgICAgIGJ1ZmZlciA9IFtdCiAgICAgICAgIGFzeW5jIGRlZiB0ZXN0MigpOgogICAgICAgICAgICAgbm9ubG9jYWwgYnVmZmVyCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAibGVnYWN5Iik6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsICJsZWdhY3kiKToKICAgICAgICAgICAgICAgICBhc3luYyBmb3IgaSBpbiBBc3luY0l0ZXIoKToKICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChpWzBdKQogICAgICAgICAgICAgICAgICAgICBpZiBpWzBdID09IDIwOgpAQCAtMTMwMyw3ICsxNDMxLDcgQEAKICAgICAgICAgYnVmZmVyID0gW10KICAgICAgICAgYXN5bmMgZGVmIHRlc3QzKCk6CiAgICAgICAgICAgICBub25sb2NhbCBidWZmZXIKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsICJsZWdhY3kiKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywgImxlZ2FjeSIpOgogICAgICAgICAgICAgICAgIGFzeW5jIGZvciBpIGluIEFzeW5jSXRlcigpOgogICAgICAgICAgICAgICAgICAgICBpZiBpWzBdID4gMjA6CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQpAQCAtMTM0OCw3ICsxNDc2LDcgQEAKIAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCiAgICAgICAgICAgICAgICAgVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICJhc3luYyBmb3InIHJlY2VpdmVkIGFuIGludmFsaWQgb2JqZWN0LipfX2FpdGVyLipcOiBJIik6CisgICAgICAgICAgICAgICAgciJhc3luYyBmb3InIHJlY2VpdmVkIGFuIGludmFsaWQgb2JqZWN0LipfX2FpdGVyLipcOiBJIik6CiAKICAgICAgICAgICAgIHJ1bl9hc3luYyhmb28oKSkKIApAQCAtMTM4Niw3ICsxNTE0LDcgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gMTIzCiAKICAgICAgICAgYXN5bmMgZGVmIGZvbygpOgotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgImxlZ2FjeSIpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLCAibGVnYWN5Iik6CiAgICAgICAgICAgICAgICAgYXN5bmMgZm9yIGkgaW4gSSgpOgogICAgICAgICAgICAgICAgICAgICBwcmludCgnbmV2ZXIgZ29pbmcgdG8gaGFwcGVuJykKIApAQCAtMTQ5NSw3ICsxNjIzLDcgQEAKICAgICAgICAgICAgICAgICAxLzAKICAgICAgICAgYXN5bmMgZGVmIGZvbygpOgogICAgICAgICAgICAgbm9ubG9jYWwgQ05UCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAibGVnYWN5Iik6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsICJsZWdhY3kiKToKICAgICAgICAgICAgICAgICBhc3luYyBmb3IgaSBpbiBBSSgpOgogICAgICAgICAgICAgICAgICAgICBDTlQgKz0gMQogICAgICAgICAgICAgQ05UICs9IDEwCkBAIC0xNTIyLDcgKzE2NTAsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENOVCwgMCkKIAogICAgIGRlZiB0ZXN0X2Zvcl85KHNlbGYpOgotICAgICAgICAjIFRlc3QgdGhhdCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nIGNhbiBzYWZlbHkgYmUgY29udmVydGVkIGludG8KKyAgICAgICAgIyBUZXN0IHRoYXQgRGVwcmVjYXRpb25XYXJuaW5nIGNhbiBzYWZlbHkgYmUgY29udmVydGVkIGludG8KICAgICAgICAgIyBhbiBleGNlcHRpb24gKF9fYWl0ZXJfXyBzaG91bGQgbm90IGhhdmUgYSBjaGFuY2UgdG8gcmFpc2UKICAgICAgICAgIyBhIFplcm9EaXZpc2lvbkVycm9yLikKICAgICAgICAgY2xhc3MgQUk6CkBAIC0xNTMyLDEzICsxNjYwLDEzIEBACiAgICAgICAgICAgICBhc3luYyBmb3IgaSBpbiBBSSgpOgogICAgICAgICAgICAgICAgIHBhc3MKIAotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKERlcHJlY2F0aW9uV2FybmluZyk6CiAgICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAgICAgICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJlcnJvciIpCiAgICAgICAgICAgICAgICAgcnVuX2FzeW5jKGZvbygpKQogCiAgICAgZGVmIHRlc3RfZm9yXzEwKHNlbGYpOgotICAgICAgICAjIFRlc3QgdGhhdCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nIGNhbiBzYWZlbHkgYmUgY29udmVydGVkIGludG8KKyAgICAgICAgIyBUZXN0IHRoYXQgRGVwcmVjYXRpb25XYXJuaW5nIGNhbiBzYWZlbHkgYmUgY29udmVydGVkIGludG8KICAgICAgICAgIyBhbiBleGNlcHRpb24uCiAgICAgICAgIGNsYXNzIEFJOgogICAgICAgICAgICAgYXN5bmMgZGVmIF9fYWl0ZXJfXyhzZWxmKToKQEAgLTE1NDcsNyArMTY3NSw3IEBACiAgICAgICAgICAgICBhc3luYyBmb3IgaSBpbiBBSSgpOgogICAgICAgICAgICAgICAgIHBhc3MKIAotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKERlcHJlY2F0aW9uV2FybmluZyk6CiAgICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAgICAgICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJlcnJvciIpCiAgICAgICAgICAgICAgICAgcnVuX2FzeW5jKGZvbygpKQpAQCAtMTU5OCw2ICsxNzI2LDE4NSBAQAogICAgICAgICAgICAgZm9vKCkuc2VuZChOb25lKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgWzQyXSkKIAorICAgIGRlZiB0ZXN0X2NvbXBfMShzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGYoaSk6CisgICAgICAgICAgICByZXR1cm4gaQorCisgICAgICAgIGFzeW5jIGRlZiBydW5fbGlzdCgpOgorICAgICAgICAgICAgcmV0dXJuIFthd2FpdCBjIGZvciBjIGluIFtmKDEpLCBmKDQxKV1dCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9zZXQoKToKKyAgICAgICAgICAgIHJldHVybiB7YXdhaXQgYyBmb3IgYyBpbiBbZigxKSwgZig0MSldfQorCisgICAgICAgIGFzeW5jIGRlZiBydW5fZGljdDEoKToKKyAgICAgICAgICAgIHJldHVybiB7YXdhaXQgYzogJ2EnIGZvciBjIGluIFtmKDEpLCBmKDQxKV19CisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9kaWN0MigpOgorICAgICAgICAgICAgcmV0dXJuIHtpOiBhd2FpdCBjIGZvciBpLCBjIGluIGVudW1lcmF0ZShbZigxKSwgZig0MSldKX0KKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ1bl9hc3luYyhydW5fbGlzdCgpKSwgKFtdLCBbMSwgNDFdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydW5fYXN5bmMocnVuX3NldCgpKSwgKFtdLCB7MSwgNDF9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydW5fYXN5bmMocnVuX2RpY3QxKCkpLCAoW10sIHsxOiAnYScsIDQxOiAnYSd9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydW5fYXN5bmMocnVuX2RpY3QyKCkpLCAoW10sIHswOiAxLCAxOiA0MX0pKQorCisgICAgZGVmIHRlc3RfY29tcF8yKHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZihpKToKKyAgICAgICAgICAgIHJldHVybiBpCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9saXN0KCk6CisgICAgICAgICAgICByZXR1cm4gW3MgZm9yIGMgaW4gW2YoJycpLCBmKCdhYmMnKSwgZignJyksIGYoWydkZScsICdmZyddKV0KKyAgICAgICAgICAgICAgICAgICAgZm9yIHMgaW4gYXdhaXQgY10KKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcnVuX2FzeW5jKHJ1bl9saXN0KCkpLAorICAgICAgICAgICAgKFtdLCBbJ2EnLCAnYicsICdjJywgJ2RlJywgJ2ZnJ10pKQorCisgICAgICAgIGFzeW5jIGRlZiBydW5fc2V0KCk6CisgICAgICAgICAgICByZXR1cm4ge2QKKyAgICAgICAgICAgICAgICAgICAgZm9yIGMgaW4gW2YoW2YoWzEwLCAzMF0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZihbMjBdKV0pXQorICAgICAgICAgICAgICAgICAgICBmb3IgcyBpbiBhd2FpdCBjCisgICAgICAgICAgICAgICAgICAgIGZvciBkIGluIGF3YWl0IHN9CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJ1bl9hc3luYyhydW5fc2V0KCkpLAorICAgICAgICAgICAgKFtdLCB7MTAsIDIwLCAzMH0pKQorCisgICAgICAgIGFzeW5jIGRlZiBydW5fc2V0MigpOgorICAgICAgICAgICAgcmV0dXJuIHthd2FpdCBzCisgICAgICAgICAgICAgICAgICAgIGZvciBjIGluIFtmKFtmKDEwKSwgZigyMCldKV0KKyAgICAgICAgICAgICAgICAgICAgZm9yIHMgaW4gYXdhaXQgY30KKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcnVuX2FzeW5jKHJ1bl9zZXQyKCkpLAorICAgICAgICAgICAgKFtdLCB7MTAsIDIwfSkpCisKKyAgICBkZWYgdGVzdF9jb21wXzMoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmKGl0KToKKyAgICAgICAgICAgIGZvciBpIGluIGl0OgorICAgICAgICAgICAgICAgIHlpZWxkIGkKKworICAgICAgICBhc3luYyBkZWYgcnVuX2xpc3QoKToKKyAgICAgICAgICAgIHJldHVybiBbaSArIDEgYXN5bmMgZm9yIGkgaW4gZihbMTAsIDIwXSldCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBydW5fYXN5bmMocnVuX2xpc3QoKSksCisgICAgICAgICAgICAoW10sIFsxMSwgMjFdKSkKKworICAgICAgICBhc3luYyBkZWYgcnVuX3NldCgpOgorICAgICAgICAgICAgcmV0dXJuIHtpICsgMSBhc3luYyBmb3IgaSBpbiBmKFsxMCwgMjBdKX0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJ1bl9hc3luYyhydW5fc2V0KCkpLAorICAgICAgICAgICAgKFtdLCB7MTEsIDIxfSkpCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9kaWN0KCk6CisgICAgICAgICAgICByZXR1cm4ge2kgKyAxOiBpICsgMiBhc3luYyBmb3IgaSBpbiBmKFsxMCwgMjBdKX0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJ1bl9hc3luYyhydW5fZGljdCgpKSwKKyAgICAgICAgICAgIChbXSwgezExOiAxMiwgMjE6IDIyfSkpCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9nZW4oKToKKyAgICAgICAgICAgIGdlbiA9IChpICsgMSBhc3luYyBmb3IgaSBpbiBmKFsxMCwgMjBdKSkKKyAgICAgICAgICAgIHJldHVybiBbZyArIDEwMCBhc3luYyBmb3IgZyBpbiBnZW5dCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBydW5fYXN5bmMocnVuX2dlbigpKSwKKyAgICAgICAgICAgIChbXSwgWzExMSwgMTIxXSkpCisKKyAgICBkZWYgdGVzdF9jb21wXzQoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmKGl0KToKKyAgICAgICAgICAgIGZvciBpIGluIGl0OgorICAgICAgICAgICAgICAgIHlpZWxkIGkKKworICAgICAgICBhc3luYyBkZWYgcnVuX2xpc3QoKToKKyAgICAgICAgICAgIHJldHVybiBbaSArIDEgYXN5bmMgZm9yIGkgaW4gZihbMTAsIDIwXSkgaWYgaSA+IDEwXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcnVuX2FzeW5jKHJ1bl9saXN0KCkpLAorICAgICAgICAgICAgKFtdLCBbMjFdKSkKKworICAgICAgICBhc3luYyBkZWYgcnVuX3NldCgpOgorICAgICAgICAgICAgcmV0dXJuIHtpICsgMSBhc3luYyBmb3IgaSBpbiBmKFsxMCwgMjBdKSBpZiBpID4gMTB9CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBydW5fYXN5bmMocnVuX3NldCgpKSwKKyAgICAgICAgICAgIChbXSwgezIxfSkpCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9kaWN0KCk6CisgICAgICAgICAgICByZXR1cm4ge2kgKyAxOiBpICsgMiBhc3luYyBmb3IgaSBpbiBmKFsxMCwgMjBdKSBpZiBpID4gMTB9CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBydW5fYXN5bmMocnVuX2RpY3QoKSksCisgICAgICAgICAgICAoW10sIHsyMTogMjJ9KSkKKworICAgICAgICBhc3luYyBkZWYgcnVuX2dlbigpOgorICAgICAgICAgICAgZ2VuID0gKGkgKyAxIGFzeW5jIGZvciBpIGluIGYoWzEwLCAyMF0pIGlmIGkgPiAxMCkKKyAgICAgICAgICAgIHJldHVybiBbZyArIDEwMCBhc3luYyBmb3IgZyBpbiBnZW5dCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBydW5fYXN5bmMocnVuX2dlbigpKSwKKyAgICAgICAgICAgIChbXSwgWzEyMV0pKQorCisgICAgZGVmIHRlc3RfY29tcF81KHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZihpdCk6CisgICAgICAgICAgICBmb3IgaSBpbiBpdDoKKyAgICAgICAgICAgICAgICB5aWVsZCBpCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9saXN0KCk6CisgICAgICAgICAgICByZXR1cm4gW2kgKyAxIGZvciBwYWlyIGluIChbMTAsIDIwXSwgWzMwLCA0MF0pIGlmIHBhaXJbMF0gPiAxMAorICAgICAgICAgICAgICAgICAgICBhc3luYyBmb3IgaSBpbiBmKHBhaXIpIGlmIGkgPiAzMF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJ1bl9hc3luYyhydW5fbGlzdCgpKSwKKyAgICAgICAgICAgIChbXSwgWzQxXSkpCisKKyAgICBkZWYgdGVzdF9jb21wXzYoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmKGl0KToKKyAgICAgICAgICAgIGZvciBpIGluIGl0OgorICAgICAgICAgICAgICAgIHlpZWxkIGkKKworICAgICAgICBhc3luYyBkZWYgcnVuX2xpc3QoKToKKyAgICAgICAgICAgIHJldHVybiBbaSArIDEgYXN5bmMgZm9yIHNlcSBpbiBmKFsoMTAsIDIwKSwgKDMwLCldKQorICAgICAgICAgICAgICAgICAgICBmb3IgaSBpbiBzZXFdCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJ1bl9hc3luYyhydW5fbGlzdCgpKSwKKyAgICAgICAgICAgIChbXSwgWzExLCAyMSwgMzFdKSkKKworICAgIGRlZiB0ZXN0X2NvbXBfNyhzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGYoKToKKyAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgIHlpZWxkIDIKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignYWFhJykKKworICAgICAgICBhc3luYyBkZWYgcnVuX2xpc3QoKToKKyAgICAgICAgICAgIHJldHVybiBbaSBhc3luYyBmb3IgaSBpbiBmKCldCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEV4Y2VwdGlvbiwgJ2FhYScpOgorICAgICAgICAgICAgcnVuX2FzeW5jKHJ1bl9saXN0KCkpCisKKyAgICBkZWYgdGVzdF9jb21wXzgoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmKCk6CisgICAgICAgICAgICByZXR1cm4gW2kgZm9yIGkgaW4gWzEsIDIsIDNdXQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBydW5fYXN5bmMoZigpKSwKKyAgICAgICAgICAgIChbXSwgWzEsIDIsIDNdKSkKKworICAgIGRlZiB0ZXN0X2NvbXBfOShzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgeWllbGQgMgorICAgICAgICBhc3luYyBkZWYgZigpOgorICAgICAgICAgICAgbCA9IFtpIGFzeW5jIGZvciBpIGluIGdlbigpXQorICAgICAgICAgICAgcmV0dXJuIFtpIGZvciBpIGluIGxdCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJ1bl9hc3luYyhmKCkpLAorICAgICAgICAgICAgKFtdLCBbMSwgMl0pKQorCisgICAgZGVmIHRlc3RfY29tcF8xMChzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGYoKToKKyAgICAgICAgICAgIHh4ID0ge2kgZm9yIGkgaW4gWzEsIDIsIDNdfQorICAgICAgICAgICAgcmV0dXJuIHt4OiB4IGZvciB4IGluIHh4fQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBydW5fYXN5bmMoZigpKSwKKyAgICAgICAgICAgIChbXSwgezE6IDEsIDI6IDIsIDM6IDN9KSkKKwogICAgIGRlZiB0ZXN0X2NvcHkoc2VsZik6CiAgICAgICAgIGFzeW5jIGRlZiBmdW5jKCk6IHBhc3MKICAgICAgICAgY29ybyA9IGZ1bmMoKQpAQCAtMTcyOCw4ICsyMDM1LDggQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgd2l0aCBzaWxlbmNlX2Nvcm9fZ2MoKSwgc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKICAgICAgICAgICAgICAgICBSdW50aW1lRXJyb3IsCi0gICAgICAgICAgICAgICAgImNvcm91dGluZSB3cmFwcGVyLipcLndyYXBwZXIgYXQgMHguKmF0dGVtcHRlZCB0byAiCi0gICAgICAgICAgICAgICAgInJlY3Vyc2l2ZWx5IHdyYXAgLiogd3JhcCAuKiIpOgorICAgICAgICAgICAgICAgIHIiY29yb3V0aW5lIHdyYXBwZXIuKlwud3JhcHBlciBhdCAweC4qYXR0ZW1wdGVkIHRvICIKKyAgICAgICAgICAgICAgICByInJlY3Vyc2l2ZWx5IHdyYXAgLiogd3JhcCAuKiIpOgogCiAgICAgICAgICAgICAgICAgZm9vKCkKICAgICAgICAgZmluYWxseToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY3Byb2ZpbGUucHkgYi9MaWIvdGVzdC90ZXN0X2Nwcm9maWxlLnB5CmluZGV4IGYxODk4M2YuLjUzZjg5MTcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY3Byb2ZpbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jcHJvZmlsZS5weQpAQCAtNiw3ICs2LDcgQEAKICMgcmlwIG9mZiBhbGwgaW50ZXJlc3Rpbmcgc3R1ZmYgZnJvbSB0ZXN0X3Byb2ZpbGUKIGltcG9ydCBjUHJvZmlsZQogZnJvbSB0ZXN0LnRlc3RfcHJvZmlsZSBpbXBvcnQgUHJvZmlsZVRlc3QsIHJlZ2VuZXJhdGVfZXhwZWN0ZWRfb3V0cHV0Ci1mcm9tIHRlc3QucHJvZmlsZWUgaW1wb3J0IHRlc3RmdW5jCisKIAogY2xhc3MgQ1Byb2ZpbGVUZXN0KFByb2ZpbGVUZXN0KToKICAgICBwcm9maWxlcmNsYXNzID0gY1Byb2ZpbGUuUHJvZmlsZQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jc3YucHkgYi9MaWIvdGVzdC90ZXN0X2Nzdi5weQppbmRleCA3N2MzMTVlLi4wM2FiMTg0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Nzdi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Nzdi5weQpAQCAtMiw5ICsyLDcgQEAKICMgY3N2IHBhY2thZ2UgdW5pdCB0ZXN0cwogCiBpbXBvcnQgY29weQotaW1wb3J0IGlvCiBpbXBvcnQgc3lzCi1pbXBvcnQgb3MKIGltcG9ydCB1bml0dGVzdAogZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KIGZyb20gdGVtcGZpbGUgaW1wb3J0IFRlbXBvcmFyeUZpbGUKQEAgLTEyLDYgKzEwLDkgQEAKIGltcG9ydCBnYwogaW1wb3J0IHBpY2tsZQogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Citmcm9tIGl0ZXJ0b29scyBpbXBvcnQgcGVybXV0YXRpb25zCitmcm9tIHRleHR3cmFwIGltcG9ydCBkZWRlbnQKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0CiAKIGNsYXNzIFRlc3RfQ3N2KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAiIiIKQEAgLTQyNiwxNyArNDI3LDE2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY3N2LnJlYWRlciwgW10sIHF1b3RpbmcgPSAtMSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjc3YucmVhZGVyLCBbXSwgcXVvdGluZyA9IDEwMCkKIAotICAgICMgU2VlIGlzc3VlICMyMjk5NQotICAgICMjIGRlZiB0ZXN0X2NvcHkoc2VsZik6Ci0gICAgIyMgICAgIGZvciBuYW1lIGluIGNzdi5saXN0X2RpYWxlY3RzKCk6Ci0gICAgIyMgICAgICAgICBkaWFsZWN0ID0gY3N2LmdldF9kaWFsZWN0KG5hbWUpCi0gICAgIyMgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvcHkuY29weSwgZGlhbGVjdCkKKyAgICBkZWYgdGVzdF9jb3B5KHNlbGYpOgorICAgICAgICBmb3IgbmFtZSBpbiBjc3YubGlzdF9kaWFsZWN0cygpOgorICAgICAgICAgICAgZGlhbGVjdCA9IGNzdi5nZXRfZGlhbGVjdChuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb3B5LmNvcHksIGRpYWxlY3QpCiAKLSAgICAjIyBkZWYgdGVzdF9waWNrbGUoc2VsZik6Ci0gICAgIyMgICAgIGZvciBuYW1lIGluIGNzdi5saXN0X2RpYWxlY3RzKCk6Ci0gICAgIyMgICAgICAgICBkaWFsZWN0ID0gY3N2LmdldF9kaWFsZWN0KG5hbWUpCi0gICAgIyMgICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKLSAgICAjIyAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHBpY2tsZS5kdW1wcywgZGlhbGVjdCwgcHJvdG8pCisgICAgZGVmIHRlc3RfcGlja2xlKHNlbGYpOgorICAgICAgICBmb3IgbmFtZSBpbiBjc3YubGlzdF9kaWFsZWN0cygpOgorICAgICAgICAgICAgZGlhbGVjdCA9IGNzdi5nZXRfZGlhbGVjdChuYW1lKQorICAgICAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwaWNrbGUuZHVtcHMsIGRpYWxlY3QsIHByb3RvKQogCiBjbGFzcyBUZXN0Q3N2QmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHJlYWRlckFzc2VydEVxdWFsKHNlbGYsIGlucHV0LCBleHBlY3RlZF9yZXN1bHQpOgpAQCAtNjI2LDYgKzYyNiwyNCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbigiJ2YyJyIsIGV4Y2VwdGlvbikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIjEiLCBleGNlcHRpb24pCiAKKyAgICBkZWYgdGVzdF90eXBvX2luX2V4dHJhc2FjdGlvbl9yYWlzZXNfZXJyb3Ioc2VsZik6CisgICAgICAgIGZpbGVvYmogPSBTdHJpbmdJTygpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNzdi5EaWN0V3JpdGVyLCBmaWxlb2JqLCBbJ2YxJywgJ2YyJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhc2FjdGlvbj0icmFpc2VkIikKKworICAgIGRlZiB0ZXN0X3dyaXRlX2ZpZWxkX25vdF9pbl9maWVsZF9uYW1lc19yYWlzZShzZWxmKToKKyAgICAgICAgZmlsZW9iaiA9IFN0cmluZ0lPKCkKKyAgICAgICAgd3JpdGVyID0gY3N2LkRpY3RXcml0ZXIoZmlsZW9iaiwgWydmMScsICdmMiddLCBleHRyYXNhY3Rpb249InJhaXNlIikKKyAgICAgICAgZGljdHJvdyA9IHsnZjAnOiAwLCAnZjEnOiAxLCAnZjInOiAyLCAnZjMnOiAzfQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjc3YuRGljdFdyaXRlci53cml0ZXJvdywgd3JpdGVyLCBkaWN0cm93KQorCisgICAgZGVmIHRlc3Rfd3JpdGVfZmllbGRfbm90X2luX2ZpZWxkX25hbWVzX2lnbm9yZShzZWxmKToKKyAgICAgICAgZmlsZW9iaiA9IFN0cmluZ0lPKCkKKyAgICAgICAgd3JpdGVyID0gY3N2LkRpY3RXcml0ZXIoZmlsZW9iaiwgWydmMScsICdmMiddLCBleHRyYXNhY3Rpb249Imlnbm9yZSIpCisgICAgICAgIGRpY3Ryb3cgPSB7J2YwJzogMCwgJ2YxJzogMSwgJ2YyJzogMiwgJ2YzJzogM30KKyAgICAgICAgY3N2LkRpY3RXcml0ZXIud3JpdGVyb3cod3JpdGVyLCBkaWN0cm93KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVvYmouZ2V0dmFsdWUoKSwgIjEsMlxyXG4iKQorCiAgICAgZGVmIHRlc3RfcmVhZF9kaWN0X2ZpZWxkcyhzZWxmKToKICAgICAgICAgd2l0aCBUZW1wb3JhcnlGaWxlKCJ3KyIpIGFzIGZpbGVvYmo6CiAgICAgICAgICAgICBmaWxlb2JqLndyaXRlKCIxLDIsYWJjXHJcbiIpCkBAIC0xMDgwLDcgKzEwOTgsNiBAQAogICAgICAgICAgICAgICJGcmFuw6dvaXMgUGluYXJkIl0KIAogICAgIGRlZiB0ZXN0X3VuaWNvZGVfcmVhZChzZWxmKToKLSAgICAgICAgaW1wb3J0IGlvCiAgICAgICAgIHdpdGggVGVtcG9yYXJ5RmlsZSgidysiLCBuZXdsaW5lPScnLCBlbmNvZGluZz0idXRmLTgiKSBhcyBmaWxlb2JqOgogICAgICAgICAgICAgZmlsZW9iai53cml0ZSgiLCIuam9pbihzZWxmLm5hbWVzKSArICJcclxuIikKICAgICAgICAgICAgIGZpbGVvYmouc2VlaygwKQpAQCAtMTA4OSw3ICsxMTA2LDYgQEAKIAogCiAgICAgZGVmIHRlc3RfdW5pY29kZV93cml0ZShzZWxmKToKLSAgICAgICAgaW1wb3J0IGlvCiAgICAgICAgIHdpdGggVGVtcG9yYXJ5RmlsZSgidysiLCBuZXdsaW5lPScnLCBlbmNvZGluZz0idXRmLTgiKSBhcyBmaWxlb2JqOgogICAgICAgICAgICAgd3JpdGVyID0gY3N2LndyaXRlcihmaWxlb2JqKQogICAgICAgICAgICAgd3JpdGVyLndyaXRlcm93KHNlbGYubmFtZXMpCkBAIC0xMDk3LDYgKzExMTMsNjMgQEAKICAgICAgICAgICAgIGZpbGVvYmouc2VlaygwKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlb2JqLnJlYWQoKSwgZXhwZWN0ZWQpCiAKK2NsYXNzIEtleU9yZGVyaW5nVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9vcmRlcmluZ19mb3JfdGhlX2RpY3RfcmVhZGVyX2FuZF93cml0ZXIoc2VsZik6CisgICAgICAgIHJlc3VsdHNldCA9IHNldCgpCisgICAgICAgIGZvciBrZXlzIGluIHBlcm11dGF0aW9ucygiYWJjZGUiKToKKyAgICAgICAgICAgIHdpdGggVGVtcG9yYXJ5RmlsZSgndysnLCBuZXdsaW5lPScnLCBlbmNvZGluZz0idXRmLTgiKSBhcyBmaWxlb2JqZWN0OgorICAgICAgICAgICAgICAgIGR3ID0gY3N2LkRpY3RXcml0ZXIoZmlsZW9iamVjdCwga2V5cykKKyAgICAgICAgICAgICAgICBkdy53cml0ZWhlYWRlcigpCisgICAgICAgICAgICAgICAgZmlsZW9iamVjdC5zZWVrKDApCisgICAgICAgICAgICAgICAgZHIgPSBjc3YuRGljdFJlYWRlcihmaWxlb2JqZWN0KQorICAgICAgICAgICAgICAgIGt0ID0gdHVwbGUoZHIuZmllbGRuYW1lcykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGtleXMsIGt0KQorICAgICAgICAgICAgICAgIHJlc3VsdHNldC5hZGQoa3QpCisgICAgICAgICMgRmluYWwgc2FuaXR5IGNoZWNrOiB3ZXJlIGFsbCBwZXJtdXRhdGlvbnMgdW5pcXVlPworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXN1bHRzZXQpLCAxMjAsICJLZXkgb3JkZXJpbmc6IHNvbWUga2V5IHBlcm11dGF0aW9ucyBub3QgY29sbGVjdGVkIChleHBlY3RlZCAxMjApIikKKworICAgIGRlZiB0ZXN0X29yZGVyZWRfZGljdF9yZWFkZXIoc2VsZik6CisgICAgICAgIGRhdGEgPSBkZWRlbnQoJycnXAorICAgICAgICAgICAgRmlyc3ROYW1lLExhc3ROYW1lCisgICAgICAgICAgICBFcmljLElkbGUKKyAgICAgICAgICAgIEdyYWhhbSxDaGFwbWFuLE92ZXIxLE92ZXIyCisKKyAgICAgICAgICAgIFVuZGVyMQorICAgICAgICAgICAgSm9obixDbGVlc2UKKyAgICAgICAgJycnKS5zcGxpdGxpbmVzKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY3N2LkRpY3RSZWFkZXIoZGF0YSkpLAorICAgICAgICAgICAgW09yZGVyZWREaWN0KFsoJ0ZpcnN0TmFtZScsICdFcmljJyksICgnTGFzdE5hbWUnLCAnSWRsZScpXSksCisgICAgICAgICAgICAgT3JkZXJlZERpY3QoWygnRmlyc3ROYW1lJywgJ0dyYWhhbScpLCAoJ0xhc3ROYW1lJywgJ0NoYXBtYW4nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKE5vbmUsIFsnT3ZlcjEnLCAnT3ZlcjInXSldKSwKKyAgICAgICAgICAgICBPcmRlcmVkRGljdChbKCdGaXJzdE5hbWUnLCAnVW5kZXIxJyksICgnTGFzdE5hbWUnLCBOb25lKV0pLAorICAgICAgICAgICAgIE9yZGVyZWREaWN0KFsoJ0ZpcnN0TmFtZScsICdKb2huJyksICgnTGFzdE5hbWUnLCAnQ2xlZXNlJyldKSwKKyAgICAgICAgICAgIF0pCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNzdi5EaWN0UmVhZGVyKGRhdGEsIHJlc3RrZXk9J090aGVySW5mbycpKSwKKyAgICAgICAgICAgIFtPcmRlcmVkRGljdChbKCdGaXJzdE5hbWUnLCAnRXJpYycpLCAoJ0xhc3ROYW1lJywgJ0lkbGUnKV0pLAorICAgICAgICAgICAgIE9yZGVyZWREaWN0KFsoJ0ZpcnN0TmFtZScsICdHcmFoYW0nKSwgKCdMYXN0TmFtZScsICdDaGFwbWFuJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICgnT3RoZXJJbmZvJywgWydPdmVyMScsICdPdmVyMiddKV0pLAorICAgICAgICAgICAgIE9yZGVyZWREaWN0KFsoJ0ZpcnN0TmFtZScsICdVbmRlcjEnKSwgKCdMYXN0TmFtZScsIE5vbmUpXSksCisgICAgICAgICAgICAgT3JkZXJlZERpY3QoWygnRmlyc3ROYW1lJywgJ0pvaG4nKSwgKCdMYXN0TmFtZScsICdDbGVlc2UnKV0pLAorICAgICAgICAgICAgXSkKKworICAgICAgICBkZWwgZGF0YVswXSAgICAgICAgICAgICMgUmVtb3ZlIHRoZSBoZWFkZXIgcm93CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjc3YuRGljdFJlYWRlcihkYXRhLCBmaWVsZG5hbWVzPVsnZm5hbWUnLCAnbG5hbWUnXSkpLAorICAgICAgICAgICAgW09yZGVyZWREaWN0KFsoJ2ZuYW1lJywgJ0VyaWMnKSwgKCdsbmFtZScsICdJZGxlJyldKSwKKyAgICAgICAgICAgICBPcmRlcmVkRGljdChbKCdmbmFtZScsICdHcmFoYW0nKSwgKCdsbmFtZScsICdDaGFwbWFuJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIChOb25lLCBbJ092ZXIxJywgJ092ZXIyJ10pXSksCisgICAgICAgICAgICAgT3JkZXJlZERpY3QoWygnZm5hbWUnLCAnVW5kZXIxJyksICgnbG5hbWUnLCBOb25lKV0pLAorICAgICAgICAgICAgIE9yZGVyZWREaWN0KFsoJ2ZuYW1lJywgJ0pvaG4nKSwgKCdsbmFtZScsICdDbGVlc2UnKV0pLAorICAgICAgICAgICAgXSkKKworCitjbGFzcyBNaXNjVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKKyAgICAgICAgZXh0cmEgPSB7J19fZG9jX18nLCAnX192ZXJzaW9uX18nfQorICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCBjc3YsICgnY3N2JywgJ19jc3YnKSwgZXh0cmE9ZXh0cmEpCisKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGF0ZXRpbWUucHkgYi9MaWIvdGVzdC90ZXN0X2RhdGV0aW1lLnB5CmluZGV4IDJkNGViNTIuLjI0MmUxYmIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGF0ZXRpbWUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kYXRldGltZS5weQpAQCAtMjMsOSArMjMsMTYgQEAKIHRlc3RfY2xhc3NlcyA9IFtdCiAKIGZvciBtb2R1bGUsIHN1ZmZpeCBpbiB6aXAodGVzdF9tb2R1bGVzLCB0ZXN0X3N1ZmZpeGVzKToKKyAgICB0ZXN0X2NsYXNzZXMgPSBbXQogICAgIGZvciBuYW1lLCBjbHMgaW4gbW9kdWxlLl9fZGljdF9fLml0ZW1zKCk6Ci0gICAgICAgIGlmIG5vdCAoaXNpbnN0YW5jZShjbHMsIHR5cGUpIGFuZCBpc3N1YmNsYXNzKGNscywgdW5pdHRlc3QuVGVzdENhc2UpKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoY2xzLCB0eXBlKToKICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGlmIGlzc3ViY2xhc3MoY2xzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICB0ZXN0X2NsYXNzZXMuYXBwZW5kKGNscykKKyAgICAgICAgZWxpZiBpc3N1YmNsYXNzKGNscywgdW5pdHRlc3QuVGVzdFN1aXRlKToKKyAgICAgICAgICAgIHN1aXQgPSBjbHMoKQorICAgICAgICAgICAgdGVzdF9jbGFzc2VzLmV4dGVuZCh0eXBlKHRlc3QpIGZvciB0ZXN0IGluIHN1aXQpCisgICAgZm9yIGNscyBpbiB0ZXN0X2NsYXNzZXM6CiAgICAgICAgIGNscy5fX25hbWVfXyA9IG5hbWUgKyBzdWZmaXgKICAgICAgICAgQGNsYXNzbWV0aG9kCiAgICAgICAgIGRlZiBzZXRVcENsYXNzKGNsc18sIG1vZHVsZT1tb2R1bGUpOgpAQCAtMzksNyArNDYsNiBAQAogICAgICAgICAgICAgc3lzLm1vZHVsZXMudXBkYXRlKGNsc18uX3NhdmVfc3lzX21vZHVsZXMpCiAgICAgICAgIGNscy5zZXRVcENsYXNzID0gc2V0VXBDbGFzcwogICAgICAgICBjbHMudGVhckRvd25DbGFzcyA9IHRlYXJEb3duQ2xhc3MKLSAgICAgICAgdGVzdF9jbGFzc2VzLmFwcGVuZChjbHMpCiAKIGRlZiB0ZXN0X21haW4oKToKICAgICBydW5fdW5pdHRlc3QoKnRlc3RfY2xhc3NlcykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGJtLnB5IGIvTGliL3Rlc3QvdGVzdF9kYm0ucHkKaW5kZXggNjIzZDk5Mi4uZjBhNDI4ZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kYm0ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kYm0ucHkKQEAgLTEsNiArMSw1IEBACiAiIiJUZXN0IHNjcmlwdCBmb3IgdGhlIGRibS5vcGVuIGZ1bmN0aW9uIGJhc2VkIG9uIHRlc3RkdW1iZGJtLnB5IiIiCiAKLWltcG9ydCBvcwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgZ2xvYgogaW1wb3J0IHRlc3Quc3VwcG9ydApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kYm1fZHVtYi5weSBiL0xpYi90ZXN0L3Rlc3RfZGJtX2R1bWIucHkKaW5kZXggMjM1YWIxMS4uZGY1MzFkNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kYm1fZHVtYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RibV9kdW1iLnB5CkBAIC03LDYgKzcsNyBAQAogaW1wb3J0IG9zCiBpbXBvcnQgc3RhdAogaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgd2FybmluZ3MKIGltcG9ydCBkYm0uZHVtYiBhcyBkdW1iZGJtCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gZnVuY3Rvb2xzIGltcG9ydCBwYXJ0aWFsCkBAIC03OSw2ICs4MCwxMiBAQAogICAgICAgICBzZWxmLmluaXRfZGIoKQogICAgICAgICBmID0gZHVtYmRibS5vcGVuKF9mbmFtZSwgJ3InKQogICAgICAgICBzZWxmLnJlYWRfaGVscGVyKGYpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1RoZSBkYXRhYmFzZSBpcyBvcGVuZWQgZm9yIHJlYWRpbmcgb25seScpOgorICAgICAgICAgICAgZltiJ2cnXSA9IGIneCcKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVGhlIGRhdGFiYXNlIGlzIG9wZW5lZCBmb3IgcmVhZGluZyBvbmx5Jyk6CisgICAgICAgICAgICBkZWwgZltiJ2EnXQogICAgICAgICBmLmNsb3NlKCkKIAogICAgIGRlZiB0ZXN0X2R1bWJkYm1fa2V5cyhzZWxmKToKQEAgLTE0OSw3ICsxNTYsNyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9kaWN0W2tleV0sIGZba2V5XSkKIAogICAgIGRlZiBpbml0X2RiKHNlbGYpOgotICAgICAgICBmID0gZHVtYmRibS5vcGVuKF9mbmFtZSwgJ3cnKQorICAgICAgICBmID0gZHVtYmRibS5vcGVuKF9mbmFtZSwgJ24nKQogICAgICAgICBmb3IgayBpbiBzZWxmLl9kaWN0OgogICAgICAgICAgICAgZltrXSA9IHNlbGYuX2RpY3Rba10KICAgICAgICAgZi5jbG9zZSgpCkBAIC0yMzUsNiArMjQyLDI0IEBACiAgICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LmdldHZhbHVlKCksICcnKQogCisgICAgZGVmIHRlc3Rfd2Fybl9vbl9pZ25vcmVkX2ZsYWdzKHNlbGYpOgorICAgICAgICBmb3IgdmFsdWUgaW4gKCdyJywgJ3cnKToKKyAgICAgICAgICAgIF9kZWxldGVfZmlsZXMoKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBkYXRhYmFzZSBmaWxlIGlzIG1pc3NpbmcsIHRoZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VtYW50aWNzIG9mIHRoZSAnYycgZmxhZyB3aWxsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiZSB1c2VkLiIpOgorICAgICAgICAgICAgICAgIGYgPSBkdW1iZGJtLm9wZW4oX2ZuYW1lLCB2YWx1ZSkKKyAgICAgICAgICAgIGYuY2xvc2UoKQorCisgICAgZGVmIHRlc3RfaW52YWxpZF9mbGFnKHNlbGYpOgorICAgICAgICBmb3IgZmxhZyBpbiAoJ3gnLCAncmYnLCBOb25lKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGbGFnIG11c3QgYmUgb25lIG9mICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIncicsICd3JywgJ2MnLCBvciAnbiciKToKKyAgICAgICAgICAgICAgICBmID0gZHVtYmRibS5vcGVuKF9mbmFtZSwgZmxhZykKKyAgICAgICAgICAgIGYuY2xvc2UoKQorCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ2NobW9kJyksICd0ZXN0IG5lZWRzIG9zLmNobW9kKCknKQogICAgIGRlZiB0ZXN0X3JlYWRvbmx5X2ZpbGVzKHNlbGYpOgogICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9kaXIoKSBhcyBkaXI6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RibV9nbnUucHkgYi9MaWIvdGVzdC90ZXN0X2RibV9nbnUucHkKaW5kZXggYTc4MDhmNS4uMzA0YjMzMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kYm1fZ251LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGJtX2dudS5weQpAQCAtMiw3ICsyLDcgQEAKIGdkYm0gPSBzdXBwb3J0LmltcG9ydF9tb2R1bGUoImRibS5nbnUiKSAjc2tpcCBpZiBub3Qgc3VwcG9ydGVkCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBvcwotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHZlcmJvc2UsIFRFU1RGTiwgdW5saW5rCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOLCB1bmxpbmsKIAogCiBmaWxlbmFtZSA9IFRFU1RGTgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kYm1fbmRibS5weSBiL0xpYi90ZXN0L3Rlc3RfZGJtX25kYm0ucHkKaW5kZXggMjI5MTU2MS4uNDlmNDQyNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kYm1fbmRibS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RibV9uZGJtLnB5CkBAIC0xLDggKzEsNiBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBzdXBwb3J0LmltcG9ydF9tb2R1bGUoImRibS5uZGJtIikgI3NraXAgaWYgbm90IHN1cHBvcnRlZAogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgb3MKLWltcG9ydCByYW5kb20KIGltcG9ydCBkYm0ubmRibQogZnJvbSBkYm0ubmRibSBpbXBvcnQgZXJyb3IKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kZWNpbWFsLnB5IGIvTGliL3Rlc3QvdGVzdF9kZWNpbWFsLnB5CmluZGV4IDFhYTBiZjguLjYxN2EzN2UgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGVjaW1hbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RlY2ltYWwucHkKQEAgLTU1NCw2ICs1NTQsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoRGVjaW1hbCgnICAtNy44OScpKSwgJy03Ljg5JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoRGVjaW1hbCgiICAzLjQ1Njc5ICAiKSksICczLjQ1Njc5JykKIAorICAgICAgICAjIHVuZGVyc2NvcmVzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKERlY2ltYWwoJzFfMy4zZTRfMCcpKSwgJzEuMzNFKzQxJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoRGVjaW1hbCgnMV8wXzBfMCcpKSwgJzEwMDAnKQorCiAgICAgICAgICMgdW5pY29kZSB3aGl0ZXNwYWNlCiAgICAgICAgIGZvciBsZWFkIGluIFsiIiwgJyAnLCAnXHUwMGEwJywgJ1x1MjA1ZiddOgogICAgICAgICAgICAgZm9yIHRyYWlsIGluIFsiIiwgJyAnLCAnXHUwMGEwJywgJ1x1MjA1ZiddOgpAQCAtNTc4LDYgKzU4Miw5IEBACiAgICAgICAgICAgICAjIGVtYmVkZGVkIE5VTAogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgRGVjaW1hbCwgIjEyXHUwMDAwMyIpCiAKKyAgICAgICAgICAgICMgdW5kZXJzY29yZXMgZG9uJ3QgcHJldmVudCBlcnJvcnMKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwsICIxXzJfXHUwMDAwMyIpCisKICAgICBAY3B5dGhvbl9vbmx5CiAgICAgZGVmIHRlc3RfZnJvbV9sZWdhY3lfc3RyaW5ncyhzZWxmKToKICAgICAgICAgaW1wb3J0IF90ZXN0Y2FwaQpAQCAtNzcyLDYgKzc3OSw5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIG5jLmNyZWF0ZV9kZWNpbWFsLCAieHl6IikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbmMuY3JlYXRlX2RlY2ltYWwsICgxLCAieHl6IiwgLTI1KSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBuYy5jcmVhdGVfZGVjaW1hbCwgIjEyMzQiLCAiNTY3OCIpCisgICAgICAgICMgbm8gd2hpdGVzcGFjZSBhbmQgdW5kZXJzY29yZSBzdHJpcHBpbmcgaXMgZG9uZSB3aXRoIHRoaXMgbWV0aG9kCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIG5jLmNyZWF0ZV9kZWNpbWFsLCAiIDEyMzQiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBuYy5jcmVhdGVfZGVjaW1hbCwgIjEyXzM0IikKIAogICAgICAgICAjIHRvbyBtYW55IE5hTiBwYXlsb2FkIGRpZ2l0cwogICAgICAgICBuYy5wcmVjID0gMwpAQCAtMjA0Nyw2ICsyMDU3LDM5IEBACiAgICAgICAgIGQgPSBEZWNpbWFsKCAoMSwgKDAsIDIsIDcsIDEpLCAnRicpICkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLmFzX3R1cGxlKCksICgxLCAoMCwpLCAnRicpKQogCisgICAgZGVmIHRlc3RfYXNfaW50ZWdlcl9yYXRpbyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKKyAgICAgICAgIyBleGNlcHRpb25hbCBjYXNlcworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsLmFzX2ludGVnZXJfcmF0aW8sIERlY2ltYWwoJ2luZicpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsLmFzX2ludGVnZXJfcmF0aW8sIERlY2ltYWwoJy1pbmYnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbC5hc19pbnRlZ2VyX3JhdGlvLCBEZWNpbWFsKCctbmFuJykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwuYXNfaW50ZWdlcl9yYXRpbywgRGVjaW1hbCgnc25hbjEyMycpKQorCisgICAgICAgIGZvciBleHAgaW4gcmFuZ2UoLTQsIDIpOgorICAgICAgICAgICAgZm9yIGNvZWZmIGluIHJhbmdlKDEwMDApOgorICAgICAgICAgICAgICAgIGZvciBzaWduIGluICcrJywgJy0nOgorICAgICAgICAgICAgICAgICAgICBkID0gRGVjaW1hbCgnJXMlZEUlZCcgJSAoc2lnbiwgY29lZmYsIGV4cCkpCisgICAgICAgICAgICAgICAgICAgIHBxID0gZC5hc19pbnRlZ2VyX3JhdGlvKCkKKyAgICAgICAgICAgICAgICAgICAgcCwgcSA9IHBxCisKKyAgICAgICAgICAgICAgICAgICAgIyBjaGVjayByZXR1cm4gdHlwZQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UocHEsIHR1cGxlKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UocCwgaW50KQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UocSwgaW50KQorCisgICAgICAgICAgICAgICAgICAgICMgY2hlY2sgbm9ybWFsaXphdGlvbjogIHEgc2hvdWxkIGJlIHBvc2l0aXZlOworICAgICAgICAgICAgICAgICAgICAjIHAgc2hvdWxkIGJlIHJlbGF0aXZlbHkgcHJpbWUgdG8gcS4KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKHEsIDApCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF0aC5nY2QocCwgcSksIDEpCisKKyAgICAgICAgICAgICAgICAgICAgIyBjaGVjayB0aGF0IHAvcSBhY3R1YWxseSBnaXZlcyB0aGUgY29ycmVjdCB2YWx1ZQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwocCkgLyBEZWNpbWFsKHEpLCBkKQorCiAgICAgZGVmIHRlc3Rfc3ViY2xhc3Npbmcoc2VsZik6CiAgICAgICAgICMgRGlmZmVyZW50IGJlaGF2aW91cnMgd2hlbiBzdWJjbGFzc2luZyBEZWNpbWFsCiAgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kZXF1ZS5weSBiL0xpYi90ZXN0L3Rlc3RfZGVxdWUucHkKaW5kZXggMThlMWRmMC4uY2U1MTdiNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kZXF1ZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RlcXVlLnB5CkBAIC0yODksNyArMjg5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5pbmRleChlbGVtZW50LCBzdGFydCwgc3RvcCksIHRhcmdldCkKIAotICAgIGRlZiB0ZXN0X2luc2VydF9idWdfMjQ5MTMoc2VsZik6CisgICAgZGVmIHRlc3RfaW5kZXhfYnVnXzI0OTEzKHNlbGYpOgogICAgICAgICBkID0gZGVxdWUoJ0EnICogMykKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKICAgICAgICAgICAgIGkgPSBkLmluZGV4KCJIZWxsbyB3b3JsZCIsIDAsIDQpCkBAIC02MjIsMjAgKzYyMiwyMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZCksIGxpc3QoZSkpCiAKICAgICBkZWYgdGVzdF9waWNrbGUoc2VsZik6Ci0gICAgICAgIGQgPSBkZXF1ZShyYW5nZSgyMDApKQotICAgICAgICBmb3IgaSBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgotICAgICAgICAgICAgcyA9IHBpY2tsZS5kdW1wcyhkLCBpKQotICAgICAgICAgICAgZSA9IHBpY2tsZS5sb2FkcyhzKQotICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpZChkKSwgaWQoZSkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZCksIGxpc3QoZSkpCisgICAgICAgIGZvciBkIGluIGRlcXVlKHJhbmdlKDIwMCkpLCBkZXF1ZShyYW5nZSgyMDApLCAxMDApOgorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgICAgICBzID0gcGlja2xlLmR1bXBzKGQsIGkpCisgICAgICAgICAgICAgICAgZSA9IHBpY2tsZS5sb2FkcyhzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaWQoZSksIGlkKGQpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChlKSwgbGlzdChkKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUubWF4bGVuLCBkLm1heGxlbikKIAotIyMgICAgZGVmIHRlc3RfcGlja2xlX3JlY3Vyc2l2ZShzZWxmKToKLSMjICAgICAgICBkID0gZGVxdWUoJ2FiYycpCi0jIyAgICAgICAgZC5hcHBlbmQoZCkKLSMjICAgICAgICBmb3IgaSBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgotIyMgICAgICAgICAgICBlID0gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhkLCBpKSkKLSMjICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpZChkKSwgaWQoZSkpCi0jIyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaWQoZSksIGlkKGVbLTFdKSkKKyAgICBkZWYgdGVzdF9waWNrbGVfcmVjdXJzaXZlKHNlbGYpOgorICAgICAgICBmb3IgZCBpbiBkZXF1ZSgnYWJjJyksIGRlcXVlKCdhYmMnLCAzKToKKyAgICAgICAgICAgIGQuYXBwZW5kKGQpCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgICAgIGUgPSBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGQsIGkpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaWQoZSksIGlkKGQpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaWQoZVstMV0pLCBpZChlKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUubWF4bGVuLCBkLm1heGxlbikKIAogICAgIGRlZiB0ZXN0X2l0ZXJhdG9yX3BpY2tsZShzZWxmKToKICAgICAgICAgb3JpZyA9IGRlcXVlKHJhbmdlKDIwMCkpCkBAIC02OTYsNiArNjk4LDE1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaWQoZCksIGlkKGUpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZCksIGxpc3QoZSkpCiAKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoNSk6CisgICAgICAgICAgICBmb3IgbWF4bGVuIGluIHJhbmdlKC0xLCA2KToKKyAgICAgICAgICAgICAgICBzID0gW3JhbmRvbS5yYW5kb20oKSBmb3IgaiBpbiByYW5nZShpKV0KKyAgICAgICAgICAgICAgICBkID0gZGVxdWUocykgaWYgbWF4bGVuID09IC0xIGVsc2UgZGVxdWUocywgbWF4bGVuKQorICAgICAgICAgICAgICAgIGUgPSBkLmNvcHkoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQubWF4bGVuLCBlLm1heGxlbikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYWxsKHggaXMgeSBmb3IgeCwgeSBpbiB6aXAoZCwgZSkpKQorCiAgICAgZGVmIHRlc3RfY29weV9tZXRob2Qoc2VsZik6CiAgICAgICAgIG11dCA9IFsxMF0KICAgICAgICAgZCA9IGRlcXVlKFttdXRdKQpAQCAtODQ1LDI0ICs4NTYsMjYgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShkKSwgdHlwZShlKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChkKSwgbGlzdChlKSkKIAotIyMgICAgZGVmIHRlc3RfcGlja2xlKHNlbGYpOgotIyMgICAgICAgIGQgPSBEZXF1ZSgnYWJjJykKLSMjICAgICAgICBkLmFwcGVuZChkKQotIyMKLSMjICAgICAgICBlID0gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhkKSkKLSMjICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkKGQpLCBpZChlKSkKLSMjICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZCksIHR5cGUoZSkpCi0jIyAgICAgICAgZGQgPSBkLnBvcCgpCi0jIyAgICAgICAgZWUgPSBlLnBvcCgpCi0jIyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpZChlKSwgaWQoZWUpKQotIyMgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgZSkKLSMjCi0jIyAgICAgICAgZC54ID0gZAotIyMgICAgICAgIGUgPSBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGQpKQotIyMgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaWQoZSksIGlkKGUueCkpCi0jIwotIyMgICAgICAgIGQgPSBEZXF1ZVdpdGhCYWRJdGVyKCdhYmMnKQotIyMgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcGlja2xlLmR1bXBzLCBkKQorICAgIGRlZiB0ZXN0X3BpY2tsZV9yZWN1cnNpdmUoc2VsZik6CisgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgZm9yIGQgaW4gRGVxdWUoJ2FiYycpLCBEZXF1ZSgnYWJjJywgMyk6CisgICAgICAgICAgICAgICAgZC5hcHBlbmQoZCkKKworICAgICAgICAgICAgICAgIGUgPSBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGQsIHByb3RvKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkKGUpLCBpZChkKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZSksIHR5cGUoZCkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLm1heGxlbiwgZC5tYXhsZW4pCisgICAgICAgICAgICAgICAgZGQgPSBkLnBvcCgpCisgICAgICAgICAgICAgICAgZWUgPSBlLnBvcCgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpZChlZSksIGlkKGUpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZSwgZCkKKworICAgICAgICAgICAgICAgIGQueCA9IGQKKyAgICAgICAgICAgICAgICBlID0gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhkLCBwcm90bykpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpZChlLngpLCBpZChlKSkKKworICAgICAgICAgICAgZm9yIGQgaW4gRGVxdWVXaXRoQmFkSXRlcignYWJjJyksIERlcXVlV2l0aEJhZEl0ZXIoJ2FiYycsIDIpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcGlja2xlLmR1bXBzLCBkLCBwcm90bykKIAogICAgIGRlZiB0ZXN0X3dlYWtyZWYoc2VsZik6CiAgICAgICAgIGQgPSBkZXF1ZSgnZ2FsbGFoYWQnKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kZXNjci5weSBiL0xpYi90ZXN0L3Rlc3RfZGVzY3IucHkKaW5kZXggZWRhNmZjMS4uYzViZmY3NyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kZXNjci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Rlc2NyLnB5CkBAIC00ODI4LDExICs0ODI4LDggQEAKICAgICAgICAgICAgICAgICByZXR1cm4gKGFyZ3MsIGt3YXJncykKICAgICAgICAgb2JqID0gQzMoKQogICAgICAgICBmb3IgcHJvdG8gaW4gcHJvdG9jb2xzOgotICAgICAgICAgICAgaWYgcHJvdG8gPj0gNDoKKyAgICAgICAgICAgIGlmIHByb3RvID49IDI6CiAgICAgICAgICAgICAgICAgc2VsZi5fY2hlY2tfcmVkdWNlKHByb3RvLCBvYmosIGFyZ3MsIGt3YXJncykKLSAgICAgICAgICAgIGVsaWYgcHJvdG8gPj0gMjoKLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgotICAgICAgICAgICAgICAgICAgICBvYmouX19yZWR1Y2VfZXhfXyhwcm90bykKIAogICAgICAgICBjbGFzcyBDNDoKICAgICAgICAgICAgIGRlZiBfX2dldG5ld2FyZ3NfZXhfXyhzZWxmKToKQEAgLTUxNTEsMTAgKzUxNDgsNiBAQAogICAgICAgICAgICAgICAgIGt3YXJncyA9IGdldGF0dHIoY2xzLCAnS1dBUkdTJywge30pCiAgICAgICAgICAgICAgICAgb2JqID0gY2xzKCpjbHMuQVJHUywgKiprd2FyZ3MpCiAgICAgICAgICAgICAgICAgcHJvdG8gPSBwaWNrbGVfY29waWVyLnByb3RvCi0gICAgICAgICAgICAgICAgaWYgMiA8PSBwcm90byA8IDQgYW5kIGhhc2F0dHIoY2xzLCAnX19nZXRuZXdhcmdzX2V4X18nKToKLSAgICAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHBpY2tsZV9jb3BpZXIuZHVtcHMob2JqLCBwcm90bykKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICBvYmpjb3B5ID0gcGlja2xlX2NvcGllci5jb3B5KG9iaikKICAgICAgICAgICAgICAgICBzZWxmLl9hc3NlcnRfaXNfY29weShvYmosIG9iamNvcHkpCiAgICAgICAgICAgICAgICAgIyBGb3IgdGVzdCBjbGFzc2VzIHRoYXQgc3VwcG9ydHMgdGhpcywgbWFrZSBzdXJlIHdlIGRpZG4ndCBnbwpAQCAtNTIxMywxMiArNTIwNiwxNCBAQAogICAgICAgICBhLCBiID0gQSgpLCBCKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzeXMuZ2V0c2l6ZW9mKHZhcnMoYSkpLCBzeXMuZ2V0c2l6ZW9mKHZhcnMoYikpKQogICAgICAgICBzZWxmLmFzc2VydExlc3Moc3lzLmdldHNpemVvZih2YXJzKGEpKSwgc3lzLmdldHNpemVvZih7fSkpCi0gICAgICAgIGEueCwgYS55LCBhLnosIGEudyA9IHJhbmdlKDQpCisgICAgICAgICMgSW5pdGlhbCBoYXNoIHRhYmxlIGNhbiBjb250YWluIGF0IG1vc3QgNSBlbGVtZW50cy4KKyAgICAgICAgIyBTZXQgNiBhdHRyaWJ1dGVzIHRvIGNhdXNlIGludGVybmFsIHJlc2l6aW5nLgorICAgICAgICBhLngsIGEueSwgYS56LCBhLncsIGEudiwgYS51ID0gcmFuZ2UoNikKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChzeXMuZ2V0c2l6ZW9mKHZhcnMoYSkpLCBzeXMuZ2V0c2l6ZW9mKHZhcnMoYikpKQogICAgICAgICBhMiA9IEEoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5nZXRzaXplb2YodmFycyhhKSksIHN5cy5nZXRzaXplb2YodmFycyhhMikpKQogICAgICAgICBzZWxmLmFzc2VydExlc3Moc3lzLmdldHNpemVvZih2YXJzKGEpKSwgc3lzLmdldHNpemVvZih7fSkpCi0gICAgICAgIGIudSwgYi52LCBiLncsIGIudCA9IHJhbmdlKDQpCisgICAgICAgIGIudSwgYi52LCBiLncsIGIudCwgYi5zLCBiLnIgPSByYW5nZSg2KQogICAgICAgICBzZWxmLmFzc2VydExlc3Moc3lzLmdldHNpemVvZih2YXJzKGIpKSwgc3lzLmdldHNpemVvZih7fSkpCiAKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kZXNjcnR1dC5weSBiL0xpYi90ZXN0L3Rlc3RfZGVzY3J0dXQucHkKaW5kZXggNTA2ZDFhYi4uYjg0ZDY0NCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kZXNjcnR1dC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Rlc2NydHV0LnB5CkBAIC0xODIsNiArMTgyLDcgQEAKICAgICAgJ19faWFkZF9fJywKICAgICAgJ19faW11bF9fJywKICAgICAgJ19faW5pdF9fJywKKyAgICAgJ19faW5pdF9zdWJjbGFzc19fJywKICAgICAgJ19faXRlcl9fJywKICAgICAgJ19fbGVfXycsCiAgICAgICdfX2xlbl9fJywKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGV2cG9sbC5weSBiL0xpYi90ZXN0L3Rlc3RfZGV2cG9sbC5weQppbmRleCA5NTU2MThhLi5jMTMzYzgxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RldnBvbGwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kZXZwb2xsLnB5CkBAIC01LDkgKzUsOCBAQAogaW1wb3J0IG9zCiBpbXBvcnQgcmFuZG9tCiBpbXBvcnQgc2VsZWN0Ci1pbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIHJ1bl91bml0dGVzdCwgY3B5dGhvbl9vbmx5Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCBjcHl0aG9uX29ubHkKIAogaWYgbm90IGhhc2F0dHIoc2VsZWN0LCAnZGV2cG9sbCcpIDoKICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgndGVzdCB3b3JrcyBvbmx5IG9uIFNvbGFyaXMgT1MgZmFtaWx5JykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGljdC5weSBiL0xpYi90ZXN0L3Rlc3RfZGljdC5weQppbmRleCBiODVkMzMzLi44MzJiYjljIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RpY3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kaWN0LnB5CkBAIC0xLDEwICsxLDEzIEBACi1pbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotCi1pbXBvcnQgY29sbGVjdGlvbnMsIHJhbmRvbSwgc3RyaW5nCitpbXBvcnQgY29sbGVjdGlvbnMKIGltcG9ydCBjb2xsZWN0aW9ucy5hYmMKLWltcG9ydCBnYywgd2Vha3JlZgoraW1wb3J0IGdjCiBpbXBvcnQgcGlja2xlCitpbXBvcnQgcmFuZG9tCitpbXBvcnQgc3RyaW5nCitpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3ZWFrcmVmCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogCiBjbGFzcyBEaWN0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC04MzYsMjEgKzgzOSwxMjcgQEAKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgc2VsZi5fdHJhY2tlZChNeURpY3QoKSkKIAorICAgIGRlZiBtYWtlX3NoYXJlZF9rZXlfZGljdChzZWxmLCBuKToKKyAgICAgICAgY2xhc3MgQzoKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBkaWN0cyA9IFtdCisgICAgICAgIGZvciBpIGluIHJhbmdlKG4pOgorICAgICAgICAgICAgYSA9IEMoKQorICAgICAgICAgICAgYS54LCBhLnksIGEueiA9IDEsIDIsIDMKKyAgICAgICAgICAgIGRpY3RzLmFwcGVuZChhLl9fZGljdF9fKQorCisgICAgICAgIHJldHVybiBkaWN0cworCisgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3Rfc3BsaXR0YWJsZV9zZXRkZWZhdWx0KHNlbGYpOgorICAgICAgICAiIiJzcGxpdCB0YWJsZSBtdXN0IGJlIGNvbWJpbmVkIHdoZW4gc2V0ZGVmYXVsdCgpCisgICAgICAgIGJyZWFrcyBpbnNlcnRpb24gb3JkZXIiIiIKKyAgICAgICAgYSwgYiA9IHNlbGYubWFrZV9zaGFyZWRfa2V5X2RpY3QoMikKKworICAgICAgICBhWydhJ10gPSAxCisgICAgICAgIHNpemVfYSA9IHN5cy5nZXRzaXplb2YoYSkKKyAgICAgICAgYVsnYiddID0gMgorICAgICAgICBiLnNldGRlZmF1bHQoJ2InLCAyKQorICAgICAgICBzaXplX2IgPSBzeXMuZ2V0c2l6ZW9mKGIpCisgICAgICAgIGJbJ2EnXSA9IDEKKworICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoc2l6ZV9iLCBzaXplX2EpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChhKSwgWyd4JywgJ3knLCAneicsICdhJywgJ2InXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGIpLCBbJ3gnLCAneScsICd6JywgJ2InLCAnYSddKQorCisgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3Rfc3BsaXR0YWJsZV9kZWwoc2VsZik6CisgICAgICAgICIiInNwbGl0IHRhYmxlIG11c3QgYmUgY29tYmluZWQgd2hlbiBkZWwgZFtrXSIiIgorICAgICAgICBhLCBiID0gc2VsZi5tYWtlX3NoYXJlZF9rZXlfZGljdCgyKQorCisgICAgICAgIG9yaWdfc2l6ZSA9IHN5cy5nZXRzaXplb2YoYSkKKworICAgICAgICBkZWwgYVsneSddICAjIHNwbGl0IHRhYmxlIGlzIGNvbWJpbmVkCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IpOgorICAgICAgICAgICAgZGVsIGFbJ3knXQorCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihzeXMuZ2V0c2l6ZW9mKGEpLCBvcmlnX3NpemUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChhKSwgWyd4JywgJ3onXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGIpLCBbJ3gnLCAneScsICd6J10pCisKKyAgICAgICAgIyBUd28gZGljdHMgaGF2ZSBkaWZmZXJlbnQgaW5zZXJ0aW9uIG9yZGVyLgorICAgICAgICBhWyd5J10gPSA0MgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYSksIFsneCcsICd6JywgJ3knXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGIpLCBbJ3gnLCAneScsICd6J10pCisKKyAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9zcGxpdHRhYmxlX3BvcChzZWxmKToKKyAgICAgICAgIiIic3BsaXQgdGFibGUgbXVzdCBiZSBjb21iaW5lZCB3aGVuIGQucG9wKGspIiIiCisgICAgICAgIGEsIGIgPSBzZWxmLm1ha2Vfc2hhcmVkX2tleV9kaWN0KDIpCisKKyAgICAgICAgb3JpZ19zaXplID0gc3lzLmdldHNpemVvZihhKQorCisgICAgICAgIGEucG9wKCd5JykgICMgc3BsaXQgdGFibGUgaXMgY29tYmluZWQKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvcik6CisgICAgICAgICAgICBhLnBvcCgneScpCisKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKHN5cy5nZXRzaXplb2YoYSksIG9yaWdfc2l6ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGEpLCBbJ3gnLCAneiddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYiksIFsneCcsICd5JywgJ3onXSkKKworICAgICAgICAjIFR3byBkaWN0cyBoYXZlIGRpZmZlcmVudCBpbnNlcnRpb24gb3JkZXIuCisgICAgICAgIGFbJ3knXSA9IDQyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChhKSwgWyd4JywgJ3onLCAneSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYiksIFsneCcsICd5JywgJ3onXSkKKworICAgIEBzdXBwb3J0LmNweXRob25fb25seQorICAgIGRlZiB0ZXN0X3NwbGl0dGFibGVfcG9wX3BlbmRpbmcoc2VsZik6CisgICAgICAgICIiInBvcCBhIHBlbmRpbmcga2V5IGluIGEgc3BsaXR0ZWQgdGFibGUgc2hvdWxkIG5vdCBjcmFzaCIiIgorICAgICAgICBhLCBiID0gc2VsZi5tYWtlX3NoYXJlZF9rZXlfZGljdCgyKQorCisgICAgICAgIGFbJ2EnXSA9IDQKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvcik6CisgICAgICAgICAgICBiLnBvcCgnYScpCisKKyAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9zcGxpdHRhYmxlX3BvcGl0ZW0oc2VsZik6CisgICAgICAgICIiInNwbGl0IHRhYmxlIG11c3QgYmUgY29tYmluZWQgd2hlbiBkLnBvcGl0ZW0oKSIiIgorICAgICAgICBhLCBiID0gc2VsZi5tYWtlX3NoYXJlZF9rZXlfZGljdCgyKQorCisgICAgICAgIG9yaWdfc2l6ZSA9IHN5cy5nZXRzaXplb2YoYSkKKworICAgICAgICBpdGVtID0gYS5wb3BpdGVtKCkgICMgc3BsaXQgdGFibGUgaXMgY29tYmluZWQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpdGVtLCAoJ3onLCAzKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvcik6CisgICAgICAgICAgICBkZWwgYVsneiddCisKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKHN5cy5nZXRzaXplb2YoYSksIG9yaWdfc2l6ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGEpLCBbJ3gnLCAneSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYiksIFsneCcsICd5JywgJ3onXSkKKwogICAgIEBzdXBwb3J0LmNweXRob25fb25seQogICAgIGRlZiB0ZXN0X3NwbGl0dGFibGVfc2V0YXR0cl9hZnRlcl9wb3Aoc2VsZik6Ci0gICAgICAgICIiInNldGF0dHIgbXVzdCBub3QgY29udmVydCBjb21iaW5lZCB0YWJsZSBpbnRvIHNwbGl0IHRhYmxlIiIiCisgICAgICAgICIiInNldGF0dHIoKSBtdXN0IG5vdCBjb252ZXJ0IGNvbWJpbmVkIHRhYmxlIGludG8gc3BsaXQgdGFibGUuIiIiCiAgICAgICAgICMgSXNzdWUgMjgxNDcKICAgICAgICAgaW1wb3J0IF90ZXN0Y2FwaQogCiAgICAgICAgIGNsYXNzIEM6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGEgPSBDKCkKKworICAgICAgICBhLmEgPSAxCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShfdGVzdGNhcGkuZGljdF9oYXNzcGxpdHRhYmxlKGEuX19kaWN0X18pKQorCisgICAgICAgICMgZGljdC5wb3AoKSBjb252ZXJ0IGl0IHRvIGNvbWJpbmVkIHRhYmxlCisgICAgICAgIGEuX19kaWN0X18ucG9wKCdhJykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShfdGVzdGNhcGkuZGljdF9oYXNzcGxpdHRhYmxlKGEuX19kaWN0X18pKQorCisgICAgICAgICMgQnV0IEMgc2hvdWxkIG5vdCBjb252ZXJ0IGEuX19kaWN0X18gdG8gc3BsaXQgdGFibGUgYWdhaW4uCisgICAgICAgIGEuYSA9IDEKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShfdGVzdGNhcGkuZGljdF9oYXNzcGxpdHRhYmxlKGEuX19kaWN0X18pKQorCisgICAgICAgICMgU2FtZSBmb3IgcG9waXRlbSgpCisgICAgICAgIGEgPSBDKCkKICAgICAgICAgYS5hID0gMgogICAgICAgICBzZWxmLmFzc2VydFRydWUoX3Rlc3RjYXBpLmRpY3RfaGFzc3BsaXR0YWJsZShhLl9fZGljdF9fKSkKLSAgICAgICAgIyBkaWN0LnBvcGl0ZW0oKSBjb252ZXJ0IGl0IHRvIGNvbWJpbmVkIHRhYmxlCiAgICAgICAgIGEuX19kaWN0X18ucG9waXRlbSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoX3Rlc3RjYXBpLmRpY3RfaGFzc3BsaXR0YWJsZShhLl9fZGljdF9fKSkKLSAgICAgICAgIyBCdXQgQyBzaG91bGQgbm90IGNvbnZlcnQgYS5fX2RpY3RfXyB0byBzcGxpdCB0YWJsZSBhZ2Fpbi4KICAgICAgICAgYS5hID0gMwogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKF90ZXN0Y2FwaS5kaWN0X2hhc3NwbGl0dGFibGUoYS5fX2RpY3RfXykpCiAKQEAgLTk3Niw2ICsxMDg1LDM3IEBACiAgICAgICAgIHN1cHBvcnQuY2hlY2tfZnJlZV9hZnRlcl9pdGVyYXRpbmcoc2VsZiwgbGFtYmRhIGQ6IGl0ZXIoZC52YWx1ZXMoKSksIGRpY3QpCiAgICAgICAgIHN1cHBvcnQuY2hlY2tfZnJlZV9hZnRlcl9pdGVyYXRpbmcoc2VsZiwgbGFtYmRhIGQ6IGl0ZXIoZC5pdGVtcygpKSwgZGljdCkKIAorCitjbGFzcyBDQVBJVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAjIFRlc3QgX1B5RGljdF9HZXRJdGVtX0tub3duSGFzaCgpCisgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3RfZ2V0aXRlbV9rbm93bmhhc2goc2VsZik6CisgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBkaWN0X2dldGl0ZW1fa25vd25oYXNoCisKKyAgICAgICAgZCA9IHsneCc6IDEsICd5JzogMiwgJ3onOiAzfQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpY3RfZ2V0aXRlbV9rbm93bmhhc2goZCwgJ3gnLCBoYXNoKCd4JykpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpY3RfZ2V0aXRlbV9rbm93bmhhc2goZCwgJ3knLCBoYXNoKCd5JykpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpY3RfZ2V0aXRlbV9rbm93bmhhc2goZCwgJ3onLCBoYXNoKCd6JykpLCAzKQorCisgICAgICAgICMgbm90IGEgZGljdAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FcnJvciwgZGljdF9nZXRpdGVtX2tub3duaGFzaCwgW10sIDEsIGhhc2goMSkpCisgICAgICAgICMga2V5IGRvZXMgbm90IGV4aXN0CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBkaWN0X2dldGl0ZW1fa25vd25oYXNoLCB7fSwgMSwgaGFzaCgxKSkKKworICAgICAgICBjbGFzcyBFeGMoRXhjZXB0aW9uKTogcGFzcworICAgICAgICBjbGFzcyBCYWRFcToKKyAgICAgICAgICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIHJhaXNlIEV4YworICAgICAgICAgICAgZGVmIF9faGFzaF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiA3CisKKyAgICAgICAgazEsIGsyID0gQmFkRXEoKSwgQmFkRXEoKQorICAgICAgICBkID0ge2sxOiAxfQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpY3RfZ2V0aXRlbV9rbm93bmhhc2goZCwgazEsIGhhc2goazEpKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRXhjLCBkaWN0X2dldGl0ZW1fa25vd25oYXNoLCBkLCBrMiwgaGFzaChrMikpCisKKwogZnJvbSB0ZXN0IGltcG9ydCBtYXBwaW5nX3Rlc3RzCiAKIGNsYXNzIEdlbmVyYWxNYXBwaW5nVGVzdHMobWFwcGluZ190ZXN0cy5CYXNpY1Rlc3RNYXBwaW5nUHJvdG9jb2wpOgpAQCAtOTg3LDUgKzExMjcsNiBAQAogY2xhc3MgU3ViY2xhc3NNYXBwaW5nVGVzdHMobWFwcGluZ190ZXN0cy5CYXNpY1Rlc3RNYXBwaW5nUHJvdG9jb2wpOgogICAgIHR5cGUydGVzdCA9IERpY3QKIAorCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kaWN0X3ZlcnNpb24ucHkgYi9MaWIvdGVzdC90ZXN0X2RpY3RfdmVyc2lvbi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NjcxZjlmCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9kaWN0X3ZlcnNpb24ucHkKQEAgLTAsMCArMSwxODYgQEAKKyIiIgorVGVzdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUEVQIDUwOTogZGljdGlvbmFyeSB2ZXJzaW9ubmluZy4KKyIiIgoraW1wb3J0IHVuaXR0ZXN0Citmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKKworIyBQRVAgNTA5IGlzIGltcGxlbWVudGVkIGluIENQeXRob24gYnV0IG90aGVyIFB5dGhvbiBpbXBsZW1lbnRhdGlvbnMKKyMgZG9uJ3QgcmVxdWlyZSB0byBpbXBsZW1lbnQgaXQKK190ZXN0Y2FwaSA9IHN1cHBvcnQuaW1wb3J0X21vZHVsZSgnX3Rlc3RjYXBpJykKKworCitjbGFzcyBEaWN0VmVyc2lvblRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICB0eXBlMnRlc3QgPSBkaWN0CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuc2Vlbl92ZXJzaW9ucyA9IHNldCgpCisgICAgICAgIHNlbGYuZGljdCA9IE5vbmUKKworICAgIGRlZiBjaGVja192ZXJzaW9uX3VuaXF1ZShzZWxmLCBteWRpY3QpOgorICAgICAgICB2ZXJzaW9uID0gX3Rlc3RjYXBpLmRpY3RfZ2V0X3ZlcnNpb24obXlkaWN0KQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKHZlcnNpb24sIHNlbGYuc2Vlbl92ZXJzaW9ucykKKyAgICAgICAgc2VsZi5zZWVuX3ZlcnNpb25zLmFkZCh2ZXJzaW9uKQorCisgICAgZGVmIGNoZWNrX3ZlcnNpb25fY2hhbmdlZChzZWxmLCBteWRpY3QsIG1ldGhvZCwgKmFyZ3MsICoqa3cpOgorICAgICAgICByZXN1bHQgPSBtZXRob2QoKmFyZ3MsICoqa3cpCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl91bmlxdWUobXlkaWN0KQorICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAgICBkZWYgY2hlY2tfdmVyc2lvbl9kb250X2NoYW5nZShzZWxmLCBteWRpY3QsIG1ldGhvZCwgKmFyZ3MsICoqa3cpOgorICAgICAgICB2ZXJzaW9uMSA9IF90ZXN0Y2FwaS5kaWN0X2dldF92ZXJzaW9uKG15ZGljdCkKKyAgICAgICAgc2VsZi5zZWVuX3ZlcnNpb25zLmFkZCh2ZXJzaW9uMSkKKworICAgICAgICByZXN1bHQgPSBtZXRob2QoKmFyZ3MsICoqa3cpCisKKyAgICAgICAgdmVyc2lvbjIgPSBfdGVzdGNhcGkuZGljdF9nZXRfdmVyc2lvbihteWRpY3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmVyc2lvbjIsIHZlcnNpb24xLCAidmVyc2lvbiBjaGFuZ2VkIikKKworICAgICAgICByZXR1cm4gIHJlc3VsdAorCisgICAgZGVmIG5ld19kaWN0KHNlbGYsICphcmdzLCAqKmt3KToKKyAgICAgICAgZCA9IHNlbGYudHlwZTJ0ZXN0KCphcmdzLCAqKmt3KQorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fdW5pcXVlKGQpCisgICAgICAgIHJldHVybiBkCisKKyAgICBkZWYgdGVzdF9jb25zdHJ1Y3RvcihzZWxmKToKKyAgICAgICAgIyBuZXcgZW1wdHkgZGljdGlvbmFyaWVzIG11c3QgYWxsIGhhdmUgYW4gdW5pcXVlIHZlcnNpb24KKyAgICAgICAgZW1wdHkxID0gc2VsZi5uZXdfZGljdCgpCisgICAgICAgIGVtcHR5MiA9IHNlbGYubmV3X2RpY3QoKQorICAgICAgICBlbXB0eTMgPSBzZWxmLm5ld19kaWN0KCkKKworICAgICAgICAjIG5vbi1lbXB0eSBkaWN0aW9uYXJpZXMgbXVzdCBhbHNvIGhhdmUgYW4gdW5pcXVlIHZlcnNpb24KKyAgICAgICAgbm9uZW1wdHkxID0gc2VsZi5uZXdfZGljdCh4PSd4JykKKyAgICAgICAgbm9uZW1wdHkyID0gc2VsZi5uZXdfZGljdCh4PSd4JywgeT0neScpCisKKyAgICBkZWYgdGVzdF9jb3B5KHNlbGYpOgorICAgICAgICBkID0gc2VsZi5uZXdfZGljdChhPTEsIGI9MikKKworICAgICAgICBkMiA9IHNlbGYuY2hlY2tfdmVyc2lvbl9kb250X2NoYW5nZShkLCBkLmNvcHkpCisKKyAgICAgICAgIyBkaWN0LmNvcHkoKSBtdXN0IGNyZWF0ZSBhIGRpY3Rpb25hcnkgd2l0aCBhIG5ldyB1bmlxdWUgdmVyc2lvbgorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fdW5pcXVlKGQyKQorCisgICAgZGVmIHRlc3Rfc2V0aXRlbShzZWxmKToKKyAgICAgICAgZCA9IHNlbGYubmV3X2RpY3QoKQorCisgICAgICAgICMgY3JlYXRpbmcgbmV3IGtleXMgbXVzdCBjaGFuZ2UgdGhlIHZlcnNpb24KKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2NoYW5nZWQoZCwgZC5fX3NldGl0ZW1fXywgJ3gnLCAneCcpCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQuX19zZXRpdGVtX18sICd5JywgJ3knKQorCisgICAgICAgICMgY2hhbmdpbmcgdmFsdWVzIG11c3QgY2hhbmdlIHRoZSB2ZXJzaW9uCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQuX19zZXRpdGVtX18sICd4JywgMSkKKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2NoYW5nZWQoZCwgZC5fX3NldGl0ZW1fXywgJ3knLCAyKQorCisgICAgZGVmIHRlc3Rfc2V0aXRlbV9zYW1lX3ZhbHVlKHNlbGYpOgorICAgICAgICB2YWx1ZSA9IG9iamVjdCgpCisgICAgICAgIGQgPSBzZWxmLm5ld19kaWN0KCkKKworICAgICAgICAjIHNldHRpbmcgYSBrZXkgbXVzdCBjaGFuZ2UgdGhlIHZlcnNpb24KKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2NoYW5nZWQoZCwgZC5fX3NldGl0ZW1fXywgJ2tleScsIHZhbHVlKQorCisgICAgICAgICMgc2V0dGluZyBhIGtleSB0byB0aGUgc2FtZSB2YWx1ZSB3aXRoIGRpY3QuX19zZXRpdGVtX18KKyAgICAgICAgIyBtdXN0IGNoYW5nZSB0aGUgdmVyc2lvbgorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fY2hhbmdlZChkLCBkLl9fc2V0aXRlbV9fLCAna2V5JywgdmFsdWUpCisKKyAgICAgICAgIyBzZXR0aW5nIGEga2V5IHRvIHRoZSBzYW1lIHZhbHVlIHdpdGggZGljdC51cGRhdGUKKyAgICAgICAgIyBtdXN0IGNoYW5nZSB0aGUgdmVyc2lvbgorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fY2hhbmdlZChkLCBkLnVwZGF0ZSwga2V5PXZhbHVlKQorCisgICAgICAgIGQyID0gc2VsZi5uZXdfZGljdChrZXk9dmFsdWUpCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQudXBkYXRlLCBkMikKKworICAgIGRlZiB0ZXN0X3NldGl0ZW1fZXF1YWwoc2VsZik6CisgICAgICAgIGNsYXNzIEFsd2F5c0VxdWFsOgorICAgICAgICAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICB2YWx1ZTEgPSBBbHdheXNFcXVhbCgpCisgICAgICAgIHZhbHVlMiA9IEFsd2F5c0VxdWFsKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHZhbHVlMSA9PSB2YWx1ZTIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodmFsdWUxICE9IHZhbHVlMikKKworICAgICAgICBkID0gc2VsZi5uZXdfZGljdCgpCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQuX19zZXRpdGVtX18sICdrZXknLCB2YWx1ZTEpCisKKyAgICAgICAgIyBzZXR0aW5nIGEga2V5IHRvIGEgdmFsdWUgZXF1YWwgdG8gdGhlIGN1cnJlbnQgdmFsdWUKKyAgICAgICAgIyB3aXRoIGRpY3QuX19zZXRpdGVtX18oKSBtdXN0IGNoYW5nZSB0aGUgdmVyc2lvbgorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fY2hhbmdlZChkLCBkLl9fc2V0aXRlbV9fLCAna2V5JywgdmFsdWUyKQorCisgICAgICAgICMgc2V0dGluZyBhIGtleSB0byBhIHZhbHVlIGVxdWFsIHRvIHRoZSBjdXJyZW50IHZhbHVlCisgICAgICAgICMgd2l0aCBkaWN0LnVwZGF0ZSgpIG11c3QgY2hhbmdlIHRoZSB2ZXJzaW9uCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQudXBkYXRlLCBrZXk9dmFsdWUxKQorCisgICAgICAgIGQyID0gc2VsZi5uZXdfZGljdChrZXk9dmFsdWUyKQorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fY2hhbmdlZChkLCBkLnVwZGF0ZSwgZDIpCisKKyAgICBkZWYgdGVzdF9zZXRkZWZhdWx0KHNlbGYpOgorICAgICAgICBkID0gc2VsZi5uZXdfZGljdCgpCisKKyAgICAgICAgIyBzZXR0aW5nIGEga2V5IHdpdGggZGljdC5zZXRkZWZhdWx0KCkgbXVzdCBjaGFuZ2UgdGhlIHZlcnNpb24KKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2NoYW5nZWQoZCwgZC5zZXRkZWZhdWx0LCAna2V5JywgJ3ZhbHVlMScpCisKKyAgICAgICAgIyBkb24ndCBjaGFuZ2UgdGhlIHZlcnNpb24gaWYgdGhlIGtleSBhbHJlYWR5IGV4aXN0cworICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fZG9udF9jaGFuZ2UoZCwgZC5zZXRkZWZhdWx0LCAna2V5JywgJ3ZhbHVlMicpCisKKyAgICBkZWYgdGVzdF9kZWxpdGVtKHNlbGYpOgorICAgICAgICBkID0gc2VsZi5uZXdfZGljdChrZXk9J3ZhbHVlJykKKworICAgICAgICAjIGRlbGV0aW5nIGEga2V5IHdpdGggZGljdC5fX2RlbGl0ZW1fXygpIG11c3QgY2hhbmdlIHRoZSB2ZXJzaW9uCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQuX19kZWxpdGVtX18sICdrZXknKQorCisgICAgICAgICMgZG9uJ3QgY2hhbmdlIHRoZSB2ZXJzaW9uIGlmIHRoZSBrZXkgZG9lc24ndCBleGlzdAorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fZG9udF9jaGFuZ2UoZCwgc2VsZi5hc3NlcnRSYWlzZXMsIEtleUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5fX2RlbGl0ZW1fXywgJ2tleScpCisKKyAgICBkZWYgdGVzdF9wb3Aoc2VsZik6CisgICAgICAgIGQgPSBzZWxmLm5ld19kaWN0KGtleT0ndmFsdWUnKQorCisgICAgICAgICMgcG9wKCkgbXVzdCBjaGFuZ2UgdGhlIHZlcnNpb24gaWYgdGhlIGtleSBleGlzdHMKKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2NoYW5nZWQoZCwgZC5wb3AsICdrZXknKQorCisgICAgICAgICMgcG9wKCkgbXVzdCBub3QgY2hhbmdlIHRoZSB2ZXJzaW9uIGlmIHRoZSBrZXkgZG9lcyBub3QgZXhpc3QKKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2RvbnRfY2hhbmdlKGQsIHNlbGYuYXNzZXJ0UmFpc2VzLCBLZXlFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQucG9wLCAna2V5JykKKworICAgIGRlZiB0ZXN0X3BvcGl0ZW0oc2VsZik6CisgICAgICAgIGQgPSBzZWxmLm5ld19kaWN0KGtleT0ndmFsdWUnKQorCisgICAgICAgICMgcG9waXRlbSgpIG11c3QgY2hhbmdlIHRoZSB2ZXJzaW9uIGlmIHRoZSBkaWN0IGlzIG5vdCBlbXB0eQorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fY2hhbmdlZChkLCBkLnBvcGl0ZW0pCisKKyAgICAgICAgIyBwb3BpdGVtKCkgbXVzdCBub3QgY2hhbmdlIHRoZSB2ZXJzaW9uIGlmIHRoZSBkaWN0IGlzIGVtcHR5CisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9kb250X2NoYW5nZShkLCBzZWxmLmFzc2VydFJhaXNlcywgS2V5RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLnBvcGl0ZW0pCisKKyAgICBkZWYgdGVzdF91cGRhdGUoc2VsZik6CisgICAgICAgIGQgPSBzZWxmLm5ld19kaWN0KGtleT0ndmFsdWUnKQorCisgICAgICAgICMgdXBkYXRlKCkgY2FsbGluZyB3aXRoIG5vIGFyZ3VtZW50IG11c3Qgbm90IGNoYW5nZSB0aGUgdmVyc2lvbgorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fZG9udF9jaGFuZ2UoZCwgZC51cGRhdGUpCisKKyAgICAgICAgIyB1cGRhdGUoKSBtdXN0IGNoYW5nZSB0aGUgdmVyc2lvbgorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fY2hhbmdlZChkLCBkLnVwZGF0ZSwga2V5PSduZXcgdmFsdWUnKQorCisgICAgICAgIGQyID0gc2VsZi5uZXdfZGljdChrZXk9J3ZhbHVlIDMnKQorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fY2hhbmdlZChkLCBkLnVwZGF0ZSwgZDIpCisKKyAgICBkZWYgdGVzdF9jbGVhcihzZWxmKToKKyAgICAgICAgZCA9IHNlbGYubmV3X2RpY3Qoa2V5PSd2YWx1ZScpCisKKyAgICAgICAgIyBjbGVhcigpIG11c3QgY2hhbmdlIHRoZSB2ZXJzaW9uIGlmIHRoZSBkaWN0IGlzIG5vdCBlbXB0eQorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fY2hhbmdlZChkLCBkLmNsZWFyKQorCisgICAgICAgICMgY2xlYXIoKSBtdXN0IG5vdCBjaGFuZ2UgdGhlIHZlcnNpb24gaWYgdGhlIGRpY3QgaXMgZW1wdHkKKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2RvbnRfY2hhbmdlKGQsIGQuY2xlYXIpCisKKworY2xhc3MgRGljdChkaWN0KToKKyAgICBwYXNzCisKKworY2xhc3MgRGljdFN1YnR5cGVWZXJzaW9uVGVzdHMoRGljdFZlcnNpb25UZXN0cyk6CisgICAgdHlwZTJ0ZXN0ID0gRGljdAorCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RpY3Rjb21wcy5weSBiL0xpYi90ZXN0L3Rlc3RfZGljdGNvbXBzLnB5CmluZGV4IDNjOGI5NWMuLjA4NzMwNzEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGljdGNvbXBzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGljdGNvbXBzLnB5CkBAIC0xLDcgKzEsNSBAQAogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotCiAjIEZvciBzY29wZSB0ZXN0aW5nLgogZyA9ICJHbG9iYWwgdmFyaWFibGUiCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGljdHZpZXdzLnB5IGIvTGliL3Rlc3QvdGVzdF9kaWN0dmlld3MucHkKaW5kZXggMGM5OTY1Mi4uNDlhOWU5YyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kaWN0dmlld3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kaWN0dmlld3MucHkKQEAgLTEsMyArMSw0IEBACitpbXBvcnQgY29sbGVjdGlvbnMKIGltcG9ydCBjb3B5CiBpbXBvcnQgcGlja2xlCiBpbXBvcnQgdW5pdHRlc3QKQEAgLTI0NSw2ICsyNDYsMjcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKChUeXBlRXJyb3IsIHBpY2tsZS5QaWNrbGluZ0Vycm9yKSwKICAgICAgICAgICAgICAgICBwaWNrbGUuZHVtcHMsIGQuaXRlbXMoKSwgcHJvdG8pCiAKKyAgICBkZWYgdGVzdF9hYmNfcmVnaXN0cnkoc2VsZik6CisgICAgICAgIGQgPSBkaWN0KGE9MSkKKworICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZC5rZXlzKCksIGNvbGxlY3Rpb25zLktleXNWaWV3KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZC5rZXlzKCksIGNvbGxlY3Rpb25zLk1hcHBpbmdWaWV3KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZC5rZXlzKCksIGNvbGxlY3Rpb25zLlNldCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGQua2V5cygpLCBjb2xsZWN0aW9ucy5TaXplZCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGQua2V5cygpLCBjb2xsZWN0aW9ucy5JdGVyYWJsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGQua2V5cygpLCBjb2xsZWN0aW9ucy5Db250YWluZXIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGQudmFsdWVzKCksIGNvbGxlY3Rpb25zLlZhbHVlc1ZpZXcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShkLnZhbHVlcygpLCBjb2xsZWN0aW9ucy5NYXBwaW5nVmlldykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGQudmFsdWVzKCksIGNvbGxlY3Rpb25zLlNpemVkKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShkLml0ZW1zKCksIGNvbGxlY3Rpb25zLkl0ZW1zVmlldykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGQuaXRlbXMoKSwgY29sbGVjdGlvbnMuTWFwcGluZ1ZpZXcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShkLml0ZW1zKCksIGNvbGxlY3Rpb25zLlNldCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGQuaXRlbXMoKSwgY29sbGVjdGlvbnMuU2l6ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShkLml0ZW1zKCksIGNvbGxlY3Rpb25zLkl0ZXJhYmxlKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZC5pdGVtcygpLCBjb2xsZWN0aW9ucy5Db250YWluZXIpCisKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGlmZmxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfZGlmZmxpYi5weQppbmRleCBhYjlkZWJmLi4xNTZiNTIzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RpZmZsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kaWZmbGliLnB5CkBAIC0xMjIsMTcgKzEyMiwxNyBAQAogIiIiCiAKIHBhdGNoOTE0NTc1X2Zyb20yID0gIiIiCi1cdFx0TGluZSAxOiBwcmVjZWVkZWQgYnkgZnJvbTpbdHRdIHRvOltzc3NzXQotICBcdFx0TGluZSAyOiBwcmVjZWVkZWQgYnkgZnJvbTpbc3N0dF0gdG86W3Nzc3N0XQotICBcdCBcdExpbmUgMzogcHJlY2VlZGVkIGJ5IGZyb206W3NzdHN0XSB0bzpbc3Nzc3NzXQorXHRcdExpbmUgMTogcHJlY2VkZWQgYnkgZnJvbTpbdHRdIHRvOltzc3NzXQorICBcdFx0TGluZSAyOiBwcmVjZWRlZCBieSBmcm9tOltzc3R0XSB0bzpbc3Nzc3RdCisgIFx0IFx0TGluZSAzOiBwcmVjZWRlZCBieSBmcm9tOltzc3RzdF0gdG86W3Nzc3Nzc10KIExpbmUgNDogIFx0aGFzIGZyb206W3NzdF0gdG86W3Nzc10gYWZ0ZXIgOgogTGluZSA1OiBoYXMgZnJvbTpbdF0gdG86W3NzXSBhdCBlbmRcdAogIiIiCiAKIHBhdGNoOTE0NTc1X3RvMiA9ICIiIgotICAgIExpbmUgMTogcHJlY2VlZGVkIGJ5IGZyb206W3R0XSB0bzpbc3Nzc10KLSAgICBcdExpbmUgMjogcHJlY2VlZGVkIGJ5IGZyb206W3NzdHRdIHRvOltzc3NzdF0KLSAgICAgIExpbmUgMzogcHJlY2VlZGVkIGJ5IGZyb206W3NzdHN0XSB0bzpbc3Nzc3NzXQorICAgIExpbmUgMTogcHJlY2VkZWQgYnkgZnJvbTpbdHRdIHRvOltzc3NzXQorICAgIFx0TGluZSAyOiBwcmVjZWRlZCBieSBmcm9tOltzc3R0XSB0bzpbc3Nzc3RdCisgICAgICBMaW5lIDM6IHByZWNlZGVkIGJ5IGZyb206W3NzdHN0XSB0bzpbc3Nzc3NzXQogTGluZSA0OiAgIGhhcyBmcm9tOltzc3RdIHRvOltzc3NdIGFmdGVyIDoKIExpbmUgNTogaGFzIGZyb206W3RdIHRvOltzc10gYXQgZW5kCiAiIiIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGlmZmxpYl9leHBlY3QuaHRtbCBiL0xpYi90ZXN0L3Rlc3RfZGlmZmxpYl9leHBlY3QuaHRtbAppbmRleCBlYTdhMjRlLi4zZTZhN2I3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RpZmZsaWJfZXhwZWN0Lmh0bWwKKysrIGIvTGliL3Rlc3QvdGVzdF9kaWZmbGliX2V4cGVjdC5odG1sCkBAIC0zODcsOSArMzg3LDkgQEAKICAgICAgICAgCiAgICAgICAgIDx0Ym9keT4KICAgICAgICAgICAgIDx0cj48dGQgY2xhc3M9ImRpZmZfbmV4dCIgaWQ9ImRpZmZsaWJfY2hnX3RvOV9fMCI+PGEgaHJlZj0iI2RpZmZsaWJfY2hnX3RvOV9fMCI+ZjwvYT48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJmcm9tOV8xIj4xPC90ZD48dGQgbm93cmFwPSJub3dyYXAiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX25leHQiPjxhIGhyZWY9IiNkaWZmbGliX2NoZ190bzlfXzAiPmY8L2E+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0idG85XzEiPjE8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+PC90ZD48L3RyPgotICAgICAgICAgICAgPHRyPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48YSBocmVmPSIjZGlmZmxpYl9jaGdfdG85X190b3AiPnQ8L2E+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0iZnJvbTlfMiI+MjwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj48c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj5MaW5lJm5ic3A7MTombmJzcDtwcmVjZWVkZWQmbmJzcDtieSZuYnNwO2Zyb206W3R0XSZuYnNwO3RvOltzc3NzXTwvdGQ+PHRkIGNsYXNzPSJkaWZmX25leHQiPjxhIGhyZWY9IiNkaWZmbGliX2NoZ190bzlfX3RvcCI+dDwvYT48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJ0bzlfMiI+MjwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj48c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj5MaW5lJm5ic3A7MTombmJzcDtwcmVjZWVkZWQmbmJzcDtieSZuYnNwO2Zyb206W3R0XSZuYnNwO3RvOltzc3NzXTwvdGQ+PC90cj4KLSAgICAgICAgICAgIDx0cj48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0iZnJvbTlfMyI+MzwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj4mbmJzcDsmbmJzcDs8c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOzwvc3Bhbj4mbmJzcDsmbmJzcDtMaW5lJm5ic3A7MjombmJzcDtwcmVjZWVkZWQmbmJzcDtieSZuYnNwO2Zyb206W3NzdHRdJm5ic3A7dG86W3Nzc3N0XTwvdGQ+PHRkIGNsYXNzPSJkaWZmX25leHQiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9InRvOV8zIj4zPC90ZD48dGQgbm93cmFwPSJub3dyYXAiPiZuYnNwOyZuYnNwOzxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7PC9zcGFuPiZuYnNwOyZuYnNwO0xpbmUmbmJzcDsyOiZuYnNwO3ByZWNlZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbc3N0dF0mbmJzcDt0bzpbc3Nzc3RdPC90ZD48L3RyPgotICAgICAgICAgICAgPHRyPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJmcm9tOV80Ij40PC90ZD48dGQgbm93cmFwPSJub3dyYXAiPiZuYnNwOyZuYnNwOzxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPkxpbmUmbmJzcDszOiZuYnNwO3ByZWNlZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbc3N0c3RdJm5ic3A7dG86W3Nzc3Nzc108L3RkPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJ0bzlfNCI+NDwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj4mbmJzcDsmbmJzcDs8c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj5MaW5lJm5ic3A7MzombmJzcDtwcmVjZWVkZWQmbmJzcDtieSZuYnNwO2Zyb206W3NzdHN0XSZuYnNwO3RvOltzc3Nzc3NdPC90ZD48L3RyPgorICAgICAgICAgICAgPHRyPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48YSBocmVmPSIjZGlmZmxpYl9jaGdfdG85X190b3AiPnQ8L2E+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0iZnJvbTlfMiI+MjwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj48c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj5MaW5lJm5ic3A7MTombmJzcDtwcmVjZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbdHRdJm5ic3A7dG86W3Nzc3NdPC90ZD48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PGEgaHJlZj0iI2RpZmZsaWJfY2hnX3RvOV9fdG9wIj50PC9hPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9InRvOV8yIj4yPC90ZD48dGQgbm93cmFwPSJub3dyYXAiPjxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPkxpbmUmbmJzcDsxOiZuYnNwO3ByZWNlZGVkJm5ic3A7YnkmbmJzcDtmcm9tOlt0dF0mbmJzcDt0bzpbc3Nzc108L3RkPjwvdHI+CisgICAgICAgICAgICA8dHI+PHRkIGNsYXNzPSJkaWZmX25leHQiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9ImZyb205XzMiPjM8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDs8L3NwYW4+Jm5ic3A7Jm5ic3A7TGluZSZuYnNwOzI6Jm5ic3A7cHJlY2VkZWQmbmJzcDtieSZuYnNwO2Zyb206W3NzdHRdJm5ic3A7dG86W3Nzc3N0XTwvdGQ+PHRkIGNsYXNzPSJkaWZmX25leHQiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9InRvOV8zIj4zPC90ZD48dGQgbm93cmFwPSJub3dyYXAiPiZuYnNwOyZuYnNwOzxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7PC9zcGFuPiZuYnNwOyZuYnNwO0xpbmUmbmJzcDsyOiZuYnNwO3ByZWNlZGVkJm5ic3A7YnkmbmJzcDtmcm9tOltzc3R0XSZuYnNwO3RvOltzc3NzdF08L3RkPjwvdHI+CisgICAgICAgICAgICA8dHI+PHRkIGNsYXNzPSJkaWZmX25leHQiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9ImZyb205XzQiPjQ8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+TGluZSZuYnNwOzM6Jm5ic3A7cHJlY2VkZWQmbmJzcDtieSZuYnNwO2Zyb206W3NzdHN0XSZuYnNwO3RvOltzc3Nzc3NdPC90ZD48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0idG85XzQiPjQ8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+TGluZSZuYnNwOzM6Jm5ic3A7cHJlY2VkZWQmbmJzcDtieSZuYnNwO2Zyb206W3NzdHN0XSZuYnNwO3RvOltzc3Nzc3NdPC90ZD48L3RyPgogICAgICAgICAgICAgPHRyPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJmcm9tOV81Ij41PC90ZD48dGQgbm93cmFwPSJub3dyYXAiPkxpbmUmbmJzcDs0OiZuYnNwOyZuYnNwOzxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7PC9zcGFuPmhhcyZuYnNwO2Zyb206W3NzdF0mbmJzcDt0bzpbc3NzXSZuYnNwO2FmdGVyJm5ic3A7OjwvdGQ+PHRkIGNsYXNzPSJkaWZmX25leHQiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9InRvOV81Ij41PC90ZD48dGQgbm93cmFwPSJub3dyYXAiPkxpbmUmbmJzcDs0OiZuYnNwOyZuYnNwOzxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7PC9zcGFuPmhhcyZuYnNwO2Zyb206W3NzdF0mbmJzcDt0bzpbc3NzXSZuYnNwO2FmdGVyJm5ic3A7OjwvdGQ+PC90cj4KICAgICAgICAgICAgIDx0cj48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0iZnJvbTlfNiI+NjwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj5MaW5lJm5ic3A7NTombmJzcDtoYXMmbmJzcDtmcm9tOlt0XSZuYnNwO3RvOltzc10mbmJzcDthdCZuYnNwO2VuZDxzcGFuIGNsYXNzPSJkaWZmX3N1YiI+Jm5ic3A7PC9zcGFuPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX25leHQiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9InRvOV82Ij42PC90ZD48dGQgbm93cmFwPSJub3dyYXAiPkxpbmUmbmJzcDs1OiZuYnNwO2hhcyZuYnNwO2Zyb206W3RdJm5ic3A7dG86W3NzXSZuYnNwO2F0Jm5ic3A7ZW5kPC90ZD48L3RyPgogICAgICAgICA8L3Rib2R5PgpAQCAtNDAzLDkgKzQwMyw5IEBACiAgICAgICAgIAogICAgICAgICA8dGJvZHk+CiAgICAgICAgICAgICA8dHI+PHRkIGNsYXNzPSJkaWZmX25leHQiIGlkPSJkaWZmbGliX2NoZ190bzEwX18wIj48YSBocmVmPSIjZGlmZmxpYl9jaGdfdG8xMF9fMCI+ZjwvYT48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJmcm9tMTBfMSI+MTwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj48L3RkPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48YSBocmVmPSIjZGlmZmxpYl9jaGdfdG8xMF9fMCI+ZjwvYT48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJ0bzEwXzEiPjE8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+PC90ZD48L3RyPgotICAgICAgICAgICAgPHRyPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48YSBocmVmPSIjZGlmZmxpYl9jaGdfdG8xMF9fdG9wIj50PC9hPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9ImZyb20xMF8yIj4yPC90ZD48dGQgbm93cmFwPSJub3dyYXAiPjxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPkxpbmUmbmJzcDsxOiZuYnNwO3ByZWNlZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbdHRdJm5ic3A7dG86W3Nzc3NdPC90ZD48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PGEgaHJlZj0iI2RpZmZsaWJfY2hnX3RvMTBfX3RvcCI+dDwvYT48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJ0bzEwXzIiPjI8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+TGluZSZuYnNwOzE6Jm5ic3A7cHJlY2VlZGVkJm5ic3A7YnkmbmJzcDtmcm9tOlt0dF0mbmJzcDt0bzpbc3Nzc108L3RkPjwvdHI+Ci0gICAgICAgICAgICA8dHI+PHRkIGNsYXNzPSJkaWZmX25leHQiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9ImZyb20xMF8zIj4zPC90ZD48dGQgbm93cmFwPSJub3dyYXAiPiZuYnNwOyZuYnNwOzxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0xpbmUmbmJzcDsyOiZuYnNwO3ByZWNlZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbc3N0dF0mbmJzcDt0bzpbc3Nzc3RdPC90ZD48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0idG8xMF8zIj4zPC90ZD48dGQgbm93cmFwPSJub3dyYXAiPiZuYnNwOyZuYnNwOzxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7PC9zcGFuPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0xpbmUmbmJzcDsyOiZuYnNwO3ByZWNlZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbc3N0dF0mbmJzcDt0bzpbc3Nzc3RdPC90ZD48L3RyPgotICAgICAgICAgICAgPHRyPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJmcm9tMTBfNCI+NDwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj4mbmJzcDsmbmJzcDs8c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj5MaW5lJm5ic3A7MzombmJzcDtwcmVjZWVkZWQmbmJzcDtieSZuYnNwO2Zyb206W3NzdHN0XSZuYnNwO3RvOltzc3Nzc3NdPC90ZD48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0idG8xMF80Ij40PC90ZD48dGQgbm93cmFwPSJub3dyYXAiPiZuYnNwOyZuYnNwOzxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPkxpbmUmbmJzcDszOiZuYnNwO3ByZWNlZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbc3N0c3RdJm5ic3A7dG86W3Nzc3Nzc108L3RkPjwvdHI+CisgICAgICAgICAgICA8dHI+PHRkIGNsYXNzPSJkaWZmX25leHQiPjxhIGhyZWY9IiNkaWZmbGliX2NoZ190bzEwX190b3AiPnQ8L2E+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0iZnJvbTEwXzIiPjI8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+TGluZSZuYnNwOzE6Jm5ic3A7cHJlY2VkZWQmbmJzcDtieSZuYnNwO2Zyb206W3R0XSZuYnNwO3RvOltzc3NzXTwvdGQ+PHRkIGNsYXNzPSJkaWZmX25leHQiPjxhIGhyZWY9IiNkaWZmbGliX2NoZ190bzEwX190b3AiPnQ8L2E+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0idG8xMF8yIj4yPC90ZD48dGQgbm93cmFwPSJub3dyYXAiPjxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPkxpbmUmbmJzcDsxOiZuYnNwO3ByZWNlZGVkJm5ic3A7YnkmbmJzcDtmcm9tOlt0dF0mbmJzcDt0bzpbc3Nzc108L3RkPjwvdHI+CisgICAgICAgICAgICA8dHI+PHRkIGNsYXNzPSJkaWZmX25leHQiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9ImZyb20xMF8zIj4zPC90ZD48dGQgbm93cmFwPSJub3dyYXAiPiZuYnNwOyZuYnNwOzxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0xpbmUmbmJzcDsyOiZuYnNwO3ByZWNlZGVkJm5ic3A7YnkmbmJzcDtmcm9tOltzc3R0XSZuYnNwO3RvOltzc3NzdF08L3RkPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJ0bzEwXzMiPjM8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDs8L3NwYW4+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7TGluZSZuYnNwOzI6Jm5ic3A7cHJlY2VkZWQmbmJzcDtieSZuYnNwO2Zyb206W3NzdHRdJm5ic3A7dG86W3Nzc3N0XTwvdGQ+PC90cj4KKyAgICAgICAgICAgIDx0cj48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0iZnJvbTEwXzQiPjQ8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+TGluZSZuYnNwOzM6Jm5ic3A7cHJlY2VkZWQmbmJzcDtieSZuYnNwO2Zyb206W3NzdHN0XSZuYnNwO3RvOltzc3Nzc3NdPC90ZD48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0idG8xMF80Ij40PC90ZD48dGQgbm93cmFwPSJub3dyYXAiPiZuYnNwOyZuYnNwOzxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPkxpbmUmbmJzcDszOiZuYnNwO3ByZWNlZGVkJm5ic3A7YnkmbmJzcDtmcm9tOltzc3RzdF0mbmJzcDt0bzpbc3Nzc3NzXTwvdGQ+PC90cj4KICAgICAgICAgICAgIDx0cj48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0iZnJvbTEwXzUiPjU8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+TGluZSZuYnNwOzQ6Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+aGFzJm5ic3A7ZnJvbTpbc3N0XSZuYnNwO3RvOltzc3NdJm5ic3A7YWZ0ZXImbmJzcDs6PC90ZD48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0idG8xMF81Ij41PC90ZD48dGQgbm93cmFwPSJub3dyYXAiPkxpbmUmbmJzcDs0OiZuYnNwOyZuYnNwOzxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7PC9zcGFuPmhhcyZuYnNwO2Zyb206W3NzdF0mbmJzcDt0bzpbc3NzXSZuYnNwO2FmdGVyJm5ic3A7OjwvdGQ+PC90cj4KICAgICAgICAgICAgIDx0cj48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0iZnJvbTEwXzYiPjY8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+TGluZSZuYnNwOzU6Jm5ic3A7aGFzJm5ic3A7ZnJvbTpbdF0mbmJzcDt0bzpbc3NdJm5ic3A7YXQmbmJzcDtlbmQ8c3BhbiBjbGFzcz0iZGlmZl9zdWIiPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj48L3RkPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJ0bzEwXzYiPjY8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+TGluZSZuYnNwOzU6Jm5ic3A7aGFzJm5ic3A7ZnJvbTpbdF0mbmJzcDt0bzpbc3NdJm5ic3A7YXQmbmJzcDtlbmQ8L3RkPjwvdHI+CiAgICAgICAgIDwvdGJvZHk+CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Rpcy5weSBiL0xpYi90ZXN0L3Rlc3RfZGlzLnB5CmluZGV4IDBmZDEzNDguLmI5YjVhYzIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGlzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGlzLnB5CkBAIC00MCw0MSArNDAsNDEgQEAKIAogZGlzX2NfaW5zdGFuY2VfbWV0aG9kID0gIiIiXAogJTNkICAgICAgICAgICAwIExPQURfRkFTVCAgICAgICAgICAgICAgICAxICh4KQotICAgICAgICAgICAgICAzIExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgxKQotICAgICAgICAgICAgICA2IENPTVBBUkVfT1AgICAgICAgICAgICAgICAyICg9PSkKLSAgICAgICAgICAgICAgOSBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMCAoc2VsZikKLSAgICAgICAgICAgICAxMiBTVE9SRV9BVFRSICAgICAgICAgICAgICAgMCAoeCkKLSAgICAgICAgICAgICAxNSBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoTm9uZSkKLSAgICAgICAgICAgICAxOCBSRVRVUk5fVkFMVUUKKyAgICAgICAgICAgICAgMiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKKyAgICAgICAgICAgICAgNCBDT01QQVJFX09QICAgICAgICAgICAgICAgMiAoPT0pCisgICAgICAgICAgICAgIDYgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDAgKHNlbGYpCisgICAgICAgICAgICAgIDggU1RPUkVfQVRUUiAgICAgICAgICAgICAgIDAgKHgpCisgICAgICAgICAgICAgMTAgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKE5vbmUpCisgICAgICAgICAgICAgMTIgUkVUVVJOX1ZBTFVFCiAiIiIgJSAoX0MuX19pbml0X18uX19jb2RlX18uY29fZmlyc3RsaW5lbm8gKyAxLCkKIAogZGlzX2NfaW5zdGFuY2VfbWV0aG9kX2J5dGVzID0gIiIiXAogICAgICAgICAgIDAgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDEgKDEpCi0gICAgICAgICAgMyBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKLSAgICAgICAgICA2IENPTVBBUkVfT1AgICAgICAgICAgICAgICAyICg9PSkKLSAgICAgICAgICA5IExPQURfRkFTVCAgICAgICAgICAgICAgICAwICgwKQotICAgICAgICAgMTIgU1RPUkVfQVRUUiAgICAgICAgICAgICAgIDAgKDApCi0gICAgICAgICAxNSBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoMCkKLSAgICAgICAgIDE4IFJFVFVSTl9WQUxVRQorICAgICAgICAgIDIgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDEpCisgICAgICAgICAgNCBDT01QQVJFX09QICAgICAgICAgICAgICAgMiAoPT0pCisgICAgICAgICAgNiBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMCAoMCkKKyAgICAgICAgICA4IFNUT1JFX0FUVFIgICAgICAgICAgICAgICAwICgwKQorICAgICAgICAgMTAgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKDApCisgICAgICAgICAxMiBSRVRVUk5fVkFMVUUKICIiIgogCiBkaXNfY19jbGFzc19tZXRob2QgPSAiIiJcCiAlM2QgICAgICAgICAgIDAgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDEgKHgpCi0gICAgICAgICAgICAgIDMgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDEpCi0gICAgICAgICAgICAgIDYgQ09NUEFSRV9PUCAgICAgICAgICAgICAgIDIgKD09KQotICAgICAgICAgICAgICA5IExPQURfRkFTVCAgICAgICAgICAgICAgICAwIChjbHMpCi0gICAgICAgICAgICAgMTIgU1RPUkVfQVRUUiAgICAgICAgICAgICAgIDAgKHgpCi0gICAgICAgICAgICAgMTUgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKE5vbmUpCi0gICAgICAgICAgICAgMTggUkVUVVJOX1ZBTFVFCisgICAgICAgICAgICAgIDIgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDEpCisgICAgICAgICAgICAgIDQgQ09NUEFSRV9PUCAgICAgICAgICAgICAgIDIgKD09KQorICAgICAgICAgICAgICA2IExPQURfRkFTVCAgICAgICAgICAgICAgICAwIChjbHMpCisgICAgICAgICAgICAgIDggU1RPUkVfQVRUUiAgICAgICAgICAgICAgIDAgKHgpCisgICAgICAgICAgICAgMTAgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKE5vbmUpCisgICAgICAgICAgICAgMTIgUkVUVVJOX1ZBTFVFCiAiIiIgJSAoX0MuY20uX19jb2RlX18uY29fZmlyc3RsaW5lbm8gKyAyLCkKIAogZGlzX2Nfc3RhdGljX21ldGhvZCA9ICIiIlwKICUzZCAgICAgICAgICAgMCBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMCAoeCkKLSAgICAgICAgICAgICAgMyBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKLSAgICAgICAgICAgICAgNiBDT01QQVJFX09QICAgICAgICAgICAgICAgMiAoPT0pCi0gICAgICAgICAgICAgIDkgU1RPUkVfRkFTVCAgICAgICAgICAgICAgIDAgKHgpCi0gICAgICAgICAgICAgMTIgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKE5vbmUpCi0gICAgICAgICAgICAgMTUgUkVUVVJOX1ZBTFVFCisgICAgICAgICAgICAgIDIgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDEpCisgICAgICAgICAgICAgIDQgQ09NUEFSRV9PUCAgICAgICAgICAgICAgIDIgKD09KQorICAgICAgICAgICAgICA2IFNUT1JFX0ZBU1QgICAgICAgICAgICAgICAwICh4KQorICAgICAgICAgICAgICA4IExPQURfQ09OU1QgICAgICAgICAgICAgICAwIChOb25lKQorICAgICAgICAgICAgIDEwIFJFVFVSTl9WQUxVRQogIiIiICUgKF9DLnNtLl9fY29kZV9fLmNvX2ZpcnN0bGluZW5vICsgMiwpCiAKICMgQ2xhc3MgZGlzYXNzZW1ibGluZyBpbmZvIGhhcyBhbiBleHRyYSBuZXdsaW5lIGF0IGVuZC4KQEAgLTk1LDIzICs5NSwyMyBAQAogCiBkaXNfZiA9ICIiIlwKICUzZCAgICAgICAgICAgMCBMT0FEX0dMT0JBTCAgICAgICAgICAgICAgMCAocHJpbnQpCi0gICAgICAgICAgICAgIDMgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDAgKGEpCi0gICAgICAgICAgICAgIDYgQ0FMTF9GVU5DVElPTiAgICAgICAgICAgIDEgKDEgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXIpCi0gICAgICAgICAgICAgIDkgUE9QX1RPUAorICAgICAgICAgICAgICAyIExPQURfRkFTVCAgICAgICAgICAgICAgICAwIChhKQorICAgICAgICAgICAgICA0IENBTExfRlVOQ1RJT04gICAgICAgICAgICAxCisgICAgICAgICAgICAgIDYgUE9QX1RPUAogCi0lM2QgICAgICAgICAgMTAgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDEpCi0gICAgICAgICAgICAgMTMgUkVUVVJOX1ZBTFVFCislM2QgICAgICAgICAgIDggTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDEpCisgICAgICAgICAgICAgMTAgUkVUVVJOX1ZBTFVFCiAiIiIgJSAoX2YuX19jb2RlX18uY29fZmlyc3RsaW5lbm8gKyAxLAogICAgICAgIF9mLl9fY29kZV9fLmNvX2ZpcnN0bGluZW5vICsgMikKIAogCiBkaXNfZl9jb19jb2RlID0gIiIiXAogICAgICAgICAgIDAgTE9BRF9HTE9CQUwgICAgICAgICAgICAgIDAgKDApCi0gICAgICAgICAgMyBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMCAoMCkKLSAgICAgICAgICA2IENBTExfRlVOQ1RJT04gICAgICAgICAgICAxICgxIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyKQotICAgICAgICAgIDkgUE9QX1RPUAotICAgICAgICAgMTAgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDEpCi0gICAgICAgICAxMyBSRVRVUk5fVkFMVUUKKyAgICAgICAgICAyIExPQURfRkFTVCAgICAgICAgICAgICAgICAwICgwKQorICAgICAgICAgIDQgQ0FMTF9GVU5DVElPTiAgICAgICAgICAgIDEKKyAgICAgICAgICA2IFBPUF9UT1AKKyAgICAgICAgICA4IExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgxKQorICAgICAgICAgMTAgUkVUVVJOX1ZBTFVFCiAiIiIKIAogCkBAIC0xMjEsMjAgKzEyMSwyMCBAQAogICAgICAgICBwYXNzCiAKIGRpc19idWc3MDg5MDEgPSAiIiJcCi0lM2QgICAgICAgICAgIDAgU0VUVVBfTE9PUCAgICAgICAgICAgICAgMjMgKHRvIDI2KQotICAgICAgICAgICAgICAzIExPQURfR0xPQkFMICAgICAgICAgICAgICAwIChyYW5nZSkKLSAgICAgICAgICAgICAgNiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKKyUzZCAgICAgICAgICAgMCBTRVRVUF9MT09QICAgICAgICAgICAgICAxOCAodG8gMjApCisgICAgICAgICAgICAgIDIgTE9BRF9HTE9CQUwgICAgICAgICAgICAgIDAgKHJhbmdlKQorICAgICAgICAgICAgICA0IExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgxKQogCi0lM2QgICAgICAgICAgIDkgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDIgKDEwKQotICAgICAgICAgICAgIDEyIENBTExfRlVOQ1RJT04gICAgICAgICAgICAyICgyIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyKQotICAgICAgICAgICAgIDE1IEdFVF9JVEVSCi0gICAgICAgID4+ICAgMTYgRk9SX0lURVIgICAgICAgICAgICAgICAgIDYgKHRvIDI1KQotICAgICAgICAgICAgIDE5IFNUT1JFX0ZBU1QgICAgICAgICAgICAgICAwIChyZXMpCislM2QgICAgICAgICAgIDYgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDIgKDEwKQorICAgICAgICAgICAgICA4IENBTExfRlVOQ1RJT04gICAgICAgICAgICAyCisgICAgICAgICAgICAgMTAgR0VUX0lURVIKKyAgICAgICAgPj4gICAxMiBGT1JfSVRFUiAgICAgICAgICAgICAgICAgNCAodG8gMTgpCisgICAgICAgICAgICAgMTQgU1RPUkVfRkFTVCAgICAgICAgICAgICAgIDAgKHJlcykKIAotJTNkICAgICAgICAgIDIyIEpVTVBfQUJTT0xVVEUgICAgICAgICAgIDE2Ci0gICAgICAgID4+ICAgMjUgUE9QX0JMT0NLCi0gICAgICAgID4+ICAgMjYgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKE5vbmUpCi0gICAgICAgICAgICAgMjkgUkVUVVJOX1ZBTFVFCislM2QgICAgICAgICAgMTYgSlVNUF9BQlNPTFVURSAgICAgICAgICAgMTIKKyAgICAgICAgPj4gICAxOCBQT1BfQkxPQ0sKKyAgICAgICAgPj4gICAyMCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoTm9uZSkKKyAgICAgICAgICAgICAyMiBSRVRVUk5fVkFMVUUKICIiIiAlIChidWc3MDg5MDEuX19jb2RlX18uY29fZmlyc3RsaW5lbm8gKyAxLAogICAgICAgIGJ1ZzcwODkwMS5fX2NvZGVfXy5jb19maXJzdGxpbmVubyArIDIsCiAgICAgICAgYnVnNzA4OTAxLl9fY29kZV9fLmNvX2ZpcnN0bGluZW5vICsgMykKQEAgLTE0NywyMiArMTQ3LDIyIEBACiAKIGRpc19idWcxMzMzOTgyID0gIiIiXAogJTNkICAgICAgICAgICAwIExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgwKQotICAgICAgICAgICAgICAzIFBPUF9KVU1QX0lGX1RSVUUgICAgICAgIDM1Ci0gICAgICAgICAgICAgIDYgTE9BRF9HTE9CQUwgICAgICAgICAgICAgIDAgKEFzc2VydGlvbkVycm9yKQotICAgICAgICAgICAgICA5IExPQURfQ09OU1QgICAgICAgICAgICAgICAyICg8Y29kZSBvYmplY3QgPGxpc3Rjb21wPiBhdCAweC4uLiwgZmlsZSAiJXMiLCBsaW5lICVkPikKLSAgICAgICAgICAgICAxMiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMyAoJ2J1ZzEzMzM5ODIuPGxvY2Fscz4uPGxpc3Rjb21wPicpCi0gICAgICAgICAgICAgMTUgTUFLRV9GVU5DVElPTiAgICAgICAgICAgIDAKLSAgICAgICAgICAgICAxOCBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMCAoeCkKLSAgICAgICAgICAgICAyMSBHRVRfSVRFUgotICAgICAgICAgICAgIDIyIENBTExfRlVOQ1RJT04gICAgICAgICAgICAxICgxIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyKQorICAgICAgICAgICAgICAyIFBPUF9KVU1QX0lGX1RSVUUgICAgICAgIDI2CisgICAgICAgICAgICAgIDQgTE9BRF9HTE9CQUwgICAgICAgICAgICAgIDAgKEFzc2VydGlvbkVycm9yKQorICAgICAgICAgICAgICA2IExPQURfQ09OU1QgICAgICAgICAgICAgICAyICg8Y29kZSBvYmplY3QgPGxpc3Rjb21wPiBhdCAweC4uLiwgZmlsZSAiJXMiLCBsaW5lICVkPikKKyAgICAgICAgICAgICAgOCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMyAoJ2J1ZzEzMzM5ODIuPGxvY2Fscz4uPGxpc3Rjb21wPicpCisgICAgICAgICAgICAgMTAgTUFLRV9GVU5DVElPTiAgICAgICAgICAgIDAKKyAgICAgICAgICAgICAxMiBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMCAoeCkKKyAgICAgICAgICAgICAxNCBHRVRfSVRFUgorICAgICAgICAgICAgIDE2IENBTExfRlVOQ1RJT04gICAgICAgICAgICAxCiAKLSUzZCAgICAgICAgICAyNSBMT0FEX0NPTlNUICAgICAgICAgICAgICAgNCAoMSkKLSAgICAgICAgICAgICAyOCBCSU5BUllfQURECi0gICAgICAgICAgICAgMjkgQ0FMTF9GVU5DVElPTiAgICAgICAgICAgIDEgKDEgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXIpCi0gICAgICAgICAgICAgMzIgUkFJU0VfVkFSQVJHUyAgICAgICAgICAgIDEKKyUzZCAgICAgICAgICAxOCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgNCAoMSkKKyAgICAgICAgICAgICAyMCBCSU5BUllfQURECisgICAgICAgICAgICAgMjIgQ0FMTF9GVU5DVElPTiAgICAgICAgICAgIDEKKyAgICAgICAgICAgICAyNCBSQUlTRV9WQVJBUkdTICAgICAgICAgICAgMQogCi0lM2QgICAgID4+ICAgMzUgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKE5vbmUpCi0gICAgICAgICAgICAgMzggUkVUVVJOX1ZBTFVFCislM2QgICAgID4+ICAgMjYgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKE5vbmUpCisgICAgICAgICAgICAgMjggUkVUVVJOX1ZBTFVFCiAiIiIgJSAoYnVnMTMzMzk4Mi5fX2NvZGVfXy5jb19maXJzdGxpbmVubyArIDEsCiAgICAgICAgX19maWxlX18sCiAgICAgICAgYnVnMTMzMzk4Mi5fX2NvZGVfXy5jb19maXJzdGxpbmVubyArIDEsCkBAIC0xNzEsMTkgKzE3MSwxOSBAQAogCiBfQklHX0xJTkVOT19GT1JNQVQgPSAiIiJcCiAlM2QgICAgICAgICAgIDAgTE9BRF9HTE9CQUwgICAgICAgICAgICAgIDAgKHNwYW0pCi0gICAgICAgICAgICAgIDMgUE9QX1RPUAorICAgICAgICAgICAgICAyIFBPUF9UT1AKICAgICAgICAgICAgICAgNCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoTm9uZSkKLSAgICAgICAgICAgICAgNyBSRVRVUk5fVkFMVUUKKyAgICAgICAgICAgICAgNiBSRVRVUk5fVkFMVUUKICIiIgogCiBkaXNfbW9kdWxlX2V4cGVjdGVkX3Jlc3VsdHMgPSAiIiJcCiBEaXNhc3NlbWJseSBvZiBmOgogICA0ICAgICAgICAgICAwIExPQURfQ09OU1QgICAgICAgICAgICAgICAwIChOb25lKQotICAgICAgICAgICAgICAzIFJFVFVSTl9WQUxVRQorICAgICAgICAgICAgICAyIFJFVFVSTl9WQUxVRQogCiBEaXNhc3NlbWJseSBvZiBnOgogICA1ICAgICAgICAgICAwIExPQURfQ09OU1QgICAgICAgICAgICAgICAwIChOb25lKQotICAgICAgICAgICAgICAzIFJFVFVSTl9WQUxVRQorICAgICAgICAgICAgICAyIFJFVFVSTl9WQUxVRQogCiAiIiIKIApAQCAtMTkxLDIwICsxOTEsNTIgQEAKIAogZGlzX2V4cHJfc3RyID0gIiIiXAogICAxICAgICAgICAgICAwIExPQURfTkFNRSAgICAgICAgICAgICAgICAwICh4KQotICAgICAgICAgICAgICAzIExPQURfQ09OU1QgICAgICAgICAgICAgICAwICgxKQotICAgICAgICAgICAgICA2IEJJTkFSWV9BREQKLSAgICAgICAgICAgICAgNyBSRVRVUk5fVkFMVUUKKyAgICAgICAgICAgICAgMiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoMSkKKyAgICAgICAgICAgICAgNCBCSU5BUllfQURECisgICAgICAgICAgICAgIDYgUkVUVVJOX1ZBTFVFCiAiIiIKIAogc2ltcGxlX3N0bXRfc3RyID0gInggPSB4ICsgMSIKIAogZGlzX3NpbXBsZV9zdG10X3N0ciA9ICIiIlwKICAgMSAgICAgICAgICAgMCBMT0FEX05BTUUgICAgICAgICAgICAgICAgMCAoeCkKLSAgICAgICAgICAgICAgMyBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoMSkKLSAgICAgICAgICAgICAgNiBCSU5BUllfQURECi0gICAgICAgICAgICAgIDcgU1RPUkVfTkFNRSAgICAgICAgICAgICAgIDAgKHgpCi0gICAgICAgICAgICAgMTAgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKE5vbmUpCi0gICAgICAgICAgICAgMTMgUkVUVVJOX1ZBTFVFCisgICAgICAgICAgICAgIDIgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKDEpCisgICAgICAgICAgICAgIDQgQklOQVJZX0FERAorICAgICAgICAgICAgICA2IFNUT1JFX05BTUUgICAgICAgICAgICAgICAwICh4KQorICAgICAgICAgICAgICA4IExPQURfQ09OU1QgICAgICAgICAgICAgICAxIChOb25lKQorICAgICAgICAgICAgIDEwIFJFVFVSTl9WQUxVRQorIiIiCisKK2Fubm90X3N0bXRfc3RyID0gIiIiXAorCit4OiBpbnQgPSAxCit5OiBmdW4oMSkKK2xzdFtmdW4oMCldOiBpbnQgPSAxCisiIiIKKyMgbGVhZGluZyBuZXdsaW5lIGlzIGZvciBhIHJlYXNvbiAodGVzdHMgbGluZW5vKQorCitkaXNfYW5ub3Rfc3RtdF9zdHIgPSAiIiJcCisgIDIgICAgICAgICAgIDAgU0VUVVBfQU5OT1RBVElPTlMKKyAgICAgICAgICAgICAgMiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoMSkKKyAgICAgICAgICAgICAgNCBTVE9SRV9OQU1FICAgICAgICAgICAgICAgMCAoeCkKKyAgICAgICAgICAgICAgNiBMT0FEX05BTUUgICAgICAgICAgICAgICAgMSAoaW50KQorICAgICAgICAgICAgICA4IFNUT1JFX0FOTk9UQVRJT04gICAgICAgICAwICh4KQorCisgIDMgICAgICAgICAgMTAgTE9BRF9OQU1FICAgICAgICAgICAgICAgIDIgKGZ1bikKKyAgICAgICAgICAgICAxMiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoMSkKKyAgICAgICAgICAgICAxNCBDQUxMX0ZVTkNUSU9OICAgICAgICAgICAgMQorICAgICAgICAgICAgIDE2IFNUT1JFX0FOTk9UQVRJT04gICAgICAgICAzICh5KQorCisgIDQgICAgICAgICAgMTggTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKDEpCisgICAgICAgICAgICAgMjAgTE9BRF9OQU1FICAgICAgICAgICAgICAgIDQgKGxzdCkKKyAgICAgICAgICAgICAyMiBMT0FEX05BTUUgICAgICAgICAgICAgICAgMiAoZnVuKQorICAgICAgICAgICAgIDI0IExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgwKQorICAgICAgICAgICAgIDI2IENBTExfRlVOQ1RJT04gICAgICAgICAgICAxCisgICAgICAgICAgICAgMjggU1RPUkVfU1VCU0NSCisgICAgICAgICAgICAgMzAgTE9BRF9OQU1FICAgICAgICAgICAgICAgIDEgKGludCkKKyAgICAgICAgICAgICAzMiBQT1BfVE9QCisgICAgICAgICAgICAgMzQgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDIgKE5vbmUpCisgICAgICAgICAgICAgMzYgUkVUVVJOX1ZBTFVFCiAiIiIKIAogY29tcG91bmRfc3RtdF9zdHIgPSAiIiJcCkBAIC0yMTUsNjAgKzI0Nyw4MSBAQAogCiBkaXNfY29tcG91bmRfc3RtdF9zdHIgPSAiIiJcCiAgIDEgICAgICAgICAgIDAgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKDApCi0gICAgICAgICAgICAgIDMgU1RPUkVfTkFNRSAgICAgICAgICAgICAgIDAgKHgpCisgICAgICAgICAgICAgIDIgU1RPUkVfTkFNRSAgICAgICAgICAgICAgIDAgKHgpCiAKLSAgMiAgICAgICAgICAgNiBTRVRVUF9MT09QICAgICAgICAgICAgICAxNCAodG8gMjMpCisgIDIgICAgICAgICAgIDQgU0VUVVBfTE9PUCAgICAgICAgICAgICAgMTIgKHRvIDE4KQogCi0gIDMgICAgID4+ICAgIDkgTE9BRF9OQU1FICAgICAgICAgICAgICAgIDAgKHgpCi0gICAgICAgICAgICAgMTIgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDEpCi0gICAgICAgICAgICAgMTUgSU5QTEFDRV9BREQKLSAgICAgICAgICAgICAxNiBTVE9SRV9OQU1FICAgICAgICAgICAgICAgMCAoeCkKLSAgICAgICAgICAgICAxOSBKVU1QX0FCU09MVVRFICAgICAgICAgICAgOQotICAgICAgICAgICAgIDIyIFBPUF9CTE9DSwotICAgICAgICA+PiAgIDIzIExPQURfQ09OU1QgICAgICAgICAgICAgICAyIChOb25lKQotICAgICAgICAgICAgIDI2IFJFVFVSTl9WQUxVRQorICAzICAgICA+PiAgICA2IExPQURfTkFNRSAgICAgICAgICAgICAgICAwICh4KQorICAgICAgICAgICAgICA4IExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgxKQorICAgICAgICAgICAgIDEwIElOUExBQ0VfQURECisgICAgICAgICAgICAgMTIgU1RPUkVfTkFNRSAgICAgICAgICAgICAgIDAgKHgpCisgICAgICAgICAgICAgMTQgSlVNUF9BQlNPTFVURSAgICAgICAgICAgIDYKKyAgICAgICAgICAgICAxNiBQT1BfQkxPQ0sKKyAgICAgICAgPj4gICAxOCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMiAoTm9uZSkKKyAgICAgICAgICAgICAyMCBSRVRVUk5fVkFMVUUKICIiIgogCiBkaXNfdHJhY2ViYWNrID0gIiIiXAotJTNkICAgICAgICAgICAwIFNFVFVQX0VYQ0VQVCAgICAgICAgICAgIDEyICh0byAxNSkKKyUzZCAgICAgICAgICAgMCBTRVRVUF9FWENFUFQgICAgICAgICAgICAxMiAodG8gMTQpCiAKLSUzZCAgICAgICAgICAgMyBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKLSAgICAgICAgICAgICAgNiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMiAoMCkKLSAgICAtLT4gICAgICAgOSBCSU5BUllfVFJVRV9ESVZJREUKLSAgICAgICAgICAgICAxMCBQT1BfVE9QCi0gICAgICAgICAgICAgMTEgUE9QX0JMT0NLCi0gICAgICAgICAgICAgMTIgSlVNUF9GT1JXQVJEICAgICAgICAgICAgNDYgKHRvIDYxKQorJTNkICAgICAgICAgICAyIExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgxKQorICAgICAgICAgICAgICA0IExPQURfQ09OU1QgICAgICAgICAgICAgICAyICgwKQorICAgIC0tPiAgICAgICA2IEJJTkFSWV9UUlVFX0RJVklERQorICAgICAgICAgICAgICA4IFBPUF9UT1AKKyAgICAgICAgICAgICAxMCBQT1BfQkxPQ0sKKyAgICAgICAgICAgICAxMiBKVU1QX0ZPUldBUkQgICAgICAgICAgICA0MCAodG8gNTQpCiAKLSUzZCAgICAgPj4gICAxNSBEVVBfVE9QCislM2QgICAgID4+ICAgMTQgRFVQX1RPUAogICAgICAgICAgICAgIDE2IExPQURfR0xPQkFMICAgICAgICAgICAgICAwIChFeGNlcHRpb24pCi0gICAgICAgICAgICAgMTkgQ09NUEFSRV9PUCAgICAgICAgICAgICAgMTAgKGV4Y2VwdGlvbiBtYXRjaCkKLSAgICAgICAgICAgICAyMiBQT1BfSlVNUF9JRl9GQUxTRSAgICAgICA2MAotICAgICAgICAgICAgIDI1IFBPUF9UT1AKLSAgICAgICAgICAgICAyNiBTVE9SRV9GQVNUICAgICAgICAgICAgICAgMCAoZSkKLSAgICAgICAgICAgICAyOSBQT1BfVE9QCi0gICAgICAgICAgICAgMzAgU0VUVVBfRklOQUxMWSAgICAgICAgICAgMTQgKHRvIDQ3KQorICAgICAgICAgICAgIDE4IENPTVBBUkVfT1AgICAgICAgICAgICAgIDEwIChleGNlcHRpb24gbWF0Y2gpCisgICAgICAgICAgICAgMjAgUE9QX0pVTVBfSUZfRkFMU0UgICAgICAgNTIKKyAgICAgICAgICAgICAyMiBQT1BfVE9QCisgICAgICAgICAgICAgMjQgU1RPUkVfRkFTVCAgICAgICAgICAgICAgIDAgKGUpCisgICAgICAgICAgICAgMjYgUE9QX1RPUAorICAgICAgICAgICAgIDI4IFNFVFVQX0ZJTkFMTFkgICAgICAgICAgIDEyICh0byA0MikKIAotJTNkICAgICAgICAgIDMzIExPQURfRkFTVCAgICAgICAgICAgICAgICAwIChlKQotICAgICAgICAgICAgIDM2IExPQURfQVRUUiAgICAgICAgICAgICAgICAxIChfX3RyYWNlYmFja19fKQotICAgICAgICAgICAgIDM5IFNUT1JFX0ZBU1QgICAgICAgICAgICAgICAxICh0YikKLSAgICAgICAgICAgICA0MiBQT1BfQkxPQ0sKLSAgICAgICAgICAgICA0MyBQT1BfRVhDRVBUCi0gICAgICAgICAgICAgNDQgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKE5vbmUpCi0gICAgICAgID4+ICAgNDcgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKE5vbmUpCi0gICAgICAgICAgICAgNTAgU1RPUkVfRkFTVCAgICAgICAgICAgICAgIDAgKGUpCi0gICAgICAgICAgICAgNTMgREVMRVRFX0ZBU1QgICAgICAgICAgICAgIDAgKGUpCi0gICAgICAgICAgICAgNTYgRU5EX0ZJTkFMTFkKLSAgICAgICAgICAgICA1NyBKVU1QX0ZPUldBUkQgICAgICAgICAgICAgMSAodG8gNjEpCi0gICAgICAgID4+ICAgNjAgRU5EX0ZJTkFMTFkKKyUzZCAgICAgICAgICAzMCBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMCAoZSkKKyAgICAgICAgICAgICAzMiBMT0FEX0FUVFIgICAgICAgICAgICAgICAgMSAoX190cmFjZWJhY2tfXykKKyAgICAgICAgICAgICAzNCBTVE9SRV9GQVNUICAgICAgICAgICAgICAgMSAodGIpCisgICAgICAgICAgICAgMzYgUE9QX0JMT0NLCisgICAgICAgICAgICAgMzggUE9QX0VYQ0VQVAorICAgICAgICAgICAgIDQwIExPQURfQ09OU1QgICAgICAgICAgICAgICAwIChOb25lKQorICAgICAgICA+PiAgIDQyIExPQURfQ09OU1QgICAgICAgICAgICAgICAwIChOb25lKQorICAgICAgICAgICAgIDQ0IFNUT1JFX0ZBU1QgICAgICAgICAgICAgICAwIChlKQorICAgICAgICAgICAgIDQ2IERFTEVURV9GQVNUICAgICAgICAgICAgICAwIChlKQorICAgICAgICAgICAgIDQ4IEVORF9GSU5BTExZCisgICAgICAgICAgICAgNTAgSlVNUF9GT1JXQVJEICAgICAgICAgICAgIDIgKHRvIDU0KQorICAgICAgICA+PiAgIDUyIEVORF9GSU5BTExZCiAKLSUzZCAgICAgPj4gICA2MSBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMSAodGIpCi0gICAgICAgICAgICAgNjQgUkVUVVJOX1ZBTFVFCislM2QgICAgID4+ICAgNTQgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDEgKHRiKQorICAgICAgICAgICAgIDU2IFJFVFVSTl9WQUxVRQogIiIiICUgKFRSQUNFQkFDS19DT0RFLmNvX2ZpcnN0bGluZW5vICsgMSwKICAgICAgICBUUkFDRUJBQ0tfQ09ERS5jb19maXJzdGxpbmVubyArIDIsCiAgICAgICAgVFJBQ0VCQUNLX0NPREUuY29fZmlyc3RsaW5lbm8gKyAzLAogICAgICAgIFRSQUNFQkFDS19DT0RFLmNvX2ZpcnN0bGluZW5vICsgNCwKICAgICAgICBUUkFDRUJBQ0tfQ09ERS5jb19maXJzdGxpbmVubyArIDUpCiAKK2RlZiBfZnN0cmluZyhhLCBiLCBjLCBkKToKKyAgICByZXR1cm4gZid7YX0ge2I6NH0ge2Mhcn0ge2Qhcjo0fScKKworZGlzX2ZzdHJpbmcgPSAiIiJcCislM2QgICAgICAgICAgIDAgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDAgKGEpCisgICAgICAgICAgICAgIDIgRk9STUFUX1ZBTFVFICAgICAgICAgICAgIDAKKyAgICAgICAgICAgICAgNCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoJyAnKQorICAgICAgICAgICAgICA2IExPQURfRkFTVCAgICAgICAgICAgICAgICAxIChiKQorICAgICAgICAgICAgICA4IExPQURfQ09OU1QgICAgICAgICAgICAgICAyICgnNCcpCisgICAgICAgICAgICAgMTAgRk9STUFUX1ZBTFVFICAgICAgICAgICAgIDQgKHdpdGggZm9ybWF0KQorICAgICAgICAgICAgIDEyIExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgnICcpCisgICAgICAgICAgICAgMTQgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDIgKGMpCisgICAgICAgICAgICAgMTYgRk9STUFUX1ZBTFVFICAgICAgICAgICAgIDIgKHJlcHIpCisgICAgICAgICAgICAgMTggTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKCcgJykKKyAgICAgICAgICAgICAyMCBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMyAoZCkKKyAgICAgICAgICAgICAyMiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMiAoJzQnKQorICAgICAgICAgICAgIDI0IEZPUk1BVF9WQUxVRSAgICAgICAgICAgICA2IChyZXByLCB3aXRoIGZvcm1hdCkKKyAgICAgICAgICAgICAyNiBCVUlMRF9TVFJJTkcgICAgICAgICAgICAgNworICAgICAgICAgICAgIDI4IFJFVFVSTl9WQUxVRQorIiIiICUgKF9mc3RyaW5nLl9fY29kZV9fLmNvX2ZpcnN0bGluZW5vICsgMSwpCisKIGRlZiBfZyh4KToKICAgICB5aWVsZCB4CiAKQEAgLTM0NSw2ICszOTgsNyBAQAogICAgIGRlZiB0ZXN0X2Rpc2Fzc2VtYmxlX3N0cihzZWxmKToKICAgICAgICAgc2VsZi5kb19kaXNhc3NlbWJseV90ZXN0KGV4cHJfc3RyLCBkaXNfZXhwcl9zdHIpCiAgICAgICAgIHNlbGYuZG9fZGlzYXNzZW1ibHlfdGVzdChzaW1wbGVfc3RtdF9zdHIsIGRpc19zaW1wbGVfc3RtdF9zdHIpCisgICAgICAgIHNlbGYuZG9fZGlzYXNzZW1ibHlfdGVzdChhbm5vdF9zdG10X3N0ciwgZGlzX2Fubm90X3N0bXRfc3RyKQogICAgICAgICBzZWxmLmRvX2Rpc2Fzc2VtYmx5X3Rlc3QoY29tcG91bmRfc3RtdF9zdHIsIGRpc19jb21wb3VuZF9zdG10X3N0cikKIAogICAgIGRlZiB0ZXN0X2Rpc2Fzc2VtYmxlX2J5dGVzKHNlbGYpOgpAQCAtMzcxLDYgKzQyNSw5IEBACiAgICAgICAgIGdlbl9kaXNhcyA9IHNlbGYuZ2V0X2Rpc2Fzc2VtYmx5KF9nKDEpKSAgIyBEaXNhc3NlbWJsZSBnZW5lcmF0b3IgaXRzZWxmCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2VuX2Rpc2FzLCBnZW5fZnVuY19kaXNhcykKIAorICAgIGRlZiB0ZXN0X2Rpc2Fzc2VtYmxlX2ZzdHJpbmcoc2VsZik6CisgICAgICAgIHNlbGYuZG9fZGlzYXNzZW1ibHlfdGVzdChfZnN0cmluZywgZGlzX2ZzdHJpbmcpCisKICAgICBkZWYgdGVzdF9kaXNfbm9uZShzZWxmKToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZGVsIHN5cy5sYXN0X3RyYWNlYmFjawpAQCAtNTQxLDcgKzU5OCw3IEBACiBLdy1vbmx5IGFyZ3VtZW50czogMAogTnVtYmVyIG9mIGxvY2FsczogIDIKIFN0YWNrIHNpemU6ICAgICAgICAxNwotRmxhZ3M6ICAgICAgICAgICAgIE9QVElNSVpFRCwgTkVXTE9DQUxTLCBHRU5FUkFUT1IsIE5PRlJFRSwgQ09ST1VUSU5FCitGbGFnczogICAgICAgICAgICAgT1BUSU1JWkVELCBORVdMT0NBTFMsIE5PRlJFRSwgQ09ST1VUSU5FCiBDb25zdGFudHM6CiAgICAwOiBOb25lCiAgICAxOiAxIiIiCkBAIC02NDksMTcxICs3MDYsMTY5IEBACiAKIEluc3RydWN0aW9uID0gZGlzLkluc3RydWN0aW9uCiBleHBlY3RlZF9vcGluZm9fb3V0ZXIgPSBbCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0xLCBhcmd2YWw9MywgYXJncmVwcj0nMycsIG9mZnNldD0wLCBzdGFydHNfbGluZT0yLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0yLCBhcmd2YWw9NCwgYXJncmVwcj0nNCcsIG9mZnNldD0zLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DTE9TVVJFJywgb3Bjb2RlPTEzNSwgYXJnPTAsIGFyZ3ZhbD0nYScsIGFyZ3JlcHI9J2EnLCBvZmZzZXQ9Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ0xPU1VSRScsIG9wY29kZT0xMzUsIGFyZz0xLCBhcmd2YWw9J2InLCBhcmdyZXByPSdiJywgb2Zmc2V0PTksIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdCVUlMRF9UVVBMRScsIG9wY29kZT0xMDIsIGFyZz0yLCBhcmd2YWw9MiwgYXJncmVwcj0nJywgb2Zmc2V0PTEyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0zLCBhcmd2YWw9Y29kZV9vYmplY3RfZiwgYXJncmVwcj1yZXByKGNvZGVfb2JqZWN0X2YpLCBvZmZzZXQ9MTUsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTQsIGFyZ3ZhbD0nb3V0ZXIuPGxvY2Fscz4uZicsIGFyZ3JlcHI9IidvdXRlci48bG9jYWxzPi5mJyIsIG9mZnNldD0xOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J01BS0VfQ0xPU1VSRScsIG9wY29kZT0xMzQsIGFyZz0yLCBhcmd2YWw9MiwgYXJncmVwcj0nJywgb2Zmc2V0PTIxLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nU1RPUkVfRkFTVCcsIG9wY29kZT0xMjUsIGFyZz0yLCBhcmd2YWw9J2YnLCBhcmdyZXByPSdmJywgb2Zmc2V0PTI0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MCwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTI3LCBzdGFydHNfbGluZT03LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9ERVJFRicsIG9wY29kZT0xMzYsIGFyZz0wLCBhcmd2YWw9J2EnLCBhcmdyZXByPSdhJywgb2Zmc2V0PTMwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9ERVJFRicsIG9wY29kZT0xMzYsIGFyZz0xLCBhcmd2YWw9J2InLCBhcmdyZXByPSdiJywgb2Zmc2V0PTMzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz01LCBhcmd2YWw9JycsIGFyZ3JlcHI9IicnIiwgb2Zmc2V0PTM2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz02LCBhcmd2YWw9MSwgYXJncmVwcj0nMScsIG9mZnNldD0zOSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0JVSUxEX0xJU1QnLCBvcGNvZGU9MTAzLCBhcmc9MCwgYXJndmFsPTAsIGFyZ3JlcHI9JycsIG9mZnNldD00Miwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0JVSUxEX01BUCcsIG9wY29kZT0xMDUsIGFyZz0wLCBhcmd2YWw9MCwgYXJncmVwcj0nJywgb2Zmc2V0PTQ1LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz03LCBhcmd2YWw9J0hlbGxvIHdvcmxkIScsIGFyZ3JlcHI9IidIZWxsbyB3b3JsZCEnIiwgb2Zmc2V0PTQ4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz03LCBhcmd2YWw9NywgYXJncmVwcj0nNyBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcicsIG9mZnNldD01MSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9NTQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MiwgYXJndmFsPSdmJywgYXJncmVwcj0nZicsIG9mZnNldD01NSwgc3RhcnRzX2xpbmU9OCwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1JFVFVSTl9WQUxVRScsIG9wY29kZT04MywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9NTgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTgsIGFyZ3ZhbD0oMywgNCksIGFyZ3JlcHI9JygzLCA0KScsIG9mZnNldD0wLCBzdGFydHNfbGluZT0yLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DTE9TVVJFJywgb3Bjb2RlPTEzNSwgYXJnPTAsIGFyZ3ZhbD0nYScsIGFyZ3JlcHI9J2EnLCBvZmZzZXQ9Miwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ0xPU1VSRScsIG9wY29kZT0xMzUsIGFyZz0xLCBhcmd2YWw9J2InLCBhcmdyZXByPSdiJywgb2Zmc2V0PTQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdCVUlMRF9UVVBMRScsIG9wY29kZT0xMDIsIGFyZz0yLCBhcmd2YWw9MiwgYXJncmVwcj0nJywgb2Zmc2V0PTYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTMsIGFyZ3ZhbD1jb2RlX29iamVjdF9mLCBhcmdyZXByPXJlcHIoY29kZV9vYmplY3RfZiksIG9mZnNldD04LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz00LCBhcmd2YWw9J291dGVyLjxsb2NhbHM+LmYnLCBhcmdyZXByPSInb3V0ZXIuPGxvY2Fscz4uZiciLCBvZmZzZXQ9MTAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdNQUtFX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMiwgYXJnPTksIGFyZ3ZhbD05LCBhcmdyZXByPScnLCBvZmZzZXQ9MTIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTVE9SRV9GQVNUJywgb3Bjb2RlPTEyNSwgYXJnPTIsIGFyZ3ZhbD0nZicsIGFyZ3JlcHI9J2YnLCBvZmZzZXQ9MTQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0wLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9MTYsIHN0YXJ0c19saW5lPTcsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0RFUkVGJywgb3Bjb2RlPTEzNiwgYXJnPTAsIGFyZ3ZhbD0nYScsIGFyZ3JlcHI9J2EnLCBvZmZzZXQ9MTgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0RFUkVGJywgb3Bjb2RlPTEzNiwgYXJnPTEsIGFyZ3ZhbD0nYicsIGFyZ3JlcHI9J2InLCBvZmZzZXQ9MjAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTUsIGFyZ3ZhbD0nJywgYXJncmVwcj0iJyciLCBvZmZzZXQ9MjIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTYsIGFyZ3ZhbD0xLCBhcmdyZXByPScxJywgb2Zmc2V0PTI0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQlVJTERfTElTVCcsIG9wY29kZT0xMDMsIGFyZz0wLCBhcmd2YWw9MCwgYXJncmVwcj0nJywgb2Zmc2V0PTI2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQlVJTERfTUFQJywgb3Bjb2RlPTEwNSwgYXJnPTAsIGFyZ3ZhbD0wLCBhcmdyZXByPScnLCBvZmZzZXQ9MjgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTcsIGFyZ3ZhbD0nSGVsbG8gd29ybGQhJywgYXJncmVwcj0iJ0hlbGxvIHdvcmxkISciLCBvZmZzZXQ9MzAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTcsIGFyZ3ZhbD03LCBhcmdyZXByPScnLCBvZmZzZXQ9MzIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTM0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTIsIGFyZ3ZhbD0nZicsIGFyZ3JlcHI9J2YnLCBvZmZzZXQ9MzYsIHN0YXJ0c19saW5lPTgsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdSRVRVUk5fVkFMVUUnLCBvcGNvZGU9ODMsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTM4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCiBdCiAKIGV4cGVjdGVkX29waW5mb19mID0gWwotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MSwgYXJndmFsPTUsIGFyZ3JlcHI9JzUnLCBvZmZzZXQ9MCwgc3RhcnRzX2xpbmU9MywgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MiwgYXJndmFsPTYsIGFyZ3JlcHI9JzYnLCBvZmZzZXQ9Mywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ0xPU1VSRScsIG9wY29kZT0xMzUsIGFyZz0yLCBhcmd2YWw9J2EnLCBhcmdyZXByPSdhJywgb2Zmc2V0PTYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NMT1NVUkUnLCBvcGNvZGU9MTM1LCBhcmc9MywgYXJndmFsPSdiJywgYXJncmVwcj0nYicsIG9mZnNldD05LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DTE9TVVJFJywgb3Bjb2RlPTEzNSwgYXJnPTAsIGFyZ3ZhbD0nYycsIGFyZ3JlcHI9J2MnLCBvZmZzZXQ9MTIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NMT1NVUkUnLCBvcGNvZGU9MTM1LCBhcmc9MSwgYXJndmFsPSdkJywgYXJncmVwcj0nZCcsIG9mZnNldD0xNSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0JVSUxEX1RVUExFJywgb3Bjb2RlPTEwMiwgYXJnPTQsIGFyZ3ZhbD00LCBhcmdyZXByPScnLCBvZmZzZXQ9MTgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTMsIGFyZ3ZhbD1jb2RlX29iamVjdF9pbm5lciwgYXJncmVwcj1yZXByKGNvZGVfb2JqZWN0X2lubmVyKSwgb2Zmc2V0PTIxLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz00LCBhcmd2YWw9J291dGVyLjxsb2NhbHM+LmYuPGxvY2Fscz4uaW5uZXInLCBhcmdyZXByPSInb3V0ZXIuPGxvY2Fscz4uZi48bG9jYWxzPi5pbm5lciciLCBvZmZzZXQ9MjQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdNQUtFX0NMT1NVUkUnLCBvcGNvZGU9MTM0LCBhcmc9MiwgYXJndmFsPTIsIGFyZ3JlcHI9JycsIG9mZnNldD0yNywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1NUT1JFX0ZBU1QnLCBvcGNvZGU9MTI1LCBhcmc9MiwgYXJndmFsPSdpbm5lcicsIGFyZ3JlcHI9J2lubmVyJywgb2Zmc2V0PTMwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MCwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTMzLCBzdGFydHNfbGluZT01LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9ERVJFRicsIG9wY29kZT0xMzYsIGFyZz0yLCBhcmd2YWw9J2EnLCBhcmdyZXByPSdhJywgb2Zmc2V0PTM2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9ERVJFRicsIG9wY29kZT0xMzYsIGFyZz0zLCBhcmd2YWw9J2InLCBhcmdyZXByPSdiJywgb2Zmc2V0PTM5LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9ERVJFRicsIG9wY29kZT0xMzYsIGFyZz0wLCBhcmd2YWw9J2MnLCBhcmdyZXByPSdjJywgb2Zmc2V0PTQyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9ERVJFRicsIG9wY29kZT0xMzYsIGFyZz0xLCBhcmd2YWw9J2QnLCBhcmdyZXByPSdkJywgb2Zmc2V0PTQ1LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz00LCBhcmd2YWw9NCwgYXJncmVwcj0nNCBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcicsIG9mZnNldD00OCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9NTEsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MiwgYXJndmFsPSdpbm5lcicsIGFyZ3JlcHI9J2lubmVyJywgb2Zmc2V0PTUyLCBzdGFydHNfbGluZT02LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUkVUVVJOX1ZBTFVFJywgb3Bjb2RlPTgzLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD01NSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NSwgYXJndmFsPSg1LCA2KSwgYXJncmVwcj0nKDUsIDYpJywgb2Zmc2V0PTAsIHN0YXJ0c19saW5lPTMsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NMT1NVUkUnLCBvcGNvZGU9MTM1LCBhcmc9MiwgYXJndmFsPSdhJywgYXJncmVwcj0nYScsIG9mZnNldD0yLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DTE9TVVJFJywgb3Bjb2RlPTEzNSwgYXJnPTMsIGFyZ3ZhbD0nYicsIGFyZ3JlcHI9J2InLCBvZmZzZXQ9NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ0xPU1VSRScsIG9wY29kZT0xMzUsIGFyZz0wLCBhcmd2YWw9J2MnLCBhcmdyZXByPSdjJywgb2Zmc2V0PTYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NMT1NVUkUnLCBvcGNvZGU9MTM1LCBhcmc9MSwgYXJndmFsPSdkJywgYXJncmVwcj0nZCcsIG9mZnNldD04LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQlVJTERfVFVQTEUnLCBvcGNvZGU9MTAyLCBhcmc9NCwgYXJndmFsPTQsIGFyZ3JlcHI9JycsIG9mZnNldD0xMCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MywgYXJndmFsPWNvZGVfb2JqZWN0X2lubmVyLCBhcmdyZXByPXJlcHIoY29kZV9vYmplY3RfaW5uZXIpLCBvZmZzZXQ9MTIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTQsIGFyZ3ZhbD0nb3V0ZXIuPGxvY2Fscz4uZi48bG9jYWxzPi5pbm5lcicsIGFyZ3JlcHI9IidvdXRlci48bG9jYWxzPi5mLjxsb2NhbHM+LmlubmVyJyIsIG9mZnNldD0xNCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J01BS0VfRlVOQ1RJT04nLCBvcGNvZGU9MTMyLCBhcmc9OSwgYXJndmFsPTksIGFyZ3JlcHI9JycsIG9mZnNldD0xNiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1NUT1JFX0ZBU1QnLCBvcGNvZGU9MTI1LCBhcmc9MiwgYXJndmFsPSdpbm5lcicsIGFyZ3JlcHI9J2lubmVyJywgb2Zmc2V0PTE4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MCwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTIwLCBzdGFydHNfbGluZT01LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9ERVJFRicsIG9wY29kZT0xMzYsIGFyZz0yLCBhcmd2YWw9J2EnLCBhcmdyZXByPSdhJywgb2Zmc2V0PTIyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9ERVJFRicsIG9wY29kZT0xMzYsIGFyZz0zLCBhcmd2YWw9J2InLCBhcmdyZXByPSdiJywgb2Zmc2V0PTI0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9ERVJFRicsIG9wY29kZT0xMzYsIGFyZz0wLCBhcmd2YWw9J2MnLCBhcmdyZXByPSdjJywgb2Zmc2V0PTI2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9ERVJFRicsIG9wY29kZT0xMzYsIGFyZz0xLCBhcmd2YWw9J2QnLCBhcmdyZXByPSdkJywgb2Zmc2V0PTI4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz00LCBhcmd2YWw9NCwgYXJncmVwcj0nJywgb2Zmc2V0PTMwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0zMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0yLCBhcmd2YWw9J2lubmVyJywgYXJncmVwcj0naW5uZXInLCBvZmZzZXQ9MzQsIHN0YXJ0c19saW5lPTYsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdSRVRVUk5fVkFMVUUnLCBvcGNvZGU9ODMsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTM2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCiBdCiAKIGV4cGVjdGVkX29waW5mb19pbm5lciA9IFsKICAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0wLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9MCwgc3RhcnRzX2xpbmU9NCwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MCwgYXJndmFsPSdhJywgYXJncmVwcj0nYScsIG9mZnNldD0zLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9ERVJFRicsIG9wY29kZT0xMzYsIGFyZz0xLCBhcmd2YWw9J2InLCBhcmdyZXByPSdiJywgb2Zmc2V0PTYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0RFUkVGJywgb3Bjb2RlPTEzNiwgYXJnPTIsIGFyZ3ZhbD0nYycsIGFyZ3JlcHI9J2MnLCBvZmZzZXQ9OSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MywgYXJndmFsPSdkJywgYXJncmVwcj0nZCcsIG9mZnNldD0xMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2UnLCBhcmdyZXByPSdlJywgb2Zmc2V0PTE1LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTEsIGFyZ3ZhbD0nZicsIGFyZ3JlcHI9J2YnLCBvZmZzZXQ9MTgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTYsIGFyZ3ZhbD02LCBhcmdyZXByPSc2IHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyJywgb2Zmc2V0PTIxLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yNCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MCwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9J05vbmUnLCBvZmZzZXQ9MjUsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdSRVRVUk5fVkFMVUUnLCBvcGNvZGU9ODMsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTI4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9ERVJFRicsIG9wY29kZT0xMzYsIGFyZz0wLCBhcmd2YWw9J2EnLCBhcmdyZXByPSdhJywgb2Zmc2V0PTIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0RFUkVGJywgb3Bjb2RlPTEzNiwgYXJnPTEsIGFyZ3ZhbD0nYicsIGFyZ3JlcHI9J2InLCBvZmZzZXQ9NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MiwgYXJndmFsPSdjJywgYXJncmVwcj0nYycsIG9mZnNldD02LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9ERVJFRicsIG9wY29kZT0xMzYsIGFyZz0zLCBhcmd2YWw9J2QnLCBhcmdyZXByPSdkJywgb2Zmc2V0PTgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdlJywgYXJncmVwcj0nZScsIG9mZnNldD0xMCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0xLCBhcmd2YWw9J2YnLCBhcmdyZXByPSdmJywgb2Zmc2V0PTEyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz02LCBhcmd2YWw9NiwgYXJncmVwcj0nJywgb2Zmc2V0PTE0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MCwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9J05vbmUnLCBvZmZzZXQ9MTgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdSRVRVUk5fVkFMVUUnLCBvcGNvZGU9ODMsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCiBdCiAKIGV4cGVjdGVkX29waW5mb19qdW1weSA9IFsKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTRVRVUF9MT09QJywgb3Bjb2RlPTEyMCwgYXJnPTY4LCBhcmd2YWw9NzEsIGFyZ3JlcHI9J3RvIDcxJywgb2Zmc2V0PTAsIHN0YXJ0c19saW5lPTMsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0wLCBhcmd2YWw9J3JhbmdlJywgYXJncmVwcj0ncmFuZ2UnLCBvZmZzZXQ9Mywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MSwgYXJndmFsPTEwLCBhcmdyZXByPScxMCcsIG9mZnNldD02LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nMSBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcicsIG9mZnNldD05LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nR0VUX0lURVInLCBvcGNvZGU9NjgsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTEyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nRk9SX0lURVInLCBvcGNvZGU9OTMsIGFyZz00NCwgYXJndmFsPTYwLCBhcmdyZXByPSd0byA2MCcsIG9mZnNldD0xMywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nU1RPUkVfRkFTVCcsIG9wY29kZT0xMjUsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTE2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MSwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTE5LCBzdGFydHNfbGluZT00LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9MjIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScxIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyJywgb2Zmc2V0PTI1LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTI5LCBzdGFydHNfbGluZT01LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0yLCBhcmd2YWw9NCwgYXJncmVwcj0nNCcsIG9mZnNldD0zMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0NPTVBBUkVfT1AnLCBvcGNvZGU9MTA3LCBhcmc9MCwgYXJndmFsPSc8JywgYXJncmVwcj0nPCcsIG9mZnNldD0zNSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9KVU1QX0lGX0ZBTFNFJywgb3Bjb2RlPTExNCwgYXJnPTQ0LCBhcmd2YWw9NDQsIGFyZ3JlcHI9JycsIG9mZnNldD0zOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0pVTVBfQUJTT0xVVEUnLCBvcGNvZGU9MTEzLCBhcmc9MTMsIGFyZ3ZhbD0xMywgYXJncmVwcj0nJywgb2Zmc2V0PTQxLCBzdGFydHNfbGluZT02LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9NDQsIHN0YXJ0c19saW5lPTcsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MywgYXJndmFsPTYsIGFyZ3JlcHI9JzYnLCBvZmZzZXQ9NDcsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDT01QQVJFX09QJywgb3Bjb2RlPTEwNywgYXJnPTQsIGFyZ3ZhbD0nPicsIGFyZ3JlcHI9Jz4nLCBvZmZzZXQ9NTAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfSlVNUF9JRl9GQUxTRScsIG9wY29kZT0xMTQsIGFyZz0xMywgYXJndmFsPTEzLCBhcmdyZXByPScnLCBvZmZzZXQ9NTMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdCUkVBS19MT09QJywgb3Bjb2RlPTgwLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD01Niwgc3RhcnRzX2xpbmU9OCwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0pVTVBfQUJTT0xVVEUnLCBvcGNvZGU9MTEzLCBhcmc9MTMsIGFyZ3ZhbD0xMywgYXJncmVwcj0nJywgb2Zmc2V0PTU3LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0JMT0NLJywgb3Bjb2RlPTg3LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD02MCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MSwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTYxLCBzdGFydHNfbGluZT0xMCwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NCwgYXJndmFsPSdJIGNhbiBoYXogZWxzZSBjbGF1c2U/JywgYXJncmVwcj0iJ0kgY2FuIGhheiBlbHNlIGNsYXVzZT8nIiwgb2Zmc2V0PTY0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nMSBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcicsIG9mZnNldD02Nywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9NzAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTRVRVUF9MT09QJywgb3Bjb2RlPTEyMCwgYXJnPTY4LCBhcmd2YWw9MTQyLCBhcmdyZXByPSd0byAxNDInLCBvZmZzZXQ9NzEsIHN0YXJ0c19saW5lPTExLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD03NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0pVTVBfSUZfRkFMU0UnLCBvcGNvZGU9MTE0LCBhcmc9MTMxLCBhcmd2YWw9MTMxLCBhcmdyZXByPScnLCBvZmZzZXQ9NzcsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9ODAsIHN0YXJ0c19saW5lPTEyLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9ODMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScxIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyJywgb2Zmc2V0PTg2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD04OSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTkwLCBzdGFydHNfbGluZT0xMywgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEnLCBvZmZzZXQ9OTMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdJTlBMQUNFX1NVQlRSQUNUJywgb3Bjb2RlPTU2LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD05Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1NUT1JFX0ZBU1QnLCBvcGNvZGU9MTI1LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD05Nywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTEwMCwgc3RhcnRzX2xpbmU9MTQsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTMsIGFyZ3ZhbD02LCBhcmdyZXByPSc2Jywgb2Zmc2V0PTEwMywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0NPTVBBUkVfT1AnLCBvcGNvZGU9MTA3LCBhcmc9NCwgYXJndmFsPSc+JywgYXJncmVwcj0nPicsIG9mZnNldD0xMDYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfSlVNUF9JRl9GQUxTRScsIG9wY29kZT0xMTQsIGFyZz0xMTUsIGFyZ3ZhbD0xMTUsIGFyZ3JlcHI9JycsIG9mZnNldD0xMDksIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0FCU09MVVRFJywgb3Bjb2RlPTExMywgYXJnPTc0LCBhcmd2YWw9NzQsIGFyZ3JlcHI9JycsIG9mZnNldD0xMTIsIHN0YXJ0c19saW5lPTE1LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9MTE1LCBzdGFydHNfbGluZT0xNiwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0yLCBhcmd2YWw9NCwgYXJncmVwcj0nNCcsIG9mZnNldD0xMTgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDT01QQVJFX09QJywgb3Bjb2RlPTEwNywgYXJnPTAsIGFyZ3ZhbD0nPCcsIGFyZ3JlcHI9JzwnLCBvZmZzZXQ9MTIxLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0pVTVBfSUZfRkFMU0UnLCBvcGNvZGU9MTE0LCBhcmc9NzQsIGFyZ3ZhbD03NCwgYXJncmVwcj0nJywgb2Zmc2V0PTEyNCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0JSRUFLX0xPT1AnLCBvcGNvZGU9ODAsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTEyNywgc3RhcnRzX2xpbmU9MTcsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0FCU09MVVRFJywgb3Bjb2RlPTExMywgYXJnPTc0LCBhcmd2YWw9NzQsIGFyZ3JlcHI9JycsIG9mZnNldD0xMjgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfQkxPQ0snLCBvcGNvZGU9ODcsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTEzMSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MSwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTEzMiwgc3RhcnRzX2xpbmU9MTksIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTYsIGFyZ3ZhbD0nV2hvIGxldCBsb2xjYXR6IGludG8gdGhpcyB0ZXN0IHN1aXRlPycsIGFyZ3JlcHI9IidXaG8gbGV0IGxvbGNhdHogaW50byB0aGlzIHRlc3Qgc3VpdGU/JyIsIG9mZnNldD0xMzUsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScxIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyJywgb2Zmc2V0PTEzOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTQxLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nU0VUVVBfRklOQUxMWScsIG9wY29kZT0xMjIsIGFyZz03MywgYXJndmFsPTIxOCwgYXJncmVwcj0ndG8gMjE4Jywgb2Zmc2V0PTE0Miwgc3RhcnRzX2xpbmU9MjAsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1NFVFVQX0VYQ0VQVCcsIG9wY29kZT0xMjEsIGFyZz0xMiwgYXJndmFsPTE2MCwgYXJncmVwcj0ndG8gMTYwJywgb2Zmc2V0PTE0NSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEnLCBvZmZzZXQ9MTQ4LCBzdGFydHNfbGluZT0yMSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NywgYXJndmFsPTAsIGFyZ3JlcHI9JzAnLCBvZmZzZXQ9MTUxLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQklOQVJZX1RSVUVfRElWSURFJywgb3Bjb2RlPTI3LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNTQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE1NSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9CTE9DSycsIG9wY29kZT04NywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTU2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nSlVNUF9GT1JXQVJEJywgb3Bjb2RlPTExMCwgYXJnPTI4LCBhcmd2YWw9MTg4LCBhcmdyZXByPSd0byAxODgnLCBvZmZzZXQ9MTU3LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nRFVQX1RPUCcsIG9wY29kZT00LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNjAsIHN0YXJ0c19saW5lPTIyLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0yLCBhcmd2YWw9J1plcm9EaXZpc2lvbkVycm9yJywgYXJncmVwcj0nWmVyb0RpdmlzaW9uRXJyb3InLCBvZmZzZXQ9MTYxLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQ09NUEFSRV9PUCcsIG9wY29kZT0xMDcsIGFyZz0xMCwgYXJndmFsPSdleGNlcHRpb24gbWF0Y2gnLCBhcmdyZXByPSdleGNlcHRpb24gbWF0Y2gnLCBvZmZzZXQ9MTY0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0pVTVBfSUZfRkFMU0UnLCBvcGNvZGU9MTE0LCBhcmc9MTg3LCBhcmd2YWw9MTg3LCBhcmdyZXByPScnLCBvZmZzZXQ9MTY3LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNzAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE3MSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTcyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MSwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTE3Mywgc3RhcnRzX2xpbmU9MjMsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTgsIGFyZ3ZhbD0nSGVyZSB3ZSBnbywgaGVyZSB3ZSBnbywgaGVyZSB3ZSBnby4uLicsIGFyZ3JlcHI9IidIZXJlIHdlIGdvLCBoZXJlIHdlIGdvLCBoZXJlIHdlIGdvLi4uJyIsIG9mZnNldD0xNzYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScxIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyJywgb2Zmc2V0PTE3OSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTgyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0VYQ0VQVCcsIG9wY29kZT04OSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTgzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nSlVNUF9GT1JXQVJEJywgb3Bjb2RlPTExMCwgYXJnPTI3LCBhcmd2YWw9MjE0LCBhcmdyZXByPSd0byAyMTQnLCBvZmZzZXQ9MTg0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nRU5EX0ZJTkFMTFknLCBvcGNvZGU9ODgsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE4Nywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9MTg4LCBzdGFydHNfbGluZT0yNSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nU0VUVVBfV0lUSCcsIG9wY29kZT0xNDMsIGFyZz0xNywgYXJndmFsPTIxMSwgYXJncmVwcj0ndG8gMjExJywgb2Zmc2V0PTE5MSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1NUT1JFX0ZBU1QnLCBvcGNvZGU9MTI1LCBhcmc9MSwgYXJndmFsPSdkb2RneScsIGFyZ3JlcHI9J2RvZGd5Jywgb2Zmc2V0PTE5NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTEsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD0xOTcsIHN0YXJ0c19saW5lPTI2LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz05LCBhcmd2YWw9J05ldmVyIHJlYWNoIHRoaXMnLCBhcmdyZXByPSInTmV2ZXIgcmVhY2ggdGhpcyciLCBvZmZzZXQ9MjAwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nMSBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcicsIG9mZnNldD0yMDMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIwNiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9CTE9DSycsIG9wY29kZT04NywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjA3LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0wLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nTm9uZScsIG9mZnNldD0yMDgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdXSVRIX0NMRUFOVVBfU1RBUlQnLCBvcGNvZGU9ODEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIxMSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nV0lUSF9DTEVBTlVQX0ZJTklTSCcsIG9wY29kZT04MiwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjEyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nRU5EX0ZJTkFMTFknLCBvcGNvZGU9ODgsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIxMywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9CTE9DSycsIG9wY29kZT04NywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjE0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTAsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPSdOb25lJywgb2Zmc2V0PTIxNSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTEsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD0yMTgsIHN0YXJ0c19saW5lPTI4LCBpc19qdW1wX3RhcmdldD1UcnVlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTEwLCBhcmd2YWw9Ik9LLCBub3cgd2UncmUgZG9uZSIsIGFyZ3JlcHI9JyJPSywgbm93IHdlXCdyZSBkb25lIicsIG9mZnNldD0yMjEsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScxIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyJywgb2Zmc2V0PTIyNCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjI3LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nRU5EX0ZJTkFMTFknLCBvcGNvZGU9ODgsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIyOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MCwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9J05vbmUnLCBvZmZzZXQ9MjI5LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUkVUVVJOX1ZBTFVFJywgb3Bjb2RlPTgzLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yMzIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTRVRVUF9MT09QJywgb3Bjb2RlPTEyMCwgYXJnPTUyLCBhcmd2YWw9NTQsIGFyZ3JlcHI9J3RvIDU0Jywgb2Zmc2V0PTAsIHN0YXJ0c19saW5lPTMsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0wLCBhcmd2YWw9J3JhbmdlJywgYXJncmVwcj0ncmFuZ2UnLCBvZmZzZXQ9Miwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MSwgYXJndmFsPTEwLCBhcmdyZXByPScxMCcsIG9mZnNldD00LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nJywgb2Zmc2V0PTYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdHRVRfSVRFUicsIG9wY29kZT02OCwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9OCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0ZPUl9JVEVSJywgb3Bjb2RlPTkzLCBhcmc9MzIsIGFyZ3ZhbD00NCwgYXJncmVwcj0ndG8gNDQnLCBvZmZzZXQ9MTAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1NUT1JFX0ZBU1QnLCBvcGNvZGU9MTI1LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD0xMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTEsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD0xNCwgc3RhcnRzX2xpbmU9NCwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTE2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nJywgb2Zmc2V0PTE4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yMCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTIyLCBzdGFydHNfbGluZT01LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0yLCBhcmd2YWw9NCwgYXJncmVwcj0nNCcsIG9mZnNldD0yNCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0NPTVBBUkVfT1AnLCBvcGNvZGU9MTA3LCBhcmc9MCwgYXJndmFsPSc8JywgYXJncmVwcj0nPCcsIG9mZnNldD0yNiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9KVU1QX0lGX0ZBTFNFJywgb3Bjb2RlPTExNCwgYXJnPTMyLCBhcmd2YWw9MzIsIGFyZ3JlcHI9JycsIG9mZnNldD0yOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0pVTVBfQUJTT0xVVEUnLCBvcGNvZGU9MTEzLCBhcmc9MTAsIGFyZ3ZhbD0xMCwgYXJncmVwcj0nJywgb2Zmc2V0PTMwLCBzdGFydHNfbGluZT02LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9MzIsIHN0YXJ0c19saW5lPTcsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MywgYXJndmFsPTYsIGFyZ3JlcHI9JzYnLCBvZmZzZXQ9MzQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDT01QQVJFX09QJywgb3Bjb2RlPTEwNywgYXJnPTQsIGFyZ3ZhbD0nPicsIGFyZ3JlcHI9Jz4nLCBvZmZzZXQ9MzYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfSlVNUF9JRl9GQUxTRScsIG9wY29kZT0xMTQsIGFyZz0xMCwgYXJndmFsPTEwLCBhcmdyZXByPScnLCBvZmZzZXQ9MzgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdCUkVBS19MT09QJywgb3Bjb2RlPTgwLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD00MCwgc3RhcnRzX2xpbmU9OCwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0pVTVBfQUJTT0xVVEUnLCBvcGNvZGU9MTEzLCBhcmc9MTAsIGFyZ3ZhbD0xMCwgYXJncmVwcj0nJywgb2Zmc2V0PTQyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0JMT0NLJywgb3Bjb2RlPTg3LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD00NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MSwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTQ2LCBzdGFydHNfbGluZT0xMCwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NCwgYXJndmFsPSdJIGNhbiBoYXogZWxzZSBjbGF1c2U/JywgYXJncmVwcj0iJ0kgY2FuIGhheiBlbHNlIGNsYXVzZT8nIiwgb2Zmc2V0PTQ4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nJywgb2Zmc2V0PTUwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD01Miwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1NFVFVQX0xPT1AnLCBvcGNvZGU9MTIwLCBhcmc9NTIsIGFyZ3ZhbD0xMDgsIGFyZ3JlcHI9J3RvIDEwOCcsIG9mZnNldD01NCwgc3RhcnRzX2xpbmU9MTEsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTU2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfSlVNUF9JRl9GQUxTRScsIG9wY29kZT0xMTQsIGFyZz05OCwgYXJndmFsPTk4LCBhcmdyZXByPScnLCBvZmZzZXQ9NTgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9NjAsIHN0YXJ0c19saW5lPTEyLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9NjIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScnLCBvZmZzZXQ9NjQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTY2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9NjgsIHN0YXJ0c19saW5lPTEzLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz01LCBhcmd2YWw9MSwgYXJncmVwcj0nMScsIG9mZnNldD03MCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0lOUExBQ0VfU1VCVFJBQ1QnLCBvcGNvZGU9NTYsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTcyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nU1RPUkVfRkFTVCcsIG9wY29kZT0xMjUsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTc0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9NzYsIHN0YXJ0c19saW5lPTE0LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0zLCBhcmd2YWw9NiwgYXJncmVwcj0nNicsIG9mZnNldD03OCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0NPTVBBUkVfT1AnLCBvcGNvZGU9MTA3LCBhcmc9NCwgYXJndmFsPSc+JywgYXJncmVwcj0nPicsIG9mZnNldD04MCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9KVU1QX0lGX0ZBTFNFJywgb3Bjb2RlPTExNCwgYXJnPTg2LCBhcmd2YWw9ODYsIGFyZ3JlcHI9JycsIG9mZnNldD04Miwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0pVTVBfQUJTT0xVVEUnLCBvcGNvZGU9MTEzLCBhcmc9NTYsIGFyZ3ZhbD01NiwgYXJncmVwcj0nJywgb2Zmc2V0PTg0LCBzdGFydHNfbGluZT0xNSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTg2LCBzdGFydHNfbGluZT0xNiwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0yLCBhcmd2YWw9NCwgYXJncmVwcj0nNCcsIG9mZnNldD04OCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0NPTVBBUkVfT1AnLCBvcGNvZGU9MTA3LCBhcmc9MCwgYXJndmFsPSc8JywgYXJncmVwcj0nPCcsIG9mZnNldD05MCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9KVU1QX0lGX0ZBTFNFJywgb3Bjb2RlPTExNCwgYXJnPTU2LCBhcmd2YWw9NTYsIGFyZ3JlcHI9JycsIG9mZnNldD05Miwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0JSRUFLX0xPT1AnLCBvcGNvZGU9ODAsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTk0LCBzdGFydHNfbGluZT0xNywgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0pVTVBfQUJTT0xVVEUnLCBvcGNvZGU9MTEzLCBhcmc9NTYsIGFyZ3ZhbD01NiwgYXJncmVwcj0nJywgb2Zmc2V0PTk2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0JMT0NLJywgb3Bjb2RlPTg3LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD05OCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MSwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTEwMCwgc3RhcnRzX2xpbmU9MTksIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTYsIGFyZ3ZhbD0nV2hvIGxldCBsb2xjYXR6IGludG8gdGhpcyB0ZXN0IHN1aXRlPycsIGFyZ3JlcHI9IidXaG8gbGV0IGxvbGNhdHogaW50byB0aGlzIHRlc3Qgc3VpdGU/JyIsIG9mZnNldD0xMDIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScnLCBvZmZzZXQ9MTA0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xMDYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTRVRVUF9GSU5BTExZJywgb3Bjb2RlPTEyMiwgYXJnPTcwLCBhcmd2YWw9MTgwLCBhcmdyZXByPSd0byAxODAnLCBvZmZzZXQ9MTA4LCBzdGFydHNfbGluZT0yMCwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nU0VUVVBfRVhDRVBUJywgb3Bjb2RlPTEyMSwgYXJnPTEyLCBhcmd2YWw9MTI0LCBhcmdyZXByPSd0byAxMjQnLCBvZmZzZXQ9MTEwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz01LCBhcmd2YWw9MSwgYXJncmVwcj0nMScsIG9mZnNldD0xMTIsIHN0YXJ0c19saW5lPTIxLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz03LCBhcmd2YWw9MCwgYXJncmVwcj0nMCcsIG9mZnNldD0xMTQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdCSU5BUllfVFJVRV9ESVZJREUnLCBvcGNvZGU9MjcsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTExNiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTE4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0JMT0NLJywgb3Bjb2RlPTg3LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xMjAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0ZPUldBUkQnLCBvcGNvZGU9MTEwLCBhcmc9MjgsIGFyZ3ZhbD0xNTIsIGFyZ3JlcHI9J3RvIDE1MicsIG9mZnNldD0xMjIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdEVVBfVE9QJywgb3Bjb2RlPTQsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTEyNCwgc3RhcnRzX2xpbmU9MjIsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTIsIGFyZ3ZhbD0nWmVyb0RpdmlzaW9uRXJyb3InLCBhcmdyZXByPSdaZXJvRGl2aXNpb25FcnJvcicsIG9mZnNldD0xMjYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDT01QQVJFX09QJywgb3Bjb2RlPTEwNywgYXJnPTEwLCBhcmd2YWw9J2V4Y2VwdGlvbiBtYXRjaCcsIGFyZ3JlcHI9J2V4Y2VwdGlvbiBtYXRjaCcsIG9mZnNldD0xMjgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfSlVNUF9JRl9GQUxTRScsIG9wY29kZT0xMTQsIGFyZz0xNTAsIGFyZ3ZhbD0xNTAsIGFyZ3JlcHI9JycsIG9mZnNldD0xMzAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTEzMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTM0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xMzYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9MTM4LCBzdGFydHNfbGluZT0yMywgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9OCwgYXJndmFsPSdIZXJlIHdlIGdvLCBoZXJlIHdlIGdvLCBoZXJlIHdlIGdvLi4uJywgYXJncmVwcj0iJ0hlcmUgd2UgZ28sIGhlcmUgd2UgZ28sIGhlcmUgd2UgZ28uLi4nIiwgb2Zmc2V0PTE0MCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JycsIG9mZnNldD0xNDIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE0NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9FWENFUFQnLCBvcGNvZGU9ODksIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE0Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0pVTVBfRk9SV0FSRCcsIG9wY29kZT0xMTAsIGFyZz0yNiwgYXJndmFsPTE3NiwgYXJncmVwcj0ndG8gMTc2Jywgb2Zmc2V0PTE0OCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0VORF9GSU5BTExZJywgb3Bjb2RlPTg4LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNTAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTE1Miwgc3RhcnRzX2xpbmU9MjUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1NFVFVQX1dJVEgnLCBvcGNvZGU9MTQzLCBhcmc9MTQsIGFyZ3ZhbD0xNzAsIGFyZ3JlcHI9J3RvIDE3MCcsIG9mZnNldD0xNTQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTVE9SRV9GQVNUJywgb3Bjb2RlPTEyNSwgYXJnPTEsIGFyZ3ZhbD0nZG9kZ3knLCBhcmdyZXByPSdkb2RneScsIG9mZnNldD0xNTYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9MTU4LCBzdGFydHNfbGluZT0yNiwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9OSwgYXJndmFsPSdOZXZlciByZWFjaCB0aGlzJywgYXJncmVwcj0iJ05ldmVyIHJlYWNoIHRoaXMnIiwgb2Zmc2V0PTE2MCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JycsIG9mZnNldD0xNjIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE2NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9CTE9DSycsIG9wY29kZT04NywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTY2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0wLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nTm9uZScsIG9mZnNldD0xNjgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdXSVRIX0NMRUFOVVBfU1RBUlQnLCBvcGNvZGU9ODEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE3MCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nV0lUSF9DTEVBTlVQX0ZJTklTSCcsIG9wY29kZT04MiwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTcyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nRU5EX0ZJTkFMTFknLCBvcGNvZGU9ODgsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE3NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9CTE9DSycsIG9wY29kZT04NywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTc2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTAsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPSdOb25lJywgb2Zmc2V0PTE3OCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTEsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD0xODAsIHN0YXJ0c19saW5lPTI4LCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTEwLCBhcmd2YWw9Ik9LLCBub3cgd2UncmUgZG9uZSIsIGFyZ3JlcHI9JyJPSywgbm93IHdlXCdyZSBkb25lIicsIG9mZnNldD0xODIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScnLCBvZmZzZXQ9MTg0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xODYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdFTkRfRklOQUxMWScsIG9wY29kZT04OCwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTg4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0wLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nTm9uZScsIG9mZnNldD0xOTAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdSRVRVUk5fVkFMVUUnLCBvcGNvZGU9ODMsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE5Miwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAogXQogCiAjIE9uZSBsYXN0IHBpZWNlIG9mIGluc3BlY3QgZm9kZGVyIHRvIGNoZWNrIHRoZSBkZWZhdWx0IGxpbmUgbnVtYmVyIGhhbmRsaW5nCiBkZWYgc2ltcGxlKCk6IHBhc3MKIGV4cGVjdGVkX29waW5mb19zaW1wbGUgPSBbCiAgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0wLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nTm9uZScsIG9mZnNldD0wLCBzdGFydHNfbGluZT1zaW1wbGUuX19jb2RlX18uY29fZmlyc3RsaW5lbm8sIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdSRVRVUk5fVkFMVUUnLCBvcGNvZGU9ODMsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKQorICBJbnN0cnVjdGlvbihvcG5hbWU9J1JFVFVSTl9WQUxVRScsIG9wY29kZT04MywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9Miwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpCiBdCiAKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kb2N0ZXN0LnB5IGIvTGliL3Rlc3QvdGVzdF9kb2N0ZXN0LnB5CmluZGV4IDMzMTYzYjkuLjIyNThjNmIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZG9jdGVzdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RvY3Rlc3QucHkKQEAgLTI5MSw3ICsyOTEsNyBAQAogICAgIC4uLgogICAgIC4uLiBOb24tZXhhbXBsZSB0ZXh0LgogICAgIC4uLgotICAgIC4uLiAgICAgPj4+IHByaW50KCdhbm90aGVyXGV4YW1wbGUnKQorICAgIC4uLiAgICAgPj4+IHByaW50KCdhbm90aGVyXFxleGFtcGxlJykKICAgICAuLi4gICAgIGFub3RoZXIKICAgICAuLi4gICAgIGV4YW1wbGUKICAgICAuLi4gJycnCkBAIC0xODc2LDcgKzE4NzYsNiBAQAogICAgICAgICBUbyBkZW1vbnN0cmF0ZSB0aGlzLCB3ZSdsbCBjcmVhdGUgYSBmYWtlIHN0YW5kYXJkIGlucHV0IHRoYXQKICAgICAgICAgY2FwdHVyZXMgb3VyIGRlYnVnZ2VyIGlucHV0OgogCi0gICAgICAgICAgPj4+IGltcG9ydCB0ZW1wZmlsZQogICAgICAgICAgID4+PiByZWFsX3N0ZGluID0gc3lzLnN0ZGluCiAgICAgICAgICAgPj4+IHN5cy5zdGRpbiA9IF9GYWtlSW5wdXQoWwogICAgICAgICAgIC4uLiAgICAncHJpbnQoeCknLCAgIyBwcmludCBkYXRhIGRlZmluZWQgYnkgdGhlIGV4YW1wbGUKQEAgLTE5MTcsNyArMTkxNiw3IEBACiAgICAgICAgICAgLi4uIGZpbmFsbHk6CiAgICAgICAgICAgLi4uICAgICBzeXMuc3RkaW4gPSByZWFsX3N0ZGluCiAgICAgICAgICAgLS1SZXR1cm4tLQotICAgICAgICAgID4gPGRvY3Rlc3QgdGVzdC50ZXN0X2RvY3Rlc3QudGVzdF9wZGJfc2V0X3RyYWNlWzhdPigzKWNhbGxzX3NldF90cmFjZSgpLT5Ob25lCisgICAgICAgICAgPiA8ZG9jdGVzdCB0ZXN0LnRlc3RfZG9jdGVzdC50ZXN0X3BkYl9zZXRfdHJhY2VbN10+KDMpY2FsbHNfc2V0X3RyYWNlKCktPk5vbmUKICAgICAgICAgICAtPiBpbXBvcnQgcGRiOyBwZGIuc2V0X3RyYWNlKCkKICAgICAgICAgICAoUGRiKSBwcmludCh5KQogICAgICAgICAgIDIKQEAgLTI3OTgsNyArMjc5Nyw2IEBACiAgICAgLi4uICAgICAgICAgXyA9IGYud3JpdGUoIiAgICAgICAnYWJjIGRlZidcbiIpCiAgICAgLi4uICAgICAgICAgXyA9IGYud3JpdGUoIlxuIikKICAgICAuLi4gICAgICAgICBfID0gZi53cml0ZSgnICAgXCJcIlwiXG4nKQotICAgIC4uLiAgICAgaW1wb3J0IHNodXRpbAogICAgIC4uLiAgICAgcmMxLCBvdXQxLCBlcnIxID0gc2NyaXB0X2hlbHBlci5hc3NlcnRfcHl0aG9uX2ZhaWx1cmUoCiAgICAgLi4uICAgICAgICAgICAgICctbScsICdkb2N0ZXN0JywgZm4sIGZuMikKICAgICAuLi4gICAgIHJjMiwgb3V0MiwgZXJyMiA9IHNjcmlwdF9oZWxwZXIuYXNzZXJ0X3B5dGhvbl9vaygKQEAgLTI5NDIsMTIgKzI5NDAsMTEgQEAKIGRlZiB0ZXN0X21haW4oKToKICAgICAjIENoZWNrIHRoZSBkb2N0ZXN0IGNhc2VzIGluIGRvY3Rlc3QgaXRzZWxmOgogICAgIHJldCA9IHN1cHBvcnQucnVuX2RvY3Rlc3QoZG9jdGVzdCwgdmVyYm9zaXR5PVRydWUpCisKICAgICAjIENoZWNrIHRoZSBkb2N0ZXN0IGNhc2VzIGRlZmluZWQgaGVyZToKICAgICBmcm9tIHRlc3QgaW1wb3J0IHRlc3RfZG9jdGVzdAogICAgIHN1cHBvcnQucnVuX2RvY3Rlc3QodGVzdF9kb2N0ZXN0LCB2ZXJib3NpdHk9VHJ1ZSkKIAotaW1wb3J0IHN5cywgcmUsIGlvCi0KIGRlZiB0ZXN0X2NvdmVyYWdlKGNvdmVyZGlyKToKICAgICB0cmFjZSA9IHN1cHBvcnQuaW1wb3J0X21vZHVsZSgndHJhY2UnKQogICAgIHRyYWNlciA9IHRyYWNlLlRyYWNlKGlnbm9yZWRpcnM9W3N5cy5iYXNlX3ByZWZpeCwgc3lzLmJhc2VfZXhlY19wcmVmaXgsXSwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZHRyYWNlLnB5IGIvTGliL3Rlc3QvdGVzdF9kdHJhY2UucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDdhNTAxMAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfZHRyYWNlLnB5CkBAIC0wLDAgKzEsMTc4IEBACitpbXBvcnQgZGlzCitpbXBvcnQgb3MucGF0aAoraW1wb3J0IHJlCitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHN5cworaW1wb3J0IHR5cGVzCitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGZpbmRmaWxlLCBydW5fdW5pdHRlc3QKKworCitkZWYgYWJzcGF0aChmaWxlbmFtZSk6CisgICAgcmV0dXJuIG9zLnBhdGguYWJzcGF0aChmaW5kZmlsZShmaWxlbmFtZSwgc3ViZGlyPSJkdHJhY2VkYXRhIikpCisKKworZGVmIG5vcm1hbGl6ZV90cmFjZV9vdXRwdXQob3V0cHV0KToKKyAgICAiIiJOb3JtYWxpemUgRFRyYWNlIG91dHB1dCBmb3IgY29tcGFyaXNvbi4KKworICAgIERUcmFjZSBrZWVwcyBhIHBlci1DUFUgYnVmZmVyLCBhbmQgd2hlbiBzaG93aW5nIHRoZSBmaXJlZCBwcm9iZXMsIGJ1ZmZlcnMKKyAgICBhcmUgY29uY2F0ZW5hdGVkLiBTbyBpZiB0aGUgb3BlcmF0aW5nIHN5c3RlbSBtb3ZlcyBvdXIgdGhyZWFkIGFyb3VuZCwgdGhlCisgICAgc3RyYWlnaHQgcmVzdWx0IGNhbiBiZSAibm9uLWNhdXNhbCIuIFNvIHdlIGFkZCB0aW1lc3RhbXBzIHRvIHRoZSBwcm9iZQorICAgIGZpcmluZywgc29ydCBieSB0aGF0IGZpZWxkLCB0aGVuIHN0cmlwIGl0IGZyb20gdGhlIG91dHB1dCIiIgorCisgICAgIyBXaGVuIGNvbXBpbGluZyB3aXRoICctLXdpdGgtcHlkZWJ1ZycsIHN0cmlwICdbIyByZWZzXScgZGVidWcgb3V0cHV0LgorICAgIG91dHB1dCA9IHJlLnN1YihyIlxbWzAtOV0rIHJlZnNcXSIsICIiLCBvdXRwdXQpCisgICAgdHJ5OgorICAgICAgICByZXN1bHQgPSBbCisgICAgICAgICAgICByb3cuc3BsaXQoIlx0IikKKyAgICAgICAgICAgIGZvciByb3cgaW4gb3V0cHV0LnNwbGl0bGluZXMoKQorICAgICAgICAgICAgaWYgcm93IGFuZCBub3Qgcm93LnN0YXJ0c3dpdGgoJyMnKQorICAgICAgICBdCisgICAgICAgIHJlc3VsdC5zb3J0KGtleT1sYW1iZGEgcm93OiBpbnQocm93WzBdKSkKKyAgICAgICAgcmVzdWx0ID0gW3Jvd1sxXSBmb3Igcm93IGluIHJlc3VsdF0KKyAgICAgICAgcmV0dXJuICJcbiIuam9pbihyZXN1bHQpCisgICAgZXhjZXB0IChJbmRleEVycm9yLCBWYWx1ZUVycm9yKToKKyAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoCisgICAgICAgICAgICAidHJhY2VyIHByb2R1Y2VkIHVucGFyc2VhYmxlIG91dHB1dDpcbnt9Ii5mb3JtYXQob3V0cHV0KQorICAgICAgICApCisKKworY2xhc3MgVHJhY2VCYWNrZW5kOgorICAgIEVYVEVOU0lPTiA9IE5vbmUKKyAgICBDT01NQU5EID0gTm9uZQorICAgIENPTU1BTkRfQVJHUyA9IFtdCisKKyAgICBkZWYgcnVuX2Nhc2Uoc2VsZiwgbmFtZSwgb3B0aW1pemVfcHl0aG9uPU5vbmUpOgorICAgICAgICBhY3R1YWxfb3V0cHV0ID0gbm9ybWFsaXplX3RyYWNlX291dHB1dChzZWxmLnRyYWNlX3B5dGhvbigKKyAgICAgICAgICAgIHNjcmlwdF9maWxlPWFic3BhdGgobmFtZSArIHNlbGYuRVhURU5TSU9OKSwKKyAgICAgICAgICAgIHB5dGhvbl9maWxlPWFic3BhdGgobmFtZSArICIucHkiKSwKKyAgICAgICAgICAgIG9wdGltaXplX3B5dGhvbj1vcHRpbWl6ZV9weXRob24pKQorCisgICAgICAgIHdpdGggb3BlbihhYnNwYXRoKG5hbWUgKyBzZWxmLkVYVEVOU0lPTiArICIuZXhwZWN0ZWQiKSkgYXMgZjoKKyAgICAgICAgICAgIGV4cGVjdGVkX291dHB1dCA9IGYucmVhZCgpLnJzdHJpcCgpCisKKyAgICAgICAgcmV0dXJuIChleHBlY3RlZF9vdXRwdXQsIGFjdHVhbF9vdXRwdXQpCisKKyAgICBkZWYgZ2VuZXJhdGVfdHJhY2VfY29tbWFuZChzZWxmLCBzY3JpcHRfZmlsZSwgc3ViY29tbWFuZD1Ob25lKToKKyAgICAgICAgY29tbWFuZCA9IHNlbGYuQ09NTUFORCArIFtzY3JpcHRfZmlsZV0KKyAgICAgICAgaWYgc3ViY29tbWFuZDoKKyAgICAgICAgICAgIGNvbW1hbmQgKz0gWyItYyIsIHN1YmNvbW1hbmRdCisgICAgICAgIHJldHVybiBjb21tYW5kCisKKyAgICBkZWYgdHJhY2Uoc2VsZiwgc2NyaXB0X2ZpbGUsIHN1YmNvbW1hbmQ9Tm9uZSk6CisgICAgICAgIGNvbW1hbmQgPSBzZWxmLmdlbmVyYXRlX3RyYWNlX2NvbW1hbmQoc2NyaXB0X2ZpbGUsIHN1YmNvbW1hbmQpCisgICAgICAgIHN0ZG91dCwgXyA9IHN1YnByb2Nlc3MuUG9wZW4oY29tbWFuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSkuY29tbXVuaWNhdGUoKQorICAgICAgICByZXR1cm4gc3Rkb3V0CisKKyAgICBkZWYgdHJhY2VfcHl0aG9uKHNlbGYsIHNjcmlwdF9maWxlLCBweXRob25fZmlsZSwgb3B0aW1pemVfcHl0aG9uPU5vbmUpOgorICAgICAgICBweXRob25fZmxhZ3MgPSBbXQorICAgICAgICBpZiBvcHRpbWl6ZV9weXRob246CisgICAgICAgICAgICBweXRob25fZmxhZ3MuZXh0ZW5kKFsiLU8iXSAqIG9wdGltaXplX3B5dGhvbikKKyAgICAgICAgc3ViY29tbWFuZCA9ICIgIi5qb2luKFtzeXMuZXhlY3V0YWJsZV0gKyBweXRob25fZmxhZ3MgKyBbcHl0aG9uX2ZpbGVdKQorICAgICAgICByZXR1cm4gc2VsZi50cmFjZShzY3JpcHRfZmlsZSwgc3ViY29tbWFuZCkKKworICAgIGRlZiBhc3NlcnRfdXNhYmxlKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBvdXRwdXQgPSBzZWxmLnRyYWNlKGFic3BhdGgoImFzc2VydF91c2FibGUiICsgc2VsZi5FWFRFTlNJT04pKQorICAgICAgICAgICAgb3V0cHV0ID0gb3V0cHV0LnN0cmlwKCkKKyAgICAgICAgZXhjZXB0IChGaWxlTm90Rm91bmRFcnJvciwgUGVybWlzc2lvbkVycm9yKSBhcyBmbmZlOgorICAgICAgICAgICAgb3V0cHV0ID0gc3RyKGZuZmUpCisgICAgICAgIGlmIG91dHB1dCAhPSAicHJvYmU6IHN1Y2Nlc3MiOgorICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoCisgICAgICAgICAgICAgICAgInt9KDEpIGZhaWxlZDoge30iLmZvcm1hdChzZWxmLkNPTU1BTkRbMF0sIG91dHB1dCkKKyAgICAgICAgICAgICkKKworCitjbGFzcyBEVHJhY2VCYWNrZW5kKFRyYWNlQmFja2VuZCk6CisgICAgRVhURU5TSU9OID0gIi5kIgorICAgIENPTU1BTkQgPSBbImR0cmFjZSIsICItcSIsICItcyJdCisKKworY2xhc3MgU3lzdGVtVGFwQmFja2VuZChUcmFjZUJhY2tlbmQpOgorICAgIEVYVEVOU0lPTiA9ICIuc3RwIgorICAgIENPTU1BTkQgPSBbInN0YXAiLCAiLWciXQorCisKK2NsYXNzIFRyYWNlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgdW5pdHRlc3QuVGVzdENhc2Ugb3B0aW9ucworICAgIG1heERpZmYgPSBOb25lCisKKyAgICAjIFRyYWNlVGVzdHMgb3B0aW9ucworICAgIGJhY2tlbmQgPSBOb25lCisgICAgb3B0aW1pemVfcHl0aG9uID0gMAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3Moc2VsZik6CisgICAgICAgIHNlbGYuYmFja2VuZC5hc3NlcnRfdXNhYmxlKCkKKworICAgIGRlZiBydW5fY2FzZShzZWxmLCBuYW1lKToKKyAgICAgICAgYWN0dWFsX291dHB1dCwgZXhwZWN0ZWRfb3V0cHV0ID0gc2VsZi5iYWNrZW5kLnJ1bl9jYXNlKAorICAgICAgICAgICAgbmFtZSwgb3B0aW1pemVfcHl0aG9uPXNlbGYub3B0aW1pemVfcHl0aG9uKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbF9vdXRwdXQsIGV4cGVjdGVkX291dHB1dCkKKworICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2VudHJ5X3JldHVybihzZWxmKToKKyAgICAgICAgc2VsZi5ydW5fY2FzZSgiY2FsbF9zdGFjayIpCisKKyAgICBkZWYgdGVzdF92ZXJpZnlfY2FsbF9vcGNvZGVzKHNlbGYpOgorICAgICAgICAiIiJFbnN1cmUgb3VyIGNhbGwgc3RhY2sgdGVzdCBoaXRzIGFsbCBmdW5jdGlvbiBjYWxsIG9wY29kZXMiIiIKKworICAgICAgICBvcGNvZGVzID0gc2V0KFsiQ0FMTF9GVU5DVElPTiIsICJDQUxMX0ZVTkNUSU9OX0VYIiwgIkNBTExfRlVOQ1RJT05fS1ciXSkKKworICAgICAgICB3aXRoIG9wZW4oYWJzcGF0aCgiY2FsbF9zdGFjay5weSIpKSBhcyBmOgorICAgICAgICAgICAgY29kZV9zdHJpbmcgPSBmLnJlYWQoKQorCisgICAgICAgIGRlZiBnZXRfZnVuY3Rpb25faW5zdHJ1Y3Rpb25zKGZ1bmNuYW1lKToKKyAgICAgICAgICAgICMgUmVjb21waWxlIHdpdGggYXBwcm9wcmlhdGUgb3B0aW1pemF0aW9uIHNldHRpbmcKKyAgICAgICAgICAgIGNvZGUgPSBjb21waWxlKHNvdXJjZT1jb2RlX3N0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lPSI8c3RyaW5nPiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlPSJleGVjIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGltaXplPXNlbGYub3B0aW1pemVfcHl0aG9uKQorCisgICAgICAgICAgICBmb3IgYyBpbiBjb2RlLmNvX2NvbnN0czoKKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGMsIHR5cGVzLkNvZGVUeXBlKSBhbmQgYy5jb19uYW1lID09IGZ1bmNuYW1lOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGlzLmdldF9pbnN0cnVjdGlvbnMoYykKKyAgICAgICAgICAgIHJldHVybiBbXQorCisgICAgICAgIGZvciBpbnN0cnVjdGlvbiBpbiBnZXRfZnVuY3Rpb25faW5zdHJ1Y3Rpb25zKCdzdGFydCcpOgorICAgICAgICAgICAgb3Bjb2Rlcy5kaXNjYXJkKGluc3RydWN0aW9uLm9wbmFtZSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldCgpLCBvcGNvZGVzKQorCisgICAgZGVmIHRlc3RfZ2Moc2VsZik6CisgICAgICAgIHNlbGYucnVuX2Nhc2UoImdjIikKKworICAgIGRlZiB0ZXN0X2xpbmUoc2VsZik6CisgICAgICAgIHNlbGYucnVuX2Nhc2UoImxpbmUiKQorCisKK2NsYXNzIERUcmFjZU5vcm1hbFRlc3RzKFRyYWNlVGVzdHMpOgorICAgIGJhY2tlbmQgPSBEVHJhY2VCYWNrZW5kKCkKKyAgICBvcHRpbWl6ZV9weXRob24gPSAwCisKKworY2xhc3MgRFRyYWNlT3B0aW1pemVkVGVzdHMoVHJhY2VUZXN0cyk6CisgICAgYmFja2VuZCA9IERUcmFjZUJhY2tlbmQoKQorICAgIG9wdGltaXplX3B5dGhvbiA9IDIKKworCitjbGFzcyBTeXN0ZW1UYXBOb3JtYWxUZXN0cyhUcmFjZVRlc3RzKToKKyAgICBiYWNrZW5kID0gU3lzdGVtVGFwQmFja2VuZCgpCisgICAgb3B0aW1pemVfcHl0aG9uID0gMAorCisKK2NsYXNzIFN5c3RlbVRhcE9wdGltaXplZFRlc3RzKFRyYWNlVGVzdHMpOgorICAgIGJhY2tlbmQgPSBTeXN0ZW1UYXBCYWNrZW5kKCkKKyAgICBvcHRpbWl6ZV9weXRob24gPSAyCisKKworZGVmIHRlc3RfbWFpbigpOgorICAgIHJ1bl91bml0dGVzdChEVHJhY2VOb3JtYWxUZXN0cywgRFRyYWNlT3B0aW1pemVkVGVzdHMsIFN5c3RlbVRhcE5vcm1hbFRlc3RzLAorICAgICAgICAgICAgICAgICBTeXN0ZW1UYXBPcHRpbWl6ZWRUZXN0cykKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2R5bmFtaWMucHkgYi9MaWIvdGVzdC90ZXN0X2R5bmFtaWMucHkKaW5kZXggNTA4MGVjOS4uM2FlMDkwZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9keW5hbWljLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZHluYW1pYy5weQpAQCAtMSw3ICsxLDYgQEAKICMgVGVzdCB0aGUgbW9zdCBkeW5hbWljIGNvcm5lciBjYXNlcyBvZiBQeXRob24ncyBydW50aW1lIHNlbWFudGljcy4KIAogaW1wb3J0IGJ1aWx0aW5zCi1pbXBvcnQgY29udGV4dGxpYgogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBzd2FwX2l0ZW0sIHN3YXBfYXR0cgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9laW50ci5weSBiL0xpYi90ZXN0L3Rlc3RfZWludHIucHkKaW5kZXggYWFiYWQ4My4uMjVmODZkMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9laW50ci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2VpbnRyLnB5CkBAIC0xLDcgKzEsNSBAQAogaW1wb3J0IG9zCiBpbXBvcnQgc2lnbmFsCi1pbXBvcnQgc3VicHJvY2VzcwotaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydApAQCAtMTYsMTQgKzE0LDggQEAKICAgICAgICAgIyBSdW4gdGhlIHRlc3RlciBpbiBhIHN1Yi1wcm9jZXNzLCB0byBtYWtlIHN1cmUgdGhlcmUgaXMgb25seSBvbmUKICAgICAgICAgIyB0aHJlYWQgKGZvciByZWxpYWJsZSBzaWduYWwgZGVsaXZlcnkpLgogICAgICAgICB0ZXN0ZXIgPSBzdXBwb3J0LmZpbmRmaWxlKCJlaW50cl90ZXN0ZXIucHkiLCBzdWJkaXI9ImVpbnRyZGF0YSIpCi0KLSAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgotICAgICAgICAgICAgYXJncyA9IFtzeXMuZXhlY3V0YWJsZSwgdGVzdGVyXQotICAgICAgICAgICAgd2l0aCBzdWJwcm9jZXNzLlBvcGVuKGFyZ3MpIGFzIHByb2M6Ci0gICAgICAgICAgICAgICAgZXhpdGNvZGUgPSBwcm9jLndhaXQoKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0Y29kZSwgMCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNjcmlwdF9oZWxwZXIuYXNzZXJ0X3B5dGhvbl9vayh0ZXN0ZXIpCisgICAgICAgICMgdXNlIC11IHRvIHRyeSB0byBnZXQgdGhlIGZ1bGwgb3V0cHV0IGlmIHRoZSB0ZXN0IGhhbmdzIG9yIGNyYXNoCisgICAgICAgIHNjcmlwdF9oZWxwZXIuYXNzZXJ0X3B5dGhvbl9vaygiLXUiLCB0ZXN0ZXIpCiAKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvX19pbml0X18ucHkgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL19faW5pdF9fLnB5CmluZGV4IGQ0YTAzZWUuLjg4ODc1MWUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvX19pbml0X18ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9fX2luaXRfXy5weQpAQCAtMSw1ICsxLDQgQEAKIGltcG9ydCBvcwotaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgY29sbGVjdGlvbnMKIGltcG9ydCBlbWFpbApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X19oZWFkZXJfdmFsdWVfcGFyc2VyLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X19oZWFkZXJfdmFsdWVfcGFyc2VyLnB5CmluZGV4IGY3YWMwZTMuLjI2ZWNlNjkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9faGVhZGVyX3ZhbHVlX3BhcnNlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfX2hlYWRlcl92YWx1ZV9wYXJzZXIucHkKQEAgLTU4MSw3ICs1ODEsNyBAQAogCiAgICAgZGVmIHRlc3RfZ2V0X2NvbW1lbnRfcXVvdGVkX3BhcmVucyhzZWxmKToKICAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2NvbW1lbnQsCi0gICAgICAgICAgICAnKGZvb1wpIFwoXCliYXIpJywgJyhmb29cKSBcKFwpYmFyKScsICcgJywgW10sICcnLCBbJ2ZvbykgKCliYXInXSkKKyAgICAgICAgICAgIHInKGZvb1wpIFwoXCliYXIpJywgcicoZm9vXCkgXChcKWJhciknLCAnICcsIFtdLCAnJywgWydmb28pICgpYmFyJ10pCiAKICAgICBkZWYgdGVzdF9nZXRfY29tbWVudF9ub25fcHJpbnRhYmxlKHNlbGYpOgogICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY29tbWVudCwKQEAgLTYyNSw3ICs2MjUsNyBAQAogCiAgICAgZGVmIHRlc3RfZ2V0X2NvbW1lbnRfcXNfaW5fbmVzdGVkX2NvbW1lbnQoc2VsZik6CiAgICAgICAgIGNvbW1lbnQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY29tbWVudCwKLSAgICAgICAgICAgICcoZm9vIChiXCkpKScsICcoZm9vIChiXCkpKScsICcgJywgW10sICcnLCBbJ2ZvbyAoYlwpKSddKQorICAgICAgICAgICAgcicoZm9vIChiXCkpKScsIHInKGZvbyAoYlwpKSknLCAnICcsIFtdLCAnJywgW3InZm9vIChiXCkpJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWVudFsyXS5jb250ZW50LCAnYiknKQogCiAgICAgIyBnZXRfY2Z3cwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2FzaWFuX2NvZGVjcy5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9hc2lhbl9jb2RlY3MucHkKaW5kZXggZjljZDdkOS4uMWUwY2FlZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2FzaWFuX2NvZGVjcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfYXNpYW5fY29kZWNzLnB5CkBAIC0zLDcgKzMsNiBAQAogIyBlbWFpbCBwYWNrYWdlIHVuaXQgdGVzdHMgZm9yIChvcHRpb25hbCkgQXNpYW4gY29kZWNzCiAKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAogCiBmcm9tIHRlc3QudGVzdF9lbWFpbCBpbXBvcnQgVGVzdEVtYWlsQmFzZQogZnJvbSBlbWFpbC5jaGFyc2V0IGltcG9ydCBDaGFyc2V0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfZW1haWwucHkgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfZW1haWwucHkKaW5kZXggOWI4NmEyYS4uZjk3Y2NjNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2VtYWlsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9lbWFpbC5weQpAQCAtMzIsNiArMzIsNyBAQAogZnJvbSBlbWFpbC5taW1lLmJhc2UgaW1wb3J0IE1JTUVCYXNlCiBmcm9tIGVtYWlsLm1pbWUubWVzc2FnZSBpbXBvcnQgTUlNRU1lc3NhZ2UKIGZyb20gZW1haWwubWltZS5tdWx0aXBhcnQgaW1wb3J0IE1JTUVNdWx0aXBhcnQKK2Zyb20gZW1haWwubWltZS5ub25tdWx0aXBhcnQgaW1wb3J0IE1JTUVOb25NdWx0aXBhcnQKIGZyb20gZW1haWwgaW1wb3J0IHV0aWxzCiBmcm9tIGVtYWlsIGltcG9ydCBlcnJvcnMKIGZyb20gZW1haWwgaW1wb3J0IGVuY29kZXJzCkBAIC0yMDc4LDcgKzIwNzksMTMgQEAKIC0tPT09PT09PT09PT09PT09MDAxMjM5NDE2ND09LS0iIiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5nZXRfcGF5bG9hZCgwKS5nZXRfcGF5bG9hZCgpLCAnWVhOa1pnPT0nKQogCisgICAgZGVmIHRlc3RfbWltZWJhc2VfZGVmYXVsdF9wb2xpY3koc2VsZik6CisgICAgICAgIG0gPSBNSU1FQmFzZSgnbXVsdGlwYXJ0JywgJ21peGVkJykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtLnBvbGljeSwgZW1haWwucG9saWN5LmNvbXBhdDMyKQogCisgICAgZGVmIHRlc3RfbWltZWJhc2VfY3VzdG9tX3BvbGljeShzZWxmKToKKyAgICAgICAgbSA9IE1JTUVCYXNlKCdtdWx0aXBhcnQnLCAnbWl4ZWQnLCBwb2xpY3k9ZW1haWwucG9saWN5LmRlZmF1bHQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobS5wb2xpY3ksIGVtYWlsLnBvbGljeS5kZWZhdWx0KQogCiAjIFRlc3Qgc29tZSBiYWRseSBmb3JtYXR0ZWQgbWVzc2FnZXMKIGNsYXNzIFRlc3ROb25Db25mb3JtYW50KFRlc3RFbWFpbEJhc2UpOgpAQCAtMjY4MCw2ICsyNjg3LDE5IEBACiAgICAgICAgIG1zZyA9IE1JTUVNdWx0aXBhcnQoKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobXNnLmlzX211bHRpcGFydCgpKQogCisgICAgZGVmIHRlc3RfbXVsdGlwYXJ0X2RlZmF1bHRfcG9saWN5KHNlbGYpOgorICAgICAgICBtc2cgPSBNSU1FTXVsdGlwYXJ0KCkKKyAgICAgICAgbXNnWydUbyddID0gJ2FAYi5jb20nCisgICAgICAgIG1zZ1snVG8nXSA9ICdjQGQuY29tJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXRfYWxsKCd0bycpLCBbJ2FAYi5jb20nLCAnY0BkLmNvbSddKQorCisgICAgZGVmIHRlc3RfbXVsdGlwYXJ0X2N1c3RvbV9wb2xpY3koc2VsZik6CisgICAgICAgIG1zZyA9IE1JTUVNdWx0aXBhcnQocG9saWN5PWVtYWlsLnBvbGljeS5kZWZhdWx0KQorICAgICAgICBtc2dbJ1RvJ10gPSAnYUBiLmNvbScKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIG1zZ1snVG8nXSA9ICdjQGQuY29tJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLAorICAgICAgICAgICAgICAgICAgICAgICAgICdUaGVyZSBtYXkgYmUgYXQgbW9zdCAxIFRvIGhlYWRlcnMgaW4gYSBtZXNzYWdlJykKIAogIyBBIGdlbmVyYWwgdGVzdCBvZiBwYXJzZXItPm1vZGVsLT5nZW5lcmF0b3IgaWRlbXBvdGVuY3kuICBJT1csIHJlYWQgYSBtZXNzYWdlCiAjIGluLCBwYXJzZSBpdCBpbnRvIGEgbWVzc2FnZSBvYmplY3QgdHJlZSwgdGhlbiB3aXRob3V0IHRvdWNoaW5nIHRoZSB0cmVlLApAQCAtMzAzMyw3ICszMDUzLDcgQEAKIAogICAgIGRlZiB0ZXN0X2VzY2FwZV9iYWNrc2xhc2hlcyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIHV0aWxzLmZvcm1hdGFkZHIoKCdBcnRodXIgXEJhY2tzbGFzaFwgRm9vYmFyJywgJ3BlcnNvbkBkb20uYWluJykpLAorICAgICAgICAgICAgdXRpbHMuZm9ybWF0YWRkcigocidBcnRodXIgXEJhY2tzbGFzaFwgRm9vYmFyJywgJ3BlcnNvbkBkb20uYWluJykpLAogICAgICAgICAgICAgciciQXJ0aHVyIFxcQmFja3NsYXNoXFwgRm9vYmFyIiA8cGVyc29uQGRvbS5haW4+JykKICAgICAgICAgYSA9IHInQXJ0aHVyIFxCYWNrc2xhc2hcIEZvb2JhcicKICAgICAgICAgYiA9ICdwZXJzb25AZG9tLmFpbicKQEAgLTMzNDAsNiArMzM2MCwyNyBAQAogICAgICAgICBnLmZsYXR0ZW4obXNnLCBsaW5lc2VwPSdcclxuJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldHZhbHVlKCksIG1zZ3R4dCkKIAorICAgIGRlZiB0ZXN0X21pbWVfY2xhc3Nlc19wb2xpY3lfYXJndW1lbnQoc2VsZik6CisgICAgICAgIHdpdGggb3BlbmZpbGUoJ2F1ZGlvdGVzdC5hdScsICdyYicpIGFzIGZwOgorICAgICAgICAgICAgYXVkaW9kYXRhID0gZnAucmVhZCgpCisgICAgICAgIHdpdGggb3BlbmZpbGUoJ1B5QmFubmVyMDQ4LmdpZicsICdyYicpIGFzIGZwOgorICAgICAgICAgICAgYmluZGF0YSA9IGZwLnJlYWQoKQorICAgICAgICBjbGFzc2VzID0gWworICAgICAgICAgICAgKE1JTUVBcHBsaWNhdGlvbiwgKCcnLCkpLAorICAgICAgICAgICAgKE1JTUVBdWRpbywgKGF1ZGlvZGF0YSwpKSwKKyAgICAgICAgICAgIChNSU1FSW1hZ2UsIChiaW5kYXRhLCkpLAorICAgICAgICAgICAgKE1JTUVNZXNzYWdlLCAoTWVzc2FnZSgpLCkpLAorICAgICAgICAgICAgKE1JTUVOb25NdWx0aXBhcnQsICgnbXVsdGlwYXJ0JywgJ21peGVkJykpLAorICAgICAgICAgICAgKE1JTUVUZXh0LCAoJycsKSksCisgICAgICAgIF0KKyAgICAgICAgZm9yIGNscywgY29uc3RydWN0b3IgaW4gY2xhc3NlczoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGNscz1jbHMuX19uYW1lX18sIHBvbGljeT0nY29tcGF0MzInKToKKyAgICAgICAgICAgICAgICBtID0gY2xzKCpjb25zdHJ1Y3RvcikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKG0ucG9saWN5LCBlbWFpbC5wb2xpY3kuY29tcGF0MzIpCisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChjbHM9Y2xzLl9fbmFtZV9fLCBwb2xpY3k9J2RlZmF1bHQnKToKKyAgICAgICAgICAgICAgICBtID0gY2xzKCpjb25zdHJ1Y3RvciwgcG9saWN5PWVtYWlsLnBvbGljeS5kZWZhdWx0KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobS5wb2xpY3ksIGVtYWlsLnBvbGljeS5kZWZhdWx0KQorCiAKICMgVGVzdCB0aGUgaXRlcmF0b3IvZ2VuZXJhdG9ycwogY2xhc3MgVGVzdEl0ZXJhdG9ycyhUZXN0RW1haWxCYXNlKToKQEAgLTM0NDgsNyArMzQ4OSw2IEBACiBjbGFzcyBUZXN0RmVlZFBhcnNlcnMoVGVzdEVtYWlsQmFzZSk6CiAKICAgICBkZWYgcGFyc2Uoc2VsZiwgY2h1bmtzKToKLSAgICAgICAgZnJvbSBlbWFpbC5mZWVkcGFyc2VyIGltcG9ydCBGZWVkUGFyc2VyCiAgICAgICAgIGZlZWRwYXJzZXIgPSBGZWVkUGFyc2VyKCkKICAgICAgICAgZm9yIGNodW5rIGluIGNodW5rczoKICAgICAgICAgICAgIGZlZWRwYXJzZXIuZmVlZChjaHVuaykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9nZW5lcmF0b3IucHkgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfZ2VuZXJhdG9yLnB5CmluZGV4IGIxY2JjZTIuLjdjODg3N2YgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9nZW5lcmF0b3IucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2dlbmVyYXRvci5weQpAQCAtMTQzLDcgKzE0Myw3IEBACiAgICAgZGVmIHRlc3Rfc2V0X21hbmdsZV9mcm9tX3ZpYV9wb2xpY3koc2VsZik6CiAgICAgICAgIHNvdXJjZSA9IHRleHR3cmFwLmRlZGVudCgiIiJcCiAgICAgICAgICAgICBTdWJqZWN0OiB0ZXN0IHRoYXQKLSAgICAgICAgICAgICBmcm9tIGlzIG1hbmdlbGQgaW4gdGhlIGJvZHkhCisgICAgICAgICAgICAgZnJvbSBpcyBtYW5nbGVkIGluIHRoZSBib2R5IQogCiAgICAgICAgICAgICBGcm9tIHRpbWUgdG8gdGltZSBJIHdyaXRlIGEgcmh5bWUuCiAgICAgICAgICAgICAiIiIpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfaGVhZGVycmVnaXN0cnkucHkgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfaGVhZGVycmVnaXN0cnkucHkKaW5kZXggNTVlY2RlYS4uYWY4MzZkYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2hlYWRlcnJlZ2lzdHJ5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9oZWFkZXJyZWdpc3RyeS5weQpAQCAtMSw3ICsxLDYgQEAKIGltcG9ydCBkYXRldGltZQogaW1wb3J0IHRleHR3cmFwCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCB0eXBlcwogZnJvbSBlbWFpbCBpbXBvcnQgZXJyb3JzCiBmcm9tIGVtYWlsIGltcG9ydCBwb2xpY3kKIGZyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgTWVzc2FnZQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X21lc3NhZ2UucHkgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfbWVzc2FnZS5weQppbmRleCA0MzQ1MTYyLi5mM2E1N2RmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfbWVzc2FnZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfbWVzc2FnZS5weQpAQCAtNzY0LDYgKzc2NCwyNiBAQAogICAgICAgICBtLnNldF9jb250ZW50KGNvbnRlbnRfbWFuYWdlcj1jbSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWydNSU1FLVZlcnNpb24nXSwgJzEuMCcpCiAKKyAgICBkZWYgdGVzdF9hc19zdHJpbmdfdXNlc19tYXhfaGVhZGVyX2xlbmd0aF9ieV9kZWZhdWx0KHNlbGYpOgorICAgICAgICBtID0gc2VsZi5fc3RyX21zZygnU3ViamVjdDogbG9uZyBsaW5lJyArICcgYWInKjUwICsgJ1xuXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtLmFzX3N0cmluZygpLnN0cmlwKCkuc3BsaXRsaW5lcygpKSwgMykKKworICAgIGRlZiB0ZXN0X2FzX3N0cmluZ19hbGxvd3NfbWF4aGVhZGVybGVuKHNlbGYpOgorICAgICAgICBtID0gc2VsZi5fc3RyX21zZygnU3ViamVjdDogbG9uZyBsaW5lJyArICcgYWInKjUwICsgJ1xuXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtLmFzX3N0cmluZyhtYXhoZWFkZXJsZW49MCkuc3RyaXAoKS5zcGxpdGxpbmVzKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG0uYXNfc3RyaW5nKG1heGhlYWRlcmxlbj0zNCkuc3RyaXAoKS5zcGxpdGxpbmVzKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIDYpCisKKyAgICBkZWYgdGVzdF9zdHJfZGVmYXVsdHNfdG9fcG9saWN5X21heF9saW5lX2xlbmd0aChzZWxmKToKKyAgICAgICAgbSA9IHNlbGYuX3N0cl9tc2coJ1N1YmplY3Q6IGxvbmcgbGluZScgKyAnIGFiJyo1MCArICdcblxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc3RyKG0pLnN0cmlwKCkuc3BsaXRsaW5lcygpKSwgMykKKworICAgIGRlZiB0ZXN0X3N0cl9kZWZhdWx0c190b191dGY4KHNlbGYpOgorICAgICAgICBtID0gRW1haWxNZXNzYWdlKCkKKyAgICAgICAgbVsnU3ViamVjdCddID0gJ3VuaWPDtmRlJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihtKSwgJ1N1YmplY3Q6IHVuaWPDtmRlXG5cbicpCisKIAogY2xhc3MgVGVzdE1JTUVQYXJ0KFRlc3RFbWFpbE1lc3NhZ2VCYXNlLCBUZXN0RW1haWxCYXNlKToKICAgICAjIERvaW5nIHRoZSBmdWxsIHRlc3QgcnVuIGhlcmUgbWF5IHNlZW0gYSBiaXQgcmVkdW5kYW50LCBzaW5jZSB0aGUgdHdvCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfcGFyc2VyLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X3BhcnNlci5weQppbmRleCA4ZGRjMTc2My4uMDZjODY0MCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X3BhcnNlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfcGFyc2VyLnB5CkBAIC0xLDcgKzEsNyBAQAogaW1wb3J0IGlvCiBpbXBvcnQgZW1haWwKIGltcG9ydCB1bml0dGVzdAotZnJvbSBlbWFpbC5tZXNzYWdlIGltcG9ydCBNZXNzYWdlCitmcm9tIGVtYWlsLm1lc3NhZ2UgaW1wb3J0IE1lc3NhZ2UsIEVtYWlsTWVzc2FnZQogZnJvbSBlbWFpbC5wb2xpY3kgaW1wb3J0IGRlZmF1bHQKIGZyb20gdGVzdC50ZXN0X2VtYWlsIGltcG9ydCBUZXN0RW1haWxCYXNlCiAKQEAgLTM5LDM4ICszOSw3MSBAQAogICAgICAgICAjIFRoZSB1bmljb2RlIGxpbmUgc3BsaXR0ZXIgc3BsaXRzIG9uIHVuaWNvZGUgbGluZWJyZWFrcywgd2hpY2ggYXJlCiAgICAgICAgICMgbW9yZSBudW1lcm91cyB0aGFuIGFsbG93ZWQgYnkgdGhlIGVtYWlsIFJGQ3M7IG1ha2Ugc3VyZSB3ZSBhcmUgb25seQogICAgICAgICAjIHNwbGl0dGluZyBvbiB0aG9zZSB0d28uCi0gICAgICAgIG1zZyA9IHNlbGYucGFyc2VyKAotICAgICAgICAgICAgIk5leHQtTGluZTogbm90XHg4NWJyb2tlblxyXG4iCi0gICAgICAgICAgICAiTnVsbDogbm90XHgwMGJyb2tlblxyXG4iCi0gICAgICAgICAgICAiVmVydGljYWwtVGFiOiBub3RcdmJyb2tlblxyXG4iCi0gICAgICAgICAgICAiRm9ybS1GZWVkOiBub3RcZmJyb2tlblxyXG4iCi0gICAgICAgICAgICAiRmlsZS1TZXBhcmF0b3I6IG5vdFx4MUNicm9rZW5cclxuIgotICAgICAgICAgICAgIkdyb3VwLVNlcGFyYXRvcjogbm90XHgxRGJyb2tlblxyXG4iCi0gICAgICAgICAgICAiUmVjb3JkLVNlcGFyYXRvcjogbm90XHgxRWJyb2tlblxyXG4iCi0gICAgICAgICAgICAiTGluZS1TZXBhcmF0b3I6IG5vdFx1MjAyOGJyb2tlblxyXG4iCi0gICAgICAgICAgICAiUGFyYWdyYXBoLVNlcGFyYXRvcjogbm90XHUyMDI5YnJva2VuXHJcbiIKLSAgICAgICAgICAgICJcclxuIiwKLSAgICAgICAgICAgIHBvbGljeT1kZWZhdWx0LAotICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLml0ZW1zKCksIFsKLSAgICAgICAgICAgICgiTmV4dC1MaW5lIiwgIm5vdFx4ODVicm9rZW4iKSwKLSAgICAgICAgICAgICgiTnVsbCIsICJub3RceDAwYnJva2VuIiksCi0gICAgICAgICAgICAoIlZlcnRpY2FsLVRhYiIsICJub3RcdmJyb2tlbiIpLAotICAgICAgICAgICAgKCJGb3JtLUZlZWQiLCAibm90XGZicm9rZW4iKSwKLSAgICAgICAgICAgICgiRmlsZS1TZXBhcmF0b3IiLCAibm90XHgxQ2Jyb2tlbiIpLAotICAgICAgICAgICAgKCJHcm91cC1TZXBhcmF0b3IiLCAibm90XHgxRGJyb2tlbiIpLAotICAgICAgICAgICAgKCJSZWNvcmQtU2VwYXJhdG9yIiwgIm5vdFx4MUVicm9rZW4iKSwKLSAgICAgICAgICAgICgiTGluZS1TZXBhcmF0b3IiLCAibm90XHUyMDI4YnJva2VuIiksCi0gICAgICAgICAgICAoIlBhcmFncmFwaC1TZXBhcmF0b3IiLCAibm90XHUyMDI5YnJva2VuIiksCi0gICAgICAgIF0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmdldF9wYXlsb2FkKCksICIiKQorICAgICAgICBmb3IgcGFyc2VyIGluIHNlbGYucGFyc2VyczoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHBhcnNlcj1wYXJzZXIuX19uYW1lX18pOgorICAgICAgICAgICAgICAgIG1zZyA9IHBhcnNlcigKKyAgICAgICAgICAgICAgICAgICAgIk5leHQtTGluZTogbm90XHg4NWJyb2tlblxyXG4iCisgICAgICAgICAgICAgICAgICAgICJOdWxsOiBub3RceDAwYnJva2VuXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIlZlcnRpY2FsLVRhYjogbm90XHZicm9rZW5cclxuIgorICAgICAgICAgICAgICAgICAgICAiRm9ybS1GZWVkOiBub3RcZmJyb2tlblxyXG4iCisgICAgICAgICAgICAgICAgICAgICJGaWxlLVNlcGFyYXRvcjogbm90XHgxQ2Jyb2tlblxyXG4iCisgICAgICAgICAgICAgICAgICAgICJHcm91cC1TZXBhcmF0b3I6IG5vdFx4MURicm9rZW5cclxuIgorICAgICAgICAgICAgICAgICAgICAiUmVjb3JkLVNlcGFyYXRvcjogbm90XHgxRWJyb2tlblxyXG4iCisgICAgICAgICAgICAgICAgICAgICJMaW5lLVNlcGFyYXRvcjogbm90XHUyMDI4YnJva2VuXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIlBhcmFncmFwaC1TZXBhcmF0b3I6IG5vdFx1MjAyOWJyb2tlblxyXG4iCisgICAgICAgICAgICAgICAgICAgICJcclxuIiwKKyAgICAgICAgICAgICAgICAgICAgcG9saWN5PWRlZmF1bHQsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLml0ZW1zKCksIFsKKyAgICAgICAgICAgICAgICAgICAgKCJOZXh0LUxpbmUiLCAibm90XHg4NWJyb2tlbiIpLAorICAgICAgICAgICAgICAgICAgICAoIk51bGwiLCAibm90XHgwMGJyb2tlbiIpLAorICAgICAgICAgICAgICAgICAgICAoIlZlcnRpY2FsLVRhYiIsICJub3RcdmJyb2tlbiIpLAorICAgICAgICAgICAgICAgICAgICAoIkZvcm0tRmVlZCIsICJub3RcZmJyb2tlbiIpLAorICAgICAgICAgICAgICAgICAgICAoIkZpbGUtU2VwYXJhdG9yIiwgIm5vdFx4MUNicm9rZW4iKSwKKyAgICAgICAgICAgICAgICAgICAgKCJHcm91cC1TZXBhcmF0b3IiLCAibm90XHgxRGJyb2tlbiIpLAorICAgICAgICAgICAgICAgICAgICAoIlJlY29yZC1TZXBhcmF0b3IiLCAibm90XHgxRWJyb2tlbiIpLAorICAgICAgICAgICAgICAgICAgICAoIkxpbmUtU2VwYXJhdG9yIiwgIm5vdFx1MjAyOGJyb2tlbiIpLAorICAgICAgICAgICAgICAgICAgICAoIlBhcmFncmFwaC1TZXBhcmF0b3IiLCAibm90XHUyMDI5YnJva2VuIiksCisgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXRfcGF5bG9hZCgpLCAiIikKKworICAgIGNsYXNzIE15TWVzc2FnZShFbWFpbE1lc3NhZ2UpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF9jdXN0b21fbWVzc2FnZV9mYWN0b3J5X29uX3BvbGljeShzZWxmKToKKyAgICAgICAgZm9yIHBhcnNlciBpbiBzZWxmLnBhcnNlcnM6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChwYXJzZXI9cGFyc2VyLl9fbmFtZV9fKToKKyAgICAgICAgICAgICAgICBNeVBvbGljeSA9IGRlZmF1bHQuY2xvbmUobWVzc2FnZV9mYWN0b3J5PXNlbGYuTXlNZXNzYWdlKQorICAgICAgICAgICAgICAgIG1zZyA9IHBhcnNlcigiVG86IGZvb1xuXG50ZXN0IiwgcG9saWN5PU15UG9saWN5KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtc2csIHNlbGYuTXlNZXNzYWdlKQorCisgICAgZGVmIHRlc3RfZmFjdG9yeV9hcmdfb3ZlcnJpZGVzX3BvbGljeShzZWxmKToKKyAgICAgICAgZm9yIHBhcnNlciBpbiBzZWxmLnBhcnNlcnM6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChwYXJzZXI9cGFyc2VyLl9fbmFtZV9fKToKKyAgICAgICAgICAgICAgICBNeVBvbGljeSA9IGRlZmF1bHQuY2xvbmUobWVzc2FnZV9mYWN0b3J5PXNlbGYuTXlNZXNzYWdlKQorICAgICAgICAgICAgICAgIG1zZyA9IHBhcnNlcigiVG86IGZvb1xuXG50ZXN0IiwgTWVzc2FnZSwgcG9saWN5PU15UG9saWN5KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZShtc2csIHNlbGYuTXlNZXNzYWdlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtc2csIE1lc3NhZ2UpCisKKyMgUGxheSBzb21lIGdhbWVzIHRvIGdldCBuaWNlIG91dHB1dCBpbiBzdWJUZXN0LiAgVGhpcyBjb2RlIGNvdWxkIGJlIGNsZWFyZXIKKyMgaWYgc3RhdGljbWV0aG9kIHN1cHBvcnRlZCBfX25hbWVfXy4KKworZGVmIG1lc3NhZ2VfZnJvbV9maWxlKHMsICphcmdzLCAqKmt3KToKKyAgICBmID0gaW8uU3RyaW5nSU8ocykKKyAgICByZXR1cm4gZW1haWwubWVzc2FnZV9mcm9tX2ZpbGUoZiwgKmFyZ3MsICoqa3cpCiAKIGNsYXNzIFRlc3RQYXJzZXIoVGVzdFBhcnNlckJhc2UsIFRlc3RFbWFpbEJhc2UpOgotICAgIHBhcnNlciA9IHN0YXRpY21ldGhvZChlbWFpbC5tZXNzYWdlX2Zyb21fc3RyaW5nKQorICAgIHBhcnNlcnMgPSAoZW1haWwubWVzc2FnZV9mcm9tX3N0cmluZywgbWVzc2FnZV9mcm9tX2ZpbGUpCisKK2RlZiBtZXNzYWdlX2Zyb21fYnl0ZXMocywgKmFyZ3MsICoqa3cpOgorICAgIHJldHVybiBlbWFpbC5tZXNzYWdlX2Zyb21fYnl0ZXMocy5lbmNvZGUoKSwgKmFyZ3MsICoqa3cpCisKK2RlZiBtZXNzYWdlX2Zyb21fYmluYXJ5X2ZpbGUocywgKmFyZ3MsICoqa3cpOgorICAgIGYgPSBpby5CeXRlc0lPKHMuZW5jb2RlKCkpCisgICAgcmV0dXJuIGVtYWlsLm1lc3NhZ2VfZnJvbV9iaW5hcnlfZmlsZShmLCAqYXJncywgKiprdykKIAogY2xhc3MgVGVzdEJ5dGVzUGFyc2VyKFRlc3RQYXJzZXJCYXNlLCBUZXN0RW1haWxCYXNlKToKLSAgICBkZWYgcGFyc2VyKHNlbGYsIHMsICphcmdzLCAqKmt3KToKLSAgICAgICAgcmV0dXJuIGVtYWlsLm1lc3NhZ2VfZnJvbV9ieXRlcyhzLmVuY29kZSgpLCAqYXJncywgKiprdykKKyAgICBwYXJzZXJzID0gKG1lc3NhZ2VfZnJvbV9ieXRlcywgbWVzc2FnZV9mcm9tX2JpbmFyeV9maWxlKQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfcG9saWN5LnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X3BvbGljeS5weQppbmRleCA3MGFjNGRiLi44ZmVjYjhhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfcG9saWN5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9wb2xpY3kucHkKQEAgLTUsNiArNSw3IEBACiBpbXBvcnQgZW1haWwucG9saWN5CiBpbXBvcnQgZW1haWwucGFyc2VyCiBpbXBvcnQgZW1haWwuZ2VuZXJhdG9yCitpbXBvcnQgZW1haWwubWVzc2FnZQogZnJvbSBlbWFpbCBpbXBvcnQgaGVhZGVycmVnaXN0cnkKIAogZGVmIG1ha2VfZGVmYXVsdHMoYmFzZV9kZWZhdWx0cywgZGlmZmVyZW5jZXMpOgpAQCAtMjMsNiArMjQsNyBAQAogICAgICAgICAnY3RlX3R5cGUnOiAgICAgICAgICAgICAgICAgJzhiaXQnLAogICAgICAgICAncmFpc2Vfb25fZGVmZWN0JzogICAgICAgICAgRmFsc2UsCiAgICAgICAgICdtYW5nbGVfZnJvbV8nOiAgICAgICAgICAgICBUcnVlLAorICAgICAgICAnbWVzc2FnZV9mYWN0b3J5JzogICAgICAgICAgTm9uZSwKICAgICAgICAgfQogICAgICMgVGhlc2UgZGVmYXVsdCB2YWx1ZXMgYXJlIHRoZSBvbmVzIHNldCBvbiBlbWFpbC5wb2xpY3kuZGVmYXVsdC4KICAgICAjIElmIGFueSBvZiB0aGVzZSBkZWZhdWx0cyBjaGFuZ2UsIHRoZSBkb2NzIG11c3QgYmUgdXBkYXRlZC4KQEAgLTM0LDYgKzM2LDcgQEAKICAgICAgICAgJ3JlZm9sZF9zb3VyY2UnOiAgICAgICAgICAgICdsb25nJywKICAgICAgICAgJ2NvbnRlbnRfbWFuYWdlcic6ICAgICAgICAgIGVtYWlsLnBvbGljeS5FbWFpbFBvbGljeS5jb250ZW50X21hbmFnZXIsCiAgICAgICAgICdtYW5nbGVfZnJvbV8nOiAgICAgICAgICAgICBGYWxzZSwKKyAgICAgICAgJ21lc3NhZ2VfZmFjdG9yeSc6ICAgICAgICAgIGVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLAogICAgICAgICB9KQogCiAgICAgIyBGb3IgZWFjaCBwb2xpY3kgdW5kZXIgdGVzdCwgd2UgZ2l2ZSBoZXJlIHdoYXQgd2UgZXhwZWN0IHRoZSBkZWZhdWx0cyB0bwpAQCAtNjIsMjAgKzY1LDIyIEBACiAgICAgZGVmIHRlc3RfZGVmYXVsdHMoc2VsZik6CiAgICAgICAgIGZvciBwb2xpY3ksIGV4cGVjdGVkIGluIHNlbGYucG9saWNpZXMuaXRlbXMoKToKICAgICAgICAgICAgIGZvciBhdHRyLCB2YWx1ZSBpbiBleHBlY3RlZC5pdGVtcygpOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXR0cihwb2xpY3ksIGF0dHIpLCB2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJjaGFuZ2Uge30gZG9jcy9kb2NzdHJpbmdzIGlmIGRlZmF1bHRzIGhhdmUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2hhbmdlZCIpLmZvcm1hdChwb2xpY3kpKQorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHBvbGljeT1wb2xpY3ksIGF0dHI9YXR0cik6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXR0cihwb2xpY3ksIGF0dHIpLCB2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiY2hhbmdlIHt9IGRvY3MvZG9jc3RyaW5ncyBpZiBkZWZhdWx0cyBoYXZlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjaGFuZ2VkIikuZm9ybWF0KHBvbGljeSkpCiAKICAgICBkZWYgdGVzdF9hbGxfYXR0cmlidXRlc19jb3ZlcmVkKHNlbGYpOgogICAgICAgICBmb3IgcG9saWN5LCBleHBlY3RlZCBpbiBzZWxmLnBvbGljaWVzLml0ZW1zKCk6CiAgICAgICAgICAgICBmb3IgYXR0ciBpbiBkaXIocG9saWN5KToKLSAgICAgICAgICAgICAgICBpZiAoYXR0ci5zdGFydHN3aXRoKCdfJykgb3IKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzaW5zdGFuY2UoZ2V0YXR0cihlbWFpbC5wb2xpY3kuRW1haWxQb2xpY3ksIGF0dHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZXMuRnVuY3Rpb25UeXBlKSk6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihhdHRyLCBleHBlY3RlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAie30gaXMgbm90IGZ1bGx5IHRlc3RlZCIuZm9ybWF0KGF0dHIpKQorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHBvbGljeT1wb2xpY3ksIGF0dHI9YXR0cik6CisgICAgICAgICAgICAgICAgICAgIGlmIChhdHRyLnN0YXJ0c3dpdGgoJ18nKSBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzaW5zdGFuY2UoZ2V0YXR0cihlbWFpbC5wb2xpY3kuRW1haWxQb2xpY3ksIGF0dHIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzLkZ1bmN0aW9uVHlwZSkpOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYXR0ciwgZXhwZWN0ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ7fSBpcyBub3QgZnVsbHkgdGVzdGVkIi5mb3JtYXQoYXR0cikpCiAKICAgICBkZWYgdGVzdF9hYmMoc2VsZik6CiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKSBhcyBjbToKQEAgLTIzNyw2ICsyNDIsOSBAQAogICAgICMgd2lucyksIGJ1dCB0aGF0IHRoZSBvcmRlciBzdGlsbCB3b3JrcyAocmlnaHQgb3ZlcnJpZGVzIGxlZnQpLgogCiAKK2NsYXNzIFRlc3RFeGNlcHRpb24oRXhjZXB0aW9uKToKKyAgICBwYXNzCisKIGNsYXNzIFRlc3RQb2xpY3lQcm9wYWdhdGlvbih1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICAjIFRoZSBhYnN0cmFjdCBtZXRob2RzIGFyZSB1c2VkIGJ5IHRoZSBwYXJzZXIgYnV0IG5vdCBieSB0aGUgd3JhcHBlcgpAQCAtMjQ0LDQwICsyNTIsNDAgQEAKICAgICAjIHBvbGljeSB3YXMgYWN0dWFsbHkgcHJvcGFnYXRlZCBhbGwgdGhlIHdheSB0byBmZWVkcGFyc2VyLgogICAgIGNsYXNzIE15UG9saWN5KGVtYWlsLnBvbGljeS5Qb2xpY3kpOgogICAgICAgICBkZWYgYmFkbWV0aG9kKHNlbGYsICphcmdzLCAqKmt3KToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigidGVzdCIpCisgICAgICAgICAgICByYWlzZSBUZXN0RXhjZXB0aW9uKCJ0ZXN0IikKICAgICAgICAgZm9sZCA9IGZvbGRfYmluYXJ5ID0gaGVhZGVyX2ZldGNoX3BhcnNlciA9IGJhZG1ldGhvZAogICAgICAgICBoZWFkZXJfc291cmNlX3BhcnNlID0gaGVhZGVyX3N0b3JlX3BhcnNlID0gYmFkbWV0aG9kCiAKICAgICBkZWYgdGVzdF9tZXNzYWdlX2Zyb21fc3RyaW5nKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoRXhjZXB0aW9uLCAiXnRlc3QkIik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUZXN0RXhjZXB0aW9uLCAiXnRlc3QkIik6CiAgICAgICAgICAgICBlbWFpbC5tZXNzYWdlX2Zyb21fc3RyaW5nKCJTdWJqZWN0OiB0ZXN0XG5cbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeT1zZWxmLk15UG9saWN5KQogCiAgICAgZGVmIHRlc3RfbWVzc2FnZV9mcm9tX2J5dGVzKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoRXhjZXB0aW9uLCAiXnRlc3QkIik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUZXN0RXhjZXB0aW9uLCAiXnRlc3QkIik6CiAgICAgICAgICAgICBlbWFpbC5tZXNzYWdlX2Zyb21fYnl0ZXMoYiJTdWJqZWN0OiB0ZXN0XG5cbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5PXNlbGYuTXlQb2xpY3kpCiAKICAgICBkZWYgdGVzdF9tZXNzYWdlX2Zyb21fZmlsZShzZWxmKToKICAgICAgICAgZiA9IGlvLlN0cmluZ0lPKCdTdWJqZWN0OiB0ZXN0XG5cbicpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChFeGNlcHRpb24sICJedGVzdCQiKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFRlc3RFeGNlcHRpb24sICJedGVzdCQiKToKICAgICAgICAgICAgIGVtYWlsLm1lc3NhZ2VfZnJvbV9maWxlKGYsIHBvbGljeT1zZWxmLk15UG9saWN5KQogCiAgICAgZGVmIHRlc3RfbWVzc2FnZV9mcm9tX2JpbmFyeV9maWxlKHNlbGYpOgogICAgICAgICBmID0gaW8uQnl0ZXNJTyhiJ1N1YmplY3Q6IHRlc3RcblxuJykKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEV4Y2VwdGlvbiwgIl50ZXN0JCIpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVGVzdEV4Y2VwdGlvbiwgIl50ZXN0JCIpOgogICAgICAgICAgICAgZW1haWwubWVzc2FnZV9mcm9tX2JpbmFyeV9maWxlKGYsIHBvbGljeT1zZWxmLk15UG9saWN5KQogCiAgICAgIyBUaGVzZSBhcmUgcmVkdW5kYW50LCBidXQgd2UgbmVlZCB0aGVtIGZvciBibGFjay1ib3ggY29tcGxldGVuZXNzLgogCiAgICAgZGVmIHRlc3RfcGFyc2VyKHNlbGYpOgogICAgICAgICBwID0gZW1haWwucGFyc2VyLlBhcnNlcihwb2xpY3k9c2VsZi5NeVBvbGljeSkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEV4Y2VwdGlvbiwgIl50ZXN0JCIpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVGVzdEV4Y2VwdGlvbiwgIl50ZXN0JCIpOgogICAgICAgICAgICAgcC5wYXJzZXN0cignU3ViamVjdDogdGVzdFxuXG4nKQogCiAgICAgZGVmIHRlc3RfYnl0ZXNfcGFyc2VyKHNlbGYpOgogICAgICAgICBwID0gZW1haWwucGFyc2VyLkJ5dGVzUGFyc2VyKHBvbGljeT1zZWxmLk15UG9saWN5KQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoRXhjZXB0aW9uLCAiXnRlc3QkIik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUZXN0RXhjZXB0aW9uLCAiXnRlc3QkIik6CiAgICAgICAgICAgICBwLnBhcnNlYnl0ZXMoYidTdWJqZWN0OiB0ZXN0XG5cbicpCiAKICAgICAjIE5vdyB0aGF0IHdlJ3ZlIGVzdGFibGlzaGVkIHRoYXQgYWxsIHRoZSBwYXJzZSBtZXRob2RzIGdldCB0aGUKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW5zdXJlcGlwLnB5IGIvTGliL3Rlc3QvdGVzdF9lbnN1cmVwaXAucHkKaW5kZXggYTc4Y2ExNC4uOWIwNGMxOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lbnN1cmVwaXAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9lbnN1cmVwaXAucHkKQEAgLTksMTkgKzksNiBAQAogaW1wb3J0IGVuc3VyZXBpcAogaW1wb3J0IGVuc3VyZXBpcC5fdW5pbnN0YWxsCiAKLSMgcGlwIGN1cnJlbnRseSByZXF1aXJlcyBzc2wgc3VwcG9ydCwgc28gd2UgZW5zdXJlIHdlIGhhbmRsZQotIyBpdCBiZWluZyBtaXNzaW5nIChodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTk3NDQpCi1lbnN1cmVwaXBfbm9fc3NsID0gdGVzdC5zdXBwb3J0LmltcG9ydF9mcmVzaF9tb2R1bGUoImVuc3VyZXBpcCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tlZD1bInNzbCJdKQotdHJ5OgotICAgIGltcG9ydCBzc2wKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBkZWYgcmVxdWlyZXNfdXNhYmxlX3BpcChmKToKLSAgICAgICAgZGVjbyA9IHVuaXR0ZXN0LnNraXAoZW5zdXJlcGlwLl9NSVNTSU5HX1NTTF9NRVNTQUdFKQotICAgICAgICByZXR1cm4gZGVjbyhmKQotZWxzZToKLSAgICBkZWYgcmVxdWlyZXNfdXNhYmxlX3BpcChmKToKLSAgICAgICAgcmV0dXJuIGYKIAogY2xhc3MgVGVzdEVuc3VyZVBpcFZlcnNpb24odW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC00Nyw3ICszNCw2IEBACiAKIGNsYXNzIFRlc3RCb290c3RyYXAoRW5zdXJlcGlwTWl4aW4sIHVuaXR0ZXN0LlRlc3RDYXNlKToKIAotICAgIEByZXF1aXJlc191c2FibGVfcGlwCiAgICAgZGVmIHRlc3RfYmFzaWNfYm9vdHN0cmFwcGluZyhzZWxmKToKICAgICAgICAgZW5zdXJlcGlwLmJvb3RzdHJhcCgpCiAKQEAgLTYyLDcgKzQ4LDYgQEAKICAgICAgICAgYWRkaXRpb25hbF9wYXRocyA9IHNlbGYucnVuX3BpcC5jYWxsX2FyZ3NbMF1bMV0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWRkaXRpb25hbF9wYXRocyksIDIpCiAKLSAgICBAcmVxdWlyZXNfdXNhYmxlX3BpcAogICAgIGRlZiB0ZXN0X2Jvb3RzdHJhcHBpbmdfd2l0aF9yb290KHNlbGYpOgogICAgICAgICBlbnN1cmVwaXAuYm9vdHN0cmFwKHJvb3Q9Ii9mb28vYmFyLyIpCiAKQEAgLTc1LDcgKzYwLDYgQEAKICAgICAgICAgICAgIHVuaXR0ZXN0Lm1vY2suQU5ZLAogICAgICAgICApCiAKLSAgICBAcmVxdWlyZXNfdXNhYmxlX3BpcAogICAgIGRlZiB0ZXN0X2Jvb3RzdHJhcHBpbmdfd2l0aF91c2VyKHNlbGYpOgogICAgICAgICBlbnN1cmVwaXAuYm9vdHN0cmFwKHVzZXI9VHJ1ZSkKIApAQCAtODcsNyArNzEsNiBAQAogICAgICAgICAgICAgdW5pdHRlc3QubW9jay5BTlksCiAgICAgICAgICkKIAotICAgIEByZXF1aXJlc191c2FibGVfcGlwCiAgICAgZGVmIHRlc3RfYm9vdHN0cmFwcGluZ193aXRoX3VwZ3JhZGUoc2VsZik6CiAgICAgICAgIGVuc3VyZXBpcC5ib290c3RyYXAodXBncmFkZT1UcnVlKQogCkBAIC05OSw3ICs4Miw2IEBACiAgICAgICAgICAgICB1bml0dGVzdC5tb2NrLkFOWSwKICAgICAgICAgKQogCi0gICAgQHJlcXVpcmVzX3VzYWJsZV9waXAKICAgICBkZWYgdGVzdF9ib290c3RyYXBwaW5nX3dpdGhfdmVyYm9zaXR5XzEoc2VsZik6CiAgICAgICAgIGVuc3VyZXBpcC5ib290c3RyYXAodmVyYm9zaXR5PTEpCiAKQEAgLTExMSw3ICs5Myw2IEBACiAgICAgICAgICAgICB1bml0dGVzdC5tb2NrLkFOWSwKICAgICAgICAgKQogCi0gICAgQHJlcXVpcmVzX3VzYWJsZV9waXAKICAgICBkZWYgdGVzdF9ib290c3RyYXBwaW5nX3dpdGhfdmVyYm9zaXR5XzIoc2VsZik6CiAgICAgICAgIGVuc3VyZXBpcC5ib290c3RyYXAodmVyYm9zaXR5PTIpCiAKQEAgLTEyMyw3ICsxMDQsNiBAQAogICAgICAgICAgICAgdW5pdHRlc3QubW9jay5BTlksCiAgICAgICAgICkKIAotICAgIEByZXF1aXJlc191c2FibGVfcGlwCiAgICAgZGVmIHRlc3RfYm9vdHN0cmFwcGluZ193aXRoX3ZlcmJvc2l0eV8zKHNlbGYpOgogICAgICAgICBlbnN1cmVwaXAuYm9vdHN0cmFwKHZlcmJvc2l0eT0zKQogCkBAIC0xMzUsMTcgKzExNSwxNCBAQAogICAgICAgICAgICAgdW5pdHRlc3QubW9jay5BTlksCiAgICAgICAgICkKIAotICAgIEByZXF1aXJlc191c2FibGVfcGlwCiAgICAgZGVmIHRlc3RfYm9vdHN0cmFwcGluZ193aXRoX3JlZ3VsYXJfaW5zdGFsbChzZWxmKToKICAgICAgICAgZW5zdXJlcGlwLmJvb3RzdHJhcCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5vc19lbnZpcm9uWyJFTlNVUkVQSVBfT1BUSU9OUyJdLCAiaW5zdGFsbCIpCiAKLSAgICBAcmVxdWlyZXNfdXNhYmxlX3BpcAogICAgIGRlZiB0ZXN0X2Jvb3RzdHJhcHBpbmdfd2l0aF9hbHRfaW5zdGFsbChzZWxmKToKICAgICAgICAgZW5zdXJlcGlwLmJvb3RzdHJhcChhbHRpbnN0YWxsPVRydWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5vc19lbnZpcm9uWyJFTlNVUkVQSVBfT1BUSU9OUyJdLCAiYWx0aW5zdGFsbCIpCiAKLSAgICBAcmVxdWlyZXNfdXNhYmxlX3BpcAogICAgIGRlZiB0ZXN0X2Jvb3RzdHJhcHBpbmdfd2l0aF9kZWZhdWx0X3BpcChzZWxmKToKICAgICAgICAgZW5zdXJlcGlwLmJvb3RzdHJhcChkZWZhdWx0X3BpcD1UcnVlKQogICAgICAgICBzZWxmLmFzc2VydE5vdEluKCJFTlNVUkVQSVBfT1BUSU9OUyIsIHNlbGYub3NfZW52aXJvbikKQEAgLTE1NSw3ICsxMzIsNiBAQAogICAgICAgICAgICAgZW5zdXJlcGlwLmJvb3RzdHJhcChhbHRpbnN0YWxsPVRydWUsIGRlZmF1bHRfcGlwPVRydWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5ydW5fcGlwLmNhbGxlZCkKIAotICAgIEByZXF1aXJlc191c2FibGVfcGlwCiAgICAgZGVmIHRlc3RfcGlwX2Vudmlyb25tZW50X3ZhcmlhYmxlc19yZW1vdmVkKHNlbGYpOgogICAgICAgICAjIGVuc3VyZXBpcCBkZWxpYmVyYXRlbHkgaWdub3JlcyBhbGwgcGlwIGVudmlyb25tZW50IHZhcmlhYmxlcwogICAgICAgICAjIFNlZSBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTk3MzQgZm9yIGRldGFpbHMKQEAgLTE2Myw3ICsxMzksNiBAQAogICAgICAgICBlbnN1cmVwaXAuYm9vdHN0cmFwKCkKICAgICAgICAgc2VsZi5hc3NlcnROb3RJbigiUElQX1RISVNfU0hPVUxEX0dPX0FXQVkiLCBzZWxmLm9zX2Vudmlyb24pCiAKLSAgICBAcmVxdWlyZXNfdXNhYmxlX3BpcAogICAgIGRlZiB0ZXN0X3BpcF9jb25maWdfZmlsZV9kaXNhYmxlZChzZWxmKToKICAgICAgICAgIyBlbnN1cmVwaXAgZGVsaWJlcmF0ZWx5IGlnbm9yZXMgdGhlIHBpcCBjb25maWcgZmlsZQogICAgICAgICAjIFNlZSBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjAwNTMgZm9yIGRldGFpbHMKQEAgLTIwNSw3ICsxODAsNiBAQAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucnVuX3BpcC5jYWxsZWQpCiAKIAotICAgIEByZXF1aXJlc191c2FibGVfcGlwCiAgICAgZGVmIHRlc3RfdW5pbnN0YWxsKHNlbGYpOgogICAgICAgICB3aXRoIGZha2VfcGlwKCk6CiAgICAgICAgICAgICBlbnN1cmVwaXAuX3VuaW5zdGFsbF9oZWxwZXIoKQpAQCAtMjE3LDcgKzE5MSw2IEBACiAgICAgICAgICAgICBdCiAgICAgICAgICkKIAotICAgIEByZXF1aXJlc191c2FibGVfcGlwCiAgICAgZGVmIHRlc3RfdW5pbnN0YWxsX3dpdGhfdmVyYm9zaXR5XzEoc2VsZik6CiAgICAgICAgIHdpdGggZmFrZV9waXAoKToKICAgICAgICAgICAgIGVuc3VyZXBpcC5fdW5pbnN0YWxsX2hlbHBlcih2ZXJib3NpdHk9MSkKQEAgLTIyOSw3ICsyMDIsNiBAQAogICAgICAgICAgICAgXQogICAgICAgICApCiAKLSAgICBAcmVxdWlyZXNfdXNhYmxlX3BpcAogICAgIGRlZiB0ZXN0X3VuaW5zdGFsbF93aXRoX3ZlcmJvc2l0eV8yKHNlbGYpOgogICAgICAgICB3aXRoIGZha2VfcGlwKCk6CiAgICAgICAgICAgICBlbnN1cmVwaXAuX3VuaW5zdGFsbF9oZWxwZXIodmVyYm9zaXR5PTIpCkBAIC0yNDEsNyArMjEzLDYgQEAKICAgICAgICAgICAgIF0KICAgICAgICAgKQogCi0gICAgQHJlcXVpcmVzX3VzYWJsZV9waXAKICAgICBkZWYgdGVzdF91bmluc3RhbGxfd2l0aF92ZXJib3NpdHlfMyhzZWxmKToKICAgICAgICAgd2l0aCBmYWtlX3BpcCgpOgogICAgICAgICAgICAgZW5zdXJlcGlwLl91bmluc3RhbGxfaGVscGVyKHZlcmJvc2l0eT0zKQpAQCAtMjUzLDcgKzIyNCw2IEBACiAgICAgICAgICAgICBdCiAgICAgICAgICkKIAotICAgIEByZXF1aXJlc191c2FibGVfcGlwCiAgICAgZGVmIHRlc3RfcGlwX2Vudmlyb25tZW50X3ZhcmlhYmxlc19yZW1vdmVkKHNlbGYpOgogICAgICAgICAjIGVuc3VyZXBpcCBkZWxpYmVyYXRlbHkgaWdub3JlcyBhbGwgcGlwIGVudmlyb25tZW50IHZhcmlhYmxlcwogICAgICAgICAjIFNlZSBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTk3MzQgZm9yIGRldGFpbHMKQEAgLTI2Miw3ICsyMzIsNiBAQAogICAgICAgICAgICAgZW5zdXJlcGlwLl91bmluc3RhbGxfaGVscGVyKCkKICAgICAgICAgc2VsZi5hc3NlcnROb3RJbigiUElQX1RISVNfU0hPVUxEX0dPX0FXQVkiLCBzZWxmLm9zX2Vudmlyb24pCiAKLSAgICBAcmVxdWlyZXNfdXNhYmxlX3BpcAogICAgIGRlZiB0ZXN0X3BpcF9jb25maWdfZmlsZV9kaXNhYmxlZChzZWxmKToKICAgICAgICAgIyBlbnN1cmVwaXAgZGVsaWJlcmF0ZWx5IGlnbm9yZXMgdGhlIHBpcCBjb25maWcgZmlsZQogICAgICAgICAjIFNlZSBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjAwNTMgZm9yIGRldGFpbHMKQEAgLTI3MSw0NCArMjQwLDEyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5vc19lbnZpcm9uWyJQSVBfQ09ORklHX0ZJTEUiXSwgb3MuZGV2bnVsbCkKIAogCi1jbGFzcyBUZXN0TWlzc2luZ1NTTChFbnN1cmVwaXBNaXhpbiwgdW5pdHRlc3QuVGVzdENhc2UpOgotCi0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzeXMubW9kdWxlc1siZW5zdXJlcGlwIl0gPSBlbnN1cmVwaXBfbm9fc3NsCi0gICAgICAgIEBzZWxmLmFkZENsZWFudXAKLSAgICAgICAgZGVmIHJlc3RvcmVfbW9kdWxlKCk6Ci0gICAgICAgICAgICBzeXMubW9kdWxlc1siZW5zdXJlcGlwIl0gPSBlbnN1cmVwaXAKLSAgICAgICAgc3VwZXIoKS5zZXRVcCgpCi0KLSAgICBkZWYgdGVzdF9ib290c3RyYXBfcmVxdWlyZXNfc3NsKHNlbGYpOgotICAgICAgICBzZWxmLm9zX2Vudmlyb25bIlBJUF9USElTX1NIT1VMRF9TVEFZIl0gPSAidGVzdCBmb2RkZXIiCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChSdW50aW1lRXJyb3IsICJyZXF1aXJlcyBTU0wvVExTIik6Ci0gICAgICAgICAgICBlbnN1cmVwaXBfbm9fc3NsLmJvb3RzdHJhcCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5ydW5fcGlwLmNhbGxlZCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbigiUElQX1RISVNfU0hPVUxEX1NUQVkiLCBzZWxmLm9zX2Vudmlyb24pCi0KLSAgICBkZWYgdGVzdF91bmluc3RhbGxfcmVxdWlyZXNfc3NsKHNlbGYpOgotICAgICAgICBzZWxmLm9zX2Vudmlyb25bIlBJUF9USElTX1NIT1VMRF9TVEFZIl0gPSAidGVzdCBmb2RkZXIiCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChSdW50aW1lRXJyb3IsICJyZXF1aXJlcyBTU0wvVExTIik6Ci0gICAgICAgICAgICB3aXRoIGZha2VfcGlwKCk6Ci0gICAgICAgICAgICAgICAgZW5zdXJlcGlwX25vX3NzbC5fdW5pbnN0YWxsX2hlbHBlcigpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5ydW5fcGlwLmNhbGxlZCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbigiUElQX1RISVNfU0hPVUxEX1NUQVkiLCBzZWxmLm9zX2Vudmlyb24pCi0KLSAgICBkZWYgdGVzdF9tYWluX2V4aXRzX2Vhcmx5X3dpdGhfd2FybmluZyhzZWxmKToKLSAgICAgICAgd2l0aCB0ZXN0LnN1cHBvcnQuY2FwdHVyZWRfc3RkZXJyKCkgYXMgc3RkZXJyOgotICAgICAgICAgICAgZW5zdXJlcGlwX25vX3NzbC5fbWFpbihbIi0tdmVyc2lvbiJdKQotICAgICAgICB3YXJuaW5nID0gc3RkZXJyLmdldHZhbHVlKCkuc3RyaXAoKQotICAgICAgICBzZWxmLmFzc2VydFRydWUod2FybmluZy5lbmRzd2l0aCgicmVxdWlyZXMgU1NML1RMUyIpLCB3YXJuaW5nKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucnVuX3BpcC5jYWxsZWQpCi0KICMgQmFzaWMgdGVzdGluZyBvZiB0aGUgbWFpbiBmdW5jdGlvbnMgYW5kIHRoZWlyIGFyZ3VtZW50IHBhcnNpbmcKIAogRVhQRUNURURfVkVSU0lPTl9PVVRQVVQgPSAicGlwICIgKyBlbnN1cmVwaXAuX1BJUF9WRVJTSU9OCiAKIGNsYXNzIFRlc3RCb290c3RyYXBwaW5nTWFpbkZ1bmN0aW9uKEVuc3VyZXBpcE1peGluLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAKLSAgICBAcmVxdWlyZXNfdXNhYmxlX3BpcAogICAgIGRlZiB0ZXN0X2Jvb3RzdHJhcF92ZXJzaW9uKHNlbGYpOgogICAgICAgICB3aXRoIHRlc3Quc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBzdGRvdXQ6CiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUV4aXQpOgpAQCAtMzE3LDcgKzI1NCw2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBFWFBFQ1RFRF9WRVJTSU9OX09VVFBVVCkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnJ1bl9waXAuY2FsbGVkKQogCi0gICAgQHJlcXVpcmVzX3VzYWJsZV9waXAKICAgICBkZWYgdGVzdF9iYXNpY19ib290c3RyYXBwaW5nKHNlbGYpOgogICAgICAgICBlbnN1cmVwaXAuX21haW4oW10pCiAKQEAgLTM0Miw3ICsyNzgsNiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgRVhQRUNURURfVkVSU0lPTl9PVVRQVVQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5ydW5fcGlwLmNhbGxlZCkKIAotICAgIEByZXF1aXJlc191c2FibGVfcGlwCiAgICAgZGVmIHRlc3RfYmFzaWNfdW5pbnN0YWxsKHNlbGYpOgogICAgICAgICB3aXRoIGZha2VfcGlwKCk6CiAgICAgICAgICAgICBlbnN1cmVwaXAuX3VuaW5zdGFsbC5fbWFpbihbXSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW51bS5weSBiL0xpYi90ZXN0L3Rlc3RfZW51bS5weQppbmRleCA2MzBiMTU1Li5lOTdlZjk0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2VudW0ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9lbnVtLnB5CkBAIC0zLDkgKzMsMTAgQEAKIGltcG9ydCBweWRvYwogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdAotZnJvbSBlbnVtIGltcG9ydCBFbnVtLCBJbnRFbnVtLCBFbnVtTWV0YSwgdW5pcXVlCitmcm9tIGVudW0gaW1wb3J0IEVudW0sIEludEVudW0sIEVudW1NZXRhLCBGbGFnLCBJbnRGbGFnLCB1bmlxdWUsIGF1dG8KIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPCiBmcm9tIHBpY2tsZSBpbXBvcnQgZHVtcHMsIGxvYWRzLCBQaWNrbGluZ0Vycm9yLCBISUdIRVNUX1BST1RPQ09MCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogIyBmb3IgcGlja2xlIHRlc3RzCiB0cnk6CkBAIC0zMiw2ICszMywxNCBAQAogZXhjZXB0IEV4Y2VwdGlvbiBhcyBleGM6CiAgICAgRmxvYXRTdG9vZ2VzID0gZXhjCiAKK3RyeToKKyAgICBjbGFzcyBGbGFnU3Rvb2dlcyhGbGFnKToKKyAgICAgICAgTEFSUlkgPSAxCisgICAgICAgIENVUkxZID0gMgorICAgICAgICBNT0UgPSAzCitleGNlcHQgRXhjZXB0aW9uIGFzIGV4YzoKKyAgICBGbGFnU3Rvb2dlcyA9IGV4YworCiAjIGZvciBwaWNrbGUgdGVzdCBhbmQgc3ViY2xhc3MgdGVzdHMKIHRyeToKICAgICBjbGFzcyBTdHJFbnVtKHN0ciwgRW51bSk6CkBAIC02MCw5ICs2OSw5IEBACiAjIGZvciBkb2N0ZXN0cwogdHJ5OgogICAgIGNsYXNzIEZydWl0KEVudW0pOgotICAgICAgICB0b21hdG8gPSAxCi0gICAgICAgIGJhbmFuYSA9IDIKLSAgICAgICAgY2hlcnJ5ID0gMworICAgICAgICBUT01BVE8gPSAxCisgICAgICAgIEJBTkFOQSA9IDIKKyAgICAgICAgQ0hFUlJZID0gMwogZXhjZXB0IEV4Y2VwdGlvbjoKICAgICBwYXNzCiAKQEAgLTEwNCw2ICsxMTMsNyBAQAogICAgICAgICAgICAgICAgICdfXycsICdfX18nLCAnX19fXycsICdfX19fXycsKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZW51bS5faXNfZHVuZGVyKHMpKQogCisjIHRlc3RzCiAKIGNsYXNzIFRlc3RFbnVtKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtMjgzLDYgKzI5MywyOCBAQAogICAgICAgICAgICAgY2xhc3MgV3JvbmcoRW51bSk6CiAgICAgICAgICAgICAgICAgX2FueV9uYW1lXyA9IDkKIAorICAgIGRlZiB0ZXN0X2Jvb2woc2VsZik6CisgICAgICAgICMgcGxhaW4gRW51bSBtZW1iZXJzIGFyZSBhbHdheXMgVHJ1ZQorICAgICAgICBjbGFzcyBMb2dpYyhFbnVtKToKKyAgICAgICAgICAgIHRydWUgPSBUcnVlCisgICAgICAgICAgICBmYWxzZSA9IEZhbHNlCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShMb2dpYy50cnVlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoTG9naWMuZmFsc2UpCisgICAgICAgICMgdW5sZXNzIG92ZXJyaWRkZW4KKyAgICAgICAgY2xhc3MgUmVhbExvZ2ljKEVudW0pOgorICAgICAgICAgICAgdHJ1ZSA9IFRydWUKKyAgICAgICAgICAgIGZhbHNlID0gRmFsc2UKKyAgICAgICAgICAgIGRlZiBfX2Jvb2xfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gYm9vbChzZWxmLl92YWx1ZV8pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShSZWFsTG9naWMudHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShSZWFsTG9naWMuZmFsc2UpCisgICAgICAgICMgbWl4ZWQgRW51bXMgZGVwZW5kIG9uIG1peGVkLWluIHR5cGUKKyAgICAgICAgY2xhc3MgSW50TG9naWMoaW50LCBFbnVtKToKKyAgICAgICAgICAgIHRydWUgPSAxCisgICAgICAgICAgICBmYWxzZSA9IDAKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKEludExvZ2ljLnRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoSW50TG9naWMuZmFsc2UpCisKICAgICBkZWYgdGVzdF9jb250YWlucyhzZWxmKToKICAgICAgICAgU2Vhc29uID0gc2VsZi5TZWFzb24KICAgICAgICAgc2VsZi5hc3NlcnRJbihTZWFzb24uQVVUVU1OLCBTZWFzb24pCkBAIC0xNTQ3LDYgKzE1NzksNzAxIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTGFiZWxsZWRMaXN0LnVucHJvY2Vzc2VkLCAxKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKExhYmVsbGVkTGlzdCgxKSwgTGFiZWxsZWRMaXN0LnVucHJvY2Vzc2VkKQogCisgICAgZGVmIHRlc3RfYXV0b19udW1iZXIoc2VsZik6CisgICAgICAgIGNsYXNzIENvbG9yKEVudW0pOgorICAgICAgICAgICAgcmVkID0gYXV0bygpCisgICAgICAgICAgICBibHVlID0gYXV0bygpCisgICAgICAgICAgICBncmVlbiA9IGF1dG8oKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChDb2xvciksIFtDb2xvci5yZWQsIENvbG9yLmJsdWUsIENvbG9yLmdyZWVuXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb2xvci5yZWQudmFsdWUsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29sb3IuYmx1ZS52YWx1ZSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb2xvci5ncmVlbi52YWx1ZSwgMykKKworICAgIGRlZiB0ZXN0X2F1dG9fbmFtZShzZWxmKToKKyAgICAgICAgY2xhc3MgQ29sb3IoRW51bSk6CisgICAgICAgICAgICBkZWYgX2dlbmVyYXRlX25leHRfdmFsdWVfKG5hbWUsIHN0YXJ0LCBjb3VudCwgbGFzdCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIG5hbWUKKyAgICAgICAgICAgIHJlZCA9IGF1dG8oKQorICAgICAgICAgICAgYmx1ZSA9IGF1dG8oKQorICAgICAgICAgICAgZ3JlZW4gPSBhdXRvKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoQ29sb3IpLCBbQ29sb3IucmVkLCBDb2xvci5ibHVlLCBDb2xvci5ncmVlbl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29sb3IucmVkLnZhbHVlLCAncmVkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb2xvci5ibHVlLnZhbHVlLCAnYmx1ZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29sb3IuZ3JlZW4udmFsdWUsICdncmVlbicpCisKKyAgICBkZWYgdGVzdF9hdXRvX25hbWVfaW5oZXJpdChzZWxmKToKKyAgICAgICAgY2xhc3MgQXV0b05hbWVFbnVtKEVudW0pOgorICAgICAgICAgICAgZGVmIF9nZW5lcmF0ZV9uZXh0X3ZhbHVlXyhuYW1lLCBzdGFydCwgY291bnQsIGxhc3QpOgorICAgICAgICAgICAgICAgIHJldHVybiBuYW1lCisgICAgICAgIGNsYXNzIENvbG9yKEF1dG9OYW1lRW51bSk6CisgICAgICAgICAgICByZWQgPSBhdXRvKCkKKyAgICAgICAgICAgIGJsdWUgPSBhdXRvKCkKKyAgICAgICAgICAgIGdyZWVuID0gYXV0bygpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KENvbG9yKSwgW0NvbG9yLnJlZCwgQ29sb3IuYmx1ZSwgQ29sb3IuZ3JlZW5dKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbG9yLnJlZC52YWx1ZSwgJ3JlZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29sb3IuYmx1ZS52YWx1ZSwgJ2JsdWUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbG9yLmdyZWVuLnZhbHVlLCAnZ3JlZW4nKQorCisgICAgZGVmIHRlc3RfYXV0b19nYXJiYWdlKHNlbGYpOgorICAgICAgICBjbGFzcyBDb2xvcihFbnVtKToKKyAgICAgICAgICAgIHJlZCA9ICdyZWQnCisgICAgICAgICAgICBibHVlID0gYXV0bygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29sb3IuYmx1ZS52YWx1ZSwgMSkKKworICAgIGRlZiB0ZXN0X2F1dG9fZ2FyYmFnZV9jb3JyZWN0ZWQoc2VsZik6CisgICAgICAgIGNsYXNzIENvbG9yKEVudW0pOgorICAgICAgICAgICAgcmVkID0gJ3JlZCcKKyAgICAgICAgICAgIGJsdWUgPSAyCisgICAgICAgICAgICBncmVlbiA9IGF1dG8oKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChDb2xvciksIFtDb2xvci5yZWQsIENvbG9yLmJsdWUsIENvbG9yLmdyZWVuXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb2xvci5yZWQudmFsdWUsICdyZWQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbG9yLmJsdWUudmFsdWUsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29sb3IuZ3JlZW4udmFsdWUsIDMpCisKKyAgICBkZWYgdGVzdF9kdXBsaWNhdGVfYXV0byhzZWxmKToKKyAgICAgICAgY2xhc3MgRHVwZXMoRW51bSk6CisgICAgICAgICAgICBmaXJzdCA9IHByaW1lcm8gPSBhdXRvKCkKKyAgICAgICAgICAgIHNlY29uZCA9IGF1dG8oKQorICAgICAgICAgICAgdGhpcmQgPSBhdXRvKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbRHVwZXMuZmlyc3QsIER1cGVzLnNlY29uZCwgRHVwZXMudGhpcmRdLCBsaXN0KER1cGVzKSkKKworCitjbGFzcyBUZXN0T3JkZXIodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3Rfc2FtZV9tZW1iZXJzKHNlbGYpOgorICAgICAgICBjbGFzcyBDb2xvcihFbnVtKToKKyAgICAgICAgICAgIF9vcmRlcl8gPSAncmVkIGdyZWVuIGJsdWUnCisgICAgICAgICAgICByZWQgPSAxCisgICAgICAgICAgICBncmVlbiA9IDIKKyAgICAgICAgICAgIGJsdWUgPSAzCisKKyAgICBkZWYgdGVzdF9zYW1lX21lbWJlcnNfd2l0aF9hbGlhc2VzKHNlbGYpOgorICAgICAgICBjbGFzcyBDb2xvcihFbnVtKToKKyAgICAgICAgICAgIF9vcmRlcl8gPSAncmVkIGdyZWVuIGJsdWUnCisgICAgICAgICAgICByZWQgPSAxCisgICAgICAgICAgICBncmVlbiA9IDIKKyAgICAgICAgICAgIGJsdWUgPSAzCisgICAgICAgICAgICB2ZXJkZSA9IGdyZWVuCisKKyAgICBkZWYgdGVzdF9zYW1lX21lbWJlcnNfd3Jvbmdfb3JkZXIoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdtZW1iZXIgb3JkZXIgZG9lcyBub3QgbWF0Y2ggX29yZGVyXycpOgorICAgICAgICAgICAgY2xhc3MgQ29sb3IoRW51bSk6CisgICAgICAgICAgICAgICAgX29yZGVyXyA9ICdyZWQgZ3JlZW4gYmx1ZScKKyAgICAgICAgICAgICAgICByZWQgPSAxCisgICAgICAgICAgICAgICAgYmx1ZSA9IDMKKyAgICAgICAgICAgICAgICBncmVlbiA9IDIKKworICAgIGRlZiB0ZXN0X29yZGVyX2hhc19leHRyYV9tZW1iZXJzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnbWVtYmVyIG9yZGVyIGRvZXMgbm90IG1hdGNoIF9vcmRlcl8nKToKKyAgICAgICAgICAgIGNsYXNzIENvbG9yKEVudW0pOgorICAgICAgICAgICAgICAgIF9vcmRlcl8gPSAncmVkIGdyZWVuIGJsdWUgcHVycGxlJworICAgICAgICAgICAgICAgIHJlZCA9IDEKKyAgICAgICAgICAgICAgICBncmVlbiA9IDIKKyAgICAgICAgICAgICAgICBibHVlID0gMworCisgICAgZGVmIHRlc3Rfb3JkZXJfaGFzX2V4dHJhX21lbWJlcnNfd2l0aF9hbGlhc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnbWVtYmVyIG9yZGVyIGRvZXMgbm90IG1hdGNoIF9vcmRlcl8nKToKKyAgICAgICAgICAgIGNsYXNzIENvbG9yKEVudW0pOgorICAgICAgICAgICAgICAgIF9vcmRlcl8gPSAncmVkIGdyZWVuIGJsdWUgcHVycGxlJworICAgICAgICAgICAgICAgIHJlZCA9IDEKKyAgICAgICAgICAgICAgICBncmVlbiA9IDIKKyAgICAgICAgICAgICAgICBibHVlID0gMworICAgICAgICAgICAgICAgIHZlcmRlID0gZ3JlZW4KKworICAgIGRlZiB0ZXN0X2VudW1faGFzX2V4dHJhX21lbWJlcnMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdtZW1iZXIgb3JkZXIgZG9lcyBub3QgbWF0Y2ggX29yZGVyXycpOgorICAgICAgICAgICAgY2xhc3MgQ29sb3IoRW51bSk6CisgICAgICAgICAgICAgICAgX29yZGVyXyA9ICdyZWQgZ3JlZW4gYmx1ZScKKyAgICAgICAgICAgICAgICByZWQgPSAxCisgICAgICAgICAgICAgICAgZ3JlZW4gPSAyCisgICAgICAgICAgICAgICAgYmx1ZSA9IDMKKyAgICAgICAgICAgICAgICBwdXJwbGUgPSA0CisKKyAgICBkZWYgdGVzdF9lbnVtX2hhc19leHRyYV9tZW1iZXJzX3dpdGhfYWxpYXNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ21lbWJlciBvcmRlciBkb2VzIG5vdCBtYXRjaCBfb3JkZXJfJyk6CisgICAgICAgICAgICBjbGFzcyBDb2xvcihFbnVtKToKKyAgICAgICAgICAgICAgICBfb3JkZXJfID0gJ3JlZCBncmVlbiBibHVlJworICAgICAgICAgICAgICAgIHJlZCA9IDEKKyAgICAgICAgICAgICAgICBncmVlbiA9IDIKKyAgICAgICAgICAgICAgICBibHVlID0gMworICAgICAgICAgICAgICAgIHB1cnBsZSA9IDQKKyAgICAgICAgICAgICAgICB2ZXJkZSA9IGdyZWVuCisKKworY2xhc3MgVGVzdEZsYWcodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIlRlc3RzIG9mIHRoZSBGbGFncy4iIiIKKworICAgIGNsYXNzIFBlcm0oRmxhZyk6CisgICAgICAgIFIsIFcsIFggPSA0LCAyLCAxCisKKyAgICBjbGFzcyBPcGVuKEZsYWcpOgorICAgICAgICBSTyA9IDAKKyAgICAgICAgV08gPSAxCisgICAgICAgIFJXID0gMgorICAgICAgICBBQyA9IDMKKyAgICAgICAgQ0UgPSAxPDwxOQorCisgICAgZGVmIHRlc3Rfc3RyKHNlbGYpOgorICAgICAgICBQZXJtID0gc2VsZi5QZXJtCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFBlcm0uUiksICdQZXJtLlInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihQZXJtLlcpLCAnUGVybS5XJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoUGVybS5YKSwgJ1Blcm0uWCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFBlcm0uUiB8IFBlcm0uVyksICdQZXJtLlJ8VycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFBlcm0uUiB8IFBlcm0uVyB8IFBlcm0uWCksICdQZXJtLlJ8V3xYJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoUGVybSgwKSksICdQZXJtLjAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+UGVybS5SKSwgJ1Blcm0uV3xYJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoflBlcm0uVyksICdQZXJtLlJ8WCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH5QZXJtLlgpLCAnUGVybS5SfFcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+KFBlcm0uUiB8IFBlcm0uVykpLCAnUGVybS5YJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIofihQZXJtLlIgfCBQZXJtLlcgfCBQZXJtLlgpKSwgJ1Blcm0uMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFBlcm0ofjApKSwgJ1Blcm0uUnxXfFgnKQorCisgICAgICAgIE9wZW4gPSBzZWxmLk9wZW4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoT3Blbi5STyksICdPcGVuLlJPJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoT3Blbi5XTyksICdPcGVuLldPJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoT3Blbi5BQyksICdPcGVuLkFDJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoT3Blbi5STyB8IE9wZW4uQ0UpLCAnT3Blbi5DRScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKE9wZW4uV08gfCBPcGVuLkNFKSwgJ09wZW4uQ0V8V08nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+T3Blbi5STyksICdPcGVuLkNFfEFDfFJXfFdPJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIofk9wZW4uV08pLCAnT3Blbi5DRXxSVycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH5PcGVuLkFDKSwgJ09wZW4uQ0UnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+KE9wZW4uUk8gfCBPcGVuLkNFKSksICdPcGVuLkFDJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIofihPcGVuLldPIHwgT3Blbi5DRSkpLCAnT3Blbi5SVycpCisKKyAgICBkZWYgdGVzdF9yZXByKHNlbGYpOgorICAgICAgICBQZXJtID0gc2VsZi5QZXJtCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihQZXJtLlIpLCAnPFBlcm0uUjogND4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoUGVybS5XKSwgJzxQZXJtLlc6IDI+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKFBlcm0uWCksICc8UGVybS5YOiAxPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihQZXJtLlIgfCBQZXJtLlcpLCAnPFBlcm0uUnxXOiA2PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihQZXJtLlIgfCBQZXJtLlcgfCBQZXJtLlgpLCAnPFBlcm0uUnxXfFg6IDc+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKFBlcm0oMCkpLCAnPFBlcm0uMDogMD4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoflBlcm0uUiksICc8UGVybS5XfFg6IDM+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH5QZXJtLlcpLCAnPFBlcm0uUnxYOiA1PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih+UGVybS5YKSwgJzxQZXJtLlJ8VzogNj4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIofihQZXJtLlIgfCBQZXJtLlcpKSwgJzxQZXJtLlg6IDE+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH4oUGVybS5SIHwgUGVybS5XIHwgUGVybS5YKSksICc8UGVybS4wOiAwPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihQZXJtKH4wKSksICc8UGVybS5SfFd8WDogNz4nKQorCisgICAgICAgIE9wZW4gPSBzZWxmLk9wZW4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKE9wZW4uUk8pLCAnPE9wZW4uUk86IDA+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKE9wZW4uV08pLCAnPE9wZW4uV086IDE+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKE9wZW4uQUMpLCAnPE9wZW4uQUM6IDM+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKE9wZW4uUk8gfCBPcGVuLkNFKSwgJzxPcGVuLkNFOiA1MjQyODg+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKE9wZW4uV08gfCBPcGVuLkNFKSwgJzxPcGVuLkNFfFdPOiA1MjQyODk+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH5PcGVuLlJPKSwgJzxPcGVuLkNFfEFDfFJXfFdPOiA1MjQyOTE+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH5PcGVuLldPKSwgJzxPcGVuLkNFfFJXOiA1MjQyOTA+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH5PcGVuLkFDKSwgJzxPcGVuLkNFOiA1MjQyODg+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH4oT3Blbi5STyB8IE9wZW4uQ0UpKSwgJzxPcGVuLkFDOiAzPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih+KE9wZW4uV08gfCBPcGVuLkNFKSksICc8T3Blbi5SVzogMj4nKQorCisgICAgZGVmIHRlc3Rfb3Ioc2VsZik6CisgICAgICAgIFBlcm0gPSBzZWxmLlBlcm0KKyAgICAgICAgZm9yIGkgaW4gUGVybToKKyAgICAgICAgICAgIGZvciBqIGluIFBlcm06CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoaSB8IGopLCBQZXJtKGkudmFsdWUgfCBqLnZhbHVlKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChpIHwgaikudmFsdWUsIGkudmFsdWUgfCBqLnZhbHVlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShpIHwgaiksIFBlcm0pCisgICAgICAgIGZvciBpIGluIFBlcm06CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGkgfCBpLCBpKQorICAgICAgICBPcGVuID0gc2VsZi5PcGVuCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoT3Blbi5STyB8IE9wZW4uQ0UsIE9wZW4uQ0UpCisKKyAgICBkZWYgdGVzdF9hbmQoc2VsZik6CisgICAgICAgIFBlcm0gPSBzZWxmLlBlcm0KKyAgICAgICAgUlcgPSBQZXJtLlIgfCBQZXJtLlcKKyAgICAgICAgUlggPSBQZXJtLlIgfCBQZXJtLlgKKyAgICAgICAgV1ggPSBQZXJtLlcgfCBQZXJtLlgKKyAgICAgICAgUldYID0gUGVybS5SIHwgUGVybS5XIHwgUGVybS5YCisgICAgICAgIHZhbHVlcyA9IGxpc3QoUGVybSkgKyBbUlcsIFJYLCBXWCwgUldYLCBQZXJtKDApXQorICAgICAgICBmb3IgaSBpbiB2YWx1ZXM6CisgICAgICAgICAgICBmb3IgaiBpbiB2YWx1ZXM6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoaSAmIGopLnZhbHVlLCBpLnZhbHVlICYgai52YWx1ZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoaSAmIGopLCBQZXJtKQorICAgICAgICBmb3IgaSBpbiBQZXJtOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhpICYgaSwgaSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoaSAmIFJXWCwgaSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoUldYICYgaSwgaSkKKyAgICAgICAgT3BlbiA9IHNlbGYuT3BlbgorICAgICAgICBzZWxmLmFzc2VydElzKE9wZW4uUk8gJiBPcGVuLkNFLCBPcGVuLlJPKQorCisgICAgZGVmIHRlc3RfeG9yKHNlbGYpOgorICAgICAgICBQZXJtID0gc2VsZi5QZXJtCisgICAgICAgIGZvciBpIGluIFBlcm06CisgICAgICAgICAgICBmb3IgaiBpbiBQZXJtOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGkgXiBqKS52YWx1ZSwgaS52YWx1ZSBeIGoudmFsdWUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGkgXiBqKSwgUGVybSkKKyAgICAgICAgZm9yIGkgaW4gUGVybToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoaSBeIFBlcm0oMCksIGkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKFBlcm0oMCkgXiBpLCBpKQorICAgICAgICBPcGVuID0gc2VsZi5PcGVuCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoT3Blbi5STyBeIE9wZW4uQ0UsIE9wZW4uQ0UpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoT3Blbi5DRSBeIE9wZW4uQ0UsIE9wZW4uUk8pCisKKyAgICBkZWYgdGVzdF9pbnZlcnQoc2VsZik6CisgICAgICAgIFBlcm0gPSBzZWxmLlBlcm0KKyAgICAgICAgUlcgPSBQZXJtLlIgfCBQZXJtLlcKKyAgICAgICAgUlggPSBQZXJtLlIgfCBQZXJtLlgKKyAgICAgICAgV1ggPSBQZXJtLlcgfCBQZXJtLlgKKyAgICAgICAgUldYID0gUGVybS5SIHwgUGVybS5XIHwgUGVybS5YCisgICAgICAgIHZhbHVlcyA9IGxpc3QoUGVybSkgKyBbUlcsIFJYLCBXWCwgUldYLCBQZXJtKDApXQorICAgICAgICBmb3IgaSBpbiB2YWx1ZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUofmkpLCBQZXJtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh+fmksIGkpCisgICAgICAgIGZvciBpIGluIFBlcm06CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKH5+aSwgaSkKKyAgICAgICAgT3BlbiA9IHNlbGYuT3BlbgorICAgICAgICBzZWxmLmFzc2VydElzKE9wZW4uV08gJiB+T3Blbi5XTywgT3Blbi5STykKKyAgICAgICAgc2VsZi5hc3NlcnRJcygoT3Blbi5XT3xPcGVuLkNFKSAmIH5PcGVuLldPLCBPcGVuLkNFKQorCisgICAgZGVmIHRlc3RfYm9vbChzZWxmKToKKyAgICAgICAgUGVybSA9IHNlbGYuUGVybQorICAgICAgICBmb3IgZiBpbiBQZXJtOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGYpCisgICAgICAgIE9wZW4gPSBzZWxmLk9wZW4KKyAgICAgICAgZm9yIGYgaW4gT3BlbjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYm9vbChmLnZhbHVlKSwgYm9vbChmKSkKKworICAgIGRlZiB0ZXN0X3Byb2dyYW1hdGljX2Z1bmN0aW9uX3N0cmluZyhzZWxmKToKKyAgICAgICAgUGVybSA9IEZsYWcoJ1Blcm0nLCAnUiBXIFgnKQorICAgICAgICBsc3QgPSBsaXN0KFBlcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxzdCksIGxlbihQZXJtKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oUGVybSksIDMsIFBlcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHN0LCBbUGVybS5SLCBQZXJtLlcsIFBlcm0uWF0pCisgICAgICAgIGZvciBpLCBuIGluIGVudW1lcmF0ZSgnUiBXIFgnLnNwbGl0KCkpOgorICAgICAgICAgICAgdiA9IDE8PGkKKyAgICAgICAgICAgIGUgPSBQZXJtKHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUudmFsdWUsIHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZS52YWx1ZSksIGludCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5uYW1lLCBuKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlLCBQZXJtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGUpLCBQZXJtKQorCisgICAgZGVmIHRlc3RfcHJvZ3JhbWF0aWNfZnVuY3Rpb25fc3RyaW5nX3dpdGhfc3RhcnQoc2VsZik6CisgICAgICAgIFBlcm0gPSBGbGFnKCdQZXJtJywgJ1IgVyBYJywgc3RhcnQ9OCkKKyAgICAgICAgbHN0ID0gbGlzdChQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsc3QpLCBsZW4oUGVybSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKFBlcm0pLCAzLCBQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxzdCwgW1Blcm0uUiwgUGVybS5XLCBQZXJtLlhdKQorICAgICAgICBmb3IgaSwgbiBpbiBlbnVtZXJhdGUoJ1IgVyBYJy5zcGxpdCgpKToKKyAgICAgICAgICAgIHYgPSA4PDxpCisgICAgICAgICAgICBlID0gUGVybSh2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLnZhbHVlLCB2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGUudmFsdWUpLCBpbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUubmFtZSwgbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZSwgUGVybSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShlKSwgUGVybSkKKworICAgIGRlZiB0ZXN0X3Byb2dyYW1hdGljX2Z1bmN0aW9uX3N0cmluZ19saXN0KHNlbGYpOgorICAgICAgICBQZXJtID0gRmxhZygnUGVybScsIFsnUicsICdXJywgJ1gnXSkKKyAgICAgICAgbHN0ID0gbGlzdChQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsc3QpLCBsZW4oUGVybSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKFBlcm0pLCAzLCBQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxzdCwgW1Blcm0uUiwgUGVybS5XLCBQZXJtLlhdKQorICAgICAgICBmb3IgaSwgbiBpbiBlbnVtZXJhdGUoJ1IgVyBYJy5zcGxpdCgpKToKKyAgICAgICAgICAgIHYgPSAxPDxpCisgICAgICAgICAgICBlID0gUGVybSh2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLnZhbHVlLCB2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGUudmFsdWUpLCBpbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUubmFtZSwgbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZSwgUGVybSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShlKSwgUGVybSkKKworICAgIGRlZiB0ZXN0X3Byb2dyYW1hdGljX2Z1bmN0aW9uX2l0ZXJhYmxlKHNlbGYpOgorICAgICAgICBQZXJtID0gRmxhZygnUGVybScsICgoJ1InLCAyKSwgKCdXJywgOCksICgnWCcsIDMyKSkpCisgICAgICAgIGxzdCA9IGxpc3QoUGVybSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obHN0KSwgbGVuKFBlcm0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihQZXJtKSwgMywgUGVybSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsc3QsIFtQZXJtLlIsIFBlcm0uVywgUGVybS5YXSkKKyAgICAgICAgZm9yIGksIG4gaW4gZW51bWVyYXRlKCdSIFcgWCcuc3BsaXQoKSk6CisgICAgICAgICAgICB2ID0gMTw8KDIqaSsxKQorICAgICAgICAgICAgZSA9IFBlcm0odikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS52YWx1ZSwgdikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShlLnZhbHVlKSwgaW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLm5hbWUsIG4pCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGUsIFBlcm0pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZSksIFBlcm0pCisKKyAgICBkZWYgdGVzdF9wcm9ncmFtYXRpY19mdW5jdGlvbl9mcm9tX2RpY3Qoc2VsZik6CisgICAgICAgIFBlcm0gPSBGbGFnKCdQZXJtJywgT3JkZXJlZERpY3QoKCgnUicsIDIpLCAoJ1cnLCA4KSwgKCdYJywgMzIpKSkpCisgICAgICAgIGxzdCA9IGxpc3QoUGVybSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obHN0KSwgbGVuKFBlcm0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihQZXJtKSwgMywgUGVybSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsc3QsIFtQZXJtLlIsIFBlcm0uVywgUGVybS5YXSkKKyAgICAgICAgZm9yIGksIG4gaW4gZW51bWVyYXRlKCdSIFcgWCcuc3BsaXQoKSk6CisgICAgICAgICAgICB2ID0gMTw8KDIqaSsxKQorICAgICAgICAgICAgZSA9IFBlcm0odikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS52YWx1ZSwgdikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShlLnZhbHVlKSwgaW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLm5hbWUsIG4pCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGUsIFBlcm0pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZSksIFBlcm0pCisKKyAgICBkZWYgdGVzdF9waWNrbGUoc2VsZik6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoRmxhZ1N0b29nZXMsIEV4Y2VwdGlvbik6CisgICAgICAgICAgICByYWlzZSBGbGFnU3Rvb2dlcworICAgICAgICB0ZXN0X3BpY2tsZV9kdW1wX2xvYWQoc2VsZi5hc3NlcnRJcywgRmxhZ1N0b29nZXMuQ1VSTFl8RmxhZ1N0b29nZXMuTU9FKQorICAgICAgICB0ZXN0X3BpY2tsZV9kdW1wX2xvYWQoc2VsZi5hc3NlcnRJcywgRmxhZ1N0b29nZXMpCisKKyAgICBkZWYgdGVzdF9jb250YWlubWVudChzZWxmKToKKyAgICAgICAgUGVybSA9IHNlbGYuUGVybQorICAgICAgICBSLCBXLCBYID0gUGVybQorICAgICAgICBSVyA9IFIgfCBXCisgICAgICAgIFJYID0gUiB8IFgKKyAgICAgICAgV1ggPSBXIHwgWAorICAgICAgICBSV1ggPSBSIHwgVyB8IFgKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFIgaW4gUlcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShSIGluIFJYKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoUiBpbiBSV1gpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShXIGluIFJXKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoVyBpbiBXWCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFcgaW4gUldYKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoWCBpbiBSWCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFggaW4gV1gpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShYIGluIFJXWCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShSIGluIFdYKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKFcgaW4gUlgpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoWCBpbiBSVykKKworICAgIGRlZiB0ZXN0X2F1dG9fbnVtYmVyKHNlbGYpOgorICAgICAgICBjbGFzcyBDb2xvcihGbGFnKToKKyAgICAgICAgICAgIHJlZCA9IGF1dG8oKQorICAgICAgICAgICAgYmx1ZSA9IGF1dG8oKQorICAgICAgICAgICAgZ3JlZW4gPSBhdXRvKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoQ29sb3IpLCBbQ29sb3IucmVkLCBDb2xvci5ibHVlLCBDb2xvci5ncmVlbl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29sb3IucmVkLnZhbHVlLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbG9yLmJsdWUudmFsdWUsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29sb3IuZ3JlZW4udmFsdWUsIDQpCisKKyAgICBkZWYgdGVzdF9hdXRvX251bWJlcl9nYXJiYWdlKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnSW52YWxpZCBGbGFnIHZhbHVlOiAubm90IGFuIGludC4nKToKKyAgICAgICAgICAgIGNsYXNzIENvbG9yKEZsYWcpOgorICAgICAgICAgICAgICAgIHJlZCA9ICdub3QgYW4gaW50JworICAgICAgICAgICAgICAgIGJsdWUgPSBhdXRvKCkKKworICAgIGRlZiB0ZXN0X2Nhc2NhZGluZ19mYWlsdXJlKHNlbGYpOgorICAgICAgICBjbGFzcyBCaXphcnJlKEZsYWcpOgorICAgICAgICAgICAgYyA9IDMKKyAgICAgICAgICAgIGQgPSA0CisgICAgICAgICAgICBmID0gNgorICAgICAgICAjIEJpemFycmUuYyB8IEJpemFycmUuZAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICI1IGlzIG5vdCBhIHZhbGlkIEJpemFycmUiLCBCaXphcnJlLCA1KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICI1IGlzIG5vdCBhIHZhbGlkIEJpemFycmUiLCBCaXphcnJlLCA1KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICIyIGlzIG5vdCBhIHZhbGlkIEJpemFycmUiLCBCaXphcnJlLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICIyIGlzIG5vdCBhIHZhbGlkIEJpemFycmUiLCBCaXphcnJlLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICIxIGlzIG5vdCBhIHZhbGlkIEJpemFycmUiLCBCaXphcnJlLCAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICIxIGlzIG5vdCBhIHZhbGlkIEJpemFycmUiLCBCaXphcnJlLCAxKQorCisgICAgZGVmIHRlc3RfZHVwbGljYXRlX2F1dG8oc2VsZik6CisgICAgICAgIGNsYXNzIER1cGVzKEVudW0pOgorICAgICAgICAgICAgZmlyc3QgPSBwcmltZXJvID0gYXV0bygpCisgICAgICAgICAgICBzZWNvbmQgPSBhdXRvKCkKKyAgICAgICAgICAgIHRoaXJkID0gYXV0bygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW0R1cGVzLmZpcnN0LCBEdXBlcy5zZWNvbmQsIER1cGVzLnRoaXJkXSwgbGlzdChEdXBlcykpCisKKyAgICBkZWYgdGVzdF9iaXphcnJlKHNlbGYpOgorICAgICAgICBjbGFzcyBCaXphcnJlKEZsYWcpOgorICAgICAgICAgICAgYiA9IDMKKyAgICAgICAgICAgIGMgPSA0CisgICAgICAgICAgICBkID0gNgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoQml6YXJyZSg3KSksICc8Qml6YXJyZS5kfGN8YjogNz4nKQorCisKK2NsYXNzIFRlc3RJbnRGbGFnKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJUZXN0cyBvZiB0aGUgSW50RmxhZ3MuIiIiCisKKyAgICBjbGFzcyBQZXJtKEludEZsYWcpOgorICAgICAgICBYID0gMSA8PCAwCisgICAgICAgIFcgPSAxIDw8IDEKKyAgICAgICAgUiA9IDEgPDwgMgorCisgICAgY2xhc3MgT3BlbihJbnRGbGFnKToKKyAgICAgICAgUk8gPSAwCisgICAgICAgIFdPID0gMQorICAgICAgICBSVyA9IDIKKyAgICAgICAgQUMgPSAzCisgICAgICAgIENFID0gMTw8MTkKKworICAgIGRlZiB0ZXN0X3R5cGUoc2VsZik6CisgICAgICAgIFBlcm0gPSBzZWxmLlBlcm0KKyAgICAgICAgT3BlbiA9IHNlbGYuT3BlbgorICAgICAgICBmb3IgZiBpbiBQZXJtOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoZiwgUGVybSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYsIGYudmFsdWUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKFBlcm0uVyB8IFBlcm0uWCwgUGVybSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUGVybS5XIHwgUGVybS5YLCAzKQorICAgICAgICBmb3IgZiBpbiBPcGVuOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoZiwgT3BlbikpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYsIGYudmFsdWUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKE9wZW4uV08gfCBPcGVuLlJXLCBPcGVuKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChPcGVuLldPIHwgT3Blbi5SVywgMykKKworCisgICAgZGVmIHRlc3Rfc3RyKHNlbGYpOgorICAgICAgICBQZXJtID0gc2VsZi5QZXJtCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFBlcm0uUiksICdQZXJtLlInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihQZXJtLlcpLCAnUGVybS5XJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoUGVybS5YKSwgJ1Blcm0uWCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFBlcm0uUiB8IFBlcm0uVyksICdQZXJtLlJ8VycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFBlcm0uUiB8IFBlcm0uVyB8IFBlcm0uWCksICdQZXJtLlJ8V3xYJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoUGVybS5SIHwgOCksICdQZXJtLjh8UicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFBlcm0oMCkpLCAnUGVybS4wJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoUGVybSg4KSksICdQZXJtLjgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+UGVybS5SKSwgJ1Blcm0uV3xYJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoflBlcm0uVyksICdQZXJtLlJ8WCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH5QZXJtLlgpLCAnUGVybS5SfFcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+KFBlcm0uUiB8IFBlcm0uVykpLCAnUGVybS5YJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIofihQZXJtLlIgfCBQZXJtLlcgfCBQZXJtLlgpKSwgJ1Blcm0uLTgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+KFBlcm0uUiB8IDgpKSwgJ1Blcm0uV3xYJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoUGVybSh+MCkpLCAnUGVybS5SfFd8WCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFBlcm0ofjgpKSwgJ1Blcm0uUnxXfFgnKQorCisgICAgICAgIE9wZW4gPSBzZWxmLk9wZW4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoT3Blbi5STyksICdPcGVuLlJPJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoT3Blbi5XTyksICdPcGVuLldPJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoT3Blbi5BQyksICdPcGVuLkFDJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoT3Blbi5STyB8IE9wZW4uQ0UpLCAnT3Blbi5DRScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKE9wZW4uV08gfCBPcGVuLkNFKSwgJ09wZW4uQ0V8V08nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihPcGVuKDQpKSwgJ09wZW4uNCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH5PcGVuLlJPKSwgJ09wZW4uQ0V8QUN8Uld8V08nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+T3Blbi5XTyksICdPcGVuLkNFfFJXJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIofk9wZW4uQUMpLCAnT3Blbi5DRScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH4oT3Blbi5STyB8IE9wZW4uQ0UpKSwgJ09wZW4uQUN8Uld8V08nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+KE9wZW4uV08gfCBPcGVuLkNFKSksICdPcGVuLlJXJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoT3Blbih+NCkpLCAnT3Blbi5DRXxBQ3xSV3xXTycpCisKKyAgICBkZWYgdGVzdF9yZXByKHNlbGYpOgorICAgICAgICBQZXJtID0gc2VsZi5QZXJtCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihQZXJtLlIpLCAnPFBlcm0uUjogND4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoUGVybS5XKSwgJzxQZXJtLlc6IDI+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKFBlcm0uWCksICc8UGVybS5YOiAxPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihQZXJtLlIgfCBQZXJtLlcpLCAnPFBlcm0uUnxXOiA2PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihQZXJtLlIgfCBQZXJtLlcgfCBQZXJtLlgpLCAnPFBlcm0uUnxXfFg6IDc+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKFBlcm0uUiB8IDgpLCAnPFBlcm0uOHxSOiAxMj4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoUGVybSgwKSksICc8UGVybS4wOiAwPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihQZXJtKDgpKSwgJzxQZXJtLjg6IDg+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH5QZXJtLlIpLCAnPFBlcm0uV3xYOiAtNT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoflBlcm0uVyksICc8UGVybS5SfFg6IC0zPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih+UGVybS5YKSwgJzxQZXJtLlJ8VzogLTI+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH4oUGVybS5SIHwgUGVybS5XKSksICc8UGVybS5YOiAtNz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIofihQZXJtLlIgfCBQZXJtLlcgfCBQZXJtLlgpKSwgJzxQZXJtLi04OiAtOD4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIofihQZXJtLlIgfCA4KSksICc8UGVybS5XfFg6IC0xMz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoUGVybSh+MCkpLCAnPFBlcm0uUnxXfFg6IC0xPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihQZXJtKH44KSksICc8UGVybS5SfFd8WDogLTk+JykKKworICAgICAgICBPcGVuID0gc2VsZi5PcGVuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihPcGVuLlJPKSwgJzxPcGVuLlJPOiAwPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihPcGVuLldPKSwgJzxPcGVuLldPOiAxPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihPcGVuLkFDKSwgJzxPcGVuLkFDOiAzPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihPcGVuLlJPIHwgT3Blbi5DRSksICc8T3Blbi5DRTogNTI0Mjg4PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihPcGVuLldPIHwgT3Blbi5DRSksICc8T3Blbi5DRXxXTzogNTI0Mjg5PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihPcGVuKDQpKSwgJzxPcGVuLjQ6IDQ+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH5PcGVuLlJPKSwgJzxPcGVuLkNFfEFDfFJXfFdPOiAtMT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIofk9wZW4uV08pLCAnPE9wZW4uQ0V8Ulc6IC0yPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih+T3Blbi5BQyksICc8T3Blbi5DRTogLTQ+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH4oT3Blbi5STyB8IE9wZW4uQ0UpKSwgJzxPcGVuLkFDfFJXfFdPOiAtNTI0Mjg5PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih+KE9wZW4uV08gfCBPcGVuLkNFKSksICc8T3Blbi5SVzogLTUyNDI5MD4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoT3Blbih+NCkpLCAnPE9wZW4uQ0V8QUN8Uld8V086IC01PicpCisKKyAgICBkZWYgdGVzdF9vcihzZWxmKToKKyAgICAgICAgUGVybSA9IHNlbGYuUGVybQorICAgICAgICBmb3IgaSBpbiBQZXJtOgorICAgICAgICAgICAgZm9yIGogaW4gUGVybToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGkgfCBqLCBpLnZhbHVlIHwgai52YWx1ZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChpIHwgaikudmFsdWUsIGkudmFsdWUgfCBqLnZhbHVlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShpIHwgaiksIFBlcm0pCisgICAgICAgICAgICBmb3IgaiBpbiByYW5nZSg4KToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGkgfCBqLCBpLnZhbHVlIHwgaikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChpIHwgaikudmFsdWUsIGkudmFsdWUgfCBqKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShpIHwgaiksIFBlcm0pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChqIHwgaSwgaiB8IGkudmFsdWUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoaiB8IGkpLnZhbHVlLCBqIHwgaS52YWx1ZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoaiB8IGkpLCBQZXJtKQorICAgICAgICBmb3IgaSBpbiBQZXJtOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhpIHwgaSwgaSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoaSB8IDAsIGkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKDAgfCBpLCBpKQorICAgICAgICBPcGVuID0gc2VsZi5PcGVuCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoT3Blbi5STyB8IE9wZW4uQ0UsIE9wZW4uQ0UpCisKKyAgICBkZWYgdGVzdF9hbmQoc2VsZik6CisgICAgICAgIFBlcm0gPSBzZWxmLlBlcm0KKyAgICAgICAgUlcgPSBQZXJtLlIgfCBQZXJtLlcKKyAgICAgICAgUlggPSBQZXJtLlIgfCBQZXJtLlgKKyAgICAgICAgV1ggPSBQZXJtLlcgfCBQZXJtLlgKKyAgICAgICAgUldYID0gUGVybS5SIHwgUGVybS5XIHwgUGVybS5YCisgICAgICAgIHZhbHVlcyA9IGxpc3QoUGVybSkgKyBbUlcsIFJYLCBXWCwgUldYLCBQZXJtKDApXQorICAgICAgICBmb3IgaSBpbiB2YWx1ZXM6CisgICAgICAgICAgICBmb3IgaiBpbiB2YWx1ZXM6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpICYgaiwgaS52YWx1ZSAmIGoudmFsdWUsICdpIGlzICVyLCBqIGlzICVyJyAlIChpLCBqKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChpICYgaikudmFsdWUsIGkudmFsdWUgJiBqLnZhbHVlLCAnaSBpcyAlciwgaiBpcyAlcicgJSAoaSwgaikpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGkgJiBqKSwgUGVybSwgJ2kgaXMgJXIsIGogaXMgJXInICUgKGksIGopKQorICAgICAgICAgICAgZm9yIGogaW4gcmFuZ2UoOCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpICYgaiwgaS52YWx1ZSAmIGopCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoaSAmIGopLnZhbHVlLCBpLnZhbHVlICYgaikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoaSAmIGopLCBQZXJtKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaiAmIGksIGogJiBpLnZhbHVlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGogJiBpKS52YWx1ZSwgaiAmIGkudmFsdWUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGogJiBpKSwgUGVybSkKKyAgICAgICAgZm9yIGkgaW4gUGVybToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoaSAmIGksIGkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGkgJiA3LCBpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyg3ICYgaSwgaSkKKyAgICAgICAgT3BlbiA9IHNlbGYuT3BlbgorICAgICAgICBzZWxmLmFzc2VydElzKE9wZW4uUk8gJiBPcGVuLkNFLCBPcGVuLlJPKQorCisgICAgZGVmIHRlc3RfeG9yKHNlbGYpOgorICAgICAgICBQZXJtID0gc2VsZi5QZXJtCisgICAgICAgIGZvciBpIGluIFBlcm06CisgICAgICAgICAgICBmb3IgaiBpbiBQZXJtOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaSBeIGosIGkudmFsdWUgXiBqLnZhbHVlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGkgXiBqKS52YWx1ZSwgaS52YWx1ZSBeIGoudmFsdWUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGkgXiBqKSwgUGVybSkKKyAgICAgICAgICAgIGZvciBqIGluIHJhbmdlKDgpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaSBeIGosIGkudmFsdWUgXiBqKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGkgXiBqKS52YWx1ZSwgaS52YWx1ZSBeIGopCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGkgXiBqKSwgUGVybSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGogXiBpLCBqIF4gaS52YWx1ZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChqIF4gaSkudmFsdWUsIGogXiBpLnZhbHVlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShqIF4gaSksIFBlcm0pCisgICAgICAgIGZvciBpIGluIFBlcm06CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGkgXiAwLCBpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcygwIF4gaSwgaSkKKyAgICAgICAgT3BlbiA9IHNlbGYuT3BlbgorICAgICAgICBzZWxmLmFzc2VydElzKE9wZW4uUk8gXiBPcGVuLkNFLCBPcGVuLkNFKQorICAgICAgICBzZWxmLmFzc2VydElzKE9wZW4uQ0UgXiBPcGVuLkNFLCBPcGVuLlJPKQorCisgICAgZGVmIHRlc3RfaW52ZXJ0KHNlbGYpOgorICAgICAgICBQZXJtID0gc2VsZi5QZXJtCisgICAgICAgIFJXID0gUGVybS5SIHwgUGVybS5XCisgICAgICAgIFJYID0gUGVybS5SIHwgUGVybS5YCisgICAgICAgIFdYID0gUGVybS5XIHwgUGVybS5YCisgICAgICAgIFJXWCA9IFBlcm0uUiB8IFBlcm0uVyB8IFBlcm0uWAorICAgICAgICB2YWx1ZXMgPSBsaXN0KFBlcm0pICsgW1JXLCBSWCwgV1gsIFJXWCwgUGVybSgwKV0KKyAgICAgICAgZm9yIGkgaW4gdmFsdWVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh+aSwgfmkudmFsdWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCh+aSkudmFsdWUsIH5pLnZhbHVlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKH5pKSwgUGVybSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwofn5pLCBpKQorICAgICAgICBmb3IgaSBpbiBQZXJtOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh+fmksIGkpCisgICAgICAgIE9wZW4gPSBzZWxmLk9wZW4KKyAgICAgICAgc2VsZi5hc3NlcnRJcyhPcGVuLldPICYgfk9wZW4uV08sIE9wZW4uUk8pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoKE9wZW4uV098T3Blbi5DRSkgJiB+T3Blbi5XTywgT3Blbi5DRSkKKworICAgIGRlZiB0ZXN0X3Byb2dyYW1hdGljX2Z1bmN0aW9uX3N0cmluZyhzZWxmKToKKyAgICAgICAgUGVybSA9IEludEZsYWcoJ1Blcm0nLCAnUiBXIFgnKQorICAgICAgICBsc3QgPSBsaXN0KFBlcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxzdCksIGxlbihQZXJtKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oUGVybSksIDMsIFBlcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHN0LCBbUGVybS5SLCBQZXJtLlcsIFBlcm0uWF0pCisgICAgICAgIGZvciBpLCBuIGluIGVudW1lcmF0ZSgnUiBXIFgnLnNwbGl0KCkpOgorICAgICAgICAgICAgdiA9IDE8PGkKKyAgICAgICAgICAgIGUgPSBQZXJtKHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUudmFsdWUsIHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZS52YWx1ZSksIGludCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZSwgdikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5uYW1lLCBuKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlLCBQZXJtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGUpLCBQZXJtKQorCisgICAgZGVmIHRlc3RfcHJvZ3JhbWF0aWNfZnVuY3Rpb25fc3RyaW5nX3dpdGhfc3RhcnQoc2VsZik6CisgICAgICAgIFBlcm0gPSBJbnRGbGFnKCdQZXJtJywgJ1IgVyBYJywgc3RhcnQ9OCkKKyAgICAgICAgbHN0ID0gbGlzdChQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsc3QpLCBsZW4oUGVybSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKFBlcm0pLCAzLCBQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxzdCwgW1Blcm0uUiwgUGVybS5XLCBQZXJtLlhdKQorICAgICAgICBmb3IgaSwgbiBpbiBlbnVtZXJhdGUoJ1IgVyBYJy5zcGxpdCgpKToKKyAgICAgICAgICAgIHYgPSA4PDxpCisgICAgICAgICAgICBlID0gUGVybSh2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLnZhbHVlLCB2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGUudmFsdWUpLCBpbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUsIHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUubmFtZSwgbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZSwgUGVybSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShlKSwgUGVybSkKKworICAgIGRlZiB0ZXN0X3Byb2dyYW1hdGljX2Z1bmN0aW9uX3N0cmluZ19saXN0KHNlbGYpOgorICAgICAgICBQZXJtID0gSW50RmxhZygnUGVybScsIFsnUicsICdXJywgJ1gnXSkKKyAgICAgICAgbHN0ID0gbGlzdChQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsc3QpLCBsZW4oUGVybSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKFBlcm0pLCAzLCBQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxzdCwgW1Blcm0uUiwgUGVybS5XLCBQZXJtLlhdKQorICAgICAgICBmb3IgaSwgbiBpbiBlbnVtZXJhdGUoJ1IgVyBYJy5zcGxpdCgpKToKKyAgICAgICAgICAgIHYgPSAxPDxpCisgICAgICAgICAgICBlID0gUGVybSh2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLnZhbHVlLCB2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGUudmFsdWUpLCBpbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUsIHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUubmFtZSwgbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZSwgUGVybSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShlKSwgUGVybSkKKworICAgIGRlZiB0ZXN0X3Byb2dyYW1hdGljX2Z1bmN0aW9uX2l0ZXJhYmxlKHNlbGYpOgorICAgICAgICBQZXJtID0gSW50RmxhZygnUGVybScsICgoJ1InLCAyKSwgKCdXJywgOCksICgnWCcsIDMyKSkpCisgICAgICAgIGxzdCA9IGxpc3QoUGVybSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obHN0KSwgbGVuKFBlcm0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihQZXJtKSwgMywgUGVybSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsc3QsIFtQZXJtLlIsIFBlcm0uVywgUGVybS5YXSkKKyAgICAgICAgZm9yIGksIG4gaW4gZW51bWVyYXRlKCdSIFcgWCcuc3BsaXQoKSk6CisgICAgICAgICAgICB2ID0gMTw8KDIqaSsxKQorICAgICAgICAgICAgZSA9IFBlcm0odikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS52YWx1ZSwgdikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShlLnZhbHVlKSwgaW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLCB2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLm5hbWUsIG4pCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGUsIFBlcm0pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZSksIFBlcm0pCisKKyAgICBkZWYgdGVzdF9wcm9ncmFtYXRpY19mdW5jdGlvbl9mcm9tX2RpY3Qoc2VsZik6CisgICAgICAgIFBlcm0gPSBJbnRGbGFnKCdQZXJtJywgT3JkZXJlZERpY3QoKCgnUicsIDIpLCAoJ1cnLCA4KSwgKCdYJywgMzIpKSkpCisgICAgICAgIGxzdCA9IGxpc3QoUGVybSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obHN0KSwgbGVuKFBlcm0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihQZXJtKSwgMywgUGVybSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsc3QsIFtQZXJtLlIsIFBlcm0uVywgUGVybS5YXSkKKyAgICAgICAgZm9yIGksIG4gaW4gZW51bWVyYXRlKCdSIFcgWCcuc3BsaXQoKSk6CisgICAgICAgICAgICB2ID0gMTw8KDIqaSsxKQorICAgICAgICAgICAgZSA9IFBlcm0odikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS52YWx1ZSwgdikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShlLnZhbHVlKSwgaW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLCB2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLm5hbWUsIG4pCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGUsIFBlcm0pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZSksIFBlcm0pCisKKworICAgIGRlZiB0ZXN0X2NvbnRhaW5tZW50KHNlbGYpOgorICAgICAgICBQZXJtID0gc2VsZi5QZXJtCisgICAgICAgIFIsIFcsIFggPSBQZXJtCisgICAgICAgIFJXID0gUiB8IFcKKyAgICAgICAgUlggPSBSIHwgWAorICAgICAgICBXWCA9IFcgfCBYCisgICAgICAgIFJXWCA9IFIgfCBXIHwgWAorICAgICAgICBzZWxmLmFzc2VydFRydWUoUiBpbiBSVykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFIgaW4gUlgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShSIGluIFJXWCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFcgaW4gUlcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShXIGluIFdYKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoVyBpbiBSV1gpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShYIGluIFJYKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoWCBpbiBXWCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFggaW4gUldYKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKFIgaW4gV1gpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoVyBpbiBSWCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShYIGluIFJXKQorCisgICAgZGVmIHRlc3RfYm9vbChzZWxmKToKKyAgICAgICAgUGVybSA9IHNlbGYuUGVybQorICAgICAgICBmb3IgZiBpbiBQZXJtOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGYpCisgICAgICAgIE9wZW4gPSBzZWxmLk9wZW4KKyAgICAgICAgZm9yIGYgaW4gT3BlbjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYm9vbChmLnZhbHVlKSwgYm9vbChmKSkKIAogY2xhc3MgVGVzdFVuaXF1ZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTE3MzksNSArMjQ2Niw0NyBAQAogICAgICAgICBpZiBmYWlsZWQ6CiAgICAgICAgICAgICBzZWxmLmZhaWwoInJlc3VsdCBkb2VzIG5vdCBlcXVhbCBleHBlY3RlZCwgc2VlIHByaW50IGFib3ZlIikKIAorCitjbGFzcyBNaXNjVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKKyAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgZW51bSkKKworCisjIFRoZXNlIGFyZSB1bm9yZGVyZWQgaGVyZSBvbiBwdXJwb3NlIHRvIGVuc3VyZSB0aGF0IGRlY2xhcmF0aW9uIG9yZGVyCisjIG1ha2VzIG5vIGRpZmZlcmVuY2UuCitDT05WRVJUX1RFU1RfTkFNRV9EID0gNQorQ09OVkVSVF9URVNUX05BTUVfQyA9IDUKK0NPTlZFUlRfVEVTVF9OQU1FX0IgPSA1CitDT05WRVJUX1RFU1RfTkFNRV9BID0gNSAgIyBUaGlzIG9uZSBzaG91bGQgc29ydCBmaXJzdC4KK0NPTlZFUlRfVEVTVF9OQU1FX0UgPSA1CitDT05WRVJUX1RFU1RfTkFNRV9GID0gNQorCitjbGFzcyBUZXN0SW50RW51bUNvbnZlcnQodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2NvbnZlcnRfdmFsdWVfbG9va3VwX3ByaW9yaXR5KHNlbGYpOgorICAgICAgICB0ZXN0X3R5cGUgPSBlbnVtLkludEVudW0uX2NvbnZlcnQoCisgICAgICAgICAgICAgICAgJ1VuaXR0ZXN0Q29udmVydCcsICd0ZXN0LnRlc3RfZW51bScsCisgICAgICAgICAgICAgICAgZmlsdGVyPWxhbWJkYSB4OiB4LnN0YXJ0c3dpdGgoJ0NPTlZFUlRfVEVTVF8nKSkKKyAgICAgICAgIyBXZSBkb24ndCB3YW50IHRoZSByZXZlcnNlIGxvb2t1cCB2YWx1ZSB0byB2YXJ5IHdoZW4gdGhlcmUgYXJlCisgICAgICAgICMgbXVsdGlwbGUgcG9zc2libGUgbmFtZXMgZm9yIGEgZ2l2ZW4gdmFsdWUuICBJdCBzaG91bGQgYWx3YXlzCisgICAgICAgICMgcmVwb3J0IHRoZSBmaXJzdCBsZXhpZ3JhcGhpY2FsIG5hbWUgaW4gdGhhdCBjYXNlLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RfdHlwZSg1KS5uYW1lLCAnQ09OVkVSVF9URVNUX05BTUVfQScpCisKKyAgICBkZWYgdGVzdF9jb252ZXJ0KHNlbGYpOgorICAgICAgICB0ZXN0X3R5cGUgPSBlbnVtLkludEVudW0uX2NvbnZlcnQoCisgICAgICAgICAgICAgICAgJ1VuaXR0ZXN0Q29udmVydCcsICd0ZXN0LnRlc3RfZW51bScsCisgICAgICAgICAgICAgICAgZmlsdGVyPWxhbWJkYSB4OiB4LnN0YXJ0c3dpdGgoJ0NPTlZFUlRfVEVTVF8nKSkKKyAgICAgICAgIyBFbnN1cmUgdGhhdCB0ZXN0X3R5cGUgaGFzIGFsbCBvZiB0aGUgZGVzaXJlZCBuYW1lcyBhbmQgdmFsdWVzLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RfdHlwZS5DT05WRVJUX1RFU1RfTkFNRV9GLAorICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfdHlwZS5DT05WRVJUX1RFU1RfTkFNRV9BKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RfdHlwZS5DT05WRVJUX1RFU1RfTkFNRV9CLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RfdHlwZS5DT05WRVJUX1RFU1RfTkFNRV9DLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RfdHlwZS5DT05WRVJUX1RFU1RfTkFNRV9ELCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RfdHlwZS5DT05WRVJUX1RFU1RfTkFNRV9FLCA1KQorICAgICAgICAjIEVuc3VyZSB0aGF0IHRlc3RfdHlwZSBvbmx5IHBpY2tlZCB1cCBuYW1lcyBtYXRjaGluZyB0aGUgZmlsdGVyLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtuYW1lIGZvciBuYW1lIGluIGRpcih0ZXN0X3R5cGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5hbWVbMDoyXSBub3QgaW4gKCdDTycsICdfXycpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbXSwgbXNnPSdOYW1lcyBvdGhlciB0aGFuIENPTlZFUlRfVEVTVF8qIGZvdW5kLicpCisKKwogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW51bWVyYXRlLnB5IGIvTGliL3Rlc3QvdGVzdF9lbnVtZXJhdGUucHkKaW5kZXggMjYzMGNmMi4uZTQ1NWFkZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lbnVtZXJhdGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9lbnVtZXJhdGUucHkKQEAgLTIyMyw3ICsyMjMsNyBAQAogICAgIGRlZiB0ZXN0X29iam1ldGhvZHMoc2VsZik6CiAgICAgICAgICMgT2JqZWN0cyBtdXN0IGhhdmUgX19sZW5fXygpIGFuZCBfX2dldGl0ZW1fXygpIGltcGxlbWVudGVkLgogICAgICAgICBjbGFzcyBOb0xlbihvYmplY3QpOgotICAgICAgICAgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYpOiByZXR1cm4gMQorICAgICAgICAgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGkpOiByZXR1cm4gMQogICAgICAgICBubCA9IE5vTGVuKCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCByZXZlcnNlZCwgbmwpCiAKQEAgLTIzMiw2ICsyMzIsMTMgQEAKICAgICAgICAgbmdpID0gTm9HZXRJdGVtKCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCByZXZlcnNlZCwgbmdpKQogCisgICAgICAgIGNsYXNzIEJsb2NrZWQob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBpKTogcmV0dXJuIDEKKyAgICAgICAgICAgIGRlZiBfX2xlbl9fKHNlbGYpOiByZXR1cm4gMgorICAgICAgICAgICAgX19yZXZlcnNlZF9fID0gTm9uZQorICAgICAgICBiID0gQmxvY2tlZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcmV2ZXJzZWQsIGIpCisKICAgICBkZWYgdGVzdF9waWNrbGUoc2VsZik6CiAgICAgICAgIGZvciBkYXRhIGluICdhYmMnLCByYW5nZSg1KSwgdHVwbGUoZW51bWVyYXRlKCdhYmMnKSksIHJhbmdlKDEsMTcsNSk6CiAgICAgICAgICAgICBzZWxmLmNoZWNrX3BpY2tsZShyZXZlcnNlZChkYXRhKSwgbGlzdChkYXRhKVs6Oi0xXSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZXBvbGwucHkgYi9MaWIvdGVzdC90ZXN0X2Vwb2xsLnB5CmluZGV4IGE3MzU5ZTkuLmE3YWZmOGEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZXBvbGwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9lcG9sbC5weQpAQCAtMjgsNyArMjgsNiBAQAogaW1wb3J0IHRpbWUKIGltcG9ydCB1bml0dGVzdAogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGlmIG5vdCBoYXNhdHRyKHNlbGVjdCwgImVwb2xsIik6CiAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoInRlc3Qgd29ya3Mgb25seSBvbiBMaW51eCAyLjYiKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BlcDMxNTEucHkgYi9MaWIvdGVzdC90ZXN0X2V4Y2VwdGlvbl9oaWVyYXJjaHkucHkKc2ltaWxhcml0eSBpbmRleCA5OSUKcmVuYW1lIGZyb20gTGliL3Rlc3QvdGVzdF9wZXAzMTUxLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2V4Y2VwdGlvbl9oaWVyYXJjaHkucHkKaW5kZXggN2IwZDQ2NS4uODY0OTU5NiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wZXAzMTUxLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZXhjZXB0aW9uX2hpZXJhcmNoeS5weQpAQCAtMiw3ICsyLDYgQEAKIGltcG9ydCBvcwogaW1wb3J0IHNlbGVjdAogaW1wb3J0IHNvY2tldAotaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgZXJybm8KIGZyb20gZXJybm8gaW1wb3J0IEVFWElTVApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9leGNlcHRpb25zLnB5IGIvTGliL3Rlc3QvdGVzdF9leGNlcHRpb25zLnB5CmluZGV4IDk2YzNhNDguLjQ4Mzc5MjIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZXhjZXB0aW9ucy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2V4Y2VwdGlvbnMucHkKQEAgLTExMDksNyArMTEwOSw2IEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIG1zZyk6CiAgICAgICAgICAgICBJbXBvcnRFcnJvcihpbnZhbGlkPSdrZXl3b3JkJykKIAotICAgICAgICBtc2cgPSAiJ2ludmFsaWR8YW5vdGhlcicgaXMgYW4gaW52YWxpZCBrZXl3b3JkIGFyZ3VtZW50IGZvciB0aGlzIGZ1bmN0aW9uIgogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBtc2cpOgogICAgICAgICAgICAgSW1wb3J0RXJyb3IoJ3Rlc3QnLCBpbnZhbGlkPSdrZXl3b3JkJywgYW5vdGhlcj1UcnVlKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2V4dGNhbGwucHkgYi9MaWIvdGVzdC90ZXN0X2V4dGNhbGwucHkKaW5kZXggOWNiMGQzOC4uMDQzZGYwMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9leHRjYWxsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZXh0Y2FsbC5weQpAQCAtMjM4LDYgKzIzOCwxMSBAQAogICAgICAgLi4uCiAgICAgVHlwZUVycm9yOiBoKCkgYXJndW1lbnQgYWZ0ZXIgKiBtdXN0IGJlIGFuIGl0ZXJhYmxlLCBub3QgZnVuY3Rpb24KIAorICAgID4+PiBoKCpbMV0sICpoKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgIFR5cGVFcnJvcjogaCgpIGFyZ3VtZW50IGFmdGVyICogbXVzdCBiZSBhbiBpdGVyYWJsZSwgbm90IGZ1bmN0aW9uCisKICAgICA+Pj4gZGlyKCpoKQogICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgIC4uLgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mYXVsdGhhbmRsZXIucHkgYi9MaWIvdGVzdC90ZXN0X2ZhdWx0aGFuZGxlci5weQppbmRleCAxNTYyZWVjLi5iZGQ4ZDFhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ZhdWx0aGFuZGxlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ZhdWx0aGFuZGxlci5weQpAQCAtNyw3ICs3LDcgQEAKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBzY3JpcHRfaGVscGVyCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgc2NyaXB0X2hlbHBlciwgaXNfYW5kcm9pZCwgcmVxdWlyZXNfYW5kcm9pZF9sZXZlbAogaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGV4dHdyYXAgaW1wb3J0IGRlZGVudApAQCAtMjMsNiArMjMsNyBAQAogICAgIF90ZXN0Y2FwaSA9IE5vbmUKIAogVElNRU9VVCA9IDAuNQorTVNfV0lORE9XUyA9IChvcy5uYW1lID09ICdudCcpCiAKIGRlZiBleHBlY3RlZF90cmFjZWJhY2sobGluZW5vMSwgbGluZW5vMiwgaGVhZGVyLCBtaW5fY291bnQ9MSk6CiAgICAgcmVnZXggPSBoZWFkZXIKQEAgLTQxLDYgKzQyLDEwIEBACiAgICAgZmluYWxseToKICAgICAgICAgc3VwcG9ydC51bmxpbmsoZmlsZW5hbWUpCiAKK2RlZiByZXF1aXJlc19yYWlzZSh0ZXN0KToKKyAgICByZXR1cm4gKHRlc3QgaWYgbm90IGlzX2FuZHJvaWQgZWxzZQorICAgICAgICAgICAgICAgICAgICByZXF1aXJlc19hbmRyb2lkX2xldmVsKDI0LCAncmFpc2UoKSBpcyBidWdneScpKHRlc3QpKQorCiBjbGFzcyBGYXVsdEhhbmRsZXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIGdldF9vdXRwdXQoc2VsZiwgY29kZSwgZmlsZW5hbWU9Tm9uZSwgZmQ9Tm9uZSk6CiAgICAgICAgICIiIgpAQCAtNTgsOCArNjMsOSBAQAogICAgICAgICAgICAgcGFzc19mZHMuYXBwZW5kKGZkKQogICAgICAgICB3aXRoIHN1cHBvcnQuU3VwcHJlc3NDcmFzaFJlcG9ydCgpOgogICAgICAgICAgICAgcHJvY2VzcyA9IHNjcmlwdF9oZWxwZXIuc3Bhd25fcHl0aG9uKCctYycsIGNvZGUsIHBhc3NfZmRzPXBhc3NfZmRzKQotICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHByb2Nlc3MuY29tbXVuaWNhdGUoKQotICAgICAgICBleGl0Y29kZSA9IHByb2Nlc3Mud2FpdCgpCisgICAgICAgICAgICB3aXRoIHByb2Nlc3M6CisgICAgICAgICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwcm9jZXNzLmNvbW11bmljYXRlKCkKKyAgICAgICAgICAgICAgICBleGl0Y29kZSA9IHByb2Nlc3Mud2FpdCgpCiAgICAgICAgIG91dHB1dCA9IHN1cHBvcnQuc3RyaXBfcHl0aG9uX3N0ZGVycihzdGRvdXQpCiAgICAgICAgIG91dHB1dCA9IG91dHB1dC5kZWNvZGUoJ2FzY2lpJywgJ2JhY2tzbGFzaHJlcGxhY2UnKQogICAgICAgICBpZiBmaWxlbmFtZToKQEAgLTczLDE0ICs3OSwxMSBAQAogICAgICAgICAgICAgd2l0aCBvcGVuKGZkLCAicmIiLCBjbG9zZWZkPUZhbHNlKSBhcyBmcDoKICAgICAgICAgICAgICAgICBvdXRwdXQgPSBmcC5yZWFkKCkKICAgICAgICAgICAgIG91dHB1dCA9IG91dHB1dC5kZWNvZGUoJ2FzY2lpJywgJ2JhY2tzbGFzaHJlcGxhY2UnKQotICAgICAgICBvdXRwdXQgPSByZS5zdWIoJ0N1cnJlbnQgdGhyZWFkIDB4WzAtOWEtZl0rJywKLSAgICAgICAgICAgICAgICAgICAgICAgICdDdXJyZW50IHRocmVhZCBYWFgnLAotICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0KQogICAgICAgICByZXR1cm4gb3V0cHV0LnNwbGl0bGluZXMoKSwgZXhpdGNvZGUKIAotICAgIGRlZiBjaGVja19mYXRhbF9lcnJvcihzZWxmLCBjb2RlLCBsaW5lX251bWJlciwgbmFtZV9yZWdleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWU9Tm9uZSwgYWxsX3RocmVhZHM9VHJ1ZSwgb3RoZXJfcmVnZXg9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZmQ9Tm9uZSk6CisgICAgZGVmIGNoZWNrX2Vycm9yKHNlbGYsIGNvZGUsIGxpbmVfbnVtYmVyLCBmYXRhbF9lcnJvciwgKiwKKyAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWU9Tm9uZSwgYWxsX3RocmVhZHM9VHJ1ZSwgb3RoZXJfcmVnZXg9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgZmQ9Tm9uZSwga25vd19jdXJyZW50X3RocmVhZD1UcnVlKToKICAgICAgICAgIiIiCiAgICAgICAgIENoZWNrIHRoYXQgdGhlIGZhdWx0IGhhbmRsZXIgZm9yIGZhdGFsIGVycm9ycyBpcyBlbmFibGVkIGFuZCBjaGVjayB0aGUKICAgICAgICAgdHJhY2ViYWNrIGZyb20gdGhlIGNoaWxkIHByb2Nlc3Mgb3V0cHV0LgpAQCAtODgsMTkgKzkxLDIyIEBACiAgICAgICAgIFJhaXNlIGFuIGVycm9yIGlmIHRoZSBvdXRwdXQgZG9lc24ndCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LgogICAgICAgICAiIiIKICAgICAgICAgaWYgYWxsX3RocmVhZHM6Ci0gICAgICAgICAgICBoZWFkZXIgPSAnQ3VycmVudCB0aHJlYWQgWFhYIChtb3N0IHJlY2VudCBjYWxsIGZpcnN0KScKKyAgICAgICAgICAgIGlmIGtub3dfY3VycmVudF90aHJlYWQ6CisgICAgICAgICAgICAgICAgaGVhZGVyID0gJ0N1cnJlbnQgdGhyZWFkIDB4WzAtOWEtZl0rJworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBoZWFkZXIgPSAnVGhyZWFkIDB4WzAtOWEtZl0rJwogICAgICAgICBlbHNlOgotICAgICAgICAgICAgaGVhZGVyID0gJ1N0YWNrIChtb3N0IHJlY2VudCBjYWxsIGZpcnN0KScKLSAgICAgICAgcmVnZXggPSAiIiIKLSAgICAgICAgICAgIF5GYXRhbCBQeXRob24gZXJyb3I6IHtuYW1lfQorICAgICAgICAgICAgaGVhZGVyID0gJ1N0YWNrJworICAgICAgICByZWdleCA9IHIiIiIKKyAgICAgICAgICAgIF57ZmF0YWxfZXJyb3J9CiAKLSAgICAgICAgICAgIHtoZWFkZXJ9OgorICAgICAgICAgICAge2hlYWRlcn0gXChtb3N0IHJlY2VudCBjYWxsIGZpcnN0XCk6CiAgICAgICAgICAgICAgIEZpbGUgIjxzdHJpbmc+IiwgbGluZSB7bGluZW5vfSBpbiA8bW9kdWxlPgogICAgICAgICAgICAgIiIiCiAgICAgICAgIHJlZ2V4ID0gZGVkZW50KHJlZ2V4LmZvcm1hdCgKICAgICAgICAgICAgIGxpbmVubz1saW5lX251bWJlciwKLSAgICAgICAgICAgIG5hbWU9bmFtZV9yZWdleCwKLSAgICAgICAgICAgIGhlYWRlcj1yZS5lc2NhcGUoaGVhZGVyKSkpLnN0cmlwKCkKKyAgICAgICAgICAgIGZhdGFsX2Vycm9yPWZhdGFsX2Vycm9yLAorICAgICAgICAgICAgaGVhZGVyPWhlYWRlcikpLnN0cmlwKCkKICAgICAgICAgaWYgb3RoZXJfcmVnZXg6CiAgICAgICAgICAgICByZWdleCArPSAnfCcgKyBvdGhlcl9yZWdleAogICAgICAgICBvdXRwdXQsIGV4aXRjb2RlID0gc2VsZi5nZXRfb3V0cHV0KGNvZGUsIGZpbGVuYW1lPWZpbGVuYW1lLCBmZD1mZCkKQEAgLTEwOCwxOCArMTE0LDM4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgob3V0cHV0LCByZWdleCkKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChleGl0Y29kZSwgMCkKIAorICAgIGRlZiBjaGVja19mYXRhbF9lcnJvcihzZWxmLCBjb2RlLCBsaW5lX251bWJlciwgbmFtZV9yZWdleCwgKiprdyk6CisgICAgICAgIGZhdGFsX2Vycm9yID0gJ0ZhdGFsIFB5dGhvbiBlcnJvcjogJXMnICUgbmFtZV9yZWdleAorICAgICAgICBzZWxmLmNoZWNrX2Vycm9yKGNvZGUsIGxpbmVfbnVtYmVyLCBmYXRhbF9lcnJvciwgKiprdykKKworICAgIGRlZiBjaGVja193aW5kb3dzX2V4Y2VwdGlvbihzZWxmLCBjb2RlLCBsaW5lX251bWJlciwgbmFtZV9yZWdleCwgKiprdyk6CisgICAgICAgIGZhdGFsX2Vycm9yID0gJ1dpbmRvd3MgZmF0YWwgZXhjZXB0aW9uOiAlcycgJSBuYW1lX3JlZ2V4CisgICAgICAgIHNlbGYuY2hlY2tfZXJyb3IoY29kZSwgbGluZV9udW1iZXIsIGZhdGFsX2Vycm9yLCAqKmt3KQorCiAgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnYWl4JyksCiAgICAgICAgICAgICAgICAgICAgICAidGhlIGZpcnN0IHBhZ2Ugb2YgbWVtb3J5IGlzIGEgbWFwcGVkIHJlYWQtb25seSBvbiBBSVgiKQogICAgIGRlZiB0ZXN0X3JlYWRfbnVsbChzZWxmKToKLSAgICAgICAgc2VsZi5jaGVja19mYXRhbF9lcnJvcigiIiIKLSAgICAgICAgICAgIGltcG9ydCBmYXVsdGhhbmRsZXIKLSAgICAgICAgICAgIGZhdWx0aGFuZGxlci5lbmFibGUoKQotICAgICAgICAgICAgZmF1bHRoYW5kbGVyLl9yZWFkX251bGwoKQotICAgICAgICAgICAgIiIiLAotICAgICAgICAgICAgMywKLSAgICAgICAgICAgICMgSXNzdWUgIzEyNzAwOiBSZWFkIE5VTEwgcmFpc2VzIFNJR0lMTCBvbiBNYWMgT1MgWCBMaW9uCi0gICAgICAgICAgICAnKD86U2VnbWVudGF0aW9uIGZhdWx0fEJ1cyBlcnJvcnxJbGxlZ2FsIGluc3RydWN0aW9uKScpCisgICAgICAgIGlmIG5vdCBNU19XSU5ET1dTOgorICAgICAgICAgICAgc2VsZi5jaGVja19mYXRhbF9lcnJvcigiIiIKKyAgICAgICAgICAgICAgICBpbXBvcnQgZmF1bHRoYW5kbGVyCisgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyLmVuYWJsZSgpCisgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyLl9yZWFkX251bGwoKQorICAgICAgICAgICAgICAgICIiIiwKKyAgICAgICAgICAgICAgICAzLAorICAgICAgICAgICAgICAgICMgSXNzdWUgIzEyNzAwOiBSZWFkIE5VTEwgcmFpc2VzIFNJR0lMTCBvbiBNYWMgT1MgWCBMaW9uCisgICAgICAgICAgICAgICAgJyg/OlNlZ21lbnRhdGlvbiBmYXVsdCcKKyAgICAgICAgICAgICAgICAgICAgJ3xCdXMgZXJyb3InCisgICAgICAgICAgICAgICAgICAgICd8SWxsZWdhbCBpbnN0cnVjdGlvbiknKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5jaGVja193aW5kb3dzX2V4Y2VwdGlvbigiIiIKKyAgICAgICAgICAgICAgICBpbXBvcnQgZmF1bHRoYW5kbGVyCisgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyLmVuYWJsZSgpCisgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyLl9yZWFkX251bGwoKQorICAgICAgICAgICAgICAgICIiIiwKKyAgICAgICAgICAgICAgICAzLAorICAgICAgICAgICAgICAgICdhY2Nlc3MgdmlvbGF0aW9uJykKIAorICAgIEByZXF1aXJlc19yYWlzZQogICAgIGRlZiB0ZXN0X3NpZ3NlZ3Yoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tfZmF0YWxfZXJyb3IoIiIiCiAgICAgICAgICAgICBpbXBvcnQgZmF1bHRoYW5kbGVyCkBAIC0xMjksNiArMTU1LDE3IEBACiAgICAgICAgICAgICAzLAogICAgICAgICAgICAgJ1NlZ21lbnRhdGlvbiBmYXVsdCcpCiAKKyAgICBAdW5pdHRlc3Quc2tpcElmKG5vdCBIQVZFX1RIUkVBRFMsICduZWVkIHRocmVhZHMnKQorICAgIGRlZiB0ZXN0X2ZhdGFsX2Vycm9yX2NfdGhyZWFkKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2ZhdGFsX2Vycm9yKCIiIgorICAgICAgICAgICAgaW1wb3J0IGZhdWx0aGFuZGxlcgorICAgICAgICAgICAgZmF1bHRoYW5kbGVyLmVuYWJsZSgpCisgICAgICAgICAgICBmYXVsdGhhbmRsZXIuX2ZhdGFsX2Vycm9yX2NfdGhyZWFkKCkKKyAgICAgICAgICAgICIiIiwKKyAgICAgICAgICAgIDMsCisgICAgICAgICAgICAnaW4gbmV3IHRocmVhZCcsCisgICAgICAgICAgICBrbm93X2N1cnJlbnRfdGhyZWFkPUZhbHNlKQorCiAgICAgZGVmIHRlc3Rfc2lnYWJydChzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19mYXRhbF9lcnJvcigiIiIKICAgICAgICAgICAgIGltcG9ydCBmYXVsdGhhbmRsZXIKQEAgLTE1MSw2ICsxODgsNyBAQAogCiAgICAgQHVuaXR0ZXN0LnNraXBJZihfdGVzdGNhcGkgaXMgTm9uZSwgJ25lZWQgX3Rlc3RjYXBpJykKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgJ1NJR0JVUycpLCAnbmVlZCBzaWduYWwuU0lHQlVTJykKKyAgICBAcmVxdWlyZXNfcmFpc2UKICAgICBkZWYgdGVzdF9zaWdidXMoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tfZmF0YWxfZXJyb3IoIiIiCiAgICAgICAgICAgICBpbXBvcnQgX3Rlc3RjYXBpCkBAIC0xNjUsNiArMjAzLDcgQEAKIAogICAgIEB1bml0dGVzdC5za2lwSWYoX3Rlc3RjYXBpIGlzIE5vbmUsICduZWVkIF90ZXN0Y2FwaScpCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdTSUdJTEwnKSwgJ25lZWQgc2lnbmFsLlNJR0lMTCcpCisgICAgQHJlcXVpcmVzX3JhaXNlCiAgICAgZGVmIHRlc3Rfc2lnaWxsKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX2ZhdGFsX2Vycm9yKCIiIgogICAgICAgICAgICAgaW1wb3J0IF90ZXN0Y2FwaQpAQCAtMjA4LDYgKzI0Nyw3IEBACiAgICAgICAgICAgICAnKD86U2VnbWVudGF0aW9uIGZhdWx0fEJ1cyBlcnJvciknLAogICAgICAgICAgICAgb3RoZXJfcmVnZXg9J3VuYWJsZSB0byByYWlzZSBhIHN0YWNrIG92ZXJmbG93JykKIAorICAgIEByZXF1aXJlc19yYWlzZQogICAgIGRlZiB0ZXN0X2dpbF9yZWxlYXNlZChzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19mYXRhbF9lcnJvcigiIiIKICAgICAgICAgICAgIGltcG9ydCBmYXVsdGhhbmRsZXIKQEAgLTIxNyw2ICsyNTcsNyBAQAogICAgICAgICAgICAgMywKICAgICAgICAgICAgICdTZWdtZW50YXRpb24gZmF1bHQnKQogCisgICAgQHJlcXVpcmVzX3JhaXNlCiAgICAgZGVmIHRlc3RfZW5hYmxlX2ZpbGUoc2VsZik6CiAgICAgICAgIHdpdGggdGVtcG9yYXJ5X2ZpbGVuYW1lKCkgYXMgZmlsZW5hbWU6CiAgICAgICAgICAgICBzZWxmLmNoZWNrX2ZhdGFsX2Vycm9yKCIiIgpAQCAtMjMxLDYgKzI3Miw3IEBACiAKICAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLAogICAgICAgICAgICAgICAgICAgICAgInN1YnByb2Nlc3MgZG9lc24ndCBzdXBwb3J0IHBhc3NfZmRzIG9uIFdpbmRvd3MiKQorICAgIEByZXF1aXJlc19yYWlzZQogICAgIGRlZiB0ZXN0X2VuYWJsZV9mZChzZWxmKToKICAgICAgICAgd2l0aCB0ZW1wZmlsZS5UZW1wb3JhcnlGaWxlKCd3YisnKSBhcyBmcDoKICAgICAgICAgICAgIGZkID0gZnAuZmlsZW5vKCkKQEAgLTI0NCw2ICsyODYsNyBAQAogICAgICAgICAgICAgICAgICdTZWdtZW50YXRpb24gZmF1bHQnLAogICAgICAgICAgICAgICAgIGZkPWZkKQogCisgICAgQHJlcXVpcmVzX3JhaXNlCiAgICAgZGVmIHRlc3RfZW5hYmxlX3NpbmdsZV90aHJlYWQoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tfZmF0YWxfZXJyb3IoIiIiCiAgICAgICAgICAgICBpbXBvcnQgZmF1bHRoYW5kbGVyCkBAIC0yNTQsNiArMjk3LDcgQEAKICAgICAgICAgICAgICdTZWdtZW50YXRpb24gZmF1bHQnLAogICAgICAgICAgICAgYWxsX3RocmVhZHM9RmFsc2UpCiAKKyAgICBAcmVxdWlyZXNfcmFpc2UKICAgICBkZWYgdGVzdF9kaXNhYmxlKHNlbGYpOgogICAgICAgICBjb2RlID0gIiIiCiAgICAgICAgICAgICBpbXBvcnQgZmF1bHRoYW5kbGVyCkBAIC00NTgsMTQgKzUwMiwxNCBAQAogICAgICAgICAgICAgbGluZW5vID0gOAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgbGluZW5vID0gMTAKLSAgICAgICAgcmVnZXggPSAiIiIKKyAgICAgICAgcmVnZXggPSByIiIiCiAgICAgICAgICAgICBeVGhyZWFkIDB4WzAtOWEtZl0rIFwobW9zdCByZWNlbnQgY2FsbCBmaXJzdFwpOgogICAgICAgICAgICAgKD86ICBGaWxlICIuKnRocmVhZGluZy5weSIsIGxpbmUgWzAtOV0rIGluIFtfYS16XSsKICAgICAgICAgICAgICl7ezEsM319ICBGaWxlICI8c3RyaW5nPiIsIGxpbmUgMjMgaW4gcnVuCiAgICAgICAgICAgICAgIEZpbGUgIi4qdGhyZWFkaW5nLnB5IiwgbGluZSBbMC05XSsgaW4gX2Jvb3RzdHJhcF9pbm5lcgogICAgICAgICAgICAgICBGaWxlICIuKnRocmVhZGluZy5weSIsIGxpbmUgWzAtOV0rIGluIF9ib290c3RyYXAKIAotICAgICAgICAgICAgQ3VycmVudCB0aHJlYWQgWFhYIFwobW9zdCByZWNlbnQgY2FsbCBmaXJzdFwpOgorICAgICAgICAgICAgQ3VycmVudCB0aHJlYWQgMHhbMC05YS1mXSsgXChtb3N0IHJlY2VudCBjYWxsIGZpcnN0XCk6CiAgICAgICAgICAgICAgIEZpbGUgIjxzdHJpbmc+IiwgbGluZSB7bGluZW5vfSBpbiBkdW1wCiAgICAgICAgICAgICAgIEZpbGUgIjxzdHJpbmc+IiwgbGluZSAyOCBpbiA8bW9kdWxlPiQKICAgICAgICAgICAgICIiIgpAQCAtNjM3LDkgKzY4MSw5IEBACiAgICAgICAgIHRyYWNlID0gJ1xuJy5qb2luKHRyYWNlKQogICAgICAgICBpZiBub3QgdW5yZWdpc3RlcjoKICAgICAgICAgICAgIGlmIGFsbF90aHJlYWRzOgotICAgICAgICAgICAgICAgIHJlZ2V4ID0gJ0N1cnJlbnQgdGhyZWFkIFhYWCBcKG1vc3QgcmVjZW50IGNhbGwgZmlyc3RcKTpcbicKKyAgICAgICAgICAgICAgICByZWdleCA9IHInQ3VycmVudCB0aHJlYWQgMHhbMC05YS1mXSsgXChtb3N0IHJlY2VudCBjYWxsIGZpcnN0XCk6XG4nCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJlZ2V4ID0gJ1N0YWNrIFwobW9zdCByZWNlbnQgY2FsbCBmaXJzdFwpOlxuJworICAgICAgICAgICAgICAgIHJlZ2V4ID0gcidTdGFjayBcKG1vc3QgcmVjZW50IGNhbGwgZmlyc3RcKTpcbicKICAgICAgICAgICAgIHJlZ2V4ID0gZXhwZWN0ZWRfdHJhY2ViYWNrKDE0LCAzMiwgcmVnZXgpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHRyYWNlLCByZWdleCkKICAgICAgICAgZWxzZToKQEAgLTY5Niw2ICs3NDAsMjIgQEAKICAgICAgICAgICAgIHdpdGggc2VsZi5jaGVja19zdGRlcnJfbm9uZSgpOgogICAgICAgICAgICAgICAgIGZhdWx0aGFuZGxlci5yZWdpc3RlcihzaWduYWwuU0lHVVNSMSkKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKE1TX1dJTkRPV1MsICdzcGVjaWZpYyB0byBXaW5kb3dzJykKKyAgICBkZWYgdGVzdF9yYWlzZV9leGNlcHRpb24oc2VsZik6CisgICAgICAgIGZvciBleGMsIG5hbWUgaW4gKAorICAgICAgICAgICAgKCdFWENFUFRJT05fQUNDRVNTX1ZJT0xBVElPTicsICdhY2Nlc3MgdmlvbGF0aW9uJyksCisgICAgICAgICAgICAoJ0VYQ0VQVElPTl9JTlRfRElWSURFX0JZX1pFUk8nLCAnaW50IGRpdmlkZSBieSB6ZXJvJyksCisgICAgICAgICAgICAoJ0VYQ0VQVElPTl9TVEFDS19PVkVSRkxPVycsICdzdGFjayBvdmVyZmxvdycpLAorICAgICAgICApOgorICAgICAgICAgICAgc2VsZi5jaGVja193aW5kb3dzX2V4Y2VwdGlvbihmIiIiCisgICAgICAgICAgICAgICAgaW1wb3J0IGZhdWx0aGFuZGxlcgorICAgICAgICAgICAgICAgIGZhdWx0aGFuZGxlci5lbmFibGUoKQorICAgICAgICAgICAgICAgIGZhdWx0aGFuZGxlci5fcmFpc2VfZXhjZXB0aW9uKGZhdWx0aGFuZGxlci5fe2V4Y30pCisgICAgICAgICAgICAgICAgIiIiLAorICAgICAgICAgICAgICAgIDMsCisgICAgICAgICAgICAgICAgbmFtZSkKKworCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ZpbGUucHkgYi9MaWIvdGVzdC90ZXN0X2ZpbGUucHkKaW5kZXggNGUzOTJiNy4uNjViZTMwZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9maWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZmlsZS5weQpAQCAtNyw3ICs3LDcgQEAKIGltcG9ydCBpbwogaW1wb3J0IF9weWlvIGFzIHB5aW8KIAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgcnVuX3VuaXR0ZXN0Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBVc2VyTGlzdAogCiBjbGFzcyBBdXRvRmlsZVRlc3RzOgpAQCAtMTM5LDcgKzEzOSw3IEBACiAKICAgICBkZWYgdGVzdE1vZGVTdHJpbmdzKHNlbGYpOgogICAgICAgICAjIGNoZWNrIGludmFsaWQgbW9kZSBzdHJpbmdzCi0gICAgICAgIGZvciBtb2RlIGluICgiIiwgImFVIiwgIndVKyIpOgorICAgICAgICBmb3IgbW9kZSBpbiAoIiIsICJhVSIsICJ3VSsiLCAiVSsiLCAiK1UiLCAiclUrIik6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgZiA9IHNlbGYub3BlbihURVNURk4sIG1vZGUpCiAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZmlsZWlucHV0LnB5IGIvTGliL3Rlc3QvdGVzdF9maWxlaW5wdXQucHkKaW5kZXggNzg0YmM5Mi4uNTY1NjMzZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9maWxlaW5wdXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9maWxlaW5wdXQucHkKQEAgLTIyLDggKzIyLDkgQEAKIGZyb20gaW8gaW1wb3J0IEJ5dGVzSU8sIFN0cmluZ0lPCiBmcm9tIGZpbGVpbnB1dCBpbXBvcnQgRmlsZUlucHV0LCBob29rX2VuY29kZWQKIAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHZlcmJvc2UsIFRFU1RGTiwgcnVuX3VuaXR0ZXN0LCBjaGVja193YXJuaW5ncworZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHZlcmJvc2UsIFRFU1RGTiwgY2hlY2tfd2FybmluZ3MKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCB1bmxpbmsgYXMgc2FmZV91bmxpbmsKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB1bml0dGVzdCBpbXBvcnQgbW9jawogCiAKQEAgLTkyLDcgKzkzLDExIEBACiAgICAgICAgICAgICAgICAgdDIgPSB3cml0ZVRtcCgyLCBbIkxpbmUgJXMgb2YgZmlsZSAyXG4iICUgKGkrMSkgZm9yIGkgaW4gcmFuZ2UoMTApXSkKICAgICAgICAgICAgICAgICB0MyA9IHdyaXRlVG1wKDMsIFsiTGluZSAlcyBvZiBmaWxlIDNcbiIgJSAoaSsxKSBmb3IgaSBpbiByYW5nZSg1KV0pCiAgICAgICAgICAgICAgICAgdDQgPSB3cml0ZVRtcCg0LCBbIkxpbmUgJXMgb2YgZmlsZSA0XG4iICUgKGkrMSkgZm9yIGkgaW4gcmFuZ2UoMSldKQotICAgICAgICAgICAgICAgIHNlbGYuYnVmZmVyX3NpemVfdGVzdCh0MSwgdDIsIHQzLCB0NCwgYnMsIHJvdW5kKQorICAgICAgICAgICAgICAgIGlmIGJzOgorICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYnVmZmVyX3NpemVfdGVzdCh0MSwgdDIsIHQzLCB0NCwgYnMsIHJvdW5kKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYnVmZmVyX3NpemVfdGVzdCh0MSwgdDIsIHQzLCB0NCwgYnMsIHJvdW5kKQogICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICByZW1vdmVfdGVtcGZpbGVzKHQxLCB0MiwgdDMsIHQ0KQogCkBAIC05NDAsNyArOTQ1LDggQEAKIAogICAgIGRlZiB0ZXN0KHNlbGYpOgogICAgICAgICBlbmNvZGluZyA9IG9iamVjdCgpCi0gICAgICAgIHJlc3VsdCA9IGZpbGVpbnB1dC5ob29rX2VuY29kZWQoZW5jb2RpbmcpCisgICAgICAgIGVycm9ycyA9IG9iamVjdCgpCisgICAgICAgIHJlc3VsdCA9IGZpbGVpbnB1dC5ob29rX2VuY29kZWQoZW5jb2RpbmcsIGVycm9ycz1lcnJvcnMpCiAKICAgICAgICAgZmFrZV9vcGVuID0gSW52b2NhdGlvblJlY29yZGVyKCkKICAgICAgICAgb3JpZ2luYWxfb3BlbiA9IGJ1aWx0aW5zLm9wZW4KQEAgLTk1OCw4ICs5NjQsMjYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJcyhhcmdzWzBdLCBmaWxlbmFtZSkKICAgICAgICAgc2VsZi5hc3NlcnRJcyhhcmdzWzFdLCBtb2RlKQogICAgICAgICBzZWxmLmFzc2VydElzKGt3YXJncy5wb3AoJ2VuY29kaW5nJyksIGVuY29kaW5nKQorICAgICAgICBzZWxmLmFzc2VydElzKGt3YXJncy5wb3AoJ2Vycm9ycycpLCBlcnJvcnMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoa3dhcmdzKQogCisgICAgZGVmIHRlc3RfZXJyb3JzKHNlbGYpOgorICAgICAgICB3aXRoIG9wZW4oVEVTVEZOLCAnd2InKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShiJ1x4ODBhYmMnKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2FmZV91bmxpbmssIFRFU1RGTikKKworICAgICAgICBkZWYgY2hlY2soZXJyb3JzLCBleHBlY3RlZF9saW5lcyk6CisgICAgICAgICAgICB3aXRoIEZpbGVJbnB1dChmaWxlcz1URVNURk4sIG1vZGU9J3InLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Blbmhvb2s9aG9va19lbmNvZGVkKCd1dGYtOCcsIGVycm9ycz1lcnJvcnMpKSBhcyBmaToKKyAgICAgICAgICAgICAgICBsaW5lcyA9IGxpc3QoZmkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpbmVzLCBleHBlY3RlZF9saW5lcykKKworICAgICAgICBjaGVjaygnaWdub3JlJywgWydhYmMnXSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRGVjb2RlRXJyb3IpOgorICAgICAgICAgICAgY2hlY2soJ3N0cmljdCcsIFsnYWJjJ10pCisgICAgICAgIGNoZWNrKCdyZXBsYWNlJywgWydcdWZmZmRhYmMnXSkKKyAgICAgICAgY2hlY2soJ2JhY2tzbGFzaHJlcGxhY2UnLCBbJ1xceDgwYWJjJ10pCisKICAgICBkZWYgdGVzdF9tb2RlcyhzZWxmKToKICAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgJ3diJykgYXMgZjoKICAgICAgICAgICAgICMgVVRGLTcgaXMgYSBjb252ZW5pZW50LCBzZWxkb20gdXNlZCBlbmNvZGluZwpAQCAtOTgxLDUgKzEwMDUsMTEgQEAKICAgICAgICAgICAgIGNoZWNrKCdyYicsIFsnQVxuJywgJ0JcclxuJywgJ0NccicsICdEXHUyMGFjJ10pCiAKIAorY2xhc3MgTWlzY1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYWxsKHNlbGYpOgorICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCBmaWxlaW5wdXQpCisKKwogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZmxvYXQucHkgYi9MaWIvdGVzdC90ZXN0X2Zsb2F0LnB5CmluZGV4IGNiMWY2ZGIuLmFjODQ3M2QgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZmxvYXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mbG9hdC5weQpAQCAtMSw2ICsxLDQgQEAKLQogaW1wb3J0IGZyYWN0aW9ucwotaW1wb3J0IG1hdGgKIGltcG9ydCBvcGVyYXRvcgogaW1wb3J0IG9zCiBpbXBvcnQgcmFuZG9tCkBAIC0xMCw2ICs4LDggQEAKIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2Zyb20gdGVzdC50ZXN0X2dyYW1tYXIgaW1wb3J0IChWQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOVkFMSURfVU5ERVJTQ09SRV9MSVRFUkFMUykKIGZyb20gbWF0aCBpbXBvcnQgaXNpbmYsIGlzbmFuLCBjb3B5c2lnbiwgbGRleHAKIAogSU5GID0gZmxvYXQoImluZiIpCkBAIC02MSw2ICs2MSwyNyBAQAogICAgICAgICBmbG9hdChiJy4nICsgYicxJyoxMDAwKQogICAgICAgICBmbG9hdCgnLicgKyAnMScqMTAwMCkKIAorICAgIGRlZiB0ZXN0X3VuZGVyc2NvcmVzKHNlbGYpOgorICAgICAgICBmb3IgbGl0IGluIFZBTElEX1VOREVSU0NPUkVfTElURVJBTFM6CisgICAgICAgICAgICBpZiBub3QgYW55KGNoIGluIGxpdCBmb3IgY2ggaW4gJ2pKeFhvT2JCJyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbG9hdChsaXQpLCBldmFsKGxpdCkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbG9hdChsaXQpLCBmbG9hdChsaXQucmVwbGFjZSgnXycsICcnKSkpCisgICAgICAgIGZvciBsaXQgaW4gSU5WQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTOgorICAgICAgICAgICAgaWYgbGl0IGluICgnMF83JywgJzA5Xzk5Jyk6ICAjIG9jdGFscyBhcmUgbm90IHJlY29nbml6ZWQgaGVyZQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBub3QgYW55KGNoIGluIGxpdCBmb3IgY2ggaW4gJ2pKeFhvT2JCJyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZmxvYXQsIGxpdCkKKyAgICAgICAgIyBBZGRpdGlvbmFsIHRlc3QgY2FzZXM7IG5hbiBhbmQgaW5mIGFyZSBuZXZlciB2YWxpZCBhcyBsaXRlcmFscywKKyAgICAgICAgIyBvbmx5IGluIHRoZSBmbG9hdCgpIGNvbnN0cnVjdG9yLCBidXQgd2UgZG9uJ3QgYWxsb3cgdW5kZXJzY29yZXMKKyAgICAgICAgIyBpbiBvciBhcm91bmQgdGhlbS4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZmxvYXQsICdfTmFOJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZmxvYXQsICdOYV9OJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZmxvYXQsICdJTl9GJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZmxvYXQsICctX0lORicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZsb2F0LCAnLUlORl8nKQorICAgICAgICAjIENoZWNrIHRoYXQgd2UgaGFuZGxlIGJ5dGVzIHZhbHVlcyBjb3JyZWN0bHkuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZsb2F0LCBiJzBfLlx4ZmY5JykKKwogICAgIGRlZiB0ZXN0X25vbl9udW1lcmljX2lucHV0X3R5cGVzKHNlbGYpOgogICAgICAgICAjIFRlc3QgcG9zc2libGUgbm9uLW51bWVyaWMgdHlwZXMgZm9yIHRoZSBhcmd1bWVudCB4LCBpbmNsdWRpbmcKICAgICAgICAgIyBzdWJjbGFzc2VzIG9mIHRoZSBleHBsaWNpdGx5IGRvY3VtZW50ZWQgYWNjZXB0ZWQgdHlwZXMuCkBAIC0xNjIsMTEgKzE4MywxMiBAQAogICAgICAgICAgICAgZGVmIF9fZmxvYXRfXyhzZWxmKToKICAgICAgICAgICAgICAgICByZXR1cm4gZmxvYXQoc3RyKHNlbGYpKSArIDEKIAotICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKGZsb2F0KEZvbzEoKSksIDQyLikKLSAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChmbG9hdChGb28yKCkpLCA0Mi4pCi0gICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoZmxvYXQoRm9vMygyMSkpLCA0Mi4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmxvYXQoRm9vMSgpKSwgNDIuKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZsb2F0KEZvbzIoKSksIDQyLikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZsb2F0KEZvbzMoMjEpKSwgNDIuKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGZsb2F0LCBGb280KDQyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChmbG9hdChGb29TdHIoJzgnKSksIDkuKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZsb2F0KEZvb1N0cignOCcpKSwgOS4pCiAKICAgICAgICAgY2xhc3MgRm9vNToKICAgICAgICAgICAgIGRlZiBfX2Zsb2F0X18oc2VsZik6CkBAIC0xNzcsMTAgKzE5OSwxNCBAQAogICAgICAgICBjbGFzcyBGOgogICAgICAgICAgICAgZGVmIF9fZmxvYXRfXyhzZWxmKToKICAgICAgICAgICAgICAgICByZXR1cm4gT3RoZXJGbG9hdFN1YmNsYXNzKDQyLikKLSAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChmbG9hdChGKCkpLCA0Mi4pCi0gICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShmbG9hdChGKCkpKSwgT3RoZXJGbG9hdFN1YmNsYXNzKQotICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKEZsb2F0U3ViY2xhc3MoRigpKSwgNDIuKQotICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoRmxvYXRTdWJjbGFzcyhGKCkpKSwgRmxvYXRTdWJjbGFzcykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZsb2F0KEYoKSksIDQyLikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZmxvYXQoRigpKSksIGZsb2F0KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmxvYXRTdWJjbGFzcyhGKCkpLCA0Mi4pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKEZsb2F0U3ViY2xhc3MoRigpKSksIEZsb2F0U3ViY2xhc3MpCiAKICAgICBkZWYgdGVzdF9pc19pbnRlZ2VyKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCgxLjEpLmlzX2ludGVnZXIoKSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZm5tYXRjaC5weSBiL0xpYi90ZXN0L3Rlc3RfZm5tYXRjaC5weQppbmRleCBmYTM3ZjkwLi5mYjc0MjQ2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ZubWF0Y2gucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mbm1hdGNoLnB5CkBAIC02MiwxNCArNjIsMTQgQEAKIGNsYXNzIFRyYW5zbGF0ZVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X3RyYW5zbGF0ZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2xhdGUoJyonKSwgJy4qXFooP21zKScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNsYXRlKCc/JyksICcuXFooP21zKScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNsYXRlKCdhP2IqJyksICdhLmIuKlxaKD9tcyknKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zbGF0ZSgnW2FiY10nKSwgJ1thYmNdXFooP21zKScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNsYXRlKCdbXV0nKSwgJ1tdXVxaKD9tcyknKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zbGF0ZSgnWyF4XScpLCAnW154XVxaKD9tcyknKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zbGF0ZSgnW154XScpLCAnW1xcXnhdXFooP21zKScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNsYXRlKCdbeCcpLCAnXFxbeFxaKD9tcyknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zbGF0ZSgnKicpLCByJyg/czouKilcWicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNsYXRlKCc/JyksIHInKD9zOi4pXFonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zbGF0ZSgnYT9iKicpLCByJyg/czphLmIuKilcWicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNsYXRlKCdbYWJjXScpLCByJyg/czpbYWJjXSlcWicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNsYXRlKCdbXV0nKSwgcicoP3M6W11dKVxaJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2xhdGUoJ1sheF0nKSwgcicoP3M6W154XSlcWicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNsYXRlKCdbXnhdJyksIHInKD9zOltcXnhdKVxaJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2xhdGUoJ1t4JyksIHInKD9zOlxbeClcWicpCiAKIAogY2xhc3MgRmlsdGVyVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mb3JtYXQucHkgYi9MaWIvdGVzdC90ZXN0X2Zvcm1hdC5weQppbmRleCAwZTgzYTY5Li5kYTYzNWE5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Zvcm1hdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Zvcm1hdC5weQpAQCAtMjc4LDcgKzI3OCw3IEBACiAgICAgICAgIHRlc3RfZXhjKCclZCcsICcxJywgVHlwZUVycm9yLCAiJWQgZm9ybWF0OiBhIG51bWJlciBpcyByZXF1aXJlZCwgbm90IHN0ciIpCiAgICAgICAgIHRlc3RfZXhjKCcleCcsICcxJywgVHlwZUVycm9yLCAiJXggZm9ybWF0OiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkLCBub3Qgc3RyIikKICAgICAgICAgdGVzdF9leGMoJyV4JywgMy4xNCwgVHlwZUVycm9yLCAiJXggZm9ybWF0OiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkLCBub3QgZmxvYXQiKQotICAgICAgICB0ZXN0X2V4YygnJWcnLCAnMScsIFR5cGVFcnJvciwgImEgZmxvYXQgaXMgcmVxdWlyZWQiKQorICAgICAgICB0ZXN0X2V4YygnJWcnLCAnMScsIFR5cGVFcnJvciwgIm11c3QgYmUgcmVhbCBudW1iZXIsIG5vdCBzdHIiKQogICAgICAgICB0ZXN0X2V4Yygnbm8gZm9ybWF0JywgJzEnLCBUeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICJub3QgYWxsIGFyZ3VtZW50cyBjb252ZXJ0ZWQgZHVyaW5nIHN0cmluZyBmb3JtYXR0aW5nIikKICAgICAgICAgdGVzdF9leGMoJyVjJywgLTEsIE92ZXJmbG93RXJyb3IsICIlYyBhcmcgbm90IGluIHJhbmdlKDB4MTEwMDAwKSIpCkBAIC0zMDQsNiArMzA0LDggQEAKICAgICAgICAgdGVzdGNvbW1vbihiIiVjIiwgNywgYiJceDA3IikKICAgICAgICAgdGVzdGNvbW1vbihiIiVjIiwgYiJaIiwgYiJaIikKICAgICAgICAgdGVzdGNvbW1vbihiIiVjIiwgYnl0ZWFycmF5KGIiWiIpLCBiIloiKQorICAgICAgICB0ZXN0Y29tbW9uKGIiJTVjIiwgNjUsIGIiICAgIEEiKQorICAgICAgICB0ZXN0Y29tbW9uKGIiJS01YyIsIDY1LCBiIkEgICAgIikKICAgICAgICAgIyAlYiB3aWxsIGluc2VydCBhIHNlcmllcyBvZiBieXRlcywgZWl0aGVyIGZyb20gYSB0eXBlIHRoYXQgc3VwcG9ydHMKICAgICAgICAgIyB0aGUgUHlfYnVmZmVyIHByb3RvY29sLCBvciBzb21ldGhpbmcgdGhhdCBoYXMgYSBfX2J5dGVzX18gbWV0aG9kCiAgICAgICAgIGNsYXNzIEZha2VCeXRlcyhvYmplY3QpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mcmFjdGlvbnMucHkgYi9MaWIvdGVzdC90ZXN0X2ZyYWN0aW9ucy5weQppbmRleCA5ZGY0YTU0Li43OTA1YzM2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ZyYWN0aW9ucy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ZyYWN0aW9ucy5weQpAQCAtMTUwLDYgKzE1MCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRiwgIjMvMiIsIDMpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRiwgMywgMGopCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRiwgMywgMWopCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRiwgMSwgMiwgMykKIAogICAgIEByZXF1aXJlc19JRUVFXzc1NAogICAgIGRlZiB0ZXN0SW5pdEZyb21GbG9hdChzZWxmKToKQEAgLTI2MywxMyArMjY0LDEzIEBACiAgICAgICAgIG5hbiA9IGluZiAtIGluZgogICAgICAgICAjIGJ1ZyAxNjQ2OTogZXJyb3IgdHlwZXMgc2hvdWxkIGJlIGNvbnNpc3RlbnQgd2l0aCBmbG9hdCAtPiBpbnQKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNNZXNzYWdlKAotICAgICAgICAgICAgT3ZlcmZsb3dFcnJvciwgIkNhbm5vdCBjb252ZXJ0IGluZiB0byBGcmFjdGlvbi4iLAorICAgICAgICAgICAgT3ZlcmZsb3dFcnJvciwgImNhbm5vdCBjb252ZXJ0IEluZmluaXR5IHRvIGludGVnZXIgcmF0aW8iLAogICAgICAgICAgICAgRi5mcm9tX2Zsb2F0LCBpbmYpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzTWVzc2FnZSgKLSAgICAgICAgICAgIE92ZXJmbG93RXJyb3IsICJDYW5ub3QgY29udmVydCAtaW5mIHRvIEZyYWN0aW9uLiIsCisgICAgICAgICAgICBPdmVyZmxvd0Vycm9yLCAiY2Fubm90IGNvbnZlcnQgSW5maW5pdHkgdG8gaW50ZWdlciByYXRpbyIsCiAgICAgICAgICAgICBGLmZyb21fZmxvYXQsIC1pbmYpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzTWVzc2FnZSgKLSAgICAgICAgICAgIFZhbHVlRXJyb3IsICJDYW5ub3QgY29udmVydCBuYW4gdG8gRnJhY3Rpb24uIiwKKyAgICAgICAgICAgIFZhbHVlRXJyb3IsICJjYW5ub3QgY29udmVydCBOYU4gdG8gaW50ZWdlciByYXRpbyIsCiAgICAgICAgICAgICBGLmZyb21fZmxvYXQsIG5hbikKIAogICAgIGRlZiB0ZXN0RnJvbURlY2ltYWwoc2VsZik6CkBAIC0yODQsMTYgKzI4NSwxNiBAQAogCiAgICAgICAgICMgYnVnIDE2NDY5OiBlcnJvciB0eXBlcyBzaG91bGQgYmUgY29uc2lzdGVudCB3aXRoIGRlY2ltYWwgLT4gaW50CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzTWVzc2FnZSgKLSAgICAgICAgICAgIE92ZXJmbG93RXJyb3IsICJDYW5ub3QgY29udmVydCBJbmZpbml0eSB0byBGcmFjdGlvbi4iLAorICAgICAgICAgICAgT3ZlcmZsb3dFcnJvciwgImNhbm5vdCBjb252ZXJ0IEluZmluaXR5IHRvIGludGVnZXIgcmF0aW8iLAogICAgICAgICAgICAgRi5mcm9tX2RlY2ltYWwsIERlY2ltYWwoImluZiIpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlc01lc3NhZ2UoCi0gICAgICAgICAgICBPdmVyZmxvd0Vycm9yLCAiQ2Fubm90IGNvbnZlcnQgLUluZmluaXR5IHRvIEZyYWN0aW9uLiIsCisgICAgICAgICAgICBPdmVyZmxvd0Vycm9yLCAiY2Fubm90IGNvbnZlcnQgSW5maW5pdHkgdG8gaW50ZWdlciByYXRpbyIsCiAgICAgICAgICAgICBGLmZyb21fZGVjaW1hbCwgRGVjaW1hbCgiLWluZiIpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlc01lc3NhZ2UoCi0gICAgICAgICAgICBWYWx1ZUVycm9yLCAiQ2Fubm90IGNvbnZlcnQgTmFOIHRvIEZyYWN0aW9uLiIsCisgICAgICAgICAgICBWYWx1ZUVycm9yLCAiY2Fubm90IGNvbnZlcnQgTmFOIHRvIGludGVnZXIgcmF0aW8iLAogICAgICAgICAgICAgRi5mcm9tX2RlY2ltYWwsIERlY2ltYWwoIm5hbiIpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlc01lc3NhZ2UoCi0gICAgICAgICAgICBWYWx1ZUVycm9yLCAiQ2Fubm90IGNvbnZlcnQgc05hTiB0byBGcmFjdGlvbi4iLAorICAgICAgICAgICAgVmFsdWVFcnJvciwgImNhbm5vdCBjb252ZXJ0IE5hTiB0byBpbnRlZ2VyIHJhdGlvIiwKICAgICAgICAgICAgIEYuZnJvbV9kZWNpbWFsLCBEZWNpbWFsKCJzbmFuIikpCiAKICAgICBkZWYgdGVzdExpbWl0RGVub21pbmF0b3Ioc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ZzdHJpbmcucHkgYi9MaWIvdGVzdC90ZXN0X2ZzdHJpbmcucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzA4ZWQyNQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfZnN0cmluZy5weQpAQCAtMCwwICsxLDc2MCBAQAoraW1wb3J0IGFzdAoraW1wb3J0IHR5cGVzCitpbXBvcnQgZGVjaW1hbAoraW1wb3J0IHVuaXR0ZXN0CisKK2FfZ2xvYmFsID0gJ2dsb2JhbCB2YXJpYWJsZScKKworIyBZb3UgY291bGQgYXJndWUgdGhhdCBJJ20gdG9vIHN0cmljdCBpbiBsb29raW5nIGZvciBzcGVjaWZpYyBlcnJvcgorIyAgdmFsdWVzIHdpdGggYXNzZXJ0UmFpc2VzUmVnZXgsIGJ1dCB3aXRob3V0IGl0IGl0J3Mgd2F5IHRvbyBlYXN5IHRvCisjICBtYWtlIGEgc3ludGF4IGVycm9yIGluIHRoZSB0ZXN0IHN0cmluZ3MuIEVzcGVjaWFsbHkgd2l0aCBhbGwgb2YgdGhlCisjICB0cmlwbGUgcXVvdGVzLCByYXcgc3RyaW5ncywgYmFja3NsYXNoZXMsIGV0Yy4gSSB0aGluayBpdCdzIGEKKyMgIHdvcnRod2hpbGUgdHJhZGVvZmYuIFdoZW4gSSBzd2l0Y2hlZCB0byB0aGlzIG1ldGhvZCwgSSBmb3VuZCBtYW55CisjICBleGFtcGxlcyB3aGVyZSBJIHdhc24ndCB0ZXN0aW5nIHdoYXQgSSB0aG91Z2h0IEkgd2FzLgorCitjbGFzcyBUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIGFzc2VydEFsbFJhaXNlKHNlbGYsIGV4Y2VwdGlvbl90eXBlLCByZWdleCwgZXJyb3Jfc3RyaW5ncyk6CisgICAgICAgIGZvciBzdHIgaW4gZXJyb3Jfc3RyaW5nczoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHN0cj1zdHIpOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChleGNlcHRpb25fdHlwZSwgcmVnZXgpOgorICAgICAgICAgICAgICAgICAgICBldmFsKHN0cikKKworICAgIGRlZiB0ZXN0X19mb3JtYXRfX2xvb2t1cChzZWxmKToKKyAgICAgICAgIyBNYWtlIHN1cmUgX19mb3JtYXRfXyBpcyBsb29rZWQgdXAgb24gdGhlIHR5cGUsIG5vdCB0aGUgaW5zdGFuY2UuCisgICAgICAgIGNsYXNzIFg6CisgICAgICAgICAgICBkZWYgX19mb3JtYXRfXyhzZWxmLCBzcGVjKToKKyAgICAgICAgICAgICAgICByZXR1cm4gJ2NsYXNzJworCisgICAgICAgIHggPSBYKCkKKworICAgICAgICAjIEFkZCBhIGJvdW5kIF9fZm9ybWF0X18gbWV0aG9kIHRvIHRoZSAneScgaW5zdGFuY2UsIGJ1dCBub3QKKyAgICAgICAgIyAgdGhlICd4JyBpbnN0YW5jZS4KKyAgICAgICAgeSA9IFgoKQorICAgICAgICB5Ll9fZm9ybWF0X18gPSB0eXBlcy5NZXRob2RUeXBlKGxhbWJkYSBzZWxmLCBzcGVjOiAnaW5zdGFuY2UnLCB5KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7eX0nLCBmb3JtYXQoeSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7eX0nLCAnY2xhc3MnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCh4KSwgZm9ybWF0KHkpKQorCisgICAgICAgICMgX19mb3JtYXRfXyBpcyBub3QgY2FsbGVkIHRoaXMgd2F5LCBidXQgc3RpbGwgbWFrZSBzdXJlIGl0CisgICAgICAgICMgIHJldHVybnMgd2hhdCB3ZSBleHBlY3QgKHNvIHdlIGNhbiBtYWtlIHN1cmUgd2UncmUgYnlwYXNzaW5nCisgICAgICAgICMgIGl0KS4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4Ll9fZm9ybWF0X18oJycpLCAnY2xhc3MnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHkuX19mb3JtYXRfXygnJyksICdpbnN0YW5jZScpCisKKyAgICAgICAgIyBUaGlzIGlzIGhvdyBfX2Zvcm1hdF9fIGlzIGFjdHVhbGx5IGNhbGxlZC4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHgpLl9fZm9ybWF0X18oeCwgJycpLCAnY2xhc3MnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoeSkuX19mb3JtYXRfXyh5LCAnJyksICdjbGFzcycpCisKKyAgICBkZWYgdGVzdF9hc3Qoc2VsZik6CisgICAgICAgICMgSW5zcGlyZWQgYnkgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTI0OTc1CisgICAgICAgIGNsYXNzIFg6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5jYWxsZWQgPSBGYWxzZQorICAgICAgICAgICAgZGVmIF9fY2FsbF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuY2FsbGVkID0gVHJ1ZQorICAgICAgICAgICAgICAgIHJldHVybiA0CisgICAgICAgIHggPSBYKCkKKyAgICAgICAgZXhwciA9ICIiIgorYSA9IDEwCitmJ3thICogeCgpfSciIiIKKyAgICAgICAgdCA9IGFzdC5wYXJzZShleHByKQorICAgICAgICBjID0gY29tcGlsZSh0LCAnJywgJ2V4ZWMnKQorCisgICAgICAgICMgTWFrZSBzdXJlIHggd2FzIG5vdCBjYWxsZWQuCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoeC5jYWxsZWQpCisKKyAgICAgICAgIyBBY3R1YWxseSBydW4gdGhlIGNvZGUuCisgICAgICAgIGV4ZWMoYykKKworICAgICAgICAjIE1ha2Ugc3VyZSB4IHdhcyBjYWxsZWQuCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4LmNhbGxlZCkKKworICAgIGRlZiB0ZXN0X2RvY3N0cmluZyhzZWxmKToKKyAgICAgICAgZGVmIGYoKToKKyAgICAgICAgICAgIGYnJydOb3QgYSBkb2NzdHJpbmcnJycKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZi5fX2RvY19fKQorICAgICAgICBkZWYgZygpOgorICAgICAgICAgICAgJycnTm90IGEgZG9jc3RyaW5nJycnIFwKKyAgICAgICAgICAgIGYnJworICAgICAgICBzZWxmLmFzc2VydElzTm9uZShnLl9fZG9jX18pCisKKyAgICBkZWYgdGVzdF9saXRlcmFsX2V2YWwoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnbWFsZm9ybWVkIG5vZGUgb3Igc3RyaW5nJyk6CisgICAgICAgICAgICBhc3QubGl0ZXJhbF9ldmFsKCJmJ3gnIikKKworICAgIGRlZiB0ZXN0X2FzdF9jb21waWxlX3RpbWVfY29uY2F0KHNlbGYpOgorICAgICAgICB4ID0gWycnXQorCisgICAgICAgIGV4cHIgPSAiIiJ4WzBdID0gJ2ZvbycgZid7M30nIiIiCisgICAgICAgIHQgPSBhc3QucGFyc2UoZXhwcikKKyAgICAgICAgYyA9IGNvbXBpbGUodCwgJycsICdleGVjJykKKyAgICAgICAgZXhlYyhjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHhbMF0sICdmb28zJykKKworICAgIGRlZiB0ZXN0X2NvbXBpbGVfdGltZV9jb25jYXRfZXJyb3JzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjYW5ub3QgbWl4IGJ5dGVzIGFuZCBub25ieXRlcyBsaXRlcmFscycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3IiIiJmJycgYicnIiIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByIiIiYicnIGYnJyIiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X2xpdGVyYWwoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZicnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2EnLCAnYScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZicgJywgJyAnKQorCisgICAgZGVmIHRlc3RfdW50ZXJtaW5hdGVkX3N0cmluZyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgJ2Ytc3RyaW5nOiB1bnRlcm1pbmF0ZWQgc3RyaW5nJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbciIiImYneyJ4JyIiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciIiImYneyJ4fSciIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiIiJmJ3soIngnIiIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByIiIiZid7KCJ4fSciIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9taXNtYXRjaGVkX3BhcmVucyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgJ2Ytc3RyaW5nOiBtaXNtYXRjaGVkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImYneygofSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfZG91YmxlX2JyYWNlcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t7JywgJ3snKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnYXt7JywgJ2F7JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t7YicsICd7YicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidhe3tiJywgJ2F7YicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid9fScsICd9JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2F9fScsICdhfScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid9fWInLCAnfWInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnYX19YicsICdhfWInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3t9fScsICd7fScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidhe3t9fScsICdhe30nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3tifX0nLCAne2J9JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t7fX1jJywgJ3t9YycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidhe3tifX0nLCAnYXtifScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidhe3t9fWMnLCAnYXt9YycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7e2J9fWMnLCAne2J9YycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidhe3tifX1jJywgJ2F7Yn1jJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3t7MTB9JywgJ3sxMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid9fXsxMH0nLCAnfTEwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ319e3t7MTB9JywgJ317MTAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnfX1he3t7MTB9JywgJ31hezEwJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezEwfXt7JywgJzEweycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7MTB9fX0nLCAnMTB9JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3sxMH19fXt7JywgJzEwfXsnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezEwfX19YXt7JyAnfScsICcxMH1he30nKQorCisgICAgICAgICMgSW5zaWRlIG9mIHN0cmluZ3MsIGRvbid0IGludGVycHJldCBkb3VibGVkIGJyYWNrZXRzLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyJ7e319In0nLCAne3t9fScpCisKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShUeXBlRXJyb3IsICd1bmhhc2hhYmxlIHR5cGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiZid7IHt7fX0gfSciLCAjIGRpY3QgaW4gYSBzZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X2NvbXBpbGVfdGltZV9jb25jYXQoc2VsZik6CisgICAgICAgIHggPSAnZGVmJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdhYmMnIGYnIyMge3h9Z2hpJywgJ2FiYyMjIGRlZmdoaScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2FiYycgZid7eH0nICdnaGknLCAnYWJjZGVmZ2hpJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnYWJjJyBmJ3t4fScgJ2doJyBmJ2l7eDo0fScsICdhYmNkZWZnaGlkZWYgJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgne3h9JyBmJ3t4fScsICd7eH1kZWYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd7eCcgZid7eH0nLCAne3hkZWYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd7eH0nIGYne3h9JywgJ3t4fWRlZicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3t7eH19JyBmJ3t4fScsICd7e3h9fWRlZicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3t7eCcgZid7eH0nLCAne3t4ZGVmJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgneH19JyBmJ3t4fScsICd4fX1kZWYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3h9JyAneH19JywgJ2RlZnh9fScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7eH0nICcnLCAnZGVmJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJyBmJ3t4fScgJycsICdkZWYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnIGYne3h9JywgJ2RlZicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7eH0nICcyJywgJ2RlZjInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcxJyBmJ3t4fScgJzInLCAnMWRlZjInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcxJyBmJ3t4fScsICcxZGVmJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t4fScgZicte3h9JywgJ2RlZi1kZWYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnIGYnJywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycgZicnICcnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJyBmJycgJycgZicnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJycsICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnJyAnJywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZicnICcnIGYnJywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZicnICcnIGYnJyAnJywgJycpCisKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgImYtc3RyaW5nOiBleHBlY3RpbmcgJ30nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImYnezMnIGYnfSciLCAgIyBjYW4ndCBjb25jYXQgdG8gZ2V0IGEgdmFsaWQgZi1zdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X2NvbW1lbnRzKHNlbGYpOgorICAgICAgICAjIFRoZXNlIGFyZW4ndCBjb21tZW50cywgc2luY2UgdGhleSdyZSBpbiBzdHJpbmdzLgorICAgICAgICBkID0geycjJzogJ2hhc2gnfQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyIjIn0nLCAnIycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7ZFsiIyJdfScsICdoYXNoJykKKworICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAiZi1zdHJpbmcgZXhwcmVzc2lvbiBwYXJ0IGNhbm5vdCBpbmNsdWRlICcjJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJmJ3sxI30nIiwgICAjIGVycm9yIGJlY2F1c2UgdGhlIGV4cHJlc3Npb24gYmVjb21lcyAiKDEjKSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezMoIyl9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3sjfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7KSN9JyIsICAgIyBXaGVuIHdyYXBwZWQgaW4gcGFyZW5zLCB0aGlzIGJlY29tZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICcoKSMpJy4gIE1ha2Ugc3VyZSB0aGF0IGRvZXNuJ3QgY29tcGlsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X21hbnlfZXhwcmVzc2lvbnMoc2VsZik6CisgICAgICAgICMgQ3JlYXRlIGEgc3RyaW5nIHdpdGggbWFueSBleHByZXNzaW9ucyBpbiBpdC4gTm90ZSB0aGF0CisgICAgICAgICMgIGJlY2F1c2Ugd2UgaGF2ZSBhIHNwYWNlIGluIGhlcmUgYXMgYSBsaXRlcmFsLCB3ZSdyZSBhY3R1YWxseQorICAgICAgICAjICBnb2luZyB0byB1c2UgdHdpY2UgYXMgbWFueSBhc3Qgbm9kZXM6IG9uZSBmb3IgZWFjaCBsaXRlcmFsCisgICAgICAgICMgIHBsdXMgb25lIGZvciBlYWNoIGV4cHJlc3Npb24uCisgICAgICAgIGRlZiBidWlsZF9mc3RyKG4sIGV4dHJhPScnKToKKyAgICAgICAgICAgIHJldHVybiAiZiciICsgKCd7eH0gJyAqIG4pICsgZXh0cmEgKyAiJyIKKworICAgICAgICB4ID0gJ1gnCisgICAgICAgIHdpZHRoID0gMQorCisgICAgICAgICMgVGVzdCBhcm91bmQgMjU2LgorICAgICAgICBmb3IgaSBpbiByYW5nZSgyNTAsIDI2MCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwoYnVpbGRfZnN0cihpKSksICh4KycgJykqaSkKKworICAgICAgICAjIFRlc3QgY29uY2F0ZW5hdGluZyAyIGxhcmdzIGZzdHJpbmdzLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwoYnVpbGRfZnN0cigyNTUpKjI1NiksICh4KycgJykqKDI1NSoyNTYpKQorCisgICAgICAgIHMgPSBidWlsZF9mc3RyKDI1MywgJ3t4Ont3aWR0aH19ICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbChzKSwgKHgrJyAnKSoyNTQpCisKKyAgICAgICAgIyBUZXN0IGxvdHMgb2YgZXhwcmVzc2lvbnMgYW5kIGNvbnN0YW50cywgY29uY2F0ZW5hdGVkLgorICAgICAgICBzID0gImYnezF9JyAneCcgJ3knIiAqIDEwMjQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKHMpLCAnMXh5JyAqIDEwMjQpCisKKyAgICBkZWYgdGVzdF9mb3JtYXRfc3BlY2lmaWVyX2V4cHJlc3Npb25zKHNlbGYpOgorICAgICAgICB3aWR0aCA9IDEwCisgICAgICAgIHByZWNpc2lvbiA9IDQKKyAgICAgICAgdmFsdWUgPSBkZWNpbWFsLkRlY2ltYWwoJzEyLjM0NTY3JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3Jlc3VsdDoge3ZhbHVlOnt3aWR0aH0ue3ByZWNpc2lvbn19JywgJ3Jlc3VsdDogICAgICAxMi4zNScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidyZXN1bHQ6IHt2YWx1ZTp7d2lkdGghcn0ue3ByZWNpc2lvbn19JywgJ3Jlc3VsdDogICAgICAxMi4zNScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidyZXN1bHQ6IHt2YWx1ZTp7d2lkdGg6MH0ue3ByZWNpc2lvbjoxfX0nLCAncmVzdWx0OiAgICAgIDEyLjM1JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3Jlc3VsdDoge3ZhbHVlOnsxfXswOjB9LntwcmVjaXNpb246MX19JywgJ3Jlc3VsdDogICAgICAxMi4zNScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidyZXN1bHQ6IHt2YWx1ZTp7IDF9eyAwOjB9LnsgcHJlY2lzaW9uOjF9fScsICdyZXN1bHQ6ICAgICAgMTIuMzUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezEwOiN7MX0weH0nLCAnICAgICAgIDB4YScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7MTA6eyIjIn0xezB9eyJ4In19JywgJyAgICAgICAweGEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYney0xMDoteyIjIn0xezB9eH0nLCAnICAgICAgLTB4YScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7LTEwOnsiLSJ9I3sxfTB7IngifX0nLCAnICAgICAgLTB4YScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7MTA6I3szICE9IHs0OjV9IGFuZCB3aWR0aH14fScsICcgICAgICAgMHhhJykKKworICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAiZi1zdHJpbmc6IGV4cGVjdGluZyAnfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiIiJmJ3sicyIhcnsiOjEwIn19JyIiIiwKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFRoaXMgbG9va3MgbGlrZSBhIG5lc3RlZCBmb3JtYXQgc3BlYy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAiaW52YWxpZCBzeW50YXgiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsjIEludmFsaWQgc3ludGF4IGluc2lkZSBhIG5lc3RlZCBzcGVjLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7NDp7LzV9fSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICJmLXN0cmluZzogZXhwcmVzc2lvbnMgbmVzdGVkIHRvbyBkZWVwbHkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsjIENhbid0IG5lc3QgZm9ybWF0IHNwZWNpZmllcnMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3Jlc3VsdDoge3ZhbHVlOnt3aWR0aDp7MH19LntwcmVjaXNpb246MX19JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgJ2Ytc3RyaW5nOiBpbnZhbGlkIGNvbnZlcnNpb24gY2hhcmFjdGVyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIyBObyBleHBhbnNpb24gaW5zaWRlIGNvbnZlcnNpb24gb3IgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgIHRoZSA6IG9yICEgaXRzZWxmLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIiJmJ3sicyIheyJyIn19JyIiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X3NpZGVfZWZmZWN0X29yZGVyKHNlbGYpOgorICAgICAgICBjbGFzcyBYOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuaSA9IDAKKyAgICAgICAgICAgIGRlZiBfX2Zvcm1hdF9fKHNlbGYsIHNwZWMpOgorICAgICAgICAgICAgICAgIHNlbGYuaSArPSAxCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0cihzZWxmLmkpCisKKyAgICAgICAgeCA9IFgoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3h9IHt4fScsICcxIDInKQorCisgICAgZGVmIHRlc3RfbWlzc2luZ19leHByZXNzaW9uKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAnZi1zdHJpbmc6IGVtcHR5IGV4cHJlc3Npb24gbm90IGFsbG93ZWQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiZid7fSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7IH0nIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZicge30gJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3shcn0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYneyAhcn0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezEwOnsgfX0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnIHsgfSAnIiwKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIENhdGNoIHRoZSBlbXB0eSBleHByZXNzaW9uIGJlZm9yZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgaW52YWxpZCBjb252ZXJzaW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7IXh9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3sgIXhyfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7IXg6fSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7IXg6YX0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYneyAheHI6fSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7ICF4cjphfSciLAorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3shfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7On0nIiwKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFdlIGZpbmQgdGhlIGVtcHR5IGV4cHJlc3Npb24gYmVmb3JlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICBtaXNzaW5nIGNsb3NpbmcgYnJhY2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3shJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3shczonIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezonIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezp4JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9wYXJlbnNfaW5fZXhwcmVzc2lvbnMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7Myx9JywgJygzLCknKQorCisgICAgICAgICMgQWRkIHRoZXNlIGJlY2F1c2Ugd2hlbiBhbiBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCwgcGFyZW5zCisgICAgICAgICMgIGFyZSBhZGRlZCBhcm91bmQgaXQuIEJ1dCB3ZSBzaG91bGRuJ3QgZ28gZnJvbSBhbiBpbnZhbGlkCisgICAgICAgICMgIGV4cHJlc3Npb24gdG8gYSB2YWxpZCBvbmUuIFRoZSBhZGRlZCBwYXJlbnMgYXJlIGp1c3QKKyAgICAgICAgIyAgc3VwcG9zZWQgdG8gYWxsb3cgd2hpdGVzcGFjZSAoaW5jbHVkaW5nIG5ld2xpbmVzKS4KKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgJ2ludmFsaWQgc3ludGF4JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImYneyx9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3ssfSciLCAgIyB0aGlzIGlzICgsKSwgd2hpY2ggaXMgYW4gZXJyb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAiZi1zdHJpbmc6IGV4cGVjdGluZyAnfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiZid7MykrKDR9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgJ0VPTCB3aGlsZSBzY2FubmluZyBzdHJpbmcgbGl0ZXJhbCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJmJ3tcbn0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X2JhY2tzbGFzaGVzX2luX3N0cmluZ19wYXJ0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnXHQnLCAnXHQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHInXHQnLCAnXFx0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZidcdCcsICdcXHQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezJ9XHQnLCAnMlx0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3syfVx0ezN9JywgJzJcdDMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnXHR7M30nLCAnXHQzJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnXHUwMzk0JywgJ1x1MDM5NCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocidcdTAzOTQnLCAnXFx1MDM5NCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmYnXHUwMzk0JywgJ1xcdTAzOTQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezJ9XHUwMzk0JywgJzJcdTAzOTQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezJ9XHUwMzk0ezN9JywgJzJcdTAzOTQzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1x1MDM5NHszfScsICdcdTAzOTQzJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnXFUwMDAwMDM5NCcsICdcdTAzOTQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHInXFUwMDAwMDM5NCcsICdcXFUwMDAwMDM5NCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmYnXFUwMDAwMDM5NCcsICdcXFUwMDAwMDM5NCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7Mn1cVTAwMDAwMzk0JywgJzJcdTAzOTQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezJ9XFUwMDAwMDM5NHszfScsICcyXHUwMzk0MycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidcVTAwMDAwMzk0ezN9JywgJ1x1MDM5NDMnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidcTntHUkVFSyBDQVBJVEFMIExFVFRFUiBERUxUQX0nLCAnXHUwMzk0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3syfVxOe0dSRUVLIENBUElUQUwgTEVUVEVSIERFTFRBfScsICcyXHUwMzk0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3syfVxOe0dSRUVLIENBUElUQUwgTEVUVEVSIERFTFRBfXszfScsICcyXHUwMzk0MycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidcTntHUkVFSyBDQVBJVEFMIExFVFRFUiBERUxUQX17M30nLCAnXHUwMzk0MycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZicyXE57R1JFRUsgQ0FQSVRBTCBMRVRURVIgREVMVEF9JywgJzJcdTAzOTQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnMlxOe0dSRUVLIENBUElUQUwgTEVUVEVSIERFTFRBfTMnLCAnMlx1MDM5NDMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnXE57R1JFRUsgQ0FQSVRBTCBMRVRURVIgREVMVEF9MycsICdcdTAzOTQzJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnXHgyMCcsICcgJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyJ1x4MjAnLCAnXFx4MjAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJmJ1x4MjAnLCAnXFx4MjAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezJ9XHgyMCcsICcyICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7Mn1ceDIwezN9JywgJzIgMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidceDIwezN9JywgJyAzJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnMlx4MjAnLCAnMiAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnMlx4MjAzJywgJzIgMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidceDIwMycsICcgMycpCisKKyAgICBkZWYgdGVzdF9taXNmb3JtZWRfdW5pY29kZV9jaGFyYWN0ZXJfbmFtZShzZWxmKToKKyAgICAgICAgIyBUaGVzZSB0ZXN0IGFyZSBuZWVkZWQgYmVjYXVzZSB1bmljb2RlIG5hbWVzIGFyZSBwYXJzZWQKKyAgICAgICAgIyBkaWZmZXJlbnRseSBpbnNpZGUgZi1zdHJpbmdzLgorICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCByIlwodW5pY29kZSBlcnJvclwpICd1bmljb2RlZXNjYXBlJyBjb2RlYyBjYW4ndCBkZWNvZGUgYnl0ZXMgaW4gcG9zaXRpb24gLio6IG1hbGZvcm1lZCBcXE4gY2hhcmFjdGVyIGVzY2FwZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3IiZidcTiciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByImYnXE57JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiZidcTntHUkVFSyBDQVBJVEFMIExFVFRFUiBERUxUQSciLAorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSGVyZSBhcmUgdGhlIG5vbi1mLXN0cmluZyB2ZXJzaW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgd2hpY2ggc2hvdWxkIGdpdmUgdGhlIHNhbWUgZXJyb3JzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByIidcTiciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByIidcTnsnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciInXE57R1JFRUsgQ0FQSVRBTCBMRVRURVIgREVMVEEnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X25vX2JhY2tzbGFzaGVzX2luX2V4cHJlc3Npb25fcGFydChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgJ2Ytc3RyaW5nIGV4cHJlc3Npb24gcGFydCBjYW5ub3QgaW5jbHVkZSBhIGJhY2tzbGFzaCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3IiZid7XCdhXCd9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiZid7XHQzfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByImYne1x9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIicmYne1wnYVwnfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByInJmJ3tcdDN9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIicmYne1x9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiIiJyZid7IlxOe0xFRlQgQ1VSTFkgQlJBQ0tFVH0ifSciIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiZid7XG59JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9ub19lc2NhcGVzX2Zvcl9icmFjZXMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBPbmx5IGxpdGVyYWwgY3VybHkgYnJhY2VzIGJlZ2luIGFuIGV4cHJlc3Npb24uCisgICAgICAgICIiIgorICAgICAgICAjIFx4N2IgaXMgJ3snLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnXHg3YjErMX19JywgJ3sxKzF9JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1x4N2IxKzEnLCAnezErMScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidcdTAwN2IxKzEnLCAnezErMScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidcTntMRUZUIENVUkxZIEJSQUNLRVR9MSsxXE57UklHSFQgQ1VSTFkgQlJBQ0tFVH0nLCAnezErMX0nKQorCisgICAgZGVmIHRlc3RfbmV3bGluZXNfaW5fZXhwcmVzc2lvbnMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7MH0nLCAnMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmYnJyd7MysKKzR9JycnLCAnNycpCisKKyAgICBkZWYgdGVzdF9sYW1iZGEoc2VsZik6CisgICAgICAgIHggPSA1CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7KGxhbWJkYSB5OngqeSkoIjgiKSFyfScsICInODg4ODgnIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3sobGFtYmRhIHk6eCp5KSgiOCIpIXI6MTB9JywgIic4ODg4OCcgICAiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyhsYW1iZGEgeTp4KnkpKCI4Iik6MTB9JywgIjg4ODg4ICAgICAiKQorCisgICAgICAgICMgbGFtYmRhIGRvZXNuJ3Qgd29yayB3aXRob3V0IHBhcmVucywgYmVjYXVzZSB0aGUgY29sb24KKyAgICAgICAgIyAgbWFrZXMgdGhlIHBhcnNlciB0aGluayBpdCdzIGEgZm9ybWF0X3NwZWMKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgJ3VuZXhwZWN0ZWQgRU9GIHdoaWxlIHBhcnNpbmcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiZid7bGFtYmRhIHg6eH0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X3lpZWxkKHNlbGYpOgorICAgICAgICAjIE5vdCB0ZXJyaWJseSB1c2VmdWwsIGJ1dCBtYWtlIHN1cmUgdGhlIHlpZWxkIHR1cm5zCisgICAgICAgICMgIGEgZnVuY3Rpb24gaW50byBhIGdlbmVyYXRvcgorICAgICAgICBkZWYgZm4oeSk6CisgICAgICAgICAgICBmJ3k6e3lpZWxkIHkqMn0nCisKKyAgICAgICAgZyA9IGZuKDQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChnKSwgOCkKKworICAgIGRlZiB0ZXN0X3lpZWxkX3NlbmQoc2VsZik6CisgICAgICAgIGRlZiBmbih4KToKKyAgICAgICAgICAgIHlpZWxkIGYneDp7eWllbGQgKGxhbWJkYSBpOiB4ICogaSl9JworCisgICAgICAgIGcgPSBmbigxMCkKKyAgICAgICAgdGhlX2xhbWJkYSA9IG5leHQoZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aGVfbGFtYmRhKDQpLCA0MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnLnNlbmQoJ3N0cmluZycpLCAneDpzdHJpbmcnKQorCisgICAgZGVmIHRlc3RfZXhwcmVzc2lvbnNfd2l0aF90cmlwbGVfcXVvdGVkX3N0cmluZ3Moc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZiJ7JycneCcnJ30iLCAneCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZiJ7JycnZXJpYydzJycnfSIsICJlcmljJ3MiKQorCisgICAgICAgICMgVGVzdCBjb25jYXRlbmF0aW9uIHdpdGhpbiBhbiBleHByZXNzaW9uCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7IngiICIiImVyaWMicyIiIiAieSJ9JywgJ3hlcmljInN5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3sieCIgIiIiZXJpYyJzIiIifScsICd4ZXJpYyJzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3siIiJlcmljInMiIiIgInkifScsICdlcmljInN5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3siIiJ4IiIiICIiImVyaWMicyIiIiAieSJ9JywgJ3hlcmljInN5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3siIiJ4IiIiICIiImVyaWMicyIiIiAiIiJ5IiIifScsICd4ZXJpYyJzeScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7ciIiIngiIiIgIiIiZXJpYyJzIiIiICIiInkiIiJ9JywgJ3hlcmljInN5JykKKworICAgIGRlZiB0ZXN0X211bHRpcGxlX3ZhcnMoc2VsZik6CisgICAgICAgIHggPSA5OAorICAgICAgICB5ID0gJ2FiYycKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t4fXt5fScsICc5OGFiYycpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1h7eH17eX0nLCAnWDk4YWJjJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t4fVh7eX0nLCAnOThYYWJjJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t4fXt5fVgnLCAnOThhYmNYJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnWHt4fVl7eX0nLCAnWDk4WWFiYycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidYe3h9e3l9WScsICdYOThhYmNZJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t4fVh7eX1ZJywgJzk4WGFiY1knKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidYe3h9WXt5fVonLCAnWDk4WWFiY1onKQorCisgICAgZGVmIHRlc3RfY2xvc3VyZShzZWxmKToKKyAgICAgICAgZGVmIG91dGVyKHgpOgorICAgICAgICAgICAgZGVmIGlubmVyKCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGYneDp7eH0nCisgICAgICAgICAgICByZXR1cm4gaW5uZXIKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dGVyKCc5ODcnKSgpLCAneDo5ODcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dGVyKDcpKCksICd4OjcnKQorCisgICAgZGVmIHRlc3RfYXJndW1lbnRzKHNlbGYpOgorICAgICAgICB5ID0gMgorICAgICAgICBkZWYgZih4LCB3aWR0aCk6CisgICAgICAgICAgICByZXR1cm4gZid4PXt4Knk6e3dpZHRofX0nCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmKCdmb28nLCAxMCksICd4PWZvb2ZvbyAgICAnKQorICAgICAgICB4ID0gJ2JhcicKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmKDEwLCAxMCksICd4PSAgICAgICAgMjAnKQorCisgICAgZGVmIHRlc3RfbG9jYWxzKHNlbGYpOgorICAgICAgICB2YWx1ZSA9IDEyMworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYndjp7dmFsdWV9JywgJ3Y6MTIzJykKKworICAgIGRlZiB0ZXN0X21pc3NpbmdfdmFyaWFibGUoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTmFtZUVycm9yKToKKyAgICAgICAgICAgIGYndjp7dmFsdWV9JworCisgICAgZGVmIHRlc3RfbWlzc2luZ19mb3JtYXRfc3BlYyhzZWxmKToKKyAgICAgICAgY2xhc3MgTzoKKyAgICAgICAgICAgIGRlZiBfX2Zvcm1hdF9fKHNlbGYsIHNwZWMpOgorICAgICAgICAgICAgICAgIGlmIG5vdCBzcGVjOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gJyonCisgICAgICAgICAgICAgICAgcmV0dXJuIHNwZWMKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne08oKTp4fScsICd4JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3tPKCl9JywgJyonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne08oKTp9JywgJyonKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7Mzp9JywgJzMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezMhczp9JywgJzMnKQorCisgICAgZGVmIHRlc3RfZ2xvYmFsKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnZzp7YV9nbG9iYWx9JywgJ2c6Z2xvYmFsIHZhcmlhYmxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2c6e2FfZ2xvYmFsIXJ9JywgImc6J2dsb2JhbCB2YXJpYWJsZSciKQorCisgICAgICAgIGFfbG9jYWwgPSAnbG9jYWwgdmFyaWFibGUnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidnOnthX2dsb2JhbH0gbDp7YV9sb2NhbH0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdnOmdsb2JhbCB2YXJpYWJsZSBsOmxvY2FsIHZhcmlhYmxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2c6e2FfZ2xvYmFsIXJ9JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZzonZ2xvYmFsIHZhcmlhYmxlJyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidnOnthX2dsb2JhbH0gbDp7YV9sb2NhbCFyfScsCisgICAgICAgICAgICAgICAgICAgICAgICAgImc6Z2xvYmFsIHZhcmlhYmxlIGw6J2xvY2FsIHZhcmlhYmxlJyIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRJbigibW9kdWxlICd1bml0dGVzdCcgZnJvbSIsIGYne3VuaXR0ZXN0fScpCisKKyAgICBkZWYgdGVzdF9zaGFkb3dlZF9nbG9iYWwoc2VsZik6CisgICAgICAgIGFfZ2xvYmFsID0gJ3JlYWxseSBhIGxvY2FsJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnZzp7YV9nbG9iYWx9JywgJ2c6cmVhbGx5IGEgbG9jYWwnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnZzp7YV9nbG9iYWwhcn0nLCAiZzoncmVhbGx5IGEgbG9jYWwnIikKKworICAgICAgICBhX2xvY2FsID0gJ2xvY2FsIHZhcmlhYmxlJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnZzp7YV9nbG9iYWx9IGw6e2FfbG9jYWx9JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZzpyZWFsbHkgYSBsb2NhbCBsOmxvY2FsIHZhcmlhYmxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2c6e2FfZ2xvYmFsIXJ9JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZzoncmVhbGx5IGEgbG9jYWwnIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2c6e2FfZ2xvYmFsfSBsOnthX2xvY2FsIXJ9JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZzpyZWFsbHkgYSBsb2NhbCBsOidsb2NhbCB2YXJpYWJsZSciKQorCisgICAgZGVmIHRlc3RfY2FsbChzZWxmKToKKyAgICAgICAgZGVmIGZvbyh4KToKKyAgICAgICAgICAgIHJldHVybiAneD0nICsgc3RyKHgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3tmb28oMTApfScsICd4PTEwJykKKworICAgIGRlZiB0ZXN0X25lc3RlZF9mc3RyaW5ncyhzZWxmKToKKyAgICAgICAgeSA9IDUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3tmInswfSIqM30nLCAnMDAwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3tmInt5fSIqM30nLCAnNTU1JykKKworICAgIGRlZiB0ZXN0X2ludmFsaWRfc3RyaW5nX3ByZWZpeGVzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAndW5leHBlY3RlZCBFT0Ygd2hpbGUgcGFyc2luZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJmdScnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVmJyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRnUnJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmVScnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVmJyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidUYnJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1ZnInJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1cmYnJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmdXInJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmcnUnJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZnUnJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJydWYnJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGVVInJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGdXInJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmYicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZCJyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmInJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGQicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJmJyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYkYnJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCZicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJGJyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfbGVhZGluZ190cmFpbGluZ19zcGFjZXMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7IDN9JywgJzMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyAgM30nLCAnMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7MyB9JywgJzMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezMgIH0nLCAnMycpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2V4cHI9eyB7eDogeSBmb3IgeCwgeSBpbiBbKDEsIDIpLCBdfX0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdleHByPXsxOiAyfScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidleHByPXsge3g6IHkgZm9yIHgsIHkgaW4gWygxLCAyKSwgXX0gfScsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4cHI9ezE6IDJ9JykKKworICAgIGRlZiB0ZXN0X25vdF9lcXVhbChzZWxmKToKKyAgICAgICAgIyBUaGVyZSdzIGEgc3BlY2lhbCB0ZXN0IGZvciB0aGlzIGJlY2F1c2UgdGhlcmUncyBhIHNwZWNpYWwKKyAgICAgICAgIyAgY2FzZSBpbiB0aGUgZi1zdHJpbmcgcGFyc2VyIHRvIGxvb2sgZm9yICE9IGFzIG5vdCBlbmRpbmcgYW4KKyAgICAgICAgIyAgZXhwcmVzc2lvbi4gTm9ybWFsbHkgaXQgd291bGQsIHdoaWxlIGxvb2tpbmcgZm9yICFzIG9yICFyLgorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7MyE9NH0nLCAnVHJ1ZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7MyE9NDp9JywgJ1RydWUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezMhPTQhc30nLCAnVHJ1ZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7MyE9NCFzOi4zfScsICdUcnUnKQorCisgICAgZGVmIHRlc3RfY29udmVyc2lvbnMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7My4xNDoxMC4xMH0nLCAnICAgICAgMy4xNCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7My4xNCFzOjEwLjEwfScsICczLjE0ICAgICAgJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3szLjE0IXI6MTAuMTB9JywgJzMuMTQgICAgICAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezMuMTQhYToxMC4xMH0nLCAnMy4xNCAgICAgICcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3siYSJ9JywgJ2EnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyJhIiFyfScsICInYSciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyJhIiFhfScsICInYSciKQorCisgICAgICAgICMgTm90IGEgY29udmVyc2lvbi4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3siYSFyIn0nLCAiYSFyIikKKworICAgICAgICAjIE5vdCBhIGNvbnZlcnNpb24sIGJ1dCBzaG93IHRoYXQgISBpcyBhbGxvd2VkIGluIGEgZm9ybWF0IHNwZWMuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7My4xNDohPDEwLjEwfScsICczLjE0ISEhISEhJykKKworICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAnZi1zdHJpbmc6IGludmFsaWQgY29udmVyc2lvbiBjaGFyYWN0ZXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiZid7MyFnfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7MyFBfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7MyEzfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7MyFHfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7MyEhfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7MyE6fSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7MyEgc30nIiwgICMgbm8gc3BhY2UgYmVmb3JlIGNvbnZlcnNpb24gY2hhcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICJmLXN0cmluZzogZXhwZWN0aW5nICd9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJmJ3t4IXN7eX19JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szIXNzfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7MyFzczp9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szIXNzOnN9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9hc3NpZ25tZW50KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAnaW52YWxpZCBzeW50YXgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiZicnID0gMyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3swfScgPSB4IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYne3h9JyA9IHgiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfZGVsKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAnaW52YWxpZCBzeW50YXgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiZGVsIGYnJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWwgJycgZicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X21pc21hdGNoZWRfYnJhY2VzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAiZi1zdHJpbmc6IHNpbmdsZSAnfScgaXMgbm90IGFsbG93ZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiZid7e30nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYne3t9fX0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid4fSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid4fXgnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciJmJ1x1MDA3Yn0nIiwKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIENhbid0IGhhdmUgeyBvciB9IGluIGEgZm9ybWF0IHNwZWMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szOn0+MTB9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szOn19PjEwfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICJmLXN0cmluZzogZXhwZWN0aW5nICd9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJmJ3szOnt7PjEwfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7MyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7MyEnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezM6JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szIXMnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezMhczonIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezMhczozJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3h7JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3h7eCciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7eCciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7MzpzJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3t7eyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7e319eyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICAgICAgIyBCdXQgdGhlc2UgYXJlIGp1c3Qgbm9ybWFsIHN0cmluZ3MuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7InsifScsICd7JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3sifSJ9JywgJ30nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezM6eyJ9In0+MTB9JywgJ319fX19fX19fTMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezI6eyJ7In0+MTB9JywgJ3t7e3t7e3t7ezInKQorCisgICAgZGVmIHRlc3RfaWZfY29uZGl0aW9uYWwoc2VsZik6CisgICAgICAgICMgVGhlcmUncyBzcGVjaWFsIGxvZ2ljIGluIGNvbXBpbGUuYyB0byB0ZXN0IGlmIHRoZQorICAgICAgICAjICBjb25kaXRpb25hbCBmb3IgYW4gaWYgKGFuZCB3aGlsZSkgYXJlIGNvbnN0YW50cy4gRXhlcmNpc2UKKyAgICAgICAgIyAgdGhhdCBjb2RlLgorCisgICAgICAgIGRlZiB0ZXN0X2ZzdHJpbmcoeCwgZXhwZWN0ZWQpOgorICAgICAgICAgICAgZmxhZyA9IDAKKyAgICAgICAgICAgIGlmIGYne3h9JzoKKyAgICAgICAgICAgICAgICBmbGFnID0gMQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBmbGFnID0gMgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbGFnLCBleHBlY3RlZCkKKworICAgICAgICBkZWYgdGVzdF9jb25jYXRfZW1wdHkoeCwgZXhwZWN0ZWQpOgorICAgICAgICAgICAgZmxhZyA9IDAKKyAgICAgICAgICAgIGlmICcnIGYne3h9JzoKKyAgICAgICAgICAgICAgICBmbGFnID0gMQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBmbGFnID0gMgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbGFnLCBleHBlY3RlZCkKKworICAgICAgICBkZWYgdGVzdF9jb25jYXRfbm9uX2VtcHR5KHgsIGV4cGVjdGVkKToKKyAgICAgICAgICAgIGZsYWcgPSAwCisgICAgICAgICAgICBpZiAnICcgZid7eH0nOgorICAgICAgICAgICAgICAgIGZsYWcgPSAxCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGZsYWcgPSAyCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZsYWcsIGV4cGVjdGVkKQorCisgICAgICAgIHRlc3RfZnN0cmluZygnJywgMikKKyAgICAgICAgdGVzdF9mc3RyaW5nKCcgJywgMSkKKworICAgICAgICB0ZXN0X2NvbmNhdF9lbXB0eSgnJywgMikKKyAgICAgICAgdGVzdF9jb25jYXRfZW1wdHkoJyAnLCAxKQorCisgICAgICAgIHRlc3RfY29uY2F0X25vbl9lbXB0eSgnJywgMSkKKyAgICAgICAgdGVzdF9jb25jYXRfbm9uX2VtcHR5KCcgJywgMSkKKworICAgIGRlZiB0ZXN0X2VtcHR5X2Zvcm1hdF9zcGVjaWZpZXIoc2VsZik6CisgICAgICAgIHggPSAndGVzdCcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t4fScsICd0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t4On0nLCAndGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7eCFzOn0nLCAndGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7eCFyOn0nLCAiJ3Rlc3QnIikKKworICAgIGRlZiB0ZXN0X3N0cl9mb3JtYXRfZGlmZmVyZW5jZXMoc2VsZik6CisgICAgICAgIGQgPSB7J2EnOiAnc3RyaW5nJywKKyAgICAgICAgICAgICAwOiAnaW50ZWdlcicsCisgICAgICAgICAgICAgfQorICAgICAgICBhID0gMAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne2RbMF19JywgJ2ludGVnZXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne2RbImEiXX0nLCAnc3RyaW5nJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3tkW2FdfScsICdpbnRlZ2VyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgne2RbYV19Jy5mb3JtYXQoZD1kKSwgJ3N0cmluZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3tkWzBdfScuZm9ybWF0KGQ9ZCksICdpbnRlZ2VyJykKKworICAgIGRlZiB0ZXN0X2ludmFsaWRfZXhwcmVzc2lvbnMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICdpbnZhbGlkIHN5bnRheCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3IiZid7YVs0KX0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciJmJ3thKDRdfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9lcnJvcnMoc2VsZik6CisgICAgICAgICMgc2VlIGlzc3VlIDI2Mjg3CisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoVHlwZUVycm9yLCAndW5zdXBwb3J0ZWQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyImYneyhsYW1iZGE6IDApOnh9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiZid7KDAsKTp4fSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFZhbHVlRXJyb3IsICdVbmtub3duIGZvcm1hdCBjb2RlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbciJmJ3sxMDAwOmp9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiZid7MTAwMDpqfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9sb29wKHNlbGYpOgorICAgICAgICBmb3IgaSBpbiByYW5nZSgxMDAwKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidpOntpfScsICdpOicgKyBzdHIoaSkpCisKKyAgICBkZWYgdGVzdF9kaWN0KHNlbGYpOgorICAgICAgICBkID0geyciJzogJ2RxdW90ZScsCisgICAgICAgICAgICAgIiciOiAnc3F1b3RlJywKKyAgICAgICAgICAgICAnZm9vJzogJ2JhcicsCisgICAgICAgICAgICAgfQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnJyd7ZFsiJyJdfScnJywgJ3NxdW90ZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZiIiIntkWyciJ119IiIiLCAnZHF1b3RlJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne2RbImZvbyJdfScsICdiYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYie2RbJ2ZvbyddfSIsICdiYXInKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mdHBsaWIucHkgYi9MaWIvdGVzdC90ZXN0X2Z0cGxpYi5weQppbmRleCBhZWY2NmRhLi4xMmZhYmM1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Z0cGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Z0cGxpYi5weQpAQCAtMzExLDEwICszMTEsMTIgQEAKICAgICAgICAgX3NzbF9jbG9zaW5nID0gRmFsc2UKIAogICAgICAgICBkZWYgc2VjdXJlX2Nvbm5lY3Rpb24oc2VsZik6Ci0gICAgICAgICAgICBzb2NrZXQgPSBzc2wud3JhcF9zb2NrZXQoc2VsZi5zb2NrZXQsIHN1cHByZXNzX3JhZ2dlZF9lb2ZzPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRmaWxlPUNFUlRGSUxFLCBzZXJ2ZXJfc2lkZT1UcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzbF92ZXJzaW9uPXNzbC5QUk9UT0NPTF9TU0x2MjMpCisgICAgICAgICAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoKQorICAgICAgICAgICAgY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEUpCisgICAgICAgICAgICBzb2NrZXQgPSBjb250ZXh0LndyYXBfc29ja2V0KHNlbGYuc29ja2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwcmVzc19yYWdnZWRfZW9mcz1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX3NpZGU9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q9RmFsc2UpCiAgICAgICAgICAgICBzZWxmLmRlbF9jaGFubmVsKCkKICAgICAgICAgICAgIHNlbGYuc2V0X3NvY2tldChzb2NrZXQpCiAgICAgICAgICAgICBzZWxmLl9zc2xfYWNjZXB0aW5nID0gVHJ1ZQpAQCAtMTA0OSwxMCArMTA1MSwxOSBAQAogICAgICAgICBmdHAuY2xvc2UoKQogCiAKK2NsYXNzIE1pc2NUZXN0Q2FzZShUZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICBibGFja2xpc3QgPSB7J01TR19PT0InLCAnRlRQX1BPUlQnLCAnTUFYTElORScsICdDUkxGJywgJ0JfQ1JMRicsCisgICAgICAgICAgICAgICAgICAgICAnRXJyb3InLCAncGFyc2UxNTAnLCAncGFyc2UyMjcnLCAncGFyc2UyMjknLCAncGFyc2UyNTcnLAorICAgICAgICAgICAgICAgICAgICAgJ3ByaW50X2xpbmUnLCAnZnRwY3AnLCAndGVzdCd9CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIGZ0cGxpYiwgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKworCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgdGVzdHMgPSBbVGVzdEZUUENsYXNzLCBUZXN0VGltZW91dHMsCiAgICAgICAgICAgICAgVGVzdElQdjZFbnZpcm9ubWVudCwKLSAgICAgICAgICAgICBUZXN0VExTX0ZUUENsYXNzTWl4aW4sIFRlc3RUTFNfRlRQQ2xhc3NdCisgICAgICAgICAgICAgVGVzdFRMU19GVFBDbGFzc01peGluLCBUZXN0VExTX0ZUUENsYXNzLAorICAgICAgICAgICAgIE1pc2NUZXN0Q2FzZV0KIAogICAgIHRocmVhZF9pbmZvID0gc3VwcG9ydC50aHJlYWRpbmdfc2V0dXAoKQogICAgIHRyeToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZnVuY3Rvb2xzLnB5IGIvTGliL3Rlc3QvdGVzdF9mdW5jdG9vbHMucHkKaW5kZXggYjQzMWUwNS4uM2E0MDg2MSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mdW5jdG9vbHMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mdW5jdG9vbHMucHkKQEAgLTksNiArOSw3IEBACiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogZnJvbSB3ZWFrcmVmIGltcG9ydCBwcm94eQoraW1wb3J0IGNvbnRleHRsaWIKIHRyeToKICAgICBpbXBvcnQgdGhyZWFkaW5nCiBleGNlcHQgSW1wb3J0RXJyb3I6CkBAIC0yMSw2ICsyMiwxNCBAQAogCiBkZWNpbWFsID0gc3VwcG9ydC5pbXBvcnRfZnJlc2hfbW9kdWxlKCdkZWNpbWFsJywgZnJlc2g9WydfZGVjaW1hbCddKQogCitAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgorZGVmIHJlcGxhY2VkX21vZHVsZShuYW1lLCByZXBsYWNlbWVudCk6CisgICAgb3JpZ2luYWxfbW9kdWxlID0gc3lzLm1vZHVsZXNbbmFtZV0KKyAgICBzeXMubW9kdWxlc1tuYW1lXSA9IHJlcGxhY2VtZW50CisgICAgdHJ5OgorICAgICAgICB5aWVsZAorICAgIGZpbmFsbHk6CisgICAgICAgIHN5cy5tb2R1bGVzW25hbWVdID0gb3JpZ2luYWxfbW9kdWxlCiAKIGRlZiBjYXB0dXJlKCphcmdzLCAqKmt3KToKICAgICAiIiJjYXB0dXJlIGFsbCBwb3NpdGlvbmFsIGFuZCBrZXl3b3JkIGFyZ3VtZW50cyIiIgpAQCAtMTY4LDU4ICsxNzcsMzUgQEAKICAgICAgICAgcDIubmV3X2F0dHIgPSAnc3BhbScKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwMi5uZXdfYXR0ciwgJ3NwYW0nKQogCi0KLUB1bml0dGVzdC5za2lwVW5sZXNzKGNfZnVuY3Rvb2xzLCAncmVxdWlyZXMgdGhlIEMgX2Z1bmN0b29scyBtb2R1bGUnKQotY2xhc3MgVGVzdFBhcnRpYWxDKFRlc3RQYXJ0aWFsLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgaWYgY19mdW5jdG9vbHM6Ci0gICAgICAgIHBhcnRpYWwgPSBjX2Z1bmN0b29scy5wYXJ0aWFsCi0KLSAgICBkZWYgdGVzdF9hdHRyaWJ1dGVzX3Vud3JpdGFibGUoc2VsZik6Ci0gICAgICAgICMgYXR0cmlidXRlcyBzaG91bGQgbm90IGJlIHdyaXRhYmxlCi0gICAgICAgIHAgPSBzZWxmLnBhcnRpYWwoY2FwdHVyZSwgMSwgMiwgYT0xMCwgYj0yMCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldGF0dHIsIHAsICdmdW5jJywgbWFwKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0YXR0ciwgcCwgJ2FyZ3MnLCAoMSwgMikpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRhdHRyLCBwLCAna2V5d29yZHMnLCBkaWN0KGE9MSwgYj0yKSkKLQotICAgICAgICBwID0gc2VsZi5wYXJ0aWFsKGhleCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZGVsIHAuX19kaWN0X18KLSAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuZmFpbCgncGFydGlhbCBvYmplY3QgYWxsb3dlZCBfX2RpY3RfXyB0byBiZSBkZWxldGVkJykKLQogICAgIGRlZiB0ZXN0X3JlcHIoc2VsZik6CiAgICAgICAgIGFyZ3MgPSAob2JqZWN0KCksIG9iamVjdCgpKQogICAgICAgICBhcmdzX3JlcHIgPSAnLCAnLmpvaW4ocmVwcihhKSBmb3IgYSBpbiBhcmdzKQogICAgICAgICBrd2FyZ3MgPSB7J2EnOiBvYmplY3QoKSwgJ2InOiBvYmplY3QoKX0KICAgICAgICAga3dhcmdzX3JlcHJzID0gWydhPXthIXJ9LCBiPXtiIXJ9Jy5mb3JtYXRfbWFwKGt3YXJncyksCiAgICAgICAgICAgICAgICAgICAgICAgICAnYj17YiFyfSwgYT17YSFyfScuZm9ybWF0X21hcChrd2FyZ3MpXQotICAgICAgICBpZiBzZWxmLnBhcnRpYWwgaXMgY19mdW5jdG9vbHMucGFydGlhbDoKKyAgICAgICAgaWYgc2VsZi5wYXJ0aWFsIGluIChjX2Z1bmN0b29scy5wYXJ0aWFsLCBweV9mdW5jdG9vbHMucGFydGlhbCk6CiAgICAgICAgICAgICBuYW1lID0gJ2Z1bmN0b29scy5wYXJ0aWFsJwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgbmFtZSA9IHNlbGYucGFydGlhbC5fX25hbWVfXwogCiAgICAgICAgIGYgPSBzZWxmLnBhcnRpYWwoY2FwdHVyZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgne30oeyFyfSknLmZvcm1hdChuYW1lLCBjYXB0dXJlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXByKGYpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne25hbWV9KHtjYXB0dXJlIXJ9KScsIHJlcHIoZikpCiAKICAgICAgICAgZiA9IHNlbGYucGFydGlhbChjYXB0dXJlLCAqYXJncykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgne30oeyFyfSwge30pJy5mb3JtYXQobmFtZSwgY2FwdHVyZSwgYXJnc19yZXByKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXByKGYpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne25hbWV9KHtjYXB0dXJlIXJ9LCB7YXJnc19yZXByfSknLCByZXByKGYpKQogCiAgICAgICAgIGYgPSBzZWxmLnBhcnRpYWwoY2FwdHVyZSwgKiprd2FyZ3MpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocmVwcihmKSwKLSAgICAgICAgICAgICAgICAgICAgICBbJ3t9KHshcn0sIHt9KScuZm9ybWF0KG5hbWUsIGNhcHR1cmUsIGt3YXJnc19yZXByKQorICAgICAgICAgICAgICAgICAgICAgIFtmJ3tuYW1lfSh7Y2FwdHVyZSFyfSwge2t3YXJnc19yZXByfSknCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciBrd2FyZ3NfcmVwciBpbiBrd2FyZ3NfcmVwcnNdKQogCiAgICAgICAgIGYgPSBzZWxmLnBhcnRpYWwoY2FwdHVyZSwgKmFyZ3MsICoqa3dhcmdzKQogICAgICAgICBzZWxmLmFzc2VydEluKHJlcHIoZiksCi0gICAgICAgICAgICAgICAgICAgICAgWyd7fSh7IXJ9LCB7fSwge30pJy5mb3JtYXQobmFtZSwgY2FwdHVyZSwgYXJnc19yZXByLCBrd2FyZ3NfcmVwcikKKyAgICAgICAgICAgICAgICAgICAgICBbZid7bmFtZX0oe2NhcHR1cmUhcn0sIHthcmdzX3JlcHJ9LCB7a3dhcmdzX3JlcHJ9KScKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGt3YXJnc19yZXByIGluIGt3YXJnc19yZXByc10pCiAKICAgICBkZWYgdGVzdF9yZWN1cnNpdmVfcmVwcihzZWxmKToKLSAgICAgICAgaWYgc2VsZi5wYXJ0aWFsIGlzIGNfZnVuY3Rvb2xzLnBhcnRpYWw6CisgICAgICAgIGlmIHNlbGYucGFydGlhbCBpbiAoY19mdW5jdG9vbHMucGFydGlhbCwgcHlfZnVuY3Rvb2xzLnBhcnRpYWwpOgogICAgICAgICAgICAgbmFtZSA9ICdmdW5jdG9vbHMucGFydGlhbCcKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG5hbWUgPSBzZWxmLnBhcnRpYWwuX19uYW1lX18KQEAgLTIyNywzMCArMjEzLDMxIEBACiAgICAgICAgIGYgPSBzZWxmLnBhcnRpYWwoY2FwdHVyZSkKICAgICAgICAgZi5fX3NldHN0YXRlX18oKGYsICgpLCB7fSwge30pKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoZiksICclcyglcyguLi4pKScgJSAobmFtZSwgbmFtZSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoZiksICclcyguLi4pJyAlIChuYW1lLCkpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBmLl9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKCksIHt9LCB7fSkpCiAKICAgICAgICAgZiA9IHNlbGYucGFydGlhbChjYXB0dXJlKQogICAgICAgICBmLl9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKGYsKSwge30sIHt9KSkKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGYpLCAnJXMoJXIsICVzKC4uLikpJyAlIChuYW1lLCBjYXB0dXJlLCBuYW1lKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihmKSwgJyVzKCVyLCAuLi4pJyAlIChuYW1lLCBjYXB0dXJlLCkpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBmLl9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKCksIHt9LCB7fSkpCiAKICAgICAgICAgZiA9IHNlbGYucGFydGlhbChjYXB0dXJlKQogICAgICAgICBmLl9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKCksIHsnYSc6IGZ9LCB7fSkpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihmKSwgJyVzKCVyLCBhPSVzKC4uLikpJyAlIChuYW1lLCBjYXB0dXJlLCBuYW1lKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihmKSwgJyVzKCVyLCBhPS4uLiknICUgKG5hbWUsIGNhcHR1cmUsKSkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIGYuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoKSwge30sIHt9KSkKIAogICAgIGRlZiB0ZXN0X3BpY2tsZShzZWxmKToKLSAgICAgICAgZiA9IHNlbGYucGFydGlhbChzaWduYXR1cmUsIFsnYXNkZiddLCBiYXI9W1RydWVdKQotICAgICAgICBmLmF0dHIgPSBbXQotICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKLSAgICAgICAgICAgIGZfY29weSA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoZiwgcHJvdG8pKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaWduYXR1cmUoZl9jb3B5KSwgc2lnbmF0dXJlKGYpKQorICAgICAgICB3aXRoIHNlbGYuQWxsb3dQaWNrbGUoKToKKyAgICAgICAgICAgIGYgPSBzZWxmLnBhcnRpYWwoc2lnbmF0dXJlLCBbJ2FzZGYnXSwgYmFyPVtUcnVlXSkKKyAgICAgICAgICAgIGYuYXR0ciA9IFtdCisgICAgICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgICAgICBmX2NvcHkgPSBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGYsIHByb3RvKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpZ25hdHVyZShmX2NvcHkpLCBzaWduYXR1cmUoZikpCiAKICAgICBkZWYgdGVzdF9jb3B5KHNlbGYpOgogICAgICAgICBmID0gc2VsZi5wYXJ0aWFsKHNpZ25hdHVyZSwgWydhc2RmJ10sIGJhcj1bVHJ1ZV0pCkBAIC0yNzUsMTEgKzI2MiwxMyBAQAogICAgIGRlZiB0ZXN0X3NldHN0YXRlKHNlbGYpOgogICAgICAgICBmID0gc2VsZi5wYXJ0aWFsKHNpZ25hdHVyZSkKICAgICAgICAgZi5fX3NldHN0YXRlX18oKGNhcHR1cmUsICgxLCksIGRpY3QoYT0xMCksIGRpY3QoYXR0cj1bXSkpKQorCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2lnbmF0dXJlKGYpLAogICAgICAgICAgICAgICAgICAgICAgICAgIChjYXB0dXJlLCAoMSwpLCBkaWN0KGE9MTApLCBkaWN0KGF0dHI9W10pKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmKDIsIGI9MjApLCAoKDEsIDIpLCB7J2EnOiAxMCwgJ2InOiAyMH0pKQogCiAgICAgICAgIGYuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoMSwpLCBkaWN0KGE9MTApLCBOb25lKSkKKwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpZ25hdHVyZShmKSwgKGNhcHR1cmUsICgxLCksIGRpY3QoYT0xMCksIHt9KSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmKDIsIGI9MjApLCAoKDEsIDIpLCB7J2EnOiAxMCwgJ2InOiAyMH0pKQogCkBAIC0zMjYsMzggKzMxNSwzOSBAQAogICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoclswXSksIHR1cGxlKQogCiAgICAgZGVmIHRlc3RfcmVjdXJzaXZlX3BpY2tsZShzZWxmKToKLSAgICAgICAgZiA9IHNlbGYucGFydGlhbChjYXB0dXJlKQotICAgICAgICBmLl9fc2V0c3RhdGVfXygoZiwgKCksIHt9LCB7fSkpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgotICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUmVjdXJzaW9uRXJyb3IpOgotICAgICAgICAgICAgICAgICAgICBwaWNrbGUuZHVtcHMoZiwgcHJvdG8pCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBmLl9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKCksIHt9LCB7fSkpCisgICAgICAgIHdpdGggc2VsZi5BbGxvd1BpY2tsZSgpOgorICAgICAgICAgICAgZiA9IHNlbGYucGFydGlhbChjYXB0dXJlKQorICAgICAgICAgICAgZi5fX3NldHN0YXRlX18oKGYsICgpLCB7fSwge30pKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJlY3Vyc2lvbkVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHBpY2tsZS5kdW1wcyhmLCBwcm90bykKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgZi5fX3NldHN0YXRlX18oKGNhcHR1cmUsICgpLCB7fSwge30pKQogCi0gICAgICAgIGYgPSBzZWxmLnBhcnRpYWwoY2FwdHVyZSkKLSAgICAgICAgZi5fX3NldHN0YXRlX18oKGNhcHR1cmUsIChmLCksIHt9LCB7fSkpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgotICAgICAgICAgICAgICAgIGZfY29weSA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoZiwgcHJvdG8pKQotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhmX2NvcHkuYXJnc1swXSwgZl9jb3B5KQotICAgICAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgICAgIGZfY29weS5fX3NldHN0YXRlX18oKGNhcHR1cmUsICgpLCB7fSwge30pKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgZi5fX3NldHN0YXRlX18oKGNhcHR1cmUsICgpLCB7fSwge30pKQorICAgICAgICAgICAgZiA9IHNlbGYucGFydGlhbChjYXB0dXJlKQorICAgICAgICAgICAgZi5fX3NldHN0YXRlX18oKGNhcHR1cmUsIChmLCksIHt9LCB7fSkpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CisgICAgICAgICAgICAgICAgICAgIGZfY29weSA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoZiwgcHJvdG8pKQorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKGZfY29weS5hcmdzWzBdLCBmX2NvcHkpCisgICAgICAgICAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgICAgICAgICBmX2NvcHkuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoKSwge30sIHt9KSkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgZi5fX3NldHN0YXRlX18oKGNhcHR1cmUsICgpLCB7fSwge30pKQogCi0gICAgICAgIGYgPSBzZWxmLnBhcnRpYWwoY2FwdHVyZSkKLSAgICAgICAgZi5fX3NldHN0YXRlX18oKGNhcHR1cmUsICgpLCB7J2EnOiBmfSwge30pKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKLSAgICAgICAgICAgICAgICBmX2NvcHkgPSBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGYsIHByb3RvKSkKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZl9jb3B5LmtleXdvcmRzWydhJ10sIGZfY29weSkKLSAgICAgICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgICAgICBmX2NvcHkuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoKSwge30sIHt9KSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGYuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoKSwge30sIHt9KSkKKyAgICAgICAgICAgIGYgPSBzZWxmLnBhcnRpYWwoY2FwdHVyZSkKKyAgICAgICAgICAgIGYuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoKSwgeydhJzogZn0sIHt9KSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgICAgICAgICAgZl9jb3B5ID0gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhmLCBwcm90bykpCisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZl9jb3B5LmtleXdvcmRzWydhJ10sIGZfY29weSkKKyAgICAgICAgICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAgICAgICAgIGZfY29weS5fX3NldHN0YXRlX18oKGNhcHR1cmUsICgpLCB7fSwge30pKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBmLl9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKCksIHt9LCB7fSkpCiAKICAgICAjIElzc3VlIDYwODM6IFJlZmVyZW5jZSBjb3VudGluZyBidWcKICAgICBkZWYgdGVzdF9zZXRzdGF0ZV9yZWZjb3VudChzZWxmKToKQEAgLTM3NiwyNCArMzY2LDYwIEBACiAgICAgICAgIGYgPSBzZWxmLnBhcnRpYWwob2JqZWN0KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGYuX19zZXRzdGF0ZV9fLCBCYWRTZXF1ZW5jZSgpKQogCitAdW5pdHRlc3Quc2tpcFVubGVzcyhjX2Z1bmN0b29scywgJ3JlcXVpcmVzIHRoZSBDIF9mdW5jdG9vbHMgbW9kdWxlJykKK2NsYXNzIFRlc3RQYXJ0aWFsQyhUZXN0UGFydGlhbCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGlmIGNfZnVuY3Rvb2xzOgorICAgICAgICBwYXJ0aWFsID0gY19mdW5jdG9vbHMucGFydGlhbAorCisgICAgY2xhc3MgQWxsb3dQaWNrbGU6CisgICAgICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgICAgICByZXR1cm4gc2VsZgorICAgICAgICBkZWYgX19leGl0X18oc2VsZiwgdHlwZSwgdmFsdWUsIHRiKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIHRlc3RfYXR0cmlidXRlc191bndyaXRhYmxlKHNlbGYpOgorICAgICAgICAjIGF0dHJpYnV0ZXMgc2hvdWxkIG5vdCBiZSB3cml0YWJsZQorICAgICAgICBwID0gc2VsZi5wYXJ0aWFsKGNhcHR1cmUsIDEsIDIsIGE9MTAsIGI9MjApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRhdHRyLCBwLCAnZnVuYycsIG1hcCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldGF0dHIsIHAsICdhcmdzJywgKDEsIDIpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0YXR0ciwgcCwgJ2tleXdvcmRzJywgZGljdChhPTEsIGI9MikpCisKKyAgICAgICAgcCA9IHNlbGYucGFydGlhbChoZXgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGRlbCBwLl9fZGljdF9fCisgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ3BhcnRpYWwgb2JqZWN0IGFsbG93ZWQgX19kaWN0X18gdG8gYmUgZGVsZXRlZCcpCiAKIGNsYXNzIFRlc3RQYXJ0aWFsUHkoVGVzdFBhcnRpYWwsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBwYXJ0aWFsID0gc3RhdGljbWV0aG9kKHB5X2Z1bmN0b29scy5wYXJ0aWFsKQorICAgIHBhcnRpYWwgPSBweV9mdW5jdG9vbHMucGFydGlhbAogCisgICAgY2xhc3MgQWxsb3dQaWNrbGU6CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgIHNlbGYuX2NtID0gcmVwbGFjZWRfbW9kdWxlKCJmdW5jdG9vbHMiLCBweV9mdW5jdG9vbHMpCisgICAgICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fY20uX19lbnRlcl9fKCkKKyAgICAgICAgZGVmIF9fZXhpdF9fKHNlbGYsIHR5cGUsIHZhbHVlLCB0Yik6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fY20uX19leGl0X18odHlwZSwgdmFsdWUsIHRiKQogCiBpZiBjX2Z1bmN0b29sczoKLSAgICBjbGFzcyBQYXJ0aWFsU3ViY2xhc3MoY19mdW5jdG9vbHMucGFydGlhbCk6CisgICAgY2xhc3MgQ1BhcnRpYWxTdWJjbGFzcyhjX2Z1bmN0b29scy5wYXJ0aWFsKToKICAgICAgICAgcGFzcwogCitjbGFzcyBQeVBhcnRpYWxTdWJjbGFzcyhweV9mdW5jdG9vbHMucGFydGlhbCk6CisgICAgcGFzcwogCiBAdW5pdHRlc3Quc2tpcFVubGVzcyhjX2Z1bmN0b29scywgJ3JlcXVpcmVzIHRoZSBDIF9mdW5jdG9vbHMgbW9kdWxlJykKIGNsYXNzIFRlc3RQYXJ0aWFsQ1N1YmNsYXNzKFRlc3RQYXJ0aWFsQyk6CiAgICAgaWYgY19mdW5jdG9vbHM6Ci0gICAgICAgIHBhcnRpYWwgPSBQYXJ0aWFsU3ViY2xhc3MKKyAgICAgICAgcGFydGlhbCA9IENQYXJ0aWFsU3ViY2xhc3MKIAogICAgICMgcGFydGlhbCBzdWJjbGFzc2VzIGFyZSBub3Qgb3B0aW1pemVkIGZvciBuZXN0ZWQgY2FsbHMKICAgICB0ZXN0X25lc3RlZF9vcHRpbWl6YXRpb24gPSBOb25lCiAKK2NsYXNzIFRlc3RQYXJ0aWFsUHlTdWJjbGFzcyhUZXN0UGFydGlhbFB5KToKKyAgICBwYXJ0aWFsID0gUHlQYXJ0aWFsU3ViY2xhc3MKIAogY2xhc3MgVGVzdFBhcnRpYWxNZXRob2QodW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC02ODQsOSArNzEwLDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlci5hdHRyLCAnVGhpcyBpcyBhIGRpZmZlcmVudCB0ZXN0JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVyLmRpY3RfYXR0ciwgZi5kaWN0X2F0dHIpCiAKLQorQHVuaXR0ZXN0LnNraXBVbmxlc3MoY19mdW5jdG9vbHMsICdyZXF1aXJlcyB0aGUgQyBfZnVuY3Rvb2xzIG1vZHVsZScpCiBjbGFzcyBUZXN0UmVkdWNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBmdW5jID0gZnVuY3Rvb2xzLnJlZHVjZQorICAgIGlmIGNfZnVuY3Rvb2xzOgorICAgICAgICBmdW5jID0gY19mdW5jdG9vbHMucmVkdWNlCiAKICAgICBkZWYgdGVzdF9yZWR1Y2Uoc2VsZik6CiAgICAgICAgIGNsYXNzIFNxdWFyZXM6CkBAIC0xMzA4LDcgKzEzMzUsNyBAQAogICAgICAgICAgICAgICAgIGYuY2FjaGVfY2xlYXIoKQogCiAgICAgICAgIG9yaWdfc2kgPSBzeXMuZ2V0c3dpdGNoaW50ZXJ2YWwoKQotICAgICAgICBzeXMuc2V0c3dpdGNoaW50ZXJ2YWwoMWUtNikKKyAgICAgICAgc3VwcG9ydC5zZXRzd2l0Y2hpbnRlcnZhbCgxZS02KQogICAgICAgICB0cnk6CiAgICAgICAgICAgICAjIGNyZWF0ZSBuIHRocmVhZHMgaW4gb3JkZXIgdG8gZmlsbCBjYWNoZQogICAgICAgICAgICAgdGhyZWFkcyA9IFt0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1mdWxsLCBhcmdzPVtrXSkKQEAgLTE1ODAsMTMgKzE2MDcsMTUgQEAKICAgICAgICAgYmFzZXMgPSBbYy5TZXF1ZW5jZSwgYy5NdXRhYmxlTWFwcGluZywgYy5NYXBwaW5nLCBjLlNldF0KICAgICAgICAgZm9yIGhheXN0YWNrIGluIHBlcm11dGF0aW9ucyhiYXNlcyk6CiAgICAgICAgICAgICBtID0gbXJvKGRpY3QsIGhheXN0YWNrKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBbZGljdCwgYy5NdXRhYmxlTWFwcGluZywgYy5NYXBwaW5nLCBjLlNpemVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5JdGVyYWJsZSwgYy5Db250YWluZXIsIG9iamVjdF0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIFtkaWN0LCBjLk11dGFibGVNYXBwaW5nLCBjLk1hcHBpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLkNvbGxlY3Rpb24sIGMuU2l6ZWQsIGMuSXRlcmFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLkNvbnRhaW5lciwgb2JqZWN0XSkKICAgICAgICAgYmFzZXMgPSBbYy5Db250YWluZXIsIGMuTWFwcGluZywgYy5NdXRhYmxlTWFwcGluZywgYy5PcmRlcmVkRGljdF0KICAgICAgICAgZm9yIGhheXN0YWNrIGluIHBlcm11dGF0aW9ucyhiYXNlcyk6CiAgICAgICAgICAgICBtID0gbXJvKGMuQ2hhaW5NYXAsIGhheXN0YWNrKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBbYy5DaGFpbk1hcCwgYy5NdXRhYmxlTWFwcGluZywgYy5NYXBwaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5TaXplZCwgYy5JdGVyYWJsZSwgYy5Db250YWluZXIsIG9iamVjdF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLkNvbGxlY3Rpb24sIGMuU2l6ZWQsIGMuSXRlcmFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLkNvbnRhaW5lciwgb2JqZWN0XSkKIAogICAgICAgICAjIElmIHRoZXJlJ3MgYSBnZW5lcmljIGZ1bmN0aW9uIHdpdGggaW1wbGVtZW50YXRpb25zIHJlZ2lzdGVyZWQgZm9yCiAgICAgICAgICMgYm90aCBTaXplZCBhbmQgQ29udGFpbmVyLCBwYXNzaW5nIGEgZGVmYXVsdGRpY3QgdG8gaXQgcmVzdWx0cyBpbiBhbgpAQCAtMTYwNyw5ICsxNjM2LDkgQEAKICAgICAgICAgYmFzZXMgPSBbYy5NdXRhYmxlU2VxdWVuY2UsIGMuTXV0YWJsZU1hcHBpbmddCiAgICAgICAgIGZvciBoYXlzdGFjayBpbiBwZXJtdXRhdGlvbnMoYmFzZXMpOgogICAgICAgICAgICAgbSA9IG1ybyhELCBiYXNlcykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgW0QsIGMuTXV0YWJsZVNlcXVlbmNlLCBjLlNlcXVlbmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5kZWZhdWx0ZGljdCwgZGljdCwgYy5NdXRhYmxlTWFwcGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuTWFwcGluZywgYy5TaXplZCwgYy5JdGVyYWJsZSwgYy5Db250YWluZXIsCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIFtELCBjLk11dGFibGVTZXF1ZW5jZSwgYy5TZXF1ZW5jZSwgYy5SZXZlcnNpYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5kZWZhdWx0ZGljdCwgZGljdCwgYy5NdXRhYmxlTWFwcGluZywgYy5NYXBwaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5Db2xsZWN0aW9uLCBjLlNpemVkLCBjLkl0ZXJhYmxlLCBjLkNvbnRhaW5lciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdF0pCiAKICAgICAgICAgIyBDb250YWluZXIgYW5kIENhbGxhYmxlIGFyZSByZWdpc3RlcmVkIG9uIGRpZmZlcmVudCBiYXNlIGNsYXNzZXMgYW5kCkBAIC0xNjIyLDcgKzE2NTEsOCBAQAogICAgICAgICBmb3IgaGF5c3RhY2sgaW4gcGVybXV0YXRpb25zKGJhc2VzKToKICAgICAgICAgICAgIG0gPSBtcm8oQywgaGF5c3RhY2spCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIFtDLCBjLkNhbGxhYmxlLCBjLmRlZmF1bHRkaWN0LCBkaWN0LCBjLk1hcHBpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLlNpemVkLCBjLkl0ZXJhYmxlLCBjLkNvbnRhaW5lciwgb2JqZWN0XSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuQ29sbGVjdGlvbiwgYy5TaXplZCwgYy5JdGVyYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuQ29udGFpbmVyLCBvYmplY3RdKQogCiAgICAgZGVmIHRlc3RfcmVnaXN0ZXJfYWJjKHNlbGYpOgogICAgICAgICBjID0gY29sbGVjdGlvbnMKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZnV0dXJlLnB5IGIvTGliL3Rlc3QvdGVzdF9mdXR1cmUucHkKaW5kZXggN2IwNzJhZC4uMmYxYzQxMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mdXR1cmUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mdXR1cmUucHkKQEAgLTUsNyArNSw3IEBACiBpbXBvcnQgb3MKIGltcG9ydCByZQogCi1yeCA9IHJlLmNvbXBpbGUoJ1woKFxTKykucHksIGxpbmUgKFxkKyknKQorcnggPSByZS5jb21waWxlKHInXCgoXFMrKS5weSwgbGluZSAoXGQrKScpCiAKIGRlZiBnZXRfZXJyb3JfbG9jYXRpb24obXNnKToKICAgICBtbyA9IHJ4LnNlYXJjaChzdHIobXNnKSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ2MucHkgYi9MaWIvdGVzdC90ZXN0X2djLnB5CmluZGV4IGE0ZDY4NGIuLmU3Mjc0OTkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9nYy5weQpAQCAtNjg0LDcgKzY4NCw2IEBACiAgICAgICAgICMgQ3JlYXRlIGEgcmVmZXJlbmNlIGN5Y2xlIHRocm91Z2ggdGhlIF9fbWFpbl9fIG1vZHVsZSBhbmQgY2hlY2sKICAgICAgICAgIyBpdCBnZXRzIGNvbGxlY3RlZCBhdCBpbnRlcnByZXRlciBzaHV0ZG93bi4KICAgICAgICAgY29kZSA9ICIiImlmIDE6Ci0gICAgICAgICAgICBpbXBvcnQgd2Vha3JlZgogICAgICAgICAgICAgY2xhc3MgQzoKICAgICAgICAgICAgICAgICBkZWYgX19kZWxfXyhzZWxmKToKICAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ19fZGVsX18gY2FsbGVkJykKQEAgLTY5OSw3ICs2OTgsNiBAQAogICAgICAgICAjIFNhbWUgYXMgYWJvdmUsIGJ1dCB3aXRoIGEgbm9uLV9fbWFpbl9fIG1vZHVsZS4KICAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBtb2R1bGUgPSAiIiJpZiAxOgotICAgICAgICAgICAgICAgIGltcG9ydCB3ZWFrcmVmCiAgICAgICAgICAgICAgICAgY2xhc3MgQzoKICAgICAgICAgICAgICAgICAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgnX19kZWxfXyBjYWxsZWQnKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9nZGIucHkgYi9MaWIvdGVzdC90ZXN0X2dkYi5weQppbmRleCAzZGIxMGI2Li42MGYxZDkyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2dkYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2dkYi5weQpAQCAtNSw3ICs1LDYgQEAKIAogaW1wb3J0IG9zCiBpbXBvcnQgcmUKLWltcG9ydCBwcHJpbnQKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCiBpbXBvcnQgc3lzY29uZmlnCkBAIC0xMTEsNiArMTEwLDcgQEAKIAogQlJFQUtQT0lOVF9GTj0nYnVpbHRpbl9pZCcKIAorQHVuaXR0ZXN0LnNraXBJZihzdXBwb3J0LlBHTywgIm5vdCB1c2VmdWwgZm9yIFBHTyIpCiBjbGFzcyBEZWJ1Z2dlclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgICIiIlRlc3QgdGhhdCB0aGUgZGVidWdnZXIgY2FuIGRlYnVnIFB5dGhvbi4iIiIKQEAgLTE3Nyw2ICsxNzcsNyBAQAogICAgICAgICBhcmdzID0gWyctLWV2YWwtY29tbWFuZD0lcycgJSBjbWQgZm9yIGNtZCBpbiBjb21tYW5kc10KICAgICAgICAgYXJncyArPSBbIi0tYXJncyIsCiAgICAgICAgICAgICAgICAgIHN5cy5leGVjdXRhYmxlXQorICAgICAgICBhcmdzLmV4dGVuZChzdWJwcm9jZXNzLl9hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKSkKIAogICAgICAgICBpZiBub3QgaW1wb3J0X3NpdGU6CiAgICAgICAgICAgICAjIC1TIHN1cHByZXNzZXMgdGhlIGRlZmF1bHQgJ2ltcG9ydCBzaXRlJwpAQCAtMjQwLDcgKzI0MSw3IEBACiAgICAgICAgICMgZ2RiIGNhbiBpbnNlcnQgYWRkaXRpb25hbCAnXG4nIGFuZCBzcGFjZSBjaGFyYWN0ZXJzIGluIHZhcmlvdXMgcGxhY2VzCiAgICAgICAgICMgaW4gaXRzIG91dHB1dCwgZGVwZW5kaW5nIG9uIHRoZSB3aWR0aCBvZiB0aGUgdGVybWluYWwgaXQncyBjb25uZWN0ZWQKICAgICAgICAgIyB0byAodXNpbmcgaXRzICJ3cmFwX2hlcmUiIGZ1bmN0aW9uKQotICAgICAgICBtID0gcmUubWF0Y2goJy4qIzBccytidWlsdGluX2lkXHMrXChzZWxmXD0uKixccyt2PVxzKiguKj8pXClccythdFxzK1xTKlB5dGhvbi9ibHRpbm1vZHVsZS5jLionLAorICAgICAgICBtID0gcmUubWF0Y2gocicuKiMwXHMrYnVpbHRpbl9pZFxzK1woc2VsZlw9LiosXHMrdj1ccyooLio/KVwpXHMrYXRccytcUypQeXRob24vYmx0aW5tb2R1bGUuYy4qJywKICAgICAgICAgICAgICAgICAgICAgIGdkYl9vdXRwdXQsIHJlLkRPVEFMTCkKICAgICAgICAgaWYgbm90IG06CiAgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuZXhwZWN0ZWQgZ2RiIG91dHB1dDogJXJcbiVzJyAlIChnZGJfb3V0cHV0LCBnZGJfb3V0cHV0KSkKQEAgLTI5Miw3ICsyOTMsOCBAQAogICAgICAgICAnVmVyaWZ5IHRoZSBwcmV0dHktcHJpbnRpbmcgb2YgZGljdGlvbmFyaWVzJwogICAgICAgICBzZWxmLmFzc2VydEdkYlJlcHIoe30pCiAgICAgICAgIHNlbGYuYXNzZXJ0R2RiUmVwcih7J2Zvbyc6ICdiYXInfSwgInsnZm9vJzogJ2Jhcid9IikKLSAgICAgICAgc2VsZi5hc3NlcnRHZGJSZXByKHsnZm9vJzogJ2JhcicsICdkb3VnbGFzJzogNDJ9LCAieydkb3VnbGFzJzogNDIsICdmb28nOiAnYmFyJ30iKQorICAgICAgICAjIFB5dGhvbiBwcmVzZXJ2ZXMgaW5zZXJ0aW9uIG9yZGVyIHNpbmNlIDMuNgorICAgICAgICBzZWxmLmFzc2VydEdkYlJlcHIoeydmb28nOiAnYmFyJywgJ2RvdWdsYXMnOiA0Mn0sICJ7J2Zvbyc6ICdiYXInLCAnZG91Z2xhcyc6IDQyfSIpCiAKICAgICBkZWYgdGVzdF9saXN0cyhzZWxmKToKICAgICAgICAgJ1ZlcmlmeSB0aGUgcHJldHR5LXByaW50aW5nIG9mIGxpc3RzJwpAQCAtMzU1LDkgKzM1NywxMiBAQAogICAgICAgICAnVmVyaWZ5IHRoZSBwcmV0dHktcHJpbnRpbmcgb2Ygc2V0cycKICAgICAgICAgaWYgKGdkYl9tYWpvcl92ZXJzaW9uLCBnZGJfbWlub3JfdmVyc2lvbikgPCAoNywgMyk6CiAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJwcmV0dHktcHJpbnRpbmcgb2Ygc2V0cyBuZWVkcyBnZGIgNy4zIG9yIGxhdGVyIikKLSAgICAgICAgc2VsZi5hc3NlcnRHZGJSZXByKHNldCgpLCAnc2V0KCknKQotICAgICAgICBzZWxmLmFzc2VydEdkYlJlcHIoc2V0KFsnYScsICdiJ10pLCAieydhJywgJ2InfSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0R2RiUmVwcihzZXQoWzQsIDUsIDZdKSwgIns0LCA1LCA2fSIpCisgICAgICAgIHNlbGYuYXNzZXJ0R2RiUmVwcihzZXQoKSwgInNldCgpIikKKyAgICAgICAgc2VsZi5hc3NlcnRHZGJSZXByKHNldChbJ2EnXSksICJ7J2EnfSIpCisgICAgICAgICMgUFlUSE9OSEFTSFNFRUQgaXMgbmVlZCB0byBnZXQgdGhlIGV4YWN0IGZyb3plbnNldCBpdGVtIG9yZGVyCisgICAgICAgIGlmIG5vdCBzeXMuZmxhZ3MuaWdub3JlX2Vudmlyb25tZW50OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRHZGJSZXByKHNldChbJ2EnLCAnYiddKSwgInsnYScsICdiJ30iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRHZGJSZXByKHNldChbNCwgNSwgNl0pLCAiezQsIDUsIDZ9IikKIAogICAgICAgICAjIEVuc3VyZSB0aGF0IHdlIGhhbmRsZSBzZXRzIGNvbnRhaW5pbmcgdGhlICJkdW1teSIga2V5IHZhbHVlLAogICAgICAgICAjIHdoaWNoIGhhcHBlbnMgb24gZGVsZXRpb246CkBAIC0zNzAsOSArMzc1LDEyIEBACiAgICAgICAgICdWZXJpZnkgdGhlIHByZXR0eS1wcmludGluZyBvZiBmcm96ZW5zZXRzJwogICAgICAgICBpZiAoZ2RiX21ham9yX3ZlcnNpb24sIGdkYl9taW5vcl92ZXJzaW9uKSA8ICg3LCAzKToKICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoInByZXR0eS1wcmludGluZyBvZiBmcm96ZW5zZXRzIG5lZWRzIGdkYiA3LjMgb3IgbGF0ZXIiKQotICAgICAgICBzZWxmLmFzc2VydEdkYlJlcHIoZnJvemVuc2V0KCksICdmcm96ZW5zZXQoKScpCi0gICAgICAgIHNlbGYuYXNzZXJ0R2RiUmVwcihmcm96ZW5zZXQoWydhJywgJ2InXSksICJmcm96ZW5zZXQoeydhJywgJ2InfSkiKQotICAgICAgICBzZWxmLmFzc2VydEdkYlJlcHIoZnJvemVuc2V0KFs0LCA1LCA2XSksICJmcm96ZW5zZXQoezQsIDUsIDZ9KSIpCisgICAgICAgIHNlbGYuYXNzZXJ0R2RiUmVwcihmcm96ZW5zZXQoKSwgImZyb3plbnNldCgpIikKKyAgICAgICAgc2VsZi5hc3NlcnRHZGJSZXByKGZyb3plbnNldChbJ2EnXSksICJmcm96ZW5zZXQoeydhJ30pIikKKyAgICAgICAgIyBQWVRIT05IQVNIU0VFRCBpcyBuZWVkIHRvIGdldCB0aGUgZXhhY3QgZnJvemVuc2V0IGl0ZW0gb3JkZXIKKyAgICAgICAgaWYgbm90IHN5cy5mbGFncy5pZ25vcmVfZW52aXJvbm1lbnQ6CisgICAgICAgICAgICBzZWxmLmFzc2VydEdkYlJlcHIoZnJvemVuc2V0KFsnYScsICdiJ10pLCAiZnJvemVuc2V0KHsnYScsICdiJ30pIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R2RiUmVwcihmcm96ZW5zZXQoWzQsIDUsIDZdKSwgImZyb3plbnNldCh7NCwgNSwgNn0pIikKIAogICAgIGRlZiB0ZXN0X2V4Y2VwdGlvbnMoc2VsZik6CiAgICAgICAgICMgVGVzdCBhIFJ1bnRpbWVFcnJvcgpAQCAtNTAxLDYgKzUwOSwxMCBAQAogCiAgICAgZGVmIHRlc3RfYnVpbHRpbnNfaGVscChzZWxmKToKICAgICAgICAgJ0Vuc3VyZSB0aGF0IHRoZSBuZXctc3R5bGUgY2xhc3MgX0hlbHBlciBpbiBzaXRlLnB5IGNhbiBiZSBoYW5kbGVkJworCisgICAgICAgIGlmIHN5cy5mbGFncy5ub19zaXRlOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgibmVlZCBzaXRlIG1vZHVsZSwgYnV0IC1TIG9wdGlvbiB3YXMgdXNlZCIpCisKICAgICAgICAgIyAodGhpcyB3YXMgdGhlIGlzc3VlIGNhdXNpbmcgdHJhY2ViYWNrcyBpbgogICAgICAgICAjICBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlODAzMiNtc2cxMDA1MzcgKQogICAgICAgICBnZGJfcmVwciwgZ2RiX291dHB1dCA9IHNlbGYuZ2V0X2dkYl9yZXByKCdpZChfX2J1aWx0aW5zX18uaGVscCknLCBpbXBvcnRfc2l0ZT1UcnVlKQpAQCAtNTM2LDcgKzU0OCw3IEBACiBmb28gPSBGb28oKQogZm9vLmFuX2F0dHIgPSBmb28KIGlkKGZvbyknJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgnPEZvb1woYW5fYXR0cj08XC5cLlwuPlwpIGF0IHJlbW90ZSAweC0/WzAtOWEtZl0rPicsCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyJzxGb29cKGFuX2F0dHI9PFwuXC5cLj5cKSBhdCByZW1vdGUgMHgtP1swLTlhLWZdKz4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiX3JlcHIpLAogICAgICAgICAgICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgZ2RiIHJlcHJlc2VudGF0aW9uOiAlclxuJXMnICUgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnZGJfcmVwciwgZ2RiX291dHB1dCkpCkBAIC01NDksNyArNTYxLDcgQEAKIGZvbyA9IEZvbygpCiBmb28uYW5fYXR0ciA9IGZvbwogaWQoZm9vKScnJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCc8Rm9vXChhbl9hdHRyPTxcLlwuXC4+XCkgYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+JywKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHInPEZvb1woYW5fYXR0cj08XC5cLlwuPlwpIGF0IHJlbW90ZSAweC0/WzAtOWEtZl0rPicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGJfcmVwciksCiAgICAgICAgICAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBnZGIgcmVwcmVzZW50YXRpb246ICVyXG4lcycgJSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdkYl9yZXByLCBnZGJfb3V0cHV0KSkKQEAgLTU2Myw3ICs1NzUsNyBAQAogYS5hbl9hdHRyID0gYgogYi5hbl9hdHRyID0gYQogaWQoYSknJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgnPEZvb1woYW5fYXR0cj08Rm9vXChhbl9hdHRyPTxcLlwuXC4+XCkgYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+XCkgYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+JywKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHInPEZvb1woYW5fYXR0cj08Rm9vXChhbl9hdHRyPTxcLlwuXC4+XCkgYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+XCkgYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYl9yZXByKSwKICAgICAgICAgICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIGdkYiByZXByZXNlbnRhdGlvbjogJXJcbiVzJyAlIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2RiX3JlcHIsIGdkYl9vdXRwdXQpKQpAQCAtNTk4LDcgKzYxMCw3IEBACiAKICAgICBkZWYgdGVzdF9idWlsdGluX21ldGhvZChzZWxmKToKICAgICAgICAgZ2RiX3JlcHIsIGdkYl9vdXRwdXQgPSBzZWxmLmdldF9nZGJfcmVwcignaW1wb3J0IHN5czsgaWQoc3lzLnN0ZG91dC5yZWFkbGluZXMpJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCc8YnVpbHQtaW4gbWV0aG9kIHJlYWRsaW5lcyBvZiBfaW8uVGV4dElPV3JhcHBlciBvYmplY3QgYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+JywKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHInPGJ1aWx0LWluIG1ldGhvZCByZWFkbGluZXMgb2YgX2lvLlRleHRJT1dyYXBwZXIgb2JqZWN0IGF0IHJlbW90ZSAweC0/WzAtOWEtZl0rPicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGJfcmVwciksCiAgICAgICAgICAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBnZGIgcmVwcmVzZW50YXRpb246ICVyXG4lcycgJSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdkYl9yZXByLCBnZGJfb3V0cHV0KSkKQEAgLTYxMyw3ICs2MjUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtwb2ludD0nYnVpbHRpbl9pZCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRzX2FmdGVyX2JyZWFrcG9pbnQ9WydwcmludCAoUHlGcmFtZU9iamVjdCopKCgoUHlDb2RlT2JqZWN0Kil2KS0+Y29fem9tYmllZnJhbWUpJ10KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCcuKlxzK1wkMSA9XHMrRnJhbWUgMHgtP1swLTlhLWZdKywgZm9yIGZpbGUgPHN0cmluZz4sIGxpbmUgMywgaW4gZm9vIFwoXClccysuKicsCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyJy4qXHMrXCQxID1ccytGcmFtZSAweC0/WzAtOWEtZl0rLCBmb3IgZmlsZSA8c3RyaW5nPiwgbGluZSAzLCBpbiBmb28gXChcKVxzKy4qJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYl9vdXRwdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZS5ET1RBTEwpLAogICAgICAgICAgICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgZ2RiIHJlcHJlc2VudGF0aW9uOiAlclxuJXMnICUgKGdkYl9vdXRwdXQsIGdkYl9vdXRwdXQpKQpAQCAtNjY3LDcgKzY3OSw3IEBACiAgICAgZGVmIHRlc3RfcHl1cF9jb21tYW5kKHNlbGYpOgogICAgICAgICAnVmVyaWZ5IHRoYXQgdGhlICJweS11cCIgY29tbWFuZCB3b3JrcycKICAgICAgICAgYnQgPSBzZWxmLmdldF9zdGFja190cmFjZShzY3JpcHQ9c2VsZi5nZXRfc2FtcGxlX3NjcmlwdCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZHNfYWZ0ZXJfYnJlYWtwb2ludD1bJ3B5LXVwJ10pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kc19hZnRlcl9icmVha3BvaW50PVsncHktdXAnLCAncHktdXAnXSkKICAgICAgICAgc2VsZi5hc3NlcnRNdWx0aWxpbmVNYXRjaGVzKGJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcicnJ14uKgogI1swLTldKyBGcmFtZSAweC0/WzAtOWEtZl0rLCBmb3IgZmlsZSAuKmdkYl9zYW1wbGUucHksIGxpbmUgNywgaW4gYmFyIFwoYT0xLCBiPTIsIGM9M1wpCkBAIC02ODYsNyArNjk4LDcgQEAKICAgICBkZWYgdGVzdF91cF9hdF90b3Aoc2VsZik6CiAgICAgICAgICdWZXJpZnkgaGFuZGxpbmcgb2YgInB5LXVwIiBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjaycKICAgICAgICAgYnQgPSBzZWxmLmdldF9zdGFja190cmFjZShzY3JpcHQ9c2VsZi5nZXRfc2FtcGxlX3NjcmlwdCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZHNfYWZ0ZXJfYnJlYWtwb2ludD1bJ3B5LXVwJ10gKiA0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZHNfYWZ0ZXJfYnJlYWtwb2ludD1bJ3B5LXVwJ10gKiA1KQogICAgICAgICBzZWxmLmFzc2VydEVuZHNXaXRoKGJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdVbmFibGUgdG8gZmluZCBhbiBvbGRlciBweXRob24gZnJhbWVcbicpCiAKQEAgLTY5Niw3ICs3MDgsNyBAQAogICAgIGRlZiB0ZXN0X3VwX3RoZW5fZG93bihzZWxmKToKICAgICAgICAgJ1ZlcmlmeSAicHktdXAiIGZvbGxvd2VkIGJ5ICJweS1kb3duIicKICAgICAgICAgYnQgPSBzZWxmLmdldF9zdGFja190cmFjZShzY3JpcHQ9c2VsZi5nZXRfc2FtcGxlX3NjcmlwdCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZHNfYWZ0ZXJfYnJlYWtwb2ludD1bJ3B5LXVwJywgJ3B5LWRvd24nXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRzX2FmdGVyX2JyZWFrcG9pbnQ9WydweS11cCcsICdweS11cCcsICdweS1kb3duJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0TXVsdGlsaW5lTWF0Y2hlcyhidCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInJydeLioKICNbMC05XSsgRnJhbWUgMHgtP1swLTlhLWZdKywgZm9yIGZpbGUgLipnZGJfc2FtcGxlLnB5LCBsaW5lIDcsIGluIGJhciBcKGE9MSwgYj0yLCBjPTNcKQpAQCAtNzE1LDYgKzcyNyw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0TXVsdGlsaW5lTWF0Y2hlcyhidCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInJydeLioKIFRyYWNlYmFjayBcKG1vc3QgcmVjZW50IGNhbGwgZmlyc3RcKToKKyAgPGJ1aWx0LWluIG1ldGhvZCBpZCBvZiBtb2R1bGUgb2JqZWN0IC4qPgogICBGaWxlICIuKmdkYl9zYW1wbGUucHkiLCBsaW5lIDEwLCBpbiBiYXoKICAgICBpZFwoNDJcKQogICBGaWxlICIuKmdkYl9zYW1wbGUucHkiLCBsaW5lIDcsIGluIGJhcgpAQCAtODQxLDcgKzg1NCw3IEBACiAgICAgZGVmIHRlc3RfYmFzaWNfY29tbWFuZChzZWxmKToKICAgICAgICAgJ1ZlcmlmeSB0aGF0IHRoZSAicHktcHJpbnQiIGNvbW1hbmQgd29ya3MnCiAgICAgICAgIGJ0ID0gc2VsZi5nZXRfc3RhY2tfdHJhY2Uoc2NyaXB0PXNlbGYuZ2V0X3NhbXBsZV9zY3JpcHQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRzX2FmdGVyX2JyZWFrcG9pbnQ9WydweS1wcmludCBhcmdzJ10pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kc19hZnRlcl9icmVha3BvaW50PVsncHktdXAnLCAncHktcHJpbnQgYXJncyddKQogICAgICAgICBzZWxmLmFzc2VydE11bHRpbGluZU1hdGNoZXMoYnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByIi4qXG5sb2NhbCAnYXJncycgPSBcKDEsIDIsIDNcKVxuLioiKQogCkBAIC04NTAsNyArODYzLDcgQEAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhIQVNfUFlVUF9QWURPV04sICJ0ZXN0IHJlcXVpcmVzIHB5LXVwL3B5LWRvd24gY29tbWFuZHMiKQogICAgIGRlZiB0ZXN0X3ByaW50X2FmdGVyX3VwKHNlbGYpOgogICAgICAgICBidCA9IHNlbGYuZ2V0X3N0YWNrX3RyYWNlKHNjcmlwdD1zZWxmLmdldF9zYW1wbGVfc2NyaXB0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kc19hZnRlcl9icmVha3BvaW50PVsncHktdXAnLCAncHktcHJpbnQgYycsICdweS1wcmludCBiJywgJ3B5LXByaW50IGEnXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRzX2FmdGVyX2JyZWFrcG9pbnQ9WydweS11cCcsICdweS11cCcsICdweS1wcmludCBjJywgJ3B5LXByaW50IGInLCAncHktcHJpbnQgYSddKQogICAgICAgICBzZWxmLmFzc2VydE11bHRpbGluZU1hdGNoZXMoYnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByIi4qXG5sb2NhbCAnYycgPSAzXG5sb2NhbCAnYicgPSAyXG5sb2NhbCAnYScgPSAxXG4uKiIpCiAKQEAgLTg1OCw3ICs4NzEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgIlB5dGhvbiB3YXMgY29tcGlsZWQgd2l0aCBvcHRpbWl6YXRpb25zIikKICAgICBkZWYgdGVzdF9wcmludGluZ19nbG9iYWwoc2VsZik6CiAgICAgICAgIGJ0ID0gc2VsZi5nZXRfc3RhY2tfdHJhY2Uoc2NyaXB0PXNlbGYuZ2V0X3NhbXBsZV9zY3JpcHQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRzX2FmdGVyX2JyZWFrcG9pbnQ9WydweS1wcmludCBfX25hbWVfXyddKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZHNfYWZ0ZXJfYnJlYWtwb2ludD1bJ3B5LXVwJywgJ3B5LXByaW50IF9fbmFtZV9fJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0TXVsdGlsaW5lTWF0Y2hlcyhidCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiLipcbmdsb2JhbCAnX19uYW1lX18nID0gJ19fbWFpbl9fJ1xuLioiKQogCkBAIC04NjYsNyArODc5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICJQeXRob24gd2FzIGNvbXBpbGVkIHdpdGggb3B0aW1pemF0aW9ucyIpCiAgICAgZGVmIHRlc3RfcHJpbnRpbmdfYnVpbHRpbihzZWxmKToKICAgICAgICAgYnQgPSBzZWxmLmdldF9zdGFja190cmFjZShzY3JpcHQ9c2VsZi5nZXRfc2FtcGxlX3NjcmlwdCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZHNfYWZ0ZXJfYnJlYWtwb2ludD1bJ3B5LXByaW50IGxlbiddKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZHNfYWZ0ZXJfYnJlYWtwb2ludD1bJ3B5LXVwJywgJ3B5LXByaW50IGxlbiddKQogICAgICAgICBzZWxmLmFzc2VydE11bHRpbGluZU1hdGNoZXMoYnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByIi4qXG5idWlsdGluICdsZW4nID0gPGJ1aWx0LWluIG1ldGhvZCBsZW4gb2YgbW9kdWxlIG9iamVjdCBhdCByZW1vdGUgMHgtP1swLTlhLWZdKz5cbi4qIikKIApAQCAtODc1LDcgKzg4OCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAiUHl0aG9uIHdhcyBjb21waWxlZCB3aXRoIG9wdGltaXphdGlvbnMiKQogICAgIGRlZiB0ZXN0X2Jhc2ljX2NvbW1hbmQoc2VsZik6CiAgICAgICAgIGJ0ID0gc2VsZi5nZXRfc3RhY2tfdHJhY2Uoc2NyaXB0PXNlbGYuZ2V0X3NhbXBsZV9zY3JpcHQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRzX2FmdGVyX2JyZWFrcG9pbnQ9WydweS1sb2NhbHMnXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRzX2FmdGVyX2JyZWFrcG9pbnQ9WydweS11cCcsICdweS1sb2NhbHMnXSkKICAgICAgICAgc2VsZi5hc3NlcnRNdWx0aWxpbmVNYXRjaGVzKGJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciIuKlxuYXJncyA9IFwoMSwgMiwgM1wpXG4uKiIpCiAKQEAgLTg4NCw3ICs4OTcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgIlB5dGhvbiB3YXMgY29tcGlsZWQgd2l0aCBvcHRpbWl6YXRpb25zIikKICAgICBkZWYgdGVzdF9sb2NhbHNfYWZ0ZXJfdXAoc2VsZik6CiAgICAgICAgIGJ0ID0gc2VsZi5nZXRfc3RhY2tfdHJhY2Uoc2NyaXB0PXNlbGYuZ2V0X3NhbXBsZV9zY3JpcHQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRzX2FmdGVyX2JyZWFrcG9pbnQ9WydweS11cCcsICdweS1sb2NhbHMnXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRzX2FmdGVyX2JyZWFrcG9pbnQ9WydweS11cCcsICdweS11cCcsICdweS1sb2NhbHMnXSkKICAgICAgICAgc2VsZi5hc3NlcnRNdWx0aWxpbmVNYXRjaGVzKGJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciIuKlxuYSA9IDFcbmIgPSAyXG5jID0gM1xuLioiKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BlcDQ3OS5weSBiL0xpYi90ZXN0L3Rlc3RfZ2VuZXJhdG9yX3N0b3AucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi90ZXN0L3Rlc3RfcGVwNDc5LnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2dlbmVyYXRvcl9zdG9wLnB5CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dlbmVyYXRvcnMucHkgYi9MaWIvdGVzdC90ZXN0X2dlbmVyYXRvcnMucHkKaW5kZXggY2Q2YTQzZC4uZjgxYzgyZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9nZW5lcmF0b3JzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ2VuZXJhdG9ycy5weQpAQCAtMjQ1LDExICsyNDUsMTEgQEAKICAgICAgICAgICAgIHlpZWxkCiAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uKSwgXAotICAgICAgICAgICAgIHNlbGYuYXNzZXJ0V2FybnNSZWdleChQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAiU3RvcEl0ZXJhdGlvbiIpOgorICAgICAgICAgICAgIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsICJTdG9wSXRlcmF0aW9uIik6CiAKICAgICAgICAgICAgIG5leHQoZ2VuKCkpCiAKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2VuZXJhdG9yIC4qIHJhaXNlZCBTdG9wSXRlcmF0aW9uIiksIFwKICAgICAgICAgICAgICB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgogCkBAIC0yNjgsNyArMjY4LDcgQEAKICAgICAgICAgZyA9IGYoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoZyksIDEpCiAKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgIlN0b3BJdGVyYXRpb24iKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLCAiU3RvcEl0ZXJhdGlvbiIpOgogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uKToKICAgICAgICAgICAgICAgICBuZXh0KGcpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ2VuZXJpY3BhdGgucHkgYi9MaWIvdGVzdC90ZXN0X2dlbmVyaWNwYXRoLnB5CmluZGV4IGI3N2QxZDcuLmY2OThlMTMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2VuZXJpY3BhdGgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9nZW5lcmljcGF0aC5weQpAQCAtOCwxMyArOCwxMiBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgd2FybmluZ3MKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorYW5kcm9pZF9ub3Rfcm9vdCA9IHN1cHBvcnQuYW5kcm9pZF9ub3Rfcm9vdAogCiAKLWRlZiBzYWZlX3JtZGlyKGRpcm5hbWUpOgotICAgIHRyeToKLSAgICAgICAgb3Mucm1kaXIoZGlybmFtZSkKLSAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgcGFzcworZGVmIGNyZWF0ZV9maWxlKGZpbGVuYW1lLCBkYXRhPWInZm9vJyk6CisgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAneGInLCAwKSBhcyBmcDoKKyAgICAgICAgZnAud3JpdGUoZGF0YSkKIAogCiBjbGFzcyBHZW5lcmljVGVzdDoKQEAgLTk3LDUyICs5Niw0NyBAQAogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHMxW246bisxXSwgczJbbjpuKzFdKQogCiAgICAgZGVmIHRlc3RfZ2V0c2l6ZShzZWxmKToKLSAgICAgICAgZiA9IG9wZW4oc3VwcG9ydC5URVNURk4sICJ3YiIpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGYud3JpdGUoYiJmb28iKQotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYucGF0aG1vZHVsZS5nZXRzaXplKHN1cHBvcnQuVEVTVEZOKSwgMykKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGlmIG5vdCBmLmNsb3NlZDoKLSAgICAgICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQorICAgICAgICBmaWxlbmFtZSA9IHN1cHBvcnQuVEVTVEZOCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgZmlsZW5hbWUpCiAKLSAgICBkZWYgdGVzdF90aW1lKHNlbGYpOgotICAgICAgICBmID0gb3BlbihzdXBwb3J0LlRFU1RGTiwgIndiIikKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZi53cml0ZShiImZvbyIpCi0gICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgIGYgPSBvcGVuKHN1cHBvcnQuVEVTVEZOLCAiYWIiKQorICAgICAgICBjcmVhdGVfZmlsZShmaWxlbmFtZSwgYidIZWxsbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5wYXRobW9kdWxlLmdldHNpemUoZmlsZW5hbWUpLCA1KQorICAgICAgICBvcy5yZW1vdmUoZmlsZW5hbWUpCisKKyAgICAgICAgY3JlYXRlX2ZpbGUoZmlsZW5hbWUsIGInSGVsbG8gV29ybGQhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnBhdGhtb2R1bGUuZ2V0c2l6ZShmaWxlbmFtZSksIDEyKQorCisgICAgZGVmIHRlc3RfZmlsZXRpbWUoc2VsZik6CisgICAgICAgIGZpbGVuYW1lID0gc3VwcG9ydC5URVNURk4KKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBmaWxlbmFtZSkKKworICAgICAgICBjcmVhdGVfZmlsZShmaWxlbmFtZSwgYidmb28nKQorCisgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgImFiIiwgMCkgYXMgZjoKICAgICAgICAgICAgIGYud3JpdGUoYiJiYXIiKQotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBmID0gb3BlbihzdXBwb3J0LlRFU1RGTiwgInJiIikKLSAgICAgICAgICAgIGQgPSBmLnJlYWQoKQotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIGIiZm9vYmFyIikKIAotICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoCi0gICAgICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLmdldGN0aW1lKHN1cHBvcnQuVEVTVEZOKSwKLSAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUuZ2V0bXRpbWUoc3VwcG9ydC5URVNURk4pCi0gICAgICAgICAgICApCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBpZiBub3QgZi5jbG9zZWQ6Ci0gICAgICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAicmIiLCAwKSBhcyBmOgorICAgICAgICAgICAgZGF0YSA9IGYucmVhZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgYiJmb29iYXIiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKAorICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLmdldGN0aW1lKGZpbGVuYW1lKSwKKyAgICAgICAgICAgIHNlbGYucGF0aG1vZHVsZS5nZXRtdGltZShmaWxlbmFtZSkKKyAgICAgICAgKQogCiAgICAgZGVmIHRlc3RfZXhpc3RzKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5leGlzdHMoc3VwcG9ydC5URVNURk4pLCBGYWxzZSkKLSAgICAgICAgZiA9IG9wZW4oc3VwcG9ydC5URVNURk4sICJ3YiIpCi0gICAgICAgIHRyeToKKyAgICAgICAgZmlsZW5hbWUgPSBzdXBwb3J0LlRFU1RGTgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIGZpbGVuYW1lKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZi5wYXRobW9kdWxlLmV4aXN0cyhmaWxlbmFtZSksIEZhbHNlKQorCisgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgInhiIikgYXMgZjoKICAgICAgICAgICAgIGYud3JpdGUoYiJmb28iKQotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5leGlzdHMoc3VwcG9ydC5URVNURk4pLCBUcnVlKQotICAgICAgICAgICAgaWYgbm90IHNlbGYucGF0aG1vZHVsZSA9PSBnZW5lcmljcGF0aDoKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5sZXhpc3RzKHN1cHBvcnQuVEVTVEZOKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRydWUpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBpZiBub3QgZi5jbG9zZSgpOgotICAgICAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4pCisKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzZWxmLnBhdGhtb2R1bGUuZXhpc3RzKGZpbGVuYW1lKSwgVHJ1ZSkKKworICAgICAgICBpZiBub3Qgc2VsZi5wYXRobW9kdWxlID09IGdlbmVyaWNwYXRoOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzZWxmLnBhdGhtb2R1bGUubGV4aXN0cyhmaWxlbmFtZSksIFRydWUpCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAicGlwZSIpLCAicmVxdWlyZXMgb3MucGlwZSgpIikKICAgICBkZWYgdGVzdF9leGlzdHNfZmQoc2VsZik6CkBAIC0xNTQsMTE5ICsxNDgsMTI2IEBACiAgICAgICAgICAgICBvcy5jbG9zZSh3KQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucGF0aG1vZHVsZS5leGlzdHMocikpCiAKLSAgICBkZWYgdGVzdF9pc2RpcihzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRJcyhzZWxmLnBhdGhtb2R1bGUuaXNkaXIoc3VwcG9ydC5URVNURk4pLCBGYWxzZSkKLSAgICAgICAgZiA9IG9wZW4oc3VwcG9ydC5URVNURk4sICJ3YiIpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGYud3JpdGUoYiJmb28iKQotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5pc2RpcihzdXBwb3J0LlRFU1RGTiksIEZhbHNlKQotICAgICAgICAgICAgb3MucmVtb3ZlKHN1cHBvcnQuVEVTVEZOKQotICAgICAgICAgICAgb3MubWtkaXIoc3VwcG9ydC5URVNURk4pCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5pc2RpcihzdXBwb3J0LlRFU1RGTiksIFRydWUpCi0gICAgICAgICAgICBvcy5ybWRpcihzdXBwb3J0LlRFU1RGTikKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGlmIG5vdCBmLmNsb3NlKCk6Ci0gICAgICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKLSAgICAgICAgICAgIHNhZmVfcm1kaXIoc3VwcG9ydC5URVNURk4pCisgICAgZGVmIHRlc3RfaXNkaXJfZmlsZShzZWxmKToKKyAgICAgICAgZmlsZW5hbWUgPSBzdXBwb3J0LlRFU1RGTgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIGZpbGVuYW1lKQorICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5pc2RpcihmaWxlbmFtZSksIEZhbHNlKQogCi0gICAgZGVmIHRlc3RfaXNmaWxlKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5pc2ZpbGUoc3VwcG9ydC5URVNURk4pLCBGYWxzZSkKLSAgICAgICAgZiA9IG9wZW4oc3VwcG9ydC5URVNURk4sICJ3YiIpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGYud3JpdGUoYiJmb28iKQotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5pc2ZpbGUoc3VwcG9ydC5URVNURk4pLCBUcnVlKQotICAgICAgICAgICAgb3MucmVtb3ZlKHN1cHBvcnQuVEVTVEZOKQotICAgICAgICAgICAgb3MubWtkaXIoc3VwcG9ydC5URVNURk4pCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5pc2ZpbGUoc3VwcG9ydC5URVNURk4pLCBGYWxzZSkKLSAgICAgICAgICAgIG9zLnJtZGlyKHN1cHBvcnQuVEVTVEZOKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgaWYgbm90IGYuY2xvc2UoKToKLSAgICAgICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQotICAgICAgICAgICAgc2FmZV9ybWRpcihzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgY3JlYXRlX2ZpbGUoZmlsZW5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZi5wYXRobW9kdWxlLmlzZGlyKGZpbGVuYW1lKSwgRmFsc2UpCiAKLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIF9jcmVhdGVfZmlsZShmaWxlbmFtZSk6Ci0gICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgJ3diJykgYXMgZjoKLSAgICAgICAgICAgIGYud3JpdGUoYidmb28nKQorICAgIGRlZiB0ZXN0X2lzZGlyX2RpcihzZWxmKToKKyAgICAgICAgZmlsZW5hbWUgPSBzdXBwb3J0LlRFU1RGTgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC5ybWRpciwgZmlsZW5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZi5wYXRobW9kdWxlLmlzZGlyKGZpbGVuYW1lKSwgRmFsc2UpCisKKyAgICAgICAgb3MubWtkaXIoZmlsZW5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZi5wYXRobW9kdWxlLmlzZGlyKGZpbGVuYW1lKSwgVHJ1ZSkKKworICAgIGRlZiB0ZXN0X2lzZmlsZV9maWxlKHNlbGYpOgorICAgICAgICBmaWxlbmFtZSA9IHN1cHBvcnQuVEVTVEZOCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgZmlsZW5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZi5wYXRobW9kdWxlLmlzZmlsZShmaWxlbmFtZSksIEZhbHNlKQorCisgICAgICAgIGNyZWF0ZV9maWxlKGZpbGVuYW1lKQorICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5pc2ZpbGUoZmlsZW5hbWUpLCBUcnVlKQorCisgICAgZGVmIHRlc3RfaXNmaWxlX2RpcihzZWxmKToKKyAgICAgICAgZmlsZW5hbWUgPSBzdXBwb3J0LlRFU1RGTgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC5ybWRpciwgZmlsZW5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZi5wYXRobW9kdWxlLmlzZmlsZShmaWxlbmFtZSksIEZhbHNlKQorCisgICAgICAgIG9zLm1rZGlyKGZpbGVuYW1lKQorICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5pc2ZpbGUoZmlsZW5hbWUpLCBGYWxzZSkKIAogICAgIGRlZiB0ZXN0X3NhbWVmaWxlKHNlbGYpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB0ZXN0X2ZuID0gc3VwcG9ydC5URVNURk4gKyAiMSIKLSAgICAgICAgICAgIHNlbGYuX2NyZWF0ZV9maWxlKHRlc3RfZm4pCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5wYXRobW9kdWxlLnNhbWVmaWxlKHRlc3RfZm4sIHRlc3RfZm4pKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnBhdGhtb2R1bGUuc2FtZWZpbGUpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBvcy5yZW1vdmUodGVzdF9mbikKKyAgICAgICAgZmlsZTEgPSBzdXBwb3J0LlRFU1RGTgorICAgICAgICBmaWxlMiA9IHN1cHBvcnQuVEVTVEZOICsgIjIiCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgZmlsZTEpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgZmlsZTIpCisKKyAgICAgICAgY3JlYXRlX2ZpbGUoZmlsZTEpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnBhdGhtb2R1bGUuc2FtZWZpbGUoZmlsZTEsIGZpbGUxKSkKKworICAgICAgICBjcmVhdGVfZmlsZShmaWxlMikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnBhdGhtb2R1bGUuc2FtZWZpbGUoZmlsZTEsIGZpbGUyKSkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYucGF0aG1vZHVsZS5zYW1lZmlsZSkKKworICAgIGRlZiBfdGVzdF9zYW1lZmlsZV9vbl9saW5rX2Z1bmMoc2VsZiwgZnVuYyk6CisgICAgICAgIHRlc3RfZm4xID0gc3VwcG9ydC5URVNURk4KKyAgICAgICAgdGVzdF9mbjIgPSBzdXBwb3J0LlRFU1RGTiArICIyIgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHRlc3RfZm4xKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHRlc3RfZm4yKQorCisgICAgICAgIGNyZWF0ZV9maWxlKHRlc3RfZm4xKQorCisgICAgICAgIGZ1bmModGVzdF9mbjEsIHRlc3RfZm4yKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5wYXRobW9kdWxlLnNhbWVmaWxlKHRlc3RfZm4xLCB0ZXN0X2ZuMikpCisgICAgICAgIG9zLnJlbW92ZSh0ZXN0X2ZuMikKKworICAgICAgICBjcmVhdGVfZmlsZSh0ZXN0X2ZuMikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnBhdGhtb2R1bGUuc2FtZWZpbGUodGVzdF9mbjEsIHRlc3RfZm4yKSkKIAogICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3N5bWxpbmsKICAgICBkZWYgdGVzdF9zYW1lZmlsZV9vbl9zeW1saW5rKHNlbGYpOgogICAgICAgICBzZWxmLl90ZXN0X3NhbWVmaWxlX29uX2xpbmtfZnVuYyhvcy5zeW1saW5rKQogCisgICAgQHVuaXR0ZXN0LnNraXBJZihhbmRyb2lkX25vdF9yb290LCAiaGFyZCBsaW5rcyBub3QgYWxsb3dlZCwgbm9uIHJvb3QgdXNlciIpCiAgICAgZGVmIHRlc3Rfc2FtZWZpbGVfb25fbGluayhzZWxmKToKICAgICAgICAgc2VsZi5fdGVzdF9zYW1lZmlsZV9vbl9saW5rX2Z1bmMob3MubGluaykKIAotICAgIGRlZiBfdGVzdF9zYW1lZmlsZV9vbl9saW5rX2Z1bmMoc2VsZiwgZnVuYyk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHRlc3RfZm4xID0gc3VwcG9ydC5URVNURk4gKyAiMSIKLSAgICAgICAgICAgIHRlc3RfZm4yID0gc3VwcG9ydC5URVNURk4gKyAiMiIKLSAgICAgICAgICAgIHNlbGYuX2NyZWF0ZV9maWxlKHRlc3RfZm4xKQotCi0gICAgICAgICAgICBmdW5jKHRlc3RfZm4xLCB0ZXN0X2ZuMikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnBhdGhtb2R1bGUuc2FtZWZpbGUodGVzdF9mbjEsIHRlc3RfZm4yKSkKLSAgICAgICAgICAgIG9zLnJlbW92ZSh0ZXN0X2ZuMikKLQotICAgICAgICAgICAgc2VsZi5fY3JlYXRlX2ZpbGUodGVzdF9mbjIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucGF0aG1vZHVsZS5zYW1lZmlsZSh0ZXN0X2ZuMSwgdGVzdF9mbjIpKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgb3MucmVtb3ZlKHRlc3RfZm4xKQotICAgICAgICAgICAgb3MucmVtb3ZlKHRlc3RfZm4yKQotCiAgICAgZGVmIHRlc3Rfc2FtZXN0YXQoc2VsZik6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHRlc3RfZm4gPSBzdXBwb3J0LlRFU1RGTiArICIxIgotICAgICAgICAgICAgc2VsZi5fY3JlYXRlX2ZpbGUodGVzdF9mbikKLSAgICAgICAgICAgIHRlc3RfZm5zID0gW3Rlc3RfZm5dKjIKLSAgICAgICAgICAgIHN0YXRzID0gbWFwKG9zLnN0YXQsIHRlc3RfZm5zKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYucGF0aG1vZHVsZS5zYW1lc3RhdCgqc3RhdHMpKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgb3MucmVtb3ZlKHRlc3RfZm4pCisgICAgICAgIHRlc3RfZm4xID0gc3VwcG9ydC5URVNURk4KKyAgICAgICAgdGVzdF9mbjIgPSBzdXBwb3J0LlRFU1RGTiArICIyIgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHRlc3RfZm4xKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHRlc3RfZm4yKQorCisgICAgICAgIGNyZWF0ZV9maWxlKHRlc3RfZm4xKQorICAgICAgICBzdGF0MSA9IG9zLnN0YXQodGVzdF9mbjEpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnBhdGhtb2R1bGUuc2FtZXN0YXQoc3RhdDEsIG9zLnN0YXQodGVzdF9mbjEpKSkKKworICAgICAgICBjcmVhdGVfZmlsZSh0ZXN0X2ZuMikKKyAgICAgICAgc3RhdDIgPSBvcy5zdGF0KHRlc3RfZm4yKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucGF0aG1vZHVsZS5zYW1lc3RhdChzdGF0MSwgc3RhdDIpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5wYXRobW9kdWxlLnNhbWVzdGF0KQorCisgICAgZGVmIF90ZXN0X3NhbWVzdGF0X29uX2xpbmtfZnVuYyhzZWxmLCBmdW5jKToKKyAgICAgICAgdGVzdF9mbjEgPSBzdXBwb3J0LlRFU1RGTiArICIxIgorICAgICAgICB0ZXN0X2ZuMiA9IHN1cHBvcnQuVEVTVEZOICsgIjIiCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgdGVzdF9mbjEpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgdGVzdF9mbjIpCisKKyAgICAgICAgY3JlYXRlX2ZpbGUodGVzdF9mbjEpCisgICAgICAgIGZ1bmModGVzdF9mbjEsIHRlc3RfZm4yKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5wYXRobW9kdWxlLnNhbWVzdGF0KG9zLnN0YXQodGVzdF9mbjEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnN0YXQodGVzdF9mbjIpKSkKKyAgICAgICAgb3MucmVtb3ZlKHRlc3RfZm4yKQorCisgICAgICAgIGNyZWF0ZV9maWxlKHRlc3RfZm4yKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucGF0aG1vZHVsZS5zYW1lc3RhdChvcy5zdGF0KHRlc3RfZm4xKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Muc3RhdCh0ZXN0X2ZuMikpKQogCiAgICAgQHN1cHBvcnQuc2tpcF91bmxlc3Nfc3ltbGluawogICAgIGRlZiB0ZXN0X3NhbWVzdGF0X29uX3N5bWxpbmsoc2VsZik6CiAgICAgICAgIHNlbGYuX3Rlc3Rfc2FtZXN0YXRfb25fbGlua19mdW5jKG9zLnN5bWxpbmspCiAKKyAgICBAdW5pdHRlc3Quc2tpcElmKGFuZHJvaWRfbm90X3Jvb3QsICJoYXJkIGxpbmtzIG5vdCBhbGxvd2VkLCBub24gcm9vdCB1c2VyIikKICAgICBkZWYgdGVzdF9zYW1lc3RhdF9vbl9saW5rKHNlbGYpOgogICAgICAgICBzZWxmLl90ZXN0X3NhbWVzdGF0X29uX2xpbmtfZnVuYyhvcy5saW5rKQogCi0gICAgZGVmIF90ZXN0X3NhbWVzdGF0X29uX2xpbmtfZnVuYyhzZWxmLCBmdW5jKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdGVzdF9mbjEgPSBzdXBwb3J0LlRFU1RGTiArICIxIgotICAgICAgICAgICAgdGVzdF9mbjIgPSBzdXBwb3J0LlRFU1RGTiArICIyIgotICAgICAgICAgICAgc2VsZi5fY3JlYXRlX2ZpbGUodGVzdF9mbjEpCi0gICAgICAgICAgICB0ZXN0X2ZucyA9ICh0ZXN0X2ZuMSwgdGVzdF9mbjIpCi0gICAgICAgICAgICBmdW5jKCp0ZXN0X2ZucykKLSAgICAgICAgICAgIHN0YXRzID0gbWFwKG9zLnN0YXQsIHRlc3RfZm5zKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYucGF0aG1vZHVsZS5zYW1lc3RhdCgqc3RhdHMpKQotICAgICAgICAgICAgb3MucmVtb3ZlKHRlc3RfZm4yKQotCi0gICAgICAgICAgICBzZWxmLl9jcmVhdGVfZmlsZSh0ZXN0X2ZuMikKLSAgICAgICAgICAgIHN0YXRzID0gbWFwKG9zLnN0YXQsIHRlc3RfZm5zKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnBhdGhtb2R1bGUuc2FtZXN0YXQoKnN0YXRzKSkKLQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnBhdGhtb2R1bGUuc2FtZXN0YXQpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBvcy5yZW1vdmUodGVzdF9mbjEpCi0gICAgICAgICAgICBvcy5yZW1vdmUodGVzdF9mbjIpCi0KICAgICBkZWYgdGVzdF9zYW1lb3BlbmZpbGUoc2VsZik6Ci0gICAgICAgIGZuYW1lID0gc3VwcG9ydC5URVNURk4gKyAiMSIKLSAgICAgICAgd2l0aCBvcGVuKGZuYW1lLCAid2IiKSBhcyBhLCBvcGVuKGZuYW1lLCAid2IiKSBhcyBiOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYucGF0aG1vZHVsZS5zYW1lb3BlbmZpbGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEuZmlsZW5vKCksIGIuZmlsZW5vKCkpKQorICAgICAgICBmaWxlbmFtZSA9IHN1cHBvcnQuVEVTVEZOCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgZmlsZW5hbWUpCisgICAgICAgIGNyZWF0ZV9maWxlKGZpbGVuYW1lKQorCisgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgInJiIiwgMCkgYXMgZnAxOgorICAgICAgICAgICAgZmQxID0gZnAxLmZpbGVubygpCisgICAgICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJyYiIsIDApIGFzIGZwMjoKKyAgICAgICAgICAgICAgICBmZDIgPSBmcDIuZmlsZW5vKCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5wYXRobW9kdWxlLnNhbWVvcGVuZmlsZShmZDEsIGZkMikpCisKIAogY2xhc3MgVGVzdEdlbmVyaWNUZXN0KEdlbmVyaWNUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIyBJc3N1ZSAxNjg1MjogR2VuZXJpY1Rlc3QgY2FuJ3QgaW5oZXJpdCBmcm9tIHVuaXR0ZXN0LlRlc3RDYXNlCkBAIC0zOTAsMTAgKzM5MSwxMyBAQAogICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGIiZm9vIiwgc2VsZi5wYXRobW9kdWxlLmFic3BhdGgoYiJmb28iKSkKIAorICAgICAgICAjIGF2b2lkIFVuaWNvZGVEZWNvZGVFcnJvciBvbiBXaW5kb3dzCisgICAgICAgIHVuZGVjb2RhYmxlX3BhdGggPSBiJycgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMicgZWxzZSBiJ2ZceGYyXHhmMicKKwogICAgICAgICAjIEFic3BhdGggcmV0dXJucyBieXRlcyB3aGVuIHRoZSBhcmcgaXMgYnl0ZXMKICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgogICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgICAgICBmb3IgcGF0aCBpbiAoYicnLCBiJ2ZvbycsIGInZlx4ZjJceGYyJywgYicvZm9vJywgYidDOlxcJyk6CisgICAgICAgICAgICBmb3IgcGF0aCBpbiAoYicnLCBiJ2ZvbycsIHVuZGVjb2RhYmxlX3BhdGgsIGInL2ZvbycsIGInQzpcXCcpOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzZWxmLnBhdGhtb2R1bGUuYWJzcGF0aChwYXRoKSwgYnl0ZXMpCiAKICAgICBkZWYgdGVzdF9yZWFscGF0aChzZWxmKToKQEAgLTQ1MiwxNiArNDU2LDE1IEBACiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBlcnJtc2cpOgogICAgICAgICAgICAgICAgIHNlbGYucGF0aG1vZHVsZS5qb2luKCdzdHInLCBiJ2J5dGVzJykKICAgICAgICAgICAgICMgcmVncmVzc2lvbiwgc2VlICMxNTM3NwotICAgICAgICAgICAgZXJybXNnID0gcidqb2luXChcKSBhcmd1bWVudCBtdXN0IGJlIHN0ciBvciBieXRlcywgbm90ICVyJwotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgZXJybXNnICUgJ2ludCcpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ2ludCcpOgogICAgICAgICAgICAgICAgIHNlbGYucGF0aG1vZHVsZS5qb2luKDQyLCAnc3RyJykKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIGVycm1zZyAlICdpbnQnKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdpbnQnKToKICAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUuam9pbignc3RyJywgNDIpCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBlcnJtc2cgJSAnaW50Jyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnaW50Jyk6CiAgICAgICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLmpvaW4oNDIpCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBlcnJtc2cgJSAnbGlzdCcpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ2xpc3QnKToKICAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUuam9pbihbXSkKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIGVycm1zZyAlICdieXRlYXJyYXknKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdieXRlYXJyYXknKToKICAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUuam9pbihieXRlYXJyYXkoYidmb28nKSwgYnl0ZWFycmF5KGInYmFyJykpCiAKICAgICBkZWYgdGVzdF9yZWxwYXRoX2Vycm9ycyhzZWxmKToKQEAgLTQ3MywxNCArNDc2LDU5IEBACiAgICAgICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLnJlbHBhdGgoYidieXRlcycsICdzdHInKQogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgZXJybXNnKToKICAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUucmVscGF0aCgnc3RyJywgYidieXRlcycpCi0gICAgICAgICAgICBlcnJtc2cgPSByJ3JlbHBhdGhcKFwpIGFyZ3VtZW50IG11c3QgYmUgc3RyIG9yIGJ5dGVzLCBub3QgJXInCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBlcnJtc2cgJSAnaW50Jyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnaW50Jyk6CiAgICAgICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLnJlbHBhdGgoNDIsICdzdHInKQotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgZXJybXNnICUgJ2ludCcpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ2ludCcpOgogICAgICAgICAgICAgICAgIHNlbGYucGF0aG1vZHVsZS5yZWxwYXRoKCdzdHInLCA0MikKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIGVycm1zZyAlICdieXRlYXJyYXknKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdieXRlYXJyYXknKToKICAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUucmVscGF0aChieXRlYXJyYXkoYidmb28nKSwgYnl0ZWFycmF5KGInYmFyJykpCiAKIAorY2xhc3MgUGF0aExpa2VUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBjbGFzcyBQYXRoTGlrZToKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGg9JycpOgorICAgICAgICAgICAgc2VsZi5wYXRoID0gcGF0aAorICAgICAgICBkZWYgX19mc3BhdGhfXyhzZWxmKToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5wYXRoLCBCYXNlRXhjZXB0aW9uKToKKyAgICAgICAgICAgICAgICByYWlzZSBzZWxmLnBhdGgKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucGF0aAorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmZpbGVfbmFtZSA9IHN1cHBvcnQuVEVTVEZOLmxvd2VyKCkKKyAgICAgICAgc2VsZi5maWxlX3BhdGggPSBzZWxmLlBhdGhMaWtlKHN1cHBvcnQuVEVTVEZOKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHNlbGYuZmlsZV9uYW1lKQorICAgICAgICBjcmVhdGVfZmlsZShzZWxmLmZpbGVfbmFtZSwgYiJ0ZXN0X2dlbmVyaWNwYXRoLlBhdGhMaWtlVGVzdHMiKQorCisgICAgZGVmIGFzc2VydFBhdGhFcXVhbChzZWxmLCBmdW5jKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmdW5jKHNlbGYuZmlsZV9wYXRoKSwgZnVuYyhzZWxmLmZpbGVfbmFtZSkpCisKKyAgICBkZWYgdGVzdF9wYXRoX2V4aXN0cyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwob3MucGF0aC5leGlzdHMpCisKKyAgICBkZWYgdGVzdF9wYXRoX2lzZmlsZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwob3MucGF0aC5pc2ZpbGUpCisKKyAgICBkZWYgdGVzdF9wYXRoX2lzZGlyKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChvcy5wYXRoLmlzZGlyKQorCisgICAgZGVmIHRlc3RfcGF0aF9jb21tb25wcmVmaXgoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucGF0aC5jb21tb25wcmVmaXgoW3NlbGYuZmlsZV9wYXRoLCBzZWxmLmZpbGVfbmFtZV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmlsZV9uYW1lKQorCisgICAgZGVmIHRlc3RfcGF0aF9nZXRzaXplKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChvcy5wYXRoLmdldHNpemUpCisKKyAgICBkZWYgdGVzdF9wYXRoX2dldG10aW1lKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChvcy5wYXRoLmdldGF0aW1lKQorCisgICAgZGVmIHRlc3RfcGF0aF9nZXRjdGltZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwob3MucGF0aC5nZXRjdGltZSkKKworICAgIGRlZiB0ZXN0X3BhdGhfc2FtZWZpbGUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLnNhbWVmaWxlKHNlbGYuZmlsZV9wYXRoLCBzZWxmLmZpbGVfbmFtZSkpCisKKwogaWYgX19uYW1lX189PSJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dldGFyZ3MyLnB5IGIvTGliL3Rlc3QvdGVzdF9nZXRhcmdzMi5weQppbmRleCA5ODRhYWM3Li44YTE5NGFhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2dldGFyZ3MyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ2V0YXJnczIucHkKQEAgLTUsMTAgKzUsNiBAQAogIyBTa2lwIHRoaXMgdGVzdCBpZiB0aGUgX3Rlc3RjYXBpIG1vZHVsZSBpc24ndCBhdmFpbGFibGUuCiBzdXBwb3J0LmltcG9ydF9tb2R1bGUoJ190ZXN0Y2FwaScpCiBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgZ2V0YXJnc19rZXl3b3JkcywgZ2V0YXJnc19rZXl3b3JkX29ubHkKLXRyeToKLSAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgZ2V0YXJnc19MLCBnZXRhcmdzX0sKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBnZXRhcmdzX0wgPSBOb25lICMgUFlfTE9OR19MT05HIG5vdCBhdmFpbGFibGUKIAogIyA+IEhvdyBhYm91dCB0aGUgZm9sbG93aW5nIGNvdW50ZXJwcm9wb3NhbC4gVGhpcyBhbHNvIGNoYW5nZXMgc29tZSBvZgogIyA+IHRoZSBvdGhlciBmb3JtYXQgY29kZXMgdG8gYmUgYSBsaXR0bGUgbW9yZSByZWd1bGFyLgpAQCAtMzA5LDcgKzMwNSw2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIGdldGFyZ3NfbiwgVkVSWV9MQVJHRSkKIAogCi1AdW5pdHRlc3Quc2tpcElmKGdldGFyZ3NfTCBpcyBOb25lLCAnUFlfTE9OR19MT05HIGlzIG5vdCBhdmFpbGFibGUnKQogY2xhc3MgTG9uZ0xvbmdfVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X0woc2VsZik6CiAgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBnZXRhcmdzX0wKQEAgLTM2NSw3ICszNjAsOCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGFyZ3NfZihGbG9hdFN1YmNsYXNzKDcuNSkpLCA3LjUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXJnc19mKEZsb2F0U3ViY2xhc3MyKDcuNSkpLCA3LjUpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc19mLCBCYWRGbG9hdCgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGFyZ3NfZihCYWRGbG9hdDIoKSksIDQuMjUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhcmdzX2YoQmFkRmxvYXQyKCkpLCA0LjI1KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGFyZ3NfZihCYWRGbG9hdDMoNy41KSksIDcuNSkKIAogICAgICAgICBmb3IgeCBpbiAoRkxUX01JTiwgLUZMVF9NSU4sIEZMVF9NQVgsIC1GTFRfTUFYLCBJTkYsIC1JTkYpOgpAQCAtMzkwLDcgKzM4Niw4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXJnc19kKEZsb2F0U3ViY2xhc3MoNy41KSksIDcuNSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhcmdzX2QoRmxvYXRTdWJjbGFzczIoNy41KSksIDcuNSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX2QsIEJhZEZsb2F0KCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXJnc19kKEJhZEZsb2F0MigpKSwgNC4yNSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGFyZ3NfZChCYWRGbG9hdDIoKSksIDQuMjUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXJnc19kKEJhZEZsb2F0Myg3LjUpKSwgNy41KQogCiAgICAgICAgIGZvciB4IGluIChEQkxfTUlOLCAtREJMX01JTiwgREJMX01BWCwgLURCTF9NQVgsIElORiwgLUlORik6CkBAIC00NzQsNyArNDcxLDcgQEAKIAogICAgICAgICByZXQgPSBnZXRfYXJncygqVHVwbGVTdWJjbGFzcyhbMSwgMl0pKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJldCwgKDEsIDIpKQotICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UocmV0LCB0dXBsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKHJldCksIHR1cGxlKQogCiAgICAgICAgIHJldCA9IGdldF9hcmdzKCkKICAgICAgICAgc2VsZi5hc3NlcnRJbihyZXQsICgoKSwgTm9uZSkpCkBAIC01MTIsNyArNTA5LDcgQEAKIAogICAgICAgICByZXQgPSBnZXRfa3dhcmdzKCoqRGljdFN1YmNsYXNzKHsnYSc6IDEsICdiJzogMn0pKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJldCwgeydhJzogMSwgJ2InOiAyfSkKLSAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHJldCwgZGljdCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKHJldCksIGRpY3QpCiAKICAgICAgICAgcmV0ID0gZ2V0X2t3YXJncygpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocmV0LCAoe30sIE5vbmUpKQpAQCAtNjI4LDIwICs2MjUsMjAgQEAKICAgICAgICAgICAgICkKICAgICAgICAgIyByZXF1aXJlZCBhcmcgbWlzc2luZwogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAotICAgICAgICAgICAgIlJlcXVpcmVkIGFyZ3VtZW50ICdyZXF1aXJlZCcgXChwb3MgMVwpIG5vdCBmb3VuZCIpOgorICAgICAgICAgICAgciJSZXF1aXJlZCBhcmd1bWVudCAncmVxdWlyZWQnIFwocG9zIDFcKSBub3QgZm91bmQiKToKICAgICAgICAgICAgIGdldGFyZ3Nfa2V5d29yZF9vbmx5KG9wdGlvbmFsPTIpCiAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKLSAgICAgICAgICAgICJSZXF1aXJlZCBhcmd1bWVudCAncmVxdWlyZWQnIFwocG9zIDFcKSBub3QgZm91bmQiKToKKyAgICAgICAgICAgIHIiUmVxdWlyZWQgYXJndW1lbnQgJ3JlcXVpcmVkJyBcKHBvcyAxXCkgbm90IGZvdW5kIik6CiAgICAgICAgICAgICBnZXRhcmdzX2tleXdvcmRfb25seShrZXl3b3JkX29ubHk9MykKIAogICAgIGRlZiB0ZXN0X3Rvb19tYW55X2FyZ3Moc2VsZik6CiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCi0gICAgICAgICAgICAiRnVuY3Rpb24gdGFrZXMgYXQgbW9zdCAyIHBvc2l0aW9uYWwgYXJndW1lbnRzIFwoMyBnaXZlblwpIik6CisgICAgICAgICAgICByIkZ1bmN0aW9uIHRha2VzIGF0IG1vc3QgMiBwb3NpdGlvbmFsIGFyZ3VtZW50cyBcKDMgZ2l2ZW5cKSIpOgogICAgICAgICAgICAgZ2V0YXJnc19rZXl3b3JkX29ubHkoMSwgMiwgMykKIAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAotICAgICAgICAgICAgImZ1bmN0aW9uIHRha2VzIGF0IG1vc3QgMyBhcmd1bWVudHMgXCg0IGdpdmVuXCkiKToKKyAgICAgICAgICAgIHIiZnVuY3Rpb24gdGFrZXMgYXQgbW9zdCAzIGFyZ3VtZW50cyBcKDQgZ2l2ZW5cKSIpOgogICAgICAgICAgICAgZ2V0YXJnc19rZXl3b3JkX29ubHkoMSwgMiwgMywga2V5d29yZF9vbmx5PTUpCiAKICAgICBkZWYgdGVzdF9pbnZhbGlkX2tleXdvcmQoc2VsZik6CkBAIC02NTYsNiArNjUzLDM5IEBACiAgICAgICAgICAgICBnZXRhcmdzX2tleXdvcmRfb25seSgxLCAyLCAqKnsnXHVEQzgwJzogMTB9KQogCiAKK2NsYXNzIFBvc2l0aW9uYWxPbmx5QW5kS2V5d29yZHNfVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBnZXRhcmdzX3Bvc2l0aW9uYWxfb25seV9hbmRfa2V5d29yZHMgYXMgZ2V0YXJncworCisgICAgZGVmIHRlc3RfcG9zaXRpb25hbF9hcmdzKHNlbGYpOgorICAgICAgICAjIHVzaW5nIGFsbCBwb3NzaWJsZSBwb3NpdGlvbmFsIGFyZ3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdldGFyZ3MoMSwgMiwgMyksICgxLCAyLCAzKSkKKworICAgIGRlZiB0ZXN0X21peGVkX2FyZ3Moc2VsZik6CisgICAgICAgICMgcG9zaXRpb25hbCBhbmQga2V5d29yZCBhcmdzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRhcmdzKDEsIDIsIGtleXdvcmQ9MyksICgxLCAyLCAzKSkKKworICAgIGRlZiB0ZXN0X29wdGlvbmFsX2FyZ3Moc2VsZik6CisgICAgICAgICMgbWlzc2luZyBvcHRpb25hbCBhcmdzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRhcmdzKDEsIDIpLCAoMSwgMiwgLTEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0YXJncygxLCBrZXl3b3JkPTMpLCAoMSwgLTEsIDMpKQorCisgICAgZGVmIHRlc3RfcmVxdWlyZWRfYXJncyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdldGFyZ3MoMSksICgxLCAtMSwgLTEpKQorICAgICAgICAjIHJlcXVpcmVkIHBvc2l0aW9uYWwgYXJnIG1pc3NpbmcKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgIHIiRnVuY3Rpb24gdGFrZXMgYXQgbGVhc3QgMSBwb3NpdGlvbmFsIGFyZ3VtZW50cyBcKDAgZ2l2ZW5cKSIpOgorICAgICAgICAgICAgc2VsZi5nZXRhcmdzKCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgciJGdW5jdGlvbiB0YWtlcyBhdCBsZWFzdCAxIHBvc2l0aW9uYWwgYXJndW1lbnRzIFwoMCBnaXZlblwpIik6CisgICAgICAgICAgICBzZWxmLmdldGFyZ3Moa2V5d29yZD0zKQorCisgICAgZGVmIHRlc3RfZW1wdHlfa2V5d29yZChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICInJyBpcyBhbiBpbnZhbGlkIGtleXdvcmQgYXJndW1lbnQgZm9yIHRoaXMgZnVuY3Rpb24iKToKKyAgICAgICAgICAgIHNlbGYuZ2V0YXJncygxLCAyLCAqKnsnJzogNjY2fSkKKworCiBjbGFzcyBCeXRlc19UZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfYyhzZWxmKToKICAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGdldGFyZ3NfYwpAQCAtODIyLDEwICs4NTIsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhcmdzX2VzX2hhc2goJ2FiY1x4ZTknLCAnbGF0aW4xJywgYnVmKSwgYidhYmNceGU5JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYsIGJ5dGVhcnJheShiJ2FiY1x4ZTlceDAwJykpCiAgICAgICAgIGJ1ZiA9IGJ5dGVhcnJheShiJ3gnKjQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc19lc19oYXNoLCAnYWJjXHhlOScsICdsYXRpbjEnLCBidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldGFyZ3NfZXNfaGFzaCwgJ2FiY1x4ZTknLCAnbGF0aW4xJywgYnVmKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1ZiwgYnl0ZWFycmF5KGIneCcqNCkpCiAgICAgICAgIGJ1ZiA9IGJ5dGVhcnJheSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc19lc19oYXNoLCAnYWJjXHhlOScsICdsYXRpbjEnLCBidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldGFyZ3NfZXNfaGFzaCwgJ2FiY1x4ZTknLCAnbGF0aW4xJywgYnVmKQogCiAgICAgZGVmIHRlc3RfZXRfaGFzaChzZWxmKToKICAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGdldGFyZ3NfZXRfaGFzaApAQCAtODQ4LDEwICs4NzgsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhcmdzX2V0X2hhc2goJ2FiY1x4ZTknLCAnbGF0aW4xJywgYnVmKSwgYidhYmNceGU5JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYsIGJ5dGVhcnJheShiJ2FiY1x4ZTlceDAwJykpCiAgICAgICAgIGJ1ZiA9IGJ5dGVhcnJheShiJ3gnKjQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc19ldF9oYXNoLCAnYWJjXHhlOScsICdsYXRpbjEnLCBidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldGFyZ3NfZXRfaGFzaCwgJ2FiY1x4ZTknLCAnbGF0aW4xJywgYnVmKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1ZiwgYnl0ZWFycmF5KGIneCcqNCkpCiAgICAgICAgIGJ1ZiA9IGJ5dGVhcnJheSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc19ldF9oYXNoLCAnYWJjXHhlOScsICdsYXRpbjEnLCBidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldGFyZ3NfZXRfaGFzaCwgJ2FiY1x4ZTknLCAnbGF0aW4xJywgYnVmKQogCiAgICAgZGVmIHRlc3RfdShzZWxmKToKICAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGdldGFyZ3NfdQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9nZXR0ZXh0LnB5IGIvTGliL3Rlc3QvdGVzdF9nZXR0ZXh0LnB5CmluZGV4IGY1N2U1NDYuLmE4NTI0NDMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2V0dGV4dC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2dldHRleHQucHkKQEAgLTEsNiArMSw1IEBACiBpbXBvcnQgb3MKIGltcG9ydCBiYXNlNjQKLWltcG9ydCBzaHV0aWwKIGltcG9ydCBnZXR0ZXh0CiBpbXBvcnQgdW5pdHRlc3QKIApAQCAtNTI3LDYgKzUyNiwxMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuX19jbGFzc19fLCBEdW1teUdOVVRyYW5zbGF0aW9ucykKIAogCitjbGFzcyBNaXNjVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKKyAgICAgICAgYmxhY2tsaXN0ID0geydjMnB5JywgJ0VOT0VOVCd9CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIGdldHRleHQsIGJsYWNrbGlzdD1ibGFja2xpc3QpCisKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dsb2JhbC5weSBiL0xpYi90ZXN0L3Rlc3RfZ2xvYmFsLnB5CmluZGV4IDM3ZWM2NzIuLjllZWNjZjEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2xvYmFsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ2xvYmFsLnB5CkBAIC0yNCw3ICsyNCw3IEBACiAgICAgZ2xvYmFsIGEKICAgICBnbG9iYWwgYgogIiIiCi0gICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCBwcm9nX3RleHRfMSkKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsIHByb2dfdGV4dF8xLCBsaW5lbm89NCwgb2Zmc2V0PTQpCiAKICAgICBkZWYgdGVzdDIoc2VsZik6CiAgICAgICAgIHByb2dfdGV4dF8yID0gIiIiXApAQCAtMzIsNyArMzIsNyBAQAogICAgIHByaW50KHgpCiAgICAgZ2xvYmFsIHgKICIiIgotICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgcHJvZ190ZXh0XzIpCisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCBwcm9nX3RleHRfMiwgbGluZW5vPTMsIG9mZnNldD00KQogCiAgICAgZGVmIHRlc3QzKHNlbGYpOgogICAgICAgICBwcm9nX3RleHRfMyA9ICIiIlwKQEAgLTQxLDcgKzQxLDcgQEAKICAgICB4ID0gMgogICAgIGdsb2JhbCB4CiAiIiIKLSAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsIHByb2dfdGV4dF8zKQorICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgcHJvZ190ZXh0XzMsIGxpbmVubz00LCBvZmZzZXQ9NCkKIAogICAgIGRlZiB0ZXN0NChzZWxmKToKICAgICAgICAgcHJvZ190ZXh0XzQgPSAiIiJcCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dyYW1tYXIucHkgYi9MaWIvdGVzdC90ZXN0X2dyYW1tYXIucHkKaW5kZXggMTU0ZTNiNi4uNjVlMjZiZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9ncmFtbWFyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ3JhbW1hci5weQpAQCAtOCw2ICs4LDk1IEBACiAjIHRlc3RpbmcgaW1wb3J0ICoKIGZyb20gc3lzIGltcG9ydCAqCiAKKyMgZGlmZmVyZW50IGltcG9ydCBwYXR0ZXJucyB0byBjaGVjayB0aGF0IF9fYW5ub3RhdGlvbnNfXyBkb2VzIG5vdCBpbnRlcmZlcmUKKyMgd2l0aCBpbXBvcnQgbWFjaGluZXJ5CitpbXBvcnQgdGVzdC5hbm5fbW9kdWxlIGFzIGFubl9tb2R1bGUKK2ltcG9ydCB0eXBpbmcKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IENoYWluTWFwCitmcm9tIHRlc3QgaW1wb3J0IGFubl9tb2R1bGUyCitpbXBvcnQgdGVzdAorCisjIFRoZXNlIGFyZSBzaGFyZWQgd2l0aCB0ZXN0X3Rva2VuaXplIGFuZCBvdGhlciB0ZXN0IG1vZHVsZXMuCisjCisjIE5vdGU6IHNpbmNlIHNldmVyYWwgdGVzdCBjYXNlcyBmaWx0ZXIgb3V0IGZsb2F0cyBieSBsb29raW5nIGZvciAiZSIgYW5kICIuIiwKKyMgZG9uJ3QgYWRkIGhleGFkZWNpbWFsIGxpdGVyYWxzIHRoYXQgY29udGFpbiAiZSIgb3IgIkUiLgorVkFMSURfVU5ERVJTQ09SRV9MSVRFUkFMUyA9IFsKKyAgICAnMF8wXzAnLAorICAgICc0XzInLAorICAgICcxXzAwMDBfMDAwMCcsCisgICAgJzBiMTAwMV8wMTAwJywKKyAgICAnMHhmZmZmX2ZmZmYnLAorICAgICcwbzVfN183JywKKyAgICAnMV8wMF8wMC41JywKKyAgICAnMV8wMF8wMC41ZTUnLAorICAgICcxXzAwXzAwZTVfMScsCisgICAgJzFlMV8wJywKKyAgICAnLjFfNCcsCisgICAgJy4xXzRlMScsCisgICAgJzBiXzAnLAorICAgICcweF9mJywKKyAgICAnMG9fNScsCisgICAgJzFfMDBfMDBqJywKKyAgICAnMV8wMF8wMC41aicsCisgICAgJzFfMDBfMDBlNV8xaicsCisgICAgJy4xXzRqJywKKyAgICAnKDFfMi41KzNfM2opJywKKyAgICAnKC41XzZqKScsCitdCitJTlZBTElEX1VOREVSU0NPUkVfTElURVJBTFMgPSBbCisgICAgIyBUcmFpbGluZyB1bmRlcnNjb3JlczoKKyAgICAnMF8nLAorICAgICc0Ml8nLAorICAgICcxLjRqXycsCisgICAgJzB4XycsCisgICAgJzBiMV8nLAorICAgICcweGZfJywKKyAgICAnMG81XycsCisgICAgJzAgaWYgMV9FbHNlIDEnLAorICAgICMgVW5kZXJzY29yZXMgaW4gdGhlIGJhc2Ugc2VsZWN0b3I6CisgICAgJzBfYjAnLAorICAgICcwX3hmJywKKyAgICAnMF9vNScsCisgICAgIyBPbGQtc3R5bGUgb2N0YWwsIHN0aWxsIGRpc2FsbG93ZWQ6CisgICAgJzBfNycsCisgICAgJzA5Xzk5JywKKyAgICAjIE11bHRpcGxlIGNvbnNlY3V0aXZlIHVuZGVyc2NvcmVzOgorICAgICc0X19fX19fXzInLAorICAgICcwLjFfXzQnLAorICAgICcwLjFfXzRqJywKKyAgICAnMGIxMDAxX18wMTAwJywKKyAgICAnMHhmZmZmX19mZmZmJywKKyAgICAnMHhfX18nLAorICAgICcwbzVfXzc3JywKKyAgICAnMWUxX18wJywKKyAgICAnMWUxX18waicsCisgICAgIyBVbmRlcnNjb3JlIHJpZ2h0IGJlZm9yZSBhIGRvdDoKKyAgICAnMV8uNCcsCisgICAgJzFfLjRqJywKKyAgICAjIFVuZGVyc2NvcmUgcmlnaHQgYWZ0ZXIgYSBkb3Q6CisgICAgJzEuXzQnLAorICAgICcxLl80aicsCisgICAgJy5fNScsCisgICAgJy5fNWonLAorICAgICMgVW5kZXJzY29yZSByaWdodCBhZnRlciBhIHNpZ246CisgICAgJzEuMGUrXzEnLAorICAgICcxLjBlK18xaicsCisgICAgIyBVbmRlcnNjb3JlIHJpZ2h0IGJlZm9yZSBqOgorICAgICcxLjRfaicsCisgICAgJzEuNGU1X2onLAorICAgICMgVW5kZXJzY29yZSByaWdodCBiZWZvcmUgZToKKyAgICAnMV9lMScsCisgICAgJzEuNF9lMScsCisgICAgJzEuNF9lMWonLAorICAgICMgVW5kZXJzY29yZSByaWdodCBhZnRlciBlOgorICAgICcxZV8xJywKKyAgICAnMS40ZV8xJywKKyAgICAnMS40ZV8xaicsCisgICAgIyBDb21wbGV4IGNhc2VzIHdpdGggcGFyZW5zOgorICAgICcoMSsxLjVfal8pJywKKyAgICAnKDErMS41X2opJywKK10KKwogCiBjbGFzcyBUb2tlblRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtODcsNiArMTc2LDE0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSBpZiAwZWxzZSAwLCAwKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgIjAgaWYgMUVsc2UgMCIpCiAKKyAgICBkZWYgdGVzdF91bmRlcnNjb3JlX2xpdGVyYWxzKHNlbGYpOgorICAgICAgICBmb3IgbGl0IGluIFZBTElEX1VOREVSU0NPUkVfTElURVJBTFM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwobGl0KSwgZXZhbChsaXQucmVwbGFjZSgnXycsICcnKSkpCisgICAgICAgIGZvciBsaXQgaW4gSU5WQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsIGxpdCkKKyAgICAgICAgIyBTYW5pdHkgY2hlY2s6IG5vIGxpdGVyYWwgYmVnaW5zIHdpdGggYW4gdW5kZXJzY29yZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IsIGV2YWwsICJfMCIpCisKICAgICBkZWYgdGVzdF9zdHJpbmdfbGl0ZXJhbHMoc2VsZik6CiAgICAgICAgIHggPSAnJzsgeSA9ICIiOyBzZWxmLmFzc2VydFRydWUobGVuKHgpID09IDAgYW5kIHggPT0geSkKICAgICAgICAgeCA9ICdcJyc7IHkgPSAiJyI7IHNlbGYuYXNzZXJ0VHJ1ZShsZW4oeCkgPT0gMSBhbmQgeCA9PSB5IGFuZCBvcmQoeCkgPT0gMzkpCkBAIC0xMzksNiArMjM2LDE5IEBACiAgICAgICAgICAgICAgICAgY29tcGlsZShzLCAiPHRlc3Q+IiwgImV4ZWMiKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigidW5leHBlY3RlZCBFT0YiLCBzdHIoY20uZXhjZXB0aW9uKSkKIAordmFyX2Fubm90X2dsb2JhbDogaW50ICMgYSBnbG9iYWwgYW5ub3RhdGVkIGlzIG5lY2Vzc2FyeSBmb3IgdGVzdF92YXJfYW5ub3QKKworIyBjdXN0b20gbmFtZXNwYWNlIGZvciB0ZXN0aW5nIF9fYW5ub3RhdGlvbnNfXworCitjbGFzcyBDTlM6CisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLl9kY3QgPSB7fQorICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBpdGVtLCB2YWx1ZSk6CisgICAgICAgIHNlbGYuX2RjdFtpdGVtLmxvd2VyKCldID0gdmFsdWUKKyAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgaXRlbSk6CisgICAgICAgIHJldHVybiBzZWxmLl9kY3RbaXRlbV0KKworCiBjbGFzcyBHcmFtbWFyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgIyBzaW5nbGVfaW5wdXQ6IE5FV0xJTkUgfCBzaW1wbGVfc3RtdCB8IGNvbXBvdW5kX3N0bXQgTkVXTElORQpAQCAtMTU0LDYgKzI2NCwxNjAgQEAKICAgICAgICAgIyB0ZXN0bGlzdCBFTkRNQVJLRVIKICAgICAgICAgeCA9IGV2YWwoJzEsIDAgb3IgMScpCiAKKyAgICBkZWYgdGVzdF92YXJfYW5ub3RfYmFzaWNzKHNlbGYpOgorICAgICAgICAjIGFsbCB0aGVzZSBzaG91bGQgYmUgYWxsb3dlZAorICAgICAgICB2YXIxOiBpbnQgPSA1CisgICAgICAgIHZhcjI6IFtpbnQsIHN0cl0KKyAgICAgICAgbXlfbHN0ID0gWzQyXQorICAgICAgICBkZWYgb25lKCk6CisgICAgICAgICAgICByZXR1cm4gMQorICAgICAgICBpbnQubmV3X2F0dHI6IGludAorICAgICAgICBbbGlzdF1bMF06IHR5cGUKKyAgICAgICAgbXlfbHN0W29uZSgpLTFdOiBpbnQgPSA1CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXlfbHN0LCBbNV0pCisKKyAgICBkZWYgdGVzdF92YXJfYW5ub3Rfc3ludGF4X2Vycm9ycyhzZWxmKToKKyAgICAgICAgIyBwYXJzZXIgcGFzcworICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImRlZiBmOiBpbnQiKQorICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgIng6IGludDogc3RyIikKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJkZWYgZigpOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBub25sb2NhbCB4OiBpbnRcbiIpCisgICAgICAgICMgQVNUIHBhc3MKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJbeCwgMF06IGludFxuIikKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJmKCk6IGludFxuIikKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICIoeCwpOiBpbnQiKQorICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImRlZiBmKCk6XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICh4LCB5KTogaW50ID0gKDEsIDIpXG4iKQorICAgICAgICAjIHN5bXRhYmxlIHBhc3MKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJkZWYgZigpOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICB4OiBpbnRcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgZ2xvYmFsIHhcbiIpCisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZGVmIGYoKTpcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgZ2xvYmFsIHhcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgeDogaW50XG4iKQorCisgICAgZGVmIHRlc3RfdmFyX2Fubm90X2Jhc2ljX3NlbWFudGljcyhzZWxmKToKKyAgICAgICAgIyBleGVjdXRpb24gb3JkZXIKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcik6CisgICAgICAgICAgICBub19uYW1lW2RvZXNfbm90X2V4aXN0XTogbm9fbmFtZV9hZ2FpbiA9IDEvMAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE5hbWVFcnJvcik6CisgICAgICAgICAgICBub19uYW1lW2RvZXNfbm90X2V4aXN0XTogMS8wID0gMAorICAgICAgICBnbG9iYWwgdmFyX2Fubm90X2dsb2JhbAorCisgICAgICAgICMgZnVuY3Rpb24gc2VtYW50aWNzCisgICAgICAgIGRlZiBmKCk6CisgICAgICAgICAgICBzdDogc3RyID0gIkhlbGxvIgorICAgICAgICAgICAgYS5iOiBpbnQgPSAoMSwgMikKKyAgICAgICAgICAgIHJldHVybiBzdAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuX19hbm5vdGF0aW9uc19fLCB7fSkKKyAgICAgICAgZGVmIGZfT0soKToKKyAgICAgICAgICAgIHg6IDEvMAorICAgICAgICBmX09LKCkKKyAgICAgICAgZGVmIGZiYWQoKToKKyAgICAgICAgICAgIHg6IGludAorICAgICAgICAgICAgcHJpbnQoeCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhVbmJvdW5kTG9jYWxFcnJvcik6CisgICAgICAgICAgICBmYmFkKCkKKyAgICAgICAgZGVmIGYyYmFkKCk6CisgICAgICAgICAgICAobm9fc3VjaF9nbG9iYWwpOiBpbnQKKyAgICAgICAgICAgIHByaW50KG5vX3N1Y2hfZ2xvYmFsKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBmMmJhZCgpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShlKSwgTmFtZUVycm9yKQorCisgICAgICAgICMgY2xhc3Mgc2VtYW50aWNzCisgICAgICAgIGNsYXNzIEM6CisgICAgICAgICAgICBfX2ZvbzogaW50CisgICAgICAgICAgICBzOiBzdHIgPSAiYXR0ciIKKyAgICAgICAgICAgIHogPSAyCisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgeCk6CisgICAgICAgICAgICAgICAgc2VsZi54OiBpbnQgPSB4CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5fX2Fubm90YXRpb25zX18sIHsnX0NfX2Zvbyc6IGludCwgJ3MnOiBzdHJ9KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE5hbWVFcnJvcik6CisgICAgICAgICAgICBjbGFzcyBDQmFkOgorICAgICAgICAgICAgICAgIG5vX3N1Y2hfbmFtZV9kZWZpbmVkLmF0dHI6IGludCA9IDAKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IpOgorICAgICAgICAgICAgY2xhc3MgQ2JhZDIoQyk6CisgICAgICAgICAgICAgICAgeDogaW50CisgICAgICAgICAgICAgICAgeC55OiBsaXN0ID0gW10KKworICAgIGRlZiB0ZXN0X3Zhcl9hbm5vdF9tZXRhY2xhc3Nfc2VtYW50aWNzKHNlbGYpOgorICAgICAgICBjbGFzcyBDTWV0YSh0eXBlKToKKyAgICAgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAgICAgICAgZGVmIF9fcHJlcGFyZV9fKG1ldGFjbHMsIG5hbWUsIGJhc2VzLCAqKmt3ZHMpOgorICAgICAgICAgICAgICAgIHJldHVybiB7J19fYW5ub3RhdGlvbnNfXyc6IENOUygpfQorICAgICAgICBjbGFzcyBDQyhtZXRhY2xhc3M9Q01ldGEpOgorICAgICAgICAgICAgWFg6ICdBTk5PVCcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDQy5fX2Fubm90YXRpb25zX19bJ3h4J10sICdBTk5PVCcpCisKKyAgICBkZWYgdGVzdF92YXJfYW5ub3RfbW9kdWxlX3NlbWFudGljcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBwcmludCh0ZXN0Ll9fYW5ub3RhdGlvbnNfXykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbm5fbW9kdWxlLl9fYW5ub3RhdGlvbnNfXywKKyAgICAgICAgICAgICAgICAgICAgIHsxOiAyLCAneCc6IGludCwgJ3knOiBzdHIsICdmJzogdHlwaW5nLlR1cGxlW2ludCwgaW50XX0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5uX21vZHVsZS5NLl9fYW5ub3RhdGlvbnNfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsnMTIzJzogMTIzLCAnbyc6IHR5cGV9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFubl9tb2R1bGUyLl9fYW5ub3RhdGlvbnNfXywge30pCisKKyAgICBkZWYgdGVzdF92YXJfYW5ub3RfaW5fbW9kdWxlKHNlbGYpOgorICAgICAgICAjIGNoZWNrIHRoYXQgZnVuY3Rpb25zIGZhaWwgdGhlIHNhbWUgd2F5IHdoZW4gZXhlY3V0ZWQKKyAgICAgICAgIyBvdXRzaWRlIG9mIG1vZHVsZSB3aGVyZSB0aGV5IHdlcmUgZGVmaW5lZAorICAgICAgICBmcm9tIHRlc3QuYW5uX21vZHVsZTMgaW1wb3J0IGZfYmFkX2FubiwgZ19iYWRfYW5uLCBEX2JhZF9hbm4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IpOgorICAgICAgICAgICAgZl9iYWRfYW5uKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IpOgorICAgICAgICAgICAgZ19iYWRfYW5uKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IpOgorICAgICAgICAgICAgRF9iYWRfYW5uKDUpCisKKyAgICBkZWYgdGVzdF92YXJfYW5ub3Rfc2ltcGxlX2V4ZWMoc2VsZik6CisgICAgICAgIGducyA9IHt9OyBsbnM9IHt9CisgICAgICAgIGV4ZWMoIidkb2NzdHJpbmcnXG4iCisgICAgICAgICAgICAgIl9fYW5ub3RhdGlvbnNfX1sxXSA9IDJcbiIKKyAgICAgICAgICAgICAieDogaW50ID0gNVxuIiwgZ25zLCBsbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG5zWyJfX2Fubm90YXRpb25zX18iXSwgezE6IDIsICd4JzogaW50fSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvcik6CisgICAgICAgICAgICBnbnNbJ19fYW5ub3RhdGlvbnNfXyddCisKKyAgICBkZWYgdGVzdF92YXJfYW5ub3RfY3VzdG9tX21hcHMoc2VsZik6CisgICAgICAgICMgdGVzdHMgd2l0aCBjdXN0b20gbG9jYWxzKCkgYW5kIF9fYW5ub3RhdGlvbnNfXworICAgICAgICBucyA9IHsnX19hbm5vdGF0aW9uc19fJzogQ05TKCl9CisgICAgICAgIGV4ZWMoJ1g6IGludDsgWjogc3RyID0gIloiOyAodyk6IGNvbXBsZXggPSAxaicsIG5zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zWydfX2Fubm90YXRpb25zX18nXVsneCddLCBpbnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnNbJ19fYW5ub3RhdGlvbnNfXyddWyd6J10sIHN0cikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvcik6CisgICAgICAgICAgICBuc1snX19hbm5vdGF0aW9uc19fJ11bJ3cnXQorICAgICAgICBub25sb2NfbnMgPSB7fQorICAgICAgICBjbGFzcyBDTlMyOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuX2RjdCA9IHt9CisgICAgICAgICAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwgaXRlbSwgdmFsdWUpOgorICAgICAgICAgICAgICAgIG5vbmxvY2FsIG5vbmxvY19ucworICAgICAgICAgICAgICAgIHNlbGYuX2RjdFtpdGVtXSA9IHZhbHVlCisgICAgICAgICAgICAgICAgbm9ubG9jX25zW2l0ZW1dID0gdmFsdWUKKyAgICAgICAgICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBpdGVtKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZGN0W2l0ZW1dCisgICAgICAgIGV4ZWMoJ3g6IGludCA9IDEnLCB7fSwgQ05TMigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5vbmxvY19uc1snX19hbm5vdGF0aW9uc19fJ11bJ3gnXSwgaW50KQorCisgICAgZGVmIHRlc3RfdmFyX2Fubm90X3JlZmxlYWsoc2VsZik6CisgICAgICAgICMgY29tcGxleCBjYXNlOiBjdXN0b20gbG9jYWxzIHBsdXMgY3VzdG9tIF9fYW5ub3RhdGlvbnNfXworICAgICAgICAjIHRoaXMgd2FzIGNhdXNpbmcgcmVmbGVhaworICAgICAgICBjbnMgPSBDTlMoKQorICAgICAgICBub25sb2NfbnMgPSB7J19fYW5ub3RhdGlvbnNfXyc6IGNuc30KKyAgICAgICAgY2xhc3MgQ05TMjoKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLl9kY3QgPSB7J19fYW5ub3RhdGlvbnNfXyc6IGNuc30KKyAgICAgICAgICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBpdGVtLCB2YWx1ZSk6CisgICAgICAgICAgICAgICAgbm9ubG9jYWwgbm9ubG9jX25zCisgICAgICAgICAgICAgICAgc2VsZi5fZGN0W2l0ZW1dID0gdmFsdWUKKyAgICAgICAgICAgICAgICBub25sb2NfbnNbaXRlbV0gPSB2YWx1ZQorICAgICAgICAgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGl0ZW0pOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9kY3RbaXRlbV0KKyAgICAgICAgZXhlYygnWDogc3RyJywge30sIENOUzIoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChub25sb2NfbnNbJ19fYW5ub3RhdGlvbnNfXyddWyd4J10sIHN0cikKKwogICAgIGRlZiB0ZXN0X2Z1bmNkZWYoc2VsZik6CiAgICAgICAgICMjIyBbZGVjb3JhdG9yc10gJ2RlZicgTkFNRSBwYXJhbWV0ZXJzIFsnLT4nIHRlc3RdICc6JyBzdWl0ZQogICAgICAgICAjIyMgZGVjb3JhdG9yOiAnQCcgZG90dGVkX25hbWUgWyAnKCcgW2FyZ2xpc3RdICcpJyBdIE5FV0xJTkUKQEAgLTI5NSw2ICs1NTksMTAgQEAKICAgICAgICAgcG9zMmtleTJkaWN0KDEsMixrMj0xMDAsdG9rd2FyZzE9MTAwLHRva3dhcmcyPTIwMCkKICAgICAgICAgcG9zMmtleTJkaWN0KDEsMix0b2t3YXJnMT0xMDAsdG9rd2FyZzI9MjAwLCBrMj0xMDApCiAKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsICJkZWYgZigqKTogcGFzcyIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiZGVmIGYoKiwpOiBwYXNzIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsICJkZWYgZigqLCAqKmt3ZHMpOiBwYXNzIikKKwogICAgICAgICAjIGtleXdvcmQgYXJndW1lbnRzIGFmdGVyICphcmdsaXN0CiAgICAgICAgIGRlZiBmKCphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgICAgICByZXR1cm4gYXJncywga3dhcmdzCkBAIC0zNDEsNyArNjA5LDcgQEAKICAgICAgICAgZGVmIGYoeCkgLT4gbGlzdDogcGFzcwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuX19hbm5vdGF0aW9uc19fLCB7J3JldHVybic6IGxpc3R9KQogCi0gICAgICAgICMgdGVzdCBNQUtFX0NMT1NVUkUgd2l0aCBhIHZhcmlldHkgb2Ygb3BhcmcncworICAgICAgICAjIHRlc3QgY2xvc3VyZXMgd2l0aCBhIHZhcmlldHkgb2Ygb3BhcmdzCiAgICAgICAgIGNsb3N1cmUgPSAxCiAgICAgICAgIGRlZiBmKCk6IHJldHVybiBjbG9zdXJlCiAgICAgICAgIGRlZiBmKHg9MSk6IHJldHVybiBjbG9zdXJlCkBAIC0zNTIsNiArNjIwLDIzIEBACiAgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZigqZygxPTIpKSIpCiAgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZigqKmcoMT0yKSkiKQogCisgICAgICAgICMgQ2hlY2sgdHJhaWxpbmcgY29tbWFzIGFyZSBwZXJtaXR0ZWQgaW4gZnVuY2RlZiBhcmd1bWVudCBsaXN0CisgICAgICAgIGRlZiBmKGEsKTogcGFzcworICAgICAgICBkZWYgZigqYXJncywpOiBwYXNzCisgICAgICAgIGRlZiBmKCoqa3dkcywpOiBwYXNzCisgICAgICAgIGRlZiBmKGEsICphcmdzLCk6IHBhc3MKKyAgICAgICAgZGVmIGYoYSwgKiprd2RzLCk6IHBhc3MKKyAgICAgICAgZGVmIGYoKmFyZ3MsIGIsKTogcGFzcworICAgICAgICBkZWYgZigqLCBiLCk6IHBhc3MKKyAgICAgICAgZGVmIGYoKmFyZ3MsICoqa3dkcywpOiBwYXNzCisgICAgICAgIGRlZiBmKGEsICphcmdzLCBiLCk6IHBhc3MKKyAgICAgICAgZGVmIGYoYSwgKiwgYiwpOiBwYXNzCisgICAgICAgIGRlZiBmKGEsICphcmdzLCAqKmt3ZHMsKTogcGFzcworICAgICAgICBkZWYgZigqYXJncywgYiwgKiprd2RzLCk6IHBhc3MKKyAgICAgICAgZGVmIGYoKiwgYiwgKiprd2RzLCk6IHBhc3MKKyAgICAgICAgZGVmIGYoYSwgKmFyZ3MsIGIsICoqa3dkcywpOiBwYXNzCisgICAgICAgIGRlZiBmKGEsICosIGIsICoqa3dkcywpOiBwYXNzCisKICAgICBkZWYgdGVzdF9sYW1iZGVmKHNlbGYpOgogICAgICAgICAjIyMgbGFtYmRlZjogJ2xhbWJkYScgW3ZhcmFyZ3NsaXN0XSAnOicgdGVzdAogICAgICAgICBsMSA9IGxhbWJkYSA6IDAKQEAgLTM3MCw2ICs2NTUsMjMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsNigxLDIpLCAxKzIrMjApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobDYoMSwyLGs9MTApLCAxKzIrMTApCiAKKyAgICAgICAgIyBjaGVjayB0aGF0IHRyYWlsaW5nIGNvbW1hcyBhcmUgcGVybWl0dGVkCisgICAgICAgIGwxMCA9IGxhbWJkYSBhLDogMAorICAgICAgICBsMTEgPSBsYW1iZGEgKmFyZ3MsOiAwCisgICAgICAgIGwxMiA9IGxhbWJkYSAqKmt3ZHMsOiAwCisgICAgICAgIGwxMyA9IGxhbWJkYSBhLCAqYXJncyw6IDAKKyAgICAgICAgbDE0ID0gbGFtYmRhIGEsICoqa3dkcyw6IDAKKyAgICAgICAgbDE1ID0gbGFtYmRhICphcmdzLCBiLDogMAorICAgICAgICBsMTYgPSBsYW1iZGEgKiwgYiw6IDAKKyAgICAgICAgbDE3ID0gbGFtYmRhICphcmdzLCAqKmt3ZHMsOiAwCisgICAgICAgIGwxOCA9IGxhbWJkYSBhLCAqYXJncywgYiw6IDAKKyAgICAgICAgbDE5ID0gbGFtYmRhIGEsICosIGIsOiAwCisgICAgICAgIGwyMCA9IGxhbWJkYSBhLCAqYXJncywgKiprd2RzLDogMAorICAgICAgICBsMjEgPSBsYW1iZGEgKmFyZ3MsIGIsICoqa3dkcyw6IDAKKyAgICAgICAgbDIyID0gbGFtYmRhICosIGIsICoqa3dkcyw6IDAKKyAgICAgICAgbDIzID0gbGFtYmRhIGEsICphcmdzLCBiLCAqKmt3ZHMsOiAwCisgICAgICAgIGwyNCA9IGxhbWJkYSBhLCAqLCBiLCAqKmt3ZHMsOiAwCisKIAogICAgICMjIyBzdG10OiBzaW1wbGVfc3RtdCB8IGNvbXBvdW5kX3N0bXQKICAgICAjIFRlc3RlZCBiZWxvdwpAQCAtMTA0MCwxOCArMTM0Miw2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5vdGhlciwgNDIpCiAKICAgICBkZWYgdGVzdF9hc3luY19hd2FpdChzZWxmKToKLSAgICAgICAgYXN5bmMgPSAxCi0gICAgICAgIGF3YWl0ID0gMgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFzeW5jLCAxKQotCi0gICAgICAgIGRlZiBhc3luYygpOgotICAgICAgICAgICAgbm9ubG9jYWwgYXdhaXQKLSAgICAgICAgICAgIGF3YWl0ID0gMTAKLSAgICAgICAgYXN5bmMoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF3YWl0LCAxMCkKLQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJvb2woYXN5bmMuX19jb2RlX18uY29fZmxhZ3MgJiBpbnNwZWN0LkNPX0NPUk9VVElORSkpCi0KICAgICAgICAgYXN5bmMgZGVmIHRlc3QoKToKICAgICAgICAgICAgIGRlZiBzdW0oKToKICAgICAgICAgICAgICAgICBwYXNzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dycC5weSBiL0xpYi90ZXN0L3Rlc3RfZ3JwLnB5CmluZGV4IDI3MmIwODYuLjY5MDk1YTMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ3JwLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ3JwLnB5CkBAIC05Miw1ICs5MiwxNSBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBncnAuZ2V0Z3JnaWQsIGZha2VnaWQpCiAKKyAgICBkZWYgdGVzdF9ub25pbnRlZ2VyX2dpZChzZWxmKToKKyAgICAgICAgZW50cmllcyA9IGdycC5nZXRncmFsbCgpCisgICAgICAgIGlmIG5vdCBlbnRyaWVzOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnbm8gZ3JvdXBzJykKKyAgICAgICAgIyBDaG9vc2UgYW4gZXhpc3RlbnQgZ2lkLgorICAgICAgICBnaWQgPSBlbnRyaWVzWzBdWzJdCisgICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nLCBncnAuZ2V0Z3JnaWQsIGZsb2F0KGdpZCkpCisgICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nLCBncnAuZ2V0Z3JnaWQsIHN0cihnaWQpKQorCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2d6aXAucHkgYi9MaWIvdGVzdC90ZXN0X2d6aXAucHkKaW5kZXggM2M1MTY3My4uYjQ1N2JkMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9nemlwLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ3ppcC5weQpAQCAtNSw2ICs1LDcgQEAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGJpZ21lbXRlc3QsIF80RwogaW1wb3J0IG9zCitpbXBvcnQgcGF0aGxpYgogaW1wb3J0IGlvCiBpbXBvcnQgc3RydWN0CiBpbXBvcnQgYXJyYXkKQEAgLTY3LDYgKzY4LDE4IEBACiAgICAgICAgICMgVGVzdCBtdWx0aXBsZSBjbG9zZSgpIGNhbGxzLgogICAgICAgICBmLmNsb3NlKCkKIAorICAgIGRlZiB0ZXN0X3dyaXRlX3JlYWRfd2l0aF9wYXRobGlrZV9maWxlKHNlbGYpOgorICAgICAgICBmaWxlbmFtZSA9IHBhdGhsaWIuUGF0aChzZWxmLmZpbGVuYW1lKQorICAgICAgICB3aXRoIGd6aXAuR3ppcEZpbGUoZmlsZW5hbWUsICd3JykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoZGF0YTEgKiA1MCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGYubmFtZSwgc3RyKQorICAgICAgICB3aXRoIGd6aXAuR3ppcEZpbGUoZmlsZW5hbWUsICdhJykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoZGF0YTEpCisgICAgICAgIHdpdGggZ3ppcC5HemlwRmlsZShmaWxlbmFtZSkgYXMgZjoKKyAgICAgICAgICAgIGQgPSBmLnJlYWQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIGRhdGExICogNTEpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShmLm5hbWUsIHN0cikKKwogICAgICMgVGhlIGZvbGxvd2luZyB0ZXN0X3dyaXRlX3h5IG1ldGhvZHMgdGVzdCB0aGF0IHdyaXRlIGFjY2VwdHMKICAgICAjIHRoZSBjb3JyZXNwb25kaW5nIGJ5dGVzLWxpa2Ugb2JqZWN0IHR5cGUgYXMgaW5wdXQKICAgICAjIGFuZCB0aGF0IHRoZSBkYXRhIHdyaXR0ZW4gZXF1YWxzIGJ5dGVzKHh5KSBpbiBhbGwgY2FzZXMuCkBAIC00MzQsMTIgKzQ0NywxMiBAQAogCiAgICAgZGVmIHRlc3RfZGVjb21wcmVzc19saW1pdGVkKHNlbGYpOgogICAgICAgICAiIiJEZWNvbXByZXNzZWQgZGF0YSBidWZmZXJpbmcgc2hvdWxkIGJlIGxpbWl0ZWQiIiIKLSAgICAgICAgYm9tYiA9IGd6aXAuY29tcHJlc3MoYnl0ZXMoaW50KDJlNikpLCBjb21wcmVzc2xldmVsPTkpCisgICAgICAgIGJvbWIgPSBnemlwLmNvbXByZXNzKGInXDAnICogaW50KDJlNiksIGNvbXByZXNzbGV2ZWw9OSkKICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGxlbihib21iKSwgaW8uREVGQVVMVF9CVUZGRVJfU0laRSkKIAogICAgICAgICBib21iID0gaW8uQnl0ZXNJTyhib21iKQogICAgICAgICBkZWNvbXAgPSBnemlwLkd6aXBGaWxlKGZpbGVvYmo9Ym9tYikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcygxKSwgZGVjb21wLnJlYWQoMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb21wLnJlYWQoMSksIGInXDAnKQogICAgICAgICBtYXhfZGVjb21wID0gMSArIGlvLkRFRkFVTFRfQlVGRkVSX1NJWkUKICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoZGVjb21wLl9idWZmZXIucmF3LnRlbGwoKSwgbWF4X2RlY29tcCwKICAgICAgICAgICAgICJFeGNlc3NpdmUgYW1vdW50IG9mIGRhdGEgd2FzIGRlY29tcHJlc3NlZCIpCkBAIC01MjEsNiArNTM0LDE1IEBACiAgICAgICAgICAgICBmaWxlX2RhdGEgPSBnemlwLmRlY29tcHJlc3MoZi5yZWFkKCkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgdW5jb21wcmVzc2VkKQogCisgICAgZGVmIHRlc3RfcGF0aGxpa2VfZmlsZShzZWxmKToKKyAgICAgICAgZmlsZW5hbWUgPSBwYXRobGliLlBhdGgoc2VsZi5maWxlbmFtZSkKKyAgICAgICAgd2l0aCBnemlwLm9wZW4oZmlsZW5hbWUsICJ3YiIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKGRhdGExICogNTApCisgICAgICAgIHdpdGggZ3ppcC5vcGVuKGZpbGVuYW1lLCAiYWIiKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShkYXRhMSkKKyAgICAgICAgd2l0aCBnemlwLm9wZW4oZmlsZW5hbWUpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBkYXRhMSAqIDUxKQorCiAgICAgZGVmIHRlc3RfaW1wbGljaXRfYmluYXJ5X21vZGVzKHNlbGYpOgogICAgICAgICAjIFRlc3QgaW1wbGljaXQgYmluYXJ5IG1vZGVzIChubyAiYiIgb3IgInQiIGluIG1vZGUgc3RyaW5nKS4KICAgICAgICAgdW5jb21wcmVzc2VkID0gZGF0YTEgKiA1MApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9oYXNobGliLnB5IGIvTGliL3Rlc3QvdGVzdF9oYXNobGliLnB5CmluZGV4IGM5YjExM2UuLmY3NDhiNDYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaGFzaGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2hhc2hsaWIucHkKQEAgLTcsNiArNyw3IEBACiAjCiAKIGltcG9ydCBhcnJheQorZnJvbSBiaW5hc2NpaSBpbXBvcnQgdW5oZXhsaWZ5CiBpbXBvcnQgaGFzaGxpYgogaW1wb3J0IGl0ZXJ0b29scwogaW1wb3J0IG9zCkBAIC0xOSw2ICsyMCw3IEBACiBpbXBvcnQgd2FybmluZ3MKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IF80RywgYmlnbWVtdGVzdCwgaW1wb3J0X2ZyZXNoX21vZHVsZQorZnJvbSBodHRwLmNsaWVudCBpbXBvcnQgSFRUUEV4Y2VwdGlvbgogCiAjIFdlcmUgd2UgY29tcGlsZWQgLS13aXRoLXB5ZGVidWcgb3Igd2l0aCAjZGVmaW5lIFB5X0RFQlVHPwogQ09NUElMRURfV0lUSF9QWURFQlVHID0gaGFzYXR0cihzeXMsICdnZXR0b3RhbHJlZmNvdW50JykKQEAgLTI2LDYgKzI4LDIxIEBACiBjX2hhc2hsaWIgPSBpbXBvcnRfZnJlc2hfbW9kdWxlKCdoYXNobGliJywgZnJlc2g9WydfaGFzaGxpYiddKQogcHlfaGFzaGxpYiA9IGltcG9ydF9mcmVzaF9tb2R1bGUoJ2hhc2hsaWInLCBibG9ja2VkPVsnX2hhc2hsaWInXSkKIAordHJ5OgorICAgIGltcG9ydCBfYmxha2UyCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgX2JsYWtlMiA9IE5vbmUKKworcmVxdWlyZXNfYmxha2UyID0gdW5pdHRlc3Quc2tpcFVubGVzcyhfYmxha2UyLCAncmVxdWlyZXMgX2JsYWtlMicpCisKK3RyeToKKyAgICBpbXBvcnQgX3NoYTMKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBfc2hhMyA9IE5vbmUKKworcmVxdWlyZXNfc2hhMyA9IHVuaXR0ZXN0LnNraXBVbmxlc3MoX3NoYTMsICdyZXF1aXJlcyBfc2hhMycpCisKKwogZGVmIGhleHN0cihzKToKICAgICBhc3NlcnQgaXNpbnN0YW5jZShzLCBieXRlcyksIHJlcHIocykKICAgICBoID0gIjAxMjM0NTY3ODlhYmNkZWYiCkBAIC0zNSwxMCArNTIsMzMgQEAKICAgICByZXR1cm4gcgogCiAKK1VSTCA9ICJodHRwOi8vd3d3LnB5dGhvbnRlc3QubmV0L2hhc2hsaWIve30udHh0IgorCitkZWYgcmVhZF92ZWN0b3JzKGhhc2hfbmFtZSk6CisgICAgdXJsID0gVVJMLmZvcm1hdChoYXNoX25hbWUpCisgICAgdHJ5OgorICAgICAgICB0ZXN0ZGF0YSA9IHN1cHBvcnQub3Blbl91cmxyZXNvdXJjZSh1cmwpCisgICAgZXhjZXB0IChPU0Vycm9yLCBIVFRQRXhjZXB0aW9uKToKKyAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoIkNvdWxkIG5vdCByZXRyaWV2ZSB7fSIuZm9ybWF0KHVybCkpCisgICAgd2l0aCB0ZXN0ZGF0YToKKyAgICAgICAgZm9yIGxpbmUgaW4gdGVzdGRhdGE6CisgICAgICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCisgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJyMnKSBvciBub3QgbGluZToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgcGFydHMgPSBsaW5lLnNwbGl0KCcsJykKKyAgICAgICAgICAgIHBhcnRzWzBdID0gYnl0ZXMuZnJvbWhleChwYXJ0c1swXSkKKyAgICAgICAgICAgIHlpZWxkIHBhcnRzCisKKwogY2xhc3MgSGFzaExpYlRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBzdXBwb3J0ZWRfaGFzaF9uYW1lcyA9ICggJ21kNScsICdNRDUnLCAnc2hhMScsICdTSEExJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NoYTIyNCcsICdTSEEyMjQnLCAnc2hhMjU2JywgJ1NIQTI1NicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaGEzODQnLCAnU0hBMzg0JywgJ3NoYTUxMicsICdTSEE1MTInKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2hhMzg0JywgJ1NIQTM4NCcsICdzaGE1MTInLCAnU0hBNTEyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JsYWtlMmInLCAnYmxha2UycycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaGEzXzIyNCcsICdzaGEzXzI1NicsICdzaGEzXzM4NCcsICdzaGEzXzUxMicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaGFrZV8xMjgnLCAnc2hha2VfMjU2JykKKworICAgIHNoYWtlcyA9IHsnc2hha2VfMTI4JywgJ3NoYWtlXzI1Nid9CiAKICAgICAjIElzc3VlICMxNDY5MzogZmFsbGJhY2sgbW9kdWxlcyBhcmUgYWx3YXlzIGNvbXBpbGVkIHVuZGVyIFBPU0lYCiAgICAgX3dhcm5fb25fZXh0ZW5zaW9uX2ltcG9ydCA9IG9zLm5hbWUgPT0gJ3Bvc2l4JyBvciBDT01QSUxFRF9XSVRIX1BZREVCVUcKQEAgLTU2LDYgKzk2LDExIEBACiAgICAgICAgIGFsZ29yaXRobXMgPSBzZXQoKQogICAgICAgICBmb3IgYWxnb3JpdGhtIGluIHNlbGYuc3VwcG9ydGVkX2hhc2hfbmFtZXM6CiAgICAgICAgICAgICBhbGdvcml0aG1zLmFkZChhbGdvcml0aG0ubG93ZXIoKSkKKworICAgICAgICBfYmxha2UyID0gc2VsZi5fY29uZGl0aW9uYWxfaW1wb3J0X21vZHVsZSgnX2JsYWtlMicpCisgICAgICAgIGlmIF9ibGFrZTI6CisgICAgICAgICAgICBhbGdvcml0aG1zLnVwZGF0ZSh7J2JsYWtlMmInLCAnYmxha2Uycyd9KQorCiAgICAgICAgIHNlbGYuY29uc3RydWN0b3JzX3RvX3Rlc3QgPSB7fQogICAgICAgICBmb3IgYWxnb3JpdGhtIGluIGFsZ29yaXRobXM6CiAgICAgICAgICAgICBzZWxmLmNvbnN0cnVjdG9yc190b190ZXN0W2FsZ29yaXRobV0gPSBzZXQoKQpAQCAtNjQsMTAgKzEwOSwxMCBAQAogICAgICAgICAjIG9mIGhhc2hsaWIubmV3IGdpdmVuIHRoZSBhbGdvcml0aG0gbmFtZS4KICAgICAgICAgZm9yIGFsZ29yaXRobSwgY29uc3RydWN0b3JzIGluIHNlbGYuY29uc3RydWN0b3JzX3RvX3Rlc3QuaXRlbXMoKToKICAgICAgICAgICAgIGNvbnN0cnVjdG9ycy5hZGQoZ2V0YXR0cihoYXNobGliLCBhbGdvcml0aG0pKQotICAgICAgICAgICAgZGVmIF90ZXN0X2FsZ29yaXRobV92aWFfaGFzaGxpYl9uZXcoZGF0YT1Ob25lLCBfYWxnPWFsZ29yaXRobSk6CisgICAgICAgICAgICBkZWYgX3Rlc3RfYWxnb3JpdGhtX3ZpYV9oYXNobGliX25ldyhkYXRhPU5vbmUsIF9hbGc9YWxnb3JpdGhtLCAqKmt3YXJncyk6CiAgICAgICAgICAgICAgICAgaWYgZGF0YSBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGFzaGxpYi5uZXcoX2FsZykKLSAgICAgICAgICAgICAgICByZXR1cm4gaGFzaGxpYi5uZXcoX2FsZywgZGF0YSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hsaWIubmV3KF9hbGcsICoqa3dhcmdzKQorICAgICAgICAgICAgICAgIHJldHVybiBoYXNobGliLm5ldyhfYWxnLCBkYXRhLCAqKmt3YXJncykKICAgICAgICAgICAgIGNvbnN0cnVjdG9ycy5hZGQoX3Rlc3RfYWxnb3JpdGhtX3ZpYV9oYXNobGliX25ldykKIAogICAgICAgICBfaGFzaGxpYiA9IHNlbGYuX2NvbmRpdGlvbmFsX2ltcG9ydF9tb2R1bGUoJ19oYXNobGliJykKQEAgLTk5LDYgKzE0NCwxOCBAQAogICAgICAgICBpZiBfc2hhNTEyOgogICAgICAgICAgICAgYWRkX2J1aWx0aW5fY29uc3RydWN0b3IoJ3NoYTM4NCcpCiAgICAgICAgICAgICBhZGRfYnVpbHRpbl9jb25zdHJ1Y3Rvcignc2hhNTEyJykKKyAgICAgICAgaWYgX2JsYWtlMjoKKyAgICAgICAgICAgIGFkZF9idWlsdGluX2NvbnN0cnVjdG9yKCdibGFrZTJzJykKKyAgICAgICAgICAgIGFkZF9idWlsdGluX2NvbnN0cnVjdG9yKCdibGFrZTJiJykKKworICAgICAgICBfc2hhMyA9IHNlbGYuX2NvbmRpdGlvbmFsX2ltcG9ydF9tb2R1bGUoJ19zaGEzJykKKyAgICAgICAgaWYgX3NoYTM6CisgICAgICAgICAgICBhZGRfYnVpbHRpbl9jb25zdHJ1Y3Rvcignc2hhM18yMjQnKQorICAgICAgICAgICAgYWRkX2J1aWx0aW5fY29uc3RydWN0b3IoJ3NoYTNfMjU2JykKKyAgICAgICAgICAgIGFkZF9idWlsdGluX2NvbnN0cnVjdG9yKCdzaGEzXzM4NCcpCisgICAgICAgICAgICBhZGRfYnVpbHRpbl9jb25zdHJ1Y3Rvcignc2hhM181MTInKQorICAgICAgICAgICAgYWRkX2J1aWx0aW5fY29uc3RydWN0b3IoJ3NoYWtlXzEyOCcpCisgICAgICAgICAgICBhZGRfYnVpbHRpbl9jb25zdHJ1Y3Rvcignc2hha2VfMjU2JykKIAogICAgICAgICBzdXBlcihIYXNoTGliVGVzdENhc2UsIHNlbGYpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJncykKIApAQCAtMTExLDcgKzE2OCwxMCBAQAogICAgICAgICBhID0gYXJyYXkuYXJyYXkoImIiLCByYW5nZSgxMCkpCiAgICAgICAgIGZvciBjb25zIGluIHNlbGYuaGFzaF9jb25zdHJ1Y3RvcnM6CiAgICAgICAgICAgICBjID0gY29ucyhhKQotICAgICAgICAgICAgYy5oZXhkaWdlc3QoKQorICAgICAgICAgICAgaWYgYy5uYW1lIGluIHNlbGYuc2hha2VzOgorICAgICAgICAgICAgICAgIGMuaGV4ZGlnZXN0KDE2KQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBjLmhleGRpZ2VzdCgpCiAKICAgICBkZWYgdGVzdF9hbGdvcml0aG1zX2d1YXJhbnRlZWQoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaGxpYi5hbGdvcml0aG1zX2d1YXJhbnRlZWQsCkBAIC0xNTUsMTQgKzIxNSwyMSBAQAogICAgIGRlZiB0ZXN0X2hleGRpZ2VzdChzZWxmKToKICAgICAgICAgZm9yIGNvbnMgaW4gc2VsZi5oYXNoX2NvbnN0cnVjdG9yczoKICAgICAgICAgICAgIGggPSBjb25zKCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLmRpZ2VzdCgpLCBieXRlcykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGV4c3RyKGguZGlnZXN0KCkpLCBoLmhleGRpZ2VzdCgpKQorICAgICAgICAgICAgaWYgaC5uYW1lIGluIHNlbGYuc2hha2VzOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLmRpZ2VzdCgxNiksIGJ5dGVzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGV4c3RyKGguZGlnZXN0KDE2KSksIGguaGV4ZGlnZXN0KDE2KSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGguZGlnZXN0KCksIGJ5dGVzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGV4c3RyKGguZGlnZXN0KCkpLCBoLmhleGRpZ2VzdCgpKQogCiAgICAgZGVmIHRlc3RfbmFtZV9hdHRyaWJ1dGUoc2VsZik6CiAgICAgICAgIGZvciBjb25zIGluIHNlbGYuaGFzaF9jb25zdHJ1Y3RvcnM6CiAgICAgICAgICAgICBoID0gY29ucygpCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaC5uYW1lLCBzdHIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEluKGgubmFtZSwgc2VsZi5zdXBwb3J0ZWRfaGFzaF9uYW1lcykKKyAgICAgICAgICAgIGlmIGgubmFtZSBpbiBzZWxmLnN1cHBvcnRlZF9oYXNoX25hbWVzOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oaC5uYW1lLCBzZWxmLnN1cHBvcnRlZF9oYXNoX25hbWVzKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKGgubmFtZSwgc2VsZi5zdXBwb3J0ZWRfaGFzaF9uYW1lcykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5uYW1lLCBoYXNobGliLm5ldyhoLm5hbWUpLm5hbWUpCiAKICAgICBkZWYgdGVzdF9sYXJnZV91cGRhdGUoc2VsZik6CkBAIC0xNzcsNDAgKzI0NCw0NiBAQAogICAgICAgICAgICAgbTEudXBkYXRlKGJlZXMpCiAgICAgICAgICAgICBtMS51cGRhdGUoY2VlcykKICAgICAgICAgICAgIG0xLnVwZGF0ZShkZWVzKQorICAgICAgICAgICAgaWYgbTEubmFtZSBpbiBzZWxmLnNoYWtlczoKKyAgICAgICAgICAgICAgICBhcmdzID0gKDE2LCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYXJncyA9ICgpCiAKICAgICAgICAgICAgIG0yID0gY29ucygpCiAgICAgICAgICAgICBtMi51cGRhdGUoYWFzICsgYmVlcyArIGNlZXMgKyBkZWVzKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMS5kaWdlc3QoKSwgbTIuZGlnZXN0KCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0xLmRpZ2VzdCgqYXJncyksIG0yLmRpZ2VzdCgqYXJncykpCiAKICAgICAgICAgICAgIG0zID0gY29ucyhhYXMgKyBiZWVzICsgY2VlcyArIGRlZXMpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0xLmRpZ2VzdCgpLCBtMy5kaWdlc3QoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTEuZGlnZXN0KCphcmdzKSwgbTMuZGlnZXN0KCphcmdzKSkKIAogICAgICAgICAgICAgIyB2ZXJpZnkgY29weSgpIGRvZXNuJ3QgdG91Y2ggb3JpZ2luYWwKICAgICAgICAgICAgIG00ID0gY29ucyhhYXMgKyBiZWVzICsgY2VlcykKLSAgICAgICAgICAgIG00X2RpZ2VzdCA9IG00LmRpZ2VzdCgpCisgICAgICAgICAgICBtNF9kaWdlc3QgPSBtNC5kaWdlc3QoKmFyZ3MpCiAgICAgICAgICAgICBtNF9jb3B5ID0gbTQuY29weSgpCiAgICAgICAgICAgICBtNF9jb3B5LnVwZGF0ZShkZWVzKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMS5kaWdlc3QoKSwgbTRfY29weS5kaWdlc3QoKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTQuZGlnZXN0KCksIG00X2RpZ2VzdCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTEuZGlnZXN0KCphcmdzKSwgbTRfY29weS5kaWdlc3QoKmFyZ3MpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtNC5kaWdlc3QoKmFyZ3MpLCBtNF9kaWdlc3QpCiAKLSAgICBkZWYgY2hlY2soc2VsZiwgbmFtZSwgZGF0YSwgaGV4ZGlnZXN0KToKKyAgICBkZWYgY2hlY2soc2VsZiwgbmFtZSwgZGF0YSwgaGV4ZGlnZXN0LCBzaGFrZT1GYWxzZSwgKiprd2FyZ3MpOgorICAgICAgICBsZW5ndGggPSBsZW4oaGV4ZGlnZXN0KS8vMgogICAgICAgICBoZXhkaWdlc3QgPSBoZXhkaWdlc3QubG93ZXIoKQogICAgICAgICBjb25zdHJ1Y3RvcnMgPSBzZWxmLmNvbnN0cnVjdG9yc190b190ZXN0W25hbWVdCiAgICAgICAgICMgMiBpcyBmb3IgaGFzaGxpYi5uYW1lKC4uLikgYW5kIGhhc2hsaWIubmV3KG5hbWUsIC4uLikKICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwobGVuKGNvbnN0cnVjdG9ycyksIDIpCiAgICAgICAgIGZvciBoYXNoX29iamVjdF9jb25zdHJ1Y3RvciBpbiBjb25zdHJ1Y3RvcnM6Ci0gICAgICAgICAgICBtID0gaGFzaF9vYmplY3RfY29uc3RydWN0b3IoZGF0YSkKLSAgICAgICAgICAgIGNvbXB1dGVkID0gbS5oZXhkaWdlc3QoKQorICAgICAgICAgICAgbSA9IGhhc2hfb2JqZWN0X2NvbnN0cnVjdG9yKGRhdGEsICoqa3dhcmdzKQorICAgICAgICAgICAgY29tcHV0ZWQgPSBtLmhleGRpZ2VzdCgpIGlmIG5vdCBzaGFrZSBlbHNlIG0uaGV4ZGlnZXN0KGxlbmd0aCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCiAgICAgICAgICAgICAgICAgICAgIGNvbXB1dGVkLCBoZXhkaWdlc3QsCiAgICAgICAgICAgICAgICAgICAgICJIYXNoIGFsZ29yaXRobSAlcyBjb25zdHJ1Y3RlZCB1c2luZyAlcyByZXR1cm5lZCBoZXhkaWdlc3QiCiAgICAgICAgICAgICAgICAgICAgICIgJXIgZm9yICVkIGJ5dGUgaW5wdXQgZGF0YSB0aGF0IHNob3VsZCBoYXZlIGhhc2hlZCB0byAlci4iCiAgICAgICAgICAgICAgICAgICAgICUgKG5hbWUsIGhhc2hfb2JqZWN0X2NvbnN0cnVjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICBjb21wdXRlZCwgbGVuKGRhdGEpLCBoZXhkaWdlc3QpKQotICAgICAgICAgICAgY29tcHV0ZWQgPSBtLmRpZ2VzdCgpCisgICAgICAgICAgICBjb21wdXRlZCA9IG0uZGlnZXN0KCkgaWYgbm90IHNoYWtlIGVsc2UgbS5kaWdlc3QobGVuZ3RoKQogICAgICAgICAgICAgZGlnZXN0ID0gYnl0ZXMuZnJvbWhleChoZXhkaWdlc3QpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXB1dGVkLCBkaWdlc3QpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkaWdlc3QpLCBtLmRpZ2VzdF9zaXplKQorICAgICAgICAgICAgaWYgbm90IHNoYWtlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpZ2VzdCksIG0uZGlnZXN0X3NpemUpCiAKICAgICBkZWYgY2hlY2tfbm9fdW5pY29kZShzZWxmLCBhbGdvcml0aG1fbmFtZSk6CiAgICAgICAgICMgVW5pY29kZSBvYmplY3RzIGFyZSBub3QgYWxsb3dlZCBhcyBpbnB1dC4KQEAgLTIyNiwxMyArMjk5LDM1IEBACiAgICAgICAgIHNlbGYuY2hlY2tfbm9fdW5pY29kZSgnc2hhMzg0JykKICAgICAgICAgc2VsZi5jaGVja19ub191bmljb2RlKCdzaGE1MTInKQogCi0gICAgZGVmIGNoZWNrX2Jsb2Nrc2l6ZV9uYW1lKHNlbGYsIG5hbWUsIGJsb2NrX3NpemU9MCwgZGlnZXN0X3NpemU9MCk6CisgICAgQHJlcXVpcmVzX2JsYWtlMgorICAgIGRlZiB0ZXN0X25vX3VuaWNvZGVfYmxha2UyKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX25vX3VuaWNvZGUoJ2JsYWtlMmInKQorICAgICAgICBzZWxmLmNoZWNrX25vX3VuaWNvZGUoJ2JsYWtlMnMnKQorCisgICAgQHJlcXVpcmVzX3NoYTMKKyAgICBkZWYgdGVzdF9ub191bmljb2RlX3NoYTMoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfbm9fdW5pY29kZSgnc2hhM18yMjQnKQorICAgICAgICBzZWxmLmNoZWNrX25vX3VuaWNvZGUoJ3NoYTNfMjU2JykKKyAgICAgICAgc2VsZi5jaGVja19ub191bmljb2RlKCdzaGEzXzM4NCcpCisgICAgICAgIHNlbGYuY2hlY2tfbm9fdW5pY29kZSgnc2hhM181MTInKQorICAgICAgICBzZWxmLmNoZWNrX25vX3VuaWNvZGUoJ3NoYWtlXzEyOCcpCisgICAgICAgIHNlbGYuY2hlY2tfbm9fdW5pY29kZSgnc2hha2VfMjU2JykKKworICAgIGRlZiBjaGVja19ibG9ja3NpemVfbmFtZShzZWxmLCBuYW1lLCBibG9ja19zaXplPTAsIGRpZ2VzdF9zaXplPTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZ2VzdF9sZW5ndGg9Tm9uZSk6CiAgICAgICAgIGNvbnN0cnVjdG9ycyA9IHNlbGYuY29uc3RydWN0b3JzX3RvX3Rlc3RbbmFtZV0KICAgICAgICAgZm9yIGhhc2hfb2JqZWN0X2NvbnN0cnVjdG9yIGluIGNvbnN0cnVjdG9yczoKICAgICAgICAgICAgIG0gPSBoYXNoX29iamVjdF9jb25zdHJ1Y3RvcigpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uYmxvY2tfc2l6ZSwgYmxvY2tfc2l6ZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5kaWdlc3Rfc2l6ZSwgZGlnZXN0X3NpemUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtLmRpZ2VzdCgpKSwgZGlnZXN0X3NpemUpCisgICAgICAgICAgICBpZiBkaWdlc3RfbGVuZ3RoOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG0uZGlnZXN0KGRpZ2VzdF9sZW5ndGgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZ2VzdF9sZW5ndGgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obS5oZXhkaWdlc3QoZGlnZXN0X2xlbmd0aCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMipkaWdlc3RfbGVuZ3RoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtLmRpZ2VzdCgpKSwgZGlnZXN0X3NpemUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obS5oZXhkaWdlc3QoKSksIDIqZGlnZXN0X3NpemUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ubmFtZSwgbmFtZSkKICAgICAgICAgICAgICMgc3BsaXQgZm9yIHNoYTNfNTEyIC8gX3NoYTMuc2hhMyBvYmplY3QKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4obmFtZS5zcGxpdCgiXyIpWzBdLCByZXByKG0pKQpAQCAtMjQ1LDYgKzM0MCwzOCBAQAogICAgICAgICBzZWxmLmNoZWNrX2Jsb2Nrc2l6ZV9uYW1lKCdzaGEzODQnLCAxMjgsIDQ4KQogICAgICAgICBzZWxmLmNoZWNrX2Jsb2Nrc2l6ZV9uYW1lKCdzaGE1MTInLCAxMjgsIDY0KQogCisgICAgQHJlcXVpcmVzX3NoYTMKKyAgICBkZWYgdGVzdF9ibG9ja3NpemVfbmFtZV9zaGEzKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2Jsb2Nrc2l6ZV9uYW1lKCdzaGEzXzIyNCcsIDE0NCwgMjgpCisgICAgICAgIHNlbGYuY2hlY2tfYmxvY2tzaXplX25hbWUoJ3NoYTNfMjU2JywgMTM2LCAzMikKKyAgICAgICAgc2VsZi5jaGVja19ibG9ja3NpemVfbmFtZSgnc2hhM18zODQnLCAxMDQsIDQ4KQorICAgICAgICBzZWxmLmNoZWNrX2Jsb2Nrc2l6ZV9uYW1lKCdzaGEzXzUxMicsIDcyLCA2NCkKKyAgICAgICAgc2VsZi5jaGVja19ibG9ja3NpemVfbmFtZSgnc2hha2VfMTI4JywgMTY4LCAwLCAzMikKKyAgICAgICAgc2VsZi5jaGVja19ibG9ja3NpemVfbmFtZSgnc2hha2VfMjU2JywgMTM2LCAwLCA2NCkKKworICAgIGRlZiBjaGVja19zaGEzKHNlbGYsIG5hbWUsIGNhcGFjaXR5LCByYXRlLCBzdWZmaXgpOgorICAgICAgICBjb25zdHJ1Y3RvcnMgPSBzZWxmLmNvbnN0cnVjdG9yc190b190ZXN0W25hbWVdCisgICAgICAgIGZvciBoYXNoX29iamVjdF9jb25zdHJ1Y3RvciBpbiBjb25zdHJ1Y3RvcnM6CisgICAgICAgICAgICBtID0gaGFzaF9vYmplY3RfY29uc3RydWN0b3IoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYXBhY2l0eSArIHJhdGUsIDE2MDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uX2NhcGFjaXR5X2JpdHMsIGNhcGFjaXR5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLl9yYXRlX2JpdHMsIHJhdGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uX3N1ZmZpeCwgc3VmZml4KQorCisgICAgQHJlcXVpcmVzX3NoYTMKKyAgICBkZWYgdGVzdF9leHRyYV9zaGEzKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3NoYTMoJ3NoYTNfMjI0JywgNDQ4LCAxMTUyLCBiJ1x4MDYnKQorICAgICAgICBzZWxmLmNoZWNrX3NoYTMoJ3NoYTNfMjU2JywgNTEyLCAxMDg4LCBiJ1x4MDYnKQorICAgICAgICBzZWxmLmNoZWNrX3NoYTMoJ3NoYTNfMzg0JywgNzY4LCA4MzIsIGInXHgwNicpCisgICAgICAgIHNlbGYuY2hlY2tfc2hhMygnc2hhM181MTInLCAxMDI0LCA1NzYsIGInXHgwNicpCisgICAgICAgIHNlbGYuY2hlY2tfc2hhMygnc2hha2VfMTI4JywgMjU2LCAxMzQ0LCBiJ1x4MWYnKQorICAgICAgICBzZWxmLmNoZWNrX3NoYTMoJ3NoYWtlXzI1NicsIDUxMiwgMTA4OCwgYidceDFmJykKKworICAgIEByZXF1aXJlc19ibGFrZTIKKyAgICBkZWYgdGVzdF9ibG9ja3NpemVfbmFtZV9ibGFrZTIoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfYmxvY2tzaXplX25hbWUoJ2JsYWtlMmInLCAxMjgsIDY0KQorICAgICAgICBzZWxmLmNoZWNrX2Jsb2Nrc2l6ZV9uYW1lKCdibGFrZTJzJywgNjQsIDMyKQorCiAgICAgZGVmIHRlc3RfY2FzZV9tZDVfMChzZWxmKToKICAgICAgICAgc2VsZi5jaGVjaygnbWQ1JywgYicnLCAnZDQxZDhjZDk4ZjAwYjIwNGU5ODAwOTk4ZWNmODQyN2UnKQogCkBAIC0zNzMsNiArNTAwLDIyMSBAQAogICAgICAgICAgICJlNzE4NDgzZDBjZTc2OTY0NGUyZTQyYzdiYzE1YjQ2MzhlMWY5OGIxM2IyMDQ0Mjg1NjMyYTgwM2FmYTk3M2ViIisKICAgICAgICAgICAiZGUwZmYyNDQ4NzdlYTYwYTRjYjA0MzJjZTU3N2MzMWJlYjAwOWM1YzJjNDlhYTJlNGVhZGIyMTdhZDhjYzA5YiIpCiAKKyAgICBkZWYgY2hlY2tfYmxha2UyKHNlbGYsIGNvbnN0cnVjdG9yLCBzYWx0X3NpemUsIHBlcnNvbl9zaXplLCBrZXlfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgIGRpZ2VzdF9zaXplLCBtYXhfb2Zmc2V0KToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25zdHJ1Y3Rvci5TQUxUX1NJWkUsIHNhbHRfc2l6ZSkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2Uoc2FsdF9zaXplICsgMSk6CisgICAgICAgICAgICBjb25zdHJ1Y3RvcihzYWx0PWInYScgKiBpKQorICAgICAgICBzYWx0ID0gYidhJyAqIChzYWx0X3NpemUgKyAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb25zdHJ1Y3Rvciwgc2FsdD1zYWx0KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29uc3RydWN0b3IuUEVSU09OX1NJWkUsIHBlcnNvbl9zaXplKQorICAgICAgICBmb3IgaSBpbiByYW5nZShwZXJzb25fc2l6ZSsxKToKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yKHBlcnNvbj1iJ2EnICogaSkKKyAgICAgICAgcGVyc29uID0gYidhJyAqIChwZXJzb25fc2l6ZSArIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvbnN0cnVjdG9yLCBwZXJzb249cGVyc29uKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29uc3RydWN0b3IuTUFYX0RJR0VTVF9TSVpFLCBkaWdlc3Rfc2l6ZSkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMSwgZGlnZXN0X3NpemUgKyAxKToKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yKGRpZ2VzdF9zaXplPWkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvbnN0cnVjdG9yLCBkaWdlc3Rfc2l6ZT0tMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29uc3RydWN0b3IsIGRpZ2VzdF9zaXplPTApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvbnN0cnVjdG9yLCBkaWdlc3Rfc2l6ZT1kaWdlc3Rfc2l6ZSsxKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29uc3RydWN0b3IuTUFYX0tFWV9TSVpFLCBrZXlfc2l6ZSkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2Uoa2V5X3NpemUrMSk6CisgICAgICAgICAgICBjb25zdHJ1Y3RvcihrZXk9YidhJyAqIGkpCisgICAgICAgIGtleSA9IGInYScgKiAoa2V5X3NpemUgKyAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb25zdHJ1Y3Rvciwga2V5PWtleSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25zdHJ1Y3RvcigpLmhleGRpZ2VzdCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yKGtleT1iJycpLmhleGRpZ2VzdCgpKQorCisgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIDI1Nik6CisgICAgICAgICAgICBjb25zdHJ1Y3RvcihmYW5vdXQ9aSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29uc3RydWN0b3IsIGZhbm91dD0tMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29uc3RydWN0b3IsIGZhbm91dD0yNTYpCisKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMSwgMjU2KToKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yKGRlcHRoPWkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvbnN0cnVjdG9yLCBkZXB0aD0tMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29uc3RydWN0b3IsIGRlcHRoPTApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvbnN0cnVjdG9yLCBkZXB0aD0yNTYpCisKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgMjU2KToKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yKG5vZGVfZGVwdGg9aSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29uc3RydWN0b3IsIG5vZGVfZGVwdGg9LTEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvbnN0cnVjdG9yLCBub2RlX2RlcHRoPTI1NikKKworICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBkaWdlc3Rfc2l6ZSArIDEpOgorICAgICAgICAgICAgY29uc3RydWN0b3IoaW5uZXJfc2l6ZT1pKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb25zdHJ1Y3RvciwgaW5uZXJfc2l6ZT0tMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29uc3RydWN0b3IsIGlubmVyX3NpemU9ZGlnZXN0X3NpemUrMSkKKworICAgICAgICBjb25zdHJ1Y3RvcihsZWFmX3NpemU9MCkKKyAgICAgICAgY29uc3RydWN0b3IobGVhZl9zaXplPSgxPDwzMiktMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgY29uc3RydWN0b3IsIGxlYWZfc2l6ZT0tMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgY29uc3RydWN0b3IsIGxlYWZfc2l6ZT0xPDwzMikKKworICAgICAgICBjb25zdHJ1Y3Rvcihub2RlX29mZnNldD0wKQorICAgICAgICBjb25zdHJ1Y3Rvcihub2RlX29mZnNldD1tYXhfb2Zmc2V0KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBjb25zdHJ1Y3Rvciwgbm9kZV9vZmZzZXQ9LTEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIGNvbnN0cnVjdG9yLCBub2RlX29mZnNldD1tYXhfb2Zmc2V0KzEpCisKKyAgICAgICAgY29uc3RydWN0b3IoCisgICAgICAgICAgICBzdHJpbmc9YicnLAorICAgICAgICAgICAga2V5PWInJywKKyAgICAgICAgICAgIHNhbHQ9YicnLAorICAgICAgICAgICAgcGVyc29uPWInJywKKyAgICAgICAgICAgIGRpZ2VzdF9zaXplPTE3LAorICAgICAgICAgICAgZmFub3V0PTEsCisgICAgICAgICAgICBkZXB0aD0xLAorICAgICAgICAgICAgbGVhZl9zaXplPTI1NiwKKyAgICAgICAgICAgIG5vZGVfb2Zmc2V0PTUxMiwKKyAgICAgICAgICAgIG5vZGVfZGVwdGg9MSwKKyAgICAgICAgICAgIGlubmVyX3NpemU9NywKKyAgICAgICAgICAgIGxhc3Rfbm9kZT1UcnVlCisgICAgICAgICkKKworICAgIGRlZiBibGFrZTJfcmZjNzY5MyhzZWxmLCBjb25zdHJ1Y3RvciwgbWRfbGVuLCBpbl9sZW4pOgorICAgICAgICBkZWYgc2VsZnRlc3Rfc2VxKGxlbmd0aCwgc2VlZCk6CisgICAgICAgICAgICBtYXNrID0gKDE8PDMyKS0xCisgICAgICAgICAgICBhID0gKDB4REVBRDRCQUQgKiBzZWVkKSAmIG1hc2sKKyAgICAgICAgICAgIGIgPSAxCisgICAgICAgICAgICBvdXQgPSBieXRlYXJyYXkobGVuZ3RoKQorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuZ3RoKToKKyAgICAgICAgICAgICAgICB0ID0gKGEgKyBiKSAmIG1hc2sKKyAgICAgICAgICAgICAgICBhLCBiID0gYiwgdAorICAgICAgICAgICAgICAgIG91dFtpXSA9ICh0ID4+IDI0KSAmIDB4RkYKKyAgICAgICAgICAgIHJldHVybiBvdXQKKyAgICAgICAgb3V0ZXIgPSBjb25zdHJ1Y3RvcihkaWdlc3Rfc2l6ZT0zMikKKyAgICAgICAgZm9yIG91dGxlbiBpbiBtZF9sZW46CisgICAgICAgICAgICBmb3IgaW5sZW4gaW4gaW5fbGVuOgorICAgICAgICAgICAgICAgIGluZGF0YSA9IHNlbGZ0ZXN0X3NlcShpbmxlbiwgaW5sZW4pCisgICAgICAgICAgICAgICAga2V5ID0gc2VsZnRlc3Rfc2VxKG91dGxlbiwgb3V0bGVuKQorICAgICAgICAgICAgICAgIHVua2V5ZWQgPSBjb25zdHJ1Y3RvcihpbmRhdGEsIGRpZ2VzdF9zaXplPW91dGxlbikKKyAgICAgICAgICAgICAgICBvdXRlci51cGRhdGUodW5rZXllZC5kaWdlc3QoKSkKKyAgICAgICAgICAgICAgICBrZXllZCA9IGNvbnN0cnVjdG9yKGluZGF0YSwga2V5PWtleSwgZGlnZXN0X3NpemU9b3V0bGVuKQorICAgICAgICAgICAgICAgIG91dGVyLnVwZGF0ZShrZXllZC5kaWdlc3QoKSkKKyAgICAgICAgcmV0dXJuIG91dGVyLmhleGRpZ2VzdCgpCisKKyAgICBAcmVxdWlyZXNfYmxha2UyCisgICAgZGVmIHRlc3RfYmxha2UyYihzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19ibGFrZTIoaGFzaGxpYi5ibGFrZTJiLCAxNiwgMTYsIDY0LCA2NCwgKDE8PDY0KS0xKQorICAgICAgICBiMmJfbWRfbGVuID0gWzIwLCAzMiwgNDgsIDY0XQorICAgICAgICBiMmJfaW5fbGVuID0gWzAsIDMsIDEyOCwgMTI5LCAyNTUsIDEwMjRdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzZWxmLmJsYWtlMl9yZmM3NjkzKGhhc2hsaWIuYmxha2UyYiwgYjJiX21kX2xlbiwgYjJiX2luX2xlbiksCisgICAgICAgICAgICAiYzIzYTc4MDBkOTgxMjNiZDEwZjUwNmM2MWUyOWRhNTYwM2Q3NjNiOGJiYWQyZTczN2Y1ZTc2NWE3YmNjZDQ3NSIpCisKKyAgICBAcmVxdWlyZXNfYmxha2UyCisgICAgZGVmIHRlc3RfY2FzZV9ibGFrZTJiXzAoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2soJ2JsYWtlMmInLCBiIiIsCisgICAgICAgICAgIjc4NmEwMmY3NDIwMTU5MDNjNmM2ZmQ4NTI1NTJkMjcyOTEyZjQ3NDBlMTU4NDc2MThhODZlMjE3ZjcxZjU0MTkiKworICAgICAgICAgICJkMjVlMTAzMWFmZWU1ODUzMTM4OTY0NDQ5MzRlYjA0YjkwM2E2ODViMTQ0OGI3NTVkNTZmNzAxYWZlOWJlMmNlIikKKworICAgIEByZXF1aXJlc19ibGFrZTIKKyAgICBkZWYgdGVzdF9jYXNlX2JsYWtlMmJfMShzZWxmKToKKyAgICAgICAgc2VsZi5jaGVjaygnYmxha2UyYicsIGIiYWJjIiwKKyAgICAgICAgICAiYmE4MGE1M2Y5ODFjNGQwZDZhMjc5N2I2OWYxMmY2ZTk0YzIxMmYxNDY4NWFjNGI3NGIxMmJiNmZkYmZmYTJkMSIrCisgICAgICAgICAgIjdkODdjNTM5MmFhYjc5MmRjMjUyZDVkZTQ1MzNjYzk1MThkMzhhYThkYmYxOTI1YWI5MjM4NmVkZDQwMDk5MjMiKQorCisgICAgQHJlcXVpcmVzX2JsYWtlMgorICAgIGRlZiB0ZXN0X2JsYWtlMmJfdmVjdG9ycyhzZWxmKToKKyAgICAgICAgZm9yIG1zZywga2V5LCBtZCBpbiByZWFkX3ZlY3RvcnMoJ2JsYWtlMmInKToKKyAgICAgICAgICAgIGtleSA9IGJ5dGVzLmZyb21oZXgoa2V5KQorICAgICAgICAgICAgc2VsZi5jaGVjaygnYmxha2UyYicsIG1zZywgbWQsIGtleT1rZXkpCisKKyAgICBAcmVxdWlyZXNfYmxha2UyCisgICAgZGVmIHRlc3RfYmxha2UycyhzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19ibGFrZTIoaGFzaGxpYi5ibGFrZTJzLCA4LCA4LCAzMiwgMzIsICgxPDw0OCktMSkKKyAgICAgICAgYjJzX21kX2xlbiA9IFsxNiwgMjAsIDI4LCAzMl0KKyAgICAgICAgYjJzX2luX2xlbiA9IFswLCAzLCA2NCwgNjUsIDI1NSwgMTAyNF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHNlbGYuYmxha2UyX3JmYzc2OTMoaGFzaGxpYi5ibGFrZTJzLCBiMnNfbWRfbGVuLCBiMnNfaW5fbGVuKSwKKyAgICAgICAgICAgICI2YTQxMWYwOGNlMjVhZGNkZmIwMmFiYTY0MTQ1MWNlYzUzYzU5OGIyNGY0ZmM3ODdmYmRjODg3OTdmNGMxZGZlIikKKworICAgIEByZXF1aXJlc19ibGFrZTIKKyAgICBkZWYgdGVzdF9jYXNlX2JsYWtlMnNfMChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVjaygnYmxha2UycycsIGIiIiwKKyAgICAgICAgICAiNjkyMTdhMzA3OTkwODA5NGUxMTEyMWQwNDIzNTRhN2MxZjU1YjY0ODJjYTFhNTFlMWIyNTBkZmQxZWQwZWVmOSIpCisKKyAgICBAcmVxdWlyZXNfYmxha2UyCisgICAgZGVmIHRlc3RfY2FzZV9ibGFrZTJzXzEoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2soJ2JsYWtlMnMnLCBiImFiYyIsCisgICAgICAgICAgIjUwOGM1ZThjMzI3YzE0ZTJlMWE3MmJhMzRlZWI0NTJmMzc0NThiMjA5ZWQ2M2EyOTRkOTk5YjRjODY2NzU5ODIiKQorCisgICAgQHJlcXVpcmVzX2JsYWtlMgorICAgIGRlZiB0ZXN0X2JsYWtlMnNfdmVjdG9ycyhzZWxmKToKKyAgICAgICAgZm9yIG1zZywga2V5LCBtZCBpbiByZWFkX3ZlY3RvcnMoJ2JsYWtlMnMnKToKKyAgICAgICAgICAgIGtleSA9IGJ5dGVzLmZyb21oZXgoa2V5KQorICAgICAgICAgICAgc2VsZi5jaGVjaygnYmxha2UycycsIG1zZywgbWQsIGtleT1rZXkpCisKKyAgICBAcmVxdWlyZXNfc2hhMworICAgIGRlZiB0ZXN0X2Nhc2Vfc2hhM18yMjRfMChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVjaygnc2hhM18yMjQnLCBiIiIsCisgICAgICAgICAgIjZiNGUwMzQyMzY2N2RiYjczYjZlMTU0NTRmMGViMWFiZDQ1OTdmOWExYjA3OGUzZjViNWE2YmM3IikKKworICAgIEByZXF1aXJlc19zaGEzCisgICAgZGVmIHRlc3RfY2FzZV9zaGEzXzIyNF92ZWN0b3Ioc2VsZik6CisgICAgICAgIGZvciBtc2csIG1kIGluIHJlYWRfdmVjdG9ycygnc2hhM18yMjQnKToKKyAgICAgICAgICAgIHNlbGYuY2hlY2soJ3NoYTNfMjI0JywgbXNnLCBtZCkKKworICAgIEByZXF1aXJlc19zaGEzCisgICAgZGVmIHRlc3RfY2FzZV9zaGEzXzI1Nl8wKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrKCdzaGEzXzI1NicsIGIiIiwKKyAgICAgICAgICAiYTdmZmM2ZjhiZjFlZDc2NjUxYzE0NzU2YTA2MWQ2NjJmNTgwZmY0ZGU0M2I0OWZhODJkODBhNGI4MGY4NDM0YSIpCisKKyAgICBAcmVxdWlyZXNfc2hhMworICAgIGRlZiB0ZXN0X2Nhc2Vfc2hhM18yNTZfdmVjdG9yKHNlbGYpOgorICAgICAgICBmb3IgbXNnLCBtZCBpbiByZWFkX3ZlY3RvcnMoJ3NoYTNfMjU2Jyk6CisgICAgICAgICAgICBzZWxmLmNoZWNrKCdzaGEzXzI1NicsIG1zZywgbWQpCisKKyAgICBAcmVxdWlyZXNfc2hhMworICAgIGRlZiB0ZXN0X2Nhc2Vfc2hhM18zODRfMChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVjaygnc2hhM18zODQnLCBiIiIsCisgICAgICAgICAgIjBjNjNhNzViODQ1ZTRmN2QwMTEwN2Q4NTJlNGMyNDg1YzUxYTUwYWFhYTk0ZmM2MTk5NWU3MWJiZWU5ODNhMmEiKworICAgICAgICAgICJjMzcxMzgzMTI2NGFkYjQ3ZmI2YmQxZTA1OGQ1ZjAwNCIpCisKKyAgICBAcmVxdWlyZXNfc2hhMworICAgIGRlZiB0ZXN0X2Nhc2Vfc2hhM18zODRfdmVjdG9yKHNlbGYpOgorICAgICAgICBmb3IgbXNnLCBtZCBpbiByZWFkX3ZlY3RvcnMoJ3NoYTNfMzg0Jyk6CisgICAgICAgICAgICBzZWxmLmNoZWNrKCdzaGEzXzM4NCcsIG1zZywgbWQpCisKKyAgICBAcmVxdWlyZXNfc2hhMworICAgIGRlZiB0ZXN0X2Nhc2Vfc2hhM181MTJfMChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVjaygnc2hhM181MTInLCBiIiIsCisgICAgICAgICAgImE2OWY3M2NjYTIzYTlhYzVjOGI1NjdkYzE4NWE3NTZlOTdjOTgyMTY0ZmUyNTg1OWUwZDFkY2MxNDc1YzgwYTYiKworICAgICAgICAgICIxNWIyMTIzYWYxZjVmOTRjMTFlM2U5NDAyYzNhYzU1OGY1MDAxOTlkOTViNmQzZTMwMTc1ODU4NjI4MWRjZDI2IikKKworICAgIEByZXF1aXJlc19zaGEzCisgICAgZGVmIHRlc3RfY2FzZV9zaGEzXzUxMl92ZWN0b3Ioc2VsZik6CisgICAgICAgIGZvciBtc2csIG1kIGluIHJlYWRfdmVjdG9ycygnc2hhM181MTInKToKKyAgICAgICAgICAgIHNlbGYuY2hlY2soJ3NoYTNfNTEyJywgbXNnLCBtZCkKKworICAgIEByZXF1aXJlc19zaGEzCisgICAgZGVmIHRlc3RfY2FzZV9zaGFrZV8xMjhfMChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVjaygnc2hha2VfMTI4JywgYiIiLAorICAgICAgICAgICI3ZjljMmJhNGU4OGY4MjdkNjE2MDQ1NTA3NjA1ODUzZWQ3M2I4MDkzZjZlZmJjODhlYjFhNmVhY2ZhNjZlZjI2IiwKKyAgICAgICAgICBUcnVlKQorICAgICAgICBzZWxmLmNoZWNrKCdzaGFrZV8xMjgnLCBiIiIsICI3ZjljIiwgVHJ1ZSkKKworICAgIEByZXF1aXJlc19zaGEzCisgICAgZGVmIHRlc3RfY2FzZV9zaGFrZTEyOF92ZWN0b3Ioc2VsZik6CisgICAgICAgIGZvciBtc2csIG1kIGluIHJlYWRfdmVjdG9ycygnc2hha2VfMTI4Jyk6CisgICAgICAgICAgICBzZWxmLmNoZWNrKCdzaGFrZV8xMjgnLCBtc2csIG1kLCBUcnVlKQorCisgICAgQHJlcXVpcmVzX3NoYTMKKyAgICBkZWYgdGVzdF9jYXNlX3NoYWtlXzI1Nl8wKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrKCdzaGFrZV8yNTYnLCBiIiIsCisgICAgICAgICAgIjQ2YjlkZDJiMGJhODhkMTMyMzNiM2ZlYjc0M2VlYjI0M2ZjZDUyZWE2MmI4MWI4MmI1MGMyNzY0NmVkNTc2MmYiLAorICAgICAgICAgIFRydWUpCisgICAgICAgIHNlbGYuY2hlY2soJ3NoYWtlXzI1NicsIGIiIiwgIjQ2YjkiLCBUcnVlKQorCisgICAgQHJlcXVpcmVzX3NoYTMKKyAgICBkZWYgdGVzdF9jYXNlX3NoYWtlMjU2X3ZlY3RvcihzZWxmKToKKyAgICAgICAgZm9yIG1zZywgbWQgaW4gcmVhZF92ZWN0b3JzKCdzaGFrZV8yNTYnKToKKyAgICAgICAgICAgIHNlbGYuY2hlY2soJ3NoYWtlXzI1NicsIG1zZywgbWQsIFRydWUpCisKICAgICBkZWYgdGVzdF9naWwoc2VsZik6CiAgICAgICAgICMgQ2hlY2sgdGhpbmdzIHdvcmsgZmluZSB3aXRoIGFuIGlucHV0IGxhcmdlciB0aGFuIHRoZSBzaXplIHJlcXVpcmVkCiAgICAgICAgICMgZm9yIG11bHRpdGhyZWFkZWQgb3BlcmF0aW9uICh3aGljaCBpcyBoYXJkd2lyZWQgdG8gMjA0OCkuCkBAIC00NDcsNiArNzg5LDEyIEBACiAgICAgICAgIChiJ3Bhc3NcMHdvcmQnLCBiJ3NhXDBsdCcsIDQwOTYsIDE2KSwKICAgICBdCiAKKyAgICBzY3J5cHRfdGVzdF92ZWN0b3JzID0gWworICAgICAgICAoYicnLCBiJycsIDE2LCAxLCAxLCB1bmhleGxpZnkoJzc3ZDY1NzYyMzg2NTdiMjAzYjE5Y2E0MmMxOGEwNDk3ZjE2YjQ4NDRlMzA3NGFlOGRmZGZmYTNmZWRlMjE0NDJmY2QwMDY5ZGVkMDk0OGY4MzI2YTc1M2EwZmM4MWYxN2U4ZDNlMGZiMmUwZDM2MjhjZjM1ZTIwYzM4ZDE4OTA2JykpLAorICAgICAgICAoYidwYXNzd29yZCcsIGInTmFDbCcsIDEwMjQsIDgsIDE2LCB1bmhleGxpZnkoJ2ZkYmFiZTFjOWQzNDcyMDA3ODU2ZTcxOTBkMDFlOWZlN2M2YWQ3Y2JjODIzNzgzMGU3NzM3NjYzNGIzNzMxNjIyZWFmMzBkOTJlMjJhMzg4NmZmMTA5Mjc5ZDk4MzBkYWM3MjdhZmI5NGE4M2VlNmQ4MzYwY2JkZmEyY2MwNjQwJykpLAorICAgICAgICAoYidwbGVhc2VsZXRtZWluJywgYidTb2RpdW1DaGxvcmlkZScsIDE2Mzg0LCA4LCAxLCB1bmhleGxpZnkoJzcwMjNiZGNiM2FmZDczNDg0NjFjMDZjZDgxZmQzOGViZmRhOGZiYmE5MDRmOGUzZWE5YjU0M2Y2NTQ1ZGExZjJkNTQzMjk1NTYxM2YwZmNmNjJkNDk3MDUyNDJhOWFmOWU2MWU4NWRjMGQ2NTFlNDBkZmNmMDE3YjQ1NTc1ODg3JykpLAorICAgXQorCiAgICAgcGJrZGYyX3Jlc3VsdHMgPSB7CiAgICAgICAgICJzaGExIjogWwogICAgICAgICAgICAgIyBvZmZpY2lhbCB0ZXN0IHZlY3RvcnMgZnJvbSBSRkMgNjA3MApAQCAtNTI2LDUgKzg3NCw0NSBAQAogICAgICAgICBzZWxmLl90ZXN0X3Bia2RmMl9obWFjKGNfaGFzaGxpYi5wYmtkZjJfaG1hYykKIAogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihjX2hhc2hsaWIsICdzY3J5cHQnKSwKKyAgICAgICAgICAgICAgICAgICAgICcgICB0ZXN0IHJlcXVpcmVzIE9wZW5TU0wgPiAxLjEnKQorICAgIGRlZiB0ZXN0X3NjcnlwdChzZWxmKToKKyAgICAgICAgZm9yIHBhc3N3b3JkLCBzYWx0LCBuLCByLCBwLCBleHBlY3RlZCBpbiBzZWxmLnNjcnlwdF90ZXN0X3ZlY3RvcnM6CisgICAgICAgICAgICByZXN1bHQgPSBoYXNobGliLnNjcnlwdChwYXNzd29yZCwgc2FsdD1zYWx0LCBuPW4sIHI9ciwgcD1wKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIGV4cGVjdGVkKQorCisgICAgICAgICMgdGhpcyB2YWx1ZXMgc2hvdWxkIHdvcmsKKyAgICAgICAgaGFzaGxpYi5zY3J5cHQoYidwYXNzd29yZCcsIHNhbHQ9YidzYWx0Jywgbj0yLCByPTgsIHA9MSkKKyAgICAgICAgIyBwYXNzd29yZCBhbmQgc2FsdCBtdXN0IGJlIGJ5dGVzLWxpa2UKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgaGFzaGxpYi5zY3J5cHQoJ3Bhc3N3b3JkJywgc2FsdD1iJ3NhbHQnLCBuPTIsIHI9OCwgcD0xKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBoYXNobGliLnNjcnlwdChiJ3Bhc3N3b3JkJywgc2FsdD0nc2FsdCcsIG49Miwgcj04LCBwPTEpCisgICAgICAgICMgcmVxdWlyZSBrZXl3b3JkIGFyZ3MKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgaGFzaGxpYi5zY3J5cHQoYidwYXNzd29yZCcpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGhhc2hsaWIuc2NyeXB0KGIncGFzc3dvcmQnLCBiJ3NhbHQnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBoYXNobGliLnNjcnlwdChiJ3Bhc3N3b3JkJywgMiwgOCwgMSwgc2FsdD1iJ3NhbHQnKQorICAgICAgICBmb3IgbiBpbiBbLTEsIDAsIDEsIE5vbmVdOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcygoVmFsdWVFcnJvciwgT3ZlcmZsb3dFcnJvciwgVHlwZUVycm9yKSk6CisgICAgICAgICAgICAgICAgaGFzaGxpYi5zY3J5cHQoYidwYXNzd29yZCcsIHNhbHQ9YidzYWx0Jywgbj1uLCByPTgsIHA9MSkKKyAgICAgICAgZm9yIHIgaW4gWy0xLCAwLCBOb25lXToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoKFZhbHVlRXJyb3IsIE92ZXJmbG93RXJyb3IsIFR5cGVFcnJvcikpOgorICAgICAgICAgICAgICAgIGhhc2hsaWIuc2NyeXB0KGIncGFzc3dvcmQnLCBzYWx0PWInc2FsdCcsIG49Miwgcj1yLCBwPTEpCisgICAgICAgIGZvciBwIGluIFstMSwgMCwgTm9uZV06CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKChWYWx1ZUVycm9yLCBPdmVyZmxvd0Vycm9yLCBUeXBlRXJyb3IpKToKKyAgICAgICAgICAgICAgICBoYXNobGliLnNjcnlwdChiJ3Bhc3N3b3JkJywgc2FsdD1iJ3NhbHQnLCBuPTIsIHI9OCwgcD1wKQorICAgICAgICBmb3IgbWF4bWVtIGluIFstMSwgTm9uZV06CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKChWYWx1ZUVycm9yLCBPdmVyZmxvd0Vycm9yLCBUeXBlRXJyb3IpKToKKyAgICAgICAgICAgICAgICBoYXNobGliLnNjcnlwdChiJ3Bhc3N3b3JkJywgc2FsdD1iJ3NhbHQnLCBuPTIsIHI9OCwgcD0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heG1lbT1tYXhtZW0pCisgICAgICAgIGZvciBka2xlbiBpbiBbLTEsIE5vbmVdOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcygoVmFsdWVFcnJvciwgT3ZlcmZsb3dFcnJvciwgVHlwZUVycm9yKSk6CisgICAgICAgICAgICAgICAgaGFzaGxpYi5zY3J5cHQoYidwYXNzd29yZCcsIHNhbHQ9YidzYWx0Jywgbj0yLCByPTgsIHA9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBka2xlbj1ka2xlbikKKworCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9oZWFwcS5weSBiL0xpYi90ZXN0L3Rlc3RfaGVhcHEucHkKaW5kZXggYjdlODI1OS4uMmY4YzY0OCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9oZWFwcS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2hlYXBxLnB5CkBAIC0xLDYgKzEsNSBAQAogIiIiVW5pdHRlc3RzIGZvciBoZWFwcS4iIiIKIAotaW1wb3J0IHN5cwogaW1wb3J0IHJhbmRvbQogaW1wb3J0IHVuaXR0ZXN0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaG1hYy5weSBiL0xpYi90ZXN0L3Rlc3RfaG1hYy5weQppbmRleCA5ODgyNmI1Li4wNjdlMTNmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2htYWMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9obWFjLnB5CkBAIC0zLDcgKzMsNiBAQAogaW1wb3J0IGhhc2hsaWIKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHdhcm5pbmdzCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogCiBkZWYgaWdub3JlX3dhcm5pbmcoZnVuYyk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2h0bWxwYXJzZXIucHkgYi9MaWIvdGVzdC90ZXN0X2h0bWxwYXJzZXIucHkKaW5kZXggMTE0MjBiMi4uMzI2ZTM0MiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9odG1scGFyc2VyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaHRtbHBhcnNlci5weQpAQCAtMyw3ICszLDYgQEAKIGltcG9ydCBodG1sLnBhcnNlcgogaW1wb3J0IHBwcmludAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogCiBjbGFzcyBFdmVudENvbGxlY3RvcihodG1sLnBhcnNlci5IVE1MUGFyc2VyKToKQEAgLTcwMiw3ICs3MDEsNyBAQAogCiAgICAgZGVmIHRlc3RfYXR0cl9mdW5reV9uYW1lczIoc2VsZik6CiAgICAgICAgIHNlbGYuX3J1bl9jaGVjaygKLSAgICAgICAgICAgICI8YSAkPjxiICQ9JT48YyBcPS8+IiwKKyAgICAgICAgICAgIHIiPGEgJD48YiAkPSU+PGMgXD0vPiIsCiAgICAgICAgICAgICBbKCJzdGFydHRhZyIsICJhIiwgWygiJCIsIE5vbmUpXSksCiAgICAgICAgICAgICAgKCJzdGFydHRhZyIsICJiIiwgWygiJCIsICIlIildKSwKICAgICAgICAgICAgICAoInN0YXJ0dGFnIiwgImMiLCBbKCJcXCIsICIvIildKV0pCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2h0dHBfY29va2llamFyLnB5IGIvTGliL3Rlc3QvdGVzdF9odHRwX2Nvb2tpZWphci5weQppbmRleCA0OWMwMWFlLi42ZmVlNGRmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2h0dHBfY29va2llamFyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaHR0cF9jb29raWVqYXIucHkKQEAgLTEwNTEsNyArMTA1MSw3IEBACiAgICAgICAgIHVybCA9ICJodHRwOi8vZm9vLmJhci5jb20vIgogICAgICAgICBpbnRlcmFjdF8yOTY1KGMsIHVybCwgInNwYW09ZWdnczsgVmVyc2lvbj0xOyBQb3J0IikKICAgICAgICAgaCA9IGludGVyYWN0XzI5NjUoYywgdXJsKQotICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KGgsICJcJFBvcnQoW149XXwkKSIsCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoaCwgciJcJFBvcnQoW149XXwkKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInBvcnQgd2l0aCBubyB2YWx1ZSBub3QgcmV0dXJuZWQgd2l0aCBubyB2YWx1ZSIpCiAKICAgICAgICAgYyA9IENvb2tpZUphcihwb2wpCkBAIC0xMzk2LDkgKzEzOTYsOSBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoY29va2llLCByJ15cJFZlcnNpb249Ij8xIj87JykKICAgICAgICAgc2VsZi5hc3NlcnRSZWdleChjb29raWUsIHInUGFydF9OdW1iZXI9Ij9Sb2NrZXRfTGF1bmNoZXJfMDAwMSI/OycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXHMqXCRQYXRoPSJcL2FjbWUiJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInXHMqXCRQYXRoPSJcL2FjbWUiJykKICAgICAgICAgc2VsZi5hc3NlcnRSZWdleChjb29raWUsIHInQ3VzdG9tZXI9Ij9XSUxFX0VfQ09ZT1RFIj87JwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdccypcJFBhdGg9IlwvYWNtZSInKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidccypcJFBhdGg9IlwvYWNtZSInKQogCiAgICAgICAgICMKICAgICAgICAgIyAgIDcuICBVc2VyIEFnZW50IC0+IFNlcnZlcgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9odHRwbGliLnB5IGIvTGliL3Rlc3QvdGVzdF9odHRwbGliLnB5CmluZGV4IDYxZWQ2YmIuLjY4ZjY5NDYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaHR0cGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2h0dHBsaWIucHkKQEAgLTM0NCw2ICszNDQsMTM0IEBACiAgICAgICAgICAgICAgICAgICAgIGNvbm4ucHV0aGVhZGVyKG5hbWUsIHZhbHVlKQogCiAKK2NsYXNzIFRyYW5zZmVyRW5jb2RpbmdUZXN0KFRlc3RDYXNlKToKKyAgICBleHBlY3RlZF9ib2R5ID0gYiJJdCdzIGp1c3QgYSBmbGVzaCB3b3VuZCIKKworICAgIGRlZiB0ZXN0X2VuZGhlYWRlcnNfY2h1bmtlZChzZWxmKToKKyAgICAgICAgY29ubiA9IGNsaWVudC5IVFRQQ29ubmVjdGlvbignZXhhbXBsZS5jb20nKQorICAgICAgICBjb25uLnNvY2sgPSBGYWtlU29ja2V0KGInJykKKyAgICAgICAgY29ubi5wdXRyZXF1ZXN0KCdQT1NUJywgJy8nKQorICAgICAgICBjb25uLmVuZGhlYWRlcnMoc2VsZi5fbWFrZV9ib2R5KCksIGVuY29kZV9jaHVua2VkPVRydWUpCisKKyAgICAgICAgXywgXywgYm9keSA9IHNlbGYuX3BhcnNlX3JlcXVlc3QoY29ubi5zb2NrLmRhdGEpCisgICAgICAgIGJvZHkgPSBzZWxmLl9wYXJzZV9jaHVua2VkKGJvZHkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYm9keSwgc2VsZi5leHBlY3RlZF9ib2R5KQorCisgICAgZGVmIHRlc3RfZXhwbGljaXRfaGVhZGVycyhzZWxmKToKKyAgICAgICAgIyBleHBsaWNpdCBjaHVua2VkCisgICAgICAgIGNvbm4gPSBjbGllbnQuSFRUUENvbm5lY3Rpb24oJ2V4YW1wbGUuY29tJykKKyAgICAgICAgY29ubi5zb2NrID0gRmFrZVNvY2tldChiJycpCisgICAgICAgICMgdGhpcyBzaG91bGRuJ3QgYWN0dWFsbHkgYmUgYXV0b21hdGljYWxseSBjaHVuay1lbmNvZGVkIGJlY2F1c2UgdGhlCisgICAgICAgICMgY2FsbGluZyBjb2RlIGhhcyBleHBsaWNpdGx5IHN0YXRlZCB0aGF0IGl0J3MgdGFraW5nIGNhcmUgb2YgaXQKKyAgICAgICAgY29ubi5yZXF1ZXN0KAorICAgICAgICAgICAgJ1BPU1QnLCAnLycsIHNlbGYuX21ha2VfYm9keSgpLCB7J1RyYW5zZmVyLUVuY29kaW5nJzogJ2NodW5rZWQnfSkKKworICAgICAgICBfLCBoZWFkZXJzLCBib2R5ID0gc2VsZi5fcGFyc2VfcmVxdWVzdChjb25uLnNvY2suZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignY29udGVudC1sZW5ndGgnLCBbay5sb3dlcigpIGZvciBrIGluIGhlYWRlcnMua2V5cygpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXJzWydUcmFuc2Zlci1FbmNvZGluZyddLCAnY2h1bmtlZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYm9keSwgc2VsZi5leHBlY3RlZF9ib2R5KQorCisgICAgICAgICMgZXhwbGljaXQgY2h1bmtlZCwgc3RyaW5nIGJvZHkKKyAgICAgICAgY29ubiA9IGNsaWVudC5IVFRQQ29ubmVjdGlvbignZXhhbXBsZS5jb20nKQorICAgICAgICBjb25uLnNvY2sgPSBGYWtlU29ja2V0KGInJykKKyAgICAgICAgY29ubi5yZXF1ZXN0KAorICAgICAgICAgICAgJ1BPU1QnLCAnLycsIHNlbGYuZXhwZWN0ZWRfYm9keS5kZWNvZGUoJ2xhdGluLTEnKSwKKyAgICAgICAgICAgIHsnVHJhbnNmZXItRW5jb2RpbmcnOiAnY2h1bmtlZCd9KQorCisgICAgICAgIF8sIGhlYWRlcnMsIGJvZHkgPSBzZWxmLl9wYXJzZV9yZXF1ZXN0KGNvbm4uc29jay5kYXRhKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdjb250ZW50LWxlbmd0aCcsIFtrLmxvd2VyKCkgZm9yIGsgaW4gaGVhZGVycy5rZXlzKCldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlcnNbJ1RyYW5zZmVyLUVuY29kaW5nJ10sICdjaHVua2VkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChib2R5LCBzZWxmLmV4cGVjdGVkX2JvZHkpCisKKyAgICAgICAgIyBVc2VyLXNwZWNpZmllZCBURSwgYnV0IHJlcXVlc3QoKSBkb2VzIHRoZSBjaHVuayBlbmNvZGluZworICAgICAgICBjb25uID0gY2xpZW50LkhUVFBDb25uZWN0aW9uKCdleGFtcGxlLmNvbScpCisgICAgICAgIGNvbm4uc29jayA9IEZha2VTb2NrZXQoYicnKQorICAgICAgICBjb25uLnJlcXVlc3QoJ1BPU1QnLCAnLycsCisgICAgICAgICAgICBoZWFkZXJzPXsnVHJhbnNmZXItRW5jb2RpbmcnOiAnZ3ppcCwgY2h1bmtlZCd9LAorICAgICAgICAgICAgZW5jb2RlX2NodW5rZWQ9VHJ1ZSwKKyAgICAgICAgICAgIGJvZHk9c2VsZi5fbWFrZV9ib2R5KCkpCisgICAgICAgIF8sIGhlYWRlcnMsIGJvZHkgPSBzZWxmLl9wYXJzZV9yZXF1ZXN0KGNvbm4uc29jay5kYXRhKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdjb250ZW50LWxlbmd0aCcsIFtrLmxvd2VyKCkgZm9yIGsgaW4gaGVhZGVyc10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyc1snVHJhbnNmZXItRW5jb2RpbmcnXSwgJ2d6aXAsIGNodW5rZWQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX3BhcnNlX2NodW5rZWQoYm9keSksIHNlbGYuZXhwZWN0ZWRfYm9keSkKKworICAgIGRlZiB0ZXN0X3JlcXVlc3Qoc2VsZik6CisgICAgICAgIGZvciBlbXB0eV9saW5lcyBpbiAoRmFsc2UsIFRydWUsKToKKyAgICAgICAgICAgIGNvbm4gPSBjbGllbnQuSFRUUENvbm5lY3Rpb24oJ2V4YW1wbGUuY29tJykKKyAgICAgICAgICAgIGNvbm4uc29jayA9IEZha2VTb2NrZXQoYicnKQorICAgICAgICAgICAgY29ubi5yZXF1ZXN0KAorICAgICAgICAgICAgICAgICdQT1NUJywgJy8nLCBzZWxmLl9tYWtlX2JvZHkoZW1wdHlfbGluZXM9ZW1wdHlfbGluZXMpKQorCisgICAgICAgICAgICBfLCBoZWFkZXJzLCBib2R5ID0gc2VsZi5fcGFyc2VfcmVxdWVzdChjb25uLnNvY2suZGF0YSkKKyAgICAgICAgICAgIGJvZHkgPSBzZWxmLl9wYXJzZV9jaHVua2VkKGJvZHkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJvZHksIHNlbGYuZXhwZWN0ZWRfYm9keSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyc1snVHJhbnNmZXItRW5jb2RpbmcnXSwgJ2NodW5rZWQnKQorCisgICAgICAgICAgICAjIENvbnRlbnQtTGVuZ3RoIGFuZCBUcmFuc2Zlci1FbmNvZGluZyBTSE9VTEQgbm90IGJlIHNlbnQgaW4gdGhlCisgICAgICAgICAgICAjIHNhbWUgcmVxdWVzdAorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbignY29udGVudC1sZW5ndGgnLCBbay5sb3dlcigpIGZvciBrIGluIGhlYWRlcnNdKQorCisgICAgZGVmIHRlc3RfZW1wdHlfYm9keShzZWxmKToKKyAgICAgICAgIyBaZXJvLWxlbmd0aCBpdGVyYWJsZSBzaG91bGQgYmUgdHJlYXRlZCBsaWtlIGFueSBvdGhlciBpdGVyYWJsZQorICAgICAgICBjb25uID0gY2xpZW50LkhUVFBDb25uZWN0aW9uKCdleGFtcGxlLmNvbScpCisgICAgICAgIGNvbm4uc29jayA9IEZha2VTb2NrZXQoYicnKQorICAgICAgICBjb25uLnJlcXVlc3QoJ1BPU1QnLCAnLycsICgpKQorICAgICAgICBfLCBoZWFkZXJzLCBib2R5ID0gc2VsZi5fcGFyc2VfcmVxdWVzdChjb25uLnNvY2suZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXJzWydUcmFuc2Zlci1FbmNvZGluZyddLCAnY2h1bmtlZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ2NvbnRlbnQtbGVuZ3RoJywgW2subG93ZXIoKSBmb3IgayBpbiBoZWFkZXJzXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChib2R5LCBiIjBcclxuXHJcbiIpCisKKyAgICBkZWYgX21ha2VfYm9keShzZWxmLCBlbXB0eV9saW5lcz1GYWxzZSk6CisgICAgICAgIGxpbmVzID0gc2VsZi5leHBlY3RlZF9ib2R5LnNwbGl0KGInICcpCisgICAgICAgIGZvciBpZHgsIGxpbmUgaW4gZW51bWVyYXRlKGxpbmVzKToKKyAgICAgICAgICAgICMgZm9yIHRlc3RpbmcgaGFuZGxpbmcgZW1wdHkgbGluZXMKKyAgICAgICAgICAgIGlmIGVtcHR5X2xpbmVzIGFuZCBpZHggJSAyOgorICAgICAgICAgICAgICAgIHlpZWxkIGInJworICAgICAgICAgICAgaWYgaWR4IDwgbGVuKGxpbmVzKSAtIDE6CisgICAgICAgICAgICAgICAgeWllbGQgbGluZSArIGInICcKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgeWllbGQgbGluZQorCisgICAgZGVmIF9wYXJzZV9yZXF1ZXN0KHNlbGYsIGRhdGEpOgorICAgICAgICBsaW5lcyA9IGRhdGEuc3BsaXQoYidcclxuJykKKyAgICAgICAgcmVxdWVzdCA9IGxpbmVzWzBdCisgICAgICAgIGhlYWRlcnMgPSB7fQorICAgICAgICBuID0gMQorICAgICAgICB3aGlsZSBuIDwgbGVuKGxpbmVzKSBhbmQgbGVuKGxpbmVzW25dKSA+IDA6CisgICAgICAgICAgICBrZXksIHZhbCA9IGxpbmVzW25dLnNwbGl0KGInOicpCisgICAgICAgICAgICBrZXkgPSBrZXkuZGVjb2RlKCdsYXRpbi0xJykuc3RyaXAoKQorICAgICAgICAgICAgaGVhZGVyc1trZXldID0gdmFsLmRlY29kZSgnbGF0aW4tMScpLnN0cmlwKCkKKyAgICAgICAgICAgIG4gKz0gMQorCisgICAgICAgIHJldHVybiByZXF1ZXN0LCBoZWFkZXJzLCBiJ1xyXG4nLmpvaW4obGluZXNbbiArIDE6XSkKKworICAgIGRlZiBfcGFyc2VfY2h1bmtlZChzZWxmLCBkYXRhKToKKyAgICAgICAgYm9keSA9IFtdCisgICAgICAgIHRyYWlsZXJzID0ge30KKyAgICAgICAgbiA9IDAKKyAgICAgICAgbGluZXMgPSBkYXRhLnNwbGl0KGInXHJcbicpCisgICAgICAgICMgcGFyc2UgYm9keQorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgc2l6ZSwgY2h1bmsgPSBsaW5lc1tuOm4rMl0KKyAgICAgICAgICAgIHNpemUgPSBpbnQoc2l6ZSwgMTYpCisKKyAgICAgICAgICAgIGlmIHNpemUgPT0gMDoKKyAgICAgICAgICAgICAgICBuICs9IDEKKyAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpemUsIGxlbihjaHVuaykpCisgICAgICAgICAgICBib2R5LmFwcGVuZChjaHVuaykKKworICAgICAgICAgICAgbiArPSAyCisgICAgICAgICAgICAjIHdlIC9zaG91bGQvIGhpdCB0aGUgZW5kIGNodW5rLCBidXQgY2hlY2sgYWdhaW5zdCB0aGUgc2l6ZSBvZgorICAgICAgICAgICAgIyBsaW5lcyBzbyB3ZSdyZSBub3Qgc3R1Y2sgaW4gYW4gaW5maW5pdGUgbG9vcCBzaG91bGQgd2UgZ2V0CisgICAgICAgICAgICAjIG1hbGZvcm1lZCBkYXRhCisgICAgICAgICAgICBpZiBuID4gbGVuKGxpbmVzKToKKyAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgIHJldHVybiBiJycuam9pbihib2R5KQorCisKIGNsYXNzIEJhc2ljVGVzdChUZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3Rfc3RhdHVzX2xpbmVzKHNlbGYpOgogICAgICAgICAjIFRlc3QgSFRUUCBzdGF0dXMgbGluZXMKQEAgLTU2NCw3ICs2OTIsOSBAQAogCiAgICAgZGVmIHRlc3Rfc2VuZF9maWxlKHNlbGYpOgogICAgICAgICBleHBlY3RlZCA9IChiJ0dFVCAvZm9vIEhUVFAvMS4xXHJcbkhvc3Q6IGV4YW1wbGUuY29tXHJcbicKLSAgICAgICAgICAgICAgICAgICAgYidBY2NlcHQtRW5jb2Rpbmc6IGlkZW50aXR5XHJcbkNvbnRlbnQtTGVuZ3RoOicpCisgICAgICAgICAgICAgICAgICAgIGInQWNjZXB0LUVuY29kaW5nOiBpZGVudGl0eVxyXG4nCisgICAgICAgICAgICAgICAgICAgIGInVHJhbnNmZXItRW5jb2Rpbmc6IGNodW5rZWRcclxuJworICAgICAgICAgICAgICAgICAgICBiJ1xyXG4nKQogCiAgICAgICAgIHdpdGggb3BlbihfX2ZpbGVfXywgJ3JiJykgYXMgYm9keToKICAgICAgICAgICAgIGNvbm4gPSBjbGllbnQuSFRUUENvbm5lY3Rpb24oJ2V4YW1wbGUuY29tJykKQEAgLTU5NCwxMSArNzI0LDExIEBACiAgICAgICAgICAgICB5aWVsZCBOb25lCiAgICAgICAgICAgICB5aWVsZCAnZGF0YV90d28nCiAKLSAgICAgICAgY2xhc3MgVXBkYXRpbmdGaWxlKCk6CisgICAgICAgIGNsYXNzIFVwZGF0aW5nRmlsZShpby5UZXh0SU9CYXNlKToKICAgICAgICAgICAgIG1vZGUgPSAncicKICAgICAgICAgICAgIGQgPSBkYXRhKCkKICAgICAgICAgICAgIGRlZiByZWFkKHNlbGYsIGJsb2Nrc2l6ZT0tMSk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZC5fX25leHRfXygpCisgICAgICAgICAgICAgICAgcmV0dXJuIG5leHQoc2VsZi5kKQogCiAgICAgICAgIGV4cGVjdGVkID0gYidkYXRhJwogCkBAIC05NzAsNiArMTEwMCw3IEBACiAKICAgICAgICAgdGhyZWFkID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9cnVuX3NlcnZlcikKICAgICAgICAgdGhyZWFkLnN0YXJ0KCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHRocmVhZC5qb2luLCBmbG9hdCgxKSkKICAgICAgICAgY29ubiA9IGNsaWVudC5IVFRQQ29ubmVjdGlvbigqc2Vydi5nZXRzb2NrbmFtZSgpKQogICAgICAgICBjb25uLnJlcXVlc3QoIkNPTk5FQ1QiLCAiZHVtbXk6MTIzNCIpCiAgICAgICAgIHJlc3BvbnNlID0gY29ubi5nZXRyZXNwb25zZSgpCkBAIC05ODMsNyArMTExNCw3IEBACiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICByZXNwb25zZS5jbG9zZSgpCiAgICAgICAgICAgICBjb25uLmNsb3NlKCkKLSAgICAgICAgICAgIHRocmVhZC5qb2luKCkKKyAgICAgICAgdGhyZWFkLmpvaW4oKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgYiJwcm94aWVkIGRhdGFcbiIpCiAKIGNsYXNzIEV4dGVuZGVkUmVhZFRlc3QoVGVzdENhc2UpOgpAQCAtMTUxMSwxNCArMTY0MiwxNiBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNzbC5DZXJ0aWZpY2F0ZUVycm9yKToKICAgICAgICAgICAgIGgucmVxdWVzdCgnR0VUJywgJy8nKQogICAgICAgICAjIFNhbWUgd2l0aCBleHBsaWNpdCBjaGVja19ob3N0bmFtZT1UcnVlCi0gICAgICAgIGggPSBjbGllbnQuSFRUUFNDb25uZWN0aW9uKCdsb2NhbGhvc3QnLCBzZXJ2ZXIucG9ydCwgY29udGV4dD1jb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja19ob3N0bmFtZT1UcnVlKQorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgIGggPSBjbGllbnQuSFRUUFNDb25uZWN0aW9uKCdsb2NhbGhvc3QnLCBzZXJ2ZXIucG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ9Y29udGV4dCwgY2hlY2tfaG9zdG5hbWU9VHJ1ZSkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzc2wuQ2VydGlmaWNhdGVFcnJvcik6CiAgICAgICAgICAgICBoLnJlcXVlc3QoJ0dFVCcsICcvJykKICAgICAgICAgIyBXaXRoIGNoZWNrX2hvc3RuYW1lPUZhbHNlLCB0aGUgbWlzbWF0Y2hpbmcgaXMgaWdub3JlZAogICAgICAgICBjb250ZXh0LmNoZWNrX2hvc3RuYW1lID0gRmFsc2UKLSAgICAgICAgaCA9IGNsaWVudC5IVFRQU0Nvbm5lY3Rpb24oJ2xvY2FsaG9zdCcsIHNlcnZlci5wb3J0LCBjb250ZXh0PWNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2hvc3RuYW1lPUZhbHNlKQorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgIGggPSBjbGllbnQuSFRUUFNDb25uZWN0aW9uKCdsb2NhbGhvc3QnLCBzZXJ2ZXIucG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ9Y29udGV4dCwgY2hlY2tfaG9zdG5hbWU9RmFsc2UpCiAgICAgICAgIGgucmVxdWVzdCgnR0VUJywgJy9ub25leGlzdGVudCcpCiAgICAgICAgIHJlc3AgPSBoLmdldHJlc3BvbnNlKCkKICAgICAgICAgcmVzcC5jbG9zZSgpCkBAIC0xNTM1LDggKzE2NjgsOSBAQAogICAgICAgICBoLmNsb3NlKCkKICAgICAgICAgIyBQYXNzaW5nIGNoZWNrX2hvc3RuYW1lIHRvIEhUVFBTQ29ubmVjdGlvbiBzaG91bGQgb3ZlcnJpZGUgdGhlCiAgICAgICAgICMgY29udGV4dCdzIHNldHRpbmcuCi0gICAgICAgIGggPSBjbGllbnQuSFRUUFNDb25uZWN0aW9uKCdsb2NhbGhvc3QnLCBzZXJ2ZXIucG9ydCwgY29udGV4dD1jb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja19ob3N0bmFtZT1UcnVlKQorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgIGggPSBjbGllbnQuSFRUUFNDb25uZWN0aW9uKCdsb2NhbGhvc3QnLCBzZXJ2ZXIucG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ9Y29udGV4dCwgY2hlY2tfaG9zdG5hbWU9VHJ1ZSkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzc2wuQ2VydGlmaWNhdGVFcnJvcik6CiAgICAgICAgICAgICBoLnJlcXVlc3QoJ0dFVCcsICcvJykKIApAQCAtMTU3NSw2ICsxNzA5LDI2IEBACiAgICAgICAgIG1lc3NhZ2UgPSBjbGllbnQucGFyc2VfaGVhZGVycyhmKQogICAgICAgICByZXR1cm4gbWVzc2FnZSwgZgogCisgICAgZGVmIHRlc3RfbGlzdF9ib2R5KHNlbGYpOgorICAgICAgICAjIE5vdGUgdGhhdCBubyBjb250ZW50LWxlbmd0aCBpcyBhdXRvbWF0aWNhbGx5IGNhbGN1bGF0ZWQgZm9yCisgICAgICAgICMgYW4gaXRlcmFibGUuICBUaGUgcmVxdWVzdCB3aWxsIGZhbGwgYmFjayB0byBzZW5kIGNodW5rZWQKKyAgICAgICAgIyB0cmFuc2ZlciBlbmNvZGluZy4KKyAgICAgICAgY2FzZXMgPSAoCisgICAgICAgICAgICAoW2InZm9vJywgYidiYXInXSwgYiczXHJcbmZvb1xyXG4zXHJcbmJhclxyXG4wXHJcblxyXG4nKSwKKyAgICAgICAgICAgICgoYidmb28nLCBiJ2JhcicpLCBiJzNcclxuZm9vXHJcbjNcclxuYmFyXHJcbjBcclxuXHJcbicpLAorICAgICAgICApCisgICAgICAgIGZvciBib2R5LCBleHBlY3RlZCBpbiBjYXNlczoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGJvZHkpOgorICAgICAgICAgICAgICAgIHNlbGYuY29ubiA9IGNsaWVudC5IVFRQQ29ubmVjdGlvbignZXhhbXBsZS5jb20nKQorICAgICAgICAgICAgICAgIHNlbGYuY29ubi5zb2NrID0gc2VsZi5zb2NrID0gRmFrZVNvY2tldCgnJykKKworICAgICAgICAgICAgICAgIHNlbGYuY29ubi5yZXF1ZXN0KCdQVVQnLCAnL3VybCcsIGJvZHkpCisgICAgICAgICAgICAgICAgbXNnLCBmID0gc2VsZi5nZXRfaGVhZGVyc19hbmRfZnAoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ0NvbnRlbnQtVHlwZScsIG1zZykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdDb250ZW50LUxlbmd0aCcsIG1zZykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXQoJ1RyYW5zZmVyLUVuY29kaW5nJyksICdjaHVua2VkJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkLCBmLnJlYWQoKSkKKwogICAgIGRlZiB0ZXN0X21hbnVhbF9jb250ZW50X2xlbmd0aChzZWxmKToKICAgICAgICAgIyBTZXQgYW4gaW5jb3JyZWN0IGNvbnRlbnQtbGVuZ3RoIHNvIHRoYXQgd2UgY2FuIHZlcmlmeSB0aGF0CiAgICAgICAgICMgaXQgd2lsbCBub3QgYmUgb3Zlci1yaWRkZW4gYnkgdGhlIGxpYnJhcnkuCkBAIC0xNjA4LDcgKzE3NjIsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCI1IiwgbWVzc2FnZS5nZXQoImNvbnRlbnQtbGVuZ3RoIikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidib2R5XHhjMScsIGYucmVhZCgpKQogCi0gICAgZGVmIHRlc3RfZmlsZV9ib2R5KHNlbGYpOgorICAgIGRlZiB0ZXN0X3RleHRfZmlsZV9ib2R5KHNlbGYpOgogICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHN1cHBvcnQuVEVTVEZOKQogICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5URVNURk4sICJ3IikgYXMgZjoKICAgICAgICAgICAgIGYud3JpdGUoImJvZHkiKQpAQCAtMTYxNyw4ICsxNzcxLDExIEBACiAgICAgICAgICAgICBtZXNzYWdlLCBmID0gc2VsZi5nZXRfaGVhZGVyc19hbmRfZnAoKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgidGV4dC9wbGFpbiIsIG1lc3NhZ2UuZ2V0X2NvbnRlbnRfdHlwZSgpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobWVzc2FnZS5nZXRfY2hhcnNldCgpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiNCIsIG1lc3NhZ2UuZ2V0KCJjb250ZW50LWxlbmd0aCIpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ2JvZHknLCBmLnJlYWQoKSkKKyAgICAgICAgICAgICMgTm8gY29udGVudC1sZW5ndGggd2lsbCBiZSBkZXRlcm1pbmVkIGZvciBmaWxlczsgdGhlIGJvZHkKKyAgICAgICAgICAgICMgd2lsbCBiZSBzZW50IHVzaW5nIGNodW5rZWQgdHJhbnNmZXIgZW5jb2RpbmcgaW5zdGVhZC4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG1lc3NhZ2UuZ2V0KCJjb250ZW50LWxlbmd0aCIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiY2h1bmtlZCIsIG1lc3NhZ2UuZ2V0KCJ0cmFuc2Zlci1lbmNvZGluZyIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJzRcclxuYm9keVxyXG4wXHJcblxyXG4nLCBmLnJlYWQoKSkKIAogICAgIGRlZiB0ZXN0X2JpbmFyeV9maWxlX2JvZHkoc2VsZik6CiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgc3VwcG9ydC5URVNURk4pCkBAIC0xNjI5LDggKzE3ODYsOSBAQAogICAgICAgICAgICAgbWVzc2FnZSwgZiA9IHNlbGYuZ2V0X2hlYWRlcnNfYW5kX2ZwKCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInRleHQvcGxhaW4iLCBtZXNzYWdlLmdldF9jb250ZW50X3R5cGUoKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG1lc3NhZ2UuZ2V0X2NoYXJzZXQoKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIjUiLCBtZXNzYWdlLmdldCgiY29udGVudC1sZW5ndGgiKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidib2R5XHhjMScsIGYucmVhZCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiY2h1bmtlZCIsIG1lc3NhZ2UuZ2V0KCJUcmFuc2Zlci1FbmNvZGluZyIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbigiQ29udGVudC1MZW5ndGgiLCBtZXNzYWdlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJzVcclxuYm9keVx4YzFcclxuMFxyXG5cclxuJywgZi5yZWFkKCkpCiAKIAogY2xhc3MgSFRUUFJlc3BvbnNlVGVzdChUZXN0Q2FzZSk6CkBAIC0xNzQxLDEzICsxODk5LDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJbignaGVhZGVyOiB7fScuZm9ybWF0KGV4cGVjdGVkX2hlYWRlciksIGxpbmVzKQogCiAKLUBzdXBwb3J0LnJlYXBfdGhyZWFkcwotZGVmIHRlc3RfbWFpbih2ZXJib3NlPU5vbmUpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KEhlYWRlclRlc3RzLCBPZmZsaW5lVGVzdCwgQmFzaWNUZXN0LCBUaW1lb3V0VGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBQZXJzaXN0ZW5jZVRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgSFRUUFNUZXN0LCBSZXF1ZXN0Qm9keVRlc3QsIFNvdXJjZUFkZHJlc3NUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgIEhUVFBSZXNwb25zZVRlc3QsIEV4dGVuZGVkUmVhZFRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgRXh0ZW5kZWRSZWFkVGVzdENodW5rZWQsIFR1bm5lbFRlc3RzKQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaHR0cHNlcnZlcnMucHkgYi9MaWIvdGVzdC90ZXN0X2h0dHBzZXJ2ZXJzLnB5CmluZGV4IDcyZTZlMDguLjRlOTMxNDQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaHR0cHNlcnZlcnMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9odHRwc2VydmVycy5weQpAQCAtMTgsNiArMTgsNyBAQAogaW1wb3J0IGh0bWwKIGltcG9ydCBodHRwLmNsaWVudAogaW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgdGltZQogZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTwogCiBpbXBvcnQgdW5pdHRlc3QKQEAgLTE4OSw3ICsxOTAsNyBAQAogICAgICAgICByZXMgPSBzZWxmLmNvbi5nZXRyZXNwb25zZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLnN0YXR1cywgSFRUUFN0YXR1cy5OT1RfSU1QTEVNRU5URUQpCiAKLSAgICBkZWYgdGVzdF9oZWFkX2tlZXBfYWxpdmUoc2VsZik6CisgICAgZGVmIHRlc3RfaGVhZGVyX2tlZXBfYWxpdmUoc2VsZik6CiAgICAgICAgIHNlbGYuY29uLl9odHRwX3Zzbl9zdHIgPSAnSFRUUC8xLjEnCiAgICAgICAgIHNlbGYuY29uLnB1dHJlcXVlc3QoJ0dFVCcsICcvJykKICAgICAgICAgc2VsZi5jb24ucHV0aGVhZGVyKCdDb25uZWN0aW9uJywgJ2tlZXAtYWxpdmUnKQpAQCAtMzY5LDYgKzM3MCw4IEBACiAgICAgICAgIHJldHVybiBib2R5CiAKICAgICBAc3VwcG9ydC5yZXF1aXJlc19tYWNfdmVyKDEwLCA1KQorICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtID09ICd3aW4zMicsCisgICAgICAgICAgICAgICAgICAgICAndW5kZWNvZGFibGUgbmFtZSBjYW5ub3QgYmUgZGVjb2RlZCBvbiB3aW4zMicpCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3VwcG9ydC5URVNURk5fVU5ERUNPREFCTEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgc3VwcG9ydC5URVNURk5fVU5ERUNPREFCTEUnKQogICAgIGRlZiB0ZXN0X3VuZGVjb2RhYmxlX2ZpbGVuYW1lKHNlbGYpOgpAQCAtMzg4LDcgKzM5MSw3IEBACiAgICAgICAgIHF1b3RlZG5hbWUgPSB1cmxsaWIucGFyc2UucXVvdGUoZmlsZW5hbWUsIGVycm9ycz0nc3Vycm9nYXRlcGFzcycpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oKCdocmVmPSIlcyInICUgcXVvdGVkbmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAuZW5jb2RlKGVuYywgJ3N1cnJvZ2F0ZWVzY2FwZScpLCBib2R5KQotICAgICAgICBzZWxmLmFzc2VydEluKCgnPiVzPCcgJSBodG1sLmVzY2FwZShmaWxlbmFtZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oKCc+JXM8JyAlIGh0bWwuZXNjYXBlKGZpbGVuYW1lLCBxdW90ZT1GYWxzZSkpCiAgICAgICAgICAgICAgICAgICAgICAgLmVuY29kZShlbmMsICdzdXJyb2dhdGVlc2NhcGUnKSwgYm9keSkKICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnJlcXVlc3Qoc2VsZi5iYXNlX3VybCArICcvJyArIHF1b3RlZG5hbWUpCiAgICAgICAgIHNlbGYuY2hlY2tfc3RhdHVzX2FuZF9yZWFzb24ocmVzcG9uc2UsIEhUVFBTdGF0dXMuT0ssCkBAIC00NjYsNiArNDY5LDI3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UuZ2V0aGVhZGVyKCJMb2NhdGlvbiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudGVtcGRpcl9uYW1lICsgIi8/aGk9MSIpCiAKKyAgICBkZWYgdGVzdF9odG1sX2VzY2FwZV9maWxlbmFtZShzZWxmKToKKyAgICAgICAgZmlsZW5hbWUgPSAnPHRlc3QmPi50eHQnCisgICAgICAgIGZ1bGxwYXRoID0gb3MucGF0aC5qb2luKHNlbGYudGVtcGRpciwgZmlsZW5hbWUpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3BlbihmdWxscGF0aCwgJ3cnKS5jbG9zZSgpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoJ0NhbiBub3QgY3JlYXRlIGZpbGUgJXMgb24gY3VycmVudCBmaWxlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXN0ZW0nICUgZmlsZW5hbWUpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnJlcXVlc3Qoc2VsZi5iYXNlX3VybCArICcvJykKKyAgICAgICAgICAgIGJvZHkgPSBzZWxmLmNoZWNrX3N0YXR1c19hbmRfcmVhc29uKHJlc3BvbnNlLCBIVFRQU3RhdHVzLk9LKQorICAgICAgICAgICAgZW5jID0gcmVzcG9uc2UuaGVhZGVycy5nZXRfY29udGVudF9jaGFyc2V0KCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLnVubGluayhmdWxscGF0aCkgICMgYXZvaWQgYWZmZWN0aW5nIHRlc3RfdW5kZWNvZGFibGVfZmlsZW5hbWUKKworICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShlbmMpCisgICAgICAgIGh0bWxfdGV4dCA9ICc+JXM8JyAlIGh0bWwuZXNjYXBlKGZpbGVuYW1lLCBxdW90ZT1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihodG1sX3RleHQuZW5jb2RlKGVuYyksIGJvZHkpCisKIAogY2dpX2ZpbGUxID0gIiIiXAogIyElcwpAQCAtOTE2LDcgKzk0MCw3IEBACiAgICAgICAgICMgSXNzdWUgIzY3OTE6IHNhbWUgZm9yIGhlYWRlcnMKICAgICAgICAgcmVzdWx0ID0gc2VsZi5zZW5kX3R5cGljYWxfcmVxdWVzdCgKICAgICAgICAgICAgIGInR0VUIC8gSFRUUC8xLjFcclxuWC1Gb286IGJhcicgKyBiJ3InICogNjU1MzcgKyBiJ1xyXG5cclxuJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRbMF0sIGInSFRUUC8xLjEgNDAwIExpbmUgdG9vIGxvbmdcclxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRbMF0sIGInSFRUUC8xLjEgNDMxIExpbmUgdG9vIGxvbmdcclxuJykKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmhhbmRsZXIuZ2V0X2NhbGxlZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmhhbmRsZXIucmVxdWVzdGxpbmUsICdHRVQgLyBIVFRQLzEuMScpCiAKQEAgLTkyNyw2ICs5NTEsMTMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmhhbmRsZXIuZ2V0X2NhbGxlZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmhhbmRsZXIucmVxdWVzdGxpbmUsICdHRVQgLyBIVFRQLzEuMScpCiAKKyAgICBkZWYgdGVzdF9odG1sX2VzY2FwZV9vbl9lcnJvcihzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gc2VsZi5zZW5kX3R5cGljYWxfcmVxdWVzdCgKKyAgICAgICAgICAgIGInPHNjcmlwdD5hbGVydCgiaGVsbG8iKTwvc2NyaXB0PiAvIEhUVFAvMS4xJykKKyAgICAgICAgcmVzdWx0ID0gYicnLmpvaW4ocmVzdWx0KQorICAgICAgICB0ZXh0ID0gJzxzY3JpcHQ+YWxlcnQoImhlbGxvIik8L3NjcmlwdD4nCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oaHRtbC5lc2NhcGUodGV4dCwgcXVvdGU9RmFsc2UpLmVuY29kZSgnYXNjaWknKSwgcmVzdWx0KQorCiAgICAgZGVmIHRlc3RfY2xvc2VfY29ubmVjdGlvbihzZWxmKToKICAgICAgICAgIyBoYW5kbGVfb25lX3JlcXVlc3QoKSBzaG91bGQgYmUgcmVwZWF0ZWRseSBjYWxsZWQgdW50aWwKICAgICAgICAgIyBpdCBzZXRzIGNsb3NlX2Nvbm5lY3Rpb24KQEAgLTk0Miw2ICs5NzMsMTkgQEAKICAgICAgICAgc2VsZi5oYW5kbGVyLmhhbmRsZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIG5leHQsIGNsb3NlX3ZhbHVlcykKIAorICAgIGRlZiB0ZXN0X2RhdGVfdGltZV9zdHJpbmcoc2VsZik6CisgICAgICAgIG5vdyA9IHRpbWUudGltZSgpCisgICAgICAgICMgdGhpcyBpcyB0aGUgb2xkIGNvZGUgdGhhdCBmb3JtYXRzIHRoZSB0aW1lc3RhbXAKKyAgICAgICAgeWVhciwgbW9udGgsIGRheSwgaGgsIG1tLCBzcywgd2QsIHksIHogPSB0aW1lLmdtdGltZShub3cpCisgICAgICAgIGV4cGVjdGVkID0gIiVzLCAlMDJkICUzcyAlNGQgJTAyZDolMDJkOiUwMmQgR01UIiAlICgKKyAgICAgICAgICAgIHNlbGYuaGFuZGxlci53ZWVrZGF5bmFtZVt3ZF0sCisgICAgICAgICAgICBkYXksCisgICAgICAgICAgICBzZWxmLmhhbmRsZXIubW9udGhuYW1lW21vbnRoXSwKKyAgICAgICAgICAgIHllYXIsIGhoLCBtbSwgc3MKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaGFuZGxlci5kYXRlX3RpbWVfc3RyaW5nKHRpbWVzdGFtcD1ub3cpLCBleHBlY3RlZCkKKworCiBjbGFzcyBTaW1wbGVIVFRQUmVxdWVzdEhhbmRsZXJUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIiIiIFRlc3QgdXJsIHBhcnNpbmcgIiIiCiAgICAgZGVmIHNldFVwKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pZGxlLnB5IGIvTGliL3Rlc3QvdGVzdF9pZGxlLnB5CmluZGV4IDE0MWU4OWUuLmRhMDVkYTUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaWRsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2lkbGUucHkKQEAgLTEsMTYgKzEsMjMgQEAKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgaW1wb3J0X21vZHVsZQogCi0jIFNraXAgdGVzdCBpZiBfdGhyZWFkIG9yIF90a2ludGVyIHdhc24ndCBidWlsdCBvciBpZGxlbGliIHdhcyBkZWxldGVkLgorIyBTa2lwIHRlc3QgaWYgX3RocmVhZCBvciBfdGtpbnRlciB3YXNuJ3QgYnVpbHQsIGlmIGlkbGVsaWIgaXMgbWlzc2luZywKKyMgb3IgaWYgdGNsL3RrIGlzIG5vdCB0aGUgOC41KyBuZWVkZWQgZm9yIHR0ayB3aWRnZXRzLgogaW1wb3J0X21vZHVsZSgndGhyZWFkaW5nJykgICMgaW1wb3J0ZWQgYnkgUHlTaGVsbCwgaW1wb3J0cyBfdGhyZWFkCiB0ayA9IGltcG9ydF9tb2R1bGUoJ3RraW50ZXInKSAgIyBpbXBvcnRzIF90a2ludGVyCi1pZGxldGVzdCA9IGltcG9ydF9tb2R1bGUoJ2lkbGVsaWIuaWRsZV90ZXN0JykKK2lmIHRrLlRrVmVyc2lvbiA8IDguNToKKyAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgiSURMRSByZXF1aXJlcyB0ayA4LjUgb3IgbGF0ZXIuIikKK2lkbGVsaWIgPSBpbXBvcnRfbW9kdWxlKCdpZGxlbGliJykKIAotIyBXaXRob3V0IHRlc3RfbWFpbiBwcmVzZW50LCByZWdydGVzdC5ydW50ZXN0X2lubmVyIChsaW5lMTIxOSkgY2FsbHMKLSMgdW5pdHRlc3QuVGVzdExvYWRlcigpLmxvYWRUZXN0c0Zyb21Nb2R1bGUodGhpc19tb2R1bGUpIHdoaWNoIGNhbGxzCi0jIGxvYWRfdGVzdHMoKSBpZiBpdCBmaW5kcyBpdC4gKFVuaXR0ZXN0Lm1haW4gZG9lcyB0aGUgc2FtZS4pCi1sb2FkX3Rlc3RzID0gaWRsZXRlc3QubG9hZF90ZXN0cworIyBCZWZvcmUgdGVzdCBpbXBvcnRzLCB0ZWxsIElETEUgdG8gYXZvaWQgY2hhbmdpbmcgdGhlIGVudmlyb25tZW50LgoraWRsZWxpYi50ZXN0aW5nID0gVHJ1ZQorCisjIHVuaXR0ZXN0Lm1haW4gYW5kIHRlc3QubGlicmVncnRlc3QucnVudGVzdC5ydW50ZXN0X2lubmVyCisjIGNhbGwgbG9hZF90ZXN0cywgd2hlbiBwcmVzZW50LCB0byBkaXNjb3ZlciB0ZXN0cyB0byBydW4uCitmcm9tIGlkbGVsaWIuaWRsZV90ZXN0IGltcG9ydCBsb2FkX3Rlc3RzCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKKyAgICB0ay5Ob0RlZmF1bHRSb290KCkKKyAgICB1bml0dGVzdC5tYWluKGV4aXQ9RmFsc2UpCisgICAgdGsuX3N1cHBvcnRfZGVmYXVsdF9yb290ID0gMQorICAgIHRrLl9kZWZhdWx0X3Jvb3QgPSBOb25lCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltYXBsaWIucHkgYi9MaWIvdGVzdC90ZXN0X2ltYXBsaWIucHkKaW5kZXggMDcxNTdmNS4uNjNhYzgxMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbWFwbGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1hcGxpYi5weQpAQCAtNzcsOSArNzcsOSBAQAogCiAgICAgICAgIGRlZiBnZXRfcmVxdWVzdChzZWxmKToKICAgICAgICAgICAgIG5ld3NvY2tldCwgZnJvbWFkZHIgPSBzZWxmLnNvY2tldC5hY2NlcHQoKQotICAgICAgICAgICAgY29ubnN0cmVhbSA9IHNzbC53cmFwX3NvY2tldChuZXdzb2NrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9zaWRlPVRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRmaWxlPUNFUlRGSUxFKQorICAgICAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KCkKKyAgICAgICAgICAgIGNvbnRleHQubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFKQorICAgICAgICAgICAgY29ubnN0cmVhbSA9IGNvbnRleHQud3JhcF9zb2NrZXQobmV3c29ja2V0LCBzZXJ2ZXJfc2lkZT1UcnVlKQogICAgICAgICAgICAgcmV0dXJuIGNvbm5zdHJlYW0sIGZyb21hZGRyCiAKICAgICBJTUFQNF9TU0wgPSBpbWFwbGliLklNQVA0X1NTTApAQCAtMjQzLDYgKzI0Myw1NSBAQAogICAgICAgICAgICAgY2xpZW50LnNodXRkb3duKCkKIAogICAgIEByZWFwX3RocmVhZHMKKyAgICBkZWYgdGVzdF9icmFja2V0X2ZsYWdzKHNlbGYpOgorCisgICAgICAgICMgVGhpcyB2aW9sYXRlcyBSRkMgMzUwMSwgd2hpY2ggZGlzYWxsb3dzICddJyBjaGFyYWN0ZXJzIGluIHRhZyBuYW1lcywKKyAgICAgICAgIyBidXQgaW1hcGxpYiBoYXMgYWxsb3dlZCBwcm9kdWNpbmcgc3VjaCB0YWdzIGZvcmV2ZXIsIG90aGVyIHByb2dyYW1zCisgICAgICAgICMgYWxzbyBwcm9kdWNlIHRoZW0gKGVnOiBPdGhlckluYm94J3MgT3JnYW5pemVyIGFwcCBhcyBvZiAyMDE0MDcxNiksCisgICAgICAgICMgYW5kIEdtYWlsLCBmb3IgZXhhbXBsZSwgYWNjZXB0cyB0aGVtIGFuZCBwcm9kdWNlcyB0aGVtLiAgU28gd2UKKyAgICAgICAgIyBzdXBwb3J0IHRoZW0uICBTZWUgaXNzdWUgIzIxODE1LgorCisgICAgICAgIGNsYXNzIEJyYWNrZXRGbGFnSGFuZGxlcihTaW1wbGVJTUFQSGFuZGxlcik6CisKKyAgICAgICAgICAgIGRlZiBoYW5kbGUoc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5mbGFncyA9IFsnQW5zd2VyZWQnLCAnRmxhZ2dlZCcsICdEZWxldGVkJywgJ1NlZW4nLCAnRHJhZnQnXQorICAgICAgICAgICAgICAgIHN1cGVyKCkuaGFuZGxlKCkKKworICAgICAgICAgICAgZGVmIGNtZF9BVVRIRU5USUNBVEUoc2VsZiwgdGFnLCBhcmdzKToKKyAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX3RleHRsaW5lKCcrJykKKyAgICAgICAgICAgICAgICBzZWxmLnNlcnZlci5yZXNwb25zZSA9IHlpZWxkCisgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF90YWdnZWQodGFnLCAnT0snLCAnRkFLRUFVVEggc3VjY2Vzc2Z1bCcpCisKKyAgICAgICAgICAgIGRlZiBjbWRfU0VMRUNUKHNlbGYsIHRhZywgYXJncyk6CisgICAgICAgICAgICAgICAgZmxhZ19tc2cgPSAnIFxcJy5qb2luKHNlbGYuZmxhZ3MpCisgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9saW5lKCgnKiBGTEFHUyAoJXMpJyAlIGZsYWdfbXNnKS5lbmNvZGUoJ2FzY2lpJykpCisgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9saW5lKGInKiAyIEVYSVNUUycpCisgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9saW5lKGInKiAwIFJFQ0VOVCcpCisgICAgICAgICAgICAgICAgbXNnID0gKCcqIE9LIFtQRVJNQU5FTlRGTEFHUyAlcyBcXCopXSBGbGFncyBwZXJtaXR0ZWQuJworICAgICAgICAgICAgICAgICAgICAgICAgJSBmbGFnX21zZykKKyAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX2xpbmUobXNnLmVuY29kZSgnYXNjaWknKSkKKyAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX3RhZ2dlZCh0YWcsICdPSycsICdbUkVBRC1XUklURV0gU0VMRUNUIGNvbXBsZXRlZC4nKQorCisgICAgICAgICAgICBkZWYgY21kX1NUT1JFKHNlbGYsIHRhZywgYXJncyk6CisgICAgICAgICAgICAgICAgbmV3X2ZsYWdzID0gYXJnc1syXS5zdHJpcCgnKCcpLnN0cmlwKCcpJykuc3BsaXQoKQorICAgICAgICAgICAgICAgIHNlbGYuZmxhZ3MuZXh0ZW5kKG5ld19mbGFncykKKyAgICAgICAgICAgICAgICBmbGFnc19tc2cgPSAnKEZMQUdTICglcykpJyAlICcgXFwnLmpvaW4oc2VsZi5mbGFncykKKyAgICAgICAgICAgICAgICBtc2cgPSAnKiAlcyBGRVRDSCAlcycgJSAoYXJnc1swXSwgZmxhZ3NfbXNnKQorICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRfbGluZShtc2cuZW5jb2RlKCdhc2NpaScpKQorICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRfdGFnZ2VkKHRhZywgJ09LJywgJ1NUT1JFIGNvbXBsZXRlZC4nKQorCisgICAgICAgIHdpdGggc2VsZi5yZWFwZWRfcGFpcihCcmFja2V0RmxhZ0hhbmRsZXIpIGFzIChzZXJ2ZXIsIGNsaWVudCk6CisgICAgICAgICAgICBjb2RlLCBkYXRhID0gY2xpZW50LmF1dGhlbnRpY2F0ZSgnTVlBVVRIJywgbGFtYmRhIHg6IGInZmFrZScpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGUsICdPSycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5yZXNwb25zZSwgYidabUZyWlE9PVxyXG4nKQorICAgICAgICAgICAgY2xpZW50LnNlbGVjdCgndGVzdCcpCisgICAgICAgICAgICB0eXAsIFtkYXRhXSA9IGNsaWVudC5zdG9yZShiJzEnLCAiK0ZMQUdTIiwgIlt0ZXN0XSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGInW3Rlc3RdJywgZGF0YSkKKyAgICAgICAgICAgIGNsaWVudC5zZWxlY3QoJ3Rlc3QnKQorICAgICAgICAgICAgdHlwLCBbZGF0YV0gPSBjbGllbnQucmVzcG9uc2UoJ1BFUk1BTkVOVEZMQUdTJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYidbdGVzdF0nLCBkYXRhKQorCisgICAgQHJlYXBfdGhyZWFkcwogICAgIGRlZiB0ZXN0X2lzc3VlNTk0OShzZWxmKToKIAogICAgICAgICBjbGFzcyBFT0ZIYW5kbGVyKHNvY2tldHNlcnZlci5TdHJlYW1SZXF1ZXN0SGFuZGxlcik6CkBAIC01ODksOCArNjM4LDEwIEBACiAKICAgICBkZWYgdGVzdF9sb2dpbmNhcGFfd2l0aF9jbGllbnRfY2VydGZpbGUoc2VsZik6CiAgICAgICAgIHdpdGggdHJhbnNpZW50X2ludGVybmV0KHNlbGYuaG9zdCk6Ci0gICAgICAgICAgICBfc2VydmVyID0gc2VsZi5pbWFwX2NsYXNzKHNlbGYuaG9zdCwgc2VsZi5wb3J0LCBjZXJ0ZmlsZT1DRVJURklMRSkKLSAgICAgICAgICAgIHNlbGYuY2hlY2tfbG9naW5jYXBhKF9zZXJ2ZXIpCisgICAgICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgICAgICBfc2VydmVyID0gc2VsZi5pbWFwX2NsYXNzKHNlbGYuaG9zdCwgc2VsZi5wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Q0VSVEZJTEUpCisgICAgICAgICAgICAgICAgc2VsZi5jaGVja19sb2dpbmNhcGEoX3NlcnZlcikKIAogICAgIGRlZiB0ZXN0X2xvZ2luY2FwYV93aXRoX2NsaWVudF9zc2xfY29udGV4dChzZWxmKToKICAgICAgICAgd2l0aCB0cmFuc2llbnRfaW50ZXJuZXQoc2VsZi5ob3N0KToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1naGRyLnB5IGIvTGliL3Rlc3QvdGVzdF9pbWdoZHIucHkKaW5kZXggYjU0ZGFmOC4uNDc2YmE5NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbWdoZHIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbWdoZHIucHkKQEAgLTEsNiArMSw3IEBACiBpbXBvcnQgaW1naGRyCiBpbXBvcnQgaW8KIGltcG9ydCBvcworaW1wb3J0IHBhdGhsaWIKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHdhcm5pbmdzCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgZmluZGZpbGUsIFRFU1RGTiwgdW5saW5rCkBAIC00OSw2ICs1MCwxMiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbWdoZHIud2hhdChOb25lLCBkYXRhKSwgZXhwZWN0ZWQpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGltZ2hkci53aGF0KE5vbmUsIGJ5dGVhcnJheShkYXRhKSksIGV4cGVjdGVkKQogCisgICAgZGVmIHRlc3RfcGF0aGxpa2VfZmlsZW5hbWUoc2VsZik6CisgICAgICAgIGZvciBmaWxlbmFtZSwgZXhwZWN0ZWQgaW4gVEVTVF9GSUxFUzoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGZpbGVuYW1lPWZpbGVuYW1lKToKKyAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IGZpbmRmaWxlKGZpbGVuYW1lLCBzdWJkaXI9J2ltZ2hkcmRhdGEnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW1naGRyLndoYXQocGF0aGxpYi5QYXRoKGZpbGVuYW1lKSksIGV4cGVjdGVkKQorCiAgICAgZGVmIHRlc3RfcmVnaXN0ZXJfdGVzdChzZWxmKToKICAgICAgICAgZGVmIHRlc3RfanVtYm8oaCwgZmlsZSk6CiAgICAgICAgICAgICBpZiBoLnN0YXJ0c3dpdGgoYidlZ2dzJyk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wLnB5CmluZGV4IGVlOWVlMWEuLjRlY2UzNjUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wLnB5CkBAIC02LDEzICs2LDEyIEBACiBpbXBvcnQgaW1wb3J0bGliLnV0aWwKIGltcG9ydCBvcwogaW1wb3J0IG9zLnBhdGgKLWltcG9ydCBzaHV0aWwKIGltcG9ydCBzeXMKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgd2FybmluZ3MKIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKLSAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpCisgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnLCBEZXByZWNhdGlvbldhcm5pbmcpCiAgICAgaW1wb3J0IGltcAogCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0L19faW5pdF9fLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnQvX19pbml0X18ucHkKaW5kZXggMWUzMzI3NC4uNzYwOTA4ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnQvX19pbml0X18ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnQvX19pbml0X18ucHkKQEAgLTY5LDYgKzY5LDE4IEBACiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICB1bmxvYWQoVEVTVEZOKQogCisgICAgZGVmIHRlc3RfaW1wb3J0X3JhaXNlc19Nb2R1bGVOb3RGb3VuZEVycm9yKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE1vZHVsZU5vdEZvdW5kRXJyb3IpOgorICAgICAgICAgICAgaW1wb3J0IHNvbWV0aGluZ190aGF0X3Nob3VsZF9ub3RfZXhpc3RfYW55d2hlcmUKKworICAgIGRlZiB0ZXN0X2Zyb21faW1wb3J0X21pc3NpbmdfbW9kdWxlX3JhaXNlc19Nb2R1bGVOb3RGb3VuZEVycm9yKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE1vZHVsZU5vdEZvdW5kRXJyb3IpOgorICAgICAgICAgICAgZnJvbSBzb21ldGhpbmdfdGhhdF9zaG91bGRfbm90X2V4aXN0X2FueXdoZXJlIGltcG9ydCBibGFoCisKKyAgICBkZWYgdGVzdF9mcm9tX2ltcG9ydF9taXNzaW5nX2F0dHJfcmFpc2VzX0ltcG9ydEVycm9yKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIGZyb20gaW1wb3J0bGliIGltcG9ydCBzb21ldGhpbmdfdGhhdF9zaG91bGRfbm90X2V4aXN0X2FueXdoZXJlCisKICAgICBkZWYgdGVzdF9jYXNlX3NlbnNpdGl2aXR5KHNlbGYpOgogICAgICAgICAjIEJyaWVmIGRpZ3Jlc3Npb24gdG8gdGVzdCB0aGF0IGltcG9ydCBpcyBjYXNlLXNlbnNpdGl2ZTogIGlmIHdlIGdvdAogICAgICAgICAjIHRoaXMgZmFyLCB3ZSBrbm93IGZvciBzdXJlIHRoYXQgInJhbmRvbSIgZXhpc3RzLgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfY2FzZV9zZW5zaXRpdml0eS5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKaW5kZXggYzExMmNhNy4uMGRkOWM4NiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfY2FzZV9zZW5zaXRpdml0eS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5CkBAIC0xLDUgKzEsNCBAQAogZnJvbSBpbXBvcnRsaWIgaW1wb3J0IF9ib290c3RyYXBfZXh0ZXJuYWwKLWltcG9ydCBzeXMKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKQEAgLTksOCArOCw2IEBACiBtYWNoaW5lcnkgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi5tYWNoaW5lcnknKQogCiAKLSMgWFhYIGZpbmRfc3BlYyB0ZXN0cwotCiBAdW5pdHRlc3Quc2tpcElmKHV0aWwuRVhURU5TSU9OUy5maWxlbmFtZSBpcyBOb25lLCAnX3Rlc3RjYXBpIG5vdCBhdmFpbGFibGUnKQogQHV0aWwuY2FzZV9pbnNlbnNpdGl2ZV90ZXN0cwogY2xhc3MgRXh0ZW5zaW9uTW9kdWxlQ2FzZVNlbnNpdGl2aXR5VGVzdCh1dGlsLkNBU0VPS1Rlc3RCYXNlKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2ZpbmRlci5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2ZpbmRlci5weQppbmRleCA3MWJmNjdmLi5jOWI0YTM3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9maW5kZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfZmluZGVyLnB5CkBAIC02LDcgKzYsNiBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgd2FybmluZ3MKIAotIyBYWFggZmluZF9zcGVjIHRlc3RzCiAKIGNsYXNzIEZpbmRlclRlc3RzKGFiYy5GaW5kZXJUZXN0cyk6CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X3BhdGhfaG9vay5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X3BhdGhfaG9vay5weQppbmRleCA4ZjRiOGJiLi5hNGI1YTY0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9wYXRoX2hvb2sucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfcGF0aF9ob29rLnB5CkBAIC0yLDggKzIsNiBAQAogCiBtYWNoaW5lcnkgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi5tYWNoaW5lcnknKQogCi1pbXBvcnQgY29sbGVjdGlvbnMKLWltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2Zyb3plbi90ZXN0X2xvYWRlci5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2Zyb3plbi90ZXN0X2xvYWRlci5weQppbmRleCA2MDNjN2Q3Li4yOWVjZmYxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9mcm96ZW4vdGVzdF9sb2FkZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZnJvemVuL3Rlc3RfbG9hZGVyLnB5CkBAIC0zLDggKzMsNiBAQAogCiBtYWNoaW5lcnkgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi5tYWNoaW5lcnknKQogCi0KLWltcG9ydCBzeXMKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBjYXB0dXJlZF9zdGRvdXQKIGltcG9ydCB0eXBlcwogaW1wb3J0IHVuaXR0ZXN0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfX19wYWNrYWdlX18ucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfX19wYWNrYWdlX18ucHkKaW5kZXggYzdkM2EyYS4uN2Y2NDU0OCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X19fcGFja2FnZV9fLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9fX3BhY2thZ2VfXy5weQpAQCAtNSw2ICs1LDcgQEAKIAogIiIiCiBpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3YXJuaW5ncwogZnJvbSAuLiBpbXBvcnQgdXRpbAogCiAKQEAgLTMzLDMxICszNCw1MCBAQAogCiAgICAgIiIiCiAKLSAgICBkZWYgdGVzdF91c2luZ19fX3BhY2thZ2VfXyhzZWxmKToKLSAgICAgICAgIyBbX19wYWNrYWdlX19dCisgICAgZGVmIGltcG9ydF9tb2R1bGUoc2VsZiwgZ2xvYmFsc18pOgogICAgICAgICB3aXRoIHNlbGYubW9ja19tb2R1bGVzKCdwa2cuX19pbml0X18nLCAncGtnLmZha2UnKSBhcyBpbXBvcnRlcjoKICAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVtpbXBvcnRlcl0pOgogICAgICAgICAgICAgICAgIHNlbGYuX19pbXBvcnRfXygncGtnLmZha2UnKQogICAgICAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYuX19pbXBvcnRfXygnJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFscz17J19fcGFja2FnZV9fJzogJ3BrZy5mYWtlJ30sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21saXN0PVsnYXR0ciddLCBsZXZlbD0yKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWxzPWdsb2JhbHNfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tbGlzdD1bJ2F0dHInXSwgbGV2ZWw9MikKKyAgICAgICAgcmV0dXJuIG1vZHVsZQorCisgICAgZGVmIHRlc3RfdXNpbmdfX19wYWNrYWdlX18oc2VsZik6CisgICAgICAgICMgW19fcGFja2FnZV9fXQorICAgICAgICBtb2R1bGUgPSBzZWxmLmltcG9ydF9tb2R1bGUoeydfX3BhY2thZ2VfXyc6ICdwa2cuZmFrZSd9KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgJ3BrZycpCiAKLSAgICBkZWYgdGVzdF91c2luZ19fX25hbWVfXyhzZWxmLCBwYWNrYWdlX2FzX05vbmU9RmFsc2UpOgorICAgIGRlZiB0ZXN0X3VzaW5nX19fbmFtZV9fKHNlbGYpOgogICAgICAgICAjIFtfX25hbWVfX10KLSAgICAgICAgZ2xvYmFsc18gPSB7J19fbmFtZV9fJzogJ3BrZy5mYWtlJywgJ19fcGF0aF9fJzogW119Ci0gICAgICAgIGlmIHBhY2thZ2VfYXNfTm9uZToKLSAgICAgICAgICAgIGdsb2JhbHNfWydfX3BhY2thZ2VfXyddID0gTm9uZQotICAgICAgICB3aXRoIHNlbGYubW9ja19tb2R1bGVzKCdwa2cuX19pbml0X18nLCAncGtnLmZha2UnKSBhcyBpbXBvcnRlcjoKLSAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVtpbXBvcnRlcl0pOgotICAgICAgICAgICAgICAgIHNlbGYuX19pbXBvcnRfXygncGtnLmZha2UnKQotICAgICAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYuX19pbXBvcnRfXygnJywgZ2xvYmFscz0gZ2xvYmFsc18sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tbGlzdD1bJ2F0dHInXSwgbGV2ZWw9MikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCAncGtnJykKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiKQorICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5pbXBvcnRfbW9kdWxlKHsnX19uYW1lX18nOiAncGtnLmZha2UnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX19wYXRoX18nOiBbXX0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCAncGtnJykKKworICAgIGRlZiB0ZXN0X3dhcm5fd2hlbl91c2luZ19fX25hbWVfXyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKEltcG9ydFdhcm5pbmcpOgorICAgICAgICAgICAgc2VsZi5pbXBvcnRfbW9kdWxlKHsnX19uYW1lX18nOiAncGtnLmZha2UnLCAnX19wYXRoX18nOiBbXX0pCiAKICAgICBkZWYgdGVzdF9Ob25lX2FzX19fcGFja2FnZV9fKHNlbGYpOgogICAgICAgICAjIFtOb25lXQotICAgICAgICBzZWxmLnRlc3RfdXNpbmdfX19uYW1lX18ocGFja2FnZV9hc19Ob25lPVRydWUpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIikKKyAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYuaW1wb3J0X21vZHVsZSh7CisgICAgICAgICAgICAgICAgJ19fbmFtZV9fJzogJ3BrZy5mYWtlJywgJ19fcGF0aF9fJzogW10sICdfX3BhY2thZ2VfXyc6IE5vbmUgfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sICdwa2cnKQorCisgICAgZGVmIHRlc3Rfc3BlY19mYWxsYmFjayhzZWxmKToKKyAgICAgICAgIyBJZiBfX3BhY2thZ2VfXyBpc24ndCBkZWZpbmVkLCBmYWxsIGJhY2sgb24gX19zcGVjX18ucGFyZW50LgorICAgICAgICBtb2R1bGUgPSBzZWxmLmltcG9ydF9tb2R1bGUoeydfX3NwZWNfXyc6IEZha2VTcGVjKCdwa2cuZmFrZScpfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sICdwa2cnKQorCisgICAgZGVmIHRlc3Rfd2Fybl93aGVuX3BhY2thZ2VfYW5kX3NwZWNfZGlzYWdyZWUoc2VsZik6CisgICAgICAgICMgUmFpc2UgYW4gSW1wb3J0V2FybmluZyBpZiBfX3BhY2thZ2VfXyAhPSBfX3NwZWNfXy5wYXJlbnQuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhJbXBvcnRXYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYuaW1wb3J0X21vZHVsZSh7J19fcGFja2FnZV9fJzogJ3BrZy5mYWtlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19fc3BlY19fJzogRmFrZVNwZWMoJ3BrZy5mYWtlZmFrZScpfSkKIAogICAgIGRlZiB0ZXN0X2JhZF9fcGFja2FnZV9fKHNlbGYpOgogICAgICAgICBnbG9iYWxzID0geydfX3BhY2thZ2VfXyc6ICc8bm90IHJlYWw+J30KQEAgLTcwLDYgKzkwLDExIEBACiAgICAgICAgICAgICBzZWxmLl9faW1wb3J0X18oJycsIGdsb2JhbHMsIHt9LCBbJ3JlbGltcG9ydCddLCAxKQogCiAKK2NsYXNzIEZha2VTcGVjOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQpOgorICAgICAgICBzZWxmLnBhcmVudCA9IHBhcmVudAorCisKIGNsYXNzIFVzaW5nX19wYWNrYWdlX19QRVAzMDIoVXNpbmdfX3BhY2thZ2VfXyk6CiAgICAgbW9ja19tb2R1bGVzID0gdXRpbC5tb2NrX21vZHVsZXMKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2FwaS5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9hcGkucHkKaW5kZXggNzA2OWQ5ZS4uYTdiZjI3NCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2FwaS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfYXBpLnB5CkBAIC00Myw2ICs0MywxMCBAQAogICAgICIiIlRlc3QgQVBJLXNwZWNpZmljIGRldGFpbHMgZm9yIF9faW1wb3J0X18gKGUuZy4gcmFpc2luZyB0aGUgcmlnaHQKICAgICBleGNlcHRpb24gd2hlbiBwYXNzaW5nIGluIGFuIGludCBmb3IgdGhlIG1vZHVsZSBuYW1lKS4iIiIKIAorICAgIGRlZiB0ZXN0X3JhaXNlc19Nb2R1bGVOb3RGb3VuZEVycm9yKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE1vZHVsZU5vdEZvdW5kRXJyb3IpOgorICAgICAgICAgICAgdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdzb21lIG1vZHVsZSB0aGF0IGRvZXMgbm90IGV4aXN0JykKKwogICAgIGRlZiB0ZXN0X25hbWVfcmVxdWlyZXNfcnBhcml0aW9uKHNlbGYpOgogICAgICAgICAjIFJhaXNlIFR5cGVFcnJvciBpZiBhIG5vbi1zdHJpbmcgaXMgcGFzc2VkIGluIGZvciB0aGUgbW9kdWxlIG5hbWUuCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9mcm9tbGlzdC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9mcm9tbGlzdC5weQppbmRleCA4MDQ1NDY1Li4xNDY0MDAzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfZnJvbWxpc3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2Zyb21saXN0LnB5CkBAIC03MywxNiArNzMsMTYgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihtb2R1bGUsICdtb2R1bGUnKSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5tb2R1bGUuX19uYW1lX18sICdwa2cubW9kdWxlJykKIAotICAgIGRlZiB0ZXN0X21vZHVsZV9mcm9tX3BhY2thZ2VfdHJpZ2dlcnNfSW1wb3J0RXJyb3Ioc2VsZik6Ci0gICAgICAgICMgSWYgYSBzdWJtb2R1bGUgY2F1c2VzIGFuIEltcG9ydEVycm9yIGJlY2F1c2UgaXQgdHJpZXMgdG8gaW1wb3J0Ci0gICAgICAgICMgYSBtb2R1bGUgd2hpY2ggZG9lc24ndCBleGlzdCwgdGhhdCBzaG91bGQgbGV0IHRoZSBJbXBvcnRFcnJvcgotICAgICAgICAjIHByb3BhZ2F0ZS4KKyAgICBkZWYgdGVzdF9tb2R1bGVfZnJvbV9wYWNrYWdlX3RyaWdnZXJzX01vZHVsZU5vdEZvdW5kRXJyb3Ioc2VsZik6CisgICAgICAgICMgSWYgYSBzdWJtb2R1bGUgY2F1c2VzIGFuIE1vZHVsZU5vdEZvdW5kRXJyb3IgYmVjYXVzZSBpdCB0cmllcworICAgICAgICAjIHRvIGltcG9ydCBhIG1vZHVsZSB3aGljaCBkb2Vzbid0IGV4aXN0LCB0aGF0IHNob3VsZCBsZXQgdGhlCisgICAgICAgICMgTW9kdWxlTm90Rm91bmRFcnJvciBwcm9wYWdhdGUuCiAgICAgICAgIGRlZiBtb2R1bGVfY29kZSgpOgogICAgICAgICAgICAgaW1wb3J0IGlfZG9fbm90X2V4aXN0CiAgICAgICAgIHdpdGggdXRpbC5tb2NrX21vZHVsZXMoJ3BrZy5fX2luaXRfXycsICdwa2cubW9kJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVfY29kZT17J3BrZy5tb2QnOiBtb2R1bGVfY29kZX0pIGFzIGltcG9ydGVyOgogICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W2ltcG9ydGVyXSk6Ci0gICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcikgYXMgZXhjOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTW9kdWxlTm90Rm91bmRFcnJvcikgYXMgZXhjOgogICAgICAgICAgICAgICAgICAgICBzZWxmLl9faW1wb3J0X18oJ3BrZycsIGZyb21saXN0PVsnbW9kJ10pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaV9kb19ub3RfZXhpc3QnLCBleGMuZXhjZXB0aW9uLm5hbWUpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9wYWNrYWdlcy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9wYWNrYWdlcy5weQppbmRleCAzNzU1Yjg0Li4yNDM5NjA0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcGFja2FnZXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3BhY2thZ2VzLnB5CkBAIC0xLDcgKzEsNiBAQAogZnJvbSAuLiBpbXBvcnQgdXRpbAogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgaW1wb3J0bGliCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcGF0aC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9wYXRoLnB5CmluZGV4IGIzMmE4NzYuLjdhYTI2YjAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9wYXRoLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9wYXRoLnB5CkBAIC0xNiwxMSArMTYsMTQgQEAKIAogICAgICIiIlRlc3RzIGZvciBQYXRoRmluZGVyLiIiIgogCisgICAgZmluZCA9IE5vbmUKKyAgICBjaGVja19mb3VuZCA9IE5vbmUKKwogICAgIGRlZiB0ZXN0X2ZhaWx1cmUoc2VsZik6CiAgICAgICAgICMgVGVzdCBOb25lIHJldHVybmVkIHVwb24gbm90IGZpbmRpbmcgYSBzdWl0YWJsZSBsb2FkZXIuCiAgICAgICAgIG1vZHVsZSA9ICc8dGVzdCBtb2R1bGU+JwogICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKCk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKG1vZHVsZSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLmZpbmQobW9kdWxlKSkKIAogICAgIGRlZiB0ZXN0X3N5c19wYXRoKHNlbGYpOgogICAgICAgICAjIFRlc3QgdGhhdCBzeXMucGF0aCBpcyB1c2VkIHdoZW4gJ3BhdGgnIGlzIE5vbmUuCkBAIC0zMCw4ICszMyw4IEBACiAgICAgICAgIGltcG9ydGVyID0gdXRpbC5tb2NrX3NwZWMobW9kdWxlKQogICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGhfaW1wb3J0ZXJfY2FjaGU9e3BhdGg6IGltcG9ydGVyfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVtwYXRoXSk6Ci0gICAgICAgICAgICBsb2FkZXIgPSBzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKG1vZHVsZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobG9hZGVyLCBpbXBvcnRlcikKKyAgICAgICAgICAgIGZvdW5kID0gc2VsZi5maW5kKG1vZHVsZSkKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfZm91bmQoZm91bmQsIGltcG9ydGVyKQogCiAgICAgZGVmIHRlc3RfcGF0aChzZWxmKToKICAgICAgICAgIyBUZXN0IHRoYXQgJ3BhdGgnIGlzIHVzZWQgd2hlbiBzZXQuCkBAIC00MCw4ICs0Myw4IEBACiAgICAgICAgIHBhdGggPSAnPHRlc3QgcGF0aD4nCiAgICAgICAgIGltcG9ydGVyID0gdXRpbC5tb2NrX3NwZWMobW9kdWxlKQogICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGhfaW1wb3J0ZXJfY2FjaGU9e3BhdGg6IGltcG9ydGVyfSk6Ci0gICAgICAgICAgICBsb2FkZXIgPSBzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKG1vZHVsZSwgW3BhdGhdKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhsb2FkZXIsIGltcG9ydGVyKQorICAgICAgICAgICAgZm91bmQgPSBzZWxmLmZpbmQobW9kdWxlLCBbcGF0aF0pCisgICAgICAgICAgICBzZWxmLmNoZWNrX2ZvdW5kKGZvdW5kLCBpbXBvcnRlcikKIAogICAgIGRlZiB0ZXN0X2VtcHR5X2xpc3Qoc2VsZik6CiAgICAgICAgICMgQW4gZW1wdHkgbGlzdCBzaG91bGQgbm90IGNvdW50IGFzIGFza2luZyBmb3Igc3lzLnBhdGguCkBAIC01MCw3ICs1Myw3IEBACiAgICAgICAgIGltcG9ydGVyID0gdXRpbC5tb2NrX3NwZWMobW9kdWxlKQogICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGhfaW1wb3J0ZXJfY2FjaGU9e3BhdGg6IGltcG9ydGVyfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVtwYXRoXSk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKCdtb2R1bGUnLCBbXSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLmZpbmQoJ21vZHVsZScsIFtdKSkKIAogICAgIGRlZiB0ZXN0X3BhdGhfaG9va3Moc2VsZik6CiAgICAgICAgICMgVGVzdCB0aGF0IHN5cy5wYXRoX2hvb2tzIGlzIHVzZWQuCkBAIC02MCw4ICs2Myw4IEBACiAgICAgICAgIGltcG9ydGVyID0gdXRpbC5tb2NrX3NwZWMobW9kdWxlKQogICAgICAgICBob29rID0gdXRpbC5tb2NrX3BhdGhfaG9vayhwYXRoLCBpbXBvcnRlcj1pbXBvcnRlcikKICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShwYXRoX2hvb2tzPVtob29rXSk6Ci0gICAgICAgICAgICBsb2FkZXIgPSBzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKG1vZHVsZSwgW3BhdGhdKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhsb2FkZXIsIGltcG9ydGVyKQorICAgICAgICAgICAgZm91bmQgPSBzZWxmLmZpbmQobW9kdWxlLCBbcGF0aF0pCisgICAgICAgICAgICBzZWxmLmNoZWNrX2ZvdW5kKGZvdW5kLCBpbXBvcnRlcikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocGF0aCwgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlW3BhdGhdLCBpbXBvcnRlcikKIApAQCAtNzMsNyArNzYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg9W3BhdGhfZW50cnldKToKICAgICAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MocmVjb3JkPVRydWUpIGFzIHc6CiAgICAgICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdhbHdheXMnKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYubWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUoJ29zJykpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi5maW5kKCdvcycpKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlW3BhdGhfZW50cnldKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHcpLCAxKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKHdbLTFdLmNhdGVnb3J5LCBJbXBvcnRXYXJuaW5nKSkKQEAgLTg1LDggKzg4LDggQEAKICAgICAgICAgaW1wb3J0ZXIgPSB1dGlsLm1vY2tfc3BlYyhtb2R1bGUpCiAgICAgICAgIGhvb2sgPSB1dGlsLm1vY2tfcGF0aF9ob29rKG9zLmdldGN3ZCgpLCBpbXBvcnRlcj1pbXBvcnRlcikKICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShwYXRoPVtwYXRoXSwgcGF0aF9ob29rcz1baG9va10pOgotICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5tYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX21vZHVsZShtb2R1bGUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzKGxvYWRlciwgaW1wb3J0ZXIpCisgICAgICAgICAgICBmb3VuZCA9IHNlbGYuZmluZChtb2R1bGUpCisgICAgICAgICAgICBzZWxmLmNoZWNrX2ZvdW5kKGZvdW5kLCBpbXBvcnRlcikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4ob3MuZ2V0Y3dkKCksIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlKQogCiAgICAgZGVmIHRlc3RfTm9uZV9vbl9zeXNfcGF0aChzZWxmKToKQEAgLTE4MiwxNSArMTg1LDUwIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfc3BlYygnd2hhdGV2ZXInKSkKIAogCitjbGFzcyBGaW5kTW9kdWxlVGVzdHMoRmluZGVyVGVzdHMpOgorICAgIGRlZiBmaW5kKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHJldHVybiBzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKCphcmdzLCAqKmt3YXJncykKKyAgICBkZWYgY2hlY2tfZm91bmQoc2VsZiwgZm91bmQsIGltcG9ydGVyKToKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhmb3VuZCwgaW1wb3J0ZXIpCiAKIAotKEZyb3plbl9GaW5kZXJUZXN0cywKLSBTb3VyY2VfRmluZGVyVGVzdHMKLSApID0gdXRpbC50ZXN0X2JvdGgoRmluZGVyVGVzdHMsIGltcG9ydGxpYj1pbXBvcnRsaWIsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCisoRnJvemVuX0ZpbmRNb2R1bGVUZXN0cywKKyBTb3VyY2VfRmluZE1vZHVsZVRlc3RzCispID0gdXRpbC50ZXN0X2JvdGgoRmluZE1vZHVsZVRlc3RzLCBpbXBvcnRsaWI9aW1wb3J0bGliLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQorCisKK2NsYXNzIEZpbmRTcGVjVGVzdHMoRmluZGVyVGVzdHMpOgorICAgIGRlZiBmaW5kKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHJldHVybiBzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfc3BlYygqYXJncywgKiprd2FyZ3MpCisgICAgZGVmIGNoZWNrX2ZvdW5kKHNlbGYsIGZvdW5kLCBpbXBvcnRlcik6CisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZm91bmQubG9hZGVyLCBpbXBvcnRlcikKKworCisoRnJvemVuX0ZpbmRTcGVjVGVzdHMsCisgU291cmNlX0ZpbmRTcGVjVGVzdHMKKyApID0gdXRpbC50ZXN0X2JvdGgoRmluZFNwZWNUZXN0cywgaW1wb3J0bGliPWltcG9ydGxpYiwgbWFjaGluZXJ5PW1hY2hpbmVyeSkKIAogCiBjbGFzcyBQYXRoRW50cnlGaW5kZXJUZXN0czoKIAorICAgIGRlZiB0ZXN0X2ZpbmRlcl93aXRoX2ZhaWxpbmdfZmluZF9zcGVjKHNlbGYpOgorICAgICAgICAjIFBhdGhFbnRyeUZpbmRlciB3aXRoIGZpbmRfbW9kdWxlKCkgZGVmaW5lZCBzaG91bGQgd29yay4KKyAgICAgICAgIyBJc3N1ZSAjMjA3NjMuCisgICAgICAgIGNsYXNzIEZpbmRlcjoKKyAgICAgICAgICAgIHBhdGhfbG9jYXRpb24gPSAndGVzdF9maW5kZXJfd2l0aF9maW5kX21vZHVsZScKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoKToKKyAgICAgICAgICAgICAgICBpZiBwYXRoICE9IHNlbGYucGF0aF9sb2NhdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IKKworICAgICAgICAgICAgQHN0YXRpY21ldGhvZAorICAgICAgICAgICAgZGVmIGZpbmRfbW9kdWxlKGZ1bGxuYW1lKToKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorCisKKyAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShwYXRoPVtGaW5kZXIucGF0aF9sb2NhdGlvbl0rc3lzLnBhdGhbOl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9ob29rcz1bRmluZGVyXSk6CisgICAgICAgICAgICBzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfc3BlYygnaW1wb3J0bGliJykKKwogICAgIGRlZiB0ZXN0X2ZpbmRlcl93aXRoX2ZhaWxpbmdfZmluZF9tb2R1bGUoc2VsZik6CiAgICAgICAgICMgUGF0aEVudHJ5RmluZGVyIHdpdGggZmluZF9tb2R1bGUoKSBkZWZpbmVkIHNob3VsZCB3b3JrLgogICAgICAgICAjIElzc3VlICMyMDc2My4KQEAgLTIwNyw3ICsyNDUsNyBAQAogCiAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUocGF0aD1bRmluZGVyLnBhdGhfbG9jYXRpb25dK3N5cy5wYXRoWzpdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhfaG9va3M9W0ZpbmRlcl0pOgotICAgICAgICAgICAgc2VsZi5tYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX3NwZWMoJ2ltcG9ydGxpYicpCisgICAgICAgICAgICBzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKCdpbXBvcnRsaWInKQogCiAKIChGcm96ZW5fUEVGVGVzdHMsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcmVsYXRpdmVfaW1wb3J0cy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9yZWxhdGl2ZV9pbXBvcnRzLnB5CmluZGV4IDNiYjgxOWYuLjhhOTVhMzIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9yZWxhdGl2ZV9pbXBvcnRzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9yZWxhdGl2ZV9pbXBvcnRzLnB5CkBAIC0xLDcgKzEsOCBAQAogIiIiVGVzdCByZWxhdGl2ZSBpbXBvcnRzIChQRVAgMzI4KS4iIiIKIGZyb20gLi4gaW1wb3J0IHV0aWwKLWltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdhcm5pbmdzCisKIAogY2xhc3MgUmVsYXRpdmVJbXBvcnRzOgogCkBAIC02NSw5ICs2NiwxMSBAQAogICAgICAgICAgICAgICAgIHVuY2FjaGVfbmFtZXMuYXBwZW5kKG5hbWVbOi1sZW4oJy5fX2luaXRfXycpXSkKICAgICAgICAgd2l0aCB1dGlsLm1vY2tfc3BlYygqY3JlYXRlKSBhcyBpbXBvcnRlcjoKICAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVtpbXBvcnRlcl0pOgotICAgICAgICAgICAgICAgIGZvciBnbG9iYWxfIGluIGdsb2JhbHNfOgotICAgICAgICAgICAgICAgICAgICB3aXRoIHV0aWwudW5jYWNoZSgqdW5jYWNoZV9uYW1lcyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhnbG9iYWxfKQorICAgICAgICAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiKQorICAgICAgICAgICAgICAgICAgICBmb3IgZ2xvYmFsXyBpbiBnbG9iYWxzXzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKCp1bmNhY2hlX25hbWVzKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhnbG9iYWxfKQogCiAKICAgICBkZWYgdGVzdF9tb2R1bGVfZnJvbV9tb2R1bGUoc2VsZik6CkBAIC0yMDQsMTEgKzIwNywxOCBAQAogCiAgICAgZGVmIHRlc3RfcmVsYXRpdmVfaW1wb3J0X25vX2dsb2JhbHMoc2VsZik6CiAgICAgICAgICMgTm8gZ2xvYmFscyBmb3IgYSByZWxhdGl2ZSBpbXBvcnQgaXMgYW4gZXJyb3IuCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IpOgotICAgICAgICAgICAgc2VsZi5fX2ltcG9ydF9fKCdzeXMnLCBsZXZlbD0xKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yKToKKyAgICAgICAgICAgICAgICBzZWxmLl9faW1wb3J0X18oJ3N5cycsIGxldmVsPTEpCisKKyAgICBkZWYgdGVzdF9yZWxhdGl2ZV9pbXBvcnRfbm9fcGFja2FnZShzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgICAgICBzZWxmLl9faW1wb3J0X18oJ2EnLCB7J19fcGFja2FnZV9fJzogJycsICdfX3NwZWNfXyc6IE5vbmV9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsPTEpCiAKICAgICBkZWYgdGVzdF9yZWxhdGl2ZV9pbXBvcnRfbm9fcGFja2FnZV9leGlzdHNfYWJzb2x1dGUoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3lzdGVtRXJyb3IpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKICAgICAgICAgICAgIHNlbGYuX19pbXBvcnRfXygnc3lzJywgeydfX3BhY2thZ2VfXyc6ICcnLCAnX19zcGVjX18nOiBOb25lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbD0xKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9yZWdydGVzdC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3JlZ3J0ZXN0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNWJlMTFmLi4wMDAwMDAwCi0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3JlZ3J0ZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotIiIiUnVuIFB5dGhvbidzIHN0YW5kYXJkIHRlc3Qgc3VpdGUgdXNpbmcgaW1wb3J0bGliLl9faW1wb3J0X18uCi0KLVRlc3RzIGtub3duIHRvIGZhaWwgYmVjYXVzZSBvZiBhc3N1bXB0aW9ucyB0aGF0IGltcG9ydGxpYiAocHJvcGVybHkpCi1pbnZhbGlkYXRlcyBhcmUgYXV0b21hdGljYWxseSBza2lwcGVkIGlmIHRoZSBlbnRpcmUgdGVzdCBzdWl0ZSBpcyBydW4uCi1PdGhlcndpc2UgYWxsIGNvbW1hbmQtbGluZSBvcHRpb25zIHZhbGlkIGZvciB0ZXN0LnJlZ3J0ZXN0IGFyZSBhbHNvIHZhbGlkIGZvcgotdGhpcyBzY3JpcHQuCi0KLSIiIgotaW1wb3J0IGltcG9ydGxpYgotaW1wb3J0IHN5cwotZnJvbSB0ZXN0IGltcG9ydCByZWdydGVzdAotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIF9fYnVpbHRpbnNfXy5fX2ltcG9ydF9fID0gaW1wb3J0bGliLl9faW1wb3J0X18KLSAgICBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS5jbGVhcigpCi0KLSAgICByZWdydGVzdC5tYWluKHF1aWV0PVRydWUsIHZlcmJvc2UyPVRydWUpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfY2FzZV9zZW5zaXRpdml0eS5weQppbmRleCAzNGI4NmNkLi4xMmNlMGNiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKQEAgLTUsNyArNSw2IEBACiBtYWNoaW5lcnkgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi5tYWNoaW5lcnknKQogCiBpbXBvcnQgb3MKLWltcG9ydCBzeXMKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCBhcyB0ZXN0X3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9maWxlX2xvYWRlci5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2ZpbGVfbG9hZGVyLnB5CmluZGV4IDczZjRjNjIuLmExNTExNDkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2ZpbGVfbG9hZGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2ZpbGVfbG9hZGVyLnB5CkBAIC0yMTcsNyArMjE3LDcgQEAKICAgICAgICAgICAgICMgUEVQIDMwMgogICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgogICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJywgRGVwcmVjYXRpb25XYXJuaW5nKQotICAgICAgICAgICAgICAgIG1vZCA9IGxvYWRlci5sb2FkX21vZHVsZSgnX3RlbXAnKSAjIFhYWAorICAgICAgICAgICAgICAgIG1vZCA9IGxvYWRlci5sb2FkX21vZHVsZSgnX3RlbXAnKQogICAgICAgICAgICAgIyBTYW5pdHkgY2hlY2tzLgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2QuX19jYWNoZWRfXywgY29tcGlsZWQpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZC54LCA1KQpAQCAtMjQ1LDEyICsyNDUsNyBAQAogY2xhc3MgQmFkQnl0ZWNvZGVUZXN0OgogCiAgICAgZGVmIGltcG9ydF8oc2VsZiwgZmlsZSwgbW9kdWxlX25hbWUpOgotICAgICAgICBsb2FkZXIgPSBzZWxmLmxvYWRlcihtb2R1bGVfbmFtZSwgZmlsZSkKLSAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgotICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnLCBEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgICAgICAjIFhYWCBDaGFuZ2UgdG8gdXNlIGV4ZWNfbW9kdWxlKCkuCi0gICAgICAgICAgICBtb2R1bGUgPSBsb2FkZXIubG9hZF9tb2R1bGUobW9kdWxlX25hbWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4obW9kdWxlX25hbWUsIHN5cy5tb2R1bGVzKQorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKICAgICBkZWYgbWFuaXB1bGF0ZV9ieXRlY29kZShzZWxmLCBuYW1lLCBtYXBwaW5nLCBtYW5pcHVsYXRvciwgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxfc291cmNlPUZhbHNlKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X3BhdGhfaG9vay5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X3BhdGhfaG9vay5weQppbmRleCBlNmEyNDE1Li43OTVkNDM2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9wYXRoX2hvb2sucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfcGF0aF9ob29rLnB5CkBAIC0xNiwxMCArMTYsMTkgQEAKICAgICBkZWYgdGVzdF9zdWNjZXNzKHNlbGYpOgogICAgICAgICB3aXRoIHV0aWwuY3JlYXRlX21vZHVsZXMoJ2R1bW15JykgYXMgbWFwcGluZzoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKHNlbGYucGF0aF9ob29rKCkobWFwcGluZ1snLnJvb3QnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmluZF9tb2R1bGUnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaW5kX3NwZWMnKSkKKworICAgIGRlZiB0ZXN0X3N1Y2Nlc3NfbGVnYWN5KHNlbGYpOgorICAgICAgICB3aXRoIHV0aWwuY3JlYXRlX21vZHVsZXMoJ2R1bW15JykgYXMgbWFwcGluZzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKHNlbGYucGF0aF9ob29rKCkobWFwcGluZ1snLnJvb3QnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmluZF9tb2R1bGUnKSkKIAogICAgIGRlZiB0ZXN0X2VtcHR5X3N0cmluZyhzZWxmKToKICAgICAgICAgIyBUaGUgZW1wdHkgc3RyaW5nIHJlcHJlc2VudHMgdGhlIGN3ZC4KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoc2VsZi5wYXRoX2hvb2soKSgnJyksICdmaW5kX3NwZWMnKSkKKworICAgIGRlZiB0ZXN0X2VtcHR5X3N0cmluZ19sZWdhY3koc2VsZik6CisgICAgICAgICMgVGhlIGVtcHR5IHN0cmluZyByZXByZXNlbnRzIHRoZSBjd2QuCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKHNlbGYucGF0aF9ob29rKCkoJycpLCAnZmluZF9tb2R1bGUnKSkKIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9zb3VyY2VfZW5jb2RpbmcucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9zb3VyY2VfZW5jb2RpbmcucHkKaW5kZXggMWUwNzcxYi4uOTgwODU1ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3Rfc291cmNlX2VuY29kaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X3NvdXJjZV9lbmNvZGluZy5weQpAQCAtNSw3ICs1LDYgQEAKIGltcG9ydCBjb2RlY3MKIGltcG9ydCBpbXBvcnRsaWIudXRpbAogaW1wb3J0IHJlCi1pbXBvcnQgc3lzCiBpbXBvcnQgdHlwZXMKICMgQmVjYXVzZSBzeXMucGF0aCBnZXRzIGVzc2VudGlhbGx5IGJsYW5rZWQsIG5lZWQgdG8gaGF2ZSB1bmljb2RlZGF0YSBhbHJlYWR5CiAjIGltcG9ydGVkIGZvciB0aGUgcGFyc2VyIHRvIHVzZS4KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfYWJjLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9hYmMucHkKaW5kZXggZDRiZjkxNS4uYzg2MjQ4MCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9hYmMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9hYmMucHkKQEAgLTIwNyw2ICsyMDcsMTAgQEAKIAogICAgIFNQTElUID0gbWFrZV9hYmNfc3ViY2xhc3NlcyhMb2FkZXIpCiAKKyAgICBkZWYgdGVzdF9jcmVhdGVfbW9kdWxlKHNlbGYpOgorICAgICAgICBzcGVjID0gJ2Egc3BlYycKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi5pbnMuY3JlYXRlX21vZHVsZShzcGVjKSkKKwogICAgIGRlZiB0ZXN0X2xvYWRfbW9kdWxlKHNlbGYpOgogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKICAgICAgICAgICAgIHNlbGYuaW5zLmxvYWRfbW9kdWxlKCdzb21ldGhpbmcnKQpAQCAtNTE5LDYgKzUyMywxMiBAQAogICAgICAgICBzdXBwb3J0LnVubG9hZChzZWxmLm1vZHVsZV9uYW1lKQogICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxvYWQsIHNlbGYubW9kdWxlX25hbWUpCiAKKyAgICBkZWYgbG9hZChzZWxmLCBsb2FkZXIpOgorICAgICAgICBzcGVjID0gc2VsZi51dGlsLnNwZWNfZnJvbV9sb2FkZXIoc2VsZi5tb2R1bGVfbmFtZSwgbG9hZGVyKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIERlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmluaXQuX2Jvb3RzdHJhcC5fbG9hZF91bmxvY2tlZChzcGVjKQorCiAgICAgZGVmIG1vY2tfZ2V0X2NvZGUoc2VsZik6CiAgICAgICAgIHJldHVybiBtb2NrLnBhdGNoLm9iamVjdChzZWxmLkluc3BlY3RMb2FkZXJTdWJjbGFzcywgJ2dldF9jb2RlJykKIApAQCAtNTI4LDkgKzUzOCw3IEBACiAgICAgICAgICAgICBtb2NrZWRfZ2V0X2NvZGUuc2lkZV9lZmZlY3QgPSBJbXBvcnRFcnJvcgogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CiAgICAgICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5JbnNwZWN0TG9hZGVyU3ViY2xhc3MoKQotICAgICAgICAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKLSAgICAgICAgICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnLCBEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgICAgICAgICAgICAgIGxvYWRlci5sb2FkX21vZHVsZShzZWxmLm1vZHVsZV9uYW1lKQorICAgICAgICAgICAgICAgIHNlbGYubG9hZChsb2FkZXIpCiAKICAgICBkZWYgdGVzdF9nZXRfY29kZV9Ob25lKHNlbGYpOgogICAgICAgICAjIElmIGdldF9jb2RlKCkgcmV0dXJucyBOb25lLCByYWlzZSBJbXBvcnRFcnJvci4KQEAgLTUzOCw3ICs1NDYsNyBAQAogICAgICAgICAgICAgbW9ja2VkX2dldF9jb2RlLnJldHVybl92YWx1ZSA9IE5vbmUKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgogICAgICAgICAgICAgICAgIGxvYWRlciA9IHNlbGYuSW5zcGVjdExvYWRlclN1YmNsYXNzKCkKLSAgICAgICAgICAgICAgICBsb2FkZXIubG9hZF9tb2R1bGUoc2VsZi5tb2R1bGVfbmFtZSkKKyAgICAgICAgICAgICAgICBzZWxmLmxvYWQobG9hZGVyKQogCiAgICAgZGVmIHRlc3RfbW9kdWxlX3JldHVybmVkKHNlbGYpOgogICAgICAgICAjIFRoZSBsb2FkZWQgbW9kdWxlIHNob3VsZCBiZSByZXR1cm5lZC4KQEAgLTU0NiwxNCArNTU0LDE2IEBACiAgICAgICAgIHdpdGggc2VsZi5tb2NrX2dldF9jb2RlKCkgYXMgbW9ja2VkX2dldF9jb2RlOgogICAgICAgICAgICAgbW9ja2VkX2dldF9jb2RlLnJldHVybl92YWx1ZSA9IGNvZGUKICAgICAgICAgICAgIGxvYWRlciA9IHNlbGYuSW5zcGVjdExvYWRlclN1YmNsYXNzKCkKLSAgICAgICAgICAgIG1vZHVsZSA9IGxvYWRlci5sb2FkX21vZHVsZShzZWxmLm1vZHVsZV9uYW1lKQorICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5sb2FkKGxvYWRlcikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLCBzeXMubW9kdWxlc1tzZWxmLm1vZHVsZV9uYW1lXSkKIAogCiAoRnJvemVuX0lMTG9hZE1vZHVsZVRlc3RzLAogIFNvdXJjZV9JTExvYWRNb2R1bGVUZXN0cwogICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKEluc3BlY3RMb2FkZXJMb2FkTW9kdWxlVGVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdExvYWRlclN1YmNsYXNzPVNQTElUX0lMKQorICAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RMb2FkZXJTdWJjbGFzcz1TUExJVF9JTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbml0PWluaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgdXRpbD11dGlsKQogCiAKICMjIyMjIEV4ZWN1dGlvbkxvYWRlciBjb25jcmV0ZSBtZXRob2RzICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2FwaS5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfYXBpLnB5CmluZGV4IDZiYzNjNTYuLmIwYTk0YWEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfYXBpLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfYXBpLnB5CkBAIC05OSw5ICs5OSw3IEBACiAKIGNsYXNzIEZpbmRMb2FkZXJUZXN0czoKIAotICAgIGNsYXNzIEZha2VNZXRhRmluZGVyOgotICAgICAgICBAc3RhdGljbWV0aG9kCi0gICAgICAgIGRlZiBmaW5kX21vZHVsZShuYW1lLCBwYXRoPU5vbmUpOiByZXR1cm4gbmFtZSwgcGF0aAorICAgIEZha2VNZXRhRmluZGVyID0gTm9uZQogCiAgICAgZGVmIHRlc3Rfc3lzX21vZHVsZXMoc2VsZik6CiAgICAgICAgICMgSWYgYSBtb2R1bGUgd2l0aCBfX2xvYWRlcl9fIGlzIGluIHN5cy5tb2R1bGVzLCB0aGVuIHJldHVybiBpdC4KQEAgLTE3MSw5ICsxNjksMzAgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYuaW5pdC5maW5kX2xvYWRlcignbmV2ZXJnb2luZ3RvZmluZHRoaXNtb2R1bGUnKSkKIAogCi0oRnJvemVuX0ZpbmRMb2FkZXJUZXN0cywKLSBTb3VyY2VfRmluZExvYWRlclRlc3RzCi0gKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoRmluZExvYWRlclRlc3RzLCBpbml0PWluaXQpCitjbGFzcyBGaW5kTG9hZGVyUEVQNDUxVGVzdHMoRmluZExvYWRlclRlc3RzKToKKworICAgIGNsYXNzIEZha2VNZXRhRmluZGVyOgorICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgIGRlZiBmaW5kX3NwZWMobmFtZSwgcGF0aD1Ob25lLCB0YXJnZXQ9Tm9uZSk6CisgICAgICAgICAgICByZXR1cm4gbWFjaGluZXJ5WydTb3VyY2UnXS5Nb2R1bGVTcGVjKG5hbWUsIChuYW1lLCBwYXRoKSkKKworCisoRnJvemVuX0ZpbmRMb2FkZXJQRVA0NTFUZXN0cywKKyBTb3VyY2VfRmluZExvYWRlclBFUDQ1MVRlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoRmluZExvYWRlclBFUDQ1MVRlc3RzLCBpbml0PWluaXQpCisKKworY2xhc3MgRmluZExvYWRlclBFUDMwMlRlc3RzKEZpbmRMb2FkZXJUZXN0cyk6CisKKyAgICBjbGFzcyBGYWtlTWV0YUZpbmRlcjoKKyAgICAgICAgQHN0YXRpY21ldGhvZAorICAgICAgICBkZWYgZmluZF9tb2R1bGUobmFtZSwgcGF0aD1Ob25lKToKKyAgICAgICAgICAgIHJldHVybiBuYW1lLCBwYXRoCisKKworKEZyb3plbl9GaW5kTG9hZGVyUEVQMzAyVGVzdHMsCisgU291cmNlX0ZpbmRMb2FkZXJQRVAzMDJUZXN0cworICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKEZpbmRMb2FkZXJQRVAzMDJUZXN0cywgaW5pdD1pbml0KQogCiAKIGNsYXNzIFJlbG9hZFRlc3RzOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9sYXp5LnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9sYXp5LnB5CmluZGV4IGNjMzgzYzIuLmZmZDhkYzYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfbGF6eS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2xhenkucHkKQEAgLTY2LDYgKzY2LDggQEAKICAgICAgICAgc3BlYyA9IHV0aWwuc3BlY19mcm9tX2xvYWRlcihUZXN0aW5nSW1wb3J0ZXIubW9kdWxlX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRpbC5MYXp5TG9hZGVyKGxvYWRlcikpCiAgICAgICAgIG1vZHVsZSA9IHNwZWMubG9hZGVyLmNyZWF0ZV9tb2R1bGUoc3BlYykKKyAgICAgICAgaWYgbW9kdWxlIGlzIE5vbmU6CisgICAgICAgICAgICBtb2R1bGUgPSB0eXBlcy5Nb2R1bGVUeXBlKFRlc3RpbmdJbXBvcnRlci5tb2R1bGVfbmFtZSkKICAgICAgICAgbW9kdWxlLl9fc3BlY19fID0gc3BlYwogICAgICAgICBtb2R1bGUuX19sb2FkZXJfXyA9IHNwZWMubG9hZGVyCiAgICAgICAgIHNwZWMubG9hZGVyLmV4ZWNfbW9kdWxlKG1vZHVsZSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfbG9ja3MucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2xvY2tzLnB5CmluZGV4IGRmMGFmMTIuLmRiY2U5YzIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfbG9ja3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9sb2Nrcy5weQpAQCAtMyw3ICszLDYgQEAKIGluaXQgPSB0ZXN0X3V0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliJykKIAogaW1wb3J0IHN5cwotaW1wb3J0IHRpbWUKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHdlYWtyZWYKIApAQCAtNTgsNyArNTcsNyBAQAogICAgICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc2VsZi5vbGRfc3dpdGNoaW50ZXJ2YWwgPSBzeXMuZ2V0c3dpdGNoaW50ZXJ2YWwoKQotICAgICAgICAgICAgICAgIHN5cy5zZXRzd2l0Y2hpbnRlcnZhbCgwLjAwMDAwMSkKKyAgICAgICAgICAgICAgICBzdXBwb3J0LnNldHN3aXRjaGludGVydmFsKDAuMDAwMDAxKQogICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAgICAgIHNlbGYub2xkX3N3aXRjaGludGVydmFsID0gTm9uZQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X25hbWVzcGFjZV9wa2dzLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9uYW1lc3BhY2VfcGtncy5weQppbmRleCA2NjM5NjEyLi5lMzdkOGExIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X25hbWVzcGFjZV9wa2dzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfbmFtZXNwYWNlX3BrZ3MucHkKQEAgLTEsMTMgKzEsMTAgQEAKIGltcG9ydCBjb250ZXh0bGliCi1pbXBvcnQgaW1wb3J0bGliLmFiYwotaW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKK2ltcG9ydCBpbXBvcnRsaWIKIGltcG9ydCBvcwogaW1wb3J0IHN5cwotaW1wb3J0IHR5cGVzCiBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSB0ZXN0LnRlc3RfaW1wb3J0bGliIGltcG9ydCB1dGlsCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CiAKICMgbmVlZGVkIHRlc3RzOgogIwpAQCAtNzEsNiArNjgsNyBAQAogICAgICAgICAjIFRPRE86IHdpbGwgd2UgZXZlciB3YW50IHRvIHBhc3MgZXhjX2luZm8gdG8gX19leGl0X18/CiAgICAgICAgIHNlbGYuY3R4Ll9fZXhpdF9fKE5vbmUsIE5vbmUsIE5vbmUpCiAKKwogY2xhc3MgU2luZ2xlTmFtZXNwYWNlUGFja2FnZShOYW1lc3BhY2VQYWNrYWdlVGVzdCk6CiAgICAgcGF0aHMgPSBbJ3BvcnRpb24xJ10KIApAQCAtODcsNyArODUsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoZm9vKSwgIjxtb2R1bGUgJ2ZvbycgKG5hbWVzcGFjZSk+IikKIAogCi1jbGFzcyBEeW5hbWljUGF0aGVOYW1lc3BhY2VQYWNrYWdlKE5hbWVzcGFjZVBhY2thZ2VUZXN0KToKK2NsYXNzIER5bmFtaWNQYXRoTmFtZXNwYWNlUGFja2FnZShOYW1lc3BhY2VQYWNrYWdlVGVzdCk6CiAgICAgcGF0aHMgPSBbJ3BvcnRpb24xJ10KIAogICAgIGRlZiB0ZXN0X2R5bmFtaWNfcGF0aChzZWxmKToKQEAgLTI4OSw1ICsyODcsMzUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhX3Rlc3QuYXR0ciwgJ2luIG1vZHVsZScpCiAKIAorY2xhc3MgUmVsb2FkVGVzdHMoTmFtZXNwYWNlUGFja2FnZVRlc3QpOgorICAgIHBhdGhzID0gWydwb3J0aW9uMSddCisKKyAgICBkZWYgdGVzdF9zaW1wbGVfcGFja2FnZShzZWxmKToKKyAgICAgICAgaW1wb3J0IGZvby5vbmUKKyAgICAgICAgZm9vID0gaW1wb3J0bGliLnJlbG9hZChmb28pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLm9uZS5hdHRyLCAncG9ydGlvbjEgZm9vIG9uZScpCisKKyAgICBkZWYgdGVzdF9jYW50X2ltcG9ydF9vdGhlcihzZWxmKToKKyAgICAgICAgaW1wb3J0IGZvbworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIGltcG9ydCBmb28udHdvCisgICAgICAgIGZvbyA9IGltcG9ydGxpYi5yZWxvYWQoZm9vKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIGltcG9ydCBmb28udHdvCisKKyAgICBkZWYgdGVzdF9keW5hbWljX3BhdGgoc2VsZik6CisgICAgICAgIGltcG9ydCBmb28ub25lCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICAgICAgaW1wb3J0IGZvby50d28KKworICAgICAgICAjIE5vdyBtb2RpZnkgc3lzLnBhdGggYW5kIHJlbG9hZC4KKyAgICAgICAgc3lzLnBhdGguYXBwZW5kKG9zLnBhdGguam9pbihzZWxmLnJvb3QsICdwb3J0aW9uMicpKQorICAgICAgICBmb28gPSBpbXBvcnRsaWIucmVsb2FkKGZvbykKKworICAgICAgICAjIEFuZCBtYWtlIHN1cmUgZm9vLnR3byBpcyBub3cgaW1wb3J0YWJsZQorICAgICAgICBpbXBvcnQgZm9vLnR3bworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby50d28uYXR0ciwgJ3BvcnRpb24yIGZvbyB0d28nKQorCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3NwZWMucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3NwZWMucHkKaW5kZXggOGIzMzNlOC4uNWExNmEwMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9zcGVjLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3Rfc3BlYy5weQpAQCAtNSw2ICs1LDcgQEAKIHV0aWwgPSB0ZXN0X3V0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLnV0aWwnKQogCiBpbXBvcnQgb3MucGF0aAoraW1wb3J0IHBhdGhsaWIKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBDbGVhbkltcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgc3lzCkBAIC02NTksNiArNjYwLDExIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BlYy5jYWNoZWQsIHNlbGYuY2FjaGVkKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoc3BlYy5oYXNfbG9jYXRpb24pCiAKKyAgICBkZWYgdGVzdF9zcGVjX2Zyb21fZmlsZV9sb2NhdGlvbl9wYXRoX2xpa2VfYXJnKHNlbGYpOgorICAgICAgICBzcGVjID0gc2VsZi51dGlsLnNwZWNfZnJvbV9maWxlX2xvY2F0aW9uKHNlbGYubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRobGliLlB1cmVQYXRoKHNlbGYucGF0aCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BlYy5vcmlnaW4sIHNlbGYucGF0aCkKKwogICAgIGRlZiB0ZXN0X3NwZWNfZnJvbV9maWxlX2xvY2F0aW9uX2RlZmF1bHRfd2l0aG91dF9sb2NhdGlvbihzZWxmKToKICAgICAgICAgc3BlYyA9IHNlbGYudXRpbC5zcGVjX2Zyb21fZmlsZV9sb2NhdGlvbihzZWxmLm5hbWUpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfdXRpbC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfdXRpbC5weQppbmRleCA0MWNhMzMzLi5kNjE1Mzc1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3V0aWwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF91dGlsLnB5CkBAIC01LDYgKzUsNyBAQAogaW1wb3J0bGliX3V0aWwgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi51dGlsJykKIAogaW1wb3J0IG9zCitpbXBvcnQgcGF0aGxpYgogaW1wb3J0IHN0cmluZwogaW1wb3J0IHN5cwogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CkBAIC00NiwxNCArNDcsOCBAQAogICAgICAgICAgICAgZGVmIGV4ZWNfbW9kdWxlKHNlbGYsIG1vZHVsZSk6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICBzcGVjID0gc2VsZi5tYWNoaW5lcnkuTW9kdWxlU3BlYygndGVzdCcsIExvYWRlcigpKQotICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKHJlY29yZD1UcnVlKSBhcyB3OgotICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdhbHdheXMnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKICAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYudXRpbC5tb2R1bGVfZnJvbV9zcGVjKHNwZWMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHcpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyh3WzBdLmNhdGVnb3J5LCBEZXByZWNhdGlvbldhcm5pbmcpKQotICAgICAgICBzZWxmLmFzc2VydEluKCdjcmVhdGVfbW9kdWxlJywgc3RyKHdbMF0ubWVzc2FnZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2R1bGUsIHR5cGVzLk1vZHVsZVR5cGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCBzcGVjLm5hbWUpCiAKICAgICBkZWYgdGVzdF9jcmVhdGVfbW9kdWxlX3JldHVybnNfTm9uZShzZWxmKToKICAgICAgICAgY2xhc3MgTG9hZGVyKHNlbGYuYWJjLkxvYWRlcik6CkBAIC02NzcsNiArNjcyLDE1IEBACiAgICAgICAgICAgICAnXFxmb29cXGJhclxcYmF6XFxfX3B5Y2FjaGVfX1xccXV4Lnt9LnB5YycuZm9ybWF0KHNlbGYudGFnKSkKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgbm90IE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcXVpcmVzIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgbm90IGJlIE5vbmUnKQorICAgIGRlZiB0ZXN0X3NvdXJjZV9mcm9tX2NhY2hlX3BhdGhfbGlrZV9hcmcoc2VsZik6CisgICAgICAgIHBhdGggPSBwYXRobGliLlB1cmVQYXRoKCdmb28nLCAnYmFyJywgJ2JheicsICdxdXgucHknKQorICAgICAgICBleHBlY3QgPSBvcy5wYXRoLmpvaW4oJ2ZvbycsICdiYXInLCAnYmF6JywgJ19fcHljYWNoZV9fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdxdXgue30ucHljJy5mb3JtYXQoc2VsZi50YWcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBvcHRpbWl6YXRpb249JycpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdCkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgbm90IE5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcXVpcmVzIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgdG8gbm90IGJlICcKICAgICAgICAgICAgICAgICAgICAgICAgICAnTm9uZScpCiAgICAgZGVmIHRlc3Rfc291cmNlX2Zyb21fY2FjaGUoc2VsZik6CkBAIC03MzgsNiArNzQyLDE1IEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CiAgICAgICAgICAgICBzZWxmLnV0aWwuc291cmNlX2Zyb21fY2FjaGUocGF0aCkKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgbm90IE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcXVpcmVzIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgdG8gbm90IGJlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAnTm9uZScpCisgICAgZGVmIHRlc3Rfc291cmNlX2Zyb21fY2FjaGVfcGF0aF9saWtlX2FyZyhzZWxmKToKKyAgICAgICAgcGF0aCA9IHBhdGhsaWIuUHVyZVBhdGgoJ2ZvbycsICdiYXInLCAnYmF6JywgJ19fcHljYWNoZV9fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3F1eC57fS5weWMnLmZvcm1hdChzZWxmLnRhZykpCisgICAgICAgIGV4cGVjdCA9IG9zLnBhdGguam9pbignZm9vJywgJ2JhcicsICdiYXonLCAncXV4LnB5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnV0aWwuc291cmNlX2Zyb21fY2FjaGUocGF0aCksIGV4cGVjdCkKKwogCiAoRnJvemVuX1BFUDMxNDdUZXN0cywKICBTb3VyY2VfUEVQMzE0N1Rlc3RzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3dpbmRvd3MucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3dpbmRvd3MucHkKaW5kZXggYzg5M2JjZi4uMDA1YjY4NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF93aW5kb3dzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3Rfd2luZG93cy5weQpAQCAtNDAsNyArNDAsNyBAQAogICAgIGVsc2U6CiAgICAgICAgIHJvb3QgPSBtYWNoaW5lcnkuV2luZG93c1JlZ2lzdHJ5RmluZGVyLlJFR0lTVFJZX0tFWQogICAgIGtleSA9IHJvb3QuZm9ybWF0KGZ1bGxuYW1lPW5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgc3lzX3ZlcnNpb249c3lzLnZlcnNpb25bOjNdKQorICAgICAgICAgICAgICAgICAgICAgIHN5c192ZXJzaW9uPSclZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXSkKICAgICB0cnk6CiAgICAgICAgIHdpdGggdGVtcF9tb2R1bGUobmFtZSwgImEgPSAxIikgYXMgbG9jYXRpb246CiAgICAgICAgICAgICBzdWJrZXkgPSBDcmVhdGVLZXkoSEtFWV9DVVJSRU5UX1VTRVIsIGtleSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW5zcGVjdC5weSBiL0xpYi90ZXN0L3Rlc3RfaW5zcGVjdC5weQppbmRleCA2NzFlMDVhLi45NzYzNGU1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2luc3BlY3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbnNwZWN0LnB5CkBAIC0zMCw2ICszMCw3IEBACiBmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rLCBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUKIGZyb20gdGVzdCBpbXBvcnQgaW5zcGVjdF9mb2RkZXIgYXMgbW9kCiBmcm9tIHRlc3QgaW1wb3J0IGluc3BlY3RfZm9kZGVyMiBhcyBtb2QyCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogZnJvbSB0ZXN0LnRlc3RfaW1wb3J0IGltcG9ydCBfcmVhZHlfdG9faW1wb3J0CiAKQEAgLTM4LDcgKzM5LDcgQEAKICMgaXNtb2R1bGUsIGlzY2xhc3MsIGlzbWV0aG9kLCBpc2Z1bmN0aW9uLCBpc3RyYWNlYmFjaywgaXNmcmFtZSwgaXNjb2RlLAogIyBpc2J1aWx0aW4sIGlzcm91dGluZSwgaXNnZW5lcmF0b3IsIGlzZ2VuZXJhdG9yZnVuY3Rpb24sIGdldG1lbWJlcnMsCiAjIGdldGRvYywgZ2V0ZmlsZSwgZ2V0bW9kdWxlLCBnZXRzb3VyY2VmaWxlLCBnZXRjb21tZW50cywgZ2V0c291cmNlLAotIyBnZXRjbGFzc3RyZWUsIGdldGFyZ3NwZWMsIGdldGFyZ3ZhbHVlcywgZm9ybWF0YXJnc3BlYywgZm9ybWF0YXJndmFsdWVzLAorIyBnZXRjbGFzc3RyZWUsIGdldGFyZ3ZhbHVlcywgZm9ybWF0YXJnc3BlYywgZm9ybWF0YXJndmFsdWVzLAogIyBjdXJyZW50ZnJhbWUsIHN0YWNrLCB0cmFjZSwgaXNkYXRhZGVzY3JpcHRvcgogCiAjIE5PVEU6IFRoZXJlIGFyZSBzb21lIGFkZGl0aW9uYWwgdGVzdHMgcmVsYXRpbmcgdG8gaW50ZXJhY3Rpb24gd2l0aApAQCAtNjQsNyArNjUsOCBAQAogICAgICAgICAgICAgICAgICAgICAgIGluc3BlY3QuaXNmcmFtZSwgaW5zcGVjdC5pc2Z1bmN0aW9uLCBpbnNwZWN0LmlzbWV0aG9kLAogICAgICAgICAgICAgICAgICAgICAgIGluc3BlY3QuaXNtb2R1bGUsIGluc3BlY3QuaXN0cmFjZWJhY2ssCiAgICAgICAgICAgICAgICAgICAgICAgaW5zcGVjdC5pc2dlbmVyYXRvciwgaW5zcGVjdC5pc2dlbmVyYXRvcmZ1bmN0aW9uLAotICAgICAgICAgICAgICAgICAgICAgIGluc3BlY3QuaXNjb3JvdXRpbmUsIGluc3BlY3QuaXNjb3JvdXRpbmVmdW5jdGlvbl0pCisgICAgICAgICAgICAgICAgICAgICAgaW5zcGVjdC5pc2Nvcm91dGluZSwgaW5zcGVjdC5pc2Nvcm91dGluZWZ1bmN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgIGluc3BlY3QuaXNhc3luY2dlbiwgaW5zcGVjdC5pc2FzeW5jZ2VuZnVuY3Rpb25dKQogCiAgICAgZGVmIGlzdGVzdChzZWxmLCBwcmVkaWNhdGUsIGV4cCk6CiAgICAgICAgIG9iaiA9IGV2YWwoZXhwKQpAQCAtNzIsNiArNzQsNyBAQAogCiAgICAgICAgIGZvciBvdGhlciBpbiBzZWxmLnByZWRpY2F0ZXMgLSBzZXQoW3ByZWRpY2F0ZV0pOgogICAgICAgICAgICAgaWYgKHByZWRpY2F0ZSA9PSBpbnNwZWN0LmlzZ2VuZXJhdG9yZnVuY3Rpb24gb3IgXAorICAgICAgICAgICAgICAgcHJlZGljYXRlID09IGluc3BlY3QuaXNhc3luY2dlbmZ1bmN0aW9uIG9yIFwKICAgICAgICAgICAgICAgIHByZWRpY2F0ZSA9PSBpbnNwZWN0LmlzY29yb3V0aW5lZnVuY3Rpb24pIGFuZCBcCiAgICAgICAgICAgICAgICBvdGhlciA9PSBpbnNwZWN0LmlzZnVuY3Rpb246CiAgICAgICAgICAgICAgICAgY29udGludWUKQEAgLTgxLDYgKzg0LDEwIEBACiAgICAgZm9yIGkgaW4gcmFuZ2UoMik6CiAgICAgICAgIHlpZWxkIGkKIAorYXN5bmMgZGVmIGFzeW5jX2dlbmVyYXRvcl9mdW5jdGlvbl9leGFtcGxlKHNlbGYpOgorICAgIGFzeW5jIGZvciBpIGluIHJhbmdlKDIpOgorICAgICAgICB5aWVsZCBpCisKIGFzeW5jIGRlZiBjb3JvdXRpbmVfZnVuY3Rpb25fZXhhbXBsZShzZWxmKToKICAgICByZXR1cm4gJ3NwYW0nCiAKQEAgLTEyMSw2ICsxMjgsMTAgQEAKICAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc2RhdGFkZXNjcmlwdG9yLCAnY29sbGVjdGlvbnMuZGVmYXVsdGRpY3QuZGVmYXVsdF9mYWN0b3J5JykKICAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc2dlbmVyYXRvciwgJyh4IGZvciB4IGluIHJhbmdlKDIpKScpCiAgICAgICAgIHNlbGYuaXN0ZXN0KGluc3BlY3QuaXNnZW5lcmF0b3JmdW5jdGlvbiwgJ2dlbmVyYXRvcl9mdW5jdGlvbl9leGFtcGxlJykKKyAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc2FzeW5jZ2VuLAorICAgICAgICAgICAgICAgICAgICAnYXN5bmNfZ2VuZXJhdG9yX2Z1bmN0aW9uX2V4YW1wbGUoMSknKQorICAgICAgICBzZWxmLmlzdGVzdChpbnNwZWN0LmlzYXN5bmNnZW5mdW5jdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgJ2FzeW5jX2dlbmVyYXRvcl9mdW5jdGlvbl9leGFtcGxlJykKIAogICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIpCkBAIC00MDAsNyArNDExLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChub3JtY2FzZShpbnNwZWN0LmdldHNvdXJjZWZpbGUobW9kLnNwYW0pKSwgbW9kZmlsZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChub3JtY2FzZShpbnNwZWN0LmdldHNvdXJjZWZpbGUoZ2l0LmFidXNlKSksIG1vZGZpbGUpCiAgICAgICAgIGZuID0gIl9ub25fZXhpc3RpbmdfZmlsZW5hbWVfdXNlZF9mb3Jfc291cmNlZmlsZV90ZXN0LnB5IgotICAgICAgICBjbyA9IGNvbXBpbGUoIk5vbmUiLCBmbiwgImV4ZWMiKQorICAgICAgICBjbyA9IGNvbXBpbGUoIng9MSIsIGZuLCAiZXhlYyIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRzb3VyY2VmaWxlKGNvKSwgTm9uZSkKICAgICAgICAgbGluZWNhY2hlLmNhY2hlW2NvLmNvX2ZpbGVuYW1lXSA9ICgxLCBOb25lLCAiTm9uZSIsIGNvLmNvX2ZpbGVuYW1lKQogICAgICAgICB0cnk6CkBAIC0yOTAyLDYgKzI5MTMsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpcyBub3QgYSB2YWxpZCBwYXJhbWV0ZXIgbmFtZScpOgogICAgICAgICAgICAgaW5zcGVjdC5QYXJhbWV0ZXIoJyQnLCBraW5kPWluc3BlY3QuUGFyYW1ldGVyLlZBUl9LRVlXT1JEKQogCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzIG5vdCBhIHZhbGlkIHBhcmFtZXRlciBuYW1lJyk6CisgICAgICAgICAgICBpbnNwZWN0LlBhcmFtZXRlcignLmEnLCBraW5kPWluc3BlY3QuUGFyYW1ldGVyLlZBUl9LRVlXT1JEKQorCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnY2Fubm90IGhhdmUgZGVmYXVsdCB2YWx1ZXMnKToKICAgICAgICAgICAgIGluc3BlY3QuUGFyYW1ldGVyKCdhJywgZGVmYXVsdD00MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9aW5zcGVjdC5QYXJhbWV0ZXIuVkFSX0tFWVdPUkQpCkBAIC0yOTg1LDYgKzMwMDAsMTcgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ25hbWUgbXVzdCBiZSBhIHN0cicpOgogICAgICAgICAgICAgaW5zcGVjdC5QYXJhbWV0ZXIoTm9uZSwga2luZD1pbnNwZWN0LlBhcmFtZXRlci5QT1NJVElPTkFMX09OTFkpCiAKKyAgICBAY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX3BhcmFtZXRlcl9pbXBsaWNpdChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW1wbGljaXQgYXJndW1lbnRzIG11c3QgYmUgcGFzc2VkIGluIGFzJyk6CisgICAgICAgICAgICBpbnNwZWN0LlBhcmFtZXRlcignLjAnLCBraW5kPWluc3BlY3QuUGFyYW1ldGVyLlBPU0lUSU9OQUxfT05MWSkKKworICAgICAgICBwYXJhbSA9IGluc3BlY3QuUGFyYW1ldGVyKAorICAgICAgICAgICAgJy4wJywga2luZD1pbnNwZWN0LlBhcmFtZXRlci5QT1NJVElPTkFMX09SX0tFWVdPUkQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyYW0ua2luZCwgaW5zcGVjdC5QYXJhbWV0ZXIuUE9TSVRJT05BTF9PTkxZKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcmFtLm5hbWUsICdpbXBsaWNpdDAnKQorCiAgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX3BhcmFtZXRlcl9pbW11dGFiaWxpdHkoc2VsZik6CiAgICAgICAgIHAgPSBpbnNwZWN0LlBhcmFtZXRlcignc3BhbScsIGtpbmQ9aW5zcGVjdC5QYXJhbWV0ZXIuS0VZV09SRF9PTkxZKQogCkBAIC0zMjMzLDYgKzMyNTksMTcgQEAKICAgICAgICAgYmEgPSBzaWcuYmluZChhcmdzPTEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmEuYXJndW1lbnRzLCB7J2t3YXJncyc6IHsnYXJncyc6IDF9fSkKIAorICAgIEBjcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfYmluZF9pbXBsaWNpdF9hcmcoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzE5NjExOiBnZXRjYWxsYXJncyBzaG91bGQgd29yayB3aXRoIHNldCBjb21wcmVoZW5zaW9ucworICAgICAgICBkZWYgbWFrZV9zZXQoKToKKyAgICAgICAgICAgIHJldHVybiB7eiAqIHogZm9yIHogaW4gcmFuZ2UoNSl9CisgICAgICAgIHNldGNvbXBfY29kZSA9IG1ha2Vfc2V0Ll9fY29kZV9fLmNvX2NvbnN0c1sxXQorICAgICAgICBzZXRjb21wX2Z1bmMgPSB0eXBlcy5GdW5jdGlvblR5cGUoc2V0Y29tcF9jb2RlLCB7fSkKKworICAgICAgICBpdGVyYXRvciA9IGl0ZXIocmFuZ2UoNSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHNldGNvbXBfZnVuYywgaXRlcmF0b3IpLCB7MCwgMSwgNCwgOSwgMTZ9KQorCiAKIGNsYXNzIFRlc3RCb3VuZEFyZ3VtZW50cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2JvdW5kX2FyZ3VtZW50c191bmhhc2hhYmxlKHNlbGYpOgpAQCAtMzU0MywxNCArMzU4MCwxNCBAQAogCiAgICAgZGVmIHRlc3RfZGV0YWlscyhzZWxmKToKICAgICAgICAgbW9kdWxlID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoJ3VuaXR0ZXN0JykKLSAgICAgICAgcmMsIG91dCwgZXJyID0gYXNzZXJ0X3B5dGhvbl9vaygnLW0nLCAnaW5zcGVjdCcsCisgICAgICAgIGFyZ3MgPSBzdXBwb3J0Lm9wdGltX2FyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncygpCisgICAgICAgIHJjLCBvdXQsIGVyciA9IGFzc2VydF9weXRob25fb2soKmFyZ3MsICctbScsICdpbnNwZWN0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndW5pdHRlc3QnLCAnLS1kZXRhaWxzJykKICAgICAgICAgb3V0cHV0ID0gb3V0LmRlY29kZSgpCiAgICAgICAgICMgSnVzdCBhIHF1aWNrIHNhbml0eSBjaGVjayBvbiB0aGUgb3V0cHV0CiAgICAgICAgIHNlbGYuYXNzZXJ0SW4obW9kdWxlLl9fbmFtZV9fLCBvdXRwdXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4obW9kdWxlLl9fZmlsZV9fLCBvdXRwdXQpCi0gICAgICAgIGlmIG5vdCBzeXMuZmxhZ3Mub3B0aW1pemU6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEluKG1vZHVsZS5fX2NhY2hlZF9fLCBvdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4obW9kdWxlLl9fY2FjaGVkX18sIG91dHB1dCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIsIGInJykKIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ludC5weSBiL0xpYi90ZXN0L3Rlc3RfaW50LnB5CmluZGV4IGI2NmM1ZDYuLjE0YmJkNjEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW50LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW50LnB5CkBAIC0yLDYgKzIsOCBAQAogCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorZnJvbSB0ZXN0LnRlc3RfZ3JhbW1hciBpbXBvcnQgKFZBTElEX1VOREVSU0NPUkVfTElURVJBTFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5WQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTKQogCiBMID0gWwogICAgICAgICAoJzAnLCAwKSwKQEAgLTIxMiw2ICsyMTQsMjUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoJzJicjQ1cWMnLCAzNSksIDQyOTQ5NjcyOTcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KCcxejE0MXo1JywgMzYpLCA0Mjk0OTY3Mjk3KQogCisgICAgZGVmIHRlc3RfdW5kZXJzY29yZXMoc2VsZik6CisgICAgICAgIGZvciBsaXQgaW4gVkFMSURfVU5ERVJTQ09SRV9MSVRFUkFMUzoKKyAgICAgICAgICAgIGlmIGFueShjaCBpbiBsaXQgZm9yIGNoIGluICcuZUVqSicpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChsaXQsIDApLCBldmFsKGxpdCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChsaXQsIDApLCBpbnQobGl0LnJlcGxhY2UoJ18nLCAnJyksIDApKQorICAgICAgICBmb3IgbGl0IGluIElOVkFMSURfVU5ERVJTQ09SRV9MSVRFUkFMUzoKKyAgICAgICAgICAgIGlmIGFueShjaCBpbiBsaXQgZm9yIGNoIGluICcuZUVqSicpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpbnQsIGxpdCwgMCkKKyAgICAgICAgIyBBZGRpdGlvbmFsIHRlc3QgY2FzZXMgd2l0aCBiYXNlcyAhPSAwLCBvbmx5IGZvciB0aGUgY29uc3RydWN0b3I6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KCIxXzAwIiwgMyksIDkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KCIwXzEwMCIpLCAxMDApICAjIG5vdCB2YWxpZCBhcyBhIGxpdGVyYWwhCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KGIiMV8wMCIpLCAxMDApICAjIGJ5dGUgdW5kZXJzY29yZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpbnQsICJfMTAwIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaW50LCAiK18xMDAiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpbnQsICIxX18wMCIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGludCwgIjEwMF8iKQorCiAgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CiAgICAgZGVmIHRlc3Rfc21hbGxfaW50cyhzZWxmKToKICAgICAgICAgIyBCdWcgIzMyMzY6IFJldHVybiBzbWFsbCBsb25ncyBmcm9tIFB5TG9uZ19Gcm9tU3RyaW5nCkBAIC00MzAsMjEgKzQ1MSwyNCBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKICAgICAgICAgICAgIG4gPSBpbnQoYmFkX2ludCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuLCAxKQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUobiksIGludCkKIAogICAgICAgICBiYWRfaW50ID0gQmFkSW50MigpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgogICAgICAgICAgICAgbiA9IGludChiYWRfaW50KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG4sIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShuKSwgaW50KQogCiAgICAgICAgIGJhZF9pbnQgPSBUcnVuY1JldHVybnNCYWRJbnQoKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKICAgICAgICAgICAgIG4gPSBpbnQoYmFkX2ludCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuLCAxKQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUobiksIGludCkKIAogICAgICAgICBnb29kX2ludCA9IFRydW5jUmV0dXJuc0ludFN1YmNsYXNzKCkKICAgICAgICAgbiA9IGludChnb29kX2ludCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuLCAxKQotICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUobiksIGJvb2wpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShuKSwgaW50KQogICAgICAgICBuID0gSW50U3ViY2xhc3MoZ29vZF9pbnQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobiwgMSkKICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKG4pLCBJbnRTdWJjbGFzcykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW8ucHkgYi9MaWIvdGVzdC90ZXN0X2lvLnB5CmluZGV4IDUxMTE4ODIuLmFhYTY0ZWEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW8ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pby5weQpAQCAtMzUwLDcgKzM1MCwxMCBAQAogICAgIGRlZiBsYXJnZV9maWxlX29wcyhzZWxmLCBmKToKICAgICAgICAgYXNzZXJ0IGYucmVhZGFibGUoKQogICAgICAgICBhc3NlcnQgZi53cml0YWJsZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5zZWVrKHNlbGYuTEFSR0UpLCBzZWxmLkxBUkdFKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuc2VlayhzZWxmLkxBUkdFKSwgc2VsZi5MQVJHRSkKKyAgICAgICAgZXhjZXB0IChPdmVyZmxvd0Vycm9yLCBWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIm5vIGxhcmdlZmlsZSBzdXBwb3J0IikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnRlbGwoKSwgc2VsZi5MQVJHRSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLndyaXRlKGIieHh4IiksIDMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi50ZWxsKCksIHNlbGYuTEFSR0UgKyAzKQpAQCAtNDk2LDcgKzQ5OSwxMSBAQAogICAgIGRlZiB0ZXN0X29wZW5faGFuZGxlc19OVUxfY2hhcnMoc2VsZik6CiAgICAgICAgIGZuX3dpdGhfTlVMID0gJ2Zvb1wwYmFyJwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLm9wZW4sIGZuX3dpdGhfTlVMLCAndycpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYub3BlbiwgYnl0ZXMoZm5fd2l0aF9OVUwsICdhc2NpaScpLCAndycpCisKKyAgICAgICAgYnl0ZXNfZm4gPSBieXRlcyhmbl93aXRoX05VTCwgJ2FzY2lpJykKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLm9wZW4sIGJ5dGVzX2ZuLCAndycpCiAKICAgICBkZWYgdGVzdF9yYXdfZmlsZV9pbyhzZWxmKToKICAgICAgICAgd2l0aCBzZWxmLm9wZW4oc3VwcG9ydC5URVNURk4sICJ3YiIsIGJ1ZmZlcmluZz0wKSBhcyBmOgpAQCAtODU2LDYgKzg2MywzMiBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXR0cihzdHJlYW0sIG1ldGhvZCkoYnVmZmVyKSwgNSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVzKGJ1ZmZlciksIGIiMTIzNDUiKQogCisgICAgZGVmIHRlc3RfZnNwYXRoX3N1cHBvcnQoc2VsZik6CisgICAgICAgIGNsYXNzIFBhdGhMaWtlOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgpOgorICAgICAgICAgICAgICAgIHNlbGYucGF0aCA9IHBhdGgKKworICAgICAgICAgICAgZGVmIF9fZnNwYXRoX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucGF0aAorCisgICAgICAgIGRlZiBjaGVja19wYXRoX3N1Y2NlZWRzKHBhdGgpOgorICAgICAgICAgICAgd2l0aCBzZWxmLm9wZW4ocGF0aCwgInciKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUoImVnZ1xuIikKKworICAgICAgICAgICAgd2l0aCBzZWxmLm9wZW4ocGF0aCwgInIiKSBhcyBmOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksICJlZ2dcbiIpCisKKyAgICAgICAgY2hlY2tfcGF0aF9zdWNjZWVkcyhQYXRoTGlrZShzdXBwb3J0LlRFU1RGTikpCisgICAgICAgIGNoZWNrX3BhdGhfc3VjY2VlZHMoUGF0aExpa2Uoc3VwcG9ydC5URVNURk4uZW5jb2RlKCd1dGYtOCcpKSkKKworICAgICAgICBiYWRfcGF0aCA9IFBhdGhMaWtlKFR5cGVFcnJvcikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5vcGVuKGJhZF9wYXRoLCAndycpCisKKyAgICAgICAgIyBlbnN1cmUgdGhhdCByZWZjb3VudGluZyBpcyBjb3JyZWN0IHdpdGggc29tZSBlcnJvciBjb25kaXRpb25zCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAncmVhZC93cml0ZS9hcHBlbmQgbW9kZScpOgorICAgICAgICAgICAgc2VsZi5vcGVuKFBhdGhMaWtlKHN1cHBvcnQuVEVTVEZOKSwgJ3J3eGEnKQorCiAKIGNsYXNzIENJT1Rlc3QoSU9UZXN0KToKIApAQCAtMTc4Miw3ICsxODE1LDcgQEAKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG1ldGhvZCk6CiAgICAgICAgICAgICAgICAgcGFpciA9IHNlbGYudHAoc2VsZi5CeXRlc0lPKGIiYWJjZGVmIiksIHNlbGYuTW9ja1Jhd0lPKCkpCiAKLSAgICAgICAgICAgICAgICBkYXRhID0gYnl0ZXNsaWtlKDUpCisgICAgICAgICAgICAgICAgZGF0YSA9IGJ5dGVzbGlrZShiJ1wwJyAqIDUpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKHBhaXIsIG1ldGhvZCkoZGF0YSksIDUpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcyhkYXRhKSwgYiJhYmNkZSIpCiAKQEAgLTMyNDYsOCArMzI3OSw3IEBACiAKIGNsYXNzIFB5VGV4dElPV3JhcHBlclRlc3QoVGV4dElPV3JhcHBlclRlc3QpOgogICAgIGlvID0gcHlpbwotICAgICNzaHV0ZG93bl9lcnJvciA9ICJMb29rdXBFcnJvcjogdW5rbm93biBlbmNvZGluZzogYXNjaWkiCi0gICAgc2h1dGRvd25fZXJyb3IgPSAiVHlwZUVycm9yOiAnTm9uZVR5cGUnIG9iamVjdCBpcyBub3QgaXRlcmFibGUiCisgICAgc2h1dGRvd25fZXJyb3IgPSAiTG9va3VwRXJyb3I6IHVua25vd24gZW5jb2Rpbmc6IGFzY2lpIgogCiAKIGNsYXNzIEluY3JlbWVudGFsTmV3bGluZURlY29kZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaXBhZGRyZXNzLnB5IGIvTGliL3Rlc3QvdGVzdF9pcGFkZHJlc3MucHkKaW5kZXggOTFhZThkOC4uMGUzOTUxNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pcGFkZHJlc3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pcGFkZHJlc3MucHkKQEAgLTExOSw3ICsxMTksNyBAQAogCiAgICAgZGVmIHRlc3RfYmFkX3BhY2tlZF9sZW5ndGgoc2VsZik6CiAgICAgICAgIGRlZiBhc3NlcnRCYWRMZW5ndGgobGVuZ3RoKToKLSAgICAgICAgICAgIGFkZHIgPSBieXRlcyhsZW5ndGgpCisgICAgICAgICAgICBhZGRyID0gYidcMCcgKiBsZW5ndGgKICAgICAgICAgICAgIG1zZyA9ICIlciAobGVuICVkICE9IDQpIGlzIG5vdCBwZXJtaXR0ZWQgYXMgYW4gSVB2NCBhZGRyZXNzIgogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcihyZS5lc2NhcGUobXNnICUgKGFkZHIsIGxlbmd0aCkpKToKICAgICAgICAgICAgICAgICBzZWxmLmZhY3RvcnkoYWRkcikKQEAgLTEzOSwxMSArMTM5LDExIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SW5zdGFuY2VzRXF1YWwoMzIzMjIzNTUyMSwgIjo6YzBhODoxIikKIAogICAgIGRlZiB0ZXN0X3BhY2tlZChzZWxmKToKLSAgICAgICAgYWRkciA9IGJ5dGVzKDEyKSArIGJ5dGVzLmZyb21oZXgoIjAwMDAwMDAwIikKKyAgICAgICAgYWRkciA9IGInXDAnKjEyICsgYnl0ZXMuZnJvbWhleCgiMDAwMDAwMDAiKQogICAgICAgICBzZWxmLmFzc2VydEluc3RhbmNlc0VxdWFsKGFkZHIsICI6OiIpCi0gICAgICAgIGFkZHIgPSBieXRlcygxMikgKyBieXRlcy5mcm9taGV4KCJjMGE4MDAwMSIpCisgICAgICAgIGFkZHIgPSBiJ1wwJyoxMiArIGJ5dGVzLmZyb21oZXgoImMwYTgwMDAxIikKICAgICAgICAgc2VsZi5hc3NlcnRJbnN0YW5jZXNFcXVhbChhZGRyLCAiOjpjMGE4OjEiKQotICAgICAgICBhZGRyID0gYnl0ZXMuZnJvbWhleCgiYzBhODAwMDEiKSArIGJ5dGVzKDEyKQorICAgICAgICBhZGRyID0gYnl0ZXMuZnJvbWhleCgiYzBhODAwMDEiKSArIGInXDAnKjEyCiAgICAgICAgIHNlbGYuYXNzZXJ0SW5zdGFuY2VzRXF1YWwoYWRkciwgImMwYTg6MTo6IikKIAogICAgIGRlZiB0ZXN0X25lZ2F0aXZlX2ludHNfcmVqZWN0ZWQoc2VsZik6CkBAIC0xNTgsNyArMTU4LDcgQEAKIAogICAgIGRlZiB0ZXN0X2JhZF9wYWNrZWRfbGVuZ3RoKHNlbGYpOgogICAgICAgICBkZWYgYXNzZXJ0QmFkTGVuZ3RoKGxlbmd0aCk6Ci0gICAgICAgICAgICBhZGRyID0gYnl0ZXMobGVuZ3RoKQorICAgICAgICAgICAgYWRkciA9IGInXDAnICogbGVuZ3RoCiAgICAgICAgICAgICBtc2cgPSAiJXIgKGxlbiAlZCAhPSAxNikgaXMgbm90IHBlcm1pdHRlZCBhcyBhbiBJUHY2IGFkZHJlc3MiCiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKHJlLmVzY2FwZShtc2cgJSAoYWRkciwgbGVuZ3RoKSkpOgogICAgICAgICAgICAgICAgIHNlbGYuZmFjdG9yeShhZGRyKQpAQCAtMTE3Niw2ICsxMTc2LDcgQEAKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihzZWxmLmlwdjZfbmV0d29ya1s1XSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzIwMDE6NjU4OjIyYTpjYWZlOjo1JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgc2VsZi5pcHY2X25ldHdvcmsuX19nZXRpdGVtX18sIDEgPDwgNjQpCiAKICAgICBkZWYgdGVzdEdldGl0ZW0oc2VsZik6CiAgICAgICAgICMgaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2lwYWRkci1weS9pc3N1ZXMvZGV0YWlsP2lkPTE1CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2l0ZXIucHkgYi9MaWIvdGVzdC90ZXN0X2l0ZXIucHkKaW5kZXggYTkxNjcwYi4uNTQyYjI4NCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pdGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaXRlci5weQpAQCAtNTQsNiArNTQsMTQgQEAKICAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgaSk6CiAgICAgICAgIHJldHVybiBpCiAKK2NsYXNzIERlZmF1bHRJdGVyQ2xhc3M6CisgICAgcGFzcworCitjbGFzcyBOb0l0ZXJDbGFzczoKKyAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgaSk6CisgICAgICAgIHJldHVybiBpCisgICAgX19pdGVyX18gPSBOb25lCisKICMgTWFpbiB0ZXN0IHN1aXRlCiAKIGNsYXNzIFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTk5NSw2ICsxMDAzLDEwIEBACiAgICAgZGVmIHRlc3RfZnJlZV9hZnRlcl9pdGVyYXRpbmcoc2VsZik6CiAgICAgICAgIGNoZWNrX2ZyZWVfYWZ0ZXJfaXRlcmF0aW5nKHNlbGYsIGl0ZXIsIFNlcXVlbmNlQ2xhc3MsICgwLCkpCiAKKyAgICBkZWYgdGVzdF9lcnJvcl9pdGVyKHNlbGYpOgorICAgICAgICBmb3IgdHlwIGluIChEZWZhdWx0SXRlckNsYXNzLCBOb0l0ZXJDbGFzcyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGl0ZXIsIHR5cCgpKQorCiAKIGRlZiB0ZXN0X21haW4oKToKICAgICBydW5fdW5pdHRlc3QoVGVzdENhc2UpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2l0ZXJsZW4ucHkgYi9MaWIvdGVzdC90ZXN0X2l0ZXJsZW4ucHkKaW5kZXggMTUyZjVmYy4uNDFjOTc1MiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pdGVybGVuLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaXRlcmxlbi5weQpAQCAtNDIsNyArNDIsNiBAQAogIiIiCiAKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIGl0ZXJ0b29scyBpbXBvcnQgcmVwZWF0CiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZQogZnJvbSBvcGVyYXRvciBpbXBvcnQgbGVuZ3RoX2hpbnQKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaXRlcnRvb2xzLnB5IGIvTGliL3Rlc3QvdGVzdF9pdGVydG9vbHMucHkKaW5kZXggZTA1NDMwMy4uZWExZjU3YyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pdGVydG9vbHMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pdGVydG9vbHMucHkKQEAgLTQsNyArNCw2IEBACiBpbXBvcnQgd2Vha3JlZgogZnJvbSBkZWNpbWFsIGltcG9ydCBEZWNpbWFsCiBmcm9tIGZyYWN0aW9ucyBpbXBvcnQgRnJhY3Rpb24KLWltcG9ydCBzeXMKIGltcG9ydCBvcGVyYXRvcgogaW1wb3J0IHJhbmRvbQogaW1wb3J0IGNvcHkKQEAgLTY0NCwyNCArNjQzLDU4IEBACiAgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgogICAgICAgICAgICAgc2VsZi5waWNrbGV0ZXN0KHByb3RvLCBjeWNsZSgnYWJjJykpCiAKKyAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CisgICAgICAgICAgICAjIHRlc3Qgd2l0aCBwYXJ0aWFsIGNvbnN1bWVkIGlucHV0IGl0ZXJhYmxlCisgICAgICAgICAgICBpdCA9IGl0ZXIoJ2FiY2RlJykKKyAgICAgICAgICAgIGMgPSBjeWNsZShpdCkKKyAgICAgICAgICAgIF8gPSBbbmV4dChjKSBmb3IgaSBpbiByYW5nZSgyKV0gICAgICAjIGNvbnN1bWUgMiBvZiA1IGlucHV0cworICAgICAgICAgICAgcCA9IHBpY2tsZS5kdW1wcyhjLCBwcm90bykKKyAgICAgICAgICAgIGQgPSBwaWNrbGUubG9hZHMocCkgICAgICAgICAgICAgICAgICAjIHJlYnVpbGQgdGhlIGN5Y2xlIG9iamVjdAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0YWtlKDIwLCBkKSwgbGlzdCgnY2RlYWJjZGVhYmNkZWFiY2RlYWInKSkKKworICAgICAgICAgICAgIyB0ZXN0IHdpdGggY29tcGxldGVseSBjb25zdW1lZCBpbnB1dCBpdGVyYWJsZQorICAgICAgICAgICAgaXQgPSBpdGVyKCdhYmNkZScpCisgICAgICAgICAgICBjID0gY3ljbGUoaXQpCisgICAgICAgICAgICBfID0gW25leHQoYykgZm9yIGkgaW4gcmFuZ2UoNyldICAgICAgIyBjb25zdW1lIDcgb2YgNSBpbnB1dHMKKyAgICAgICAgICAgIHAgPSBwaWNrbGUuZHVtcHMoYywgcHJvdG8pCisgICAgICAgICAgICBkID0gcGlja2xlLmxvYWRzKHApICAgICAgICAgICAgICAgICAgIyByZWJ1aWxkIHRoZSBjeWNsZSBvYmplY3QKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGFrZSgyMCwgZCksIGxpc3QoJ2NkZWFiY2RlYWJjZGVhYmNkZWFiJykpCisKICAgICBkZWYgdGVzdF9jeWNsZV9zZXRzdGF0ZShzZWxmKToKKyAgICAgICAgIyBWZXJpZnkgYm90aCBtb2RlcyBmb3IgcmVzdG9yaW5nIHN0YXRlCisKKyAgICAgICAgIyBNb2RlIDAgaXMgZWZmaWNpZW50LiAgSXQgdXNlcyBhbiBpbmNvbXBsZXRlbHkgY29uc3VtZWQgaW5wdXQKKyAgICAgICAgIyBpdGVyYXRvciB0byBidWlsZCBhIGN5Y2xlIG9iamVjdCBhbmQgdGhlbiBwYXNzZXMgaW4gc3RhdGUgd2l0aAorICAgICAgICAjIGEgbGlzdCBvZiBwcmV2aW91c2x5IGNvbnN1bWVkIHZhbHVlcy4gIFRoZXJlIGlzIG5vIGRhdGEKKyAgICAgICAgIyBvdmVybGFwIGJldHdlZW4gdGhlIHR3by4KKyAgICAgICAgYyA9IGN5Y2xlKCdkZWZnJykKKyAgICAgICAgYy5fX3NldHN0YXRlX18oKGxpc3QoJ2FiYycpLCAwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0YWtlKDIwLCBjKSwgbGlzdCgnZGVmZ2FiY2RlZmdhYmNkZWZnYWInKSkKKworICAgICAgICAjIE1vZGUgMSBpcyBpbmVmZmljaWVudC4gIEl0IHN0YXJ0cyB3aXRoIGEgY3ljbGUgb2JqZWN0IGJ1aWx0CisgICAgICAgICMgZnJvbSBhbiBpdGVyYXRvciBvdmVyIHRoZSByZW1haW5pbmcgZWxlbWVudHMgaW4gYSBwYXJ0aWFsCisgICAgICAgICMgY3ljbGUgYW5kIHRoZW4gcGFzc2VzIGluIHN0YXRlIHdpdGggYWxsIG9mIHRoZSBwcmV2aW91c2x5CisgICAgICAgICMgc2VlbiB2YWx1ZXMgKHRoaXMgb3ZlcmxhcHMgdmFsdWVzIGluY2x1ZGVkIGluIHRoZSBpdGVyYXRvcikuCisgICAgICAgIGMgPSBjeWNsZSgnZGVmZycpCisgICAgICAgIGMuX19zZXRzdGF0ZV9fKChsaXN0KCdhYmNkZWZnJyksIDEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRha2UoMjAsIGMpLCBsaXN0KCdkZWZnYWJjZGVmZ2FiY2RlZmdhYicpKQorCisgICAgICAgICMgVGhlIGZpcnN0IGFyZ3VtZW50IHRvIHNldHN0YXRlIG5lZWRzIHRvIGJlIGEgdHVwbGUKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgY3ljbGUoJ2RlZmcnKS5fX3NldHN0YXRlX18oW2xpc3QoJ2FiY2RlZmcnKSwgMF0pCisKKyAgICAgICAgIyBUaGUgZmlyc3QgYXJndW1lbnQgaW4gdGhlIHNldHN0YXRlIHR1cGxlIG11c3QgYmUgYSBsaXN0CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGMgPSBjeWNsZSgnZGVmZycpCisgICAgICAgICAgICBjLl9fc2V0c3RhdGVfXygodHVwbGUoJ2RlZmcnKSwgMCkpCisgICAgICAgIHRha2UoMjAsIGMpCisKKyAgICAgICAgIyBUaGUgc2Vjb25kIGFyZ3VtZW50IGluIHRoZSBzZXRzdGF0ZSB0dXBsZSBtdXN0IGJlIGFuIGludAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjeWNsZSgnZGVmZycpLl9fc2V0c3RhdGVfXygobGlzdCgnYWJjZGVmZycpLCAneCcpKQorCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY3ljbGUoJycpLl9fc2V0c3RhdGVfXywgKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY3ljbGUoJycpLl9fc2V0c3RhdGVfXywgW10pCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY3ljbGUoJycpLl9fc2V0c3RhdGVfXywgMCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjeWNsZSgnJykuX19zZXRzdGF0ZV9fLCAoW10sKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjeWNsZSgnJykuX19zZXRzdGF0ZV9fLCAoKCksIDApKQotICAgICAgICBpdCA9IGN5Y2xlKCdhYmMnKQotICAgICAgICBpdC5fX3NldHN0YXRlX18oKFsnZGUnLCAnZmcnXSwgMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpc2xpY2UoaXQsIDE1KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgWydhJywgJ2InLCAnYycsICdkZScsICdmZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdhJywgJ2InLCAnYycsICdkZScsICdmZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdhJywgJ2InLCAnYycsICdkZScsICdmZyddKQotICAgICAgICBpdCA9IGN5Y2xlKCdhYmMnKQotICAgICAgICBpdC5fX3NldHN0YXRlX18oKFsnZGUnLCAnZmcnXSwgMSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpc2xpY2UoaXQsIDE1KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgWydhJywgJ2InLCAnYycsICdkZScsICdmZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdkZScsICdmZycsICdkZScsICdmZycsICdkZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdmZycsICdkZScsICdmZycsICdkZScsICdmZyddKQogCiAgICAgZGVmIHRlc3RfZ3JvdXBieShzZWxmKToKICAgICAgICAgIyBDaGVjayB3aGV0aGVyIGl0IGFjY2VwdHMgYXJndW1lbnRzIGNvcnJlY3RseQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9qc29uL19faW5pdF9fLnB5IGIvTGliL3Rlc3QvdGVzdF9qc29uL19faW5pdF9fLnB5CmluZGV4IDA4MDdlNmYuLmJhYzM3MGQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfanNvbi9fX2luaXRfXy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2pzb24vX19pbml0X18ucHkKQEAgLTEsNSArMSw0IEBACiBpbXBvcnQgb3MKLWltcG9ydCBzeXMKIGltcG9ydCBqc29uCiBpbXBvcnQgZG9jdGVzdAogaW1wb3J0IHVuaXR0ZXN0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9kZWNvZGUucHkgYi9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9kZWNvZGUucHkKaW5kZXggZmRhZmViNi4uN2U1NjhiZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfZGVjb2RlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X2RlY29kZS5weQpAQCAtNzIsMTAgKzcyLDggQEAKIAogICAgIGRlZiB0ZXN0X2ludmFsaWRfaW5wdXRfdHlwZShzZWxmKToKICAgICAgICAgbXNnID0gJ3RoZSBKU09OIG9iamVjdCBtdXN0IGJlIHN0cicKLSAgICAgICAgZm9yIHZhbHVlIGluIFsxLCAzLjE0LCBiJ2J5dGVzJywgYidceGZmXHgwMCcsIFtdLCB7fSwgTm9uZV06CisgICAgICAgIGZvciB2YWx1ZSBpbiBbMSwgMy4xNCwgW10sIHt9LCBOb25lXToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBtc2csIHNlbGYubG9hZHMsIHZhbHVlKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBtc2cpOgotICAgICAgICAgICAgc2VsZi5qc29uLmxvYWQoQnl0ZXNJTyhiJ1sxLDIsM10nKSkKIAogICAgIGRlZiB0ZXN0X3N0cmluZ193aXRoX3V0ZjhfYm9tKHNlbGYpOgogICAgICAgICAjIHNlZSAjMTg5NTgKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X2ZhaWwucHkgYi9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9mYWlsLnB5CmluZGV4IDk1ZmY1YjguLjc5MTA1MjEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X2ZhaWwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfZmFpbC5weQpAQCAtMSw1ICsxLDQgQEAKIGZyb20gdGVzdC50ZXN0X2pzb24gaW1wb3J0IFB5VGVzdCwgQ1Rlc3QKLWltcG9ydCByZQogCiAjIDIwMDctMTAtMDUKIEpTT05ET0NTID0gWwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfdW5pY29kZS5weSBiL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X3VuaWNvZGUucHkKaW5kZXggYzdjYzhhNy4uMmU4YmJhMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfdW5pY29kZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF91bmljb2RlLnB5CkBAIC0xLDMgKzEsNCBAQAoraW1wb3J0IGNvZGVjcwogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QKIGZyb20gdGVzdC50ZXN0X2pzb24gaW1wb3J0IFB5VGVzdCwgQ1Rlc3QKIApAQCAtNTIsOSArNTMsMzEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmR1bXBzLCBbYiJoaSJdKQogCiAgICAgZGVmIHRlc3RfYnl0ZXNfZGVjb2RlKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYubG9hZHMsIGInImhpIicpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5sb2FkcywgYidbImhpIl0nKQotCisgICAgICAgIGZvciBlbmNvZGluZywgYm9tIGluIFsKKyAgICAgICAgICAgICAgICAoJ3V0Zi04JywgY29kZWNzLkJPTV9VVEY4KSwKKyAgICAgICAgICAgICAgICAoJ3V0Zi0xNmJlJywgY29kZWNzLkJPTV9VVEYxNl9CRSksCisgICAgICAgICAgICAgICAgKCd1dGYtMTZsZScsIGNvZGVjcy5CT01fVVRGMTZfTEUpLAorICAgICAgICAgICAgICAgICgndXRmLTMyYmUnLCBjb2RlY3MuQk9NX1VURjMyX0JFKSwKKyAgICAgICAgICAgICAgICAoJ3V0Zi0zMmxlJywgY29kZWNzLkJPTV9VVEYzMl9MRSksCisgICAgICAgICAgICBdOgorICAgICAgICAgICAgZGF0YSA9IFsiYVx4YjVcdTIwYWNcVTAwMDFkMTIwIl0KKyAgICAgICAgICAgIGVuY29kZWQgPSBzZWxmLmR1bXBzKGRhdGEpLmVuY29kZShlbmNvZGluZykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5sb2Fkcyhib20gKyBlbmNvZGVkKSwgZGF0YSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5sb2FkcyhlbmNvZGVkKSwgZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZURlY29kZUVycm9yLCBzZWxmLmxvYWRzLCBiJ1siXHg4MCJdJykKKyAgICAgICAgIyBSRkMtNzE1OSBhbmQgRUNNQS00MDQgZXh0ZW5kIEpTT04gdG8gYWxsb3cgZG9jdW1lbnRzIHRoYXQKKyAgICAgICAgIyBjb25zaXN0IG9mIG9ubHkgYSBzdHJpbmcsIHdoaWNoIGNhbiBwcmVzZW50IGEgc3BlY2lhbCBjYXNlCisgICAgICAgICMgbm90IGNvdmVyZWQgYnkgdGhlIGVuY29kaW5nIGRldGVjdGlvbiBwYXR0ZXJucyBzcGVjaWZpZWQgaW4KKyAgICAgICAgIyBSRkMtNDYyNyBmb3IgdXRmLTE2LWxlIChYWCAwMCBYWCAwMCkuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5sb2FkcygnIlx1MjYwMCInLmVuY29kZSgndXRmLTE2LWxlJykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdcdTI2MDAnKQorICAgICAgICAjIEVuY29kaW5nIGRldGVjdGlvbiBmb3Igc21hbGwgKDw0KSBieXRlcyBvYmplY3RzCisgICAgICAgICMgaXMgaW1wbGVtZW50ZWQgYXMgYSBzcGVjaWFsIGNhc2UuIFJGQy03MTU5IGFuZCBFQ01BLTQwNAorICAgICAgICAjIGFsbG93IHNpbmdsZSBjb2RlcG9pbnQgSlNPTiBkb2N1bWVudHMgd2hpY2ggYXJlIG9ubHkgdHdvCisgICAgICAgICMgYnl0ZXMgaW4gdXRmLTE2IGVuY29kaW5ncyB3L28gQk9NLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubG9hZHMoYic1XHgwMCcpLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubG9hZHMoYidceDAwNycpLCA3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubG9hZHMoYic1NycpLCA1NykKIAogICAgIGRlZiB0ZXN0X29iamVjdF9wYWlyc19ob29rX3dpdGhfdW5pY29kZShzZWxmKToKICAgICAgICAgcyA9ICd7InhrZCI6MSwgImtjdyI6MiwgImFydCI6MywgImh4bSI6NCwgInFydCI6NSwgInBhZCI6NiwgImhveSI6N30nCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2txdWV1ZS5weSBiL0xpYi90ZXN0L3Rlc3Rfa3F1ZXVlLnB5CmluZGV4IGY4MjIwMjQuLjlmNDk4ODYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfa3F1ZXVlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfa3F1ZXVlLnB5CkBAIC01LDcgKzUsNiBAQAogaW1wb3J0IG9zCiBpbXBvcnQgc2VsZWN0CiBpbXBvcnQgc29ja2V0Ci1pbXBvcnQgc3lzCiBpbXBvcnQgdGltZQogaW1wb3J0IHVuaXR0ZXN0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbGluZWNhY2hlLnB5IGIvTGliL3Rlc3QvdGVzdF9saW5lY2FjaGUucHkKaW5kZXggNDdlMmVkZC4uMzc1ZDljNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9saW5lY2FjaGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9saW5lY2FjaGUucHkKQEAgLTMsNiArMyw4IEBACiBpbXBvcnQgbGluZWNhY2hlCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBvcy5wYXRoCitpbXBvcnQgdGVtcGZpbGUKK2ltcG9ydCB0b2tlbml6ZQogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIApAQCAtMTAsOCArMTIsNiBAQAogTk9ORVhJU1RFTlRfRklMRU5BTUUgPSBGSUxFTkFNRSArICcubWlzc2luZycKIElOVkFMSURfTkFNRSA9ICchQCQpKCFAI18xJwogRU1QVFkgPSAnJwotVEVTVFMgPSAnaW5zcGVjdF9mb2RkZXIgaW5zcGVjdF9mb2RkZXIyIG1hcHBpbmdfdGVzdHMnCi1URVNUUyA9IFRFU1RTLnNwbGl0KCkKIFRFU1RfUEFUSCA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKIE1PRFVMRVMgPSAibGluZWNhY2hlIGFiYyIuc3BsaXQoKQogTU9EVUxFX1BBVEggPSBvcy5wYXRoLmRpcm5hbWUoRklMRU5BTUUpCkBAIC0zNyw2ICszNyw2NSBAQAogICAgIHJldHVybiAzJycnICMgTm8gZW5kaW5nIG5ld2xpbmUKIAogCitjbGFzcyBUZW1wRmlsZToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc3VwZXIoKS5zZXRVcCgpCisgICAgICAgIHdpdGggdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlKGRlbGV0ZT1GYWxzZSkgYXMgZnA6CisgICAgICAgICAgICBzZWxmLmZpbGVfbmFtZSA9IGZwLm5hbWUKKyAgICAgICAgICAgIGZwLndyaXRlKHNlbGYuZmlsZV9ieXRlX3N0cmluZykKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBzZWxmLmZpbGVfbmFtZSkKKworCitjbGFzcyBHZXRMaW5lVGVzdHNHb29kRGF0YShUZW1wRmlsZSk6CisgICAgIyBmaWxlX2xpc3QgICA9IFsnbGlzdFxuJywgJ29mXG4nLCAnZ29vZFxuJywgJ3N0cmluZ3NcbiddCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuZmlsZV9ieXRlX3N0cmluZyA9ICcnLmpvaW4oc2VsZi5maWxlX2xpc3QpLmVuY29kZSgndXRmLTgnKQorICAgICAgICBzdXBlcigpLnNldFVwKCkKKworICAgIGRlZiB0ZXN0X2dldGxpbmUoc2VsZik6CisgICAgICAgIHdpdGggdG9rZW5pemUub3BlbihzZWxmLmZpbGVfbmFtZSkgYXMgZnA6CisgICAgICAgICAgICBmb3IgaW5kZXgsIGxpbmUgaW4gZW51bWVyYXRlKGZwKToKKyAgICAgICAgICAgICAgICBpZiBub3QgbGluZS5lbmRzd2l0aCgnXG4nKToKKyAgICAgICAgICAgICAgICAgICAgbGluZSArPSAnXG4nCisKKyAgICAgICAgICAgICAgICBjYWNoZWRfbGluZSA9IGxpbmVjYWNoZS5nZXRsaW5lKHNlbGYuZmlsZV9uYW1lLCBpbmRleCArIDEpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaW5lLCBjYWNoZWRfbGluZSkKKworICAgIGRlZiB0ZXN0X2dldGxpbmVzKHNlbGYpOgorICAgICAgICBsaW5lcyA9IGxpbmVjYWNoZS5nZXRsaW5lcyhzZWxmLmZpbGVfbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaW5lcywgc2VsZi5maWxlX2xpc3QpCisKKworY2xhc3MgR2V0TGluZVRlc3RzQmFkRGF0YShUZW1wRmlsZSk6CisgICAgIyBmaWxlX2J5dGVfc3RyaW5nID0gYidCYWQgZGF0YSBnb2VzIGhlcmUnCisKKyAgICBkZWYgdGVzdF9nZXRsaW5lKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygoU3ludGF4RXJyb3IsIFVuaWNvZGVEZWNvZGVFcnJvciksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVjYWNoZS5nZXRsaW5lLCBzZWxmLmZpbGVfbmFtZSwgMSkKKworICAgIGRlZiB0ZXN0X2dldGxpbmVzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygoU3ludGF4RXJyb3IsIFVuaWNvZGVEZWNvZGVFcnJvciksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVjYWNoZS5nZXRsaW5lcywgc2VsZi5maWxlX25hbWUpCisKKworY2xhc3MgRW1wdHlGaWxlKEdldExpbmVUZXN0c0dvb2REYXRhLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZmlsZV9saXN0ID0gW10KKworCitjbGFzcyBTaW5nbGVFbXB0eUxpbmUoR2V0TGluZVRlc3RzR29vZERhdGEsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBmaWxlX2xpc3QgPSBbJ1xuJ10KKworCitjbGFzcyBHb29kVW5pY29kZShHZXRMaW5lVGVzdHNHb29kRGF0YSwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGZpbGVfbGlzdCA9IFsnw6FcbicsICdiXG4nLCAnYWJjZGVmXG4nLCAnw6HDocOhw6HDoVxuJ10KKworCitjbGFzcyBCYWRVbmljb2RlKEdldExpbmVUZXN0c0JhZERhdGEsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBmaWxlX2J5dGVfc3RyaW5nID0gYidceDgwYWJjJworCisKIGNsYXNzIExpbmVDYWNoZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2dldGxpbmUoc2VsZik6CkBAIC01MywxMyArMTEyLDYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRsaW5lKEVNUFRZLCAxKSwgRU1QVFkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0bGluZShJTlZBTElEX05BTUUsIDEpLCBFTVBUWSkKIAotICAgICAgICAjIENoZWNrIHdoZXRoZXIgbGluZXMgY29ycmVzcG9uZCB0byB0aG9zZSBmcm9tIGZpbGUgaXRlcmF0aW9uCi0gICAgICAgIGZvciBlbnRyeSBpbiBURVNUUzoKLSAgICAgICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKFRFU1RfUEFUSCwgZW50cnkpICsgJy5weScKLSAgICAgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSkgYXMgZmlsZToKLSAgICAgICAgICAgICAgICBmb3IgaW5kZXgsIGxpbmUgaW4gZW51bWVyYXRlKGZpbGUpOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpbmUsIGdldGxpbmUoZmlsZW5hbWUsIGluZGV4ICsgMSkpCi0KICAgICAgICAgIyBDaGVjayBtb2R1bGUgbG9hZGluZwogICAgICAgICBmb3IgZW50cnkgaW4gTU9EVUxFUzoKICAgICAgICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKE1PRFVMRV9QQVRILCBlbnRyeSkgKyAnLnB5JwpAQCAtODAsMTIgKzEzMiwxMyBAQAogCiAgICAgZGVmIHRlc3RfY2xlYXJjYWNoZShzZWxmKToKICAgICAgICAgY2FjaGVkID0gW10KLSAgICAgICAgZm9yIGVudHJ5IGluIFRFU1RTOgotICAgICAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4oVEVTVF9QQVRILCBlbnRyeSkgKyAnLnB5JworICAgICAgICBmb3IgZW50cnkgaW4gTU9EVUxFUzoKKyAgICAgICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKE1PRFVMRV9QQVRILCBlbnRyeSkgKyAnLnB5JwogICAgICAgICAgICAgY2FjaGVkLmFwcGVuZChmaWxlbmFtZSkKICAgICAgICAgICAgIGxpbmVjYWNoZS5nZXRsaW5lKGZpbGVuYW1lLCAxKQogCiAgICAgICAgICMgQXJlIGFsbCBmaWxlcyBjYWNoZWQ/CisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoY2FjaGVkLCBbXSkKICAgICAgICAgY2FjaGVkX2VtcHR5ID0gW2ZuIGZvciBmbiBpbiBjYWNoZWQgaWYgZm4gbm90IGluIGxpbmVjYWNoZS5jYWNoZV0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYWNoZWRfZW1wdHksIFtdKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2xpc3QucHkgYi9MaWIvdGVzdC90ZXN0X2xpc3QucHkKaW5kZXggOGY4MmFiNS4uYWVlNjJkYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9saXN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbGlzdC5weQpAQCAtMSw1ICsxLDUgQEAKIGltcG9ydCBzeXMKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCwgbGlzdF90ZXN0cworZnJvbSB0ZXN0IGltcG9ydCBsaXN0X3Rlc3RzCiBpbXBvcnQgcGlja2xlCiBpbXBvcnQgdW5pdHRlc3QKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9sb2NhbGUucHkgYi9MaWIvdGVzdC90ZXN0X2xvY2FsZS5weQppbmRleCBmYWUyYzNkLi45OWZhYjU4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2xvY2FsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2xvY2FsZS5weQpAQCAtMSw0ICsxLDQgQEAKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCB2ZXJib3NlCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgdmVyYm9zZSwgaXNfYW5kcm9pZAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgbG9jYWxlCiBpbXBvcnQgc3lzCkBAIC0zNTMsNyArMzUzLDcgQEAKICAgICAgICAgZW5jID0gY29kZWNzLmxvb2t1cChsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoRmFsc2UpIG9yICdhc2NpaScpLm5hbWUKICAgICAgICAgaWYgZW5jIG5vdCBpbiAoJ3V0Zi04JywgJ2lzbzg4NTktMScsICdjcDEyNTInKToKICAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCdlbmNvZGluZyBub3Qgc3VpdGFibGUnKQotICAgICAgICBpZiBlbmMgIT0gJ2lzbzg4NTktMScgYW5kIChzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbicgb3IKKyAgICAgICAgaWYgZW5jICE9ICdpc284ODU5LTEnIGFuZCAoc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nIG9yIGlzX2FuZHJvaWQgb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2ZyZWVic2QnKSk6CiAgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgnd2NzY29sbC93Y3N4ZnJtIGhhdmUga25vd24gYnVncycpCiAgICAgICAgIEJhc2VMb2NhbGl6ZWRUZXN0LnNldFVwKHNlbGYpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2xvZ2dpbmcucHkgYi9MaWIvdGVzdC90ZXN0X2xvZ2dpbmcucHkKaW5kZXggMGU3MGNjZC4uMDhjZGQ3ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9sb2dnaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbG9nZ2luZy5weQpAQCAtMjYsNiArMjYsNyBAQAogaW1wb3J0IGNvZGVjcwogaW1wb3J0IGNvbmZpZ3BhcnNlcgogaW1wb3J0IGRhdGV0aW1lCitpbXBvcnQgcGF0aGxpYgogaW1wb3J0IHBpY2tsZQogaW1wb3J0IGlvCiBpbXBvcnQgZ2MKQEAgLTMwOCw2ICszMDksMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2dnaW5nLmdldExldmVsTmFtZSgnSU5GTycpLCBsb2dnaW5nLklORk8pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9nZ2luZy5nZXRMZXZlbE5hbWUobG9nZ2luZy5JTkZPKSwgJ0lORk8nKQogCisgICAgZGVmIHRlc3RfaXNzdWUyNzkzNShzZWxmKToKKyAgICAgICAgZmF0YWwgPSBsb2dnaW5nLmdldExldmVsTmFtZSgnRkFUQUwnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZhdGFsLCBsb2dnaW5nLkZBVEFMKQorCiBjbGFzcyBCYXNpY0ZpbHRlclRlc3QoQmFzZVRlc3QpOgogCiAgICAgIiIiVGVzdCB0aGUgYnVuZGxlZCBGaWx0ZXIgY2xhc3MuIiIiCkBAIC01NzUsNiArNTgwLDI5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaC5zaG91bGRGbHVzaChyKSkKICAgICAgICAgaC5jbG9zZSgpCiAKKyAgICBkZWYgdGVzdF9wYXRoX29iamVjdHMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoYXQgUGF0aCBvYmplY3RzIGFyZSBhY2NlcHRlZCBhcyBmaWxlbmFtZSBhcmd1bWVudHMgdG8gaGFuZGxlcnMuCisKKyAgICAgICAgU2VlIElzc3VlICMyNzQ5My4KKyAgICAgICAgIiIiCisgICAgICAgIGZkLCBmbiA9IHRlbXBmaWxlLm1rc3RlbXAoKQorICAgICAgICBvcy5jbG9zZShmZCkKKyAgICAgICAgb3MudW5saW5rKGZuKQorICAgICAgICBwZm4gPSBwYXRobGliLlBhdGgoZm4pCisgICAgICAgIGNhc2VzID0gKAorICAgICAgICAgICAgICAgICAgICAobG9nZ2luZy5GaWxlSGFuZGxlciwgKHBmbiwgJ3cnKSksCisgICAgICAgICAgICAgICAgICAgIChsb2dnaW5nLmhhbmRsZXJzLlJvdGF0aW5nRmlsZUhhbmRsZXIsIChwZm4sICdhJykpLAorICAgICAgICAgICAgICAgICAgICAobG9nZ2luZy5oYW5kbGVycy5UaW1lZFJvdGF0aW5nRmlsZUhhbmRsZXIsIChwZm4sICdoJykpLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtIGluICgnbGludXgnLCAnZGFyd2luJyk6CisgICAgICAgICAgICBjYXNlcyArPSAoKGxvZ2dpbmcuaGFuZGxlcnMuV2F0Y2hlZEZpbGVIYW5kbGVyLCAocGZuLCAndycpKSwpCisgICAgICAgIGZvciBjbHMsIGFyZ3MgaW4gY2FzZXM6CisgICAgICAgICAgICBoID0gY2xzKCphcmdzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGZuKSkKKyAgICAgICAgICAgIGguY2xvc2UoKQorICAgICAgICAgICAgb3MudW5saW5rKGZuKQorCiAgICAgQHVuaXR0ZXN0LnNraXBJZihvcy5uYW1lID09ICdudCcsICdXYXRjaGVkRmlsZUhhbmRsZXIgbm90IGFwcHJvcHJpYXRlIGZvciBXaW5kb3dzLicpCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKICAgICBkZWYgdGVzdF9yYWNlKHNlbGYpOgpAQCAtOTU4LDcgKzk4Niw3IEBACiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBCYXNlVGVzdC5zZXRVcChzZWxmKQogICAgICAgICBzZWxmLm1lbV9oZGxyID0gbG9nZ2luZy5oYW5kbGVycy5NZW1vcnlIYW5kbGVyKDEwLCBsb2dnaW5nLldBUk5JTkcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucm9vdF9oZGxyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucm9vdF9oZGxyKQogICAgICAgICBzZWxmLm1lbV9sb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcignbWVtJykKICAgICAgICAgc2VsZi5tZW1fbG9nZ2VyLnByb3BhZ2F0ZSA9IDAKICAgICAgICAgc2VsZi5tZW1fbG9nZ2VyLmFkZEhhbmRsZXIoc2VsZi5tZW1faGRscikKQEAgLTk5NSw2ICsxMDIzLDM2IEBACiAgICAgICAgIHNlbGYubWVtX2xvZ2dlci5kZWJ1ZyhzZWxmLm5leHRfbWVzc2FnZSgpKQogICAgICAgICBzZWxmLmFzc2VydF9sb2dfbGluZXMobGluZXMpCiAKKyAgICBkZWYgdGVzdF9mbHVzaF9vbl9jbG9zZShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhhdCB0aGUgZmx1c2gtb24tY2xvc2UgY29uZmlndXJhdGlvbiB3b3JrcyBhcyBleHBlY3RlZC4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYubWVtX2xvZ2dlci5kZWJ1ZyhzZWxmLm5leHRfbWVzc2FnZSgpKQorICAgICAgICBzZWxmLmFzc2VydF9sb2dfbGluZXMoW10pCisgICAgICAgIHNlbGYubWVtX2xvZ2dlci5pbmZvKHNlbGYubmV4dF9tZXNzYWdlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xvZ19saW5lcyhbXSkKKyAgICAgICAgc2VsZi5tZW1fbG9nZ2VyLnJlbW92ZUhhbmRsZXIoc2VsZi5tZW1faGRscikKKyAgICAgICAgIyBEZWZhdWx0IGJlaGF2aW91ciBpcyB0byBmbHVzaCBvbiBjbG9zZS4gQ2hlY2sgdGhhdCBpdCBoYXBwZW5zLgorICAgICAgICBzZWxmLm1lbV9oZGxyLmNsb3NlKCkKKyAgICAgICAgbGluZXMgPSBbCisgICAgICAgICAgICAoJ0RFQlVHJywgJzEnKSwKKyAgICAgICAgICAgICgnSU5GTycsICcyJyksCisgICAgICAgIF0KKyAgICAgICAgc2VsZi5hc3NlcnRfbG9nX2xpbmVzKGxpbmVzKQorICAgICAgICAjIE5vdyBjb25maWd1cmUgZm9yIGZsdXNoaW5nIG5vdCB0byBiZSBkb25lIG9uIGNsb3NlLgorICAgICAgICBzZWxmLm1lbV9oZGxyID0gbG9nZ2luZy5oYW5kbGVycy5NZW1vcnlIYW5kbGVyKDEwLCBsb2dnaW5nLldBUk5JTkcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yb290X2hkbHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmFsc2UpCisgICAgICAgIHNlbGYubWVtX2xvZ2dlci5hZGRIYW5kbGVyKHNlbGYubWVtX2hkbHIpCisgICAgICAgIHNlbGYubWVtX2xvZ2dlci5kZWJ1ZyhzZWxmLm5leHRfbWVzc2FnZSgpKQorICAgICAgICBzZWxmLmFzc2VydF9sb2dfbGluZXMobGluZXMpICAjIG5vIGNoYW5nZQorICAgICAgICBzZWxmLm1lbV9sb2dnZXIuaW5mbyhzZWxmLm5leHRfbWVzc2FnZSgpKQorICAgICAgICBzZWxmLmFzc2VydF9sb2dfbGluZXMobGluZXMpICAjIG5vIGNoYW5nZQorICAgICAgICBzZWxmLm1lbV9sb2dnZXIucmVtb3ZlSGFuZGxlcihzZWxmLm1lbV9oZGxyKQorICAgICAgICBzZWxmLm1lbV9oZGxyLmNsb3NlKCkKKyAgICAgICAgIyBhc3NlcnQgdGhhdCBubyBuZXcgbGluZXMgaGF2ZSBiZWVuIGFkZGVkCisgICAgICAgIHNlbGYuYXNzZXJ0X2xvZ19saW5lcyhsaW5lcykgICMgbm8gY2hhbmdlCisKIAogY2xhc3MgRXhjZXB0aW9uRm9ybWF0dGVyKGxvZ2dpbmcuRm9ybWF0dGVyKToKICAgICAiIiJBIHNwZWNpYWwgZXhjZXB0aW9uIGZvcm1hdHRlci4iIiIKQEAgLTQyNDEsNiArNDI5OSwxNyBAQAogICAgICAgICBtc2cgPSAnUmVjb3JkIG5vdCBmb3VuZCBpbiBldmVudCBsb2csIHdlbnQgYmFjayAlZCByZWNvcmRzJyAlIEdPX0JBQ0sKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZvdW5kLCBtc2c9bXNnKQogCisKK2NsYXNzIE1pc2NUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICBibGFja2xpc3QgPSB7J2xvZ1RocmVhZHMnLCAnbG9nTXVsdGlwcm9jZXNzaW5nJywKKyAgICAgICAgICAgICAgICAgICAgICdsb2dQcm9jZXNzZXMnLCAnY3VycmVudGZyYW1lJywKKyAgICAgICAgICAgICAgICAgICAgICdQZXJjZW50U3R5bGUnLCAnU3RyRm9ybWF0U3R5bGUnLCAnU3RyaW5nVGVtcGxhdGVTdHlsZScsCisgICAgICAgICAgICAgICAgICAgICAnRmlsdGVyZXInLCAnUGxhY2VIb2xkZXInLCAnTWFuYWdlcicsICdSb290TG9nZ2VyJywKKyAgICAgICAgICAgICAgICAgICAgICdyb290JywgJ3RocmVhZGluZyd9CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIGxvZ2dpbmcsIGJsYWNrbGlzdD1ibGFja2xpc3QpCisKKwogIyBTZXQgdGhlIGxvY2FsZSB0byB0aGUgcGxhdGZvcm0tZGVwZW5kZW50IGRlZmF1bHQuICBJIGhhdmUgbm8gaWRlYQogIyB3aHkgdGhlIHRlc3QgZG9lcyB0aGlzLCBidXQgaW4gYW55IGNhc2Ugd2Ugc2F2ZSB0aGUgY3VycmVudCBsb2NhbGUKICMgZmlyc3QgYW5kIHJlc3RvcmUgaXQgYXQgdGhlIGVuZC4KQEAgLTQyNTgsNiArNDMyNyw3IEBACiAgICAgICAgIEV4Y2VwdGlvblRlc3QsIFN5c0xvZ0hhbmRsZXJUZXN0LCBIVFRQSGFuZGxlclRlc3QsCiAgICAgICAgIE5URXZlbnRMb2dIYW5kbGVyVGVzdCwgVGltZWRSb3RhdGluZ0ZpbGVIYW5kbGVyVGVzdCwKICAgICAgICAgVW5peFNvY2tldEhhbmRsZXJUZXN0LCBVbml4RGF0YWdyYW1IYW5kbGVyVGVzdCwgVW5peFN5c0xvZ0hhbmRsZXJUZXN0LAorICAgICAgICBNaXNjVGVzdENhc2UKICAgICBdCiAgICAgaWYgaGFzYXR0cihsb2dnaW5nLmhhbmRsZXJzLCAnUXVldWVMaXN0ZW5lcicpOgogICAgICAgICB0ZXN0cy5hcHBlbmQoUXVldWVMaXN0ZW5lclRlc3QpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2xvbmcucHkgYi9MaWIvdGVzdC90ZXN0X2xvbmcucHkKaW5kZXggNGIyZDgxYy4uZmQxNWYwNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9sb25nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbG9uZy5weQpAQCAtNjIxLDYgKzYyMSw4IEBACiAgICAgZGVmIHRlc3RfX2Zvcm1hdF9fKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxMjM0NTY3ODksICdkJyksICcxMjM0NTY3ODknKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxMjM0NTY3ODksICdkJyksICcxMjM0NTY3ODknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxMjM0NTY3ODksICcsJyksICcxMjMsNDU2LDc4OScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDEyMzQ1Njc4OSwgJ18nKSwgJzEyM180NTZfNzg5JykKIAogICAgICAgICAjIHNpZ24gYW5kIGFsaWduaW5nIGFyZSBpbnRlcmRlcGVuZGVudAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxLCAiLSIpLCAnMScpCkBAIC02NDksOCArNjUxLDI1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KGludCgnYmUnLCAxNiksICJYIiksICJCRSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KC1pbnQoJ2JlJywgMTYpLCAieCIpLCAiLWJlIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoLWludCgnYmUnLCAxNiksICJYIiksICItQkUiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmb3JtYXQsIDEyMzQ1Njc4OTAsICcseCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDEyMzQ1Njc4OTAsICdfeCcpLCAnNDk5Nl8wMmQyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMTIzNDU2Nzg5MCwgJ19YJyksICc0OTk2XzAyRDInKQogCiAgICAgICAgICMgb2N0YWwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMywgIm8iKSwgIjMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgtMywgIm8iKSwgIi0zIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMTIzNCwgIm8iKSwgIjIzMjIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgtMTIzNCwgIm8iKSwgIi0yMzIyIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMTIzNCwgIi1vIiksICIyMzIyIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoLTEyMzQsICItbyIpLCAiLTIzMjIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxMjM0LCAiIG8iKSwgIiAyMzIyIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoLTEyMzQsICIgbyIpLCAiLTIzMjIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxMjM0LCAiK28iKSwgIisyMzIyIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoLTEyMzQsICIrbyIpLCAiLTIzMjIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmb3JtYXQsIDEyMzQ1Njc4OTAsICcsbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDEyMzQ1Njc4OTAsICdfbycpLCAnMTExXzQ1NDBfMTMyMicpCisKKyAgICAgICAgIyBiaW5hcnkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMywgImIiKSwgIjExIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoLTMsICJiIiksICItMTEiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxMjM0LCAiYiIpLCAiMTAwMTEwMTAwMTAiKQpAQCAtNjYxLDEyICs2ODAsMjEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoLTEyMzQsICIgYiIpLCAiLTEwMDExMDEwMDEwIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMTIzNCwgIitiIiksICIrMTAwMTEwMTAwMTAiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgtMTIzNCwgIitiIiksICItMTAwMTEwMTAwMTAiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmb3JtYXQsIDEyMzQ1Njc4OTAsICcsYicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDEyMzQ1LCAnX2InKSwgJzExXzAwMDBfMDAxMV8xMDAxJykKIAogICAgICAgICAjIG1ha2Ugc3VyZSB0aGVzZSBhcmUgZXJyb3JzCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZvcm1hdCwgMywgIjEuMyIpICAjIHByZWNpc2lvbiBkaXNhbGxvd2VkCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZvcm1hdCwgMywgIl9jIikgICAjIHVuZGVyc2NvcmUsCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZvcm1hdCwgMywgIixjIikgICAjIGNvbW1hLCBhbmQKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZm9ybWF0LCAzLCAiK2MiKSAgICMgc2lnbiBub3QgYWxsb3dlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB3aXRoICdjJwogCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgJ0Nhbm5vdCBzcGVjaWZ5IGJvdGgnLCBmb3JtYXQsIDMsICdfLCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgJ0Nhbm5vdCBzcGVjaWZ5IGJvdGgnLCBmb3JtYXQsIDMsICcsXycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgJ0Nhbm5vdCBzcGVjaWZ5IGJvdGgnLCBmb3JtYXQsIDMsICdfLGQnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICdDYW5ub3Qgc3BlY2lmeSBib3RoJywgZm9ybWF0LCAzLCAnLF9kJykKKwogICAgICAgICAjIGVuc3VyZSB0aGF0IG9ubHkgaW50IGFuZCBmbG9hdCB0eXBlIHNwZWNpZmllcnMgd29yawogICAgICAgICBmb3IgZm9ybWF0X3NwZWMgaW4gKFtjaHIoeCkgZm9yIHggaW4gcmFuZ2Uob3JkKCdhJyksIG9yZCgneicpKzEpXSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Nocih4KSBmb3IgeCBpbiByYW5nZShvcmQoJ0EnKSwgb3JkKCdaJykrMSldKToKQEAgLTY4OSw2ICs3MTcsMjAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgaW50LCBmbG9hdCgnLWluZicpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpbnQsIGZsb2F0KCduYW4nKSkKIAorICAgIGRlZiB0ZXN0X21vZF9kaXZpc2lvbihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcik6CisgICAgICAgICAgICBfID0gMSAlIDAKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEzICUgMTAsIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLTEzICUgMTAsIDcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTMgJSAtMTAsIC03KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0xMyAlIC0xMCwgLTMpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxMiAlIDQsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLTEyICUgNCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxMiAlIC00LCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0xMiAlIC00LCAwKQorCiAgICAgZGVmIHRlc3RfdHJ1ZV9kaXZpc2lvbihzZWxmKToKICAgICAgICAgaHVnZSA9IDEgPDwgNDAwMDAKICAgICAgICAgbWh1Z2UgPSAtaHVnZQpAQCAtNzIzLDYgKzc2NSwyNSBAQAogICAgICAgICBmb3IgemVybyBpbiBbImh1Z2UgLyAwIiwgIm1odWdlIC8gMCJdOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IsIGV2YWwsIHplcm8sIG5hbWVzcGFjZSkKIAorICAgIGRlZiB0ZXN0X2Zsb29yZGl2KHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yKToKKyAgICAgICAgICAgIF8gPSAxIC8vIDAKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIgLy8gMywgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyIC8vIC0zLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMiAvLyAzLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMiAvLyAtMywgMCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0xMSAvLyAtMywgMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMTEgLy8gMywgLTQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTEgLy8gLTMsIC00KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDExIC8vIDMsIDMpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMTIgLy8gLTMsIDQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLTEyIC8vIDMsIC00KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEyIC8vIC0zLCAtNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxMiAvLyAzLCA0KQorCiAgICAgZGVmIGNoZWNrX3RydWVkaXYoc2VsZiwgYSwgYiwgc2tpcF9zbWFsbD1UcnVlKToKICAgICAgICAgIiIiVmVyaWZ5IHRoYXQgdGhlIHJlc3VsdCBvZiBhL2IgaXMgY29ycmVjdGx5IHJvdW5kZWQsIGJ5CiAgICAgICAgIGNvbXBhcmluZyBpdCB3aXRoIGEgcHVyZSBQeXRob24gaW1wbGVtZW50YXRpb24gb2YgY29ycmVjdGx5CkBAIC04NDUsNiArOTA2LDIxIEBACiAgICAgICAgICAgICBzZWxmLmNoZWNrX3RydWVkaXYoLXgsIHkpCiAgICAgICAgICAgICBzZWxmLmNoZWNrX3RydWVkaXYoLXgsIC15KQogCisgICAgZGVmIHRlc3RfbHNoaWZ0X29mX3plcm8oc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCA8PCAwLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAgPDwgMTAsIDApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICAwIDw8IC0xCisKKyAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9odWdlX2xzaGlmdF9vZl96ZXJvKHNlbGYpOgorICAgICAgICAjIFNob3VsZG4ndCB0cnkgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciBhIGh1Z2Ugc2hpZnQuIFNlZSBpc3N1ZSAjMjc4NzAuCisgICAgICAgICMgT3RoZXIgaW1wbGVtZW50YXRpb25zIG1heSBoYXZlIGEgZGlmZmVyZW50IGJvdW5kYXJ5IGZvciBvdmVyZmxvdywKKyAgICAgICAgIyBvciBub3QgcmFpc2UgYXQgYWxsLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAgPDwgc3lzLm1heHNpemUsIDApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvcik6CisgICAgICAgICAgICAwIDw8IChzeXMubWF4c2l6ZSArIDEpCisKICAgICBkZWYgdGVzdF9zbWFsbF9pbnRzKHNlbGYpOgogICAgICAgICBmb3IgaSBpbiByYW5nZSgtNSwgMjU3KToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoaSwgaSArIDApCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2x6bWEucHkgYi9MaWIvdGVzdC90ZXN0X2x6bWEucHkKaW5kZXggYjY5ZGEwNi4uZDdhODU3NiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9sem1hLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbHptYS5weQpAQCAtMSw2ICsxLDcgQEAKIGltcG9ydCBfY29tcHJlc3Npb24KIGZyb20gaW8gaW1wb3J0IEJ5dGVzSU8sIFVuc3VwcG9ydGVkT3BlcmF0aW9uLCBERUZBVUxUX0JVRkZFUl9TSVpFCiBpbXBvcnQgb3MKK2ltcG9ydCBwYXRobGliCiBpbXBvcnQgcGlja2xlCiBpbXBvcnQgcmFuZG9tCiBpbXBvcnQgdW5pdHRlc3QKQEAgLTUyNiw2ICs1MjcsMTYgQEAKICAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKCksICJhIikgYXMgZjoKICAgICAgICAgICAgIHBhc3MKIAorICAgIGRlZiB0ZXN0X2luaXRfd2l0aF9QYXRoTGlrZV9maWxlbmFtZShzZWxmKToKKyAgICAgICAgZmlsZW5hbWUgPSBwYXRobGliLlBhdGgoVEVTVEZOKQorICAgICAgICB3aXRoIFRlbXBGaWxlKGZpbGVuYW1lLCBDT01QUkVTU0VEX1haKToKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoZmlsZW5hbWUpIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQpCisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKGZpbGVuYW1lLCAiYSIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZShJTlBVVCkKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoZmlsZW5hbWUpIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQgKiAyKQorCiAgICAgZGVmIHRlc3RfaW5pdF93aXRoX2ZpbGVuYW1lKHNlbGYpOgogICAgICAgICB3aXRoIFRlbXBGaWxlKFRFU1RGTiwgQ09NUFJFU1NFRF9YWik6CiAgICAgICAgICAgICB3aXRoIExaTUFGaWxlKFRFU1RGTikgYXMgZjoKQEAgLTk3MywxMSArOTg0LDExIEBACiAKICAgICBkZWYgdGVzdF9kZWNvbXByZXNzX2xpbWl0ZWQoc2VsZik6CiAgICAgICAgICIiIkRlY29tcHJlc3NlZCBkYXRhIGJ1ZmZlcmluZyBzaG91bGQgYmUgbGltaXRlZCIiIgotICAgICAgICBib21iID0gbHptYS5jb21wcmVzcyhieXRlcyhpbnQoMmU2KSksIHByZXNldD02KQorICAgICAgICBib21iID0gbHptYS5jb21wcmVzcyhiJ1wwJyAqIGludCgyZTYpLCBwcmVzZXQ9NikKICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGxlbihib21iKSwgX2NvbXByZXNzaW9uLkJVRkZFUl9TSVpFKQogCiAgICAgICAgIGRlY29tcCA9IExaTUFGaWxlKEJ5dGVzSU8oYm9tYikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoMSksIGRlY29tcC5yZWFkKDEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29tcC5yZWFkKDEpLCBiJ1wwJykKICAgICAgICAgbWF4X2RlY29tcCA9IDEgKyBERUZBVUxUX0JVRkZFUl9TSVpFCiAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGRlY29tcC5fYnVmZmVyLnJhdy50ZWxsKCksIG1heF9kZWNvbXAsCiAgICAgICAgICAgICAiRXhjZXNzaXZlIGFtb3VudCBvZiBkYXRhIHdhcyBkZWNvbXByZXNzZWQiKQpAQCAtMTIxOCw2ICsxMjI5LDE3IEBACiAgICAgICAgICAgICB3aXRoIGx6bWEub3BlbihURVNURk4sICJyYiIpIGFzIGY6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQgKiAyKQogCisgICAgZGVmIHRlc3Rfd2l0aF9wYXRobGlrZV9maWxlbmFtZShzZWxmKToKKyAgICAgICAgZmlsZW5hbWUgPSBwYXRobGliLlBhdGgoVEVTVEZOKQorICAgICAgICB3aXRoIFRlbXBGaWxlKGZpbGVuYW1lKToKKyAgICAgICAgICAgIHdpdGggbHptYS5vcGVuKGZpbGVuYW1lLCAid2IiKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUoSU5QVVQpCisgICAgICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJyYiIpIGFzIGY6CisgICAgICAgICAgICAgICAgZmlsZV9kYXRhID0gbHptYS5kZWNvbXByZXNzKGYucmVhZCgpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZV9kYXRhLCBJTlBVVCkKKyAgICAgICAgICAgIHdpdGggbHptYS5vcGVuKGZpbGVuYW1lLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIElOUFVUKQorCiAgICAgZGVmIHRlc3RfYmFkX3BhcmFtcyhzZWxmKToKICAgICAgICAgIyBUZXN0IGludmFsaWQgcGFyYW1ldGVyIGNvbWJpbmF0aW9ucy4KICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWFjcGF0aC5weSBiL0xpYi90ZXN0L3Rlc3RfbWFjcGF0aC5weQppbmRleCA4MGJlYzdhLi4wNjk4ZmY1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21hY3BhdGgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tYWNwYXRoLnB5CkBAIC0xLDUgKzEsNSBAQAogaW1wb3J0IG1hY3BhdGgKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCwgdGVzdF9nZW5lcmljcGF0aAorZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X2dlbmVyaWNwYXRoCiBpbXBvcnQgdW5pdHRlc3QKIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21haWxib3gucHkgYi9MaWIvdGVzdC90ZXN0X21haWxib3gucHkKaW5kZXggMDk5MWY3NC4uMmJhOTQ0MyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tYWlsYm94LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbWFpbGJveC5weQpAQCAtNywxNyArNywxMiBAQAogaW1wb3J0IGVtYWlsLm1lc3NhZ2UKIGltcG9ydCByZQogaW1wb3J0IGlvCi1pbXBvcnQgc2h1dGlsCiBpbXBvcnQgdGVtcGZpbGUKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgdGV4dHdyYXAKIGltcG9ydCBtYWlsYm94CiBpbXBvcnQgZ2xvYgotdHJ5OgotICAgIGltcG9ydCBmY250bAotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIHBhc3MKIAogCiBjbGFzcyBUZXN0QmFzZToKQEAgLTIxNDIsOSArMjEzNyw5IEBACiAgICAgICAgICAgICBpZiBtYm94OgogICAgICAgICAgICAgICAgIGZwLndyaXRlKEZST01fKQogICAgICAgICAgICAgZnAud3JpdGUoRFVNTVlfTUVTU0FHRSkKLSAgICAgICAgaWYgaGFzYXR0cihvcywgImxpbmsiKToKKyAgICAgICAgdHJ5OgogICAgICAgICAgICAgb3MubGluayh0bXBuYW1lLCBuZXduYW1lKQotICAgICAgICBlbHNlOgorICAgICAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBQZXJtaXNzaW9uRXJyb3IpOgogICAgICAgICAgICAgd2l0aCBvcGVuKG5ld25hbWUsICJ3IikgYXMgZnA6CiAgICAgICAgICAgICAgICAgZnAud3JpdGUoRFVNTVlfTUVTU0FHRSkKICAgICAgICAgc2VsZi5fbXNnZmlsZXMuYXBwZW5kKG5ld25hbWUpCkBAIC0yMjczLDEyICsyMjY4LDE4IEBACiAiIiIpCiAKIAorY2xhc3MgTWlzY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgIGJsYWNrbGlzdCA9IHsibGluZXNlcCIsICJmY250bCJ9CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIG1haWxib3gsIGJsYWNrbGlzdD1ibGFja2xpc3QpCisKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHRlc3RzID0gKFRlc3RNYWlsYm94U3VwZXJjbGFzcywgVGVzdE1haWxkaXIsIFRlc3RNYm94LCBUZXN0TU1ERiwgVGVzdE1ILAogICAgICAgICAgICAgIFRlc3RCYWJ5bCwgVGVzdE1lc3NhZ2UsIFRlc3RNYWlsZGlyTWVzc2FnZSwgVGVzdE1ib3hNZXNzYWdlLAogICAgICAgICAgICAgIFRlc3RNSE1lc3NhZ2UsIFRlc3RCYWJ5bE1lc3NhZ2UsIFRlc3RNTURGTWVzc2FnZSwKICAgICAgICAgICAgICBUZXN0TWVzc2FnZUNvbnZlcnNpb24sIFRlc3RQcm94eUZpbGUsIFRlc3RQYXJ0aWFsRmlsZSwKLSAgICAgICAgICAgICBNYWlsZGlyVGVzdENhc2UsIFRlc3RGYWtlTWFpbEJveCkKKyAgICAgICAgICAgICBNYWlsZGlyVGVzdENhc2UsIFRlc3RGYWtlTWFpbEJveCwgTWlzY1Rlc3RDYXNlKQogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KCp0ZXN0cykKICAgICBzdXBwb3J0LnJlYXBfY2hpbGRyZW4oKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21haWxjYXAucHkgYi9MaWIvdGVzdC90ZXN0X21haWxjYXAucHkKaW5kZXggYTg1YzY5MS4uYzA4NDIzYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tYWlsY2FwLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbWFpbGNhcC5weQpAQCAtMSw2ICsxLDUgQEAKIGltcG9ydCBtYWlsY2FwCiBpbXBvcnQgb3MKLWltcG9ydCBzaHV0aWwKIGltcG9ydCBjb3B5CiBpbXBvcnQgdGVzdC5zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKQEAgLTEyMyw3ICsxMjIsNyBAQAogICAgICAgICAgICAgKFsiZWNobyBmb28iLCAiYXVkaW8vKiIsICJmb28udHh0Il0sICJlY2hvIGZvbyIpLAogICAgICAgICAgICAgKFsiZWNobyAlcyIsICJhdWRpby8qIiwgImZvby50eHQiXSwgImVjaG8gZm9vLnR4dCIpLAogICAgICAgICAgICAgKFsiZWNobyAldCIsICJhdWRpby8qIiwgImZvby50eHQiXSwgImVjaG8gYXVkaW8vKiIpLAotICAgICAgICAgICAgKFsiZWNobyBcJXQiLCAiYXVkaW8vKiIsICJmb28udHh0Il0sICJlY2hvICV0IiksCisgICAgICAgICAgICAoWyJlY2hvIFxcJXQiLCAiYXVkaW8vKiIsICJmb28udHh0Il0sICJlY2hvICV0IiksCiAgICAgICAgICAgICAoWyJlY2hvIGZvbyIsICJhdWRpby8qIiwgImZvby50eHQiLCBwbGlzdF0sICJlY2hvIGZvbyIpLAogICAgICAgICAgICAgKFsiZWNobyAle3RvdGFsfSIsICJhdWRpby8qIiwgImZvby50eHQiLCBwbGlzdF0sICJlY2hvIDMiKQogICAgICAgICBdCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21hcnNoYWwucHkgYi9MaWIvdGVzdC90ZXN0X21hcnNoYWwucHkKaW5kZXggYzdkZWY5YS4uYjM3OGZmZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tYXJzaGFsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbWFyc2hhbC5weQpAQCAtMTM1LDYgKzEzNSwxMyBAQAogICAgICAgICBmb3IgY29uc3RydWN0b3IgaW4gKHNldCwgZnJvemVuc2V0KToKICAgICAgICAgICAgIHNlbGYuaGVscGVyKGNvbnN0cnVjdG9yKHNlbGYuZC5rZXlzKCkpKQogCisgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3RfZW1wdHlfZnJvemVuc2V0X3NpbmdsZXRvbihzZWxmKToKKyAgICAgICAgIyBtYXJzaGFsLmxvYWRzKCkgbXVzdCByZXVzZSB0aGUgZW1wdHkgZnJvemVuc2V0IHNpbmdsZXRvbgorICAgICAgICBvYmogPSBmcm96ZW5zZXQoKQorICAgICAgICBvYmoyID0gbWFyc2hhbC5sb2FkcyhtYXJzaGFsLmR1bXBzKG9iaikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMob2JqMiwgb2JqKQorCiAKIGNsYXNzIEJ1ZmZlclRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlLCBIZWxwZXJNaXhpbik6CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWF0aC5weSBiL0xpYi90ZXN0L3Rlc3RfbWF0aC5weQppbmRleCBhMzc5YTZhLi5lYWE0MWJjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21hdGgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tYXRoLnB5CkBAIC03LDE0ICs3LDE1IEBACiBpbXBvcnQgbWF0aAogaW1wb3J0IG9zCiBpbXBvcnQgcGxhdGZvcm0KLWltcG9ydCBzeXMKIGltcG9ydCBzdHJ1Y3QKK2ltcG9ydCBzeXMKIGltcG9ydCBzeXNjb25maWcKIAogZXBzID0gMUUtMDUKIE5BTiA9IGZsb2F0KCduYW4nKQogSU5GID0gZmxvYXQoJ2luZicpCiBOSU5GID0gZmxvYXQoJy1pbmYnKQorRkxPQVRfTUFYID0gc3lzLmZsb2F0X2luZm8ubWF4CiAKICMgZGV0ZWN0IGV2aWRlbmNlIG9mIGRvdWJsZS1yb3VuZGluZzogZnN1bSBpcyBub3QgYWx3YXlzIGNvcnJlY3RseQogIyByb3VuZGVkIG9uIG1hY2hpbmVzIHRoYXQgc3VmZmVyIGZyb20gZG91YmxlIHJvdW5kaW5nLgpAQCAtMzAsNiArMzEsNyBAQAogbWF0aF90ZXN0Y2FzZXMgPSBvcy5wYXRoLmpvaW4odGVzdF9kaXIsICdtYXRoX3Rlc3RjYXNlcy50eHQnKQogdGVzdF9maWxlID0gb3MucGF0aC5qb2luKHRlc3RfZGlyLCAnY21hdGhfdGVzdGNhc2VzLnR4dCcpCiAKKwogZGVmIHRvX3VscHMoeCk6CiAgICAgIiIiQ29udmVydCBhIG5vbi1OYU4gZmxvYXQgeCB0byBhbiBpbnRlZ2VyLCBpbiBzdWNoIGEgd2F5IHRoYXQKICAgICBhZGphY2VudCBmbG9hdHMgYXJlIGNvbnZlcnRlZCB0byBhZGphY2VudCBpbnRlZ2Vycy4gIFRoZW4KQEAgLTM3LDI1ICszOSwzOSBAQAogICAgIGZsb2F0cy4KIAogICAgIFRoZSByZXN1bHRzIGZyb20gdGhpcyBmdW5jdGlvbiB3aWxsIG9ubHkgbWFrZSBzZW5zZSBvbiBwbGF0Zm9ybXMKLSAgICB3aGVyZSBDIGRvdWJsZXMgYXJlIHJlcHJlc2VudGVkIGluIElFRUUgNzU0IGJpbmFyeTY0IGZvcm1hdC4KKyAgICB3aGVyZSBuYXRpdmUgZG91YmxlcyBhcmUgcmVwcmVzZW50ZWQgaW4gSUVFRSA3NTQgYmluYXJ5NjQgZm9ybWF0LgogCisgICAgTm90ZTogMC4wIGFuZCAtMC4wIGFyZSBjb252ZXJ0ZWQgdG8gMCBhbmQgLTEsIHJlc3BlY3RpdmVseS4KICAgICAiIiIKICAgICBuID0gc3RydWN0LnVucGFjaygnPHEnLCBzdHJ1Y3QucGFjaygnPGQnLCB4KSlbMF0KICAgICBpZiBuIDwgMDoKICAgICAgICAgbiA9IH4obisyKio2MykKICAgICByZXR1cm4gbgogCi1kZWYgdWxwc19jaGVjayhleHBlY3RlZCwgZ290LCB1bHBzPTIwKToKLSAgICAiIiJHaXZlbiBub24tTmFOIGZsb2F0cyBgZXhwZWN0ZWRgIGFuZCBgZ290YCwKLSAgICBjaGVjayB0aGF0IHRoZXkncmUgZXF1YWwgdG8gd2l0aGluIHRoZSBnaXZlbiBudW1iZXIgb2YgdWxwcy4KIAotICAgIFJldHVybnMgTm9uZSBvbiBzdWNjZXNzIGFuZCBhbiBlcnJvciBtZXNzYWdlIG9uIGZhaWx1cmUuIiIiCitkZWYgdWxwKHgpOgorICAgICIiIlJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdCBvZiBhCisgICAgZmxvYXQgeCwgc3VjaCB0aGF0IHRoZSBmaXJzdCBmbG9hdCBiaWdnZXIgdGhhbiB4IGlzIHgrdWxwKHgpLgorICAgIFRoZW4sIGdpdmVuIGFuIGV4cGVjdGVkIHJlc3VsdCB4IGFuZCBhIHRvbGVyYW5jZSBvZiBuIHVscHMsCisgICAgdGhlIHJlc3VsdCB5IHNob3VsZCBiZSBzdWNoIHRoYXQgYWJzKHkteCkgPD0gbiAqIHVscCh4KS4KKyAgICBUaGUgcmVzdWx0cyBmcm9tIHRoaXMgZnVuY3Rpb24gd2lsbCBvbmx5IG1ha2Ugc2Vuc2Ugb24gcGxhdGZvcm1zCisgICAgd2hlcmUgbmF0aXZlIGRvdWJsZXMgYXJlIHJlcHJlc2VudGVkIGluIElFRUUgNzU0IGJpbmFyeTY0IGZvcm1hdC4KKyAgICAiIiIKKyAgICB4ID0gYWJzKGZsb2F0KHgpKQorICAgIGlmIG1hdGguaXNuYW4oeCkgb3IgbWF0aC5pc2luZih4KToKKyAgICAgICAgcmV0dXJuIHgKIAotICAgIHVscHNfZXJyb3IgPSB0b191bHBzKGdvdCkgLSB0b191bHBzKGV4cGVjdGVkKQotICAgIGlmIGFicyh1bHBzX2Vycm9yKSA8PSB1bHBzOgotICAgICAgICByZXR1cm4gTm9uZQotICAgIHJldHVybiAiZXJyb3IgPSB7fSB1bHBzOyBwZXJtaXR0ZWQgZXJyb3IgPSB7fSB1bHBzIi5mb3JtYXQodWxwc19lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVscHMpCisgICAgIyBGaW5kIG5leHQgZmxvYXQgdXAgZnJvbSB4LgorICAgIG4gPSBzdHJ1Y3QudW5wYWNrKCc8cScsIHN0cnVjdC5wYWNrKCc8ZCcsIHgpKVswXQorICAgIHhfbmV4dCA9IHN0cnVjdC51bnBhY2soJzxkJywgc3RydWN0LnBhY2soJzxxJywgbiArIDEpKVswXQorICAgIGlmIG1hdGguaXNpbmYoeF9uZXh0KToKKyAgICAgICAgIyBDb3JuZXIgY2FzZTogeCB3YXMgdGhlIGxhcmdlc3QgZmluaXRlIGZsb2F0LiBUaGVuIGl0J3MKKyAgICAgICAgIyBub3QgYW4gZXhhY3QgcG93ZXIgb2YgdHdvLCBzbyB3ZSBjYW4gdGFrZSB0aGUgZGlmZmVyZW5jZQorICAgICAgICAjIGJldHdlZW4geCBhbmQgdGhlIHByZXZpb3VzIGZsb2F0LgorICAgICAgICB4X3ByZXYgPSBzdHJ1Y3QudW5wYWNrKCc8ZCcsIHN0cnVjdC5wYWNrKCc8cScsIG4gLSAxKSlbMF0KKyAgICAgICAgcmV0dXJuIHggLSB4X3ByZXYKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4geF9uZXh0IC0geAogCiAjIEhlcmUncyBhIHB1cmUgUHl0aG9uIHZlcnNpb24gb2YgdGhlIG1hdGguZmFjdG9yaWFsIGFsZ29yaXRobSwgZm9yCiAjIGRvY3VtZW50YXRpb24gYW5kIGNvbXBhcmlzb24gcHVycG9zZXMuCkBAIC0xMDcsMjQgKzEyMywyMyBAQAogICAgICAgICBvdXRlciAqPSBpbm5lcgogICAgIHJldHVybiBvdXRlciA8PCAobiAtIGNvdW50X3NldF9iaXRzKG4pKQogCi1kZWYgYWNjX2NoZWNrKGV4cGVjdGVkLCBnb3QsIHJlbF9lcnI9MmUtMTUsIGFic19lcnIgPSA1ZS0zMjMpOgotICAgICIiIkRldGVybWluZSB3aGV0aGVyIG5vbi1OYU4gZmxvYXRzIGEgYW5kIGIgYXJlIGVxdWFsIHRvIHdpdGhpbiBhCi0gICAgKHNtYWxsKSByb3VuZGluZyBlcnJvci4gIFRoZSBkZWZhdWx0IHZhbHVlcyBmb3IgcmVsX2VyciBhbmQKLSAgICBhYnNfZXJyIGFyZSBjaG9zZW4gdG8gYmUgc3VpdGFibGUgZm9yIHBsYXRmb3JtcyB3aGVyZSBhIGZsb2F0IGlzCi0gICAgcmVwcmVzZW50ZWQgYnkgYW4gSUVFRSA3NTQgZG91YmxlLiAgVGhleSBhbGxvdyBhbiBlcnJvciBvZiBiZXR3ZWVuCi0gICAgOSBhbmQgMTkgdWxwcy4iIiIKK2RlZiB1bHBfYWJzX2NoZWNrKGV4cGVjdGVkLCBnb3QsIHVscF90b2wsIGFic190b2wpOgorICAgICIiIkdpdmVuIGZpbml0ZSBmbG9hdHMgYGV4cGVjdGVkYCBhbmQgYGdvdGAsIGNoZWNrIHRoYXQgdGhleSdyZQorICAgIGFwcHJveGltYXRlbHkgZXF1YWwgdG8gd2l0aGluIHRoZSBnaXZlbiBudW1iZXIgb2YgdWxwcyBvciB0aGUKKyAgICBnaXZlbiBhYnNvbHV0ZSB0b2xlcmFuY2UsIHdoaWNoZXZlciBpcyBiaWdnZXIuCiAKLSAgICAjIG5lZWQgdG8gc3BlY2lhbCBjYXNlIGluZmluaXRpZXMsIHNpbmNlIGluZiAtIGluZiBnaXZlcyBuYW4KLSAgICBpZiBtYXRoLmlzaW5mKGV4cGVjdGVkKSBhbmQgZ290ID09IGV4cGVjdGVkOgorICAgIFJldHVybnMgTm9uZSBvbiBzdWNjZXNzIGFuZCBhbiBlcnJvciBtZXNzYWdlIG9uIGZhaWx1cmUuCisgICAgIiIiCisgICAgdWxwX2Vycm9yID0gYWJzKHRvX3VscHMoZXhwZWN0ZWQpIC0gdG9fdWxwcyhnb3QpKQorICAgIGFic19lcnJvciA9IGFicyhleHBlY3RlZCAtIGdvdCkKKworICAgICMgU3VjY2VlZCBpZiBlaXRoZXIgYWJzX2Vycm9yIDw9IGFic190b2wgb3IgdWxwX2Vycm9yIDw9IHVscF90b2wuCisgICAgaWYgYWJzX2Vycm9yIDw9IGFic190b2wgb3IgdWxwX2Vycm9yIDw9IHVscF90b2w6CiAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICBlcnJvciA9IGdvdCAtIGV4cGVjdGVkCi0KLSAgICBwZXJtaXR0ZWRfZXJyb3IgPSBtYXgoYWJzX2VyciwgcmVsX2VyciAqIGFicyhleHBlY3RlZCkpCi0gICAgaWYgYWJzKGVycm9yKSA8IHBlcm1pdHRlZF9lcnJvcjoKLSAgICAgICAgcmV0dXJuIE5vbmUKLSAgICByZXR1cm4gImVycm9yID0ge307IHBlcm1pdHRlZCBlcnJvciA9IHt9Ii5mb3JtYXQoZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcm1pdHRlZF9lcnJvcikKKyAgICBlbHNlOgorICAgICAgICBmbXQgPSAoImVycm9yID0gezouM2d9ICh7OmR9IHVscHMpOyAiCisgICAgICAgICAgICAgICAicGVybWl0dGVkIGVycm9yID0gezouM2d9IG9yIHs6ZH0gdWxwcyIpCisgICAgICAgIHJldHVybiBmbXQuZm9ybWF0KGFic19lcnJvciwgdWxwX2Vycm9yLCBhYnNfdG9sLCB1bHBfdG9sKQogCiBkZWYgcGFyc2VfbXRlc3RmaWxlKGZuYW1lKToKICAgICAiIiJQYXJzZSBhIGZpbGUgd2l0aCB0ZXN0IHZhbHVlcwpAQCAtMTUxLDYgKzE2Niw3IEBACiAKICAgICAgICAgICAgIHlpZWxkIChpZCwgZm4sIGZsb2F0KGFyZyksIGZsb2F0KGV4cCksIGZsYWdzKQogCisKIGRlZiBwYXJzZV90ZXN0ZmlsZShmbmFtZSk6CiAgICAgIiIiUGFyc2UgYSBmaWxlIHdpdGggdGVzdCB2YWx1ZXMKIApAQCAtMTcyLDggKzE4OCw1MyBAQAogICAgICAgICAgICAgeWllbGQgKGlkLCBmbiwKICAgICAgICAgICAgICAgICAgICBmbG9hdChhcmdfcmVhbCksIGZsb2F0KGFyZ19pbWFnKSwKICAgICAgICAgICAgICAgICAgICBmbG9hdChleHBfcmVhbCksIGZsb2F0KGV4cF9pbWFnKSwKLSAgICAgICAgICAgICAgICAgICBmbGFncwotICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgIGZsYWdzKQorCisKK2RlZiByZXN1bHRfY2hlY2soZXhwZWN0ZWQsIGdvdCwgdWxwX3RvbD01LCBhYnNfdG9sPTAuMCk6CisgICAgIyBDb21tb24gbG9naWMgb2YgTWF0aFRlc3RzLihmdGVzdCwgdGVzdF90ZXN0Y2FzZXMsIHRlc3RfbXRlc3RjYXNlcykKKyAgICAiIiJDb21wYXJlIGFyZ3VtZW50cyBleHBlY3RlZCBhbmQgZ290LCBhcyBmbG9hdHMsIGlmIGVpdGhlcgorICAgIGlzIGEgZmxvYXQsIHVzaW5nIGEgdG9sZXJhbmNlIGV4cHJlc3NlZCBpbiBtdWx0aXBsZXMgb2YKKyAgICB1bHAoZXhwZWN0ZWQpIG9yIGFic29sdXRlbHkgKGlmIGdpdmVuIGFuZCBncmVhdGVyKS4KKworICAgIEFzIGEgY29udmVuaWVuY2UsIHdoZW4gbmVpdGhlciBhcmd1bWVudCBpcyBhIGZsb2F0LCBhbmQgZm9yCisgICAgbm9uLWZpbml0ZSBmbG9hdHMsIGV4YWN0IGVxdWFsaXR5IGlzIGRlbWFuZGVkLiBBbHNvLCBuYW49PW5hbgorICAgIGFzIGZhciBhcyB0aGlzIGZ1bmN0aW9uIGlzIGNvbmNlcm5lZC4KKworICAgIFJldHVybnMgTm9uZSBvbiBzdWNjZXNzIGFuZCBhbiBlcnJvciBtZXNzYWdlIG9uIGZhaWx1cmUuCisgICAgIiIiCisKKyAgICAjIENoZWNrIGV4YWN0bHkgZXF1YWwgKGFwcGxpZXMgYWxzbyB0byBzdHJpbmdzIHJlcHJlc2VudGluZyBleGNlcHRpb25zKQorICAgIGlmIGdvdCA9PSBleHBlY3RlZDoKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGZhaWx1cmUgPSAibm90IGVxdWFsIgorCisgICAgIyBUdXJuIG1peGVkIGZsb2F0IGFuZCBpbnQgY29tcGFyaXNvbiAoZS5nLiBmbG9vcigpKSB0byBhbGwtZmxvYXQKKyAgICBpZiBpc2luc3RhbmNlKGV4cGVjdGVkLCBmbG9hdCkgYW5kIGlzaW5zdGFuY2UoZ290LCBpbnQpOgorICAgICAgICBnb3QgPSBmbG9hdChnb3QpCisgICAgZWxpZiBpc2luc3RhbmNlKGdvdCwgZmxvYXQpIGFuZCBpc2luc3RhbmNlKGV4cGVjdGVkLCBpbnQpOgorICAgICAgICBleHBlY3RlZCA9IGZsb2F0KGV4cGVjdGVkKQorCisgICAgaWYgaXNpbnN0YW5jZShleHBlY3RlZCwgZmxvYXQpIGFuZCBpc2luc3RhbmNlKGdvdCwgZmxvYXQpOgorICAgICAgICBpZiBtYXRoLmlzbmFuKGV4cGVjdGVkKSBhbmQgbWF0aC5pc25hbihnb3QpOgorICAgICAgICAgICAgIyBQYXNzLCBzaW5jZSBib3RoIG5hbgorICAgICAgICAgICAgZmFpbHVyZSA9IE5vbmUKKyAgICAgICAgZWxpZiBtYXRoLmlzaW5mKGV4cGVjdGVkKSBvciBtYXRoLmlzaW5mKGdvdCk6CisgICAgICAgICAgICAjIFdlIGFscmVhZHkga25vdyB0aGV5J3JlIG5vdCBlcXVhbCwgZHJvcCB0aHJvdWdoIHRvIGZhaWx1cmUKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgQm90aCBhcmUgZmluaXRlIGZsb2F0cyAobm93KS4gQXJlIHRoZXkgY2xvc2UgZW5vdWdoPworICAgICAgICAgICAgZmFpbHVyZSA9IHVscF9hYnNfY2hlY2soZXhwZWN0ZWQsIGdvdCwgdWxwX3RvbCwgYWJzX3RvbCkKKworICAgICMgYXJndW1lbnRzIGFyZSBub3QgZXF1YWwsIGFuZCBpZiBudW1lcmljLCBhcmUgdG9vIGZhciBhcGFydAorICAgIGlmIGZhaWx1cmUgaXMgbm90IE5vbmU6CisgICAgICAgIGZhaWxfZm10ID0gImV4cGVjdGVkIHshcn0sIGdvdCB7IXJ9IgorICAgICAgICBmYWlsX21zZyA9IGZhaWxfZm10LmZvcm1hdChleHBlY3RlZCwgZ290KQorICAgICAgICBmYWlsX21zZyArPSAnICh7fSknLmZvcm1hdChmYWlsdXJlKQorICAgICAgICByZXR1cm4gZmFpbF9tc2cKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gTm9uZQogCiAjIENsYXNzIHByb3ZpZGluZyBhbiBfX2luZGV4X18gbWV0aG9kLgogY2xhc3MgTXlJbmRleGFibGUob2JqZWN0KToKQEAgLTE4NSwxOCArMjQ2LDI0IEBACiAKIGNsYXNzIE1hdGhUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKLSAgICBkZWYgZnRlc3Qoc2VsZiwgbmFtZSwgdmFsdWUsIGV4cGVjdGVkKToKLSAgICAgICAgaWYgYWJzKHZhbHVlLWV4cGVjdGVkKSA+IGVwczoKLSAgICAgICAgICAgICMgVXNlICVyIGluc3RlYWQgb2YgJWYgc28gdGhlIGVycm9yIG1lc3NhZ2UKLSAgICAgICAgICAgICMgZGlzcGxheXMgZnVsbCBwcmVjaXNpb24uIE90aGVyd2lzZSBkaXNjcmVwYW5jaWVzCi0gICAgICAgICAgICAjIGluIHRoZSBsYXN0IGZldyBiaXRzIHdpbGwgbGVhZCB0byB2ZXJ5IGNvbmZ1c2luZwotICAgICAgICAgICAgIyBlcnJvciBtZXNzYWdlcwotICAgICAgICAgICAgc2VsZi5mYWlsKCclcyByZXR1cm5lZCAlciwgZXhwZWN0ZWQgJXInICUKLSAgICAgICAgICAgICAgICAgICAgICAobmFtZSwgdmFsdWUsIGV4cGVjdGVkKSkKKyAgICBkZWYgZnRlc3Qoc2VsZiwgbmFtZSwgZ290LCBleHBlY3RlZCwgdWxwX3RvbD01LCBhYnNfdG9sPTAuMCk6CisgICAgICAgICIiIkNvbXBhcmUgYXJndW1lbnRzIGV4cGVjdGVkIGFuZCBnb3QsIGFzIGZsb2F0cywgaWYgZWl0aGVyCisgICAgICAgIGlzIGEgZmxvYXQsIHVzaW5nIGEgdG9sZXJhbmNlIGV4cHJlc3NlZCBpbiBtdWx0aXBsZXMgb2YKKyAgICAgICAgdWxwKGV4cGVjdGVkKSBvciBhYnNvbHV0ZWx5LCB3aGljaGV2ZXIgaXMgZ3JlYXRlci4KKworICAgICAgICBBcyBhIGNvbnZlbmllbmNlLCB3aGVuIG5laXRoZXIgYXJndW1lbnQgaXMgYSBmbG9hdCwgYW5kIGZvcgorICAgICAgICBub24tZmluaXRlIGZsb2F0cywgZXhhY3QgZXF1YWxpdHkgaXMgZGVtYW5kZWQuIEFsc28sIG5hbj09bmFuCisgICAgICAgIGluIHRoaXMgZnVuY3Rpb24uCisgICAgICAgICIiIgorICAgICAgICBmYWlsdXJlID0gcmVzdWx0X2NoZWNrKGV4cGVjdGVkLCBnb3QsIHVscF90b2wsIGFic190b2wpCisgICAgICAgIGlmIGZhaWx1cmUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLmZhaWwoInt9OiB7fSIuZm9ybWF0KG5hbWUsIGZhaWx1cmUpKQogCiAgICAgZGVmIHRlc3RDb25zdGFudHMoc2VsZik6Ci0gICAgICAgIHNlbGYuZnRlc3QoJ3BpJywgbWF0aC5waSwgMy4xNDE1OTI2KQotICAgICAgICBzZWxmLmZ0ZXN0KCdlJywgbWF0aC5lLCAyLjcxODI4MTgpCisgICAgICAgICMgUmVmOiBBYnJhbW93aXR6ICYgU3RlZ3VuIChEb3ZlciwgMTk2NSkKKyAgICAgICAgc2VsZi5mdGVzdCgncGknLCBtYXRoLnBpLCAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2MjY0MykKKyAgICAgICAgc2VsZi5mdGVzdCgnZScsIG1hdGguZSwgMi43MTgyODE4Mjg0NTkwNDUyMzUzNjAyODcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF0aC50YXUsIDIqbWF0aC5waSkKIAogICAgIGRlZiB0ZXN0QWNvcyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtYXRoLmFjb3MpCkBAIC0yMDUsNiArMjcyLDggQEAKICAgICAgICAgc2VsZi5mdGVzdCgnYWNvcygxKScsIG1hdGguYWNvcygxKSwgMCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWF0aC5hY29zLCBJTkYpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1hdGguYWNvcywgTklORikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWF0aC5hY29zLCAxICsgZXBzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtYXRoLmFjb3MsIC0xIC0gZXBzKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihtYXRoLmFjb3MoTkFOKSkpCiAKICAgICBkZWYgdGVzdEFjb3NoKHNlbGYpOgpAQCAtMjI0LDYgKzI5Myw4IEBACiAgICAgICAgIHNlbGYuZnRlc3QoJ2FzaW4oMSknLCBtYXRoLmFzaW4oMSksIG1hdGgucGkvMikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWF0aC5hc2luLCBJTkYpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1hdGguYXNpbiwgTklORikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWF0aC5hc2luLCAxICsgZXBzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtYXRoLmFzaW4sIC0xIC0gZXBzKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihtYXRoLmFzaW4oTkFOKSkpCiAKICAgICBkZWYgdGVzdEFzaW5oKHNlbGYpOgpAQCAtMzc4LDkgKzQ0OSw5IEBACiAKICAgICBkZWYgdGVzdENvcyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtYXRoLmNvcykKLSAgICAgICAgc2VsZi5mdGVzdCgnY29zKC1waS8yKScsIG1hdGguY29zKC1tYXRoLnBpLzIpLCAwKQorICAgICAgICBzZWxmLmZ0ZXN0KCdjb3MoLXBpLzIpJywgbWF0aC5jb3MoLW1hdGgucGkvMiksIDAsIGFic190b2w9dWxwKDEpKQogICAgICAgICBzZWxmLmZ0ZXN0KCdjb3MoMCknLCBtYXRoLmNvcygwKSwgMSkKLSAgICAgICAgc2VsZi5mdGVzdCgnY29zKHBpLzIpJywgbWF0aC5jb3MobWF0aC5waS8yKSwgMCkKKyAgICAgICAgc2VsZi5mdGVzdCgnY29zKHBpLzIpJywgbWF0aC5jb3MobWF0aC5waS8yKSwgMCwgYWJzX3RvbD11bHAoMSkpCiAgICAgICAgIHNlbGYuZnRlc3QoJ2NvcyhwaSknLCBtYXRoLmNvcyhtYXRoLnBpKSwgLTEpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKG1hdGguY29zKElORikpKQpAQCAtNDAzLDYgKzQ3NCw3IEBACiAgICAgICAgIHNlbGYuZnRlc3QoJ2RlZ3JlZXMocGkpJywgbWF0aC5kZWdyZWVzKG1hdGgucGkpLCAxODAuMCkKICAgICAgICAgc2VsZi5mdGVzdCgnZGVncmVlcyhwaS8yKScsIG1hdGguZGVncmVlcyhtYXRoLnBpLzIpLCA5MC4wKQogICAgICAgICBzZWxmLmZ0ZXN0KCdkZWdyZWVzKC1waS80KScsIG1hdGguZGVncmVlcygtbWF0aC5waS80KSwgLTQ1LjApCisgICAgICAgIHNlbGYuZnRlc3QoJ2RlZ3JlZXMoMCknLCBtYXRoLmRlZ3JlZXMoMCksIDApCiAKICAgICBkZWYgdGVzdEV4cChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtYXRoLmV4cCkKQEAgLTQxMiw2ICs0ODQsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hdGguZXhwKElORiksIElORikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXRoLmV4cChOSU5GKSwgMC4pCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKG1hdGguZXhwKE5BTikpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBtYXRoLmV4cCwgMTAwMDAwMCkKIAogICAgIGRlZiB0ZXN0RmFicyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtYXRoLmZhYnMpCkBAIC02NTQsNiArNzI3LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXRoLmh5cG90KElORiwgTkFOKSwgSU5GKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hdGguaHlwb3QoTkFOLCBOSU5GKSwgSU5GKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hdGguaHlwb3QoTklORiwgTkFOKSwgSU5GKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBtYXRoLmh5cG90LCBGTE9BVF9NQVgsIEZMT0FUX01BWCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNuYW4obWF0aC5oeXBvdCgxLjAsIE5BTikpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihtYXRoLmh5cG90KE5BTiwgLTIuMCkpKQogCkBAIC03MDcsOCArNzgxLDEwIEBACiAKICAgICBkZWYgdGVzdExvZzFwKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1hdGgubG9nMXApCi0gICAgICAgIG49IDIqKjkwCi0gICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwobWF0aC5sb2cxcChuKSwgbWF0aC5sb2cxcChmbG9hdChuKSkpCisgICAgICAgIGZvciBuIGluIFsyLCAyKio5MCwgMioqMzAwXToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwobWF0aC5sb2cxcChuKSwgbWF0aC5sb2cxcChmbG9hdChuKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1hdGgubG9nMXAsIC0xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hdGgubG9nMXAoSU5GKSwgSU5GKQogCiAgICAgQHJlcXVpcmVzX0lFRUVfNzU0CiAgICAgZGVmIHRlc3RMb2cyKHNlbGYpOgpAQCAtOTIyLDYgKzk5OCw3IEBACiAgICAgICAgIHNlbGYuZnRlc3QoJ3JhZGlhbnMoMTgwKScsIG1hdGgucmFkaWFucygxODApLCBtYXRoLnBpKQogICAgICAgICBzZWxmLmZ0ZXN0KCdyYWRpYW5zKDkwKScsIG1hdGgucmFkaWFucyg5MCksIG1hdGgucGkvMikKICAgICAgICAgc2VsZi5mdGVzdCgncmFkaWFucygtNDUpJywgbWF0aC5yYWRpYW5zKC00NSksIC1tYXRoLnBpLzQpCisgICAgICAgIHNlbGYuZnRlc3QoJ3JhZGlhbnMoMCknLCBtYXRoLnJhZGlhbnMoMCksIDApCiAKICAgICBkZWYgdGVzdFNpbihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtYXRoLnNpbikKQEAgLTk1MSw2ICsxMDI4LDcgQEAKICAgICAgICAgc2VsZi5mdGVzdCgnc3FydCgxKScsIG1hdGguc3FydCgxKSwgMSkKICAgICAgICAgc2VsZi5mdGVzdCgnc3FydCg0KScsIG1hdGguc3FydCg0KSwgMikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXRoLnNxcnQoSU5GKSwgSU5GKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtYXRoLnNxcnQsIC0xKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtYXRoLnNxcnQsIE5JTkYpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKG1hdGguc3FydChOQU4pKSkKIApAQCAtOTcwLDcgKzEwNDgsOCBAQAogICAgIGRlZiB0ZXN0VGFuaChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtYXRoLnRhbmgpCiAgICAgICAgIHNlbGYuZnRlc3QoJ3RhbmgoMCknLCBtYXRoLnRhbmgoMCksIDApCi0gICAgICAgIHNlbGYuZnRlc3QoJ3RhbmgoMSkrdGFuaCgtMSknLCBtYXRoLnRhbmgoMSkrbWF0aC50YW5oKC0xKSwgMCkKKyAgICAgICAgc2VsZi5mdGVzdCgndGFuaCgxKSt0YW5oKC0xKScsIG1hdGgudGFuaCgxKSttYXRoLnRhbmgoLTEpLCAwLAorICAgICAgICAgICAgICAgICAgIGFic190b2w9dWxwKDEpKQogICAgICAgICBzZWxmLmZ0ZXN0KCd0YW5oKGluZiknLCBtYXRoLnRhbmgoSU5GKSwgMSkKICAgICAgICAgc2VsZi5mdGVzdCgndGFuaCgtaW5mKScsIG1hdGgudGFuaChOSU5GKSwgLTEpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKG1hdGgudGFuaChOQU4pKSkKQEAgLTEwMjAsNyArMTA5OSw4IEBACiAKICAgICBkZWYgdGVzdElzbmFuKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihmbG9hdCgibmFuIikpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihmbG9hdCgiaW5mIikqIDAuKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNuYW4oZmxvYXQoIi1uYW4iKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKGZsb2F0KCJpbmYiKSAqIDAuKSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtYXRoLmlzbmFuKGZsb2F0KCJpbmYiKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobWF0aC5pc25hbigwLikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobWF0aC5pc25hbigxLikpCkBAIC0xMDg0LDMwICsxMTY0LDY0IEBACiAKICAgICBAcmVxdWlyZXNfSUVFRV83NTQKICAgICBkZWYgdGVzdF90ZXN0ZmlsZShzZWxmKToKKyAgICAgICAgIyBTb21lIHRlc3RzIG5lZWQgdG8gYmUgc2tpcHBlZCBvbiBhbmNpZW50IE9TIFggdmVyc2lvbnMuCisgICAgICAgICMgU2VlIGlzc3VlICMyNzk1My4KKyAgICAgICAgU0tJUF9PTl9USUdFUiA9IHsndGFuMDA2NCd9CisKKyAgICAgICAgb3N4X3ZlcnNpb24gPSBOb25lCisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgICAgIHZlcnNpb25fdHh0ID0gcGxhdGZvcm0ubWFjX3ZlcigpWzBdCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgb3N4X3ZlcnNpb24gPSB0dXBsZShtYXAoaW50LCB2ZXJzaW9uX3R4dC5zcGxpdCgnLicpKSkKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBmYWlsX2ZtdCA9ICJ7fToge30oeyFyfSk6IHt9IgorCisgICAgICAgIGZhaWx1cmVzID0gW10KICAgICAgICAgZm9yIGlkLCBmbiwgYXIsIGFpLCBlciwgZWksIGZsYWdzIGluIHBhcnNlX3Rlc3RmaWxlKHRlc3RfZmlsZSk6Ci0gICAgICAgICAgICAjIFNraXAgaWYgZWl0aGVyIHRoZSBpbnB1dCBvciByZXN1bHQgaXMgY29tcGxleCwgb3IgaWYKLSAgICAgICAgICAgICMgZmxhZ3MgaXMgbm9uZW1wdHkKLSAgICAgICAgICAgIGlmIGFpICE9IDAuIG9yIGVpICE9IDAuIG9yIGZsYWdzOgorICAgICAgICAgICAgIyBTa2lwIGlmIGVpdGhlciB0aGUgaW5wdXQgb3IgcmVzdWx0IGlzIGNvbXBsZXgKKyAgICAgICAgICAgIGlmIGFpICE9IDAuMCBvciBlaSAhPSAwLjA6CiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGlmIGZuIGluIFsncmVjdCcsICdwb2xhciddOgogICAgICAgICAgICAgICAgICMgbm8gcmVhbCB2ZXJzaW9ucyBvZiByZWN0LCBwb2xhcgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAjIFNraXAgY2VydGFpbiB0ZXN0cyBvbiBPUyBYIDEwLjQuCisgICAgICAgICAgICBpZiBvc3hfdmVyc2lvbiBpcyBub3QgTm9uZSBhbmQgb3N4X3ZlcnNpb24gPCAoMTAsIDUpOgorICAgICAgICAgICAgICAgIGlmIGlkIGluIFNLSVBfT05fVElHRVI6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKICAgICAgICAgICAgIGZ1bmMgPSBnZXRhdHRyKG1hdGgsIGZuKQorCisgICAgICAgICAgICBpZiAnaW52YWxpZCcgaW4gZmxhZ3Mgb3IgJ2RpdmlkZS1ieS16ZXJvJyBpbiBmbGFnczoKKyAgICAgICAgICAgICAgICBlciA9ICdWYWx1ZUVycm9yJworICAgICAgICAgICAgZWxpZiAnb3ZlcmZsb3cnIGluIGZsYWdzOgorICAgICAgICAgICAgICAgIGVyID0gJ092ZXJmbG93RXJyb3InCisKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICByZXN1bHQgPSBmdW5jKGFyKQotICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZXhjOgotICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAoKCJVbmV4cGVjdGVkIFZhbHVlRXJyb3I6ICVzXG4gICAgICAgICIgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgImluIHRlc3QgJXM6JXMoJXIpXG4iKSAlIChleGMuYXJnc1swXSwgaWQsIGZuLCBhcikpCi0gICAgICAgICAgICAgICAgc2VsZi5mYWlsKG1lc3NhZ2UpCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICByZXN1bHQgPSAnVmFsdWVFcnJvcicKICAgICAgICAgICAgIGV4Y2VwdCBPdmVyZmxvd0Vycm9yOgotICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAoIlVuZXhwZWN0ZWQgT3ZlcmZsb3dFcnJvciBpbiAiICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0ICVzOiVzKCVyKVxuIiAlIChpZCwgZm4sIGFyKSkKLSAgICAgICAgICAgICAgICBzZWxmLmZhaWwobWVzc2FnZSkKLSAgICAgICAgICAgIHNlbGYuZnRlc3QoIiVzOiVzKCVyKSIgJSAoaWQsIGZuLCBhciksIHJlc3VsdCwgZXIpCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gJ092ZXJmbG93RXJyb3InCisKKyAgICAgICAgICAgICMgRGVmYXVsdCB0b2xlcmFuY2VzCisgICAgICAgICAgICB1bHBfdG9sLCBhYnNfdG9sID0gNSwgMC4wCisKKyAgICAgICAgICAgIGZhaWx1cmUgPSByZXN1bHRfY2hlY2soZXIsIHJlc3VsdCwgdWxwX3RvbCwgYWJzX3RvbCkKKyAgICAgICAgICAgIGlmIGZhaWx1cmUgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBtc2cgPSBmYWlsX2ZtdC5mb3JtYXQoaWQsIGZuLCBhciwgZmFpbHVyZSkKKyAgICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZChtc2cpCisKKyAgICAgICAgaWYgZmFpbHVyZXM6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ0ZhaWx1cmVzIGluIHRlc3RfdGVzdGZpbGU6XG4gICcgKworICAgICAgICAgICAgICAgICAgICAgICdcbiAgJy5qb2luKGZhaWx1cmVzKSkKIAogICAgIEByZXF1aXJlc19JRUVFXzc1NAogICAgIGRlZiB0ZXN0X210ZXN0ZmlsZShzZWxmKToKLSAgICAgICAgZmFpbF9mbXQgPSAie306e30oeyFyfSk6IGV4cGVjdGVkIHshcn0sIGdvdCB7IXJ9IgorICAgICAgICBmYWlsX2ZtdCA9ICJ7fToge30oeyFyfSk6IHt9IgogCiAgICAgICAgIGZhaWx1cmVzID0gW10KICAgICAgICAgZm9yIGlkLCBmbiwgYXJnLCBleHBlY3RlZCwgZmxhZ3MgaW4gcGFyc2VfbXRlc3RmaWxlKG1hdGhfdGVzdGNhc2VzKToKQEAgLTExMjUsNDEgKzEyMzksNDggQEAKICAgICAgICAgICAgIGV4Y2VwdCBPdmVyZmxvd0Vycm9yOgogICAgICAgICAgICAgICAgIGdvdCA9ICdPdmVyZmxvd0Vycm9yJwogCi0gICAgICAgICAgICBhY2N1cmFjeV9mYWlsdXJlID0gTm9uZQotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShnb3QsIGZsb2F0KSBhbmQgaXNpbnN0YW5jZShleHBlY3RlZCwgZmxvYXQpOgotICAgICAgICAgICAgICAgIGlmIG1hdGguaXNuYW4oZXhwZWN0ZWQpIGFuZCBtYXRoLmlzbmFuKGdvdCk6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgaWYgbm90IG1hdGguaXNuYW4oZXhwZWN0ZWQpIGFuZCBub3QgbWF0aC5pc25hbihnb3QpOgotICAgICAgICAgICAgICAgICAgICBpZiBmbiA9PSAnbGdhbW1hJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICMgd2UgdXNlIGEgd2Vha2VyIGFjY3VyYWN5IHRlc3QgZm9yIGxnYW1tYTsKLSAgICAgICAgICAgICAgICAgICAgICAgICMgbGdhbW1hIG9ubHkgYWNoaWV2ZXMgYW4gYWJzb2x1dGUgZXJyb3Igb2YKLSAgICAgICAgICAgICAgICAgICAgICAgICMgYSBmZXcgbXVsdGlwbGVzIG9mIHRoZSBtYWNoaW5lIGFjY3VyYWN5LCBpbgotICAgICAgICAgICAgICAgICAgICAgICAgIyBnZW5lcmFsLgotICAgICAgICAgICAgICAgICAgICAgICAgYWNjdXJhY3lfZmFpbHVyZSA9IGFjY19jaGVjayhleHBlY3RlZCwgZ290LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxfZXJyID0gNWUtMTUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic19lcnIgPSA1ZS0xNSkKLSAgICAgICAgICAgICAgICAgICAgZWxpZiBmbiA9PSAnZXJmYyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIGVyZmMgaGFzIGxlc3MtdGhhbi1pZGVhbCBhY2N1cmFjeSBmb3IgbGFyZ2UKLSAgICAgICAgICAgICAgICAgICAgICAgICMgYXJndW1lbnRzICh4IH4gMjUgb3Igc28pLCBtYWlubHkgZHVlIHRvIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgIyBlcnJvciBpbnZvbHZlZCBpbiBjb21wdXRpbmcgZXhwKC14KngpLgotICAgICAgICAgICAgICAgICAgICAgICAgIwotICAgICAgICAgICAgICAgICAgICAgICAgIyBYWFggV291bGQgYmUgYmV0dGVyIHRvIHdlYWtlbiB0aGlzIHRlc3Qgb25seQotICAgICAgICAgICAgICAgICAgICAgICAgIyBmb3IgbGFyZ2UgeCwgaW5zdGVhZCBvZiBmb3IgYWxsIHguCi0gICAgICAgICAgICAgICAgICAgICAgICBhY2N1cmFjeV9mYWlsdXJlID0gdWxwc19jaGVjayhleHBlY3RlZCwgZ290LCAyMDAwKQorICAgICAgICAgICAgIyBEZWZhdWx0IHRvbGVyYW5jZXMKKyAgICAgICAgICAgIHVscF90b2wsIGFic190b2wgPSA1LCAwLjAKIAotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgYWNjdXJhY3lfZmFpbHVyZSA9IHVscHNfY2hlY2soZXhwZWN0ZWQsIGdvdCwgMjApCi0gICAgICAgICAgICAgICAgICAgIGlmIGFjY3VyYWN5X2ZhaWx1cmUgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAjIEV4Y2VwdGlvbnMgdG8gdGhlIGRlZmF1bHRzCisgICAgICAgICAgICBpZiBmbiA9PSAnZ2FtbWEnOgorICAgICAgICAgICAgICAgICMgRXhwZXJpbWVudGFsIHJlc3VsdHMgb24gb25lIHBsYXRmb3JtIGdhdmUKKyAgICAgICAgICAgICAgICAjIGFuIGFjY3VyYWN5IG9mIDw9IDEwIHVscHMgYWNyb3NzIHRoZSBlbnRpcmUgZmxvYXQKKyAgICAgICAgICAgICAgICAjIGRvbWFpbi4gV2Ugd2Vha2VuIHRoYXQgdG8gcmVxdWlyZSAyMCB1bHAgYWNjdXJhY3kuCisgICAgICAgICAgICAgICAgdWxwX3RvbCA9IDIwCiAKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZ290LCBzdHIpIGFuZCBpc2luc3RhbmNlKGV4cGVjdGVkLCBzdHIpOgotICAgICAgICAgICAgICAgIGlmIGdvdCA9PSBleHBlY3RlZDoKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGVsaWYgZm4gPT0gJ2xnYW1tYSc6CisgICAgICAgICAgICAgICAgIyB3ZSB1c2UgYSB3ZWFrZXIgYWNjdXJhY3kgdGVzdCBmb3IgbGdhbW1hOworICAgICAgICAgICAgICAgICMgbGdhbW1hIG9ubHkgYWNoaWV2ZXMgYW4gYWJzb2x1dGUgZXJyb3Igb2YKKyAgICAgICAgICAgICAgICAjIGEgZmV3IG11bHRpcGxlcyBvZiB0aGUgbWFjaGluZSBhY2N1cmFjeSwgaW4KKyAgICAgICAgICAgICAgICAjIGdlbmVyYWwuCisgICAgICAgICAgICAgICAgYWJzX3RvbCA9IDFlLTE1CiAKLSAgICAgICAgICAgIGZhaWxfbXNnID0gZmFpbF9mbXQuZm9ybWF0KGlkLCBmbiwgYXJnLCBleHBlY3RlZCwgZ290KQotICAgICAgICAgICAgaWYgYWNjdXJhY3lfZmFpbHVyZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBmYWlsX21zZyArPSAnICh7fSknLmZvcm1hdChhY2N1cmFjeV9mYWlsdXJlKQotICAgICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKGZhaWxfbXNnKQorICAgICAgICAgICAgZWxpZiBmbiA9PSAnZXJmYycgYW5kIGFyZyA+PSAwLjA6CisgICAgICAgICAgICAgICAgIyBlcmZjIGhhcyBsZXNzLXRoYW4taWRlYWwgYWNjdXJhY3kgZm9yIGxhcmdlCisgICAgICAgICAgICAgICAgIyBhcmd1bWVudHMgKHggfiAyNSBvciBzbyksIG1haW5seSBkdWUgdG8gdGhlCisgICAgICAgICAgICAgICAgIyBlcnJvciBpbnZvbHZlZCBpbiBjb21wdXRpbmcgZXhwKC14KngpLgorICAgICAgICAgICAgICAgICMKKyAgICAgICAgICAgICAgICAjIE9ic2VydmVkIGJldHdlZW4gQ1B5dGhvbiBhbmQgbXBtYXRoIGF0IDI1IGRwOgorICAgICAgICAgICAgICAgICMgICAgICAgeCA8ICAwIDogZXJyIDw9IDIgdWxwCisgICAgICAgICAgICAgICAgIyAgMCA8PSB4IDwgIDEgOiBlcnIgPD0gMTAgdWxwCisgICAgICAgICAgICAgICAgIyAgMSA8PSB4IDwgMTAgOiBlcnIgPD0gMTAwIHVscAorICAgICAgICAgICAgICAgICMgMTAgPD0geCA8IDIwIDogZXJyIDw9IDMwMCB1bHAKKyAgICAgICAgICAgICAgICAjIDIwIDw9IHggICAgICA6IDwgNjAwIHVscAorICAgICAgICAgICAgICAgICMKKyAgICAgICAgICAgICAgICBpZiBhcmcgPCAxLjA6CisgICAgICAgICAgICAgICAgICAgIHVscF90b2wgPSAxMAorICAgICAgICAgICAgICAgIGVsaWYgYXJnIDwgMTAuMDoKKyAgICAgICAgICAgICAgICAgICAgdWxwX3RvbCA9IDEwMAorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHVscF90b2wgPSAxMDAwCisKKyAgICAgICAgICAgIGZhaWx1cmUgPSByZXN1bHRfY2hlY2soZXhwZWN0ZWQsIGdvdCwgdWxwX3RvbCwgYWJzX3RvbCkKKyAgICAgICAgICAgIGlmIGZhaWx1cmUgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBtc2cgPSBmYWlsX2ZtdC5mb3JtYXQoaWQsIGZuLCBhcmcsIGZhaWx1cmUpCisgICAgICAgICAgICBmYWlsdXJlcy5hcHBlbmQobXNnKQogCiAgICAgICAgIGlmIGZhaWx1cmVzOgogICAgICAgICAgICAgc2VsZi5mYWlsKCdGYWlsdXJlcyBpbiB0ZXN0X210ZXN0ZmlsZTpcbiAgJyArCkBAIC0xMjcyLDcgKzEzOTMsOCBAQAogCiAgICAgICAgIGRlY2ltYWxfZXhhbXBsZXMgPSBbKERlY2ltYWwoJzEuMDAwMDAwMDEnKSwgRGVjaW1hbCgnMS4wJykpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChEZWNpbWFsKCcxLjAwMDAwMDAxZS0yMCcpLCBEZWNpbWFsKCcxLjBlLTIwJykpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChEZWNpbWFsKCcxLjAwMDAwMDAxZS0xMDAnKSwgRGVjaW1hbCgnMS4wZS0xMDAnKSldCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKERlY2ltYWwoJzEuMDAwMDAwMDFlLTEwMCcpLCBEZWNpbWFsKCcxLjBlLTEwMCcpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRGVjaW1hbCgnMS4wMDAwMDAwMWUyMCcpLCBEZWNpbWFsKCcxLjBlMjAnKSldCiAgICAgICAgIHNlbGYuYXNzZXJ0QWxsQ2xvc2UoZGVjaW1hbF9leGFtcGxlcywgcmVsX3RvbD0xZS04KQogICAgICAgICBzZWxmLmFzc2VydEFsbE5vdENsb3NlKGRlY2ltYWxfZXhhbXBsZXMsIHJlbF90b2w9MWUtOSkKIApAQCAtMTI4MCw4ICsxNDAyLDEwIEBACiAgICAgICAgICMgdGVzdCB3aXRoIEZyYWN0aW9uIHZhbHVlcwogICAgICAgICBmcm9tIGZyYWN0aW9ucyBpbXBvcnQgRnJhY3Rpb24KIAotICAgICAgICAjIGNvdWxkIHVzZSBzb21lIG1vcmUgZXhhbXBsZXMgaGVyZSEKLSAgICAgICAgZnJhY3Rpb25fZXhhbXBsZXMgPSBbKEZyYWN0aW9uKDEsIDEwMDAwMDAwMCkgKyAxLCBGcmFjdGlvbigxKSldCisgICAgICAgIGZyYWN0aW9uX2V4YW1wbGVzID0gWworICAgICAgICAgICAgKEZyYWN0aW9uKDEsIDEwMDAwMDAwMCkgKyAxLCBGcmFjdGlvbigxKSksCisgICAgICAgICAgICAoRnJhY3Rpb24oMTAwMDAwMDAxKSwgRnJhY3Rpb24oMTAwMDAwMDAwKSksCisgICAgICAgICAgICAoRnJhY3Rpb24oMTAqKjggKyAxLCAxMCoqMjgpLCBGcmFjdGlvbigxLCAxMCoqMjApKV0KICAgICAgICAgc2VsZi5hc3NlcnRBbGxDbG9zZShmcmFjdGlvbl9leGFtcGxlcywgcmVsX3RvbD0xZS04KQogICAgICAgICBzZWxmLmFzc2VydEFsbE5vdENsb3NlKGZyYWN0aW9uX2V4YW1wbGVzLCByZWxfdG9sPTFlLTkpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWltZXR5cGVzLnB5IGIvTGliL3Rlc3QvdGVzdF9taW1ldHlwZXMucHkKaW5kZXggNjg1NjU5My4uNGUyYzkwOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9taW1ldHlwZXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9taW1ldHlwZXMucHkKQEAgLTEwMSw1ICsxMDEsMTEgQEAKICAgICAgICAgZXEoc2VsZi5kYi5ndWVzc190eXBlKCJpbWFnZS5qcGciKSwgKCJpbWFnZS9qcGVnIiwgTm9uZSkpCiAgICAgICAgIGVxKHNlbGYuZGIuZ3Vlc3NfdHlwZSgiaW1hZ2UucG5nIiksICgiaW1hZ2UvcG5nIiwgTm9uZSkpCiAKKworY2xhc3MgTWlzY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIG1pbWV0eXBlcykKKworCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tbWFwLnB5IGIvTGliL3Rlc3QvdGVzdF9tbWFwLnB5CmluZGV4IGYzZjcwY2MuLjU2ZDg1ZTcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbW1hcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X21tYXAucHkKQEAgLTcxMyw2ICs3MTMsMTMgQEAKICAgICAgICAgZ2NfY29sbGVjdCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMod3IoKSwgTm9uZSkKIAorICAgIGRlZiB0ZXN0X3dyaXRlX3JldHVybmluZ190aGVfbnVtYmVyX29mX2J5dGVzX3dyaXR0ZW4oc2VsZik6CisgICAgICAgIG1tID0gbW1hcC5tbWFwKC0xLCAxNikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtbS53cml0ZShiIiIpLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1tLndyaXRlKGIieCIpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1tLndyaXRlKGIieXoiKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtbS53cml0ZShiInB5dGhvbiIpLCA2KQorCiAgICAgQHVuaXR0ZXN0LnNraXBJZihvcy5uYW1lID09ICdudCcsICdjYW5ub3QgcmVzaXplIGFub255bW91cyBtbWFwcyBvbiBXaW5kb3dzJykKICAgICBkZWYgdGVzdF9yZXNpemVfcGFzdF9wb3Moc2VsZik6CiAgICAgICAgIG0gPSBtbWFwLm1tYXAoLTEsIDgxOTIpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21zaWxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfbXNpbGliLnB5CmluZGV4IDhlZjMzNGYuLmY2NTZmNzIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbXNpbGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbXNpbGliLnB5CkBAIC0xLDYgKzEsNSBAQAogIiIiIFRlc3Qgc3VpdGUgZm9yIHRoZSBjb2RlIGluIG1zaWxpYiAiIiIKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IG9zCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgaW1wb3J0X21vZHVsZQogbXNpbGliID0gaW1wb3J0X21vZHVsZSgnbXNpbGliJykKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tdWx0aWJ5dGVjb2RlYy5weSBiL0xpYi90ZXN0L3Rlc3RfbXVsdGlieXRlY29kZWMucHkKaW5kZXggOGQ3YTIxMy4uMDFhMWNkMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tdWx0aWJ5dGVjb2RlYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X211bHRpYnl0ZWNvZGVjLnB5CkBAIC01LDcgKzUsNyBAQAogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4KLWltcG9ydCB1bml0dGVzdCwgaW8sIGNvZGVjcywgc3lzLCBvcworaW1wb3J0IHVuaXR0ZXN0LCBpbywgY29kZWNzLCBzeXMKIGltcG9ydCBfbXVsdGlieXRlY29kZWMKIAogQUxMX0NKS0VOQ09ESU5HUyA9IFsKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nX2ZvcmsucHkgYi9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZ19mb3JrLnB5CmluZGV4IDJiZjRlNzUuLjlmMjI1MDAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nX2ZvcmsucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tdWx0aXByb2Nlc3NpbmdfZm9yay5weQpAQCAtMSw2ICsxLDEyIEBACiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB0ZXN0Ll90ZXN0X211bHRpcHJvY2Vzc2luZwogCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKKworaWYgc3VwcG9ydC5QR086CisgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoInRlc3QgaXMgbm90IGhlbHBmdWwgZm9yIFBHTyIpCisKKwogdGVzdC5fdGVzdF9tdWx0aXByb2Nlc3NpbmcuaW5zdGFsbF90ZXN0c19pbl9tb2R1bGVfZGljdChnbG9iYWxzKCksICdmb3JrJykKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nX2ZvcmtzZXJ2ZXIucHkgYi9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZ19mb3Jrc2VydmVyLnB5CmluZGV4IDE5M2EwNGEuLjQwN2JiM2YgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nX2ZvcmtzZXJ2ZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tdWx0aXByb2Nlc3NpbmdfZm9ya3NlcnZlci5weQpAQCAtMSw2ICsxLDExIEBACiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB0ZXN0Ll90ZXN0X211bHRpcHJvY2Vzc2luZwogCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKKworaWYgc3VwcG9ydC5QR086CisgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoInRlc3QgaXMgbm90IGhlbHBmdWwgZm9yIFBHTyIpCisKIHRlc3QuX3Rlc3RfbXVsdGlwcm9jZXNzaW5nLmluc3RhbGxfdGVzdHNfaW5fbW9kdWxlX2RpY3QoZ2xvYmFscygpLCAnZm9ya3NlcnZlcicpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZ19tYWluX2hhbmRsaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF9tdWx0aXByb2Nlc3NpbmdfbWFpbl9oYW5kbGluZy5weQppbmRleCA1MjI3M2VhLi4zMjU5M2RhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZ19tYWluX2hhbmRsaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nX21haW5faGFuZGxpbmcucHkKQEAgLTYsNyArNiw2IEBACiAKIGltcG9ydCBpbXBvcnRsaWIKIGltcG9ydCBpbXBvcnRsaWIubWFjaGluZXJ5Ci1pbXBvcnQgemlwaW1wb3J0CiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBzeXMKIGltcG9ydCBvcwpAQCAtMTUsNyArMTQsMTAgQEAKIAogZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgKAogICAgIG1ha2VfcGtnLCBtYWtlX3NjcmlwdCwgbWFrZV96aXBfcGtnLCBtYWtlX3ppcF9zY3JpcHQsCi0gICAgYXNzZXJ0X3B5dGhvbl9vaywgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlLCBzcGF3bl9weXRob24sIGtpbGxfcHl0aG9uKQorICAgIGFzc2VydF9weXRob25fb2spCisKK2lmIHN1cHBvcnQuUEdPOgorICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJ0ZXN0IGlzIG5vdCBoZWxwZnVsIGZvciBQR08iKQogCiAjIExvb2sgdXAgd2hpY2ggc3RhcnQgbWV0aG9kcyBhcmUgYXZhaWxhYmxlIHRvIHRlc3QKIGltcG9ydCBtdWx0aXByb2Nlc3NpbmcKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nX3NwYXduLnB5IGIvTGliL3Rlc3QvdGVzdF9tdWx0aXByb2Nlc3Npbmdfc3Bhd24ucHkKaW5kZXggMzM0YWU5ZS4uNjU1ODk1MiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tdWx0aXByb2Nlc3Npbmdfc3Bhd24ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tdWx0aXByb2Nlc3Npbmdfc3Bhd24ucHkKQEAgLTEsNiArMSwxMSBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgdGVzdC5fdGVzdF9tdWx0aXByb2Nlc3NpbmcKIAorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisKK2lmIHN1cHBvcnQuUEdPOgorICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJ0ZXN0IGlzIG5vdCBoZWxwZnVsIGZvciBQR08iKQorCiB0ZXN0Ll90ZXN0X211bHRpcHJvY2Vzc2luZy5pbnN0YWxsX3Rlc3RzX2luX21vZHVsZV9kaWN0KGdsb2JhbHMoKSwgJ3NwYXduJykKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbmlzLnB5IGIvTGliL3Rlc3QvdGVzdF9uaXMucHkKaW5kZXggMzg3YTRlNy4uMjEwNzRjNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9uaXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9uaXMucHkKQEAgLTEsNiArMSw1IEBACiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IHN5cwogCiAjIFNraXAgdGVzdCBpZiBuaXMgbW9kdWxlIGRvZXMgbm90IGV4aXN0LgogbmlzID0gc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCduaXMnKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9ubnRwbGliLnB5IGIvTGliL3Rlc3QvdGVzdF9ubnRwbGliLnB5CmluZGV4IDY2ZWY5MzAuLmM0NmRlZDEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfbm50cGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X25udHBsaWIucHkKQEAgLTE1NDQsOCArMTU0NCwxMCBAQAogICAgICAgICAgICAgICAgIGVsaWYgY21kID09IGInU1RBUlRUTFNcclxuJzoKICAgICAgICAgICAgICAgICAgICAgcmVhZGVyLmNsb3NlKCkKICAgICAgICAgICAgICAgICAgICAgY2xpZW50LnNlbmRhbGwoYiczODIgQmVnaW4gVExTIG5lZ290aWF0aW9uIG5vd1xyXG4nKQotICAgICAgICAgICAgICAgICAgICBjbGllbnQgPSBzc2wud3JhcF9zb2NrZXQoCi0gICAgICAgICAgICAgICAgICAgICAgICBjbGllbnQsIHNlcnZlcl9zaWRlPVRydWUsIGNlcnRmaWxlPWNlcnRmaWxlKQorICAgICAgICAgICAgICAgICAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoKQorICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmxvYWRfY2VydF9jaGFpbihjZXJ0ZmlsZSkKKyAgICAgICAgICAgICAgICAgICAgY2xpZW50ID0gY29udGV4dC53cmFwX3NvY2tldCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudCwgc2VydmVyX3NpZGU9VHJ1ZSkKICAgICAgICAgICAgICAgICAgICAgY2xlYW51cC5lbnRlcl9jb250ZXh0KGNsaWVudCkKICAgICAgICAgICAgICAgICAgICAgcmVhZGVyID0gY2xlYW51cC5lbnRlcl9jb250ZXh0KGNsaWVudC5tYWtlZmlsZSgncmInKSkKICAgICAgICAgICAgICAgICBlbGlmIGNtZCA9PSBiJ1FVSVRcclxuJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfbm9ybWFsaXphdGlvbi5weSBiL0xpYi90ZXN0L3Rlc3Rfbm9ybWFsaXphdGlvbi5weQppbmRleCAzMGZhNjEyLi41YjU5MGUxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X25vcm1hbGl6YXRpb24ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9ub3JtYWxpemF0aW9uLnB5CkBAIC0zLDcgKzMsNiBAQAogCiBmcm9tIGh0dHAuY2xpZW50IGltcG9ydCBIVFRQRXhjZXB0aW9uCiBpbXBvcnQgc3lzCi1pbXBvcnQgb3MKIGZyb20gdW5pY29kZWRhdGEgaW1wb3J0IG5vcm1hbGl6ZSwgdW5pZGF0YV92ZXJzaW9uCiAKIFRFU1REQVRBRklMRSA9ICJOb3JtYWxpemF0aW9uVGVzdC50eHQiCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X250cGF0aC5weSBiL0xpYi90ZXN0L3Rlc3RfbnRwYXRoLnB5CmluZGV4IDU4MGYyMDMuLjkwZWRiNmQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbnRwYXRoLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbnRwYXRoLnB5CkBAIC00NTIsNSArNDUyLDg4IEBACiAgICAgYXR0cmlidXRlcyA9IFsncmVscGF0aCcsICdzcGxpdHVuYyddCiAKIAorY2xhc3MgUGF0aExpa2VUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBwYXRoID0gbnRwYXRoCisKKyAgICBjbGFzcyBQYXRoTGlrZToKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGg9JycpOgorICAgICAgICAgICAgc2VsZi5wYXRoID0gcGF0aAorICAgICAgICBkZWYgX19mc3BhdGhfXyhzZWxmKToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5wYXRoLCBCYXNlRXhjZXB0aW9uKToKKyAgICAgICAgICAgICAgICByYWlzZSBzZWxmLnBhdGgKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucGF0aAorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmZpbGVfbmFtZSA9IHN1cHBvcnQuVEVTVEZOLmxvd2VyKCkKKyAgICAgICAgc2VsZi5maWxlX3BhdGggPSBzZWxmLlBhdGhMaWtlKHN1cHBvcnQuVEVTVEZOKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHNlbGYuZmlsZV9uYW1lKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlX25hbWUsICd4YicsIDApIGFzIGZpbGU6CisgICAgICAgICAgICBmaWxlLndyaXRlKGIidGVzdF9udHBhdGguUGF0aExpa2VUZXN0cyIpCisKKyAgICBkZWYgYXNzZXJ0UGF0aEVxdWFsKHNlbGYsIGZ1bmMpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZ1bmMoc2VsZi5maWxlX3BhdGgpLCBmdW5jKHNlbGYuZmlsZV9uYW1lKSkKKworICAgIGRlZiB0ZXN0X3BhdGhfbm9ybWNhc2Uoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5ub3JtY2FzZSkKKworICAgIGRlZiB0ZXN0X3BhdGhfaXNhYnMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5pc2FicykKKworICAgIGRlZiB0ZXN0X3BhdGhfam9pbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnBhdGguam9pbignYScsIHNlbGYuUGF0aExpa2UoJ2InKSwgJ2MnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnBhdGguam9pbignYScsICdiJywgJ2MnKSkKKworICAgIGRlZiB0ZXN0X3BhdGhfc3BsaXQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5zcGxpdCkKKworICAgIGRlZiB0ZXN0X3BhdGhfc3BsaXRleHQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5zcGxpdGV4dCkKKworICAgIGRlZiB0ZXN0X3BhdGhfc3BsaXRkcml2ZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLnNwbGl0ZHJpdmUpCisKKyAgICBkZWYgdGVzdF9wYXRoX2Jhc2VuYW1lKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguYmFzZW5hbWUpCisKKyAgICBkZWYgdGVzdF9wYXRoX2Rpcm5hbWUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5kaXJuYW1lKQorCisgICAgZGVmIHRlc3RfcGF0aF9pc2xpbmsoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5pc2xpbmspCisKKyAgICBkZWYgdGVzdF9wYXRoX2xleGlzdHMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5sZXhpc3RzKQorCisgICAgZGVmIHRlc3RfcGF0aF9pc21vdW50KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguaXNtb3VudCkKKworICAgIGRlZiB0ZXN0X3BhdGhfZXhwYW5kdXNlcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLmV4cGFuZHVzZXIpCisKKyAgICBkZWYgdGVzdF9wYXRoX2V4cGFuZHZhcnMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5leHBhbmR2YXJzKQorCisgICAgZGVmIHRlc3RfcGF0aF9ub3JtcGF0aChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLm5vcm1wYXRoKQorCisgICAgZGVmIHRlc3RfcGF0aF9hYnNwYXRoKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguYWJzcGF0aCkKKworICAgIGRlZiB0ZXN0X3BhdGhfcmVhbHBhdGgoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5yZWFscGF0aCkKKworICAgIGRlZiB0ZXN0X3BhdGhfcmVscGF0aChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLnJlbHBhdGgpCisKKyAgICBkZWYgdGVzdF9wYXRoX2NvbW1vbnBhdGgoc2VsZik6CisgICAgICAgIGNvbW1vbl9wYXRoID0gc2VsZi5wYXRoLmNvbW1vbnBhdGgoW3NlbGYuZmlsZV9wYXRoLCBzZWxmLmZpbGVfbmFtZV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uX3BhdGgsIHNlbGYuZmlsZV9uYW1lKQorCisgICAgZGVmIHRlc3RfcGF0aF9pc2RpcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLmlzZGlyKQorCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X29wY29kZXMucHkgYi9MaWIvdGVzdC90ZXN0X29wY29kZXMucHkKaW5kZXggNmVmOTNkOS4uNjgwNmM2MSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9vcGNvZGVzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfb3Bjb2Rlcy5weQpAQCAtMSw2ICsxLDcgQEAKICMgUHl0aG9uIHRlc3Qgc2V0IC0tIHBhcnQgMiwgb3Bjb2RlcwogCiBpbXBvcnQgdW5pdHRlc3QKK2Zyb20gdGVzdCBpbXBvcnQgYW5uX21vZHVsZQogCiBjbGFzcyBPcGNvZGVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtMjAsNiArMjEsMzIgQEAKICAgICAgICAgaWYgbiAhPSA5MDoKICAgICAgICAgICAgIHNlbGYuZmFpbCgndHJ5IGluc2lkZSBmb3InKQogCisgICAgZGVmIHRlc3Rfc2V0dXBfYW5ub3RhdGlvbnNfbGluZShzZWxmKToKKyAgICAgICAgIyBjaGVjayB0aGF0IFNFVFVQX0FOTk9UQVRJT05TIGRvZXMgbm90IGNyZWF0ZSBzcHVyaW91cyBsaW5lIG51bWJlcnMKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBvcGVuKGFubl9tb2R1bGUuX19maWxlX18pIGFzIGY6CisgICAgICAgICAgICAgICAgdHh0ID0gZi5yZWFkKCkKKyAgICAgICAgICAgIGNvID0gY29tcGlsZSh0eHQsIGFubl9tb2R1bGUuX19maWxlX18sICdleGVjJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY28uY29fZmlyc3RsaW5lbm8sIDYpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3Rfbm9fYW5ub3RhdGlvbnNfaWZfbm90X25lZWRlZChzZWxmKToKKyAgICAgICAgY2xhc3MgQzogcGFzcworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIEMuX19hbm5vdGF0aW9uc19fCisKKyAgICBkZWYgdGVzdF91c2VfZXhpc3RpbmdfYW5ub3RhdGlvbnMoc2VsZik6CisgICAgICAgIG5zID0geydfX2Fubm90YXRpb25zX18nOiB7MTogMn19CisgICAgICAgIGV4ZWMoJ3g6IGludCcsIG5zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zWydfX2Fubm90YXRpb25zX18nXSwgeyd4JzogaW50LCAxOiAyfSkKKworICAgIGRlZiB0ZXN0X2RvX25vdF9yZWNyZWF0ZV9hbm5vdGF0aW9ucyhzZWxmKToKKyAgICAgICAgY2xhc3MgQzoKKyAgICAgICAgICAgIGRlbCBfX2Fubm90YXRpb25zX18KKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTmFtZUVycm9yKToKKyAgICAgICAgICAgICAgICB4OiBpbnQKKwogICAgIGRlZiB0ZXN0X3JhaXNlX2NsYXNzX2V4Y2VwdGlvbnMoc2VsZik6CiAKICAgICAgICAgY2xhc3MgQUNsYXNzKEV4Y2VwdGlvbik6IHBhc3MKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfb3BlcmF0b3IucHkgYi9MaWIvdGVzdC90ZXN0X29wZXJhdG9yLnB5CmluZGV4IGI1YmE5NzYuLjYyNTQwOTEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfb3BlcmF0b3IucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9vcGVyYXRvci5weQpAQCAtMTIwLDYzICsxMjAsNjMgQEAKICAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmFkZCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5hZGQsIE5vbmUsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5hZGQoMywgNCkgPT0gNykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5hZGQoMywgNCksIDcpCiAKICAgICBkZWYgdGVzdF9iaXR3aXNlX2FuZChzZWxmKToKICAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmFuZF8pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IuYW5kXywgTm9uZSwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLmFuZF8oMHhmLCAweGEpID09IDB4YSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5hbmRfKDB4ZiwgMHhhKSwgMHhhKQogCiAgICAgZGVmIHRlc3RfY29uY2F0KHNlbGYpOgogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IuY29uY2F0KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmNvbmNhdCwgTm9uZSwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLmNvbmNhdCgncHknLCAndGhvbicpID09ICdweXRob24nKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IuY29uY2F0KFsxLCAyXSwgWzMsIDRdKSA9PSBbMSwgMiwgMywgNF0pCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5jb25jYXQoU2VxMShbNSwgNl0pLCBTZXExKFs3XSkpID09IFs1LCA2LCA3XSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLmNvbmNhdChTZXEyKFs1LCA2XSksIFNlcTIoWzddKSkgPT0gWzUsIDYsIDddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLmNvbmNhdCgncHknLCAndGhvbicpLCAncHl0aG9uJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5jb25jYXQoWzEsIDJdLCBbMywgNF0pLCBbMSwgMiwgMywgNF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IuY29uY2F0KFNlcTEoWzUsIDZdKSwgU2VxMShbN10pKSwgWzUsIDYsIDddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLmNvbmNhdChTZXEyKFs1LCA2XSksIFNlcTIoWzddKSksIFs1LCA2LCA3XSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5jb25jYXQsIDEzLCAyOSkKIAogICAgIGRlZiB0ZXN0X2NvdW50T2Yoc2VsZik6CiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5jb3VudE9mKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmNvdW50T2YsIE5vbmUsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5jb3VudE9mKFsxLCAyLCAxLCAzLCAxLCA0XSwgMykgPT0gMSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLmNvdW50T2YoWzEsIDIsIDEsIDMsIDEsIDRdLCA1KSA9PSAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLmNvdW50T2YoWzEsIDIsIDEsIDMsIDEsIDRdLCAzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5jb3VudE9mKFsxLCAyLCAxLCAzLCAxLCA0XSwgNSksIDApCiAKICAgICBkZWYgdGVzdF9kZWxpdGVtKHNlbGYpOgogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIGEgPSBbNCwgMywgMiwgMV0KICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5kZWxpdGVtLCBhKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmRlbGl0ZW0sIGEsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5kZWxpdGVtKGEsIDEpIGlzIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhID09IFs0LCAyLCAxXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUob3BlcmF0b3IuZGVsaXRlbShhLCAxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCBbNCwgMiwgMV0pCiAKICAgICBkZWYgdGVzdF9mbG9vcmRpdihzZWxmKToKICAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmZsb29yZGl2LCA1KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmZsb29yZGl2LCBOb25lLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IuZmxvb3JkaXYoNSwgMikgPT0gMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5mbG9vcmRpdig1LCAyKSwgMikKIAogICAgIGRlZiB0ZXN0X3RydWVkaXYoc2VsZik6CiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci50cnVlZGl2LCA1KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLnRydWVkaXYsIE5vbmUsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci50cnVlZGl2KDUsIDIpID09IDIuNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci50cnVlZGl2KDUsIDIpLCAyLjUpCiAKICAgICBkZWYgdGVzdF9nZXRpdGVtKHNlbGYpOgogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIGEgPSByYW5nZSgxMCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5nZXRpdGVtKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmdldGl0ZW0sIGEsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5nZXRpdGVtKGEsIDIpID09IDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IuZ2V0aXRlbShhLCAyKSwgMikKIAogICAgIGRlZiB0ZXN0X2luZGV4T2Yoc2VsZik6CiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5pbmRleE9mKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmluZGV4T2YsIE5vbmUsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5pbmRleE9mKFs0LCAzLCAyLCAxXSwgMykgPT0gMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5pbmRleE9mKFs0LCAzLCAyLCAxXSwgMyksIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG9wZXJhdG9yLmluZGV4T2YsIFs0LCAzLCAyLCAxXSwgMCkKIAogICAgIGRlZiB0ZXN0X2ludmVydChzZWxmKToKQEAgLTE4OSwyMSArMTg5LDIxIEBACiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5sc2hpZnQpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IubHNoaWZ0LCBOb25lLCA0MikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLmxzaGlmdCg1LCAxKSA9PSAxMCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLmxzaGlmdCg1LCAwKSA9PSA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLmxzaGlmdCg1LCAxKSwgMTApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IubHNoaWZ0KDUsIDApLCA1KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBvcGVyYXRvci5sc2hpZnQsIDIsIC0xKQogCiAgICAgZGVmIHRlc3RfbW9kKHNlbGYpOgogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IubW9kKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLm1vZCwgTm9uZSwgNDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5tb2QoNSwgMikgPT0gMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5tb2QoNSwgMiksIDEpCiAKICAgICBkZWYgdGVzdF9tdWwoc2VsZik6CiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5tdWwpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IubXVsLCBOb25lLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IubXVsKDUsIDIpID09IDEwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLm11bCg1LCAyKSwgMTApCiAKICAgICBkZWYgdGVzdF9tYXRtdWwoc2VsZik6CiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKQEAgLTIyNyw3ICsyMjcsNyBAQAogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3Iub3JfKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLm9yXywgTm9uZSwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLm9yXygweGEsIDB4NSkgPT0gMHhmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLm9yXygweGEsIDB4NSksIDB4ZikKIAogICAgIGRlZiB0ZXN0X3BvcyhzZWxmKToKICAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQpAQCAtMjUwLDggKzI1MCw4IEBACiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5yc2hpZnQpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IucnNoaWZ0LCBOb25lLCA0MikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLnJzaGlmdCg1LCAxKSA9PSAyKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IucnNoaWZ0KDUsIDApID09IDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IucnNoaWZ0KDUsIDEpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLnJzaGlmdCg1LCAwKSwgNSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgb3BlcmF0b3IucnNoaWZ0LCAyLCAtMSkKIAogICAgIGRlZiB0ZXN0X2NvbnRhaW5zKHNlbGYpOgpAQCAtMjY2LDE1ICsyNjYsMTUgQEAKICAgICAgICAgYSA9IGxpc3QocmFuZ2UoMykpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3Iuc2V0aXRlbSwgYSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5zZXRpdGVtLCBhLCBOb25lLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3Iuc2V0aXRlbShhLCAwLCAyKSBpcyBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoYSA9PSBbMiwgMSwgMl0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG9wZXJhdG9yLnNldGl0ZW0oYSwgMCwgMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYSwgWzIsIDEsIDJdKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBvcGVyYXRvci5zZXRpdGVtLCBhLCA0LCAyKQogCiAgICAgZGVmIHRlc3Rfc3ViKHNlbGYpOgogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3Iuc3ViKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLnN1YiwgTm9uZSwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLnN1Yig1LCAyKSA9PSAzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLnN1Yig1LCAyKSwgMykKIAogICAgIGRlZiB0ZXN0X3RydXRoKHNlbGYpOgogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCkBAIC0yOTIsNyArMjkyLDcgQEAKICAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLnhvcikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci54b3IsIE5vbmUsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci54b3IoMHhiLCAweGMpID09IDB4NykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci54b3IoMHhiLCAweGMpLCAweDcpCiAKICAgICBkZWYgdGVzdF9pcyhzZWxmKToKICAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9vcHRwYXJzZS5weSBiL0xpYi90ZXN0L3Rlc3Rfb3B0cGFyc2UucHkKaW5kZXggNzYyMWMyNC4uOTFhMDMxOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9vcHRwYXJzZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X29wdHBhcnNlLnB5CkBAIC0xNiw2ICsxNiw3IEBACiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogCitpbXBvcnQgb3B0cGFyc2UKIGZyb20gb3B0cGFyc2UgaW1wb3J0IG1ha2Vfb3B0aW9uLCBPcHRpb24sIFwKICAgICAgVGl0bGVkSGVscEZvcm1hdHRlciwgT3B0aW9uUGFyc2VyLCBPcHRpb25Hcm91cCwgXAogICAgICBTVVBQUkVTU19VU0FHRSwgT3B0aW9uRXJyb3IsIE9wdGlvbkNvbmZsaWN0RXJyb3IsIFwKQEAgLTE2NTAsNiArMTY1MSwxMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib3B0aW9uIC1sOiBpbnZhbGlkIGludGVnZXIgdmFsdWU6ICcweDEyeCciKQogCiAKK2NsYXNzIE1pc2NUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICBibGFja2xpc3QgPSB7J2NoZWNrX2J1aWx0aW4nLCAnQW1iaWd1b3VzT3B0aW9uRXJyb3InLCAnTk9fREVGQVVMVCd9CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIG9wdHBhcnNlLCBibGFja2xpc3Q9YmxhY2tsaXN0KQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9vcmRlcmVkX2RpY3QucHkgYi9MaWIvdGVzdC90ZXN0X29yZGVyZWRfZGljdC5weQppbmRleCA5MDFkNGIyLi5hMzVlZDEyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X29yZGVyZWRfZGljdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X29yZGVyZWRfZGljdC5weQpAQCAtMSwzICsxLDQgQEAKK2ltcG9ydCBidWlsdGlucwogaW1wb3J0IGNvbnRleHRsaWIKIGltcG9ydCBjb3B5CiBpbXBvcnQgZ2MKQEAgLTk3LDYgKzk4LDE5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgT3JkZXJlZERpY3QoKS51cGRhdGUsICgpLCAoKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBPcmRlcmVkRGljdC51cGRhdGUpCiAKKyAgICBkZWYgdGVzdF9pbml0X2NhbGxzKHNlbGYpOgorICAgICAgICBjYWxscyA9IFtdCisgICAgICAgIGNsYXNzIFNwYW06CisgICAgICAgICAgICBkZWYga2V5cyhzZWxmKToKKyAgICAgICAgICAgICAgICBjYWxscy5hcHBlbmQoJ2tleXMnKQorICAgICAgICAgICAgICAgIHJldHVybiAoKQorICAgICAgICAgICAgZGVmIGl0ZW1zKHNlbGYpOgorICAgICAgICAgICAgICAgIGNhbGxzLmFwcGVuZCgnaXRlbXMnKQorICAgICAgICAgICAgICAgIHJldHVybiAoKQorCisgICAgICAgIHNlbGYuT3JkZXJlZERpY3QoU3BhbSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhbGxzLCBbJ2tleXMnXSkKKwogICAgIGRlZiB0ZXN0X2Zyb21rZXlzKHNlbGYpOgogICAgICAgICBPcmRlcmVkRGljdCA9IHNlbGYuT3JkZXJlZERpY3QKICAgICAgICAgb2QgPSBPcmRlcmVkRGljdC5mcm9ta2V5cygnYWJjJykKQEAgLTI5OCw5ICszMTIsMTEgQEAKICAgICAgICAgIyBkbyBub3Qgc2F2ZSBpbnN0YW5jZSBkaWN0aW9uYXJ5IGlmIG5vdCBuZWVkZWQKICAgICAgICAgcGFpcnMgPSBbKCdjJywgMSksICgnYicsIDIpLCAoJ2EnLCAzKSwgKCdkJywgNCksICgnZScsIDUpLCAoJ2YnLCA2KV0KICAgICAgICAgb2QgPSBPcmRlcmVkRGljdChwYWlycykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG9kLl9fZGljdF9fLCBkaWN0KQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShvZC5fX3JlZHVjZV9fKClbMl0pCiAgICAgICAgIG9kLnggPSAxMAotICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShvZC5fX3JlZHVjZV9fKClbMl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2QuX19kaWN0X19bJ3gnXSwgMTApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2QuX19yZWR1Y2VfXygpWzJdLCB7J3gnOiAxMH0pCiAKICAgICBkZWYgdGVzdF9waWNrbGVfcmVjdXJzaXZlKHNlbGYpOgogICAgICAgICBPcmRlcmVkRGljdCA9IHNlbGYuT3JkZXJlZERpY3QKQEAgLTQwMyw2ICs0MTksMTQgQEAKICAgICAgICAgb2QgPSBPcmRlcmVkRGljdCgqKmQpCiAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihzeXMuZ2V0c2l6ZW9mKG9kKSwgc3lzLmdldHNpemVvZihkKSkKIAorICAgIGRlZiB0ZXN0X3ZpZXdzKHNlbGYpOgorICAgICAgICBPcmRlcmVkRGljdCA9IHNlbGYuT3JkZXJlZERpY3QKKyAgICAgICAgIyBTZWUgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTI0Mjg2CisgICAgICAgIHMgPSAndGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciBhIGxhenkgZG9nIHllc3RlcmRheSBiZWZvcmUgZGF3bicuc3BsaXQoKQorICAgICAgICBvZCA9IE9yZGVyZWREaWN0LmZyb21rZXlzKHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2Qua2V5cygpLCBkaWN0KG9kKS5rZXlzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2QuaXRlbXMoKSwgZGljdChvZCkuaXRlbXMoKSkKKwogICAgIGRlZiB0ZXN0X292ZXJyaWRlX3VwZGF0ZShzZWxmKToKICAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLk9yZGVyZWREaWN0CiAgICAgICAgICMgVmVyaWZ5IHRoYXQgc3ViY2xhc3NlcyBjYW4gb3ZlcnJpZGUgdXBkYXRlKCkgd2l0aG91dCBicmVha2luZyBfX2luaXRfXygpCkBAIC02MTEsNiArNjM1LDI1IEBACiAgICAgT3JkZXJlZERpY3QgPSBweV9jb2xsLk9yZGVyZWREaWN0CiAKIAorY2xhc3MgQ1B5dGhvbkJ1aWx0aW5EaWN0VGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIkJ1aWx0aW4gZGljdCBwcmVzZXJ2ZXMgaW5zZXJ0aW9uIG9yZGVyLgorCisgICAgUmV1c2Ugc29tZSBvZiB0ZXN0cyBpbiBPcmRlcmVkRGljdCBzZWxlY3RpdmVseS4KKyAgICAiIiIKKworICAgIG1vZHVsZSA9IGJ1aWx0aW5zCisgICAgT3JkZXJlZERpY3QgPSBkaWN0CisKK2ZvciBtZXRob2QgaW4gKAorICAgICJ0ZXN0X2luaXQgdGVzdF91cGRhdGUgdGVzdF9hYmMgdGVzdF9jbGVhciB0ZXN0X2RlbGl0ZW0gIiArCisgICAgInRlc3Rfc2V0aXRlbSB0ZXN0X2RldGVjdF9kZWxldGlvbl9kdXJpbmdfaXRlcmF0aW9uICIgKworICAgICJ0ZXN0X3BvcGl0ZW0gdGVzdF9yZWluc2VydCB0ZXN0X292ZXJyaWRlX3VwZGF0ZSAiICsKKyAgICAidGVzdF9oaWdobHlfbmVzdGVkIHRlc3RfaGlnaGx5X25lc3RlZF9zdWJjbGFzcyAiICsKKyAgICAidGVzdF9kZWxpdGVtX2hhc2hfY29sbGlzaW9uICIpLnNwbGl0KCk6CisgICAgc2V0YXR0cihDUHl0aG9uQnVpbHRpbkRpY3RUZXN0cywgbWV0aG9kLCBnZXRhdHRyKE9yZGVyZWREaWN0VGVzdHMsIG1ldGhvZCkpCitkZWwgbWV0aG9kCisKKwogQHVuaXR0ZXN0LnNraXBVbmxlc3MoY19jb2xsLCAncmVxdWlyZXMgdGhlIEMgdmVyc2lvbiBvZiB0aGUgY29sbGVjdGlvbnMgbW9kdWxlJykKIGNsYXNzIENQeXRob25PcmRlcmVkRGljdFRlc3RzKE9yZGVyZWREaWN0VGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtNjI1LDE4ICs2NjgsMjAgQEAKICAgICAgICAgc2l6ZSA9IHN1cHBvcnQuY2FsY29ianNpemUKICAgICAgICAgY2hlY2sgPSBzZWxmLmNoZWNrX3NpemVvZgogCi0gICAgICAgIGJhc2ljc2l6ZSA9IHNpemUoJ24yUCcgKyAnM1BuUG4yUCcpICsgY2FsY3NpemUoJzJuUG4nKQotICAgICAgICBlbnRyeXNpemUgPSBjYWxjc2l6ZSgnbjJQJykgKyBjYWxjc2l6ZSgnUCcpCisgICAgICAgIGJhc2ljc2l6ZSA9IHNpemUoJ25RMlAnICsgJzNQblBuMlAnKSArIGNhbGNzaXplKCcyblAybicpCisKKyAgICAgICAgZW50cnlzaXplID0gY2FsY3NpemUoJ24yUCcpCisgICAgICAgIHAgPSBjYWxjc2l6ZSgnUCcpCiAgICAgICAgIG5vZGVzaXplID0gY2FsY3NpemUoJ1BuMlAnKQogCiAgICAgICAgIG9kID0gT3JkZXJlZERpY3QoKQotICAgICAgICBjaGVjayhvZCwgYmFzaWNzaXplICsgOCplbnRyeXNpemUpCisgICAgICAgIGNoZWNrKG9kLCBiYXNpY3NpemUgKyA4KnAgKyA4ICsgNSplbnRyeXNpemUpICAjIDhieXRlIGluZGljaWVzICsgOCoyLy8zICogZW50cnkgdGFibGUKICAgICAgICAgb2QueCA9IDEKLSAgICAgICAgY2hlY2sob2QsIGJhc2ljc2l6ZSArIDgqZW50cnlzaXplKQorICAgICAgICBjaGVjayhvZCwgYmFzaWNzaXplICsgOCpwICsgOCArIDUqZW50cnlzaXplKQogICAgICAgICBvZC51cGRhdGUoWyhpLCBpKSBmb3IgaSBpbiByYW5nZSgzKV0pCi0gICAgICAgIGNoZWNrKG9kLCBiYXNpY3NpemUgKyA4KmVudHJ5c2l6ZSArIDMqbm9kZXNpemUpCisgICAgICAgIGNoZWNrKG9kLCBiYXNpY3NpemUgKyA4KnAgKyA4ICsgNSplbnRyeXNpemUgKyAzKm5vZGVzaXplKQogICAgICAgICBvZC51cGRhdGUoWyhpLCBpKSBmb3IgaSBpbiByYW5nZSgzLCAxMCldKQotICAgICAgICBjaGVjayhvZCwgYmFzaWNzaXplICsgMTYqZW50cnlzaXplICsgMTAqbm9kZXNpemUpCisgICAgICAgIGNoZWNrKG9kLCBiYXNpY3NpemUgKyAxNipwICsgMTYgKyAxMCplbnRyeXNpemUgKyAxMCpub2Rlc2l6ZSkKIAogICAgICAgICBjaGVjayhvZC5rZXlzKCksIHNpemUoJ1AnKSkKICAgICAgICAgY2hlY2sob2QuaXRlbXMoKSwgc2l6ZSgnUCcpKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9vcy5weSBiL0xpYi90ZXN0L3Rlc3Rfb3MucHkKaW5kZXggMTAzODNjZi4uZTlmZGIwNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9vcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X29zLnB5CkBAIC0xNSw3ICsxNSw2IEBACiBpbXBvcnQgbW1hcAogaW1wb3J0IG9zCiBpbXBvcnQgcGlja2xlCi1pbXBvcnQgcGxhdGZvcm0KIGltcG9ydCByZQogaW1wb3J0IHNodXRpbAogaW1wb3J0IHNpZ25hbApAQCAtNTcsNyArNTYsNyBAQAogdHJ5OgogICAgIGltcG9ydCBwd2QKICAgICBhbGxfdXNlcnMgPSBbdS5wd191aWQgZm9yIHUgaW4gcHdkLmdldHB3YWxsKCldCi1leGNlcHQgSW1wb3J0RXJyb3I6CitleGNlcHQgKEltcG9ydEVycm9yLCBBdHRyaWJ1dGVFcnJvcik6CiAgICAgYWxsX3VzZXJzID0gW10KIHRyeToKICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgSU5UX01BWCwgUFlfU1NJWkVfVF9NQVgKQEAgLTY1LDYgKzY0LDggQEAKICAgICBJTlRfTUFYID0gUFlfU1NJWkVfVF9NQVggPSBzeXMubWF4c2l6ZQogCiBmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgdW5peF9zaGVsbAorCiAKIHJvb3RfaW5fcG9zaXggPSBGYWxzZQogaWYgaGFzYXR0cihvcywgJ2dldGV1aWQnKToKQEAgLTgyLDYgKzgzLDMyIEBACiAjIElzc3VlICMxNDExMDogU29tZSB0ZXN0cyBmYWlsIG9uIEZyZWVCU0QgaWYgdGhlIHVzZXIgaXMgaW4gdGhlIHdoZWVsIGdyb3VwLgogSEFWRV9XSEVFTF9HUk9VUCA9IHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdmcmVlYnNkJykgYW5kIG9zLmdldGdpZCgpID09IDAKIAorCitAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgorZGVmIGlnbm9yZV9kZXByZWNhdGlvbl93YXJuaW5ncyhtc2dfcmVnZXgsIHF1aWV0PUZhbHNlKToKKyAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKG1zZ19yZWdleCwgRGVwcmVjYXRpb25XYXJuaW5nKSwgcXVpZXQ9cXVpZXQpOgorICAgICAgICB5aWVsZAorCisKK2RlZiByZXF1aXJlc19vc19mdW5jKG5hbWUpOgorICAgIHJldHVybiB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsIG5hbWUpLCAncmVxdWlyZXMgb3MuJXMnICUgbmFtZSkKKworCitjbGFzcyBfUGF0aExpa2Uob3MuUGF0aExpa2UpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGg9IiIpOgorICAgICAgICBzZWxmLnBhdGggPSBwYXRoCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHN0cihzZWxmLnBhdGgpCisKKyAgICBkZWYgX19mc3BhdGhfXyhzZWxmKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShzZWxmLnBhdGgsIEJhc2VFeGNlcHRpb24pOgorICAgICAgICAgICAgcmFpc2Ugc2VsZi5wYXRoCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5wYXRoCisKKwogZGVmIGNyZWF0ZV9maWxlKGZpbGVuYW1lLCBjb250ZW50PWInY29udGVudCcpOgogICAgIHdpdGggb3BlbihmaWxlbmFtZSwgInhiIiwgMCkgYXMgZnA6CiAgICAgICAgIGZwLndyaXRlKGNvbnRlbnQpCkBAIC0xNDUsOSArMTcyLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAibmVlZHMgSU5UX01BWCA8IFBZX1NTSVpFX1RfTUFYIikKICAgICBAc3VwcG9ydC5iaWdtZW10ZXN0KHNpemU9SU5UX01BWCArIDEwLCBtZW11c2U9MSwgZHJ5X3J1bj1GYWxzZSkKICAgICBkZWYgdGVzdF9sYXJnZV9yZWFkKHNlbGYsIHNpemUpOgotICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5URVNURk4sICJ3YiIpIGFzIGZwOgotICAgICAgICAgICAgZnAud3JpdGUoYid0ZXN0JykKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgY3JlYXRlX2ZpbGUoc3VwcG9ydC5URVNURk4sIGIndGVzdCcpCiAKICAgICAgICAgIyBJc3N1ZSAjMjE5MzI6IE1ha2Ugc3VyZSB0aGF0IG9zLnJlYWQoKSBkb2VzIG5vdCByYWlzZSBhbgogICAgICAgICAjIE92ZXJmbG93RXJyb3IgZm9yIHNpemUgbGFyZ2VyIHRoYW4gSU5UX01BWApAQCAtMjA0LDExICsyMzAsMTIgQEAKIAogICAgIGRlZiB0ZXN0X3JlcGxhY2Uoc2VsZik6CiAgICAgICAgIFRFU1RGTjIgPSBzdXBwb3J0LlRFU1RGTiArICIuMiIKLSAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuVEVTVEZOLCAndycpIGFzIGY6Ci0gICAgICAgICAgICBmLndyaXRlKCIxIikKLSAgICAgICAgd2l0aCBvcGVuKFRFU1RGTjIsICd3JykgYXMgZjoKLSAgICAgICAgICAgIGYud3JpdGUoIjIiKQotICAgICAgICBzZWxmLmFkZENsZWFudXAob3MudW5saW5rLCBURVNURk4yKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHN1cHBvcnQuVEVTVEZOKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIFRFU1RGTjIpCisKKyAgICAgICAgY3JlYXRlX2ZpbGUoc3VwcG9ydC5URVNURk4sIGIiMSIpCisgICAgICAgIGNyZWF0ZV9maWxlKFRFU1RGTjIsIGIiMiIpCisKICAgICAgICAgb3MucmVwbGFjZShzdXBwb3J0LlRFU1RGTiwgVEVTVEZOMikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRmlsZU5vdEZvdW5kRXJyb3IsIG9zLnN0YXQsIHN1cHBvcnQuVEVTVEZOKQogICAgICAgICB3aXRoIG9wZW4oVEVTVEZOMiwgJ3InKSBhcyBmOgpAQCAtMzA5LDkgKzMzNiw3IEBACiAgICAgICAgICAgICBmbmFtZSA9IHNlbGYuZm5hbWUuZW5jb2RlKHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKSkKICAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoImNhbm5vdCBlbmNvZGUgJWEgZm9yIHRoZSBmaWxlc3lzdGVtIiAlIHNlbGYuZm5hbWUpCi0gICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKLSAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQotICAgICAgICAgICAgc2VsZi5jaGVja19zdGF0X2F0dHJpYnV0ZXMoZm5hbWUpCisgICAgICAgIHNlbGYuY2hlY2tfc3RhdF9hdHRyaWJ1dGVzKGZuYW1lKQogCiAgICAgZGVmIHRlc3Rfc3RhdF9yZXN1bHRfcGlja2xlKHNlbGYpOgogICAgICAgICByZXN1bHQgPSBvcy5zdGF0KHNlbGYuZm5hbWUpCkBAIC00NjIsMTkgKzQ4NywxNCBAQAogCiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnJtdHJlZSwgc2VsZi5kaXJuYW1lKQogICAgICAgICBvcy5ta2RpcihzZWxmLmRpcm5hbWUpCi0gICAgICAgIHdpdGggb3BlbihzZWxmLmZuYW1lLCAnd2InKSBhcyBmcDoKLSAgICAgICAgICAgIGZwLndyaXRlKGIiQUJDIikKKyAgICAgICAgY3JlYXRlX2ZpbGUoc2VsZi5mbmFtZSkKIAogICAgICAgICBkZWYgcmVzdG9yZV9mbG9hdF90aW1lcyhzdGF0ZSk6Ci0gICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6Ci0gICAgICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCi0KKyAgICAgICAgICAgIHdpdGggaWdub3JlX2RlcHJlY2F0aW9uX3dhcm5pbmdzKCdzdGF0X2Zsb2F0X3RpbWVzJyk6CiAgICAgICAgICAgICAgICAgb3Muc3RhdF9mbG9hdF90aW1lcyhzdGF0ZSkKIAogICAgICAgICAjIGVuc3VyZSB0aGF0IHN0X2F0aW1lIGFuZCBzdF9tdGltZSBhcmUgZmxvYXQKLSAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgotICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCi0KKyAgICAgICAgd2l0aCBpZ25vcmVfZGVwcmVjYXRpb25fd2FybmluZ3MoJ3N0YXRfZmxvYXRfdGltZXMnKToKICAgICAgICAgICAgIG9sZF9mbG9hdF90aW1lcyA9IG9zLnN0YXRfZmxvYXRfdGltZXMoLTEpCiAgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAocmVzdG9yZV9mbG9hdF90aW1lcywgb2xkX2Zsb2F0X3RpbWVzKQogCkBAIC01NjYsNyArNTg2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAiZmQgc3VwcG9ydCBmb3IgdXRpbWUgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4iKQogICAgIGRlZiB0ZXN0X3V0aW1lX2ZkKHNlbGYpOgogICAgICAgICBkZWYgc2V0X3RpbWUoZmlsZW5hbWUsIG5zKToKLSAgICAgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgJ3diJykgYXMgZnA6CisgICAgICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICd3YicsIDApIGFzIGZwOgogICAgICAgICAgICAgICAgICMgdXNlIGEgZmlsZSBkZXNjcmlwdG9yIHRvIHRlc3QgZnV0aW1lbnModGltZXNwZWMpCiAgICAgICAgICAgICAgICAgIyBvciBmdXRpbWVzKHRpbWV2YWwpCiAgICAgICAgICAgICAgICAgb3MudXRpbWUoZnAuZmlsZW5vKCksIG5zPW5zKQpAQCAtNjc4LDE4ICs2OTgsMjAgQEAKICAgICAgICAgcmV0dXJuIG9zLmVudmlyb24KIAogICAgICMgQnVnIDExMTA0NzgKLSAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5wYXRoLmV4aXN0cygnL2Jpbi9zaCcpLCAncmVxdWlyZXMgL2Jpbi9zaCcpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModW5peF9zaGVsbCBhbmQgb3MucGF0aC5leGlzdHModW5peF9zaGVsbCksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcXVpcmVzIGEgc2hlbGwnKQogICAgIGRlZiB0ZXN0X3VwZGF0ZTIoc2VsZik6CiAgICAgICAgIG9zLmVudmlyb24uY2xlYXIoKQogICAgICAgICBvcy5lbnZpcm9uLnVwZGF0ZShIRUxMTz0iV29ybGQiKQotICAgICAgICB3aXRoIG9zLnBvcGVuKCIvYmluL3NoIC1jICdlY2hvICRIRUxMTyciKSBhcyBwb3BlbjoKKyAgICAgICAgd2l0aCBvcy5wb3BlbigiJXMgLWMgJ2VjaG8gJEhFTExPJyIgJSB1bml4X3NoZWxsKSBhcyBwb3BlbjoKICAgICAgICAgICAgIHZhbHVlID0gcG9wZW4ucmVhZCgpLnN0cmlwKCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUsICJXb3JsZCIpCiAKLSAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5wYXRoLmV4aXN0cygnL2Jpbi9zaCcpLCAncmVxdWlyZXMgL2Jpbi9zaCcpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModW5peF9zaGVsbCBhbmQgb3MucGF0aC5leGlzdHModW5peF9zaGVsbCksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcXVpcmVzIGEgc2hlbGwnKQogICAgIGRlZiB0ZXN0X29zX3BvcGVuX2l0ZXIoc2VsZik6Ci0gICAgICAgIHdpdGggb3MucG9wZW4oCi0gICAgICAgICAgICAiL2Jpbi9zaCAtYyAnZWNobyBcImxpbmUxXG5saW5lMlxubGluZTNcIiciKSBhcyBwb3BlbjoKKyAgICAgICAgd2l0aCBvcy5wb3BlbigiJXMgLWMgJ2VjaG8gXCJsaW5lMVxubGluZTJcbmxpbmUzXCInIgorICAgICAgICAgICAgICAgICAgICAgICUgdW5peF9zaGVsbCkgYXMgcG9wZW46CiAgICAgICAgICAgICBpdCA9IGl0ZXIocG9wZW4pCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoaXQpLCAibGluZTFcbiIpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoaXQpLCAibGluZTJcbiIpCkBAIC04MjAsNiArODQyLDcgQEAKIAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgam9pbiA9IG9zLnBhdGguam9pbgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC5ybXRyZWUsIHN1cHBvcnQuVEVTVEZOKQogCiAgICAgICAgICMgQnVpbGQ6CiAgICAgICAgICMgICAgIFRFU1RGTi8KQEAgLTg0MiwxMSArODY1LDExIEBACiAgICAgICAgIHNlbGYuc3ViMV9wYXRoID0gam9pbihzZWxmLndhbGtfcGF0aCwgIlNVQjEiKQogICAgICAgICBzZWxmLnN1YjExX3BhdGggPSBqb2luKHNlbGYuc3ViMV9wYXRoLCAiU1VCMTEiKQogICAgICAgICBzdWIyX3BhdGggPSBqb2luKHNlbGYud2Fsa19wYXRoLCAiU1VCMiIpCi0gICAgICAgIHNlbGYuc3ViMjFfcGF0aCA9IGpvaW4oc3ViMl9wYXRoLCAiU1VCMjEiKQorICAgICAgICBzdWIyMV9wYXRoID0gam9pbihzdWIyX3BhdGgsICJTVUIyMSIpCiAgICAgICAgIHRtcDFfcGF0aCA9IGpvaW4oc2VsZi53YWxrX3BhdGgsICJ0bXAxIikKICAgICAgICAgdG1wMl9wYXRoID0gam9pbihzZWxmLnN1YjFfcGF0aCwgInRtcDIiKQogICAgICAgICB0bXAzX3BhdGggPSBqb2luKHN1YjJfcGF0aCwgInRtcDMiKQotICAgICAgICB0bXA1X3BhdGggPSBqb2luKHNlbGYuc3ViMjFfcGF0aCwgInRtcDMiKQorICAgICAgICB0bXA1X3BhdGggPSBqb2luKHN1YjIxX3BhdGgsICJ0bXAzIikKICAgICAgICAgc2VsZi5saW5rX3BhdGggPSBqb2luKHN1YjJfcGF0aCwgImxpbmsiKQogICAgICAgICB0Ml9wYXRoID0gam9pbihzdXBwb3J0LlRFU1RGTiwgIlRFU1QyIikKICAgICAgICAgdG1wNF9wYXRoID0gam9pbihzdXBwb3J0LlRFU1RGTiwgIlRFU1QyIiwgInRtcDQiKQpAQCAtODU3LDcgKzg4MCw3IEBACiAgICAgICAgICMgQ3JlYXRlIHN0dWZmLgogICAgICAgICBvcy5tYWtlZGlycyhzZWxmLnN1YjExX3BhdGgpCiAgICAgICAgIG9zLm1ha2VkaXJzKHN1YjJfcGF0aCkKLSAgICAgICAgb3MubWFrZWRpcnMoc2VsZi5zdWIyMV9wYXRoKQorICAgICAgICBvcy5tYWtlZGlycyhzdWIyMV9wYXRoKQogICAgICAgICBvcy5tYWtlZGlycyh0Ml9wYXRoKQogCiAgICAgICAgIGZvciBwYXRoIGluIHRtcDFfcGF0aCwgdG1wMl9wYXRoLCB0bXAzX3BhdGgsIHRtcDRfcGF0aCwgdG1wNV9wYXRoOgpAQCAtODc1LDE2ICs4OTgsMTUgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuc3ViMl90cmVlID0gKHN1YjJfcGF0aCwgW10sIFsidG1wMyJdKQogCi0gICAgICAgIG9zLmNobW9kKHNlbGYuc3ViMjFfcGF0aCwgMCkKKyAgICAgICAgb3MuY2htb2Qoc3ViMjFfcGF0aCwgMCkKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgb3MubGlzdGRpcihzZWxmLnN1YjIxX3BhdGgpCisgICAgICAgICAgICBvcy5saXN0ZGlyKHN1YjIxX3BhdGgpCiAgICAgICAgIGV4Y2VwdCBQZXJtaXNzaW9uRXJyb3I6Ci0gICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAob3MuY2htb2QsIHN1YjIxX3BhdGgsIHN0YXQuU19JUldYVSkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG9zLmNobW9kKHNlbGYuc3ViMjFfcGF0aCwgc3RhdC5TX0lSV1hVKQorICAgICAgICAgICAgb3MuY2htb2Qoc3ViMjFfcGF0aCwgc3RhdC5TX0lSV1hVKQogICAgICAgICAgICAgb3MudW5saW5rKHRtcDVfcGF0aCkKLSAgICAgICAgICAgIG9zLnJtZGlyKHNlbGYuc3ViMjFfcGF0aCkKLSAgICAgICAgICAgIHNlbGYuc3ViMjFfcGF0aCA9IE5vbmUKKyAgICAgICAgICAgIG9zLnJtZGlyKHN1YjIxX3BhdGgpCiAgICAgICAgICAgICBkZWwgc2VsZi5zdWIyX3RyZWVbMV1bOjFdCiAKICAgICBkZWYgdGVzdF93YWxrX3RvcGRvd24oc2VsZik6CkBAIC05MDQsMTAgKzkyNiwxMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFsbFsyICsgZmxpcHBlZF0sIChzZWxmLnN1YjExX3BhdGgsIFtdLCBbXSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWxsWzMgLSAyICogZmxpcHBlZF0sIHNlbGYuc3ViMl90cmVlKQogCi0gICAgZGVmIHRlc3Rfd2Fsa19wcnVuZShzZWxmKToKKyAgICBkZWYgdGVzdF93YWxrX3BydW5lKHNlbGYsIHdhbGtfcGF0aD1Ob25lKToKKyAgICAgICAgaWYgd2Fsa19wYXRoIGlzIE5vbmU6CisgICAgICAgICAgICB3YWxrX3BhdGggPSBzZWxmLndhbGtfcGF0aAogICAgICAgICAjIFBydW5lIHRoZSBzZWFyY2guCiAgICAgICAgIGFsbCA9IFtdCi0gICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBzZWxmLndhbGsoc2VsZi53YWxrX3BhdGgpOgorICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gc2VsZi53YWxrKHdhbGtfcGF0aCk6CiAgICAgICAgICAgICBhbGwuYXBwZW5kKChyb290LCBkaXJzLCBmaWxlcykpCiAgICAgICAgICAgICAjIERvbid0IGRlc2NlbmQgaW50byBTVUIxLgogICAgICAgICAgICAgaWYgJ1NVQjEnIGluIGRpcnM6CkBAIC05MTYsMTcgKzk0MCwyMCBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFsbCksIDIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWxsWzBdLAotICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLndhbGtfcGF0aCwgWyJTVUIyIl0sIFsidG1wMSJdKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyKHdhbGtfcGF0aCksIFsiU1VCMiJdLCBbInRtcDEiXSkpCiAKICAgICAgICAgYWxsWzFdWy0xXS5zb3J0KCkKICAgICAgICAgYWxsWzFdWzFdLnNvcnQoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFsbFsxXSwgc2VsZi5zdWIyX3RyZWUpCiAKKyAgICBkZWYgdGVzdF9maWxlX2xpa2VfcGF0aChzZWxmKToKKyAgICAgICAgc2VsZi50ZXN0X3dhbGtfcHJ1bmUoX1BhdGhMaWtlKHNlbGYud2Fsa19wYXRoKSkKKwogICAgIGRlZiB0ZXN0X3dhbGtfYm90dG9tX3VwKHNlbGYpOgogICAgICAgICAjIFdhbGsgYm90dG9tLXVwLgogICAgICAgICBhbGwgPSBsaXN0KHNlbGYud2FsayhzZWxmLndhbGtfcGF0aCwgdG9wZG93bj1GYWxzZSkpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWxsKSwgNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWxsKSwgNCwgYWxsKQogICAgICAgICAjIFdlIGNhbid0IGtub3cgd2hpY2ggb3JkZXIgU1VCMSBhbmQgU1VCMiB3aWxsIGFwcGVhciBpbi4KICAgICAgICAgIyBOb3QgZmxpcHBlZDogIFNVQjExLCBTVUIxLCBTVUIyLCBURVNURk4KICAgICAgICAgIyAgICAgZmxpcHBlZDogIFNVQjIsIFNVQjExLCBTVUIxLCBURVNURk4KQEAgLTk1NywyNCArOTg0LDYgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuZmFpbCgiRGlkbid0IGZvbGxvdyBzeW1saW5rIHdpdGggZm9sbG93bGlua3M9VHJ1ZSIpCiAKLSAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgICMgVGVhciBldmVyeXRoaW5nIGRvd24uICBUaGlzIGlzIGEgZGVjZW50IHVzZSBmb3IgYm90dG9tLXVwIG9uCi0gICAgICAgICMgV2luZG93cywgd2hpY2ggZG9lc24ndCBoYXZlIGEgcmVjdXJzaXZlIGRlbGV0ZSBjb21tYW5kLiAgVGhlCi0gICAgICAgICMgKG5vdCBzbykgc3VidGxldHkgaXMgdGhhdCBybWRpciB3aWxsIGZhaWwgdW5sZXNzIHRoZSBkaXIncwotICAgICAgICAjIGtpZHMgYXJlIHJlbW92ZWQgZmlyc3QsIHNvIGJvdHRvbSB1cCBpcyBlc3NlbnRpYWwuCi0gICAgICAgIGlmIHNlbGYuc3ViMjFfcGF0aDoKLSAgICAgICAgICAgIG9zLmNobW9kKHNlbGYuc3ViMjFfcGF0aCwgc3RhdC5TX0lSV1hVKQotICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhzdXBwb3J0LlRFU1RGTiwgdG9wZG93bj1GYWxzZSk6Ci0gICAgICAgICAgICBmb3IgbmFtZSBpbiBmaWxlczoKLSAgICAgICAgICAgICAgICBvcy5yZW1vdmUob3MucGF0aC5qb2luKHJvb3QsIG5hbWUpKQotICAgICAgICAgICAgZm9yIG5hbWUgaW4gZGlyczoKLSAgICAgICAgICAgICAgICBkaXJuYW1lID0gb3MucGF0aC5qb2luKHJvb3QsIG5hbWUpCi0gICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNsaW5rKGRpcm5hbWUpOgotICAgICAgICAgICAgICAgICAgICBvcy5ybWRpcihkaXJuYW1lKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIG9zLnJlbW92ZShkaXJuYW1lKQotICAgICAgICBvcy5ybWRpcihzdXBwb3J0LlRFU1RGTikKLQogICAgIGRlZiB0ZXN0X3dhbGtfYmFkX2RpcihzZWxmKToKICAgICAgICAgIyBXYWxrIHRvcC1kb3duLgogICAgICAgICBlcnJvcnMgPSBbXQpAQCAtMTA2MiwyOSArMTA3MSwxMSBAQAogICAgICAgICBzZWxmLmFkZENsZWFudXAob3MuY2xvc2UsIG5ld2ZkKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld2ZkLCBtaW5mZCkKIAotICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAgIyBjbGVhbnVwCi0gICAgICAgIGlmIHNlbGYuc3ViMjFfcGF0aDoKLSAgICAgICAgICAgIG9zLmNobW9kKHNlbGYuc3ViMjFfcGF0aCwgc3RhdC5TX0lSV1hVKQotICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMsIHJvb3RmZCBpbiBvcy5md2FsayhzdXBwb3J0LlRFU1RGTiwgdG9wZG93bj1GYWxzZSk6Ci0gICAgICAgICAgICBmb3IgbmFtZSBpbiBmaWxlczoKLSAgICAgICAgICAgICAgICBvcy51bmxpbmsobmFtZSwgZGlyX2ZkPXJvb3RmZCkKLSAgICAgICAgICAgIGZvciBuYW1lIGluIGRpcnM6Ci0gICAgICAgICAgICAgICAgc3QgPSBvcy5zdGF0KG5hbWUsIGRpcl9mZD1yb290ZmQsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKLSAgICAgICAgICAgICAgICBpZiBzdGF0LlNfSVNESVIoc3Quc3RfbW9kZSk6Ci0gICAgICAgICAgICAgICAgICAgIG9zLnJtZGlyKG5hbWUsIGRpcl9mZD1yb290ZmQpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgb3MudW5saW5rKG5hbWUsIGRpcl9mZD1yb290ZmQpCi0gICAgICAgIG9zLnJtZGlyKHN1cHBvcnQuVEVTVEZOKQotCiBjbGFzcyBCeXRlc1dhbGtUZXN0cyhXYWxrVGVzdHMpOgogICAgICIiIlRlc3RzIGZvciBvcy53YWxrKCkgd2l0aCBieXRlcy4iIiIKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHN1cGVyKCkuc2V0VXAoKQogICAgICAgICBzZWxmLnN0YWNrID0gY29udGV4dGxpYi5FeGl0U3RhY2soKQotICAgICAgICBpZiBvcy5uYW1lID09ICdudCc6Ci0gICAgICAgICAgICBzZWxmLnN0YWNrLmVudGVyX2NvbnRleHQod2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKSkKLSAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBzZWxmLnN0YWNrLmNsb3NlKCkKQEAgLTEyNjEsOCArMTI1Miw3IEBACiAgICAgICAgIG9zLm1rZGlyKGRpcmEpCiAgICAgICAgIGRpcmIgPSBvcy5wYXRoLmpvaW4oZGlyYSwgJ2RpcmInKQogICAgICAgICBvcy5ta2RpcihkaXJiKQotICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGRpcmEsICdmaWxlLnR4dCcpLCAndycpIGFzIGY6Ci0gICAgICAgICAgICBmLndyaXRlKCd0ZXh0JykKKyAgICAgICAgY3JlYXRlX2ZpbGUob3MucGF0aC5qb2luKGRpcmEsICdmaWxlLnR4dCcpKQogICAgICAgICBvcy5yZW1vdmVkaXJzKGRpcmIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMoZGlyYikpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhkaXJhKSkKQEAgLTEyNzMsOCArMTI2Myw3IEBACiAgICAgICAgIG9zLm1rZGlyKGRpcmEpCiAgICAgICAgIGRpcmIgPSBvcy5wYXRoLmpvaW4oZGlyYSwgJ2RpcmInKQogICAgICAgICBvcy5ta2RpcihkaXJiKQotICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGRpcmIsICdmaWxlLnR4dCcpLCAndycpIGFzIGY6Ci0gICAgICAgICAgICBmLndyaXRlKCd0ZXh0JykKKyAgICAgICAgY3JlYXRlX2ZpbGUob3MucGF0aC5qb2luKGRpcmIsICdmaWxlLnR4dCcpKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpOgogICAgICAgICAgICAgb3MucmVtb3ZlZGlycyhkaXJiKQogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoZGlyYikpCkBAIC0xMjg0LDcgKzEyNzMsNyBAQAogCiBjbGFzcyBEZXZOdWxsVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2Rldm51bGwoc2VsZik6Ci0gICAgICAgIHdpdGggb3Blbihvcy5kZXZudWxsLCAnd2InKSBhcyBmOgorICAgICAgICB3aXRoIG9wZW4ob3MuZGV2bnVsbCwgJ3diJywgMCkgYXMgZjoKICAgICAgICAgICAgIGYud3JpdGUoYidoZWxsbycpCiAgICAgICAgICAgICBmLmNsb3NlKCkKICAgICAgICAgd2l0aCBvcGVuKG9zLmRldm51bGwsICdyYicpIGFzIGY6CkBAIC0xMzAxLDYgKzEyOTAsNyBAQAogCiAgICAgZGVmIHRlc3RfdXJhbmRvbV92YWx1ZShzZWxmKToKICAgICAgICAgZGF0YTEgPSBvcy51cmFuZG9tKDE2KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZGF0YTEsIGJ5dGVzKQogICAgICAgICBkYXRhMiA9IG9zLnVyYW5kb20oMTYpCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoZGF0YTEsIGRhdGEyKQogCkBAIC0xMzIxLDYgKzEzMTEsNDkgQEAKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChkYXRhMSwgZGF0YTIpCiAKIAorQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ2dldHJhbmRvbScpLCAnbmVlZCBvcy5nZXRyYW5kb20oKScpCitjbGFzcyBHZXRSYW5kb21UZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3MuZ2V0cmFuZG9tKDEpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIGlmIGV4Yy5lcnJubyA9PSBlcnJuby5FTk9TWVM6CisgICAgICAgICAgICAgICAgIyBQeXRob24gY29tcGlsZWQgb24gYSBtb3JlIHJlY2VudCBMaW51eCB2ZXJzaW9uCisgICAgICAgICAgICAgICAgIyB0aGFuIHRoZSBjdXJyZW50IExpbnV4IGtlcm5lbAorICAgICAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJnZXRyYW5kb20oKSBzeXNjYWxsIGZhaWxzIHdpdGggRU5PU1lTIikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UKKworICAgIGRlZiB0ZXN0X2dldHJhbmRvbV90eXBlKHNlbGYpOgorICAgICAgICBkYXRhID0gb3MuZ2V0cmFuZG9tKDE2KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZGF0YSwgYnl0ZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRhdGEpLCAxNikKKworICAgIGRlZiB0ZXN0X2dldHJhbmRvbTAoc2VsZik6CisgICAgICAgIGVtcHR5ID0gb3MuZ2V0cmFuZG9tKDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW1wdHksIGInJykKKworICAgIGRlZiB0ZXN0X2dldHJhbmRvbV9yYW5kb20oc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKG9zLCAnR1JORF9SQU5ET00nKSkKKworICAgICAgICAjIERvbid0IHRlc3Qgb3MuZ2V0cmFuZG9tKDEsIG9zLkdSTkRfUkFORE9NKSB0byBub3QgY29uc3VtZSB0aGUgcmFyZQorICAgICAgICAjIHJlc291cmNlIC9kZXYvcmFuZG9tCisKKyAgICBkZWYgdGVzdF9nZXRyYW5kb21fbm9uYmxvY2soc2VsZik6CisgICAgICAgICMgVGhlIGNhbGwgbXVzdCBub3QgZmFpbC4gQ2hlY2sgYWxzbyB0aGF0IHRoZSBmbGFnIGV4aXN0cworICAgICAgICB0cnk6CisgICAgICAgICAgICBvcy5nZXRyYW5kb20oMSwgb3MuR1JORF9OT05CTE9DSykKKyAgICAgICAgZXhjZXB0IEJsb2NraW5nSU9FcnJvcjoKKyAgICAgICAgICAgICMgU3lzdGVtIHVyYW5kb20gaXMgbm90IGluaXRpYWxpemVkIHlldAorICAgICAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3RfZ2V0cmFuZG9tX3ZhbHVlKHNlbGYpOgorICAgICAgICBkYXRhMSA9IG9zLmdldHJhbmRvbSgxNikKKyAgICAgICAgZGF0YTIgPSBvcy5nZXRyYW5kb20oMTYpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoZGF0YTEsIGRhdGEyKQorCisKICMgb3MudXJhbmRvbSgpIGRvZXNuJ3QgdXNlIGEgZmlsZSBkZXNjcmlwdG9yIHdoZW4gaXQgaXMgaW1wbGVtZW50ZWQgd2l0aCB0aGUKICMgZ2V0ZW50cm9weSgpIGZ1bmN0aW9uLCB0aGUgZ2V0cmFuZG9tKCkgZnVuY3Rpb24gb3IgdGhlIGdldHJhbmRvbSgpIHN5c2NhbGwKIE9TX1VSQU5ET01fRE9OVF9VU0VfRkQgPSAoCkBAIC0xMzcxLDkgKzE0MDQsOSBAQAogICAgIGRlZiB0ZXN0X3VyYW5kb21fZmRfcmVvcGVuZWQoc2VsZik6CiAgICAgICAgICMgSXNzdWUgIzIxMjA3OiB1cmFuZG9tKCkgc2hvdWxkIGRldGVjdCBpdHMgZmQgdG8gL2Rldi91cmFuZG9tCiAgICAgICAgICMgY2hhbmdlZCB0byBzb21ldGhpbmcgZWxzZSwgYW5kIHJlb3BlbiBpdC4KLSAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuVEVTVEZOLCAnd2InKSBhcyBmOgotICAgICAgICAgICAgZi53cml0ZShiIngiICogMjU2KQotICAgICAgICBzZWxmLmFkZENsZWFudXAob3MudW5saW5rLCBzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgY3JlYXRlX2ZpbGUoc3VwcG9ydC5URVNURk4sIGIieCIgKiAyNTYpCisKICAgICAgICAgY29kZSA9ICIiImlmIDE6CiAgICAgICAgICAgICBpbXBvcnQgb3MKICAgICAgICAgICAgIGltcG9ydCBzeXMKQEAgLTEzOTAsNyArMTQyMywxMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICBvcy5jbG9zZXJhbmdlKDMsIDI1NikKICAgICAgICAgICAgIHdpdGggb3Blbih7VEVTVEZOIXJ9LCAncmInKSBhcyBmOgotICAgICAgICAgICAgICAgIG9zLmR1cDIoZi5maWxlbm8oKSwgZmQpCisgICAgICAgICAgICAgICAgbmV3X2ZkID0gZi5maWxlbm8oKQorICAgICAgICAgICAgICAgICMgSXNzdWUgIzI2OTM1OiBwb3NpeCBhbGxvd3MgbmV3X2ZkIGFuZCBmZCB0byBiZSBlcXVhbCBidXQKKyAgICAgICAgICAgICAgICAjIHNvbWUgbGliYyBpbXBsZW1lbnRhdGlvbnMgaGF2ZSBkdXAyIHJldHVybiBhbiBlcnJvciBpbiB0aGlzCisgICAgICAgICAgICAgICAgIyBjYXNlLgorICAgICAgICAgICAgICAgIGlmIG5ld19mZCAhPSBmZDoKKyAgICAgICAgICAgICAgICAgICAgb3MuZHVwMihuZXdfZmQsIGZkKQogICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQuYnVmZmVyLndyaXRlKG9zLnVyYW5kb20oNCkpCiAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC5idWZmZXIud3JpdGUob3MudXJhbmRvbSg0KSkKICAgICAgICAgICAgICIiIi5mb3JtYXQoVEVTVEZOPXN1cHBvcnQuVEVTVEZOKQpAQCAtMTQzNSw2ICsxNDczLDcgQEAKICAgICAgICAgb3MuZXhlY3ZlID0gb3JpZ19leGVjdmUKICAgICAgICAgb3MuZGVmcGF0aCA9IG9yaWdfZGVmcGF0aAogCisKIGNsYXNzIEV4ZWNUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgQHVuaXR0ZXN0LnNraXBJZihVU0lOR19MSU5VWFRIUkVBRFMsCiAgICAgICAgICAgICAgICAgICAgICAiYXZvaWQgdHJpZ2dlcmluZyBhIGxpbnV4dGhyZWFkcyBidWc6IHNlZSBpc3N1ZSAjNDk3MCIpCkBAIC0xNDQyLDggKzE0ODEsMTYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgb3MuZXhlY3ZwZSwgJ25vIHN1Y2ggYXBwLScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnbm8gc3VjaCBhcHAtJ10sIE5vbmUpCiAKKyAgICBkZWYgdGVzdF9leGVjdl93aXRoX2JhZF9hcmdsaXN0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBvcy5leGVjdiwgJ25vdGVwYWQnLCAoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgb3MuZXhlY3YsICdub3RlcGFkJywgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG9zLmV4ZWN2LCAnbm90ZXBhZCcsICgnJywpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBvcy5leGVjdiwgJ25vdGVwYWQnLCBbJyddKQorCiAgICAgZGVmIHRlc3RfZXhlY3ZwZV93aXRoX2JhZF9hcmdsaXN0KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBvcy5leGVjdnBlLCAnbm90ZXBhZCcsIFtdLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBvcy5leGVjdnBlLCAnbm90ZXBhZCcsIFtdLCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgb3MuZXhlY3ZwZSwgJ25vdGVwYWQnLCBbJyddLCB7fSkKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdfZXhlY3ZwZScpLAogICAgICAgICAgICAgICAgICAgICAgICAgICJObyBpbnRlcm5hbCBvcy5fZXhlY3ZwZSBmdW5jdGlvbiB0byB0ZXN0LiIpCkBAIC0xNTAyLDYgKzE1NDksMTggQEAKIAogQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsICJXaW4zMiBzcGVjaWZpYyB0ZXN0cyIpCiBjbGFzcyBXaW4zMkVycm9yVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3Muc3RhdChzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOgorICAgICAgICAgICAgZXhpc3RzID0gRmFsc2UKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgZXhpc3RzID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5mYWlsKCJmaWxlICVzIG11c3Qgbm90IGV4aXN0OyBvcy5zdGF0IGZhaWxlZCB3aXRoICVzIgorICAgICAgICAgICAgICAgICAgICAgICUgKHN1cHBvcnQuVEVTVEZOLCBleGMpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJmaWxlICVzIG11c3Qgbm90IGV4aXN0IiAlIHN1cHBvcnQuVEVTVEZOKQorCiAgICAgZGVmIHRlc3RfcmVuYW1lKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBvcy5yZW5hbWUsIHN1cHBvcnQuVEVTVEZOLCBzdXBwb3J0LlRFU1RGTisiLmJhayIpCiAKQEAgLTE1MTIsMTIgKzE1NzEsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgb3MuY2hkaXIsIHN1cHBvcnQuVEVTVEZOKQogCiAgICAgZGVmIHRlc3RfbWtkaXIoc2VsZik6Ci0gICAgICAgIGYgPSBvcGVuKHN1cHBvcnQuVEVTVEZOLCAidyIpCi0gICAgICAgIHRyeToKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBzdXBwb3J0LlRFU1RGTikKKworICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5URVNURk4sICJ4IikgYXMgZjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIG9zLm1rZGlyLCBzdXBwb3J0LlRFU1RGTikKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICAgICAgb3MudW5saW5rKHN1cHBvcnQuVEVTVEZOKQogCiAgICAgZGVmIHRlc3RfdXRpbWUoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIG9zLnV0aW1lLCBzdXBwb3J0LlRFU1RGTiwgTm9uZSkKQEAgLTE1MjUsNiArMTU4Miw3IEBACiAgICAgZGVmIHRlc3RfY2htb2Qoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIG9zLmNobW9kLCBzdXBwb3J0LlRFU1RGTiwgMCkKIAorCiBjbGFzcyBUZXN0SW52YWxpZEZEKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBzaW5nbGVzID0gWyJmY2hkaXIiLCAiZHVwIiwgImZkb3BlbiIsICJmZGF0YXN5bmMiLCAiZnN0YXQiLAogICAgICAgICAgICAgICAgImZzdGF0dmZzIiwgImZzeW5jIiwgInRjZ2V0cGdycCIsICJ0dHluYW1lIl0KQEAgLTE2MzYsMTIgKzE2OTQsOSBAQAogICAgICAgICAgICAgICAgIG9zLnVubGluayhmaWxlKQogCiAgICAgZGVmIF90ZXN0X2xpbmsoc2VsZiwgZmlsZTEsIGZpbGUyKToKLSAgICAgICAgd2l0aCBvcGVuKGZpbGUxLCAidyIpIGFzIGYxOgotICAgICAgICAgICAgZjEud3JpdGUoInRlc3QiKQorICAgICAgICBjcmVhdGVfZmlsZShmaWxlMSkKIAotICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6Ci0gICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKLSAgICAgICAgICAgIG9zLmxpbmsoZmlsZTEsIGZpbGUyKQorICAgICAgICBvcy5saW5rKGZpbGUxLCBmaWxlMikKICAgICAgICAgd2l0aCBvcGVuKGZpbGUxLCAiciIpIGFzIGYxLCBvcGVuKGZpbGUyLCAiciIpIGFzIGYyOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguc2FtZW9wZW5maWxlKGYxLmZpbGVubygpLCBmMi5maWxlbm8oKSkpCiAKQEAgLTE5MzIsNiArMTk4Nyw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCiAgICAgICAgICAgICAgICAgc29ydGVkKG9zLmxpc3RkaXIoc3VwcG9ydC5URVNURk4pKSwKICAgICAgICAgICAgICAgICBzZWxmLmNyZWF0ZWRfcGF0aHMpCisKICAgICAgICAgIyBieXRlcwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgICAgIHNvcnRlZChvcy5saXN0ZGlyKG9zLmZzZW5jb2RlKHN1cHBvcnQuVEVTVEZOKSkpLApAQCAtMTk0NSw2ICsyMDAxLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKICAgICAgICAgICAgICAgICBzb3J0ZWQob3MubGlzdGRpcihwYXRoKSksCiAgICAgICAgICAgICAgICAgc2VsZi5jcmVhdGVkX3BhdGhzKQorCiAgICAgICAgICMgYnl0ZXMKICAgICAgICAgcGF0aCA9IGInXFxcXD9cXCcgKyBvcy5mc2VuY29kZShvcy5wYXRoLmFic3BhdGgoc3VwcG9ydC5URVNURk4pKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKApAQCAtMjAyNCw1MSArMjA4MSw0MyBAQAogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG9zLmxzdGF0KGxpbmspLCBvcy5zdGF0KGxpbmspKQogCiAgICAgICAgIGJ5dGVzX2xpbmsgPSBvcy5mc2VuY29kZShsaW5rKQotICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6Ci0gICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Muc3RhdChieXRlc19saW5rKSwgb3Muc3RhdCh0YXJnZXQpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChvcy5sc3RhdChieXRlc19saW5rKSwgb3Muc3RhdChieXRlc19saW5rKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5zdGF0KGJ5dGVzX2xpbmspLCBvcy5zdGF0KHRhcmdldCkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwob3MubHN0YXQoYnl0ZXNfbGluayksIG9zLnN0YXQoYnl0ZXNfbGluaykpCiAKICAgICBkZWYgdGVzdF8xMjA4NChzZWxmKToKICAgICAgICAgbGV2ZWwxID0gb3MucGF0aC5hYnNwYXRoKHN1cHBvcnQuVEVTVEZOKQogICAgICAgICBsZXZlbDIgPSBvcy5wYXRoLmpvaW4obGV2ZWwxLCAibGV2ZWwyIikKICAgICAgICAgbGV2ZWwzID0gb3MucGF0aC5qb2luKGxldmVsMiwgImxldmVsMyIpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnJtdHJlZSwgbGV2ZWwxKQorCisgICAgICAgIG9zLm1rZGlyKGxldmVsMSkKKyAgICAgICAgb3MubWtkaXIobGV2ZWwyKQorICAgICAgICBvcy5ta2RpcihsZXZlbDMpCisKKyAgICAgICAgZmlsZTEgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKGxldmVsMSwgImZpbGUxIikpCisgICAgICAgIGNyZWF0ZV9maWxlKGZpbGUxKQorCisgICAgICAgIG9yaWdfZGlyID0gb3MuZ2V0Y3dkKCkKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgb3MubWtkaXIobGV2ZWwxKQotICAgICAgICAgICAgb3MubWtkaXIobGV2ZWwyKQotICAgICAgICAgICAgb3MubWtkaXIobGV2ZWwzKQorICAgICAgICAgICAgb3MuY2hkaXIobGV2ZWwyKQorICAgICAgICAgICAgbGluayA9IG9zLnBhdGguam9pbihsZXZlbDIsICJsaW5rIikKKyAgICAgICAgICAgIG9zLnN5bWxpbmsob3MucGF0aC5yZWxwYXRoKGZpbGUxKSwgImxpbmsiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigibGluayIsIG9zLmxpc3RkaXIob3MuZ2V0Y3dkKCkpKQogCi0gICAgICAgICAgICBmaWxlMSA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4obGV2ZWwxLCAiZmlsZTEiKSkKKyAgICAgICAgICAgICMgQ2hlY2sgb3Muc3RhdCBjYWxscyBmcm9tIHRoZSBzYW1lIGRpciBhcyB0aGUgbGluaworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5zdGF0KGZpbGUxKSwgb3Muc3RhdCgibGluayIpKQogCi0gICAgICAgICAgICB3aXRoIG9wZW4oZmlsZTEsICJ3IikgYXMgZjoKLSAgICAgICAgICAgICAgICBmLndyaXRlKCJmaWxlMSIpCisgICAgICAgICAgICAjIENoZWNrIG9zLnN0YXQgY2FsbHMgZnJvbSBhIGRpciBiZWxvdyB0aGUgbGluaworICAgICAgICAgICAgb3MuY2hkaXIobGV2ZWwxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5zdGF0KGZpbGUxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Muc3RhdChvcy5wYXRoLnJlbHBhdGgobGluaykpKQogCi0gICAgICAgICAgICBvcmlnX2RpciA9IG9zLmdldGN3ZCgpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgb3MuY2hkaXIobGV2ZWwyKQotICAgICAgICAgICAgICAgIGxpbmsgPSBvcy5wYXRoLmpvaW4obGV2ZWwyLCAibGluayIpCi0gICAgICAgICAgICAgICAgb3Muc3ltbGluayhvcy5wYXRoLnJlbHBhdGgoZmlsZTEpLCAibGluayIpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigibGluayIsIG9zLmxpc3RkaXIob3MuZ2V0Y3dkKCkpKQotCi0gICAgICAgICAgICAgICAgIyBDaGVjayBvcy5zdGF0IGNhbGxzIGZyb20gdGhlIHNhbWUgZGlyIGFzIHRoZSBsaW5rCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5zdGF0KGZpbGUxKSwgb3Muc3RhdCgibGluayIpKQotCi0gICAgICAgICAgICAgICAgIyBDaGVjayBvcy5zdGF0IGNhbGxzIGZyb20gYSBkaXIgYmVsb3cgdGhlIGxpbmsKLSAgICAgICAgICAgICAgICBvcy5jaGRpcihsZXZlbDEpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5zdGF0KGZpbGUxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnN0YXQob3MucGF0aC5yZWxwYXRoKGxpbmspKSkKLQotICAgICAgICAgICAgICAgICMgQ2hlY2sgb3Muc3RhdCBjYWxscyBmcm9tIGEgZGlyIGFib3ZlIHRoZSBsaW5rCi0gICAgICAgICAgICAgICAgb3MuY2hkaXIobGV2ZWwzKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Muc3RhdChmaWxlMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5zdGF0KG9zLnBhdGgucmVscGF0aChsaW5rKSkpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIG9zLmNoZGlyKG9yaWdfZGlyKQotICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6Ci0gICAgICAgICAgICBzZWxmLmZhaWwoZXJyKQorICAgICAgICAgICAgIyBDaGVjayBvcy5zdGF0IGNhbGxzIGZyb20gYSBkaXIgYWJvdmUgdGhlIGxpbmsKKyAgICAgICAgICAgIG9zLmNoZGlyKGxldmVsMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Muc3RhdChmaWxlMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnN0YXQob3MucGF0aC5yZWxwYXRoKGxpbmspKSkKICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIG9zLnJlbW92ZShmaWxlMSkKLSAgICAgICAgICAgIHNodXRpbC5ybXRyZWUobGV2ZWwxKQorICAgICAgICAgICAgb3MuY2hkaXIob3JpZ19kaXIpCiAKIAogQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsICJXaW4zMiBzcGVjaWZpYyB0ZXN0cyIpCkBAIC0yMTA2LDcgKzIxNTUsNyBAQAogY2xhc3MgTm9uTG9jYWxTeW1saW5rVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICAiIiIKKyAgICAgICAgciIiIgogICAgICAgICBDcmVhdGUgdGhpcyBzdHJ1Y3R1cmU6CiAKICAgICAgICAgYmFzZQpAQCAtMjE3NywxMSArMjIyNiwxMzcgQEAKIAogICAgIGRlZiB0ZXN0X3dhaXRwaWQoc2VsZik6CiAgICAgICAgIGFyZ3MgPSBbc3lzLmV4ZWN1dGFibGUsICctYycsICdwYXNzJ10KLSAgICAgICAgcGlkID0gb3Muc3Bhd252KG9zLlBfTk9XQUlULCBhcmdzWzBdLCBhcmdzKQorICAgICAgICAjIEFkZCBhbiBpbXBsaWNpdCB0ZXN0IGZvciBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIoKS4KKyAgICAgICAgcGlkID0gb3Muc3Bhd252KG9zLlBfTk9XQUlULCBfUGF0aExpa2UoYXJnc1swXSksIGFyZ3MpCiAgICAgICAgIHN0YXR1cyA9IG9zLndhaXRwaWQocGlkLCAwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgKHBpZCwgMCkpCiAKIAorY2xhc3MgU3Bhd25UZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIGNyZWF0ZV9hcmdzKHNlbGYsICosIHdpdGhfZW52PUZhbHNlLCB1c2VfYnl0ZXM9RmFsc2UpOgorICAgICAgICBzZWxmLmV4aXRjb2RlID0gMTcKKworICAgICAgICBmaWxlbmFtZSA9IHN1cHBvcnQuVEVTVEZOCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgZmlsZW5hbWUpCisKKyAgICAgICAgaWYgbm90IHdpdGhfZW52OgorICAgICAgICAgICAgY29kZSA9ICdpbXBvcnQgc3lzOyBzeXMuZXhpdCglcyknICUgc2VsZi5leGl0Y29kZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5lbnYgPSBkaWN0KG9zLmVudmlyb24pCisgICAgICAgICAgICAjIGNyZWF0ZSBhbiB1bmlxdWUga2V5CisgICAgICAgICAgICBzZWxmLmtleSA9IHN0cih1dWlkLnV1aWQ0KCkpCisgICAgICAgICAgICBzZWxmLmVudltzZWxmLmtleV0gPSBzZWxmLmtleQorICAgICAgICAgICAgIyByZWFkIHRoZSB2YXJpYWJsZSBmcm9tIG9zLmVudmlyb24gdG8gY2hlY2sgdGhhdCBpdCBleGlzdHMKKyAgICAgICAgICAgIGNvZGUgPSAoJ2ltcG9ydCBzeXMsIG9zOyBtYWdpYyA9IG9zLmVudmlyb25bJXJdOyBzeXMuZXhpdCglcyknCisgICAgICAgICAgICAgICAgICAgICUgKHNlbGYua2V5LCBzZWxmLmV4aXRjb2RlKSkKKworICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJ3IikgYXMgZnA6CisgICAgICAgICAgICBmcC53cml0ZShjb2RlKQorCisgICAgICAgIGFyZ3MgPSBbc3lzLmV4ZWN1dGFibGUsIGZpbGVuYW1lXQorICAgICAgICBpZiB1c2VfYnl0ZXM6CisgICAgICAgICAgICBhcmdzID0gW29zLmZzZW5jb2RlKGEpIGZvciBhIGluIGFyZ3NdCisgICAgICAgICAgICBzZWxmLmVudiA9IHtvcy5mc2VuY29kZShrKTogb3MuZnNlbmNvZGUodikKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBrLCB2IGluIHNlbGYuZW52Lml0ZW1zKCl9CisKKyAgICAgICAgcmV0dXJuIGFyZ3MKKworICAgIEByZXF1aXJlc19vc19mdW5jKCdzcGF3bmwnKQorICAgIGRlZiB0ZXN0X3NwYXdubChzZWxmKToKKyAgICAgICAgYXJncyA9IHNlbGYuY3JlYXRlX2FyZ3MoKQorICAgICAgICBleGl0Y29kZSA9IG9zLnNwYXdubChvcy5QX1dBSVQsIGFyZ3NbMF0sICphcmdzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4aXRjb2RlLCBzZWxmLmV4aXRjb2RlKQorCisgICAgQHJlcXVpcmVzX29zX2Z1bmMoJ3NwYXdubGUnKQorICAgIGRlZiB0ZXN0X3NwYXdubGUoc2VsZik6CisgICAgICAgIGFyZ3MgPSBzZWxmLmNyZWF0ZV9hcmdzKHdpdGhfZW52PVRydWUpCisgICAgICAgIGV4aXRjb2RlID0gb3Muc3Bhd25sZShvcy5QX1dBSVQsIGFyZ3NbMF0sICphcmdzLCBzZWxmLmVudikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0Y29kZSwgc2VsZi5leGl0Y29kZSkKKworICAgIEByZXF1aXJlc19vc19mdW5jKCdzcGF3bmxwJykKKyAgICBkZWYgdGVzdF9zcGF3bmxwKHNlbGYpOgorICAgICAgICBhcmdzID0gc2VsZi5jcmVhdGVfYXJncygpCisgICAgICAgIGV4aXRjb2RlID0gb3Muc3Bhd25scChvcy5QX1dBSVQsIGFyZ3NbMF0sICphcmdzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4aXRjb2RlLCBzZWxmLmV4aXRjb2RlKQorCisgICAgQHJlcXVpcmVzX29zX2Z1bmMoJ3NwYXdubHBlJykKKyAgICBkZWYgdGVzdF9zcGF3bmxwZShzZWxmKToKKyAgICAgICAgYXJncyA9IHNlbGYuY3JlYXRlX2FyZ3Mod2l0aF9lbnY9VHJ1ZSkKKyAgICAgICAgZXhpdGNvZGUgPSBvcy5zcGF3bmxwZShvcy5QX1dBSVQsIGFyZ3NbMF0sICphcmdzLCBzZWxmLmVudikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0Y29kZSwgc2VsZi5leGl0Y29kZSkKKworICAgIEByZXF1aXJlc19vc19mdW5jKCdzcGF3bnYnKQorICAgIGRlZiB0ZXN0X3NwYXdudihzZWxmKToKKyAgICAgICAgYXJncyA9IHNlbGYuY3JlYXRlX2FyZ3MoKQorICAgICAgICBleGl0Y29kZSA9IG9zLnNwYXdudihvcy5QX1dBSVQsIGFyZ3NbMF0sIGFyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhpdGNvZGUsIHNlbGYuZXhpdGNvZGUpCisKKyAgICBAcmVxdWlyZXNfb3NfZnVuYygnc3Bhd252ZScpCisgICAgZGVmIHRlc3Rfc3Bhd252ZShzZWxmKToKKyAgICAgICAgYXJncyA9IHNlbGYuY3JlYXRlX2FyZ3Mod2l0aF9lbnY9VHJ1ZSkKKyAgICAgICAgZXhpdGNvZGUgPSBvcy5zcGF3bnZlKG9zLlBfV0FJVCwgYXJnc1swXSwgYXJncywgc2VsZi5lbnYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhpdGNvZGUsIHNlbGYuZXhpdGNvZGUpCisKKyAgICBAcmVxdWlyZXNfb3NfZnVuYygnc3Bhd252cCcpCisgICAgZGVmIHRlc3Rfc3Bhd252cChzZWxmKToKKyAgICAgICAgYXJncyA9IHNlbGYuY3JlYXRlX2FyZ3MoKQorICAgICAgICBleGl0Y29kZSA9IG9zLnNwYXdudnAob3MuUF9XQUlULCBhcmdzWzBdLCBhcmdzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4aXRjb2RlLCBzZWxmLmV4aXRjb2RlKQorCisgICAgQHJlcXVpcmVzX29zX2Z1bmMoJ3NwYXdudnBlJykKKyAgICBkZWYgdGVzdF9zcGF3bnZwZShzZWxmKToKKyAgICAgICAgYXJncyA9IHNlbGYuY3JlYXRlX2FyZ3Mod2l0aF9lbnY9VHJ1ZSkKKyAgICAgICAgZXhpdGNvZGUgPSBvcy5zcGF3bnZwZShvcy5QX1dBSVQsIGFyZ3NbMF0sIGFyZ3MsIHNlbGYuZW52KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4aXRjb2RlLCBzZWxmLmV4aXRjb2RlKQorCisgICAgQHJlcXVpcmVzX29zX2Z1bmMoJ3NwYXdudicpCisgICAgZGVmIHRlc3Rfbm93YWl0KHNlbGYpOgorICAgICAgICBhcmdzID0gc2VsZi5jcmVhdGVfYXJncygpCisgICAgICAgIHBpZCA9IG9zLnNwYXdudihvcy5QX05PV0FJVCwgYXJnc1swXSwgYXJncykKKyAgICAgICAgcmVzdWx0ID0gb3Mud2FpdHBpZChwaWQsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0WzBdLCBwaWQpCisgICAgICAgIHN0YXR1cyA9IHJlc3VsdFsxXQorICAgICAgICBpZiBoYXNhdHRyKG9zLCAnV0lGRVhJVEVEJyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MuV0lGRVhJVEVEKHN0YXR1cykpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLldFWElUU1RBVFVTKHN0YXR1cyksIHNlbGYuZXhpdGNvZGUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgc2VsZi5leGl0Y29kZSA8PCA4KQorCisgICAgQHJlcXVpcmVzX29zX2Z1bmMoJ3NwYXdudmUnKQorICAgIGRlZiB0ZXN0X3NwYXdudmVfYnl0ZXMoc2VsZik6CisgICAgICAgICMgVGVzdCBieXRlcyBoYW5kbGluZyBpbiBwYXJzZV9hcmdsaXN0IGFuZCBwYXJzZV9lbnZsaXN0ICgjMjgxMTQpCisgICAgICAgIGFyZ3MgPSBzZWxmLmNyZWF0ZV9hcmdzKHdpdGhfZW52PVRydWUsIHVzZV9ieXRlcz1UcnVlKQorICAgICAgICBleGl0Y29kZSA9IG9zLnNwYXdudmUob3MuUF9XQUlULCBhcmdzWzBdLCBhcmdzLCBzZWxmLmVudikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0Y29kZSwgc2VsZi5leGl0Y29kZSkKKworICAgIEByZXF1aXJlc19vc19mdW5jKCdzcGF3bmwnKQorICAgIGRlZiB0ZXN0X3NwYXdubF9ub2FyZ3Moc2VsZik6CisgICAgICAgIGFyZ3MgPSBzZWxmLmNyZWF0ZV9hcmdzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgb3Muc3Bhd25sLCBvcy5QX05PV0FJVCwgYXJnc1swXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgb3Muc3Bhd25sLCBvcy5QX05PV0FJVCwgYXJnc1swXSwgJycpCisKKyAgICBAcmVxdWlyZXNfb3NfZnVuYygnc3Bhd25sZScpCisgICAgZGVmIHRlc3Rfc3Bhd25sZV9ub2FyZ3Moc2VsZik6CisgICAgICAgIGFyZ3MgPSBzZWxmLmNyZWF0ZV9hcmdzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgb3Muc3Bhd25sZSwgb3MuUF9OT1dBSVQsIGFyZ3NbMF0sIHt9KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBvcy5zcGF3bmxlLCBvcy5QX05PV0FJVCwgYXJnc1swXSwgJycsIHt9KQorCisgICAgQHJlcXVpcmVzX29zX2Z1bmMoJ3NwYXdudicpCisgICAgZGVmIHRlc3Rfc3Bhd252X25vYXJncyhzZWxmKToKKyAgICAgICAgYXJncyA9IHNlbGYuY3JlYXRlX2FyZ3MoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBvcy5zcGF3bnYsIG9zLlBfTk9XQUlULCBhcmdzWzBdLCAoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgb3Muc3Bhd252LCBvcy5QX05PV0FJVCwgYXJnc1swXSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG9zLnNwYXdudiwgb3MuUF9OT1dBSVQsIGFyZ3NbMF0sICgnJywpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBvcy5zcGF3bnYsIG9zLlBfTk9XQUlULCBhcmdzWzBdLCBbJyddKQorCisgICAgQHJlcXVpcmVzX29zX2Z1bmMoJ3NwYXdudmUnKQorICAgIGRlZiB0ZXN0X3NwYXdudmVfbm9hcmdzKHNlbGYpOgorICAgICAgICBhcmdzID0gc2VsZi5jcmVhdGVfYXJncygpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG9zLnNwYXdudmUsIG9zLlBfTk9XQUlULCBhcmdzWzBdLCAoKSwge30pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG9zLnNwYXdudmUsIG9zLlBfTk9XQUlULCBhcmdzWzBdLCBbXSwge30pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG9zLnNwYXdudmUsIG9zLlBfTk9XQUlULCBhcmdzWzBdLCAoJycsKSwge30pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG9zLnNwYXdudmUsIG9zLlBfTk9XQUlULCBhcmdzWzBdLCBbJyddLCB7fSkKKwogIyBUaGUgaW50cm9kdWN0aW9uIG9mIHRoaXMgVGVzdENhc2UgY2F1c2VkIGF0IGxlYXN0IHR3byBkaWZmZXJlbnQgZXJyb3JzIG9uCiAjICpuaXggYnVpbGRib3RzLiBUZW1wb3JhcmlseSBza2lwIHRoaXMgdG8gbGV0IHRoZSBidWlsZGJvdHMgbW92ZSBhbG9uZy4KIEB1bml0dGVzdC5za2lwKCJTa2lwIGR1ZSB0byBwbGF0Zm9ybS9lbnZpcm9ubWVudCBkaWZmZXJlbmNlcyBvbiAqTklYIGJ1aWxkYm90cyIpCkBAIC0yMjA0LDggKzIzNzksOCBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBuZXdfcHJpbyA9IG9zLmdldHByaW9yaXR5KG9zLlBSSU9fUFJPQ0VTUywgb3MuZ2V0cGlkKCkpCiAgICAgICAgICAgICBpZiBiYXNlID49IDE5IGFuZCBuZXdfcHJpbyA8PSAxOToKLSAgICAgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgKLSAgICAgICJ1bmFibGUgdG8gcmVsaWFibHkgdGVzdCBzZXRwcmlvcml0eSBhdCBjdXJyZW50IG5pY2UgbGV2ZWwgb2YgJXMiICUgYmFzZSkKKyAgICAgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgidW5hYmxlIHRvIHJlbGlhYmx5IHRlc3Qgc2V0cHJpb3JpdHkgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhdCBjdXJyZW50IG5pY2UgbGV2ZWwgb2YgJXMiICUgYmFzZSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfcHJpbywgYmFzZSArIDEpCiAgICAgICAgIGZpbmFsbHk6CkBAIC0yMzE1LDggKzI0OTAsNyBAQAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CiAgICAgICAgIGNscy5rZXkgPSBzdXBwb3J0LnRocmVhZGluZ19zZXR1cCgpCi0gICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgIndiIikgYXMgZjoKLSAgICAgICAgICAgIGYud3JpdGUoY2xzLkRBVEEpCisgICAgICAgIGNyZWF0ZV9maWxlKHN1cHBvcnQuVEVTVEZOLCBjbHMuREFUQSkKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CkBAIC0yNDY2LDEwICsyNjQwLDExIEBACiAgICAgZGVmIHRlc3RfdHJhaWxlcnMoc2VsZik6CiAgICAgICAgIFRFU1RGTjIgPSBzdXBwb3J0LlRFU1RGTiArICIyIgogICAgICAgICBmaWxlX2RhdGEgPSBiImFiY2RlZiIKLSAgICAgICAgd2l0aCBvcGVuKFRFU1RGTjIsICd3YicpIGFzIGY6Ci0gICAgICAgICAgICBmLndyaXRlKGZpbGVfZGF0YSkKLSAgICAgICAgd2l0aCBvcGVuKFRFU1RGTjIsICdyYicpYXMgZjoKLSAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy5yZW1vdmUsIFRFU1RGTjIpCisKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBURVNURk4yKQorICAgICAgICBjcmVhdGVfZmlsZShURVNURk4yLCBmaWxlX2RhdGEpCisKKyAgICAgICAgd2l0aCBvcGVuKFRFU1RGTjIsICdyYicpIGFzIGY6CiAgICAgICAgICAgICBvcy5zZW5kZmlsZShzZWxmLnNvY2tubywgZi5maWxlbm8oKSwgMCwgbGVuKGZpbGVfZGF0YSksCiAgICAgICAgICAgICAgICAgICAgICAgICB0cmFpbGVycz1bYiIxMjM0Il0pCiAgICAgICAgICAgICBzZWxmLmNsaWVudC5jbG9zZSgpCkBAIC0yNDkyLDM1ICsyNjY3LDM3IEBACiBkZWYgc3VwcG9ydHNfZXh0ZW5kZWRfYXR0cmlidXRlcygpOgogICAgIGlmIG5vdCBoYXNhdHRyKG9zLCAic2V0eGF0dHIiKToKICAgICAgICAgcmV0dXJuIEZhbHNlCisKICAgICB0cnk6Ci0gICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgIndiIikgYXMgZnA6CisgICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgInhiIiwgMCkgYXMgZnA6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgb3Muc2V0eGF0dHIoZnAuZmlsZW5vKCksIGIidXNlci50ZXN0IiwgYiIiKQogICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgZmluYWxseToKICAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4pCi0gICAgIyBLZXJuZWxzIDwgMi42LjM5IGRvbid0IHJlc3BlY3Qgc2V0eGF0dHIgZmxhZ3MuCi0gICAga2VybmVsX3ZlcnNpb24gPSBwbGF0Zm9ybS5yZWxlYXNlKCkKLSAgICBtID0gcmUubWF0Y2goIjIuNi4oXGR7MSwyfSkiLCBrZXJuZWxfdmVyc2lvbikKLSAgICByZXR1cm4gbSBpcyBOb25lIG9yIGludChtLmdyb3VwKDEpKSA+PSAzOQorCisgICAgcmV0dXJuIFRydWUKIAogCiBAdW5pdHRlc3Quc2tpcFVubGVzcyhzdXBwb3J0c19leHRlbmRlZF9hdHRyaWJ1dGVzKCksCiAgICAgICAgICAgICAgICAgICAgICAibm8gbm9uLWJyb2tlbiBleHRlbmRlZCBhdHRyaWJ1dGUgc3VwcG9ydCIpCisjIEtlcm5lbHMgPCAyLjYuMzkgZG9uJ3QgcmVzcGVjdCBzZXR4YXR0ciBmbGFncy4KK0BzdXBwb3J0LnJlcXVpcmVzX2xpbnV4X3ZlcnNpb24oMiwgNiwgMzkpCiBjbGFzcyBFeHRlbmRlZEF0dHJpYnV0ZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAotICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4pCi0KICAgICBkZWYgX2NoZWNrX3hhdHRyc19zdHIoc2VsZiwgcywgZ2V0eGF0dHIsIHNldHhhdHRyLCByZW1vdmV4YXR0ciwgbGlzdHhhdHRyLCAqKmt3YXJncyk6CiAgICAgICAgIGZuID0gc3VwcG9ydC5URVNURk4KLSAgICAgICAgb3BlbihmbiwgIndiIikuY2xvc2UoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIGZuKQorICAgICAgICBjcmVhdGVfZmlsZShmbikKKwogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgZ2V0eGF0dHIoZm4sIHMoInVzZXIudGVzdCIpLCAqKmt3YXJncykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVOT0RBVEEpCisKICAgICAgICAgaW5pdF94YXR0ciA9IGxpc3R4YXR0cihmbikKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGluaXRfeGF0dHIsIGxpc3QpCisKICAgICAgICAgc2V0eGF0dHIoZm4sIHMoInVzZXIudGVzdCIpLCBiIiIsICoqa3dhcmdzKQogICAgICAgICB4YXR0ciA9IHNldChpbml0X3hhdHRyKQogICAgICAgICB4YXR0ci5hZGQoInVzZXIudGVzdCIpCkBAIC0yNTI4LDE5ICsyNzA1LDI0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0eGF0dHIoZm4sIGIidXNlci50ZXN0IiwgKiprd2FyZ3MpLCBiIiIpCiAgICAgICAgIHNldHhhdHRyKGZuLCBzKCJ1c2VyLnRlc3QiKSwgYiJoZWxsbyIsIG9zLlhBVFRSX1JFUExBQ0UsICoqa3dhcmdzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldHhhdHRyKGZuLCBiInVzZXIudGVzdCIsICoqa3dhcmdzKSwgYiJoZWxsbyIpCisKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKSBhcyBjbToKICAgICAgICAgICAgIHNldHhhdHRyKGZuLCBzKCJ1c2VyLnRlc3QiKSwgYiJieWUiLCBvcy5YQVRUUl9DUkVBVEUsICoqa3dhcmdzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRUVYSVNUKQorCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcikgYXMgY206CiAgICAgICAgICAgICBzZXR4YXR0cihmbiwgcygidXNlci50ZXN0MiIpLCBiImJ5ZSIsIG9zLlhBVFRSX1JFUExBQ0UsICoqa3dhcmdzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRU5PREFUQSkKKwogICAgICAgICBzZXR4YXR0cihmbiwgcygidXNlci50ZXN0MiIpLCBiImZvbyIsIG9zLlhBVFRSX0NSRUFURSwgKiprd2FyZ3MpCiAgICAgICAgIHhhdHRyLmFkZCgidXNlci50ZXN0MiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KGxpc3R4YXR0cihmbikpLCB4YXR0cikKICAgICAgICAgcmVtb3ZleGF0dHIoZm4sIHMoInVzZXIudGVzdCIpLCAqKmt3YXJncykKKwogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgZ2V0eGF0dHIoZm4sIHMoInVzZXIudGVzdCIpLCAqKmt3YXJncykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVOT0RBVEEpCisKICAgICAgICAgeGF0dHIucmVtb3ZlKCJ1c2VyLnRlc3QiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChsaXN0eGF0dHIoZm4pKSwgeGF0dHIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0eGF0dHIoZm4sIHMoInVzZXIudGVzdDIiKSwgKiprd2FyZ3MpLCBiImZvbyIpCkBAIC0yNTUzLDExICsyNzM1LDExIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KGxpc3R4YXR0cihmbikpLCBzZXQoaW5pdF94YXR0cikgfCBzZXQobWFueSkpCiAKICAgICBkZWYgX2NoZWNrX3hhdHRycyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICBkZWYgbWFrZV9ieXRlcyhzKToKLSAgICAgICAgICAgIHJldHVybiBieXRlcyhzLCAiYXNjaWkiKQogICAgICAgICBzZWxmLl9jaGVja194YXR0cnNfc3RyKHN0ciwgKmFyZ3MsICoqa3dhcmdzKQogICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKLSAgICAgICAgc2VsZi5fY2hlY2tfeGF0dHJzX3N0cihtYWtlX2J5dGVzLCAqYXJncywgKiprd2FyZ3MpCisKKyAgICAgICAgc2VsZi5fY2hlY2tfeGF0dHJzX3N0cihvcy5mc2VuY29kZSwgKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKIAogICAgIGRlZiB0ZXN0X3NpbXBsZShzZWxmKToKICAgICAgICAgc2VsZi5fY2hlY2tfeGF0dHJzKG9zLmdldHhhdHRyLCBvcy5zZXR4YXR0ciwgb3MucmVtb3ZleGF0dHIsCkBAIC0yNTcyLDEwICsyNzU0LDEwIEBACiAgICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgInJiIikgYXMgZnA6CiAgICAgICAgICAgICAgICAgcmV0dXJuIG9zLmdldHhhdHRyKGZwLmZpbGVubygpLCAqYXJncykKICAgICAgICAgZGVmIHNldHhhdHRyKHBhdGgsICphcmdzKToKLSAgICAgICAgICAgIHdpdGggb3BlbihwYXRoLCAid2IiKSBhcyBmcDoKKyAgICAgICAgICAgIHdpdGggb3BlbihwYXRoLCAid2IiLCAwKSBhcyBmcDoKICAgICAgICAgICAgICAgICBvcy5zZXR4YXR0cihmcC5maWxlbm8oKSwgKmFyZ3MpCiAgICAgICAgIGRlZiByZW1vdmV4YXR0cihwYXRoLCAqYXJncyk6Ci0gICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgIndiIikgYXMgZnA6CisgICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgIndiIiwgMCkgYXMgZnA6CiAgICAgICAgICAgICAgICAgb3MucmVtb3ZleGF0dHIoZnAuZmlsZW5vKCksICphcmdzKQogICAgICAgICBkZWYgbGlzdHhhdHRyKHBhdGgsICphcmdzKToKICAgICAgICAgICAgIHdpdGggb3BlbihwYXRoLCAicmIiKSBhcyBmcDoKQEAgLTI1ODMsNDMgKzI3NjUsNiBAQAogICAgICAgICBzZWxmLl9jaGVja194YXR0cnMoZ2V0eGF0dHIsIHNldHhhdHRyLCByZW1vdmV4YXR0ciwgbGlzdHhhdHRyKQogCiAKLUB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLCAiV2luMzIgc3BlY2lmaWMgdGVzdHMiKQotY2xhc3MgV2luMzJEZXByZWNhdGVkQnl0ZXNBUEkodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiB0ZXN0X2RlcHJlY2F0ZWQoc2VsZik6Ci0gICAgICAgIGltcG9ydCBudAotICAgICAgICBmaWxlbmFtZSA9IG9zLmZzZW5jb2RlKHN1cHBvcnQuVEVTVEZOKQotICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6Ci0gICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImVycm9yIiwgRGVwcmVjYXRpb25XYXJuaW5nKQotICAgICAgICAgICAgZm9yIGZ1bmMsICphcmdzIGluICgKLSAgICAgICAgICAgICAgICAobnQuX2dldGZ1bGxwYXRobmFtZSwgZmlsZW5hbWUpLAotICAgICAgICAgICAgICAgIChudC5faXNkaXIsIGZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAob3MuYWNjZXNzLCBmaWxlbmFtZSwgb3MuUl9PSyksCi0gICAgICAgICAgICAgICAgKG9zLmNoZGlyLCBmaWxlbmFtZSksCi0gICAgICAgICAgICAgICAgKG9zLmNobW9kLCBmaWxlbmFtZSwgMG83NzcpLAotICAgICAgICAgICAgICAgIChvcy5nZXRjd2RiLCksCi0gICAgICAgICAgICAgICAgKG9zLmxpbmssIGZpbGVuYW1lLCBmaWxlbmFtZSksCi0gICAgICAgICAgICAgICAgKG9zLmxpc3RkaXIsIGZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAob3MubHN0YXQsIGZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAob3MubWtkaXIsIGZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAob3Mub3BlbiwgZmlsZW5hbWUsIG9zLk9fUkRPTkxZKSwKLSAgICAgICAgICAgICAgICAob3MucmVuYW1lLCBmaWxlbmFtZSwgZmlsZW5hbWUpLAotICAgICAgICAgICAgICAgIChvcy5ybWRpciwgZmlsZW5hbWUpLAotICAgICAgICAgICAgICAgIChvcy5zdGFydGZpbGUsIGZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAob3Muc3RhdCwgZmlsZW5hbWUpLAotICAgICAgICAgICAgICAgIChvcy51bmxpbmssIGZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAob3MudXRpbWUsIGZpbGVuYW1lKSwKLSAgICAgICAgICAgICk6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRGVwcmVjYXRpb25XYXJuaW5nLCBmdW5jLCAqYXJncykKLQotICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3N5bWxpbmsKLSAgICBkZWYgdGVzdF9zeW1saW5rKHNlbGYpOgotICAgICAgICBmaWxlbmFtZSA9IG9zLmZzZW5jb2RlKHN1cHBvcnQuVEVTVEZOKQotICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6Ci0gICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImVycm9yIiwgRGVwcmVjYXRpb25XYXJuaW5nKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRGVwcmVjYXRpb25XYXJuaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Muc3ltbGluaywgZmlsZW5hbWUsIGZpbGVuYW1lKQotCi0KIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdnZXRfdGVybWluYWxfc2l6ZScpLCAicmVxdWlyZXMgb3MuZ2V0X3Rlcm1pbmFsX3NpemUiKQogY2xhc3MgVGVybXNpemVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfZG9lc19ub3RfY3Jhc2goc2VsZik6CkBAIC0yNjgyLDYgKzI4MjcsNyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZW5jb2RlZCA9IG9zLmZzZW5jb2RlKHN1cHBvcnQuVEVTVEZOKQogICAgICAgICBzZWxmLmJ5dGVzX2ZpbGVuYW1lcy5hcHBlbmQoZW5jb2RlZCkKKyAgICAgICAgc2VsZi5ieXRlc19maWxlbmFtZXMuYXBwZW5kKGJ5dGVhcnJheShlbmNvZGVkKSkKICAgICAgICAgc2VsZi5ieXRlc19maWxlbmFtZXMuYXBwZW5kKG1lbW9yeXZpZXcoZW5jb2RlZCkpCiAKICAgICAgICAgc2VsZi5maWxlbmFtZXMgPSBzZWxmLmJ5dGVzX2ZpbGVuYW1lcyArIHNlbGYudW5pY29kZV9maWxlbmFtZXMKQEAgLTI3MDIsMTYgKzI4NDgsNyBAQAogICAgICAgICAgICAgICAgIChzZWxmLmJ5dGVzX2ZpbGVuYW1lcywgb3MucmVwbGFjZSwgYiJkc3QiKSwKICAgICAgICAgICAgICAgICAoc2VsZi51bmljb2RlX2ZpbGVuYW1lcywgb3MucmVuYW1lLCAiZHN0IiksCiAgICAgICAgICAgICAgICAgKHNlbGYudW5pY29kZV9maWxlbmFtZXMsIG9zLnJlcGxhY2UsICJkc3QiKSwKLSAgICAgICAgICAgICAgICAjIElzc3VlICMxNjQxNDogRG9uJ3QgdGVzdCB1bmRlY29kYWJsZSBuYW1lcyB3aXRoIGxpc3RkaXIoKQotICAgICAgICAgICAgICAgICMgYmVjYXVzZSBvZiBhIFdpbmRvd3MgYnVnLgotICAgICAgICAgICAgICAgICMKLSAgICAgICAgICAgICAgICAjIFdpdGggdGhlIEFOU0kgY29kZSBwYWdlIDkzMiwgb3MubGlzdGRpcihiJ1x4ZTcnKSByZXR1cm4gYW4KLSAgICAgICAgICAgICAgICAjIGVtcHR5IGxpc3QgKGluc3RlYWQgb2YgZmFpbGluZyksIHdoZXJlYXMgb3MubGlzdGRpcihiJ1x4ZmYnKQotICAgICAgICAgICAgICAgICMgcmFpc2VzIGEgRmlsZU5vdEZvdW5kRXJyb3IuIEl0IGxvb2tzIGxpa2UgYSBXaW5kb3dzIGJ1ZzoKLSAgICAgICAgICAgICAgICAjIGInXHhlNycgZGlyZWN0b3J5IGRvZXMgbm90IGV4aXN0LCBGaW5kRmlyc3RGaWxlQShiJ1x4ZTcnKQotICAgICAgICAgICAgICAgICMgZmFpbHMgd2l0aCBFUlJPUl9GSUxFX05PVF9GT1VORCAoMiksIGluc3RlYWQgb2YKLSAgICAgICAgICAgICAgICAjIEVSUk9SX1BBVEhfTk9UX0ZPVU5EICgzKS4KLSAgICAgICAgICAgICAgICAoc2VsZi51bmljb2RlX2ZpbGVuYW1lcywgb3MubGlzdGRpciwpLAorICAgICAgICAgICAgICAgIChzZWxmLnVuaWNvZGVfZmlsZW5hbWVzLCBvcy5saXN0ZGlyLCApLAogICAgICAgICAgICAgKSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGZ1bmNzLmV4dGVuZCgoCkBAIC0yNzUyLDEyICsyODg5LDE5IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGZ1bmNzLmFwcGVuZCgoc2VsZi5maWxlbmFtZXMsIG9zLnJlYWRsaW5rLCkpCiAKKwogICAgICAgICBmb3IgZmlsZW5hbWVzLCBmdW5jLCAqZnVuY19hcmdzIGluIGZ1bmNzOgogICAgICAgICAgICAgZm9yIG5hbWUgaW4gZmlsZW5hbWVzOgogICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgZnVuYyhuYW1lLCAqZnVuY19hcmdzKQorICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKG5hbWUsIChzdHIsIGJ5dGVzKSk6CisgICAgICAgICAgICAgICAgICAgICAgICBmdW5jKG5hbWUsICpmdW5jX2FyZ3MpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsICdzaG91bGQgYmUnKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jKG5hbWUsICpmdW5jX2FyZ3MpCiAgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKGVyci5maWxlbmFtZSwgbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhlcnIuZmlsZW5hbWUsIG5hbWUsIHN0cihmdW5jKSkKKyAgICAgICAgICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yOgorICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJObyBleGNlcHRpb24gdGhyb3duIGJ5IHt9Ii5mb3JtYXQoZnVuYykpCiAKQEAgLTI4NTUsNiArMjk5OSw2MyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLmdldF9pbmhlcml0YWJsZShzbGF2ZV9mZCksIEZhbHNlKQogCiAKK2NsYXNzIFBhdGhUQ29udmVydGVyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgdHVwbGVzIG9mIChmdW5jdGlvbiBuYW1lLCBhbGxvd3MgZmQgYXJndW1lbnRzLCBhZGRpdGlvbmFsIGFyZ3VtZW50cyB0bworICAgICMgZnVuY3Rpb24sIGNsZWFudXAgZnVuY3Rpb24pCisgICAgZnVuY3Rpb25zID0gWworICAgICAgICAoJ3N0YXQnLCBUcnVlLCAoKSwgTm9uZSksCisgICAgICAgICgnbHN0YXQnLCBGYWxzZSwgKCksIE5vbmUpLAorICAgICAgICAoJ2FjY2VzcycsIEZhbHNlLCAob3MuRl9PSywpLCBOb25lKSwKKyAgICAgICAgKCdjaGZsYWdzJywgRmFsc2UsICgwLCksIE5vbmUpLAorICAgICAgICAoJ2xjaGZsYWdzJywgRmFsc2UsICgwLCksIE5vbmUpLAorICAgICAgICAoJ29wZW4nLCBGYWxzZSwgKDAsKSwgZ2V0YXR0cihvcywgJ2Nsb3NlJywgTm9uZSkpLAorICAgIF0KKworICAgIGRlZiB0ZXN0X3BhdGhfdF9jb252ZXJ0ZXIoc2VsZik6CisgICAgICAgIHN0cl9maWxlbmFtZSA9IHN1cHBvcnQuVEVTVEZOCisgICAgICAgIGlmIG9zLm5hbWUgPT0gJ250JzoKKyAgICAgICAgICAgIGJ5dGVzX2ZzcGF0aCA9IGJ5dGVzX2ZpbGVuYW1lID0gTm9uZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYnl0ZXNfZmlsZW5hbWUgPSBzdXBwb3J0LlRFU1RGTi5lbmNvZGUoJ2FzY2lpJykKKyAgICAgICAgICAgIGJ5dGVzX2ZzcGF0aCA9IF9QYXRoTGlrZShieXRlc19maWxlbmFtZSkKKyAgICAgICAgZmQgPSBvcy5vcGVuKF9QYXRoTGlrZShzdHJfZmlsZW5hbWUpLCBvcy5PX1dST05MWXxvcy5PX0NSRUFUKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHN1cHBvcnQuVEVTVEZOKQorICAgICAgICBzZWxmLmFkZENsZWFudXAob3MuY2xvc2UsIGZkKQorCisgICAgICAgIGludF9mc3BhdGggPSBfUGF0aExpa2UoZmQpCisgICAgICAgIHN0cl9mc3BhdGggPSBfUGF0aExpa2Uoc3RyX2ZpbGVuYW1lKQorCisgICAgICAgIGZvciBuYW1lLCBhbGxvd19mZCwgZXh0cmFfYXJncywgY2xlYW51cF9mbiBpbiBzZWxmLmZ1bmN0aW9uczoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG5hbWU9bmFtZSk6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBmbiA9IGdldGF0dHIob3MsIG5hbWUpCisgICAgICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgZm9yIHBhdGggaW4gKHN0cl9maWxlbmFtZSwgYnl0ZXNfZmlsZW5hbWUsIHN0cl9mc3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzX2ZzcGF0aCk6CisgICAgICAgICAgICAgICAgICAgIGlmIHBhdGggaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG5hbWU9bmFtZSwgcGF0aD1wYXRoKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGZuKHBhdGgsICpleHRyYV9hcmdzKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgY2xlYW51cF9mbiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhbnVwX2ZuKHJlc3VsdCkKKworICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgICAgICAgICAgICAgIFR5cGVFcnJvciwgJ3Nob3VsZCBiZSBzdHJpbmcsIGJ5dGVzJyk6CisgICAgICAgICAgICAgICAgICAgIGZuKGludF9mc3BhdGgsICpleHRyYV9hcmdzKQorCisgICAgICAgICAgICAgICAgaWYgYWxsb3dfZmQ6CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGZuKGZkLCAqZXh0cmFfYXJncykgICMgc2hvdWxkIG5vdCBmYWlsCisgICAgICAgICAgICAgICAgICAgIGlmIGNsZWFudXBfZm4gaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICBjbGVhbnVwX2ZuKHJlc3VsdCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvcy5QYXRoTGlrZScpOgorICAgICAgICAgICAgICAgICAgICAgICAgZm4oZmQsICpleHRyYV9hcmdzKQorCisKIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdnZXRfYmxvY2tpbmcnKSwKICAgICAgICAgICAgICAgICAgICAgICduZWVkcyBvcy5nZXRfYmxvY2tpbmcoKSBhbmQgb3Muc2V0X2Jsb2NraW5nKCknKQogY2xhc3MgQmxvY2tpbmdUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0yODc4LDE1ICszMDc5LDE4IEBACiAKIAogY2xhc3MgVGVzdFNjYW5kaXIodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGNoZWNrX25vX3Jlc291cmNlX3dhcm5pbmcgPSBzdXBwb3J0LmNoZWNrX25vX3Jlc291cmNlX3dhcm5pbmcKKwogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5wYXRoID0gb3MucGF0aC5yZWFscGF0aChzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgc2VsZi5ieXRlc19wYXRoID0gb3MuZnNlbmNvZGUoc2VsZi5wYXRoKQogICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC5ybXRyZWUsIHNlbGYucGF0aCkKICAgICAgICAgb3MubWtkaXIoc2VsZi5wYXRoKQogCiAgICAgZGVmIGNyZWF0ZV9maWxlKHNlbGYsIG5hbWU9ImZpbGUudHh0Iik6Ci0gICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKHNlbGYucGF0aCwgbmFtZSkKLSAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAid2IiKSBhcyBmcDoKLSAgICAgICAgICAgIGZwLndyaXRlKGIncHl0aG9uJykKKyAgICAgICAgcGF0aCA9IHNlbGYuYnl0ZXNfcGF0aCBpZiBpc2luc3RhbmNlKG5hbWUsIGJ5dGVzKSBlbHNlIHNlbGYucGF0aAorICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGguam9pbihwYXRoLCBuYW1lKQorICAgICAgICBjcmVhdGVfZmlsZShmaWxlbmFtZSwgYidweXRob24nKQogICAgICAgICByZXR1cm4gZmlsZW5hbWUKIAogICAgIGRlZiBnZXRfZW50cmllcyhzZWxmLCBuYW1lcyk6CkBAIC0yOTA5LDYgKzMxMTMsNyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0MSwgc3RhdDIpCiAKICAgICBkZWYgY2hlY2tfZW50cnkoc2VsZiwgZW50cnksIG5hbWUsIGlzX2RpciwgaXNfZmlsZSwgaXNfc3ltbGluayk6CisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShlbnRyeSwgb3MuRGlyRW50cnkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW50cnkubmFtZSwgbmFtZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbnRyeS5wYXRoLCBvcy5wYXRoLmpvaW4oc2VsZi5wYXRoLCBuYW1lKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbnRyeS5pbm9kZSgpLApAQCAtMjk3NCwxNSArMzE3OSwxNiBAQAogICAgICAgICAgICAgc2VsZi5jaGVja19lbnRyeShlbnRyeSwgJ3N5bWxpbmtfZmlsZS50eHQnLCBGYWxzZSwgVHJ1ZSwgVHJ1ZSkKIAogICAgIGRlZiBnZXRfZW50cnkoc2VsZiwgbmFtZSk6Ci0gICAgICAgIGVudHJpZXMgPSBsaXN0KG9zLnNjYW5kaXIoc2VsZi5wYXRoKSkKKyAgICAgICAgcGF0aCA9IHNlbGYuYnl0ZXNfcGF0aCBpZiBpc2luc3RhbmNlKG5hbWUsIGJ5dGVzKSBlbHNlIHNlbGYucGF0aAorICAgICAgICBlbnRyaWVzID0gbGlzdChvcy5zY2FuZGlyKHBhdGgpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihlbnRyaWVzKSwgMSkKIAogICAgICAgICBlbnRyeSA9IGVudHJpZXNbMF0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbnRyeS5uYW1lLCBuYW1lKQogICAgICAgICByZXR1cm4gZW50cnkKIAotICAgIGRlZiBjcmVhdGVfZmlsZV9lbnRyeShzZWxmKToKLSAgICAgICAgZmlsZW5hbWUgPSBzZWxmLmNyZWF0ZV9maWxlKCkKKyAgICBkZWYgY3JlYXRlX2ZpbGVfZW50cnkoc2VsZiwgbmFtZT0nZmlsZS50eHQnKToKKyAgICAgICAgZmlsZW5hbWUgPSBzZWxmLmNyZWF0ZV9maWxlKG5hbWU9bmFtZSkKICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0X2VudHJ5KG9zLnBhdGguYmFzZW5hbWUoZmlsZW5hbWUpKQogCiAgICAgZGVmIHRlc3RfY3VycmVudF9kaXJlY3Rvcnkoc2VsZik6CkBAIC0zMDAzLDYgKzMyMDksMTggQEAKICAgICAgICAgZW50cnkgPSBzZWxmLmNyZWF0ZV9maWxlX2VudHJ5KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGVudHJ5KSwgIjxEaXJFbnRyeSAnZmlsZS50eHQnPiIpCiAKKyAgICBkZWYgdGVzdF9mc3BhdGhfcHJvdG9jb2woc2VsZik6CisgICAgICAgIGVudHJ5ID0gc2VsZi5jcmVhdGVfZmlsZV9lbnRyeSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MuZnNwYXRoKGVudHJ5KSwgb3MucGF0aC5qb2luKHNlbGYucGF0aCwgJ2ZpbGUudHh0JykpCisKKyAgICBkZWYgdGVzdF9mc3BhdGhfcHJvdG9jb2xfYnl0ZXMoc2VsZik6CisgICAgICAgIGJ5dGVzX2ZpbGVuYW1lID0gb3MuZnNlbmNvZGUoJ2J5dGVzZmlsZS50eHQnKQorICAgICAgICBieXRlc19lbnRyeSA9IHNlbGYuY3JlYXRlX2ZpbGVfZW50cnkobmFtZT1ieXRlc19maWxlbmFtZSkKKyAgICAgICAgZnNwYXRoID0gb3MuZnNwYXRoKGJ5dGVzX2VudHJ5KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZnNwYXRoLCBieXRlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmc3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKG9zLmZzZW5jb2RlKHNlbGYucGF0aCksYnl0ZXNfZmlsZW5hbWUpKQorCiAgICAgZGVmIHRlc3RfcmVtb3ZlZF9kaXIoc2VsZik6CiAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5wYXRoLCAnZGlyJykKIApAQCAtMzA2NiwxMSArMzI4NCw2IEBACiAgICAgICAgIGVudHJ5LnN0YXQoZm9sbG93X3N5bWxpbmtzPUZhbHNlKQogCiAgICAgZGVmIHRlc3RfYnl0ZXMoc2VsZik6Ci0gICAgICAgIGlmIG9zLm5hbWUgPT0gIm50IjoKLSAgICAgICAgICAgICMgT24gV2luZG93cywgb3Muc2NhbmRpcihieXRlcykgbXVzdCByYWlzZSBhbiBleGNlcHRpb24KLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3Muc2NhbmRpciwgYicuJykKLSAgICAgICAgICAgIHJldHVybgotCiAgICAgICAgIHNlbGYuY3JlYXRlX2ZpbGUoImZpbGUudHh0IikKIAogICAgICAgICBwYXRoX2J5dGVzID0gb3MuZnNlbmNvZGUoc2VsZi5wYXRoKQpAQCAtMzEwMCw2ICszMzEzLDExMiBAQAogICAgICAgICBmb3Igb2JqIGluIFsxMjM0LCAxLjIzNCwge30sIFtdXToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3Muc2NhbmRpciwgb2JqKQogCisgICAgZGVmIHRlc3RfY2xvc2Uoc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlX2ZpbGUoImZpbGUudHh0IikKKyAgICAgICAgc2VsZi5jcmVhdGVfZmlsZSgiZmlsZTIudHh0IikKKyAgICAgICAgaXRlcmF0b3IgPSBvcy5zY2FuZGlyKHNlbGYucGF0aCkKKyAgICAgICAgbmV4dChpdGVyYXRvcikKKyAgICAgICAgaXRlcmF0b3IuY2xvc2UoKQorICAgICAgICAjIG11bHRpcGxlIGNsb3NlcworICAgICAgICBpdGVyYXRvci5jbG9zZSgpCisgICAgICAgIHdpdGggc2VsZi5jaGVja19ub19yZXNvdXJjZV93YXJuaW5nKCk6CisgICAgICAgICAgICBkZWwgaXRlcmF0b3IKKworICAgIGRlZiB0ZXN0X2NvbnRleHRfbWFuYWdlcihzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVfZmlsZSgiZmlsZS50eHQiKQorICAgICAgICBzZWxmLmNyZWF0ZV9maWxlKCJmaWxlMi50eHQiKQorICAgICAgICB3aXRoIG9zLnNjYW5kaXIoc2VsZi5wYXRoKSBhcyBpdGVyYXRvcjoKKyAgICAgICAgICAgIG5leHQoaXRlcmF0b3IpCisgICAgICAgIHdpdGggc2VsZi5jaGVja19ub19yZXNvdXJjZV93YXJuaW5nKCk6CisgICAgICAgICAgICBkZWwgaXRlcmF0b3IKKworICAgIGRlZiB0ZXN0X2NvbnRleHRfbWFuYWdlcl9jbG9zZShzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVfZmlsZSgiZmlsZS50eHQiKQorICAgICAgICBzZWxmLmNyZWF0ZV9maWxlKCJmaWxlMi50eHQiKQorICAgICAgICB3aXRoIG9zLnNjYW5kaXIoc2VsZi5wYXRoKSBhcyBpdGVyYXRvcjoKKyAgICAgICAgICAgIG5leHQoaXRlcmF0b3IpCisgICAgICAgICAgICBpdGVyYXRvci5jbG9zZSgpCisKKyAgICBkZWYgdGVzdF9jb250ZXh0X21hbmFnZXJfZXhjZXB0aW9uKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZV9maWxlKCJmaWxlLnR4dCIpCisgICAgICAgIHNlbGYuY3JlYXRlX2ZpbGUoImZpbGUyLnR4dCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IpOgorICAgICAgICAgICAgd2l0aCBvcy5zY2FuZGlyKHNlbGYucGF0aCkgYXMgaXRlcmF0b3I6CisgICAgICAgICAgICAgICAgbmV4dChpdGVyYXRvcikKKyAgICAgICAgICAgICAgICAxLzAKKyAgICAgICAgd2l0aCBzZWxmLmNoZWNrX25vX3Jlc291cmNlX3dhcm5pbmcoKToKKyAgICAgICAgICAgIGRlbCBpdGVyYXRvcgorCisgICAgZGVmIHRlc3RfcmVzb3VyY2Vfd2FybmluZyhzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVfZmlsZSgiZmlsZS50eHQiKQorICAgICAgICBzZWxmLmNyZWF0ZV9maWxlKCJmaWxlMi50eHQiKQorICAgICAgICBpdGVyYXRvciA9IG9zLnNjYW5kaXIoc2VsZi5wYXRoKQorICAgICAgICBuZXh0KGl0ZXJhdG9yKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoUmVzb3VyY2VXYXJuaW5nKToKKyAgICAgICAgICAgIGRlbCBpdGVyYXRvcgorICAgICAgICAgICAgc3VwcG9ydC5nY19jb2xsZWN0KCkKKyAgICAgICAgIyBleGhhdXN0ZWQgaXRlcmF0b3IKKyAgICAgICAgaXRlcmF0b3IgPSBvcy5zY2FuZGlyKHNlbGYucGF0aCkKKyAgICAgICAgbGlzdChpdGVyYXRvcikKKyAgICAgICAgd2l0aCBzZWxmLmNoZWNrX25vX3Jlc291cmNlX3dhcm5pbmcoKToKKyAgICAgICAgICAgIGRlbCBpdGVyYXRvcgorCisKK2NsYXNzIFRlc3RQRVA1MTkodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgIyBBYnN0cmFjdGVkIHNvIGl0IGNhbiBiZSBvdmVycmlkZGVuIHRvIHRlc3QgcHVyZSBQeXRob24gaW1wbGVtZW50YXRpb24KKyAgICAjIGlmIGEgQyB2ZXJzaW9uIGlzIHByb3ZpZGVkLgorICAgIGZzcGF0aCA9IHN0YXRpY21ldGhvZChvcy5mc3BhdGgpCisKKyAgICBkZWYgdGVzdF9yZXR1cm5fYnl0ZXMoc2VsZik6CisgICAgICAgIGZvciBiIGluIGInaGVsbG8nLCBiJ2dvb2RieWUnLCBiJ3NvbWUvcGF0aC9hbmQvZmlsZSc6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIHNlbGYuZnNwYXRoKGIpKQorCisgICAgZGVmIHRlc3RfcmV0dXJuX3N0cmluZyhzZWxmKToKKyAgICAgICAgZm9yIHMgaW4gJ2hlbGxvJywgJ2dvb2RieWUnLCAnc29tZS9wYXRoL2FuZC9maWxlJzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywgc2VsZi5mc3BhdGgocykpCisKKyAgICBkZWYgdGVzdF9mc2VuY29kZV9mc2RlY29kZShzZWxmKToKKyAgICAgICAgZm9yIHAgaW4gInBhdGgvbGlrZS9vYmplY3QiLCBiInBhdGgvbGlrZS9vYmplY3QiOgorICAgICAgICAgICAgcGF0aGxpa2UgPSBfUGF0aExpa2UocCkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLCBzZWxmLmZzcGF0aChwYXRobGlrZSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIicGF0aC9saWtlL29iamVjdCIsIG9zLmZzZW5jb2RlKHBhdGhsaWtlKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInBhdGgvbGlrZS9vYmplY3QiLCBvcy5mc2RlY29kZShwYXRobGlrZSkpCisKKyAgICBkZWYgdGVzdF9wYXRobGlrZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnI2ZlZWx0aGVnaWwnLCBzZWxmLmZzcGF0aChfUGF0aExpa2UoJyNmZWVsdGhlZ2lsJykpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhfUGF0aExpa2UsIG9zLlBhdGhMaWtlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoX1BhdGhMaWtlKCksIG9zLlBhdGhMaWtlKSkKKworICAgIGRlZiB0ZXN0X2dhcmJhZ2VfaW5fZXhjZXB0aW9uX291dChzZWxmKToKKyAgICAgICAgdmFwb3IgPSB0eXBlKCdibGFoJywgKCksIHt9KQorICAgICAgICBmb3IgbyBpbiBpbnQsIHR5cGUsIG9zLCB2YXBvcigpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmZzcGF0aCwgbykKKworICAgIGRlZiB0ZXN0X2FyZ3VtZW50X3JlcXVpcmVkKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZnNwYXRoKQorCisgICAgZGVmIHRlc3RfYmFkX3BhdGhsaWtlKHNlbGYpOgorICAgICAgICAjIF9fZnNwYXRoX18gcmV0dXJucyBhIHZhbHVlIG90aGVyIHRoYW4gc3RyIG9yIGJ5dGVzLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZnNwYXRoLCBfUGF0aExpa2UoNDIpKQorICAgICAgICAjIF9fZnNwYXRoX18gYXR0cmlidXRlIHRoYXQgaXMgbm90IGNhbGxhYmxlLgorICAgICAgICBjID0gdHlwZSgnZm9vJywgKCksIHt9KQorICAgICAgICBjLl9fZnNwYXRoX18gPSAxCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5mc3BhdGgsIGMoKSkKKyAgICAgICAgIyBfX2ZzcGF0aF9fIHJhaXNlcyBhbiBleGNlcHRpb24uCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yLCBzZWxmLmZzcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgX1BhdGhMaWtlKFplcm9EaXZpc2lvbkVycm9yKCkpKQorCisjIE9ubHkgdGVzdCBpZiB0aGUgQyB2ZXJzaW9uIGlzIHByb3ZpZGVkLCBvdGhlcndpc2UgVGVzdFBFUDUxOSBhbHJlYWR5IHRlc3RlZAorIyB0aGUgcHVyZSBQeXRob24gaW1wbGVtZW50YXRpb24uCitpZiBoYXNhdHRyKG9zLCAiX2ZzcGF0aCIpOgorICAgIGNsYXNzIFRlc3RQRVA1MTlQdXJlUHl0aG9uKFRlc3RQRVA1MTkpOgorCisgICAgICAgICIiIkV4cGxpY2l0bHkgdGVzdCB0aGUgcHVyZSBQeXRob24gaW1wbGVtZW50YXRpb24gb2Ygb3MuZnNwYXRoKCkuIiIiCisKKyAgICAgICAgZnNwYXRoID0gc3RhdGljbWV0aG9kKG9zLl9mc3BhdGgpCisKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGFyc2VyLnB5IGIvTGliL3Rlc3QvdGVzdF9wYXJzZXIucHkKaW5kZXggYWI2NTc3Zi4uZDZlNmY3MSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wYXJzZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wYXJzZXIucHkKQEAgLTEsNiArMSw1IEBACiBpbXBvcnQgcGFyc2VyCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBzeXMKIGltcG9ydCBvcGVyYXRvcgogaW1wb3J0IHN0cnVjdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CkBAIC0xMzksNiArMTM4LDQ1IEBACiAgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImEgPSBiIikKICAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgiYSA9IGIgPSBjID0gZCA9IGUiKQogCisgICAgZGVmIHRlc3RfdmFyX2Fubm90KHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJ4OiBpbnQgPSA1IikKKyAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgieTogTGlzdFtUXSA9IFtdOyB6OiBbbGlzdF0gPSBmdW4oKSIpCisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoIng6IHR1cGxlID0gKDEsIDIpIikKKyAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgiZFtmKCldOiBpbnQgPSA0MiIpCisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImYoZFt4XSk6IHN0ciA9ICdhYmMnIikKKyAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgieC55LnoudzogY29tcGxleCA9IDQyaiIpCisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoIng6IGludCIpCisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImRlZiBmKCk6XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICB4OiBzdHJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHk6IGludCA9IDVcbiIpCisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImNsYXNzIEM6XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICB4OiBzdHJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHk6IGludCA9IDVcbiIpCisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImNsYXNzIEM6XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBkZWYgX19pbml0X18oc2VsZiwgeDogaW50KSAtPiBOb25lOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgIHNlbGYueDogaW50ID0geFxuIikKKyAgICAgICAgIyBkb3VibGUgY2hlY2sgZm9yIG5vbnNlbnNlCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IpOgorICAgICAgICAgICAgZXhlYygiMisyOiBpbnQiLCB7fSwge30pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IpOgorICAgICAgICAgICAgZXhlYygiW106IGludCA9IDUiLCB7fSwge30pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IpOgorICAgICAgICAgICAgZXhlYygieCwgKnksIHo6IGludCA9IHJhbmdlKDUpIiwge30sIHt9KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKKyAgICAgICAgICAgIGV4ZWMoInQ6IHR1cGxlID0gMSwgMiIsIHt9LCB7fSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvcik6CisgICAgICAgICAgICBleGVjKCJ1ID0gdjogaW50Iiwge30sIHt9KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKKyAgICAgICAgICAgIGV4ZWMoIkZhbHNlOiBpbnQiLCB7fSwge30pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IpOgorICAgICAgICAgICAgZXhlYygieC5GYWxzZTogaW50Iiwge30sIHt9KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKKyAgICAgICAgICAgIGV4ZWMoIngueSw6IGludCIsIHt9LCB7fSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvcik6CisgICAgICAgICAgICBleGVjKCJbMF06IGludCIsIHt9LCB7fSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvcik6CisgICAgICAgICAgICBleGVjKCJmKCk6IGludCIsIHt9LCB7fSkKKwogICAgIGRlZiB0ZXN0X3NpbXBsZV9hdWdtZW50ZWRfYXNzaWdubWVudHMoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImEgKz0gYiIpCiAgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImEgLT0gYiIpCkBAIC02MzMsMTIgKzY3MSwxOCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGUuY29fZmlsZW5hbWUsICc8c3ludGF4LXRyZWU+JykKICAgICAgICAgY29kZSA9IHN0LmNvbXBpbGUoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGUuY29fZmlsZW5hbWUsICc8c3ludGF4LXRyZWU+JykKLSAgICAgICAgZm9yIGZpbGVuYW1lIGluICgnZmlsZS5weScsIGInZmlsZS5weScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZWFycmF5KGInZmlsZS5weScpLCBtZW1vcnl2aWV3KGInZmlsZS5weScpKToKKyAgICAgICAgZm9yIGZpbGVuYW1lIGluICdmaWxlLnB5JywgYidmaWxlLnB5JzoKICAgICAgICAgICAgIGNvZGUgPSBwYXJzZXIuY29tcGlsZXN0KHN0LCBmaWxlbmFtZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZS5jb19maWxlbmFtZSwgJ2ZpbGUucHknKQogICAgICAgICAgICAgY29kZSA9IHN0LmNvbXBpbGUoZmlsZW5hbWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGUuY29fZmlsZW5hbWUsICdmaWxlLnB5JykKKyAgICAgICAgZm9yIGZpbGVuYW1lIGluIGJ5dGVhcnJheShiJ2ZpbGUucHknKSwgbWVtb3J5dmlldyhiJ2ZpbGUucHknKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgICAgIGNvZGUgPSBwYXJzZXIuY29tcGlsZXN0KHN0LCBmaWxlbmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZS5jb19maWxlbmFtZSwgJ2ZpbGUucHknKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICAgICAgY29kZSA9IHN0LmNvbXBpbGUoZmlsZW5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGUuY29fZmlsZW5hbWUsICdmaWxlLnB5JykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwYXJzZXIuY29tcGlsZXN0LCBzdCwgbGlzdChiJ2ZpbGUucHknKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzdC5jb21waWxlLCBsaXN0KGInZmlsZS5weScpKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BhdGhsaWIucHkgYi9MaWIvdGVzdC90ZXN0X3BhdGhsaWIucHkKaW5kZXggZmE5NmQ5Zi4uY2UxY2ExNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wYXRobGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGF0aGxpYi5weQpAQCAtMTAsNiArMTAsNyBAQAogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorYW5kcm9pZF9ub3Rfcm9vdCA9IHN1cHBvcnQuYW5kcm9pZF9ub3Rfcm9vdAogVEVTVEZOID0gc3VwcG9ydC5URVNURk4KIAogdHJ5OgpAQCAtMTkwLDEzICsxOTEsMTggQEAKICAgICAgICAgUCA9IHNlbGYuY2xzCiAgICAgICAgIHAgPSBQKCdhJykKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHAsIFApCisgICAgICAgIGNsYXNzIFBhdGhMaWtlOgorICAgICAgICAgICAgZGVmIF9fZnNwYXRoX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuICJhL2IvYyIKICAgICAgICAgUCgnYScsICdiJywgJ2MnKQogICAgICAgICBQKCcvYScsICdiJywgJ2MnKQogICAgICAgICBQKCdhL2IvYycpCiAgICAgICAgIFAoJy9hL2IvYycpCisgICAgICAgIFAoUGF0aExpa2UoKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKFAoJ2EnKSksIFAoJ2EnKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKFAoJ2EnKSwgJ2InKSwgUCgnYS9iJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUChQKCdhJyksIFAoJ2InKSksIFAoJ2EvYicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoUCgnYScpLCBQKCdiJyksIFAoJ2MnKSksIFAoUGF0aExpa2UoKSkpCiAKICAgICBkZWYgX2NoZWNrX3N0cl9zdWJjbGFzcyhzZWxmLCAqYXJncyk6CiAgICAgICAgICMgSXNzdWUgIzIxMTI3OiBpdCBzaG91bGQgYmUgcG9zc2libGUgdG8gY29uc3RydWN0IGEgUHVyZVBhdGggb2JqZWN0CkBAIC0zODQsNiArMzkwLDEyIEBACiAgICAgICAgIHBhcnRzID0gcC5wYXJ0cwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnRzLCAoc2VwLCAnYScsICdiJykpCiAKKyAgICBkZWYgdGVzdF9mc3BhdGhfY29tbW9uKHNlbGYpOgorICAgICAgICBQID0gc2VsZi5jbHMKKyAgICAgICAgcCA9IFAoJ2EvYicpCisgICAgICAgIHNlbGYuX2NoZWNrX3N0cihwLl9fZnNwYXRoX18oKSwgKCdhL2InLCkpCisgICAgICAgIHNlbGYuX2NoZWNrX3N0cihvcy5mc3BhdGgocCksICgnYS9iJywpKQorCiAgICAgZGVmIHRlc3RfZXF1aXZhbGVuY2VzKHNlbGYpOgogICAgICAgICBmb3IgaywgdHVwbGVzIGluIHNlbGYuZXF1aXZhbGVuY2VzLml0ZW1zKCk6CiAgICAgICAgICAgICBjYW5vbiA9IGsucmVwbGFjZSgnLycsIHNlbGYuc2VwKQpAQCAtMTQ3NCwyMSArMTQ4NiwzMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChwLmdsb2IoImRpckEvLi4vZmlsZSoiKSksIHsgUChCQVNFLCAiZGlyQS8uLi9maWxlQSIpIH0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KHAuZ2xvYigiLi4veHl6enkiKSksIHNldCgpKQogCi0gICAgZGVmIF9jaGVja19yZXNvbHZlX3JlbGF0aXZlKHNlbGYsIHAsIGV4cGVjdGVkKToKLSAgICAgICAgcSA9IHAucmVzb2x2ZSgpCisKKyAgICBkZWYgX2NoZWNrX3Jlc29sdmUoc2VsZiwgcCwgZXhwZWN0ZWQsIHN0cmljdD1UcnVlKToKKyAgICAgICAgcSA9IHAucmVzb2x2ZShzdHJpY3QpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocSwgZXhwZWN0ZWQpCiAKLSAgICBkZWYgX2NoZWNrX3Jlc29sdmVfYWJzb2x1dGUoc2VsZiwgcCwgZXhwZWN0ZWQpOgotICAgICAgICBxID0gcC5yZXNvbHZlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxLCBleHBlY3RlZCkKKyAgICAjIHRoaXMgY2FuIGJlIHVzZWQgdG8gY2hlY2sgYm90aCByZWxhdGl2ZSBhbmQgYWJzb2x1dGUgcmVzb2x1dGlvbnMKKyAgICBfY2hlY2tfcmVzb2x2ZV9yZWxhdGl2ZSA9IF9jaGVja19yZXNvbHZlX2Fic29sdXRlID0gX2NoZWNrX3Jlc29sdmUKIAogICAgIEB3aXRoX3N5bWxpbmtzCiAgICAgZGVmIHRlc3RfcmVzb2x2ZV9jb21tb24oc2VsZik6CiAgICAgICAgIFAgPSBzZWxmLmNscwogICAgICAgICBwID0gUChCQVNFLCAnZm9vJykKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKSBhcyBjbToKLSAgICAgICAgICAgIHAucmVzb2x2ZSgpCisgICAgICAgICAgICBwLnJlc29sdmUoc3RyaWN0PVRydWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FTk9FTlQpCisgICAgICAgICMgTm9uLXN0cmljdAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihwLnJlc29sdmUoc3RyaWN0PUZhbHNlKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKEJBU0UsICdmb28nKSkKKyAgICAgICAgcCA9IFAoQkFTRSwgJ2ZvbycsICdpbicsICdzcGFtJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIocC5yZXNvbHZlKHN0cmljdD1GYWxzZSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihCQVNFLCAnZm9vJykpCisgICAgICAgIHAgPSBQKEJBU0UsICcuLicsICdmb28nLCAnaW4nLCAnc3BhbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHAucmVzb2x2ZShzdHJpY3Q9RmFsc2UpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKCdmb28nKSkpCiAgICAgICAgICMgVGhlc2UgYXJlIGFsbCByZWxhdGl2ZSBzeW1saW5rcwogICAgICAgICBwID0gUChCQVNFLCAnZGlyQicsICdmaWxlQicpCiAgICAgICAgIHNlbGYuX2NoZWNrX3Jlc29sdmVfcmVsYXRpdmUocCwgcCkKQEAgLTE0OTgsNiArMTUxOSwxOCBAQAogICAgICAgICBzZWxmLl9jaGVja19yZXNvbHZlX3JlbGF0aXZlKHAsIFAoQkFTRSwgJ2RpckInLCAnZmlsZUInKSkKICAgICAgICAgcCA9IFAoQkFTRSwgJ2RpckInLCAnbGlua0QnLCAnZmlsZUInKQogICAgICAgICBzZWxmLl9jaGVja19yZXNvbHZlX3JlbGF0aXZlKHAsIFAoQkFTRSwgJ2RpckInLCAnZmlsZUInKSkKKyAgICAgICAgIyBOb24tc3RyaWN0CisgICAgICAgIHAgPSBQKEJBU0UsICdkaXJBJywgJ2xpbmtDJywgJ2ZpbGVCJywgJ2ZvbycsICdpbicsICdzcGFtJykKKyAgICAgICAgc2VsZi5fY2hlY2tfcmVzb2x2ZV9yZWxhdGl2ZShwLCBQKEJBU0UsICdkaXJCJywgJ2ZpbGVCJywgJ2ZvbycpLCBGYWxzZSkKKyAgICAgICAgcCA9IFAoQkFTRSwgJ2RpckEnLCAnbGlua0MnLCAnLi4nLCAnZm9vJywgJ2luJywgJ3NwYW0nKQorICAgICAgICBpZiBvcy5uYW1lID09ICdudCc6CisgICAgICAgICAgICAjIEluIFdpbmRvd3MsIGlmIGxpbmtZIHBvaW50cyB0byBkaXJCLCAnZGlyQVxsaW5rWVwuLicKKyAgICAgICAgICAgICMgcmVzb2x2ZXMgdG8gJ2RpckEnIHdpdGhvdXQgcmVzb2x2aW5nIGxpbmtZIGZpcnN0LgorICAgICAgICAgICAgc2VsZi5fY2hlY2tfcmVzb2x2ZV9yZWxhdGl2ZShwLCBQKEJBU0UsICdkaXJBJywgJ2ZvbycpLCBGYWxzZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgSW4gUG9zaXgsIGlmIGxpbmtZIHBvaW50cyB0byBkaXJCLCAnZGlyQS9saW5rWS8uLicKKyAgICAgICAgICAgICMgcmVzb2x2ZXMgdG8gJ2RpckIvLi4nIGZpcnN0IGJlZm9yZSByZXNvbHZpbmcgdG8gcGFyZW50IG9mIGRpckIuCisgICAgICAgICAgICBzZWxmLl9jaGVja19yZXNvbHZlX3JlbGF0aXZlKHAsIFAoQkFTRSwgJ2ZvbycpLCBGYWxzZSkKICAgICAgICAgIyBOb3cgY3JlYXRlIGFic29sdXRlIHN5bWxpbmtzCiAgICAgICAgIGQgPSB0ZW1wZmlsZS5ta2R0ZW1wKHN1ZmZpeD0nLWRpckQnKQogICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC5ybXRyZWUsIGQpCkBAIC0xNTA1LDYgKzE1MzgsMTggQEAKICAgICAgICAgb3Muc3ltbGluayhqb2luKCdkaXJCJyksIG9zLnBhdGguam9pbihkLCAnbGlua1knKSkKICAgICAgICAgcCA9IFAoQkFTRSwgJ2RpckEnLCAnbGlua1gnLCAnbGlua1knLCAnZmlsZUInKQogICAgICAgICBzZWxmLl9jaGVja19yZXNvbHZlX2Fic29sdXRlKHAsIFAoQkFTRSwgJ2RpckInLCAnZmlsZUInKSkKKyAgICAgICAgIyBOb24tc3RyaWN0CisgICAgICAgIHAgPSBQKEJBU0UsICdkaXJBJywgJ2xpbmtYJywgJ2xpbmtZJywgJ2ZvbycsICdpbicsICdzcGFtJykKKyAgICAgICAgc2VsZi5fY2hlY2tfcmVzb2x2ZV9yZWxhdGl2ZShwLCBQKEJBU0UsICdkaXJCJywgJ2ZvbycpLCBGYWxzZSkKKyAgICAgICAgcCA9IFAoQkFTRSwgJ2RpckEnLCAnbGlua1gnLCAnbGlua1knLCAnLi4nLCAnZm9vJywgJ2luJywgJ3NwYW0nKQorICAgICAgICBpZiBvcy5uYW1lID09ICdudCc6CisgICAgICAgICAgICAjIEluIFdpbmRvd3MsIGlmIGxpbmtZIHBvaW50cyB0byBkaXJCLCAnZGlyQVxsaW5rWVwuLicKKyAgICAgICAgICAgICMgcmVzb2x2ZXMgdG8gJ2RpckEnIHdpdGhvdXQgcmVzb2x2aW5nIGxpbmtZIGZpcnN0LgorICAgICAgICAgICAgc2VsZi5fY2hlY2tfcmVzb2x2ZV9yZWxhdGl2ZShwLCBQKGQsICdmb28nKSwgRmFsc2UpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIEluIFBvc2l4LCBpZiBsaW5rWSBwb2ludHMgdG8gZGlyQiwgJ2RpckEvbGlua1kvLi4nCisgICAgICAgICAgICAjIHJlc29sdmVzIHRvICdkaXJCLy4uJyBmaXJzdCBiZWZvcmUgcmVzb2x2aW5nIHRvIHBhcmVudCBvZiBkaXJCLgorICAgICAgICAgICAgc2VsZi5fY2hlY2tfcmVzb2x2ZV9yZWxhdGl2ZShwLCBQKEJBU0UsICdmb28nKSwgRmFsc2UpCiAKICAgICBAd2l0aF9zeW1saW5rcwogICAgIGRlZiB0ZXN0X3Jlc29sdmVfZG90KHNlbGYpOgpAQCAtMTUxNCw3ICsxNTU5LDExIEBACiAgICAgICAgIHNlbGYuZGlybGluayhvcy5wYXRoLmpvaW4oJzAnLCAnMCcpLCBqb2luKCcxJykpCiAgICAgICAgIHNlbGYuZGlybGluayhvcy5wYXRoLmpvaW4oJzEnLCAnMScpLCBqb2luKCcyJykpCiAgICAgICAgIHEgPSBwIC8gJzInCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocS5yZXNvbHZlKCksIHApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocS5yZXNvbHZlKHN0cmljdD1UcnVlKSwgcCkKKyAgICAgICAgciA9IHEgLyAnMycgLyAnNCcKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRmlsZU5vdEZvdW5kRXJyb3IsIHIucmVzb2x2ZSwgc3RyaWN0PVRydWUpCisgICAgICAgICMgTm9uLXN0cmljdAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHIucmVzb2x2ZShzdHJpY3Q9RmFsc2UpLCBwIC8gJzMnKQogCiAgICAgZGVmIHRlc3Rfd2l0aChzZWxmKToKICAgICAgICAgcCA9IHNlbGYuY2xzKEJBU0UpCkBAIC0xODE2LDYgKzE4NjUsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKChQIC8gJ2ZpbGVBJyAvICdiYWgnKS5pc19maWZvKCkpCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAibWtmaWZvIiksICJvcy5ta2ZpZm8oKSByZXF1aXJlZCIpCisgICAgQHVuaXR0ZXN0LnNraXBJZihhbmRyb2lkX25vdF9yb290LCAibWtmaWZvIG5vdCBhbGxvd2VkLCBub24gcm9vdCB1c2VyIikKICAgICBkZWYgdGVzdF9pc19maWZvX3RydWUoc2VsZik6CiAgICAgICAgIFAgPSBzZWxmLmNscyhCQVNFLCAnbXlmaWZvJykKICAgICAgICAgb3MubWtmaWZvKHN0cihQKSkKQEAgLTE4MzgsNyArMTg4OCw4IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNvY2suYmluZChzdHIoUCkpCiAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICBpZiAiQUZfVU5JWCBwYXRoIHRvbyBsb25nIiBpbiBzdHIoZSk6CisgICAgICAgICAgICBpZiAoaXNpbnN0YW5jZShlLCBQZXJtaXNzaW9uRXJyb3IpIG9yCisgICAgICAgICAgICAgICAgICAgICJBRl9VTklYIHBhdGggdG9vIGxvbmciIGluIHN0cihlKSk6CiAgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiY2Fubm90IGJpbmQgVW5peCBzb2NrZXQ6ICIgKyBzdHIoZSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShQLmlzX3NvY2tldCgpKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKFAuaXNfZmlmbygpKQpAQCAtMTk2MSwxMCArMjAxMiwxMCBAQAogY2xhc3MgUG9zaXhQYXRoVGVzdChfQmFzZVBhdGhUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgY2xzID0gcGF0aGxpYi5Qb3NpeFBhdGgKIAotICAgIGRlZiBfY2hlY2tfc3ltbGlua19sb29wKHNlbGYsICphcmdzKToKKyAgICBkZWYgX2NoZWNrX3N5bWxpbmtfbG9vcChzZWxmLCAqYXJncywgc3RyaWN0PVRydWUpOgogICAgICAgICBwYXRoID0gc2VsZi5jbHMoKmFyZ3MpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKLSAgICAgICAgICAgIHByaW50KHBhdGgucmVzb2x2ZSgpKQorICAgICAgICAgICAgcHJpbnQocGF0aC5yZXNvbHZlKHN0cmljdCkpCiAKICAgICBkZWYgdGVzdF9vcGVuX21vZGUoc2VsZik6CiAgICAgICAgIG9sZF9tYXNrID0gb3MudW1hc2soMCkKQEAgLTE5OTcsNyArMjA0OCw2IEBACiAKICAgICBAd2l0aF9zeW1saW5rcwogICAgIGRlZiB0ZXN0X3Jlc29sdmVfbG9vcChzZWxmKToKLSAgICAgICAgIyBMb29wIGRldGVjdGlvbiBmb3IgYnJva2VuIHN5bWxpbmtzIHVuZGVyIFBPU0lYCiAgICAgICAgICMgTG9vcHMgd2l0aCByZWxhdGl2ZSBzeW1saW5rcwogICAgICAgICBvcy5zeW1saW5rKCdsaW5rWC9pbnNpZGUnLCBqb2luKCdsaW5rWCcpKQogICAgICAgICBzZWxmLl9jaGVja19zeW1saW5rX2xvb3AoQkFTRSwgJ2xpbmtYJykKQEAgLTIwMDUsNiArMjA1NSw4IEBACiAgICAgICAgIHNlbGYuX2NoZWNrX3N5bWxpbmtfbG9vcChCQVNFLCAnbGlua1knKQogICAgICAgICBvcy5zeW1saW5rKCdsaW5rWi8uLi9saW5rWicsIGpvaW4oJ2xpbmtaJykpCiAgICAgICAgIHNlbGYuX2NoZWNrX3N5bWxpbmtfbG9vcChCQVNFLCAnbGlua1onKQorICAgICAgICAjIE5vbi1zdHJpY3QKKyAgICAgICAgc2VsZi5fY2hlY2tfc3ltbGlua19sb29wKEJBU0UsICdsaW5rWicsICdmb28nLCBzdHJpY3Q9RmFsc2UpCiAgICAgICAgICMgTG9vcHMgd2l0aCBhYnNvbHV0ZSBzeW1saW5rcwogICAgICAgICBvcy5zeW1saW5rKGpvaW4oJ2xpbmtVL2luc2lkZScpLCBqb2luKCdsaW5rVScpKQogICAgICAgICBzZWxmLl9jaGVja19zeW1saW5rX2xvb3AoQkFTRSwgJ2xpbmtVJykKQEAgLTIwMTIsNiArMjA2NCw4IEBACiAgICAgICAgIHNlbGYuX2NoZWNrX3N5bWxpbmtfbG9vcChCQVNFLCAnbGlua1YnKQogICAgICAgICBvcy5zeW1saW5rKGpvaW4oJ2xpbmtXLy4uL2xpbmtXJyksIGpvaW4oJ2xpbmtXJykpCiAgICAgICAgIHNlbGYuX2NoZWNrX3N5bWxpbmtfbG9vcChCQVNFLCAnbGlua1cnKQorICAgICAgICAjIE5vbi1zdHJpY3QKKyAgICAgICAgc2VsZi5fY2hlY2tfc3ltbGlua19sb29wKEJBU0UsICdsaW5rVycsICdmb28nLCBzdHJpY3Q9RmFsc2UpCiAKICAgICBkZWYgdGVzdF9nbG9iKHNlbGYpOgogICAgICAgICBQID0gc2VsZi5jbHMKQEAgLTIwMjksNiArMjA4Myw4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2l2ZW4sIGV4cGVjdCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQocC5yZ2xvYigiRklMRWQqIikpLCBzZXQoKSkKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIocHdkLCAnZ2V0cHdhbGwnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAncHdkIG1vZHVsZSBkb2VzIG5vdCBleHBvc2UgZ2V0cHdhbGwoKScpCiAgICAgZGVmIHRlc3RfZXhwYW5kdXNlcihzZWxmKToKICAgICAgICAgUCA9IHNlbGYuY2xzCiAgICAgICAgIHN1cHBvcnQuaW1wb3J0X21vZHVsZSgncHdkJykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGRiLnB5IGIvTGliL3Rlc3QvdGVzdF9wZGIucHkKaW5kZXggNjZhN2I1NS4uMGVhMmFmNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wZGIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wZGIucHkKQEAgLTEsNiArMSw3IEBACiAjIEEgdGVzdCBzdWl0ZSBmb3IgcGRiOyBub3QgdmVyeSBjb21wcmVoZW5zaXZlIGF0IHRoZSBtb21lbnQuCiAKIGltcG9ydCBkb2N0ZXN0CitpbXBvcnQgb3MKIGltcG9ydCBwZGIKIGltcG9ydCBzeXMKIGltcG9ydCB0eXBlcwpAQCAtMzQsNyArMzUsNyBAQAogICAgICIiIlRoaXMgdGVzdHMgdGhlIGN1c3RvbSBkaXNwbGF5aG9vayBmb3IgcGRiLgogCiAgICAgPj4+IGRlZiB0ZXN0X2Z1bmN0aW9uKGZvbywgYmFyKToKLSAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSkuc2V0X3RyYWNlKCkKKyAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSwgcmVhZHJjPUZhbHNlKS5zZXRfdHJhY2UoKQogICAgIC4uLiAgICAgcGFzcwogCiAgICAgPj4+IHdpdGggUGRiVGVzdElucHV0KFsKQEAgLTc0LDcgKzc1LDcgQEAKICAgICAuLi4gICAgIHJldHVybiBmb28udXBwZXIoKQogCiAgICAgPj4+IGRlZiB0ZXN0X2Z1bmN0aW9uKCk6Ci0gICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUpLnNldF90cmFjZSgpCisgICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUsIHJlYWRyYz1GYWxzZSkuc2V0X3RyYWNlKCkKICAgICAuLi4gICAgIHJldCA9IHRlc3RfZnVuY3Rpb25fMignYmF6JykKICAgICAuLi4gICAgIHByaW50KHJldCkKIApAQCAtMTczLDcgKzE3NCw3IEBACiAgICAgIiIiVGVzdCBiYXNpYyBjb21tYW5kcyByZWxhdGVkIHRvIGJyZWFrcG9pbnRzLgogCiAgICAgPj4+IGRlZiB0ZXN0X2Z1bmN0aW9uKCk6Ci0gICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUpLnNldF90cmFjZSgpCisgICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUsIHJlYWRyYz1GYWxzZSkuc2V0X3RyYWNlKCkKICAgICAuLi4gICAgIHByaW50KDEpCiAgICAgLi4uICAgICBwcmludCgyKQogICAgIC4uLiAgICAgcHJpbnQoMykKQEAgLTMwNSw3ICszMDYsNyBAQAogICAgIC4uLiAgICAgcmV0dXJuIGZvbwogCiAgICAgPj4+IGRlZiB0ZXN0X2Z1bmN0aW9uKCk6Ci0gICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUpLnNldF90cmFjZSgpCisgICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUsIHJlYWRyYz1GYWxzZSkuc2V0X3RyYWNlKCkKICAgICAuLi4gICAgIHJldCA9IHRlc3RfZnVuY3Rpb25fMignYmF6JykKIAogICAgID4+PiB3aXRoIFBkYlRlc3RJbnB1dChbICAjIGRvY3Rlc3Q6ICtFTExJUFNJUywgK05PUk1BTElaRV9XSElURVNQQUNFCkBAIC0zMjgsNyArMzI5LDcgQEAKICAgICAtPiByZXQgPSB0ZXN0X2Z1bmN0aW9uXzIoJ2JheicpCiAgICAgKFBkYikgbGlzdAogICAgICAgMSAgICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKCk6Ci0gICAgICAyICAgICAgICAgICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSkuc2V0X3RyYWNlKCkKKyAgICAgIDIgICAgICAgICAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlLCByZWFkcmM9RmFsc2UpLnNldF90cmFjZSgpCiAgICAgICAzICAtPiAgICAgICAgIHJldCA9IHRlc3RfZnVuY3Rpb25fMignYmF6JykKICAgICBbRU9GXQogICAgIChQZGIpIHN0ZXAKQEAgLTM5MSw3ICszOTIsNyBAQAogICAgIC4uLiAgICAgICAgIHByaW50KCdFeGNlcHRpb24hJykKIAogICAgID4+PiBkZWYgdGVzdF9mdW5jdGlvbigpOgotICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlKS5zZXRfdHJhY2UoKQorICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlLCByZWFkcmM9RmFsc2UpLnNldF90cmFjZSgpCiAgICAgLi4uICAgICB0ZXN0X2Z1bmN0aW9uXzIoKQogICAgIC4uLiAgICAgcHJpbnQoJ05vdCByZWFjaGVkLicpCiAKQEAgLTQyNCw3ICs0MjUsNyBAQAogICAgIC0+IDEvMAogICAgIChQZGIpIGxpc3QKICAgICAgIDEgICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbigpOgotICAgICAgMiAgICAgICAgICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUpLnNldF90cmFjZSgpCisgICAgICAyICAgICAgICAgICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSwgcmVhZHJjPUZhbHNlKS5zZXRfdHJhY2UoKQogICAgICAgMyAgLT4gICAgICAgICB0ZXN0X2Z1bmN0aW9uXzIoKQogICAgICAgNCAgICAgICAgICAgICBwcmludCgnTm90IHJlYWNoZWQuJykKICAgICBbRU9GXQpAQCAtNDQ4LDcgKzQ0OSw3IEBACiAKICAgICA+Pj4gZGVmIHNraXBfbW9kdWxlKCk6CiAgICAgLi4uICAgICBpbXBvcnQgc3RyaW5nCi0gICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKHNraXA9WydzdHJpKiddLCBub3NpZ2ludD1UcnVlKS5zZXRfdHJhY2UoKQorICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihza2lwPVsnc3RyaSonXSwgbm9zaWdpbnQ9VHJ1ZSwgcmVhZHJjPUZhbHNlKS5zZXRfdHJhY2UoKQogICAgIC4uLiAgICAgc3RyaW5nLmNhcHdvcmRzKCdGT08nKQogCiAgICAgPj4+IHdpdGggUGRiVGVzdElucHV0KFsKQEAgLTQ3Nyw3ICs0NzgsNyBAQAogICAgID4+PiBkZWYgc2tpcF9tb2R1bGUoKToKICAgICAuLi4gICAgIGRlZiBjYWxsYmFjaygpOgogICAgIC4uLiAgICAgICAgIHJldHVybiBOb25lCi0gICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKHNraXA9Wydtb2R1bGVfdG9fc2tpcConXSwgbm9zaWdpbnQ9VHJ1ZSkuc2V0X3RyYWNlKCkKKyAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIoc2tpcD1bJ21vZHVsZV90b19za2lwKiddLCBub3NpZ2ludD1UcnVlLCByZWFkcmM9RmFsc2UpLnNldF90cmFjZSgpCiAgICAgLi4uICAgICBtb2QuZm9vX3BvbnkoY2FsbGJhY2spCiAKICAgICA+Pj4gd2l0aCBQZGJUZXN0SW5wdXQoWwpAQCAtNTE4LDcgKzUxOSw3IEBACiAgICAgIiIiVGVzdCB0aGF0ICJjb250aW51ZSIgYW5kICJuZXh0IiB3b3JrIHByb3Blcmx5IGluIGJvdHRvbSBmcmFtZSAoaXNzdWUgIzUyOTQpLgogCiAgICAgPj4+IGRlZiB0ZXN0X2Z1bmN0aW9uKCk6Ci0gICAgLi4uICAgICBpbXBvcnQgcGRiLCBzeXM7IGluc3QgPSBwZGIuUGRiKG5vc2lnaW50PVRydWUpCisgICAgLi4uICAgICBpbXBvcnQgcGRiLCBzeXM7IGluc3QgPSBwZGIuUGRiKG5vc2lnaW50PVRydWUsIHJlYWRyYz1GYWxzZSkKICAgICAuLi4gICAgIGluc3Quc2V0X3RyYWNlKCkKICAgICAuLi4gICAgIGluc3QuYm90ZnJhbWUgPSBzeXMuX2dldGZyYW1lKCkgICMgaGFja2VyeSB0byBnZXQgdGhlIHJpZ2h0IGJvdGZyYW1lCiAgICAgLi4uICAgICBwcmludCgxKQpAQCAtNTU4LDggKzU1OSw3IEBACiAKIGRlZiBwZGJfaW52b2tlKG1ldGhvZCwgYXJnKToKICAgICAiIiJSdW4gcGRiLm1ldGhvZChhcmcpLiIiIgotICAgIGltcG9ydCBwZGIKLSAgICBnZXRhdHRyKHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSksIG1ldGhvZCkoYXJnKQorICAgIGdldGF0dHIocGRiLlBkYihub3NpZ2ludD1UcnVlLCByZWFkcmM9RmFsc2UpLCBtZXRob2QpKGFyZykKIAogCiBkZWYgdGVzdF9wZGJfcnVuX3dpdGhfaW5jb3JyZWN0X2FyZ3VtZW50KCk6CkBAIC02MDgsNyArNjA4LDcgQEAKICAgICAuLi4gICAgIHggPSAyCiAKICAgICA+Pj4gZGVmIHRlc3RfZnVuY3Rpb24oKToKLSAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSkuc2V0X3RyYWNlKCkKKyAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSwgcmVhZHJjPUZhbHNlKS5zZXRfdHJhY2UoKQogICAgIC4uLiAgICAgdGVzdF9mdW5jdGlvbl8yKCkKICAgICAuLi4gICAgIHRlc3RfZnVuY3Rpb25fMigpCiAgICAgLi4uICAgICB0ZXN0X2Z1bmN0aW9uXzIoKQpAQCAtNjc0LDcgKzY3NCw3IEBACiAgICAgLi4uICAgICB5aWVsZCAyCiAKICAgICA+Pj4gZGVmIHRlc3RfZnVuY3Rpb24oKToKLSAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSkuc2V0X3RyYWNlKCkKKyAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSwgcmVhZHJjPUZhbHNlKS5zZXRfdHJhY2UoKQogICAgIC4uLiAgICAgaXQgPSB0ZXN0X2dlbigpCiAgICAgLi4uICAgICB0cnk6CiAgICAgLi4uICAgICAgICAgaWYgbmV4dChpdCkgIT0gMDoKQEAgLTczNCw3ICs3MzQsNyBAQAogICAgIC4uLiAgICAgeWllbGQgMgogCiAgICAgPj4+IGRlZiB0ZXN0X2Z1bmN0aW9uKCk6Ci0gICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUpLnNldF90cmFjZSgpCisgICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUsIHJlYWRyYz1GYWxzZSkuc2V0X3RyYWNlKCkKICAgICAuLi4gICAgIGl0ID0gdGVzdF9nZW4oKQogICAgIC4uLiAgICAgdHJ5OgogICAgIC4uLiAgICAgICAgIGlmIG5leHQoaXQpICE9IDA6CkBAIC03ODksNyArNzg5LDcgQEAKICAgICAuLi4gICAgIHlpZWxkIDIKIAogICAgID4+PiBkZWYgdGVzdF9mdW5jdGlvbigpOgotICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlKS5zZXRfdHJhY2UoKQorICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlLCByZWFkcmM9RmFsc2UpLnNldF90cmFjZSgpCiAgICAgLi4uICAgICBmb3IgaSBpbiB0ZXN0X2dlbigpOgogICAgIC4uLiAgICAgICAgIHByaW50KGkpCiAgICAgLi4uICAgICBwcmludCgiZmluaXNoZWQiKQpAQCAtODMxLDcgKzgzMSw3IEBACiAgICAgLi4uICAgICByZXR1cm4gMQogCiAgICAgPj4+IGRlZiB0ZXN0X2Z1bmN0aW9uKCk6Ci0gICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUpLnNldF90cmFjZSgpCisgICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUsIHJlYWRyYz1GYWxzZSkuc2V0X3RyYWNlKCkKICAgICAuLi4gICAgIGZvciBpIGluIHRlc3RfZ2VuKCk6CiAgICAgLi4uICAgICAgICAgcHJpbnQoJ3ZhbHVlJywgaSkKICAgICAuLi4gICAgIHggPSAxMjMKQEAgLTg3Niw3ICs4NzYsNyBAQAogICAgIC4uLiAgICAgcmV0dXJuIHgKIAogICAgID4+PiBkZWYgdGVzdF9mdW5jdGlvbigpOgotICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlKS5zZXRfdHJhY2UoKQorICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlLCByZWFkcmM9RmFsc2UpLnNldF90cmFjZSgpCiAgICAgLi4uICAgICBmb3IgaSBpbiB0ZXN0X2dlbigpOgogICAgIC4uLiAgICAgICAgIHByaW50KCd2YWx1ZScsIGkpCiAgICAgLi4uICAgICB4ID0gMTIzCkBAIC0xMDQ5LDcgKzEwNDksNyBAQAogICAgICAgICAgICAgICAgIGltcG9ydCBwZGIKIAogICAgICAgICAgICAgICAgIGRlZiBzdGFydF9wZGIoKToKLSAgICAgICAgICAgICAgICAgICAgcGRiLlBkYigpLnNldF90cmFjZSgpCisgICAgICAgICAgICAgICAgICAgIHBkYi5QZGIocmVhZHJjPUZhbHNlKS5zZXRfdHJhY2UoKQogICAgICAgICAgICAgICAgICAgICB4ID0gMQogICAgICAgICAgICAgICAgICAgICB5ID0gMQogCkBAIC0xMDc4LDYgKzEwNzgsMzggQEAKICAgICAgICAgICAgIC5mb3JtYXQoZXhwZWN0ZWQsIHN0ZG91dCkpCiAKIAorICAgIGRlZiB0ZXN0X3JlYWRyY19rd2FyZyhzZWxmKToKKyAgICAgICAgc2NyaXB0ID0gdGV4dHdyYXAuZGVkZW50KCIiIgorICAgICAgICAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihyZWFkcmM9RmFsc2UpLnNldF90cmFjZSgpCisKKyAgICAgICAgICAgIHByaW50KCdoZWxsbycpCisgICAgICAgICIiIikKKworICAgICAgICBzYXZlX2hvbWUgPSBvcy5lbnZpcm9uLnBvcCgnSE9NRScsIE5vbmUpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2N3ZCgpOgorICAgICAgICAgICAgICAgIHdpdGggb3BlbignLnBkYnJjJywgJ3cnKSBhcyBmOgorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCJpbnZhbGlkXG4iKQorCisgICAgICAgICAgICAgICAgd2l0aCBvcGVuKCdtYWluLnB5JywgJ3cnKSBhcyBmOgorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKHNjcmlwdCkKKworICAgICAgICAgICAgICAgIGNtZCA9IFtzeXMuZXhlY3V0YWJsZSwgJ21haW4ucHknXQorICAgICAgICAgICAgICAgIHByb2MgPSBzdWJwcm9jZXNzLlBvcGVuKAorICAgICAgICAgICAgICAgICAgICBjbWQsCisgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgIHN0ZGluPXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgd2l0aCBwcm9jOgorICAgICAgICAgICAgICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHByb2MuY29tbXVuaWNhdGUoYidxXG4nKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCJOYW1lRXJyb3I6IG5hbWUgJ2ludmFsaWQnIGlzIG5vdCBkZWZpbmVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQuZGVjb2RlKCkpCisKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGlmIHNhdmVfaG9tZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBvcy5lbnZpcm9uWydIT01FJ10gPSBzYXZlX2hvbWUKKwogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4pCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGVlcGhvbGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9wZWVwaG9sZXIucHkKaW5kZXggNDFlNTA5MS4uYjAzMzY0MCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wZWVwaG9sZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wZWVwaG9sZXIucHkKQEAgLTEsOSArMSw4IEBACiBpbXBvcnQgZGlzCiBpbXBvcnQgcmUKIGltcG9ydCBzeXMKLWZyb20gaW8gaW1wb3J0IFN0cmluZ0lPCitpbXBvcnQgdGV4dHdyYXAKIGltcG9ydCB1bml0dGVzdAotZnJvbSBtYXRoIGltcG9ydCBjb3B5c2lnbgogCiBmcm9tIHRlc3QuYnl0ZWNvZGVfaGVscGVyIGltcG9ydCBCeXRlY29kZVRlc3RDYXNlCiAKQEAgLTMwLDIyICsyOSwyNSBAQAogCiAgICAgZGVmIHRlc3RfZ2xvYmFsX2FzX2NvbnN0YW50KHNlbGYpOgogICAgICAgICAjIExPQURfR0xPQkFMIE5vbmUvVHJ1ZS9GYWxzZSAgLS0+ICBMT0FEX0NPTlNUIE5vbmUvVHJ1ZS9GYWxzZQotICAgICAgICBkZWYgZih4KToKLSAgICAgICAgICAgIE5vbmUKLSAgICAgICAgICAgIE5vbmUKKyAgICAgICAgZGVmIGYoKToKKyAgICAgICAgICAgIHggPSBOb25lCisgICAgICAgICAgICB4ID0gTm9uZQogICAgICAgICAgICAgcmV0dXJuIHgKLSAgICAgICAgZGVmIGcoeCk6Ci0gICAgICAgICAgICBUcnVlCisgICAgICAgIGRlZiBnKCk6CisgICAgICAgICAgICB4ID0gVHJ1ZQogICAgICAgICAgICAgcmV0dXJuIHgKLSAgICAgICAgZGVmIGgoeCk6Ci0gICAgICAgICAgICBGYWxzZQorICAgICAgICBkZWYgaCgpOgorICAgICAgICAgICAgeCA9IEZhbHNlCiAgICAgICAgICAgICByZXR1cm4geAorCiAgICAgICAgIGZvciBmdW5jLCBlbGVtIGluICgoZiwgTm9uZSksIChnLCBUcnVlKSwgKGgsIEZhbHNlKSk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluQnl0ZWNvZGUoZnVuYywgJ0xPQURfR0xPQkFMJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW5CeXRlY29kZShmdW5jLCAnTE9BRF9DT05TVCcsIGVsZW0pCisKICAgICAgICAgZGVmIGYoKToKICAgICAgICAgICAgICdBZGRpbmcgYSBkb2NzdHJpbmcgbWFkZSB0aGlzIHRlc3QgZmFpbCBpbiBQeTIuNS4wJwogICAgICAgICAgICAgcmV0dXJuIE5vbmUKKwogICAgICAgICBzZWxmLmFzc2VydE5vdEluQnl0ZWNvZGUoZiwgJ0xPQURfR0xPQkFMJykKICAgICAgICAgc2VsZi5hc3NlcnRJbkJ5dGVjb2RlKGYsICdMT0FEX0NPTlNUJywgTm9uZSkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wZXAyNDcucHkgYi9MaWIvdGVzdC90ZXN0X3BlcDI0Ny5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzE3Y2VlZC4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC90ZXN0X3BlcDI0Ny5weQorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLSIiIgotVGVzdCBzdWl0ZSB0byBjaGVjayBjb21wbGlhbmNlIHdpdGggUEVQIDI0NywgdGhlIHN0YW5kYXJkIEFQSQotZm9yIGhhc2hpbmcgYWxnb3JpdGhtcwotIiIiCi0KLWltcG9ydCBobWFjCi1pbXBvcnQgdW5pdHRlc3QKLWZyb20gaGFzaGxpYiBpbXBvcnQgbWQ1LCBzaGExLCBzaGEyMjQsIHNoYTI1Niwgc2hhMzg0LCBzaGE1MTIKLQotY2xhc3MgUGVwMjQ3VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0KLSAgICBkZWYgY2hlY2tfbW9kdWxlKHNlbGYsIG1vZHVsZSwga2V5PU5vbmUpOgotICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihtb2R1bGUsICdkaWdlc3Rfc2l6ZScpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobW9kdWxlLmRpZ2VzdF9zaXplIGlzIE5vbmUgb3IgbW9kdWxlLmRpZ2VzdF9zaXplID4gMCkKLSAgICAgICAgc2VsZi5jaGVja19vYmplY3QobW9kdWxlLm5ldywgbW9kdWxlLmRpZ2VzdF9zaXplLCBrZXkpCi0KLSAgICBkZWYgY2hlY2tfb2JqZWN0KHNlbGYsIGNscywgZGlnZXN0X3NpemUsIGtleSwgZGlnZXN0bW9kPU5vbmUpOgotICAgICAgICBpZiBrZXkgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBpZiBkaWdlc3Rtb2QgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBkaWdlc3Rtb2QgPSBtZDUKLSAgICAgICAgICAgIG9iajEgPSBjbHMoa2V5LCBkaWdlc3Rtb2Q9ZGlnZXN0bW9kKQotICAgICAgICAgICAgb2JqMiA9IGNscyhrZXksIGInc3RyaW5nJywgZGlnZXN0bW9kPWRpZ2VzdG1vZCkKLSAgICAgICAgICAgIGgxID0gY2xzKGtleSwgYidzdHJpbmcnLCBkaWdlc3Rtb2Q9ZGlnZXN0bW9kKS5kaWdlc3QoKQotICAgICAgICAgICAgb2JqMyA9IGNscyhrZXksIGRpZ2VzdG1vZD1kaWdlc3Rtb2QpCi0gICAgICAgICAgICBvYmozLnVwZGF0ZShiJ3N0cmluZycpCi0gICAgICAgICAgICBoMiA9IG9iajMuZGlnZXN0KCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG9iajEgPSBjbHMoKQotICAgICAgICAgICAgb2JqMiA9IGNscyhiJ3N0cmluZycpCi0gICAgICAgICAgICBoMSA9IGNscyhiJ3N0cmluZycpLmRpZ2VzdCgpCi0gICAgICAgICAgICBvYmozID0gY2xzKCkKLSAgICAgICAgICAgIG9iajMudXBkYXRlKGInc3RyaW5nJykKLSAgICAgICAgICAgIGgyID0gb2JqMy5kaWdlc3QoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgxLCBoMikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIob2JqMSwgJ2RpZ2VzdF9zaXplJykpCi0KLSAgICAgICAgaWYgZGlnZXN0X3NpemUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9iajEuZGlnZXN0X3NpemUsIGRpZ2VzdF9zaXplKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2JqMS5kaWdlc3Rfc2l6ZSwgbGVuKGgxKSkKLSAgICAgICAgb2JqMS51cGRhdGUoYidzdHJpbmcnKQotICAgICAgICBvYmpfY29weSA9IG9iajEuY29weSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2JqMS5kaWdlc3QoKSwgb2JqX2NvcHkuZGlnZXN0KCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2JqMS5oZXhkaWdlc3QoKSwgb2JqX2NvcHkuaGV4ZGlnZXN0KCkpCi0KLSAgICAgICAgZGlnZXN0LCBoZXhkaWdlc3QgPSBvYmoxLmRpZ2VzdCgpLCBvYmoxLmhleGRpZ2VzdCgpCi0gICAgICAgIGhkMiA9ICIiCi0gICAgICAgIGZvciBieXRlIGluIGRpZ2VzdDoKLSAgICAgICAgICAgIGhkMiArPSAnJTAyeCcgJSBieXRlCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGQyLCBoZXhkaWdlc3QpCi0KLSAgICBkZWYgdGVzdF9tZDUoc2VsZik6Ci0gICAgICAgIHNlbGYuY2hlY2tfb2JqZWN0KG1kNSwgTm9uZSwgTm9uZSkKLQotICAgIGRlZiB0ZXN0X3NoYShzZWxmKToKLSAgICAgICAgc2VsZi5jaGVja19vYmplY3Qoc2hhMSwgTm9uZSwgTm9uZSkKLSAgICAgICAgc2VsZi5jaGVja19vYmplY3Qoc2hhMjI0LCBOb25lLCBOb25lKQotICAgICAgICBzZWxmLmNoZWNrX29iamVjdChzaGEyNTYsIE5vbmUsIE5vbmUpCi0gICAgICAgIHNlbGYuY2hlY2tfb2JqZWN0KHNoYTM4NCwgTm9uZSwgTm9uZSkKLSAgICAgICAgc2VsZi5jaGVja19vYmplY3Qoc2hhNTEyLCBOb25lLCBOb25lKQotCi0gICAgZGVmIHRlc3RfaG1hYyhzZWxmKToKLSAgICAgICAgc2VsZi5jaGVja19tb2R1bGUoaG1hYywga2V5PWInYWJjJykKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGlja2xlLnB5IGIvTGliL3Rlc3QvdGVzdF9waWNrbGUucHkKaW5kZXggZDQ2N2Q1Mi4uZTZjNWQwOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9waWNrbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9waWNrbGUucHkKQEAgLTM0LDggKzM0LDYgQEAKIAogICAgIHVucGlja2xlciA9IHBpY2tsZS5fVW5waWNrbGVyCiAgICAgYmFkX3N0YWNrX2Vycm9ycyA9IChJbmRleEVycm9yLCkKLSAgICBiYWRfbWFya19lcnJvcnMgPSAoSW5kZXhFcnJvciwgcGlja2xlLlVucGlja2xpbmdFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgVHlwZUVycm9yLCBBdHRyaWJ1dGVFcnJvciwgRU9GRXJyb3IpCiAgICAgdHJ1bmNhdGVkX2Vycm9ycyA9IChwaWNrbGUuVW5waWNrbGluZ0Vycm9yLCBFT0ZFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZUVycm9yLCBWYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0LmVycm9yLCBJbmRleEVycm9yLCBJbXBvcnRFcnJvcikKQEAgLTcwLDggKzY4LDYgQEAKICAgICBwaWNrbGVyID0gcGlja2xlLl9QaWNrbGVyCiAgICAgdW5waWNrbGVyID0gcGlja2xlLl9VbnBpY2tsZXIKICAgICBiYWRfc3RhY2tfZXJyb3JzID0gKHBpY2tsZS5VbnBpY2tsaW5nRXJyb3IsIEluZGV4RXJyb3IpCi0gICAgYmFkX21hcmtfZXJyb3JzID0gKHBpY2tsZS5VbnBpY2tsaW5nRXJyb3IsIEluZGV4RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgIFR5cGVFcnJvciwgQXR0cmlidXRlRXJyb3IsIEVPRkVycm9yKQogICAgIHRydW5jYXRlZF9lcnJvcnMgPSAocGlja2xlLlVucGlja2xpbmdFcnJvciwgRU9GRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVFcnJvciwgVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdC5lcnJvciwgSW5kZXhFcnJvciwgSW1wb3J0RXJyb3IpCkBAIC0xNDMsOSArMTM5LDcgQEAKICAgICBjbGFzcyBDVW5waWNrbGVyVGVzdHMoUHlVbnBpY2tsZXJUZXN0cyk6CiAgICAgICAgIHVucGlja2xlciA9IF9waWNrbGUuVW5waWNrbGVyCiAgICAgICAgIGJhZF9zdGFja19lcnJvcnMgPSAocGlja2xlLlVucGlja2xpbmdFcnJvciwpCi0gICAgICAgIGJhZF9tYXJrX2Vycm9ycyA9IChFT0ZFcnJvciwpCi0gICAgICAgIHRydW5jYXRlZF9lcnJvcnMgPSAocGlja2xlLlVucGlja2xpbmdFcnJvciwgRU9GRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlRXJyb3IsIFZhbHVlRXJyb3IpCisgICAgICAgIHRydW5jYXRlZF9lcnJvcnMgPSAocGlja2xlLlVucGlja2xpbmdFcnJvciwpCiAKICAgICBjbGFzcyBDUGlja2xlclRlc3RzKFB5UGlja2xlclRlc3RzKToKICAgICAgICAgcGlja2xlciA9IF9waWNrbGUuUGlja2xlcgpAQCAtMzQxLDYgKzMzNSw5IEBACiAgICAgICAgICAgICAgICAgaWYgKG1vZHVsZTIsIG5hbWUyKSA9PSAoJ2V4Y2VwdGlvbnMnLCAnT1NFcnJvcicpOgogICAgICAgICAgICAgICAgICAgICBhdHRyID0gZ2V0YXR0cmlidXRlKG1vZHVsZTMsIG5hbWUzKQogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhhdHRyLCBPU0Vycm9yKSkKKyAgICAgICAgICAgICAgICBlbGlmIChtb2R1bGUyLCBuYW1lMikgPT0gKCdleGNlcHRpb25zJywgJ0ltcG9ydEVycm9yJyk6CisgICAgICAgICAgICAgICAgICAgIGF0dHIgPSBnZXRhdHRyaWJ1dGUobW9kdWxlMywgbmFtZTMpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKGF0dHIsIEltcG9ydEVycm9yKSkKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBtb2R1bGUsIG5hbWUgPSBtYXBwaW5nKG1vZHVsZTIsIG5hbWUyKQogICAgICAgICAgICAgICAgICAgICBpZiBtb2R1bGUzWzoxXSAhPSAnXyc6CkBAIC00MDcsNiArNDA0LDExIEBACiAgICAgICAgICAgICAgICAgaWYgZXhjIGlzIG5vdCBPU0Vycm9yIGFuZCBpc3N1YmNsYXNzKGV4YywgT1NFcnJvcik6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmV2ZXJzZV9tYXBwaW5nKCdidWlsdGlucycsIG5hbWUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnZXhjZXB0aW9ucycsICdPU0Vycm9yJykpCisgICAgICAgICAgICAgICAgZWxpZiBleGMgaXMgbm90IEltcG9ydEVycm9yIGFuZCBpc3N1YmNsYXNzKGV4YywgSW1wb3J0RXJyb3IpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJldmVyc2VfbWFwcGluZygnYnVpbHRpbnMnLCBuYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2V4Y2VwdGlvbnMnLCAnSW1wb3J0RXJyb3InKSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXBwaW5nKCdleGNlcHRpb25zJywgbmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdleGNlcHRpb25zJywgbmFtZSkpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXZlcnNlX21hcHBpbmcoJ2J1aWx0aW5zJywgbmFtZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdleGNlcHRpb25zJywgbmFtZSkpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BpY2tsZXRvb2xzLnB5IGIvTGliL3Rlc3QvdGVzdF9waWNrbGV0b29scy5weQppbmRleCBiYmU2ODc1Li44NmJlYmZhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BpY2tsZXRvb2xzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGlja2xldG9vbHMucHkKQEAgLTEsOSArMSw5IEBACi1pbXBvcnQgc3RydWN0CiBpbXBvcnQgcGlja2xlCiBpbXBvcnQgcGlja2xldG9vbHMKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0LnBpY2tsZXRlc3RlciBpbXBvcnQgQWJzdHJhY3RQaWNrbGVUZXN0cwogZnJvbSB0ZXN0LnBpY2tsZXRlc3RlciBpbXBvcnQgQWJzdHJhY3RQaWNrbGVNb2R1bGVUZXN0cworaW1wb3J0IHVuaXR0ZXN0CiAKIGNsYXNzIE9wdGltaXplZFBpY2tsZVRlc3RzKEFic3RyYWN0UGlja2xlVGVzdHMsIEFic3RyYWN0UGlja2xlTW9kdWxlVGVzdHMpOgogCkBAIC01OSw4ICs1OSw0MCBAQAogICAgICAgICBzZWxmLmFzc2VydE5vdEluKHBpY2tsZS5CSU5QVVQsIHBpY2tsZWQyKQogCiAKK2NsYXNzIE1pc2NUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICBibGFja2xpc3QgPSB7J2J5dGVzX3R5cGVzJywKKyAgICAgICAgICAgICAgICAgICAgICdVUF9UT19ORVdMSU5FJywgJ1RBS0VOX0ZST01fQVJHVU1FTlQxJywKKyAgICAgICAgICAgICAgICAgICAgICdUQUtFTl9GUk9NX0FSR1VNRU5UNCcsICdUQUtFTl9GUk9NX0FSR1VNRU5UNFUnLAorICAgICAgICAgICAgICAgICAgICAgJ1RBS0VOX0ZST01fQVJHVU1FTlQ4VScsICdBcmd1bWVudERlc2NyaXB0b3InLAorICAgICAgICAgICAgICAgICAgICAgJ3JlYWRfdWludDEnLCAncmVhZF91aW50MicsICdyZWFkX2ludDQnLCAncmVhZF91aW50NCcsCisgICAgICAgICAgICAgICAgICAgICAncmVhZF91aW50OCcsICdyZWFkX3N0cmluZ25sJywgJ3JlYWRfc3RyaW5nbmxfbm9lc2NhcGUnLAorICAgICAgICAgICAgICAgICAgICAgJ3JlYWRfc3RyaW5nbmxfbm9lc2NhcGVfcGFpcicsICdyZWFkX3N0cmluZzEnLAorICAgICAgICAgICAgICAgICAgICAgJ3JlYWRfc3RyaW5nNCcsICdyZWFkX2J5dGVzMScsICdyZWFkX2J5dGVzNCcsCisgICAgICAgICAgICAgICAgICAgICAncmVhZF9ieXRlczgnLCAncmVhZF91bmljb2Rlc3RyaW5nbmwnLAorICAgICAgICAgICAgICAgICAgICAgJ3JlYWRfdW5pY29kZXN0cmluZzEnLCAncmVhZF91bmljb2Rlc3RyaW5nNCcsCisgICAgICAgICAgICAgICAgICAgICAncmVhZF91bmljb2Rlc3RyaW5nOCcsICdyZWFkX2RlY2ltYWxubF9zaG9ydCcsCisgICAgICAgICAgICAgICAgICAgICAncmVhZF9kZWNpbWFsbmxfbG9uZycsICdyZWFkX2Zsb2F0bmwnLCAncmVhZF9mbG9hdDgnLAorICAgICAgICAgICAgICAgICAgICAgJ3JlYWRfbG9uZzEnLCAncmVhZF9sb25nNCcsCisgICAgICAgICAgICAgICAgICAgICAndWludDEnLCAndWludDInLCAnaW50NCcsICd1aW50NCcsICd1aW50OCcsICdzdHJpbmdubCcsCisgICAgICAgICAgICAgICAgICAgICAnc3RyaW5nbmxfbm9lc2NhcGUnLCAnc3RyaW5nbmxfbm9lc2NhcGVfcGFpcicsICdzdHJpbmcxJywKKyAgICAgICAgICAgICAgICAgICAgICdzdHJpbmc0JywgJ2J5dGVzMScsICdieXRlczQnLCAnYnl0ZXM4JywKKyAgICAgICAgICAgICAgICAgICAgICd1bmljb2Rlc3RyaW5nbmwnLCAndW5pY29kZXN0cmluZzEnLCAndW5pY29kZXN0cmluZzQnLAorICAgICAgICAgICAgICAgICAgICAgJ3VuaWNvZGVzdHJpbmc4JywgJ2RlY2ltYWxubF9zaG9ydCcsICdkZWNpbWFsbmxfbG9uZycsCisgICAgICAgICAgICAgICAgICAgICAnZmxvYXRubCcsICdmbG9hdDgnLCAnbG9uZzEnLCAnbG9uZzQnLAorICAgICAgICAgICAgICAgICAgICAgJ1N0YWNrT2JqZWN0JywKKyAgICAgICAgICAgICAgICAgICAgICdweWludCcsICdweWxvbmcnLCAncHlpbnRlZ2VyX29yX2Jvb2wnLCAncHlib29sJywgJ3B5ZmxvYXQnLAorICAgICAgICAgICAgICAgICAgICAgJ3B5Ynl0ZXNfb3Jfc3RyJywgJ3B5c3RyaW5nJywgJ3B5Ynl0ZXMnLCAncHl1bmljb2RlJywKKyAgICAgICAgICAgICAgICAgICAgICdweW5vbmUnLCAncHl0dXBsZScsICdweWxpc3QnLCAncHlkaWN0JywgJ3B5c2V0JywKKyAgICAgICAgICAgICAgICAgICAgICdweWZyb3plbnNldCcsICdhbnlvYmplY3QnLCAnbWFya29iamVjdCcsICdzdGFja3NsaWNlJywKKyAgICAgICAgICAgICAgICAgICAgICdPcGNvZGVJbmZvJywgJ29wY29kZXMnLCAnY29kZTJvcCcsCisgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIHBpY2tsZXRvb2xzLCBibGFja2xpc3Q9YmxhY2tsaXN0KQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChPcHRpbWl6ZWRQaWNrbGVUZXN0cykKKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChNaXNjVGVzdENhc2UpCiAgICAgc3VwcG9ydC5ydW5fZG9jdGVzdChwaWNrbGV0b29scykKIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BpcGVzLnB5IGIvTGliL3Rlc3QvdGVzdF9waXBlcy5weQppbmRleCA2YTdiNDVmLi5hZDAxZDA4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BpcGVzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGlwZXMucHkKQEAgLTIsNiArMiw3IEBACiBpbXBvcnQgb3MKIGltcG9ydCBzdHJpbmcKIGltcG9ydCB1bml0dGVzdAoraW1wb3J0IHNodXRpbAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgcnVuX3VuaXR0ZXN0LCB1bmxpbmssIHJlYXBfY2hpbGRyZW4KIAogaWYgb3MubmFtZSAhPSAncG9zaXgnOgpAQCAtMTgsNiArMTksOCBAQAogICAgICAgICAgICAgdW5saW5rKGYpCiAKICAgICBkZWYgdGVzdFNpbXBsZVBpcGUxKHNlbGYpOgorICAgICAgICBpZiBzaHV0aWwud2hpY2goJ3RyJykgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ3RyIGlzIG5vdCBhdmFpbGFibGUnKQogICAgICAgICB0ID0gcGlwZXMuVGVtcGxhdGUoKQogICAgICAgICB0LmFwcGVuZChzX2NvbW1hbmQsIHBpcGVzLlNURElOX1NURE9VVCkKICAgICAgICAgZiA9IHQub3BlbihURVNURk4sICd3JykKQEAgLTI3LDYgKzMwLDggQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksICdIRUxMTyBXT1JMRCAjMScpCiAKICAgICBkZWYgdGVzdFNpbXBsZVBpcGUyKHNlbGYpOgorICAgICAgICBpZiBzaHV0aWwud2hpY2goJ3RyJykgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ3RyIGlzIG5vdCBhdmFpbGFibGUnKQogICAgICAgICB3aXRoIG9wZW4oVEVTVEZOLCAndycpIGFzIGY6CiAgICAgICAgICAgICBmLndyaXRlKCdoZWxsbyB3b3JsZCAjMicpCiAgICAgICAgIHQgPSBwaXBlcy5UZW1wbGF0ZSgpCkBAIC0zNiw2ICs0MSw4IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCAnSEVMTE8gV09STEQgIzInKQogCiAgICAgZGVmIHRlc3RTaW1wbGVQaXBlMyhzZWxmKToKKyAgICAgICAgaWYgc2h1dGlsLndoaWNoKCd0cicpIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCd0ciBpcyBub3QgYXZhaWxhYmxlJykKICAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgJ3cnKSBhcyBmOgogICAgICAgICAgICAgZi53cml0ZSgnaGVsbG8gd29ybGQgIzInKQogICAgICAgICB0ID0gcGlwZXMuVGVtcGxhdGUoKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wa2d1dGlsLnB5IGIvTGliL3Rlc3QvdGVzdF9wa2d1dGlsLnB5CmluZGV4IGE4MjA1ODcuLmZjMDRkY2YgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGtndXRpbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BrZ3V0aWwucHkKQEAgLTgxLDggKzgxLDkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMyLCBSRVNPVVJDRV9EQVRBKQogCiAgICAgICAgIG5hbWVzID0gW10KLSAgICAgICAgZm9yIGxvYWRlciwgbmFtZSwgaXNwa2cgaW4gcGtndXRpbC5pdGVyX21vZHVsZXMoW3ppcF9maWxlXSk6Ci0gICAgICAgICAgICBuYW1lcy5hcHBlbmQobmFtZSkKKyAgICAgICAgZm9yIG1vZHVsZWluZm8gaW4gcGtndXRpbC5pdGVyX21vZHVsZXMoW3ppcF9maWxlXSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9kdWxlaW5mbywgcGtndXRpbC5Nb2R1bGVJbmZvKQorICAgICAgICAgICAgbmFtZXMuYXBwZW5kKG1vZHVsZWluZm8ubmFtZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lcywgWyd0ZXN0X2dldGRhdGFfemlwZmlsZSddKQogCiAgICAgICAgIGRlbCBzeXMucGF0aFswXQpAQCAtNDEzLDYgKzQxNCw3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShwa2d1dGlsLmdldF9sb2FkZXIoInRlc3Quc3VwcG9ydCIpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ody53YXJuaW5ncyksIDApCiAKKyAgICBAdW5pdHRlc3Quc2tpcElmKF9fbmFtZV9fID09ICdfX21haW5fXycsICdub3QgY29tcGF0aWJsZSB3aXRoIF9fbWFpbl9fJykKICAgICBkZWYgdGVzdF9nZXRfbG9hZGVyX2hhbmRsZXNfbWlzc2luZ19sb2FkZXJfYXR0cmlidXRlKHNlbGYpOgogICAgICAgICBnbG9iYWwgX19sb2FkZXJfXwogICAgICAgICB0aGlzX2xvYWRlciA9IF9fbG9hZGVyX18KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGxhdGZvcm0ucHkgYi9MaWIvdGVzdC90ZXN0X3BsYXRmb3JtLnB5CmluZGV4IDE4ZGUxMTAuLjVmODc1ZWYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGxhdGZvcm0ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wbGF0Zm9ybS5weQpAQCAtMzMsNiArMzMsNyBAQAogICAgICAgICAgICAgICAgICdpbXBvcnQgcGxhdGZvcm07IHByaW50KHBsYXRmb3JtLmFyY2hpdGVjdHVyZSgpKSddCiAgICAgICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbihjbWQsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpCiAgICAgICAgICAgICByZXR1cm4gcC5jb21tdW5pY2F0ZSgpCisKICAgICAgICAgcmVhbCA9IG9zLnBhdGgucmVhbHBhdGgoc3lzLmV4ZWN1dGFibGUpCiAgICAgICAgIGxpbmsgPSBvcy5wYXRoLmFic3BhdGgoc3VwcG9ydC5URVNURk4pCiAgICAgICAgIG9zLnN5bWxpbmsocmVhbCwgbGluaykKQEAgLTI2Miw3ICsyNjMsNyBAQAogICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAgICAgICAgICAgICB3YXJuaW5ncy5maWx0ZXJ3YXJuaW5ncygKICAgICAgICAgICAgICAgICAnaWdub3JlJywKLSAgICAgICAgICAgICAgICAnZGlzdFwoXCkgYW5kIGxpbnV4X2Rpc3RyaWJ1dGlvblwoXCkgJworICAgICAgICAgICAgICAgIHInZGlzdFwoXCkgYW5kIGxpbnV4X2Rpc3RyaWJ1dGlvblwoXCkgJwogICAgICAgICAgICAgICAgICdmdW5jdGlvbnMgYXJlIGRlcHJlY2F0ZWQgLionLAogICAgICAgICAgICAgICAgIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsCiAgICAgICAgICAgICApCkBAIC0zMzgsNyArMzM5LDcgQEAKICAgICAgICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzLmZpbHRlcndhcm5pbmdzKAogICAgICAgICAgICAgICAgICAgICAgICAgJ2lnbm9yZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAnZGlzdFwoXCkgYW5kIGxpbnV4X2Rpc3RyaWJ1dGlvblwoXCkgJworICAgICAgICAgICAgICAgICAgICAgICAgcidkaXN0XChcKSBhbmQgbGludXhfZGlzdHJpYnV0aW9uXChcKSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAnZnVuY3Rpb25zIGFyZSBkZXByZWNhdGVkIC4qJywKICAgICAgICAgICAgICAgICAgICAgICAgIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsCiAgICAgICAgICAgICAgICAgICAgICkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGxpc3RsaWIucHkgYi9MaWIvdGVzdC90ZXN0X3BsaXN0bGliLnB5CmluZGV4IDY5MmNhYzQuLmM3N2E2YmYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGxpc3RsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wbGlzdGxpYi5weQpAQCAtNyw3ICs3LDYgQEAKIGltcG9ydCBjb2RlY3MKIGltcG9ydCBiaW5hc2NpaQogaW1wb3J0IGNvbGxlY3Rpb25zCi1pbXBvcnQgc3RydWN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gaW8gaW1wb3J0IEJ5dGVzSU8KIApAQCAtNTM0LDggKzUzMywxNCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN1ciwgaW5fZGF0YSkKIAogCitjbGFzcyBNaXNjVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKKyAgICAgICAgYmxhY2tsaXN0ID0geyJQbGlzdEZvcm1hdCIsICJQTElTVEhFQURFUiJ9CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIHBsaXN0bGliLCBibGFja2xpc3Q9YmxhY2tsaXN0KQorCisKIGRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChUZXN0UGxpc3RsaWIsIFRlc3RQbGlzdGxpYkRlcHJlY2F0ZWQpCisgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVGVzdFBsaXN0bGliLCBUZXN0UGxpc3RsaWJEZXByZWNhdGVkLCBNaXNjVGVzdENhc2UpCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcG9wbGliLnB5IGIvTGliL3Rlc3QvdGVzdF9wb3BsaWIucHkKaW5kZXggYmNlZWI5My4uZTViMTZkYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wb3BsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wb3BsaWIucHkKQEAgLTgsNyArOCw2IEBACiBpbXBvcnQgYXN5bmNoYXQKIGltcG9ydCBzb2NrZXQKIGltcG9ydCBvcwotaW1wb3J0IHRpbWUKIGltcG9ydCBlcnJubwogCiBmcm9tIHVuaXR0ZXN0IGltcG9ydCBUZXN0Q2FzZSwgc2tpcFVubGVzcwpAQCAtMTUzLDEwICsxNTIsMTIgQEAKICAgICAgICAgZGVmIGNtZF9zdGxzKHNlbGYsIGFyZyk6CiAgICAgICAgICAgICBpZiBzZWxmLnRsc19hY3RpdmUgaXMgRmFsc2U6CiAgICAgICAgICAgICAgICAgc2VsZi5wdXNoKCcrT0sgQmVnaW4gVExTIG5lZ290aWF0aW9uJykKLSAgICAgICAgICAgICAgICB0bHNfc29jayA9IHNzbC53cmFwX3NvY2tldChzZWxmLnNvY2tldCwgY2VydGZpbGU9Q0VSVEZJTEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX3NpZGU9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwcmVzc19yYWdnZWRfZW9mcz1GYWxzZSkKKyAgICAgICAgICAgICAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoKQorICAgICAgICAgICAgICAgIGNvbnRleHQubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFKQorICAgICAgICAgICAgICAgIHRsc19zb2NrID0gY29udGV4dC53cmFwX3NvY2tldChzZWxmLnNvY2tldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX3NpZGU9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHByZXNzX3JhZ2dlZF9lb2ZzPUZhbHNlKQogICAgICAgICAgICAgICAgIHNlbGYuZGVsX2NoYW5uZWwoKQogICAgICAgICAgICAgICAgIHNlbGYuc2V0X3NvY2tldCh0bHNfc29jaykKICAgICAgICAgICAgICAgICBzZWxmLnRsc19hY3RpdmUgPSBUcnVlCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Bvc2l4LnB5IGIvTGliL3Rlc3QvdGVzdF9wb3NpeC5weQppbmRleCAyYTU5YzM4Li4wMjlkMDgxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3Bvc2l4LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcG9zaXgucHkKQEAgLTEsNiArMSw3IEBACiAiVGVzdCBwb3NpeCBmdW5jdGlvbnMiCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorYW5kcm9pZF9ub3Rfcm9vdCA9IHN1cHBvcnQuYW5kcm9pZF9ub3Rfcm9vdAogCiAjIFNraXAgdGhlc2UgdGVzdHMgaWYgdGhlcmUgaXMgbm8gcG9zaXggbW9kdWxlLgogcG9zaXggPSBzdXBwb3J0LmltcG9ydF9tb2R1bGUoJ3Bvc2l4JykKQEAgLTExLDcgKzEyLDYgQEAKIGltcG9ydCBvcwogaW1wb3J0IHBsYXRmb3JtCiBpbXBvcnQgcHdkCi1pbXBvcnQgc2h1dGlsCiBpbXBvcnQgc3RhdAogaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgdW5pdHRlc3QKQEAgLTM5OCw3ICszOTgsNyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvc2l4LnN0YXQoZnAuZmlsZW5vKCkpKQogCiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgJ3Nob3VsZCBiZSBzdHJpbmcsIGJ5dGVzIG9yIGludGVnZXIsIG5vdCcsCisgICAgICAgICAgICAgICAgICAgICdzaG91bGQgYmUgc3RyaW5nLCBieXRlcywgb3MuUGF0aExpa2Ugb3IgaW50ZWdlciwgbm90JywKICAgICAgICAgICAgICAgICAgICAgcG9zaXguc3RhdCwgZmxvYXQoZnAuZmlsZW5vKCkpKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgZnAuY2xvc2UoKQpAQCAtNDA4LDE5ICs0MDgsMjIgQEAKICAgICBkZWYgdGVzdF9zdGF0KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFRydWUocG9zaXguc3RhdChzdXBwb3J0LlRFU1RGTikpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3NpeC5zdGF0KG9zLmZzZW5jb2RlKHN1cHBvcnQuVEVTVEZOKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3NpeC5zdGF0KGJ5dGVhcnJheShvcy5mc2VuY29kZShzdXBwb3J0LlRFU1RGTikpKSkKIAorICAgICAgICBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICdzaG91bGQgYmUgc3RyaW5nLCBieXRlcywgb3MuUGF0aExpa2Ugb3IgaW50ZWdlciwgbm90JywKKyAgICAgICAgICAgICAgICBwb3NpeC5zdGF0LCBieXRlYXJyYXkob3MuZnNlbmNvZGUoc3VwcG9ydC5URVNURk4pKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgJ2NhblwndCBzcGVjaWZ5IE5vbmUgZm9yIHBhdGggYXJndW1lbnQnLAorICAgICAgICAgICAgICAgICdzaG91bGQgYmUgc3RyaW5nLCBieXRlcywgb3MuUGF0aExpa2Ugb3IgaW50ZWdlciwgbm90JywKICAgICAgICAgICAgICAgICBwb3NpeC5zdGF0LCBOb25lKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAnc2hvdWxkIGJlIHN0cmluZywgYnl0ZXMgb3IgaW50ZWdlciwgbm90JywKKyAgICAgICAgICAgICAgICAnc2hvdWxkIGJlIHN0cmluZywgYnl0ZXMsIG9zLlBhdGhMaWtlIG9yIGludGVnZXIsIG5vdCcsCiAgICAgICAgICAgICAgICAgcG9zaXguc3RhdCwgbGlzdChzdXBwb3J0LlRFU1RGTikpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICdzaG91bGQgYmUgc3RyaW5nLCBieXRlcyBvciBpbnRlZ2VyLCBub3QnLAorICAgICAgICAgICAgICAgICdzaG91bGQgYmUgc3RyaW5nLCBieXRlcywgb3MuUGF0aExpa2Ugb3IgaW50ZWdlciwgbm90JywKICAgICAgICAgICAgICAgICBwb3NpeC5zdGF0LCBsaXN0KG9zLmZzZW5jb2RlKHN1cHBvcnQuVEVTVEZOKSkpCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHBvc2l4LCAnbWtmaWZvJyksICJkb24ndCBoYXZlIG1rZmlmbygpIikKKyAgICBAdW5pdHRlc3Quc2tpcElmKGFuZHJvaWRfbm90X3Jvb3QsICJta2ZpZm8gbm90IGFsbG93ZWQsIG5vbiByb290IHVzZXIiKQogICAgIGRlZiB0ZXN0X21rZmlmbyhzZWxmKToKICAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4pCiAgICAgICAgIHBvc2l4Lm1rZmlmbyhzdXBwb3J0LlRFU1RGTiwgc3RhdC5TX0lSVVNSIHwgc3RhdC5TX0lXVVNSKQpAQCAtNDI4LDYgKzQzMSw3IEBACiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHBvc2l4LCAnbWtub2QnKSBhbmQgaGFzYXR0cihzdGF0LCAnU19JRklGTycpLAogICAgICAgICAgICAgICAgICAgICAgICAgICJkb24ndCBoYXZlIG1rbm9kKCkvU19JRklGTyIpCisgICAgQHVuaXR0ZXN0LnNraXBJZihhbmRyb2lkX25vdF9yb290LCAibWtub2Qgbm90IGFsbG93ZWQsIG5vbiByb290IHVzZXIiKQogICAgIGRlZiB0ZXN0X21rbm9kKHNlbGYpOgogICAgICAgICAjIFRlc3QgdXNpbmcgbWtub2QoKSB0byBjcmVhdGUgYSBGSUZPICh0aGUgb25seSB1c2Ugc3BlY2lmaWVkCiAgICAgICAgICMgYnkgUE9TSVgpLgpAQCAtNzk4LDcgKzgwMiwxMSBAQAogICAgICAgICAgICAgZ3JvdXBzID0gaWRnLnJlYWQoKS5zdHJpcCgpCiAgICAgICAgICAgICByZXQgPSBpZGcuY2xvc2UoKQogCi0gICAgICAgIGlmIHJldCBpcyBub3QgTm9uZSBvciBub3QgZ3JvdXBzOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZGdfZ3JvdXBzID0gc2V0KGludChnKSBmb3IgZyBpbiBncm91cHMuc3BsaXQoKSkKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICBpZGdfZ3JvdXBzID0gc2V0KCkKKyAgICAgICAgaWYgcmV0IGlzIG5vdCBOb25lIG9yIG5vdCBpZGdfZ3JvdXBzOgogICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoIm5lZWQgd29ya2luZyAnaWQgLUcnIikKIAogICAgICAgICAjIElzc3VlcyAxNjY5ODogT1MgWCBBQklzIHByaW9yIHRvIDEwLjYgaGF2ZSBsaW1pdHMgb24gZ2V0Z3JvdXBzKCkKQEAgLTgwOSwxMiArODE3LDExIEBACiAgICAgICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoImdldGdyb3VwcygyKSBpcyBicm9rZW4gcHJpb3IgdG8gMTAuNiIpCiAKICAgICAgICAgIyAnaWQgLUcnIGFuZCAnb3MuZ2V0Z3JvdXBzKCknIHNob3VsZCByZXR1cm4gdGhlIHNhbWUKLSAgICAgICAgIyBncm91cHMsIGlnbm9yaW5nIG9yZGVyIGFuZCBkdXBsaWNhdGVzLgotICAgICAgICAjICMxMDgyMiAtIGl0IGlzIGltcGxlbWVudGF0aW9uIGRlZmluZWQgd2hldGhlciBwb3NpeC5nZXRncm91cHMoKQotICAgICAgICAjIGluY2x1ZGVzIHRoZSBlZmZlY3RpdmUgZ2lkIHNvIHdlIGluY2x1ZGUgaXQgYW55d2F5LCBzaW5jZSBpZCAtRyBkb2VzCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICAgICAgc2V0KFtpbnQoeCkgZm9yIHggaW4gZ3JvdXBzLnNwbGl0KCldKSwKLSAgICAgICAgICAgICAgICBzZXQocG9zaXguZ2V0Z3JvdXBzKCkgKyBbcG9zaXguZ2V0ZWdpZCgpXSkpCisgICAgICAgICMgZ3JvdXBzLCBpZ25vcmluZyBvcmRlciwgZHVwbGljYXRlcywgYW5kIHRoZSBlZmZlY3RpdmUgZ2lkLgorICAgICAgICAjICMxMDgyMi8jMjY5NDQgLSBJdCBpcyBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkIHdoZXRoZXIKKyAgICAgICAgIyBwb3NpeC5nZXRncm91cHMoKSBpbmNsdWRlcyB0aGUgZWZmZWN0aXZlIGdpZC4KKyAgICAgICAgc3ltZGlmZiA9IGlkZ19ncm91cHMuc3ltbWV0cmljX2RpZmZlcmVuY2UocG9zaXguZ2V0Z3JvdXBzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3Qgc3ltZGlmZiBvciBzeW1kaWZmID09IHtwb3NpeC5nZXRlZ2lkKCl9KQogCiAgICAgIyB0ZXN0cyBmb3IgdGhlIHBvc2l4ICphdCBmdW5jdGlvbnMgZm9sbG93CiAKQEAgLTg2Myw5ICs4NzAsOSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzMSwgczIpCiAgICAgICAgICAgICBzMiA9IHBvc2l4LnN0YXQoc3VwcG9ydC5URVNURk4sIGRpcl9mZD1Ob25lKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzMSwgczIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ3Nob3VsZCBiZSBpbnRlZ2VyLCBub3QnLAorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdzaG91bGQgYmUgaW50ZWdlciBvciBOb25lLCBub3QnLAogICAgICAgICAgICAgICAgICAgICBwb3NpeC5zdGF0LCBzdXBwb3J0LlRFU1RGTiwgZGlyX2ZkPXBvc2l4LmdldGN3ZCgpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdzaG91bGQgYmUgaW50ZWdlciwgbm90JywKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnc2hvdWxkIGJlIGludGVnZXIgb3IgTm9uZSwgbm90JywKICAgICAgICAgICAgICAgICAgICAgcG9zaXguc3RhdCwgc3VwcG9ydC5URVNURk4sIGRpcl9mZD1mbG9hdChmKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgIHBvc2l4LnN0YXQsIHN1cHBvcnQuVEVTVEZOLCBkaXJfZmQ9MTAqKjIwKQpAQCAtOTAzLDYgKzkxMCw3IEBACiAgICAgICAgICAgICBwb3NpeC5jbG9zZShmKQogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MubGluayBpbiBvcy5zdXBwb3J0c19kaXJfZmQsICJ0ZXN0IG5lZWRzIGRpcl9mZCBzdXBwb3J0IGluIG9zLmxpbmsoKSIpCisgICAgQHVuaXR0ZXN0LnNraXBJZihhbmRyb2lkX25vdF9yb290LCAiaGFyZCBsaW5rIG5vdCBhbGxvd2VkLCBub24gcm9vdCB1c2VyIikKICAgICBkZWYgdGVzdF9saW5rX2Rpcl9mZChzZWxmKToKICAgICAgICAgZiA9IHBvc2l4Lm9wZW4ocG9zaXguZ2V0Y3dkKCksIHBvc2l4Lk9fUkRPTkxZKQogICAgICAgICB0cnk6CkBAIC05MjYsNiArOTM0LDcgQEAKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKChvcy5ta25vZCBpbiBvcy5zdXBwb3J0c19kaXJfZmQpIGFuZCBoYXNhdHRyKHN0YXQsICdTX0lGSUZPJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgInRlc3QgcmVxdWlyZXMgYm90aCBzdGF0LlNfSUZJRk8gYW5kIGRpcl9mZCBzdXBwb3J0IGZvciBvcy5ta25vZCgpIikKKyAgICBAdW5pdHRlc3Quc2tpcElmKGFuZHJvaWRfbm90X3Jvb3QsICJta25vZCBub3QgYWxsb3dlZCwgbm9uIHJvb3QgdXNlciIpCiAgICAgZGVmIHRlc3RfbWtub2RfZGlyX2ZkKHNlbGYpOgogICAgICAgICAjIFRlc3QgdXNpbmcgbWtub2RhdCgpIHRvIGNyZWF0ZSBhIEZJRk8gKHRoZSBvbmx5IHVzZSBzcGVjaWZpZWQKICAgICAgICAgIyBieSBQT1NJWCkuCkBAIC0xMDA5LDYgKzEwMTgsNyBAQAogICAgICAgICAgICAgcG9zaXguY2xvc2UoZikKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLm1rZmlmbyBpbiBvcy5zdXBwb3J0c19kaXJfZmQsICJ0ZXN0IG5lZWRzIGRpcl9mZCBzdXBwb3J0IGluIG9zLm1rZmlmbygpIikKKyAgICBAdW5pdHRlc3Quc2tpcElmKGFuZHJvaWRfbm90X3Jvb3QsICJta2ZpZm8gbm90IGFsbG93ZWQsIG5vbiByb290IHVzZXIiKQogICAgIGRlZiB0ZXN0X21rZmlmb19kaXJfZmQoc2VsZik6CiAgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQogICAgICAgICBmID0gcG9zaXgub3Blbihwb3NpeC5nZXRjd2QoKSwgcG9zaXguT19SRE9OTFkpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Bvc2l4cGF0aC5weSBiL0xpYi90ZXN0L3Rlc3RfcG9zaXhwYXRoLnB5CmluZGV4IDA3ODNjMzYuLjhhMWUzM2IgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcG9zaXhwYXRoLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcG9zaXhwYXRoLnB5CkBAIC01OTYsNSArNTk2LDg1IEBACiAgICAgYXR0cmlidXRlcyA9IFsncmVscGF0aCcsICdzYW1lZmlsZScsICdzYW1lb3BlbmZpbGUnLCAnc2FtZXN0YXQnXQogCiAKK2NsYXNzIFBhdGhMaWtlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgcGF0aCA9IHBvc2l4cGF0aAorCisgICAgY2xhc3MgUGF0aExpa2U6CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoPScnKToKKyAgICAgICAgICAgIHNlbGYucGF0aCA9IHBhdGgKKyAgICAgICAgZGVmIF9fZnNwYXRoX18oc2VsZik6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYucGF0aCwgQmFzZUV4Y2VwdGlvbik6CisgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5wYXRoCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnBhdGgKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5maWxlX25hbWUgPSBzdXBwb3J0LlRFU1RGTi5sb3dlcigpCisgICAgICAgIHNlbGYuZmlsZV9wYXRoID0gc2VsZi5QYXRoTGlrZShzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBzZWxmLmZpbGVfbmFtZSkKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZV9uYW1lLCAneGInLCAwKSBhcyBmaWxlOgorICAgICAgICAgICAgZmlsZS53cml0ZShiInRlc3RfcG9zaXhwYXRoLlBhdGhMaWtlVGVzdHMiKQorCisgICAgZGVmIGFzc2VydFBhdGhFcXVhbChzZWxmLCBmdW5jKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmdW5jKHNlbGYuZmlsZV9wYXRoKSwgZnVuYyhzZWxmLmZpbGVfbmFtZSkpCisKKyAgICBkZWYgdGVzdF9wYXRoX25vcm1jYXNlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGgubm9ybWNhc2UpCisKKyAgICBkZWYgdGVzdF9wYXRoX2lzYWJzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguaXNhYnMpCisKKyAgICBkZWYgdGVzdF9wYXRoX2pvaW4oc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5wYXRoLmpvaW4oJ2EnLCBzZWxmLlBhdGhMaWtlKCdiJyksICdjJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wYXRoLmpvaW4oJ2EnLCAnYicsICdjJykpCisKKyAgICBkZWYgdGVzdF9wYXRoX3NwbGl0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguc3BsaXQpCisKKyAgICBkZWYgdGVzdF9wYXRoX3NwbGl0ZXh0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguc3BsaXRleHQpCisKKyAgICBkZWYgdGVzdF9wYXRoX3NwbGl0ZHJpdmUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5zcGxpdGRyaXZlKQorCisgICAgZGVmIHRlc3RfcGF0aF9iYXNlbmFtZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLmJhc2VuYW1lKQorCisgICAgZGVmIHRlc3RfcGF0aF9kaXJuYW1lKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguZGlybmFtZSkKKworICAgIGRlZiB0ZXN0X3BhdGhfaXNsaW5rKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguaXNsaW5rKQorCisgICAgZGVmIHRlc3RfcGF0aF9sZXhpc3RzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGgubGV4aXN0cykKKworICAgIGRlZiB0ZXN0X3BhdGhfaXNtb3VudChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLmlzbW91bnQpCisKKyAgICBkZWYgdGVzdF9wYXRoX2V4cGFuZHVzZXIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5leHBhbmR1c2VyKQorCisgICAgZGVmIHRlc3RfcGF0aF9leHBhbmR2YXJzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguZXhwYW5kdmFycykKKworICAgIGRlZiB0ZXN0X3BhdGhfbm9ybXBhdGgoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5ub3JtcGF0aCkKKworICAgIGRlZiB0ZXN0X3BhdGhfYWJzcGF0aChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLmFic3BhdGgpCisKKyAgICBkZWYgdGVzdF9wYXRoX3JlYWxwYXRoKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGgucmVhbHBhdGgpCisKKyAgICBkZWYgdGVzdF9wYXRoX3JlbHBhdGgoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5yZWxwYXRoKQorCisgICAgZGVmIHRlc3RfcGF0aF9jb21tb25wYXRoKHNlbGYpOgorICAgICAgICBjb21tb25fcGF0aCA9IHNlbGYucGF0aC5jb21tb25wYXRoKFtzZWxmLmZpbGVfcGF0aCwgc2VsZi5maWxlX25hbWVdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1vbl9wYXRoLCBzZWxmLmZpbGVfbmFtZSkKKworCiBpZiBfX25hbWVfXz09Il9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcG93LnB5IGIvTGliL3Rlc3QvdGVzdF9wb3cucHkKaW5kZXggNmZlYWM0MC4uY2U5OWZlNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wb3cucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wb3cucHkKQEAgLTEsNCArMSw0IEBACi1pbXBvcnQgdGVzdC5zdXBwb3J0LCB1bml0dGVzdAoraW1wb3J0IHVuaXR0ZXN0CiAKIGNsYXNzIFBvd1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3B0eS5weSBiL0xpYi90ZXN0L3Rlc3RfcHR5LnB5CmluZGV4IGVmNWU5OWUuLjE1Zjg4ZTQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcHR5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcHR5LnB5CkBAIC0yNzcsNyArMjc3LDYgQEAKICAgICAgICAgc29ja2V0cGFpciA9IHNlbGYuX3NvY2tldHBhaXIoKQogICAgICAgICBtYXN0ZXJzID0gW3MuZmlsZW5vKCkgZm9yIHMgaW4gc29ja2V0cGFpcl0KIAotICAgICAgICBvcy5jbG9zZShtYXN0ZXJzWzFdKQogICAgICAgICBzb2NrZXRwYWlyWzFdLmNsb3NlKCkKICAgICAgICAgb3MuY2xvc2Uod3JpdGVfdG9fc3RkaW5fZmQpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcHVsbGRvbS5weSBiL0xpYi90ZXN0L3Rlc3RfcHVsbGRvbS5weQppbmRleCAxOTMyYzZiLi4zZDg5ZTNhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3B1bGxkb20ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wdWxsZG9tLnB5CkBAIC0xLDYgKzEsNSBAQAogaW1wb3J0IGlvCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBzeXMKIGltcG9ydCB4bWwuc2F4CiAKIGZyb20geG1sLnNheC54bWxyZWFkZXIgaW1wb3J0IEF0dHJpYnV0ZXNJbXBsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3B3ZC5weSBiL0xpYi90ZXN0L3Rlc3RfcHdkLnB5CmluZGV4IGI3YjFhNGEuLmFjOWNmZjcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcHdkLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcHdkLnB5CkBAIC00LDEwICs0LDE5IEBACiAKIHB3ZCA9IHN1cHBvcnQuaW1wb3J0X21vZHVsZSgncHdkJykKIAorZGVmIF9nZXRwd2FsbCgpOgorICAgICMgQW5kcm9pZCBkb2VzIG5vdCBoYXZlIGdldHB3YWxsLgorICAgIGlmIGhhc2F0dHIocHdkLCAnZ2V0cHdhbGwnKToKKyAgICAgICAgcmV0dXJuIHB3ZC5nZXRwd2FsbCgpCisgICAgZWxpZiBoYXNhdHRyKHB3ZCwgJ2dldHB3dWlkJyk6CisgICAgICAgIHJldHVybiBbcHdkLmdldHB3dWlkKDApXQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiBbXQorCiBjbGFzcyBQd2RUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X3ZhbHVlcyhzZWxmKToKLSAgICAgICAgZW50cmllcyA9IHB3ZC5nZXRwd2FsbCgpCisgICAgICAgIGVudHJpZXMgPSBfZ2V0cHdhbGwoKQogCiAgICAgICAgIGZvciBlIGluIGVudHJpZXM6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihlKSwgNykKQEAgLTMzLDcgKzQyLDcgQEAKICAgICAgICAgICAgICMgYW5kIGNoZWNrIGFmdGVyd2FyZHMgKGRvbmUgaW4gdGVzdF92YWx1ZXNfZXh0ZW5kZWQpCiAKICAgICBkZWYgdGVzdF92YWx1ZXNfZXh0ZW5kZWQoc2VsZik6Ci0gICAgICAgIGVudHJpZXMgPSBwd2QuZ2V0cHdhbGwoKQorICAgICAgICBlbnRyaWVzID0gX2dldHB3YWxsKCkKICAgICAgICAgZW50cmllc2J5bmFtZSA9IHt9CiAgICAgICAgIGVudHJpZXNieXVpZCA9IHt9CiAKQEAgLTU3LDEyICs2NiwxMyBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHB3ZC5nZXRwd3VpZCwgMy4xNCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwd2QuZ2V0cHduYW0pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcHdkLmdldHB3bmFtLCA0MikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwd2QuZ2V0cHdhbGwsIDQyKQorICAgICAgICBpZiBoYXNhdHRyKHB3ZCwgJ2dldHB3YWxsJyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHB3ZC5nZXRwd2FsbCwgNDIpCiAKICAgICAgICAgIyB0cnkgdG8gZ2V0IHNvbWUgZXJyb3JzCiAgICAgICAgIGJ5bmFtZXMgPSB7fQogICAgICAgICBieXVpZHMgPSB7fQotICAgICAgICBmb3IgKG4sIHAsIHUsIGcsIGdlY29zLCBkLCBzKSBpbiBwd2QuZ2V0cHdhbGwoKToKKyAgICAgICAgZm9yIChuLCBwLCB1LCBnLCBnZWNvcywgZCwgcykgaW4gX2dldHB3YWxsKCk6CiAgICAgICAgICAgICBieW5hbWVzW25dID0gdQogICAgICAgICAgICAgYnl1aWRzW3VdID0gbgogCkBAIC05NiwxMyArMTA2LDE3IEBACiAgICAgICAgICMgbG9vcCwgc2F5KSwgcHdkLmdldHB3dWlkKCkgbWlnaHQgc3RpbGwgYmUgYWJsZSB0byBmaW5kIGRhdGEgZm9yIHRoYXQKICAgICAgICAgIyB1aWQuIFVzaW5nIHN5cy5tYXhpbnQgbWF5IHByb3Zva2UgdGhlIHNhbWUgcHJvYmxlbXMsIGJ1dCBob3BlZnVsbHkKICAgICAgICAgIyBpdCB3aWxsIGJlIGEgbW9yZSByZXBlYXRhYmxlIGZhaWx1cmUuCisgICAgICAgICMgQW5kcm9pZCBhY2NlcHRzIGEgdmVyeSBsYXJnZSBzcGFuIG9mIHVpZHMgaW5jbHVkaW5nIHN5cy5tYXhzaXplIGFuZAorICAgICAgICAjIC0xOyBpdCByYWlzZXMgS2V5RXJyb3Igd2l0aCAxIG9yIDIgZm9yIGV4YW1wbGUuCiAgICAgICAgIGZha2V1aWQgPSBzeXMubWF4c2l6ZQogICAgICAgICBzZWxmLmFzc2VydE5vdEluKGZha2V1aWQsIGJ5dWlkcykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIHB3ZC5nZXRwd3VpZCwgZmFrZXVpZCkKKyAgICAgICAgaWYgbm90IHN1cHBvcnQuaXNfYW5kcm9pZDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBwd2QuZ2V0cHd1aWQsIGZha2V1aWQpCiAKICAgICAgICAgIyAtMSBzaG91bGRuJ3QgYmUgYSB2YWxpZCB1aWQgYmVjYXVzZSBpdCBoYXMgYSBzcGVjaWFsIG1lYW5pbmcgaW4gbWFueQogICAgICAgICAjIHVpZC1yZWxhdGVkIGZ1bmN0aW9ucwotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgcHdkLmdldHB3dWlkLCAtMSkKKyAgICAgICAgaWYgbm90IHN1cHBvcnQuaXNfYW5kcm9pZDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBwd2QuZ2V0cHd1aWQsIC0xKQogICAgICAgICAjIHNob3VsZCBiZSBvdXQgb2YgdWlkX3QgcmFuZ2UKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIHB3ZC5nZXRwd3VpZCwgMioqMTI4KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgcHdkLmdldHB3dWlkLCAtMioqMTI4KQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9weWNsYnIucHkgYi9MaWIvdGVzdC90ZXN0X3B5Y2xici5weQppbmRleCA2ZmZiYmJkLi4yY2ZmMWM1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3B5Y2xici5weQorKysgYi9MaWIvdGVzdC90ZXN0X3B5Y2xici5weQpAQCAtMTU2LDkgKzE1Niw5IEBACiAgICAgICAgICMgVGhlc2Ugd2VyZSBvbmNlIGFib3V0IHRoZSAxMCBsb25nZXN0IG1vZHVsZXMKICAgICAgICAgY20oJ3JhbmRvbScsIGlnbm9yZT0oJ1JhbmRvbScsKSkgICMgZnJvbSBfcmFuZG9tIGltcG9ydCBSYW5kb20gYXMgQ29yZUdlbmVyYXRvcgogICAgICAgICBjbSgnY2dpJywgaWdub3JlPSgnbG9nJywpKSAgICAgICMgc2V0IHdpdGggPSBpbiBtb2R1bGUKLSAgICAgICAgY20oJ3BpY2tsZScpCisgICAgICAgIGNtKCdwaWNrbGUnLCBpZ25vcmU9KCdwYXJ0aWFsJywpKQogICAgICAgICBjbSgnYWlmYycsIGlnbm9yZT0oJ29wZW5mcCcsICdfYWlmY19wYXJhbXMnKSkgICMgc2V0IHdpdGggPSBpbiBtb2R1bGUKLSAgICAgICAgY20oJ3NyZV9wYXJzZScsIGlnbm9yZT0oJ2R1bXAnLCAnZ3JvdXBzJykpICMgZnJvbSBzcmVfY29uc3RhbnRzIGltcG9ydCAqOyBwcm9wZXJ0eQorICAgICAgICBjbSgnc3JlX3BhcnNlJywgaWdub3JlPSgnZHVtcCcsICdncm91cHMnLCAncG9zJykpICMgZnJvbSBzcmVfY29uc3RhbnRzIGltcG9ydCAqOyBwcm9wZXJ0eQogICAgICAgICBjbSgncGRiJykKICAgICAgICAgY20oJ3B5ZG9jJykKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9weWRvYy5weSBiL0xpYi90ZXN0L3Rlc3RfcHlkb2MucHkKaW5kZXggMWY3YWI3Zi4uZWQ0MzhkNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9weWRvYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3B5ZG9jLnB5CkBAIC04NCw2ICs4NCw4IEBACiAgICAgIHwgIERhdGEgYW5kIG90aGVyIGF0dHJpYnV0ZXMgZGVmaW5lZCBoZXJlOgogICAgICB8XHgyMFx4MjAKICAgICAgfCAgTk9fTUVBTklORyA9ICdlZ2dzJworICAgICB8XHgyMFx4MjAKKyAgICAgfCAgX19hbm5vdGF0aW9uc19fID0geydOT19NRUFOSU5HJzogPGNsYXNzICdzdHInPn0KIFx4MjBceDIwXHgyMFx4MjAKICAgICBjbGFzcyBDKGJ1aWx0aW5zLm9iamVjdCkKICAgICAgfCAgTWV0aG9kcyBkZWZpbmVkIGhlcmU6CkBAIC0xOTYsNiArMTk4LDggQEAKIERhdGEgYW5kIG90aGVyIGF0dHJpYnV0ZXMgZGVmaW5lZCBoZXJlOjxicj4KIDxkbD48ZHQ+PHN0cm9uZz5OT19NRUFOSU5HPC9zdHJvbmc+ID0gJ2VnZ3MnPC9kbD4KIAorPGRsPjxkdD48c3Ryb25nPl9fYW5ub3RhdGlvbnNfXzwvc3Ryb25nPiA9IHsnTk9fTUVBTklORyc6ICZsdDtjbGFzcyAnc3RyJyZndDt9PC9kbD4KKwogPC90ZD48L3RyPjwvdGFibGU+IDxwPgogPHRhYmxlIHdpZHRoPSIxMDAlJSIgY2VsbHNwYWNpbmc9MCBjZWxscGFkZGluZz0yIGJvcmRlcj0wIHN1bW1hcnk9InNlY3Rpb24iPgogPHRyIGJnY29sb3I9IiNmZmM4ZDgiPgpAQCAtMjY0LDcgKzI2OCw3IEBACiBVc2UgaGVscChzdHIpIGZvciBoZWxwIG9uIHRoZSBzdHIgY2xhc3MuJycnLnJlcGxhY2UoJ1xuJywgb3MubGluZXNlcCkKIAogIyBvdXRwdXQgcGF0dGVybiBmb3IgbW9kdWxlIHdpdGggYmFkIGltcG9ydHMKLWJhZGltcG9ydF9wYXR0ZXJuID0gInByb2JsZW0gaW4gJXMgLSBJbXBvcnRFcnJvcjogTm8gbW9kdWxlIG5hbWVkICVyIgorYmFkaW1wb3J0X3BhdHRlcm4gPSAicHJvYmxlbSBpbiAlcyAtIE1vZHVsZU5vdEZvdW5kRXJyb3I6IE5vIG1vZHVsZSBuYW1lZCAlciIKIAogZXhwZWN0ZWRfZHluYW1pY2F0dHJpYnV0ZV9wYXR0ZXJuID0gIiIiCiBIZWxwIG9uIGNsYXNzIERBIGluIG1vZHVsZSAlczoKQEAgLTYzOSw4ICs2NDMsOSBAQAogICAgICAgICBkZWwgZXhwZWN0ZWRbJ19fZG9jX18nXQogICAgICAgICBkZWwgZXhwZWN0ZWRbJ19fY2xhc3NfXyddCiAgICAgICAgICMgaW5zcGVjdCByZXNvbHZlcyBkZXNjcmlwdG9ycyBvbiB0eXBlIGludG8gbWV0aG9kcywgYnV0IHZhcnMgZG9lc24ndCwKLSAgICAgICAgIyBzbyB3ZSBuZWVkIHRvIHVwZGF0ZSBfX3N1YmNsYXNzaG9va19fLgorICAgICAgICAjIHNvIHdlIG5lZWQgdG8gdXBkYXRlIF9fc3ViY2xhc3Nob29rX18gYW5kIF9faW5pdF9zdWJjbGFzc19fLgogICAgICAgICBleHBlY3RlZFsnX19zdWJjbGFzc2hvb2tfXyddID0gVGVzdENsYXNzLl9fc3ViY2xhc3Nob29rX18KKyAgICAgICAgZXhwZWN0ZWRbJ19faW5pdF9zdWJjbGFzc19fJ10gPSBUZXN0Q2xhc3MuX19pbml0X3N1YmNsYXNzX18KIAogICAgICAgICBtZXRob2RzID0gcHlkb2MuYWxsbWV0aG9kcyhUZXN0Q2xhc3MpCiAgICAgICAgIHNlbGYuYXNzZXJ0RGljdEVxdWFsKG1ldGhvZHMsIGV4cGVjdGVkKQpAQCAtODY4LDYgKzg3MywyMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2dldF9zdW1tYXJ5X2xpbmUodC53cmFwKSwKICAgICAgICAgICAgICJ3cmFwKHRleHQpIG1ldGhvZCBvZiB0ZXh0d3JhcC5UZXh0V3JhcHBlciBpbnN0YW5jZSIpCiAKKyAgICBkZWYgdGVzdF9maWVsZF9vcmRlcl9mb3JfbmFtZWRfdHVwbGVzKHNlbGYpOgorICAgICAgICBQZXJzb24gPSBuYW1lZHR1cGxlKCdQZXJzb24nLCBbJ25pY2tuYW1lJywgJ2ZpcnN0bmFtZScsICdhZ2Vncm91cCddKQorICAgICAgICBzID0gcHlkb2MucmVuZGVyX2RvYyhQZXJzb24pCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhzLmluZGV4KCduaWNrbmFtZScpLCBzLmluZGV4KCdmaXJzdG5hbWUnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzKHMuaW5kZXgoJ2ZpcnN0bmFtZScpLCBzLmluZGV4KCdhZ2Vncm91cCcpKQorCisgICAgICAgIGNsYXNzIE5vbkl0ZXJhYmxlRmllbGRzOgorICAgICAgICAgICAgX2ZpZWxkcyA9IE5vbmUKKworICAgICAgICBjbGFzcyBOb25IYXNoYWJsZUZpZWxkczoKKyAgICAgICAgICAgIF9maWVsZHMgPSBbW11dCisKKyAgICAgICAgIyBNYWtlIHN1cmUgdGhlc2UgZG9lc24ndCBmYWlsCisgICAgICAgIHB5ZG9jLnJlbmRlcl9kb2MoTm9uSXRlcmFibGVGaWVsZHMpCisgICAgICAgIHB5ZG9jLnJlbmRlcl9kb2MoTm9uSGFzaGFibGVGaWVsZHMpCisKICAgICBAcmVxdWlyZXNfZG9jc3RyaW5ncwogICAgIGRlZiB0ZXN0X2JvdW5kX2J1aWx0aW5fbWV0aG9kKHNlbGYpOgogICAgICAgICBzID0gU3RyaW5nSU8oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9xdW9wcmkucHkgYi9MaWIvdGVzdC90ZXN0X3F1b3ByaS5weQppbmRleCA3Y2FjMDEzLi43MTU1NDRjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3F1b3ByaS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3F1b3ByaS5weQpAQCAtMSw2ICsxLDYgQEAKIGltcG9ydCB1bml0dGVzdAogCi1pbXBvcnQgc3lzLCBvcywgaW8sIHN1YnByb2Nlc3MKK2ltcG9ydCBzeXMsIGlvLCBzdWJwcm9jZXNzCiBpbXBvcnQgcXVvcHJpCiAKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9yYW5kb20ucHkgYi9MaWIvdGVzdC90ZXN0X3JhbmRvbS5weQppbmRleCBlODBlZDE3Li41YjZhNGYwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3JhbmRvbS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3JhbmRvbS5weQpAQCAtNyw2ICs3LDcgQEAKIGZyb20gZnVuY3Rvb2xzIGltcG9ydCBwYXJ0aWFsCiBmcm9tIG1hdGggaW1wb3J0IGxvZywgZXhwLCBwaSwgZnN1bSwgc2luCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2Zyb20gZnJhY3Rpb25zIGltcG9ydCBGcmFjdGlvbgogCiBjbGFzcyBUZXN0QmFzaWNPcHM6CiAgICAgIyBTdXBlcmNsYXNzIHdpdGggdGVzdHMgY29tbW9uIHRvIGFsbCBnZW5lcmF0b3JzLgpAQCAtMTA5LDYgKzExMCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZW4uc2FtcGxlKFtdLCAwKSwgW10pICAjIHRlc3QgZWRnZSBjYXNlIE49PWs9PTAKICAgICAgICAgIyBFeGNlcHRpb24gcmFpc2VkIGlmIHNpemUgb2Ygc2FtcGxlIGV4Y2VlZHMgdGhhdCBvZiBwb3B1bGF0aW9uCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYuZ2VuLnNhbXBsZSwgcG9wdWxhdGlvbiwgTisxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLmdlbi5zYW1wbGUsIFtdLCAtMSkKIAogICAgIGRlZiB0ZXN0X3NhbXBsZV9kaXN0cmlidXRpb24oc2VsZik6CiAgICAgICAgICMgRm9yIHRoZSBlbnRpcmUgYWxsb3dhYmxlIHJhbmdlIG9mIDAgPD0gayA8PSBOLCB2YWxpZGF0ZSB0aGF0CkBAIC0xNDEsNiArMTQzLDgzIEBACiAgICAgZGVmIHRlc3Rfc2FtcGxlX29uX2RpY3RzKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZ2VuLnNhbXBsZSwgZGljdC5mcm9ta2V5cygnYWJjZGVmJyksIDIpCiAKKyAgICBkZWYgdGVzdF9jaG9pY2VzKHNlbGYpOgorICAgICAgICBjaG9pY2VzID0gc2VsZi5nZW4uY2hvaWNlcworICAgICAgICBkYXRhID0gWydyZWQnLCAnZ3JlZW4nLCAnYmx1ZScsICd5ZWxsb3cnXQorICAgICAgICBzdHJfZGF0YSA9ICdhYmNkJworICAgICAgICByYW5nZV9kYXRhID0gcmFuZ2UoNCkKKyAgICAgICAgc2V0X2RhdGEgPSBzZXQocmFuZ2UoNCkpCisKKyAgICAgICAgIyBiYXNpYyBmdW5jdGlvbmFsaXR5CisgICAgICAgIGZvciBzYW1wbGUgaW4gWworICAgICAgICAgICAgY2hvaWNlcyhkYXRhLCBrPTUpLAorICAgICAgICAgICAgY2hvaWNlcyhkYXRhLCByYW5nZSg0KSwgaz01KSwKKyAgICAgICAgICAgIGNob2ljZXMoaz01LCBwb3B1bGF0aW9uPWRhdGEsIHdlaWdodHM9cmFuZ2UoNCkpLAorICAgICAgICAgICAgY2hvaWNlcyhrPTUsIHBvcHVsYXRpb249ZGF0YSwgY3VtX3dlaWdodHM9cmFuZ2UoNCkpLAorICAgICAgICBdOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2FtcGxlKSwgNSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShzYW1wbGUpLCBsaXN0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNldChzYW1wbGUpIDw9IHNldChkYXRhKSkKKworICAgICAgICAjIHRlc3QgYXJndW1lbnQgaGFuZGxpbmcKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG1pc3NpbmcgYXJndW1lbnRzCisgICAgICAgICAgICBjaG9pY2VzKDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaG9pY2VzKGRhdGEsIGs9MCksIFtdKSAgICAgICAgICAgICAgICAgICAgICAgICAjIGsgPT0gMAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNob2ljZXMoZGF0YSwgaz0tMSksIFtdKSAgICAgICAgICAgICAgICAgICAgICAgICMgbmVnYXRpdmUgayBiZWhhdmVzIGxpa2UgYGBbMF0gKiAtMWBgCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGNob2ljZXMoZGF0YSwgaz0yLjUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGsgaXMgYSBmbG9hdAorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZXQoY2hvaWNlcyhzdHJfZGF0YSwgaz01KSkgPD0gc2V0KHN0cl9kYXRhKSkgICAgIyBwb3B1bGF0aW9uIGlzIGEgc3RyaW5nIHNlcXVlbmNlCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZXQoY2hvaWNlcyhyYW5nZV9kYXRhLCBrPTUpKSA8PSBzZXQocmFuZ2VfZGF0YSkpICAjIHBvcHVsYXRpb24gaXMgYSByYW5nZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjaG9pY2VzKHNldF9kYXRhLCBrPTIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBwb3B1bGF0aW9uIGlzIG5vdCBhIHNlcXVlbmNlCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNldChjaG9pY2VzKGRhdGEsIE5vbmUsIGs9NSkpIDw9IHNldChkYXRhKSkgICAgICAjIHdlaWdodHMgaXMgTm9uZQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2V0KGNob2ljZXMoZGF0YSwgd2VpZ2h0cz1Ob25lLCBrPTUpKSA8PSBzZXQoZGF0YSkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBjaG9pY2VzKGRhdGEsIFsxLDJdLCBrPTUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBsZW4od2VpZ2h0cykgIT0gbGVuKHBvcHVsYXRpb24pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGNob2ljZXMoZGF0YSwgMTAsIGs9NSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG5vbi1pdGVyYWJsZSB3ZWlnaHRzCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGNob2ljZXMoZGF0YSwgW05vbmVdKjQsIGs9NSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG5vbi1udW1lcmljIHdlaWdodHMKKyAgICAgICAgZm9yIHdlaWdodHMgaW4gWworICAgICAgICAgICAgICAgIFsxNSwgMTAsIDI1LCAzMF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaW50ZWdlciB3ZWlnaHRzCisgICAgICAgICAgICAgICAgWzE1LjEsIDEwLjIsIDI1LjIsIDMwLjNdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBmbG9hdCB3ZWlnaHRzCisgICAgICAgICAgICAgICAgW0ZyYWN0aW9uKDEsIDMpLCBGcmFjdGlvbigyLCA2KSwgRnJhY3Rpb24oMywgNiksIEZyYWN0aW9uKDQsIDYpXSwgIyBmcmFjdGlvbmFsIHdlaWdodHMKKyAgICAgICAgICAgICAgICBbVHJ1ZSwgRmFsc2UsIFRydWUsIEZhbHNlXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGJvb2xlYW5zIChpbmNsdWRlIC8gZXhjbHVkZSkKKyAgICAgICAgXToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZXQoY2hvaWNlcyhkYXRhLCB3ZWlnaHRzLCBrPTUpKSA8PSBzZXQoZGF0YSkpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGNob2ljZXMoZGF0YSwgY3VtX3dlaWdodHM9WzEsMl0sIGs9NSkgICAgICAgICAgICAgICAgICAgICAgICAjIGxlbih3ZWlnaHRzKSAhPSBsZW4ocG9wdWxhdGlvbikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgY2hvaWNlcyhkYXRhLCBjdW1fd2VpZ2h0cz0xMCwgaz01KSAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbm9uLWl0ZXJhYmxlIGN1bV93ZWlnaHRzCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGNob2ljZXMoZGF0YSwgY3VtX3dlaWdodHM9W05vbmVdKjQsIGs9NSkgICAgICAgICAgICAgICAgICAgICAjIG5vbi1udW1lcmljIGN1bV93ZWlnaHRzCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGNob2ljZXMoZGF0YSwgcmFuZ2UoNCksIGN1bV93ZWlnaHRzPXJhbmdlKDQpLCBrPTUpICAgICAgICAgICAjIGJvdGggd2VpZ2h0cyBhbmQgY3VtX3dlaWdodHMKKyAgICAgICAgZm9yIHdlaWdodHMgaW4gWworICAgICAgICAgICAgICAgIFsxNSwgMTAsIDI1LCAzMF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaW50ZWdlciBjdW1fd2VpZ2h0cworICAgICAgICAgICAgICAgIFsxNS4xLCAxMC4yLCAyNS4yLCAzMC4zXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZmxvYXQgY3VtX3dlaWdodHMKKyAgICAgICAgICAgICAgICBbRnJhY3Rpb24oMSwgMyksIEZyYWN0aW9uKDIsIDYpLCBGcmFjdGlvbigzLCA2KSwgRnJhY3Rpb24oNCwgNildLCAjIGZyYWN0aW9uYWwgY3VtX3dlaWdodHMKKyAgICAgICAgXToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZXQoY2hvaWNlcyhkYXRhLCBjdW1fd2VpZ2h0cz13ZWlnaHRzLCBrPTUpKSA8PSBzZXQoZGF0YSkpCisKKyAgICAgICAgIyBUZXN0IHdlaWdodCBmb2N1c2VkIG9uIGEgc2luZ2xlIGVsZW1lbnQgb2YgdGhlIHBvcHVsYXRpb24KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaG9pY2VzKCdhYmNkJywgWzEsIDAsIDAsIDBdKSwgWydhJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hvaWNlcygnYWJjZCcsIFswLCAxLCAwLCAwXSksIFsnYiddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNob2ljZXMoJ2FiY2QnLCBbMCwgMCwgMSwgMF0pLCBbJ2MnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaG9pY2VzKCdhYmNkJywgWzAsIDAsIDAsIDFdKSwgWydkJ10pCisKKyAgICAgICAgIyBUZXN0IGNvbnNpc3RlbmN5IHdpdGggcmFuZG9tLmNob2ljZSgpIGZvciBlbXB0eSBwb3B1bGF0aW9uCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvcik6CisgICAgICAgICAgICBjaG9pY2VzKFtdLCBrPTEpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvcik6CisgICAgICAgICAgICBjaG9pY2VzKFtdLCB3ZWlnaHRzPVtdLCBrPTEpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvcik6CisgICAgICAgICAgICBjaG9pY2VzKFtdLCBjdW1fd2VpZ2h0cz1bXSwgaz01KQorCiAgICAgZGVmIHRlc3RfZ2F1c3Moc2VsZik6CiAgICAgICAgICMgRW5zdXJlIHRoYXQgdGhlIHNlZWQoKSBtZXRob2QgaW5pdGlhbGl6ZXMgYWxsIHRoZSBoaWRkZW4gc3RhdGUuICBJbgogICAgICAgICAjIHBhcnRpY3VsYXIsIHRocm91Z2ggMi4yLjEgaXQgZmFpbGVkIHRvIHJlc2V0IGEgcGllY2Ugb2Ygc3RhdGUgdXNlZApAQCAtNTUxLDYgKzYzMCwzOSBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUoc3RvcCA8IHggPD0gc3RhcnQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKHgrc3RvcCklc3RlcCwgMCkKIAorICAgIGRlZiB0ZXN0X2Nob2ljZXNfYWxnb3JpdGhtcyhzZWxmKToKKyAgICAgICAgIyBUaGUgdmFyaW91cyB3YXlzIG9mIHNwZWNpZnlpbmcgd2VpZ2h0cyBzaG91bGQgcHJvZHVjZSB0aGUgc2FtZSByZXN1bHRzCisgICAgICAgIGNob2ljZXMgPSBzZWxmLmdlbi5jaG9pY2VzCisgICAgICAgIG4gPSAxMDQ3MjkKKworICAgICAgICBzZWxmLmdlbi5zZWVkKDg2NzUzMDkpCisgICAgICAgIGEgPSBzZWxmLmdlbi5jaG9pY2VzKHJhbmdlKG4pLCBrPTEwMDAwKQorCisgICAgICAgIHNlbGYuZ2VuLnNlZWQoODY3NTMwOSkKKyAgICAgICAgYiA9IHNlbGYuZ2VuLmNob2ljZXMocmFuZ2UobiksIFsxXSpuLCBrPTEwMDAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEsIGIpCisKKyAgICAgICAgc2VsZi5nZW4uc2VlZCg4Njc1MzA5KQorICAgICAgICBjID0gc2VsZi5nZW4uY2hvaWNlcyhyYW5nZShuKSwgY3VtX3dlaWdodHM9cmFuZ2UoMSwgbisxKSwgaz0xMDAwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCBjKQorCisgICAgICAgICMgQW1lcmlhbiBSb3VsZXR0ZQorICAgICAgICBwb3B1bGF0aW9uID0gWydSZWQnLCAnQmxhY2snLCAnR3JlZW4nXQorICAgICAgICB3ZWlnaHRzID0gWzE4LCAxOCwgMl0KKyAgICAgICAgY3VtX3dlaWdodHMgPSBbMTgsIDM2LCAzOF0KKyAgICAgICAgZXhwYW5kZWRfcG9wdWxhdGlvbiA9IFsnUmVkJ10gKiAxOCArIFsnQmxhY2snXSAqIDE4ICsgWydHcmVlbiddICogMgorCisgICAgICAgIHNlbGYuZ2VuLnNlZWQoOTAzNTc2OCkKKyAgICAgICAgYSA9IHNlbGYuZ2VuLmNob2ljZXMoZXhwYW5kZWRfcG9wdWxhdGlvbiwgaz0xMDAwMCkKKworICAgICAgICBzZWxmLmdlbi5zZWVkKDkwMzU3NjgpCisgICAgICAgIGIgPSBzZWxmLmdlbi5jaG9pY2VzKHBvcHVsYXRpb24sIHdlaWdodHMsIGs9MTAwMDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYSwgYikKKworICAgICAgICBzZWxmLmdlbi5zZWVkKDkwMzU3NjgpCisgICAgICAgIGMgPSBzZWxmLmdlbi5jaG9pY2VzKHBvcHVsYXRpb24sIGN1bV93ZWlnaHRzPWN1bV93ZWlnaHRzLCBrPTEwMDAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEsIGMpCisKIGRlZiBnYW1tYSh6LCBzcXJ0MnBpPSgyLjAqcGkpKiowLjUpOgogICAgICMgUmVmbGVjdGlvbiB0byByaWdodCBoYWxmIG9mIGNvbXBsZXggcGxhbmUKICAgICBpZiB6IDwgMC41OgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9yYW5nZS5weSBiL0xpYi90ZXN0L3Rlc3RfcmFuZ2UucHkKaW5kZXggYzAyMmYwNy4uOWUxMWU1MSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9yYW5nZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3JhbmdlLnB5CkBAIC0xLDkgKzEsMTAgQEAKICMgUHl0aG9uIHRlc3Qgc2V0IC0tIGJ1aWx0LWluIGZ1bmN0aW9ucwogCi1pbXBvcnQgdGVzdC5zdXBwb3J0LCB1bml0dGVzdAoraW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgc3lzCiBpbXBvcnQgcGlja2xlCiBpbXBvcnQgaXRlcnRvb2xzCitpbXBvcnQgdGVzdC5zdXBwb3J0CiAKICMgcHVyZSBQeXRob24gaW1wbGVtZW50YXRpb25zICgzIGFyZ3Mgb25seSksIGZvciBjb21wYXJpc29uCiBkZWYgcHlyYW5nZShzdGFydCwgc3RvcCwgc3RlcCk6CkBAIC00OTgsMjkgKzQ5OSwzMiBAQAogICAgICAgICBpbXBvcnQgX3Rlc3RjYXBpCiAgICAgICAgIHJhbmdlaXRlcl90eXBlID0gdHlwZShpdGVyKHJhbmdlKDApKSkKIAotICAgICAgICAjIHJhbmdlaXRlcl9uZXcgZG9lc24ndCB0YWtlIGtleXdvcmQgYXJndW1lbnRzCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKLSAgICAgICAgICAgIHJhbmdlaXRlcl90eXBlKGE9MSkKKyAgICAgICAgc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcsIHJhbmdlaXRlcl90eXBlLCAxLCAzLCAxKQogCi0gICAgICAgICMgcmFuZ2VpdGVyX25ldyB0YWtlcyBleGFjdGx5IDMgYXJndW1lbnRzCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcmFuZ2VpdGVyX3R5cGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcmFuZ2VpdGVyX3R5cGUsIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcmFuZ2VpdGVyX3R5cGUsIDEsIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcmFuZ2VpdGVyX3R5cGUsIDEsIDEsIDEsIDEpCisgICAgICAgIHdpdGggdGVzdC5zdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgICAgICAjIHJhbmdlaXRlcl9uZXcgZG9lc24ndCB0YWtlIGtleXdvcmQgYXJndW1lbnRzCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICAgICAgcmFuZ2VpdGVyX3R5cGUoYT0xKQogCi0gICAgICAgICMgc3RhcnQsIHN0b3AgYW5kIHN0b3AgbXVzdCBmaXQgaW4gQyBsb25nCi0gICAgICAgIGZvciBnb29kX3ZhbCBpbiBbX3Rlc3RjYXBpLkxPTkdfTUFYLCBfdGVzdGNhcGkuTE9OR19NSU5dOgotICAgICAgICAgICAgcmFuZ2VpdGVyX3R5cGUoZ29vZF92YWwsIGdvb2RfdmFsLCBnb29kX3ZhbCkKLSAgICAgICAgZm9yIGJhZF92YWwgaW4gW190ZXN0Y2FwaS5MT05HX01BWCArIDEsIF90ZXN0Y2FwaS5MT05HX01JTiAtIDFdOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlaXRlcl90eXBlLCBiYWRfdmFsLCAxLCAxKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlaXRlcl90eXBlLCAxLCBiYWRfdmFsLCAxKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlaXRlcl90eXBlLCAxLCAxLCBiYWRfdmFsKQorICAgICAgICAgICAgIyByYW5nZWl0ZXJfbmV3IHRha2VzIGV4YWN0bHkgMyBhcmd1bWVudHMKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcmFuZ2VpdGVyX3R5cGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHJhbmdlaXRlcl90eXBlLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCByYW5nZWl0ZXJfdHlwZSwgMSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcmFuZ2VpdGVyX3R5cGUsIDEsIDEsIDEsIDEpCiAKLSAgICAgICAgIyBzdGVwIG11c3RuJ3QgYmUgemVybwotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCByYW5nZWl0ZXJfdHlwZSwgMSwgMSwgMCkKKyAgICAgICAgICAgICMgc3RhcnQsIHN0b3AgYW5kIHN0b3AgbXVzdCBmaXQgaW4gQyBsb25nCisgICAgICAgICAgICBmb3IgZ29vZF92YWwgaW4gW190ZXN0Y2FwaS5MT05HX01BWCwgX3Rlc3RjYXBpLkxPTkdfTUlOXToKKyAgICAgICAgICAgICAgICByYW5nZWl0ZXJfdHlwZShnb29kX3ZhbCwgZ29vZF92YWwsIGdvb2RfdmFsKQorICAgICAgICAgICAgZm9yIGJhZF92YWwgaW4gW190ZXN0Y2FwaS5MT05HX01BWCArIDEsIF90ZXN0Y2FwaS5MT05HX01JTiAtIDFdOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2VpdGVyX3R5cGUsIGJhZF92YWwsIDEsIDEpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZWl0ZXJfdHlwZSwgMSwgYmFkX3ZhbCwgMSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlaXRlcl90eXBlLCAxLCAxLCBiYWRfdmFsKQorCisgICAgICAgICAgICAjIHN0ZXAgbXVzdG4ndCBiZSB6ZXJvCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCByYW5nZWl0ZXJfdHlwZSwgMSwgMSwgMCkKIAogICAgIGRlZiB0ZXN0X3NsaWNlKHNlbGYpOgogICAgICAgICBkZWYgY2hlY2soc3RhcnQsIHN0b3AsIHN0ZXA9Tm9uZSk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3JlLnB5IGIvTGliL3Rlc3QvdGVzdF9yZS5weQppbmRleCAwODM0ZmUwLi40YmRhYTRiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3JlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcmUucHkKQEAgLTMsMTMgKzMsMTMgQEAKIGltcG9ydCBpbwogaW1wb3J0IGxvY2FsZQogaW1wb3J0IHJlCi1mcm9tIHJlIGltcG9ydCBTY2FubmVyCiBpbXBvcnQgc3JlX2NvbXBpbGUKLWltcG9ydCBzcmVfY29uc3RhbnRzCi1pbXBvcnQgc3lzCiBpbXBvcnQgc3RyaW5nCitpbXBvcnQgc3lzCiBpbXBvcnQgdHJhY2ViYWNrCiBpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3YXJuaW5ncworZnJvbSByZSBpbXBvcnQgU2Nhbm5lcgogZnJvbSB3ZWFrcmVmIGltcG9ydCBwcm94eQogCiAjIE1pc2MgdGVzdHMgZnJvbSBUaW0gUGV0ZXJzJyByZS5kb2MKQEAgLTExNSwxMCArMTE1LDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcoLiknLCByZS5lc2NhcGUocyksICd4JyksIHMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcoLiknLCBsYW1iZGEgbTogcywgJ3gnKSwgcykKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKD9QPGE+eCknLCAnXGc8YT5cZzxhPicsICd4eCcpLCAneHh4eCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcoP1A8YT54KScsICdcZzxhPlxnPDE+JywgJ3h4JyksICd4eHh4JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJyg/UDx1bms+eCknLCAnXGc8dW5rPlxnPHVuaz4nLCAneHgnKSwgJ3h4eHgnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKD9QPHVuaz54KScsICdcZzwxPlxnPDE+JywgJ3h4JyksICd4eHh4JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJyg/UDxhPngpJywgcidcZzxhPlxnPGE+JywgJ3h4JyksICd4eHh4JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJyg/UDxhPngpJywgcidcZzxhPlxnPDE+JywgJ3h4JyksICd4eHh4JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJyg/UDx1bms+eCknLCByJ1xnPHVuaz5cZzx1bms+JywgJ3h4JyksICd4eHh4JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJyg/UDx1bms+eCknLCByJ1xnPDE+XGc8MT4nLCAneHgnKSwgJ3h4eHgnKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCdhJywgcidcdFxuXHZcclxmXGFcYicsICdhJyksICdcdFxuXHZcclxmXGFcYicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCdhJywgJ1x0XG5cdlxyXGZcYVxiJywgJ2EnKSwgJ1x0XG5cdlxyXGZcYVxiJykKQEAgLTEyOSwxMSArMTI5LDExIEBACiAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCdhJywgJ1xcJyArIGMsICdhJyksICdcXCcgKyBjKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCdeXHMqJywgJ1gnLCAndGVzdCcpLCAnWHRlc3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YihyJ15ccyonLCAnWCcsICd0ZXN0JyksICdYdGVzdCcpCiAKICAgICBkZWYgdGVzdF9idWdfNDQ5OTY0KHNlbGYpOgogICAgICAgICAjIGZhaWxzIGZvciBncm91cCBmb2xsb3dlZCBieSBvdGhlciBlc2NhcGUKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIocicoP1A8dW5rPngpJywgJ1xnPDE+XGc8MT5cXGInLCAneHgnKSwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIocicoP1A8dW5rPngpJywgcidcZzwxPlxnPDE+XGInLCAneHgnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAneHhcYnh4XGInKQogCiAgICAgZGVmIHRlc3RfYnVnXzQ0OTAwMChzZWxmKToKQEAgLTE4NiwxOCArMTg2LDE5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInb2N0YWwgZXNjYXBlIHZhbHVlIFw3Nzcgb3V0c2lkZSBvZiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIncmFuZ2UgMC0wbzM3NycsIDApCiAKLSAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1wxJywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnKQotICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDgnLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScpCi0gICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcOScsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJykKLSAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1wxMScsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJykKLSAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1wxOCcsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJykKLSAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1wxYScsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJykKLSAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1w5MCcsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJykKLSAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1w5OScsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJykKLSAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1wxMTgnLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScpICMgcidcMTEnICsgJzgnCi0gICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcMTFhJywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnKQotICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDE4MScsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJykgIyByJ1wxOCcgKyAnMScKLSAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1w4MDAnLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScpICMgcidcODAnICsgJzAnCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcMScsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlIDEnLCAxKQorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDgnLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZSA4JywgMSkKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1w5JywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UgOScsIDEpCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcMTEnLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZSAxMScsIDEpCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcMTgnLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZSAxOCcsIDEpCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcMWEnLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZSAxJywgMSkKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1w5MCcsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlIDkwJywgMSkKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1w5OScsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlIDk5JywgMSkKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1wxMTgnLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZSAxMScsIDEpCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcMTFhJywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UgMTEnLCAxKQorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDE4MScsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlIDE4JywgMSkKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1w4MDAnLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZSA4MCcsIDEpCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcOCcsICcnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UgOCcsIDEpCiAKICAgICAgICAgIyBpbiBweXRob24yLjMgKGV0YyksIHRoZXNlIGxvb3AgZW5kbGVzc2x5IGluIHNyZV9wYXJzZXIucHkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJygoKCgoKCgoKCgoeCkpKSkpKSkpKSkpJywgcidcMTEnLCAneCcpLCAneCcpCkBAIC0yMjEsMjYgKzIyMiwyNiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YigneCsnLCAnLScsICdhYnhkJyksICdhYi1kJykKIAogICAgIGRlZiB0ZXN0X3N5bWJvbGljX2dyb3VwcyhzZWxmKToKLSAgICAgICAgcmUuY29tcGlsZSgnKD9QPGE+eCkoP1A9YSkoPyhhKXkpJykKLSAgICAgICAgcmUuY29tcGlsZSgnKD9QPGExPngpKD9QPWExKSg/KGExKXkpJykKLSAgICAgICAgcmUuY29tcGlsZSgnKD9QPGExPngpXDEoPygxKXkpJykKLSAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPGE+KSg/UDxhPiknLAorICAgICAgICByZS5jb21waWxlKHInKD9QPGE+eCkoP1A9YSkoPyhhKXkpJykKKyAgICAgICAgcmUuY29tcGlsZShyJyg/UDxhMT54KSg/UD1hMSkoPyhhMSl5KScpCisgICAgICAgIHJlLmNvbXBpbGUocicoP1A8YTE+eClcMSg/KDEpeSknKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QPGE+KSg/UDxhPiknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWRlZmluaXRpb24gb2YgZ3JvdXAgbmFtZSAnYScgYXMgZ3JvdXAgMjsgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3YXMgZ3JvdXAgMSIpCi0gICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UDxhPig/UD1hKSknLAorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QPGE+KD9QPWEpKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNhbm5vdCByZWZlciB0byBhbiBvcGVuIGdyb3VwIiwgMTApCi0gICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UHh5KScsICd1bmtub3duIGV4dGVuc2lvbiA/UHgnKQotICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A8YT4pKD9QPWEnLCAnbWlzc2luZyApLCB1bnRlcm1pbmF0ZWQgbmFtZScsIDExKQotICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A9JywgJ21pc3NpbmcgZ3JvdXAgbmFtZScsIDQpCi0gICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UD0pJywgJ21pc3NpbmcgZ3JvdXAgbmFtZScsIDQpCi0gICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UD0xKScsICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJzEnIiwgNCkKLSAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPWEpJywgInVua25vd24gZ3JvdXAgbmFtZSAnYSciKQotICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A9YTEpJywgInVua25vd24gZ3JvdXAgbmFtZSAnYTEnIikKLSAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPWEuKScsICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJ2EuJyIsIDQpCi0gICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UDwpJywgJ21pc3NpbmcgPiwgdW50ZXJtaW5hdGVkIG5hbWUnLCA0KQotICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A8YScsICdtaXNzaW5nID4sIHVudGVybWluYXRlZCBuYW1lJywgNCkKLSAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPCcsICdtaXNzaW5nIGdyb3VwIG5hbWUnLCA0KQotICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A8PiknLCAnbWlzc2luZyBncm91cCBuYW1lJywgNCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UHh5KScsICd1bmtub3duIGV4dGVuc2lvbiA/UHgnKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QPGE+KSg/UD1hJywgJ21pc3NpbmcgKSwgdW50ZXJtaW5hdGVkIG5hbWUnLCAxMSkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UD0nLCAnbWlzc2luZyBncm91cCBuYW1lJywgNCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UD0pJywgJ21pc3NpbmcgZ3JvdXAgbmFtZScsIDQpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1A9MSknLCAiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICcxJyIsIDQpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1A9YSknLCAidW5rbm93biBncm91cCBuYW1lICdhJyIpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1A9YTEpJywgInVua25vd24gZ3JvdXAgbmFtZSAnYTEnIikKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UD1hLiknLCAiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICdhLiciLCA0KQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QPCknLCAnbWlzc2luZyA+LCB1bnRlcm1pbmF0ZWQgbmFtZScsIDQpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1A8YScsICdtaXNzaW5nID4sIHVudGVybWluYXRlZCBuYW1lJywgNCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UDwnLCAnbWlzc2luZyBncm91cCBuYW1lJywgNCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UDw+KScsICdtaXNzaW5nIGdyb3VwIG5hbWUnLCA0KQogICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QPDE+KScsICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJzEnIiwgNCkKICAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UDxhLj4pJywgImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAnYS4nIiwgNCkKICAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/KCcsICdtaXNzaW5nIGdyb3VwIG5hbWUnLCAzKQpAQCAtMjU5LDM1ICsyNjAsMzUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChwYXQsICd4Yzh5eicpLnNwYW4oKSwgKDAsIDUpKQogCiAgICAgZGVmIHRlc3Rfc3ltYm9saWNfcmVmcyhzZWxmKToKLSAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgJ1xnPGEnLCAneHgnLAorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCByJ1xnPGEnLCAneHgnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWlzc2luZyA+LCB1bnRlcm1pbmF0ZWQgbmFtZScsIDMpCi0gICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsICdcZzwnLCAneHgnLAorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCByJ1xnPCcsICd4eCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtaXNzaW5nIGdyb3VwIG5hbWUnLCAzKQotICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCAnXGcnLCAneHgnLCAnbWlzc2luZyA8JywgMikKLSAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgJ1xnPGEgYT4nLCAneHgnLAorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCByJ1xnJywgJ3h4JywgJ21pc3NpbmcgPCcsIDIpCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsIHInXGc8YSBhPicsICd4eCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJ2EgYSciLCAzKQotICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCAnXGc8PicsICd4eCcsCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsIHInXGc8PicsICd4eCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtaXNzaW5nIGdyb3VwIG5hbWUnLCAzKQotICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCAnXGc8MWExPicsICd4eCcsCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsIHInXGc8MWExPicsICd4eCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJzFhMSciLCAzKQogICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCByJ1xnPDI+JywgJ3h4JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlIDInLCAzKQogICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCByJ1wyJywgJ3h4JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlIDInLCAxKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoSW5kZXhFcnJvciwgInVua25vd24gZ3JvdXAgbmFtZSAnYWInIik6Ci0gICAgICAgICAgICByZS5zdWIoJyg/UDxhPngpJywgJ1xnPGFiPicsICd4eCcpCisgICAgICAgICAgICByZS5zdWIoJyg/UDxhPngpJywgcidcZzxhYj4nLCAneHgnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKD9QPGE+eCl8KD9QPGI+eSknLCByJ1xnPGI+JywgJ3h4JyksICcnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKD9QPGE+eCl8KD9QPGI+eSknLCByJ1wyJywgJ3h4JyksICcnKQotICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCAnXGc8LTE+JywgJ3h4JywKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgcidcZzwtMT4nLCAneHgnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICctMSciLCAzKQogICAgICAgICAjIE5ldyB2YWxpZC9pbnZhbGlkIGlkZW50aWZpZXJzIGluIFB5dGhvbiAzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcoP1A8wrU+eCknLCByJ1xnPMK1PicsICd4eCcpLCAneHgnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKD9QPPCdlJjwnZSr8J2UpvCdlKDwnZSs8J2UofCdlKI+eCknLCByJ1xnPPCdlJjwnZSr8J2UpvCdlKDwnZSs8J2UofCdlKI+JywgJ3h4JyksICd4eCcpCi0gICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsICdcZzzCqT4nLCAneHgnLAorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCByJ1xnPMKpPicsICd4eCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJ8KpJyIsIDMpCiAgICAgICAgICMgU3VwcG9ydCA+IDEwMCBncm91cHMuCiAgICAgICAgIHBhdCA9ICd8Jy5qb2luKCd4KD9QPGElZD4leCl5JyAlIChpLCBpKSBmb3IgaSBpbiByYW5nZSgxLCAyMDAgKyAxKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIocGF0LCAnXGc8MjAwPicsICd4Yzh5enhjOHknKSwgJ2M4emM4JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIocGF0LCByJ1xnPDIwMD4nLCAneGM4eXp4Yzh5JyksICdjOHpjOCcpCiAKICAgICBkZWYgdGVzdF9yZV9zdWJuKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1Ym4oIig/aSliKyIsICJ4IiwgImJiYmIgQkJCQiIpLCAoJ3ggeCcsIDIpKQpAQCAtNDE5LDE5ICs0MjAsNzcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXQubWF0Y2goJ2JjJykuZ3JvdXBzKCksICgnYicsIE5vbmUsICdiJywgJ2MnKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXQubWF0Y2goJ2JjJykuZ3JvdXBzKCIiKSwgKCdiJywgIiIsICdiJywgJ2MnKSkKIAotICAgICAgICAjIEEgc2luZ2xlIGdyb3VwCi0gICAgICAgIG0gPSByZS5tYXRjaCgnKGEpJywgJ2EnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uZ3JvdXAoMCksICdhJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLmdyb3VwKDApLCAnYScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5ncm91cCgxKSwgJ2EnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uZ3JvdXAoMSwgMSksICgnYScsICdhJykpCi0KICAgICAgICAgcGF0ID0gcmUuY29tcGlsZSgnKD86KD9QPGExPmEpfCg/UDxiMj5iKSkoP1A8YzM+Yyk/JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXQubWF0Y2goJ2EnKS5ncm91cCgxLCAyLCAzKSwgKCdhJywgTm9uZSwgTm9uZSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF0Lm1hdGNoKCdiJykuZ3JvdXAoJ2ExJywgJ2IyJywgJ2MzJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgKE5vbmUsICdiJywgTm9uZSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF0Lm1hdGNoKCdhYycpLmdyb3VwKDEsICdiMicsIDMpLCAoJ2EnLCBOb25lLCAnYycpKQogCisgICAgZGVmIHRlc3RfZ3JvdXAoc2VsZik6CisgICAgICAgIGNsYXNzIEluZGV4OgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbHVlKToKKyAgICAgICAgICAgICAgICBzZWxmLnZhbHVlID0gdmFsdWUKKyAgICAgICAgICAgIGRlZiBfX2luZGV4X18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYudmFsdWUKKyAgICAgICAgIyBBIHNpbmdsZSBncm91cAorICAgICAgICBtID0gcmUubWF0Y2goJyhhKShiKScsICdhYicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5ncm91cCgpLCAnYWInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uZ3JvdXAoMCksICdhYicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5ncm91cCgxKSwgJ2EnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uZ3JvdXAoSW5kZXgoMSkpLCAnYScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG0uZ3JvdXAsIC0xKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBtLmdyb3VwLCAzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBtLmdyb3VwLCAxPDwxMDAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBtLmdyb3VwLCBJbmRleCgxPDwxMDAwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbS5ncm91cCwgJ3gnKQorICAgICAgICAjIE11bHRpcGxlIGdyb3VwcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uZ3JvdXAoMiwgMSksICgnYicsICdhJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5ncm91cChJbmRleCgyKSwgSW5kZXgoMSkpLCAoJ2InLCAnYScpKQorCisgICAgZGVmIHRlc3RfbWF0Y2hfZ2V0aXRlbShzZWxmKToKKyAgICAgICAgcGF0ID0gcmUuY29tcGlsZSgnKD86KD9QPGExPmEpfCg/UDxiMj5iKSkoP1A8YzM+Yyk/JykKKworICAgICAgICBtID0gcGF0Lm1hdGNoKCdhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWydhMSddLCAnYScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsnYjInXSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWydjMyddLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdhMT17YTF9IGIyPXtiMn0gYzM9e2MzfScuZm9ybWF0X21hcChtKSwgJ2ExPWEgYjI9Tm9uZSBjMz1Ob25lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzBdLCAnYScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsxXSwgJ2EnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bMl0sIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVszXSwgTm9uZSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEluZGV4RXJyb3IsICdubyBzdWNoIGdyb3VwJyk6CisgICAgICAgICAgICBtWydYJ10KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEluZGV4RXJyb3IsICdubyBzdWNoIGdyb3VwJyk6CisgICAgICAgICAgICBtWy0xXQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoSW5kZXhFcnJvciwgJ25vIHN1Y2ggZ3JvdXAnKToKKyAgICAgICAgICAgIG1bNF0KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEluZGV4RXJyb3IsICdubyBzdWNoIGdyb3VwJyk6CisgICAgICAgICAgICBtWzAsIDFdCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChJbmRleEVycm9yLCAnbm8gc3VjaCBncm91cCcpOgorICAgICAgICAgICAgbVsoMCwpXQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoSW5kZXhFcnJvciwgJ25vIHN1Y2ggZ3JvdXAnKToKKyAgICAgICAgICAgIG1bKDAsIDEpXQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoS2V5RXJyb3IsICdhMicpOgorICAgICAgICAgICAgJ2ExPXthMn0nLmZvcm1hdF9tYXAobSkKKworICAgICAgICBtID0gcGF0Lm1hdGNoKCdhYycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsnYTEnXSwgJ2EnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bJ2IyJ10sIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsnYzMnXSwgJ2MnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdhMT17YTF9IGIyPXtiMn0gYzM9e2MzfScuZm9ybWF0X21hcChtKSwgJ2ExPWEgYjI9Tm9uZSBjMz1jJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzBdLCAnYWMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bMV0sICdhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzJdLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bM10sICdjJykKKworICAgICAgICAjIENhbm5vdCBhc3NpZ24uCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIG1bMF0gPSAxCisKKyAgICAgICAgIyBObyBsZW4oKS4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsZW4sIG0pCisKICAgICBkZWYgdGVzdF9yZV9mdWxsbWF0Y2goc2VsZik6CiAgICAgICAgICMgSXNzdWUgMTYyMDM6IFByb3Bvc2FsOiBhZGQgcmUuZnVsbG1hdGNoKCkgbWV0aG9kLgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLmZ1bGxtYXRjaChyImEiLCAiYSIpLnNwYW4oKSwgKDAsIDEpKQpAQCAtNDYzLDE5ICs1MjIsMTkgQEAKICAgICAgICAgICAgIHJlLmNvbXBpbGUociIuKj8iKS5mdWxsbWF0Y2goImFiY2QiLCBwb3M9MSwgZW5kcG9zPTMpLnNwYW4oKSwgKDEsIDMpKQogCiAgICAgZGVmIHRlc3RfcmVfZ3JvdXByZWZfZXhpc3RzKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCdeKFwoKT8oW14oKV0rKSg/KDEpXCkpJCcsICcoYSknKS5ncm91cHMoKSwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyJ14oXCgpPyhbXigpXSspKD8oMSlcKSkkJywgJyhhKScpLmdyb3VwcygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICgnKCcsICdhJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goJ14oXCgpPyhbXigpXSspKD8oMSlcKSkkJywgJ2EnKS5ncm91cHMoKSwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyJ14oXCgpPyhbXigpXSspKD8oMSlcKSkkJywgJ2EnKS5ncm91cHMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAoTm9uZSwgJ2EnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2goJ14oXCgpPyhbXigpXSspKD8oMSlcKSkkJywgJ2EpJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKCdeKFwoKT8oW14oKV0rKSg/KDEpXCkpJCcsICcoYScpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyJ14oXCgpPyhbXigpXSspKD8oMSlcKSkkJywgJ2EpJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHInXihcKCk/KFteKCldKykoPygxKVwpKSQnLCAnKGEnKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgnXig/OihhKXxjKSgoPygxKWJ8ZCkpJCcsICdhYicpLmdyb3VwcygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICgnYScsICdiJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goJ14oPzooYSl8YykoKD8oMSlifGQpKSQnLCAnY2QnKS5ncm91cHMoKSwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyJ14oPzooYSl8YykoKD8oMSlifGQpKSQnLCAnY2QnKS5ncm91cHMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAoTm9uZSwgJ2QnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgnXig/OihhKXxjKSgoPygxKXxkKSkkJywgJ2NkJykuZ3JvdXBzKCksCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gocideKD86KGEpfGMpKCg/KDEpfGQpKSQnLCAnY2QnKS5ncm91cHMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAoTm9uZSwgJ2QnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgnXig/OihhKXxjKSgoPygxKXxkKSkkJywgJ2EnKS5ncm91cHMoKSwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyJ14oPzooYSl8YykoKD8oMSl8ZCkpJCcsICdhJykuZ3JvdXBzKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhJywgJycpKQogCiAgICAgICAgICMgVGVzdHMgZm9yIGJ1ZyAjMTE3NzgzMTogZXhlcmNpc2UgZ3JvdXBzIG90aGVyIHRoYW4gdGhlIGZpcnN0IGdyb3VwCkBAIC01MDAsMTAgKzU1OSwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0d28gYnJhbmNoZXMnLCAxMCkKIAogICAgIGRlZiB0ZXN0X3JlX2dyb3VwcmVmX292ZXJmbG93KHNlbGYpOgotICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKCknLCAnXGc8JXM+JyAlIHNyZV9jb25zdGFudHMuTUFYR1JPVVBTLCAneHgnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnLCAzKQotICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QPGE+KSg/KCVkKSknICUgc3JlX2NvbnN0YW50cy5NQVhHUk9VUFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJywgMTApCisgICAgICAgIGZyb20gc3JlX2NvbnN0YW50cyBpbXBvcnQgTUFYR1JPVVBTCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoKScsIHInXGc8JXM+JyAlIE1BWEdST1VQUywgJ3h4JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlICVkJyAlIE1BWEdST1VQUywgMykKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UDxhPikoPyglZCkpJyAlIE1BWEdST1VQUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW52YWxpZCBncm91cCByZWZlcmVuY2UgJWQnICUgTUFYR1JPVVBTLCAxMCkKIAogICAgIGRlZiB0ZXN0X3JlX2dyb3VwcmVmKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHInXihcfCk/KFteKCldKylcMSQnLCAnfGF8JykuZ3JvdXBzKCksCkBAIC01MzUsMzcgKzU5NSwzNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICIgIikKIAogICAgIGRlZiB0ZXN0X3JlcGVhdF9taW5tYXgoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKCJeKFx3KXsxfSQiLCAiYWJjIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKCJeKFx3KXsxfT8kIiwgImFiYyIpKQotICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaCgiXihcdyl7MSwyfSQiLCAiYWJjIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKCJeKFx3KXsxLDJ9PyQiLCAiYWJjIikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHIiXihcdyl7MX0kIiwgImFiYyIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyIl4oXHcpezF9PyQiLCAiYWJjIikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHIiXihcdyl7MSwyfSQiLCAiYWJjIikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHIiXihcdyl7MSwyfT8kIiwgImFiYyIpKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goIl4oXHcpezN9JCIsICJhYmMiKS5ncm91cCgxKSwgImMiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCJeKFx3KXsxLDN9JCIsICJhYmMiKS5ncm91cCgxKSwgImMiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCJeKFx3KXsxLDR9JCIsICJhYmMiKS5ncm91cCgxKSwgImMiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCJeKFx3KXszLDR9PyQiLCAiYWJjIikuZ3JvdXAoMSksICJjIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgiXihcdyl7M30/JCIsICJhYmMiKS5ncm91cCgxKSwgImMiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCJeKFx3KXsxLDN9PyQiLCAiYWJjIikuZ3JvdXAoMSksICJjIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgiXihcdyl7MSw0fT8kIiwgImFiYyIpLmdyb3VwKDEpLCAiYyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goIl4oXHcpezMsNH0/JCIsICJhYmMiKS5ncm91cCgxKSwgImMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiXihcdyl7M30kIiwgImFiYyIpLmdyb3VwKDEpLCAiYyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociJeKFx3KXsxLDN9JCIsICJhYmMiKS5ncm91cCgxKSwgImMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiXihcdyl7MSw0fSQiLCAiYWJjIikuZ3JvdXAoMSksICJjIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyIl4oXHcpezMsNH0/JCIsICJhYmMiKS5ncm91cCgxKSwgImMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiXihcdyl7M30/JCIsICJhYmMiKS5ncm91cCgxKSwgImMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiXihcdyl7MSwzfT8kIiwgImFiYyIpLmdyb3VwKDEpLCAiYyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociJeKFx3KXsxLDR9PyQiLCAiYWJjIikuZ3JvdXAoMSksICJjIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyIl4oXHcpezMsNH0/JCIsICJhYmMiKS5ncm91cCgxKSwgImMiKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKCJeeHsxfSQiLCAieHh4IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKCJeeHsxfT8kIiwgInh4eCIpKQotICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaCgiXnh7MSwyfSQiLCAieHh4IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKCJeeHsxLDJ9PyQiLCAieHh4IikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHIiXnh7MX0kIiwgInh4eCIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyIl54ezF9PyQiLCAieHh4IikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHIiXnh7MSwyfSQiLCAieHh4IikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHIiXnh7MSwyfT8kIiwgInh4eCIpKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgiXnh7M30kIiwgInh4eCIpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goIl54ezEsM30kIiwgInh4eCIpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goIl54ezMsM30kIiwgInh4eCIpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goIl54ezEsNH0kIiwgInh4eCIpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goIl54ezMsNH0/JCIsICJ4eHgiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCJeeHszfT8kIiwgInh4eCIpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goIl54ezEsM30/JCIsICJ4eHgiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCJeeHsxLDR9PyQiLCAieHh4IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgiXnh7Myw0fT8kIiwgInh4eCIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gociJeeHszfSQiLCAieHh4IikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyIl54ezEsM30kIiwgInh4eCIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gociJeeHszLDN9JCIsICJ4eHgiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHIiXnh7MSw0fSQiLCAieHh4IikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyIl54ezMsNH0/JCIsICJ4eHgiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHIiXnh7M30/JCIsICJ4eHgiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHIiXnh7MSwzfT8kIiwgInh4eCIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gociJeeHsxLDR9PyQiLCAieHh4IikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyIl54ezMsNH0/JCIsICJ4eHgiKSkKIAotICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaCgiXnh7fSQiLCAieHh4IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgiXnh7fSQiLCAieHt9IikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHIiXnh7fSQiLCAieHh4IikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyIl54e30kIiwgInh7fSIpKQogCiAgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3Iocid4ezIsMX0nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtaW4gcmVwZWF0IGdyZWF0ZXIgdGhhbiBtYXggcmVwZWF0JywgMikKQEAgLTYzOCwxNCArNjk4LDEwIEBACiAgICAgICAgIHJlLnB1cmdlKCkgICMgZm9yIHdhcm5pbmdzCiAgICAgICAgIGZvciBjIGluICdjZWdoaWprbG1vcHF5ekNFRkdISUpLTE1OT1BRUlRWWFknOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoYyk6Ci0gICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuZnVsbG1hdGNoKCdcXCVjJyAlIGMsIGMpLmdyb3VwKCksIGMpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKCdcXCVjJyAlIGMsICdhJykpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLmNvbXBpbGUsICdcXCVjJyAlIGMpCiAgICAgICAgIGZvciBjIGluICdjZWdoaWprbG1vcHF5ekFCQ0VGR0hJSktMTU5PUFFSVFZYWVonOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoYyk6Ci0gICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuZnVsbG1hdGNoKCdbXFwlY10nICUgYywgYykuZ3JvdXAoKSwgYykKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2goJ1tcXCVjXScgJSBjLCAnYScpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5jb21waWxlLCAnW1xcJWNdJyAlIGMpCiAKICAgICBkZWYgdGVzdF9zdHJpbmdfYm91bmRhcmllcyhzZWxmKToKICAgICAgICAgIyBTZWUgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTEwNzEzCkBAIC02OTIsMTAgKzc0OCwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICJhXG5cbmIiKQogCiAgICAgZGVmIHRlc3RfbG9va2FoZWFkKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCIoYSg/PVxzW15hXSkpIiwgImEgYiIpLmdyb3VwKDEpLCAiYSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goIihhKD89XHNbXmFdKikpIiwgImEgYiIpLmdyb3VwKDEpLCAiYSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goIihhKD89XHNbYWJjXSkpIiwgImEgYiIpLmdyb3VwKDEpLCAiYSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goIihhKD89XHNbYWJjXSopKSIsICJhIGJjIikuZ3JvdXAoMSksICJhIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyIihhKD89XHNbXmFdKSkiLCAiYSBiIikuZ3JvdXAoMSksICJhIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyIihhKD89XHNbXmFdKikpIiwgImEgYiIpLmdyb3VwKDEpLCAiYSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociIoYSg/PVxzW2FiY10pKSIsICJhIGIiKS5ncm91cCgxKSwgImEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiKGEoPz1cc1thYmNdKikpIiwgImEgYmMiKS5ncm91cCgxKSwgImEiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiKGEpKD89XHNcMSkiLCAiYSBhIikuZ3JvdXAoMSksICJhIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyIihhKSg/PVxzXDEqKSIsICJhIGFhIikuZ3JvdXAoMSksICJhIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyIihhKSg/PVxzKGFiY3xhKSkiLCAiYSBhIikuZ3JvdXAoMSksICJhIikKQEAgLTg0MywxMiArODk5LDEyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goYiJhYmMiLCBiIkFCQyIsIHJlLkl8cmUuTCkuZ3JvdXAoMCksIGIiQUJDIikKIAogICAgIGRlZiB0ZXN0X25vdF9saXRlcmFsKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNlYXJjaCgiXHMoW15hXSkiLCAiIGIiKS5ncm91cCgxKSwgImIiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNlYXJjaCgiXHMoW15hXSopIiwgIiBiYiIpLmdyb3VwKDEpLCAiYmIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNlYXJjaChyIlxzKFteYV0pIiwgIiBiIikuZ3JvdXAoMSksICJiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zZWFyY2gociJccyhbXmFdKikiLCAiIGJiIikuZ3JvdXAoMSksICJiYiIpCiAKICAgICBkZWYgdGVzdF9zZWFyY2hfY292ZXJhZ2Uoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc2VhcmNoKCJccyhiKSIsICIgYiIpLmdyb3VwKDEpLCAiYiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc2VhcmNoKCJhXHMiLCAiYSAiKS5ncm91cCgwKSwgImEgIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zZWFyY2gociJccyhiKSIsICIgYiIpLmdyb3VwKDEpLCAiYiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc2VhcmNoKHIiYVxzIiwgImEgIikuZ3JvdXAoMCksICJhICIpCiAKICAgICBkZWYgYXNzZXJ0TWF0Y2goc2VsZiwgcGF0dGVybiwgdGV4dCwgbWF0Y2g9Tm9uZSwgc3Bhbj1Ob25lLAogICAgICAgICAgICAgICAgICAgICBtYXRjaGVyPXJlLm1hdGNoKToKQEAgLTk1Myw3ICsxMDA5LDcgQEAKICAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyIlw1NjciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInb2N0YWwgZXNjYXBlIHZhbHVlIFw1Njcgb3V0c2lkZSBvZiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidyYW5nZSAwLTBvMzc3JywgMCkKLSAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyIlw5MTEiLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnLCAwKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHIiXDkxMSIsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZSA5MScsIDEpCiAgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IociJceDEiLCByJ2luY29tcGxldGUgZXNjYXBlIFx4MScsIDApCiAgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IociJceDF6IiwgcidpbmNvbXBsZXRlIGVzY2FwZSBceDEnLCAwKQogICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHIiXHUxMjMiLCByJ2luY29tcGxldGUgZXNjYXBlIFx1MTIzJywgMCkKQEAgLTk5OCwxMCArMTA1NCw4IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goKHIiXHglMDJ4IiAlIGkpLmVuY29kZSgpLCBieXRlcyhbaV0pKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgociJceCUwMngwIiAlIGkpLmVuY29kZSgpLCBieXRlcyhbaV0pK2IiMCIpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKChyIlx4JTAyeHoiICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkrYiJ6IikpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKGJyIlx1MTIzNCIsIGIndTEyMzQnKSkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goYnIiXFUwMDAxMjM0NSIsIGInVTAwMDEyMzQ1JykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5jb21waWxlLCBiciJcdTEyMzQiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuY29tcGlsZSwgYnIiXFUwMDAxMjM0NSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChiciJcMCIsIGIiXDAwMCIpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goYnIiXDA4IiwgYiJcMDAwOCIpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goYnIiXDAxIiwgYiJcMDAxIikpCkBAIC0xMDA5LDcgKzEwNjMsNyBAQAogICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKGJyIlw1NjciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInb2N0YWwgZXNjYXBlIHZhbHVlIFw1Njcgb3V0c2lkZSBvZiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidyYW5nZSAwLTBvMzc3JywgMCkKLSAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihiciJcOTExIiwgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJywgMCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihiciJcOTExIiwgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlIDkxJywgMSkKICAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihiciJceDEiLCByJ2luY29tcGxldGUgZXNjYXBlIFx4MScsIDApCiAgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoYnIiXHgxeiIsIHInaW5jb21wbGV0ZSBlc2NhcGUgXHgxJywgMCkKIApAQCAtMTAyMywxMCArMTA3Nyw4IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goKHIiW1x4JTAyeF0iICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKChyIltceCUwMngwXSIgJSBpKS5lbmNvZGUoKSwgYnl0ZXMoW2ldKSkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goKHIiW1x4JTAyeHpdIiAlIGkpLmVuY29kZSgpLCBieXRlcyhbaV0pKSkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goYnIiW1x1MTIzNF0iLCBiJ3UnKSkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goYnIiW1xVMDAwMTIzNDVdIiwgYidVJykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5jb21waWxlLCBiciJbXHUxMjM0XSIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5jb21waWxlLCBiciJbXFUwMDAxMjM0NV0iKQogICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKGJyIltcNTY3XSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidvY3RhbCBlc2NhcGUgdmFsdWUgXDU2NyBvdXRzaWRlIG9mICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ3JhbmdlIDAtMG8zNzcnLCAxKQpAQCAtMTA1NCw4ICsxMTA2LDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gocicoYSk/YScsJ2EnKS5sYXN0aW5kZXgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gocicoYSkoYik/YicsJ2FiJykubGFzdGluZGV4LCAxKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHInKD9QPGE+YSkoP1A8Yj5iKT9iJywnYWInKS5sYXN0Z3JvdXAsICdhJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgiKD9QPGE+YShiKSkiLCAiYWIiKS5sYXN0Z3JvdXAsICdhJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgiKChhKSkiLCAiYSIpLmxhc3RpbmRleCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyIig/UDxhPmEoYikpIiwgImFiIikubGFzdGdyb3VwLCAnYScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociIoKGEpKSIsICJhIikubGFzdGluZGV4LCAxKQogCiAgICAgZGVmIHRlc3RfYnVnXzQxODYyNihzZWxmKToKICAgICAgICAgIyBidWdzIDQxODYyNiBhdCBhbC4gLS0gVGVzdGluZyBHcmVnIENoYXBtYW4ncyBhZGRpdGlvbiBvZiBvcCBjb2RlCkBAIC0xMjI3LDcgKzEyNzksNyBAQAogICAgICAgICAgICAgJ1x1ZmYxMCcsICMgJ1xOe0ZVTExXSURUSCBESUdJVCBaRVJPfScsIGNhdGVnb3J5ICdOZCcKICAgICAgICAgICAgIF0KICAgICAgICAgZm9yIHggaW4gZGVjaW1hbF9kaWdpdHM6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCdeXGQkJywgeCkuZ3JvdXAoMCksIHgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHInXlxkJCcsIHgpLmdyb3VwKDApLCB4KQogCiAgICAgICAgIG5vdF9kZWNpbWFsX2RpZ2l0cyA9IFsKICAgICAgICAgICAgICdcdTIxNjUnLCAjICdcTntST01BTiBOVU1FUkFMIFNJWH0nLCBjYXRlZ29yeSAnTmwnCkBAIC0xMjM2LDcgKzEyODgsNyBAQAogICAgICAgICAgICAgJ1x1MzJiNCcsICMgJ1xOe0NJUkNMRUQgTlVNQkVSIFRISVJUWSBOSU5FfScsIGNhdGVnb3J5ICdObycKICAgICAgICAgICAgIF0KICAgICAgICAgZm9yIHggaW4gbm90X2RlY2ltYWxfZGlnaXRzOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2goJ15cZCQnLCB4KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHInXlxkJCcsIHgpKQogCiAgICAgZGVmIHRlc3RfZW1wdHlfYXJyYXkoc2VsZik6CiAgICAgICAgICMgU0YgYnVmIDE2NDc1NDEKQEAgLTEyNzgsNiArMTMzMCwyMiBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goJyg/aXh1KSAnICsgdXBwZXJfY2hhciwgbG93ZXJfY2hhcikpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgnKD9peHUpICcgKyBsb3dlcl9jaGFyLCB1cHBlcl9jaGFyKSkKIAorICAgICAgICBwID0gdXBwZXJfY2hhciArICcoP2kpJworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKSBhcyB3YXJuczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChwLCBsb3dlcl9jaGFyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHN0cih3YXJucy53YXJuaW5nc1swXS5tZXNzYWdlKSwKKyAgICAgICAgICAgICdGbGFncyBub3QgYXQgdGhlIHN0YXJ0IG9mIHRoZSBleHByZXNzaW9uICVzJyAlIHAKKyAgICAgICAgKQorCisgICAgICAgIHAgPSB1cHBlcl9jaGFyICsgJyg/aSklcycgJSAoJy4/JyAqIDEwMCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZykgYXMgd2FybnM6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gocCwgbG93ZXJfY2hhcikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHIod2FybnMud2FybmluZ3NbMF0ubWVzc2FnZSksCisgICAgICAgICAgICAnRmxhZ3Mgbm90IGF0IHRoZSBzdGFydCBvZiB0aGUgZXhwcmVzc2lvbiAlcyAodHJ1bmNhdGVkKScgJSBwWzoyMF0KKyAgICAgICAgKQorCiAgICAgZGVmIHRlc3RfZG9sbGFyX21hdGNoZXNfdHdpY2Uoc2VsZik6CiAgICAgICAgICIkIG1hdGNoZXMgdGhlIGVuZCBvZiBzdHJpbmcsIGFuZCBqdXN0IGJlZm9yZSB0aGUgdGVybWluYXRpbmcgXG4iCiAgICAgICAgIHBhdHRlcm4gPSByZS5jb21waWxlKCckJykKQEAgLTEzMDgsMjkgKzEzNzYsMjkgQEAKICAgICAgICAgZm9yIGZsYWdzIGluICgwLCByZS5VTklDT0RFKToKICAgICAgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoJ1x4YzAnLCBmbGFncyB8IHJlLklHTk9SRUNBU0UpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocGF0Lm1hdGNoKCdceGUwJykpCi0gICAgICAgICAgICBwYXQgPSByZS5jb21waWxlKCdcdycsIGZsYWdzKQorICAgICAgICAgICAgcGF0ID0gcmUuY29tcGlsZShyJ1x3JywgZmxhZ3MpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocGF0Lm1hdGNoKCdceGUwJykpCiAgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoJ1x4YzAnLCByZS5BU0NJSSB8IHJlLklHTk9SRUNBU0UpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHBhdC5tYXRjaCgnXHhlMCcpKQogICAgICAgICBwYXQgPSByZS5jb21waWxlKCcoP2EpXHhjMCcsIHJlLklHTk9SRUNBU0UpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHBhdC5tYXRjaCgnXHhlMCcpKQotICAgICAgICBwYXQgPSByZS5jb21waWxlKCdcdycsIHJlLkFTQ0lJKQorICAgICAgICBwYXQgPSByZS5jb21waWxlKHInXHcnLCByZS5BU0NJSSkKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocGF0Lm1hdGNoKCdceGUwJykpCi0gICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoJyg/YSlcdycpCisgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUocicoP2EpXHcnKQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwYXQubWF0Y2goJ1x4ZTAnKSkKICAgICAgICAgIyBCeXRlcyBwYXR0ZXJucwogICAgICAgICBmb3IgZmxhZ3MgaW4gKDAsIHJlLkFTQ0lJKToKICAgICAgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoYidceGMwJywgZmxhZ3MgfCByZS5JR05PUkVDQVNFKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocGF0Lm1hdGNoKGInXHhlMCcpKQotICAgICAgICAgICAgcGF0ID0gcmUuY29tcGlsZShiJ1x3JywgZmxhZ3MpCisgICAgICAgICAgICBwYXQgPSByZS5jb21waWxlKGJyJ1x3JywgZmxhZ3MpCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwYXQubWF0Y2goYidceGUwJykpCiAgICAgICAgICMgSW5jb21wYXRpYmlsaXRpZXMKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgYidcdycsIHJlLlVOSUNPREUpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJlLmNvbXBpbGUsIGInKD91KVx3JykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgJ1x3JywgcmUuVU5JQ09ERSB8IHJlLkFTQ0lJKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCByZS5jb21waWxlLCAnKD91KVx3JywgcmUuQVNDSUkpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJlLmNvbXBpbGUsICcoP2EpXHcnLCByZS5VTklDT0RFKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCByZS5jb21waWxlLCAnKD9hdSlcdycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJlLmNvbXBpbGUsIGJyJ1x3JywgcmUuVU5JQ09ERSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgYnInKD91KVx3JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgcidcdycsIHJlLlVOSUNPREUgfCByZS5BU0NJSSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgcicoP3UpXHcnLCByZS5BU0NJSSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgcicoP2EpXHcnLCByZS5VTklDT0RFKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCByZS5jb21waWxlLCByJyg/YXUpXHcnKQogCiAgICAgZGVmIHRlc3RfbG9jYWxlX2ZsYWcoc2VsZik6CiAgICAgICAgIGltcG9ydCBsb2NhbGUKQEAgLTEzNjEsMjcgKzE0MjksNTkgQEAKICAgICAgICAgcGF0ID0gcmUuY29tcGlsZShicGF0LCByZS5JR05PUkVDQVNFKQogICAgICAgICBpZiBibGV0dGVyOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocGF0Lm1hdGNoKGJsZXR0ZXIpKQotICAgICAgICBwYXQgPSByZS5jb21waWxlKGInXHcnLCByZS5MT0NBTEUpCisgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoYnInXHcnLCByZS5MT0NBTEUpCiAgICAgICAgIGlmIGJsZXR0ZXI6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocGF0Lm1hdGNoKGJsZXR0ZXIpKQotICAgICAgICBwYXQgPSByZS5jb21waWxlKGInKD9MKVx3JykKKyAgICAgICAgcGF0ID0gcmUuY29tcGlsZShicicoP0wpXHcnKQogICAgICAgICBpZiBibGV0dGVyOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhdC5tYXRjaChibGV0dGVyKSkKLSAgICAgICAgcGF0ID0gcmUuY29tcGlsZShiJ1x3JykKKyAgICAgICAgcGF0ID0gcmUuY29tcGlsZShicidcdycpCiAgICAgICAgIGlmIGJsZXR0ZXI6CiAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwYXQubWF0Y2goYmxldHRlcikpCiAgICAgICAgICMgSW5jb21wYXRpYmlsaXRpZXMKLSAgICAgICAgc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcsIHJlLmNvbXBpbGUsICcnLCByZS5MT0NBTEUpCi0gICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nLCByZS5jb21waWxlLCAnKD9MKScpCi0gICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nLCByZS5jb21waWxlLCBiJycsIHJlLkxPQ0FMRSB8IHJlLkFTQ0lJKQotICAgICAgICBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZywgcmUuY29tcGlsZSwgYicoP0wpJywgcmUuQVNDSUkpCi0gICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nLCByZS5jb21waWxlLCBiJyg/YSknLCByZS5MT0NBTEUpCi0gICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nLCByZS5jb21waWxlLCBiJyg/YUwpJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgJycsIHJlLkxPQ0FMRSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgJyg/TCknKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCByZS5jb21waWxlLCBiJycsIHJlLkxPQ0FMRSB8IHJlLkFTQ0lJKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCByZS5jb21waWxlLCBiJyg/TCknLCByZS5BU0NJSSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgYicoP2EpJywgcmUuTE9DQUxFKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCByZS5jb21waWxlLCBiJyg/YUwpJykKKworICAgIGRlZiB0ZXN0X3Njb3BlZF9mbGFncyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHInKD9pOmEpYicsICdBYicpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyJyg/aTphKWInLCAnYUInKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gocicoPy1pOmEpYicsICdBYicsIHJlLklHTk9SRUNBU0UpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gocicoPy1pOmEpYicsICdhQicsIHJlLklHTk9SRUNBU0UpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyJyg/aTooPy1pOmEpYiknLCAnQWInKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHInKD9pOig/LWk6YSliKScsICdhQicpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyJyg/eDogYSkgYicsICdhIGInKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gocicoP3g6IGEpIGInLCAnIGEgYicpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gocicoPy14OiBhKSBiJywgJyBhYicsIHJlLlZFUkJPU0UpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyJyg/LXg6IGEpIGInLCAnYWInLCByZS5WRVJCT1NFKSkKKworICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9hOlx3KScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhZCBpbmxpbmUgZmxhZ3M6IGNhbm5vdCB0dXJuIG9uIGdsb2JhbCBmbGFnJywgMykKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/YSkoPy1hOlx3KScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhZCBpbmxpbmUgZmxhZ3M6IGNhbm5vdCB0dXJuIG9mZiBnbG9iYWwgZmxhZycsIDgpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP2ktaTphKScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhZCBpbmxpbmUgZmxhZ3M6IGZsYWcgdHVybmVkIG9uIGFuZCBvZmYnLCA1KQorCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoPy0nLCAnbWlzc2luZyBmbGFnJywgMykKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/LSsnLCAnbWlzc2luZyBmbGFnJywgMykKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/LXonLCAndW5rbm93biBmbGFnJywgMykKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/LWknLCAnbWlzc2luZyA6JywgNCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/LWkpJywgJ21pc3NpbmcgOicsIDQpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoPy1pKycsICdtaXNzaW5nIDonLCA0KQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD8taXonLCAndW5rbm93biBmbGFnJywgNCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/aTonLCAnbWlzc2luZyApLCB1bnRlcm1pbmF0ZWQgc3VicGF0dGVybicsIDApCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP2knLCAnbWlzc2luZyAtLCA6IG9yICknLCAzKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9pKycsICdtaXNzaW5nIC0sIDogb3IgKScsIDMpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP2l6JywgJ3Vua25vd24gZmxhZycsIDMpCiAKICAgICBkZWYgdGVzdF9idWdfNjUwOShzZWxmKToKICAgICAgICAgIyBSZXBsYWNlbWVudCBzdHJpbmdzIG9mIGJvdGggdHlwZXMgbXVzdCBwYXJzZSBwcm9wZXJseS4KICAgICAgICAgIyBhbGwgc3RyaW5ncwotICAgICAgICBwYXQgPSByZS5jb21waWxlKCdhKFx3KScpCisgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUocidhKFx3KScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF0LnN1YignYlxcMScsICdhYycpLCAnYmMnKQogICAgICAgICBwYXQgPSByZS5jb21waWxlKCdhKC4pJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXQuc3ViKCdiXFwxJywgJ2FcdTEyMzQnKSwgJ2JcdTEyMzQnKQpAQCAtMTM4OSw3ICsxNDg5LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXQuc3ViKGxhbWJkYSBtOiAnc3RyJywgJ2E1JyksICdzdHInKQogCiAgICAgICAgICMgYWxsIGJ5dGVzCi0gICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoYidhKFx3KScpCisgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoYnInYShcdyknKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhdC5zdWIoYidiXFwxJywgYidhYycpLCBiJ2JjJykKICAgICAgICAgcGF0ID0gcmUuY29tcGlsZShiJ2EoLiknKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhdC5zdWIoYidiXFwxJywgYidhXHhDRCcpLCBiJ2JceENEJykKQEAgLTE0MjcsMTMgKzE1MjcsNiBAQAogICAgICAgICAjIFRlc3QgYmVoYXZpb3VyIHdoZW4gbm90IGdpdmVuIGEgc3RyaW5nIG9yIHBhdHRlcm4gYXMgcGFyYW1ldGVyCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcmUuY29tcGlsZSwgMCkKIAotICAgIGRlZiB0ZXN0X2J1Z18xMzg5OShzZWxmKToKLSAgICAgICAgIyBJc3N1ZSAjMTM4OTk6IHJlIHBhdHRlcm4gciJbXEFdIiBzaG91bGQgd29yayBsaWtlICJBIiBidXQgbWF0Y2hlcwotICAgICAgICAjIG5vdGhpbmcuIERpdHRvIEIgYW5kIFouCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5maW5kYWxsKHInW1xBXEJcYlxDXFpdJywgJ0FCXGJDWicpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ0EnLCAnQicsICdcYicsICdDJywgJ1onXSkKLQogICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHLCBtZW11c2U9MSkKICAgICBkZWYgdGVzdF9sYXJnZV9zZWFyY2goc2VsZiwgc2l6ZSk6CiAgICAgICAgICMgSXNzdWUgIzEwMTgyOiBpbmRpY2VzIHdlcmUgMzItYml0LXRydW5jYXRlZC4KQEAgLTE1MTgsNyArMTYxMSw3IEBACiAgICAgICAgIGZvciBzdHJpbmcgaW4gKGInW2FicmFjYWRhYnJhXScsIEIoYidbYWJyYWNhZGFicmFdJyksCiAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVhcnJheShiJ1thYnJhY2FkYWJyYV0nKSwKICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5dmlldyhiJ1thYnJhY2FkYWJyYV0nKSk6Ci0gICAgICAgICAgICBtID0gcmUuc2VhcmNoKHJiJyguKykoLio/KVwxJywgc3RyaW5nKQorICAgICAgICAgICAgbSA9IHJlLnNlYXJjaChicicoLispKC4qPylcMScsIHN0cmluZykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihtKSwgIjwlcy4lcyBvYmplY3Q7ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwYW49KDEsIDEyKSwgbWF0Y2g9YidhYnJhY2FkYWJyYSc+IiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0eXBlKG0pLl9fbW9kdWxlX18sIHR5cGUobSkuX19xdWFsbmFtZV9fKSkKQEAgLTE1NDcsOSArMTY0MCw5IEBACiAgICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0OgogICAgICAgICAgICAgcmUuY29tcGlsZShwYXQsIHJlLkRFQlVHKQogICAgICAgICBkdW1wID0gJycnXAotU1VCUEFUVEVSTiAxCitTVUJQQVRURVJOIDEgMCAwCiAgIExJVEVSQUwgNDYKLVNVQlBBVFRFUk4gTm9uZQorU1VCUEFUVEVSTiBOb25lIDAgMAogICBCUkFOQ0gKICAgICBJTgogICAgICAgTElURVJBTCA5OQpAQCAtMTU1Nyw3ICsxNjUwLDcgQEAKICAgT1IKICAgICBMSVRFUkFMIDExMgogICAgIExJVEVSQUwgMTIxCi1TVUJQQVRURVJOIE5vbmUKK1NVQlBBVFRFUk4gTm9uZSAwIDAKICAgR1JPVVBSRUZfRVhJU1RTIDEKICAgICBBVCBBVF9FTkQKICAgRUxTRQpAQCAtMTY3MywxMiArMTc2Niw2NCBAQAogICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QJywgJ3VuZXhwZWN0ZWQgZW5kIG9mIHBhdHRlcm4nLCAzKQogICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD96KScsICd1bmtub3duIGV4dGVuc2lvbiA/eicsIDEpCiAgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP2l6KScsICd1bmtub3duIGZsYWcnLCAzKQotICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9pJywgJ21pc3NpbmcgKScsIDMpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP2knLCAnbWlzc2luZyAtLCA6IG9yICknLCAzKQogICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD8jYWJjJywgJ21pc3NpbmcgKSwgdW50ZXJtaW5hdGVkIGNvbW1lbnQnLCAwKQogICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD88JywgJ3VuZXhwZWN0ZWQgZW5kIG9mIHBhdHRlcm4nLCAzKQogICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD88PiknLCAndW5rbm93biBleHRlbnNpb24gPzw+JywgMSkKICAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/JywgJ3VuZXhwZWN0ZWQgZW5kIG9mIHBhdHRlcm4nLCAyKQogCisgICAgZGVmIHRlc3RfZW51bShzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMjgwODI6IENoZWNrIHRoYXQgc3RyKGZsYWcpIHJldHVybnMgYSBodW1hbiByZWFkYWJsZSBzdHJpbmcKKyAgICAgICAgIyBpbnN0ZWFkIG9mIGFuIGludGVnZXIKKyAgICAgICAgc2VsZi5hc3NlcnRJbignQVNDSUknLCBzdHIocmUuQSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0RPVEFMTCcsIHN0cihyZS5TKSkKKworICAgIGRlZiB0ZXN0X3BhdHRlcm5fY29tcGFyZShzZWxmKToKKyAgICAgICAgcGF0dGVybjEgPSByZS5jb21waWxlKCdhYmMnLCByZS5JR05PUkVDQVNFKQorCisgICAgICAgICMgZXF1YWwgdG8gaXRzZWxmCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF0dGVybjEsIHBhdHRlcm4xKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHBhdHRlcm4xICE9IHBhdHRlcm4xKQorCisgICAgICAgICMgZXF1YWwKKyAgICAgICAgcmUucHVyZ2UoKQorICAgICAgICBwYXR0ZXJuMiA9IHJlLmNvbXBpbGUoJ2FiYycsIHJlLklHTk9SRUNBU0UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChwYXR0ZXJuMiksIGhhc2gocGF0dGVybjEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhdHRlcm4yLCBwYXR0ZXJuMSkKKworICAgICAgICAjIG5vdCBlcXVhbDogZGlmZmVyZW50IHBhdHRlcm4KKyAgICAgICAgcmUucHVyZ2UoKQorICAgICAgICBwYXR0ZXJuMyA9IHJlLmNvbXBpbGUoJ1hZWicsIHJlLklHTk9SRUNBU0UpCisgICAgICAgICMgRG9uJ3QgdGVzdCBoYXNoKHBhdHRlcm4zKSAhPSBoYXNoKHBhdHRlcm4xKSBiZWNhdXNlIHRoZXJlIGlzIG5vCisgICAgICAgICMgd2FycmFudHkgdGhhdCBoYXNoIHZhbHVlcyBhcmUgZGlmZmVyZW50CisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocGF0dGVybjMsIHBhdHRlcm4xKQorCisgICAgICAgICMgbm90IGVxdWFsOiBkaWZmZXJlbnQgZmxhZyAoZmxhZ3M9MCkKKyAgICAgICAgcmUucHVyZ2UoKQorICAgICAgICBwYXR0ZXJuNCA9IHJlLmNvbXBpbGUoJ2FiYycpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocGF0dGVybjQsIHBhdHRlcm4xKQorCisgICAgICAgICMgb25seSA9PSBhbmQgIT0gY29tcGFyaXNvbiBvcGVyYXRvcnMgYXJlIHN1cHBvcnRlZAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBwYXR0ZXJuMSA8IHBhdHRlcm4yCisKKyAgICBkZWYgdGVzdF9wYXR0ZXJuX2NvbXBhcmVfYnl0ZXMoc2VsZik6CisgICAgICAgIHBhdHRlcm4xID0gcmUuY29tcGlsZShiJ2FiYycpCisKKyAgICAgICAgIyBlcXVhbDogdGVzdCBieXRlcyBwYXR0ZXJucworICAgICAgICByZS5wdXJnZSgpCisgICAgICAgIHBhdHRlcm4yID0gcmUuY29tcGlsZShiJ2FiYycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChwYXR0ZXJuMiksIGhhc2gocGF0dGVybjEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhdHRlcm4yLCBwYXR0ZXJuMSkKKworICAgICAgICAjIG5vdCBlcXVhbDogcGF0dGVybiBvZiBhIGRpZmZlcmVudCB0eXBlcyAoc3RyIHZzIGJ5dGVzKSwKKyAgICAgICAgIyBjb21wYXJpc29uIG11c3Qgbm90IHJhaXNlIGEgQnl0ZXNXYXJuaW5nCisgICAgICAgIHJlLnB1cmdlKCkKKyAgICAgICAgcGF0dGVybjMgPSByZS5jb21waWxlKCdhYmMnKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2Vycm9yJywgQnl0ZXNXYXJuaW5nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChwYXR0ZXJuMywgcGF0dGVybjEpCisKIAogY2xhc3MgUGF0dGVyblJlcHJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIGNoZWNrKHNlbGYsIHBhdHRlcm4sIGV4cGVjdGVkKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcmVhZGxpbmUucHkgYi9MaWIvdGVzdC90ZXN0X3JlYWRsaW5lLnB5CmluZGV4IDJjNzNkZjIuLjA2YTkxNDkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcmVhZGxpbmUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9yZWFkbGluZS5weQpAQCAtMTIxLDYgKzEyMSwyMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRFUk09J3h0ZXJtLTI1NmNvbG9yJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRvdXQsIGInJykKIAorICAgIGF1dG9faGlzdG9yeV9zY3JpcHQgPSAiIiJcCitpbXBvcnQgcmVhZGxpbmUKK3JlYWRsaW5lLnNldF9hdXRvX2hpc3Rvcnkoe30pCitpbnB1dCgpCitwcmludCgiSGlzdG9yeSBsZW5ndGg6IiwgcmVhZGxpbmUuZ2V0X2N1cnJlbnRfaGlzdG9yeV9sZW5ndGgoKSkKKyIiIgorCisgICAgZGVmIHRlc3RfYXV0b19oaXN0b3J5X2VuYWJsZWQoc2VsZik6CisgICAgICAgIG91dHB1dCA9IHJ1bl9wdHkoc2VsZi5hdXRvX2hpc3Rvcnlfc2NyaXB0LmZvcm1hdChUcnVlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihiIkhpc3RvcnkgbGVuZ3RoOiAxXHJcbiIsIG91dHB1dCkKKworICAgIGRlZiB0ZXN0X2F1dG9faGlzdG9yeV9kaXNhYmxlZChzZWxmKToKKyAgICAgICAgb3V0cHV0ID0gcnVuX3B0eShzZWxmLmF1dG9faGlzdG9yeV9zY3JpcHQuZm9ybWF0KEZhbHNlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihiIkhpc3RvcnkgbGVuZ3RoOiAwXHJcbiIsIG91dHB1dCkKKwogICAgIGRlZiB0ZXN0X25vbmFzY2lpKHNlbGYpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICByZWFkbGluZS5hZGRfaGlzdG9yeSgiXHhFQlx4RUYiKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9yZWdydGVzdC5weSBiL0xpYi90ZXN0L3Rlc3RfcmVncnRlc3QucHkKaW5kZXggZTJjMmYyZC4uNzUxZGYxNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9yZWdydGVzdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3JlZ3J0ZXN0LnB5CkBAIC0xLDIxICsxLDQ4IEBACiAiIiIKIFRlc3RzIG9mIHJlZ3J0ZXN0LnB5LgorCitOb3RlOiB0ZXN0X3JlZ3J0ZXN0IGNhbm5vdCBiZSBydW4gdHdpY2UgaW4gcGFyYWxsZWwuCiAiIiIKIAotaW1wb3J0IGFyZ3BhcnNlCitpbXBvcnQgY29udGV4dGxpYgogaW1wb3J0IGZhdWx0aGFuZGxlcgotaW1wb3J0IGdldG9wdAoraW1wb3J0IGlvCiBpbXBvcnQgb3MucGF0aAoraW1wb3J0IHBsYXRmb3JtCitpbXBvcnQgcmUKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgc3lzCitpbXBvcnQgc3lzY29uZmlnCitpbXBvcnQgdGVtcGZpbGUKK2ltcG9ydCB0ZXh0d3JhcAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3QgaW1wb3J0IHJlZ3J0ZXN0LCBzdXBwb3J0Citmcm9tIHRlc3QgaW1wb3J0IGxpYnJlZ3J0ZXN0Citmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKKworCitQeV9ERUJVRyA9IGhhc2F0dHIoc3lzLCAnZ2V0b2JqZWN0cycpCitST09UX0RJUiA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAnLi4nLCAnLi4nKQorUk9PVF9ESVIgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5ub3JtcGF0aChST09UX0RJUikpCisKK1RFU1RfSU5URVJSVVBURUQgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiCisgICAgZnJvbSBzaWduYWwgaW1wb3J0IFNJR0lOVAorICAgIHRyeToKKyAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IHJhaXNlX3NpZ25hbAorICAgICAgICByYWlzZV9zaWduYWwoU0lHSU5UKQorICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgaW1wb3J0IG9zCisgICAgICAgIG9zLmtpbGwob3MuZ2V0cGlkKCksIFNJR0lOVCkKKyAgICAiIiIpCisKIAogY2xhc3MgUGFyc2VBcmdzVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgotCi0gICAgIiIiVGVzdCByZWdydGVzdCdzIGFyZ3VtZW50IHBhcnNpbmcuIiIiCisgICAgIiIiCisgICAgVGVzdCByZWdydGVzdCdzIGFyZ3VtZW50IHBhcnNpbmcsIGZ1bmN0aW9uIF9wYXJzZV9hcmdzKCkuCisgICAgIiIiCiAKICAgICBkZWYgY2hlY2tFcnJvcihzZWxmLCBhcmdzLCBtc2cpOgogICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3RkZXJyKCkgYXMgZXJyLCBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FeGl0KToKLSAgICAgICAgICAgIHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKGFyZ3MpCisgICAgICAgICAgICBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhhcmdzKQogICAgICAgICBzZWxmLmFzc2VydEluKG1zZywgZXJyLmdldHZhbHVlKCkpCiAKICAgICBkZWYgdGVzdF9oZWxwKHNlbGYpOgpAQCAtMjMsODIgKzUwLDgyIEBACiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKICAgICAgICAgICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0LCBcCiAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FeGl0KToKLSAgICAgICAgICAgICAgICAgICAgcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCisgICAgICAgICAgICAgICAgICAgIGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ1J1biBQeXRob24gcmVncmVzc2lvbiB0ZXN0cy4nLCBvdXQuZ2V0dmFsdWUoKSkKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoZmF1bHRoYW5kbGVyLCAnZHVtcF90cmFjZWJhY2tfbGF0ZXInKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAiZmF1bHRoYW5kbGVyLmR1bXBfdHJhY2ViYWNrX2xhdGVyKCkgcmVxdWlyZWQiKQogICAgIGRlZiB0ZXN0X3RpbWVvdXQoc2VsZik6Ci0gICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXRpbWVvdXQnLCAnNC4yJ10pCisgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXRpbWVvdXQnLCAnNC4yJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMudGltZW91dCwgNC4yKQogICAgICAgICBzZWxmLmNoZWNrRXJyb3IoWyctLXRpbWVvdXQnXSwgJ2V4cGVjdGVkIG9uZSBhcmd1bWVudCcpCiAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbJy0tdGltZW91dCcsICdmb28nXSwgJ2ludmFsaWQgZmxvYXQgdmFsdWUnKQogCiAgICAgZGVmIHRlc3Rfd2FpdChzZWxmKToKLSAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbJy0td2FpdCddKQorICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS13YWl0J10pCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShucy53YWl0KQogCiAgICAgZGVmIHRlc3Rfc2xhdmVhcmdzKHNlbGYpOgotICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS1zbGF2ZWFyZ3MnLCAnW1tdLCB7fV0nXSkKKyAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbJy0tc2xhdmVhcmdzJywgJ1tbXSwge31dJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMuc2xhdmVhcmdzLCAnW1tdLCB7fV0nKQogICAgICAgICBzZWxmLmNoZWNrRXJyb3IoWyctLXNsYXZlYXJncyddLCAnZXhwZWN0ZWQgb25lIGFyZ3VtZW50JykKIAogICAgIGRlZiB0ZXN0X3N0YXJ0KHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctUycsICctLXN0YXJ0JzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJ2ZvbyddKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJ2ZvbyddKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMuc3RhcnQsICdmb28nKQogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbb3B0XSwgJ2V4cGVjdGVkIG9uZSBhcmd1bWVudCcpCiAKICAgICBkZWYgdGVzdF92ZXJib3NlKHNlbGYpOgotICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLXYnXSkKKyAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbJy12J10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMudmVyYm9zZSwgMSkKLSAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbJy12dnYnXSkKKyAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbJy12dnYnXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy52ZXJib3NlLCAzKQotICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS12ZXJib3NlJ10pCisgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXZlcmJvc2UnXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy52ZXJib3NlLCAxKQotICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS12ZXJib3NlJ10gKiAzKQorICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS12ZXJib3NlJ10gKiAzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLnZlcmJvc2UsIDMpCi0gICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW10pCisgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMudmVyYm9zZSwgMCkKIAogICAgIGRlZiB0ZXN0X3ZlcmJvc2UyKHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctdycsICctLXZlcmJvc2UyJzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobnMudmVyYm9zZTIpCiAKICAgICBkZWYgdGVzdF92ZXJib3NlMyhzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLVcnLCAnLS12ZXJib3NlMyc6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5zLnZlcmJvc2UzKQogCiAgICAgZGVmIHRlc3RfcXVpZXQoc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy1xJywgJy0tcXVpZXQnOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShucy5xdWlldCkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLnZlcmJvc2UsIDApCiAKICAgICBkZWYgdGVzdF9zbG93KHNlbGYpOgotICAgICAgICBmb3Igb3B0IGluICctbycsICctLXNsb3cnOgorICAgICAgICBmb3Igb3B0IGluICctbycsICctLXNsb3dlc3QnOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShucy5wcmludF9zbG93KQogCiAgICAgZGVmIHRlc3RfaGVhZGVyKHNlbGYpOgotICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS1oZWFkZXInXSkKKyAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbJy0taGVhZGVyJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShucy5oZWFkZXIpCiAKICAgICBkZWYgdGVzdF9yYW5kb21pemUoc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy1yJywgJy0tcmFuZG9taXplJzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobnMucmFuZG9taXplKQogCiAgICAgZGVmIHRlc3RfcmFuZHNlZWQoc2VsZik6Ci0gICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXJhbmRzZWVkJywgJzEyMzQ1J10pCisgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXJhbmRzZWVkJywgJzEyMzQ1J10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMucmFuZG9tX3NlZWQsIDEyMzQ1KQogICAgICAgICBzZWxmLmFzc2VydFRydWUobnMucmFuZG9taXplKQogICAgICAgICBzZWxmLmNoZWNrRXJyb3IoWyctLXJhbmRzZWVkJ10sICdleHBlY3RlZCBvbmUgYXJndW1lbnQnKQpAQCAtMTA3LDcgKzEzNCw3IEBACiAgICAgZGVmIHRlc3RfZnJvbWZpbGUoc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy1mJywgJy0tZnJvbWZpbGUnOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnZm9vJ10pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnZm9vJ10pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy5mcm9tZmlsZSwgJ2ZvbycpCiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHRdLCAnZXhwZWN0ZWQgb25lIGFyZ3VtZW50JykKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrRXJyb3IoW29wdCwgJ2ZvbycsICctcyddLCAiZG9uJ3QgZ28gdG9nZXRoZXIiKQpAQCAtMTE1LDQyICsxNDIsNDIgQEAKICAgICBkZWYgdGVzdF9leGNsdWRlKHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICcteCcsICctLWV4Y2x1ZGUnOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShucy5leGNsdWRlKQogCiAgICAgZGVmIHRlc3Rfc2luZ2xlKHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctcycsICctLXNpbmdsZSc6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5zLnNpbmdsZSkKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrRXJyb3IoW29wdCwgJy1mJywgJ2ZvbyddLCAiZG9uJ3QgZ28gdG9nZXRoZXIiKQogCiAgICAgZGVmIHRlc3RfbWF0Y2goc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy1tJywgJy0tbWF0Y2gnOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAncGF0dGVybiddKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJ3BhdHRlcm4nXSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLm1hdGNoX3Rlc3RzLCAncGF0dGVybicpCiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHRdLCAnZXhwZWN0ZWQgb25lIGFyZ3VtZW50JykKIAogICAgIGRlZiB0ZXN0X2ZhaWxmYXN0KHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctRycsICctLWZhaWxmYXN0JzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJy12J10pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnLXYnXSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobnMuZmFpbGZhc3QpCi0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnLVcnXSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICctVyddKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShucy5mYWlsZmFzdCkKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrRXJyb3IoW29wdF0sICctRy8tLWZhaWxmYXN0IG5lZWRzIGVpdGhlciAtdiBvciAtVycpCiAKICAgICBkZWYgdGVzdF91c2Uoc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy11JywgJy0tdXNlJzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJ2d1aSxuZXR3b3JrJ10pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnZ3VpLG5ldHdvcmsnXSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLnVzZV9yZXNvdXJjZXMsIFsnZ3VpJywgJ25ldHdvcmsnXSkKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICdndWksbm9uZSxuZXR3b3JrJ10pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnZ3VpLG5vbmUsbmV0d29yayddKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMudXNlX3Jlc291cmNlcywgWyduZXR3b3JrJ10pCi0gICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSBsaXN0KHJlZ3J0ZXN0LlJFU09VUkNFX05BTUVTKQorICAgICAgICAgICAgICAgIGV4cGVjdGVkID0gbGlzdChsaWJyZWdydGVzdC5SRVNPVVJDRV9OQU1FUykKICAgICAgICAgICAgICAgICBleHBlY3RlZC5yZW1vdmUoJ2d1aScpCi0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnYWxsLC1ndWknXSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICdhbGwsLWd1aSddKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMudXNlX3Jlc291cmNlcywgZXhwZWN0ZWQpCiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHRdLCAnZXhwZWN0ZWQgb25lIGFyZ3VtZW50JykKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrRXJyb3IoW29wdCwgJ2ZvbyddLCAnaW52YWxpZCByZXNvdXJjZScpCkBAIC0xNTgsMzEgKzE4NSwzMSBAQAogICAgIGRlZiB0ZXN0X21lbWxpbWl0KHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctTScsICctLW1lbWxpbWl0JzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJzRHJ10pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnNEcnXSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLm1lbWxpbWl0LCAnNEcnKQogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbb3B0XSwgJ2V4cGVjdGVkIG9uZSBhcmd1bWVudCcpCiAKICAgICBkZWYgdGVzdF90ZXN0ZGlyKHNlbGYpOgotICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS10ZXN0ZGlyJywgJ2ZvbyddKQorICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS10ZXN0ZGlyJywgJ2ZvbyddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLnRlc3RkaXIsIG9zLnBhdGguam9pbihzdXBwb3J0LlNBVkVEQ1dELCAnZm9vJykpCiAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbJy0tdGVzdGRpciddLCAnZXhwZWN0ZWQgb25lIGFyZ3VtZW50JykKIAogICAgIGRlZiB0ZXN0X3J1bmxlYWtzKHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctTCcsICctLXJ1bmxlYWtzJzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobnMucnVubGVha3MpCiAKICAgICBkZWYgdGVzdF9odW50cmxlYWtzKHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctUicsICctLWh1bnRybGVha3MnOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnOiddKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJzonXSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLmh1bnRybGVha3MsICg1LCA0LCAncmVmbG9nLnR4dCcpKQotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJzY6J10pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnNjonXSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLmh1bnRybGVha3MsICg2LCA0LCAncmVmbG9nLnR4dCcpKQotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJzozJ10pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnOjMnXSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLmh1bnRybGVha3MsICg1LCAzLCAncmVmbG9nLnR4dCcpKQotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJzY6MzpsZWFrcy5sb2cnXSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICc2OjM6bGVha3MubG9nJ10pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy5odW50cmxlYWtzLCAoNiwgMywgJ2xlYWtzLmxvZycpKQogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbb3B0XSwgJ2V4cGVjdGVkIG9uZSBhcmd1bWVudCcpCiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHQsICc2J10sCkBAIC0xOTMsMjcgKzIyMCwyNSBAQAogICAgIGRlZiB0ZXN0X211bHRpcHJvY2VzcyhzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLWonLCAnLS1tdWx0aXByb2Nlc3MnOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnMiddKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJzInXSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLnVzZV9tcCwgMikKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrRXJyb3IoW29wdF0sICdleHBlY3RlZCBvbmUgYXJndW1lbnQnKQogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbb3B0LCAnZm9vJ10sICdpbnZhbGlkIGludCB2YWx1ZScpCiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHQsICcyJywgJy1UJ10sICJkb24ndCBnbyB0b2dldGhlciIpCiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHQsICcyJywgJy1sJ10sICJkb24ndCBnbyB0b2dldGhlciIpCi0gICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHQsICcyJywgJy1NJywgJzRHJ10sICJkb24ndCBnbyB0b2dldGhlciIpCiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHQsICcwJywgJy1UJ10sICJkb24ndCBnbyB0b2dldGhlciIpCiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHQsICcwJywgJy1sJ10sICJkb24ndCBnbyB0b2dldGhlciIpCi0gICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHQsICcwJywgJy1NJywgJzRHJ10sICJkb24ndCBnbyB0b2dldGhlciIpCiAKICAgICBkZWYgdGVzdF9jb3ZlcmFnZShzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLVQnLCAnLS1jb3ZlcmFnZSc6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5zLnRyYWNlKQogCiAgICAgZGVmIHRlc3RfY292ZXJkaXIoc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy1EJywgJy0tY292ZXJkaXInOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnZm9vJ10pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnZm9vJ10pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy5jb3ZlcmRpciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzdXBwb3J0LlNBVkVEQ1dELCAnZm9vJykpCiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHRdLCAnZXhwZWN0ZWQgb25lIGFyZ3VtZW50JykKQEAgLTIyMSwxMyArMjQ2LDEzIEBACiAgICAgZGVmIHRlc3Rfbm9jb3ZlcmRpcihzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLU4nLCAnLS1ub2NvdmVyZGlyJzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShucy5jb3ZlcmRpcikKIAogICAgIGRlZiB0ZXN0X3RocmVzaG9sZChzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLXQnLCAnLS10aHJlc2hvbGQnOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnMTAwMCddKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJzEwMDAnXSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLnRocmVzaG9sZCwgMTAwMCkKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrRXJyb3IoW29wdF0sICdleHBlY3RlZCBvbmUgYXJndW1lbnQnKQogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbb3B0LCAnZm9vJ10sICdpbnZhbGlkIGludCB2YWx1ZScpCkBAIC0yMzUsMTMgKzI2MCwxNiBAQAogICAgIGRlZiB0ZXN0X25vd2luZG93cyhzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLW4nLCAnLS1ub3dpbmRvd3MnOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKKyAgICAgICAgICAgICAgICB3aXRoIGNvbnRleHRsaWIucmVkaXJlY3Rfc3RkZXJyKGlvLlN0cmluZ0lPKCkpIGFzIHN0ZGVycjoKKyAgICAgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobnMubm93aW5kb3dzKQorICAgICAgICAgICAgICAgIGVyciA9IHN0ZGVyci5nZXR2YWx1ZSgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigndGhlIC0tbm93aW5kb3dzICgtbikgb3B0aW9uIGlzIGRlcHJlY2F0ZWQnLCBlcnIpCiAKICAgICBkZWYgdGVzdF9mb3JldmVyKHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctRicsICctLWZvcmV2ZXInOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShucy5mb3JldmVyKQogCiAKQEAgLTI0OSwzMiArMjc3LDMyIEBACiAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbJy0teHh4J10sICd1c2FnZTonKQogCiAgICAgZGVmIHRlc3RfbG9uZ19vcHRpb25fX3BhcnRpYWwoc2VsZik6Ci0gICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXF1aSddKQorICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS1xdWknXSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5zLnF1aWV0KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLnZlcmJvc2UsIDApCiAKICAgICBkZWYgdGVzdF90d29fb3B0aW9ucyhzZWxmKToKLSAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbJy0tcXVpZXQnLCAnLS1leGNsdWRlJ10pCisgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXF1aWV0JywgJy0tZXhjbHVkZSddKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobnMucXVpZXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMudmVyYm9zZSwgMCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5zLmV4Y2x1ZGUpCiAKICAgICBkZWYgdGVzdF9vcHRpb25fd2l0aF9lbXB0eV9zdHJpbmdfdmFsdWUoc2VsZik6Ci0gICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXN0YXJ0JywgJyddKQorICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS1zdGFydCcsICcnXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy5zdGFydCwgJycpCiAKICAgICBkZWYgdGVzdF9hcmcoc2VsZik6Ci0gICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoWydmb28nXSkKKyAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbJ2ZvbyddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLmFyZ3MsIFsnZm9vJ10pCiAKICAgICBkZWYgdGVzdF9vcHRpb25fYW5kX2FyZyhzZWxmKToKLSAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbJy0tcXVpZXQnLCAnZm9vJ10pCisgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXF1aWV0JywgJ2ZvbyddKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobnMucXVpZXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMudmVyYm9zZSwgMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy5hcmdzLCBbJ2ZvbyddKQogCiAgICAgZGVmIHRlc3RfYXJnX29wdGlvbl9hcmcoc2VsZik6Ci0gICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoWyd0ZXN0X3VuYXJ5b3AnLCAnLXYnLCAndGVzdF9iaW5vcCddKQorICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsndGVzdF91bmFyeW9wJywgJy12JywgJ3Rlc3RfYmlub3AnXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy52ZXJib3NlLCAxKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLmFyZ3MsIFsndGVzdF91bmFyeW9wJywgJ3Rlc3RfYmlub3AnXSkKIApAQCAtMjgzLDYgKzMxMSw0OTYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICd1bnJlY29nbml6ZWQgYXJndW1lbnRzOiAtLXVua25vd24tb3B0aW9uJykKIAogCitjbGFzcyBCYXNlVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIFRFU1RfVU5JUVVFX0lEID0gMQorICAgIFRFU1ROQU1FX1BSRUZJWCA9ICd0ZXN0X3JlZ3J0ZXN0XycKKyAgICBURVNUTkFNRV9SRUdFWCA9IHIndGVzdF9bYS16QS1aMC05X10rJworCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLnRlc3RkaXIgPSBvcy5wYXRoLnJlYWxwYXRoKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykpCisKKyAgICAgICAgc2VsZi50bXB0ZXN0ZGlyID0gdGVtcGZpbGUubWtkdGVtcCgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnJtdHJlZSwgc2VsZi50bXB0ZXN0ZGlyKQorCisgICAgZGVmIGNyZWF0ZV90ZXN0KHNlbGYsIG5hbWU9Tm9uZSwgY29kZT0nJyk6CisgICAgICAgIGlmIG5vdCBuYW1lOgorICAgICAgICAgICAgbmFtZSA9ICdub29wJXMnICUgQmFzZVRlc3RDYXNlLlRFU1RfVU5JUVVFX0lECisgICAgICAgICAgICBCYXNlVGVzdENhc2UuVEVTVF9VTklRVUVfSUQgKz0gMQorCisgICAgICAgICMgdGVzdF9yZWdydGVzdCBjYW5ub3QgYmUgcnVuIHR3aWNlIGluIHBhcmFsbGVsIGJlY2F1c2UKKyAgICAgICAgIyBvZiBzZXRVcCgpIGFuZCBjcmVhdGVfdGVzdCgpCisgICAgICAgIG5hbWUgPSBzZWxmLlRFU1ROQU1FX1BSRUZJWCArIG5hbWUKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLnRtcHRlc3RkaXIsIG5hbWUgKyAnLnB5JykKKworICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHBhdGgpCisgICAgICAgICMgVXNlICd4JyBtb2RlIHRvIGVuc3VyZSB0aGF0IHdlIGRvIG5vdCBvdmVycmlkZSBleGlzdGluZyB0ZXN0cworICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgJ3gnLCBlbmNvZGluZz0ndXRmLTgnKSBhcyBmcDoKKyAgICAgICAgICAgICAgICBmcC53cml0ZShjb2RlKQorICAgICAgICBleGNlcHQgUGVybWlzc2lvbkVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIGlmIG5vdCBzeXNjb25maWcuaXNfcHl0aG9uX2J1aWxkKCk6CisgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiY2Fubm90IHdyaXRlICVzOiAlcyIgJSAocGF0aCwgZXhjKSkKKyAgICAgICAgICAgIHJhaXNlCisgICAgICAgIHJldHVybiBuYW1lCisKKyAgICBkZWYgcmVnZXhfc2VhcmNoKHNlbGYsIHJlZ2V4LCBvdXRwdXQpOgorICAgICAgICBtYXRjaCA9IHJlLnNlYXJjaChyZWdleCwgb3V0cHV0LCByZS5NVUxUSUxJTkUpCisgICAgICAgIGlmIG5vdCBtYXRjaDoKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiJXIgbm90IGZvdW5kIGluICVyIiAlIChyZWdleCwgb3V0cHV0KSkKKyAgICAgICAgcmV0dXJuIG1hdGNoCisKKyAgICBkZWYgY2hlY2tfbGluZShzZWxmLCBvdXRwdXQsIHJlZ2V4KToKKyAgICAgICAgcmVnZXggPSByZS5jb21waWxlKHInXicgKyByZWdleCwgcmUuTVVMVElMSU5FKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KG91dHB1dCwgcmVnZXgpCisKKyAgICBkZWYgcGFyc2VfZXhlY3V0ZWRfdGVzdHMoc2VsZiwgb3V0cHV0KToKKyAgICAgICAgcmVnZXggPSAocideWzAtOV0rOlswLTldKzpbMC05XSsgXFsgKlswLTldKyg/Oi8gKlswLTldKyk/XF0gKCVzKScKKyAgICAgICAgICAgICAgICAgJSBzZWxmLlRFU1ROQU1FX1JFR0VYKQorICAgICAgICBwYXJzZXIgPSByZS5maW5kaXRlcihyZWdleCwgb3V0cHV0LCByZS5NVUxUSUxJTkUpCisgICAgICAgIHJldHVybiBsaXN0KG1hdGNoLmdyb3VwKDEpIGZvciBtYXRjaCBpbiBwYXJzZXIpCisKKyAgICBkZWYgY2hlY2tfZXhlY3V0ZWRfdGVzdHMoc2VsZiwgb3V0cHV0LCB0ZXN0cywgc2tpcHBlZD0oKSwgZmFpbGVkPSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbWl0dGVkPSgpLCByYW5kb21pemU9RmFsc2UsIGludGVycnVwdGVkPUZhbHNlKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZSh0ZXN0cywgc3RyKToKKyAgICAgICAgICAgIHRlc3RzID0gW3Rlc3RzXQorICAgICAgICBpZiBpc2luc3RhbmNlKHNraXBwZWQsIHN0cik6CisgICAgICAgICAgICBza2lwcGVkID0gW3NraXBwZWRdCisgICAgICAgIGlmIGlzaW5zdGFuY2UoZmFpbGVkLCBzdHIpOgorICAgICAgICAgICAgZmFpbGVkID0gW2ZhaWxlZF0KKyAgICAgICAgaWYgaXNpbnN0YW5jZShvbWl0dGVkLCBzdHIpOgorICAgICAgICAgICAgb21pdHRlZCA9IFtvbWl0dGVkXQorICAgICAgICBudGVzdCA9IGxlbih0ZXN0cykKKyAgICAgICAgbnNraXBwZWQgPSBsZW4oc2tpcHBlZCkKKyAgICAgICAgbmZhaWxlZCA9IGxlbihmYWlsZWQpCisgICAgICAgIG5vbWl0dGVkID0gbGVuKG9taXR0ZWQpCisKKyAgICAgICAgZXhlY3V0ZWQgPSBzZWxmLnBhcnNlX2V4ZWN1dGVkX3Rlc3RzKG91dHB1dCkKKyAgICAgICAgaWYgcmFuZG9taXplOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoZXhlY3V0ZWQpLCBzZXQodGVzdHMpLCBvdXRwdXQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4ZWN1dGVkLCB0ZXN0cywgb3V0cHV0KQorCisgICAgICAgIGRlZiBwbHVyYWwoY291bnQpOgorICAgICAgICAgICAgcmV0dXJuICdzJyBpZiBjb3VudCAhPSAxIGVsc2UgJycKKworICAgICAgICBkZWYgbGlzdF9yZWdleChsaW5lX2Zvcm1hdCwgdGVzdHMpOgorICAgICAgICAgICAgY291bnQgPSBsZW4odGVzdHMpCisgICAgICAgICAgICBuYW1lcyA9ICcgJy5qb2luKHNvcnRlZCh0ZXN0cykpCisgICAgICAgICAgICByZWdleCA9IGxpbmVfZm9ybWF0ICUgKGNvdW50LCBwbHVyYWwoY291bnQpKQorICAgICAgICAgICAgcmVnZXggPSByJyVzOlxuICAgICVzJCcgJSAocmVnZXgsIG5hbWVzKQorICAgICAgICAgICAgcmV0dXJuIHJlZ2V4CisKKyAgICAgICAgaWYgc2tpcHBlZDoKKyAgICAgICAgICAgIHJlZ2V4ID0gbGlzdF9yZWdleCgnJXMgdGVzdCVzIHNraXBwZWQnLCBza2lwcGVkKQorICAgICAgICAgICAgc2VsZi5jaGVja19saW5lKG91dHB1dCwgcmVnZXgpCisKKyAgICAgICAgaWYgZmFpbGVkOgorICAgICAgICAgICAgcmVnZXggPSBsaXN0X3JlZ2V4KCclcyB0ZXN0JXMgZmFpbGVkJywgZmFpbGVkKQorICAgICAgICAgICAgc2VsZi5jaGVja19saW5lKG91dHB1dCwgcmVnZXgpCisKKyAgICAgICAgaWYgb21pdHRlZDoKKyAgICAgICAgICAgIHJlZ2V4ID0gbGlzdF9yZWdleCgnJXMgdGVzdCVzIG9taXR0ZWQnLCBvbWl0dGVkKQorICAgICAgICAgICAgc2VsZi5jaGVja19saW5lKG91dHB1dCwgcmVnZXgpCisKKyAgICAgICAgZ29vZCA9IG50ZXN0IC0gbnNraXBwZWQgLSBuZmFpbGVkIC0gbm9taXR0ZWQKKyAgICAgICAgaWYgZ29vZDoKKyAgICAgICAgICAgIHJlZ2V4ID0gciclcyB0ZXN0JXMgT0tcLiQnICUgKGdvb2QsIHBsdXJhbChnb29kKSkKKyAgICAgICAgICAgIGlmIG5vdCBza2lwcGVkIGFuZCBub3QgZmFpbGVkIGFuZCBnb29kID4gMToKKyAgICAgICAgICAgICAgICByZWdleCA9ICdBbGwgJXMnICUgcmVnZXgKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfbGluZShvdXRwdXQsIHJlZ2V4KQorCisgICAgICAgIGlmIGludGVycnVwdGVkOgorICAgICAgICAgICAgc2VsZi5jaGVja19saW5lKG91dHB1dCwgJ1Rlc3Qgc3VpdGUgaW50ZXJydXB0ZWQgYnkgc2lnbmFsIFNJR0lOVC4nKQorCisgICAgICAgIGlmIG5mYWlsZWQ6CisgICAgICAgICAgICByZXN1bHQgPSAnRkFJTFVSRScKKyAgICAgICAgZWxpZiBpbnRlcnJ1cHRlZDoKKyAgICAgICAgICAgIHJlc3VsdCA9ICdJTlRFUlJVUFRFRCcKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlc3VsdCA9ICdTVUNDRVNTJworICAgICAgICBzZWxmLmNoZWNrX2xpbmUob3V0cHV0LCAnVGVzdHMgcmVzdWx0OiAlcycgJSByZXN1bHQpCisKKyAgICBkZWYgcGFyc2VfcmFuZG9tX3NlZWQoc2VsZiwgb3V0cHV0KToKKyAgICAgICAgbWF0Y2ggPSBzZWxmLnJlZ2V4X3NlYXJjaChyJ1VzaW5nIHJhbmRvbSBzZWVkIChbMC05XSspJywgb3V0cHV0KQorICAgICAgICByYW5kc2VlZCA9IGludChtYXRjaC5ncm91cCgxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKDAgPD0gcmFuZHNlZWQgPD0gMTAwMDAwMDAsIHJhbmRzZWVkKQorICAgICAgICByZXR1cm4gcmFuZHNlZWQKKworICAgIGRlZiBydW5fY29tbWFuZChzZWxmLCBhcmdzLCBpbnB1dD1Ob25lLCBleGl0Y29kZT0wLCAqKmt3KToKKyAgICAgICAgaWYgbm90IGlucHV0OgorICAgICAgICAgICAgaW5wdXQgPSAnJworICAgICAgICBpZiAnc3RkZXJyJyBub3QgaW4ga3c6CisgICAgICAgICAgICBrd1snc3RkZXJyJ10gPSBzdWJwcm9jZXNzLlBJUEUKKyAgICAgICAgcHJvYyA9IHN1YnByb2Nlc3MucnVuKGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0PWlucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqa3cpCisgICAgICAgIGlmIHByb2MucmV0dXJuY29kZSAhPSBleGl0Y29kZToKKyAgICAgICAgICAgIG1zZyA9ICgiQ29tbWFuZCAlcyBmYWlsZWQgd2l0aCBleGl0IGNvZGUgJXNcbiIKKyAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgInN0ZG91dDpcbiIKKyAgICAgICAgICAgICAgICAgICAiLS0tXG4iCisgICAgICAgICAgICAgICAgICAgIiVzXG4iCisgICAgICAgICAgICAgICAgICAgIi0tLVxuIgorICAgICAgICAgICAgICAgICAgICUgKHN0cihhcmdzKSwgcHJvYy5yZXR1cm5jb2RlLCBwcm9jLnN0ZG91dCkpCisgICAgICAgICAgICBpZiBwcm9jLnN0ZGVycjoKKyAgICAgICAgICAgICAgICBtc2cgKz0gKCJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJzdGRlcnI6XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiLS0tXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiJXMiCisgICAgICAgICAgICAgICAgICAgICAgICAiLS0tXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAlIHByb2Muc3RkZXJyKQorICAgICAgICAgICAgc2VsZi5mYWlsKG1zZykKKyAgICAgICAgcmV0dXJuIHByb2MKKworCisgICAgZGVmIHJ1bl9weXRob24oc2VsZiwgYXJncywgKiprdyk6CisgICAgICAgIGFyZ3MgPSBbc3lzLmV4ZWN1dGFibGUsICctWCcsICdmYXVsdGhhbmRsZXInLCAnLUknLCAqYXJnc10KKyAgICAgICAgcHJvYyA9IHNlbGYucnVuX2NvbW1hbmQoYXJncywgKiprdykKKyAgICAgICAgcmV0dXJuIHByb2Muc3Rkb3V0CisKKworY2xhc3MgUHJvZ3JhbXNUZXN0Q2FzZShCYXNlVGVzdENhc2UpOgorICAgICIiIgorICAgIFRlc3QgdmFyaW91cyB3YXlzIHRvIHJ1biB0aGUgUHl0aG9uIHRlc3Qgc3VpdGUuIFVzZSBvcHRpb25zIGNsb3NlCisgICAgdG8gb3B0aW9ucyB1c2VkIG9uIHRoZSBidWlsZGJvdC4KKyAgICAiIiIKKworICAgIE5URVNUID0gNAorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzdXBlcigpLnNldFVwKCkKKworICAgICAgICAjIENyZWF0ZSBOVEVTVCB0ZXN0cyBkb2luZyBub3RoaW5nCisgICAgICAgIHNlbGYudGVzdHMgPSBbc2VsZi5jcmVhdGVfdGVzdCgpIGZvciBpbmRleCBpbiByYW5nZShzZWxmLk5URVNUKV0KKworICAgICAgICBzZWxmLnB5dGhvbl9hcmdzID0gWyctV2QnLCAnLUUnLCAnLWJiJ10KKyAgICAgICAgc2VsZi5yZWdydGVzdF9hcmdzID0gWyctdWFsbCcsICctcndXJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLXRlc3RkaXI9JXMnICUgc2VsZi50bXB0ZXN0ZGlyXQorICAgICAgICBpZiBoYXNhdHRyKGZhdWx0aGFuZGxlciwgJ2R1bXBfdHJhY2ViYWNrX2xhdGVyJyk6CisgICAgICAgICAgICBzZWxmLnJlZ3J0ZXN0X2FyZ3MuZXh0ZW5kKCgnLS10aW1lb3V0JywgJzM2MDAnLCAnLWo0JykpCisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgICAgICAgICAgc2VsZi5yZWdydGVzdF9hcmdzLmFwcGVuZCgnLW4nKQorCisgICAgZGVmIGNoZWNrX291dHB1dChzZWxmLCBvdXRwdXQpOgorICAgICAgICBzZWxmLnBhcnNlX3JhbmRvbV9zZWVkKG91dHB1dCkKKyAgICAgICAgc2VsZi5jaGVja19leGVjdXRlZF90ZXN0cyhvdXRwdXQsIHNlbGYudGVzdHMsIHJhbmRvbWl6ZT1UcnVlKQorCisgICAgZGVmIHJ1bl90ZXN0cyhzZWxmLCBhcmdzKToKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fcHl0aG9uKGFyZ3MpCisgICAgICAgIHNlbGYuY2hlY2tfb3V0cHV0KG91dHB1dCkKKworICAgIGRlZiB0ZXN0X3NjcmlwdF9yZWdydGVzdChzZWxmKToKKyAgICAgICAgIyBMaWIvdGVzdC9yZWdydGVzdC5weQorICAgICAgICBzY3JpcHQgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZXN0ZGlyLCAncmVncnRlc3QucHknKQorCisgICAgICAgIGFyZ3MgPSBbKnNlbGYucHl0aG9uX2FyZ3MsIHNjcmlwdCwgKnNlbGYucmVncnRlc3RfYXJncywgKnNlbGYudGVzdHNdCisgICAgICAgIHNlbGYucnVuX3Rlc3RzKGFyZ3MpCisKKyAgICBkZWYgdGVzdF9tb2R1bGVfdGVzdChzZWxmKToKKyAgICAgICAgIyAtbSB0ZXN0CisgICAgICAgIGFyZ3MgPSBbKnNlbGYucHl0aG9uX2FyZ3MsICctbScsICd0ZXN0JywKKyAgICAgICAgICAgICAgICAqc2VsZi5yZWdydGVzdF9hcmdzLCAqc2VsZi50ZXN0c10KKyAgICAgICAgc2VsZi5ydW5fdGVzdHMoYXJncykKKworICAgIGRlZiB0ZXN0X21vZHVsZV9yZWdydGVzdChzZWxmKToKKyAgICAgICAgIyAtbSB0ZXN0LnJlZ3J0ZXN0CisgICAgICAgIGFyZ3MgPSBbKnNlbGYucHl0aG9uX2FyZ3MsICctbScsICd0ZXN0LnJlZ3J0ZXN0JywKKyAgICAgICAgICAgICAgICAqc2VsZi5yZWdydGVzdF9hcmdzLCAqc2VsZi50ZXN0c10KKyAgICAgICAgc2VsZi5ydW5fdGVzdHMoYXJncykKKworICAgIGRlZiB0ZXN0X21vZHVsZV9hdXRvdGVzdChzZWxmKToKKyAgICAgICAgIyAtbSB0ZXN0LmF1dG90ZXN0CisgICAgICAgIGFyZ3MgPSBbKnNlbGYucHl0aG9uX2FyZ3MsICctbScsICd0ZXN0LmF1dG90ZXN0JywKKyAgICAgICAgICAgICAgICAqc2VsZi5yZWdydGVzdF9hcmdzLCAqc2VsZi50ZXN0c10KKyAgICAgICAgc2VsZi5ydW5fdGVzdHMoYXJncykKKworICAgIGRlZiB0ZXN0X21vZHVsZV9mcm9tX3Rlc3RfYXV0b3Rlc3Qoc2VsZik6CisgICAgICAgICMgZnJvbSB0ZXN0IGltcG9ydCBhdXRvdGVzdAorICAgICAgICBjb2RlID0gJ2Zyb20gdGVzdCBpbXBvcnQgYXV0b3Rlc3QnCisgICAgICAgIGFyZ3MgPSBbKnNlbGYucHl0aG9uX2FyZ3MsICctYycsIGNvZGUsCisgICAgICAgICAgICAgICAgKnNlbGYucmVncnRlc3RfYXJncywgKnNlbGYudGVzdHNdCisgICAgICAgIHNlbGYucnVuX3Rlc3RzKGFyZ3MpCisKKyAgICBkZWYgdGVzdF9zY3JpcHRfYXV0b3Rlc3Qoc2VsZik6CisgICAgICAgICMgTGliL3Rlc3QvYXV0b3Rlc3QucHkKKyAgICAgICAgc2NyaXB0ID0gb3MucGF0aC5qb2luKHNlbGYudGVzdGRpciwgJ2F1dG90ZXN0LnB5JykKKyAgICAgICAgYXJncyA9IFsqc2VsZi5weXRob25fYXJncywgc2NyaXB0LCAqc2VsZi5yZWdydGVzdF9hcmdzLCAqc2VsZi50ZXN0c10KKyAgICAgICAgc2VsZi5ydW5fdGVzdHMoYXJncykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5c2NvbmZpZy5pc19weXRob25fYnVpbGQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAncnVuX3Rlc3RzLnB5IHNjcmlwdCBpcyBub3QgaW5zdGFsbGVkJykKKyAgICBkZWYgdGVzdF90b29sc19zY3JpcHRfcnVuX3Rlc3RzKHNlbGYpOgorICAgICAgICAjIFRvb2xzL3NjcmlwdHMvcnVuX3Rlc3RzLnB5CisgICAgICAgIHNjcmlwdCA9IG9zLnBhdGguam9pbihST09UX0RJUiwgJ1Rvb2xzJywgJ3NjcmlwdHMnLCAncnVuX3Rlc3RzLnB5JykKKyAgICAgICAgYXJncyA9IFtzY3JpcHQsICpzZWxmLnJlZ3J0ZXN0X2FyZ3MsICpzZWxmLnRlc3RzXQorICAgICAgICBzZWxmLnJ1bl90ZXN0cyhhcmdzKQorCisgICAgZGVmIHJ1bl9iYXRjaChzZWxmLCAqYXJncyk6CisgICAgICAgIHByb2MgPSBzZWxmLnJ1bl9jb21tYW5kKGFyZ3MpCisgICAgICAgIHNlbGYuY2hlY2tfb3V0cHV0KHByb2Muc3Rkb3V0KQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzY29uZmlnLmlzX3B5dGhvbl9idWlsZCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0LmJhdCBzY3JpcHQgaXMgbm90IGluc3RhbGxlZCcpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtID09ICd3aW4zMicsICdXaW5kb3dzIG9ubHknKQorICAgIGRlZiB0ZXN0X3Rvb2xzX2J1aWxkYm90X3Rlc3Qoc2VsZik6CisgICAgICAgICMgVG9vbHNcYnVpbGRib3RcdGVzdC5iYXQKKyAgICAgICAgc2NyaXB0ID0gb3MucGF0aC5qb2luKFJPT1RfRElSLCAnVG9vbHMnLCAnYnVpbGRib3QnLCAndGVzdC5iYXQnKQorICAgICAgICB0ZXN0X2FyZ3MgPSBbJy0tdGVzdGRpcj0lcycgJSBzZWxmLnRtcHRlc3RkaXJdCisgICAgICAgIGlmIHBsYXRmb3JtLmFyY2hpdGVjdHVyZSgpWzBdID09ICc2NGJpdCc6CisgICAgICAgICAgICB0ZXN0X2FyZ3MuYXBwZW5kKCcteDY0JykgICAjIDY0LWJpdCBidWlsZAorICAgICAgICBpZiBub3QgUHlfREVCVUc6CisgICAgICAgICAgICB0ZXN0X2FyZ3MuYXBwZW5kKCcrZCcpICAgICAjIFJlbGVhc2UgYnVpbGQsIHVzZSBweXRob24uZXhlCisgICAgICAgIHNlbGYucnVuX2JhdGNoKHNjcmlwdCwgKnRlc3RfYXJncywgKnNlbGYudGVzdHMpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJywgJ1dpbmRvd3Mgb25seScpCisgICAgZGVmIHRlc3RfcGNidWlsZF9ydChzZWxmKToKKyAgICAgICAgIyBQQ2J1aWxkXHJ0LmJhdAorICAgICAgICBzY3JpcHQgPSBvcy5wYXRoLmpvaW4oUk9PVF9ESVIsIHInUENidWlsZFxydC5iYXQnKQorICAgICAgICBydF9hcmdzID0gWyItcSJdICAgICAgICAgICAgICMgUXVpY2ssIGRvbid0IHJ1biB0ZXN0cyB0d2ljZQorICAgICAgICBpZiBwbGF0Zm9ybS5hcmNoaXRlY3R1cmUoKVswXSA9PSAnNjRiaXQnOgorICAgICAgICAgICAgcnRfYXJncy5hcHBlbmQoJy14NjQnKSAgICMgNjQtYml0IGJ1aWxkCisgICAgICAgIGlmIFB5X0RFQlVHOgorICAgICAgICAgICAgcnRfYXJncy5hcHBlbmQoJy1kJykgICAgICMgRGVidWcgYnVpbGQsIHVzZSBweXRob25fZC5leGUKKyAgICAgICAgc2VsZi5ydW5fYmF0Y2goc2NyaXB0LCAqcnRfYXJncywgKnNlbGYucmVncnRlc3RfYXJncywgKnNlbGYudGVzdHMpCisKKworY2xhc3MgQXJnc1Rlc3RDYXNlKEJhc2VUZXN0Q2FzZSk6CisgICAgIiIiCisgICAgVGVzdCBhcmd1bWVudHMgb2YgdGhlIFB5dGhvbiB0ZXN0IHN1aXRlLgorICAgICIiIgorCisgICAgZGVmIHJ1bl90ZXN0cyhzZWxmLCAqdGVzdGFyZ3MsICoqa3cpOgorICAgICAgICBjbWRhcmdzID0gWyctbScsICd0ZXN0JywgJy0tdGVzdGRpcj0lcycgJSBzZWxmLnRtcHRlc3RkaXIsICp0ZXN0YXJnc10KKyAgICAgICAgcmV0dXJuIHNlbGYucnVuX3B5dGhvbihjbWRhcmdzLCAqKmt3KQorCisgICAgZGVmIHRlc3RfZmFpbGluZ190ZXN0KHNlbGYpOgorICAgICAgICAjIHRlc3QgYSBmYWlsaW5nIHRlc3QKKyAgICAgICAgY29kZSA9IHRleHR3cmFwLmRlZGVudCgiIiIKKyAgICAgICAgICAgIGltcG9ydCB1bml0dGVzdAorCisgICAgICAgICAgICBjbGFzcyBGYWlsaW5nVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgICAgZGVmIHRlc3RfZmFpbGluZyhzZWxmKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJidWciKQorICAgICAgICAiIiIpCisgICAgICAgIHRlc3Rfb2sgPSBzZWxmLmNyZWF0ZV90ZXN0KCdvaycpCisgICAgICAgIHRlc3RfZmFpbGluZyA9IHNlbGYuY3JlYXRlX3Rlc3QoJ2ZhaWxpbmcnLCBjb2RlPWNvZGUpCisgICAgICAgIHRlc3RzID0gW3Rlc3Rfb2ssIHRlc3RfZmFpbGluZ10KKworICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cygqdGVzdHMsIGV4aXRjb2RlPTEpCisgICAgICAgIHNlbGYuY2hlY2tfZXhlY3V0ZWRfdGVzdHMob3V0cHV0LCB0ZXN0cywgZmFpbGVkPXRlc3RfZmFpbGluZykKKworICAgIGRlZiB0ZXN0X3Jlc291cmNlcyhzZWxmKToKKyAgICAgICAgIyB0ZXN0IC11IGNvbW1hbmQgbGluZSBvcHRpb24KKyAgICAgICAgdGVzdHMgPSB7fQorICAgICAgICBmb3IgcmVzb3VyY2UgaW4gKCdhdWRpbycsICduZXR3b3JrJyk6CisgICAgICAgICAgICBjb2RlID0gJ2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydFxuc3VwcG9ydC5yZXF1aXJlcyglciknICUgcmVzb3VyY2UKKyAgICAgICAgICAgIHRlc3RzW3Jlc291cmNlXSA9IHNlbGYuY3JlYXRlX3Rlc3QocmVzb3VyY2UsIGNvZGUpCisgICAgICAgIHRlc3RfbmFtZXMgPSBzb3J0ZWQodGVzdHMudmFsdWVzKCkpCisKKyAgICAgICAgIyAtdSBhbGw6IDIgcmVzb3VyY2VzIGVuYWJsZWQKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHMoJy11JywgJ2FsbCcsICp0ZXN0X25hbWVzKQorICAgICAgICBzZWxmLmNoZWNrX2V4ZWN1dGVkX3Rlc3RzKG91dHB1dCwgdGVzdF9uYW1lcykKKworICAgICAgICAjIC11IGF1ZGlvOiAxIHJlc291cmNlIGVuYWJsZWQKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHMoJy11YXVkaW8nLCAqdGVzdF9uYW1lcykKKyAgICAgICAgc2VsZi5jaGVja19leGVjdXRlZF90ZXN0cyhvdXRwdXQsIHRlc3RfbmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcHBlZD10ZXN0c1snbmV0d29yayddKQorCisgICAgICAgICMgbm8gb3B0aW9uOiAwIHJlc291cmNlcyBlbmFibGVkCisgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3Rlc3RzKCp0ZXN0X25hbWVzKQorICAgICAgICBzZWxmLmNoZWNrX2V4ZWN1dGVkX3Rlc3RzKG91dHB1dCwgdGVzdF9uYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwcGVkPXRlc3RfbmFtZXMpCisKKyAgICBkZWYgdGVzdF9yYW5kb20oc2VsZik6CisgICAgICAgICMgdGVzdCAtciBhbmQgLS1yYW5kc2VlZCBjb21tYW5kIGxpbmUgb3B0aW9uCisgICAgICAgIGNvZGUgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiCisgICAgICAgICAgICBpbXBvcnQgcmFuZG9tCisgICAgICAgICAgICBwcmludCgiVEVTVFJBTkRPTTogJXMiICUgcmFuZG9tLnJhbmRpbnQoMSwgMTAwMCkpCisgICAgICAgICIiIikKKyAgICAgICAgdGVzdCA9IHNlbGYuY3JlYXRlX3Rlc3QoJ3JhbmRvbScsIGNvZGUpCisKKyAgICAgICAgIyBmaXJzdCBydW4gdG8gZ2V0IHRoZSBvdXRwdXQgd2l0aCB0aGUgcmFuZG9tIHNlZWQKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHMoJy1yJywgdGVzdCkKKyAgICAgICAgcmFuZHNlZWQgPSBzZWxmLnBhcnNlX3JhbmRvbV9zZWVkKG91dHB1dCkKKyAgICAgICAgbWF0Y2ggPSBzZWxmLnJlZ2V4X3NlYXJjaChyJ1RFU1RSQU5ET006IChbMC05XSspJywgb3V0cHV0KQorICAgICAgICB0ZXN0X3JhbmRvbSA9IGludChtYXRjaC5ncm91cCgxKSkKKworICAgICAgICAjIHRyeSB0byByZXByb2R1Y2Ugd2l0aCB0aGUgcmFuZG9tIHNlZWQKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHMoJy1yJywgJy0tcmFuZHNlZWQ9JXMnICUgcmFuZHNlZWQsIHRlc3QpCisgICAgICAgIHJhbmRzZWVkMiA9IHNlbGYucGFyc2VfcmFuZG9tX3NlZWQob3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJhbmRzZWVkMiwgcmFuZHNlZWQpCisKKyAgICAgICAgbWF0Y2ggPSBzZWxmLnJlZ2V4X3NlYXJjaChyJ1RFU1RSQU5ET006IChbMC05XSspJywgb3V0cHV0KQorICAgICAgICB0ZXN0X3JhbmRvbTIgPSBpbnQobWF0Y2guZ3JvdXAoMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdF9yYW5kb20yLCB0ZXN0X3JhbmRvbSkKKworICAgIGRlZiB0ZXN0X2Zyb21maWxlKHNlbGYpOgorICAgICAgICAjIHRlc3QgLS1mcm9tZmlsZQorICAgICAgICB0ZXN0cyA9IFtzZWxmLmNyZWF0ZV90ZXN0KCkgZm9yIGluZGV4IGluIHJhbmdlKDUpXQorCisgICAgICAgICMgV3JpdGUgdGhlIGxpc3Qgb2YgZmlsZXMgdXNpbmcgYSBmb3JtYXQgc2ltaWxhciB0byByZWdydGVzdCBvdXRwdXQ6CisgICAgICAgICMgWzEvMl0gdGVzdF8xCisgICAgICAgICMgWzIvMl0gdGVzdF8yCisgICAgICAgIGZpbGVuYW1lID0gc3VwcG9ydC5URVNURk4KKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBmaWxlbmFtZSkKKworICAgICAgICAjIHRlc3QgZm9ybWF0ICcwOjAwOjAwIFsyLzddIHRlc3Rfb3Bjb2RlcyAtLSB0ZXN0X2dyYW1tYXIgdG9vayAwIHNlYycKKyAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAidyIpIGFzIGZwOgorICAgICAgICAgICAgcHJldmlvdXMgPSBOb25lCisgICAgICAgICAgICBmb3IgaW5kZXgsIG5hbWUgaW4gZW51bWVyYXRlKHRlc3RzLCAxKToKKyAgICAgICAgICAgICAgICBsaW5lID0gKCIwMDowMDolMDJpIFslcy8lc10gJXMiCisgICAgICAgICAgICAgICAgICAgICAgICAlIChpbmRleCwgaW5kZXgsIGxlbih0ZXN0cyksIG5hbWUpKQorICAgICAgICAgICAgICAgIGlmIHByZXZpb3VzOgorICAgICAgICAgICAgICAgICAgICBsaW5lICs9ICIgLS0gJXMgdG9vayAwIHNlYyIgJSBwcmV2aW91cworICAgICAgICAgICAgICAgIHByaW50KGxpbmUsIGZpbGU9ZnApCisgICAgICAgICAgICAgICAgcHJldmlvdXMgPSBuYW1lCisKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHMoJy0tZnJvbWZpbGUnLCBmaWxlbmFtZSkKKyAgICAgICAgc2VsZi5jaGVja19leGVjdXRlZF90ZXN0cyhvdXRwdXQsIHRlc3RzKQorCisgICAgICAgICMgdGVzdCBmb3JtYXQgJ1syLzddIHRlc3Rfb3Bjb2RlcycKKyAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAidyIpIGFzIGZwOgorICAgICAgICAgICAgZm9yIGluZGV4LCBuYW1lIGluIGVudW1lcmF0ZSh0ZXN0cywgMSk6CisgICAgICAgICAgICAgICAgcHJpbnQoIlslcy8lc10gJXMiICUgKGluZGV4LCBsZW4odGVzdHMpLCBuYW1lKSwgZmlsZT1mcCkKKworICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cygnLS1mcm9tZmlsZScsIGZpbGVuYW1lKQorICAgICAgICBzZWxmLmNoZWNrX2V4ZWN1dGVkX3Rlc3RzKG91dHB1dCwgdGVzdHMpCisKKyAgICAgICAgIyB0ZXN0IGZvcm1hdCAndGVzdF9vcGNvZGVzJworICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJ3IikgYXMgZnA6CisgICAgICAgICAgICBmb3IgbmFtZSBpbiB0ZXN0czoKKyAgICAgICAgICAgICAgICBwcmludChuYW1lLCBmaWxlPWZwKQorCisgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3Rlc3RzKCctLWZyb21maWxlJywgZmlsZW5hbWUpCisgICAgICAgIHNlbGYuY2hlY2tfZXhlY3V0ZWRfdGVzdHMob3V0cHV0LCB0ZXN0cykKKworICAgIGRlZiB0ZXN0X2ludGVycnVwdGVkKHNlbGYpOgorICAgICAgICBjb2RlID0gVEVTVF9JTlRFUlJVUFRFRAorICAgICAgICB0ZXN0ID0gc2VsZi5jcmVhdGVfdGVzdCgnc2lnaW50JywgY29kZT1jb2RlKQorICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cyh0ZXN0LCBleGl0Y29kZT0xKQorICAgICAgICBzZWxmLmNoZWNrX2V4ZWN1dGVkX3Rlc3RzKG91dHB1dCwgdGVzdCwgb21pdHRlZD10ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVycnVwdGVkPVRydWUpCisKKyAgICBkZWYgdGVzdF9zbG93ZXN0KHNlbGYpOgorICAgICAgICAjIHRlc3QgLS1zbG93ZXN0CisgICAgICAgIHRlc3RzID0gW3NlbGYuY3JlYXRlX3Rlc3QoKSBmb3IgaW5kZXggaW4gcmFuZ2UoMyldCisgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3Rlc3RzKCItLXNsb3dlc3QiLCAqdGVzdHMpCisgICAgICAgIHNlbGYuY2hlY2tfZXhlY3V0ZWRfdGVzdHMob3V0cHV0LCB0ZXN0cykKKyAgICAgICAgcmVnZXggPSAoJzEwIHNsb3dlc3QgdGVzdHM6XG4nCisgICAgICAgICAgICAgICAgICcoPzotICVzOiAuKlxuKXslc30nCisgICAgICAgICAgICAgICAgICUgKHNlbGYuVEVTVE5BTUVfUkVHRVgsIGxlbih0ZXN0cykpKQorICAgICAgICBzZWxmLmNoZWNrX2xpbmUob3V0cHV0LCByZWdleCkKKworICAgIGRlZiB0ZXN0X3Nsb3dfaW50ZXJydXB0ZWQoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzI1MzczOiB0ZXN0IC0tc2xvd2VzdCB3aXRoIGFuIGludGVycnVwdGVkIHRlc3QKKyAgICAgICAgY29kZSA9IFRFU1RfSU5URVJSVVBURUQKKyAgICAgICAgdGVzdCA9IHNlbGYuY3JlYXRlX3Rlc3QoInNpZ2ludCIsIGNvZGU9Y29kZSkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBpbXBvcnQgdGhyZWFkaW5nCisgICAgICAgICAgICB0ZXN0cyA9IChGYWxzZSwgVHJ1ZSkKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgdGVzdHMgPSAoRmFsc2UsKQorICAgICAgICBmb3IgbXVsdGlwcm9jZXNzaW5nIGluIHRlc3RzOgorICAgICAgICAgICAgaWYgbXVsdGlwcm9jZXNzaW5nOgorICAgICAgICAgICAgICAgIGFyZ3MgPSAoIi0tc2xvd2VzdCIsICItajIiLCB0ZXN0KQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBhcmdzID0gKCItLXNsb3dlc3QiLCB0ZXN0KQorICAgICAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHMoKmFyZ3MsIGV4aXRjb2RlPTEpCisgICAgICAgICAgICBzZWxmLmNoZWNrX2V4ZWN1dGVkX3Rlc3RzKG91dHB1dCwgdGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb21pdHRlZD10ZXN0LCBpbnRlcnJ1cHRlZD1UcnVlKQorCisgICAgICAgICAgICByZWdleCA9ICgnMTAgc2xvd2VzdCB0ZXN0czpcbicpCisgICAgICAgICAgICBzZWxmLmNoZWNrX2xpbmUob3V0cHV0LCByZWdleCkKKworICAgIGRlZiB0ZXN0X2NvdmVyYWdlKHNlbGYpOgorICAgICAgICAjIHRlc3QgLS1jb3ZlcmFnZQorICAgICAgICB0ZXN0ID0gc2VsZi5jcmVhdGVfdGVzdCgnY292ZXJhZ2UnKQorICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cygiLS1jb3ZlcmFnZSIsIHRlc3QpCisgICAgICAgIHNlbGYuY2hlY2tfZXhlY3V0ZWRfdGVzdHMob3V0cHV0LCBbdGVzdF0pCisgICAgICAgIHJlZ2V4ID0gKHInbGluZXMgK2NvdiUgK21vZHVsZSArXChwYXRoXClcbicKKyAgICAgICAgICAgICAgICAgcicoPzogKlswLTldKyAqWzAtOV17MSwyfSUgKlteIF0rICtcKFteKV0rXCkrKSsnKQorICAgICAgICBzZWxmLmNoZWNrX2xpbmUob3V0cHV0LCByZWdleCkKKworICAgIGRlZiB0ZXN0X3dhaXQoc2VsZik6CisgICAgICAgICMgdGVzdCAtLXdhaXQKKyAgICAgICAgdGVzdCA9IHNlbGYuY3JlYXRlX3Rlc3QoJ3dhaXQnKQorICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cygiLS13YWl0IiwgdGVzdCwgaW5wdXQ9J2tleScpCisgICAgICAgIHNlbGYuY2hlY2tfbGluZShvdXRwdXQsICdQcmVzcyBhbnkga2V5IHRvIGNvbnRpbnVlJykKKworICAgIGRlZiB0ZXN0X2ZvcmV2ZXIoc2VsZik6CisgICAgICAgICMgdGVzdCAtLWZvcmV2ZXIKKyAgICAgICAgY29kZSA9IHRleHR3cmFwLmRlZGVudCgiIiIKKyAgICAgICAgICAgIGltcG9ydCBidWlsdGlucworICAgICAgICAgICAgaW1wb3J0IHVuaXR0ZXN0CisKKyAgICAgICAgICAgIGNsYXNzIEZvcmV2ZXJUZXN0ZXIodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICAgIGRlZiB0ZXN0X3J1bihzZWxmKToKKyAgICAgICAgICAgICAgICAgICAgIyBTdG9yZSB0aGUgc3RhdGUgaW4gdGhlIGJ1aWx0aW5zIG1vZHVsZSwgYmVjYXVzZSB0aGUgdGVzdAorICAgICAgICAgICAgICAgICAgICAjIG1vZHVsZSBpcyByZWxvYWQgYXQgZWFjaCBydW4KKyAgICAgICAgICAgICAgICAgICAgaWYgJ1JVTicgaW4gYnVpbHRpbnMuX19kaWN0X186CisgICAgICAgICAgICAgICAgICAgICAgICBidWlsdGlucy5fX2RpY3RfX1snUlVOJ10gKz0gMQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgYnVpbHRpbnMuX19kaWN0X19bJ1JVTiddID49IDM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJmYWlsIGF0IHRoZSAzcmQgcnVucyIpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBidWlsdGlucy5fX2RpY3RfX1snUlVOJ10gPSAxCisgICAgICAgICIiIikKKyAgICAgICAgdGVzdCA9IHNlbGYuY3JlYXRlX3Rlc3QoJ2ZvcmV2ZXInLCBjb2RlPWNvZGUpCisgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3Rlc3RzKCctLWZvcmV2ZXInLCB0ZXN0LCBleGl0Y29kZT0xKQorICAgICAgICBzZWxmLmNoZWNrX2V4ZWN1dGVkX3Rlc3RzKG91dHB1dCwgW3Rlc3RdKjMsIGZhaWxlZD10ZXN0KQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoUHlfREVCVUcsICduZWVkIGEgZGVidWcgYnVpbGQnKQorICAgIGRlZiB0ZXN0X2h1bnRybGVha3NfZmRfbGVhayhzZWxmKToKKyAgICAgICAgIyB0ZXN0IC0taHVudHJsZWFrcyBmb3IgZmlsZSBkZXNjcmlwdG9yIGxlYWsKKyAgICAgICAgY29kZSA9IHRleHR3cmFwLmRlZGVudCgiIiIKKyAgICAgICAgICAgIGltcG9ydCBvcworICAgICAgICAgICAgaW1wb3J0IHVuaXR0ZXN0CisKKyAgICAgICAgICAgICMgSXNzdWUgIzI1MzA2OiBEaXNhYmxlIHBvcHVwcyBhbmQgbG9ncyB0byBzdGRlcnIgb24gYXNzZXJ0aW9uCisgICAgICAgICAgICAjIGZhaWx1cmVzIGluIE1TQ1JUCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaW1wb3J0IG1zdmNydAorICAgICAgICAgICAgICAgIG1zdmNydC5DcnRTZXRSZXBvcnRNb2RlCisgICAgICAgICAgICBleGNlcHQgKEltcG9ydEVycm9yLCBBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICAgICAgIyBubyBXaW5kb3dzLCBvIHJlbGVhc2UgYnVpbGQKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGZvciBtIGluIFttc3ZjcnQuQ1JUX1dBUk4sIG1zdmNydC5DUlRfRVJST1IsIG1zdmNydC5DUlRfQVNTRVJUXToKKyAgICAgICAgICAgICAgICAgICAgbXN2Y3J0LkNydFNldFJlcG9ydE1vZGUobSwgMCkKKworICAgICAgICAgICAgY2xhc3MgRkRMZWFrVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgICAgZGVmIHRlc3RfbGVhayhzZWxmKToKKyAgICAgICAgICAgICAgICAgICAgZmQgPSBvcy5vcGVuKF9fZmlsZV9fLCBvcy5PX1JET05MWSkKKyAgICAgICAgICAgICAgICAgICAgIyBidWc6IG5ldmVyIGNsb2VzIHRoZSBmaWxlIGRlc2NyaXB0b3IKKyAgICAgICAgIiIiKQorICAgICAgICB0ZXN0ID0gc2VsZi5jcmVhdGVfdGVzdCgnaHVudHJsZWFrcycsIGNvZGU9Y29kZSkKKworICAgICAgICBmaWxlbmFtZSA9ICdyZWZsb2cudHh0JworICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIGZpbGVuYW1lKQorICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cygnLS1odW50cmxlYWtzJywgJzM6MzonLCB0ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGl0Y29kZT0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCisgICAgICAgIHNlbGYuY2hlY2tfZXhlY3V0ZWRfdGVzdHMob3V0cHV0LCBbdGVzdF0sIGZhaWxlZD10ZXN0KQorCisgICAgICAgIGxpbmUgPSAnYmVnaW5uaW5nIDYgcmVwZXRpdGlvbnNcbjEyMzQ1NlxuLi4uLi4uXG4nCisgICAgICAgIHNlbGYuY2hlY2tfbGluZShvdXRwdXQsIHJlLmVzY2FwZShsaW5lKSkKKworICAgICAgICBsaW5lMiA9ICclcyBsZWFrZWQgWzEsIDEsIDFdIGZpbGUgZGVzY3JpcHRvcnMsIHN1bT0zXG4nICUgdGVzdAorICAgICAgICBzZWxmLmFzc2VydEluKGxpbmUyLCBvdXRwdXQpCisKKyAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lKSBhcyBmcDoKKyAgICAgICAgICAgIHJlZmxvZyA9IGZwLnJlYWQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihsaW5lMiwgcmVmbG9nKQorCisgICAgZGVmIHRlc3RfbGlzdF90ZXN0cyhzZWxmKToKKyAgICAgICAgIyB0ZXN0IC0tbGlzdC10ZXN0cworICAgICAgICB0ZXN0cyA9IFtzZWxmLmNyZWF0ZV90ZXN0KCkgZm9yIGkgaW4gcmFuZ2UoNSldCisgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3Rlc3RzKCctLWxpc3QtdGVzdHMnLCAqdGVzdHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0cHV0LnJzdHJpcCgpLnNwbGl0bGluZXMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0cykKKwogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9yaWNoY21wLnB5IGIvTGliL3Rlc3QvdGVzdF9yaWNoY21wLnB5CmluZGV4IDE1ODJjYWEuLjU4NzI5YTkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcmljaGNtcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3JpY2hjbXAucHkKQEAgLTI1Myw2ICsyNTMsMzEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGEgIT0gYikKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGEgPCBiKQogCisgICAgZGVmIHRlc3RfZXhjZXB0aW9uX21lc3NhZ2Uoc2VsZik6CisgICAgICAgIGNsYXNzIFNwYW06CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgdGVzdHMgPSBbCisgICAgICAgICAgICAobGFtYmRhOiA0MiA8IE5vbmUsIHIiJzwnIC4qIG9mICdpbnQnIGFuZCAnTm9uZVR5cGUnIiksCisgICAgICAgICAgICAobGFtYmRhOiBOb25lIDwgNDIsIHIiJzwnIC4qIG9mICdOb25lVHlwZScgYW5kICdpbnQnIiksCisgICAgICAgICAgICAobGFtYmRhOiA0MiA+IE5vbmUsIHIiJz4nIC4qIG9mICdpbnQnIGFuZCAnTm9uZVR5cGUnIiksCisgICAgICAgICAgICAobGFtYmRhOiAiZm9vIiA8IE5vbmUsIHIiJzwnIC4qIG9mICdzdHInIGFuZCAnTm9uZVR5cGUnIiksCisgICAgICAgICAgICAobGFtYmRhOiAiZm9vIiA+PSA2NjYsIHIiJz49JyAuKiBvZiAnc3RyJyBhbmQgJ2ludCciKSwKKyAgICAgICAgICAgIChsYW1iZGE6IDQyIDw9IE5vbmUsIHIiJzw9JyAuKiBvZiAnaW50JyBhbmQgJ05vbmVUeXBlJyIpLAorICAgICAgICAgICAgKGxhbWJkYTogNDIgPj0gTm9uZSwgciInPj0nIC4qIG9mICdpbnQnIGFuZCAnTm9uZVR5cGUnIiksCisgICAgICAgICAgICAobGFtYmRhOiA0MiA8IFtdLCByIic8JyAuKiBvZiAnaW50JyBhbmQgJ2xpc3QnIiksCisgICAgICAgICAgICAobGFtYmRhOiAoKSA+IFtdLCByIic+JyAuKiBvZiAndHVwbGUnIGFuZCAnbGlzdCciKSwKKyAgICAgICAgICAgIChsYW1iZGE6IE5vbmUgPj0gTm9uZSwgciInPj0nIC4qIG9mICdOb25lVHlwZScgYW5kICdOb25lVHlwZSciKSwKKyAgICAgICAgICAgIChsYW1iZGE6IFNwYW0oKSA8IDQyLCByIic8JyAuKiBvZiAnU3BhbScgYW5kICdpbnQnIiksCisgICAgICAgICAgICAobGFtYmRhOiA0MiA8IFNwYW0oKSwgciInPCcgLiogb2YgJ2ludCcgYW5kICdTcGFtJyIpLAorICAgICAgICAgICAgKGxhbWJkYTogU3BhbSgpIDw9IFNwYW0oKSwgciInPD0nIC4qIG9mICdTcGFtJyBhbmQgJ1NwYW0nIiksCisgICAgICAgIF0KKyAgICAgICAgZm9yIGksIHRlc3QgaW4gZW51bWVyYXRlKHRlc3RzKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHRlc3Q9aSk6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgdGVzdFsxXSk6CisgICAgICAgICAgICAgICAgICAgIHRlc3RbMF0oKQorCisKIGNsYXNzIERpY3RUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2RpY3RzKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9ybGNvbXBsZXRlci5weSBiL0xpYi90ZXN0L3Rlc3Rfcmxjb21wbGV0ZXIucHkKaW5kZXggODUzZTc3My4uMGRjMTA4MCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9ybGNvbXBsZXRlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X3JsY29tcGxldGVyLnB5CkBAIC0xLDExICsxLDEyIEBACiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCB1bml0dGVzdC5tb2NrCitmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IHBhdGNoCiBpbXBvcnQgYnVpbHRpbnMKIGltcG9ydCBybGNvbXBsZXRlcgogCiBjbGFzcyBDb21wbGV0ZU1lOgogICAgICIiIiBUcml2aWFsIGNsYXNzIHVzZWQgaW4gdGVzdGluZyBybGNvbXBsZXRlci5Db21wbGV0ZXIuICIiIgogICAgIHNwYW0gPSAxCisgICAgX2hhbSA9IDIKIAogCiBjbGFzcyBUZXN0Umxjb21wbGV0ZXIodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNTIsMTggKzUzLDMyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgWydzdHIue30oJy5mb3JtYXQoeCkgZm9yIHggaW4gZGlyKHN0cikKICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgeC5zdGFydHN3aXRoKCdzJyldKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc3RkY29tcGxldGVyLmF0dHJfbWF0Y2hlcygndHVwbGUuZm9vc3BhbWVnZycpLCBbXSkKKyAgICAgICAgZXhwZWN0ZWQgPSBzb3J0ZWQoeydOb25lLiVzJXMnICUgKHgsICcoJyBpZiB4ICE9ICdfX2RvY19fJyBlbHNlICcnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gZGlyKE5vbmUpfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnN0ZGNvbXBsZXRlci5hdHRyX21hdGNoZXMoJ05vbmUuJyksIGV4cGVjdGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc3RkY29tcGxldGVyLmF0dHJfbWF0Y2hlcygnTm9uZS5fJyksIGV4cGVjdGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc3RkY29tcGxldGVyLmF0dHJfbWF0Y2hlcygnTm9uZS5fXycpLCBleHBlY3RlZCkKIAogICAgICAgICAjIHRlc3Qgd2l0aCBhIGN1c3RvbWl6ZWQgbmFtZXNwYWNlCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb21wbGV0ZXIuYXR0cl9tYXRjaGVzKCdDb21wbGV0ZU1lLnNwJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgWydDb21wbGV0ZU1lLnNwYW0nXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbXBsZXRlci5hdHRyX21hdGNoZXMoJ0NvbXBsZXRlbWUuZWdnJyksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29tcGxldGVyLmF0dHJfbWF0Y2hlcygnQ29tcGxldGVNZS4nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbJ0NvbXBsZXRlTWUubXJvKCcsICdDb21wbGV0ZU1lLnNwYW0nXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbXBsZXRlci5hdHRyX21hdGNoZXMoJ0NvbXBsZXRlTWUuXycpLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsnQ29tcGxldGVNZS5faGFtJ10pCisgICAgICAgIG1hdGNoZXMgPSBzZWxmLmNvbXBsZXRlci5hdHRyX21hdGNoZXMoJ0NvbXBsZXRlTWUuX18nKQorICAgICAgICBmb3IgeCBpbiBtYXRjaGVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHguc3RhcnRzd2l0aCgnQ29tcGxldGVNZS5fXycpLCB4KQorICAgICAgICBzZWxmLmFzc2VydEluKCdDb21wbGV0ZU1lLl9fbmFtZV9fJywgbWF0Y2hlcykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignQ29tcGxldGVNZS5fX25ld19fKCcsIG1hdGNoZXMpCiAKLSAgICAgICAgQ29tcGxldGVNZS5tZSA9IENvbXBsZXRlTWUKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbXBsZXRlci5hdHRyX21hdGNoZXMoJ0NvbXBsZXRlTWUubWUubWUuc3AnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBbJ0NvbXBsZXRlTWUubWUubWUuc3BhbSddKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29tcGxldGVyLmF0dHJfbWF0Y2hlcygnZWdnLnMnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBbJ2VnZy57fSgnLmZvcm1hdCh4KSBmb3IgeCBpbiBkaXIoc3RyKQotICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB4LnN0YXJ0c3dpdGgoJ3MnKV0pCisgICAgICAgIHdpdGggcGF0Y2gub2JqZWN0KENvbXBsZXRlTWUsICJtZSIsIENvbXBsZXRlTWUsIGNyZWF0ZT1UcnVlKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb21wbGV0ZXIuYXR0cl9tYXRjaGVzKCdDb21wbGV0ZU1lLm1lLm1lLnNwJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnQ29tcGxldGVNZS5tZS5tZS5zcGFtJ10pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29tcGxldGVyLmF0dHJfbWF0Y2hlcygnZWdnLnMnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydlZ2cue30oJy5mb3JtYXQoeCkgZm9yIHggaW4gZGlyKHN0cikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHguc3RhcnRzd2l0aCgncycpXSkKIAogICAgIGRlZiB0ZXN0X2V4Y2Vzc2l2ZV9nZXRhdHRyKHNlbGYpOgogICAgICAgICAjIEVuc3VyZSBnZXRhdHRyKCkgaXMgaW52b2tlZCBubyBtb3JlIHRoYW4gb25jZSBwZXIgYXR0cmlidXRlCkBAIC03OCwxNCArOTMsMjcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ2YuYicsIDApLCAnZi5iYXInKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuY2FsbHMsIDEpCiAKKyAgICBkZWYgdGVzdF91bmNyZWF0ZWRfYXR0cihzZWxmKToKKyAgICAgICAgIyBBdHRyaWJ1dGVzIGxpa2UgcHJvcGVydGllcyBhbmQgc2xvdHMgc2hvdWxkIGJlIGNvbXBsZXRlZCBldmVuIHdoZW4KKyAgICAgICAgIyB0aGV5IGhhdmVuJ3QgYmVlbiBjcmVhdGVkIG9uIGFuIGluc3RhbmNlCisgICAgICAgIGNsYXNzIEZvbzoKKyAgICAgICAgICAgIF9fc2xvdHNfXyA9ICgiYmFyIiwpCisgICAgICAgIGNvbXBsZXRlciA9IHJsY29tcGxldGVyLkNvbXBsZXRlcihkaWN0KGY9Rm9vKCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgnZi4nLCAwKSwgJ2YuYmFyJykKKwogICAgIEB1bml0dGVzdC5tb2NrLnBhdGNoKCdybGNvbXBsZXRlci5fcmVhZGxpbmVfYXZhaWxhYmxlJywgRmFsc2UpCiAgICAgZGVmIHRlc3RfY29tcGxldGUoc2VsZik6CiAgICAgICAgIGNvbXBsZXRlciA9IHJsY29tcGxldGVyLkNvbXBsZXRlcigpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCcnLCAwKSwgJ1x0JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ2EnLCAwKSwgJ2FuZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCdhJywgMSksICdhcycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCdhcycsIDIpLCAnYXNzZXJ0JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ2FuJywgMCksICdhbmQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgnYScsIDApLCAnYW5kICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCdhJywgMSksICdhcyAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgnYXMnLCAyKSwgJ2Fzc2VydCAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgnYW4nLCAwKSwgJ2FuZCAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgncGEnLCAwKSwgJ3Bhc3MnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgnRmEnLCAwKSwgJ0ZhbHNlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ2VsJywgMCksICdlbGlmICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCdlbCcsIDEpLCAnZWxzZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCd0cicsIDApLCAndHJ5OicpCiAKICAgICBkZWYgdGVzdF9kdXBsaWNhdGVfZ2xvYmFscyhzZWxmKToKICAgICAgICAgbmFtZXNwYWNlID0gewpAQCAtOTgsOSArMTI2LDEwIEBACiAgICAgICAgIGNvbXBsZXRlciA9IHJsY29tcGxldGVyLkNvbXBsZXRlcihuYW1lc3BhY2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCdGYWxzZScsIDApLCAnRmFsc2UnKQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShjb21wbGV0ZXIuY29tcGxldGUoJ0ZhbHNlJywgMSkpICAjIE5vIGR1cGxpY2F0ZXMKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ2Fzc2VydCcsIDApLCAnYXNzZXJ0JykKKyAgICAgICAgIyBTcGFjZSBvciBjb2xvbiBhZGRlZCBkdWUgdG8gYmVpbmcgYSByZXNlcnZlZCBrZXl3b3JkCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCdhc3NlcnQnLCAwKSwgJ2Fzc2VydCAnKQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShjb21wbGV0ZXIuY29tcGxldGUoJ2Fzc2VydCcsIDEpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgndHJ5JywgMCksICd0cnknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgndHJ5JywgMCksICd0cnk6JykKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY29tcGxldGVyLmNvbXBsZXRlKCd0cnknLCAxKSkKICAgICAgICAgIyBObyBvcGVuaW5nIGJyYWNrZXQgIigiIGJlY2F1c2Ugd2Ugb3ZlcnJvZGUgdGhlIGJ1aWx0LWluIGNsYXNzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCdtZW1vcnl2aWV3JywgMCksICdtZW1vcnl2aWV3JykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfcm9ib3RwYXJzZXIucHkgYi9MaWIvdGVzdC90ZXN0X3JvYm90cGFyc2VyLnB5CmluZGV4IGQwMTI2NmYuLjBmNjRiYTggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfcm9ib3RwYXJzZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9yb2JvdHBhcnNlci5weQpAQCAtMSw4ICsxLDggQEAKIGltcG9ydCBpbworaW1wb3J0IG9zCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB1cmxsaWIucm9ib3RwYXJzZXIKLWZyb20gdXJsbGliLmVycm9yIGltcG9ydCBVUkxFcnJvciwgSFRUUEVycm9yCi1mcm9tIHVybGxpYi5yZXF1ZXN0IGltcG9ydCB1cmxvcGVuCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gaHR0cC5zZXJ2ZXIgaW1wb3J0IEJhc2VIVFRQUmVxdWVzdEhhbmRsZXIsIEhUVFBTZXJ2ZXIKIHRyeToKQEAgLTExLDI0NiArMTEsMjM5IEBACiAgICAgdGhyZWFkaW5nID0gTm9uZQogCiAKLWNsYXNzIFJvYm90VGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpbmRleD1Ob25lLCBwYXJzZXI9Tm9uZSwgdXJsPU5vbmUsIGdvb2Q9Tm9uZSwgYWdlbnQ9Tm9uZSk6Ci0gICAgICAgICMgd29ya2Fyb3VuZCB0byBtYWtlIHVuaXR0ZXN0IGRpc2NvdmVyeSB3b3JrIChzZWUgIzE3MDY2KQotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShpbmRleCwgaW50KToKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZS5fX2luaXRfXyhzZWxmKQotICAgICAgICBpZiBnb29kOgotICAgICAgICAgICAgc2VsZi5zdHIgPSAiUm9ib3RUZXN0KCVkLCBnb29kLCAlcykiICUgKGluZGV4LCB1cmwpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLnN0ciA9ICJSb2JvdFRlc3QoJWQsIGJhZCwgJXMpIiAlIChpbmRleCwgdXJsKQotICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcgotICAgICAgICBzZWxmLnVybCA9IHVybAotICAgICAgICBzZWxmLmdvb2QgPSBnb29kCi0gICAgICAgIHNlbGYuYWdlbnQgPSBhZ2VudAorY2xhc3MgQmFzZVJvYm90VGVzdDoKKyAgICByb2JvdHNfdHh0ID0gJycKKyAgICBhZ2VudCA9ICd0ZXN0X3JvYm90cGFyc2VyJworICAgIGdvb2QgPSBbXQorICAgIGJhZCA9IFtdCiAKLSAgICBkZWYgcnVuVGVzdChzZWxmKToKLSAgICAgICAgaWYgaXNpbnN0YW5jZShzZWxmLnVybCwgdHVwbGUpOgotICAgICAgICAgICAgYWdlbnQsIHVybCA9IHNlbGYudXJsCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB1cmwgPSBzZWxmLnVybAotICAgICAgICAgICAgYWdlbnQgPSBzZWxmLmFnZW50Ci0gICAgICAgIGlmIHNlbGYuZ29vZDoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnBhcnNlci5jYW5fZmV0Y2goYWdlbnQsIHVybCkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucGFyc2VyLmNhbl9mZXRjaChhZ2VudCwgdXJsKSkKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIGxpbmVzID0gaW8uU3RyaW5nSU8oc2VsZi5yb2JvdHNfdHh0KS5yZWFkbGluZXMoKQorICAgICAgICBzZWxmLnBhcnNlciA9IHVybGxpYi5yb2JvdHBhcnNlci5Sb2JvdEZpbGVQYXJzZXIoKQorICAgICAgICBzZWxmLnBhcnNlci5wYXJzZShsaW5lcykKIAotICAgIGRlZiBfX3N0cl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5zdHIKKyAgICBkZWYgZ2V0X2FnZW50X2FuZF91cmwoc2VsZiwgdXJsKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZSh1cmwsIHR1cGxlKToKKyAgICAgICAgICAgIGFnZW50LCB1cmwgPSB1cmwKKyAgICAgICAgICAgIHJldHVybiBhZ2VudCwgdXJsCisgICAgICAgIHJldHVybiBzZWxmLmFnZW50LCB1cmwKIAotdGVzdHMgPSB1bml0dGVzdC5UZXN0U3VpdGUoKQorICAgIGRlZiB0ZXN0X2dvb2RfdXJscyhzZWxmKToKKyAgICAgICAgZm9yIHVybCBpbiBzZWxmLmdvb2Q6CisgICAgICAgICAgICBhZ2VudCwgdXJsID0gc2VsZi5nZXRfYWdlbnRfYW5kX3VybCh1cmwpCisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCh1cmw9dXJsLCBhZ2VudD1hZ2VudCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYucGFyc2VyLmNhbl9mZXRjaChhZ2VudCwgdXJsKSkKIAotZGVmIFJvYm90VGVzdChpbmRleCwgcm9ib3RzX3R4dCwgZ29vZF91cmxzLCBiYWRfdXJscywKLSAgICAgICAgICAgICAgYWdlbnQ9InRlc3Rfcm9ib3RwYXJzZXIiKToKKyAgICBkZWYgdGVzdF9iYWRfdXJscyhzZWxmKToKKyAgICAgICAgZm9yIHVybCBpbiBzZWxmLmJhZDoKKyAgICAgICAgICAgIGFnZW50LCB1cmwgPSBzZWxmLmdldF9hZ2VudF9hbmRfdXJsKHVybCkKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHVybD11cmwsIGFnZW50PWFnZW50KToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucGFyc2VyLmNhbl9mZXRjaChhZ2VudCwgdXJsKSkKIAotICAgIGxpbmVzID0gaW8uU3RyaW5nSU8ocm9ib3RzX3R4dCkucmVhZGxpbmVzKCkKLSAgICBwYXJzZXIgPSB1cmxsaWIucm9ib3RwYXJzZXIuUm9ib3RGaWxlUGFyc2VyKCkKLSAgICBwYXJzZXIucGFyc2UobGluZXMpCi0gICAgZm9yIHVybCBpbiBnb29kX3VybHM6Ci0gICAgICAgIHRlc3RzLmFkZFRlc3QoUm9ib3RUZXN0Q2FzZShpbmRleCwgcGFyc2VyLCB1cmwsIDEsIGFnZW50KSkKLSAgICBmb3IgdXJsIGluIGJhZF91cmxzOgotICAgICAgICB0ZXN0cy5hZGRUZXN0KFJvYm90VGVzdENhc2UoaW5kZXgsIHBhcnNlciwgdXJsLCAwLCBhZ2VudCkpCiAKLSMgRXhhbXBsZXMgZnJvbSBodHRwOi8vd3d3LnJvYm90c3R4dC5vcmcvd2Mvbm9yb2JvdHMuaHRtbCAoZmV0Y2hlZCAyMDAyKQotCi0jIDEuCi1kb2MgPSAiIiIKK2NsYXNzIFVzZXJBZ2VudFdpbGRjYXJkVGVzdChCYXNlUm9ib3RUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgcm9ib3RzX3R4dCA9ICIiIlwKIFVzZXItYWdlbnQ6ICoKIERpc2FsbG93OiAvY3liZXJ3b3JsZC9tYXAvICMgVGhpcyBpcyBhbiBpbmZpbml0ZSB2aXJ0dWFsIFVSTCBzcGFjZQogRGlzYWxsb3c6IC90bXAvICMgdGhlc2Ugd2lsbCBzb29uIGRpc2FwcGVhcgogRGlzYWxsb3c6IC9mb28uaHRtbAotIiIiCisgICAgIiIiCisgICAgZ29vZCA9IFsnLycsICcvdGVzdC5odG1sJ10KKyAgICBiYWQgPSBbJy9jeWJlcndvcmxkL21hcC9pbmRleC5odG1sJywgJy90bXAveHh4JywgJy9mb28uaHRtbCddCiAKLWdvb2QgPSBbJy8nLCcvdGVzdC5odG1sJ10KLWJhZCA9IFsnL2N5YmVyd29ybGQvbWFwL2luZGV4Lmh0bWwnLCcvdG1wL3h4eCcsJy9mb28uaHRtbCddCiAKLVJvYm90VGVzdCgxLCBkb2MsIGdvb2QsIGJhZCkKLQotIyAyLgotZG9jID0gIiIiCitjbGFzcyBDcmF3bERlbGF5QW5kQ3VzdG9tQWdlbnRUZXN0KEJhc2VSb2JvdFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICByb2JvdHNfdHh0ID0gIiIiXAogIyByb2JvdHMudHh0IGZvciBodHRwOi8vd3d3LmV4YW1wbGUuY29tLwogCiBVc2VyLWFnZW50OiAqCitDcmF3bC1kZWxheTogMQorUmVxdWVzdC1yYXRlOiAzLzE1CiBEaXNhbGxvdzogL2N5YmVyd29ybGQvbWFwLyAjIFRoaXMgaXMgYW4gaW5maW5pdGUgdmlydHVhbCBVUkwgc3BhY2UKIAogIyBDeWJlcm1hcHBlciBrbm93cyB3aGVyZSB0byBnby4KIFVzZXItYWdlbnQ6IGN5YmVybWFwcGVyCiBEaXNhbGxvdzoKKyAgICAiIiIKKyAgICBnb29kID0gWycvJywgJy90ZXN0Lmh0bWwnLCAoJ2N5YmVybWFwcGVyJywgJy9jeWJlcndvcmxkL21hcC9pbmRleC5odG1sJyldCisgICAgYmFkID0gWycvY3liZXJ3b3JsZC9tYXAvaW5kZXguaHRtbCddCiAKLSIiIgogCi1nb29kID0gWycvJywnL3Rlc3QuaHRtbCcsKCdjeWJlcm1hcHBlcicsJy9jeWJlcndvcmxkL21hcC9pbmRleC5odG1sJyldCi1iYWQgPSBbJy9jeWJlcndvcmxkL21hcC9pbmRleC5odG1sJ10KLQotUm9ib3RUZXN0KDIsIGRvYywgZ29vZCwgYmFkKQotCi0jIDMuCi1kb2MgPSAiIiIKK2NsYXNzIFJlamVjdEFsbFJvYm90c1Rlc3QoQmFzZVJvYm90VGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIHJvYm90c190eHQgPSAiIiJcCiAjIGdvIGF3YXkKIFVzZXItYWdlbnQ6ICoKIERpc2FsbG93OiAvCi0iIiIKKyAgICAiIiIKKyAgICBnb29kID0gW10KKyAgICBiYWQgPSBbJy9jeWJlcndvcmxkL21hcC9pbmRleC5odG1sJywgJy8nLCAnL3RtcC8nXQogCi1nb29kID0gW10KLWJhZCA9IFsnL2N5YmVyd29ybGQvbWFwL2luZGV4Lmh0bWwnLCcvJywnL3RtcC8nXQogCi1Sb2JvdFRlc3QoMywgZG9jLCBnb29kLCBiYWQpCitjbGFzcyBCYXNlUmVxdWVzdFJhdGVUZXN0KEJhc2VSb2JvdFRlc3QpOgogCi0jIEV4YW1wbGVzIGZyb20gaHR0cDovL3d3dy5yb2JvdHN0eHQub3JnL3djL25vcm9ib3RzLXJmYy5odG1sIChmZXRjaGVkIDIwMDIpCisgICAgZGVmIHRlc3RfcmVxdWVzdF9yYXRlKHNlbGYpOgorICAgICAgICBmb3IgdXJsIGluIHNlbGYuZ29vZCArIHNlbGYuYmFkOgorICAgICAgICAgICAgYWdlbnQsIHVybCA9IHNlbGYuZ2V0X2FnZW50X2FuZF91cmwodXJsKQorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QodXJsPXVybCwgYWdlbnQ9YWdlbnQpOgorICAgICAgICAgICAgICAgIGlmIHNlbGYuY3Jhd2xfZGVsYXk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnBhcnNlci5jcmF3bF9kZWxheShhZ2VudCksIHNlbGYuY3Jhd2xfZGVsYXkKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIGlmIHNlbGYucmVxdWVzdF9yYXRlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wYXJzZXIucmVxdWVzdF9yYXRlKGFnZW50KS5yZXF1ZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVxdWVzdF9yYXRlLnJlcXVlc3RzCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucGFyc2VyLnJlcXVlc3RfcmF0ZShhZ2VudCkuc2Vjb25kcywKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVxdWVzdF9yYXRlLnNlY29uZHMKKyAgICAgICAgICAgICAgICAgICAgKQogCi0jIDQuCi1kb2MgPSAiIiIKKworY2xhc3MgQ3Jhd2xEZWxheUFuZFJlcXVlc3RSYXRlVGVzdChCYXNlUmVxdWVzdFJhdGVUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgcm9ib3RzX3R4dCA9ICIiIlwKIFVzZXItYWdlbnQ6IGZpZ3RyZWUKK0NyYXdsLWRlbGF5OiAzCitSZXF1ZXN0LXJhdGU6IDkvMzAKIERpc2FsbG93OiAvdG1wCiBEaXNhbGxvdzogL2ElM2NkLmh0bWwKIERpc2FsbG93OiAvYSUyZmIuaHRtbAogRGlzYWxsb3c6IC8lN2Vqb2UvaW5kZXguaHRtbAotIiIiCisgICAgIiIiCisgICAgYWdlbnQgPSAnZmlndHJlZScKKyAgICByZXF1ZXN0X3JhdGUgPSBuYW1lZHR1cGxlKCdyZXFfcmF0ZScsICdyZXF1ZXN0cyBzZWNvbmRzJykoOSwgMzApCisgICAgY3Jhd2xfZGVsYXkgPSAzCisgICAgZ29vZCA9IFsoJ2ZpZ3RyZWUnLCAnL2Zvby5odG1sJyldCisgICAgYmFkID0gWycvdG1wJywgJy90bXAuaHRtbCcsICcvdG1wL2EuaHRtbCcsICcvYSUzY2QuaHRtbCcsICcvYSUzQ2QuaHRtbCcsCisgICAgICAgICAgICcvYSUyZmIuaHRtbCcsICcvfmpvZS9pbmRleC5odG1sJ10KIAotZ29vZCA9IFtdICMgWEZBSUwgJy9hL2IuaHRtbCcKLWJhZCA9IFsnL3RtcCcsJy90bXAuaHRtbCcsJy90bXAvYS5odG1sJywKLSAgICAgICAnL2ElM2NkLmh0bWwnLCcvYSUzQ2QuaHRtbCcsJy9hJTJmYi5odG1sJywKLSAgICAgICAnL35qb2UvaW5kZXguaHRtbCcKLSAgICAgICBdCiAKLVJvYm90VGVzdCg0LCBkb2MsIGdvb2QsIGJhZCwgJ2ZpZ3RyZWUnKQotUm9ib3RUZXN0KDUsIGRvYywgZ29vZCwgYmFkLCAnRmlnVHJlZSBSb2JvdCBsaWJ3d3ctcGVybC81LjA0JykKK2NsYXNzIERpZmZlcmVudEFnZW50VGVzdChDcmF3bERlbGF5QW5kUmVxdWVzdFJhdGVUZXN0KToKKyAgICBhZ2VudCA9ICdGaWdUcmVlIFJvYm90IGxpYnd3dy1wZXJsLzUuMDQnCisgICAgIyB0aGVzZSBhcmUgbm90IGFjdHVhbGx5IHRlc3RlZCwgYnV0IHdlIHN0aWxsIG5lZWQgdG8gcGFyc2UgaXQKKyAgICAjIGluIG9yZGVyIHRvIGFjY29tbW9kYXRlIHRoZSBpbnB1dCBwYXJhbWV0ZXJzCisgICAgcmVxdWVzdF9yYXRlID0gTm9uZQorICAgIGNyYXdsX2RlbGF5ID0gTm9uZQogCi0jIDYuCi1kb2MgPSAiIiIKKworY2xhc3MgSW52YWxpZFJlcXVlc3RSYXRlVGVzdChCYXNlUm9ib3RUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgcm9ib3RzX3R4dCA9ICIiIlwKIFVzZXItYWdlbnQ6ICoKIERpc2FsbG93OiAvdG1wLwogRGlzYWxsb3c6IC9hJTNDZC5odG1sCiBEaXNhbGxvdzogL2EvYi5odG1sCiBEaXNhbGxvdzogLyU3ZWpvZS9pbmRleC5odG1sCi0iIiIKK0NyYXdsLWRlbGF5OiAzCitSZXF1ZXN0LXJhdGU6IDkvYmFuYW5hCisgICAgIiIiCisgICAgZ29vZCA9IFsnL3RtcCddCisgICAgYmFkID0gWycvdG1wLycsICcvdG1wL2EuaHRtbCcsICcvYSUzY2QuaHRtbCcsICcvYSUzQ2QuaHRtbCcsICcvYS9iLmh0bWwnLAorICAgICAgICAgICAnLyU3RWpvZS9pbmRleC5odG1sJ10KKyAgICBjcmF3bF9kZWxheSA9IDMKIAotZ29vZCA9IFsnL3RtcCcsXSAjIFhGQUlMOiAnL2ElMmZiLmh0bWwnCi1iYWQgPSBbJy90bXAvJywnL3RtcC9hLmh0bWwnLAotICAgICAgICcvYSUzY2QuaHRtbCcsJy9hJTNDZC5odG1sJywiL2EvYi5odG1sIiwKLSAgICAgICAnLyU3RWpvZS9pbmRleC5odG1sJ10KIAotUm9ib3RUZXN0KDYsIGRvYywgZ29vZCwgYmFkKQotCi0jIEZyb20gYnVnIHJlcG9ydCAjNTIzMDQxCi0KLSMgNy4KLWRvYyA9ICIiIgorY2xhc3MgSW52YWxpZENyYXdsRGVsYXlUZXN0KEJhc2VSb2JvdFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIEZyb20gYnVnIHJlcG9ydCAjNTIzMDQxCisgICAgcm9ib3RzX3R4dCA9ICIiIlwKIFVzZXItQWdlbnQ6ICoKIERpc2FsbG93OiAvLgotIiIiCitDcmF3bC1kZWxheTogcGVhcnMKKyAgICAiIiIKKyAgICBnb29kID0gWycvZm9vLmh0bWwnXQorICAgICMgYnVnIHJlcG9ydCBzYXlzICIvIiBzaG91bGQgYmUgZGVuaWVkLCBidXQgdGhhdCBpcyBub3QgaW4gdGhlIFJGQworICAgIGJhZCA9IFtdCiAKLWdvb2QgPSBbJy9mb28uaHRtbCddCi1iYWQgPSBbXSAjIEJ1ZyByZXBvcnQgc2F5cyAiLyIgc2hvdWxkIGJlIGRlbmllZCwgYnV0IHRoYXQgaXMgbm90IGluIHRoZSBSRkMKIAotUm9ib3RUZXN0KDcsIGRvYywgZ29vZCwgYmFkKQotCi0jIEZyb20gR29vZ2xlOiBodHRwOi8vd3d3Lmdvb2dsZS5jb20vc3VwcG9ydC93ZWJtYXN0ZXJzL2Jpbi9hbnN3ZXIucHk/aGw9ZW4mYW5zd2VyPTQwMzY0Ci0KLSMgOC4KLWRvYyA9ICIiIgorY2xhc3MgQW5vdGhlckludmFsaWRSZXF1ZXN0UmF0ZVRlc3QoQmFzZVJvYm90VGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgYWxzbyB0ZXN0IHRoYXQgQWxsb3cgYW5kIERpYXNhbGxvdyB3b3JrcyB3ZWxsIHdpdGggZWFjaCBvdGhlcgorICAgIHJvYm90c190eHQgPSAiIiJcCiBVc2VyLWFnZW50OiBHb29nbGVib3QKIEFsbG93OiAvZm9sZGVyMS9teWZpbGUuaHRtbAogRGlzYWxsb3c6IC9mb2xkZXIxLwotIiIiCitSZXF1ZXN0LXJhdGU6IHdoYWxlL2JhbmFuYQorICAgICIiIgorICAgIGFnZW50ID0gJ0dvb2dsZWJvdCcKKyAgICBnb29kID0gWycvZm9sZGVyMS9teWZpbGUuaHRtbCddCisgICAgYmFkID0gWycvZm9sZGVyMS9hbm90aGVyZmlsZS5odG1sJ10KIAotZ29vZCA9IFsnL2ZvbGRlcjEvbXlmaWxlLmh0bWwnXQotYmFkID0gWycvZm9sZGVyMS9hbm90aGVyZmlsZS5odG1sJ10KIAotUm9ib3RUZXN0KDgsIGRvYywgZ29vZCwgYmFkLCBhZ2VudD0iR29vZ2xlYm90IikKLQotIyA5LiAgVGhpcyBmaWxlIGlzIGluY29ycmVjdCBiZWNhdXNlICJHb29nbGVib3QiIGlzIGEgc3Vic3RyaW5nIG9mCi0jICAgICAiR29vZ2xlYm90LU1vYmlsZSIsIHNvIHRlc3QgMTAgd29ya3MganVzdCBsaWtlIHRlc3QgOS4KLWRvYyA9ICIiIgorY2xhc3MgVXNlckFnZW50T3JkZXJpbmdUZXN0KEJhc2VSb2JvdFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIHRoZSBvcmRlciBvZiBVc2VyLWFnZW50IHNob3VsZCBiZSBjb3JyZWN0LiBub3RlCisgICAgIyB0aGF0IHRoaXMgZmlsZSBpcyBpbmNvcnJlY3QgYmVjYXVzZSAiR29vZ2xlYm90IiBpcyBhCisgICAgIyBzdWJzdHJpbmcgb2YgIkdvb2dsZWJvdC1Nb2JpbGUiCisgICAgcm9ib3RzX3R4dCA9ICIiIlwKIFVzZXItYWdlbnQ6IEdvb2dsZWJvdAogRGlzYWxsb3c6IC8KIAogVXNlci1hZ2VudDogR29vZ2xlYm90LU1vYmlsZQogQWxsb3c6IC8KLSIiIgotCi1nb29kID0gW10KLWJhZCA9IFsnL3NvbWV0aGluZy5qcGcnXQotCi1Sb2JvdFRlc3QoOSwgZG9jLCBnb29kLCBiYWQsIGFnZW50PSJHb29nbGVib3QiKQotCi1nb29kID0gW10KLWJhZCA9IFsnL3NvbWV0aGluZy5qcGcnXQotCi1Sb2JvdFRlc3QoMTAsIGRvYywgZ29vZCwgYmFkLCBhZ2VudD0iR29vZ2xlYm90LU1vYmlsZSIpCi0KLSMgMTEuICBHZXQgdGhlIG9yZGVyIGNvcnJlY3QuCi1kb2MgPSAiIiIKLVVzZXItYWdlbnQ6IEdvb2dsZWJvdC1Nb2JpbGUKLUFsbG93OiAvCi0KLVVzZXItYWdlbnQ6IEdvb2dsZWJvdAotRGlzYWxsb3c6IC8KLSIiIgotCi1nb29kID0gW10KLWJhZCA9IFsnL3NvbWV0aGluZy5qcGcnXQotCi1Sb2JvdFRlc3QoMTEsIGRvYywgZ29vZCwgYmFkLCBhZ2VudD0iR29vZ2xlYm90IikKLQotZ29vZCA9IFsnL3NvbWV0aGluZy5qcGcnXQotYmFkID0gW10KLQotUm9ib3RUZXN0KDEyLCBkb2MsIGdvb2QsIGJhZCwgYWdlbnQ9Ikdvb2dsZWJvdC1Nb2JpbGUiKQorICAgICIiIgorICAgIGFnZW50ID0gJ0dvb2dsZWJvdCcKKyAgICBiYWQgPSBbJy9zb21ldGhpbmcuanBnJ10KIAogCi0jIDEzLiAgR29vZ2xlIGFsc28gZ290IHRoZSBvcmRlciB3cm9uZyBpbiAjOC4gIFlvdSBuZWVkIHRvIHNwZWNpZnkgdGhlCi0jICAgICAgVVJMcyBmcm9tIG1vcmUgc3BlY2lmaWMgdG8gbW9yZSBnZW5lcmFsLgotZG9jID0gIiIiCitjbGFzcyBVc2VyQWdlbnRHb29nbGVNb2JpbGVUZXN0KFVzZXJBZ2VudE9yZGVyaW5nVGVzdCk6CisgICAgYWdlbnQgPSAnR29vZ2xlYm90LU1vYmlsZScKKworCitjbGFzcyBHb29nbGVVUkxPcmRlcmluZ1Rlc3QoQmFzZVJvYm90VGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgR29vZ2xlIGFsc28gZ290IHRoZSBvcmRlciB3cm9uZy4gWW91IG5lZWQKKyAgICAjIHRvIHNwZWNpZnkgdGhlIFVSTHMgZnJvbSBtb3JlIHNwZWNpZmljIHRvIG1vcmUgZ2VuZXJhbAorICAgIHJvYm90c190eHQgPSAiIiJcCiBVc2VyLWFnZW50OiBHb29nbGVib3QKIEFsbG93OiAvZm9sZGVyMS9teWZpbGUuaHRtbAogRGlzYWxsb3c6IC9mb2xkZXIxLwotIiIiCi0KLWdvb2QgPSBbJy9mb2xkZXIxL215ZmlsZS5odG1sJ10KLWJhZCA9IFsnL2ZvbGRlcjEvYW5vdGhlcmZpbGUuaHRtbCddCi0KLVJvYm90VGVzdCgxMywgZG9jLCBnb29kLCBiYWQsIGFnZW50PSJnb29nbGVib3QiKQorICAgICIiIgorICAgIGFnZW50ID0gJ2dvb2dsZWJvdCcKKyAgICBnb29kID0gWycvZm9sZGVyMS9teWZpbGUuaHRtbCddCisgICAgYmFkID0gWycvZm9sZGVyMS9hbm90aGVyZmlsZS5odG1sJ10KIAogCi0jIDE0LiBGb3IgaXNzdWUgIzYzMjUgKHF1ZXJ5IHN0cmluZyBzdXBwb3J0KQotZG9jID0gIiIiCitjbGFzcyBEaXNhbGxvd1F1ZXJ5U3RyaW5nVGVzdChCYXNlUm9ib3RUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBzZWUgaXNzdWUgIzYzMjUgZm9yIGRldGFpbHMKKyAgICByb2JvdHNfdHh0ID0gIiIiXAogVXNlci1hZ2VudDogKgogRGlzYWxsb3c6IC9zb21lL3BhdGg/bmFtZT12YWx1ZQotIiIiCisgICAgIiIiCisgICAgZ29vZCA9IFsnL3NvbWUvcGF0aCddCisgICAgYmFkID0gWycvc29tZS9wYXRoP25hbWU9dmFsdWUnXQogCi1nb29kID0gWycvc29tZS9wYXRoJ10KLWJhZCA9IFsnL3NvbWUvcGF0aD9uYW1lPXZhbHVlJ10KIAotUm9ib3RUZXN0KDE0LCBkb2MsIGdvb2QsIGJhZCkKLQotIyAxNS4gRm9yIGlzc3VlICM0MTA4IChvYmV5IGZpcnN0ICogZW50cnkpCi1kb2MgPSAiIiIKK2NsYXNzIFVzZUZpcnN0VXNlckFnZW50V2lsZGNhcmRUZXN0KEJhc2VSb2JvdFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIG9iZXkgZmlyc3QgKiBlbnRyeSAoIzQxMDgpCisgICAgcm9ib3RzX3R4dCA9ICIiIlwKIFVzZXItYWdlbnQ6ICoKIERpc2FsbG93OiAvc29tZS9wYXRoCiAKIFVzZXItYWdlbnQ6ICoKIERpc2FsbG93OiAvYW5vdGhlci9wYXRoCi0iIiIKKyAgICAiIiIKKyAgICBnb29kID0gWycvYW5vdGhlci9wYXRoJ10KKyAgICBiYWQgPSBbJy9zb21lL3BhdGgnXQogCi1nb29kID0gWycvYW5vdGhlci9wYXRoJ10KLWJhZCA9IFsnL3NvbWUvcGF0aCddCiAKLVJvYm90VGVzdCgxNSwgZG9jLCBnb29kLCBiYWQpCi0KLSMgMTYuIEVtcHR5IHF1ZXJ5IChpc3N1ZSAjMTc0MDMpLiBOb3JtYWxpemluZyB0aGUgdXJsIGZpcnN0LgotZG9jID0gIiIiCitjbGFzcyBFbXB0eVF1ZXJ5U3RyaW5nVGVzdChCYXNlUm9ib3RUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBub3JtYWxpemUgdGhlIFVSTCBmaXJzdCAoIzE3NDAzKQorICAgIHJvYm90c190eHQgPSAiIiJcCiBVc2VyLWFnZW50OiAqCiBBbGxvdzogL3NvbWUvcGF0aD8KIERpc2FsbG93OiAvYW5vdGhlci9wYXRoPwotIiIiCisgICAgIiIiCisgICAgZ29vZCA9IFsnL3NvbWUvcGF0aD8nXQorICAgIGJhZCA9IFsnL2Fub3RoZXIvcGF0aD8nXQogCi1nb29kID0gWycvc29tZS9wYXRoPyddCi1iYWQgPSBbJy9hbm90aGVyL3BhdGg/J10KIAotUm9ib3RUZXN0KDE2LCBkb2MsIGdvb2QsIGJhZCkKK2NsYXNzIERlZmF1bHRFbnRyeVRlc3QoQmFzZVJlcXVlc3RSYXRlVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIHJvYm90c190eHQgPSAiIiJcCitVc2VyLWFnZW50OiAqCitDcmF3bC1kZWxheTogMQorUmVxdWVzdC1yYXRlOiAzLzE1CitEaXNhbGxvdzogL2N5YmVyd29ybGQvbWFwLworICAgICIiIgorICAgIHJlcXVlc3RfcmF0ZSA9IG5hbWVkdHVwbGUoJ3JlcV9yYXRlJywgJ3JlcXVlc3RzIHNlY29uZHMnKSgzLCAxNSkKKyAgICBjcmF3bF9kZWxheSA9IDEKKyAgICBnb29kID0gWycvJywgJy90ZXN0Lmh0bWwnXQorICAgIGJhZCA9IFsnL2N5YmVyd29ybGQvbWFwL2luZGV4Lmh0bWwnXQogCiAKIGNsYXNzIFJvYm90SGFuZGxlcihCYXNlSFRUUFJlcXVlc3RIYW5kbGVyKToKQEAgLTI4Myw5ICsyNzYsNyBAQAogICAgICAgICBzZWxmLnQuam9pbigpCiAgICAgICAgIHNlbGYuc2VydmVyLnNlcnZlcl9jbG9zZSgpCiAKLSAgICBkZWYgcnVuVGVzdChzZWxmKToKLSAgICAgICAgc2VsZi50ZXN0UGFzc3dvcmRQcm90ZWN0ZWRTaXRlKCkKLQorICAgIEBzdXBwb3J0LnJlYXBfdGhyZWFkcwogICAgIGRlZiB0ZXN0UGFzc3dvcmRQcm90ZWN0ZWRTaXRlKHNlbGYpOgogICAgICAgICBhZGRyID0gc2VsZi5zZXJ2ZXIuc2VydmVyX2FkZHJlc3MKICAgICAgICAgdXJsID0gJ2h0dHA6Ly8nICsgc3VwcG9ydC5IT1NUICsgJzonICsgc3RyKGFkZHJbMV0pCkBAIC0yOTUsMjYgKzI4Niw0NyBAQAogICAgICAgICBwYXJzZXIucmVhZCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocGFyc2VyLmNhbl9mZXRjaCgiKiIsIHJvYm90c191cmwpKQogCi0gICAgZGVmIF9fc3RyX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAnJXMnICUgc2VsZi5fX2NsYXNzX18uX19uYW1lX18KIAogY2xhc3MgTmV0d29ya1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAotICAgIEB1bml0dGVzdC5za2lwKCdkb2VzIG5vdCBoYW5kbGUgdGhlIGd6aXAgZW5jb2RpbmcgZGVsaXZlcmVkIGJ5IHB5ZG90b3JnJykKLSAgICBkZWYgdGVzdFB5dGhvbk9yZyhzZWxmKToKLSAgICAgICAgc3VwcG9ydC5yZXF1aXJlcygnbmV0d29yaycpCi0gICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoJ3d3dy5weXRob24ub3JnJyk6Ci0gICAgICAgICAgICBwYXJzZXIgPSB1cmxsaWIucm9ib3RwYXJzZXIuUm9ib3RGaWxlUGFyc2VyKAotICAgICAgICAgICAgICAgICJodHRwOi8vd3d3LnB5dGhvbi5vcmcvcm9ib3RzLnR4dCIpCi0gICAgICAgICAgICBwYXJzZXIucmVhZCgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoCi0gICAgICAgICAgICAgICAgcGFyc2VyLmNhbl9mZXRjaCgiKiIsICJodHRwOi8vd3d3LnB5dGhvbi5vcmcvcm9ib3RzLnR4dCIpKQorICAgIGJhc2VfdXJsID0gJ2h0dHA6Ly93d3cucHl0aG9udGVzdC5uZXQvJworICAgIHJvYm90c190eHQgPSAne31lbHNld2hlcmUvcm9ib3RzLnR4dCcuZm9ybWF0KGJhc2VfdXJsKQogCi1kZWYgbG9hZF90ZXN0cyhsb2FkZXIsIHN1aXRlLCBwYXR0ZXJuKToKLSAgICBzdWl0ZSA9IHVuaXR0ZXN0Lm1ha2VTdWl0ZShOZXR3b3JrVGVzdENhc2UpCi0gICAgc3VpdGUuYWRkVGVzdCh0ZXN0cykKLSAgICBzdWl0ZS5hZGRUZXN0KFBhc3N3b3JkUHJvdGVjdGVkU2l0ZVRlc3RDYXNlKCkpCi0gICAgcmV0dXJuIHN1aXRlCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgc3VwcG9ydC5yZXF1aXJlcygnbmV0d29yaycpCisgICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoY2xzLmJhc2VfdXJsKToKKyAgICAgICAgICAgIGNscy5wYXJzZXIgPSB1cmxsaWIucm9ib3RwYXJzZXIuUm9ib3RGaWxlUGFyc2VyKGNscy5yb2JvdHNfdHh0KQorICAgICAgICAgICAgY2xzLnBhcnNlci5yZWFkKCkKKworICAgIGRlZiB1cmwoc2VsZiwgcGF0aCk6CisgICAgICAgIHJldHVybiAne317fXt9Jy5mb3JtYXQoCisgICAgICAgICAgICBzZWxmLmJhc2VfdXJsLCBwYXRoLCAnLycgaWYgbm90IG9zLnBhdGguc3BsaXRleHQocGF0aClbMV0gZWxzZSAnJworICAgICAgICApCisKKyAgICBkZWYgdGVzdF9iYXNpYyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnBhcnNlci5kaXNhbGxvd19hbGwpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5wYXJzZXIuYWxsb3dfYWxsKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoc2VsZi5wYXJzZXIubXRpbWUoKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnBhcnNlci5jcmF3bF9kZWxheSgnKicpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucGFyc2VyLnJlcXVlc3RfcmF0ZSgnKicpKQorCisgICAgZGVmIHRlc3RfY2FuX2ZldGNoKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5wYXJzZXIuY2FuX2ZldGNoKCcqJywgc2VsZi51cmwoJ2Vsc2V3aGVyZScpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnBhcnNlci5jYW5fZmV0Y2goJ051dGNoJywgc2VsZi5iYXNlX3VybCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5wYXJzZXIuY2FuX2ZldGNoKCdOdXRjaCcsIHNlbGYudXJsKCdicmlhbicpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnBhcnNlci5jYW5fZmV0Y2goJ051dGNoJywgc2VsZi51cmwoJ3dlYnN0YXRzJykpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucGFyc2VyLmNhbl9mZXRjaCgnKicsIHNlbGYudXJsKCd3ZWJzdGF0cycpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYucGFyc2VyLmNhbl9mZXRjaCgnKicsIHNlbGYuYmFzZV91cmwpKQorCisgICAgZGVmIHRlc3RfcmVhZF80MDQoc2VsZik6CisgICAgICAgIHBhcnNlciA9IHVybGxpYi5yb2JvdHBhcnNlci5Sb2JvdEZpbGVQYXJzZXIoc2VsZi51cmwoJ2ktcm9ib3QudHh0JykpCisgICAgICAgIHBhcnNlci5yZWFkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhcnNlci5hbGxvd19hbGwpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocGFyc2VyLmRpc2FsbG93X2FsbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZXIubXRpbWUoKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocGFyc2VyLmNyYXdsX2RlbGF5KCcqJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHBhcnNlci5yZXF1ZXN0X3JhdGUoJyonKSkKIAogaWYgX19uYW1lX189PSdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3J1bnB5LnB5IGIvTGliL3Rlc3QvdGVzdF9ydW5weS5weQppbmRleCBkYjU1ZGI3Li4wMmI0ZDYyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3J1bnB5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcnVucHkucHkKQEAgLTU3NywxMyArNTc3LDE0IEBACiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZWxmLl9kZWxfcGtnLCBwa2dfZGlyKQogICAgICAgICBmb3IgZGVwdGggaW4gcmFuZ2UoMiwgbWF4X2RlcHRoKzEpOgogICAgICAgICAgICAgc2VsZi5fYWRkX3JlbGF0aXZlX21vZHVsZXMocGtnX2RpciwgIiIsIGRlcHRoKQotICAgICAgICBmb3IgZmluZGVyLCBtb2RfbmFtZSwgaXNwa2cgaW4gcGtndXRpbC53YWxrX3BhY2thZ2VzKFtwa2dfZGlyXSk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZmluZGVyLAorICAgICAgICBmb3IgbW9kdWxlaW5mbyBpbiBwa2d1dGlsLndhbGtfcGFja2FnZXMoW3BrZ19kaXJdKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2R1bGVpbmZvLCBwa2d1dGlsLk1vZHVsZUluZm8pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9kdWxlaW5mby5tb2R1bGVfZmluZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydGxpYi5tYWNoaW5lcnkuRmlsZUZpbmRlcikKLSAgICAgICAgICAgIGlmIGlzcGtnOgotICAgICAgICAgICAgICAgIGV4cGVjdGVkX3BhY2thZ2VzLnJlbW92ZShtb2RfbmFtZSkKKyAgICAgICAgICAgIGlmIG1vZHVsZWluZm8uaXNwa2c6CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcGFja2FnZXMucmVtb3ZlKG1vZHVsZWluZm8ubmFtZSkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZXhwZWN0ZWRfbW9kdWxlcy5yZW1vdmUobW9kX25hbWUpCisgICAgICAgICAgICAgICAgZXhwZWN0ZWRfbW9kdWxlcy5yZW1vdmUobW9kdWxlaW5mby5uYW1lKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihleHBlY3RlZF9wYWNrYWdlcyksIDAsIGV4cGVjdGVkX3BhY2thZ2VzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihleHBlY3RlZF9tb2R1bGVzKSwgMCwgZXhwZWN0ZWRfbW9kdWxlcykKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zY2hlZC5weSBiL0xpYi90ZXN0L3Rlc3Rfc2NoZWQucHkKaW5kZXggZmU4ZTc4NS4uZWJmODg1NiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zY2hlZC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NjaGVkLnB5CkBAIC0yLDcgKzIsNiBAQAogaW1wb3J0IHNjaGVkCiBpbXBvcnQgdGltZQogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIHRyeToKICAgICBpbXBvcnQgdGhyZWFkaW5nCiBleGNlcHQgSW1wb3J0RXJyb3I6CkBAIC0xNzMsMTcgKzE3MiwyMyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNjaGVkdWxlci5xdWV1ZSwgW2UxLCBlMiwgZTMsIGU0LCBlNV0pCiAKICAgICBkZWYgdGVzdF9hcmdzX2t3YXJncyhzZWxmKToKLSAgICAgICAgZmxhZyA9IFtdCi0KKyAgICAgICAgc2VxID0gW10KICAgICAgICAgZGVmIGZ1bigqYSwgKipiKToKLSAgICAgICAgICAgIGZsYWcuYXBwZW5kKE5vbmUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEsICgxLDIsMykpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIHsiZm9vIjoxfSkKKyAgICAgICAgICAgIHNlcS5hcHBlbmQoKGEsIGIpKQogCisgICAgICAgIG5vdyA9IHRpbWUudGltZSgpCiAgICAgICAgIHNjaGVkdWxlciA9IHNjaGVkLnNjaGVkdWxlcih0aW1lLnRpbWUsIHRpbWUuc2xlZXApCi0gICAgICAgIHogPSBzY2hlZHVsZXIuZW50ZXJhYnMoMC4wMSwgMSwgZnVuLCBhcmd1bWVudD0oMSwyLDMpLCBrd2FyZ3M9eyJmb28iOjF9KQorICAgICAgICBzY2hlZHVsZXIuZW50ZXJhYnMobm93LCAxLCBmdW4pCisgICAgICAgIHNjaGVkdWxlci5lbnRlcmFicyhub3csIDEsIGZ1biwgYXJndW1lbnQ9KDEsIDIpKQorICAgICAgICBzY2hlZHVsZXIuZW50ZXJhYnMobm93LCAxLCBmdW4sIGFyZ3VtZW50PSgnYScsICdiJykpCisgICAgICAgIHNjaGVkdWxlci5lbnRlcmFicyhub3csIDEsIGZ1biwgYXJndW1lbnQ9KDEsIDIpLCBrd2FyZ3M9eyJmb28iOiAzfSkKICAgICAgICAgc2NoZWR1bGVyLnJ1bigpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmxhZywgW05vbmVdKQorICAgICAgICBzZWxmLmFzc2VydENvdW50RXF1YWwoc2VxLCBbCisgICAgICAgICAgICAoKCksIHt9KSwKKyAgICAgICAgICAgICgoMSwgMiksIHt9KSwKKyAgICAgICAgICAgICgoJ2EnLCAnYicpLCB7fSksCisgICAgICAgICAgICAoKDEsIDIpLCB7J2Zvbyc6IDN9KQorICAgICAgICBdKQogCiAgICAgZGVmIHRlc3RfcnVuX25vbl9ibG9ja2luZyhzZWxmKToKICAgICAgICAgbCA9IFtdCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NlY3JldHMucHkgYi9MaWIvdGVzdC90ZXN0X3NlY3JldHMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGM2NWNmMAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2VjcmV0cy5weQpAQCAtMCwwICsxLDEyMyBAQAorIiIiVGVzdCB0aGUgc2VjcmV0cyBtb2R1bGUuCisKK0FzIG1vc3Qgb2YgdGhlIGZ1bmN0aW9ucyBpbiBzZWNyZXRzIGFyZSB0aGluIHdyYXBwZXJzIGFyb3VuZCBmdW5jdGlvbnMKK2RlZmluZWQgZWxzZXdoZXJlLCB3ZSBkb24ndCBuZWVkIHRvIHRlc3QgdGhlbSBleGhhdXN0aXZlbHkuCisiIiIKKworCitpbXBvcnQgc2VjcmV0cworaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgc3RyaW5nCisKKworIyA9PT0gVW5pdCB0ZXN0cyA9PT0KKworY2xhc3MgQ29tcGFyZV9EaWdlc3RfVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIlRlc3Qgc2VjcmV0cy5jb21wYXJlX2RpZ2VzdCBmdW5jdGlvbi4iIiIKKworICAgIGRlZiB0ZXN0X2VxdWFsKHNlbGYpOgorICAgICAgICAjIFRlc3QgY29tcGFyZV9kaWdlc3QgZnVuY3Rpb25hbGl0eSB3aXRoIGVxdWFsIChieXRlL3RleHQpIHN0cmluZ3MuCisgICAgICAgIGZvciBzIGluICgiYSIsICJiY2QiLCAieHl6MTIzIik6CisgICAgICAgICAgICBhID0gcyoxMDAKKyAgICAgICAgICAgIGIgPSBzKjEwMAorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlY3JldHMuY29tcGFyZV9kaWdlc3QoYSwgYikpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VjcmV0cy5jb21wYXJlX2RpZ2VzdChhLmVuY29kZSgndXRmLTgnKSwgYi5lbmNvZGUoJ3V0Zi04JykpKQorCisgICAgZGVmIHRlc3RfdW5lcXVhbChzZWxmKToKKyAgICAgICAgIyBUZXN0IGNvbXBhcmVfZGlnZXN0IGZ1bmN0aW9uYWxpdHkgd2l0aCB1bmVxdWFsIChieXRlL3RleHQpIHN0cmluZ3MuCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VjcmV0cy5jb21wYXJlX2RpZ2VzdCgiYWJjIiwgImFiY2QiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWNyZXRzLmNvbXBhcmVfZGlnZXN0KGIiYWJjIiwgYiJhYmNkIikpCisgICAgICAgIGZvciBzIGluICgieCIsICJtbiIsICJhMWIyYzMiKToKKyAgICAgICAgICAgIGEgPSBzKjEwMCArICJxIgorICAgICAgICAgICAgYiA9IHMqMTAwICsgImsiCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlY3JldHMuY29tcGFyZV9kaWdlc3QoYSwgYikpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlY3JldHMuY29tcGFyZV9kaWdlc3QoYS5lbmNvZGUoJ3V0Zi04JyksIGIuZW5jb2RlKCd1dGYtOCcpKSkKKworICAgIGRlZiB0ZXN0X2JhZF90eXBlcyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgY29tcGFyZV9kaWdlc3QgcmFpc2VzIHdpdGggbWl4ZWQgdHlwZXMuCisgICAgICAgIGEgPSAnYWJjZGUnCisgICAgICAgIGIgPSBhLmVuY29kZSgndXRmLTgnKQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShhLCBzdHIpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGIsIGJ5dGVzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlY3JldHMuY29tcGFyZV9kaWdlc3QsIGEsIGIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VjcmV0cy5jb21wYXJlX2RpZ2VzdCwgYiwgYSkKKworICAgIGRlZiB0ZXN0X2Jvb2woc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IGNvbXBhcmVfZGlnZXN0IHJldHVybnMgYSBib29sLgorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc2VjcmV0cy5jb21wYXJlX2RpZ2VzdCgiYWJjIiwgImFiYyIpLCBib29sKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc2VjcmV0cy5jb21wYXJlX2RpZ2VzdCgiYWJjIiwgInh5eiIpLCBib29sKQorCisKK2NsYXNzIFJhbmRvbV9UZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiVGVzdCB3cmFwcGVycyBhcm91bmQgU3lzdGVtUmFuZG9tIG1ldGhvZHMuIiIiCisKKyAgICBkZWYgdGVzdF9yYW5kYml0cyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHJhbmRiaXRzLgorICAgICAgICBlcnJtc2cgPSAicmFuZGJpdHMoJWQpIHJldHVybmVkICVkIgorICAgICAgICBmb3IgbnVtYml0cyBpbiAoMywgMTIsIDMwKToKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDYpOgorICAgICAgICAgICAgICAgIG4gPSBzZWNyZXRzLnJhbmRiaXRzKG51bWJpdHMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKDAgPD0gbiA8IDIqKm51bWJpdHMsIGVycm1zZyAlIChudW1iaXRzLCBuKSkKKworICAgIGRlZiB0ZXN0X2Nob2ljZShzZWxmKToKKyAgICAgICAgIyBUZXN0IGNob2ljZS4KKyAgICAgICAgaXRlbXMgPSBbMSwgMiwgNCwgOCwgMTYsIDMyLCA2NF0KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTApOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlY3JldHMuY2hvaWNlKGl0ZW1zKSBpbiBpdGVtcykKKworICAgIGRlZiB0ZXN0X3JhbmRiZWxvdyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHJhbmRiZWxvdy4KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMiwgMTApOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihzZWNyZXRzLnJhbmRiZWxvdyhpKSwgcmFuZ2UoaSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlY3JldHMucmFuZGJlbG93LCAwKQorCisKK2NsYXNzIFRva2VuX1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJUZXN0IHRva2VuIGZ1bmN0aW9ucy4iIiIKKworICAgIGRlZiB0ZXN0X3Rva2VuX2RlZmF1bHRzKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCB0b2tlbl8qIGZ1bmN0aW9ucyBoYW5kbGUgZGVmYXVsdCBzaXplIGNvcnJlY3RseS4KKyAgICAgICAgZm9yIGZ1bmMgaW4gKHNlY3JldHMudG9rZW5fYnl0ZXMsIHNlY3JldHMudG9rZW5faGV4LAorICAgICAgICAgICAgICAgICAgICAgc2VjcmV0cy50b2tlbl91cmxzYWZlKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGZ1bmM9ZnVuYyk6CisgICAgICAgICAgICAgICAgbmFtZSA9IGZ1bmMuX19uYW1lX18KKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGZ1bmMoKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiJXMgY2Fubm90IGJlIGNhbGxlZCB3aXRoIG5vIGFyZ3VtZW50IiAlIG5hbWUpCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBmdW5jKE5vbmUpCisgICAgICAgICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCIlcyBjYW5ub3QgYmUgY2FsbGVkIHdpdGggTm9uZSIgJSBuYW1lKQorICAgICAgICBzaXplID0gc2VjcmV0cy5ERUZBVUxUX0VOVFJPUFkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VjcmV0cy50b2tlbl9ieXRlcyhOb25lKSksIHNpemUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlY3JldHMudG9rZW5faGV4KE5vbmUpKSwgMipzaXplKQorCisgICAgZGVmIHRlc3RfdG9rZW5fYnl0ZXMoc2VsZik6CisgICAgICAgICMgVGVzdCB0b2tlbl9ieXRlcy4KKyAgICAgICAgZm9yIG4gaW4gKDEsIDgsIDE3LCAxMDApOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qobj1uKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc2VjcmV0cy50b2tlbl9ieXRlcyhuKSwgYnl0ZXMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VjcmV0cy50b2tlbl9ieXRlcyhuKSksIG4pCisKKyAgICBkZWYgdGVzdF90b2tlbl9oZXgoc2VsZik6CisgICAgICAgICMgVGVzdCB0b2tlbl9oZXguCisgICAgICAgIGZvciBuIGluICgxLCAxMiwgMjUsIDkwKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG49bik6CisgICAgICAgICAgICAgICAgcyA9IHNlY3JldHMudG9rZW5faGV4KG4pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHMsIHN0cikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzKSwgMipuKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhbGwoYyBpbiBzdHJpbmcuaGV4ZGlnaXRzIGZvciBjIGluIHMpKQorCisgICAgZGVmIHRlc3RfdG9rZW5fdXJsc2FmZShzZWxmKToKKyAgICAgICAgIyBUZXN0IHRva2VuX3VybHNhZmUuCisgICAgICAgIGxlZ2FsID0gc3RyaW5nLmFzY2lpX2xldHRlcnMgKyBzdHJpbmcuZGlnaXRzICsgJy1fJworICAgICAgICBmb3IgbiBpbiAoMSwgMTEsIDI4LCA3Nik6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuPW4pOgorICAgICAgICAgICAgICAgIHMgPSBzZWNyZXRzLnRva2VuX3VybHNhZmUobikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uocywgc3RyKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhbGwoYyBpbiBsZWdhbCBmb3IgYyBpbiBzKSkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zZXQucHkgYi9MaWIvdGVzdC90ZXN0X3NldC5weQppbmRleCA3NTk0MzAzLi4wMjAyOTgxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NldC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NldC5weQpAQCAtNiwxMCArNiwxMSBAQAogaW1wb3J0IGNvcHkKIGltcG9ydCBwaWNrbGUKIGZyb20gcmFuZG9tIGltcG9ydCByYW5kcmFuZ2UsIHNodWZmbGUKLWltcG9ydCBzeXMKIGltcG9ydCB3YXJuaW5ncwogaW1wb3J0IGNvbGxlY3Rpb25zCiBpbXBvcnQgY29sbGVjdGlvbnMuYWJjCitpbXBvcnQgaXRlcnRvb2xzCitpbXBvcnQgc3RyaW5nCiAKIGNsYXNzIFBhc3NUaHJ1KEV4Y2VwdGlvbik6CiAgICAgcGFzcwpAQCAtNzI5LDYgKzczMCwyNSBAQAogICAgICAgICAgICAgYWRkaGFzaHZhbHVlKGhhc2goZnJvemVuc2V0KFtlIGZvciBlLCBtIGluIGVsZW1tYXNrcyBpZiBtJmldKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGhhc2h2YWx1ZXMpLCAyKipuKQogCisgICAgICAgIGRlZiB6Zl9yYW5nZShuKToKKyAgICAgICAgICAgICMgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2V0LXRoZW9yZXRpY19kZWZpbml0aW9uX29mX25hdHVyYWxfbnVtYmVycworICAgICAgICAgICAgbnVtcyA9IFtmcm96ZW5zZXQoKV0KKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKG4tMSk6CisgICAgICAgICAgICAgICAgbnVtID0gZnJvemVuc2V0KG51bXMpCisgICAgICAgICAgICAgICAgbnVtcy5hcHBlbmQobnVtKQorICAgICAgICAgICAgcmV0dXJuIG51bXNbOm5dCisKKyAgICAgICAgZGVmIHBvd2Vyc2V0KHMpOgorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKHMpKzEpOgorICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gbWFwKGZyb3plbnNldCwgaXRlcnRvb2xzLmNvbWJpbmF0aW9ucyhzLCBpKSkKKworICAgICAgICBmb3IgbiBpbiByYW5nZSgxOCk6CisgICAgICAgICAgICB0ID0gMiAqKiBuCisgICAgICAgICAgICBtYXNrID0gdCAtIDEKKyAgICAgICAgICAgIGZvciBudW1zIGluIChyYW5nZSwgemZfcmFuZ2UpOgorICAgICAgICAgICAgICAgIHUgPSBsZW4oe2ggJiBtYXNrIGZvciBoIGluIG1hcChoYXNoLCBwb3dlcnNldChudW1zKG4pKSl9KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcig0KnUsIHQpCisKIGNsYXNzIEZyb3plblNldFN1YmNsYXNzKGZyb3plbnNldCk6CiAgICAgcGFzcwogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NobGV4LnB5IGIvTGliL3Rlc3QvdGVzdF9zaGxleC5weQppbmRleCA1NWI1MzNkLi4zOTM2Yzk3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NobGV4LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2hsZXgucHkKQEAgLTE3MywxNiArMTczLDExNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXM6ICVzICE9ICVzIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLmRhdGFbaV1bMF0sIGwsIHNlbGYuZGF0YVtpXVsxOl0pKQogCisgICAgZGVmIHRlc3RTeW50YXhTcGxpdEFtcGVyc2FuZEFuZFBpcGUoc2VsZik6CisgICAgICAgICIiIlRlc3QgaGFuZGxpbmcgb2Ygc3ludGF4IHNwbGl0dGluZyBvZiAmLCB8IiIiCisgICAgICAgICMgQ291bGQgdGFrZSB0aGVzZSBmb3JtczogJiYsICYsIHwmLCA7JiwgOzsmCisgICAgICAgICMgb2YgY291cnNlLCB0aGUgc2FtZSBhcHBsaWVzIHRvIHwgYW5kIHx8CisgICAgICAgICMgdGhlc2Ugc2hvdWxkIGFsbCBwYXJzZSB0byB0aGUgc2FtZSBvdXRwdXQKKyAgICAgICAgZm9yIGRlbGltaXRlciBpbiAoJyYmJywgJyYnLCAnfCYnLCAnOyYnLCAnOzsmJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ3x8JywgJ3wnLCAnJnwnLCAnO3wnLCAnOzt8Jyk6CisgICAgICAgICAgICBzcmMgPSBbJ2VjaG8gaGkgJXMgZWNobyBieWUnICUgZGVsaW1pdGVyLAorICAgICAgICAgICAgICAgICAgICdlY2hvIGhpJXNlY2hvIGJ5ZScgJSBkZWxpbWl0ZXJdCisgICAgICAgICAgICByZWYgPSBbJ2VjaG8nLCAnaGknLCBkZWxpbWl0ZXIsICdlY2hvJywgJ2J5ZSddCisgICAgICAgICAgICBmb3Igc3MgaW4gc3JjOgorICAgICAgICAgICAgICAgIHMgPSBzaGxleC5zaGxleChzcywgcHVuY3R1YXRpb25fY2hhcnM9VHJ1ZSkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBsaXN0KHMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWYsIHJlc3VsdCwgIldoaWxlIHNwbGl0dGluZyAnJXMnIiAlIHNzKQorCisgICAgZGVmIHRlc3RTeW50YXhTcGxpdFNlbWljb2xvbihzZWxmKToKKyAgICAgICAgIiIiVGVzdCBoYW5kbGluZyBvZiBzeW50YXggc3BsaXR0aW5nIG9mIDsiIiIKKyAgICAgICAgIyBDb3VsZCB0YWtlIHRoZXNlIGZvcm1zOiA7LCA7OywgOyYsIDs7JgorICAgICAgICAjIHRoZXNlIHNob3VsZCBhbGwgcGFyc2UgdG8gdGhlIHNhbWUgb3V0cHV0CisgICAgICAgIGZvciBkZWxpbWl0ZXIgaW4gKCc7JywgJzs7JywgJzsmJywgJzs7JicpOgorICAgICAgICAgICAgc3JjID0gWydlY2hvIGhpICVzIGVjaG8gYnllJyAlIGRlbGltaXRlciwKKyAgICAgICAgICAgICAgICAgICAnZWNobyBoaSVzIGVjaG8gYnllJyAlIGRlbGltaXRlciwKKyAgICAgICAgICAgICAgICAgICAnZWNobyBoaSVzZWNobyBieWUnICUgZGVsaW1pdGVyXQorICAgICAgICAgICAgcmVmID0gWydlY2hvJywgJ2hpJywgZGVsaW1pdGVyLCAnZWNobycsICdieWUnXQorICAgICAgICAgICAgZm9yIHNzIGluIHNyYzoKKyAgICAgICAgICAgICAgICBzID0gc2hsZXguc2hsZXgoc3MsIHB1bmN0dWF0aW9uX2NoYXJzPVRydWUpCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbGlzdChzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVmLCByZXN1bHQsICJXaGlsZSBzcGxpdHRpbmcgJyVzJyIgJSBzcykKKworICAgIGRlZiB0ZXN0U3ludGF4U3BsaXRSZWRpcmVjdChzZWxmKToKKyAgICAgICAgIiIiVGVzdCBoYW5kbGluZyBvZiBzeW50YXggc3BsaXR0aW5nIG9mID4iIiIKKyAgICAgICAgIyBvZiBjb3Vyc2UsIHRoZSBzYW1lIGFwcGxpZXMgdG8gPCwgfAorICAgICAgICAjIHRoZXNlIHNob3VsZCBhbGwgcGFyc2UgdG8gdGhlIHNhbWUgb3V0cHV0CisgICAgICAgIGZvciBkZWxpbWl0ZXIgaW4gKCc8JywgJ3wnKToKKyAgICAgICAgICAgIHNyYyA9IFsnZWNobyBoaSAlcyBvdXQnICUgZGVsaW1pdGVyLAorICAgICAgICAgICAgICAgICAgICdlY2hvIGhpJXMgb3V0JyAlIGRlbGltaXRlciwKKyAgICAgICAgICAgICAgICAgICAnZWNobyBoaSVzb3V0JyAlIGRlbGltaXRlcl0KKyAgICAgICAgICAgIHJlZiA9IFsnZWNobycsICdoaScsIGRlbGltaXRlciwgJ291dCddCisgICAgICAgICAgICBmb3Igc3MgaW4gc3JjOgorICAgICAgICAgICAgICAgIHMgPSBzaGxleC5zaGxleChzcywgcHVuY3R1YXRpb25fY2hhcnM9VHJ1ZSkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBsaXN0KHMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWYsIHJlc3VsdCwgIldoaWxlIHNwbGl0dGluZyAnJXMnIiAlIHNzKQorCisgICAgZGVmIHRlc3RTeW50YXhTcGxpdFBhcmVuKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGhhbmRsaW5nIG9mIHN5bnRheCBzcGxpdHRpbmcgb2YgKCkiIiIKKyAgICAgICAgIyB0aGVzZSBzaG91bGQgYWxsIHBhcnNlIHRvIHRoZSBzYW1lIG91dHB1dAorICAgICAgICBzcmMgPSBbJyggZWNobyBoaSApJywKKyAgICAgICAgICAgICAgICcoZWNobyBoaSknXQorICAgICAgICByZWYgPSBbJygnLCAnZWNobycsICdoaScsICcpJ10KKyAgICAgICAgZm9yIHNzIGluIHNyYzoKKyAgICAgICAgICAgIHMgPSBzaGxleC5zaGxleChzcywgcHVuY3R1YXRpb25fY2hhcnM9VHJ1ZSkKKyAgICAgICAgICAgIHJlc3VsdCA9IGxpc3QocykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVmLCByZXN1bHQsICJXaGlsZSBzcGxpdHRpbmcgJyVzJyIgJSBzcykKKworICAgIGRlZiB0ZXN0U3ludGF4U3BsaXRDdXN0b20oc2VsZik6CisgICAgICAgICIiIlRlc3QgaGFuZGxpbmcgb2Ygc3ludGF4IHNwbGl0dGluZyB3aXRoIGN1c3RvbSBjaGFycyIiIgorICAgICAgICByZWYgPSBbJ34vYScsICcmJywgJyYnLCAnYi1jJywgJy0tY29sb3I9YXV0bycsICd8fCcsICdkJywgJyoucHk/J10KKyAgICAgICAgc3MgPSAifi9hICYmIGItYyAtLWNvbG9yPWF1dG8gfHwgZCAqLnB5PyIKKyAgICAgICAgcyA9IHNobGV4LnNobGV4KHNzLCBwdW5jdHVhdGlvbl9jaGFycz0ifCIpCisgICAgICAgIHJlc3VsdCA9IGxpc3QocykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWYsIHJlc3VsdCwgIldoaWxlIHNwbGl0dGluZyAnJXMnIiAlIHNzKQorCisgICAgZGVmIHRlc3RUb2tlblR5cGVzKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHRoYXQgdG9rZW5zIGFyZSBzcGxpdCB3aXRoIHR5cGVzIGFzIGV4cGVjdGVkLiIiIgorICAgICAgICBmb3Igc291cmNlLCBleHBlY3RlZCBpbiAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYSAmJiBiIHx8IGMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWygnYScsICdhJyksICgnJiYnLCAnYycpLCAoJ2InLCAnYScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnfHwnLCAnYycpLCAoJ2MnLCAnYScpXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOgorICAgICAgICAgICAgcyA9IHNobGV4LnNobGV4KHNvdXJjZSwgcHVuY3R1YXRpb25fY2hhcnM9VHJ1ZSkKKyAgICAgICAgICAgIG9ic2VydmVkID0gW10KKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgdCA9IHMuZ2V0X3Rva2VuKCkKKyAgICAgICAgICAgICAgICBpZiB0ID09IHMuZW9mOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGlmIHRbMF0gaW4gcy5wdW5jdHVhdGlvbl9jaGFyczoKKyAgICAgICAgICAgICAgICAgICAgdHQgPSAnYycKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB0dCA9ICdhJworICAgICAgICAgICAgICAgIG9ic2VydmVkLmFwcGVuZCgodCwgdHQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvYnNlcnZlZCwgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdFB1bmN0dWF0aW9uSW5Xb3JkQ2hhcnMoc2VsZik6CisgICAgICAgICIiIlRlc3QgdGhhdCBhbnkgcHVuY3R1YXRpb24gY2hhcnMgYXJlIHJlbW92ZWQgZnJvbSB3b3JkY2hhcnMiIiIKKyAgICAgICAgcyA9IHNobGV4LnNobGV4KCdhX2JfX2MnLCBwdW5jdHVhdGlvbl9jaGFycz0nXycpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ18nLCBzLndvcmRjaGFycykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHMpLCBbJ2EnLCAnXycsICdiJywgJ19fJywgJ2MnXSkKKworICAgIGRlZiB0ZXN0UHVuY3R1YXRpb25XaXRoV2hpdGVzcGFjZVNwbGl0KHNlbGYpOgorICAgICAgICAiIiJUZXN0IHRoYXQgd2l0aCB3aGl0ZXNwYWNlX3NwbGl0LCBiZWhhdmlvdXIgaXMgYXMgZXhwZWN0ZWQiIiIKKyAgICAgICAgcyA9IHNobGV4LnNobGV4KCdhICAmJiBiICB8fCAgYycsIHB1bmN0dWF0aW9uX2NoYXJzPScmJykKKyAgICAgICAgIyB3aGl0ZXNwYWNlX3NwbGl0IGlzIEZhbHNlLCBzbyBzcGxpdHRpbmcgd2lsbCBiZSBiYXNlZCBvbgorICAgICAgICAjIHB1bmN0dWF0aW9uX2NoYXJzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzKSwgWydhJywgJyYmJywgJ2InLCAnfCcsICd8JywgJ2MnXSkKKyAgICAgICAgcyA9IHNobGV4LnNobGV4KCdhICAmJiBiICB8fCAgYycsIHB1bmN0dWF0aW9uX2NoYXJzPScmJykKKyAgICAgICAgcy53aGl0ZXNwYWNlX3NwbGl0ID0gVHJ1ZQorICAgICAgICAjIHdoaXRlc3BhY2Vfc3BsaXQgaXMgVHJ1ZSwgc28gc3BsaXR0aW5nIHdpbGwgYmUgYmFzZWQgb24KKyAgICAgICAgIyB3aGl0ZSBzcGFjZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocyksIFsnYScsICcmJicsICdiJywgJ3x8JywgJ2MnXSkKKwogICAgIGRlZiB0ZXN0RW1wdHlTdHJpbmdIYW5kbGluZyhzZWxmKToKICAgICAgICAgIiIiVGVzdCB0aGF0IHBhcnNpbmcgb2YgZW1wdHkgc3RyaW5ncyBpcyBjb3JyZWN0bHkgaGFuZGxlZC4iIiIKICAgICAgICAgIyBzZWUgSXNzdWUgIzIxOTk5CiAgICAgICAgIGV4cGVjdGVkID0gWycnLCAnKScsICdhYmMnXQotCi0gICAgICAgIHMgPSBzaGxleC5zaGxleCgiJycpYWJjIiwgcG9zaXg9VHJ1ZSkKLSAgICAgICAgc2xpc3QgPSBsaXN0KHMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2xpc3QsIGV4cGVjdGVkKQorICAgICAgICBmb3IgcHVuY3QgaW4gKEZhbHNlLCBUcnVlKToKKyAgICAgICAgICAgIHMgPSBzaGxleC5zaGxleCgiJycpYWJjIiwgcG9zaXg9VHJ1ZSwgcHVuY3R1YXRpb25fY2hhcnM9cHVuY3QpCisgICAgICAgICAgICBzbGlzdCA9IGxpc3QocykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2xpc3QsIGV4cGVjdGVkKQogICAgICAgICBleHBlY3RlZCA9IFsiJyciLCAnKScsICdhYmMnXQotICAgICAgICBzID0gc2hsZXguc2hsZXgoIicnKWFiYyIpCisgICAgICAgIHMgPSBzaGxleC5zaGxleCgiJycpYWJjIiwgcHVuY3R1YXRpb25fY2hhcnM9VHJ1ZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHMpLCBleHBlY3RlZCkKIAogICAgIGRlZiB0ZXN0UXVvdGUoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NodXRpbC5weSBiL0xpYi90ZXN0L3Rlc3Rfc2h1dGlsLnB5CmluZGV4IDcwOWZlZWIuLjJhZDNhMjEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2h1dGlsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2h1dGlsLnB5CkBAIC0yMyw3ICsyMyw4IEBACiBpbXBvcnQgd2FybmluZ3MKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOLCBjaGVja193YXJuaW5ncywgY2FwdHVyZWRfc3Rkb3V0Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgKFRFU1RGTiwgY2hlY2tfd2FybmluZ3MsIGNhcHR1cmVkX3N0ZG91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kcm9pZF9ub3Rfcm9vdCkKIAogVEVTVEZOMiA9IFRFU1RGTiArICIyIgogCkBAIC0xMTUsOSArMTE2LDcgQEAKICAgICAgICAgd3JpdGVfZmlsZShvcy5wYXRoLmpvaW4odmljdGltLCAnc29tZWZpbGUnKSwgJ2ZvbycpCiAgICAgICAgIHZpY3RpbSA9IG9zLmZzZW5jb2RlKHZpY3RpbSkKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHZpY3RpbSwgYnl0ZXMpCi0gICAgICAgIHdpbiA9IChvcy5uYW1lID09ICdudCcpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpIGlmIHdpbiBlbHNlIEV4aXRTdGFjaygpOgotICAgICAgICAgICAgc2h1dGlsLnJtdHJlZSh2aWN0aW0pCisgICAgICAgIHNodXRpbC5ybXRyZWUodmljdGltKQogCiAgICAgQHN1cHBvcnQuc2tpcF91bmxlc3Nfc3ltbGluawogICAgIGRlZiB0ZXN0X3JtdHJlZV9mYWlsc19vbl9zeW1saW5rKHNlbGYpOgpAQCAtNzcyLDYgKzc3MSw3IEBACiAKICAgICBAdW5pdHRlc3Quc2tpcElmKG9zLm5hbWUgPT0gJ250JywgJ3RlbXBvcmFyaWx5IGRpc2FibGVkIG9uIFdpbmRvd3MnKQogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdsaW5rJyksICdyZXF1aXJlcyBvcy5saW5rJykKKyAgICBAdW5pdHRlc3Quc2tpcElmKGFuZHJvaWRfbm90X3Jvb3QsICJoYXJkIGxpbmtzIG5vdCBhbGxvd2VkLCBub24gcm9vdCB1c2VyIikKICAgICBkZWYgdGVzdF9kb250X2NvcHlfZmlsZV9vbnRvX2xpbmtfdG9faXRzZWxmKHNlbGYpOgogICAgICAgICAjIGJ1ZyA4NTExMjMuCiAgICAgICAgIG9zLm1rZGlyKFRFU1RGTikKQEAgLTgyNCw2ICs4MjQsNyBAQAogCiAgICAgIyBJc3N1ZSAjMzAwMjogY29weWZpbGUgYW5kIGNvcHl0cmVlIGJsb2NrIGluZGVmaW5pdGVseSBvbiBuYW1lZCBwaXBlcwogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICJta2ZpZm8iKSwgJ3JlcXVpcmVzIG9zLm1rZmlmbygpJykKKyAgICBAdW5pdHRlc3Quc2tpcElmKGFuZHJvaWRfbm90X3Jvb3QsICJta2ZpZm8gbm90IGFsbG93ZWQsIG5vbiByb290IHVzZXIiKQogICAgIGRlZiB0ZXN0X2NvcHlmaWxlX25hbWVkX3BpcGUoc2VsZik6CiAgICAgICAgIG9zLm1rZmlmbyhURVNURk4pCiAgICAgICAgIHRyeToKQEAgLTgzNCw2ICs4MzUsNyBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgb3MucmVtb3ZlKFRFU1RGTikKIAorICAgIEB1bml0dGVzdC5za2lwSWYoYW5kcm9pZF9ub3Rfcm9vdCwgIm1rZmlmbyBub3QgYWxsb3dlZCwgbm9uIHJvb3QgdXNlciIpCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgIm1rZmlmbyIpLCAncmVxdWlyZXMgb3MubWtmaWZvKCknKQogICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3N5bWxpbmsKICAgICBkZWYgdGVzdF9jb3B5dHJlZV9uYW1lZF9waXBlKHNlbGYpOgpAQCAtMTMxMiwxMCArMTMxNCwxMCBAQAogICAgICAgICAgICAgc2h1dGlsLmNob3duKGZpbGVuYW1lKQogCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTG9va3VwRXJyb3IpOgotICAgICAgICAgICAgc2h1dGlsLmNob3duKGZpbGVuYW1lLCB1c2VyPSdub24tZXhpc2luZyB1c2VybmFtZScpCisgICAgICAgICAgICBzaHV0aWwuY2hvd24oZmlsZW5hbWUsIHVzZXI9J25vbi1leGlzdGluZyB1c2VybmFtZScpCiAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhMb29rdXBFcnJvcik6Ci0gICAgICAgICAgICBzaHV0aWwuY2hvd24oZmlsZW5hbWUsIGdyb3VwPSdub24tZXhpc2luZyBncm91cG5hbWUnKQorICAgICAgICAgICAgc2h1dGlsLmNob3duKGZpbGVuYW1lLCBncm91cD0nbm9uLWV4aXN0aW5nIGdyb3VwbmFtZScpCiAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgogICAgICAgICAgICAgc2h1dGlsLmNob3duKGZpbGVuYW1lLCBiJ3NwYW0nKQpAQCAtMTg2NCw3ICsxODY2LDggQEAKICAgICAgICAgIiIiCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNpemUgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbJ3N0dHknLCAnc2l6ZSddKS5kZWNvZGUoKS5zcGxpdCgpCi0gICAgICAgIGV4Y2VwdCAoRmlsZU5vdEZvdW5kRXJyb3IsIHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yKToKKyAgICAgICAgZXhjZXB0IChGaWxlTm90Rm91bmRFcnJvciwgUGVybWlzc2lvbkVycm9yLAorICAgICAgICAgICAgICAgIHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yKToKICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoInN0dHkgaW52b2NhdGlvbiBmYWlsZWQiKQogICAgICAgICBleHBlY3RlZCA9IChpbnQoc2l6ZVsxXSksIGludChzaXplWzBdKSkgIyByZXZlcnNlZCBvcmRlcgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NpZ25hbC5weSBiL0xpYi90ZXN0L3Rlc3Rfc2lnbmFsLnB5CmluZGV4IDFiODBmZjAuLmFiNDJlZDcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2lnbmFsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2lnbmFsLnB5CkBAIC0yMiwyOSArMjIsNiBAQAogICAgIF90ZXN0Y2FwaSA9IE5vbmUKIAogCi1jbGFzcyBIYW5kbGVyQkNhbGxlZChFeGNlcHRpb24pOgotICAgIHBhc3MKLQotCi1kZWYgZXhpdF9zdWJwcm9jZXNzKCk6Ci0gICAgIiIiVXNlIG9zLl9leGl0KDApIHRvIGV4aXQgdGhlIGN1cnJlbnQgc3VicHJvY2Vzcy4KLQotICAgIE90aGVyd2lzZSwgdGhlIHRlc3QgY2F0Y2hlcyB0aGUgU3lzdGVtRXhpdCBhbmQgY29udGludWVzIGV4ZWN1dGluZwotICAgIGluIHBhcmFsbGVsIHdpdGggdGhlIG9yaWdpbmFsIHRlc3QsIHNvIHlvdSB3aW5kIHVwIHdpdGggYW4KLSAgICBleHBvbmVudGlhbCBudW1iZXIgb2YgdGVzdHMgcnVubmluZyBjb25jdXJyZW50bHkuCi0gICAgIiIiCi0gICAgb3MuX2V4aXQoMCkKLQotCi1kZWYgaWdub3JpbmdfZWludHIoX19mdW5jLCAqYXJncywgKiprd2FyZ3MpOgotICAgIHRyeToKLSAgICAgICAgcmV0dXJuIF9fZnVuYygqYXJncywgKiprd2FyZ3MpCi0gICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FSU5UUjoKLSAgICAgICAgICAgIHJhaXNlCi0gICAgICAgIHJldHVybiBOb25lCi0KLQogY2xhc3MgR2VuZXJpY1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIEB1bml0dGVzdC5za2lwSWYodGhyZWFkaW5nIGlzIE5vbmUsICJ0ZXN0IG5lZWRzIHRocmVhZGluZyBtb2R1bGUiKQpAQCAtNjMsMTQ1ICs0MCw2IEBACiAKIAogQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gIndpbjMyIiwgIk5vdCB2YWxpZCBvbiBXaW5kb3dzIikKLWNsYXNzIEludGVyUHJvY2Vzc1NpZ25hbFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBNQVhfRFVSQVRJT04gPSAyMCAgICMgRW50aXJlIHRlc3Qgc2hvdWxkIGxhc3QgYXQgbW9zdCAyMCBzZWMuCi0KLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYudXNpbmdfZ2MgPSBnYy5pc2VuYWJsZWQoKQotICAgICAgICBnYy5kaXNhYmxlKCkKLQotICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAgaWYgc2VsZi51c2luZ19nYzoKLSAgICAgICAgICAgIGdjLmVuYWJsZSgpCi0KLSAgICBkZWYgZm9ybWF0X2ZyYW1lKHNlbGYsIGZyYW1lLCBsaW1pdD1Ob25lKToKLSAgICAgICAgcmV0dXJuICcnLmpvaW4odHJhY2ViYWNrLmZvcm1hdF9zdGFjayhmcmFtZSwgbGltaXQ9bGltaXQpKQotCi0gICAgZGVmIGhhbmRsZXJBKHNlbGYsIHNpZ251bSwgZnJhbWUpOgotICAgICAgICBzZWxmLmFfY2FsbGVkID0gVHJ1ZQotCi0gICAgZGVmIGhhbmRsZXJCKHNlbGYsIHNpZ251bSwgZnJhbWUpOgotICAgICAgICBzZWxmLmJfY2FsbGVkID0gVHJ1ZQotICAgICAgICByYWlzZSBIYW5kbGVyQkNhbGxlZChzaWdudW0sIHNlbGYuZm9ybWF0X2ZyYW1lKGZyYW1lKSkKLQotICAgIGRlZiB3YWl0KHNlbGYsIGNoaWxkKToKLSAgICAgICAgIiIiV2FpdCBmb3IgY2hpbGQgdG8gZmluaXNoLCBpZ25vcmluZyBFSU5UUi4iIiIKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBjaGlsZC53YWl0KCkKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FSU5UUjoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UKLQotICAgIGRlZiBydW5fdGVzdChzZWxmKToKLSAgICAgICAgIyBJbnN0YWxsIGhhbmRsZXJzLiBUaGlzIGZ1bmN0aW9uIHJ1bnMgaW4gYSBzdWItcHJvY2Vzcywgc28gd2UKLSAgICAgICAgIyBkb24ndCB3b3JyeSBhYm91dCByZS1zZXR0aW5nIHRoZSBkZWZhdWx0IGhhbmRsZXJzLgotICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdIVVAsIHNlbGYuaGFuZGxlckEpCi0gICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR1VTUjEsIHNlbGYuaGFuZGxlckIpCi0gICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR1VTUjIsIHNpZ25hbC5TSUdfSUdOKQotICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdBTFJNLCBzaWduYWwuZGVmYXVsdF9pbnRfaGFuZGxlcikKLQotICAgICAgICAjIFZhcmlhYmxlcyB0aGUgc2lnbmFscyB3aWxsIG1vZGlmeToKLSAgICAgICAgc2VsZi5hX2NhbGxlZCA9IEZhbHNlCi0gICAgICAgIHNlbGYuYl9jYWxsZWQgPSBGYWxzZQotCi0gICAgICAgICMgTGV0IHRoZSBzdWItcHJvY2Vzc2VzIGtub3cgd2hvIHRvIHNlbmQgc2lnbmFscyB0by4KLSAgICAgICAgcGlkID0gb3MuZ2V0cGlkKCkKLQotICAgICAgICBjaGlsZCA9IGlnbm9yaW5nX2VpbnRyKHN1YnByb2Nlc3MuUG9wZW4sIFsna2lsbCcsICctSFVQJywgc3RyKHBpZCldKQotICAgICAgICBpZiBjaGlsZDoKLSAgICAgICAgICAgIHNlbGYud2FpdChjaGlsZCkKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLmFfY2FsbGVkOgotICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMSkgICMgR2l2ZSB0aGUgc2lnbmFsIHRpbWUgdG8gYmUgZGVsaXZlcmVkLgotICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5hX2NhbGxlZCkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmJfY2FsbGVkKQotICAgICAgICBzZWxmLmFfY2FsbGVkID0gRmFsc2UKLQotICAgICAgICAjIE1ha2Ugc3VyZSB0aGUgc2lnbmFsIGlzbid0IGRlbGl2ZXJlZCB3aGlsZSB0aGUgcHJldmlvdXMKLSAgICAgICAgIyBQb3BlbiBvYmplY3QgaXMgYmVpbmcgZGVzdHJveWVkLCBiZWNhdXNlIF9fZGVsX18gc3dhbGxvd3MKLSAgICAgICAgIyBleGNlcHRpb25zLgotICAgICAgICBkZWwgY2hpbGQKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgY2hpbGQgPSBzdWJwcm9jZXNzLlBvcGVuKFsna2lsbCcsICctVVNSMScsIHN0cihwaWQpXSkKLSAgICAgICAgICAgICMgVGhpcyB3YWl0IHNob3VsZCBiZSBpbnRlcnJ1cHRlZCBieSB0aGUgc2lnbmFsJ3MgZXhjZXB0aW9uLgotICAgICAgICAgICAgc2VsZi53YWl0KGNoaWxkKQotICAgICAgICAgICAgdGltZS5zbGVlcCgxKSAgIyBHaXZlIHRoZSBzaWduYWwgdGltZSB0byBiZSBkZWxpdmVyZWQuCi0gICAgICAgICAgICBzZWxmLmZhaWwoJ0hhbmRsZXJCQ2FsbGVkIGV4Y2VwdGlvbiBub3QgcmFpc2VkJykKLSAgICAgICAgZXhjZXB0IEhhbmRsZXJCQ2FsbGVkOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuYl9jYWxsZWQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuYV9jYWxsZWQpCi0KLSAgICAgICAgY2hpbGQgPSBpZ25vcmluZ19laW50cihzdWJwcm9jZXNzLlBvcGVuLCBbJ2tpbGwnLCAnLVVTUjInLCBzdHIocGlkKV0pCi0gICAgICAgIGlmIGNoaWxkOgotICAgICAgICAgICAgc2VsZi53YWl0KGNoaWxkKSAgIyBOb3RoaW5nIHNob3VsZCBoYXBwZW4uCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2lnbmFsLmFsYXJtKDEpCi0gICAgICAgICAgICAjIFRoZSByYWNlIGNvbmRpdGlvbiBpbiBwYXVzZSBkb2Vzbid0IG1hdHRlciBpbiB0aGlzIGNhc2UsCi0gICAgICAgICAgICAjIHNpbmNlIGFsYXJtIGlzIGdvaW5nIHRvIHJhaXNlIGEgS2V5Ym9hcmRFeGNlcHRpb24sIHdoaWNoCi0gICAgICAgICAgICAjIHdpbGwgc2tpcCB0aGUgY2FsbC4KLSAgICAgICAgICAgIHNpZ25hbC5wYXVzZSgpCi0gICAgICAgICAgICAjIEJ1dCBpZiBhbm90aGVyIHNpZ25hbCBhcnJpdmVzIGJlZm9yZSB0aGUgYWxhcm0sIHBhdXNlCi0gICAgICAgICAgICAjIG1heSByZXR1cm4gZWFybHkuCi0gICAgICAgICAgICB0aW1lLnNsZWVwKDEpCi0gICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgc2VsZi5mYWlsKCJTb21lIG90aGVyIGV4Y2VwdGlvbiB3b2tlIHVzIGZyb20gcGF1c2U6ICVzIiAlCi0gICAgICAgICAgICAgICAgICAgICAgdHJhY2ViYWNrLmZvcm1hdF9leGMoKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuZmFpbCgicGF1c2UgcmV0dXJuZWQgb2YgaXRzIG93biBhY2NvcmQsIGFuZCB0aGUgc2lnbmFsIgotICAgICAgICAgICAgICAgICAgICAgICIgZGlkbid0IGFycml2ZSBhZnRlciBhbm90aGVyIHNlY29uZC4iKQotCi0gICAgIyBJc3N1ZSAzODY0LCB1bmtub3duIGlmIHRoaXMgYWZmZWN0cyBlYXJsaWVyIHZlcnNpb25zIG9mIGZyZWVic2QgYWxzbwotICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtPT0nZnJlZWJzZDYnLAotICAgICAgICAnaW50ZXIgcHJvY2VzcyBzaWduYWxzIG5vdCByZWxpYWJsZSAoZG8gbm90IG1peCB3ZWxsIHdpdGggdGhyZWFkaW5nKSAnCi0gICAgICAgICdvbiBmcmVlYnNkNicpCi0gICAgZGVmIHRlc3RfbWFpbihzZWxmKToKLSAgICAgICAgIyBUaGlzIGZ1bmN0aW9uIHNwYXducyBhIGNoaWxkIHByb2Nlc3MgdG8gaW5zdWxhdGUgdGhlIG1haW4KLSAgICAgICAgIyB0ZXN0LXJ1bm5pbmcgcHJvY2VzcyBmcm9tIGFsbCB0aGUgc2lnbmFscy4gSXQgdGhlbgotICAgICAgICAjIGNvbW11bmljYXRlcyB3aXRoIHRoYXQgY2hpbGQgcHJvY2VzcyBvdmVyIGEgcGlwZSBhbmQKLSAgICAgICAgIyByZS1yYWlzZXMgaW5mb3JtYXRpb24gYWJvdXQgYW55IGV4Y2VwdGlvbnMgdGhlIGNoaWxkCi0gICAgICAgICMgcmFpc2VzLiBUaGUgcmVhbCB3b3JrIGhhcHBlbnMgaW4gc2VsZi5ydW5fdGVzdCgpLgotICAgICAgICBvc19kb25lX3IsIG9zX2RvbmVfdyA9IG9zLnBpcGUoKQotICAgICAgICB3aXRoIGNsb3Npbmcob3MuZmRvcGVuKG9zX2RvbmVfciwgJ3JiJykpIGFzIGRvbmVfciwgXAotICAgICAgICAgICAgIGNsb3Npbmcob3MuZmRvcGVuKG9zX2RvbmVfdywgJ3diJykpIGFzIGRvbmVfdzoKLSAgICAgICAgICAgIGNoaWxkID0gb3MuZm9yaygpCi0gICAgICAgICAgICBpZiBjaGlsZCA9PSAwOgotICAgICAgICAgICAgICAgICMgSW4gdGhlIGNoaWxkIHByb2Nlc3M7IHJ1biB0aGUgdGVzdCBhbmQgcmVwb3J0IHJlc3VsdHMKLSAgICAgICAgICAgICAgICAjIHRocm91Z2ggdGhlIHBpcGUuCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBkb25lX3IuY2xvc2UoKQotICAgICAgICAgICAgICAgICAgICAjIEhhdmUgdG8gY2xvc2UgZG9uZV93IGFnYWluIGhlcmUgYmVjYXVzZQotICAgICAgICAgICAgICAgICAgICAjIGV4aXRfc3VicHJvY2VzcygpIHdpbGwgc2tpcCB0aGUgZW5jbG9zaW5nIHdpdGggYmxvY2suCi0gICAgICAgICAgICAgICAgICAgIHdpdGggY2xvc2luZyhkb25lX3cpOgotICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucnVuX3Rlc3QoKQotICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpY2tsZS5kdW1wKHRyYWNlYmFjay5mb3JtYXRfZXhjKCksIGRvbmVfdykKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlja2xlLmR1bXAoTm9uZSwgZG9uZV93KQotICAgICAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ1VoIG9oLCByYWlzZWQgZnJvbSBwaWNrbGUuJykKLSAgICAgICAgICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YygpCi0gICAgICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICAgICAgZXhpdF9zdWJwcm9jZXNzKCkKLQotICAgICAgICAgICAgZG9uZV93LmNsb3NlKCkKLSAgICAgICAgICAgICMgQmxvY2sgZm9yIHVwIHRvIE1BWF9EVVJBVElPTiBzZWNvbmRzIGZvciB0aGUgdGVzdCB0byBmaW5pc2guCi0gICAgICAgICAgICByLCB3LCB4ID0gc2VsZWN0LnNlbGVjdChbZG9uZV9yXSwgW10sIFtdLCBzZWxmLk1BWF9EVVJBVElPTikKLSAgICAgICAgICAgIGlmIGRvbmVfciBpbiByOgotICAgICAgICAgICAgICAgIHRiID0gcGlja2xlLmxvYWQoZG9uZV9yKQotICAgICAgICAgICAgICAgIGlmIHRiOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwodGIpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG9zLmtpbGwoY2hpbGQsIHNpZ25hbC5TSUdLSUxMKQotICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnVGVzdCBkZWFkbG9ja2VkIGFmdGVyICVkIHNlY29uZHMuJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuTUFYX0RVUkFUSU9OKQotCi0KLUB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsICJOb3QgdmFsaWQgb24gV2luZG93cyIpCiBjbGFzcyBQb3NpeFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdHJpdmlhbF9zaWduYWxfaGFuZGxlcihzZWxmLCAqYXJncyk6CiAgICAgICAgIHBhc3MKQEAgLTIyNCw2ICs2MiwxNSBAQAogICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdIVVAsIGh1cCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaWduYWwuZ2V0c2lnbmFsKHNpZ25hbC5TSUdIVVApLCBodXApCiAKKyAgICAjIElzc3VlIDM4NjQsIHVua25vd24gaWYgdGhpcyBhZmZlY3RzIGVhcmxpZXIgdmVyc2lvbnMgb2YgZnJlZWJzZCBhbHNvCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm09PSdmcmVlYnNkNicsCisgICAgICAgICdpbnRlciBwcm9jZXNzIHNpZ25hbHMgbm90IHJlbGlhYmxlIChkbyBub3QgbWl4IHdlbGwgd2l0aCB0aHJlYWRpbmcpICcKKyAgICAgICAgJ29uIGZyZWVic2Q2JykKKyAgICBkZWYgdGVzdF9pbnRlcnByb2Nlc3Nfc2lnbmFsKHNlbGYpOgorICAgICAgICBkaXJuYW1lID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQorICAgICAgICBzY3JpcHQgPSBvcy5wYXRoLmpvaW4oZGlybmFtZSwgJ3NpZ25hbGludGVycHJvY3Rlc3Rlci5weScpCisgICAgICAgIGFzc2VydF9weXRob25fb2soc2NyaXB0KQorCiAKIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLCAiV2luZG93cyBzcGVjaWZpYyIpCiBjbGFzcyBXaW5kb3dzU2lnbmFsVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zaXRlLnB5IGIvTGliL3Rlc3QvdGVzdF9zaXRlLnB5CmluZGV4IGRhMjBhM2QuLmQyNDVmZDUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2l0ZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NpdGUucHkKQEAgLTE0LDYgKzE0LDcgQEAKIGltcG9ydCBlbmNvZGluZ3MKIGltcG9ydCB1cmxsaWIucmVxdWVzdAogaW1wb3J0IHVybGxpYi5lcnJvcgoraW1wb3J0IHNodXRpbAogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXNjb25maWcKIGZyb20gY29weSBpbXBvcnQgY29weQpAQCAtNzUsNyArNzYsNyBAQAogICAgIGRlZiB0ZXN0X2luaXRfcGF0aGluZm8oc2VsZik6CiAgICAgICAgIGRpcl9zZXQgPSBzaXRlLl9pbml0X3BhdGhpbmZvKCkKICAgICAgICAgZm9yIGVudHJ5IGluIFtzaXRlLm1ha2VwYXRoKHBhdGgpWzFdIGZvciBwYXRoIGluIHN5cy5wYXRoCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBwYXRoIGFuZCBvcy5wYXRoLmlzZGlyKHBhdGgpXToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHBhdGggYW5kIG9zLnBhdGguZXhpc3RzKHBhdGgpXToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZW50cnksIGRpcl9zZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICIlcyBmcm9tIHN5cy5wYXRoIG5vdCBmb3VuZCBpbiBzZXQgcmV0dXJuZWQgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAiYnkgX2luaXRfcGF0aGluZm8oKTogJXMiICUgKGVudHJ5LCBkaXJfc2V0KSkKQEAgLTEzOCwxMCArMTM5LDggQEAKICAgICAgICAgICAgIHJlLmVzY2FwZShvcy5wYXRoLmpvaW4ocHRoX2RpciwgcHRoX2ZuKSkpCiAgICAgICAgICMgWFhYOiBkaXR0byBwcmV2aW91cyBYWFggY29tbWVudC4KICAgICAgICAgc2VsZi5hc3NlcnRSZWdleChlcnJfb3V0LmdldHZhbHVlKCksICdUcmFjZWJhY2snKQotICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KGVycl9vdXQuZ2V0dmFsdWUoKSwgJ0ltcG9ydEVycm9yJykKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChlcnJfb3V0LmdldHZhbHVlKCksICdNb2R1bGVOb3RGb3VuZEVycm9yJykKIAotICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsICJXaW5kb3dzIGRvZXMgbm90IHJhaXNlIGFuICIKLSAgICAgICAgICAgICAgICAgICAgICAiZXJyb3IgZm9yIGZpbGUgcGF0aHMgY29udGFpbmluZyBudWxsIGNoYXJhY3RlcnMiKQogICAgIGRlZiB0ZXN0X2FkZHBhY2thZ2VfaW1wb3J0X2JhZF9wdGhfZmlsZShzZWxmKToKICAgICAgICAgIyBJc3N1ZSA1MjU4CiAgICAgICAgIHB0aF9kaXIsIHB0aF9mbiA9IHNlbGYubWFrZV9wdGgoImFiY1x4MDBkZWZcbiIpCkBAIC0yNDMsMTMgKzI0MiwxNCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGlycyksIDIpCiAgICAgICAgICAgICB3YW50ZWQgPSBvcy5wYXRoLmpvaW4oJy9MaWJyYXJ5JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoIlBZVEhPTkZSQU1FV09SSyIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy52ZXJzaW9uWzozXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJWQuJWQnICUgc3lzLnZlcnNpb25faW5mb1s6Ml0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NpdGUtcGFja2FnZXMnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXJzWzFdLCB3YW50ZWQpCiAgICAgICAgIGVsaWYgb3Muc2VwID09ICcvJzoKICAgICAgICAgICAgICMgT1MgWCBub24tZnJhbXdld29yayBidWlsZHMsIExpbnV4LCBGcmVlQlNELCBldGMKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpcnMpLCAxKQotICAgICAgICAgICAgd2FudGVkID0gb3MucGF0aC5qb2luKCd4b3hvJywgJ2xpYicsICdweXRob24nICsgc3lzLnZlcnNpb25bOjNdLAorICAgICAgICAgICAgd2FudGVkID0gb3MucGF0aC5qb2luKCd4b3hvJywgJ2xpYicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3B5dGhvbiVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaXRlLXBhY2thZ2VzJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlyc1swXSwgd2FudGVkKQogICAgICAgICBlbHNlOgpAQCAtNDQ2LDEwICs0NDYsOSBAQAogICAgICAgICBwb3BlbiA9IHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLCAnLUknLCAnLXYnLCAnLWMnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbXBvcnQgc3lzOyBwcmludChzZXQoc3lzLm1vZHVsZXMpKSddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9J3V0Zi04JykKICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwb3Blbi5jb21tdW5pY2F0ZSgpCi0gICAgICAgIHN0ZG91dCA9IHN0ZG91dC5kZWNvZGUoJ3V0Zi04JykKLSAgICAgICAgc3RkZXJyID0gc3RkZXJyLmRlY29kZSgndXRmLTgnKQogICAgICAgICBtb2R1bGVzID0gZXZhbChzdGRvdXQpCiAKICAgICAgICAgc2VsZi5hc3NlcnRJbignc2l0ZScsIG1vZHVsZXMpCkBAIC00NjksNyArNDY4LDEwMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hlYXBxJywgJ2l0ZXJ0b29scycsICdrZXl3b3JkJywgJ29wZXJhdG9yJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXBybGliJywgJ3R5cGVzJywgJ3dlYWtyZWYnCiAgICAgICAgICAgICAgICAgICAgICAgICAgIH0uZGlmZmVyZW5jZShzeXMuYnVpbHRpbl9tb2R1bGVfbmFtZXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9kdWxlcy5pbnRlcnNlY3Rpb24oY29sbGVjdGlvbl9tb2RzKSwgc3RkZXJyKQorICAgICAgICAjIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyODA5NQorICAgICAgICBpZiBzeXMucGxhdGZvcm0gIT0gJ2Rhcndpbic6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vZHVsZXMuaW50ZXJzZWN0aW9uKGNvbGxlY3Rpb25fbW9kcyksIHN0ZGVycikKKworICAgIGRlZiB0ZXN0X3N0YXJ0dXBfaW50ZXJhY3RpdmVob29rKHNlbGYpOgorICAgICAgICByID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICctYycsCisgICAgICAgICAgICAnaW1wb3J0IHN5czsgc3lzLmV4aXQoaGFzYXR0cihzeXMsICJfX2ludGVyYWN0aXZlaG9va19fIikpJ10pLndhaXQoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUociwgIidfX2ludGVyYWN0aXZlaG9va19fJyBub3QgYWRkZWQgYnkgc2l0ZSIpCisKKyAgICBkZWYgdGVzdF9zdGFydHVwX2ludGVyYWN0aXZlaG9va19pc29sYXRlZChzZWxmKToKKyAgICAgICAgIyBpc3N1ZTI4MTkyIHJlYWRsaW5lIGlzIG5vdCBhdXRvbWF0aWNhbGx5IGVuYWJsZWQgaW4gaXNvbGF0ZWQgbW9kZQorICAgICAgICByID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICctSScsICctYycsCisgICAgICAgICAgICAnaW1wb3J0IHN5czsgc3lzLmV4aXQoaGFzYXR0cihzeXMsICJfX2ludGVyYWN0aXZlaG9va19fIikpJ10pLndhaXQoKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHIsICInX19pbnRlcmFjdGl2ZWhvb2tfXycgYWRkZWQgaW4gaXNvbGF0ZWQgbW9kZSIpCisKKyAgICBkZWYgdGVzdF9zdGFydHVwX2ludGVyYWN0aXZlaG9va19pc29sYXRlZF9leHBsaWNpdChzZWxmKToKKyAgICAgICAgIyBpc3N1ZTI4MTkyIHJlYWRsaW5lIGNhbiBiZSBleHBsaWNpdGx5IGVuYWJsZWQgaW4gaXNvbGF0ZWQgbW9kZQorICAgICAgICByID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICctSScsICctYycsCisgICAgICAgICAgICAnaW1wb3J0IHNpdGUsIHN5czsgc2l0ZS5lbmFibGVybGNvbXBsZXRlcigpOyBzeXMuZXhpdChoYXNhdHRyKHN5cywgIl9faW50ZXJhY3RpdmVob29rX18iKSknXSkud2FpdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyLCAiJ19faW50ZXJhY3RpdmVob29rX18nIG5vdCBhZGRlZCBieSBlbmFibGVybGNvbXBsZXRlcigpIikKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfY3JlYXRlX3VuZGVycHRoX2V4ZShzZWxmLCBsaW5lcyk6CisgICAgICAgIGV4ZV9maWxlID0gb3MucGF0aC5qb2luKG9zLmdldGVudignVEVNUCcpLCBvcy5wYXRoLnNwbGl0KHN5cy5leGVjdXRhYmxlKVsxXSkKKyAgICAgICAgc2h1dGlsLmNvcHkoc3lzLmV4ZWN1dGFibGUsIGV4ZV9maWxlKQorCisgICAgICAgIF9wdGhfZmlsZSA9IG9zLnBhdGguc3BsaXRleHQoZXhlX2ZpbGUpWzBdICsgJy5fcHRoJworICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIG9wZW4oX3B0aF9maWxlLCAndycpIGFzIGY6CisgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gbGluZXM6CisgICAgICAgICAgICAgICAgICAgIHByaW50KGxpbmUsIGZpbGU9ZikKKyAgICAgICAgICAgIHJldHVybiBleGVfZmlsZQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBvcy51bmxpbmsoX3B0aF9maWxlKQorICAgICAgICAgICAgb3MudW5saW5rKGV4ZV9maWxlKQorICAgICAgICAgICAgcmFpc2UKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfY2xlYW51cF91bmRlcnB0aF9leGUoc2VsZiwgZXhlX2ZpbGUpOgorICAgICAgICBfcHRoX2ZpbGUgPSBvcy5wYXRoLnNwbGl0ZXh0KGV4ZV9maWxlKVswXSArICcuX3B0aCcKKyAgICAgICAgb3MudW5saW5rKF9wdGhfZmlsZSkKKyAgICAgICAgb3MudW5saW5rKGV4ZV9maWxlKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtID09ICd3aW4zMicsICJvbmx5IHN1cHBvcnRlZCBvbiBXaW5kb3dzIikKKyAgICBkZWYgdGVzdF91bmRlcnB0aF9ub3NpdGVfZmlsZShzZWxmKToKKyAgICAgICAgbGlicGF0aCA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmRpcm5hbWUoZW5jb2RpbmdzLl9fZmlsZV9fKSkKKyAgICAgICAgZXhlX3ByZWZpeCA9IG9zLnBhdGguZGlybmFtZShzeXMuZXhlY3V0YWJsZSkKKyAgICAgICAgZXhlX2ZpbGUgPSBzZWxmLl9jcmVhdGVfdW5kZXJwdGhfZXhlKFsKKyAgICAgICAgICAgICdmYWtlLXBhdGgtbmFtZScsCisgICAgICAgICAgICAqW2xpYnBhdGggZm9yIF8gaW4gcmFuZ2UoMjAwKV0sCisgICAgICAgICAgICAnIyBjb21tZW50JywKKyAgICAgICAgICAgICdpbXBvcnQgc2l0ZScKKyAgICAgICAgXSkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBlbnYgPSBvcy5lbnZpcm9uLmNvcHkoKQorICAgICAgICAgICAgZW52WydQWVRIT05QQVRIJ10gPSAnZnJvbS1lbnYnCisgICAgICAgICAgICBlbnZbJ1BBVEgnXSA9ICd7fTt7fScuZm9ybWF0KGV4ZV9wcmVmaXgsIG9zLmdldGVudignUEFUSCcpKQorICAgICAgICAgICAgcmMgPSBzdWJwcm9jZXNzLmNhbGwoW2V4ZV9maWxlLCAnLWMnLAorICAgICAgICAgICAgICAgICdpbXBvcnQgc3lzOyBzeXMuZXhpdChzeXMuZmxhZ3Mubm9fc2l0ZSBhbmQgJworICAgICAgICAgICAgICAgICdsZW4oc3lzLnBhdGgpID4gMjAwIGFuZCAnCisgICAgICAgICAgICAgICAgJyVyIGluIHN5cy5wYXRoIGFuZCAlciBpbiBzeXMucGF0aCBhbmQgJXIgbm90IGluIHN5cy5wYXRoKScgJSAoCisgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzeXMucHJlZml4LCAnZmFrZS1wYXRoLW5hbWUnKSwKKyAgICAgICAgICAgICAgICAgICAgbGlicGF0aCwKKyAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHN5cy5wcmVmaXgsICdmcm9tLWVudicpLAorICAgICAgICAgICAgICAgICldLCBlbnY9ZW52KQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc2VsZi5fY2xlYW51cF91bmRlcnB0aF9leGUoZXhlX2ZpbGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmMsIDApCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJywgIm9ubHkgc3VwcG9ydGVkIG9uIFdpbmRvd3MiKQorICAgIGRlZiB0ZXN0X3VuZGVycHRoX2ZpbGUoc2VsZik6CisgICAgICAgIGxpYnBhdGggPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKGVuY29kaW5ncy5fX2ZpbGVfXykpCisgICAgICAgIGV4ZV9wcmVmaXggPSBvcy5wYXRoLmRpcm5hbWUoc3lzLmV4ZWN1dGFibGUpCisgICAgICAgIGV4ZV9maWxlID0gc2VsZi5fY3JlYXRlX3VuZGVycHRoX2V4ZShbCisgICAgICAgICAgICAnZmFrZS1wYXRoLW5hbWUnLAorICAgICAgICAgICAgKltsaWJwYXRoIGZvciBfIGluIHJhbmdlKDIwMCldLAorICAgICAgICAgICAgJyMgY29tbWVudCcsCisgICAgICAgICAgICAnaW1wb3J0IHNpdGUnCisgICAgICAgIF0pCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGVudiA9IG9zLmVudmlyb24uY29weSgpCisgICAgICAgICAgICBlbnZbJ1BZVEhPTlBBVEgnXSA9ICdmcm9tLWVudicKKyAgICAgICAgICAgIGVudlsnUEFUSCddID0gJ3t9O3t9Jy5mb3JtYXQoZXhlX3ByZWZpeCwgb3MuZ2V0ZW52KCdQQVRIJykpCisgICAgICAgICAgICByYyA9IHN1YnByb2Nlc3MuY2FsbChbZXhlX2ZpbGUsICctYycsCisgICAgICAgICAgICAgICAgJ2ltcG9ydCBzeXM7IHN5cy5leGl0KG5vdCBzeXMuZmxhZ3Mubm9fc2l0ZSBhbmQgJworICAgICAgICAgICAgICAgICclciBpbiBzeXMucGF0aCBhbmQgJXIgaW4gc3lzLnBhdGggYW5kICVyIG5vdCBpbiBzeXMucGF0aCknICUgKAorICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc3lzLnByZWZpeCwgJ2Zha2UtcGF0aC1uYW1lJyksCisgICAgICAgICAgICAgICAgICAgIGxpYnBhdGgsCisgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzeXMucHJlZml4LCAnZnJvbS1lbnYnKSwKKyAgICAgICAgICAgICAgICApXSwgZW52PWVudikKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHNlbGYuX2NsZWFudXBfdW5kZXJwdGhfZXhlKGV4ZV9maWxlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJjLCAwKQogCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NtdHBkLnB5IGIvTGliL3Rlc3QvdGVzdF9zbXRwZC5weQppbmRleCA4OGRiZmRmLi4zZWViZTk0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NtdHBkLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc210cGQucHkKQEAgLTUzLDEwICs1Myw2IEBACiAgICAgICAgIHdyaXRlX2xpbmUoYidEQVRBJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgd3JpdGVfbGluZSwgYidzcGFtXHJcbi5cclxuJykKIAotICAgIGRlZiB0ZXN0X2RlY29kZV9kYXRhX2RlZmF1bHRfd2FybnMoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgc210cGQuU01UUFNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCkpCi0KICAgICBkZWYgdGVzdF9kZWNvZGVfZGF0YV9hbmRfZW5hYmxlX1NNVFBVVEY4X3JhaXNlcyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCiAgICAgICAgICAgICBWYWx1ZUVycm9yLApAQCAtMTA4LDEwICsxMDQsOSBAQAogICAgICAgICAgICAgICIiIikpCiAKICAgICBkZWYgdGVzdF9wcm9jZXNzX21lc3NhZ2Vfd2l0aF9kZWNvZGVfZGF0YV9mYWxzZShzZWxmKToKLSAgICAgICAgc2VydmVyID0gc210cGQuRGVidWdnaW5nU2VydmVyKChzdXBwb3J0LkhPU1QsIDApLCAoJ2InLCAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZV9kYXRhPUZhbHNlKQorICAgICAgICBzZXJ2ZXIgPSBzbXRwZC5EZWJ1Z2dpbmdTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksICgnYicsIDApKQogICAgICAgICBjb25uLCBhZGRyID0gc2VydmVyLmFjY2VwdCgpCi0gICAgICAgIGNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIsIGRlY29kZV9kYXRhPUZhbHNlKQorICAgICAgICBjaGFubmVsID0gc210cGQuU01UUENoYW5uZWwoc2VydmVyLCBjb25uLCBhZGRyKQogICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgczoKICAgICAgICAgICAgIHNlbGYuc2VuZF9kYXRhKGNoYW5uZWwsIGInRnJvbTogdGVzdFxuXG5oXHhjM1x4YTlsbG9ceGZmXG4nKQogICAgICAgICBzdGRvdXQgPSBzLmdldHZhbHVlKCkKQEAgLTE3NSwxMyArMTcwLDExIEBACiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzdXBwb3J0LklQVjZfRU5BQkxFRCwgIklQdjYgbm90IGVuYWJsZWQiKQogICAgIGRlZiB0ZXN0X3NvY2tldF91c2VzX0lQdjYoc2VsZik6Ci0gICAgICAgIHNlcnZlciA9IHNtdHBkLlNNVFBTZXJ2ZXIoKHN1cHBvcnQuSE9TVHY2LCAwKSwgKHN1cHBvcnQuSE9TVCwgMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlX2RhdGE9RmFsc2UpCisgICAgICAgIHNlcnZlciA9IHNtdHBkLlNNVFBTZXJ2ZXIoKHN1cHBvcnQuSE9TVHY2LCAwKSwgKHN1cHBvcnQuSE9TVCwgMCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLnNvY2tldC5mYW1pbHksIHNvY2tldC5BRl9JTkVUNikKIAogICAgIGRlZiB0ZXN0X3NvY2tldF91c2VzX0lQdjQoc2VsZik6Ci0gICAgICAgIHNlcnZlciA9IHNtdHBkLlNNVFBTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksIChzdXBwb3J0LkhPU1R2NiwgMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlX2RhdGE9RmFsc2UpCisgICAgICAgIHNlcnZlciA9IHNtdHBkLlNNVFBTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksIChzdXBwb3J0LkhPU1R2NiwgMCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLnNvY2tldC5mYW1pbHksIHNvY2tldC5BRl9JTkVUKQogCiAKQEAgLTIwNCwxOCArMTk3LDE4IEBACiAgICAgICAgIGNoYW5uZWwuaGFuZGxlX3JlYWQoKQogCiAgICAgZGVmIHRlc3RfcGFyYW1zX3JlamVjdGVkKHNlbGYpOgotICAgICAgICBzZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCksIGRlY29kZV9kYXRhPUZhbHNlKQorICAgICAgICBzZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCkpCiAgICAgICAgIGNvbm4sIGFkZHIgPSBzZXJ2ZXIuYWNjZXB0KCkKLSAgICAgICAgY2hhbm5lbCA9IHNtdHBkLlNNVFBDaGFubmVsKHNlcnZlciwgY29ubiwgYWRkciwgZGVjb2RlX2RhdGE9RmFsc2UpCisgICAgICAgIGNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShjaGFubmVsLCBiJ0VITE8gZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShjaGFubmVsLCBiJ01BSUwgZnJvbTogPGZvb0BleGFtcGxlLmNvbT4gc2l6ZT0yMCcpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShjaGFubmVsLCBiJ1JDUFQgdG86IDxmb29AZXhhbXBsZS5jb20+IGZvbz1iYXInKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoYW5uZWwuc29ja2V0Lmxhc3QsIHNlbGYuZXJyb3JfcmVzcG9uc2UpCiAKICAgICBkZWYgdGVzdF9ub3RoaW5nX2FjY2VwdGVkKHNlbGYpOgotICAgICAgICBzZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCksIGRlY29kZV9kYXRhPUZhbHNlKQorICAgICAgICBzZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCkpCiAgICAgICAgIGNvbm4sIGFkZHIgPSBzZXJ2ZXIuYWNjZXB0KCkKLSAgICAgICAgY2hhbm5lbCA9IHNtdHBkLlNNVFBDaGFubmVsKHNlcnZlciwgY29ubiwgYWRkciwgZGVjb2RlX2RhdGE9RmFsc2UpCisgICAgICAgIGNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShjaGFubmVsLCBiJ0VITE8gZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShjaGFubmVsLCBiJ01BSUwgZnJvbTogPGZvb0BleGFtcGxlLmNvbT4gc2l6ZT0yMCcpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShjaGFubmVsLCBiJ1JDUFQgdG86IDxmb29AZXhhbXBsZS5jb20+JykKQEAgLTI1Nyw5ICsyNTAsOSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCiAKICAgICBkZWYgdGVzdF93aXRoX2RlY29kZV9kYXRhX2ZhbHNlKHNlbGYpOgotICAgICAgICBzZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCksIGRlY29kZV9kYXRhPUZhbHNlKQorICAgICAgICBzZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCkpCiAgICAgICAgIGNvbm4sIGFkZHIgPSBzZXJ2ZXIuYWNjZXB0KCkKLSAgICAgICAgY2hhbm5lbCA9IHNtdHBkLlNNVFBDaGFubmVsKHNlcnZlciwgY29ubiwgYWRkciwgZGVjb2RlX2RhdGE9RmFsc2UpCisgICAgICAgIGNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShjaGFubmVsLCBiJ0VITE8gZXhhbXBsZScpCiAgICAgICAgIGZvciBsaW5lIGluIFsKICAgICAgICAgICAgIGInTUFJTCBmcm9tOiA8Zm9vQGV4YW1wbGUuY29tPiBzaXplPTIwIFNNVFBVVEY4JywKQEAgLTc2NSwxMyArNzU4LDYgQEAKICAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICBzZWxmLmNoYW5uZWwuX1NNVFBDaGFubmVsX19hZGRyID0gJ3NwYW0nCiAKLSAgICBkZWYgdGVzdF9kZWNvZGVfZGF0YV9kZWZhdWx0X3dhcm5pbmcoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgc2VydmVyID0gRHVtbXlTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksICgnYicsIDApKQotICAgICAgICBjb25uLCBhZGRyID0gc2VsZi5zZXJ2ZXIuYWNjZXB0KCkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICBzbXRwZC5TTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIpCi0KIEB1bml0dGVzdC5za2lwVW5sZXNzKHN1cHBvcnQuSVBWNl9FTkFCTEVELCAiSVB2NiBub3QgZW5hYmxlZCIpCiBjbGFzcyBTTVRQRENoYW5uZWxJUHY2VGVzdChTTVRQRENoYW5uZWxUZXN0KToKICAgICBkZWYgc2V0VXAoc2VsZik6CkBAIC04NDUsMTIgKzgzMSw5IEBACiAgICAgICAgIHNtdHBkLnNvY2tldCA9IGFzeW5jb3JlLnNvY2tldCA9IG1vY2tfc29ja2V0CiAgICAgICAgIHNlbGYub2xkX2RlYnVnc3RyZWFtID0gc210cGQuREVCVUdTVFJFQU0KICAgICAgICAgc2VsZi5kZWJ1ZyA9IHNtdHBkLkRFQlVHU1RSRUFNID0gaW8uU3RyaW5nSU8oKQotICAgICAgICBzZWxmLnNlcnZlciA9IER1bW15U2VydmVyKChzdXBwb3J0LkhPU1QsIDApLCAoJ2InLCAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVfZGF0YT1GYWxzZSkKKyAgICAgICAgc2VsZi5zZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCkpCiAgICAgICAgIGNvbm4sIGFkZHIgPSBzZWxmLnNlcnZlci5hY2NlcHQoKQotICAgICAgICAjIFNldCBkZWNvZGVfZGF0YSB0byBGYWxzZQotICAgICAgICBzZWxmLmNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZWxmLnNlcnZlciwgY29ubiwgYWRkciwKLSAgICAgICAgICAgICAgICBkZWNvZGVfZGF0YT1GYWxzZSkKKyAgICAgICAgc2VsZi5jaGFubmVsID0gc210cGQuU01UUENoYW5uZWwoc2VsZi5zZXJ2ZXIsIGNvbm4sIGFkZHIpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIGFzeW5jb3JlLmNsb3NlX2FsbCgpCkBAIC0xMDE1LDUgKzk5OCwxNiBAQAogICAgICAgICAgICAgc2VsZi53cml0ZV9saW5lKGIndGVzdFxyXG4uJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0WzA6M10sIGInMjUwJykKIAorCitjbGFzcyBNaXNjVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKKyAgICAgICAgYmxhY2tsaXN0ID0geworICAgICAgICAgICAgInByb2dyYW0iLCAiRGV2bnVsbCIsICJERUJVR1NUUkVBTSIsICJORVdMSU5FIiwgIkNPTU1BU1BBQ0UiLAorICAgICAgICAgICAgIkRBVEFfU0laRV9ERUZBVUxUIiwgInVzYWdlIiwgIk9wdGlvbnMiLCAicGFyc2VhcmdzIiwKKworICAgICAgICB9CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIHNtdHBkLCBibGFja2xpc3Q9YmxhY2tsaXN0KQorCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NvY2tldC5weSBiL0xpYi90ZXN0L3Rlc3Rfc29ja2V0LnB5CmluZGV4IGRiZmNhYjguLjZiMjllMTggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc29ja2V0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc29ja2V0LnB5CkBAIC0xMyw3ICsxMyw2IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgb3MKIGltcG9ydCBhcnJheQotaW1wb3J0IHBsYXRmb3JtCiBpbXBvcnQgY29udGV4dGxpYgogZnJvbSB3ZWFrcmVmIGltcG9ydCBwcm94eQogaW1wb3J0IHNpZ25hbApAQCAtNjYsMTAgKzY1LDIyIEBACiAgICAgICAgIHMuY2xvc2UoKQogICAgIHJldHVybiBUcnVlCiAKK2RlZiBfaGF2ZV9zb2NrZXRfYWxnKCk6CisgICAgIiIiQ2hlY2sgd2hldGhlciBBRl9BTEcgc29ja2V0cyBhcmUgc3VwcG9ydGVkIG9uIHRoaXMgaG9zdC4iIiIKKyAgICB0cnk6CisgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9BTEcsIHNvY2tldC5TT0NLX1NFUVBBQ0tFVCwgMCkKKyAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBPU0Vycm9yKToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgZWxzZToKKyAgICAgICAgcy5jbG9zZSgpCisgICAgcmV0dXJuIFRydWUKKwogSEFWRV9TT0NLRVRfQ0FOID0gX2hhdmVfc29ja2V0X2NhbigpCiAKIEhBVkVfU09DS0VUX1JEUyA9IF9oYXZlX3NvY2tldF9yZHMoKQogCitIQVZFX1NPQ0tFVF9BTEcgPSBfaGF2ZV9zb2NrZXRfYWxnKCkKKwogIyBTaXplIGluIGJ5dGVzIG9mIHRoZSBpbnQgdHlwZQogU0laRU9GX0lOVCA9IGFycmF5LmFycmF5KCJpIikuaXRlbXNpemUKIApAQCAtMjY3LDggKzI3OCwxNCBAQAogCiAgICAgZGVmIGNsaWVudFJ1bihzZWxmLCB0ZXN0X2Z1bmMpOgogICAgICAgICBzZWxmLnNlcnZlcl9yZWFkeS53YWl0KCkKLSAgICAgICAgc2VsZi5jbGllbnRTZXRVcCgpCi0gICAgICAgIHNlbGYuY2xpZW50X3JlYWR5LnNldCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuY2xpZW50U2V0VXAoKQorICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgc2VsZi5xdWV1ZS5wdXQoZSkKKyAgICAgICAgICAgIHNlbGYuY2xpZW50VGVhckRvd24oKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLmNsaWVudF9yZWFkeS5zZXQoKQogICAgICAgICBpZiBzZWxmLnNlcnZlcl9jcmFzaGVkOgogICAgICAgICAgICAgc2VsZi5jbGllbnRUZWFyRG93bigpCiAgICAgICAgICAgICByZXR1cm4KQEAgLTUwOSw4ICs1MjYsMTEgQEAKICAgICAgICAgc2VsZi5zZXJ2X2Nvbm4gPSBzZWxmLmNsaQogCiAgICAgZGVmIGNsaWVudFRlYXJEb3duKHNlbGYpOgotICAgICAgICBzZWxmLnNlcnZfY29ubi5jbG9zZSgpCi0gICAgICAgIHNlbGYuc2Vydl9jb25uID0gTm9uZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLnNlcnZfY29ubi5jbG9zZSgpCisgICAgICAgICAgICBzZWxmLnNlcnZfY29ubiA9IE5vbmUKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgcGFzcwogICAgICAgICBzdXBlcigpLmNsaWVudFRlYXJEb3duKCkKIAogCkBAIC01MjksNyArNTQ5LDcgQEAKIAogICAgIGRlZiBiaW5kU29jayhzZWxmLCBzb2NrKToKICAgICAgICAgcGF0aCA9IHRlbXBmaWxlLm1rdGVtcChkaXI9c2VsZi5kaXJfcGF0aCkKLSAgICAgICAgc29jay5iaW5kKHBhdGgpCisgICAgICAgIHN1cHBvcnQuYmluZF91bml4X3NvY2tldChzb2NrLCBwYXRoKQogICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHBhdGgpCiAKIGNsYXNzIFVuaXhTdHJlYW1CYXNlKFVuaXhTb2NrZXRUZXN0QmFzZSk6CkBAIC0xMTYxLDYgKzExODEsMTcgQEAKICAgICAgICAgc29jay5jbG9zZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHNvY2suc2VuZCwgYiJzcGFtIikKIAorICAgIGRlZiB0ZXN0Q2xvc2VFeGNlcHRpb24oc2VsZik6CisgICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KCkKKyAgICAgICAgc29ja2V0LnNvY2tldChmaWxlbm89c29jay5maWxlbm8oKSkuY2xvc2UoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzb2NrLmNsb3NlKCkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgIyBXaW5zb2NrIGFwcGFyZW50bHkgcmFpc2VzIEVOT1RTT0NLCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGVyci5lcnJubywgKGVycm5vLkVCQURGLCBlcnJuby5FTk9UU09DSykpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoImNsb3NlKCkgc2hvdWxkIHJhaXNlIEVCQURGL0VOT1RTT0NLIikKKwogICAgIGRlZiB0ZXN0TmV3QXR0cmlidXRlcyhzZWxmKToKICAgICAgICAgIyB0ZXN0aW5nIC5mYW1pbHksIC50eXBlIGFuZCAucHJvdG9jb2wKIApAQCAtMTIwNyw2ICsxMjM4LDIyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHMuaW9jdGwsIC0xLCBOb25lKQogICAgICAgICBzLmlvY3RsKHNvY2tldC5TSU9fS0VFUEFMSVZFX1ZBTFMsICgxLCAxMDAsIDEwMCkpCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5uYW1lID09ICJudCIsICJXaW5kb3dzIHNwZWNpZmljIikKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNvY2tldCwgJ1NJT19MT09QQkFDS19GQVNUX1BBVEgnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnTG9vcGJhY2sgZmFzdCBwYXRoIHN1cHBvcnQgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdCcpCisgICAgZGVmIHRlc3Rfc2lvX2xvb3BiYWNrX2Zhc3RfcGF0aChzZWxmKToKKyAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocy5jbG9zZSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcy5pb2N0bChzb2NrZXQuU0lPX0xPT1BCQUNLX0ZBU1RfUEFUSCwgVHJ1ZSkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgV1NBRU9QTk9UU1VQUCA9IDEwMDQ1CisgICAgICAgICAgICBpZiBleGMud2luZXJyb3IgPT0gV1NBRU9QTk9UU1VQUDoKKyAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJTSU9fTE9PUEJBQ0tfRkFTVF9QQVRIIGlzIGRlZmluZWQgYnV0ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkb2Vzbid0IGltcGxlbWVudGVkIGluIHRoaXMgV2luZG93cyB2ZXJzaW9uIikKKyAgICAgICAgICAgIHJhaXNlCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcy5pb2N0bCwgc29ja2V0LlNJT19MT09QQkFDS19GQVNUX1BBVEgsIE5vbmUpCisKICAgICBkZWYgdGVzdEdldGFkZHJpbmZvKHNlbGYpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzb2NrZXQuZ2V0YWRkcmluZm8oJ2xvY2FsaG9zdCcsIDgwKQpAQCAtMjg0Myw2ICsyODkwLDcgQEAKICAgICAgICAgICAgIG5ieXRlcyA9IHNlbGYuc2VuZG1zZ1RvU2VydmVyKFttc2ddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ieXRlcywgbGVuKG1zZykpCiAKKyAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSA9PSAiZGFyd2luIiwgInNlZSBpc3N1ZSAjMjQ3MjUiKQogICAgIGRlZiB0ZXN0RkRQYXNzRW1wdHkoc2VsZik6CiAgICAgICAgICMgVHJ5IHRvIHBhc3MgYW4gZW1wdHkgRkQgYXJyYXkuICBDYW4gcmVjZWl2ZSBlaXRoZXIgbm8gYXJyYXkKICAgICAgICAgIyBvciBhbiBlbXB0eSBhcnJheS4KQEAgLTQ1MTQsNiArNDU2MiwxOSBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhzb2NrZXQuZ2FpZXJyb3IsIE9TRXJyb3IpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhzb2NrZXQudGltZW91dCwgT1NFcnJvcikpCiAKKyAgICBkZWYgdGVzdF9zZXRibG9ja2luZ19pbnZhbGlkZmQoc2VsZik6CisgICAgICAgICMgUmVncmVzc2lvbiB0ZXN0IGZvciBpc3N1ZSAjMjg0NzEKKworICAgICAgICBzb2NrMCA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSwgMCkKKyAgICAgICAgc29jayA9IHNvY2tldC5zb2NrZXQoCisgICAgICAgICAgICBzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNLCAwLCBzb2NrMC5maWxlbm8oKSkKKyAgICAgICAgc29jazAuY2xvc2UoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc29jay5kZXRhY2gpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKToKKyAgICAgICAgICAgIHNvY2suc2V0YmxvY2tpbmcoRmFsc2UpCisKKwogQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtID09ICdsaW51eCcsICdMaW51eCBzcGVjaWZpYyB0ZXN0JykKIGNsYXNzIFRlc3RMaW51eEFic3RyYWN0TmFtZXNwYWNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtNDU3OSw3ICs0NjQwLDcgQEAKICAgICBkZWYgYmluZChzZWxmLCBzb2NrLCBwYXRoKToKICAgICAgICAgIyBCaW5kIHRoZSBzb2NrZXQKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc29jay5iaW5kKHBhdGgpCisgICAgICAgICAgICBzdXBwb3J0LmJpbmRfdW5peF9zb2NrZXQoc29jaywgcGF0aCkKICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKICAgICAgICAgICAgIGlmIHN0cihlKSA9PSAiQUZfVU5JWCBwYXRoIHRvbyBsb25nIjoKICAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KApAQCAtNTMyMSw2ICs1MzgyLDE4MyBAQAogICAgICAgICByZXR1cm4gZ2V0YXR0cihzb2NrLCAiX3NlbmRmaWxlX3VzZV9zZW5kZmlsZSIpCiAKIAorQHVuaXR0ZXN0LnNraXBVbmxlc3MoSEFWRV9TT0NLRVRfQUxHLCAnQUZfQUxHIHJlcXVpcmVkJykKK2NsYXNzIExpbnV4S2VybmVsQ3J5cHRvQVBJKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIHRlc3RzIGZvciBBRl9BTEcKKyAgICBkZWYgY3JlYXRlX2FsZyhzZWxmLCB0eXAsIG5hbWUpOgorICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfQUxHLCBzb2NrZXQuU09DS19TRVFQQUNLRVQsIDApCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNvY2suYmluZCgodHlwLCBuYW1lKSkKKyAgICAgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yIGFzIGU6CisgICAgICAgICAgICAjIHR5cGUgLyBhbGdvcml0aG0gaXMgbm90IGF2YWlsYWJsZQorICAgICAgICAgICAgc29jay5jbG9zZSgpCisgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdChzdHIoZSksIHR5cCwgbmFtZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzb2NrCisKKyAgICBkZWYgdGVzdF9zaGEyNTYoc2VsZik6CisgICAgICAgIGV4cGVjdGVkID0gYnl0ZXMuZnJvbWhleCgiYmE3ODE2YmY4ZjAxY2ZlYTQxNDE0MGRlNWRhZTIyMjNiMDAzNjFhMzk2IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjE3N2E5Y2I0MTBmZjYxZjIwMDE1YWQiKQorICAgICAgICB3aXRoIHNlbGYuY3JlYXRlX2FsZygnaGFzaCcsICdzaGEyNTYnKSBhcyBhbGdvOgorICAgICAgICAgICAgb3AsIF8gPSBhbGdvLmFjY2VwdCgpCisgICAgICAgICAgICB3aXRoIG9wOgorICAgICAgICAgICAgICAgIG9wLnNlbmRhbGwoYiJhYmMiKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3AucmVjdig1MTIpLCBleHBlY3RlZCkKKworICAgICAgICAgICAgb3AsIF8gPSBhbGdvLmFjY2VwdCgpCisgICAgICAgICAgICB3aXRoIG9wOgorICAgICAgICAgICAgICAgIG9wLnNlbmQoYidhJywgc29ja2V0Lk1TR19NT1JFKQorICAgICAgICAgICAgICAgIG9wLnNlbmQoYidiJywgc29ja2V0Lk1TR19NT1JFKQorICAgICAgICAgICAgICAgIG9wLnNlbmQoYidjJywgc29ja2V0Lk1TR19NT1JFKQorICAgICAgICAgICAgICAgIG9wLnNlbmQoYicnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3AucmVjdig1MTIpLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X2htYWNfc2hhMShzZWxmKToKKyAgICAgICAgZXhwZWN0ZWQgPSBieXRlcy5mcm9taGV4KCJlZmZjZGY2YWU1ZWIyZmEyZDI3NDE2ZDVmMTg0ZGY5YzI1OWE3Yzc5IikKKyAgICAgICAgd2l0aCBzZWxmLmNyZWF0ZV9hbGcoJ2hhc2gnLCAnaG1hYyhzaGExKScpIGFzIGFsZ286CisgICAgICAgICAgICBhbGdvLnNldHNvY2tvcHQoc29ja2V0LlNPTF9BTEcsIHNvY2tldC5BTEdfU0VUX0tFWSwgYiJKZWZlIikKKyAgICAgICAgICAgIG9wLCBfID0gYWxnby5hY2NlcHQoKQorICAgICAgICAgICAgd2l0aCBvcDoKKyAgICAgICAgICAgICAgICBvcC5zZW5kYWxsKGIid2hhdCBkbyB5YSB3YW50IGZvciBub3RoaW5nPyIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcC5yZWN2KDUxMiksIGV4cGVjdGVkKQorCisgICAgIyBBbHRob3VnaCBpdCBzaG91bGQgd29yayB3aXRoIDMuMTkgYW5kIG5ld2VyIHRoZSB0ZXN0IGJsb2NrcyBvbgorICAgICMgVWJ1bnR1IDE1LjEwIHdpdGggS2VybmVsIDQuMi4wLTE5LgorICAgIEBzdXBwb3J0LnJlcXVpcmVzX2xpbnV4X3ZlcnNpb24oNCwgMykKKyAgICBkZWYgdGVzdF9hZXNfY2JjKHNlbGYpOgorICAgICAgICBrZXkgPSBieXRlcy5mcm9taGV4KCcwNmE5MjE0MDM2YjhhMTViNTEyZTAzZDUzNDEyMDAwNicpCisgICAgICAgIGl2ID0gYnl0ZXMuZnJvbWhleCgnM2RhZmJhNDI5ZDllYjQzMGI0MjJkYTgwMmM5ZmFjNDEnKQorICAgICAgICBtc2cgPSBiIlNpbmdsZSBibG9jayBtc2ciCisgICAgICAgIGNpcGhlcnRleHQgPSBieXRlcy5mcm9taGV4KCdlMzUzNzc5YzEwNzlhZWI4MjcwODk0MmRiZTc3MTgxYScpCisgICAgICAgIG1zZ2xlbiA9IGxlbihtc2cpCisgICAgICAgIHdpdGggc2VsZi5jcmVhdGVfYWxnKCdza2NpcGhlcicsICdjYmMoYWVzKScpIGFzIGFsZ286CisgICAgICAgICAgICBhbGdvLnNldHNvY2tvcHQoc29ja2V0LlNPTF9BTEcsIHNvY2tldC5BTEdfU0VUX0tFWSwga2V5KQorICAgICAgICAgICAgb3AsIF8gPSBhbGdvLmFjY2VwdCgpCisgICAgICAgICAgICB3aXRoIG9wOgorICAgICAgICAgICAgICAgIG9wLnNlbmRtc2dfYWZhbGcob3A9c29ja2V0LkFMR19PUF9FTkNSWVBULCBpdj1pdiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPXNvY2tldC5NU0dfTU9SRSkKKyAgICAgICAgICAgICAgICBvcC5zZW5kYWxsKG1zZykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wLnJlY3YobXNnbGVuKSwgY2lwaGVydGV4dCkKKworICAgICAgICAgICAgb3AsIF8gPSBhbGdvLmFjY2VwdCgpCisgICAgICAgICAgICB3aXRoIG9wOgorICAgICAgICAgICAgICAgIG9wLnNlbmRtc2dfYWZhbGcoW2NpcGhlcnRleHRdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3A9c29ja2V0LkFMR19PUF9ERUNSWVBULCBpdj1pdikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wLnJlY3YobXNnbGVuKSwgbXNnKQorCisgICAgICAgICAgICAjIGxvbmcgbWVzc2FnZQorICAgICAgICAgICAgbXVsdGlwbGllciA9IDEwMjQKKyAgICAgICAgICAgIGxvbmdtc2cgPSBbbXNnXSAqIG11bHRpcGxpZXIKKyAgICAgICAgICAgIG9wLCBfID0gYWxnby5hY2NlcHQoKQorICAgICAgICAgICAgd2l0aCBvcDoKKyAgICAgICAgICAgICAgICBvcC5zZW5kbXNnX2FmYWxnKGxvbmdtc2csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcD1zb2NrZXQuQUxHX09QX0VOQ1JZUFQsIGl2PWl2KQorICAgICAgICAgICAgICAgIGVuYyA9IG9wLnJlY3YobXNnbGVuICogbXVsdGlwbGllcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGVuYyksIG1zZ2xlbiAqIG11bHRpcGxpZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZW5jWzptc2dsZW5dLCBjaXBoZXJ0ZXh0KQorCisgICAgICAgICAgICBvcCwgXyA9IGFsZ28uYWNjZXB0KCkKKyAgICAgICAgICAgIHdpdGggb3A6CisgICAgICAgICAgICAgICAgb3Auc2VuZG1zZ19hZmFsZyhbZW5jXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wPXNvY2tldC5BTEdfT1BfREVDUllQVCwgaXY9aXYpCisgICAgICAgICAgICAgICAgZGVjID0gb3AucmVjdihtc2dsZW4gKiBtdWx0aXBsaWVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGVjKSwgbXNnbGVuICogbXVsdGlwbGllcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjLCBtc2cgKiBtdWx0aXBsaWVyKQorCisgICAgQHN1cHBvcnQucmVxdWlyZXNfbGludXhfdmVyc2lvbig0LCAzKSAgIyBzZWUgdGVzdF9hZXNfY2JjCisgICAgZGVmIHRlc3RfYWVhZF9hZXNfZ2NtKHNlbGYpOgorICAgICAgICBrZXkgPSBieXRlcy5mcm9taGV4KCdjOTM5Y2MxMzM5N2MxZDM3ZGU2YWUwZTFjYjdjNDIzYycpCisgICAgICAgIGl2ID0gYnl0ZXMuZnJvbWhleCgnYjNkOGNjMDE3Y2JiODliMzllMGY2N2UyJykKKyAgICAgICAgcGxhaW4gPSBieXRlcy5mcm9taGV4KCdjM2IzYzQxZjExM2EzMWI3M2Q5YTVjZDQzMjEwMzA2OScpCisgICAgICAgIGFzc29jID0gYnl0ZXMuZnJvbWhleCgnMjQ4MjU2MDJiZDEyYTk4NGUwMDkyZDNlNDQ4ZWRhNWYnKQorICAgICAgICBleHBlY3RlZF9jdCA9IGJ5dGVzLmZyb21oZXgoJzkzZmU3ZDllOWJmZDEwMzQ4YTU2MDZlNWNhZmE3MzU0JykKKyAgICAgICAgZXhwZWN0ZWRfdGFnID0gYnl0ZXMuZnJvbWhleCgnMDAzMmExZGM4NWYxYzk3ODY5MjVhMmU3MWQ4MjcyZGQnKQorCisgICAgICAgIHRhZ2xlbiA9IGxlbihleHBlY3RlZF90YWcpCisgICAgICAgIGFzc29jbGVuID0gbGVuKGFzc29jKQorCisgICAgICAgIHdpdGggc2VsZi5jcmVhdGVfYWxnKCdhZWFkJywgJ2djbShhZXMpJykgYXMgYWxnbzoKKyAgICAgICAgICAgIGFsZ28uc2V0c29ja29wdChzb2NrZXQuU09MX0FMRywgc29ja2V0LkFMR19TRVRfS0VZLCBrZXkpCisgICAgICAgICAgICBhbGdvLnNldHNvY2tvcHQoc29ja2V0LlNPTF9BTEcsIHNvY2tldC5BTEdfU0VUX0FFQURfQVVUSFNJWkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSwgdGFnbGVuKQorCisgICAgICAgICAgICAjIHNlbmQgYXNzb2MsIHBsYWluIGFuZCB0YWcgYnVmZmVyIGluIHNlcGFyYXRlIHN0ZXBzCisgICAgICAgICAgICBvcCwgXyA9IGFsZ28uYWNjZXB0KCkKKyAgICAgICAgICAgIHdpdGggb3A6CisgICAgICAgICAgICAgICAgb3Auc2VuZG1zZ19hZmFsZyhvcD1zb2NrZXQuQUxHX09QX0VOQ1JZUFQsIGl2PWl2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzb2NsZW49YXNzb2NsZW4sIGZsYWdzPXNvY2tldC5NU0dfTU9SRSkKKyAgICAgICAgICAgICAgICBvcC5zZW5kYWxsKGFzc29jLCBzb2NrZXQuTVNHX01PUkUpCisgICAgICAgICAgICAgICAgb3Auc2VuZGFsbChwbGFpbiwgc29ja2V0Lk1TR19NT1JFKQorICAgICAgICAgICAgICAgIG9wLnNlbmRhbGwoYidceDAwJyAqIHRhZ2xlbikKKyAgICAgICAgICAgICAgICByZXMgPSBvcC5yZWN2KGFzc29jbGVuICsgbGVuKHBsYWluKSArIHRhZ2xlbikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX2N0LCByZXNbYXNzb2NsZW46LXRhZ2xlbl0pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF90YWcsIHJlc1stdGFnbGVuOl0pCisKKyAgICAgICAgICAgICMgbm93IHdpdGggbXNnCisgICAgICAgICAgICBvcCwgXyA9IGFsZ28uYWNjZXB0KCkKKyAgICAgICAgICAgIHdpdGggb3A6CisgICAgICAgICAgICAgICAgbXNnID0gYXNzb2MgKyBwbGFpbiArIGInXHgwMCcgKiB0YWdsZW4KKyAgICAgICAgICAgICAgICBvcC5zZW5kbXNnX2FmYWxnKFttc2ddLCBvcD1zb2NrZXQuQUxHX09QX0VOQ1JZUFQsIGl2PWl2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzb2NsZW49YXNzb2NsZW4pCisgICAgICAgICAgICAgICAgcmVzID0gb3AucmVjdihhc3NvY2xlbiArIGxlbihwbGFpbikgKyB0YWdsZW4pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9jdCwgcmVzW2Fzc29jbGVuOi10YWdsZW5dKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfdGFnLCByZXNbLXRhZ2xlbjpdKQorCisgICAgICAgICAgICAjIGNyZWF0ZSBhbmMgZGF0YSBtYW51YWxseQorICAgICAgICAgICAgcGFja191aW50MzIgPSBzdHJ1Y3QuU3RydWN0KCdJJykucGFjaworICAgICAgICAgICAgb3AsIF8gPSBhbGdvLmFjY2VwdCgpCisgICAgICAgICAgICB3aXRoIG9wOgorICAgICAgICAgICAgICAgIG1zZyA9IGFzc29jICsgcGxhaW4gKyBiJ1x4MDAnICogdGFnbGVuCisgICAgICAgICAgICAgICAgb3Auc2VuZG1zZygKKyAgICAgICAgICAgICAgICAgICAgW21zZ10sCisgICAgICAgICAgICAgICAgICAgIChbc29ja2V0LlNPTF9BTEcsIHNvY2tldC5BTEdfU0VUX09QLCBwYWNrX3VpbnQzMihzb2NrZXQuQUxHX09QX0VOQ1JZUFQpXSwKKyAgICAgICAgICAgICAgICAgICAgIFtzb2NrZXQuU09MX0FMRywgc29ja2V0LkFMR19TRVRfSVYsIHBhY2tfdWludDMyKGxlbihpdikpICsgaXZdLAorICAgICAgICAgICAgICAgICAgICAgW3NvY2tldC5TT0xfQUxHLCBzb2NrZXQuQUxHX1NFVF9BRUFEX0FTU09DTEVOLCBwYWNrX3VpbnQzMihhc3NvY2xlbildLAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIHJlcyA9IG9wLnJlY3YobGVuKG1zZykpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9jdCwgcmVzW2Fzc29jbGVuOi10YWdsZW5dKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfdGFnLCByZXNbLXRhZ2xlbjpdKQorCisgICAgICAgICAgICAjIGRlY3J5cHQgYW5kIHZlcmlmeQorICAgICAgICAgICAgb3AsIF8gPSBhbGdvLmFjY2VwdCgpCisgICAgICAgICAgICB3aXRoIG9wOgorICAgICAgICAgICAgICAgIG1zZyA9IGFzc29jICsgZXhwZWN0ZWRfY3QgKyBleHBlY3RlZF90YWcKKyAgICAgICAgICAgICAgICBvcC5zZW5kbXNnX2FmYWxnKFttc2ddLCBvcD1zb2NrZXQuQUxHX09QX0RFQ1JZUFQsIGl2PWl2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzb2NsZW49YXNzb2NsZW4pCisgICAgICAgICAgICAgICAgcmVzID0gb3AucmVjdihsZW4obXNnKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBsYWluLCByZXNbYXNzb2NsZW46LXRhZ2xlbl0pCisKKyAgICBAc3VwcG9ydC5yZXF1aXJlc19saW51eF92ZXJzaW9uKDQsIDMpICAjIHNlZSB0ZXN0X2Flc19jYmMKKyAgICBkZWYgdGVzdF9kcmJnX3ByX3NoYTI1NihzZWxmKToKKyAgICAgICAgIyBkZXRlcm1pbmlzdGljIHJhbmRvbSBiaXQgZ2VuZXJhdG9yLCBwcmVkaWN0aW9uIHJlc2lzdGFuY2UsIHNoYTI1NgorICAgICAgICB3aXRoIHNlbGYuY3JlYXRlX2FsZygncm5nJywgJ2RyYmdfcHJfc2hhMjU2JykgYXMgYWxnbzoKKyAgICAgICAgICAgIGV4dHJhX3NlZWQgPSBvcy51cmFuZG9tKDMyKQorICAgICAgICAgICAgYWxnby5zZXRzb2Nrb3B0KHNvY2tldC5TT0xfQUxHLCBzb2NrZXQuQUxHX1NFVF9LRVksIGV4dHJhX3NlZWQpCisgICAgICAgICAgICBvcCwgXyA9IGFsZ28uYWNjZXB0KCkKKyAgICAgICAgICAgIHdpdGggb3A6CisgICAgICAgICAgICAgICAgcm4gPSBvcC5yZWN2KDMyKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJuKSwgMzIpCisKKyAgICBkZWYgdGVzdF9zZW5kbXNnX2FmYWxnX2FyZ3Moc2VsZik6CisgICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9BTEcsIHNvY2tldC5TT0NLX1NFUVBBQ0tFVCwgMCkKKyAgICAgICAgd2l0aCBzb2NrOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgICAgIHNvY2suc2VuZG1zZ19hZmFsZygpCisKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgICAgICBzb2NrLnNlbmRtc2dfYWZhbGcob3A9Tm9uZSkKKworICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgICAgIHNvY2suc2VuZG1zZ19hZmFsZygxKQorCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICAgICAgc29jay5zZW5kbXNnX2FmYWxnKG9wPXNvY2tldC5BTEdfT1BfRU5DUllQVCwgYXNzb2NsZW49Tm9uZSkKKworICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgICAgIHNvY2suc2VuZG1zZ19hZmFsZyhvcD1zb2NrZXQuQUxHX09QX0VOQ1JZUFQsIGFzc29jbGVuPS0xKQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICB0ZXN0cyA9IFtHZW5lcmFsTW9kdWxlVGVzdHMsIEJhc2ljVENQVGVzdCwgVENQQ2xvc2VyVGVzdCwgVENQVGltZW91dFRlc3QsCiAgICAgICAgICAgICAgVGVzdEV4Y2VwdGlvbnMsIEJ1ZmZlcklPVGVzdCwgQmFzaWNUQ1BUZXN0MiwgQmFzaWNVRFBUZXN0LCBVRFBUaW1lb3V0VGVzdCBdCkBAIC01MzQ3LDYgKzU1ODUsNyBAQAogICAgIHRlc3RzLmV4dGVuZChbVElQQ1Rlc3QsIFRJUENUaHJlYWRhYmxlVGVzdF0pCiAgICAgdGVzdHMuZXh0ZW5kKFtCYXNpY0NBTlRlc3QsIENBTlRlc3RdKQogICAgIHRlc3RzLmV4dGVuZChbQmFzaWNSRFNUZXN0LCBSRFNUZXN0XSkKKyAgICB0ZXN0cy5hcHBlbmQoTGludXhLZXJuZWxDcnlwdG9BUEkpCiAgICAgdGVzdHMuZXh0ZW5kKFsKICAgICAgICAgQ21zZ01hY3JvVGVzdHMsCiAgICAgICAgIFNlbmRtc2dVRFBUZXN0LApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zb2NrZXRzZXJ2ZXIucHkgYi9MaWIvdGVzdC90ZXN0X3NvY2tldHNlcnZlci5weQppbmRleCAwZDBmODZmLi4xNDBhNmFiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NvY2tldHNlcnZlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NvY2tldHNlcnZlci5weQpAQCAtMywxMiArMywxMSBAQAogIiIiCiAKIGltcG9ydCBjb250ZXh0bGliCitpbXBvcnQgaW8KIGltcG9ydCBvcwogaW1wb3J0IHNlbGVjdAogaW1wb3J0IHNpZ25hbAogaW1wb3J0IHNvY2tldAotaW1wb3J0IHNlbGVjdAotaW1wb3J0IGVycm5vCiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHNvY2tldHNlcnZlcgpAQCAtNDYsNyArNDUsNyBAQAogICAgIGVsc2U6CiAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigidGltZWQgb3V0IG9uICVyIiAlIChzb2NrLCkpCiAKLWlmIEhBVkVfVU5JWF9TT0NLRVRTOgoraWYgSEFWRV9VTklYX1NPQ0tFVFMgYW5kIEhBVkVfRk9SS0lORzoKICAgICBjbGFzcyBGb3JraW5nVW5peFN0cmVhbVNlcnZlcihzb2NrZXRzZXJ2ZXIuRm9ya2luZ01peEluLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldHNlcnZlci5Vbml4U3RyZWFtU2VydmVyKToKICAgICAgICAgcGFzcwpAQCAtNTgsNiArNTcsNyBAQAogCiBAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgogZGVmIHNpbXBsZV9zdWJwcm9jZXNzKHRlc3RjYXNlKToKKyAgICAiIiJUZXN0cyB0aGF0IGEgY3VzdG9tIGNoaWxkIHByb2Nlc3MgaXMgbm90IHdhaXRlZCBvbiAoSXNzdWUgMTU0MDM4NikiIiIKICAgICBwaWQgPSBvcy5mb3JrKCkKICAgICBpZiBwaWQgPT0gMDoKICAgICAgICAgIyBEb24ndCByYWlzZSBhbiBleGNlcHRpb247IGl0IHdvdWxkIGJlIGNhdWdodCBieSB0aGUgdGVzdCBoYXJuZXNzLgpAQCAtMTAzLDcgKzEwMyw2IEBACiAgICAgICAgIGNsYXNzIE15U2VydmVyKHN2cmNscyk6CiAgICAgICAgICAgICBkZWYgaGFuZGxlX2Vycm9yKHNlbGYsIHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKToKICAgICAgICAgICAgICAgICBzZWxmLmNsb3NlX3JlcXVlc3QocmVxdWVzdCkKLSAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9jbG9zZSgpCiAgICAgICAgICAgICAgICAgcmFpc2UKIAogICAgICAgICBjbGFzcyBNeUhhbmRsZXIoaGRscmJhc2UpOgpAQCAtMjc5LDYgKzI3OCwxODIgQEAKICAgICAgICAgICAgICAgICBzb2NrZXRzZXJ2ZXIuVENQU2VydmVyKChIT1NULCAtMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXRzZXJ2ZXIuU3RyZWFtUmVxdWVzdEhhbmRsZXIpCiAKKyAgICBkZWYgdGVzdF9jb250ZXh0X21hbmFnZXIoc2VsZik6CisgICAgICAgIHdpdGggc29ja2V0c2VydmVyLlRDUFNlcnZlcigoSE9TVCwgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXRzZXJ2ZXIuU3RyZWFtUmVxdWVzdEhhbmRsZXIpIGFzIHNlcnZlcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMSwgc2VydmVyLnNvY2tldC5maWxlbm8oKSkKKworCitjbGFzcyBFcnJvckhhbmRsZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJUZXN0IHRoYXQgdGhlIHNlcnZlcnMgcGFzcyBub3JtYWwgZXhjZXB0aW9ucyBmcm9tIHRoZSBoYW5kbGVyIHRvCisgICAgaGFuZGxlX2Vycm9yKCksIGFuZCB0aGF0IGV4aXRpbmcgZXhjZXB0aW9ucyBsaWtlIFN5c3RlbUV4aXQgYW5kCisgICAgS2V5Ym9hcmRJbnRlcnJ1cHQgYXJlIG5vdCBwYXNzZWQuIiIiCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHRlc3Quc3VwcG9ydC51bmxpbmsodGVzdC5zdXBwb3J0LlRFU1RGTikKKworICAgIGRlZiB0ZXN0X3N5bmNfaGFuZGxlZChzZWxmKToKKyAgICAgICAgQmFzZUVycm9yVGVzdFNlcnZlcihWYWx1ZUVycm9yKQorICAgICAgICBzZWxmLmNoZWNrX3Jlc3VsdChoYW5kbGVkPVRydWUpCisKKyAgICBkZWYgdGVzdF9zeW5jX25vdF9oYW5kbGVkKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUV4aXQpOgorICAgICAgICAgICAgQmFzZUVycm9yVGVzdFNlcnZlcihTeXN0ZW1FeGl0KQorICAgICAgICBzZWxmLmNoZWNrX3Jlc3VsdChoYW5kbGVkPUZhbHNlKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKKyAgICBkZWYgdGVzdF90aHJlYWRpbmdfaGFuZGxlZChzZWxmKToKKyAgICAgICAgVGhyZWFkaW5nRXJyb3JUZXN0U2VydmVyKFZhbHVlRXJyb3IpCisgICAgICAgIHNlbGYuY2hlY2tfcmVzdWx0KGhhbmRsZWQ9VHJ1ZSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCisgICAgZGVmIHRlc3RfdGhyZWFkaW5nX25vdF9oYW5kbGVkKHNlbGYpOgorICAgICAgICBUaHJlYWRpbmdFcnJvclRlc3RTZXJ2ZXIoU3lzdGVtRXhpdCkKKyAgICAgICAgc2VsZi5jaGVja19yZXN1bHQoaGFuZGxlZD1GYWxzZSkKKworICAgIEByZXF1aXJlc19mb3JraW5nCisgICAgZGVmIHRlc3RfZm9ya2luZ19oYW5kbGVkKHNlbGYpOgorICAgICAgICBGb3JraW5nRXJyb3JUZXN0U2VydmVyKFZhbHVlRXJyb3IpCisgICAgICAgIHNlbGYuY2hlY2tfcmVzdWx0KGhhbmRsZWQ9VHJ1ZSkKKworICAgIEByZXF1aXJlc19mb3JraW5nCisgICAgZGVmIHRlc3RfZm9ya2luZ19ub3RfaGFuZGxlZChzZWxmKToKKyAgICAgICAgRm9ya2luZ0Vycm9yVGVzdFNlcnZlcihTeXN0ZW1FeGl0KQorICAgICAgICBzZWxmLmNoZWNrX3Jlc3VsdChoYW5kbGVkPUZhbHNlKQorCisgICAgZGVmIGNoZWNrX3Jlc3VsdChzZWxmLCBoYW5kbGVkKToKKyAgICAgICAgd2l0aCBvcGVuKHRlc3Quc3VwcG9ydC5URVNURk4pIGFzIGxvZzoKKyAgICAgICAgICAgIGV4cGVjdGVkID0gJ0hhbmRsZXIgY2FsbGVkXG4nICsgJ0Vycm9yIGhhbmRsZWRcbicgKiBoYW5kbGVkCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvZy5yZWFkKCksIGV4cGVjdGVkKQorCisKK2NsYXNzIEJhc2VFcnJvclRlc3RTZXJ2ZXIoc29ja2V0c2VydmVyLlRDUFNlcnZlcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGV4Y2VwdGlvbik6CisgICAgICAgIHNlbGYuZXhjZXB0aW9uID0gZXhjZXB0aW9uCisgICAgICAgIHN1cGVyKCkuX19pbml0X18oKEhPU1QsIDApLCBCYWRIYW5kbGVyKQorICAgICAgICB3aXRoIHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbihzZWxmLnNlcnZlcl9hZGRyZXNzKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5oYW5kbGVfcmVxdWVzdCgpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLnNlcnZlcl9jbG9zZSgpCisgICAgICAgIHNlbGYud2FpdF9kb25lKCkKKworICAgIGRlZiBoYW5kbGVfZXJyb3Ioc2VsZiwgcmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpOgorICAgICAgICB3aXRoIG9wZW4odGVzdC5zdXBwb3J0LlRFU1RGTiwgJ2EnKSBhcyBsb2c6CisgICAgICAgICAgICBsb2cud3JpdGUoJ0Vycm9yIGhhbmRsZWRcbicpCisKKyAgICBkZWYgd2FpdF9kb25lKHNlbGYpOgorICAgICAgICBwYXNzCisKKworY2xhc3MgQmFkSGFuZGxlcihzb2NrZXRzZXJ2ZXIuQmFzZVJlcXVlc3RIYW5kbGVyKToKKyAgICBkZWYgaGFuZGxlKHNlbGYpOgorICAgICAgICB3aXRoIG9wZW4odGVzdC5zdXBwb3J0LlRFU1RGTiwgJ2EnKSBhcyBsb2c6CisgICAgICAgICAgICBsb2cud3JpdGUoJ0hhbmRsZXIgY2FsbGVkXG4nKQorICAgICAgICByYWlzZSBzZWxmLnNlcnZlci5leGNlcHRpb24oJ1Rlc3QgZXJyb3InKQorCisKK2NsYXNzIFRocmVhZGluZ0Vycm9yVGVzdFNlcnZlcihzb2NrZXRzZXJ2ZXIuVGhyZWFkaW5nTWl4SW4sCisgICAgICAgIEJhc2VFcnJvclRlc3RTZXJ2ZXIpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqcG9zLCAqKmt3KToKKyAgICAgICAgc2VsZi5kb25lID0gdGhyZWFkaW5nLkV2ZW50KCkKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqcG9zLCAqKmt3KQorCisgICAgZGVmIHNodXRkb3duX3JlcXVlc3Qoc2VsZiwgKnBvcywgKiprdyk6CisgICAgICAgIHN1cGVyKCkuc2h1dGRvd25fcmVxdWVzdCgqcG9zLCAqKmt3KQorICAgICAgICBzZWxmLmRvbmUuc2V0KCkKKworICAgIGRlZiB3YWl0X2RvbmUoc2VsZik6CisgICAgICAgIHNlbGYuZG9uZS53YWl0KCkKKworCitpZiBIQVZFX0ZPUktJTkc6CisgICAgY2xhc3MgRm9ya2luZ0Vycm9yVGVzdFNlcnZlcihzb2NrZXRzZXJ2ZXIuRm9ya2luZ01peEluLCBCYXNlRXJyb3JUZXN0U2VydmVyKToKKyAgICAgICAgZGVmIHdhaXRfZG9uZShzZWxmKToKKyAgICAgICAgICAgIFtjaGlsZF0gPSBzZWxmLmFjdGl2ZV9jaGlsZHJlbgorICAgICAgICAgICAgb3Mud2FpdHBpZChjaGlsZCwgMCkKKyAgICAgICAgICAgIHNlbGYuYWN0aXZlX2NoaWxkcmVuLmNsZWFyKCkKKworCitjbGFzcyBTb2NrZXRXcml0ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9iYXNpY3Moc2VsZik6CisgICAgICAgIGNsYXNzIEhhbmRsZXIoc29ja2V0c2VydmVyLlN0cmVhbVJlcXVlc3RIYW5kbGVyKToKKyAgICAgICAgICAgIGRlZiBoYW5kbGUoc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXIud2ZpbGUgPSBzZWxmLndmaWxlCisgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXIud2ZpbGVfZmlsZW5vID0gc2VsZi53ZmlsZS5maWxlbm8oKQorICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLnJlcXVlc3RfZmlsZW5vID0gc2VsZi5yZXF1ZXN0LmZpbGVubygpCisKKyAgICAgICAgc2VydmVyID0gc29ja2V0c2VydmVyLlRDUFNlcnZlcigoSE9TVCwgMCksIEhhbmRsZXIpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZXJ2ZXIuc2VydmVyX2Nsb3NlKQorICAgICAgICBzID0gc29ja2V0LnNvY2tldCgKKyAgICAgICAgICAgIHNlcnZlci5hZGRyZXNzX2ZhbWlseSwgc29ja2V0LlNPQ0tfU1RSRUFNLCBzb2NrZXQuSVBQUk9UT19UQ1ApCisgICAgICAgIHdpdGggczoKKyAgICAgICAgICAgIHMuY29ubmVjdChzZXJ2ZXIuc2VydmVyX2FkZHJlc3MpCisgICAgICAgIHNlcnZlci5oYW5kbGVfcmVxdWVzdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzZXJ2ZXIud2ZpbGUsIGlvLkJ1ZmZlcmVkSU9CYXNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci53ZmlsZV9maWxlbm8sIHNlcnZlci5yZXF1ZXN0X2ZpbGVubykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCisgICAgZGVmIHRlc3Rfd3JpdGUoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHdmaWxlLndyaXRlKCkgc2VuZHMgZGF0YSBpbW1lZGlhdGVseSwgYW5kIHRoYXQgaXQgZG9lcworICAgICAgICAjIG5vdCB0cnVuY2F0ZSBzZW5kcyB3aGVuIGludGVycnVwdGVkIGJ5IGEgVW5peCBzaWduYWwKKyAgICAgICAgcHRocmVhZF9raWxsID0gdGVzdC5zdXBwb3J0LmdldF9hdHRyaWJ1dGUoc2lnbmFsLCAncHRocmVhZF9raWxsJykKKworICAgICAgICBjbGFzcyBIYW5kbGVyKHNvY2tldHNlcnZlci5TdHJlYW1SZXF1ZXN0SGFuZGxlcik6CisgICAgICAgICAgICBkZWYgaGFuZGxlKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLnNlbnQxID0gc2VsZi53ZmlsZS53cml0ZShiJ3dyaXRlIGRhdGFcbicpCisgICAgICAgICAgICAgICAgIyBTaG91bGQgYmUgc2VudCBpbW1lZGlhdGVseSwgd2l0aG91dCByZXF1aXJpbmcgZmx1c2goKQorICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLnJlY2VpdmVkID0gc2VsZi5yZmlsZS5yZWFkbGluZSgpCisgICAgICAgICAgICAgICAgYmlnX2NodW5rID0gYidcMCcgKiB0ZXN0LnN1cHBvcnQuU09DS19NQVhfU0laRQorICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLnNlbnQyID0gc2VsZi53ZmlsZS53cml0ZShiaWdfY2h1bmspCisKKyAgICAgICAgc2VydmVyID0gc29ja2V0c2VydmVyLlRDUFNlcnZlcigoSE9TVCwgMCksIEhhbmRsZXIpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZXJ2ZXIuc2VydmVyX2Nsb3NlKQorICAgICAgICBpbnRlcnJ1cHRlZCA9IHRocmVhZGluZy5FdmVudCgpCisKKyAgICAgICAgZGVmIHNpZ25hbF9oYW5kbGVyKHNpZ251bSwgZnJhbWUpOgorICAgICAgICAgICAgaW50ZXJydXB0ZWQuc2V0KCkKKworICAgICAgICBvcmlnaW5hbCA9IHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR1VTUjEsIHNpZ25hbF9oYW5kbGVyKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2lnbmFsLnNpZ25hbCwgc2lnbmFsLlNJR1VTUjEsIG9yaWdpbmFsKQorICAgICAgICByZXNwb25zZTEgPSBOb25lCisgICAgICAgIHJlY2VpdmVkMiA9IE5vbmUKKyAgICAgICAgbWFpbl90aHJlYWQgPSB0aHJlYWRpbmcuZ2V0X2lkZW50KCkKKworICAgICAgICBkZWYgcnVuX2NsaWVudCgpOgorICAgICAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc2VydmVyLmFkZHJlc3NfZmFtaWx5LCBzb2NrZXQuU09DS19TVFJFQU0sCisgICAgICAgICAgICAgICAgc29ja2V0LklQUFJPVE9fVENQKQorICAgICAgICAgICAgd2l0aCBzLCBzLm1ha2VmaWxlKCdyYicpIGFzIHJlYWRlcjoKKyAgICAgICAgICAgICAgICBzLmNvbm5lY3Qoc2VydmVyLnNlcnZlcl9hZGRyZXNzKQorICAgICAgICAgICAgICAgIG5vbmxvY2FsIHJlc3BvbnNlMQorICAgICAgICAgICAgICAgIHJlc3BvbnNlMSA9IHJlYWRlci5yZWFkbGluZSgpCisgICAgICAgICAgICAgICAgcy5zZW5kYWxsKGInY2xpZW50IHJlc3BvbnNlXG4nKQorCisgICAgICAgICAgICAgICAgcmVhZGVyLnJlYWQoMTAwKQorICAgICAgICAgICAgICAgICMgVGhlIG1haW4gdGhyZWFkIHNob3VsZCBub3cgYmUgYmxvY2tpbmcgaW4gYSBzZW5kKCkgc3lzY2FsbC4KKyAgICAgICAgICAgICAgICAjIEJ1dCBpbiB0aGVvcnksIGl0IGNvdWxkIGdldCBpbnRlcnJ1cHRlZCBieSBvdGhlciBzaWduYWxzLAorICAgICAgICAgICAgICAgICMgYW5kIHRoZW4gcmV0cmllZC4gU28ga2VlcCBzZW5kaW5nIHRoZSBzaWduYWwgaW4gYSBsb29wLCBpbgorICAgICAgICAgICAgICAgICMgY2FzZSBhbiBlYXJsaWVyIHNpZ25hbCBoYXBwZW5zIHRvIGJlIGRlbGl2ZXJlZCBhdCBhbgorICAgICAgICAgICAgICAgICMgaW5jb252ZW5pZW50IG1vbWVudC4KKyAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgICAgICBwdGhyZWFkX2tpbGwobWFpbl90aHJlYWQsIHNpZ25hbC5TSUdVU1IxKQorICAgICAgICAgICAgICAgICAgICBpZiBpbnRlcnJ1cHRlZC53YWl0KHRpbWVvdXQ9ZmxvYXQoMSkpOgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBub25sb2NhbCByZWNlaXZlZDIKKyAgICAgICAgICAgICAgICByZWNlaXZlZDIgPSBsZW4ocmVhZGVyLnJlYWQoKSkKKworICAgICAgICBiYWNrZ3JvdW5kID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9cnVuX2NsaWVudCkKKyAgICAgICAgYmFja2dyb3VuZC5zdGFydCgpCisgICAgICAgIHNlcnZlci5oYW5kbGVfcmVxdWVzdCgpCisgICAgICAgIGJhY2tncm91bmQuam9pbigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLnNlbnQxLCBsZW4ocmVzcG9uc2UxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZTEsIGInd3JpdGUgZGF0YVxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXIucmVjZWl2ZWQsIGInY2xpZW50IHJlc3BvbnNlXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5zZW50MiwgdGVzdC5zdXBwb3J0LlNPQ0tfTUFYX1NJWkUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjZWl2ZWQyLCB0ZXN0LnN1cHBvcnQuU09DS19NQVhfU0laRSAtIDEwMCkKKwogCiBjbGFzcyBNaXNjVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NvcnQucHkgYi9MaWIvdGVzdC90ZXN0X3NvcnQucHkKaW5kZXggYTVkMGViZi4uOThjY2FiNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zb3J0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc29ydC5weQpAQCAtMSw2ICsxLDUgQEAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IHJhbmRvbQotaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIGZ1bmN0b29scyBpbXBvcnQgY21wX3RvX2tleQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Nwd2QucHkgYi9MaWIvdGVzdC90ZXN0X3Nwd2QucHkKaW5kZXggYmVhN2FiMS4uZTg5M2YzYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zcHdkLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3B3ZC5weQpAQCAtNTYsNSArNTYsMjAgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc3B3ZC5nZXRzcG5hbSwgYnl0ZXNfbmFtZSkKIAogCitAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnZ2V0ZXVpZCcpIGFuZCBvcy5nZXRldWlkKCkgIT0gMCwKKyAgICAgICAgICAgICAgICAgICAgICdub24tcm9vdCB1c2VyIHJlcXVpcmVkJykKK2NsYXNzIFRlc3RTcHdkTm9uUm9vdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9nZXRzcG5hbV9leGNlcHRpb24oc2VsZik6CisgICAgICAgIG5hbWUgPSAnYmluJworICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFBlcm1pc3Npb25FcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgc3B3ZC5nZXRzcG5hbShuYW1lKQorICAgICAgICBleGNlcHQgS2V5RXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgic3B3ZCBlbnRyeSAlciBkb2Vzbid0IGV4aXN0OiAlcyIgJSAobmFtZSwgZXhjKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksICdbRXJybm8gMTNdIFBlcm1pc3Npb24gZGVuaWVkJykKKworCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zc2wucHkgYi9MaWIvdGVzdC90ZXN0X3NzbC5weQppbmRleCA1NTE1NTgzLi5kMjAzY2RkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NzbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NzbC5weQpAQCAtMjEsNiArMjEsMTMgQEAKIAogc3NsID0gc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCJzc2wiKQogCit0cnk6CisgICAgaW1wb3J0IHRocmVhZGluZworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIF9oYXZlX3RocmVhZHMgPSBGYWxzZQorZWxzZToKKyAgICBfaGF2ZV90aHJlYWRzID0gVHJ1ZQorCiBQUk9UT0NPTFMgPSBzb3J0ZWQoc3NsLl9QUk9UT0NPTF9OQU1FUykKIEhPU1QgPSBzdXBwb3J0LkhPU1QKIElTX0xJQlJFU1NMID0gc3NsLk9QRU5TU0xfVkVSU0lPTi5zdGFydHN3aXRoKCdMaWJyZVNTTCcpCkBAIC01NiwxMiArNjMsMTIgQEAKICMgVHdvIGtleXMgYW5kIGNlcnRzIHNpZ25lZCBieSB0aGUgc2FtZSBDQSAoZm9yIFNOSSB0ZXN0cykKIFNJR05FRF9DRVJURklMRSA9IGRhdGFfZmlsZSgia2V5Y2VydDMucGVtIikKIFNJR05FRF9DRVJURklMRTIgPSBkYXRhX2ZpbGUoImtleWNlcnQ0LnBlbSIpCi1TSUdOSU5HX0NBID0gZGF0YV9maWxlKCJweWNhY2VydC5wZW0iKQorIyBTYW1lIGNlcnRpZmljYXRlIGFzIHB5Y2FjZXJ0LnBlbSwgYnV0IHdpdGhvdXQgZXh0cmEgdGV4dCBpbiBmaWxlCitTSUdOSU5HX0NBID0gZGF0YV9maWxlKCJjYXBhdGgiLCAiY2VmZjE3MTAuMCIpCiAjIGNlcnQgd2l0aCBhbGwga2luZHMgb2Ygc3ViamVjdCBhbHQgbmFtZXMKIEFMTFNBTkZJTEUgPSBkYXRhX2ZpbGUoImFsbHNhbnMucGVtIikKIAogUkVNT1RFX0hPU1QgPSAic2VsZi1zaWduZWQucHl0aG9udGVzdC5uZXQiCi1SRU1PVEVfUk9PVF9DRVJUID0gZGF0YV9maWxlKCJzZWxmc2lnbmVkX3B5dGhvbnRlc3Rkb3RuZXQucGVtIikKIAogRU1QVFlDRVJUID0gZGF0YV9maWxlKCJudWxsY2VydC5wZW0iKQogQkFEQ0VSVCA9IGRhdGFfZmlsZSgiYmFkY2VydC5wZW0iKQpAQCAtNzMsNiArODAsMTIgQEAKIERIRklMRSA9IGRhdGFfZmlsZSgiZGgxMDI0LnBlbSIpCiBCWVRFU19ESEZJTEUgPSBvcy5mc2VuY29kZShESEZJTEUpCiAKKyMgTm90IGRlZmluZWQgaW4gYWxsIHZlcnNpb25zIG9mIE9wZW5TU0wKK09QX05PX0NPTVBSRVNTSU9OID0gZ2V0YXR0cihzc2wsICJPUF9OT19DT01QUkVTU0lPTiIsIDApCitPUF9TSU5HTEVfREhfVVNFID0gZ2V0YXR0cihzc2wsICJPUF9TSU5HTEVfREhfVVNFIiwgMCkKK09QX1NJTkdMRV9FQ0RIX1VTRSA9IGdldGF0dHIoc3NsLCAiT1BfU0lOR0xFX0VDREhfVVNFIiwgMCkKK09QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSA9IGdldGF0dHIoc3NsLCAiT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFIiwgMCkKKwogCiBkZWYgaGFuZGxlX2Vycm9yKHByZWZpeCk6CiAgICAgZXhjX2Zvcm1hdCA9ICcgJy5qb2luKHRyYWNlYmFjay5mb3JtYXRfZXhjZXB0aW9uKCpzeXMuZXhjX2luZm8oKSkpCkBAIC0xMzAsNiArMTQzLDIxIEBACiBuZWVkc19zbmkgPSB1bml0dGVzdC5za2lwVW5sZXNzKHNzbC5IQVNfU05JLCAiU05JIHN1cHBvcnQgbmVlZGVkIGZvciB0aGlzIHRlc3QiKQogCiAKK2RlZiB0ZXN0X3dyYXBfc29ja2V0KHNvY2ssIHNzbF92ZXJzaW9uPXNzbC5QUk9UT0NPTF9UTFMsICosCisgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfTk9ORSwgY2FfY2VydHM9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgIGNpcGhlcnM9Tm9uZSwgY2VydGZpbGU9Tm9uZSwga2V5ZmlsZT1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgKiprd2FyZ3MpOgorICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2xfdmVyc2lvbikKKyAgICBpZiBjZXJ0X3JlcXMgaXMgbm90IE5vbmU6CisgICAgICAgIGNvbnRleHQudmVyaWZ5X21vZGUgPSBjZXJ0X3JlcXMKKyAgICBpZiBjYV9jZXJ0cyBpcyBub3QgTm9uZToKKyAgICAgICAgY29udGV4dC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FfY2VydHMpCisgICAgaWYgY2VydGZpbGUgaXMgbm90IE5vbmUgb3Iga2V5ZmlsZSBpcyBub3QgTm9uZToKKyAgICAgICAgY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oY2VydGZpbGUsIGtleWZpbGUpCisgICAgaWYgY2lwaGVycyBpcyBub3QgTm9uZToKKyAgICAgICAgY29udGV4dC5zZXRfY2lwaGVycyhjaXBoZXJzKQorICAgIHJldHVybiBjb250ZXh0LndyYXBfc29ja2V0KHNvY2ssICoqa3dhcmdzKQorCiBjbGFzcyBCYXNpY1NvY2tldFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2NvbnN0YW50cyhzZWxmKToKQEAgLTM1MCwxNyArMzc4LDE3IEBACiAgICAgICAgICMgSXNzdWUgIzc5NDM6IGFuIFNTTCBvYmplY3QgZG9lc24ndCBjcmVhdGUgcmVmZXJlbmNlIGN5Y2xlcyB3aXRoCiAgICAgICAgICMgaXRzZWxmLgogICAgICAgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKLSAgICAgICAgc3MgPSBzc2wud3JhcF9zb2NrZXQocykKKyAgICAgICAgc3MgPSB0ZXN0X3dyYXBfc29ja2V0KHMpCiAgICAgICAgIHdyID0gd2Vha3JlZi5yZWYoc3MpCiAgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoIiIsIFJlc291cmNlV2FybmluZykpOgogICAgICAgICAgICAgZGVsIHNzCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyKCksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3IoKSwgTm9uZSkKIAogICAgIGRlZiB0ZXN0X3dyYXBwZWRfdW5jb25uZWN0ZWQoc2VsZik6CiAgICAgICAgICMgTWV0aG9kcyBvbiBhbiB1bmNvbm5lY3RlZCBTU0xTb2NrZXQgcHJvcGFnYXRlIHRoZSBvcmlnaW5hbAogICAgICAgICAjIE9TRXJyb3IgcmFpc2UgYnkgdGhlIHVuZGVybHlpbmcgc29ja2V0IG9iamVjdC4KICAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCi0gICAgICAgIHdpdGggc3NsLndyYXBfc29ja2V0KHMpIGFzIHNzOgorICAgICAgICB3aXRoIHRlc3Rfd3JhcF9zb2NrZXQocykgYXMgc3M6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBzcy5yZWN2LCAxKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgc3MucmVjdl9pbnRvLCBieXRlYXJyYXkoYid4JykpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBzcy5yZWN2ZnJvbSwgMSkKQEAgLTM3NCwxMCArNDAyLDEwIEBACiAgICAgICAgIGZvciB0aW1lb3V0IGluIChOb25lLCAwLjAsIDUuMCk6CiAgICAgICAgICAgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKICAgICAgICAgICAgIHMuc2V0dGltZW91dCh0aW1lb3V0KQotICAgICAgICAgICAgd2l0aCBzc2wud3JhcF9zb2NrZXQocykgYXMgc3M6CisgICAgICAgICAgICB3aXRoIHRlc3Rfd3JhcF9zb2NrZXQocykgYXMgc3M6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aW1lb3V0LCBzcy5nZXR0aW1lb3V0KCkpCiAKLSAgICBkZWYgdGVzdF9lcnJvcnMoc2VsZik6CisgICAgZGVmIHRlc3RfZXJyb3JzX3NzbHdyYXAoc2VsZik6CiAgICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImNlcnRmaWxlIG11c3QgYmUgc3BlY2lmaWVkIiwKQEAgLTM4NywxMCArNDE1LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBzc2wud3JhcF9zb2NrZXQsIHNvY2ssIHNlcnZlcl9zaWRlPVRydWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJjZXJ0ZmlsZSBtdXN0IGJlIHNwZWNpZmllZCBmb3Igc2VydmVyLXNpZGUgb3BlcmF0aW9ucyIsCi0gICAgICAgICAgICAgICAgICAgICAgICBzc2wud3JhcF9zb2NrZXQsIHNvY2ssIHNlcnZlcl9zaWRlPVRydWUsIGNlcnRmaWxlPSIiKQorICAgICAgICAgICAgICAgICAgICAgICAgIHNzbC53cmFwX3NvY2tldCwgc29jaywgc2VydmVyX3NpZGU9VHJ1ZSwgY2VydGZpbGU9IiIpCiAgICAgICAgIHdpdGggc3NsLndyYXBfc29ja2V0KHNvY2ssIHNlcnZlcl9zaWRlPVRydWUsIGNlcnRmaWxlPUNFUlRGSUxFKSBhcyBzOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAiY2FuJ3QgY29ubmVjdCBpbiBzZXJ2ZXItc2lkZSBtb2RlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuY29ubmVjdCwgKEhPU1QsIDgwODApKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuY29ubmVjdCwgKEhPU1QsIDgwODApKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KCkgYXMgc29jazoKICAgICAgICAgICAgICAgICBzc2wud3JhcF9zb2NrZXQoc29jaywgY2VydGZpbGU9Tk9ORVhJU1RJTkdDRVJUKQpAQCAtNDEzLDcgKzQ0MSw3IEBACiAgICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KCkKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNvY2suY2xvc2UpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3NsLlNTTEVycm9yKToKLSAgICAgICAgICAgIHNzbC53cmFwX3NvY2tldChzb2NrLAorICAgICAgICAgICAgdGVzdF93cmFwX3NvY2tldChzb2NrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRmaWxlPWNlcnRmaWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzbF92ZXJzaW9uPXNzbC5QUk9UT0NPTF9UTFN2MSkKIApAQCAtNjAwLDcgKzYyOCw3IEBACiAgICAgICAgIHMubGlzdGVuKCkKICAgICAgICAgYyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCiAgICAgICAgIGMuY29ubmVjdChzLmdldHNvY2tuYW1lKCkpCi0gICAgICAgIHdpdGggc3NsLndyYXBfc29ja2V0KGMsIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlKSBhcyBzczoKKyAgICAgICAgd2l0aCB0ZXN0X3dyYXBfc29ja2V0KGMsIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlKSBhcyBzczoKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CiAgICAgICAgICAgICAgICAgc3MuZ2V0X2NoYW5uZWxfYmluZGluZygidW5rbm93bi10eXBlIikKICAgICAgICAgcy5jbG9zZSgpCkBAIC02MTAsMTUgKzYzOCwxNSBAQAogICAgIGRlZiB0ZXN0X3Rsc191bmlxdWVfY2hhbm5lbF9iaW5kaW5nKHNlbGYpOgogICAgICAgICAjIHVuY29ubmVjdGVkIHNob3VsZCByZXR1cm4gTm9uZSBmb3Iga25vd24gdHlwZQogICAgICAgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKLSAgICAgICAgd2l0aCBzc2wud3JhcF9zb2NrZXQocykgYXMgc3M6CisgICAgICAgIHdpdGggdGVzdF93cmFwX3NvY2tldChzKSBhcyBzczoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNzLmdldF9jaGFubmVsX2JpbmRpbmcoInRscy11bmlxdWUiKSkKICAgICAgICAgIyB0aGUgc2FtZSBmb3Igc2VydmVyLXNpZGUKICAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCi0gICAgICAgIHdpdGggc3NsLndyYXBfc29ja2V0KHMsIHNlcnZlcl9zaWRlPVRydWUsIGNlcnRmaWxlPUNFUlRGSUxFKSBhcyBzczoKKyAgICAgICAgd2l0aCB0ZXN0X3dyYXBfc29ja2V0KHMsIHNlcnZlcl9zaWRlPVRydWUsIGNlcnRmaWxlPUNFUlRGSUxFKSBhcyBzczoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNzLmdldF9jaGFubmVsX2JpbmRpbmcoInRscy11bmlxdWUiKSkKIAogICAgIGRlZiB0ZXN0X2RlYWxsb2Nfd2FybihzZWxmKToKLSAgICAgICAgc3MgPSBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkpCisgICAgICAgIHNzID0gdGVzdF93cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSkKICAgICAgICAgciA9IHJlcHIoc3MpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhSZXNvdXJjZVdhcm5pbmcpIGFzIGNtOgogICAgICAgICAgICAgc3MgPSBOb25lCkBAIC03MzcsNyArNzY1LDcgQEAKICAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX0RHUkFNKQogICAgICAgICBzZWxmLmFkZENsZWFudXAocy5jbG9zZSkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yKSBhcyBjeDoKLSAgICAgICAgICAgIHNzbC53cmFwX3NvY2tldChzLCBjZXJ0X3JlcXM9c3NsLkNFUlRfTk9ORSkKKyAgICAgICAgICAgIHRlc3Rfd3JhcF9zb2NrZXQocywgY2VydF9yZXFzPXNzbC5DRVJUX05PTkUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGN4LmV4Y2VwdGlvbiksICJvbmx5IHN0cmVhbSBzb2NrZXRzIGFyZSBzdXBwb3J0ZWQiKQogICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IpIGFzIGN4OgpAQCAtODA5LDYgKzgzNywyMiBAQAogICAgICAgICBzZWxmLmNlcnRfdGltZV9vaygiRmViICA5IDAwOjAwOjAwIDIwMDcgR01UIiwgMTE3MDk3OTIwMC4wKQogICAgICAgICBzZWxmLmNlcnRfdGltZV9mYWlsKGxvY2FsX2ZlYnJ1YXJ5X25hbWUoKSArICIgIDkgMDA6MDA6MDAgMjAwNyBHTVQiKQogCisgICAgZGVmIHRlc3RfY29ubmVjdF9leF9lcnJvcihzZWxmKToKKyAgICAgICAgc2VydmVyID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNlcnZlci5jbG9zZSkKKyAgICAgICAgcG9ydCA9IHN1cHBvcnQuYmluZF9wb3J0KHNlcnZlcikgICMgUmVzZXJ2ZSBwb3J0IGJ1dCBkb24ndCBsaXN0ZW4KKyAgICAgICAgcyA9IHRlc3Rfd3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX1JFUVVJUkVEKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocy5jbG9zZSkKKyAgICAgICAgcmMgPSBzLmNvbm5lY3RfZXgoKEhPU1QsIHBvcnQpKQorICAgICAgICAjIElzc3VlICMxOTkxOTogV2luZG93cyBtYWNoaW5lcyBvciBWTXMgaG9zdGVkIG9uIFdpbmRvd3MKKyAgICAgICAgIyBtYWNoaW5lcyBzb21ldGltZXMgcmV0dXJuIEVXT1VMREJMT0NLLgorICAgICAgICBlcnJvcnMgPSAoCisgICAgICAgICAgICBlcnJuby5FQ09OTlJFRlVTRUQsIGVycm5vLkVIT1NUVU5SRUFDSCwgZXJybm8uRVRJTUVET1VULAorICAgICAgICAgICAgZXJybm8uRVdPVUxEQkxPQ0ssCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihyYywgZXJyb3JzKQorCiAKIGNsYXNzIENvbnRleHRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTgzNCwxMyArODc4LDIyIEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChzc2wuU1NMRXJyb3IsICJObyBjaXBoZXIgY2FuIGJlIHNlbGVjdGVkIik6CiAgICAgICAgICAgICBjdHguc2V0X2NpcGhlcnMoIl4kOiw7PyonZG9yb3RoeXgiKQogCisgICAgQHVuaXR0ZXN0LnNraXBJZihzc2wuT1BFTlNTTF9WRVJTSU9OX0lORk8gPCAoMSwgMCwgMiwgMCwgMCksICdPcGVuU1NMIHRvbyBvbGQnKQorICAgIGRlZiB0ZXN0X2dldF9jaXBoZXJzKHNlbGYpOgorICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgIGN0eC5zZXRfY2lwaGVycygnQUVTR0NNJykKKyAgICAgICAgbmFtZXMgPSBzZXQoZFsnbmFtZSddIGZvciBkIGluIGN0eC5nZXRfY2lwaGVycygpKQorICAgICAgICBzZWxmLmFzc2VydEluKCdBRVMyNTYtR0NNLVNIQTM4NCcsIG5hbWVzKQorICAgICAgICBzZWxmLmFzc2VydEluKCdBRVMxMjgtR0NNLVNIQTI1NicsIG5hbWVzKQorCiAgICAgQHNraXBfaWZfYnJva2VuX3VidW50dV9zc2wKICAgICBkZWYgdGVzdF9vcHRpb25zKHNlbGYpOgogICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCiAgICAgICAgICMgT1BfQUxMIHwgT1BfTk9fU1NMdjIgfCBPUF9OT19TU0x2MyBpcyB0aGUgZGVmYXVsdCB2YWx1ZQogICAgICAgICBkZWZhdWx0ID0gKHNzbC5PUF9BTEwgfCBzc2wuT1BfTk9fU1NMdjIgfCBzc2wuT1BfTk9fU1NMdjMpCi0gICAgICAgIGlmIG5vdCBJU19MSUJSRVNTTCBhbmQgc3NsLk9QRU5TU0xfVkVSU0lPTl9JTkZPID49ICgxLCAxLCAwKToKLSAgICAgICAgICAgIGRlZmF1bHQgfD0gc3NsLk9QX05PX0NPTVBSRVNTSU9OCisgICAgICAgICMgU1NMQ29udGV4dCBhbHNvIGVuYWJsZXMgdGhlc2UgYnkgZGVmYXVsdAorICAgICAgICBkZWZhdWx0IHw9IChPUF9OT19DT01QUkVTU0lPTiB8IE9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSB8CisgICAgICAgICAgICAgICAgICAgIE9QX1NJTkdMRV9ESF9VU0UgfCBPUF9TSU5HTEVfRUNESF9VU0UpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVmYXVsdCwgY3R4Lm9wdGlvbnMpCiAgICAgICAgIGN0eC5vcHRpb25zIHw9IHNzbC5PUF9OT19UTFN2MQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlZmF1bHQgfCBzc2wuT1BfTk9fVExTdjEsIGN0eC5vcHRpb25zKQpAQCAtMTIwNSwxNiArMTI1OCwyOSBAQAogICAgICAgICAgICAgc3RhdHNbIng1MDkiXSArPSAxCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5jZXJ0X3N0b3JlX3N0YXRzKCksIHN0YXRzKQogCisgICAgZGVmIF9hc3NlcnRfY29udGV4dF9vcHRpb25zKHNlbGYsIGN0eCk6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4Lm9wdGlvbnMgJiBzc2wuT1BfTk9fU1NMdjIsIHNzbC5PUF9OT19TU0x2MikKKyAgICAgICAgaWYgT1BfTk9fQ09NUFJFU1NJT04gIT0gMDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4Lm9wdGlvbnMgJiBPUF9OT19DT01QUkVTU0lPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BfTk9fQ09NUFJFU1NJT04pCisgICAgICAgIGlmIE9QX1NJTkdMRV9ESF9VU0UgIT0gMDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4Lm9wdGlvbnMgJiBPUF9TSU5HTEVfREhfVVNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUF9TSU5HTEVfREhfVVNFKQorICAgICAgICBpZiBPUF9TSU5HTEVfRUNESF9VU0UgIT0gMDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4Lm9wdGlvbnMgJiBPUF9TSU5HTEVfRUNESF9VU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QX1NJTkdMRV9FQ0RIX1VTRSkKKyAgICAgICAgaWYgT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFICE9IDA6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5vcHRpb25zICYgT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UpCisKICAgICBkZWYgdGVzdF9jcmVhdGVfZGVmYXVsdF9jb250ZXh0KHNlbGYpOgogICAgICAgICBjdHggPSBzc2wuY3JlYXRlX2RlZmF1bHRfY29udGV4dCgpCisKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgucHJvdG9jb2wsIHNzbC5QUk9UT0NPTF9TU0x2MjMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LnZlcmlmeV9tb2RlLCBzc2wuQ0VSVF9SRVFVSVJFRCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGN0eC5jaGVja19ob3N0bmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgub3B0aW9ucyAmIHNzbC5PUF9OT19TU0x2Miwgc3NsLk9QX05PX1NTTHYyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgY3R4Lm9wdGlvbnMgJiBnZXRhdHRyKHNzbCwgIk9QX05PX0NPTVBSRVNTSU9OIiwgMCksCi0gICAgICAgICAgICBnZXRhdHRyKHNzbCwgIk9QX05PX0NPTVBSRVNTSU9OIiwgMCksCi0gICAgICAgICkKKyAgICAgICAgc2VsZi5fYXNzZXJ0X2NvbnRleHRfb3B0aW9ucyhjdHgpCisKIAogICAgICAgICB3aXRoIG9wZW4oU0lHTklOR19DQSkgYXMgZjoKICAgICAgICAgICAgIGNhZGF0YSA9IGYucmVhZCgpCkBAIC0xMjIyLDQwICsxMjg4LDI0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhZGF0YT1jYWRhdGEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LnByb3RvY29sLCBzc2wuUFJPVE9DT0xfU1NMdjIzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC52ZXJpZnlfbW9kZSwgc3NsLkNFUlRfUkVRVUlSRUQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4Lm9wdGlvbnMgJiBzc2wuT1BfTk9fU1NMdjIsIHNzbC5PUF9OT19TU0x2MikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGN0eC5vcHRpb25zICYgZ2V0YXR0cihzc2wsICJPUF9OT19DT01QUkVTU0lPTiIsIDApLAotICAgICAgICAgICAgZ2V0YXR0cihzc2wsICJPUF9OT19DT01QUkVTU0lPTiIsIDApLAotICAgICAgICApCisgICAgICAgIHNlbGYuX2Fzc2VydF9jb250ZXh0X29wdGlvbnMoY3R4KQogCiAgICAgICAgIGN0eCA9IHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0KHNzbC5QdXJwb3NlLkNMSUVOVF9BVVRIKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5wcm90b2NvbCwgc3NsLlBST1RPQ09MX1NTTHYyMykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgudmVyaWZ5X21vZGUsIHNzbC5DRVJUX05PTkUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4Lm9wdGlvbnMgJiBzc2wuT1BfTk9fU1NMdjIsIHNzbC5PUF9OT19TU0x2MikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGN0eC5vcHRpb25zICYgZ2V0YXR0cihzc2wsICJPUF9OT19DT01QUkVTU0lPTiIsIDApLAotICAgICAgICAgICAgZ2V0YXR0cihzc2wsICJPUF9OT19DT01QUkVTU0lPTiIsIDApLAotICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBjdHgub3B0aW9ucyAmIGdldGF0dHIoc3NsLCAiT1BfU0lOR0xFX0RIX1VTRSIsIDApLAotICAgICAgICAgICAgZ2V0YXR0cihzc2wsICJPUF9TSU5HTEVfREhfVVNFIiwgMCksCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGN0eC5vcHRpb25zICYgZ2V0YXR0cihzc2wsICJPUF9TSU5HTEVfRUNESF9VU0UiLCAwKSwKLSAgICAgICAgICAgIGdldGF0dHIoc3NsLCAiT1BfU0lOR0xFX0VDREhfVVNFIiwgMCksCi0gICAgICAgICkKKyAgICAgICAgc2VsZi5fYXNzZXJ0X2NvbnRleHRfb3B0aW9ucyhjdHgpCiAKICAgICBkZWYgdGVzdF9fY3JlYXRlX3N0ZGxpYl9jb250ZXh0KHNlbGYpOgogICAgICAgICBjdHggPSBzc2wuX2NyZWF0ZV9zdGRsaWJfY29udGV4dCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LnByb3RvY29sLCBzc2wuUFJPVE9DT0xfU1NMdjIzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC52ZXJpZnlfbW9kZSwgc3NsLkNFUlRfTk9ORSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjdHguY2hlY2tfaG9zdG5hbWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4Lm9wdGlvbnMgJiBzc2wuT1BfTk9fU1NMdjIsIHNzbC5PUF9OT19TU0x2MikKKyAgICAgICAgc2VsZi5fYXNzZXJ0X2NvbnRleHRfb3B0aW9ucyhjdHgpCiAKICAgICAgICAgY3R4ID0gc3NsLl9jcmVhdGVfc3RkbGliX2NvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5wcm90b2NvbCwgc3NsLlBST1RPQ09MX1RMU3YxKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC52ZXJpZnlfbW9kZSwgc3NsLkNFUlRfTk9ORSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgub3B0aW9ucyAmIHNzbC5PUF9OT19TU0x2Miwgc3NsLk9QX05PX1NTTHYyKQorICAgICAgICBzZWxmLl9hc3NlcnRfY29udGV4dF9vcHRpb25zKGN0eCkKIAogICAgICAgICBjdHggPSBzc2wuX2NyZWF0ZV9zdGRsaWJfY29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9SRVFVSVJFRCwKQEAgLTEyNjMsMTIgKzEzMTMsMTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgucHJvdG9jb2wsIHNzbC5QUk9UT0NPTF9UTFN2MSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgudmVyaWZ5X21vZGUsIHNzbC5DRVJUX1JFUVVJUkVEKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoY3R4LmNoZWNrX2hvc3RuYW1lKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5vcHRpb25zICYgc3NsLk9QX05PX1NTTHYyLCBzc2wuT1BfTk9fU1NMdjIpCisgICAgICAgIHNlbGYuX2Fzc2VydF9jb250ZXh0X29wdGlvbnMoY3R4KQogCiAgICAgICAgIGN0eCA9IHNzbC5fY3JlYXRlX3N0ZGxpYl9jb250ZXh0KHB1cnBvc2U9c3NsLlB1cnBvc2UuQ0xJRU5UX0FVVEgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LnByb3RvY29sLCBzc2wuUFJPVE9DT0xfU1NMdjIzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC52ZXJpZnlfbW9kZSwgc3NsLkNFUlRfTk9ORSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgub3B0aW9ucyAmIHNzbC5PUF9OT19TU0x2Miwgc3NsLk9QX05PX1NTTHYyKQorICAgICAgICBzZWxmLl9hc3NlcnRfY29udGV4dF9vcHRpb25zKGN0eCkKIAogICAgIGRlZiB0ZXN0X2NoZWNrX2hvc3RuYW1lKHNlbGYpOgogICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCkBAIC0xMjkyLDYgKzEzNDIsMTcgQEAKICAgICAgICAgY3R4LmNoZWNrX2hvc3RuYW1lID0gRmFsc2UKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjdHguY2hlY2tfaG9zdG5hbWUpCiAKKyAgICBkZWYgdGVzdF9jb250ZXh0X2NsaWVudF9zZXJ2ZXIoc2VsZik6CisgICAgICAgICMgUFJPVE9DT0xfVExTX0NMSUVOVCBoYXMgc2FuZSBkZWZhdWx0cworICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTX0NMSUVOVCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGN0eC5jaGVja19ob3N0bmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgudmVyaWZ5X21vZGUsIHNzbC5DRVJUX1JFUVVJUkVEKQorCisgICAgICAgICMgUFJPVE9DT0xfVExTX1NFUlZFUiBoYXMgZGlmZmVyZW50IGJ1dCBhbHNvIHNhbmUgZGVmYXVsdHMKKyAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU19TRVJWRVIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY3R4LmNoZWNrX2hvc3RuYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC52ZXJpZnlfbW9kZSwgc3NsLkNFUlRfTk9ORSkKKwogCiBjbGFzcyBTU0xFcnJvclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtMTM5NywxNDAgKzE0NTgsMTA1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYmlvLndyaXRlLCAxKQogCiAKLWNsYXNzIE5ldHdvcmtlZFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKK0B1bml0dGVzdC5za2lwVW5sZXNzKF9oYXZlX3RocmVhZHMsICJOZWVkcyB0aHJlYWRpbmcgbW9kdWxlIikKK2NsYXNzIFNpbXBsZUJhY2tncm91bmRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAiIiJUZXN0cyB0aGF0IGNvbm5lY3QgdG8gYSBzaW1wbGUgc2VydmVyIHJ1bm5pbmcgaW4gdGhlIGJhY2tncm91bmQiIiIKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VydmVyID0gVGhyZWFkZWRFY2hvU2VydmVyKFNJR05FRF9DRVJURklMRSkKKyAgICAgICAgc2VsZi5zZXJ2ZXJfYWRkciA9IChIT1NULCBzZXJ2ZXIucG9ydCkKKyAgICAgICAgc2VydmVyLl9fZW50ZXJfXygpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZXJ2ZXIuX19leGl0X18sIE5vbmUsIE5vbmUsIE5vbmUpCiAKICAgICBkZWYgdGVzdF9jb25uZWN0KHNlbGYpOgotICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KFJFTU9URV9IT1NUKToKLSAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHMuY29ubmVjdCgoUkVNT1RFX0hPU1QsIDQ0MykpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh7fSwgcy5nZXRwZWVyY2VydCgpKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzLmNsb3NlKCkKKyAgICAgICAgd2l0aCB0ZXN0X3dyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHt9LCBzLmdldHBlZXJjZXJ0KCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHMuc2VydmVyX3NpZGUpCiAKLSAgICAgICAgICAgICMgdGhpcyBzaG91bGQgZmFpbCBiZWNhdXNlIHdlIGhhdmUgbm8gdmVyaWZpY2F0aW9uIGNlcnRzCi0gICAgICAgICAgICBzID0gc3NsLndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfUkVRVUlSRUQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KHNzbC5TU0xFcnJvciwgImNlcnRpZmljYXRlIHZlcmlmeSBmYWlsZWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmNvbm5lY3QsIChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgIHMuY2xvc2UoKQorICAgICAgICAjIHRoaXMgc2hvdWxkIHN1Y2NlZWQgYmVjYXVzZSB3ZSBzcGVjaWZ5IHRoZSByb290IGNlcnQKKyAgICAgICAgd2l0aCB0ZXN0X3dyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9SRVFVSVJFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1TSUdOSU5HX0NBKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocy5nZXRwZWVyY2VydCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzLnNlcnZlcl9zaWRlKQogCi0gICAgICAgICAgICAjIHRoaXMgc2hvdWxkIHN1Y2NlZWQgYmVjYXVzZSB3ZSBzcGVjaWZ5IHRoZSByb290IGNlcnQKLSAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9SRVFVSVJFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FfY2VydHM9UkVNT1RFX1JPT1RfQ0VSVCkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzLmNvbm5lY3QoKFJFTU9URV9IT1NULCA0NDMpKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzLmdldHBlZXJjZXJ0KCkpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHMuY2xvc2UoKQorICAgIGRlZiB0ZXN0X2Nvbm5lY3RfZmFpbChzZWxmKToKKyAgICAgICAgIyBUaGlzIHNob3VsZCBmYWlsIGJlY2F1c2Ugd2UgaGF2ZSBubyB2ZXJpZmljYXRpb24gY2VydHMuIENvbm5lY3Rpb24KKyAgICAgICAgIyBmYWlsdXJlIGNyYXNoZXMgVGhyZWFkZWRFY2hvU2VydmVyLCBzbyBydW4gdGhpcyBpbiBhbiBpbmRlcGVuZGVudAorICAgICAgICAjIHRlc3QgbWV0aG9kLgorICAgICAgICBzID0gdGVzdF93cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfUkVRVUlSRUQpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzLmNsb3NlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KHNzbC5TU0xFcnJvciwgImNlcnRpZmljYXRlIHZlcmlmeSBmYWlsZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuY29ubmVjdCwgc2VsZi5zZXJ2ZXJfYWRkcikKIAogICAgIGRlZiB0ZXN0X2Nvbm5lY3RfZXgoc2VsZik6CiAgICAgICAgICMgSXNzdWUgIzExMzI2OiBjaGVjayBjb25uZWN0X2V4KCkgaW1wbGVtZW50YXRpb24KLSAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChSRU1PVEVfSE9TVCk6Ci0gICAgICAgICAgICBzID0gc3NsLndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfUkVRVUlSRUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhX2NlcnRzPVJFTU9URV9ST09UX0NFUlQpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBzLmNvbm5lY3RfZXgoKFJFTU9URV9IT1NULCA0NDMpKSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocy5nZXRwZWVyY2VydCgpKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzLmNsb3NlKCkKKyAgICAgICAgcyA9IHRlc3Rfd3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX1JFUVVJUkVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhX2NlcnRzPVNJR05JTkdfQ0EpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzLmNsb3NlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHMuY29ubmVjdF9leChzZWxmLnNlcnZlcl9hZGRyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHMuZ2V0cGVlcmNlcnQoKSkKIAogICAgIGRlZiB0ZXN0X25vbl9ibG9ja2luZ19jb25uZWN0X2V4KHNlbGYpOgogICAgICAgICAjIElzc3VlICMxMTMyNjogbm9uLWJsb2NraW5nIGNvbm5lY3RfZXgoKSBzaG91bGQgYWxsb3cgaGFuZHNoYWtlCiAgICAgICAgICMgdG8gcHJvY2VlZCBhZnRlciB0aGUgc29ja2V0IGdldHMgcmVhZHkuCi0gICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoUkVNT1RFX0hPU1QpOgotICAgICAgICAgICAgcyA9IHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX1JFUVVJUkVELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1SRU1PVEVfUk9PVF9DRVJULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1GYWxzZSkKKyAgICAgICAgcyA9IHRlc3Rfd3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX1JFUVVJUkVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhX2NlcnRzPVNJR05JTkdfQ0EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q9RmFsc2UpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzLmNsb3NlKQorICAgICAgICBzLnNldGJsb2NraW5nKEZhbHNlKQorICAgICAgICByYyA9IHMuY29ubmVjdF9leChzZWxmLnNlcnZlcl9hZGRyKQorICAgICAgICAjIEVXT1VMREJMT0NLIHVuZGVyIFdpbmRvd3MsIEVJTlBST0dSRVNTIGVsc2V3aGVyZQorICAgICAgICBzZWxmLmFzc2VydEluKHJjLCAoMCwgZXJybm8uRUlOUFJPR1JFU1MsIGVycm5vLkVXT1VMREJMT0NLKSkKKyAgICAgICAgIyBXYWl0IGZvciBjb25uZWN0IHRvIGZpbmlzaAorICAgICAgICBzZWxlY3Quc2VsZWN0KFtdLCBbc10sIFtdLCA1LjApCisgICAgICAgICMgTm9uLWJsb2NraW5nIGhhbmRzaGFrZQorICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHMuc2V0YmxvY2tpbmcoRmFsc2UpCi0gICAgICAgICAgICAgICAgcmMgPSBzLmNvbm5lY3RfZXgoKFJFTU9URV9IT1NULCA0NDMpKQotICAgICAgICAgICAgICAgICMgRVdPVUxEQkxPQ0sgdW5kZXIgV2luZG93cywgRUlOUFJPR1JFU1MgZWxzZXdoZXJlCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihyYywgKDAsIGVycm5vLkVJTlBST0dSRVNTLCBlcnJuby5FV09VTERCTE9DSykpCi0gICAgICAgICAgICAgICAgIyBXYWl0IGZvciBjb25uZWN0IHRvIGZpbmlzaAorICAgICAgICAgICAgICAgIHMuZG9faGFuZHNoYWtlKCkKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xXYW50UmVhZEVycm9yOgorICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW3NdLCBbXSwgW10sIDUuMCkKKyAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMV2FudFdyaXRlRXJyb3I6CiAgICAgICAgICAgICAgICAgc2VsZWN0LnNlbGVjdChbXSwgW3NdLCBbXSwgNS4wKQotICAgICAgICAgICAgICAgICMgTm9uLWJsb2NraW5nIGhhbmRzaGFrZQotICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgIHMuZG9faGFuZHNoYWtlKCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMV2FudFJlYWRFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW3NdLCBbXSwgW10sIDUuMCkKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xXYW50V3JpdGVFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW10sIFtzXSwgW10sIDUuMCkKLSAgICAgICAgICAgICAgICAjIFNTTCBlc3RhYmxpc2hlZAotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzLmdldHBlZXJjZXJ0KCkpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHMuY2xvc2UoKQotCi0gICAgZGVmIHRlc3RfdGltZW91dF9jb25uZWN0X2V4KHNlbGYpOgotICAgICAgICAjIElzc3VlICMxMjA2NTogb24gYSB0aW1lb3V0LCBjb25uZWN0X2V4KCkgc2hvdWxkIHJldHVybiB0aGUgb3JpZ2luYWwKLSAgICAgICAgIyBlcnJubyAobWltaWNraW5nIHRoZSBiZWhhdmlvdXIgb2Ygbm9uLVNTTCBzb2NrZXRzKS4KLSAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChSRU1PVEVfSE9TVCk6Ci0gICAgICAgICAgICBzID0gc3NsLndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfUkVRVUlSRUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhX2NlcnRzPVJFTU9URV9ST09UX0NFUlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHMuc2V0dGltZW91dCgwLjAwMDAwMDEpCi0gICAgICAgICAgICAgICAgcmMgPSBzLmNvbm5lY3RfZXgoKFJFTU9URV9IT1NULCA0NDMpKQotICAgICAgICAgICAgICAgIGlmIHJjID09IDA6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIlJFTU9URV9IT1NUIHJlc3BvbmRlZCB0b28gcXVpY2tseSIpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihyYywgKGVycm5vLkVBR0FJTiwgZXJybm8uRVdPVUxEQkxPQ0spKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzLmNsb3NlKCkKLQotICAgIGRlZiB0ZXN0X2Nvbm5lY3RfZXhfZXJyb3Ioc2VsZik6Ci0gICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoUkVNT1RFX0hPU1QpOgotICAgICAgICAgICAgcyA9IHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX1JFUVVJUkVELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1SRU1PVEVfUk9PVF9DRVJUKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHJjID0gcy5jb25uZWN0X2V4KChSRU1PVEVfSE9TVCwgNDQ0KSkKLSAgICAgICAgICAgICAgICAjIElzc3VlICMxOTkxOTogV2luZG93cyBtYWNoaW5lcyBvciBWTXMgaG9zdGVkIG9uIFdpbmRvd3MKLSAgICAgICAgICAgICAgICAjIG1hY2hpbmVzIHNvbWV0aW1lcyByZXR1cm4gRVdPVUxEQkxPQ0suCi0gICAgICAgICAgICAgICAgZXJyb3JzID0gKAotICAgICAgICAgICAgICAgICAgICBlcnJuby5FQ09OTlJFRlVTRUQsIGVycm5vLkVIT1NUVU5SRUFDSCwgZXJybm8uRVRJTUVET1VULAotICAgICAgICAgICAgICAgICAgICBlcnJuby5FV09VTERCTE9DSywKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihyYywgZXJyb3JzKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzLmNsb3NlKCkKKyAgICAgICAgIyBTU0wgZXN0YWJsaXNoZWQKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHMuZ2V0cGVlcmNlcnQoKSkKIAogICAgIGRlZiB0ZXN0X2Nvbm5lY3Rfd2l0aF9jb250ZXh0KHNlbGYpOgotICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KFJFTU9URV9IT1NUKToKLSAgICAgICAgICAgICMgU2FtZSBhcyB0ZXN0X2Nvbm5lY3QsIGJ1dCB3aXRoIGEgc2VwYXJhdGVseSBjcmVhdGVkIGNvbnRleHQKLSAgICAgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCi0gICAgICAgICAgICBzID0gY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKQotICAgICAgICAgICAgcy5jb25uZWN0KChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHt9LCBzLmdldHBlZXJjZXJ0KCkpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHMuY2xvc2UoKQotICAgICAgICAgICAgIyBTYW1lIHdpdGggYSBzZXJ2ZXIgaG9zdG5hbWUKLSAgICAgICAgICAgIHMgPSBjdHgud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1SRU1PVEVfSE9TVCkKLSAgICAgICAgICAgIHMuY29ubmVjdCgoUkVNT1RFX0hPU1QsIDQ0MykpCi0gICAgICAgICAgICBzLmNsb3NlKCkKLSAgICAgICAgICAgICMgVGhpcyBzaG91bGQgZmFpbCBiZWNhdXNlIHdlIGhhdmUgbm8gdmVyaWZpY2F0aW9uIGNlcnRzCi0gICAgICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAotICAgICAgICAgICAgcyA9IGN0eC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc3NsLlNTTEVycm9yLCAiY2VydGlmaWNhdGUgdmVyaWZ5IGZhaWxlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmNvbm5lY3QsIChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgIHMuY2xvc2UoKQotICAgICAgICAgICAgIyBUaGlzIHNob3VsZCBzdWNjZWVkIGJlY2F1c2Ugd2Ugc3BlY2lmeSB0aGUgcm9vdCBjZXJ0Ci0gICAgICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKFJFTU9URV9ST09UX0NFUlQpCi0gICAgICAgICAgICBzID0gY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKQotICAgICAgICAgICAgcy5jb25uZWN0KChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBjZXJ0ID0gcy5nZXRwZWVyY2VydCgpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNlcnQpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHMuY2xvc2UoKQorICAgICAgICAjIFNhbWUgYXMgdGVzdF9jb25uZWN0LCBidXQgd2l0aCBhIHNlcGFyYXRlbHkgY3JlYXRlZCBjb250ZXh0CisgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCisgICAgICAgIHdpdGggY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHt9LCBzLmdldHBlZXJjZXJ0KCkpCisgICAgICAgICMgU2FtZSB3aXRoIGEgc2VydmVyIGhvc3RuYW1lCisgICAgICAgIHdpdGggY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT0iZHVtbXkiKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgIGN0eC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECisgICAgICAgICMgVGhpcyBzaG91bGQgc3VjY2VlZCBiZWNhdXNlIHdlIHNwZWNpZnkgdGhlIHJvb3QgY2VydAorICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKFNJR05JTkdfQ0EpCisgICAgICAgIHdpdGggY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgICAgICBjZXJ0ID0gcy5nZXRwZWVyY2VydCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2VydCkKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3Rfd2l0aF9jb250ZXh0X2ZhaWwoc2VsZik6CisgICAgICAgICMgVGhpcyBzaG91bGQgZmFpbCBiZWNhdXNlIHdlIGhhdmUgbm8gdmVyaWZpY2F0aW9uIGNlcnRzLiBDb25uZWN0aW9uCisgICAgICAgICMgZmFpbHVyZSBjcmFzaGVzIFRocmVhZGVkRWNob1NlcnZlciwgc28gcnVuIHRoaXMgaW4gYW4gaW5kZXBlbmRlbnQKKyAgICAgICAgIyB0ZXN0IG1ldGhvZC4KKyAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKKyAgICAgICAgcyA9IGN0eC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHMuY2xvc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc3NsLlNTTEVycm9yLCAiY2VydGlmaWNhdGUgdmVyaWZ5IGZhaWxlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuY29ubmVjdCwgc2VsZi5zZXJ2ZXJfYWRkcikKIAogICAgIGRlZiB0ZXN0X2Nvbm5lY3RfY2FwYXRoKHNlbGYpOgogICAgICAgICAjIFZlcmlmeSBzZXJ2ZXIgY2VydGlmaWNhdGVzIHVzaW5nIHRoZSBgY2FwYXRoYCBhcmd1bWVudApAQCAtMTUzOCwxOTggKzE1NjQsMTMwIEBACiAgICAgICAgICMgT3BlblNTTCAwLjkuOG4gYW5kIDEuMC4wLCBhcyBhIHJlc3VsdCB0aGUgY2FwYXRoIGRpcmVjdG9yeSBtdXN0CiAgICAgICAgICMgY29udGFpbiBib3RoIHZlcnNpb25zIG9mIGVhY2ggY2VydGlmaWNhdGUgKHNhbWUgY29udGVudCwgZGlmZmVyZW50CiAgICAgICAgICMgZmlsZW5hbWUpIGZvciB0aGlzIHRlc3QgdG8gYmUgcG9ydGFibGUgYWNyb3NzIE9wZW5TU0wgcmVsZWFzZXMuCi0gICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoUkVNT1RFX0hPU1QpOgotICAgICAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKLSAgICAgICAgICAgIGN0eC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECi0gICAgICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhcGF0aD1DQVBBVEgpCi0gICAgICAgICAgICBzID0gY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKQotICAgICAgICAgICAgcy5jb25uZWN0KChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBjZXJ0ID0gcy5nZXRwZWVyY2VydCgpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNlcnQpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHMuY2xvc2UoKQotICAgICAgICAgICAgIyBTYW1lIHdpdGggYSBieXRlcyBgY2FwYXRoYCBhcmd1bWVudAotICAgICAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKLSAgICAgICAgICAgIGN0eC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECi0gICAgICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhcGF0aD1CWVRFU19DQVBBVEgpCi0gICAgICAgICAgICBzID0gY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKQotICAgICAgICAgICAgcy5jb25uZWN0KChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBjZXJ0ID0gcy5nZXRwZWVyY2VydCgpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNlcnQpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHMuY2xvc2UoKQorICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAorICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhcGF0aD1DQVBBVEgpCisgICAgICAgIHdpdGggY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgICAgICBjZXJ0ID0gcy5nZXRwZWVyY2VydCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2VydCkKKyAgICAgICAgIyBTYW1lIHdpdGggYSBieXRlcyBgY2FwYXRoYCBhcmd1bWVudAorICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAorICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhcGF0aD1CWVRFU19DQVBBVEgpCisgICAgICAgIHdpdGggY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgICAgICBjZXJ0ID0gcy5nZXRwZWVyY2VydCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2VydCkKIAogICAgIGRlZiB0ZXN0X2Nvbm5lY3RfY2FkYXRhKHNlbGYpOgotICAgICAgICB3aXRoIG9wZW4oUkVNT1RFX1JPT1RfQ0VSVCkgYXMgZjoKKyAgICAgICAgd2l0aCBvcGVuKFNJR05JTkdfQ0EpIGFzIGY6CiAgICAgICAgICAgICBwZW0gPSBmLnJlYWQoKQogICAgICAgICBkZXIgPSBzc2wuUEVNX2NlcnRfdG9fREVSX2NlcnQocGVtKQotICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KFJFTU9URV9IT1NUKToKLSAgICAgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCi0gICAgICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAotICAgICAgICAgICAgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjYWRhdGE9cGVtKQotICAgICAgICAgICAgd2l0aCBjdHgud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkpIGFzIHM6Ci0gICAgICAgICAgICAgICAgcy5jb25uZWN0KChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgICAgICBjZXJ0ID0gcy5nZXRwZWVyY2VydCgpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNlcnQpCisgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCisgICAgICAgIGN0eC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECisgICAgICAgIGN0eC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FkYXRhPXBlbSkKKyAgICAgICAgd2l0aCBjdHgud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkpIGFzIHM6CisgICAgICAgICAgICBzLmNvbm5lY3Qoc2VsZi5zZXJ2ZXJfYWRkcikKKyAgICAgICAgICAgIGNlcnQgPSBzLmdldHBlZXJjZXJ0KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjZXJ0KQogCi0gICAgICAgICAgICAjIHNhbWUgd2l0aCBERVIKLSAgICAgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCi0gICAgICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAotICAgICAgICAgICAgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjYWRhdGE9ZGVyKQotICAgICAgICAgICAgd2l0aCBjdHgud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkpIGFzIHM6Ci0gICAgICAgICAgICAgICAgcy5jb25uZWN0KChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgICAgICBjZXJ0ID0gcy5nZXRwZWVyY2VydCgpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNlcnQpCisgICAgICAgICMgc2FtZSB3aXRoIERFUgorICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAorICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhZGF0YT1kZXIpCisgICAgICAgIHdpdGggY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgICAgICBjZXJ0ID0gcy5nZXRwZWVyY2VydCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2VydCkKIAogICAgIEB1bml0dGVzdC5za2lwSWYob3MubmFtZSA9PSAibnQiLCAiQ2FuJ3QgdXNlIGEgc29ja2V0IGFzIGEgZmlsZSB1bmRlciBXaW5kb3dzIikKICAgICBkZWYgdGVzdF9tYWtlZmlsZV9jbG9zZShzZWxmKToKICAgICAgICAgIyBJc3N1ZSAjNTIzODogY3JlYXRpbmcgYSBmaWxlLWxpa2Ugb2JqZWN0IHdpdGggbWFrZWZpbGUoKSBzaG91bGRuJ3QKICAgICAgICAgIyBkZWxheSBjbG9zaW5nIHRoZSB1bmRlcmx5aW5nICJyZWFsIHNvY2tldCIgKGhlcmUgdGVzdGVkIHdpdGggaXRzCiAgICAgICAgICMgZmlsZSBkZXNjcmlwdG9yLCBoZW5jZSBza2lwcGluZyB0aGUgdGVzdCB1bmRlciBXaW5kb3dzKS4KLSAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChSRU1PVEVfSE9TVCk6Ci0gICAgICAgICAgICBzcyA9IHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSkKLSAgICAgICAgICAgIHNzLmNvbm5lY3QoKFJFTU9URV9IT1NULCA0NDMpKQotICAgICAgICAgICAgZmQgPSBzcy5maWxlbm8oKQotICAgICAgICAgICAgZiA9IHNzLm1ha2VmaWxlKCkKLSAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICAgICAgIyBUaGUgZmQgaXMgc3RpbGwgb3BlbgorICAgICAgICBzcyA9IHRlc3Rfd3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkpCisgICAgICAgIHNzLmNvbm5lY3Qoc2VsZi5zZXJ2ZXJfYWRkcikKKyAgICAgICAgZmQgPSBzcy5maWxlbm8oKQorICAgICAgICBmID0gc3MubWFrZWZpbGUoKQorICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgIyBUaGUgZmQgaXMgc3RpbGwgb3BlbgorICAgICAgICBvcy5yZWFkKGZkLCAwKQorICAgICAgICAjIENsb3NpbmcgdGhlIFNTTCBzb2NrZXQgc2hvdWxkIGNsb3NlIHRoZSBmZCB0b28KKyAgICAgICAgc3MuY2xvc2UoKQorICAgICAgICBnYy5jb2xsZWN0KCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKSBhcyBlOgogICAgICAgICAgICAgb3MucmVhZChmZCwgMCkKLSAgICAgICAgICAgICMgQ2xvc2luZyB0aGUgU1NMIHNvY2tldCBzaG91bGQgY2xvc2UgdGhlIGZkIHRvbwotICAgICAgICAgICAgc3MuY2xvc2UoKQotICAgICAgICAgICAgZ2MuY29sbGVjdCgpCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGU6Ci0gICAgICAgICAgICAgICAgb3MucmVhZChmZCwgMCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVCQURGKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FQkFERikKIAogICAgIGRlZiB0ZXN0X25vbl9ibG9ja2luZ19oYW5kc2hha2Uoc2VsZik6Ci0gICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoUkVNT1RFX0hPU1QpOgotICAgICAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCi0gICAgICAgICAgICBzLmNvbm5lY3QoKFJFTU9URV9IT1NULCA0NDMpKQotICAgICAgICAgICAgcy5zZXRibG9ja2luZyhGYWxzZSkKLSAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX05PTkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlKQotICAgICAgICAgICAgY291bnQgPSAwCi0gICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgY291bnQgKz0gMQotICAgICAgICAgICAgICAgICAgICBzLmRvX2hhbmRzaGFrZSgpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xXYW50UmVhZEVycm9yOgotICAgICAgICAgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KFtzXSwgW10sIFtdKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMV2FudFdyaXRlRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW10sIFtzXSwgW10pCi0gICAgICAgICAgICBzLmNsb3NlKCkKLSAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKLSAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJcbk5lZWRlZCAlZCBjYWxscyB0byBkb19oYW5kc2hha2UoKSB0byBlc3RhYmxpc2ggc2Vzc2lvbi5cbiIgJSBjb3VudCkKKyAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCisgICAgICAgIHMuY29ubmVjdChzZWxmLnNlcnZlcl9hZGRyKQorICAgICAgICBzLnNldGJsb2NraW5nKEZhbHNlKQorICAgICAgICBzID0gdGVzdF93cmFwX3NvY2tldChzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocy5jbG9zZSkKKyAgICAgICAgY291bnQgPSAwCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgY291bnQgKz0gMQorICAgICAgICAgICAgICAgIHMuZG9faGFuZHNoYWtlKCkKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xXYW50UmVhZEVycm9yOgorICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW3NdLCBbXSwgW10pCisgICAgICAgICAgICBleGNlcHQgc3NsLlNTTFdhbnRXcml0ZUVycm9yOgorICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW10sIFtzXSwgW10pCisgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKKyAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlxuTmVlZGVkICVkIGNhbGxzIHRvIGRvX2hhbmRzaGFrZSgpIHRvIGVzdGFibGlzaCBzZXNzaW9uLlxuIiAlIGNvdW50KQogCiAgICAgZGVmIHRlc3RfZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZShzZWxmKToKLSAgICAgICAgZGVmIF90ZXN0X2dldF9zZXJ2ZXJfY2VydGlmaWNhdGUoaG9zdCwgcG9ydCwgY2VydD1Ob25lKToKLSAgICAgICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoaG9zdCk6Ci0gICAgICAgICAgICAgICAgcGVtID0gc3NsLmdldF9zZXJ2ZXJfY2VydGlmaWNhdGUoKGhvc3QsIHBvcnQpKQotICAgICAgICAgICAgICAgIGlmIG5vdCBwZW06Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiTm8gc2VydmVyIGNlcnRpZmljYXRlIG9uICVzOiVzISIgJSAoaG9zdCwgcG9ydCkpCisgICAgICAgIF90ZXN0X2dldF9zZXJ2ZXJfY2VydGlmaWNhdGUoc2VsZiwgKnNlbGYuc2VydmVyX2FkZHIsIGNlcnQ9U0lHTklOR19DQSkKIAotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgcGVtID0gc3NsLmdldF9zZXJ2ZXJfY2VydGlmaWNhdGUoKGhvc3QsIHBvcnQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1DRVJURklMRSkKLSAgICAgICAgICAgICAgICBleGNlcHQgc3NsLlNTTEVycm9yIGFzIHg6Ci0gICAgICAgICAgICAgICAgICAgICNzaG91bGQgZmFpbAotICAgICAgICAgICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCIlc1xuIiAlIHgpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJHb3Qgc2VydmVyIGNlcnRpZmljYXRlICVzIGZvciAlczolcyEiICUgKHBlbSwgaG9zdCwgcG9ydCkpCi0KLSAgICAgICAgICAgICAgICBwZW0gPSBzc2wuZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZSgoaG9zdCwgcG9ydCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FfY2VydHM9Y2VydCkKLSAgICAgICAgICAgICAgICBpZiBub3QgcGVtOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIk5vIHNlcnZlciBjZXJ0aWZpY2F0ZSBvbiAlczolcyEiICUgKGhvc3QsIHBvcnQpKQotICAgICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKLSAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiXG5WZXJpZmllZCBjZXJ0aWZpY2F0ZSBmb3IgJXM6JXMgaXNcbiVzXG4iICUgKGhvc3QsIHBvcnQgLHBlbSkpCi0KLSAgICAgICAgX3Rlc3RfZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZShSRU1PVEVfSE9TVCwgNDQzLCBSRU1PVEVfUk9PVF9DRVJUKQotICAgICAgICBpZiBzdXBwb3J0LklQVjZfRU5BQkxFRDoKLSAgICAgICAgICAgIF90ZXN0X2dldF9zZXJ2ZXJfY2VydGlmaWNhdGUoJ2lwdjYuZ29vZ2xlLmNvbScsIDQ0MykKKyAgICBkZWYgdGVzdF9nZXRfc2VydmVyX2NlcnRpZmljYXRlX2ZhaWwoc2VsZik6CisgICAgICAgICMgQ29ubmVjdGlvbiBmYWlsdXJlIGNyYXNoZXMgVGhyZWFkZWRFY2hvU2VydmVyLCBzbyBydW4gdGhpcyBpbiBhbgorICAgICAgICAjIGluZGVwZW5kZW50IHRlc3QgbWV0aG9kCisgICAgICAgIF90ZXN0X2dldF9zZXJ2ZXJfY2VydGlmaWNhdGVfZmFpbChzZWxmLCAqc2VsZi5zZXJ2ZXJfYWRkcikKIAogICAgIGRlZiB0ZXN0X2NpcGhlcnMoc2VsZik6Ci0gICAgICAgIHJlbW90ZSA9IChSRU1PVEVfSE9TVCwgNDQzKQotICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KHJlbW90ZVswXSk6Ci0gICAgICAgICAgICB3aXRoIHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FLCBjaXBoZXJzPSJBTEwiKSBhcyBzOgotICAgICAgICAgICAgICAgIHMuY29ubmVjdChyZW1vdGUpCi0gICAgICAgICAgICB3aXRoIHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FLCBjaXBoZXJzPSJERUZBVUxUIikgYXMgczoKLSAgICAgICAgICAgICAgICBzLmNvbm5lY3QocmVtb3RlKQotICAgICAgICAgICAgIyBFcnJvciBjaGVja2luZyBjYW4gaGFwcGVuIGF0IGluc3RhbnRpYXRpb24gb3Igd2hlbiBjb25uZWN0aW5nCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc3NsLlNTTEVycm9yLCAiTm8gY2lwaGVyIGNhbiBiZSBzZWxlY3RlZCIpOgotICAgICAgICAgICAgICAgIHdpdGggc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkgYXMgc29jazoKLSAgICAgICAgICAgICAgICAgICAgcyA9IHNzbC53cmFwX3NvY2tldChzb2NrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FLCBjaXBoZXJzPSJeJDosOz8qJ2Rvcm90aHl4IikKLSAgICAgICAgICAgICAgICAgICAgcy5jb25uZWN0KHJlbW90ZSkKLQotICAgIGRlZiB0ZXN0X2FsZ29yaXRobXMoc2VsZik6Ci0gICAgICAgICMgSXNzdWUgIzg0ODQ6IGFsbCBhbGdvcml0aG1zIHNob3VsZCBiZSBhdmFpbGFibGUgd2hlbiB2ZXJpZnlpbmcgYQotICAgICAgICAjIGNlcnRpZmljYXRlLgotICAgICAgICAjIFNIQTI1NiB3YXMgYWRkZWQgaW4gT3BlblNTTCAwLjkuOAotICAgICAgICBpZiBzc2wuT1BFTlNTTF9WRVJTSU9OX0lORk8gPCAoMCwgOSwgOCwgMCwgMTUpOgotICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiU0hBMjU2IG5vdCBhdmFpbGFibGUgb24gJXIiICUgc3NsLk9QRU5TU0xfVkVSU0lPTikKLSAgICAgICAgIyBzaGEyNTYudGJzLWludGVybmV0LmNvbSBuZWVkcyBTTkkgdG8gdXNlIHRoZSBjb3JyZWN0IGNlcnRpZmljYXRlCi0gICAgICAgIGlmIG5vdCBzc2wuSEFTX1NOSToKLSAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIlNOSSBuZWVkZWQgZm9yIHRoaXMgdGVzdCIpCi0gICAgICAgICMgaHR0cHM6Ly9zaGEyLmhib2Vjay5kZS8gd2FzIHVzZWQgdW50aWwgMjAxMS0wMS0wOCAobm8gcm91dGUgdG8gaG9zdCkKLSAgICAgICAgcmVtb3RlID0gKCJzaGEyNTYudGJzLWludGVybmV0LmNvbSIsIDQ0MykKLSAgICAgICAgc2hhMjU2X2NlcnQgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgInNoYTI1Ni5wZW0iKQotICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KCJzaGEyNTYudGJzLWludGVybmV0LmNvbSIpOgotICAgICAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQotICAgICAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKLSAgICAgICAgICAgIGN0eC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoc2hhMjU2X2NlcnQpCi0gICAgICAgICAgICBzID0gY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9InNoYTI1Ni50YnMtaW50ZXJuZXQuY29tIikKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzLmNvbm5lY3QocmVtb3RlKQotICAgICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKLSAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiXG5DaXBoZXIgd2l0aCAlciBpcyAlclxuIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlbW90ZSwgcy5jaXBoZXIoKSkpCi0gICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIkNlcnRpZmljYXRlIGlzOlxuJXNcbiIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBwcmludC5wZm9ybWF0KHMuZ2V0cGVlcmNlcnQoKSkpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHMuY2xvc2UoKQorICAgICAgICB3aXRoIHRlc3Rfd3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FLCBjaXBoZXJzPSJBTEwiKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgIHdpdGggdGVzdF93cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX05PTkUsIGNpcGhlcnM9IkRFRkFVTFQiKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgICMgRXJyb3IgY2hlY2tpbmcgY2FuIGhhcHBlbiBhdCBpbnN0YW50aWF0aW9uIG9yIHdoZW4gY29ubmVjdGluZworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc3NsLlNTTEVycm9yLCAiTm8gY2lwaGVyIGNhbiBiZSBzZWxlY3RlZCIpOgorICAgICAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSBhcyBzb2NrOgorICAgICAgICAgICAgICAgIHMgPSB0ZXN0X3dyYXBfc29ja2V0KHNvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfTk9ORSwgY2lwaGVycz0iXiQ6LDs/Kidkb3JvdGh5eCIpCisgICAgICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCiAKICAgICBkZWYgdGVzdF9nZXRfY2FfY2VydHNfY2FwYXRoKHNlbGYpOgogICAgICAgICAjIGNhcGF0aCBjZXJ0cyBhcmUgbG9hZGVkIG9uIHJlcXVlc3QKLSAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChSRU1PVEVfSE9TVCk6Ci0gICAgICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQotICAgICAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKLSAgICAgICAgICAgIGN0eC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FwYXRoPUNBUEFUSCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LmdldF9jYV9jZXJ0cygpLCBbXSkKLSAgICAgICAgICAgIHMgPSBjdHgud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkpCi0gICAgICAgICAgICBzLmNvbm5lY3QoKFJFTU9URV9IT1NULCA0NDMpKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGNlcnQgPSBzLmdldHBlZXJjZXJ0KCkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2VydCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgcy5jbG9zZSgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjdHguZ2V0X2NhX2NlcnRzKCkpLCAxKQorICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAorICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhcGF0aD1DQVBBVEgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LmdldF9jYV9jZXJ0cygpLCBbXSkKKyAgICAgICAgd2l0aCBjdHgud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkpIGFzIHM6CisgICAgICAgICAgICBzLmNvbm5lY3Qoc2VsZi5zZXJ2ZXJfYWRkcikKKyAgICAgICAgICAgIGNlcnQgPSBzLmdldHBlZXJjZXJ0KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjZXJ0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjdHguZ2V0X2NhX2NlcnRzKCkpLCAxKQogCiAgICAgQG5lZWRzX3NuaQogICAgIGRlZiB0ZXN0X2NvbnRleHRfc2V0Z2V0KHNlbGYpOgogICAgICAgICAjIENoZWNrIHRoYXQgdGhlIGNvbnRleHQgb2YgYSBjb25uZWN0ZWQgc29ja2V0IGNhbiBiZSByZXBsYWNlZC4KLSAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChSRU1PVEVfSE9TVCk6Ci0gICAgICAgICAgICBjdHgxID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQotICAgICAgICAgICAgY3R4MiA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCi0gICAgICAgICAgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKLSAgICAgICAgICAgIHdpdGggY3R4MS53cmFwX3NvY2tldChzKSBhcyBzczoKLSAgICAgICAgICAgICAgICBzcy5jb25uZWN0KChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHNzLmNvbnRleHQsIGN0eDEpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzcy5fc3Nsb2JqLmNvbnRleHQsIGN0eDEpCi0gICAgICAgICAgICAgICAgc3MuY29udGV4dCA9IGN0eDIKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHNzLmNvbnRleHQsIGN0eDIpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzcy5fc3Nsb2JqLmNvbnRleHQsIGN0eDIpCi0KLQotY2xhc3MgTmV0d29ya2VkQklPVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICBjdHgxID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICBjdHgyID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCisgICAgICAgIHdpdGggY3R4MS53cmFwX3NvY2tldChzKSBhcyBzczoKKyAgICAgICAgICAgIHNzLmNvbm5lY3Qoc2VsZi5zZXJ2ZXJfYWRkcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3MuY29udGV4dCwgY3R4MSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3MuX3NzbG9iai5jb250ZXh0LCBjdHgxKQorICAgICAgICAgICAgc3MuY29udGV4dCA9IGN0eDIKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3MuY29udGV4dCwgY3R4MikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3MuX3NzbG9iai5jb250ZXh0LCBjdHgyKQogCiAgICAgZGVmIHNzbF9pb19sb29wKHNlbGYsIHNvY2ssIGluY29taW5nLCBvdXRnb2luZywgZnVuYywgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgIyBBIHNpbXBsZSBJTyBsb29wLiBDYWxsIGZ1bmMoKmFyZ3MpIGRlcGVuZGluZyBvbiB0aGUgZXJyb3Igd2UgZ2V0CkBAIC0xNzY1LDY0ICsxNzIzLDEyOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChjb3VudCwgZnVuYy5fX25hbWVfXykpCiAgICAgICAgIHJldHVybiByZXQKIAotICAgIGRlZiB0ZXN0X2hhbmRzaGFrZShzZWxmKToKLSAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChSRU1PVEVfSE9TVCk6Ci0gICAgICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKLSAgICAgICAgICAgIHNvY2suY29ubmVjdCgoUkVNT1RFX0hPU1QsIDQ0MykpCi0gICAgICAgICAgICBpbmNvbWluZyA9IHNzbC5NZW1vcnlCSU8oKQotICAgICAgICAgICAgb3V0Z29pbmcgPSBzc2wuTWVtb3J5QklPKCkKLSAgICAgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCi0gICAgICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAotICAgICAgICAgICAgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhSRU1PVEVfUk9PVF9DRVJUKQotICAgICAgICAgICAgY3R4LmNoZWNrX2hvc3RuYW1lID0gVHJ1ZQotICAgICAgICAgICAgc3Nsb2JqID0gY3R4LndyYXBfYmlvKGluY29taW5nLCBvdXRnb2luZywgRmFsc2UsIFJFTU9URV9IT1NUKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzc2xvYmouX3NzbG9iai5vd25lciwgc3Nsb2JqKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc3Nsb2JqLmNpcGhlcigpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoc3Nsb2JqLnNoYXJlZF9jaXBoZXJzKCkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzc2xvYmouZ2V0cGVlcmNlcnQpCi0gICAgICAgICAgICBpZiAndGxzLXVuaXF1ZScgaW4gc3NsLkNIQU5ORUxfQklORElOR19UWVBFUzoKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzc2xvYmouZ2V0X2NoYW5uZWxfYmluZGluZygndGxzLXVuaXF1ZScpKQotICAgICAgICAgICAgc2VsZi5zc2xfaW9fbG9vcChzb2NrLCBpbmNvbWluZywgb3V0Z29pbmcsIHNzbG9iai5kb19oYW5kc2hha2UpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3Nsb2JqLmNpcGhlcigpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoc3Nsb2JqLnNoYXJlZF9jaXBoZXJzKCkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3Nsb2JqLmdldHBlZXJjZXJ0KCkpCi0gICAgICAgICAgICBpZiAndGxzLXVuaXF1ZScgaW4gc3NsLkNIQU5ORUxfQklORElOR19UWVBFUzoKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3Nsb2JqLmdldF9jaGFubmVsX2JpbmRpbmcoJ3Rscy11bmlxdWUnKSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLnNzbF9pb19sb29wKHNvY2ssIGluY29taW5nLCBvdXRnb2luZywgc3Nsb2JqLnVud3JhcCkKLSAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMU3lzY2FsbEVycm9yOgotICAgICAgICAgICAgICAgICMgc2VsZi1zaWduZWQucHl0aG9udGVzdC5uZXQgcHJvYmFibHkgc2h1dHMgZG93biB0aGUgVENQCi0gICAgICAgICAgICAgICAgIyBjb25uZWN0aW9uIHdpdGhvdXQgc2VuZGluZyBhIHNlY3VyZSBzaHV0ZG93biBtZXNzYWdlLCBhbmQKLSAgICAgICAgICAgICAgICAjIHRoaXMgaXMgcmVwb3J0ZWQgYXMgU1NMX0VSUk9SX1NZU0NBTEwKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzc2wuU1NMRXJyb3IsIHNzbG9iai53cml0ZSwgYidmb28nKQotICAgICAgICAgICAgc29jay5jbG9zZSgpCi0KLSAgICBkZWYgdGVzdF9yZWFkX3dyaXRlX2RhdGEoc2VsZik6Ci0gICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoUkVNT1RFX0hPU1QpOgotICAgICAgICAgICAgc29jayA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCi0gICAgICAgICAgICBzb2NrLmNvbm5lY3QoKFJFTU9URV9IT1NULCA0NDMpKQotICAgICAgICAgICAgaW5jb21pbmcgPSBzc2wuTWVtb3J5QklPKCkKLSAgICAgICAgICAgIG91dGdvaW5nID0gc3NsLk1lbW9yeUJJTygpCi0gICAgICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQotICAgICAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfTk9ORQotICAgICAgICAgICAgc3Nsb2JqID0gY3R4LndyYXBfYmlvKGluY29taW5nLCBvdXRnb2luZywgRmFsc2UpCi0gICAgICAgICAgICBzZWxmLnNzbF9pb19sb29wKHNvY2ssIGluY29taW5nLCBvdXRnb2luZywgc3Nsb2JqLmRvX2hhbmRzaGFrZSkKLSAgICAgICAgICAgIHJlcSA9IGInR0VUIC8gSFRUUC8xLjBcclxuXHJcbicKLSAgICAgICAgICAgIHNlbGYuc3NsX2lvX2xvb3Aoc29jaywgaW5jb21pbmcsIG91dGdvaW5nLCBzc2xvYmoud3JpdGUsIHJlcSkKLSAgICAgICAgICAgIGJ1ZiA9IHNlbGYuc3NsX2lvX2xvb3Aoc29jaywgaW5jb21pbmcsIG91dGdvaW5nLCBzc2xvYmoucmVhZCwgMTAyNCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmWzo1XSwgYidIVFRQLycpCisgICAgZGVmIHRlc3RfYmlvX2hhbmRzaGFrZShzZWxmKToKKyAgICAgICAgc29jayA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzb2NrLmNsb3NlKQorICAgICAgICBzb2NrLmNvbm5lY3Qoc2VsZi5zZXJ2ZXJfYWRkcikKKyAgICAgICAgaW5jb21pbmcgPSBzc2wuTWVtb3J5QklPKCkKKyAgICAgICAgb3V0Z29pbmcgPSBzc2wuTWVtb3J5QklPKCkKKyAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKKyAgICAgICAgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhTSUdOSU5HX0NBKQorICAgICAgICBjdHguY2hlY2tfaG9zdG5hbWUgPSBUcnVlCisgICAgICAgIHNzbG9iaiA9IGN0eC53cmFwX2JpbyhpbmNvbWluZywgb3V0Z29pbmcsIEZhbHNlLCAnbG9jYWxob3N0JykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzc2xvYmouX3NzbG9iai5vd25lciwgc3Nsb2JqKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzc2xvYmouY2lwaGVyKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHNzbG9iai5zaGFyZWRfY2lwaGVycygpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzc2xvYmouZ2V0cGVlcmNlcnQpCisgICAgICAgIGlmICd0bHMtdW5pcXVlJyBpbiBzc2wuQ0hBTk5FTF9CSU5ESU5HX1RZUEVTOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc3Nsb2JqLmdldF9jaGFubmVsX2JpbmRpbmcoJ3Rscy11bmlxdWUnKSkKKyAgICAgICAgc2VsZi5zc2xfaW9fbG9vcChzb2NrLCBpbmNvbWluZywgb3V0Z29pbmcsIHNzbG9iai5kb19oYW5kc2hha2UpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzc2xvYmouY2lwaGVyKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHNzbG9iai5zaGFyZWRfY2lwaGVycygpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc3Nsb2JqLmdldHBlZXJjZXJ0KCkpCisgICAgICAgIGlmICd0bHMtdW5pcXVlJyBpbiBzc2wuQ0hBTk5FTF9CSU5ESU5HX1RZUEVTOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNzbG9iai5nZXRfY2hhbm5lbF9iaW5kaW5nKCd0bHMtdW5pcXVlJykpCisgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuc3NsX2lvX2xvb3Aoc29jaywgaW5jb21pbmcsIG91dGdvaW5nLCBzc2xvYmoudW53cmFwKQotICAgICAgICAgICAgc29jay5jbG9zZSgpCisgICAgICAgIGV4Y2VwdCBzc2wuU1NMU3lzY2FsbEVycm9yOgorICAgICAgICAgICAgIyBJZiB0aGUgc2VydmVyIHNodXRzIGRvd24gdGhlIFRDUCBjb25uZWN0aW9uIHdpdGhvdXQgc2VuZGluZyBhCisgICAgICAgICAgICAjIHNlY3VyZSBzaHV0ZG93biBtZXNzYWdlLCB0aGlzIGlzIHJlcG9ydGVkIGFzIFNTTF9FUlJPUl9TWVNDQUxMCisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNzbC5TU0xFcnJvciwgc3Nsb2JqLndyaXRlLCBiJ2ZvbycpCisKKyAgICBkZWYgdGVzdF9iaW9fcmVhZF93cml0ZV9kYXRhKHNlbGYpOgorICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNvY2suY2xvc2UpCisgICAgICAgIHNvY2suY29ubmVjdChzZWxmLnNlcnZlcl9hZGRyKQorICAgICAgICBpbmNvbWluZyA9IHNzbC5NZW1vcnlCSU8oKQorICAgICAgICBvdXRnb2luZyA9IHNzbC5NZW1vcnlCSU8oKQorICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9OT05FCisgICAgICAgIHNzbG9iaiA9IGN0eC53cmFwX2JpbyhpbmNvbWluZywgb3V0Z29pbmcsIEZhbHNlKQorICAgICAgICBzZWxmLnNzbF9pb19sb29wKHNvY2ssIGluY29taW5nLCBvdXRnb2luZywgc3Nsb2JqLmRvX2hhbmRzaGFrZSkKKyAgICAgICAgcmVxID0gYidGT09cbicKKyAgICAgICAgc2VsZi5zc2xfaW9fbG9vcChzb2NrLCBpbmNvbWluZywgb3V0Z29pbmcsIHNzbG9iai53cml0ZSwgcmVxKQorICAgICAgICBidWYgPSBzZWxmLnNzbF9pb19sb29wKHNvY2ssIGluY29taW5nLCBvdXRnb2luZywgc3Nsb2JqLnJlYWQsIDEwMjQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLCBiJ2Zvb1xuJykKKyAgICAgICAgc2VsZi5zc2xfaW9fbG9vcChzb2NrLCBpbmNvbWluZywgb3V0Z29pbmcsIHNzbG9iai51bndyYXApCiAKIAotdHJ5OgotICAgIGltcG9ydCB0aHJlYWRpbmcKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBfaGF2ZV90aHJlYWRzID0gRmFsc2UKLWVsc2U6Ci0gICAgX2hhdmVfdGhyZWFkcyA9IFRydWUKK2NsYXNzIE5ldHdvcmtlZFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAorICAgIGRlZiB0ZXN0X3RpbWVvdXRfY29ubmVjdF9leChzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMTIwNjU6IG9uIGEgdGltZW91dCwgY29ubmVjdF9leCgpIHNob3VsZCByZXR1cm4gdGhlIG9yaWdpbmFsCisgICAgICAgICMgZXJybm8gKG1pbWlja2luZyB0aGUgYmVoYXZpb3VyIG9mIG5vbi1TU0wgc29ja2V0cykuCisgICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoUkVNT1RFX0hPU1QpOgorICAgICAgICAgICAgcyA9IHRlc3Rfd3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9SRVFVSVJFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q9RmFsc2UpCisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAocy5jbG9zZSkKKyAgICAgICAgICAgIHMuc2V0dGltZW91dCgwLjAwMDAwMDEpCisgICAgICAgICAgICByYyA9IHMuY29ubmVjdF9leCgoUkVNT1RFX0hPU1QsIDQ0MykpCisgICAgICAgICAgICBpZiByYyA9PSAwOgorICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIlJFTU9URV9IT1NUIHJlc3BvbmRlZCB0b28gcXVpY2tseSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKHJjLCAoZXJybm8uRUFHQUlOLCBlcnJuby5FV09VTERCTE9DSykpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzdXBwb3J0LklQVjZfRU5BQkxFRCwgJ05lZWRzIElQdjYnKQorICAgIGRlZiB0ZXN0X2dldF9zZXJ2ZXJfY2VydGlmaWNhdGVfaXB2NihzZWxmKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldCgnaXB2Ni5nb29nbGUuY29tJyk6CisgICAgICAgICAgICBfdGVzdF9nZXRfc2VydmVyX2NlcnRpZmljYXRlKHNlbGYsICdpcHY2Lmdvb2dsZS5jb20nLCA0NDMpCisgICAgICAgICAgICBfdGVzdF9nZXRfc2VydmVyX2NlcnRpZmljYXRlX2ZhaWwoc2VsZiwgJ2lwdjYuZ29vZ2xlLmNvbScsIDQ0MykKKworICAgIGRlZiB0ZXN0X2FsZ29yaXRobXMoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzg0ODQ6IGFsbCBhbGdvcml0aG1zIHNob3VsZCBiZSBhdmFpbGFibGUgd2hlbiB2ZXJpZnlpbmcgYQorICAgICAgICAjIGNlcnRpZmljYXRlLgorICAgICAgICAjIFNIQTI1NiB3YXMgYWRkZWQgaW4gT3BlblNTTCAwLjkuOAorICAgICAgICBpZiBzc2wuT1BFTlNTTF9WRVJTSU9OX0lORk8gPCAoMCwgOSwgOCwgMCwgMTUpOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiU0hBMjU2IG5vdCBhdmFpbGFibGUgb24gJXIiICUgc3NsLk9QRU5TU0xfVkVSU0lPTikKKyAgICAgICAgIyBzaGEyNTYudGJzLWludGVybmV0LmNvbSBuZWVkcyBTTkkgdG8gdXNlIHRoZSBjb3JyZWN0IGNlcnRpZmljYXRlCisgICAgICAgIGlmIG5vdCBzc2wuSEFTX1NOSToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIlNOSSBuZWVkZWQgZm9yIHRoaXMgdGVzdCIpCisgICAgICAgICMgaHR0cHM6Ly9zaGEyLmhib2Vjay5kZS8gd2FzIHVzZWQgdW50aWwgMjAxMS0wMS0wOCAobm8gcm91dGUgdG8gaG9zdCkKKyAgICAgICAgcmVtb3RlID0gKCJzaGEyNTYudGJzLWludGVybmV0LmNvbSIsIDQ0MykKKyAgICAgICAgc2hhMjU2X2NlcnQgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgInNoYTI1Ni5wZW0iKQorICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KCJzaGEyNTYudGJzLWludGVybmV0LmNvbSIpOgorICAgICAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKKyAgICAgICAgICAgIGN0eC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoc2hhMjU2X2NlcnQpCisgICAgICAgICAgICBzID0gY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9InNoYTI1Ni50YnMtaW50ZXJuZXQuY29tIikKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzLmNvbm5lY3QocmVtb3RlKQorICAgICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKKyAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiXG5DaXBoZXIgd2l0aCAlciBpcyAlclxuIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlbW90ZSwgcy5jaXBoZXIoKSkpCisgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIkNlcnRpZmljYXRlIGlzOlxuJXNcbiIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBwcmludC5wZm9ybWF0KHMuZ2V0cGVlcmNlcnQoKSkpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHMuY2xvc2UoKQorCisKK2RlZiBfdGVzdF9nZXRfc2VydmVyX2NlcnRpZmljYXRlKHRlc3QsIGhvc3QsIHBvcnQsIGNlcnQ9Tm9uZSk6CisgICAgcGVtID0gc3NsLmdldF9zZXJ2ZXJfY2VydGlmaWNhdGUoKGhvc3QsIHBvcnQpKQorICAgIGlmIG5vdCBwZW06CisgICAgICAgIHRlc3QuZmFpbCgiTm8gc2VydmVyIGNlcnRpZmljYXRlIG9uICVzOiVzISIgJSAoaG9zdCwgcG9ydCkpCisKKyAgICBwZW0gPSBzc2wuZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZSgoaG9zdCwgcG9ydCksIGNhX2NlcnRzPWNlcnQpCisgICAgaWYgbm90IHBlbToKKyAgICAgICAgdGVzdC5mYWlsKCJObyBzZXJ2ZXIgY2VydGlmaWNhdGUgb24gJXM6JXMhIiAlIChob3N0LCBwb3J0KSkKKyAgICBpZiBzdXBwb3J0LnZlcmJvc2U6CisgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlxuVmVyaWZpZWQgY2VydGlmaWNhdGUgZm9yICVzOiVzIGlzXG4lc1xuIiAlIChob3N0LCBwb3J0ICxwZW0pKQorCitkZWYgX3Rlc3RfZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZV9mYWlsKHRlc3QsIGhvc3QsIHBvcnQpOgorICAgIHRyeToKKyAgICAgICAgcGVtID0gc3NsLmdldF9zZXJ2ZXJfY2VydGlmaWNhdGUoKGhvc3QsIHBvcnQpLCBjYV9jZXJ0cz1DRVJURklMRSkKKyAgICBleGNlcHQgc3NsLlNTTEVycm9yIGFzIHg6CisgICAgICAgICNzaG91bGQgZmFpbAorICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6CisgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCIlc1xuIiAlIHgpCisgICAgZWxzZToKKyAgICAgICAgdGVzdC5mYWlsKCJHb3Qgc2VydmVyIGNlcnRpZmljYXRlICVzIGZvciAlczolcyEiICUgKHBlbSwgaG9zdCwgcG9ydCkpCisKKworaWYgX2hhdmVfdGhyZWFkczoKICAgICBmcm9tIHRlc3Quc3NsX3NlcnZlcnMgaW1wb3J0IG1ha2VfaHR0cHNfc2VydmVyCiAKICAgICBjbGFzcyBUaHJlYWRlZEVjaG9TZXJ2ZXIodGhyZWFkaW5nLlRocmVhZCk6CkBAIC0xOTEwLDYgKzE5MzIsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzdHJpcHBlZDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGVvZiwgc28gcXVpdCB0aGlzIGhhbmRsZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJ1bm5pbmcgPSBGYWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zb2NrID0gc2VsZi5zc2xjb25uLnVud3JhcCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTWFueSB0ZXN0cyBzaHV0IHRoZSBUQ1AgY29ubmVjdGlvbiBkb3duCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgd2l0aG91dCBhbiBTU0wgc2h1dGRvd24uIFRoaXMgY2F1c2VzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdW53cmFwKCkgdG8gcmFpc2UgT1NFcnJvciB3aXRoIGVycm5vPTAhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNzbGNvbm4gPSBOb25lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICBlbGlmIHN0cmlwcGVkID09IGInb3Zlcic6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlIGFuZCBzZWxmLnNlcnZlci5jb25uZWN0aW9uY2hhdHR5OgpAQCAtMjAzNyw3ICsyMDY4LDcgQEAKICAgICAgICAgICAgIGNsYXNzIENvbm5lY3Rpb25IYW5kbGVyIChhc3luY29yZS5kaXNwYXRjaGVyX3dpdGhfc2VuZCk6CiAKICAgICAgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgY29ubiwgY2VydGZpbGUpOgotICAgICAgICAgICAgICAgICAgICBzZWxmLnNvY2tldCA9IHNzbC53cmFwX3NvY2tldChjb25uLCBzZXJ2ZXJfc2lkZT1UcnVlLAorICAgICAgICAgICAgICAgICAgICBzZWxmLnNvY2tldCA9IHRlc3Rfd3JhcF9zb2NrZXQoY29ubiwgc2VydmVyX3NpZGU9VHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Y2VydGZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlKQogICAgICAgICAgICAgICAgICAgICBhc3luY29yZS5kaXNwYXRjaGVyX3dpdGhfc2VuZC5fX2luaXRfXyhzZWxmLCBzZWxmLnNvY2tldCkKQEAgLTIxNDUsNyArMjE3Niw4IEBACiAgICAgICAgICAgICBzZWxmLnNlcnZlci5jbG9zZSgpCiAKICAgICBkZWYgc2VydmVyX3BhcmFtc190ZXN0KGNsaWVudF9jb250ZXh0LCBzZXJ2ZXJfY29udGV4dCwgaW5kYXRhPWIiRk9PXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsIGNvbm5lY3Rpb25jaGF0dHk9RmFsc2UsIHNuaV9uYW1lPU5vbmUpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsIGNvbm5lY3Rpb25jaGF0dHk9RmFsc2UsIHNuaV9uYW1lPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uPU5vbmUpOgogICAgICAgICAiIiIKICAgICAgICAgTGF1bmNoIGEgc2VydmVyLCBjb25uZWN0IGEgY2xpZW50IHRvIGl0IGFuZCB0cnkgdmFyaW91cyByZWFkcwogICAgICAgICBhbmQgd3JpdGVzLgpAQCAtMjE1Niw3ICsyMTg4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25jaGF0dHk9RmFsc2UpCiAgICAgICAgIHdpdGggc2VydmVyOgogICAgICAgICAgICAgd2l0aCBjbGllbnRfY29udGV4dC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCksCi0gICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1zbmlfbmFtZSkgYXMgczoKKyAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPXNuaV9uYW1lLCBzZXNzaW9uPXNlc3Npb24pIGFzIHM6CiAgICAgICAgICAgICAgICAgcy5jb25uZWN0KChIT1NULCBzZXJ2ZXIucG9ydCkpCiAgICAgICAgICAgICAgICAgZm9yIGFyZyBpbiBbaW5kYXRhLCBieXRlYXJyYXkoaW5kYXRhKSwgbWVtb3J5dmlldyhpbmRhdGEpXToKICAgICAgICAgICAgICAgICAgICAgaWYgY29ubmVjdGlvbmNoYXR0eToKQEAgLTIxODQsNiArMjIxNiw4IEBACiAgICAgICAgICAgICAgICAgICAgICdjbGllbnRfYWxwbl9wcm90b2NvbCc6IHMuc2VsZWN0ZWRfYWxwbl9wcm90b2NvbCgpLAogICAgICAgICAgICAgICAgICAgICAnY2xpZW50X25wbl9wcm90b2NvbCc6IHMuc2VsZWN0ZWRfbnBuX3Byb3RvY29sKCksCiAgICAgICAgICAgICAgICAgICAgICd2ZXJzaW9uJzogcy52ZXJzaW9uKCksCisgICAgICAgICAgICAgICAgICAgICdzZXNzaW9uX3JldXNlZCc6IHMuc2Vzc2lvbl9yZXVzZWQsCisgICAgICAgICAgICAgICAgICAgICdzZXNzaW9uJzogcy5zZXNzaW9uLAogICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgcy5jbG9zZSgpCiAgICAgICAgICAgICBzdGF0c1snc2VydmVyX2FscG5fcHJvdG9jb2xzJ10gPSBzZXJ2ZXIuc2VsZWN0ZWRfYWxwbl9wcm90b2NvbHMKQEAgLTIyNTksMTIgKzIyOTMsNTMgQEAKICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJcbiIpCiAgICAgICAgICAgICBmb3IgcHJvdG9jb2wgaW4gUFJPVE9DT0xTOgorICAgICAgICAgICAgICAgIGlmIHByb3RvY29sIGluIHtzc2wuUFJPVE9DT0xfVExTX0NMSUVOVCwgc3NsLlBST1RPQ09MX1RMU19TRVJWRVJ9OgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHByb3RvY29sPXNzbC5fUFJPVE9DT0xfTkFNRVNbcHJvdG9jb2xdKToKICAgICAgICAgICAgICAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHByb3RvY29sKQogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmxvYWRfY2VydF9jaGFpbihDRVJURklMRSkKICAgICAgICAgICAgICAgICAgICAgc2VydmVyX3BhcmFtc190ZXN0KGNvbnRleHQsIGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwgY29ubmVjdGlvbmNoYXR0eT1UcnVlKQogCisgICAgICAgICAgICBjbGllbnRfY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFNfQ0xJRU5UKQorICAgICAgICAgICAgY2xpZW50X2NvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zKFNJR05JTkdfQ0EpCisgICAgICAgICAgICBzZXJ2ZXJfY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFNfU0VSVkVSKQorICAgICAgICAgICAgIyBzZXJ2ZXJfY29udGV4dC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoU0lHTklOR19DQSkKKyAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0LmxvYWRfY2VydF9jaGFpbihTSUdORURfQ0VSVEZJTEUyKQorCisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChjbGllbnQ9c3NsLlBST1RPQ09MX1RMU19DTElFTlQsIHNlcnZlcj1zc2wuUFJPVE9DT0xfVExTX1NFUlZFUik6CisgICAgICAgICAgICAgICAgc2VydmVyX3BhcmFtc190ZXN0KGNsaWVudF9jb250ZXh0PWNsaWVudF9jb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfY29udGV4dD1zZXJ2ZXJfY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsIGNvbm5lY3Rpb25jaGF0dHk9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25pX25hbWU9J2Zha2Vob3N0bmFtZScpCisKKyAgICAgICAgICAgIGNsaWVudF9jb250ZXh0LmNoZWNrX2hvc3RuYW1lID0gRmFsc2UKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGNsaWVudD1zc2wuUFJPVE9DT0xfVExTX1NFUlZFUiwgc2VydmVyPXNzbC5QUk9UT0NPTF9UTFNfQ0xJRU5UKToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNzbC5TU0xFcnJvcikgYXMgZToKKyAgICAgICAgICAgICAgICAgICAgc2VydmVyX3BhcmFtc190ZXN0KGNsaWVudF9jb250ZXh0PXNlcnZlcl9jb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2NvbnRleHQ9Y2xpZW50X2NvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwgY29ubmVjdGlvbmNoYXR0eT1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25pX25hbWU9J2Zha2Vob3N0bmFtZScpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignY2FsbGVkIGEgZnVuY3Rpb24geW91IHNob3VsZCBub3QgY2FsbCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoZS5leGNlcHRpb24pKQorCisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChjbGllbnQ9c3NsLlBST1RPQ09MX1RMU19TRVJWRVIsIHNlcnZlcj1zc2wuUFJPVE9DT0xfVExTX1NFUlZFUik6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzc2wuU1NMRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9wYXJhbXNfdGVzdChjbGllbnRfY29udGV4dD1zZXJ2ZXJfY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0PXNlcnZlcl9jb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsIGNvbm5lY3Rpb25jaGF0dHk9VHJ1ZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdjYWxsZWQgYSBmdW5jdGlvbiB5b3Ugc2hvdWxkIG5vdCBjYWxsJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihlLmV4Y2VwdGlvbikpCisKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGNsaWVudD1zc2wuUFJPVE9DT0xfVExTX0NMSUVOVCwgc2VydmVyPXNzbC5QUk9UT0NPTF9UTFNfQ0xJRU5UKToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNzbC5TU0xFcnJvcikgYXMgZToKKyAgICAgICAgICAgICAgICAgICAgc2VydmVyX3BhcmFtc190ZXN0KGNsaWVudF9jb250ZXh0PXNlcnZlcl9jb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2NvbnRleHQ9Y2xpZW50X2NvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwgY29ubmVjdGlvbmNoYXR0eT1UcnVlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2NhbGxlZCBhIGZ1bmN0aW9uIHlvdSBzaG91bGQgbm90IGNhbGwnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKGUuZXhjZXB0aW9uKSkKKworCiAgICAgICAgIGRlZiB0ZXN0X2dldHBlZXJjZXJ0KHNlbGYpOgogICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgogICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlxuIikKQEAgLTIzOTgsNyArMjQ3Myw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbmNoYXR0eT1GYWxzZSkKICAgICAgICAgICAgIHdpdGggc2VydmVyLCBcCiAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5zb2NrZXQoKSBhcyBzb2NrLCBcCi0gICAgICAgICAgICAgICAgICAgIHNzbC53cmFwX3NvY2tldChzb2NrLAorICAgICAgICAgICAgICAgICAgICB0ZXN0X3dyYXBfc29ja2V0KHNvY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Y2VydGZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NsX3ZlcnNpb249c3NsLlBST1RPQ09MX1RMU3YxKSBhcyBzOgogICAgICAgICAgICAgICAgIHRyeToKQEAgLTI0NDUsNyArMjUyMCw3IEBACiAgICAgICAgICAgICAgICAgICAgIGMuY29ubmVjdCgoSE9TVCwgcG9ydCkpCiAgICAgICAgICAgICAgICAgICAgIGxpc3RlbmVyX2dvbmUud2FpdCgpCiAgICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNzbF9zb2NrID0gc3NsLndyYXBfc29ja2V0KGMpCisgICAgICAgICAgICAgICAgICAgICAgICBzc2xfc29jayA9IHRlc3Rfd3JhcF9zb2NrZXQoYykKICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6CkBAIC0yNjM1LDcgKzI3MTAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgY2xpZW50OiAgcmVhZCAlciBmcm9tIHNlcnZlciwgc3RhcnRpbmcgVExTLi4uXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgbXNnKQotICAgICAgICAgICAgICAgICAgICAgICAgY29ubiA9IHNzbC53cmFwX3NvY2tldChzLCBzc2xfdmVyc2lvbj1zc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgICAgICAgICAgICAgICAgICBjb25uID0gdGVzdF93cmFwX3NvY2tldChzLCBzc2xfdmVyc2lvbj1zc2wuUFJPVE9DT0xfVExTdjEpCiAgICAgICAgICAgICAgICAgICAgICAgICB3cmFwcGVkID0gVHJ1ZQogICAgICAgICAgICAgICAgICAgICBlbGlmIGluZGF0YSA9PSBiIkVORFRMUyIgYW5kIG1zZy5zdGFydHN3aXRoKGIib2siKToKICAgICAgICAgICAgICAgICAgICAgICAgICMgRU5EVExTIG9rLCBzd2l0Y2ggYmFjayB0byBjbGVhciB0ZXh0CkBAIC0yNjk0LDcgKzI3NjksNyBAQAogICAgICAgICAgICAgaW5kYXRhID0gYiJGT09cbiIKICAgICAgICAgICAgIHNlcnZlciA9IEFzeW5jb3JlRWNob1NlcnZlcihDRVJURklMRSkKICAgICAgICAgICAgIHdpdGggc2VydmVyOgotICAgICAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldCgpKQorICAgICAgICAgICAgICAgIHMgPSB0ZXN0X3dyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSkKICAgICAgICAgICAgICAgICBzLmNvbm5lY3QoKCcxMjcuMC4wLjEnLCBzZXJ2ZXIucG9ydCkpCiAgICAgICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgogICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKApAQCAtMjcyNyw3ICsyODAyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uY2hhdHR5PUZhbHNlKQogICAgICAgICAgICAgd2l0aCBzZXJ2ZXI6Ci0gICAgICAgICAgICAgICAgcyA9IHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCksCisgICAgICAgICAgICAgICAgcyA9IHRlc3Rfd3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX3NpZGU9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0ZmlsZT1DRVJURklMRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhX2NlcnRzPUNFUlRGSUxFLApAQCAtMjc0NSwxMiArMjgyMCwxMyBAQAogICAgICAgICAgICAgICAgICAgICBjb3VudCwgYWRkciA9IHMucmVjdmZyb21faW50byhiKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gYls6Y291bnRdCiAKLSAgICAgICAgICAgICAgICAjIChuYW1lLCBtZXRob2QsIHdoZXRoZXIgdG8gZXhwZWN0IHN1Y2Nlc3MsICphcmdzKQorICAgICAgICAgICAgICAgICMgKG5hbWUsIG1ldGhvZCwgZXhwZWN0IHN1Y2Nlc3M/LCAqYXJncywgcmV0dXJuIHZhbHVlIGZ1bmMpCiAgICAgICAgICAgICAgICAgc2VuZF9tZXRob2RzID0gWwotICAgICAgICAgICAgICAgICAgICAoJ3NlbmQnLCBzLnNlbmQsIFRydWUsIFtdKSwKLSAgICAgICAgICAgICAgICAgICAgKCdzZW5kdG8nLCBzLnNlbmR0bywgRmFsc2UsIFsic29tZS5hZGRyZXNzIl0pLAotICAgICAgICAgICAgICAgICAgICAoJ3NlbmRhbGwnLCBzLnNlbmRhbGwsIFRydWUsIFtdKSwKKyAgICAgICAgICAgICAgICAgICAgKCdzZW5kJywgcy5zZW5kLCBUcnVlLCBbXSwgbGVuKSwKKyAgICAgICAgICAgICAgICAgICAgKCdzZW5kdG8nLCBzLnNlbmR0bywgRmFsc2UsIFsic29tZS5hZGRyZXNzIl0sIGxlbiksCisgICAgICAgICAgICAgICAgICAgICgnc2VuZGFsbCcsIHMuc2VuZGFsbCwgVHJ1ZSwgW10sIGxhbWJkYSB4OiBOb25lKSwKICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgIyAobmFtZSwgbWV0aG9kLCB3aGV0aGVyIHRvIGV4cGVjdCBzdWNjZXNzLCAqYXJncykKICAgICAgICAgICAgICAgICByZWN2X21ldGhvZHMgPSBbCiAgICAgICAgICAgICAgICAgICAgICgncmVjdicsIHMucmVjdiwgVHJ1ZSwgW10pLAogICAgICAgICAgICAgICAgICAgICAoJ3JlY3Zmcm9tJywgcy5yZWN2ZnJvbSwgRmFsc2UsIFsic29tZS5hZGRyZXNzIl0pLApAQCAtMjc1OSwxMCArMjgzNSwxMyBAQAogICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICBkYXRhX3ByZWZpeCA9ICJQUkVGSVhfIgogCi0gICAgICAgICAgICAgICAgZm9yIG1ldGhfbmFtZSwgc2VuZF9tZXRoLCBleHBlY3Rfc3VjY2VzcywgYXJncyBpbiBzZW5kX21ldGhvZHM6CisgICAgICAgICAgICAgICAgZm9yIChtZXRoX25hbWUsIHNlbmRfbWV0aCwgZXhwZWN0X3N1Y2Nlc3MsIGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICByZXRfdmFsX21ldGgpIGluIHNlbmRfbWV0aG9kczoKICAgICAgICAgICAgICAgICAgICAgaW5kYXRhID0gKGRhdGFfcHJlZml4ICsgbWV0aF9uYW1lKS5lbmNvZGUoJ2FzY2lpJykKICAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgc2VuZF9tZXRoKGluZGF0YSwgKmFyZ3MpCisgICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBzZW5kX21ldGgoaW5kYXRhLCAqYXJncykKKyAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9ICJzZW5kaW5nIHdpdGgge30iLmZvcm1hdChtZXRoX25hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJldCwgcmV0X3ZhbF9tZXRoKGluZGF0YSksIG1zZz1tc2cpCiAgICAgICAgICAgICAgICAgICAgICAgICBvdXRkYXRhID0gcy5yZWFkKCkKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG91dGRhdGEgIT0gaW5kYXRhLmxvd2VyKCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKApAQCAtMjg0Nyw3ICsyOTI2LDcgQEAKICAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZXJ2ZXIuX19leGl0X18sIE5vbmUsIE5vbmUpCiAgICAgICAgICAgICBzID0gc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKChIT1NULCBzZXJ2ZXIucG9ydCkpCiAgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAocy5jbG9zZSkKLSAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQocywgc3VwcHJlc3NfcmFnZ2VkX2VvZnM9RmFsc2UpCisgICAgICAgICAgICBzID0gdGVzdF93cmFwX3NvY2tldChzLCBzdXBwcmVzc19yYWdnZWRfZW9mcz1GYWxzZSkKICAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzLmNsb3NlKQogCiAgICAgICAgICAgICAjIHJlY3YvcmVhZCgwKSBzaG91bGQgcmV0dXJuIG5vIGRhdGEKQEAgLTI4NjksNyArMjk0OCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbmNoYXR0eT1GYWxzZSkKICAgICAgICAgICAgIHdpdGggc2VydmVyOgotICAgICAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldCgpLAorICAgICAgICAgICAgICAgIHMgPSB0ZXN0X3dyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9zaWRlPUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Q0VSVEZJTEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1DRVJURklMRSwKQEAgLTI5MjMsMTIgKzMwMDIsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgYy5jb25uZWN0KChob3N0LCBwb3J0KSkKICAgICAgICAgICAgICAgICAgICAgIyBXaWxsIGF0dGVtcHQgaGFuZHNoYWtlIGFuZCB0aW1lIG91dAogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KHNvY2tldC50aW1lb3V0LCAidGltZWQgb3V0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2wud3JhcF9zb2NrZXQsIGMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF93cmFwX3NvY2tldCwgYykKICAgICAgICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgICAgICBjLmNsb3NlKCkKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIGMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKQotICAgICAgICAgICAgICAgICAgICBjID0gc3NsLndyYXBfc29ja2V0KGMpCisgICAgICAgICAgICAgICAgICAgIGMgPSB0ZXN0X3dyYXBfc29ja2V0KGMpCiAgICAgICAgICAgICAgICAgICAgIGMuc2V0dGltZW91dCgwLjIpCiAgICAgICAgICAgICAgICAgICAgICMgV2lsbCBhdHRlbXB0IGhhbmRzaGFrZSBhbmQgdGltZSBvdXQKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChzb2NrZXQudGltZW91dCwgInRpbWVkIG91dCIsCkBAIC0yOTUxLDYgKzMwMzAsNyBAQAogICAgICAgICAgICAgaG9zdCA9ICIxMjcuMC4wLjEiCiAgICAgICAgICAgICBwb3J0ID0gc3VwcG9ydC5iaW5kX3BvcnQoc2VydmVyKQogICAgICAgICAgICAgc2VydmVyID0gY29udGV4dC53cmFwX3NvY2tldChzZXJ2ZXIsIHNlcnZlcl9zaWRlPVRydWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VydmVyLnNlcnZlcl9zaWRlKQogCiAgICAgICAgICAgICBldnQgPSB0aHJlYWRpbmcuRXZlbnQoKQogICAgICAgICAgICAgcmVtb3RlID0gTm9uZQpAQCAtMzA1Myw3ICszMTMzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uY2hhdHR5PUZhbHNlKQogICAgICAgICAgICAgd2l0aCBzZXJ2ZXI6Ci0gICAgICAgICAgICAgICAgcyA9IHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCksCisgICAgICAgICAgICAgICAgcyA9IHRlc3Rfd3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX3NpZGU9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0ZmlsZT1DRVJURklMRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhX2NlcnRzPUNFUlRGSUxFLApAQCAtMzA3OCw3ICszMTU4LDcgQEAKICAgICAgICAgICAgICAgICBzLmNsb3NlKCkKIAogICAgICAgICAgICAgICAgICMgbm93LCBhZ2FpbgotICAgICAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldCgpLAorICAgICAgICAgICAgICAgIHMgPSB0ZXN0X3dyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9zaWRlPUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Q0VSVEZJTEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1DRVJURklMRSwKQEAgLTMzODgsNiArMzQ2OCwxMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHMuc2VuZGZpbGUoZmlsZSkKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5yZWN2KDEwMjQpLCBURVNUX0RBVEEpCiAKKyAgICAgICAgZGVmIHRlc3Rfc2Vzc2lvbihzZWxmKToKKyAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgICAgc2VydmVyX2NvbnRleHQubG9hZF9jZXJ0X2NoYWluKFNJR05FRF9DRVJURklMRSkKKyAgICAgICAgICAgIGNsaWVudF9jb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgICAgY2xpZW50X2NvbnRleHQudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAorICAgICAgICAgICAgY2xpZW50X2NvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zKFNJR05JTkdfQ0EpCisKKyAgICAgICAgICAgICMgZmlyc3QgY29ubmVjdGlvbiB3aXRob3V0IHNlc3Npb24KKyAgICAgICAgICAgIHN0YXRzID0gc2VydmVyX3BhcmFtc190ZXN0KGNsaWVudF9jb250ZXh0LCBzZXJ2ZXJfY29udGV4dCkKKyAgICAgICAgICAgIHNlc3Npb24gPSBzdGF0c1snc2Vzc2lvbiddCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2Vzc2lvbi5pZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihzZXNzaW9uLnRpbWUsIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoc2Vzc2lvbi50aW1lb3V0LCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlc3Npb24uaGFzX3RpY2tldCkKKyAgICAgICAgICAgIGlmIHNzbC5PUEVOU1NMX1ZFUlNJT05fSU5GTyA+ICgxLCAwLCAxKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoc2Vzc2lvbi50aWNrZXRfbGlmZXRpbWVfaGludCwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc3RhdHNbJ3Nlc3Npb25fcmV1c2VkJ10pCisgICAgICAgICAgICBzZXNzX3N0YXQgPSBzZXJ2ZXJfY29udGV4dC5zZXNzaW9uX3N0YXRzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vzc19zdGF0WydhY2NlcHQnXSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vzc19zdGF0WydoaXRzJ10sIDApCisKKyAgICAgICAgICAgICMgcmV1c2Ugc2Vzc2lvbgorICAgICAgICAgICAgc3RhdHMgPSBzZXJ2ZXJfcGFyYW1zX3Rlc3QoY2xpZW50X2NvbnRleHQsIHNlcnZlcl9jb250ZXh0LCBzZXNzaW9uPXNlc3Npb24pCisgICAgICAgICAgICBzZXNzX3N0YXQgPSBzZXJ2ZXJfY29udGV4dC5zZXNzaW9uX3N0YXRzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vzc19zdGF0WydhY2NlcHQnXSwgMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vzc19zdGF0WydoaXRzJ10sIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3RhdHNbJ3Nlc3Npb25fcmV1c2VkJ10pCisgICAgICAgICAgICBzZXNzaW9uMiA9IHN0YXRzWydzZXNzaW9uJ10KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vzc2lvbjIuaWQsIHNlc3Npb24uaWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlc3Npb24yLCBzZXNzaW9uKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdChzZXNzaW9uMiwgc2Vzc2lvbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHNlc3Npb24yLnRpbWUsIHNlc3Npb24udGltZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHNlc3Npb24yLnRpbWVvdXQsIHNlc3Npb24udGltZW91dCkKKworICAgICAgICAgICAgIyBhbm90aGVyIG9uZSB3aXRob3V0IHNlc3Npb24KKyAgICAgICAgICAgIHN0YXRzID0gc2VydmVyX3BhcmFtc190ZXN0KGNsaWVudF9jb250ZXh0LCBzZXJ2ZXJfY29udGV4dCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc3RhdHNbJ3Nlc3Npb25fcmV1c2VkJ10pCisgICAgICAgICAgICBzZXNzaW9uMyA9IHN0YXRzWydzZXNzaW9uJ10KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoc2Vzc2lvbjMuaWQsIHNlc3Npb24uaWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHNlc3Npb24zLCBzZXNzaW9uKQorICAgICAgICAgICAgc2Vzc19zdGF0ID0gc2VydmVyX2NvbnRleHQuc2Vzc2lvbl9zdGF0cygpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlc3Nfc3RhdFsnYWNjZXB0J10sIDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlc3Nfc3RhdFsnaGl0cyddLCAxKQorCisgICAgICAgICAgICAjIHJldXNlIHNlc3Npb24gYWdhaW4KKyAgICAgICAgICAgIHN0YXRzID0gc2VydmVyX3BhcmFtc190ZXN0KGNsaWVudF9jb250ZXh0LCBzZXJ2ZXJfY29udGV4dCwgc2Vzc2lvbj1zZXNzaW9uKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN0YXRzWydzZXNzaW9uX3JldXNlZCddKQorICAgICAgICAgICAgc2Vzc2lvbjQgPSBzdGF0c1snc2Vzc2lvbiddCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlc3Npb240LmlkLCBzZXNzaW9uLmlkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXNzaW9uNCwgc2Vzc2lvbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHNlc3Npb240LnRpbWUsIHNlc3Npb24udGltZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHNlc3Npb240LnRpbWVvdXQsIHNlc3Npb24udGltZW91dCkKKyAgICAgICAgICAgIHNlc3Nfc3RhdCA9IHNlcnZlcl9jb250ZXh0LnNlc3Npb25fc3RhdHMoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXNzX3N0YXRbJ2FjY2VwdCddLCA0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXNzX3N0YXRbJ2hpdHMnXSwgMikKKworICAgICAgICBkZWYgdGVzdF9zZXNzaW9uX2hhbmRsaW5nKHNlbGYpOgorICAgICAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCisgICAgICAgICAgICBjb250ZXh0LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKKyAgICAgICAgICAgIGNvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zKENFUlRGSUxFKQorICAgICAgICAgICAgY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEUpCisKKyAgICAgICAgICAgIGNvbnRleHQyID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgICAgIGNvbnRleHQyLnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKKyAgICAgICAgICAgIGNvbnRleHQyLmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhDRVJURklMRSkKKyAgICAgICAgICAgIGNvbnRleHQyLmxvYWRfY2VydF9jaGFpbihDRVJURklMRSkKKworICAgICAgICAgICAgc2VydmVyID0gVGhyZWFkZWRFY2hvU2VydmVyKGNvbnRleHQ9Y29udGV4dCwgY2hhdHR5PUZhbHNlKQorICAgICAgICAgICAgd2l0aCBzZXJ2ZXI6CisgICAgICAgICAgICAgICAgd2l0aCBjb250ZXh0LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSkgYXMgczoKKyAgICAgICAgICAgICAgICAgICAgIyBzZXNzaW9uIGlzIE5vbmUgYmVmb3JlIGhhbmRzaGFrZQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuc2Vzc2lvbiwgTm9uZSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLnNlc3Npb25fcmV1c2VkLCBOb25lKQorICAgICAgICAgICAgICAgICAgICBzLmNvbm5lY3QoKEhPU1QsIHNlcnZlci5wb3J0KSkKKyAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbiA9IHMuc2Vzc2lvbgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2Vzc2lvbikKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICAgICBzLnNlc3Npb24gPSBvYmplY3QKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZS5leGNlcHRpb24pLCAnVmFsdWUgaXMgbm90IGEgU1NMU2Vzc2lvbi4nKQorCisgICAgICAgICAgICAgICAgd2l0aCBjb250ZXh0LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSkgYXMgczoKKyAgICAgICAgICAgICAgICAgICAgcy5jb25uZWN0KChIT1NULCBzZXJ2ZXIucG9ydCkpCisgICAgICAgICAgICAgICAgICAgICMgY2Fubm90IHNldCBzZXNzaW9uIGFmdGVyIGhhbmRzaGFrZQorICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICAgICBzLnNlc3Npb24gPSBzZXNzaW9uCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUuZXhjZXB0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ2Fubm90IHNldCBzZXNzaW9uIGFmdGVyIGhhbmRzaGFrZS4nKQorCisgICAgICAgICAgICAgICAgd2l0aCBjb250ZXh0LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSkgYXMgczoKKyAgICAgICAgICAgICAgICAgICAgIyBjYW4gc2V0IHNlc3Npb24gYmVmb3JlIGhhbmRzaGFrZSBhbmQgYmVmb3JlIHRoZQorICAgICAgICAgICAgICAgICAgICAjIGNvbm5lY3Rpb24gd2FzIGVzdGFibGlzaGVkCisgICAgICAgICAgICAgICAgICAgIHMuc2Vzc2lvbiA9IHNlc3Npb24KKyAgICAgICAgICAgICAgICAgICAgcy5jb25uZWN0KChIT1NULCBzZXJ2ZXIucG9ydCkpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5zZXNzaW9uLmlkLCBzZXNzaW9uLmlkKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuc2Vzc2lvbiwgc2Vzc2lvbikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLnNlc3Npb25fcmV1c2VkLCBUcnVlKQorCisgICAgICAgICAgICAgICAgd2l0aCBjb250ZXh0Mi53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCkpIGFzIHM6CisgICAgICAgICAgICAgICAgICAgICMgY2Fubm90IHJlLXVzZSBzZXNzaW9uIHdpdGggYSBkaWZmZXJlbnQgU1NMQ29udGV4dAorICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICAgICBzLnNlc3Npb24gPSBzZXNzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICBzLmNvbm5lY3QoKEhPU1QsIHNlcnZlci5wb3J0KSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZS5leGNlcHRpb24pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdTZXNzaW9uIHJlZmVycyB0byBhIGRpZmZlcmVudCBTU0xDb250ZXh0LicpCisKIAogZGVmIHRlc3RfbWFpbih2ZXJib3NlPUZhbHNlKToKICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6CkBAIC0zNDAwLDcgKzM1ODUsNyBAQAogICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAgICAgICAgICAgICB3YXJuaW5ncy5maWx0ZXJ3YXJuaW5ncygKICAgICAgICAgICAgICAgICAnaWdub3JlJywKLSAgICAgICAgICAgICAgICAnZGlzdFwoXCkgYW5kIGxpbnV4X2Rpc3RyaWJ1dGlvblwoXCkgJworICAgICAgICAgICAgICAgIHInZGlzdFwoXCkgYW5kIGxpbnV4X2Rpc3RyaWJ1dGlvblwoXCkgJwogICAgICAgICAgICAgICAgICdmdW5jdGlvbnMgYXJlIGRlcHJlY2F0ZWQgLionLAogICAgICAgICAgICAgICAgIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsCiAgICAgICAgICAgICApCkBAIC0zNDIyLDE4ICszNjA3LDIwIEBACiAgICAgICAgICAgICBwYXNzCiAKICAgICBmb3IgZmlsZW5hbWUgaW4gWwotICAgICAgICBDRVJURklMRSwgUkVNT1RFX1JPT1RfQ0VSVCwgQllURVNfQ0VSVEZJTEUsCisgICAgICAgIENFUlRGSUxFLCBCWVRFU19DRVJURklMRSwKICAgICAgICAgT05MWUNFUlQsIE9OTFlLRVksIEJZVEVTX09OTFlDRVJULCBCWVRFU19PTkxZS0VZLAogICAgICAgICBTSUdORURfQ0VSVEZJTEUsIFNJR05FRF9DRVJURklMRTIsIFNJR05JTkdfQ0EsCiAgICAgICAgIEJBRENFUlQsIEJBREtFWSwgRU1QVFlDRVJUXToKICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGZpbGVuYW1lKToKICAgICAgICAgICAgIHJhaXNlIHN1cHBvcnQuVGVzdEZhaWxlZCgiQ2FuJ3QgcmVhZCBjZXJ0aWZpY2F0ZSBmaWxlICVyIiAlIGZpbGVuYW1lKQogCi0gICAgdGVzdHMgPSBbQ29udGV4dFRlc3RzLCBCYXNpY1NvY2tldFRlc3RzLCBTU0xFcnJvclRlc3RzLCBNZW1vcnlCSU9UZXN0c10KKyAgICB0ZXN0cyA9IFsKKyAgICAgICAgQ29udGV4dFRlc3RzLCBCYXNpY1NvY2tldFRlc3RzLCBTU0xFcnJvclRlc3RzLCBNZW1vcnlCSU9UZXN0cywKKyAgICAgICAgU2ltcGxlQmFja2dyb3VuZFRlc3RzLAorICAgIF0KIAogICAgIGlmIHN1cHBvcnQuaXNfcmVzb3VyY2VfZW5hYmxlZCgnbmV0d29yaycpOgogICAgICAgICB0ZXN0cy5hcHBlbmQoTmV0d29ya2VkVGVzdHMpCi0gICAgICAgIHRlc3RzLmFwcGVuZChOZXR3b3JrZWRCSU9UZXN0cykKIAogICAgIGlmIF9oYXZlX3RocmVhZHM6CiAgICAgICAgIHRocmVhZF9pbmZvID0gc3VwcG9ydC50aHJlYWRpbmdfc2V0dXAoKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdGF0LnB5IGIvTGliL3Rlc3QvdGVzdF9zdGF0LnB5CmluZGV4IGYxYTU5MzguLmNkMDJhNmUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3RhdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N0YXQucHkKQEAgLTEsNyArMSw3IEBACiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBvcwogaW1wb3J0IHN5cwotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgaW1wb3J0X2ZyZXNoX21vZHVsZQorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgaW1wb3J0X2ZyZXNoX21vZHVsZSwgYW5kcm9pZF9ub3Rfcm9vdAogCiBjX3N0YXQgPSBpbXBvcnRfZnJlc2hfbW9kdWxlKCdzdGF0JywgZnJlc2g9Wydfc3RhdCddKQogcHlfc3RhdCA9IGltcG9ydF9mcmVzaF9tb2R1bGUoJ3N0YXQnLCBibG9ja2VkPVsnX3N0YXQnXSkKQEAgLTE2OCw2ICsxNjgsNyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRTX0lTKCJMTksiLCBzdF9tb2RlKQogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ21rZmlmbycpLCAnb3MubWtmaWZvIG5vdCBhdmFpbGFibGUnKQorICAgIEB1bml0dGVzdC5za2lwSWYoYW5kcm9pZF9ub3Rfcm9vdCwgIm1rZmlmbyBub3QgYWxsb3dlZCwgbm9uIHJvb3QgdXNlciIpCiAgICAgZGVmIHRlc3RfZmlmbyhzZWxmKToKICAgICAgICAgb3MubWtmaWZvKFRFU1RGTiwgMG83MDApCiAgICAgICAgIHN0X21vZGUsIG1vZGVzdHIgPSBzZWxmLmdldF9tb2RlKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3RhdGlzdGljcy5weSBiL0xpYi90ZXN0L3Rlc3Rfc3RhdGlzdGljcy5weQppbmRleCAwMDg5YWU4Li40YjNmZDM2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N0YXRpc3RpY3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdGF0aXN0aWNzLnB5CkBAIC0yMSw2ICsyMSwxMCBAQAogCiAjID09PSBIZWxwZXIgZnVuY3Rpb25zIGFuZCBjbGFzcyA9PT0KIAorZGVmIHNpZ24oeCk6CisgICAgIiIiUmV0dXJuIC0xLjAgZm9yIG5lZ2F0aXZlcywgaW5jbHVkaW5nIC0wLjAsIG90aGVyd2lzZSArMS4wLiIiIgorICAgIHJldHVybiBtYXRoLmNvcHlzaWduKDEsIHgpCisKIGRlZiBfbmFuX2VxdWFsKGEsIGIpOgogICAgICIiIlJldHVybiBUcnVlIGlmIGEgYW5kIGIgYXJlIGJvdGggdGhlIHNhbWUga2luZCBvZiBOQU4uCiAKQEAgLTI2NCw2ICsyNjgsMTMgQEAKICMgPT09IFRlc3QgdGhlIGhlbHBlcnMgPT09CiAjID09PT09PT09PT09PT09PT09PT09PT09PQogCitjbGFzcyBUZXN0U2lnbih1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiVGVzdCB0aGF0IHRoZSBoZWxwZXIgZnVuY3Rpb24gc2lnbigpIHdvcmtzIGNvcnJlY3RseS4iIiIKKyAgICBkZWYgdGVzdFplcm9lcyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgc2lnbmVkIHplcm9lcyByZXBvcnQgdGhlaXIgc2lnbiBjb3JyZWN0bHkuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2lnbigwLjApLCArMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaWduKC0wLjApLCAtMSkKKwogCiAjIC0tLSBUZXN0cyBmb3IgYXBwcm94X2VxdWFsIC0tLQogCkBAIC02NTksNyArNjcwLDcgQEAKICAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5mbGFncy5vcHRpbWl6ZSA+PSAyLAogICAgICAgICAgICAgICAgICAgICAgIkRvY3N0cmluZ3MgYXJlIG9taXR0ZWQgd2l0aCAtT08gYW5kIGFib3ZlIikKICAgICBkZWYgdGVzdF9kb2NfdGVzdHMoc2VsZik6Ci0gICAgICAgIGZhaWxlZCwgdHJpZWQgPSBkb2N0ZXN0LnRlc3Rtb2Qoc3RhdGlzdGljcykKKyAgICAgICAgZmFpbGVkLCB0cmllZCA9IGRvY3Rlc3QudGVzdG1vZChzdGF0aXN0aWNzLCBvcHRpb25mbGFncz1kb2N0ZXN0LkVMTElQU0lTKQogICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIodHJpZWQsIDApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmFpbGVkLCAwKQogCkBAIC03MDIsOSArNzEzLDkgQEAKICAgICBkZWYgdGVzdF9kZWNpbWFsKHNlbGYpOgogICAgICAgICBEID0gRGVjaW1hbAogICAgICAgICBfZXhhY3RfcmF0aW8gPSBzdGF0aXN0aWNzLl9leGFjdF9yYXRpbwotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9leGFjdF9yYXRpbyhEKCIwLjEyNSIpKSwgKDEyNSwgMTAwMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2V4YWN0X3JhdGlvKEQoIjEyLjM0NSIpKSwgKDEyMzQ1LCAxMDAwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZXhhY3RfcmF0aW8oRCgiLTEuOTgiKSksICgtMTk4LCAxMDApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9leGFjdF9yYXRpbyhEKCIwLjEyNSIpKSwgKDEsIDgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9leGFjdF9yYXRpbyhEKCIxMi4zNDUiKSksICgyNDY5LCAyMDApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9leGFjdF9yYXRpbyhEKCItMS45OCIpKSwgKC05OSwgNTApKQogCiAgICAgZGVmIHRlc3RfaW5mKHNlbGYpOgogICAgICAgICBJTkYgPSBmbG9hdCgiSU5GIikKQEAgLTc0MywxOCArNzU0LDE4IEBACiAKIAogY2xhc3MgRGVjaW1hbFRvUmF0aW9UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAjIFRlc3QgX2RlY2ltYWxfdG9fcmF0aW8gcHJpdmF0ZSBmdW5jdGlvbi4KKyAgICAjIFRlc3QgX2V4YWN0X3JhdGlvIHByaXZhdGUgZnVuY3Rpb24uCiAKICAgICBkZWYgdGVzdF9pbmZpbml0eShzZWxmKToKICAgICAgICAgIyBUZXN0IHRoYXQgSU5GcyBhcmUgaGFuZGxlZCBjb3JyZWN0bHkuCiAgICAgICAgIGluZiA9IERlY2ltYWwoJ0lORicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdGlzdGljcy5fZGVjaW1hbF90b19yYXRpbyhpbmYpLCAoaW5mLCBOb25lKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0aXN0aWNzLl9kZWNpbWFsX3RvX3JhdGlvKC1pbmYpLCAoLWluZiwgTm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdGlzdGljcy5fZXhhY3RfcmF0aW8oaW5mKSwgKGluZiwgTm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdGlzdGljcy5fZXhhY3RfcmF0aW8oLWluZiksICgtaW5mLCBOb25lKSkKIAogICAgIGRlZiB0ZXN0X25hbihzZWxmKToKICAgICAgICAgIyBUZXN0IHRoYXQgTkFOcyBhcmUgaGFuZGxlZCBjb3JyZWN0bHkuCiAgICAgICAgIGZvciBuYW4gaW4gKERlY2ltYWwoJ05BTicpLCBEZWNpbWFsKCdzTkFOJykpOgotICAgICAgICAgICAgbnVtLCBkZW4gPSBzdGF0aXN0aWNzLl9kZWNpbWFsX3RvX3JhdGlvKG5hbikKKyAgICAgICAgICAgIG51bSwgZGVuID0gc3RhdGlzdGljcy5fZXhhY3RfcmF0aW8obmFuKQogICAgICAgICAgICAgIyBCZWNhdXNlIE5BTnMgYWx3YXlzIGNvbXBhcmUgbm9uLWVxdWFsLCB3ZSBjYW5ub3QgdXNlIGFzc2VydEVxdWFsLgogICAgICAgICAgICAgIyBOb3IgY2FuIHdlIHVzZSBhbiBpZGVudGl0eSB0ZXN0LCBhcyB3ZSBkb24ndCBndWFyYW50ZWUgYW55dGhpbmcKICAgICAgICAgICAgICMgYWJvdXQgdGhlIG9iamVjdCBpZGVudGl0eS4KQEAgLTc2NywzMCArNzc4LDMwIEBACiAgICAgICAgIGZvciBkIGluIG51bWJlcnM6CiAgICAgICAgICAgICAjIEZpcnN0IHRlc3QgcG9zaXRpdmUgZGVjaW1hbHMuCiAgICAgICAgICAgICBhc3NlcnQgZCA+IDAKLSAgICAgICAgICAgIG51bSwgZGVuID0gc3RhdGlzdGljcy5fZGVjaW1hbF90b19yYXRpbyhkKQorICAgICAgICAgICAgbnVtLCBkZW4gPSBzdGF0aXN0aWNzLl9leGFjdF9yYXRpbyhkKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwobnVtLCAwKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGRlbiwgMCkKICAgICAgICAgICAgICMgVGhlbiB0ZXN0IG5lZ2F0aXZlIGRlY2ltYWxzLgotICAgICAgICAgICAgbnVtLCBkZW4gPSBzdGF0aXN0aWNzLl9kZWNpbWFsX3RvX3JhdGlvKC1kKQorICAgICAgICAgICAgbnVtLCBkZW4gPSBzdGF0aXN0aWNzLl9leGFjdF9yYXRpbygtZCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKG51bSwgMCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihkZW4sIDApCiAKICAgICBkZWYgdGVzdF9uZWdhdGl2ZV9leHBvbmVudChzZWxmKToKICAgICAgICAgIyBUZXN0IHJlc3VsdCB3aGVuIHRoZSBleHBvbmVudCBpcyBuZWdhdGl2ZS4KLSAgICAgICAgdCA9IHN0YXRpc3RpY3MuX2RlY2ltYWxfdG9fcmF0aW8oRGVjaW1hbCgiMC4xMjM0IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodCwgKDEyMzQsIDEwMDAwKSkKKyAgICAgICAgdCA9IHN0YXRpc3RpY3MuX2V4YWN0X3JhdGlvKERlY2ltYWwoIjAuMTIzNCIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQsICg2MTcsIDUwMDApKQogCiAgICAgZGVmIHRlc3RfcG9zaXRpdmVfZXhwb25lbnQoc2VsZik6CiAgICAgICAgICMgVGVzdCByZXN1bHRzIHdoZW4gdGhlIGV4cG9uZW50IGlzIHBvc2l0aXZlLgotICAgICAgICB0ID0gc3RhdGlzdGljcy5fZGVjaW1hbF90b19yYXRpbyhEZWNpbWFsKCIxLjIzNGU3IikpCisgICAgICAgIHQgPSBzdGF0aXN0aWNzLl9leGFjdF9yYXRpbyhEZWNpbWFsKCIxLjIzNGU3IikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodCwgKDEyMzQwMDAwLCAxKSkKIAogICAgIGRlZiB0ZXN0X3JlZ3Jlc3Npb25fMjA1MzYoc2VsZik6CiAgICAgICAgICMgUmVncmVzc2lvbiB0ZXN0IGZvciBpc3N1ZSAyMDUzNi4KICAgICAgICAgIyBTZWUgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTIwNTM2Ci0gICAgICAgIHQgPSBzdGF0aXN0aWNzLl9kZWNpbWFsX3RvX3JhdGlvKERlY2ltYWwoIjFlMiIpKQorICAgICAgICB0ID0gc3RhdGlzdGljcy5fZXhhY3RfcmF0aW8oRGVjaW1hbCgiMWUyIikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodCwgKDEwMCwgMSkpCi0gICAgICAgIHQgPSBzdGF0aXN0aWNzLl9kZWNpbWFsX3RvX3JhdGlvKERlY2ltYWwoIjEuNDdlNSIpKQorICAgICAgICB0ID0gc3RhdGlzdGljcy5fZXhhY3RfcmF0aW8oRGVjaW1hbCgiMS40N2U1IikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodCwgKDE0NzAwMCwgMSkpCiAKIApAQCAtOTcxLDYgKzk4MiwzNCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKF9uYW5fZXF1YWwoeCwgbmFuKSkKIAogCitjbGFzcyBGYWlsTmVnVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiVGVzdCBfZmFpbF9uZWcgcHJpdmF0ZSBmdW5jdGlvbi4iIiIKKworICAgIGRlZiB0ZXN0X3Bhc3NfdGhyb3VnaChzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgdmFsdWVzIGFyZSBwYXNzZWQgdGhyb3VnaCB1bmNoYW5nZWQuCisgICAgICAgIHZhbHVlcyA9IFsxLCAyLjAsIEZyYWN0aW9uKDMpLCBEZWNpbWFsKDQpXQorICAgICAgICBuZXcgPSBsaXN0KHN0YXRpc3RpY3MuX2ZhaWxfbmVnKHZhbHVlcykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWVzLCBuZXcpCisKKyAgICBkZWYgdGVzdF9uZWdhdGl2ZXNfcmFpc2Uoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IG5lZ2F0aXZlcyByYWlzZSBhbiBleGNlcHRpb24uCisgICAgICAgIGZvciB4IGluIFsxLCAyLjAsIEZyYWN0aW9uKDMpLCBEZWNpbWFsKDQpXToKKyAgICAgICAgICAgIHNlcSA9IFsteF0KKyAgICAgICAgICAgIGl0ID0gc3RhdGlzdGljcy5fZmFpbF9uZWcoc2VxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc3RhdGlzdGljcy5TdGF0aXN0aWNzRXJyb3IsIG5leHQsIGl0KQorCisgICAgZGVmIHRlc3RfZXJyb3JfbXNnKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBhIGdpdmVuIGVycm9yIG1lc3NhZ2UgaXMgdXNlZC4KKyAgICAgICAgbXNnID0gImJhZG5lc3MgIyVkIiAlIHJhbmRvbS5yYW5kaW50KDEwMDAwLCA5OTk5OSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbmV4dChzdGF0aXN0aWNzLl9mYWlsX25lZyhbLTFdLCBtc2cpKQorICAgICAgICBleGNlcHQgc3RhdGlzdGljcy5TdGF0aXN0aWNzRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGVycm1zZyA9IGUuYXJnc1swXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJleHBlY3RlZCBleGNlcHRpb24sIGJ1dCBpdCBkaWRuJ3QgaGFwcGVuIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnJtc2csIG1zZykKKworCiAjID09PSBUZXN0cyBmb3IgcHVibGljIGZ1bmN0aW9ucyA9PT0KIAogY2xhc3MgVW5pdmFyaWF0ZUNvbW1vbk1peGluOgpAQCAtMTA4MiwxMyArMTEyMSwxMyBAQAogICAgIE5vdCBhbGwgdGVzdHMgdG8gZG8gd2l0aCB0eXBlcyBuZWVkIGdvIGluIHRoaXMgY2xhc3MuIE9ubHkgdGhvc2UgdGhhdAogICAgIHJlbHkgb24gdGhlIGZ1bmN0aW9uIHJldHVybmluZyB0aGUgc2FtZSB0eXBlIGFzIGl0cyBpbnB1dCBkYXRhLgogICAgICIiIgotICAgIGRlZiB0ZXN0X3R5cGVzX2NvbnNlcnZlZChzZWxmKToKLSAgICAgICAgIyBUZXN0IHRoYXQgZnVuY3Rpb25zIGtlZXBzIHRoZSBzYW1lIHR5cGUgYXMgdGhlaXIgZGF0YSBwb2ludHMuCi0gICAgICAgICMgKEV4Y2x1ZGVzIG1peGVkIGRhdGEgdHlwZXMuKSBUaGlzIG9ubHkgdGVzdHMgdGhlIHR5cGUgb2YgdGhlIHJldHVybgotICAgICAgICAjIHJlc3VsdCwgbm90IHRoZSB2YWx1ZS4KKyAgICBkZWYgcHJlcGFyZV90eXBlc19mb3JfY29uc2VydmF0aW9uX3Rlc3Qoc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgdHlwZXMgd2hpY2ggYXJlIGV4cGVjdGVkIHRvIGJlIGNvbnNlcnZlZC4iIiIKICAgICAgICAgY2xhc3MgTXlGbG9hdChmbG9hdCk6CiAgICAgICAgICAgICBkZWYgX190cnVlZGl2X18oc2VsZiwgb3RoZXIpOgogICAgICAgICAgICAgICAgIHJldHVybiB0eXBlKHNlbGYpKHN1cGVyKCkuX190cnVlZGl2X18ob3RoZXIpKQorICAgICAgICAgICAgZGVmIF9fcnRydWVkaXZfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGUoc2VsZikoc3VwZXIoKS5fX3J0cnVlZGl2X18ob3RoZXIpKQogICAgICAgICAgICAgZGVmIF9fc3ViX18oc2VsZiwgb3RoZXIpOgogICAgICAgICAgICAgICAgIHJldHVybiB0eXBlKHNlbGYpKHN1cGVyKCkuX19zdWJfXyhvdGhlcikpCiAgICAgICAgICAgICBkZWYgX19yc3ViX18oc2VsZiwgb3RoZXIpOgpAQCAtMTA5OCw5ICsxMTM3LDE0IEBACiAgICAgICAgICAgICBkZWYgX19hZGRfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGUoc2VsZikoc3VwZXIoKS5fX2FkZF9fKG90aGVyKSkKICAgICAgICAgICAgIF9fcmFkZF9fID0gX19hZGRfXworICAgICAgICByZXR1cm4gKGZsb2F0LCBEZWNpbWFsLCBGcmFjdGlvbiwgTXlGbG9hdCkKIAorICAgIGRlZiB0ZXN0X3R5cGVzX2NvbnNlcnZlZChzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgZnVuY3Rpb25zIGtlZXBzIHRoZSBzYW1lIHR5cGUgYXMgdGhlaXIgZGF0YSBwb2ludHMuCisgICAgICAgICMgKEV4Y2x1ZGVzIG1peGVkIGRhdGEgdHlwZXMuKSBUaGlzIG9ubHkgdGVzdHMgdGhlIHR5cGUgb2YgdGhlIHJldHVybgorICAgICAgICAjIHJlc3VsdCwgbm90IHRoZSB2YWx1ZS4KICAgICAgICAgZGF0YSA9IHNlbGYucHJlcGFyZV9kYXRhKCkKLSAgICAgICAgZm9yIGtpbmQgaW4gKGZsb2F0LCBEZWNpbWFsLCBGcmFjdGlvbiwgTXlGbG9hdCk6CisgICAgICAgIGZvciBraW5kIGluIHNlbGYucHJlcGFyZV90eXBlc19mb3JfY29uc2VydmF0aW9uX3Rlc3QoKToKICAgICAgICAgICAgIGQgPSBba2luZCh4KSBmb3IgeCBpbiBkYXRhXQogICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5mdW5jKGQpCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUocmVzdWx0KSwga2luZCkKQEAgLTEyNzUsMTIgKzEzMTksMTYgQEAKICAgICAgICAgZm9yIHggaW4gKDIzLCA0Mi41LCAxLjNlMTUsIEZyYWN0aW9uKDE1LCAxOSksIERlY2ltYWwoJzAuMjgnKSk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZnVuYyhbeF0pLCB4KQogCisgICAgZGVmIHByZXBhcmVfdmFsdWVzX2Zvcl9yZXBlYXRlZF9zaW5nbGVfdGVzdChzZWxmKToKKyAgICAgICAgcmV0dXJuICgzLjUsIDE3LCAyLjVlMTUsIEZyYWN0aW9uKDYxLCA2NyksIERlY2ltYWwoJzQuOTcxMicpKQorCiAgICAgZGVmIHRlc3RfcmVwZWF0ZWRfc2luZ2xlX3ZhbHVlKHNlbGYpOgogICAgICAgICAjIFRoZSBhdmVyYWdlIG9mIGEgc2luZ2xlIHJlcGVhdGVkIHZhbHVlIGlzIHRoZSB2YWx1ZSBpdHNlbGYuCi0gICAgICAgIGZvciB4IGluICgzLjUsIDE3LCAyLjVlMTUsIEZyYWN0aW9uKDYxLCA2NyksIERlY2ltYWwoJzQuOTcxMicpKToKKyAgICAgICAgZm9yIHggaW4gc2VsZi5wcmVwYXJlX3ZhbHVlc19mb3JfcmVwZWF0ZWRfc2luZ2xlX3Rlc3QoKToKICAgICAgICAgICAgIGZvciBjb3VudCBpbiAoMiwgNSwgMTAsIDIwKToKLSAgICAgICAgICAgICAgICBkYXRhID0gW3hdKmNvdW50Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZ1bmMoZGF0YSksIHgpCisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoeD14LCBjb3VudD1jb3VudCk6CisgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBbeF0qY291bnQKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZ1bmMoZGF0YSksIHgpCiAKIAogY2xhc3MgVGVzdE1lYW4oTnVtZXJpY1Rlc3RDYXNlLCBBdmVyYWdlTWl4aW4sIFVuaXZhcmlhdGVUeXBlTWl4aW4pOgpAQCAtMTMwNCw3ICsxMzUyLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZ1bmMoZGF0YSksIDIyLjAxNTYyNSkKIAogICAgIGRlZiB0ZXN0X2RlY2ltYWxzKHNlbGYpOgotICAgICAgICAjIFRlc3QgbWVhbiB3aXRoIGludHMuCisgICAgICAgICMgVGVzdCBtZWFuIHdpdGggRGVjaW1hbHMuCiAgICAgICAgIEQgPSBEZWNpbWFsCiAgICAgICAgIGRhdGEgPSBbRCgiMS42MzQiKSwgRCgiMi41MTciKSwgRCgiMy45MTIiKSwgRCgiNC4wNzIiKSwgRCgiNS44MTMiKV0KICAgICAgICAgcmFuZG9tLnNodWZmbGUoZGF0YSkKQEAgLTEzNzksNiArMTQyNyw5NCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0aXN0aWNzLm1lYW4oW3RpbnldKm4pLCB0aW55KQogCiAKK2NsYXNzIFRlc3RIYXJtb25pY01lYW4oTnVtZXJpY1Rlc3RDYXNlLCBBdmVyYWdlTWl4aW4sIFVuaXZhcmlhdGVUeXBlTWl4aW4pOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5mdW5jID0gc3RhdGlzdGljcy5oYXJtb25pY19tZWFuCisKKyAgICBkZWYgcHJlcGFyZV9kYXRhKHNlbGYpOgorICAgICAgICAjIE92ZXJyaWRlIG1peGluIG1ldGhvZC4KKyAgICAgICAgdmFsdWVzID0gc3VwZXIoKS5wcmVwYXJlX2RhdGEoKQorICAgICAgICB2YWx1ZXMucmVtb3ZlKDApCisgICAgICAgIHJldHVybiB2YWx1ZXMKKworICAgIGRlZiBwcmVwYXJlX3ZhbHVlc19mb3JfcmVwZWF0ZWRfc2luZ2xlX3Rlc3Qoc2VsZik6CisgICAgICAgICMgT3ZlcnJpZGUgbWl4aW4gbWV0aG9kLgorICAgICAgICByZXR1cm4gKDMuNSwgMTcsIDIuNWUxNSwgRnJhY3Rpb24oNjEsIDY3KSwgRGVjaW1hbCgnNC4xMjUnKSkKKworICAgIGRlZiB0ZXN0X3plcm8oc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IGhhcm1vbmljIG1lYW4gcmV0dXJucyB6ZXJvIHdoZW4gZ2l2ZW4gemVyby4KKyAgICAgICAgdmFsdWVzID0gWzEsIDAsIDJdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mdW5jKHZhbHVlcyksIDApCisKKyAgICBkZWYgdGVzdF9uZWdhdGl2ZV9lcnJvcihzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgaGFybW9uaWMgbWVhbiByYWlzZXMgd2hlbiBnaXZlbiBhIG5lZ2F0aXZlIHZhbHVlLgorICAgICAgICBleGMgPSBzdGF0aXN0aWNzLlN0YXRpc3RpY3NFcnJvcgorICAgICAgICBmb3IgdmFsdWVzIGluIChbLTFdLCBbMSwgLTIsIDNdKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHZhbHVlcz12YWx1ZXMpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGV4Yywgc2VsZi5mdW5jLCB2YWx1ZXMpCisKKyAgICBkZWYgdGVzdF9pbnRzKHNlbGYpOgorICAgICAgICAjIFRlc3QgaGFybW9uaWMgbWVhbiB3aXRoIGludHMuCisgICAgICAgIGRhdGEgPSBbMiwgNCwgNCwgOCwgMTYsIDE2XQorICAgICAgICByYW5kb20uc2h1ZmZsZShkYXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZnVuYyhkYXRhKSwgNio0LzUpCisKKyAgICBkZWYgdGVzdF9mbG9hdHNfZXhhY3Qoc2VsZik6CisgICAgICAgICMgVGVzdCBoYXJtb25pYyBtZWFuIHdpdGggc29tZSBjYXJlZnVsbHkgY2hvc2VuIGZsb2F0cy4KKyAgICAgICAgZGF0YSA9IFsxLzgsIDEvNCwgMS80LCAxLzIsIDEvMl0KKyAgICAgICAgcmFuZG9tLnNodWZmbGUoZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZ1bmMoZGF0YSksIDEvNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZ1bmMoWzAuMjUsIDAuNSwgMS4wLCAxLjBdKSwgMC41KQorCisgICAgZGVmIHRlc3Rfc2luZ2xldG9uX2xpc3RzKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBoYXJtb25pYyBtZWFuKFt4XSkgcmV0dXJucyAoYXBwcm94aW1hdGVseSkgeC4KKyAgICAgICAgZm9yIHggaW4gcmFuZ2UoMSwgMTAxKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mdW5jKFt4XSksIHgpCisKKyAgICBkZWYgdGVzdF9kZWNpbWFsc19leGFjdChzZWxmKToKKyAgICAgICAgIyBUZXN0IGhhcm1vbmljIG1lYW4gd2l0aCBzb21lIGNhcmVmdWxseSBjaG9zZW4gRGVjaW1hbHMuCisgICAgICAgIEQgPSBEZWNpbWFsCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mdW5jKFtEKDE1KSwgRCgzMCksIEQoNjApLCBEKDYwKV0pLCBEKDMwKSkKKyAgICAgICAgZGF0YSA9IFtEKCIwLjA1IiksIEQoIjAuMTAiKSwgRCgiMC4yMCIpLCBEKCIwLjIwIildCisgICAgICAgIHJhbmRvbS5zaHVmZmxlKGRhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mdW5jKGRhdGEpLCBEKCIwLjEwIikpCisgICAgICAgIGRhdGEgPSBbRCgiMS42OCIpLCBEKCIwLjMyIiksIEQoIjUuOTQiKSwgRCgiMi43NSIpXQorICAgICAgICByYW5kb20uc2h1ZmZsZShkYXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZnVuYyhkYXRhKSwgRCg2NjUyOCkvNzA3MjMpCisKKyAgICBkZWYgdGVzdF9mcmFjdGlvbnMoc2VsZik6CisgICAgICAgICMgVGVzdCBoYXJtb25pYyBtZWFuIHdpdGggRnJhY3Rpb25zLgorICAgICAgICBGID0gRnJhY3Rpb24KKyAgICAgICAgZGF0YSA9IFtGKDEsIDIpLCBGKDIsIDMpLCBGKDMsIDQpLCBGKDQsIDUpLCBGKDUsIDYpLCBGKDYsIDcpLCBGKDcsIDgpXQorICAgICAgICByYW5kb20uc2h1ZmZsZShkYXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZnVuYyhkYXRhKSwgRig3KjQyMCwgNDAyOSkpCisKKyAgICBkZWYgdGVzdF9pbmYoc2VsZik6CisgICAgICAgICMgVGVzdCBoYXJtb25pYyBtZWFuIHdpdGggaW5maW5pdHkuCisgICAgICAgIHZhbHVlcyA9IFsyLjAsIGZsb2F0KCdpbmYnKSwgMS4wXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZnVuYyh2YWx1ZXMpLCAyLjApCisKKyAgICBkZWYgdGVzdF9uYW4oc2VsZik6CisgICAgICAgICMgVGVzdCBoYXJtb25pYyBtZWFuIHdpdGggTkFOcy4KKyAgICAgICAgdmFsdWVzID0gWzIuMCwgZmxvYXQoJ25hbicpLCAxLjBdCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKHNlbGYuZnVuYyh2YWx1ZXMpKSkKKworICAgIGRlZiB0ZXN0X211bHRpcGx5X2RhdGFfcG9pbnRzKHNlbGYpOgorICAgICAgICAjIFRlc3QgbXVsdGlwbHlpbmcgZXZlcnkgZGF0YSBwb2ludCBieSBhIGNvbnN0YW50LgorICAgICAgICBjID0gMTExCisgICAgICAgIGRhdGEgPSBbMy40LCA0LjUsIDQuOSwgNi43LCA2LjgsIDcuMiwgOC4wLCA4LjEsIDkuNF0KKyAgICAgICAgZXhwZWN0ZWQgPSBzZWxmLmZ1bmMoZGF0YSkqYworICAgICAgICByZXN1bHQgPSBzZWxmLmZ1bmMoW3gqYyBmb3IgeCBpbiBkYXRhXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3RfZG91YmxlZF9kYXRhKHNlbGYpOgorICAgICAgICAjIEhhcm1vbmljIG1lYW4gb2YgW2EsYi4uLnpdIHNob3VsZCBiZSBzYW1lIGFzIGZvciBbYSxhLGIsYi4uLnosel0uCisgICAgICAgIGRhdGEgPSBbcmFuZG9tLnVuaWZvcm0oMSwgNSkgZm9yIF8gaW4gcmFuZ2UoMTAwMCldCisgICAgICAgIGV4cGVjdGVkID0gc2VsZi5mdW5jKGRhdGEpCisgICAgICAgIGFjdHVhbCA9IHNlbGYuZnVuYyhkYXRhKjIpCisgICAgICAgIHNlbGYuYXNzZXJ0QXBwcm94RXF1YWwoYWN0dWFsLCBleHBlY3RlZCkKKworCiBjbGFzcyBUZXN0TWVkaWFuKE51bWVyaWNUZXN0Q2FzZSwgQXZlcmFnZU1peGluKToKICAgICAjIENvbW1vbiB0ZXN0cyBmb3IgbWVkaWFuIGFuZCBhbGwgbWVkaWFuLiogZnVuY3Rpb25zLgogICAgIGRlZiBzZXRVcChzZWxmKToKQEAgLTE2MDAsNiArMTczNiwyMiBAQAogICAgICAgICBkYXRhID0gWzIyMCwgMjIwLCAyNDAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjgwLCAyODAsIDMwMCwgMzIwLCAzNDBdCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mdW5jKGRhdGEsIDIwKSwgMjY1LjApCiAKKyAgICBkZWYgdGVzdF9kYXRhX3R5cGVfZXJyb3Ioc2VsZik6CisgICAgICAgICMgVGVzdCBtZWRpYW5fZ3JvdXBlZCB3aXRoIHN0ciwgYnl0ZXMgZGF0YSB0eXBlcyBmb3IgZGF0YSBhbmQgaW50ZXJ2YWwKKyAgICAgICAgZGF0YSA9IFsiIiwgIiIsICIiXQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZnVuYywgZGF0YSkKKyAgICAgICAgIy0tLQorICAgICAgICBkYXRhID0gW2IiIiwgYiIiLCBiIiJdCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5mdW5jLCBkYXRhKQorICAgICAgICAjLS0tCisgICAgICAgIGRhdGEgPSBbMSwgMiwgM10KKyAgICAgICAgaW50ZXJ2YWwgPSAiIgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZnVuYywgZGF0YSwgaW50ZXJ2YWwpCisgICAgICAgICMtLS0KKyAgICAgICAgZGF0YSA9IFsxLCAyLCAzXQorICAgICAgICBpbnRlcnZhbCA9IGIiIgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZnVuYywgZGF0YSwgaW50ZXJ2YWwpCisKIAogY2xhc3MgVGVzdE1vZGUoTnVtZXJpY1Rlc3RDYXNlLCBBdmVyYWdlTWl4aW4sIFVuaXZhcmlhdGVUeXBlTWl4aW4pOgogICAgICMgVGVzdCBjYXNlcyBmb3IgdGhlIGRpc2NyZXRlIHZlcnNpb24gb2YgbW9kZS4KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3RyZnRpbWUucHkgYi9MaWIvdGVzdC90ZXN0X3N0cmZ0aW1lLnB5CmluZGV4IDc3MmNkMDYuLjcyYjE5MTAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3RyZnRpbWUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdHJmdGltZS5weQpAQCAtMjMsOSArMjMsOSBAQAogICAgICIiIgogICAgIG5ld190ZXh0ID0gcmUuZXNjYXBlKHRleHQpCiAgICAgbmV3X3RleHQgPSBuZXdfdGV4dC5yZXBsYWNlKHJlLmVzY2FwZShhbXBtKSwgYW1wbSkKLSAgICBuZXdfdGV4dCA9IG5ld190ZXh0LnJlcGxhY2UoJ1wlJywgJyUnKQotICAgIG5ld190ZXh0ID0gbmV3X3RleHQucmVwbGFjZSgnXDonLCAnOicpCi0gICAgbmV3X3RleHQgPSBuZXdfdGV4dC5yZXBsYWNlKCdcPycsICc/JykKKyAgICBuZXdfdGV4dCA9IG5ld190ZXh0LnJlcGxhY2UocidcJScsICclJykKKyAgICBuZXdfdGV4dCA9IG5ld190ZXh0LnJlcGxhY2UocidcOicsICc6JykKKyAgICBuZXdfdGV4dCA9IG5ld190ZXh0LnJlcGxhY2UocidcPycsICc/JykKICAgICByZXR1cm4gbmV3X3RleHQKIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N0cmxpdC5weSBiL0xpYi90ZXN0L3Rlc3Rfc3RyaW5nX2xpdGVyYWxzLnB5CnNpbWlsYXJpdHkgaW5kZXggNzklCnJlbmFtZSBmcm9tIExpYi90ZXN0L3Rlc3Rfc3RybGl0LnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X3N0cmluZ19saXRlcmFscy5weQppbmRleCA4N2NmZmU4Li5hYmE0ZmM0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N0cmxpdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N0cmluZ19saXRlcmFscy5weQpAQCAtMzEsNiArMzEsNyBAQAogaW1wb3J0IHN5cwogaW1wb3J0IHNodXRpbAogaW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgd2FybmluZ3MKIGltcG9ydCB1bml0dGVzdAogCiAKQEAgLTEwNCw2ICsxMDUsMjkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsIHIiIiIgJ1xVMDAwMDAwJyAiIiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCByIiIiICdcVTAwMDAwMDAnICIiIikKIAorICAgIGRlZiB0ZXN0X2V2YWxfc3RyX2ludmFsaWRfZXNjYXBlKHNlbGYpOgorICAgICAgICBmb3IgYiBpbiByYW5nZSgxLCAxMjgpOgorICAgICAgICAgICAgaWYgYiBpbiBiIiIiXG5cciInMDEyMzQ1NjdOVVxcYWJmbnJ0dXZ4IiIiOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwociInXCVjJyIgJSBiKSwgJ1xcJyArIGNocihiKSkKKworICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKHJlY29yZD1UcnVlKSBhcyB3OgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdhbHdheXMnLCBjYXRlZ29yeT1EZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICBldmFsKCInJydcblxceicnJyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHcpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdbMF0uZmlsZW5hbWUsICc8c3RyaW5nPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod1swXS5saW5lbm8sIDIpCisKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncyhyZWNvcmQ9VHJ1ZSkgYXMgdzoKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignZXJyb3InLCBjYXRlZ29yeT1EZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBldmFsKCInJydcblxceicnJyIpCisgICAgICAgICAgICBleGMgPSBjbS5leGNlcHRpb24KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGMuZmlsZW5hbWUsICc8c3RyaW5nPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhjLmxpbmVubywgMikKKwogICAgIGRlZiB0ZXN0X2V2YWxfc3RyX3JhdyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKCIiIiByJ3gnICIiIiksICd4JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKHIiIiIgcidceDAxJyAiIiIpLCAnXFwnICsgJ3gwMScpCkBAIC0xMjEsMTUgKzE0NSwzOCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwoIiIiIGInXHgwMScgIiIiKSwgYnl0ZSgxKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKHIiIiIgYidceDgxJyAiIiIpLCBieXRlKDB4ODEpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgIiIiIGInXHg4MScgIiIiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwociIiIiBiJ1x1MTg4MScgIiIiKSwgYidcXCcgKyBiJ3UxODgxJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKHIiIiIgYnInXHUxODgxJyAiIiIpLCBiJ1xcJyArIGIndTE4ODEnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgIiIiIGInXHUxODgxJyAiIiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbChyIiIiIGInXFUwMDAxZDEyMCcgIiIiKSwgYidcXCcgKyBiJ1UwMDAxZDEyMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbChyIiIiIGJyJ1xVMDAwMWQxMjAnICIiIiksIGInXFwnICsgYidVMDAwMWQxMjAnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgIiIiIGInXFUwMDAxZDEyMCcgIiIiKQogCiAgICAgZGVmIHRlc3RfZXZhbF9ieXRlc19pbmNvbXBsZXRlKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgciIiIiBiJ1x4JyAiIiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCByIiIiIGInXHgwJyAiIiIpCiAKKyAgICBkZWYgdGVzdF9ldmFsX2J5dGVzX2ludmFsaWRfZXNjYXBlKHNlbGYpOgorICAgICAgICBmb3IgYiBpbiByYW5nZSgxLCAxMjgpOgorICAgICAgICAgICAgaWYgYiBpbiBiIiIiXG5cciInMDEyMzQ1NjdcXGFiZm5ydHZ4IiIiOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwociJiJ1wlYyciICUgYiksIGInXFwnICsgYnl0ZXMoW2JdKSkKKworICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKHJlY29yZD1UcnVlKSBhcyB3OgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdhbHdheXMnLCBjYXRlZ29yeT1EZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICBldmFsKCJiJycnXG5cXHonJyciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih3KSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3WzBdLmZpbGVuYW1lLCAnPHN0cmluZz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdbMF0ubGluZW5vLCAyKQorCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MocmVjb3JkPVRydWUpIGFzIHc6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2Vycm9yJywgY2F0ZWdvcnk9RGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgZXZhbCgiYicnJ1xuXFx6JycnIikKKyAgICAgICAgICAgIGV4YyA9IGNtLmV4Y2VwdGlvbgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4Yy5maWxlbmFtZSwgJzxzdHJpbmc+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGMubGluZW5vLCAyKQorCiAgICAgZGVmIHRlc3RfZXZhbF9ieXRlc19yYXcoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbCgiIiIgYnIneCcgIiIiKSwgYid4JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKCIiIiByYid4JyAiIiIpLCBiJ3gnKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdHJwdGltZS5weSBiL0xpYi90ZXN0L3Rlc3Rfc3RycHRpbWUucHkKaW5kZXggODUxMjZlNi4uMmNmMDkyNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdHJwdGltZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N0cnB0aW1lLnB5CkBAIC01LDcgKzUsNiBAQAogaW1wb3J0IGxvY2FsZQogaW1wb3J0IHJlCiBpbXBvcnQgb3MKLWltcG9ydCBzeXMKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZSBhcyBkYXRldGltZV9kYXRlCiAKQEAgLTEzMCw3ICsxMjksNyBAQAogICAgIGRlZiB0ZXN0X3BhdHRlcm5fZXNjYXBpbmcoc2VsZik6CiAgICAgICAgICMgTWFrZSBzdXJlIGFueSBjaGFyYWN0ZXJzIGluIHRoZSBmb3JtYXQgc3RyaW5nIHRoYXQgbWlnaHQgYmUgdGFrZW4gYXMKICAgICAgICAgIyByZWdleCBzeW50YXggaXMgZXNjYXBlZC4KLSAgICAgICAgcGF0dGVybl9zdHJpbmcgPSBzZWxmLnRpbWVfcmUucGF0dGVybigiXGQrIikKKyAgICAgICAgcGF0dGVybl9zdHJpbmcgPSBzZWxmLnRpbWVfcmUucGF0dGVybihyIlxkKyIpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4ociJcXGRcKyIsIHBhdHRlcm5fc3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICIlcyBkb2VzIG5vdCBoYXZlIHJlIGNoYXJhY3RlcnMgZXNjYXBlZCBwcm9wZXJseSIgJQogICAgICAgICAgICAgICAgICAgICAgIHBhdHRlcm5fc3RyaW5nKQpAQCAtMTUzLDggKzE1Miw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIiclcycgdXNpbmcgJyVzJzsgZ3JvdXAgJ2EnID0gJyVzJywgZ3JvdXAgJ2InID0gJXMnIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvdW5kLnN0cmluZywgZm91bmQucmUucGF0dGVybiwgZm91bmQuZ3JvdXAoJ2EnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQuZ3JvdXAoJ2InKSkpCi0gICAgICAgIGZvciBkaXJlY3RpdmUgaW4gKCdhJywnQScsJ2InLCdCJywnYycsJ2QnLCdIJywnSScsJ2onLCdtJywnTScsJ3AnLCdTJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ1UnLCd3JywnVycsJ3gnLCdYJywneScsJ1knLCdaJywnJScpOgorICAgICAgICBmb3IgZGlyZWN0aXZlIGluICgnYScsJ0EnLCdiJywnQicsJ2MnLCdkJywnRycsJ0gnLCdJJywnaicsJ20nLCdNJywncCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICdTJywndScsJ1UnLCdWJywndycsJ1cnLCd4JywnWCcsJ3knLCdZJywnWicsJyUnKToKICAgICAgICAgICAgIGNvbXBpbGVkID0gc2VsZi50aW1lX3JlLmNvbXBpbGUoIiUiICsgZGlyZWN0aXZlKQogICAgICAgICAgICAgZm91bmQgPSBjb21waWxlZC5tYXRjaCh0aW1lLnN0cmZ0aW1lKCIlIiArIGRpcmVjdGl2ZSkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZm91bmQsICJNYXRjaGluZyBmYWlsZWQgb24gJyVzJyB1c2luZyAnJXMnIHJlZ2V4IiAlCkBAIC0xNzEsOSArMTcwLDkgQEAKIAogICAgIGRlZiB0ZXN0X21hdGNoaW5nX3dpdGhfZXNjYXBlcyhzZWxmKToKICAgICAgICAgIyBNYWtlIHN1cmUgYSBmb3JtYXQgdGhhdCByZXF1aXJlcyBlc2NhcGluZyBvZiBjaGFyYWN0ZXJzIHdvcmtzCi0gICAgICAgIGNvbXBpbGVkX3JlID0gc2VsZi50aW1lX3JlLmNvbXBpbGUoIlx3KyAlbSIpCi0gICAgICAgIGZvdW5kID0gY29tcGlsZWRfcmUubWF0Y2goIlx3KyAxMCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmb3VuZCwgIkVzY2FwaW5nIGZhaWxlZCBvZiBmb3JtYXQgJ1x3KyAxMCciKQorICAgICAgICBjb21waWxlZF9yZSA9IHNlbGYudGltZV9yZS5jb21waWxlKHIiXHcrICVtIikKKyAgICAgICAgZm91bmQgPSBjb21waWxlZF9yZS5tYXRjaChyIlx3KyAxMCIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmb3VuZCwgciJFc2NhcGluZyBmYWlsZWQgb2YgZm9ybWF0ICdcdysgMTAnIikKIAogICAgIGRlZiB0ZXN0X2xvY2FsZV9kYXRhX3dfcmVnZXhfbWV0YWNoYXJhY3RlcnMoc2VsZik6CiAgICAgICAgICMgQ2hlY2sgdGhhdCBpZiBsb2NhbGUgZGF0YSBjb250YWlucyByZWdleCBtZXRhY2hhcmFjdGVycyB0aGV5IGFyZQpAQCAtMjE5LDYgKzIxOCwyNiBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIiclcycgZGlkIG5vdCByYWlzZSBWYWx1ZUVycm9yIiAlIGJhZF9mb3JtYXQpCiAKKyAgICAgICAgIyBBbWJpZ3VvdXMgb3IgaW5jb21wbGV0ZSBjYXNlcyB1c2luZyBJU08geWVhci93ZWVrL3dlZWtkYXkgZGlyZWN0aXZlcworICAgICAgICAjIDEuIElTTyB3ZWVrICglVikgaXMgc3BlY2lmaWVkLCBidXQgdGhlIHllYXIgaXMgc3BlY2lmaWVkIHdpdGggJVkKKyAgICAgICAgIyBpbnN0ZWFkIG9mICVHCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBfc3RycHRpbWUuX3N0cnB0aW1lKCIxOTk5IDUwIiwgIiVZICVWIikKKyAgICAgICAgIyAyLiBJU08geWVhciAoJUcpIGFuZCBJU08gd2VlayAoJVYpIGFyZSBzcGVjaWZpZWQsIGJ1dCB3ZWVrZGF5IGlzIG5vdAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgX3N0cnB0aW1lLl9zdHJwdGltZSgiMTk5OSA1MSIsICIlRyAlViIpCisgICAgICAgICMgMy4gSVNPIHllYXIgKCVHKSBhbmQgd2Vla2RheSBhcmUgc3BlY2lmaWVkLCBidXQgSVNPIHdlZWsgKCVWKSBpcyBub3QKKyAgICAgICAgZm9yIHcgaW4gKCdBJywgJ2EnLCAndycsICd1Jyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgICAgIF9zdHJwdGltZS5fc3RycHRpbWUoIjE5OTkgNTEiLCIlRyAle30iLmZvcm1hdCh3KSkKKyAgICAgICAgIyA0LiBJU08geWVhciBpcyBzcGVjaWZpZWQgYWxvbmUgKGUuZy4gdGltZS5zdHJwdGltZSgnMjAxNScsICclRycpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgX3N0cnB0aW1lLl9zdHJwdGltZSgiMjAxNSIsICIlRyIpCisgICAgICAgICMgNS4gSnVsaWFuL29yZGluYWwgZGF5ICglaikgaXMgc3BlY2lmaWVkIHdpdGggJUcsIGJ1dCBub3QgJVkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIF9zdHJwdGltZS5fc3RycHRpbWUoIjE5OTkgMjU2IiwgIiVHICVqIikKKworCiAgICAgZGVmIHRlc3Rfc3RycHRpbWVfZXhjZXB0aW9uX2NvbnRleHQoc2VsZik6CiAgICAgICAgICMgY2hlY2sgdGhhdCB0aGlzIGRvZXNuJ3QgY2hhaW4gZXhjZXB0aW9ucyBuZWVkbGVzc2x5IChzZWUgIzE3NTcyKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGU6CkBAIC0yOTAsNyArMzA5LDcgQEAKIAogICAgIGRlZiB0ZXN0X3dlZWtkYXkoc2VsZik6CiAgICAgICAgICMgVGVzdCB3ZWVrZGF5IGRpcmVjdGl2ZXMKLSAgICAgICAgZm9yIGRpcmVjdGl2ZSBpbiAoJ0EnLCAnYScsICd3Jyk6CisgICAgICAgIGZvciBkaXJlY3RpdmUgaW4gKCdBJywgJ2EnLCAndycsICd1Jyk6CiAgICAgICAgICAgICBzZWxmLmhlbHBlcihkaXJlY3RpdmUsNikKIAogICAgIGRlZiB0ZXN0X2p1bGlhbihzZWxmKToKQEAgLTM4NCw3ICs0MDMsNyBAQAogICAgICAgICAjIHVuYmFsYW5jZWQgcGFyZW50aGVzZXMgd2hlbiB0aGUgcmVnZXggaXMgY29tcGlsZWQgaWYgdGhleSBhcmUgbm90CiAgICAgICAgICMgZXNjYXBlZC4KICAgICAgICAgIyBUZXN0IGluc3RpZ2F0ZWQgYnkgYnVnICM3OTYxNDkgLgotICAgICAgICBuZWVkX2VzY2FwaW5nID0gIi5eJCorP3t9XFtdfCkoIgorICAgICAgICBuZWVkX2VzY2FwaW5nID0gciIuXiQqKz97fVxbXXwpKCIKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKF9zdHJwdGltZS5fc3RycHRpbWVfdGltZShuZWVkX2VzY2FwaW5nLCBuZWVkX2VzY2FwaW5nKSkKIAogICAgIGRlZiB0ZXN0X2ZlYjI5X29uX2xlYXBfeWVhcl93aXRob3V0X3llYXIoc2VsZik6CkBAIC00NTMsMjAgKzQ3MiwzNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIkNhbGN1bGF0aW9uIG9mIGRheSBvZiB0aGUgd2VlayBmYWlsZWQ7IgogICAgICAgICAgICAgICAgICAgICAgICAgICIlcyAhPSAlcyIgJSAocmVzdWx0LnRtX3dkYXksIHNlbGYudGltZV90dXBsZS50bV93ZGF5KSkKIAorICAgIGlmIHN1cHBvcnQuaXNfYW5kcm9pZDoKKyAgICAgICAgIyBJc3N1ZSAjMjY5Mjk6IHN0cmZ0aW1lKCkgb24gQW5kcm9pZCBpbmNvcnJlY3RseSBmb3JtYXRzICVWIG9yICVHIGZvcgorICAgICAgICAjIHRoZSBsYXN0IG9yIHRoZSBmaXJzdCBpbmNvbXBsZXRlIHdlZWsgaW4gYSB5ZWFyLgorICAgICAgICBfeW1kX2V4Y2x1ZGVkID0gKCgxOTA1LCAxLCAxKSwgKDE5MDYsIDEyLCAzMSksICgyMDA4LCAxMiwgMjkpLAorICAgICAgICAgICAgICAgICAgICAgICAgKDE5MTcsIDEyLCAzMSkpCisgICAgICAgIF9mb3JtYXRzX2V4Y2x1ZGVkID0gKCclRyAlVicsKQorICAgIGVsc2U6CisgICAgICAgIF95bWRfZXhjbHVkZWQgPSAoKQorICAgICAgICBfZm9ybWF0c19leGNsdWRlZCA9ICgpCisKICAgICBkZWYgdGVzdF93ZWVrX29mX3llYXJfYW5kX2RheV9vZl93ZWVrX2NhbGN1bGF0aW9uKHNlbGYpOgogICAgICAgICAjIFNob3VsZCBiZSBhYmxlIHRvIGluZmVyIGRhdGUgaWYgZ2l2ZW4geWVhciwgd2VlayBvZiB5ZWFyICglVSBvciAlVykKICAgICAgICAgIyBhbmQgZGF5IG9mIHRoZSB3ZWVrCiAgICAgICAgIGRlZiB0ZXN0X2hlbHBlcih5bWRfdHVwbGUsIHRlc3RfcmVhc29uKToKLSAgICAgICAgICAgIGZvciBkaXJlY3RpdmUgaW4gKCdXJywgJ1UnKToKLSAgICAgICAgICAgICAgICBmb3JtYXRfc3RyaW5nID0gIiUlWSAlJSVzICUldyIgJSBkaXJlY3RpdmUKLSAgICAgICAgICAgICAgICBkdF9kYXRlID0gZGF0ZXRpbWVfZGF0ZSgqeW1kX3R1cGxlKQotICAgICAgICAgICAgICAgIHN0cnBfaW5wdXQgPSBkdF9kYXRlLnN0cmZ0aW1lKGZvcm1hdF9zdHJpbmcpCi0gICAgICAgICAgICAgICAgc3RycF9vdXRwdXQgPSBfc3RycHRpbWUuX3N0cnB0aW1lX3RpbWUoc3RycF9pbnB1dCwgZm9ybWF0X3N0cmluZykKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3RycF9vdXRwdXRbOjNdID09IHltZF90dXBsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICIlcyglcykgdGVzdCBmYWlsZWQgdy8gJyVzJzogJXMgIT0gJXMgKCVzICE9ICVzKSIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0ZXN0X3JlYXNvbiwgZGlyZWN0aXZlLCBzdHJwX2lucHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJwX291dHB1dFs6M10sIHltZF90dXBsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RycF9vdXRwdXRbN10sIGR0X2RhdGUudGltZXR1cGxlKClbN10pKQorICAgICAgICAgICAgZm9yIHllYXJfd2Vla19mb3JtYXQgaW4gKCclWSAlVycsICclWSAlVScsICclRyAlVicpOgorICAgICAgICAgICAgICAgIGlmICh5ZWFyX3dlZWtfZm9ybWF0IGluIHNlbGYuX2Zvcm1hdHNfZXhjbHVkZWQgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICB5bWRfdHVwbGUgaW4gc2VsZi5feW1kX2V4Y2x1ZGVkKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICAgICAgZm9yIHdlZWtkYXlfZm9ybWF0IGluICgnJXcnLCAnJXUnLCAnJWEnLCAnJUEnKToKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0X3N0cmluZyA9IHllYXJfd2Vla19mb3JtYXQgKyAnICcgKyB3ZWVrZGF5X2Zvcm1hdAorICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCh0ZXN0X3JlYXNvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZT15bWRfdHVwbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdD1mb3JtYXRfc3RyaW5nKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGR0X2RhdGUgPSBkYXRldGltZV9kYXRlKCp5bWRfdHVwbGUpCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJwX2lucHV0ID0gZHRfZGF0ZS5zdHJmdGltZShmb3JtYXRfc3RyaW5nKQorICAgICAgICAgICAgICAgICAgICAgICAgc3RycF9vdXRwdXQgPSBfc3RycHRpbWUuX3N0cnB0aW1lX3RpbWUoc3RycF9pbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdF9zdHJpbmcpCisgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAiJXI6ICVzICE9ICVzIiAlIChzdHJwX2lucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RycF9vdXRwdXRbN10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdF9kYXRlLnRpbWV0dXBsZSgpWzddKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJwX291dHB1dFs6M10sIHltZF90dXBsZSwgbXNnKQogICAgICAgICB0ZXN0X2hlbHBlcigoMTkwMSwgMSwgMyksICJ3ZWVrIDAiKQogICAgICAgICB0ZXN0X2hlbHBlcigoMTkwMSwgMSwgOCksICJjb21tb24gY2FzZSIpCiAgICAgICAgIHRlc3RfaGVscGVyKCgxOTAxLCAxLCAxMyksICJkYXkgb24gU3VuZGF5IikKQEAgLTQ5OCwzMyArNTM0LDQ4IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9zdHJwdGltZS5fc3RycHRpbWVfdGltZSh2YWx1ZSwgZm9ybWF0KVs6LTFdLCBleHBlY3RlZCkKICAgICAgICAgY2hlY2soJzIwMTUgMCAwJywgJyVZICVVICV3JywgMjAxNCwgMTIsIDI4LCAwLCAwLCAwLCA2LCAzNjIpCiAgICAgICAgIGNoZWNrKCcyMDE1IDAgMCcsICclWSAlVyAldycsIDIwMTUsIDEsIDQsIDAsIDAsIDAsIDYsIDQpCisgICAgICAgIGNoZWNrKCcyMDE1IDEgMScsICclRyAlViAldScsIDIwMTQsIDEyLCAyOSwgMCwgMCwgMCwgMCwgMzYzKQogICAgICAgICBjaGVjaygnMjAxNSAwIDEnLCAnJVkgJVUgJXcnLCAyMDE0LCAxMiwgMjksIDAsIDAsIDAsIDAsIDM2MykKICAgICAgICAgY2hlY2soJzIwMTUgMCAxJywgJyVZICVXICV3JywgMjAxNCwgMTIsIDI5LCAwLCAwLCAwLCAwLCAzNjMpCisgICAgICAgIGNoZWNrKCcyMDE1IDEgMicsICclRyAlViAldScsIDIwMTQsIDEyLCAzMCwgMCwgMCwgMCwgMSwgMzY0KQogICAgICAgICBjaGVjaygnMjAxNSAwIDInLCAnJVkgJVUgJXcnLCAyMDE0LCAxMiwgMzAsIDAsIDAsIDAsIDEsIDM2NCkKICAgICAgICAgY2hlY2soJzIwMTUgMCAyJywgJyVZICVXICV3JywgMjAxNCwgMTIsIDMwLCAwLCAwLCAwLCAxLCAzNjQpCisgICAgICAgIGNoZWNrKCcyMDE1IDEgMycsICclRyAlViAldScsIDIwMTQsIDEyLCAzMSwgMCwgMCwgMCwgMiwgMzY1KQogICAgICAgICBjaGVjaygnMjAxNSAwIDMnLCAnJVkgJVUgJXcnLCAyMDE0LCAxMiwgMzEsIDAsIDAsIDAsIDIsIDM2NSkKICAgICAgICAgY2hlY2soJzIwMTUgMCAzJywgJyVZICVXICV3JywgMjAxNCwgMTIsIDMxLCAwLCAwLCAwLCAyLCAzNjUpCisgICAgICAgIGNoZWNrKCcyMDE1IDEgNCcsICclRyAlViAldScsIDIwMTUsIDEsIDEsIDAsIDAsIDAsIDMsIDEpCiAgICAgICAgIGNoZWNrKCcyMDE1IDAgNCcsICclWSAlVSAldycsIDIwMTUsIDEsIDEsIDAsIDAsIDAsIDMsIDEpCiAgICAgICAgIGNoZWNrKCcyMDE1IDAgNCcsICclWSAlVyAldycsIDIwMTUsIDEsIDEsIDAsIDAsIDAsIDMsIDEpCisgICAgICAgIGNoZWNrKCcyMDE1IDEgNScsICclRyAlViAldScsIDIwMTUsIDEsIDIsIDAsIDAsIDAsIDQsIDIpCiAgICAgICAgIGNoZWNrKCcyMDE1IDAgNScsICclWSAlVSAldycsIDIwMTUsIDEsIDIsIDAsIDAsIDAsIDQsIDIpCiAgICAgICAgIGNoZWNrKCcyMDE1IDAgNScsICclWSAlVyAldycsIDIwMTUsIDEsIDIsIDAsIDAsIDAsIDQsIDIpCisgICAgICAgIGNoZWNrKCcyMDE1IDEgNicsICclRyAlViAldScsIDIwMTUsIDEsIDMsIDAsIDAsIDAsIDUsIDMpCiAgICAgICAgIGNoZWNrKCcyMDE1IDAgNicsICclWSAlVSAldycsIDIwMTUsIDEsIDMsIDAsIDAsIDAsIDUsIDMpCiAgICAgICAgIGNoZWNrKCcyMDE1IDAgNicsICclWSAlVyAldycsIDIwMTUsIDEsIDMsIDAsIDAsIDAsIDUsIDMpCisgICAgICAgIGNoZWNrKCcyMDE1IDEgNycsICclRyAlViAldScsIDIwMTUsIDEsIDQsIDAsIDAsIDAsIDYsIDQpCiAKICAgICAgICAgY2hlY2soJzIwMDkgMCAwJywgJyVZICVVICV3JywgMjAwOCwgMTIsIDI4LCAwLCAwLCAwLCA2LCAzNjMpCiAgICAgICAgIGNoZWNrKCcyMDA5IDAgMCcsICclWSAlVyAldycsIDIwMDksIDEsIDQsIDAsIDAsIDAsIDYsIDQpCisgICAgICAgIGNoZWNrKCcyMDA5IDEgMScsICclRyAlViAldScsIDIwMDgsIDEyLCAyOSwgMCwgMCwgMCwgMCwgMzY0KQogICAgICAgICBjaGVjaygnMjAwOSAwIDEnLCAnJVkgJVUgJXcnLCAyMDA4LCAxMiwgMjksIDAsIDAsIDAsIDAsIDM2NCkKICAgICAgICAgY2hlY2soJzIwMDkgMCAxJywgJyVZICVXICV3JywgMjAwOCwgMTIsIDI5LCAwLCAwLCAwLCAwLCAzNjQpCisgICAgICAgIGNoZWNrKCcyMDA5IDEgMicsICclRyAlViAldScsIDIwMDgsIDEyLCAzMCwgMCwgMCwgMCwgMSwgMzY1KQogICAgICAgICBjaGVjaygnMjAwOSAwIDInLCAnJVkgJVUgJXcnLCAyMDA4LCAxMiwgMzAsIDAsIDAsIDAsIDEsIDM2NSkKICAgICAgICAgY2hlY2soJzIwMDkgMCAyJywgJyVZICVXICV3JywgMjAwOCwgMTIsIDMwLCAwLCAwLCAwLCAxLCAzNjUpCisgICAgICAgIGNoZWNrKCcyMDA5IDEgMycsICclRyAlViAldScsIDIwMDgsIDEyLCAzMSwgMCwgMCwgMCwgMiwgMzY2KQogICAgICAgICBjaGVjaygnMjAwOSAwIDMnLCAnJVkgJVUgJXcnLCAyMDA4LCAxMiwgMzEsIDAsIDAsIDAsIDIsIDM2NikKICAgICAgICAgY2hlY2soJzIwMDkgMCAzJywgJyVZICVXICV3JywgMjAwOCwgMTIsIDMxLCAwLCAwLCAwLCAyLCAzNjYpCisgICAgICAgIGNoZWNrKCcyMDA5IDEgNCcsICclRyAlViAldScsIDIwMDksIDEsIDEsIDAsIDAsIDAsIDMsIDEpCiAgICAgICAgIGNoZWNrKCcyMDA5IDAgNCcsICclWSAlVSAldycsIDIwMDksIDEsIDEsIDAsIDAsIDAsIDMsIDEpCiAgICAgICAgIGNoZWNrKCcyMDA5IDAgNCcsICclWSAlVyAldycsIDIwMDksIDEsIDEsIDAsIDAsIDAsIDMsIDEpCisgICAgICAgIGNoZWNrKCcyMDA5IDEgNScsICclRyAlViAldScsIDIwMDksIDEsIDIsIDAsIDAsIDAsIDQsIDIpCiAgICAgICAgIGNoZWNrKCcyMDA5IDAgNScsICclWSAlVSAldycsIDIwMDksIDEsIDIsIDAsIDAsIDAsIDQsIDIpCiAgICAgICAgIGNoZWNrKCcyMDA5IDAgNScsICclWSAlVyAldycsIDIwMDksIDEsIDIsIDAsIDAsIDAsIDQsIDIpCisgICAgICAgIGNoZWNrKCcyMDA5IDEgNicsICclRyAlViAldScsIDIwMDksIDEsIDMsIDAsIDAsIDAsIDUsIDMpCiAgICAgICAgIGNoZWNrKCcyMDA5IDAgNicsICclWSAlVSAldycsIDIwMDksIDEsIDMsIDAsIDAsIDAsIDUsIDMpCiAgICAgICAgIGNoZWNrKCcyMDA5IDAgNicsICclWSAlVyAldycsIDIwMDksIDEsIDMsIDAsIDAsIDAsIDUsIDMpCisgICAgICAgIGNoZWNrKCcyMDA5IDEgNycsICclRyAlViAldScsIDIwMDksIDEsIDQsIDAsIDAsIDAsIDYsIDQpCisKIAogY2xhc3MgQ2FjaGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCB0aGF0IGNhY2hpbmcgd29ya3MgcHJvcGVybHkuIiIiCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N0cnVjdC5weSBiL0xpYi90ZXN0L3Rlc3Rfc3RydWN0LnB5CmluZGV4IGVmYmRiZmMuLjRkOWQ2MDEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3RydWN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3RydWN0LnB5CkBAIC0xLDUgKzEsNiBAQAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgYWJjCiBpbXBvcnQgYXJyYXkKK2ltcG9ydCBtYXRoCiBpbXBvcnQgb3BlcmF0b3IKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHN0cnVjdApAQCAtMTUsMjIgKzE2LDEwIEBACiBkZWYgaXRlcl9pbnRlZ2VyX2Zvcm1hdHMoYnl0ZW9yZGVycz1ieXRlb3JkZXJzKToKICAgICBmb3IgY29kZSBpbiBpbnRlZ2VyX2NvZGVzOgogICAgICAgICBmb3IgYnl0ZW9yZGVyIGluIGJ5dGVvcmRlcnM6Ci0gICAgICAgICAgICBpZiAoYnl0ZW9yZGVyIGluICgnJywgJ0AnKSBhbmQgY29kZSBpbiAoJ3EnLCAnUScpIGFuZAotICAgICAgICAgICAgICAgIG5vdCBIQVZFX0xPTkdfTE9ORyk6Ci0gICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGlmIChieXRlb3JkZXIgbm90IGluICgnJywgJ0AnKSBhbmQgY29kZSBpbiAoJ24nLCAnTicpKToKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgeWllbGQgY29kZSwgYnl0ZW9yZGVyCiAKLSMgTmF0aXZlICdxJyBwYWNraW5nIGlzbid0IGF2YWlsYWJsZSBvbiBzeXN0ZW1zIHRoYXQgZG9uJ3QgaGF2ZSB0aGUgQwotIyBsb25nIGxvbmcgdHlwZS4KLXRyeToKLSAgICBzdHJ1Y3QucGFjaygncScsIDUpCi1leGNlcHQgc3RydWN0LmVycm9yOgotICAgIEhBVkVfTE9OR19MT05HID0gRmFsc2UKLWVsc2U6Ci0gICAgSEFWRV9MT05HX0xPTkcgPSBUcnVlCi0KIGRlZiBzdHJpbmdfcmV2ZXJzZShzKToKICAgICByZXR1cm4gc1s6Oi0xXQogCkBAIC0xNTgsOSArMTQ3LDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2l6ZSwgZXhwZWN0ZWRfc2l6ZVtjb2RlXSkKIAogICAgICAgICAjIG5hdGl2ZSBpbnRlZ2VyIHNpemVzCi0gICAgICAgIG5hdGl2ZV9wYWlycyA9ICdiQicsICdoSCcsICdpSScsICdsTCcsICduTicKLSAgICAgICAgaWYgSEFWRV9MT05HX0xPTkc6Ci0gICAgICAgICAgICBuYXRpdmVfcGFpcnMgKz0gJ3FRJywKKyAgICAgICAgbmF0aXZlX3BhaXJzID0gJ2JCJywgJ2hIJywgJ2lJJywgJ2xMJywgJ25OJywgJ3FRJwogICAgICAgICBmb3IgZm9ybWF0X3BhaXIgaW4gbmF0aXZlX3BhaXJzOgogICAgICAgICAgICAgZm9yIGJ5dGVvcmRlciBpbiAnJywgJ0AnOgogICAgICAgICAgICAgICAgIHNpZ25lZF9zaXplID0gc3RydWN0LmNhbGNzaXplKGJ5dGVvcmRlciArIGZvcm1hdF9wYWlyWzBdKQpAQCAtMTczLDkgKzE2MCw4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKDQsIHN0cnVjdC5jYWxjc2l6ZSgnbCcpKQogICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChzdHJ1Y3QuY2FsY3NpemUoJ2gnKSwgc3RydWN0LmNhbGNzaXplKCdpJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKHN0cnVjdC5jYWxjc2l6ZSgnaScpLCBzdHJ1Y3QuY2FsY3NpemUoJ2wnKSkKLSAgICAgICAgaWYgSEFWRV9MT05HX0xPTkc6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbCg4LCBzdHJ1Y3QuY2FsY3NpemUoJ3EnKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKHN0cnVjdC5jYWxjc2l6ZSgnbCcpLCBzdHJ1Y3QuY2FsY3NpemUoJ3EnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoOCwgc3RydWN0LmNhbGNzaXplKCdxJykpCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKHN0cnVjdC5jYWxjc2l6ZSgnbCcpLCBzdHJ1Y3QuY2FsY3NpemUoJ3EnKSkKICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoc3RydWN0LmNhbGNzaXplKCduJyksIHN0cnVjdC5jYWxjc2l6ZSgnaScpKQogICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChzdHJ1Y3QuY2FsY3NpemUoJ24nKSwgc3RydWN0LmNhbGNzaXplKCdQJykpCiAKQEAgLTM2Niw4ICszNTIsNiBAQAogICAgICAgICAjIFNGIGJ1ZyA3MDU4MzYuICAiPGYiIGFuZCAiPmYiIGhhZCBhIHNldmVyZSByb3VuZGluZyBidWcsIHdoZXJlIGEgY2FycnkKICAgICAgICAgIyBmcm9tIHRoZSBsb3ctb3JkZXIgZGlzY2FyZGVkIGJpdHMgY291bGQgcHJvcGFnYXRlIGludG8gdGhlIGV4cG9uZW50CiAgICAgICAgICMgZmllbGQsIGNhdXNpbmcgdGhlIHJlc3VsdCB0byBiZSB3cm9uZyBieSBhIGZhY3RvciBvZiAyLgotICAgICAgICBpbXBvcnQgbWF0aAotCiAgICAgICAgIGZvciBiYXNlIGluIHJhbmdlKDEsIDMzKToKICAgICAgICAgICAgICMgc21hbGxlciA8LSBsYXJnZXN0IHJlcHJlc2VudGFibGUgZmxvYXQgbGVzcyB0aGFuIGJhc2UuCiAgICAgICAgICAgICBkZWx0YSA9IDAuNQpAQCAtNjU5LDYgKzY0MywxMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiwgbmV4dCwgaXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIG5leHQsIGl0KQogCisgICAgZGVmIHRlc3RfaGFsZl9mbG9hdChzZWxmKToKKyAgICAgICAgIyBMaXR0bGUtZW5kaWFuIGV4YW1wbGVzIGZyb206CisgICAgICAgICMgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IYWxmX3ByZWNpc2lvbl9mbG9hdGluZy1wb2ludF9mb3JtYXQKKyAgICAgICAgZm9ybWF0X2JpdHNfZmxvYXRfX2NsZWFuUm91bmR0cmlwX2xpc3QgPSBbCisgICAgICAgICAgICAoYidceDAwXHgzYycsIDEuMCksCisgICAgICAgICAgICAoYidceDAwXHhjMCcsIC0yLjApLAorICAgICAgICAgICAgKGInXHhmZlx4N2InLCA2NTUwNC4wKSwgIyAgKG1heCBoYWxmIHByZWNpc2lvbikKKyAgICAgICAgICAgIChiJ1x4MDBceDA0JywgMioqLTE0KSwgIyB+PSA2LjEwMzUyICogMTAqKi01IChtaW4gcG9zIG5vcm1hbCkKKyAgICAgICAgICAgIChiJ1x4MDFceDAwJywgMioqLTI0KSwgIyB+PSA1Ljk2MDQ2ICogMTAqKi04IChtaW4gcG9zIHN1Ym5vcm1hbCkKKyAgICAgICAgICAgIChiJ1x4MDBceDAwJywgMC4wKSwKKyAgICAgICAgICAgIChiJ1x4MDBceDgwJywgLTAuMCksCisgICAgICAgICAgICAoYidceDAwXHg3YycsIGZsb2F0KCcraW5mJykpLAorICAgICAgICAgICAgKGInXHgwMFx4ZmMnLCBmbG9hdCgnLWluZicpKSwKKyAgICAgICAgICAgIChiJ1x4NTVceDM1JywgMC4zMzMyNTE5NTMxMjUpLCAjIH49IDEvMworICAgICAgICBdCisKKyAgICAgICAgZm9yIGxlX2JpdHMsIGYgaW4gZm9ybWF0X2JpdHNfZmxvYXRfX2NsZWFuUm91bmR0cmlwX2xpc3Q6CisgICAgICAgICAgICBiZV9iaXRzID0gbGVfYml0c1s6Oi0xXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLCBzdHJ1Y3QudW5wYWNrKCc8ZScsIGxlX2JpdHMpWzBdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZV9iaXRzLCBzdHJ1Y3QucGFjaygnPGUnLCBmKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZiwgc3RydWN0LnVucGFjaygnPmUnLCBiZV9iaXRzKVswXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmVfYml0cywgc3RydWN0LnBhY2soJz5lJywgZikpCisgICAgICAgICAgICBpZiBzeXMuYnl0ZW9yZGVyID09ICdsaXR0bGUnOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZiwgc3RydWN0LnVucGFjaygnZScsIGxlX2JpdHMpWzBdKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVfYml0cywgc3RydWN0LnBhY2soJ2UnLCBmKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLCBzdHJ1Y3QudW5wYWNrKCdlJywgYmVfYml0cylbMF0pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiZV9iaXRzLCBzdHJ1Y3QucGFjaygnZScsIGYpKQorCisgICAgICAgICMgQ2hlY2sgZm9yIE5hTiBoYW5kbGluZzoKKyAgICAgICAgZm9ybWF0X2JpdHNfX25hbl9saXN0ID0gWworICAgICAgICAgICAgKCc8ZScsIGInXHgwMVx4ZmMnKSwKKyAgICAgICAgICAgICgnPGUnLCBiJ1x4MDBceGZlJyksCisgICAgICAgICAgICAoJzxlJywgYidceGZmXHhmZicpLAorICAgICAgICAgICAgKCc8ZScsIGInXHgwMVx4N2MnKSwKKyAgICAgICAgICAgICgnPGUnLCBiJ1x4MDBceDdlJyksCisgICAgICAgICAgICAoJzxlJywgYidceGZmXHg3ZicpLAorICAgICAgICBdCisKKyAgICAgICAgZm9yIGZvcm1hdGNvZGUsIGJpdHMgaW4gZm9ybWF0X2JpdHNfX25hbl9saXN0OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNuYW4oc3RydWN0LnVucGFjaygnPGUnLCBiaXRzKVswXSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihzdHJ1Y3QudW5wYWNrKCc+ZScsIGJpdHNbOjotMV0pWzBdKSkKKworICAgICAgICAjIENoZWNrIHRoYXQgcGFja2luZyBwcm9kdWNlcyBhIGJpdCBwYXR0ZXJuIHJlcHJlc2VudGluZyBhIHF1aWV0IE5hTjoKKyAgICAgICAgIyBhbGwgZXhwb25lbnQgYml0cyBhbmQgdGhlIG1zYiBvZiB0aGUgZnJhY3Rpb24gc2hvdWxkIGFsbCBiZSAxLgorICAgICAgICBwYWNrZWQgPSBzdHJ1Y3QucGFjaygnPGUnLCBtYXRoLm5hbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYWNrZWRbMV0gJiAweDdlLCAweDdlKQorICAgICAgICBwYWNrZWQgPSBzdHJ1Y3QucGFjaygnPGUnLCAtbWF0aC5uYW4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFja2VkWzFdICYgMHg3ZSwgMHg3ZSkKKworICAgICAgICAjIENoZWNrcyBmb3Igcm91bmQtdG8tZXZlbiBiZWhhdmlvcgorICAgICAgICBmb3JtYXRfYml0c19mbG9hdF9fcm91bmRpbmdfbGlzdCA9IFsKKyAgICAgICAgICAgICgnPmUnLCBiJ1x4MDBceDAxJywgMi4wKiotMjUgKyAyLjAqKi0zNSksICMgUm91bmRzIHRvIG1pbmltdW0gc3Vibm9ybWFsCisgICAgICAgICAgICAoJz5lJywgYidceDAwXHgwMCcsIDIuMCoqLTI1KSwgIyBVbmRlcmZsb3dzIHRvIHplcm8gKG5lYXJlc3QgZXZlbiBtb2RlKQorICAgICAgICAgICAgKCc+ZScsIGInXHgwMFx4MDAnLCAyLjAqKi0yNiksICMgVW5kZXJmbG93cyB0byB6ZXJvCisgICAgICAgICAgICAoJz5lJywgYidceDAzXHhmZicsIDIuMCoqLTE0IC0gMi4wKiotMjQpLCAjIExhcmdlc3Qgc3Vibm9ybWFsLgorICAgICAgICAgICAgKCc+ZScsIGInXHgwM1x4ZmYnLCAyLjAqKi0xNCAtIDIuMCoqLTI1IC0gMi4wKiotNjUpLAorICAgICAgICAgICAgKCc+ZScsIGInXHgwNFx4MDAnLCAyLjAqKi0xNCAtIDIuMCoqLTI1KSwKKyAgICAgICAgICAgICgnPmUnLCBiJ1x4MDRceDAwJywgMi4wKiotMTQpLCAjIFNtYWxsZXN0IG5vcm1hbC4KKyAgICAgICAgICAgICgnPmUnLCBiJ1x4M2NceDAxJywgMS4wKzIuMCoqLTExICsgMi4wKiotMTYpLCAjIHJvdW5kcyB0byAxLjArMioqKC0xMCkKKyAgICAgICAgICAgICgnPmUnLCBiJ1x4M2NceDAwJywgMS4wKzIuMCoqLTExKSwgIyByb3VuZHMgdG8gMS4wIChuZWFyZXN0IGV2ZW4gbW9kZSkKKyAgICAgICAgICAgICgnPmUnLCBiJ1x4M2NceDAwJywgMS4wKzIuMCoqLTEyKSwgIyByb3VuZHMgdG8gMS4wCisgICAgICAgICAgICAoJz5lJywgYidceDdiXHhmZicsIDY1NTA0KSwgIyBsYXJnZXN0IG5vcm1hbAorICAgICAgICAgICAgKCc+ZScsIGInXHg3Ylx4ZmYnLCA2NTUxOSksICMgcm91bmRzIHRvIDY1NTA0CisgICAgICAgICAgICAoJz5lJywgYidceDgwXHgwMScsIC0yLjAqKi0yNSAtIDIuMCoqLTM1KSwgIyBSb3VuZHMgdG8gbWluaW11bSBzdWJub3JtYWwKKyAgICAgICAgICAgICgnPmUnLCBiJ1x4ODBceDAwJywgLTIuMCoqLTI1KSwgIyBVbmRlcmZsb3dzIHRvIHplcm8gKG5lYXJlc3QgZXZlbiBtb2RlKQorICAgICAgICAgICAgKCc+ZScsIGInXHg4MFx4MDAnLCAtMi4wKiotMjYpLCAjIFVuZGVyZmxvd3MgdG8gemVybworICAgICAgICAgICAgKCc+ZScsIGInXHhiY1x4MDEnLCAtMS4wLTIuMCoqLTExIC0gMi4wKiotMTYpLCAjIHJvdW5kcyB0byAxLjArMioqKC0xMCkKKyAgICAgICAgICAgICgnPmUnLCBiJ1x4YmNceDAwJywgLTEuMC0yLjAqKi0xMSksICMgcm91bmRzIHRvIDEuMCAobmVhcmVzdCBldmVuIG1vZGUpCisgICAgICAgICAgICAoJz5lJywgYidceGJjXHgwMCcsIC0xLjAtMi4wKiotMTIpLCAjIHJvdW5kcyB0byAxLjAKKyAgICAgICAgICAgICgnPmUnLCBiJ1x4ZmJceGZmJywgLTY1NTE5KSwgIyByb3VuZHMgdG8gNjU1MDQKKyAgICAgICAgXQorCisgICAgICAgIGZvciBmb3JtYXRjb2RlLCBiaXRzLCBmIGluIGZvcm1hdF9iaXRzX2Zsb2F0X19yb3VuZGluZ19saXN0OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiaXRzLCBzdHJ1Y3QucGFjayhmb3JtYXRjb2RlLCBmKSkKKworICAgICAgICAjIFRoaXMgb3ZlcmZsb3dzLCBhbmQgc28gcmFpc2VzIGFuIGVycm9yCisgICAgICAgIGZvcm1hdF9iaXRzX2Zsb2F0X19yb3VuZGluZ0Vycm9yX2xpc3QgPSBbCisgICAgICAgICAgICAjIFZhbHVlcyB0aGF0IHJvdW5kIHRvIGluZmluaXR5LgorICAgICAgICAgICAgKCc+ZScsIDY1NTIwLjApLAorICAgICAgICAgICAgKCc+ZScsIDY1NTM2LjApLAorICAgICAgICAgICAgKCc+ZScsIDFlMzAwKSwKKyAgICAgICAgICAgICgnPmUnLCAtNjU1MjAuMCksCisgICAgICAgICAgICAoJz5lJywgLTY1NTM2LjApLAorICAgICAgICAgICAgKCc+ZScsIC0xZTMwMCksCisgICAgICAgICAgICAoJzxlJywgNjU1MjAuMCksCisgICAgICAgICAgICAoJzxlJywgNjU1MzYuMCksCisgICAgICAgICAgICAoJzxlJywgMWUzMDApLAorICAgICAgICAgICAgKCc8ZScsIC02NTUyMC4wKSwKKyAgICAgICAgICAgICgnPGUnLCAtNjU1MzYuMCksCisgICAgICAgICAgICAoJzxlJywgLTFlMzAwKSwKKyAgICAgICAgXQorCisgICAgICAgIGZvciBmb3JtYXRjb2RlLCBmIGluIGZvcm1hdF9iaXRzX2Zsb2F0X19yb3VuZGluZ0Vycm9yX2xpc3Q6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzdHJ1Y3QucGFjaywgZm9ybWF0Y29kZSwgZikKKworICAgICAgICAjIERvdWJsZSByb3VuZGluZworICAgICAgICBmb3JtYXRfYml0c19mbG9hdF9fZG91YmxlUm91bmRpbmdFcnJvcl9saXN0ID0gWworICAgICAgICAgICAgKCc+ZScsIGInXHg2N1x4ZmYnLCAweDFmZmRmZmZmZmYgKiAyKiotMjYpLCAjIHNob3VsZCBiZSAyMDQ3LCBpZiBkb3VibGUtcm91bmRlZCA2ND4zMj4xNiwgYmVjb21lcyAyMDQ4CisgICAgICAgIF0KKworICAgICAgICBmb3IgZm9ybWF0Y29kZSwgYml0cywgZiBpbiBmb3JtYXRfYml0c19mbG9hdF9fZG91YmxlUm91bmRpbmdFcnJvcl9saXN0OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiaXRzLCBzdHJ1Y3QucGFjayhmb3JtYXRjb2RlLCBmKSkKKwogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdWJjbGFzc2luaXQucHkgYi9MaWIvdGVzdC90ZXN0X3N1YmNsYXNzaW5pdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzMzMWJiOQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3ViY2xhc3Npbml0LnB5CkBAIC0wLDAgKzEsMjg0IEBACitpbXBvcnQgc3lzCitpbXBvcnQgdHlwZXMKK2ltcG9ydCB1bml0dGVzdAorCisKK2NsYXNzIFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2luaXRfc3ViY2xhc3Moc2VsZik6CisgICAgICAgIGNsYXNzIEE6CisgICAgICAgICAgICBpbml0aWFsaXplZCA9IEZhbHNlCisKKyAgICAgICAgICAgIGRlZiBfX2luaXRfc3ViY2xhc3NfXyhjbHMpOgorICAgICAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X3N1YmNsYXNzX18oKQorICAgICAgICAgICAgICAgIGNscy5pbml0aWFsaXplZCA9IFRydWUKKworICAgICAgICBjbGFzcyBCKEEpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoQS5pbml0aWFsaXplZCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKEIuaW5pdGlhbGl6ZWQpCisKKyAgICBkZWYgdGVzdF9pbml0X3N1YmNsYXNzX2RpY3Qoc2VsZik6CisgICAgICAgIGNsYXNzIEEoZGljdCk6CisgICAgICAgICAgICBpbml0aWFsaXplZCA9IEZhbHNlCisKKyAgICAgICAgICAgIGRlZiBfX2luaXRfc3ViY2xhc3NfXyhjbHMpOgorICAgICAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X3N1YmNsYXNzX18oKQorICAgICAgICAgICAgICAgIGNscy5pbml0aWFsaXplZCA9IFRydWUKKworICAgICAgICBjbGFzcyBCKEEpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoQS5pbml0aWFsaXplZCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKEIuaW5pdGlhbGl6ZWQpCisKKyAgICBkZWYgdGVzdF9pbml0X3N1YmNsYXNzX2t3YXJncyhzZWxmKToKKyAgICAgICAgY2xhc3MgQToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfc3ViY2xhc3NfXyhjbHMsICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgICBjbHMua3dhcmdzID0ga3dhcmdzCisKKyAgICAgICAgY2xhc3MgQihBLCB4PTMpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQi5rd2FyZ3MsIGRpY3QoeD0zKSkKKworICAgIGRlZiB0ZXN0X2luaXRfc3ViY2xhc3NfZXJyb3Ioc2VsZik6CisgICAgICAgIGNsYXNzIEE6CisgICAgICAgICAgICBkZWYgX19pbml0X3N1YmNsYXNzX18oY2xzKToKKyAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcik6CisgICAgICAgICAgICBjbGFzcyBCKEEpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X2luaXRfc3ViY2xhc3Nfd3Jvbmcoc2VsZik6CisgICAgICAgIGNsYXNzIEE6CisgICAgICAgICAgICBkZWYgX19pbml0X3N1YmNsYXNzX18oY2xzLCB3aGF0ZXZlcik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGNsYXNzIEIoQSk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3RfaW5pdF9zdWJjbGFzc19za2lwcGVkKHNlbGYpOgorICAgICAgICBjbGFzcyBCYXNlV2l0aEluaXQ6CisgICAgICAgICAgICBkZWYgX19pbml0X3N1YmNsYXNzX18oY2xzLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfc3ViY2xhc3NfXygqKmt3YXJncykKKyAgICAgICAgICAgICAgICBjbHMuaW5pdGlhbGl6ZWQgPSBjbHMKKworICAgICAgICBjbGFzcyBCYXNlV2l0aG91dEluaXQoQmFzZVdpdGhJbml0KToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBjbGFzcyBBKEJhc2VXaXRob3V0SW5pdCk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhBLmluaXRpYWxpemVkLCBBKQorICAgICAgICBzZWxmLmFzc2VydElzKEJhc2VXaXRob3V0SW5pdC5pbml0aWFsaXplZCwgQmFzZVdpdGhvdXRJbml0KQorCisgICAgZGVmIHRlc3RfaW5pdF9zdWJjbGFzc19kaWFtb25kKHNlbGYpOgorICAgICAgICBjbGFzcyBCYXNlOgorICAgICAgICAgICAgZGVmIF9faW5pdF9zdWJjbGFzc19fKGNscywgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X3N1YmNsYXNzX18oKiprd2FyZ3MpCisgICAgICAgICAgICAgICAgY2xzLmNhbGxzID0gW10KKworICAgICAgICBjbGFzcyBMZWZ0KEJhc2UpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGNsYXNzIE1pZGRsZToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfc3ViY2xhc3NfXyhjbHMsIG1pZGRsZSwgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X3N1YmNsYXNzX18oKiprd2FyZ3MpCisgICAgICAgICAgICAgICAgY2xzLmNhbGxzICs9IFttaWRkbGVdCisKKyAgICAgICAgY2xhc3MgUmlnaHQoQmFzZSk6CisgICAgICAgICAgICBkZWYgX19pbml0X3N1YmNsYXNzX18oY2xzLCByaWdodD0icmlnaHQiLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfc3ViY2xhc3NfXygqKmt3YXJncykKKyAgICAgICAgICAgICAgICBjbHMuY2FsbHMgKz0gW3JpZ2h0XQorCisgICAgICAgIGNsYXNzIEEoTGVmdCwgTWlkZGxlLCBSaWdodCwgbWlkZGxlPSJtaWRkbGUiKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEEuY2FsbHMsIFsicmlnaHQiLCAibWlkZGxlIl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTGVmdC5jYWxscywgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUmlnaHQuY2FsbHMsIFtdKQorCisgICAgZGVmIHRlc3Rfc2V0X25hbWUoc2VsZik6CisgICAgICAgIGNsYXNzIERlc2NyaXB0b3I6CisgICAgICAgICAgICBkZWYgX19zZXRfbmFtZV9fKHNlbGYsIG93bmVyLCBuYW1lKToKKyAgICAgICAgICAgICAgICBzZWxmLm93bmVyID0gb3duZXIKKyAgICAgICAgICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisKKyAgICAgICAgY2xhc3MgQToKKyAgICAgICAgICAgIGQgPSBEZXNjcmlwdG9yKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEEuZC5uYW1lLCAiZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoQS5kLm93bmVyLCBBKQorCisgICAgZGVmIHRlc3Rfc2V0X25hbWVfbWV0YWNsYXNzKHNlbGYpOgorICAgICAgICBjbGFzcyBNZXRhKHR5cGUpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbnMpOgorICAgICAgICAgICAgICAgIHJldCA9IHN1cGVyKCkuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBucykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJldC5kLm5hbWUsICJkIikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHJldC5kLm93bmVyLCByZXQpCisgICAgICAgICAgICAgICAgcmV0dXJuIDAKKworICAgICAgICBjbGFzcyBEZXNjcmlwdG9yOgorICAgICAgICAgICAgZGVmIF9fc2V0X25hbWVfXyhzZWxmLCBvd25lciwgbmFtZSk6CisgICAgICAgICAgICAgICAgc2VsZi5vd25lciA9IG93bmVyCisgICAgICAgICAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorCisgICAgICAgIGNsYXNzIEEobWV0YWNsYXNzPU1ldGEpOgorICAgICAgICAgICAgZCA9IERlc2NyaXB0b3IoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEEsIDApCisKKyAgICBkZWYgdGVzdF9zZXRfbmFtZV9lcnJvcihzZWxmKToKKyAgICAgICAgY2xhc3MgRGVzY3JpcHRvcjoKKyAgICAgICAgICAgIGRlZiBfX3NldF9uYW1lX18oc2VsZiwgb3duZXIsIG5hbWUpOgorICAgICAgICAgICAgICAgIDEvMAorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIGNsYXNzIE5vdEdvaW5nVG9Xb3JrOgorICAgICAgICAgICAgICAgIGF0dHIgPSBEZXNjcmlwdG9yKCkKKworICAgICAgICBleGMgPSBjbS5leGNlcHRpb24KKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChzdHIoZXhjKSwgcidcYk5vdEdvaW5nVG9Xb3JrXGInKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHN0cihleGMpLCByJ1xiYXR0clxiJykKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChzdHIoZXhjKSwgcidcYkRlc2NyaXB0b3JcYicpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShleGMuX19jYXVzZV9fLCBaZXJvRGl2aXNpb25FcnJvcikKKworICAgIGRlZiB0ZXN0X3NldF9uYW1lX3dyb25nKHNlbGYpOgorICAgICAgICBjbGFzcyBEZXNjcmlwdG9yOgorICAgICAgICAgICAgZGVmIF9fc2V0X25hbWVfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgY2xhc3MgTm90R29pbmdUb1dvcms6CisgICAgICAgICAgICAgICAgYXR0ciA9IERlc2NyaXB0b3IoKQorCisgICAgICAgIGV4YyA9IGNtLmV4Y2VwdGlvbgorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHN0cihleGMpLCByJ1xiTm90R29pbmdUb1dvcmtcYicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoc3RyKGV4YyksIHInXGJhdHRyXGInKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHN0cihleGMpLCByJ1xiRGVzY3JpcHRvclxiJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGV4Yy5fX2NhdXNlX18sIFR5cGVFcnJvcikKKworICAgIGRlZiB0ZXN0X3NldF9uYW1lX2xvb2t1cChzZWxmKToKKyAgICAgICAgcmVzb2x2ZWQgPSBbXQorICAgICAgICBjbGFzcyBOb25EZXNjcmlwdG9yOgorICAgICAgICAgICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpOgorICAgICAgICAgICAgICAgIHJlc29sdmVkLmFwcGVuZChuYW1lKQorCisgICAgICAgIGNsYXNzIEE6CisgICAgICAgICAgICBkID0gTm9uRGVzY3JpcHRvcigpCisKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignX19zZXRfbmFtZV9fJywgcmVzb2x2ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ19fc2V0X25hbWVfXyBpcyBsb29rZWQgdXAgaW4gaW5zdGFuY2UgZGljdCcpCisKKyAgICBkZWYgdGVzdF9zZXRfbmFtZV9pbml0X3N1YmNsYXNzKHNlbGYpOgorICAgICAgICBjbGFzcyBEZXNjcmlwdG9yOgorICAgICAgICAgICAgZGVmIF9fc2V0X25hbWVfXyhzZWxmLCBvd25lciwgbmFtZSk6CisgICAgICAgICAgICAgICAgc2VsZi5vd25lciA9IG93bmVyCisgICAgICAgICAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorCisgICAgICAgIGNsYXNzIE1ldGEodHlwZSk6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBucyk6CisgICAgICAgICAgICAgICAgc2VsZiA9IHN1cGVyKCkuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBucykKKyAgICAgICAgICAgICAgICBzZWxmLm1ldGFfb3duZXIgPSBzZWxmLm93bmVyCisgICAgICAgICAgICAgICAgc2VsZi5tZXRhX25hbWUgPSBzZWxmLm5hbWUKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorCisgICAgICAgIGNsYXNzIEE6CisgICAgICAgICAgICBkZWYgX19pbml0X3N1YmNsYXNzX18oY2xzKToKKyAgICAgICAgICAgICAgICBjbHMub3duZXIgPSBjbHMuZC5vd25lcgorICAgICAgICAgICAgICAgIGNscy5uYW1lID0gY2xzLmQubmFtZQorCisgICAgICAgIGNsYXNzIEIoQSwgbWV0YWNsYXNzPU1ldGEpOgorICAgICAgICAgICAgZCA9IERlc2NyaXB0b3IoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoQi5vd25lciwgQikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChCLm5hbWUsICdkJykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhCLm1ldGFfb3duZXIsIEIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQi5uYW1lLCAnZCcpCisKKyAgICBkZWYgdGVzdF9zZXRfbmFtZV9tb2RpZnlpbmdfZGljdChzZWxmKToKKyAgICAgICAgbm90aWZpZWQgPSBbXQorICAgICAgICBjbGFzcyBEZXNjcmlwdG9yOgorICAgICAgICAgICAgZGVmIF9fc2V0X25hbWVfXyhzZWxmLCBvd25lciwgbmFtZSk6CisgICAgICAgICAgICAgICAgc2V0YXR0cihvd25lciwgbmFtZSArICd4JywgTm9uZSkKKyAgICAgICAgICAgICAgICBub3RpZmllZC5hcHBlbmQobmFtZSkKKworICAgICAgICBjbGFzcyBBOgorICAgICAgICAgICAgYSA9IERlc2NyaXB0b3IoKQorICAgICAgICAgICAgYiA9IERlc2NyaXB0b3IoKQorICAgICAgICAgICAgYyA9IERlc2NyaXB0b3IoKQorICAgICAgICAgICAgZCA9IERlc2NyaXB0b3IoKQorICAgICAgICAgICAgZSA9IERlc2NyaXB0b3IoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0Q291bnRFcXVhbChub3RpZmllZCwgWydhJywgJ2InLCAnYycsICdkJywgJ2UnXSkKKworICAgIGRlZiB0ZXN0X2Vycm9ycyhzZWxmKToKKyAgICAgICAgY2xhc3MgTXlNZXRhKHR5cGUpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGNsYXNzIE15Q2xhc3MobWV0YWNsYXNzPU15TWV0YSwgb3RoZXJhcmc9MSk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHR5cGVzLm5ld19jbGFzcygiTXlDbGFzcyIsIChvYmplY3QsKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWN0KG1ldGFjbGFzcz1NeU1ldGEsIG90aGVyYXJnPTEpKQorICAgICAgICB0eXBlcy5wcmVwYXJlX2NsYXNzKCJNeUNsYXNzIiwgKG9iamVjdCwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3QobWV0YWNsYXNzPU15TWV0YSwgb3RoZXJhcmc9MSkpCisKKyAgICAgICAgY2xhc3MgTXlNZXRhKHR5cGUpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsIG90aGVyYXJnKToKKyAgICAgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgY2xhc3MgTXlDbGFzcyhtZXRhY2xhc3M9TXlNZXRhLCBvdGhlcmFyZz0xKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgY2xhc3MgTXlNZXRhKHR5cGUpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlLCBvdGhlcmFyZyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpCisKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlLCBvdGhlcmFyZyk6CisgICAgICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhuYW1lLCBiYXNlcywgbmFtZXNwYWNlKQorICAgICAgICAgICAgICAgIHNlbGYub3RoZXJhcmcgPSBvdGhlcmFyZworCisgICAgICAgIGNsYXNzIE15Q2xhc3MobWV0YWNsYXNzPU15TWV0YSwgb3RoZXJhcmc9MSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChNeUNsYXNzLm90aGVyYXJnLCAxKQorCisgICAgZGVmIHRlc3RfZXJyb3JzX2NoYW5nZWRfcGVwNDg3KHNlbGYpOgorICAgICAgICAjIFRoZXNlIHRlc3RzIGZhaWxlZCBiZWZvcmUgUHl0aG9uIDMuNiwgUEVQIDQ4NworICAgICAgICBjbGFzcyBNeU1ldGEodHlwZSk6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpOgorICAgICAgICAgICAgICAgIHJldHVybiBzdXBlcigpLl9fbmV3X18oY2xzLCBuYW1lPW5hbWUsIGJhc2VzPWJhc2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGljdD1uYW1lc3BhY2UpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgY2xhc3MgTXlDbGFzcyhtZXRhY2xhc3M9TXlNZXRhKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgY2xhc3MgTXlNZXRhKHR5cGUpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlLCBvdGhlcmFyZyk6CisgICAgICAgICAgICAgICAgc2VsZiA9IHN1cGVyKCkuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpCisgICAgICAgICAgICAgICAgc2VsZi5vdGhlcmFyZyA9IG90aGVyYXJnCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKworICAgICAgICBjbGFzcyBNeUNsYXNzKG1ldGFjbGFzcz1NeU1ldGEsIG90aGVyYXJnPTEpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTXlDbGFzcy5vdGhlcmFyZywgMSkKKworICAgIGRlZiB0ZXN0X3R5cGUoc2VsZik6CisgICAgICAgIHQgPSB0eXBlKCdOZXdDbGFzcycsIChvYmplY3QsKSwge30pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh0LCB0eXBlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuX19uYW1lX18sICdOZXdDbGFzcycpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgdHlwZShuYW1lPSdOZXdDbGFzcycsIGJhc2VzPShvYmplY3QsKSwgZGljdD17fSkKKworCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdWJwcm9jZXNzLnB5IGIvTGliL3Rlc3QvdGVzdF9zdWJwcm9jZXNzLnB5CmluZGV4IDc1OGUwOTQuLjg5ZGU2ZDEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3VicHJvY2Vzcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N1YnByb2Nlc3MucHkKQEAgLTEsMjAgKzEsMTYgQEAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB1bml0dGVzdCBpbXBvcnQgbW9jawotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHNjcmlwdF9oZWxwZXIKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKIGltcG9ydCBzaWduYWwKIGltcG9ydCBpbwotaW1wb3J0IGxvY2FsZQogaW1wb3J0IG9zCiBpbXBvcnQgZXJybm8KIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHRpbWUKLWltcG9ydCByZQogaW1wb3J0IHNlbGVjdG9ycwogaW1wb3J0IHN5c2NvbmZpZwotaW1wb3J0IHdhcm5pbmdzCiBpbXBvcnQgc2VsZWN0CiBpbXBvcnQgc2h1dGlsCiBpbXBvcnQgZ2MKQEAgLTI1LDYgKzIxLDkgQEAKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICB0aHJlYWRpbmcgPSBOb25lCiAKK2lmIHN1cHBvcnQuUEdPOgorICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJ0ZXN0IGlzIG5vdCBoZWxwZnVsIGZvciBQR08iKQorCiBtc3dpbmRvd3MgPSAoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIpCiAKICMKQEAgLTI5NCw3ICsyOTMsOCBAQAogICAgICAgICAjIFZlcmlmeSBmaXJzdCB0aGF0IHRoZSBjYWxsIHN1Y2NlZWRzIHdpdGhvdXQgdGhlIGV4ZWN1dGFibGUgYXJnLgogICAgICAgICBwcmVfYXJncyA9IFtzeXMuZXhlY3V0YWJsZSwgIi1jIl0KICAgICAgICAgc2VsZi5fYXNzZXJ0X3B5dGhvbihwcmVfYXJncykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRmlsZU5vdEZvdW5kRXJyb3IsIHNlbGYuX2Fzc2VydF9weXRob24sIHByZV9hcmdzLAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygoRmlsZU5vdEZvdW5kRXJyb3IsIFBlcm1pc3Npb25FcnJvciksCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Fzc2VydF9weXRob24sIHByZV9hcmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRhYmxlPSJkb2Vzbm90ZXhpc3QiKQogCiAgICAgQHVuaXR0ZXN0LnNraXBJZihtc3dpbmRvd3MsICJleGVjdXRhYmxlIGFyZ3VtZW50IHJlcGxhY2VzIHNoZWxsIikKQEAgLTQ0OCw4ICs0NDgsOCBAQAogICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICItYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbXBvcnQgc3lzOyBzeXMuc3Rkb3V0LndyaXRlKCJvcmFuZ2UiKSddLAogICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZG91dC5jbG9zZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZG91dC5yZWFkKCksIGIib3JhbmdlIikKKyAgICAgICAgd2l0aCBwOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZG91dC5yZWFkKCksIGIib3JhbmdlIikKIAogICAgIGRlZiB0ZXN0X3N0ZG91dF9maWxlZGVzKHNlbGYpOgogICAgICAgICAjIHN0ZG91dCBpcyBzZXQgdG8gb3BlbiBmaWxlIGRlc2NyaXB0b3IKQEAgLTQ3OSw4ICs0NzksOCBAQAogICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICItYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbXBvcnQgc3lzOyBzeXMuc3RkZXJyLndyaXRlKCJzdHJhd2JlcnJ5IiknXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQotICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRlcnIuY2xvc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0U3RkZXJyRXF1YWwocC5zdGRlcnIucmVhZCgpLCBiInN0cmF3YmVycnkiKQorICAgICAgICB3aXRoIHA6CisgICAgICAgICAgICBzZWxmLmFzc2VydFN0ZGVyckVxdWFsKHAuc3RkZXJyLnJlYWQoKSwgYiJzdHJhd2JlcnJ5IikKIAogICAgIGRlZiB0ZXN0X3N0ZGVycl9maWxlZGVzKHNlbGYpOgogICAgICAgICAjIHN0ZGVyciBpcyBzZXQgdG8gb3BlbiBmaWxlIGRlc2NyaXB0b3IKQEAgLTUzNSw4ICs1MzUsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N5cy5zdGRlcnIud3JpdGUoIm9yYW5nZSIpJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkKLSAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3Rkb3V0LmNsb3NlKQotICAgICAgICBzZWxmLmFzc2VydFN0ZGVyckVxdWFsKHAuc3Rkb3V0LnJlYWQoKSwgYiJhcHBsZW9yYW5nZSIpCisgICAgICAgIHdpdGggcDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0U3RkZXJyRXF1YWwocC5zdGRvdXQucmVhZCgpLCBiImFwcGxlb3JhbmdlIikKIAogICAgIGRlZiB0ZXN0X3N0ZG91dF9zdGRlcnJfZmlsZShzZWxmKToKICAgICAgICAgIyBjYXB0dXJlIHN0ZG91dCBhbmQgc3RkZXJyIHRvIHRoZSBzYW1lIG9wZW4gZmlsZQpAQCAtNzk0LDE4ICs3OTQsMTkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml2ZXJzYWxfbmV3bGluZXM9MSkKLSAgICAgICAgcC5zdGRpbi53cml0ZSgibGluZTFcbiIpCi0gICAgICAgIHAuc3RkaW4uZmx1c2goKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3Rkb3V0LnJlYWRsaW5lKCksICJsaW5lMVxuIikKLSAgICAgICAgcC5zdGRpbi53cml0ZSgibGluZTNcbiIpCi0gICAgICAgIHAuc3RkaW4uY2xvc2UoKQotICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRvdXQuY2xvc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQucmVhZGxpbmUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAibGluZTJcbiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQucmVhZCg2KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAibGluZTNcbiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQucmVhZCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lNFxubGluZTVcbmxpbmU2XG5saW5lN1xubGluZTgiKQorICAgICAgICB3aXRoIHA6CisgICAgICAgICAgICBwLnN0ZGluLndyaXRlKCJsaW5lMVxuIikKKyAgICAgICAgICAgIHAuc3RkaW4uZmx1c2goKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZG91dC5yZWFkbGluZSgpLCAibGluZTFcbiIpCisgICAgICAgICAgICBwLnN0ZGluLndyaXRlKCJsaW5lM1xuIikKKyAgICAgICAgICAgIHAuc3RkaW4uY2xvc2UoKQorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3Rkb3V0LmNsb3NlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZG91dC5yZWFkbGluZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZTJcbiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3Rkb3V0LnJlYWQoNiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lM1xuIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQucmVhZCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZTRcbmxpbmU1XG5saW5lNlxubGluZTdcbmxpbmU4IikKIAogICAgIGRlZiB0ZXN0X3VuaXZlcnNhbF9uZXdsaW5lc19jb21tdW5pY2F0ZShzZWxmKToKICAgICAgICAgIyB1bml2ZXJzYWwgbmV3bGluZXMgdGhyb3VnaCBjb21tdW5pY2F0ZSgpCkBAIC04OTQsMzEgKzg5NSw0MiBAQAogICAgICAgICAjCiAgICAgICAgICMgVVRGLTE2IGFuZCBVVEYtMzItQkUgYXJlIHN1ZmZpY2llbnQgdG8gY2hlY2sgYm90aCB3aXRoIEJPTSBhbmQKICAgICAgICAgIyB3aXRob3V0LCBhbmQgVVRGLTE2IGFuZCBVVEYtMzIuCi0gICAgICAgIGltcG9ydCBfYm9vdGxvY2FsZQogICAgICAgICBmb3IgZW5jb2RpbmcgaW4gWyd1dGYtMTYnLCAndXRmLTMyLWJlJ106Ci0gICAgICAgICAgICBvbGRfZ2V0cHJlZmVycmVkZW5jb2RpbmcgPSBfYm9vdGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZwotICAgICAgICAgICAgIyBJbmRpcmVjdGx5IHZpYSBpby5UZXh0SU9XcmFwcGVyLCBQb3BlbigpIGRlZmF1bHRzIHRvCi0gICAgICAgICAgICAjIGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyhGYWxzZSkgYW5kIGVhcmxpZXIgaW4gUHl0aG9uIDMuMiB0bwotICAgICAgICAgICAgIyBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoKS4KLSAgICAgICAgICAgIGRlZiBnZXRwcmVmZXJyZWRlbmNvZGluZyhkb19zZXRsb2NhbGU9VHJ1ZSk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVuY29kaW5nCiAgICAgICAgICAgICBjb2RlID0gKCJpbXBvcnQgc3lzOyAiCiAgICAgICAgICAgICAgICAgICAgIHIic3lzLnN0ZG91dC5idWZmZXIud3JpdGUoJzFcclxuMlxyM1xuNCcuZW5jb2RlKCclcycpKSIgJQogICAgICAgICAgICAgICAgICAgICBlbmNvZGluZykKICAgICAgICAgICAgIGFyZ3MgPSBbc3lzLmV4ZWN1dGFibGUsICctYycsIGNvZGVdCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgX2Jvb3Rsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcgPSBnZXRwcmVmZXJyZWRlbmNvZGluZwotICAgICAgICAgICAgICAgICMgV2Ugc2V0IHN0ZGluIHRvIGJlIG5vbi1Ob25lIGJlY2F1c2UsIGFzIG9mIHRoaXMgd3JpdGluZywKLSAgICAgICAgICAgICAgICAjIGEgZGlmZmVyZW50IGNvZGUgcGF0aCBpcyB1c2VkIHdoZW4gdGhlIG51bWJlciBvZiBwaXBlcyBpcwotICAgICAgICAgICAgICAgICMgemVybyBvciBvbmUuCi0gICAgICAgICAgICAgICAgcG9wZW4gPSBzdWJwcm9jZXNzLlBvcGVuKGFyZ3MsIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpCi0gICAgICAgICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwb3Blbi5jb21tdW5pY2F0ZShpbnB1dD0nJykKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgX2Jvb3Rsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcgPSBvbGRfZ2V0cHJlZmVycmVkZW5jb2RpbmcKKyAgICAgICAgICAgICMgV2Ugc2V0IHN0ZGluIHRvIGJlIG5vbi1Ob25lIGJlY2F1c2UsIGFzIG9mIHRoaXMgd3JpdGluZywKKyAgICAgICAgICAgICMgYSBkaWZmZXJlbnQgY29kZSBwYXRoIGlzIHVzZWQgd2hlbiB0aGUgbnVtYmVyIG9mIHBpcGVzIGlzCisgICAgICAgICAgICAjIHplcm8gb3Igb25lLgorICAgICAgICAgICAgcG9wZW4gPSBzdWJwcm9jZXNzLlBvcGVuKGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9ZW5jb2RpbmcpCisgICAgICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHBvcGVuLmNvbW11bmljYXRlKGlucHV0PScnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRvdXQsICcxXG4yXG4zXG40JykKIAorICAgIGRlZiB0ZXN0X2NvbW11bmljYXRlX2Vycm9ycyhzZWxmKToKKyAgICAgICAgZm9yIGVycm9ycywgZXhwZWN0ZWQgaW4gWworICAgICAgICAgICAgKCdpZ25vcmUnLCAnJyksCisgICAgICAgICAgICAoJ3JlcGxhY2UnLCAnXHVmZmZkXHVmZmZkJyksCisgICAgICAgICAgICAoJ3N1cnJvZ2F0ZWVzY2FwZScsICdcdWRjODBcdWRjODAnKSwKKyAgICAgICAgICAgICgnYmFja3NsYXNocmVwbGFjZScsICdcXHg4MFxceDgwJyksCisgICAgICAgIF06CisgICAgICAgICAgICBjb2RlID0gKCJpbXBvcnQgc3lzOyAiCisgICAgICAgICAgICAgICAgICAgIHIic3lzLnN0ZG91dC5idWZmZXIud3JpdGUoYidbXHg4MFx4ODBdJykiKQorICAgICAgICAgICAgYXJncyA9IFtzeXMuZXhlY3V0YWJsZSwgJy1jJywgY29kZV0KKyAgICAgICAgICAgICMgV2Ugc2V0IHN0ZGluIHRvIGJlIG5vbi1Ob25lIGJlY2F1c2UsIGFzIG9mIHRoaXMgd3JpdGluZywKKyAgICAgICAgICAgICMgYSBkaWZmZXJlbnQgY29kZSBwYXRoIGlzIHVzZWQgd2hlbiB0aGUgbnVtYmVyIG9mIHBpcGVzIGlzCisgICAgICAgICAgICAjIHplcm8gb3Igb25lLgorICAgICAgICAgICAgcG9wZW4gPSBzdWJwcm9jZXNzLlBvcGVuKGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9J3V0Zi04JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnM9ZXJyb3JzKQorICAgICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwb3Blbi5jb21tdW5pY2F0ZShpbnB1dD0nJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LCAnW3t9XScuZm9ybWF0KGV4cGVjdGVkKSkKKwogICAgIGRlZiB0ZXN0X25vX2xlYWtpbmcoc2VsZik6CiAgICAgICAgICMgTWFrZSBzdXJlIHdlIGxlYWsgbm8gcmVzb3VyY2VzCiAgICAgICAgIGlmIG5vdCBtc3dpbmRvd3M6CkBAIC0xMDAzLDYgKzEwMTUsMTkgQEAKICAgICAgICAgIyB0aW1lIHRvIHN0YXJ0LgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAud2FpdCh0aW1lb3V0PTMpLCAwKQogCisgICAgZGVmIHRlc3Rfd2FpdF9lbmR0aW1lKHNlbGYpOgorICAgICAgICAiIiJDb25maXJtIHRoYXQgdGhlIGRlcHJlY2F0ZWQgZW5kdGltZSBwYXJhbWV0ZXIgd2FybnMuIiIiCisgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKFtzeXMuZXhlY3V0YWJsZSwgIi1jIiwgInBhc3MiXSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZykgYXMgd2Fybl9jbToKKyAgICAgICAgICAgICAgICBwLndhaXQoZW5kdGltZT10aW1lLnRpbWUoKSswLjAxKQorICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5UaW1lb3V0RXhwaXJlZDoKKyAgICAgICAgICAgIHBhc3MgICMgV2UncmUgbm90IHRlc3RpbmcgZW5kdGltZSB0aW1lb3V0IGJlaGF2aW9yLgorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcC5raWxsKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigndGVzdF9zdWJwcm9jZXNzLnB5Jywgd2Fybl9jbS5maWxlbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignZW5kdGltZScsIHN0cih3YXJuX2NtLndhcm5pbmcpKQorCiAgICAgZGVmIHRlc3RfaW52YWxpZF9idWZzaXplKHNlbGYpOgogICAgICAgICAjIGFuIGludmFsaWQgdHlwZSBvZiB0aGUgYnVmc2l6ZSBhcmd1bWVudCBzaG91bGQgcmFpc2UKICAgICAgICAgIyBUeXBlRXJyb3IuCkBAIC0xNDMxLDYgKzE0NTYsMjcgQEAKICAgICAgICAgICAgIHAud2FpdCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLXAucmV0dXJuY29kZSwgc2lnbmFsLlNJR0FCUlQpCiAKKyAgICBkZWYgdGVzdF9DYWxsZWRQcm9jZXNzRXJyb3Jfc3RyX3NpZ25hbChzZWxmKToKKyAgICAgICAgZXJyID0gc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IoLWludChzaWduYWwuU0lHQUJSVCksICJmYWtlIGNtZCIpCisgICAgICAgIGVycm9yX3N0cmluZyA9IHN0cihlcnIpCisgICAgICAgICMgV2UncmUgcmVseWluZyBvbiB0aGUgcmVwcigpIG9mIHRoZSBzaWduYWwuU2lnbmFscyBpbnRlbnVtIHRvIHByb3ZpZGUKKyAgICAgICAgIyB0aGUgd29yZCBzaWduYWwsIHRoZSBzaWduYWwgbmFtZSBhbmQgdGhlIG51bWVyaWMgdmFsdWUuCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oInNpZ25hbCIsIGVycm9yX3N0cmluZy5sb3dlcigpKQorICAgICAgICAjIFdlJ3JlIG5vdCBiZWluZyBzcGVjaWZpYyBhYm91dCB0aGUgc2lnbmFsIG5hbWUgYXMgc29tZSBzaWduYWxzIGhhdmUKKyAgICAgICAgIyBtdWx0aXBsZSBuYW1lcyBhbmQgd2hpY2ggbmFtZSBpcyByZXZlYWxlZCBjYW4gdmFyeS4KKyAgICAgICAgc2VsZi5hc3NlcnRJbigiU0lHIiwgZXJyb3Jfc3RyaW5nKQorICAgICAgICBzZWxmLmFzc2VydEluKHN0cihzaWduYWwuU0lHQUJSVCksIGVycm9yX3N0cmluZykKKworICAgIGRlZiB0ZXN0X0NhbGxlZFByb2Nlc3NFcnJvcl9zdHJfdW5rbm93bl9zaWduYWwoc2VsZik6CisgICAgICAgIGVyciA9IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yKC05ODc2NTQzLCAiZmFrZSBjbWQiKQorICAgICAgICBlcnJvcl9zdHJpbmcgPSBzdHIoZXJyKQorICAgICAgICBzZWxmLmFzc2VydEluKCJ1bmtub3duIHNpZ25hbCA5ODc2NTQzLiIsIGVycm9yX3N0cmluZykKKworICAgIGRlZiB0ZXN0X0NhbGxlZFByb2Nlc3NFcnJvcl9zdHJfbm9uX3plcm8oc2VsZik6CisgICAgICAgIGVyciA9IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yKDIsICJmYWtlIGNtZCIpCisgICAgICAgIGVycm9yX3N0cmluZyA9IHN0cihlcnIpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oIm5vbi16ZXJvIGV4aXQgc3RhdHVzIDIuIiwgZXJyb3Jfc3RyaW5nKQorCiAgICAgZGVmIHRlc3RfcHJlZXhlYyhzZWxmKToKICAgICAgICAgIyBESVNDTEFJTUVSOiBTZXR0aW5nIGVudmlyb25tZW50IHZhcmlhYmxlcyBpcyAqbm90KiBhIGdvb2QgdXNlCiAgICAgICAgICMgb2YgYSBwcmVleGVjX2ZuLiAgVGhpcyBpcyBtZXJlbHkgYSB0ZXN0LgpAQCAtMTQzOSw4ICsxNDg1LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXMuc3Rkb3V0LndyaXRlKG9zLmdldGVudigiRlJVSVQiKSknXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZXhlY19mbj1sYW1iZGE6IG9zLnB1dGVudigiRlJVSVQiLCAiYXBwbGUiKSkKLSAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3Rkb3V0LmNsb3NlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3Rkb3V0LnJlYWQoKSwgYiJhcHBsZSIpCisgICAgICAgIHdpdGggcDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQucmVhZCgpLCBiImFwcGxlIikKIAogICAgIGRlZiB0ZXN0X3ByZWV4ZWNfZXhjZXB0aW9uKHNlbGYpOgogICAgICAgICBkZWYgcmFpc2VfaXQoKToKQEAgLTE1NjEsNyArMTYwNyw3IEBACiAgICAgICAgIGZkLCBmbmFtZSA9IHRlbXBmaWxlLm1rc3RlbXAoKQogICAgICAgICAjIHJlb3BlbiBpbiB0ZXh0IG1vZGUKICAgICAgICAgd2l0aCBvcGVuKGZkLCAidyIsIGVycm9ycz0ic3Vycm9nYXRlZXNjYXBlIikgYXMgZm9iajoKLSAgICAgICAgICAgIGZvYmoud3JpdGUoIiMhL2Jpbi9zaFxuIikKKyAgICAgICAgICAgIGZvYmoud3JpdGUoIiMhJXNcbiIgJSBzdXBwb3J0LnVuaXhfc2hlbGwpCiAgICAgICAgICAgICBmb2JqLndyaXRlKCJleGVjICclcycgLWMgJ2ltcG9ydCBzeXM7IHN5cy5leGl0KDQ3KSdcbiIgJQogICAgICAgICAgICAgICAgICAgICAgICBzeXMuZXhlY3V0YWJsZSkKICAgICAgICAgb3MuY2htb2QoZm5hbWUsIDBvNzAwKQpAQCAtMTU4OCw4ICsxNjM0LDggQEAKICAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oWyJlY2hvICRGUlVJVCJdLCBzaGVsbD0xLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9bmV3ZW52KQotICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRvdXQuY2xvc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQucmVhZCgpLnN0cmlwKGIiIFx0XHJcblxmIiksIGIiYXBwbGUiKQorICAgICAgICB3aXRoIHA6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3Rkb3V0LnJlYWQoKS5zdHJpcChiIiBcdFxyXG5cZiIpLCBiImFwcGxlIikKIAogICAgIGRlZiB0ZXN0X3NoZWxsX3N0cmluZyhzZWxmKToKICAgICAgICAgIyBSdW4gY29tbWFuZCB0aHJvdWdoIHRoZSBzaGVsbCAoc3RyaW5nKQpAQCAtMTU5OCwxNSArMTY0NCwxNSBAQAogICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbigiZWNobyAkRlJVSVQiLCBzaGVsbD0xLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9bmV3ZW52KQotICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRvdXQuY2xvc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQucmVhZCgpLnN0cmlwKGIiIFx0XHJcblxmIiksIGIiYXBwbGUiKQorICAgICAgICB3aXRoIHA6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3Rkb3V0LnJlYWQoKS5zdHJpcChiIiBcdFxyXG5cZiIpLCBiImFwcGxlIikKIAogICAgIGRlZiB0ZXN0X2NhbGxfc3RyaW5nKHNlbGYpOgogICAgICAgICAjIGNhbGwoKSBmdW5jdGlvbiB3aXRoIHN0cmluZyBhcmd1bWVudCBvbiBVTklYCiAgICAgICAgIGZkLCBmbmFtZSA9IHRlbXBmaWxlLm1rc3RlbXAoKQogICAgICAgICAjIHJlb3BlbiBpbiB0ZXh0IG1vZGUKICAgICAgICAgd2l0aCBvcGVuKGZkLCAidyIsIGVycm9ycz0ic3Vycm9nYXRlZXNjYXBlIikgYXMgZm9iajoKLSAgICAgICAgICAgIGZvYmoud3JpdGUoIiMhL2Jpbi9zaFxuIikKKyAgICAgICAgICAgIGZvYmoud3JpdGUoIiMhJXNcbiIgJSBzdXBwb3J0LnVuaXhfc2hlbGwpCiAgICAgICAgICAgICBmb2JqLndyaXRlKCJleGVjICclcycgLWMgJ2ltcG9ydCBzeXM7IHN5cy5leGl0KDQ3KSdcbiIgJQogICAgICAgICAgICAgICAgICAgICAgICBzeXMuZXhlY3V0YWJsZSkKICAgICAgICAgb3MuY2htb2QoZm5hbWUsIDBvNzAwKQpAQCAtMTYzMSw4ICsxNjc3LDggQEAKICAgICAgICAgZm9yIHNoIGluIHNoZWxsczoKICAgICAgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKCJlY2hvICQwIiwgZXhlY3V0YWJsZT1zaCwgc2hlbGw9VHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpCi0gICAgICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRvdXQuY2xvc2UpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3Rkb3V0LnJlYWQoKS5zdHJpcCgpLCBieXRlcyhzaCwgJ2FzY2lpJykpCisgICAgICAgICAgICB3aXRoIHA6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZG91dC5yZWFkKCkuc3RyaXAoKSwgYnl0ZXMoc2gsICdhc2NpaScpKQogCiAgICAgZGVmIF9raWxsX3Byb2Nlc3Moc2VsZiwgbWV0aG9kLCAqYXJncyk6CiAgICAgICAgICMgRG8gbm90IGluaGVyaXQgZmlsZSBoYW5kbGVzIGZyb20gdGhlIHBhcmVudC4KQEAgLTIyOTAsNyArMjMzNiw5IEBACiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZGVyci5jbG9zZSkKICAgICAgICAgaWRlbnQgPSBpZChwKQogICAgICAgICBwaWQgPSBwLnBpZAotICAgICAgICBkZWwgcAorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBSZXNvdXJjZVdhcm5pbmcpKToKKyAgICAgICAgICAgIHAgPSBOb25lCisKICAgICAgICAgIyBjaGVjayB0aGF0IHAgaXMgaW4gdGhlIGFjdGl2ZSBwcm9jZXNzZXMgbGlzdAogICAgICAgICBzZWxmLmFzc2VydEluKGlkZW50LCBbaWQobykgZm9yIG8gaW4gc3VicHJvY2Vzcy5fYWN0aXZlXSkKIApAQCAtMjMwOSw3ICsyMzU3LDkgQEAKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3RkZXJyLmNsb3NlKQogICAgICAgICBpZGVudCA9IGlkKHApCiAgICAgICAgIHBpZCA9IHAucGlkCi0gICAgICAgIGRlbCBwCisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIFJlc291cmNlV2FybmluZykpOgorICAgICAgICAgICAgcCA9IE5vbmUKKwogICAgICAgICBvcy5raWxsKHBpZCwgc2lnbmFsLlNJR0tJTEwpCiAgICAgICAgICMgY2hlY2sgdGhhdCBwIGlzIGluIHRoZSBhY3RpdmUgcHJvY2Vzc2VzIGxpc3QKICAgICAgICAgc2VsZi5hc3NlcnRJbihpZGVudCwgW2lkKG8pIGZvciBvIGluIHN1YnByb2Nlc3MuX2FjdGl2ZV0pCkBAIC0yNTAxLDggKzI1NTEsOCBAQAogICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbihbInNldCJdLCBzaGVsbD0xLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9bmV3ZW52KQotICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRvdXQuY2xvc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oYiJwaHlzYWxpcyIsIHAuc3Rkb3V0LnJlYWQoKSkKKyAgICAgICAgd2l0aCBwOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihiInBoeXNhbGlzIiwgcC5zdGRvdXQucmVhZCgpKQogCiAgICAgZGVmIHRlc3Rfc2hlbGxfc3RyaW5nKHNlbGYpOgogICAgICAgICAjIFJ1biBjb21tYW5kIHRocm91Z2ggdGhlIHNoZWxsIChzdHJpbmcpCkBAIC0yNTExLDggKzI1NjEsMjAgQEAKICAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oInNldCIsIHNoZWxsPTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudj1uZXdlbnYpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZG91dC5jbG9zZSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbihiInBoeXNhbGlzIiwgcC5zdGRvdXQucmVhZCgpKQorICAgICAgICB3aXRoIHA6CisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGIicGh5c2FsaXMiLCBwLnN0ZG91dC5yZWFkKCkpCisKKyAgICBkZWYgdGVzdF9zaGVsbF9lbmNvZGluZ3Moc2VsZik6CisgICAgICAgICMgUnVuIGNvbW1hbmQgdGhyb3VnaCB0aGUgc2hlbGwgKHN0cmluZykKKyAgICAgICAgZm9yIGVuYyBpbiBbJ2Fuc2knLCAnb2VtJ106CisgICAgICAgICAgICBuZXdlbnYgPSBvcy5lbnZpcm9uLmNvcHkoKQorICAgICAgICAgICAgbmV3ZW52WyJGUlVJVCJdID0gInBoeXNhbGlzIgorICAgICAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oInNldCIsIHNoZWxsPTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52PW5ld2VudiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nPWVuYykKKyAgICAgICAgICAgIHdpdGggcDoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJwaHlzYWxpcyIsIHAuc3Rkb3V0LnJlYWQoKSwgZW5jKQogCiAgICAgZGVmIHRlc3RfY2FsbF9zdHJpbmcoc2VsZik6CiAgICAgICAgICMgY2FsbCgpIGZ1bmN0aW9uIHdpdGggc3RyaW5nIGFyZ3VtZW50IG9uIFdpbmRvd3MKQEAgLTI1MzEsMTYgKzI1OTMsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQotICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRvdXQuY2xvc2UpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZGVyci5jbG9zZSkKLSAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3RkaW4uY2xvc2UpCi0gICAgICAgICMgV2FpdCBmb3IgdGhlIGludGVycHJldGVyIHRvIGJlIGNvbXBsZXRlbHkgaW5pdGlhbGl6ZWQgYmVmb3JlCi0gICAgICAgICMgc2VuZGluZyBhbnkgc2lnbmFsLgotICAgICAgICBwLnN0ZG91dC5yZWFkKDEpCi0gICAgICAgIGdldGF0dHIocCwgbWV0aG9kKSgqYXJncykKLSAgICAgICAgXywgc3RkZXJyID0gcC5jb21tdW5pY2F0ZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0U3RkZXJyRXF1YWwoc3RkZXJyLCBiJycpCi0gICAgICAgIHJldHVybmNvZGUgPSBwLndhaXQoKQorICAgICAgICB3aXRoIHA6CisgICAgICAgICAgICAjIFdhaXQgZm9yIHRoZSBpbnRlcnByZXRlciB0byBiZSBjb21wbGV0ZWx5IGluaXRpYWxpemVkIGJlZm9yZQorICAgICAgICAgICAgIyBzZW5kaW5nIGFueSBzaWduYWwuCisgICAgICAgICAgICBwLnN0ZG91dC5yZWFkKDEpCisgICAgICAgICAgICBnZXRhdHRyKHAsIG1ldGhvZCkoKmFyZ3MpCisgICAgICAgICAgICBfLCBzdGRlcnIgPSBwLmNvbW11bmljYXRlKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0U3RkZXJyRXF1YWwoc3RkZXJyLCBiJycpCisgICAgICAgICAgICByZXR1cm5jb2RlID0gcC53YWl0KCkKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChyZXR1cm5jb2RlLCAwKQogCiAgICAgZGVmIF9raWxsX2RlYWRfcHJvY2VzcyhzZWxmLCBtZXRob2QsICphcmdzKToKQEAgLTI1NTMsMTkgKzI2MTMsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQotICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRvdXQuY2xvc2UpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZGVyci5jbG9zZSkKLSAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3RkaW4uY2xvc2UpCi0gICAgICAgICMgV2FpdCBmb3IgdGhlIGludGVycHJldGVyIHRvIGJlIGNvbXBsZXRlbHkgaW5pdGlhbGl6ZWQgYmVmb3JlCi0gICAgICAgICMgc2VuZGluZyBhbnkgc2lnbmFsLgotICAgICAgICBwLnN0ZG91dC5yZWFkKDEpCi0gICAgICAgICMgVGhlIHByb2Nlc3Mgc2hvdWxkIGVuZCBhZnRlciB0aGlzCi0gICAgICAgIHRpbWUuc2xlZXAoMSkKLSAgICAgICAgIyBUaGlzIHNob3VsZG4ndCByYWlzZSBldmVuIHRob3VnaCB0aGUgY2hpbGQgaXMgbm93IGRlYWQKLSAgICAgICAgZ2V0YXR0cihwLCBtZXRob2QpKCphcmdzKQotICAgICAgICBfLCBzdGRlcnIgPSBwLmNvbW11bmljYXRlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRTdGRlcnJFcXVhbChzdGRlcnIsIGInJykKLSAgICAgICAgcmMgPSBwLndhaXQoKQorICAgICAgICB3aXRoIHA6CisgICAgICAgICAgICAjIFdhaXQgZm9yIHRoZSBpbnRlcnByZXRlciB0byBiZSBjb21wbGV0ZWx5IGluaXRpYWxpemVkIGJlZm9yZQorICAgICAgICAgICAgIyBzZW5kaW5nIGFueSBzaWduYWwuCisgICAgICAgICAgICBwLnN0ZG91dC5yZWFkKDEpCisgICAgICAgICAgICAjIFRoZSBwcm9jZXNzIHNob3VsZCBlbmQgYWZ0ZXIgdGhpcworICAgICAgICAgICAgdGltZS5zbGVlcCgxKQorICAgICAgICAgICAgIyBUaGlzIHNob3VsZG4ndCByYWlzZSBldmVuIHRob3VnaCB0aGUgY2hpbGQgaXMgbm93IGRlYWQKKyAgICAgICAgICAgIGdldGF0dHIocCwgbWV0aG9kKSgqYXJncykKKyAgICAgICAgICAgIF8sIHN0ZGVyciA9IHAuY29tbXVuaWNhdGUoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRTdGRlcnJFcXVhbChzdGRlcnIsIGInJykKKyAgICAgICAgICAgIHJjID0gcC53YWl0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYywgNDIpCiAKICAgICBkZWYgdGVzdF9zZW5kX3NpZ25hbChzZWxmKToKQEAgLTI2MDgsOCArMjY2Niw3IEBACiAKICAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CiAgICAgICAgICIiIkVuc3VyZSB0aGF0IF9fYWxsX18gaXMgcG9wdWxhdGVkIHByb3Blcmx5LiIiIgotICAgICAgICAjIFNUQVJUVVBJTkZPIGFkZGVkIHRvIF9fYWxsX18gaW4gMy42Ci0gICAgICAgIGludGVudGlvbmFsbHlfZXhjbHVkZWQgPSB7Imxpc3QyY21kbGluZSIsICJTVEFSVFVQSU5GTyIsICJIYW5kbGUifQorICAgICAgICBpbnRlbnRpb25hbGx5X2V4Y2x1ZGVkID0geyJsaXN0MmNtZGxpbmUiLCAiSGFuZGxlIn0KICAgICAgICAgZXhwb3J0ZWQgPSBzZXQoc3VicHJvY2Vzcy5fX2FsbF9fKQogICAgICAgICBwb3NzaWJsZV9leHBvcnRzID0gc2V0KCkKICAgICAgICAgaW1wb3J0IHR5cGVzCkBAIC0yNjU0LDExICsyNzExLDExIEBACiAgICAgZGVmIHdpdGhfc3BhY2VzKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgIGt3YXJnc1snc3Rkb3V0J10gPSBzdWJwcm9jZXNzLlBJUEUKICAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oKmFyZ3MsICoqa3dhcmdzKQotICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRvdXQuY2xvc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgcC5zdGRvdXQucmVhZCAoKS5kZWNvZGUoIm1iY3MiKSwKLSAgICAgICAgICAiMiBbJXIsICdhYiBjZCddIiAlIHNlbGYuZm5hbWUKLSAgICAgICAgKQorICAgICAgICB3aXRoIHA6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICBwLnN0ZG91dC5yZWFkICgpLmRlY29kZSgibWJjcyIpLAorICAgICAgICAgICAgICAiMiBbJXIsICdhYiBjZCddIiAlIHNlbGYuZm5hbWUKKyAgICAgICAgICAgICkKIAogICAgIGRlZiB0ZXN0X3NoZWxsX3N0cmluZ193aXRoX3NwYWNlcyhzZWxmKToKICAgICAgICAgIyBjYWxsKCkgZnVuY3Rpb24gd2l0aCBzdHJpbmcgYXJndW1lbnQgd2l0aCBzcGFjZXMgb24gV2luZG93cwpAQCAtMjcxMCw3ICsyNzY3LDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJvYy5yZXR1cm5jb2RlLCAxKQogCiAgICAgZGVmIHRlc3RfaW52YWxpZF9hcmdzKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVOb3RGb3VuZEVycm9yKSBhcyBjOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKChGaWxlTm90Rm91bmRFcnJvciwgUGVybWlzc2lvbkVycm9yKSkgYXMgYzoKICAgICAgICAgICAgIHdpdGggc3VicHJvY2Vzcy5Qb3BlbihbJ25vbmV4aXN0aW5nX2lfaG9wZSddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkgYXMgcHJvYzoKQEAgLTI3MzMsMTkgKzI3OTAsNSBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUocHJvYy5zdGRpbi5jbG9zZWQpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHVuaXRfdGVzdHMgPSAoUHJvY2Vzc1Rlc3RDYXNlLAotICAgICAgICAgICAgICAgICAgUE9TSVhQcm9jZXNzVGVzdENhc2UsCi0gICAgICAgICAgICAgICAgICBXaW4zMlByb2Nlc3NUZXN0Q2FzZSwKLSAgICAgICAgICAgICAgICAgIE1pc2NUZXN0cywKLSAgICAgICAgICAgICAgICAgIFByb2Nlc3NUZXN0Q2FzZU5vUG9sbCwKLSAgICAgICAgICAgICAgICAgIENvbW1hbmRzV2l0aFNwYWNlcywKLSAgICAgICAgICAgICAgICAgIENvbnRleHRNYW5hZ2VyVGVzdHMsCi0gICAgICAgICAgICAgICAgICBSdW5GdW5jVGVzdENhc2UsCi0gICAgICAgICAgICAgICAgICApCi0KLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgqdW5pdF90ZXN0cykKLSAgICBzdXBwb3J0LnJlYXBfY2hpbGRyZW4oKQotCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdW5hdS5weSBiL0xpYi90ZXN0L3Rlc3Rfc3VuYXUucHkKaW5kZXggMGY0MTM0ZS4uYmMxZjQ2YyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdW5hdS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N1bmF1LnB5CkBAIC0xLDQgKzEsMyBAQAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTgogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IGF1ZGlvdGVzdHMKIGZyb20gYXVkaW9vcCBpbXBvcnQgYnl0ZXN3YXAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3VwZXIucHkgYi9MaWIvdGVzdC90ZXN0X3N1cGVyLnB5CmluZGV4IGI4NDg2M2YuLjQ0N2RlYzkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3VwZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdXBlci5weQpAQCAtMSw3ICsxLDkgQEAKLSIiIlVuaXQgdGVzdHMgZm9yIG5ldyBzdXBlcigpIGltcGxlbWVudGF0aW9uLiIiIgorIiIiVW5pdCB0ZXN0cyBmb3IgemVyby1hcmd1bWVudCBzdXBlcigpICYgcmVsYXRlZCBtYWNoaW5lcnkuIiIiCiAKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdhcm5pbmdzCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgY2hlY2tfd2FybmluZ3MKIAogCiBjbGFzcyBBOgpAQCAtMTQzLDYgKzE0NSwxNjYgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gX19jbGFzc19fCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoWC5mKCksIFgpCiAKKyAgICBkZWYgdGVzdF9fX2NsYXNzX19fbmV3KHNlbGYpOgorICAgICAgICAjIFNlZSBpc3N1ZSAjMjM3MjIKKyAgICAgICAgIyBFbnN1cmUgemVyby1hcmcgc3VwZXIoKSB3b3JrcyBhcyBzb29uIGFzIHR5cGUuX19uZXdfXygpIGlzIGNvbXBsZXRlZAorICAgICAgICB0ZXN0X2NsYXNzID0gTm9uZQorCisgICAgICAgIGNsYXNzIE1ldGEodHlwZSk6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpOgorICAgICAgICAgICAgICAgIG5vbmxvY2FsIHRlc3RfY2xhc3MKKyAgICAgICAgICAgICAgICBzZWxmID0gc3VwZXIoKS5fX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSkKKyAgICAgICAgICAgICAgICB0ZXN0X2NsYXNzID0gc2VsZi5mKCkKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorCisgICAgICAgIGNsYXNzIEEobWV0YWNsYXNzPU1ldGEpOgorICAgICAgICAgICAgQHN0YXRpY21ldGhvZAorICAgICAgICAgICAgZGVmIGYoKToKKyAgICAgICAgICAgICAgICByZXR1cm4gX19jbGFzc19fCisKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0ZXN0X2NsYXNzLCBBKQorCisgICAgZGVmIHRlc3RfX19jbGFzc19fX2RlbGF5ZWQoc2VsZik6CisgICAgICAgICMgU2VlIGlzc3VlICMyMzcyMgorICAgICAgICB0ZXN0X25hbWVzcGFjZSA9IE5vbmUKKworICAgICAgICBjbGFzcyBNZXRhKHR5cGUpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlKToKKyAgICAgICAgICAgICAgICBub25sb2NhbCB0ZXN0X25hbWVzcGFjZQorICAgICAgICAgICAgICAgIHRlc3RfbmFtZXNwYWNlID0gbmFtZXNwYWNlCisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICAjIFRoaXMgY2FzZSBzaG91bGRuJ3QgdHJpZ2dlciB0aGUgX19jbGFzc2NlbGxfXyBkZXByZWNhdGlvbiB3YXJuaW5nCisgICAgICAgIHdpdGggY2hlY2tfd2FybmluZ3MoKSBhcyB3OgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJhbHdheXMiLCBEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICBjbGFzcyBBKG1ldGFjbGFzcz1NZXRhKToKKyAgICAgICAgICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgICAgICAgICAgZGVmIGYoKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9fY2xhc3NfXworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcud2FybmluZ3MsIFtdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoQSwgTm9uZSkKKworICAgICAgICBCID0gdHlwZSgiQiIsICgpLCB0ZXN0X25hbWVzcGFjZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhCLmYoKSwgQikKKworICAgIGRlZiB0ZXN0X19fY2xhc3NfX19tcm8oc2VsZik6CisgICAgICAgICMgU2VlIGlzc3VlICMyMzcyMgorICAgICAgICB0ZXN0X2NsYXNzID0gTm9uZQorCisgICAgICAgIGNsYXNzIE1ldGEodHlwZSk6CisgICAgICAgICAgICBkZWYgbXJvKHNlbGYpOgorICAgICAgICAgICAgICAgICMgc2VsZi5mKCkgZG9lc24ndCB3b3JrIHlldC4uLgorICAgICAgICAgICAgICAgIHNlbGYuX19kaWN0X19bImYiXSgpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkubXJvKCkKKworICAgICAgICBjbGFzcyBBKG1ldGFjbGFzcz1NZXRhKToKKyAgICAgICAgICAgIGRlZiBmKCk6CisgICAgICAgICAgICAgICAgbm9ubG9jYWwgdGVzdF9jbGFzcworICAgICAgICAgICAgICAgIHRlc3RfY2xhc3MgPSBfX2NsYXNzX18KKworICAgICAgICBzZWxmLmFzc2VydElzKHRlc3RfY2xhc3MsIEEpCisKKyAgICBkZWYgdGVzdF9fX2NsYXNzY2VsbF9fX2V4cGVjdGVkX2JlaGF2aW91cihzZWxmKToKKyAgICAgICAgIyBTZWUgaXNzdWUgIzIzNzIyCisgICAgICAgIGNsYXNzIE1ldGEodHlwZSk6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpOgorICAgICAgICAgICAgICAgIG5vbmxvY2FsIG5hbWVzcGFjZV9zbmFwc2hvdAorICAgICAgICAgICAgICAgIG5hbWVzcGFjZV9zbmFwc2hvdCA9IG5hbWVzcGFjZS5jb3B5KCkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5fX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSkKKworICAgICAgICAjIF9fY2xhc3NjZWxsX18gaXMgaW5qZWN0ZWQgaW50byB0aGUgY2xhc3MgbmFtZXNwYWNlIGJ5IHRoZSBjb21waWxlcgorICAgICAgICAjIHdoZW4gYXQgbGVhc3Qgb25lIG1ldGhvZCBuZWVkcyBpdCwgYW5kIHNob3VsZCBiZSBvbWl0dGVkIG90aGVyd2lzZQorICAgICAgICBuYW1lc3BhY2Vfc25hcHNob3QgPSBOb25lCisgICAgICAgIGNsYXNzIFdpdGhvdXRDbGFzc1JlZihtZXRhY2xhc3M9TWV0YSk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oIl9fY2xhc3NjZWxsX18iLCBuYW1lc3BhY2Vfc25hcHNob3QpCisKKyAgICAgICAgIyBXaXRoIHplcm8tYXJnIHN1cGVyKCkgb3IgYW4gZXhwbGljaXQgX19jbGFzc19fIHJlZmVyZW5jZSwKKyAgICAgICAgIyBfX2NsYXNzY2VsbF9fIGlzIHRoZSBleGFjdCBjZWxsIHJlZmVyZW5jZSB0byBiZSBwb3B1bGF0ZWQgYnkKKyAgICAgICAgIyB0eXBlLl9fbmV3X18KKyAgICAgICAgbmFtZXNwYWNlX3NuYXBzaG90ID0gTm9uZQorICAgICAgICBjbGFzcyBXaXRoQ2xhc3NSZWYobWV0YWNsYXNzPU1ldGEpOgorICAgICAgICAgICAgZGVmIGYoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIF9fY2xhc3NfXworCisgICAgICAgIGNsYXNzX2NlbGwgPSBuYW1lc3BhY2Vfc25hcHNob3RbIl9fY2xhc3NjZWxsX18iXQorICAgICAgICBtZXRob2RfY2xvc3VyZSA9IFdpdGhDbGFzc1JlZi5mLl9fY2xvc3VyZV9fCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1ldGhvZF9jbG9zdXJlKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhjbGFzc19jZWxsLCBtZXRob2RfY2xvc3VyZVswXSkKKyAgICAgICAgIyBFbnN1cmUgdGhlIGNlbGwgcmVmZXJlbmNlICpkb2Vzbid0KiBnZXQgdHVybmVkIGludG8gYW4gYXR0cmlidXRlCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgV2l0aENsYXNzUmVmLl9fY2xhc3NjZWxsX18KKworICAgIGRlZiB0ZXN0X19fY2xhc3NjZWxsX19fbWlzc2luZyhzZWxmKToKKyAgICAgICAgIyBTZWUgaXNzdWUgIzIzNzIyCisgICAgICAgICMgU29tZSBtZXRhY2xhc3NlcyBtYXkgbm90IHBhc3MgdGhlIG9yaWdpbmFsIG5hbWVzcGFjZSB0byB0eXBlLl9fbmV3X18KKyAgICAgICAgIyBXZSB0ZXN0IHRoYXQgY2FzZSBoZXJlIGJ5IGZvcmNpYmx5IGRlbGV0aW5nIF9fY2xhc3NjZWxsX18KKyAgICAgICAgY2xhc3MgTWV0YSh0eXBlKToKKyAgICAgICAgICAgIGRlZiBfX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSk6CisgICAgICAgICAgICAgICAgbmFtZXNwYWNlLnBvcCgnX19jbGFzc2NlbGxfXycsIE5vbmUpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpCisKKyAgICAgICAgIyBUaGUgZGVmYXVsdCBjYXNlIHNob3VsZCBjb250aW51ZSB0byB3b3JrIHdpdGhvdXQgYW55IHdhcm5pbmdzCisgICAgICAgIHdpdGggY2hlY2tfd2FybmluZ3MoKSBhcyB3OgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJhbHdheXMiLCBEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICBjbGFzcyBXaXRob3V0Q2xhc3NSZWYobWV0YWNsYXNzPU1ldGEpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3Lndhcm5pbmdzLCBbXSkKKworICAgICAgICAjIFdpdGggemVyby1hcmcgc3VwZXIoKSBvciBhbiBleHBsaWNpdCBfX2NsYXNzX18gcmVmZXJlbmNlLCB3ZSBleHBlY3QKKyAgICAgICAgIyBfX2J1aWxkX2NsYXNzX18gdG8gZW1pdCBhIERlcHJlY2F0aW9uV2FybmluZyBjb21wbGFpbmluZyB0aGF0CisgICAgICAgICMgX19jbGFzc19fIHdhcyBub3Qgc2V0LCBhbmQgYXNraW5nIGlmIF9fY2xhc3NjZWxsX18gd2FzIHByb3BhZ2F0ZWQKKyAgICAgICAgIyB0byB0eXBlLl9fbmV3X18uCisgICAgICAgICMgSW4gUHl0aG9uIDMuNywgdGhhdCB3YXJuaW5nIHdpbGwgYmVjb21lIGEgUnVudGltZUVycm9yLgorICAgICAgICBleHBlY3RlZF93YXJuaW5nID0gKAorICAgICAgICAgICAgJ19fY2xhc3NfXyBub3Qgc2V0LipfX2NsYXNzY2VsbF9fIHByb3BhZ2F0ZWQnLAorICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nCisgICAgICAgICkKKyAgICAgICAgd2l0aCBjaGVja193YXJuaW5ncyhleHBlY3RlZF93YXJuaW5nKToKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiYWx3YXlzIiwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgY2xhc3MgV2l0aENsYXNzUmVmKG1ldGFjbGFzcz1NZXRhKToKKyAgICAgICAgICAgICAgICBkZWYgZihzZWxmKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9fY2xhc3NfXworICAgICAgICAjIENoZWNrIF9fY2xhc3NfXyBzdGlsbCBnZXRzIHNldCBkZXNwaXRlIHRoZSB3YXJuaW5nCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoV2l0aENsYXNzUmVmKCkuZigpLCBXaXRoQ2xhc3NSZWYpCisKKyAgICAgICAgIyBDaGVjayB0aGUgd2FybmluZyBpcyB0dXJuZWQgaW50byBhbiBlcnJvciBhcyBleHBlY3RlZAorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImVycm9yIiwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgICAgIGNsYXNzIFdpdGhDbGFzc1JlZihtZXRhY2xhc3M9TWV0YSk6CisgICAgICAgICAgICAgICAgICAgIGRlZiBmKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9fY2xhc3NfXworCisgICAgZGVmIHRlc3RfX19jbGFzc2NlbGxfX19vdmVyd3JpdGUoc2VsZik6CisgICAgICAgICMgU2VlIGlzc3VlICMyMzcyMgorICAgICAgICAjIE92ZXJ3cml0aW5nIF9fY2xhc3NjZWxsX18gd2l0aCBub25zZW5zZSBpcyBleHBsaWNpdGx5IHByb2hpYml0ZWQKKyAgICAgICAgY2xhc3MgTWV0YSh0eXBlKToKKyAgICAgICAgICAgIGRlZiBfX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSwgY2VsbCk6CisgICAgICAgICAgICAgICAgbmFtZXNwYWNlWydfX2NsYXNzY2VsbF9fJ10gPSBjZWxsCisgICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpCisKKyAgICAgICAgZm9yIGJhZF9jZWxsIGluIChOb25lLCAwLCAiIiwgb2JqZWN0KCkpOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoYmFkX2NlbGw9YmFkX2NlbGwpOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgY2xhc3MgQShtZXRhY2xhc3M9TWV0YSwgY2VsbD1iYWRfY2VsbCk6CisgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF9fX2NsYXNzY2VsbF9fX3dyb25nX2NlbGwoc2VsZik6CisgICAgICAgICMgU2VlIGlzc3VlICMyMzcyMgorICAgICAgICAjIFBvaW50aW5nIHRoZSBjZWxsIHJlZmVyZW5jZSBhdCB0aGUgd3JvbmcgY2xhc3MgaXMgYWxzbyBwcm9oaWJpdGVkCisgICAgICAgIGNsYXNzIE1ldGEodHlwZSk6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpOgorICAgICAgICAgICAgICAgIGNscyA9IHN1cGVyKCkuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpCisgICAgICAgICAgICAgICAgQiA9IHR5cGUoIkIiLCAoKSwgbmFtZXNwYWNlKQorICAgICAgICAgICAgICAgIHJldHVybiBjbHMKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjbGFzcyBBKG1ldGFjbGFzcz1NZXRhKToKKyAgICAgICAgICAgICAgICBkZWYgZihzZWxmKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9fY2xhc3NfXworCiAgICAgZGVmIHRlc3Rfb2JzY3VyZV9zdXBlcl9lcnJvcnMoc2VsZik6CiAgICAgICAgIGRlZiBmKCk6CiAgICAgICAgICAgICBzdXBlcigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N1cHBvcnQucHkgYi9MaWIvdGVzdC90ZXN0X3N1cHBvcnQucHkKaW5kZXggNWUwZjk5MC4uZTgzYTRkNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdXBwb3J0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3VwcG9ydC5weQpAQCAtMjQxLDkgKzI0MSw4IEBACiAKICAgICBkZWYgdGVzdF9jaGVja19zeW50YXhfZXJyb3Ioc2VsZik6CiAgICAgICAgIHN1cHBvcnQuY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJkZWYgY2xhc3MiLCBsaW5lbm89MSwgb2Zmc2V0PTkpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yLCBzdXBwb3J0LmNoZWNrX3N5bnRheF9lcnJvciwgc2VsZiwgIjEiKQotICAgICAgICAjd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvcik6Ci0gICAgICAgICAgICAjc3VwcG9ydC5jaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgIng9MSIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IpOgorICAgICAgICAgICAgc3VwcG9ydC5jaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgIng9MSIpCiAKICAgICBkZWYgdGVzdF9DbGVhbkltcG9ydChzZWxmKToKICAgICAgICAgaW1wb3J0IGltcG9ydGxpYgpAQCAtMzI3LDYgKzMyNiwyOCBAQAogICAgICAgICAgICAgICAgIHNlbGYuT3RoZXJDbGFzcywgc2VsZi5SZWZDbGFzcywgaWdub3JlPWlnbm9yZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoKSwgbWlzc2luZ19pdGVtcykKIAorICAgIGRlZiB0ZXN0X2NoZWNrX19hbGxfXyhzZWxmKToKKyAgICAgICAgZXh0cmEgPSB7J3RlbXBkaXInfQorICAgICAgICBibGFja2xpc3QgPSB7J3RlbXBsYXRlJ30KKyAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhPWV4dHJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2xpc3Q9YmxhY2tsaXN0KQorCisgICAgICAgIGV4dHJhID0geydUZXh0VGVzdFJlc3VsdCcsICdpbnN0YWxsSGFuZGxlcid9CisgICAgICAgIGJsYWNrbGlzdCA9IHsnbG9hZF90ZXN0cycsICJUZXN0UHJvZ3JhbSIsICJCYXNlVGVzdFN1aXRlIn0KKworICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJ1bml0dGVzdC5yZXN1bHQiLCAidW5pdHRlc3QuY2FzZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5pdHRlc3Quc3VpdGUiLCAidW5pdHRlc3QubG9hZGVyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bml0dGVzdC5tYWluIiwgInVuaXR0ZXN0LnJ1bm5lciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5pdHRlc3Quc2lnbmFscyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYT1leHRyYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvciwgc3VwcG9ydC5jaGVja19fYWxsX18sIHNlbGYsIHVuaXR0ZXN0KQorCiAgICAgIyBYWFggLWZvbGxvd3MgYSBsaXN0IG9mIHVudGVzdGVkIEFQSQogICAgICMgbWFrZV9sZWdhY3lfcHljCiAgICAgIyBpc19yZXNvdXJjZV9lbmFibGVkCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N5bWJvbC5weSBiL0xpYi90ZXN0L3Rlc3Rfc3ltYm9sLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxMzA2ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X3N5bWJvbC5weQpAQCAtMCwwICsxLDU0IEBACitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAoraW1wb3J0IG9zCitpbXBvcnQgc3lzCitpbXBvcnQgc3VicHJvY2VzcworCisKK1NZTUJPTF9GSUxFICAgICAgICAgICAgICA9IHN1cHBvcnQuZmluZGZpbGUoJ3N5bWJvbC5weScpCitHUkFNTUFSX0ZJTEUgICAgICAgICAgICAgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLi4nLCAnLi4nLCAnSW5jbHVkZScsICdncmFtaW5pdC5oJykKK1RFU1RfUFlfRklMRSAgICAgICAgICAgICA9ICdzeW1ib2xfdGVzdC5weScKKworCitjbGFzcyBUZXN0U3ltYm9sR2VuZXJhdGlvbih1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgX2NvcHlfZmlsZV93aXRob3V0X2dlbmVyYXRlZF9zeW1ib2xzKHNlbGYsIHNvdXJjZV9maWxlLCBkZXN0X2ZpbGUpOgorICAgICAgICB3aXRoIG9wZW4oc291cmNlX2ZpbGUpIGFzIGZwOgorICAgICAgICAgICAgbGluZXMgPSBmcC5yZWFkbGluZXMoKQorICAgICAgICB3aXRoIG9wZW4oZGVzdF9maWxlLCAndycpIGFzIGZwOgorICAgICAgICAgICAgZnAud3JpdGVsaW5lcyhsaW5lc1s6bGluZXMuaW5kZXgoIiMtLXN0YXJ0IGNvbnN0YW50cy0tXG4iKSArIDFdKQorICAgICAgICAgICAgZnAud3JpdGVsaW5lcyhsaW5lc1tsaW5lcy5pbmRleCgiIy0tZW5kIGNvbnN0YW50cy0tXG4iKTpdKQorCisgICAgZGVmIF9nZW5lcmF0ZV9zeW1ib2xzKHNlbGYsIGdyYW1tYXJfZmlsZSwgdGFyZ2V0X3N5bWJvbF9weV9maWxlKToKKyAgICAgICAgcHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1lNQk9MX0ZJTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmFtbWFyX2ZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfc3ltYm9sX3B5X2ZpbGVdLCBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQorICAgICAgICBzdGRlcnIgPSBwcm9jLmNvbW11bmljYXRlKClbMV0KKyAgICAgICAgcmV0dXJuIHByb2MucmV0dXJuY29kZSwgc3RkZXJyCisKKyAgICBkZWYgY29tcGFyZV9maWxlcyhzZWxmLCBmaWxlMSwgZmlsZTIpOgorICAgICAgICB3aXRoIG9wZW4oZmlsZTEpIGFzIGZwOgorICAgICAgICAgICAgbGluZXMxID0gZnAucmVhZGxpbmVzKCkKKyAgICAgICAgd2l0aCBvcGVuKGZpbGUyKSBhcyBmcDoKKyAgICAgICAgICAgIGxpbmVzMiA9IGZwLnJlYWRsaW5lcygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGluZXMxLCBsaW5lczIpCisKKyAgICBAdW5pdHRlc3Quc2tpcElmKG5vdCBvcy5wYXRoLmV4aXN0cyhHUkFNTUFSX0ZJTEUpLAorICAgICAgICAgICAgICAgICAgICAgJ3Rlc3Qgb25seSB3b3JrcyBmcm9tIHNvdXJjZSBidWlsZCBkaXJlY3RvcnknKQorICAgIGRlZiB0ZXN0X3JlYWxfZ3JhbW1hcl9hbmRfc3ltYm9sX2ZpbGUoc2VsZik6CisgICAgICAgIG91dHB1dCA9IHN1cHBvcnQuVEVTVEZOCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgb3V0cHV0KQorCisgICAgICAgIHNlbGYuX2NvcHlfZmlsZV93aXRob3V0X2dlbmVyYXRlZF9zeW1ib2xzKFNZTUJPTF9GSUxFLCBvdXRwdXQpCisKKyAgICAgICAgZXhpdGNvZGUsIHN0ZGVyciA9IHNlbGYuX2dlbmVyYXRlX3N5bWJvbHMoR1JBTU1BUl9GSUxFLCBvdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYicnLCBzdGRlcnIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgZXhpdGNvZGUpCisKKyAgICAgICAgc2VsZi5jb21wYXJlX2ZpbGVzKFNZTUJPTF9GSUxFLCBvdXRwdXQpCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3ltdGFibGUucHkgYi9MaWIvdGVzdC90ZXN0X3N5bXRhYmxlLnB5CmluZGV4IGZiYjFiZGMuLmRmYWVlMTcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3ltdGFibGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zeW10YWJsZS5weQpAQCAtMTMzLDYgKzEzMywxNyBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5NaW5lLmxvb2t1cCgiYV9tZXRob2QiKS5pc19hc3NpZ25lZCgpKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuaW50ZXJuYWwubG9va3VwKCJ4IikuaXNfYXNzaWduZWQoKSkKIAorICAgIGRlZiB0ZXN0X2Fubm90YXRlZChzZWxmKToKKyAgICAgICAgc3QxID0gc3ltdGFibGUuc3ltdGFibGUoJ2RlZiBmKCk6XG4gICAgeDogaW50XG4nLCAndGVzdCcsICdleGVjJykKKyAgICAgICAgc3QyID0gc3QxLmdldF9jaGlsZHJlbigpWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdDIubG9va3VwKCd4JykuaXNfbG9jYWwoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN0Mi5sb29rdXAoJ3gnKS5pc19hbm5vdGF0ZWQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzdDIubG9va3VwKCd4JykuaXNfZ2xvYmFsKCkpCisgICAgICAgIHN0MyA9IHN5bXRhYmxlLnN5bXRhYmxlKCdkZWYgZigpOlxuICAgIHggPSAxXG4nLCAndGVzdCcsICdleGVjJykKKyAgICAgICAgc3Q0ID0gc3QzLmdldF9jaGlsZHJlbigpWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdDQubG9va3VwKCd4JykuaXNfbG9jYWwoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzdDQubG9va3VwKCd4JykuaXNfYW5ub3RhdGVkKCkpCisKICAgICBkZWYgdGVzdF9pbXBvcnRlZChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYudG9wLmxvb2t1cCgic3lzIikuaXNfaW1wb3J0ZWQoKSkKIApAQCAtMTYwLDkgKzE3MSwxMSBAQAogICAgICAgICBjaGVja2ZpbGVuYW1lKCJkZWYgZih4KTogZm9vKSgiLCAxNCkgICMgcGFyc2UtdGltZQogICAgICAgICBjaGVja2ZpbGVuYW1lKCJkZWYgZih4KTogZ2xvYmFsIHgiLCAxMCkgICMgc3ltdGFibGUtYnVpbGQtdGltZQogICAgICAgICBzeW10YWJsZS5zeW10YWJsZSgicGFzcyIsIGIic3BhbSIsICJleGVjIikKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKSwgXAorICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CiAgICAgICAgICAgICBzeW10YWJsZS5zeW10YWJsZSgicGFzcyIsIGJ5dGVhcnJheShiInNwYW0iKSwgImV4ZWMiKQotICAgICAgICBzeW10YWJsZS5zeW10YWJsZSgicGFzcyIsIG1lbW9yeXZpZXcoYiJzcGFtIiksICJleGVjIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzeW10YWJsZS5zeW10YWJsZSgicGFzcyIsIG1lbW9yeXZpZXcoYiJzcGFtIiksICJleGVjIikKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgogICAgICAgICAgICAgc3ltdGFibGUuc3ltdGFibGUoInBhc3MiLCBsaXN0KGIic3BhbSIpLCAiZXhlYyIpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3ludGF4LnB5IGIvTGliL3Rlc3QvdGVzdF9zeW50YXgucHkKaW5kZXggMzAxYzE0Mi4uN2Y3ZTZkYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zeW50YXgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zeW50YXgucHkKQEAgLTM1LDE0ICszNSw2IEBACiBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiBTeW50YXhFcnJvcjogY2FuJ3QgYXNzaWduIHRvIGtleXdvcmQKIAotSXQncyBhIHN5bnRheCBlcnJvciB0byBhc3NpZ24gdG8gdGhlIGVtcHR5IHR1cGxlLiAgV2h5IGlzbid0IGl0IGFuCi1lcnJvciB0byBhc3NpZ24gdG8gdGhlIGVtcHR5IGxpc3Q/ICBJdCB3aWxsIGFsd2F5cyByYWlzZSBzb21lIGVycm9yIGF0Ci1ydW50aW1lLgotCi0+Pj4gKCkgPSAxCi1UcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci1TeW50YXhFcnJvcjogY2FuJ3QgYXNzaWduIHRvICgpCi0KID4+PiBmKCkgPSAxCiBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiBTeW50YXhFcnJvcjogY2FuJ3QgYXNzaWduIHRvIGZ1bmN0aW9uIGNhbGwKQEAgLTM3NCw3ICszNjYsMjMgQEAKICAgICAgLi4uCiAgICBTeW50YXhFcnJvcjogdG9vIG1hbnkgc3RhdGljYWxseSBuZXN0ZWQgYmxvY2tzCiAKLU1pc3VzZSBvZiB0aGUgbm9ubG9jYWwgc3RhdGVtZW50IGNhbiBsZWFkIHRvIGEgZmV3IHVuaXF1ZSBzeW50YXggZXJyb3JzLgorTWlzdXNlIG9mIHRoZSBub25sb2NhbCBhbmQgZ2xvYmFsIHN0YXRlbWVudCBjYW4gbGVhZCB0byBhIGZldyB1bmlxdWUgc3ludGF4IGVycm9ycy4KKworICAgPj4+IGRlZiBmKCk6CisgICAuLi4gICAgIHggPSAxCisgICAuLi4gICAgIGdsb2JhbCB4CisgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgIC4uLgorICAgU3ludGF4RXJyb3I6IG5hbWUgJ3gnIGlzIGFzc2lnbmVkIHRvIGJlZm9yZSBnbG9iYWwgZGVjbGFyYXRpb24KKworICAgPj4+IGRlZiBmKCk6CisgICAuLi4gICAgIHggPSAxCisgICAuLi4gICAgIGRlZiBnKCk6CisgICAuLi4gICAgICAgICBwcmludCh4KQorICAgLi4uICAgICAgICAgbm9ubG9jYWwgeAorICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAuLi4KKyAgIFN5bnRheEVycm9yOiBuYW1lICd4JyBpcyB1c2VkIHByaW9yIHRvIG5vbmxvY2FsIGRlY2xhcmF0aW9uCiAKICAgID4+PiBkZWYgZih4KToKICAgIC4uLiAgICAgbm9ubG9jYWwgeApAQCAtNDkzLDEwICs1MDEsNiBAQAogICAgLi4uCiBTeW50YXhFcnJvcjoga2V5d29yZCBhcmd1bWVudCByZXBlYXRlZAogCi0+Pj4gZGVsICgpCi1UcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci1TeW50YXhFcnJvcjogY2FuJ3QgZGVsZXRlICgpCi0KID4+PiB7MSwgMiwgM30gPSA0MgogVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogU3ludGF4RXJyb3I6IGNhbid0IGFzc2lnbiB0byBsaXRlcmFsCkBAIC01ODAsNyArNTg0LDcgQEAKICAgICAgICAgICAgICAgICBnbG9iYWwgYiAgIyBTeW50YXhXYXJuaW5nCiAgICAgICAgICAgICAiIiIKICAgICAgICAgd2FybmluZ3MuZmlsdGVyd2FybmluZ3MoYWN0aW9uPSdpZ25vcmUnLCBjYXRlZ29yeT1TeW50YXhXYXJuaW5nKQotICAgICAgICBzZWxmLl9jaGVja19lcnJvcihzb3VyY2UsICJnbG9iYWwiLCBsaW5lbm89Mywgb2Zmc2V0PTE2KQorICAgICAgICBzZWxmLl9jaGVja19lcnJvcihzb3VyY2UsICJnbG9iYWwiKQogICAgICAgICB3YXJuaW5ncy5maWx0ZXJzLnBvcCgwKQogCiAgICAgZGVmIHRlc3RfYnJlYWtfb3V0c2lkZV9sb29wKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zeXMucHkgYi9MaWIvdGVzdC90ZXN0X3N5cy5weQppbmRleCA0NDM1ZDY5Li5kZjllYmQ0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N5cy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N5cy5weQpAQCAtMTAsNiArMTAsNyBAQAogaW1wb3J0IGdjCiBpbXBvcnQgc3lzY29uZmlnCiBpbXBvcnQgcGxhdGZvcm0KK2ltcG9ydCBsb2NhbGUKIAogIyBjb3VudCB0aGUgbnVtYmVyIG9mIHRlc3QgcnVucywgdXNlZCB0byBjcmVhdGUgdW5pcXVlCiAjIHN0cmluZ3MgdG8gaW50ZXJuIGluIHRlc3RfaW50ZXJuKCkKQEAgLTYyNyw2ICs2MjgsOCBAQAogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModGVzdC5zdXBwb3J0LkZTX05PTkFTQ0lJLAogICAgICAgICAgICAgICAgICAgICAgICAgICdyZXF1aXJlcyBPUyBzdXBwb3J0IG9mIG5vbi1BU0NJSSBlbmNvZGluZ3MnKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKSA9PSBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoRmFsc2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdyZXF1aXJlcyBGUyBlbmNvZGluZyB0byBtYXRjaCBsb2NhbGUnKQogICAgIGRlZiB0ZXN0X2lvZW5jb2Rpbmdfbm9uYXNjaWkoc2VsZik6CiAgICAgICAgIGVudiA9IGRpY3Qob3MuZW52aXJvbikKIApAQCAtNjY5LDggKzY3Miw2IEBACiAgICAgICAgIGZzX2VuY29kaW5nID0gc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpCiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKICAgICAgICAgICAgIGV4cGVjdGVkID0gJ3V0Zi04JwotICAgICAgICBlbGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgotICAgICAgICAgICAgZXhwZWN0ZWQgPSAnbWJjcycKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGV4cGVjdGVkID0gTm9uZQogICAgICAgICBzZWxmLmNoZWNrX2ZzZW5jb2RpbmcoZnNfZW5jb2RpbmcsIGV4cGVjdGVkKQpAQCAtOTEyLDEzICs5MTMsMTMgQEAKICAgICAgICAgICAgIHJldHVybiBpbm5lcgogICAgICAgICBjaGVjayhnZXRfY2VsbCgpLl9fY2xvc3VyZV9fWzBdLCBzaXplKCdQJykpCiAgICAgICAgICMgY29kZQotICAgICAgICBjaGVjayhnZXRfY2VsbCgpLl9fY29kZV9fLCBzaXplKCc1aTlQaTNQJykpCi0gICAgICAgIGNoZWNrKGdldF9jZWxsLl9fY29kZV9fLCBzaXplKCc1aTlQaTNQJykpCisgICAgICAgIGNoZWNrKGdldF9jZWxsKCkuX19jb2RlX18sIHNpemUoJzZpMTNQJykpCisgICAgICAgIGNoZWNrKGdldF9jZWxsLl9fY29kZV9fLCBzaXplKCc2aTEzUCcpKQogICAgICAgICBkZWYgZ2V0X2NlbGwyKHgpOgogICAgICAgICAgICAgZGVmIGlubmVyKCk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHgKICAgICAgICAgICAgIHJldHVybiBpbm5lcgotICAgICAgICBjaGVjayhnZXRfY2VsbDIuX19jb2RlX18sIHNpemUoJzVpOVBpM1AnKSArIDEpCisgICAgICAgIGNoZWNrKGdldF9jZWxsMi5fX2NvZGVfXywgc2l6ZSgnNmkxM1AnKSArIDEpCiAgICAgICAgICMgY29tcGxleAogICAgICAgICBjaGVjayhjb21wbGV4KDAsMSksIHNpemUoJzJkJykpCiAgICAgICAgICMgbWV0aG9kX2Rlc2NyaXB0b3IgKGRlc2NyaXB0b3Igb2JqZWN0KQpAQCAtOTM2LDkgKzkzNyw5IEBACiAgICAgICAgICMgbWV0aG9kLXdyYXBwZXIgKGRlc2NyaXB0b3Igb2JqZWN0KQogICAgICAgICBjaGVjayh7fS5fX2l0ZXJfXywgc2l6ZSgnMlAnKSkKICAgICAgICAgIyBkaWN0Ci0gICAgICAgIGNoZWNrKHt9LCBzaXplKCduMlAnKSArIGNhbGNzaXplKCcyblBuJykgKyA4KmNhbGNzaXplKCduMlAnKSkKKyAgICAgICAgY2hlY2soe30sIHNpemUoJ25RMlAnKSArIGNhbGNzaXplKCcyblAybicpICsgOCArICg4KjIvLzMpKmNhbGNzaXplKCduMlAnKSkKICAgICAgICAgbG9uZ2RpY3QgPSB7MToxLCAyOjIsIDM6MywgNDo0LCA1OjUsIDY6NiwgNzo3LCA4Ojh9Ci0gICAgICAgIGNoZWNrKGxvbmdkaWN0LCBzaXplKCduMlAnKSArIGNhbGNzaXplKCcyblBuJykgKyAxNipjYWxjc2l6ZSgnbjJQJykpCisgICAgICAgIGNoZWNrKGxvbmdkaWN0LCBzaXplKCduUTJQJykgKyBjYWxjc2l6ZSgnMm5QMm4nKSArIDE2ICsgKDE2KjIvLzMpKmNhbGNzaXplKCduMlAnKSkKICAgICAgICAgIyBkaWN0aW9uYXJ5LWtleXZpZXcKICAgICAgICAgY2hlY2soe30ua2V5cygpLCBzaXplKCdQJykpCiAgICAgICAgICMgZGljdGlvbmFyeS12YWx1ZXZpZXcKQEAgLTEwOTYsMTMgKzEwOTcsMTMgQEAKICAgICAgICAgICAgICAgICAgICcxMFAnICAgICAgICAgICAgICAgICAjIFB5U2VxdWVuY2VNZXRob2RzCiAgICAgICAgICAgICAgICAgICAnMlAnICAgICAgICAgICAgICAgICAgIyBQeUJ1ZmZlclByb2NzCiAgICAgICAgICAgICAgICAgICAnNFAnKQotICAgICAgICAjIFNlcGFyYXRlIGJsb2NrIGZvciBQeURpY3RLZXlzT2JqZWN0IHdpdGggNCBlbnRyaWVzCi0gICAgICAgIHMgKz0gY2FsY3NpemUoIjJuUG4iKSArIDQqY2FsY3NpemUoIm4yUCIpCisgICAgICAgICMgU2VwYXJhdGUgYmxvY2sgZm9yIFB5RGljdEtleXNPYmplY3Qgd2l0aCA4IGtleXMgYW5kIDUgZW50cmllcworICAgICAgICBzICs9IGNhbGNzaXplKCIyblAybiIpICsgOCArIDUqY2FsY3NpemUoIm4yUCIpCiAgICAgICAgICMgY2xhc3MKICAgICAgICAgY2xhc3MgbmV3c3R5bGVjbGFzcyhvYmplY3QpOiBwYXNzCiAgICAgICAgIGNoZWNrKG5ld3N0eWxlY2xhc3MsIHMpCiAgICAgICAgICMgZGljdCB3aXRoIHNoYXJlZCBrZXlzCi0gICAgICAgIGNoZWNrKG5ld3N0eWxlY2xhc3MoKS5fX2RpY3RfXywgc2l6ZSgnbjJQJyArICcyblBuJykpCisgICAgICAgIGNoZWNrKG5ld3N0eWxlY2xhc3MoKS5fX2RpY3RfXywgc2l6ZSgnblEyUCcgKyAnMm5QMm4nKSkKICAgICAgICAgIyB1bmljb2RlCiAgICAgICAgICMgZWFjaCB0dXBsZSBjb250YWlucyBhIHN0cmluZyBhbmQgaXRzIGV4cGVjdGVkIGNoYXJhY3RlciBzaXplCiAgICAgICAgICMgZG9uJ3QgcHV0IGFueSBzdGF0aWMgc3RyaW5ncyBoZXJlLCBhcyB0aGV5IG1heSBjb250YWluCkBAIC0xMTkxLDYgKzExOTIsMzIgQEAKICAgICAgICAgIyBzeXMuZmxhZ3MKICAgICAgICAgY2hlY2soc3lzLmZsYWdzLCB2c2l6ZSgnJykgKyBzZWxmLlAgKiBsZW4oc3lzLmZsYWdzKSkKIAorICAgIGRlZiB0ZXN0X2FzeW5jZ2VuX2hvb2tzKHNlbGYpOgorICAgICAgICBvbGQgPSBzeXMuZ2V0X2FzeW5jZ2VuX2hvb2tzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUob2xkLmZpcnN0aXRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUob2xkLmZpbmFsaXplcikKKworICAgICAgICBmaXJzdGl0ZXIgPSBsYW1iZGEgKmE6IE5vbmUKKyAgICAgICAgc3lzLnNldF9hc3luY2dlbl9ob29rcyhmaXJzdGl0ZXI9Zmlyc3RpdGVyKQorICAgICAgICBob29rcyA9IHN5cy5nZXRfYXN5bmNnZW5faG9va3MoKQorICAgICAgICBzZWxmLmFzc2VydElzKGhvb2tzLmZpcnN0aXRlciwgZmlyc3RpdGVyKQorICAgICAgICBzZWxmLmFzc2VydElzKGhvb2tzWzBdLCBmaXJzdGl0ZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoaG9va3MuZmluYWxpemVyLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydElzKGhvb2tzWzFdLCBOb25lKQorCisgICAgICAgIGZpbmFsaXplciA9IGxhbWJkYSAqYTogTm9uZQorICAgICAgICBzeXMuc2V0X2FzeW5jZ2VuX2hvb2tzKGZpbmFsaXplcj1maW5hbGl6ZXIpCisgICAgICAgIGhvb2tzID0gc3lzLmdldF9hc3luY2dlbl9ob29rcygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoaG9va3MuZmlyc3RpdGVyLCBmaXJzdGl0ZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoaG9va3NbMF0sIGZpcnN0aXRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhob29rcy5maW5hbGl6ZXIsIGZpbmFsaXplcikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhob29rc1sxXSwgZmluYWxpemVyKQorCisgICAgICAgIHN5cy5zZXRfYXN5bmNnZW5faG9va3MoKm9sZCkKKyAgICAgICAgY3VyID0gc3lzLmdldF9hc3luY2dlbl9ob29rcygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGN1ci5maXJzdGl0ZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGN1ci5maW5hbGl6ZXIpCisKIAogZGVmIHRlc3RfbWFpbigpOgogICAgIHRlc3Quc3VwcG9ydC5ydW5fdW5pdHRlc3QoU3lzTW9kdWxlVGVzdCwgU2l6ZW9mVGVzdCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3lzX3NldHRyYWNlLnB5IGIvTGliL3Rlc3QvdGVzdF9zeXNfc2V0dHJhY2UucHkKaW5kZXggNTA5YmMzZS4uMjVjNTgzNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zeXNfc2V0dHJhY2UucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zeXNfc2V0dHJhY2UucHkKQEAgLTMzOCw4ICszMzgsOCBAQAogCiAgICAgZGVmIHRlc3RfMTRfb25saW5lcl9pZihzZWxmKToKICAgICAgICAgZGVmIG9ubGluZXJzKCk6Ci0gICAgICAgICAgICBpZiBUcnVlOiBGYWxzZQotICAgICAgICAgICAgZWxzZTogVHJ1ZQorICAgICAgICAgICAgaWYgVHJ1ZTogeD1GYWxzZQorICAgICAgICAgICAgZWxzZTogeD1UcnVlCiAgICAgICAgICAgICByZXR1cm4gMAogICAgICAgICBzZWxmLnJ1bl9hbmRfY29tcGFyZSgKICAgICAgICAgICAgIG9ubGluZXJzLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zeXNjb25maWcucHkgYi9MaWIvdGVzdC90ZXN0X3N5c2NvbmZpZy5weQppbmRleCBhMjNiZjA2YS4uMzU1YmM2MSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zeXNjb25maWcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zeXNjb25maWcucHkKQEAgLTM4NSw3ICszODUsOSBAQAogICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZSh2YXJzWydTTyddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhcnNbJ1NPJ10sIHZhcnNbJ0VYVF9TVUZGSVgnXSkKIAotICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAnbGludXgnLCAnTGludXgtc3BlY2lmaWMgdGVzdCcpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtID09ICdsaW51eCcgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgaGFzYXR0cihzeXMuaW1wbGVtZW50YXRpb24sICdfbXVsdGlhcmNoJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ211bHRpYXJjaC1zcGVjaWZpYyB0ZXN0JykKICAgICBkZWYgdGVzdF90cmlwbGV0X2luX2V4dF9zdWZmaXgoc2VsZik6CiAgICAgICAgIGltcG9ydCBjdHlwZXMsIHBsYXRmb3JtLCByZQogICAgICAgICBtYWNoaW5lID0gcGxhdGZvcm0ubWFjaGluZSgpCkBAIC0zOTQsOCArMzk2LDggQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnbGludXgnIGluIHN1ZmZpeCwgc3VmZml4KQogICAgICAgICBpZiByZS5tYXRjaCgnKGlbMy02XTg2fHg4Nl82NCkkJywgbWFjaGluZSk6CiAgICAgICAgICAgICBpZiBjdHlwZXMuc2l6ZW9mKGN0eXBlcy5jX2NoYXJfcCgpKSA9PSA0OgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdWZmaXguZW5kc3dpdGgoJ2kzODYtbGludXgtZ251LnNvJykgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBzdWZmaXguZW5kc3dpdGgoJ3g4Nl82NC1saW51eC1nbnV4MzIuc28nKSwKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3VmZml4LmVuZHN3aXRoKCdpMzg2LWxpbnV4LWdudS5zbycpIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeC5lbmRzd2l0aCgneDg2XzY0LWxpbnV4LWdudXgzMi5zbycpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWZmaXgpCiAgICAgICAgICAgICBlbHNlOiAjIDggYnl0ZSBwb2ludGVyIHNpemUKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3VmZml4LmVuZHN3aXRoKCd4ODZfNjQtbGludXgtZ251LnNvJyksIHN1ZmZpeCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGFyZmlsZS5weSBiL0xpYi90ZXN0L3Rlc3RfdGFyZmlsZS5weQppbmRleCAxZWZiODQxLi42MTljYmMwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RhcmZpbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90YXJmaWxlLnB5CkBAIC0yMDgwLDYgKzIwODAsMjQgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKICAgICAgICAgICAgIHRhcmZpbGUuaXRuKDB4MTAwMDAwMDAwMDAsIDYsIHRhcmZpbGUuR05VX0ZPUk1BVCkKIAorICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKKyAgICAgICAgYmxhY2tsaXN0ID0geyd2ZXJzaW9uJywgJ2dycCcsICdwd2QnLCAnc3ltbGlua19leGNlcHRpb24nLAorICAgICAgICAgICAgICAgICAgICAgJ05VTCcsICdCTE9DS1NJWkUnLCAnUkVDT1JEU0laRScsICdHTlVfTUFHSUMnLAorICAgICAgICAgICAgICAgICAgICAgJ1BPU0lYX01BR0lDJywgJ0xFTkdUSF9OQU1FJywgJ0xFTkdUSF9MSU5LJywKKyAgICAgICAgICAgICAgICAgICAgICdMRU5HVEhfUFJFRklYJywgJ1JFR1RZUEUnLCAnQVJFR1RZUEUnLCAnTE5LVFlQRScsCisgICAgICAgICAgICAgICAgICAgICAnU1lNVFlQRScsICdDSFJUWVBFJywgJ0JMS1RZUEUnLCAnRElSVFlQRScsICdGSUZPVFlQRScsCisgICAgICAgICAgICAgICAgICAgICAnQ09OVFRZUEUnLCAnR05VVFlQRV9MT05HTkFNRScsICdHTlVUWVBFX0xPTkdMSU5LJywKKyAgICAgICAgICAgICAgICAgICAgICdHTlVUWVBFX1NQQVJTRScsICdYSERUWVBFJywgJ1hHTFRZUEUnLCAnU09MQVJJU19YSERUWVBFJywKKyAgICAgICAgICAgICAgICAgICAgICdTVVBQT1JURURfVFlQRVMnLCAnUkVHVUxBUl9UWVBFUycsICdHTlVfVFlQRVMnLAorICAgICAgICAgICAgICAgICAgICAgJ1BBWF9GSUVMRFMnLCAnUEFYX05BTUVfRklFTERTJywgJ1BBWF9OVU1CRVJfRklFTERTJywKKyAgICAgICAgICAgICAgICAgICAgICdzdG4nLCAnbnRzJywgJ250aScsICdpdG4nLCAnY2FsY19jaGtzdW1zJywgJ2NvcHlmaWxlb2JqJywKKyAgICAgICAgICAgICAgICAgICAgICdmaWxlbW9kZScsCisgICAgICAgICAgICAgICAgICAgICAnRW1wdHlIZWFkZXJFcnJvcicsICdUcnVuY2F0ZWRIZWFkZXJFcnJvcicsCisgICAgICAgICAgICAgICAgICAgICAnRU9GSGVhZGVyRXJyb3InLCAnSW52YWxpZEhlYWRlckVycm9yJywKKyAgICAgICAgICAgICAgICAgICAgICdTdWJzZXF1ZW50SGVhZGVyRXJyb3InLCAnRXhGaWxlT2JqZWN0JywKKyAgICAgICAgICAgICAgICAgICAgICdtYWluJ30KKyAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgdGFyZmlsZSwgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKwogCiBjbGFzcyBDb21tYW5kTGluZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RlbG5ldGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfdGVsbmV0bGliLnB5CmluZGV4IDhlMjE5ZjQuLjUxZDgyZTEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdGVsbmV0bGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdGVsbmV0bGliLnB5CkBAIC0xLDcgKzEsNiBAQAogaW1wb3J0IHNvY2tldAogaW1wb3J0IHNlbGVjdG9ycwogaW1wb3J0IHRlbG5ldGxpYgotaW1wb3J0IHRpbWUKIGltcG9ydCBjb250ZXh0bGliCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydApAQCAtNDIsNiArNDEsMTEgQEAKICAgICAgICAgdGVsbmV0ID0gdGVsbmV0bGliLlRlbG5ldChIT1NULCBzZWxmLnBvcnQpCiAgICAgICAgIHRlbG5ldC5zb2NrLmNsb3NlKCkKIAorICAgIGRlZiB0ZXN0Q29udGV4dE1hbmFnZXIoc2VsZik6CisgICAgICAgIHdpdGggdGVsbmV0bGliLlRlbG5ldChIT1NULCBzZWxmLnBvcnQpIGFzIHRuOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUodG4uZ2V0X3NvY2tldCgpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZSh0bi5nZXRfc29ja2V0KCkpCisKICAgICBkZWYgdGVzdFRpbWVvdXREZWZhdWx0KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFRydWUoc29ja2V0LmdldGRlZmF1bHR0aW1lb3V0KCkgaXMgTm9uZSkKICAgICAgICAgc29ja2V0LnNldGRlZmF1bHR0aW1lb3V0KDMwKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90aHJlYWRpbmcucHkgYi9MaWIvdGVzdC90ZXN0X3RocmVhZGluZy5weQppbmRleCBiNjMwNTA5Li4yYzI5MTRmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RocmVhZGluZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RocmVhZGluZy5weQpAQCAtOCw3ICs4LDYgQEAKIGZyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2ssIGFzc2VydF9weXRob25fZmFpbHVyZQogCiBpbXBvcnQgcmFuZG9tCi1pbXBvcnQgcmUKIGltcG9ydCBzeXMKIF90aHJlYWQgPSBpbXBvcnRfbW9kdWxlKCdfdGhyZWFkJykKIHRocmVhZGluZyA9IGltcG9ydF9tb2R1bGUoJ3RocmVhZGluZycpCkBAIC0xOSw2ICsxOCw3IEBACiBpbXBvcnQgc3VicHJvY2VzcwogCiBmcm9tIHRlc3QgaW1wb3J0IGxvY2tfdGVzdHMKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiAKICMgQmV0d2VlbiBmb3JrKCkgYW5kIGV4ZWMoKSwgb25seSBhc3luYy1zYWZlIGZ1bmN0aW9ucyBhcmUgYWxsb3dlZCAoaXNzdWVzCkBAIC00NjIsNyArNDYyLDcgQEAKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN5cy5zZXRzd2l0Y2hpbnRlcnZhbCwgb2xkX2ludGVydmFsKQogCiAgICAgICAgICMgTWFrZSB0aGUgYnVnIG1vcmUgbGlrZWx5IHRvIG1hbmlmZXN0LgotICAgICAgICBzeXMuc2V0c3dpdGNoaW50ZXJ2YWwoMWUtNikKKyAgICAgICAgdGVzdC5zdXBwb3J0LnNldHN3aXRjaGludGVydmFsKDFlLTYpCiAKICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMjApOgogICAgICAgICAgICAgdCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PWxhbWJkYTogTm9uZSkKQEAgLTExMTcsNSArMTExNywxMiBAQAogY2xhc3MgQmFycmllclRlc3RzKGxvY2tfdGVzdHMuQmFycmllclRlc3RzKToKICAgICBiYXJyaWVydHlwZSA9IHN0YXRpY21ldGhvZCh0aHJlYWRpbmcuQmFycmllcikKIAorY2xhc3MgTWlzY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgIGV4dHJhID0geyJUaHJlYWRFcnJvciJ9CisgICAgICAgIGJsYWNrbGlzdCA9IHsnY3VycmVudFRocmVhZCcsICdhY3RpdmVDb3VudCd9CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIHRocmVhZGluZywgKCd0aHJlYWRpbmcnLCAnX3RocmVhZCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYT1leHRyYSwgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKwogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGltZS5weSBiL0xpYi90ZXN0L3Rlc3RfdGltZS5weQppbmRleCA3NmI4OTRlLi5mMjI0MjEyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RpbWUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90aW1lLnB5CkBAIC0xLDYgKzEsOCBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CitpbXBvcnQgZGVjaW1hbAogaW1wb3J0IGVudW0KIGltcG9ydCBsb2NhbGUKK2ltcG9ydCBtYXRoCiBpbXBvcnQgcGxhdGZvcm0KIGltcG9ydCBzeXMKIGltcG9ydCBzeXNjb25maWcKQEAgLTIxLDE3ICsyMywyNyBAQAogVElNRV9NQVhZRUFSID0gKDEgPDwgOCAqIFNJWkVPRl9JTlQgLSAxKSAtIDEKIFRJTUVfTUlOWUVBUiA9IC1USU1FX01BWFlFQVIgLSAxCiAKK1NFQ19UT19VUyA9IDEwICoqIDYKIFVTX1RPX05TID0gMTAgKiogMwogTVNfVE9fTlMgPSAxMCAqKiA2CiBTRUNfVE9fTlMgPSAxMCAqKiA5CitOU19UT19TRUMgPSAxMCAqKiA5CiAKIGNsYXNzIF9QeVRpbWUoZW51bS5JbnRFbnVtKToKICAgICAjIFJvdW5kIHRvd2FyZHMgbWludXMgaW5maW5pdHkgKC1pbmYpCiAgICAgUk9VTkRfRkxPT1IgPSAwCiAgICAgIyBSb3VuZCB0b3dhcmRzIGluZmluaXR5ICgraW5mKQogICAgIFJPVU5EX0NFSUxJTkcgPSAxCisgICAgIyBSb3VuZCB0byBuZWFyZXN0IHdpdGggdGllcyBnb2luZyB0byBuZWFyZXN0IGV2ZW4gaW50ZWdlcgorICAgIFJPVU5EX0hBTEZfRVZFTiA9IDIKIAotQUxMX1JPVU5ESU5HX01FVEhPRFMgPSAoX1B5VGltZS5ST1VORF9GTE9PUiwgX1B5VGltZS5ST1VORF9DRUlMSU5HKQorIyBSb3VuZGluZyBtb2RlcyBzdXBwb3J0ZWQgYnkgUHlUaW1lCitST1VORElOR19NT0RFUyA9ICgKKyAgICAjIChQeVRpbWUgcm91bmRpbmcgbWV0aG9kLCBkZWNpbWFsIHJvdW5kaW5nIG1ldGhvZCkKKyAgICAoX1B5VGltZS5ST1VORF9GTE9PUiwgZGVjaW1hbC5ST1VORF9GTE9PUiksCisgICAgKF9QeVRpbWUuUk9VTkRfQ0VJTElORywgZGVjaW1hbC5ST1VORF9DRUlMSU5HKSwKKyAgICAoX1B5VGltZS5ST1VORF9IQUxGX0VWRU4sIGRlY2ltYWwuUk9VTkRfSEFMRl9FVkVOKSwKKykKIAogCiBjbGFzcyBUaW1lVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNjA3LDc5ICs2MTksNiBAQAogCiAKIGNsYXNzIFRlc3RQeXRpbWUodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5pbnZhbGlkX3ZhbHVlcyA9ICgKLSAgICAgICAgICAgIC0oMiAqKiAxMDApLCAyICoqIDEwMCwKLSAgICAgICAgICAgIC0oMi4wICoqIDEwMC4wKSwgMi4wICoqIDEwMC4wLAotICAgICAgICApCi0KLSAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKLSAgICBkZWYgdGVzdF90aW1lX3Qoc2VsZik6Ci0gICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBweXRpbWVfb2JqZWN0X3RvX3RpbWVfdAotICAgICAgICBmb3Igb2JqLCB0aW1lX3QsIHJuZCBpbiAoCi0gICAgICAgICAgICAjIFJvdW5kIHRvd2FyZHMgbWludXMgaW5maW5pdHkgKC1pbmYpCi0gICAgICAgICAgICAoMCwgMCwgX1B5VGltZS5ST1VORF9GTE9PUiksCi0gICAgICAgICAgICAoLTEsIC0xLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKLSAgICAgICAgICAgICgtMS4wLCAtMSwgX1B5VGltZS5ST1VORF9GTE9PUiksCi0gICAgICAgICAgICAoLTEuOSwgLTIsIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKDEuMCwgMSwgX1B5VGltZS5ST1VORF9GTE9PUiksCi0gICAgICAgICAgICAoMS45LCAxLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKLSAgICAgICAgICAgICMgUm91bmQgdG93YXJkcyBpbmZpbml0eSAoK2luZikKLSAgICAgICAgICAgICgwLCAwLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAotICAgICAgICAgICAgKC0xLCAtMSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgICAgICgtMS4wLCAtMSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgICAgICgtMS45LCAtMSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgICAgICgxLjAsIDEsIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCi0gICAgICAgICAgICAoMS45LCAyLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAotICAgICAgICApOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChweXRpbWVfb2JqZWN0X3RvX3RpbWVfdChvYmosIHJuZCksIHRpbWVfdCkKLQotICAgICAgICBybmQgPSBfUHlUaW1lLlJPVU5EX0ZMT09SCi0gICAgICAgIGZvciBpbnZhbGlkIGluIHNlbGYuaW52YWxpZF92YWx1ZXM6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHl0aW1lX29iamVjdF90b190aW1lX3QsIGludmFsaWQsIHJuZCkKLQotICAgIEBzdXBwb3J0LmNweXRob25fb25seQotICAgIGRlZiB0ZXN0X3RpbWVzcGVjKHNlbGYpOgotICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgcHl0aW1lX29iamVjdF90b190aW1lc3BlYwotICAgICAgICBmb3Igb2JqLCB0aW1lc3BlYywgcm5kIGluICgKLSAgICAgICAgICAgICMgUm91bmQgdG93YXJkcyBtaW51cyBpbmZpbml0eSAoLWluZikKLSAgICAgICAgICAgICgwLCAoMCwgMCksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKC0xLCAoLTEsIDApLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKLSAgICAgICAgICAgICgtMS4wLCAoLTEsIDApLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKLSAgICAgICAgICAgICgxZS05LCAoMCwgMSksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKDFlLTEwLCAoMCwgMCksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKC0xZS05LCAoLTEsIDk5OTk5OTk5OSksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKC0xZS0xMCwgKC0xLCA5OTk5OTk5OTkpLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKLSAgICAgICAgICAgICgtMS4yLCAoLTIsIDgwMDAwMDAwMCksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKDAuOTk5OTk5OTk5OSwgKDAsIDk5OTk5OTk5OSksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKDEuMTIzNDU2Nzg5MCwgKDEsIDEyMzQ1Njc4OSksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKDEuMTIzNDU2Nzg5OSwgKDEsIDEyMzQ1Njc4OSksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKC0xLjEyMzQ1Njc4OTAsICgtMiwgODc2NTQzMjExKSwgX1B5VGltZS5ST1VORF9GTE9PUiksCi0gICAgICAgICAgICAoLTEuMTIzNDU2Nzg5MSwgKC0yLCA4NzY1NDMyMTApLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKLSAgICAgICAgICAgICMgUm91bmQgdG93YXJkcyBpbmZpbml0eSAoK2luZikKLSAgICAgICAgICAgICgwLCAoMCwgMCksIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCi0gICAgICAgICAgICAoLTEsICgtMSwgMCksIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCi0gICAgICAgICAgICAoLTEuMCwgKC0xLCAwKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgICAgICgxZS05LCAoMCwgMSksIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCi0gICAgICAgICAgICAoMWUtMTAsICgwLCAxKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgICAgICgtMWUtOSwgKC0xLCA5OTk5OTk5OTkpLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAotICAgICAgICAgICAgKC0xZS0xMCwgKDAsIDApLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAotICAgICAgICAgICAgKC0xLjIsICgtMiwgODAwMDAwMDAwKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgICAgICgwLjk5OTk5OTk5OTksICgxLCAwKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgICAgICgxLjEyMzQ1Njc4OTAsICgxLCAxMjM0NTY3OTApLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAotICAgICAgICAgICAgKDEuMTIzNDU2Nzg5OSwgKDEsIDEyMzQ1Njc5MCksIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCi0gICAgICAgICAgICAoLTEuMTIzNDU2Nzg5MCwgKC0yLCA4NzY1NDMyMTEpLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAotICAgICAgICAgICAgKC0xLjEyMzQ1Njc4OTEsICgtMiwgODc2NTQzMjExKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgKToKLSAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9iaj1vYmosIHJvdW5kPXJuZCwgdGltZXNwZWM9dGltZXNwZWMpOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHl0aW1lX29iamVjdF90b190aW1lc3BlYyhvYmosIHJuZCksIHRpbWVzcGVjKQotCi0gICAgICAgIHJuZCA9IF9QeVRpbWUuUk9VTkRfRkxPT1IKLSAgICAgICAgZm9yIGludmFsaWQgaW4gc2VsZi5pbnZhbGlkX3ZhbHVlczoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweXRpbWVfb2JqZWN0X3RvX3RpbWVzcGVjLCBpbnZhbGlkLCBybmQpCi0KICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aW1lLl9TVFJVQ1RfVE1fSVRFTVMgPT0gMTEsICJuZWVkcyB0bV96b25lIHN1cHBvcnQiKQogICAgIGRlZiB0ZXN0X2xvY2FsdGltZV90aW1lem9uZShzZWxmKToKIApAQCAtNzM0LDI2NiArNjczLDI5MSBAQAogICAgICAgICBzZWxmLmFzc2VydElzKGx0LnRtX3pvbmUsIE5vbmUpCiAKIAotQHVuaXR0ZXN0LnNraXBVbmxlc3MoX3Rlc3RjYXBpIGlzIG5vdCBOb25lLAotICAgICAgICAgICAgICAgICAgICAgJ25lZWQgdGhlIF90ZXN0Y2FwaSBtb2R1bGUnKQotY2xhc3MgVGVzdFB5VGltZV90KHVuaXR0ZXN0LlRlc3RDYXNlKToKK0B1bml0dGVzdC5za2lwSWYoX3Rlc3RjYXBpIGlzIE5vbmUsICduZWVkIHRoZSBfdGVzdGNhcGkgbW9kdWxlJykKK2NsYXNzIENQeVRpbWVUZXN0Q2FzZToKKyAgICAiIiIKKyAgICBCYXNlIGNsYXNzIHRvIHRlc3QgdGhlIEMgX1B5VGltZV90IEFQSS4KKyAgICAiIiIKKyAgICBPVkVSRkxPV19TRUNPTkRTID0gTm9uZQorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgU0laRU9GX1RJTUVfVAorICAgICAgICBiaXRzID0gU0laRU9GX1RJTUVfVCAqIDggLSAxCisgICAgICAgIHNlbGYudGltZV90X21pbiA9IC0yICoqIGJpdHMKKyAgICAgICAgc2VsZi50aW1lX3RfbWF4ID0gMiAqKiBiaXRzIC0gMQorCisgICAgZGVmIHRpbWVfdF9maWx0ZXIoc2VsZiwgc2Vjb25kcyk6CisgICAgICAgIHJldHVybiAoc2VsZi50aW1lX3RfbWluIDw9IHNlY29uZHMgPD0gc2VsZi50aW1lX3RfbWF4KQorCisgICAgZGVmIF9yb3VuZGluZ192YWx1ZXMoc2VsZiwgdXNlX2Zsb2F0KToKKyAgICAgICAgIkJ1aWxkIHRpbWVzdGFtcHMgdXNlZCB0byB0ZXN0IHJvdW5kaW5nLiIKKworICAgICAgICB1bml0cyA9IFsxLCBVU19UT19OUywgTVNfVE9fTlMsIFNFQ19UT19OU10KKyAgICAgICAgaWYgdXNlX2Zsb2F0OgorICAgICAgICAgICAgIyBwaWNvc2Vjb25kcyBhcmUgb25seSB0ZXN0ZWQgdG8gcHl0aW1lX2NvbnZlcnRlciBhY2NlcHRpbmcgZmxvYXRzCisgICAgICAgICAgICB1bml0cy5hcHBlbmQoMWUtMykKKworICAgICAgICB2YWx1ZXMgPSAoCisgICAgICAgICAgICAjIHNtYWxsIHZhbHVlcworICAgICAgICAgICAgMSwgMiwgNSwgNywgMTIzLCA0NTYsIDEyMzQsCisgICAgICAgICAgICAjIDEwXmsgLSAxCisgICAgICAgICAgICA5LAorICAgICAgICAgICAgOTksCisgICAgICAgICAgICA5OTksCisgICAgICAgICAgICA5OTk5LAorICAgICAgICAgICAgOTk5OTksCisgICAgICAgICAgICA5OTk5OTksCisgICAgICAgICAgICAjIHRlc3QgaGFsZiBldmVuIHJvdW5kaW5nIG5lYXIgMC41LCAxLjUsIDIuNSwgMy41LCA0LjUKKyAgICAgICAgICAgIDQ5OSwgNTAwLCA1MDEsCisgICAgICAgICAgICAxNDk5LCAxNTAwLCAxNTAxLAorICAgICAgICAgICAgMjUwMCwKKyAgICAgICAgICAgIDM1MDAsCisgICAgICAgICAgICA0NTAwLAorICAgICAgICApCisKKyAgICAgICAgbnNfdGltZXN0YW1wcyA9IFswXQorICAgICAgICBmb3IgdW5pdCBpbiB1bml0czoKKyAgICAgICAgICAgIGZvciB2YWx1ZSBpbiB2YWx1ZXM6CisgICAgICAgICAgICAgICAgbnMgPSB2YWx1ZSAqIHVuaXQKKyAgICAgICAgICAgICAgICBuc190aW1lc3RhbXBzLmV4dGVuZCgoLW5zLCBucykpCisgICAgICAgIGZvciBwb3cyIGluICgwLCA1LCAxMCwgMTUsIDIyLCAyMywgMjQsIDMwLCAzMyk6CisgICAgICAgICAgICBucyA9ICgyICoqIHBvdzIpICogU0VDX1RPX05TCisgICAgICAgICAgICBuc190aW1lc3RhbXBzLmV4dGVuZCgoCisgICAgICAgICAgICAgICAgLW5zLTEsIC1ucywgLW5zKzEsCisgICAgICAgICAgICAgICAgbnMtMSwgbnMsIG5zKzEKKyAgICAgICAgICAgICkpCisgICAgICAgIGZvciBzZWNvbmRzIGluIChfdGVzdGNhcGkuSU5UX01JTiwgX3Rlc3RjYXBpLklOVF9NQVgpOgorICAgICAgICAgICAgbnNfdGltZXN0YW1wcy5hcHBlbmQoc2Vjb25kcyAqIFNFQ19UT19OUykKKyAgICAgICAgaWYgdXNlX2Zsb2F0OgorICAgICAgICAgICAgIyBudW1iZXJzIHdpdGggYW4gZXhhY3QgcmVwcmVzZW50YXRpb24gaW4gSUVFRSA3NTQgKGJhc2UgMikKKyAgICAgICAgICAgIGZvciBwb3cyIGluICgzLCA3LCAxMCwgMTUpOgorICAgICAgICAgICAgICAgIG5zID0gMi4wICoqICgtcG93MikKKyAgICAgICAgICAgICAgICBuc190aW1lc3RhbXBzLmV4dGVuZCgoLW5zLCBucykpCisKKyAgICAgICAgIyBzZWNvbmRzIGNsb3NlIHRvIF9QeVRpbWVfdCB0eXBlIGxpbWl0CisgICAgICAgIG5zID0gKDIgKiogNjMgLy8gU0VDX1RPX05TKSAqIFNFQ19UT19OUworICAgICAgICBuc190aW1lc3RhbXBzLmV4dGVuZCgoLW5zLCBucykpCisKKyAgICAgICAgcmV0dXJuIG5zX3RpbWVzdGFtcHMKKworICAgIGRlZiBfY2hlY2tfcm91bmRpbmcoc2VsZiwgcHl0aW1lX2NvbnZlcnRlciwgZXhwZWN0ZWRfZnVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgIHVzZV9mbG9hdCwgdW5pdF90b19zZWMsIHZhbHVlX2ZpbHRlcj1Ob25lKToKKworICAgICAgICBkZWYgY29udmVydF92YWx1ZXMobnNfdGltZXN0YW1wcyk6CisgICAgICAgICAgICBpZiB1c2VfZmxvYXQ6CisgICAgICAgICAgICAgICAgdW5pdF90b19ucyA9IFNFQ19UT19OUyAvIGZsb2F0KHVuaXRfdG9fc2VjKQorICAgICAgICAgICAgICAgIHZhbHVlcyA9IFtucyAvIHVuaXRfdG9fbnMgZm9yIG5zIGluIG5zX3RpbWVzdGFtcHNdCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHVuaXRfdG9fbnMgPSBTRUNfVE9fTlMgLy8gdW5pdF90b19zZWMKKyAgICAgICAgICAgICAgICB2YWx1ZXMgPSBbbnMgLy8gdW5pdF90b19ucyBmb3IgbnMgaW4gbnNfdGltZXN0YW1wc10KKworICAgICAgICAgICAgaWYgdmFsdWVfZmlsdGVyOgorICAgICAgICAgICAgICAgIHZhbHVlcyA9IGZpbHRlcih2YWx1ZV9maWx0ZXIsIHZhbHVlcykKKworICAgICAgICAgICAgIyByZW1vdmUgZHVwbGljYXRlcyBhbmQgc29ydAorICAgICAgICAgICAgcmV0dXJuIHNvcnRlZChzZXQodmFsdWVzKSkKKworICAgICAgICAjIHRlc3Qgcm91bmRpbmcKKyAgICAgICAgbnNfdGltZXN0YW1wcyA9IHNlbGYuX3JvdW5kaW5nX3ZhbHVlcyh1c2VfZmxvYXQpCisgICAgICAgIHZhbGlkX3ZhbHVlcyA9IGNvbnZlcnRfdmFsdWVzKG5zX3RpbWVzdGFtcHMpCisgICAgICAgIGZvciB0aW1lX3JuZCwgZGVjaW1hbF9ybmQgaW4gUk9VTkRJTkdfTU9ERVMgOgorICAgICAgICAgICAgY29udGV4dCA9IGRlY2ltYWwuZ2V0Y29udGV4dCgpCisgICAgICAgICAgICBjb250ZXh0LnJvdW5kaW5nID0gZGVjaW1hbF9ybmQKKworICAgICAgICAgICAgZm9yIHZhbHVlIGluIHZhbGlkX3ZhbHVlczoKKyAgICAgICAgICAgICAgICBkZWJ1Z19pbmZvID0geyd2YWx1ZSc6IHZhbHVlLCAncm91bmRpbmcnOiBkZWNpbWFsX3JuZH0KKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHB5dGltZV9jb252ZXJ0ZXIodmFsdWUsIHRpbWVfcm5kKQorICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCA9IGV4cGVjdGVkX2Z1bmModmFsdWUpCisgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBleGM6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiRXJyb3Igb24gdGltZXN0YW1wIGNvbnZlcnNpb246ICVzIiAlIGRlYnVnX2luZm8pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnX2luZm8pCisKKyAgICAgICAgIyB0ZXN0IG92ZXJmbG93CisgICAgICAgIG5zID0gc2VsZi5PVkVSRkxPV19TRUNPTkRTICogU0VDX1RPX05TCisgICAgICAgIG5zX3RpbWVzdGFtcHMgPSAoLW5zLCBucykKKyAgICAgICAgb3ZlcmZsb3dfdmFsdWVzID0gY29udmVydF92YWx1ZXMobnNfdGltZXN0YW1wcykKKyAgICAgICAgZm9yIHRpbWVfcm5kLCBfIGluIFJPVU5ESU5HX01PREVTIDoKKyAgICAgICAgICAgIGZvciB2YWx1ZSBpbiBvdmVyZmxvd192YWx1ZXM6CisgICAgICAgICAgICAgICAgZGVidWdfaW5mbyA9IHsndmFsdWUnOiB2YWx1ZSwgJ3JvdW5kaW5nJzogdGltZV9ybmR9CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBtc2c9ZGVidWdfaW5mbyk6CisgICAgICAgICAgICAgICAgICAgIHB5dGltZV9jb252ZXJ0ZXIodmFsdWUsIHRpbWVfcm5kKQorCisgICAgZGVmIGNoZWNrX2ludF9yb3VuZGluZyhzZWxmLCBweXRpbWVfY29udmVydGVyLCBleHBlY3RlZF9mdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdF90b19zZWM9MSwgdmFsdWVfZmlsdGVyPU5vbmUpOgorICAgICAgICBzZWxmLl9jaGVja19yb3VuZGluZyhweXRpbWVfY29udmVydGVyLCBleHBlY3RlZF9mdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGYWxzZSwgdW5pdF90b19zZWMsIHZhbHVlX2ZpbHRlcikKKworICAgIGRlZiBjaGVja19mbG9hdF9yb3VuZGluZyhzZWxmLCBweXRpbWVfY29udmVydGVyLCBleHBlY3RlZF9mdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0X3RvX3NlYz0xLCB2YWx1ZV9maWx0ZXI9Tm9uZSk6CisgICAgICAgIHNlbGYuX2NoZWNrX3JvdW5kaW5nKHB5dGltZV9jb252ZXJ0ZXIsIGV4cGVjdGVkX2Z1bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRydWUsIHVuaXRfdG9fc2VjLCB2YWx1ZV9maWx0ZXIpCisKKyAgICBkZWYgZGVjaW1hbF9yb3VuZChzZWxmLCB4KToKKyAgICAgICAgZCA9IGRlY2ltYWwuRGVjaW1hbCh4KQorICAgICAgICBkID0gZC5xdWFudGl6ZSgxKQorICAgICAgICByZXR1cm4gaW50KGQpCisKKworY2xhc3MgVGVzdENQeVRpbWUoQ1B5VGltZVRlc3RDYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiCisgICAgVGVzdCB0aGUgQyBfUHlUaW1lX3QgQVBJLgorICAgICIiIgorICAgICMgX1B5VGltZV90IGlzIGEgNjQtYml0IHNpZ25lZCBpbnRlZ2VyCisgICAgT1ZFUkZMT1dfU0VDT05EUyA9IG1hdGguY2VpbCgoMioqNjMgKyAxKSAvIFNFQ19UT19OUykKKwogICAgIGRlZiB0ZXN0X0Zyb21TZWNvbmRzKHNlbGYpOgogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgUHlUaW1lX0Zyb21TZWNvbmRzCi0gICAgICAgIGZvciBzZWNvbmRzIGluICgwLCAzLCAtNDU2LCBfdGVzdGNhcGkuSU5UX01BWCwgX3Rlc3RjYXBpLklOVF9NSU4pOgotICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qoc2Vjb25kcz1zZWNvbmRzKToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VGltZV9Gcm9tU2Vjb25kcyhzZWNvbmRzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY29uZHMgKiBTRUNfVE9fTlMpCisKKyAgICAgICAgIyBQeVRpbWVfRnJvbVNlY29uZHMoKSBleHBlY3RzIGEgQyBpbnQsIHJlamVjdCB2YWx1ZXMgb3V0IG9mIHJhbmdlCisgICAgICAgIGRlZiBjX2ludF9maWx0ZXIoc2Vjcyk6CisgICAgICAgICAgICByZXR1cm4gKF90ZXN0Y2FwaS5JTlRfTUlOIDw9IHNlY3MgPD0gX3Rlc3RjYXBpLklOVF9NQVgpCisKKyAgICAgICAgc2VsZi5jaGVja19pbnRfcm91bmRpbmcobGFtYmRhIHNlY3MsIHJuZDogUHlUaW1lX0Zyb21TZWNvbmRzKHNlY3MpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgc2Vjczogc2VjcyAqIFNFQ19UT19OUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfZmlsdGVyPWNfaW50X2ZpbHRlcikKIAogICAgIGRlZiB0ZXN0X0Zyb21TZWNvbmRzT2JqZWN0KHNlbGYpOgogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgUHlUaW1lX0Zyb21TZWNvbmRzT2JqZWN0CiAKLSAgICAgICAgIyBDb252ZXJzaW9uIGdpdmluZyB0aGUgc2FtZSByZXN1bHQgZm9yIGFsbCByb3VuZGluZyBtZXRob2RzCi0gICAgICAgIGZvciBybmQgaW4gQUxMX1JPVU5ESU5HX01FVEhPRFM6Ci0gICAgICAgICAgICBmb3Igb2JqLCB0cyBpbiAoCi0gICAgICAgICAgICAgICAgIyBpbnRlZ2VycwotICAgICAgICAgICAgICAgICgwLCAwKSwKLSAgICAgICAgICAgICAgICAoMSwgU0VDX1RPX05TKSwKLSAgICAgICAgICAgICAgICAoLTMsIC0zICogU0VDX1RPX05TKSwKKyAgICAgICAgc2VsZi5jaGVja19pbnRfcm91bmRpbmcoCisgICAgICAgICAgICBQeVRpbWVfRnJvbVNlY29uZHNPYmplY3QsCisgICAgICAgICAgICBsYW1iZGEgc2Vjczogc2VjcyAqIFNFQ19UT19OUykKIAotICAgICAgICAgICAgICAgICMgZmxvYXQ6IHN1YnNlY29uZHMKLSAgICAgICAgICAgICAgICAoMC4wLCAwKSwKLSAgICAgICAgICAgICAgICAoMWUtOSwgMSksCi0gICAgICAgICAgICAgICAgKDFlLTYsIDEwICoqIDMpLAotICAgICAgICAgICAgICAgICgxZS0zLCAxMCAqKiA2KSwKLQotICAgICAgICAgICAgICAgICMgZmxvYXQ6IHNlY29uZHMKLSAgICAgICAgICAgICAgICAoMi4wLCAyICogU0VDX1RPX05TKSwKLSAgICAgICAgICAgICAgICAoMTIzLjAsIDEyMyAqIFNFQ19UT19OUyksCi0gICAgICAgICAgICAgICAgKC03LjAsIC03ICogU0VDX1RPX05TKSwKLQotICAgICAgICAgICAgICAgICMgbmFub3NlY29uZCBhcmUga2VwdCBmb3IgdmFsdWUgPD0gMl4yMyBzZWNvbmRzCi0gICAgICAgICAgICAgICAgKDIqKjIyIC0gMWUtOSwgIDQxOTQzMDM5OTk5OTk5OTkpLAotICAgICAgICAgICAgICAgICgyKioyMiwgICAgICAgICA0MTk0MzA0MDAwMDAwMDAwKSwKLSAgICAgICAgICAgICAgICAoMioqMjIgKyAxZS05LCAgNDE5NDMwNDAwMDAwMDAwMSksCi0gICAgICAgICAgICAgICAgKDIqKjIzIC0gMWUtOSwgIDgzODg2MDc5OTk5OTk5OTkpLAotICAgICAgICAgICAgICAgICgyKioyMywgICAgICAgICA4Mzg4NjA4MDAwMDAwMDAwKSwKLQotICAgICAgICAgICAgICAgICMgc3RhcnQgbG9zaW5nIHByZWNpc2lvbiBmb3IgdmFsdWUgPiAyXjIzIHNlY29uZHMKLSAgICAgICAgICAgICAgICAoMioqMjMgKyAxZS05LCAgODM4ODYwODAwMDAwMDAwMiksCi0KLSAgICAgICAgICAgICAgICAjIG5hbm9zZWNvbmRzIGFyZSBsb3N0IGZvciB2YWx1ZSA+IDJeMjMgc2Vjb25kcwotICAgICAgICAgICAgICAgICgyKioyNCAtIDFlLTksIDE2Nzc3MjE1OTk5OTk5OTk4KSwKLSAgICAgICAgICAgICAgICAoMioqMjQsICAgICAgICAxNjc3NzIxNjAwMDAwMDAwMCksCi0gICAgICAgICAgICAgICAgKDIqKjI0ICsgMWUtOSwgMTY3NzcyMTYwMDAwMDAwMDApLAotICAgICAgICAgICAgICAgICgyKioyNSAtIDFlLTksIDMzNTU0NDMyMDAwMDAwMDAwKSwKLSAgICAgICAgICAgICAgICAoMioqMjUgICAgICAgLCAzMzU1NDQzMjAwMDAwMDAwMCksCi0gICAgICAgICAgICAgICAgKDIqKjI1ICsgMWUtOSwgMzM1NTQ0MzIwMDAwMDAwMDApLAotCi0gICAgICAgICAgICAgICAgIyBjbG9zZSB0byAyXjYzIG5hbm9zZWNvbmRzIChfUHlUaW1lX3QgbGltaXQpCi0gICAgICAgICAgICAgICAgKDkyMjMzNzIwMzYsIDkyMjMzNzIwMzYgKiBTRUNfVE9fTlMpLAotICAgICAgICAgICAgICAgICg5MjIzMzcyMDM2LjAsIDkyMjMzNzIwMzYgKiBTRUNfVE9fTlMpLAotICAgICAgICAgICAgICAgICgtOTIyMzM3MjAzNiwgLTkyMjMzNzIwMzYgKiBTRUNfVE9fTlMpLAotICAgICAgICAgICAgICAgICgtOTIyMzM3MjAzNi4wLCAtOTIyMzM3MjAzNiAqIFNFQ19UT19OUyksCi0gICAgICAgICAgICApOgotICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9iaj1vYmosIHJvdW5kPXJuZCwgdGltZXN0YW1wPXRzKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVRpbWVfRnJvbVNlY29uZHNPYmplY3Qob2JqLCBybmQpLCB0cykKLQotICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qocm91bmQ9cm5kKToKLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IpOgotICAgICAgICAgICAgICAgICAgICBQeVRpbWVfRnJvbVNlY29uZHNPYmplY3QoOTIyMzM3MjAzNywgcm5kKQotICAgICAgICAgICAgICAgICAgICBQeVRpbWVfRnJvbVNlY29uZHNPYmplY3QoOTIyMzM3MjAzNy4wLCBybmQpCi0gICAgICAgICAgICAgICAgICAgIFB5VGltZV9Gcm9tU2Vjb25kc09iamVjdCgtOTIyMzM3MjAzNywgcm5kKQotICAgICAgICAgICAgICAgICAgICBQeVRpbWVfRnJvbVNlY29uZHNPYmplY3QoLTkyMjMzNzIwMzcuMCwgcm5kKQotCi0gICAgICAgICMgQ29udmVyc2lvbiBnaXZpbmcgZGlmZmVyZW50IHJlc3VsdHMgZGVwZW5kaW5nIG9uIHRoZSByb3VuZGluZyBtZXRob2QKLSAgICAgICAgRkxPT1IgPSBfUHlUaW1lLlJPVU5EX0ZMT09SCi0gICAgICAgIENFSUxJTkcgPSBfUHlUaW1lLlJPVU5EX0NFSUxJTkcKLSAgICAgICAgZm9yIG9iaiwgdHMsIHJuZCBpbiAoCi0gICAgICAgICAgICAjIGNsb3NlIHRvIHplcm8KLSAgICAgICAgICAgICggMWUtMTAsICAwLCBGTE9PUiksCi0gICAgICAgICAgICAoIDFlLTEwLCAgMSwgQ0VJTElORyksCi0gICAgICAgICAgICAoLTFlLTEwLCAtMSwgRkxPT1IpLAotICAgICAgICAgICAgKC0xZS0xMCwgIDAsIENFSUxJTkcpLAotCi0gICAgICAgICAgICAjIHRlc3Qgcm91bmRpbmcgb2YgdGhlIGxhc3QgbmFub3NlY29uZAotICAgICAgICAgICAgKCAxLjEyMzQ1Njc4OTksICAxMTIzNDU2Nzg5LCBGTE9PUiksCi0gICAgICAgICAgICAoIDEuMTIzNDU2Nzg5OSwgIDExMjM0NTY3OTAsIENFSUxJTkcpLAotICAgICAgICAgICAgKC0xLjEyMzQ1Njc4OTksIC0xMTIzNDU2NzkwLCBGTE9PUiksCi0gICAgICAgICAgICAoLTEuMTIzNDU2Nzg5OSwgLTExMjM0NTY3ODksIENFSUxJTkcpLAotCi0gICAgICAgICAgICAjIGNsb3NlIHRvIDEgc2Vjb25kCi0gICAgICAgICAgICAoIDAuOTk5OTk5OTk5OSwgICA5OTk5OTk5OTksIEZMT09SKSwKLSAgICAgICAgICAgICggMC45OTk5OTk5OTk5LCAgMTAwMDAwMDAwMCwgQ0VJTElORyksCi0gICAgICAgICAgICAoLTAuOTk5OTk5OTk5OSwgLTEwMDAwMDAwMDAsIEZMT09SKSwKLSAgICAgICAgICAgICgtMC45OTk5OTk5OTk5LCAgLTk5OTk5OTk5OSwgQ0VJTElORyksCi0gICAgICAgICk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvYmo9b2JqLCByb3VuZD1ybmQsIHRpbWVzdGFtcD10cyk6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVRpbWVfRnJvbVNlY29uZHNPYmplY3Qob2JqLCBybmQpLCB0cykKKyAgICAgICAgc2VsZi5jaGVja19mbG9hdF9yb3VuZGluZygKKyAgICAgICAgICAgIFB5VGltZV9Gcm9tU2Vjb25kc09iamVjdCwKKyAgICAgICAgICAgIGxhbWJkYSBuczogc2VsZi5kZWNpbWFsX3JvdW5kKG5zICogU0VDX1RPX05TKSkKIAogICAgIGRlZiB0ZXN0X0FzU2Vjb25kc0RvdWJsZShzZWxmKToKICAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IFB5VGltZV9Bc1NlY29uZHNEb3VibGUKIAotICAgICAgICBmb3IgbmFub3NlY29uZHMsIHNlY29uZHMgaW4gKAotICAgICAgICAgICAgIyBuZWFyIDEgbmFub3NlY29uZAotICAgICAgICAgICAgKCAwLCAgMC4wKSwKLSAgICAgICAgICAgICggMSwgIDFlLTkpLAotICAgICAgICAgICAgKC0xLCAtMWUtOSksCisgICAgICAgIGRlZiBmbG9hdF9jb252ZXJ0ZXIobnMpOgorICAgICAgICAgICAgaWYgYWJzKG5zKSAlIFNFQ19UT19OUyA9PSAwOgorICAgICAgICAgICAgICAgIHJldHVybiBmbG9hdChucyAvLyBTRUNfVE9fTlMpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBmbG9hdChucykgLyBTRUNfVE9fTlMKIAotICAgICAgICAgICAgIyBuZWFyIDEgc2Vjb25kCi0gICAgICAgICAgICAoU0VDX1RPX05TICsgMSwgMS4wICsgMWUtOSksCi0gICAgICAgICAgICAoU0VDX1RPX05TLCAgICAgMS4wKSwKLSAgICAgICAgICAgIChTRUNfVE9fTlMgLSAxLCAxLjAgLSAxZS05KSwKKyAgICAgICAgc2VsZi5jaGVja19pbnRfcm91bmRpbmcobGFtYmRhIG5zLCBybmQ6IFB5VGltZV9Bc1NlY29uZHNEb3VibGUobnMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdF9jb252ZXJ0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5TX1RPX1NFQykKIAotICAgICAgICAgICAgIyBhIGZldyBzZWNvbmRzCi0gICAgICAgICAgICAoMTIzICogU0VDX1RPX05TLCAxMjMuMCksCi0gICAgICAgICAgICAoLTU2NyAqIFNFQ19UT19OUywgLTU2Ny4wKSwKKyAgICBkZWYgY3JlYXRlX2RlY2ltYWxfY29udmVydGVyKHNlbGYsIGRlbm9taW5hdG9yKToKKyAgICAgICAgZGVub20gPSBkZWNpbWFsLkRlY2ltYWwoZGVub21pbmF0b3IpCiAKLSAgICAgICAgICAgICMgbmFub3NlY29uZCBhcmUga2VwdCBmb3IgdmFsdWUgPD0gMl4yMyBzZWNvbmRzCi0gICAgICAgICAgICAoNDE5NDMwMzk5OTk5OTk5OSwgMioqMjIgLSAxZS05KSwKLSAgICAgICAgICAgICg0MTk0MzA0MDAwMDAwMDAwLCAyKioyMiksCi0gICAgICAgICAgICAoNDE5NDMwNDAwMDAwMDAwMSwgMioqMjIgKyAxZS05KSwKKyAgICAgICAgZGVmIGNvbnZlcnRlcih2YWx1ZSk6CisgICAgICAgICAgICBkID0gZGVjaW1hbC5EZWNpbWFsKHZhbHVlKSAvIGRlbm9tCisgICAgICAgICAgICByZXR1cm4gc2VsZi5kZWNpbWFsX3JvdW5kKGQpCiAKLSAgICAgICAgICAgICMgc3RhcnQgbG9zaW5nIHByZWNpc2lvbiBmb3IgdmFsdWUgPiAyXjIzIHNlY29uZHMKLSAgICAgICAgICAgICg4Mzg4NjA4MDAwMDAwMDAyLCAyKioyMyArIDFlLTkpLAorICAgICAgICByZXR1cm4gY29udmVydGVyCiAKLSAgICAgICAgICAgICMgbmFub3NlY29uZHMgYXJlIGxvc3QgZm9yIHZhbHVlID4gMl4yMyBzZWNvbmRzCi0gICAgICAgICAgICAoMTY3NzcyMTU5OTk5OTk5OTgsIDIqKjI0IC0gMWUtOSksCi0gICAgICAgICAgICAoMTY3NzcyMTU5OTk5OTk5OTksIDIqKjI0IC0gMWUtOSksCi0gICAgICAgICAgICAoMTY3NzcyMTYwMDAwMDAwMDAsIDIqKjI0ICAgICAgICksCi0gICAgICAgICAgICAoMTY3NzcyMTYwMDAwMDAwMDEsIDIqKjI0ICAgICAgICksCi0gICAgICAgICAgICAoMTY3NzcyMTYwMDAwMDAwMDIsIDIqKjI0ICsgMmUtOSksCi0KLSAgICAgICAgICAgICgzMzU1NDQzMjAwMDAwMDAwMCwgMioqMjUgICAgICAgKSwKLSAgICAgICAgICAgICgzMzU1NDQzMjAwMDAwMDAwMiwgMioqMjUgICAgICAgKSwKLSAgICAgICAgICAgICgzMzU1NDQzMjAwMDAwMDAwNCwgMioqMjUgKyA0ZS05KSwKLQotICAgICAgICAgICAgIyBjbG9zZSB0byAyXjYzIG5hbm9zZWNvbmRzIChfUHlUaW1lX3QgbGltaXQpCi0gICAgICAgICAgICAoOTIyMzM3MjAzNiAqIFNFQ19UT19OUywgOTIyMzM3MjAzNi4wKSwKLSAgICAgICAgICAgICgtOTIyMzM3MjAzNiAqIFNFQ19UT19OUywgLTkyMjMzNzIwMzYuMCksCi0gICAgICAgICk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuYW5vc2Vjb25kcz1uYW5vc2Vjb25kcywgc2Vjb25kcz1zZWNvbmRzKToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VGltZV9Bc1NlY29uZHNEb3VibGUobmFub3NlY29uZHMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kcykKLQotICAgIGRlZiB0ZXN0X3RpbWV2YWwoc2VsZik6CisgICAgZGVmIHRlc3RfQXNUaW1ldmFsKHNlbGYpOgogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgUHlUaW1lX0FzVGltZXZhbAotICAgICAgICBmb3Igcm5kIGluIEFMTF9ST1VORElOR19NRVRIT0RTOgotICAgICAgICAgICAgZm9yIG5zLCB0diBpbiAoCi0gICAgICAgICAgICAgICAgIyBtaWNyb3NlY29uZHMKLSAgICAgICAgICAgICAgICAoMCwgKDAsIDApKSwKLSAgICAgICAgICAgICAgICAoMTAwMCwgKDAsIDEpKSwKLSAgICAgICAgICAgICAgICAoLTEwMDAsICgtMSwgOTk5OTk5KSksCiAKLSAgICAgICAgICAgICAgICAjIHNlY29uZHMKLSAgICAgICAgICAgICAgICAoMiAqIFNFQ19UT19OUywgKDIsIDApKSwKLSAgICAgICAgICAgICAgICAoLTMgKiBTRUNfVE9fTlMsICgtMywgMCkpLAotICAgICAgICAgICAgKToKLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuYW5vc2Vjb25kcz1ucywgdGltZXZhbD10diwgcm91bmQ9cm5kKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVRpbWVfQXNUaW1ldmFsKG5zLCBybmQpLCB0dikKKyAgICAgICAgdXNfY29udmVydGVyID0gc2VsZi5jcmVhdGVfZGVjaW1hbF9jb252ZXJ0ZXIoVVNfVE9fTlMpCiAKLSAgICAgICAgRkxPT1IgPSBfUHlUaW1lLlJPVU5EX0ZMT09SCi0gICAgICAgIENFSUxJTkcgPSBfUHlUaW1lLlJPVU5EX0NFSUxJTkcKLSAgICAgICAgZm9yIG5zLCB0diwgcm5kIGluICgKLSAgICAgICAgICAgICMgbmFub3NlY29uZHMKLSAgICAgICAgICAgICgxLCAoMCwgMCksIEZMT09SKSwKLSAgICAgICAgICAgICgxLCAoMCwgMSksIENFSUxJTkcpLAotICAgICAgICAgICAgKC0xLCAoLTEsIDk5OTk5OSksIEZMT09SKSwKLSAgICAgICAgICAgICgtMSwgKDAsIDApLCBDRUlMSU5HKSwKKyAgICAgICAgZGVmIHRpbWV2YWxfY29udmVydGVyKG5zKToKKyAgICAgICAgICAgIHVzID0gdXNfY29udmVydGVyKG5zKQorICAgICAgICAgICAgcmV0dXJuIGRpdm1vZCh1cywgU0VDX1RPX1VTKQogCi0gICAgICAgICAgICAjIHNlY29uZHMgKyBuYW5vc2Vjb25kcwotICAgICAgICAgICAgKDEyMzQ1NjcwMDEsICgxLCAyMzQ1NjcpLCBGTE9PUiksCi0gICAgICAgICAgICAoMTIzNDU2NzAwMSwgKDEsIDIzNDU2OCksIENFSUxJTkcpLAotICAgICAgICAgICAgKC0xMjM0NTY3MDAxLCAoLTIsIDc2NTQzMiksIEZMT09SKSwKLSAgICAgICAgICAgICgtMTIzNDU2NzAwMSwgKC0yLCA3NjU0MzMpLCBDRUlMSU5HKSwKLSAgICAgICAgKToKLSAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG5hbm9zZWNvbmRzPW5zLCB0aW1ldmFsPXR2LCByb3VuZD1ybmQpOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlUaW1lX0FzVGltZXZhbChucywgcm5kKSwgdHYpCisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgICAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IExPTkdfTUlOLCBMT05HX01BWAorCisgICAgICAgICAgICAjIE9uIFdpbmRvd3MsIHRpbWV2YWwudHZfc2VjIHR5cGUgaXMgYSBDIGxvbmcKKyAgICAgICAgICAgIGRlZiBzZWNvbmRzX2ZpbHRlcihzZWNzKToKKyAgICAgICAgICAgICAgICByZXR1cm4gTE9OR19NSU4gPD0gc2VjcyA8PSBMT05HX01BWAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2Vjb25kc19maWx0ZXIgPSBzZWxmLnRpbWVfdF9maWx0ZXIKKworICAgICAgICBzZWxmLmNoZWNrX2ludF9yb3VuZGluZyhQeVRpbWVfQXNUaW1ldmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1ldmFsX2NvbnZlcnRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlNfVE9fU0VDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV9maWx0ZXI9c2Vjb25kc19maWx0ZXIpCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKF90ZXN0Y2FwaSwgJ1B5VGltZV9Bc1RpbWVzcGVjJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgX3Rlc3RjYXBpLlB5VGltZV9Bc1RpbWVzcGVjJykKLSAgICBkZWYgdGVzdF90aW1lc3BlYyhzZWxmKToKKyAgICBkZWYgdGVzdF9Bc1RpbWVzcGVjKHNlbGYpOgogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgUHlUaW1lX0FzVGltZXNwZWMKLSAgICAgICAgZm9yIG5zLCB0cyBpbiAoCi0gICAgICAgICAgICAjIG5hbm9zZWNvbmRzCi0gICAgICAgICAgICAoMCwgKDAsIDApKSwKLSAgICAgICAgICAgICgxLCAoMCwgMSkpLAotICAgICAgICAgICAgKC0xLCAoLTEsIDk5OTk5OTk5OSkpLAogCi0gICAgICAgICAgICAjIHNlY29uZHMKLSAgICAgICAgICAgICgyICogU0VDX1RPX05TLCAoMiwgMCkpLAotICAgICAgICAgICAgKC0zICogU0VDX1RPX05TLCAoLTMsIDApKSwKKyAgICAgICAgZGVmIHRpbWVzcGVjX2NvbnZlcnRlcihucyk6CisgICAgICAgICAgICByZXR1cm4gZGl2bW9kKG5zLCBTRUNfVE9fTlMpCiAKLSAgICAgICAgICAgICMgc2Vjb25kcyArIG5hbm9zZWNvbmRzCi0gICAgICAgICAgICAoMTIzNDU2Nzg5MCwgKDEsIDIzNDU2Nzg5MCkpLAotICAgICAgICAgICAgKC0xMjM0NTY3ODkwLCAoLTIsIDc2NTQzMjExMCkpLAotICAgICAgICApOgotICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QobmFub3NlY29uZHM9bnMsIHRpbWVzcGVjPXRzKToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VGltZV9Bc1RpbWVzcGVjKG5zKSwgdHMpCisgICAgICAgIHNlbGYuY2hlY2tfaW50X3JvdW5kaW5nKGxhbWJkYSBucywgcm5kOiBQeVRpbWVfQXNUaW1lc3BlYyhucyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzcGVjX2NvbnZlcnRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlNfVE9fU0VDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV9maWx0ZXI9c2VsZi50aW1lX3RfZmlsdGVyKQogCi0gICAgZGVmIHRlc3RfbWlsbGlzZWNvbmRzKHNlbGYpOgorICAgIGRlZiB0ZXN0X0FzTWlsbGlzZWNvbmRzKHNlbGYpOgogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgUHlUaW1lX0FzTWlsbGlzZWNvbmRzCi0gICAgICAgIGZvciBybmQgaW4gQUxMX1JPVU5ESU5HX01FVEhPRFM6Ci0gICAgICAgICAgICBmb3IgbnMsIHR2IGluICgKLSAgICAgICAgICAgICAgICAjIG1pbGxpc2Vjb25kcwotICAgICAgICAgICAgICAgICgxICogTVNfVE9fTlMsIDEpLAotICAgICAgICAgICAgICAgICgtMiAqIE1TX1RPX05TLCAtMiksCiAKLSAgICAgICAgICAgICAgICAjIHNlY29uZHMKLSAgICAgICAgICAgICAgICAoMiAqIFNFQ19UT19OUywgMjAwMCksCi0gICAgICAgICAgICAgICAgKC0zICogU0VDX1RPX05TLCAtMzAwMCksCi0gICAgICAgICAgICApOgotICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG5hbm9zZWNvbmRzPW5zLCB0aW1ldmFsPXR2LCByb3VuZD1ybmQpOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VGltZV9Bc01pbGxpc2Vjb25kcyhucywgcm5kKSwgdHYpCisgICAgICAgIHNlbGYuY2hlY2tfaW50X3JvdW5kaW5nKFB5VGltZV9Bc01pbGxpc2Vjb25kcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jcmVhdGVfZGVjaW1hbF9jb252ZXJ0ZXIoTVNfVE9fTlMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOU19UT19TRUMpCiAKLSAgICAgICAgRkxPT1IgPSBfUHlUaW1lLlJPVU5EX0ZMT09SCi0gICAgICAgIENFSUxJTkcgPSBfUHlUaW1lLlJPVU5EX0NFSUxJTkcKLSAgICAgICAgZm9yIG5zLCBtcywgcm5kIGluICgKLSAgICAgICAgICAgICMgbmFub3NlY29uZHMKLSAgICAgICAgICAgICgxLCAwLCBGTE9PUiksCi0gICAgICAgICAgICAoMSwgMSwgQ0VJTElORyksCi0gICAgICAgICAgICAoLTEsIC0xLCBGTE9PUiksCi0gICAgICAgICAgICAoLTEsIDAsIENFSUxJTkcpLAotCi0gICAgICAgICAgICAjIHNlY29uZHMgKyBuYW5vc2Vjb25kcwotICAgICAgICAgICAgKDEyMzQgKiBNU19UT19OUyArIDEsIDEyMzQsIEZMT09SKSwKLSAgICAgICAgICAgICgxMjM0ICogTVNfVE9fTlMgKyAxLCAxMjM1LCBDRUlMSU5HKSwKLSAgICAgICAgICAgICgtMTIzNCAqIE1TX1RPX05TIC0gMSwgLTEyMzUsIEZMT09SKSwKLSAgICAgICAgICAgICgtMTIzNCAqIE1TX1RPX05TIC0gMSwgLTEyMzQsIENFSUxJTkcpLAotICAgICAgICApOgotICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QobmFub3NlY29uZHM9bnMsIG1pbGxpc2Vjb25kcz1tcywgcm91bmQ9cm5kKToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VGltZV9Bc01pbGxpc2Vjb25kcyhucywgcm5kKSwgbXMpCi0KLSAgICBkZWYgdGVzdF9taWNyb3NlY29uZHMoc2VsZik6CisgICAgZGVmIHRlc3RfQXNNaWNyb3NlY29uZHMoc2VsZik6CiAgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBQeVRpbWVfQXNNaWNyb3NlY29uZHMKLSAgICAgICAgZm9yIHJuZCBpbiBBTExfUk9VTkRJTkdfTUVUSE9EUzoKLSAgICAgICAgICAgIGZvciBucywgdHYgaW4gKAotICAgICAgICAgICAgICAgICMgbWljcm9zZWNvbmRzCi0gICAgICAgICAgICAgICAgKDEgKiBVU19UT19OUywgMSksCi0gICAgICAgICAgICAgICAgKC0yICogVVNfVE9fTlMsIC0yKSwKIAotICAgICAgICAgICAgICAgICMgbWlsbGlzZWNvbmRzCi0gICAgICAgICAgICAgICAgKDEgKiBNU19UT19OUywgMTAwMCksCi0gICAgICAgICAgICAgICAgKC0yICogTVNfVE9fTlMsIC0yMDAwKSwKKyAgICAgICAgc2VsZi5jaGVja19pbnRfcm91bmRpbmcoUHlUaW1lX0FzTWljcm9zZWNvbmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNyZWF0ZV9kZWNpbWFsX2NvbnZlcnRlcihVU19UT19OUyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5TX1RPX1NFQykKIAotICAgICAgICAgICAgICAgICMgc2Vjb25kcwotICAgICAgICAgICAgICAgICgyICogU0VDX1RPX05TLCAyMDAwMDAwKSwKLSAgICAgICAgICAgICAgICAoLTMgKiBTRUNfVE9fTlMsIC0zMDAwMDAwKSwKLSAgICAgICAgICAgICk6Ci0gICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QobmFub3NlY29uZHM9bnMsIHRpbWV2YWw9dHYsIHJvdW5kPXJuZCk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlUaW1lX0FzTWljcm9zZWNvbmRzKG5zLCBybmQpLCB0dikKIAotICAgICAgICBGTE9PUiA9IF9QeVRpbWUuUk9VTkRfRkxPT1IKLSAgICAgICAgQ0VJTElORyA9IF9QeVRpbWUuUk9VTkRfQ0VJTElORwotICAgICAgICBmb3IgbnMsIG1zLCBybmQgaW4gKAotICAgICAgICAgICAgIyBuYW5vc2Vjb25kcwotICAgICAgICAgICAgKDEsIDAsIEZMT09SKSwKLSAgICAgICAgICAgICgxLCAxLCBDRUlMSU5HKSwKLSAgICAgICAgICAgICgtMSwgLTEsIEZMT09SKSwKLSAgICAgICAgICAgICgtMSwgMCwgQ0VJTElORyksCitjbGFzcyBUZXN0T2xkUHlUaW1lKENQeVRpbWVUZXN0Q2FzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIgorICAgIFRlc3QgdGhlIG9sZCBDIF9QeVRpbWVfdCBBUEk6IF9QeVRpbWVfT2JqZWN0VG9YWFgoKSBmdW5jdGlvbnMuCisgICAgIiIiCiAKLSAgICAgICAgICAgICMgc2Vjb25kcyArIG5hbm9zZWNvbmRzCi0gICAgICAgICAgICAoMTIzNCAqIFVTX1RPX05TICsgMSwgMTIzNCwgRkxPT1IpLAotICAgICAgICAgICAgKDEyMzQgKiBVU19UT19OUyArIDEsIDEyMzUsIENFSUxJTkcpLAotICAgICAgICAgICAgKC0xMjM0ICogVVNfVE9fTlMgLSAxLCAtMTIzNSwgRkxPT1IpLAotICAgICAgICAgICAgKC0xMjM0ICogVVNfVE9fTlMgLSAxLCAtMTIzNCwgQ0VJTElORyksCi0gICAgICAgICk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuYW5vc2Vjb25kcz1ucywgbWlsbGlzZWNvbmRzPW1zLCByb3VuZD1ybmQpOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlUaW1lX0FzTWljcm9zZWNvbmRzKG5zLCBybmQpLCBtcykKKyAgICAjIHRpbWVfdCBpcyBhIDMyLWJpdCBvciA2NC1iaXQgc2lnbmVkIGludGVnZXIKKyAgICBPVkVSRkxPV19TRUNPTkRTID0gMiAqKiA2NAorCisgICAgZGVmIHRlc3Rfb2JqZWN0X3RvX3RpbWVfdChzZWxmKToKKyAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IHB5dGltZV9vYmplY3RfdG9fdGltZV90CisKKyAgICAgICAgc2VsZi5jaGVja19pbnRfcm91bmRpbmcocHl0aW1lX29iamVjdF90b190aW1lX3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBzZWNzOiBzZWNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV9maWx0ZXI9c2VsZi50aW1lX3RfZmlsdGVyKQorCisgICAgICAgIHNlbGYuY2hlY2tfZmxvYXRfcm91bmRpbmcocHl0aW1lX29iamVjdF90b190aW1lX3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kZWNpbWFsX3JvdW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX2ZpbHRlcj1zZWxmLnRpbWVfdF9maWx0ZXIpCisKKyAgICBkZWYgY3JlYXRlX2NvbnZlcnRlcihzZWxmLCBzZWNfdG9fdW5pdCk6CisgICAgICAgIGRlZiBjb252ZXJ0ZXIoc2Vjcyk6CisgICAgICAgICAgICBmbG9hdHBhcnQsIGludHBhcnQgPSBtYXRoLm1vZGYoc2VjcykKKyAgICAgICAgICAgIGludHBhcnQgPSBpbnQoaW50cGFydCkKKyAgICAgICAgICAgIGZsb2F0cGFydCAqPSBzZWNfdG9fdW5pdAorICAgICAgICAgICAgZmxvYXRwYXJ0ID0gc2VsZi5kZWNpbWFsX3JvdW5kKGZsb2F0cGFydCkKKyAgICAgICAgICAgIGlmIGZsb2F0cGFydCA8IDA6CisgICAgICAgICAgICAgICAgZmxvYXRwYXJ0ICs9IHNlY190b191bml0CisgICAgICAgICAgICAgICAgaW50cGFydCAtPSAxCisgICAgICAgICAgICBlbGlmIGZsb2F0cGFydCA+PSBzZWNfdG9fdW5pdDoKKyAgICAgICAgICAgICAgICBmbG9hdHBhcnQgLT0gc2VjX3RvX3VuaXQKKyAgICAgICAgICAgICAgICBpbnRwYXJ0ICs9IDEKKyAgICAgICAgICAgIHJldHVybiAoaW50cGFydCwgZmxvYXRwYXJ0KQorICAgICAgICByZXR1cm4gY29udmVydGVyCisKKyAgICBkZWYgdGVzdF9vYmplY3RfdG9fdGltZXZhbChzZWxmKToKKyAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IHB5dGltZV9vYmplY3RfdG9fdGltZXZhbAorCisgICAgICAgIHNlbGYuY2hlY2tfaW50X3JvdW5kaW5nKHB5dGltZV9vYmplY3RfdG9fdGltZXZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIHNlY3M6IChzZWNzLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfZmlsdGVyPXNlbGYudGltZV90X2ZpbHRlcikKKworICAgICAgICBzZWxmLmNoZWNrX2Zsb2F0X3JvdW5kaW5nKHB5dGltZV9vYmplY3RfdG9fdGltZXZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNyZWF0ZV9jb252ZXJ0ZXIoU0VDX1RPX1VTKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV9maWx0ZXI9c2VsZi50aW1lX3RfZmlsdGVyKQorCisgICAgZGVmIHRlc3Rfb2JqZWN0X3RvX3RpbWVzcGVjKHNlbGYpOgorICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgcHl0aW1lX29iamVjdF90b190aW1lc3BlYworCisgICAgICAgIHNlbGYuY2hlY2tfaW50X3JvdW5kaW5nKHB5dGltZV9vYmplY3RfdG9fdGltZXNwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBzZWNzOiAoc2VjcywgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX2ZpbHRlcj1zZWxmLnRpbWVfdF9maWx0ZXIpCisKKyAgICAgICAgc2VsZi5jaGVja19mbG9hdF9yb3VuZGluZyhweXRpbWVfb2JqZWN0X3RvX3RpbWVzcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY3JlYXRlX2NvbnZlcnRlcihTRUNfVE9fTlMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX2ZpbHRlcj1zZWxmLnRpbWVfdF9maWx0ZXIpCiAKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGltZWl0LnB5IGIvTGliL3Rlc3QvdGVzdF90aW1laXQucHkKaW5kZXggMmRiM2MxYi4uMWE5NWUyOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90aW1laXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90aW1laXQucHkKQEAgLTM1NCw2ICszNTQsMjggQEAKICAgICAgICAgICAgIHMgPSBzZWxmLnJ1bl9tYWluKHN3aXRjaGVzPVsnLW4xJywgJzEvMCddKQogICAgICAgICBzZWxmLmFzc2VydF9leGNfc3RyaW5nKGVycm9yX3N0cmluZ2lvLmdldHZhbHVlKCksICdaZXJvRGl2aXNpb25FcnJvcicpCiAKKyAgICBkZWYgYXV0b3JhbmdlKHNlbGYsIGNhbGxiYWNrPU5vbmUpOgorICAgICAgICB0aW1lciA9IEZha2VUaW1lcihzZWNvbmRzX3Blcl9pbmNyZW1lbnQ9MC4wMDEpCisgICAgICAgIHQgPSB0aW1laXQuVGltZXIoc3RtdD1zZWxmLmZha2Vfc3RtdCwgc2V0dXA9c2VsZi5mYWtlX3NldHVwLCB0aW1lcj10aW1lcikKKyAgICAgICAgcmV0dXJuIHQuYXV0b3JhbmdlKGNhbGxiYWNrKQorCisgICAgZGVmIHRlc3RfYXV0b3JhbmdlKHNlbGYpOgorICAgICAgICBudW1fbG9vcHMsIHRpbWVfdGFrZW4gPSBzZWxmLmF1dG9yYW5nZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnVtX2xvb3BzLCAxMDAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRpbWVfdGFrZW4sIDEuMCkKKworICAgIGRlZiB0ZXN0X2F1dG9yYW5nZV93aXRoX2NhbGxiYWNrKHNlbGYpOgorICAgICAgICBkZWYgY2FsbGJhY2soYSwgYik6CisgICAgICAgICAgICBwcmludCgie30gezouM2Z9Ii5mb3JtYXQoYSwgYikpCisgICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgczoKKyAgICAgICAgICAgIG51bV9sb29wcywgdGltZV90YWtlbiA9IHNlbGYuYXV0b3JhbmdlKGNhbGxiYWNrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG51bV9sb29wcywgMTAwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aW1lX3Rha2VuLCAxLjApCisgICAgICAgIGV4cGVjdGVkID0gKCcxMCAwLjAxMFxuJworICAgICAgICAgICAgICAgICAgICAnMTAwIDAuMTAwXG4nCisgICAgICAgICAgICAgICAgICAgICcxMDAwIDEuMDAwXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0dmFsdWUoKSwgZXhwZWN0ZWQpCisKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdG9rZW5pemUucHkgYi9MaWIvdGVzdC90ZXN0X3Rva2VuaXplLnB5CmluZGV4IDNiMTdjYTYuLjVhODFhNWYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdG9rZW5pemUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90b2tlbml6ZS5weQpAQCAtNCw2ICs0LDggQEAKICAgICAgICAgICAgICAgICAgICAgIG9wZW4gYXMgdG9rZW5pemVfb3BlbiwgVW50b2tlbml6ZXIpCiBmcm9tIGlvIGltcG9ydCBCeXRlc0lPCiBmcm9tIHVuaXR0ZXN0IGltcG9ydCBUZXN0Q2FzZSwgbW9jaworZnJvbSB0ZXN0LnRlc3RfZ3JhbW1hciBpbXBvcnQgKFZBTElEX1VOREVSU0NPUkVfTElURVJBTFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5WQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTKQogaW1wb3J0IG9zCiBpbXBvcnQgdG9rZW4KIApAQCAtMjQsOCArMjYsNyBAQAogICAgICAgICAgICAgaWYgdHlwZSA9PSBFTkRNQVJLRVI6CiAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgIHR5cGUgPSB0b2tfbmFtZVt0eXBlXQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiICAgICUodHlwZSktMTAuMTBzICUodG9rZW4pLTEzLjEzciAlKHN0YXJ0KXMgJShlbmQpcyIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbHMoKSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZiIgICAge3R5cGU6MTB9IHt0b2tlbiFyOjEzfSB7c3RhcnR9IHtlbmR9IikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgWyIgICAgRU5DT0RJTkcgICAndXRmLTgnICAgICAgICgwLCAwKSAoMCwgMCkiXSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQucnN0cmlwKCkuc3BsaXRsaW5lcygpKQpAQCAtMTMyLDE4ICsxMzMsMTggQEAKICAgICAgICAgc2VsZi5jaGVja190b2tlbml6ZSgieCA9IDB4ZmZmZmZmZmZmZmYiLCAiIiJcCiAgICAgTkFNRSAgICAgICAneCcgICAgICAgICAgICgxLCAwKSAoMSwgMSkKICAgICBPUCAgICAgICAgICc9JyAgICAgICAgICAgKDEsIDIpICgxLCAzKQotICAgIE5VTUJFUiAgICAgJzB4ZmZmZmZmZmZmZiAoMSwgNCkgKDEsIDE3KQorICAgIE5VTUJFUiAgICAgJzB4ZmZmZmZmZmZmZmYnICgxLCA0KSAoMSwgMTcpCiAgICAgIiIiKQogICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKCJ4ID0gMTIzMTQxMjQyMTUxMjUxNjE2MTEwIiwgIiIiXAogICAgIE5BTUUgICAgICAgJ3gnICAgICAgICAgICAoMSwgMCkgKDEsIDEpCiAgICAgT1AgICAgICAgICAnPScgICAgICAgICAgICgxLCAyKSAoMSwgMykKLSAgICBOVU1CRVIgICAgICcxMjMxNDEyNDIxNTEgKDEsIDQpICgxLCAyNSkKKyAgICBOVU1CRVIgICAgICcxMjMxNDEyNDIxNTEyNTE2MTYxMTAnICgxLCA0KSAoMSwgMjUpCiAgICAgIiIiKQogICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKCJ4ID0gLTE1OTIxNTkwMjE1MDEyNTkxIiwgIiIiXAogICAgIE5BTUUgICAgICAgJ3gnICAgICAgICAgICAoMSwgMCkgKDEsIDEpCiAgICAgT1AgICAgICAgICAnPScgICAgICAgICAgICgxLCAyKSAoMSwgMykKICAgICBPUCAgICAgICAgICctJyAgICAgICAgICAgKDEsIDQpICgxLCA1KQotICAgIE5VTUJFUiAgICAgJzE1OTIxNTkwMjE1MCAoMSwgNSkgKDEsIDIyKQorICAgIE5VTUJFUiAgICAgJzE1OTIxNTkwMjE1MDEyNTkxJyAoMSwgNSkgKDEsIDIyKQogICAgICIiIikKIAogICAgIGRlZiB0ZXN0X2Zsb2F0KHNlbGYpOgpAQCAtMTg2LDYgKzE4NywyMSBAQAogICAgIE5VTUJFUiAgICAgJzMuMTRlMTU5JyAgICAoMSwgNCkgKDEsIDEyKQogICAgICIiIikKIAorICAgIGRlZiB0ZXN0X3VuZGVyc2NvcmVfbGl0ZXJhbHMoc2VsZik6CisgICAgICAgIGRlZiBudW1iZXJfdG9rZW4ocyk6CisgICAgICAgICAgICBmID0gQnl0ZXNJTyhzLmVuY29kZSgndXRmLTgnKSkKKyAgICAgICAgICAgIGZvciB0b2t0eXBlLCB0b2tlbiwgc3RhcnQsIGVuZCwgbGluZSBpbiB0b2tlbml6ZShmLnJlYWRsaW5lKToKKyAgICAgICAgICAgICAgICBpZiB0b2t0eXBlID09IE5VTUJFUjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuCisgICAgICAgICAgICByZXR1cm4gJ2ludmFsaWQgdG9rZW4nCisgICAgICAgIGZvciBsaXQgaW4gVkFMSURfVU5ERVJTQ09SRV9MSVRFUkFMUzoKKyAgICAgICAgICAgIGlmICcoJyBpbiBsaXQ6CisgICAgICAgICAgICAgICAgIyB0aGlzIHdvbid0IHdvcmsgd2l0aCBjb21wb3VuZCBjb21wbGV4IGlucHV0cworICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG51bWJlcl90b2tlbihsaXQpLCBsaXQpCisgICAgICAgIGZvciBsaXQgaW4gSU5WQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTOgorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChudW1iZXJfdG9rZW4obGl0KSwgbGl0KQorCiAgICAgZGVmIHRlc3Rfc3RyaW5nKHNlbGYpOgogICAgICAgICAjIFN0cmluZyBsaXRlcmFscwogICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKCJ4ID0gJyc7IHkgPSBcIlwiIiwgIiIiXApAQCAtMzA3LDYgKzMyMyw1MCBAQAogICAgIE9QICAgICAgICAgJysnICAgICAgICAgICAoMSwgMjgpICgxLCAyOSkKICAgICBTVFJJTkcgICAgICdSQiJhYmMiJyAgICAgKDEsIDMwKSAoMSwgMzcpCiAgICAgIiIiKQorICAgICAgICAjIENoZWNrIDAsIDEsIGFuZCAyIGNoYXJhY3RlciBzdHJpbmcgcHJlZml4ZXMuCisgICAgICAgIHNlbGYuY2hlY2tfdG9rZW5pemUociciYVwKK2RlXAorZmciJywgIiIiXAorICAgIFNUUklORyAgICAgJyJhXFxcXFxcbmRlXFxcXFxcbmZnIlwnICgxLCAwKSAoMywgMykKKyAgICAiIiIpCisgICAgICAgIHNlbGYuY2hlY2tfdG9rZW5pemUocid1ImFcCitkZSInLCAiIiJcCisgICAgU1RSSU5HICAgICAndSJhXFxcXFxcbmRlIlwnICAoMSwgMCkgKDIsIDMpCisgICAgIiIiKQorICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKHIncmIiYVwKK2QiJywgIiIiXAorICAgIFNUUklORyAgICAgJ3JiImFcXFxcXFxuZCJcJyAgKDEsIDApICgyLCAyKQorICAgICIiIikKKyAgICAgICAgc2VsZi5jaGVja190b2tlbml6ZShyJyIiImFcCitiIiIiJywgIiIiXAorICAgIFNUUklORyAgICAgJ1wiXCIiYVxcXFxcXG5iXCJcIiInICgxLCAwKSAoMiwgNCkKKyAgICAiIiIpCisgICAgICAgIHNlbGYuY2hlY2tfdG9rZW5pemUocid1IiIiYVwKK2IiIiInLCAiIiJcCisgICAgU1RSSU5HICAgICAndVwiXCIiYVxcXFxcXG5iXCJcIiInICgxLCAwKSAoMiwgNCkKKyAgICAiIiIpCisgICAgICAgIHNlbGYuY2hlY2tfdG9rZW5pemUocidyYiIiImFcCitiXAorYyIiIicsICIiIlwKKyAgICBTVFJJTkcgICAgICdyYiJcIiJhXFxcXFxcbmJcXFxcXFxuYyJcIiInICgxLCAwKSAoMywgNCkKKyAgICAiIiIpCisgICAgICAgIHNlbGYuY2hlY2tfdG9rZW5pemUoJ2YiYWJjIicsICIiIlwKKyAgICBTVFJJTkcgICAgICdmImFiYyInICAgICAgKDEsIDApICgxLCA2KQorICAgICIiIikKKyAgICAgICAgc2VsZi5jaGVja190b2tlbml6ZSgnZlIiYXtifWMiJywgIiIiXAorICAgIFNUUklORyAgICAgJ2ZSImF7Yn1jIicgICAoMSwgMCkgKDEsIDkpCisgICAgIiIiKQorICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKCdmIiIiYWJjIiIiJywgIiIiXAorICAgIFNUUklORyAgICAgJ2ZcIlwiXCJhYmNcIlwiXCInICAoMSwgMCkgKDEsIDEwKQorICAgICIiIikKKyAgICAgICAgc2VsZi5jaGVja190b2tlbml6ZShyJ2YiYWJjXAorZGVmIicsICIiIlwKKyAgICBTVFJJTkcgICAgICdmImFiY1xcXFxcXG5kZWYiJyAoMSwgMCkgKDIsIDQpCisgICAgIiIiKQorICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKHInUmYiYWJjXAorZGVmIicsICIiIlwKKyAgICBTVFJJTkcgICAgICdSZiJhYmNcXFxcXFxuZGVmIicgKDEsIDApICgyLCA0KQorICAgICIiIikKIAogICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKCJkZWYgZDIyKGEsIGIsIGM9MiwgZD0yLCAqayk6IHBhc3MiLCAiIiJcCkBAIC01MDUsNyArNTY1LDcgQEAKICAgICAgICAgIyBNZXRob2RzCiAgICAgICAgIHNlbGYuY2hlY2tfdG9rZW5pemUoIkBzdGF0aWNtZXRob2RcbmRlZiBmb28oeCx5KTogcGFzcyIsICIiIlwKICAgICBPUCAgICAgICAgICdAJyAgICAgICAgICAgKDEsIDApICgxLCAxKQotICAgIE5BTUUgICAgICAgJ3N0YXRpY21ldGhvZCAoMSwgMSkgKDEsIDEzKQorICAgIE5BTUUgICAgICAgJ3N0YXRpY21ldGhvZCcgKDEsIDEpICgxLCAxMykKICAgICBORVdMSU5FICAgICdcXG4nICAgICAgICAgICgxLCAxMykgKDEsIDE0KQogICAgIE5BTUUgICAgICAgJ2RlZicgICAgICAgICAoMiwgMCkgKDIsIDMpCiAgICAgTkFNRSAgICAgICAnZm9vJyAgICAgICAgICgyLCA0KSAoMiwgNykKQEAgLTE0ODgsMTAgKzE1NDgsMTAgQEAKIAogICAgICAgICAjIFRva2VuaXplIGlzIGJyb2tlbiBvbiB0ZXN0X3BlcDMxMzEucHkgYmVjYXVzZSByZWd1bGFyIGV4cHJlc3Npb25zIGFyZQogICAgICAgICAjIGJyb2tlbiBvbiB0aGUgb2JzY3VyZSB1bmljb2RlIGlkZW50aWZpZXJzIGluIGl0LiAqc2lnaCoKLSAgICAgICAgIyBXaXRoIHJvdW5kdHJpcCBleHRlbmRlZCB0byB0ZXN0IHRoZSA1LXR1cGxlIG1vZGUgb2YgIHVudG9rZW5pemUsCisgICAgICAgICMgV2l0aCByb3VuZHRyaXAgZXh0ZW5kZWQgdG8gdGVzdCB0aGUgNS10dXBsZSBtb2RlIG9mIHVudG9rZW5pemUsCiAgICAgICAgICMgNyBtb3JlIHRlc3RmaWxlcyBmYWlsLiAgUmVtb3ZlIHRoZW0gYWxzbyB1bnRpbCB0aGUgZmFpbHVyZSBpcyBkaWFnbm9zZWQuCiAKLSAgICAgICAgdGVzdGZpbGVzLnJlbW92ZShvcy5wYXRoLmpvaW4odGVtcGRpciwgInRlc3RfcGVwMzEzMS5weSIpKQorICAgICAgICB0ZXN0ZmlsZXMucmVtb3ZlKG9zLnBhdGguam9pbih0ZW1wZGlyLCAidGVzdF91bmljb2RlX2lkZW50aWZpZXJzLnB5IikpCiAgICAgICAgIGZvciBmIGluICgnYnVmZmVyJywgJ2J1aWx0aW4nLCAnZmlsZWlvJywgJ2luc3BlY3QnLCAnb3MnLCAncGxhdGZvcm0nLCAnc3lzJyk6CiAgICAgICAgICAgICB0ZXN0ZmlsZXMucmVtb3ZlKG9zLnBhdGguam9pbih0ZW1wZGlyLCAidGVzdF8lcy5weSIpICUgZikKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90b29scy9fX2luaXRfXy5weSBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvX19pbml0X18ucHkKaW5kZXggMDRjODcyNi4uNGQwZmNhMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90b29scy9fX2luaXRfXy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Rvb2xzL19faW5pdF9fLnB5CkBAIC0zLDcgKzMsNiBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgaW1wb3J0bGliCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gZm5tYXRjaCBpbXBvcnQgZm5tYXRjaAogCiBiYXNlcGF0aCA9IG9zLnBhdGguZGlybmFtZSggICAgICAgICAgICAgICAgICMgPHNyYy9pbnN0YWxsIGRpcj4KICAgICAgICAgICAgICAgICBvcy5wYXRoLmRpcm5hbWUoICAgICAgICAgICAgICAgICMgTGliCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfZ3Byb2YyaHRtbC5weSBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9ncHJvZjJodG1sLnB5CmluZGV4IDBjMjk0ZWMuLjk0ODllZDkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9ncHJvZjJodG1sLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9ncHJvZjJodG1sLnB5CkBAIC0yLDEyICsyLDExIEBACiAKIGltcG9ydCBvcwogaW1wb3J0IHN5cwotaW1wb3J0IGltcG9ydGxpYgogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHVuaXR0ZXN0IGltcG9ydCBtb2NrCiBpbXBvcnQgdGVtcGZpbGUKIAotZnJvbSB0ZXN0LnRlc3RfdG9vbHMgaW1wb3J0IHNjcmlwdHNkaXIsIHNraXBfaWZfbWlzc2luZywgaW1wb3J0X3Rvb2wKK2Zyb20gdGVzdC50ZXN0X3Rvb2xzIGltcG9ydCBza2lwX2lmX21pc3NpbmcsIGltcG9ydF90b29sCiAKIHNraXBfaWZfbWlzc2luZygpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9tZDVzdW0ucHkgYi9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfbWQ1c3VtLnB5CmluZGV4IDEzMDUyOTUuLmZiNTY1YjcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9tZDVzdW0ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90b29scy90ZXN0X21kNXN1bS5weQpAQCAtMSwxMiArMSwxMSBAQAogIiIiVGVzdHMgZm9yIHRoZSBtZDVzdW0gc2NyaXB0IGluIHRoZSBUb29scyBkaXJlY3RvcnkuIiIiCiAKIGltcG9ydCBvcwotaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2ssIGFzc2VydF9weXRob25fZmFpbHVyZQogCi1mcm9tIHRlc3QudGVzdF90b29scyBpbXBvcnQgc2NyaXB0c2RpciwgaW1wb3J0X3Rvb2wsIHNraXBfaWZfbWlzc2luZworZnJvbSB0ZXN0LnRlc3RfdG9vbHMgaW1wb3J0IHNjcmlwdHNkaXIsIHNraXBfaWZfbWlzc2luZwogCiBza2lwX2lmX21pc3NpbmcoKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfcGRlcHMucHkgYi9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfcGRlcHMucHkKaW5kZXggMDkxZmE2YS4uMjdjYmZlMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90b29scy90ZXN0X3BkZXBzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9wZGVwcy5weQpAQCAtMSwxMiArMSwxMCBAQAogIiIiVGVzdHMgZm9yIHRoZSBwZGVwcyBzY3JpcHQgaW4gdGhlIFRvb2xzIGRpcmVjdG9yeS4iIiIKIAogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB0ZW1wZmlsZQotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKLWZyb20gdGVzdC50ZXN0X3Rvb2xzIGltcG9ydCBzY3JpcHRzZGlyLCBza2lwX2lmX21pc3NpbmcsIGltcG9ydF90b29sCitmcm9tIHRlc3QudGVzdF90b29scyBpbXBvcnQgc2tpcF9pZl9taXNzaW5nLCBpbXBvcnRfdG9vbAogCiBza2lwX2lmX21pc3NpbmcoKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfdW5wYXJzZS5weSBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF91bnBhcnNlLnB5CmluZGV4IDczNGJiYzIuLjY1ZGVlMWIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF91bnBhcnNlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF91bnBhcnNlLnB5CkBAIC0xMzQsNiArMTM0LDExIEBACiBjbGFzcyBVbnBhcnNlVGVzdENhc2UoQVNUVGVzdENhc2UpOgogICAgICMgVGVzdHMgZm9yIHNwZWNpZmljIGJ1Z3MgZm91bmQgaW4gZWFybGllciB2ZXJzaW9ucyBvZiB1bnBhcnNlCiAKKyAgICBkZWYgdGVzdF9mc3RyaW5ncyhzZWxmKToKKyAgICAgICAgIyBTZWUgaXNzdWUgMjUxODAKKyAgICAgICAgc2VsZi5jaGVja19yb3VuZHRyaXAociIiImYne2YiezB9IiozfSciIiIpCisgICAgICAgIHNlbGYuY2hlY2tfcm91bmR0cmlwKHIiIiJmJ3tmInt5fSIqM30nIiIiKQorCiAgICAgZGVmIHRlc3RfZGVsX3N0YXRlbWVudChzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19yb3VuZHRyaXAoImRlbCB4LCB5LCB6IikKIApAQCAtMjc5LDggKzI4NCwxOCBAQAogICAgICAgICBmb3IgZmlsZW5hbWUgaW4gbmFtZXM6CiAgICAgICAgICAgICBpZiB0ZXN0LnN1cHBvcnQudmVyYm9zZToKICAgICAgICAgICAgICAgICBwcmludCgnVGVzdGluZyAlcycgJSBmaWxlbmFtZSkKLSAgICAgICAgICAgIHNvdXJjZSA9IHJlYWRfcHlmaWxlKGZpbGVuYW1lKQotICAgICAgICAgICAgc2VsZi5jaGVja19yb3VuZHRyaXAoc291cmNlKQorCisgICAgICAgICAgICAjIFNvbWUgZi1zdHJpbmdzIGFyZSBub3QgY29ycmVjdGx5IHJvdW5kLXRyaXBwZWQgYnkKKyAgICAgICAgICAgICMgIFRvb2xzL3BhcnNlci91bnBhcnNlLnB5LiAgU2VlIGlzc3VlIDI4MDAyIGZvciBkZXRhaWxzLgorICAgICAgICAgICAgIyAgV2UgbmVlZCB0byBza2lwIGZpbGVzIHRoYXQgY29udGFpbiBzdWNoIGYtc3RyaW5ncy4KKyAgICAgICAgICAgIGlmIG9zLnBhdGguYmFzZW5hbWUoZmlsZW5hbWUpIGluICgndGVzdF9mc3RyaW5nLnB5JywgKToKKyAgICAgICAgICAgICAgICBpZiB0ZXN0LnN1cHBvcnQudmVyYm9zZToKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoZidTa2lwcGluZyB7ZmlsZW5hbWV9OiBzZWUgaXNzdWUgMjgwMDInKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGZpbGVuYW1lPWZpbGVuYW1lKToKKyAgICAgICAgICAgICAgICBzb3VyY2UgPSByZWFkX3B5ZmlsZShmaWxlbmFtZSkKKyAgICAgICAgICAgICAgICBzZWxmLmNoZWNrX3JvdW5kdHJpcChzb3VyY2UpCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdHJhY2UucHkgYi9MaWIvdGVzdC90ZXN0X3RyYWNlLnB5CmluZGV4IGY2NmEzYmMuLjFkODdhZWEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdHJhY2UucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90cmFjZS5weQpAQCAtMSwxMSArMSwxMSBAQAogaW1wb3J0IG9zCi1pbXBvcnQgaW8KIGltcG9ydCBzeXMKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIHJtdHJlZSwgdW5saW5rLCBjYXB0dXJlZF9zdGRvdXQKK2Zyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2ssIGFzc2VydF9weXRob25fZmFpbHVyZQogaW1wb3J0IHVuaXR0ZXN0CiAKIGltcG9ydCB0cmFjZQotZnJvbSB0cmFjZSBpbXBvcnQgQ292ZXJhZ2VSZXN1bHRzLCBUcmFjZQorZnJvbSB0cmFjZSBpbXBvcnQgVHJhY2UKIAogZnJvbSB0ZXN0LnRyYWNlZG1vZHVsZXMgaW1wb3J0IHRlc3Rtb2QKIApAQCAtMzY1LDUxICszNjUsMjcgQEAKICAgICAgICAgIyBNYXRjaGVkIGJlZm9yZS4KICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlnbm9yZS5uYW1lcyhqbignYmFyJywgJ2Jhei5weScpLCAnYmF6JykpCiAKK2NsYXNzIFRlc3RDb21tYW5kTGluZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKLWNsYXNzIFRlc3REZXByZWNhdGVkTWV0aG9kcyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfZmFpbHVyZXMoc2VsZik6CisgICAgICAgIF9lcnJvcnMgPSAoCisgICAgICAgICAgICAoYidmaWxlbmFtZSBpcyBtaXNzaW5nOiByZXF1aXJlZCB3aXRoIHRoZSBtYWluIG9wdGlvbnMnLCAnLWwnLCAnLVQnKSwKKyAgICAgICAgICAgIChiJ2Nhbm5vdCBzcGVjaWZ5IGJvdGggLS1saXN0ZnVuY3MgYW5kICgtLXRyYWNlIG9yIC0tY291bnQpJywgJy1sYycpLAorICAgICAgICAgICAgKGInYXJndW1lbnQgLVIvLS1uby1yZXBvcnQ6IG5vdCBhbGxvd2VkIHdpdGggYXJndW1lbnQgLXIvLS1yZXBvcnQnLCAnLXJSJyksCisgICAgICAgICAgICAoYidtdXN0IHNwZWNpZnkgb25lIG9mIC0tdHJhY2UsIC0tY291bnQsIC0tcmVwb3J0LCAtLWxpc3RmdW5jcywgb3IgLS10cmFja2NhbGxzJywgJy1nJyksCisgICAgICAgICAgICAoYictci8tLXJlcG9ydCByZXF1aXJlcyAtZi8tLWZpbGUnLCAnLXInKSwKKyAgICAgICAgICAgIChiJy0tc3VtbWFyeSBjYW4gb25seSBiZSB1c2VkIHdpdGggLS1jb3VudCBvciAtLXJlcG9ydCcsICctc1QnKSwKKyAgICAgICAgICAgIChiJ3VucmVjb2duaXplZCBhcmd1bWVudHM6IC15JywgJy15JykpCisgICAgICAgIGZvciBtZXNzYWdlLCAqYXJncyBpbiBfZXJyb3JzOgorICAgICAgICAgICAgKl8sIHN0ZGVyciA9IGFzc2VydF9weXRob25fZmFpbHVyZSgnLW0nLCAndHJhY2UnLCAqYXJncykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4obWVzc2FnZSwgc3RkZXJyKQogCi0gICAgZGVmIHRlc3RfZGVwcmVjYXRlZF91c2FnZShzZWxmKToKLSAgICAgICAgc2lvID0gaW8uU3RyaW5nSU8oKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIHRyYWNlLnVzYWdlKHNpbykKLSAgICAgICAgc2VsZi5hc3NlcnRJbignVXNhZ2U6Jywgc2lvLmdldHZhbHVlKCkpCi0KLSAgICBkZWYgdGVzdF9kZXByZWNhdGVkX0lnbm9yZShzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICB0cmFjZS5JZ25vcmUoKQotCi0gICAgZGVmIHRlc3RfZGVwcmVjYXRlZF9tb2RuYW1lKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInNwYW0iLCB0cmFjZS5tb2RuYW1lKCJzcGFtIikpCi0KLSAgICBkZWYgdGVzdF9kZXByZWNhdGVkX2Z1bGxtb2RuYW1lKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInNwYW0iLCB0cmFjZS5mdWxsbW9kbmFtZSgic3BhbSIpKQotCi0gICAgZGVmIHRlc3RfZGVwcmVjYXRlZF9maW5kX2xpbmVzX2Zyb21fY29kZShzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICBkZWYgZm9vKCk6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgdHJhY2UuZmluZF9saW5lc19mcm9tX2NvZGUoZm9vLl9fY29kZV9fLCBbImVnZ3MiXSkKLQotICAgIGRlZiB0ZXN0X2RlcHJlY2F0ZWRfZmluZF9saW5lcyhzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICBkZWYgZm9vKCk6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgdHJhY2UuZmluZF9saW5lcyhmb28uX19jb2RlX18sIFsiZWdncyJdKQotCi0gICAgZGVmIHRlc3RfZGVwcmVjYXRlZF9maW5kX3N0cmluZ3Moc2VsZik6CisgICAgZGVmIHRlc3RfbGlzdGZ1bmNzX2ZsYWdfc3VjY2VzcyhzZWxmKToKICAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgJ3cnKSBhcyBmZDoKICAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cCh1bmxpbmssIFRFU1RGTikKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICB0cmFjZS5maW5kX3N0cmluZ3MoZmQubmFtZSkKLQotICAgIGRlZiB0ZXN0X2RlcHJlY2F0ZWRfZmluZF9leGVjdXRhYmxlX2xpbmVub3Moc2VsZik6Ci0gICAgICAgIHdpdGggb3BlbihURVNURk4sICd3JykgYXMgZmQ6Ci0gICAgICAgICAgICBzZWxmLmFkZENsZWFudXAodW5saW5rLCBURVNURk4pCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgdHJhY2UuZmluZF9leGVjdXRhYmxlX2xpbmVub3MoZmQubmFtZSkKLQorICAgICAgICAgICAgZmQud3JpdGUoImEgPSAxXG4iKQorICAgICAgICAgICAgc3RhdHVzLCBzdGRvdXQsIHN0ZGVyciA9IGFzc2VydF9weXRob25fb2soJy1tJywgJ3RyYWNlJywgJy1sJywgVEVTVEZOKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihiJ2Z1bmN0aW9ucyBjYWxsZWQ6Jywgc3Rkb3V0KQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90cmFjZWJhY2sucHkgYi9MaWIvdGVzdC90ZXN0X3RyYWNlYmFjay5weQppbmRleCA0OWNlZGRhLi43Mjc2YmM3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RyYWNlYmFjay5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RyYWNlYmFjay5weQpAQCAtMTI1LDEyICsxMjUsMTIgQEAKICAgICAgICAgZGVmIGRvX3Rlc3QoZmlyc3RsaW5lcywgbWVzc2FnZSwgY2hhcnNldCwgbGluZW5vKToKICAgICAgICAgICAgICMgUmFpc2UgdGhlIG1lc3NhZ2UgaW4gYSBzdWJwcm9jZXNzLCBhbmQgY2F0Y2ggdGhlIG91dHB1dAogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG91dHB1dCA9IG9wZW4oVEVTVEZOLCAidyIsIGVuY29kaW5nPWNoYXJzZXQpCi0gICAgICAgICAgICAgICAgb3V0cHV0LndyaXRlKCIiInswfWlmIDE6Ci0gICAgICAgICAgICAgICAgICAgIGltcG9ydCB0cmFjZWJhY2s7Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignezF9JykKLSAgICAgICAgICAgICAgICAgICAgIiIiLmZvcm1hdChmaXJzdGxpbmVzLCBtZXNzYWdlKSkKLSAgICAgICAgICAgICAgICBvdXRwdXQuY2xvc2UoKQorICAgICAgICAgICAgICAgIHdpdGggb3BlbihURVNURk4sICJ3IiwgZW5jb2Rpbmc9Y2hhcnNldCkgYXMgb3V0cHV0OgorICAgICAgICAgICAgICAgICAgICBvdXRwdXQud3JpdGUoIiIiezB9aWYgMToKKyAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydCB0cmFjZWJhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ3sxfScpCisgICAgICAgICAgICAgICAgICAgICAgICAiIiIuZm9ybWF0KGZpcnN0bGluZXMsIG1lc3NhZ2UpKQorCiAgICAgICAgICAgICAgICAgcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLCBURVNURk5dLAogICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCiAgICAgICAgICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwcm9jZXNzLmNvbW11bmljYXRlKCkKQEAgLTE3MSw4ICsxNzEsOCBAQAogICAgICAgICAgICAgICAgICAgICB0ZXh0LCBjaGFyc2V0LCA1KQogICAgICAgICAgICAgZG9fdGVzdCgiIFx0XGZcbiMgY29kaW5nOiB7MH1cbiIuZm9ybWF0KGNoYXJzZXQpLAogICAgICAgICAgICAgICAgICAgICB0ZXh0LCBjaGFyc2V0LCA1KQotICAgICAgICAjIElzc3VlICMxODk2MDogY29kaW5nIHNwZWMgc2hvdWxkIGhhcyBubyBlZmZlY3QKLSAgICAgICAgZG9fdGVzdCgiMFxuIyBjb2Rpbmc6IEdCS1xuIiwgImhceGU5IGhvIiwgJ3V0Zi04JywgNSkKKyAgICAgICAgIyBJc3N1ZSAjMTg5NjA6IGNvZGluZyBzcGVjIHNob3VsZCBoYXZlIG5vIGVmZmVjdAorICAgICAgICBkb190ZXN0KCJ4PTBcbiMgY29kaW5nOiBHQktcbiIsICJoXHhlOSBobyIsICd1dGYtOCcsIDUpCiAKICAgICBAc3VwcG9ydC5yZXF1aXJlc190eXBlX2NvbGxlY3RpbmcKICAgICBkZWYgdGVzdF9wcmludF90cmFjZWJhY2tfYXRfZXhpdChzZWxmKToKQEAgLTI5OSw2ICsyOTksMTM3IEBACiAgICAgICAgICAgICAnICAgIHRyYWNlYmFjay5wcmludF9zdGFjaygpJywKICAgICAgICAgXSkKIAorICAgICMgaXNzdWUgMjY4MjMgLSBTaHJpbmsgcmVjdXJzaXZlIHRyYWNlYmFja3MKKyAgICBkZWYgX2NoZWNrX3JlY3Vyc2l2ZV90cmFjZWJhY2tfZGlzcGxheShzZWxmLCByZW5kZXJfZXhjKToKKyAgICAgICAgIyBBbHdheXMgc2hvdyBmdWxsIGRpZmZzIHdoZW4gdGhpcyB0ZXN0IGZhaWxzCisgICAgICAgICMgTm90ZSB0aGF0IHJlYXJyYW5naW5nIHRoaW5ncyBtYXkgcmVxdWlyZSBhZGp1c3RpbmcKKyAgICAgICAgIyB0aGUgcmVsYXRpdmUgbGluZSBudW1iZXJzIGluIHRoZSBleHBlY3RlZCB0cmFjZWJhY2tzCisgICAgICAgIHNlbGYubWF4RGlmZiA9IE5vbmUKKworICAgICAgICAjIENoZWNrIGhpdHRpbmcgdGhlIHJlY3Vyc2lvbiBsaW1pdAorICAgICAgICBkZWYgZigpOgorICAgICAgICAgICAgZigpCisKKyAgICAgICAgd2l0aCBjYXB0dXJlZF9vdXRwdXQoInN0ZGVyciIpIGFzIHN0ZGVycl9mOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGYoKQorICAgICAgICAgICAgZXhjZXB0IFJlY3Vyc2lvbkVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgICAgICByZW5kZXJfZXhjKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJubyByZWN1cnNpb24gb2NjdXJyZWQiKQorCisgICAgICAgIGxpbmVub19mID0gZi5fX2NvZGVfXy5jb19maXJzdGxpbmVubworICAgICAgICByZXN1bHRfZiA9ICgKKyAgICAgICAgICAgICdUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4nCisgICAgICAgICAgICBmJyAgRmlsZSAie19fZmlsZV9ffSIsIGxpbmUge2xpbmVub19mKzV9LCBpbiBfY2hlY2tfcmVjdXJzaXZlX3RyYWNlYmFja19kaXNwbGF5XG4nCisgICAgICAgICAgICAnICAgIGYoKVxuJworICAgICAgICAgICAgZicgIEZpbGUgIntfX2ZpbGVfX30iLCBsaW5lIHtsaW5lbm9fZisxfSwgaW4gZlxuJworICAgICAgICAgICAgJyAgICBmKClcbicKKyAgICAgICAgICAgIGYnICBGaWxlICJ7X19maWxlX199IiwgbGluZSB7bGluZW5vX2YrMX0sIGluIGZcbicKKyAgICAgICAgICAgICcgICAgZigpXG4nCisgICAgICAgICAgICBmJyAgRmlsZSAie19fZmlsZV9ffSIsIGxpbmUge2xpbmVub19mKzF9LCBpbiBmXG4nCisgICAgICAgICAgICAnICAgIGYoKVxuJworICAgICAgICAgICAgIyBYWFg6IFRoZSBmb2xsb3dpbmcgbGluZSBjaGFuZ2VzIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSB0ZXN0cworICAgICAgICAgICAgIyBhcmUgcnVuIHRocm91Z2ggdGhlIGludGVyYWN0aXZlIGludGVycHJldGVyIG9yIHdpdGggLW0KKyAgICAgICAgICAgICMgSXQgYWxzbyB2YXJpZXMgZGVwZW5kaW5nIG9uIHRoZSBwbGF0Zm9ybSAoc3RhY2sgc2l6ZSkKKyAgICAgICAgICAgICMgRm9ydHVuYXRlbHksIHdlIGRvbid0IGNhcmUgYWJvdXQgZXhhY3RuZXNzIGhlcmUsIHNvIHdlIHVzZSByZWdleAorICAgICAgICAgICAgcicgIFxbUHJldmlvdXMgbGluZSByZXBlYXRlZCAoXGQrKSBtb3JlIHRpbWVzXF0nICdcbicKKyAgICAgICAgICAgICdSZWN1cnNpb25FcnJvcjogbWF4aW11bSByZWN1cnNpb24gZGVwdGggZXhjZWVkZWRcbicKKyAgICAgICAgKQorCisgICAgICAgIGV4cGVjdGVkID0gcmVzdWx0X2Yuc3BsaXRsaW5lcygpCisgICAgICAgIGFjdHVhbCA9IHN0ZGVycl9mLmdldHZhbHVlKCkuc3BsaXRsaW5lcygpCisKKyAgICAgICAgIyBDaGVjayB0aGUgb3V0cHV0IHRleHQgbWF0Y2hlcyBleHBlY3RhdGlvbnMKKyAgICAgICAgIyAybmQgbGFzdCBsaW5lIGNvbnRhaW5zIHRoZSByZXBldGl0aW9uIGNvdW50CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsWzotMl0sIGV4cGVjdGVkWzotMl0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoYWN0dWFsWy0yXSwgZXhwZWN0ZWRbLTJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbFstMV0sIGV4cGVjdGVkWy0xXSkKKworICAgICAgICAjIENoZWNrIHRoZSByZWN1cnNpb24gY291bnQgaXMgcm91Z2hseSBhcyBleHBlY3RlZAorICAgICAgICByZWNfbGltaXQgPSBzeXMuZ2V0cmVjdXJzaW9ubGltaXQoKQorICAgICAgICBzZWxmLmFzc2VydEluKGludChyZS5zZWFyY2gociJcZCsiLCBhY3R1YWxbLTJdKS5ncm91cCgpKSwgcmFuZ2UocmVjX2xpbWl0LTYwLCByZWNfbGltaXQpKQorCisgICAgICAgICMgQ2hlY2sgYSBrbm93biAobGltaXRlZCkgbnVtYmVyIG9mIHJlY3Vyc2l2ZSBpbnZvY2F0aW9ucworICAgICAgICBkZWYgZyhjb3VudD0xMCk6CisgICAgICAgICAgICBpZiBjb3VudDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZyhjb3VudC0xKQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgorCisgICAgICAgIHdpdGggY2FwdHVyZWRfb3V0cHV0KCJzdGRlcnIiKSBhcyBzdGRlcnJfZzoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBnKCkKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgICAgICByZW5kZXJfZXhjKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJubyB2YWx1ZSBlcnJvciB3YXMgcmFpc2VkIikKKworICAgICAgICBsaW5lbm9fZyA9IGcuX19jb2RlX18uY29fZmlyc3RsaW5lbm8KKyAgICAgICAgcmVzdWx0X2cgPSAoCisgICAgICAgICAgICBmJyAgRmlsZSAie19fZmlsZV9ffSIsIGxpbmUge2xpbmVub19nKzJ9LCBpbiBnXG4nCisgICAgICAgICAgICAnICAgIHJldHVybiBnKGNvdW50LTEpXG4nCisgICAgICAgICAgICBmJyAgRmlsZSAie19fZmlsZV9ffSIsIGxpbmUge2xpbmVub19nKzJ9LCBpbiBnXG4nCisgICAgICAgICAgICAnICAgIHJldHVybiBnKGNvdW50LTEpXG4nCisgICAgICAgICAgICBmJyAgRmlsZSAie19fZmlsZV9ffSIsIGxpbmUge2xpbmVub19nKzJ9LCBpbiBnXG4nCisgICAgICAgICAgICAnICAgIHJldHVybiBnKGNvdW50LTEpXG4nCisgICAgICAgICAgICAnICBbUHJldmlvdXMgbGluZSByZXBlYXRlZCA2IG1vcmUgdGltZXNdXG4nCisgICAgICAgICAgICBmJyAgRmlsZSAie19fZmlsZV9ffSIsIGxpbmUge2xpbmVub19nKzN9LCBpbiBnXG4nCisgICAgICAgICAgICAnICAgIHJhaXNlIFZhbHVlRXJyb3JcbicKKyAgICAgICAgICAgICdWYWx1ZUVycm9yXG4nCisgICAgICAgICkKKyAgICAgICAgdGJfbGluZSA9ICgKKyAgICAgICAgICAgICdUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4nCisgICAgICAgICAgICBmJyAgRmlsZSAie19fZmlsZV9ffSIsIGxpbmUge2xpbmVub19nKzd9LCBpbiBfY2hlY2tfcmVjdXJzaXZlX3RyYWNlYmFja19kaXNwbGF5XG4nCisgICAgICAgICAgICAnICAgIGcoKVxuJworICAgICAgICApCisgICAgICAgIGV4cGVjdGVkID0gKHRiX2xpbmUgKyByZXN1bHRfZykuc3BsaXRsaW5lcygpCisgICAgICAgIGFjdHVhbCA9IHN0ZGVycl9nLmdldHZhbHVlKCkuc3BsaXRsaW5lcygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsLCBleHBlY3RlZCkKKworICAgICAgICAjIENoZWNrIDIgZGlmZmVyZW50IHJlcGV0aXRpdmUgc2VjdGlvbnMKKyAgICAgICAgZGVmIGgoY291bnQ9MTApOgorICAgICAgICAgICAgaWYgY291bnQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGgoY291bnQtMSkKKyAgICAgICAgICAgIGcoKQorCisgICAgICAgIHdpdGggY2FwdHVyZWRfb3V0cHV0KCJzdGRlcnIiKSBhcyBzdGRlcnJfaDoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBoKCkKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgICAgICByZW5kZXJfZXhjKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJubyB2YWx1ZSBlcnJvciB3YXMgcmFpc2VkIikKKworICAgICAgICBsaW5lbm9faCA9IGguX19jb2RlX18uY29fZmlyc3RsaW5lbm8KKyAgICAgICAgcmVzdWx0X2ggPSAoCisgICAgICAgICAgICAnVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuJworICAgICAgICAgICAgZicgIEZpbGUgIntfX2ZpbGVfX30iLCBsaW5lIHtsaW5lbm9faCs3fSwgaW4gX2NoZWNrX3JlY3Vyc2l2ZV90cmFjZWJhY2tfZGlzcGxheVxuJworICAgICAgICAgICAgJyAgICBoKClcbicKKyAgICAgICAgICAgIGYnICBGaWxlICJ7X19maWxlX199IiwgbGluZSB7bGluZW5vX2grMn0sIGluIGhcbicKKyAgICAgICAgICAgICcgICAgcmV0dXJuIGgoY291bnQtMSlcbicKKyAgICAgICAgICAgIGYnICBGaWxlICJ7X19maWxlX199IiwgbGluZSB7bGluZW5vX2grMn0sIGluIGhcbicKKyAgICAgICAgICAgICcgICAgcmV0dXJuIGgoY291bnQtMSlcbicKKyAgICAgICAgICAgIGYnICBGaWxlICJ7X19maWxlX199IiwgbGluZSB7bGluZW5vX2grMn0sIGluIGhcbicKKyAgICAgICAgICAgICcgICAgcmV0dXJuIGgoY291bnQtMSlcbicKKyAgICAgICAgICAgICcgIFtQcmV2aW91cyBsaW5lIHJlcGVhdGVkIDYgbW9yZSB0aW1lc11cbicKKyAgICAgICAgICAgIGYnICBGaWxlICJ7X19maWxlX199IiwgbGluZSB7bGluZW5vX2grM30sIGluIGhcbicKKyAgICAgICAgICAgICcgICAgZygpXG4nCisgICAgICAgICkKKyAgICAgICAgZXhwZWN0ZWQgPSAocmVzdWx0X2ggKyByZXN1bHRfZykuc3BsaXRsaW5lcygpCisgICAgICAgIGFjdHVhbCA9IHN0ZGVycl9oLmdldHZhbHVlKCkuc3BsaXRsaW5lcygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X3JlY3Vyc2l2ZV90cmFjZWJhY2tfcHl0aG9uKHNlbGYpOgorICAgICAgICBzZWxmLl9jaGVja19yZWN1cnNpdmVfdHJhY2ViYWNrX2Rpc3BsYXkodHJhY2ViYWNrLnByaW50X2V4YykKKworICAgIEBjcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9yZWN1cnNpdmVfdHJhY2ViYWNrX2NweXRob25faW50ZXJuYWwoc2VsZik6CisgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBleGNlcHRpb25fcHJpbnQKKyAgICAgICAgZGVmIHJlbmRlcl9leGMoKToKKyAgICAgICAgICAgIGV4Y190eXBlLCBleGNfdmFsdWUsIGV4Y190YiA9IHN5cy5leGNfaW5mbygpCisgICAgICAgICAgICBleGNlcHRpb25fcHJpbnQoZXhjX3ZhbHVlKQorICAgICAgICBzZWxmLl9jaGVja19yZWN1cnNpdmVfdHJhY2ViYWNrX2Rpc3BsYXkocmVuZGVyX2V4YykKKwogICAgIGRlZiB0ZXN0X2Zvcm1hdF9zdGFjayhzZWxmKToKICAgICAgICAgZGVmIGZtdCgpOgogICAgICAgICAgICAgcmV0dXJuIHRyYWNlYmFjay5mb3JtYXRfc3RhY2soKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90cmFjZW1hbGxvYy5weSBiL0xpYi90ZXN0L3Rlc3RfdHJhY2VtYWxsb2MucHkKaW5kZXggZGE4OWE5YS4uNzkwYWI3ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90cmFjZW1hbGxvYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RyYWNlbWFsbG9jLnB5CkBAIC0xMSw5ICsxMSwxNSBAQAogICAgIGltcG9ydCB0aHJlYWRpbmcKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICB0aHJlYWRpbmcgPSBOb25lCit0cnk6CisgICAgaW1wb3J0IF90ZXN0Y2FwaQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIF90ZXN0Y2FwaSA9IE5vbmUKKwogCiBFTVBUWV9TVFJJTkdfU0laRSA9IHN5cy5nZXRzaXplb2YoYicnKQogCisKIGRlZiBnZXRfZnJhbWVzKG5mcmFtZSwgbGluZW5vX2RlbHRhKToKICAgICBmcmFtZXMgPSBbXQogICAgIGZyYW1lID0gc3lzLl9nZXRmcmFtZSgxKQpAQCAtMzcsMjggKzQzLDMxIEBACiBkZWYgY3JlYXRlX3NuYXBzaG90cygpOgogICAgIHRyYWNlYmFja19saW1pdCA9IDIKIAorICAgICMgX3RyYWNlbWFsbG9jLl9nZXRfdHJhY2VzKCkgcmV0dXJucyBhIGxpc3Qgb2YgKGRvbWFpbiwgc2l6ZSwKKyAgICAjIHRyYWNlYmFja19mcmFtZXMpIHR1cGxlcy4gdHJhY2ViYWNrX2ZyYW1lcyBpcyBhIHR1cGxlIG9mIChmaWxlbmFtZSwKKyAgICAjIGxpbmVfbnVtYmVyKSB0dXBsZXMuCiAgICAgcmF3X3RyYWNlcyA9IFsKLSAgICAgICAgKDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCi0gICAgICAgICgxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAotICAgICAgICAoMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKIAotICAgICAgICAoMiwgKCgnYS5weScsIDUpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAoMSwgMiwgKCgnYS5weScsIDUpLCAoJ2IucHknLCA0KSkpLAogCi0gICAgICAgICg2NiwgKCgnYi5weScsIDEpLCkpLAorICAgICAgICAoMiwgNjYsICgoJ2IucHknLCAxKSwpKSwKIAotICAgICAgICAoNywgKCgnPHVua25vd24+JywgMCksKSksCisgICAgICAgICgzLCA3LCAoKCc8dW5rbm93bj4nLCAwKSwpKSwKICAgICBdCiAgICAgc25hcHNob3QgPSB0cmFjZW1hbGxvYy5TbmFwc2hvdChyYXdfdHJhY2VzLCB0cmFjZWJhY2tfbGltaXQpCiAKICAgICByYXdfdHJhY2VzMiA9IFsKLSAgICAgICAgKDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCi0gICAgICAgICgxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAotICAgICAgICAoMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKIAotICAgICAgICAoMiwgKCgnYS5weScsIDUpLCAoJ2IucHknLCA0KSkpLAotICAgICAgICAoNTAwMCwgKCgnYS5weScsIDUpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAoMiwgMiwgKCgnYS5weScsIDUpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAoMiwgNTAwMCwgKCgnYS5weScsIDUpLCAoJ2IucHknLCA0KSkpLAogCi0gICAgICAgICg0MDAsICgoJ2MucHknLCA1NzgpLCkpLAorICAgICAgICAoNCwgNDAwLCAoKCdjLnB5JywgNTc4KSwpKSwKICAgICBdCiAgICAgc25hcHNob3QyID0gdHJhY2VtYWxsb2MuU25hcHNob3QocmF3X3RyYWNlczIsIHRyYWNlYmFja19saW1pdCkKIApAQCAtMTI2LDcgKzEzNSw3IEBACiAKICAgICBkZWYgZmluZF90cmFjZShzZWxmLCB0cmFjZXMsIHRyYWNlYmFjayk6CiAgICAgICAgIGZvciB0cmFjZSBpbiB0cmFjZXM6Ci0gICAgICAgICAgICBpZiB0cmFjZVsxXSA9PSB0cmFjZWJhY2suX2ZyYW1lczoKKyAgICAgICAgICAgIGlmIHRyYWNlWzJdID09IHRyYWNlYmFjay5fZnJhbWVzOgogICAgICAgICAgICAgICAgIHJldHVybiB0cmFjZQogCiAgICAgICAgIHNlbGYuZmFpbCgidHJhY2Ugbm90IGZvdW5kIikKQEAgLTE0MCw3ICsxNDksNyBAQAogICAgICAgICB0cmFjZSA9IHNlbGYuZmluZF90cmFjZSh0cmFjZXMsIG9ial90cmFjZWJhY2spCiAKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHRyYWNlLCB0dXBsZSkKLSAgICAgICAgc2l6ZSwgdHJhY2ViYWNrID0gdHJhY2UKKyAgICAgICAgZG9tYWluLCBzaXplLCB0cmFjZWJhY2sgPSB0cmFjZQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpemUsIG9ial9zaXplKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlYmFjaywgb2JqX3RyYWNlYmFjay5fZnJhbWVzKQogCkBAIC0xNjcsOSArMTc2LDggQEAKIAogICAgICAgICB0cmFjZTEgPSBzZWxmLmZpbmRfdHJhY2UodHJhY2VzLCBvYmoxX3RyYWNlYmFjaykKICAgICAgICAgdHJhY2UyID0gc2VsZi5maW5kX3RyYWNlKHRyYWNlcywgb2JqMl90cmFjZWJhY2spCi0gICAgICAgIHNpemUxLCB0cmFjZWJhY2sxID0gdHJhY2UxCi0gICAgICAgIHNpemUyLCB0cmFjZWJhY2syID0gdHJhY2UyCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2ViYWNrMiwgdHJhY2ViYWNrMSkKKyAgICAgICAgZG9tYWluMSwgc2l6ZTEsIHRyYWNlYmFjazEgPSB0cmFjZTEKKyAgICAgICAgZG9tYWluMiwgc2l6ZTIsIHRyYWNlYmFjazIgPSB0cmFjZTIKICAgICAgICAgc2VsZi5hc3NlcnRJcyh0cmFjZWJhY2syLCB0cmFjZWJhY2sxKQogCiAgICAgZGVmIHRlc3RfZ2V0X3RyYWNlZF9tZW1vcnkoc2VsZik6CkBAIC0yOTIsNyArMzAwLDcgQEAKICAgICBtYXhEaWZmID0gNDAwMAogCiAgICAgZGVmIHRlc3RfY3JlYXRlX3NuYXBzaG90KHNlbGYpOgotICAgICAgICByYXdfdHJhY2VzID0gWyg1LCAoKCdhLnB5JywgMiksKSldCisgICAgICAgIHJhd190cmFjZXMgPSBbKDAsIDUsICgoJ2EucHknLCAyKSwpKV0KIAogICAgICAgICB3aXRoIGNvbnRleHRsaWIuRXhpdFN0YWNrKCkgYXMgc3RhY2s6CiAgICAgICAgICAgICBzdGFjay5lbnRlcl9jb250ZXh0KHBhdGNoLm9iamVjdCh0cmFjZW1hbGxvYywgJ2lzX3RyYWNpbmcnLApAQCAtMzIyLDExICszMzAsMTEgQEAKICAgICAgICAgIyBleGNsdWRlIGIucHkKICAgICAgICAgc25hcHNob3QzID0gc25hcHNob3QuZmlsdGVyX3RyYWNlcygoZmlsdGVyMSwpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNuYXBzaG90My50cmFjZXMuX3RyYWNlcywgWwotICAgICAgICAgICAgKDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCi0gICAgICAgICAgICAoMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKLSAgICAgICAgICAgICgxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAotICAgICAgICAgICAgKDIsICgoJ2EucHknLCA1KSwgKCdiLnB5JywgNCkpKSwKLSAgICAgICAgICAgICg3LCAoKCc8dW5rbm93bj4nLCAwKSwpKSwKKyAgICAgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgICAgICgxLCAyLCAoKCdhLnB5JywgNSksICgnYi5weScsIDQpKSksCisgICAgICAgICAgICAoMywgNywgKCgnPHVua25vd24+JywgMCksKSksCiAgICAgICAgIF0pCiAKICAgICAgICAgIyBmaWx0ZXJfdHJhY2VzKCkgbXVzdCBub3QgdG91Y2ggdGhlIG9yaWdpbmFsIHNuYXBzaG90CkBAIC0zMzUsMTAgKzM0MywxMCBAQAogICAgICAgICAjIG9ubHkgaW5jbHVkZSB0d28gbGluZXMgb2YgYS5weQogICAgICAgICBzbmFwc2hvdDQgPSBzbmFwc2hvdDMuZmlsdGVyX3RyYWNlcygoZmlsdGVyMiwgZmlsdGVyMykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc25hcHNob3Q0LnRyYWNlcy5fdHJhY2VzLCBbCi0gICAgICAgICAgICAoMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKLSAgICAgICAgICAgICgxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAotICAgICAgICAgICAgKDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCi0gICAgICAgICAgICAoMiwgKCgnYS5weScsIDUpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAgICAgKDEsIDIsICgoJ2EucHknLCA1KSwgKCdiLnB5JywgNCkpKSwKICAgICAgICAgXSkKIAogICAgICAgICAjIE5vIGZpbHRlcjoganVzdCBkdXBsaWNhdGUgdGhlIHNuYXBzaG90CkBAIC0zNDksNiArMzU3LDU0IEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzbmFwc2hvdC5maWx0ZXJfdHJhY2VzLCBmaWx0ZXIxKQogCisgICAgZGVmIHRlc3RfZmlsdGVyX3RyYWNlc19kb21haW4oc2VsZik6CisgICAgICAgIHNuYXBzaG90LCBzbmFwc2hvdDIgPSBjcmVhdGVfc25hcHNob3RzKCkKKyAgICAgICAgZmlsdGVyMSA9IHRyYWNlbWFsbG9jLkZpbHRlcihGYWxzZSwgImEucHkiLCBkb21haW49MSkKKyAgICAgICAgZmlsdGVyMiA9IHRyYWNlbWFsbG9jLkZpbHRlcihUcnVlLCAiYS5weSIsIGRvbWFpbj0xKQorCisgICAgICAgIG9yaWdpbmFsX3RyYWNlcyA9IGxpc3Qoc25hcHNob3QudHJhY2VzLl90cmFjZXMpCisKKyAgICAgICAgIyBleGNsdWRlIGEucHkgb2YgZG9tYWluIDEKKyAgICAgICAgc25hcHNob3QzID0gc25hcHNob3QuZmlsdGVyX3RyYWNlcygoZmlsdGVyMSwpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNuYXBzaG90My50cmFjZXMuX3RyYWNlcywgWworICAgICAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAgICAgKDIsIDY2LCAoKCdiLnB5JywgMSksKSksCisgICAgICAgICAgICAoMywgNywgKCgnPHVua25vd24+JywgMCksKSksCisgICAgICAgIF0pCisKKyAgICAgICAgIyBpbmNsdWRlIGRvbWFpbiAxCisgICAgICAgIHNuYXBzaG90MyA9IHNuYXBzaG90LmZpbHRlcl90cmFjZXMoKGZpbHRlcjEsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbmFwc2hvdDMudHJhY2VzLl90cmFjZXMsIFsKKyAgICAgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgICAgICgyLCA2NiwgKCgnYi5weScsIDEpLCkpLAorICAgICAgICAgICAgKDMsIDcsICgoJzx1bmtub3duPicsIDApLCkpLAorICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfZmlsdGVyX3RyYWNlc19kb21haW5fZmlsdGVyKHNlbGYpOgorICAgICAgICBzbmFwc2hvdCwgc25hcHNob3QyID0gY3JlYXRlX3NuYXBzaG90cygpCisgICAgICAgIGZpbHRlcjEgPSB0cmFjZW1hbGxvYy5Eb21haW5GaWx0ZXIoRmFsc2UsIGRvbWFpbj0zKQorICAgICAgICBmaWx0ZXIyID0gdHJhY2VtYWxsb2MuRG9tYWluRmlsdGVyKFRydWUsIGRvbWFpbj0zKQorCisgICAgICAgICMgZXhjbHVkZSBkb21haW4gMgorICAgICAgICBzbmFwc2hvdDMgPSBzbmFwc2hvdC5maWx0ZXJfdHJhY2VzKChmaWx0ZXIxLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc25hcHNob3QzLnRyYWNlcy5fdHJhY2VzLCBbCisgICAgICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICAgICAoMSwgMiwgKCgnYS5weScsIDUpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAgICAgKDIsIDY2LCAoKCdiLnB5JywgMSksKSksCisgICAgICAgIF0pCisKKyAgICAgICAgIyBpbmNsdWRlIGRvbWFpbiAyCisgICAgICAgIHNuYXBzaG90MyA9IHNuYXBzaG90LmZpbHRlcl90cmFjZXMoKGZpbHRlcjIsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbmFwc2hvdDMudHJhY2VzLl90cmFjZXMsIFsKKyAgICAgICAgICAgICgzLCA3LCAoKCc8dW5rbm93bj4nLCAwKSwpKSwKKyAgICAgICAgXSkKKwogICAgIGRlZiB0ZXN0X3NuYXBzaG90X2dyb3VwX2J5X2xpbmUoc2VsZik6CiAgICAgICAgIHNuYXBzaG90LCBzbmFwc2hvdDIgPSBjcmVhdGVfc25hcHNob3RzKCkKICAgICAgICAgdGJfMCA9IHRyYWNlYmFja19saW5lbm8oJzx1bmtub3duPicsIDApCkBAIC04MTYsMTIgKzg3MiwxMjEgQEAKICAgICAgICAgYXNzZXJ0X3B5dGhvbl9vaygnLVgnLCAndHJhY2VtYWxsb2MnLCAnLWMnLCBjb2RlKQogCiAKK0B1bml0dGVzdC5za2lwSWYoX3Rlc3RjYXBpIGlzIE5vbmUsICduZWVkIF90ZXN0Y2FwaScpCitjbGFzcyBUZXN0Q0FQSSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgbWF4RGlmZiA9IDgwICogMjAKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgaWYgdHJhY2VtYWxsb2MuaXNfdHJhY2luZygpOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgidHJhY2VtYWxsb2MgbXVzdCBiZSBzdG9wcGVkIGJlZm9yZSB0aGUgdGVzdCIpCisKKyAgICAgICAgc2VsZi5kb21haW4gPSA1CisgICAgICAgIHNlbGYuc2l6ZSA9IDEyMworICAgICAgICBzZWxmLm9iaiA9IGFsbG9jYXRlX2J5dGVzKHNlbGYuc2l6ZSlbMF0KKworICAgICAgICAjIGZvciB0aGUgdHlwZSAib2JqZWN0IiwgaWQob2JqKSBpcyB0aGUgYWRkcmVzcyBvZiBpdHMgbWVtb3J5IGJsb2NrLgorICAgICAgICAjIFRoaXMgdHlwZSBpcyBub3QgdHJhY2tlZCBieSB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IKKyAgICAgICAgc2VsZi5wdHIgPSBpZChzZWxmLm9iaikKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgdHJhY2VtYWxsb2Muc3RvcCgpCisKKyAgICBkZWYgZ2V0X3RyYWNlYmFjayhzZWxmKToKKyAgICAgICAgZnJhbWVzID0gX3Rlc3RjYXBpLnRyYWNlbWFsbG9jX2dldF90cmFjZWJhY2soc2VsZi5kb21haW4sIHNlbGYucHRyKQorICAgICAgICBpZiBmcmFtZXMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXR1cm4gdHJhY2VtYWxsb2MuVHJhY2ViYWNrKGZyYW1lcykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICBkZWYgdHJhY2soc2VsZiwgcmVsZWFzZV9naWw9RmFsc2UsIG5mcmFtZT0xKToKKyAgICAgICAgZnJhbWVzID0gZ2V0X2ZyYW1lcyhuZnJhbWUsIDIpCisgICAgICAgIF90ZXN0Y2FwaS50cmFjZW1hbGxvY190cmFjayhzZWxmLmRvbWFpbiwgc2VsZi5wdHIsIHNlbGYuc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGVhc2VfZ2lsKQorICAgICAgICByZXR1cm4gZnJhbWVzCisKKyAgICBkZWYgdW50cmFjayhzZWxmKToKKyAgICAgICAgX3Rlc3RjYXBpLnRyYWNlbWFsbG9jX3VudHJhY2soc2VsZi5kb21haW4sIHNlbGYucHRyKQorCisgICAgZGVmIGdldF90cmFjZWRfbWVtb3J5KHNlbGYpOgorICAgICAgICAjIEdldCB0aGUgdHJhY2VkIHNpemUgaW4gdGhlIGRvbWFpbgorICAgICAgICBzbmFwc2hvdCA9IHRyYWNlbWFsbG9jLnRha2Vfc25hcHNob3QoKQorICAgICAgICBkb21haW5fZmlsdGVyID0gdHJhY2VtYWxsb2MuRG9tYWluRmlsdGVyKFRydWUsIHNlbGYuZG9tYWluKQorICAgICAgICBzbmFwc2hvdCA9IHNuYXBzaG90LmZpbHRlcl90cmFjZXMoW2RvbWFpbl9maWx0ZXJdKQorICAgICAgICByZXR1cm4gc3VtKHRyYWNlLnNpemUgZm9yIHRyYWNlIGluIHNuYXBzaG90LnRyYWNlcykKKworICAgIGRlZiBjaGVja190cmFjayhzZWxmLCByZWxlYXNlX2dpbCk6CisgICAgICAgIG5mcmFtZSA9IDUKKyAgICAgICAgdHJhY2VtYWxsb2Muc3RhcnQobmZyYW1lKQorCisgICAgICAgIHNpemUgPSB0cmFjZW1hbGxvYy5nZXRfdHJhY2VkX21lbW9yeSgpWzBdCisKKyAgICAgICAgZnJhbWVzID0gc2VsZi50cmFjayhyZWxlYXNlX2dpbCwgbmZyYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0X3RyYWNlYmFjaygpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlbWFsbG9jLlRyYWNlYmFjayhmcmFtZXMpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRfdHJhY2VkX21lbW9yeSgpLCBzZWxmLnNpemUpCisKKyAgICBkZWYgdGVzdF90cmFjayhzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja190cmFjayhGYWxzZSkKKworICAgIGRlZiB0ZXN0X3RyYWNrX3dpdGhvdXRfZ2lsKHNlbGYpOgorICAgICAgICAjIGNoZWNrIHRoYXQgY2FsbGluZyBfUHlUcmFjZU1hbGxvY19UcmFjaygpIHdpdGhvdXQgaG9sZGluZyB0aGUgR0lMCisgICAgICAgICMgd29ya3MgdG9vCisgICAgICAgIHNlbGYuY2hlY2tfdHJhY2soVHJ1ZSkKKworICAgIGRlZiB0ZXN0X3RyYWNrX2FscmVhZHlfdHJhY2tlZChzZWxmKToKKyAgICAgICAgbmZyYW1lID0gNQorICAgICAgICB0cmFjZW1hbGxvYy5zdGFydChuZnJhbWUpCisKKyAgICAgICAgIyB0cmFjayBhIGZpcnN0IHRpbWUKKyAgICAgICAgc2VsZi50cmFjaygpCisKKyAgICAgICAgIyBjYWxsaW5nIF9QeVRyYWNlTWFsbG9jX1RyYWNrKCkgbXVzdCByZW1vdmUgdGhlIG9sZCB0cmFjZSBhbmQgYWRkCisgICAgICAgICMgYSBuZXcgdHJhY2Ugd2l0aCB0aGUgbmV3IHRyYWNlYmFjaworICAgICAgICBmcmFtZXMgPSBzZWxmLnRyYWNrKG5mcmFtZT1uZnJhbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRfdHJhY2ViYWNrKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2VtYWxsb2MuVHJhY2ViYWNrKGZyYW1lcykpCisKKyAgICBkZWYgdGVzdF91bnRyYWNrKHNlbGYpOgorICAgICAgICB0cmFjZW1hbGxvYy5zdGFydCgpCisKKyAgICAgICAgc2VsZi50cmFjaygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHNlbGYuZ2V0X3RyYWNlYmFjaygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0X3RyYWNlZF9tZW1vcnkoKSwgc2VsZi5zaXplKQorCisgICAgICAgICMgdW50cmFjayBtdXN0IHJlbW92ZSB0aGUgdHJhY2UKKyAgICAgICAgc2VsZi51bnRyYWNrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi5nZXRfdHJhY2ViYWNrKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRfdHJhY2VkX21lbW9yeSgpLCAwKQorCisgICAgICAgICMgY2FsbGluZyBfUHlUcmFjZU1hbGxvY19VbnRyYWNrKCkgbXVsdGlwbGUgdGltZXMgbXVzdCBub3QgY3Jhc2gKKyAgICAgICAgc2VsZi51bnRyYWNrKCkKKyAgICAgICAgc2VsZi51bnRyYWNrKCkKKworICAgIGRlZiB0ZXN0X3N0b3BfdHJhY2soc2VsZik6CisgICAgICAgIHRyYWNlbWFsbG9jLnN0YXJ0KCkKKyAgICAgICAgdHJhY2VtYWxsb2Muc3RvcCgpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpOgorICAgICAgICAgICAgc2VsZi50cmFjaygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYuZ2V0X3RyYWNlYmFjaygpKQorCisgICAgZGVmIHRlc3Rfc3RvcF91bnRyYWNrKHNlbGYpOgorICAgICAgICB0cmFjZW1hbGxvYy5zdGFydCgpCisgICAgICAgIHNlbGYudHJhY2soKQorCisgICAgICAgIHRyYWNlbWFsbG9jLnN0b3AoKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcik6CisgICAgICAgICAgICBzZWxmLnVudHJhY2soKQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKICAgICAgICAgVGVzdFRyYWNlbWFsbG9jRW5hYmxlZCwKICAgICAgICAgVGVzdFNuYXBzaG90LAogICAgICAgICBUZXN0RmlsdGVycywKICAgICAgICAgVGVzdENvbW1hbmRMaW5lLAorICAgICAgICBUZXN0Q0FQSSwKICAgICApCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3R0a19ndWlvbmx5LnB5IGIvTGliL3Rlc3QvdGVzdF90dGtfZ3Vpb25seS5weQppbmRleCA0OTBlNzIzLi40NjI2NjVkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3R0a19ndWlvbmx5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdHRrX2d1aW9ubHkucHkKQEAgLTEsNCArMSwzIEBACi1pbXBvcnQgb3MKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdHRrX3RleHRvbmx5LnB5IGIvTGliL3Rlc3QvdGVzdF90dGtfdGV4dG9ubHkucHkKaW5kZXggNTY2ZmM5ZC4uNzU0MGE0MzEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdHRrX3RleHRvbmx5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdHRrX3RleHRvbmx5LnB5CkBAIC0xLDQgKzEsMyBAQAotaW1wb3J0IG9zCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogIyBTa2lwIHRoaXMgdGVzdCBpZiBfdGtpbnRlciBkb2VzIG5vdCBleGlzdC4KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdHlwZXMucHkgYi9MaWIvdGVzdC90ZXN0X3R5cGVzLnB5CmluZGV4IDVlNzQxMTUuLjM4MmNhMDMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdHlwZXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90eXBlcy5weQpAQCAtNDgsNiArNDgsNyBAQAogICAgIGRlZiB0ZXN0X2Zsb2F0X2NvbnN0cnVjdG9yKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmbG9hdCwgJycpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZsb2F0LCAnNVwwJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZmxvYXQsICc1XzVcMCcpCiAKICAgICBkZWYgdGVzdF96ZXJvX2RpdmlzaW9uKHNlbGYpOgogICAgICAgICB0cnk6IDUuMCAvIDAuMApAQCAtMTAwMCw2ICsxMDAxLDI0IEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKICAgICAgICAgICAgIFggPSB0eXBlcy5uZXdfY2xhc3MoIlgiLCAoaW50KCksIEMpKQogCisgICAgZGVmIHRlc3Rfb25lX2FyZ3VtZW50X3R5cGUoc2VsZik6CisgICAgICAgIGV4cGVjdGVkX21lc3NhZ2UgPSAndHlwZS5fX25ld19fKCkgdGFrZXMgZXhhY3RseSAzIGFyZ3VtZW50cyAoMSBnaXZlbiknCisKKyAgICAgICAgIyBPbmx5IHR5cGUgaXRzZWxmIGNhbiB1c2UgdGhlIG9uZS1hcmd1bWVudCBmb3JtICgjMjcxNTcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZSg1KSwgaW50KQorCisgICAgICAgIGNsYXNzIE0odHlwZSk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIE0oNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwgZXhwZWN0ZWRfbWVzc2FnZSkKKworICAgICAgICBjbGFzcyBOKHR5cGUsIG1ldGFjbGFzcz1NKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgTig1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLCBleHBlY3RlZF9tZXNzYWdlKQorCiAKIGNsYXNzIFNpbXBsZU5hbWVzcGFjZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91bmljb2RlLnB5IGIvTGliL3Rlc3QvdGVzdF91bmljb2RlLnB5CmluZGV4IGY2OTZhNWIuLjg4M2MzNjIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdW5pY29kZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VuaWNvZGUucHkKQEAgLTEwLDYgKzEwLDcgQEAKIGltcG9ydCBpdGVydG9vbHMKIGltcG9ydCBvcGVyYXRvcgogaW1wb3J0IHN0cnVjdAoraW1wb3J0IHN0cmluZwogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgd2FybmluZ3MKQEAgLTk4Niw2ICs5ODcsMTkgQEAKICAgICAgICAgICAgIGRlZiBfX2Zvcm1hdF9fKHNlbGYsIGZvcm1hdF9zcGVjKToKICAgICAgICAgICAgICAgICByZXR1cm4gaW50Ll9fZm9ybWF0X18oc2VsZiAqIDIsIGZvcm1hdF9zcGVjKQogCisgICAgICAgIGNsYXNzIE06CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgeCk6CisgICAgICAgICAgICAgICAgc2VsZi54ID0geAorICAgICAgICAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAnTSgnICsgc2VsZi54ICsgJyknCisgICAgICAgICAgICBfX3N0cl9fID0gTm9uZQorCisgICAgICAgIGNsYXNzIE46CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgeCk6CisgICAgICAgICAgICAgICAgc2VsZi54ID0geAorICAgICAgICAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAnTignICsgc2VsZi54ICsgJyknCisgICAgICAgICAgICBfX2Zvcm1hdF9fID0gTm9uZQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycuZm9ybWF0KCksICcnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdhYmMnLmZvcm1hdCgpLCAnYWJjJykKQEAgLTEyMDAsNiArMTIxNCwxNiBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIjB4ezowezpkfVh9Ii5mb3JtYXQoMHgwLDE2KSwgIjB4MDAwMDAwMDAwMDAwMDAwMCIpCiAKKyAgICAgICAgIyBCbG9ja2luZyBmYWxsYmFjaworICAgICAgICBtID0gTSgnZGF0YScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInshcn0iLmZvcm1hdChtKSwgJ00oZGF0YSknKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsICJ7IXN9Ii5mb3JtYXQsIG0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgInt9Ii5mb3JtYXQsIG0pCisgICAgICAgIG4gPSBOKCdkYXRhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgieyFyfSIuZm9ybWF0KG4pLCAnTihkYXRhKScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInshc30iLmZvcm1hdChuKSwgJ04oZGF0YSknKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsICJ7fSIuZm9ybWF0LCBuKQorCiAgICAgZGVmIHRlc3RfZm9ybWF0X21hcChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJy5mb3JtYXRfbWFwKHt9KSwgJycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2EnLmZvcm1hdF9tYXAoe30pLCAnYScpCkBAIC0xNTQxLDcgKzE1NjUsNyBAQAogICAgICAgICAgICAgKCcrJywgYicrLScpLAogICAgICAgICAgICAgKCcrLScsIGInKy0tJyksCiAgICAgICAgICAgICAoJys/JywgYicrLT8nKSwKLSAgICAgICAgICAgICgnXD8nLCBiJytBRnc/JyksCisgICAgICAgICAgICAocidcPycsIGInK0FGdz8nKSwKICAgICAgICAgICAgICgnKz8nLCBiJystPycpLAogICAgICAgICAgICAgKHInXFw/JywgYicrQUZ3QVhBPycpLAogICAgICAgICAgICAgKHInXFxcPycsIGInK0FGd0FYQUJjPycpLApAQCAtMjQyMCw3ICsyNDQ0LDcgQEAKICAgICAgICAgIyBub24tYXNjaWkgZm9ybWF0LCBhc2NpaSBhcmd1bWVudDogZW5zdXJlIHRoYXQgUHlVbmljb2RlX0Zyb21Gb3JtYXRWKCkKICAgICAgICAgIyByYWlzZXMgYW4gZXJyb3IKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLAotICAgICAgICAgICAgJ15QeVVuaWNvZGVfRnJvbUZvcm1hdFZcKFwpIGV4cGVjdHMgYW4gQVNDSUktZW5jb2RlZCBmb3JtYXQgJworICAgICAgICAgICAgcideUHlVbmljb2RlX0Zyb21Gb3JtYXRWXChcKSBleHBlY3RzIGFuIEFTQ0lJLWVuY29kZWQgZm9ybWF0ICcKICAgICAgICAgICAgICdzdHJpbmcsIGdvdCBhIG5vbi1BU0NJSSBieXRlOiAweGU5JCcsCiAgICAgICAgICAgICBQeVVuaWNvZGVfRnJvbUZvcm1hdCwgYid1bmljb2RlXHhlOT0lcycsICdhc2NpaScpCiAKQEAgLTI3OTIsNyArMjgxNiw2IEBACiAgICAgICAgICAgICAgICAgIyBDaGVjayB0aGF0IHRoZSBzZWNvbmQgY2FsbCByZXR1cm5zIHRoZSBzYW1lIHJlc3VsdAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXJnc19zX2hhc2gocyksIGNocihrKS5lbmNvZGUoKSAqIChpICsgMSkpCiAKLQogY2xhc3MgU3RyaW5nTW9kdWxlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfZm9ybWF0dGVyX3BhcnNlcihzZWxmKToKICAgICAgICAgZGVmIHBhcnNlKGZvcm1hdCk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BlcDI3Ny5weSBiL0xpYi90ZXN0L3Rlc3RfdW5pY29kZV9maWxlX2Z1bmN0aW9ucy5weQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL3Rlc3QvdGVzdF9wZXAyNzcucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfdW5pY29kZV9maWxlX2Z1bmN0aW9ucy5weQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wZXAzMTMxLnB5IGIvTGliL3Rlc3QvdGVzdF91bmljb2RlX2lkZW50aWZpZXJzLnB5CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvdGVzdC90ZXN0X3BlcDMxMzEucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfdW5pY29kZV9pZGVudGlmaWVycy5weQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91bmljb2RlZGF0YS5weSBiL0xpYi90ZXN0L3Rlc3RfdW5pY29kZWRhdGEucHkKaW5kZXggNmVjYzkxMy4uNGZjMTFlYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91bmljb2RlZGF0YS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VuaWNvZGVkYXRhLnB5CkBAIC0yMCw3ICsyMCw3IEBACiBjbGFzcyBVbmljb2RlTWV0aG9kc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgIyB1cGRhdGUgdGhpcywgaWYgdGhlIGRhdGFiYXNlIGNoYW5nZXMKLSAgICBleHBlY3RlZGNoZWNrc3VtID0gJzU5NzE3NjA4NzJiMmY5OGJiOWM3MDFlNmMwZGIzMjczZDc1NmIzZWMnCisgICAgZXhwZWN0ZWRjaGVja3N1bSA9ICdjMWZhOTg2NzRhNjgzYWE4YThkOGRlZTBjODQ0OTRmOGQzNjM0NmU2JwogCiAgICAgZGVmIHRlc3RfbWV0aG9kX2NoZWNrc3VtKHNlbGYpOgogICAgICAgICBoID0gaGFzaGxpYi5zaGExKCkKQEAgLTgwLDcgKzgwLDcgQEAKIAogICAgICMgVXBkYXRlIHRoaXMgaWYgdGhlIGRhdGFiYXNlIGNoYW5nZXMuIE1ha2Ugc3VyZSB0byBkbyBhIGZ1bGwgcmVidWlsZAogICAgICMgKGUuZy4gJ21ha2UgZGlzdGNsZWFuICYmIG1ha2UnKSB0byBnZXQgdGhlIGNvcnJlY3QgY2hlY2tzdW0uCi0gICAgZXhwZWN0ZWRjaGVja3N1bSA9ICc1ZTc0ODI3Y2QwN2Y5ZTU0NmEzMGYzNGI3YmNmNmNjMmVhYzM4YzhjJworICAgIGV4cGVjdGVkY2hlY2tzdW0gPSAnZjg5MWIxZTY0MzBjNzEyNTMxYjliYzkzNWEzOGUyMmQ3OGJhMWJmMycKICAgICBkZWYgdGVzdF9mdW5jdGlvbl9jaGVja3N1bShzZWxmKToKICAgICAgICAgZGF0YSA9IFtdCiAgICAgICAgIGggPSBoYXNobGliLnNoYTEoKQpAQCAtMjIyLDYgKzIyMiwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVhdygnXHUyMDEwJyksICdBJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlYXcoJ1xVMDAwMjAwMDAnKSwgJ1cnKQogCisgICAgZGVmIHRlc3RfZWFzdF9hc2lhbl93aWR0aF85XzBfY2hhbmdlcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRiLnVjZF8zXzJfMC5lYXN0X2FzaWFuX3dpZHRoKCdcdTIzMWEnKSwgJ04nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGIuZWFzdF9hc2lhbl93aWR0aCgnXHUyMzFhJyksICdXJykKKwogY2xhc3MgVW5pY29kZU1pc2NUZXN0KFVuaWNvZGVEYXRhYmFzZVRlc3QpOgogCiAgICAgZGVmIHRlc3RfZmFpbGVkX2ltcG9ydF9kdXJpbmdfY29tcGlsaW5nKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91bnBhY2sucHkgYi9MaWIvdGVzdC90ZXN0X3VucGFjay5weQppbmRleCBkMWNjYjM4Li4zZmNiMThmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VucGFjay5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VucGFjay5weQpAQCAtMTE3LDYgKzExNywyNyBAQAogICAgICAgLi4uCiAgICAgdGVzdC50ZXN0X3VucGFjay5Cb3pvRXJyb3IKIAorQWxsb3cgdW5wYWNraW5nIGVtcHR5IGl0ZXJhYmxlcworCisgICAgPj4+ICgpID0gW10KKyAgICA+Pj4gW10gPSAoKQorICAgID4+PiBbXSA9IFtdCisgICAgPj4+ICgpID0gKCkKKworVW5wYWNraW5nIG5vbi1pdGVyYWJsZXMgc2hvdWxkIHJhaXNlIFR5cGVFcnJvcgorCisgICAgPj4+ICgpID0gNDIKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAuLi4KKyAgICBUeXBlRXJyb3I6ICdpbnQnIG9iamVjdCBpcyBub3QgaXRlcmFibGUKKworVW5wYWNraW5nIHRvIGFuIGVtcHR5IGl0ZXJhYmxlIHNob3VsZCByYWlzZSBWYWx1ZUVycm9yCisKKyAgICA+Pj4gKCkgPSBbNDJdCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgLi4uCisgICAgVmFsdWVFcnJvcjogdG9vIG1hbnkgdmFsdWVzIHRvIHVucGFjayAoZXhwZWN0ZWQgMCkKKwogIiIiCiAKIF9fdGVzdF9fID0geydkb2N0ZXN0cycgOiBkb2N0ZXN0c30KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdW5wYWNrX2V4LnB5IGIvTGliL3Rlc3QvdGVzdF91bnBhY2tfZXgucHkKaW5kZXggNzQzNDZiNC4uNmJlOGY1NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91bnBhY2tfZXgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91bnBhY2tfZXgucHkKQEAgLTM1Nyw3ICszNTcsNiBAQAogX190ZXN0X18gPSB7J2RvY3Rlc3RzJyA6IGRvY3Rlc3RzfQogCiBkZWYgdGVzdF9tYWluKHZlcmJvc2U9RmFsc2UpOgotICAgIGltcG9ydCBzeXMKICAgICBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKICAgICBmcm9tIHRlc3QgaW1wb3J0IHRlc3RfdW5wYWNrX2V4CiAgICAgc3VwcG9ydC5ydW5fZG9jdGVzdCh0ZXN0X3VucGFja19leCwgdmVyYm9zZSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliLnB5IGIvTGliL3Rlc3QvdGVzdF91cmxsaWIucHkKaW5kZXggMjQ3NTk4YS4uNDNlYTZiOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91cmxsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91cmxsaWIucHkKQEAgLTQ2OSwxMCArNDY5LDExIEBACiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3NsLCAic3NsIG1vZHVsZSByZXF1aXJlZCIpCiAgICAgZGVmIHRlc3RfY2FmaWxlX2FuZF9jb250ZXh0KHNlbGYpOgogICAgICAgICBjb250ZXh0ID0gc3NsLmNyZWF0ZV9kZWZhdWx0X2NvbnRleHQoKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgotICAgICAgICAgICAgdXJsbGliLnJlcXVlc3QudXJsb3BlbigKLSAgICAgICAgICAgICAgICAiaHR0cHM6Ly9sb2NhbGhvc3QiLCBjYWZpbGU9Ii9ub25leGlzdGVudC9wYXRoIiwgY29udGV4dD1jb250ZXh0Ci0gICAgICAgICAgICApCisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgICAgICB1cmxsaWIucmVxdWVzdC51cmxvcGVuKAorICAgICAgICAgICAgICAgICAgICAiaHR0cHM6Ly9sb2NhbGhvc3QiLCBjYWZpbGU9Ii9ub25leGlzdGVudC9wYXRoIiwgY29udGV4dD1jb250ZXh0CisgICAgICAgICAgICAgICAgKQogCiBjbGFzcyB1cmxvcGVuX0RhdGFUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCB1cmxvcGVuKCkgb3BlbmluZyBhIGRhdGEgVVJMLiIiIgpAQCAtNzI5LDcgKzczMCw3IEBACiAKIAogY2xhc3MgUXVvdGluZ1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAiIiJUZXN0cyBmb3IgdXJsbGliLnF1b3RlKCkgYW5kIHVybGxpYi5xdW90ZV9wbHVzKCkKKyAgICByIiIiVGVzdHMgZm9yIHVybGxpYi5xdW90ZSgpIGFuZCB1cmxsaWIucXVvdGVfcGx1cygpCiAKICAgICBBY2NvcmRpbmcgdG8gUkZDIDIzOTYgKFVuaWZvcm0gUmVzb3VyY2UgSWRlbnRpZmllcnMpLCB0byBlc2NhcGUgYQogICAgIGNoYXJhY3RlciB5b3Ugd3JpdGUgaXQgYXMgJyUnICsgPDIgY2hhcmFjdGVyIFVTLUFTQ0lJIGhleCB2YWx1ZT4uCkBAIC04MDQsNyArODA1LDcgQEAKICAgICAgICAgIyBNYWtlIHN1cmUgYWxsIGNoYXJhY3RlcnMgdGhhdCBzaG91bGQgYmUgcXVvdGVkIGFyZSBieSBkZWZhdWx0IHNhbnMKICAgICAgICAgIyBzcGFjZSAoc2VwYXJhdGUgdGVzdCBmb3IgdGhhdCkuCiAgICAgICAgIHNob3VsZF9xdW90ZSA9IFtjaHIobnVtKSBmb3IgbnVtIGluIHJhbmdlKDMyKV0gIyBGb3IgMHgwMCAtIDB4MUYKLSAgICAgICAgc2hvdWxkX3F1b3RlLmFwcGVuZCgnPD4jJSJ7fXxcXltdYCcpCisgICAgICAgIHNob3VsZF9xdW90ZS5hcHBlbmQocic8PiMlInt9fFxeW11gJykKICAgICAgICAgc2hvdWxkX3F1b3RlLmFwcGVuZChjaHIoMTI3KSkgIyBGb3IgMHg3RgogICAgICAgICBzaG91bGRfcXVvdGUgPSAnJy5qb2luKHNob3VsZF9xdW90ZSkKICAgICAgICAgZm9yIGNoYXIgaW4gc2hvdWxkX3F1b3RlOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91cmxsaWIyLnB5IGIvTGliL3Rlc3QvdGVzdF91cmxsaWIyLnB5CmluZGV4IGVkYTdjY2MuLjM0MzI5ZjggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliMi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VybGxpYjIucHkKQEAgLTcsNiArNyw4IEBACiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgYXJyYXkKIGltcG9ydCBzeXMKK2ltcG9ydCB0ZW1wZmlsZQoraW1wb3J0IHN1YnByb2Nlc3MKIAogaW1wb3J0IHVybGxpYi5yZXF1ZXN0CiAjIFRoZSBwcm94eSBieXBhc3MgbWV0aG9kIGltcG9ydGVkIGJlbG93IGhhcyBsb2dpYyBzcGVjaWZpYyB0byB0aGUgT1NYCkBAIC0zMzUsNyArMzM3LDggQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuX3R1bm5lbF9oZWFkZXJzLmNsZWFyKCkKIAotICAgIGRlZiByZXF1ZXN0KHNlbGYsIG1ldGhvZCwgdXJsLCBib2R5PU5vbmUsIGhlYWRlcnM9Tm9uZSk6CisgICAgZGVmIHJlcXVlc3Qoc2VsZiwgbWV0aG9kLCB1cmwsIGJvZHk9Tm9uZSwgaGVhZGVycz1Ob25lLCAqLAorICAgICAgICAgICAgICAgIGVuY29kZV9jaHVua2VkPUZhbHNlKToKICAgICAgICAgc2VsZi5tZXRob2QgPSBtZXRob2QKICAgICAgICAgc2VsZi5zZWxlY3RvciA9IHVybAogICAgICAgICBpZiBoZWFkZXJzIGlzIG5vdCBOb25lOgpAQCAtMzQzLDYgKzM0Niw3IEBACiAgICAgICAgIHNlbGYucmVxX2hlYWRlcnMuc29ydCgpCiAgICAgICAgIGlmIGJvZHk6CiAgICAgICAgICAgICBzZWxmLmRhdGEgPSBib2R5CisgICAgICAgIHNlbGYuZW5jb2RlX2NodW5rZWQgPSBlbmNvZGVfY2h1bmtlZAogICAgICAgICBpZiBzZWxmLnJhaXNlX29uX2VuZGhlYWRlcnM6CiAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCkKIApAQCAtOTA4LDQxICs5MTIsMTEwIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS51bnJlZGlyZWN0ZWRfaGRyc1siSG9zdCJdLCAiYmF6IikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLnVucmVkaXJlY3RlZF9oZHJzWyJTcGFtIl0sICJmb28iKQogCi0gICAgICAgICMgQ2hlY2sgaXRlcmFibGUgYm9keSBzdXBwb3J0Ci0gICAgICAgIGRlZiBpdGVyYWJsZV9ib2R5KCk6Ci0gICAgICAgICAgICB5aWVsZCBiIm9uZSIKLSAgICAgICAgICAgIHlpZWxkIGIidHdvIgotICAgICAgICAgICAgeWllbGQgYiJ0aHJlZSIKKyAgICBkZWYgdGVzdF9odHRwX2JvZHlfZmlsZShzZWxmKToKKyAgICAgICAgIyBBIHJlZ3VsYXIgZmlsZSAtIGNodW5rZWQgZW5jb2RpbmcgaXMgdXNlZCB1bmxlc3MgQ29udGVudCBMZW5ndGggaXMKKyAgICAgICAgIyBhbHJlYWR5IHNldC4KIAotICAgICAgICBmb3IgaGVhZGVycyBpbiB7fSwgeyJDb250ZW50LUxlbmd0aCI6IDExfToKLSAgICAgICAgICAgIHJlcSA9IFJlcXVlc3QoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCBpdGVyYWJsZV9ib2R5KCksIGhlYWRlcnMpCi0gICAgICAgICAgICBpZiBub3QgaGVhZGVyczoKLSAgICAgICAgICAgICAgICAjIEhhdmluZyBhbiBpdGVyYWJsZSBib2R5IHdpdGhvdXQgYSBDb250ZW50LUxlbmd0aCBzaG91bGQKLSAgICAgICAgICAgICAgICAjIHJhaXNlIGFuIGV4Y2VwdGlvbgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGguZG9fcmVxdWVzdF8sIHJlcSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbmV3cmVxID0gaC5kb19yZXF1ZXN0XyhyZXEpCisgICAgICAgIGggPSB1cmxsaWIucmVxdWVzdC5BYnN0cmFjdEhUVFBIYW5kbGVyKCkKKyAgICAgICAgbyA9IGgucGFyZW50ID0gTW9ja09wZW5lcigpCiAKLSAgICAgICAgIyBBIGZpbGUgb2JqZWN0LgotICAgICAgICAjIFRlc3Qgb25seSBDb250ZW50LUxlbmd0aCBhdHRyaWJ1dGUgb2YgcmVxdWVzdC4KKyAgICAgICAgZmlsZV9vYmogPSB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUobW9kZT0ndytiJywgZGVsZXRlPUZhbHNlKQorICAgICAgICBmaWxlX3BhdGggPSBmaWxlX29iai5uYW1lCisgICAgICAgIGZpbGVfb2JqLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLnVubGluaywgZmlsZV9wYXRoKQogCisgICAgICAgIHdpdGggb3BlbihmaWxlX3BhdGgsICJyYiIpIGFzIGY6CisgICAgICAgICAgICByZXEgPSBSZXF1ZXN0KCJodHRwOi8vZXhhbXBsZS5jb20vIiwgZiwge30pCisgICAgICAgICAgICBuZXdyZXEgPSBoLmRvX3JlcXVlc3RfKHJlcSkKKyAgICAgICAgICAgIHRlID0gbmV3cmVxLmdldF9oZWFkZXIoJ1RyYW5zZmVyLWVuY29kaW5nJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGUsICJjaHVua2VkIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobmV3cmVxLmhhc19oZWFkZXIoJ0NvbnRlbnQtbGVuZ3RoJykpCisKKyAgICAgICAgd2l0aCBvcGVuKGZpbGVfcGF0aCwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIHJlcSA9IFJlcXVlc3QoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCBmLCB7IkNvbnRlbnQtTGVuZ3RoIjogMzB9KQorICAgICAgICAgICAgbmV3cmVxID0gaC5kb19yZXF1ZXN0XyhyZXEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChuZXdyZXEuZ2V0X2hlYWRlcignQ29udGVudC1sZW5ndGgnKSksIDMwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShuZXdyZXEuaGFzX2hlYWRlcigiVHJhbnNmZXItZW5jb2RpbmciKSkKKworICAgIGRlZiB0ZXN0X2h0dHBfYm9keV9maWxlb2JqKHNlbGYpOgorICAgICAgICAjIEEgZmlsZSBvYmplY3QgLSBjaHVua2VkIGVuY29kaW5nIGlzIHVzZWQKKyAgICAgICAgIyB1bmxlc3MgQ29udGVudCBMZW5ndGggaXMgYWxyZWFkeSBzZXQuCisgICAgICAgICMgKE5vdGUgdGhhdCB0aGVyZSBhcmUgc29tZSBzdWJ0bGUgZGlmZmVyZW5jZXMgdG8gYSByZWd1bGFyCisgICAgICAgICMgZmlsZSwgdGhhdCBpcyB3aHkgd2UgYXJlIHRlc3RpbmcgYm90aCBjYXNlcy4pCisKKyAgICAgICAgaCA9IHVybGxpYi5yZXF1ZXN0LkFic3RyYWN0SFRUUEhhbmRsZXIoKQorICAgICAgICBvID0gaC5wYXJlbnQgPSBNb2NrT3BlbmVyKCkKICAgICAgICAgZmlsZV9vYmogPSBpby5CeXRlc0lPKCkKLSAgICAgICAgZmlsZV9vYmoud3JpdGUoYiJTb21ldGhpbmdcblNvbWV0aGluZ1xuU29tZXRoaW5nXG4iKQogCi0gICAgICAgIGZvciBoZWFkZXJzIGluIHt9LCB7IkNvbnRlbnQtTGVuZ3RoIjogMzB9OgotICAgICAgICAgICAgcmVxID0gUmVxdWVzdCgiaHR0cDovL2V4YW1wbGUuY29tLyIsIGZpbGVfb2JqLCBoZWFkZXJzKQotICAgICAgICAgICAgaWYgbm90IGhlYWRlcnM6Ci0gICAgICAgICAgICAgICAgIyBIYXZpbmcgYW4gaXRlcmFibGUgYm9keSB3aXRob3V0IGEgQ29udGVudC1MZW5ndGggc2hvdWxkCi0gICAgICAgICAgICAgICAgIyByYWlzZSBhbiBleGNlcHRpb24KLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBoLmRvX3JlcXVlc3RfLCByZXEpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG5ld3JlcSA9IGguZG9fcmVxdWVzdF8ocmVxKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KG5ld3JlcS5nZXRfaGVhZGVyKCdDb250ZW50LWxlbmd0aCcpKSwgMzApCisgICAgICAgIHJlcSA9IFJlcXVlc3QoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCBmaWxlX29iaiwge30pCisgICAgICAgIG5ld3JlcSA9IGguZG9fcmVxdWVzdF8ocmVxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld3JlcS5nZXRfaGVhZGVyKCdUcmFuc2Zlci1lbmNvZGluZycpLCAnY2h1bmtlZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobmV3cmVxLmhhc19oZWFkZXIoJ0NvbnRlbnQtbGVuZ3RoJykpCisKKyAgICAgICAgaGVhZGVycyA9IHsiQ29udGVudC1MZW5ndGgiOiAzMH0KKyAgICAgICAgcmVxID0gUmVxdWVzdCgiaHR0cDovL2V4YW1wbGUuY29tLyIsIGZpbGVfb2JqLCBoZWFkZXJzKQorICAgICAgICBuZXdyZXEgPSBoLmRvX3JlcXVlc3RfKHJlcSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQobmV3cmVxLmdldF9oZWFkZXIoJ0NvbnRlbnQtbGVuZ3RoJykpLCAzMCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShuZXdyZXEuaGFzX2hlYWRlcigiVHJhbnNmZXItZW5jb2RpbmciKSkKIAogICAgICAgICBmaWxlX29iai5jbG9zZSgpCiAKKyAgICBkZWYgdGVzdF9odHRwX2JvZHlfcGlwZShzZWxmKToKKyAgICAgICAgIyBBIGZpbGUgcmVhZGluZyBmcm9tIGEgcGlwZS4KKyAgICAgICAgIyBBIHBpcGUgY2Fubm90IGJlIHNlZWsnZWQuICBUaGVyZSBpcyBubyB3YXkgdG8gZGV0ZXJtaW5lIHRoZQorICAgICAgICAjIGNvbnRlbnQgbGVuZ3RoIHVwIGZyb250LiAgVGh1cywgZG9fcmVxdWVzdF8oKSBzaG91bGQgZmFsbAorICAgICAgICAjIGJhY2sgdG8gVHJhbnNmZXItZW5jb2RpbmcgY2h1bmtlZC4KKworICAgICAgICBoID0gdXJsbGliLnJlcXVlc3QuQWJzdHJhY3RIVFRQSGFuZGxlcigpCisgICAgICAgIG8gPSBoLnBhcmVudCA9IE1vY2tPcGVuZXIoKQorCisgICAgICAgIGNtZCA9IFtzeXMuZXhlY3V0YWJsZSwgIi1jIiwgciJwYXNzIl0KKyAgICAgICAgZm9yIGhlYWRlcnMgaW4ge30sIHsiQ29udGVudC1MZW5ndGgiOiAzMH06CisgICAgICAgICAgICB3aXRoIHN1YnByb2Nlc3MuUG9wZW4oY21kLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKSBhcyBwcm9jOgorICAgICAgICAgICAgICAgIHJlcSA9IFJlcXVlc3QoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCBwcm9jLnN0ZG91dCwgaGVhZGVycykKKyAgICAgICAgICAgICAgICBuZXdyZXEgPSBoLmRvX3JlcXVlc3RfKHJlcSkKKyAgICAgICAgICAgICAgICBpZiBub3QgaGVhZGVyczoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdyZXEuZ2V0X2hlYWRlcignQ29udGVudC1sZW5ndGgnKSwgTm9uZSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdyZXEuZ2V0X2hlYWRlcignVHJhbnNmZXItZW5jb2RpbmcnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2h1bmtlZCcpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQobmV3cmVxLmdldF9oZWFkZXIoJ0NvbnRlbnQtbGVuZ3RoJykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMwKQorCisgICAgZGVmIHRlc3RfaHR0cF9ib2R5X2l0ZXJhYmxlKHNlbGYpOgorICAgICAgICAjIEdlbmVyaWMgaXRlcmFibGUuICBUaGVyZSBpcyBubyB3YXkgdG8gZGV0ZXJtaW5lIHRoZSBjb250ZW50CisgICAgICAgICMgbGVuZ3RoIHVwIGZyb250LiAgRmFsbCBiYWNrIHRvIFRyYW5zZmVyLWVuY29kaW5nIGNodW5rZWQuCisKKyAgICAgICAgaCA9IHVybGxpYi5yZXF1ZXN0LkFic3RyYWN0SFRUUEhhbmRsZXIoKQorICAgICAgICBvID0gaC5wYXJlbnQgPSBNb2NrT3BlbmVyKCkKKworICAgICAgICBkZWYgaXRlcmFibGVfYm9keSgpOgorICAgICAgICAgICAgeWllbGQgYiJvbmUiCisKKyAgICAgICAgZm9yIGhlYWRlcnMgaW4ge30sIHsiQ29udGVudC1MZW5ndGgiOiAxMX06CisgICAgICAgICAgICByZXEgPSBSZXF1ZXN0KCJodHRwOi8vZXhhbXBsZS5jb20vIiwgaXRlcmFibGVfYm9keSgpLCBoZWFkZXJzKQorICAgICAgICAgICAgbmV3cmVxID0gaC5kb19yZXF1ZXN0XyhyZXEpCisgICAgICAgICAgICBpZiBub3QgaGVhZGVyczoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld3JlcS5nZXRfaGVhZGVyKCdDb250ZW50LWxlbmd0aCcpLCBOb25lKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3cmVxLmdldF9oZWFkZXIoJ1RyYW5zZmVyLWVuY29kaW5nJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2h1bmtlZCcpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KG5ld3JlcS5nZXRfaGVhZGVyKCdDb250ZW50LWxlbmd0aCcpKSwgMTEpCisKKyAgICBkZWYgdGVzdF9odHRwX2JvZHlfZW1wdHlfc2VxKHNlbGYpOgorICAgICAgICAjIFplcm8tbGVuZ3RoIGl0ZXJhYmxlIGJvZHkgc2hvdWxkIGJlIHRyZWF0ZWQgbGlrZSBhbnkgb3RoZXIgaXRlcmFibGUKKyAgICAgICAgaCA9IHVybGxpYi5yZXF1ZXN0LkFic3RyYWN0SFRUUEhhbmRsZXIoKQorICAgICAgICBoLnBhcmVudCA9IE1vY2tPcGVuZXIoKQorICAgICAgICByZXEgPSBoLmRvX3JlcXVlc3RfKFJlcXVlc3QoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAoKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmdldF9oZWFkZXIoIlRyYW5zZmVyLWVuY29kaW5nIiksICJjaHVua2VkIikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyZXEuaGFzX2hlYWRlcigiQ29udGVudC1sZW5ndGgiKSkKKworICAgIGRlZiB0ZXN0X2h0dHBfYm9keV9hcnJheShzZWxmKToKICAgICAgICAgIyBhcnJheS5hcnJheSBJdGVyYWJsZSAtIENvbnRlbnQgTGVuZ3RoIGlzIGNhbGN1bGF0ZWQKIAorICAgICAgICBoID0gdXJsbGliLnJlcXVlc3QuQWJzdHJhY3RIVFRQSGFuZGxlcigpCisgICAgICAgIG8gPSBoLnBhcmVudCA9IE1vY2tPcGVuZXIoKQorCiAgICAgICAgIGl0ZXJhYmxlX2FycmF5ID0gYXJyYXkuYXJyYXkoIkkiLFsxLDIsMyw0XSkKIAogICAgICAgICBmb3IgaGVhZGVycyBpbiB7fSwgeyJDb250ZW50LUxlbmd0aCI6IDE2fToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliMl9sb2NhbG5ldC5weSBiL0xpYi90ZXN0L3Rlc3RfdXJsbGliMl9sb2NhbG5ldC5weQppbmRleCA2OGM1MjNhLi43MGM0YzAxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VybGxpYjJfbG9jYWxuZXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91cmxsaWIyX2xvY2FsbmV0LnB5CkBAIC01NTcsMjYgKzU1NywyOCBAQAogCiAgICAgZGVmIHRlc3RfaHR0cHNfd2l0aF9jYWZpbGUoc2VsZik6CiAgICAgICAgIGhhbmRsZXIgPSBzZWxmLnN0YXJ0X2h0dHBzX3NlcnZlcihjZXJ0ZmlsZT1DRVJUX2xvY2FsaG9zdCkKLSAgICAgICAgIyBHb29kIGNlcnQKLSAgICAgICAgZGF0YSA9IHNlbGYudXJsb3BlbigiaHR0cHM6Ly9sb2NhbGhvc3Q6JXMvYml6YXJyZSIgJSBoYW5kbGVyLnBvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FmaWxlPUNFUlRfbG9jYWxob3N0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsIGIid2UgY2FyZSBhIGJpdCIpCi0gICAgICAgICMgQmFkIGNlcnQKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh1cmxsaWIuZXJyb3IuVVJMRXJyb3IpIGFzIGNtOgotICAgICAgICAgICAgc2VsZi51cmxvcGVuKCJodHRwczovL2xvY2FsaG9zdDolcy9iaXphcnJlIiAlIGhhbmRsZXIucG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjYWZpbGU9Q0VSVF9mYWtlaG9zdG5hbWUpCi0gICAgICAgICMgR29vZCBjZXJ0LCBidXQgbWlzbWF0Y2hpbmcgaG9zdG5hbWUKLSAgICAgICAgaGFuZGxlciA9IHNlbGYuc3RhcnRfaHR0cHNfc2VydmVyKGNlcnRmaWxlPUNFUlRfZmFrZWhvc3RuYW1lKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNzbC5DZXJ0aWZpY2F0ZUVycm9yKSBhcyBjbToKLSAgICAgICAgICAgIHNlbGYudXJsb3BlbigiaHR0cHM6Ly9sb2NhbGhvc3Q6JXMvYml6YXJyZSIgJSBoYW5kbGVyLnBvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY2FmaWxlPUNFUlRfZmFrZWhvc3RuYW1lKQorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgICMgR29vZCBjZXJ0CisgICAgICAgICAgICBkYXRhID0gc2VsZi51cmxvcGVuKCJodHRwczovL2xvY2FsaG9zdDolcy9iaXphcnJlIiAlIGhhbmRsZXIucG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FmaWxlPUNFUlRfbG9jYWxob3N0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCBiIndlIGNhcmUgYSBiaXQiKQorICAgICAgICAgICAgIyBCYWQgY2VydAorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh1cmxsaWIuZXJyb3IuVVJMRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIHNlbGYudXJsb3BlbigiaHR0cHM6Ly9sb2NhbGhvc3Q6JXMvYml6YXJyZSIgJSBoYW5kbGVyLnBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhZmlsZT1DRVJUX2Zha2Vob3N0bmFtZSkKKyAgICAgICAgICAgICMgR29vZCBjZXJ0LCBidXQgbWlzbWF0Y2hpbmcgaG9zdG5hbWUKKyAgICAgICAgICAgIGhhbmRsZXIgPSBzZWxmLnN0YXJ0X2h0dHBzX3NlcnZlcihjZXJ0ZmlsZT1DRVJUX2Zha2Vob3N0bmFtZSkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3NsLkNlcnRpZmljYXRlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIHNlbGYudXJsb3BlbigiaHR0cHM6Ly9sb2NhbGhvc3Q6JXMvYml6YXJyZSIgJSBoYW5kbGVyLnBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhZmlsZT1DRVJUX2Zha2Vob3N0bmFtZSkKIAogICAgIGRlZiB0ZXN0X2h0dHBzX3dpdGhfY2FkZWZhdWx0KHNlbGYpOgogICAgICAgICBoYW5kbGVyID0gc2VsZi5zdGFydF9odHRwc19zZXJ2ZXIoY2VydGZpbGU9Q0VSVF9sb2NhbGhvc3QpCiAgICAgICAgICMgU2VsZi1zaWduZWQgY2VydCBzaG91bGQgZmFpbCB2ZXJpZmljYXRpb24gd2l0aCBzeXN0ZW0gY2VydGlmaWNhdGUgc3RvcmUKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh1cmxsaWIuZXJyb3IuVVJMRXJyb3IpIGFzIGNtOgotICAgICAgICAgICAgc2VsZi51cmxvcGVuKCJodHRwczovL2xvY2FsaG9zdDolcy9iaXphcnJlIiAlIGhhbmRsZXIucG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjYWRlZmF1bHQ9VHJ1ZSkKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHVybGxpYi5lcnJvci5VUkxFcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgc2VsZi51cmxvcGVuKCJodHRwczovL2xvY2FsaG9zdDolcy9iaXphcnJlIiAlIGhhbmRsZXIucG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FkZWZhdWx0PVRydWUpCiAKICAgICBkZWYgdGVzdF9odHRwc19zbmkoc2VsZik6CiAgICAgICAgIGlmIHNzbCBpcyBOb25lOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91cmxsaWJuZXQucHkgYi9MaWIvdGVzdC90ZXN0X3VybGxpYm5ldC5weQppbmRleCBiODExOTMwLi45NDk3MTZjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VybGxpYm5ldC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VybGxpYm5ldC5weQpAQCAtNCw3ICs0LDYgQEAKIGltcG9ydCBjb250ZXh0bGliCiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgdXJsbGliLnJlcXVlc3QKLWltcG9ydCBzeXMKIGltcG9ydCBvcwogaW1wb3J0IGVtYWlsLm1lc3NhZ2UKIGltcG9ydCB0aW1lCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VybHBhcnNlLnB5IGIvTGliL3Rlc3QvdGVzdF91cmxwYXJzZS5weQppbmRleCA3MWFiYzE0Li45OWM1YzAzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VybHBhcnNlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdXJscGFyc2UucHkKQEAgLTYwNywyOSArNjA3LDI3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5wb3J0LCA4MCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLmdldHVybCgpLCB1cmwpCiAKLSAgICAgICAgIyBWZXJpZnkgYW4gaWxsZWdhbCBwb3J0IGlzIHJldHVybmVkIGFzIE5vbmUKKyAgICAgICAgIyBWZXJpZnkgYW4gaWxsZWdhbCBwb3J0IHJhaXNlcyBWYWx1ZUVycm9yCiAgICAgICAgIHVybCA9IGIiSFRUUDovL1dXVy5QWVRIT04uT1JHOjY1NTM2L2RvYy8jZnJhZyIKICAgICAgICAgcCA9IHVybGxpYi5wYXJzZS51cmxzcGxpdCh1cmwpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5wb3J0LCBOb25lKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgIm91dCBvZiByYW5nZSIpOgorICAgICAgICAgICAgcC5wb3J0CiAKICAgICBkZWYgdGVzdF9hdHRyaWJ1dGVzX2JhZF9wb3J0KHNlbGYpOgotICAgICAgICAiIiJDaGVjayBoYW5kbGluZyBvZiBub24taW50ZWdlciBwb3J0cy4iIiIKLSAgICAgICAgcCA9IHVybGxpYi5wYXJzZS51cmxzcGxpdCgiaHR0cDovL3d3dy5leGFtcGxlLm5ldDpmb28iKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAubmV0bG9jLCAid3d3LmV4YW1wbGUubmV0OmZvbyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxhbWJkYTogcC5wb3J0KQotCi0gICAgICAgIHAgPSB1cmxsaWIucGFyc2UudXJscGFyc2UoImh0dHA6Ly93d3cuZXhhbXBsZS5uZXQ6Zm9vIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLm5ldGxvYywgInd3dy5leGFtcGxlLm5ldDpmb28iKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsYW1iZGE6IHAucG9ydCkKLQotICAgICAgICAjIE9uY2UgYWdhaW4sIHJlcGVhdCBvdXJzZWx2ZXMgdG8gdGVzdCBieXRlcwotICAgICAgICBwID0gdXJsbGliLnBhcnNlLnVybHNwbGl0KGIiaHR0cDovL3d3dy5leGFtcGxlLm5ldDpmb28iKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAubmV0bG9jLCBiInd3dy5leGFtcGxlLm5ldDpmb28iKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsYW1iZGE6IHAucG9ydCkKLQotICAgICAgICBwID0gdXJsbGliLnBhcnNlLnVybHBhcnNlKGIiaHR0cDovL3d3dy5leGFtcGxlLm5ldDpmb28iKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAubmV0bG9jLCBiInd3dy5leGFtcGxlLm5ldDpmb28iKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsYW1iZGE6IHAucG9ydCkKKyAgICAgICAgIiIiQ2hlY2sgaGFuZGxpbmcgb2YgaW52YWxpZCBwb3J0cy4iIiIKKyAgICAgICAgZm9yIGJ5dGVzIGluIChGYWxzZSwgVHJ1ZSk6CisgICAgICAgICAgICBmb3IgcGFyc2UgaW4gKHVybGxpYi5wYXJzZS51cmxzcGxpdCwgdXJsbGliLnBhcnNlLnVybHBhcnNlKToKKyAgICAgICAgICAgICAgICBmb3IgcG9ydCBpbiAoImZvbyIsICIxLjUiLCAiLTEiLCAiMHgxMCIpOgorICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChieXRlcz1ieXRlcywgcGFyc2U9cGFyc2UsIHBvcnQ9cG9ydCk6CisgICAgICAgICAgICAgICAgICAgICAgICBuZXRsb2MgPSAid3d3LmV4YW1wbGUubmV0OiIgKyBwb3J0CisgICAgICAgICAgICAgICAgICAgICAgICB1cmwgPSAiaHR0cDovLyIgKyBuZXRsb2MKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGJ5dGVzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldGxvYyA9IG5ldGxvYy5lbmNvZGUoImFzY2lpIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmwgPSB1cmwuZW5jb2RlKCJhc2NpaSIpCisgICAgICAgICAgICAgICAgICAgICAgICBwID0gcGFyc2UodXJsKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLm5ldGxvYywgbmV0bG9jKQorICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLnBvcnQKIAogICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZXNfd2l0aG91dF9uZXRsb2Moc2VsZik6CiAgICAgICAgICMgVGhpcyBleGFtcGxlIGlzIHN0cmFpZ2h0IGZyb20gUkZDIDMyNjEuICBJdCBsb29rcyBsaWtlIGl0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VzZXJkaWN0LnB5IGIvTGliL3Rlc3QvdGVzdF91c2VyZGljdC5weQppbmRleCA4MzU3ZjhiLi42NjJjN2Y2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VzZXJkaWN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdXNlcmRpY3QucHkKQEAgLTEsNiArMSw2IEBACiAjIENoZWNrIGV2ZXJ5IHBhdGggdGhyb3VnaCBldmVyeSBtZXRob2Qgb2YgVXNlckRpY3QKIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0LCBtYXBwaW5nX3Rlc3RzCitmcm9tIHRlc3QgaW1wb3J0IG1hcHBpbmdfdGVzdHMKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IGNvbGxlY3Rpb25zCiAKQEAgLTMwLDcgKzMwLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2xsZWN0aW9ucy5Vc2VyRGljdChvbmU9MSwgdHdvPTIpLCBkMikKICAgICAgICAgIyBpdGVtIHNlcXVlbmNlIGNvbnN0cnVjdG9yCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29sbGVjdGlvbnMuVXNlckRpY3QoWygnb25lJywxKSwgKCd0d28nLDIpXSksIGQyKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAiJ2RpY3QnIik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywgIidkaWN0JyIpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2xsZWN0aW9ucy5Vc2VyRGljdChkaWN0PVsoJ29uZScsMSksICgndHdvJywyKV0pLCBkMikKICAgICAgICAgIyBib3RoIHRvZ2V0aGVyCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29sbGVjdGlvbnMuVXNlckRpY3QoWygnb25lJywxKSwgKCd0d28nLDIpXSwgdHdvPTMsIHRocmVlPTUpLCBkMykKQEAgLTE0OSw3ICsxNDksNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIFsoJ2RpY3QnLCA0MildKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29sbGVjdGlvbnMuVXNlckRpY3Qoe30sIGRpY3Q9Tm9uZSkuaXRlbXMoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgWygnZGljdCcsIE5vbmUpXSkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgIidkaWN0JyIpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsICInZGljdCciKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb2xsZWN0aW9ucy5Vc2VyRGljdChkaWN0PXsnYSc6IDQyfSkuaXRlbXMoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoJ2EnLCA0MildKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvbGxlY3Rpb25zLlVzZXJEaWN0LCA0MikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXNlcmxpc3QucHkgYi9MaWIvdGVzdC90ZXN0X3VzZXJsaXN0LnB5CmluZGV4IGY5MmU0ZDMuLjhkZTZjMTQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdXNlcmxpc3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91c2VybGlzdC5weQpAQCAtMSw3ICsxLDcgQEAKICMgQ2hlY2sgZXZlcnkgcGF0aCB0aHJvdWdoIGV2ZXJ5IG1ldGhvZCBvZiBVc2VyTGlzdAogCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBVc2VyTGlzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0LCBsaXN0X3Rlc3RzCitmcm9tIHRlc3QgaW1wb3J0IGxpc3RfdGVzdHMKIGltcG9ydCB1bml0dGVzdAogCiBjbGFzcyBVc2VyTGlzdFRlc3QobGlzdF90ZXN0cy5Db21tb25UZXN0KToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXNlcnN0cmluZy5weSBiL0xpYi90ZXN0L3Rlc3RfdXNlcnN0cmluZy5weQppbmRleCA5YmM4ZWRkLi43MTUyODIyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VzZXJzdHJpbmcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91c2Vyc3RyaW5nLnB5CkBAIC0xLDkgKzEsOCBAQAogIyBVc2VyU3RyaW5nIGlzIGEgd3JhcHBlciBhcm91bmQgdGhlIG5hdGl2ZSBidWlsdGluIHN0cmluZyB0eXBlLgogIyBVc2VyU3RyaW5nIGluc3RhbmNlcyBzaG91bGQgYmVoYXZlIHNpbWlsYXIgdG8gYnVpbHRpbiBzdHJpbmcgb2JqZWN0cy4KIAotaW1wb3J0IHN0cmluZwogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQsIHN0cmluZ190ZXN0cworZnJvbSB0ZXN0IGltcG9ydCBzdHJpbmdfdGVzdHMKIAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgVXNlclN0cmluZwogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BlcDMxMjAucHkgYi9MaWIvdGVzdC90ZXN0X3V0Zjhzb3VyY2UucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi90ZXN0L3Rlc3RfcGVwMzEyMC5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF91dGY4c291cmNlLnB5CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3V1LnB5IGIvTGliL3Rlc3QvdGVzdF91dS5weQppbmRleCAyNWZmZmJmLi5hZDJmMmM1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3V1LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdXUucHkKQEAgLTgsNyArOCw2IEBACiAKIGltcG9ydCBzeXMsIG9zCiBpbXBvcnQgdXUKLWZyb20gaW8gaW1wb3J0IEJ5dGVzSU8KIGltcG9ydCBpbwogCiBwbGFpbnRleHQgPSBiIlRoZSBzbW9vdGgtc2NhbGVkIHB5dGhvbiBjcmVwdCBvdmVyIHRoZSBzbGVlcGluZyBkb2dcbiIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdmVudi5weSBiL0xpYi90ZXN0L3Rlc3RfdmVudi5weQppbmRleCAzOTk5ZDFmLi4wZmY5NzhmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3ZlbnYucHkKKysrIGIvTGliL3Rlc3QvdGVzdF92ZW52LnB5CkBAIC0xNSwxNiArMTUsOSBAQAogaW1wb3J0IHRlbXBmaWxlCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgKGNhcHR1cmVkX3N0ZG91dCwgY2FwdHVyZWRfc3RkZXJyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5fc3ltbGluaywgRW52aXJvbm1lbnRWYXJHdWFyZCwgcm10cmVlKQotaW1wb3J0IHRleHR3cmFwCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB2ZW52CiAKLSMgcGlwIGN1cnJlbnRseSByZXF1aXJlcyBzc2wgc3VwcG9ydCwgc28gd2UgZW5zdXJlIHdlIGhhbmRsZQotIyBpdCBiZWluZyBtaXNzaW5nIChodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTk3NDQpCi10cnk6Ci0gICAgaW1wb3J0IHNzbAotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIHNzbCA9IE5vbmUKIAogdHJ5OgogICAgIGltcG9ydCB0aHJlYWRpbmcKQEAgLTM5LDE1ICszMiw5IEBACiBza2lwSW5WZW52ID0gdW5pdHRlc3Quc2tpcElmKHN5cy5wcmVmaXggIT0gc3lzLmJhc2VfcHJlZml4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVGVzdCBub3QgYXBwcm9wcmlhdGUgaW4gYSB2ZW52JykKIAotIyBvcy5wYXRoLmV4aXN0cygnbnVsJykgaXMgRmFsc2U6IGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyMDU0MQotaWYgb3MuZGV2bnVsbC5sb3dlcigpID09ICdudWwnOgotICAgIGZhaWxzT25XaW5kb3dzID0gdW5pdHRlc3QuZXhwZWN0ZWRGYWlsdXJlCi1lbHNlOgotICAgIGRlZiBmYWlsc09uV2luZG93cyhmKToKLSAgICAgICAgcmV0dXJuIGYKLQogY2xhc3MgQmFzZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICIiIkJhc2UgY2xhc3MgZm9yIHZlbnYgdGVzdHMuIiIiCisgICAgbWF4RGlmZiA9IDgwICogNTAKIAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5lbnZfZGlyID0gb3MucGF0aC5yZWFscGF0aCh0ZW1wZmlsZS5ta2R0ZW1wKCkpCkBAIC01Nyw3ICs0NCw3IEBACiAgICAgICAgICAgICBzZWxmLmluY2x1ZGUgPSAnSW5jbHVkZScKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuYmluZGlyID0gJ2JpbicKLSAgICAgICAgICAgIHNlbGYubGliID0gKCdsaWInLCAncHl0aG9uJXMnICUgc3lzLnZlcnNpb25bOjNdKQorICAgICAgICAgICAgc2VsZi5saWIgPSAoJ2xpYicsICdweXRob24lZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXSkKICAgICAgICAgICAgIHNlbGYuaW5jbHVkZSA9ICdpbmNsdWRlJwogICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicgYW5kICdfX1BZVkVOVl9MQVVOQ0hFUl9fJyBpbiBvcy5lbnZpcm9uOgogICAgICAgICAgICAgZXhlY3V0YWJsZSA9IG9zLmVudmlyb25bJ19fUFlWRU5WX0xBVU5DSEVSX18nXQpAQCAtMTIxLDYgKzEwOCwxNyBAQAogICAgICAgICAgICAgcHJpbnQoJyAgICAlcicgJSBvcy5saXN0ZGlyKGJkKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGZuKSwgJ0ZpbGUgJXIgc2hvdWxkIGV4aXN0LicgJSBmbikKIAorICAgIGRlZiB0ZXN0X3Byb21wdChzZWxmKToKKyAgICAgICAgZW52X25hbWUgPSBvcy5wYXRoLnNwbGl0KHNlbGYuZW52X2RpcilbMV0KKworICAgICAgICBidWlsZGVyID0gdmVudi5FbnZCdWlsZGVyKCkKKyAgICAgICAgY29udGV4dCA9IGJ1aWxkZXIuZW5zdXJlX2RpcmVjdG9yaWVzKHNlbGYuZW52X2RpcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb250ZXh0LnByb21wdCwgJyglcykgJyAlIGVudl9uYW1lKQorCisgICAgICAgIGJ1aWxkZXIgPSB2ZW52LkVudkJ1aWxkZXIocHJvbXB0PSdNeSBwcm9tcHQnKQorICAgICAgICBjb250ZXh0ID0gYnVpbGRlci5lbnN1cmVfZGlyZWN0b3JpZXMoc2VsZi5lbnZfZGlyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRleHQucHJvbXB0LCAnKE15IHByb21wdCkgJykKKwogICAgIEBza2lwSW5WZW52CiAgICAgZGVmIHRlc3RfcHJlZml4ZXMoc2VsZik6CiAgICAgICAgICIiIgpAQCAtMzE4LDE4ICszMTYsMjEgQEAKICAgICAgICAgc2VsZi5ydW5fd2l0aF9jYXB0dXJlKHZlbnYuY3JlYXRlLCBzZWxmLmVudl9kaXIsIHdpdGhfcGlwPUZhbHNlKQogICAgICAgICBzZWxmLmFzc2VydF9waXBfbm90X2luc3RhbGxlZCgpCiAKLSAgICBAZmFpbHNPbldpbmRvd3MKLSAgICBkZWYgdGVzdF9kZXZudWxsX2V4aXN0c19hbmRfaXNfZW1wdHkoc2VsZik6CisgICAgZGVmIHRlc3RfZGV2bnVsbChzZWxmKToKICAgICAgICAgIyBGaXggZm9yIGlzc3VlICMyMDA1MyB1c2VzIG9zLmRldm51bGwgdG8gZm9yY2UgYSBjb25maWcgZmlsZSB0bwogICAgICAgICAjIGFwcGVhciBlbXB0eS4gSG93ZXZlciBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjA1NDEgbWVhbnMKICAgICAgICAgIyB0aGF0IGRvZXNuJ3QgY3VycmVudGx5IHdvcmsgcHJvcGVybHkgb24gV2luZG93cy4gT25jZSB0aGF0IGlzCiAgICAgICAgICMgZml4ZWQsIHRoZSAid2luX2xvY2F0aW9uIiBwYXJ0IG9mIHRlc3Rfd2l0aF9waXAgc2hvdWxkIGJlIHJlc3RvcmVkCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5kZXZudWxsKSkKICAgICAgICAgd2l0aCBvcGVuKG9zLmRldm51bGwsICJyYiIpIGFzIGY6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBiIiIpCiAKLSAgICAjIFJlcXVlc3RpbmcgcGlwIGZhaWxzIHdpdGhvdXQgU1NMIChodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTk3NDQpCi0gICAgQHVuaXR0ZXN0LnNraXBJZihzc2wgaXMgTm9uZSwgZW5zdXJlcGlwLl9NSVNTSU5HX1NTTF9NRVNTQUdFKQorICAgICAgICAjIElzc3VlICMyMDU0MTogb3MucGF0aC5leGlzdHMoJ251bCcpIGlzIEZhbHNlIG9uIFdpbmRvd3MKKyAgICAgICAgaWYgb3MuZGV2bnVsbC5sb3dlcigpID09ICdudWwnOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhvcy5kZXZudWxsKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5kZXZudWxsKSkKKworCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnc29tZSBkZXBlbmRlbmNpZXMgb2YgcGlwIGltcG9ydCB0aHJlYWRpbmcnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIG1vZHVsZSB1bmNvbmRpdGlvbmFsbHknKQogICAgICMgSXNzdWUgIzI2NjEwOiBwaXAvcGVwNDI1dGFncy5weSByZXF1aXJlcyBjdHlwZXMKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfd2FybmluZ3MvX19pbml0X18ucHkgYi9MaWIvdGVzdC90ZXN0X3dhcm5pbmdzL19faW5pdF9fLnB5CmluZGV4IDg0YTZmYjUuLjBjZGRmNGEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfd2FybmluZ3MvX19pbml0X18ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF93YXJuaW5ncy9fX2luaXRfXy5weQpAQCAtMiw3ICsyLDkgQEAKIGltcG9ydCBsaW5lY2FjaGUKIGltcG9ydCBvcwogZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KK2ltcG9ydCByZQogaW1wb3J0IHN5cworaW1wb3J0IHRleHR3cmFwCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaywgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlCkBAIC03MjAsNiArNzIyLDE3IEBACiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gc3RyZWFtLmdldHZhbHVlKCkKICAgICAgICAgc2VsZi5hc3NlcnRJbih0ZXh0LCByZXN1bHQpCiAKKyAgICBkZWYgdGVzdF9zaG93d2Fybm1zZ19taXNzaW5nKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBfc2hvd3dhcm5tc2coKSBtaXNzaW5nIGlzIG9rYXkuCisgICAgICAgIHRleHQgPSAnZGVsIF9zaG93d2Fybm1zZyB0ZXN0JworICAgICAgICB3aXRoIG9yaWdpbmFsX3dhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKG1vZHVsZT1zZWxmLm1vZHVsZSk6CisgICAgICAgICAgICBzZWxmLm1vZHVsZS5maWx0ZXJ3YXJuaW5ncygiYWx3YXlzIiwgY2F0ZWdvcnk9VXNlcldhcm5pbmcpCisgICAgICAgICAgICBkZWwgc2VsZi5tb2R1bGUuX3Nob3d3YXJubXNnCisgICAgICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfb3V0cHV0KCdzdGRlcnInKSBhcyBzdHJlYW06CisgICAgICAgICAgICAgICAgc2VsZi5tb2R1bGUud2Fybih0ZXh0KQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IHN0cmVhbS5nZXR2YWx1ZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4odGV4dCwgcmVzdWx0KQorCiAgICAgZGVmIHRlc3Rfc2hvd3dhcm5pbmdfbm90X2NhbGxhYmxlKHNlbGYpOgogICAgICAgICB3aXRoIG9yaWdpbmFsX3dhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKG1vZHVsZT1zZWxmLm1vZHVsZSk6CiAgICAgICAgICAgICBzZWxmLm1vZHVsZS5maWx0ZXJ3YXJuaW5ncygiYWx3YXlzIiwgY2F0ZWdvcnk9VXNlcldhcm5pbmcpCkBAIC04MjEsMTIgKzgzNCw0NCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlX29iamVjdCwgZXhwZWN0ZWRfZmlsZV9saW5lKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdCwgZmlsZV9vYmplY3QuZ2V0dmFsdWUoKSkKIAorCiBjbGFzcyBDV2FybmluZ3NEaXNwbGF5VGVzdHMoV2FybmluZ3NEaXNwbGF5VGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBtb2R1bGUgPSBjX3dhcm5pbmdzCiAKIGNsYXNzIFB5V2FybmluZ3NEaXNwbGF5VGVzdHMoV2FybmluZ3NEaXNwbGF5VGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBtb2R1bGUgPSBweV93YXJuaW5ncwogCisgICAgZGVmIHRlc3RfdHJhY2VtYWxsb2Moc2VsZik6CisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgc3VwcG9ydC5URVNURk4pCisKKyAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuVEVTVEZOLCAndycpIGFzIGZwOgorICAgICAgICAgICAgZnAud3JpdGUodGV4dHdyYXAuZGVkZW50KCIiIgorICAgICAgICAgICAgICAgIGRlZiBmdW5jKCk6CisgICAgICAgICAgICAgICAgICAgIGYgPSBvcGVuKF9fZmlsZV9fKQorICAgICAgICAgICAgICAgICAgICAjIEVtaXQgUmVzb3VyY2VXYXJuaW5nCisgICAgICAgICAgICAgICAgICAgIGYgPSBOb25lCisKKyAgICAgICAgICAgICAgICBmdW5jKCkKKyAgICAgICAgICAgICIiIikpCisKKyAgICAgICAgcmVzID0gYXNzZXJ0X3B5dGhvbl9vaygnLVdkJywgJy1YJywgJ3RyYWNlbWFsbG9jPTInLCBzdXBwb3J0LlRFU1RGTikKKworICAgICAgICBzdGRlcnIgPSByZXMuZXJyLmRlY29kZSgnYXNjaWknLCAncmVwbGFjZScpCisgICAgICAgICMgbm9ybWFsaXplIG5ld2xpbmVzCisgICAgICAgIHN0ZGVyciA9ICdcbicuam9pbihzdGRlcnIuc3BsaXRsaW5lcygpKQorICAgICAgICBzdGRlcnIgPSByZS5zdWIoJzwuKj4nLCAnPC4uLj4nLCBzdGRlcnIpCisgICAgICAgIGV4cGVjdGVkID0gdGV4dHdyYXAuZGVkZW50KCcnJworICAgICAgICAgICAge2ZuYW1lfTo1OiBSZXNvdXJjZVdhcm5pbmc6IHVuY2xvc2VkIGZpbGUgPC4uLj4KKyAgICAgICAgICAgICAgZiA9IE5vbmUKKyAgICAgICAgICAgIE9iamVjdCBhbGxvY2F0ZWQgYXQgKG1vc3QgcmVjZW50IGNhbGwgZmlyc3QpOgorICAgICAgICAgICAgICBGaWxlICJ7Zm5hbWV9IiwgbGluZW5vIDMKKyAgICAgICAgICAgICAgICBmID0gb3BlbihfX2ZpbGVfXykKKyAgICAgICAgICAgICAgRmlsZSAie2ZuYW1lfSIsIGxpbmVubyA3CisgICAgICAgICAgICAgICAgZnVuYygpCisgICAgICAgICcnJykKKyAgICAgICAgZXhwZWN0ZWQgPSBleHBlY3RlZC5mb3JtYXQoZm5hbWU9c3VwcG9ydC5URVNURk4pLnN0cmlwKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRlcnIsIGV4cGVjdGVkKQorCiAKIGNsYXNzIENhdGNoV2FybmluZ1Rlc3RzKEJhc2VUZXN0KToKIApAQCAtODk5LDYgKzk0NCw1MSBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh3bW9kLmZpbHRlcnMgaXMgbm90IG9yaWdfZmlsdGVycykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh3bW9kLmZpbHRlcnMgaXMgb3JpZ19maWx0ZXJzKQogCisgICAgZGVmIHRlc3RfcmVjb3JkX292ZXJyaWRlX3Nob3d3YXJuaW5nX2JlZm9yZShzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMjg4MzU6IElmIHdhcm5pbmdzLnNob3d3YXJuaW5nKCkgd2FzIG92ZXJyaWRlbiwgbWFrZSBzdXJlCisgICAgICAgICMgdGhhdCBjYXRjaF93YXJuaW5ncyhyZWNvcmQ9VHJ1ZSkgb3ZlcnJpZGVzIGl0IGFnYWluLgorICAgICAgICB0ZXh0ID0gIlRoaXMgaXMgYSB3YXJuaW5nIgorICAgICAgICB3bW9kID0gc2VsZi5tb2R1bGUKKyAgICAgICAgbXlfbG9nID0gW10KKworICAgICAgICBkZWYgbXlfbG9nZ2VyKG1lc3NhZ2UsIGNhdGVnb3J5LCBmaWxlbmFtZSwgbGluZW5vLCBmaWxlPU5vbmUsIGxpbmU9Tm9uZSk6CisgICAgICAgICAgICBub25sb2NhbCBteV9sb2cKKyAgICAgICAgICAgIG15X2xvZy5hcHBlbmQobWVzc2FnZSkKKworICAgICAgICAjIE92ZXJyaWRlIHdhcm5pbmdzLnNob3d3YXJuaW5nKCkgYmVmb3JlIGNhbGxpbmcgY2F0Y2hfd2FybmluZ3MoKQorICAgICAgICB3aXRoIHN1cHBvcnQuc3dhcF9hdHRyKHdtb2QsICdzaG93d2FybmluZycsIG15X2xvZ2dlcik6CisgICAgICAgICAgICB3aXRoIHdtb2QuY2F0Y2hfd2FybmluZ3MobW9kdWxlPXdtb2QsIHJlY29yZD1UcnVlKSBhcyBsb2c6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh3bW9kLnNob3d3YXJuaW5nLCBteV9sb2dnZXIpCisKKyAgICAgICAgICAgICAgICB3bW9kLnNpbXBsZWZpbHRlcigiYWx3YXlzIikKKyAgICAgICAgICAgICAgICB3bW9kLndhcm4odGV4dCkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh3bW9kLnNob3d3YXJuaW5nLCBteV9sb2dnZXIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obG9nKSwgMSwgbG9nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvZ1swXS5tZXNzYWdlLmFyZ3NbMF0sIHRleHQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXlfbG9nLCBbXSkKKworICAgIGRlZiB0ZXN0X3JlY29yZF9vdmVycmlkZV9zaG93d2FybmluZ19pbnNpZGUoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzI4ODM1OiBJdCBpcyBwb3NzaWJsZSB0byBvdmVycmlkZSB3YXJuaW5ncy5zaG93d2FybmluZygpCisgICAgICAgICMgaW4gdGhlIGNhdGNoX3dhcm5pbmdzKHJlY29yZD1UcnVlKSBjb250ZXh0IG1hbmFnZXIuCisgICAgICAgIHRleHQgPSAiVGhpcyBpcyBhIHdhcm5pbmciCisgICAgICAgIHdtb2QgPSBzZWxmLm1vZHVsZQorICAgICAgICBteV9sb2cgPSBbXQorCisgICAgICAgIGRlZiBteV9sb2dnZXIobWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sIGZpbGU9Tm9uZSwgbGluZT1Ob25lKToKKyAgICAgICAgICAgIG5vbmxvY2FsIG15X2xvZworICAgICAgICAgICAgbXlfbG9nLmFwcGVuZChtZXNzYWdlKQorCisgICAgICAgIHdpdGggd21vZC5jYXRjaF93YXJuaW5ncyhtb2R1bGU9d21vZCwgcmVjb3JkPVRydWUpIGFzIGxvZzoKKyAgICAgICAgICAgIHdtb2Quc2ltcGxlZmlsdGVyKCJhbHdheXMiKQorICAgICAgICAgICAgd21vZC5zaG93d2FybmluZyA9IG15X2xvZ2dlcgorICAgICAgICAgICAgd21vZC53YXJuKHRleHQpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obXlfbG9nKSwgMSwgbXlfbG9nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG15X2xvZ1swXS5hcmdzWzBdLCB0ZXh0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvZywgW10pCisKICAgICBkZWYgdGVzdF9jaGVja193YXJuaW5ncyhzZWxmKToKICAgICAgICAgIyBFeHBsaWNpdCB0ZXN0cyBmb3IgdGhlIHRlc3Quc3VwcG9ydCBjb252ZW5pZW5jZSB3cmFwcGVyCiAgICAgICAgIHdtb2QgPSBzZWxmLm1vZHVsZQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF93YXZlLnB5IGIvTGliL3Rlc3QvdGVzdF93YXZlLnB5CmluZGV4IDNlZmY3NzMuLjg2NjZmNzIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfd2F2ZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3dhdmUucHkKQEAgLTEsNiArMSw2IEBACi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgYXVkaW90ZXN0cworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIGF1ZGlvb3AgaW1wb3J0IGJ5dGVzd2FwCiBpbXBvcnQgc3lzCiBpbXBvcnQgd2F2ZQpAQCAtMTAzLDUgKzEwMywxMSBAQAogICAgICAgICBmcmFtZXMgPSBieXRlc3dhcChmcmFtZXMsIDQpCiAKIAorY2xhc3MgTWlzY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgIGJsYWNrbGlzdCA9IHsnV0FWRV9GT1JNQVRfUENNJ30KKyAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgd2F2ZSwgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKworCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF93ZWFrcmVmLnB5IGIvTGliL3Rlc3QvdGVzdF93ZWFrcmVmLnB5CmluZGV4IDI4YTFjYzIuLjkzNDFjNmQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfd2Vha3JlZi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3dlYWtyZWYucHkKQEAgLTk0Myw3ICs5NDMsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIociwgIl9fZGljdF9fIikpCiAKICAgICBkZWYgdGVzdF9zdWJjbGFzc19yZWZzX3dpdGhfY3ljbGUoc2VsZik6Ci0gICAgICAgICMgQnVnICMzMTEwCisgICAgICAgICIiIkNvbmZpcm0gaHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUzMTAwIGlzIGZpeGVkLiIiIgogICAgICAgICAjIEFuIGluc3RhbmNlIG9mIGEgd2Vha3JlZiBzdWJjbGFzcyBjYW4gaGF2ZSBhdHRyaWJ1dGVzLgogICAgICAgICAjIElmIHN1Y2ggYSB3ZWFrcmVmIGhvbGRzIHRoZSBvbmx5IHN0cm9uZyByZWZlcmVuY2UgdG8gdGhlIG9iamVjdCwKICAgICAgICAgIyBkZWxldGluZyB0aGUgd2Vha3JlZiB3aWxsIGRlbGV0ZSB0aGUgb2JqZWN0LiBJbiB0aGlzIGNhc2UsCkBAIC0xMzU3LDEzICsxMzU3LDE2IEBACiAgICAgICAgIG8gPSBPYmplY3QoMTIzNDU2KQogICAgICAgICB3aXRoIHRlc3Rjb250ZXh0KCk6CiAgICAgICAgICAgICBuID0gbGVuKGRpY3QpCi0gICAgICAgICAgICBkaWN0LnBvcGl0ZW0oKQorICAgICAgICAgICAgIyBTaW5jZSB1bmRlcmxheWluZyBkaWN0IGlzIG9yZGVyZWQsIGZpcnN0IGl0ZW0gaXMgcG9wcGVkCisgICAgICAgICAgICBkaWN0LnBvcChuZXh0KGRpY3Qua2V5cygpKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpY3QpLCBuIC0gMSkKICAgICAgICAgICAgIGRpY3Rbb10gPSBvCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkaWN0KSwgbikKKyAgICAgICAgIyBsYXN0IGl0ZW0gaW4gb2JqZWN0cyBpcyByZW1vdmVkIGZyb20gZGljdCBpbiBjb250ZXh0IHNodXRkb3duCiAgICAgICAgIHdpdGggdGVzdGNvbnRleHQoKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpY3QpLCBuIC0gMSkKLSAgICAgICAgICAgIGRpY3QucG9wKG5leHQoZGljdC5rZXlzKCkpKQorICAgICAgICAgICAgIyBUaGVuLCAobywgbykgaXMgcG9wcGVkCisgICAgICAgICAgICBkaWN0LnBvcGl0ZW0oKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGljdCksIG4gLSAyKQogICAgICAgICB3aXRoIHRlc3Rjb250ZXh0KCk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkaWN0KSwgbiAtIDMpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3dlYWtzZXQucHkgYi9MaWIvdGVzdC90ZXN0X3dlYWtzZXQucHkKaW5kZXggOWNlNjcyYi4uNjkxYjk1ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF93ZWFrc2V0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfd2Vha3NldC5weQpAQCAtMSwxMyArMSw2IEBACiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gd2Vha3JlZiBpbXBvcnQgcHJveHksIHJlZiwgV2Vha1NldAotaW1wb3J0IG9wZXJhdG9yCi1pbXBvcnQgY29weQorZnJvbSB3ZWFrcmVmIGltcG9ydCBXZWFrU2V0CiBpbXBvcnQgc3RyaW5nCi1pbXBvcnQgb3MKLWZyb20gcmFuZG9tIGltcG9ydCByYW5kcmFuZ2UsIHNodWZmbGUKLWltcG9ydCBzeXMKLWltcG9ydCB3YXJuaW5ncwotaW1wb3J0IGNvbGxlY3Rpb25zCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBVc2VyU3RyaW5nIGFzIHVzdHIKIGltcG9ydCBnYwogaW1wb3J0IGNvbnRleHRsaWIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfd2luY29uc29sZWlvLnB5IGIvTGliL3Rlc3QvdGVzdF93aW5jb25zb2xlaW8ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjFhMmY3YQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3Rfd2luY29uc29sZWlvLnB5CkBAIC0wLDAgKzEsMTQ3IEBACisnJydUZXN0cyBmb3IgV2luZG93c0NvbnNvbGVJTworJycnCisKK2ltcG9ydCBpbworaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgc3lzCisKK2lmIHN5cy5wbGF0Zm9ybSAhPSAnd2luMzInOgorICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJ0ZXN0IG9ubHkgcmVsZXZhbnQgb24gd2luMzIiKQorCitmcm9tIF90ZXN0Y29uc29sZSBpbXBvcnQgd3JpdGVfaW5wdXQKKworQ29uSU8gPSBpby5fV2luZG93c0NvbnNvbGVJTworCitjbGFzcyBXaW5kb3dzQ29uc29sZUlPVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2FiYyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoQ29uSU8sIGlvLlJhd0lPQmFzZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhDb25JTywgaW8uQnVmZmVyZWRJT0Jhc2UpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoQ29uSU8sIGlvLlRleHRJT0Jhc2UpKQorCisgICAgZGVmIHRlc3Rfb3Blbl9mZChzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZiA9IENvbklPKDApCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgIyBjYW5ub3Qgb3BlbiBjb25zb2xlIGJlY2F1c2UgaXQncyBub3QgYSByZWFsIGNvbnNvbGUKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmLnJlYWRhYmxlKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGYud3JpdGFibGUoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgZi5maWxlbm8oKSkKKyAgICAgICAgICAgIGYuY2xvc2UoKSAgICMgbXVsdGlwbGUgY2xvc2Ugc2hvdWxkIG5vdCBjcmFzaAorICAgICAgICAgICAgZi5jbG9zZSgpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZiA9IENvbklPKDEsICd3JykKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAjIGNhbm5vdCBvcGVuIGNvbnNvbGUgYmVjYXVzZSBpdCdzIG5vdCBhIHJlYWwgY29uc29sZQorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmLnJlYWRhYmxlKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZi53cml0YWJsZSgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBmLmZpbGVubygpKQorICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgICAgICBmLmNsb3NlKCkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBmID0gQ29uSU8oMiwgJ3cnKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICMgY2Fubm90IG9wZW4gY29uc29sZSBiZWNhdXNlIGl0J3Mgbm90IGEgcmVhbCBjb25zb2xlCisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGYucmVhZGFibGUoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmLndyaXRhYmxlKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIGYuZmlsZW5vKCkpCisgICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgICAgIGYuY2xvc2UoKQorCisgICAgZGVmIHRlc3Rfb3Blbl9uYW1lKHNlbGYpOgorICAgICAgICBmID0gQ29uSU8oIkNPTiIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmLnJlYWRhYmxlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi53cml0YWJsZSgpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShmLmZpbGVubygpKQorICAgICAgICBmLmNsb3NlKCkgICAjIG11bHRpcGxlIGNsb3NlIHNob3VsZCBub3QgY3Jhc2gKKyAgICAgICAgZi5jbG9zZSgpCisKKyAgICAgICAgZiA9IENvbklPKCdDT05JTiQnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZi5yZWFkYWJsZSgpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGYud3JpdGFibGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoZi5maWxlbm8oKSkKKyAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIGYuY2xvc2UoKQorCisgICAgICAgIGYgPSBDb25JTygnQ09OT1VUJCcsICd3JykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmLnJlYWRhYmxlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmLndyaXRhYmxlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGYuZmlsZW5vKCkpCisgICAgICAgIGYuY2xvc2UoKQorICAgICAgICBmLmNsb3NlKCkKKworICAgIGRlZiBhc3NlcnRTdGRpblJvdW5kVHJpcChzZWxmLCB0ZXh0KToKKyAgICAgICAgc3RkaW4gPSBvcGVuKCdDT05JTiQnLCAncicpCisgICAgICAgIG9sZF9zdGRpbiA9IHN5cy5zdGRpbgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzeXMuc3RkaW4gPSBzdGRpbgorICAgICAgICAgICAgd3JpdGVfaW5wdXQoCisgICAgICAgICAgICAgICAgc3RkaW4uYnVmZmVyLnJhdywKKyAgICAgICAgICAgICAgICAodGV4dCArICdcclxuJykuZW5jb2RlKCd1dGYtMTYtbGUnLCAnc3Vycm9nYXRlcGFzcycpCisgICAgICAgICAgICApCisgICAgICAgICAgICBhY3R1YWwgPSBpbnB1dCgpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzeXMuc3RkaW4gPSBvbGRfc3RkaW4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWwsIHRleHQpCisKKyAgICBkZWYgdGVzdF9pbnB1dChzZWxmKToKKyAgICAgICAgIyBBU0NJSQorICAgICAgICBzZWxmLmFzc2VydFN0ZGluUm91bmRUcmlwKCdhYmMxMjMnKQorICAgICAgICAjIE5vbi1BU0NJSQorICAgICAgICBzZWxmLmFzc2VydFN0ZGluUm91bmRUcmlwKCfPvNGe0KLOu9Ck0JknKQorICAgICAgICAjIENvbWJpbmluZyBjaGFyYWN0ZXJzCisgICAgICAgIHNlbGYuYXNzZXJ0U3RkaW5Sb3VuZFRyaXAoJ0HNj0Ig76yWzLNBQcydJykKKyAgICAgICAgIyBOb24tQk1QCisgICAgICAgIHNlbGYuYXNzZXJ0U3RkaW5Sb3VuZFRyaXAoJ1xVMDAxMDAwMDBcVTAwMTBmZmZmXFUwMDEwZmZmZCcpCisKKyAgICBkZWYgdGVzdF9wYXJ0aWFsX3JlYWRzKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCByZWFkaW5nIGxlc3MgdGhhbiAxIGZ1bGwgY2hhcmFjdGVyIHdvcmtzIHdoZW4gc3RkaW4KKyAgICAgICAgIyBjb250YWlucyBtdWx0aWJ5dGUgVVRGLTggc2VxdWVuY2VzCisgICAgICAgIHNvdXJjZSA9ICfPvNGe0KLOu9Ck0JlcclxuJy5lbmNvZGUoJ3V0Zi0xNi1sZScpCisgICAgICAgIGV4cGVjdGVkID0gJ8+80Z7Qos670KTQmVxyXG4nLmVuY29kZSgndXRmLTgnKQorICAgICAgICBmb3IgcmVhZF9jb3VudCBpbiByYW5nZSgxLCAxNik6CisgICAgICAgICAgICB3aXRoIG9wZW4oJ0NPTklOJCcsICdyYicsIGJ1ZmZlcmluZz0wKSBhcyBzdGRpbjoKKyAgICAgICAgICAgICAgICB3cml0ZV9pbnB1dChzdGRpbiwgc291cmNlKQorCisgICAgICAgICAgICAgICAgYWN0dWFsID0gYicnCisgICAgICAgICAgICAgICAgd2hpbGUgbm90IGFjdHVhbC5lbmRzd2l0aChiJ1xuJyk6CisgICAgICAgICAgICAgICAgICAgIGIgPSBzdGRpbi5yZWFkKHJlYWRfY291bnQpCisgICAgICAgICAgICAgICAgICAgIGFjdHVhbCArPSBiCisKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsICdzdGRpbi5yZWFkKHt9KScuZm9ybWF0KHJlYWRfY291bnQpKQorCisgICAgZGVmIHRlc3RfcGFydGlhbF9zdXJyb2dhdGVfcmVhZHMoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHJlYWRpbmcgbGVzcyB0aGFuIDEgZnVsbCBjaGFyYWN0ZXIgd29ya3Mgd2hlbiBzdGRpbgorICAgICAgICAjIGNvbnRhaW5zIHN1cnJvZ2F0ZSBwYWlycyB0aGF0IGNhbm5vdCBiZSBkZWNvZGVkIHRvIFVURi04IHdpdGhvdXQKKyAgICAgICAgIyByZWFkaW5nIGFuIGV4dHJhIGNoYXJhY3Rlci4KKyAgICAgICAgc291cmNlID0gJ1xVMDAxMDFGRkZcVTAwMTAxMDAxXHJcbicuZW5jb2RlKCd1dGYtMTYtbGUnKQorICAgICAgICBleHBlY3RlZCA9ICdcVTAwMTAxRkZGXFUwMDEwMTAwMVxyXG4nLmVuY29kZSgndXRmLTgnKQorICAgICAgICBmb3IgcmVhZF9jb3VudCBpbiByYW5nZSgxLCAxNik6CisgICAgICAgICAgICB3aXRoIG9wZW4oJ0NPTklOJCcsICdyYicsIGJ1ZmZlcmluZz0wKSBhcyBzdGRpbjoKKyAgICAgICAgICAgICAgICB3cml0ZV9pbnB1dChzdGRpbiwgc291cmNlKQorCisgICAgICAgICAgICAgICAgYWN0dWFsID0gYicnCisgICAgICAgICAgICAgICAgd2hpbGUgbm90IGFjdHVhbC5lbmRzd2l0aChiJ1xuJyk6CisgICAgICAgICAgICAgICAgICAgIGIgPSBzdGRpbi5yZWFkKHJlYWRfY291bnQpCisgICAgICAgICAgICAgICAgICAgIGFjdHVhbCArPSBiCisKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsICdzdGRpbi5yZWFkKHt9KScuZm9ybWF0KHJlYWRfY291bnQpKQorCisgICAgZGVmIHRlc3RfY3RybF96KHNlbGYpOgorICAgICAgICB3aXRoIG9wZW4oJ0NPTklOJCcsICdyYicsIGJ1ZmZlcmluZz0wKSBhcyBzdGRpbjoKKyAgICAgICAgICAgIHNvdXJjZSA9ICdceEM0XHgxQVxyXG4nLmVuY29kZSgndXRmLTE2LWxlJykKKyAgICAgICAgICAgIGV4cGVjdGVkID0gJ1x4QzQnLmVuY29kZSgndXRmLTgnKQorICAgICAgICAgICAgd3JpdGVfaW5wdXQoc3RkaW4sIHNvdXJjZSkKKyAgICAgICAgICAgIGEsIGIgPSBzdGRpbi5yZWFkKDEpLCBzdGRpbi5yZWFkYWxsKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRbMDoxXSwgYSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRbMTpdLCBiKQorCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF93aW5yZWcucHkgYi9MaWIvdGVzdC90ZXN0X3dpbnJlZy5weQppbmRleCA2MDIwN2ZiLi4yYmU2MWFlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3dpbnJlZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3dpbnJlZy5weQpAQCAtMzcsNiArMzcsNyBAQAogCiB0ZXN0X2RhdGEgPSBbCiAgICAgKCJJbnQgVmFsdWUiLCAgICAgNDUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRUdfRFdPUkQpLAorICAgICgiUXdvcmQgVmFsdWUiLCAgIDB4MTEyMjMzNDQ1NTY2Nzc4OCwgICAgICAgICAgICAgICAgICAgICAgUkVHX1FXT1JEKSwKICAgICAoIlN0cmluZyBWYWwiLCAgICAiQSBzdHJpbmcgdmFsdWUiLCAgICAgICAgICAgICAgICAgICAgICAgIFJFR19TWiksCiAgICAgKCJTdHJpbmdFeHBhbmQiLCAgIlRoZSBwYXRoIGlzICVwYXRoJSIsICAgICAgICAgICAgICAgICAgICBSRUdfRVhQQU5EX1NaKSwKICAgICAoIk11bHRpLXN0cmluZyIsICBbIkxvdHMiLCAib2YiLCAic3RyaW5nIiwgInZhbHVlcyJdLCAgICAgIFJFR19NVUxUSV9TWiksCkBAIC01Niw3ICs1Nyw3IEBACiAKICAgICBkZWYgZGVsZXRlX3RyZWUoc2VsZiwgcm9vdCwgc3Via2V5KToKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgaGtleSA9IE9wZW5LZXkocm9vdCwgc3Via2V5LCBLRVlfQUxMX0FDQ0VTUykKKyAgICAgICAgICAgIGhrZXkgPSBPcGVuS2V5KHJvb3QsIHN1YmtleSwgMCwgS0VZX0FMTF9BQ0NFU1MpCiAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgIyBzdWJrZXkgZG9lcyBub3QgZXhpc3QKICAgICAgICAgICAgIHJldHVybgpAQCAtMzY3LDYgKzM2OCwxOCBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgRGVsZXRlS2V5KEhLRVlfQ1VSUkVOVF9VU0VSLCB0ZXN0X2tleV9uYW1lKQogCisgICAgZGVmIHRlc3RfcmVhZF9zdHJpbmdfY29udGFpbmluZ19udWxsKHNlbGYpOgorICAgICAgICAjIFRlc3QgZm9yIGlzc3VlIDI1Nzc4OiBSRUdfU1ogc2hvdWxkIG5vdCBjb250YWluIG51bGwgY2hhcmFjdGVycworICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIENyZWF0ZUtleShIS0VZX0NVUlJFTlRfVVNFUiwgdGVzdF9rZXlfbmFtZSkgYXMgY2s6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChjay5oYW5kbGUsIDApCisgICAgICAgICAgICAgICAgdGVzdF92YWwgPSAiQSBzdHJpbmdceDAwIHdpdGggYSBudWxsIgorICAgICAgICAgICAgICAgIFNldFZhbHVlRXgoY2ssICJ0ZXN0X25hbWUiLCAwLCBSRUdfU1osIHRlc3RfdmFsKQorICAgICAgICAgICAgICAgIHJldF92YWwsIHJldF90eXBlID0gUXVlcnlWYWx1ZUV4KGNrLCAidGVzdF9uYW1lIikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJldF90eXBlLCBSRUdfU1opCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXRfdmFsLCAiQSBzdHJpbmciKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgRGVsZXRlS2V5KEhLRVlfQ1VSUkVOVF9VU0VSLCB0ZXN0X2tleV9uYW1lKQogCiAKIEB1bml0dGVzdC5za2lwVW5sZXNzKFJFTU9URV9OQU1FLCAiU2tpcHBpbmcgcmVtb3RlIHJlZ2lzdHJ5IHRlc3RzIikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfd2luc291bmQucHkgYi9MaWIvdGVzdC90ZXN0X3dpbnNvdW5kLnB5CmluZGV4IDRhOGFiN2QuLjE3OWUwNjkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfd2luc291bmQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF93aW5zb3VuZC5weQpAQCAtNTEsNiArNTEsMTAgQEAKICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTAwLCAyMDAwLCAxMDApOgogICAgICAgICAgICAgc2FmZV9CZWVwKGksIDc1KQogCisgICAgZGVmIHRlc3Rfa2V5d29yZF9hcmdzKHNlbGYpOgorICAgICAgICBzYWZlX0JlZXAoZHVyYXRpb249NzUsIGZyZXF1ZW5jeT0yMDAwKQorCisKIGNsYXNzIE1lc3NhZ2VCZWVwVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CkBAIC03Niw2ICs4MCw5IEBACiAgICAgZGVmIHRlc3RfcXVlc3Rpb24oc2VsZik6CiAgICAgICAgIHNhZmVfTWVzc2FnZUJlZXAod2luc291bmQuTUJfSUNPTlFVRVNUSU9OKQogCisgICAgZGVmIHRlc3Rfa2V5d29yZF9hcmdzKHNlbGYpOgorICAgICAgICBzYWZlX01lc3NhZ2VCZWVwKHR5cGU9d2luc291bmQuTUJfT0spCisKIAogY2xhc3MgUGxheVNvdW5kVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTg3LDYgKzk0LDI1IEBACiAgICAgICAgICAgICB3aW5zb3VuZC5QbGF5U291bmQsCiAgICAgICAgICAgICAibm9uZSIsIHdpbnNvdW5kLlNORF9BU1lOQyB8IHdpbnNvdW5kLlNORF9NRU1PUlkKICAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHdpbnNvdW5kLlBsYXlTb3VuZCwgYiJiYWQiLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHdpbnNvdW5kLlBsYXlTb3VuZCwgImJhZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbnNvdW5kLlNORF9NRU1PUlkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgd2luc291bmQuUGxheVNvdW5kLCAxLCAwKQorCisgICAgZGVmIHRlc3Rfa2V5d29yZF9hcmdzKHNlbGYpOgorICAgICAgICBzYWZlX1BsYXlTb3VuZChmbGFncz13aW5zb3VuZC5TTkRfQUxJQVMsIHNvdW5kPSJTeXN0ZW1FeGl0IikKKworICAgIGRlZiB0ZXN0X3NuZF9tZW1vcnkoc2VsZik6CisgICAgICAgIHdpdGggb3BlbihzdXBwb3J0LmZpbmRmaWxlKCdwbHVjay1wY204LndhdicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YmRpcj0nYXVkaW9kYXRhJyksICdyYicpIGFzIGY6CisgICAgICAgICAgICBhdWRpb19kYXRhID0gZi5yZWFkKCkKKyAgICAgICAgc2FmZV9QbGF5U291bmQoYXVkaW9fZGF0YSwgd2luc291bmQuU05EX01FTU9SWSkKKyAgICAgICAgYXVkaW9fZGF0YSA9IGJ5dGVhcnJheShhdWRpb19kYXRhKQorICAgICAgICBzYWZlX1BsYXlTb3VuZChhdWRpb19kYXRhLCB3aW5zb3VuZC5TTkRfTUVNT1JZKQorCisgICAgZGVmIHRlc3Rfc25kX2ZpbGVuYW1lKHNlbGYpOgorICAgICAgICBmbiA9IHN1cHBvcnQuZmluZGZpbGUoJ3BsdWNrLXBjbTgud2F2Jywgc3ViZGlyPSdhdWRpb2RhdGEnKQorICAgICAgICBzYWZlX1BsYXlTb3VuZChmbiwgd2luc291bmQuU05EX0ZJTEVOQU1FIHwgd2luc291bmQuU05EX05PREVGQVVMVCkKIAogICAgIGRlZiB0ZXN0X2FsaWFzZXMoc2VsZik6CiAgICAgICAgIGFsaWFzZXMgPSBbCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3dpdGgucHkgYi9MaWIvdGVzdC90ZXN0X3dpdGgucHkKaW5kZXggZThkNzg5Yi4uYzcwZjY4NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF93aXRoLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfd2l0aC5weQpAQCAtMTA5LDcgKzEwOSw3IEBACiAgICAgICAgICAgICB3aXRoIGZvbzogcGFzcwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IsIGZvb05vdERlY2xhcmVkKQogCi0gICAgZGVmIHRlc3RFbnRlckF0dHJpYnV0ZUVycm9yKHNlbGYpOgorICAgIGRlZiB0ZXN0RW50ZXJBdHRyaWJ1dGVFcnJvcjEoc2VsZik6CiAgICAgICAgIGNsYXNzIExhY2tzRW50ZXIob2JqZWN0KToKICAgICAgICAgICAgIGRlZiBfX2V4aXRfXyhzZWxmLCB0eXBlLCB2YWx1ZSwgdHJhY2ViYWNrKToKICAgICAgICAgICAgICAgICBwYXNzCkBAIC0xMTcsNyArMTE3LDE2IEBACiAgICAgICAgIGRlZiBmb29MYWNrc0VudGVyKCk6CiAgICAgICAgICAgICBmb28gPSBMYWNrc0VudGVyKCkKICAgICAgICAgICAgIHdpdGggZm9vOiBwYXNzCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBmb29MYWNrc0VudGVyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEF0dHJpYnV0ZUVycm9yLCAnX19lbnRlcl9fJywgZm9vTGFja3NFbnRlcikKKworICAgIGRlZiB0ZXN0RW50ZXJBdHRyaWJ1dGVFcnJvcjIoc2VsZik6CisgICAgICAgIGNsYXNzIExhY2tzRW50ZXJBbmRFeGl0KG9iamVjdCk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgZGVmIGZvb0xhY2tzRW50ZXJBbmRFeGl0KCk6CisgICAgICAgICAgICBmb28gPSBMYWNrc0VudGVyQW5kRXhpdCgpCisgICAgICAgICAgICB3aXRoIGZvbzogcGFzcworICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEF0dHJpYnV0ZUVycm9yLCAnX19lbnRlcl9fJywgZm9vTGFja3NFbnRlckFuZEV4aXQpCiAKICAgICBkZWYgdGVzdEV4aXRBdHRyaWJ1dGVFcnJvcihzZWxmKToKICAgICAgICAgY2xhc3MgTGFja3NFeGl0KG9iamVjdCk6CkBAIC0xMjcsNyArMTM2LDcgQEAKICAgICAgICAgZGVmIGZvb0xhY2tzRXhpdCgpOgogICAgICAgICAgICAgZm9vID0gTGFja3NFeGl0KCkKICAgICAgICAgICAgIHdpdGggZm9vOiBwYXNzCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBmb29MYWNrc0V4aXQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoQXR0cmlidXRlRXJyb3IsICdfX2V4aXRfXycsIGZvb0xhY2tzRXhpdCkKIAogICAgIGRlZiBhc3NlcnRSYWlzZXNTeW50YXhFcnJvcihzZWxmLCBjb2Rlc3RyKToKICAgICAgICAgZGVmIHNob3VsZFJhaXNlU3ludGF4RXJyb3Iocyk6CkBAIC0xNDAsMTEgKzE0OSw2IEBACiAgICAgICAgICAgICAnd2l0aCBtb2NrIGFzIChOb25lKTpcbicKICAgICAgICAgICAgICcgIHBhc3MnKQogCi0gICAgZGVmIHRlc3RBc3NpZ25tZW50VG9FbXB0eVR1cGxlRXJyb3Ioc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzU3ludGF4RXJyb3IoCi0gICAgICAgICAgICAnd2l0aCBtb2NrIGFzICgpOlxuJwotICAgICAgICAgICAgJyAgcGFzcycpCi0KICAgICBkZWYgdGVzdEFzc2lnbm1lbnRUb1R1cGxlT25seUNvbnRhaW5pbmdOb25lRXJyb3Ioc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzU3ludGF4RXJyb3IoJ3dpdGggbW9jayBhcyBOb25lLDpcbiAgcGFzcycpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzU3ludGF4RXJyb3IoCkBAIC00NTQsNyArNDU4LDcgQEAKICAgICAgICAgICAgIHdpdGggY20oKToKICAgICAgICAgICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uKCJmcm9tIHdpdGgiKQogCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsICJTdG9wSXRlcmF0aW9uIik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywgIlN0b3BJdGVyYXRpb24iKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIHNob3VsZFRocm93KQogCiAgICAgZGVmIHRlc3RSYWlzZWRTdG9wSXRlcmF0aW9uMihzZWxmKToKQEAgLTQ4Miw3ICs0ODYsNyBAQAogICAgICAgICAgICAgd2l0aCBjbSgpOgogICAgICAgICAgICAgICAgIHJhaXNlIG5leHQoaXRlcihbXSkpCiAKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgIlN0b3BJdGVyYXRpb24iKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLCAiU3RvcEl0ZXJhdGlvbiIpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiwgc2hvdWxkVGhyb3cpCiAKICAgICBkZWYgdGVzdFJhaXNlZEdlbmVyYXRvckV4aXQxKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF93c2dpcmVmLnB5IGIvTGliL3Rlc3QvdGVzdF93c2dpcmVmLnB5CmluZGV4IDYxYTc1MGMuLjc3MDhlMjAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfd3NnaXJlZi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3dzZ2lyZWYucHkKQEAgLTI1OCw3ICsyNTgsNyBAQAogCiAgICAgICAgIGRlZiBhcHAoZW52aXJvbiwgc3RhcnRfcmVzcG9uc2UpOgogICAgICAgICAgICAgc3RhcnRfcmVzcG9uc2UoIjIwMCBPSyIsIFtdKQotICAgICAgICAgICAgcmV0dXJuIFtieXRlcyhzdXBwb3J0LlNPQ0tfTUFYX1NJWkUpXQorICAgICAgICAgICAgcmV0dXJuIFtiJ1wwJyAqIHN1cHBvcnQuU09DS19NQVhfU0laRV0KIAogICAgICAgICBjbGFzcyBXc2dpSGFuZGxlcihOb0xvZ1JlcXVlc3RIYW5kbGVyLCBXU0dJUmVxdWVzdEhhbmRsZXIpOgogICAgICAgICAgICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWUucHkgYi9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZS5weQppbmRleCA2Yzc2MTZiLi5jMDE0NGQxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZS5weQpAQCAtOTEsOCArOTEsNiBAQAogCiAKIGNsYXNzIE1vZHVsZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICMgVE9ETzogdGhpcyBzaG91bGQgYmUgcmVtb3ZlZCBvbmNlIHdlIGdldCByaWQgb2YgdGhlIGdsb2JhbCBtb2R1bGUgdmFycwotCiAgICAgZGVmIHRlc3Rfc2FuaXR5KHNlbGYpOgogICAgICAgICAjIEltcG9ydCBzYW5pdHkuCiAKQEAgLTEwMCw2ICs5OCwxMCBAQAogICAgICAgICBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudEluY2x1ZGUKICAgICAgICAgZnJvbSB4bWwuZXRyZWUgaW1wb3J0IEVsZW1lbnRQYXRoCiAKKyAgICBkZWYgdGVzdF9hbGwoc2VsZik6CisgICAgICAgIG5hbWVzID0gKCJ4bWwuZXRyZWUuRWxlbWVudFRyZWUiLCAiX2VsZW1lbnR0cmVlIikKKyAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgRVQsIG5hbWVzLCBibGFja2xpc3Q9KCJIVE1MX0VNUFRZIiwpKQorCiAKIGRlZiBzZXJpYWxpemUoZWxlbSwgdG9fc3RyaW5nPVRydWUsIGVuY29kaW5nPSd1bmljb2RlJywgKipvcHRpb25zKToKICAgICBpZiBlbmNvZGluZyAhPSAndW5pY29kZSc6CkBAIC0xODIsMTAgKzE4NCwxMiBAQAogCiAgICAgICAgIGRlZiBjaGVja19lbGVtZW50KGVsZW1lbnQpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKEVULmlzZWxlbWVudChlbGVtZW50KSwgbXNnPSJub3QgYW4gZWxlbWVudCIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihlbGVtZW50LCAidGFnIiksIG1zZz0ibm8gdGFnIG1lbWJlciIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihlbGVtZW50LCAiYXR0cmliIiksIG1zZz0ibm8gYXR0cmliIG1lbWJlciIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihlbGVtZW50LCAidGV4dCIpLCBtc2c9Im5vIHRleHQgbWVtYmVyIikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKGVsZW1lbnQsICJ0YWlsIiksIG1zZz0ibm8gdGFpbCBtZW1iZXIiKQorICAgICAgICAgICAgZGlyZWxlbSA9IGRpcihlbGVtZW50KQorICAgICAgICAgICAgZm9yIGF0dHIgaW4gJ3RhZycsICdhdHRyaWInLCAndGV4dCcsICd0YWlsJzoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihlbGVtZW50LCBhdHRyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0nbm8gJXMgbWVtYmVyJyAlIGF0dHIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihhdHRyLCBkaXJlbGVtLAorICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSdubyAlcyB2aXNpYmxlIGJ5IGRpcicgJSBhdHRyKQogCiAgICAgICAgICAgICBjaGVja19zdHJpbmcoZWxlbWVudC50YWcpCiAgICAgICAgICAgICBjaGVja19tYXBwaW5nKGVsZW1lbnQuYXR0cmliKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWVfYy5weSBiL0xpYi90ZXN0L3Rlc3RfeG1sX2V0cmVlX2MucHkKaW5kZXggYmZjZWQxMi4uN2M2MDY5OSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWVfYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZV9jLnB5CkBAIC0xLDUgKzEsNSBAQAogIyB4bWwuZXRyZWUgdGVzdCBmb3IgY0VsZW1lbnRUcmVlCi1pbXBvcnQgc3lzLCBzdHJ1Y3QKK2ltcG9ydCBzdHJ1Y3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGltcG9ydF9mcmVzaF9tb2R1bGUKIGltcG9ydCB0eXBlcwpAQCAtMTE4LDcgKzExOCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdC5jYWxjc2l6ZSgnOFAnKSkKIAogZGVmIHRlc3RfbWFpbigpOgotICAgIGZyb20gdGVzdCBpbXBvcnQgdGVzdF94bWxfZXRyZWUsIHRlc3RfeG1sX2V0cmVlX2MKKyAgICBmcm9tIHRlc3QgaW1wb3J0IHRlc3RfeG1sX2V0cmVlCiAKICAgICAjIFJ1biB0aGUgdGVzdHMgc3BlY2lmaWMgdG8gdGhlIEMgaW1wbGVtZW50YXRpb24KICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfeG1scnBjLnB5IGIvTGliL3Rlc3QvdGVzdF94bWxycGMucHkKaW5kZXggMDJkOWY1Yy4uZGY5Yzc5ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF94bWxycGMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF94bWxycGMucHkKQEAgLTEsNSArMSw2IEBACiBpbXBvcnQgYmFzZTY0CiBpbXBvcnQgZGF0ZXRpbWUKK2ltcG9ydCBkZWNpbWFsCiBpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQogaW1wb3J0IHVuaXR0ZXN0CkBAIC05LDcgKzEwLDYgQEAKIGltcG9ydCBodHRwLmNsaWVudAogaW1wb3J0IGh0dHAsIGh0dHAuc2VydmVyCiBpbXBvcnQgc29ja2V0Ci1pbXBvcnQgb3MKIGltcG9ydCByZQogaW1wb3J0IGlvCiBpbXBvcnQgY29udGV4dGxpYgpAQCAtMjM4LDYgKzIzOCw1NCBAQAogICAgICAgICAgICAgICAgICc8L3N0cnVjdD48L3ZhbHVlPjwvcGFyYW0+PC9wYXJhbXM+JykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUmVzcG9uc2VFcnJvciwgeG1scnBjbGliLmxvYWRzLCBkYXRhKQogCisgICAgZGVmIGNoZWNrX2xvYWRzKHNlbGYsIHMsIHZhbHVlLCAqKmt3YXJncyk6CisgICAgICAgIGR1bXAgPSAnPHBhcmFtcz48cGFyYW0+PHZhbHVlPiVzPC92YWx1ZT48L3BhcmFtPjwvcGFyYW1zPicgJSBzCisgICAgICAgIHJlc3VsdCwgbSA9IHhtbHJwY2xpYi5sb2FkcyhkdW1wLCAqKmt3YXJncykKKyAgICAgICAgKG5ld3ZhbHVlLCkgPSByZXN1bHQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXd2YWx1ZSwgdmFsdWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShuZXd2YWx1ZSksIHR5cGUodmFsdWUpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtKQorCisgICAgZGVmIHRlc3RfbG9hZF9zdGFuZGFyZF90eXBlcyhzZWxmKToKKyAgICAgICAgY2hlY2sgPSBzZWxmLmNoZWNrX2xvYWRzCisgICAgICAgIGNoZWNrKCdzdHJpbmcnLCAnc3RyaW5nJykKKyAgICAgICAgY2hlY2soJzxzdHJpbmc+c3RyaW5nPC9zdHJpbmc+JywgJ3N0cmluZycpCisgICAgICAgIGNoZWNrKCc8c3RyaW5nPvCdlJjwnZSr8J2UpvCdlKDwnZSs8J2UofCdlKIgc3RyaW5nPC9zdHJpbmc+JywgJ/CdlJjwnZSr8J2UpvCdlKDwnZSs8J2UofCdlKIgc3RyaW5nJykKKyAgICAgICAgY2hlY2soJzxpbnQ+MjA1NjE4Mzk0NzwvaW50PicsIDIwNTYxODM5NDcpCisgICAgICAgIGNoZWNrKCc8aW50Pi0yMDU2MTgzOTQ3PC9pbnQ+JywgLTIwNTYxODM5NDcpCisgICAgICAgIGNoZWNrKCc8aTQ+MjA1NjE4Mzk0NzwvaTQ+JywgMjA1NjE4Mzk0NykKKyAgICAgICAgY2hlY2soJzxkb3VibGU+NDYwOTMuNzgxMjU8L2RvdWJsZT4nLCA0NjA5My43ODEyNSkKKyAgICAgICAgY2hlY2soJzxib29sZWFuPjA8L2Jvb2xlYW4+JywgRmFsc2UpCisgICAgICAgIGNoZWNrKCc8YmFzZTY0PkFHSjVkR1VnYzNSeWFXNW4vdz09PC9iYXNlNjQ+JywKKyAgICAgICAgICAgICAgeG1scnBjbGliLkJpbmFyeShiJ1x4MDBieXRlIHN0cmluZ1x4ZmYnKSkKKyAgICAgICAgY2hlY2soJzxiYXNlNjQ+QUdKNWRHVWdjM1J5YVc1bi93PT08L2Jhc2U2ND4nLAorICAgICAgICAgICAgICBiJ1x4MDBieXRlIHN0cmluZ1x4ZmYnLCB1c2VfYnVpbHRpbl90eXBlcz1UcnVlKQorICAgICAgICBjaGVjaygnPGRhdGVUaW1lLmlzbzg2MDE+MjAwNTAyMTBUMTE6NDE6MjM8L2RhdGVUaW1lLmlzbzg2MDE+JywKKyAgICAgICAgICAgICAgeG1scnBjbGliLkRhdGVUaW1lKCcyMDA1MDIxMFQxMTo0MToyMycpKQorICAgICAgICBjaGVjaygnPGRhdGVUaW1lLmlzbzg2MDE+MjAwNTAyMTBUMTE6NDE6MjM8L2RhdGVUaW1lLmlzbzg2MDE+JywKKyAgICAgICAgICAgICAgZGF0ZXRpbWUuZGF0ZXRpbWUoMjAwNSwgMiwgMTAsIDExLCA0MSwgMjMpLAorICAgICAgICAgICAgICB1c2VfYnVpbHRpbl90eXBlcz1UcnVlKQorICAgICAgICBjaGVjaygnPGFycmF5PjxkYXRhPicKKyAgICAgICAgICAgICAgJzx2YWx1ZT48aW50PjE8L2ludD48L3ZhbHVlPjx2YWx1ZT48aW50PjI8L2ludD48L3ZhbHVlPicKKyAgICAgICAgICAgICAgJzwvZGF0YT48L2FycmF5PicsIFsxLCAyXSkKKyAgICAgICAgY2hlY2soJzxzdHJ1Y3Q+JworICAgICAgICAgICAgICAnPG1lbWJlcj48bmFtZT5iPC9uYW1lPjx2YWx1ZT48aW50PjI8L2ludD48L3ZhbHVlPjwvbWVtYmVyPicKKyAgICAgICAgICAgICAgJzxtZW1iZXI+PG5hbWU+YTwvbmFtZT48dmFsdWU+PGludD4xPC9pbnQ+PC92YWx1ZT48L21lbWJlcj4nCisgICAgICAgICAgICAgICc8L3N0cnVjdD4nLCB7J2EnOiAxLCAnYic6IDJ9KQorCisgICAgZGVmIHRlc3RfbG9hZF9leHRlbnNpb25fdHlwZXMoc2VsZik6CisgICAgICAgIGNoZWNrID0gc2VsZi5jaGVja19sb2FkcworICAgICAgICBjaGVjaygnPG5pbC8+JywgTm9uZSkKKyAgICAgICAgY2hlY2soJzxleDpuaWwvPicsIE5vbmUpCisgICAgICAgIGNoZWNrKCc8aTE+MjA1PC9pMT4nLCAyMDUpCisgICAgICAgIGNoZWNrKCc8aTI+MjA1NjE8L2kyPicsIDIwNTYxKQorICAgICAgICBjaGVjaygnPGk4Pjk4NzY1NDMyMTA8L2k4PicsIDk4NzY1NDMyMTApCisgICAgICAgIGNoZWNrKCc8YmlnaW50ZWdlcj45ODc2NTQzMjEwMDEyMzQ1Njc4OTwvYmlnaW50ZWdlcj4nLAorICAgICAgICAgICAgICA5ODc2NTQzMjEwMDEyMzQ1Njc4OSkKKyAgICAgICAgY2hlY2soJzxmbG9hdD45My43ODEyNTwvZmxvYXQ+JywgOTMuNzgxMjUpCisgICAgICAgIGNoZWNrKCc8YmlnZGVjaW1hbD45ODc2NTQzMjEwLjAxMjM0NTY3ODk8L2JpZ2RlY2ltYWw+JywKKyAgICAgICAgICAgICAgZGVjaW1hbC5EZWNpbWFsKCc5ODc2NTQzMjEwLjAxMjM0NTY3ODknKSkKKwogICAgIGRlZiB0ZXN0X2dldF9ob3N0X2luZm8oc2VsZik6CiAgICAgICAgICMgc2VlIGJ1ZyAjMzYxMywgdGhpcyByYWlzZWQgYSBUeXBlRXJyb3IKICAgICAgICAgdHJhbnNwID0geG1scnBjLmNsaWVudC5UcmFuc3BvcnQoKQpAQCAtMTE0Nyw3ICsxMTk1LDYgQEAKICAgICAiIiJBIHZhcmlhdGlvbiBvbiBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIHdoaWNoIGdpdmVzIGEgdGV4dCBzdHJlYW0KICAgICBoYXZpbmcgYSBgYnVmZmVyYCBhdHRyaWJ1dGUuCiAgICAgIiIiCi0gICAgaW1wb3J0IGlvCiAgICAgb3JpZ19zdGRvdXQgPSBzeXMuc3Rkb3V0CiAgICAgc3lzLnN0ZG91dCA9IGlvLlRleHRJT1dyYXBwZXIoaW8uQnl0ZXNJTygpLCBlbmNvZGluZz1lbmNvZGluZykKICAgICB0cnk6CkBAIC0xMjIwLDcgKzEyNjcsNyBAQAogICAgICAgICBjb250ZW50ID0gaGFuZGxlW2hhbmRsZS5maW5kKCI8P3htbCIpOl0KIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgaW50KHJlLnNlYXJjaCgnQ29udGVudC1MZW5ndGg6IChcZCspJywgaGFuZGxlKS5ncm91cCgxKSksCisgICAgICAgICAgICBpbnQocmUuc2VhcmNoKHInQ29udGVudC1MZW5ndGg6IChcZCspJywgaGFuZGxlKS5ncm91cCgxKSksCiAgICAgICAgICAgICBsZW4oY29udGVudCkpCiAKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF94bWxycGNfbmV0LnB5IGIvTGliL3Rlc3QvdGVzdF94bWxycGNfbmV0LnB5CmluZGV4IGI2MGI4MmYuLmFlMGEyOGUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfeG1scnBjX25ldC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3htbHJwY19uZXQucHkKQEAgLTEsNyArMSw0IEBACiBpbXBvcnQgY29sbGVjdGlvbnMuYWJjCi1pbXBvcnQgZXJybm8KLWltcG9ydCBzb2NrZXQKLWltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGVwMzgwLnB5IGIvTGliL3Rlc3QvdGVzdF95aWVsZF9mcm9tLnB5CnNpbWlsYXJpdHkgaW5kZXggOTIlCnJlbmFtZSBmcm9tIExpYi90ZXN0L3Rlc3RfcGVwMzgwLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X3lpZWxkX2Zyb20ucHkKaW5kZXggMjNmZmJlZC4uN2U5NzExZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wZXAzODAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF95aWVsZF9mcm9tLnB5CkBAIC0zODQsOSArMzg0LDEwIEBACiAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIlN0YXJ0aW5nIGcxIikKICAgICAgICAgICAgIHlpZWxkICJnMSBoYW0iCiAgICAgICAgICAgICByZXQgPSB5aWVsZCBmcm9tIGcyKCkKLSAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZzIgcmV0dXJuZWQgJXMiICUgKHJldCwpKQotICAgICAgICAgICAgcmV0ID0geWllbGQgZnJvbSBnMig0MikKLSAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZzIgcmV0dXJuZWQgJXMiICUgKHJldCwpKQorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnMiByZXR1cm5lZCAlciIgJSAocmV0LCkpCisgICAgICAgICAgICBmb3IgdiBpbiAxLCAoMiwpLCBTdG9wSXRlcmF0aW9uKDMpOgorICAgICAgICAgICAgICAgIHJldCA9IHlpZWxkIGZyb20gZzIodikKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcyIHJldHVybmVkICVyIiAlIChyZXQsKSkKICAgICAgICAgICAgIHlpZWxkICJnMSBlZ2dzIgogICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJGaW5pc2hpbmcgZzEiKQogICAgICAgICBkZWYgZzIodiA9IE5vbmUpOgpAQCAtNDEwLDcgKzQxMSwxNyBAQAogICAgICAgICAgICAgIllpZWxkZWQgZzIgc3BhbSIsCiAgICAgICAgICAgICAiWWllbGRlZCBnMiBtb3JlIHNwYW0iLAogICAgICAgICAgICAgIkZpbmlzaGluZyBnMiIsCi0gICAgICAgICAgICAiZzIgcmV0dXJuZWQgNDIiLAorICAgICAgICAgICAgImcyIHJldHVybmVkIDEiLAorICAgICAgICAgICAgIlN0YXJ0aW5nIGcyIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcyIHNwYW0iLAorICAgICAgICAgICAgIllpZWxkZWQgZzIgbW9yZSBzcGFtIiwKKyAgICAgICAgICAgICJGaW5pc2hpbmcgZzIiLAorICAgICAgICAgICAgImcyIHJldHVybmVkICgyLCkiLAorICAgICAgICAgICAgIlN0YXJ0aW5nIGcyIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcyIHNwYW0iLAorICAgICAgICAgICAgIllpZWxkZWQgZzIgbW9yZSBzcGFtIiwKKyAgICAgICAgICAgICJGaW5pc2hpbmcgZzIiLAorICAgICAgICAgICAgImcyIHJldHVybmVkIFN0b3BJdGVyYXRpb24oMywpIiwKICAgICAgICAgICAgICJZaWVsZGVkIGcxIGVnZ3MiLAogICAgICAgICAgICAgIkZpbmlzaGluZyBnMSIsCiAgICAgICAgIF0pCkBAIC02NzAsMTQgKzY4MSwxNiBAQAogICAgICAgICAgICAgICAgIG5leHQoZ2kpCiAgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJmIFNIT1VMRCBOT1QgQkUgSEVSRSIpCiAgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBlOgotICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZiBjYXVnaHQgJXMiICUgKHJlcHIoZSksKSkKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImYgY2F1Z2h0ICVyIiAlIChlLCkpCiAgICAgICAgIGRlZiBnKHIpOgogICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnIHN0YXJ0aW5nIikKICAgICAgICAgICAgIHlpZWxkCi0gICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcgcmV0dXJuaW5nICVzIiAlIChyLCkpCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcgcmV0dXJuaW5nICVyIiAlIChyLCkpCiAgICAgICAgICAgICByZXR1cm4gcgogICAgICAgICBmKE5vbmUpCi0gICAgICAgIGYoNDIpCisgICAgICAgIGYoMSkKKyAgICAgICAgZigoMiwpKQorICAgICAgICBmKFN0b3BJdGVyYXRpb24oMykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsWwogICAgICAgICAgICAgImcgc3RhcnRpbmciLAogICAgICAgICAgICAgImYgcmVzdW1pbmcgZyIsCkBAIC02ODUsOCArNjk4LDE2IEBACiAgICAgICAgICAgICAiZiBjYXVnaHQgU3RvcEl0ZXJhdGlvbigpIiwKICAgICAgICAgICAgICJnIHN0YXJ0aW5nIiwKICAgICAgICAgICAgICJmIHJlc3VtaW5nIGciLAotICAgICAgICAgICAgImcgcmV0dXJuaW5nIDQyIiwKLSAgICAgICAgICAgICJmIGNhdWdodCBTdG9wSXRlcmF0aW9uKDQyLCkiLAorICAgICAgICAgICAgImcgcmV0dXJuaW5nIDEiLAorICAgICAgICAgICAgImYgY2F1Z2h0IFN0b3BJdGVyYXRpb24oMSwpIiwKKyAgICAgICAgICAgICJnIHN0YXJ0aW5nIiwKKyAgICAgICAgICAgICJmIHJlc3VtaW5nIGciLAorICAgICAgICAgICAgImcgcmV0dXJuaW5nICgyLCkiLAorICAgICAgICAgICAgImYgY2F1Z2h0IFN0b3BJdGVyYXRpb24oKDIsKSwpIiwKKyAgICAgICAgICAgICJnIHN0YXJ0aW5nIiwKKyAgICAgICAgICAgICJmIHJlc3VtaW5nIGciLAorICAgICAgICAgICAgImcgcmV0dXJuaW5nIFN0b3BJdGVyYXRpb24oMywpIiwKKyAgICAgICAgICAgICJmIGNhdWdodCBTdG9wSXRlcmF0aW9uKFN0b3BJdGVyYXRpb24oMywpLCkiLAogICAgICAgICBdKQogCiAgICAgZGVmIHRlc3Rfc2VuZF9hbmRfcmV0dXJuX3dpdGhfdmFsdWUoc2VsZik6CkBAIC03MDYsMjIgKzcyNywzNCBAQAogICAgICAgICBkZWYgZyhyKToKICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZyBzdGFydGluZyIpCiAgICAgICAgICAgICB4ID0geWllbGQKLSAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZyByZWNlaXZlZCAlcyIgJSAoeCwpKQotICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnIHJldHVybmluZyAlcyIgJSAociwpKQorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnIHJlY2VpdmVkICVyIiAlICh4LCkpCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcgcmV0dXJuaW5nICVyIiAlIChyLCkpCiAgICAgICAgICAgICByZXR1cm4gcgogICAgICAgICBmKE5vbmUpCi0gICAgICAgIGYoNDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsWworICAgICAgICBmKDEpCisgICAgICAgIGYoKDIsKSkKKyAgICAgICAgZihTdG9wSXRlcmF0aW9uKDMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLCBbCiAgICAgICAgICAgICAiZyBzdGFydGluZyIsCiAgICAgICAgICAgICAiZiBzZW5kaW5nIHNwYW0gdG8gZyIsCi0gICAgICAgICAgICAiZyByZWNlaXZlZCBzcGFtIiwKKyAgICAgICAgICAgICJnIHJlY2VpdmVkICdzcGFtJyIsCiAgICAgICAgICAgICAiZyByZXR1cm5pbmcgTm9uZSIsCiAgICAgICAgICAgICAiZiBjYXVnaHQgU3RvcEl0ZXJhdGlvbigpIiwKICAgICAgICAgICAgICJnIHN0YXJ0aW5nIiwKICAgICAgICAgICAgICJmIHNlbmRpbmcgc3BhbSB0byBnIiwKLSAgICAgICAgICAgICJnIHJlY2VpdmVkIHNwYW0iLAotICAgICAgICAgICAgImcgcmV0dXJuaW5nIDQyIiwKLSAgICAgICAgICAgICJmIGNhdWdodCBTdG9wSXRlcmF0aW9uKDQyLCkiLAorICAgICAgICAgICAgImcgcmVjZWl2ZWQgJ3NwYW0nIiwKKyAgICAgICAgICAgICJnIHJldHVybmluZyAxIiwKKyAgICAgICAgICAgICdmIGNhdWdodCBTdG9wSXRlcmF0aW9uKDEsKScsCisgICAgICAgICAgICAnZyBzdGFydGluZycsCisgICAgICAgICAgICAnZiBzZW5kaW5nIHNwYW0gdG8gZycsCisgICAgICAgICAgICAiZyByZWNlaXZlZCAnc3BhbSciLAorICAgICAgICAgICAgJ2cgcmV0dXJuaW5nICgyLCknLAorICAgICAgICAgICAgJ2YgY2F1Z2h0IFN0b3BJdGVyYXRpb24oKDIsKSwpJywKKyAgICAgICAgICAgICdnIHN0YXJ0aW5nJywKKyAgICAgICAgICAgICdmIHNlbmRpbmcgc3BhbSB0byBnJywKKyAgICAgICAgICAgICJnIHJlY2VpdmVkICdzcGFtJyIsCisgICAgICAgICAgICAnZyByZXR1cm5pbmcgU3RvcEl0ZXJhdGlvbigzLCknLAorICAgICAgICAgICAgJ2YgY2F1Z2h0IFN0b3BJdGVyYXRpb24oU3RvcEl0ZXJhdGlvbigzLCksKScKICAgICAgICAgXSkKIAogICAgIGRlZiB0ZXN0X2NhdGNoaW5nX2V4Y2VwdGlvbl9mcm9tX3N1Ymdlbl9hbmRfcmV0dXJuaW5nKHNlbGYpOgpAQCAtNzI5LDI3ICs3NjIsMjkgQEAKICAgICAgICAgVGVzdCBjYXRjaGluZyBhbiBleGNlcHRpb24gdGhyb3duIGludG8gYQogICAgICAgICBzdWJnZW5lcmF0b3IgYW5kIHJldHVybmluZyBhIHZhbHVlCiAgICAgICAgICIiIgotICAgICAgICB0cmFjZSA9IFtdCiAgICAgICAgIGRlZiBpbm5lcigpOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHlpZWxkIDEKICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiaW5uZXIgY2F1Z2h0IFZhbHVlRXJyb3IiKQotICAgICAgICAgICAgcmV0dXJuIDIKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZQogCiAgICAgICAgIGRlZiBvdXRlcigpOgogICAgICAgICAgICAgdiA9IHlpZWxkIGZyb20gaW5uZXIoKQotICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJpbm5lciByZXR1cm5lZCAlciB0byBvdXRlciIgJSB2KQorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJpbm5lciByZXR1cm5lZCAlciB0byBvdXRlciIgJSAodiwpKQogICAgICAgICAgICAgeWllbGQgdgotICAgICAgICBnID0gb3V0ZXIoKQotICAgICAgICB0cmFjZS5hcHBlbmQobmV4dChnKSkKLSAgICAgICAgdHJhY2UuYXBwZW5kKGcudGhyb3coVmFsdWVFcnJvcikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsWwotICAgICAgICAgICAgMSwKLSAgICAgICAgICAgICJpbm5lciBjYXVnaHQgVmFsdWVFcnJvciIsCi0gICAgICAgICAgICAiaW5uZXIgcmV0dXJuZWQgMiB0byBvdXRlciIsCi0gICAgICAgICAgICAyLAotICAgICAgICBdKQorCisgICAgICAgIGZvciB2YWx1ZSBpbiAyLCAoMiwpLCBTdG9wSXRlcmF0aW9uKDIpOgorICAgICAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICAgICAgZyA9IG91dGVyKCkKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZChuZXh0KGcpKQorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKHJlcHIoZy50aHJvdyhWYWx1ZUVycm9yKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLCBbCisgICAgICAgICAgICAgICAgMSwKKyAgICAgICAgICAgICAgICAiaW5uZXIgY2F1Z2h0IFZhbHVlRXJyb3IiLAorICAgICAgICAgICAgICAgICJpbm5lciByZXR1cm5lZCAlciB0byBvdXRlciIgJSAodmFsdWUsKSwKKyAgICAgICAgICAgICAgICByZXByKHZhbHVlKSwKKyAgICAgICAgICAgIF0pCiAKICAgICBkZWYgdGVzdF90aHJvd2luZ19HZW5lcmF0b3JFeGl0X2ludG9fc3ViZ2VuX3RoYXRfcmV0dXJucyhzZWxmKToKICAgICAgICAgIiIiCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3ppcGZpbGUucHkgYi9MaWIvdGVzdC90ZXN0X3ppcGZpbGUucHkKaW5kZXggMGRkNGJjYS4uMGE0M2IyMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF96aXBmaWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfemlwZmlsZS5weQpAQCAtMSw4ICsxLDggQEAKIGltcG9ydCBjb250ZXh0bGliCiBpbXBvcnQgaW8KIGltcG9ydCBvcwotaW1wb3J0IHN5cwogaW1wb3J0IGltcG9ydGxpYi51dGlsCitpbXBvcnQgcG9zaXhwYXRoCiBpbXBvcnQgdGltZQogaW1wb3J0IHN0cnVjdAogaW1wb3J0IHppcGZpbGUKQEAgLTM5LDEwICszOSw2IEBACiAgICAgICAgIHlpZWxkIGYKICAgICAgICAgdGVzdC5hc3NlcnRGYWxzZShmLmNsb3NlZCkKIAotZGVmIG9wZW5VKHppcGZwLCBmbik6Ci0gICAgd2l0aCBjaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgotICAgICAgICByZXR1cm4gemlwZnAub3BlbihmbiwgJ3JVJykKLQogY2xhc3MgQWJzdHJhY3RUZXN0c1dpdGhTb3VyY2VGaWxlOgogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CkBAIC02Miw2ICs1OCw5IEBACiAgICAgICAgICAgICB6aXBmcC53cml0ZShURVNURk4sICJhbm90aGVyLm5hbWUiKQogICAgICAgICAgICAgemlwZnAud3JpdGUoVEVTVEZOLCBURVNURk4pCiAgICAgICAgICAgICB6aXBmcC53cml0ZXN0cigic3RyZmlsZSIsIHNlbGYuZGF0YSkKKyAgICAgICAgICAgIHdpdGggemlwZnAub3Blbignd3JpdHRlbi1vcGVuLXcnLCBtb2RlPSd3JykgYXMgZjoKKyAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBzZWxmLmxpbmVfZ2VuOgorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGxpbmUpCiAKICAgICBkZWYgemlwX3Rlc3Qoc2VsZiwgZiwgY29tcHJlc3Npb24pOgogICAgICAgICBzZWxmLm1ha2VfdGVzdF9hcmNoaXZlKGYsIGNvbXByZXNzaW9uKQpAQCAtNzcsNyArNzYsNyBAQAogICAgICAgICAgICAgemlwZnAucHJpbnRkaXIoZmlsZT1mcCkKICAgICAgICAgICAgIGRpcmVjdG9yeSA9IGZwLmdldHZhbHVlKCkKICAgICAgICAgICAgIGxpbmVzID0gZGlyZWN0b3J5LnNwbGl0bGluZXMoKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obGluZXMpLCA0KSAjIE51bWJlciBvZiBmaWxlcyArIGhlYWRlcgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obGluZXMpLCA1KSAjIE51bWJlciBvZiBmaWxlcyArIGhlYWRlcgogCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdGaWxlIE5hbWUnLCBsaW5lc1swXSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ01vZGlmaWVkJywgbGluZXNbMF0pCkBAIC05MSwyMyArOTAsMjUgQEAKIAogICAgICAgICAgICAgIyBDaGVjayB0aGUgbmFtZWxpc3QKICAgICAgICAgICAgIG5hbWVzID0gemlwZnAubmFtZWxpc3QoKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obmFtZXMpLCAzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obmFtZXMpLCA0KQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihURVNURk4sIG5hbWVzKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiYW5vdGhlci5uYW1lIiwgbmFtZXMpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJzdHJmaWxlIiwgbmFtZXMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJ3cml0dGVuLW9wZW4tdyIsIG5hbWVzKQogCiAgICAgICAgICAgICAjIENoZWNrIGluZm9saXN0CiAgICAgICAgICAgICBpbmZvcyA9IHppcGZwLmluZm9saXN0KCkKICAgICAgICAgICAgIG5hbWVzID0gW2kuZmlsZW5hbWUgZm9yIGkgaW4gaW5mb3NdCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihuYW1lcyksIDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihuYW1lcyksIDQpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKFRFU1RGTiwgbmFtZXMpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJhbm90aGVyLm5hbWUiLCBuYW1lcykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oInN0cmZpbGUiLCBuYW1lcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIndyaXR0ZW4tb3Blbi13IiwgbmFtZXMpCiAgICAgICAgICAgICBmb3IgaSBpbiBpbmZvczoKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGkuZmlsZV9zaXplLCBsZW4oc2VsZi5kYXRhKSkKIAogICAgICAgICAgICAgIyBjaGVjayBnZXRpbmZvCi0gICAgICAgICAgICBmb3Igbm0gaW4gKFRFU1RGTiwgImFub3RoZXIubmFtZSIsICJzdHJmaWxlIik6CisgICAgICAgICAgICBmb3Igbm0gaW4gKFRFU1RGTiwgImFub3RoZXIubmFtZSIsICJzdHJmaWxlIiwgIndyaXR0ZW4tb3Blbi13Iik6CiAgICAgICAgICAgICAgICAgaW5mbyA9IHppcGZwLmdldGluZm8obm0pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbmZvLmZpbGVuYW1lLCBubSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluZm8uZmlsZV9zaXplLCBsZW4oc2VsZi5kYXRhKSkKQEAgLTM3MywxNCArMzc0LDE4IEBACiAgICAgdGVzdF9sb3dfY29tcHJlc3Npb24gPSBOb25lCiAKICAgICBkZWYgemlwX3Rlc3Rfd3JpdGVzdHJfcGVybWlzc2lvbnMoc2VsZiwgZiwgY29tcHJlc3Npb24pOgotICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0IHdyaXRlc3RyIGNyZWF0ZXMgZmlsZXMgd2l0aCBtb2RlIDA2MDAsCi0gICAgICAgICMgd2hlbiBpdCBpcyBwYXNzZWQgYSBuYW1lIHJhdGhlciB0aGFuIGEgWmlwSW5mbyBpbnN0YW5jZS4KKyAgICAgICAgIyBNYWtlIHN1cmUgdGhhdCB3cml0ZXN0ciBhbmQgb3BlbiguLi4gbW9kZT0ndycpIGNyZWF0ZSBmaWxlcyB3aXRoCisgICAgICAgICMgbW9kZSAwNjAwLCB3aGVuIHRoZXkgYXJlIHBhc3NlZCBhIG5hbWUgcmF0aGVyIHRoYW4gYSBaaXBJbmZvCisgICAgICAgICMgaW5zdGFuY2UuCiAKICAgICAgICAgc2VsZi5tYWtlX3Rlc3RfYXJjaGl2ZShmLCBjb21wcmVzc2lvbikKICAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgInIiKSBhcyB6aXBmcDoKICAgICAgICAgICAgIHppbmZvID0gemlwZnAuZ2V0aW5mbygnc3RyZmlsZScpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppbmZvLmV4dGVybmFsX2F0dHIsIDBvNjAwIDw8IDE2KQogCisgICAgICAgICAgICB6aW5mbzIgPSB6aXBmcC5nZXRpbmZvKCd3cml0dGVuLW9wZW4tdycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppbmZvMi5leHRlcm5hbF9hdHRyLCAwbzYwMCA8PCAxNikKKwogICAgIGRlZiB0ZXN0X3dyaXRlc3RyX3Blcm1pc3Npb25zKHNlbGYpOgogICAgICAgICBmb3IgZiBpbiBnZXRfZmlsZXMoc2VsZik6CiAgICAgICAgICAgICBzZWxmLnppcF90ZXN0X3dyaXRlc3RyX3Blcm1pc3Npb25zKGYsIHppcGZpbGUuWklQX1NUT1JFRCkKQEAgLTQ4OCwxMiArNDkzLDE2IEBACiAKICAgICBkZWYgdGVzdF93cml0ZV90b19yZWFkb25seShzZWxmKToKICAgICAgICAgIiIiQ2hlY2sgdGhhdCB0cnlpbmcgdG8gY2FsbCB3cml0ZSgpIG9uIGEgcmVhZG9ubHkgWmlwRmlsZSBvYmplY3QKLSAgICAgICAgcmFpc2VzIGEgUnVudGltZUVycm9yLiIiIgorICAgICAgICByYWlzZXMgYSBWYWx1ZUVycm9yLiIiIgogICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4yLCBtb2RlPSJ3IikgYXMgemlwZnA6CiAgICAgICAgICAgICB6aXBmcC53cml0ZXN0cigic29tZWZpbGUudHh0IiwgImJvZ3VzIikKIAogICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4yLCBtb2RlPSJyIikgYXMgemlwZnA6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHppcGZwLndyaXRlLCBURVNURk4pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB6aXBmcC53cml0ZSwgVEVTVEZOKQorCisgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsIG1vZGU9InIiKSBhcyB6aXBmcDoKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICAgICAgemlwZnAub3BlbihURVNURk4sIG1vZGU9J3cnKQogCiAgICAgZGVmIHRlc3RfYWRkX2ZpbGVfYmVmb3JlXzE5ODAoc2VsZik6CiAgICAgICAgICMgU2V0IGF0aW1lIGFuZCBtdGltZSB0byAxOTcwLTAxLTAxCkBAIC0xMDY2LDMyICsxMDc1LDYgQEAKICAgICAgICAgICAgICAgICBkYXRhICs9IHppcGZwLnJlYWQoaW5mbykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZGF0YSwge2IiZm9vYmFyIiwgYiJiYXJmb28ifSkKIAotICAgIGRlZiB0ZXN0X3VuaXZlcnNhbF9kZXByZWNhdGlvbihzZWxmKToKLSAgICAgICAgZiA9IGlvLkJ5dGVzSU8oKQotICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShmLCAidyIpIGFzIHppcGZwOgotICAgICAgICAgICAgemlwZnAud3JpdGVzdHIoJ3NwYW0udHh0JywgYidhYmFiYWdhbGFtYWdhJykKLQotICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShmLCAiciIpIGFzIHppcGZwOgotICAgICAgICAgICAgZm9yIG1vZGUgaW4gJ1UnLCAnclUnOgotICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgICAgICAgICB6aXBvcGVuID0gemlwZnAub3Blbignc3BhbS50eHQnLCBtb2RlKQotICAgICAgICAgICAgICAgIHppcG9wZW4uY2xvc2UoKQotCi0gICAgZGVmIHRlc3RfdW5pdmVyc2FsX3JlYWRhaGVhZHMoc2VsZik6Ci0gICAgICAgIGYgPSBpby5CeXRlc0lPKCkKLQotICAgICAgICBkYXRhID0gYidhXHJcbicgKiAxNiAqIDEwMjQKLSAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgJ3cnLCB6aXBmaWxlLlpJUF9TVE9SRUQpIGFzIHppcGZwOgotICAgICAgICAgICAgemlwZnAud3JpdGVzdHIoVEVTVEZOLCBkYXRhKQotCi0gICAgICAgIGRhdGEyID0gYicnCi0gICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKGYsICdyJykgYXMgemlwZnAsIFwKLSAgICAgICAgICAgICBvcGVuVSh6aXBmcCwgVEVTVEZOKSBhcyB6aXBvcGVuOgotICAgICAgICAgICAgZm9yIGxpbmUgaW4gemlwb3BlbjoKLSAgICAgICAgICAgICAgICBkYXRhMiArPSBsaW5lCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCBkYXRhMi5yZXBsYWNlKGInXG4nLCBiJ1xyXG4nKSkKLQogICAgIGRlZiB0ZXN0X3dyaXRlc3RyX2V4dGVuZGVkX2xvY2FsX2hlYWRlcl9pc3N1ZTEyMDIoc2VsZik6CiAgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsICd3JykgYXMgb3JpZ196aXA6CiAgICAgICAgICAgICBmb3IgZGF0YSBpbiAnYWJjZGVmZ2hpamtsbW5vcCc6CkBAIC0xMjcxLDI3ICsxMjU0LDI3IEBACiAgICAgICAgICAgICBmcC53cml0ZSgic2hvcnQgZmlsZSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHppcGZpbGUuQmFkWmlwRmlsZSwgemlwZmlsZS5aaXBGaWxlLCBURVNURk4pCiAKLSAgICBkZWYgdGVzdF9jbG9zZWRfemlwX3JhaXNlc19SdW50aW1lRXJyb3Ioc2VsZik6CisgICAgZGVmIHRlc3RfY2xvc2VkX3ppcF9yYWlzZXNfVmFsdWVFcnJvcihzZWxmKToKICAgICAgICAgIiIiVmVyaWZ5IHRoYXQgdGVzdHppcCgpIGRvZXNuJ3Qgc3dhbGxvdyBpbmFwcHJvcHJpYXRlIGV4Y2VwdGlvbnMuIiIiCiAgICAgICAgIGRhdGEgPSBpby5CeXRlc0lPKCkKICAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZGF0YSwgbW9kZT0idyIpIGFzIHppcGY6CiAgICAgICAgICAgICB6aXBmLndyaXRlc3RyKCJmb28udHh0IiwgIk8sIGZvciBhIE11c2Ugb2YgRmlyZSEiKQogCiAgICAgICAgICMgVGhpcyBpcyBjb3JyZWN0OyBjYWxsaW5nIC5yZWFkIG9uIGEgY2xvc2VkIFppcEZpbGUgc2hvdWxkIHJhaXNlCi0gICAgICAgICMgYSBSdW50aW1lRXJyb3IsIGFuZCBzbyBzaG91bGQgY2FsbGluZyAudGVzdHppcC4gIEFuIGVhcmxpZXIKKyAgICAgICAgIyBhIFZhbHVlRXJyb3IsIGFuZCBzbyBzaG91bGQgY2FsbGluZyAudGVzdHppcC4gIEFuIGVhcmxpZXIKICAgICAgICAgIyB2ZXJzaW9uIG9mIC50ZXN0emlwIHdvdWxkIHN3YWxsb3cgdGhpcyBleGNlcHRpb24gKGFuZCBhbnkgb3RoZXIpCiAgICAgICAgICMgYW5kIHJlcG9ydCB0aGF0IHRoZSBmaXJzdCBmaWxlIGluIHRoZSBhcmNoaXZlIHdhcyBjb3JydXB0LgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHppcGYucmVhZCwgImZvby50eHQiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHppcGYub3BlbiwgImZvby50eHQiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHppcGYudGVzdHppcCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCB6aXBmLndyaXRlc3RyLCAiYm9ndXMudHh0IiwgImJvZ3VzIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgemlwZi5yZWFkLCAiZm9vLnR4dCIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHppcGYub3BlbiwgImZvby50eHQiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB6aXBmLnRlc3R6aXApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHppcGYud3JpdGVzdHIsICJib2d1cy50eHQiLCAiYm9ndXMiKQogICAgICAgICB3aXRoIG9wZW4oVEVTVEZOLCAndycpIGFzIGY6CiAgICAgICAgICAgICBmLndyaXRlKCd6aXBmaWxlIHRlc3QgZGF0YScpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgemlwZi53cml0ZSwgVEVTVEZOKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB6aXBmLndyaXRlLCBURVNURk4pCiAKICAgICBkZWYgdGVzdF9iYWRfY29uc3RydWN0b3JfbW9kZShzZWxmKToKICAgICAgICAgIiIiQ2hlY2sgdGhhdCBiYWQgbW9kZXMgcGFzc2VkIHRvIFppcEZpbGUgY29uc3RydWN0b3IgYXJlIGNhdWdodC4iIiIKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCB6aXBmaWxlLlppcEZpbGUsIFRFU1RGTiwgInEiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB6aXBmaWxlLlppcEZpbGUsIFRFU1RGTiwgInEiKQogCiAgICAgZGVmIHRlc3RfYmFkX29wZW5fbW9kZShzZWxmKToKICAgICAgICAgIiIiQ2hlY2sgdGhhdCBiYWQgbW9kZXMgcGFzc2VkIHRvIFppcEZpbGUub3BlbiBhcmUgY2F1Z2h0LiIiIgpAQCAtMTI5OSw5ICsxMjgyLDEyIEBACiAgICAgICAgICAgICB6aXBmLndyaXRlc3RyKCJmb28udHh0IiwgIk8sIGZvciBhIE11c2Ugb2YgRmlyZSEiKQogCiAgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTiwgbW9kZT0iciIpIGFzIHppcGY6Ci0gICAgICAgICMgcmVhZCB0aGUgZGF0YSB0byBtYWtlIHN1cmUgdGhlIGZpbGUgaXMgdGhlcmUKKyAgICAgICAgICAgICMgcmVhZCB0aGUgZGF0YSB0byBtYWtlIHN1cmUgdGhlIGZpbGUgaXMgdGhlcmUKICAgICAgICAgICAgIHppcGYucmVhZCgiZm9vLnR4dCIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHppcGYub3BlbiwgImZvby50eHQiLCAicSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB6aXBmLm9wZW4sICJmb28udHh0IiwgInEiKQorICAgICAgICAgICAgIyB1bml2ZXJzYWwgbmV3bGluZXMgc3VwcG9ydCBpcyByZW1vdmVkCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB6aXBmLm9wZW4sICJmb28udHh0IiwgIlUiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgemlwZi5vcGVuLCAiZm9vLnR4dCIsICJyVSIpCiAKICAgICBkZWYgdGVzdF9yZWFkMChzZWxmKToKICAgICAgICAgIiIiQ2hlY2sgdGhhdCBjYWxsaW5nIHJlYWQoMCkgb24gYSBaaXBFeHRGaWxlIG9iamVjdCByZXR1cm5zIGFuIGVtcHR5CkBAIC0xMzI0LDcgKzEzMTAsNyBAQAogICAgIGRlZiB0ZXN0X2JhZF9jb21wcmVzc2lvbl9tb2RlKHNlbGYpOgogICAgICAgICAiIiJDaGVjayB0aGF0IGJhZCBjb21wcmVzc2lvbiBtZXRob2RzIHBhc3NlZCB0byBaaXBGaWxlLm9wZW4gYXJlCiAgICAgICAgIGNhdWdodC4iIiIKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCB6aXBmaWxlLlppcEZpbGUsIFRFU1RGTiwgInciLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgemlwZmlsZS5aaXBGaWxlLCBURVNURk4sICJ3IiwgLTEpCiAKICAgICBkZWYgdGVzdF91bnN1cHBvcnRlZF9jb21wcmVzc2lvbihzZWxmKToKICAgICAgICAgIyBkYXRhIGlzIGRlY2xhcmVkIGFzIHNocnVuaywgYnV0IGFjdHVhbGx5IGRlZmxhdGVkCkBAIC0xNDcyLDYgKzE0NTgsMzUgQEAKICAgICAgICAgICAgICMgdGVzdHppcCByZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBmaXJzdCBjb3JydXB0IGZpbGUsIG9yIE5vbmUKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHppcGYudGVzdHppcCgpKQogCisgICAgZGVmIHRlc3Rfb3Blbl9jb25mbGljdGluZ19oYW5kbGVzKHNlbGYpOgorICAgICAgICAjIEl0J3Mgb25seSBwb3NzaWJsZSB0byBvcGVuIG9uZSB3cml0YWJsZSBmaWxlIGhhbmRsZSBhdCBhIHRpbWUKKyAgICAgICAgbXNnMSA9IGIiSXQncyBmdW4gdG8gY2hhcnRlciBhbiBhY2NvdW50YW50ISIKKyAgICAgICAgbXNnMiA9IGIiQW5kIHNhaWwgdGhlIHdpZGUgYWNjb3VudGFudCBzZWEiCisgICAgICAgIG1zZzMgPSBiIlRvIGZpbmQsIGV4cGxvcmUgdGhlIGZ1bmRzIG9mZnNob3JlIgorICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4yLCAndycsIHppcGZpbGUuWklQX1NUT1JFRCkgYXMgemlwZjoKKyAgICAgICAgICAgIHdpdGggemlwZi5vcGVuKCdmb28nLCBtb2RlPSd3JykgYXMgdzI6CisgICAgICAgICAgICAgICAgdzIud3JpdGUobXNnMSkKKyAgICAgICAgICAgIHdpdGggemlwZi5vcGVuKCdiYXInLCBtb2RlPSd3JykgYXMgdzE6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgemlwZi5vcGVuKCdoYW5kbGUnLCBtb2RlPSd3JykKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgICAgICAgICB6aXBmLm9wZW4oJ2ZvbycsIG1vZGU9J3InKQorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICAgICAgICAgIHppcGYud3JpdGVzdHIoJ3N0cicsICdhYmNkZScpCisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgemlwZi53cml0ZShfX2ZpbGVfXywgJ2ZpbGUnKQorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICAgICAgICAgIHppcGYuY2xvc2UoKQorICAgICAgICAgICAgICAgIHcxLndyaXRlKG1zZzIpCisgICAgICAgICAgICB3aXRoIHppcGYub3BlbignYmF6JywgbW9kZT0ndycpIGFzIHcyOgorICAgICAgICAgICAgICAgIHcyLndyaXRlKG1zZzMpCisKKyAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoVEVTVEZOMiwgJ3InKSBhcyB6aXBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aXBmLnJlYWQoJ2ZvbycpLCBtc2cxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aXBmLnJlYWQoJ2JhcicpLCBtc2cyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aXBmLnJlYWQoJ2JheicpLCBtc2czKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aXBmLm5hbWVsaXN0KCksIFsnZm9vJywgJ2JhcicsICdiYXonXSkKKwogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgdW5saW5rKFRFU1RGTikKICAgICAgICAgdW5saW5rKFRFU1RGTjIpCkBAIC0xODA1LDYgKzE4MjAsMjIgQEAKICAgICAgICAgICAgICAgICAgICAgd2l0aCB6aXBmLm9wZW4oJ3R3b3MnKSBhcyB6b3BlbjoKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoem9wZW4ucmVhZCgpLCBiJzIyMicpCiAKKyAgICBkZWYgdGVzdF9vcGVuX3dyaXRlKHNlbGYpOgorICAgICAgICBmb3Igd3JhcHBlciBpbiAobGFtYmRhIGY6IGYpLCBUZWxsYWJsZSwgVW5zZWVrYWJsZToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHdyYXBwZXI9d3JhcHBlcik6CisgICAgICAgICAgICAgICAgZiA9IGlvLkJ5dGVzSU8oKQorICAgICAgICAgICAgICAgIGYud3JpdGUoYidhYmMnKQorICAgICAgICAgICAgICAgIGJmID0gaW8uQnVmZmVyZWRXcml0ZXIoZikKKyAgICAgICAgICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZSh3cmFwcGVyKGJmKSwgJ3cnLCB6aXBmaWxlLlpJUF9TVE9SRUQpIGFzIHppcGY6CisgICAgICAgICAgICAgICAgICAgIHdpdGggemlwZi5vcGVuKCdvbmVzJywgJ3cnKSBhcyB6b3BlbjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHpvcGVuLndyaXRlKGInMTExJykKKyAgICAgICAgICAgICAgICAgICAgd2l0aCB6aXBmLm9wZW4oJ3R3b3MnLCAndycpIGFzIHpvcGVuOgorICAgICAgICAgICAgICAgICAgICAgICAgem9wZW4ud3JpdGUoYicyMjInKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5nZXR2YWx1ZSgpWzo1XSwgYidhYmNQSycpCisgICAgICAgICAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZikgYXMgemlwZjoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aXBmLnJlYWQoJ29uZXMnKSwgYicxMTEnKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppcGYucmVhZCgndHdvcycpLCBiJzIyMicpCisKIAogQHJlcXVpcmVzX3psaWIKIGNsYXNzIFRlc3RzV2l0aE11bHRpcGxlT3BlbnModW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMTkxNSw2ICsxOTQ2LDE5IEBACiAgICAgICAgIHdpdGggb3Blbihvcy5kZXZudWxsKSBhcyBmOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGYuZmlsZW5vKCksIDEwMCkKIAorICAgIGRlZiB0ZXN0X3dyaXRlX3doaWxlX3JlYWRpbmcoc2VsZik6CisgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsICd3JywgemlwZmlsZS5aSVBfREVGTEFURUQpIGFzIHppcGY6CisgICAgICAgICAgICB6aXBmLndyaXRlc3RyKCdvbmVzJywgc2VsZi5kYXRhMSkKKyAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoVEVTVEZOMiwgJ2EnLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCkgYXMgemlwZjoKKyAgICAgICAgICAgIHdpdGggemlwZi5vcGVuKCdvbmVzJywgJ3InKSBhcyByMToKKyAgICAgICAgICAgICAgICBkYXRhMSA9IHIxLnJlYWQoNTAwKQorICAgICAgICAgICAgICAgIHdpdGggemlwZi5vcGVuKCd0d29zJywgJ3cnKSBhcyB3MToKKyAgICAgICAgICAgICAgICAgICAgdzEud3JpdGUoc2VsZi5kYXRhMikKKyAgICAgICAgICAgICAgICBkYXRhMSArPSByMS5yZWFkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhMSwgc2VsZi5kYXRhMSkKKyAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoVEVTVEZOMikgYXMgemlwZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemlwZi5yZWFkKCd0d29zJyksIHNlbGYuZGF0YTIpCisKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHVubGluayhURVNURk4yKQogCkBAIC0xOTg0LDEzNyArMjAyOCwxOSBAQAogICAgICAgICAgICAgdW5saW5rKFRFU1RGTikKIAogCi1jbGFzcyBBYnN0cmFjdFVuaXZlcnNhbE5ld2xpbmVUZXN0czoKLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgotICAgICAgICBjbHMubGluZV9nZW4gPSBbYnl0ZXMoIlRlc3Qgb2YgemlwZmlsZSBsaW5lICVkLiIgJSBpLCAiYXNjaWkiKQotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoRklYRURURVNUX1NJWkUpXQotICAgICAgICBjbHMuc2VwcyA9IChiJ1xyJywgYidcclxuJywgYidcbicpCi0gICAgICAgIGNscy5hcmNkYXRhID0ge30KLSAgICAgICAgZm9yIG4sIHMgaW4gZW51bWVyYXRlKGNscy5zZXBzKToKLSAgICAgICAgICAgIGNscy5hcmNkYXRhW3NdID0gcy5qb2luKGNscy5saW5lX2dlbikgKyBzCitjbGFzcyBaaXBJbmZvVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2Zyb21fZmlsZShzZWxmKToKKyAgICAgICAgemkgPSB6aXBmaWxlLlppcEluZm8uZnJvbV9maWxlKF9fZmlsZV9fKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvc2l4cGF0aC5iYXNlbmFtZSh6aS5maWxlbmFtZSksICd0ZXN0X3ppcGZpbGUucHknKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHppLmlzX2RpcigpKQogCi0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmFyY2ZpbGVzID0ge30KLSAgICAgICAgZm9yIG4sIHMgaW4gZW51bWVyYXRlKHNlbGYuc2Vwcyk6Ci0gICAgICAgICAgICBzZWxmLmFyY2ZpbGVzW3NdID0gJyVzLSVkJyAlIChURVNURk4sIG4pCi0gICAgICAgICAgICB3aXRoIG9wZW4oc2VsZi5hcmNmaWxlc1tzXSwgIndiIikgYXMgZjoKLSAgICAgICAgICAgICAgICBmLndyaXRlKHNlbGYuYXJjZGF0YVtzXSkKLQotICAgIGRlZiBtYWtlX3Rlc3RfYXJjaGl2ZShzZWxmLCBmLCBjb21wcmVzc2lvbik6Ci0gICAgICAgICMgQ3JlYXRlIHRoZSBaSVAgYXJjaGl2ZQotICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShmLCAidyIsIGNvbXByZXNzaW9uKSBhcyB6aXBmcDoKLSAgICAgICAgICAgIGZvciBmbiBpbiBzZWxmLmFyY2ZpbGVzLnZhbHVlcygpOgotICAgICAgICAgICAgICAgIHppcGZwLndyaXRlKGZuLCBmbikKLQotICAgIGRlZiByZWFkX3Rlc3Qoc2VsZiwgZiwgY29tcHJlc3Npb24pOgotICAgICAgICBzZWxmLm1ha2VfdGVzdF9hcmNoaXZlKGYsIGNvbXByZXNzaW9uKQotCi0gICAgICAgICMgUmVhZCB0aGUgWklQIGFyY2hpdmUKLSAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgInIiKSBhcyB6aXBmcDoKLSAgICAgICAgICAgIGZvciBzZXAsIGZuIGluIHNlbGYuYXJjZmlsZXMuaXRlbXMoKToKLSAgICAgICAgICAgICAgICB3aXRoIG9wZW5VKHppcGZwLCBmbikgYXMgZnA6Ci0gICAgICAgICAgICAgICAgICAgIHppcGRhdGEgPSBmcC5yZWFkKCkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuYXJjZGF0YVtzZXBdLCB6aXBkYXRhKQotCi0gICAgZGVmIHRlc3RfcmVhZChzZWxmKToKLSAgICAgICAgZm9yIGYgaW4gZ2V0X2ZpbGVzKHNlbGYpOgotICAgICAgICAgICAgc2VsZi5yZWFkX3Rlc3QoZiwgc2VsZi5jb21wcmVzc2lvbikKLQotICAgIGRlZiByZWFkbGluZV9yZWFkX3Rlc3Qoc2VsZiwgZiwgY29tcHJlc3Npb24pOgotICAgICAgICBzZWxmLm1ha2VfdGVzdF9hcmNoaXZlKGYsIGNvbXByZXNzaW9uKQotCi0gICAgICAgICMgUmVhZCB0aGUgWklQIGFyY2hpdmUKLSAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgInIiKSBhcyB6aXBmcDoKLSAgICAgICAgICAgIGZvciBzZXAsIGZuIGluIHNlbGYuYXJjZmlsZXMuaXRlbXMoKToKLSAgICAgICAgICAgICAgICB3aXRoIG9wZW5VKHppcGZwLCBmbikgYXMgemlwb3BlbjoKLSAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGInJwotICAgICAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgICAgICAgICAgcmVhZCA9IHppcG9wZW4ucmVhZGxpbmUoKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHJlYWQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgKz0gcmVhZAotCi0gICAgICAgICAgICAgICAgICAgICAgICByZWFkID0gemlwb3Blbi5yZWFkKDUpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgcmVhZDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSArPSByZWFkCi0KLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgc2VsZi5hcmNkYXRhW2InXG4nXSkKLQotICAgIGRlZiB0ZXN0X3JlYWRsaW5lX3JlYWQoc2VsZik6Ci0gICAgICAgIGZvciBmIGluIGdldF9maWxlcyhzZWxmKToKLSAgICAgICAgICAgIHNlbGYucmVhZGxpbmVfcmVhZF90ZXN0KGYsIHNlbGYuY29tcHJlc3Npb24pCi0KLSAgICBkZWYgcmVhZGxpbmVfdGVzdChzZWxmLCBmLCBjb21wcmVzc2lvbik6Ci0gICAgICAgIHNlbGYubWFrZV90ZXN0X2FyY2hpdmUoZiwgY29tcHJlc3Npb24pCi0KLSAgICAgICAgIyBSZWFkIHRoZSBaSVAgYXJjaGl2ZQotICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShmLCAiciIpIGFzIHppcGZwOgotICAgICAgICAgICAgZm9yIHNlcCwgZm4gaW4gc2VsZi5hcmNmaWxlcy5pdGVtcygpOgotICAgICAgICAgICAgICAgIHdpdGggb3BlblUoemlwZnAsIGZuKSBhcyB6aXBvcGVuOgotICAgICAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBzZWxmLmxpbmVfZ2VuOgotICAgICAgICAgICAgICAgICAgICAgICAgbGluZWRhdGEgPSB6aXBvcGVuLnJlYWRsaW5lKCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGluZWRhdGEsIGxpbmUgKyBiJ1xuJykKLQotICAgIGRlZiB0ZXN0X3JlYWRsaW5lKHNlbGYpOgotICAgICAgICBmb3IgZiBpbiBnZXRfZmlsZXMoc2VsZik6Ci0gICAgICAgICAgICBzZWxmLnJlYWRsaW5lX3Rlc3QoZiwgc2VsZi5jb21wcmVzc2lvbikKLQotICAgIGRlZiByZWFkbGluZXNfdGVzdChzZWxmLCBmLCBjb21wcmVzc2lvbik6Ci0gICAgICAgIHNlbGYubWFrZV90ZXN0X2FyY2hpdmUoZiwgY29tcHJlc3Npb24pCi0KLSAgICAgICAgIyBSZWFkIHRoZSBaSVAgYXJjaGl2ZQotICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShmLCAiciIpIGFzIHppcGZwOgotICAgICAgICAgICAgZm9yIHNlcCwgZm4gaW4gc2VsZi5hcmNmaWxlcy5pdGVtcygpOgotICAgICAgICAgICAgICAgIHdpdGggb3BlblUoemlwZnAsIGZuKSBhcyBmcDoKLSAgICAgICAgICAgICAgICAgICAgemlwbGluZXMgPSBmcC5yZWFkbGluZXMoKQotICAgICAgICAgICAgICAgIGZvciBsaW5lLCB6aXBsaW5lIGluIHppcChzZWxmLmxpbmVfZ2VuLCB6aXBsaW5lcyk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemlwbGluZSwgbGluZSArIGInXG4nKQotCi0gICAgZGVmIHRlc3RfcmVhZGxpbmVzKHNlbGYpOgotICAgICAgICBmb3IgZiBpbiBnZXRfZmlsZXMoc2VsZik6Ci0gICAgICAgICAgICBzZWxmLnJlYWRsaW5lc190ZXN0KGYsIHNlbGYuY29tcHJlc3Npb24pCi0KLSAgICBkZWYgaXRlcmxpbmVzX3Rlc3Qoc2VsZiwgZiwgY29tcHJlc3Npb24pOgotICAgICAgICBzZWxmLm1ha2VfdGVzdF9hcmNoaXZlKGYsIGNvbXByZXNzaW9uKQotCi0gICAgICAgICMgUmVhZCB0aGUgWklQIGFyY2hpdmUKLSAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgInIiKSBhcyB6aXBmcDoKLSAgICAgICAgICAgIGZvciBzZXAsIGZuIGluIHNlbGYuYXJjZmlsZXMuaXRlbXMoKToKLSAgICAgICAgICAgICAgICB3aXRoIG9wZW5VKHppcGZwLCBmbikgYXMgZnA6Ci0gICAgICAgICAgICAgICAgICAgIGZvciBsaW5lLCB6aXBsaW5lIGluIHppcChzZWxmLmxpbmVfZ2VuLCBmcCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppcGxpbmUsIGxpbmUgKyBiJ1xuJykKLQotICAgIGRlZiB0ZXN0X2l0ZXJsaW5lcyhzZWxmKToKLSAgICAgICAgZm9yIGYgaW4gZ2V0X2ZpbGVzKHNlbGYpOgotICAgICAgICAgICAgc2VsZi5pdGVybGluZXNfdGVzdChmLCBzZWxmLmNvbXByZXNzaW9uKQotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICBmb3Igc2VwLCBmbiBpbiBzZWxmLmFyY2ZpbGVzLml0ZW1zKCk6Ci0gICAgICAgICAgICB1bmxpbmsoZm4pCi0gICAgICAgIHVubGluayhURVNURk4pCi0gICAgICAgIHVubGluayhURVNURk4yKQotCi0KLWNsYXNzIFN0b3JlZFVuaXZlcnNhbE5ld2xpbmVUZXN0cyhBYnN0cmFjdFVuaXZlcnNhbE5ld2xpbmVUZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgY29tcHJlc3Npb24gPSB6aXBmaWxlLlpJUF9TVE9SRUQKLQotQHJlcXVpcmVzX3psaWIKLWNsYXNzIERlZmxhdGVVbml2ZXJzYWxOZXdsaW5lVGVzdHMoQWJzdHJhY3RVbml2ZXJzYWxOZXdsaW5lVGVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBjb21wcmVzc2lvbiA9IHppcGZpbGUuWklQX0RFRkxBVEVECi0KLUByZXF1aXJlc19iejIKLWNsYXNzIEJ6aXAyVW5pdmVyc2FsTmV3bGluZVRlc3RzKEFic3RyYWN0VW5pdmVyc2FsTmV3bGluZVRlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGNvbXByZXNzaW9uID0gemlwZmlsZS5aSVBfQlpJUDIKLQotQHJlcXVpcmVzX2x6bWEKLWNsYXNzIEx6bWFVbml2ZXJzYWxOZXdsaW5lVGVzdHMoQWJzdHJhY3RVbml2ZXJzYWxOZXdsaW5lVGVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBjb21wcmVzc2lvbiA9IHppcGZpbGUuWklQX0xaTUEKKyAgICBkZWYgdGVzdF9mcm9tX2RpcihzZWxmKToKKyAgICAgICAgZGlycGF0aCA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgoX19maWxlX18pKQorICAgICAgICB6aSA9IHppcGZpbGUuWmlwSW5mby5mcm9tX2ZpbGUoZGlycGF0aCwgJ3N0ZGxpYl90ZXN0cycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemkuZmlsZW5hbWUsICdzdGRsaWJfdGVzdHMvJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHppLmlzX2RpcigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppLmNvbXByZXNzX3R5cGUsIHppcGZpbGUuWklQX1NUT1JFRCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aS5maWxlX3NpemUsIDApCiAKIAogY2xhc3MgQ29tbWFuZExpbmVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTIxNzUsNyArMjEwMSw3IEBACiAgICAgICAgICAgICAgICAgZm9yIHppIGluIHpmLmluZm9saXN0KCk6CiAgICAgICAgICAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oZXh0ZGlyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6aS5maWxlbmFtZS5yZXBsYWNlKCcvJywgb3Muc2VwKSkKLSAgICAgICAgICAgICAgICAgICAgaWYgemkuZmlsZW5hbWUuZW5kc3dpdGgoJy8nKToKKyAgICAgICAgICAgICAgICAgICAgaWYgemkuaXNfZGlyKCk6CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2RpcihwYXRoKSkKICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShwYXRoKSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0LnB5IGIvTGliL3Rlc3QvdGVzdF96aXBpbXBvcnQucHkKaW5kZXggZDViM2IyMi4uN2RkYmM1MCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF96aXBpbXBvcnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF96aXBpbXBvcnQucHkKQEAgLTM5OCw3ICszOTgsOCBAQAogICAgICAgICBwYWNrZGlyMiA9IHBhY2tkaXIgKyBURVNUUEFDSzIgKyBvcy5zZXAKICAgICAgICAgZmlsZXMgPSB7cGFja2RpciArICJfX2luaXRfXyIgKyBweWNfZXh0OiAoTk9XLCB0ZXN0X3B5YyksCiAgICAgICAgICAgICAgICAgIHBhY2tkaXIyICsgIl9faW5pdF9fIiArIHB5Y19leHQ6IChOT1csIHRlc3RfcHljKSwKLSAgICAgICAgICAgICAgICAgcGFja2RpcjIgKyBURVNUTU9EICsgcHljX2V4dDogKE5PVywgdGVzdF9weWMpfQorICAgICAgICAgICAgICAgICBwYWNrZGlyMiArIFRFU1RNT0QgKyBweWNfZXh0OiAoTk9XLCB0ZXN0X3B5YyksCisgICAgICAgICAgICAgICAgICJzcGFtIiArIHB5Y19leHQ6IChOT1csIHRlc3RfcHljKX0KIAogICAgICAgICB6ID0gWmlwRmlsZShURU1QX1pJUCwgInciKQogICAgICAgICB0cnk6CkBAIC00MTIsNiArNDEzLDE0IEBACiAgICAgICAgICAgICB6aSA9IHppcGltcG9ydC56aXBpbXBvcnRlcihURU1QX1pJUCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemkuYXJjaGl2ZSwgVEVNUF9aSVApCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppLmlzX3BhY2thZ2UoVEVTVFBBQ0spLCBUcnVlKQorCisgICAgICAgICAgICBmaW5kX21vZCA9IHppLmZpbmRfbW9kdWxlKCdzcGFtJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGZpbmRfbW9kKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGZpbmRfbW9kLCB6aXBpbXBvcnQuemlwaW1wb3J0ZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGZpbmRfbW9kLmlzX3BhY2thZ2UoJ3NwYW0nKSkKKyAgICAgICAgICAgIGxvYWRfbW9kID0gZmluZF9tb2QubG9hZF9tb2R1bGUoJ3NwYW0nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaW5kX21vZC5nZXRfZmlsZW5hbWUoJ3NwYW0nKSwgbG9hZF9tb2QuX19maWxlX18pCisKICAgICAgICAgICAgIG1vZCA9IHppLmxvYWRfbW9kdWxlKFRFU1RQQUNLKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aS5nZXRfZmlsZW5hbWUoVEVTVFBBQ0spLCBtb2QuX19maWxlX18pCiAKQEAgLTQ3MSw2ICs0ODAsMTYgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCiAgICAgICAgICAgICAgICAgemkuaXNfcGFja2FnZShURVNUUEFDSzIgKyBvcy5zZXAgKyBURVNUTU9EKSwgRmFsc2UpCiAKKyAgICAgICAgICAgIHBrZ19wYXRoID0gVEVNUF9aSVAgKyBvcy5zZXAgKyBwYWNrZGlyICsgVEVTVFBBQ0syCisgICAgICAgICAgICB6aTIgPSB6aXBpbXBvcnQuemlwaW1wb3J0ZXIocGtnX3BhdGgpCisgICAgICAgICAgICBmaW5kX21vZF9kb3R0ZWQgPSB6aTIuZmluZF9tb2R1bGUoVEVTVE1PRCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGZpbmRfbW9kX2RvdHRlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShmaW5kX21vZF9kb3R0ZWQsIHppcGltcG9ydC56aXBpbXBvcnRlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoemkyLmlzX3BhY2thZ2UoVEVTVE1PRCkpCisgICAgICAgICAgICBsb2FkX21vZCA9IGZpbmRfbW9kX2RvdHRlZC5sb2FkX21vZHVsZShURVNUTU9EKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBmaW5kX21vZF9kb3R0ZWQuZ2V0X2ZpbGVuYW1lKFRFU1RNT0QpLCBsb2FkX21vZC5fX2ZpbGVfXykKKwogICAgICAgICAgICAgbW9kX3BhdGggPSBURVNUUEFDSzIgKyBvcy5zZXAgKyBURVNUTU9ECiAgICAgICAgICAgICBtb2RfbmFtZSA9IG1vZHVsZV9wYXRoX3RvX2RvdHRlZF9uYW1lKG1vZF9wYXRoKQogICAgICAgICAgICAgbW9kID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUobW9kX25hbWUpCkBAIC02MjMsOCArNjQyLDEwIEBACiAKICAgICAgICAgemlwaW1wb3J0LnppcGltcG9ydGVyKGZpbGVuYW1lKQogICAgICAgICB6aXBpbXBvcnQuemlwaW1wb3J0ZXIob3MuZnNlbmNvZGUoZmlsZW5hbWUpKQotICAgICAgICB6aXBpbXBvcnQuemlwaW1wb3J0ZXIoYnl0ZWFycmF5KG9zLmZzZW5jb2RlKGZpbGVuYW1lKSkpCi0gICAgICAgIHppcGltcG9ydC56aXBpbXBvcnRlcihtZW1vcnl2aWV3KG9zLmZzZW5jb2RlKGZpbGVuYW1lKSkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgemlwaW1wb3J0LnppcGltcG9ydGVyKGJ5dGVhcnJheShvcy5mc2VuY29kZShmaWxlbmFtZSkpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHppcGltcG9ydC56aXBpbXBvcnRlcihtZW1vcnl2aWV3KG9zLmZzZW5jb2RlKGZpbGVuYW1lKSkpCiAKIAogQHN1cHBvcnQucmVxdWlyZXNfemxpYgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF96aXBpbXBvcnRfc3VwcG9ydC5weSBiL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0X3N1cHBvcnQucHkKaW5kZXggNTkxMzYyMi4uODRkNTI2YyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF96aXBpbXBvcnRfc3VwcG9ydC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3ppcGltcG9ydF9zdXBwb3J0LnB5CkBAIC0xMiw3ICsxMiw2IEBACiBpbXBvcnQgZG9jdGVzdAogaW1wb3J0IGluc3BlY3QKIGltcG9ydCBsaW5lY2FjaGUKLWltcG9ydCBwZGIKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgKHNwYXduX3B5dGhvbiwga2lsbF9weXRob24sIGFzc2VydF9weXRob25fb2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFrZV9zY3JpcHQsIG1ha2VfemlwX3NjcmlwdCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfemxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfemxpYi5weQppbmRleCA2ZmVhODkzLi4yMDE3NGQ4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3psaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF96bGliLnB5CkBAIC0xNjQsNiArMTY0LDE2IEBACiAgICAgICAgIHggPSB6bGliLmNvbXByZXNzKEhBTUxFVF9TQ0VORSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6bGliLmRlY29tcHJlc3MoeCksIEhBTUxFVF9TQ0VORSkKIAorICAgIGRlZiB0ZXN0X2tleXdvcmRzKHNlbGYpOgorICAgICAgICB4ID0gemxpYi5jb21wcmVzcyhIQU1MRVRfU0NFTkUsIGxldmVsPTMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemxpYi5kZWNvbXByZXNzKHgpLCBIQU1MRVRfU0NFTkUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHpsaWIuY29tcHJlc3MoZGF0YT1IQU1MRVRfU0NFTkUsIGxldmVsPTMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemxpYi5kZWNvbXByZXNzKHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdiaXRzPXpsaWIuTUFYX1dCSVRTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZzaXplPXpsaWIuREVGX0JVRl9TSVpFKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBIQU1MRVRfU0NFTkUpCisKICAgICBkZWYgdGVzdF9zcGVlY2gxMjgoc2VsZik6CiAgICAgICAgICMgY29tcHJlc3MgbW9yZSBkYXRhCiAgICAgICAgIGRhdGEgPSBIQU1MRVRfU0NFTkUgKiAxMjgKQEAgLTIzNCw2ICsyNDQsMjcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShkY28udW5jb25zdW1lZF90YWlsLCBieXRlcykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShkY28udW51c2VkX2RhdGEsIGJ5dGVzKQogCisgICAgZGVmIHRlc3Rfa2V5d29yZHMoc2VsZik6CisgICAgICAgIGxldmVsID0gMgorICAgICAgICBtZXRob2QgPSB6bGliLkRFRkxBVEVECisgICAgICAgIHdiaXRzID0gLTEyCisgICAgICAgIG1lbUxldmVsID0gOQorICAgICAgICBzdHJhdGVneSA9IHpsaWIuWl9GSUxURVJFRAorICAgICAgICBjbyA9IHpsaWIuY29tcHJlc3NvYmoobGV2ZWw9bGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q9bWV0aG9kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2JpdHM9d2JpdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1MZXZlbD1tZW1MZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmF0ZWd5PXN0cmF0ZWd5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemRpY3Q9YiIiKQorICAgICAgICBkbyA9IHpsaWIuZGVjb21wcmVzc29iaih3Yml0cz13Yml0cywgemRpY3Q9YiIiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjby5jb21wcmVzcyhkYXRhPUhBTUxFVF9TQ0VORSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgZG8uZGVjb21wcmVzcyhkYXRhPXpsaWIuY29tcHJlc3MoSEFNTEVUX1NDRU5FKSkKKyAgICAgICAgeCA9IGNvLmNvbXByZXNzKEhBTUxFVF9TQ0VORSkgKyBjby5mbHVzaCgpCisgICAgICAgIHkgPSBkby5kZWNvbXByZXNzKHgsIG1heF9sZW5ndGg9bGVuKEhBTUxFVF9TQ0VORSkpICsgZG8uZmx1c2goKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEhBTUxFVF9TQ0VORSwgeSkKKwogICAgIGRlZiB0ZXN0X2NvbXByZXNzb3B0aW9ucyhzZWxmKToKICAgICAgICAgIyBzcGVjaWZ5IGxvdHMgb2Ygb3B0aW9ucyB0byBjb21wcmVzc29iaigpCiAgICAgICAgIGxldmVsID0gMgpAQCAtMjQ5LDEwICsyODAsNiBAQAogICAgICAgICB5MiA9IGRjby5mbHVzaCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoSEFNTEVUX1NDRU5FLCB5MSArIHkyKQogCi0gICAgICAgICMga2V5d29yZCBhcmd1bWVudHMgc2hvdWxkIGFsc28gYmUgc3VwcG9ydGVkCi0gICAgICAgIHpsaWIuY29tcHJlc3NvYmoobGV2ZWw9bGV2ZWwsIG1ldGhvZD1tZXRob2QsIHdiaXRzPXdiaXRzLAotICAgICAgICAgICAgbWVtTGV2ZWw9bWVtTGV2ZWwsIHN0cmF0ZWd5PXN0cmF0ZWd5LCB6ZGljdD1iIiIpCi0KICAgICBkZWYgdGVzdF9jb21wcmVzc2luY3JlbWVudGFsKHNlbGYpOgogICAgICAgICAjIGNvbXByZXNzIG9iamVjdCBpbiBzdGVwcywgZGVjb21wcmVzcyBvYmplY3QgYXMgb25lLXNob3QKICAgICAgICAgZGF0YSA9IEhBTUxFVF9TQ0VORSAqIDEyOApkaWZmIC0tZ2l0IGEvTGliL3RocmVhZGluZy5weSBiL0xpYi90aHJlYWRpbmcucHkKaW5kZXggMDZiN2I5Yi4uNDgyOWZmNCAxMDA2NDQKLS0tIGEvTGliL3RocmVhZGluZy5weQorKysgYi9MaWIvdGhyZWFkaW5nLnB5CkBAIC0yMiw5ICsyMiwxMSBAQAogIyB3aXRoIHRoZSBtdWx0aXByb2Nlc3NpbmcgbW9kdWxlLCB3aGljaCBkb2Vzbid0IHByb3ZpZGUgdGhlIG9sZAogIyBKYXZhIGluc3BpcmVkIG5hbWVzLgogCi1fX2FsbF9fID0gWydhY3RpdmVfY291bnQnLCAnQ29uZGl0aW9uJywgJ2N1cnJlbnRfdGhyZWFkJywgJ2VudW1lcmF0ZScsICdFdmVudCcsCi0gICAgICAgICAgICdMb2NrJywgJ1JMb2NrJywgJ1NlbWFwaG9yZScsICdCb3VuZGVkU2VtYXBob3JlJywgJ1RocmVhZCcsICdCYXJyaWVyJywKLSAgICAgICAgICAgJ1RpbWVyJywgJ1RocmVhZEVycm9yJywgJ3NldHByb2ZpbGUnLCAnc2V0dHJhY2UnLCAnbG9jYWwnLCAnc3RhY2tfc2l6ZSddCitfX2FsbF9fID0gWydnZXRfaWRlbnQnLCAnYWN0aXZlX2NvdW50JywgJ0NvbmRpdGlvbicsICdjdXJyZW50X3RocmVhZCcsCisgICAgICAgICAgICdlbnVtZXJhdGUnLCAnbWFpbl90aHJlYWQnLCAnVElNRU9VVF9NQVgnLAorICAgICAgICAgICAnRXZlbnQnLCAnTG9jaycsICdSTG9jaycsICdTZW1hcGhvcmUnLCAnQm91bmRlZFNlbWFwaG9yZScsICdUaHJlYWQnLAorICAgICAgICAgICAnQmFycmllcicsICdCcm9rZW5CYXJyaWVyRXJyb3InLCAnVGltZXInLCAnVGhyZWFkRXJyb3InLAorICAgICAgICAgICAnc2V0cHJvZmlsZScsICdzZXR0cmFjZScsICdsb2NhbCcsICdzdGFja19zaXplJ10KIAogIyBSZW5hbWUgc29tZSBzdHVmZiBzbyAiZnJvbSB0aHJlYWRpbmcgaW1wb3J0ICoiIGlzIHNhZmUKIF9zdGFydF9uZXdfdGhyZWFkID0gX3RocmVhZC5zdGFydF9uZXdfdGhyZWFkCmRpZmYgLS1naXQgYS9MaWIvdGltZWl0LnB5IGIvTGliL3RpbWVpdC5weQpvbGQgbW9kZSAxMDA3NTUKbmV3IG1vZGUgMTAwNjQ0CmluZGV4IDJkZTg4ZjcuLjI3NzBlZmEKLS0tIGEvTGliL3RpbWVpdC5weQorKysgYi9MaWIvdGltZWl0LnB5CkBAIC0yMDcsNiArMjA3LDI2IEBACiAgICAgICAgICAgICByLmFwcGVuZCh0KQogICAgICAgICByZXR1cm4gcgogCisgICAgZGVmIGF1dG9yYW5nZShzZWxmLCBjYWxsYmFjaz1Ob25lKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBudW1iZXIgb2YgbG9vcHMgc28gdGhhdCB0b3RhbCB0aW1lID49IDAuMi4KKworICAgICAgICBDYWxscyB0aGUgdGltZWl0IG1ldGhvZCB3aXRoICpudW1iZXIqIHNldCB0byBzdWNjZXNzaXZlIHBvd2VycyBvZgorICAgICAgICB0ZW4gKDEwLCAxMDAsIDEwMDAsIC4uLikgdXAgdG8gYSBtYXhpbXVtIG9mIG9uZSBiaWxsaW9uLCB1bnRpbAorICAgICAgICB0aGUgdGltZSB0YWtlbiBpcyBhdCBsZWFzdCAwLjIgc2Vjb25kLCBvciB0aGUgbWF4aW11bSBpcyByZWFjaGVkLgorICAgICAgICBSZXR1cm5zIGBgKG51bWJlciwgdGltZV90YWtlbilgYC4KKworICAgICAgICBJZiAqY2FsbGJhY2sqIGlzIGdpdmVuIGFuZCBpcyBub3QgTm9uZSwgaXQgd2lsbCBiZSBjYWxsZWQgYWZ0ZXIKKyAgICAgICAgZWFjaCB0cmlhbCB3aXRoIHR3byBhcmd1bWVudHM6IGBgY2FsbGJhY2sobnVtYmVyLCB0aW1lX3Rha2VuKWBgLgorICAgICAgICAiIiIKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMSwgMTApOgorICAgICAgICAgICAgbnVtYmVyID0gMTAqKmkKKyAgICAgICAgICAgIHRpbWVfdGFrZW4gPSBzZWxmLnRpbWVpdChudW1iZXIpCisgICAgICAgICAgICBpZiBjYWxsYmFjazoKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhudW1iZXIsIHRpbWVfdGFrZW4pCisgICAgICAgICAgICBpZiB0aW1lX3Rha2VuID49IDAuMjoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICByZXR1cm4gKG51bWJlciwgdGltZV90YWtlbikKKwogZGVmIHRpbWVpdChzdG10PSJwYXNzIiwgc2V0dXA9InBhc3MiLCB0aW1lcj1kZWZhdWx0X3RpbWVyLAogICAgICAgICAgICBudW1iZXI9ZGVmYXVsdF9udW1iZXIsIGdsb2JhbHM9Tm9uZSk6CiAgICAgIiIiQ29udmVuaWVuY2UgZnVuY3Rpb24gdG8gY3JlYXRlIFRpbWVyIG9iamVjdCBhbmQgY2FsbCB0aW1laXQgbWV0aG9kLiIiIgpAQCAtMjk1LDE3ICszMTUsMTYgQEAKICAgICB0ID0gVGltZXIoc3RtdCwgc2V0dXAsIHRpbWVyKQogICAgIGlmIG51bWJlciA9PSAwOgogICAgICAgICAjIGRldGVybWluZSBudW1iZXIgc28gdGhhdCAwLjIgPD0gdG90YWwgdGltZSA8IDIuMAotICAgICAgICBmb3IgaSBpbiByYW5nZSgxLCAxMCk6Ci0gICAgICAgICAgICBudW1iZXIgPSAxMCoqaQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHggPSB0LnRpbWVpdChudW1iZXIpCi0gICAgICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICAgICAgdC5wcmludF9leGMoKQotICAgICAgICAgICAgICAgIHJldHVybiAxCi0gICAgICAgICAgICBpZiB2ZXJib3NlOgotICAgICAgICAgICAgICAgIHByaW50KCIlZCBsb29wcyAtPiAlLipnIHNlY3MiICUgKG51bWJlciwgcHJlY2lzaW9uLCB4KSkKLSAgICAgICAgICAgIGlmIHggPj0gMC4yOgotICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGNhbGxiYWNrID0gTm9uZQorICAgICAgICBpZiB2ZXJib3NlOgorICAgICAgICAgICAgZGVmIGNhbGxiYWNrKG51bWJlciwgdGltZV90YWtlbik6CisgICAgICAgICAgICAgICAgbXNnID0gIntudW19IGxvb3BzIC0+IHtzZWNzOi57cHJlY31nfSBzZWNzIgorICAgICAgICAgICAgICAgIHByaW50KG1zZy5mb3JtYXQobnVtPW51bWJlciwgc2Vjcz10aW1lX3Rha2VuLCBwcmVjPXByZWNpc2lvbikpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG51bWJlciwgXyA9IHQuYXV0b3JhbmdlKGNhbGxiYWNrKQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICB0LnByaW50X2V4YygpCisgICAgICAgICAgICByZXR1cm4gMQogICAgIHRyeToKICAgICAgICAgciA9IHQucmVwZWF0KHJlcGVhdCwgbnVtYmVyKQogICAgIGV4Y2VwdDoKQEAgLTMxNywyMCArMzM2LDI2IEBACiAgICAgcHJpbnQoIiVkIGxvb3BzLCIgJSBudW1iZXIsIGVuZD0nICcpCiAgICAgdXNlYyA9IGJlc3QgKiAxZTYgLyBudW1iZXIKICAgICBpZiB0aW1lX3VuaXQgaXMgbm90IE5vbmU6Ci0gICAgICAgIHByaW50KCJiZXN0IG9mICVkOiAlLipnICVzIHBlciBsb29wIiAlIChyZXBlYXQsIHByZWNpc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWMvdW5pdHNbdGltZV91bml0XSwgdGltZV91bml0KSkKKyAgICAgICAgc2NhbGUgPSB1bml0c1t0aW1lX3VuaXRdCiAgICAgZWxzZToKLSAgICAgICAgaWYgdXNlYyA8IDEwMDA6Ci0gICAgICAgICAgICBwcmludCgiYmVzdCBvZiAlZDogJS4qZyB1c2VjIHBlciBsb29wIiAlIChyZXBlYXQsIHByZWNpc2lvbiwgdXNlYykpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBtc2VjID0gdXNlYyAvIDEwMDAKLSAgICAgICAgICAgIGlmIG1zZWMgPCAxMDAwOgotICAgICAgICAgICAgICAgIHByaW50KCJiZXN0IG9mICVkOiAlLipnIG1zZWMgcGVyIGxvb3AiICUgKHJlcGVhdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb24sIG1zZWMpKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWMgPSBtc2VjIC8gMTAwMAotICAgICAgICAgICAgICAgIHByaW50KCJiZXN0IG9mICVkOiAlLipnIHNlYyBwZXIgbG9vcCIgJSAocmVwZWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uLCBzZWMpKQorICAgICAgICBzY2FsZXMgPSBbKHNjYWxlLCB1bml0KSBmb3IgdW5pdCwgc2NhbGUgaW4gdW5pdHMuaXRlbXMoKV0KKyAgICAgICAgc2NhbGVzLnNvcnQocmV2ZXJzZT1UcnVlKQorICAgICAgICBmb3Igc2NhbGUsIHRpbWVfdW5pdCBpbiBzY2FsZXM6CisgICAgICAgICAgICBpZiB1c2VjID49IHNjYWxlOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgcHJpbnQoImJlc3Qgb2YgJWQ6ICUuKmcgJXMgcGVyIGxvb3AiICUgKHJlcGVhdCwgcHJlY2lzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VjL3NjYWxlLCB0aW1lX3VuaXQpKQorICAgIGJlc3QgPSBtaW4ocikKKyAgICB1c2VjID0gYmVzdCAqIDFlNiAvIG51bWJlcgorICAgIHdvcnN0ID0gbWF4KHIpCisgICAgaWYgd29yc3QgPj0gYmVzdCAqIDQ6CisgICAgICAgIHVzZWMgPSB3b3JzdCAqIDFlNiAvIG51bWJlcgorICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgd2FybmluZ3Mud2Fybl9leHBsaWNpdCgKKyAgICAgICAgICAgICJUaGUgdGVzdCByZXN1bHRzIGFyZSBsaWtlbHkgdW5yZWxpYWJsZS4gVGhlIHdvcnN0XG4iCisgICAgICAgICAgICAidGltZSAoJS4qZyAlcykgd2FzIG1vcmUgdGhhbiBmb3VyIHRpbWVzIHNsb3dlciB0aGFuIHRoZSBiZXN0IHRpbWUuIiAlCisgICAgICAgICAgICAocHJlY2lzaW9uLCB1c2VjL3NjYWxlLCB0aW1lX3VuaXQpLAorICAgICAgICAgICAgIFVzZXJXYXJuaW5nLCAnJywgMCkKICAgICByZXR1cm4gTm9uZQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgpkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvX19pbml0X18ucHkgYi9MaWIvdGtpbnRlci9fX2luaXRfXy5weQppbmRleCAxZWFhYjQ0Li5lZTI0MTVkIDEwMDY0NAotLS0gYS9MaWIvdGtpbnRlci9fX2luaXRfXy5weQorKysgYi9MaWIvdGtpbnRlci9fX2luaXRfXy5weQpAQCAtMzAsNiArMzAsNyBAQAogdGsubWFpbmxvb3AoKQogIiIiCiAKK2ltcG9ydCBlbnVtCiBpbXBvcnQgc3lzCiAKIGltcG9ydCBfdGtpbnRlciAjIElmIHRoaXMgZmFpbHMgeW91ciBQeXRob24gbWF5IG5vdCBiZSBjb25maWd1cmVkIGZvciBUawpAQCAtMTMyLDYgKzEzMyw1MCBAQAogICAgICAgICBkaWN0W2tleV0gPSB2YWx1ZQogICAgIHJldHVybiBkaWN0CiAKKworY2xhc3MgRXZlbnRUeXBlKHN0ciwgZW51bS5FbnVtKToKKyAgICBLZXlQcmVzcyA9ICcyJworICAgIEtleSA9IEtleVByZXNzLAorICAgIEtleVJlbGVhc2UgPSAnMycKKyAgICBCdXR0b25QcmVzcyA9ICc0JworICAgIEJ1dHRvbiA9IEJ1dHRvblByZXNzLAorICAgIEJ1dHRvblJlbGVhc2UgPSAnNScKKyAgICBNb3Rpb24gPSAnNicKKyAgICBFbnRlciA9ICc3JworICAgIExlYXZlID0gJzgnCisgICAgRm9jdXNJbiA9ICc5JworICAgIEZvY3VzT3V0ID0gJzEwJworICAgIEtleW1hcCA9ICcxMScgICAgICAgICAgICMgdW5kb2N1bWVudGVkCisgICAgRXhwb3NlID0gJzEyJworICAgIEdyYXBoaWNzRXhwb3NlID0gJzEzJyAgICMgdW5kb2N1bWVudGVkCisgICAgTm9FeHBvc2UgPSAnMTQnICAgICAgICAgIyB1bmRvY3VtZW50ZWQKKyAgICBWaXNpYmlsaXR5ID0gJzE1JworICAgIENyZWF0ZSA9ICcxNicKKyAgICBEZXN0cm95ID0gJzE3JworICAgIFVubWFwID0gJzE4JworICAgIE1hcCA9ICcxOScKKyAgICBNYXBSZXF1ZXN0ID0gJzIwJworICAgIFJlcGFyZW50ID0gJzIxJworICAgIENvbmZpZ3VyZSA9ICcyMicKKyAgICBDb25maWd1cmVSZXF1ZXN0ID0gJzIzJworICAgIEdyYXZpdHkgPSAnMjQnCisgICAgUmVzaXplUmVxdWVzdCA9ICcyNScKKyAgICBDaXJjdWxhdGUgPSAnMjYnCisgICAgQ2lyY3VsYXRlUmVxdWVzdCA9ICcyNycKKyAgICBQcm9wZXJ0eSA9ICcyOCcKKyAgICBTZWxlY3Rpb25DbGVhciA9ICcyOScgICAjIHVuZG9jdW1lbnRlZAorICAgIFNlbGVjdGlvblJlcXVlc3QgPSAnMzAnICMgdW5kb2N1bWVudGVkCisgICAgU2VsZWN0aW9uID0gJzMxJyAgICAgICAgIyB1bmRvY3VtZW50ZWQKKyAgICBDb2xvcm1hcCA9ICczMicKKyAgICBDbGllbnRNZXNzYWdlID0gJzMzJyAgICAjIHVuZG9jdW1lbnRlZAorICAgIE1hcHBpbmcgPSAnMzQnICAgICAgICAgICMgdW5kb2N1bWVudGVkCisgICAgVmlydHVhbEV2ZW50ID0gJzM1JywgICAgIyB1bmRvY3VtZW50ZWQKKyAgICBBY3RpdmF0ZSA9ICczNicsCisgICAgRGVhY3RpdmF0ZSA9ICczNycsCisgICAgTW91c2VXaGVlbCA9ICczOCcsCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLm5hbWUKKwogY2xhc3MgRXZlbnQ6CiAgICAgIiIiQ29udGFpbmVyIGZvciB0aGUgcHJvcGVydGllcyBvZiBhbiBldmVudC4KIApAQCAtMTc0LDcgKzIxOSw0MyBAQAogICAgIHdpZGdldCAtIHdpZGdldCBpbiB3aGljaCB0aGUgZXZlbnQgb2NjdXJyZWQKICAgICBkZWx0YSAtIGRlbHRhIG9mIHdoZWVsIG1vdmVtZW50IChNb3VzZVdoZWVsKQogICAgICIiIgotICAgIHBhc3MKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIGF0dHJzID0ge2s6IHYgZm9yIGssIHYgaW4gc2VsZi5fX2RpY3RfXy5pdGVtcygpIGlmIHYgIT0gJz8/J30KKyAgICAgICAgaWYgbm90IHNlbGYuY2hhcjoKKyAgICAgICAgICAgIGRlbCBhdHRyc1snY2hhciddCisgICAgICAgIGVsaWYgc2VsZi5jaGFyICE9ICc/Pyc6CisgICAgICAgICAgICBhdHRyc1snY2hhciddID0gcmVwcihzZWxmLmNoYXIpCisgICAgICAgIGlmIG5vdCBnZXRhdHRyKHNlbGYsICdzZW5kX2V2ZW50JywgVHJ1ZSk6CisgICAgICAgICAgICBkZWwgYXR0cnNbJ3NlbmRfZXZlbnQnXQorICAgICAgICBpZiBzZWxmLnN0YXRlID09IDA6CisgICAgICAgICAgICBkZWwgYXR0cnNbJ3N0YXRlJ10KKyAgICAgICAgZWxpZiBpc2luc3RhbmNlKHNlbGYuc3RhdGUsIGludCk6CisgICAgICAgICAgICBzdGF0ZSA9IHNlbGYuc3RhdGUKKyAgICAgICAgICAgIG1vZHMgPSAoJ1NoaWZ0JywgJ0xvY2snLCAnQ29udHJvbCcsCisgICAgICAgICAgICAgICAgICAgICdNb2QxJywgJ01vZDInLCAnTW9kMycsICdNb2Q0JywgJ01vZDUnLAorICAgICAgICAgICAgICAgICAgICAnQnV0dG9uMScsICdCdXR0b24yJywgJ0J1dHRvbjMnLCAnQnV0dG9uNCcsICdCdXR0b241JykKKyAgICAgICAgICAgIHMgPSBbXQorICAgICAgICAgICAgZm9yIGksIG4gaW4gZW51bWVyYXRlKG1vZHMpOgorICAgICAgICAgICAgICAgIGlmIHN0YXRlICYgKDEgPDwgaSk6CisgICAgICAgICAgICAgICAgICAgIHMuYXBwZW5kKG4pCisgICAgICAgICAgICBzdGF0ZSA9IHN0YXRlICYgfigoMTw8IGxlbihtb2RzKSkgLSAxKQorICAgICAgICAgICAgaWYgc3RhdGUgb3Igbm90IHM6CisgICAgICAgICAgICAgICAgcy5hcHBlbmQoaGV4KHN0YXRlKSkKKyAgICAgICAgICAgIGF0dHJzWydzdGF0ZSddID0gJ3wnLmpvaW4ocykKKyAgICAgICAgaWYgc2VsZi5kZWx0YSA9PSAwOgorICAgICAgICAgICAgZGVsIGF0dHJzWydkZWx0YSddCisgICAgICAgICMgd2lkZ2V0IHVzdWFsbHkgaXMga25vd24KKyAgICAgICAgIyBzZXJpYWwgYW5kIHRpbWUgYXJlIG5vdCB2ZXJ5IGludGVyZXN0aW5nCisgICAgICAgICMga2V5c3ltX251bSBkdXBsaWNhdGVzIGtleXN5bQorICAgICAgICAjIHhfcm9vdCBhbmQgeV9yb290IG1vc3RseSBkdXBsaWNhdGUgeCBhbmQgeQorICAgICAgICBrZXlzID0gKCdzZW5kX2V2ZW50JywKKyAgICAgICAgICAgICAgICAnc3RhdGUnLCAna2V5c3ltJywgJ2tleWNvZGUnLCAnY2hhcicsCisgICAgICAgICAgICAgICAgJ251bScsICdkZWx0YScsICdmb2N1cycsCisgICAgICAgICAgICAgICAgJ3gnLCAneScsICd3aWR0aCcsICdoZWlnaHQnKQorICAgICAgICByZXR1cm4gJzwlcyBldmVudCVzPicgJSAoCisgICAgICAgICAgICBzZWxmLnR5cGUsCisgICAgICAgICAgICAnJy5qb2luKCcgJXM9JXMnICUgKGssIGF0dHJzW2tdKSBmb3IgayBpbiBrZXlzIGlmIGsgaW4gYXR0cnMpCisgICAgICAgICkKIAogX3N1cHBvcnRfZGVmYXVsdF9yb290ID0gMQogX2RlZmF1bHRfcm9vdCA9IE5vbmUKQEAgLTI2MiwxNSArMzQzLDggQEAKICAgICBkZWYgZ2V0KHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdmFsdWUgb2YgdmFyaWFibGUuIiIiCiAgICAgICAgIHJldHVybiBzZWxmLl90ay5nbG9iYWxnZXR2YXIoc2VsZi5fbmFtZSkKLSAgICBkZWYgdHJhY2VfdmFyaWFibGUoc2VsZiwgbW9kZSwgY2FsbGJhY2spOgotICAgICAgICAiIiJEZWZpbmUgYSB0cmFjZSBjYWxsYmFjayBmb3IgdGhlIHZhcmlhYmxlLgogCi0gICAgICAgIE1PREUgaXMgb25lIG9mICJyIiwgInciLCAidSIgZm9yIHJlYWQsIHdyaXRlLCB1bmRlZmluZS4KLSAgICAgICAgQ0FMTEJBQ0sgbXVzdCBiZSBhIGZ1bmN0aW9uIHdoaWNoIGlzIGNhbGxlZCB3aGVuCi0gICAgICAgIHRoZSB2YXJpYWJsZSBpcyByZWFkLCB3cml0dGVuIG9yIHVuZGVmaW5lZC4KLQotICAgICAgICBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGNhbGxiYWNrLgotICAgICAgICAiIiIKKyAgICBkZWYgX3JlZ2lzdGVyKHNlbGYsIGNhbGxiYWNrKToKICAgICAgICAgZiA9IENhbGxXcmFwcGVyKGNhbGxiYWNrLCBOb25lLCBzZWxmLl9yb290KS5fX2NhbGxfXwogICAgICAgICBjYm5hbWUgPSByZXByKGlkKGYpKQogICAgICAgICB0cnk6CkBAIC0yODUsMTggKzM1OSwzMyBAQAogICAgICAgICBpZiBzZWxmLl90Y2xDb21tYW5kcyBpcyBOb25lOgogICAgICAgICAgICAgc2VsZi5fdGNsQ29tbWFuZHMgPSBbXQogICAgICAgICBzZWxmLl90Y2xDb21tYW5kcy5hcHBlbmQoY2JuYW1lKQotICAgICAgICBzZWxmLl90ay5jYWxsKCJ0cmFjZSIsICJ2YXJpYWJsZSIsIHNlbGYuX25hbWUsIG1vZGUsIGNibmFtZSkKICAgICAgICAgcmV0dXJuIGNibmFtZQotICAgIHRyYWNlID0gdHJhY2VfdmFyaWFibGUKLSAgICBkZWYgdHJhY2VfdmRlbGV0ZShzZWxmLCBtb2RlLCBjYm5hbWUpOgorCisgICAgZGVmIHRyYWNlX2FkZChzZWxmLCBtb2RlLCBjYWxsYmFjayk6CisgICAgICAgICIiIkRlZmluZSBhIHRyYWNlIGNhbGxiYWNrIGZvciB0aGUgdmFyaWFibGUuCisKKyAgICAgICAgTW9kZSBpcyBvbmUgb2YgInJlYWQiLCAid3JpdGUiLCAidW5zZXQiLCBvciBhIGxpc3Qgb3IgdHVwbGUgb2YKKyAgICAgICAgc3VjaCBzdHJpbmdzLgorICAgICAgICBDYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24gd2hpY2ggaXMgY2FsbGVkIHdoZW4gdGhlIHZhcmlhYmxlIGlzCisgICAgICAgIHJlYWQsIHdyaXR0ZW4gb3IgdW5zZXQuCisKKyAgICAgICAgUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBjYWxsYmFjay4KKyAgICAgICAgIiIiCisgICAgICAgIGNibmFtZSA9IHNlbGYuX3JlZ2lzdGVyKGNhbGxiYWNrKQorICAgICAgICBzZWxmLl90ay5jYWxsKCd0cmFjZScsICdhZGQnLCAndmFyaWFibGUnLAorICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX25hbWUsIG1vZGUsIChjYm5hbWUsKSkKKyAgICAgICAgcmV0dXJuIGNibmFtZQorCisgICAgZGVmIHRyYWNlX3JlbW92ZShzZWxmLCBtb2RlLCBjYm5hbWUpOgogICAgICAgICAiIiJEZWxldGUgdGhlIHRyYWNlIGNhbGxiYWNrIGZvciBhIHZhcmlhYmxlLgogCi0gICAgICAgIE1PREUgaXMgb25lIG9mICJyIiwgInciLCAidSIgZm9yIHJlYWQsIHdyaXRlLCB1bmRlZmluZS4KLSAgICAgICAgQ0JOQU1FIGlzIHRoZSBuYW1lIG9mIHRoZSBjYWxsYmFjayByZXR1cm5lZCBmcm9tIHRyYWNlX3ZhcmlhYmxlIG9yIHRyYWNlLgorICAgICAgICBNb2RlIGlzIG9uZSBvZiAicmVhZCIsICJ3cml0ZSIsICJ1bnNldCIgb3IgYSBsaXN0IG9yIHR1cGxlIG9mCisgICAgICAgIHN1Y2ggc3RyaW5ncy4gIE11c3QgYmUgc2FtZSBhcyB3ZXJlIHNwZWNpZmllZCBpbiB0cmFjZV9hZGQoKS4KKyAgICAgICAgY2JuYW1lIGlzIHRoZSBuYW1lIG9mIHRoZSBjYWxsYmFjayByZXR1cm5lZCBmcm9tIHRyYWNlX2FkZCgpLgogICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5fdGsuY2FsbCgidHJhY2UiLCAidmRlbGV0ZSIsIHNlbGYuX25hbWUsIG1vZGUsIGNibmFtZSkKLSAgICAgICAgY2JuYW1lID0gc2VsZi5fdGsuc3BsaXRsaXN0KGNibmFtZSlbMF0KLSAgICAgICAgZm9yIG0sIGNhIGluIHNlbGYudHJhY2VfdmluZm8oKToKKyAgICAgICAgc2VsZi5fdGsuY2FsbCgndHJhY2UnLCAncmVtb3ZlJywgJ3ZhcmlhYmxlJywKKyAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9uYW1lLCBtb2RlLCBjYm5hbWUpCisgICAgICAgIGZvciBtLCBjYSBpbiBzZWxmLnRyYWNlX2luZm8oKToKICAgICAgICAgICAgIGlmIHNlbGYuX3RrLnNwbGl0bGlzdChjYSlbMF0gPT0gY2JuYW1lOgogICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgIGVsc2U6CkBAIC0zMDUsMTAgKzM5NCw2NCBAQAogICAgICAgICAgICAgICAgIHNlbGYuX3RjbENvbW1hbmRzLnJlbW92ZShjYm5hbWUpCiAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgICAgICBwYXNzCi0gICAgZGVmIHRyYWNlX3ZpbmZvKHNlbGYpOgorCisgICAgZGVmIHRyYWNlX2luZm8oc2VsZik6CiAgICAgICAgICIiIlJldHVybiBhbGwgdHJhY2UgY2FsbGJhY2sgaW5mb3JtYXRpb24uIiIiCisgICAgICAgIHNwbGl0bGlzdCA9IHNlbGYuX3RrLnNwbGl0bGlzdAorICAgICAgICByZXR1cm4gWyhzcGxpdGxpc3QoayksIHYpIGZvciBrLCB2IGluIG1hcChzcGxpdGxpc3QsCisgICAgICAgICAgICBzcGxpdGxpc3Qoc2VsZi5fdGsuY2FsbCgndHJhY2UnLCAnaW5mbycsICd2YXJpYWJsZScsIHNlbGYuX25hbWUpKSldCisKKyAgICBkZWYgdHJhY2VfdmFyaWFibGUoc2VsZiwgbW9kZSwgY2FsbGJhY2spOgorICAgICAgICAiIiJEZWZpbmUgYSB0cmFjZSBjYWxsYmFjayBmb3IgdGhlIHZhcmlhYmxlLgorCisgICAgICAgIE1PREUgaXMgb25lIG9mICJyIiwgInciLCAidSIgZm9yIHJlYWQsIHdyaXRlLCB1bmRlZmluZS4KKyAgICAgICAgQ0FMTEJBQ0sgbXVzdCBiZSBhIGZ1bmN0aW9uIHdoaWNoIGlzIGNhbGxlZCB3aGVuCisgICAgICAgIHRoZSB2YXJpYWJsZSBpcyByZWFkLCB3cml0dGVuIG9yIHVuZGVmaW5lZC4KKworICAgICAgICBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGNhbGxiYWNrLgorCisgICAgICAgIFRoaXMgZGVwcmVjYXRlZCBtZXRob2Qgd3JhcHMgYSBkZXByZWNhdGVkIFRjbCBtZXRob2QgdGhhdCB3aWxsCisgICAgICAgIGxpa2VseSBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuICBVc2UgdHJhY2VfYWRkKCkgaW5zdGVhZC4KKyAgICAgICAgIiIiCisgICAgICAgICMgVE9ETzogQWRkIGRlcHJlY2F0aW9uIHdhcm5pbmcKKyAgICAgICAgY2JuYW1lID0gc2VsZi5fcmVnaXN0ZXIoY2FsbGJhY2spCisgICAgICAgIHNlbGYuX3RrLmNhbGwoInRyYWNlIiwgInZhcmlhYmxlIiwgc2VsZi5fbmFtZSwgbW9kZSwgY2JuYW1lKQorICAgICAgICByZXR1cm4gY2JuYW1lCisKKyAgICB0cmFjZSA9IHRyYWNlX3ZhcmlhYmxlCisKKyAgICBkZWYgdHJhY2VfdmRlbGV0ZShzZWxmLCBtb2RlLCBjYm5hbWUpOgorICAgICAgICAiIiJEZWxldGUgdGhlIHRyYWNlIGNhbGxiYWNrIGZvciBhIHZhcmlhYmxlLgorCisgICAgICAgIE1PREUgaXMgb25lIG9mICJyIiwgInciLCAidSIgZm9yIHJlYWQsIHdyaXRlLCB1bmRlZmluZS4KKyAgICAgICAgQ0JOQU1FIGlzIHRoZSBuYW1lIG9mIHRoZSBjYWxsYmFjayByZXR1cm5lZCBmcm9tIHRyYWNlX3ZhcmlhYmxlIG9yIHRyYWNlLgorCisgICAgICAgIFRoaXMgZGVwcmVjYXRlZCBtZXRob2Qgd3JhcHMgYSBkZXByZWNhdGVkIFRjbCBtZXRob2QgdGhhdCB3aWxsCisgICAgICAgIGxpa2VseSBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuICBVc2UgdHJhY2VfcmVtb3ZlKCkgaW5zdGVhZC4KKyAgICAgICAgIiIiCisgICAgICAgICMgVE9ETzogQWRkIGRlcHJlY2F0aW9uIHdhcm5pbmcKKyAgICAgICAgc2VsZi5fdGsuY2FsbCgidHJhY2UiLCAidmRlbGV0ZSIsIHNlbGYuX25hbWUsIG1vZGUsIGNibmFtZSkKKyAgICAgICAgY2JuYW1lID0gc2VsZi5fdGsuc3BsaXRsaXN0KGNibmFtZSlbMF0KKyAgICAgICAgZm9yIG0sIGNhIGluIHNlbGYudHJhY2VfaW5mbygpOgorICAgICAgICAgICAgaWYgc2VsZi5fdGsuc3BsaXRsaXN0KGNhKVswXSA9PSBjYm5hbWU6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX3RrLmRlbGV0ZWNvbW1hbmQoY2JuYW1lKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuX3RjbENvbW1hbmRzLnJlbW92ZShjYm5hbWUpCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgdHJhY2VfdmluZm8oc2VsZik6CisgICAgICAgICIiIlJldHVybiBhbGwgdHJhY2UgY2FsbGJhY2sgaW5mb3JtYXRpb24uCisKKyAgICAgICAgVGhpcyBkZXByZWNhdGVkIG1ldGhvZCB3cmFwcyBhIGRlcHJlY2F0ZWQgVGNsIG1ldGhvZCB0aGF0IHdpbGwKKyAgICAgICAgbGlrZWx5IGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZS4gIFVzZSB0cmFjZV9pbmZvKCkgaW5zdGVhZC4KKyAgICAgICAgIiIiCisgICAgICAgICMgVE9ETzogQWRkIGRlcHJlY2F0aW9uIHdhcm5pbmcKICAgICAgICAgcmV0dXJuIFtzZWxmLl90ay5zcGxpdGxpc3QoeCkgZm9yIHggaW4gc2VsZi5fdGsuc3BsaXRsaXN0KAogICAgICAgICAgICAgc2VsZi5fdGsuY2FsbCgidHJhY2UiLCAidmluZm8iLCBzZWxmLl9uYW1lKSldCisKICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICAgIiIiQ29tcGFyaXNvbiBmb3IgZXF1YWxpdHkgKD09KS4KIApAQCAtNDMwLDYgKzU3Myw5IEBACiAKICAgICBCYXNlIGNsYXNzIHdoaWNoIGRlZmluZXMgbWV0aG9kcyBjb21tb24gZm9yIGludGVyaW9yIHdpZGdldHMuIiIiCiAKKyAgICAjIHVzZWQgZm9yIGdlbmVyYXRpbmcgY2hpbGQgd2lkZ2V0IG5hbWVzCisgICAgX2xhc3RfY2hpbGRfaWRzID0gTm9uZQorCiAgICAgIyBYWFggZm9udCBjb21tYW5kPwogICAgIF90Y2xDb21tYW5kcyA9IE5vbmUKICAgICBkZWYgZGVzdHJveShzZWxmKToKQEAgLTQ3NywxMiArNjIzLDYgQEAKICAgICAgICAgZGlzYWJsZWRGb3JlZ3JvdW5kLCBpbnNlcnRCYWNrZ3JvdW5kLCB0cm91Z2hDb2xvci4iIiIKICAgICAgICAgc2VsZi50ay5jYWxsKCgndGtfc2V0UGFsZXR0ZScsKQogICAgICAgICAgICAgICArIF9mbGF0dGVuKGFyZ3MpICsgX2ZsYXR0ZW4obGlzdChrdy5pdGVtcygpKSkpCi0gICAgZGVmIHRrX21lbnVCYXIoc2VsZiwgKmFyZ3MpOgotICAgICAgICAiIiJEbyBub3QgdXNlLiBOZWVkZWQgaW4gVGsgMy42IGFuZCBlYXJsaWVyLiIiIgotICAgICAgICAjIG9ic29sZXRlIHNpbmNlIFRrIDQuMAotICAgICAgICBpbXBvcnQgd2FybmluZ3MKLSAgICAgICAgd2FybmluZ3Mud2FybigndGtfbWVudUJhcigpIGRvZXMgbm90aGluZyBhbmQgd2lsbCBiZSByZW1vdmVkIGluIDMuNicsCi0gICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCiAgICAgZGVmIHdhaXRfdmFyaWFibGUoc2VsZiwgbmFtZT0nUFlfVkFSJyk6CiAgICAgICAgICIiIldhaXQgdW50aWwgdGhlIHZhcmlhYmxlIGlzIG1vZGlmaWVkLgogCkBAIC04NTQsOCArOTk0LDcgQEAKICAgICAgICAgICAgIHNlbGYudGsuY2FsbCgnd2luZm8nLCAnaGVpZ2h0Jywgc2VsZi5fdykpCiAgICAgZGVmIHdpbmZvX2lkKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gaWRlbnRpZmllciBJRCBmb3IgdGhpcyB3aWRnZXQuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludCgKLSAgICAgICAgICAgIHNlbGYudGsuY2FsbCgnd2luZm8nLCAnaWQnLCBzZWxmLl93KSkKKyAgICAgICAgcmV0dXJuIGludChzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ2lkJywgc2VsZi5fdyksIDApCiAgICAgZGVmIHdpbmZvX2ludGVycHMoc2VsZiwgZGlzcGxheW9mPTApOgogICAgICAgICAiIiJSZXR1cm4gdGhlIG5hbWUgb2YgYWxsIFRjbCBpbnRlcnByZXRlcnMgZm9yIHRoaXMgZGlzcGxheS4iIiIKICAgICAgICAgYXJncyA9ICgnd2luZm8nLCAnaW50ZXJwcycpICsgc2VsZi5fZGlzcGxheW9mKGRpc3BsYXlvZikKQEAgLTk3NSwxOCArMTExNCwxNiBAQAogICAgIGRlZiB3aW5mb192aXN1YWxpZChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBYIGlkZW50aWZpZXIgZm9yIHRoZSB2aXN1YWwgZm9yIHRoaXMgd2lkZ2V0LiIiIgogICAgICAgICByZXR1cm4gc2VsZi50ay5jYWxsKCd3aW5mbycsICd2aXN1YWxpZCcsIHNlbGYuX3cpCi0gICAgZGVmIHdpbmZvX3Zpc3VhbHNhdmFpbGFibGUoc2VsZiwgaW5jbHVkZWlkcz0wKToKKyAgICBkZWYgd2luZm9fdmlzdWFsc2F2YWlsYWJsZShzZWxmLCBpbmNsdWRlaWRzPUZhbHNlKToKICAgICAgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBhbGwgdmlzdWFscyBhdmFpbGFibGUgZm9yIHRoZSBzY3JlZW4KICAgICAgICAgb2YgdGhpcyB3aWRnZXQuCiAKICAgICAgICAgRWFjaCBpdGVtIGluIHRoZSBsaXN0IGNvbnNpc3RzIG9mIGEgdmlzdWFsIG5hbWUgKHNlZSB3aW5mb192aXN1YWwpLCBhCi0gICAgICAgIGRlcHRoIGFuZCBpZiBJTkNMVURFSURTPTEgaXMgZ2l2ZW4gYWxzbyB0aGUgWCBpZGVudGlmaWVyLiIiIgotICAgICAgICBkYXRhID0gc2VsZi50ay5zcGxpdCgKLSAgICAgICAgICAgIHNlbGYudGsuY2FsbCgnd2luZm8nLCAndmlzdWFsc2F2YWlsYWJsZScsIHNlbGYuX3csCi0gICAgICAgICAgICAgICAgICAgICBpbmNsdWRlaWRzIGFuZCAnaW5jbHVkZWlkcycgb3IgTm9uZSkpCi0gICAgICAgIGlmIGlzaW5zdGFuY2UoZGF0YSwgc3RyKToKLSAgICAgICAgICAgIGRhdGEgPSBbc2VsZi50ay5zcGxpdChkYXRhKV0KLSAgICAgICAgcmV0dXJuIFtzZWxmLl9fd2luZm9fcGFyc2VpdGVtKHgpIGZvciB4IGluICBkYXRhXQorICAgICAgICBkZXB0aCBhbmQgaWYgaW5jbHVkZWlkcyBpcyB0cnVlIGlzIGdpdmVuIGFsc28gdGhlIFggaWRlbnRpZmllci4iIiIKKyAgICAgICAgZGF0YSA9IHNlbGYudGsuY2FsbCgnd2luZm8nLCAndmlzdWFsc2F2YWlsYWJsZScsIHNlbGYuX3csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2luY2x1ZGVpZHMnIGlmIGluY2x1ZGVpZHMgZWxzZSBOb25lKQorICAgICAgICBkYXRhID0gW3NlbGYudGsuc3BsaXRsaXN0KHgpIGZvciB4IGluIHNlbGYudGsuc3BsaXRsaXN0KGRhdGEpXQorICAgICAgICByZXR1cm4gW3NlbGYuX193aW5mb19wYXJzZWl0ZW0oeCkgZm9yIHggaW4gZGF0YV0KICAgICBkZWYgX193aW5mb19wYXJzZWl0ZW0oc2VsZiwgdCk6CiAgICAgICAgICIiIkludGVybmFsIGZ1bmN0aW9uLiIiIgogICAgICAgICByZXR1cm4gdFs6MV0gKyB0dXBsZShtYXAoc2VsZi5fX3dpbmZvX2dldGludCwgdFsxOl0pKQpAQCAtMTI4Nyw3ICsxNDI0LDEwIEBACiAgICAgICAgIGV4Y2VwdCBUY2xFcnJvcjogcGFzcwogICAgICAgICBlLmtleXN5bSA9IEsKICAgICAgICAgZS5rZXlzeW1fbnVtID0gZ2V0aW50X2V2ZW50KE4pCi0gICAgICAgIGUudHlwZSA9IFQKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZS50eXBlID0gRXZlbnRUeXBlKFQpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgZS50eXBlID0gVAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBlLndpZGdldCA9IHNlbGYuX25hbWV0b3dpZGdldChXKQogICAgICAgICBleGNlcHQgS2V5RXJyb3I6CkBAIC0xODk3LDkgKzIwMzcsNiBAQAogICAgICAgICBpZiB0Y2xfdmVyc2lvbiAhPSBfdGtpbnRlci5UQ0xfVkVSU0lPTjoKICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigidGNsLmggdmVyc2lvbiAoJXMpIGRvZXNuJ3QgbWF0Y2ggbGlidGNsLmEgdmVyc2lvbiAoJXMpIiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoX3RraW50ZXIuVENMX1ZFUlNJT04sIHRjbF92ZXJzaW9uKSkKLSAgICAgICAgaWYgVGtWZXJzaW9uIDwgNC4wOgotICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJUayA0LjAgb3IgaGlnaGVyIGlzIHJlcXVpcmVkOyBmb3VuZCBUayAlcyIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIHN0cihUa1ZlcnNpb24pKQogICAgICAgICAjIENyZWF0ZSBhbmQgcmVnaXN0ZXIgdGhlIHRrZXJyb3IgYW5kIGV4aXQgY29tbWFuZHMKICAgICAgICAgIyBXZSBuZWVkIHRvIGlubGluZSBwYXJ0cyBvZiBfcmVnaXN0ZXIgaGVyZSwgXyByZWdpc3RlcgogICAgICAgICAjIHdvdWxkIHJlZ2lzdGVyIGRpZmZlcmVudGx5LW5hbWVkIGNvbW1hbmRzLgpAQCAtMjEyMiw3ICsyMjU5LDE1IEBACiAgICAgICAgICAgICBuYW1lID0gY25mWyduYW1lJ10KICAgICAgICAgICAgIGRlbCBjbmZbJ25hbWUnXQogICAgICAgICBpZiBub3QgbmFtZToKLSAgICAgICAgICAgIG5hbWUgPSByZXByKGlkKHNlbGYpKQorICAgICAgICAgICAgbmFtZSA9IHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLmxvd2VyKCkKKyAgICAgICAgICAgIGlmIG1hc3Rlci5fbGFzdF9jaGlsZF9pZHMgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBtYXN0ZXIuX2xhc3RfY2hpbGRfaWRzID0ge30KKyAgICAgICAgICAgIGNvdW50ID0gbWFzdGVyLl9sYXN0X2NoaWxkX2lkcy5nZXQobmFtZSwgMCkgKyAxCisgICAgICAgICAgICBtYXN0ZXIuX2xhc3RfY2hpbGRfaWRzW25hbWVdID0gY291bnQKKyAgICAgICAgICAgIGlmIGNvdW50ID09IDE6CisgICAgICAgICAgICAgICAgbmFtZSA9ICchJXMnICUgKG5hbWUsKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBuYW1lID0gJyElcyVkJyAlIChuYW1lLCBjb3VudCkKICAgICAgICAgc2VsZi5fbmFtZSA9IG5hbWUKICAgICAgICAgaWYgbWFzdGVyLl93PT0nLic6CiAgICAgICAgICAgICBzZWxmLl93ID0gJy4nICsgbmFtZQpAQCAtMjcxOCwxMiArMjg2Myw2IEBACiAgICAgZGVmIHRrX3BvcHVwKHNlbGYsIHgsIHksIGVudHJ5PSIiKToKICAgICAgICAgIiIiUG9zdCB0aGUgbWVudSBhdCBwb3NpdGlvbiBYLFkgd2l0aCBlbnRyeSBFTlRSWS4iIiIKICAgICAgICAgc2VsZi50ay5jYWxsKCd0a19wb3B1cCcsIHNlbGYuX3csIHgsIHksIGVudHJ5KQotICAgIGRlZiB0a19iaW5kRm9yVHJhdmVyc2FsKHNlbGYpOgotICAgICAgICAjIG9ic29sZXRlIHNpbmNlIFRrIDQuMAotICAgICAgICBpbXBvcnQgd2FybmluZ3MKLSAgICAgICAgd2FybmluZ3Mud2FybigndGtfYmluZEZvclRyYXZlcnNhbCgpIGRvZXMgbm90aGluZyBhbmQgJwotICAgICAgICAgICAgICAgICAgICAgICd3aWxsIGJlIHJlbW92ZWQgaW4gMy42JywKLSAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICBkZWYgYWN0aXZhdGUoc2VsZiwgaW5kZXgpOgogICAgICAgICAiIiJBY3RpdmF0ZSBlbnRyeSBhdCBJTkRFWC4iIiIKICAgICAgICAgc2VsZi50ay5jYWxsKHNlbGYuX3csICdhY3RpdmF0ZScsIGluZGV4KQpAQCAtMzM0Niw5ICszNDg1LDYgQEAKICAgICAgICAgaWYgbm90IG5hbWU6CiAgICAgICAgICAgICBJbWFnZS5fbGFzdF9pZCArPSAxCiAgICAgICAgICAgICBuYW1lID0gInB5aW1hZ2UlciIgJSAoSW1hZ2UuX2xhc3RfaWQsKSAjIHRrIGl0c2VsZiB3b3VsZCB1c2UgaW1hZ2U8eD4KLSAgICAgICAgICAgICMgVGhlIGZvbGxvd2luZyBpcyBuZWVkZWQgZm9yIHN5c3RlbXMgd2hlcmUgaWQoeCkKLSAgICAgICAgICAgICMgY2FuIHJldHVybiBhIG5lZ2F0aXZlIG51bWJlciwgc3VjaCBhcyBMaW51eC9tNjhrOgotICAgICAgICAgICAgaWYgbmFtZVswXSA9PSAnLSc6IG5hbWUgPSAnXycgKyBuYW1lWzE6XQogICAgICAgICBpZiBrdyBhbmQgY25mOiBjbmYgPSBfY25mbWVyZ2UoKGNuZiwga3cpKQogICAgICAgICBlbGlmIGt3OiBjbmYgPSBrdwogICAgICAgICBvcHRpb25zID0gKCkKZGlmZiAtLWdpdCBhL0xpYi90a2ludGVyL2NvbW1vbmRpYWxvZy5weSBiL0xpYi90a2ludGVyL2NvbW1vbmRpYWxvZy5weQppbmRleCBkMjY4OGRiLi4xZTc1Y2FlIDEwMDY0NAotLS0gYS9MaWIvdGtpbnRlci9jb21tb25kaWFsb2cucHkKKysrIGIvTGliL3RraW50ZXIvY29tbW9uZGlhbG9nLnB5CkBAIC0xNSwxMSArMTUsNiBAQAogICAgIGNvbW1hbmQgID0gTm9uZQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1hc3Rlcj1Ob25lLCAqKm9wdGlvbnMpOgotCi0gICAgICAgICMgRklYTUU6IHNob3VsZCB0aGlzIGJlIHBsYWNlZCBvbiB0aGUgbW9kdWxlIGxldmVsIGluc3RlYWQ/Ci0gICAgICAgIGlmIFRrVmVyc2lvbiA8IDQuMjoKLSAgICAgICAgICAgIHJhaXNlIFRjbEVycm9yKCJ0aGlzIG1vZHVsZSByZXF1aXJlcyBUayA0LjIgb3IgbmV3ZXIiKQotCiAgICAgICAgIHNlbGYubWFzdGVyICA9IG1hc3RlcgogICAgICAgICBzZWxmLm9wdGlvbnMgPSBvcHRpb25zCiAgICAgICAgIGlmIG5vdCBtYXN0ZXIgYW5kIG9wdGlvbnMuZ2V0KCdwYXJlbnQnKToKZGlmZiAtLWdpdCBhL0xpYi90a2ludGVyL2RpYWxvZy5weSBiL0xpYi90a2ludGVyL2RpYWxvZy5weQppbmRleCBiZTA4NWFiLi5mNjFjNWY3IDEwMDY0NAotLS0gYS9MaWIvdGtpbnRlci9kaWFsb2cucHkKKysrIGIvTGliL3RraW50ZXIvZGlhbG9nLnB5CkBAIC0zLDEwICszLDcgQEAKIGZyb20gdGtpbnRlciBpbXBvcnQgKgogZnJvbSB0a2ludGVyIGltcG9ydCBfY25mbWVyZ2UKIAotaWYgVGtWZXJzaW9uIDw9IDMuNjoKLSAgICBESUFMT0dfSUNPTiA9ICd3YXJuaW5nJwotZWxzZToKLSAgICBESUFMT0dfSUNPTiA9ICdxdWVzdGhlYWQnCitESUFMT0dfSUNPTiA9ICdxdWVzdGhlYWQnCiAKIAogY2xhc3MgRGlhbG9nKFdpZGdldCk6CmRpZmYgLS1naXQgYS9MaWIvdGtpbnRlci90ZXN0L3J1bnRrdGVzdHMucHkgYi9MaWIvdGtpbnRlci90ZXN0L3J1bnRrdGVzdHMucHkKaW5kZXggZGJlNWU4OC4uMzNkYzU0YSAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvdGVzdC9ydW50a3Rlc3RzLnB5CisrKyBiL0xpYi90a2ludGVyL3Rlc3QvcnVudGt0ZXN0cy5weQpAQCAtNyw4ICs3LDYgQEAKICIiIgogCiBpbXBvcnQgb3MKLWltcG9ydCBzeXMKLWltcG9ydCB1bml0dGVzdAogaW1wb3J0IGltcG9ydGxpYgogaW1wb3J0IHRlc3Quc3VwcG9ydAogCmRpZmYgLS1naXQgYS9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X21pc2MucHkgYi9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X21pc2MucHkKaW5kZXggODVlZTJjNy4uOWRjMWUzNyAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF9taXNjLnB5CisrKyBiL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3RfbWlzYy5weQpAQCAtMTIsNiArMTIsMTQgQEAKICAgICAgICAgZiA9IHRraW50ZXIuRnJhbWUodCwgbmFtZT0nY2hpbGQnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoZiksICc8dGtpbnRlci5GcmFtZSBvYmplY3QgLnRvcC5jaGlsZD4nKQogCisgICAgZGVmIHRlc3RfZ2VuZXJhdGVkX25hbWVzKHNlbGYpOgorICAgICAgICB0ID0gdGtpbnRlci5Ub3BsZXZlbChzZWxmLnJvb3QpCisgICAgICAgIGYgPSB0a2ludGVyLkZyYW1lKHQpCisgICAgICAgIGYyID0gdGtpbnRlci5GcmFtZSh0KQorICAgICAgICBiID0gdGtpbnRlci5CdXR0b24oZjIpCisgICAgICAgIGZvciBuYW1lIGluIHN0cihiKS5zcGxpdCgnLicpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShuYW1lLmlzaWRlbnRpZmllcigpLCBtc2c9cmVwcihuYW1lKSkKKwogICAgIGRlZiB0ZXN0X3RrX3NldFBhbGV0dGUoc2VsZik6CiAgICAgICAgIHJvb3QgPSBzZWxmLnJvb3QKICAgICAgICAgcm9vdC50a19zZXRQYWxldHRlKCdibGFjaycpCmRpZmYgLS1naXQgYS9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X3ZhcmlhYmxlcy5weSBiL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3RfdmFyaWFibGVzLnB5CmluZGV4IGQ4YmE5Y2UuLjJlYjFlMTIgMTAwNjQ0Ci0tLSBhL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3RfdmFyaWFibGVzLnB5CisrKyBiL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3RfdmFyaWFibGVzLnB5CkBAIC04Nyw3ICs4Nyw4IEBACiAgICAgICAgIHYuc2V0KCJ2YWx1ZSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh2LnNpZGVfZWZmZWN0KQogCi0gICAgZGVmIHRlc3RfdHJhY2Uoc2VsZik6CisgICAgZGVmIHRlc3RfdHJhY2Vfb2xkKHNlbGYpOgorICAgICAgICAjIE9sZCBpbnRlcmZhY2UKICAgICAgICAgdiA9IFZhcmlhYmxlKHNlbGYucm9vdCkKICAgICAgICAgdm5hbWUgPSBzdHIodikKICAgICAgICAgdHJhY2UgPSBbXQpAQCAtMTM2LDYgKzEzNyw1NSBAQAogICAgICAgICBnYy5jb2xsZWN0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSwgWygnd3JpdGUnLCB2bmFtZSwgJycsICd1JyldKQogCisgICAgZGVmIHRlc3RfdHJhY2Uoc2VsZik6CisgICAgICAgIHYgPSBWYXJpYWJsZShzZWxmLnJvb3QpCisgICAgICAgIHZuYW1lID0gc3RyKHYpCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIHJlYWRfdHJhY2VyKCphcmdzKToKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgoJ3JlYWQnLCkgKyBhcmdzKQorICAgICAgICBkZWYgd3JpdGVfdHJhY2VyKCphcmdzKToKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgoJ3dyaXRlJywpICsgYXJncykKKyAgICAgICAgdHIxID0gdi50cmFjZV9hZGQoJ3JlYWQnLCByZWFkX3RyYWNlcikKKyAgICAgICAgdHIyID0gdi50cmFjZV9hZGQoWyd3cml0ZScsICd1bnNldCddLCB3cml0ZV90cmFjZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKHYudHJhY2VfaW5mbygpKSwgWworICAgICAgICAgICAgICAgICAgICAgICAgICgoJ3JlYWQnLCksIHRyMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgnd3JpdGUnLCAndW5zZXQnKSwgdHIyKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsIFtdKQorCisgICAgICAgIHYuc2V0KCdzcGFtJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSwgWygnd3JpdGUnLCB2bmFtZSwgJycsICd3cml0ZScpXSkKKworICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIHYuZ2V0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSwgWygncmVhZCcsIHZuYW1lLCAnJywgJ3JlYWQnKV0pCisKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBpbmZvID0gc29ydGVkKHYudHJhY2VfaW5mbygpKQorICAgICAgICB2LnRyYWNlX3JlbW92ZSgnd3JpdGUnLCB0cjEpICAjIFdyb25nIG1vZGUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQodi50cmFjZV9pbmZvKCkpLCBpbmZvKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFRjbEVycm9yKToKKyAgICAgICAgICAgIHYudHJhY2VfcmVtb3ZlKCdyZWFkJywgJ3NwYW0nKSAgIyBXcm9uZyBjb21tYW5kIG5hbWUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQodi50cmFjZV9pbmZvKCkpLCBpbmZvKQorICAgICAgICB2LmdldCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsIFsoJ3JlYWQnLCB2bmFtZSwgJycsICdyZWFkJyldKQorCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgdi50cmFjZV9yZW1vdmUoJ3JlYWQnLCB0cjEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodi50cmFjZV9pbmZvKCksIFsoKCd3cml0ZScsICd1bnNldCcpLCB0cjIpXSkKKyAgICAgICAgdi5nZXQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLCBbXSkKKworICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlbCB3cml0ZV90cmFjZXIKKyAgICAgICAgZ2MuY29sbGVjdCgpCisgICAgICAgIHYuc2V0KCdlZ2dzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSwgWygnd3JpdGUnLCB2bmFtZSwgJycsICd3cml0ZScpXSkKKworICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlbCB2CisgICAgICAgIGdjLmNvbGxlY3QoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLCBbKCd3cml0ZScsIHZuYW1lLCAnJywgJ3Vuc2V0JyldKQorCiAKIGNsYXNzIFRlc3RTdHJpbmdWYXIoVGVzdEJhc2UpOgogCmRpZmYgLS1naXQgYS9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X3dpZGdldHMucHkgYi9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X3dpZGdldHMucHkKaW5kZXggYzkyNGQ1NS4uODFiNTJlYSAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF93aWRnZXRzLnB5CisrKyBiL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3Rfd2lkZ2V0cy5weQpAQCAtOTEsOSArOTEsMTAgQEAKICAgICAgICAgd2lkZ2V0ID0gc2VsZi5jcmVhdGUoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdpZGdldFsndXNlJ10sICcnKQogICAgICAgICBwYXJlbnQgPSBzZWxmLmNyZWF0ZShjb250YWluZXI9VHJ1ZSkKLSAgICAgICAgd2lkID0gcGFyZW50LndpbmZvX2lkKCkKLSAgICAgICAgd2lkZ2V0MiA9IHNlbGYuY3JlYXRlKHVzZT13aWQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KHdpZGdldDJbJ3VzZSddKSwgd2lkKQorICAgICAgICB3aWQgPSBoZXgocGFyZW50LndpbmZvX2lkKCkpCisgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHdpZD13aWQpOgorICAgICAgICAgICAgd2lkZ2V0MiA9IHNlbGYuY3JlYXRlKHVzZT13aWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdpZGdldDJbJ3VzZSddLCB3aWQpCiAKIAogQGFkZF9zdGFuZGFyZF9vcHRpb25zKFN0YW5kYXJkT3B0aW9uc1Rlc3RzKQpkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvdGVzdC90ZXN0X3R0ay90ZXN0X2Z1bmN0aW9ucy5weSBiL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90dGsvdGVzdF9mdW5jdGlvbnMucHkKaW5kZXggYzY4YTY1MC4uYTFiN2NkZiAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvdGVzdC90ZXN0X3R0ay90ZXN0X2Z1bmN0aW9ucy5weQorKysgYi9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdHRrL3Rlc3RfZnVuY3Rpb25zLnB5CkBAIC0xLDYgKzEsNSBAQAogIyAtKi0gZW5jb2Rpbmc6IHV0Zi04IC0qLQogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgdGtpbnRlcgogZnJvbSB0a2ludGVyIGltcG9ydCB0dGsKIAogY2xhc3MgTW9ja1RrQXBwOgpkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvdGVzdC90ZXN0X3R0ay90ZXN0X3dpZGdldHMucHkgYi9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdHRrL3Rlc3Rfd2lkZ2V0cy5weQppbmRleCA4YmQyMmQwLi4yNjc2NmE4IDEwMDY0NAotLS0gYS9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdHRrL3Rlc3Rfd2lkZ2V0cy5weQorKysgYi9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdHRrL3Rlc3Rfd2lkZ2V0cy5weQpAQCAtMTQ4Nyw2ICsxNDg3LDcgQEAKIAogCiAgICAgZGVmIHRlc3Rfc2VsZWN0aW9uKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYudHYuc2VsZWN0aW9uLCAnc3BhbScpCiAgICAgICAgICMgaXRlbSAnbm9uZScgZG9lc24ndCBleGlzdAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyh0a2ludGVyLlRjbEVycm9yLCBzZWxmLnR2LnNlbGVjdGlvbl9zZXQsICdub25lJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXModGtpbnRlci5UY2xFcnJvciwgc2VsZi50di5zZWxlY3Rpb25fYWRkLCAnbm9uZScpCkBAIC0xNTAwLDI1ICsxNTAxLDMxIEBACiAgICAgICAgIGMzID0gc2VsZi50di5pbnNlcnQoaXRlbTEsICdlbmQnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHYuc2VsZWN0aW9uKCksICgpKQogCi0gICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3NldCgoYzEsIGl0ZW0yKSkKKyAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fc2V0KGMxLCBpdGVtMikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoYzEsIGl0ZW0yKSkKICAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fc2V0KGMyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHYuc2VsZWN0aW9uKCksIChjMiwpKQogCi0gICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX2FkZCgoYzEsIGl0ZW0yKSkKKyAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fYWRkKGMxLCBpdGVtMikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoYzEsIGMyLCBpdGVtMikpCiAgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX2FkZChpdGVtMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoaXRlbTEsIGMxLCBjMiwgaXRlbTIpKQorICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbl9hZGQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHYuc2VsZWN0aW9uKCksIChpdGVtMSwgYzEsIGMyLCBpdGVtMikpCiAKLSAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fcmVtb3ZlKChpdGVtMSwgYzMpKQorICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbl9yZW1vdmUoaXRlbTEsIGMzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHYuc2VsZWN0aW9uKCksIChjMSwgYzIsIGl0ZW0yKSkKICAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fcmVtb3ZlKGMyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHYuc2VsZWN0aW9uKCksIChjMSwgaXRlbTIpKQorICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbl9yZW1vdmUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHYuc2VsZWN0aW9uKCksIChjMSwgaXRlbTIpKQogCi0gICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3RvZ2dsZSgoYzEsIGMzKSkKKyAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fdG9nZ2xlKGMxLCBjMykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoYzMsIGl0ZW0yKSkKICAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fdG9nZ2xlKGl0ZW0yKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHYuc2VsZWN0aW9uKCksIChjMywpKQorICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbl90b2dnbGUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHYuc2VsZWN0aW9uKCksIChjMywpKQogCiAgICAgICAgIHNlbGYudHYuaW5zZXJ0KCcnLCAnZW5kJywgaWQ9J3dpdGggc3BhY2VzJykKICAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fc2V0KCd3aXRoIHNwYWNlcycpCkBAIC0xNTM2LDYgKzE1NDMsNDAgQEAKICAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fc2V0KGInYnl0ZXNceGUyXHg4Mlx4YWMnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHYuc2VsZWN0aW9uKCksICgnYnl0ZXNceGUyXHg4Mlx4YWMnLCkpCiAKKyAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fc2V0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoKSkKKworICAgICAgICAjIE9sZCBpbnRlcmZhY2UKKyAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fc2V0KChjMSwgaXRlbTIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHYuc2VsZWN0aW9uKCksIChjMSwgaXRlbTIpKQorICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbl9hZGQoKGMxLCBpdGVtMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKGl0ZW0xLCBjMSwgaXRlbTIpKQorICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbl9yZW1vdmUoKGl0ZW0xLCBjMykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKGMxLCBpdGVtMikpCisgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3RvZ2dsZSgoYzEsIGMzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoYzMsIGl0ZW0yKSkKKworICAgICAgICBpZiBzeXMudmVyc2lvbl9pbmZvID49ICgzLCA3KToKKyAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICAgICAgd2FybmluZ3Mud2FybigKKyAgICAgICAgICAgICAgICAnRGVwcmVjYXRlZCBBUEkgb2YgVHJlZXZpZXcuc2VsZWN0aW9uKCkgc2hvdWxkIGJlIHJlbW92ZWQnKQorICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbl9zZXQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHYuc2VsZWN0aW9uKCksICgpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uKCdzZXQnLCAoYzEsIGl0ZW0yKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoYzEsIGl0ZW0yKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbignYWRkJywgKGMxLCBpdGVtMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKGl0ZW0xLCBjMSwgaXRlbTIpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uKCdyZW1vdmUnLCAoaXRlbTEsIGMzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoYzEsIGl0ZW0yKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbigndG9nZ2xlJywgKGMxLCBjMykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKGMzLCBpdGVtMikpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc2VsZWN0aW9uID0gc2VsZi50di5zZWxlY3Rpb24oTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxlY3Rpb24sIChjMywgaXRlbTIpKQogCiAgICAgZGVmIHRlc3Rfc2V0KHNlbGYpOgogICAgICAgICBzZWxmLnR2Wydjb2x1bW5zJ10gPSBbJ0EnLCAnQiddCmRpZmYgLS1naXQgYS9MaWIvdGtpbnRlci90aXgucHkgYi9MaWIvdGtpbnRlci90aXgucHkKaW5kZXggMmVkNmE3Ny4uZTdjYjEwYSAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvdGl4LnB5CisrKyBiL0xpYi90a2ludGVyL3RpeC5weQpAQCAtMzEsMTAgKzMxLDYgQEAKIGZyb20gdGtpbnRlciBpbXBvcnQgKgogZnJvbSB0a2ludGVyIGltcG9ydCBfY25mbWVyZ2UKIAotIyBXQVJOSU5HIC0gVGtWZXJzaW9uIGlzIGEgbGltaXRlZCBwcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgbnVtYmVyCi1pZiBUa1ZlcnNpb24gPCAzLjk5OToKLSAgICByYWlzZSBJbXBvcnRFcnJvcigiVGhpcyB2ZXJzaW9uIG9mIFRpeC5weSByZXF1aXJlcyBUayA0LjAgb3IgaGlnaGVyIikKLQogaW1wb3J0IF90a2ludGVyICMgSWYgdGhpcyBmYWlscyB5b3VyIFB5dGhvbiBtYXkgbm90IGJlIGNvbmZpZ3VyZWQgZm9yIFRrCiAKICMgU29tZSBtb3JlIGNvbnN0YW50cyAoZm9yIGNvbnNpc3RlbmN5IHdpdGggVGtpbnRlcikKQEAgLTQ3NiwxNiArNDcyLDE3IEBACiAgICAgIiIiRGlzcGxheVN0eWxlIC0gaGFuZGxlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBzaGFyZWQgYnkKICAgICAobXVsdGlwbGUpIERpc3BsYXkgSXRlbXMiIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpdGVtdHlwZSwgY25mPXt9LCAqKmt3KToKLSAgICAgICAgaWYgJ3JlZndpbmRvdycgaW4ga3c6Ci0gICAgICAgICAgICBtYXN0ZXIgPSBrd1sncmVmd2luZG93J10KLSAgICAgICAgZWxpZiAncmVmd2luZG93JyBpbiBjbmY6Ci0gICAgICAgICAgICBtYXN0ZXIgPSBjbmZbJ3JlZndpbmRvdyddCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBtYXN0ZXIgPSB0a2ludGVyLl9kZWZhdWx0X3Jvb3QKLSAgICAgICAgICAgIGlmIG5vdCBtYXN0ZXI6Ci0gICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJUb28gZWFybHkgdG8gY3JlYXRlIGRpc3BsYXkgc3R5bGU6ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vIHJvb3Qgd2luZG93IikKKyAgICBkZWYgX19pbml0X18oc2VsZiwgaXRlbXR5cGUsIGNuZj17fSwgKiwgbWFzdGVyPU5vbmUsICoqa3cpOgorICAgICAgICBpZiBub3QgbWFzdGVyOgorICAgICAgICAgICAgaWYgJ3JlZndpbmRvdycgaW4ga3c6CisgICAgICAgICAgICAgICAgbWFzdGVyID0ga3dbJ3JlZndpbmRvdyddCisgICAgICAgICAgICBlbGlmICdyZWZ3aW5kb3cnIGluIGNuZjoKKyAgICAgICAgICAgICAgICBtYXN0ZXIgPSBjbmZbJ3JlZndpbmRvdyddCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG1hc3RlciA9IHRraW50ZXIuX2RlZmF1bHRfcm9vdAorICAgICAgICAgICAgICAgIGlmIG5vdCBtYXN0ZXI6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiVG9vIGVhcmx5IHRvIGNyZWF0ZSBkaXNwbGF5IHN0eWxlOiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm8gcm9vdCB3aW5kb3ciKQogICAgICAgICBzZWxmLnRrID0gbWFzdGVyLnRrCiAgICAgICAgIHNlbGYuc3R5bGVuYW1lID0gc2VsZi50ay5jYWxsKCd0aXhEaXNwbGF5U3R5bGUnLCBpdGVtdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc2VsZi5fb3B0aW9ucyhjbmYsa3cpICkKQEAgLTExMjAsNyArMTExNyw3IEBACiAKICAgICBkZWYgcGFnZXMoc2VsZik6CiAgICAgICAgICMgQ2FuJ3QgY2FsbCBzdWJ3aWRnZXRzX2FsbCBkaXJlY3RseSBiZWNhdXNlIHdlIGRvbid0IHdhbnQgLm5iZnJhbWUKLSAgICAgICAgbmFtZXMgPSBzZWxmLnRrLnNwbGl0KHNlbGYudGsuY2FsbChzZWxmLl93LCAncGFnZXMnKSkKKyAgICAgICAgbmFtZXMgPSBzZWxmLnRrLnNwbGl0bGlzdChzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ3BhZ2VzJykpCiAgICAgICAgIHJldCA9IFtdCiAgICAgICAgIGZvciB4IGluIG5hbWVzOgogICAgICAgICAgICAgcmV0LmFwcGVuZChzZWxmLnN1YndpZGdldCh4KSkKQEAgLTExNjYsNyArMTE2Myw3IEBACiAKICAgICBkZWYgcGFnZXMoc2VsZik6CiAgICAgICAgICMgQ2FuJ3QgY2FsbCBzdWJ3aWRnZXRzX2FsbCBkaXJlY3RseSBiZWNhdXNlIHdlIGRvbid0IHdhbnQgLm5iZnJhbWUKLSAgICAgICAgbmFtZXMgPSBzZWxmLnRrLnNwbGl0KHNlbGYudGsuY2FsbChzZWxmLl93LCAncGFnZXMnKSkKKyAgICAgICAgbmFtZXMgPSBzZWxmLnRrLnNwbGl0bGlzdChzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ3BhZ2VzJykpCiAgICAgICAgIHJldCA9IFtdCiAgICAgICAgIGZvciB4IGluIG5hbWVzOgogICAgICAgICAgICAgcmV0LmFwcGVuZChzZWxmLnN1YndpZGdldCh4KSkKQEAgLTE1ODksOCArMTU4Niw3IEBACiAgICAgICAgICcnJ1JldHVybnMgYSBsaXN0IG9mIGl0ZW1zIHdob3NlIHN0YXR1cyBtYXRjaGVzIHN0YXR1cy4gSWYgc3RhdHVzIGlzCiAgICAgIG5vdCBzcGVjaWZpZWQsIHRoZSBsaXN0IG9mIGl0ZW1zIGluIHRoZSAib24iIHN0YXR1cyB3aWxsIGJlIHJldHVybmVkLgogICAgICBNb2RlIGNhbiBiZSBvbiwgb2ZmLCBkZWZhdWx0JycnCi0gICAgICAgIGMgPSBzZWxmLnRrLnNwbGl0KHNlbGYudGsuY2FsbChzZWxmLl93LCAnZ2V0c2VsZWN0aW9uJywgbW9kZSkpCi0gICAgICAgIHJldHVybiBzZWxmLnRrLnNwbGl0bGlzdChjKQorICAgICAgICByZXR1cm4gc2VsZi50ay5zcGxpdGxpc3Qoc2VsZi50ay5jYWxsKHNlbGYuX3csICdnZXRzZWxlY3Rpb24nLCBtb2RlKSkKIAogICAgIGRlZiBnZXRzdGF0dXMoc2VsZiwgZW50cnlwYXRoKToKICAgICAgICAgJycnUmV0dXJucyB0aGUgY3VycmVudCBzdGF0dXMgb2YgZW50cnlQYXRoLicnJwpAQCAtMTkxMSw3ICsxOTA3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgIG9yIGEgcmVhbCBudW1iZXIgZm9sbG93aW5nIGJ5IHRoZSB3b3JkIGNoYXJzCiAgICAgICAgICAgICAgICAgICAgICAoZS5nLiAzLjRjaGFycykgdGhhdCBzZXRzIHRoZSB3aWR0aCBvZiB0aGUgY29sdW1uIHRvIHRoZQogICAgICAgICAgICAgICAgICAgICAgZ2l2ZW4gbnVtYmVyIG9mIGNoYXJhY3RlcnMuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLnRrLnNwbGl0KHNlbGYudGsuY2FsbChzZWxmLl93LCAnc2l6ZScsICdjb2x1bW4nLCBpbmRleCwKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuc3BsaXRsaXN0KHNlbGYudGsuY2FsbChzZWxmLl93LCAnc2l6ZScsICdjb2x1bW4nLCBpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnNlbGYuX29wdGlvbnMoe30sIGt3KSkpCiAKICAgICBkZWYgc2l6ZV9yb3coc2VsZiwgaW5kZXgsICoqa3cpOgpAQCAtMTkzNiw3ICsxOTMyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgIG9yIGEgcmVhbCBudW1iZXIgZm9sbG93aW5nIGJ5IHRoZSB3b3JkIGNoYXJzCiAgICAgICAgICAgICAgICAgICAgICAoZS5nLiAzLjRjaGFycykgdGhhdCBzZXRzIHRoZSBoZWlnaHQgb2YgdGhlIHJvdyB0byB0aGUKICAgICAgICAgICAgICAgICAgICAgIGdpdmVuIG51bWJlciBvZiBjaGFyYWN0ZXJzLiIiIgotICAgICAgICByZXR1cm4gc2VsZi50ay5zcGxpdChzZWxmLnRrLmNhbGwoCisgICAgICAgIHJldHVybiBzZWxmLnRrLnNwbGl0bGlzdChzZWxmLnRrLmNhbGwoCiAgICAgICAgICAgICAgICAgICAgIHNlbGYsICdzaXplJywgJ3JvdycsIGluZGV4LCAqc2VsZi5fb3B0aW9ucyh7fSwga3cpKSkKIAogICAgIGRlZiB1bnNldChzZWxmLCB4LCB5KToKZGlmZiAtLWdpdCBhL0xpYi90a2ludGVyL3R0ay5weSBiL0xpYi90a2ludGVyL3R0ay5weQppbmRleCBmNGE2ZDhjLi5jNDc0ZTYwIDEwMDY0NAotLS0gYS9MaWIvdGtpbnRlci90dGsucHkKKysrIGIvTGliL3RraW50ZXIvdHRrLnB5CkBAIC0yOCw2ICsyOCw4IEBACiBpbXBvcnQgdGtpbnRlcgogZnJvbSB0a2ludGVyIGltcG9ydCBfZmxhdHRlbiwgX2pvaW4sIF9zdHJpbmdpZnksIF9zcGxpdGRpY3QKIAorX3NlbnRpbmVsID0gb2JqZWN0KCkKKwogIyBWZXJpZnkgaWYgVGsgaXMgbmV3IGVub3VnaCB0byBub3QgbmVlZCB0aGUgVGlsZSBwYWNrYWdlCiBfUkVRVUlSRV9USUxFID0gVHJ1ZSBpZiB0a2ludGVyLlRrVmVyc2lvbiA8IDguNSBlbHNlIEZhbHNlCiAKQEAgLTM4MSw3ICszODMsOSBAQAogICAgICAgICBhIHNlcXVlbmNlIGlkZW50aWZ5aW5nIHRoZSB2YWx1ZSBmb3IgdGhhdCBvcHRpb24uIiIiCiAgICAgICAgIGlmIHF1ZXJ5X29wdCBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGt3W3F1ZXJ5X29wdF0gPSBOb25lCi0gICAgICAgIHJldHVybiBfdmFsX29yX2RpY3Qoc2VsZi50aywga3csIHNlbGYuX25hbWUsICJjb25maWd1cmUiLCBzdHlsZSkKKyAgICAgICAgcmVzdWx0ID0gX3ZhbF9vcl9kaWN0KHNlbGYudGssIGt3LCBzZWxmLl9uYW1lLCAiY29uZmlndXJlIiwgc3R5bGUpCisgICAgICAgIGlmIHJlc3VsdCBvciBxdWVyeV9vcHQ6CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0CiAKIAogICAgIGRlZiBtYXAoc2VsZiwgc3R5bGUsIHF1ZXJ5X29wdD1Ob25lLCAqKmt3KToKQEAgLTQ2NiwxMiArNDcwLDE0IEBACiAKICAgICBkZWYgZWxlbWVudF9uYW1lcyhzZWxmKToKICAgICAgICAgIiIiUmV0dXJucyB0aGUgbGlzdCBvZiBlbGVtZW50cyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IHRoZW1lLiIiIgotICAgICAgICByZXR1cm4gc2VsZi50ay5zcGxpdGxpc3Qoc2VsZi50ay5jYWxsKHNlbGYuX25hbWUsICJlbGVtZW50IiwgIm5hbWVzIikpCisgICAgICAgIHJldHVybiB0dXBsZShuLmxzdHJpcCgnLScpIGZvciBuIGluIHNlbGYudGsuc3BsaXRsaXN0KAorICAgICAgICAgICAgc2VsZi50ay5jYWxsKHNlbGYuX25hbWUsICJlbGVtZW50IiwgIm5hbWVzIikpKQogCiAKICAgICBkZWYgZWxlbWVudF9vcHRpb25zKHNlbGYsIGVsZW1lbnRuYW1lKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBsaXN0IG9mIGVsZW1lbnRuYW1lJ3Mgb3B0aW9ucy4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYudGsuc3BsaXRsaXN0KHNlbGYudGsuY2FsbChzZWxmLl9uYW1lLCAiZWxlbWVudCIsICJvcHRpb25zIiwgZWxlbWVudG5hbWUpKQorICAgICAgICByZXR1cm4gdHVwbGUoby5sc3RyaXAoJy0nKSBmb3IgbyBpbiBzZWxmLnRrLnNwbGl0bGlzdCgKKyAgICAgICAgICAgIHNlbGYudGsuY2FsbChzZWxmLl9uYW1lLCAiZWxlbWVudCIsICJvcHRpb25zIiwgZWxlbWVudG5hbWUpKSkKIAogCiAgICAgZGVmIHRoZW1lX2NyZWF0ZShzZWxmLCB0aGVtZW5hbWUsIHBhcmVudD1Ob25lLCBzZXR0aW5ncz1Ob25lKToKQEAgLTEzOTAsMzEgKzEzOTYsNTMgQEAKICAgICAgICAgc2VsZi50ay5jYWxsKHNlbGYuX3csICJzZWUiLCBpdGVtKQogCiAKLSAgICBkZWYgc2VsZWN0aW9uKHNlbGYsIHNlbG9wPU5vbmUsIGl0ZW1zPU5vbmUpOgotICAgICAgICAiIiJJZiBzZWxvcCBpcyBub3Qgc3BlY2lmaWVkLCByZXR1cm5zIHNlbGVjdGVkIGl0ZW1zLiIiIgotICAgICAgICBpZiBpc2luc3RhbmNlKGl0ZW1zLCAoc3RyLCBieXRlcykpOgotICAgICAgICAgICAgaXRlbXMgPSAoaXRlbXMsKQorICAgIGRlZiBzZWxlY3Rpb24oc2VsZiwgc2Vsb3A9X3NlbnRpbmVsLCBpdGVtcz1Ob25lKToKKyAgICAgICAgIiIiUmV0dXJucyB0aGUgdHVwbGUgb2Ygc2VsZWN0ZWQgaXRlbXMuIiIiCisgICAgICAgIGlmIHNlbG9wIGlzIF9zZW50aW5lbDoKKyAgICAgICAgICAgIHNlbG9wID0gTm9uZQorICAgICAgICBlbGlmIHNlbG9wIGlzIE5vbmU6CisgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oCisgICAgICAgICAgICAgICAgIlRoZSBzZWxvcD1Ob25lIGFyZ3VtZW50IG9mIHNlbGVjdGlvbigpIGlzIGRlcHJlY2F0ZWQgIgorICAgICAgICAgICAgICAgICJhbmQgd2lsbCBiZSByZW1vdmVkIGluIFB5dGhvbiAzLjciLAorICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMykKKyAgICAgICAgZWxpZiBzZWxvcCBpbiAoJ3NldCcsICdhZGQnLCAncmVtb3ZlJywgJ3RvZ2dsZScpOgorICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgICAgICB3YXJuaW5ncy53YXJuKAorICAgICAgICAgICAgICAgICJUaGUgc2Vsb3AgYXJndW1lbnQgb2Ygc2VsZWN0aW9uKCkgaXMgZGVwcmVjYXRlZCAiCisgICAgICAgICAgICAgICAgImFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gUHl0aG9uIDMuNywgIgorICAgICAgICAgICAgICAgICJ1c2Ugc2VsZWN0aW9uXyVzKCkgaW5zdGVhZCIgJSAoc2Vsb3AsKSwKKyAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ1Vuc3VwcG9ydGVkIG9wZXJhdGlvbicpCiAgICAgICAgIHJldHVybiBzZWxmLnRrLnNwbGl0bGlzdChzZWxmLnRrLmNhbGwoc2VsZi5fdywgInNlbGVjdGlvbiIsIHNlbG9wLCBpdGVtcykpCiAKIAotICAgIGRlZiBzZWxlY3Rpb25fc2V0KHNlbGYsIGl0ZW1zKToKLSAgICAgICAgIiIiaXRlbXMgYmVjb21lcyB0aGUgbmV3IHNlbGVjdGlvbi4iIiIKLSAgICAgICAgc2VsZi5zZWxlY3Rpb24oInNldCIsIGl0ZW1zKQorICAgIGRlZiBfc2VsZWN0aW9uKHNlbGYsIHNlbG9wLCBpdGVtcyk6CisgICAgICAgIGlmIGxlbihpdGVtcykgPT0gMSBhbmQgaXNpbnN0YW5jZShpdGVtc1swXSwgKHR1cGxlLCBsaXN0KSk6CisgICAgICAgICAgICBpdGVtcyA9IGl0ZW1zWzBdCisKKyAgICAgICAgc2VsZi50ay5jYWxsKHNlbGYuX3csICJzZWxlY3Rpb24iLCBzZWxvcCwgaXRlbXMpCiAKIAotICAgIGRlZiBzZWxlY3Rpb25fYWRkKHNlbGYsIGl0ZW1zKToKLSAgICAgICAgIiIiQWRkIGl0ZW1zIHRvIHRoZSBzZWxlY3Rpb24uIiIiCi0gICAgICAgIHNlbGYuc2VsZWN0aW9uKCJhZGQiLCBpdGVtcykKKyAgICBkZWYgc2VsZWN0aW9uX3NldChzZWxmLCAqaXRlbXMpOgorICAgICAgICAiIiJUaGUgc3BlY2lmaWVkIGl0ZW1zIGJlY29tZXMgdGhlIG5ldyBzZWxlY3Rpb24uIiIiCisgICAgICAgIHNlbGYuX3NlbGVjdGlvbigic2V0IiwgaXRlbXMpCiAKIAotICAgIGRlZiBzZWxlY3Rpb25fcmVtb3ZlKHNlbGYsIGl0ZW1zKToKLSAgICAgICAgIiIiUmVtb3ZlIGl0ZW1zIGZyb20gdGhlIHNlbGVjdGlvbi4iIiIKLSAgICAgICAgc2VsZi5zZWxlY3Rpb24oInJlbW92ZSIsIGl0ZW1zKQorICAgIGRlZiBzZWxlY3Rpb25fYWRkKHNlbGYsICppdGVtcyk6CisgICAgICAgICIiIkFkZCBhbGwgb2YgdGhlIHNwZWNpZmllZCBpdGVtcyB0byB0aGUgc2VsZWN0aW9uLiIiIgorICAgICAgICBzZWxmLl9zZWxlY3Rpb24oImFkZCIsIGl0ZW1zKQogCiAKLSAgICBkZWYgc2VsZWN0aW9uX3RvZ2dsZShzZWxmLCBpdGVtcyk6Ci0gICAgICAgICIiIlRvZ2dsZSB0aGUgc2VsZWN0aW9uIHN0YXRlIG9mIGVhY2ggaXRlbSBpbiBpdGVtcy4iIiIKLSAgICAgICAgc2VsZi5zZWxlY3Rpb24oInRvZ2dsZSIsIGl0ZW1zKQorICAgIGRlZiBzZWxlY3Rpb25fcmVtb3ZlKHNlbGYsICppdGVtcyk6CisgICAgICAgICIiIlJlbW92ZSBhbGwgb2YgdGhlIHNwZWNpZmllZCBpdGVtcyBmcm9tIHRoZSBzZWxlY3Rpb24uIiIiCisgICAgICAgIHNlbGYuX3NlbGVjdGlvbigicmVtb3ZlIiwgaXRlbXMpCisKKworICAgIGRlZiBzZWxlY3Rpb25fdG9nZ2xlKHNlbGYsICppdGVtcyk6CisgICAgICAgICIiIlRvZ2dsZSB0aGUgc2VsZWN0aW9uIHN0YXRlIG9mIGVhY2ggc3BlY2lmaWVkIGl0ZW0uIiIiCisgICAgICAgIHNlbGYuX3NlbGVjdGlvbigidG9nZ2xlIiwgaXRlbXMpCiAKIAogICAgIGRlZiBzZXQoc2VsZiwgaXRlbSwgY29sdW1uPU5vbmUsIHZhbHVlPU5vbmUpOgpkaWZmIC0tZ2l0IGEvTGliL3Rva2VuaXplLnB5IGIvTGliL3Rva2VuaXplLnB5CmluZGV4IGIxZDBjODMuLjgyNWFhOTAgMTAwNjQ0Ci0tLSBhL0xpYi90b2tlbml6ZS5weQorKysgYi9MaWIvdG9rZW5pemUucHkKQEAgLTI5LDYgKzI5LDcgQEAKIGltcG9ydCBjb2xsZWN0aW9ucwogZnJvbSBpbyBpbXBvcnQgVGV4dElPV3JhcHBlcgogZnJvbSBpdGVydG9vbHMgaW1wb3J0IGNoYWluCitpbXBvcnQgaXRlcnRvb2xzIGFzIF9pdGVydG9vbHMKIGltcG9ydCByZQogaW1wb3J0IHN5cwogZnJvbSB0b2tlbiBpbXBvcnQgKgpAQCAtMTE5LDE5ICsxMjAsNDEgQEAKIElnbm9yZSA9IFdoaXRlc3BhY2UgKyBhbnkocidcXFxyP1xuJyArIFdoaXRlc3BhY2UpICsgbWF5YmUoQ29tbWVudCkKIE5hbWUgPSByJ1x3KycKIAotSGV4bnVtYmVyID0gcicwW3hYXVswLTlhLWZBLUZdKycKLUJpbm51bWJlciA9IHInMFtiQl1bMDFdKycKLU9jdG51bWJlciA9IHInMFtvT11bMC03XSsnCi1EZWNudW1iZXIgPSByJyg/OjArfFsxLTldWzAtOV0qKScKK0hleG51bWJlciA9IHInMFt4WF0oPzpfP1swLTlhLWZBLUZdKSsnCitCaW5udW1iZXIgPSByJzBbYkJdKD86Xz9bMDFdKSsnCitPY3RudW1iZXIgPSByJzBbb09dKD86Xz9bMC03XSkrJworRGVjbnVtYmVyID0gcicoPzowKD86Xz8wKSp8WzEtOV0oPzpfP1swLTldKSopJwogSW50bnVtYmVyID0gZ3JvdXAoSGV4bnVtYmVyLCBCaW5udW1iZXIsIE9jdG51bWJlciwgRGVjbnVtYmVyKQotRXhwb25lbnQgPSByJ1tlRV1bLStdP1swLTldKycKLVBvaW50ZmxvYXQgPSBncm91cChyJ1swLTldK1wuWzAtOV0qJywgcidcLlswLTldKycpICsgbWF5YmUoRXhwb25lbnQpCi1FeHBmbG9hdCA9IHInWzAtOV0rJyArIEV4cG9uZW50CitFeHBvbmVudCA9IHInW2VFXVstK10/WzAtOV0oPzpfP1swLTldKSonCitQb2ludGZsb2F0ID0gZ3JvdXAocidbMC05XSg/Ol8/WzAtOV0pKlwuKD86WzAtOV0oPzpfP1swLTldKSopPycsCisgICAgICAgICAgICAgICAgICAgcidcLlswLTldKD86Xz9bMC05XSkqJykgKyBtYXliZShFeHBvbmVudCkKK0V4cGZsb2F0ID0gcidbMC05XSg/Ol8/WzAtOV0pKicgKyBFeHBvbmVudAogRmxvYXRudW1iZXIgPSBncm91cChQb2ludGZsb2F0LCBFeHBmbG9hdCkKLUltYWdudW1iZXIgPSBncm91cChyJ1swLTldK1tqSl0nLCBGbG9hdG51bWJlciArIHInW2pKXScpCitJbWFnbnVtYmVyID0gZ3JvdXAocidbMC05XSg/Ol8/WzAtOV0pKltqSl0nLCBGbG9hdG51bWJlciArIHInW2pKXScpCiBOdW1iZXIgPSBncm91cChJbWFnbnVtYmVyLCBGbG9hdG51bWJlciwgSW50bnVtYmVyKQogCi1TdHJpbmdQcmVmaXggPSByJyg/OltiQl1bclJdP3xbclJdW2JCXT98W3VVXSk/JworIyBSZXR1cm4gdGhlIGVtcHR5IHN0cmluZywgcGx1cyBhbGwgb2YgdGhlIHZhbGlkIHN0cmluZyBwcmVmaXhlcy4KK2RlZiBfYWxsX3N0cmluZ19wcmVmaXhlcygpOgorICAgICMgVGhlIHZhbGlkIHN0cmluZyBwcmVmaXhlcy4gT25seSBjb250YWluIHRoZSBsb3dlciBjYXNlIHZlcnNpb25zLAorICAgICMgIGFuZCBkb24ndCBjb250YWluIGFueSBwZXJtdWF0aW9ucyAoaW5jbHVkZSAnZnInLCBidXQgbm90CisgICAgIyAgJ3JmJykuIFRoZSB2YXJpb3VzIHBlcm11dGF0aW9ucyB3aWxsIGJlIGdlbmVyYXRlZC4KKyAgICBfdmFsaWRfc3RyaW5nX3ByZWZpeGVzID0gWydiJywgJ3InLCAndScsICdmJywgJ2JyJywgJ2ZyJ10KKyAgICAjIGlmIHdlIGFkZCBiaW5hcnkgZi1zdHJpbmdzLCBhZGQ6IFsnZmInLCAnZmJyJ10KKyAgICByZXN1bHQgPSBzZXQoWycnXSkKKyAgICBmb3IgcHJlZml4IGluIF92YWxpZF9zdHJpbmdfcHJlZml4ZXM6CisgICAgICAgIGZvciB0IGluIF9pdGVydG9vbHMucGVybXV0YXRpb25zKHByZWZpeCk6CisgICAgICAgICAgICAjIGNyZWF0ZSBhIGxpc3Qgd2l0aCB1cHBlciBhbmQgbG93ZXIgdmVyc2lvbnMgb2YgZWFjaAorICAgICAgICAgICAgIyAgY2hhcmFjdGVyCisgICAgICAgICAgICBmb3IgdSBpbiBfaXRlcnRvb2xzLnByb2R1Y3QoKlsoYywgYy51cHBlcigpKSBmb3IgYyBpbiB0XSk6CisgICAgICAgICAgICAgICAgcmVzdWx0LmFkZCgnJy5qb2luKHUpKQorICAgIHJldHVybiByZXN1bHQKKworZGVmIF9jb21waWxlKGV4cHIpOgorICAgIHJldHVybiByZS5jb21waWxlKGV4cHIsIHJlLlVOSUNPREUpCisKKyMgTm90ZSB0aGF0IHNpbmNlIF9hbGxfc3RyaW5nX3ByZWZpeGVzIGluY2x1ZGVzIHRoZSBlbXB0eSBzdHJpbmcsCisjICBTdHJpbmdQcmVmaXggY2FuIGJlIHRoZSBlbXB0eSBzdHJpbmcgKG1ha2luZyBpdCBvcHRpb25hbCkuCitTdHJpbmdQcmVmaXggPSBncm91cCgqX2FsbF9zdHJpbmdfcHJlZml4ZXMoKSkKIAogIyBUYWlsIGVuZCBvZiAnIHN0cmluZy4KIFNpbmdsZSA9IHIiW14nXFxdKig/OlxcLlteJ1xcXSopKiciCkBAIC0xNjksNTAgKzE5MiwyNSBAQAogUHNldWRvRXh0cmFzID0gZ3JvdXAocidcXFxyP1xufFxaJywgQ29tbWVudCwgVHJpcGxlKQogUHNldWRvVG9rZW4gPSBXaGl0ZXNwYWNlICsgZ3JvdXAoUHNldWRvRXh0cmFzLCBOdW1iZXIsIEZ1bm55LCBDb250U3RyLCBOYW1lKQogCi1kZWYgX2NvbXBpbGUoZXhwcik6Ci0gICAgcmV0dXJuIHJlLmNvbXBpbGUoZXhwciwgcmUuVU5JQ09ERSkKKyMgRm9yIGEgZ2l2ZW4gc3RyaW5nIHByZWZpeCBwbHVzIHF1b3RlcywgZW5kcGF0cyBtYXBzIGl0IHRvIGEgcmVnZXgKKyMgIHRvIG1hdGNoIHRoZSByZW1haW5kZXIgb2YgdGhhdCBzdHJpbmcuIF9wcmVmaXggY2FuIGJlIGVtcHR5LCBmb3IKKyMgIGEgbm9ybWFsIHNpbmdsZSBvciB0cmlwbGUgcXVvdGVkIHN0cmluZyAod2l0aCBubyBwcmVmaXgpLgorZW5kcGF0cyA9IHt9Citmb3IgX3ByZWZpeCBpbiBfYWxsX3N0cmluZ19wcmVmaXhlcygpOgorICAgIGVuZHBhdHNbX3ByZWZpeCArICInIl0gPSBTaW5nbGUKKyAgICBlbmRwYXRzW19wcmVmaXggKyAnIiddID0gRG91YmxlCisgICAgZW5kcGF0c1tfcHJlZml4ICsgIicnJyJdID0gU2luZ2xlMworICAgIGVuZHBhdHNbX3ByZWZpeCArICciIiInXSA9IERvdWJsZTMKIAotZW5kcGF0cyA9IHsiJyI6IFNpbmdsZSwgJyInOiBEb3VibGUsCi0gICAgICAgICAgICInJyciOiBTaW5nbGUzLCAnIiIiJzogRG91YmxlMywKLSAgICAgICAgICAgInInJyciOiBTaW5nbGUzLCAnciIiIic6IERvdWJsZTMsCi0gICAgICAgICAgICJiJycnIjogU2luZ2xlMywgJ2IiIiInOiBEb3VibGUzLAotICAgICAgICAgICAiUicnJyI6IFNpbmdsZTMsICdSIiIiJzogRG91YmxlMywKLSAgICAgICAgICAgIkInJyciOiBTaW5nbGUzLCAnQiIiIic6IERvdWJsZTMsCi0gICAgICAgICAgICJicicnJyI6IFNpbmdsZTMsICdiciIiIic6IERvdWJsZTMsCi0gICAgICAgICAgICJiUicnJyI6IFNpbmdsZTMsICdiUiIiIic6IERvdWJsZTMsCi0gICAgICAgICAgICJCcicnJyI6IFNpbmdsZTMsICdCciIiIic6IERvdWJsZTMsCi0gICAgICAgICAgICJCUicnJyI6IFNpbmdsZTMsICdCUiIiIic6IERvdWJsZTMsCi0gICAgICAgICAgICJyYicnJyI6IFNpbmdsZTMsICdyYiIiIic6IERvdWJsZTMsCi0gICAgICAgICAgICJSYicnJyI6IFNpbmdsZTMsICdSYiIiIic6IERvdWJsZTMsCi0gICAgICAgICAgICJyQicnJyI6IFNpbmdsZTMsICdyQiIiIic6IERvdWJsZTMsCi0gICAgICAgICAgICJSQicnJyI6IFNpbmdsZTMsICdSQiIiIic6IERvdWJsZTMsCi0gICAgICAgICAgICJ1JycnIjogU2luZ2xlMywgJ3UiIiInOiBEb3VibGUzLAotICAgICAgICAgICAiVScnJyI6IFNpbmdsZTMsICdVIiIiJzogRG91YmxlMywKLSAgICAgICAgICAgJ3InOiBOb25lLCAnUic6IE5vbmUsICdiJzogTm9uZSwgJ0InOiBOb25lLAotICAgICAgICAgICAndSc6IE5vbmUsICdVJzogTm9uZX0KLQotdHJpcGxlX3F1b3RlZCA9IHt9Ci1mb3IgdCBpbiAoIicnJyIsICciIiInLAotICAgICAgICAgICJyJycnIiwgJ3IiIiInLCAiUicnJyIsICdSIiIiJywKLSAgICAgICAgICAiYicnJyIsICdiIiIiJywgIkInJyciLCAnQiIiIicsCi0gICAgICAgICAgImJyJycnIiwgJ2JyIiIiJywgIkJyJycnIiwgJ0JyIiIiJywKLSAgICAgICAgICAiYlInJyciLCAnYlIiIiInLCAiQlInJyciLCAnQlIiIiInLAotICAgICAgICAgICJyYicnJyIsICdyYiIiIicsICJyQicnJyIsICdyQiIiIicsCi0gICAgICAgICAgIlJiJycnIiwgJ1JiIiIiJywgIlJCJycnIiwgJ1JCIiIiJywKLSAgICAgICAgICAidScnJyIsICd1IiIiJywgIlUnJyciLCAnVSIiIicsCi0gICAgICAgICAgKToKLSAgICB0cmlwbGVfcXVvdGVkW3RdID0gdAotc2luZ2xlX3F1b3RlZCA9IHt9Ci1mb3IgdCBpbiAoIiciLCAnIicsCi0gICAgICAgICAgInInIiwgJ3IiJywgIlInIiwgJ1IiJywKLSAgICAgICAgICAiYiciLCAnYiInLCAiQiciLCAnQiInLAotICAgICAgICAgICJiciciLCAnYnIiJywgIkJyJyIsICdCciInLAotICAgICAgICAgICJiUiciLCAnYlIiJywgIkJSJyIsICdCUiInICwKLSAgICAgICAgICAicmInIiwgJ3JiIicsICJyQiciLCAnckIiJywKLSAgICAgICAgICAiUmInIiwgJ1JiIicsICJSQiciLCAnUkIiJyAsCi0gICAgICAgICAgInUnIiwgJ3UiJywgIlUnIiwgJ1UiJywKLSAgICAgICAgICApOgotICAgIHNpbmdsZV9xdW90ZWRbdF0gPSB0CisjIEEgc2V0IG9mIGFsbCBvZiB0aGUgc2luZ2xlIGFuZCB0cmlwbGUgcXVvdGVkIHN0cmluZyBwcmVmaXhlcywKKyMgIGluY2x1ZGluZyB0aGUgb3BlbmluZyBxdW90ZXMuCitzaW5nbGVfcXVvdGVkID0gc2V0KCkKK3RyaXBsZV9xdW90ZWQgPSBzZXQoKQorZm9yIHQgaW4gX2FsbF9zdHJpbmdfcHJlZml4ZXMoKToKKyAgICBmb3IgdSBpbiAodCArICciJywgdCArICInIik6CisgICAgICAgIHNpbmdsZV9xdW90ZWQuYWRkKHUpCisgICAgZm9yIHUgaW4gKHQgKyAnIiIiJywgdCArICInJyciKToKKyAgICAgICAgdHJpcGxlX3F1b3RlZC5hZGQodSkKIAogdGFic2l6ZSA9IDgKIApAQCAtNjI2LDYgKzYyNCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBzdGFzaGVkCiAgICAgICAgICAgICAgICAgICAgICAgICBzdGFzaGVkID0gTm9uZQogICAgICAgICAgICAgICAgICAgICB5aWVsZCBUb2tlbkluZm8oQ09NTUVOVCwgdG9rZW4sIHNwb3MsIGVwb3MsIGxpbmUpCisKICAgICAgICAgICAgICAgICBlbGlmIHRva2VuIGluIHRyaXBsZV9xdW90ZWQ6CiAgICAgICAgICAgICAgICAgICAgIGVuZHByb2cgPSBfY29tcGlsZShlbmRwYXRzW3Rva2VuXSkKICAgICAgICAgICAgICAgICAgICAgZW5kbWF0Y2ggPSBlbmRwcm9nLm1hdGNoKGxpbmUsIHBvcykKQEAgLTYzOCwxOSArNjM3LDM3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBjb250c3RyID0gbGluZVtzdGFydDpdCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250bGluZSA9IGxpbmUKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgZWxpZiBpbml0aWFsIGluIHNpbmdsZV9xdW90ZWQgb3IgXAotICAgICAgICAgICAgICAgICAgICB0b2tlbls6Ml0gaW4gc2luZ2xlX3F1b3RlZCBvciBcCi0gICAgICAgICAgICAgICAgICAgIHRva2VuWzozXSBpbiBzaW5nbGVfcXVvdGVkOgorCisgICAgICAgICAgICAgICAgIyBDaGVjayB1cCB0byB0aGUgZmlyc3QgMyBjaGFycyBvZiB0aGUgdG9rZW4gdG8gc2VlIGlmCisgICAgICAgICAgICAgICAgIyAgdGhleSdyZSBpbiB0aGUgc2luZ2xlX3F1b3RlZCBzZXQuIElmIHNvLCB0aGV5IHN0YXJ0CisgICAgICAgICAgICAgICAgIyAgYSBzdHJpbmcuCisgICAgICAgICAgICAgICAgIyBXZSdyZSB1c2luZyB0aGUgZmlyc3QgMywgYmVjYXVzZSB3ZSdyZSBsb29raW5nIGZvcgorICAgICAgICAgICAgICAgICMgICJyYiciIChmb3IgZXhhbXBsZSkgYXQgdGhlIHN0YXJ0IG9mIHRoZSB0b2tlbi4gSWYKKyAgICAgICAgICAgICAgICAjICB3ZSBzd2l0Y2ggdG8gbG9uZ2VyIHByZWZpeGVzLCB0aGlzIG5lZWRzIHRvIGJlCisgICAgICAgICAgICAgICAgIyAgYWRqdXN0ZWQuCisgICAgICAgICAgICAgICAgIyBOb3RlIHRoYXQgaW5pdGlhbCA9PSB0b2tlbls6MV0uCisgICAgICAgICAgICAgICAgIyBBbHNvIG5vdGUgdGhhdCBzaW5nbGUgcXVvdGUgY2hlY2tpbmcgbXVzdCBjb21lIGFmdGVyCisgICAgICAgICAgICAgICAgIyAgdHJpcGxlIHF1b3RlIGNoZWNraW5nIChhYm92ZSkuCisgICAgICAgICAgICAgICAgZWxpZiAoaW5pdGlhbCBpbiBzaW5nbGVfcXVvdGVkIG9yCisgICAgICAgICAgICAgICAgICAgICAgdG9rZW5bOjJdIGluIHNpbmdsZV9xdW90ZWQgb3IKKyAgICAgICAgICAgICAgICAgICAgICB0b2tlbls6M10gaW4gc2luZ2xlX3F1b3RlZCk6CiAgICAgICAgICAgICAgICAgICAgIGlmIHRva2VuWy0xXSA9PSAnXG4nOiAgICAgICAgICAgICAgICAgICMgY29udGludWVkIHN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAgc3Ryc3RhcnQgPSAobG51bSwgc3RhcnQpCi0gICAgICAgICAgICAgICAgICAgICAgICBlbmRwcm9nID0gX2NvbXBpbGUoZW5kcGF0c1tpbml0aWFsXSBvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZHBhdHNbdG9rZW5bMV1dIG9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kcGF0c1t0b2tlblsyXV0pCisgICAgICAgICAgICAgICAgICAgICAgICAjIEFnYWluLCB1c2luZyB0aGUgZmlyc3QgMyBjaGFycyBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICMgIHRva2VuLiBUaGlzIGlzIGxvb2tpbmcgZm9yIHRoZSBtYXRjaGluZyBlbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICMgIHJlZ2V4IGZvciB0aGUgY29ycmVjdCB0eXBlIG9mIHF1b3RlCisgICAgICAgICAgICAgICAgICAgICAgICAjICBjaGFyYWN0ZXIuIFNvIGl0J3MgcmVhbGx5IGxvb2tpbmcgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAjICBlbmRwYXRzWyInIl0gb3IgZW5kcGF0c1snIiddLCBieSB0cnlpbmcgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICMgIHNraXAgc3RyaW5nIHByZWZpeCBjaGFyYWN0ZXJzLCBpZiBhbnkuCisgICAgICAgICAgICAgICAgICAgICAgICBlbmRwcm9nID0gX2NvbXBpbGUoZW5kcGF0cy5nZXQoaW5pdGlhbCkgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRwYXRzLmdldCh0b2tlblsxXSkgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRwYXRzLmdldCh0b2tlblsyXSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250c3RyLCBuZWVkY29udCA9IGxpbmVbc3RhcnQ6XSwgMQogICAgICAgICAgICAgICAgICAgICAgICAgY29udGxpbmUgPSBsaW5lCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICBlbHNlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9yZGluYXJ5IHN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgVG9rZW5JbmZvKFNUUklORywgdG9rZW4sIHNwb3MsIGVwb3MsIGxpbmUpCisKICAgICAgICAgICAgICAgICBlbGlmIGluaXRpYWwuaXNpZGVudGlmaWVyKCk6ICAgICAgICAgICAgICAgIyBvcmRpbmFyeSBuYW1lCiAgICAgICAgICAgICAgICAgICAgIGlmIHRva2VuIGluICgnYXN5bmMnLCAnYXdhaXQnKToKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGFzeW5jX2RlZjoKZGlmZiAtLWdpdCBhL0xpYi90cmFjZS5weSBiL0xpYi90cmFjZS5weQppbmRleCBmMTA4MjY2Li5hZTE1NDYxIDEwMDc1NQotLS0gYS9MaWIvdHJhY2UucHkKKysrIGIvTGliL3RyYWNlLnB5CkBAIC00OCw2ICs0OCw3IEBACiAgIHIud3JpdGVfcmVzdWx0cyhzaG93X21pc3Npbmc9VHJ1ZSwgY292ZXJkaXI9Ii90bXAiKQogIiIiCiBfX2FsbF9fID0gWydUcmFjZScsICdDb3ZlcmFnZVJlc3VsdHMnXQoraW1wb3J0IGFyZ3BhcnNlCiBpbXBvcnQgbGluZWNhY2hlCiBpbXBvcnQgb3MKIGltcG9ydCByZQpAQCAtNTgsNyArNTksNiBAQAogaW1wb3J0IGdjCiBpbXBvcnQgZGlzCiBpbXBvcnQgcGlja2xlCi1mcm9tIHdhcm5pbmdzIGltcG9ydCB3YXJuIGFzIF93YXJuCiBmcm9tIHRpbWUgaW1wb3J0IG1vbm90b25pYyBhcyBfdGltZQogCiB0cnk6CkBAIC03Nyw1MSArNzcsNiBAQAogICAgICAgICBzeXMuc2V0dHJhY2UoTm9uZSkKICAgICAgICAgdGhyZWFkaW5nLnNldHRyYWNlKE5vbmUpCiAKLWRlZiBfdXNhZ2Uob3V0ZmlsZSk6Ci0gICAgb3V0ZmlsZS53cml0ZSgiIiJVc2FnZTogJXMgW09QVElPTlNdIDxmaWxlPiBbQVJHU10KLQotTWV0YS1vcHRpb25zOgotLS1oZWxwICAgICAgICAgICAgICAgIERpc3BsYXkgdGhpcyBoZWxwIHRoZW4gZXhpdC4KLS0tdmVyc2lvbiAgICAgICAgICAgICBPdXRwdXQgdmVyc2lvbiBpbmZvcm1hdGlvbiB0aGVuIGV4aXQuCi0KLU90aGVyd2lzZSwgZXhhY3RseSBvbmUgb2YgdGhlIGZvbGxvd2luZyB0aHJlZSBvcHRpb25zIG11c3QgYmUgZ2l2ZW46Ci0tdCwgLS10cmFjZSAgICAgICAgICAgUHJpbnQgZWFjaCBsaW5lIHRvIHN5cy5zdGRvdXQgYmVmb3JlIGl0IGlzIGV4ZWN1dGVkLgotLWMsIC0tY291bnQgICAgICAgICAgIENvdW50IHRoZSBudW1iZXIgb2YgdGltZXMgZWFjaCBsaW5lIGlzIGV4ZWN1dGVkCi0gICAgICAgICAgICAgICAgICAgICAgYW5kIHdyaXRlIHRoZSBjb3VudHMgdG8gPG1vZHVsZT4uY292ZXIgZm9yIGVhY2gKLSAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUgZXhlY3V0ZWQsIGluIHRoZSBtb2R1bGUncyBkaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgICAgICAgU2VlIGFsc28gYC0tY292ZXJkaXInLCBgLS1maWxlJywgYC0tbm8tcmVwb3J0JyBiZWxvdy4KLS1sLCAtLWxpc3RmdW5jcyAgICAgICBLZWVwIHRyYWNrIG9mIHdoaWNoIGZ1bmN0aW9ucyBhcmUgZXhlY3V0ZWQgYXQgbGVhc3QKLSAgICAgICAgICAgICAgICAgICAgICBvbmNlIGFuZCB3cml0ZSB0aGUgcmVzdWx0cyB0byBzeXMuc3Rkb3V0IGFmdGVyIHRoZQotICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0gZXhpdHMuCi0tVCwgLS10cmFja2NhbGxzICAgICAgS2VlcCB0cmFjayBvZiBjYWxsZXIvY2FsbGVkIHBhaXJzIGFuZCB3cml0ZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzIHRvIHN5cy5zdGRvdXQgYWZ0ZXIgdGhlIHByb2dyYW0gZXhpdHMuCi0tciwgLS1yZXBvcnQgICAgICAgICAgR2VuZXJhdGUgYSByZXBvcnQgZnJvbSBhIGNvdW50cyBmaWxlOyBkbyBub3QgZXhlY3V0ZQotICAgICAgICAgICAgICAgICAgICAgIGFueSBjb2RlLiAgYC0tZmlsZScgbXVzdCBzcGVjaWZ5IHRoZSByZXN1bHRzIGZpbGUgdG8KLSAgICAgICAgICAgICAgICAgICAgICByZWFkLCB3aGljaCBtdXN0IGhhdmUgYmVlbiBjcmVhdGVkIGluIGEgcHJldmlvdXMgcnVuCi0gICAgICAgICAgICAgICAgICAgICAgd2l0aCBgLS1jb3VudCAtLWZpbGU9RklMRScuCi0KLU1vZGlmaWVyczoKLS1mLCAtLWZpbGU9PGZpbGU+ICAgICBGaWxlIHRvIGFjY3VtdWxhdGUgY291bnRzIG92ZXIgc2V2ZXJhbCBydW5zLgotLVIsIC0tbm8tcmVwb3J0ICAgICAgIERvIG5vdCBnZW5lcmF0ZSB0aGUgY292ZXJhZ2UgcmVwb3J0IGZpbGVzLgotICAgICAgICAgICAgICAgICAgICAgIFVzZWZ1bCBpZiB5b3Ugd2FudCB0byBhY2N1bXVsYXRlIG92ZXIgc2V2ZXJhbCBydW5zLgotLUMsIC0tY292ZXJkaXI9PGRpcj4gIERpcmVjdG9yeSB3aGVyZSB0aGUgcmVwb3J0IGZpbGVzLiAgVGhlIGNvdmVyYWdlCi0gICAgICAgICAgICAgICAgICAgICAgcmVwb3J0IGZvciA8cGFja2FnZT4uPG1vZHVsZT4gaXMgd3JpdHRlbiB0byBmaWxlCi0gICAgICAgICAgICAgICAgICAgICAgPGRpcj4vPHBhY2thZ2U+Lzxtb2R1bGU+LmNvdmVyLgotLW0sIC0tbWlzc2luZyAgICAgICAgIEFubm90YXRlIGV4ZWN1dGFibGUgbGluZXMgdGhhdCB3ZXJlIG5vdCBleGVjdXRlZAotICAgICAgICAgICAgICAgICAgICAgIHdpdGggJz4+Pj4+PiAnLgotLXMsIC0tc3VtbWFyeSAgICAgICAgIFdyaXRlIGEgYnJpZWYgc3VtbWFyeSBvbiBzdGRvdXQgZm9yIGVhY2ggZmlsZS4KLSAgICAgICAgICAgICAgICAgICAgICAoQ2FuIG9ubHkgYmUgdXNlZCB3aXRoIC0tY291bnQgb3IgLS1yZXBvcnQuKQotLWcsIC0tdGltaW5nICAgICAgICAgIFByZWZpeCBlYWNoIGxpbmUgd2l0aCB0aGUgdGltZSBzaW5jZSB0aGUgcHJvZ3JhbSBzdGFydGVkLgotICAgICAgICAgICAgICAgICAgICAgIE9ubHkgdXNlZCB3aGlsZSB0cmFjaW5nLgotCi1GaWx0ZXJzLCBtYXkgYmUgcmVwZWF0ZWQgbXVsdGlwbGUgdGltZXM6Ci0tLWlnbm9yZS1tb2R1bGU9PG1vZD4gSWdub3JlIHRoZSBnaXZlbiBtb2R1bGUocykgYW5kIGl0cyBzdWJtb2R1bGVzCi0gICAgICAgICAgICAgICAgICAgICAgKGlmIGl0IGlzIGEgcGFja2FnZSkuICBBY2NlcHRzIGNvbW1hIHNlcGFyYXRlZAotICAgICAgICAgICAgICAgICAgICAgIGxpc3Qgb2YgbW9kdWxlIG5hbWVzCi0tLWlnbm9yZS1kaXI9PGRpcj4gICAgSWdub3JlIGZpbGVzIGluIHRoZSBnaXZlbiBkaXJlY3RvcnkgKG11bHRpcGxlCi0gICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3JpZXMgY2FuIGJlIGpvaW5lZCBieSBvcy5wYXRoc2VwKS4KLSIiIiAlIHN5cy5hcmd2WzBdKQotCiBQUkFHTUFfTk9DT1ZFUiA9ICIjcHJhZ21hIE5PIENPVkVSIgogCiAjIFNpbXBsZSByeCB0byBmaW5kIGxpbmVzIHdpdGggbm8gY29kZS4KQEAgLTI2NSw3ICsyMjAsMTMgQEAKIAogICAgIGRlZiB3cml0ZV9yZXN1bHRzKHNlbGYsIHNob3dfbWlzc2luZz1UcnVlLCBzdW1tYXJ5PUZhbHNlLCBjb3ZlcmRpcj1Ob25lKToKICAgICAgICAgIiIiCi0gICAgICAgIEBwYXJhbSBjb3ZlcmRpcgorICAgICAgICBXcml0ZSB0aGUgY292ZXJhZ2UgcmVzdWx0cy4KKworICAgICAgICA6cGFyYW0gc2hvd19taXNzaW5nOiBTaG93IGxpbmVzIHRoYXQgaGFkIG5vIGhpdHMuCisgICAgICAgIDpwYXJhbSBzdW1tYXJ5OiBJbmNsdWRlIGNvdmVyYWdlIHN1bW1hcnkgcGVyIG1vZHVsZS4KKyAgICAgICAgOnBhcmFtIGNvdmVyZGlyOiBJZiBOb25lLCB0aGUgcmVzdWx0cyBvZiBlYWNoIG1vZHVsZSBhcmUgcGxhY2VkIGluIGl0cworICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSwgb3RoZXJ3aXNlIGl0IGlzIGluY2x1ZGVkIGluIHRoZSBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZWQuCiAgICAgICAgICIiIgogICAgICAgICBpZiBzZWxmLmNhbGxlZGZ1bmNzOgogICAgICAgICAgICAgcHJpbnQoKQpAQCAtNjQ3LDIxMCArNjA4LDEzNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxlZGZ1bmNzPXNlbGYuX2NhbGxlZGZ1bmNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxlcnM9c2VsZi5fY2FsbGVycykKIAotZGVmIF9lcnJfZXhpdChtc2cpOgotICAgIHN5cy5zdGRlcnIud3JpdGUoIiVzOiAlc1xuIiAlIChzeXMuYXJndlswXSwgbXNnKSkKLSAgICBzeXMuZXhpdCgxKQorZGVmIG1haW4oKToKIAotZGVmIG1haW4oYXJndj1Ob25lKToKLSAgICBpbXBvcnQgZ2V0b3B0CisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tdmVyc2lvbicsIGFjdGlvbj0ndmVyc2lvbicsIHZlcnNpb249J3RyYWNlIDIuMCcpCiAKLSAgICBpZiBhcmd2IGlzIE5vbmU6Ci0gICAgICAgIGFyZ3YgPSBzeXMuYXJndgorICAgIGdycCA9IHBhcnNlci5hZGRfYXJndW1lbnRfZ3JvdXAoJ01haW4gb3B0aW9ucycsCisgICAgICAgICAgICAnT25lIG9mIHRoZXNlIChvciAtLXJlcG9ydCkgbXVzdCBiZSBnaXZlbicpCisKKyAgICBncnAuYWRkX2FyZ3VtZW50KCctYycsICctLWNvdW50JywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgIGhlbHA9J0NvdW50IHRoZSBudW1iZXIgb2YgdGltZXMgZWFjaCBsaW5lIGlzIGV4ZWN1dGVkIGFuZCB3cml0ZSAnCisgICAgICAgICAgICAgICAgICd0aGUgY291bnRzIHRvIDxtb2R1bGU+LmNvdmVyIGZvciBlYWNoIG1vZHVsZSBleGVjdXRlZCwgaW4gJworICAgICAgICAgICAgICAgICAndGhlIG1vZHVsZVwncyBkaXJlY3RvcnkuIFNlZSBhbHNvIC0tY292ZXJkaXIsIC0tZmlsZSwgJworICAgICAgICAgICAgICAgICAnLS1uby1yZXBvcnQgYmVsb3cuJykKKyAgICBncnAuYWRkX2FyZ3VtZW50KCctdCcsICctLXRyYWNlJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgIGhlbHA9J1ByaW50IGVhY2ggbGluZSB0byBzeXMuc3Rkb3V0IGJlZm9yZSBpdCBpcyBleGVjdXRlZCcpCisgICAgZ3JwLmFkZF9hcmd1bWVudCgnLWwnLCAnLS1saXN0ZnVuY3MnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgaGVscD0nS2VlcCB0cmFjayBvZiB3aGljaCBmdW5jdGlvbnMgYXJlIGV4ZWN1dGVkIGF0IGxlYXN0IG9uY2UgJworICAgICAgICAgICAgICAgICAnYW5kIHdyaXRlIHRoZSByZXN1bHRzIHRvIHN5cy5zdGRvdXQgYWZ0ZXIgdGhlIHByb2dyYW0gZXhpdHMuICcKKyAgICAgICAgICAgICAgICAgJ0Nhbm5vdCBiZSBzcGVjaWZpZWQgYWxvbmdzaWRlIC0tdHJhY2Ugb3IgLS1jb3VudC4nKQorICAgIGdycC5hZGRfYXJndW1lbnQoJy1UJywgJy0tdHJhY2tjYWxscycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICBoZWxwPSdLZWVwIHRyYWNrIG9mIGNhbGxlci9jYWxsZWQgcGFpcnMgYW5kIHdyaXRlIHRoZSByZXN1bHRzIHRvICcKKyAgICAgICAgICAgICAgICAgJ3N5cy5zdGRvdXQgYWZ0ZXIgdGhlIHByb2dyYW0gZXhpdHMuJykKKworICAgIGdycCA9IHBhcnNlci5hZGRfYXJndW1lbnRfZ3JvdXAoJ01vZGlmaWVycycpCisKKyAgICBfZ3JwID0gZ3JwLmFkZF9tdXR1YWxseV9leGNsdXNpdmVfZ3JvdXAoKQorICAgIF9ncnAuYWRkX2FyZ3VtZW50KCctcicsICctLXJlcG9ydCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICBoZWxwPSdHZW5lcmF0ZSBhIHJlcG9ydCBmcm9tIGEgY291bnRzIGZpbGU7IGRvZXMgbm90IGV4ZWN1dGUgYW55ICcKKyAgICAgICAgICAgICAgICAgJ2NvZGUuIC0tZmlsZSBtdXN0IHNwZWNpZnkgdGhlIHJlc3VsdHMgZmlsZSB0byByZWFkLCB3aGljaCAnCisgICAgICAgICAgICAgICAgICdtdXN0IGhhdmUgYmVlbiBjcmVhdGVkIGluIGEgcHJldmlvdXMgcnVuIHdpdGggLS1jb3VudCAnCisgICAgICAgICAgICAgICAgICctLWZpbGU9RklMRScpCisgICAgX2dycC5hZGRfYXJndW1lbnQoJy1SJywgJy0tbm8tcmVwb3J0JywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgIGhlbHA9J0RvIG5vdCBnZW5lcmF0ZSB0aGUgY292ZXJhZ2UgcmVwb3J0IGZpbGVzLiAnCisgICAgICAgICAgICAgICAgICdVc2VmdWwgaWYgeW91IHdhbnQgdG8gYWNjdW11bGF0ZSBvdmVyIHNldmVyYWwgcnVucy4nKQorCisgICAgZ3JwLmFkZF9hcmd1bWVudCgnLWYnLCAnLS1maWxlJywKKyAgICAgICAgICAgIGhlbHA9J0ZpbGUgdG8gYWNjdW11bGF0ZSBjb3VudHMgb3ZlciBzZXZlcmFsIHJ1bnMnKQorICAgIGdycC5hZGRfYXJndW1lbnQoJy1DJywgJy0tY292ZXJkaXInLAorICAgICAgICAgICAgaGVscD0nRGlyZWN0b3J5IHdoZXJlIHRoZSByZXBvcnQgZmlsZXMgZ28uIFRoZSBjb3ZlcmFnZSByZXBvcnQgJworICAgICAgICAgICAgICAgICAnZm9yIDxwYWNrYWdlPi48bW9kdWxlPiB3aWxsIGJlIHdyaXR0ZW4gdG8gZmlsZSAnCisgICAgICAgICAgICAgICAgICc8ZGlyPi88cGFja2FnZT4vPG1vZHVsZT4uY292ZXInKQorICAgIGdycC5hZGRfYXJndW1lbnQoJy1tJywgJy0tbWlzc2luZycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICBoZWxwPSdBbm5vdGF0ZSBleGVjdXRhYmxlIGxpbmVzIHRoYXQgd2VyZSBub3QgZXhlY3V0ZWQgd2l0aCAnCisgICAgICAgICAgICAgICAgICciPj4+Pj4+ICInKQorICAgIGdycC5hZGRfYXJndW1lbnQoJy1zJywgJy0tc3VtbWFyeScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICBoZWxwPSdXcml0ZSBhIGJyaWVmIHN1bW1hcnkgZm9yIGVhY2ggZmlsZSB0byBzeXMuc3Rkb3V0LiAnCisgICAgICAgICAgICAgICAgICdDYW4gb25seSBiZSB1c2VkIHdpdGggLS1jb3VudCBvciAtLXJlcG9ydCcpCisgICAgZ3JwLmFkZF9hcmd1bWVudCgnLWcnLCAnLS10aW1pbmcnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgaGVscD0nUHJlZml4IGVhY2ggbGluZSB3aXRoIHRoZSB0aW1lIHNpbmNlIHRoZSBwcm9ncmFtIHN0YXJ0ZWQuICcKKyAgICAgICAgICAgICAgICAgJ09ubHkgdXNlZCB3aGlsZSB0cmFjaW5nJykKKworICAgIGdycCA9IHBhcnNlci5hZGRfYXJndW1lbnRfZ3JvdXAoJ0ZpbHRlcnMnLAorICAgICAgICAgICAgJ0NhbiBiZSBzcGVjaWZpZWQgbXVsdGlwbGUgdGltZXMnKQorICAgIGdycC5hZGRfYXJndW1lbnQoJy0taWdub3JlLW1vZHVsZScsIGFjdGlvbj0nYXBwZW5kJywgZGVmYXVsdD1bXSwKKyAgICAgICAgICAgIGhlbHA9J0lnbm9yZSB0aGUgZ2l2ZW4gbW9kdWxlKHMpIGFuZCBpdHMgc3VibW9kdWxlcycKKyAgICAgICAgICAgICAgICAgJyhpZiBpdCBpcyBhIHBhY2thZ2UpLiBBY2NlcHRzIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mICcKKyAgICAgICAgICAgICAgICAgJ21vZHVsZSBuYW1lcy4nKQorICAgIGdycC5hZGRfYXJndW1lbnQoJy0taWdub3JlLWRpcicsIGFjdGlvbj0nYXBwZW5kJywgZGVmYXVsdD1bXSwKKyAgICAgICAgICAgIGhlbHA9J0lnbm9yZSBmaWxlcyBpbiB0aGUgZ2l2ZW4gZGlyZWN0b3J5ICcKKyAgICAgICAgICAgICAgICAgJyhtdWx0aXBsZSBkaXJlY3RvcmllcyBjYW4gYmUgam9pbmVkIGJ5IG9zLnBhdGhzZXApLicpCisKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdmaWxlbmFtZScsIG5hcmdzPSc/JywKKyAgICAgICAgICAgIGhlbHA9J2ZpbGUgdG8gcnVuIGFzIG1haW4gcHJvZ3JhbScpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnYXJndW1lbnRzJywgbmFyZ3M9YXJncGFyc2UuUkVNQUlOREVSLAorICAgICAgICAgICAgaGVscD0nYXJndW1lbnRzIHRvIHRoZSBwcm9ncmFtJykKKworICAgIG9wdHMgPSBwYXJzZXIucGFyc2VfYXJncygpCisKKyAgICBpZiBvcHRzLmlnbm9yZV9kaXI6CisgICAgICAgIHJlbF9wYXRoID0gJ2xpYicsICdweXRob257MC5tYWpvcn0uezAubWlub3J9Jy5mb3JtYXQoc3lzLnZlcnNpb25faW5mbykKKyAgICAgICAgX3ByZWZpeCA9IG9zLnBhdGguam9pbihzeXMuYmFzZV9wcmVmaXgsICpyZWxfcGF0aCkKKyAgICAgICAgX2V4ZWNfcHJlZml4ID0gb3MucGF0aC5qb2luKHN5cy5iYXNlX2V4ZWNfcHJlZml4LCAqcmVsX3BhdGgpCisKKyAgICBkZWYgcGFyc2VfaWdub3JlX2RpcihzKToKKyAgICAgICAgcyA9IG9zLnBhdGguZXhwYW5kdXNlcihvcy5wYXRoLmV4cGFuZHZhcnMocykpCisgICAgICAgIHMgPSBzLnJlcGxhY2UoJyRwcmVmaXgnLCBfcHJlZml4KS5yZXBsYWNlKCckZXhlY19wcmVmaXgnLCBfZXhlY19wcmVmaXgpCisgICAgICAgIHJldHVybiBvcy5wYXRoLm5vcm1wYXRoKHMpCisKKyAgICBvcHRzLmlnbm9yZV9tb2R1bGUgPSBbbW9kLnN0cmlwKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGkgaW4gb3B0cy5pZ25vcmVfbW9kdWxlIGZvciBtb2QgaW4gaS5zcGxpdCgnLCcpXQorICAgIG9wdHMuaWdub3JlX2RpciA9IFtwYXJzZV9pZ25vcmVfZGlyKHMpCisgICAgICAgICAgICAgICAgICAgICAgIGZvciBpIGluIG9wdHMuaWdub3JlX2RpciBmb3IgcyBpbiBpLnNwbGl0KG9zLnBhdGhzZXApXQorCisgICAgaWYgb3B0cy5yZXBvcnQ6CisgICAgICAgIGlmIG5vdCBvcHRzLmZpbGU6CisgICAgICAgICAgICBwYXJzZXIuZXJyb3IoJy1yLy0tcmVwb3J0IHJlcXVpcmVzIC1mLy0tZmlsZScpCisgICAgICAgIHJlc3VsdHMgPSBDb3ZlcmFnZVJlc3VsdHMoaW5maWxlPW9wdHMuZmlsZSwgb3V0ZmlsZT1vcHRzLmZpbGUpCisgICAgICAgIHJldHVybiByZXN1bHRzLndyaXRlX3Jlc3VsdHMob3B0cy5taXNzaW5nLCBvcHRzLnN1bW1hcnksIG9wdHMuY292ZXJkaXIpCisKKyAgICBpZiBub3QgYW55KFtvcHRzLnRyYWNlLCBvcHRzLmNvdW50LCBvcHRzLmxpc3RmdW5jcywgb3B0cy50cmFja2NhbGxzXSk6CisgICAgICAgIHBhcnNlci5lcnJvcignbXVzdCBzcGVjaWZ5IG9uZSBvZiAtLXRyYWNlLCAtLWNvdW50LCAtLXJlcG9ydCwgJworICAgICAgICAgICAgICAgICAgICAgJy0tbGlzdGZ1bmNzLCBvciAtLXRyYWNrY2FsbHMnKQorCisgICAgaWYgb3B0cy5saXN0ZnVuY3MgYW5kIChvcHRzLmNvdW50IG9yIG9wdHMudHJhY2UpOgorICAgICAgICBwYXJzZXIuZXJyb3IoJ2Nhbm5vdCBzcGVjaWZ5IGJvdGggLS1saXN0ZnVuY3MgYW5kICgtLXRyYWNlIG9yIC0tY291bnQpJykKKworICAgIGlmIG9wdHMuc3VtbWFyeSBhbmQgbm90IG9wdHMuY291bnQ6CisgICAgICAgIHBhcnNlci5lcnJvcignLS1zdW1tYXJ5IGNhbiBvbmx5IGJlIHVzZWQgd2l0aCAtLWNvdW50IG9yIC0tcmVwb3J0JykKKworICAgIGlmIG9wdHMuZmlsZW5hbWUgaXMgTm9uZToKKyAgICAgICAgcGFyc2VyLmVycm9yKCdmaWxlbmFtZSBpcyBtaXNzaW5nOiByZXF1aXJlZCB3aXRoIHRoZSBtYWluIG9wdGlvbnMnKQorCisgICAgc3lzLmFyZ3YgPSBvcHRzLmZpbGVuYW1lLCAqb3B0cy5hcmd1bWVudHMKKyAgICBzeXMucGF0aFswXSA9IG9zLnBhdGguZGlybmFtZShvcHRzLmZpbGVuYW1lKQorCisgICAgdCA9IFRyYWNlKG9wdHMuY291bnQsIG9wdHMudHJhY2UsIGNvdW50ZnVuY3M9b3B0cy5saXN0ZnVuY3MsCisgICAgICAgICAgICAgIGNvdW50Y2FsbGVycz1vcHRzLnRyYWNrY2FsbHMsIGlnbm9yZW1vZHM9b3B0cy5pZ25vcmVfbW9kdWxlLAorICAgICAgICAgICAgICBpZ25vcmVkaXJzPW9wdHMuaWdub3JlX2RpciwgaW5maWxlPW9wdHMuZmlsZSwKKyAgICAgICAgICAgICAgb3V0ZmlsZT1vcHRzLmZpbGUsIHRpbWluZz1vcHRzLnRpbWluZykKICAgICB0cnk6Ci0gICAgICAgIG9wdHMsIHByb2dfYXJndiA9IGdldG9wdC5nZXRvcHQoYXJndlsxOl0sICJ0Y3JSZjpkOm1zQzpsVGciLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiaGVscCIsICJ2ZXJzaW9uIiwgInRyYWNlIiwgImNvdW50IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlcG9ydCIsICJuby1yZXBvcnQiLCAic3VtbWFyeSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlPSIsICJtaXNzaW5nIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImlnbm9yZS1tb2R1bGU9IiwgImlnbm9yZS1kaXI9IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvdmVyZGlyPSIsICJsaXN0ZnVuY3MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHJhY2tjYWxscyIsICJ0aW1pbmciXSkKKyAgICAgICAgd2l0aCBvcGVuKG9wdHMuZmlsZW5hbWUpIGFzIGZwOgorICAgICAgICAgICAgY29kZSA9IGNvbXBpbGUoZnAucmVhZCgpLCBvcHRzLmZpbGVuYW1lLCAnZXhlYycpCisgICAgICAgICMgdHJ5IHRvIGVtdWxhdGUgX19tYWluX18gbmFtZXNwYWNlIGFzIG11Y2ggYXMgcG9zc2libGUKKyAgICAgICAgZ2xvYnMgPSB7CisgICAgICAgICAgICAnX19maWxlX18nOiBvcHRzLmZpbGVuYW1lLAorICAgICAgICAgICAgJ19fbmFtZV9fJzogJ19fbWFpbl9fJywKKyAgICAgICAgICAgICdfX3BhY2thZ2VfXyc6IE5vbmUsCisgICAgICAgICAgICAnX19jYWNoZWRfXyc6IE5vbmUsCisgICAgICAgIH0KKyAgICAgICAgdC5ydW5jdHgoY29kZSwgZ2xvYnMsIGdsb2JzKQorICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKKyAgICAgICAgc3lzLmV4aXQoIkNhbm5vdCBydW4gZmlsZSAlciBiZWNhdXNlOiAlcyIgJSAoc3lzLmFyZ3ZbMF0sIGVycikpCisgICAgZXhjZXB0IFN5c3RlbUV4aXQ6CisgICAgICAgIHBhc3MKIAotICAgIGV4Y2VwdCBnZXRvcHQuZXJyb3IgYXMgbXNnOgotICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCIlczogJXNcbiIgJSAoc3lzLmFyZ3ZbMF0sIG1zZykpCi0gICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIlRyeSBgJXMgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvblxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICUgc3lzLmFyZ3ZbMF0pCi0gICAgICAgIHN5cy5leGl0KDEpCisgICAgcmVzdWx0cyA9IHQucmVzdWx0cygpCiAKLSAgICB0cmFjZSA9IDAKLSAgICBjb3VudCA9IDAKLSAgICByZXBvcnQgPSAwCi0gICAgbm9fcmVwb3J0ID0gMAotICAgIGNvdW50c19maWxlID0gTm9uZQotICAgIG1pc3NpbmcgPSAwCi0gICAgaWdub3JlX21vZHVsZXMgPSBbXQotICAgIGlnbm9yZV9kaXJzID0gW10KLSAgICBjb3ZlcmRpciA9IE5vbmUKLSAgICBzdW1tYXJ5ID0gMAotICAgIGxpc3RmdW5jcyA9IEZhbHNlCi0gICAgY291bnRjYWxsZXJzID0gRmFsc2UKLSAgICB0aW1pbmcgPSBGYWxzZQotCi0gICAgZm9yIG9wdCwgdmFsIGluIG9wdHM6Ci0gICAgICAgIGlmIG9wdCA9PSAiLS1oZWxwIjoKLSAgICAgICAgICAgIF91c2FnZShzeXMuc3Rkb3V0KQotICAgICAgICAgICAgc3lzLmV4aXQoMCkKLQotICAgICAgICBpZiBvcHQgPT0gIi0tdmVyc2lvbiI6Ci0gICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJ0cmFjZSAyLjBcbiIpCi0gICAgICAgICAgICBzeXMuZXhpdCgwKQotCi0gICAgICAgIGlmIG9wdCA9PSAiLVQiIG9yIG9wdCA9PSAiLS10cmFja2NhbGxzIjoKLSAgICAgICAgICAgIGNvdW50Y2FsbGVycyA9IFRydWUKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgaWYgb3B0ID09ICItbCIgb3Igb3B0ID09ICItLWxpc3RmdW5jcyI6Ci0gICAgICAgICAgICBsaXN0ZnVuY3MgPSBUcnVlCi0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgIGlmIG9wdCA9PSAiLWciIG9yIG9wdCA9PSAiLS10aW1pbmciOgotICAgICAgICAgICAgdGltaW5nID0gVHJ1ZQotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICBpZiBvcHQgPT0gIi10IiBvciBvcHQgPT0gIi0tdHJhY2UiOgotICAgICAgICAgICAgdHJhY2UgPSAxCi0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgIGlmIG9wdCA9PSAiLWMiIG9yIG9wdCA9PSAiLS1jb3VudCI6Ci0gICAgICAgICAgICBjb3VudCA9IDEKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgaWYgb3B0ID09ICItciIgb3Igb3B0ID09ICItLXJlcG9ydCI6Ci0gICAgICAgICAgICByZXBvcnQgPSAxCi0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgIGlmIG9wdCA9PSAiLVIiIG9yIG9wdCA9PSAiLS1uby1yZXBvcnQiOgotICAgICAgICAgICAgbm9fcmVwb3J0ID0gMQotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICBpZiBvcHQgPT0gIi1mIiBvciBvcHQgPT0gIi0tZmlsZSI6Ci0gICAgICAgICAgICBjb3VudHNfZmlsZSA9IHZhbAotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICBpZiBvcHQgPT0gIi1tIiBvciBvcHQgPT0gIi0tbWlzc2luZyI6Ci0gICAgICAgICAgICBtaXNzaW5nID0gMQotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICBpZiBvcHQgPT0gIi1DIiBvciBvcHQgPT0gIi0tY292ZXJkaXIiOgotICAgICAgICAgICAgY292ZXJkaXIgPSB2YWwKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgaWYgb3B0ID09ICItcyIgb3Igb3B0ID09ICItLXN1bW1hcnkiOgotICAgICAgICAgICAgc3VtbWFyeSA9IDEKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgaWYgb3B0ID09ICItLWlnbm9yZS1tb2R1bGUiOgotICAgICAgICAgICAgZm9yIG1vZCBpbiB2YWwuc3BsaXQoIiwiKToKLSAgICAgICAgICAgICAgICBpZ25vcmVfbW9kdWxlcy5hcHBlbmQobW9kLnN0cmlwKCkpCi0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgIGlmIG9wdCA9PSAiLS1pZ25vcmUtZGlyIjoKLSAgICAgICAgICAgIGZvciBzIGluIHZhbC5zcGxpdChvcy5wYXRoc2VwKToKLSAgICAgICAgICAgICAgICBzID0gb3MucGF0aC5leHBhbmR2YXJzKHMpCi0gICAgICAgICAgICAgICAgIyBzaG91bGQgSSBhbHNvIGNhbGwgZXhwYW5kdXNlcj8gKGFmdGVyIGFsbCwgY291bGQgdXNlICRIT01FKQotCi0gICAgICAgICAgICAgICAgcyA9IHMucmVwbGFjZSgiJHByZWZpeCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc3lzLmJhc2VfcHJlZml4LCAibGliIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uIiArIHN5cy52ZXJzaW9uWzozXSkpCi0gICAgICAgICAgICAgICAgcyA9IHMucmVwbGFjZSgiJGV4ZWNfcHJlZml4IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzeXMuYmFzZV9leGVjX3ByZWZpeCwgImxpYiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInB5dGhvbiIgKyBzeXMudmVyc2lvbls6M10pKQotICAgICAgICAgICAgICAgIHMgPSBvcy5wYXRoLm5vcm1wYXRoKHMpCi0gICAgICAgICAgICAgICAgaWdub3JlX2RpcnMuYXBwZW5kKHMpCi0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgIGFzc2VydCAwLCAiU2hvdWxkIG5ldmVyIGdldCBoZXJlIgotCi0gICAgaWYgbGlzdGZ1bmNzIGFuZCAoY291bnQgb3IgdHJhY2UpOgotICAgICAgICBfZXJyX2V4aXQoImNhbm5vdCBzcGVjaWZ5IGJvdGggLS1saXN0ZnVuY3MgYW5kICgtLXRyYWNlIG9yIC0tY291bnQpIikKLQotICAgIGlmIG5vdCAoY291bnQgb3IgdHJhY2Ugb3IgcmVwb3J0IG9yIGxpc3RmdW5jcyBvciBjb3VudGNhbGxlcnMpOgotICAgICAgICBfZXJyX2V4aXQoIm11c3Qgc3BlY2lmeSBvbmUgb2YgLS10cmFjZSwgLS1jb3VudCwgLS1yZXBvcnQsICIKLSAgICAgICAgICAgICAgICAgICItLWxpc3RmdW5jcywgb3IgLS10cmFja2NhbGxzIikKLQotICAgIGlmIHJlcG9ydCBhbmQgbm9fcmVwb3J0OgotICAgICAgICBfZXJyX2V4aXQoImNhbm5vdCBzcGVjaWZ5IGJvdGggLS1yZXBvcnQgYW5kIC0tbm8tcmVwb3J0IikKLQotICAgIGlmIHJlcG9ydCBhbmQgbm90IGNvdW50c19maWxlOgotICAgICAgICBfZXJyX2V4aXQoIi0tcmVwb3J0IHJlcXVpcmVzIGEgLS1maWxlIikKLQotICAgIGlmIG5vX3JlcG9ydCBhbmQgbGVuKHByb2dfYXJndikgPT0gMDoKLSAgICAgICAgX2Vycl9leGl0KCJtaXNzaW5nIG5hbWUgb2YgZmlsZSB0byBydW4iKQotCi0gICAgIyBldmVyeXRoaW5nIGlzIHJlYWR5Ci0gICAgaWYgcmVwb3J0OgotICAgICAgICByZXN1bHRzID0gQ292ZXJhZ2VSZXN1bHRzKGluZmlsZT1jb3VudHNfZmlsZSwgb3V0ZmlsZT1jb3VudHNfZmlsZSkKLSAgICAgICAgcmVzdWx0cy53cml0ZV9yZXN1bHRzKG1pc3NpbmcsIHN1bW1hcnk9c3VtbWFyeSwgY292ZXJkaXI9Y292ZXJkaXIpCi0gICAgZWxzZToKLSAgICAgICAgc3lzLmFyZ3YgPSBwcm9nX2FyZ3YKLSAgICAgICAgcHJvZ25hbWUgPSBwcm9nX2FyZ3ZbMF0KLSAgICAgICAgc3lzLnBhdGhbMF0gPSBvcy5wYXRoLnNwbGl0KHByb2duYW1lKVswXQotCi0gICAgICAgIHQgPSBUcmFjZShjb3VudCwgdHJhY2UsIGNvdW50ZnVuY3M9bGlzdGZ1bmNzLAotICAgICAgICAgICAgICAgICAgY291bnRjYWxsZXJzPWNvdW50Y2FsbGVycywgaWdub3JlbW9kcz1pZ25vcmVfbW9kdWxlcywKLSAgICAgICAgICAgICAgICAgIGlnbm9yZWRpcnM9aWdub3JlX2RpcnMsIGluZmlsZT1jb3VudHNfZmlsZSwKLSAgICAgICAgICAgICAgICAgIG91dGZpbGU9Y291bnRzX2ZpbGUsIHRpbWluZz10aW1pbmcpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHdpdGggb3Blbihwcm9nbmFtZSkgYXMgZnA6Ci0gICAgICAgICAgICAgICAgY29kZSA9IGNvbXBpbGUoZnAucmVhZCgpLCBwcm9nbmFtZSwgJ2V4ZWMnKQotICAgICAgICAgICAgIyB0cnkgdG8gZW11bGF0ZSBfX21haW5fXyBuYW1lc3BhY2UgYXMgbXVjaCBhcyBwb3NzaWJsZQotICAgICAgICAgICAgZ2xvYnMgPSB7Ci0gICAgICAgICAgICAgICAgJ19fZmlsZV9fJzogcHJvZ25hbWUsCi0gICAgICAgICAgICAgICAgJ19fbmFtZV9fJzogJ19fbWFpbl9fJywKLSAgICAgICAgICAgICAgICAnX19wYWNrYWdlX18nOiBOb25lLAotICAgICAgICAgICAgICAgICdfX2NhY2hlZF9fJzogTm9uZSwKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHQucnVuY3R4KGNvZGUsIGdsb2JzLCBnbG9icykKLSAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgotICAgICAgICAgICAgX2Vycl9leGl0KCJDYW5ub3QgcnVuIGZpbGUgJXIgYmVjYXVzZTogJXMiICUgKHN5cy5hcmd2WzBdLCBlcnIpKQotICAgICAgICBleGNlcHQgU3lzdGVtRXhpdDoKLSAgICAgICAgICAgIHBhc3MKLQotICAgICAgICByZXN1bHRzID0gdC5yZXN1bHRzKCkKLQotICAgICAgICBpZiBub3Qgbm9fcmVwb3J0OgotICAgICAgICAgICAgcmVzdWx0cy53cml0ZV9yZXN1bHRzKG1pc3NpbmcsIHN1bW1hcnk9c3VtbWFyeSwgY292ZXJkaXI9Y292ZXJkaXIpCi0KLSMgIERlcHJlY2F0ZWQgQVBJCi1kZWYgdXNhZ2Uob3V0ZmlsZSk6Ci0gICAgX3dhcm4oIlRoZSB0cmFjZS51c2FnZSgpIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQiLAotICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQotICAgIF91c2FnZShvdXRmaWxlKQotCi1jbGFzcyBJZ25vcmUoX0lnbm9yZSk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG1vZHVsZXM9Tm9uZSwgZGlycz1Ob25lKToKLSAgICAgICAgX3dhcm4oIlRoZSBjbGFzcyB0cmFjZS5JZ25vcmUgaXMgZGVwcmVjYXRlZCIsCi0gICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQotICAgICAgICBfSWdub3JlLl9faW5pdF9fKHNlbGYsIG1vZHVsZXMsIGRpcnMpCi0KLWRlZiBtb2RuYW1lKHBhdGgpOgotICAgIF93YXJuKCJUaGUgdHJhY2UubW9kbmFtZSgpIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQiLAotICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQotICAgIHJldHVybiBfbW9kbmFtZShwYXRoKQotCi1kZWYgZnVsbG1vZG5hbWUocGF0aCk6Ci0gICAgX3dhcm4oIlRoZSB0cmFjZS5mdWxsbW9kbmFtZSgpIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQiLAotICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQotICAgIHJldHVybiBfZnVsbG1vZG5hbWUocGF0aCkKLQotZGVmIGZpbmRfbGluZXNfZnJvbV9jb2RlKGNvZGUsIHN0cnMpOgotICAgIF93YXJuKCJUaGUgdHJhY2UuZmluZF9saW5lc19mcm9tX2NvZGUoKSBmdW5jdGlvbiBpcyBkZXByZWNhdGVkIiwKLSAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKLSAgICByZXR1cm4gX2ZpbmRfbGluZXNfZnJvbV9jb2RlKGNvZGUsIHN0cnMpCi0KLWRlZiBmaW5kX2xpbmVzKGNvZGUsIHN0cnMpOgotICAgIF93YXJuKCJUaGUgdHJhY2UuZmluZF9saW5lcygpIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQiLAotICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQotICAgIHJldHVybiBfZmluZF9saW5lcyhjb2RlLCBzdHJzKQotCi1kZWYgZmluZF9zdHJpbmdzKGZpbGVuYW1lLCBlbmNvZGluZz1Ob25lKToKLSAgICBfd2FybigiVGhlIHRyYWNlLmZpbmRfc3RyaW5ncygpIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQiLAotICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQotICAgIHJldHVybiBfZmluZF9zdHJpbmdzKGZpbGVuYW1lLCBlbmNvZGluZz1Ob25lKQotCi1kZWYgZmluZF9leGVjdXRhYmxlX2xpbmVub3MoZmlsZW5hbWUpOgotICAgIF93YXJuKCJUaGUgdHJhY2UuZmluZF9leGVjdXRhYmxlX2xpbmVub3MoKSBmdW5jdGlvbiBpcyBkZXByZWNhdGVkIiwKLSAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKLSAgICByZXR1cm4gX2ZpbmRfZXhlY3V0YWJsZV9saW5lbm9zKGZpbGVuYW1lKQorICAgIGlmIG5vdCBvcHRzLm5vX3JlcG9ydDoKKyAgICAgICAgcmVzdWx0cy53cml0ZV9yZXN1bHRzKG9wdHMubWlzc2luZywgb3B0cy5zdW1tYXJ5LCBvcHRzLmNvdmVyZGlyKQogCiBpZiBfX25hbWVfXz09J19fbWFpbl9fJzoKICAgICBtYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90cmFjZWJhY2sucHkgYi9MaWIvdHJhY2ViYWNrLnB5CmluZGV4IGM1ZmQ2MTcuLjA5YmRhNzEgMTAwNjQ0Ci0tLSBhL0xpYi90cmFjZWJhY2sucHkKKysrIGIvTGliL3RyYWNlYmFjay5weQpAQCAtMzg1LDkgKzM4NSwzMCBAQAogICAgICAgICByZXN1bHRpbmcgbGlzdCBjb3JyZXNwb25kcyB0byBhIHNpbmdsZSBmcmFtZSBmcm9tIHRoZSBzdGFjay4KICAgICAgICAgRWFjaCBzdHJpbmcgZW5kcyBpbiBhIG5ld2xpbmU7IHRoZSBzdHJpbmdzIG1heSBjb250YWluIGludGVybmFsCiAgICAgICAgIG5ld2xpbmVzIGFzIHdlbGwsIGZvciB0aG9zZSBpdGVtcyB3aXRoIHNvdXJjZSB0ZXh0IGxpbmVzLgorCisgICAgICAgIEZvciBsb25nIHNlcXVlbmNlcyBvZiB0aGUgc2FtZSBmcmFtZSBhbmQgbGluZSwgdGhlIGZpcnN0IGZldworICAgICAgICByZXBldGl0aW9ucyBhcmUgc2hvd24sIGZvbGxvd2VkIGJ5IGEgc3VtbWFyeSBsaW5lIHN0YXRpbmcgdGhlIGV4YWN0CisgICAgICAgIG51bWJlciBvZiBmdXJ0aGVyIHJlcGV0aXRpb25zLgogICAgICAgICAiIiIKICAgICAgICAgcmVzdWx0ID0gW10KKyAgICAgICAgbGFzdF9maWxlID0gTm9uZQorICAgICAgICBsYXN0X2xpbmUgPSBOb25lCisgICAgICAgIGxhc3RfbmFtZSA9IE5vbmUKKyAgICAgICAgY291bnQgPSAwCiAgICAgICAgIGZvciBmcmFtZSBpbiBzZWxmOgorICAgICAgICAgICAgaWYgKGxhc3RfZmlsZSBpcyBub3QgTm9uZSBhbmQgbGFzdF9maWxlID09IGZyYW1lLmZpbGVuYW1lIGFuZAorICAgICAgICAgICAgICAgIGxhc3RfbGluZSBpcyBub3QgTm9uZSBhbmQgbGFzdF9saW5lID09IGZyYW1lLmxpbmVubyBhbmQKKyAgICAgICAgICAgICAgICBsYXN0X25hbWUgaXMgbm90IE5vbmUgYW5kIGxhc3RfbmFtZSA9PSBmcmFtZS5uYW1lKToKKyAgICAgICAgICAgICAgICBjb3VudCArPSAxCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGlmIGNvdW50ID4gMzoKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChmJyAgW1ByZXZpb3VzIGxpbmUgcmVwZWF0ZWQge2NvdW50LTN9IG1vcmUgdGltZXNdXG4nKQorICAgICAgICAgICAgICAgIGxhc3RfZmlsZSA9IGZyYW1lLmZpbGVuYW1lCisgICAgICAgICAgICAgICAgbGFzdF9saW5lID0gZnJhbWUubGluZW5vCisgICAgICAgICAgICAgICAgbGFzdF9uYW1lID0gZnJhbWUubmFtZQorICAgICAgICAgICAgICAgIGNvdW50ID0gMAorICAgICAgICAgICAgaWYgY291bnQgPj0gMzoKKyAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgcm93ID0gW10KICAgICAgICAgICAgIHJvdy5hcHBlbmQoJyAgRmlsZSAie30iLCBsaW5lIHt9LCBpbiB7fVxuJy5mb3JtYXQoCiAgICAgICAgICAgICAgICAgZnJhbWUuZmlsZW5hbWUsIGZyYW1lLmxpbmVubywgZnJhbWUubmFtZSkpCkBAIC0zOTcsNiArNDE4LDggQEAKICAgICAgICAgICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gc29ydGVkKGZyYW1lLmxvY2Fscy5pdGVtcygpKToKICAgICAgICAgICAgICAgICAgICAgcm93LmFwcGVuZCgnICAgIHtuYW1lfSA9IHt2YWx1ZX1cbicuZm9ybWF0KG5hbWU9bmFtZSwgdmFsdWU9dmFsdWUpKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnJy5qb2luKHJvdykpCisgICAgICAgIGlmIGNvdW50ID4gMzoKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZicgIFtQcmV2aW91cyBsaW5lIHJlcGVhdGVkIHtjb3VudC0zfSBtb3JlIHRpbWVzXVxuJykKICAgICAgICAgcmV0dXJuIHJlc3VsdAogCiAKQEAgLTQ4NywxMCArNTEwLDkgQEAKICAgICAgICAgICAgIHNlbGYuX2xvYWRfbGluZXMoKQogCiAgICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGZyb21fZXhjZXB0aW9uKHNlbGYsIGV4YywgKmFyZ3MsICoqa3dhcmdzKToKKyAgICBkZWYgZnJvbV9leGNlcHRpb24oY2xzLCBleGMsICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgICIiIkNyZWF0ZSBhIFRyYWNlYmFja0V4Y2VwdGlvbiBmcm9tIGFuIGV4Y2VwdGlvbi4iIiIKLSAgICAgICAgcmV0dXJuIFRyYWNlYmFja0V4Y2VwdGlvbigKLSAgICAgICAgICAgIHR5cGUoZXhjKSwgZXhjLCBleGMuX190cmFjZWJhY2tfXywgKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICByZXR1cm4gY2xzKHR5cGUoZXhjKSwgZXhjLCBleGMuX190cmFjZWJhY2tfXywgKmFyZ3MsICoqa3dhcmdzKQogCiAgICAgZGVmIF9sb2FkX2xpbmVzKHNlbGYpOgogICAgICAgICAiIiJQcml2YXRlIEFQSS4gZm9yY2UgYWxsIGxpbmVzIGluIHRoZSBzdGFjayB0byBiZSBsb2FkZWQuIiIiCmRpZmYgLS1naXQgYS9MaWIvdHJhY2VtYWxsb2MucHkgYi9MaWIvdHJhY2VtYWxsb2MucHkKaW5kZXggNjI4OGRhOC4uNzViMzkxOCAxMDA2NDQKLS0tIGEvTGliL3RyYWNlbWFsbG9jLnB5CisrKyBiL0xpYi90cmFjZW1hbGxvYy5weQpAQCAtMjQ0LDE3ICsyNDQsMjEgQEAKICAgICBfX3Nsb3RzX18gPSAoIl90cmFjZSIsKQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRyYWNlKToKLSAgICAgICAgIyB0cmFjZSBpcyBhIHR1cGxlOiAoc2l6ZSwgdHJhY2ViYWNrKSwgc2VlIFRyYWNlYmFjayBjb25zdHJ1Y3RvcgotICAgICAgICAjIGZvciB0aGUgZm9ybWF0IG9mIHRoZSB0cmFjZWJhY2sgdHVwbGUKKyAgICAgICAgIyB0cmFjZSBpcyBhIHR1cGxlOiAoZG9tYWluOiBpbnQsIHNpemU6IGludCwgdHJhY2ViYWNrOiB0dXBsZSkuCisgICAgICAgICMgU2VlIFRyYWNlYmFjayBjb25zdHJ1Y3RvciBmb3IgdGhlIGZvcm1hdCBvZiB0aGUgdHJhY2ViYWNrIHR1cGxlLgogICAgICAgICBzZWxmLl90cmFjZSA9IHRyYWNlCiAKICAgICBAcHJvcGVydHkKLSAgICBkZWYgc2l6ZShzZWxmKToKKyAgICBkZWYgZG9tYWluKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fdHJhY2VbMF0KIAogICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzaXplKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fdHJhY2VbMV0KKworICAgIEBwcm9wZXJ0eQogICAgIGRlZiB0cmFjZWJhY2soc2VsZik6Ci0gICAgICAgIHJldHVybiBUcmFjZWJhY2soc2VsZi5fdHJhY2VbMV0pCisgICAgICAgIHJldHVybiBUcmFjZWJhY2soc2VsZi5fdHJhY2VbMl0pCiAKICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKICAgICAgICAgcmV0dXJuIChzZWxmLl90cmFjZSA9PSBvdGhlci5fdHJhY2UpCkBAIC0yNjYsOCArMjcwLDggQEAKICAgICAgICAgcmV0dXJuICIlczogJXMiICUgKHNlbGYudHJhY2ViYWNrLCBfZm9ybWF0X3NpemUoc2VsZi5zaXplLCBGYWxzZSkpCiAKICAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAoIjxUcmFjZSBzaXplPSVzLCB0cmFjZWJhY2s9JXI+IgotICAgICAgICAgICAgICAgICUgKF9mb3JtYXRfc2l6ZShzZWxmLnNpemUsIEZhbHNlKSwgc2VsZi50cmFjZWJhY2spKQorICAgICAgICByZXR1cm4gKCI8VHJhY2UgZG9tYWluPSVzIHNpemU9JXMsIHRyYWNlYmFjaz0lcj4iCisgICAgICAgICAgICAgICAgJSAoc2VsZi5kb21haW4sIF9mb3JtYXRfc2l6ZShzZWxmLnNpemUsIEZhbHNlKSwgc2VsZi50cmFjZWJhY2spKQogCiAKIGNsYXNzIF9UcmFjZXMoU2VxdWVuY2UpOgpAQCAtMzAyLDE5ICszMDYsMjkgQEAKICAgICByZXR1cm4gZmlsZW5hbWUKIAogCi1jbGFzcyBGaWx0ZXI6CitjbGFzcyBCYXNlRmlsdGVyOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpbmNsdXNpdmUpOgorICAgICAgICBzZWxmLmluY2x1c2l2ZSA9IGluY2x1c2l2ZQorCisgICAgZGVmIF9tYXRjaChzZWxmLCB0cmFjZSk6CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKworCitjbGFzcyBGaWx0ZXIoQmFzZUZpbHRlcik6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGluY2x1c2l2ZSwgZmlsZW5hbWVfcGF0dGVybiwKLSAgICAgICAgICAgICAgICAgbGluZW5vPU5vbmUsIGFsbF9mcmFtZXM9RmFsc2UpOgorICAgICAgICAgICAgICAgICBsaW5lbm89Tm9uZSwgYWxsX2ZyYW1lcz1GYWxzZSwgZG9tYWluPU5vbmUpOgorICAgICAgICBzdXBlcigpLl9faW5pdF9fKGluY2x1c2l2ZSkKICAgICAgICAgc2VsZi5pbmNsdXNpdmUgPSBpbmNsdXNpdmUKICAgICAgICAgc2VsZi5fZmlsZW5hbWVfcGF0dGVybiA9IF9ub3JtYWxpemVfZmlsZW5hbWUoZmlsZW5hbWVfcGF0dGVybikKICAgICAgICAgc2VsZi5saW5lbm8gPSBsaW5lbm8KICAgICAgICAgc2VsZi5hbGxfZnJhbWVzID0gYWxsX2ZyYW1lcworICAgICAgICBzZWxmLmRvbWFpbiA9IGRvbWFpbgogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGZpbGVuYW1lX3BhdHRlcm4oc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9maWxlbmFtZV9wYXR0ZXJuCiAKLSAgICBkZWYgX19tYXRjaF9mcmFtZShzZWxmLCBmaWxlbmFtZSwgbGluZW5vKToKKyAgICBkZWYgX21hdGNoX2ZyYW1lX2ltcGwoc2VsZiwgZmlsZW5hbWUsIGxpbmVubyk6CiAgICAgICAgIGZpbGVuYW1lID0gX25vcm1hbGl6ZV9maWxlbmFtZShmaWxlbmFtZSkKICAgICAgICAgaWYgbm90IGZubWF0Y2guZm5tYXRjaChmaWxlbmFtZSwgc2VsZi5fZmlsZW5hbWVfcGF0dGVybik6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKQEAgLTMyNCwxMSArMzM4LDExIEBACiAgICAgICAgICAgICByZXR1cm4gKGxpbmVubyA9PSBzZWxmLmxpbmVubykKIAogICAgIGRlZiBfbWF0Y2hfZnJhbWUoc2VsZiwgZmlsZW5hbWUsIGxpbmVubyk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9fbWF0Y2hfZnJhbWUoZmlsZW5hbWUsIGxpbmVubykgXiAobm90IHNlbGYuaW5jbHVzaXZlKQorICAgICAgICByZXR1cm4gc2VsZi5fbWF0Y2hfZnJhbWVfaW1wbChmaWxlbmFtZSwgbGluZW5vKSBeIChub3Qgc2VsZi5pbmNsdXNpdmUpCiAKICAgICBkZWYgX21hdGNoX3RyYWNlYmFjayhzZWxmLCB0cmFjZWJhY2spOgogICAgICAgICBpZiBzZWxmLmFsbF9mcmFtZXM6Ci0gICAgICAgICAgICBpZiBhbnkoc2VsZi5fX21hdGNoX2ZyYW1lKGZpbGVuYW1lLCBsaW5lbm8pCisgICAgICAgICAgICBpZiBhbnkoc2VsZi5fbWF0Y2hfZnJhbWVfaW1wbChmaWxlbmFtZSwgbGluZW5vKQogICAgICAgICAgICAgICAgICAgIGZvciBmaWxlbmFtZSwgbGluZW5vIGluIHRyYWNlYmFjayk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuaW5jbHVzaXZlCiAgICAgICAgICAgICBlbHNlOgpAQCAtMzM3LDYgKzM1MSwzMCBAQAogICAgICAgICAgICAgZmlsZW5hbWUsIGxpbmVubyA9IHRyYWNlYmFja1swXQogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX21hdGNoX2ZyYW1lKGZpbGVuYW1lLCBsaW5lbm8pCiAKKyAgICBkZWYgX21hdGNoKHNlbGYsIHRyYWNlKToKKyAgICAgICAgZG9tYWluLCBzaXplLCB0cmFjZWJhY2sgPSB0cmFjZQorICAgICAgICByZXMgPSBzZWxmLl9tYXRjaF90cmFjZWJhY2sodHJhY2ViYWNrKQorICAgICAgICBpZiBzZWxmLmRvbWFpbiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIHNlbGYuaW5jbHVzaXZlOgorICAgICAgICAgICAgICAgIHJldHVybiByZXMgYW5kIChkb21haW4gPT0gc2VsZi5kb21haW4pCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiByZXMgb3IgKGRvbWFpbiAhPSBzZWxmLmRvbWFpbikKKyAgICAgICAgcmV0dXJuIHJlcworCisKK2NsYXNzIERvbWFpbkZpbHRlcihCYXNlRmlsdGVyKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgaW5jbHVzaXZlLCBkb21haW4pOgorICAgICAgICBzdXBlcigpLl9faW5pdF9fKGluY2x1c2l2ZSkKKyAgICAgICAgc2VsZi5fZG9tYWluID0gZG9tYWluCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZG9tYWluKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fZG9tYWluCisKKyAgICBkZWYgX21hdGNoKHNlbGYsIHRyYWNlKToKKyAgICAgICAgZG9tYWluLCBzaXplLCB0cmFjZWJhY2sgPSB0cmFjZQorICAgICAgICByZXR1cm4gKGRvbWFpbiA9PSBzZWxmLmRvbWFpbikgXiAobm90IHNlbGYuaW5jbHVzaXZlKQorCiAKIGNsYXNzIFNuYXBzaG90OgogICAgICIiIgpAQCAtMzY1LDEzICs0MDMsMTIgQEAKICAgICAgICAgICAgIHJldHVybiBwaWNrbGUubG9hZChmcCkKIAogICAgIGRlZiBfZmlsdGVyX3RyYWNlKHNlbGYsIGluY2x1ZGVfZmlsdGVycywgZXhjbHVkZV9maWx0ZXJzLCB0cmFjZSk6Ci0gICAgICAgIHRyYWNlYmFjayA9IHRyYWNlWzFdCiAgICAgICAgIGlmIGluY2x1ZGVfZmlsdGVyczoKLSAgICAgICAgICAgIGlmIG5vdCBhbnkodHJhY2VfZmlsdGVyLl9tYXRjaF90cmFjZWJhY2sodHJhY2ViYWNrKQorICAgICAgICAgICAgaWYgbm90IGFueSh0cmFjZV9maWx0ZXIuX21hdGNoKHRyYWNlKQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgdHJhY2VfZmlsdGVyIGluIGluY2x1ZGVfZmlsdGVycyk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIGlmIGV4Y2x1ZGVfZmlsdGVyczoKLSAgICAgICAgICAgIGlmIGFueShub3QgdHJhY2VfZmlsdGVyLl9tYXRjaF90cmFjZWJhY2sodHJhY2ViYWNrKQorICAgICAgICAgICAgaWYgYW55KG5vdCB0cmFjZV9maWx0ZXIuX21hdGNoKHRyYWNlKQogICAgICAgICAgICAgICAgICAgIGZvciB0cmFjZV9maWx0ZXIgaW4gZXhjbHVkZV9maWx0ZXJzKToKICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgcmV0dXJuIFRydWUKQEAgLTM3OSw4ICs0MTYsOCBAQAogICAgIGRlZiBmaWx0ZXJfdHJhY2VzKHNlbGYsIGZpbHRlcnMpOgogICAgICAgICAiIiIKICAgICAgICAgQ3JlYXRlIGEgbmV3IFNuYXBzaG90IGluc3RhbmNlIHdpdGggYSBmaWx0ZXJlZCB0cmFjZXMgc2VxdWVuY2UsIGZpbHRlcnMKLSAgICAgICAgaXMgYSBsaXN0IG9mIEZpbHRlciBpbnN0YW5jZXMuICBJZiBmaWx0ZXJzIGlzIGFuIGVtcHR5IGxpc3QsIHJldHVybiBhCi0gICAgICAgIG5ldyBTbmFwc2hvdCBpbnN0YW5jZSB3aXRoIGEgY29weSBvZiB0aGUgdHJhY2VzLgorICAgICAgICBpcyBhIGxpc3Qgb2YgRmlsdGVyIG9yIERvbWFpbkZpbHRlciBpbnN0YW5jZXMuICBJZiBmaWx0ZXJzIGlzIGFuIGVtcHR5CisgICAgICAgIGxpc3QsIHJldHVybiBhIG5ldyBTbmFwc2hvdCBpbnN0YW5jZSB3aXRoIGEgY29weSBvZiB0aGUgdHJhY2VzLgogICAgICAgICAiIiIKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZmlsdGVycywgSXRlcmFibGUpOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJmaWx0ZXJzIG11c3QgYmUgYSBsaXN0IG9mIGZpbHRlcnMsIG5vdCAlcyIKQEAgLTQxMiw3ICs0NDksNyBAQAogICAgICAgICB0cmFjZWJhY2tzID0ge30KICAgICAgICAgaWYgbm90IGN1bXVsYXRpdmU6CiAgICAgICAgICAgICBmb3IgdHJhY2UgaW4gc2VsZi50cmFjZXMuX3RyYWNlczoKLSAgICAgICAgICAgICAgICBzaXplLCB0cmFjZV90cmFjZWJhY2sgPSB0cmFjZQorICAgICAgICAgICAgICAgIGRvbWFpbiwgc2l6ZSwgdHJhY2VfdHJhY2ViYWNrID0gdHJhY2UKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIHRyYWNlYmFjayA9IHRyYWNlYmFja3NbdHJhY2VfdHJhY2ViYWNrXQogICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKQEAgLTQzMyw3ICs0NzAsNyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgIyBjdW11bGF0aXZlIHN0YXRpc3RpY3MKICAgICAgICAgICAgIGZvciB0cmFjZSBpbiBzZWxmLnRyYWNlcy5fdHJhY2VzOgotICAgICAgICAgICAgICAgIHNpemUsIHRyYWNlX3RyYWNlYmFjayA9IHRyYWNlCisgICAgICAgICAgICAgICAgZG9tYWluLCBzaXplLCB0cmFjZV90cmFjZWJhY2sgPSB0cmFjZQogICAgICAgICAgICAgICAgIGZvciBmcmFtZSBpbiB0cmFjZV90cmFjZWJhY2s6CiAgICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlYmFjayA9IHRyYWNlYmFja3NbZnJhbWVdCmRpZmYgLS1naXQgYS9MaWIvdHVydGxlZGVtby9fX21haW5fXy5weSBiL0xpYi90dXJ0bGVkZW1vL19fbWFpbl9fLnB5CmluZGV4IDcxMWQwYWIuLjBhNTgzMzIgMTAwNjQ0Ci0tLSBhL0xpYi90dXJ0bGVkZW1vL19fbWFpbl9fLnB5CisrKyBiL0xpYi90dXJ0bGVkZW1vL19fbWFpbl9fLnB5CkBAIC04OSwxMyArODksMTIgQEAKIGltcG9ydCBvcwogCiBmcm9tIHRraW50ZXIgaW1wb3J0ICoKLWZyb20gaWRsZWxpYi5Db2xvckRlbGVnYXRvciBpbXBvcnQgQ29sb3JEZWxlZ2F0b3IsIGNvbG9yX2NvbmZpZwotZnJvbSBpZGxlbGliLlBlcmNvbGF0b3IgaW1wb3J0IFBlcmNvbGF0b3IKLWZyb20gaWRsZWxpYi50ZXh0VmlldyBpbXBvcnQgdmlld190ZXh0Citmcm9tIGlkbGVsaWIuY29sb3JpemVyIGltcG9ydCBDb2xvckRlbGVnYXRvciwgY29sb3JfY29uZmlnCitmcm9tIGlkbGVsaWIucGVyY29sYXRvciBpbXBvcnQgUGVyY29sYXRvcgorZnJvbSBpZGxlbGliLnRleHR2aWV3IGltcG9ydCB2aWV3X3RleHQKIGZyb20gdHVydGxlZGVtbyBpbXBvcnQgX19kb2NfXyBhcyBhYm91dF90dXJ0bGVkZW1vCiAKIGltcG9ydCB0dXJ0bGUKLWltcG9ydCB0aW1lCiAKIGRlbW9fZGlyID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChfX2ZpbGVfXykpCiBkYXJ3aW4gPSBzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicKZGlmZiAtLWdpdCBhL0xpYi90dXJ0bGVkZW1vL2J5dGVkZXNpZ24ucHkgYi9MaWIvdHVydGxlZGVtby9ieXRlZGVzaWduLnB5CmluZGV4IDY0YjFkN2QuLmIzYjA5NWIgMTAwNzU1Ci0tLSBhL0xpYi90dXJ0bGVkZW1vL2J5dGVkZXNpZ24ucHkKKysrIGIvTGliL3R1cnRsZWRlbW8vYnl0ZWRlc2lnbi5weQpAQCAtMjIsNyArMjIsNiBAQAogbW9kZSBhcyBmYXN0IGFzIHBvc3NpYmxlLgogIiIiCiAKLWltcG9ydCBtYXRoCiBmcm9tIHR1cnRsZSBpbXBvcnQgVHVydGxlLCBtYWlubG9vcAogZnJvbSB0aW1lIGltcG9ydCBjbG9jawogCmRpZmYgLS1naXQgYS9MaWIvdHVydGxlZGVtby9wbGFuZXRfYW5kX21vb24ucHkgYi9MaWIvdHVydGxlZGVtby9wbGFuZXRfYW5kX21vb24ucHkKaW5kZXggMjZhYmZkYi4uMDIxZmY5OSAxMDA3NTUKLS0tIGEvTGliL3R1cnRsZWRlbW8vcGxhbmV0X2FuZF9tb29uLnB5CisrKyBiL0xpYi90dXJ0bGVkZW1vL3BsYW5ldF9hbmRfbW9vbi5weQpAQCAtMTgsNyArMTgsNiBAQAogCiAiIiIKIGZyb20gdHVydGxlIGltcG9ydCBTaGFwZSwgVHVydGxlLCBtYWlubG9vcCwgVmVjMkQgYXMgVmVjCi1mcm9tIHRpbWUgaW1wb3J0IHNsZWVwCiAKIEcgPSA4CiAKZGlmZiAtLWdpdCBhL0xpYi90eXBlcy5weSBiL0xpYi90eXBlcy5weQppbmRleCA0ODg5MWNkLi5kOGQ4NDcwIDEwMDY0NAotLS0gYS9MaWIvdHlwZXMucHkKKysrIGIvTGliL3R5cGVzLnB5CkBAIC0yNCw2ICsyNCwxMSBAQAogQ29yb3V0aW5lVHlwZSA9IHR5cGUoX2MpCiBfYy5jbG9zZSgpICAjIFByZXZlbnQgUmVzb3VyY2VXYXJuaW5nCiAKK2FzeW5jIGRlZiBfYWcoKToKKyAgICB5aWVsZAorX2FnID0gX2FnKCkKK0FzeW5jR2VuZXJhdG9yVHlwZSA9IHR5cGUoX2FnKQorCiBjbGFzcyBfQzoKICAgICBkZWYgX20oc2VsZik6IHBhc3MKIE1ldGhvZFR5cGUgPSB0eXBlKF9DKCkuX20pCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvbW9jay5weSBiL0xpYi91bml0dGVzdC9tb2NrLnB5CmluZGV4IDY2OTg5MGEuLmYxMzQ5MTkgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC9tb2NrLnB5CisrKyBiL0xpYi91bml0dGVzdC9tb2NrLnB5CkBAIC02MCwxOCArNjAsNiBAQAogICAgICkKIAogCi1jbGFzcyBfc2xvdHRlZChvYmplY3QpOgotICAgIF9fc2xvdHNfXyA9IFsnYSddCi0KLQotIyBEbyBub3QgdXNlIHRoaXMgdHVwbGUuICBJdCB3YXMgbmV2ZXIgZG9jdW1lbnRlZCBhcyBhIHB1YmxpYyBBUEkuCi0jIEl0IHdpbGwgYmUgcmVtb3ZlZC4gIEl0IGhhcyBubyBvYnZpb3VzIHNpZ25zIG9mIHVzZXJzIG9uIGdpdGh1Yi4KLURlc2NyaXB0b3JUeXBlcyA9ICgKLSAgICB0eXBlKF9zbG90dGVkLmEpLAotICAgIHByb3BlcnR5LAotKQotCi0KIGRlZiBfZ2V0X3NpZ25hdHVyZV9vYmplY3QoZnVuYywgYXNfaW5zdGFuY2UsIGVhdF9zZWxmKToKICAgICAiIiIKICAgICBHaXZlbiBhbiBhcmJpdHJhcnksIHBvc3NpYmx5IGNhbGxhYmxlIG9iamVjdCwgdHJ5IHRvIGNyZWF0ZSBhIHN1aXRhYmxlCkBAIC0yMDUsNiArMTkzLDEyIEBACiAKICAgICBkZWYgYXNzZXJ0X2NhbGxlZF93aXRoKCphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgIHJldHVybiBtb2NrLmFzc2VydF9jYWxsZWRfd2l0aCgqYXJncywgKiprd2FyZ3MpCisgICAgZGVmIGFzc2VydF9jYWxsZWQoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgcmV0dXJuIG1vY2suYXNzZXJ0X2NhbGxlZCgqYXJncywgKiprd2FyZ3MpCisgICAgZGVmIGFzc2VydF9ub3RfY2FsbGVkKCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHJldHVybiBtb2NrLmFzc2VydF9ub3RfY2FsbGVkKCphcmdzLCAqKmt3YXJncykKKyAgICBkZWYgYXNzZXJ0X2NhbGxlZF9vbmNlKCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHJldHVybiBtb2NrLmFzc2VydF9jYWxsZWRfb25jZSgqYXJncywgKiprd2FyZ3MpCiAgICAgZGVmIGFzc2VydF9jYWxsZWRfb25jZV93aXRoKCphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgIHJldHVybiBtb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCphcmdzLCAqKmt3YXJncykKICAgICBkZWYgYXNzZXJ0X2hhc19jYWxscygqYXJncywgKiprd2FyZ3MpOgpAQCAtMjM1LDYgKzIyOSw5IEBACiAgICAgZnVuY29weS5hc3NlcnRfaGFzX2NhbGxzID0gYXNzZXJ0X2hhc19jYWxscwogICAgIGZ1bmNvcHkuYXNzZXJ0X2FueV9jYWxsID0gYXNzZXJ0X2FueV9jYWxsCiAgICAgZnVuY29weS5yZXNldF9tb2NrID0gcmVzZXRfbW9jaworICAgIGZ1bmNvcHkuYXNzZXJ0X2NhbGxlZCA9IGFzc2VydF9jYWxsZWQKKyAgICBmdW5jb3B5LmFzc2VydF9ub3RfY2FsbGVkID0gYXNzZXJ0X25vdF9jYWxsZWQKKyAgICBmdW5jb3B5LmFzc2VydF9jYWxsZWRfb25jZSA9IGFzc2VydF9jYWxsZWRfb25jZQogCiAgICAgbW9jay5fbW9ja19kZWxlZ2F0ZSA9IGZ1bmNvcHkKIApAQCAtNTI1LDcgKzUyMiw3IEBACiAgICAgc2lkZV9lZmZlY3QgPSBwcm9wZXJ0eShfX2dldF9zaWRlX2VmZmVjdCwgX19zZXRfc2lkZV9lZmZlY3QpCiAKIAotICAgIGRlZiByZXNldF9tb2NrKHNlbGYsIHZpc2l0ZWQ9Tm9uZSk6CisgICAgZGVmIHJlc2V0X21vY2soc2VsZiwgIHZpc2l0ZWQ9Tm9uZSwqLCByZXR1cm5fdmFsdWU9RmFsc2UsIHNpZGVfZWZmZWN0PUZhbHNlKToKICAgICAgICAgIlJlc3RvcmUgdGhlIG1vY2sgb2JqZWN0IHRvIGl0cyBpbml0aWFsIHN0YXRlLiIKICAgICAgICAgaWYgdmlzaXRlZCBpcyBOb25lOgogICAgICAgICAgICAgdmlzaXRlZCA9IFtdCkBAIC01NDAsNiArNTM3LDExIEBACiAgICAgICAgIHNlbGYuY2FsbF9hcmdzX2xpc3QgPSBfQ2FsbExpc3QoKQogICAgICAgICBzZWxmLm1ldGhvZF9jYWxscyA9IF9DYWxsTGlzdCgpCiAKKyAgICAgICAgaWYgcmV0dXJuX3ZhbHVlOgorICAgICAgICAgICAgc2VsZi5fbW9ja19yZXR1cm5fdmFsdWUgPSBERUZBVUxUCisgICAgICAgIGlmIHNpZGVfZWZmZWN0OgorICAgICAgICAgICAgc2VsZi5fbW9ja19zaWRlX2VmZmVjdCA9IE5vbmUKKwogICAgICAgICBmb3IgY2hpbGQgaW4gc2VsZi5fbW9ja19jaGlsZHJlbi52YWx1ZXMoKToKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoY2hpbGQsIF9TcGVjU3RhdGUpOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCkBAIC03NzQsNiArNzc2LDI0IEBACiAgICAgICAgICAgICAgICAgICAgKHNlbGYuX21vY2tfbmFtZSBvciAnbW9jaycsIHNlbGYuY2FsbF9jb3VudCkpCiAgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcihtc2cpCiAKKyAgICBkZWYgYXNzZXJ0X2NhbGxlZChfbW9ja19zZWxmKToKKyAgICAgICAgIiIiYXNzZXJ0IHRoYXQgdGhlIG1vY2sgd2FzIGNhbGxlZCBhdCBsZWFzdCBvbmNlCisgICAgICAgICIiIgorICAgICAgICBzZWxmID0gX21vY2tfc2VsZgorICAgICAgICBpZiBzZWxmLmNhbGxfY291bnQgPT0gMDoKKyAgICAgICAgICAgIG1zZyA9ICgiRXhwZWN0ZWQgJyVzJyB0byBoYXZlIGJlZW4gY2FsbGVkLiIgJQorICAgICAgICAgICAgICAgICAgIHNlbGYuX21vY2tfbmFtZSBvciAnbW9jaycpCisgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcihtc2cpCisKKyAgICBkZWYgYXNzZXJ0X2NhbGxlZF9vbmNlKF9tb2NrX3NlbGYpOgorICAgICAgICAiIiJhc3NlcnQgdGhhdCB0aGUgbW9jayB3YXMgY2FsbGVkIG9ubHkgb25jZS4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYgPSBfbW9ja19zZWxmCisgICAgICAgIGlmIG5vdCBzZWxmLmNhbGxfY291bnQgPT0gMToKKyAgICAgICAgICAgIG1zZyA9ICgiRXhwZWN0ZWQgJyVzJyB0byBoYXZlIGJlZW4gY2FsbGVkIG9uY2UuIENhbGxlZCAlcyB0aW1lcy4iICUKKyAgICAgICAgICAgICAgICAgICAoc2VsZi5fbW9ja19uYW1lIG9yICdtb2NrJywgc2VsZi5jYWxsX2NvdW50KSkKKyAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKG1zZykKKwogICAgIGRlZiBhc3NlcnRfY2FsbGVkX3dpdGgoX21vY2tfc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgIiIiYXNzZXJ0IHRoYXQgdGhlIG1vY2sgd2FzIGNhbGxlZCB3aXRoIHRoZSBzcGVjaWZpZWQgYXJndW1lbnRzLgogCkBAIC04MjIsNyArODQyLDcgQEAKICAgICAgICAgICAgIGlmIGV4cGVjdGVkIG5vdCBpbiBhbGxfY2FsbHM6CiAgICAgICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICdDYWxscyBub3QgZm91bmQuXG5FeHBlY3RlZDogJXJcbicKLSAgICAgICAgICAgICAgICAgICAgJ0FjdHVhbDogJXInICUgKGNhbGxzLCBzZWxmLm1vY2tfY2FsbHMpCisgICAgICAgICAgICAgICAgICAgICdBY3R1YWw6ICVyJyAlIChfQ2FsbExpc3QoY2FsbHMpLCBzZWxmLm1vY2tfY2FsbHMpCiAgICAgICAgICAgICAgICAgKSBmcm9tIGNhdXNlCiAgICAgICAgICAgICByZXR1cm4KIApkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3J1bm5lci5weSBiL0xpYi91bml0dGVzdC9ydW5uZXIucHkKaW5kZXggMjExMjI2Mi4uMmM1ZWE0YSAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L3J1bm5lci5weQorKysgYi9MaWIvdW5pdHRlc3QvcnVubmVyLnB5CkBAIC0xNjcsNyArMTY3LDcgQEAKICAgICAgICAgICAgICAgICBpZiBzZWxmLndhcm5pbmdzIGluIFsnZGVmYXVsdCcsICdhbHdheXMnXToKICAgICAgICAgICAgICAgICAgICAgd2FybmluZ3MuZmlsdGVyd2FybmluZ3MoJ21vZHVsZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnk9RGVwcmVjYXRpb25XYXJuaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9J1BsZWFzZSB1c2UgYXNzZXJ0XHcrIGluc3RlYWQuJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPXInUGxlYXNlIHVzZSBhc3NlcnRcdysgaW5zdGVhZC4nKQogICAgICAgICAgICAgc3RhcnRUaW1lID0gdGltZS50aW1lKCkKICAgICAgICAgICAgIHN0YXJ0VGVzdFJ1biA9IGdldGF0dHIocmVzdWx0LCAnc3RhcnRUZXN0UnVuJywgTm9uZSkKICAgICAgICAgICAgIGlmIHN0YXJ0VGVzdFJ1biBpcyBub3QgTm9uZToKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfYXNzZXJ0aW9ucy5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfYXNzZXJ0aW9ucy5weQppbmRleCBlNmUyYmMyLi4xYjBlODMzIDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2Fzc2VydGlvbnMucHkKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9hc3NlcnRpb25zLnB5CkBAIC0yNDAsNyArMjQwLDcgQEAKICAgICAgICAgIyBFcnJvciBtZXNzYWdlcyBhcmUgbXVsdGlsaW5lIHNvIG5vdCB0ZXN0aW5nIG9uIGZ1bGwgbWVzc2FnZQogICAgICAgICAjIGFzc2VydFR1cGxlRXF1YWwgYW5kIGFzc2VydExpc3RFcXVhbCBkZWxlZ2F0ZSB0byB0aGlzIG1ldGhvZAogICAgICAgICBzZWxmLmFzc2VydE1lc3NhZ2VzKCdhc3NlcnRTZXF1ZW5jZUVxdWFsJywgKFtdLCBbTm9uZV0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiXCsgXFtOb25lXF0kIiwgIl5vb3BzJCIsIHIiXCsgXFtOb25lXF0kIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbciJcKyBcW05vbmVcXSQiLCAiXm9vcHMkIiwgciJcKyBcW05vbmVcXSQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICByIlwrIFxbTm9uZVxdIDogb29wcyQiXSkKIAogICAgIGRlZiB0ZXN0QXNzZXJ0U2V0RXF1YWwoc2VsZik6CkBAIC0yNTAsMjEgKzI1MCwyMSBAQAogCiAgICAgZGVmIHRlc3RBc3NlcnRJbihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRNZXNzYWdlcygnYXNzZXJ0SW4nLCAoTm9uZSwgW10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnXk5vbmUgbm90IGZvdW5kIGluIFxbXF0kJywgIl5vb3BzJCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdeTm9uZSBub3QgZm91bmQgaW4gXFtcXSQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXk5vbmUgbm90IGZvdW5kIGluIFxbXF0gOiBvb3BzJCddKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyJ15Ob25lIG5vdCBmb3VuZCBpbiBcW1xdJCcsICJeb29wcyQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ15Ob25lIG5vdCBmb3VuZCBpbiBcW1xdJCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInXk5vbmUgbm90IGZvdW5kIGluIFxbXF0gOiBvb3BzJCddKQogCiAgICAgZGVmIHRlc3RBc3NlcnROb3RJbihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRNZXNzYWdlcygnYXNzZXJ0Tm90SW4nLCAoTm9uZSwgW05vbmVdKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ15Ob25lIHVuZXhwZWN0ZWRseSBmb3VuZCBpbiBcW05vbmVcXSQnLCAiXm9vcHMkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ15Ob25lIHVuZXhwZWN0ZWRseSBmb3VuZCBpbiBcW05vbmVcXSQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXk5vbmUgdW5leHBlY3RlZGx5IGZvdW5kIGluIFxbTm9uZVxdIDogb29wcyQnXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcideTm9uZSB1bmV4cGVjdGVkbHkgZm91bmQgaW4gXFtOb25lXF0kJywgIl5vb3BzJCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInXk5vbmUgdW5leHBlY3RlZGx5IGZvdW5kIGluIFxbTm9uZVxdJCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInXk5vbmUgdW5leHBlY3RlZGx5IGZvdW5kIGluIFxbTm9uZVxdIDogb29wcyQnXSkKIAogICAgIGRlZiB0ZXN0QXNzZXJ0RGljdEVxdWFsKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydE1lc3NhZ2VzKCdhc3NlcnREaWN0RXF1YWwnLCAoe30sIHsna2V5JzogJ3ZhbHVlJ30pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyIlwrIFx7J2tleSc6ICd2YWx1ZSdcfSQiLCAiXm9vcHMkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlwrIFx7J2tleSc6ICd2YWx1ZSdcfSQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXCsgXHsna2V5JzogJ3ZhbHVlJ1x9IDogb29wcyQiXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciJcKyBceydrZXknOiAndmFsdWUnXH0kIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciJcKyBceydrZXknOiAndmFsdWUnXH0gOiBvb3BzJCJdKQogCiAgICAgZGVmIHRlc3RBc3NlcnREaWN0Q29udGFpbnNTdWJzZXQoc2VsZik6CiAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfbG9hZGVyLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9sb2FkZXIucHkKaW5kZXggNGI5Nzg4Mi4uYjJmOWM4OCAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9sb2FkZXIucHkKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9sb2FkZXIucHkKQEAgLTM5MCw3ICszOTAsNyBAQAogICAgICAgICBzdWl0ZSA9IGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZSgnYWJjICgpIC8vJykKICAgICAgICAgZXJyb3IsIHRlc3QgPSBzZWxmLmNoZWNrX2RlZmVycmVkX2Vycm9yKGxvYWRlciwgc3VpdGUpCiAgICAgICAgIGV4cGVjdGVkID0gIkZhaWxlZCB0byBpbXBvcnQgdGVzdCBtb2R1bGU6IGFiYyAoKSAvLyIKLSAgICAgICAgZXhwZWN0ZWRfcmVnZXggPSAiRmFpbGVkIHRvIGltcG9ydCB0ZXN0IG1vZHVsZTogYWJjIFwoXCkgLy8iCisgICAgICAgIGV4cGVjdGVkX3JlZ2V4ID0gciJGYWlsZWQgdG8gaW1wb3J0IHRlc3QgbW9kdWxlOiBhYmMgXChcKSAvLyIKICAgICAgICAgc2VsZi5hc3NlcnRJbigKICAgICAgICAgICAgIGV4cGVjdGVkLCBlcnJvciwKICAgICAgICAgICAgICdtaXNzaW5nIGVycm9yIHN0cmluZyBpbiAlcicgJSBlcnJvcikKQEAgLTUwMiw3ICs1MDIsNyBAQAogICAgICAgICBzdWl0ZSA9IGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZSgnYWJjICgpIC8vJywgdW5pdHRlc3QpCiAgICAgICAgIGVycm9yLCB0ZXN0ID0gc2VsZi5jaGVja19kZWZlcnJlZF9lcnJvcihsb2FkZXIsIHN1aXRlKQogICAgICAgICBleHBlY3RlZCA9ICJtb2R1bGUgJ3VuaXR0ZXN0JyBoYXMgbm8gYXR0cmlidXRlICdhYmMgKCkgLy8nIgotICAgICAgICBleHBlY3RlZF9yZWdleCA9ICJtb2R1bGUgJ3VuaXR0ZXN0JyBoYXMgbm8gYXR0cmlidXRlICdhYmMgXChcKSAvLyciCisgICAgICAgIGV4cGVjdGVkX3JlZ2V4ID0gciJtb2R1bGUgJ3VuaXR0ZXN0JyBoYXMgbm8gYXR0cmlidXRlICdhYmMgXChcKSAvLyciCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oCiAgICAgICAgICAgICBleHBlY3RlZCwgZXJyb3IsCiAgICAgICAgICAgICAnbWlzc2luZyBlcnJvciBzdHJpbmcgaW4gJXInICUgZXJyb3IpCkBAIC04MDksNyArODA5LDcgQEAKICAgICAgICAgc3VpdGUgPSBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWVzKFsnYWJjICgpIC8vJ10pCiAgICAgICAgIGVycm9yLCB0ZXN0ID0gc2VsZi5jaGVja19kZWZlcnJlZF9lcnJvcihsb2FkZXIsIGxpc3Qoc3VpdGUpWzBdKQogICAgICAgICBleHBlY3RlZCA9ICJGYWlsZWQgdG8gaW1wb3J0IHRlc3QgbW9kdWxlOiBhYmMgKCkgLy8iCi0gICAgICAgIGV4cGVjdGVkX3JlZ2V4ID0gIkZhaWxlZCB0byBpbXBvcnQgdGVzdCBtb2R1bGU6IGFiYyBcKFwpIC8vIgorICAgICAgICBleHBlY3RlZF9yZWdleCA9IHIiRmFpbGVkIHRvIGltcG9ydCB0ZXN0IG1vZHVsZTogYWJjIFwoXCkgLy8iCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oCiAgICAgICAgICAgICBleHBlY3RlZCwgIGVycm9yLAogICAgICAgICAgICAgJ21pc3NpbmcgZXJyb3Igc3RyaW5nIGluICVyJyAlIGVycm9yKQpAQCAtOTI4LDcgKzkyOCw3IEBACiAgICAgICAgIHN1aXRlID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lcyhbJ2FiYyAoKSAvLyddLCB1bml0dGVzdCkKICAgICAgICAgZXJyb3IsIHRlc3QgPSBzZWxmLmNoZWNrX2RlZmVycmVkX2Vycm9yKGxvYWRlciwgbGlzdChzdWl0ZSlbMF0pCiAgICAgICAgIGV4cGVjdGVkID0gIm1vZHVsZSAndW5pdHRlc3QnIGhhcyBubyBhdHRyaWJ1dGUgJ2FiYyAoKSAvLyciCi0gICAgICAgIGV4cGVjdGVkX3JlZ2V4ID0gIm1vZHVsZSAndW5pdHRlc3QnIGhhcyBubyBhdHRyaWJ1dGUgJ2FiYyBcKFwpIC8vJyIKKyAgICAgICAgZXhwZWN0ZWRfcmVnZXggPSByIm1vZHVsZSAndW5pdHRlc3QnIGhhcyBubyBhdHRyaWJ1dGUgJ2FiYyBcKFwpIC8vJyIKICAgICAgICAgc2VsZi5hc3NlcnRJbigKICAgICAgICAgICAgIGV4cGVjdGVkLCBlcnJvciwKICAgICAgICAgICAgICdtaXNzaW5nIGVycm9yIHN0cmluZyBpbiAlcicgJSBlcnJvcikKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3N1cHBvcnQucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay9zdXBwb3J0LnB5CmluZGV4IGY0NzM4NzkuLjIwNTQzMWEgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3N1cHBvcnQucHkKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svc3VwcG9ydC5weQpAQCAtMSw1ICsxLDMgQEAKLWltcG9ydCBzeXMKLQogZGVmIGlzX2luc3RhbmNlKG9iaiwga2xhc3MpOgogICAgICIiIlZlcnNpb24gb2YgaXNfaW5zdGFuY2UgdGhhdCBkb2Vzbid0IGFjY2VzcyBfX2NsYXNzX18iIiIKICAgICByZXR1cm4gaXNzdWJjbGFzcyh0eXBlKG9iaiksIGtsYXNzKQpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdG1hZ2ljbWV0aG9kcy5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RtYWdpY21ldGhvZHMucHkKaW5kZXggYmI5Yjk1Ni4uMjQ1NjliNSAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdG1hZ2ljbWV0aG9kcy5weQorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0bWFnaWNtZXRob2RzLnB5CkBAIC0xLDUgKzEsNCBAQAogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgaW5zcGVjdAogaW1wb3J0IHN5cwogZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBNb2NrLCBNYWdpY01vY2ssIF9tYWdpY3MKIApkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdG1vY2sucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0bW9jay5weQppbmRleCA1ZjgyYjgyLi5iMDdhN2NjIDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0bW9jay5weQorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0bW9jay5weQpAQCAtMTIzOSw2ICsxMjM5LDI3IEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IpOgogICAgICAgICAgICAgbS5oZWxsby5hc3NlcnRfbm90X2NhbGxlZCgpCiAKKyAgICBkZWYgdGVzdF9hc3NlcnRfY2FsbGVkKHNlbGYpOgorICAgICAgICBtID0gTW9jaygpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IpOgorICAgICAgICAgICAgbS5oZWxsby5hc3NlcnRfY2FsbGVkKCkKKyAgICAgICAgbS5oZWxsbygpCisgICAgICAgIG0uaGVsbG8uYXNzZXJ0X2NhbGxlZCgpCisKKyAgICAgICAgbS5oZWxsbygpCisgICAgICAgIG0uaGVsbG8uYXNzZXJ0X2NhbGxlZCgpCisKKyAgICBkZWYgdGVzdF9hc3NlcnRfY2FsbGVkX29uY2Uoc2VsZik6CisgICAgICAgIG0gPSBNb2NrKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvcik6CisgICAgICAgICAgICBtLmhlbGxvLmFzc2VydF9jYWxsZWRfb25jZSgpCisgICAgICAgIG0uaGVsbG8oKQorICAgICAgICBtLmhlbGxvLmFzc2VydF9jYWxsZWRfb25jZSgpCisKKyAgICAgICAgbS5oZWxsbygpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IpOgorICAgICAgICAgICAgbS5oZWxsby5hc3NlcnRfY2FsbGVkX29uY2UoKQorCiAgICAgI0lzc3VlMjEyNTYgcHJpbnRvdXQgb2Yga2V5d29yZCBhcmdzIHNob3VsZCBiZSBpbiBkZXRlcm1pbmlzdGljIG9yZGVyCiAgICAgZGVmIHRlc3Rfc29ydGVkX2NhbGxfc2lnbmF0dXJlKHNlbGYpOgogICAgICAgICBtID0gTW9jaygpCkBAIC0xMjU2LDYgKzEyNzcsMjQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLm1ldGhvZF9jYWxsc1swXSwgYykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLm1ldGhvZF9jYWxsc1sxXSwgaSkKIAorICAgIGRlZiB0ZXN0X3Jlc2V0X3JldHVybl9zaWRlZWZmZWN0KHNlbGYpOgorICAgICAgICBtID0gTW9jayhyZXR1cm5fdmFsdWU9MTAsIHNpZGVfZWZmZWN0PVsyLDNdKQorICAgICAgICBtLnJlc2V0X21vY2socmV0dXJuX3ZhbHVlPVRydWUsIHNpZGVfZWZmZWN0PVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtLnJldHVybl92YWx1ZSwgTW9jaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnNpZGVfZWZmZWN0LCBOb25lKQorCisgICAgZGVmIHRlc3RfcmVzZXRfcmV0dXJuKHNlbGYpOgorICAgICAgICBtID0gTW9jayhyZXR1cm5fdmFsdWU9MTAsIHNpZGVfZWZmZWN0PVsyLDNdKQorICAgICAgICBtLnJlc2V0X21vY2socmV0dXJuX3ZhbHVlPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtLnJldHVybl92YWx1ZSwgTW9jaykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChtLnNpZGVfZWZmZWN0LCBOb25lKQorCisgICAgZGVmIHRlc3RfcmVzZXRfc2lkZWVmZmVjdChzZWxmKToKKyAgICAgICAgbSA9IE1vY2socmV0dXJuX3ZhbHVlPTEwLCBzaWRlX2VmZmVjdD1bMiwzXSkKKyAgICAgICAgbS5yZXNldF9tb2NrKHNpZGVfZWZmZWN0PVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5yZXR1cm5fdmFsdWUsIDEwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uc2lkZV9lZmZlY3QsIE5vbmUpCisKICAgICBkZWYgdGVzdF9tb2NrX2FkZF9zcGVjKHNlbGYpOgogICAgICAgICBjbGFzcyBfT25lKG9iamVjdCk6CiAgICAgICAgICAgICBvbmUgPSAxCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0cGF0Y2gucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0cGF0Y2gucHkKaW5kZXggZGZjZTM2OS4uZmU0ZWNlZiAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdHBhdGNoLnB5CisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RwYXRjaC5weQpAQCAtMTAsOSArMTAsOSBAQAogZnJvbSB1bml0dGVzdC50ZXN0LnRlc3Rtb2NrLnN1cHBvcnQgaW1wb3J0IFNvbWVDbGFzcywgaXNfaW5zdGFuY2UKIAogZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCAoCi0gICAgTm9uQ2FsbGFibGVNb2NrLCBDYWxsYWJsZU1peGluLCBwYXRjaCwgc2VudGluZWwsCisgICAgTm9uQ2FsbGFibGVNb2NrLCBDYWxsYWJsZU1peGluLCBzZW50aW5lbCwKICAgICBNYWdpY01vY2ssIE1vY2ssIE5vbkNhbGxhYmxlTWFnaWNNb2NrLCBwYXRjaCwgX3BhdGNoLAotICAgIERFRkFVTFQsIGNhbGwsIF9nZXRfdGFyZ2V0LCBfcGF0Y2gKKyAgICBERUZBVUxULCBjYWxsLCBfZ2V0X3RhcmdldAogKQogCiAKQEAgLTk2OSw4ICs5NjksMTQgQEAKICAgICBkZWYgdGVzdF9hdXRvc3BlY19mdW5jdGlvbihzZWxmKToKICAgICAgICAgQHBhdGNoKCclcy5mdW5jdGlvbicgJSBfX25hbWVfXywgYXV0b3NwZWM9VHJ1ZSkKICAgICAgICAgZGVmIHRlc3QobW9jayk6CisgICAgICAgICAgICBmdW5jdGlvbi5hc3NlcnRfbm90X2NhbGxlZCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvciwgZnVuY3Rpb24uYXNzZXJ0X2NhbGxlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yLCBmdW5jdGlvbi5hc3NlcnRfY2FsbGVkX29uY2UpCiAgICAgICAgICAgICBmdW5jdGlvbigxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IsIGZ1bmN0aW9uLmFzc2VydF9ub3RfY2FsbGVkKQogICAgICAgICAgICAgZnVuY3Rpb24uYXNzZXJ0X2NhbGxlZF93aXRoKDEpCisgICAgICAgICAgICBmdW5jdGlvbi5hc3NlcnRfY2FsbGVkKCkKKyAgICAgICAgICAgIGZ1bmN0aW9uLmFzc2VydF9jYWxsZWRfb25jZSgpCiAgICAgICAgICAgICBmdW5jdGlvbigyLCAzKQogICAgICAgICAgICAgZnVuY3Rpb24uYXNzZXJ0X2NhbGxlZF93aXRoKDIsIDMpCiAKZGlmZiAtLWdpdCBhL0xpYi91cmxsaWIvcGFyc2UucHkgYi9MaWIvdXJsbGliL3BhcnNlLnB5CmluZGV4IDU2NmZiZjcuLjk1ODc2N2EgMTAwNjQ0Ci0tLSBhL0xpYi91cmxsaWIvcGFyc2UucHkKKysrIGIvTGliL3VybGxpYi9wYXJzZS5weQpAQCAtMTU3LDkgKzE1Nyw4IEBACiAgICAgICAgIHBvcnQgPSBzZWxmLl9ob3N0aW5mb1sxXQogICAgICAgICBpZiBwb3J0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgcG9ydCA9IGludChwb3J0LCAxMCkKLSAgICAgICAgICAgICMgUmV0dXJuIE5vbmUgb24gYW4gaWxsZWdhbCBwb3J0CiAgICAgICAgICAgICBpZiBub3QgKCAwIDw9IHBvcnQgPD0gNjU1MzUpOgotICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiUG9ydCBvdXQgb2YgcmFuZ2UgMC02NTUzNSIpCiAgICAgICAgIHJldHVybiBwb3J0CiAKIApAQCAtMjI2LDggKzIyNSw3MSBAQAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZQogCiBfRGVmcmFnUmVzdWx0QmFzZSA9IG5hbWVkdHVwbGUoJ0RlZnJhZ1Jlc3VsdCcsICd1cmwgZnJhZ21lbnQnKQotX1NwbGl0UmVzdWx0QmFzZSA9IG5hbWVkdHVwbGUoJ1NwbGl0UmVzdWx0JywgJ3NjaGVtZSBuZXRsb2MgcGF0aCBxdWVyeSBmcmFnbWVudCcpCi1fUGFyc2VSZXN1bHRCYXNlID0gbmFtZWR0dXBsZSgnUGFyc2VSZXN1bHQnLCAnc2NoZW1lIG5ldGxvYyBwYXRoIHBhcmFtcyBxdWVyeSBmcmFnbWVudCcpCitfU3BsaXRSZXN1bHRCYXNlID0gbmFtZWR0dXBsZSgKKyAgICAnU3BsaXRSZXN1bHQnLCAnc2NoZW1lIG5ldGxvYyBwYXRoIHF1ZXJ5IGZyYWdtZW50JykKK19QYXJzZVJlc3VsdEJhc2UgPSBuYW1lZHR1cGxlKAorICAgICdQYXJzZVJlc3VsdCcsICdzY2hlbWUgbmV0bG9jIHBhdGggcGFyYW1zIHF1ZXJ5IGZyYWdtZW50JykKKworX0RlZnJhZ1Jlc3VsdEJhc2UuX19kb2NfXyA9ICIiIgorRGVmcmFnUmVzdWx0KHVybCwgZnJhZ21lbnQpCisKK0EgMi10dXBsZSB0aGF0IGNvbnRhaW5zIHRoZSB1cmwgd2l0aG91dCBmcmFnbWVudCBpZGVudGlmaWVyIGFuZCB0aGUgZnJhZ21lbnQKK2lkZW50aWZpZXIgYXMgYSBzZXBhcmF0ZSBhcmd1bWVudC4KKyIiIgorCitfRGVmcmFnUmVzdWx0QmFzZS51cmwuX19kb2NfXyA9ICIiIlRoZSBVUkwgd2l0aCBubyBmcmFnbWVudCBpZGVudGlmaWVyLiIiIgorCitfRGVmcmFnUmVzdWx0QmFzZS5mcmFnbWVudC5fX2RvY19fID0gIiIiCitGcmFnbWVudCBpZGVudGlmaWVyIHNlcGFyYXRlZCBmcm9tIFVSTCwgdGhhdCBhbGxvd3MgaW5kaXJlY3QgaWRlbnRpZmljYXRpb24gb2YgYQorc2Vjb25kYXJ5IHJlc291cmNlIGJ5IHJlZmVyZW5jZSB0byBhIHByaW1hcnkgcmVzb3VyY2UgYW5kIGFkZGl0aW9uYWwgaWRlbnRpZnlpbmcKK2luZm9ybWF0aW9uLgorIiIiCisKK19TcGxpdFJlc3VsdEJhc2UuX19kb2NfXyA9ICIiIgorU3BsaXRSZXN1bHQoc2NoZW1lLCBuZXRsb2MsIHBhdGgsIHF1ZXJ5LCBmcmFnbWVudCkKKworQSA1LXR1cGxlIHRoYXQgY29udGFpbnMgdGhlIGRpZmZlcmVudCBjb21wb25lbnRzIG9mIGEgVVJMLiBTaW1pbGFyIHRvCitQYXJzZVJlc3VsdCwgYnV0IGRvZXMgbm90IHNwbGl0IHBhcmFtcy4KKyIiIgorCitfU3BsaXRSZXN1bHRCYXNlLnNjaGVtZS5fX2RvY19fID0gIiIiU3BlY2lmaWVzIFVSTCBzY2hlbWUgZm9yIHRoZSByZXF1ZXN0LiIiIgorCitfU3BsaXRSZXN1bHRCYXNlLm5ldGxvYy5fX2RvY19fID0gIiIiCitOZXR3b3JrIGxvY2F0aW9uIHdoZXJlIHRoZSByZXF1ZXN0IGlzIG1hZGUgdG8uCisiIiIKKworX1NwbGl0UmVzdWx0QmFzZS5wYXRoLl9fZG9jX18gPSAiIiIKK1RoZSBoaWVyYXJjaGljYWwgcGF0aCwgc3VjaCBhcyB0aGUgcGF0aCB0byBhIGZpbGUgdG8gZG93bmxvYWQuCisiIiIKKworX1NwbGl0UmVzdWx0QmFzZS5xdWVyeS5fX2RvY19fID0gIiIiCitUaGUgcXVlcnkgY29tcG9uZW50LCB0aGF0IGNvbnRhaW5zIG5vbi1oaWVyYXJjaGljYWwgZGF0YSwgdGhhdCBhbG9uZyB3aXRoIGRhdGEKK2luIHBhdGggY29tcG9uZW50LCBpZGVudGlmaWVzIGEgcmVzb3VyY2UgaW4gdGhlIHNjb3BlIG9mIFVSSSdzIHNjaGVtZSBhbmQKK25ldHdvcmsgbG9jYXRpb24uCisiIiIKKworX1NwbGl0UmVzdWx0QmFzZS5mcmFnbWVudC5fX2RvY19fID0gIiIiCitGcmFnbWVudCBpZGVudGlmaWVyLCB0aGF0IGFsbG93cyBpbmRpcmVjdCBpZGVudGlmaWNhdGlvbiBvZiBhIHNlY29uZGFyeSByZXNvdXJjZQorYnkgcmVmZXJlbmNlIHRvIGEgcHJpbWFyeSByZXNvdXJjZSBhbmQgYWRkaXRpb25hbCBpZGVudGlmeWluZyBpbmZvcm1hdGlvbi4KKyIiIgorCitfUGFyc2VSZXN1bHRCYXNlLl9fZG9jX18gPSAiIiIKK1BhcnNlUmVzdWx0KHNjaGVtZSwgbmV0bG9jLCBwYXRoLCBwYXJhbXMsICBxdWVyeSwgZnJhZ21lbnQpCisKK0EgNi10dXBsZSB0aGF0IGNvbnRhaW5zIGNvbXBvbmVudHMgb2YgYSBwYXJzZWQgVVJMLgorIiIiCisKK19QYXJzZVJlc3VsdEJhc2Uuc2NoZW1lLl9fZG9jX18gPSBfU3BsaXRSZXN1bHRCYXNlLnNjaGVtZS5fX2RvY19fCitfUGFyc2VSZXN1bHRCYXNlLm5ldGxvYy5fX2RvY19fID0gX1NwbGl0UmVzdWx0QmFzZS5uZXRsb2MuX19kb2NfXworX1BhcnNlUmVzdWx0QmFzZS5wYXRoLl9fZG9jX18gPSBfU3BsaXRSZXN1bHRCYXNlLnBhdGguX19kb2NfXworX1BhcnNlUmVzdWx0QmFzZS5wYXJhbXMuX19kb2NfXyA9ICIiIgorUGFyYW1ldGVycyBmb3IgbGFzdCBwYXRoIGVsZW1lbnQgdXNlZCB0byBkZXJlZmVyZW5jZSB0aGUgVVJJIGluIG9yZGVyIHRvIHByb3ZpZGUKK2FjY2VzcyB0byBwZXJmb3JtIHNvbWUgb3BlcmF0aW9uIG9uIHRoZSByZXNvdXJjZS4KKyIiIgorCitfUGFyc2VSZXN1bHRCYXNlLnF1ZXJ5Ll9fZG9jX18gPSBfU3BsaXRSZXN1bHRCYXNlLnF1ZXJ5Ll9fZG9jX18KK19QYXJzZVJlc3VsdEJhc2UuZnJhZ21lbnQuX19kb2NfXyA9IF9TcGxpdFJlc3VsdEJhc2UuZnJhZ21lbnQuX19kb2NfXworCiAKICMgRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCBhbGlhcyBfTmV0bG9jUmVzdWx0TWl4aW5TdHIKICMgUmVzdWx0QmFzZSBpcyBubyBsb25nZXIgcGFydCBvZiB0aGUgZG9jdW1lbnRlZCBBUEksIGJ1dCBpdCBpcwpkaWZmIC0tZ2l0IGEvTGliL3VybGxpYi9yZXF1ZXN0LnB5IGIvTGliL3VybGxpYi9yZXF1ZXN0LnB5CmluZGV4IGE0YmY5N2QuLjVmMTViNzQgMTAwNjQ0Ci0tLSBhL0xpYi91cmxsaWIvcmVxdWVzdC5weQorKysgYi9MaWIvdXJsbGliL3JlcXVlc3QucHkKQEAgLTEzNCwxMyArMTM0LDczIEBACiBdCiAKICMgdXNlZCBpbiBVc2VyLUFnZW50IGhlYWRlciBzZW50Ci1fX3ZlcnNpb25fXyA9IHN5cy52ZXJzaW9uWzozXQorX192ZXJzaW9uX18gPSAnJWQuJWQnICUgc3lzLnZlcnNpb25faW5mb1s6Ml0KIAogX29wZW5lciA9IE5vbmUKIGRlZiB1cmxvcGVuKHVybCwgZGF0YT1Ob25lLCB0aW1lb3V0PXNvY2tldC5fR0xPQkFMX0RFRkFVTFRfVElNRU9VVCwKICAgICAgICAgICAgICosIGNhZmlsZT1Ob25lLCBjYXBhdGg9Tm9uZSwgY2FkZWZhdWx0PUZhbHNlLCBjb250ZXh0PU5vbmUpOgorICAgICcnJ09wZW4gdGhlIFVSTCB1cmwsIHdoaWNoIGNhbiBiZSBlaXRoZXIgYSBzdHJpbmcgb3IgYSBSZXF1ZXN0IG9iamVjdC4KKworICAgICpkYXRhKiBtdXN0IGJlIGFuIG9iamVjdCBzcGVjaWZ5aW5nIGFkZGl0aW9uYWwgZGF0YSB0byBiZSBzZW50IHRvCisgICAgdGhlIHNlcnZlciwgb3IgTm9uZSBpZiBubyBzdWNoIGRhdGEgaXMgbmVlZGVkLiAgU2VlIFJlcXVlc3QgZm9yCisgICAgZGV0YWlscy4KKworICAgIHVybGxpYi5yZXF1ZXN0IG1vZHVsZSB1c2VzIEhUVFAvMS4xIGFuZCBpbmNsdWRlcyBhICJDb25uZWN0aW9uOmNsb3NlIgorICAgIGhlYWRlciBpbiBpdHMgSFRUUCByZXF1ZXN0cy4KKworICAgIFRoZSBvcHRpb25hbCAqdGltZW91dCogcGFyYW1ldGVyIHNwZWNpZmllcyBhIHRpbWVvdXQgaW4gc2Vjb25kcyBmb3IKKyAgICBibG9ja2luZyBvcGVyYXRpb25zIGxpa2UgdGhlIGNvbm5lY3Rpb24gYXR0ZW1wdCAoaWYgbm90IHNwZWNpZmllZCwgdGhlCisgICAgZ2xvYmFsIGRlZmF1bHQgdGltZW91dCBzZXR0aW5nIHdpbGwgYmUgdXNlZCkuIFRoaXMgb25seSB3b3JrcyBmb3IgSFRUUCwKKyAgICBIVFRQUyBhbmQgRlRQIGNvbm5lY3Rpb25zLgorCisgICAgSWYgKmNvbnRleHQqIGlzIHNwZWNpZmllZCwgaXQgbXVzdCBiZSBhIHNzbC5TU0xDb250ZXh0IGluc3RhbmNlIGRlc2NyaWJpbmcKKyAgICB0aGUgdmFyaW91cyBTU0wgb3B0aW9ucy4gU2VlIEhUVFBTQ29ubmVjdGlvbiBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgVGhlIG9wdGlvbmFsICpjYWZpbGUqIGFuZCAqY2FwYXRoKiBwYXJhbWV0ZXJzIHNwZWNpZnkgYSBzZXQgb2YgdHJ1c3RlZCBDQQorICAgIGNlcnRpZmljYXRlcyBmb3IgSFRUUFMgcmVxdWVzdHMuIGNhZmlsZSBzaG91bGQgcG9pbnQgdG8gYSBzaW5nbGUgZmlsZQorICAgIGNvbnRhaW5pbmcgYSBidW5kbGUgb2YgQ0EgY2VydGlmaWNhdGVzLCB3aGVyZWFzIGNhcGF0aCBzaG91bGQgcG9pbnQgdG8gYQorICAgIGRpcmVjdG9yeSBvZiBoYXNoZWQgY2VydGlmaWNhdGUgZmlsZXMuIE1vcmUgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluCisgICAgc3NsLlNTTENvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zKCkuCisKKyAgICBUaGUgKmNhZGVmYXVsdCogcGFyYW1ldGVyIGlzIGlnbm9yZWQuCisKKyAgICBUaGlzIGZ1bmN0aW9uIGFsd2F5cyByZXR1cm5zIGFuIG9iamVjdCB3aGljaCBjYW4gd29yayBhcyBhIGNvbnRleHQKKyAgICBtYW5hZ2VyIGFuZCBoYXMgbWV0aG9kcyBzdWNoIGFzCisKKyAgICAqIGdldHVybCgpIC0gcmV0dXJuIHRoZSBVUkwgb2YgdGhlIHJlc291cmNlIHJldHJpZXZlZCwgY29tbW9ubHkgdXNlZCB0bworICAgICAgZGV0ZXJtaW5lIGlmIGEgcmVkaXJlY3Qgd2FzIGZvbGxvd2VkCisKKyAgICAqIGluZm8oKSAtIHJldHVybiB0aGUgbWV0YS1pbmZvcm1hdGlvbiBvZiB0aGUgcGFnZSwgc3VjaCBhcyBoZWFkZXJzLCBpbiB0aGUKKyAgICAgIGZvcm0gb2YgYW4gZW1haWwubWVzc2FnZV9mcm9tX3N0cmluZygpIGluc3RhbmNlIChzZWUgUXVpY2sgUmVmZXJlbmNlIHRvCisgICAgICBIVFRQIEhlYWRlcnMpCisKKyAgICAqIGdldGNvZGUoKSAtIHJldHVybiB0aGUgSFRUUCBzdGF0dXMgY29kZSBvZiB0aGUgcmVzcG9uc2UuICBSYWlzZXMgVVJMRXJyb3IKKyAgICAgIG9uIGVycm9ycy4KKworICAgIEZvciBIVFRQIGFuZCBIVFRQUyBVUkxzLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgYSBodHRwLmNsaWVudC5IVFRQUmVzcG9uc2UKKyAgICBvYmplY3Qgc2xpZ2h0bHkgbW9kaWZpZWQuIEluIGFkZGl0aW9uIHRvIHRoZSB0aHJlZSBuZXcgbWV0aG9kcyBhYm92ZSwgdGhlCisgICAgbXNnIGF0dHJpYnV0ZSBjb250YWlucyB0aGUgc2FtZSBpbmZvcm1hdGlvbiBhcyB0aGUgcmVhc29uIGF0dHJpYnV0ZSAtLS0KKyAgICB0aGUgcmVhc29uIHBocmFzZSByZXR1cm5lZCBieSB0aGUgc2VydmVyIC0tLSBpbnN0ZWFkIG9mIHRoZSByZXNwb25zZQorICAgIGhlYWRlcnMgYXMgaXQgaXMgc3BlY2lmaWVkIGluIHRoZSBkb2N1bWVudGF0aW9uIGZvciBIVFRQUmVzcG9uc2UuCisKKyAgICBGb3IgRlRQLCBmaWxlLCBhbmQgZGF0YSBVUkxzIGFuZCByZXF1ZXN0cyBleHBsaWNpdGx5IGhhbmRsZWQgYnkgbGVnYWN5CisgICAgVVJMb3BlbmVyIGFuZCBGYW5jeVVSTG9wZW5lciBjbGFzc2VzLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgYQorICAgIHVybGxpYi5yZXNwb25zZS5hZGRpbmZvdXJsIG9iamVjdC4KKworICAgIE5vdGUgdGhhdCBOb25lIG1heSBiZSByZXR1cm5lZCBpZiBubyBoYW5kbGVyIGhhbmRsZXMgdGhlIHJlcXVlc3QgKHRob3VnaAorICAgIHRoZSBkZWZhdWx0IGluc3RhbGxlZCBnbG9iYWwgT3BlbmVyRGlyZWN0b3IgdXNlcyBVbmtub3duSGFuZGxlciB0byBlbnN1cmUKKyAgICB0aGlzIG5ldmVyIGhhcHBlbnMpLgorCisgICAgSW4gYWRkaXRpb24sIGlmIHByb3h5IHNldHRpbmdzIGFyZSBkZXRlY3RlZCAoZm9yIGV4YW1wbGUsIHdoZW4gYSAqX3Byb3h5CisgICAgZW52aXJvbm1lbnQgdmFyaWFibGUgbGlrZSBodHRwX3Byb3h5IGlzIHNldCksIFByb3h5SGFuZGxlciBpcyBkZWZhdWx0CisgICAgaW5zdGFsbGVkIGFuZCBtYWtlcyBzdXJlIHRoZSByZXF1ZXN0cyBhcmUgaGFuZGxlZCB0aHJvdWdoIHRoZSBwcm94eS4KKworICAgICcnJwogICAgIGdsb2JhbCBfb3BlbmVyCiAgICAgaWYgY2FmaWxlIG9yIGNhcGF0aCBvciBjYWRlZmF1bHQ6CisgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICB3YXJuaW5ncy53YXJuKCJjYWZpbGUsIGNwYXRoIGFuZCBjYWRlZmF1bHQgYXJlIGRlcHJlY2F0ZWQsIHVzZSBhICIKKyAgICAgICAgICAgICAgICAgICAgICAiY3VzdG9tIGNvbnRleHQgaW5zdGVhZC4iLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIGlmIGNvbnRleHQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICAgICAgICJZb3UgY2FuJ3QgcGFzcyBib3RoIGNvbnRleHQgYW5kIGFueSBvZiBjYWZpbGUsIGNhcGF0aCwgYW5kICIKQEAgLTExNzAsNiArMTIzMCwxMSBAQAogICAgIGRlZiBzZXRfaHR0cF9kZWJ1Z2xldmVsKHNlbGYsIGxldmVsKToKICAgICAgICAgc2VsZi5fZGVidWdsZXZlbCA9IGxldmVsCiAKKyAgICBkZWYgX2dldF9jb250ZW50X2xlbmd0aChzZWxmLCByZXF1ZXN0KToKKyAgICAgICAgcmV0dXJuIGh0dHAuY2xpZW50LkhUVFBDb25uZWN0aW9uLl9nZXRfY29udGVudF9sZW5ndGgoCisgICAgICAgICAgICByZXF1ZXN0LmRhdGEsCisgICAgICAgICAgICByZXF1ZXN0LmdldF9tZXRob2QoKSkKKwogICAgIGRlZiBkb19yZXF1ZXN0XyhzZWxmLCByZXF1ZXN0KToKICAgICAgICAgaG9zdCA9IHJlcXVlc3QuaG9zdAogICAgICAgICBpZiBub3QgaG9zdDoKQEAgLTExNzgsMjQgKzEyNDMsMjIgQEAKICAgICAgICAgaWYgcmVxdWVzdC5kYXRhIGlzIG5vdCBOb25lOiAgIyBQT1NUCiAgICAgICAgICAgICBkYXRhID0gcmVxdWVzdC5kYXRhCiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGRhdGEsIHN0cik6Ci0gICAgICAgICAgICAgICAgbXNnID0gIlBPU1QgZGF0YSBzaG91bGQgYmUgYnl0ZXMgb3IgYW4gaXRlcmFibGUgb2YgYnl0ZXMuICIgXAotICAgICAgICAgICAgICAgICAgICAgICJJdCBjYW5ub3QgYmUgb2YgdHlwZSBzdHIuIgorICAgICAgICAgICAgICAgIG1zZyA9ICJQT1NUIGRhdGEgc2hvdWxkIGJlIGJ5dGVzLCBhbiBpdGVyYWJsZSBvZiBieXRlcywgIiBcCisgICAgICAgICAgICAgICAgICAgICAgIm9yIGEgZmlsZSBvYmplY3QuIEl0IGNhbm5vdCBiZSBvZiB0eXBlIHN0ci4iCiAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKG1zZykKICAgICAgICAgICAgIGlmIG5vdCByZXF1ZXN0Lmhhc19oZWFkZXIoJ0NvbnRlbnQtdHlwZScpOgogICAgICAgICAgICAgICAgIHJlcXVlc3QuYWRkX3VucmVkaXJlY3RlZF9oZWFkZXIoCiAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LXR5cGUnLAogICAgICAgICAgICAgICAgICAgICAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJykKLSAgICAgICAgICAgIGlmIG5vdCByZXF1ZXN0Lmhhc19oZWFkZXIoJ0NvbnRlbnQtbGVuZ3RoJyk6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBtdiA9IG1lbW9yeXZpZXcoZGF0YSkKLSAgICAgICAgICAgICAgICBleGNlcHQgVHlwZUVycm9yOgotICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGRhdGEsIGNvbGxlY3Rpb25zLkl0ZXJhYmxlKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNvbnRlbnQtTGVuZ3RoIHNob3VsZCBiZSBzcGVjaWZpZWQgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9yIGl0ZXJhYmxlIGRhdGEgb2YgdHlwZSAlciAlciIgJSAodHlwZShkYXRhKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSkpCisgICAgICAgICAgICBpZiAobm90IHJlcXVlc3QuaGFzX2hlYWRlcignQ29udGVudC1sZW5ndGgnKQorICAgICAgICAgICAgICAgICAgICBhbmQgbm90IHJlcXVlc3QuaGFzX2hlYWRlcignVHJhbnNmZXItZW5jb2RpbmcnKSk6CisgICAgICAgICAgICAgICAgY29udGVudF9sZW5ndGggPSBzZWxmLl9nZXRfY29udGVudF9sZW5ndGgocmVxdWVzdCkKKyAgICAgICAgICAgICAgICBpZiBjb250ZW50X2xlbmd0aCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5hZGRfdW5yZWRpcmVjdGVkX2hlYWRlcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1sZW5ndGgnLCBzdHIoY29udGVudF9sZW5ndGgpKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuYWRkX3VucmVkaXJlY3RlZF9oZWFkZXIoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtbGVuZ3RoJywgJyVkJyAlIChsZW4obXYpICogbXYuaXRlbXNpemUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdUcmFuc2Zlci1lbmNvZGluZycsICdjaHVua2VkJykKIAogICAgICAgICBzZWxfaG9zdCA9IGhvc3QKICAgICAgICAgaWYgcmVxdWVzdC5oYXNfcHJveHkoKToKQEAgLTEyNTEsNyArMTMxNCw4IEBACiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGgucmVxdWVzdChyZXEuZ2V0X21ldGhvZCgpLCByZXEuc2VsZWN0b3IsIHJlcS5kYXRhLCBoZWFkZXJzKQorICAgICAgICAgICAgICAgIGgucmVxdWVzdChyZXEuZ2V0X21ldGhvZCgpLCByZXEuc2VsZWN0b3IsIHJlcS5kYXRhLCBoZWFkZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGVfY2h1bmtlZD1yZXEuaGFzX2hlYWRlcignVHJhbnNmZXItZW5jb2RpbmcnKSkKICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjogIyB0aW1lb3V0IGVycm9yCiAgICAgICAgICAgICAgICAgcmFpc2UgVVJMRXJyb3IoZXJyKQogICAgICAgICAgICAgciA9IGguZ2V0cmVzcG9uc2UoKQpkaWZmIC0tZ2l0IGEvTGliL3VybGxpYi9yb2JvdHBhcnNlci5weSBiL0xpYi91cmxsaWIvcm9ib3RwYXJzZXIucHkKaW5kZXggOGI2OWZkOS4uOWRhYjRjMSAxMDA2NDQKLS0tIGEvTGliL3VybGxpYi9yb2JvdHBhcnNlci5weQorKysgYi9MaWIvdXJsbGliL3JvYm90cGFyc2VyLnB5CkBAIC0xMCw3ICsxMCw5IEBACiAgICAgaHR0cDovL3d3dy5yb2JvdHN0eHQub3JnL25vcm9ib3RzLXJmYy50eHQKICIiIgogCi1pbXBvcnQgdXJsbGliLnBhcnNlLCB1cmxsaWIucmVxdWVzdAoraW1wb3J0IGNvbGxlY3Rpb25zCitpbXBvcnQgdXJsbGliLnBhcnNlCitpbXBvcnQgdXJsbGliLnJlcXVlc3QKIAogX19hbGxfXyA9IFsiUm9ib3RGaWxlUGFyc2VyIl0KIApAQCAtMTIwLDEwICsxMjIsMjkgQEAKICAgICAgICAgICAgICAgICAgICAgaWYgc3RhdGUgIT0gMDoKICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LnJ1bGVsaW5lcy5hcHBlbmQoUnVsZUxpbmUobGluZVsxXSwgVHJ1ZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IDIKKyAgICAgICAgICAgICAgICBlbGlmIGxpbmVbMF0gPT0gImNyYXdsLWRlbGF5IjoKKyAgICAgICAgICAgICAgICAgICAgaWYgc3RhdGUgIT0gMDoKKyAgICAgICAgICAgICAgICAgICAgICAgICMgYmVmb3JlIHRyeWluZyB0byBjb252ZXJ0IHRvIGludCB3ZSBuZWVkIHRvIG1ha2UKKyAgICAgICAgICAgICAgICAgICAgICAgICMgc3VyZSB0aGF0IHJvYm90cy50eHQgaGFzIHZhbGlkIHN5bnRheCBvdGhlcndpc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICMgaXQgd2lsbCBjcmFzaAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgbGluZVsxXS5zdHJpcCgpLmlzZGlnaXQoKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS5kZWxheSA9IGludChsaW5lWzFdKQorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSAyCisgICAgICAgICAgICAgICAgZWxpZiBsaW5lWzBdID09ICJyZXF1ZXN0LXJhdGUiOgorICAgICAgICAgICAgICAgICAgICBpZiBzdGF0ZSAhPSAwOgorICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVycyA9IGxpbmVbMV0uc3BsaXQoJy8nKQorICAgICAgICAgICAgICAgICAgICAgICAgIyBjaGVjayBpZiBhbGwgdmFsdWVzIGFyZSBzYW5lCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGVuKG51bWJlcnMpID09IDIgYW5kIG51bWJlcnNbMF0uc3RyaXAoKS5pc2RpZ2l0KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgbnVtYmVyc1sxXS5zdHJpcCgpLmlzZGlnaXQoKSk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxX3JhdGUgPSBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCdyZXFfcmF0ZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXF1ZXN0cyBzZWNvbmRzJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS5yZXFfcmF0ZSA9IHJlcV9yYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnkucmVxX3JhdGUucmVxdWVzdHMgPSBpbnQobnVtYmVyc1swXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS5yZXFfcmF0ZS5zZWNvbmRzID0gaW50KG51bWJlcnNbMV0pCisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IDIKICAgICAgICAgaWYgc3RhdGUgPT0gMjoKICAgICAgICAgICAgIHNlbGYuX2FkZF9lbnRyeShlbnRyeSkKIAotCiAgICAgZGVmIGNhbl9mZXRjaChzZWxmLCB1c2VyYWdlbnQsIHVybCk6CiAgICAgICAgICIiInVzaW5nIHRoZSBwYXJzZWQgcm9ib3RzLnR4dCBkZWNpZGUgaWYgdXNlcmFnZW50IGNhbiBmZXRjaCB1cmwiIiIKICAgICAgICAgaWYgc2VsZi5kaXNhbGxvd19hbGw6CkBAIC0xNTMsNiArMTc0LDIyIEBACiAgICAgICAgICMgYWdlbnQgbm90IGZvdW5kID09PiBhY2Nlc3MgZ3JhbnRlZAogICAgICAgICByZXR1cm4gVHJ1ZQogCisgICAgZGVmIGNyYXdsX2RlbGF5KHNlbGYsIHVzZXJhZ2VudCk6CisgICAgICAgIGlmIG5vdCBzZWxmLm10aW1lKCk6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBmb3IgZW50cnkgaW4gc2VsZi5lbnRyaWVzOgorICAgICAgICAgICAgaWYgZW50cnkuYXBwbGllc190byh1c2VyYWdlbnQpOgorICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeS5kZWxheQorICAgICAgICByZXR1cm4gc2VsZi5kZWZhdWx0X2VudHJ5LmRlbGF5CisKKyAgICBkZWYgcmVxdWVzdF9yYXRlKHNlbGYsIHVzZXJhZ2VudCk6CisgICAgICAgIGlmIG5vdCBzZWxmLm10aW1lKCk6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBmb3IgZW50cnkgaW4gc2VsZi5lbnRyaWVzOgorICAgICAgICAgICAgaWYgZW50cnkuYXBwbGllc190byh1c2VyYWdlbnQpOgorICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeS5yZXFfcmF0ZQorICAgICAgICByZXR1cm4gc2VsZi5kZWZhdWx0X2VudHJ5LnJlcV9yYXRlCisKICAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICAgcmV0dXJuICcnLmpvaW4oW3N0cihlbnRyeSkgKyAiXG4iIGZvciBlbnRyeSBpbiBzZWxmLmVudHJpZXNdKQogCkBAIC0xODAsNiArMjE3LDggQEAKICAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgIHNlbGYudXNlcmFnZW50cyA9IFtdCiAgICAgICAgIHNlbGYucnVsZWxpbmVzID0gW10KKyAgICAgICAgc2VsZi5kZWxheSA9IE5vbmUKKyAgICAgICAgc2VsZi5yZXFfcmF0ZSA9IE5vbmUKIAogICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgICByZXQgPSBbXQpkaWZmIC0tZ2l0IGEvTGliL3V1aWQucHkgYi9MaWIvdXVpZC5weQppbmRleCBlOTZlN2UwLi4yMDBjODAwIDEwMDY0NAotLS0gYS9MaWIvdXVpZC5weQorKysgYi9MaWIvdXVpZC5weQpAQCAtNDg3LDcgKzQ4Nyw2IEBACiAgICAgIyBBc3N1bWUgdGhhdCB0aGUgdXVpZF9nZW5lcmF0ZSBmdW5jdGlvbnMgYXJlIGJyb2tlbiBmcm9tIDEwLjUgb253YXJkLAogICAgICMgdGhlIHRlc3QgY2FuIGJlIGFkanVzdGVkIHdoZW4gYSBsYXRlciB2ZXJzaW9uIGlzIGZpeGVkLgogICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKLSAgICAgICAgaW1wb3J0IG9zCiAgICAgICAgIGlmIGludChvcy51bmFtZSgpLnJlbGVhc2Uuc3BsaXQoJy4nKVswXSkgPj0gOToKICAgICAgICAgICAgIF91dWlkX2dlbmVyYXRlX3RpbWUgPSBOb25lCiAKZGlmZiAtLWdpdCBhL0xpYi92ZW52L19faW5pdF9fLnB5IGIvTGliL3ZlbnYvX19pbml0X18ucHkKaW5kZXggNzQyNDVhYi4uMGEwOTRlMyAxMDA2NDQKLS0tIGEvTGliL3ZlbnYvX19pbml0X18ucHkKKysrIGIvTGliL3ZlbnYvX19pbml0X18ucHkKQEAgLTMsMjggKzMsNiBAQAogCiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNCBWaW5heSBTYWppcC4KIExpY2Vuc2VkIHRvIHRoZSBQU0YgdW5kZXIgYSBjb250cmlidXRvciBhZ3JlZW1lbnQuCi0KLXVzYWdlOiBweXRob24gLW0gdmVudiBbLWhdIFstLXN5c3RlbS1zaXRlLXBhY2thZ2VzXSBbLS1zeW1saW5rc10gWy0tY2xlYXJdCi0gICAgICAgICAgICBbLS11cGdyYWRlXQotICAgICAgICAgICAgRU5WX0RJUiBbRU5WX0RJUiAuLi5dCi0KLUNyZWF0ZXMgdmlydHVhbCBQeXRob24gZW52aXJvbm1lbnRzIGluIG9uZSBvciBtb3JlIHRhcmdldCBkaXJlY3Rvcmllcy4KLQotcG9zaXRpb25hbCBhcmd1bWVudHM6Ci0gIEVOVl9ESVIgICAgICAgICAgICAgICBBIGRpcmVjdG9yeSB0byBjcmVhdGUgdGhlIGVudmlyb25tZW50IGluLgotCi1vcHRpb25hbCBhcmd1bWVudHM6Ci0gIC1oLCAtLWhlbHAgICAgICAgICAgICBzaG93IHRoaXMgaGVscCBtZXNzYWdlIGFuZCBleGl0Ci0gIC0tc3lzdGVtLXNpdGUtcGFja2FnZXMKLSAgICAgICAgICAgICAgICAgICAgICAgIEdpdmUgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQgYWNjZXNzIHRvIHRoZSBzeXN0ZW0KLSAgICAgICAgICAgICAgICAgICAgICAgIHNpdGUtcGFja2FnZXMgZGlyLgotICAtLXN5bWxpbmtzICAgICAgICAgICAgQXR0ZW1wdCB0byBzeW1saW5rIHJhdGhlciB0aGFuIGNvcHkuCi0gIC0tY2xlYXIgICAgICAgICAgICAgICBEZWxldGUgdGhlIGNvbnRlbnRzIG9mIHRoZSBlbnZpcm9ubWVudCBkaXJlY3RvcnkgaWYgaXQKLSAgICAgICAgICAgICAgICAgICAgICAgIGFscmVhZHkgZXhpc3RzLCBiZWZvcmUgZW52aXJvbm1lbnQgY3JlYXRpb24uCi0gIC0tdXBncmFkZSAgICAgICAgICAgICBVcGdyYWRlIHRoZSBlbnZpcm9ubWVudCBkaXJlY3RvcnkgdG8gdXNlIHRoaXMgdmVyc2lvbgotICAgICAgICAgICAgICAgICAgICAgICAgb2YgUHl0aG9uLCBhc3N1bWluZyBQeXRob24gaGFzIGJlZW4gdXBncmFkZWQgaW4tcGxhY2UuCi0gIC0td2l0aG91dC1waXAgICAgICAgICBTa2lwcyBpbnN0YWxsaW5nIG9yIHVwZ3JhZGluZyBwaXAgaW4gdGhlIHZpcnR1YWwKLSAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50IChwaXAgaXMgYm9vdHN0cmFwcGVkIGJ5IGRlZmF1bHQpCiAiIiIKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgb3MKQEAgLTU4LDE1ICszNiwxNyBAQAogICAgIDpwYXJhbSB1cGdyYWRlOiBJZiBUcnVlLCB1cGdyYWRlIGFuIGV4aXN0aW5nIHZpcnR1YWwgZW52aXJvbm1lbnQuCiAgICAgOnBhcmFtIHdpdGhfcGlwOiBJZiBUcnVlLCBlbnN1cmUgcGlwIGlzIGluc3RhbGxlZCBpbiB0aGUgdmlydHVhbAogICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQKKyAgICA6cGFyYW0gcHJvbXB0OiBBbHRlcm5hdGl2ZSB0ZXJtaW5hbCBwcmVmaXggZm9yIHRoZSBlbnZpcm9ubWVudC4KICAgICAiIiIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzeXN0ZW1fc2l0ZV9wYWNrYWdlcz1GYWxzZSwgY2xlYXI9RmFsc2UsCi0gICAgICAgICAgICAgICAgIHN5bWxpbmtzPUZhbHNlLCB1cGdyYWRlPUZhbHNlLCB3aXRoX3BpcD1GYWxzZSk6CisgICAgICAgICAgICAgICAgIHN5bWxpbmtzPUZhbHNlLCB1cGdyYWRlPUZhbHNlLCB3aXRoX3BpcD1GYWxzZSwgcHJvbXB0PU5vbmUpOgogICAgICAgICBzZWxmLnN5c3RlbV9zaXRlX3BhY2thZ2VzID0gc3lzdGVtX3NpdGVfcGFja2FnZXMKICAgICAgICAgc2VsZi5jbGVhciA9IGNsZWFyCiAgICAgICAgIHNlbGYuc3ltbGlua3MgPSBzeW1saW5rcwogICAgICAgICBzZWxmLnVwZ3JhZGUgPSB1cGdyYWRlCiAgICAgICAgIHNlbGYud2l0aF9waXAgPSB3aXRoX3BpcAorICAgICAgICBzZWxmLnByb21wdCA9IHByb21wdAogCiAgICAgZGVmIGNyZWF0ZShzZWxmLCBlbnZfZGlyKToKICAgICAgICAgIiIiCkBAIC0xMTIsNyArOTIsOCBAQAogICAgICAgICBjb250ZXh0ID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKCkKICAgICAgICAgY29udGV4dC5lbnZfZGlyID0gZW52X2RpcgogICAgICAgICBjb250ZXh0LmVudl9uYW1lID0gb3MucGF0aC5zcGxpdChlbnZfZGlyKVsxXQotICAgICAgICBjb250ZXh0LnByb21wdCA9ICcoJXMpICcgJSBjb250ZXh0LmVudl9uYW1lCisgICAgICAgIHByb21wdCA9IHNlbGYucHJvbXB0IGlmIHNlbGYucHJvbXB0IGlzIG5vdCBOb25lIGVsc2UgY29udGV4dC5lbnZfbmFtZQorICAgICAgICBjb250ZXh0LnByb21wdCA9ICcoJXMpICcgJSBwcm9tcHQKICAgICAgICAgY3JlYXRlX2lmX25lZWRlZChlbnZfZGlyKQogICAgICAgICBlbnYgPSBvcy5lbnZpcm9uCiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgJ19fUFlWRU5WX0xBVU5DSEVSX18nIGluIGVudjoKQEAgLTM0OCwyNiArMzI5LDExIEBACiAKIAogZGVmIGNyZWF0ZShlbnZfZGlyLCBzeXN0ZW1fc2l0ZV9wYWNrYWdlcz1GYWxzZSwgY2xlYXI9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgIHN5bWxpbmtzPUZhbHNlLCB3aXRoX3BpcD1GYWxzZSk6Ci0gICAgIiIiCi0gICAgQ3JlYXRlIGEgdmlydHVhbCBlbnZpcm9ubWVudCBpbiBhIGRpcmVjdG9yeS4KLQotICAgIEJ5IGRlZmF1bHQsIG1ha2VzIHRoZSBzeXN0ZW0gKGdsb2JhbCkgc2l0ZS1wYWNrYWdlcyBkaXIgKnVuKmF2YWlsYWJsZSB0bwotICAgIHRoZSBjcmVhdGVkIGVudmlyb25tZW50LCBhbmQgdXNlcyBjb3B5aW5nIHJhdGhlciB0aGFuIHN5bWxpbmtpbmcgZm9yIGZpbGVzCi0gICAgb2J0YWluZWQgZnJvbSB0aGUgc291cmNlIFB5dGhvbiBpbnN0YWxsYXRpb24uCi0KLSAgICA6cGFyYW0gZW52X2RpcjogVGhlIHRhcmdldCBkaXJlY3RvcnkgdG8gY3JlYXRlIGFuIGVudmlyb25tZW50IGluLgotICAgIDpwYXJhbSBzeXN0ZW1fc2l0ZV9wYWNrYWdlczogSWYgVHJ1ZSwgdGhlIHN5c3RlbSAoZ2xvYmFsKSBzaXRlLXBhY2thZ2VzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXIgaXMgYXZhaWxhYmxlIHRvIHRoZSBlbnZpcm9ubWVudC4KLSAgICA6cGFyYW0gY2xlYXI6IElmIFRydWUsIGRlbGV0ZSB0aGUgY29udGVudHMgb2YgdGhlIGVudmlyb25tZW50IGRpcmVjdG9yeSBpZgotICAgICAgICAgICAgICAgICAgaXQgYWxyZWFkeSBleGlzdHMsIGJlZm9yZSBlbnZpcm9ubWVudCBjcmVhdGlvbi4KLSAgICA6cGFyYW0gc3ltbGlua3M6IElmIFRydWUsIGF0dGVtcHQgdG8gc3ltbGluayByYXRoZXIgdGhhbiBjb3B5IGZpbGVzIGludG8KLSAgICAgICAgICAgICAgICAgICAgIHZpcnR1YWwgZW52aXJvbm1lbnQuCi0gICAgOnBhcmFtIHdpdGhfcGlwOiBJZiBUcnVlLCBlbnN1cmUgcGlwIGlzIGluc3RhbGxlZCBpbiB0aGUgdmlydHVhbAotICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQKLSAgICAiIiIKKyAgICAgICAgICAgICAgICAgICAgc3ltbGlua3M9RmFsc2UsIHdpdGhfcGlwPUZhbHNlLCBwcm9tcHQ9Tm9uZSk6CisgICAgIiIiQ3JlYXRlIGEgdmlydHVhbCBlbnZpcm9ubWVudCBpbiBhIGRpcmVjdG9yeS4iIiIKICAgICBidWlsZGVyID0gRW52QnVpbGRlcihzeXN0ZW1fc2l0ZV9wYWNrYWdlcz1zeXN0ZW1fc2l0ZV9wYWNrYWdlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhcj1jbGVhciwgc3ltbGlua3M9c3ltbGlua3MsIHdpdGhfcGlwPXdpdGhfcGlwKQorICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyPWNsZWFyLCBzeW1saW5rcz1zeW1saW5rcywgd2l0aF9waXA9d2l0aF9waXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgcHJvbXB0PXByb21wdCkKICAgICBidWlsZGVyLmNyZWF0ZShlbnZfZGlyKQogCiBkZWYgbWFpbihhcmdzPU5vbmUpOgpAQCAtNDI3LDYgKzM5Myw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nU2tpcHMgaW5zdGFsbGluZyBvciB1cGdyYWRpbmcgcGlwIGluIHRoZSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmlydHVhbCBlbnZpcm9ubWVudCAocGlwIGlzIGJvb3RzdHJhcHBlZCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYnkgZGVmYXVsdCknKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXByb21wdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nUHJvdmlkZXMgYW4gYWx0ZXJuYXRpdmUgcHJvbXB0IHByZWZpeCBmb3IgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoaXMgZW52aXJvbm1lbnQuJykKICAgICAgICAgb3B0aW9ucyA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3MpCiAgICAgICAgIGlmIG9wdGlvbnMudXBncmFkZSBhbmQgb3B0aW9ucy5jbGVhcjoKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3lvdSBjYW5ub3Qgc3VwcGx5IC0tdXBncmFkZSBhbmQgLS1jbGVhciB0b2dldGhlci4nKQpAQCAtNDM0LDcgKzQwMyw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyPW9wdGlvbnMuY2xlYXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bWxpbmtzPW9wdGlvbnMuc3ltbGlua3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZ3JhZGU9b3B0aW9ucy51cGdyYWRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoX3BpcD1vcHRpb25zLndpdGhfcGlwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoX3BpcD1vcHRpb25zLndpdGhfcGlwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9tcHQ9b3B0aW9ucy5wcm9tcHQpCiAgICAgICAgIGZvciBkIGluIG9wdGlvbnMuZGlyczoKICAgICAgICAgICAgIGJ1aWxkZXIuY3JlYXRlKGQpCiAKZGlmZiAtLWdpdCBhL0xpYi93YXJuaW5ncy5weSBiL0xpYi93YXJuaW5ncy5weQppbmRleCBjNjYzMWZjLi41YmFkYjBiIDEwMDY0NAotLS0gYS9MaWIvd2FybmluZ3MucHkKKysrIGIvTGliL3dhcm5pbmdzLnB5CkBAIC0yLDM5ICsyLDEyMCBAQAogCiBpbXBvcnQgc3lzCiAKKwogX19hbGxfXyA9IFsid2FybiIsICJ3YXJuX2V4cGxpY2l0IiwgInNob3d3YXJuaW5nIiwKICAgICAgICAgICAgImZvcm1hdHdhcm5pbmciLCAiZmlsdGVyd2FybmluZ3MiLCAic2ltcGxlZmlsdGVyIiwKICAgICAgICAgICAgInJlc2V0d2FybmluZ3MiLCAiY2F0Y2hfd2FybmluZ3MiXQogCi0KIGRlZiBzaG93d2FybmluZyhtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUsIGxpbmVubywgZmlsZT1Ob25lLCBsaW5lPU5vbmUpOgogICAgICIiIkhvb2sgdG8gd3JpdGUgYSB3YXJuaW5nIHRvIGEgZmlsZTsgcmVwbGFjZSBpZiB5b3UgbGlrZS4iIiIKLSAgICBpZiBmaWxlIGlzIE5vbmU6Ci0gICAgICAgIGZpbGUgPSBzeXMuc3RkZXJyCi0gICAgICAgIGlmIGZpbGUgaXMgTm9uZToKLSAgICAgICAgICAgICMgc3lzLnN0ZGVyciBpcyBOb25lIHdoZW4gcnVuIHdpdGggcHl0aG9udy5leGUgLSB3YXJuaW5ncyBnZXQgbG9zdAotICAgICAgICAgICAgcmV0dXJuCi0gICAgdHJ5OgotICAgICAgICBmaWxlLndyaXRlKGZvcm1hdHdhcm5pbmcobWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sIGxpbmUpKQotICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICBwYXNzICMgdGhlIGZpbGUgKHByb2JhYmx5IHN0ZGVycikgaXMgaW52YWxpZCAtIHRoaXMgd2FybmluZyBnZXRzIGxvc3QuCisgICAgbXNnID0gV2FybmluZ01lc3NhZ2UobWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sIGZpbGUsIGxpbmUpCisgICAgX3Nob3d3YXJubXNnX2ltcGwobXNnKQogCiBkZWYgZm9ybWF0d2FybmluZyhtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUsIGxpbmVubywgbGluZT1Ob25lKToKICAgICAiIiJGdW5jdGlvbiB0byBmb3JtYXQgYSB3YXJuaW5nIHRoZSBzdGFuZGFyZCB3YXkuIiIiCi0gICAgcyA9ICAiJXM6JXM6ICVzOiAlc1xuIiAlIChmaWxlbmFtZSwgbGluZW5vLCBjYXRlZ29yeS5fX25hbWVfXywgbWVzc2FnZSkKLSAgICBpZiBsaW5lIGlzIE5vbmU6CisgICAgbXNnID0gV2FybmluZ01lc3NhZ2UobWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sIE5vbmUsIGxpbmUpCisgICAgcmV0dXJuIF9mb3JtYXR3YXJubXNnX2ltcGwobXNnKQorCitkZWYgX3Nob3d3YXJubXNnX2ltcGwobXNnKToKKyAgICBmaWxlID0gbXNnLmZpbGUKKyAgICBpZiBmaWxlIGlzIE5vbmU6CisgICAgICAgIGZpbGUgPSBzeXMuc3RkZXJyCisgICAgICAgIGlmIGZpbGUgaXMgTm9uZToKKyAgICAgICAgICAgICMgc3lzLnN0ZGVyciBpcyBOb25lIHdoZW4gcnVuIHdpdGggcHl0aG9udy5leGU6CisgICAgICAgICAgICAjIHdhcm5pbmdzIGdldCBsb3N0CisgICAgICAgICAgICByZXR1cm4KKyAgICB0ZXh0ID0gX2Zvcm1hdHdhcm5tc2cobXNnKQorICAgIHRyeToKKyAgICAgICAgZmlsZS53cml0ZSh0ZXh0KQorICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAjIHRoZSBmaWxlIChwcm9iYWJseSBzdGRlcnIpIGlzIGludmFsaWQgLSB0aGlzIHdhcm5pbmcgZ2V0cyBsb3N0LgorICAgICAgICBwYXNzCisKK2RlZiBfZm9ybWF0d2Fybm1zZ19pbXBsKG1zZyk6CisgICAgcyA9ICAoIiVzOiVzOiAlczogJXNcbiIKKyAgICAgICAgICAlIChtc2cuZmlsZW5hbWUsIG1zZy5saW5lbm8sIG1zZy5jYXRlZ29yeS5fX25hbWVfXywKKyAgICAgICAgICAgICBtc2cubWVzc2FnZSkpCisKKyAgICBpZiBtc2cubGluZSBpcyBOb25lOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBpbXBvcnQgbGluZWNhY2hlCi0gICAgICAgICAgICBsaW5lID0gbGluZWNhY2hlLmdldGxpbmUoZmlsZW5hbWUsIGxpbmVubykKKyAgICAgICAgICAgIGxpbmUgPSBsaW5lY2FjaGUuZ2V0bGluZShtc2cuZmlsZW5hbWUsIG1zZy5saW5lbm8pCiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgICAjIFdoZW4gYSB3YXJuaW5nIGlzIGxvZ2dlZCBkdXJpbmcgUHl0aG9uIHNodXRkb3duLCBsaW5lY2FjaGUKICAgICAgICAgICAgICMgYW5kIHRoZSBpbXBvcnQgbWFjaGluZXJ5IGRvbid0IHdvcmsgYW55bW9yZQogICAgICAgICAgICAgbGluZSA9IE5vbmUKKyAgICAgICAgICAgIGxpbmVjYWNoZSA9IE5vbmUKKyAgICBlbHNlOgorICAgICAgICBsaW5lID0gbXNnLmxpbmUKICAgICBpZiBsaW5lOgogICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCiAgICAgICAgIHMgKz0gIiAgJXNcbiIgJSBsaW5lCisKKyAgICBpZiBtc2cuc291cmNlIGlzIG5vdCBOb25lOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBpbXBvcnQgdHJhY2VtYWxsb2MKKyAgICAgICAgICAgIHRiID0gdHJhY2VtYWxsb2MuZ2V0X29iamVjdF90cmFjZWJhY2sobXNnLnNvdXJjZSkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgICMgV2hlbiBhIHdhcm5pbmcgaXMgbG9nZ2VkIGR1cmluZyBQeXRob24gc2h1dGRvd24sIHRyYWNlbWFsbG9jCisgICAgICAgICAgICAjIGFuZCB0aGUgaW1wb3J0IG1hY2hpbmVyeSBkb24ndCB3b3JrIGFueW1vcmUKKyAgICAgICAgICAgIHRiID0gTm9uZQorCisgICAgICAgIGlmIHRiIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcyArPSAnT2JqZWN0IGFsbG9jYXRlZCBhdCAobW9zdCByZWNlbnQgY2FsbCBmaXJzdCk6XG4nCisgICAgICAgICAgICBmb3IgZnJhbWUgaW4gdGI6CisgICAgICAgICAgICAgICAgcyArPSAoJyAgRmlsZSAiJXMiLCBsaW5lbm8gJXNcbicKKyAgICAgICAgICAgICAgICAgICAgICAlIChmcmFtZS5maWxlbmFtZSwgZnJhbWUubGluZW5vKSkKKworICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgaWYgbGluZWNhY2hlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxpbmVjYWNoZS5nZXRsaW5lKGZyYW1lLmZpbGVuYW1lLCBmcmFtZS5saW5lbm8pCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lID0gTm9uZQorICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBOb25lCisgICAgICAgICAgICAgICAgaWYgbGluZToKKyAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQorICAgICAgICAgICAgICAgICAgICBzICs9ICcgICAgJXNcbicgJSBsaW5lCiAgICAgcmV0dXJuIHMKIAorIyBLZWVwIGEgcmVmZXJlbmNlIHRvIGNoZWNrIGlmIHRoZSBmdW5jdGlvbiB3YXMgcmVwbGFjZWQKK19zaG93d2FybmluZ19vcmlnID0gc2hvd3dhcm5pbmcKKworZGVmIF9zaG93d2Fybm1zZyhtc2cpOgorICAgICIiIkhvb2sgdG8gd3JpdGUgYSB3YXJuaW5nIHRvIGEgZmlsZTsgcmVwbGFjZSBpZiB5b3UgbGlrZS4iIiIKKyAgICB0cnk6CisgICAgICAgIHN3ID0gc2hvd3dhcm5pbmcKKyAgICBleGNlcHQgTmFtZUVycm9yOgorICAgICAgICBwYXNzCisgICAgZWxzZToKKyAgICAgICAgaWYgc3cgaXMgbm90IF9zaG93d2FybmluZ19vcmlnOgorICAgICAgICAgICAgIyB3YXJuaW5ncy5zaG93d2FybmluZygpIHdhcyByZXBsYWNlZAorICAgICAgICAgICAgaWYgbm90IGNhbGxhYmxlKHN3KToKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIndhcm5pbmdzLnNob3d3YXJuaW5nKCkgbXVzdCBiZSBzZXQgdG8gYSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmdW5jdGlvbiBvciBtZXRob2QiKQorCisgICAgICAgICAgICBzdyhtc2cubWVzc2FnZSwgbXNnLmNhdGVnb3J5LCBtc2cuZmlsZW5hbWUsIG1zZy5saW5lbm8sCisgICAgICAgICAgICAgICBtc2cuZmlsZSwgbXNnLmxpbmUpCisgICAgICAgICAgICByZXR1cm4KKyAgICBfc2hvd3dhcm5tc2dfaW1wbChtc2cpCisKKyMgS2VlcCBhIHJlZmVyZW5jZSB0byBjaGVjayBpZiB0aGUgZnVuY3Rpb24gd2FzIHJlcGxhY2VkCitfZm9ybWF0d2FybmluZ19vcmlnID0gZm9ybWF0d2FybmluZworCitkZWYgX2Zvcm1hdHdhcm5tc2cobXNnKToKKyAgICAiIiJGdW5jdGlvbiB0byBmb3JtYXQgYSB3YXJuaW5nIHRoZSBzdGFuZGFyZCB3YXkuIiIiCisgICAgdHJ5OgorICAgICAgICBmdyA9IGZvcm1hdHdhcm5pbmcKKyAgICBleGNlcHQgTmFtZUVycm9yOgorICAgICAgICBwYXNzCisgICAgZWxzZToKKyAgICAgICAgaWYgZncgaXMgbm90IF9mb3JtYXR3YXJuaW5nX29yaWc6CisgICAgICAgICAgICAjIHdhcm5pbmdzLmZvcm1hdHdhcm5pbmcoKSB3YXMgcmVwbGFjZWQKKyAgICAgICAgICAgIHJldHVybiBmdyhtc2cubWVzc2FnZSwgbXNnLmNhdGVnb3J5LAorICAgICAgICAgICAgICAgICAgICAgIG1zZy5maWxlbmFtZSwgbXNnLmxpbmVubywgbGluZT1tc2cubGluZSkKKyAgICByZXR1cm4gX2Zvcm1hdHdhcm5tc2dfaW1wbChtc2cpCisKIGRlZiBmaWx0ZXJ3YXJuaW5ncyhhY3Rpb24sIG1lc3NhZ2U9IiIsIGNhdGVnb3J5PVdhcm5pbmcsIG1vZHVsZT0iIiwgbGluZW5vPTAsCiAgICAgICAgICAgICAgICAgICAgYXBwZW5kPUZhbHNlKToKICAgICAiIiJJbnNlcnQgYW4gZW50cnkgaW50byB0aGUgbGlzdCBvZiB3YXJuaW5ncyBmaWx0ZXJzIChhdCB0aGUgZnJvbnQpLgpAQCAtMTg1LDcgKzI2Niw3IEBACiAKIAogIyBDb2RlIHR5cGljYWxseSByZXBsYWNlZCBieSBfd2FybmluZ3MKLWRlZiB3YXJuKG1lc3NhZ2UsIGNhdGVnb3J5PU5vbmUsIHN0YWNrbGV2ZWw9MSk6CitkZWYgd2FybihtZXNzYWdlLCBjYXRlZ29yeT1Ob25lLCBzdGFja2xldmVsPTEsIHNvdXJjZT1Ob25lKToKICAgICAiIiJJc3N1ZSBhIHdhcm5pbmcsIG9yIG1heWJlIGlnbm9yZSBpdCBvciByYWlzZSBhbiBleGNlcHRpb24uIiIiCiAgICAgIyBDaGVjayBpZiBtZXNzYWdlIGlzIGFscmVhZHkgYSBXYXJuaW5nIG9iamVjdAogICAgIGlmIGlzaW5zdGFuY2UobWVzc2FnZSwgV2FybmluZyk6CkBAIC0yMzUsMTAgKzMxNiwxMSBAQAogICAgICAgICAgICAgZmlsZW5hbWUgPSBtb2R1bGUKICAgICByZWdpc3RyeSA9IGdsb2JhbHMuc2V0ZGVmYXVsdCgiX193YXJuaW5ncmVnaXN0cnlfXyIsIHt9KQogICAgIHdhcm5fZXhwbGljaXQobWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sIG1vZHVsZSwgcmVnaXN0cnksCi0gICAgICAgICAgICAgICAgICBnbG9iYWxzKQorICAgICAgICAgICAgICAgICAgZ2xvYmFscywgc291cmNlKQogCiBkZWYgd2Fybl9leHBsaWNpdChtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUsIGxpbmVubywKLSAgICAgICAgICAgICAgICAgIG1vZHVsZT1Ob25lLCByZWdpc3RyeT1Ob25lLCBtb2R1bGVfZ2xvYmFscz1Ob25lKToKKyAgICAgICAgICAgICAgICAgIG1vZHVsZT1Ob25lLCByZWdpc3RyeT1Ob25lLCBtb2R1bGVfZ2xvYmFscz1Ob25lLAorICAgICAgICAgICAgICAgICAgc291cmNlPU5vbmUpOgogICAgIGxpbmVubyA9IGludChsaW5lbm8pCiAgICAgaWYgbW9kdWxlIGlzIE5vbmU6CiAgICAgICAgIG1vZHVsZSA9IGZpbGVuYW1lIG9yICI8dW5rbm93bj4iCkBAIC0zMDMsMjIgKzM4NSwxOCBAQAogICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoCiAgICAgICAgICAgICAgICJVbnJlY29nbml6ZWQgYWN0aW9uICglcikgaW4gd2FybmluZ3MuZmlsdGVyczpcbiAlcyIgJQogICAgICAgICAgICAgICAoYWN0aW9uLCBpdGVtKSkKLSAgICBpZiBub3QgY2FsbGFibGUoc2hvd3dhcm5pbmcpOgotICAgICAgICByYWlzZSBUeXBlRXJyb3IoIndhcm5pbmdzLnNob3d3YXJuaW5nKCkgbXVzdCBiZSBzZXQgdG8gYSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAiZnVuY3Rpb24gb3IgbWV0aG9kIikKICAgICAjIFByaW50IG1lc3NhZ2UgYW5kIGNvbnRleHQKLSAgICBzaG93d2FybmluZyhtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUsIGxpbmVubykKKyAgICBtc2cgPSBXYXJuaW5nTWVzc2FnZShtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUsIGxpbmVubywgc291cmNlKQorICAgIF9zaG93d2Fybm1zZyhtc2cpCiAKIAogY2xhc3MgV2FybmluZ01lc3NhZ2Uob2JqZWN0KToKIAotICAgICIiIkhvbGRzIHRoZSByZXN1bHQgb2YgYSBzaW5nbGUgc2hvd3dhcm5pbmcoKSBjYWxsLiIiIgotCiAgICAgX1dBUk5JTkdfREVUQUlMUyA9ICgibWVzc2FnZSIsICJjYXRlZ29yeSIsICJmaWxlbmFtZSIsICJsaW5lbm8iLCAiZmlsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAibGluZSIpCisgICAgICAgICAgICAgICAgICAgICAgICAibGluZSIsICJzb3VyY2UiKQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1lc3NhZ2UsIGNhdGVnb3J5LCBmaWxlbmFtZSwgbGluZW5vLCBmaWxlPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgIGxpbmU9Tm9uZSk6CisgICAgICAgICAgICAgICAgIGxpbmU9Tm9uZSwgc291cmNlPU5vbmUpOgogICAgICAgICBsb2NhbF92YWx1ZXMgPSBsb2NhbHMoKQogICAgICAgICBmb3IgYXR0ciBpbiBzZWxmLl9XQVJOSU5HX0RFVEFJTFM6CiAgICAgICAgICAgICBzZXRhdHRyKHNlbGYsIGF0dHIsIGxvY2FsX3ZhbHVlc1thdHRyXSkKQEAgLTM3NiwxMSArNDU0LDEzIEBACiAgICAgICAgIHNlbGYuX21vZHVsZS5maWx0ZXJzID0gc2VsZi5fZmlsdGVyc1s6XQogICAgICAgICBzZWxmLl9tb2R1bGUuX2ZpbHRlcnNfbXV0YXRlZCgpCiAgICAgICAgIHNlbGYuX3Nob3d3YXJuaW5nID0gc2VsZi5fbW9kdWxlLnNob3d3YXJuaW5nCisgICAgICAgIHNlbGYuX3Nob3d3YXJubXNnX2ltcGwgPSBzZWxmLl9tb2R1bGUuX3Nob3d3YXJubXNnX2ltcGwKICAgICAgICAgaWYgc2VsZi5fcmVjb3JkOgogICAgICAgICAgICAgbG9nID0gW10KLSAgICAgICAgICAgIGRlZiBzaG93d2FybmluZygqYXJncywgKiprd2FyZ3MpOgotICAgICAgICAgICAgICAgIGxvZy5hcHBlbmQoV2FybmluZ01lc3NhZ2UoKmFyZ3MsICoqa3dhcmdzKSkKLSAgICAgICAgICAgIHNlbGYuX21vZHVsZS5zaG93d2FybmluZyA9IHNob3d3YXJuaW5nCisgICAgICAgICAgICBzZWxmLl9tb2R1bGUuX3Nob3d3YXJubXNnX2ltcGwgPSBsb2cuYXBwZW5kCisgICAgICAgICAgICAjIFJlc2V0IHNob3d3YXJuaW5nKCkgdG8gdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gdG8gbWFrZSBzdXJlCisgICAgICAgICAgICAjIHRoYXQgX3Nob3d3YXJubXNnKCkgY2FsbHMgX3Nob3d3YXJubXNnX2ltcGwoKQorICAgICAgICAgICAgc2VsZi5fbW9kdWxlLnNob3d3YXJuaW5nID0gc2VsZi5fbW9kdWxlLl9zaG93d2FybmluZ19vcmlnCiAgICAgICAgICAgICByZXR1cm4gbG9nCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gTm9uZQpAQCAtMzkxLDYgKzQ3MSw3IEBACiAgICAgICAgIHNlbGYuX21vZHVsZS5maWx0ZXJzID0gc2VsZi5fZmlsdGVycwogICAgICAgICBzZWxmLl9tb2R1bGUuX2ZpbHRlcnNfbXV0YXRlZCgpCiAgICAgICAgIHNlbGYuX21vZHVsZS5zaG93d2FybmluZyA9IHNlbGYuX3Nob3d3YXJuaW5nCisgICAgICAgIHNlbGYuX21vZHVsZS5fc2hvd3dhcm5tc2dfaW1wbCA9IHNlbGYuX3Nob3d3YXJubXNnX2ltcGwKIAogCiAjIGZpbHRlcnMgY29udGFpbnMgYSBzZXF1ZW5jZSBvZiBmaWx0ZXIgNS10dXBsZXMKZGlmZiAtLWdpdCBhL0xpYi93YXZlLnB5IGIvTGliL3dhdmUucHkKaW5kZXggOGExMDFlMy4uZjcxZjdlNSAxMDA2NDQKLS0tIGEvTGliL3dhdmUucHkKKysrIGIvTGliL3dhdmUucHkKQEAgLTczLDcgKzczLDcgQEAKIAogaW1wb3J0IGJ1aWx0aW5zCiAKLV9fYWxsX18gPSBbIm9wZW4iLCAib3BlbmZwIiwgIkVycm9yIl0KK19fYWxsX18gPSBbIm9wZW4iLCAib3BlbmZwIiwgIkVycm9yIiwgIldhdmVfcmVhZCIsICJXYXZlX3dyaXRlIl0KIAogY2xhc3MgRXJyb3IoRXhjZXB0aW9uKToKICAgICBwYXNzCmRpZmYgLS1naXQgYS9MaWIvd3NnaXJlZi9zaW1wbGVfc2VydmVyLnB5IGIvTGliL3dzZ2lyZWYvc2ltcGxlX3NlcnZlci5weQppbmRleCA3ZmRkYmU4Li5mNzE1NjNhIDEwMDY0NAotLS0gYS9MaWIvd3NnaXJlZi9zaW1wbGVfc2VydmVyLnB5CisrKyBiL0xpYi93c2dpcmVmL3NpbXBsZV9zZXJ2ZXIucHkKQEAgLTExLDcgKzExLDYgQEAKICIiIgogCiBmcm9tIGh0dHAuc2VydmVyIGltcG9ydCBCYXNlSFRUUFJlcXVlc3RIYW5kbGVyLCBIVFRQU2VydmVyCi1mcm9tIGlvIGltcG9ydCBCdWZmZXJlZFdyaXRlcgogaW1wb3J0IHN5cwogaW1wb3J0IHVybGxpYi5wYXJzZQogZnJvbSB3c2dpcmVmLmhhbmRsZXJzIGltcG9ydCBTaW1wbGVIYW5kbGVyCkBAIC0xMjcsMTcgKzEyNiwxMSBAQAogICAgICAgICBpZiBub3Qgc2VsZi5wYXJzZV9yZXF1ZXN0KCk6ICMgQW4gZXJyb3IgY29kZSBoYXMgYmVlbiBzZW50LCBqdXN0IGV4aXQKICAgICAgICAgICAgIHJldHVybgogCi0gICAgICAgICMgQXZvaWQgcGFzc2luZyB0aGUgcmF3IGZpbGUgb2JqZWN0IHdmaWxlLCB3aGljaCBjYW4gZG8gcGFydGlhbAotICAgICAgICAjIHdyaXRlcyAoSXNzdWUgMjQyOTEpCi0gICAgICAgIHN0ZG91dCA9IEJ1ZmZlcmVkV3JpdGVyKHNlbGYud2ZpbGUpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGhhbmRsZXIgPSBTZXJ2ZXJIYW5kbGVyKAotICAgICAgICAgICAgICAgIHNlbGYucmZpbGUsIHN0ZG91dCwgc2VsZi5nZXRfc3RkZXJyKCksIHNlbGYuZ2V0X2Vudmlyb24oKQotICAgICAgICAgICAgKQotICAgICAgICAgICAgaGFuZGxlci5yZXF1ZXN0X2hhbmRsZXIgPSBzZWxmICAgICAgIyBiYWNrcG9pbnRlciBmb3IgbG9nZ2luZwotICAgICAgICAgICAgaGFuZGxlci5ydW4oc2VsZi5zZXJ2ZXIuZ2V0X2FwcCgpKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc3Rkb3V0LmRldGFjaCgpCisgICAgICAgIGhhbmRsZXIgPSBTZXJ2ZXJIYW5kbGVyKAorICAgICAgICAgICAgc2VsZi5yZmlsZSwgc2VsZi53ZmlsZSwgc2VsZi5nZXRfc3RkZXJyKCksIHNlbGYuZ2V0X2Vudmlyb24oKQorICAgICAgICApCisgICAgICAgIGhhbmRsZXIucmVxdWVzdF9oYW5kbGVyID0gc2VsZiAgICAgICMgYmFja3BvaW50ZXIgZm9yIGxvZ2dpbmcKKyAgICAgICAgaGFuZGxlci5ydW4oc2VsZi5zZXJ2ZXIuZ2V0X2FwcCgpKQogCiAKIApAQCAtMTYzLDEwICsxNTYsOSBAQAogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgaHR0cGQgPSBtYWtlX3NlcnZlcignJywgODAwMCwgZGVtb19hcHApCi0gICAgc2EgPSBodHRwZC5zb2NrZXQuZ2V0c29ja25hbWUoKQotICAgIHByaW50KCJTZXJ2aW5nIEhUVFAgb24iLCBzYVswXSwgInBvcnQiLCBzYVsxXSwgIi4uLiIpCi0gICAgaW1wb3J0IHdlYmJyb3dzZXIKLSAgICB3ZWJicm93c2VyLm9wZW4oJ2h0dHA6Ly9sb2NhbGhvc3Q6ODAwMC94eXo/YWJjJykKLSAgICBodHRwZC5oYW5kbGVfcmVxdWVzdCgpICAjIHNlcnZlIG9uZSByZXF1ZXN0LCB0aGVuIGV4aXQKLSAgICBodHRwZC5zZXJ2ZXJfY2xvc2UoKQorICAgIHdpdGggbWFrZV9zZXJ2ZXIoJycsIDgwMDAsIGRlbW9fYXBwKSBhcyBodHRwZDoKKyAgICAgICAgc2EgPSBodHRwZC5zb2NrZXQuZ2V0c29ja25hbWUoKQorICAgICAgICBwcmludCgiU2VydmluZyBIVFRQIG9uIiwgc2FbMF0sICJwb3J0Iiwgc2FbMV0sICIuLi4iKQorICAgICAgICBpbXBvcnQgd2ViYnJvd3NlcgorICAgICAgICB3ZWJicm93c2VyLm9wZW4oJ2h0dHA6Ly9sb2NhbGhvc3Q6ODAwMC94eXo/YWJjJykKKyAgICAgICAgaHR0cGQuaGFuZGxlX3JlcXVlc3QoKSAgIyBzZXJ2ZSBvbmUgcmVxdWVzdCwgdGhlbiBleGl0CmRpZmYgLS1naXQgYS9MaWIveG1sL2RvbS94bWxidWlsZGVyLnB5IGIvTGliL3htbC9kb20veG1sYnVpbGRlci5weQppbmRleCA0NDRmMGIyLi5lOWExNTM2IDEwMDY0NAotLS0gYS9MaWIveG1sL2RvbS94bWxidWlsZGVyLnB5CisrKyBiL0xpYi94bWwvZG9tL3htbGJ1aWxkZXIucHkKQEAgLTM1MywxNCArMzUzLDE0IEBACiBjbGFzcyBEb2N1bWVudExTOgogICAgICIiIk1peGluIHRvIGNyZWF0ZSBkb2N1bWVudHMgdGhhdCBjb25mb3JtIHRvIHRoZSBsb2FkL3NhdmUgc3BlYy4iIiIKIAotICAgIGFzeW5jID0gX0FzeW5jRGVwcmVjYXRlZFByb3BlcnR5KCkKICAgICBhc3luY18gPSBGYWxzZQorICAgIGxvY2FscygpWydhc3luYyddID0gX0FzeW5jRGVwcmVjYXRlZFByb3BlcnR5KCkgICMgQXZvaWQgRGVwcmVjYXRpb25XYXJuaW5nCiAKICAgICBkZWYgX2dldF9hc3luYyhzZWxmKToKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKLSAgICBkZWYgX3NldF9hc3luYyhzZWxmLCBhc3luYyk6Ci0gICAgICAgIGlmIGFzeW5jOgorICAgIGRlZiBfc2V0X2FzeW5jKHNlbGYsIGZsYWcpOgorICAgICAgICBpZiBmbGFnOgogICAgICAgICAgICAgcmFpc2UgeG1sLmRvbS5Ob3RTdXBwb3J0ZWRFcnIoCiAgICAgICAgICAgICAgICAgImFzeW5jaHJvbm91cyBkb2N1bWVudCBsb2FkaW5nIGlzIG5vdCBzdXBwb3J0ZWQiKQogCmRpZmYgLS1naXQgYS9MaWIveG1sL2V0cmVlL0VsZW1lbnRQYXRoLnB5IGIvTGliL3htbC9ldHJlZS9FbGVtZW50UGF0aC5weQppbmRleCA1ZGU0MjMyLi5hYjZiNzlhIDEwMDY0NAotLS0gYS9MaWIveG1sL2V0cmVlL0VsZW1lbnRQYXRoLnB5CisrKyBiL0xpYi94bWwvZXRyZWUvRWxlbWVudFBhdGgucHkKQEAgLTU5LDE1ICs1OSwxNSBAQAogaW1wb3J0IHJlCiAKIHhwYXRoX3Rva2VuaXplcl9yZSA9IHJlLmNvbXBpbGUoCi0gICAgIigiCi0gICAgIidbXiddKid8XCJbXlwiXSpcInwiCi0gICAgIjo6fCIKLSAgICAiLy8/fCIKLSAgICAiXC5cLnwiCi0gICAgIlwoXCl8IgotICAgICJbLy4qOlxbXF1cKFwpQD1dKXwiCi0gICAgIigoPzpce1tefV0rXH0pP1teL1xbXF1cKFwpQD1cc10rKXwiCi0gICAgIlxzKyIKKyAgICByIigiCisgICAgciInW14nXSonfFwiW15cIl0qXCJ8IgorICAgIHIiOjp8IgorICAgIHIiLy8/fCIKKyAgICByIlwuXC58IgorICAgIHIiXChcKXwiCisgICAgciJbLy4qOlxbXF1cKFwpQD1dKXwiCisgICAgciIoKD86XHtbXn1dK1x9KT9bXi9cW1xdXChcKUA9XHNdKyl8IgorICAgIHIiXHMrIgogICAgICkKIAogZGVmIHhwYXRoX3Rva2VuaXplcihwYXR0ZXJuLCBuYW1lc3BhY2VzPU5vbmUpOgpAQCAtMTgwLDcgKzE4MCw3IEBACiAgICAgICAgICAgICAgICAgaWYgZWxlbS5nZXQoa2V5KSA9PSB2YWx1ZToKICAgICAgICAgICAgICAgICAgICAgeWllbGQgZWxlbQogICAgICAgICByZXR1cm4gc2VsZWN0Ci0gICAgaWYgc2lnbmF0dXJlID09ICItIiBhbmQgbm90IHJlLm1hdGNoKCJcLT9cZCskIiwgcHJlZGljYXRlWzBdKToKKyAgICBpZiBzaWduYXR1cmUgPT0gIi0iIGFuZCBub3QgcmUubWF0Y2gociJcLT9cZCskIiwgcHJlZGljYXRlWzBdKToKICAgICAgICAgIyBbdGFnXQogICAgICAgICB0YWcgPSBwcmVkaWNhdGVbMF0KICAgICAgICAgZGVmIHNlbGVjdChjb250ZXh0LCByZXN1bHQpOgpAQCAtMTg4LDcgKzE4OCw3IEBACiAgICAgICAgICAgICAgICAgaWYgZWxlbS5maW5kKHRhZykgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgIHlpZWxkIGVsZW0KICAgICAgICAgcmV0dXJuIHNlbGVjdAotICAgIGlmIHNpZ25hdHVyZSA9PSAiLT0nIiBhbmQgbm90IHJlLm1hdGNoKCJcLT9cZCskIiwgcHJlZGljYXRlWzBdKToKKyAgICBpZiBzaWduYXR1cmUgPT0gIi09JyIgYW5kIG5vdCByZS5tYXRjaChyIlwtP1xkKyQiLCBwcmVkaWNhdGVbMF0pOgogICAgICAgICAjIFt0YWc9J3ZhbHVlJ10KICAgICAgICAgdGFnID0gcHJlZGljYXRlWzBdCiAgICAgICAgIHZhbHVlID0gcHJlZGljYXRlWy0xXQpkaWZmIC0tZ2l0IGEvTGliL3htbC9ldHJlZS9FbGVtZW50VHJlZS5weSBiL0xpYi94bWwvZXRyZWUvRWxlbWVudFRyZWUucHkKaW5kZXggOTI4MjFjNS4uNzM1NDA1NiAxMDA2NDQKLS0tIGEvTGliL3htbC9ldHJlZS9FbGVtZW50VHJlZS5weQorKysgYi9MaWIveG1sL2V0cmVlL0VsZW1lbnRUcmVlLnB5CkBAIC04NSw3ICs4NSw3IEBACiAgICAgIlRyZWVCdWlsZGVyIiwKICAgICAiVkVSU0lPTiIsCiAgICAgIlhNTCIsICJYTUxJRCIsCi0gICAgIlhNTFBhcnNlciIsCisgICAgIlhNTFBhcnNlciIsICJYTUxQdWxsUGFyc2VyIiwKICAgICAicmVnaXN0ZXJfbmFtZXNwYWNlIiwKICAgICBdCiAKQEAgLTk1LDYgKzk1LDcgQEAKIGltcG9ydCByZQogaW1wb3J0IHdhcm5pbmdzCiBpbXBvcnQgaW8KK2ltcG9ydCBjb2xsZWN0aW9ucwogaW1wb3J0IGNvbnRleHRsaWIKIAogZnJvbSAuIGltcG9ydCBFbGVtZW50UGF0aApAQCAtMTAyOSw3ICsxMDMwLDcgQEAKICAgICBWYWx1ZUVycm9yIGlzIHJhaXNlZCBpZiBwcmVmaXggaXMgcmVzZXJ2ZWQgb3IgaXMgaW52YWxpZC4KIAogICAgICIiIgotICAgIGlmIHJlLm1hdGNoKCJuc1xkKyQiLCBwcmVmaXgpOgorICAgIGlmIHJlLm1hdGNoKHIibnNcZCskIiwgcHJlZml4KToKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiUHJlZml4IGZvcm1hdCByZXNlcnZlZCBmb3IgaW50ZXJuYWwgdXNlIikKICAgICBmb3IgaywgdiBpbiBsaXN0KF9uYW1lc3BhY2VfbWFwLml0ZW1zKCkpOgogICAgICAgICBpZiBrID09IHVyaSBvciB2ID09IHByZWZpeDoKQEAgLTEwODQsNyArMTA4NSw3IEBACiAgICAgICAgIGlmICJcIiIgaW4gdGV4dDoKICAgICAgICAgICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoIlwiIiwgIiZxdW90OyIpCiAgICAgICAgICMgVGhlIGZvbGxvd2luZyBidXNpbmVzcyB3aXRoIGNhcnJpYWdlIHJldHVybnMgaXMgdG8gc2F0aXNmeQotICAgICAgICAjIFNlY3Rpb24gMi4xMSBvZiB0aGUgWE1MIHNwZWNpZmljYXRpb24sIHN0YXRpbmcgdGhhdCAKKyAgICAgICAgIyBTZWN0aW9uIDIuMTEgb2YgdGhlIFhNTCBzcGVjaWZpY2F0aW9uLCBzdGF0aW5nIHRoYXQKICAgICAgICAgIyBDUiBvciBDUiBMTiBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCBqdXN0IExOCiAgICAgICAgICMgaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLXhtbC8jc2VjLWxpbmUtZW5kcwogICAgICAgICBpZiAiXHJcbiIgaW4gdGV4dDoKQEAgLTEyMTEsMTYgKzEyMTIsMzcgQEAKICAgICBSZXR1cm5zIGFuIGl0ZXJhdG9yIHByb3ZpZGluZyAoZXZlbnQsIGVsZW0pIHBhaXJzLgogCiAgICAgIiIiCisgICAgIyBVc2UgdGhlIGludGVybmFsLCB1bmRvY3VtZW50ZWQgX3BhcnNlciBhcmd1bWVudCBmb3Igbm93OyBXaGVuIHRoZQorICAgICMgcGFyc2VyIGFyZ3VtZW50IG9mIGl0ZXJwYXJzZSBpcyByZW1vdmVkLCB0aGlzIGNhbiBiZSBraWxsZWQuCisgICAgcHVsbHBhcnNlciA9IFhNTFB1bGxQYXJzZXIoZXZlbnRzPWV2ZW50cywgX3BhcnNlcj1wYXJzZXIpCisgICAgZGVmIGl0ZXJhdG9yKCk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgeWllbGQgZnJvbSBwdWxscGFyc2VyLnJlYWRfZXZlbnRzKCkKKyAgICAgICAgICAgICAgICAjIGxvYWQgZXZlbnQgYnVmZmVyCisgICAgICAgICAgICAgICAgZGF0YSA9IHNvdXJjZS5yZWFkKDE2ICogMTAyNCkKKyAgICAgICAgICAgICAgICBpZiBub3QgZGF0YToKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBwdWxscGFyc2VyLmZlZWQoZGF0YSkKKyAgICAgICAgICAgIHJvb3QgPSBwdWxscGFyc2VyLl9jbG9zZV9hbmRfcmV0dXJuX3Jvb3QoKQorICAgICAgICAgICAgeWllbGQgZnJvbSBwdWxscGFyc2VyLnJlYWRfZXZlbnRzKCkKKyAgICAgICAgICAgIGl0LnJvb3QgPSByb290CisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBpZiBjbG9zZV9zb3VyY2U6CisgICAgICAgICAgICAgICAgc291cmNlLmNsb3NlKCkKKworICAgIGNsYXNzIEl0ZXJQYXJzZUl0ZXJhdG9yKGNvbGxlY3Rpb25zLkl0ZXJhdG9yKToKKyAgICAgICAgX19uZXh0X18gPSBpdGVyYXRvcigpLl9fbmV4dF9fCisgICAgaXQgPSBJdGVyUGFyc2VJdGVyYXRvcigpCisgICAgaXQucm9vdCA9IE5vbmUKKyAgICBkZWwgaXRlcmF0b3IsIEl0ZXJQYXJzZUl0ZXJhdG9yCisKICAgICBjbG9zZV9zb3VyY2UgPSBGYWxzZQogICAgIGlmIG5vdCBoYXNhdHRyKHNvdXJjZSwgInJlYWQiKToKICAgICAgICAgc291cmNlID0gb3Blbihzb3VyY2UsICJyYiIpCiAgICAgICAgIGNsb3NlX3NvdXJjZSA9IFRydWUKLSAgICB0cnk6Ci0gICAgICAgIHJldHVybiBfSXRlclBhcnNlSXRlcmF0b3Ioc291cmNlLCBldmVudHMsIHBhcnNlciwgY2xvc2Vfc291cmNlKQotICAgIGV4Y2VwdDoKLSAgICAgICAgaWYgY2xvc2Vfc291cmNlOgotICAgICAgICAgICAgc291cmNlLmNsb3NlKCkKLSAgICAgICAgcmFpc2UKKworICAgIHJldHVybiBpdAogCiAKIGNsYXNzIFhNTFB1bGxQYXJzZXI6CkBAIC0xMjMwLDkgKzEyNTIsNyBAQAogICAgICAgICAjIHVwb24gaW4gdXNlciBjb2RlLiBJdCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4KICAgICAgICAgIyBTZWUgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTE3NzQxIGZvciBtb3JlIGRldGFpbHMuCiAKLSAgICAgICAgIyBfZWxlbWVudHRyZWUuYyBleHBlY3RzIGEgbGlzdCwgbm90IGEgZGVxdWUKLSAgICAgICAgc2VsZi5fZXZlbnRzX3F1ZXVlID0gW10KLSAgICAgICAgc2VsZi5faW5kZXggPSAwCisgICAgICAgIHNlbGYuX2V2ZW50c19xdWV1ZSA9IGNvbGxlY3Rpb25zLmRlcXVlKCkKICAgICAgICAgc2VsZi5fcGFyc2VyID0gX3BhcnNlciBvciBYTUxQYXJzZXIodGFyZ2V0PVRyZWVCdWlsZGVyKCkpCiAgICAgICAgICMgd2lyZSB1cCB0aGUgcGFyc2VyIGZvciBldmVudCByZXBvcnRpbmcKICAgICAgICAgaWYgZXZlbnRzIGlzIE5vbmU6CkBAIC0xMjcwLDY0ICsxMjkwLDE0IEBACiAgICAgICAgIHJldHJpZXZlZCBmcm9tIHRoZSBpdGVyYXRvci4KICAgICAgICAgIiIiCiAgICAgICAgIGV2ZW50cyA9IHNlbGYuX2V2ZW50c19xdWV1ZQotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgaW5kZXggPSBzZWxmLl9pbmRleAotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGV2ZW50ID0gZXZlbnRzW3NlbGYuX2luZGV4XQotICAgICAgICAgICAgICAgICMgQXZvaWQgcmV0YWluaW5nIHJlZmVyZW5jZXMgdG8gcGFzdCBldmVudHMKLSAgICAgICAgICAgICAgICBldmVudHNbc2VsZi5faW5kZXhdID0gTm9uZQotICAgICAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGluZGV4ICs9IDEKLSAgICAgICAgICAgICMgQ29tcGFjdCB0aGUgbGlzdCBpbiBhIE8oMSkgYW1vcnRpemVkIGZhc2hpb24KLSAgICAgICAgICAgICMgQXMgbm90ZWQgYWJvdmUsIF9lbGVtZW50cmVlLmMgbmVlZHMgYSBsaXN0LCBub3QgYSBkZXF1ZQotICAgICAgICAgICAgaWYgaW5kZXggKiAyID49IGxlbihldmVudHMpOgotICAgICAgICAgICAgICAgIGV2ZW50c1s6aW5kZXhdID0gW10KLSAgICAgICAgICAgICAgICBzZWxmLl9pbmRleCA9IDAKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5faW5kZXggPSBpbmRleAorICAgICAgICB3aGlsZSBldmVudHM6CisgICAgICAgICAgICBldmVudCA9IGV2ZW50cy5wb3BsZWZ0KCkKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIEV4Y2VwdGlvbik6CiAgICAgICAgICAgICAgICAgcmFpc2UgZXZlbnQKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgeWllbGQgZXZlbnQKIAogCi1jbGFzcyBfSXRlclBhcnNlSXRlcmF0b3I6Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgc291cmNlLCBldmVudHMsIHBhcnNlciwgY2xvc2Vfc291cmNlPUZhbHNlKToKLSAgICAgICAgIyBVc2UgdGhlIGludGVybmFsLCB1bmRvY3VtZW50ZWQgX3BhcnNlciBhcmd1bWVudCBmb3Igbm93OyBXaGVuIHRoZQotICAgICAgICAjIHBhcnNlciBhcmd1bWVudCBvZiBpdGVycGFyc2UgaXMgcmVtb3ZlZCwgdGhpcyBjYW4gYmUga2lsbGVkLgotICAgICAgICBzZWxmLl9wYXJzZXIgPSBYTUxQdWxsUGFyc2VyKGV2ZW50cz1ldmVudHMsIF9wYXJzZXI9cGFyc2VyKQotICAgICAgICBzZWxmLl9maWxlID0gc291cmNlCi0gICAgICAgIHNlbGYuX2Nsb3NlX2ZpbGUgPSBjbG9zZV9zb3VyY2UKLSAgICAgICAgc2VsZi5yb290ID0gc2VsZi5fcm9vdCA9IE5vbmUKLQotICAgIGRlZiBfX25leHRfXyhzZWxmKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2hpbGUgMToKLSAgICAgICAgICAgICAgICBmb3IgZXZlbnQgaW4gc2VsZi5fcGFyc2VyLnJlYWRfZXZlbnRzKCk6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBldmVudAotICAgICAgICAgICAgICAgIGlmIHNlbGYuX3BhcnNlci5fcGFyc2VyIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgIyBsb2FkIGV2ZW50IGJ1ZmZlcgotICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9maWxlLnJlYWQoMTYgKiAxMDI0KQotICAgICAgICAgICAgICAgIGlmIGRhdGE6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3BhcnNlci5mZWVkKGRhdGEpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fcm9vdCA9IHNlbGYuX3BhcnNlci5fY2xvc2VfYW5kX3JldHVybl9yb290KCkKLSAgICAgICAgICAgIHNlbGYucm9vdCA9IHNlbGYuX3Jvb3QKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgaWYgc2VsZi5fY2xvc2VfZmlsZToKLSAgICAgICAgICAgICAgICBzZWxmLl9maWxlLmNsb3NlKCkKLSAgICAgICAgICAgIHJhaXNlCi0gICAgICAgIGlmIHNlbGYuX2Nsb3NlX2ZpbGU6Ci0gICAgICAgICAgICBzZWxmLl9maWxlLmNsb3NlKCkKLSAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgotCi0gICAgZGVmIF9faXRlcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZgotCi0KIGRlZiBYTUwodGV4dCwgcGFyc2VyPU5vbmUpOgogICAgICIiIlBhcnNlIFhNTCBkb2N1bWVudCBmcm9tIHN0cmluZyBjb25zdGFudC4KIApkaWZmIC0tZ2l0IGEvTGliL3htbHJwYy9jbGllbnQucHkgYi9MaWIveG1scnBjL2NsaWVudC5weQppbmRleCBiYmY5ZWU2Li5iZDMyNzhlIDEwMDY0NAotLS0gYS9MaWIveG1scnBjL2NsaWVudC5weQorKysgYi9MaWIveG1scnBjL2NsaWVudC5weQpAQCAtMTMyLDYgKzEzMiw3IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQogZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKK2Zyb20gZGVjaW1hbCBpbXBvcnQgRGVjaW1hbAogaW1wb3J0IGh0dHAuY2xpZW50CiBpbXBvcnQgdXJsbGliLnBhcnNlCiBmcm9tIHhtbC5wYXJzZXJzIGltcG9ydCBleHBhdApAQCAtMTUxLDcgKzE1Miw3IEBACiAgICAgcmV0dXJuIHMucmVwbGFjZSgiPiIsICImZ3Q7IiwpCiAKICMgdXNlZCBpbiBVc2VyLUFnZW50IGhlYWRlciBzZW50Ci1fX3ZlcnNpb25fXyA9IHN5cy52ZXJzaW9uWzozXQorX192ZXJzaW9uX18gPSAnJWQuJWQnICUgc3lzLnZlcnNpb25faW5mb1s6Ml0KIAogIyB4bWxycGMgaW50ZWdlciBsaW1pdHMKIE1BWElOVCA9ICAyKiozMS0xCkBAIC02NjcsNiArNjY4LDggQEAKIAogICAgIGRlZiBzdGFydChzZWxmLCB0YWcsIGF0dHJzKToKICAgICAgICAgIyBwcmVwYXJlIHRvIGhhbmRsZSB0aGlzIGVsZW1lbnQKKyAgICAgICAgaWYgJzonIGluIHRhZzoKKyAgICAgICAgICAgIHRhZyA9IHRhZy5zcGxpdCgnOicpWy0xXQogICAgICAgICBpZiB0YWcgPT0gImFycmF5IiBvciB0YWcgPT0gInN0cnVjdCI6CiAgICAgICAgICAgICBzZWxmLl9tYXJrcy5hcHBlbmQobGVuKHNlbGYuX3N0YWNrKSkKICAgICAgICAgc2VsZi5fZGF0YSA9IFtdCkBAIC02ODIsOSArNjg1LDEzIEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGYgPSBzZWxmLmRpc3BhdGNoW3RhZ10KICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgcGFzcyAjIHVua25vd24gdGFnID8KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBmKHNlbGYsICIiLmpvaW4oc2VsZi5fZGF0YSkpCisgICAgICAgICAgICBpZiAnOicgbm90IGluIHRhZzoKKyAgICAgICAgICAgICAgICByZXR1cm4gIyB1bmtub3duIHRhZyA/CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZiA9IHNlbGYuZGlzcGF0Y2hbdGFnLnNwbGl0KCc6JylbLTFdXQorICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgIHJldHVybiAjIHVua25vd24gdGFnID8KKyAgICAgICAgcmV0dXJuIGYoc2VsZiwgIiIuam9pbihzZWxmLl9kYXRhKSkKIAogICAgICMKICAgICAjIGFjY2VsZXJhdG9yIHN1cHBvcnQKQEAgLTY5NCw5ICs3MDEsMTMgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZiA9IHNlbGYuZGlzcGF0Y2hbdGFnXQogICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICBwYXNzICMgdW5rbm93biB0YWcgPwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIGYoc2VsZiwgZGF0YSkKKyAgICAgICAgICAgIGlmICc6JyBub3QgaW4gdGFnOgorICAgICAgICAgICAgICAgIHJldHVybiAjIHVua25vd24gdGFnID8KKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBmID0gc2VsZi5kaXNwYXRjaFt0YWcuc3BsaXQoJzonKVstMV1dCisgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICAgICAgcmV0dXJuICMgdW5rbm93biB0YWcgPworICAgICAgICByZXR1cm4gZihzZWxmLCBkYXRhKQogCiAgICAgIwogICAgICMgZWxlbWVudCBkZWNvZGVycwpAQCAtNzIxLDE0ICs3MzIsMjMgQEAKICAgICBkZWYgZW5kX2ludChzZWxmLCBkYXRhKToKICAgICAgICAgc2VsZi5hcHBlbmQoaW50KGRhdGEpKQogICAgICAgICBzZWxmLl92YWx1ZSA9IDAKKyAgICBkaXNwYXRjaFsiaTEiXSA9IGVuZF9pbnQKKyAgICBkaXNwYXRjaFsiaTIiXSA9IGVuZF9pbnQKICAgICBkaXNwYXRjaFsiaTQiXSA9IGVuZF9pbnQKICAgICBkaXNwYXRjaFsiaTgiXSA9IGVuZF9pbnQKICAgICBkaXNwYXRjaFsiaW50Il0gPSBlbmRfaW50CisgICAgZGlzcGF0Y2hbImJpZ2ludGVnZXIiXSA9IGVuZF9pbnQKIAogICAgIGRlZiBlbmRfZG91YmxlKHNlbGYsIGRhdGEpOgogICAgICAgICBzZWxmLmFwcGVuZChmbG9hdChkYXRhKSkKICAgICAgICAgc2VsZi5fdmFsdWUgPSAwCiAgICAgZGlzcGF0Y2hbImRvdWJsZSJdID0gZW5kX2RvdWJsZQorICAgIGRpc3BhdGNoWyJmbG9hdCJdID0gZW5kX2RvdWJsZQorCisgICAgZGVmIGVuZF9iaWdkZWNpbWFsKHNlbGYsIGRhdGEpOgorICAgICAgICBzZWxmLmFwcGVuZChEZWNpbWFsKGRhdGEpKQorICAgICAgICBzZWxmLl92YWx1ZSA9IDAKKyAgICBkaXNwYXRjaFsiYmlnZGVjaW1hbCJdID0gZW5kX2JpZ2RlY2ltYWwKIAogICAgIGRlZiBlbmRfc3RyaW5nKHNlbGYsIGRhdGEpOgogICAgICAgICBpZiBzZWxmLl9lbmNvZGluZzoKZGlmZiAtLWdpdCBhL0xpYi94bWxycGMvc2VydmVyLnB5IGIvTGliL3htbHJwYy9zZXJ2ZXIucHkKaW5kZXggNzgxNzY5My4uODQ5YmZkZCAxMDA2NDQKLS0tIGEvTGliL3htbHJwYy9zZXJ2ZXIucHkKKysrIGIvTGliL3htbHJwYy9zZXJ2ZXIucHkKQEAgLTk3MSwxNiArOTcxLDE1IEBACiAgICAgICAgICAgICBkZWYgZ2V0Q3VycmVudFRpbWUoKToKICAgICAgICAgICAgICAgICByZXR1cm4gZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkKIAotICAgIHNlcnZlciA9IFNpbXBsZVhNTFJQQ1NlcnZlcigoImxvY2FsaG9zdCIsIDgwMDApKQotICAgIHNlcnZlci5yZWdpc3Rlcl9mdW5jdGlvbihwb3cpCi0gICAgc2VydmVyLnJlZ2lzdGVyX2Z1bmN0aW9uKGxhbWJkYSB4LHk6IHgreSwgJ2FkZCcpCi0gICAgc2VydmVyLnJlZ2lzdGVyX2luc3RhbmNlKEV4YW1wbGVTZXJ2aWNlKCksIGFsbG93X2RvdHRlZF9uYW1lcz1UcnVlKQotICAgIHNlcnZlci5yZWdpc3Rlcl9tdWx0aWNhbGxfZnVuY3Rpb25zKCkKLSAgICBwcmludCgnU2VydmluZyBYTUwtUlBDIG9uIGxvY2FsaG9zdCBwb3J0IDgwMDAnKQotICAgIHByaW50KCdJdCBpcyBhZHZpc2FibGUgdG8gcnVuIHRoaXMgZXhhbXBsZSBzZXJ2ZXIgd2l0aGluIGEgc2VjdXJlLCBjbG9zZWQgbmV0d29yay4nKQotICAgIHRyeToKLSAgICAgICAgc2VydmVyLnNlcnZlX2ZvcmV2ZXIoKQotICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKLSAgICAgICAgcHJpbnQoIlxuS2V5Ym9hcmQgaW50ZXJydXB0IHJlY2VpdmVkLCBleGl0aW5nLiIpCi0gICAgICAgIHNlcnZlci5zZXJ2ZXJfY2xvc2UoKQotICAgICAgICBzeXMuZXhpdCgwKQorICAgIHdpdGggU2ltcGxlWE1MUlBDU2VydmVyKCgibG9jYWxob3N0IiwgODAwMCkpIGFzIHNlcnZlcjoKKyAgICAgICAgc2VydmVyLnJlZ2lzdGVyX2Z1bmN0aW9uKHBvdykKKyAgICAgICAgc2VydmVyLnJlZ2lzdGVyX2Z1bmN0aW9uKGxhbWJkYSB4LHk6IHgreSwgJ2FkZCcpCisgICAgICAgIHNlcnZlci5yZWdpc3Rlcl9pbnN0YW5jZShFeGFtcGxlU2VydmljZSgpLCBhbGxvd19kb3R0ZWRfbmFtZXM9VHJ1ZSkKKyAgICAgICAgc2VydmVyLnJlZ2lzdGVyX211bHRpY2FsbF9mdW5jdGlvbnMoKQorICAgICAgICBwcmludCgnU2VydmluZyBYTUwtUlBDIG9uIGxvY2FsaG9zdCBwb3J0IDgwMDAnKQorICAgICAgICBwcmludCgnSXQgaXMgYWR2aXNhYmxlIHRvIHJ1biB0aGlzIGV4YW1wbGUgc2VydmVyIHdpdGhpbiBhIHNlY3VyZSwgY2xvc2VkIG5ldHdvcmsuJykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VydmVyLnNlcnZlX2ZvcmV2ZXIoKQorICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CisgICAgICAgICAgICBwcmludCgiXG5LZXlib2FyZCBpbnRlcnJ1cHQgcmVjZWl2ZWQsIGV4aXRpbmcuIikKKyAgICAgICAgICAgIHN5cy5leGl0KDApCmRpZmYgLS1naXQgYS9MaWIvemlwZmlsZS5weSBiL0xpYi96aXBmaWxlLnB5CmluZGV4IDI0NzY3MTcuLmUyYWUwNDIgMTAwNjQ0Ci0tLSBhL0xpYi96aXBmaWxlLnB5CisrKyBiL0xpYi96aXBmaWxlLnB5CkBAIC0zNzEsNyArMzcxLDcgQEAKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyBmaWxlbW9kZT0lcicgJSBzdGF0LmZpbGVtb2RlKGhpKSkKICAgICAgICAgaWYgbG86CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgZXh0ZXJuYWxfYXR0cj0lI3gnICUgbG8pCi0gICAgICAgIGlzZGlyID0gc2VsZi5maWxlbmFtZVstMTpdID09ICcvJworICAgICAgICBpc2RpciA9IHNlbGYuaXNfZGlyKCkKICAgICAgICAgaWYgbm90IGlzZGlyIG9yIHNlbGYuZmlsZV9zaXplOgogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnIGZpbGVfc2l6ZT0lcicgJSBzZWxmLmZpbGVfc2l6ZSkKICAgICAgICAgaWYgKChub3QgaXNkaXIgb3Igc2VsZi5jb21wcmVzc19zaXplKSBhbmQKQEAgLTQ0OSw3ICs0NDksNyBAQAogICAgICAgICAgICAgICAgIGVsaWYgbG4gPT0gMDoKICAgICAgICAgICAgICAgICAgICAgY291bnRzID0gKCkKICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIkNvcnJ1cHQgZXh0cmEgZmllbGQgJXMiJShsbiwpKQorICAgICAgICAgICAgICAgICAgICByYWlzZSBCYWRaaXBGaWxlKCJDb3JydXB0IGV4dHJhIGZpZWxkICUwNHggKHNpemU9JWQpIiAlICh0cCwgbG4pKQogCiAgICAgICAgICAgICAgICAgaWR4ID0gMAogCkBAIC00NjksNiArNDY5LDQyIEBACiAKICAgICAgICAgICAgIGV4dHJhID0gZXh0cmFbbG4rNDpdCiAKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZnJvbV9maWxlKGNscywgZmlsZW5hbWUsIGFyY25hbWU9Tm9uZSk6CisgICAgICAgICIiIkNvbnN0cnVjdCBhbiBhcHByb3ByaWF0ZSBaaXBJbmZvIGZvciBhIGZpbGUgb24gdGhlIGZpbGVzeXN0ZW0uCisKKyAgICAgICAgZmlsZW5hbWUgc2hvdWxkIGJlIHRoZSBwYXRoIHRvIGEgZmlsZSBvciBkaXJlY3Rvcnkgb24gdGhlIGZpbGVzeXN0ZW0uCisKKyAgICAgICAgYXJjbmFtZSBpcyB0aGUgbmFtZSB3aGljaCBpdCB3aWxsIGhhdmUgd2l0aGluIHRoZSBhcmNoaXZlIChieSBkZWZhdWx0LAorICAgICAgICB0aGlzIHdpbGwgYmUgdGhlIHNhbWUgYXMgZmlsZW5hbWUsIGJ1dCB3aXRob3V0IGEgZHJpdmUgbGV0dGVyIGFuZCB3aXRoCisgICAgICAgIGxlYWRpbmcgcGF0aCBzZXBhcmF0b3JzIHJlbW92ZWQpLgorICAgICAgICAiIiIKKyAgICAgICAgc3QgPSBvcy5zdGF0KGZpbGVuYW1lKQorICAgICAgICBpc2RpciA9IHN0YXQuU19JU0RJUihzdC5zdF9tb2RlKQorICAgICAgICBtdGltZSA9IHRpbWUubG9jYWx0aW1lKHN0LnN0X210aW1lKQorICAgICAgICBkYXRlX3RpbWUgPSBtdGltZVswOjZdCisgICAgICAgICMgQ3JlYXRlIFppcEluZm8gaW5zdGFuY2UgdG8gc3RvcmUgZmlsZSBpbmZvcm1hdGlvbgorICAgICAgICBpZiBhcmNuYW1lIGlzIE5vbmU6CisgICAgICAgICAgICBhcmNuYW1lID0gZmlsZW5hbWUKKyAgICAgICAgYXJjbmFtZSA9IG9zLnBhdGgubm9ybXBhdGgob3MucGF0aC5zcGxpdGRyaXZlKGFyY25hbWUpWzFdKQorICAgICAgICB3aGlsZSBhcmNuYW1lWzBdIGluIChvcy5zZXAsIG9zLmFsdHNlcCk6CisgICAgICAgICAgICBhcmNuYW1lID0gYXJjbmFtZVsxOl0KKyAgICAgICAgaWYgaXNkaXI6CisgICAgICAgICAgICBhcmNuYW1lICs9ICcvJworICAgICAgICB6aW5mbyA9IGNscyhhcmNuYW1lLCBkYXRlX3RpbWUpCisgICAgICAgIHppbmZvLmV4dGVybmFsX2F0dHIgPSAoc3Quc3RfbW9kZSAmIDB4RkZGRikgPDwgMTYgICMgVW5peCBhdHRyaWJ1dGVzCisgICAgICAgIGlmIGlzZGlyOgorICAgICAgICAgICAgemluZm8uZmlsZV9zaXplID0gMAorICAgICAgICAgICAgemluZm8uZXh0ZXJuYWxfYXR0ciB8PSAweDEwICAjIE1TLURPUyBkaXJlY3RvcnkgZmxhZworICAgICAgICBlbHNlOgorICAgICAgICAgICAgemluZm8uZmlsZV9zaXplID0gc3Quc3Rfc2l6ZQorCisgICAgICAgIHJldHVybiB6aW5mbworCisgICAgZGVmIGlzX2RpcihzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhpcyBhcmNoaXZlIG1lbWJlciBpcyBhIGRpcmVjdG9yeS4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuZmlsZW5hbWVbLTFdID09ICcvJworCiAKIGNsYXNzIF9aaXBEZWNyeXB0ZXI6CiAgICAgIiIiQ2xhc3MgdG8gaGFuZGxlIGRlY3J5cHRpb24gb2YgZmlsZXMgc3RvcmVkIHdpdGhpbiBhIFpJUCBhcmNoaXZlLgpAQCAtNjE4LDcgKzY1NCw3IEBACiAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoCiAgICAgICAgICAgICAgICAgIkNvbXByZXNzaW9uIHJlcXVpcmVzIHRoZSAobWlzc2luZykgbHptYSBtb2R1bGUiKQogICAgIGVsc2U6Ci0gICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiVGhhdCBjb21wcmVzc2lvbiBtZXRob2QgaXMgbm90IHN1cHBvcnRlZCIpCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoIlRoYXQgY29tcHJlc3Npb24gbWV0aG9kIGlzIG5vdCBzdXBwb3J0ZWQiKQogCiAKIGRlZiBfZ2V0X2NvbXByZXNzb3IoY29tcHJlc3NfdHlwZSk6CkBAIC02NTEsMTQgKzY4NywxOSBAQAogCiAKIGNsYXNzIF9TaGFyZWRGaWxlOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlLCBwb3MsIGNsb3NlLCBsb2NrKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZSwgcG9zLCBjbG9zZSwgbG9jaywgd3JpdGluZyk6CiAgICAgICAgIHNlbGYuX2ZpbGUgPSBmaWxlCiAgICAgICAgIHNlbGYuX3BvcyA9IHBvcwogICAgICAgICBzZWxmLl9jbG9zZSA9IGNsb3NlCiAgICAgICAgIHNlbGYuX2xvY2sgPSBsb2NrCisgICAgICAgIHNlbGYuX3dyaXRpbmcgPSB3cml0aW5nCiAKICAgICBkZWYgcmVhZChzZWxmLCBuPS0xKToKICAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgaWYgc2VsZi5fd3JpdGluZygpOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNhbid0IHJlYWQgZnJvbSB0aGUgWklQIGZpbGUgd2hpbGUgdGhlcmUgIgorICAgICAgICAgICAgICAgICAgICAgICAgImlzIGFuIG9wZW4gd3JpdGluZyBoYW5kbGUgb24gaXQuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJDbG9zZSB0aGUgd3JpdGluZyBoYW5kbGUgYmVmb3JlIHRyeWluZyB0byByZWFkLiIpCiAgICAgICAgICAgICBzZWxmLl9maWxlLnNlZWsoc2VsZi5fcG9zKQogICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2ZpbGUucmVhZChuKQogICAgICAgICAgICAgc2VsZi5fcG9zID0gc2VsZi5fZmlsZS50ZWxsKCkKQEAgLTcwMiw5ICs3NDMsNiBAQAogICAgICMgUmVhZCBmcm9tIGNvbXByZXNzZWQgZmlsZXMgaW4gNGsgYmxvY2tzLgogICAgIE1JTl9SRUFEX1NJWkUgPSA0MDk2CiAKLSAgICAjIFNlYXJjaCBmb3IgdW5pdmVyc2FsIG5ld2xpbmVzIG9yIGxpbmUgY2h1bmtzLgotICAgIFBBVFRFUk4gPSByZS5jb21waWxlKGJyJ14oP1A8Y2h1bms+W15cclxuXSspfCg/UDxuZXdsaW5lPlxufFxyXG4/KScpCi0KICAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZW9iaiwgbW9kZSwgemlwaW5mbywgZGVjcnlwdGVyPU5vbmUsCiAgICAgICAgICAgICAgICAgIGNsb3NlX2ZpbGVvYmo9RmFsc2UpOgogICAgICAgICBzZWxmLl9maWxlb2JqID0gZmlsZW9iagpAQCAtNzIxLDcgKzc1OSw2IEBACiAgICAgICAgIHNlbGYuX3JlYWRidWZmZXIgPSBiJycKICAgICAgICAgc2VsZi5fb2Zmc2V0ID0gMAogCi0gICAgICAgIHNlbGYuX3VuaXZlcnNhbCA9ICdVJyBpbiBtb2RlCiAgICAgICAgIHNlbGYubmV3bGluZXMgPSBOb25lCiAKICAgICAgICAgIyBBZGp1c3QgcmVhZCBzaXplIGZvciBlbmNyeXB0ZWQgZmlsZXMgc2luY2UgdGhlIGZpcnN0IDEyIGJ5dGVzCkBAIC03NTgsNyArNzk1LDcgQEAKICAgICAgICAgSWYgbGltaXQgaXMgc3BlY2lmaWVkLCBhdCBtb3N0IGxpbWl0IGJ5dGVzIHdpbGwgYmUgcmVhZC4KICAgICAgICAgIiIiCiAKLSAgICAgICAgaWYgbm90IHNlbGYuX3VuaXZlcnNhbCBhbmQgbGltaXQgPCAwOgorICAgICAgICBpZiBsaW1pdCA8IDA6CiAgICAgICAgICAgICAjIFNob3J0Y3V0IGNvbW1vbiBjYXNlIC0gbmV3bGluZSBmb3VuZCBpbiBidWZmZXIuCiAgICAgICAgICAgICBpID0gc2VsZi5fcmVhZGJ1ZmZlci5maW5kKGInXG4nLCBzZWxmLl9vZmZzZXQpICsgMQogICAgICAgICAgICAgaWYgaSA+IDA6CkBAIC03NjYsNDEgKzgwMyw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5fb2Zmc2V0ID0gaQogICAgICAgICAgICAgICAgIHJldHVybiBsaW5lCiAKLSAgICAgICAgaWYgbm90IHNlbGYuX3VuaXZlcnNhbDoKLSAgICAgICAgICAgIHJldHVybiBpby5CdWZmZXJlZElPQmFzZS5yZWFkbGluZShzZWxmLCBsaW1pdCkKLQotICAgICAgICBsaW5lID0gYicnCi0gICAgICAgIHdoaWxlIGxpbWl0IDwgMCBvciBsZW4obGluZSkgPCBsaW1pdDoKLSAgICAgICAgICAgIHJlYWRhaGVhZCA9IHNlbGYucGVlaygyKQotICAgICAgICAgICAgaWYgcmVhZGFoZWFkID09IGInJzoKLSAgICAgICAgICAgICAgICByZXR1cm4gbGluZQotCi0gICAgICAgICAgICAjCi0gICAgICAgICAgICAjIFNlYXJjaCBmb3IgdW5pdmVyc2FsIG5ld2xpbmVzIG9yIGxpbmUgY2h1bmtzLgotICAgICAgICAgICAgIwotICAgICAgICAgICAgIyBUaGUgcGF0dGVybiByZXR1cm5zIGVpdGhlciBhIGxpbmUgY2h1bmsgb3IgYSBuZXdsaW5lLCBidXQgbm90Ci0gICAgICAgICAgICAjIGJvdGguIENvbWJpbmVkIHdpdGggcGVlaygyKSwgd2UgYXJlIGFzc3VyZWQgdGhhdCB0aGUgc2VxdWVuY2UKLSAgICAgICAgICAgICMgJ1xyXG4nIGlzIGFsd2F5cyByZXRyaWV2ZWQgY29tcGxldGVseSBhbmQgbmV2ZXIgc3BsaXQgaW50bwotICAgICAgICAgICAgIyBzZXBhcmF0ZSBuZXdsaW5lcyAtICdccicsICdcbicgZHVlIHRvIGNvaW5jaWRlbnRhbCByZWFkYWhlYWRzLgotICAgICAgICAgICAgIwotICAgICAgICAgICAgbWF0Y2ggPSBzZWxmLlBBVFRFUk4uc2VhcmNoKHJlYWRhaGVhZCkKLSAgICAgICAgICAgIG5ld2xpbmUgPSBtYXRjaC5ncm91cCgnbmV3bGluZScpCi0gICAgICAgICAgICBpZiBuZXdsaW5lIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIGlmIHNlbGYubmV3bGluZXMgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5uZXdsaW5lcyA9IFtdCi0gICAgICAgICAgICAgICAgaWYgbmV3bGluZSBub3QgaW4gc2VsZi5uZXdsaW5lczoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5uZXdsaW5lcy5hcHBlbmQobmV3bGluZSkKLSAgICAgICAgICAgICAgICBzZWxmLl9vZmZzZXQgKz0gbGVuKG5ld2xpbmUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGxpbmUgKyBiJ1xuJwotCi0gICAgICAgICAgICBjaHVuayA9IG1hdGNoLmdyb3VwKCdjaHVuaycpCi0gICAgICAgICAgICBpZiBsaW1pdCA+PSAwOgotICAgICAgICAgICAgICAgIGNodW5rID0gY2h1bmtbOiBsaW1pdCAtIGxlbihsaW5lKV0KLQotICAgICAgICAgICAgc2VsZi5fb2Zmc2V0ICs9IGxlbihjaHVuaykKLSAgICAgICAgICAgIGxpbmUgKz0gY2h1bmsKLQotICAgICAgICByZXR1cm4gbGluZQorICAgICAgICByZXR1cm4gaW8uQnVmZmVyZWRJT0Jhc2UucmVhZGxpbmUoc2VsZiwgbGltaXQpCiAKICAgICBkZWYgcGVlayhzZWxmLCBuPTEpOgogICAgICAgICAiIiJSZXR1cm5zIGJ1ZmZlcmVkIGJ5dGVzIHdpdGhvdXQgYWR2YW5jaW5nIHRoZSBwb3NpdGlvbi4iIiIKQEAgLTk1OCw2ICs5NjEsNzYgQEAKICAgICAgICAgICAgIHN1cGVyKCkuY2xvc2UoKQogCiAKK2NsYXNzIF9aaXBXcml0ZUZpbGUoaW8uQnVmZmVyZWRJT0Jhc2UpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB6ZiwgemluZm8sIHppcDY0KToKKyAgICAgICAgc2VsZi5femluZm8gPSB6aW5mbworICAgICAgICBzZWxmLl96aXA2NCA9IHppcDY0CisgICAgICAgIHNlbGYuX3ppcGZpbGUgPSB6ZgorICAgICAgICBzZWxmLl9jb21wcmVzc29yID0gX2dldF9jb21wcmVzc29yKHppbmZvLmNvbXByZXNzX3R5cGUpCisgICAgICAgIHNlbGYuX2ZpbGVfc2l6ZSA9IDAKKyAgICAgICAgc2VsZi5fY29tcHJlc3Nfc2l6ZSA9IDAKKyAgICAgICAgc2VsZi5fY3JjID0gMAorCisgICAgQHByb3BlcnR5CisgICAgZGVmIF9maWxlb2JqKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5femlwZmlsZS5mcAorCisgICAgZGVmIHdyaXRhYmxlKHNlbGYpOgorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIHdyaXRlKHNlbGYsIGRhdGEpOgorICAgICAgICBuYnl0ZXMgPSBsZW4oZGF0YSkKKyAgICAgICAgc2VsZi5fZmlsZV9zaXplICs9IG5ieXRlcworICAgICAgICBzZWxmLl9jcmMgPSBjcmMzMihkYXRhLCBzZWxmLl9jcmMpCisgICAgICAgIGlmIHNlbGYuX2NvbXByZXNzb3I6CisgICAgICAgICAgICBkYXRhID0gc2VsZi5fY29tcHJlc3Nvci5jb21wcmVzcyhkYXRhKQorICAgICAgICAgICAgc2VsZi5fY29tcHJlc3Nfc2l6ZSArPSBsZW4oZGF0YSkKKyAgICAgICAgc2VsZi5fZmlsZW9iai53cml0ZShkYXRhKQorICAgICAgICByZXR1cm4gbmJ5dGVzCisKKyAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgIHN1cGVyKCkuY2xvc2UoKQorICAgICAgICAjIEZsdXNoIGFueSBkYXRhIGZyb20gdGhlIGNvbXByZXNzb3IsIGFuZCB1cGRhdGUgaGVhZGVyIGluZm8KKyAgICAgICAgaWYgc2VsZi5fY29tcHJlc3NvcjoKKyAgICAgICAgICAgIGJ1ZiA9IHNlbGYuX2NvbXByZXNzb3IuZmx1c2goKQorICAgICAgICAgICAgc2VsZi5fY29tcHJlc3Nfc2l6ZSArPSBsZW4oYnVmKQorICAgICAgICAgICAgc2VsZi5fZmlsZW9iai53cml0ZShidWYpCisgICAgICAgICAgICBzZWxmLl96aW5mby5jb21wcmVzc19zaXplID0gc2VsZi5fY29tcHJlc3Nfc2l6ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5femluZm8uY29tcHJlc3Nfc2l6ZSA9IHNlbGYuX2ZpbGVfc2l6ZQorICAgICAgICBzZWxmLl96aW5mby5DUkMgPSBzZWxmLl9jcmMKKyAgICAgICAgc2VsZi5femluZm8uZmlsZV9zaXplID0gc2VsZi5fZmlsZV9zaXplCisKKyAgICAgICAgIyBXcml0ZSB1cGRhdGVkIGhlYWRlciBpbmZvCisgICAgICAgIGlmIHNlbGYuX3ppbmZvLmZsYWdfYml0cyAmIDB4MDg6CisgICAgICAgICAgICAjIFdyaXRlIENSQyBhbmQgZmlsZSBzaXplcyBhZnRlciB0aGUgZmlsZSBkYXRhCisgICAgICAgICAgICBmbXQgPSAnPExRUScgaWYgc2VsZi5femlwNjQgZWxzZSAnPExMTCcKKyAgICAgICAgICAgIHNlbGYuX2ZpbGVvYmoud3JpdGUoc3RydWN0LnBhY2soZm10LCBzZWxmLl96aW5mby5DUkMsCisgICAgICAgICAgICAgICAgc2VsZi5femluZm8uY29tcHJlc3Nfc2l6ZSwgc2VsZi5femluZm8uZmlsZV9zaXplKSkKKyAgICAgICAgICAgIHNlbGYuX3ppcGZpbGUuc3RhcnRfZGlyID0gc2VsZi5fZmlsZW9iai50ZWxsKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl96aXA2NDoKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9maWxlX3NpemUgPiBaSVA2NF9MSU1JVDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdGaWxlIHNpemUgdW5leHBlY3RlZGx5IGV4Y2VlZGVkIFpJUDY0ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsaW1pdCcpCisgICAgICAgICAgICAgICAgaWYgc2VsZi5fY29tcHJlc3Nfc2l6ZSA+IFpJUDY0X0xJTUlUOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0NvbXByZXNzZWQgc2l6ZSB1bmV4cGVjdGVkbHkgZXhjZWVkZWQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1pJUDY0IGxpbWl0JykKKyAgICAgICAgICAgICMgU2VlayBiYWNrd2FyZHMgYW5kIHdyaXRlIGZpbGUgaGVhZGVyICh3aGljaCB3aWxsIG5vdyBpbmNsdWRlCisgICAgICAgICAgICAjIGNvcnJlY3QgQ1JDIGFuZCBmaWxlIHNpemVzKQorCisgICAgICAgICAgICAjIFByZXNlcnZlIGN1cnJlbnQgcG9zaXRpb24gaW4gZmlsZQorICAgICAgICAgICAgc2VsZi5femlwZmlsZS5zdGFydF9kaXIgPSBzZWxmLl9maWxlb2JqLnRlbGwoKQorICAgICAgICAgICAgc2VsZi5fZmlsZW9iai5zZWVrKHNlbGYuX3ppbmZvLmhlYWRlcl9vZmZzZXQpCisgICAgICAgICAgICBzZWxmLl9maWxlb2JqLndyaXRlKHNlbGYuX3ppbmZvLkZpbGVIZWFkZXIoc2VsZi5femlwNjQpKQorICAgICAgICAgICAgc2VsZi5fZmlsZW9iai5zZWVrKHNlbGYuX3ppcGZpbGUuc3RhcnRfZGlyKQorCisgICAgICAgIHNlbGYuX3ppcGZpbGUuX3dyaXRpbmcgPSBGYWxzZQorCisgICAgICAgICMgU3VjY2Vzc2Z1bGx5IHdyaXR0ZW46IEFkZCBmaWxlIHRvIG91ciBjYWNoZXMKKyAgICAgICAgc2VsZi5femlwZmlsZS5maWxlbGlzdC5hcHBlbmQoc2VsZi5femluZm8pCisgICAgICAgIHNlbGYuX3ppcGZpbGUuTmFtZVRvSW5mb1tzZWxmLl96aW5mby5maWxlbmFtZV0gPSBzZWxmLl96aW5mbworCiBjbGFzcyBaaXBGaWxlOgogICAgICIiIiBDbGFzcyB3aXRoIG1ldGhvZHMgdG8gb3BlbiwgcmVhZCwgd3JpdGUsIGNsb3NlLCBsaXN0IHppcCBmaWxlcy4KIApAQCAtOTgyLDcgKzEwNTUsNyBAQAogICAgICAgICAiIiJPcGVuIHRoZSBaSVAgZmlsZSB3aXRoIG1vZGUgcmVhZCAncicsIHdyaXRlICd3JywgZXhjbHVzaXZlIGNyZWF0ZSAneCcsCiAgICAgICAgIG9yIGFwcGVuZCAnYScuIiIiCiAgICAgICAgIGlmIG1vZGUgbm90IGluICgncicsICd3JywgJ3gnLCAnYScpOgotICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJaaXBGaWxlIHJlcXVpcmVzIG1vZGUgJ3InLCAndycsICd4Jywgb3IgJ2EnIikKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlppcEZpbGUgcmVxdWlyZXMgbW9kZSAncicsICd3JywgJ3gnLCBvciAnYSciKQogCiAgICAgICAgIF9jaGVja19jb21wcmVzc2lvbihjb21wcmVzc2lvbikKIApAQCAtMTAyMCw2ICsxMDkzLDcgQEAKICAgICAgICAgc2VsZi5fZmlsZVJlZkNudCA9IDEKICAgICAgICAgc2VsZi5fbG9jayA9IHRocmVhZGluZy5STG9jaygpCiAgICAgICAgIHNlbGYuX3NlZWthYmxlID0gVHJ1ZQorICAgICAgICBzZWxmLl93cml0aW5nID0gRmFsc2UKIAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBpZiBtb2RlID09ICdyJzoKQEAgLTEwNTUsNyArMTEyOSw3IEBACiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2RpZE1vZGlmeSA9IFRydWUKICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGFydF9kaXIgPSBzZWxmLl9zdGFydF9kaXNrID0gc2VsZi5mcC50ZWxsKCkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJNb2RlIG11c3QgYmUgJ3InLCAndycsICd4Jywgb3IgJ2EnIikKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJNb2RlIG11c3QgYmUgJ3InLCAndycsICd4Jywgb3IgJ2EnIikKICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgZnAgPSBzZWxmLmZwCiAgICAgICAgICAgICBzZWxmLmZwID0gTm9uZQpAQCAtMTIwNCw3ICsxMjc4LDcgQEAKICAgICBkZWYgc2V0cGFzc3dvcmQoc2VsZiwgcHdkKToKICAgICAgICAgIiIiU2V0IGRlZmF1bHQgcGFzc3dvcmQgZm9yIGVuY3J5cHRlZCBmaWxlcy4iIiIKICAgICAgICAgaWYgcHdkIGFuZCBub3QgaXNpbnN0YW5jZShwd2QsIGJ5dGVzKToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigicHdkOiBleHBlY3RlZCBieXRlcywgZ290ICVzIiAlIHR5cGUocHdkKSkKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigicHdkOiBleHBlY3RlZCBieXRlcywgZ290ICVzIiAlIHR5cGUocHdkKS5fX25hbWVfXykKICAgICAgICAgaWYgcHdkOgogICAgICAgICAgICAgc2VsZi5wd2QgPSBwd2QKICAgICAgICAgZWxzZToKQEAgLTEyMTgsNyArMTI5Miw3IEBACiAgICAgQGNvbW1lbnQuc2V0dGVyCiAgICAgZGVmIGNvbW1lbnQoc2VsZiwgY29tbWVudCk6CiAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGNvbW1lbnQsIGJ5dGVzKToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiY29tbWVudDogZXhwZWN0ZWQgYnl0ZXMsIGdvdCAlcyIgJSB0eXBlKGNvbW1lbnQpKQorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJjb21tZW50OiBleHBlY3RlZCBieXRlcywgZ290ICVzIiAlIHR5cGUoY29tbWVudCkuX19uYW1lX18pCiAgICAgICAgICMgY2hlY2sgZm9yIHZhbGlkIGNvbW1lbnQgbGVuZ3RoCiAgICAgICAgIGlmIGxlbihjb21tZW50KSA+IFpJUF9NQVhfQ09NTUVOVDoKICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncwpAQCAtMTIzMywzMCArMTMwNyw1NSBAQAogICAgICAgICB3aXRoIHNlbGYub3BlbihuYW1lLCAiciIsIHB3ZCkgYXMgZnA6CiAgICAgICAgICAgICByZXR1cm4gZnAucmVhZCgpCiAKLSAgICBkZWYgb3BlbihzZWxmLCBuYW1lLCBtb2RlPSJyIiwgcHdkPU5vbmUpOgotICAgICAgICAiIiJSZXR1cm4gZmlsZS1saWtlIG9iamVjdCBmb3IgJ25hbWUnLiIiIgotICAgICAgICBpZiBtb2RlIG5vdCBpbiAoInIiLCAiVSIsICJyVSIpOgotICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdvcGVuKCkgcmVxdWlyZXMgbW9kZSAiciIsICJVIiwgb3IgInJVIicpCi0gICAgICAgIGlmICdVJyBpbiBtb2RlOgotICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgICAgICAgICB3YXJuaW5ncy53YXJuKCInVScgbW9kZSBpcyBkZXByZWNhdGVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgIGRlZiBvcGVuKHNlbGYsIG5hbWUsIG1vZGU9InIiLCBwd2Q9Tm9uZSwgKiwgZm9yY2VfemlwNjQ9RmFsc2UpOgorICAgICAgICAiIiJSZXR1cm4gZmlsZS1saWtlIG9iamVjdCBmb3IgJ25hbWUnLgorCisgICAgICAgIG5hbWUgaXMgYSBzdHJpbmcgZm9yIHRoZSBmaWxlIG5hbWUgd2l0aGluIHRoZSBaSVAgZmlsZSwgb3IgYSBaaXBJbmZvCisgICAgICAgIG9iamVjdC4KKworICAgICAgICBtb2RlIHNob3VsZCBiZSAncicgdG8gcmVhZCBhIGZpbGUgYWxyZWFkeSBpbiB0aGUgWklQIGZpbGUsIG9yICd3JyB0bworICAgICAgICB3cml0ZSB0byBhIGZpbGUgbmV3bHkgYWRkZWQgdG8gdGhlIGFyY2hpdmUuCisKKyAgICAgICAgcHdkIGlzIHRoZSBwYXNzd29yZCB0byBkZWNyeXB0IGZpbGVzIChvbmx5IHVzZWQgZm9yIHJlYWRpbmcpLgorCisgICAgICAgIFdoZW4gd3JpdGluZywgaWYgdGhlIGZpbGUgc2l6ZSBpcyBub3Qga25vd24gaW4gYWR2YW5jZSBidXQgbWF5IGV4Y2VlZAorICAgICAgICAyIEdpQiwgcGFzcyBmb3JjZV96aXA2NCB0byB1c2UgdGhlIFpJUDY0IGZvcm1hdCwgd2hpY2ggY2FuIGhhbmRsZSBsYXJnZQorICAgICAgICBmaWxlcy4gIElmIHRoZSBzaXplIGlzIGtub3duIGluIGFkdmFuY2UsIGl0IGlzIGJlc3QgdG8gcGFzcyBhIFppcEluZm8KKyAgICAgICAgaW5zdGFuY2UgZm9yIG5hbWUsIHdpdGggemluZm8uZmlsZV9zaXplIHNldC4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIG1vZGUgbm90IGluIHsiciIsICJ3In06CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdvcGVuKCkgcmVxdWlyZXMgbW9kZSAiciIgb3IgInciJykKICAgICAgICAgaWYgcHdkIGFuZCBub3QgaXNpbnN0YW5jZShwd2QsIGJ5dGVzKToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigicHdkOiBleHBlY3RlZCBieXRlcywgZ290ICVzIiAlIHR5cGUocHdkKSkKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigicHdkOiBleHBlY3RlZCBieXRlcywgZ290ICVzIiAlIHR5cGUocHdkKS5fX25hbWVfXykKKyAgICAgICAgaWYgcHdkIGFuZCAobW9kZSA9PSAidyIpOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigicHdkIGlzIG9ubHkgc3VwcG9ydGVkIGZvciByZWFkaW5nIGZpbGVzIikKICAgICAgICAgaWYgbm90IHNlbGYuZnA6Ci0gICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoCi0gICAgICAgICAgICAgICAgIkF0dGVtcHQgdG8gcmVhZCBaSVAgYXJjaGl2ZSB0aGF0IHdhcyBhbHJlYWR5IGNsb3NlZCIpCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAorICAgICAgICAgICAgICAgICJBdHRlbXB0IHRvIHVzZSBaSVAgYXJjaGl2ZSB0aGF0IHdhcyBhbHJlYWR5IGNsb3NlZCIpCiAKICAgICAgICAgIyBNYWtlIHN1cmUgd2UgaGF2ZSBhbiBpbmZvIG9iamVjdAogICAgICAgICBpZiBpc2luc3RhbmNlKG5hbWUsIFppcEluZm8pOgogICAgICAgICAgICAgIyAnbmFtZScgaXMgYWxyZWFkeSBhbiBpbmZvIG9iamVjdAogICAgICAgICAgICAgemluZm8gPSBuYW1lCisgICAgICAgIGVsaWYgbW9kZSA9PSAndyc6CisgICAgICAgICAgICB6aW5mbyA9IFppcEluZm8obmFtZSkKKyAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3R5cGUgPSBzZWxmLmNvbXByZXNzaW9uCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjIEdldCBpbmZvIG9iamVjdCBmb3IgbmFtZQogICAgICAgICAgICAgemluZm8gPSBzZWxmLmdldGluZm8obmFtZSkKIAorICAgICAgICBpZiBtb2RlID09ICd3JzoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9vcGVuX3RvX3dyaXRlKHppbmZvLCBmb3JjZV96aXA2ND1mb3JjZV96aXA2NCkKKworICAgICAgICBpZiBzZWxmLl93cml0aW5nOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ2FuJ3QgcmVhZCBmcm9tIHRoZSBaSVAgZmlsZSB3aGlsZSB0aGVyZSAiCisgICAgICAgICAgICAgICAgICAgICJpcyBhbiBvcGVuIHdyaXRpbmcgaGFuZGxlIG9uIGl0LiAiCisgICAgICAgICAgICAgICAgICAgICJDbG9zZSB0aGUgd3JpdGluZyBoYW5kbGUgYmVmb3JlIHRyeWluZyB0byByZWFkLiIpCisKKyAgICAgICAgIyBPcGVuIGZvciByZWFkaW5nOgogICAgICAgICBzZWxmLl9maWxlUmVmQ250ICs9IDEKLSAgICAgICAgemVmX2ZpbGUgPSBfU2hhcmVkRmlsZShzZWxmLmZwLCB6aW5mby5oZWFkZXJfb2Zmc2V0LCBzZWxmLl9mcGNsb3NlLCBzZWxmLl9sb2NrKQorICAgICAgICB6ZWZfZmlsZSA9IF9TaGFyZWRGaWxlKHNlbGYuZnAsIHppbmZvLmhlYWRlcl9vZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZnBjbG9zZSwgc2VsZi5fbG9jaywgbGFtYmRhOiBzZWxmLl93cml0aW5nKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICAjIFNraXAgdGhlIGZpbGUgaGVhZGVyOgogICAgICAgICAgICAgZmhlYWRlciA9IHplZl9maWxlLnJlYWQoc2l6ZUZpbGVIZWFkZXIpCkBAIC0xMjk2LDcgKzEzOTUsNyBAQAogICAgICAgICAgICAgICAgIGlmIG5vdCBwd2Q6CiAgICAgICAgICAgICAgICAgICAgIHB3ZCA9IHNlbGYucHdkCiAgICAgICAgICAgICAgICAgaWYgbm90IHB3ZDoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJGaWxlICVzIGlzIGVuY3J5cHRlZCwgcGFzc3dvcmQgIgorICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIkZpbGUgJXIgaXMgZW5jcnlwdGVkLCBwYXNzd29yZCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVxdWlyZWQgZm9yIGV4dHJhY3Rpb24iICUgbmFtZSkKIAogICAgICAgICAgICAgICAgIHpkID0gX1ppcERlY3J5cHRlcihwd2QpCkBAIC0xMzE0LDEzICsxNDEzLDU2IEBACiAgICAgICAgICAgICAgICAgICAgICMgY29tcGFyZSBhZ2FpbnN0IHRoZSBDUkMgb3RoZXJ3aXNlCiAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2J5dGUgPSAoemluZm8uQ1JDID4+IDI0KSAmIDB4ZmYKICAgICAgICAgICAgICAgICBpZiBoWzExXSAhPSBjaGVja19ieXRlOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIkJhZCBwYXNzd29yZCBmb3IgZmlsZSIsIG5hbWUpCisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiQmFkIHBhc3N3b3JkIGZvciBmaWxlICVyIiAlIG5hbWUpCiAKICAgICAgICAgICAgIHJldHVybiBaaXBFeHRGaWxlKHplZl9maWxlLCBtb2RlLCB6aW5mbywgemQsIFRydWUpCiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIHplZl9maWxlLmNsb3NlKCkKICAgICAgICAgICAgIHJhaXNlCiAKKyAgICBkZWYgX29wZW5fdG9fd3JpdGUoc2VsZiwgemluZm8sIGZvcmNlX3ppcDY0PUZhbHNlKToKKyAgICAgICAgaWYgZm9yY2VfemlwNjQgYW5kIG5vdCBzZWxmLl9hbGxvd1ppcDY0OgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKKyAgICAgICAgICAgICAgICAiZm9yY2VfemlwNjQgaXMgVHJ1ZSwgYnV0IGFsbG93WmlwNjQgd2FzIEZhbHNlIHdoZW4gb3BlbmluZyAiCisgICAgICAgICAgICAgICAgInRoZSBaSVAgZmlsZS4iCisgICAgICAgICAgICApCisgICAgICAgIGlmIHNlbGYuX3dyaXRpbmc6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDYW4ndCB3cml0ZSB0byB0aGUgWklQIGZpbGUgd2hpbGUgdGhlcmUgaXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYW5vdGhlciB3cml0ZSBoYW5kbGUgb3BlbiBvbiBpdC4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2xvc2UgdGhlIGZpcnN0IGhhbmRsZSBiZWZvcmUgb3BlbmluZyBhbm90aGVyLiIpCisKKyAgICAgICAgIyBTaXplcyBhbmQgQ1JDIGFyZSBvdmVyd3JpdHRlbiB3aXRoIGNvcnJlY3QgZGF0YSBhZnRlciBwcm9jZXNzaW5nIHRoZSBmaWxlCisgICAgICAgIGlmIG5vdCBoYXNhdHRyKHppbmZvLCAnZmlsZV9zaXplJyk6CisgICAgICAgICAgICB6aW5mby5maWxlX3NpemUgPSAwCisgICAgICAgIHppbmZvLmNvbXByZXNzX3NpemUgPSAwCisgICAgICAgIHppbmZvLkNSQyA9IDAKKworICAgICAgICB6aW5mby5mbGFnX2JpdHMgPSAweDAwCisgICAgICAgIGlmIHppbmZvLmNvbXByZXNzX3R5cGUgPT0gWklQX0xaTUE6CisgICAgICAgICAgICAjIENvbXByZXNzZWQgZGF0YSBpbmNsdWRlcyBhbiBlbmQtb2Ytc3RyZWFtIChFT1MpIG1hcmtlcgorICAgICAgICAgICAgemluZm8uZmxhZ19iaXRzIHw9IDB4MDIKKyAgICAgICAgaWYgbm90IHNlbGYuX3NlZWthYmxlOgorICAgICAgICAgICAgemluZm8uZmxhZ19iaXRzIHw9IDB4MDgKKworICAgICAgICBpZiBub3QgemluZm8uZXh0ZXJuYWxfYXR0cjoKKyAgICAgICAgICAgIHppbmZvLmV4dGVybmFsX2F0dHIgPSAwbzYwMCA8PCAxNiAgIyBwZXJtaXNzaW9uczogP3J3LS0tLS0tLQorCisgICAgICAgICMgQ29tcHJlc3NlZCBzaXplIGNhbiBiZSBsYXJnZXIgdGhhbiB1bmNvbXByZXNzZWQgc2l6ZQorICAgICAgICB6aXA2NCA9IHNlbGYuX2FsbG93WmlwNjQgYW5kIFwKKyAgICAgICAgICAgICAgICAoZm9yY2VfemlwNjQgb3IgemluZm8uZmlsZV9zaXplICogMS4wNSA+IFpJUDY0X0xJTUlUKQorCisgICAgICAgIGlmIHNlbGYuX3NlZWthYmxlOgorICAgICAgICAgICAgc2VsZi5mcC5zZWVrKHNlbGYuc3RhcnRfZGlyKQorICAgICAgICB6aW5mby5oZWFkZXJfb2Zmc2V0ID0gc2VsZi5mcC50ZWxsKCkKKworICAgICAgICBzZWxmLl93cml0ZWNoZWNrKHppbmZvKQorICAgICAgICBzZWxmLl9kaWRNb2RpZnkgPSBUcnVlCisKKyAgICAgICAgc2VsZi5mcC53cml0ZSh6aW5mby5GaWxlSGVhZGVyKHppcDY0KSkKKworICAgICAgICBzZWxmLl93cml0aW5nID0gVHJ1ZQorICAgICAgICByZXR1cm4gX1ppcFdyaXRlRmlsZShzZWxmLCB6aW5mbywgemlwNjQpCisKICAgICBkZWYgZXh0cmFjdChzZWxmLCBtZW1iZXIsIHBhdGg9Tm9uZSwgcHdkPU5vbmUpOgogICAgICAgICAiIiJFeHRyYWN0IGEgbWVtYmVyIGZyb20gdGhlIGFyY2hpdmUgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnksCiAgICAgICAgICAgIHVzaW5nIGl0cyBmdWxsIG5hbWUuIEl0cyBmaWxlIGluZm9ybWF0aW9uIGlzIGV4dHJhY3RlZCBhcyBhY2N1cmF0ZWx5CkBAIC0xMzkwLDcgKzE1MzIsNyBAQAogICAgICAgICBpZiB1cHBlcmRpcnMgYW5kIG5vdCBvcy5wYXRoLmV4aXN0cyh1cHBlcmRpcnMpOgogICAgICAgICAgICAgb3MubWFrZWRpcnModXBwZXJkaXJzKQogCi0gICAgICAgIGlmIG1lbWJlci5maWxlbmFtZVstMV0gPT0gJy8nOgorICAgICAgICBpZiBtZW1iZXIuaXNfZGlyKCk6CiAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2Rpcih0YXJnZXRwYXRoKToKICAgICAgICAgICAgICAgICBvcy5ta2Rpcih0YXJnZXRwYXRoKQogICAgICAgICAgICAgcmV0dXJuIHRhcmdldHBhdGgKQEAgLTE0MDcsOSArMTU0OSw5IEBACiAgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oJ0R1cGxpY2F0ZSBuYW1lOiAlcicgJSB6aW5mby5maWxlbmFtZSwgc3RhY2tsZXZlbD0zKQogICAgICAgICBpZiBzZWxmLm1vZGUgbm90IGluICgndycsICd4JywgJ2EnKToKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigid3JpdGUoKSByZXF1aXJlcyBtb2RlICd3JywgJ3gnLCBvciAnYSciKQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigid3JpdGUoKSByZXF1aXJlcyBtb2RlICd3JywgJ3gnLCBvciAnYSciKQogICAgICAgICBpZiBub3Qgc2VsZi5mcDoKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCiAgICAgICAgICAgICAgICAgIkF0dGVtcHQgdG8gd3JpdGUgWklQIGFyY2hpdmUgdGhhdCB3YXMgYWxyZWFkeSBjbG9zZWQiKQogICAgICAgICBfY2hlY2tfY29tcHJlc3Npb24oemluZm8uY29tcHJlc3NfdHlwZSkKICAgICAgICAgaWYgbm90IHNlbGYuX2FsbG93WmlwNjQ6CkBAIC0xNDI4LDEwNSArMTU3MCw0MyBAQAogICAgICAgICAiIiJQdXQgdGhlIGJ5dGVzIGZyb20gZmlsZW5hbWUgaW50byB0aGUgYXJjaGl2ZSB1bmRlciB0aGUgbmFtZQogICAgICAgICBhcmNuYW1lLiIiIgogICAgICAgICBpZiBub3Qgc2VsZi5mcDoKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCiAgICAgICAgICAgICAgICAgIkF0dGVtcHQgdG8gd3JpdGUgdG8gWklQIGFyY2hpdmUgdGhhdCB3YXMgYWxyZWFkeSBjbG9zZWQiKQorICAgICAgICBpZiBzZWxmLl93cml0aW5nOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKKyAgICAgICAgICAgICAgICAiQ2FuJ3Qgd3JpdGUgdG8gWklQIGFyY2hpdmUgd2hpbGUgYW4gb3BlbiB3cml0aW5nIGhhbmRsZSBleGlzdHMiCisgICAgICAgICAgICApCiAKLSAgICAgICAgc3QgPSBvcy5zdGF0KGZpbGVuYW1lKQotICAgICAgICBpc2RpciA9IHN0YXQuU19JU0RJUihzdC5zdF9tb2RlKQotICAgICAgICBtdGltZSA9IHRpbWUubG9jYWx0aW1lKHN0LnN0X210aW1lKQotICAgICAgICBkYXRlX3RpbWUgPSBtdGltZVswOjZdCi0gICAgICAgICMgQ3JlYXRlIFppcEluZm8gaW5zdGFuY2UgdG8gc3RvcmUgZmlsZSBpbmZvcm1hdGlvbgotICAgICAgICBpZiBhcmNuYW1lIGlzIE5vbmU6Ci0gICAgICAgICAgICBhcmNuYW1lID0gZmlsZW5hbWUKLSAgICAgICAgYXJjbmFtZSA9IG9zLnBhdGgubm9ybXBhdGgob3MucGF0aC5zcGxpdGRyaXZlKGFyY25hbWUpWzFdKQotICAgICAgICB3aGlsZSBhcmNuYW1lWzBdIGluIChvcy5zZXAsIG9zLmFsdHNlcCk6Ci0gICAgICAgICAgICBhcmNuYW1lID0gYXJjbmFtZVsxOl0KLSAgICAgICAgaWYgaXNkaXI6Ci0gICAgICAgICAgICBhcmNuYW1lICs9ICcvJwotICAgICAgICB6aW5mbyA9IFppcEluZm8oYXJjbmFtZSwgZGF0ZV90aW1lKQotICAgICAgICB6aW5mby5leHRlcm5hbF9hdHRyID0gKHN0WzBdICYgMHhGRkZGKSA8PCAxNiAgICAgICMgVW5peCBhdHRyaWJ1dGVzCi0gICAgICAgIGlmIGlzZGlyOgotICAgICAgICAgICAgemluZm8uY29tcHJlc3NfdHlwZSA9IFpJUF9TVE9SRUQKLSAgICAgICAgZWxpZiBjb21wcmVzc190eXBlIGlzIE5vbmU6Ci0gICAgICAgICAgICB6aW5mby5jb21wcmVzc190eXBlID0gc2VsZi5jb21wcmVzc2lvbgorICAgICAgICB6aW5mbyA9IFppcEluZm8uZnJvbV9maWxlKGZpbGVuYW1lLCBhcmNuYW1lKQorCisgICAgICAgIGlmIHppbmZvLmlzX2RpcigpOgorICAgICAgICAgICAgemluZm8uY29tcHJlc3Nfc2l6ZSA9IDAKKyAgICAgICAgICAgIHppbmZvLkNSQyA9IDAKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3R5cGUgPSBjb21wcmVzc190eXBlCisgICAgICAgICAgICBpZiBjb21wcmVzc190eXBlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3R5cGUgPSBjb21wcmVzc190eXBlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3R5cGUgPSBzZWxmLmNvbXByZXNzaW9uCiAKLSAgICAgICAgemluZm8uZmlsZV9zaXplID0gc3Quc3Rfc2l6ZQotICAgICAgICB6aW5mby5mbGFnX2JpdHMgPSAweDAwCi0gICAgICAgIHdpdGggc2VsZi5fbG9jazoKLSAgICAgICAgICAgIGlmIHNlbGYuX3NlZWthYmxlOgotICAgICAgICAgICAgICAgIHNlbGYuZnAuc2VlayhzZWxmLnN0YXJ0X2RpcikKLSAgICAgICAgICAgIHppbmZvLmhlYWRlcl9vZmZzZXQgPSBzZWxmLmZwLnRlbGwoKSAgICAjIFN0YXJ0IG9mIGhlYWRlciBieXRlcwotICAgICAgICAgICAgaWYgemluZm8uY29tcHJlc3NfdHlwZSA9PSBaSVBfTFpNQToKKyAgICAgICAgaWYgemluZm8uaXNfZGlyKCk6CisgICAgICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5fc2Vla2FibGU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZnAuc2VlayhzZWxmLnN0YXJ0X2RpcikKKyAgICAgICAgICAgICAgICB6aW5mby5oZWFkZXJfb2Zmc2V0ID0gc2VsZi5mcC50ZWxsKCkgICMgU3RhcnQgb2YgaGVhZGVyIGJ5dGVzCisgICAgICAgICAgICAgICAgaWYgemluZm8uY29tcHJlc3NfdHlwZSA9PSBaSVBfTFpNQToKICAgICAgICAgICAgICAgICAjIENvbXByZXNzZWQgZGF0YSBpbmNsdWRlcyBhbiBlbmQtb2Ytc3RyZWFtIChFT1MpIG1hcmtlcgotICAgICAgICAgICAgICAgIHppbmZvLmZsYWdfYml0cyB8PSAweDAyCisgICAgICAgICAgICAgICAgICAgIHppbmZvLmZsYWdfYml0cyB8PSAweDAyCiAKLSAgICAgICAgICAgIHNlbGYuX3dyaXRlY2hlY2soemluZm8pCi0gICAgICAgICAgICBzZWxmLl9kaWRNb2RpZnkgPSBUcnVlCisgICAgICAgICAgICAgICAgc2VsZi5fd3JpdGVjaGVjayh6aW5mbykKKyAgICAgICAgICAgICAgICBzZWxmLl9kaWRNb2RpZnkgPSBUcnVlCiAKLSAgICAgICAgICAgIGlmIGlzZGlyOgotICAgICAgICAgICAgICAgIHppbmZvLmZpbGVfc2l6ZSA9IDAKLSAgICAgICAgICAgICAgICB6aW5mby5jb21wcmVzc19zaXplID0gMAotICAgICAgICAgICAgICAgIHppbmZvLkNSQyA9IDAKLSAgICAgICAgICAgICAgICB6aW5mby5leHRlcm5hbF9hdHRyIHw9IDB4MTAgICMgTVMtRE9TIGRpcmVjdG9yeSBmbGFnCiAgICAgICAgICAgICAgICAgc2VsZi5maWxlbGlzdC5hcHBlbmQoemluZm8pCiAgICAgICAgICAgICAgICAgc2VsZi5OYW1lVG9JbmZvW3ppbmZvLmZpbGVuYW1lXSA9IHppbmZvCiAgICAgICAgICAgICAgICAgc2VsZi5mcC53cml0ZSh6aW5mby5GaWxlSGVhZGVyKEZhbHNlKSkKICAgICAgICAgICAgICAgICBzZWxmLnN0YXJ0X2RpciA9IHNlbGYuZnAudGVsbCgpCi0gICAgICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgICAgIGNtcHIgPSBfZ2V0X2NvbXByZXNzb3IoemluZm8uY29tcHJlc3NfdHlwZSkKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9zZWVrYWJsZToKLSAgICAgICAgICAgICAgICB6aW5mby5mbGFnX2JpdHMgfD0gMHgwOAotICAgICAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAicmIiKSBhcyBmcDoKLSAgICAgICAgICAgICAgICAjIE11c3Qgb3ZlcndyaXRlIENSQyBhbmQgc2l6ZXMgd2l0aCBjb3JyZWN0IGRhdGEgbGF0ZXIKLSAgICAgICAgICAgICAgICB6aW5mby5DUkMgPSBDUkMgPSAwCi0gICAgICAgICAgICAgICAgemluZm8uY29tcHJlc3Nfc2l6ZSA9IGNvbXByZXNzX3NpemUgPSAwCi0gICAgICAgICAgICAgICAgIyBDb21wcmVzc2VkIHNpemUgY2FuIGJlIGxhcmdlciB0aGFuIHVuY29tcHJlc3NlZCBzaXplCi0gICAgICAgICAgICAgICAgemlwNjQgPSBzZWxmLl9hbGxvd1ppcDY0IGFuZCBcCi0gICAgICAgICAgICAgICAgICAgIHppbmZvLmZpbGVfc2l6ZSAqIDEuMDUgPiBaSVA2NF9MSU1JVAotICAgICAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoemluZm8uRmlsZUhlYWRlcih6aXA2NCkpCi0gICAgICAgICAgICAgICAgZmlsZV9zaXplID0gMAotICAgICAgICAgICAgICAgIHdoaWxlIDE6Ci0gICAgICAgICAgICAgICAgICAgIGJ1ZiA9IGZwLnJlYWQoMTAyNCAqIDgpCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBidWY6Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICBmaWxlX3NpemUgPSBmaWxlX3NpemUgKyBsZW4oYnVmKQotICAgICAgICAgICAgICAgICAgICBDUkMgPSBjcmMzMihidWYsIENSQykKLSAgICAgICAgICAgICAgICAgICAgaWYgY21wcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiA9IGNtcHIuY29tcHJlc3MoYnVmKQotICAgICAgICAgICAgICAgICAgICAgICAgY29tcHJlc3Nfc2l6ZSA9IGNvbXByZXNzX3NpemUgKyBsZW4oYnVmKQotICAgICAgICAgICAgICAgICAgICBzZWxmLmZwLndyaXRlKGJ1ZikKLSAgICAgICAgICAgIGlmIGNtcHI6Ci0gICAgICAgICAgICAgICAgYnVmID0gY21wci5mbHVzaCgpCi0gICAgICAgICAgICAgICAgY29tcHJlc3Nfc2l6ZSA9IGNvbXByZXNzX3NpemUgKyBsZW4oYnVmKQotICAgICAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoYnVmKQotICAgICAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3NpemUgPSBjb21wcmVzc19zaXplCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3NpemUgPSBmaWxlX3NpemUKLSAgICAgICAgICAgIHppbmZvLkNSQyA9IENSQwotICAgICAgICAgICAgemluZm8uZmlsZV9zaXplID0gZmlsZV9zaXplCi0gICAgICAgICAgICBpZiB6aW5mby5mbGFnX2JpdHMgJiAweDA4OgotICAgICAgICAgICAgICAgICMgV3JpdGUgQ1JDIGFuZCBmaWxlIHNpemVzIGFmdGVyIHRoZSBmaWxlIGRhdGEKLSAgICAgICAgICAgICAgICBmbXQgPSAnPExRUScgaWYgemlwNjQgZWxzZSAnPExMTCcKLSAgICAgICAgICAgICAgICBzZWxmLmZwLndyaXRlKHN0cnVjdC5wYWNrKGZtdCwgemluZm8uQ1JDLCB6aW5mby5jb21wcmVzc19zaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemluZm8uZmlsZV9zaXplKSkKLSAgICAgICAgICAgICAgICBzZWxmLnN0YXJ0X2RpciA9IHNlbGYuZnAudGVsbCgpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGlmIG5vdCB6aXA2NCBhbmQgc2VsZi5fYWxsb3daaXA2NDoKLSAgICAgICAgICAgICAgICAgICAgaWYgZmlsZV9zaXplID4gWklQNjRfTElNSVQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0ZpbGUgc2l6ZSBoYXMgaW5jcmVhc2VkIGR1cmluZyBjb21wcmVzc2luZycpCi0gICAgICAgICAgICAgICAgICAgIGlmIGNvbXByZXNzX3NpemUgPiBaSVA2NF9MSU1JVDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignQ29tcHJlc3NlZCBzaXplIGxhcmdlciB0aGFuIHVuY29tcHJlc3NlZCBzaXplJykKLSAgICAgICAgICAgICAgICAjIFNlZWsgYmFja3dhcmRzIGFuZCB3cml0ZSBmaWxlIGhlYWRlciAod2hpY2ggd2lsbCBub3cgaW5jbHVkZQotICAgICAgICAgICAgICAgICMgY29ycmVjdCBDUkMgYW5kIGZpbGUgc2l6ZXMpCi0gICAgICAgICAgICAgICAgc2VsZi5zdGFydF9kaXIgPSBzZWxmLmZwLnRlbGwoKSAjIFByZXNlcnZlIGN1cnJlbnQgcG9zaXRpb24gaW4gZmlsZQotICAgICAgICAgICAgICAgIHNlbGYuZnAuc2Vlayh6aW5mby5oZWFkZXJfb2Zmc2V0KQotICAgICAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoemluZm8uRmlsZUhlYWRlcih6aXA2NCkpCi0gICAgICAgICAgICAgICAgc2VsZi5mcC5zZWVrKHNlbGYuc3RhcnRfZGlyKQotICAgICAgICAgICAgc2VsZi5maWxlbGlzdC5hcHBlbmQoemluZm8pCi0gICAgICAgICAgICBzZWxmLk5hbWVUb0luZm9bemluZm8uZmlsZW5hbWVdID0gemluZm8KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgInJiIikgYXMgc3JjLCBzZWxmLm9wZW4oemluZm8sICd3JykgYXMgZGVzdDoKKyAgICAgICAgICAgICAgICBzaHV0aWwuY29weWZpbGVvYmooc3JjLCBkZXN0LCAxMDI0KjgpCiAKICAgICBkZWYgd3JpdGVzdHIoc2VsZiwgemluZm9fb3JfYXJjbmFtZSwgZGF0YSwgY29tcHJlc3NfdHlwZT1Ob25lKToKICAgICAgICAgIiIiV3JpdGUgYSBmaWxlIGludG8gdGhlIGFyY2hpdmUuICBUaGUgY29udGVudHMgaXMgJ2RhdGEnLCB3aGljaApAQCAtMTU0OSw0NyArMTYyOSwyMCBAQAogICAgICAgICAgICAgemluZm8gPSB6aW5mb19vcl9hcmNuYW1lCiAKICAgICAgICAgaWYgbm90IHNlbGYuZnA6Ci0gICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICAgICAgICJBdHRlbXB0IHRvIHdyaXRlIHRvIFpJUCBhcmNoaXZlIHRoYXQgd2FzIGFscmVhZHkgY2xvc2VkIikKKyAgICAgICAgaWYgc2VsZi5fd3JpdGluZzoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCisgICAgICAgICAgICAgICAgIkNhbid0IHdyaXRlIHRvIFpJUCBhcmNoaXZlIHdoaWxlIGFuIG9wZW4gd3JpdGluZyBoYW5kbGUgZXhpc3RzLiIKKyAgICAgICAgICAgICkKKworICAgICAgICBpZiBjb21wcmVzc190eXBlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgemluZm8uY29tcHJlc3NfdHlwZSA9IGNvbXByZXNzX3R5cGUKIAogICAgICAgICB6aW5mby5maWxlX3NpemUgPSBsZW4oZGF0YSkgICAgICAgICAgICAjIFVuY29tcHJlc3NlZCBzaXplCiAgICAgICAgIHdpdGggc2VsZi5fbG9jazoKLSAgICAgICAgICAgIGlmIHNlbGYuX3NlZWthYmxlOgotICAgICAgICAgICAgICAgIHNlbGYuZnAuc2VlayhzZWxmLnN0YXJ0X2RpcikKLSAgICAgICAgICAgIHppbmZvLmhlYWRlcl9vZmZzZXQgPSBzZWxmLmZwLnRlbGwoKSAgICAjIFN0YXJ0IG9mIGhlYWRlciBkYXRhCi0gICAgICAgICAgICBpZiBjb21wcmVzc190eXBlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3R5cGUgPSBjb21wcmVzc190eXBlCi0gICAgICAgICAgICB6aW5mby5oZWFkZXJfb2Zmc2V0ID0gc2VsZi5mcC50ZWxsKCkgICAgIyBTdGFydCBvZiBoZWFkZXIgZGF0YQotICAgICAgICAgICAgaWYgY29tcHJlc3NfdHlwZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICB6aW5mby5jb21wcmVzc190eXBlID0gY29tcHJlc3NfdHlwZQotICAgICAgICAgICAgaWYgemluZm8uY29tcHJlc3NfdHlwZSA9PSBaSVBfTFpNQToKLSAgICAgICAgICAgICAgICAjIENvbXByZXNzZWQgZGF0YSBpbmNsdWRlcyBhbiBlbmQtb2Ytc3RyZWFtIChFT1MpIG1hcmtlcgotICAgICAgICAgICAgICAgIHppbmZvLmZsYWdfYml0cyB8PSAweDAyCi0KLSAgICAgICAgICAgIHNlbGYuX3dyaXRlY2hlY2soemluZm8pCi0gICAgICAgICAgICBzZWxmLl9kaWRNb2RpZnkgPSBUcnVlCi0gICAgICAgICAgICB6aW5mby5DUkMgPSBjcmMzMihkYXRhKSAgICAgICAjIENSQy0zMiBjaGVja3N1bQotICAgICAgICAgICAgY28gPSBfZ2V0X2NvbXByZXNzb3IoemluZm8uY29tcHJlc3NfdHlwZSkKLSAgICAgICAgICAgIGlmIGNvOgotICAgICAgICAgICAgICAgIGRhdGEgPSBjby5jb21wcmVzcyhkYXRhKSArIGNvLmZsdXNoKCkKLSAgICAgICAgICAgICAgICB6aW5mby5jb21wcmVzc19zaXplID0gbGVuKGRhdGEpICAgICMgQ29tcHJlc3NlZCBzaXplCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3NpemUgPSB6aW5mby5maWxlX3NpemUKLSAgICAgICAgICAgIHppcDY0ID0gemluZm8uZmlsZV9zaXplID4gWklQNjRfTElNSVQgb3IgXAotICAgICAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3NpemUgPiBaSVA2NF9MSU1JVAotICAgICAgICAgICAgaWYgemlwNjQgYW5kIG5vdCBzZWxmLl9hbGxvd1ppcDY0OgotICAgICAgICAgICAgICAgIHJhaXNlIExhcmdlWmlwRmlsZSgiRmlsZXNpemUgd291bGQgcmVxdWlyZSBaSVA2NCBleHRlbnNpb25zIikKLSAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoemluZm8uRmlsZUhlYWRlcih6aXA2NCkpCi0gICAgICAgICAgICBzZWxmLmZwLndyaXRlKGRhdGEpCi0gICAgICAgICAgICBpZiB6aW5mby5mbGFnX2JpdHMgJiAweDA4OgotICAgICAgICAgICAgICAgICMgV3JpdGUgQ1JDIGFuZCBmaWxlIHNpemVzIGFmdGVyIHRoZSBmaWxlIGRhdGEKLSAgICAgICAgICAgICAgICBmbXQgPSAnPExRUScgaWYgemlwNjQgZWxzZSAnPExMTCcKLSAgICAgICAgICAgICAgICBzZWxmLmZwLndyaXRlKHN0cnVjdC5wYWNrKGZtdCwgemluZm8uQ1JDLCB6aW5mby5jb21wcmVzc19zaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemluZm8uZmlsZV9zaXplKSkKLSAgICAgICAgICAgIHNlbGYuZnAuZmx1c2goKQotICAgICAgICAgICAgc2VsZi5zdGFydF9kaXIgPSBzZWxmLmZwLnRlbGwoKQotICAgICAgICAgICAgc2VsZi5maWxlbGlzdC5hcHBlbmQoemluZm8pCi0gICAgICAgICAgICBzZWxmLk5hbWVUb0luZm9bemluZm8uZmlsZW5hbWVdID0gemluZm8KKyAgICAgICAgICAgIHdpdGggc2VsZi5vcGVuKHppbmZvLCBtb2RlPSd3JykgYXMgZGVzdDoKKyAgICAgICAgICAgICAgICBkZXN0LndyaXRlKGRhdGEpCiAKICAgICBkZWYgX19kZWxfXyhzZWxmKToKICAgICAgICAgIiIiQ2FsbCB0aGUgImNsb3NlKCkiIG1ldGhvZCBpbiBjYXNlIHRoZSB1c2VyIGZvcmdvdC4iIiIKQEAgLTE2MDEsNiArMTY1NCwxMSBAQAogICAgICAgICBpZiBzZWxmLmZwIGlzIE5vbmU6CiAgICAgICAgICAgICByZXR1cm4KIAorICAgICAgICBpZiBzZWxmLl93cml0aW5nOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ2FuJ3QgY2xvc2UgdGhlIFpJUCBmaWxlIHdoaWxlIHRoZXJlIGlzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFuIG9wZW4gd3JpdGluZyBoYW5kbGUgb24gaXQuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNsb3NlIHRoZSB3cml0aW5nIGhhbmRsZSBiZWZvcmUgY2xvc2luZyB0aGUgemlwLiIpCisKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaWYgc2VsZi5tb2RlIGluICgndycsICd4JywgJ2EnKSBhbmQgc2VsZi5fZGlkTW9kaWZ5OiAjIHdyaXRlIGVuZGluZyByZWNvcmRzCiAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgpAQCAtMTc0NSw3ICsxODAzLDcgQEAKICAgICAgICAgaWYgZmlsdGVyZnVuYyBhbmQgbm90IGZpbHRlcmZ1bmMocGF0aG5hbWUpOgogICAgICAgICAgICAgaWYgc2VsZi5kZWJ1ZzoKICAgICAgICAgICAgICAgICBsYWJlbCA9ICdwYXRoJyBpZiBvcy5wYXRoLmlzZGlyKHBhdGhuYW1lKSBlbHNlICdmaWxlJwotICAgICAgICAgICAgICAgIHByaW50KCclcyAiJXMiIHNraXBwZWQgYnkgZmlsdGVyZnVuYycgJSAobGFiZWwsIHBhdGhuYW1lKSkKKyAgICAgICAgICAgICAgICBwcmludCgnJXMgJXIgc2tpcHBlZCBieSBmaWx0ZXJmdW5jJyAlIChsYWJlbCwgcGF0aG5hbWUpKQogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGRpciwgbmFtZSA9IG9zLnBhdGguc3BsaXQocGF0aG5hbWUpCiAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIocGF0aG5hbWUpOgpAQCAtMTc3Niw3ICsxODM0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgZWxpZiBleHQgPT0gIi5weSI6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBmaWx0ZXJmdW5jIGFuZCBub3QgZmlsdGVyZnVuYyhwYXRoKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgnZmlsZSAiJXMiIHNraXBwZWQgYnkgZmlsdGVyZnVuYycgJSBwYXRoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgnZmlsZSAlciBza2lwcGVkIGJ5IGZpbHRlcmZ1bmMnICUgcGF0aCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgICAgICAgZm5hbWUsIGFyY25hbWUgPSBzZWxmLl9nZXRfY29kZW5hbWUocGF0aFswOi0zXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VuYW1lKQpAQCAtMTc5Myw3ICsxODUxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgaWYgZXh0ID09ICIucHkiOgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgZmlsdGVyZnVuYyBhbmQgbm90IGZpbHRlcmZ1bmMocGF0aCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5kZWJ1ZzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ2ZpbGUgIiVzIiBza2lwcGVkIGJ5IGZpbHRlcmZ1bmMnICUgcGF0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ2ZpbGUgJXIgc2tpcHBlZCBieSBmaWx0ZXJmdW5jJyAlIHBhdGgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICAgICAgIGZuYW1lLCBhcmNuYW1lID0gc2VsZi5fZ2V0X2NvZGVuYW1lKHBhdGhbMDotM10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlbmFtZSkKZGlmZiAtLWdpdCBhL01hYy9CdWlsZFNjcmlwdC9idWlsZC1pbnN0YWxsZXIucHkgYi9NYWMvQnVpbGRTY3JpcHQvYnVpbGQtaW5zdGFsbGVyLnB5CmluZGV4IGM3NmM0ZjEuLjhkZmQwOTIgMTAwNzU1Ci0tLSBhL01hYy9CdWlsZFNjcmlwdC9idWlsZC1pbnN0YWxsZXIucHkKKysrIGIvTWFjL0J1aWxkU2NyaXB0L2J1aWxkLWluc3RhbGxlci5weQpAQCAtMTAxLDYgKzEwMSw3IEBACiAKIEZXX1BSRUZJWCA9IFsiTGlicmFyeSIsICJGcmFtZXdvcmtzIiwgIlB5dGhvbi5mcmFtZXdvcmsiXQogRldfVkVSU0lPTl9QUkVGSVggPSAiLS11bmRlZmluZWQtLSIgIyBpbml0aWFsaXplZCBpbiBwYXJzZU9wdGlvbnMKK0ZXX1NTTF9ESVJFQ1RPUlkgPSAiLS11bmRlZmluZWQtLSIgIyBpbml0aWFsaXplZCBpbiBwYXJzZU9wdGlvbnMKIAogIyBUaGUgZGlyZWN0b3J5IHdlJ2xsIHVzZSB0byBjcmVhdGUgdGhlIGJ1aWxkICh3aWxsIGJlIGVyYXNlZCBhbmQgcmVjcmVhdGVkKQogV09SS0RJUiA9ICIvdG1wL19weSIKQEAgLTIwNiw0MSArMjA3LDExIEBACiAKICAgICBMVF8xMF81ID0gYm9vbChnZXREZXB0YXJnZXRUdXBsZSgpIDwgKDEwLCA1KSkKIAotICAgIGlmIG5vdCAoMTAsIDUpIDwgZ2V0RGVwdGFyZ2V0VHVwbGUoKSA8ICgxMCwgMTApOgotICAgICAgICAjIFRoZSBPcGVuU1NMIGxpYnMgc2hpcHBlZCB3aXRoIE9TIFggMTAuNSBhbmQgZWFybGllciBhcmUKLSAgICAgICAgIyBob3BlbGVzc2x5IG91dC1vZi1kYXRlIGFuZCBkbyBub3QgaW5jbHVkZSBBcHBsZSdzIHRpZS1pbiB0bwotICAgICAgICAjIHRoZSByb290IGNlcnRpZmljYXRlcyBpbiB0aGUgdXNlciBhbmQgc3lzdGVtIGtleWNoYWlucyB2aWEgVEVBCi0gICAgICAgICMgdGhhdCB3YXMgaW50cm9kdWNlZCBpbiBPUyBYIDEwLjYuICBOb3RlIHRoYXQgdGhpcyBhcHBsaWVzIHRvCi0gICAgICAgICMgcHJvZ3JhbXMgYnVpbHQgYW5kIGxpbmtlZCB3aXRoIGEgMTAuNSBTREsgZXZlbiB3aGVuIHJ1biBvbgotICAgICAgICAjIG5ld2VyIHZlcnNpb25zIG9mIE9TIFguCi0gICAgICAgICMKLSAgICAgICAgIyBEZWFsaW5nIHdpdGggQ0FzIGlzIG1lc3N5LiAgRm9yIG5vdywganVzdCBzdXBwbHkgYQotICAgICAgICAjIGxvY2FsIGxpYnNzbCBhbmQgbGliY3J5cHRvIGZvciB0aGUgb2xkZXIgaW5zdGFsbGVyIHZhcmlhbnRzCi0gICAgICAgICMgKGUuZy4gdGhlIHB5dGhvbi5vcmcgMTAuNSsgMzItYml0LW9ubHkgaW5zdGFsbGVyKSB0aGF0IHVzZSB0aGUKLSAgICAgICAgIyBzYW1lIGRlZmF1bHQgc3NsIGNlcnRmaWxlIGxvY2F0aW9uIGFzIHRoZSBzeXN0ZW0gbGlicyBkbzoKLSAgICAgICAgIyAgIC9TeXN0ZW0vTGlicmFyeS9PcGVuU1NML2NlcnQucGVtCi0gICAgICAgICMgVGhlbiBhdCBsZWFzdCBUTFMgY29ubmVjdGlvbnMgY2FuIGJlIG5lZ290aWF0ZWQgd2l0aCBzaXRlcyB0aGF0Ci0gICAgICAgICMgdXNlIHNoYS0yNTYgY2VydHMgbGlrZSBweXRob24ub3JnLCBhc3N1bWluZyB0aGUgcHJvcGVyIENBIGNlcnRzCi0gICAgICAgICMgaGF2ZSBiZWVuIHN1cHBsaWVkLiAgVGhlIGRlZmF1bHQgQ0EgY2VydCBtYW5hZ2VtZW50IGlzc3VlcyBmb3IKLSAgICAgICAgIyAxMC41IGFuZCBlYXJsaWVyIGJ1aWxkcyBhcmUgdGhlIHNhbWUgYXMgYmVmb3JlLCBvdGhlciB0aGFuIGl0IGlzCi0gICAgICAgICMgbm93IG1vcmUgb2J2aW91cyB3aXRoIGNlcnQgY2hlY2tpbmcgZW5hYmxlZCBieSBkZWZhdWx0IGluIHRoZQotICAgICAgICAjIHN0YW5kYXJkIGxpYnJhcnkuCi0gICAgICAgICMKLSAgICAgICAgIyBGb3IgYnVpbGRzIHdpdGggMTAuNiB0aHJvdWdoIDEwLjkgU0RLcywKLSAgICAgICAgIyBjb250aW51ZSB0byB1c2UgdGhlIGRlcHJlY2F0ZWQgYnV0Ci0gICAgICAgICMgbGVzcyBvdXQtb2YtZGF0ZSBBcHBsZSAwLjkuOCBsaWJzIGZvciBub3cuICBXaGlsZSB0aGV5IGFyZSBsZXNzCi0gICAgICAgICMgc2VjdXJlIHRoYW4gdXNpbmcgYW4gdXAtdG8tZGF0ZSAxLjAuMSB2ZXJzaW9uLCBkb2luZyBzbwotICAgICAgICAjIGF2b2lkcyB0aGUgYmlnIHByb2JsZW1zIG9mIGZvcmNpbmcgdXNlcnMgdG8gaGF2ZSB0byBtYW5hZ2UKLSAgICAgICAgIyBkZWZhdWx0IENBcyB0aGVtc2VsdmVzLCB0aGFua3MgdG8gdGhlIEFwcGxlIGxpYnMgdXNpbmcgcHJpdmF0ZSBURUEKLSAgICAgICAgIyBBUElzIGZvciBjZXJ0IHZhbGlkYXRpb24gZnJvbSBrZXljaGFpbnMgaWYgdmFsaWRhdGlvbiB1c2luZyB0aGUKLSAgICAgICAgIyBzdGFuZGFyZCBPcGVuU1NMIGxvY2F0aW9ucyAoL1N5c3RlbS9MaWJyYXJ5L09wZW5TU0wsIG5vcm1hbGx5IGVtcHR5KQotICAgICAgICAjIGZhaWxzLgotICAgICAgICAjCi0gICAgICAgICMgU2luY2UgQXBwbGUgcmVtb3ZlZCB0aGUgaGVhZGVyIGZpbGVzIGZvciB0aGUgZGVwcmVjYXRlZCBzeXN0ZW0KLSAgICAgICAgIyBPcGVuU1NMIGFzIG9mIHRoZSBYY29kZSA3IHJlbGVhc2UgKGZvciBPUyBYIDEwLjEwKyksIHdlIGRvIG5vdAotICAgICAgICAjIGhhdmUgbXVjaCBjaG9pY2UgYnV0IHRvIGJ1aWxkIG91ciBvd24gY29weSBoZXJlLCB0b28uCisgICAgIyBTaW5jZSBBcHBsZSByZW1vdmVkIHRoZSBoZWFkZXIgZmlsZXMgZm9yIHRoZSBkZXByZWNhdGVkIHN5c3RlbQorICAgICMgT3BlblNTTCBhcyBvZiB0aGUgWGNvZGUgNyByZWxlYXNlIChmb3IgT1MgWCAxMC4xMCspLCB3ZSBkbyBub3QKKyAgICAjIGhhdmUgbXVjaCBjaG9pY2UgYnV0IHRvIGJ1aWxkIG91ciBvd24gY29weSBoZXJlLCB0b28uCiAKLSAgICAgICAgcmVzdWx0LmV4dGVuZChbCisgICAgcmVzdWx0LmV4dGVuZChbCiAgICAgICAgICAgZGljdCgKICAgICAgICAgICAgICAgbmFtZT0iT3BlblNTTCAxLjAuMmoiLAogICAgICAgICAgICAgICB1cmw9Imh0dHBzOi8vd3d3Lm9wZW5zc2wub3JnL3NvdXJjZS9vcGVuc3NsLTEuMC4yai50YXIuZ3oiLApAQCAtMjUyLDcgKzIyMyw3IEBACiAgICAgICAgICAgICAgIGNvbmZpZ3VyZT1Ob25lLAogICAgICAgICAgICAgICBpbnN0YWxsPU5vbmUsCiAgICAgICAgICAgKSwKLSAgICAgICAgXSkKKyAgICBdKQogCiAjICAgRGlzYWJsZSBmb3Igbm93CiAgICAgaWYgRmFsc2U6ICAgIyBpZiBnZXREZXB0YXJnZXRUdXBsZSgpID4gKDEwLCA1KToKQEAgLTI5OSw5ICsyNzAsOSBAQAogICAgIGlmIFBZVEhPTl8zOgogICAgICAgICByZXN1bHQuZXh0ZW5kKFsKICAgICAgICAgICBkaWN0KAotICAgICAgICAgICAgICBuYW1lPSJYWiA1LjAuNSIsCi0gICAgICAgICAgICAgIHVybD0iaHR0cDovL3R1a2Fhbmkub3JnL3h6L3h6LTUuMC41LnRhci5neiIsCi0gICAgICAgICAgICAgIGNoZWNrc3VtPScxOWQ5MjRlMDY2YjZmZmYwYmM5ZDE5ODFiNGU1MzE5NicsCisgICAgICAgICAgICAgIG5hbWU9IlhaIDUuMi4yIiwKKyAgICAgICAgICAgICAgdXJsPSJodHRwOi8vdHVrYWFuaS5vcmcveHoveHotNS4yLjIudGFyLmd6IiwKKyAgICAgICAgICAgICAgY2hlY2tzdW09JzdjZjZhODU0NGE3ZGFlOGU4MTA2ZmRmN2FkZGZhMjhjJywKICAgICAgICAgICAgICAgY29uZmlndXJlX3ByZT1bCiAgICAgICAgICAgICAgICAgICAgICctLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZycsCiAgICAgICAgICAgICAgIF0KQEAgLTM0NCwxMCArMzE1LDExIEBACiAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICksCiAgICAgICAgICAgZGljdCgKLSAgICAgICAgICAgICAgbmFtZT0iU1FMaXRlIDMuOC4xMSIsCi0gICAgICAgICAgICAgIHVybD0iaHR0cHM6Ly93d3cuc3FsaXRlLm9yZy8yMDE1L3NxbGl0ZS1hdXRvY29uZi0zMDgxMTAwLnRhci5neiIsCi0gICAgICAgICAgICAgIGNoZWNrc3VtPSc3N2I0NTE5MjUxMjEwMjhiZWZiZGRiZjQ1ZWEyYmM0OScsCisgICAgICAgICAgICAgIG5hbWU9IlNRTGl0ZSAzLjE0LjIiLAorICAgICAgICAgICAgICB1cmw9Imh0dHBzOi8vd3d3LnNxbGl0ZS5vcmcvMjAxNi9zcWxpdGUtYXV0b2NvbmYtMzE0MDIwMC50YXIuZ3oiLAorICAgICAgICAgICAgICBjaGVja3N1bT0nOTBjNTNjYWNiODExZGIyN2Y5OTBiODI5MmJkOTYxNTknLAogICAgICAgICAgICAgICBleHRyYV9jZmxhZ3M9KCctT3MgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICctRFNRTElURV9FTkFCTEVfRlRTNSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1EU1FMSVRFX0VOQUJMRV9GVFM0ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLURTUUxJVEVfRU5BQkxFX0ZUUzNfUEFSRU5USEVTSVMgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICctRFNRTElURV9FTkFCTEVfUlRSRUUgJwpAQCAtNjc1LDYgKzY0Nyw3IEBACiAgICAgZ2xvYmFsIFdPUktESVIsIERFUFNSQywgU0RLUEFUSCwgU1JDRElSLCBERVBUQVJHRVQKICAgICBnbG9iYWwgVU5JVkVSU0FMT1BUUywgVU5JVkVSU0FMQVJDSFMsIEFSQ0hMSVNULCBDQywgQ1hYCiAgICAgZ2xvYmFsIEZXX1ZFUlNJT05fUFJFRklYCisgICAgZ2xvYmFsIEZXX1NTTF9ESVJFQ1RPUlkKIAogICAgIGlmIGFyZ3MgaXMgTm9uZToKICAgICAgICAgYXJncyA9IHN5cy5hcmd2WzE6XQpAQCAtNzM1LDYgKzcwOCw3IEBACiAgICAgQ0MsIENYWCA9IGdldFRhcmdldENvbXBpbGVycygpCiAKICAgICBGV19WRVJTSU9OX1BSRUZJWCA9IEZXX1BSRUZJWFs6XSArIFsiVmVyc2lvbnMiLCBnZXRWZXJzaW9uKCldCisgICAgRldfU1NMX0RJUkVDVE9SWSA9IEZXX1ZFUlNJT05fUFJFRklYWzpdICsgWyJldGMiLCAib3BlbnNzbCJdCiAKICAgICBwcmludCgiLS0gU2V0dGluZ3M6IikKICAgICBwcmludCgiICAgKiBTb3VyY2UgZGlyZWN0b3J5OiAgICAlcyIgJSBTUkNESVIpCkBAIC04NzYsNyArODUwLDcgQEAKICAgICAgICAgICAgICJzaGFyZWQiLAogICAgICAgICAgICAgIi0taW5zdGFsbF9wcmVmaXg9JXMiJXNoZWxsUXVvdGUoYXJjaGJhc2UpLAogICAgICAgICAgICAgIi0tcHJlZml4PSVzIiVvcy5wYXRoLmpvaW4oIi8iLCAqRldfVkVSU0lPTl9QUkVGSVgpLAotICAgICAgICAgICAgIi0tb3BlbnNzbGRpcj0vU3lzdGVtL0xpYnJhcnkvT3BlblNTTCIsCisgICAgICAgICAgICAiLS1vcGVuc3NsZGlyPSVzIiVvcy5wYXRoLmpvaW4oIi8iLCAqRldfU1NMX0RJUkVDVE9SWSksCiAgICAgICAgIF0KICAgICAgICAgaWYgbm9fYXNtOgogICAgICAgICAgICAgY29uZmlndXJlX29wdHMuYXBwZW5kKCJuby1hc20iKQpAQCAtMTE5NCwxMiArMTE2OCwxNCBAQAogICAgICAgICAgICAgICAgICdQeXRob24uZnJhbWV3b3JrJywgJ1ZlcnNpb25zJywgZ2V0VmVyc2lvbigpLAogICAgICAgICAgICAgICAgICdsaWInKSkpKQogCi0gICAgcGF0aF90b19saWIgPSBvcy5wYXRoLmpvaW4ocm9vdERpciwgJ0xpYnJhcnknLCAnRnJhbWV3b3JrcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQeXRob24uZnJhbWV3b3JrJywgJ1ZlcnNpb25zJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiwgJ2xpYicsICdweXRob24lcyclKHZlcnNpb24sKSkKKyAgICBmcm1EaXIgPSBvcy5wYXRoLmpvaW4ocm9vdERpciwgJ0xpYnJhcnknLCAnRnJhbWV3b3JrcycsICdQeXRob24uZnJhbWV3b3JrJykKKyAgICBmcm1EaXJWZXJzaW9uZWQgPSBvcy5wYXRoLmpvaW4oZnJtRGlyLCAnVmVyc2lvbnMnLCB2ZXJzaW9uKQorICAgIHBhdGhfdG9fbGliID0gb3MucGF0aC5qb2luKGZybURpclZlcnNpb25lZCwgJ2xpYicsICdweXRob24lcyclKHZlcnNpb24sKSkKKyAgICAjIGNyZWF0ZSBkaXJlY3RvcnkgZm9yIE9wZW5TU0wgY2VydGlmaWNhdGVzCisgICAgc3NsRGlyID0gb3MucGF0aC5qb2luKGZybURpclZlcnNpb25lZCwgJ2V0YycsICdvcGVuc3NsJykKKyAgICBvcy5tYWtlZGlycyhzc2xEaXIpCiAKICAgICBwcmludCgiRml4IGZpbGUgbW9kZXMiKQotICAgIGZybURpciA9IG9zLnBhdGguam9pbihyb290RGlyLCAnTGlicmFyeScsICdGcmFtZXdvcmtzJywgJ1B5dGhvbi5mcmFtZXdvcmsnKQogICAgIGdpZCA9IGdycC5nZXRncm5hbSgnYWRtaW4nKS5ncl9naWQKIAogICAgIHNoYXJlZF9saWJfZXJyb3IgPSBGYWxzZQpAQCAtMTI0OSw2ICsxMjI1LDggQEAKICAgICAgICAgTERWRVJTSU9OID0gTERWRVJTSU9OLnJlcGxhY2UoJyQoVkVSU0lPTiknLCBWRVJTSU9OKQogICAgICAgICBMRFZFUlNJT04gPSBMRFZFUlNJT04ucmVwbGFjZSgnJChBQklGTEFHUyknLCBBQklGTEFHUykKICAgICAgICAgY29uZmlnX3N1ZmZpeCA9ICctJyArIExEVkVSU0lPTgorICAgICAgICBpZiBnZXRWZXJzaW9uTWFqb3JNaW5vcigpID49ICgzLCA2KToKKyAgICAgICAgICAgIGNvbmZpZ19zdWZmaXggPSBjb25maWdfc3VmZml4ICsgJy1kYXJ3aW4nCiAgICAgZWxzZToKICAgICAgICAgY29uZmlnX3N1ZmZpeCA9ICcnICAgICAgIyBQeXRob24gMi54CiAKQEAgLTEyNzQsNyArMTI1Miw3IEBACiAgICAgZnAud3JpdGUoZGF0YSkKICAgICBmcC5jbG9zZSgpCiAKLSAgICAjIGZpeCBfc3lzY29uZmlnZGF0YSBpZiBpdCBleGlzdHMKKyAgICAjIGZpeCBfc3lzY29uZmlnZGF0YQogICAgICMKICAgICAjIFRPRE86IG1ha2UgdGhpcyBtb3JlIHJvYnVzdCEgIHRlc3Rfc3lzY29uZmlnX21vZHVsZSBvZgogICAgICMgZGlzdHV0aWxzLnRlc3RzLnRlc3Rfc3lzY29uZmlnLlN5c2NvbmZpZ1Rlc3RDYXNlIHRlc3RzIHRoYXQKQEAgLTEyODgsMjggKzEyNjYsMzEgQEAKICAgICAjIF9zeXNjb25maWdkYXRhLnB5KS4KIAogICAgIGltcG9ydCBwcHJpbnQKLSAgICBwYXRoID0gb3MucGF0aC5qb2luKHBhdGhfdG9fbGliLCAnX3N5c2NvbmZpZ2RhdGEucHknKQotICAgIGlmIG9zLnBhdGguZXhpc3RzKHBhdGgpOgotICAgICAgICBmcCA9IG9wZW4ocGF0aCwgJ3InKQotICAgICAgICBkYXRhID0gZnAucmVhZCgpCi0gICAgICAgIGZwLmNsb3NlKCkKLSAgICAgICAgIyBjcmVhdGUgYnVpbGRfdGltZV92YXJzIGRpY3QKLSAgICAgICAgZXhlYyhkYXRhKQotICAgICAgICB2YXJzID0ge30KLSAgICAgICAgZm9yIGssIHYgaW4gYnVpbGRfdGltZV92YXJzLml0ZW1zKCk6Ci0gICAgICAgICAgICBpZiB0eXBlKHYpID09IHR5cGUoJycpOgotICAgICAgICAgICAgICAgIGZvciBwIGluIChpbmNsdWRlX3BhdGgsIGxpYl9wYXRoKToKLSAgICAgICAgICAgICAgICAgICAgdiA9IHYucmVwbGFjZSgnICcgKyBwLCAnJykKLSAgICAgICAgICAgICAgICAgICAgdiA9IHYucmVwbGFjZShwICsgJyAnLCAnJykKLSAgICAgICAgICAgIHZhcnNba10gPSB2CisgICAgaWYgZ2V0VmVyc2lvbk1ham9yTWlub3IoKSA+PSAoMywgNik6CisgICAgICAgICMgWFhYIHRoaXMgaXMgZXh0cmEtZnJhZ2lsZQorICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKHBhdGhfdG9fbGliLCAnX3N5c2NvbmZpZ2RhdGFfbV9kYXJ3aW5fZGFyd2luLnB5JykKKyAgICBlbHNlOgorICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKHBhdGhfdG9fbGliLCAnX3N5c2NvbmZpZ2RhdGEucHknKQorICAgIGZwID0gb3BlbihwYXRoLCAncicpCisgICAgZGF0YSA9IGZwLnJlYWQoKQorICAgIGZwLmNsb3NlKCkKKyAgICAjIGNyZWF0ZSBidWlsZF90aW1lX3ZhcnMgZGljdAorICAgIGV4ZWMoZGF0YSkKKyAgICB2YXJzID0ge30KKyAgICBmb3IgaywgdiBpbiBidWlsZF90aW1lX3ZhcnMuaXRlbXMoKToKKyAgICAgICAgaWYgdHlwZSh2KSA9PSB0eXBlKCcnKToKKyAgICAgICAgICAgIGZvciBwIGluIChpbmNsdWRlX3BhdGgsIGxpYl9wYXRoKToKKyAgICAgICAgICAgICAgICB2ID0gdi5yZXBsYWNlKCcgJyArIHAsICcnKQorICAgICAgICAgICAgICAgIHYgPSB2LnJlcGxhY2UocCArICcgJywgJycpCisgICAgICAgIHZhcnNba10gPSB2CiAKLSAgICAgICAgZnAgPSBvcGVuKHBhdGgsICd3JykKLSAgICAgICAgIyBkdXBsaWNhdGVkIGZyb20gc3lzY29uZmlnLl9nZW5lcmF0ZV9wb3NpeF92YXJzKCkKLSAgICAgICAgZnAud3JpdGUoJyMgc3lzdGVtIGNvbmZpZ3VyYXRpb24gZ2VuZXJhdGVkIGFuZCB1c2VkIGJ5JwotICAgICAgICAgICAgICAgICAgICAnIHRoZSBzeXNjb25maWcgbW9kdWxlXG4nKQotICAgICAgICBmcC53cml0ZSgnYnVpbGRfdGltZV92YXJzID0gJykKLSAgICAgICAgcHByaW50LnBwcmludCh2YXJzLCBzdHJlYW09ZnApCi0gICAgICAgIGZwLmNsb3NlKCkKKyAgICBmcCA9IG9wZW4ocGF0aCwgJ3cnKQorICAgICMgZHVwbGljYXRlZCBmcm9tIHN5c2NvbmZpZy5fZ2VuZXJhdGVfcG9zaXhfdmFycygpCisgICAgZnAud3JpdGUoJyMgc3lzdGVtIGNvbmZpZ3VyYXRpb24gZ2VuZXJhdGVkIGFuZCB1c2VkIGJ5JworICAgICAgICAgICAgICAgICcgdGhlIHN5c2NvbmZpZyBtb2R1bGVcbicpCisgICAgZnAud3JpdGUoJ2J1aWxkX3RpbWVfdmFycyA9ICcpCisgICAgcHByaW50LnBwcmludCh2YXJzLCBzdHJlYW09ZnApCisgICAgZnAuY2xvc2UoKQogCiAgICAgIyBBZGQgc3ltbGlua3MgaW4gL3Vzci9sb2NhbC9iaW4sIHVzaW5nIHJlbGF0aXZlIGxpbmtzCiAgICAgdXNyX2xvY2FsX2JpbiA9IG9zLnBhdGguam9pbihyb290RGlyLCAndXNyJywgJ2xvY2FsJywgJ2JpbicpCkBAIC0xNjM2LDYgKzE2MTcsOCBAQAogICAgIHBhdGNoRmlsZSgicmVzb3VyY2VzL1JlYWRNZS5ydGYiLCAgZm4pCiAgICAgZm4gPSBvcy5wYXRoLmpvaW4oZm9sZGVyLCAiVXBkYXRlIFNoZWxsIFByb2ZpbGUuY29tbWFuZCIpCiAgICAgcGF0Y2hTY3JpcHQoInNjcmlwdHMvcG9zdGZsaWdodC5wYXRjaC1wcm9maWxlIiwgIGZuKQorICAgIGZuID0gb3MucGF0aC5qb2luKGZvbGRlciwgIkluc3RhbGwgQ2VydGlmaWNhdGVzLmNvbW1hbmQiKQorICAgIHBhdGNoU2NyaXB0KCJyZXNvdXJjZXMvaW5zdGFsbF9jZXJ0aWZpY2F0ZXMuY29tbWFuZCIsICBmbikKICAgICBvcy5jaG1vZChmb2xkZXIsIFNUQVRfMG83NTUpCiAgICAgc2V0SWNvbihmb2xkZXIsICIuLi9JY29ucy9QeXRob24gRm9sZGVyLmljbnMiKQogCmRpZmYgLS1naXQgYS9NYWMvQnVpbGRTY3JpcHQvcmVzb3VyY2VzL1JlYWRNZS5ydGYgYi9NYWMvQnVpbGRTY3JpcHQvcmVzb3VyY2VzL1JlYWRNZS5ydGYKaW5kZXggNjVlM2YxNC4uYWM2ODc4NiAxMDA2NDQKLS0tIGEvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9SZWFkTWUucnRmCisrKyBiL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvUmVhZE1lLnJ0ZgpAQCAtMSwxMDYgKzEsNzYgQEAKLXtccnRmMVxhbnNpXGFuc2ljcGcxMjUyXGNvY29hcnRmMTM0OFxjb2NvYXN1YnJ0ZjE3MAore1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcY29jb2FydGYxNTA0XGNvY29hc3VicnRmNzUwCiB7XGZvbnR0YmxcZjBcZnN3aXNzXGZjaGFyc2V0MCBIZWx2ZXRpY2E7XGYxXGZtb2Rlcm5cZmNoYXJzZXQwIENvdXJpZXJOZXdQU01UO30KIHtcY29sb3J0Ymw7XHJlZDI1NVxncmVlbjI1NVxibHVlMjU1O30KK3tcKlxleHBhbmRlZGNvbG9ydGJsOzt9CiBcbWFyZ2wxNDQwXG1hcmdyMTQ0MFx2aWV3dzEzMzgwXHZpZXdoMTQ2MDBcdmlld2tpbmQwCi1ccGFyZFx0eDcyMFx0eDE0NDBcdHgyMTYwXHR4Mjg4MFx0eDM2MDBcdHg0MzIwXHR4NTA0MFx0eDU3NjBcdHg2NDgwXHR4NzIwMFx0eDc5MjBcdHg4NjQwXHBhcmRpcm5hdHVyYWwKK1xwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFyZGlybmF0dXJhbFxwYXJ0aWdodGVuZmFjdG9yMAogCiBcZjBcZnMyNCBcY2YwIFRoaXMgcGFja2FnZSB3aWxsIGluc3RhbGwgUHl0aG9uICRGVUxMX1ZFUlNJT04gZm9yIE1hYyBPUyBYICRNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgZm9yIHRoZSBmb2xsb3dpbmcgYXJjaGl0ZWN0dXJlKHMpOiAkQVJDSElURUNUVVJFUy5cCiBcCi1ccGFyZFx0eDcyMFx0eDE0NDBcdHgyMTYwXHR4Mjg4MFx0eDM2MDBcdHg0MzIwXHR4NTA0MFx0eDU3NjBcdHg2NDgwXHR4NzIwMFx0eDc5MjBcdHg4NjQwXHBhcmRpcm5hdHVyYWwKK1xwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFyZGlybmF0dXJhbFxwYXJ0aWdodGVuZmFjdG9yMAogCiBcYiBcY2YwIFx1bCBcdWxjMCBXaGljaCBpbnN0YWxsZXIgdmFyaWFudCBzaG91bGQgSSB1c2U/CiBcYjAgXHVsbm9uZSBcCiBcCi1QeXRob24ub3JnIHByb3ZpZGVzIHR3byBpbnN0YWxsZXIgdmFyaWFudHMgZm9yIGRvd25sb2FkOiBvbmUgdGhhdCBpbnN0YWxscyBhIAorXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MFxwYXJkaXJuYXR1cmFsXHBhcnRpZ2h0ZW5mYWN0b3IwCisKK1xiIFxjZjAgKipORVcqKgorXGIwICBGb3IgUHl0aG9uIDMuNiwgdGhlIHB5dGhvbi5vcmcgd2Vic2l0ZSBub3cgcHJvdmlkZXMgb25seSBvbmUgaW5zdGFsbGVyIHZhcmlhbnQgZm9yIGRvd25sb2FkOiBvbmUgdGhhdCBpbnN0YWxscyBhIAogXGkgNjQtYml0LzMyLWJpdCBJbnRlbAogXGkwICBQeXRob24gY2FwYWJsZSBvZiBydW5uaW5nIG9uIAogXGkgTWFjIE9TIFggMTAuNiAoU25vdyBMZW9wYXJkKQotXGkwICBvciBsYXRlcjsgYW5kIG9uZSB0aGF0IGluc3RhbGxzIGEgCi1caSAzMi1iaXQtb25seSAoSW50ZWwgYW5kIFBQQykKLVxpMCAgUHl0aG9uIGNhcGFibGUgb2YgcnVubmluZyBvbiAKLVxpIE1hYyBPUyBYIDEwLjUgKExlb3BhcmQpCiBcaTAgIG9yIGxhdGVyLiAgVGhpcyBSZWFkTWUgd2FzIGluc3RhbGxlZCB3aXRoIHRoZSAKIFxpICRNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQKLVxpMCAgdmFyaWFudC4gIFVubGVzcyB5b3UgYXJlIGluc3RhbGxpbmcgdG8gYW4gMTAuNSBzeXN0ZW0gb3IgeW91IG5lZWQgdG8gYnVpbGQgYXBwbGljYXRpb25zIHRoYXQgY2FuIHJ1biBvbiAxMC41IHN5c3RlbXMsIHVzZSB0aGUgMTAuNiB2YXJpYW50IGlmIHBvc3NpYmxlLiAgVGhlcmUgYXJlIHNvbWUgYWRkaXRpb25hbCBvcGVyYXRpbmcgc3lzdGVtIGZ1bmN0aW9ucyB0aGF0IGFyZSBzdXBwb3J0ZWQgc3RhcnRpbmcgd2l0aCAxMC42IGFuZCB5b3UgbWF5IHNlZSBiZXR0ZXIgcGVyZm9ybWFuY2UgdXNpbmcgNjQtYml0IG1vZGUuICBCeSBkZWZhdWx0LCBQeXRob24gd2lsbCBhdXRvbWF0aWNhbGx5IHJ1biBpbiA2NC1iaXQgbW9kZSBpZiB5b3VyIHN5c3RlbSBzdXBwb3J0cyBpdC4gIEFsc28gc2VlIAotXGkgQ2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uIGFuZCBPcGVuU1NMCi1caTAgIGJlbG93LiAgVGhlIFB5dGhvbnMgaW5zdGFsbGVkIGJ5IHRoZXNlIGluc3RhbGxlcnMgYXJlIGJ1aWx0IHdpdGggcHJpdmF0ZSBjb3BpZXMgb2Ygc29tZSB0aGlyZC1wYXJ0eSBsaWJyYXJpZXMgbm90IGluY2x1ZGVkIHdpdGggb3IgbmV3ZXIgdGhhbiB0aG9zZSBpbiBPUyBYIGl0c2VsZi4gIFRoZSBsaXN0IG9mIHRoZXNlIGxpYnJhcmllcyB2YXJpZXMgYnkgaW5zdGFsbGVyIHZhcmlhbnQgYW5kIGlzIGluY2x1ZGVkIGF0IHRoZSBlbmQgb2YgdGhlIExpY2Vuc2UucnRmIGZpbGUuCitcaTAgIHZhcmlhbnQuICBCeSBkZWZhdWx0LCBQeXRob24gd2lsbCBhdXRvbWF0aWNhbGx5IHJ1biBpbiA2NC1iaXQgbW9kZSBpZiB5b3VyIHN5c3RlbSBzdXBwb3J0cyBpdC4gIFRoZSBQeXRob24gaW5zdGFsbGVkIGJ5IHRoaXMgaW5zdGFsbGVyIGlzIGJ1aWx0IHdpdGggcHJpdmF0ZSBjb3BpZXMgb2Ygc29tZSB0aGlyZC1wYXJ0eSBsaWJyYXJpZXMgbm90IGluY2x1ZGVkIHdpdGggb3IgbmV3ZXIgdGhhbiB0aG9zZSBpbiBPUyBYIGl0c2VsZi4gIFRoZSBsaXN0IG9mIHRoZXNlIGxpYnJhcmllcyBpcyBpbmNsdWRlZCBhdCB0aGUgZW5kIG9mIHRoZSBMaWNlbnNlLnJ0ZiBmaWxlLgogXGIgXHVsIFwKIFwKLVVwZGF0ZSB5b3VyIHZlcnNpb24gb2YgVGNsL1RrIHRvIHVzZSBJRExFIG9yIG90aGVyIFRrIGFwcGxpY2F0aW9ucworQ2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uIGFuZCBPcGVuU1NMXAorXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MFxwYXJkaXJuYXR1cmFsXHBhcnRpZ2h0ZW5mYWN0b3IwCisKK1xiMCBcY2YwIFx1bG5vbmUgXAorXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MFxwYXJkaXJuYXR1cmFsXHBhcnRpZ2h0ZW5mYWN0b3IwCisKK1xiIFxjZjAgKipORVcqKgorXGIwICBUaGlzIHZhcmlhbnQgb2YgUHl0aG9uIDMuNiBub3cgaW5jbHVkZXMgaXRzIG93biBwcml2YXRlIGNvcHkgb2YgT3BlblNTTCAxLjAuMi4gIFVubGlrZSBwcmV2aW91cyByZWxlYXNlcywgdGhlIGRlcHJlY2F0ZWQgQXBwbGUtc3VwcGxpZWQgT3BlblNTTCBsaWJyYXJpZXMgYXJlIG5vIGxvbmdlciB1c2VkLiAgVGhpcyBhbHNvIG1lYW5zIHRoYXQgdGhlIHRydXN0IGNlcnRpZmljYXRlcyBpbiBzeXN0ZW0gYW5kIHVzZXIga2V5Y2hhaW5zIG1hbmFnZWQgYnkgdGhlIAorXGkgS2V5Y2hhaW4gQWNjZXNzIAorXGkwIGFwcGxpY2F0aW9uIGFuZCB0aGUgCitcaSBzZWN1cml0eQorXGkwICBjb21tYW5kIGxpbmUgdXRpbGl0eSBhcmUgbm8gbG9uZ2VyIHVzZWQgYXMgZGVmYXVsdHMgYnkgdGhlIFB5dGhvbiAKK1xmMSBzc2wKK1xmMCAgbW9kdWxlLiAgRm9yIDMuNi4wLCBhIHNhbXBsZSBjb21tYW5kIHNjcmlwdCBpcyBpbmNsdWRlZCBpbiAKK1xmMSAvQXBwbGljYXRpb25zL1B5dGhvbiAzLjYKK1xmMCAgdG8gaW5zdGFsbCBhIGN1cmF0ZWQgYnVuZGxlIG9mIGRlZmF1bHQgcm9vdCBjZXJ0aWZpY2F0ZXMgZnJvbSB0aGUgdGhpcmQtcGFydHkgCitcZjEgY2VydGlmaQorXGYwICBwYWNrYWdlICh7XGZpZWxke1wqXGZsZGluc3R7SFlQRVJMSU5LICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL2NlcnRpZmkifX17XGZsZHJzbHQgaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9jZXJ0aWZpfX0pLiAgSWYgeW91IGNob29zZSB0byB1c2UgCitcZjEgY2VydGlmaQorXGYwICwgeW91IHNob3VsZCBjb25zaWRlciBzdWJzY3JpYmluZyB0byB0aGV7XGZpZWxke1wqXGZsZGluc3R7SFlQRVJMSU5LICJodHRwczovL2NlcnRpZmkuaW8vZW4vbGF0ZXN0LyJ9fXtcZmxkcnNsdCAgcHJvamVjdCdzIGVtYWlsIHVwZGF0ZSBzZXJ2aWNlfX0gdG8gYmUgbm90aWZpZWQgd2hlbiB0aGUgY2VydGlmaWNhdGUgYnVuZGxlIGlzIHVwZGF0ZWQuXAorXAorVGhlIGJ1bmRsZWQgCitcZjEgcGlwCitcZjAgIGluY2x1ZGVkIHdpdGggdGhlIFB5dGhvbiAzLjYgaW5zdGFsbGVyIGhhcyBpdHMgb3duIGRlZmF1bHQgY2VydGlmaWNhdGUgc3RvcmUgZm9yIHZlcmlmeWluZyBkb3dubG9hZCBjb25uZWN0aW9ucy5cCitcCitccGFyZFx0eDcyMFx0eDE0NDBcdHgyMTYwXHR4Mjg4MFx0eDM2MDBcdHg0MzIwXHR4NTA0MFx0eDU3NjBcdHg2NDgwXHR4NzIwMFx0eDc5MjBcdHg4NjQwXHBhcmRpcm5hdHVyYWxccGFydGlnaHRlbmZhY3RvcjAKKworXGIgXGNmMCBcdWwgVXBkYXRlIHlvdXIgdmVyc2lvbiBvZiBUY2wvVGsgdG8gdXNlIElETEUgb3Igb3RoZXIgVGsgYXBwbGljYXRpb25zCiBcYjAgXHVsbm9uZSBcCiBcCiBUbyB1c2UgSURMRSBvciBvdGhlciBwcm9ncmFtcyB0aGF0IHVzZSB0aGUgVGtpbnRlciBncmFwaGljYWwgdXNlciBpbnRlcmZhY2UgdG9vbGtpdCwgeW91IG5lZWQgdG8gaW5zdGFsbCBhIG5ld2VyIHRoaXJkLXBhcnR5IHZlcnNpb24gb2YgdGhlIAogXGkgVGNsL1RrCiBcaTAgIGZyYW1ld29ya3MuICBWaXNpdCB7XGZpZWxke1wqXGZsZGluc3R7SFlQRVJMSU5LICJodHRwczovL3d3dy5weXRob24ub3JnL2Rvd25sb2FkL21hYy90Y2x0ay8ifX17XGZsZHJzbHQgaHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kb3dubG9hZC9tYWMvdGNsdGsvfX0gZm9yIGN1cnJlbnQgaW5mb3JtYXRpb24gYWJvdXQgc3VwcG9ydGVkIGFuZCByZWNvbW1lbmRlZCB2ZXJzaW9ucyBvZiAKIFxpIFRjbC9UawotXGkwICBmb3IgdGhpcyB2ZXJzaW9uIG9mIFB5dGhvbiBhbmQgb2YgTWFjIE9TIFguXAorXGkwICBmb3IgdGhpcyB2ZXJzaW9uIG9mIFB5dGhvbiBhbmQgb2YgTWFjIE9TIFguICBGb3IgdGhlIGluaXRpYWwgcmVsZWFzZSBvZiBQeXRob24gMy42LCB0aGUgaW5zdGFsbGVyIGlzIHN0aWxsIGxpbmtlZCB3aXRoIFRjbC9UayA4LjUuXAogCiBcYiBcdWwgXAotQ2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uIGFuZCBPcGVuU1NMXAorT3RoZXIgY2hhbmdlc1wKIAogXGIwIFx1bG5vbmUgXAotUHl0aG9uIDMuNSBpbmNsdWRlcyBhIG51bWJlciBvZiBuZXR3b3JrIHNlY3VyaXR5IGVuaGFuY2VtZW50cyB0aGF0IHdlcmUgcmVsZWFzZWQgaW4gUHl0aG9uIDMuNC4zIGFuZCBQeXRob24gMi43LjEwLiAge1xmaWVsZHtcKlxmbGRpbnN0e0hZUEVSTElOSyAiaHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVwcy9wZXAtMDQ3Ni8ifX17XGZsZHJzbHQgUEVQIDQ3Nn19IGNoYW5nZXMgc2V2ZXJhbCBzdGFuZGFyZCBsaWJyYXJ5IG1vZHVsZXMsIGxpa2UgCi1caSBodHRwbGliCi1caTAgLCAKLVxpIHVybGxpYgotXGkwICwgYW5kIAotXGkgeG1scnBjbGliCi1caTAgLCB0byBieSBkZWZhdWx0IHZlcmlmeSBjZXJ0aWZpY2F0ZXMgcHJlc2VudGVkIGJ5IHNlcnZlcnMgb3ZlciBzZWN1cmUgKFRMUykgY29ubmVjdGlvbnMuICBUaGUgdmVyaWZpY2F0aW9uIGlzIHBlcmZvcm1lZCBieSB0aGUgT3BlblNTTCBsaWJyYXJpZXMgdGhhdCBQeXRob24gaXMgbGlua2VkIHRvLiAgUHJpb3IgdG8gMy40LjMsIGJvdGggcHl0aG9uLm9yZyBpbnN0YWxsZXJzIGR5bmFtaWNhbGx5IGxpbmtlZCB3aXRoIEFwcGxlLXN1cHBsaWVkIE9wZW5TU0wgbGlicmFyaWVzIHNoaXBwZWQgd2l0aCBPUyBYLiAgT1MgWCBwcm92aWRlcyBhIG11bHRpcGxlIGxldmVsIHNlY3VyaXR5IGZyYW1ld29yayB0aGF0IHN0b3JlcyB0cnVzdCBjZXJ0aWZpY2F0ZXMgaW4gc3lzdGVtIGFuZCB1c2VyIGtleWNoYWlucyBtYW5hZ2VkIGJ5IHRoZSAKLVxpIEtleWNoYWluIEFjY2VzcyAKLVxpMCBhcHBsaWNhdGlvbiBhbmQgdGhlIAotXGkgc2VjdXJpdHkKLVxpMCAgY29tbWFuZCBsaW5lIHV0aWxpdHkuXAotXAotRm9yIE9TIFggMTAuNSwgQXBwbGUgcHJvdmlkZXMgCi1caSBPcGVuU1NMIDAuOS43Ci1caTAgIGxpYnJhcmllcy4gIFRoaXMgdmVyc2lvbiBvZiBBcHBsZSdzIE9wZW5TU0wgCi1cYiBkb2VzIG5vdAotXGIwICB1c2UgdGhlIGNlcnRpZmljYXRlcyBmcm9tIHRoZSBzeXN0ZW0gc2VjdXJpdHkgZnJhbWV3b3JrLCBldmVuIHdoZW4gdXNlZCBvbiBuZXdlciB2ZXJzaW9ucyBvZiBPUyBYLiAgSW5zdGVhZCBpdCBjb25zdWx0cyBhIHRyYWRpdGlvbmFsIE9wZW5TU0wgY29uY2F0ZW5hdGVkIGNlcnRpZmljYXRlIGZpbGUgKAotXGkgY2FmaWxlCi1caTAgKSBvciBjZXJ0aWZpY2F0ZSBkaXJlY3RvcnkgKAotXGkgY2FwYXRoCi1caTAgKSwgbG9jYXRlZCBpbiAKLVxmMSAvU3lzdGVtL0xpYnJhcnkvT3BlblNTTAotXGYwIC4gIFRoZXNlIGRpcmVjdG9yaWVzIGFyZSB0eXBpY2FsbHkgZW1wdHkgYW5kIG5vdCBtYW5hZ2VkIGJ5IE9TIFg7IHlvdSBtdXN0IG1hbmFnZSB0aGVtIHlvdXJzZWxmIG9yIHN1cHBseSB5b3VyIG93biBTU0wgY29udGV4dHMuICBPcGVuU1NMIDAuOS43IGlzIG9ic29sZXRlIGJ5IGN1cnJlbnQgc2VjdXJpdHkgc3RhbmRhcmRzLCBsYWNraW5nIGEgbnVtYmVyIG9mIGltcG9ydGFudCBmZWF0dXJlcyBmb3VuZCBpbiBsYXRlciB2ZXJzaW9ucy4gIEFtb25nIHRoZSBwcm9ibGVtcyB0aGlzIGNhdXNlcyBpcyB0aGUgaW5hYmlsaXR5IHRvIHZlcmlmeSBoaWdoZXItc2VjdXJpdHkgY2VydGlmaWNhdGVzIG5vdyB1c2VkIGJ5IHB5dGhvbi5vcmcgc2VydmljZXMsIGluY2x1ZGluZyAKLVxpIHR7XGZpZWxke1wqXGZsZGluc3R7SFlQRVJMSU5LICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpIn19e1xmbGRyc2x0IGhlIFB5dGhvbiBQYWNrYWdlIEluZGV4LCBQeVBJfX0KLVxpMCAuICBUbyBzb2x2ZSB0aGlzIHByb2JsZW0sIHRoZSAKLVxpIDEwLjUrIDMyLWJpdC1vbmx5IHB5dGhvbi5vcmcgdmFyaWFudAotXGkwICBpcyBsaW5rZWQgd2l0aCBhIHByaXZhdGUgY29weSBvZiAKLVxpIE9wZW5TU0wgMS4wLjIKLVxpMCA7IGl0IGNvbnN1bHRzIHRoZSBzYW1lIGRlZmF1bHQgY2VydGlmaWNhdGUgZGlyZWN0b3J5LCAKLVxmMSAvU3lzdGVtL0xpYnJhcnkvT3BlblNTTAotXGYwIC4gICBBcyBiZWZvcmUsIGl0IGlzIHN0aWxsIG5lY2Vzc2FyeSB0byBtYW5hZ2UgY2VydGlmaWNhdGVzIHlvdXJzZWxmIHdoZW4geW91IHVzZSB0aGlzIFB5dGhvbiB2YXJpYW50IGFuZCwgd2l0aCBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gbm93IGVuYWJsZWQgYnkgZGVmYXVsdCwgeW91IG1heSBub3cgbmVlZCB0byB0YWtlIGFkZGl0aW9uYWwgc3RlcHMgdG8gZW5zdXJlIHlvdXIgUHl0aG9uIHByb2dyYW1zIGhhdmUgYWNjZXNzIHRvIENBIGNlcnRpZmljYXRlcyB5b3UgdHJ1c3QuICBJZiB5b3UgdXNlIHRoaXMgUHl0aG9uIHZhcmlhbnQgdG8gYnVpbGQgc3RhbmRhbG9uZSBhcHBsaWNhdGlvbnMgd2l0aCB0aGlyZC1wYXJ0eSB0b29scyBsaWtlIHtcZmllbGR7XCpcZmxkaW5zdHtIWVBFUkxJTksgImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvcHkyYXBwLyJ9fXtcZmxkcnNsdCAKLVxmMSBweTJhcHB9fSwgeW91IG1heSBub3cgbmVlZCB0byBidW5kbGUgQ0EgY2VydGlmaWNhdGVzIGluIHRoZW0gb3Igb3RoZXJ3aXNlIHN1cHBseSBub24tZGVmYXVsdCBTU0wgY29udGV4dHMuXAotXAotRm9yIE9TIFggMTAuNissIEFwcGxlIGFsc28gcHJvdmlkZXMgCi1caSBPcGVuU1NMCi1caTAgIAotXGkgMC45LjggbGlicmFyaWVzCi1caTAgLiAgQXBwbGUncyAwLjkuOCB2ZXJzaW9uIGluY2x1ZGVzIGFuIGltcG9ydGFudCBhZGRpdGlvbmFsIGZlYXR1cmU6IGlmIGEgY2VydGlmaWNhdGUgY2Fubm90IGJlIHZlcmlmaWVkIHVzaW5nIHRoZSBtYW51YWxseSBhZG1pbmlzdGVyZWQgY2VydGlmaWNhdGVzIGluIAotXGYxIC9TeXN0ZW0vTGlicmFyeS9PcGVuU1NMCi1cZjAgLCB0aGUgY2VydGlmaWNhdGVzIG1hbmFnZWQgYnkgdGhlIHN5c3RlbSBzZWN1cml0eSBmcmFtZXdvcmsgSW4gdGhlIHVzZXIgYW5kIHN5c3RlbSBrZXljaGFpbnMgYXJlIGFsc28gY29uc3VsdGVkICh1c2luZyBBcHBsZSBwcml2YXRlIEFQSXMpLiAgRm9yIHRoaXMgcmVhc29uLCB0aGUgCi1caSA2NC1iaXQvMzItYml0IDEwLjYrIHB5dGhvbi5vcmcgdmFyaWFudAotXGkwICBjb250aW51ZXMgdG8gYmUgZHluYW1pY2FsbHkgbGlua2VkIHdpdGggQXBwbGUncyBPcGVuU1NMIDAuOS44IHNpbmNlIGl0IHdhcyBmZWx0IHRoYXQgdGhlIGxvc3Mgb2YgdGhlIHN5c3RlbS1wcm92aWRlZCBjZXJ0aWZpY2F0ZXMgYW5kIG1hbmFnZW1lbnQgdG9vbHMgb3V0d2VpZ2hzIHRoZSBhZGRpdGlvbmFsIHNlY3VyaXR5IGZlYXR1cmVzIHByb3ZpZGVkIGJ5IG5ld2VyIHZlcnNpb25zIG9mIE9wZW5TU0wuICBUaGlzIHdpbGwgbGlrZWx5IGNoYW5nZSBpbiBmdXR1cmUgcmVsZWFzZXMgb2YgdGhlIHB5dGhvbi5vcmcgaW5zdGFsbGVycyBhcyBBcHBsZSBoYXMgZGVwcmVjYXRlZCB1c2Ugb2YgdGhlIHN5c3RlbS1zdXBwbGllZCBPcGVuU1NMIGxpYnJhcmllcy4gIElmIHlvdSBkbyBuZWVkIGZlYXR1cmVzIGZyb20gbmV3ZXIgdmVyc2lvbnMgb2YgT3BlblNTTCwgdGhlcmUgYXJlIHRoaXJkLXBhcnR5IE9wZW5TU0wgd3JhcHBlciBwYWNrYWdlcyBhdmFpbGFibGUgdGhyb3VnaCAKLVxpIFB5UEkKLVxpMCAuXAotXAotVGhlIGJ1bmRsZWQgCi1cZjEgcGlwCi1cZjAgIGluY2x1ZGVkIHdpdGggdGhlIFB5dGhvbiAzLjUgaW5zdGFsbGVycyBoYXMgaXRzIG93biBkZWZhdWx0IGNlcnRpZmljYXRlIHN0b3JlIGZvciB2ZXJpZnlpbmcgZG93bmxvYWQgY29ubmVjdGlvbnMuXAotXAotCi1cYiBcdWwgT3RoZXIgY2hhbmdlc1wKLQotXGIwIFx1bG5vbmUgXAotXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MFxwYXJkaXJuYXR1cmFsCi1cY2YwIEZvciBvdGhlciBjaGFuZ2VzIGluIHRoaXMgcmVsZWFzZSwgc2VlIHRoZSAKK0ZvciBvdGhlciBjaGFuZ2VzIGluIHRoaXMgcmVsZWFzZSwgc2VlIHRoZSAKIFxpIFdoYXQncyBuZXcKIFxpMCAgc2VjdGlvbiBpbiB0aGUge1xmaWVsZHtcKlxmbGRpbnN0e0hZUEVSTElOSyAiaHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kb2MvIn19e1xmbGRyc2x0IERvY3VtZW50YXRpb24gU2V0fX0gZm9yIHRoaXMgcmVsZWFzZSBhbmQgaXRzIAogXGkgUmVsZWFzZSBOb3RlcwogXGkwICBsaW5rIGF0IHtcZmllbGR7XCpcZmxkaW5zdHtIWVBFUkxJTksgImh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWRzLyJ9fXtcZmxkcnNsdCBodHRwczovL3d3dy5weXRob24ub3JnL2Rvd25sb2Fkcy99fS5cCi1ccGFyZFx0eDcyMFx0eDE0NDBcdHgyMTYwXHR4Mjg4MFx0eDM2MDBcdHg0MzIwXHR4NTA0MFx0eDU3NjBcdHg2NDgwXHR4NzIwMFx0eDc5MjBcdHg4NjQwXHBhcmRpcm5hdHVyYWwKIAotXGIgXGNmMCBcdWwgXAorXGIgXHVsIFwKIFB5dGhvbiAzIGFuZCBQeXRob24gMiBDby1leGlzdGVuY2VcCiAKIFxiMCBcdWxub25lIFwKZGlmZiAtLWdpdCBhL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvV2VsY29tZS5ydGYgYi9NYWMvQnVpbGRTY3JpcHQvcmVzb3VyY2VzL1dlbGNvbWUucnRmCmluZGV4IGRmYjc1ZDguLjNhOWFiMDQgMTAwNjQ0Ci0tLSBhL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvV2VsY29tZS5ydGYKKysrIGIvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9XZWxjb21lLnJ0ZgpAQCAtMSw4ICsxLDkgQEAKLXtccnRmMVxhbnNpXGFuc2ljcGcxMjUyXGNvY29hcnRmMTM0M1xjb2NvYXN1YnJ0ZjE2MAore1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcY29jb2FydGYxNTA0CiBcY29jb2FzY3JlZW5mb250czF7XGZvbnR0YmxcZjBcZnN3aXNzXGZjaGFyc2V0MCBIZWx2ZXRpY2E7fQoge1xjb2xvcnRibDtccmVkMjU1XGdyZWVuMjU1XGJsdWUyNTU7fQore1wqXGV4cGFuZGVkY29sb3J0Ymw7XGNzZ3JheVxjMTAwMDAwO30KIFxwYXBlcncxMTkwNVxwYXBlcmgxNjgzN1xtYXJnbDE0NDBcbWFyZ3IxNDQwXHZpZXd3MTIyMDBcdmlld2gxMDg4MFx2aWV3a2luZDAKLVxwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDAKK1xwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFydGlnaHRlbmZhY3RvcjAKIAogXGYwXGZzMjQgXGNmMCBUaGlzIHBhY2thZ2Ugd2lsbCBpbnN0YWxsIAogXGIgUHl0aG9uICRGVUxMX1ZFUlNJT04KQEAgLTE2LDggKzE3LDE0IEBACiBcYiBJRExFCiBcYjAgLlwKIFwKK1xwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFydGlnaHRlbmZhY3RvcjAKIAotXGIgSU1QT1JUQU5UOgorXGIgXGNmMCBORVc6CitcYjAgICBUaGVyZSBhcmUgaW1wb3J0YW50IGNoYW5nZXMgaW4gdGhpcyByZWxlYXNlIHJlZ2FyZGluZyBuZXR3b3JrIHNlY3VyaXR5IGFuZCB0cnVzdCBjZXJ0aWZpY2F0ZXMuICBQbGVhc2Ugc2VlIHRoZSBSZWFkTWUgZm9yIG1vcmUgZGV0YWlscy5cCitcCitccGFyZFx0eDcyMFx0eDE0NDBcdHgyMTYwXHR4Mjg4MFx0eDM2MDBcdHg0MzIwXHR4NTA0MFx0eDU3NjBcdHg2NDgwXHR4NzIwMFx0eDc5MjBcdHg4NjQwXHBhcnRpZ2h0ZW5mYWN0b3IwCisKK1xiIFxjZjAgSU1QT1JUQU5UOgogXGIwICAKIFxiIElETEUKIFxiMCAgYW5kIG90aGVyIHByb2dyYW1zIHVzaW5nIHRoZSAKZGlmZiAtLWdpdCBhL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvaW5zdGFsbF9jZXJ0aWZpY2F0ZXMuY29tbWFuZCBiL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvaW5zdGFsbF9jZXJ0aWZpY2F0ZXMuY29tbWFuZApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xZDJlMmQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9pbnN0YWxsX2NlcnRpZmljYXRlcy5jb21tYW5kCkBAIC0wLDAgKzEsNDggQEAKKyMhL2Jpbi9zaAorCisvTGlicmFyeS9GcmFtZXdvcmtzL1B5dGhvbi5mcmFtZXdvcmsvVmVyc2lvbnMvQFBZVkVSQC9iaW4vcHl0aG9uQFBZVkVSQCA8PCAiRU9GIgorCisjIGluc3RhbGxfY2VydGlmaS5weQorIworIyBzYW1wbGUgc2NyaXB0IHRvIGluc3RhbGwgb3IgdXBkYXRlIGEgc2V0IG9mIGRlZmF1bHQgUm9vdCBDZXJ0aWZpY2F0ZXMKKyMgZm9yIHRoZSBzc2wgbW9kdWxlLiAgVXNlcyB0aGUgY2VydGlmaWNhdGVzIHByb3ZpZGVkIGJ5IHRoZSBjZXJ0aWZpIHBhY2thZ2U6CisjICAgICAgIGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvY2VydGlmaQorCitpbXBvcnQgb3MKK2ltcG9ydCBvcy5wYXRoCitpbXBvcnQgc3NsCitpbXBvcnQgc3RhdAoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBzeXMKKworU1RBVF8wbzc3NSA9ICggc3RhdC5TX0lSVVNSIHwgc3RhdC5TX0lXVVNSIHwgc3RhdC5TX0lYVVNSCisgICAgICAgICAgICAgfCBzdGF0LlNfSVJHUlAgfCBzdGF0LlNfSVdHUlAgfCBzdGF0LlNfSVhHUlAKKyAgICAgICAgICAgICB8IHN0YXQuU19JUk9USCB8ICAgICAgICAgICAgICAgIHN0YXQuU19JWE9USCApCisKK2RlZiBtYWluKCk6CisgICAgb3BlbnNzbF9kaXIsIG9wZW5zc2xfY2FmaWxlID0gb3MucGF0aC5zcGxpdCgKKyAgICAgICAgc3NsLmdldF9kZWZhdWx0X3ZlcmlmeV9wYXRocygpLm9wZW5zc2xfY2FmaWxlKQorCisgICAgcHJpbnQoIiAtLSBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgY2VydGlmaSIpCisgICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKFtzeXMuZXhlY3V0YWJsZSwKKyAgICAgICAgIi1FIiwgIi1zIiwgIi1tIiwgInBpcCIsICJpbnN0YWxsIiwgIi0tdXBncmFkZSIsICJjZXJ0aWZpIl0pCisKKyAgICBpbXBvcnQgY2VydGlmaQorCisgICAgIyBjaGFuZ2Ugd29ya2luZyBkaXJlY3RvcnkgdG8gdGhlIGRlZmF1bHQgU1NMIGRpcmVjdG9yeQorICAgIG9zLmNoZGlyKG9wZW5zc2xfZGlyKQorICAgIHJlbHBhdGhfdG9fY2VydGlmaV9jYWZpbGUgPSBvcy5wYXRoLnJlbHBhdGgoY2VydGlmaS53aGVyZSgpKQorICAgIHByaW50KCIgLS0gcmVtb3ZpbmcgYW55IGV4aXN0aW5nIGZpbGUgb3IgbGluayIpCisgICAgdHJ5OgorICAgICAgICBvcy5yZW1vdmUob3BlbnNzbF9jYWZpbGUpCisgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOgorICAgICAgICBwYXNzCisgICAgcHJpbnQoIiAtLSBjcmVhdGluZyBzeW1saW5rIHRvIGNlcnRpZmkgY2VydGlmaWNhdGUgYnVuZGxlIikKKyAgICBvcy5zeW1saW5rKHJlbHBhdGhfdG9fY2VydGlmaV9jYWZpbGUsIG9wZW5zc2xfY2FmaWxlKQorICAgIHByaW50KCIgLS0gc2V0dGluZyBwZXJtaXNzaW9ucyIpCisgICAgb3MuY2htb2Qob3BlbnNzbF9jYWZpbGUsIFNUQVRfMG83NzUpCisgICAgcHJpbnQoIiAtLSB1cGRhdGUgY29tcGxldGUiKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIG1haW4oKQorRU9GCmRpZmYgLS1naXQgYS9NYWMvSURMRS9JRExFLmFwcC9Db250ZW50cy9SZXNvdXJjZXMvaWRsZW1haW4ucHkgYi9NYWMvSURMRS9JRExFLmFwcC9Db250ZW50cy9SZXNvdXJjZXMvaWRsZW1haW4ucHkKaW5kZXggOTg2NzYwZC4uNTk5NGMxOCAxMDA2NDQKLS0tIGEvTWFjL0lETEUvSURMRS5hcHAvQ29udGVudHMvUmVzb3VyY2VzL2lkbGVtYWluLnB5CisrKyBiL01hYy9JRExFL0lETEUuYXBwL0NvbnRlbnRzL1Jlc291cmNlcy9pZGxlbWFpbi5weQpAQCAtNjgsNiArNjgsNiBAQAogICAgICAgICBicmVhawogCiAjIE5vdyBpdCBpcyBzYWZlIHRvIGltcG9ydCBpZGxlbGliLgotZnJvbSBpZGxlbGliLlB5U2hlbGwgaW1wb3J0IG1haW4KK2Zyb20gaWRsZWxpYi5weXNoZWxsIGltcG9ydCBtYWluCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvTWFrZWZpbGUucHJlLmluIGIvTWFrZWZpbGUucHJlLmluCmluZGV4IGE4OGI3ZDUuLjQ4YjUxODAgMTAwNjQ0Ci0tLSBhL01ha2VmaWxlLnByZS5pbgorKysgYi9NYWtlZmlsZS5wcmUuaW4KQEAgLTQ5LDYgKzQ5LDEwIEBACiBMTFZNX1BST0ZfTUVSR0VSPUBMTFZNX1BST0ZfTUVSR0VSQAogTExWTV9QUk9GX0ZJTEU9QExMVk1fUFJPRl9GSUxFQAogTExWTV9QUk9GX0VSUj1ATExWTV9QUk9GX0VSUkAKK0RUUkFDRT0gICAgICAgICBARFRSQUNFQAorREZMQUdTPSAgICAgICAgIEBERkxBR1NACitEVFJBQ0VfSEVBREVSUz0gQERUUkFDRV9IRUFERVJTQAorRFRSQUNFX09CSlM9ICAgIEBEVFJBQ0VfT0JKU0AKIAogR05VTEQ9CQlAR05VTERACiAKQEAgLTExMCw2ICsxMTQsNyBAQAogCiAjIE11bHRpYXJjaCBkaXJlY3RvcnkgKG1heSBiZSBlbXB0eSkKIE1VTFRJQVJDSD0JQE1VTFRJQVJDSEAKK01VTFRJQVJDSF9DUFBGTEFHUyA9IEBNVUxUSUFSQ0hfQ1BQRkxBR1NACiAKICMgSW5zdGFsbCBwcmVmaXggZm9yIGFyY2hpdGVjdHVyZS1pbmRlcGVuZGVudCBmaWxlcwogcHJlZml4PQkJQHByZWZpeEAKQEAgLTIzNSw3ICsyNDAsNyBAQAogIyBUaGUgdGFzayB0byBydW4gd2hpbGUgaW5zdHJ1bWVudGVkIHdoZW4gYnVpbGRpbmcgdGhlIHByb2ZpbGUtb3B0IHRhcmdldC4KICMgV2UgZXhjbHVkZSB1bml0dGVzdHMgd2l0aCAteCB0aGF0IHRha2UgYSByZWRpY3VsaW91cyBhbW91bnQgb2YgdGltZSB0bwogIyBydW4gaW4gdGhlIGluc3RydW1lbnRlZCB0cmFpbmluZyBidWlsZCBvciBkbyBub3QgcHJvdmlkZSBtdWNoIHZhbHVlLgotUFJPRklMRV9UQVNLPS1tIHRlc3QucmVncnRlc3QgLS1wZ28gLXggdGVzdF9hc3luY29yZSB0ZXN0X2dkYiB0ZXN0X211bHRpcHJvY2Vzc2luZ19mb3JrIHRlc3RfbXVsdGlwcm9jZXNzaW5nX2ZvcmtzZXJ2ZXIgdGVzdF9tdWx0aXByb2Nlc3NpbmdfbWFpbl9oYW5kbGluZyB0ZXN0X211bHRpcHJvY2Vzc2luZ19zcGF3biB0ZXN0X3N1YnByb2Nlc3MKK1BST0ZJTEVfVEFTSz0tbSB0ZXN0LnJlZ3J0ZXN0IC0tcGdvCiAKICMgcmVwb3J0IGZpbGVzIGZvciBnY292IC8gbGNvdiBjb3ZlcmFnZSByZXBvcnQKIENPVkVSQUdFX0lORk89CSQoYWJzX2J1aWxkZGlyKS9jb3ZlcmFnZS5pbmZvCkBAIC0yNTQsOSArMjU5LDYgQEAKIAkJTW9kdWxlcy9tYWluLm8gXAogCQlNb2R1bGVzL2djbW9kdWxlLm8KIAotIyBVc2VkIG9mIHNpZ25hbG1vZHVsZS5vIGlzIG5vdCBhdmFpbGFibGUKLVNJR05BTF9PQkpTPQlAU0lHTkFMX09CSlNACi0KIElPX0g9CQlNb2R1bGVzL19pby9faW9tb2R1bGUuaAogCiBJT19PQkpTPQlcCkBAIC0yODEsMTggKzI4Myw2IEBACiAjIFBhcnNlcgogUEdFTj0JCVBhcnNlci9wZ2VuJChFWEUpCiAKLVBTUkNTPQkJXAotCQlQYXJzZXIvYWNjZWxlci5jIFwKLQkJUGFyc2VyL2dyYW1tYXIxLmMgXAotCQlQYXJzZXIvbGlzdG5vZGUuYyBcCi0JCVBhcnNlci9ub2RlLmMgXAotCQlQYXJzZXIvcGFyc2VyLmMgXAotCQlQYXJzZXIvYml0c2V0LmMgXAotCQlQYXJzZXIvbWV0YWdyYW1tYXIuYyBcCi0JCVBhcnNlci9maXJzdHNldHMuYyBcCi0JCVBhcnNlci9ncmFtbWFyLmMgXAotCQlQYXJzZXIvcGdlbi5jCi0KIFBPQkpTPQkJXAogCQlQYXJzZXIvYWNjZWxlci5vIFwKIAkJUGFyc2VyL2dyYW1tYXIxLm8gXApAQCAtMzA3LDE2ICsyOTcsNiBAQAogCiBQQVJTRVJfT0JKUz0JJChQT0JKUykgUGFyc2VyL215cmVhZGxpbmUubyBQYXJzZXIvcGFyc2V0b2subyBQYXJzZXIvdG9rZW5pemVyLm8KIAotUEdTUkNTPQkJXAotCQlPYmplY3RzL29ibWFsbG9jLmMgXAotCQlQeXRob24vZHluYW1pY19hbm5vdGF0aW9ucy5jIFwKLQkJUHl0aG9uL215c25wcmludGYuYyBcCi0JCVB5dGhvbi9weWN0eXBlLmMgXAotCQlQYXJzZXIvdG9rZW5pemVyX3BnZW4uYyBcCi0JCVBhcnNlci9wcmludGdyYW1tYXIuYyBcCi0JCVBhcnNlci9wYXJzZXRva19wZ2VuLmMgXAotCQlQYXJzZXIvcGdlbm1haW4uYwotCiBQR09CSlM9CQlcCiAJCU9iamVjdHMvb2JtYWxsb2MubyBcCiAJCVB5dGhvbi9keW5hbWljX2Fubm90YXRpb25zLm8gXApAQCAtMzMyLDcgKzMxMiw2IEBACiAJCSQoc3JjZGlyKS9JbmNsdWRlL3BhcnNldG9rLmggXAogCQkkKHNyY2RpcikvUGFyc2VyL3Rva2VuaXplci5oCiAKLVBHRU5TUkNTPQkkKFBTUkNTKSAkKFBHU1JDUykKIFBHRU5PQkpTPQkkKFBPQkpTKSAkKFBHT0JKUykKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQEAgLTM0MSw3ICszMjAsNyBAQAogT1BDT0RFX0hfU0NSSVBUPSAkKHNyY2RpcikvVG9vbHMvc2NyaXB0cy9nZW5lcmF0ZV9vcGNvZGVfaC5weQogT1BDT0RFX0g9CSQoT1BDT0RFX0hfRElSKS9vcGNvZGUuaAogT1BDT0RFX0hfR0VOPQkkKFBZVEhPTl9GT1JfR0VOKSAkKE9QQ09ERV9IX1NDUklQVCkgJChzcmNkaXIpL0xpYi9vcGNvZGUucHkgJChPUENPREVfSCkKLSMKKwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgQVNUCiBBU1RfSF9ESVI9CUluY2x1ZGUKQEAgLTQxNyw3ICszOTYsOCBAQAogCQlQeXRob24vJChEWU5MT0FERklMRSkgXAogCQkkKExJQk9CSlMpIFwKIAkJJChNQUNIREVQX09CSlMpIFwKLQkJJChUSFJFQURPQkopCisJCSQoVEhSRUFET0JKKSBcCisJCSQoRFRSQUNFX09CSlMpCiAKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQEAgLTQ3MSwxMyArNDUxLDIxIEBACiAJCSQoT0JKRUNUX09CSlMpIFwKIAkJJChQWVRIT05fT0JKUykgXAogCQkkKE1PRFVMRV9PQkpTKSBcCi0JCSQoU0lHTkFMX09CSlMpIFwKIAkJJChNT0RPQkpTKQogCiBMSUJSQVJZX09CSlM9CVwKIAkJJChMSUJSQVJZX09CSlNfT01JVF9GUk9aRU4pIFwKIAkJUHl0aG9uL2Zyb3plbi5vCiAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIERUcmFjZQorCisjIE9uIHNvbWUgc3lzdGVtcywgb2JqZWN0IGZpbGVzIHRoYXQgcmVmZXJlbmNlIERUcmFjZSBwcm9iZXMgbmVlZCB0byBiZSBtb2RpZmllZAorIyBpbi1wbGFjZSBieSBkdHJhY2UoMSkuCitEVFJBQ0VfREVQUyA9IFwKKwlQeXRob24vY2V2YWwubworIyBYWFg6IHNob3VsZCBnY21vZHVsZSwgZXRjLiBiZSBoZXJlLCB0b28/CisKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgUnVsZXMKIApAQCAtNTMzLDE1ICs1MjEsMjMgQEAKIAkgICAgLS1iYXNlLWRpcmVjdG9yeSAkKHJlYWxwYXRoICQoYWJzX2J1aWxkZGlyKSkgXAogCSAgICAtLXBhdGggJChyZWFscGF0aCAkKGFic19zcmNkaXIpKSBcCiAJICAgIC0tb3V0cHV0LWZpbGUgJChDT1ZFUkFHRV9JTkZPKQotCTogIyByZW1vdmUgM3JkIHBhcnR5IG1vZHVsZXMgYW5kIHN5c3RlbSBoZWFkZXJzCisJOiAjIHJlbW92ZSAzcmQgcGFydHkgbW9kdWxlcywgc3lzdGVtIGhlYWRlcnMgYW5kIGludGVybmFsIGZpbGVzIHdpdGgKKwk6ICMgZGVidWcsIHRlc3Qgb3IgZHVtbXkgZnVuY3Rpb25zLgogCUBsY292IC0tcmVtb3ZlICQoQ09WRVJBR0VfSU5GTykgXAorCSAgICAnKi9Nb2R1bGVzL19ibGFrZTIvaW1wbC8qJyBcCiAJICAgICcqL01vZHVsZXMvX2N0eXBlcy9saWJmZmkqLyonIFwKIAkgICAgJyovTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy8qJyBcCisJICAgICcqL01vZHVsZXMvX3NoYTMva2NwLyonIFwKIAkgICAgJyovTW9kdWxlcy9leHBhdC8qJyBcCiAJICAgICcqL01vZHVsZXMvemxpYi8qJyBcCiAJICAgICcqL0luY2x1ZGUvKicgXAorCSAgICAnKi9Nb2R1bGVzL3h4Ki5jJyBcCisJICAgICcqL1BhcnNlci9saXN0bm9kZS5jJyBcCisJICAgICcqL1B5dGhvbi9weWZwZS5jJyBcCisJICAgICcqL1B5dGhvbi9weXN0cmNtcC5jJyBcCiAJICAgICcvdXNyL2luY2x1ZGUvKicgXAogCSAgICAnL3Vzci9sb2NhbC9pbmNsdWRlLyonIFwKKwkgICAgJy91c3IvbGliL2djYy8qJyBcCiAJICAgIC0tb3V0cHV0LWZpbGUgJChDT1ZFUkFHRV9JTkZPKQogCUBnZW5odG1sICQoQ09WRVJBR0VfSU5GTykgLS1vdXRwdXQtZGlyZWN0b3J5ICQoQ09WRVJBR0VfUkVQT1JUKSBcCiAJICAgICQoQ09WRVJBR0VfUkVQT1JUX09QVElPTlMpCkBAIC01NjQsNyArNTYwLDcgQEAKICMgUnVuICJBcmd1bWVudCBDbGluaWMiIG92ZXIgYWxsIHNvdXJjZSBmaWxlcwogIyAoZGVwZW5kcyBvbiBweXRob24gaGF2aW5nIGFscmVhZHkgYmVlbiBidWlsdCkKIC5QSE9OWT1jbGluaWMKLWNsaW5pYzogJChCVUlMRFBZVEhPTikKK2NsaW5pYzogJChCVUlMRFBZVEhPTikgJChzcmNkaXIpL01vZHVsZXMvX2JsYWtlMi9ibGFrZTJzX2ltcGwuYwogCSQoUlVOU0hBUkVEKSAkKFBZVEhPTl9GT1JfQlVJTEQpIC4vVG9vbHMvY2xpbmljL2NsaW5pYy5weSAtLW1ha2UKIAogIyBCdWlsZCB0aGUgaW50ZXJwcmV0ZXIKQEAgLTU3Miw3ICs1NjgsNyBAQAogCSQoTElOS0NDKSAkKFBZX0xERkxBR1MpICQoTElOS0ZPUlNIQVJFRCkgLW8gJEAgUHJvZ3JhbXMvcHl0aG9uLm8gJChCTERMSUJSQVJZKSAkKExJQlMpICQoTU9ETElCUykgJChTWVNMSUJTKSAkKExETEFTVCkKIAogcGxhdGZvcm06ICQoQlVJTERQWVRIT04pIHB5YnVpbGRkaXIudHh0Ci0JJChSVU5TSEFSRUQpICQoUFlUSE9OX0ZPUl9CVUlMRCkgLWMgJ2ltcG9ydCBzeXMgOyBmcm9tIHN5c2NvbmZpZyBpbXBvcnQgZ2V0X3BsYXRmb3JtIDsgcHJpbnQoZ2V0X3BsYXRmb3JtKCkrIi0iK3N5cy52ZXJzaW9uWzA6M10pJyA+cGxhdGZvcm0KKwkkKFJVTlNIQVJFRCkgJChQWVRIT05fRk9SX0JVSUxEKSAtYyAnaW1wb3J0IHN5cyA7IGZyb20gc3lzY29uZmlnIGltcG9ydCBnZXRfcGxhdGZvcm0gOyBwcmludCgiJXMtJWQuJWQiICUgKGdldF9wbGF0Zm9ybSgpLCAqc3lzLnZlcnNpb25faW5mb1s6Ml0pKScgPnBsYXRmb3JtCiAKICMgQ3JlYXRlIGJ1aWxkIGRpcmVjdG9yeSBhbmQgZ2VuZXJhdGUgdGhlIHN5c2NvbmZpZyBidWlsZC10aW1lIGRhdGEgdGhlcmUuCiAjIHB5YnVpbGRkaXIudHh0IGNvbnRhaW5zIHRoZSBuYW1lIG9mIHRoZSBidWlsZCBkaXIgYW5kIGlzIHVzZWQgZm9yCkBAIC01OTQsNiArNTkwLDExIEBACiBNb2R1bGVzL19tYXRoLm86IE1vZHVsZXMvX21hdGguYyBNb2R1bGVzL19tYXRoLmgKIAkkKENDKSAtYyAkKENDU0hBUkVEKSAkKFBZX0NPUkVfQ0ZMQUdTKSAtbyAkQCAkPAogCisjIGJsYWtlMnMgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBibGFrZTJiCiskKHNyY2RpcikvTW9kdWxlcy9fYmxha2UyL2JsYWtlMnNfaW1wbC5jOiAkKEJVSUxEUFlUSE9OKSAkKHNyY2RpcikvTW9kdWxlcy9fYmxha2UyL2JsYWtlMmJfaW1wbC5jICQoc3JjZGlyKS9Nb2R1bGVzL19ibGFrZTIvYmxha2UyYjJzLnB5CisJJChSVU5TSEFSRUQpICQoUFlUSE9OX0ZPUl9CVUlMRCkgJChzcmNkaXIpL01vZHVsZXMvX2JsYWtlMi9ibGFrZTJiMnMucHkKKwkkKFJVTlNIQVJFRCkgJChQWVRIT05fRk9SX0JVSUxEKSAkKHNyY2RpcikvVG9vbHMvY2xpbmljL2NsaW5pYy5weSAtZiAkQAorCiAjIEJ1aWxkIHRoZSBzaGFyZWQgbW9kdWxlcwogIyBVbmRlciBHTlUgbWFrZSwgTUFLRUZMQUdTIGFyZSBzb3J0ZWQgYW5kIG5vcm1hbGl6ZWQ7IHRoZSAncycgZm9yCiAjIC1zLCAtLXNpbGVudCBvciAtLXF1aWV0IGlzIGFsd2F5cyB0aGUgZmlyc3QgY2hhci4KQEAgLTYwNyw2ICs2MDgsNyBAQAogCQlfVENMVEtfSU5DTFVERVM9JyQoVENMVEtfSU5DTFVERVMpJyBfVENMVEtfTElCUz0nJChUQ0xUS19MSUJTKScgXAogCQkkKFBZVEhPTl9GT1JfQlVJTEQpICQoc3JjZGlyKS9zZXR1cC5weSAkJHF1aWV0IGJ1aWxkCiAKKwogIyBCdWlsZCBzdGF0aWMgbGlicmFyeQogIyBhdm9pZCBsb25nIGNvbW1hbmQgbGluZXMsIHNhbWUgYXMgTElCUkFSWV9PQkpTCiAkKExJQlJBUlkpOiAkKExJQlJBUllfT0JKUykKQEAgLTYxNSw3ICs2MTcsNyBAQAogCSQoQVIpICQoQVJGTEFHUykgJEAgJChQQVJTRVJfT0JKUykKIAkkKEFSKSAkKEFSRkxBR1MpICRAICQoT0JKRUNUX09CSlMpCiAJJChBUikgJChBUkZMQUdTKSAkQCAkKFBZVEhPTl9PQkpTKSBQeXRob24vZnJvemVuLm8KLQkkKEFSKSAkKEFSRkxBR1MpICRAICQoTU9EVUxFX09CSlMpICQoU0lHTkFMX09CSlMpCisJJChBUikgJChBUkZMQUdTKSAkQCAkKE1PRFVMRV9PQkpTKQogCSQoQVIpICQoQVJGTEFHUykgJEAgJChNT0RPQkpTKQogCSQoUkFOTElCKSAkQAogCkBAIC03MTksMTEgKzcyMSwxMSBAQAogUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWI6IFByb2dyYW1zL19mcmVlemVfaW1wb3J0bGliLm8gJChMSUJSQVJZX09CSlNfT01JVF9GUk9aRU4pCiAJJChMSU5LQ0MpICQoUFlfTERGTEFHUykgLW8gJEAgUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIubyAkKExJQlJBUllfT0JKU19PTUlUX0ZST1pFTikgJChMSUJTKSAkKE1PRExJQlMpICQoU1lTTElCUykgJChMRExBU1QpCiAKLVB5dGhvbi9pbXBvcnRsaWJfZXh0ZXJuYWwuaDogQEdFTkVSQVRFRF9DT01NRU5UQCAkKHNyY2RpcikvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwX2V4dGVybmFsLnB5IFByb2dyYW1zL19mcmVlemVfaW1wb3J0bGliCitQeXRob24vaW1wb3J0bGliX2V4dGVybmFsLmg6IEBHRU5FUkFURURfQ09NTUVOVEAgJChzcmNkaXIpL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcF9leHRlcm5hbC5weSBQcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYiBQeXRob24vbWFyc2hhbC5jCiAJLi9Qcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYiBcCiAJICAgICQoc3JjZGlyKS9MaWIvaW1wb3J0bGliL19ib290c3RyYXBfZXh0ZXJuYWwucHkgUHl0aG9uL2ltcG9ydGxpYl9leHRlcm5hbC5oCiAKLVB5dGhvbi9pbXBvcnRsaWIuaDogQEdFTkVSQVRFRF9DT01NRU5UQCAkKHNyY2RpcikvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5IFByb2dyYW1zL19mcmVlemVfaW1wb3J0bGliCitQeXRob24vaW1wb3J0bGliLmg6IEBHRU5FUkFURURfQ09NTUVOVEAgJChzcmNkaXIpL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcC5weSBQcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYiBQeXRob24vbWFyc2hhbC5jCiAJLi9Qcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYiBcCiAJICAgICQoc3JjZGlyKS9MaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkgUHl0aG9uL2ltcG9ydGxpYi5oCiAKQEAgLTczNSw3ICs3MzcsNiBAQAogCQkkKE9CSkVDVF9PQkpTKSBcCiAJCSQoUFlUSE9OX09CSlMpIFwKIAkJJChNT0RVTEVfT0JKUykgXAotCQkkKFNJR05BTF9PQkpTKSBcCiAJCSQoTU9ET0JKUykgXAogCQkkKHNyY2RpcikvTW9kdWxlcy9nZXRidWlsZGluZm8uYwogCSQoQ0MpIC1jICQoUFlfQ09SRV9DRkxBR1MpIFwKQEAgLTc4MSw2ICs3ODIsNyBAQAogUHl0aG9uL3N5c21vZHVsZS5vOiAkKHNyY2RpcikvUHl0aG9uL3N5c21vZHVsZS5jIE1ha2VmaWxlCiAJJChDQykgLWMgJChQWV9DT1JFX0NGTEFHUykgXAogCQktREFCSUZMQUdTPSciJChBQklGTEFHUykiJyBcCisJCSQoTVVMVElBUkNIX0NQUEZMQUdTKSBcCiAJCS1vICRAICQoc3JjZGlyKS9QeXRob24vc3lzbW9kdWxlLmMKIAogJChJT19PQkpTKTogJChJT19IKQpAQCAtODU2LDEzICs4NTgsMTQgQEAKIAkJJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL3VuaWNvZGVfZm9ybWF0LmggXAogCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvdW5pY29kZWRlZnMuaAogCitPYmplY3RzL2J5dGVzX21ldGhvZHMubzogJChzcmNkaXIpL09iamVjdHMvYnl0ZXNfbWV0aG9kcy5jICQoQllURVNUUl9ERVBTKQogT2JqZWN0cy9ieXRlc29iamVjdC5vOiAkKHNyY2RpcikvT2JqZWN0cy9ieXRlc29iamVjdC5jICQoQllURVNUUl9ERVBTKQotCiBPYmplY3RzL2J5dGVhcnJheW9iamVjdC5vOiAkKHNyY2RpcikvT2JqZWN0cy9ieXRlYXJyYXlvYmplY3QuYyAkKEJZVEVTVFJfREVQUykKIAogT2JqZWN0cy91bmljb2Rlb2JqZWN0Lm86ICQoc3JjZGlyKS9PYmplY3RzL3VuaWNvZGVvYmplY3QuYyAkKFVOSUNPREVfREVQUykKIAotT2JqZWN0cy9kaWN0b2JqZWN0Lm86ICQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi9lcS5oCitPYmplY3RzL29kaWN0b2JqZWN0Lm86ICQoc3JjZGlyKS9PYmplY3RzL2RpY3QtY29tbW9uLmgKK09iamVjdHMvZGljdG9iamVjdC5vOiAkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvZXEuaCAkKHNyY2RpcikvT2JqZWN0cy9kaWN0LWNvbW1vbi5oCiBPYmplY3RzL3NldG9iamVjdC5vOiAkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvZXEuaAogCiAkKE9QQ09ERVRBUkdFVFNfSCk6ICQoT1BDT0RFVEFSR0VUR0VOX0ZJTEVTKQpAQCAtODcyLDYgKzg3NSwxOCBAQAogCiBQeXRob24vZnJvemVuLm86IFB5dGhvbi9pbXBvcnRsaWIuaCBQeXRob24vaW1wb3J0bGliX2V4dGVybmFsLmgKIAorIyBHZW5lcmF0ZSBEVHJhY2UgcHJvYmUgbWFjcm9zLCB0aGVuIHJlbmFtZSB0aGVtIChQWVRIT05fIC0+IFB5RFRyYWNlXykgdG8KKyMgZm9sbG93IG91ciBuYW1pbmcgY29udmVudGlvbnMuIGR0cmFjZSgxKSB1c2VzIHRoZSBvdXRwdXQgZmlsZW5hbWUgdG8gZ2VuZXJhdGUKKyMgYW4gaW5jbHVkZSBndWFyZCwgc28gd2UgY2FuJ3QgdXNlIGEgcGlwZWxpbmUgdG8gdHJhbnNmb3JtIGl0cyBvdXRwdXQuCitJbmNsdWRlL3B5ZHRyYWNlX3Byb2Jlcy5oOiAkKHNyY2RpcikvSW5jbHVkZS9weWR0cmFjZS5kCisJJChEVFJBQ0UpICQoREZMQUdTKSAtbyAkQCAtaCAtcyAkPAorCTogc2VkIGluLXBsYWNlIGVkaXQgd2l0aCBQT1NJWC1vbmx5IHRvb2xzCisJc2VkICdzL1BZVEhPTl8vUHlEVHJhY2VfLycgJEAgPiAkQC50bXAKKwltdiAkQC50bXAgJEAKKworUHl0aG9uL3B5ZHRyYWNlLm86ICQoc3JjZGlyKS9JbmNsdWRlL3B5ZHRyYWNlLmQgJChEVFJBQ0VfREVQUykKKwkkKERUUkFDRSkgJChERkxBR1MpIC1vICRAIC1HIC1zICQ8ICQoRFRSQUNFX0RFUFMpCisKIE9iamVjdHMvdHlwZW9iamVjdC5vOiBPYmplY3RzL3R5cGVzbG90cy5pbmMKIE9iamVjdHMvdHlwZXNsb3RzLmluYzogJChzcmNkaXIpL0luY2x1ZGUvdHlwZXNsb3RzLmggJChzcmNkaXIpL09iamVjdHMvdHlwZXNsb3RzLnB5CiAJJChQWVRIT05fRk9SX0dFTikgJChzcmNkaXIpL09iamVjdHMvdHlwZXNsb3RzLnB5IDwgJChzcmNkaXIpL0luY2x1ZGUvdHlwZXNsb3RzLmggT2JqZWN0cy90eXBlc2xvdHMuaW5jCkBAIC05MjksNiArOTQ0LDcgQEAKIAkJJChzcmNkaXIpL0luY2x1ZGUvb2JqaW1wbC5oIFwKIAkJJChPUENPREVfSCkgXAogCQkkKHNyY2RpcikvSW5jbHVkZS9vc2RlZnMuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL29zbW9kdWxlLmggXAogCQkkKHNyY2RpcikvSW5jbHVkZS9wYXRjaGxldmVsLmggXAogCQkkKHNyY2RpcikvSW5jbHVkZS9wZ2VuLmggXAogCQkkKHNyY2RpcikvSW5jbHVkZS9wZ2VuaGVhZGVycy5oIFwKQEAgLTkzNyw2ICs5NTMsNyBAQAogCQkkKHNyY2RpcikvSW5jbHVkZS9weWNhcHN1bGUuaCBcCiAJCSQoc3JjZGlyKS9JbmNsdWRlL3B5Y3R5cGUuaCBcCiAJCSQoc3JjZGlyKS9JbmNsdWRlL3B5ZGVidWcuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3B5ZHRyYWNlLmggXAogCQkkKHNyY2RpcikvSW5jbHVkZS9weWVycm9ycy5oIFwKIAkJJChzcmNkaXIpL0luY2x1ZGUvcHlmcGUuaCBcCiAJCSQoc3JjZGlyKS9JbmNsdWRlL3B5aGFzaC5oIFwKQEAgLTk2OCw3ICs5ODUsOCBAQAogCQkkKHNyY2RpcikvSW5jbHVkZS93ZWFrcmVmb2JqZWN0LmggXAogCQlweWNvbmZpZy5oIFwKIAkJJChQQVJTRVJfSEVBREVSUykgXAotCQkkKEFTVF9IKQorCQkkKEFTVF9IKSBcCisJCSQoRFRSQUNFX0hFQURFUlMpCiAKICQoTElCUkFSWV9PQkpTKSAkKE1PRE9CSlMpIFByb2dyYW1zL3B5dGhvbi5vOiAkKFBZVEhPTl9IRUFERVJTKQogCkBAIC05NzgsNyArOTk2LDcgQEAKIFRFU1RPUFRTPQkkKEVYVFJBVEVTVE9QVFMpCiBURVNUUFlUSE9OPQkkKFJVTlNIQVJFRCkgLi8kKEJVSUxEUFlUSE9OKSAkKFRFU1RQWVRIT05PUFRTKQogVEVTVFJVTk5FUj0JJChURVNUUFlUSE9OKSAkKHNyY2RpcikvVG9vbHMvc2NyaXB0cy9ydW5fdGVzdHMucHkKLVRFU1RUSU1FT1VUPQkzNjAwCitURVNUVElNRU9VVD0JMTIwMAogCiAjIFJ1biBhIGJhc2ljIHNldCBvZiByZWdyZXNzaW9uIHRlc3RzLgogIyBUaGlzIGV4Y2x1ZGVzIHNvbWUgdGVzdHMgdGhhdCBhcmUgcGFydGljdWxhcmx5IHJlc291cmNlLWludGVuc2l2ZS4KQEAgLTEwMTYsNyArMTAzNCw3IEBACiAJCS1AaWYgd2hpY2ggcHlidWlsZGJvdC5pZGVudGlmeSA+L2Rldi9udWxsIDI+JjE7IHRoZW4gXAogCQkJcHlidWlsZGJvdC5pZGVudGlmeSAiQ0M9JyQoQ0MpJyIgIkNYWD0nJChDWFgpJyI7IFwKIAkJZmkKLQkJJChURVNUUlVOTkVSKSAtaiAxIC11IGFsbCAtVyAtLXRpbWVvdXQ9JChURVNUVElNRU9VVCkgJChURVNUT1BUUykKKwkJJChURVNUUlVOTkVSKSAtaiAxIC11IGFsbCAtVyAtLXNsb3dlc3QgLS10aW1lb3V0PSQoVEVTVFRJTUVPVVQpICQoVEVTVE9QVFMpCiAKIFFVSUNLVEVTVE9QVFM9CSQoVEVTVE9QVFMpIC14IHRlc3Rfc3VicHJvY2VzcyB0ZXN0X2lvIHRlc3RfbGliMnRvMyBcCiAJCXRlc3RfbXVsdGlieXRlY29kZWMgdGVzdF91cmxsaWIyX2xvY2FsbmV0IHRlc3RfaXRlcnRvb2xzIFwKQEAgLTExNjksMTYgKzExODcsMTYgQEAKIAkoY2QgJChERVNURElSKSQoTUFORElSKS9tYW4xOyAkKExOKSAtcyBweXRob24kKFZFUlNJT04pLjEgcHl0aG9uMy4xKQogCiAjIEluc3RhbGwgdGhlIGxpYnJhcnkKLVBMQVRESVI9CUBQTEFURElSQAotTUFDSERFUFM9CSQoUExBVERJUikKIFhNTExJQlNVQkRJUlM9ICB4bWwgeG1sL2RvbSB4bWwvZXRyZWUgeG1sL3BhcnNlcnMgeG1sL3NheAogTElCU1VCRElSUz0JdGtpbnRlciB0a2ludGVyL3Rlc3QgdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlciBcCiAJCXRraW50ZXIvdGVzdC90ZXN0X3R0ayBzaXRlLXBhY2thZ2VzIHRlc3QgXAogCQl0ZXN0L2F1ZGlvZGF0YSBcCiAJCXRlc3QvY2FwYXRoIHRlc3QvZGF0YSBcCiAJCXRlc3QvY2prZW5jb2RpbmdzIHRlc3QvZGVjaW1hbHRlc3RkYXRhIHRlc3QveG1sdGVzdGRhdGEgXAorCQl0ZXN0L2R0cmFjZWRhdGEgXAogCQl0ZXN0L2VpbnRyZGF0YSBcCiAJCXRlc3QvaW1naGRyZGF0YSBcCisJCXRlc3QvbGlicmVncnRlc3QgXAogCQl0ZXN0L3N1YnByb2Nlc3NkYXRhIHRlc3Qvc25kaGRyZGF0YSB0ZXN0L3N1cHBvcnQgXAogCQl0ZXN0L3RyYWNlZG1vZHVsZXMgdGVzdC9lbmNvZGVkX21vZHVsZXMgXAogCQl0ZXN0L3Rlc3RfaW1wb3J0IFwKQEAgLTEyMjcsOCArMTI0NSw4IEBACiAJCW11bHRpcHJvY2Vzc2luZyBtdWx0aXByb2Nlc3NpbmcvZHVtbXkgXAogCQl1bml0dGVzdCB1bml0dGVzdC90ZXN0IHVuaXR0ZXN0L3Rlc3QvdGVzdG1vY2sgXAogCQl2ZW52IHZlbnYvc2NyaXB0cyB2ZW52L3NjcmlwdHMvcG9zaXggXAotCQljdXJzZXMgcHlkb2NfZGF0YSAkKE1BQ0hERVBTKQotbGliaW5zdGFsbDoJYnVpbGRfYWxsICQoc3JjZGlyKS9MaWIvJChQTEFURElSKSAkKHNyY2RpcikvTW9kdWxlcy94eG1vZHVsZS5jCisJCWN1cnNlcyBweWRvY19kYXRhCitsaWJpbnN0YWxsOglidWlsZF9hbGwgJChzcmNkaXIpL01vZHVsZXMveHhtb2R1bGUuYwogCUBmb3IgaSBpbiAkKFNDUklQVERJUikgJChMSUJERVNUKTsgXAogCWRvIFwKIAkJaWYgdGVzdCAhIC1kICQoREVTVERJUikkJGk7IHRoZW4gXApAQCAtMTI0OCw3ICsxMjY2LDcgQEAKIAkJZWxzZQl0cnVlOyBcCiAJCWZpOyBcCiAJZG9uZQotCUBmb3IgaSBpbiAkKHNyY2RpcikvTGliLyoucHkgYGNhdCBweWJ1aWxkZGlyLnR4dGAvX3N5c2NvbmZpZ2RhdGEucHk7IFwKKwlAZm9yIGkgaW4gJChzcmNkaXIpL0xpYi8qLnB5OyBcCiAJZG8gXAogCQlpZiB0ZXN0IC14ICQkaTsgdGhlbiBcCiAJCQkkKElOU1RBTExfU0NSSVBUKSAkJGkgJChERVNURElSKSQoTElCREVTVCk7IFwKQEAgLTEyODMsNiArMTMwMSw4IEBACiAJCQllc2FjOyBcCiAJCWRvbmU7IFwKIAlkb25lCisJJChJTlNUQUxMX0RBVEEpIGBjYXQgcHlidWlsZGRpci50eHRgL19zeXNjb25maWdkYXRhXyQoQUJJRkxBR1MpXyQoTUFDSERFUClfJChNVUxUSUFSQ0gpLnB5IFwKKwkJJChERVNURElSKSQoTElCREVTVCk7IFwKIAkkKElOU1RBTExfREFUQSkgJChzcmNkaXIpL0xJQ0VOU0UgJChERVNURElSKSQoTElCREVTVCkvTElDRU5TRS50eHQKIAlpZiB0ZXN0IC1kICQoREVTVERJUikkKExJQkRFU1QpL2Rpc3R1dGlscy90ZXN0czsgdGhlbiBcCiAJCSQoSU5TVEFMTF9EQVRBKSAkKHNyY2RpcikvTW9kdWxlcy94eG1vZHVsZS5jIFwKQEAgLTEzMjAsMjMgKzEzNDAsNiBAQAogCS1QWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpICQoUlVOU0hBUkVEKSBcCiAJCSQoUFlUSE9OX0ZPUl9CVUlMRCkgLW0gbGliMnRvMy5wZ2VuMi5kcml2ZXIgJChERVNURElSKSQoTElCREVTVCkvbGliMnRvMy9QYXR0ZXJuR3JhbW1hci50eHQKIAotIyBDcmVhdGUgdGhlIFBMQVRESVIgc291cmNlIGRpcmVjdG9yeSwgaWYgb25lIHdhc24ndCBkaXN0cmlidXRlZC4uCi0kKHNyY2RpcikvTGliLyQoUExBVERJUik6Ci0JbWtkaXIgJChzcmNkaXIpL0xpYi8kKFBMQVRESVIpCi0JY3AgJChzcmNkaXIpL0xpYi9wbGF0LWdlbmVyaWMvcmVnZW4gJChzcmNkaXIpL0xpYi8kKFBMQVRESVIpL3JlZ2VuCi0JZXhwb3J0IFBBVEg7IFBBVEg9ImBwd2RgOiQkUEFUSCI7IFwKLQlleHBvcnQgUFlUSE9OUEFUSDsgUFlUSE9OUEFUSD0iYHB3ZGAvTGliIjsgXAotCWV4cG9ydCBEWUxEX0ZSQU1FV09SS19QQVRIOyBEWUxEX0ZSQU1FV09SS19QQVRIPSJgcHdkYCI7IFwKLQlleHBvcnQgRVhFOyBFWEU9IiQoQlVJTERFWEUpIjsgXAotCWlmIFsgLW4gIiQoTVVMVElBUkNIKSIgXTsgdGhlbiBleHBvcnQgTVVMVElBUkNIOyBNVUxUSUFSQ0g9JChNVUxUSUFSQ0gpOyBmaTsgXAotCWV4cG9ydCBQWVRIT05fRk9SX0JVSUxEOyBcCi0JaWYgWyAiJChCVUlMRF9HTlVfVFlQRSkiID0gIiQoSE9TVF9HTlVfVFlQRSkiIF07IHRoZW4gXAotCSAgUFlUSE9OX0ZPUl9CVUlMRD0iJChCVUlMRFBZVEhPTikiOyBcCi0JZWxzZSBcCi0JICBQWVRIT05fRk9SX0JVSUxEPSIkKFBZVEhPTl9GT1JfQlVJTEQpIjsgXAotCWZpOyBcCi0JY2QgJChzcmNkaXIpL0xpYi8kKFBMQVRESVIpOyAkKFJVTlNIQVJFRCkgLi9yZWdlbgotCiBweXRob24tY29uZmlnOiAkKHNyY2RpcikvTWlzYy9weXRob24tY29uZmlnLmluIE1pc2MvcHl0aG9uLWNvbmZpZy5zaAogCSMgU3Vic3RpdHV0aW9uIGhhcHBlbnMgaGVyZSwgYXMgdGhlIGNvbXBsZXRlbHktZXhwYW5kZWQgQklORElSCiAJIyBpcyBub3QgYXZhaWxhYmxlIGluIGNvbmZpZ3VyZQpAQCAtMTQzMyw3ICsxNDM2LDcgQEAKIAkJLS1pbnN0YWxsLXNjcmlwdHM9JChCSU5ESVIpIFwKIAkJLS1pbnN0YWxsLXBsYXRsaWI9JChERVNUU0hBUkVEKSBcCiAJCS0tcm9vdD0kKERFU1RESVIpLwotCS1ybSAkKERFU1RESVIpJChERVNUU0hBUkVEKS9fc3lzY29uZmlnZGF0YS5weQorCS1ybSAkKERFU1RESVIpJChERVNUU0hBUkVEKS9fc3lzY29uZmlnZGF0YV8kKEFCSUZMQUdTKV8kKE1BQ0hERVApXyQoTVVMVElBUkNIKS5weQogCS1ybSAtciAkKERFU1RESVIpJChERVNUU0hBUkVEKS9fX3B5Y2FjaGVfXwogCiAjIEhlcmUgYXJlIGEgY291cGxlIG9mIHRhcmdldHMgZm9yIE1hY09TWCBhZ2FpbiwgdG8gaW5zdGFsbCBhIGZ1bGwKQEAgLTE0NzksMTAgKzE0ODIsMTAgQEAKICMgSW5zdGFsbCBhIG51bWJlciBvZiBzeW1saW5rcyB0byBrZWVwIHNvZnR3YXJlIHRoYXQgZXhwZWN0cyBhIG5vcm1hbCB1bml4CiAjIGluc3RhbGwgKHdoaWNoIGluY2x1ZGVzIHB5dGhvbi1jb25maWcpIGhhcHB5LgogZnJhbWV3b3JraW5zdGFsbG1hY2xpYjoKLQkkKExOKSAtZnMgIi4uLy4uLy4uLyQoUFlUSE9ORlJBTUVXT1JLKSIgIiQoREVTVERJUikkKHByZWZpeCkvbGliL3B5dGhvbiQoVkVSU0lPTikvY29uZmlnLSQoTERWRVJTSU9OKS9saWJweXRob24kKExEVkVSU0lPTikuYSIKLQkkKExOKSAtZnMgIi4uLy4uLy4uLyQoUFlUSE9ORlJBTUVXT1JLKSIgIiQoREVTVERJUikkKHByZWZpeCkvbGliL3B5dGhvbiQoVkVSU0lPTikvY29uZmlnLSQoTERWRVJTSU9OKS9saWJweXRob24kKExEVkVSU0lPTikuZHlsaWIiCi0JJChMTikgLWZzICIuLi8uLi8uLi8kKFBZVEhPTkZSQU1FV09SSykiICIkKERFU1RESVIpJChwcmVmaXgpL2xpYi9weXRob24kKFZFUlNJT04pL2NvbmZpZy0kKExEVkVSU0lPTikvbGlicHl0aG9uJChWRVJTSU9OKS5hIgotCSQoTE4pIC1mcyAiLi4vLi4vLi4vJChQWVRIT05GUkFNRVdPUkspIiAiJChERVNURElSKSQocHJlZml4KS9saWIvcHl0aG9uJChWRVJTSU9OKS9jb25maWctJChMRFZFUlNJT04pL2xpYnB5dGhvbiQoVkVSU0lPTikuZHlsaWIiCisJJChMTikgLWZzICIuLi8uLi8uLi8kKFBZVEhPTkZSQU1FV09SSykiICIkKERFU1RESVIpJChMSUJQTCkvbGlicHl0aG9uJChMRFZFUlNJT04pLmEiCisJJChMTikgLWZzICIuLi8uLi8uLi8kKFBZVEhPTkZSQU1FV09SSykiICIkKERFU1RESVIpJChMSUJQTCkvbGlicHl0aG9uJChMRFZFUlNJT04pLmR5bGliIgorCSQoTE4pIC1mcyAiLi4vLi4vLi4vJChQWVRIT05GUkFNRVdPUkspIiAiJChERVNURElSKSQoTElCUEwpL2xpYnB5dGhvbiQoVkVSU0lPTikuYSIKKwkkKExOKSAtZnMgIi4uLy4uLy4uLyQoUFlUSE9ORlJBTUVXT1JLKSIgIiQoREVTVERJUikkKExJQlBMKS9saWJweXRob24kKFZFUlNJT04pLmR5bGliIgogCSQoTE4pIC1mcyAiLi4vJChQWVRIT05GUkFNRVdPUkspIiAiJChERVNURElSKSQocHJlZml4KS9saWIvbGlicHl0aG9uJChMRFZFUlNJT04pLmR5bGliIgogCSQoTE4pIC1mcyAiLi4vJChQWVRIT05GUkFNRVdPUkspIiAiJChERVNURElSKSQocHJlZml4KS9saWIvbGlicHl0aG9uJChWRVJTSU9OKS5keWxpYiIKIApAQCAtMTU5Nyw2ICsxNjAwLDcgQEAKIAktcm0gLWYgTGliL2xpYjJ0bzMvKkdyYW1tYXIqLnBpY2tsZQogCS1ybSAtZiBQcm9ncmFtcy9fdGVzdGVtYmVkIFByb2dyYW1zL19mcmVlemVfaW1wb3J0bGliCiAJLWZpbmQgYnVpbGQgLXR5cGUgZiAtYSAhIC1uYW1lICcqLmdjPz8nIC1leGVjIHJtIC1mIHt9ICc7JworCS1ybSAtZiBJbmNsdWRlL3B5ZHRyYWNlX3Byb2Jlcy5oCiAKIHByb2ZpbGUtcmVtb3ZhbDoKIAlmaW5kIC4gLW5hbWUgJyouZ2M/PycgLWV4ZWMgcm0gLWYge30gJzsnCkBAIC0xNjYxLDcgKzE2NjUsNiBAQAogCQktbyAtbmFtZSAnKi50bVNuaXBwZXQnIFwKIAkJLW8gLW5hbWUgJ1NldHVwJyBcCiAJCS1vIC1uYW1lICdTZXR1cC4qJyBcCi0JCS1vIC1uYW1lIHJlZ2VuIFwKIAkJLW8gLW5hbWUgUkVBRE1FIFwKIAkJLW8gLW5hbWUgTkVXUyBcCiAJCS1vIC1uYW1lIEhJU1RPUlkgXApkaWZmIC0tZ2l0IGEvTWlzYy9BQ0tTIGIvTWlzYy9BQ0tTCmluZGV4IGU0Yjg2MzkwLi43MzM3MGJhIDEwMDY0NAotLS0gYS9NaXNjL0FDS1MKKysrIGIvTWlzYy9BQ0tTCkBAIC0xMjAsNiArMTIwLDcgQEAKIFRob21hcyBCZWxsbWFuCiBBbGV4YW5kZXIg4oCc0KHQsNGI0LDigJ0gQmVsb3BvbHNreQogRWxpIEJlbmRlcnNreQorTmlraGlsIEJlbmVzY2gKIERhdmlkIEJlbmphbWluCiBPc2NhciBCZW5qYW1pbgogQW5kcmV3IEJlbm5ldHRzCkBAIC0xNTUsNiArMTU2LDcgQEAKIFBhdWwgQm9kZGllCiBNYXR0aGV3IEJvZWRpY2tlcgogUm9iaW4gQm9lcmRpamsKK05pa29sYXkgQm9nb3ljaGV2CiBEYXZpZCBCb2xlbgogV291dGVyIEJvbHN0ZXJsZWUKIEdhd2FpbiBCb2x0b24KQEAgLTI0Myw2ICsyNDUsNyBAQAogTWljaGFlbCBDZXRydWxvCiBEYXZlIENoYW1iZXJzCiBQYXNjYWwgQ2hhbWJvbgorTmljaG9sYXMgQ2hhbW1hcwogSm9obiBDaGFuZGxlcgogSHllLVNoaWsgQ2hhbmcKIEplZmZyZXkgQ2hhbmcKQEAgLTMwNywxNSArMzEwLDE4IEBACiBEYXZpZCBDb3VybmFwZWF1CiBKdWxpZW4gQ291cnRlYXUKIFN0ZXZlIENvdXNpbnMKK0ZyYW5jaXNjbyBDb3V6bwogQWxleCBDb3ZlbnRyeQogTWF0dGhldyBEaXhvbiBDb3dsZXMKIFJ5YW4gQ295bmVyCiBDaHJpc3RvcGhlciBBLiBDcmFpZwogSmVyZW15IENyYXZlbgogTGF1cmEgQ3JlaWdodG9uCitUeWxlciBDcm9tcHRvbgogU2ltb24gQ3Jvc3MKIEZlbGlwZSBDcnV6CiBEcmV3IENzaWxsYWcKK0FsZXNzYW5kcm8gQ3VjY2kKIEpvYXF1aW4gQ3VlbmNhIEFiZWxhCiBTZWJhc3RpYW4gQ3VmcmUKIEpvaG4gQ3VnaW5pCkBAIC0zNjAsNiArMzY2LDcgQEAKIFl2ZXMgRGlvbm5lCiBEYW5pZWwgRGl0dG1hcgogSm9zaXAgRGpvbG9uZ2EKK1dhbHRlciBEw7Zyd2FsZAogSmFyb21pciBEb2xlY2VrCiBJc21haWwgRG9ubWV6CiBSb2JlcnQgRG9ub2h1ZQpAQCAtMzg3LDcgKzM5NCw2IEBACiBLYXJtZW4gRHlrc3RyYQogSm9zaXAgRHpvbG9uZ2EKIE1heGltIER6dW1hbmVua28KLVdhbHRlciBEw7Zyd2FsZAogSGFucyBFY2thcmR0CiBSb2RvbHBobyBFY2toYXJkdAogVWxyaWNoIEVja2hhcmR0CkBAIC01NDYsOCArNTUyLDEwIEBACiBMYXJzIEd1c3TDpGJlbAogVGhvbWFzIEfDvHR0bGVyCiBKb25hcyBILgorSm9zZXBoIEhhY2ttYW4KIEJhcnJ5IEhhZGRvdwogUGhpbGlwcCBIYWdlbWVpc3RlcgorSm9obiBIYWdlbgogUGF1bCB0ZW4gSGFnZW4KIFJhc211cyBIYWhuCiBQZXRlciBIYWlnaHQKQEAgLTc4Niw2ICs3OTQsNyBAQAogTWFya28gS29odGFsYQogVmFqcmFza3kgS29rCiBHdWlkbyBLb2xsZXJpZQorSmFjZWsgS2/Fgm9kemllagogSmFjZWsgS29uaWVjem55CiBBcmthZHkgS29wbHlhcm92CiBQZXRlciBBLiBLb3JlbgpAQCAtNzk3LDYgKzgwNiw3IEBACiBKZXJ6eSBLb3plcmEKIE1ha3NpbSBLb3p5YXJjaHVrCiBTdGVmYW4gS3JhaAorUm9sZiBLcmFobAogQm9iIEtyYXMKIFNlYmFzdGlhbiBLcmVmdAogSG9sZ2VyIEtyZWtlbApAQCAtODI5LDYgKzgzOSw3IEBACiBUaW5vIExhbmdlCiBHbGVubiBMYW5nZm9yZAogQW5kcmV3IExhbmdtZWFkCitXb2xmZ2FuZyBMYW5nbmVyCiBEZXRsZWYgTGFubmVydAogU29yZW4gTGFyc2VuCiBBbW9zIExhdHRlaWVyCkBAIC04OTIsMjQgKzkwMywyNyBAQAogR3JlZ29yIExpbmdsCiBFdmVyZXR0IExpcG1hbgogTWlya28gTGlzcworQWxleGFuZGVyIExpdQogTmljayBMb2Nrd29vZAogU3RlcGhhbmllIExvY2t3b29kCitNYXJ0aW4gdm9uIEzDtndpcwogSHVnbyBMb3BlcyBUYXZhcmVzCiBHdWlsbGVybW8gTMOzcGV6LUFuZ2xhZGEKIEFubmUgTG9yZAorQWxleCBMb3JkVGhvcnNlbgogVG9tIExvcmVkbwogSnVzdGluIExvdmUKIE5lZCBKYWNrc29uIExvdmVseQogUGV0ZXIgTG92ZXR0CiBDaGFsbWVyIExvd2UKIEphc29uIExvd2UKLU1hcnRpbiB2b24gTMO2d2lzCiBUb255IExvd25kcwogUmF5IExveXphZ2EKIEthbmctSGFvIChLZW5ueSkgTHUKIEx1a2FzIEx1ZWcKIExvcmVuIEx1a2UKIEZyZWRyaWsgTHVuZGgKK01pa2UgTHVuZHkKIFpob25neXVlIEx1bwogTWFyayBMdXR6CiBUYXJhcyBMeWFwdW4KQEAgLTExNTEsOSArMTE2NSwxMSBAQAogR2VvZmYgUGhpbGJyaWNrCiBHYXZyaWUgUGhpbGlwc29uCiBBZHJpYW4gUGhpbGxpcHMKK0R1c3R5IFBoaWxsaXBzCiBDaHJpc3RvcGhlciBKLiBQaG9lbml4CiBKYW1lcyBQaWNrZXJpbmcKIE5lYWxlIFBpY2tldHQKK1N0ZXZlIFBpZXJjeQogSmltIFN0LiBQaWVycmUKIERhbiBQaWVyc29uCiBNYXJ0aWpuIFBpZXRlcnMKQEAgLTEyMDUsNiArMTIyMSw3IEBACiBCYXlhcmQgUmFuZGVsCiBWYXJwdSBSYW50YWxhCiBCcm9kaWUgUmFvCitSw6ltaSBSYW1waW4KIFNlbmtvIFJhc2ljCiBBbnR0aSBSYXNpbmVuCiBOaWtvbGF1cyBSYXRoCkBAIC0xMjU1LDYgKzEyNzIsNyBAQAogS2V2aW4gUm9kZ2VycwogU2VhbiBSb2RtYW4KIEdpYW1wYW9sbyBSb2RvbGEKK01hdXJvIFMuIE0uIFJvZHJpZ3VlcwogRWxzb24gUm9kcmlndWV6CiBBZGkgUm9pYmFuCiBMdWlzIFJvamFzCkBAIC0xMjk4LDYgKzEzMTYsNyBAQAogTWF0dGhpZXUgUwogUGF0cmljayBTYWJpbgogU8OpYmFzdGllbiBTYWJsw6kKK0FtaXQgU2FoYQogU3VtYW4gU2FoYQogSGFqaW1lIFNhaXRvdQogR2VvcmdlIFNha2tpcwpAQCAtMTMzMSw2ICsxMzUwLDcgQEAKIFBldGVyIFNjaG5laWRlci1LYW1wCiBBcnZpbiBTY2huZWxsCiBOb2ZhciBTY2huaWRlcgorRWQgU2Nob3V0ZW4KIFNjb3R0IFNjaHJhbQogUm9iaW4gU2NocmVpYmVyCiBDaGFkIEouIFNjaHJvZWRlcgpAQCAtMTQwNSw2ICsxNDI1LDcgQEAKIFJveSBTbWl0aAogUnlhbiBTbWl0aC1Sb2JlcnRzCiBSYWZhbCBTbW90cnp5aworSm9zaCBTbmlkZXIKIEVyaWMgU25vdwogRGlyayBTb2VkZQogTmlyIFNvZmZlcgpAQCAtMTQzMiwxMSArMTQ1MywxMyBAQAogTWFyZWsgU3RlcG5pb3dza2kKIEJhcnVjaCBTdGVyaW4KIENocmlzIFN0ZXJuCitFbGkgU3RldmVucwogQWxleCBTdGV3YXJ0CiBWaWN0b3IgU3Rpbm5lcgogUmljaGFyZCBTdG9ha2xleQogUGV0ZXIgU3RvZWhyCiBDYXNwZXIgU3RvZWwKK0RhbmllbCBTdG9rZXMKIE1pY2hhZWwgU3RvbmUKIFNlcmhpeSBTdG9yY2hha2EKIEtlbiBTdG94CkBAIC0xNDYyLDYgKzE0ODUsNyBAQAogUGlvdHIgU3pjemVwYW5pYWsKIEFtaXIgU3pla2VseQogTWFjaWVqIFN6dWxpaworSm9lbCBUYWRkZWkKIEFyZnJldmVyIEZyZWh0ZXMgVGFpZmVyc2FyIEFyYWhlc2lzCiBIaWRlYWtpIFRha2FoYXNoaQogVGFrYXNlIEFyaWhpcm8KQEAgLTE0NzQsOCArMTQ5OCwxMCBAQAogQ2hyaXN0aWFuIFRhbnplcgogU3RldmVuIFRhc2NodWsKIEFteSBUYXlsb3IKK0p1bGlhbiBUYXlsb3IKIE1vbnR5IFRheWxvcgogQW5hdG9seSBUZWNodG9uaWsKK01hcnRpbiBUZWljaG1hbm4KIEd1c3Rhdm8gVGVtcGxlCiBNaWtoYWlsIFRlcmVraG92CiBWaWN0b3IgVGVycsOzbgpAQCAtMTY1Nyw2ICsxNjgzLDcgQEAKIEFsYWtzaGVuZHJhIFlhZGF2CiBIaXJva2F6dSBZYW1hbW90bwogS2EtUGluZyBZZWUKK0NoaSBIc3VhbiBZZW4KIEphc29uIFllbwogRXVuZ0p1biBZaQogQm9iIFlvZGxvd3NraQpAQCAtMTY4NSw0ICsxNzEyLDMgQEAKIERvdWcgWm9uZ2tlcgogUGV0ZXIgw4VzdHJhbmQKIGV2aWx6ZXJvCi1DaGkgSHN1YW4gWWVuCmRpZmYgLS1naXQgYS9NaXNjL05FV1MgYi9NaXNjL05FV1MKaW5kZXggNzQyNjZjZC4uZjNkM2ZkMSAxMDA2NDQKLS0tIGEvTWlzYy9ORVdTCisrKyBiL01pc2MvTkVXUwpAQCAtMiwxMzggKzIsNDAgQEAKIFB5dGhvbiBOZXdzCiArKysrKysrKysrKwogCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjUuMyByZWxlYXNlIGNhbmRpZGF0ZSAxPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuNi4xIHJlbGVhc2UgY2FuZGlkYXRlIDEKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotUmVsZWFzZSBkYXRlOiBUQkEKKypSZWxlYXNlIGRhdGU6IFhYWFgtWFgtWFgqCiAKIENvcmUgYW5kIEJ1aWx0aW5zCiAtLS0tLS0tLS0tLS0tLS0tLQogCiAtIElzc3VlICMyODkzMjogRG8gbm90IGluY2x1ZGUgPHN5cy9yYW5kb20uaD4gaWYgaXQgZG9lcyBub3QgZXhpc3QuCiAKLS0gSXNzdWUgIzI4MTQ3OiBGaXggYSBtZW1vcnkgbGVhayBpbiBzcGxpdC10YWJsZSBkaWN0aW9uYXJpZXM6IHNldGF0dHIoKQotICBtdXN0IG5vdCBjb252ZXJ0IGNvbWJpbmVkIHRhYmxlIGludG8gc3BsaXQgdGFibGUuCi0KIC0gSXNzdWUgIzI1Njc3OiBDb3JyZWN0IHRoZSBwb3NpdGlvbmluZyBvZiB0aGUgc3ludGF4IGVycm9yIGNhcmV0IGZvcgogICBpbmRlbnRlZCBibG9ja3MuICBCYXNlZCBvbiBwYXRjaCBieSBNaWNoYWVsIExheXplbGwuCiAKIC0gSXNzdWUgIzI5MDAwOiBGaXhlZCBieXRlcyBmb3JtYXR0aW5nIG9mIG9jdGFscyB3aXRoIHplcm8gcGFkZGluZyBpbiBhbHRlcm5hdGUKICAgZm9ybS4KIAorLSBJc3N1ZSAjMjY5MTk6IE9uIEFuZHJvaWQsIG9wZXJhdGluZyBzeXN0ZW0gZGF0YSBpcyBub3cgYWx3YXlzIGVuY29kZWQvZGVjb2RlZAorICB0by9mcm9tIFVURi04LCBpbnN0ZWFkIG9mIHRoZSBsb2NhbGUgZW5jb2RpbmcgdG8gYXZvaWQgaW5jb25zaXN0ZW5jaWVzIHdpdGgKKyAgb3MuZnNlbmNvZGUoKSBhbmQgb3MuZnNkZWNvZGUoKSB3aGljaCBhcmUgYWxyZWFkeSB1c2luZyBVVEYtOC4KKworLSBJc3N1ZSAjMjg5OTE6ICBmdW5jdG9vbHMubHJ1X2NhY2hlKCkgd2FzIHN1c2NlcHRpYmxlIHRvIGFuIG9ic2N1cmUgcmVlbnRyYW5jeQorICBidWcgdHJpZ2dlcmFibGUgYnkgYSBtb25rZXktcGF0Y2hlZCBsZW4oKSBmdW5jdGlvbi4KKworLSBJc3N1ZSAjMjg3Mzk6IGYtc3RyaW5nIGV4cHJlc3Npb25zIGFyZSBubyBsb25nZXIgYWNjZXB0ZWQgYXMgZG9jc3RyaW5ncyBhbmQKKyAgYnkgYXN0LmxpdGVyYWxfZXZhbCgpIGV2ZW4gaWYgdGhleSBkbyBub3QgaW5jbHVkZSBleHByZXNzaW9ucy4KKwogLSBJc3N1ZSAjMjg1MTI6IEZpeGVkIHNldHRpbmcgdGhlIG9mZnNldCBhdHRyaWJ1dGUgb2YgU3ludGF4RXJyb3IgYnkKICAgUHlFcnJfU3ludGF4TG9jYXRpb25FeCgpIGFuZCBQeUVycl9TeW50YXhMb2NhdGlvbk9iamVjdCgpLgogCi0tIElzc3VlICMyODk5MTogIGZ1bmN0b29scy5scnVfY2FjaGUoKSB3YXMgc3VzY2VwdGlibGUgdG8gYW4gb2JzY3VyZSByZWVudHJhbmN5Ci0gIGJ1ZyBjYXVzZWQgYnkgYSBtb25rZXktcGF0Y2hlZCBsZW4oKSBmdW5jdGlvbi4KKy0gSXNzdWUgIzI4OTE4OiBGaXggdGhlIGNyb3NzIGNvbXBpbGF0aW9uIG9mIHh4bGltaXRlZCB3aGVuIFB5dGhvbiBoYXMgYmVlbgorICBidWlsdCB3aXRoIFB5X0RFQlVHIGRlZmluZWQuCiAKLS0gSXNzdWUgIzI4NjQ4OiBGaXhlZCBjcmFzaCBpbiBQeV9EZWNvZGVMb2NhbGUoKSBpbiBkZWJ1ZyBidWlsZCBvbiBNYWMgT1MgWAotICB3aGVuIGRlY29kZSBhc3RyYWwgY2hhcmFjdGVycy4gIFBhdGNoIGJ5IFhpYW5nIFpoYW5nLgotCi0tIElzc3VlICMxOTM5ODogRXh0cmEgc2xhc2ggbm8gbG9uZ2VyIGFkZGVkIHRvIHN5cy5wYXRoIGNvbXBvbmVudHMgaW4gY2FzZSBvZgotICBlbXB0eSBjb21waWxlLXRpbWUgUFlUSE9OUEFUSCBjb21wb25lbnRzLgotCi0tIElzc3VlICMyODQyNjogRml4ZWQgcG90ZW50aWFsIGNyYXNoIGluIFB5VW5pY29kZV9Bc0RlY29kZWRPYmplY3QoKSBpbiBkZWJ1ZwotICBidWlsZC4KLQotLSBJc3N1ZSAjMjM3ODI6IEZpeGVkIHBvc3NpYmxlIG1lbW9yeSBsZWFrIGluIF9QeVRyYWNlYmFja19BZGQoKSBhbmQgZXhjZXB0aW9uCi0gIGxvc3MgaW4gUHlUcmFjZUJhY2tfSGVyZSgpLgotCi0tIElzc3VlICMyODM3OTogQWRkZWQgc2FuaXR5IGNoZWNrcyBhbmQgdGVzdHMgZm9yIFB5VW5pY29kZV9Db3B5Q2hhcmFjdGVycygpLgotICBQYXRjaCBieSBYaWFuZyBaaGFuZy4KLQotLSBJc3N1ZSAjMjgzNzY6IFRoZSB0eXBlIG9mIGxvbmcgcmFuZ2UgaXRlcmF0b3IgaXMgbm93IHJlZ2lzdGVyZWQgYXMgSXRlcmF0b3IuCi0gIFBhdGNoIGJ5IE9yZW4gTWlsbWFuLgotCi0tIElzc3VlICMyODM3NjogVGhlIGNvbnN0cnVjdG9yIG9mIHJhbmdlX2l0ZXJhdG9yIG5vdyBjaGVja3MgdGhhdCBzdGVwIGlzIG5vdCAwLgotICBQYXRjaCBieSBPcmVuIE1pbG1hbi4KLQotLSBJc3N1ZSAjMjY5MDY6IFJlc29sdmluZyBzcGVjaWFsIG1ldGhvZHMgb2YgdW5pbml0aWFsaXplZCB0eXBlIG5vdyBjYXVzZXMKLSAgaW1wbGljaXQgaW5pdGlhbGl6YXRpb24gb2YgdGhlIHR5cGUgaW5zdGVhZCBvZiBhIGZhaWwuCi0KLS0gSXNzdWUgIzE4Mjg3OiBQeVR5cGVfUmVhZHkoKSBub3cgY2hlY2tzIHRoYXQgdHBfbmFtZSBpcyBub3QgTlVMTC4KLSAgT3JpZ2luYWwgcGF0Y2ggYnkgTmlrbGFzIEtvZXAuCi0KLS0gSXNzdWUgIzI0MDk4OiBGaXhlZCBwb3NzaWJsZSBjcmFzaCB3aGVuIEFTVCBpcyBjaGFuZ2VkIGluIHByb2Nlc3Mgb2YKLSAgY29tcGlsaW5nIGl0LgotCi0tIElzc3VlICMyODM1MDogU3RyaW5nIGNvbnN0YW50cyB3aXRoIG51bGwgY2hhcmFjdGVyIG5vIGxvbmdlciBpbnRlcm5lZC4KLQotLSBJc3N1ZSAjMjY2MTc6IEZpeCBjcmFzaCB3aGVuIEdDIHJ1bnMgZHVyaW5nIHdlYWtyZWYgY2FsbGJhY2tzLgotCi0tIElzc3VlICMyNzk0MjogU3RyaW5nIGNvbnN0YW50cyBub3cgaW50ZXJuZWQgcmVjdXJzaXZlbHkgaW4gdHVwbGVzIGFuZCBmcm96ZW5zZXRzLgotCi0tIElzc3VlICMyMTU3ODogRml4ZWQgbWlzbGVhZGluZyBlcnJvciBtZXNzYWdlIHdoZW4gSW1wb3J0RXJyb3IgY2FsbGVkIHdpdGgKLSAgaW52YWxpZCBrZXl3b3JkIGFyZ3MuCi0KLS0gSXNzdWUgIzI4MjAzOiBGaXggaW5jb3JyZWN0IHR5cGUgaW4gZXJyb3IgbWVzc2FnZSBmcm9tCi0gIGBgY29tcGxleCgxLjAsIHsyOjN9KWBgLiBQYXRjaCBieSBTb3VteWEgU2hhcm1hLgotCi0tIElzc3VlICMyNzk1NTogRmFsbGJhY2sgb24gcmVhZGluZyAvZGV2L3VyYW5kb20gZGV2aWNlIHdoZW4gdGhlIGdldHJhbmRvbSgpCi0gIHN5c2NhbGwgZmFpbHMgd2l0aCBFUEVSTSwgZm9yIGV4YW1wbGUgd2hlbiBibG9ja2VkIGJ5IFNFQ0NPTVAuCi0KLS0gSXNzdWUgIzI4MTMxOiBGaXggYSByZWdyZXNzaW9uIGluIHppcGltcG9ydCdzIGNvbXBpbGVfc291cmNlKCkuICB6aXBpbXBvcnQKLSAgc2hvdWxkIHVzZSB0aGUgc2FtZSBvcHRpbWl6YXRpb24gbGV2ZWwgYXMgdGhlIGludGVycHJldGVyLgotCi0tIElzc3VlICMyNTIyMTogRml4IGNvcnJ1cHRlZCByZXN1bHQgZnJvbSBQeUxvbmdfRnJvbUxvbmcoMCkgd2hlbgotICBQeXRob24gaXMgY29tcGlsZWQgd2l0aCBOU01BTExQT1NJTlRTID0gMC4KLQotLSBJc3N1ZSAjMjU3NTg6IFByZXZlbnRzIHppcGltcG9ydCBmcm9tIHVubmVjZXNzYXJpbHkgZW5jb2RpbmcgYSBmaWxlbmFtZQotICAocGF0Y2ggYnkgRXJ5ayBTdW4pCi0KLS0gSXNzdWUgIzI4MTg5OiBkaWN0aXRlbXNfY29udGFpbnMgbm8gbG9uZ2VyIHN3YWxsb3dzIGNvbXBhcmUgZXJyb3JzLgotICAoUGF0Y2ggYnkgWGlhbmcgWmhhbmcpCi0KLS0gSXNzdWUgIzI3ODEyOiBQcm9wZXJseSBjbGVhciBvdXQgYSBnZW5lcmF0b3IncyBmcmFtZSdzIGJhY2tyZWZlcmVuY2UgdG8gdGhlCi0gIGdlbmVyYXRvciB0byBwcmV2ZW50IGNyYXNoZXMgaW4gZnJhbWUuY2xlYXIoKS4KLQotLSBJc3N1ZSAjMjc4MTE6IEZpeCBhIGNyYXNoIHdoZW4gYSBjb3JvdXRpbmUgdGhhdCBoYXMgbm90IGJlZW4gYXdhaXRlZCBpcwotICBmaW5hbGl6ZWQgd2l0aCB3YXJuaW5ncy1hcy1lcnJvcnMgZW5hYmxlZC4KLQotLSBJc3N1ZSAjMjc1ODc6IEZpeCBhbm90aGVyIGlzc3VlIGZvdW5kIGJ5IFBWUy1TdHVkaW86IE51bGwgcG9pbnRlciBjaGVjawotICBhZnRlciB1c2Ugb2YgJ2RlZicgaW4gX1B5U3RhdGVfQWRkTW9kdWxlKCkuCi0gIEluaXRpYWwgcGF0Y2ggYnkgQ2hyaXN0aWFuIEhlaW1lcy4KLQotLSBJc3N1ZSAjMjYwMjA6IHNldCBsaXRlcmFsIGV2YWx1YXRpb24gb3JkZXIgZGlkIG5vdCBtYXRjaCBkb2N1bWVudGVkIGJlaGF2aW91ci4KLQotLSBJc3N1ZSAjMjc3ODI6IE11bHRpLXBoYXNlIGV4dGVuc2lvbiBtb2R1bGUgaW1wb3J0IG5vdyBjb3JyZWN0bHkgYWxsb3dzIHRoZQotICBgYG1fbWV0aG9kc2BgIGZpZWxkIHRvIGJlIHVzZWQgdG8gYWRkIG1vZHVsZSBsZXZlbCBmdW5jdGlvbnMgdG8gaW5zdGFuY2VzCi0gIG9mIG5vbi1tb2R1bGUgdHlwZXMgcmV0dXJuZWQgZnJvbSBgYFB5X2NyZWF0ZV9tb2RgYC4gUGF0Y2ggYnkgWGlhbmcgWmhhbmcuCi0KLS0gSXNzdWUgIzI3OTM2OiBUaGUgcm91bmQoKSBmdW5jdGlvbiBhY2NlcHRlZCBhIHNlY29uZCBOb25lIGFyZ3VtZW50Ci0gIGZvciBzb21lIHR5cGVzIGJ1dCBub3QgZm9yIG90aGVycy4gIEZpeGVkIHRoZSBpbmNvbnNpc3RlbmN5IGJ5Ci0gIGFjY2VwdGluZyBOb25lIGZvciBhbGwgbnVtZXJpYyB0eXBlcy4KLQotLSBJc3N1ZSAjMjc0ODc6IFdhcm4gaWYgYSBzdWJtb2R1bGUgYXJndW1lbnQgdG8gInB5dGhvbiAtbSIgb3IKLSAgcnVucHkucnVuX21vZHVsZSgpIGlzIGZvdW5kIGluIHN5cy5tb2R1bGVzIGFmdGVyIHBhcmVudCBwYWNrYWdlcyBhcmUKLSAgaW1wb3J0ZWQsIGJ1dCBiZWZvcmUgdGhlIHN1Ym1vZHVsZSBpcyBleGVjdXRlZC4KLQotLSBJc3N1ZSAjMjc1NTg6IEZpeCBhIFN5c3RlbUVycm9yIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiAicmFpc2UiIHN0YXRlbWVudC4KLSAgSW4gYSBicmFuZCBuZXcgdGhyZWFkLCByYWlzZSBhIFJ1bnRpbWVFcnJvciBzaW5jZSB0aGVyZSBpcyBubyBhY3RpdmUKLSAgZXhjZXB0aW9uIHRvIHJlcmFpc2UuIFBhdGNoIHdyaXR0ZW4gYnkgWGlhbmcgWmhhbmcuCi0KLS0gSXNzdWUgIzI3NDE5OiBTdGFuZGFyZCBfX2ltcG9ydF9fKCkgbm8gbG9uZ2VyIGxvb2sgdXAgIl9faW1wb3J0X18iIGluIGdsb2JhbHMKLSAgb3IgYnVpbHRpbnMgZm9yIGltcG9ydGluZyBzdWJtb2R1bGVzIG9yICJmcm9tIGltcG9ydCIuICBGaXhlZCBoYW5kbGluZyBhbgotICBlcnJvciBvZiBub24tc3RyaW5nIHBhY2thZ2UgbmFtZS4KLQotLSBJc3N1ZSAjMjcwODM6IFJlc3BlY3QgdGhlIFBZVEhPTkNBU0VPSyBlbnZpcm9ubWVudCB2YXJpYWJsZSB1bmRlciBXaW5kb3dzLgotCi0tIElzc3VlICMyNzUxNDogTWFrZSBoYXZpbmcgdG9vIG1hbnkgc3RhdGljYWxseSBuZXN0ZWQgYmxvY2tzIGEgU3ludGF4RXJyb3IKLSAgaW5zdGVhZCBvZiBTeXN0ZW1FcnJvci4KLQotLSBJc3N1ZSAjMjc0NzM6IEZpeGVkIHBvc3NpYmxlIGludGVnZXIgb3ZlcmZsb3cgaW4gYnl0ZXMgYW5kIGJ5dGVhcnJheQotICBjb25jYXRlbmF0aW9ucy4gIFBhdGNoIGJ5IFhpYW5nIFpoYW5nLgotCi0tIElzc3VlICMyNzUwNzogQWRkIGludGVnZXIgb3ZlcmZsb3cgY2hlY2sgaW4gYnl0ZWFycmF5LmV4dGVuZCgpLiAgUGF0Y2ggYnkKLSAgWGlhbmcgWmhhbmcuCi0KLS0gSXNzdWUgIzI3NTgxOiBEb24ndCByZWx5IG9uIHdyYXBwaW5nIGZvciBvdmVyZmxvdyBjaGVjayBpbgotICBQeVNlcXVlbmNlX1R1cGxlKCkuICBQYXRjaCBieSBYaWFuZyBaaGFuZy4KLQotLSBJc3N1ZSAjMjc0NDM6IF9fbGVuZ3RoX2hpbnRfXygpIG9mIGJ5dGVhcnJheSBpdGVyYXRvcnMgbm8gbG9uZ2VyIHJldHVybiBhCi0gIG5lZ2F0aXZlIGludGVnZXIgZm9yIGEgcmVzaXplZCBieXRlYXJyYXkuCi0KLS0gSXNzdWUgIzI3OTQyOiBGaXggbWVtb3J5IGxlYWsgaW4gY29kZW9iamVjdC5jCistIElzc3VlICMyODczMTogT3B0aW1pemUgX1B5RGljdF9OZXdQcmVzaXplZCgpIHRvIGNyZWF0ZSBjb3JyZWN0IHNpemUgZGljdC4KKyAgSW1wcm92ZSBzcGVlZCBvZiBkaWN0IGxpdGVyYWwgd2l0aCBjb25zdGFudCBrZXlzIHVwIHRvIDMwJS4KIAogTGlicmFyeQogLS0tLS0tLQpAQCAtMTU0LDE5ICs1NiwyODAgQEAKIC0gSXNzdWUgIzI4ODQ3OiBkYm0uZHVtYiBub3cgc3VwcG9ydHMgcmVhZGluZyByZWFkLW9ubHkgZmlsZXMgYW5kIG5vIGxvbmdlcgogICB3cml0ZXMgdGhlIGluZGV4IGZpbGUgd2hlbiBpdCBpcyBub3QgY2hhbmdlZC4KIAorLSBJc3N1ZSAjMjY5Mzc6IFRoZSBjaG93bigpIG1ldGhvZCBvZiB0aGUgdGFyZmlsZS5UYXJGaWxlIGNsYXNzIGRvZXMgbm90IGZhaWwKKyAgbm93IHdoZW4gdGhlIGdycCBtb2R1bGUgY2Fubm90IGJlIGltcG9ydGVkLCBhcyBmb3IgZXhhbXBsZSBvbiBBbmRyb2lkCisgIHBsYXRmb3Jtcy4KKworV2luZG93cworLS0tLS0tLQorCistIElzc3VlICMyNTc3ODogd2lucmVnIGRvZXMgbm90IHRydW5jYXRlIHN0cmluZyBjb3JyZWN0bHkgKFBhdGNoIGJ5IEVyeWsgU3VuKQorCistIElzc3VlICMyODg5NjogRGVwcmVjYXRlIFdpbmRvd3NSZWdpc3RyeUZpbmRlciBhbmQgZGlzYWJsZSBpdCBieSBkZWZhdWx0LgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjMjg5NTA6IERpc2FsbG93IC1qMCB0byBiZSBjb21iaW5lZCB3aXRoIC1ULy1sIGluIHJlZ3J0ZXN0CisgIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuCisKKy0gSXNzdWUgIzI4NjgzOiBGaXggdGhlIHRlc3RzIHRoYXQgYmluZCgpIGEgdW5peCBzb2NrZXQgYW5kIHJhaXNlCisgIFBlcm1pc3Npb25FcnJvciBvbiBBbmRyb2lkIGZvciBhIG5vbi1yb290IHVzZXIuCisKKy0gSXNzdWUgIzI2OTM5OiBBZGQgdGhlIHN1cHBvcnQuc2V0c3dpdGNoaW50ZXJ2YWwoKSBmdW5jdGlvbiB0byBmaXgKKyAgdGVzdF9mdW5jdG9vbHMgaGFuZ2luZyBvbiB0aGUgQW5kcm9pZCBhcm12NyBxZW11IGVtdWxhdG9yLgorCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjMjAyMTE6IERvIG5vdCBhZGQgdGhlIGRpcmVjdG9yeSBmb3IgaW5zdGFsbGluZyBDIGhlYWRlciBmaWxlcyBhbmQgdGhlCisgIGRpcmVjdG9yeSBmb3IgaW5zdGFsbGluZyBvYmplY3QgY29kZSBsaWJyYXJpZXMgdG8gdGhlIGNyb3NzIGNvbXBpbGF0aW9uCisgIHNlYXJjaCBwYXRocy4gT3JpZ2luYWwgcGF0Y2ggYnkgVGhvbWFzIFBldGF6em9uaS4KKworLSBJc3N1ZSAjMjg4NDk6IERvIG5vdCBkZWZpbmUgc3lzLmltcGxlbWVudGF0aW9uLl9tdWx0aWFyY2ggb24gQW5kcm9pZC4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjYuMCByZWxlYXNlIGNhbmRpZGF0ZSAyCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDIwMTYtMTItMTYqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMyODE0NzogRml4IGEgbWVtb3J5IGxlYWsgaW4gc3BsaXQtdGFibGUgZGljdGlvbmFyaWVzOiBzZXRhdHRyKCkKKyAgbXVzdCBub3QgY29udmVydCBjb21iaW5lZCB0YWJsZSBpbnRvIHNwbGl0IHRhYmxlLiBQYXRjaCB3cml0dGVuIGJ5IElOQURBCisgIE5hb2tpLgorCistIElzc3VlICMyODk5MDogRml4IGFzeW5jaW8gU1NMIGhhbmdpbmcgaWYgY29ubmVjdGlvbiBpcyBjbG9zZWQgYmVmb3JlCisgIGhhbmRzaGFrZSBpcyBjb21wbGV0ZWQuIChQYXRjaCBieSBIb0hvLUhvKQorCitUb29scy9EZW1vcworLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMjg3NzA6IEZpeCBweXRob24tZ2RiLnB5IGZvciBmYXN0Y2FsbHMuCisKK1dpbmRvd3MKKy0tLS0tLS0KKworLSBJc3N1ZSAjMjg4OTY6IERlcHJlY2F0ZSBXaW5kb3dzUmVnaXN0cnlGaW5kZXIuCisKK0J1aWxkCistLS0tLQorCistIElzc3VlICMyODg5ODogUHJldmVudCBnZGIgYnVpbGQgZXJyb3JzIGR1ZSB0byBIQVZFX0xPTkdfTE9ORyByZWRlZmluaXRpb24uCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy42LjAgcmVsZWFzZSBjYW5kaWRhdGUgMQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisqUmVsZWFzZSBkYXRlOiAyMDE2LTEyLTA2KgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMjM3MjI6IFJhdGhlciB0aGFuIHNpbGVudGx5IHByb2R1Y2luZyBhIGNsYXNzIHRoYXQgZG9lc24ndCBzdXBwb3J0CisgIHplcm8tYXJndW1lbnQgYGBzdXBlcigpYGAgaW4gbWV0aG9kcywgZmFpbGluZyB0byBwYXNzIHRoZSBuZXcKKyAgYGBfX2NsYXNzY2VsbF9fYGAgbmFtZXNwYWNlIGVudHJ5IHVwIHRvIGBgdHlwZS5fX25ld19fYGAgbm93IHJlc3VsdHMgaW4gYQorICBgYERlcHJlY2F0aW9uV2FybmluZ2BgIGFuZCBhIGNsYXNzIHRoYXQgc3VwcG9ydHMgemVyby1hcmd1bWVudCBgYHN1cGVyKClgYC4KKworLSBJc3N1ZSAjMjg3OTc6IE1vZGlmeWluZyB0aGUgY2xhc3MgX19kaWN0X18gaW5zaWRlIHRoZSBfX3NldF9uYW1lX18gbWV0aG9kIG9mCisgIGEgZGVzY3JpcHRvciB0aGF0IGlzIHVzZWQgaW5zaWRlIHRoYXQgY2xhc3Mgbm8gbG9uZ2VyIHByZXZlbnRzIGNhbGxpbmcgdGhlCisgIF9fc2V0X25hbWVfXyBtZXRob2Qgb2Ygb3RoZXIgZGVzY3JpcHRvcnMuCisKKy0gSXNzdWUgIzI4NzgyOiBGaXggYSBidWcgaW4gdGhlIGltcGxlbWVudGF0aW9uIGBgeWllbGQgZnJvbWBgIHdoZW4gY2hlY2tpbmcKKyAgaWYgdGhlIG5leHQgaW5zdHJ1Y3Rpb24gaXMgWUlFTERfRlJPTS4gUmVncmVzc2lvbiBpbnRyb2R1Y2VkIGJ5IFdPUkRDT0RFCisgIChpc3N1ZSAjMjY2NDcpLgorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzI3MDMwOiBVbmtub3duIGVzY2FwZXMgaW4gcmUuc3ViKCkgcmVwbGFjZW1lbnQgdGVtcGxhdGUgYXJlIGFsbG93ZWQKKyAgYWdhaW4uICBCdXQgdGhleSBzdGlsbCBhcmUgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSBkaXNhYmxlZCBpbiAzLjcuCisKKy0gSXNzdWUgIzI4ODM1OiBGaXggYSByZWdyZXNzaW9uIGludHJvZHVjZWQgaW4gd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgY2FsbCB3YXJuaW5ncy5zaG93d2FybmluZygpIGlmIGl0IHdhcyBvdmVycmlkZW4gaW5zaWRlIHRoZSBjb250ZXh0IG1hbmFnZXIuCisKKy0gSXNzdWUgIzI3MTcyOiBUbyBhc3Npc3Qgd2l0aCB1cGdyYWRlcyBmcm9tIDIuNywgdGhlIHByZXZpb3VzbHkgZG9jdW1lbnRlZAorICBkZXByZWNhdGlvbiBvZiBgYGluc3BlY3QuZ2V0ZnVsbGFyZ3NwZWMoKWBgIGhhcyBiZWVuIHJldmVyc2VkLiBUaGlzIGRlY2lzaW9uCisgIG1heSBiZSByZXZpc2l0ZWQgYWdhaW4gYWZ0ZXIgdGhlIFB5dGhvbiAyLjcgYnJhbmNoIGlzIG5vIGxvbmdlciBvZmZpY2lhbGx5CisgIHN1cHBvcnRlZC4KKworLSBJc3N1ZSAjMjQxNDI6IFJlYWRpbmcgYSBjb3JydXB0IGNvbmZpZyBmaWxlIGxlZnQgY29uZmlncGFyc2VyIGluIGFuCisgIGludmFsaWQgc3RhdGUuICBPcmlnaW5hbCBwYXRjaCBieSBGbG9yaWFuIEjDtmNoLgorCistIElzc3VlICMyODg0MzogRml4IGFzeW5jaW8gQyBUYXNrIHRvIGhhbmRsZSBleGNlcHRpb25zIF9fdHJhY2ViYWNrX18uCisKK0MgQVBJCistLS0tLQorCistIElzc3VlICMyODgwODogUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcoKSBub3cgbmV2ZXIgcmFpc2VzIGV4Y2VwdGlvbnMuCisKK0RvY3VtZW50YXRpb24KKy0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMjM3MjI6IFRoZSBkYXRhIG1vZGVsIHJlZmVyZW5jZSBhbmQgdGhlIHBvcnRpbmcgc2VjdGlvbiBpbiB0aGUgV2hhdCdzCisgIE5ldyBndWlkZSBub3cgY292ZXIgdGhlIGFkZGl0aW9uYWwgYGBfX2NsYXNzY2VsbF9fYGAgaGFuZGxpbmcgbmVlZGVkIGZvcgorICBjdXN0b20gbWV0YWNsYXNzZXMgdG8gZnVsbHkgc3VwcG9ydCBQRVAgNDg3IGFuZCB6ZXJvLWFyZ3VtZW50IGBgc3VwZXIoKWBgLgorCitUb29scy9EZW1vcworLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMjgwMjM6IEZpeCBweXRob24tZ2RiLnB5IGRpZG4ndCBzdXBwb3J0IG5ldyBkaWN0IGltcGxlbWVudGF0aW9uLgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuNi4wIGJldGEgNAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDIwMTYtMTEtMjEqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMyODUzMjogU2hvdyBzeXMudmVyc2lvbiB3aGVuIC1WIG9wdGlvbiBpcyBzdXBwbGllZCB0d2ljZS4KKworLSBJc3N1ZSAjMjcxMDA6IFRoZSB3aXRoLXN0YXRlbWVudCBub3cgY2hlY2tzIGZvciBfX2VudGVyX18gYmVmb3JlIGl0CisgIGNoZWNrcyBmb3IgX19leGl0X18uICBUaGlzIGdpdmVzIGxlc3MgY29uZnVzaW5nIGVycm9yIG1lc3NhZ2VzIHdoZW4KKyAgYm90aCBtZXRob2RzIGFyZSBtaXNzaW5nLiBQYXRjaCBieSBKb25hdGhhbiBFbGxpbmd0b24uCisKKy0gSXNzdWUgIzI4NzQ2OiBGaXggdGhlIHNldF9pbmhlcml0YWJsZSgpIGZpbGUgZGVzY3JpcHRvciBtZXRob2Qgb24gcGxhdGZvcm1zCisgIHRoYXQgZG8gbm90IGhhdmUgdGhlIGlvY3RsIEZJT0NMRVggYW5kIEZJT05DTEVYIGNvbW1hbmRzLgorCistIElzc3VlICMyNjkyMDogRml4IG5vdCBnZXR0aW5nIHRoZSBsb2NhbGUncyBjaGFyc2V0IHVwb24gaW5pdGlhbGl6aW5nIHRoZQorICBpbnRlcnByZXRlciwgb24gcGxhdGZvcm1zIHRoYXQgZG8gbm90IGhhdmUgbGFuZ2luZm8uCisKKy0gSXNzdWUgIzI4NjQ4OiBGaXhlZCBjcmFzaCBpbiBQeV9EZWNvZGVMb2NhbGUoKSBpbiBkZWJ1ZyBidWlsZCBvbiBNYWMgT1MgWAorICB3aGVuIGRlY29kZSBhc3RyYWwgY2hhcmFjdGVycy4gIFBhdGNoIGJ5IFhpYW5nIFpoYW5nLgorCistIElzc3VlICMxOTM5ODogRXh0cmEgc2xhc2ggbm8gbG9uZ2VyIGFkZGVkIHRvIHN5cy5wYXRoIGNvbXBvbmVudHMgaW4gY2FzZSBvZgorICBlbXB0eSBjb21waWxlLXRpbWUgUFlUSE9OUEFUSCBjb21wb25lbnRzLgorCistIElzc3VlICMyODY2NTogIEltcHJvdmUgc3BlZWQgb2YgdGhlIFNUT1JFX0RFUkVGIG9wY29kZSBieSA0MCUuCisKKy0gSXNzdWUgIzI4NTgzOiBQeURpY3RfU2V0RGVmYXVsdCBkaWRuJ3QgY29tYmluZSBzcGxpdCB0YWJsZSB3aGVuIG5lZWRlZC4KKyAgUGF0Y2ggYnkgWGlhbmcgWmhhbmcuCisKKy0gSXNzdWUgIzI3MjQzOiBDaGFuZ2UgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZyAtPiBEZXByZWNhdGlvbldhcm5pbmcuCisgIEFzIGl0IHdhcyBhZ3JlZWQgaW4gdGhlIGlzc3VlLCBfX2FpdGVyX18gcmV0dXJuaW5nIGFuIGF3YWl0YWJsZQorICBzaG91bGQgcmVzdWx0IGluIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcgaW4gMy41IGFuZCBpbgorICBEZXByZWNhdGlvbldhcm5pbmcgaW4gMy42LgorCistIElzc3VlICMyNjE4MjogRml4IGEgcmVmbGVhayBpbiBjb2RlIHRoYXQgcmFpc2VzIERlcHJlY2F0aW9uV2FybmluZy4KKworLSBJc3N1ZSAjMjg3MjE6IEZpeCBhc3luY2hyb25vdXMgZ2VuZXJhdG9ycyBhY2xvc2UoKSBhbmQgYXRocm93KCkgdG8KKyAgaGFuZGxlIFN0b3BBc3luY0l0ZXJhdGlvbiBwcm9wYWdhdGlvbiBwcm9wZXJseS4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICMyNjI3MzogQWRkIG5ldyA6ZGF0YTpgc29ja2V0LlRDUF9DT05HRVNUSU9OYCAoTGludXggMi42LjEzKSBhbmQKKyAgOmRhdGE6YHNvY2tldC5UQ1BfVVNFUl9USU1FT1VUYCAoTGludXggMi42LjM3KSBjb25zdGFudHMuIFBhdGNoIHdyaXR0ZW4gYnkKKyAgT21hciBTYW5kb3ZhbC4KKworLSBJc3N1ZSAjMjg3NTI6IFJlc3RvcmVkIHRoZSBfX3JlZHVjZV9fKCkgbWV0aG9kcyBvZiBkYXRldGltZSBvYmplY3RzLgorCistIElzc3VlICMyODcyNzogUmVndWxhciBleHByZXNzaW9uIHBhdHRlcm5zLCBfc3JlLlNSRV9QYXR0ZXJuIG9iamVjdHMgY3JlYXRlZAorICBieSByZS5jb21waWxlKCksIGJlY29tZSBjb21wYXJhYmxlIChvbmx5IHg9PXkgYW5kIHghPXkgb3BlcmF0b3JzKS4gVGhpcworICBjaGFuZ2Ugc2hvdWxkIGZpeCB0aGUgaXNzdWUgIzE4MzgzOiBkb24ndCBkdXBsaWNhdGUgd2FybmluZyBmaWx0ZXJzIHdoZW4gdGhlCisgIHdhcm5pbmdzIG1vZHVsZSBpcyByZWxvYWRlZCAodGhpbmcgdXN1YWxseSBvbmx5IGRvbmUgaW4gdW5pdCB0ZXN0cykuCisKKy0gSXNzdWUgIzIwNTcyOiBUaGUgc3VicHJvY2Vzcy5Qb3Blbi53YWl0IG1ldGhvZCdzIHVuZG9jdW1lbnRlZAorICBlbmR0aW1lIHBhcmFtZXRlciBub3cgcmFpc2VzIGEgRGVwcmVjYXRpb25XYXJuaW5nLgorCiAtIElzc3VlICMyNTY1OTogSW4gY3R5cGVzLCBwcmV2ZW50IGEgY3Jhc2ggY2FsbGluZyB0aGUgZnJvbV9idWZmZXIoKSBhbmQKICAgZnJvbV9idWZmZXJfY29weSgpIG1ldGhvZHMgb24gYWJzdHJhY3QgY2xhc3NlcyBsaWtlIEFycmF5LgogCi0tIElzc3VlICMyODczMjogRml4IGNyYXNoIGluIG9zLnNwYXdudigpIHdpdGggbm8gZWxlbWVudHMgaW4gYXJncworLSBJc3N1ZSAjMTk3MTc6IE1ha2VzIFBhdGgucmVzb2x2ZSgpIHN1Y2NlZWQgb24gcGF0aHMgdGhhdCBkbyBub3QgZXhpc3QuCisgIFBhdGNoIGJ5IFZhanJhc2t5IEtvawogCi0tIElzc3VlICMyODQ4NTogQWx3YXlzIHJhaXNlIFZhbHVlRXJyb3IgZm9yIG5lZ2F0aXZlCi0gIGNvbXBpbGVhbGwuY29tcGlsZV9kaXIod29ya2Vycz0uLi4pIHBhcmFtZXRlciwgZXZlbiB3aGVuIG11bHRpdGhyZWFkaW5nIGlzCi0gIHVuYXZhaWxhYmxlLgorLSBJc3N1ZSAjMjg1NjM6IEZpeGVkIHBvc3NpYmxlIERvUyBhbmQgYXJiaXRyYXJ5IGNvZGUgZXhlY3V0aW9uIHdoZW4gaGFuZGxlCisgIHBsdXJhbCBmb3JtIHNlbGVjdGlvbnMgaW4gdGhlIGdldHRleHQgbW9kdWxlLiAgVGhlIGV4cHJlc3Npb24gcGFyc2VyIG5vdworICBzdXBwb3J0cyBleGFjdCBzeW50YXggc3VwcG9ydGVkIGJ5IEdOVSBnZXR0ZXh0LgogCiAtIElzc3VlICMyODM4NzogRml4ZWQgcG9zc2libGUgY3Jhc2ggaW4gX2lvLlRleHRJT1dyYXBwZXIgZGVhbGxvY2F0b3Igd2hlbgogICB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IgaXMgaW52b2tlZCBpbiBvdGhlciB0aHJlYWQuICBCYXNlZCBvbiBwYXRjaCBieQogICBTZWJhc3RpYW4gQ3VmcmUuCiAKKy0gSXNzdWUgIzI4NjAwOiBPcHRpbWl6ZSBsb29wLmNhbGxfc29vbi4KKworLSBJc3N1ZSAjMjg2MTM6IEZpeCBnZXRfZXZlbnRfbG9vcCgpIHJldHVybiB0aGUgY3VycmVudCBsb29wIGlmCisgIGNhbGxlZCBmcm9tIGNvcm91dGluZXMvY2FsbGJhY2tzLgorCistIElzc3VlICMyODYzNDogRml4IGFzeW5jaW8uaXNmdXR1cmUoKSB0byBzdXBwb3J0IHVuaXR0ZXN0Lk1vY2suCisKKy0gSXNzdWUgIzI2MDgxOiBGaXggcmVmbGVhayBpbiBfYXN5bmNpby5GdXR1cmUuX19pdGVyX18oKS50aHJvdy4KKworLSBJc3N1ZSAjMjg2Mzk6IEZpeCBpbnNwZWN0LmlzYXdhaXRhYmxlIHRvIGFsd2F5cyByZXR1cm4gYm9vbAorICBQYXRjaCBieSBKdXN0aW4gTWF5ZmllbGQuCisKKy0gSXNzdWUgIzI4NjUyOiBNYWtlIGxvb3AgbWV0aG9kcyByZWplY3Qgc29ja2V0IGtpbmRzIHRoZXkgZG8gbm90IHN1cHBvcnQuCisKKy0gSXNzdWUgIzI4NjUzOiBGaXggYSByZWZsZWFrIGluIGZ1bmN0b29scy5scnVfY2FjaGUuCisKKy0gSXNzdWUgIzI4NzAzOiBGaXggYXN5bmNpby5pc2Nvcm91dGluZWZ1bmN0aW9uIHRvIGhhbmRsZSBNb2NrIG9iamVjdHMuCisKKy0gSXNzdWUgIzI4NzA0OiBGaXggY3JlYXRlX3VuaXhfc2VydmVyIHRvIHN1cHBvcnQgUGF0aC1saWtlIG9iamVjdHMKKyAgKFBFUCA1MTkpLgorCistIElzc3VlICMyODcyMDogQWRkIGNvbGxlY3Rpb25zLmFiYy5Bc3luY0dlbmVyYXRvci4KKworRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMyODUxMzogRG9jdW1lbnRlZCBjb21tYW5kLWxpbmUgaW50ZXJmYWNlIG9mIHppcGZpbGUuCisKK1Rlc3RzCistLS0tLQorCistIElzc3VlICMyODY2NjogTm93IHRlc3Quc3VwcG9ydC5ybXRyZWUgaXMgYWJsZSB0byByZW1vdmUgdW53cml0YWJsZSBvcgorICB1bnJlYWRhYmxlIGRpcmVjdG9yaWVzLgorCistIElzc3VlICMyMzgzOTogVmFyaW91cyBjYWNoZXMgbm93IGFyZSBjbGVhcmVkIGJlZm9yZSBydW5uaW5nIGV2ZXJ5IHRlc3QgZmlsZS4KKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzEwNjU2OiBGaXggb3V0LW9mLXRyZWUgYnVpbGRpbmcgb24gQUlYLiAgUGF0Y2ggYnkgVHJpc3RhbiBDYXJlbCBhbmQKKyAgTWljaGFlbCBIYXViZW53YWxsbmVyLgorCistIElzc3VlICMyNjM1OTogUmVuYW1lIC0td2l0aC1vcHRpbWlhdGlvbnMgdG8gLS1lbmFibGUtb3B0aW1pemF0aW9ucy4KKworLSBJc3N1ZSAjMjg2NzY6IFByZXZlbnQgbWlzc2luZyAnZ2V0ZW50cm9weScgZGVjbGFyYXRpb24gd2FybmluZyBvbiBtYWNPUy4KKyAgUGF0Y2ggYnkgR2FyZXRoIFJlZXMuCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy42LjAgYmV0YSAzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMjAxNi0xMC0zMSoKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzI4MTI4OiBEZXByZWNhdGlvbiB3YXJuaW5nIGZvciBpbnZhbGlkIHN0ciBhbmQgYnl0ZSBlc2NhcGUKKyAgc2VxdWVuY2VzIG5vdyBwcmludHMgYmV0dGVyIGluZm9ybWF0aW9uIGFib3V0IHdoZXJlIHRoZSBlcnJvcgorICBvY2N1cnMuIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EgYW5kIEVyaWMgU21pdGguCisKKy0gSXNzdWUgIzI4NTA5OiBkaWN0LnVwZGF0ZSgpIG5vIGxvbmdlciBhbGxvY2F0ZSB1bm5lY2Vzc2FyeSBsYXJnZSBtZW1vcnkuCisKKy0gSXNzdWUgIzI4NDI2OiBGaXhlZCBwb3RlbnRpYWwgY3Jhc2ggaW4gUHlVbmljb2RlX0FzRGVjb2RlZE9iamVjdCgpIGluIGRlYnVnCisgIGJ1aWxkLgorCistIElzc3VlICMyODUxNzogRml4ZWQgb2YtYnktb25lIGVycm9yIGluIHRoZSBwZWVwaG9sZSBvcHRpbWl6ZXIgdGhhdCBjYXVzZWQKKyAga2VlcGluZyB1bnJlYWNoYWJsZSBjb2RlLgorCistIElzc3VlICMyODIxNDogSW1wcm92ZWQgZXhjZXB0aW9uIHJlcG9ydGluZyBmb3IgcHJvYmxlbWF0aWMgX19zZXRfbmFtZV9fCisgIGF0dHJpYnV0ZXMuCisKKy0gSXNzdWUgIzIzNzgyOiBGaXhlZCBwb3NzaWJsZSBtZW1vcnkgbGVhayBpbiBfUHlUcmFjZWJhY2tfQWRkKCkgYW5kIGV4Y2VwdGlvbgorICBsb3NzIGluIFB5VHJhY2VCYWNrX0hlcmUoKS4KKworLSBJc3N1ZSAjMjg0NzE6IEZpeCAiUHl0aG9uIG1lbW9yeSBhbGxvY2F0b3IgY2FsbGVkIHdpdGhvdXQgaG9sZGluZyB0aGUgR0lMIgorICBjcmFzaCBpbiBzb2NrZXQuc2V0YmxvY2tpbmcuCisKK0xpYnJhcnkKKy0tLS0tLS0KKwogLSBJc3N1ZSAjMjc1MTc6IExaTUEgY29tcHJlc3NvciBhbmQgZGVjb21wcmVzc29yIG5vIGxvbmdlciByYWlzZSBleGNlcHRpb25zIGlmCiAgIGdpdmVuIGVtcHR5IGRhdGEgdHdpY2UuICBQYXRjaCBieSBCZW5qYW1pbiBGb2dsZS4KIApAQCAtMTgzLDYgKzM0Niw5IEBACiAgIGJ5IHJlcHJlc2VudGluZyB0aGUgc2NhbGUgYXMgZmxvYXQgdmFsdWUgaW50ZXJuYWxseSBpbiBUay4gIHRraW50ZXIuSW50VmFyCiAgIG5vdyB3b3JrcyBpZiBmbG9hdCB2YWx1ZSBpcyBzZXQgdG8gdW5kZXJseWluZyBUayB2YXJpYWJsZS4KIAorLSBJc3N1ZSAjMTg4NDQ6IFRoZSB2YXJpb3VzIHdheXMgb2Ygc3BlY2lmeWluZyB3ZWlnaHRzIGZvciByYW5kb20uY2hvaWNlcygpCisgIG5vdyBwcm9kdWNlIHRoZSBzYW1lIHJlc3VsdCBzZXF1ZW5jZXMuCisKIC0gSXNzdWUgIzI4MjU1OiBjYWxlbmRhci5UZXh0Q2FsZW5kYXIoKS5wcm1vbnRoKCkgbm8gbG9uZ2VyIHByaW50cyBhIHNwYWNlCiAgIGF0IHRoZSBzdGFydCBvZiBuZXcgbGluZSBhZnRlciBwcmludGluZyBhIG1vbnRoJ3MgY2FsZW5kYXIuICBQYXRjaCBieQogICBYaWFuZyBaaGFuZy4KQEAgLTE5MiwzMCArMzU4LDE5NCBAQAogCiAtIElzc3VlICMyODM1Mzogb3MuZndhbGsoKSBubyBsb25nZXIgZmFpbHMgb24gYnJva2VuIGxpbmtzLgogCistIElzc3VlICMyODQzMDogRml4IGl0ZXJhdG9yIG9mIEMgaW1wbGVtZW50ZWQgYXN5bmNpby5GdXR1cmUgZG9lc24ndCBhY2NlcHQKKyAgbm9uLU5vbmUgdmFsdWUgaXMgcGFzc2VkIHRvIGl0LnNlbmQodmFsKS4KKworLSBJc3N1ZSAjMjcwMjU6IEdlbmVyYXRlZCBuYW1lcyBmb3IgVGtpbnRlciB3aWRnZXRzIG5vdyBzdGFydCBieSB0aGUgIiEiIHByZWZpeAorICBmb3IgcmVhZGFiaWxpdHkgKHdhcyAiYCIpLgorCiAtIElzc3VlICMyNTQ2NDogRml4ZWQgSExpc3QuaGVhZGVyX2V4aXN0cygpIGluIHRraW50ZXIudGl4IG1vZHVsZSBieSBhZGRpbgogICBhIHdvcmthcm91bmQgdG8gVGl4IGxpYnJhcnkgYnVnLgogCi0tIElzc3VlICMyODQ4ODogc2h1dGlsLm1ha2VfYXJjaGl2ZSgpIG5vIGxvbmdlciBhZGQgZW50cnkgIi4vIiB0byBaSVAgYXJjaGl2ZS4KKy0gSXNzdWUgIzI4NDg4OiBzaHV0aWwubWFrZV9hcmNoaXZlKCkgbm8gbG9uZ2VyIGFkZHMgZW50cnkgIi4vIiB0byBaSVAgYXJjaGl2ZS4KKworLSBJc3N1ZSAjMjU5NTM6IHJlLnN1YigpIG5vdyByYWlzZXMgYW4gZXJyb3IgZm9yIGludmFsaWQgbnVtZXJpY2FsIGdyb3VwCisgIHJlZmVyZW5jZSBpbiByZXBsYWNlbWVudCB0ZW1wbGF0ZSBldmVuIGlmIHRoZSBwYXR0ZXJuIGlzIG5vdCBmb3VuZCBpbgorICB0aGUgc3RyaW5nLiAgRXJyb3IgbWVzc2FnZSBmb3IgaW52YWxpZCBncm91cCByZWZlcmVuY2Ugbm93IGluY2x1ZGVzIHRoZQorICBncm91cCBpbmRleCBhbmQgdGhlIHBvc2l0aW9uIG9mIHRoZSByZWZlcmVuY2UuCisgIEJhc2VkIG9uIHBhdGNoIGJ5IFNpbGVudEdob3N0LgorCistIElzc3VlICMxODIxOTogT3B0aW1pemUgY3N2LkRpY3RXcml0ZXIgZm9yIGxhcmdlIG51bWJlciBvZiBjb2x1bW5zLgorICBQYXRjaCBieSBNYXJpYXR0YSBXaWpheWEuCisKKy0gSXNzdWUgIzI4NDQ4OiBGaXggQyBpbXBsZW1lbnRlZCBhc3luY2lvLkZ1dHVyZSBkaWRuJ3Qgd29yayBvbiBXaW5kb3dzLgorCistIElzc3VlICMyODQ4MDogRml4IGVycm9yIGJ1aWxkaW5nIHNvY2tldCBtb2R1bGUgd2hlbiBtdWx0aXRocmVhZGluZyBpcworICBkaXNhYmxlZC4KIAogLSBJc3N1ZSAjMjQ0NTI6IE1ha2Ugd2ViYnJvd3NlciBzdXBwb3J0IENocm9tZSBvbiBNYWMgT1MgWC4KIAogLSBJc3N1ZSAjMjA3NjY6IEZpeCByZWZlcmVuY2VzIGxlYWtlZCBieSBwZGIgaW4gdGhlIGhhbmRsaW5nIG9mIFNJR0lOVAogICBoYW5kbGVycy4KIAorLSBJc3N1ZSAjMjg0OTI6IEZpeCBob3cgU3RvcEl0ZXJhdGlvbiBleGNlcHRpb24gaXMgcmFpc2VkIGluIF9hc3luY2lvLkZ1dHVyZS4KKworLSBJc3N1ZSAjMjg1MDA6IEZpeCBhc3luY2lvIHRvIGhhbmRsZSBhc3luYyBnZW5zIEdDIGZyb20gYW5vdGhlciB0aHJlYWQuCisKKy0gSXNzdWUgIzI2OTIzOiBGaXggYXN5bmNpby5HYXRoZXIgdG8gcmVmdXNlIGJlaW5nIGNhbmNlbGxlZCBvbmNlIGFsbAorICBjaGlsZHJlbiBhcmUgZG9uZS4KKyAgUGF0Y2ggYnkgSm9oYW5uZXMgRWJrZS4KKworLSBJc3N1ZSAjMjY3OTY6IERvbid0IGNvbmZpZ3VyZSB0aGUgbnVtYmVyIG9mIHdvcmtlcnMgZm9yIGRlZmF1bHQKKyAgdGhyZWFkcG9vbCBleGVjdXRvci4KKyAgSW5pdGlhbCBwYXRjaCBieSBIYW5zIExhd3JlbnouCisKKy0gSXNzdWUgIzI4NTQ0OiBJbXBsZW1lbnQgYXN5bmNpby5UYXNrIGluIEMuCisKK1dpbmRvd3MKKy0tLS0tLS0KKworLSBJc3N1ZSAjMjg1MjI6IEZpeGVzIG1pc2hhbmRsZWQgYnVmZmVyIHJlYWxsb2NhdGlvbiBpbiBnZXRwYXRocC5jCisKK0J1aWxkCistLS0tLQorCistIElzc3VlICMyODQ0NDogRml4IG1pc3NpbmcgZXh0ZW5zaW9ucyBtb2R1bGVzIHdoZW4gY3Jvc3MgY29tcGlsaW5nLgorCistIElzc3VlICMyODIwODogVXBkYXRlIFdpbmRvd3MgYnVpbGQgYW5kIE9TIFggaW5zdGFsbGVycyB0byB1c2UgU1FMaXRlIDMuMTQuMi4KKworLSBJc3N1ZSAjMjgyNDg6IFVwZGF0ZSBXaW5kb3dzIGJ1aWxkIGFuZCBPUyBYIGluc3RhbGxlcnMgdG8gdXNlIE9wZW5TU0wgMS4wLjJqLgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjMjY5NDQ6IEZpeCB0ZXN0X3Bvc2l4IGZvciBBbmRyb2lkIHdoZXJlICdpZCAtRycgaXMgZW50aXJlbHkgd3Jvbmcgb3IKKyAgbWlzc2luZyB0aGUgZWZmZWN0aXZlIGdpZC4KKworLSBJc3N1ZSAjMjg0MDk6IHJlZ3J0ZXN0OiBmaXggdGhlIHBhcnNlciBvZiBjb21tYW5kIGxpbmUgYXJndW1lbnRzLgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuNi4wIGJldGEgMgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDIwMTYtMTAtMTAqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMyODE4MzogT3B0aW1pemUgYW5kIGNsZWFudXAgZGljdCBpdGVyYXRpb24uCisKKy0gSXNzdWUgIzI2MDgxOiBBZGRlZCBDIGltcGxlbWVudGF0aW9uIG9mIGFzeW5jaW8uRnV0dXJlLgorICBPcmlnaW5hbCBwYXRjaCBieSBZdXJ5IFNlbGl2YW5vdi4KKworLSBJc3N1ZSAjMjgzNzk6IEFkZGVkIHNhbml0eSBjaGVja3MgYW5kIHRlc3RzIGZvciBQeVVuaWNvZGVfQ29weUNoYXJhY3RlcnMoKS4KKyAgUGF0Y2ggYnkgWGlhbmcgWmhhbmcuCisKKy0gSXNzdWUgIzI4Mzc2OiBUaGUgdHlwZSBvZiBsb25nIHJhbmdlIGl0ZXJhdG9yIGlzIG5vdyByZWdpc3RlcmVkIGFzIEl0ZXJhdG9yLgorICBQYXRjaCBieSBPcmVuIE1pbG1hbi4KKworLSBJc3N1ZSAjMjgzNzY6IENyZWF0aW5nIGluc3RhbmNlcyBvZiByYW5nZV9pdGVyYXRvciBieSBjYWxsaW5nIHJhbmdlX2l0ZXJhdG9yCisgIHR5cGUgbm93IGlzIGRlcHJlY2F0ZWQuICBQYXRjaCBieSBPcmVuIE1pbG1hbi4KKworLSBJc3N1ZSAjMjgzNzY6IFRoZSBjb25zdHJ1Y3RvciBvZiByYW5nZV9pdGVyYXRvciBub3cgY2hlY2tzIHRoYXQgc3RlcCBpcyBub3QgMC4KKyAgUGF0Y2ggYnkgT3JlbiBNaWxtYW4uCisKKy0gSXNzdWUgIzI2OTA2OiBSZXNvbHZpbmcgc3BlY2lhbCBtZXRob2RzIG9mIHVuaW5pdGlhbGl6ZWQgdHlwZSBub3cgY2F1c2VzCisgIGltcGxpY2l0IGluaXRpYWxpemF0aW9uIG9mIHRoZSB0eXBlIGluc3RlYWQgb2YgYSBmYWlsLgorCistIElzc3VlICMxODI4NzogUHlUeXBlX1JlYWR5KCkgbm93IGNoZWNrcyB0aGF0IHRwX25hbWUgaXMgbm90IE5VTEwuCisgIE9yaWdpbmFsIHBhdGNoIGJ5IE5pa2xhcyBLb2VwLgorCistIElzc3VlICMyNDA5ODogRml4ZWQgcG9zc2libGUgY3Jhc2ggd2hlbiBBU1QgaXMgY2hhbmdlZCBpbiBwcm9jZXNzIG9mCisgIGNvbXBpbGluZyBpdC4KKworLSBJc3N1ZSAjMjgyMDE6IERpY3QgcmVkdWNlcyBwb3NzaWJpbGl0eSBvZiAybmQgY29uZmxpY3QgaW4gaGFzaCB0YWJsZSB3aGVuCisgIGhhc2hlcyBoYXZlIHNhbWUgbG93ZXIgYml0cy4KKworLSBJc3N1ZSAjMjgzNTA6IFN0cmluZyBjb25zdGFudHMgd2l0aCBudWxsIGNoYXJhY3RlciBubyBsb25nZXIgaW50ZXJuZWQuCisKKy0gSXNzdWUgIzI2NjE3OiBGaXggY3Jhc2ggd2hlbiBHQyBydW5zIGR1cmluZyB3ZWFrcmVmIGNhbGxiYWNrcy4KKworLSBJc3N1ZSAjMjc5NDI6IFN0cmluZyBjb25zdGFudHMgbm93IGludGVybmVkIHJlY3Vyc2l2ZWx5IGluIHR1cGxlcyBhbmQgZnJvemVuc2V0cy4KKworLSBJc3N1ZSAjMjE1Nzg6IEZpeGVkIG1pc2xlYWRpbmcgZXJyb3IgbWVzc2FnZSB3aGVuIEltcG9ydEVycm9yIGNhbGxlZCB3aXRoCisgIGludmFsaWQga2V5d29yZCBhcmdzLgorCistIElzc3VlICMyODIwMzogRml4IGluY29ycmVjdCB0eXBlIGluIGNvbXBsZXgoMS4wLCB7MjozfSkgZXJyb3IgbWVzc2FnZS4KKyAgUGF0Y2ggYnkgU291bXlhIFNoYXJtYS4KKworLSBJc3N1ZSAjMjgwODY6IFNpbmdsZSB2YXItcG9zaXRpb25hbCBhcmd1bWVudCBvZiB0dXBsZSBzdWJ0eXBlIHdhcyBwYXNzZWQKKyAgdW5zY2F0aGVkIHRvIHRoZSBDLWRlZmluZWQgZnVuY3Rpb24uICBOb3cgaXQgaXMgY29udmVydGVkIHRvIGV4YWN0IHR1cGxlLgorCistIElzc3VlICMyODIxNDogTm93IF9fc2V0X25hbWVfXyBpcyBsb29rZWQgdXAgb24gdGhlIGNsYXNzIGluc3RlYWQgb2YgdGhlCisgIGluc3RhbmNlLgorCistIElzc3VlICMyNzk1NTogRmFsbGJhY2sgb24gcmVhZGluZyAvZGV2L3VyYW5kb20gZGV2aWNlIHdoZW4gdGhlIGdldHJhbmRvbSgpCisgIHN5c2NhbGwgZmFpbHMgd2l0aCBFUEVSTSwgZm9yIGV4YW1wbGUgd2hlbiBibG9ja2VkIGJ5IFNFQ0NPTVAuCisKKy0gSXNzdWUgIzI4MTkyOiBEb24ndCBpbXBvcnQgcmVhZGxpbmUgaW4gaXNvbGF0ZWQgbW9kZS4KKworLSBVcGdyYWRlIGludGVybmFsIHVuaWNvZGUgZGF0YWJhc2VzIHRvIFVuaWNvZGUgdmVyc2lvbiA5LjAuMC4KKworLSBJc3N1ZSAjMjgxMzE6IEZpeCBhIHJlZ3Jlc3Npb24gaW4gemlwaW1wb3J0J3MgY29tcGlsZV9zb3VyY2UoKS4gIHppcGltcG9ydAorICBzaG91bGQgdXNlIHRoZSBzYW1lIG9wdGltaXphdGlvbiBsZXZlbCBhcyB0aGUgaW50ZXJwcmV0ZXIuCisKKy0gSXNzdWUgIzI4MTI2OiBSZXBsYWNlIFB5X01FTUNQWSB3aXRoIG1lbWNweSgpLiBWaXN1YWwgU3R1ZGlvIGNhbiBwcm9wZXJseQorICBvcHRpbWl6ZSBtZW1jcHkoKS4KKworLSBJc3N1ZSAjMjgxMjA6IEZpeCBkaWN0LnBvcCgpIGZvciBzcGxpdHRlZCBkaWN0aW9uYXJ5IHdoZW4gdHJ5aW5nIHRvIHJlbW92ZSBhCisgICJwZW5kaW5nIGtleSIgKE5vdCB5ZXQgaW5zZXJ0ZWQgaW4gc3BsaXQtdGFibGUpLiBQYXRjaCBieSBYaWFuZyBaaGFuZy4KKworLSBJc3N1ZSAjMjYxODI6IFJhaXNlIERlcHJlY2F0aW9uV2FybmluZyB3aGVuIGFzeW5jIGFuZCBhd2FpdCBrZXl3b3JkcyBhcmUKKyAgdXNlZCBhcyB2YXJpYWJsZS9hdHRyaWJ1dGUvY2xhc3MvZnVuY3Rpb24gbmFtZS4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICMyNzk5ODogRml4ZWQgYnl0ZXMgcGF0aCBzdXBwb3J0IGluIG9zLnNjYW5kaXIoKSBvbiBXaW5kb3dzLgorICBQYXRjaCBieSBFcnlrIFN1bi4KKworLSBJc3N1ZSAjMjgzMTc6IFRoZSBkaXNhc3NlbWJsZXIgbm93IGRlY29kZXMgRk9STUFUX1ZBTFVFIGFyZ3VtZW50LgorCiAtIElzc3VlICMyNjI5MzogRml4ZWQgd3JpdGluZyBaSVAgZmlsZXMgdGhhdCBzdGFydHMgbm90IGZyb20gdGhlIHN0YXJ0IG9mIHRoZQogICBmaWxlLiAgT2Zmc2V0cyBpbiBaSVAgZmlsZSBub3cgYXJlIHJlbGF0aXZlIHRvIHRoZSBzdGFydCBvZiB0aGUgYXJjaGl2ZSBpbgogICBjb25mb3JtaW5nIHRvIHRoZSBzcGVjaWZpY2F0aW9uLgogCistIElzc3VlICMyODM4MDogdW5pdHRlc3QubW9jayBNb2NrIGF1dG9zcGVjIGZ1bmN0aW9ucyBub3cgcHJvcGVybHkgc3VwcG9ydAorICBhc3NlcnRfY2FsbGVkLCBhc3NlcnRfbm90X2NhbGxlZCwgYW5kIGFzc2VydF9jYWxsZWRfb25jZS4KKworLSBJc3N1ZSAjMjcxODEgcmVtb3ZlIHN0YXRpc3RpY3MuZ2VvbWV0cmljX21lYW4gYW5kIGRlZmVyIHVudGlsIDMuNy4KKworLSBJc3N1ZSAjMjgyMjk6IGx6bWEgbW9kdWxlIG5vdyBzdXBwb3J0cyBwYXRobGliLgorCiAtIElzc3VlICMyODMyMTogRml4ZWQgd3JpdGluZyBub24tQk1QIGNoYXJhY3RlcnMgd2l0aCBiaW5hcnkgZm9ybWF0IGluIHBsaXN0bGliLgogCistIElzc3VlICMyODIyNTogYnoyIG1vZHVsZSBub3cgc3VwcG9ydHMgcGF0aGxpYi4gIEluaXRpYWwgcGF0Y2ggYnkgRXRoYW4gRnVybWFuLgorCistIElzc3VlICMyODIyNzogZ3ppcCBub3cgc3VwcG9ydHMgcGF0aGxpYi4gIFBhdGNoIGJ5IEV0aGFuIEZ1cm1hbi4KKworLSBJc3N1ZSAjMjczNTg6IE9wdGltaXplZCBtZXJnaW5nIHZhci1rZXl3b3JkIGFyZ3VtZW50cyBhbmQgaW1wcm92ZWQgZXJyb3IKKyAgbWVzc2FnZSB3aGVuIHBhc3MgYSBub24tbWFwcGluZyBhcyBhIHZhci1rZXl3b3JkIGFyZ3VtZW50LgorCistIElzc3VlICMyODI1NzogSW1wcm92ZWQgZXJyb3IgbWVzc2FnZSB3aGVuIHBhc3MgYSBub24taXRlcmFibGUgYXMKKyAgYSB2YXItcG9zaXRpb25hbCBhcmd1bWVudC4gIEFkZGVkIG9wY29kZSBCVUlMRF9UVVBMRV9VTlBBQ0tfV0lUSF9DQUxMLgorCiAtIElzc3VlICMyODMyMjogRml4ZWQgcG9zc2libGUgY3Jhc2hlcyB3aGVuIHVucGlja2xlIGl0ZXJ0b29scyBvYmplY3RzIGZyb20KICAgaW5jb3JyZWN0IHBpY2tsZSBkYXRhLiAgQmFzZWQgb24gcGF0Y2ggYnkgSm9obiBMZWl0Y2guCiAKLS0gRml4IHBvc3NpYmxlIGludGVnZXIgb3ZlcmZsb3dzIGFuZCBjcmFzaGVzIGluIHRoZSBtbWFwIG1vZHVsZSB3aXRoIHVudXN1YWwKLSAgdXNhZ2UgcGF0dGVybnMuCistIElzc3VlICMyODIyODogaW1naGRyIG5vdyBzdXBwb3J0cyBwYXRobGliLgogCi0tIElzc3VlICMxNzAzMTc4OiBGaXggdGhlIGFiaWxpdHkgdG8gcGFzcyB0aGUgLS1saW5rLW9iamVjdHMgb3B0aW9uIHRvIHRoZQotICBkaXN0dXRpbHMgYnVpbGRfZXh0IGNvbW1hbmQuCistIElzc3VlICMyODIyNjogY29tcGlsZWFsbCBub3cgc3VwcG9ydHMgcGF0aGxpYi4KKworLSBJc3N1ZSAjMjgzMTQ6IEZpeCBmdW5jdGlvbiBkZWNsYXJhdGlvbiAoQyBmbGFncykgZm9yIHRoZSBnZXRpdGVyYXRvcigpIG1ldGhvZAorICBvZiB4bWwuZXRyZWUuRWxlbWVudFRyZWUuRWxlbWVudC4KKworLSBJc3N1ZSAjMjgxNDg6IFN0b3AgdXNpbmcgbG9jYWx0aW1lKCkgYW5kIGdtdGltZSgpIGluIHRoZSB0aW1lCisgIG1vZHVsZS4KKworICBJbnRyb2R1Y2VkIHBsYXRmb3JtIGluZGVwZW5kZW50IF9QeVRpbWVfbG9jYWx0aW1lIEFQSSB0aGF0IGlzCisgIHNpbWlsYXIgdG8gUE9TSVggbG9jYWx0aW1lX3IsIGJ1dCBhdmFpbGFibGUgb24gYWxsIHBsYXRmb3Jtcy4gIFBhdGNoCisgIGJ5IEVkIFNjaG91dGVuLgogCiAtIElzc3VlICMyODI1MzogRml4ZWQgY2FsZW5kYXIgZnVuY3Rpb25zIGZvciBleHRyZW1lIG1vbnRoczogMDAwMS0wMQogICBhbmQgOTk5OS0xMi4KQEAgLTIzMSwxMCArNTYxLDE1IEBACiAtIElzc3VlICMyNzg5NzogRml4ZWQgcG9zc2libGUgY3Jhc2ggaW4gc3FsaXRlMy5Db25uZWN0aW9uLmNyZWF0ZV9jb2xsYXRpb24oKQogICBpZiBwYXNzIGludmFsaWQgc3RyaW5nLWxpa2Ugb2JqZWN0IGFzIGEgbmFtZS4gIFBhdGNoIGJ5IFhpYW5nIFpoYW5nLgogCistIElzc3VlICMxODg0NDogcmFuZG9tLmNob2ljZXMoKSBub3cgaGFzIGsgYXMgYSBrZXl3b3JkLW9ubHkgYXJndW1lbnQKKyAgdG8gaW1wcm92ZSB0aGUgcmVhZGFiaWxpdHkgb2YgY29tbW9uIGNhc2VzIGFuZCBjb21lIGludG8gbGluZQorICB3aXRoIHRoZSBzaWduYXR1cmUgdXNlZCBpbiBvdGhlciBsYW5ndWFnZXMuCisKIC0gSXNzdWUgIzE4ODkzOiBGaXggaW52YWxpZCBleGNlcHRpb24gaGFuZGxpbmcgaW4gTGliL2N0eXBlcy9tYWNob2xpYi9keWxkLnB5LgogICBQYXRjaCBieSBNYWRpc29uIE1heS4KIAogLSBJc3N1ZSAjMjc2MTE6IEZpeGVkIHN1cHBvcnQgb2YgZGVmYXVsdCByb290IHdpbmRvdyBpbiB0aGUgdGtpbnRlci50aXggbW9kdWxlLgorICBBZGRlZCB0aGUgbWFzdGVyIHBhcmFtZXRlciBpbiB0aGUgRGlzcGxheVN0eWxlIGNvbnN0cnVjdG9yLgogCiAtIElzc3VlICMyNzM0ODogSW4gdGhlIHRyYWNlYmFjayBtb2R1bGUsIHJlc3RvcmUgdGhlIGZvcm1hdHRpbmcgb2YgZXhjZXB0aW9uCiAgIG1lc3NhZ2VzIGxpa2UgIkV4Y2VwdGlvbjogTm9uZSIuICBUaGlzIGZpeGVzIGEgcmVncmVzc2lvbiBpbnRyb2R1Y2VkIGluCkBAIC0yNDIsNiArNTc3LDE1IEBACiAKIC0gSXNzdWUgIzI1NjUxOiBBbGxvdyBmYWxzeSB2YWx1ZXMgdG8gYmUgdXNlZCBmb3IgbXNnIHBhcmFtZXRlciBvZiBzdWJUZXN0KCkuCiAKKy0gSXNzdWUgIzI3Nzc4OiBGaXggYSBtZW1vcnkgbGVhayBpbiBvcy5nZXRyYW5kb20oKSB3aGVuIHRoZSBnZXRyYW5kb20oKSBpcworICBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCBhbmQgYSBzaWduYWwgaGFuZGxlciByYWlzZXMgYSBQeXRob24gZXhjZXB0aW9uLgorCistIElzc3VlICMyODIwMDogRml4IG1lbW9yeSBsZWFrIG9uIFdpbmRvd3MgaW4gdGhlIG9zIG1vZHVsZSAoZml4CisgIHBhdGhfY29udmVydGVyKCkgZnVuY3Rpb24pLgorCistIElzc3VlICMyNTQwMDogUm9ib3RGaWxlUGFyc2VyIG5vdyBjb3JyZWN0bHkgcmV0dXJucyBkZWZhdWx0IHZhbHVlcyBmb3IKKyAgY3Jhd2xfZGVsYXkgYW5kIHJlcXVlc3RfcmF0ZS4gIEluaXRpYWwgcGF0Y2ggYnkgUGV0ZXIgV2lydHouCisKIC0gSXNzdWUgIzI3OTMyOiBQcmV2ZW50IG1lbW9yeSBsZWFrIGluIHdpbjMyX3ZlcigpLgogCiAtIEZpeCBVbmJvdW5kTG9jYWxFcnJvciBpbiBzb2NrZXQuX3NlbmRmaWxlX3VzZV9zZW5kZmlsZS4KQEAgLTI0OSw2ICs1OTMsMTAgQEAKIC0gSXNzdWUgIzI4MDc1OiBDaGVjayBmb3IgRVJST1JfQUNDRVNTX0RFTklFRCBpbiBXaW5kb3dzIGltcGxlbWVudGF0aW9uIG9mCiAgIG9zLnN0YXQoKS4gIFBhdGNoIGJ5IEVyeWsgU3VuLgogCistIElzc3VlICMyMjQ5MzogV2FybmluZyBtZXNzYWdlIGVtaXR0ZWQgYnkgdXNpbmcgaW5saW5lIGZsYWdzIGluIHRoZSBtaWRkbGUgb2YKKyAgcmVndWxhciBleHByZXNzaW9uIG5vdyBjb250YWlucyBhICh0cnVuY2F0ZWQpIHJlZ2V4IHBhdHRlcm4uCisgIFBhdGNoIGJ5IFRpbSBHcmFoYW0uCisKIC0gSXNzdWUgIzI1MjcwOiBQcmV2ZW50IGNvZGVjcy5lc2NhcGVfZW5jb2RlKCkgZnJvbSByYWlzaW5nIFN5c3RlbUVycm9yIHdoZW4KICAgYW4gZW1wdHkgYnl0ZXN0cmluZyBpcyBwYXNzZWQuCiAKQEAgLTI1NywyMCArNjA1LDMyMyBAQAogLSBJc3N1ZSAjMjU4OTU6IEVuYWJsZSBXZWJTb2NrZXQgVVJMIHNjaGVtZXMgaW4gdXJsbGliLnBhcnNlLnVybGpvaW4uCiAgIFBhdGNoIGJ5IEdlcmdlbHkgSW1yZWggYW5kIE1hcmt1cyBIb2x0ZXJtYW5uLgogCistIElzc3VlICMyODExNDogRml4IGEgY3Jhc2ggaW4gcGFyc2VfZW52bGlzdCgpIHdoZW4gZW52IGNvbnRhaW5zIGJ5dGUgc3RyaW5ncy4KKyAgUGF0Y2ggYnkgRXJ5ayBTdW4uCisKIC0gSXNzdWUgIzI3NTk5OiBGaXhlZCBidWZmZXIgb3ZlcnJ1biBpbiBiaW5hc2NpaS5iMmFfcXAoKSBhbmQgYmluYXNjaWkuYTJiX3FwKCkuCiAKLS0gSXNzdWUgIzE5MDAzOm0gZW1haWwuZ2VuZXJhdG9yIG5vdyByZXBsYWNlcyBvbmx5IFxyIGFuZC9vciBcbiBsaW5lCi0gIGVuZGluZ3MsIHBlciB0aGUgUkZDLCBpbnN0ZWFkIG9mIGFsbCB1bmljb2RlIGxpbmUgZW5kaW5ncy4KKy0gSXNzdWUgIzI3OTA2OiBGaXggc29ja2V0IGFjY2VwdCBleGhhdXN0aW9uIGR1cmluZyBoaWdoIFRDUCB0cmFmZmljLgorICBQYXRjaCBieSBLZXZpbiBDb253YXkuCisKKy0gSXNzdWUgIzI4MTc0OiBIYW5kbGUgd2hlbiBTT19SRVVTRVBPUlQgaXNuJ3QgcHJvcGVybHkgc3VwcG9ydGVkLgorICBQYXRjaCBieSBTZXRoIE1pY2hhZWwgTGFyc29uLgorCistIElzc3VlICMyNjY1NDogSW5zcGVjdCBmdW5jdG9vbHMucGFydGlhbCBpbiBhc3luY2lvLkhhbmRsZS5fX3JlcHJfXy4KKyAgUGF0Y2ggYnkgaWNlYm95LgorCistIElzc3VlICMyNjkwOTogRml4IHNsb3cgcGlwZXMgSU8gaW4gYXN5bmNpby4KKyAgUGF0Y2ggYnkgSU5BREEgTmFva2kuCisKKy0gSXNzdWUgIzI4MTc2OiBGaXggY2FsbGJhY2tzIHJhY2UgaW4gYXN5bmNpby5TZWxlY3Rvckxvb3Auc29ja19jb25uZWN0LgorCistIElzc3VlICMyNzc1OTogRml4IHNlbGVjdG9ycyBpbmNvcnJlY3RseSByZXRhaW4gaW52YWxpZCBmaWxlIGRlc2NyaXB0b3JzLgorICBQYXRjaCBieSBNYXJrIFdpbGxpYW1zLgorCistIElzc3VlICMyODM2ODogUmVmdXNlIG1vbml0b3JpbmcgcHJvY2Vzc2VzIGlmIHRoZSBjaGlsZCB3YXRjaGVyIGhhcyBubworICBsb29wIGF0dGFjaGVkLgorICBQYXRjaCBieSBWaW5jZW50IE1pY2hlbC4KKworLSBJc3N1ZSAjMjgzNjk6IFJhaXNlIFJ1bnRpbWVFcnJvciB3aGVuIHRyYW5zcG9ydCdzIEZEIGlzIHVzZWQgd2l0aAorICBhZGRfcmVhZGVyLCBhZGRfd3JpdGVyLCBldGMuCisKKy0gSXNzdWUgIzI4MzcwOiBTcGVlZHVwIGFzeW5jaW8uU3RyZWFtUmVhZGVyLnJlYWRleGFjdGx5LgorICBQYXRjaCBieSDQmtC+0YDQtdC90LHQtdGA0LMg0JzQsNGA0LouCisKKy0gSXNzdWUgIzI4MzcxOiBEZXByZWNhdGUgcGFzc2luZyBhc3luY2lvLkhhbmRsZXMgdG8gcnVuX2luX2V4ZWN1dG9yLgorCistIElzc3VlICMyODM3MjogRml4IGFzeW5jaW8gdG8gc3VwcG9ydCBmb3JtYXR0aW5nIG9mIG5vbi1weXRob24gY29yb3V0aW5lcy4KKworLSBJc3N1ZSAjMjgzOTk6IFJlbW92ZSBVTklYIHNvY2tldCBmcm9tIEZTIGJlZm9yZSBiaW5kaW5nLgorICBQYXRjaCBieSDQmtC+0YDQtdC90LHQtdGA0LMg0JzQsNGA0LouCisKKy0gSXNzdWUgIzI3OTcyOiBQcm9oaWJpdCBUYXNrcyB0byBhd2FpdCBvbiB0aGVtc2VsdmVzLgorCitXaW5kb3dzCistLS0tLS0tCisKKy0gSXNzdWUgIzI4NDAyOiBBZGRzIHNpZ25lZCBjYXRhbG9nIGZpbGVzIGZvciBzdGRsaWIgb24gV2luZG93cy4KKworLSBJc3N1ZSAjMjgzMzM6IEVuYWJsZXMgVW5pY29kZSBmb3IgcHMxL3BzMiBhbmQgaW5wdXQoKSBwcm9tcHRzLiAoUGF0Y2ggYnkKKyAgRXJ5ayBTdW4pCisKKy0gSXNzdWUgIzI4MjUxOiBJbXByb3ZlbWVudHMgdG8gaGVscCBtYW51YWxzIG9uIFdpbmRvd3MuCisKKy0gSXNzdWUgIzI4MTEwOiBsYXVuY2hlci5tc2kgaGFzIGRpZmZlcmVudCBwcm9kdWN0IGNvZGVzIGJldHdlZW4gMzItYml0IGFuZAorICA2NC1iaXQKKworLSBJc3N1ZSAjMjgxNjE6IE9wZW5pbmcgQ09OIGZvciB3cml0ZSBhY2Nlc3MgZmFpbHMKKworLSBJc3N1ZSAjMjgxNjI6IFdpbmRvd3NDb25zb2xlSU8gcmVhZGFsbCgpIGZhaWxzIGlmIGZpcnN0IGxpbmUgc3RhcnRzIHdpdGgKKyAgQ3RybCtaCisKKy0gSXNzdWUgIzI4MTYzOiBXaW5kb3dzQ29uc29sZUlPIGZpbGVubygpIHBhc3NlcyB3cm9uZyBmbGFncyB0bworICBfb3Blbl9vc2ZoYW5kbGUKKworLSBJc3N1ZSAjMjgxNjQ6IF9QeUlPX2dldF9jb25zb2xlX3R5cGUgZmFpbHMgZm9yIHZhcmlvdXMgcGF0aHMKKworLSBJc3N1ZSAjMjgxMzc6IFJlbmFtZXMgV2luZG93cyBwYXRoIGZpbGUgdG8gLl9wdGgKKworLSBJc3N1ZSAjMjgxMzg6IFdpbmRvd3MgLl9wdGggZmlsZSBzaG91bGQgYWxsb3cgaW1wb3J0IHNpdGUKKworQyBBUEkKKy0tLS0tCisKKy0gSXNzdWUgIzI4NDI2OiBEZXByZWNhdGVkIHVuZG9jdW1lbnRlZCBmdW5jdGlvbnMgUHlVbmljb2RlX0FzRW5jb2RlZE9iamVjdCgpLAorICBQeVVuaWNvZGVfQXNEZWNvZGVkT2JqZWN0KCksIFB5VW5pY29kZV9Bc0RlY29kZWRVbmljb2RlKCkgYW5kCisgIFB5VW5pY29kZV9Bc0VuY29kZWRVbmljb2RlKCkuCisKK0J1aWxkCistLS0tLQorCistIElzc3VlICMyODI1ODogRml4ZWQgYnVpbGQgd2l0aCBFc3RvbmlhbiBsb2NhbGUgKHB5dGhvbi1jb25maWcgYW5kIGRpc3RjbGVhbgorICB0YXJnZXRzIGluIE1ha2VmaWxlKS4gIFBhdGNoIGJ5IEFyZnJldmVyIEZyZWh0ZXMgVGFpZmVyc2FyIEFyYWhlc2lzLgorCistIElzc3VlICMyNjY2MTogc2V0dXAucHkgbm93IGRldGVjdHMgc3lzdGVtIGxpYmZmaSB3aXRoIG11bHRpYXJjaCB3cmFwcGVyLgorCistIElzc3VlICMxNTgxOTogUmVtb3ZlIHJlZHVuZGFudCBpbmNsdWRlIHNlYXJjaCBkaXJlY3Rvcnkgb3B0aW9uIGZvciBidWlsZGluZworICBvdXRzaWRlIHRoZSBzb3VyY2UgdHJlZS4KKworVGVzdHMKKy0tLS0tCisKKy0gSXNzdWUgIzI4MjE3OiBBZGRzIF90ZXN0Y29uc29sZSBtb2R1bGUgdG8gdGVzdCBjb25zb2xlIGlucHV0LgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuNi4wIGJldGEgMQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDIwMTYtMDktMTIqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMyMzcyMjogVGhlIF9fY2xhc3NfXyBjZWxsIHVzZWQgYnkgemVyby1hcmd1bWVudCBzdXBlcigpIGlzIG5vdworICBpbml0aWFsaXplZCBmcm9tIHR5cGUuX19uZXdfXyByYXRoZXIgdGhhbiBfX2J1aWxkX2NsYXNzX18sIHNvIGNsYXNzIG1ldGhvZHMKKyAgcmVseWluZyBvbiB0aGF0IHdpbGwgbm93IHdvcmsgY29ycmVjdGx5IHdoZW4gY2FsbGVkIGZyb20gbWV0YWNsYXNzIG1ldGhvZHMKKyAgZHVyaW5nIGNsYXNzIGNyZWF0aW9uLiBQYXRjaCBieSBNYXJ0aW4gVGVpY2htYW5uLgorCistIElzc3VlICMyNTIyMTogRml4IGNvcnJ1cHRlZCByZXN1bHQgZnJvbSBQeUxvbmdfRnJvbUxvbmcoMCkgd2hlbiBQeXRob24KKyAgaXMgY29tcGlsZWQgd2l0aCBOU01BTExQT1NJTlRTID0gMC4KKworLSBJc3N1ZSAjMjcwODA6IEltcGxlbWVudCBmb3JtYXR0aW5nIHN1cHBvcnQgZm9yIFBFUCA1MTUuICBJbml0aWFsIHBhdGNoCisgIGJ5IENocmlzIEFuZ2VsaWNvLgorCistIElzc3VlICMyNzE5OTogSW4gdGFyZmlsZSwgZXhwb3NlIGNvcHlmaWxlb2JqIGJ1ZnNpemUgdG8gaW1wcm92ZSB0aHJvdWdocHV0LgorICBQYXRjaCBieSBKYXNvbiBGcmllZC4KKworLSBJc3N1ZSAjMjc5NDg6IEluIGYtc3RyaW5ncywgb25seSBhbGxvdyBiYWNrc2xhc2hlcyBpbnNpZGUgdGhlIGJyYWNlcworICAod2hlcmUgdGhlIGV4cHJlc3Npb25zIGFyZSkuICBUaGlzIGlzIGEgYnJlYWtpbmcgY2hhbmdlIGZyb20gdGhlIDMuNgorICBhbHBoYSByZWxlYXNlcywgd2hlcmUgYmFja3NsYXNoZXMgYXJlIGFsbG93ZWQgYW55d2hlcmUgaW4gYW4KKyAgZi1zdHJpbmcuICBBbHNvLCByZXF1aXJlIHRoYXQgZXhwcmVzc2lvbnMgaW5zaWRlIGYtc3RyaW5ncyBiZQorICBlbmNsb3NlZCB3aXRoaW4gbGl0ZXJhbCBicmFjZXMsIGFuZCBub3QgZXNjYXBlcyBsaWtlCisgIGYnXHg3YiJoaSJceDdkJy4KKworLSBJc3N1ZSAjMjgwNDY6IFJlbW92ZSBwbGF0Zm9ybS1zcGVjaWZpYyBkaXJlY3RvcmllcyBmcm9tIHN5cy5wYXRoLgorCistIElzc3VlICMyODA3MTogQWRkIGVhcmx5LW91dCBmb3IgZGlmZmVyZW5jaW5nIGZyb20gYW4gZW1wdHkgc2V0LgorCistIElzc3VlICMyNTc1ODogUHJldmVudHMgemlwaW1wb3J0IGZyb20gdW5uZWNlc3NhcmlseSBlbmNvZGluZyBhIGZpbGVuYW1lCisgIChwYXRjaCBieSBFcnlrIFN1bikKKworLSBJc3N1ZSAjMjU4NTY6IFRoZSBfX21vZHVsZV9fIGF0dHJpYnV0ZSBvZiBleHRlbnNpb24gY2xhc3NlcyBhbmQgZnVuY3Rpb25zCisgIG5vdyBpcyBpbnRlcm5lZC4gVGhpcyBsZWFkcyB0byBtb3JlIGNvbXBhY3QgcGlja2xlIGRhdGEgd2l0aCBwcm90b2NvbCA0LgorCistIElzc3VlICMyNzIxMzogUmV3b3JrIENBTExfRlVOQ1RJT04qIG9wY29kZXMgdG8gcHJvZHVjZSBzaG9ydGVyIGFuZCBtb3JlCisgIGVmZmljaWVudCBieXRlY29kZS4gUGF0Y2ggYnkgRGVtdXIgUnVtZWQsIGRlc2lnbiBieSBTZXJoaXkgU3RvcmNoYWthLAorICByZXZpZXdlZCBieSBTZXJoaXkgU3RvcmNoYWthIGFuZCBWaWN0b3IgU3Rpbm5lci4KKworLSBJc3N1ZSAjMjYzMzE6IEltcGxlbWVudCB0b2tlbml6aW5nIHN1cHBvcnQgZm9yIFBFUCA1MTUuIFBhdGNoIGJ5IEdlb3JnIEJyYW5kbC4KKworLSBJc3N1ZSAjMjc5OTk6IE1ha2UgImdsb2JhbCBhZnRlciB1c2UiIGEgU3ludGF4RXJyb3IsIGFuZCBkaXR0byBmb3Igbm9ubG9jYWwuCisgIFBhdGNoIGJ5IEl2YW4gTGV2a2l2c2t5aS4KKworLSBJc3N1ZSAjMjgwMDM6IEltcGxlbWVudCBQRVAgNTI1IC0tIEFzeW5jaHJvbm91cyBHZW5lcmF0b3JzLgorCistIElzc3VlICMyNzk4NTogSW1wbGVtZW50IFBFUCA1MjYgLS0gU3ludGF4IGZvciBWYXJpYWJsZSBBbm5vdGF0aW9ucy4KKyAgUGF0Y2ggYnkgSXZhbiBMZXZraXZza3lpLgorCistIElzc3VlICMyNjA1ODogQWRkIGEgbmV3IHByaXZhdGUgdmVyc2lvbiB0byB0aGUgYnVpbHRpbiBkaWN0IHR5cGUsIGluY3JlbWVudGVkCisgIGF0IGVhY2ggZGljdGlvbmFyeSBjcmVhdGlvbiBhbmQgYXQgZWFjaCBkaWN0aW9uYXJ5IGNoYW5nZS4gSW1wbGVtZW50YXRpb24gb2YKKyAgdGhlIFBFUCA1MDkuCisKKy0gSXNzdWUgIzI3MzY0OiBBIGJhY2tzbGFzaC1jaGFyYWN0ZXIgcGFpciB0aGF0IGlzIG5vdCBhIHZhbGlkIGVzY2FwZSBzZXF1ZW5jZQorICBub3cgZ2VuZXJhdGVzIGEgRGVwcmVjYXRpb25XYXJuaW5nLiAgUGF0Y2ggYnkgRW1hbnVlbCBCYXJyeS4KKworLSBJc3N1ZSAjMjczNTA6IGBkaWN0YCBpbXBsZW1lbnRhdGlvbiBpcyBjaGFuZ2VkIGxpa2UgUHlQeS4gSXQgaXMgbW9yZSBjb21wYWN0CisgIGFuZCBwcmVzZXJ2ZXMgaW5zZXJ0aW9uIG9yZGVyLgorICAoQ29uY2VwdCBkZXZlbG9wZWQgYnkgUmF5bW9uZCBIZXR0aW5nZXIgYW5kIHBhdGNoIGJ5IEluYWRhIE5hb2tpLikKKworLSBJc3N1ZSAjMjc5MTE6IFJlbW92ZSB1bm5lY2Vzc2FyeSBlcnJvciBjaGVja3MgaW4KKyAgYGBleGVjX2J1aWx0aW5fb3JfZHluYW1pYygpYGAuCisKKy0gSXNzdWUgIzI3MDc4OiBBZGRlZCBCVUlMRF9TVFJJTkcgb3Bjb2RlLiAgT3B0aW1pemVkIGYtc3RyaW5ncyBldmFsdWF0aW9uLgorCistIElzc3VlICMxNzg4NDogUHl0aG9uIG5vdyByZXF1aXJlcyBzeXN0ZW1zIHdpdGggaW50dHlwZXMuaCBhbmQgc3RkaW50LmgKKworLSBJc3N1ZSAjMjc5NjE6IFJlcXVpcmUgcGxhdGZvcm1zIHRvIHN1cHBvcnQgYGBsb25nIGxvbmdgYC4gUHl0aG9uIGhhc24ndAorICBjb21waWxlZCB3aXRob3V0IGBgbG9uZyBsb25nYGAgZm9yIHllYXJzLCBzbyB0aGlzIGlzIGJhc2ljYWxseSBhIGZvcm1hbGl0eS4KKworLSBJc3N1ZSAjMjczNTU6IFJlbW92ZWQgc3VwcG9ydCBmb3IgV2luZG93cyBDRS4gIEl0IHdhcyBuZXZlciBmaW5pc2hlZCwKKyAgYW5kIFdpbmRvd3MgQ0UgaXMgbm8gbG9uZ2VyIGEgcmVsZXZhbnQgcGxhdGZvcm0gZm9yIFB5dGhvbi4KKworLSBJbXBsZW1lbnQgUEVQIDUyMy4KKworLSBJc3N1ZSAjMjc4NzA6IEEgbGVmdCBzaGlmdCBvZiB6ZXJvIGJ5IGEgbGFyZ2UgaW50ZWdlciBubyBsb25nZXIgYXR0ZW1wdHMKKyAgdG8gYWxsb2NhdGUgbGFyZ2UgYW1vdW50cyBvZiBtZW1vcnkuCisKKy0gSXNzdWUgIzI1NDAyOiBJbiBpbnQtdG8tZGVjaW1hbC1zdHJpbmcgY29udmVyc2lvbiwgaW1wcm92ZSB0aGUgZXN0aW1hdGUKKyAgb2YgdGhlIGludGVybWVkaWF0ZSBtZW1vcnkgcmVxdWlyZWQsIGFuZCByZW1vdmUgYW4gdW5uZWNlc3NhcmlseSBzdHJpY3QKKyAgb3ZlcmZsb3cgY2hlY2suIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzI3MjE0OiBJbiBsb25nX2ludmVydCwgYmUgbW9yZSBjYXJlZnVsIGFib3V0IG1vZGlmeWluZyBvYmplY3QKKyAgcmV0dXJuZWQgYnkgbG9uZ19hZGQsIGFuZCByZW1vdmUgYW4gdW5uZWNlc3NhcnkgY2hlY2sgZm9yIHNtYWxsIGxvbmdzLgorICBUaGFua3MgT3JlbiBNaWxtYW4gZm9yIGFuYWx5c2lzIGFuZCBwYXRjaC4KKworLSBJc3N1ZSAjMjc1MDY6IFN1cHBvcnQgcGFzc2luZyB0aGUgYnl0ZXMvYnl0ZWFycmF5LnRyYW5zbGF0ZSgpICJkZWxldGUiCisgIGFyZ3VtZW50IGJ5IGtleXdvcmQuCisKKy0gSXNzdWUgIzI3ODEyOiBQcm9wZXJseSBjbGVhciBvdXQgYSBnZW5lcmF0b3IncyBmcmFtZSdzIGJhY2tyZWZlcmVuY2UgdG8gdGhlCisgIGdlbmVyYXRvciB0byBwcmV2ZW50IGNyYXNoZXMgaW4gZnJhbWUuY2xlYXIoKS4KKworLSBJc3N1ZSAjMjc4MTE6IEZpeCBhIGNyYXNoIHdoZW4gYSBjb3JvdXRpbmUgdGhhdCBoYXMgbm90IGJlZW4gYXdhaXRlZCBpcworICBmaW5hbGl6ZWQgd2l0aCB3YXJuaW5ncy1hcy1lcnJvcnMgZW5hYmxlZC4KKworLSBJc3N1ZSAjMjc1ODc6IEZpeCBhbm90aGVyIGlzc3VlIGZvdW5kIGJ5IFBWUy1TdHVkaW86IE51bGwgcG9pbnRlciBjaGVjaworICBhZnRlciB1c2Ugb2YgJ2RlZicgaW4gX1B5U3RhdGVfQWRkTW9kdWxlKCkuCisgIEluaXRpYWwgcGF0Y2ggYnkgQ2hyaXN0aWFuIEhlaW1lcy4KKworLSBJc3N1ZSAjMjc3OTI6IFRoZSBtb2R1bG8gb3BlcmF0aW9uIGFwcGxpZWQgdG8gYGBib29sYGAgYW5kIG90aGVyCisgIGBgaW50YGAgc3ViY2xhc3NlcyBub3cgYWx3YXlzIHJldHVybnMgYW4gYGBpbnRgYC4gUHJldmlvdXNseQorICB0aGUgcmV0dXJuIHR5cGUgZGVwZW5kZWQgb24gdGhlIGlucHV0IHZhbHVlcy4gUGF0Y2ggYnkgWGlhbmcgWmhhbmcuCisKKy0gSXNzdWUgIzI2OTg0OiBpbnQoKSBub3cgYWx3YXlzIHJldHVybnMgYW4gaW5zdGFuY2Ugb2YgZXhhY3QgaW50LgorCistIElzc3VlICMyNTYwNDogRml4IGEgbWlub3IgYnVnIGluIGludGVnZXIgdHJ1ZSBkaXZpc2lvbjsgdGhpcyBidWcgY291bGQKKyAgcG90ZW50aWFsbHkgaGF2ZSBjYXVzZWQgb2ZmLWJ5LW9uZS11bHAgcmVzdWx0cyBvbiBwbGF0Zm9ybXMgd2l0aAorICB1bnJlbGlhYmxlIGxkZXhwIGltcGxlbWVudGF0aW9ucy4KKworLSBJc3N1ZSAjMjQyNTQ6IE1ha2UgY2xhc3MgZGVmaW5pdGlvbiBuYW1lc3BhY2Ugb3JkZXJlZCBieSBkZWZhdWx0LgorCistIElzc3VlICMyNzY2MjogRml4IGFuIG92ZXJmbG93IGNoZWNrIGluIGBgTGlzdF9OZXdgYDogdGhlIG9yaWdpbmFsIGNvZGUgd2FzCisgIGNoZWNraW5nIGFnYWluc3QgYGBQeV9TSVpFX01BWGBgIGluc3RlYWQgb2YgdGhlIGNvcnJlY3QgdXBwZXIgYm91bmQgb2YKKyAgYGBQeV9TU0laRV9UX01BWGBgLiBQYXRjaCBieSBYaWFuZyBaaGFuZy4KKworLSBJc3N1ZSAjMjc3ODI6IE11bHRpLXBoYXNlIGV4dGVuc2lvbiBtb2R1bGUgaW1wb3J0IG5vdyBjb3JyZWN0bHkgYWxsb3dzIHRoZQorICBgYG1fbWV0aG9kc2BgIGZpZWxkIHRvIGJlIHVzZWQgdG8gYWRkIG1vZHVsZSBsZXZlbCBmdW5jdGlvbnMgdG8gaW5zdGFuY2VzCisgIG9mIG5vbi1tb2R1bGUgdHlwZXMgcmV0dXJuZWQgZnJvbSBgYFB5X2NyZWF0ZV9tb2RgYC4gUGF0Y2ggYnkgWGlhbmcgWmhhbmcuCisKKy0gSXNzdWUgIzI3OTM2OiBUaGUgcm91bmQoKSBmdW5jdGlvbiBhY2NlcHRlZCBhIHNlY29uZCBOb25lIGFyZ3VtZW50CisgIGZvciBzb21lIHR5cGVzIGJ1dCBub3QgZm9yIG90aGVycy4gIEZpeGVkIHRoZSBpbmNvbnNpc3RlbmN5IGJ5CisgIGFjY2VwdGluZyBOb25lIGZvciBhbGwgbnVtZXJpYyB0eXBlcy4KKworLSBJc3N1ZSAjMjc0ODc6IFdhcm4gaWYgYSBzdWJtb2R1bGUgYXJndW1lbnQgdG8gInB5dGhvbiAtbSIgb3IKKyAgcnVucHkucnVuX21vZHVsZSgpIGlzIGZvdW5kIGluIHN5cy5tb2R1bGVzIGFmdGVyIHBhcmVudCBwYWNrYWdlcyBhcmUKKyAgaW1wb3J0ZWQsIGJ1dCBiZWZvcmUgdGhlIHN1Ym1vZHVsZSBpcyBleGVjdXRlZC4KKworLSBJc3N1ZSAjMjcxNTc6IE1ha2Ugb25seSB0eXBlKCkgaXRzZWxmIGFjY2VwdCB0aGUgb25lLWFyZ3VtZW50IGZvcm0uCisgIFBhdGNoIGJ5IEVyeWsgU3VuIGFuZCBFbWFudWVsIEJhcnJ5LgorCistIElzc3VlICMyNzU1ODogRml4IGEgU3lzdGVtRXJyb3IgaW4gdGhlIGltcGxlbWVudGF0aW9uIG9mICJyYWlzZSIgc3RhdGVtZW50LgorICBJbiBhIGJyYW5kIG5ldyB0aHJlYWQsIHJhaXNlIGEgUnVudGltZUVycm9yIHNpbmNlIHRoZXJlIGlzIG5vIGFjdGl2ZQorICBleGNlcHRpb24gdG8gcmVyYWlzZS4gUGF0Y2ggd3JpdHRlbiBieSBYaWFuZyBaaGFuZy4KKworLSBJc3N1ZSAjMjgwMDg6IEltcGxlbWVudCBQRVAgNTMwIC0tIGFzeW5jaHJvbm91cyBjb21wcmVoZW5zaW9ucy4KKworLSBJc3N1ZSAjMjc5NDI6IEZpeCBtZW1vcnkgbGVhayBpbiBjb2Rlb2JqZWN0LmMKKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICMyODczMjogRml4IGNyYXNoIGluIG9zLnNwYXdudigpIHdpdGggbm8gZWxlbWVudHMgaW4gYXJncworCistIElzc3VlICMyODQ4NTogQWx3YXlzIHJhaXNlIFZhbHVlRXJyb3IgZm9yIG5lZ2F0aXZlCisgIGNvbXBpbGVhbGwuY29tcGlsZV9kaXIod29ya2Vycz0uLi4pIHBhcmFtZXRlciwgZXZlbiB3aGVuIG11bHRpdGhyZWFkaW5nIGlzCisgIHVuYXZhaWxhYmxlLgorCistIElzc3VlICMyODAzNzogVXNlIHNxbGl0ZTNfZ2V0X2F1dG9jb21taXQoKSBpbnN0ZWFkIG9mIHNldHRpbmcKKyAgQ29ubmVjdGlvbi0+aW5UcmFuc2FjdGlvbiBtYW51YWxseS4KKworLSBJc3N1ZSAjMjUyODM6IEF0dHJpYnV0ZXMgdG1fZ210b2ZmIGFuZCB0bV96b25lIGFyZSBub3cgYXZhaWxhYmxlIG9uCisgIGFsbCBwbGF0Zm9ybXMgaW4gdGhlIHJldHVybiB2YWx1ZXMgb2YgdGltZS5sb2NhbHRpbWUoKSBhbmQKKyAgdGltZS5nbXRpbWUoKS4KKworLSBJc3N1ZSAjMjQ0NTQ6IFJlZ3VsYXIgZXhwcmVzc2lvbiBtYXRjaCBvYmplY3QgZ3JvdXBzIGFyZSBub3cKKyAgYWNjZXNzaWJsZSB1c2luZyBfX2dldGl0ZW1fXy4gICJtb1t4XSIgaXMgZXF1aXZhbGVudCB0bworICAibW8uZ3JvdXAoeCkiLgorCistIElzc3VlICMxMDc0MDogc3FsaXRlMyBubyBsb25nZXIgaW1wbGljaXRseSBjb21taXQgYW4gb3BlbiB0cmFuc2FjdGlvbgorICBiZWZvcmUgRERMIHN0YXRlbWVudHMuCisKKy0gSXNzdWUgIzE3OTQxOiBBZGQgYSAqbW9kdWxlKiBwYXJhbWV0ZXIgdG8gY29sbGVjdGlvbnMubmFtZWR0dXBsZSgpLgorCistIElzc3VlICMyMjQ5MzogSW5saW5lIGZsYWdzIG5vdyBzaG91bGQgYmUgdXNlZCBvbmx5IGF0IHRoZSBzdGFydCBvZiB0aGUKKyAgcmVndWxhciBleHByZXNzaW9uLiAgRGVwcmVjYXRpb24gd2FybmluZyBpcyBlbWl0dGVkIGlmIHVzZXMgdGhlbSBpbiB0aGUKKyAgbWlkZGxlIG9mIHRoZSByZWd1bGFyIGV4cHJlc3Npb24uCisKKy0gSXNzdWUgIzI2ODg1OiB4bWxycGMgbm93IHN1cHBvcnRzIHVubWFyc2hhbGxpbmcgYWRkaXRpb25hbCBkYXRhIHR5cGVzIHVzZWQKKyAgYnkgQXBhY2hlIFhNTC1SUEMgaW1wbGVtZW50YXRpb24gZm9yIG51bWVyaWNzIGFuZCBOb25lLgorCistIElzc3VlICMyODA3MDogRml4ZWQgcGFyc2luZyBpbmxpbmUgdmVyYm9zZSBmbGFnIGluIHJlZ3VsYXIgZXhwcmVzc2lvbnMuCisKKy0gSXNzdWUgIzE5NTAwOiBBZGQgY2xpZW50LXNpZGUgU1NMIHNlc3Npb24gcmVzdW1wdGlvbiB0byB0aGUgc3NsIG1vZHVsZS4KKworLSBJc3N1ZSAjMjgwMjI6IERlcHJlY2F0ZSBzc2wtcmVsYXRlZCBhcmd1bWVudHMgaW4gZmF2b3Igb2YgU1NMQ29udGV4dC4gVGhlCisgIGRlcHJlY2F0aW9uIGluY2x1ZGUgbWFudWFsIGNyZWF0aW9uIG9mIFNTTFNvY2tldCBhbmQgY2VydGZpbGUva2V5ZmlsZQorICAob3Igc2ltaWxhcikgaW4gZnRwbGliLCBodHRwbGliLCBpbWFwbGliLCBzbXRwbGliLCBwb3BsaWIgYW5kIHVybGxpYi4KKworLSBJc3N1ZSAjMjgwNDM6IFNTTENvbnRleHQgaGFzIGltcHJvdmVkIGRlZmF1bHQgc2V0dGluZ3M6IE9QX05PX1NTTHYyLAorICBPUF9OT19TU0x2MywgT1BfTk9fQ09NUFJFU1NJT04sIE9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSwKKyAgT1BfU0lOR0xFX0RIX1VTRSwgT1BfU0lOR0xFX0VDREhfVVNFIGFuZCBISUdIIGNpcGhlcnMgd2l0aG91dCBNRDUuCisKKy0gSXNzdWUgIzI0NjkzOiBDaGFuZ2VkIHNvbWUgUnVudGltZUVycm9yJ3MgaW4gdGhlIHppcGZpbGUgbW9kdWxlIHRvIG1vcmUKKyAgYXBwcm9wcmlhdGUgdHlwZXMuIEltcHJvdmVkIHNvbWUgZXJyb3IgbWVzc2FnZXMgYW5kIGRlYnVnZ2luZyBvdXRwdXQuCisKKy0gSXNzdWUgIzE3OTA5OiBgYGpzb24ubG9hZGBgIGFuZCBgYGpzb24ubG9hZHNgYCBub3cgc3VwcG9ydCBiaW5hcnkgaW5wdXQKKyAgZW5jb2RlZCBhcyBVVEYtOCwgVVRGLTE2IG9yIFVURi0zMi4gUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMjcxMzc6IHRoZSBwdXJlIFB5dGhvbiBmYWxsYmFjayBpbXBsZW1lbnRhdGlvbiBvZiBgYGZ1bmN0b29scy5wYXJ0aWFsYGAKKyAgbm93IG1hdGNoZXMgdGhlIGJlaGF2aW91ciBvZiBpdHMgYWNjZWxlcmF0ZWQgQyBjb3VudGVycGFydCBmb3Igc3ViY2xhc3NpbmcsCisgIHBpY2tsaW5nIGFuZCB0ZXh0IHJlcHJlc2VudGF0aW9uIHB1cnBvc2VzLiBQYXRjaCBieSBFbWFudWVsIEJhcnJ5IGFuZAorICBTZXJoaXkgU3RvcmNoYWthLgorCistIEZpeCBwb3NzaWJsZSBpbnRlZ2VyIG92ZXJmbG93cyBhbmQgY3Jhc2hlcyBpbiB0aGUgbW1hcCBtb2R1bGUgd2l0aCB1bnVzdWFsCisgIHVzYWdlIHBhdHRlcm5zLgorCistIElzc3VlICMxNzAzMTc4OiBGaXggdGhlIGFiaWxpdHkgdG8gcGFzcyB0aGUgLS1saW5rLW9iamVjdHMgb3B0aW9uIHRvIHRoZQorICBkaXN0dXRpbHMgYnVpbGRfZXh0IGNvbW1hbmQuCiAKIC0gSXNzdWUgIzI4MDE5OiBpdGVydG9vbHMuY291bnQoKSBubyBsb25nZXIgcm91bmRzIG5vbi1pbnRlZ2VyIHN0ZXAgaW4gcmFuZ2UKICAgYmV0d2VlbiAxLjAgYW5kIDIuMCB0byAxLgogCistIElzc3VlICMxODQwMTogUGRiIG5vdyBzdXBwb3J0cyB0aGUgJ3JlYWRyYycga2V5d29yZCBhcmd1bWVudCB0byBjb250cm9sCisgIHdoZXRoZXIgLnBkYnJjIGZpbGVzIHNob3VsZCBiZSByZWFkLiAgUGF0Y2ggYnkgTWFydGluIE1hdHVzaWFrIGFuZAorICBTYW0gS2ltYnJlbC4KKwogLSBJc3N1ZSAjMjU5Njk6IFVwZGF0ZSB0aGUgbGliMnRvMyBncmFtbWFyIHRvIGhhbmRsZSB0aGUgdW5wYWNraW5nCiAgIGdlbmVyYWxpemF0aW9ucyBhZGRlZCBpbiAzLjUuCiAKIC0gSXNzdWUgIzE0OTc3OiBtYWlsY2FwIG5vdyByZXNwZWN0cyB0aGUgb3JkZXIgb2YgdGhlIGxpbmVzIGluIHRoZSBtYWlsY2FwCiAgIGZpbGVzICgiZmlyc3QgbWF0Y2giKSwgYXMgcmVxdWlyZWQgYnkgUkZDIDE1NDIuICBQYXRjaCBieSBNaWNoYWVsIExhemFyLgogCistIElzc3VlICMyODA4MjogQ29udmVydCByZSBmbGFnIGNvbnN0YW50cyB0byBJbnRGbGFnLgorCistIElzc3VlICMyODAyNTogQ29udmVydCBhbGwgc3NsIG1vZHVsZSBjb25zdGFudHMgdG8gSW50RW51bSBhbmQgSW50RmxhZ3MuCisgIFNTTENvbnRleHQgcHJvcGVydGllcyBub3cgcmV0dXJuIGZsYWdzIGFuZCBlbnVtcy4KKworLSBJc3N1ZSAjMjM1OTE6IEFkZCBGbGFnLCBJbnRGbGFnLCBhbmQgYXV0bygpIHRvIGVudW0gbW9kdWxlLgorCistIElzc3VlICM0MzMwMjg6IEFkZGVkIHN1cHBvcnQgb2YgbW9kaWZpZXIgc3BhbnMgaW4gcmVndWxhciBleHByZXNzaW9ucy4KKwogLSBJc3N1ZSAjMjQ1OTQ6IFZhbGlkYXRlcyBwZXJzaXN0IHBhcmFtZXRlciB3aGVuIG9wZW5pbmcgTVNJIGRhdGFiYXNlCiAKIC0gSXNzdWUgIzE3NTgyOiB4bWwuZXRyZWUuRWxlbWVudFRyZWUgbm93cyBwcmVzZXJ2ZXMgd2hpdGVzcGFjZXMgaW4gYXR0cmlidXRlcwpAQCAtMjc5LDkgKzkzMCwxOSBAQAogLSBJc3N1ZSAjMjgwNDc6IEZpeGVkIGNhbGN1bGF0aW9uIG9mIGxpbmUgbGVuZ3RoIHVzZWQgZm9yIHRoZSBiYXNlNjQgQ1RFCiAgIGluIHRoZSBuZXcgZW1haWwgcG9saWNpZXMuCiAKKy0gSXNzdWUgIzI3NTc2OiBGaXggY2FsbCBvcmRlciBpbiBPcmRlcmVkRGljdC5fX2luaXRfXygpLgorCistIGVtYWlsLmdlbmVyYXRvci5EZWNvZGVkR2VuZXJhdG9yIG5vdyBzdXBwb3J0cyB0aGUgcG9saWN5IGtleXdvcmQuCisKKy0gSXNzdWUgIzI4MDI3OiBSZW1vdmUgdW5kb2N1bWVudGVkIG1vZHVsZXMgZnJvbSBgYExpYi9wbGF0LSpgYDogSU4sIENEUk9NLAorICBETEZDTiwgVFlQRVMsIENESU8sIGFuZCBTVFJPUFRTLgorCiAtIElzc3VlICMyNzQ0NTogRG9uJ3QgcGFzcyBzdHIoX2NoYXJzZXQpIHRvIE1JTUVUZXh0LnNldF9wYXlsb2FkKCkuCiAgIFBhdGNoIGJ5IENsYXVkZSBQYXJvei4KIAorLSBJc3N1ZSAjMjQyNzc6IFRoZSBuZXcgZW1haWwgQVBJIGlzIG5vIGxvbmdlciBwcm92aXNpb25hbCwgYW5kIHRoZSBkb2NzCisgIGhhdmUgYmVlbiByZW9yZ2FuaXplZCBhbmQgcmV3cml0dGVuIHRvIGVtcGhhc2l6ZSB0aGUgbmV3IEFQSS4KKwogLSBJc3N1ZSAjMjI0NTA6IHVybGxpYiBub3cgaW5jbHVkZXMgYW4gIkFjY2VwdDogKi8qIiBoZWFkZXIgYW1vbmcgdGhlCiAgIGRlZmF1bHQgaGVhZGVycy4gIFRoaXMgbWFrZXMgdGhlIHJlc3VsdHMgb2YgUkVTVCBBUEkgcmVxdWVzdHMgbW9yZQogICBjb25zaXN0ZW50IGFuZCBwcmVkaWN0YWJsZSBlc3BlY2lhbGx5IHdoZW4gcHJveHkgc2VydmVycyBhcmUgaW52b2x2ZWQuCkBAIC0yOTAsNiArOTUxLDEwIEBACiAgIGJldHdlZW4gcnVucyBnaXZlbiB0aGUgc2FtZSBHcmFtbWFyLnR4dCBpbnB1dCByZWdhcmRsZXNzIG9mIHRoZSBoYXNoCiAgIHJhbmRvbWl6YXRpb24gc2V0dGluZy4KIAorLSBJc3N1ZSAjMjgwMDU6IEFsbG93IEltcG9ydEVycm9ycyBpbiBlbmNvZGluZyBpbXBsZW1lbnRhdGlvbiB0byBwcm9wYWdhdGUuCisKKy0gSXNzdWUgIzI2NjY3OiBTdXBwb3J0IHBhdGgtbGlrZSBvYmplY3RzIGluIGltcG9ydGxpYi51dGlsLgorCiAtIElzc3VlICMyNzU3MDogQXZvaWQgemVyby1sZW5ndGggbWVtY3B5KCkgZXRjIGNhbGxzIHdpdGggbnVsbCBzb3VyY2UKICAgcG9pbnRlcnMgaW4gdGhlICJjdHlwZXMiIGFuZCAiYXJyYXkiIG1vZHVsZXMuCiAKQEAgLTI5NywxOSArOTYyLDcyIEBACiAgIGNoYXJhY3RlcnMsIG5vdCBvbiBhcmJpdHJhcnkgdW5pY29kZSBsaW5lIGJyZWFrcy4gIFRoaXMgYWxzbyBmaXhlcyBhIGJ1ZyBpbgogICBIVFRQIGhlYWRlciBwYXJzaW5nLgogCistIElzc3VlIDI3MzMxOiBUaGUgZW1haWwubWltZSBjbGFzc2VzIG5vdyBhbGwgYWNjZXB0IGFuIG9wdGlvbmFsIHBvbGljeSBrZXl3b3JkLgorCiAtIElzc3VlIDI3OTg4OiBGaXggZW1haWwgaXRlcl9hdHRhY2htZW50cyBpbmNvcnJlY3QgbXV0YXRpb24gb2YgcGF5bG9hZCBsaXN0LgogCistIElzc3VlICMxNjExMzogQWRkIFNIQS0zIGFuZCBTSEFLRSBzdXBwb3J0IHRvIGhhc2hsaWIgbW9kdWxlLgorCistIEVsaW1pbmF0ZSBhIHRhdXRvbG9naWNhbC1wb2ludGVyLWNvbXBhcmUgd2FybmluZyBpbiBfc2Nwcm94eS5jLgorCistIElzc3VlICMyNzc3NjogVGhlIDpmdW5jOmBvcy51cmFuZG9tYCBmdW5jdGlvbiBkb2VzIG5vdyBibG9jayBvbiBMaW51eCAzLjE3CisgIGFuZCBuZXdlciB1bnRpbCB0aGUgc3lzdGVtIHVyYW5kb20gZW50cm9weSBwb29sIGlzIGluaXRpYWxpemVkIHRvIGluY3JlYXNlCisgIHRoZSBzZWN1cml0eS4gVGhpcyBjaGFuZ2UgaXMgcGFydCBvZiB0aGUgOnBlcDpgNTI0YC4KKworLSBJc3N1ZSAjMjc3Nzg6IEV4cG9zZSB0aGUgTGludXggYGBnZXRyYW5kb20oKWBgIHN5c2NhbGwgYXMgYSBuZXcKKyAgOmZ1bmM6YG9zLmdldHJhbmRvbWAgZnVuY3Rpb24uIFRoaXMgY2hhbmdlIGlzIHBhcnQgb2YgdGhlIDpwZXA6YDUyNGAuCisKIC0gSXNzdWUgIzI3NjkxOiBGaXggc3NsIG1vZHVsZSdzIHBhcnNpbmcgb2YgR0VOX1JJRCBzdWJqZWN0IGFsdGVybmF0aXZlIG5hbWUKICAgZmllbGRzIGluIFguNTA5IGNlcnRzLgogCistIElzc3VlICMxODg0NDogQWRkIHJhbmRvbS5jaG9pY2VzKCkuCisKKy0gSXNzdWUgIzI1NzYxOiBJbXByb3ZlZCBlcnJvciByZXBvcnRpbmcgYWJvdXQgdHJ1bmNhdGVkIHBpY2tsZSBkYXRhIGluCisgIEMgaW1wbGVtZW50YXRpb24gb2YgdW5waWNrbGVyLiAgVW5waWNrbGluZ0Vycm9yIGlzIG5vdyByYWlzZWQgaW5zdGVhZCBvZgorICBBdHRyaWJ1dGVFcnJvciBhbmQgVmFsdWVFcnJvciBpbiBzb21lIGNhc2VzLgorCistIElzc3VlICMyNjc5ODogQWRkIEJMQUtFMiAoYmxha2UyYiBhbmQgYmxha2UycykgdG8gaGFzaGxpYi4KKworLSBJc3N1ZSAjMjYwMzI6IE9wdGltaXplZCBnbG9iYmluZyBpbiBwYXRobGliIGJ5IHVzaW5nIG9zLnNjYW5kaXIoKTsgaXQgaXMgbm93CisgIGFib3V0IDEuNS0tNCB0aW1lcyBmYXN0ZXIuCisKKy0gSXNzdWUgIzI1NTk2OiBPcHRpbWl6ZWQgZ2xvYigpIGFuZCBpZ2xvYigpIGZ1bmN0aW9ucyBpbiB0aGUKKyAgZ2xvYiBtb2R1bGU7IHRoZXkgYXJlIG5vdyBhYm91dCAzLS02IHRpbWVzIGZhc3Rlci4KKworLSBJc3N1ZSAjMjc5Mjg6IEFkZCBzY3J5cHQgKHBhc3N3b3JkLWJhc2VkIGtleSBkZXJpdmF0aW9uIGZ1bmN0aW9uKSB0bworICBoYXNobGliIG1vZHVsZSAocmVxdWlyZXMgT3BlblNTTCAxLjEuMCkuCisKIC0gSXNzdWUgIzI3ODUwOiBSZW1vdmUgM0RFUyBmcm9tIHNzbCBtb2R1bGUncyBkZWZhdWx0IGNpcGhlciBsaXN0IHRvIGNvdW50ZXIKICAgbWVhc3VyZSBzd2VldDMyIGF0dGFjayAoQ1ZFLTIwMTYtMjE4MykuCiAKIC0gSXNzdWUgIzI3NzY2OiBBZGQgQ2hhQ2hhMjAgUG9seTEzMDUgdG8gc3NsIG1vZHVsZSdzIGRlZmF1bHQgY2lwZXIgbGlzdC4KICAgKFJlcXVpcmVkIE9wZW5TU0wgMS4xLjAgb3IgTGlicmVTU0wpLgogCistIElzc3VlICMyNTM4NzogQ2hlY2sgcmV0dXJuIHZhbHVlIG9mIHdpbnNvdW5kLk1lc3NhZ2VCZWVwLgorCistIElzc3VlICMyNzg2NjogQWRkIFNTTENvbnRleHQuZ2V0X2NpcGhlcnMoKSBtZXRob2QgdG8gZ2V0IGEgbGlzdCBvZiBhbGwKKyAgZW5hYmxlZCBjaXBoZXJzLgorCistIElzc3VlICMyNzc0NDogQWRkIEFGX0FMRyAoTGludXggS2VybmVsIGNyeXB0bykgdG8gc29ja2V0IG1vZHVsZS4KKwogLSBJc3N1ZSAjMjY0NzA6IFBvcnQgc3NsIGFuZCBoYXNobGliIG1vZHVsZSB0byBPcGVuU1NMIDEuMS4wLgogCistIElzc3VlICMxMTYyMDogRml4IHN1cHBvcnQgZm9yIFNORF9NRU1PUlkgaW4gd2luc291bmQuUGxheVNvdW5kLiAgQmFzZWQgb24gYQorICBwYXRjaCBieSBUaW0gTGVzaGVyLgorCistIElzc3VlICMxMTczNDogQWRkIHN1cHBvcnQgZm9yIElFRUUgNzU0IGhhbGYtcHJlY2lzaW9uIGZsb2F0cyB0byB0aGUKKyAgc3RydWN0IG1vZHVsZS4gQmFzZWQgb24gYSBwYXRjaCBieSBFbGkgU3RldmVucy4KKworLSBJc3N1ZSAjMjc5MTk6IERlcHJlY2F0ZWQgYGBleHRyYV9wYXRoYGAgZGlzdHJpYnV0aW9uIG9wdGlvbiBpbiBkaXN0dXRpbHMKKyAgcGFja2FnaW5nLgorCistIElzc3VlICMyMzIyOTogQWRkIG5ldyBgYGNtYXRoYGAgY29uc3RhbnRzOiBgYGNtYXRoLmluZmBgIGFuZCBgYGNtYXRoLm5hbmBgIHRvCisgIG1hdGNoIGBgbWF0aC5pbmZgYCBhbmQgYGBtYXRoLm5hbmBgLCBhbmQgYWxzbyBgYGNtYXRoLmluZmpgYCBhbmQKKyAgYGBjbWF0aC5uYW5qYGAgdG8gbWF0Y2ggdGhlIGZvcm1hdCB1c2VkIGJ5IGNvbXBsZXggcmVwci4KKworLSBJc3N1ZSAjMjc4NDI6IFRoZSBjc3YuRGljdFJlYWRlciBub3cgcmV0dXJucyByb3dzIG9mIHR5cGUgT3JkZXJlZERpY3QuCisgIChDb250cmlidXRlZCBieSBTdGV2ZSBIb2xkZW4uKQorCiAtIFJlbW92ZSBzdXBwb3J0IGZvciBwYXNzaW5nIGEgZmlsZSBkZXNjcmlwdG9yIHRvIG9zLmFjY2Vzcy4gSXQgbmV2ZXIgd29ya2VkIGJ1dAogICBwcmV2aW91c2x5IGRpZG4ndCByYWlzZS4KIApAQCAtMzMxLDI1ICsxMDQ5LDI3NiBAQAogLSBJc3N1ZSAjMTA1MTM6IEZpeCBhIHJlZ3Jlc3Npb24gaW4gQ29ubmVjdGlvbi5jb21taXQoKS4gIFN0YXRlbWVudHMgc2hvdWxkCiAgIG5vdCBiZSByZXNldCBhZnRlciBhIGNvbW1pdC4KIAorLSBJc3N1ZSAjMTIzMTk6IENodW5rZWQgdHJhbnNmZXIgZW5jb2Rpbmcgc3VwcG9ydCBhZGRlZCB0bworICBodHRwLmNsaWVudC5IVFRQQ29ubmVjdGlvbiByZXF1ZXN0cy4gIFRoZQorICB1cmxsaWIucmVxdWVzdC5BYnN0cmFjdEhUVFBIYW5kbGVyIGNsYXNzIGRvZXMgbm90IGVuZm9yY2UgYSBDb250ZW50LUxlbmd0aAorICBoZWFkZXIgYW55IG1vcmUuICBJZiBhIEhUVFAgcmVxdWVzdCBoYXMgYSBmaWxlIG9yIGl0ZXJhYmxlIGJvZHksIGJ1dCBubworICBDb250ZW50LUxlbmd0aCBoZWFkZXIsIHRoZSBsaWJyYXJ5IG5vdyBmYWxscyBiYWNrIHRvIHVzZSBjaHVua2VkIHRyYW5zZmVyLQorICBlbmNvZGluZy4KKwogLSBBIG5ldyB2ZXJzaW9uIG9mIHR5cGluZy5weSBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vdHlwaW5nOgogICAtIENvbGxlY3Rpb24gKG9ubHkgZm9yIDMuNikgKElzc3VlICMyNzU5OCkKICAgLSBBZGQgRnJvemVuU2V0IHRvIF9fYWxsX18gKHVwc3RyZWFtICMyNjEpCiAgIC0gZml4IGNyYXNoIGluIF9nZXRfdHlwZV92YXJzKCkgKHVwc3RyZWFtICMyNTkpCiAgIC0gUmVtb3ZlIHRoZSBkaWN0IGNvbnN0cmFpbnQgaW4gRm9yd2FyZFJlZi5fZXZhbF90eXBlICh1cHN0cmVhbSAjMjUyKQogCistIElzc3VlICMyNzgzMjogTWFrZSBgYF9ub3JtYWxpemVgYCBwYXJhbWV0ZXIgdG8gYGBGcmFjdGlvbmBgIGNvbnN0dWN0b3IKKyAga2V5d29yZC1vbmx5LCBzbyB0aGF0IGBgRnJhY3Rpb24oMiwgMywgNClgYCBub3cgcmFpc2VzIGBgVHlwZUVycm9yYGAuCisKIC0gSXNzdWUgIzI3NTM5OiBGaXggdW5ub3JtYWxpc2VkIGBgRnJhY3Rpb24uX19wb3dfX2BgIHJlc3VsdCBpbiB0aGUgY2FzZQogICBvZiBuZWdhdGl2ZSBleHBvbmVudCBhbmQgbmVnYXRpdmUgYmFzZS4KIAogLSBJc3N1ZSAjMjE3MTg6IGN1cnNvci5kZXNjcmlwdGlvbiBpcyBub3cgYXZhaWxhYmxlIGZvciBxdWVyaWVzIHVzaW5nIENURXMuCiAKKy0gSXNzdWUgIzI3ODE5OiBJbiBkaXN0dXRpbHMgc2Rpc3RzLCBzaW1wbHkgcHJvZHVjZSB0aGUgImd6dGFyIiAoZ3ppcHBlZCB0YXIKKyAgZm9ybWF0KSBkaXN0cmlidXRpb25zIG9uIGFsbCBwbGF0Zm9ybXMgdW5sZXNzICJmb3JtYXRzIiBpcyBzdXBwbGllZC4KKwogLSBJc3N1ZSAjMjQ2NjogcG9zaXhwYXRoLmlzbW91bnQgbm93IGNvcnJlY3RseSByZWNvZ25pemVzIG1vdW50IHBvaW50cyB3aGljaAogICB0aGUgdXNlciBkb2VzIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzLgogCistIElzc3VlICM5OTk4OiBPbiBMaW51eCwgY3R5cGVzLnV0aWwuZmluZF9saWJyYXJ5IG5vdyBsb29rcyBpbiBMRF9MSUJSQVJZX1BBVEgKKyAgZm9yIHNoYXJlZCBsaWJyYXJpZXMuCisKKy0gSXNzdWUgIzI3NTczOiBleGl0IG1lc3NhZ2UgZm9yIGNvZGUuaW50ZXJhY3QgaXMgbm93IGNvbmZpZ3VyYWJsZS4KKworLSBJc3N1ZSAjMjc5MzA6IEltcHJvdmVkIGJlaGF2aW91ciBvZiBsb2dnaW5nLmhhbmRsZXJzLlF1ZXVlTGlzdGVuZXIuCisgIFRoYW5rcyB0byBQYXVsbyBBbmRyYWRlIGFuZCBQZXRyIFZpa3RvcmluIGZvciB0aGUgYW5hbHlzaXMgYW5kIHBhdGNoLgorCistIElzc3VlICM2NzY2OiBEaXN0cmlidXRlZCByZWZlcmVuY2UgY291bnRpbmcgYWRkZWQgdG8gbXVsdGlwcm9jZXNzaW5nCisgIHRvIHN1cHBvcnQgbmVzdGluZyBvZiBzaGFyZWQgdmFsdWVzIC8gcHJveHkgb2JqZWN0cy4KKworLSBJc3N1ZSAjMjEyMDE6IEltcHJvdmVzIHJlYWRhYmlsaXR5IG9mIG11bHRpcHJvY2Vzc2luZyBlcnJvciBtZXNzYWdlLiAgVGhhbmtzCisgIHRvIFdvamNpZWNoIFdhbGN6YWsgZm9yIHBhdGNoLgorCistIGFzeW5jaW86IEFkZCBzZXRfcHJvdG9jb2wgLyBnZXRfcHJvdG9jb2wgdG8gVHJhbnNwb3J0cy4KKworLSBJc3N1ZSAjMjc0NTY6IGFzeW5jaW86IFNldCBUQ1BfTk9ERUxBWSBieSBkZWZhdWx0LgorCitJRExFCistLS0tCisKKy0gSXNzdWUgIzE1MzA4OiBBZGQgJ2ludGVycnVwdCBleGVjdXRpb24nICheQykgdG8gU2hlbGwgbWVudS4KKyAgUGF0Y2ggYnkgUm9nZXIgU2Vyd3ksIHVwZGF0ZWQgYnkgQmF5YXJkIFJhbmRlbC4KKworLSBJc3N1ZSAjMjc5MjI6IFN0b3AgSURMRSB0ZXN0cyBmcm9tICdmbGFzaGluZycgZ3VpIHdpZGdldHMgb24gdGhlIHNjcmVlbi4KKworLSBJc3N1ZSAjMjc4OTE6IENvbnNpc3RlbnRseSBncm91cCBhbmQgc29ydCBpbXBvcnRzIHdpdGhpbiBpZGxlbGliIG1vZHVsZXMuCisKKy0gSXNzdWUgIzE3NjQyOiBhZGQgbGFyZ2VyIGZvbnQgc2l6ZXMgZm9yIGNsYXNzcm9vbSBwcm9qZWN0aW9uLgorCistIEFkZCB2ZXJzaW9uIHRvIHRpdGxlIG9mIElETEUgaGVscCB3aW5kb3cuCisKKy0gSXNzdWUgIzI1NTY0OiBJbiBzZWN0aW9uIG9uIElETEUgLS0gY29uc29sZSBkaWZmZXJlbmNlcywgbWVudGlvbiB0aGF0CisgIHVzaW5nIGV4ZWMgbWVhbnMgdGhhdCBfX2J1aWx0aW5zX18gaXMgZGVmaW5lZCBmb3IgZWFjaCBzdGF0ZW1lbnQuCisKKy0gSXNzdWUgIzI3ODIxOiBGaXggMy42LjBhMyByZWdyZXNzaW9uIHRoYXQgcHJldmVudGVkIGN1c3RvbSBrZXkgc2V0cworICBmcm9tIGJlaW5nIHNlbGVjdGVkIHdoZW4gbm8gY3VzdG9tIHRoZW1lIHdhcyBkZWZpbmVkLgorCitDIEFQSQorLS0tLS0KKworLSBJc3N1ZSAjMjY5MDA6IEV4Y2x1ZGVkIHVuZGVyc2NvcmVkIG5hbWVzIGFuZCBvdGhlciBwcml2YXRlIEFQSSBmcm9tIGxpbWl0ZWQgQVBJLgorCistIElzc3VlICMyNjAyNzogQWRkIHN1cHBvcnQgZm9yIHBhdGgtbGlrZSBvYmplY3RzIGluIFB5VW5pY29kZV9GU0NvbnZlcnRlcigpICYKKyAgUHlVbmljb2RlX0ZTRGVjb2RlcigpLgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjMjc0Mjc6IEFkZGl0aW9uYWwgdGVzdHMgZm9yIHRoZSBtYXRoIG1vZHVsZS4gUGF0Y2ggYnkgRnJhbmNpc2NvIENvdXpvLgorCistIElzc3VlICMyNzk1MzogU2tpcCBtYXRoIGFuZCBjbWF0aCB0ZXN0cyB0aGF0IGZhaWwgb24gT1MgWCAxMC40IGR1ZSB0byBhCisgIHBvb3IgbGlibSBpbXBsZW1lbnRhdGlvbiBvZiB0YW4uCisKKy0gSXNzdWUgIzI2MDQwOiBJbXByb3ZlIHRlc3RfbWF0aCBhbmQgdGVzdF9jbWF0aCBjb3ZlcmFnZSBhbmQgcmlnb3VyLiBQYXRjaCBieQorICBKZWZmIEFsbGVuLgorCistIElzc3VlICMyNzc4NzogQ2FsbCBnYy5jb2xsZWN0KCkgYmVmb3JlIGNoZWNraW5nIGVhY2ggdGVzdCBmb3IgImRhbmdsaW5nCisgIHRocmVhZHMiLCBzaW5jZSB0aGUgZGFuZ2xpbmcgdGhyZWFkcyBhcmUgd2VhayByZWZlcmVuY2VzLgorCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjMjc1NjY6IEZpeCBjbGVhbiB0YXJnZXQgaW4gZnJlZXplIG1ha2VmaWxlIChwYXRjaCBieSBMaXNhIFJvYWNoKQorCistIElzc3VlICMyNzcwNTogVXBkYXRlIG1lc3NhZ2UgaW4gdmFsaWRhdGVfdWNydGJhc2UucHkKKworLSBJc3N1ZSAjMjc5NzY6IERlcHJlY2F0ZSBidWlsZGluZyBfY3R5cGVzIHdpdGggdGhlIGJ1bmRsZWQgY29weSBvZiBsaWJmZmkgb24KKyAgbm9uLU9TWCBVTklYIHBsYXRmb3Jtcy4KKworLSBJc3N1ZSAjMjc5ODM6IENhdXNlIGxhY2sgb2YgbGx2bS1wcm9mZGF0YSB0b29sIHdoZW4gdXNpbmcgY2xhbmcgYXMKKyAgcmVxdWlyZWQgZm9yIFBHTyBsaW5raW5nIHRvIGJlIGEgY29uZmlndXJlIHRpbWUgZXJyb3IgcmF0aGVyIHRoYW4KKyAgbWFrZSB0aW1lIHdoZW4gLS13aXRoLW9wdGltaXphdGlvbnMgaXMgZW5hYmxlZC4gIEFsc28gaW1wcm92ZSBvdXIKKyAgYWJpbGl0eSB0byBmaW5kIHRoZSBsbHZtLXByb2ZkYXRhIHRvb2wgb24gTWFjT1MgYW5kIHNvbWUgTGludXhlcy4KKworLSBJc3N1ZSAjMjE1OTA6IFN1cHBvcnQgZm9yIERUcmFjZSBhbmQgU3lzdGVtVGFwIHByb2Jlcy4KKworLSBJc3N1ZSAjMjYzMDc6IFRoZSBwcm9maWxlLW9wdCBidWlsZCBub3cgYXBwbGllcyBQR08gdG8gdGhlIGJ1aWx0LWluIG1vZHVsZXMuCisKKy0gSXNzdWUgIzI2NTM5OiBBZGQgdGhlIC0td2l0aC1vcHRpbWl6YXRpb25zIGZsYWcgdG8gdHVybiBvbiBMVE8gYW5kIFBHTyBidWlsZAorICBzdXBwb3J0IHdoZW4gYXZhaWxhYmxlLgorCistIElzc3VlICMyNzkxNzogU2V0IHBsYXRmb3JtIHRyaXBsZXRzIGZvciBBbmRyb2lkIGJ1aWxkcy4KKworLSBJc3N1ZSAjMjU4MjU6IFVwZGF0ZSByZWZlcmVuY2VzIHRvIHRoZSAkKExJQlBMKSBpbnN0YWxsYXRpb24gcGF0aCBvbiBBSVguCisgIFRoaXMgcGF0aCB3YXMgY2hhbmdlZCBpbiAzLjJhNC4KKworLSBVcGRhdGUgT1MgWCBpbnN0YWxsZXIgdG8gdXNlIFNRTGl0ZSAzLjE0LjEgYW5kIFhaIDUuMi4yLgorCistIElzc3VlICMyMTEyMjogRml4IExUTyBidWlsZHMgb24gT1MgWC4KKworLSBJc3N1ZSAjMTcxMjg6IEJ1aWxkIE9TIFggaW5zdGFsbGVyIHdpdGggYSBwcml2YXRlIGNvcHkgb2YgT3BlblNTTC4KKyAgQWxzbyBwcm92aWRlIGEgc2FtcGxlIEluc3RhbGwgQ2VydGlmaWNhdGVzIGNvbW1hbmQgc2NyaXB0IHRvIGluc3RhbGwgYQorICBzZXQgb2Ygcm9vdCBjZXJ0aWZpY2F0ZXMgZnJvbSB0aGUgdGhpcmQtcGFydHkgY2VydGlmaSBtb2R1bGUuCisKK1Rvb2xzL0RlbW9zCistLS0tLS0tLS0tLQorCistIElzc3VlICMyNzk1MjogR2V0IFRvb2xzL3NjcmlwdHMvZml4Y2lkLnB5IHdvcmtpbmcgd2l0aCBQeXRob24gMyBhbmQgdGhlCisgIGN1cnJlbnQgInJlIiBtb2R1bGUsIGF2b2lkIGludmFsaWQgUHl0aG9uIGJhY2tzbGFzaCBlc2NhcGVzLCBhbmQgZml4IGEgYnVnCisgIHBhcnNpbmcgZXNjYXBlZCBDIHF1b3RlIHNpZ25zLgorCitXaW5kb3dzCistLS0tLS0tCisKKy0gSXNzdWUgIzI4MDY1OiBVcGRhdGUgeHogZGVwZW5kZW5jeSB0byA1LjIuMiBhbmQgYnVpbGQgaXQgZnJvbSBzb3VyY2UuCisKKy0gSXNzdWUgIzI1MTQ0OiBFbnN1cmVzIFRhcmdldERpciBpcyBzZXQgYmVmb3JlIGNvbnRpbnVpbmcgd2l0aCBjdXN0b20KKyAgaW5zdGFsbC4KKworLSBJc3N1ZSAjMTYwMjogV2luZG93cyBjb25zb2xlIGRvZXNuJ3QgaW5wdXQgb3IgcHJpbnQgVW5pY29kZSAoUEVQIDUyOCkKKworLSBJc3N1ZSAjMjc3ODE6IENoYW5nZSBmaWxlIHN5c3RlbSBlbmNvZGluZyBvbiBXaW5kb3dzIHRvIFVURi04IChQRVAgNTI5KQorCistIElzc3VlICMyNzczMTogT3B0LW91dCBvZiBNQVhfUEFUSCBvbiBXaW5kb3dzIDEwCisKKy0gSXNzdWUgIzYxMzU6IEFkZHMgZW5jb2RpbmcgYW5kIGVycm9ycyBwYXJhbWV0ZXJzIHRvIHN1YnByb2Nlc3MuCisKKy0gSXNzdWUgIzI3OTU5OiBBZGRzIG9lbSBlbmNvZGluZywgYWxpYXMgYW5zaSB0byBtYmNzLCBtb3ZlIGFsaWFzbWJjcyB0bworICBjb2RlYyBsb29rdXAuCisKKy0gSXNzdWUgIzI3OTgyOiBUaGUgZnVuY3Rpb25zIG9mIHRoZSB3aW5zb3VuZCBtb2R1bGUgbm93IGFjY2VwdCBrZXl3b3JkCisgIGFyZ3VtZW50cy4KKworLSBJc3N1ZSAjMjAzNjY6IEJ1aWxkIGZ1bGwgdGV4dCBzZWFyY2ggc3VwcG9ydCBpbnRvIFNRTGl0ZSBvbiBXaW5kb3dzLgorCistIElzc3VlICMyNzc1NjogQWRkcyBuZXcgaWNvbnMgZm9yIFB5dGhvbiBmaWxlcyBhbmQgcHJvY2Vzc2VzIG9uIFdpbmRvd3MuCisgIERlc2lnbnMgYnkgQ2hlcnJ5IFdhbmcuCisKKy0gSXNzdWUgIzI3ODgzOiBVcGRhdGUgc3FsaXRlIHRvIDMuMTQuMS4wIG9uIFdpbmRvd3MuCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy42LjAgYWxwaGEgNAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisqUmVsZWFzZSBkYXRlOiAyMDE2LTA4LTE1KgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMjc3MDQ6IE9wdGltaXplZCBjcmVhdGluZyBieXRlcyBhbmQgYnl0ZWFycmF5IGZyb20gYnl0ZS1saWtlIG9iamVjdHMKKyAgYW5kIGl0ZXJhYmxlcy4gIFNwZWVkIHVwIHRvIDMgdGltZXMgZm9yIHNob3J0IG9iamVjdHMuICBPcmlnaW5hbCBwYXRjaCBieQorICBOYW9raSBJbmFkYS4KKworLSBJc3N1ZSAjMjY4MjM6IExhcmdlIHNlY3Rpb25zIG9mIHJlcGVhdGVkIGxpbmVzIGluIHRyYWNlYmFja3MgYXJlIG5vdworICBhYmJyZXZpYXRlZCBhcyAiW1ByZXZpb3VzIGxpbmUgcmVwZWF0ZWQge2NvdW50fSBtb3JlIHRpbWVzXSIgYnkgdGhlIGJ1aWx0aW4KKyAgdHJhY2ViYWNrIHJlbmRlcmluZy4gUGF0Y2ggYnkgRW1hbnVlbCBCYXJyeS4KKworLSBJc3N1ZSAjMjc1NzQ6IERlY3JlYXNlZCBhbiBvdmVyaGVhZCBvZiBwYXJzaW5nIGtleXdvcmQgYXJndW1lbnRzIGluIGZ1bmN0aW9ucworICBpbXBsZW1lbnRlZCB3aXRoIHVzaW5nIEFyZ3VtZW50IENsaW5pYy4KKworLSBJc3N1ZSAjMjI1NTc6IE5vdyBpbXBvcnRpbmcgYWxyZWFkeSBpbXBvcnRlZCBtb2R1bGVzIGlzIHVwIHRvIDIuNSB0aW1lcworICBmYXN0ZXIuCisKKy0gSXNzdWUgIzE3NTk2OiBJbmNsdWRlIDx3aW5jcnlwdC5oPiB0byBoZWxwIHdpdGggTWluIEdXIGJ1aWxkaW5nLgorCistIElzc3VlICMxNzU5OTogT24gV2luZG93cywgcmVuYW1lIHRoZSBwcml2YXRlbHkgZGVmaW5lZCBSRVBBUlNFX0RBVEFfQlVGRkVSCisgIHN0cnVjdHVyZSB0byBhdm9pZCBjb25mbGljdGluZyB3aXRoIHRoZSBkZWZpbml0aW9uIGZyb20gTWluIEdXLgorCistIElzc3VlICMyNzUwNzogQWRkIGludGVnZXIgb3ZlcmZsb3cgY2hlY2sgaW4gYnl0ZWFycmF5LmV4dGVuZCgpLiAgUGF0Y2ggYnkKKyAgWGlhbmcgWmhhbmcuCisKKy0gSXNzdWUgIzI3NTgxOiBEb24ndCByZWx5IG9uIHdyYXBwaW5nIGZvciBvdmVyZmxvdyBjaGVjayBpbgorICBQeVNlcXVlbmNlX1R1cGxlKCkuICBQYXRjaCBieSBYaWFuZyBaaGFuZy4KKworLSBJc3N1ZSAjMTYyMTogQXZvaWQgc2lnbmVkIGludGVnZXIgb3ZlcmZsb3cgaW4gbGlzdCBhbmQgdHVwbGUgb3BlcmF0aW9ucy4KKyAgUGF0Y2ggYnkgWGlhbmcgWmhhbmcuCisKKy0gSXNzdWUgIzI3NDE5OiBTdGFuZGFyZCBfX2ltcG9ydF9fKCkgbm8gbG9uZ2VyIGxvb2sgdXAgIl9faW1wb3J0X18iIGluIGdsb2JhbHMKKyAgb3IgYnVpbHRpbnMgZm9yIGltcG9ydGluZyBzdWJtb2R1bGVzIG9yICJmcm9tIGltcG9ydCIuICBGaXhlZCBhIGNyYXNoIGlmCisgIHJhaXNlIGEgd2FybmluZyBhYm91dCB1bmFibGluZyB0byByZXNvbHZlIHBhY2thZ2UgZnJvbSBfX3NwZWNfXyBvcgorICBfX3BhY2thZ2VfXy4KKworLSBJc3N1ZSAjMjcwODM6IFJlc3BlY3QgdGhlIFBZVEhPTkNBU0VPSyBlbnZpcm9ubWVudCB2YXJpYWJsZSB1bmRlciBXaW5kb3dzLgorCistIElzc3VlICMyNzUxNDogTWFrZSBoYXZpbmcgdG9vIG1hbnkgc3RhdGljYWxseSBuZXN0ZWQgYmxvY2tzIGEgU3ludGF4RXJyb3IKKyAgaW5zdGVhZCBvZiBTeXN0ZW1FcnJvci4KKworLSBJc3N1ZSAjMjczNjY6IEltcGxlbWVudGVkIFBFUCA0ODcgKFNpbXBsZXIgY3VzdG9taXphdGlvbiBvZiBjbGFzcyBjcmVhdGlvbikuCisgIFVwb24gc3ViY2xhc3NpbmcsIHRoZSBfX2luaXRfc3ViY2xhc3NfXyBjbGFzc21ldGhvZCBpcyBjYWxsZWQgb24gdGhlIGJhc2UKKyAgY2xhc3MuIERlc2NyaXB0b3JzIGFyZSBpbml0aWFsaXplZCB3aXRoIF9fc2V0X25hbWVfXyBhZnRlciBjbGFzcyBjcmVhdGlvbi4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICMyNjAyNywgIzI3NTI0OiBBZGQgUEVQIDUxOS9fX2ZzcGF0aF9fKCkgc3VwcG9ydCB0byB0aGUgb3MgYW5kIG9zLnBhdGgKKyAgbW9kdWxlcy4gSW5jbHVkZXMgY29kZSBmcm9tIEplbGxlIFppamxzdHJhLgorCistIElzc3VlICMyNzU5ODogQWRkIENvbGxlY3Rpb25zIHRvIGNvbGxlY3Rpb25zLmFiYy4KKyAgUGF0Y2ggYnkgSXZhbiBMZXZraXZza3lpLCBkb2NzIGJ5IE5laWwgR2lyZGhhci4KKworLSBJc3N1ZSAjMjU5NTg6IFN1cHBvcnQgImFudGktcmVnaXN0cmF0aW9uIiBvZiBzcGVjaWFsIG1ldGhvZHMgZnJvbQorICB2YXJpb3VzIEFCQ3MsIGxpa2UgX19oYXNoX18sIF9faXRlcl9fIG9yIF9fbGVuX18uICBBbGwgdGhlc2UgKGFuZAorICBzZXZlcmFsIG1vcmUpIGNhbiBiZSBzZXQgdG8gTm9uZSBpbiBhbiBpbXBsZW1lbnRhdGlvbiBjbGFzcyBhbmQgdGhlCisgIGJlaGF2aW9yIHdpbGwgYmUgYXMgaWYgdGhlIG1ldGhvZCBpcyBub3QgZGVmaW5lZCBhdCBhbGwuCisgIChQcmV2aW91c2x5LCB0aGlzIG1lY2hhbmlzbSBleGlzdGVkIG9ubHkgZm9yIF9faGFzaF9fLCB0byBtYWtlCisgIG11dGFibGUgY2xhc3NlcyB1bmhhc2hhYmxlLikgIENvZGUgY29udHJpYnV0ZWQgYnkgQW5kcmV3IEJhcm5lcnQgYW5kCisgIEl2YW4gTGV2a2l2c2t5aS4KKworLSBJc3N1ZSAjMTY3NjQ6IFN1cHBvcnQga2V5d29yZCBhcmd1bWVudHMgdG8gemxpYi5kZWNvbXByZXNzKCkuICBQYXRjaCBieQorICBYaWFuZyBaaGFuZy4KKworLSBJc3N1ZSAjMjc3MzY6IFByZXZlbnQgc2VnZmF1bHQgYWZ0ZXIgaW50ZXJwcmV0ZXIgcmUtaW5pdGlhbGl6YXRpb24gZHVlCisgIHRvIHJlZiBjb3VudCBwcm9ibGVtIGludHJvZHVjZWQgaW4gY29kZSBmb3IgSXNzdWUgIzI3MDM4IGluIDMuNi4wYTMuCisgIFBhdGNoIGJ5IFhpYW5nIFpoYW5nLgorCistIElzc3VlICMyNTYyODogIFRoZSAqdmVyYm9zZSogYW5kICpyZW5hbWUqIHBhcmFtZXRlcnMgZm9yCisgIGNvbGxlY3Rpb25zLm5hbWVkdHVwbGUgYXJlIG5vdyBrZXl3b3JkLW9ubHkuCisKKy0gSXNzdWUgIzEyMzQ1OiBBZGQgbWF0aGVtYXRpY2FsIGNvbnN0YW50IHRhdSB0byBtYXRoIGFuZCBjbWF0aC4gU2VlIGFsc28KKyAgUEVQIDYyOC4KKworLSBJc3N1ZSAjMjY4MjM6IHRyYWNlYmFjay5TdGFja1N1bW1hcnkuZm9ybWF0IG5vdyBhYmJyZXZpYXRlcyBsYXJnZSBzZWN0aW9ucyBvZgorICByZXBlYXRlZCBsaW5lcyBhcyAiW1ByZXZpb3VzIGxpbmUgcmVwZWF0ZWQge2NvdW50fSBtb3JlIHRpbWVzXSIgKHRoaXMgY2hhbmdlCisgIHRoZW4gZnVydGhlciBhZmZlY3RzIG90aGVyIHRyYWNlYmFjayBkaXNwbGF5IG9wZXJhdGlvbnMgaW4gdGhlIG1vZHVsZSkuIFBhdGNoCisgIGJ5IEVtYW51ZWwgQmFycnkuCisKKy0gSXNzdWUgIzI3NjY0OiBBZGQgdG8gY29uY3VycmVudC5mdXR1cmVzLnRocmVhZC5UaHJlYWRQb29sRXhlY3V0b3IoKQorICB0aGUgYWJpbGl0eSB0byBzcGVjaWZ5IGEgdGhyZWFkIG5hbWUgcHJlZml4LgorCistIElzc3VlICMyNzE4MTogQWRkIGdlb21ldHJpY19tZWFuIGFuZCBoYXJtb25pY19tZWFuIHRvIHN0YXRpc3RpY3MgbW9kdWxlLgorCistIElzc3VlICMyNzU3MzogY29kZS5pbnRlcmFjdCBub3cgcHJpbnRzIGFuIG1lc3NhZ2Ugd2hlbiBleGl0aW5nLgorCistIElzc3VlICM2NDIyOiBBZGQgYXV0b3JhbmdlIG1ldGhvZCB0byB0aW1laXQuVGltZXIgb2JqZWN0cy4KKwogLSBJc3N1ZSAjMjc3NzM6IENvcnJlY3Qgc29tZSBtZW1vcnkgbWFuYWdlbWVudCBlcnJvcnMgc2VydmVyX2hvc3RuYW1lIGluCiAgIF9zc2wud3JhcF9zb2NrZXQoKS4KIAogLSBJc3N1ZSAjMjY3NTA6IHVuaXR0ZXN0Lm1vY2suY3JlYXRlX2F1dG9zcGVjKCkgbm93IHdvcmtzIHByb3Blcmx5IGZvcgotICBzdWJjbGFzc2VzIG9mIHByb3BlcnR5KCkgYW5kIG90aGVyIGRhdGEgZGVzY3JpcHRvcnMuCisgIHN1YmNsYXNzZXMgb2YgcHJvcGVydHkoKSBhbmQgb3RoZXIgZGF0YSBkZXNjcmlwdG9ycy4gIFJlbW92ZXMgdGhlIG5ldmVyCisgIHB1YmxpY2x5IHVzZWQsIG5ldmVyIGRvY3VtZW50ZWQgdW5pdHRlc3QubW9jay5EZXNjcmlwdG9yVHlwZXMgdHVwbGUuCisKKy0gSXNzdWUgIzI2NzU0OiBVbmRvY3VtZW50ZWQgc3VwcG9ydCBvZiBnZW5lcmFsIGJ5dGVzLWxpa2Ugb2JqZWN0cworICBhcyBwYXRoIGluIGNvbXBpbGUoKSBhbmQgc2ltaWxhciBmdW5jdGlvbnMgaXMgbm93IGRlcHJlY2F0ZWQuCisKKy0gSXNzdWUgIzI2ODAwOiBVbmRvY3VtZW50ZWQgc3VwcG9ydCBvZiBnZW5lcmFsIGJ5dGVzLWxpa2Ugb2JqZWN0cworICBhcyBwYXRocyBpbiBvcyBmdW5jdGlvbnMgaXMgbm93IGRlcHJlY2F0ZWQuCisKKy0gSXNzdWUgIzI2OTgxOiBBZGQgX29yZGVyXyBjb21wYXRpYmlsaXR5IHNoaW0gdG8gZW51bS5FbnVtIGZvcgorICBQeXRob24gMi8zIGNvZGUgYmFzZXMuCisKKy0gSXNzdWUgIzI3NjYxOiBBZGRlZCB0emluZm8ga2V5d29yZCBhcmd1bWVudCB0byBkYXRldGltZS5jb21iaW5lLgogCiAtIEluIHRoZSBjdXJzZXMgbW9kdWxlLCByYWlzZSBhbiBlcnJvciBpZiB3aW5kb3cuZ2V0c3RyKCkgb3Igd2luZG93Lmluc3RyKCkgaXMKICAgcGFzc2VkIGEgbmVnYXRpdmUgdmFsdWUuCkBAIC0zNjgsNiArMTMzNyw5IEBACiAgIEhUVFBfUFJPWFkgdmFyaWFibGUgd2hlbiBSRVFVRVNUX01FVEhPRCBlbnZpcm9ubWVudCBpcyBzZXQsIHdoaWNoIGluZGljYXRlcwogICB0aGF0IHRoZSBzY3JpcHQgaXMgaW4gQ0dJIG1vZGUuCiAKKy0gSXNzdWUgIzcwNjM6IFJlbW92ZSBkZWFkIGNvZGUgZnJvbSB0aGUgImFycmF5IiBtb2R1bGUncyBzbGljZSBoYW5kbGluZy4KKyAgUGF0Y2ggYnkgQ2h1Y2suCisKIC0gSXNzdWUgIzI3NjU2OiBEbyBub3QgYXNzdW1lIHNjaGVkLmggZGVmaW5lcyBhbnkgU0NIRURfKiBjb25zdGFudHMuCiAKIC0gSXNzdWUgIzI3MTMwOiBJbiB0aGUgInpsaWIiIG1vZHVsZSwgZml4IGhhbmRsaW5nIG9mIGxhcmdlIGJ1ZmZlcnMKQEAgLTM3NSw2ICsxMzQ3LDE1IEBACiAgIHdlcmUgbGltaXRlZCB0byA0IEdpQiwgYW5kIGNvbXByZXNzaW9uIGFuZCBkZWNvbXByZXNzaW9uIG9wZXJhdGlvbnMgZGlkIG5vdAogICBwcm9wZXJseSBoYW5kbGUgcmVzdWx0cyBvZiA0IEdpQi4KIAorLSBJc3N1ZSAjMjQ3NzM6IEltcGxlbWVudGVkIFBFUCA0OTUgKExvY2FsIFRpbWUgRGlzYW1iaWd1YXRpb24pLgorCistIEV4cG9zZSB0aGUgRVBPTExFWENMVVNJVkUgY29uc3RhbnQgKHdoZW4gaXQgaXMgZGVmaW5lZCkgaW4gdGhlIHNlbGVjdCBtb2R1bGUuCisKKy0gSXNzdWUgIzI3NTY3OiBFeHBvc2UgdGhlIEVQT0xMUkRIVVAgYW5kIFBPTExSREhVUCBjb25zdGFudHMgaW4gdGhlIHNlbGVjdAorICBtb2R1bGUuCisKKy0gSXNzdWUgIzE2MjE6IEF2b2lkIHNpZ25lZCBpbnQgbmVnYXRpb24gb3ZlcmZsb3cgaW4gdGhlICJhdWRpb29wIiBtb2R1bGUuCisKIC0gSXNzdWUgIzI3NTMzOiBSZWxlYXNlIEdJTCBpbiBudC5faXNkaXIKIAogLSBJc3N1ZSAjMTc3MTE6IEZpeGVkIHVucGlja2xpbmcgYnkgdGhlIHBlcnNpc3RlbnQgSUQgd2l0aCBwcm90b2NvbCAwLgpAQCAtMzgyLDYgKzEzNjMsMTEzIEBACiAKIC0gSXNzdWUgIzI3NTIyOiBBdm9pZCBhbiB1bmludGVudGlvbmFsIHJlZmVyZW5jZSBjeWNsZSBpbiBlbWFpbC5mZWVkcGFyc2VyLgogCistIElzc3VlICMyNzUxMjogRml4IGEgc2VnZmF1bHQgd2hlbiBvcy5mc3BhdGgoKSBjYWxsZWQgYW4gX19mc3BhdGhfXygpIG1ldGhvZAorICB0aGF0IHJhaXNlZCBhbiBleGNlcHRpb24uIFBhdGNoIGJ5IFhpYW5nIFpoYW5nLgorCitJRExFCistLS0tCisKKy0gSXNzdWUgIzI3NzE0OiB0ZXh0X3RleHR2aWV3IGFuZCB0ZXN0X2F1dG9jb21wbGV0ZSBub3cgcGFzcyB3aGVuIHJlLXJ1bgorICBpbiB0aGUgc2FtZSBwcm9jZXNzLiAgVGhpcyBvY2N1cnMgd2hlbiB0ZXN0X2lkbGUgZmFpbHMgd2hlbiBydW4gd2l0aCB0aGUKKyAgLXcgb3B0aW9uIGJ1dCB3aXRob3V0IC1qbi4gIEZpeCB3YXJuaW5nIGZyb20gdGVzdF9jb25maWcuCisKKy0gSXNzdWUgIzI3NjIxOiBQdXQgcXVlcnkgcmVzcG9uc2UgdmFsaWRhdGlvbiBlcnJvciBtZXNzYWdlcyBpbiB0aGUgcXVlcnkKKyAgYm94IGl0c2VsZiBpbnN0ZWFkIG9mIGluIGEgc2VwYXJhdGUgbWFzc2FnZWJveC4gIFJlZG8gdGVzdHMgdG8gbWF0Y2guCisgIEFkZCBNYWMgT1NYIHJlZmluZW1lbnRzLiAgT3JpZ2luYWwgcGF0Y2ggYnkgTWFyayBSb3NlbWFuLgorCistIElzc3VlICMyNzYyMDogRXNjYXBlIGtleSBub3cgY2xvc2VzIFF1ZXJ5IGJveCBhcyBjYW5jZWxsZWQuCisKKy0gSXNzdWUgIzI3NjA5OiBJRExFOiB0YWIgYWZ0ZXIgaW5pdGlhbCB3aGl0ZXNwYWNlIHNob3VsZCB0YWIsIG5vdAorICBhdXRvY29tcGxldGUuIFRoaXMgZml4ZXMgcHJvYmxlbSB3aXRoIHdyaXRpbmcgZG9jc3RyaW5ncyBhdCBsZWFzdAorICB0d2ljZSBpbmRlbnRlZC4KKworLSBJc3N1ZSAjMjc2MDk6IEV4cGxpY2l0bHkgcmV0dXJuIE5vbmUgd2hlbiB0aGVyZSBhcmUgYWxzbyBub24tTm9uZQorICByZXR1cm5zLiBJbiBhIGZldyBjYXNlcywgcmV2ZXJzZSBhIGNvbmRpdGlvbiBhbmQgZWxpbWluYXRlIGEgcmV0dXJuLgorCistIElzc3VlICMyNTUwNzogSURMRSBubyBsb25nZXIgcnVucyBidWdneSBjb2RlIGJlY2F1c2Ugb2YgaXRzIHRraW50ZXIgaW1wb3J0cy4KKyAgVXNlcnMgbXVzdCBpbmNsdWRlIHRoZSBzYW1lIGltcG9ydHMgcmVxdWlyZWQgdG8gcnVuIGRpcmVjdGx5IGluIFB5dGhvbi4KKworLSBJc3N1ZSAjMjcxNzM6IEFkZCAnSURMRSBNb2Rlcm4gVW5peCcgdG8gdGhlIGJ1aWx0LWluIGtleSBzZXRzLgorICBNYWtlIHRoZSBkZWZhdWx0IGtleSBzZXQgZGVwZW5kIG9uIHRoZSBwbGF0Zm9ybS4KKyAgQWRkIHRlc3RzIGZvciB0aGUgY2hhbmdlcyB0byB0aGUgY29uZmlnIG1vZHVsZS4KKworLSBJc3N1ZSAjMjc0NTI6IGFkZCBsaW5lIGNvdW50ZXIgYW5kIGNyYyB0byBJRExFIGNvbmZpZ0hhbmRsZXIgdGVzdCBkdW1wLgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjMjU4MDU6IFNraXAgYSB0ZXN0IGluIHRlc3RfcGtndXRpbCBhcyBuZWVkZWQgdGhhdCBkb2Vzbid0IHdvcmsgd2hlbgorICBgYF9fbmFtZV9fID09IF9fbWFpbl9fYGAuIFBhdGNoIGJ5IFNpbGVudEdob3N0LgorCistIElzc3VlICMyNzQ3MjogQWRkIHRlc3Quc3VwcG9ydC51bml4X3NoZWxsIGFzIHRoZSBwYXRoIHRvIHRoZSBkZWZhdWx0IHNoZWxsLgorCistIElzc3VlICMyNzM2OTogSW4gdGVzdF9weWV4cGF0LCBhdm9pZCB0ZXN0aW5nIGFuIGVycm9yIG1lc3NhZ2UgZGV0YWlsIHRoYXQKKyAgY2hhbmdlZCBpbiBFeHBhdCAyLjIuMC4KKworLSBJc3N1ZSAjMjc1OTQ6IFByZXZlbnQgYXNzZXJ0aW9uIGVycm9yIHdoZW4gcnVubmluZyB0ZXN0X2FzdCB3aXRoIGNvdmVyYWdlCisgIGVuYWJsZWQ6IGVuc3VyZSBjb2RlIG9iamVjdCBoYXMgYSB2YWxpZCBmaXJzdCBsaW5lIG51bWJlci4KKyAgUGF0Y2ggc3VnZ2VzdGVkIGJ5IEl2YW4gTGV2a2l2c2t5aS4KKworV2luZG93cworLS0tLS0tLQorCistIElzc3VlICMyNzY0NzogVXBkYXRlIGJ1bmRsZWQgVGNsL1RrIHRvIDguNi42LgorCistIElzc3VlICMyNzYxMDogQWRkcyBQRVAgNTE0IG1ldGFkYXRhIHRvIFdpbmRvd3MgaW5zdGFsbGVyCisKKy0gSXNzdWUgIzI3NDY5OiBBZGRzIGEgc2hlbGwgZXh0ZW5zaW9uIHRvIHRoZSBsYXVuY2hlciBzbyB0aGF0IGRyYWcgYW5kIGRyb3AKKyAgd29ya3MgY29ycmVjdGx5LgorCistIElzc3VlICMyNzMwOTogRW5hYmxlcyBwcm9wZXIgV2luZG93cyBzdHlsZXMgaW4gcHl0aG9uW3ddLmV4ZSBtYW5pZmVzdC4KKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzI3NzEzOiBTdXBwcmVzcyBzcHVyaW91cyBidWlsZCB3YXJuaW5ncyB3aGVuIHVwZGF0aW5nIGltcG9ydGxpYidzCisgIGJvb3RzdHJhcCBmaWxlcy4gIFBhdGNoIGJ5IFhpYW5nIFpoYW5nCisKKy0gSXNzdWUgIzI1ODI1OiBDb3JyZWN0IHRoZSByZWZlcmVuY2VzIHRvIE1vZHVsZXMvcHl0aG9uLmV4cCwgd2hpY2ggaXMKKyAgcmVxdWlyZWQgb24gQUlYLiAgVGhlIHJlZmVyZW5jZXMgd2VyZSBhY2NpZGVudGFsbHkgY2hhbmdlZCBpbiAzLjUuMGExLgorCistIElzc3VlICMyNzQ1MzogQ1BQIGludm9jYXRpb24gaW4gY29uZmlndXJlIG11c3QgdXNlIENQUEZMQUdTLiBQYXRjaCBieQorICBDaGkgSHN1YW4gWWVuLgorCistIElzc3VlICMyNzY0MTogVGhlIGNvbmZpZ3VyZSBzY3JpcHQgbm93IGluc2VydHMgY29tbWVudHMgaW50byB0aGUgbWFrZWZpbGUKKyAgdG8gcHJldmVudCB0aGUgcGdlbiBhbmQgX2ZyZWV6ZV9pbXBvcnRsaWIgZXhlY3V0YWJsZXMgZnJvbSBiZWluZyBjcm9zcy0KKyAgY29tcGlsZWQuCisKKy0gSXNzdWUgIzI2NjYyOiBTZXQgUFlUSE9OX0ZPUl9HRU4gaW4gY29uZmlndXJlIGFzIHRoZSBQeXRob24gcHJvZ3JhbSB0byBiZQorICB1c2VkIGZvciBmaWxlIGdlbmVyYXRpb24gZHVyaW5nIHRoZSBidWlsZC4KKworLSBJc3N1ZSAjMTA5MTA6IEF2b2lkIEMrKyBjb21waWxhdGlvbiBlcnJvcnMgb24gRnJlZUJTRCBhbmQgT1MgWC4KKyAgQWxzbyB1cGRhdGUgRnJlZWRCU0QgdmVyc2lvbiBjaGVja3MgZm9yIHRoZSBvcmlnaW5hbCBjdHlwZSBVVEYtOCB3b3JrYXJvdW5kLgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuNi4wIGFscGhhIDMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMjAxNi0wNy0xMSoKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzI3NDczOiBGaXhlZCBwb3NzaWJsZSBpbnRlZ2VyIG92ZXJmbG93IGluIGJ5dGVzIGFuZCBieXRlYXJyYXkKKyAgY29uY2F0ZW5hdGlvbnMuICBQYXRjaCBieSBYaWFuZyBaaGFuZy4KKworLSBJc3N1ZSAjMjMwMzQ6IFRoZSBvdXRwdXQgb2YgYSBzcGVjaWFsIFB5dGhvbiBidWlsZCB3aXRoIGRlZmluZWQgQ09VTlRfQUxMT0NTLAorICBTSE9XX0FMTE9DX0NPVU5UIG9yIFNIT1dfVFJBQ0tfQ09VTlQgbWFjcm9zIGlzIG5vdyBvZmYgYnkgIGRlZmF1bHQuICBJdCBjYW4KKyAgYmUgcmUtZW5hYmxlZCB1c2luZyB0aGUgIi1YIHNob3dhbGxvY2NvdW50IiBvcHRpb24uICBJdCBub3cgb3V0cHV0cyB0byBzdGRlcnIKKyAgaW5zdGVhZCBvZiBzdGRvdXQuCisKKy0gSXNzdWUgIzI3NDQzOiBfX2xlbmd0aF9oaW50X18oKSBvZiBieXRlYXJyYXkgaXRlcmF0b3JzIG5vIGxvbmdlciByZXR1cm4gYQorICBuZWdhdGl2ZSBpbnRlZ2VyIGZvciBhIHJlc2l6ZWQgYnl0ZWFycmF5LgorCistIElzc3VlICMyNzAwNzogVGhlIGZyb21oZXgoKSBjbGFzcyBtZXRob2RzIG9mIGJ5dGVzIGFuZCBieXRlYXJyYXkgc3ViY2xhc3NlcworICBub3cgcmV0dXJuIGFuIGluc3RhbmNlIG9mIGNvcnJlc3BvbmRpbmcgc3ViY2xhc3MuCisKK0xpYnJhcnkKKy0tLS0tLS0KKwogLSBJc3N1ZSAjMjY4NDQ6IEZpeCBlcnJvciBtZXNzYWdlIGZvciBpbXAuZmluZF9tb2R1bGUoKSB0byByZWZlciB0byAncGF0aCcKICAgaW5zdGVhZCBvZiAnbmFtZScuIFBhdGNoIGJ5IExldiBNYXhpbW92LgogCkBAIC0zOTIsMjIgKzE0ODAsNTQgQEAKICAgY29uZmlybWluZyB0aGUgbmV0c2NhcGUgY29va2llIGZvcm1hdCBhbmQgbWFraW5nIGl0IGNvbnNpc3RlbnQgd2l0aAogICBkb2N1bWVudGF0aW9uLgogCi0tIElzc3VlICMyNjY2NDogRml4IGFjdGl2YXRlLmZpc2ggYnkgcmVtb3ZpbmcgbWlzLXVzZSBvZiBgYCRgYC4KKy0gSXNzdWUgIzIxNzA4OiBEZXByZWNhdGVkIGRibS5kdW1iIGJlaGF2aW9yIHRoYXQgZGlmZmVycyBmcm9tIGNvbW1vbiBkYm0KKyAgYmVoYXZpb3I6IGNyZWF0aW5nIGEgZGF0YWJhc2UgaW4gJ3InIGFuZCAndycgbW9kZXMgYW5kIG1vZGlmeWluZyBhIGRhdGFiYXNlCisgIGluICdyJyBtb2RlLgogCi0tIElzc3VlICMyMjExNTogRml4ZWQgdHJhY2luZyBUa2ludGVyIHZhcmlhYmxlczogdHJhY2VfdmRlbGV0ZSgpIHdpdGggd3JvbmcKLSAgbW9kZSBubyBsb25nZXIgYnJlYWsgdHJhY2luZywgdHJhY2VfdmluZm8oKSBub3cgYWx3YXlzIHJldHVybnMgYSBsaXN0IG9mCi0gIHBhaXJzIG9mIHN0cmluZ3MsIHRyYWNpbmcgaW4gdGhlICJ1IiBtb2RlIG5vdyB3b3Jrcy4KKy0gSXNzdWUgIzI2NzIxOiBDaGFuZ2UgdGhlIHNvY2tldHNlcnZlci5TdHJlYW1SZXF1ZXN0SGFuZGxlci53ZmlsZSBhdHRyaWJ1dGUKKyAgdG8gaW1wbGVtZW50IEJ1ZmZlcmVkSU9CYXNlLiBJbiBwYXJ0aWN1bGFyLCB0aGUgd3JpdGUoKSBtZXRob2Qgbm8gbG9uZ2VyCisgIGRvZXMgcGFydGlhbCB3cml0ZXMuCiAKLS0gRml4IGEgc2NvcGluZyBpc3N1ZSBpbiBpbXBvcnRsaWIudXRpbC5MYXp5TG9hZGVyIHdoaWNoIHRyaWdnZXJlZCBhbgotICBVbmJvdW5kTG9jYWxFcnJvciB3aGVuIGxhenktbG9hZGluZyBhIG1vZHVsZSB0aGF0IHdhcyBhbHJlYWR5IHB1dCBpbnRvCi0gIHN5cy5tb2R1bGVzLgorLSBJc3N1ZSAjMjIxMTU6IEFkZGVkIG1ldGhvZHMgdHJhY2VfYWRkLCB0cmFjZV9yZW1vdmUgYW5kIHRyYWNlX2luZm8gaW4gdGhlCisgIHRraW50ZXIuVmFyaWFibGUgY2xhc3MuICBUaGV5IHJlcGxhY2Ugb2xkIG1ldGhvZHMgdHJhY2VfdmFyaWFibGUsIHRyYWNlLAorICB0cmFjZV92ZGVsZXRlIGFuZCB0cmFjZV92aW5mbyB0aGF0IHVzZSBvYnNvbGV0ZSBUY2wgY29tbWFuZHMgYW5kIG1pZ2h0CisgIG5vdCB3b3JrIGluIGZ1dHVyZSB2ZXJzaW9ucyBvZiBUY2wuICBGaXhlZCBvbGQgdHJhY2luZyBtZXRob2RzOgorICB0cmFjZV92ZGVsZXRlKCkgd2l0aCB3cm9uZyBtb2RlIG5vIGxvbmdlciBicmVhayB0cmFjaW5nLCB0cmFjZV92aW5mbygpIG5vdworICBhbHdheXMgcmV0dXJucyBhIGxpc3Qgb2YgcGFpcnMgb2Ygc3RyaW5ncywgdHJhY2luZyBpbiB0aGUgInUiIG1vZGUgbm93IHdvcmtzLgorCistIElzc3VlICMyNjI0MzogT25seSB0aGUgbGV2ZWwgYXJndW1lbnQgdG8gemxpYi5jb21wcmVzcygpIGlzIGtleXdvcmQgYXJndW1lbnQKKyAgbm93LiAgVGhlIGZpcnN0IGFyZ3VtZW50IGlzIHBvc2l0aW9uYWwtb25seS4KKworLSBJc3N1ZSAjMjcwMzg6IEV4cG9zZSB0aGUgRGlyRW50cnkgdHlwZSBhcyBvcy5EaXJFbnRyeS4gQ29kZSBwYXRjaCBieQorICBKZWxsZSBaaWpsc3RyYS4KKworLSBJc3N1ZSAjMjcxODY6IFVwZGF0ZSBvcy5mc3BhdGgoKS9QeU9TX0ZTUGF0aCgpIHRvIGNoZWNrIHRoZSByZXR1cm4gdmFsdWUgb2YKKyAgX19mc3BhdGhfXygpIHRvIGJlIGVpdGhlciBzdHIgb3IgYnl0ZXMuCisKKy0gSXNzdWUgIzE4NzI2OiBBbGwgb3B0aW9uYWwgcGFyYW1ldGVycyBvZiB0aGUgZHVtcCgpLCBkdW1wcygpLAorICBsb2FkKCkgYW5kIGxvYWRzKCkgZnVuY3Rpb25zIGFuZCBKU09ORW5jb2RlciBhbmQgSlNPTkRlY29kZXIgY2xhc3MKKyAgY29uc3RydWN0b3JzIGluIHRoZSBqc29uIG1vZHVsZSBhcmUgbm93IGtleXdvcmQtb25seS4KKworLSBJc3N1ZSAjMjczMTk6IE1ldGhvZHMgc2VsZWN0aW9uX3NldCgpLCBzZWxlY3Rpb25fYWRkKCksIHNlbGVjdGlvbl9yZW1vdmUoKQorICBhbmQgc2VsZWN0aW9uX3RvZ2dsZSgpIG9mIHR0ay5UcmVlVmlldyBub3cgYWxsb3cgcGFzc2luZyBtdWx0aXBsZSBpdGVtcyBhcworICBtdWx0aXBsZSBhcmd1bWVudHMgaW5zdGVhZCBvZiBwYXNzaW5nIHRoZW0gYXMgYSB0dXBsZS4gIERlcHJlY2F0ZWQKKyAgdW5kb2N1bWVudGVkIGFiaWxpdHkgb2YgY2FsbGluZyB0aGUgc2VsZWN0aW9uKCkgbWV0aG9kIHdpdGggYXJndW1lbnRzLgogCiAtIElzc3VlICMyNzA3OTogRml4ZWQgY3Vyc2VzLmFzY2lpIGZ1bmN0aW9ucyBpc2JsYW5rKCksIGlzY250cmwoKSBhbmQgaXNwdW5jdCgpLgogCistIElzc3VlICMyNzI5NDogTnVtZXJpY2FsIHN0YXRlIGluIHRoZSByZXByIGZvciBUa2ludGVyIGV2ZW50IG9iamVjdHMgaXMgbm93CisgIHJlcHJlc2VudGVkIGFzIGEgY29tYmluYXRpb24gb2Yga25vd24gZmxhZ3MuCisKKy0gSXNzdWUgIzI3MTc3OiBNYXRjaCBvYmplY3RzIGluIHRoZSByZSBtb2R1bGUgbm93IHN1cHBvcnQgaW5kZXgtbGlrZSBvYmplY3RzCisgIGFzIGdyb3VwIGluZGljZXMuICBCYXNlZCBvbiBwYXRjaGVzIGJ5IEplcm9lbiBEZW1leWVyIGFuZCBYaWFuZyBaaGFuZy4KKwogLSBJc3N1ZSAjMjY3NTQ6IFNvbWUgZnVuY3Rpb25zIChjb21waWxlKCkgZXRjKSBhY2NlcHRlZCBhIGZpbGVuYW1lIGFyZ3VtZW50CiAgIGVuY29kZWQgYXMgYW4gaXRlcmFibGUgb2YgaW50ZWdlcnMuIE5vdyBvbmx5IHN0cmluZ3MgYW5kIGJ5dGUtbGlrZSBvYmplY3RzCiAgIGFyZSBhY2NlcHRlZC4KIAorLSBJc3N1ZSAjMjY1MzY6IHNvY2tldC5pb2N0bCBub3cgc3VwcG9ydHMgU0lPX0xPT1BCQUNLX0ZBU1RfUEFUSC4gUGF0Y2ggYnkKKyAgRGFuaWVsIFN0b2tlcy4KKwogLSBJc3N1ZSAjMjcwNDg6IFByZXZlbnRzIGRpc3R1dGlscyBmYWlsaW5nIG9uIFdpbmRvd3Mgd2hlbiBlbnZpcm9ubWVudAogICB2YXJpYWJsZXMgY29udGFpbiBub24tQVNDSUkgY2hhcmFjdGVycwogCkBAIC00MjYsOSArMTU0NiwxNSBAQAogICBMaW51eC4gIFRydW5jYXRlIHNpemUgdG8gSU5UX01BWCBhbmQgbG9vcCB1bnRpbCB3ZSBjb2xsZWN0ZWQgZW5vdWdoIHJhbmRvbQogICBieXRlcywgaW5zdGVhZCBvZiBjYXN0aW5nIGEgZGlyZWN0bHkgUHlfc3NpemVfdCB0byBpbnQuCiAKKy0gSXNzdWUgIzE2ODY0OiBzcWxpdGUzLkN1cnNvci5sYXN0cm93aWQgbm93IHN1cHBvcnRzIFJFUExBQ0Ugc3RhdGVtZW50LgorICBJbml0aWFsIHBhdGNoIGJ5IEFsZXggTG9yZFRob3JzZW4uCisKIC0gSXNzdWUgIzI2Mzg2OiBGaXhlZCB0dGsuVHJlZVZpZXcgc2VsZWN0aW9uIG9wZXJhdGlvbnMgd2l0aCBpdGVtIGlkJ3MKICAgY29udGFpbmluZyBzcGFjZXMuCiAKKy0gSXNzdWUgIzg2Mzc6IEhvbm9yIGEgcGFnZXIgc2V0IGJ5IHRoZSBlbnYgdmFyIE1BTlBBR0VSIChpbiBwcmVmZXJlbmNlIHRvCisgIG9uZSBzZXQgYnkgdGhlIGVudiB2YXIgUEFHRVIpLgorCiAtIFtTZWN1cml0eV0gSXNzdWUgIzIyNjM2OiBBdm9pZCBzaGVsbCBpbmplY3Rpb24gcHJvYmxlbXMgd2l0aAogICBjdHlwZXMudXRpbC5maW5kX2xpYnJhcnkoKS4KIApAQCAtNDM5LDI2MCArMTU2NSw0MDAgQEAKIC0gSXNzdWUgIzI3MzkyOiBBZGQgbG9vcC5jb25uZWN0X2FjY2VwdGVkX3NvY2tldCgpLgogICBQYXRjaCBieSBKaW0gRnVsdG9uLgogCi0tIElzc3VlICMyNzkzMDogSW1wcm92ZWQgYmVoYXZpb3VyIG9mIGxvZ2dpbmcuaGFuZGxlcnMuUXVldWVMaXN0ZW5lci4KLSAgVGhhbmtzIHRvIFBhdWxvIEFuZHJhZGUgYW5kIFBldHIgVmlrdG9yaW4gZm9yIHRoZSBhbmFseXNpcyBhbmQgcGF0Y2guCi0KLS0gSXNzdWUgIzIxMjAxOiBJbXByb3ZlcyByZWFkYWJpbGl0eSBvZiBtdWx0aXByb2Nlc3NpbmcgZXJyb3IgbWVzc2FnZS4gIFRoYW5rcwotICB0byBXb2pjaWVjaCBXYWxjemFrIGZvciBwYXRjaC4KLQotLSBJc3N1ZSAjMjc0NTY6IGFzeW5jaW86IFNldCBUQ1BfTk9ERUxBWSBieSBkZWZhdWx0LgotCi0tIElzc3VlICMyNzkwNjogRml4IHNvY2tldCBhY2NlcHQgZXhoYXVzdGlvbiBkdXJpbmcgaGlnaCBUQ1AgdHJhZmZpYy4KLSAgUGF0Y2ggYnkgS2V2aW4gQ29ud2F5LgotCi0tIElzc3VlICMyODE3NDogSGFuZGxlIHdoZW4gU09fUkVVU0VQT1JUIGlzbid0IHByb3Blcmx5IHN1cHBvcnRlZC4KLSAgUGF0Y2ggYnkgU2V0aCBNaWNoYWVsIExhcnNvbi4KLQotLSBJc3N1ZSAjMjY2NTQ6IEluc3BlY3QgZnVuY3Rvb2xzLnBhcnRpYWwgaW4gYXN5bmNpby5IYW5kbGUuX19yZXByX18uCi0gIFBhdGNoIGJ5IGljZWJveS4KLQotLSBJc3N1ZSAjMjY5MDk6IEZpeCBzbG93IHBpcGVzIElPIGluIGFzeW5jaW8uCi0gIFBhdGNoIGJ5IElOQURBIE5hb2tpLgotCi0tIElzc3VlICMyODE3NjogRml4IGNhbGxiYWNrcyByYWNlIGluIGFzeW5jaW8uU2VsZWN0b3JMb29wLnNvY2tfY29ubmVjdC4KLQotLSBJc3N1ZSAjMjc3NTk6IEZpeCBzZWxlY3RvcnMgaW5jb3JyZWN0bHkgcmV0YWluIGludmFsaWQgZmlsZSBkZXNjcmlwdG9ycy4KLSAgUGF0Y2ggYnkgTWFyayBXaWxsaWFtcy4KLQotLSBJc3N1ZSAjMjgzNjg6IFJlZnVzZSBtb25pdG9yaW5nIHByb2Nlc3NlcyBpZiB0aGUgY2hpbGQgd2F0Y2hlciBoYXMKLSAgbm8gbG9vcCBhdHRhY2hlZC4KLSAgUGF0Y2ggYnkgVmluY2VudCBNaWNoZWwuCi0KLS0gSXNzdWUgIzI4MzY5OiBSYWlzZSBSdW50aW1lRXJyb3Igd2hlbiB0cmFuc3BvcnQncyBGRCBpcyB1c2VkIHdpdGgKLSAgYWRkX3JlYWRlciwgYWRkX3dyaXRlciwgZXRjLgotCi0tIElzc3VlICMyODM3MDogU3BlZWR1cCBhc3luY2lvLlN0cmVhbVJlYWRlci5yZWFkZXhhY3RseS4KLSAgUGF0Y2ggYnkg0JrQvtGA0LXQvdCx0LXRgNCzINCc0LDRgNC6LgotCi0tIElzc3VlICMyODM3MTogRGVwcmVjYXRlIHBhc3NpbmcgYXN5bmNpby5IYW5kbGVzIHRvIHJ1bl9pbl9leGVjdXRvci4KLQotLSBJc3N1ZSAjMjgzNzI6IEZpeCBhc3luY2lvIHRvIHN1cHBvcnQgZm9ybWF0dGluZyBvZiBub24tcHl0aG9uIGNvcm91dGluZXMuCi0KLS0gSXNzdWUgIzI4Mzk5OiBSZW1vdmUgVU5JWCBzb2NrZXQgZnJvbSBGUyBiZWZvcmUgYmluZGluZy4KLSAgUGF0Y2ggYnkg0JrQvtGA0LXQvdCx0LXRgNCzINCc0LDRgNC6LgotCi0tIElzc3VlICMyNzk3MjogUHJvaGliaXQgVGFza3MgdG8gYXdhaXQgb24gdGhlbXNlbHZlcy4KLQotLSBJc3N1ZSAjMjY5MjM6IEZpeCBhc3luY2lvLkdhdGhlciB0byByZWZ1c2UgYmVpbmcgY2FuY2VsbGVkIG9uY2UgYWxsIAotICBjaGlsZHJlbiBhcmUgZG9uZS4KLSAgUGF0Y2ggYnkgSm9oYW5uZXMgRWJrZS4KLQotLSBJc3N1ZSAjMjY3OTY6IERvbid0IGNvbmZpZ3VyZSB0aGUgbnVtYmVyIG9mIHdvcmtlcnMgZm9yIGRlZmF1bHQgCi0gIHRocmVhZHBvb2wgZXhlY3V0b3IuCi0gIEluaXRpYWwgcGF0Y2ggYnkgSGFucyBMYXdyZW56LgotCi0tIElzc3VlICMyODYwMDogT3B0aW1pemUgbG9vcC5jYWxsX3Nvb24oKS4KLQotLSBJc3N1ZSAjMjg2MTM6IEZpeCBnZXRfZXZlbnRfbG9vcCgpIHJldHVybiB0aGUgY3VycmVudCBsb29wIGlmIAotICBjYWxsZWQgZnJvbSBjb3JvdXRpbmVzL2NhbGxiYWNrcy4KLQotLSBJc3N1ZSAjMjg2Mzk6IEZpeCBpbnNwZWN0LmlzYXdhaXRhYmxlIHRvIGFsd2F5cyByZXR1cm4gYm9vbAotICBQYXRjaCBieSBKdXN0aW4gTWF5ZmllbGQuCi0KLS0gSXNzdWUgIzI4NjUyOiBNYWtlIGxvb3AgbWV0aG9kcyByZWplY3Qgc29ja2V0IGtpbmRzIHRoZXkgZG8gbm90IHN1cHBvcnQuCi0KLS0gSXNzdWUgIzI4NjUzOiBGaXggYSByZWZsZWFrIGluIGZ1bmN0b29scy5scnVfY2FjaGUuCi0KLS0gSXNzdWUgIzI4NzAzOiBGaXggYXN5bmNpby5pc2Nvcm91dGluZWZ1bmN0aW9uIHRvIGhhbmRsZSBNb2NrIG9iamVjdHMuCi0KLS0gSXNzdWUgIzI0MTQyOiBSZWFkaW5nIGEgY29ycnVwdCBjb25maWcgZmlsZSBsZWZ0IHRoZSBwYXJzZXIgaW4gYW4KLSAgaW52YWxpZCBzdGF0ZS4gIE9yaWdpbmFsIHBhdGNoIGJ5IEZsb3JpYW4gSMO2Y2guCi0KLS0gSXNzdWUgIzI4OTkwOiBGaXggU1NMIGhhbmdpbmcgaWYgY29ubmVjdGlvbiBpcyBjbG9zZWQgYmVmb3JlIGhhbmRzaGFrZSAKLSAgY29tcGxldGVkLgotICAoUGF0Y2ggYnkgSG9Iby1IbykKLQogSURMRQogLS0tLQogCi0tIElzc3VlICMxNTMwODogQWRkICdpbnRlcnJ1cHQgZXhlY3V0aW9uJyAoXkMpIHRvIFNoZWxsIG1lbnUuCi0gIFBhdGNoIGJ5IFJvZ2VyIFNlcnd5LCB1cGRhdGVkIGJ5IEJheWFyZCBSYW5kZWwuCistIElzc3VlICMyNzQ3NzogSURMRSBzZWFyY2ggZGlhbG9ncyBub3cgdXNlIHR0ayB3aWRnZXRzLgogCi0tIElzc3VlICMyNzkyMjogU3RvcCBJRExFIHRlc3RzIGZyb20gJ2ZsYXNoaW5nJyBndWkgd2lkZ2V0cyBvbiB0aGUgc2NyZWVuLgorLSBJc3N1ZSAjMjcxNzM6IEFkZCAnSURMRSBNb2Rlcm4gVW5peCcgdG8gdGhlIGJ1aWx0LWluIGtleSBzZXRzLgorICBNYWtlIHRoZSBkZWZhdWx0IGtleSBzZXQgZGVwZW5kIG9uIHRoZSBwbGF0Zm9ybS4KKyAgQWRkIHRlc3RzIGZvciB0aGUgY2hhbmdlcyB0byB0aGUgY29uZmlnIG1vZHVsZS4KIAotLSBBZGQgdmVyc2lvbiB0byB0aXRsZSBvZiBJRExFIGhlbHAgd2luZG93LgotCi0tIElzc3VlICMyNTU2NDogSW4gc2VjdGlvbiBvbiBJRExFIC0tIGNvbnNvbGUgZGlmZmVyZW5jZXMsIG1lbnRpb24gdGhhdAotICB1c2luZyBleGVjIG1lYW5zIHRoYXQgX19idWlsdGluc19fIGlzIGRlZmluZWQgZm9yIGVhY2ggc3RhdGVtZW50LgotCi0tIElzc3VlICMyNzcxNDogdGV4dF90ZXh0dmlldyBhbmQgdGVzdF9hdXRvY29tcGxldGUgbm93IHBhc3Mgd2hlbiByZS1ydW4KLSAgaW4gdGhlIHNhbWUgcHJvY2Vzcy4gIFRoaXMgb2NjdXJzIHdoZW4gdGVzdF9pZGxlIGZhaWxzIHdoZW4gcnVuIHdpdGggdGhlCi0gIC13IG9wdGlvbiBidXQgd2l0aG91dCAtam4uICBGaXggd2FybmluZyBmcm9tIHRlc3RfY29uZmlnLgotCi0tIElzc3VlICMyNTUwNzogSURMRSBubyBsb25nZXIgcnVucyBidWdneSBjb2RlIGJlY2F1c2Ugb2YgaXRzIHRraW50ZXIgaW1wb3J0cy4KLSAgVXNlcnMgbXVzdCBpbmNsdWRlIHRoZSBzYW1lIGltcG9ydHMgcmVxdWlyZWQgdG8gcnVuIGRpcmVjdGx5IGluIFB5dGhvbi4KKy0gSXNzdWUgIzI3NDUyOiBtYWtlIGNvbW1hbmQgbGluZSAiaWRsZS10ZXN0PiBweXRob24gdGVzdF9oZWxwLnB5IiB3b3JrLgorICBfX2ZpbGVfXyBpcyByZWxhdGl2ZSB3aGVuIHB5dGhvbiBpcyBzdGFydGVkIGluIHRoZSBmaWxlJ3MgZGlyZWN0b3J5LgogCiAtIElzc3VlICMyNzQ1MjogYWRkIGxpbmUgY291bnRlciBhbmQgY3JjIHRvIElETEUgY29uZmlnSGFuZGxlciB0ZXN0IGR1bXAuCiAKKy0gSXNzdWUgIzI3MzgwOiBJRExFOiBhZGQgcXVlcnkucHkgd2l0aCBiYXNlIFF1ZXJ5IGRpYWxvZyBhbmQgdHRrIHdpZGdldHMuCisgIE1vZHVsZSBoYWQgc3ViY2xhc3NlcyBTZWN0aW9uTmFtZSwgTW9kdWxlTmFtZSwgYW5kIEhlbHBTb3VyY2UsIHdoaWNoIGFyZQorICB1c2VkIHRvIGdldCBpbmZvcm1hdGlvbiBmcm9tIHVzZXJzIGJ5IGNvbmZpZ2RpYWxvZyBhbmQgZmlsZSA9PkxvYWQgTW9kdWxlLgorICBFYWNoIHN1YmNsYXNzIGhhcyBpdHcgb3duIHZhbGlkaXR5IGNoZWNrcy4gIFVzaW5nIE1vZHVsZU5hbWUgYWxsb3dzIHVzZXJzCisgIHRvIGVkaXQgYmFkIG1vZHVsZSBuYW1lcyBpbnN0ZWFkIG9mIHN0YXJ0aW5nIG92ZXIuCisgIEFkZCB0ZXN0cyBhbmQgZGVsZXRlIHRoZSB0d28gZmlsZXMgY29tYmluZWQgaW50byB0aGUgbmV3IG9uZS4KKworLSBJc3N1ZSAjMjczNzI6IFRlc3RfaWRsZSBubyBsb25nZXIgY2hhbmdlcyB0aGUgbG9jYWxlLgorCiAtIElzc3VlICMyNzM2NTogQWxsb3cgbm9uLWFzY2lpIGNoYXJzIGluIElETEUgTkVXUy50eHQsIGZvciBjb250cmlidXRvciBuYW1lcy4KIAogLSBJc3N1ZSAjMjcyNDU6IElETEU6IENsZWFubHkgZGVsZXRlIGN1c3RvbSB0aGVtZXMgYW5kIGtleSBiaW5kaW5ncy4KICAgUHJldmlvdXNseSwgd2hlbiBJRExFIHdhcyBzdGFydGVkIGZyb20gYSBjb25zb2xlIG9yIGJ5IGltcG9ydCwgYSBjYXNjYWRlCiAgIG9mIHdhcm5pbmdzIHdhcyBlbWl0dGVkLiAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KIAorLSBJc3N1ZSAjMjQxMzc6IFJ1biBJRExFLCB0ZXN0X2lkbGUsIGFuZCBodGVzdCB3aXRoIHRraW50ZXIgZGVmYXVsdCByb290CisgIGRpc2FibGVkLiAgRml4IGNvZGUgYW5kIHRlc3RzIHRoYXQgZmFpbCB3aXRoIHRoaXMgcmVzdHJpY3Rpb24uICBGaXggaHRlc3RzIHRvCisgIG5vdCBjcmVhdGUgYSBzZWNvbmQgYW5kIHJlZHVuZGFudCByb290IGFuZCBtYWlubG9vcC4KKworLSBJc3N1ZSAjMjczMTA6IEZpeCBJRExFLmFwcCBmYWlsdXJlIHRvIGxhdW5jaCBvbiBPUyBYIGR1ZSB0byB2ZXN0aWdpYWwgaW1wb3J0LgorCiBDIEFQSQogLS0tLS0KIAotLSBJc3N1ZSAjMjg4MDg6IFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKCkgbm93IG5ldmVyIHJhaXNlcyBleGNlcHRpb25zLgotCiAtIElzc3VlICMyNjc1NDogUHlVbmljb2RlX0ZTRGVjb2RlcigpIGFjY2VwdGVkIGEgZmlsZW5hbWUgYXJndW1lbnQgZW5jb2RlZCBhcwotICBhbiBpdGVyYWJsZSBvZiBpbnRlZ2Vycy4gTm93IG9ubHkgc3RyaW5ncyBhbmQgYnl0ZXMtbGlrZSBvYmplY3RzIGFyZSBhY2NlcHRlZC4KKyAgYW4gaXRlcmFibGUgb2YgaW50ZWdlcnMuIE5vdyBvbmx5IHN0cmluZ3MgYW5kIGJ5dGUtbGlrZSBvYmplY3RzIGFyZSBhY2NlcHRlZC4KIAotRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMyODUxMzogRG9jdW1lbnRlZCBjb21tYW5kLWxpbmUgaW50ZXJmYWNlIG9mIHppcGZpbGUuCi0KLVRlc3RzCitCdWlsZAogLS0tLS0KIAotLSBJc3N1ZSAjMjg5NTA6IERpc2FsbG93IC1qMCB0byBiZSBjb21iaW5lZCB3aXRoIC1ULy1sLy1NIGluIHJlZ3J0ZXN0Ci0gIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuCistIElzc3VlICMyODA2NjogRml4IHRoZSBsb2dpYyB0aGF0IHNlYXJjaGVzIGJ1aWxkIGRpcmVjdG9yaWVzIGZvciBnZW5lcmF0ZWQKKyAgaW5jbHVkZSBmaWxlcyB3aGVuIGJ1aWxkaW5nIG91dHNpZGUgdGhlIHNvdXJjZSB0cmVlLgogCi0tIElzc3VlICMyODY2NjogTm93IHRlc3Quc3VwcG9ydC5ybXRyZWUgaXMgYWJsZSB0byByZW1vdmUgdW53cml0YWJsZSBvcgotICB1bnJlYWRhYmxlIGRpcmVjdG9yaWVzLgorLSBJc3N1ZSAjMjc0NDI6IEV4cG9zZSB0aGUgQW5kcm9pZCBBUEkgbGV2ZWwgdGhhdCBweXRob24gd2FzIGJ1aWx0IGFnYWluc3QsIGluCisgIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcnMoKSBhcyAnQU5EUk9JRF9BUElfTEVWRUwnLgogCi0tIElzc3VlICMyMzgzOTogVmFyaW91cyBjYWNoZXMgbm93IGFyZSBjbGVhcmVkIGJlZm9yZSBydW5uaW5nIGV2ZXJ5IHRlc3QgZmlsZS4KKy0gSXNzdWUgIzI3NDM0OiBUaGUgaW50ZXJwcmV0ZXIgdGhhdCBydW5zIHRoZSBjcm9zcy1idWlsZCwgZm91bmQgaW4gUEFUSCwgbXVzdAorICBub3cgYmUgb2YgdGhlIHNhbWUgZmVhdHVyZSB2ZXJzaW9uIChlLmcuIDMuNikgYXMgdGhlIHNvdXJjZSBiZWluZyBidWlsdC4KIAotLSBJc3N1ZSAjMjg0MDk6IHJlZ3J0ZXN0OiBmaXggdGhlIHBhcnNlciBvZiBjb21tYW5kIGxpbmUgYXJndW1lbnRzLgorLSBJc3N1ZSAjMjY5MzA6IFVwZGF0ZSBXaW5kb3dzIGJ1aWxkcyB0byB1c2UgT3BlblNTTCAxLjAuMmguCiAKLS0gSXNzdWUgIzI3Nzg3OiBDYWxsIGdjLmNvbGxlY3QoKSBiZWZvcmUgY2hlY2tpbmcgZWFjaCB0ZXN0IGZvciAiZGFuZ2xpbmcKLSAgdGhyZWFkcyIsIHNpbmNlIHRoZSBkYW5nbGluZyB0aHJlYWRzIGFyZSB3ZWFrIHJlZmVyZW5jZXMuCistIElzc3VlICMyMzk2ODogUmVuYW1lIHRoZSBwbGF0Zm9ybSBkaXJlY3RvcnkgZnJvbSBwbGF0LSQoTUFDSERFUCkgdG8KKyAgcGxhdC0kKFBMQVRGT1JNX1RSSVBMRVQpLgorICBSZW5hbWUgdGhlIGNvbmZpZyBkaXJlY3RvcnkgKExJQlBMKSBmcm9tIGNvbmZpZy0kKExEVkVSU0lPTikgdG8KKyAgY29uZmlnLSQoTERWRVJTSU9OKS0kKFBMQVRGT1JNX1RSSVBMRVQpLgorICBJbnN0YWxsIHRoZSBwbGF0Zm9ybSBzcGVjaWZjIF9zeXNjb25maWdkYXRhIG1vZHVsZSBpbnRvIHRoZSBwbGF0Zm9ybQorICBkaXJlY3RvcnkgYW5kIHJlbmFtZSBpdCB0byBpbmNsdWRlIHRoZSBBQklGTEFHUy4KIAotLSBJc3N1ZSAjMjczNjk6IEluIHRlc3RfcHlleHBhdCwgYXZvaWQgdGVzdGluZyBhbiBlcnJvciBtZXNzYWdlIGRldGFpbCB0aGF0Ci0gIGNoYW5nZWQgaW4gRXhwYXQgMi4yLjAuCistIERvbid0IHVzZSBsYXJnZWZpbGUgc3VwcG9ydCBmb3IgR05VL0h1cmQuCiAKIFRvb2xzL0RlbW9zCiAtLS0tLS0tLS0tLQogCi0tIElzc3VlICMyNzk1MjogR2V0IFRvb2xzL3NjcmlwdHMvZml4Y2lkLnB5IHdvcmtpbmcgd2l0aCBQeXRob24gMyBhbmQgdGhlCi0gIGN1cnJlbnQgInJlIiBtb2R1bGUsIGF2b2lkIGludmFsaWQgUHl0aG9uIGJhY2tzbGFzaCBlc2NhcGVzLCBhbmQgZml4IGEgYnVnCi0gIHBhcnNpbmcgZXNjYXBlZCBDIHF1b3RlIHNpZ25zLgotCiAtIElzc3VlICMyNzMzMjogRml4ZWQgdGhlIHR5cGUgb2YgdGhlIGZpcnN0IGFyZ3VtZW50IG9mIG1vZHVsZS1sZXZlbCBmdW5jdGlvbnMKICAgZ2VuZXJhdGVkIGJ5IEFyZ3VtZW50IENsaW5pYy4gIFBhdGNoIGJ5IFBldHIgVmlrdG9yaW4uCiAKIC0gSXNzdWUgIzI3NDE4OiBGaXhlZCBUb29scy9pbXBvcnRiZW5jaC9pbXBvcnRiZW5jaC5weS4KIAotV2luZG93cwotLS0tLS0tLQorRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLQogCi0tIElzc3VlICMyODI1MTogSW1wcm92ZW1lbnRzIHRvIGhlbHAgbWFudWFscyBvbiBXaW5kb3dzLgorLSBJc3N1ZSAjMTk0ODk6IE1vdmVkIHRoZSBzZWFyY2ggYm94IGZyb20gdGhlIHNpZGViYXIgdG8gdGhlIGhlYWRlciBhbmQgZm9vdGVyCisgIG9mIGVhY2ggcGFnZS4gIFBhdGNoIGJ5IEFtbWFyIEFza2FyLgogCi0tIElzc3VlICMyODExMDogbGF1bmNoZXIubXNpIGhhcyBkaWZmZXJlbnQgcHJvZHVjdCBjb2RlcyBiZXR3ZWVuIDMyLWJpdCBhbmQKLSAgNjQtYml0Ci0KLS0gSXNzdWUgIzI1MTQ0OiBFbnN1cmVzIFRhcmdldERpciBpcyBzZXQgYmVmb3JlIGNvbnRpbnVpbmcgd2l0aCBjdXN0b20KLSAgaW5zdGFsbC4KLQotLSBJc3N1ZSAjMjc0Njk6IEFkZHMgYSBzaGVsbCBleHRlbnNpb24gdG8gdGhlIGxhdW5jaGVyIHNvIHRoYXQgZHJhZyBhbmQgZHJvcAotICB3b3JrcyBjb3JyZWN0bHkuCi0KLS0gSXNzdWUgIzI3MzA5OiBFbmFibGVkIHByb3BlciBXaW5kb3dzIHN0eWxlcyBpbiBweXRob25bd10uZXhlIG1hbmlmZXN0LgotCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjMTA2NTY6IEZpeCBvdXQtb2YtdHJlZSBidWlsZGluZyBvbiBBSVguICBQYXRjaCBieSBUcmlzdGFuIENhcmVsIGFuZAotICBNaWNoYWVsIEhhdWJlbndhbGxuZXIuCi0KLS0gSXNzdWUgIzI2MzU5OiBSZW5hbWUgLS13aXRoLW9wdGltaWF0aW9ucyB0byAtLWVuYWJsZS1vcHRpbWl6YXRpb25zLgotCi0tIElzc3VlICMyODQ0NDogRml4IG1pc3NpbmcgZXh0ZW5zaW9ucyBtb2R1bGVzIHdoZW4gY3Jvc3MgY29tcGlsaW5nLgotCi0tIElzc3VlICMyODI0ODogVXBkYXRlIFdpbmRvd3MgYnVpbGQgYW5kIE9TIFggaW5zdGFsbGVycyB0byB1c2UgT3BlblNTTCAxLjAuMmouCi0KLS0gSXNzdWUgIzI4MjU4OiBGaXhlZCBidWlsZCB3aXRoIEVzdG9uaWFuIGxvY2FsZSAocHl0aG9uLWNvbmZpZyBhbmQgZGlzdGNsZWFuCi0gIHRhcmdldHMgaW4gTWFrZWZpbGUpLiAgUGF0Y2ggYnkgQXJmcmV2ZXIgRnJlaHRlcyBUYWlmZXJzYXIgQXJhaGVzaXMuCi0KLS0gSXNzdWUgIzI2NjYxOiBzZXR1cC5weSBub3cgZGV0ZWN0cyBzeXN0ZW0gbGliZmZpIHdpdGggbXVsdGlhcmNoIHdyYXBwZXIuCi0KLS0gSXNzdWUgIzI4MDY2OiBGaXggdGhlIGxvZ2ljIHRoYXQgc2VhcmNoZXMgYnVpbGQgZGlyZWN0b3JpZXMgZm9yIGdlbmVyYXRlZAotICBpbmNsdWRlIGZpbGVzIHdoZW4gYnVpbGRpbmcgb3V0c2lkZSB0aGUgc291cmNlIHRyZWUuCi0KLS0gSXNzdWUgIzE1ODE5OiBSZW1vdmUgcmVkdW5kYW50IGluY2x1ZGUgc2VhcmNoIGRpcmVjdG9yeSBvcHRpb24gZm9yIGJ1aWxkaW5nCi0gIG91dHNpZGUgdGhlIHNvdXJjZSB0cmVlLgotCi0tIElzc3VlICMyNzU2NjogRml4IGNsZWFuIHRhcmdldCBpbiBmcmVlemUgbWFrZWZpbGUgKHBhdGNoIGJ5IExpc2EgUm9hY2gpCi0KLS0gSXNzdWUgIzI3NzA1OiBVcGRhdGUgbWVzc2FnZSBpbiB2YWxpZGF0ZV91Y3J0YmFzZS5weQotCi0tIElzc3VlICMyNzk4MzogQ2F1c2UgbGFjayBvZiBsbHZtLXByb2ZkYXRhIHRvb2wgd2hlbiB1c2luZyBjbGFuZyBhcwotICByZXF1aXJlZCBmb3IgUEdPIGxpbmtpbmcgdG8gYmUgYSBjb25maWd1cmUgdGltZSBlcnJvciByYXRoZXIgdGhhbgotICBtYWtlIHRpbWUgd2hlbiAtLXdpdGgtb3B0aW1pemF0aW9ucyBpcyBlbmFibGVkLiAgQWxzbyBpbXByb3ZlIG91cgotICBhYmlsaXR5IHRvIGZpbmQgdGhlIGxsdm0tcHJvZmRhdGEgdG9vbCBvbiBNYWNPUyBhbmQgc29tZSBMaW51eGVzLgotCi0tIElzc3VlICMyNjMwNzogVGhlIHByb2ZpbGUtb3B0IGJ1aWxkIG5vdyBhcHBsaWVzIFBHTyB0byB0aGUgYnVpbHQtaW4gbW9kdWxlcy4KLQotLSBJc3N1ZSAjMjYzNTk6IEFkZCB0aGUgLS13aXRoLW9wdGltaXphdGlvbnMgY29uZmlndXJlIGZsYWcuCi0KLS0gSXNzdWUgIzI3NzEzOiBTdXBwcmVzcyBzcHVyaW91cyBidWlsZCB3YXJuaW5ncyB3aGVuIHVwZGF0aW5nIGltcG9ydGxpYidzCi0gIGJvb3RzdHJhcCBmaWxlcy4gIFBhdGNoIGJ5IFhpYW5nIFpoYW5nCi0KLS0gSXNzdWUgIzI1ODI1OiBDb3JyZWN0IHRoZSByZWZlcmVuY2VzIHRvIE1vZHVsZXMvcHl0aG9uLmV4cCBhbmQgbGRfc29fYWl4LAotICB3aGljaCBhcmUgcmVxdWlyZWQgb24gQUlYLiAgVGhpcyB1cGRhdGVzIHJlZmVyZW5jZXMgdG8gYW4gaW5zdGFsbGF0aW9uIHBhdGgKLSAgdGhhdCB3YXMgY2hhbmdlZCBpbiAzLjJhNCwgYW5kIHVuZG9lcyBjaGFuZ2VkIHJlZmVyZW5jZXMgdG8gdGhlIGJ1aWxkIHRyZWUKLSAgdGhhdCB3ZXJlIG1hZGUgaW4gMy41LjBhMS4KLQotLSBJc3N1ZSAjMjc0NTM6IENQUCBpbnZvY2F0aW9uIGluIGNvbmZpZ3VyZSBtdXN0IHVzZSBDUFBGTEFHUy4gUGF0Y2ggYnkKLSAgQ2hpIEhzdWFuIFllbi4KLQotLSBJc3N1ZSAjMjc2NDE6IFRoZSBjb25maWd1cmUgc2NyaXB0IG5vdyBpbnNlcnRzIGNvbW1lbnRzIGludG8gdGhlIG1ha2VmaWxlCi0gIHRvIHByZXZlbnQgdGhlIHBnZW4gYW5kIF9mcmVlemVfaW1wb3J0bGliIGV4ZWN1dGFibGVzIGZyb20gYmVpbmcgY3Jvc3MtCi0gIGNvbXBpbGVkLgotCi0tIElzc3VlICMyNjY2MjogU2V0IFBZVEhPTl9GT1JfR0VOIGluIGNvbmZpZ3VyZSBhcyB0aGUgUHl0aG9uIHByb2dyYW0gdG8gYmUKLSAgdXNlZCBmb3IgZmlsZSBnZW5lcmF0aW9uIGR1cmluZyB0aGUgYnVpbGQuCi0KLS0gSXNzdWUgIzEwOTEwOiBBdm9pZCBDKysgY29tcGlsYXRpb24gZXJyb3JzIG9uIEZyZWVCU0QgYW5kIE9TIFguCi0gIEFsc28gdXBkYXRlIEZyZWVkQlNEIHZlcnNpb24gY2hlY2tzIGZvciB0aGUgb3JpZ2luYWwgY3R5cGUgVVRGLTggd29ya2Fyb3VuZC4KLQotLSBJc3N1ZSAjMjg2NzY6IFByZXZlbnQgbWlzc2luZyAnZ2V0ZW50cm9weScgZGVjbGFyYXRpb24gd2FybmluZyBvbiBtYWNPUy4KLSAgUGF0Y2ggYnkgR2FyZXRoIFJlZXMuCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy41LjI/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotUmVsZWFzZSBkYXRlOiAyMDE2LTA2LTI2Ci0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMyNjkzMDogVXBkYXRlIFdpbmRvd3MgYnVpbGRzIHRvIHVzZSBPcGVuU1NMIDEuMC4yaC4KKy0gSXNzdWUgIzI3Mjg1OiBVcGRhdGUgZG9jdW1lbnRhdGlvbiB0byByZWZsZWN0IHRoZSBkZXByZWNhdGlvbiBvZiBgYHB5dmVudmBgCisgIGFuZCBub3JtYWxpemUgb24gdGhlIHRlcm0gInZpcnR1YWwgZW52aXJvbm1lbnQiLiBQYXRjaCBieSBTdGV2ZSBQaWVyY3kuCiAKIFRlc3RzCiAtLS0tLQogCi0tIElzc3VlICMyNjg2NzogVWJ1bnR1J3Mgb3BlbnNzbCBPUF9OT19TU0x2MyBpcyBmb3JjZWQgb24gYnkgZGVmYXVsdDsgZml4IHRlc3QuCi0KLUlETEUKLS0tLS0KLQotLSBJc3N1ZSAjMjczNjU6IEFsbG93IG5vbi1hc2NpaSBpbiBpZGxlbGliL05FV1MudHh0IC0gbWluaW1hbCBwYXJ0IGZvciAzLjUuMi4KKy0gSXNzdWUgIzI3MDI3OiBBZGRlZCB0ZXN0LnN1cHBvcnQuaXNfYW5kcm9pZCB0aGF0IGlzIFRydWUgd2hlbiB0aGlzIGlzIGFuCisgIEFuZHJvaWQgYnVpbGQuCiAKIAotV2hhdCdzIE5ldyBpbiBQeXRob24gMy41LjIgcmVsZWFzZSBjYW5kaWRhdGUgMT8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjYuMCBhbHBoYSAyCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLVJlbGVhc2UgZGF0ZTogMjAxNi0wNi0xMgorKlJlbGVhc2UgZGF0ZTogMjAxNi0wNi0xMyoKIAogQ29yZSBhbmQgQnVpbHRpbnMKIC0tLS0tLS0tLS0tLS0tLS0tCiAKKy0gSXNzdWUgIzI3MDk1OiBTaW1wbGlmaWVkIE1BS0VfRlVOQ1RJT04gYW5kIHJlbW92ZWQgTUFLRV9DTE9TVVJFIG9wY29kZXMuCisgIFBhdGNoIGJ5IERlbXVyIFJ1bWVkLgorCistIElzc3VlICMyNzE5MDogUmFpc2UgTm90U3VwcG9ydGVkRXJyb3IgaWYgc3FsaXRlMyBpcyBvbGRlciB0aGFuIDMuMy4xLgorICBQYXRjaCBieSBEYXZlIFNhd3llci4KKworLSBJc3N1ZSAjMjcyODY6IEZpeGVkIGNvbXBpbGluZyBCVUlMRF9NQVBfVU5QQUNLX1dJVEhfQ0FMTCBvcGNvZGUuICBDYWxsaW5nCisgIGZ1bmN0aW9uIHdpdGggZ2VuZXJhbGl6ZWQgdW5wYWNraW5nIChQRVAgNDQ4KSBhbmQgY29uZmxpY3Rpbmcga2V5d29yZCBuYW1lcworICBjb3VsZCBjYXVzZSB1bmRlZmluZWQgYmVoYXZpb3IuCisKKy0gSXNzdWUgIzI3MTQwOiBBZGRlZCBCVUlMRF9DT05TVF9LRVlfTUFQIG9wY29kZS4KKworLSBJc3N1ZSAjMjcxODY6IEFkZCBzdXBwb3J0IGZvciBvcy5QYXRoTGlrZSBvYmplY3RzIHRvIG9wZW4oKSAocGFydCBvZiBQRVAgNTE5KS4KKwogLSBJc3N1ZSAjMjcwNjY6IEZpeGVkIFN5c3RlbUVycm9yIGlmIGEgY3VzdG9tIG9wZW5lciAoZm9yIG9wZW4oKSkgcmV0dXJucyBhCiAgIG5lZ2F0aXZlIG51bWJlciB3aXRob3V0IHNldHRpbmcgYW4gZXhjZXB0aW9uLgogCistIElzc3VlICMyNjk4MzogZmxvYXQoKSBub3cgYWx3YXlzIHJldHVybiBhbiBpbnN0YW5jZSBvZiBleGFjdCBmbG9hdC4KKyAgVGhlIGRlcHJlY2F0aW9uIHdhcm5pbmcgaXMgZW1pdHRlZCBpZiBfX2Zsb2F0X18gcmV0dXJucyBhbiBpbnN0YW5jZSBvZgorICBhIHN0cmljdCBzdWJjbGFzcyBvZiBmbG9hdC4gIEluIGEgZnV0dXJlIHZlcnNpb25zIG9mIFB5dGhvbiB0aGlzIGNhbgorICBiZSBhbiBlcnJvci4KKworLSBJc3N1ZSAjMjcwOTc6IFB5dGhvbiBpbnRlcnByZXRlciBpcyBub3cgYWJvdXQgNyUgZmFzdGVyIGR1ZSB0byBvcHRpbWl6ZWQKKyAgaW5zdHJ1Y3Rpb24gZGVjb2RpbmcuICBCYXNlZCBvbiBwYXRjaCBieSBEZW11ciBSdW1lZC4KKworLSBJc3N1ZSAjMjY2NDc6IFB5dGhvbiBpbnRlcnByZXRlciBub3cgdXNlcyAxNi1iaXQgd29yZGNvZGUgaW5zdGVhZCBvZiBieXRlY29kZS4KKyAgUGF0Y2ggYnkgRGVtdXIgUnVtZWQuCisKKy0gSXNzdWUgIzIzMjc1OiBBbGxvdyBhc3NpZ25pbmcgdG8gYW4gZW1wdHkgdGFyZ2V0IGxpc3QgaW4gcm91bmQgYnJhY2tldHM6CisgICgpID0gaXRlcmFibGUuCisKKy0gSXNzdWUgIzI3MjQzOiBVcGRhdGUgdGhlIF9fYWl0ZXJfXyBwcm90b2NvbDogaW5zdGVhZCBvZiByZXR1cm5pbmcKKyAgYW4gYXdhaXRhYmxlIHRoYXQgcmVzb2x2ZXMgdG8gYW4gYXN5bmNocm9ub3VzIGl0ZXJhdG9yLCB0aGUgYXN5bmNocm9ub3VzCisgIGl0ZXJhdG9yIHNob3VsZCBiZSByZXR1cm5lZCBkaXJlY3RseS4gIERvaW5nIHRoZSBmb3JtZXIgd2lsbCB0cmlnZ2VyIGEKKyAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZy4KKworCitMaWJyYXJ5CistLS0tLS0tCisKKy0gQ29tbWVudCBvdXQgc29ja2V0IChTT19SRVVTRVBPUlQpIGFuZCBwb3NpeCAoT19TSExPQ0ssIE9fRVhMT0NLKSBjb25zdGFudHMKKyAgZXhwb3NlZCBvbiB0aGUgQVBJIHdoaWNoIGFyZSBub3QgaW1wbGVtZW50ZWQgb24gR05VL0h1cmQuIFRoZXkgd291bGQgbm90CisgIHdvcmsgYXQgcnVudGltZSBhbnl3YXkuCisKKy0gSXNzdWUgIzI3MDI1OiBHZW5lcmF0ZWQgbmFtZXMgZm9yIFRraW50ZXIgd2lkZ2V0cyBhcmUgbm93IG1vcmUgbWVhbmZ1bAorICBhbmQgcmVjb2duaXppcmFibGUuCisKKy0gSXNzdWUgIzI1NDU1OiBGaXhlZCBjcmFzaGVzIGluIHJlcHIgb2YgcmVjdXJzaXZlIEVsZW1lbnRUcmVlLkVsZW1lbnQgYW5kCisgIGZ1bmN0b29scy5wYXJ0aWFsIG9iamVjdHMuCisKKy0gSXNzdWUgIzI3Mjk0OiBJbXByb3ZlZCByZXByIGZvciBUa2ludGVyIGV2ZW50IG9iamVjdHMuCisKKy0gSXNzdWUgIzIwNTA4OiBJbXByb3ZlIGV4Y2VwdGlvbiBtZXNzYWdlIG9mIElQdns0LDZ9TmV0d29yay5fX2dldGl0ZW1fXy4KKyAgUGF0Y2ggYnkgR2FyZXRoIFJlZXMuCisKKy0gW1NlY3VyaXR5XSBJc3N1ZSAjMjY1NTY6IFVwZGF0ZSBleHBhdCB0byAyLjEuMSwgZml4ZXMgQ1ZFLTIwMTUtMTI4My4KKworLSBbU2VjdXJpdHldIEZpeCBUTFMgc3RyaXBwaW5nIHZ1bG5lcmFiaWxpdHkgaW4gc210cGxpYiwgQ1ZFLTIwMTYtMDc3Mi4KKyAgUmVwb3J0ZWQgYnkgVGVhbSBPc3RzdHJvbS4KKworLSBJc3N1ZSAjMjEzODY6IEltcGxlbWVudCBtaXNzaW5nIElQdjRBZGRyZXNzLmlzX2dsb2JhbCBwcm9wZXJ0eS4gIEl0IHdhcworICBkb2N1bWVudGVkIHNpbmNlIDA3YTU2MTBiYWU5ZC4gIEluaXRpYWwgcGF0Y2ggYnkgUm9nZXIgTHVldGhpLgorCistIElzc3VlICMyNzAyOTogUmVtb3ZlZCBkZXByZWNhdGVkIHN1cHBvcnQgb2YgdW5pdmVyc2FsIG5ld2xpbmVzIG1vZGUgZnJvbQorICBaaXBGaWxlLm9wZW4oKS4KKworLSBJc3N1ZSAjMjcwMzA6IFVua25vd24gZXNjYXBlcyBjb25zaXN0aW5nIG9mIGBgJ1wnYGAgYW5kIGFuIEFTQ0lJIGxldHRlciBpbgorICByZWd1bGFyIGV4cHJlc3Npb25zIG5vdyBhcmUgZXJyb3JzLiAgVGhlIHJlLkxPQ0FMRSBmbGFnIG5vdyBjYW4gYmUgdXNlZAorICBvbmx5IHdpdGggYnl0ZXMgcGF0dGVybnMuCisKKy0gSXNzdWUgIzI3MTg2OiBBZGQgb3MuUGF0aExpa2Ugc3VwcG9ydCB0byBEaXJFbnRyeSAocGFydCBvZiBQRVAgNTE5KS4KKyAgSW5pdGlhbCBwYXRjaCBieSBKZWxsZSBaaWpsc3RyYS4KKworLSBJc3N1ZSAjMjA5MDA6IGRpc3R1dGlscyByZWdpc3RlciBjb21tYW5kIG5vdyBkZWNvZGVzIEhUVFAgcmVzcG9uc2VzCisgIGNvcnJlY3RseS4gIEluaXRpYWwgcGF0Y2ggYnkgaW5ncmlkLgorCistIElzc3VlICMyNzE4NjogQWRkIG9zLlBhdGhMaWtlIHN1cHBvcnQgdG8gcGF0aGxpYiwgcmVtb3ZpbmcgaXRzIHByb3Zpc2lvbmFsCisgIHN0YXR1cyAocGFydCBvZiBQRVAgNTE5KS4gSW5pdGlhbCBwYXRjaCBieSBEdXN0eSBQaGlsbGlwcy4KKworLSBJc3N1ZSAjMjcxODY6IEFkZCBzdXBwb3J0IGZvciBvcy5QYXRoTGlrZSBvYmplY3RzIHRvIG9zLmZzZW5jb2RlKCkgYW5kCisgIG9zLmZzZGVjb2RlKCkgKHBhcnQgb2YgUEVQIDUxOSkuCisKKy0gSXNzdWUgIzI3MTg2OiBJbnRyb2R1Y2Ugb3MuUGF0aExpa2UgYW5kIG9zLmZzcGF0aCgpIChwYXJ0IG9mIFBFUCA1MTkpLgorCistIEEgbmV3IHZlcnNpb24gb2YgdHlwaW5nLnB5IHByb3ZpZGVzIHNldmVyYWwgbmV3IGNsYXNzZXMgYW5kCisgIGZlYXR1cmVzOiBAb3ZlcmxvYWQgb3V0c2lkZSBzdHVicywgUmV2ZXJzaWJsZSwgRGVmYXVsdERpY3QsIFRleHQsCisgIENvbnRleHRNYW5hZ2VyLCBUeXBlW10sIE5ld1R5cGUoKSwgVFlQRV9DSEVDS0lORywgYW5kIG51bWVyb3VzIGJ1ZworICBmaXhlcyAobm90ZSB0aGF0IHNvbWUgb2YgdGhlIG5ldyBmZWF0dXJlcyBhcmUgbm90IHlldCBpbXBsZW1lbnRlZCBpbgorICBteXB5IG9yIG90aGVyIHN0YXRpYyBhbmFseXplcnMpLiAgQWxzbyBjbGFzc2VzIGZvciBQRVAgNDkyCisgIChBd2FpdGFibGUsIEFzeW5jSXRlcmFibGUsIEFzeW5jSXRlcmF0b3IpIGhhdmUgYmVlbiBhZGRlZCAoaW4gZmFjdAorICB0aGV5IG1hZGUgaXQgaW50byAzLjUuMSBidXQgd2VyZSBuZXZlciBtZW50aW9uZWQpLgorCistIElzc3VlICMyNTczODogU3RvcCBodHRwLnNlcnZlci5CYXNlSFRUUFJlcXVlc3RIYW5kbGVyLnNlbmRfZXJyb3IoKSBmcm9tCisgIHNlbmRpbmcgYSBtZXNzYWdlIGJvZHkgZm9yIDIwNSBSZXNldCBDb250ZW50LiAgQWxzbywgZG9uJ3Qgc2VuZCBDb250ZW50CisgIGhlYWRlciBmaWVsZHMgaW4gcmVzcG9uc2VzIHRoYXQgZG9uJ3QgaGF2ZSBhIGJvZHkuICBQYXRjaCBieSBTdXN1bXUKKyAgS29zaGliYS4KKworLSBJc3N1ZSAjMjEzMTM6IEZpeCB0aGUgInBsYXRmb3JtIiBtb2R1bGUgdG8gdG9sZXJhdGUgd2hlbiBzeXMudmVyc2lvbgorICBjb250YWlucyB0cnVuY2F0ZWQgYnVpbGQgaW5mb3JtYXRpb24uCisKKy0gW1NlY3VyaXR5XSBJc3N1ZSAjMjY4Mzk6IE9uIExpbnV4LCA6ZnVuYzpgb3MudXJhbmRvbWAgbm93IGNhbGxzCisgIGBgZ2V0cmFuZG9tKClgYCB3aXRoIGBgR1JORF9OT05CTE9DS2BgIHRvIGZhbGwgYmFjayBvbiByZWFkaW5nCisgIGBgL2Rldi91cmFuZG9tYGAgaWYgdGhlIHVyYW5kb20gZW50cm9weSBwb29sIGlzIG5vdCBpbml0aWFsaXplZCB5ZXQuIFBhdGNoCisgIHdyaXR0ZW4gYnkgQ29sbSBCdWNrbGV5LgorCistIElzc3VlICMyMzg4MzogQWRkZWQgbWlzc2luZyBBUElzIHRvIF9fYWxsX18gdG8gbWF0Y2ggdGhlIGRvY3VtZW50ZWQgQVBJcworICBmb3IgdGhlIGZvbGxvd2luZyBtb2R1bGVzOiBjZ2ksIG1haWxib3gsIG1pbWV0eXBlcywgcGxpc3RsaWIgYW5kIHNtdHBkLgorICBQYXRjaGVzIGJ5IEphY2VrIEtvxYJvZHppZWouCisKKy0gSXNzdWUgIzI3MTY0OiBJbiB0aGUgemxpYiBtb2R1bGUsIGFsbG93IGRlY29tcHJlc3NpbmcgcmF3IERlZmxhdGUgc3RyZWFtcworICB3aXRoIGEgcHJlZGVmaW5lZCB6ZGljdC4gIEJhc2VkIG9uIHBhdGNoIGJ5IFhpYW5nIFpoYW5nLgorCistIElzc3VlICMyNDI5MTogRml4IHdzZ2lyZWYuc2ltcGxlX3NlcnZlci5XU0dJUmVxdWVzdEhhbmRsZXIgdG8gY29tcGxldGVseQorICB3cml0ZSBkYXRhIHRvIHRoZSBjbGllbnQuICBQcmV2aW91c2x5IGl0IGNvdWxkIGRvIHBhcnRpYWwgd3JpdGVzIGFuZAorICB0cnVuY2F0ZSBkYXRhLiAgQWxzbywgd3NnaXJlZi5oYW5kbGVyLlNlcnZlckhhbmRsZXIgY2FuIG5vdyBoYW5kbGUgc3Rkb3V0CisgIGRvaW5nIHBhcnRpYWwgd3JpdGVzLCBidXQgdGhpcyBpcyBkZXByZWNhdGVkLgorCistIElzc3VlICMyMTI3MjogVXNlIF9zeXNjb25maWdkYXRhLnB5IHRvIGluaXRpYWxpemUgZGlzdHV0aWxzLnN5c2NvbmZpZy4KKworLSBJc3N1ZSAjMTk2MTE6IDptb2Q6YGluc3BlY3RgIG5vdyByZXBvcnRzIHRoZSBpbXBsaWNpdCBgYC4wYGAgcGFyYW1ldGVycworICBnZW5lcmF0ZWQgYnkgdGhlIGNvbXBpbGVyIGZvciBjb21wcmVoZW5zaW9uIGFuZCBnZW5lcmF0b3IgZXhwcmVzc2lvbiBzY29wZXMKKyAgYXMgaWYgdGhleSB3ZXJlIHBvc2l0aW9uYWwtb25seSBwYXJhbWV0ZXJzIGNhbGxlZCBgYGltcGxpY2l0MGBgLgorICBQYXRjaCBieSBKZWxsZSBaaWpsc3RyYS4KKworLSBJc3N1ZSAjMjY4MDk6IEFkZCBgYF9fYWxsX19gYCB0byA6bW9kOmBzdHJpbmdgLiAgUGF0Y2ggYnkgRW1hbnVlbCBCYXJyeS4KKworLSBJc3N1ZSAjMjYzNzM6IHN1YnByb2Nlc3MuUG9wZW4uY29tbXVuaWNhdGUgbm93IGNvcnJlY3RseSBpZ25vcmVzCisgIEJyb2tlblBpcGVFcnJvciB3aGVuIHRoZSBjaGlsZCBwcm9jZXNzIGRpZXMgYmVmb3JlIC5jb21tdW5pY2F0ZSgpCisgIGlzIGNhbGxlZCBpbiBtb3JlL2FsbCBjaXJjdW1zdGFuY2VzLgorCistIHNpZ25hbCwgc29ja2V0LCBhbmQgc3NsIG1vZHVsZSBJbnRFbnVtIGNvbnN0YW50IG5hbWUgbG9va3VwcyBub3cgcmV0dXJuIGEKKyAgY29uc2lzdGVudCBuYW1lIGZvciB2YWx1ZXMgaGF2aW5nIG11bHRpcGxlIG5hbWVzLiAgRXg6IHNpZ25hbC5TaWduYWxzKDYpCisgIG5vdyByZWZlcnMgdG8gaXRzZWxmIGFzIHNpZ25hbC5TSUdBTFJNIHJhdGhlciB0aGFuIGZsaXBwaW5nIGJldHdlZW4gdGhhdAorICBhbmQgc2lnbmFsLlNJR0lPVCBiYXNlZCBvbiB0aGUgaW50ZXJwcmV0ZXIncyBoYXNoIHJhbmRvbWl6YXRpb24gc2VlZC4KKworLSBJc3N1ZSAjMjcxNjc6IENsYXJpZnkgdGhlIHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGVycm9yIG1lc3NhZ2UgdGV4dAorICB3aGVuIHRoZSBjaGlsZCBwcm9jZXNzIGRpZWQgZHVlIHRvIGEgc2lnbmFsLgorCistIElzc3VlICMyNTkzMTogRG9uJ3QgZGVmaW5lIHNvY2tldHNlcnZlci5Gb3JraW5nKiBuYW1lcyBvbiBwbGF0Zm9ybXMgc3VjaAorICBhcyBXaW5kb3dzIHRoYXQgZG8gbm90IHN1cHBvcnQgb3MuZm9yaygpLgorCistIElzc3VlICMyMTc3NjogZGlzdHV0aWxzLnVwbG9hZCBub3cgY29ycmVjdGx5IGhhbmRsZXMgSFRUUEVycm9yLgorICBJbml0aWFsIHBhdGNoIGJ5IENsYXVkaXUgUG9wYS4KKworLSBJc3N1ZSAjMjY1MjY6IFJlcGxhY2UgY3VzdG9tIHBhcnNlIHRyZWUgdmFsaWRhdGlvbiBpbiB0aGUgcGFyc2VyCisgIG1vZHVsZSB3aXRoIGEgc2ltcGxlIERGQSB2YWxpZGF0b3IuCisKKy0gSXNzdWUgIzI3MTE0OiBGaXggU1NMQ29udGV4dC5fbG9hZF93aW5kb3dzX3N0b3JlX2NlcnRzIGZhaWxzIHdpdGgKKyAgUGVybWlzc2lvbkVycm9yCisKKy0gSXNzdWUgIzE4MzgzOiBBdm9pZCBjcmVhdGluZyBkdXBsaWNhdGUgZmlsdGVycyB3aGVuIHVzaW5nIGZpbHRlcndhcm5pbmdzCisgIGFuZCBzaW1wbGVmaWx0ZXIuICBCYXNlZCBvbiBwYXRjaCBieSBBbGV4IFNoa29wLgorCistIElzc3VlICMyMzAyNjogd2lucmVnLlF1ZXJ5VmFsdWVFeCgpIG5vdyByZXR1cm4gYW4gaW50ZWdlciBmb3IgUkVHX1FXT1JEIHR5cGUuCisKKy0gSXNzdWUgIzI2NzQxOiBzdWJwcm9jZXNzLlBvcGVuIGRlc3RydWN0b3Igbm93IGVtaXRzIGEgUmVzb3VyY2VXYXJuaW5nIHdhcm5pbmcKKyAgaWYgdGhlIGNoaWxkIHByb2Nlc3MgaXMgc3RpbGwgcnVubmluZy4KKworLSBJc3N1ZSAjMjcwNTY6IE9wdGltaXplIHBpY2tsZS5sb2FkKCkgYW5kIHBpY2tsZS5sb2FkcygpLCB1cCB0byAxMCUgZmFzdGVyCisgIHRvIGRlc2VyaWFsaXplIGEgbG90IG9mIHNtYWxsIG9iamVjdHMuCisKKy0gSXNzdWUgIzIxMjcxOiBOZXcga2V5d29yZCBvbmx5IHBhcmFtZXRlcnMgaW4gcmVzZXRfbW9jayBjYWxsLgorCitJRExFCistLS0tCisKKy0gSXNzdWUgIzUxMjQ6IFBhc3RlIHdpdGggdGV4dCBzZWxlY3RlZCBub3cgcmVwbGFjZXMgdGhlIHNlbGVjdGlvbiBvbiBYMTEuCisgIFRoaXMgbWF0Y2hlcyBob3cgcGFzdGUgd29ya3Mgb24gV2luZG93cywgTWFjLCBtb3N0IG1vZGVybiBMaW51eCBhcHBzLAorICBhbmQgdHRrIHdpZGdldHMuICBPcmlnaW5hbCBwYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMyNDc1MDogU3dpdGNoIGFsbCBzY3JvbGxiYXJzIGluIElETEUgdG8gdHRrIHZlcnNpb25zLgorICBXaGVyZSBuZWVkZWQsIG1pbmltYWwgdGVzdHMgYXJlIGFkZGVkIHRvIGNvdmVyIGNoYW5nZXMuCisKKy0gSXNzdWUgIzI0NzU5OiBJRExFIHJlcXVpcmVzIHRrIDguNSBhbmQgYXZhaWxhYmlsaXR5IHR0ayB3aWRnZXRzLgorICBEZWxldGUgbm93IHVubmVlZGVkIHRrIHZlcnNpb24gdGVzdHMgYW5kIGNvZGUgZm9yIG9sZGVyIHZlcnNpb25zLgorICBBZGQgdGVzdCBmb3IgSURMRSBzeW50YXggY29sb3Jpem9lci4KKworLSBJc3N1ZSAjMjcyMzk6IGlkbGVsaWIubWFjb3N4LmlzWHl6VGsgZnVuY3Rpb25zIGluaXRpYWxpemUgYXMgbmVlZGVkLgorCistIElzc3VlICMyNzI2MjogbW92ZSBBcXVhIHVuYmluZGluZyBjb2RlLCB3aGljaCBlbmFibGUgY29udGV4dCBtZW51cywgdG8gbWF4b3N4LgorCistIElzc3VlICMyNDc1OTogTWFrZSBjbGVhciBpbiBpZGxlbGliLmlkbGVfdGVzdC5fX2luaXRfXyB0aGF0IHRoZSBkaXJlY3RvcnkKKyAgaXMgYSBwcml2YXRlIGltcGxlbWVudGF0aW9uIG9mIHRlc3QudGVzdF9pZGxlIGFuZCB0b29sIGZvciBtYWludGFpbmVycy4KKworLSBJc3N1ZSAjMjcxOTY6IFN0b3AgJ1RoZW1lQ2hhbmdlZCcgd2FybmluZ3Mgd2hlbiBydW5uaW5nIElETEUgdGVzdHMuCisgIFRoZXNlIHBlcnNpc3RlZCBhZnRlciBvdGhlciB3YXJuaW5ncyB3ZXJlIHN1cHByZXNzZWQgaW4gIzIwNTY3LgorICBBcHBseSBTZXJoaXkgU3RvcmNoYWthJ3MgdXBkYXRlX2lkbGV0YXNrcyBzb2x1dGlvbiB0byBmb3VyIHRlc3QgZmlsZXMuCisgIFJlY29yZCB0aGlzIGFkZGl0aW9uYWwgYWR2aWNlIGluIGlkbGVfdGVzdC9SRUFETUUudHh0CisKKy0gSXNzdWUgIzIwNTY3OiBSZXZpc2UgaWRsZV90ZXN0L1JFQURNRS50eHQgd2l0aCBhZHZpY2UgYWJvdXQgYXZvaWRpbmcKKyAgdGsgd2FybmluZyBtZXNzYWdlcyBmcm9tIHRlc3RzLiAgQXBwbHkgYWR2aWNlIHRvIHNldmVyYWwgSURMRSB0ZXN0cy4KKworLSBJc3N1ZSAjMjQyMjU6IFVwZGF0ZSBpZGxlbGliL1JFQURNRS50eHQgd2l0aCBuZXcgZmlsZSBuYW1lcworICBhbmQgZXZlbnQgaGFuZGxlcnMuCisKKy0gSXNzdWUgIzI3MTU2OiBSZW1vdmUgb2Jzb2xldGUgY29kZSBub3QgdXNlZCBieSBJRExFLiAgUmVwbGFjZW1lbnRzOgorICAxLiBoZWxwLnR4dCwgcmVwbGFjZWQgYnkgaGVscC5odG1sLCBpcyBvdXQtb2YtZGF0ZSBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkLgorICBJdHMgZGVkaWNhdGVkIHZpZXdlciBoYXMgYmUgcmVwbGFjZWQgYnkgdGhlIGh0bWwgdmlld2VyIGluIGhlbHAucHkuCisgIDIuIGBgaW1wb3J0IGlkbGV2ZXI7IEkgPSBpZGxldmVyLklETEVfVkVSU0lPTmBgIGlzIHRoZSBzYW1lIGFzCisgIGBgaW1wb3J0IHN5czsgSSA9IHZlcnNpb25bOnZlcnNpb24uaW5kZXgoJyAnKV1gYAorICAzLiBBZnRlciBgYG9iID0gc3RhY2t2aWV3ZXIuVmFyaWFibGVzVHJlZUl0ZW0oKmFyZ3MpYGAsCisgIGBgb2Iua2V5cygpID09IGxpc3Qob2Iub2JqZWN0LmtleXMpYGAuCisgIDQuIEluIG1hY29zYywgcnVubmluZ0FzT1NYQVBQID09IGlzQXF1YVRrOyBpZENhcmJvbkFxdWFUayA9PSBpc0NhcmJvblRrCisKKy0gSXNzdWUgIzI3MTE3OiBNYWtlIGNvbG9yaXplciBodGVzdCBhbmQgdHVydGxlZGVtbyB3b3JrIHdpdGggZGFyayB0aGVtZXMuCisgIE1vdmUgY29kZSBmb3IgY29uZmlndXJpbmcgdGV4dCB3aWRnZXQgY29sb3JzIHRvIGEgbmV3IGZ1bmN0aW9uLgorCistIElzc3VlICMyNDIyNTogUmVuYW1lIG1hbnkgYGlkbGVsaWIvKi5weWAgYW5kIGBpZGxlX3Rlc3QvdGVzdF8qLnB5YCBmaWxlcy4KKyAgRWRpdCBmaWxlcyB0byByZXBsYWNlIG9sZCBuYW1lcyB3aXRoIG5ldyBuYW1lcyB3aGVuIHRoZSBvbGQgbmFtZQorICByZWZlcnJlZCB0byB0aGUgbW9kdWxlIHJhdGhlciB0aGFuIHRoZSBjbGFzcyBpdCBjb250YWluZWQuCisgIFNlZSB0aGUgaXNzdWUgYW5kIElETEUgc2VjdGlvbiBpbiBXaGF0J3MgTmV3IGluIDMuNiBmb3IgbW9yZS4KKworLSBJc3N1ZSAjMjY2NzM6IFdoZW4gdGsgcmVwb3J0cyBmb250IHNpemUgYXMgMCwgY2hhbmdlIHRvIHNpemUgMTAuCisgIFN1Y2ggZm9udHMgb24gTGludXggcHJldmVudGVkIHRoZSBjb25maWd1cmF0aW9uIGRpYWxvZyBmcm9tIG9wZW5pbmcuCisKKy0gSXNzdWUgIzIxOTM5OiBBZGQgdGVzdCBmb3IgSURMRSdzIHBlcmNvbGF0b3IuCisgIE9yaWdpbmFsIHBhdGNoIGJ5IFNhaW1hZGhhdiBIZWJsaWthci4KKworLSBJc3N1ZSAjMjE2NzY6IEFkZCB0ZXN0IGZvciBJRExFJ3MgcmVwbGFjZSBkaWFsb2cuCisgIE9yaWdpbmFsIHBhdGNoIGJ5IFNhaW1hZGhhdiBIZWJsaWthci4KKworLSBJc3N1ZSAjMTg0MTA6IEFkZCB0ZXN0IGZvciBJRExFJ3Mgc2VhcmNoIGRpYWxvZy4KKyAgT3JpZ2luYWwgcGF0Y2ggYnkgV2VzdGxleSBNYXJ0w61uZXouCisKKy0gSXNzdWUgIzIxNzAzOiBBZGQgdGVzdCBmb3IgdW5kbyBkZWxlZ2F0b3IuICBQYXRjaCBtb3N0bHkgYnkKKyAgU2FpbWFkaGF2IEhlYmxpa2FyIC4KKworLSBJc3N1ZSAjMjcwNDQ6IEFkZCBDb25maWdEaWFsb2cucmVtb3ZlX3Zhcl9jYWxsYmFja3MgdG8gc3RvcCBtZW1vcnkgbGVha3MuCisKKy0gSXNzdWUgIzIzOTc3OiBBZGQgbW9yZSBhc3NlcnRzIHRvIHRlc3RfZGVsZWdhdG9yLgorCitEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzE2NDg0OiBDaGFuZ2UgdGhlIGRlZmF1bHQgUFlUSE9ORE9DUyBVUkwgdG8gImh0dHBzOiIsIGFuZCBmaXggdGhlCisgIHJlc3VsdGluZyBsaW5rcyB0byB1c2UgbG93ZXJjYXNlLiAgUGF0Y2ggYnkgU2VhbiBSb2RtYW4sIHRlc3QgYnkgS2F1c2hpaworICBOYWRpa3VkaXRpLgorCistIElzc3VlICMyNDEzNjogRG9jdW1lbnQgdGhlIG5ldyBQRVAgNDQ4IHVucGFja2luZyBzeW50YXggb2YgMy41LgorCistIElzc3VlICMyMjU1ODogQWRkIHJlbWFpbmluZyBkb2MgbGlua3MgdG8gc291cmNlIGNvZGUgZm9yIFB5dGhvbi1jb2RlZCBtb2R1bGVzLgorICBQYXRjaCBieSBZb25pIExhdmkuCisKK1Rlc3RzCistLS0tLQorCistIElzc3VlICMyNTI4NTogcmVncnRlc3Qgbm93IHVzZXMgc3VicHJvY2Vzc2VzIHdoZW4gdGhlIC1qMSBjb21tYW5kIGxpbmUgb3B0aW9uCisgIGlzIHVzZWQ6IGVhY2ggdGVzdCBmaWxlIHJ1bnMgaW4gYSBmcmVzaCBjaGlsZCBwcm9jZXNzLiBCZWZvcmUsIHRoZSAtajEgb3B0aW9uCisgIHdhcyBpZ25vcmVkLgorCistIElzc3VlICMyNTI4NTogVG9vbHMvYnVpbGRib3QvdGVzdC5iYXQgc2NyaXB0IG5vdyB1c2VzIC1qMSBieSBkZWZhdWx0IHRvIHJ1bgorICBlYWNoIHRlc3QgZmlsZSBpbiBmcmVzaCBjaGlsZCBwcm9jZXNzLgorCitXaW5kb3dzCistLS0tLS0tCisKKy0gSXNzdWUgIzI3MDY0OiBUaGUgcHkuZXhlIGxhdW5jaGVyIG5vdyBkZWZhdWx0cyB0byBQeXRob24gMy4KKyAgVGhlIFdpbmRvd3MgbGF1bmNoZXIgYGBweS5leGVgYCBubyBsb25nZXIgcHJlZmVycyBhbiBpbnN0YWxsZWQKKyAgUHl0aG9uIDIgdmVyc2lvbiBvdmVyIFB5dGhvbiAzIGJ5IGRlZmF1bHQgd2hlbiB1c2VkIGludGVyYWN0aXZlbHkuCisKK0J1aWxkCistLS0tLQorCistIElzc3VlICMyNzIyOTogRml4IHRoZSBjcm9zcy1jb21waWxpbmcgcGdlbiBydWxlIGZvciBpbi10cmVlIGJ1aWxkcy4gIFBhdGNoCisgIGJ5IFhhdmllciBkZSBHYXllLgorCistIElzc3VlICMyNjkzMDogVXBkYXRlIE9TIFggMTAuNSsgMzItYml0LW9ubHkgaW5zdGFsbGVyIHRvIGJ1aWxkCisgIGFuZCBsaW5rIHdpdGggT3BlblNTTCAxLjAuMmguCisKK01pc2MKKy0tLS0KKworLSBJc3N1ZSAjMTc1MDAsIGFuZCBodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL3B5dGhvbmRvdG9yZy9pc3N1ZXMvOTQ1OiBSZW1vdmUKKyAgdW51c2VkIGFuZCBvdXRkYXRlZCBpY29ucy4KKworQyBBUEkKKy0tLS0tCisKKy0gSXNzdWUgIzI3MTg2OiBBZGQgdGhlIFB5T1NfRlNQYXRoKCkgZnVuY3Rpb24gKHBhcnQgb2YgUEVQIDUxOSkuCisKKy0gSXNzdWUgIzI2MjgyOiBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoKSBub3cgc3VwcG9ydHMgcG9zaXRpb25hbC1vbmx5CisgIHBhcmFtZXRlcnMuCisKK1Rvb2xzL0RlbW9zCistLS0tLS0tLS0tLQorCistIElzc3VlICMyNjI4MjogQXJndW1lbnQgQ2xpbmljIG5vdyBzdXBwb3J0cyBwb3NpdGlvbmFsLW9ubHkgYW5kIGtleXdvcmQKKyAgcGFyYW1ldGVycyBpbiB0aGUgc2FtZSBmdW5jdGlvbi4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjYuMCBhbHBoYSAxPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworUmVsZWFzZSBkYXRlOiAyMDE2LTA1LTE2CisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCiAtIElzc3VlICMyMDA0MTogRml4ZWQgVHlwZUVycm9yIHdoZW4gZnJhbWUuZl90cmFjZSBpcyBzZXQgdG8gTm9uZS4KICAgUGF0Y2ggYnkgWGF2aWVyIGRlIEdheWUuCiAKQEAgLTcwMSwxMSArMTk2NywxNyBAQAogCiAtIElzc3VlICMyNjk5MTogRml4IHBvc3NpYmxlIHJlZmxlYWsgd2hlbiBjcmVhdGluZyBhIGZ1bmN0aW9uIHdpdGggYW5ub3RhdGlvbnMuCiAKLS0gSXNzdWUgIzI3MDM5OiBGaXhlZCBieXRlYXJyYXkucmVtb3ZlKCkgZm9yIHZhbHVlcyBncmVhdGVyIHRoYW4gMTI3LiAgUGF0Y2ggYnkKLSAgSm9lIEpldm5pay4KKy0gSXNzdWUgIzI3MDM5OiBGaXhlZCBieXRlYXJyYXkucmVtb3ZlKCkgZm9yIHZhbHVlcyBncmVhdGVyIHRoYW4gMTI3LiAgQmFzZWQgb24KKyAgcGF0Y2ggYnkgSm9lIEpldm5pay4KIAogLSBJc3N1ZSAjMjM2NDA6IGludC5mcm9tX2J5dGVzKCkgbm8gbG9uZ2VyIGJ5cGFzc2VzIGNvbnN0cnVjdG9ycyBmb3Igc3ViY2xhc3Nlcy4KIAorLSBJc3N1ZSAjMjcwMDU6IE9wdGltaXplZCB0aGUgZmxvYXQuZnJvbWhleCgpIGNsYXNzIG1ldGhvZCBmb3IgZXhhY3QgZmxvYXQuCisgIEl0IGlzIG5vdyAyIHRpbWVzIGZhc3Rlci4KKworLSBJc3N1ZSAjMTg1MzE6IFNpbmdsZSB2YXIta2V5d29yZCBhcmd1bWVudCBvZiBkaWN0IHN1YnR5cGUgd2FzIHBhc3NlZAorICB1bnNjYXRoZWQgdG8gdGhlIEMtZGVmaW5lZCBmdW5jdGlvbi4gIE5vdyBpdCBpcyBjb252ZXJ0ZWQgdG8gZXhhY3QgZGljdC4KKwogLSBJc3N1ZSAjMjY4MTE6IGdjLmdldF9vYmplY3RzKCkgbm8gbG9uZ2VyIGNvbnRhaW5zIGEgYnJva2VuIHR1cGxlIHdpdGggTlVMTAogICBwb2ludGVyLgogCkBAIC03MTUsMTEgKzE5ODcsMjYgQEAKICAgaW50ZXJwb2xhdGlvbiBpbiAucHlwaXJjIGZpbGVzLCBtYXRjaGluZyBiZWhhdmlvciBpbiBQeXRob24KICAgMi43IGFuZCBTZXR1cHRvb2xzIDE5LjAuCiAKKy0gSXNzdWUgIzI2MjQ5OiBNZW1vcnkgZnVuY3Rpb25zIG9mIHRoZSA6YzpmdW5jOmBQeU1lbV9NYWxsb2NgIGRvbWFpbgorICAoOmM6ZGF0YTpgUFlNRU1fRE9NQUlOX01FTWApIG5vdyB1c2UgdGhlIDpyZWY6YHB5bWFsbG9jIGFsbG9jYXRvciA8cHltYWxsb2M+YAorICByYXRoZXIgdGhhbiBzeXN0ZW0gOmM6ZnVuYzpgbWFsbG9jYC4gQXBwbGljYXRpb25zIGNhbGxpbmcKKyAgOmM6ZnVuYzpgUHlNZW1fTWFsbG9jYCB3aXRob3V0IGhvbGRpbmcgdGhlIEdJTCBjYW4gbm93IGNyYXNoOiB1c2UKKyAgYGBQWVRIT05NQUxMT0M9ZGVidWdgYCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byB2YWxpZGF0ZSB0aGUgdXNhZ2Ugb2YgbWVtb3J5CisgIGFsbG9jYXRvcnMgaW4geW91ciBhcHBsaWNhdGlvbi4KKworLSBJc3N1ZSAjMjY4MDI6IE9wdGltaXplIGZ1bmN0aW9uIGNhbGxzIG9ubHkgdXNpbmcgdW5wYWNraW5nIGxpa2UKKyAgYGBmdW5jKCp0dXBsZSlgYCAobm8gb3RoZXIgcG9zaXRpb25hbCBhcmd1bWVudCwgbm8ga2V5d29yZCk6IGF2b2lkIGNvcHlpbmcKKyAgdGhlIHR1cGxlLiBQYXRjaCB3cml0dGVuIGJ5IEpvZSBKZXZuaWsuCisKIC0gSXNzdWUgIzI2NjU5OiBNYWtlIHRoZSBidWlsdGluIHNsaWNlIHR5cGUgc3VwcG9ydCBjeWNsZSBjb2xsZWN0aW9uLgogCiAtIElzc3VlICMyNjcxODogc3VwZXIuX19pbml0X18gbm8gbG9uZ2VyIGxlYWtzIG1lbW9yeSBpZiBjYWxsZWQgbXVsdGlwbGUgdGltZXMuCiAgIE5PVEU6IEEgZGlyZWN0IGNhbGwgb2Ygc3VwZXIuX19pbml0X18gaXMgbm90IGVuZG9yc2VkIQogCistIElzc3VlICMyNzEzODogRml4IHRoZSBkb2MgY29tbWVudCBmb3IgRmlsZUZpbmRlci5maW5kX3NwZWMoKS4KKworLSBJc3N1ZSAjMjcxNDc6IE1lbnRpb24gUEVQIDQyMCBpbiB0aGUgaW1wb3J0bGliIGRvY3MuCisKIC0gSXNzdWUgIzI1MzM5OiBQWVRIT05JT0VOQ09ESU5HIG5vdyBoYXMgcHJpb3JpdHkgb3ZlciBsb2NhbGUgaW4gc2V0dGluZyB0aGUKICAgZXJyb3IgaGFuZGxlciBmb3Igc3RkaW4gYW5kIHN0ZG91dC4KIApAQCAtNzI4LDkgKzIwMTUsNDEgQEAKICAgYnl0ZWFycmF5LCBsaXN0LCB0dXBsZSwgc2V0LCBmcm96ZW5zZXQsIGRpY3QsIE9yZGVyZWREaWN0LCBjb3JyZXNwb25kaW5nCiAgIHZpZXdzIGFuZCBvcy5zY2FuZGlyKCkgaXRlcmF0b3IuCiAKKy0gSXNzdWUgIzI2NTc0OiBPcHRpbWl6ZSBgYGJ5dGVzLnJlcGxhY2UoYicnLCBiJy4nKWBgIGFuZAorICBgYGJ5dGVhcnJheS5yZXBsYWNlKGInJywgYicuJylgYC4gUGF0Y2ggd3JpdHRlbiBieSBKb3NoIFNuaWRlci4KKwogLSBJc3N1ZSAjMjY1ODE6IElmIGNvZGluZyBjb29raWUgaXMgc3BlY2lmaWVkIG11bHRpcGxlIHRpbWVzIG9uIGEgbGluZSBpbgogICBQeXRob24gc291cmNlIGNvZGUgZmlsZSwgb25seSB0aGUgZmlyc3Qgb25lIGlzIHRha2VuIHRvIGFjY291bnQuCiAKKy0gSXNzdWUgIzE5NzExOiBBZGQgdGVzdHMgZm9yIHJlbG9hZGluZyBuYW1lc3BhY2UgcGFja2FnZXMuCisKKy0gSXNzdWUgIzIxMDk5OiBTd2l0Y2ggYXBwbGljYWJsZSBpbXBvcnRsaWIgdGVzdHMgdG8gdXNlIFBFUCA0NTEgQVBJLgorCistIElzc3VlICMyNjU2MzogRGVidWcgaG9va3Mgb24gUHl0aG9uIG1lbW9yeSBhbGxvY2F0b3JzIG5vdyByYWlzZSBhIGZhdGFsCisgIGVycm9yIGlmIGZ1bmN0aW9ucyBvZiB0aGUgOmM6ZnVuYzpgUHlNZW1fTWFsbG9jYCBmYW1pbHkgYXJlIGNhbGxlZCB3aXRob3V0CisgIGhvbGRpbmcgdGhlIEdJTC4KKworLSBJc3N1ZSAjMjY1NjQ6IE9uIGVycm9yLCB0aGUgZGVidWcgaG9va3Mgb24gUHl0aG9uIG1lbW9yeSBhbGxvY2F0b3JzIG5vdyB1c2UKKyAgdGhlIDptb2Q6YHRyYWNlbWFsbG9jYCBtb2R1bGUgdG8gZ2V0IHRoZSB0cmFjZWJhY2sgd2hlcmUgYSBtZW1vcnkgYmxvY2sgd2FzCisgIGFsbG9jYXRlZC4KKworLSBJc3N1ZSAjMjY1NTg6IFRoZSBkZWJ1ZyBob29rcyBvbiBQeXRob24gbWVtb3J5IGFsbG9jYXRvcgorICA6YzpmdW5jOmBQeU9iamVjdF9NYWxsb2NgIG5vdyBkZXRlY3Qgd2hlbiBmdW5jdGlvbnMgYXJlIGNhbGxlZCB3aXRob3V0CisgIGhvbGRpbmcgdGhlIEdJTC4KKworLSBJc3N1ZSAjMjY1MTY6IEFkZCA6ZW52dmFyOmBQWVRIT05NQUxMT0NgIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIHNldCB0aGUKKyAgUHl0aG9uIG1lbW9yeSBhbGxvY2F0b3JzIGFuZC9vciBpbnN0YWxsIGRlYnVnIGhvb2tzLgorCistIElzc3VlICMyNjUxNjogVGhlIDpjOmZ1bmM6YFB5TWVtX1NldHVwRGVidWdIb29rc2AgZnVuY3Rpb24gY2FuIG5vdyBhbHNvIGJlCisgIHVzZWQgb24gUHl0aG9uIGNvbXBpbGVkIGluIHJlbGVhc2UgbW9kZS4KKworLSBJc3N1ZSAjMjY1MTY6IFRoZSA6ZW52dmFyOmBQWVRIT05NQUxMT0NTVEFUU2AgZW52aXJvbm1lbnQgdmFyaWFibGUgY2FuIG5vdworICBhbHNvIGJlIHVzZWQgb24gUHl0aG9uIGNvbXBpbGVkIGluIHJlbGVhc2UgbW9kZS4gSXQgbm93IGhhcyBubyBlZmZlY3QgaWYKKyAgc2V0IHRvIGFuIGVtcHR5IHN0cmluZy4KKworLSBJc3N1ZSAjMjY1MTY6IEluIGRlYnVnIG1vZGUsIGRlYnVnIGhvb2tzIGFyZSBub3cgYWxzbyBpbnN0YWxsZWQgb24gUHl0aG9uCisgIG1lbW9yeSBhbGxvY2F0b3JzIHdoZW4gUHl0aG9uIGlzIGNvbmZpZ3VyZWQgd2l0aG91dCBweW1hbGxvYy4KKwogLSBJc3N1ZSAjMjY0NjQ6IEZpeCBzdHIudHJhbnNsYXRlKCkgd2hlbiBzdHJpbmcgaXMgQVNDSUkgYW5kIGZpcnN0IHJlcGxhY2VtZW50cwogICByZW1vdmVzIGNoYXJhY3RlciwgYnV0IG5leHQgcmVwbGFjZW1lbnQgdXNlcyBhIG5vbi1BU0NJSSBjaGFyYWN0ZXIgb3IgYQogICBzdHJpbmcgbG9uZ2VyIHRoYW4gMSBjaGFyYWN0ZXIuIFJlZ3Jlc3Npb24gaW50cm9kdWNlZCBpbiBQeXRob24gMy41LjAuCkBAIC03NDMsMTEgKzIwNjIsMzcgQEAKIC0gSXNzdWUgIzI2MzAyOiBDb3JyZWN0IGJlaGF2aW9yIHRvIHJlamVjdCBjb21tYSBhcyBhIGxlZ2FsIGNoYXJhY3RlciBmb3IKICAgY29va2llIG5hbWVzLgogCistIElzc3VlICMyNjEzNjogVXBncmFkZSB0aGUgd2FybmluZyB3aGVuIGEgZ2VuZXJhdG9yIHJhaXNlcyBTdG9wSXRlcmF0aW9uCisgIGZyb20gUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZyB0byBEZXByZWNhdGlvbldhcm5pbmcuICBQYXRjaCBieSBBbmlzaAorICBTaGFoLgorCistIElzc3VlICMyNjIwNDogVGhlIGNvbXBpbGVyIG5vdyBpZ25vcmVzIGFsbCBjb25zdGFudCBzdGF0ZW1lbnRzOiBieXRlcywgc3RyLAorICBpbnQsIGZsb2F0LCBjb21wbGV4LCBuYW1lIGNvbnN0YW50cyAoTm9uZSwgRmFsc2UsIFRydWUpLCBFbGxpcHNpcworICBhbmQgYXN0LkNvbnN0YW50OyBub3Qgb25seSBzdHIgYW5kIGludC4gRm9yIGV4YW1wbGUsIGBgMS4wYGAgaXMgbm93IGlnbm9yZWQKKyAgaW4gYGBkZWYgZigpOiAxLjBgYC4KKwogLSBJc3N1ZSAjNDgwNjogQXZvaWQgbWFza2luZyB0aGUgb3JpZ2luYWwgVHlwZUVycm9yIGV4Y2VwdGlvbiB3aGVuIHVzaW5nIHN0YXIKICAgKCopIHVucGFja2luZyBpbiBmdW5jdGlvbiBjYWxscy4gIEJhc2VkIG9uIHBhdGNoIGJ5IEhhZ2VuIEbDvHJzdGVuYXUgYW5kCiAgIERhbmllbCBVcmJhbi4KIAotLSBJc3N1ZSAjMjcxMzg6IEZpeCB0aGUgZG9jIGNvbW1lbnQgZm9yIEZpbGVGaW5kZXIuZmluZF9zcGVjKCkuCistIElzc3VlICMyNjE0NjogQWRkIGEgbmV3IGtpbmQgb2YgQVNUIG5vZGU6IGBgYXN0LkNvbnN0YW50YGAuIEl0IGNhbiBiZSB1c2VkCisgIGJ5IGV4dGVybmFsIEFTVCBvcHRpbWl6ZXJzLCBidXQgdGhlIGNvbXBpbGVyIGRvZXMgbm90IGVtaXQgZGlyZWN0bHkgc3VjaAorICBub2RlLgorCistIElzc3VlICMyMzYwMTogIFNwZWQtdXAgYWxsb2NhdGlvbiBvZiBkaWN0IGtleSBvYmplY3RzIGJ5IHVzaW5nIFB5dGhvbidzCisgIHNtYWxsIG9iamVjdCBhbGxvY2F0b3IuICAoQ29udHJpYnV0ZWQgYnkgSnVsaWFuIFRheWxvci4pCisKKy0gSXNzdWUgIzE4MDE4OiBJbXBvcnQgcmFpc2VzIEltcG9ydEVycm9yIGluc3RlYWQgb2YgU3lzdGVtRXJyb3IgaWYgYSByZWxhdGl2ZQorICBpbXBvcnQgaXMgYXR0ZW1wdGVkIHdpdGhvdXQgYSBrbm93biBwYXJlbnQgcGFja2FnZS4KKworLSBJc3N1ZSAjMjU4NDM6IFdoZW4gY29tcGlsaW5nIGNvZGUsIGRvbid0IG1lcmdlIGNvbnN0YW50cyBpZiB0aGV5IGFyZSBlcXVhbAorICBidXQgaGF2ZSBhIGRpZmZlcmVudCB0eXBlcy4gRm9yIGV4YW1wbGUsIGBgZjEsIGYyID0gbGFtYmRhOiAxLCBsYW1iZGE6IDEuMGBgCisgIGlzIG5vdyBjb3JyZWN0bHkgY29tcGlsZWQgdG8gdHdvIGRpZmZlcmVudCBmdW5jdGlvbnM6IGBgZjEoKWBgIHJldHVybnMgYGAxYGAKKyAgKGBgaW50YGApIGFuZCBgYGYyKClgYCByZXR1cm5zIGBgMS4wYGAgKGBgZmxvYXRgYCksIGV2ZW4gaWYgYGAxYGAgYW5kIGBgMS4wYGAKKyAgYXJlIGVxdWFsLgorCistIElzc3VlICMyNjEwNzogVGhlIGZvcm1hdCBvZiB0aGUgYGBjb19sbm90YWJgYCBhdHRyaWJ1dGUgb2YgY29kZSBvYmplY3RzCisgIGNoYW5nZXMgdG8gc3VwcG9ydCBuZWdhdGl2ZSBsaW5lIG51bWJlciBkZWx0YS4KIAogLSBJc3N1ZSAjMjYxNTQ6IEFkZCBhIG5ldyBwcml2YXRlIF9QeVRocmVhZFN0YXRlX1VuY2hlY2tlZEdldCgpIGZ1bmN0aW9uIHRvIGdldAogICB0aGUgY3VycmVudCBQeXRob24gdGhyZWFkIHN0YXRlLCBidXQgZG9uJ3QgaXNzdWUgYSBmYXRhbCBlcnJvciBpZiBpdCBpcyBOVUxMLgpAQCAtNzU2LDE1ICsyMTAxLDggQEAKICAgUHl0aG9uIDMuNS4xIHRvIGhpZGUgdGhlIGV4YWN0IGltcGxlbWVudGF0aW9uIG9mIGF0b21pYyBDIHR5cGVzLCB0byBhdm9pZAogICBjb21waWxlciBpc3N1ZXMuCiAKLS0gSXNzdWUgIzI2MTk0OiAgRGVxdWUuaW5zZXJ0KCkgZ2F2ZSBvZGQgcmVzdWx0cyBmb3IgYm91bmRlZCBkZXF1ZXMgdGhhdCBoYWQKLSAgcmVhY2hlZCB0aGVpciBtYXhpbXVtIHNpemUuICBOb3cgYW4gSW5kZXhFcnJvciB3aWxsIGJlIHJhaXNlZCB3aGVuIGF0dGVtcHRpbmcKLSAgdG8gaW5zZXJ0IGludG8gYSBmdWxsIGRlcXVlLgotCi0tIElzc3VlICMyNTg0MzogV2hlbiBjb21waWxpbmcgY29kZSwgZG9uJ3QgbWVyZ2UgY29uc3RhbnRzIGlmIHRoZXkgYXJlIGVxdWFsCi0gIGJ1dCBoYXZlIGEgZGlmZmVyZW50IHR5cGVzLiBGb3IgZXhhbXBsZSwgYGBmMSwgZjIgPSBsYW1iZGE6IDEsIGxhbWJkYTogMS4wYGAKLSAgaXMgbm93IGNvcnJlY3RseSBjb21waWxlZCB0byB0d28gZGlmZmVyZW50IGZ1bmN0aW9uczogYGBmMSgpYGAgcmV0dXJucyBgYDFgYAotICAoYGBpbnRgYCkgYW5kIGBgZjIoKWBgIHJldHVybnMgYGAxLjBgYCAoYGBpbnRgYCksIGV2ZW4gaWYgYGAxYGAgYW5kIGBgMS4wYGAKLSAgYXJlIGVxdWFsLgorLSBJc3N1ZSAjMjU3OTE6IElmIF9fcGFja2FnZV9fICE9IF9fc3BlY19fLnBhcmVudCBvciBpZiBuZWl0aGVyIF9fcGFja2FnZV9fIG9yCisgIF9fc3BlY19fIGFyZSBkZWZpbmVkIHRoZW4gSW1wb3J0V2FybmluZyBpcyByYWlzZWQuCiAKIC0gSXNzdWUgIzIyOTk1OiBbVVBEQVRFXSBDb21tZW50IG91dCB0aGUgb25lIG9mIHRoZSBwaWNrbGVhYmlsaXR5IHRlc3RzIGluCiAgIF9QeU9iamVjdF9HZXRTdGF0ZSgpIGR1ZSB0byByZWdyZXNzaW9ucyBvYnNlcnZlZCBpbiBDeXRob24tYmFzZWQgcHJvamVjdHMuCkBAIC03OTEsNyArMjEyOSwxMCBAQAogLSBJc3N1ZSAjMjU3MDk6IEZpeGVkIHByb2JsZW0gd2l0aCBpbi1wbGFjZSBzdHJpbmcgY29uY2F0ZW5hdGlvbiBhbmQgdXRmLTgKICAgY2FjaGUuCiAKLS0gSXNzdWUgIzI3MTQ3OiBNZW50aW9uIFBFUCA0MjAgaW4gdGhlIGltcG9ydGxpYiBkb2NzLgorLSBJc3N1ZSAjNTMxOTogTmV3IFB5X0ZpbmFsaXplRXgoKSBBUEkgYWxsb3dpbmcgUHl0aG9uIHRvIHNldCBhbiBleGl0IHN0YXR1cworICBvZiAxMjAgb24gZmFpbHVyZSB0byBmbHVzaCBidWZmZXJlZCBzdHJlYW1zLgorCistIElzc3VlICMyNTQ4NTogdGVsbmV0bGliLlRlbG5ldCBpcyBub3cgYSBjb250ZXh0IG1hbmFnZXIuCiAKIC0gSXNzdWUgIzI0MDk3OiBGaXhlZCBjcmFzaCBpbiBvYmplY3QuX19yZWR1Y2VfXygpIGlmIHNsb3QgbmFtZSBpcyBmcmVlZCBpbnNpZGUKICAgX19nZXRhdHRyX18uCkBAIC04MDAsNiArMjE0MSw4OCBAQAogICBfX2J5dGVzX18sIF9fdHJ1bmNfXywgYW5kIF9fZmxvYXRfXyByZXR1cm5pbmcgaW5zdGFuY2VzIG9mIHN1YmNsYXNzZXMgb2YKICAgYnl0ZXMsIGludCwgYW5kIGZsb2F0IHRvIHN1YmNsYXNzZXMgb2YgYnl0ZXMsIGludCwgYW5kIGZsb2F0IGNvcnJlc3BvbmRpbmdseS4KIAorLSBJc3N1ZSAjMjU2MzA6IEZpeCBhIHBvc3NpYmxlIHNlZ2ZhdWx0IGR1cmluZyBhcmd1bWVudCBwYXJzaW5nIGluIGZ1bmN0aW9ucworICB0aGF0IGFjY2VwdCBmaWxlc3lzdGVtIHBhdGhzLgorCistIElzc3VlICMyMzU2NDogRml4ZWQgYSBwYXJ0aWFsbHkgYnJva2VuIHNhbml0eSBjaGVjayBpbiB0aGUgX3Bvc2l4c3VicHJvY2VzcworICBpbnRlcm5hbHMgcmVnYXJkaW5nIGhvdyBmZHNfdG9fcGFzcyB3ZXJlIHBhc3NlZCB0byB0aGUgY2hpbGQuICBUaGUgYnVnIGhhZAorICBubyBhY3R1YWwgaW1wYWN0IGFzIHN1YnByb2Nlc3MucHkgYWxyZWFkeSBhdm9pZGVkIGl0LgorCistIElzc3VlICMyNTM4ODogRml4ZWQgdG9rZW5pemVyIGNyYXNoIHdoZW4gcHJvY2Vzc2luZyB1bmRlY29kYWJsZSBzb3VyY2UgY29kZQorICB3aXRoIGEgbnVsbCBieXRlLgorCistIElzc3VlICMyNTQ2MjogVGhlIGhhc2ggb2YgdGhlIGtleSBub3cgaXMgY2FsY3VsYXRlZCBvbmx5IG9uY2UgaW4gbW9zdAorICBvcGVyYXRpb25zIGluIEMgaW1wbGVtZW50YXRpb24gb2YgT3JkZXJlZERpY3QuCisKKy0gSXNzdWUgIzIyOTk1OiBEZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIF9fcmVkdWNlX18gYW5kIF9fcmVkdWNlX2V4X18gbm93CisgIHJlamVjdHMgYnVpbHRpbiB0eXBlcyB3aXRoIG5vdCBkZWZpbmVkIF9fbmV3X18uCisKKy0gSXNzdWUgIzI0ODAyOiBBdm9pZCBidWZmZXIgb3ZlcnJlYWRzIHdoZW4gaW50KCksIGZsb2F0KCksIGNvbXBpbGUoKSwgZXhlYygpCisgIGFuZCBldmFsKCkgYXJlIHBhc3NlZCBieXRlcy1saWtlIG9iamVjdHMuICBUaGVzZSBvYmplY3RzIGFyZSBub3QKKyAgbmVjZXNzYXJpbHkgdGVybWluYXRlZCBieSBhIG51bGwgYnl0ZSwgYnV0IHRoZSBmdW5jdGlvbnMgYXNzdW1lZCB0aGV5IHdlcmUuCisKKy0gSXNzdWUgIzI1NTU1OiBGaXggcGFyc2VyIGFuZCBBU1Q6IGZpbGwgbGluZW5vIGFuZCBjb2xfb2Zmc2V0IG9mICJhcmciIG5vZGUKKyAgd2hlbiBjb21waWxpbmcgQVNUIGZyb20gUHl0aG9uIG9iamVjdHMuCisKKy0gSXNzdWUgIzI0NzI2OiBGaXhlZCBhIGNyYXNoIGFuZCBsZWFraW5nIE5VTEwgaW4gcmVwcigpIG9mIE9yZGVyZWREaWN0IHRoYXQKKyAgd2FzIG11dGF0ZWQgYnkgZGlyZWN0IGNhbGxzIG9mIGRpY3QgbWV0aG9kcy4KKworLSBJc3N1ZSAjMjU0NDk6IEl0ZXJhdGluZyBPcmRlcmVkRGljdCB3aXRoIGtleXMgd2l0aCB1bnN0YWJsZSBoYXNoIG5vdyByYWlzZXMKKyAgS2V5RXJyb3IgaW4gQyBpbXBsZW1lbnRhdGlvbnMgYXMgd2VsbCBhcyBpbiBQeXRob24gaW1wbGVtZW50YXRpb24uCisKKy0gSXNzdWUgIzI1Mzk1OiBGaXhlZCBjcmFzaCB3aGVuIGhpZ2hseSBuZXN0ZWQgT3JkZXJlZERpY3Qgc3RydWN0dXJlcyB3ZXJlCisgIGdhcmJhZ2UgY29sbGVjdGVkLgorCistIElzc3VlICMyNTQwMTogT3B0aW1pemUgYnl0ZXMuZnJvbWhleCgpIGFuZCBieXRlYXJyYXkuZnJvbWhleCgpOiB0aGV5IGFyZSBub3cKKyAgYmV0d2VlbiAyeCBhbmQgMy41eCBmYXN0ZXIuCisKKy0gSXNzdWUgIzI1Mzk5OiBPcHRpbWl6ZSBieXRlYXJyYXkgJSBhcmdzIHVzaW5nIHRoZSBuZXcgcHJpdmF0ZSBfUHlCeXRlc1dyaXRlcgorICBBUEkuIEZvcm1hdHRpbmcgaXMgbm93IGJldHdlZW4gMi41IGFuZCA1IHRpbWVzIGZhc3Rlci4KKworLSBJc3N1ZSAjMjUyNzQ6IHN5cy5zZXRyZWN1cnNpb25saW1pdCgpIG5vdyByYWlzZXMgYSBSZWN1cnNpb25FcnJvciBpZiB0aGUgbmV3CisgIHJlY3Vyc2lvbiBsaW1pdCBpcyB0b28gbG93IGRlcGVuZGluZyBhdCB0aGUgY3VycmVudCByZWN1cnNpb24gZGVwdGguIE1vZGlmeQorICBhbHNvIHRoZSAibG93ZXItd2F0ZXIgbWFyayIgZm9ybXVsYSB0byBtYWtlIGl0IG1vbm90b25pYy4gVGhpcyBtYXJrIGlzIHVzZWQKKyAgdG8gZGVjaWRlIHdoZW4gdGhlIG92ZXJmbG93ZWQgZmxhZyBvZiB0aGUgdGhyZWFkIHN0YXRlIGlzIHJlc2V0LgorCistIElzc3VlICMyNDQwMjogRml4IGlucHV0KCkgdG8gcHJvbXB0IHRvIHRoZSByZWRpcmVjdGVkIHN0ZG91dCB3aGVuCisgIHN5cy5zdGRvdXQuZmlsZW5vKCkgZmFpbHMuCisKKy0gSXNzdWUgIzI1MzQ5OiBPcHRpbWl6ZSBieXRlcyAlIGFyZ3MgdXNpbmcgdGhlIG5ldyBwcml2YXRlIF9QeUJ5dGVzV3JpdGVyIEFQSS4KKyAgRm9ybWF0dGluZyBpcyBub3cgdXAgdG8gMiB0aW1lcyBmYXN0ZXIuCisKKy0gSXNzdWUgIzI0ODA2OiBQcmV2ZW50IGJ1aWx0aW4gdHlwZXMgdGhhdCBhcmUgbm90IGFsbG93ZWQgdG8gYmUgc3ViY2xhc3NlZCBmcm9tCisgIGJlaW5nIHN1YmNsYXNzZWQgdGhyb3VnaCBtdWx0aXBsZSBpbmhlcml0YW5jZS4KKworLSBJc3N1ZSAjMjUzMDE6IFRoZSBVVEYtOCBkZWNvZGVyIGlzIG5vdyB1cCB0byAxNSB0aW1lcyBhcyBmYXN0IGZvciBlcnJvcgorICBoYW5kbGVyczogYGBpZ25vcmVgYCwgYGByZXBsYWNlYGAgYW5kIGBgc3Vycm9nYXRlZXNjYXBlYGAuCisKKy0gSXNzdWUgIzI0ODQ4OiBGaXhlZCBhIG51bWJlciBvZiBidWdzIGluIFVURi03IGRlY29kaW5nIG9mIG1pc2Zvcm1lZCBkYXRhLgorCistIElzc3VlICMyNTI2NzogVGhlIFVURi04IGVuY29kZXIgaXMgbm93IHVwIHRvIDc1IHRpbWVzIGFzIGZhc3QgZm9yIGVycm9yCisgIGhhbmRsZXJzOiBgYGlnbm9yZWBgLCBgYHJlcGxhY2VgYCwgYGBzdXJyb2dhdGVlc2NhcGVgYCwgYGBzdXJyb2dhdGVwYXNzYGAuCisgIFBhdGNoIGNvLXdyaXR0ZW4gd2l0aCBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMyNTI4MDogSW1wb3J0IHRyYWNlIG1lc3NhZ2VzIGVtaXR0ZWQgaW4gdmVyYm9zZSAoLXYpIG1vZGUgYXJlIG5vCisgIGxvbmdlciBmb3JtYXR0ZWQgdHdpY2UuCisKKy0gSXNzdWUgIzI1MjI3OiBPcHRpbWl6ZSBBU0NJSSBhbmQgbGF0aW4xIGVuY29kZXJzIHdpdGggdGhlIGBgc3Vycm9nYXRlZXNjYXBlYGAKKyAgZXJyb3IgaGFuZGxlcjogdGhlIGVuY29kZXJzIGFyZSBub3cgdXAgdG8gMyB0aW1lcyBhcyBmYXN0LiBJbml0aWFsIHBhdGNoCisgIHdyaXR0ZW4gYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMjUwMDM6IE9uIFNvbGFyaXMgMTEuMyBvciBuZXdlciwgb3MudXJhbmRvbSgpIG5vdyB1c2VzIHRoZQorICBnZXRyYW5kb20oKSBmdW5jdGlvbiBpbnN0ZWFkIG9mIHRoZSBnZXRlbnRyb3B5KCkgZnVuY3Rpb24uIFRoZSBnZXRlbnRyb3B5KCkKKyAgZnVuY3Rpb24gaXMgYmxvY2tpbmcgdG8gZ2VuZXJhdGUgdmVyeSBnb29kIHF1YWxpdHkgZW50cm9weSwgb3MudXJhbmRvbSgpCisgIGRvZXNuJ3QgbmVlZCBzdWNoIGhpZ2gtcXVhbGl0eSBlbnRyb3B5LgorCistIElzc3VlICM5MjMyOiBNb2RpZnkgUHl0aG9uJ3MgZ3JhbW1hciB0byBhbGxvdyB0cmFpbGluZyBjb21tYXMgaW4gdGhlCisgIGFyZ3VtZW50IGxpc3Qgb2YgYSBmdW5jdGlvbiBkZWNsYXJhdGlvbi4gIEZvciBleGFtcGxlLCAiZGVmIGYoXCosIGEgPQorICAzLCk6IHBhc3MiIGlzIG5vdyBsZWdhbC4gUGF0Y2ggZnJvbSBNYXJrIERpY2tpbnNvbi4KKworLSBJc3N1ZSAjMjQ5NjU6IEltcGxlbWVudCBQRVAgNDk4ICJMaXRlcmFsIFN0cmluZyBJbnRlcnBvbGF0aW9uIi4gVGhpcworICBhbGxvd3MgeW91IHRvIGVtYmVkIGV4cHJlc3Npb25zIGluc2lkZSBmLXN0cmluZ3MsIHdoaWNoIGFyZQorICBjb252ZXJ0ZWQgdG8gbm9ybWFsIHN0cmluZ3MgYXQgcnVuIHRpbWUuIEdpdmVuIHg9MywgdGhlbgorICBmJ3ZhbHVlPXt4fScgPT0gJ3ZhbHVlPTMnLiBQYXRjaCBieSBFcmljIFYuIFNtaXRoLgorCiAtIElzc3VlICMyNjQ3ODogRml4IHNlbWFudGljIGJ1Z3Mgd2hlbiB1c2luZyBiaW5hcnkgb3BlcmF0b3JzIHdpdGggZGljdGlvbmFyeQogICB2aWV3cyBhbmQgdHVwbGVzLgogCkBAIC04MDgsNzkgKzIyMzEsMjcgQEAKIAogLSBJc3N1ZSAjMjU2NjA6IEZpeCBUQUIga2V5IGJlaGF2aW91ciBpbiBSRVBMIHdpdGggcmVhZGxpbmUuCiAKKy0gSXNzdWUgIzI2Mjg4OiBPcHRpbWl6ZSBQeUxvbmdfQXNEb3VibGUuCisKKy0gSXNzdWVzICMyNjI4OSBhbmQgIzI2MzE1OiBPcHRpbWl6ZSBmbG9vciBhbmQgbW9kdWxvIGRpdmlzaW9uIGZvcgorICBzaW5nbGUtZGlnaXQgbG9uZ3MuICBNaWNyb2JlbmNobWFya3Mgc2hvdyAyLTIuNXggaW1wcm92ZW1lbnQuICBCdWlsdC1pbgorICAnZGl2bW9kJyBmdW5jdGlvbiBpcyBub3cgYWxzbyB+MTAlIGZhc3Rlci4KKwogLSBJc3N1ZSAjMjU4ODc6IFJhaXNlIGEgUnVudGltZUVycm9yIHdoZW4gYSBjb3JvdXRpbmUgb2JqZWN0IGlzIGF3YWl0ZWQKICAgbW9yZSB0aGFuIG9uY2UuCiAKLS0gSXNzdWUgIzI3MjQzOiBVcGRhdGUgdGhlIF9fYWl0ZXJfXyBwcm90b2NvbDogaW5zdGVhZCBvZiByZXR1cm5pbmcKLSAgYW4gYXdhaXRhYmxlIHRoYXQgcmVzb2x2ZXMgdG8gYW4gYXN5bmNocm9ub3VzIGl0ZXJhdG9yLCB0aGUgYXN5bmNocm9ub3VzCi0gIGl0ZXJhdG9yIHNob3VsZCBiZSByZXR1cm5lZCBkaXJlY3RseS4gIERvaW5nIHRoZSBmb3JtZXIgd2lsbCB0cmlnZ2VyIGEKLSAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZy4KLQotCiBMaWJyYXJ5CiAtLS0tLS0tCiAKLS0gW1NlY3VyaXR5XSBJc3N1ZSAjMjY1NTY6IFVwZGF0ZSBleHBhdCB0byAyLjEuMSwgZml4ZXMgQ1ZFLTIwMTUtMTI4My4KLQotLSBbU2VjdXJpdHldIEZpeCBUTFMgc3RyaXBwaW5nIHZ1bG5lcmFiaWxpdHkgaW4gc210cGxpYiwgQ1ZFLTIwMTYtMDc3Mi4KLSAgUmVwb3J0ZWQgYnkgVGVhbSBPc3RzdHJvbQotCi0tIElzc3VlICMyMTM4NjogSW1wbGVtZW50IG1pc3NpbmcgSVB2NEFkZHJlc3MuaXNfZ2xvYmFsIHByb3BlcnR5LiAgSXQgd2FzCi0gIGRvY3VtZW50ZWQgc2luY2UgMDdhNTYxMGJhZTlkLiAgSW5pdGlhbCBwYXRjaCBieSBSb2dlciBMdWV0aGkuCi0KLS0gSXNzdWUgIzIwOTAwOiBkaXN0dXRpbHMgcmVnaXN0ZXIgY29tbWFuZCBub3cgZGVjb2RlcyBIVFRQIHJlc3BvbnNlcwotICBjb3JyZWN0bHkuICBJbml0aWFsIHBhdGNoIGJ5IGluZ3JpZC4KLQotLSBBIG5ldyB2ZXJzaW9uIG9mIHR5cGluZy5weSBwcm92aWRlcyBzZXZlcmFsIG5ldyBjbGFzc2VzIGFuZAotICBmZWF0dXJlczogQG92ZXJsb2FkIG91dHNpZGUgc3R1YnMsIFJldmVyc2libGUsIERlZmF1bHREaWN0LCBUZXh0LAotICBDb250ZXh0TWFuYWdlciwgVHlwZVtdLCBOZXdUeXBlKCksIFRZUEVfQ0hFQ0tJTkcsIGFuZCBudW1lcm91cyBidWcKLSAgZml4ZXMgKG5vdGUgdGhhdCBzb21lIG9mIHRoZSBuZXcgZmVhdHVyZXMgYXJlIG5vdCB5ZXQgaW1wbGVtZW50ZWQgaW4KLSAgbXlweSBvciBvdGhlciBzdGF0aWMgYW5hbHl6ZXJzKS4gIEFsc28gY2xhc3NlcyBmb3IgUEVQIDQ5MgotICAoQXdhaXRhYmxlLCBBc3luY0l0ZXJhYmxlLCBBc3luY0l0ZXJhdG9yKSBoYXZlIGJlZW4gYWRkZWQgKGluIGZhY3QKLSAgdGhleSBtYWRlIGl0IGludG8gMy41LjEgYnV0IHdlcmUgbmV2ZXIgbWVudGlvbmVkKS4KLQotLSBJc3N1ZSAjMjU3Mzg6IFN0b3AgaHR0cC5zZXJ2ZXIuQmFzZUhUVFBSZXF1ZXN0SGFuZGxlci5zZW5kX2Vycm9yKCkgZnJvbQotICBzZW5kaW5nIGEgbWVzc2FnZSBib2R5IGZvciAyMDUgUmVzZXQgQ29udGVudC4gIEFsc28sIGRvbid0IHNlbmQgQ29udGVudAotICBoZWFkZXIgZmllbGRzIGluIHJlc3BvbnNlcyB0aGF0IGRvbid0IGhhdmUgYSBib2R5LiAgUGF0Y2ggYnkgU3VzdW11Ci0gIEtvc2hpYmEuCi0KLS0gSXNzdWUgIzIxMzEzOiBGaXggdGhlICJwbGF0Zm9ybSIgbW9kdWxlIHRvIHRvbGVyYXRlIHdoZW4gc3lzLnZlcnNpb24KLSAgY29udGFpbnMgdHJ1bmNhdGVkIGJ1aWxkIGluZm9ybWF0aW9uLgotCi0tIFtTZWN1cml0eV0gSXNzdWUgIzI2ODM5OiBPbiBMaW51eCwgOmZ1bmM6YG9zLnVyYW5kb21gIG5vdyBjYWxscwotICBgYGdldHJhbmRvbSgpYGAgd2l0aCBgYEdSTkRfTk9OQkxPQ0tgYCB0byBmYWxsIGJhY2sgb24gcmVhZGluZwotICBgYC9kZXYvdXJhbmRvbWBgIGlmIHRoZSB1cmFuZG9tIGVudHJvcHkgcG9vbCBpcyBub3QgaW5pdGlhbGl6ZWQgeWV0LiBQYXRjaAotICB3cml0dGVuIGJ5IENvbG0gQnVja2xleS4KLQotLSBJc3N1ZSAjMjcxNjQ6IEluIHRoZSB6bGliIG1vZHVsZSwgYWxsb3cgZGVjb21wcmVzc2luZyByYXcgRGVmbGF0ZSBzdHJlYW1zCi0gIHdpdGggYSBwcmVkZWZpbmVkIHpkaWN0LiAgQmFzZWQgb24gcGF0Y2ggYnkgWGlhbmcgWmhhbmcuCi0KLS0gSXNzdWUgIzI0MjkxOiBGaXggd3NnaXJlZi5zaW1wbGVfc2VydmVyLldTR0lSZXF1ZXN0SGFuZGxlciB0byBjb21wbGV0ZWx5Ci0gIHdyaXRlIGRhdGEgdG8gdGhlIGNsaWVudC4gIFByZXZpb3VzbHkgaXQgY291bGQgZG8gcGFydGlhbCB3cml0ZXMgYW5kCi0gIHRydW5jYXRlIGRhdGEuICBBbHNvLCB3c2dpcmVmLmhhbmRsZXIuU2VydmVySGFuZGxlciBjYW4gbm93IGhhbmRsZSBzdGRvdXQKLSAgZG9pbmcgcGFydGlhbCB3cml0ZXMsIGJ1dCB0aGlzIGlzIGRlcHJlY2F0ZWQuCi0KLS0gSXNzdWUgIzI2ODA5OiBBZGQgYGBfX2FsbF9fYGAgdG8gOm1vZDpgc3RyaW5nYC4gIFBhdGNoIGJ5IEVtYW51ZWwgQmFycnkuCi0KLS0gSXNzdWUgIzI2MzczOiBzdWJwcm9jZXNzLlBvcGVuLmNvbW11bmljYXRlIG5vdyBjb3JyZWN0bHkgaWdub3JlcwotICBCcm9rZW5QaXBlRXJyb3Igd2hlbiB0aGUgY2hpbGQgcHJvY2VzcyBkaWVzIGJlZm9yZSAuY29tbXVuaWNhdGUoKQotICBpcyBjYWxsZWQgaW4gbW9yZS9hbGwgY2lyY3Vtc3RhbmNlcy4KLQotLSBJc3N1ZSAjMjE3NzY6IGRpc3R1dGlscy51cGxvYWQgbm93IGNvcnJlY3RseSBoYW5kbGVzIEhUVFBFcnJvci4KLSAgSW5pdGlhbCBwYXRjaCBieSBDbGF1ZGl1IFBvcGEuCi0KLS0gSXNzdWUgIzI3MTE0OiBGaXggU1NMQ29udGV4dC5fbG9hZF93aW5kb3dzX3N0b3JlX2NlcnRzIGZhaWxzIHdpdGgKLSAgUGVybWlzc2lvbkVycm9yCi0KLS0gSXNzdWUgIzE4MzgzOiBBdm9pZCBjcmVhdGluZyBkdXBsaWNhdGUgZmlsdGVycyB3aGVuIHVzaW5nIGZpbHRlcndhcm5pbmdzCi0gIGFuZCBzaW1wbGVmaWx0ZXIuICBCYXNlZCBvbiBwYXRjaCBieSBBbGV4IFNoa29wLgotCiAtIElzc3VlICMyNzA1NzogRml4IG9zLnNldF9pbmhlcml0YWJsZSgpIG9uIEFuZHJvaWQsIGlvY3RsKCkgaXMgYmxvY2tlZCBieQogICBTRUxpbnV4IGFuZCBmYWlscyB3aXRoIEVBQ0NFU1MuIFRoZSBmdW5jdGlvbiBub3cgZmFsbHMgYmFjayB0byBmY250bCgpLgogICBQYXRjaCB3cml0dGVuIGJ5IE1pY2hhxYIgQmVkbmFyc2tpLgogCiAtIElzc3VlICMyNzAxNDogRml4IGluZmluaXRlIHJlY3Vyc2lvbiB1c2luZyB0eXBpbmcucHkuICBUaGFua3MgdG8gS2FsbGUgVHV1cmUhCiAKKy0gSXNzdWUgIzI3MDMxOiBSZW1vdmVkIGR1bW15IG1ldGhvZHMgaW4gVGtpbnRlciB3aWRnZXQgY2xhc3NlczogdGtfbWVudUJhcigpCisgIGFuZCB0a19iaW5kRm9yVHJhdmVyc2FsKCkuCisKIC0gSXNzdWUgIzE0MTMyOiBGaXggdXJsbGliLnJlcXVlc3QgcmVkaXJlY3QgaGFuZGxpbmcgd2hlbiB0aGUgdGFyZ2V0IG9ubHkgaGFzCiAgIGEgcXVlcnkgc3RyaW5nLiAgT3JpZ2luYWwgZml4IGJ5IErDoW4gSmFuZWNoLgogCkBAIC04OTAsNiArMjI2MSwxOCBAQAogICB0byBiZSBBU0NJSS1lbmNvZGFibGUsIG90aGVyd2lzZSBhIFVuaWNvZGVFbmNvZGVFcnJvciBpcyByYWlzZWQuICBCYXNlZCBvbgogICBwYXRjaCBieSBDaHJpc3RpYW4gSGVpbWVzLgogCistIElzc3VlICMyNzAzMzogVGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlIGRlY29kZV9kYXRhIHBhcmFtZXRlciBmb3IKKyAgc210cGQuU01UUENoYW5uZWwgYW5kIHNtdHBkLlNNVFBTZXJ2ZXIgY29uc3RydWN0b3JzIGlzIGNoYW5nZWQgdG8gRmFsc2UuCisKKy0gSXNzdWUgIzI3MDM0OiBSZW1vdmVkIGRlcHJlY2F0ZWQgY2xhc3MgYXN5bmNoYXQuZmlmby4KKworLSBJc3N1ZSAjMjY4NzA6IEFkZGVkIHJlYWRsaW5lLnNldF9hdXRvX2hpc3RvcnkoKSwgd2hpY2ggY2FuIHN0b3AgZW50cmllcworICBiZWluZyBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBoaXN0b3J5IGxpc3QuICBCYXNlZCBvbiBwYXRjaCBieSBUeWxlcgorICBDcm9tcHRvbi4KKworLSBJc3N1ZSAjMjYwMzk6IHppcGZpbGUuWmlwRmlsZS5vcGVuKCkgY2FuIG5vdyBiZSB1c2VkIHRvIHdyaXRlIGRhdGEgaW50byBhIFpJUAorICBmaWxlLCBhcyB3ZWxsIGFzIGZvciBleHRyYWN0aW5nIGRhdGEuICBQYXRjaCBieSBUaG9tYXMgS2x1eXZlci4KKwogLSBJc3N1ZSAjMjY4OTI6IEhvbm9yIGRlYnVnbGV2ZWwgZmxhZyBpbiB1cmxsaWIucmVxdWVzdC5IVFRQSGFuZGxlci4gUGF0Y2gKICAgY29udHJpYnV0ZWQgYnkgQ2hpIEhzdWFuIFllbi4KIApAQCAtOTA0LDYgKzIyODcsMTQgQEAKIC0gSXNzdWUgIzI2OTc3OiBSZW1vdmVkIHVubmVjZXNzYXJ5LCBhbmQgaWdub3JlZCwgY2FsbCB0byBzdW0gb2Ygc3F1YXJlcyBoZWxwZXIKICAgaW4gc3RhdGlzdGljcy5wdmFyaWFuY2UuCiAKKy0gSXNzdWUgIzI2MDAyOiBVc2UgYmlzZWN0IGluIHN0YXRpc3RpY3MubWVkaWFuIGluc3RlYWQgb2YgYSBsaW5lYXIgc2VhcmNoLgorICBQYXRjaCBieSBVcGVuZHJhIEt1bWEuCisKKy0gSXNzdWUgIzI1OTc0OiBNYWtlIHVzZSBvZiBuZXcgRGVjaW1hbC5hc19pbnRlZ2VyX3JhdGlvKCkgbWV0aG9kIGluIHN0YXRpc3RpY3MKKyAgbW9kdWxlLiBQYXRjaCBieSBTdGVmYW4gS3JhaC4KKworLSBJc3N1ZSAjMjY5OTY6IEFkZCBzZWNyZXRzIG1vZHVsZSBhcyBkZXNjcmliZWQgaW4gUEVQIDUwNi4KKwogLSBJc3N1ZSAjMjY4ODE6IFRoZSBtb2R1bGVmaW5kZXIgbW9kdWxlIG5vdyBzdXBwb3J0cyBleHRlbmRlZCBvcGNvZGUgYXJndW1lbnRzLgogCiAtIElzc3VlICMyMzgxNTogRml4ZWQgY3Jhc2hlcyByZWxhdGVkIHRvIGRpcmVjdGx5IGNyZWF0ZWQgaW5zdGFuY2VzIG9mIHR5cGVzIGluCkBAIC05MTUsNiArMjMwNiwxMSBAQAogLSBJc3N1ZSAjMjY4NzM6IHhtbHJwYyBub3cgcmFpc2VzIFJlc3BvbnNlRXJyb3Igb24gdW5zdXBwb3J0ZWQgdHlwZSB0YWdzCiAgIGluc3RlYWQgb2Ygc2lsZW50bHkgcmV0dXJuIGluY29ycmVjdCByZXN1bHQuCiAKKy0gSXNzdWUgIzI2OTE1OiAgVGhlIF9fY29udGFpbnNfXyBtZXRob2RzIGluIHRoZSBjb2xsZWN0aW9ucyBBQkNzIG5vdyBjaGVjaworICBmb3IgaWRlbnRpdHkgYmVmb3JlIGNoZWNraW5nIGVxdWFsaXR5LiAgVGhpcyBiZXR0ZXIgbWF0Y2hlcyB0aGUgYmVoYXZpb3IKKyAgb2YgdGhlIGNvbmNyZXRlIGNsYXNzZXMsIGFsbG93cyBzZW5zaWJsZSBoYW5kbGluZyBvZiBOYU5zLCBhbmQgbWFrZXMgaXQKKyAgZWFzaWVyIHRvIHJlYXNvbiBhYm91dCBjb250YWluZXIgaW52YXJpYW50cy4KKwogLSBJc3N1ZSAjMjY3MTE6IEZpeGVkIHRoZSBjb21wYXJpc29uIG9mIHBsaXN0bGliLkRhdGEgd2l0aCBvdGhlciB0eXBlcy4KIAogLSBJc3N1ZSAjMjQxMTQ6IEZpeCBhbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlIGluIGBjdHlwZXMudXRpbGAuCkBAIC05MjgsNiArMjMyNCwxMiBAQAogICBuYW1lcyB0aGF0IGhhcHBlbiB0byBoYXZlIGEgYnlwYXNzZWQgaG9zdG5hbWUgYXMgYSBzdWZmaXguICBQYXRjaCBieSBYaWFuZwogICBaaGFuZy4KIAorLSBJc3N1ZSAjMjQ5MDI6IFByaW50IHNlcnZlciBVUkwgb24gaHR0cC5zZXJ2ZXIgc3RhcnR1cC4gIEluaXRpYWwgcGF0Y2ggYnkKKyAgRmVsaXggS2Fpc2VyLgorCistIElzc3VlICMyNTc4ODogZmlsZWlucHV0Lmhvb2tfZW5jb2RlZCgpIG5vdyBzdXBwb3J0cyBhbiAiZXJyb3JzIiBhcmd1bWVudAorICBmb3IgcGFzc2luZyB0byBvcGVuLiAgT3JpZ2luYWwgcGF0Y2ggYnkgSm9zZXBoIEhhY2ttYW4uCisKIC0gSXNzdWUgIzI2NjM0OiByZWN1cnNpdmVfcmVwcigpIG5vdyBzZXRzIF9fcXVhbG5hbWVfXyBvZiB3cmFwcGVyLiAgUGF0Y2ggYnkKICAgWGlhbmcgWmhhbmcuCiAKQEAgLTk2MywyNiArMjM2NSw1NCBAQAogLSBJc3N1ZSAjMjY3MTc6IFN0b3AgZW5jb2RpbmcgTGF0aW4tMS1pemVkIFdTR0kgcGF0aHMgd2l0aCBVVEYtOC4gIFBhdGNoIGJ5CiAgIEFudGhvbnkgU290dGlsZS4KIAorLSBJc3N1ZSAjMjY3ODI6IEFkZCBTVEFSVFVQSU5GTyB0byBzdWJwcm9jZXNzLl9fYWxsX18gb24gV2luZG93cy4KKworLSBJc3N1ZSAjMjY0MDQ6IEFkZCBjb250ZXh0IG1hbmFnZXIgdG8gc29ja2V0c2VydmVyLiAgUGF0Y2ggYnkgQXZpdiBQYWxpdm9kYS4KKwogLSBJc3N1ZSAjMjY3MzU6IEZpeCA6ZnVuYzpgb3MudXJhbmRvbWAgb24gU29sYXJpcyAxMS4zIGFuZCBuZXdlciB3aGVuIHJlYWRpbmcKICAgbW9yZSB0aGFuIDEsMDI0IGJ5dGVzOiBjYWxsIGBgZ2V0cmFuZG9tKClgYCBtdWx0aXBsZSB0aW1lcyB3aXRoIGEgbGltaXQgb2YKICAgMTAyNCBieXRlcyBwZXIgY2FsbC4KIAorLSBJc3N1ZSAjMjY1ODU6IEVsaW1pbmF0ZSBodHRwLnNlcnZlci5fcXVvdGVfaHRtbCgpIGFuZCB1c2UKKyAgaHRtbC5lc2NhcGUocXVvdGU9RmFsc2UpLiAgUGF0Y2ggYnkgWGlhbmcgWmhhbmcuCisKKy0gSXNzdWUgIzI2Njg1OiBSYWlzZSBPU0Vycm9yIGlmIGNsb3NpbmcgYSBzb2NrZXQgZmFpbHMuCisKIC0gSXNzdWUgIzE2MzI5OiBBZGQgLndlYm0gdG8gbWltZXR5cGVzLnR5cGVzX21hcC4gIFBhdGNoIGJ5IEdpYW1wYW9sbyBSb2RvbGEnLgogCiAtIElzc3VlICMxMzk1MjogQWRkIC5jc3YgdG8gbWltZXR5cGVzLnR5cGVzX21hcC4gIFBhdGNoIGJ5IEdlb2ZmIFdpbHNvbi4KIAorLSBJc3N1ZSAjMjY1ODc6IHRoZSBzaXRlIG1vZHVsZSBub3cgYWxsb3dzIC5wdGggZmlsZXMgdG8gc3BlY2lmeSBmaWxlcyB0byBiZQorICBhZGRlZCB0byBzeXMucGF0aCAoZS5nLiB6aXAgZmlsZXMpLgorCistIElzc3VlICMyNTYwOTogSW50cm9kdWNlIGNvbnRleHRsaWIuQWJzdHJhY3RDb250ZXh0TWFuYWdlciBhbmQKKyAgdHlwaW5nLkNvbnRleHRNYW5hZ2VyLgorCiAtIElzc3VlICMyNjcwOTogRml4ZWQgWTIwMzggcHJvYmxlbSBpbiBsb2FkaW5nIGJpbmFyeSBQTGlzdHMuCiAKIC0gSXNzdWUgIzIzNzM1OiBIYW5kbGUgdGVybWluYWwgcmVzaXppbmcgd2l0aCBSZWFkbGluZSA2LjMrIGJ5IGluc3RhbGxpbmcgb3VyCiAgIG93biBTSUdXSU5DSCBoYW5kbGVyLiAgUGF0Y2ggYnkgRXJpYyBQcmljZS4KIAorLSBJc3N1ZSAjMjU5NTE6IENoYW5nZSBTU0xTb2NrZXQuc2VuZGFsbCgpIHRvIHJldHVybiBOb25lLCBhcyBleHBsaWNpdGx5CisgIGRvY3VtZW50ZWQgZm9yIHBsYWluIHNvY2tldCBvYmplY3RzLiAgUGF0Y2ggYnkgQXZpdiBQYWxpdm9kYS4KKwogLSBJc3N1ZSAjMjY1ODY6IEluIGh0dHAuc2VydmVyLCByZXNwb25kIHdpdGggIjQxMyBSZXF1ZXN0IGhlYWRlciBmaWVsZHMgdG9vCiAgIGxhcmdlIiBpZiB0aGVyZSBhcmUgdG9vIG1hbnkgaGVhZGVyIGZpZWxkcyB0byBwYXJzZSwgcmF0aGVyIHRoYW4ga2lsbGluZwogICB0aGUgY29ubmVjdGlvbiBhbmQgcmFpc2luZyBhbiB1bmhhbmRsZWQgZXhjZXB0aW9uLiAgUGF0Y2ggYnkgWGlhbmcgWmhhbmcuCiAKKy0gSXNzdWUgIzI2Njc2OiBBZGRlZCBtaXNzaW5nIFhNTFB1bGxQYXJzZXIgdG8gRWxlbWVudFRyZWUuX19hbGxfXy4KKwogLSBJc3N1ZSAjMjI4NTQ6IENoYW5nZSBCdWZmZXJlZFJlYWRlci53cml0YWJsZSgpIGFuZAogICBCdWZmZXJlZFdyaXRlci5yZWFkYWJsZSgpIHRvIGFsd2F5cyByZXR1cm4gRmFsc2UuCiAKKy0gSXNzdWUgIzI2NDkyOiBFeGhhdXN0ZWQgaXRlcmF0b3Igb2YgYXJyYXkuYXJyYXkgbm93IGNvbmZvcm1zIHdpdGggdGhlIGJlaGF2aW9yCisgIG9mIGl0ZXJhdG9ycyBvZiBvdGhlciBtdXRhYmxlIHNlcXVlbmNlczogaXQgbGVmdHMgZXhoYXVzdGVkIGV2ZW4gaWYgaXRlcmF0ZWQKKyAgYXJyYXkgaXMgZXh0ZW5kZWQuCisKKy0gSXNzdWUgIzI2NjQxOiBkb2N0ZXN0LkRvY0ZpbGVUZXN0IGFuZCBkb2N0ZXN0LnRlc3RmaWxlKCkgbm93IHN1cHBvcnQKKyAgcGFja2FnZXMgKG1vZHVsZSBzcGxpdHRlZCBpbnRvIG11bHRpcGxlIGRpcmVjdG9yaWVzKSBmb3IgdGhlIHBhY2thZ2UKKyAgcGFyYW1ldGVyLgorCiAtIElzc3VlICMyNTE5NTogRml4IGEgcmVncmVzc2lvbiBpbiBtb2NrLk1hZ2ljTW9jay4gX0NhbGwgaXMgYSBzdWJjbGFzcyBvZgogICB0dXBsZSAoY2hhbmdlc2V0IDM2MDNiYWU2M2MxMyBvbmx5IHdvcmtzIGZvciBjbGFzc2VzKSBzbyB3ZSBuZWVkIHRvCiAgIGltcGxlbWVudCBfX25lX18gb3Vyc2VsdmVzLiAgUGF0Y2ggYnkgQW5kcmV3IFBsdW1tZXIuCkBAIC05OTUsMTYgKzI0MjUsNDUgQEAKIAogLSBJc3N1ZSAjMjY2MTY6IEZpeGVkIGEgYnVnIGluIGRhdGV0aW1lLmFzdGltZXpvbmUoKSBtZXRob2QuCiAKLS0gSXNzdWUgIzIxOTI1OiA6ZnVuYzpgd2FybmluZ3MuZm9ybWF0d2FybmluZ2Agbm93IGNhdGNoZXMgZXhjZXB0aW9ucyBvbgotICBgYGxpbmVjYWNoZS5nZXRsaW5lKC4uLilgYCB0byBiZSBhYmxlIHRvIGxvZyA6ZXhjOmBSZXNvdXJjZVdhcm5pbmdgIGVtaXR0ZWQKLSAgbGF0ZSBkdXJpbmcgdGhlIFB5dGhvbiBzaHV0ZG93biBwcm9jZXNzLgorLSBJc3N1ZSAjMjY2Mzc6IFRoZSA6bW9kOmBpbXBvcnRsaWJgIG1vZHVsZSBub3cgZW1pdHMgYW4gOmV4YzpgSW1wb3J0RXJyb3JgCisgIHJhdGhlciB0aGFuIGEgOmV4YzpgVHlwZUVycm9yYCBpZiA6ZnVuYzpgX19pbXBvcnRfX2AgaXMgdHJpZWQgZHVyaW5nIHRoZQorICBQeXRob24gc2h1dGRvd24gcHJvY2VzcyBidXQgOmRhdGE6YHN5cy5wYXRoYCBpcyBhbHJlYWR5IGNsZWFyZWQgKHNldCB0bworICBgYE5vbmVgYCkuCisKKy0gSXNzdWUgIzIxOTI1OiA6ZnVuYzpgd2FybmluZ3MuZm9ybWF0d2FybmluZ2Agbm93IGNhdGNoZXMgZXhjZXB0aW9ucyB3aGVuCisgIGNhbGxpbmcgOmZ1bmM6YGxpbmVjYWNoZS5nZXRsaW5lYCBhbmQKKyAgOmZ1bmM6YHRyYWNlbWFsbG9jLmdldF9vYmplY3RfdHJhY2ViYWNrYCB0byBiZSBhYmxlIHRvIGxvZworICA6ZXhjOmBSZXNvdXJjZVdhcm5pbmdgIGVtaXR0ZWQgbGF0ZSBkdXJpbmcgdGhlIFB5dGhvbiBzaHV0ZG93biBwcm9jZXNzLgorCistIElzc3VlICMyMzg0ODogT24gV2luZG93cywgZmF1bHRoYW5kbGVyLmVuYWJsZSgpIG5vdyBhbHNvIGluc3RhbGxzIGFuCisgIGV4Y2VwdGlvbiBoYW5kbGVyIHRvIGR1bXAgdGhlIHRyYWNlYmFjayBvZiBhbGwgUHl0aG9uIHRocmVhZHMgb24gYW55IFdpbmRvd3MKKyAgZXhjZXB0aW9uLCBub3Qgb25seSBvbiBVTklYIHNpZ25hbHMgKFNJR1NFR1YsIFNJR0ZQRSwgU0lHQUJSVCkuCisKKy0gSXNzdWUgIzI2NTMwOiBBZGQgQyBmdW5jdGlvbnMgOmM6ZnVuYzpgX1B5VHJhY2VNYWxsb2NfVHJhY2tgIGFuZAorICA6YzpmdW5jOmBfUHlUcmFjZU1hbGxvY19VbnRyYWNrYCB0byB0cmFjayBtZW1vcnkgYmxvY2tzIHVzaW5nIHRoZQorICA6bW9kOmB0cmFjZW1hbGxvY2AgbW9kdWxlLiBBZGQgOmM6ZnVuYzpgX1B5VHJhY2VNYWxsb2NfR2V0VHJhY2ViYWNrYCB0byBnZXQKKyAgdGhlIHRyYWNlYmFjayBvZiBhbiBvYmplY3QuCisKKy0gSXNzdWUgIzI2NTg4OiBUaGUgX3RyYWNlbWFsbG9jIG5vdyBzdXBwb3J0cyB0cmFjaW5nIG1lbW9yeSBhbGxvY2F0aW9ucyBvZgorICBtdWx0aXBsZSBhZGRyZXNzIHNwYWNlcyAoZG9tYWlucykuCiAKIC0gSXNzdWUgIzI0MjY2OiBDdHJsK0MgZHVyaW5nIFJlYWRsaW5lIGhpc3Rvcnkgc2VhcmNoIG5vdyBjYW5jZWxzIHRoZSBzZWFyY2gKICAgbW9kZSB3aGVuIGNvbXBpbGVkIHdpdGggUmVhZGxpbmUgNy4KIAorLSBJc3N1ZSAjMjY1OTA6IEltcGxlbWVudCBhIHNhZmUgZmluYWxpemVyIGZvciB0aGUgX3NvY2tldC5zb2NrZXQgdHlwZS4gSXQgbm93CisgIHJlbGVhc2VzIHRoZSBHSUwgdG8gY2xvc2UgdGhlIHNvY2tldC4KKworLSBJc3N1ZSAjMTg3ODc6IHNwd2QuZ2V0c3BuYW0oKSBub3cgcmFpc2VzIGEgUGVybWlzc2lvbkVycm9yIGlmIHRoZSB1c2VyCisgIGRvZXNuJ3QgaGF2ZSBwcml2aWxlZ2VzLgorCiAtIElzc3VlICMyNjU2MDogQXZvaWQgcG90ZW50aWFsIFZhbHVlRXJyb3IgaW4gQmFzZUhhbmRsZXIuc3RhcnRfcmVzcG9uc2UuCiAgIEluaXRpYWwgcGF0Y2ggYnkgUGV0ZXIgSW5nbGVzYnkuCiAKKy0gSXNzdWUgIzI2NTY3OiBBZGQgYSBuZXcgZnVuY3Rpb24gOmM6ZnVuYzpgUHlFcnJfUmVzb3VyY2VXYXJuaW5nYCBmdW5jdGlvbiB0bworICBwYXNzIHRoZSBkZXN0cm95ZWQgb2JqZWN0LiBBZGQgYSAqc291cmNlKiBhdHRyaWJ1dGUgdG8KKyAgOmNsYXNzOmB3YXJuaW5ncy5XYXJuaW5nTWVzc2FnZWAuIEFkZCB3YXJuaW5ncy5fc2hvd3dhcm5tc2coKSB3aGljaCB1c2VzCisgIHRyYWNlbWFsbG9jIHRvIGdldCB0aGUgdHJhY2ViYWNrIHdoZXJlIHNvdXJjZSBvYmplY3Qgd2FzIGFsbG9jYXRlZC4KKwogLSBbU2VjdXJpdHldIElzc3VlICMyNjMxMzogc3NsLnB5IF9sb2FkX3dpbmRvd3Nfc3RvcmVfY2VydHMgZmFpbHMgaWYgd2luZG93cwogICBjZXJ0IHN0b3JlIGlzIGVtcHR5LiBQYXRjaCBieSBCYWppLgogCkBAIC0xMDI2LDI0ICsyNDg1LDM5IEBACiAtIElzc3VlICMyMzcxODogRml4ZWQgcGFyc2luZyB0aW1lIGluIHdlZWsgMCBiZWZvcmUgSmFuIDEuICBPcmlnaW5hbCBwYXRjaCBieQogICBUYW3DoXMgQmVuY2UgR2VkYWkuCiAKKy0gSXNzdWUgIzI2MzIzOiBBZGQgTW9jay5hc3NlcnRfY2FsbGVkKCkgYW5kIE1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlKCkKKyAgbWV0aG9kcyB0byB1bml0dGVzdC5tb2NrLiBQYXRjaCB3cml0dGVuIGJ5IEFtaXQgU2FoYS4KKwogLSBJc3N1ZSAjMjA1ODk6IEludm9raW5nIFBhdGgub3duZXIoKSBhbmQgUGF0aC5ncm91cCgpIG9uIFdpbmRvd3Mgbm93IHJhaXNlCiAgIE5vdEltcGxlbWVudGVkRXJyb3IgaW5zdGVhZCBvZiBJbXBvcnRFcnJvci4KIAogLSBJc3N1ZSAjMjYxNzc6IEZpeGVkIHRoZSBrZXlzKCkgbWV0aG9kIGZvciBDYW52YXMgYW5kIFNjcm9sbGJhciB3aWRnZXRzLgogCi0tIElzc3VlICMxNTA2ODogR290IHJpZCBvZiBleGNlc3NpdmUgYnVmZmVyaW5nIGluIHRoZSBmaWxlaW5wdXQgbW9kdWxlLgotICBUaGUgYnVmc2l6ZSBwYXJhbWV0ZXIgaXMgbm8gbG9uZ2VyIHVzZWQuCistIElzc3VlICMxNTA2ODogR290IHJpZCBvZiBleGNlc3NpdmUgYnVmZmVyaW5nIGluIGZpbGVpbnB1dC4KKyAgVGhlIGJ1ZnNpemUgcGFyYW1ldGVyIGlzIG5vdyBkZXByZWNhdGVkIGFuZCBpZ25vcmVkLgorCistIElzc3VlICMxOTQ3NTogQWRkZWQgYW4gb3B0aW9uYWwgYXJndW1lbnQgdGltZXNwZWMgdG8gdGhlIGRhdGV0aW1lCisgIGlzb2Zvcm1hdCgpIG1ldGhvZCB0byBjaG9vc2UgdGhlIHByZWNpc2lvbiBvZiB0aGUgdGltZSBjb21wb25lbnQuCiAKIC0gSXNzdWUgIzIyMDI6IEZpeCBVbmJvdW5kTG9jYWxFcnJvciBpbgogICBBYnN0cmFjdERpZ2VzdEF1dGhIYW5kbGVyLmdldF9hbGdvcml0aG1faW1wbHMuICBJbml0aWFsIHBhdGNoIGJ5IE1hdGhpZXUKICAgRHVwdXkuCiAKKy0gSXNzdWUgIzI2MTY3OiBNaW5pbWl6ZWQgb3ZlcmhlYWQgaW4gY29weS5jb3B5KCkgYW5kIGNvcHkuZGVlcGNvcHkoKS4KKyAgT3B0aW1pemVkIGNvcHlpbmcgYW5kIGRlZXBjb3B5aW5nIGJ5dGVhcnJheXMsIE5vdEltcGxlbWVudGVkLCBzbGljZXMsCisgIHNob3J0IGxpc3RzLCB0dXBsZXMsIGRpY3RzLCBzZXRzLgorCiAtIElzc3VlICMyNTcxODogRml4ZWQgcGlja2xpbmcgYW5kIGNvcHlpbmcgdGhlIGFjY3VtdWxhdGUoKSBpdGVyYXRvciB3aXRoCiAgIHRvdGFsIGlzIE5vbmUuCiAKIC0gSXNzdWUgIzI2NDc1OiBGaXhlZCBkZWJ1Z2dpbmcgb3V0cHV0IGZvciByZWd1bGFyIGV4cHJlc3Npb25zIHdpdGggdGhlICg/eCkKICAgZmxhZy4KIAorLSBJc3N1ZSAjMjY0ODI6IEFsbG93ZWQgcGlja2xpbmcgcmVjdXJzaXZlIGRlcXVldWVzLgorCistIElzc3VlICMyNjMzNTogTWFrZSBtbWFwLndyaXRlKCkgcmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbiBsaWtlCisgIG90aGVyIHdyaXRlIG1ldGhvZHMuICBQYXRjaCBieSBKYWt1YiBTdGFzaWFrLgorCiAtIElzc3VlICMyNjQ1NzogRml4ZWQgdGhlIHN1Ym5ldHMoKSBtZXRob2RzIGluIElQIG5ldHdvcmsgY2xhc3NlcyBmb3IgdGhlIGNhc2UKICAgd2hlbiByZXN1bHRpbmcgcHJlZml4IGxlbmd0aCBpcyBlcXVhbCB0byBtYXhpbWFsIHByZWZpeCBsZW5ndGguCiAgIEJhc2VkIG9uIHBhdGNoIGJ5IFhpYW5nIFpoYW5nLgpAQCAtMTA2MCw3ICsyNTM0LDcgQEAKIAogLSBJc3N1ZSAjMjYxODY6IFJlbW92ZSBhbiBpbnZhbGlkIHR5cGUgY2hlY2sgaW4gaW1wb3J0bGliLnV0aWwuTGF6eUxvYWRlci4KIAotLSBJc3N1ZSAjMjYzNjc6IGltcG9ydGxpYi5fX2ltcG9ydF9fKCkgcmFpc2VzIFN5c3RlbUVycm9yIGxpa2UKKy0gSXNzdWUgIzI2MzY3OiBpbXBvcnRsaWIuX19pbXBvcnRfXygpIHJhaXNlcyBJbXBvcnRFcnJvciBsaWtlCiAgIGJ1aWx0aW5zLl9faW1wb3J0X18oKSB3aGVuIGBgbGV2ZWxgYCBpcyBzcGVjaWZpZWQgYnV0IHdpdGhvdXQgYW4gYWNjb21wYW55aW5nCiAgIHBhY2thZ2Ugc3BlY2lmaWVkLgogCkBAIC0xMDY4LDE5ICsyNTQyLDM5IEBACiAgIHRoZSBjb25uZWN0ZWQgc29ja2V0KSB3aGVuIHZlcmlmeV9yZXF1ZXN0KCkgcmV0dXJucyBmYWxzZS4gIFBhdGNoIGJ5IEF2aXYKICAgUGFsaXZvZGEuCiAKKy0gSXNzdWUgIzIzNDMwOiBDaGFuZ2UgdGhlIHNvY2tldHNlcnZlciBtb2R1bGUgdG8gb25seSBjYXRjaCBleGNlcHRpb25zCisgIHJhaXNlZCBmcm9tIGEgcmVxdWVzdCBoYW5kbGVyIHRoYXQgYXJlIGRlcml2ZWQgZnJvbSBFeGNlcHRpb24gKGluc3RlYWQgb2YKKyAgQmFzZUV4Y2VwdGlvbikuICBUaGVyZWZvcmUgU3lzdGVtRXhpdCBhbmQgS2V5Ym9hcmRJbnRlcnJ1cHQgbm8gbG9uZ2VyCisgIHRyaWdnZXIgdGhlIGhhbmRsZV9lcnJvcigpIG1ldGhvZCwgYW5kIHdpbGwgbm93IHRvIHN0b3AgYSBzaW5nbGUtdGhyZWFkZWQKKyAgc2VydmVyLgorCiAtIFtTZWN1cml0eV0gSXNzdWUgIzI1OTM5OiBPbiBXaW5kb3dzIG9wZW4gdGhlIGNlcnQgc3RvcmUgcmVhZG9ubHkgaW4KICAgc3NsLmVudW1fY2VydGlmaWNhdGVzLgogCiAtIElzc3VlICMyNTk5NTogb3Mud2FsaygpIG5vIGxvbmdlciB1c2VzIEZEcyBwcm9wb3J0aW9uYWwgdG8gdGhlIHRyZWUgZGVwdGguCiAKKy0gSXNzdWUgIzI1OTk0OiBBZGRlZCB0aGUgY2xvc2UoKSBtZXRob2QgYW5kIHRoZSBzdXBwb3J0IG9mIHRoZSBjb250ZXh0IG1hbmFnZXIKKyAgcHJvdG9jb2wgZm9yIHRoZSBvcy5zY2FuZGlyKCkgaXRlcmF0b3IuCisKKy0gSXNzdWUgIzIzOTkyOiBtdWx0aXByb2Nlc3Npbmc6IG1ha2UgTWFwUmVzdWx0IG5vdCBmYWlsLWZhc3QgdXBvbiBleGNlcHRpb24uCisKKy0gSXNzdWUgIzI2MjQzOiBTdXBwb3J0IGtleXdvcmQgYXJndW1lbnRzIHRvIHpsaWIuY29tcHJlc3MoKS4gIFBhdGNoIGJ5IEF2aXYKKyAgUGFsaXZvZGEuCisKIC0gSXNzdWUgIzI2MTE3OiBUaGUgb3Muc2NhbmRpcigpIGl0ZXJhdG9yIG5vdyBjbG9zZXMgZmlsZSBkZXNjcmlwdG9yIG5vdCBvbmx5CiAgIHdoZW4gdGhlIGl0ZXJhdGlvbiBpcyBmaW5pc2hlZCwgYnV0IHdoZW4gaXQgd2FzIGZhaWxlZCB3aXRoIGVycm9yLgogCistIElzc3VlICMyNTk0OTogX19kaWN0X18gZm9yIGFuIE9yZGVyZWREaWN0IGluc3RhbmNlIGlzIG5vdyBjcmVhdGVkIG9ubHkgd2hlbgorICBuZWVkZWQuCisKIC0gSXNzdWUgIzI1OTExOiBSZXN0b3JlZCBzdXBwb3J0IG9mIGJ5dGVzIHBhdGhzIGluIG9zLndhbGsoKSBvbiBXaW5kb3dzLgogCiAtIElzc3VlICMyNjA0NTogQWRkIFVURi04IHN1Z2dlc3Rpb24gdG8gZXJyb3IgbWVzc2FnZSB3aGVuIHBvc3RpbmcgYQogICBub24tTGF0aW4tMSBzdHJpbmcgd2l0aCBodHRwLmNsaWVudC4KIAorLSBJc3N1ZSAjMjYwMzk6IEFkZGVkIHppcGZpbGUuWmlwSW5mby5mcm9tX2ZpbGUoKSBhbmQgemlwaW5mby5aaXBJbmZvLmlzX2RpcigpLgorICBQYXRjaCBieSBUaG9tYXMgS2x1eXZlci4KKwogLSBJc3N1ZSAjMTI5MjM6IFJlc2V0IEZhbmN5VVJMb3BlbmVyJ3MgcmVkaXJlY3QgY291bnRlciBldmVuIGlmIHRoZXJlIGlzIGFuCiAgIGV4Y2VwdGlvbi4gIEJhc2VkIG9uIHBhdGNoZXMgYnkgQnJpYW4gQnJhemlsIGFuZCBEYW5pZWwgUm9jY28uCiAKQEAgLTExMDEsNiArMjU5NSwxMCBAQAogICBnZXRob3N0YnluYW1lX2V4KCkgZnVuY3Rpb25zIG9mIHRoZSBzb2NrZXQgbW9kdWxlIG5vdyBkZWNvZGUgdGhlIGhvc3RuYW1lCiAgIGZyb20gdGhlIEFOU0kgY29kZSBwYWdlIHJhdGhlciB0aGFuIFVURi04LgogCistIElzc3VlICMyNjA5OTogVGhlIHNpdGUgbW9kdWxlIG5vdyB3cml0ZXMgYW4gZXJyb3IgaW50byBzdGRlcnIgaWYKKyAgc2l0ZWN1c3RvbWl6ZSBtb2R1bGUgY2FuIGJlIGltcG9ydGVkIGJ1dCBleGVjdXRpbmcgdGhlIG1vZHVsZSByYWlzZSBhbgorICBJbXBvcnRFcnJvci4gU2FtZSBjaGFuZ2UgZm9yIHVzZXJjdXN0b21pemUuCisKIC0gSXNzdWUgIzI2MTQ3OiB4bWxycGMgbm93IHdvcmtzIHdpdGggc3RyaW5ncyBub3QgZW5jb2RhYmxlIHdpdGggdXNlZAogICBub24tVVRGLTggZW5jb2RpbmcuCiAKQEAgLTExMTEsMTMgKzI2MDksMjEgQEAKIC0gSXNzdWUgIzI2MDEzOiBBZGRlZCBjb21wYXRpYmlsaXR5IHdpdGggYnJva2VuIHByb3RvY29sIDIgcGlja2xlcyBjcmVhdGVkCiAgIGluIG9sZCBQeXRob24gMyB2ZXJzaW9ucyAoMy40LjMgYW5kIGxvd2VyKS4KIAorLSBJc3N1ZSAjMjYxMjk6IERlcHJlY2F0ZWQgYWNjZXB0aW5nIG5vbi1pbnRlZ2VycyBpbiBncnAuZ2V0Z3JnaWQoKS4KKwogLSBJc3N1ZSAjMjU4NTA6IFVzZSBjcm9zcy1jb21waWxhdGlvbiBieSBkZWZhdWx0IGZvciA2NC1iaXQgV2luZG93cy4KIAotLSBJc3N1ZSAjMTc2MzM6IEltcHJvdmUgemlwaW1wb3J0J3Mgc3VwcG9ydCBmb3IgbmFtZXNwYWNlIHBhY2thZ2VzLgorLSBJc3N1ZSAjMjU4MjI6IEFkZCBkb2NzdHJpbmdzIHRvIHRoZSBmaWVsZHMgb2YgdXJsbGliLnBhcnNlIHJlc3VsdHMuCisgIFBhdGNoIGNvbnRyaWJ1dGVkIGJ5IFN3YXRpIEphaXN3YWwuCisKKy0gSXNzdWUgIzIyNjQyOiBDb252ZXJ0IHRyYWNlIG1vZHVsZSBvcHRpb24gcGFyc2luZyBtZWNoYW5pc20gdG8gYXJncGFyc2UuCisgIFBhdGNoIGNvbnRyaWJ1dGVkIGJ5IFNpbGVudEdob3N0LgogCiAtIElzc3VlICMyNDcwNTogRml4IHN5c2NvbmZpZy5fcGFyc2VfbWFrZWZpbGUgbm90IGV4cGFuZGluZyAke30gdmFycwogICBhcHBlYXJpbmcgYmVmb3JlICQoKSB2YXJzLgogCistIElzc3VlICMyNjA2OTogUmVtb3ZlIHRoZSBkZXByZWNhdGVkIGFwaXMgaW4gdGhlIHRyYWNlIG1vZHVsZS4KKwogLSBJc3N1ZSAjMjIxMzg6IEZpeCBtb2NrLnBhdGNoIGJlaGF2aW9yIHdoZW4gcGF0Y2hpbmcgZGVzY3JpcHRvcnMuIFJlc3RvcmUKICAgb3JpZ2luYWwgdmFsdWVzIGFmdGVyIHBhdGNoaW5nLiBQYXRjaCBjb250cmlidXRlZCBieSBTZWFuIE1jQ3VsbHkuCiAKQEAgLTExMzAsMTMgKzI2MzYsMjggQEAKIC0gSXNzdWUgIzI0MTIwOiBJZ25vcmUgUGVybWlzc2lvbkVycm9yIHdoZW4gdHJhdmVyc2luZyBhIHRyZWUgd2l0aAogICBwYXRobGliLlBhdGguW3JdZ2xvYigpLiAgUGF0Y2ggYnkgVWxyaWNoIFBldHJpLgogCistIElzc3VlICMyMTgxNTogQWNjZXB0IF0gY2hhcmFjdGVycyBpbiB0aGUgZGF0YSBwb3J0aW9uIG9mIGltYXAgcmVzcG9uc2VzLAorICBpbiBvcmRlciB0byBoYW5kbGUgdGhlIGZsYWdzIHdpdGggc3F1YXJlIGJyYWNrZXRzIGFjY2VwdGVkIGFuZCBwcm9kdWNlZAorICBieSBzZXJ2ZXJzIHN1Y2ggYXMgZ21haWwuCisKIC0gSXNzdWUgIzI1NDQ3OiBmaWxlaW5wdXQgbm93IHVzZXMgc3lzLnN0ZGluIGFzLWlzIGlmIGl0IGRvZXMgbm90IGhhdmUgYQogICBidWZmZXIgYXR0cmlidXRlIChyZXN0b3JlcyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5KS4KIAorLSBJc3N1ZSAjMjU5NzE6IE9wdGltaXplZCBjcmVhdGluZyBGcmFjdGlvbnMgZnJvbSBmbG9hdHMgYnkgMiB0aW1lcyBhbmQgZnJvbQorICBEZWNpbWFscyBieSAzIHRpbWVzLgorCistIElzc3VlICMyNTgwMjogRG9jdW1lbnQgYXMgZGVwcmVjYXRlZCB0aGUgcmVtYWluaW5nIGltcGxlbWVudGF0aW9ucyBvZgorICBpbXBvcnRsaWIuYWJjLkxvYWRlci5sb2FkX21vZHVsZSgpLgorCistIElzc3VlICMyNTkyODogQWRkIERlY2ltYWwuYXNfaW50ZWdlcl9yYXRpbygpLgorCiAtIElzc3VlICMyNTQ0NzogQ29weWluZyB0aGUgbHJ1X2NhY2hlKCkgd3JhcHBlciBvYmplY3Qgbm93IGFsd2F5cyB3b3JrcywKLSAgaW5kZXBlbmRlZGx5IGZyb20gdGhlIHR5cGUgb2YgdGhlIHdyYXBwZWQgb2JqZWN0IChieSByZXR1cm5pbmcgdGhlIG9yaWdpbmFsCisgIGluZGVwZW5kZW50bHkgZnJvbSB0aGUgdHlwZSBvZiB0aGUgd3JhcHBlZCBvYmplY3QgKGJ5IHJldHVybmluZyB0aGUgb3JpZ2luYWwKICAgb2JqZWN0IHVuY2hhbmdlZCkuCiAKKy0gSXNzdWUgIzI1NzY4OiBIYXZlIHRoZSBmdW5jdGlvbnMgaW4gY29tcGlsZWFsbCByZXR1cm4gYm9vbGVhbnMgaW5zdGVhZCBvZgorICBpbnRzIGFuZCBhZGQgcHJvcGVyIGRvY3VtZW50YXRpb24gYW5kIHRlc3RzIGZvciB0aGUgcmV0dXJuIHZhbHVlcy4KKwogLSBJc3N1ZSAjMjQxMDM6IEZpeGVkIHBvc3NpYmxlIHVzZSBhZnRlciBmcmVlIGluIEVsZW1lbnRUcmVlLlhNTFB1bGxQYXJzZXIuCiAKIC0gSXNzdWUgIzI1ODYwOiBvcy5md2FsaygpIG5vIGxvbmdlciBza2lwcyByZW1haW5pbmcgZGlyZWN0b3JpZXMgd2hlbiBlcnJvcgpAQCAtMTE0NCw4ICsyNjY1LDIyIEBACiAKIC0gSXNzdWUgIzI1OTE0OiBGaXhlZCBhbmQgc2ltcGxpZmllZCBPcmRlcmVkRGljdC5fX3NpemVvZl9fLgogCistIElzc3VlICMyNTg2OTogT3B0aW1pemVkIGRlZXBjb3B5aW5nIEVsZW1lbnRUcmVlOyBpdCBpcyBub3cgMjAgdGltZXMgZmFzdGVyLgorCistIElzc3VlICMyNTg3MzogT3B0aW1pemVkIGl0ZXJhdGluZyBFbGVtZW50VHJlZS4gIEl0ZXJhdGluZyBlbGVtZW50cworICBFbGVtZW50Lml0ZXIoKSBpcyBub3cgNDAlIGZhc3RlciwgaXRlcmF0aW5nIHRleHQgRWxlbWVudC5pdGVydGV4dCgpCisgIGlzIG5vdyB1cCB0byAyLjUgdGltZXMgZmFzdGVyLgorCiAtIElzc3VlICMyNTkwMjogRml4ZWQgdmFyaW91cyByZWZjb3VudCBpc3N1ZXMgaW4gRWxlbWVudFRyZWUgaXRlcmF0aW9uLgogCistIElzc3VlICMyMjIyNzogVGhlIFRhckZpbGUgaXRlcmF0b3IgaXMgcmVpbXBsZW1lbnRlZCB1c2luZyBnZW5lcmF0b3IuCisgIFRoaXMgaW1wbGVtZW50YXRpb24gaXMgc2ltcGxlciB0aGF0IHVzaW5nIGNsYXNzLgorCistIElzc3VlICMyNTYzODogT3B0aW1pemVkIEVsZW1lbnRUcmVlLml0ZXJwYXJzZSgpOyBpdCBpcyBub3cgMnggZmFzdGVyLgorICBPcHRpbWl6ZWQgRWxlbWVudFRyZWUgcGFyc2luZzsgaXQgaXMgbm93IDEwJSBmYXN0ZXIuCisKKy0gSXNzdWUgIzI1NzYxOiBJbXByb3ZlZCBkZXRlY3RpbmcgZXJyb3JzIGluIGJyb2tlbiBwaWNrbGUgZGF0YS4KKwogLSBJc3N1ZSAjMjU3MTc6IFJlc3RvcmUgdGhlIHByZXZpb3VzIGJlaGF2aW91ciBvZiB0b2xlcmF0aW5nIG1vc3QgZnN0YXQoKQogICBlcnJvcnMgd2hlbiBvcGVuaW5nIGZpbGVzLiAgVGhpcyB3YXMgYSByZWdyZXNzaW9uIGluIDMuNWExLCBhbmQgc3RvcHBlZAogICBhbm9ueW1vdXMgdGVtcG9yYXJ5IGZpbGVzIGZyb20gd29ya2luZyBpbiBzcGVjaWFsIGNhc2VzLgpAQCAtMTE1Nyw2ICsyNjkyLDkgQEAKIC0gSXNzdWUgIzI1NzY0OiBJbiB0aGUgc3VicHJvY2VzcyBtb2R1bGUsIHByZXNlcnZlIGFueSBleGNlcHRpb24gY2F1c2VkIGJ5CiAgIGZvcmsoKSBmYWlsdXJlIHdoZW4gcHJlZXhlY19mbiBpcyB1c2VkLgogCistIElzc3VlICMyNTc3MTogVHdlYWsgdGhlIGV4Y2VwdGlvbiBtZXNzYWdlIGZvciBpbXBvcnRsaWIudXRpbC5yZXNvbHZlX25hbWUoKQorICB3aGVuICdwYWNrYWdlJyBpc24ndCBzcGVjaWZpZWQgYnV0IG5lY2Vzc2FyeS4KKwogLSBJc3N1ZSAjNjQ3ODogX3N0cnB0aW1lJ3MgcmVnZXhwIGNhY2hlIG5vdyBpcyByZXNldCBhZnRlciBjaGFuZ2luZyB0aW1lem9uZQogICB3aXRoIHRpbWUudHpzZXQoKS4KIApAQCAtMTE3OCw2ICsyNzE2LDkgQEAKIC0gSXNzdWUgIzEwMTMxOiBGaXhlZCBkZWVwIGNvcHlpbmcgb2YgbWluaWRvbSBkb2N1bWVudHMuICBCYXNlZCBvbiBwYXRjaAogICBieSBNYXJpYW4gR2FuaXNpbi4KIAorLSBJc3N1ZSAjNzk5MDogZGlyKCkgb24gRWxlbWVudFRyZWUuRWxlbWVudCBub3cgbGlzdHMgcHJvcGVydGllczogInRhZyIsCisgICJ0ZXh0IiwgInRhaWwiIGFuZCAiYXR0cmliIi4gIE9yaWdpbmFsIHBhdGNoIGJ5IFNhbnRvc28gV2lqYXlhLgorCiAtIElzc3VlICMyNTcyNTogRml4ZWQgYSByZWZlcmVuY2UgbGVhayBpbiBwaWNrbGUubG9hZHMoKSB3aGVuIHVucGlja2xpbmcKICAgaW52YWxpZCBkYXRhIGluY2x1ZGluZyB0dXBsZSBpbnN0cnVjdGlvbnMuCiAKQEAgLTExOTMsNiArMjczNCwyMDMgQEAKIC0gSXNzdWUgIzI1NjI0OiBaaXBGaWxlIG5vdyBhbHdheXMgd3JpdGVzIGEgWklQX1NUT1JFRCBoZWFkZXIgZm9yIGRpcmVjdG9yeQogICBlbnRyaWVzLiAgUGF0Y2ggYnkgRGluZ3l1YW4gV2FuZy4KIAorLSBJc3N1ZSAjMjU2MjY6IENoYW5nZSB0aHJlZSB6bGliIGZ1bmN0aW9ucyB0byBhY2NlcHQgc2l6ZXMgdGhhdCBmaXQgaW4KKyAgUHlfc3NpemVfdCwgYnV0IGludGVybmFsbHkgY2FwIHRob3NlIHNpemVzIHRvIFVJTlRfTUFYLiAgVGhpcyByZXNvbHZlcyBhCisgIHJlZ3Jlc3Npb24gaW4gMy41IHdoZXJlIEd6aXBGaWxlLnJlYWQoKSBmYWlsZWQgdG8gcmVhZCBjaHVua3MgbGFyZ2VyIHRoYW4gMgorICBvciA0IEdpQi4gIFRoZSBjaGFuZ2UgYWZmZWN0cyB0aGUgemxpYi5EZWNvbXByZXNzLmRlY29tcHJlc3MoKSBtYXhfbGVuZ3RoCisgIHBhcmFtZXRlciwgdGhlIHpsaWIuZGVjb21wcmVzcygpIGJ1ZnNpemUgcGFyYW1ldGVyLCBhbmQgdGhlCisgIHpsaWIuRGVjb21wcmVzcy5mbHVzaCgpIGxlbmd0aCBwYXJhbWV0ZXIuCisKKy0gSXNzdWUgIzI1NTgzOiBBdm9pZCBpbmNvcnJlY3QgZXJyb3JzIHJhaXNlZCBieSBvcy5tYWtlZGlycyhleGlzdF9vaz1UcnVlKQorICB3aGVuIHRoZSBPUyBnaXZlcyBwcmlvcml0eSB0byBlcnJvcnMgc3VjaCBhcyBFQUNDRVMgb3ZlciBFRVhJU1QuCisKKy0gSXNzdWUgIzI1NTkzOiBDaGFuZ2Ugc2VtYW50aWNzIG9mIEV2ZW50TG9vcC5zdG9wKCkgaW4gYXN5bmNpby4KKworLSBJc3N1ZSAjNjk3MzogV2hlbiB3ZSBrbm93IGEgc3VicHJvY2Vzcy5Qb3BlbiBwcm9jZXNzIGhhcyBkaWVkLCBkbworICBub3QgYWxsb3cgdGhlIHNlbmRfc2lnbmFsKCksIHRlcm1pbmF0ZSgpLCBvciBraWxsKCkgbWV0aG9kcyB0byBkbworICBhbnl0aGluZyBhcyB0aGV5IGNvdWxkIHBvdGVudGlhbGx5IHNpZ25hbCBhIGRpZmZlcmVudCBwcm9jZXNzLgorCistIElzc3VlICMyMzg4MzogQWRkZWQgbWlzc2luZyBBUElzIHRvIF9fYWxsX18gdG8gbWF0Y2ggdGhlIGRvY3VtZW50ZWQgQVBJcworICBmb3IgdGhlIGZvbGxvd2luZyBtb2R1bGVzOiBjYWxlbmRhciwgY3N2LCBlbnVtLCBmaWxlaW5wdXQsIGZ0cGxpYiwgbG9nZ2luZywKKyAgb3B0cGFyc2UsIHRhcmZpbGUsIHRocmVhZGluZyBhbmQgd2F2ZS4gIEFsc28gYWRkZWQgYQorICB0ZXN0LnN1cHBvcnQuY2hlY2tfX2FsbF9fKCkgaGVscGVyLiAgUGF0Y2hlcyBieSBKYWNlayBLb8WCb2R6aWVqLCBNYXVybworICBTLiBNLiBSb2RyaWd1ZXMgYW5kIEpvZWwgVGFkZGVpLgorCistIElzc3VlICMyNTU5MDogSW4gdGhlIFJlYWRsaW5lIGNvbXBsZXRlciwgb25seSBjYWxsIGdldGF0dHIoKSBvbmNlIHBlcgorICBhdHRyaWJ1dGUuICBBbHNvIGNvbXBsZXRlIG5hbWVzIG9mIGF0dHJpYnV0ZXMgc3VjaCBhcyBwcm9wZXJ0aWVzIGFuZCBzbG90cworICB3aGljaCBhcmUgbGlzdGVkIGJ5IGRpcigpIGJ1dCBub3QgeWV0IGNyZWF0ZWQgb24gYW4gaW5zdGFuY2UuCisKKy0gSXNzdWUgIzI1NDk4OiBGaXggYSBjcmFzaCB3aGVuIGdhcmJhZ2UtY29sbGVjdGluZyBjdHlwZXMgb2JqZWN0cyBjcmVhdGVkCisgIGJ5IHdyYXBwaW5nIGEgbWVtb3J5dmlldy4gIFRoaXMgd2FzIGEgcmVncmVzc2lvbiBtYWRlIGluIDMuNWExLiAgQmFzZWQKKyAgb24gcGF0Y2ggYnkgRXJ5a3N1bi4KKworLSBJc3N1ZSAjMjU1ODQ6IEFkZGVkICJlc2NhcGUiIHRvIHRoZSBfX2FsbF9fIGxpc3QgaW4gdGhlIGdsb2IgbW9kdWxlLgorCistIElzc3VlICMyNTU4NDogRml4ZWQgcmVjdXJzaXZlIGdsb2IoKSB3aXRoIHBhdHRlcm5zIHN0YXJ0aW5nIHdpdGggJ1wqXConLgorCistIElzc3VlICMyNTQ0NjogRml4IHJlZ3Jlc3Npb24gaW4gc210cGxpYidzIEFVVEggTE9HSU4gc3VwcG9ydC4KKworLSBJc3N1ZSAjMTgwMTA6IEZpeCB0aGUgcHlkb2Mgd2ViIHNlcnZlcidzIG1vZHVsZSBzZWFyY2ggZnVuY3Rpb24gdG8gaGFuZGxlCisgIGV4Y2VwdGlvbnMgZnJvbSBpbXBvcnRpbmcgcGFja2FnZXMuCisKKy0gSXNzdWUgIzI1NTU0OiBHb3QgcmlkIG9mIGNpcmN1bGFyIHJlZmVyZW5jZXMgaW4gcmVndWxhciBleHByZXNzaW9uIHBhcnNpbmcuCisKKy0gSXNzdWUgIzE4OTczOiBDb21tYW5kLWxpbmUgaW50ZXJmYWNlIG9mIHRoZSBjYWxlbmRhciBtb2R1bGUgbm93IHVzZXMgYXJncGFyc2UKKyAgaW5zdGVhZCBvZiBvcHRwYXJzZS4KKworLSBJc3N1ZSAjMjU1MTA6IGZpbGVpbnB1dC5GaWxlSW5wdXQucmVhZGxpbmUoKSBub3cgcmV0dXJucyBiJycgaW5zdGVhZCBvZiAnJworICBhdCB0aGUgZW5kIGlmIHRoZSBGaWxlSW5wdXQgd2FzIG9wZW5lZCB3aXRoIGJpbmFyeSBtb2RlLgorICBQYXRjaCBieSBSeW9zdWtlIEl0by4KKworLSBJc3N1ZSAjMjU1MDM6IEZpeGVkIGluc3BlY3QuZ2V0ZG9jKCkgZm9yIGluaGVyaXRlZCBkb2NzdHJpbmdzIG9mIHByb3BlcnRpZXMuCisgIE9yaWdpbmFsIHBhdGNoIGJ5IEpvaG4gTWFyayBWYW5kZW5iZXJnLgorCistIElzc3VlICMyNTUxNTogQWx3YXlzIHVzZSBvcy51cmFuZG9tIGFzIGEgc291cmNlIG9mIHJhbmRvbW5lc3MgaW4gdXVpZC51dWlkNC4KKworLSBJc3N1ZSAjMjE4Mjc6IEZpeGVkIHRleHR3cmFwLmRlZGVudCgpIGZvciB0aGUgY2FzZSB3aGVuIGxhcmdlc3QgY29tbW9uCisgIHdoaXRlc3BhY2UgaXMgYSBzdWJzdHJpbmcgb2Ygc21hbGxlc3QgbGVhZGluZyB3aGl0ZXNwYWNlLgorICBCYXNlZCBvbiBwYXRjaCBieSBSb2JlcnQgTGkuCisKKy0gSXNzdWUgIzI1NDQ3OiBUaGUgbHJ1X2NhY2hlKCkgd3JhcHBlciBvYmplY3RzIG5vdyBjYW4gYmUgY29waWVkIGFuZCBwaWNrbGVkCisgIChieSByZXR1cm5pbmcgdGhlIG9yaWdpbmFsIG9iamVjdCB1bmNoYW5nZWQpLgorCistIElzc3VlICMyNTM5MDogdHlwaW5nOiBEb24ndCBjcmFzaCBvbiBVbmlvbltzdHIsIFBhdHRlcm5dLgorCistIElzc3VlICMyNTQ0MTogYXN5bmNpbzogUmFpc2UgZXJyb3IgZnJvbSBkcmFpbigpIHdoZW4gc29ja2V0IGlzIGNsb3NlZC4KKworLSBJc3N1ZSAjMjU0MTA6IENsZWFuZWQgdXAgYW5kIGZpeGVkIG1pbm9yIGJ1Z3MgaW4gQyBpbXBsZW1lbnRhdGlvbiBvZgorICBPcmRlcmVkRGljdC4KKworLSBJc3N1ZSAjMjU0MTE6IEltcHJvdmVkIFVuaWNvZGUgc3VwcG9ydCBpbiBTTVRQSGFuZGxlciB0aHJvdWdoIGJldHRlciB1c2Ugb2YKKyAgdGhlIGVtYWlsIHBhY2thZ2UuIFRoYW5rcyB0byB1c2VyIHNpbW9uMDQgZm9yIHRoZSBwYXRjaC4KKworLSBNb3ZlIHRoZSBpbXAgbW9kdWxlIGZyb20gYSBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nIHRvIERlcHJlY2F0aW9uV2FybmluZy4KKworLSBJc3N1ZSAjMjU0MDc6IFJlbW92ZSBtZW50aW9ucyBvZiB0aGUgZm9ybWF0dGVyIG1vZHVsZSBiZWluZyByZW1vdmVkIGluCisgIFB5dGhvbiAzLjYuCisKKy0gSXNzdWUgIzI1NDA2OiBGaXhlZCBhIGJ1ZyBpbiBDIGltcGxlbWVudGF0aW9uIG9mIE9yZGVyZWREaWN0Lm1vdmVfdG9fZW5kKCkKKyAgdGhhdCBjYXVzZWQgc2VnbWVudGF0aW9uIGZhdWx0IG9yIGhhbmcgaW4gaXRlcmF0aW5nIGFmdGVyIG1vdmluZyBzZXZlcmFsCisgIGl0ZW1zIHRvIHRoZSBzdGFydCBvZiBvcmRlcmVkIGRpY3QuCisKKy0gSXNzdWUgIzI1MzgyOiBwaWNrbGV0b29scy5kaXMoKSBub3cgb3V0cHV0cyBpbXBsaWNpdCBtZW1vIGluZGV4IGZvciB0aGUKKyAgTUVNT0laRSBvcGNvZGUuCisKKy0gSXNzdWUgIzI1MzU3OiBBZGQgYW4gb3B0aW9uYWwgbmV3bGluZSBwYXJhbWVyIHRvIGJpbmFzY2lpLmIyYV9iYXNlNjQoKS4KKyAgYmFzZTY0LmI2NGVuY29kZSgpIHVzZXMgaXQgdG8gYXZvaWQgYSBtZW1vcnkgY29weS4KKworLSBJc3N1ZSAjMjQxNjQ6IE9iamVjdHMgdGhhdCBuZWVkIGNhbGxpbmcgYGBfX25ld19fYGAgd2l0aCBrZXl3b3JkIGFyZ3VtZW50cywKKyAgY2FuIG5vdyBiZSBwaWNrbGVkIHVzaW5nIHBpY2tsZSBwcm90b2NvbHMgb2xkZXIgdGhhbiBwcm90b2NvbCB2ZXJzaW9uIDQuCisKKy0gSXNzdWUgIzI1MzY0OiB6aXBmaWxlIG5vdyB3b3JrcyBpbiB0aHJlYWRzIGRpc2FibGVkIGJ1aWxkcy4KKworLSBJc3N1ZSAjMjUzMjg6IHNtdHBkJ3MgU01UUENoYW5uZWwgbm93IGNvcnJlY3RseSByYWlzZXMgYSBWYWx1ZUVycm9yIGlmIGJvdGgKKyAgZGVjb2RlX2RhdGEgYW5kIGVuYWJsZV9TTVRQVVRGOCBhcmUgc2V0IHRvIHRydWUuCisKKy0gSXNzdWUgIzE2MDk5OiBSb2JvdEZpbGVQYXJzZXIgbm93IHN1cHBvcnRzIENyYXdsLWRlbGF5IGFuZCBSZXF1ZXN0LXJhdGUKKyAgZXh0ZW5zaW9ucy4gIFBhdGNoIGJ5IE5pa29sYXkgQm9nb3ljaGV2LgorCistIElzc3VlICMyNTMxNjogZGlzdHV0aWxzIHJhaXNlcyBPU0Vycm9yIGluc3RlYWQgb2YgRGlzdHV0aWxzUGxhdGZvcm1FcnJvcgorICB3aGVuIE1TVkMgaXMgbm90IGluc3RhbGxlZC4KKworLSBJc3N1ZSAjMjUzODA6IEZpeGVkIHByb3RvY29sIGZvciB0aGUgU1RBQ0tfR0xPQkFMIG9wY29kZSBpbgorICBwaWNrbGV0b29scy5vcGNvZGVzLgorCistIElzc3VlICMyMzk3MjogVXBkYXRlcyBhc3luY2lvIGRhdGFncmFtIGNyZWF0ZSBtZXRob2QgYWxsb3dpbmcgcmV1c2Vwb3J0CisgIGFuZCByZXVzZWFkZHIgc29ja2V0IG9wdGlvbnMgdG8gYmUgc2V0IHByaW9yIHRvIGJpbmRpbmcgdGhlIHNvY2tldC4KKyAgTWlycm9yaW5nIHRoZSBleGlzdGluZyBhc3luY2lvIGNyZWF0ZV9zZXJ2ZXIgbWV0aG9kIHRoZSByZXVzZWFkZHIgb3B0aW9uCisgIGZvciBkYXRhZ3JhbSBzb2NrZXRzIGRlZmF1bHRzIHRvIFRydWUgaWYgdGhlIE8vUyBpcyAncG9zaXgnIChleGNlcHQgaWYgdGhlCisgIHBsYXRmb3JtIGlzIEN5Z3dpbikuIFBhdGNoIGJ5IENocmlzIExhd3MuCisKKy0gSXNzdWUgIzI1MzA0OiBBZGQgYXN5bmNpby5ydW5fY29yb3V0aW5lX3RocmVhZHNhZmUoKS4gIFRoaXMgbGV0cyB5b3UKKyAgc3VibWl0IGEgY29yb3V0aW5lIHRvIGEgbG9vcCBmcm9tIGFub3RoZXIgdGhyZWFkLCByZXR1cm5pbmcgYQorICBjb25jdXJyZW50LmZ1dHVyZXMuRnV0dXJlLiAgQnkgVmluY2VudCBNaWNoZWwuCisKKy0gSXNzdWUgIzI1MjMyOiBGaXggQ0dJUmVxdWVzdEhhbmRsZXIgdG8gc3BsaXQgdGhlIHF1ZXJ5IGZyb20gdGhlIFVSTCBhdCB0aGUKKyAgZmlyc3QgcXVlc3Rpb24gbWFyayAoPykgcmF0aGVyIHRoYW4gdGhlIGxhc3QuIFBhdGNoIGZyb20gWGlhbmcgWmhhbmcuCisKKy0gSXNzdWUgIzI0NjU3OiBQcmV2ZW50IENHSVJlcXVlc3RIYW5kbGVyIGZyb20gY29sbGFwc2luZyBzbGFzaGVzIGluIHRoZQorICBxdWVyeSBwYXJ0IG9mIHRoZSBVUkwgYXMgaWYgaXQgd2VyZSBhIHBhdGguIFBhdGNoIGZyb20gWGlhbmcgWmhhbmcuCisKKy0gSXNzdWUgIzI1Mjg3OiBEb24ndCBhZGQgY3J5cHQuTUVUSE9EX0NSWVBUIHRvIGNyeXB0Lm1ldGhvZHMgaWYgaXQncyBub3QKKyAgc3VwcG9ydGVkLiBDaGVjayBpZiBpdCBpcyBzdXBwb3J0ZWQsIGl0IG1heSBub3QgYmUgc3VwcG9ydGVkIG9uIE9wZW5CU0QgZm9yCisgIGV4YW1wbGUuCisKKy0gSXNzdWUgIzIzNjAwOiBEZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIHR6aW5mby5mcm9tdXRjKCkgd2FzIHJldHVybmluZworICB3cm9uZyByZXN1bHRzIGluIHNvbWUgY2FzZXMuCisKKy0gSXNzdWUgIzI1MjAzOiBGYWlsZWQgcmVhZGxpbmUuc2V0X2NvbXBsZXRlcl9kZWxpbXMoKSBubyBsb25nZXIgbGVmdCB0aGUKKyAgbW9kdWxlIGluIGluY29uc2lzdGVudCBzdGF0ZS4KKworLSBJc3N1ZSAjMjUwMTE6IHJsY29tcGxldGVyIG5vdyBvbWl0cyBwcml2YXRlIGFuZCBzcGVjaWFsIGF0dHJpYnV0ZSBuYW1lcyB1bmxlc3MKKyAgdGhlIHByZWZpeCBzdGFydHMgd2l0aCB1bmRlcnNjb3Jlcy4KKworLSBJc3N1ZSAjMjUyMDk6IHJsY29tcGxldGVyIG5vdyBjYW4gYWRkIGEgc3BhY2Ugb3IgYSBjb2xvbiBhZnRlciBjb21wbGV0ZWQKKyAga2V5d29yZC4KKworLSBJc3N1ZSAjMjIyNDE6IHRpbWV6b25lLnV0YyBuYW1lIGlzIG5vdyBwbGFpbiAnVVRDJywgbm90ICdVVEMtMDA6MDAnLgorCistIElzc3VlICMyMzUxNzogZnJvbXRpbWVzdGFtcCgpIGFuZCB1dGNmcm9tdGltZXN0YW1wKCkgbWV0aG9kcyBvZgorICBkYXRldGltZS5kYXRldGltZSBub3cgcm91bmQgbWljcm9zZWNvbmRzIHRvIG5lYXJlc3Qgd2l0aCB0aWVzIGdvaW5nIHRvCisgIG5lYXJlc3QgZXZlbiBpbnRlZ2VyIChST1VORF9IQUxGX0VWRU4pLCBhcyByb3VuZChmbG9hdCksIGluc3RlYWQgb2Ygcm91bmRpbmcKKyAgdG93YXJkcyAtSW5maW5pdHkgKFJPVU5EX0ZMT09SKS4KKworLSBJc3N1ZSAjMjM1NTI6IFRpbWVpdCBub3cgd2FybnMgd2hlbiB0aGVyZSBpcyBzdWJzdGFudGlhbCAoNHgpIHZhcmlhbmNlCisgIGJldHdlZW4gYmVzdCBhbmQgd29yc3QgdGltZXMuIFBhdGNoIGZyb20gU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMjQ2MzM6IHNpdGUtcGFja2FnZXMvUkVBRE1FIC0+IFJFQURNRS50eHQuCisKKy0gSXNzdWUgIzI0ODc5OiBoZWxwKCkgYW5kIHB5ZG9jIGNhbiBub3cgbGlzdCBuYW1lZCB0dXBsZSBmaWVsZHMgaW4gdGhlCisgIG9yZGVyIHRoZXkgd2VyZSBkZWZpbmVkIHJhdGhlciB0aGFuIGFscGhhYmV0aWNhbGx5LiAgVGhlIG9yZGVyaW5nIGlzCisgIGRldGVybWluZWQgYnkgdGhlIF9maWVsZHMgYXR0cmlidXRlIGlmIHByZXNlbnQuCisKKy0gSXNzdWUgIzI0ODc0OiBJbXByb3ZlIHNwZWVkIG9mIGl0ZXJ0b29scy5jeWNsZSgpIGFuZCBtYWtlIGl0cworICBwaWNrbGUgbW9yZSBjb21wYWN0LgorCistIEZpeCBjcmFzaCBpbiBpdGVydG9vbHMuY3ljbGUuX19zZXRzdGF0ZV9fKCkgd2hlbiB0aGUgZmlyc3QgYXJndW1lbnQgd2Fzbid0CisgIGEgbGlzdC4KKworLSBJc3N1ZSAjMjAwNTk6IHVybGxpYi5wYXJzZSByYWlzZXMgVmFsdWVFcnJvciBvbiBhbGwgaW52YWxpZCBwb3J0cy4KKyAgUGF0Y2ggYnkgTWFydGluIFBhbnRlci4KKworLSBJc3N1ZSAjMjQzNjA6IEltcHJvdmUgX19yZXByX18gb2YgYXJncGFyc2UuTmFtZXNwYWNlKCkgZm9yIGludmFsaWQKKyAgaWRlbnRpZmllcnMuICBQYXRjaCBieSBNYXR0aGlhcyBCdXNzb25uaWVyLgorCistIElzc3VlICMyMzQyNjogcnVuX3NldHVwIHdhcyBicm9rZW4gaW4gZGlzdHV0aWxzLgorICBQYXRjaCBmcm9tIEFsZXhhbmRlciBCZWxvcG9sc2t5LgorCistIElzc3VlICMxMzkzODogMnRvMyBjb252ZXJ0cyBTdHJpbmdUeXBlcyB0byBhIHR1cGxlLiBQYXRjaCBmcm9tIE1hcmsgSGFtbW9uZC4KKworLSBJc3N1ZSAjMjA5MTogb3BlbigpIGFjY2VwdGVkIGEgJ1UnIG1vZGUgc3RyaW5nIGNvbnRhaW5pbmcgJysnLCBidXQgJ1UnIGNhbgorICBvbmx5IGJlIHVzZWQgd2l0aCAncicuIFBhdGNoIGZyb20gSmVmZiBCYWxvZ2ggYW5kIEpvaG4gTydDb25ub3IuCisKKy0gSXNzdWUgIzg1ODU6IGltcHJvdmVkIHRlc3RzIGZvciB6aXBpbXBvcnRlcjIuIFBhdGNoIGZyb20gTWFyayBMYXdyZW5jZS4KKworLSBJc3N1ZSAjMTg2MjI6IHVuaXR0ZXN0Lm1vY2subW9ja19vcGVuKCkucmVzZXRfbW9jayB3b3VsZCByZWN1cnNlIGluZmluaXRlbHkuCisgIFBhdGNoIGZyb20gTmljb2xhIFBhbHVtYm8gYW5kIExhdXJlbnQgRGUgQnV5c3QuCisKKy0gSXNzdWUgIzI0NDI2OiBGYXN0IHNlYXJjaGluZyBvcHRpbWl6YXRpb24gaW4gcmVndWxhciBleHByZXNzaW9ucyBub3cgd29ya3MKKyAgZm9yIHBhdHRlcm5zIHRoYXQgc3RhcnRzIHdpdGggY2FwdHVyaW5nIGdyb3Vwcy4gIEZhc3Qgc2VhcmNoaW5nIG9wdGltaXphdGlvbgorICBub3cgY2FuJ3QgYmUgZGlzYWJsZWQgYXQgY29tcGlsZSB0aW1lLgorCistIElzc3VlICMyMzY2MTogdW5pdHRlc3QubW9jayBzaWRlX2VmZmVjdHMgY2FuIG5vdyBiZSBleGNlcHRpb25zIGFnYWluLiBUaGlzCisgIHdhcyBhIHJlZ3Jlc3Npb24gdnMgUHl0aG9uIDMuNC4gUGF0Y2ggZnJvbSBJZ25hY2lvIFJvc3NpCisKKy0gSXNzdWUgIzEzMjQ4OiBSZW1vdmUgZGVwcmVjYXRlZCBpbnNwZWN0LmdldG1vZHVsZWluZm8gZnVuY3Rpb24uCisKKy0gSXNzdWUgIzI1NTc4OiBGaXggKGFub3RoZXIpIG1lbW9yeSBsZWFrIGluIFNTTFNvY2tldC5nZXRwZWVyY2VyKCkuCisKKy0gSXNzdWUgIzI1NTMwOiBEaXNhYmxlIHRoZSB2dWxuZXJhYmxlIFNTTHYzIHByb3RvY29sIGJ5IGRlZmF1bHQgd2hlbiBjcmVhdGluZworICBzc2wuU1NMQ29udGV4dC4KKworLSBJc3N1ZSAjMjU1Njk6IEZpeCBtZW1vcnkgbGVhayBpbiBTU0xTb2NrZXQuZ2V0cGVlcmNlcnQoKS4KKworLSBJc3N1ZSAjMjU0NzE6IFNvY2tldHMgcmV0dXJuZWQgZnJvbSBhY2NlcHQoKSBzaG91bGRuJ3QgYXBwZWFyIHRvIGJlCisgIG5vbmJsb2NraW5nLgorCistIElzc3VlICMyNTMxOTogV2hlbiB0aHJlYWRpbmcuRXZlbnQgaXMgcmVpbml0aWFsaXplZCwgdGhlIHVuZGVybHlpbmcgY29uZGl0aW9uCisgIHNob3VsZCB1c2UgYSByZWd1bGFyIGxvY2sgcmF0aGVyIHRoYW4gYSByZWN1cnNpdmUgbG9jay4KKwogLSBTa2lwIGdldGFkZHJpbmZvIGlmIGhvc3QgaXMgYWxyZWFkeSByZXNvbHZlZC4KICAgUGF0Y2ggYnkgQS4gSmVzc2UgSmlyeXUgRGF2aXMuCiAKQEAgLTEyMTIsNTMgKzI5NTAsOSBAQAogCiAtIElzc3VlICMyNzA0MTogYXN5bmNpbzogQWRkIGxvb3AuY3JlYXRlX2Z1dHVyZSBtZXRob2QKIAotLSBJc3N1ZSAjMjcyMjM6IGFzeW5jaW86IEZpeCBfcmVhZF9yZWFkeSBhbmQgX3dyaXRlX3JlYWR5IHRvIHJlc3BlY3QKLSAgX2Nvbm5fbG9zdC4KLSAgUGF0Y2ggYnkgxYF1a2FzeiBMYW5nYS4KLQotLSBJc3N1ZSAjMjI5NzA6IGFzeW5jaW86IEZpeCBpbmNvbnNpc3RlbmN5IGNhbmNlbGxpbmcgQ29uZGl0aW9uLndhaXQuCi0gIFBhdGNoIGJ5IERhdmlkIENvbGVzLgotCiBJRExFCiAtLS0tCiAKLS0gSXNzdWUgIzUxMjQ6IFBhc3RlIHdpdGggdGV4dCBzZWxlY3RlZCBub3cgcmVwbGFjZXMgdGhlIHNlbGVjdGlvbiBvbiBYMTEuCi0gIFRoaXMgbWF0Y2hlcyBob3cgcGFzdGUgd29ya3Mgb24gV2luZG93cywgTWFjLCBtb3N0IG1vZGVybiBMaW51eCBhcHBzLAotICBhbmQgdHRrIHdpZGdldHMuICBPcmlnaW5hbCBwYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMyNDc1OTogTWFrZSBjbGVhciBpbiBpZGxlbGliLmlkbGVfdGVzdC5fX2luaXRfXyB0aGF0IHRoZSBkaXJlY3RvcnkKLSAgaXMgYSBwcml2YXRlIGltcGxlbWVudGF0aW9uIG9mIHRlc3QudGVzdF9pZGxlIGFuZCB0b29sIGZvciBtYWludGFpbmVycy4KLQotLSBJc3N1ZSAjMjcxOTY6IFN0b3AgJ1RoZW1lQ2hhbmdlZCcgd2FybmluZ3Mgd2hlbiBydW5uaW5nIElETEUgdGVzdHMuCi0gIFRoZXNlIHBlcnNpc3RlZCBhZnRlciBvdGhlciB3YXJuaW5ncyB3ZXJlIHN1cHByZXNzZWQgaW4gIzIwNTY3LgotICBBcHBseSBTZXJoaXkgU3RvcmNoYWthJ3MgdXBkYXRlX2lkbGV0YXNrcyBzb2x1dGlvbiB0byBmb3VyIHRlc3QgZmlsZXMuCi0gIFJlY29yZCB0aGlzIGFkZGl0aW9uYWwgYWR2aWNlIGluIGlkbGVfdGVzdC9SRUFETUUudHh0Ci0KLS0gSXNzdWUgIzIwNTY3OiBSZXZpc2UgaWRsZV90ZXN0L1JFQURNRS50eHQgd2l0aCBhZHZpY2UgYWJvdXQgYXZvaWRpbmcKLSAgdGsgd2FybmluZyBtZXNzYWdlcyBmcm9tIHRlc3RzLiAgQXBwbHkgYWR2aWNlIHRvIHNldmVyYWwgSURMRSB0ZXN0cy4KLQotLSBJc3N1ZSAjMjcxMTc6IE1ha2UgY29sb3JpemVyIGh0ZXN0IGFuZCB0dXJ0bGVkZW1vIHdvcmsgd2l0aCBkYXJrIHRoZW1lcy4KLSAgTW92ZSBjb2RlIGZvciBjb25maWd1cmluZyB0ZXh0IHdpZGdldCBjb2xvcnMgdG8gYSBuZXcgZnVuY3Rpb24uCi0KLS0gSXNzdWUgIzI2NjczOiBXaGVuIHRrIHJlcG9ydHMgZm9udCBzaXplIGFzIDAsIGNoYW5nZSB0byBzaXplIDEwLgotICBTdWNoIGZvbnRzIG9uIExpbnV4IHByZXZlbnRlZCB0aGUgY29uZmlndXJhdGlvbiBkaWFsb2cgZnJvbSBvcGVuaW5nLgotCi0tIElzc3VlICMyMTkzOTogQWRkIHRlc3QgZm9yIElETEUncyBwZXJjb2xhdG9yLgotICBPcmlnaW5hbCBwYXRjaCBieSBTYWltYWRoYXYgSGVibGlrYXIuCi0KLS0gSXNzdWUgIzIxNjc2OiBBZGQgdGVzdCBmb3IgSURMRSdzIHJlcGxhY2UgZGlhbG9nLgotICBPcmlnaW5hbCBwYXRjaCBieSBTYWltYWRoYXYgSGVibGlrYXIuCi0KLS0gSXNzdWUgIzE4NDEwOiBBZGQgdGVzdCBmb3IgSURMRSdzIHNlYXJjaCBkaWFsb2cuCi0gIE9yaWdpbmFsIHBhdGNoIGJ5IFdlc3RsZXkgTWFydMOtbmV6LgotCi0tIElzc3VlICMyMTcwMzogQWRkIHRlc3QgZm9yIElETEUncyB1bmRvIGRlbGVnYXRvci4KLSAgT3JpZ2luYWwgcGF0Y2ggYnkgU2FpbWFkaGF2IEhlYmxpa2FyIC4KLQotLSBJc3N1ZSAjMjcwNDQ6IEFkZCBDb25maWdEaWFsb2cucmVtb3ZlX3Zhcl9jYWxsYmFja3MgdG8gc3RvcCBtZW1vcnkgbGVha3MuCi0KLS0gSXNzdWUgIzIzOTc3OiBBZGQgbW9yZSBhc3NlcnRzIHRvIHRlc3RfZGVsZWdhdG9yLgotCiAtIElzc3VlICMyMDY0MDogQWRkIHRlc3RzIGZvciBpZGxlbGliLmNvbmZpZ0hlbHBTb3VyY2VFZGl0LgogICBQYXRjaCBieSBTYWltYWRoYXYgSGVibGlrYXIuCiAKQEAgLTEyNzIsMTQgKzI5NjYsMTAzIEBACiAgIE1BUksgaW4gUkVBRE1FLnR4dCBhbmQgb3BlbiB0aGlzIGFuZCBORVdTLnR4dCB3aXRoICdhc2NpaScuCiAgIFJlLWVuY29kZSBDUkVESVRTLnR4dCB0byB1dGYtOCBhbmQgb3BlbiBpdCB3aXRoICd1dGYtOCcuCiAKKy0gSXNzdWUgIzE1MzQ4OiBTdG9wIHRoZSBkZWJ1Z2dlciBlbmdpbmUgKG5vcm1hbGx5IGluIGEgdXNlciBwcm9jZXNzKQorICBiZWZvcmUgY2xvc2luZyB0aGUgZGVidWdnZXIgd2luZG93IChydW5uaW5nIGluIHRoZSBJRExFIHByb2Nlc3MpLgorICBUaGlzIHByZXZlbnRzIHRoZSBSdW50aW1lRXJyb3JzIHRoYXQgd2VyZSBiZWluZyBjYXVnaHQgYW5kIGlnbm9yZWQuCisKKy0gSXNzdWUgIzI0NDU1OiBQcmV2ZW50IElETEUgZnJvbSBoYW5naW5nIHdoZW4gYSkgY2xvc2luZyB0aGUgc2hlbGwgd2hpbGUgdGhlCisgIGRlYnVnZ2VyIGlzIGFjdGl2ZSAoMTUzNDcpOyBiKSBjbG9zaW5nIHRoZSBkZWJ1Z2dlciB3aXRoIHRoZSBbWF0gYnV0dG9uCisgICgxNTM0OCk7IGFuZCBjKSBhY3RpdmF0aW5nIHRoZSBkZWJ1Z2dlciB3aGVuIGFscmVhZHkgYWN0aXZlICgyNDQ1NSkuCisgIFRoZSBwYXRjaCBieSBNYXJrIFJvc2VtYW4gZG9lcyB0aGlzIGJ5IG1ha2luZyB0d28gY2hhbmdlcy4KKyAgMS4gU3VzcGVuZCBhbmQgcmVzdW1lIHRoZSBndWkuaW50ZXJhY3Rpb24gbWV0aG9kIHdpdGggdGhlIHRjbCB2d2FpdAorICBtZWNoYW5pc20gaW50ZW5kZWQgZm9yIHRoaXMgcHVycG9zZSAoaW5zdGVhZCBvZiByb290Lm1haW5sb29wICYgLnF1aXQpLgorICAyLiBJbiBndWkucnVuLCBhbGxvdyBhbnkgZXhpc3RpbmcgaW50ZXJhY3Rpb24gdG8gdGVybWluYXRlIGZpcnN0LgorCistIENoYW5nZSAnVGhlIHByb2dyYW0nIHRvICdZb3VyIHByb2dyYW0nIGluIGFuIElETEUgJ2tpbGwgcHJvZ3JhbT8nIG1lc3NhZ2UKKyAgdG8gbWFrZSBpdCBjbGVhcmVyIHRoYXQgdGhlIHByb2dyYW0gcmVmZXJyZWQgdG8gaXMgdGhlIGN1cnJlbnRseSBydW5uaW5nCisgIHVzZXIgcHJvZ3JhbSwgbm90IElETEUgaXRzZWxmLgorCistIElzc3VlICMyNDc1MDogSW1wcm92ZSB0aGUgYXBwZWFyYW5jZSBvZiB0aGUgSURMRSBlZGl0b3Igd2luZG93IHN0YXR1cyBiYXIuCisgIFBhdGNoIGJ5IE1hcmsgUm9zZW1hbi4KKworLSBJc3N1ZSAjMjUzMTM6IENoYW5nZSB0aGUgaGFuZGxpbmcgb2YgbmV3IGJ1aWx0LWluIHRleHQgY29sb3IgdGhlbWVzIHRvIGJldHRlcgorICBhZGRyZXNzIHRoZSBjb21wYXRpYmlsaXR5IHByb2JsZW0gaW50cm9kdWNlZCBieSB0aGUgYWRkaXRpb24gb2YgSURMRSBEYXJrLgorICBDb25zaXN0ZW50bHkgdXNlIHRoZSByZXZpc2VkIGlkbGVDb25mLkN1cnJlbnRUaGVtZSBldmVyeXdoZXJlIGluIGlkbGVsaWIuCisKKy0gSXNzdWUgIzI0NzgyOiBFeHRlbnNpb24gY29uZmlndXJhdGlvbiBpcyBub3cgYSB0YWIgaW4gdGhlIElETEUgUHJlZmVyZW5jZXMKKyAgZGlhbG9nIHJhdGhlciB0aGFuIGEgc2VwYXJhdGUgZGlhbG9nLiAgVGhlIGZvcm1lciB0YWJzIGFyZSBub3cgYSBzb3J0ZWQKKyAgbGlzdC4gIFBhdGNoIGJ5IE1hcmsgUm9zZW1hbi4KKworLSBJc3N1ZSAjMjI3MjY6IFJlLWFjdGl2YXRlIHRoZSBjb25maWcgZGlhbG9nIGhlbHAgYnV0dG9uIHdpdGggc29tZSBjb250ZW50CisgIGFib3V0IHRoZSBvdGhlciBidXR0b25zIGFuZCB0aGUgbmV3IElETEUgRGFyayB0aGVtZS4KKworLSBJc3N1ZSAjMjQ4MjA6IElETEUgbm93IGhhcyBhbiAnSURMRSBEYXJrJyBidWlsdC1pbiB0ZXh0IGNvbG9yIHRoZW1lLgorICBJdCBpcyBtb3JlIG9yIGxlc3MgSURMRSBDbGFzc2ljIGludmVydGVkLCB3aXRoIGEgY29iYWx0IGJsdWUgYmFja2dyb3VuZC4KKyAgU3RyaW5ncywgY29tbWVudHMsIGtleXdvcmRzLCAuLi4gYXJlIHN0aWxsIGdyZWVuLCByZWQsIG9yYW5nZSwgLi4uIC4KKyAgVG8gdXNlIGl0IHdpdGggSURMRXMgcmVsZWFzZWQgYmVmb3JlIE5vdmVtYmVyIDIwMTUsIGhpdCB0aGUKKyAgJ1NhdmUgYXMgTmV3IEN1c3RvbSBUaGVtZScgYnV0dG9uIGFuZCBlbnRlciBhIG5ldyBuYW1lLAorICBzdWNoIGFzICdDdXN0b20gRGFyaycuICBUaGUgY3VzdG9tIHRoZW1lIHdpbGwgd29yayB3aXRoIGFueSBJRExFCisgIHJlbGVhc2UsIGFuZCBjYW4gYmUgbW9kaWZpZWQuCisKKy0gSXNzdWUgIzI1MjI0OiBSRUFETUUudHh0IGlzIG5vdyBhbiBpZGxlbGliIGluZGV4IGZvciBJRExFIGRldmVsb3BlcnMgYW5kCisgIGN1cmlvdXMgdXNlcnMuICBUaGUgcHJldmlvdXMgdXNlciBjb250ZW50IGlzIG5vdyBpbiB0aGUgSURMRSBkb2MgY2hhcHRlci4KKyAgJ0lETEUnIG5vdyBtZWFucyAnSW50ZWdyYXRlZCBEZXZlbG9wbWVudCBhbmQgTGVhcm5pbmcgRW52aXJvbm1lbnQnLgorCistIElzc3VlICMyNDgyMDogVXNlcnMgY2FuIG5vdyBzZXQgYnJlYWtwb2ludCBjb2xvcnMgaW4KKyAgU2V0dGluZ3MgLT4gQ3VzdG9tIEhpZ2hsaWdodGluZy4gIE9yaWdpbmFsIHBhdGNoIGJ5IE1hcmsgUm9zZW1hbi4KKworLSBJc3N1ZSAjMjQ5NzI6IEluYWN0aXZlIHNlbGVjdGlvbiBiYWNrZ3JvdW5kIG5vdyBtYXRjaGVzIGFjdGl2ZSBzZWxlY3Rpb24KKyAgYmFja2dyb3VuZCwgYXMgY29uZmlndXJlZCBieSB1c2Vycywgb24gYWxsIHN5c3RlbXMuICBGb3VuZCBpdGVtcyBhcmUgbm93CisgIGFsd2F5cyBoaWdobGlnaHRlZCBvbiBXaW5kb3dzLiAgSW5pdGlhbCBwYXRjaCBieSBNYXJrIFJvc2VtYW4uCisKKy0gSXNzdWUgIzI0NTcwOiBJZGxlOiBtYWtlIGNhbGx0aXAgYW5kIGNvbXBsZXRpb24gYm94ZXMgYXBwZWFyIG9uIE1hY3MKKyAgYWZmZWN0ZWQgYnkgYSB0ayByZWdyZXNzaW9uLiAgSW5pdGlhbCBwYXRjaCBieSBNYXJrIFJvc2VtYW4uCisKKy0gSXNzdWUgIzI0OTg4OiBJZGxlIFNjcm9sbGVkTGlzdCBjb250ZXh0IG1lbnVzICh1c2VkIGluIGRlYnVnZ2VyKQorICBub3cgd29yayBvbiBNYWMgQXF1YS4gIFBhdGNoIGJ5IE1hcmsgUm9zZW1hbi4KKworLSBJc3N1ZSAjMjQ4MDE6IE1ha2UgcmlnaHQtY2xpY2sgZm9yIGNvbnRleHQgbWVudSB3b3JrIG9uIE1hYyBBcXVhLgorICBQYXRjaCBieSBNYXJrIFJvc2VtYW4uCisKKy0gSXNzdWUgIzI1MTczOiBBc3NvY2lhdGUgdGtpbnRlciBtZXNzYWdlYm94ZXMgd2l0aCBhIHNwZWNpZmljIHdpZGdldC4KKyAgRm9yIE1hYyBPU1gsIG1ha2UgdGhlbSBhICdzaGVldCcuICBQYXRjaCBieSBNYXJrIFJvc2VtYW4uCisKKy0gSXNzdWUgIzI1MTk4OiBFbmhhbmNlIHRoZSBpbml0aWFsIGh0bWwgdmlld2VyIG5vdyB1c2VkIGZvciBJZGxlIEhlbHAuCisgICogUHJvcGVybHkgaW5kZW50IGZpeGVkLXBpdGNoIHRleHQgKHBhdGNoIGJ5IE1hcmsgUm9zZW1hbikuCisgICogR2l2ZSBjb2RlIHNuaXBwZXQgYSB2ZXJ5IFNwaGlueC1saWtlIGxpZ2h0IGJsdWVpc2gtZ3JheSBiYWNrZ3JvdW5kLgorICAqIFJlLXVzZSBpbml0aWFsIHdpZHRoIGFuZCBoZWlnaHQgc2V0IGJ5IHVzZXJzIGZvciBzaGVsbCBhbmQgZWRpdG9yLgorICAqIFdoZW4gdGhlIFRhYmxlIG9mIENvbnRlbnRzIChUT0MpIG1lbnUgaXMgdXNlZCwgcHV0IHRoZSBzZWN0aW9uIGhlYWRlcgorICBhdCB0aGUgdG9wIG9mIHRoZSBzY3JlZW4uCisKKy0gSXNzdWUgIzI1MjI1OiBDb25kZW5zZSBhbmQgcmV3cml0ZSBJZGxlIGRvYyBzZWN0aW9uIG9uIHRleHQgY29sb3JzLgorCistIElzc3VlICMyMTk5NTogRXhwbGFpbiBzb21lIGRpZmZlcmVuY2VzIGJldHdlZW4gSURMRSBhbmQgY29uc29sZSBQeXRob24uCisKKy0gSXNzdWUgIzIyODIwOiBFeHBsYWluIG5lZWQgZm9yICpwcmludCogd2hlbiBydW5uaW5nIGZpbGUgZnJvbSBJZGxlIGVkaXRvci4KKworLSBJc3N1ZSAjMjUyMjQ6IERvYzogYXVnbWVudCBJZGxlIGZlYXR1cmUgbGlzdCBhbmQgbm8tc3VicHJvY2VzcyBzZWN0aW9uLgorCistIElzc3VlICMyNTIxOTogVXBkYXRlIGRvYyBmb3IgSWRsZSBjb21tYW5kIGxpbmUgb3B0aW9ucy4KKyAgU29tZSB3ZXJlIG1pc3NpbmcgYW5kIG5vdGVzIHdlcmUgbm90IGNvcnJlY3QuCisKKy0gSXNzdWUgIzI0ODYxOiBNb3N0IG9mIGlkbGVsaWIgaXMgcHJpdmF0ZSBhbmQgc3ViamVjdCB0byBjaGFuZ2UuCisgIFVzZSBpZGxlaWIuaWRsZS4qIHRvIHN0YXJ0IElkbGUuIFNlZSBpZGxlbGliLl9faW5pdF9fLl9fZG9jX18uCisKKy0gSXNzdWUgIzI1MTk5OiBJZGxlOiBhZGQgc3luY2hyb25pemF0aW9uIGNvbW1lbnRzIGZvciBmdXR1cmUgbWFpbnRhaW5lcnMuCisKKy0gSXNzdWUgIzE2ODkzOiBSZXBsYWNlIGhlbHAudHh0IHdpdGggaGVscC5odG1sIGZvciBJZGxlIGRvYyBkaXNwbGF5LgorICBUaGUgbmV3IGlkbGVsaWIvaGVscC5odG1sIGlzIHJzdHJpcHBlZCBEb2MvYnVpbGQvaHRtbC9saWJyYXJ5L2lkbGUuaHRtbC4KKyAgSXQgbG9va3MgYmV0dGVyIHRoYW4gaGVscC50eHQgYW5kIHdpbGwgYmV0dGVyIGRvY3VtZW50IElkbGUgYXMgcmVsZWFzZWQuCisgIFRoZSB0a2ludGVyIGh0bWwgdmlld2VyIHRoYXQgd29ya3MgZm9yIHRoaXMgZmlsZSB3YXMgd3JpdHRlbiBieSBSb3NlIFJvc2VtYW4uCisgIFRoZSBub3cgdW51c2VkIEVkaXRvcldpbmRvdy5IZWxwRGlhbG9nIGNsYXNzIGFuZCBoZWx0LnR4dCBmaWxlIGFyZSBkZXByZWNhdGVkLgorCistIElzc3VlICMyNDE5OTogRGVwcmVjYXRlIHVudXNlZCBpZGxlbGliLmlkbGV2ZXIgd2l0aCBwb3NzaWJsZSByZW1vdmFsIGluIDMuNi4KKworLSBJc3N1ZSAjMjQ3OTA6IFJlbW92ZSBleHRyYW5lb3VzIGNvZGUgKHdoaWNoIGFsc28gY3JlYXRlIDIgJiAzIGNvbmZsaWN0cykuCisKIERvY3VtZW50YXRpb24KIC0tLS0tLS0tLS0tLS0KIAotLSBJc3N1ZSAjMTk0ODk6IE1vdmVkIHRoZSBzZWFyY2ggYm94IGZyb20gdGhlIHNpZGViYXIgdG8gdGhlIGhlYWRlciBhbmQgZm9vdGVyCi0gIG9mIGVhY2ggcGFnZS4gIFBhdGNoIGJ5IEFtbWFyIEFza2FyLgotCi0tIElzc3VlICMyNDEzNjogRG9jdW1lbnQgdGhlIG5ldyBQRVAgNDQ4IHVucGFja2luZyBzeW50YXggb2YgMy41LgotCiAtIElzc3VlICMyNjczNjogVXNlZCBIVFRQUyBmb3IgZXh0ZXJuYWwgbGlua3MgaW4gdGhlIGRvY3VtZW50YXRpb24gaWYgcG9zc2libGUuCiAKIC0gSXNzdWUgIzY5NTM6IFJld29yayB0aGUgUmVhZGxpbmUgbW9kdWxlIGRvY3VtZW50YXRpb24gdG8gZ3JvdXAgcmVsYXRlZApAQCAtMTI4OCw4ICszMDcxLDggQEAKIAogLSBJc3N1ZSAjMjM2MDY6IEFkZHMgbm90ZSB0byBjdHlwZXMgZG9jdW1lbnRhdGlvbiByZWdhcmRpbmcgY2RsbC5tc3ZjcnQuCiAKLS0gSXNzdWUgIzI1NTAwOiBGaXggZG9jdW1lbnRhdGlvbiB0byBub3QgY2xhaW0gdGhhdCBfX2ltcG9ydF9fIGlzIHNlYXJjaGVkIGZvcgotICBpbiB0aGUgZ2xvYmFsIHNjb3BlLgorLSBJc3N1ZSAjMjQ5NTI6IENsYXJpZnkgdGhlIGRlZmF1bHQgc2l6ZSBhcmd1bWVudCBvZiBzdGFja19zaXplKCkgaW4KKyAgdGhlICJ0aHJlYWRpbmciIGFuZCAiX3RocmVhZCIgbW9kdWxlcy4gUGF0Y2ggZnJvbSBNYXR0aXAuCiAKIC0gSXNzdWUgIzI2MDE0OiBVcGRhdGUgMy54IHBhY2thZ2luZyBkb2N1bWVudGF0aW9uOgogICAqICJTZWUgYWxzbyIgbGlua3MgdG8gdGhlIG5ldyBkb2NzIGFyZSBub3cgcHJvdmlkZWQgaW4gdGhlIGxlZ2FjeSBwYWdlcwpAQCAtMTMwMSw2ICszMDg0LDkgQEAKIC0gSXNzdWUgIzIxOTE2OiBBZGRlZCB0ZXN0cyBmb3IgdGhlIHR1cnRsZSBtb2R1bGUuICBQYXRjaCBieSBpbmdyaWQsCiAgIEdyZWdvcnkgTG95c2UgYW5kIEplbGxlIFppamxzdHJhLgogCistIElzc3VlICMyNjI5NTogV2hlbiB1c2luZyAicHl0aG9uMyAtbSB0ZXN0IC0tdGVzdGRpcj1URVNURElSIiwgcmVncnRlc3QKKyAgZG9lc24ndCBhZGQgInRlc3QuIiBwcmVmaXggdG8gdGVzdCBtb2R1bGUgbmFtZXMuCisKIC0gSXNzdWUgIzI2NTIzOiBUaGUgbXVsdGlwcm9jZXNzaW5nIHRocmVhZCBwb29sIChtdWx0aXByb2Nlc3NpbmcuZHVtbXkuUG9vbCkKICAgd2FzIHVudGVzdGVkLgogCkBAIC0xMzA5LDMxICszMDk1LDUwIEBACiAtIElzc3VlICMyNjMyNTogQWRkZWQgdGVzdC5zdXBwb3J0LmNoZWNrX25vX3Jlc291cmNlX3dhcm5pbmcoKSB0byBjaGVjayB0aGF0CiAgIG5vIFJlc291cmNlV2FybmluZyBpcyBlbWl0dGVkLgogCi0tIElzc3VlICMyNTk0MDogQ2hhbmdlZCB0ZXN0X3NzbCB0byB1c2Ugc2VsZi1zaWduZWQucHl0aG9udGVzdC5uZXQuICBUaGlzCistIElzc3VlICMyNTk0MDogQ2hhbmdlZCB0ZXN0X3NzbCB0byB1c2UgaXRzIGludGVybmFsIGxvY2FsIHNlcnZlciBtb3JlLiAgVGhpcwogICBhdm9pZHMgcmVseWluZyBvbiBzdm4ucHl0aG9uLm9yZywgd2hpY2ggcmVjZW50bHkgY2hhbmdlZCByb290IGNlcnRpZmljYXRlLgogCiAtIElzc3VlICMyNTYxNjogVGVzdHMgZm9yIE9yZGVyZWREaWN0IGFyZSBleHRyYWN0ZWQgZnJvbSB0ZXN0X2NvbGxlY3Rpb25zCiAgIGludG8gc2VwYXJhdGUgZmlsZSB0ZXN0X29yZGVyZWRfZGljdC4KIAorLSBJc3N1ZSAjMjU0NDk6IEFkZGVkIHRlc3RzIGZvciBPcmRlcmVkRGljdCBzdWJjbGFzc2VzLgorCistIElzc3VlICMyNTE4ODogQWRkIC1QLy0tcGdvIHRvIHRlc3QucmVncnRlc3QgdG8gc3VwcHJlc3MgZXJyb3Igb3V0cHV0IHdoZW4KKyAgcnVubmluZyB0aGUgdGVzdCBzdWl0ZSBmb3IgdGhlIHB1cnBvc2VzIG9mIGEgUEdPIGJ1aWxkLiBJbml0aWFsIHBhdGNoIGJ5CisgIEFsZWNzYW5kcnUgUGF0cmFzY3UuCisKKy0gSXNzdWUgIzIyODA2OiBBZGQgYGBweXRob24gLW0gdGVzdCAtLWxpc3QtdGVzdHNgYCBjb21tYW5kIHRvIGxpc3QgdGVzdHMuCisKKy0gSXNzdWUgIzE4MTc0OiBgYHB5dGhvbiAtbSB0ZXN0IC0taHVudHJsZWFrcyAuLi5gYCBub3cgYWxzbyBjaGVja3MgZm9yIGxlYWsgb2YKKyAgZmlsZSBkZXNjcmlwdG9ycy4gUGF0Y2ggd3JpdHRlbiBieSBSaWNoYXJkIE91ZGtlcmsuCisKKy0gSXNzdWUgIzI1MjYwOiBGaXggYGBweXRob24gLW0gdGVzdCAtLWNvdmVyYWdlYGAgb24gV2luZG93cy4gUmVtb3ZlIHRoZQorICBsaXN0IG9mIGlnbm9yZWQgZGlyZWN0b3JpZXMuCisKKy0gYGBQQ2J1aWxkXHJ0LmJhdGBgIG5vdyBhY2NlcHRzIGFuIHVubGltaXRlZCBudW1iZXIgb2YgYXJndW1lbnRzIHRvIHBhc3MgYWxvbmcKKyAgdG8gcmVncnRlc3QucHkuICBQcmV2aW91c2x5IHRoZXJlIHdhcyBhIGxpbWl0IG9mIDkuCisKIC0gSXNzdWUgIzI2NTgzOiBTa2lwIHRlc3RfdGltZXN0YW1wX292ZXJmbG93IGluIHRlc3RfaW1wb3J0IGlmIGJ5dGVjb2RlCiAgIGZpbGVzIGNhbm5vdCBiZSB3cml0dGVuLgogCiBCdWlsZAogLS0tLS0KIAorLSBJc3N1ZSAjMjEyNzc6IERvbid0IHRyeSB0byBsaW5rIF9jdHlwZXMgd2l0aCBhIGZmaV9jb252ZW5pZW5jZSBsaWJyYXJ5LgorCiAtIElzc3VlICMyNjg4NDogRml4IGxpbmtpbmcgZXh0ZW5zaW9uIG1vZHVsZXMgZm9yIGNyb3NzIGJ1aWxkcy4KICAgUGF0Y2ggYnkgWGF2aWVyIGRlIEdheWUuCiAKKy0gSXNzdWUgIzI2OTMyOiBGaXhlZCBzdXBwb3J0IG9mIFJUTERfKiBjb25zdGFudHMgZGVmaW5lZCBhcyBlbnVtIHZhbHVlcywKKyAgbm90IHZpYSBtYWNyb3MgKGluIHBhcnRpY3VsYXIgb24gQW5kcm9pZCkuICBQYXRjaCBieSBDaGkgSHN1YW4gWWVuLgorCiAtIElzc3VlICMyMjM1OTogRGlzYWJsZSB0aGUgcnVsZXMgZm9yIHJ1bm5pbmcgX2ZyZWV6ZV9pbXBvcnRsaWIgYW5kIHBnZW4gd2hlbgogICBjcm9zcy1jb21waWxpbmcuICBUaGUgb3V0cHV0IG9mIHRoZXNlIHByb2dyYW1zIGlzIG5vcm1hbGx5IHNhdmVkIHdpdGggdGhlCiAgIHNvdXJjZSBjb2RlIGFueXdheSwgYW5kIGlzIHN0aWxsIHJlZ2VuZXJhdGVkIHdoZW4gZG9pbmcgYSBuYXRpdmUgYnVpbGQuCiAgIFBhdGNoIGJ5IFhhdmllciBkZSBHYXllLgogCi0tIElzc3VlICMyNzIyOTogRml4IHRoZSBjcm9zcy1jb21waWxpbmcgcGdlbiBydWxlIGZvciBpbi10cmVlIGJ1aWxkcy4gIFBhdGNoCi0gIGJ5IFhhdmllciBkZSBHYXllLgotCiAtIElzc3VlICMyMTY2ODogTGluayBhdWRpb29wLCBfZGF0ZXRpbWUsIF9jdHlwZXNfdGVzdCBtb2R1bGVzIHRvIGxpYm0sCi0gIGV4Y2VwdCBvbiBNYWMgT1MgWC4gUGF0Y2ggd3JpdHRlbiBieSBYYXZpZXIgZGUgR2F5ZS4KKyAgZXhjZXB0IG9uIE1hYyBPUyBYLiBQYXRjaCB3cml0dGVuIGJ5IENoaSBIc3VhbiBZZW4uCiAKIC0gSXNzdWUgIzI1NzAyOiBBIC0td2l0aC1sdG8gY29uZmlndXJlIG9wdGlvbiBoYXMgYmVlbiBhZGRlZCB0aGF0IHdpbGwKICAgZW5hYmxlIGxpbmsgdGltZSBvcHRpbWl6YXRpb25zIGF0IGJ1aWxkIHRpbWUgZHVyaW5nIGEgbWFrZSBwcm9maWxlLW9wdC4KQEAgLTEzNTIsMjIgKzMxNTcsMjQgQEAKIAogLSBJc3N1ZSAjMjY0NjU6IFVwZGF0ZSBXaW5kb3dzIGJ1aWxkcyB0byB1c2UgT3BlblNTTCAxLjAuMmcuCiAKLS0gSXNzdWUgIzI0NDIxOiBDb21waWxlIE1vZHVsZXMvX21hdGguYyBvbmNlLCBiZWZvcmUgYnVpbGRpbmcgZXh0ZW5zaW9ucy4KLSAgUHJldmlvdXNseSBpdCBjb3VsZCBmYWlsIHRvIGNvbXBpbGUgcHJvcGVybHkgaWYgdGhlIG1hdGggYW5kIGNtYXRoIGJ1aWxkcwotICB3ZXJlIGNvbmN1cnJlbnQuCi0KIC0gSXNzdWUgIzI1MzQ4OiBBZGRlZCBgYC0tcGdvYGAgYW5kIGBgLS1wZ28tam9iYGAgYXJndW1lbnRzIHRvCiAgIGBgUENidWlsZFxidWlsZC5iYXRgYCBmb3IgYnVpbGRpbmcgd2l0aCBQcm9maWxlLUd1aWRlZCBPcHRpbWl6YXRpb24uICBUaGUKLSAgb2xkIGBgUENidWlsZFxidWlsZF9wZ28uYmF0YGAgc2NyaXB0IGlzIG5vdyBkZXByZWNhdGVkLCBhbmQgc2ltcGx5IGNhbGxzCi0gIGBgUENidWlsZFxidWlsZC5iYXQgLS1wZ28gJSpgYC4KKyAgb2xkIGBgUENidWlsZFxidWlsZF9wZ28uYmF0YGAgc2NyaXB0IGlzIHJlbW92ZWQuCiAKIC0gSXNzdWUgIzI1ODI3OiBBZGQgc3VwcG9ydCBmb3IgYnVpbGRpbmcgd2l0aCBJQ0MgdG8gYGBjb25maWd1cmVgYCwgaW5jbHVkaW5nCiAgIGEgbmV3IGBgLS13aXRoLWljY2BgIGZsYWcuCiAKIC0gSXNzdWUgIzI1Njk2OiBGaXggaW5zdGFsbGF0aW9uIG9mIFB5dGhvbiBvbiBVTklYIHdpdGggbWFrZSAtajkuCiAKLS0gSXNzdWUgIzI2OTMwOiBVcGRhdGUgT1MgWCAxMC41KyAzMi1iaXQtb25seSBpbnN0YWxsZXIgdG8gYnVpbGQKLSAgYW5kIGxpbmsgd2l0aCBPcGVuU1NMIDEuMC4yaC4KKy0gSXNzdWUgIzI0OTg2OiBJdCBpcyBub3cgcG9zc2libGUgdG8gYnVpbGQgUHl0aG9uIG9uIFdpbmRvd3Mgd2l0aG91dCBlcnJvcnMKKyAgd2hlbiBleHRlcm5hbCBsaWJyYXJpZXMgYXJlIG5vdCBhdmFpbGFibGUuCisKKy0gSXNzdWUgIzI0NDIxOiBDb21waWxlIE1vZHVsZXMvX21hdGguYyBvbmNlLCBiZWZvcmUgYnVpbGRpbmcgZXh0ZW5zaW9ucy4KKyAgUHJldmlvdXNseSBpdCBjb3VsZCBmYWlsIHRvIGNvbXBpbGUgcHJvcGVybHkgaWYgdGhlIG1hdGggYW5kIGNtYXRoIGJ1aWxkcworICB3ZXJlIGNvbmN1cnJlbnQuCisKKy0gSXNzdWUgIzI2NDY1OiBVcGRhdGUgT1MgWCAxMC41KyAzMi1iaXQtb25seSBpbnN0YWxsZXIgdG8gYnVpbGQKKyAgYW5kIGxpbmsgd2l0aCBPcGVuU1NMIDEuMC4yZy4KIAogLSBJc3N1ZSAjMjYyNjg6IFVwZGF0ZSBXaW5kb3dzIGJ1aWxkcyB0byB1c2UgT3BlblNTTCAxLjAuMmYuCiAKQEAgLTEzOTQsNiArMzIwMSw4IEBACiAtIElzc3VlICMyNjA2NTogRXhjbHVkZXMgdmVudiBmcm9tIGxpYnJhcnkgd2hlbiBnZW5lcmF0aW5nIGVtYmVkZGFibGUKICAgZGlzdHJvLgogCistIElzc3VlICMyNTAyMjogUmVtb3ZlZCB2ZXJ5IG91dGRhdGVkIFBDL2V4YW1wbGVfbnQvIGRpcmVjdG9yeS4KKwogVG9vbHMvRGVtb3MKIC0tLS0tLS0tLS0tCiAKQEAgLTE0MTAsMTEgKzMyMTksMjEgQEAKIAogLSBJc3N1ZSAjMjYzMTY6IEZpeCB2YXJpYWJsZSBuYW1lIHR5cG8gaW4gQXJndW1lbnQgQ2xpbmljLgogCi1NaXNjCi0tLS0tCistIElzc3VlICMyNTQ0MDogRml4IG91dHB1dCBvZiBweXRob24tY29uZmlnIC0tZXh0ZW5zaW9uLXN1ZmZpeC4KIAotLSBJc3N1ZSAjMTc1MDAsIGFuZCBodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL3B5dGhvbmRvdG9yZy9pc3N1ZXMvOTQ1OiBSZW1vdmUKLSAgdW51c2VkIGFuZCBvdXRkYXRlZCBpY29ucy4KKy0gSXNzdWUgIzI1MTU0OiBUaGUgcHl2ZW52IHNjcmlwdCBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm91ciBvZgorICBgcHl0aG9uMyAtbSB2ZW52YC4KKworQyBBUEkKKy0tLS0tCisKKy0gSXNzdWUgIzI2MzEyOiBTeXN0ZW1FcnJvciBpcyBub3cgcmFpc2VkIGluIGFsbCBwcm9ncmFtbWluZyBidWdzIHdpdGggdXNpbmcKKyAgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKCkuICBSdW50aW1lRXJyb3IgZGlkIHJhaXNlZCBiZWZvcmUgaW4gc29tZQorICBwcm9ncmFtbWluZyBidWdzLgorCistIElzc3VlICMyNjE5ODogVmFsdWVFcnJvciBpcyBub3cgcmFpc2VkIGluc3RlYWQgb2YgVHlwZUVycm9yIG9uIGJ1ZmZlcgorICBvdmVyZmxvdyBpbiBwYXJzaW5nICJlcyMiIGFuZCAiZXQjIiBmb3JtYXQgdW5pdHMuICBTeXN0ZW1FcnJvciBpcyBub3cgcmFpc2VkCisgIGluc3RlYWQgb2YgVHlwZUVycm9yIG9uIHByb2dyYW1taWNhbCBlcnJvciBpbiBwYXJzaW5nIGZvcm1hdCBzdHJpbmcuCiAKIAogV2hhdCdzIE5ldyBpbiBQeXRob24gMy41LjEgZmluYWw/CkBAIC0xODM2LDkgKzM2NTUsNiBAQAogRG9jdW1lbnRhdGlvbgogLS0tLS0tLS0tLS0tLQogCi0tIElzc3VlICMyMjU1ODogQWRkIHJlbWFpbmluZyBkb2MgbGlua3MgdG8gc291cmNlIGNvZGUgZm9yIFB5dGhvbi1jb2RlZCBtb2R1bGVzLgotICBQYXRjaCBieSBZb25pIExhdmkuCi0KIC0gSXNzdWUgIzEyMDY3OiBSZXdyaXRlIENvbXBhcmlzb25zIHNlY3Rpb24gaW4gdGhlIEV4cHJlc3Npb25zIGNoYXB0ZXIgb2YgdGhlCiAgIGxhbmd1YWdlIHJlZmVyZW5jZS4gU29tZSBvZiB0aGUgZGV0YWlscyBvZiBjb21wYXJpbmcgbWl4ZWQgdHlwZXMgd2VyZQogICBpbmNvcnJlY3Qgb3IgYW1iaWd1b3VzLiBOb3RJbXBsZW1lbnRlZCBpcyBvbmx5IHJlbGV2YW50IGF0IGEgbG93ZXIgbGV2ZWwKQEAgLTIxNjgsMTIgKzM5ODQsNiBAQAogCiAtIElzc3VlICMyNDYzMTogRml4ZWQgcmVncmVzc2lvbiBpbiB0aGUgdGltZWl0IG1vZHVsZSB3aXRoIG11bHRpbGluZSBzZXR1cC4KIAotLSBJc3N1ZSAjMTg2MjI6IHVuaXR0ZXN0Lm1vY2subW9ja19vcGVuKCkucmVzZXRfbW9jayB3b3VsZCByZWN1cnNlIGluZmluaXRlbHkuCi0gIFBhdGNoIGZyb20gTmljb2xhIFBhbHVtYm8gYW5kIExhdXJlbnQgRGUgQnV5c3QuCi0KLS0gSXNzdWUgIzIzNjYxOiB1bml0dGVzdC5tb2NrIHNpZGVfZWZmZWN0cyBjYW4gbm93IGJlIGV4Y2VwdGlvbnMgYWdhaW4uIFRoaXMKLSAgd2FzIGEgcmVncmVzc2lvbiB2cyBQeXRob24gMy40LiBQYXRjaCBmcm9tIElnbmFjaW8gUm9zc2kKLQogLSBJc3N1ZSAjMjQ2MDg6IGNodW5rLkNodW5rLnJlYWQoKSBub3cgYWx3YXlzIHJldHVybnMgYnl0ZXMsIG5vdCBzdHIuCiAKIC0gSXNzdWUgIzE4Njg0OiBGaXhlZCByZWFkaW5nIG91dCBvZiB0aGUgYnVmZmVyIGluIHRoZSByZSBtb2R1bGUuCkBAIC0yMTg0LDYgKzM5OTQsOSBAQAogLSBJc3N1ZSAjMTUwMTQ6IFNNVFAuYXV0aCgpIGFuZCBTTVRQLmxvZ2luKCkgbm93IHN1cHBvcnQgUkZDIDQ5NTQncyBvcHRpb25hbAogICBpbml0aWFsLXJlc3BvbnNlIGFyZ3VtZW50IHRvIHRoZSBTTVRQIEFVVEggY29tbWFuZC4KIAorLSBJc3N1ZSAjNjU0OTogUmVtb3ZlIGh5cGhlbiBmcm9tIHR0ay5TdHlsZSgpLmVsZW1lbnQgb3B0aW9ucy4gIE9ubHkgcmV0dXJuIHJlc3VsdAorICBmcm9tIHR0ay5TdHlsZSgpLmNvbmZpZ3VyZSBpZiBhIHJlc3VsdCB3YXMgZ2VuZXJhdGVkIG9yIGEgcXVlcnkgc3VibWl0dGVkLgorCiAtIElzc3VlICMyNDY2OTogRml4IGluc3BlY3QuZ2V0c291cmNlKCkgZm9yICdhc3luYyBkZWYnIGZ1bmN0aW9ucy4KICAgUGF0Y2ggYnkgS2FpIEdyb25lci4KIApAQCAtMjE5NSw3ICs0MDA4LDYgQEAKIC0gSXNzdWUgIzI0NjAzOiBVcGRhdGUgV2luZG93cyBidWlsZHMgYW5kIE9TIFggMTAuNSBpbnN0YWxsZXIgdG8gdXNlIE9wZW5TU0wKICAgMS4wLjJkLgogCi0KIFdoYXQncyBOZXcgaW4gUHl0aG9uIDMuNS4wIGJldGEgMz8KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIApAQCAtMjM1Niw2ICs0MTY4LDkgQEAKIC0gSXNzdWUgIzI0MjY4OiBQRVAgNDg5OiBNdWx0aS1waGFzZSBleHRlbnNpb24gbW9kdWxlIGluaXRpYWxpemF0aW9uLgogICBQYXRjaCBieSBQZXRyIFZpa3RvcmluLgogCistIElzc3VlICMyMzM1OTogT3B0aW1pemUgc2V0IG9iamVjdCBpbnRlcm5hbHMgYnkgc3BlY2lhbGl6aW5nIHRoZQorICBoYXNoIHRhYmxlIHNlYXJjaCBpbnRvIGEgbG9va3VwIGZ1bmN0aW9uIGFuZCBhbiBpbnNlcnQgZnVuY3Rpb24uCisKIC0gSXNzdWUgIzIzOTU1OiBBZGQgcHl2ZW52LmNmZyBvcHRpb24gdG8gc3VwcHJlc3MgcmVnaXN0cnkvZW52aXJvbm1lbnQKICAgbG9va3VwIGZvciBnZW5lcmF0aW5nIHN5cy5wYXRoIG9uIFdpbmRvd3MuCiAKQEAgLTI0NzYsOCArNDI5MSw4IEBACiAtIElzc3VlICMxMzIyOiBwbGF0Zm9ybS5kaXN0KCkgYW5kIHBsYXRmb3JtLmxpbnV4X2Rpc3RyaWJ1dGlvbigpIGZ1bmN0aW9ucyBhcmUKICAgbm93IGRlcHJlY2F0ZWQuICBJbml0aWFsIHBhdGNoIGJ5IFZhanJhc2t5IEtvay4KIAotLSBJc3N1ZSAjMjI0ODY6IEFkZGVkIHRoZSBtYXRoLmdjZCgpIGZ1bmN0aW9uLiAgVGhlIGZyYWN0aW9ucy5nY2QoKSBmdW5jdGlvbgotICBub3cgaXMgZGVwcmVjYXRlZC4gIEJhc2VkIG9uIHBhdGNoIGJ5IE1hcmsgRGlja2luc29uLgorLSBJc3N1ZSAjMjI0ODY6IEFkZGVkIHRoZSBtYXRoLmdjZCgpIGZ1bmN0aW9uLiAgVGhlIGZyYWN0aW9ucy5nY2QoKSBmdW5jdGlvbiBub3cgaXMKKyAgZGVwcmVjYXRlZC4gIEJhc2VkIG9uIHBhdGNoIGJ5IE1hcmsgRGlja2luc29uLgogCiAtIElzc3VlICMyNDA2NDogUHJvcGVydHkoKSBkb2NzdHJpbmdzIGFyZSBub3cgd3JpdGVhYmxlLgogICAoUGF0Y2ggYnkgQmVya2VyIFBla3NhZy4pCkBAIC0yODk4LDggKzQ3MTMsOCBAQAogICB3cml0ZXIgZmFpbGVkIGluIEJ1ZmZlcmVkUldQYWlyLmNsb3NlKCkuCiAKIC0gSXNzdWUgIzIzNjIyOiBVbmtub3duIGVzY2FwZXMgaW4gcmVndWxhciBleHByZXNzaW9ucyB0aGF0IGNvbnNpc3Qgb2YgYGAnXCdgYAotICBhbmQgQVNDSUkgbGV0dGVyIG5vdyByYWlzZSBhIGRlcHJlY2F0aW9uIHdhcm5pbmcgYW5kIHdpbGwgYmUgZm9yYmlkZGVuIGluCi0gIFB5dGhvbiAzLjYuCisgIGFuZCBhbiBBU0NJSSBsZXR0ZXIgbm93IHJhaXNlIGEgZGVwcmVjYXRpb24gd2FybmluZyBhbmQgd2lsbCBiZSBmb3JiaWRkZW4KKyAgaW4gUHl0aG9uIDMuNi4KIAogLSBJc3N1ZSAjMjM2NzE6IHN0cmluZy5UZW1wbGF0ZSBub3cgYWxsb3dzIHNwZWNpZnlpbmcgdGhlICJzZWxmIiBwYXJhbWV0ZXIgYXMKICAgYSBrZXl3b3JkIGFyZ3VtZW50LiAgc3RyaW5nLkZvcm1hdHRlciBub3cgYWxsb3dzIHNwZWNpZnlpbmcgdGhlICJzZWxmIiBhbmQKQEAgLTYwNjQsNiArNzg3OSw5IEBACiAKIC0gSXNzdWUgIzE5MzY5OiBPcHRpbWl6ZWQgdGhlIHVzYWdlIG9mIF9fbGVuZ3RoX2hpbnRfXygpLgogCistIElzc3VlICMyODAyNjogUmFpc2UgSW1wb3J0RXJyb3Igd2hlbiBleGVjX21vZHVsZSgpIGV4aXN0cyBidXQKKyAgY3JlYXRlX21vZHVsZSgpIGlzIG1pc3NpbmcuCisKIC0gSXNzdWUgIzE4NjAzOiBFbnN1cmUgdGhhdCBQeU9TX215c3RyaWNtcCBhbmQgUHlPU19teXN0cm5pY21wIGFyZSBpbiB0aGUKICAgUHl0aG9uIGV4ZWN1dGFibGUgYW5kIG5vdCByZW1vdmVkIGJ5IHRoZSBsaW5rZXIncyBvcHRpbWl6ZXIuCiAKQEAgLTY5NTEsNiArODc2OSw5IEBACiAtIElzc3VlICMxNjgwOTogVGtpbnRlcidzIHNwbGl0bGlzdCgpIGFuZCBzcGxpdCgpIG1ldGhvZHMgbm93IGFjY2VwdCBUY2xfT2JqCiAgIGFyZ3VtZW50LgogCistIElzc3VlICMxNzIxMTogWWllbGQgYSBuYW1lZHR1cGxlIGluIHBrZ3V0aWwuCisgIFBhdGNoIGJ5IFJhbWNoYW5kcmEgQXB0ZS4KKwogLSBJc3N1ZSAjMTgzMjQ6IHNldF9wYXlsb2FkIG5vdyBjb3JyZWN0bHkgaGFuZGxlcyBiaW5hcnkgaW5wdXQuICBUaGlzIGFsc28KICAgc3VwZXJzZWRlcyB0aGUgcHJldmlvdXMgZml4ZXMgZm9yICMxNDM2MCwgIzE3MTcsIGFuZCAjMTY1NjQuCiAKQEAgLTY5NjAsNiArODc4MSw4IEBACiAtIElzc3VlICMxNzExOTogRml4ZWQgaW50ZWdlciBvdmVyZmxvd3Mgd2hlbiBwcm9jZXNzaW5nIGxhcmdlIHN0cmluZ3MgYW5kIHR1cGxlcwogICBpbiB0aGUgdGtpbnRlciBtb2R1bGUuCiAKKy0gSXNzdWUgIzE1MzUyOiBSZWJ1aWxkIGZyb3plbiBtb2R1bGVzIHdoZW4gbWFyc2hhbC5jIGlzIGNoYW5nZWQuCisKIC0gSXNzdWUgIzE4NzQ3OiBSZS1zZWVkIE9wZW5TU0wncyBwc2V1ZG8tcmFuZG9tIG51bWJlciBnZW5lcmF0b3IgYWZ0ZXIgZm9yay4KICAgQSBwdGhyZWFkX2F0Zm9yaygpIHBhcmVudCBoYW5kbGVyIGlzIHVzZWQgdG8gc2VlZCB0aGUgUFJORyB3aXRoIHBpZCwgdGltZQogICBhbmQgc29tZSBzdGFjayBkYXRhLgpAQCAtNzE2Nyw2ICs4OTkwLDkgQEAKIC0gSXNzdWUgIzE4MTM3OiBEZXRlY3QgaW50ZWdlciBvdmVyZmxvdyBvbiBwcmVjaXNpb24gaW4gZmxvYXQuX19mb3JtYXRfXygpCiAgIGFuZCBjb21wbGV4Ll9fZm9ybWF0X18oKS4KIAorLSBJc3N1ZSAjMTU3Njc6IEludHJvZHVjZSBNb2R1bGVOb3RGb3VuZEVycm9yIHdoaWNoIGlzIHJhaXNlZCB3aGVuIGEgbW9kdWxlCisgIGNvdWxkIG5vdCBiZSBmb3VuZC4KKwogLSBJc3N1ZSAjMTgxODM6IEZpeCB2YXJpb3VzIHVuaWNvZGUgb3BlcmF0aW9ucyBvbiBzdHJpbmdzIHdpdGggbGFyZ2UgdW5pY29kZQogICBjb2RlcG9pbnRzLgogCkBAIC05MDg3LDYgKzEwOTEzLDEwIEBACiAgIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aFBhdGhuYW1lcygpIChhbmQgdGh1cyBieSBleHRlbnNpb24KICAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGUoKSBhbmQgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVFeCgpKS4KIAorLSBJc3N1ZSAjMTU3Njc6IEFkZGVkIFB5RXJyX1NldEltcG9ydEVycm9yU3ViY2xhc3MoKS4KKworLSBQeUVycl9TZXRJbXBvcnRFcnJvcigpIG5vdyBzZXRzIFR5cGVFcnJvciB3aGVuIGl0cyBtc2cgYXJndW1lbnQgaXMgc2V0LgorCiAtIElzc3VlICM5MzY5OiBUaGUgdHlwZXMgb2YgYGNoYXIqYCBhcmd1bWVudHMgb2YgUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKCkgYW5kCiAgIFB5T2JqZWN0X0NhbGxNZXRob2QoKSBub3cgY2hhbmdlZCB0byBgY29uc3QgY2hhcipgLiAgQmFzZWQgb24gcGF0Y2hlcyBieQogICBKw7ZyZyBNw7xsbGVyIGFuZCBMYXJzIEJ1aXRpbmNrLgpkaWZmIC0tZ2l0IGEvTWlzYy9SRUFETUUudmFsZ3JpbmQgYi9NaXNjL1JFQURNRS52YWxncmluZAppbmRleCBiNWE5YTMyLi45MDhmMTM3IDEwMDY0NAotLS0gYS9NaXNjL1JFQURNRS52YWxncmluZAorKysgYi9NaXNjL1JFQURNRS52YWxncmluZApAQCAtMiw2ICsyLDkgQEAKIFB5dGhvbi4gIFZhbGdyaW5kIGlzIHVzZWQgcGVyaW9kaWNhbGx5IGJ5IFB5dGhvbiBkZXZlbG9wZXJzIHRvIHRyeQogdG8gZW5zdXJlIHRoZXJlIGFyZSBubyBtZW1vcnkgbGVha3Mgb3IgaW52YWxpZCBtZW1vcnkgcmVhZHMvd3JpdGVzLgogCitVUERBVEU6IFB5dGhvbiAzLjYgbm93IHN1cHBvcnRzIFBZVEhPTk1BTExPQz1tYWxsb2MgZW52aXJvbm1lbnQgdmFyaWFibGUgd2hpY2gKK2NhbiBiZSB1c2VkIHRvIGZvcmNlIHRoZSB1c2FnZSBvZiB0aGUgbWFsbG9jKCkgYWxsb2NhdG9yIG9mIHRoZSBDIGxpYnJhcnkuCisKIElmIHlvdSBkb24ndCB3YW50IHRvIHJlYWQgYWJvdXQgdGhlIGRldGFpbHMgb2YgdXNpbmcgVmFsZ3JpbmQsIHRoZXJlCiBhcmUgc3RpbGwgdHdvIHRoaW5ncyB5b3UgbXVzdCBkbyB0byBzdXBwcmVzcyB0aGUgd2FybmluZ3MuICBGaXJzdCwKIHlvdSBtdXN0IHVzZSBhIHN1cHByZXNzaW9ucyBmaWxlLiAgT25lIGlzIHN1cHBsaWVkIGluCmRpZmYgLS1naXQgYS9NaXNjL1NwZWNpYWxCdWlsZHMudHh0IGIvTWlzYy9TcGVjaWFsQnVpbGRzLnR4dAppbmRleCAzMDA0MTc0Li44MmZhMjNlIDEwMDY0NAotLS0gYS9NaXNjL1NwZWNpYWxCdWlsZHMudHh0CisrKyBiL01pc2MvU3BlY2lhbEJ1aWxkcy50eHQKQEAgLTY1LDkgKzY1LDkgQEAKICAgICBzaW1wbHkgYnkgdmlydHVlIG9mIGJlaW5nIGluIHRoZSBsaXN0LgogCiBlbnZ2YXIgUFlUSE9ORFVNUFJFRlMKLSAgICBJZiB0aGlzIGVudnZhciBleGlzdHMsIFB5X0ZpbmFsaXplKCkgYXJyYW5nZXMgdG8gcHJpbnQgYSBsaXN0IG9mIGFsbAorICAgIElmIHRoaXMgZW52dmFyIGV4aXN0cywgUHlfRmluYWxpemVFeCgpIGFycmFuZ2VzIHRvIHByaW50IGEgbGlzdCBvZiBhbGwKICAgICBzdGlsbC1saXZlIGhlYXAgb2JqZWN0cy4gIFRoaXMgaXMgcHJpbnRlZCB0d2ljZSwgaW4gZGlmZmVyZW50IGZvcm1hdHMsCi0gICAgYmVmb3JlIGFuZCBhZnRlciBQeV9GaW5hbGl6ZSBoYXMgY2xlYW5lZCB1cCBldmVyeXRoaW5nIGl0IGNhbiBjbGVhbiB1cC4gIFRoZQorICAgIGJlZm9yZSBhbmQgYWZ0ZXIgUHlfRmluYWxpemVFeCBoYXMgY2xlYW5lZCB1cCBldmVyeXRoaW5nIGl0IGNhbiBjbGVhbiB1cC4gIFRoZQogICAgIGZpcnN0IG91dHB1dCBibG9jayBwcm9kdWNlcyB0aGUgcmVwcigpIG9mIGVhY2ggb2JqZWN0IHNvIGlzIG1vcmUKICAgICBpbmZvcm1hdGl2ZTsgaG93ZXZlciwgYSBsb3Qgb2Ygc3R1ZmYgZGVzdGluZWQgdG8gZGllIGlzIHN0aWxsIGFsaXZlIHRoZW4uCiAgICAgVGhlIHNlY29uZCBvdXRwdXQgYmxvY2sgaXMgbXVjaCBoYXJkZXIgdG8gd29yayB3aXRoIChyZXByKCkgY2FuJ3QgYmUgaW52b2tlZApAQCAtMTQ0LDcgKzE0NCw3IEBACiAKIGVudnZhciBQWVRIT05NQUxMT0NTVEFUUwogICAgIElmIHRoaXMgZW52dmFyIGV4aXN0cywgYSByZXBvcnQgb2YgcHltYWxsb2Mgc3VtbWFyeSBzdGF0aXN0aWNzIGlzIHByaW50ZWQgdG8KLSAgICBzdGRlcnIgd2hlbmV2ZXIgYSBuZXcgYXJlbmEgaXMgYWxsb2NhdGVkLCBhbmQgYWxzbyBieSBQeV9GaW5hbGl6ZSgpLgorICAgIHN0ZGVyciB3aGVuZXZlciBhIG5ldyBhcmVuYSBpcyBhbGxvY2F0ZWQsIGFuZCBhbHNvIGJ5IFB5X0ZpbmFsaXplRXgoKS4KIAogQ2hhbmdlZCBpbiAyLjU6ICBUaGUgbnVtYmVyIG9mIGV4dHJhIGJ5dGVzIGFsbG9jYXRlZCBpcyA0KnNpemVvZihzaXplX3QpLgogQmVmb3JlIGl0IHdhcyAxNiBvbiBhbGwgYm94ZXMsIHJlZmxlY3RpbmcgdGhhdCBQeXRob24gY291bGRuJ3QgbWFrZSB1c2Ugb2YKQEAgLTE3OSw3ICsxNzksNyBAQAogICAgICAqLwogICAgIGludCB0cF9tYXhhbGxvYzsKIAotQWxsb2NhdGlvbiBhbmQgZGVhbGxvY2F0aW9uIGNvZGUga2VlcHMgdGhlc2UgY291bnRzIHVwIHRvIGRhdGUuICBQeV9GaW5hbGl6ZSgpCitBbGxvY2F0aW9uIGFuZCBkZWFsbG9jYXRpb24gY29kZSBrZWVwcyB0aGVzZSBjb3VudHMgdXAgdG8gZGF0ZS4gIFB5X0ZpbmFsaXplRXgoKQogZGlzcGxheXMgYSBzdW1tYXJ5IG9mIHRoZSBpbmZvIHJldHVybmVkIGJ5IHN5cy5nZXRjb3VudHMoKSAoc2VlIGJlbG93KSwgYWxvbmcKIHdpdGggYXNzb3J0ZWQgb3RoZXIgc3BlY2lhbCBhbGxvY2F0aW9uIGNvdW50cyAobGlrZSB0aGUgbnVtYmVyIG9mIHR1cGxlCiBhbGxvY2F0aW9ucyBzYXRpc2ZpZWQgYnkgYSB0dXBsZSBmcmVlLWxpc3QsIHRoZSBudW1iZXIgb2YgMS1jaGFyYWN0ZXIgc3RyaW5ncwpAQCAtMjM0LDI5ICsyMzQsMyBAQAogbnVtYmVyIG9mIGZ1bmN0aW9uIGNhbGxzIG1hZGUuICBJdCBrZWVwcyBkZXRhaWxlZCBzdGF0aXN0aWNzIGFib3V0IHdoYXQga2luZCBvZgogb2JqZWN0IHdhcyBjYWxsZWQgYW5kIHdoZXRoZXIgdGhlIGNhbGwgaGl0IGFueSBvZiB0aGUgc3BlY2lhbCBmYXN0IHBhdGhzIGluIHRoZQogY29kZS4KLQotCi1XSVRIX1RTQwotLS0tLS0tLS0KLQotU3VwZXItbG93bGV2ZWwgcHJvZmlsaW5nIG9mIHRoZSBpbnRlcnByZXRlci4gIFdoZW4gZW5hYmxlZCwgdGhlIHN5cyBtb2R1bGUgZ3Jvd3MKLWEgbmV3IGZ1bmN0aW9uOgotCi1zZXR0c2NkdW1wKGJvb2wpCi0gICAgSWYgdHJ1ZSwgdGVsbCB0aGUgUHl0aG9uIGludGVycHJldGVyIHRvIGR1bXAgVk0gbWVhc3VyZW1lbnRzIHRvIHN0ZGVyci4gIElmCi0gICAgZmFsc2UsIHR1cm4gb2ZmIGR1bXAuICBUaGUgbWVhc3VyZW1lbnRzIGFyZSBiYXNlZCBvbiB0aGUgcHJvY2Vzc29yJ3MKLSAgICB0aW1lLXN0YW1wIGNvdW50ZXIuCi0KLVRoaXMgYnVpbGQgb3B0aW9uIHJlcXVpcmVzIGEgc21hbGwgYW1vdW50IG9mIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUuICBDdXJyZW50bHkKLXRoaXMgY29kZSBpcyBwcmVzZW50IGZvciBsaW51eC94ODYgYW5kIGFueSBQb3dlclBDIHBsYXRmb3JtIHRoYXQgdXNlcyBHQ0MKLShpLmUuIE9TIFggYW5kIGxpbnV4L3BwYykuCi0KLU9uIHRoZSBQb3dlclBDIHRoZSByYXRlIGF0IHdoaWNoIHRoZSB0aW1lIGJhc2UgcmVnaXN0ZXIgaXMgaW5jcmVtZW50ZWQgaXMgbm90Ci1kZWZpbmVkIGJ5IHRoZSBhcmNoaXRlY3R1cmUgc3BlY2lmaWNhdGlvbiwgc28geW91J2xsIG5lZWQgdG8gZmluZCB0aGUgbWFudWFsIGZvcgoteW91ciBzcGVjaWZpYyBwcm9jZXNzb3IuICBGb3IgdGhlIDc1MENYLCA3NTBDWGUgYW5kIDc1MEZYIChhbGwgc29sZCBhcyB0aGUgRzMpCi13ZSBmaW5kOgotCi0gICAgVGhlIHRpbWUgYmFzZSBjb3VudGVyIGlzIGNsb2NrZWQgYXQgYSBmcmVxdWVuY3kgdGhhdCBpcyBvbmUtZm91cnRoIHRoYXQgb2YKLSAgICB0aGUgYnVzIGNsb2NrLgotCi1UaGlzIGJ1aWxkIGlzIGVuYWJsZWQgYnkgdGhlIC0td2l0aC10c2MgZmxhZyB0byBjb25maWd1cmUuCmRpZmYgLS1naXQgYS9NaXNjL2NvdmVyaXR5X21vZGVsLmMgYi9NaXNjL2NvdmVyaXR5X21vZGVsLmMKaW5kZXggNzQ5ZjJmMC4uMWFlNjE3OSAxMDA2NDQKLS0tIGEvTWlzYy9jb3Zlcml0eV9tb2RlbC5jCisrKyBiL01pc2MvY292ZXJpdHlfbW9kZWwuYwpAQCAtMjIsNyArMjIsNiBAQAogI2RlZmluZSBhc3NlcnQob3ApIC8qIGVtcHR5ICovCiB0eXBlZGVmIGludCBzZGlnaXQ7CiB0eXBlZGVmIGxvbmcgUHlfc3NpemVfdDsKLXR5cGVkZWYgbG9uZyBsb25nIFBZX0xPTkdfTE9ORzsKIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgd2NoYXJfdDsKIHR5cGVkZWYgc3RydWN0IHt9IFB5T2JqZWN0OwogdHlwZWRlZiBzdHJ1Y3Qge30gZ3JhbW1hcjsKQEAgLTYzLDcgKzYyLDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLVB5T2JqZWN0ICpQeUxvbmdfRnJvbUxvbmdMb25nKFBZX0xPTkdfTE9ORyBpdmFsKQorUHlPYmplY3QgKlB5TG9uZ19Gcm9tTG9uZ0xvbmcobG9uZyBsb25nIGl2YWwpCiB7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZylpdmFsKTsKIH0KQEAgLTk0LDcgKzkzLDcgQEAKIH0KIAogLyogUGFyc2VyL3BnZW5tYWluLmMgKi8KLWdyYW1tYXIgKmdldGdyYW1tYXIoY2hhciAqZmlsZW5hbWUpCitncmFtbWFyICpnZXRncmFtbWFyKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQogewogICAgIGdyYW1tYXIgKmc7CiAgICAgX19jb3Zlcml0eV90YWludGVkX2RhdGFfc2lua19fKGZpbGVuYW1lKTsKZGlmZiAtLWdpdCBhL01pc2MvcHl0aG9uLm1hbiBiL01pc2MvcHl0aG9uLm1hbgppbmRleCAyOGYxOWI2Li4zODViNjU0IDEwMDY0NAotLS0gYS9NaXNjL3B5dGhvbi5tYW4KKysrIGIvTWlzYy9weXRob24ubWFuCkBAIC0xOTQsNyArMTk0LDggQEAKIGF0IGV4aXQuCiAuVFAKIC5CIFwtViAiLCAiIFwtXC12ZXJzaW9uCi1QcmludHMgdGhlIFB5dGhvbiB2ZXJzaW9uIG51bWJlciBvZiB0aGUgZXhlY3V0YWJsZSBhbmQgZXhpdHMuCitQcmludHMgdGhlIFB5dGhvbiB2ZXJzaW9uIG51bWJlciBvZiB0aGUgZXhlY3V0YWJsZSBhbmQgZXhpdHMuICBXaGVuIGdpdmVuCit0d2ljZSwgcHJpbnQgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYnVpbGQuCiAuVFAKIC5CSSAiXC1XICIgYXJndW1lbnQKIFdhcm5pbmcgY29udHJvbC4gIFB5dGhvbiBzb21ldGltZXMgcHJpbnRzIHdhcm5pbmcgbWVzc2FnZSB0bwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9TZXR1cC5jb25maWcuaW4gYi9Nb2R1bGVzL1NldHVwLmNvbmZpZy5pbgppbmRleCBhZGFjMDMwLi42NDUwNTI4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL1NldHVwLmNvbmZpZy5pbgorKysgYi9Nb2R1bGVzL1NldHVwLmNvbmZpZy5pbgpAQCAtNiw4ICs2LDUgQEAKICMgVGhyZWFkaW5nCiBAVVNFX1RIUkVBRF9NT0RVTEVAX3RocmVhZCBfdGhyZWFkbW9kdWxlLmMKIAotIyBUaGUgc2lnbmFsIG1vZHVsZQotQFVTRV9TSUdOQUxfTU9EVUxFQF9zaWduYWwgc2lnbmFsbW9kdWxlLmMKLQogIyBUaGUgcmVzdCBvZiB0aGUgbW9kdWxlcyBwcmV2aW91c2x5IGxpc3RlZCBpbiB0aGlzIGZpbGUgYXJlIGJ1aWx0CiAjIGJ5IHRoZSBzZXR1cC5weSBzY3JpcHQgaW4gUHl0aG9uIDIuMSBhbmQgbGF0ZXIuCmRpZmYgLS1naXQgYS9Nb2R1bGVzL1NldHVwLmRpc3QgYi9Nb2R1bGVzL1NldHVwLmRpc3QKaW5kZXggMDZiYTZhZC4uOGI4N2ZjOCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9TZXR1cC5kaXN0CisrKyBiL01vZHVsZXMvU2V0dXAuZGlzdApAQCAtMTE3LDYgKzExNyw3IEBACiBfY29sbGVjdGlvbnMgX2NvbGxlY3Rpb25zbW9kdWxlLmMgIyBDb250YWluZXIgdHlwZXMKIGl0ZXJ0b29scyBpdGVydG9vbHNtb2R1bGUuYyAgICAjIEZ1bmN0aW9ucyBjcmVhdGluZyBpdGVyYXRvcnMgZm9yIGVmZmljaWVudCBsb29waW5nCiBhdGV4aXQgYXRleGl0bW9kdWxlLmMgICAgICAjIFJlZ2lzdGVyIGZ1bmN0aW9ucyB0byBiZSBydW4gYXQgaW50ZXJwcmV0ZXItc2h1dGRvd24KK19zaWduYWwgc2lnbmFsbW9kdWxlLmMKIF9zdGF0IF9zdGF0LmMJCQkjIHN0YXQuaCBpbnRlcmZhY2UKIHRpbWUgdGltZW1vZHVsZS5jCSMgLWxtICMgdGltZSBvcGVyYXRpb25zIGFuZCB2YXJpYWJsZXMKIApAQCAtMTgwLDYgKzE4MSw3IEBACiAjX2RhdGV0aW1lIF9kYXRldGltZW1vZHVsZS5jCSMgZGF0ZXRpbWUgYWNjZWxlcmF0b3IKICNfYmlzZWN0IF9iaXNlY3Rtb2R1bGUuYwkjIEJpc2VjdGlvbiBhbGdvcml0aG1zCiAjX2hlYXBxIF9oZWFwcW1vZHVsZS5jCSMgSGVhcCBxdWV1ZSBhbGdvcml0aG0KKyNfYXN5bmNpbyBfYXN5bmNpb21vZHVsZS5jICAjIEZhc3QgYXN5bmNpbyBGdXR1cmUKIAogI3VuaWNvZGVkYXRhIHVuaWNvZGVkYXRhLmMgICAgIyBzdGF0aWMgVW5pY29kZSBjaGFyYWN0ZXIgZGF0YWJhc2UKIApAQCAtMjQ5LDYgKzI1MSw4IEBACiAjX3NoYTI1NiBzaGEyNTZtb2R1bGUuYwogI19zaGE1MTIgc2hhNTEybW9kdWxlLmMKIAorIyBfYmxha2UgbW9kdWxlCisjX2JsYWtlMiBfYmxha2UyL2JsYWtlMm1vZHVsZS5jIF9ibGFrZTIvYmxha2UyYl9pbXBsLmMgX2JsYWtlMi9ibGFrZTJzX2ltcGwuYwogCiAjIFRoZSBfdGtpbnRlciBtb2R1bGUuCiAjCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19hc3luY2lvbW9kdWxlLmMgYi9Nb2R1bGVzL19hc3luY2lvbW9kdWxlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmZmOTA0NgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2FzeW5jaW9tb2R1bGUuYwpAQCAtMCwwICsxLDI0NjkgQEAKKyNpbmNsdWRlICJQeXRob24uaCIKKyNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKKworCisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgX2FzeW5jaW8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PThmZDE3ODYyYWE5ODljNjldKi8KKworCisvKiBpZGVudGlmaWVycyB1c2VkIGZyb20gc29tZSBmdW5jdGlvbnMgKi8KK19QeV9JREVOVElGSUVSKGFkZF9kb25lX2NhbGxiYWNrKTsKK19QeV9JREVOVElGSUVSKGNhbGxfc29vbik7CitfUHlfSURFTlRJRklFUihjYW5jZWwpOworX1B5X0lERU5USUZJRVIoc2VuZCk7CitfUHlfSURFTlRJRklFUih0aHJvdyk7CitfUHlfSURFTlRJRklFUihfc3RlcCk7CitfUHlfSURFTlRJRklFUihfc2NoZWR1bGVfY2FsbGJhY2tzKTsKK19QeV9JREVOVElGSUVSKF93YWtldXApOworCisKKy8qIFN0YXRlIG9mIHRoZSBfYXN5bmNpbyBtb2R1bGUgKi8KK3N0YXRpYyBQeU9iamVjdCAqYWxsX3Rhc2tzOworc3RhdGljIFB5T2JqZWN0ICpjdXJyZW50X3Rhc2tzOworc3RhdGljIFB5T2JqZWN0ICp0cmFjZWJhY2tfZXh0cmFjdF9zdGFjazsKK3N0YXRpYyBQeU9iamVjdCAqYXN5bmNpb19nZXRfZXZlbnRfbG9vcDsKK3N0YXRpYyBQeU9iamVjdCAqYXN5bmNpb19mdXR1cmVfcmVwcl9pbmZvX2Z1bmM7CitzdGF0aWMgUHlPYmplY3QgKmFzeW5jaW9fdGFza19yZXByX2luZm9fZnVuYzsKK3N0YXRpYyBQeU9iamVjdCAqYXN5bmNpb190YXNrX2dldF9zdGFja19mdW5jOworc3RhdGljIFB5T2JqZWN0ICphc3luY2lvX3Rhc2tfcHJpbnRfc3RhY2tfZnVuYzsKK3N0YXRpYyBQeU9iamVjdCAqYXN5bmNpb19JbnZhbGlkU3RhdGVFcnJvcjsKK3N0YXRpYyBQeU9iamVjdCAqYXN5bmNpb19DYW5jZWxsZWRFcnJvcjsKK3N0YXRpYyBQeU9iamVjdCAqaW5zcGVjdF9pc2dlbmVyYXRvcjsKKworCit0eXBlZGVmIGVudW0geworICAgIFNUQVRFX1BFTkRJTkcsCisgICAgU1RBVEVfQ0FOQ0VMTEVELAorICAgIFNUQVRFX0ZJTklTSEVECit9IGZ1dF9zdGF0ZTsKKworI2RlZmluZSBGdXR1cmVPYmpfSEVBRChwcmVmaXgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdF9IRUFEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3QgKnByZWZpeCMjX2xvb3A7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICpwcmVmaXgjI19jYWxsYmFja3M7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqcHJlZml4IyNfZXhjZXB0aW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3QgKnByZWZpeCMjX3Jlc3VsdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICpwcmVmaXgjI19zb3VyY2VfdGI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBmdXRfc3RhdGUgcHJlZml4IyNfc3RhdGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaW50IHByZWZpeCMjX2xvZ190YjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGludCBwcmVmaXgjI19ibG9ja2luZzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqZGljdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3QgKnByZWZpeCMjX3dlYWtyZWZsaXN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgRnV0dXJlT2JqX0hFQUQoZnV0KQorfSBGdXR1cmVPYmo7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBGdXR1cmVPYmpfSEVBRCh0YXNrKQorICAgIFB5T2JqZWN0ICp0YXNrX2Z1dF93YWl0ZXI7CisgICAgUHlPYmplY3QgKnRhc2tfY29ybzsKKyAgICBpbnQgdGFza19tdXN0X2NhbmNlbDsKKyAgICBpbnQgdGFza19sb2dfZGVzdHJveV9wZW5kaW5nOworfSBUYXNrT2JqOworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIFRhc2tPYmogKnN3X3Rhc2s7CisgICAgUHlPYmplY3QgKnN3X2FyZzsKK30gVGFza1NlbmRNZXRoV3JhcHBlcjsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBUYXNrT2JqICp3d190YXNrOworfSBUYXNrV2FrZXVwTWV0aFdyYXBwZXI7CisKKworI2luY2x1ZGUgImNsaW5pYy9fYXN5bmNpb21vZHVsZS5jLmgiCisKKworLypbY2xpbmljIGlucHV0XQorY2xhc3MgX2FzeW5jaW8uRnV0dXJlICJGdXR1cmVPYmogKiIgIiZGdXR1cmVfVHlwZSIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTAwZDNlNGFiY2E3MTFlMGZdKi8KKworLyogR2V0IEZ1dHVyZUl0ZXIgZnJvbSBGdXR1cmUgKi8KK3N0YXRpYyBQeU9iamVjdCogZnV0dXJlX25ld19pdGVyKFB5T2JqZWN0ICopOworc3RhdGljIGlubGluZSBpbnQgZnV0dXJlX2NhbGxfc2NoZWR1bGVfY2FsbGJhY2tzKEZ1dHVyZU9iaiAqKTsKKworc3RhdGljIGludAorZnV0dXJlX3NjaGVkdWxlX2NhbGxiYWNrcyhGdXR1cmVPYmogKmZ1dCkKK3sKKyAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICBQeU9iamVjdCogaXRlcnM7CisgICAgaW50IGk7CisKKyAgICBpZiAoZnV0LT5mdXRfY2FsbGJhY2tzID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgIk5VTEwgY2FsbGJhY2tzIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBsZW4gPSBQeUxpc3RfR0VUX1NJWkUoZnV0LT5mdXRfY2FsbGJhY2tzKTsKKyAgICBpZiAobGVuID09IDApIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaXRlcnMgPSBQeUxpc3RfR2V0U2xpY2UoZnV0LT5mdXRfY2FsbGJhY2tzLCAwLCBsZW4pOworICAgIGlmIChpdGVycyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKFB5TGlzdF9TZXRTbGljZShmdXQtPmZ1dF9jYWxsYmFja3MsIDAsIGxlbiwgTlVMTCkgPCAwKSB7CisgICAgICAgIFB5X0RFQ1JFRihpdGVycyk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QgKmhhbmRsZSA9IE5VTEw7CisgICAgICAgIFB5T2JqZWN0ICpjYiA9IFB5TGlzdF9HRVRfSVRFTShpdGVycywgaSk7CisKKyAgICAgICAgaGFuZGxlID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgKKyAgICAgICAgICAgIGZ1dC0+ZnV0X2xvb3AsICZQeUlkX2NhbGxfc29vbiwgIk9PIiwgY2IsIGZ1dCwgTlVMTCk7CisKKyAgICAgICAgaWYgKGhhbmRsZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoaXRlcnMpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlfREVDUkVGKGhhbmRsZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBQeV9ERUNSRUYoaXRlcnMpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitmdXR1cmVfaW5pdChGdXR1cmVPYmogKmZ1dCwgUHlPYmplY3QgKmxvb3ApCit7CisgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7CisgICAgX1B5X0lERU5USUZJRVIoZ2V0X2RlYnVnKTsKKworICAgIGlmIChsb29wID09IE5VTEwgfHwgbG9vcCA9PSBQeV9Ob25lKSB7CisgICAgICAgIGxvb3AgPSBQeU9iamVjdF9DYWxsT2JqZWN0KGFzeW5jaW9fZ2V0X2V2ZW50X2xvb3AsIE5VTEwpOworICAgICAgICBpZiAobG9vcCA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5X0lOQ1JFRihsb29wKTsKKyAgICB9CisgICAgUHlfQ0xFQVIoZnV0LT5mdXRfbG9vcCk7CisgICAgZnV0LT5mdXRfbG9vcCA9IGxvb3A7CisKKyAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZ1dC0+ZnV0X2xvb3AsICZQeUlkX2dldF9kZWJ1ZywgTlVMTCk7CisgICAgaWYgKHJlcyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKFB5T2JqZWN0X0lzVHJ1ZShyZXMpKSB7CisgICAgICAgIFB5X0NMRUFSKHJlcyk7CisgICAgICAgIGZ1dC0+ZnV0X3NvdXJjZV90YiA9IFB5T2JqZWN0X0NhbGxPYmplY3QodHJhY2ViYWNrX2V4dHJhY3Rfc3RhY2ssIE5VTEwpOworICAgICAgICBpZiAoZnV0LT5mdXRfc291cmNlX3RiID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlfQ0xFQVIocmVzKTsKKyAgICB9CisKKyAgICBmdXQtPmZ1dF9jYWxsYmFja3MgPSBQeUxpc3RfTmV3KDApOworICAgIGlmIChmdXQtPmZ1dF9jYWxsYmFja3MgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitmdXR1cmVfc2V0X3Jlc3VsdChGdXR1cmVPYmogKmZ1dCwgUHlPYmplY3QgKnJlcykKK3sKKyAgICBpZiAoZnV0LT5mdXRfc3RhdGUgIT0gU1RBVEVfUEVORElORykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoYXN5bmNpb19JbnZhbGlkU3RhdGVFcnJvciwgImludmFsaWQgc3RhdGUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlfSU5DUkVGKHJlcyk7CisgICAgZnV0LT5mdXRfcmVzdWx0ID0gcmVzOworICAgIGZ1dC0+ZnV0X3N0YXRlID0gU1RBVEVfRklOSVNIRUQ7CisKKyAgICBpZiAoZnV0dXJlX2NhbGxfc2NoZWR1bGVfY2FsbGJhY2tzKGZ1dCkgPT0gLTEpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZnV0dXJlX3NldF9leGNlcHRpb24oRnV0dXJlT2JqICpmdXQsIFB5T2JqZWN0ICpleGMpCit7CisgICAgUHlPYmplY3QgKmV4Y192YWwgPSBOVUxMOworCisgICAgaWYgKGZ1dC0+ZnV0X3N0YXRlICE9IFNUQVRFX1BFTkRJTkcpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKGFzeW5jaW9fSW52YWxpZFN0YXRlRXJyb3IsICJpbnZhbGlkIHN0YXRlIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChQeUV4Y2VwdGlvbkNsYXNzX0NoZWNrKGV4YykpIHsKKyAgICAgICAgZXhjX3ZhbCA9IFB5T2JqZWN0X0NhbGxPYmplY3QoZXhjLCBOVUxMKTsKKyAgICAgICAgaWYgKGV4Y192YWwgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGV4Y192YWwgPSBleGM7CisgICAgICAgIFB5X0lOQ1JFRihleGNfdmFsKTsKKyAgICB9CisgICAgaWYgKCFQeUV4Y2VwdGlvbkluc3RhbmNlX0NoZWNrKGV4Y192YWwpKSB7CisgICAgICAgIFB5X0RFQ1JFRihleGNfdmFsKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImludmFsaWQgZXhjZXB0aW9uIG9iamVjdCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKChQeU9iamVjdCopUHlfVFlQRShleGNfdmFsKSA9PSBQeUV4Y19TdG9wSXRlcmF0aW9uKSB7CisgICAgICAgIFB5X0RFQ1JFRihleGNfdmFsKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJTdG9wSXRlcmF0aW9uIGludGVyYWN0cyBiYWRseSB3aXRoIGdlbmVyYXRvcnMgIgorICAgICAgICAgICAgICAgICAgICAgICAgImFuZCBjYW5ub3QgYmUgcmFpc2VkIGludG8gYSBGdXR1cmUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZnV0LT5mdXRfZXhjZXB0aW9uID0gZXhjX3ZhbDsKKyAgICBmdXQtPmZ1dF9zdGF0ZSA9IFNUQVRFX0ZJTklTSEVEOworCisgICAgaWYgKGZ1dHVyZV9jYWxsX3NjaGVkdWxlX2NhbGxiYWNrcyhmdXQpID09IC0xKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGZ1dC0+ZnV0X2xvZ190YiA9IDE7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBpbnQKK2Z1dHVyZV9nZXRfcmVzdWx0KEZ1dHVyZU9iaiAqZnV0LCBQeU9iamVjdCAqKnJlc3VsdCkKK3sKKyAgICBQeU9iamVjdCAqZXhjOworCisgICAgaWYgKGZ1dC0+ZnV0X3N0YXRlID09IFNUQVRFX0NBTkNFTExFRCkgeworICAgICAgICBleGMgPSBfUHlPYmplY3RfQ2FsbE5vQXJnKGFzeW5jaW9fQ2FuY2VsbGVkRXJyb3IpOworICAgICAgICBpZiAoZXhjID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICAqcmVzdWx0ID0gZXhjOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICBpZiAoZnV0LT5mdXRfc3RhdGUgIT0gU1RBVEVfRklOSVNIRUQpIHsKKyAgICAgICAgUHlPYmplY3QgKm1zZyA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJSZXN1bHQgaXMgbm90IHJlYWR5LiIpOworICAgICAgICBpZiAobXNnID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisgICAgICAgIGV4YyA9IF9QeU9iamVjdF9DYWxsQXJnMShhc3luY2lvX0ludmFsaWRTdGF0ZUVycm9yLCBtc2cpOworICAgICAgICBQeV9ERUNSRUYobXNnKTsKKyAgICAgICAgaWYgKGV4YyA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKworICAgICAgICAqcmVzdWx0ID0gZXhjOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICBmdXQtPmZ1dF9sb2dfdGIgPSAwOworICAgIGlmIChmdXQtPmZ1dF9leGNlcHRpb24gIT0gTlVMTCkgeworICAgICAgICBQeV9JTkNSRUYoZnV0LT5mdXRfZXhjZXB0aW9uKTsKKyAgICAgICAgKnJlc3VsdCA9IGZ1dC0+ZnV0X2V4Y2VwdGlvbjsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgUHlfSU5DUkVGKGZ1dC0+ZnV0X3Jlc3VsdCk7CisgICAgKnJlc3VsdCA9IGZ1dC0+ZnV0X3Jlc3VsdDsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2Z1dHVyZV9hZGRfZG9uZV9jYWxsYmFjayhGdXR1cmVPYmogKmZ1dCwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBpZiAoZnV0LT5mdXRfc3RhdGUgIT0gU1RBVEVfUEVORElORykgeworICAgICAgICBQeU9iamVjdCAqaGFuZGxlID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgKKyAgICAgICAgICAgIGZ1dC0+ZnV0X2xvb3AsICZQeUlkX2NhbGxfc29vbiwgIk9PIiwgYXJnLCBmdXQsIE5VTEwpOworCisgICAgICAgIGlmIChoYW5kbGUgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoaGFuZGxlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaW50IGVyciA9IFB5TGlzdF9BcHBlbmQoZnV0LT5mdXRfY2FsbGJhY2tzLCBhcmcpOworICAgICAgICBpZiAoZXJyICE9IDApIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZnV0dXJlX2NhbmNlbChGdXR1cmVPYmogKmZ1dCkKK3sKKyAgICBpZiAoZnV0LT5mdXRfc3RhdGUgIT0gU1RBVEVfUEVORElORykgeworICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CisgICAgfQorICAgIGZ1dC0+ZnV0X3N0YXRlID0gU1RBVEVfQ0FOQ0VMTEVEOworCisgICAgaWYgKGZ1dHVyZV9jYWxsX3NjaGVkdWxlX2NhbGxiYWNrcyhmdXQpID09IC0xKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5X1JFVFVSTl9UUlVFOworfQorCisvKltjbGluaWMgaW5wdXRdCitfYXN5bmNpby5GdXR1cmUuX19pbml0X18KKworICAgICoKKyAgICBsb29wOiAnTycgPSBOVUxMCisKK1RoaXMgY2xhc3MgaXMgKmFsbW9zdCogY29tcGF0aWJsZSB3aXRoIGNvbmN1cnJlbnQuZnV0dXJlcy5GdXR1cmUuCisKKyAgICBEaWZmZXJlbmNlczoKKworICAgIC0gcmVzdWx0KCkgYW5kIGV4Y2VwdGlvbigpIGRvIG5vdCB0YWtlIGEgdGltZW91dCBhcmd1bWVudCBhbmQKKyAgICAgIHJhaXNlIGFuIGV4Y2VwdGlvbiB3aGVuIHRoZSBmdXR1cmUgaXNuJ3QgZG9uZSB5ZXQuCisKKyAgICAtIENhbGxiYWNrcyByZWdpc3RlcmVkIHdpdGggYWRkX2RvbmVfY2FsbGJhY2soKSBhcmUgYWx3YXlzIGNhbGxlZAorICAgICAgdmlhIHRoZSBldmVudCBsb29wJ3MgY2FsbF9zb29uX3RocmVhZHNhZmUoKS4KKworICAgIC0gVGhpcyBjbGFzcyBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoZSB3YWl0KCkgYW5kIGFzX2NvbXBsZXRlZCgpCisgICAgICBtZXRob2RzIGluIHRoZSBjb25jdXJyZW50LmZ1dHVyZXMgcGFja2FnZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGludAorX2FzeW5jaW9fRnV0dXJlX19faW5pdF9fX2ltcGwoRnV0dXJlT2JqICpzZWxmLCBQeU9iamVjdCAqbG9vcCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05ZWQ3NTc5OWVhY2NiNWQ2IGlucHV0PThlMTY4MWYyMzYwNWJlMmRdKi8KKworeworICAgIHJldHVybiBmdXR1cmVfaW5pdChzZWxmLCBsb29wKTsKK30KKworc3RhdGljIGludAorRnV0dXJlT2JqX2NsZWFyKEZ1dHVyZU9iaiAqZnV0KQoreworICAgIFB5X0NMRUFSKGZ1dC0+ZnV0X2xvb3ApOworICAgIFB5X0NMRUFSKGZ1dC0+ZnV0X2NhbGxiYWNrcyk7CisgICAgUHlfQ0xFQVIoZnV0LT5mdXRfcmVzdWx0KTsKKyAgICBQeV9DTEVBUihmdXQtPmZ1dF9leGNlcHRpb24pOworICAgIFB5X0NMRUFSKGZ1dC0+ZnV0X3NvdXJjZV90Yik7CisgICAgUHlfQ0xFQVIoZnV0LT5kaWN0KTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorRnV0dXJlT2JqX3RyYXZlcnNlKEZ1dHVyZU9iaiAqZnV0LCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyAgICBQeV9WSVNJVChmdXQtPmZ1dF9sb29wKTsKKyAgICBQeV9WSVNJVChmdXQtPmZ1dF9jYWxsYmFja3MpOworICAgIFB5X1ZJU0lUKGZ1dC0+ZnV0X3Jlc3VsdCk7CisgICAgUHlfVklTSVQoZnV0LT5mdXRfZXhjZXB0aW9uKTsKKyAgICBQeV9WSVNJVChmdXQtPmZ1dF9zb3VyY2VfdGIpOworICAgIFB5X1ZJU0lUKGZ1dC0+ZGljdCk7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19hc3luY2lvLkZ1dHVyZS5yZXN1bHQKKworUmV0dXJuIHRoZSByZXN1bHQgdGhpcyBmdXR1cmUgcmVwcmVzZW50cy4KKworSWYgdGhlIGZ1dHVyZSBoYXMgYmVlbiBjYW5jZWxsZWQsIHJhaXNlcyBDYW5jZWxsZWRFcnJvci4gIElmIHRoZQorZnV0dXJlJ3MgcmVzdWx0IGlzbid0IHlldCBhdmFpbGFibGUsIHJhaXNlcyBJbnZhbGlkU3RhdGVFcnJvci4gIElmCit0aGUgZnV0dXJlIGlzIGRvbmUgYW5kIGhhcyBhbiBleGNlcHRpb24gc2V0LCB0aGlzIGV4Y2VwdGlvbiBpcyByYWlzZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYXN5bmNpb19GdXR1cmVfcmVzdWx0X2ltcGwoRnV0dXJlT2JqICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWYzNWY5NDA5MzZhNGIxZTUgaW5wdXQ9NDllY2Y5Y2Y1ZWM1MGRjNV0qLworeworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgaW50IHJlcyA9IGZ1dHVyZV9nZXRfcmVzdWx0KHNlbGYsICZyZXN1bHQpOworCisgICAgaWYgKHJlcyA9PSAtMSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAocmVzID09IDApIHsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBhc3NlcnQocmVzID09IDEpOworCisgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjZXB0aW9uSW5zdGFuY2VfQ2xhc3MocmVzdWx0KSwgcmVzdWx0KTsKKyAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworLypbY2xpbmljIGlucHV0XQorX2FzeW5jaW8uRnV0dXJlLmV4Y2VwdGlvbgorCitSZXR1cm4gdGhlIGV4Y2VwdGlvbiB0aGF0IHdhcyBzZXQgb24gdGhpcyBmdXR1cmUuCisKK1RoZSBleGNlcHRpb24gKG9yIE5vbmUgaWYgbm8gZXhjZXB0aW9uIHdhcyBzZXQpIGlzIHJldHVybmVkIG9ubHkgaWYKK3RoZSBmdXR1cmUgaXMgZG9uZS4gIElmIHRoZSBmdXR1cmUgaGFzIGJlZW4gY2FuY2VsbGVkLCByYWlzZXMKK0NhbmNlbGxlZEVycm9yLiAgSWYgdGhlIGZ1dHVyZSBpc24ndCBkb25lIHlldCwgcmFpc2VzCitJbnZhbGlkU3RhdGVFcnJvci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19hc3luY2lvX0Z1dHVyZV9leGNlcHRpb25faW1wbChGdXR1cmVPYmogKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODhiMjBkNGY4NTVlMDcxMCBpbnB1dD03MzM1NDdhNzBjODQxYzY4XSovCit7CisgICAgaWYgKHNlbGYtPmZ1dF9zdGF0ZSA9PSBTVEFURV9DQU5DRUxMRUQpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKGFzeW5jaW9fQ2FuY2VsbGVkRXJyb3IsICIiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKHNlbGYtPmZ1dF9zdGF0ZSAhPSBTVEFURV9GSU5JU0hFRCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoYXN5bmNpb19JbnZhbGlkU3RhdGVFcnJvciwgIlJlc3VsdCBpcyBub3QgcmVhZHkuIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChzZWxmLT5mdXRfZXhjZXB0aW9uICE9IE5VTEwpIHsKKyAgICAgICAgc2VsZi0+ZnV0X2xvZ190YiA9IDA7CisgICAgICAgIFB5X0lOQ1JFRihzZWxmLT5mdXRfZXhjZXB0aW9uKTsKKyAgICAgICAgcmV0dXJuIHNlbGYtPmZ1dF9leGNlcHRpb247CisgICAgfQorCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19hc3luY2lvLkZ1dHVyZS5zZXRfcmVzdWx0CisKKyAgICByZXM6ICdPJworICAgIC8KKworTWFyayB0aGUgZnV0dXJlIGRvbmUgYW5kIHNldCBpdHMgcmVzdWx0LgorCitJZiB0aGUgZnV0dXJlIGlzIGFscmVhZHkgZG9uZSB3aGVuIHRoaXMgbWV0aG9kIGlzIGNhbGxlZCwgcmFpc2VzCitJbnZhbGlkU3RhdGVFcnJvci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19hc3luY2lvX0Z1dHVyZV9zZXRfcmVzdWx0KEZ1dHVyZU9iaiAqc2VsZiwgUHlPYmplY3QgKnJlcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hNjIwYWJmYzI3OTZiZmI2IGlucHV0PTg2MTk1NjVlMDUwMzM1N2VdKi8KK3sKKyAgICByZXR1cm4gZnV0dXJlX3NldF9yZXN1bHQoc2VsZiwgcmVzKTsKK30KKworLypbY2xpbmljIGlucHV0XQorX2FzeW5jaW8uRnV0dXJlLnNldF9leGNlcHRpb24KKworICAgIGV4Y2VwdGlvbjogJ08nCisgICAgLworCitNYXJrIHRoZSBmdXR1cmUgZG9uZSBhbmQgc2V0IGFuIGV4Y2VwdGlvbi4KKworSWYgdGhlIGZ1dHVyZSBpcyBhbHJlYWR5IGRvbmUgd2hlbiB0aGlzIG1ldGhvZCBpcyBjYWxsZWQsIHJhaXNlcworSW52YWxpZFN0YXRlRXJyb3IuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYXN5bmNpb19GdXR1cmVfc2V0X2V4Y2VwdGlvbihGdXR1cmVPYmogKnNlbGYsIFB5T2JqZWN0ICpleGNlcHRpb24pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjFjMWIwY2QzMjFiZTM2MCBpbnB1dD0xMzc3ZGJlMTVlNmVhMTg2XSovCit7CisgICAgcmV0dXJuIGZ1dHVyZV9zZXRfZXhjZXB0aW9uKHNlbGYsIGV4Y2VwdGlvbik7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19hc3luY2lvLkZ1dHVyZS5hZGRfZG9uZV9jYWxsYmFjaworCisgICAgZm46ICdPJworICAgIC8KKworQWRkIGEgY2FsbGJhY2sgdG8gYmUgcnVuIHdoZW4gdGhlIGZ1dHVyZSBiZWNvbWVzIGRvbmUuCisKK1RoZSBjYWxsYmFjayBpcyBjYWxsZWQgd2l0aCBhIHNpbmdsZSBhcmd1bWVudCAtIHRoZSBmdXR1cmUgb2JqZWN0LiBJZgordGhlIGZ1dHVyZSBpcyBhbHJlYWR5IGRvbmUgd2hlbiB0aGlzIGlzIGNhbGxlZCwgdGhlIGNhbGxiYWNrIGlzCitzY2hlZHVsZWQgd2l0aCBjYWxsX3Nvb24uCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYXN5bmNpb19GdXR1cmVfYWRkX2RvbmVfY2FsbGJhY2soRnV0dXJlT2JqICpzZWxmLCBQeU9iamVjdCAqZm4pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODE5ZTA5NjI5YjJlYzJiNSBpbnB1dD04Y2NlMTg3ZTMyY2VjNmE4XSovCit7CisgICAgcmV0dXJuIGZ1dHVyZV9hZGRfZG9uZV9jYWxsYmFjayhzZWxmLCBmbik7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19hc3luY2lvLkZ1dHVyZS5yZW1vdmVfZG9uZV9jYWxsYmFjaworCisgICAgZm46ICdPJworICAgIC8KKworUmVtb3ZlIGFsbCBpbnN0YW5jZXMgb2YgYSBjYWxsYmFjayBmcm9tIHRoZSAiY2FsbCB3aGVuIGRvbmUiIGxpc3QuCisKK1JldHVybnMgdGhlIG51bWJlciBvZiBjYWxsYmFja3MgcmVtb3ZlZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19hc3luY2lvX0Z1dHVyZV9yZW1vdmVfZG9uZV9jYWxsYmFjayhGdXR1cmVPYmogKnNlbGYsIFB5T2JqZWN0ICpmbikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01YWIxZmI1MmIyNGVmMzFmIGlucHV0PTNmZWRiNzNlMTQwOWMzMWNdKi8KK3sKKyAgICBQeU9iamVjdCAqbmV3bGlzdDsKKyAgICBQeV9zc2l6ZV90IGxlbiwgaSwgaj0wOworCisgICAgbGVuID0gUHlMaXN0X0dFVF9TSVpFKHNlbGYtPmZ1dF9jYWxsYmFja3MpOworICAgIGlmIChsZW4gPT0gMCkgeworICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KDApOworICAgIH0KKworICAgIG5ld2xpc3QgPSBQeUxpc3RfTmV3KGxlbik7CisgICAgaWYgKG5ld2xpc3QgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgaW50IHJldDsKKyAgICAgICAgUHlPYmplY3QgKml0ZW0gPSBQeUxpc3RfR0VUX0lURU0oc2VsZi0+ZnV0X2NhbGxiYWNrcywgaSk7CisKKyAgICAgICAgaWYgKChyZXQgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woZm4sIGl0ZW0sIFB5X0VRKSkgPCAwKSB7CisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJldCA9PSAwKSB7CisgICAgICAgICAgICBQeV9JTkNSRUYoaXRlbSk7CisgICAgICAgICAgICBQeUxpc3RfU0VUX0lURU0obmV3bGlzdCwgaiwgaXRlbSk7CisgICAgICAgICAgICBqKys7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoUHlMaXN0X1NldFNsaWNlKG5ld2xpc3QsIGosIGxlbiwgTlVMTCkgPCAwKSB7CisgICAgICAgIGdvdG8gZmFpbDsKKyAgICB9CisgICAgaWYgKFB5TGlzdF9TZXRTbGljZShzZWxmLT5mdXRfY2FsbGJhY2tzLCAwLCBsZW4sIG5ld2xpc3QpIDwgMCkgeworICAgICAgICBnb3RvIGZhaWw7CisgICAgfQorICAgIFB5X0RFQ1JFRihuZXdsaXN0KTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KGxlbiAtIGopOworCitmYWlsOgorICAgIFB5X0RFQ1JFRihuZXdsaXN0KTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworLypbY2xpbmljIGlucHV0XQorX2FzeW5jaW8uRnV0dXJlLmNhbmNlbAorCitDYW5jZWwgdGhlIGZ1dHVyZSBhbmQgc2NoZWR1bGUgY2FsbGJhY2tzLgorCitJZiB0aGUgZnV0dXJlIGlzIGFscmVhZHkgZG9uZSBvciBjYW5jZWxsZWQsIHJldHVybiBGYWxzZS4gIE90aGVyd2lzZSwKK2NoYW5nZSB0aGUgZnV0dXJlJ3Mgc3RhdGUgdG8gY2FuY2VsbGVkLCBzY2hlZHVsZSB0aGUgY2FsbGJhY2tzIGFuZAorcmV0dXJuIFRydWUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYXN5bmNpb19GdXR1cmVfY2FuY2VsX2ltcGwoRnV0dXJlT2JqICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWU0NWI5MzJiYThiZDY4YTEgaW5wdXQ9NTE1NzA5YTEyNzk5NTEwOV0qLworeworICAgIHJldHVybiBmdXR1cmVfY2FuY2VsKHNlbGYpOworfQorCisvKltjbGluaWMgaW5wdXRdCitfYXN5bmNpby5GdXR1cmUuY2FuY2VsbGVkCisKK1JldHVybiBUcnVlIGlmIHRoZSBmdXR1cmUgd2FzIGNhbmNlbGxlZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19hc3luY2lvX0Z1dHVyZV9jYW5jZWxsZWRfaW1wbChGdXR1cmVPYmogKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTQ1MTk3Y2VkNTg2MzU3ZCBpbnB1dD05NDNhYjhiN2I3YjE3ZTQ1XSovCit7CisgICAgaWYgKHNlbGYtPmZ1dF9zdGF0ZSA9PSBTVEFURV9DQU5DRUxMRUQpIHsKKyAgICAgICAgUHlfUkVUVVJOX1RSVUU7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CisgICAgfQorfQorCisvKltjbGluaWMgaW5wdXRdCitfYXN5bmNpby5GdXR1cmUuZG9uZQorCitSZXR1cm4gVHJ1ZSBpZiB0aGUgZnV0dXJlIGlzIGRvbmUuCisKK0RvbmUgbWVhbnMgZWl0aGVyIHRoYXQgYSByZXN1bHQgLyBleGNlcHRpb24gYXJlIGF2YWlsYWJsZSwgb3IgdGhhdCB0aGUKK2Z1dHVyZSB3YXMgY2FuY2VsbGVkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fRnV0dXJlX2RvbmVfaW1wbChGdXR1cmVPYmogKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MjQ0YzVhYzM1MTE0NTA5NiBpbnB1dD0yOGQ3YjIzZmRiNjVkMmFjXSovCit7CisgICAgaWYgKHNlbGYtPmZ1dF9zdGF0ZSA9PSBTVEFURV9QRU5ESU5HKSB7CisgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5X1JFVFVSTl9UUlVFOworICAgIH0KK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0Z1dHVyZU9ial9nZXRfYmxvY2tpbmcoRnV0dXJlT2JqICpmdXQpCit7CisgICAgaWYgKGZ1dC0+ZnV0X2Jsb2NraW5nKSB7CisgICAgICAgIFB5X1JFVFVSTl9UUlVFOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOworICAgIH0KK30KKworc3RhdGljIGludAorRnV0dXJlT2JqX3NldF9ibG9ja2luZyhGdXR1cmVPYmogKmZ1dCwgUHlPYmplY3QgKnZhbCkKK3sKKyAgICBpbnQgaXNfdHJ1ZSA9IFB5T2JqZWN0X0lzVHJ1ZSh2YWwpOworICAgIGlmIChpc190cnVlIDwgMCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGZ1dC0+ZnV0X2Jsb2NraW5nID0gaXNfdHJ1ZTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0Z1dHVyZU9ial9nZXRfbG9nX3RyYWNlYmFjayhGdXR1cmVPYmogKmZ1dCkKK3sKKyAgICBpZiAoZnV0LT5mdXRfbG9nX3RiKSB7CisgICAgICAgIFB5X1JFVFVSTl9UUlVFOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOworICAgIH0KK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0Z1dHVyZU9ial9nZXRfbG9vcChGdXR1cmVPYmogKmZ1dCkKK3sKKyAgICBpZiAoZnV0LT5mdXRfbG9vcCA9PSBOVUxMKSB7CisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIH0KKyAgICBQeV9JTkNSRUYoZnV0LT5mdXRfbG9vcCk7CisgICAgcmV0dXJuIGZ1dC0+ZnV0X2xvb3A7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitGdXR1cmVPYmpfZ2V0X2NhbGxiYWNrcyhGdXR1cmVPYmogKmZ1dCkKK3sKKyAgICBpZiAoZnV0LT5mdXRfY2FsbGJhY2tzID09IE5VTEwpIHsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgfQorICAgIFB5X0lOQ1JFRihmdXQtPmZ1dF9jYWxsYmFja3MpOworICAgIHJldHVybiBmdXQtPmZ1dF9jYWxsYmFja3M7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitGdXR1cmVPYmpfZ2V0X3Jlc3VsdChGdXR1cmVPYmogKmZ1dCkKK3sKKyAgICBpZiAoZnV0LT5mdXRfcmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgfQorICAgIFB5X0lOQ1JFRihmdXQtPmZ1dF9yZXN1bHQpOworICAgIHJldHVybiBmdXQtPmZ1dF9yZXN1bHQ7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitGdXR1cmVPYmpfZ2V0X2V4Y2VwdGlvbihGdXR1cmVPYmogKmZ1dCkKK3sKKyAgICBpZiAoZnV0LT5mdXRfZXhjZXB0aW9uID09IE5VTEwpIHsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgfQorICAgIFB5X0lOQ1JFRihmdXQtPmZ1dF9leGNlcHRpb24pOworICAgIHJldHVybiBmdXQtPmZ1dF9leGNlcHRpb247Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitGdXR1cmVPYmpfZ2V0X3NvdXJjZV90cmFjZWJhY2soRnV0dXJlT2JqICpmdXQpCit7CisgICAgaWYgKGZ1dC0+ZnV0X3NvdXJjZV90YiA9PSBOVUxMKSB7CisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIH0KKyAgICBQeV9JTkNSRUYoZnV0LT5mdXRfc291cmNlX3RiKTsKKyAgICByZXR1cm4gZnV0LT5mdXRfc291cmNlX3RiOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorRnV0dXJlT2JqX2dldF9zdGF0ZShGdXR1cmVPYmogKmZ1dCkKK3sKKyAgICBfUHlfSURFTlRJRklFUihQRU5ESU5HKTsKKyAgICBfUHlfSURFTlRJRklFUihDQU5DRUxMRUQpOworICAgIF9QeV9JREVOVElGSUVSKEZJTklTSEVEKTsKKyAgICBQeU9iamVjdCAqcmV0ID0gTlVMTDsKKworICAgIHN3aXRjaCAoZnV0LT5mdXRfc3RhdGUpIHsKKyAgICBjYXNlIFNUQVRFX1BFTkRJTkc6CisgICAgICAgIHJldCA9IF9QeVVuaWNvZGVfRnJvbUlkKCZQeUlkX1BFTkRJTkcpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNUQVRFX0NBTkNFTExFRDoKKyAgICAgICAgcmV0ID0gX1B5VW5pY29kZV9Gcm9tSWQoJlB5SWRfQ0FOQ0VMTEVEKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTVEFURV9GSU5JU0hFRDoKKyAgICAgICAgcmV0ID0gX1B5VW5pY29kZV9Gcm9tSWQoJlB5SWRfRklOSVNIRUQpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBhc3NlcnQgKDApOworICAgIH0KKyAgICBQeV9JTkNSRUYocmV0KTsKKyAgICByZXR1cm4gcmV0OworfQorCisvKltjbGluaWMgaW5wdXRdCitfYXN5bmNpby5GdXR1cmUuX3JlcHJfaW5mbworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fRnV0dXJlX19yZXByX2luZm9faW1wbChGdXR1cmVPYmogKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZmE2OWU5MDFiZDE3NmNmYiBpbnB1dD1mMjE1MDRkOGUyYWUxY2EyXSovCit7CisgICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoCisgICAgICAgIGFzeW5jaW9fZnV0dXJlX3JlcHJfaW5mb19mdW5jLCBzZWxmLCBOVUxMKTsKK30KKworLypbY2xpbmljIGlucHV0XQorX2FzeW5jaW8uRnV0dXJlLl9zY2hlZHVsZV9jYWxsYmFja3MKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19hc3luY2lvX0Z1dHVyZV9fc2NoZWR1bGVfY2FsbGJhY2tzX2ltcGwoRnV0dXJlT2JqICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTVlODk1OGQ4OWVhMWM1ZGMgaW5wdXQ9NGY1ZjI5NWYyNjNmNGE4OF0qLworeworICAgIGludCByZXQgPSBmdXR1cmVfc2NoZWR1bGVfY2FsbGJhY2tzKHNlbGYpOworICAgIGlmIChyZXQgPT0gLTEpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorRnV0dXJlT2JqX3JlcHIoRnV0dXJlT2JqICpmdXQpCit7CisgICAgX1B5X0lERU5USUZJRVIoX3JlcHJfaW5mbyk7CisKKyAgICBQeU9iamVjdCAqX3JlcHJfaW5mbyA9IF9QeVVuaWNvZGVfRnJvbUlkKCZQeUlkX19yZXByX2luZm8pOyAgLy8gYm9ycm93ZWQKKyAgICBpZiAoX3JlcHJfaW5mbyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5T2JqZWN0ICpyaW5mbyA9IFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzKChQeU9iamVjdCopZnV0LCBfcmVwcl9pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgIGlmIChyaW5mbyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5T2JqZWN0ICpzcCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIgIik7CisgICAgaWYgKHNwID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKHJpbmZvKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlPYmplY3QgKnJpbmZvX3MgPSBQeVVuaWNvZGVfSm9pbihzcCwgcmluZm8pOworICAgIFB5X0RFQ1JFRihzcCk7CisgICAgUHlfREVDUkVGKHJpbmZvKTsKKyAgICBpZiAocmluZm9fcyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5T2JqZWN0ICpyc3RyID0gTlVMTDsKKyAgICBQeU9iamVjdCAqdHlwZV9uYW1lID0gUHlPYmplY3RfR2V0QXR0clN0cmluZygoUHlPYmplY3QqKVB5X1RZUEUoZnV0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX19uYW1lX18iKTsKKyAgICBpZiAodHlwZV9uYW1lICE9IE5VTEwpIHsKKyAgICAgICAgcnN0ciA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8JVMgJVM+IiwgdHlwZV9uYW1lLCByaW5mb19zKTsKKyAgICAgICAgUHlfREVDUkVGKHR5cGVfbmFtZSk7CisgICAgfQorICAgIFB5X0RFQ1JFRihyaW5mb19zKTsKKyAgICByZXR1cm4gcnN0cjsKK30KKworc3RhdGljIHZvaWQKK0Z1dHVyZU9ial9maW5hbGl6ZShGdXR1cmVPYmogKmZ1dCkKK3sKKyAgICBfUHlfSURFTlRJRklFUihjYWxsX2V4Y2VwdGlvbl9oYW5kbGVyKTsKKyAgICBfUHlfSURFTlRJRklFUihtZXNzYWdlKTsKKyAgICBfUHlfSURFTlRJRklFUihleGNlcHRpb24pOworICAgIF9QeV9JREVOVElGSUVSKGZ1dHVyZSk7CisgICAgX1B5X0lERU5USUZJRVIoc291cmNlX3RyYWNlYmFjayk7CisKKyAgICBpZiAoIWZ1dC0+ZnV0X2xvZ190YikgeworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGFzc2VydChmdXQtPmZ1dF9leGNlcHRpb24gIT0gTlVMTCk7CisgICAgZnV0LT5mdXRfbG9nX3RiID0gMDs7CisKKyAgICBQeU9iamVjdCAqZXJyb3JfdHlwZSwgKmVycm9yX3ZhbHVlLCAqZXJyb3JfdHJhY2ViYWNrOworICAgIC8qIFNhdmUgdGhlIGN1cnJlbnQgZXhjZXB0aW9uLCBpZiBhbnkuICovCisgICAgUHlFcnJfRmV0Y2goJmVycm9yX3R5cGUsICZlcnJvcl92YWx1ZSwgJmVycm9yX3RyYWNlYmFjayk7CisKKyAgICBQeU9iamVjdCAqY29udGV4dCA9IE5VTEw7CisgICAgUHlPYmplY3QgKnR5cGVfbmFtZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKm1lc3NhZ2UgPSBOVUxMOworICAgIFB5T2JqZWN0ICpmdW5jID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKKworICAgIGNvbnRleHQgPSBQeURpY3RfTmV3KCk7CisgICAgaWYgKGNvbnRleHQgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorCisgICAgdHlwZV9uYW1lID0gUHlPYmplY3RfR2V0QXR0clN0cmluZygoUHlPYmplY3QqKVB5X1RZUEUoZnV0KSwgIl9fbmFtZV9fIik7CisgICAgaWYgKHR5cGVfbmFtZSA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICB9CisKKyAgICBtZXNzYWdlID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoCisgICAgICAgICIlUyBleGNlcHRpb24gd2FzIG5ldmVyIHJldHJpZXZlZCIsIHR5cGVfbmFtZSk7CisgICAgaWYgKG1lc3NhZ2UgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorCisgICAgaWYgKF9QeURpY3RfU2V0SXRlbUlkKGNvbnRleHQsICZQeUlkX21lc3NhZ2UsIG1lc3NhZ2UpIDwgMCB8fAorICAgICAgICBfUHlEaWN0X1NldEl0ZW1JZChjb250ZXh0LCAmUHlJZF9leGNlcHRpb24sIGZ1dC0+ZnV0X2V4Y2VwdGlvbikgPCAwIHx8CisgICAgICAgIF9QeURpY3RfU2V0SXRlbUlkKGNvbnRleHQsICZQeUlkX2Z1dHVyZSwgKFB5T2JqZWN0KilmdXQpIDwgMCkgeworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorICAgIGlmIChmdXQtPmZ1dF9zb3VyY2VfdGIgIT0gTlVMTCkgeworICAgICAgICBpZiAoX1B5RGljdF9TZXRJdGVtSWQoY29udGV4dCwgJlB5SWRfc291cmNlX3RyYWNlYmFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1dC0+ZnV0X3NvdXJjZV90YikgPCAwKSB7CisgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jID0gX1B5T2JqZWN0X0dldEF0dHJJZChmdXQtPmZ1dF9sb29wLCAmUHlJZF9jYWxsX2V4Y2VwdGlvbl9oYW5kbGVyKTsKKyAgICBpZiAoZnVuYyAhPSBOVUxMKSB7CisgICAgICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsQXJnMShmdW5jLCBjb250ZXh0KTsKKyAgICAgICAgaWYgKHJlcyA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUoZnVuYyk7CisgICAgICAgIH0KKyAgICB9CisKK2ZpbmFsbHk6CisgICAgUHlfQ0xFQVIoY29udGV4dCk7CisgICAgUHlfQ0xFQVIodHlwZV9uYW1lKTsKKyAgICBQeV9DTEVBUihtZXNzYWdlKTsKKyAgICBQeV9DTEVBUihmdW5jKTsKKyAgICBQeV9DTEVBUihyZXMpOworCisgICAgLyogUmVzdG9yZSB0aGUgc2F2ZWQgZXhjZXB0aW9uLiAqLworICAgIFB5RXJyX1Jlc3RvcmUoZXJyb3JfdHlwZSwgZXJyb3JfdmFsdWUsIGVycm9yX3RyYWNlYmFjayk7Cit9CisKKworc3RhdGljIFB5QXN5bmNNZXRob2RzIEZ1dHVyZVR5cGVfYXNfYXN5bmMgPSB7CisgICAgKHVuYXJ5ZnVuYylmdXR1cmVfbmV3X2l0ZXIsICAgICAgICAgLyogYW1fYXdhaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBhbV9haXRlciAqLworICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFtX2FuZXh0ICovCit9OworCitzdGF0aWMgUHlNZXRob2REZWYgRnV0dXJlVHlwZV9tZXRob2RzW10gPSB7CisgICAgX0FTWU5DSU9fRlVUVVJFX1JFU1VMVF9NRVRIT0RERUYKKyAgICBfQVNZTkNJT19GVVRVUkVfRVhDRVBUSU9OX01FVEhPRERFRgorICAgIF9BU1lOQ0lPX0ZVVFVSRV9TRVRfUkVTVUxUX01FVEhPRERFRgorICAgIF9BU1lOQ0lPX0ZVVFVSRV9TRVRfRVhDRVBUSU9OX01FVEhPRERFRgorICAgIF9BU1lOQ0lPX0ZVVFVSRV9BRERfRE9ORV9DQUxMQkFDS19NRVRIT0RERUYKKyAgICBfQVNZTkNJT19GVVRVUkVfUkVNT1ZFX0RPTkVfQ0FMTEJBQ0tfTUVUSE9EREVGCisgICAgX0FTWU5DSU9fRlVUVVJFX0NBTkNFTF9NRVRIT0RERUYKKyAgICBfQVNZTkNJT19GVVRVUkVfQ0FOQ0VMTEVEX01FVEhPRERFRgorICAgIF9BU1lOQ0lPX0ZVVFVSRV9ET05FX01FVEhPRERFRgorICAgIF9BU1lOQ0lPX0ZVVFVSRV9fUkVQUl9JTkZPX01FVEhPRERFRgorICAgIF9BU1lOQ0lPX0ZVVFVSRV9fU0NIRURVTEVfQ0FMTEJBQ0tTX01FVEhPRERFRgorICAgIHtOVUxMLCBOVUxMfSAgICAgICAgLyogU2VudGluZWwgKi8KK307CisKKyNkZWZpbmUgRlVUVVJFX0NPTU1PTl9HRVRTRVRMSVNUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7Il9zdGF0ZSIsIChnZXR0ZXIpRnV0dXJlT2JqX2dldF9zdGF0ZSwgTlVMTCwgTlVMTH0sICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7Il9hc3luY2lvX2Z1dHVyZV9ibG9ja2luZyIsIChnZXR0ZXIpRnV0dXJlT2JqX2dldF9ibG9ja2luZywgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXR0ZXIpRnV0dXJlT2JqX3NldF9ibG9ja2luZywgTlVMTH0sICAgICAgIFwKKyAgICB7Il9sb29wIiwgKGdldHRlcilGdXR1cmVPYmpfZ2V0X2xvb3AsIE5VTEwsIE5VTEx9LCAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7Il9jYWxsYmFja3MiLCAoZ2V0dGVyKUZ1dHVyZU9ial9nZXRfY2FsbGJhY2tzLCBOVUxMLCBOVUxMfSwgICAgICAgICAgICAgIFwKKyAgICB7Il9yZXN1bHQiLCAoZ2V0dGVyKUZ1dHVyZU9ial9nZXRfcmVzdWx0LCBOVUxMLCBOVUxMfSwgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7Il9leGNlcHRpb24iLCAoZ2V0dGVyKUZ1dHVyZU9ial9nZXRfZXhjZXB0aW9uLCBOVUxMLCBOVUxMfSwgICAgICAgICAgICAgIFwKKyAgICB7Il9sb2dfdHJhY2ViYWNrIiwgKGdldHRlcilGdXR1cmVPYmpfZ2V0X2xvZ190cmFjZWJhY2ssIE5VTEwsIE5VTEx9LCAgICAgIFwKKyAgICB7Il9zb3VyY2VfdHJhY2ViYWNrIiwgKGdldHRlcilGdXR1cmVPYmpfZ2V0X3NvdXJjZV90cmFjZWJhY2ssIE5VTEwsIE5VTEx9LAorCitzdGF0aWMgUHlHZXRTZXREZWYgRnV0dXJlVHlwZV9nZXRzZXRsaXN0W10gPSB7CisgICAgRlVUVVJFX0NPTU1PTl9HRVRTRVRMSVNUCisgICAge05VTEx9IC8qIFNlbnRpbmVsICovCit9OworCitzdGF0aWMgdm9pZCBGdXR1cmVPYmpfZGVhbGxvYyhQeU9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgRnV0dXJlVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICAiX2FzeW5jaW8uRnV0dXJlIiwKKyAgICBzaXplb2YoRnV0dXJlT2JqKSwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIC50cF9kZWFsbG9jID0gRnV0dXJlT2JqX2RlYWxsb2MsCisgICAgLnRwX2FzX2FzeW5jID0gJkZ1dHVyZVR5cGVfYXNfYXN5bmMsCisgICAgLnRwX3JlcHIgPSAocmVwcmZ1bmMpRnV0dXJlT2JqX3JlcHIsCisgICAgLnRwX2ZsYWdzID0gUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDIHwgUHlfVFBGTEFHU19CQVNFVFlQRQorICAgICAgICB8IFB5X1RQRkxBR1NfSEFWRV9GSU5BTElaRSwKKyAgICAudHBfZG9jID0gX2FzeW5jaW9fRnV0dXJlX19faW5pdF9fX19kb2NfXywKKyAgICAudHBfdHJhdmVyc2UgPSAodHJhdmVyc2Vwcm9jKUZ1dHVyZU9ial90cmF2ZXJzZSwKKyAgICAudHBfY2xlYXIgPSAoaW5xdWlyeSlGdXR1cmVPYmpfY2xlYXIsCisgICAgLnRwX3dlYWtsaXN0b2Zmc2V0ID0gb2Zmc2V0b2YoRnV0dXJlT2JqLCBmdXRfd2Vha3JlZmxpc3QpLAorICAgIC50cF9pdGVyID0gKGdldGl0ZXJmdW5jKWZ1dHVyZV9uZXdfaXRlciwKKyAgICAudHBfbWV0aG9kcyA9IEZ1dHVyZVR5cGVfbWV0aG9kcywKKyAgICAudHBfZ2V0c2V0ID0gRnV0dXJlVHlwZV9nZXRzZXRsaXN0LAorICAgIC50cF9kaWN0b2Zmc2V0ID0gb2Zmc2V0b2YoRnV0dXJlT2JqLCBkaWN0KSwKKyAgICAudHBfaW5pdCA9IChpbml0cHJvYylfYXN5bmNpb19GdXR1cmVfX19pbml0X18sCisgICAgLnRwX25ldyA9IFB5VHlwZV9HZW5lcmljTmV3LAorICAgIC50cF9maW5hbGl6ZSA9IChkZXN0cnVjdG9yKUZ1dHVyZU9ial9maW5hbGl6ZSwKK307CisKKyNkZWZpbmUgRnV0dXJlX0NoZWNrRXhhY3Qob2JqKSAoUHlfVFlQRShvYmopID09ICZGdXR1cmVUeXBlKQorCitzdGF0aWMgaW5saW5lIGludAorZnV0dXJlX2NhbGxfc2NoZWR1bGVfY2FsbGJhY2tzKEZ1dHVyZU9iaiAqZnV0KQoreworICAgIGlmIChGdXR1cmVfQ2hlY2tFeGFjdChmdXQpKSB7CisgICAgICAgIHJldHVybiBmdXR1cmVfc2NoZWR1bGVfY2FsbGJhY2tzKGZ1dCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBgZnV0YCBpcyBhIHN1YmNsYXNzIG9mIEZ1dHVyZSAqLworICAgICAgICBQeU9iamVjdCAqcmV0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgKKyAgICAgICAgICAgIChQeU9iamVjdCopZnV0LCAmUHlJZF9fc2NoZWR1bGVfY2FsbGJhY2tzLCBOVUxMKTsKKyAgICAgICAgaWYgKHJldCA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKworICAgICAgICBQeV9ERUNSRUYocmV0KTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCitzdGF0aWMgdm9pZAorRnV0dXJlT2JqX2RlYWxsb2MoUHlPYmplY3QgKnNlbGYpCit7CisgICAgRnV0dXJlT2JqICpmdXQgPSAoRnV0dXJlT2JqICopc2VsZjsKKworICAgIGlmIChGdXR1cmVfQ2hlY2tFeGFjdChmdXQpKSB7CisgICAgICAgIC8qIFdoZW4gZnV0IGlzIHN1YmNsYXNzIG9mIEZ1dHVyZSwgZmluYWxpemVyIGlzIGNhbGxlZCBmcm9tCisgICAgICAgICAqIHN1YnR5cGVfZGVhbGxvYy4KKyAgICAgICAgICovCisgICAgICAgIGlmIChQeU9iamVjdF9DYWxsRmluYWxpemVyRnJvbURlYWxsb2Moc2VsZikgPCAwKSB7CisgICAgICAgICAgICAvLyByZXN1cnJlY3RlZC4KKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChmdXQtPmZ1dF93ZWFrcmVmbGlzdCAhPSBOVUxMKSB7CisgICAgICAgIFB5T2JqZWN0X0NsZWFyV2Vha1JlZnMoc2VsZik7CisgICAgfQorCisgICAgKHZvaWQpRnV0dXJlT2JqX2NsZWFyKGZ1dCk7CisgICAgUHlfVFlQRShmdXQpLT50cF9mcmVlKGZ1dCk7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqIEZ1dHVyZSBJdGVyYXRvciAqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBGdXR1cmVPYmogKmZ1dHVyZTsKK30gZnV0dXJlaXRlcm9iamVjdDsKKworc3RhdGljIHZvaWQKK0Z1dHVyZUl0ZXJfZGVhbGxvYyhmdXR1cmVpdGVyb2JqZWN0ICppdCkKK3sKKyAgICBQeU9iamVjdF9HQ19VblRyYWNrKGl0KTsKKyAgICBQeV9YREVDUkVGKGl0LT5mdXR1cmUpOworICAgIFB5T2JqZWN0X0dDX0RlbChpdCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitGdXR1cmVJdGVyX2l0ZXJuZXh0KGZ1dHVyZWl0ZXJvYmplY3QgKml0KQoreworICAgIFB5T2JqZWN0ICpyZXM7CisgICAgRnV0dXJlT2JqICpmdXQgPSBpdC0+ZnV0dXJlOworCisgICAgaWYgKGZ1dCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChmdXQtPmZ1dF9zdGF0ZSA9PSBTVEFURV9QRU5ESU5HKSB7CisgICAgICAgIGlmICghZnV0LT5mdXRfYmxvY2tpbmcpIHsKKyAgICAgICAgICAgIGZ1dC0+ZnV0X2Jsb2NraW5nID0gMTsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihmdXQpOworICAgICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKWZ1dDsKKyAgICAgICAgfQorICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfQXNzZXJ0aW9uRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAieWllbGQgZnJvbSB3YXNuJ3QgdXNlZCB3aXRoIGZ1dHVyZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXMgPSBfYXN5bmNpb19GdXR1cmVfcmVzdWx0X2ltcGwoZnV0KTsKKyAgICBpZiAocmVzICE9IE5VTEwpIHsKKyAgICAgICAgLyogVGhlIHJlc3VsdCBvZiB0aGUgRnV0dXJlIGlzIG5vdCBhbiBleGNlcHRpb24uICovCisgICAgICAgIGlmIChfUHlHZW5fU2V0U3RvcEl0ZXJhdGlvblZhbHVlKHJlcykgPCAwKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRihyZXMpOworICAgIH0KKworICAgIGl0LT5mdXR1cmUgPSBOVUxMOworICAgIFB5X0RFQ1JFRihmdXQpOworICAgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorRnV0dXJlSXRlcl9zZW5kKGZ1dHVyZWl0ZXJvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCit7CisgICAgLyogRnV0dXJlLl9faXRlcl9fIGRvZXNuJ3QgY2FyZSBhYm91dCB2YWx1ZXMgdGhhdCBhcmUgcHVzaGVkIHRvIHRoZQorICAgICAqIGdlbmVyYXRvciwgaXQganVzdCByZXR1cm5zICJzZWxmLnJlc3VsdCgpLgorICAgICAqLworICAgIHJldHVybiBGdXR1cmVJdGVyX2l0ZXJuZXh0KHNlbGYpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorRnV0dXJlSXRlcl90aHJvdyhmdXR1cmVpdGVyb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqdHlwZT1OVUxMLCAqdmFsPU5VTEwsICp0Yj1OVUxMOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xPTyIsICZ0eXBlLCAmdmFsLCAmdGIpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmICh2YWwgPT0gUHlfTm9uZSkgeworICAgICAgICB2YWwgPSBOVUxMOworICAgIH0KKyAgICBpZiAodGIgPT0gUHlfTm9uZSkgeworICAgICAgICB0YiA9IE5VTEw7CisgICAgfSBlbHNlIGlmICh0YiAhPSBOVUxMICYmICFQeVRyYWNlQmFja19DaGVjayh0YikpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInRocm93KCkgdGhpcmQgYXJndW1lbnQgbXVzdCBiZSBhIHRyYWNlYmFjayIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeV9JTkNSRUYodHlwZSk7CisgICAgUHlfWElOQ1JFRih2YWwpOworICAgIFB5X1hJTkNSRUYodGIpOworCisgICAgaWYgKFB5RXhjZXB0aW9uQ2xhc3NfQ2hlY2sodHlwZSkpIHsKKyAgICAgICAgUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uKCZ0eXBlLCAmdmFsLCAmdGIpOworICAgICAgICAvKiBObyBuZWVkIHRvIGNhbGwgUHlFeGNlcHRpb25fU2V0VHJhY2ViYWNrIHNpbmNlIHdlJ2xsIGJlIGNhbGxpbmcKKyAgICAgICAgICAgUHlFcnJfUmVzdG9yZSBmb3IgYHR5cGVgLCBgdmFsYCwgYW5kIGB0YmAuICovCisgICAgfSBlbHNlIGlmIChQeUV4Y2VwdGlvbkluc3RhbmNlX0NoZWNrKHR5cGUpKSB7CisgICAgICAgIGlmICh2YWwpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluc3RhbmNlIGV4Y2VwdGlvbiBtYXkgbm90IGhhdmUgYSBzZXBhcmF0ZSB2YWx1ZSIpOworICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICB9CisgICAgICAgIHZhbCA9IHR5cGU7CisgICAgICAgIHR5cGUgPSBQeUV4Y2VwdGlvbkluc3RhbmNlX0NsYXNzKHR5cGUpOworICAgICAgICBQeV9JTkNSRUYodHlwZSk7CisgICAgICAgIGlmICh0YiA9PSBOVUxMKQorICAgICAgICAgICAgdGIgPSBQeUV4Y2VwdGlvbl9HZXRUcmFjZWJhY2sodmFsKTsKKyAgICB9IGVsc2UgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImV4Y2VwdGlvbnMgbXVzdCBiZSBjbGFzc2VzIGRlcml2aW5nIEJhc2VFeGNlcHRpb24gb3IgIgorICAgICAgICAgICAgICAgICAgICAgICAgImluc3RhbmNlcyBvZiBzdWNoIGEgY2xhc3MiKTsKKyAgICAgICAgZ290byBmYWlsOworICAgIH0KKworICAgIFB5X0NMRUFSKHNlbGYtPmZ1dHVyZSk7CisKKyAgICBQeUVycl9SZXN0b3JlKHR5cGUsIHZhbCwgdGIpOworCisgICAgcmV0dXJuIEZ1dHVyZUl0ZXJfaXRlcm5leHQoc2VsZik7CisKKyAgZmFpbDoKKyAgICBQeV9ERUNSRUYodHlwZSk7CisgICAgUHlfWERFQ1JFRih2YWwpOworICAgIFB5X1hERUNSRUYodGIpOworICAgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorRnV0dXJlSXRlcl9jbG9zZShmdXR1cmVpdGVyb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5X0NMRUFSKHNlbGYtPmZ1dHVyZSk7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBpbnQKK0Z1dHVyZUl0ZXJfdHJhdmVyc2UoZnV0dXJlaXRlcm9iamVjdCAqaXQsIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQoreworICAgIFB5X1ZJU0lUKGl0LT5mdXR1cmUpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgRnV0dXJlSXRlcl9tZXRob2RzW10gPSB7CisgICAgeyJzZW5kIiwgIChQeUNGdW5jdGlvbilGdXR1cmVJdGVyX3NlbmQsIE1FVEhfTywgTlVMTH0sCisgICAgeyJ0aHJvdyIsIChQeUNGdW5jdGlvbilGdXR1cmVJdGVyX3Rocm93LCBNRVRIX1ZBUkFSR1MsIE5VTEx9LAorICAgIHsiY2xvc2UiLCAoUHlDRnVuY3Rpb24pRnV0dXJlSXRlcl9jbG9zZSwgTUVUSF9OT0FSR1MsIE5VTEx9LAorICAgIHtOVUxMLCBOVUxMfSAgICAgICAgLyogU2VudGluZWwgKi8KK307CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgRnV0dXJlSXRlclR5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgIl9hc3luY2lvLkZ1dHVyZUl0ZXIiLAorICAgIC50cF9iYXNpY3NpemUgPSBzaXplb2YoZnV0dXJlaXRlcm9iamVjdCksCisgICAgLnRwX2l0ZW1zaXplID0gMCwKKyAgICAudHBfZGVhbGxvYyA9IChkZXN0cnVjdG9yKUZ1dHVyZUl0ZXJfZGVhbGxvYywKKyAgICAudHBfZ2V0YXR0cm8gPSBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwKKyAgICAudHBfZmxhZ3MgPSBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MsCisgICAgLnRwX3RyYXZlcnNlID0gKHRyYXZlcnNlcHJvYylGdXR1cmVJdGVyX3RyYXZlcnNlLAorICAgIC50cF9pdGVyID0gUHlPYmplY3RfU2VsZkl0ZXIsCisgICAgLnRwX2l0ZXJuZXh0ID0gKGl0ZXJuZXh0ZnVuYylGdXR1cmVJdGVyX2l0ZXJuZXh0LAorICAgIC50cF9tZXRob2RzID0gRnV0dXJlSXRlcl9tZXRob2RzLAorfTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2Z1dHVyZV9uZXdfaXRlcihQeU9iamVjdCAqZnV0KQoreworICAgIGZ1dHVyZWl0ZXJvYmplY3QgKml0OworCisgICAgaWYgKCFQeU9iamVjdF9UeXBlQ2hlY2soZnV0LCAmRnV0dXJlVHlwZSkpIHsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpdCA9IFB5T2JqZWN0X0dDX05ldyhmdXR1cmVpdGVyb2JqZWN0LCAmRnV0dXJlSXRlclR5cGUpOworICAgIGlmIChpdCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBQeV9JTkNSRUYoZnV0KTsKKyAgICBpdC0+ZnV0dXJlID0gKEZ1dHVyZU9iaiopZnV0OworICAgIFB5T2JqZWN0X0dDX1RyYWNrKGl0KTsKKyAgICByZXR1cm4gKFB5T2JqZWN0KilpdDsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKiogVGFzayAqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisvKltjbGluaWMgaW5wdXRdCitjbGFzcyBfYXN5bmNpby5UYXNrICJUYXNrT2JqICoiICImVGFza19UeXBlIgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9NzE5ZGNlZjBmY2MwM2IzN10qLworCitzdGF0aWMgaW50IHRhc2tfY2FsbF9zdGVwX3Nvb24oVGFza09iaiAqLCBQeU9iamVjdCAqKTsKK3N0YXRpYyBpbmxpbmUgUHlPYmplY3QgKiB0YXNrX2NhbGxfd2FrZXVwKFRhc2tPYmogKiwgUHlPYmplY3QgKik7CitzdGF0aWMgaW5saW5lIFB5T2JqZWN0ICogdGFza19jYWxsX3N0ZXAoVGFza09iaiAqLCBQeU9iamVjdCAqKTsKK3N0YXRpYyBQeU9iamVjdCAqIHRhc2tfd2FrZXVwKFRhc2tPYmogKiwgUHlPYmplY3QgKik7CitzdGF0aWMgUHlPYmplY3QgKiB0YXNrX3N0ZXAoVGFza09iaiAqLCBQeU9iamVjdCAqKTsKKworLyogLS0tLS0gVGFzay5fc3RlcCB3cmFwcGVyICovCisKK3N0YXRpYyBpbnQKK1Rhc2tTZW5kTWV0aFdyYXBwZXJfY2xlYXIoVGFza1NlbmRNZXRoV3JhcHBlciAqbykKK3sKKyAgICBQeV9DTEVBUihvLT5zd190YXNrKTsKKyAgICBQeV9DTEVBUihvLT5zd19hcmcpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAorVGFza1NlbmRNZXRoV3JhcHBlcl9kZWFsbG9jKFRhc2tTZW5kTWV0aFdyYXBwZXIgKm8pCit7CisgICAgUHlPYmplY3RfR0NfVW5UcmFjayhvKTsKKyAgICAodm9pZClUYXNrU2VuZE1ldGhXcmFwcGVyX2NsZWFyKG8pOworICAgIFB5X1RZUEUobyktPnRwX2ZyZWUobyk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitUYXNrU2VuZE1ldGhXcmFwcGVyX2NhbGwoVGFza1NlbmRNZXRoV3JhcHBlciAqbywKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgcmV0dXJuIHRhc2tfY2FsbF9zdGVwKG8tPnN3X3Rhc2ssIG8tPnN3X2FyZyk7Cit9CisKK3N0YXRpYyBpbnQKK1Rhc2tTZW5kTWV0aFdyYXBwZXJfdHJhdmVyc2UoVGFza1NlbmRNZXRoV3JhcHBlciAqbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCit7CisgICAgUHlfVklTSVQoby0+c3dfdGFzayk7CisgICAgUHlfVklTSVQoby0+c3dfYXJnKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK1Rhc2tTZW5kTWV0aFdyYXBwZXJfZ2V0X19fc2VsZl9fKFRhc2tTZW5kTWV0aFdyYXBwZXIgKm8pCit7CisgICAgaWYgKG8tPnN3X3Rhc2spIHsKKyAgICAgICAgUHlfSU5DUkVGKG8tPnN3X3Rhc2spOworICAgICAgICByZXR1cm4gKFB5T2JqZWN0KilvLT5zd190YXNrOworICAgIH0KKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5R2V0U2V0RGVmIFRhc2tTZW5kTWV0aFdyYXBwZXJfZ2V0c2V0bGlzdFtdID0geworICAgIHsiX19zZWxmX18iLCAoZ2V0dGVyKVRhc2tTZW5kTWV0aFdyYXBwZXJfZ2V0X19fc2VsZl9fLCBOVUxMLCBOVUxMfSwKKyAgICB7TlVMTH0gLyogU2VudGluZWwgKi8KK307CisKK1B5VHlwZU9iamVjdCBUYXNrU2VuZE1ldGhXcmFwcGVyX1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgIlRhc2tTZW5kTWV0aFdyYXBwZXIiLAorICAgIC50cF9iYXNpY3NpemUgPSBzaXplb2YoVGFza1NlbmRNZXRoV3JhcHBlciksCisgICAgLnRwX2l0ZW1zaXplID0gMCwKKyAgICAudHBfZ2V0c2V0ID0gVGFza1NlbmRNZXRoV3JhcHBlcl9nZXRzZXRsaXN0LAorICAgIC50cF9kZWFsbG9jID0gKGRlc3RydWN0b3IpVGFza1NlbmRNZXRoV3JhcHBlcl9kZWFsbG9jLAorICAgIC50cF9jYWxsID0gKHRlcm5hcnlmdW5jKVRhc2tTZW5kTWV0aFdyYXBwZXJfY2FsbCwKKyAgICAudHBfZ2V0YXR0cm8gPSBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwKKyAgICAudHBfZmxhZ3MgPSBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MsCisgICAgLnRwX3RyYXZlcnNlID0gKHRyYXZlcnNlcHJvYylUYXNrU2VuZE1ldGhXcmFwcGVyX3RyYXZlcnNlLAorICAgIC50cF9jbGVhciA9IChpbnF1aXJ5KVRhc2tTZW5kTWV0aFdyYXBwZXJfY2xlYXIsCit9OworCitzdGF0aWMgUHlPYmplY3QgKgorVGFza1NlbmRNZXRoV3JhcHBlcl9uZXcoVGFza09iaiAqdGFzaywgUHlPYmplY3QgKmFyZykKK3sKKyAgICBUYXNrU2VuZE1ldGhXcmFwcGVyICpvOworICAgIG8gPSBQeU9iamVjdF9HQ19OZXcoVGFza1NlbmRNZXRoV3JhcHBlciwgJlRhc2tTZW5kTWV0aFdyYXBwZXJfVHlwZSk7CisgICAgaWYgKG8gPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeV9JTkNSRUYodGFzayk7CisgICAgby0+c3dfdGFzayA9IHRhc2s7CisKKyAgICBQeV9YSU5DUkVGKGFyZyk7CisgICAgby0+c3dfYXJnID0gYXJnOworCisgICAgUHlPYmplY3RfR0NfVHJhY2sobyk7CisgICAgcmV0dXJuIChQeU9iamVjdCopIG87Cit9CisKKy8qIC0tLS0tIFRhc2suX3dha2V1cCB3cmFwcGVyICovCisKK3N0YXRpYyBQeU9iamVjdCAqCitUYXNrV2FrZXVwTWV0aFdyYXBwZXJfY2FsbChUYXNrV2FrZXVwTWV0aFdyYXBwZXIgKm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgUHlPYmplY3QgKmZ1dDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3wiLCAmZnV0KSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gdGFza19jYWxsX3dha2V1cChvLT53d190YXNrLCBmdXQpOworfQorCitzdGF0aWMgaW50CitUYXNrV2FrZXVwTWV0aFdyYXBwZXJfY2xlYXIoVGFza1dha2V1cE1ldGhXcmFwcGVyICpvKQoreworICAgIFB5X0NMRUFSKG8tPnd3X3Rhc2spOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitUYXNrV2FrZXVwTWV0aFdyYXBwZXJfdHJhdmVyc2UoVGFza1dha2V1cE1ldGhXcmFwcGVyICpvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQoreworICAgIFB5X1ZJU0lUKG8tPnd3X3Rhc2spOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAorVGFza1dha2V1cE1ldGhXcmFwcGVyX2RlYWxsb2MoVGFza1dha2V1cE1ldGhXcmFwcGVyICpvKQoreworICAgIFB5T2JqZWN0X0dDX1VuVHJhY2sobyk7CisgICAgKHZvaWQpVGFza1dha2V1cE1ldGhXcmFwcGVyX2NsZWFyKG8pOworICAgIFB5X1RZUEUobyktPnRwX2ZyZWUobyk7Cit9CisKK1B5VHlwZU9iamVjdCBUYXNrV2FrZXVwTWV0aFdyYXBwZXJfVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICAiVGFza1dha2V1cE1ldGhXcmFwcGVyIiwKKyAgICAudHBfYmFzaWNzaXplID0gc2l6ZW9mKFRhc2tXYWtldXBNZXRoV3JhcHBlciksCisgICAgLnRwX2l0ZW1zaXplID0gMCwKKyAgICAudHBfZGVhbGxvYyA9IChkZXN0cnVjdG9yKVRhc2tXYWtldXBNZXRoV3JhcHBlcl9kZWFsbG9jLAorICAgIC50cF9jYWxsID0gKHRlcm5hcnlmdW5jKVRhc2tXYWtldXBNZXRoV3JhcHBlcl9jYWxsLAorICAgIC50cF9nZXRhdHRybyA9IFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLAorICAgIC50cF9mbGFncyA9IFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQywKKyAgICAudHBfdHJhdmVyc2UgPSAodHJhdmVyc2Vwcm9jKVRhc2tXYWtldXBNZXRoV3JhcHBlcl90cmF2ZXJzZSwKKyAgICAudHBfY2xlYXIgPSAoaW5xdWlyeSlUYXNrV2FrZXVwTWV0aFdyYXBwZXJfY2xlYXIsCit9OworCitzdGF0aWMgUHlPYmplY3QgKgorVGFza1dha2V1cE1ldGhXcmFwcGVyX25ldyhUYXNrT2JqICp0YXNrKQoreworICAgIFRhc2tXYWtldXBNZXRoV3JhcHBlciAqbzsKKyAgICBvID0gUHlPYmplY3RfR0NfTmV3KFRhc2tXYWtldXBNZXRoV3JhcHBlciwgJlRhc2tXYWtldXBNZXRoV3JhcHBlcl9UeXBlKTsKKyAgICBpZiAobyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5X0lOQ1JFRih0YXNrKTsKKyAgICBvLT53d190YXNrID0gdGFzazsKKworICAgIFB5T2JqZWN0X0dDX1RyYWNrKG8pOworICAgIHJldHVybiAoUHlPYmplY3QqKSBvOworfQorCisvKiAtLS0tLSBUYXNrICovCisKKy8qW2NsaW5pYyBpbnB1dF0KK19hc3luY2lvLlRhc2suX19pbml0X18KKworICAgIGNvcm86ICdPJworICAgICoKKyAgICBsb29wOiAnTycgPSBOVUxMCisKK0EgY29yb3V0aW5lIHdyYXBwZWQgaW4gYSBGdXR1cmUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBpbnQKK19hc3luY2lvX1Rhc2tfX19pbml0X19faW1wbChUYXNrT2JqICpzZWxmLCBQeU9iamVjdCAqY29ybywgUHlPYmplY3QgKmxvb3ApCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OWYyNDc3NGMyMjg3ZmMyZiBpbnB1dD03MWQ4ZDI4YzIwMWExOGNkXSovCit7CisgICAgUHlPYmplY3QgKnJlczsKKyAgICBfUHlfSURFTlRJRklFUihhZGQpOworCisgICAgaWYgKGZ1dHVyZV9pbml0KChGdXR1cmVPYmoqKXNlbGYsIGxvb3ApKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBzZWxmLT50YXNrX2Z1dF93YWl0ZXIgPSBOVUxMOworICAgIHNlbGYtPnRhc2tfbXVzdF9jYW5jZWwgPSAwOworICAgIHNlbGYtPnRhc2tfbG9nX2Rlc3Ryb3lfcGVuZGluZyA9IDE7CisKKyAgICBQeV9JTkNSRUYoY29ybyk7CisgICAgc2VsZi0+dGFza19jb3JvID0gY29ybzsKKworICAgIGlmICh0YXNrX2NhbGxfc3RlcF9zb29uKHNlbGYsIE5VTEwpKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkT2JqQXJncyhhbGxfdGFza3MsICZQeUlkX2FkZCwgc2VsZiwgTlVMTCk7CisgICAgaWYgKHJlcyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgUHlfREVDUkVGKHJlcyk7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorVGFza09ial9jbGVhcihUYXNrT2JqICp0YXNrKQoreworICAgICh2b2lkKUZ1dHVyZU9ial9jbGVhcigoRnV0dXJlT2JqKikgdGFzayk7CisgICAgUHlfQ0xFQVIodGFzay0+dGFza19jb3JvKTsKKyAgICBQeV9DTEVBUih0YXNrLT50YXNrX2Z1dF93YWl0ZXIpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitUYXNrT2JqX3RyYXZlcnNlKFRhc2tPYmogKnRhc2ssIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQoreworICAgIFB5X1ZJU0lUKHRhc2stPnRhc2tfY29ybyk7CisgICAgUHlfVklTSVQodGFzay0+dGFza19mdXRfd2FpdGVyKTsKKyAgICAodm9pZClGdXR1cmVPYmpfdHJhdmVyc2UoKEZ1dHVyZU9iaiopIHRhc2ssIHZpc2l0LCBhcmcpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorVGFza09ial9nZXRfbG9nX2Rlc3Ryb3lfcGVuZGluZyhUYXNrT2JqICp0YXNrKQoreworICAgIGlmICh0YXNrLT50YXNrX2xvZ19kZXN0cm95X3BlbmRpbmcpIHsKKyAgICAgICAgUHlfUkVUVVJOX1RSVUU7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CisgICAgfQorfQorCitzdGF0aWMgaW50CitUYXNrT2JqX3NldF9sb2dfZGVzdHJveV9wZW5kaW5nKFRhc2tPYmogKnRhc2ssIFB5T2JqZWN0ICp2YWwpCit7CisgICAgaW50IGlzX3RydWUgPSBQeU9iamVjdF9Jc1RydWUodmFsKTsKKyAgICBpZiAoaXNfdHJ1ZSA8IDApIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICB0YXNrLT50YXNrX2xvZ19kZXN0cm95X3BlbmRpbmcgPSBpc190cnVlOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorVGFza09ial9nZXRfbXVzdF9jYW5jZWwoVGFza09iaiAqdGFzaykKK3sKKyAgICBpZiAodGFzay0+dGFza19tdXN0X2NhbmNlbCkgeworICAgICAgICBQeV9SRVRVUk5fVFJVRTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKKyAgICB9Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitUYXNrT2JqX2dldF9jb3JvKFRhc2tPYmogKnRhc2spCit7CisgICAgaWYgKHRhc2stPnRhc2tfY29ybykgeworICAgICAgICBQeV9JTkNSRUYodGFzay0+dGFza19jb3JvKTsKKyAgICAgICAgcmV0dXJuIHRhc2stPnRhc2tfY29ybzsKKyAgICB9CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK1Rhc2tPYmpfZ2V0X2Z1dF93YWl0ZXIoVGFza09iaiAqdGFzaykKK3sKKyAgICBpZiAodGFzay0+dGFza19mdXRfd2FpdGVyKSB7CisgICAgICAgIFB5X0lOQ1JFRih0YXNrLT50YXNrX2Z1dF93YWl0ZXIpOworICAgICAgICByZXR1cm4gdGFzay0+dGFza19mdXRfd2FpdGVyOworICAgIH0KKworICAgIFB5X1JFVFVSTl9OT05FOworfQorCisvKltjbGluaWMgaW5wdXRdCitAY2xhc3NtZXRob2QKK19hc3luY2lvLlRhc2suY3VycmVudF90YXNrCisKKyAgICBsb29wOiAnTycgPSBOVUxMCisKK1JldHVybiB0aGUgY3VycmVudGx5IHJ1bm5pbmcgdGFzayBpbiBhbiBldmVudCBsb29wIG9yIE5vbmUuCisKK0J5IGRlZmF1bHQgdGhlIGN1cnJlbnQgdGFzayBmb3IgdGhlIGN1cnJlbnQgZXZlbnQgbG9vcCBpcyByZXR1cm5lZC4KKworTm9uZSBpcyByZXR1cm5lZCB3aGVuIGNhbGxlZCBub3QgaW4gdGhlIGNvbnRleHQgb2YgYSBUYXNrLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fVGFza19jdXJyZW50X3Rhc2tfaW1wbChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICpsb29wKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk5ZmJlNzMzMmM1MTZlMDMgaW5wdXQ9Y2Q3ODQ1MzdmMDJjZjgzM10qLworeworICAgIFB5T2JqZWN0ICpyZXM7CisKKyAgICBpZiAobG9vcCA9PSBOVUxMKSB7CisgICAgICAgIGxvb3AgPSBQeU9iamVjdF9DYWxsT2JqZWN0KGFzeW5jaW9fZ2V0X2V2ZW50X2xvb3AsIE5VTEwpOworICAgICAgICBpZiAobG9vcCA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIHJlcyA9IFB5RGljdF9HZXRJdGVtKGN1cnJlbnRfdGFza3MsIGxvb3ApOworICAgICAgICBQeV9ERUNSRUYobG9vcCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXMgPSBQeURpY3RfR2V0SXRlbShjdXJyZW50X3Rhc2tzLCBsb29wKTsKKyAgICB9CisKKyAgICBpZiAocmVzID09IE5VTEwpIHsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeV9JTkNSRUYocmVzKTsKKyAgICAgICAgcmV0dXJuIHJlczsKKyAgICB9Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit0YXNrX2FsbF90YXNrcyhQeU9iamVjdCAqbG9vcCkKK3sKKyAgICBQeU9iamVjdCAqdGFzazsKKyAgICBQeU9iamVjdCAqdGFza19sb29wOworICAgIFB5T2JqZWN0ICpzZXQ7CisgICAgUHlPYmplY3QgKml0ZXI7CisKKyAgICBhc3NlcnQobG9vcCAhPSBOVUxMKTsKKworICAgIHNldCA9IFB5U2V0X05ldyhOVUxMKTsKKyAgICBpZiAoc2V0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaXRlciA9IFB5T2JqZWN0X0dldEl0ZXIoYWxsX3Rhc2tzKTsKKyAgICBpZiAoaXRlciA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZmFpbDsKKyAgICB9CisKKyAgICB3aGlsZSAoKHRhc2sgPSBQeUl0ZXJfTmV4dChpdGVyKSkpIHsKKyAgICAgICAgdGFza19sb29wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0YXNrLCAiX2xvb3AiKTsKKyAgICAgICAgaWYgKHRhc2tfbG9vcCA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYodGFzayk7CisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRhc2tfbG9vcCA9PSBsb29wKSB7CisgICAgICAgICAgICBpZiAoUHlTZXRfQWRkKHNldCwgdGFzaykgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYodGFza19sb29wKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYodGFzayk7CisgICAgICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRih0YXNrX2xvb3ApOworICAgICAgICBQeV9ERUNSRUYodGFzayk7CisgICAgfQorCisgICAgUHlfREVDUkVGKGl0ZXIpOworICAgIHJldHVybiBzZXQ7CisKK2ZhaWw6CisgICAgUHlfWERFQ1JFRihzZXQpOworICAgIFB5X1hERUNSRUYoaXRlcik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK0BjbGFzc21ldGhvZAorX2FzeW5jaW8uVGFzay5hbGxfdGFza3MKKworICAgIGxvb3A6ICdPJyA9IE5VTEwKKworUmV0dXJuIGEgc2V0IG9mIGFsbCB0YXNrcyBmb3IgYW4gZXZlbnQgbG9vcC4KKworQnkgZGVmYXVsdCBhbGwgdGFza3MgZm9yIHRoZSBjdXJyZW50IGV2ZW50IGxvb3AgYXJlIHJldHVybmVkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fVGFza19hbGxfdGFza3NfaW1wbChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICpsb29wKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTExZjliMjA3NDljY2NhNWQgaW5wdXQ9Y2Q2NGFhNWY4OGJkNWM0OV0qLworeworICAgIFB5T2JqZWN0ICpyZXM7CisKKyAgICBpZiAobG9vcCA9PSBOVUxMKSB7CisgICAgICAgIGxvb3AgPSBQeU9iamVjdF9DYWxsT2JqZWN0KGFzeW5jaW9fZ2V0X2V2ZW50X2xvb3AsIE5VTEwpOworICAgICAgICBpZiAobG9vcCA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIHJlcyA9IHRhc2tfYWxsX3Rhc2tzKGxvb3ApOworICAgICAgICBQeV9ERUNSRUYobG9vcCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXMgPSB0YXNrX2FsbF90YXNrcyhsb29wKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzOworfQorCisvKltjbGluaWMgaW5wdXRdCitfYXN5bmNpby5UYXNrLl9yZXByX2luZm8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19hc3luY2lvX1Rhc2tfX3JlcHJfaW5mb19pbXBsKFRhc2tPYmogKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NmE0OTBlYjY2ZDViYTM0YiBpbnB1dD0zYzZkMDUxZWQzZGRlYzhiXSovCit7CisgICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoCisgICAgICAgIGFzeW5jaW9fdGFza19yZXByX2luZm9fZnVuYywgc2VsZiwgTlVMTCk7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19hc3luY2lvLlRhc2suY2FuY2VsCisKK1JlcXVlc3QgdGhhdCB0aGlzIHRhc2sgY2FuY2VsIGl0c2VsZi4KKworVGhpcyBhcnJhbmdlcyBmb3IgYSBDYW5jZWxsZWRFcnJvciB0byBiZSB0aHJvd24gaW50byB0aGUKK3dyYXBwZWQgY29yb3V0aW5lIG9uIHRoZSBuZXh0IGN5Y2xlIHRocm91Z2ggdGhlIGV2ZW50IGxvb3AuCitUaGUgY29yb3V0aW5lIHRoZW4gaGFzIGEgY2hhbmNlIHRvIGNsZWFuIHVwIG9yIGV2ZW4gZGVueQordGhlIHJlcXVlc3QgdXNpbmcgdHJ5L2V4Y2VwdC9maW5hbGx5LgorCitVbmxpa2UgRnV0dXJlLmNhbmNlbCwgdGhpcyBkb2VzIG5vdCBndWFyYW50ZWUgdGhhdCB0aGUKK3Rhc2sgd2lsbCBiZSBjYW5jZWxsZWQ6IHRoZSBleGNlcHRpb24gbWlnaHQgYmUgY2F1Z2h0IGFuZAorYWN0ZWQgdXBvbiwgZGVsYXlpbmcgY2FuY2VsbGF0aW9uIG9mIHRoZSB0YXNrIG9yIHByZXZlbnRpbmcKK2NhbmNlbGxhdGlvbiBjb21wbGV0ZWx5LiAgVGhlIHRhc2sgbWF5IGFsc28gcmV0dXJuIGEgdmFsdWUgb3IKK3JhaXNlIGEgZGlmZmVyZW50IGV4Y2VwdGlvbi4KKworSW1tZWRpYXRlbHkgYWZ0ZXIgdGhpcyBtZXRob2QgaXMgY2FsbGVkLCBUYXNrLmNhbmNlbGxlZCgpIHdpbGwKK25vdCByZXR1cm4gVHJ1ZSAodW5sZXNzIHRoZSB0YXNrIHdhcyBhbHJlYWR5IGNhbmNlbGxlZCkuICBBCit0YXNrIHdpbGwgYmUgbWFya2VkIGFzIGNhbmNlbGxlZCB3aGVuIHRoZSB3cmFwcGVkIGNvcm91dGluZQordGVybWluYXRlcyB3aXRoIGEgQ2FuY2VsbGVkRXJyb3IgZXhjZXB0aW9uIChldmVuIGlmIGNhbmNlbCgpCit3YXMgbm90IGNhbGxlZCkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYXN5bmNpb19UYXNrX2NhbmNlbF9pbXBsKFRhc2tPYmogKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NmJmYzA0NzlkYTlkNTc1NyBpbnB1dD0xM2Y5YmY0OTY2OTVjYjUyXSovCit7CisgICAgaWYgKHNlbGYtPnRhc2tfc3RhdGUgIT0gU1RBVEVfUEVORElORykgeworICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CisgICAgfQorCisgICAgaWYgKHNlbGYtPnRhc2tfZnV0X3dhaXRlcikgeworICAgICAgICBQeU9iamVjdCAqcmVzOworICAgICAgICBpbnQgaXNfdHJ1ZTsKKworICAgICAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKAorICAgICAgICAgICAgc2VsZi0+dGFza19mdXRfd2FpdGVyLCAmUHlJZF9jYW5jZWwsIE5VTEwpOworICAgICAgICBpZiAocmVzID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgaXNfdHJ1ZSA9IFB5T2JqZWN0X0lzVHJ1ZShyZXMpOworICAgICAgICBQeV9ERUNSRUYocmVzKTsKKyAgICAgICAgaWYgKGlzX3RydWUgPCAwKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChpc190cnVlKSB7CisgICAgICAgICAgICBQeV9SRVRVUk5fVFJVRTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHNlbGYtPnRhc2tfbXVzdF9jYW5jZWwgPSAxOworICAgIFB5X1JFVFVSTl9UUlVFOworfQorCisvKltjbGluaWMgaW5wdXRdCitfYXN5bmNpby5UYXNrLmdldF9zdGFjaworCisgICAgKgorICAgIGxpbWl0OiAnTycgPSBOb25lCisKK1JldHVybiB0aGUgbGlzdCBvZiBzdGFjayBmcmFtZXMgZm9yIHRoaXMgdGFzaydzIGNvcm91dGluZS4KKworSWYgdGhlIGNvcm91dGluZSBpcyBub3QgZG9uZSwgdGhpcyByZXR1cm5zIHRoZSBzdGFjayB3aGVyZSBpdCBpcworc3VzcGVuZGVkLiAgSWYgdGhlIGNvcm91dGluZSBoYXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSBvciB3YXMKK2NhbmNlbGxlZCwgdGhpcyByZXR1cm5zIGFuIGVtcHR5IGxpc3QuICBJZiB0aGUgY29yb3V0aW5lIHdhcwordGVybWluYXRlZCBieSBhbiBleGNlcHRpb24sIHRoaXMgcmV0dXJucyB0aGUgbGlzdCBvZiB0cmFjZWJhY2sKK2ZyYW1lcy4KKworVGhlIGZyYW1lcyBhcmUgYWx3YXlzIG9yZGVyZWQgZnJvbSBvbGRlc3QgdG8gbmV3ZXN0LgorCitUaGUgb3B0aW9uYWwgbGltaXQgZ2l2ZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGZyYW1lcyB0bworcmV0dXJuOyBieSBkZWZhdWx0IGFsbCBhdmFpbGFibGUgZnJhbWVzIGFyZSByZXR1cm5lZC4gIEl0cworbWVhbmluZyBkaWZmZXJzIGRlcGVuZGluZyBvbiB3aGV0aGVyIGEgc3RhY2sgb3IgYSB0cmFjZWJhY2sgaXMKK3JldHVybmVkOiB0aGUgbmV3ZXN0IGZyYW1lcyBvZiBhIHN0YWNrIGFyZSByZXR1cm5lZCwgYnV0IHRoZQorb2xkZXN0IGZyYW1lcyBvZiBhIHRyYWNlYmFjayBhcmUgcmV0dXJuZWQuICAoVGhpcyBtYXRjaGVzIHRoZQorYmVoYXZpb3Igb2YgdGhlIHRyYWNlYmFjayBtb2R1bGUuKQorCitGb3IgcmVhc29ucyBiZXlvbmQgb3VyIGNvbnRyb2wsIG9ubHkgb25lIHN0YWNrIGZyYW1lIGlzCityZXR1cm5lZCBmb3IgYSBzdXNwZW5kZWQgY29yb3V0aW5lLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fVGFza19nZXRfc3RhY2tfaW1wbChUYXNrT2JqICpzZWxmLCBQeU9iamVjdCAqbGltaXQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YzlhZWVlZWJkMWUxODExOCBpbnB1dD1iMTkyMDIzMGE3NjZkMTdhXSovCit7CisgICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoCisgICAgICAgIGFzeW5jaW9fdGFza19nZXRfc3RhY2tfZnVuYywgc2VsZiwgbGltaXQsIE5VTEwpOworfQorCisvKltjbGluaWMgaW5wdXRdCitfYXN5bmNpby5UYXNrLnByaW50X3N0YWNrCisKKyAgICAqCisgICAgbGltaXQ6ICdPJyA9IE5vbmUKKyAgICBmaWxlOiAnTycgPSBOb25lCisKK1ByaW50IHRoZSBzdGFjayBvciB0cmFjZWJhY2sgZm9yIHRoaXMgdGFzaydzIGNvcm91dGluZS4KKworVGhpcyBwcm9kdWNlcyBvdXRwdXQgc2ltaWxhciB0byB0aGF0IG9mIHRoZSB0cmFjZWJhY2sgbW9kdWxlLAorZm9yIHRoZSBmcmFtZXMgcmV0cmlldmVkIGJ5IGdldF9zdGFjaygpLiAgVGhlIGxpbWl0IGFyZ3VtZW50CitpcyBwYXNzZWQgdG8gZ2V0X3N0YWNrKCkuICBUaGUgZmlsZSBhcmd1bWVudCBpcyBhbiBJL08gc3RyZWFtCit0byB3aGljaCB0aGUgb3V0cHV0IGlzIHdyaXR0ZW47IGJ5IGRlZmF1bHQgb3V0cHV0IGlzIHdyaXR0ZW4KK3RvIHN5cy5zdGRlcnIuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYXN5bmNpb19UYXNrX3ByaW50X3N0YWNrX2ltcGwoVGFza09iaiAqc2VsZiwgUHlPYmplY3QgKmxpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmaWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTczMzllMTAzMTRjZDNmNGQgaW5wdXQ9MTlmMWU5OWFiNTQwMGJjM10qLworeworICAgIHJldHVybiBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKAorICAgICAgICBhc3luY2lvX3Rhc2tfcHJpbnRfc3RhY2tfZnVuYywgc2VsZiwgbGltaXQsIGZpbGUsIE5VTEwpOworfQorCisvKltjbGluaWMgaW5wdXRdCitfYXN5bmNpby5UYXNrLl9zdGVwCisKKyAgICBleGM6ICdPJyA9IE5VTEwKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19hc3luY2lvX1Rhc2tfX3N0ZXBfaW1wbChUYXNrT2JqICpzZWxmLCBQeU9iamVjdCAqZXhjKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTdlZDIzZjBjZWZkNWFlNDIgaW5wdXQ9YWRhNGIyMzI0ZTUzNzBhZl0qLworeworICAgIHJldHVybiB0YXNrX3N0ZXAoc2VsZiwgZXhjID09IFB5X05vbmUgPyBOVUxMIDogZXhjKTsKK30KKworLypbY2xpbmljIGlucHV0XQorX2FzeW5jaW8uVGFzay5fd2FrZXVwCisKKyAgICBmdXQ6ICdPJworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fVGFza19fd2FrZXVwX2ltcGwoVGFza09iaiAqc2VsZiwgUHlPYmplY3QgKmZ1dCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03NWNiMzQxYzc2MGZkMDcxIGlucHV0PTExZWU0OTE4YTViZGJmMjFdKi8KK3sKKyAgICByZXR1cm4gdGFza193YWtldXAoc2VsZiwgZnV0KTsKK30KKworc3RhdGljIHZvaWQKK1Rhc2tPYmpfZmluYWxpemUoVGFza09iaiAqdGFzaykKK3sKKyAgICBfUHlfSURFTlRJRklFUihjYWxsX2V4Y2VwdGlvbl9oYW5kbGVyKTsKKyAgICBfUHlfSURFTlRJRklFUih0YXNrKTsKKyAgICBfUHlfSURFTlRJRklFUihtZXNzYWdlKTsKKyAgICBfUHlfSURFTlRJRklFUihzb3VyY2VfdHJhY2ViYWNrKTsKKworICAgIFB5T2JqZWN0ICptZXNzYWdlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqY29udGV4dCA9IE5VTEw7CisgICAgUHlPYmplY3QgKmZ1bmMgPSBOVUxMOworICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOworCisgICAgUHlPYmplY3QgKmVycm9yX3R5cGUsICplcnJvcl92YWx1ZSwgKmVycm9yX3RyYWNlYmFjazsKKworICAgIGlmICh0YXNrLT50YXNrX3N0YXRlICE9IFNUQVRFX1BFTkRJTkcgfHwgIXRhc2stPnRhc2tfbG9nX2Rlc3Ryb3lfcGVuZGluZykgeworICAgICAgICBnb3RvIGRvbmU7CisgICAgfQorCisgICAgLyogU2F2ZSB0aGUgY3VycmVudCBleGNlcHRpb24sIGlmIGFueS4gKi8KKyAgICBQeUVycl9GZXRjaCgmZXJyb3JfdHlwZSwgJmVycm9yX3ZhbHVlLCAmZXJyb3JfdHJhY2ViYWNrKTsKKworICAgIGNvbnRleHQgPSBQeURpY3RfTmV3KCk7CisgICAgaWYgKGNvbnRleHQgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorCisgICAgbWVzc2FnZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJUYXNrIHdhcyBkZXN0cm95ZWQgYnV0IGl0IGlzIHBlbmRpbmchIik7CisgICAgaWYgKG1lc3NhZ2UgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorCisgICAgaWYgKF9QeURpY3RfU2V0SXRlbUlkKGNvbnRleHQsICZQeUlkX21lc3NhZ2UsIG1lc3NhZ2UpIDwgMCB8fAorICAgICAgICBfUHlEaWN0X1NldEl0ZW1JZChjb250ZXh0LCAmUHlJZF90YXNrLCAoUHlPYmplY3QqKXRhc2spIDwgMCkKKyAgICB7CisgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICB9CisKKyAgICBpZiAodGFzay0+dGFza19zb3VyY2VfdGIgIT0gTlVMTCkgeworICAgICAgICBpZiAoX1B5RGljdF9TZXRJdGVtSWQoY29udGV4dCwgJlB5SWRfc291cmNlX3RyYWNlYmFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2stPnRhc2tfc291cmNlX3RiKSA8IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZ1bmMgPSBfUHlPYmplY3RfR2V0QXR0cklkKHRhc2stPnRhc2tfbG9vcCwgJlB5SWRfY2FsbF9leGNlcHRpb25faGFuZGxlcik7CisgICAgaWYgKGZ1bmMgIT0gTlVMTCkgeworICAgICAgICByZXMgPSBfUHlPYmplY3RfQ2FsbEFyZzEoZnVuYywgY29udGV4dCk7CisgICAgICAgIGlmIChyZXMgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlKGZ1bmMpOworICAgICAgICB9CisgICAgfQorCitmaW5hbGx5OgorICAgIFB5X0NMRUFSKGNvbnRleHQpOworICAgIFB5X0NMRUFSKG1lc3NhZ2UpOworICAgIFB5X0NMRUFSKGZ1bmMpOworICAgIFB5X0NMRUFSKHJlcyk7CisKKyAgICAvKiBSZXN0b3JlIHRoZSBzYXZlZCBleGNlcHRpb24uICovCisgICAgUHlFcnJfUmVzdG9yZShlcnJvcl90eXBlLCBlcnJvcl92YWx1ZSwgZXJyb3JfdHJhY2ViYWNrKTsKKworZG9uZToKKyAgICBGdXR1cmVPYmpfZmluYWxpemUoKEZ1dHVyZU9iaiopdGFzayk7Cit9CisKK3N0YXRpYyB2b2lkIFRhc2tPYmpfZGVhbGxvYyhQeU9iamVjdCAqKTsgIC8qIE5lZWRzIFRhc2tfQ2hlY2tFeGFjdCAqLworCitzdGF0aWMgUHlNZXRob2REZWYgVGFza1R5cGVfbWV0aG9kc1tdID0geworICAgIF9BU1lOQ0lPX0ZVVFVSRV9SRVNVTFRfTUVUSE9EREVGCisgICAgX0FTWU5DSU9fRlVUVVJFX0VYQ0VQVElPTl9NRVRIT0RERUYKKyAgICBfQVNZTkNJT19GVVRVUkVfU0VUX1JFU1VMVF9NRVRIT0RERUYKKyAgICBfQVNZTkNJT19GVVRVUkVfU0VUX0VYQ0VQVElPTl9NRVRIT0RERUYKKyAgICBfQVNZTkNJT19GVVRVUkVfQUREX0RPTkVfQ0FMTEJBQ0tfTUVUSE9EREVGCisgICAgX0FTWU5DSU9fRlVUVVJFX1JFTU9WRV9ET05FX0NBTExCQUNLX01FVEhPRERFRgorICAgIF9BU1lOQ0lPX0ZVVFVSRV9DQU5DRUxMRURfTUVUSE9EREVGCisgICAgX0FTWU5DSU9fRlVUVVJFX0RPTkVfTUVUSE9EREVGCisgICAgX0FTWU5DSU9fVEFTS19DVVJSRU5UX1RBU0tfTUVUSE9EREVGCisgICAgX0FTWU5DSU9fVEFTS19BTExfVEFTS1NfTUVUSE9EREVGCisgICAgX0FTWU5DSU9fVEFTS19DQU5DRUxfTUVUSE9EREVGCisgICAgX0FTWU5DSU9fVEFTS19HRVRfU1RBQ0tfTUVUSE9EREVGCisgICAgX0FTWU5DSU9fVEFTS19QUklOVF9TVEFDS19NRVRIT0RERUYKKyAgICBfQVNZTkNJT19UQVNLX19XQUtFVVBfTUVUSE9EREVGCisgICAgX0FTWU5DSU9fVEFTS19fU1RFUF9NRVRIT0RERUYKKyAgICBfQVNZTkNJT19UQVNLX19SRVBSX0lORk9fTUVUSE9EREVGCisgICAge05VTEwsIE5VTEx9ICAgICAgICAvKiBTZW50aW5lbCAqLworfTsKKworc3RhdGljIFB5R2V0U2V0RGVmIFRhc2tUeXBlX2dldHNldGxpc3RbXSA9IHsKKyAgICBGVVRVUkVfQ09NTU9OX0dFVFNFVExJU1QKKyAgICB7Il9sb2dfZGVzdHJveV9wZW5kaW5nIiwgKGdldHRlcilUYXNrT2JqX2dldF9sb2dfZGVzdHJveV9wZW5kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0dGVyKVRhc2tPYmpfc2V0X2xvZ19kZXN0cm95X3BlbmRpbmcsIE5VTEx9LAorICAgIHsiX211c3RfY2FuY2VsIiwgKGdldHRlcilUYXNrT2JqX2dldF9tdXN0X2NhbmNlbCwgTlVMTCwgTlVMTH0sCisgICAgeyJfY29ybyIsIChnZXR0ZXIpVGFza09ial9nZXRfY29ybywgTlVMTCwgTlVMTH0sCisgICAgeyJfZnV0X3dhaXRlciIsIChnZXR0ZXIpVGFza09ial9nZXRfZnV0X3dhaXRlciwgTlVMTCwgTlVMTH0sCisgICAge05VTEx9IC8qIFNlbnRpbmVsICovCit9OworCitzdGF0aWMgUHlUeXBlT2JqZWN0IFRhc2tUeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgICJfYXN5bmNpby5UYXNrIiwKKyAgICBzaXplb2YoVGFza09iaiksICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAudHBfYmFzZSA9ICZGdXR1cmVUeXBlLAorICAgIC50cF9kZWFsbG9jID0gVGFza09ial9kZWFsbG9jLAorICAgIC50cF9hc19hc3luYyA9ICZGdXR1cmVUeXBlX2FzX2FzeW5jLAorICAgIC50cF9yZXByID0gKHJlcHJmdW5jKUZ1dHVyZU9ial9yZXByLAorICAgIC50cF9mbGFncyA9IFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQyB8IFB5X1RQRkxBR1NfQkFTRVRZUEUKKyAgICAgICAgfCBQeV9UUEZMQUdTX0hBVkVfRklOQUxJWkUsCisgICAgLnRwX2RvYyA9IF9hc3luY2lvX1Rhc2tfX19pbml0X19fX2RvY19fLAorICAgIC50cF90cmF2ZXJzZSA9ICh0cmF2ZXJzZXByb2MpVGFza09ial90cmF2ZXJzZSwKKyAgICAudHBfY2xlYXIgPSAoaW5xdWlyeSlUYXNrT2JqX2NsZWFyLAorICAgIC50cF93ZWFrbGlzdG9mZnNldCA9IG9mZnNldG9mKFRhc2tPYmosIHRhc2tfd2Vha3JlZmxpc3QpLAorICAgIC50cF9pdGVyID0gKGdldGl0ZXJmdW5jKWZ1dHVyZV9uZXdfaXRlciwKKyAgICAudHBfbWV0aG9kcyA9IFRhc2tUeXBlX21ldGhvZHMsCisgICAgLnRwX2dldHNldCA9IFRhc2tUeXBlX2dldHNldGxpc3QsCisgICAgLnRwX2RpY3RvZmZzZXQgPSBvZmZzZXRvZihUYXNrT2JqLCBkaWN0KSwKKyAgICAudHBfaW5pdCA9IChpbml0cHJvYylfYXN5bmNpb19UYXNrX19faW5pdF9fLAorICAgIC50cF9uZXcgPSBQeVR5cGVfR2VuZXJpY05ldywKKyAgICAudHBfZmluYWxpemUgPSAoZGVzdHJ1Y3RvcilUYXNrT2JqX2ZpbmFsaXplLAorfTsKKworI2RlZmluZSBUYXNrX0NoZWNrRXhhY3Qob2JqKSAoUHlfVFlQRShvYmopID09ICZUYXNrVHlwZSkKKworc3RhdGljIHZvaWQKK1Rhc2tPYmpfZGVhbGxvYyhQeU9iamVjdCAqc2VsZikKK3sKKyAgICBUYXNrT2JqICp0YXNrID0gKFRhc2tPYmogKilzZWxmOworCisgICAgaWYgKFRhc2tfQ2hlY2tFeGFjdChzZWxmKSkgeworICAgICAgICAvKiBXaGVuIGZ1dCBpcyBzdWJjbGFzcyBvZiBUYXNrLCBmaW5hbGl6ZXIgaXMgY2FsbGVkIGZyb20KKyAgICAgICAgICogc3VidHlwZV9kZWFsbG9jLgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKFB5T2JqZWN0X0NhbGxGaW5hbGl6ZXJGcm9tRGVhbGxvYyhzZWxmKSA8IDApIHsKKyAgICAgICAgICAgIC8vIHJlc3VycmVjdGVkLgorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHRhc2stPnRhc2tfd2Vha3JlZmxpc3QgIT0gTlVMTCkgeworICAgICAgICBQeU9iamVjdF9DbGVhcldlYWtSZWZzKHNlbGYpOworICAgIH0KKworICAgICh2b2lkKVRhc2tPYmpfY2xlYXIodGFzayk7CisgICAgUHlfVFlQRSh0YXNrKS0+dHBfZnJlZSh0YXNrKTsKK30KKworc3RhdGljIGlubGluZSBQeU9iamVjdCAqCit0YXNrX2NhbGxfd2FrZXVwKFRhc2tPYmogKnRhc2ssIFB5T2JqZWN0ICpmdXQpCit7CisgICAgaWYgKFRhc2tfQ2hlY2tFeGFjdCh0YXNrKSkgeworICAgICAgICByZXR1cm4gdGFza193YWtldXAodGFzaywgZnV0KTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIGB0YXNrYCBpcyBhIHN1YmNsYXNzIG9mIFRhc2sgKi8KKyAgICAgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWRPYmpBcmdzKChQeU9iamVjdCopdGFzaywgJlB5SWRfX3dha2V1cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1dCwgTlVMTCk7CisgICAgfQorfQorCitzdGF0aWMgaW5saW5lIFB5T2JqZWN0ICoKK3Rhc2tfY2FsbF9zdGVwKFRhc2tPYmogKnRhc2ssIFB5T2JqZWN0ICphcmcpCit7CisgICAgaWYgKFRhc2tfQ2hlY2tFeGFjdCh0YXNrKSkgeworICAgICAgICByZXR1cm4gdGFza19zdGVwKHRhc2ssIGFyZyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBgdGFza2AgaXMgYSBzdWJjbGFzcyBvZiBUYXNrICovCisgICAgICAgIGlmIChhcmcgPT0gTlVMTCkgeworICAgICAgICAgICAgYXJnID0gUHlfTm9uZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZE9iakFyZ3MoKFB5T2JqZWN0Kil0YXNrLCAmUHlJZF9fc3RlcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywgTlVMTCk7CisgICAgfQorfQorCitzdGF0aWMgaW50Cit0YXNrX2NhbGxfc3RlcF9zb29uKFRhc2tPYmogKnRhc2ssIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKmhhbmRsZTsKKworICAgIFB5T2JqZWN0ICpjYiA9IFRhc2tTZW5kTWV0aFdyYXBwZXJfbmV3KHRhc2ssIGFyZyk7CisgICAgaWYgKGNiID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGhhbmRsZSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWRPYmpBcmdzKHRhc2stPnRhc2tfbG9vcCwgJlB5SWRfY2FsbF9zb29uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNiLCBOVUxMKTsKKyAgICBQeV9ERUNSRUYoY2IpOworICAgIGlmIChoYW5kbGUgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgUHlfREVDUkVGKGhhbmRsZSk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit0YXNrX3NldF9lcnJvcl9zb29uKFRhc2tPYmogKnRhc2ssIFB5T2JqZWN0ICpldCwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCit7CisgICAgUHlPYmplY3QqIG1zZzsKKworICAgIHZhX2xpc3QgdmFyZ3M7CisjaWZkZWYgSEFWRV9TVERBUkdfUFJPVE9UWVBFUworICAgIHZhX3N0YXJ0KHZhcmdzLCBmb3JtYXQpOworI2Vsc2UKKyAgICB2YV9zdGFydCh2YXJncyk7CisjZW5kaWYKKyAgICBtc2cgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdFYoZm9ybWF0LCB2YXJncyk7CisgICAgdmFfZW5kKHZhcmdzKTsKKworICAgIGlmIChtc2cgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeU9iamVjdCAqZSA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoZXQsIG1zZywgTlVMTCk7CisgICAgUHlfREVDUkVGKG1zZyk7CisgICAgaWYgKGUgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAodGFza19jYWxsX3N0ZXBfc29vbih0YXNrLCBlKSA9PSAtMSkgeworICAgICAgICBQeV9ERUNSRUYoZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5X0RFQ1JFRihlKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3Rhc2tfc3RlcF9pbXBsKFRhc2tPYmogKnRhc2ssIFB5T2JqZWN0ICpleGMpCit7CisgICAgaW50IHJlczsKKyAgICBpbnQgY2xlYXJfZXhjID0gMDsKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKKyAgICBQeU9iamVjdCAqY29ybyA9IHRhc2stPnRhc2tfY29ybzsKKyAgICBQeU9iamVjdCAqbzsKKworICAgIGlmICh0YXNrLT50YXNrX3N0YXRlICE9IFNUQVRFX1BFTkRJTkcpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0Fzc2VydGlvbkVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIl9zdGVwKCk6IGFscmVhZHkgZG9uZTogJVIgJVIiLAorICAgICAgICAgICAgICAgICAgICAgdGFzaywKKyAgICAgICAgICAgICAgICAgICAgIGV4YyA/IGV4YyA6IFB5X05vbmUpOworICAgICAgICBnb3RvIGZhaWw7CisgICAgfQorCisgICAgaWYgKHRhc2stPnRhc2tfbXVzdF9jYW5jZWwpIHsKKyAgICAgICAgYXNzZXJ0KGV4YyAhPSBQeV9Ob25lKTsKKworICAgICAgICBpZiAoZXhjKSB7CisgICAgICAgICAgICAvKiBDaGVjayBpZiBleGMgaXMgYSBDYW5jZWxsZWRFcnJvciAqLworICAgICAgICAgICAgcmVzID0gUHlPYmplY3RfSXNJbnN0YW5jZShleGMsIGFzeW5jaW9fQ2FuY2VsbGVkRXJyb3IpOworICAgICAgICAgICAgaWYgKHJlcyA9PSAtMSkgeworICAgICAgICAgICAgICAgIC8qIEFuIGVycm9yIG9jY3VycmVkLCBhYm9ydCAqLworICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChyZXMgPT0gMCkgeworICAgICAgICAgICAgICAgIC8qIGV4YyBpcyBub3QgQ2FuY2VsbGVkRXJyb3I7IHJlc2V0IGl0IHRvIE5VTEwgKi8KKyAgICAgICAgICAgICAgICBleGMgPSBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKCFleGMpIHsKKyAgICAgICAgICAgIC8qIGV4YyB3YXMgbm90IGEgQ2FuY2VsbGVkRXJyb3IgKi8KKyAgICAgICAgICAgIGV4YyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoYXN5bmNpb19DYW5jZWxsZWRFcnJvciwgTlVMTCk7CisgICAgICAgICAgICBpZiAoIWV4YykgeworICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNsZWFyX2V4YyA9IDE7CisgICAgICAgIH0KKworICAgICAgICB0YXNrLT50YXNrX211c3RfY2FuY2VsID0gMDsKKyAgICB9CisKKyAgICBQeV9DTEVBUih0YXNrLT50YXNrX2Z1dF93YWl0ZXIpOworCisgICAgaWYgKGV4YyA9PSBOVUxMKSB7CisgICAgICAgIGlmIChQeUdlbl9DaGVja0V4YWN0KGNvcm8pIHx8IFB5Q29yb19DaGVja0V4YWN0KGNvcm8pKSB7CisgICAgICAgICAgICByZXN1bHQgPSBfUHlHZW5fU2VuZCgoUHlHZW5PYmplY3QqKWNvcm8sIFB5X05vbmUpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZE9iakFyZ3MoCisgICAgICAgICAgICAgICAgY29ybywgJlB5SWRfc2VuZCwgUHlfTm9uZSwgTlVMTCk7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWRPYmpBcmdzKAorICAgICAgICAgICAgY29ybywgJlB5SWRfdGhyb3csIGV4YywgTlVMTCk7CisgICAgICAgIGlmIChjbGVhcl9leGMpIHsKKyAgICAgICAgICAgIC8qIFdlIGNyZWF0ZWQgJ2V4YycgZHVyaW5nIHRoaXMgY2FsbCAqLworICAgICAgICAgICAgUHlfQ0xFQVIoZXhjKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICBQeU9iamVjdCAqZXQsICpldiwgKnRiOworCisgICAgICAgIGlmIChfUHlHZW5fRmV0Y2hTdG9wSXRlcmF0aW9uVmFsdWUoJm8pID09IDApIHsKKyAgICAgICAgICAgIC8qIFRoZSBlcnJvciBpcyBTdG9wSXRlcmF0aW9uIGFuZCB0aGF0IG1lYW5zIHRoYXQKKyAgICAgICAgICAgICAgIHRoZSB1bmRlcmx5aW5nIGNvcm91dGluZSBoYXMgcmVzb2x2ZWQgKi8KKyAgICAgICAgICAgIFB5T2JqZWN0ICpyZXMgPSBmdXR1cmVfc2V0X3Jlc3VsdCgoRnV0dXJlT2JqKil0YXNrLCBvKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihvKTsKKyAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfREVDUkVGKHJlcyk7CisgICAgICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKGFzeW5jaW9fQ2FuY2VsbGVkRXJyb3IpKSB7CisgICAgICAgICAgICAvKiBDYW5jZWxsZWRFcnJvciAqLworICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgICAgIHJldHVybiBmdXR1cmVfY2FuY2VsKChGdXR1cmVPYmoqKXRhc2spOworICAgICAgICB9CisKKyAgICAgICAgLyogU29tZSBvdGhlciBleGNlcHRpb247IHBvcCBpdCBhbmQgY2FsbCBUYXNrLnNldF9leGNlcHRpb24oKSAqLworICAgICAgICBQeUVycl9GZXRjaCgmZXQsICZldiwgJnRiKTsKKyAgICAgICAgYXNzZXJ0KGV0KTsKKyAgICAgICAgaWYgKCFldiB8fCAhUHlPYmplY3RfVHlwZUNoZWNrKGV2LCAoUHlUeXBlT2JqZWN0ICopIGV0KSkgeworICAgICAgICAgICAgUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uKCZldCwgJmV2LCAmdGIpOworICAgICAgICB9CisgICAgICAgIGlmICh0YiAhPSBOVUxMKSB7CisgICAgICAgICAgICBQeUV4Y2VwdGlvbl9TZXRUcmFjZWJhY2soZXYsIHRiKTsKKyAgICAgICAgfQorICAgICAgICBvID0gZnV0dXJlX3NldF9leGNlcHRpb24oKEZ1dHVyZU9iaiopdGFzaywgZXYpOworICAgICAgICBpZiAoIW8pIHsKKyAgICAgICAgICAgIC8qIEFuIGV4Y2VwdGlvbiBpbiBUYXNrLnNldF9leGNlcHRpb24oKSAqLworICAgICAgICAgICAgUHlfWERFQ1JFRihldCk7CisgICAgICAgICAgICBQeV9YREVDUkVGKHRiKTsKKyAgICAgICAgICAgIFB5X1hERUNSRUYoZXYpOworICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICB9CisgICAgICAgIGFzc2VydChvID09IFB5X05vbmUpOworICAgICAgICBQeV9DTEVBUihvKTsKKworICAgICAgICBpZiAoIVB5RXJyX0dpdmVuRXhjZXB0aW9uTWF0Y2hlcyhldCwgUHlFeGNfRXhjZXB0aW9uKSkgeworICAgICAgICAgICAgLyogV2UndmUgZ290IGEgQmFzZUV4Y2VwdGlvbjsgcmUtcmFpc2UgaXQgKi8KKyAgICAgICAgICAgIFB5RXJyX1Jlc3RvcmUoZXQsIGV2LCB0Yik7CisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIH0KKworICAgICAgICBQeV9YREVDUkVGKGV0KTsKKyAgICAgICAgUHlfWERFQ1JFRih0Yik7CisgICAgICAgIFB5X1hERUNSRUYoZXYpOworCisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIH0KKworICAgIGlmIChyZXN1bHQgPT0gKFB5T2JqZWN0Kil0YXNrKSB7CisgICAgICAgIC8qIFdlIGhhdmUgYSB0YXNrIHRoYXQgd2FudHMgdG8gYXdhaXQgb24gaXRzZWxmICovCisgICAgICAgIGdvdG8gc2VsZl9hd2FpdDsKKyAgICB9CisKKyAgICAvKiBDaGVjayBpZiBgcmVzdWx0YCBpcyBGdXR1cmVPYmogb3IgVGFza09iaiAoYW5kIG5vdCBhIHN1YmNsYXNzKSAqLworICAgIGlmIChGdXR1cmVfQ2hlY2tFeGFjdChyZXN1bHQpIHx8IFRhc2tfQ2hlY2tFeGFjdChyZXN1bHQpKSB7CisgICAgICAgIFB5T2JqZWN0ICp3cmFwcGVyOworICAgICAgICBQeU9iamVjdCAqcmVzOworICAgICAgICBGdXR1cmVPYmogKmZ1dCA9IChGdXR1cmVPYmoqKXJlc3VsdDsKKworICAgICAgICAvKiBDaGVjayBpZiBgcmVzdWx0YCBmdXR1cmUgaXMgYXR0YWNoZWQgdG8gYSBkaWZmZXJlbnQgbG9vcCAqLworICAgICAgICBpZiAoZnV0LT5mdXRfbG9vcCAhPSB0YXNrLT50YXNrX2xvb3ApIHsKKyAgICAgICAgICAgIGdvdG8gZGlmZmVyZW50X2xvb3A7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZnV0LT5mdXRfYmxvY2tpbmcpIHsKKyAgICAgICAgICAgIGZ1dC0+ZnV0X2Jsb2NraW5nID0gMDsKKworICAgICAgICAgICAgLyogcmVzdWx0LmFkZF9kb25lX2NhbGxiYWNrKHRhc2suX3dha2V1cCkgKi8KKyAgICAgICAgICAgIHdyYXBwZXIgPSBUYXNrV2FrZXVwTWV0aFdyYXBwZXJfbmV3KHRhc2spOworICAgICAgICAgICAgaWYgKHdyYXBwZXIgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJlcyA9IGZ1dHVyZV9hZGRfZG9uZV9jYWxsYmFjaygoRnV0dXJlT2JqKilyZXN1bHQsIHdyYXBwZXIpOworICAgICAgICAgICAgUHlfREVDUkVGKHdyYXBwZXIpOworICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfREVDUkVGKHJlcyk7CisKKyAgICAgICAgICAgIC8qIHRhc2suX2Z1dF93YWl0ZXIgPSByZXN1bHQgKi8KKyAgICAgICAgICAgIHRhc2stPnRhc2tfZnV0X3dhaXRlciA9IHJlc3VsdDsgIC8qIG5vIGluY3JlZiBpcyBuZWNlc3NhcnkgKi8KKworICAgICAgICAgICAgaWYgKHRhc2stPnRhc2tfbXVzdF9jYW5jZWwpIHsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqcjsKKyAgICAgICAgICAgICAgICByID0gZnV0dXJlX2NhbmNlbChmdXQpOworICAgICAgICAgICAgICAgIGlmIChyID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChyID09IFB5X1RydWUpIHsKKyAgICAgICAgICAgICAgICAgICAgdGFzay0+dGFza19tdXN0X2NhbmNlbCA9IDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBnb3RvIHlpZWxkX2luc3RlYWRvZl95ZjsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIENoZWNrIGlmIGByZXN1bHRgIGlzIGEgRnV0dXJlLWNvbXBhdGlibGUgb2JqZWN0ICovCisgICAgbyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcocmVzdWx0LCAiX2FzeW5jaW9fZnV0dXJlX2Jsb2NraW5nIik7CisgICAgaWYgKG8gPT0gTlVMTCkgeworICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpIHsKKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmIChvID09IFB5X05vbmUpIHsKKyAgICAgICAgICAgIFB5X0NMRUFSKG8pOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLyogYHJlc3VsdGAgaXMgYSBGdXR1cmUtY29tcGF0aWJsZSBvYmplY3QgKi8KKyAgICAgICAgICAgIFB5T2JqZWN0ICp3cmFwcGVyOworICAgICAgICAgICAgUHlPYmplY3QgKnJlczsKKworICAgICAgICAgICAgaW50IGJsb2NraW5nID0gUHlPYmplY3RfSXNUcnVlKG8pOworICAgICAgICAgICAgUHlfQ0xFQVIobyk7CisgICAgICAgICAgICBpZiAoYmxvY2tpbmcgPCAwKSB7CisgICAgICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBDaGVjayBpZiBgcmVzdWx0YCBmdXR1cmUgaXMgYXR0YWNoZWQgdG8gYSBkaWZmZXJlbnQgbG9vcCAqLworICAgICAgICAgICAgUHlPYmplY3QgKm9sb29wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhyZXN1bHQsICJfbG9vcCIpOworICAgICAgICAgICAgaWYgKG9sb29wID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAob2xvb3AgIT0gdGFzay0+dGFza19sb29wKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKG9sb29wKTsKKyAgICAgICAgICAgICAgICBnb3RvIGRpZmZlcmVudF9sb29wOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKG9sb29wKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGJsb2NraW5nKSB7CisgICAgICAgICAgICAgICAgLyogcmVzdWx0Ll9hc3luY2lvX2Z1dHVyZV9ibG9ja2luZyA9IEZhbHNlICovCisgICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQsICJfYXN5bmNpb19mdXR1cmVfYmxvY2tpbmciLCBQeV9GYWxzZSkgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8qIHJlc3VsdC5hZGRfZG9uZV9jYWxsYmFjayh0YXNrLl93YWtldXApICovCisgICAgICAgICAgICAgICAgd3JhcHBlciA9IFRhc2tXYWtldXBNZXRoV3JhcHBlcl9uZXcodGFzayk7CisgICAgICAgICAgICAgICAgaWYgKHdyYXBwZXIgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWRPYmpBcmdzKHJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlJZF9hZGRfZG9uZV9jYWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cmFwcGVyLCBOVUxMKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYod3JhcHBlcik7CisgICAgICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcyk7CisKKyAgICAgICAgICAgICAgICAvKiB0YXNrLl9mdXRfd2FpdGVyID0gcmVzdWx0ICovCisgICAgICAgICAgICAgICAgdGFzay0+dGFza19mdXRfd2FpdGVyID0gcmVzdWx0OyAgLyogbm8gaW5jcmVmIGlzIG5lY2Vzc2FyeSAqLworCisgICAgICAgICAgICAgICAgaWYgKHRhc2stPnRhc2tfbXVzdF9jYW5jZWwpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnI7CisgICAgICAgICAgICAgICAgICAgIGludCBpc190cnVlOworICAgICAgICAgICAgICAgICAgICByID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChyZXN1bHQsICZQeUlkX2NhbmNlbCwgTlVMTCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChyID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlzX3RydWUgPSBQeU9iamVjdF9Jc1RydWUocik7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzX3RydWUgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpc190cnVlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0YXNrLT50YXNrX211c3RfY2FuY2VsID0gMDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgZ290byB5aWVsZF9pbnN0ZWFkb2ZfeWY7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBDaGVjayBpZiBgcmVzdWx0YCBpcyBOb25lICovCisgICAgaWYgKHJlc3VsdCA9PSBQeV9Ob25lKSB7CisgICAgICAgIC8qIEJhcmUgeWllbGQgcmVsaW5xdWlzaGVzIGNvbnRyb2wgZm9yIG9uZSBldmVudCBsb29wIGl0ZXJhdGlvbi4gKi8KKyAgICAgICAgaWYgKHRhc2tfY2FsbF9zdGVwX3Nvb24odGFzaywgTlVMTCkpIHsKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIC8qIENoZWNrIGlmIGByZXN1bHRgIGlzIGEgZ2VuZXJhdG9yICovCisgICAgbyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoaW5zcGVjdF9pc2dlbmVyYXRvciwgcmVzdWx0LCBOVUxMKTsKKyAgICBpZiAobyA9PSBOVUxMKSB7CisgICAgICAgIC8qIEFuIGV4Y2VwdGlvbiBpbiBpbnNwZWN0LmlzZ2VuZXJhdG9yICovCisgICAgICAgIGdvdG8gZmFpbDsKKyAgICB9CisgICAgcmVzID0gUHlPYmplY3RfSXNUcnVlKG8pOworICAgIFB5X0NMRUFSKG8pOworICAgIGlmIChyZXMgPT0gLTEpIHsKKyAgICAgICAgLyogQW4gZXhjZXB0aW9uIHdoaWxlIGNoZWNraW5nIGlmICd2YWwnIGlzIFRydWUgKi8KKyAgICAgICAgZ290byBmYWlsOworICAgIH0KKyAgICBpZiAocmVzID09IDEpIHsKKyAgICAgICAgLyogYHJlc3VsdGAgaXMgYSBnZW5lcmF0b3IgKi8KKyAgICAgICAgUHlPYmplY3QgKnJldDsKKyAgICAgICAgcmV0ID0gdGFza19zZXRfZXJyb3Jfc29vbigKKyAgICAgICAgICAgIHRhc2ssIFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICJ5aWVsZCB3YXMgdXNlZCBpbnN0ZWFkIG9mIHlpZWxkIGZyb20gZm9yICIKKyAgICAgICAgICAgICJnZW5lcmF0b3IgaW4gdGFzayAlUiB3aXRoICVTIiwgdGFzaywgcmVzdWx0KTsKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgIHJldHVybiByZXQ7CisgICAgfQorCisgICAgLyogVGhlIGByZXN1bHRgIGlzIG5vbmUgb2YgdGhlIGFib3ZlICovCisgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgcmV0dXJuIHRhc2tfc2V0X2Vycm9yX3Nvb24oCisgICAgICAgIHRhc2ssIFB5RXhjX1J1bnRpbWVFcnJvciwgIlRhc2sgZ290IGJhZCB5aWVsZDogJVIiLCByZXN1bHQpOworCitzZWxmX2F3YWl0OgorICAgIG8gPSB0YXNrX3NldF9lcnJvcl9zb29uKAorICAgICAgICB0YXNrLCBQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICJUYXNrIGNhbm5vdCBhd2FpdCBvbiBpdHNlbGY6ICVSIiwgdGFzayk7CisgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgcmV0dXJuIG87CisKK3lpZWxkX2luc3RlYWRvZl95ZjoKKyAgICBvID0gdGFza19zZXRfZXJyb3Jfc29vbigKKyAgICAgICAgdGFzaywgUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAieWllbGQgd2FzIHVzZWQgaW5zdGVhZCBvZiB5aWVsZCBmcm9tICIKKyAgICAgICAgImluIHRhc2sgJVIgd2l0aCAlUiIsCisgICAgICAgIHRhc2ssIHJlc3VsdCk7CisgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgcmV0dXJuIG87CisKK2RpZmZlcmVudF9sb29wOgorICAgIG8gPSB0YXNrX3NldF9lcnJvcl9zb29uKAorICAgICAgICB0YXNrLCBQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICJUYXNrICVSIGdvdCBGdXR1cmUgJVIgYXR0YWNoZWQgdG8gYSBkaWZmZXJlbnQgbG9vcCIsCisgICAgICAgIHRhc2ssIHJlc3VsdCk7CisgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgcmV0dXJuIG87CisKK2ZhaWw6CisgICAgUHlfWERFQ1JFRihyZXN1bHQpOworICAgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgUHlPYmplY3QgKgordGFza19zdGVwKFRhc2tPYmogKnRhc2ssIFB5T2JqZWN0ICpleGMpCit7CisgICAgUHlPYmplY3QgKnJlczsKKyAgICBQeU9iamVjdCAqb3Q7CisKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW0oY3VycmVudF90YXNrcywKKyAgICAgICAgICAgICAgICAgICAgICAgdGFzay0+dGFza19sb29wLCAoUHlPYmplY3QqKXRhc2spID09IC0xKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmVzID0gdGFza19zdGVwX2ltcGwodGFzaywgZXhjKTsKKworICAgIGlmIChyZXMgPT0gTlVMTCkgeworICAgICAgICBQeU9iamVjdCAqZXQsICpldiwgKnRiOworICAgICAgICBQeUVycl9GZXRjaCgmZXQsICZldiwgJnRiKTsKKyAgICAgICAgb3QgPSBfUHlEaWN0X1BvcChjdXJyZW50X3Rhc2tzLCB0YXNrLT50YXNrX2xvb3AsIE5VTEwpOworICAgICAgICBpZiAob3QgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfWERFQ1JFRihldCk7CisgICAgICAgICAgICBQeV9YREVDUkVGKHRiKTsKKyAgICAgICAgICAgIFB5X1hERUNSRUYoZXYpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKG90KTsKKyAgICAgICAgUHlFcnJfUmVzdG9yZShldCwgZXYsIHRiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBvdCA9IF9QeURpY3RfUG9wKGN1cnJlbnRfdGFza3MsIHRhc2stPnRhc2tfbG9vcCwgTlVMTCk7CisgICAgICAgIGlmIChvdCA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlfREVDUkVGKG90KTsKKyAgICAgICAgICAgIHJldHVybiByZXM7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit0YXNrX3dha2V1cChUYXNrT2JqICp0YXNrLCBQeU9iamVjdCAqbykKK3sKKyAgICBhc3NlcnQobyk7CisKKyAgICBpZiAoRnV0dXJlX0NoZWNrRXhhY3QobykgfHwgVGFza19DaGVja0V4YWN0KG8pKSB7CisgICAgICAgIFB5T2JqZWN0ICpmdXRfcmVzdWx0ID0gTlVMTDsKKyAgICAgICAgaW50IHJlcyA9IGZ1dHVyZV9nZXRfcmVzdWx0KChGdXR1cmVPYmoqKW8sICZmdXRfcmVzdWx0KTsKKyAgICAgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgICAgICBzd2l0Y2gocmVzKSB7CisgICAgICAgIGNhc2UgLTE6CisgICAgICAgICAgICBhc3NlcnQoZnV0X3Jlc3VsdCA9PSBOVUxMKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICBQeV9ERUNSRUYoZnV0X3Jlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gdGFza19jYWxsX3N0ZXAodGFzaywgTlVMTCk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBhc3NlcnQocmVzID09IDEpOworICAgICAgICAgICAgcmVzdWx0ID0gdGFza19jYWxsX3N0ZXAodGFzaywgZnV0X3Jlc3VsdCk7CisgICAgICAgICAgICBQeV9ERUNSRUYoZnV0X3Jlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgfQorCisgICAgUHlPYmplY3QgKmZ1dF9yZXN1bHQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKG8sICJyZXN1bHQiLCBOVUxMKTsKKyAgICBpZiAoZnV0X3Jlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIFB5T2JqZWN0ICpldCwgKmV2LCAqdGI7CisgICAgICAgIFB5T2JqZWN0ICpyZXM7CisKKyAgICAgICAgUHlFcnJfRmV0Y2goJmV0LCAmZXYsICZ0Yik7CisgICAgICAgIGlmICghZXYgfHwgIVB5T2JqZWN0X1R5cGVDaGVjayhldiwgKFB5VHlwZU9iamVjdCAqKSBldCkpIHsKKyAgICAgICAgICAgIFB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbigmZXQsICZldiwgJnRiKTsKKyAgICAgICAgfQorCisgICAgICAgIHJlcyA9IHRhc2tfY2FsbF9zdGVwKHRhc2ssIGV2KTsKKworICAgICAgICBQeV9YREVDUkVGKGV0KTsKKyAgICAgICAgUHlfWERFQ1JFRih0Yik7CisgICAgICAgIFB5X1hERUNSRUYoZXYpOworCisgICAgICAgIHJldHVybiByZXM7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeV9ERUNSRUYoZnV0X3Jlc3VsdCk7CisgICAgICAgIHJldHVybiB0YXNrX2NhbGxfc3RlcCh0YXNrLCBOVUxMKTsKKyAgICB9Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqIE1vZHVsZSAqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCitzdGF0aWMgdm9pZAorbW9kdWxlX2ZyZWUodm9pZCAqbSkKK3sKKyAgICBQeV9DTEVBUihjdXJyZW50X3Rhc2tzKTsKKyAgICBQeV9DTEVBUihhbGxfdGFza3MpOworICAgIFB5X0NMRUFSKHRyYWNlYmFja19leHRyYWN0X3N0YWNrKTsKKyAgICBQeV9DTEVBUihhc3luY2lvX2dldF9ldmVudF9sb29wKTsKKyAgICBQeV9DTEVBUihhc3luY2lvX2Z1dHVyZV9yZXByX2luZm9fZnVuYyk7CisgICAgUHlfQ0xFQVIoYXN5bmNpb190YXNrX3JlcHJfaW5mb19mdW5jKTsKKyAgICBQeV9DTEVBUihhc3luY2lvX3Rhc2tfZ2V0X3N0YWNrX2Z1bmMpOworICAgIFB5X0NMRUFSKGFzeW5jaW9fdGFza19wcmludF9zdGFja19mdW5jKTsKKyAgICBQeV9DTEVBUihhc3luY2lvX0ludmFsaWRTdGF0ZUVycm9yKTsKKyAgICBQeV9DTEVBUihhc3luY2lvX0NhbmNlbGxlZEVycm9yKTsKKyAgICBQeV9DTEVBUihpbnNwZWN0X2lzZ2VuZXJhdG9yKTsKK30KKworc3RhdGljIGludAorbW9kdWxlX2luaXQodm9pZCkKK3sKKyAgICBQeU9iamVjdCAqbW9kdWxlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqY2xzOworCisjZGVmaW5lIFdJVEhfTU9EKE5BTUUpIFwKKyAgICBQeV9DTEVBUihtb2R1bGUpOyBcCisgICAgbW9kdWxlID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKE5BTUUpOyBcCisgICAgaWYgKG1vZHVsZSA9PSBOVUxMKSB7IFwKKyAgICAgICAgcmV0dXJuIC0xOyBcCisgICAgfQorCisjZGVmaW5lIEdFVF9NT0RfQVRUUihWQVIsIE5BTUUpIFwKKyAgICBWQVIgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG1vZHVsZSwgTkFNRSk7IFwKKyAgICBpZiAoVkFSID09IE5VTEwpIHsgXAorICAgICAgICBnb3RvIGZhaWw7IFwKKyAgICB9CisKKyAgICBXSVRIX01PRCgiYXN5bmNpby5ldmVudHMiKQorICAgIEdFVF9NT0RfQVRUUihhc3luY2lvX2dldF9ldmVudF9sb29wLCAiZ2V0X2V2ZW50X2xvb3AiKQorCisgICAgV0lUSF9NT0QoImFzeW5jaW8uYmFzZV9mdXR1cmVzIikKKyAgICBHRVRfTU9EX0FUVFIoYXN5bmNpb19mdXR1cmVfcmVwcl9pbmZvX2Z1bmMsICJfZnV0dXJlX3JlcHJfaW5mbyIpCisgICAgR0VUX01PRF9BVFRSKGFzeW5jaW9fSW52YWxpZFN0YXRlRXJyb3IsICJJbnZhbGlkU3RhdGVFcnJvciIpCisgICAgR0VUX01PRF9BVFRSKGFzeW5jaW9fQ2FuY2VsbGVkRXJyb3IsICJDYW5jZWxsZWRFcnJvciIpCisKKyAgICBXSVRIX01PRCgiYXN5bmNpby5iYXNlX3Rhc2tzIikKKyAgICBHRVRfTU9EX0FUVFIoYXN5bmNpb190YXNrX3JlcHJfaW5mb19mdW5jLCAiX3Rhc2tfcmVwcl9pbmZvIikKKyAgICBHRVRfTU9EX0FUVFIoYXN5bmNpb190YXNrX2dldF9zdGFja19mdW5jLCAiX3Rhc2tfZ2V0X3N0YWNrIikKKyAgICBHRVRfTU9EX0FUVFIoYXN5bmNpb190YXNrX3ByaW50X3N0YWNrX2Z1bmMsICJfdGFza19wcmludF9zdGFjayIpCisKKyAgICBXSVRIX01PRCgiaW5zcGVjdCIpCisgICAgR0VUX01PRF9BVFRSKGluc3BlY3RfaXNnZW5lcmF0b3IsICJpc2dlbmVyYXRvciIpCisKKyAgICBXSVRIX01PRCgidHJhY2ViYWNrIikKKyAgICBHRVRfTU9EX0FUVFIodHJhY2ViYWNrX2V4dHJhY3Rfc3RhY2ssICJleHRyYWN0X3N0YWNrIikKKworICAgIFdJVEhfTU9EKCJ3ZWFrcmVmIikKKyAgICBHRVRfTU9EX0FUVFIoY2xzLCAiV2Vha1NldCIpCisgICAgYWxsX3Rhc2tzID0gUHlPYmplY3RfQ2FsbE9iamVjdChjbHMsIE5VTEwpOworICAgIFB5X0NMRUFSKGNscyk7CisgICAgaWYgKGFsbF90YXNrcyA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZmFpbDsKKyAgICB9CisKKyAgICBjdXJyZW50X3Rhc2tzID0gUHlEaWN0X05ldygpOworICAgIGlmIChjdXJyZW50X3Rhc2tzID09IE5VTEwpIHsKKyAgICAgICAgZ290byBmYWlsOworICAgIH0KKworICAgIFB5X0NMRUFSKG1vZHVsZSk7CisgICAgcmV0dXJuIDA7CisKK2ZhaWw6CisgICAgUHlfQ0xFQVIobW9kdWxlKTsKKyAgICBtb2R1bGVfZnJlZShOVUxMKTsKKyAgICByZXR1cm4gLTE7CisKKyN1bmRlZiBXSVRIX01PRAorI3VuZGVmIEdFVF9NT0RfQVRUUgorfQorCitQeURvY19TVFJWQVIobW9kdWxlX2RvYywgIkFjY2VsZXJhdG9yIG1vZHVsZSBmb3IgYXN5bmNpbyIpOworCitzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIF9hc3luY2lvbW9kdWxlID0geworICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwgICAgICAvKiBtX2Jhc2UgKi8KKyAgICAiX2FzeW5jaW8iLCAgICAgICAgICAgICAgICAgLyogbV9uYW1lICovCisgICAgbW9kdWxlX2RvYywgICAgICAgICAgICAgICAgIC8qIG1fZG9jICovCisgICAgLTEsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fc2l6ZSAqLworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAvKiBtX21ldGhvZHMgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgLyogbV9zbG90cyAqLworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAvKiBtX3RyYXZlcnNlICovCisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fY2xlYXIgKi8KKyAgICAoZnJlZWZ1bmMpbW9kdWxlX2ZyZWUgICAgICAgLyogbV9mcmVlICovCit9OworCisKK1B5TU9ESU5JVF9GVU5DCitQeUluaXRfX2FzeW5jaW8odm9pZCkKK3sKKyAgICBpZiAobW9kdWxlX2luaXQoKSA8IDApIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChQeVR5cGVfUmVhZHkoJkZ1dHVyZVR5cGUpIDwgMCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKFB5VHlwZV9SZWFkeSgmRnV0dXJlSXRlclR5cGUpIDwgMCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKFB5VHlwZV9SZWFkeSgmVGFza1NlbmRNZXRoV3JhcHBlcl9UeXBlKSA8IDApIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmKFB5VHlwZV9SZWFkeSgmVGFza1dha2V1cE1ldGhXcmFwcGVyX1R5cGUpIDwgMCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKFB5VHlwZV9SZWFkeSgmVGFza1R5cGUpIDwgMCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeU9iamVjdCAqbSA9IFB5TW9kdWxlX0NyZWF0ZSgmX2FzeW5jaW9tb2R1bGUpOworICAgIGlmIChtID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlfSU5DUkVGKCZGdXR1cmVUeXBlKTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJGdXR1cmUiLCAoUHlPYmplY3QgKikmRnV0dXJlVHlwZSkgPCAwKSB7CisgICAgICAgIFB5X0RFQ1JFRigmRnV0dXJlVHlwZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5X0lOQ1JFRigmVGFza1R5cGUpOworICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobSwgIlRhc2siLCAoUHlPYmplY3QgKikmVGFza1R5cGUpIDwgMCkgeworICAgICAgICBQeV9ERUNSRUYoJlRhc2tUeXBlKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIG07Cit9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19iaXNlY3Rtb2R1bGUuYyBiL01vZHVsZXMvX2Jpc2VjdG1vZHVsZS5jCmluZGV4IDAyYjU1ZDEuLjIyZGRiZjIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2Jpc2VjdG1vZHVsZS5jCisrKyBiL01vZHVsZXMvX2Jpc2VjdG1vZHVsZS5jCkBAIC0xMiw3ICsxMiw4IEBACiBpbnRlcm5hbF9iaXNlY3RfcmlnaHQoUHlPYmplY3QgKmxpc3QsIFB5T2JqZWN0ICppdGVtLCBQeV9zc2l6ZV90IGxvLCBQeV9zc2l6ZV90IGhpKQogewogICAgIFB5T2JqZWN0ICpsaXRlbTsKLSAgICBQeV9zc2l6ZV90IG1pZCwgcmVzOworICAgIFB5X3NzaXplX3QgbWlkOworICAgIGludCByZXM7CiAKICAgICBpZiAobG8gPCAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibG8gbXVzdCBiZSBub24tbmVnYXRpdmUiKTsKQEAgLTExNSw3ICsxMTYsOCBAQAogaW50ZXJuYWxfYmlzZWN0X2xlZnQoUHlPYmplY3QgKmxpc3QsIFB5T2JqZWN0ICppdGVtLCBQeV9zc2l6ZV90IGxvLCBQeV9zc2l6ZV90IGhpKQogewogICAgIFB5T2JqZWN0ICpsaXRlbTsKLSAgICBQeV9zc2l6ZV90IG1pZCwgcmVzOworICAgIFB5X3NzaXplX3QgbWlkOworICAgIGludCByZXM7CiAKICAgICBpZiAobG8gPCAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibG8gbXVzdCBiZSBub24tbmVnYXRpdmUiKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2JsYWtlMi9ibGFrZTJiMnMucHkgYi9Nb2R1bGVzL19ibGFrZTIvYmxha2UyYjJzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjAxY2YyNjUKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19ibGFrZTIvYmxha2UyYjJzLnB5CkBAIC0wLDAgKzEsNDkgQEAKKyMhL3Vzci9iaW4vcHl0aG9uMworCitpbXBvcnQgb3MKK2ltcG9ydCByZQorCitIRVJFID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChfX2ZpbGVfXykpCitCTEFLRTIgPSBvcy5wYXRoLmpvaW4oSEVSRSwgJ2ltcGwnKQorCitQVUJMSUNfU0VBUkNIID0gcmUuY29tcGlsZShyJ1wgaW50IChibGFrZTJbYnNdcD9bYS16X10qKVwoJykKKworCitkZWYgZ2V0ZmlsZXMoKToKKyAgICBmb3IgbmFtZSBpbiBvcy5saXN0ZGlyKEJMQUtFMik6CisgICAgICAgIG5hbWUgPSBvcy5wYXRoLmpvaW4oQkxBS0UyLCBuYW1lKQorICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShuYW1lKToKKyAgICAgICAgICAgIHlpZWxkIG5hbWUKKworCitkZWYgZmluZF9wdWJsaWMoKToKKyAgICBwdWJsaWNfZnVuY3MgPSBzZXQoKQorICAgIGZvciBuYW1lIGluIGdldGZpbGVzKCk6CisgICAgICAgIHdpdGggb3BlbihuYW1lKSBhcyBmOgorICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKKyAgICAgICAgICAgICAgICAjIGZpbmQgcHVibGljIGZ1bmN0aW9ucworICAgICAgICAgICAgICAgIG1vID0gUFVCTElDX1NFQVJDSC5zZWFyY2gobGluZSkKKyAgICAgICAgICAgICAgICBpZiBtbzoKKyAgICAgICAgICAgICAgICAgICAgcHVibGljX2Z1bmNzLmFkZChtby5ncm91cCgxKSkKKworICAgIGZvciBmIGluIHNvcnRlZChwdWJsaWNfZnVuY3MpOgorICAgICAgICBwcmludCgnI2RlZmluZSB7MDo8MTh9IFB5Qmxha2UyX3swfScuZm9ybWF0KGYpKQorCisgICAgcmV0dXJuIHB1YmxpY19mdW5jcworCisKK2RlZiBtYWluKCk6CisgICAgbGluZXMgPSBbXQorICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oSEVSRSwgJ2JsYWtlMmJfaW1wbC5jJykpIGFzIGY6CisgICAgICAgIGZvciBsaW5lIGluIGY6CisgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCdibGFrZTJiJywgJ2JsYWtlMnMnKQorICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgnQkxBS0UyYicsICdCTEFLRTJzJykKKyAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoJ0JMQUtFMkInLCAnQkxBS0UyUycpCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQobGluZSkKKyAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKEhFUkUsICdibGFrZTJzX2ltcGwuYycpLCAndycpIGFzIGY6CisgICAgICAgIGYud3JpdGUoJycuam9pbihsaW5lcykpCisgICAgIyBmaW5kX3B1YmxpYygpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBtYWluKCkKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2JsYWtlMi9ibGFrZTJiX2ltcGwuYyBiL01vZHVsZXMvX2JsYWtlMi9ibGFrZTJiX2ltcGwuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OGI1MDJiCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fYmxha2UyL2JsYWtlMmJfaW1wbC5jCkBAIC0wLDAgKzEsNDYwIEBACisvKgorICogV3JpdHRlbiBpbiAyMDEzIGJ5IERtaXRyeSBDaGVzdG55a2ggPGRtaXRyeUBjb2Rpbmdyb2JvdHMuY29tPgorICogTW9kaWZpZWQgZm9yIENQeXRob24gYnkgQ2hyaXN0aWFuIEhlaW1lcyA8Y2hyaXN0aWFuQHB5dGhvbi5vcmc+CisgKgorICogVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBhdXRob3IgaGF2ZSBkZWRpY2F0ZWQgYWxsCisgKiBjb3B5cmlnaHQgYW5kIHJlbGF0ZWQgYW5kIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGlzIHNvZnR3YXJlIHRvCisgKiB0aGUgcHVibGljIGRvbWFpbiB3b3JsZHdpZGUuIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgd2l0aG91dAorICogYW55IHdhcnJhbnR5LiBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCisgKi8KKworLyogV0FSTklORzogYXV0b2dlbmVyYXRlZCBmaWxlIQorICoKKyAqIFRoZSBibGFrZTJzX2ltcGwuYyBpcyBhdXRvZ2VuZXJhdGVkIGZyb20gYmxha2UyYl9pbXBsLmMuCisgKi8KKworI2luY2x1ZGUgIlB5dGhvbi5oIgorI2luY2x1ZGUgInB5c3RyaGV4LmgiCisjaWZkZWYgV0lUSF9USFJFQUQKKyNpbmNsdWRlICJweXRocmVhZC5oIgorI2VuZGlmCisKKyNpbmNsdWRlICIuLi9oYXNobGliLmgiCisjaW5jbHVkZSAiYmxha2UybnMuaCIKKworI2RlZmluZSBIQVZFX0JMQUtFMkIgMQorI2RlZmluZSBCTEFLRTJfTE9DQUxfSU5MSU5FKHR5cGUpIFB5X0xPQ0FMX0lOTElORSh0eXBlKQorCisjaW5jbHVkZSAiaW1wbC9ibGFrZTIuaCIKKyNpbmNsdWRlICJpbXBsL2JsYWtlMi1pbXBsLmgiIC8qIGZvciBzZWN1cmVfemVyb19tZW1vcnkoKSBhbmQgc3RvcmU0OCgpICovCisKKyNpZmRlZiBCTEFLRTJfVVNFX1NTRQorI2luY2x1ZGUgImltcGwvYmxha2UyYi5jIgorI2Vsc2UKKyNpbmNsdWRlICJpbXBsL2JsYWtlMmItcmVmLmMiCisjZW5kaWYKKworCitleHRlcm4gUHlUeXBlT2JqZWN0IFB5Qmxha2UyX0JMQUtFMmJUeXBlOworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIGJsYWtlMmJfcGFyYW0gICAgcGFyYW07CisgICAgYmxha2UyYl9zdGF0ZSAgICBzdGF0ZTsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrOworI2VuZGlmCit9IEJMQUtFMmJPYmplY3Q7CisKKyNpbmNsdWRlICJjbGluaWMvYmxha2UyYl9pbXBsLmMuaCIKKworLypbY2xpbmljIGlucHV0XQorbW9kdWxlIF9ibGFrZTJiCitjbGFzcyBfYmxha2UyYi5ibGFrZTJiICJCTEFLRTJiT2JqZWN0ICoiICImUHlCbGFrZTJfQkxBS0UyYlR5cGUiCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD02ODkzMzU4YzY2MjJhZWNmXSovCisKKworc3RhdGljIEJMQUtFMmJPYmplY3QgKgorbmV3X0JMQUtFMmJPYmplY3QoUHlUeXBlT2JqZWN0ICp0eXBlKQoreworICAgIEJMQUtFMmJPYmplY3QgKnNlbGY7CisgICAgc2VsZiA9IChCTEFLRTJiT2JqZWN0ICopdHlwZS0+dHBfYWxsb2ModHlwZSwgMCk7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBpZiAoc2VsZiAhPSBOVUxMKSB7CisgICAgICAgIHNlbGYtPmxvY2sgPSBOVUxMOworICAgIH0KKyNlbmRpZgorICAgIHJldHVybiBzZWxmOworfQorCisvKltjbGluaWMgaW5wdXRdCitAY2xhc3NtZXRob2QKK19ibGFrZTJiLmJsYWtlMmIuX19uZXdfXyBhcyBweV9ibGFrZTJiX25ldworICAgIHN0cmluZyBhcyBkYXRhOiBvYmplY3QgPSBOVUxMCisgICAgKgorICAgIGRpZ2VzdF9zaXplOiBpbnQoY19kZWZhdWx0PSJCTEFLRTJCX09VVEJZVEVTIikgPSBfYmxha2UyYi5ibGFrZTJiLk1BWF9ESUdFU1RfU0laRQorICAgIGtleTogUHlfYnVmZmVyID0gTm9uZQorICAgIHNhbHQ6IFB5X2J1ZmZlciA9IE5vbmUKKyAgICBwZXJzb246IFB5X2J1ZmZlciA9IE5vbmUKKyAgICBmYW5vdXQ6IGludCA9IDEKKyAgICBkZXB0aDogaW50ID0gMQorICAgIGxlYWZfc2l6ZSBhcyBsZWFmX3NpemVfb2JqOiBvYmplY3QgPSBOVUxMCisgICAgbm9kZV9vZmZzZXQgYXMgbm9kZV9vZmZzZXRfb2JqOiBvYmplY3QgPSBOVUxMCisgICAgbm9kZV9kZXB0aDogaW50ID0gMAorICAgIGlubmVyX3NpemU6IGludCA9IDAKKyAgICBsYXN0X25vZGU6IGJvb2wgPSBGYWxzZQorCitSZXR1cm4gYSBuZXcgQkxBS0UyYiBoYXNoIG9iamVjdC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK3B5X2JsYWtlMmJfbmV3X2ltcGwoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqZGF0YSwgaW50IGRpZ2VzdF9zaXplLAorICAgICAgICAgICAgICAgICAgICBQeV9idWZmZXIgKmtleSwgUHlfYnVmZmVyICpzYWx0LCBQeV9idWZmZXIgKnBlcnNvbiwKKyAgICAgICAgICAgICAgICAgICAgaW50IGZhbm91dCwgaW50IGRlcHRoLCBQeU9iamVjdCAqbGVhZl9zaXplX29iaiwKKyAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm5vZGVfb2Zmc2V0X29iaiwgaW50IG5vZGVfZGVwdGgsCisgICAgICAgICAgICAgICAgICAgIGludCBpbm5lcl9zaXplLCBpbnQgbGFzdF9ub2RlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc1MDZkOGQ4OTBlNWYxM2IgaW5wdXQ9ZTQxNTQ4ZGZhMDg2NjAzMV0qLworeworICAgIEJMQUtFMmJPYmplY3QgKnNlbGYgPSBOVUxMOworICAgIFB5X2J1ZmZlciBidWY7CisKKyAgICB1bnNpZ25lZCBsb25nIGxlYWZfc2l6ZSA9IDA7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIG5vZGVfb2Zmc2V0ID0gMDsKKworICAgIHNlbGYgPSBuZXdfQkxBS0UyYk9iamVjdCh0eXBlKTsKKyAgICBpZiAoc2VsZiA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgLyogWmVybyBwYXJhbWV0ZXIgYmxvY2suICovCisgICAgbWVtc2V0KCZzZWxmLT5wYXJhbSwgMCwgc2l6ZW9mKHNlbGYtPnBhcmFtKSk7CisKKyAgICAvKiBTZXQgZGlnZXN0IHNpemUuICovCisgICAgaWYgKGRpZ2VzdF9zaXplIDw9IDAgfHwgZGlnZXN0X3NpemUgPiBCTEFLRTJCX09VVEJZVEVTKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJkaWdlc3Rfc2l6ZSBtdXN0IGJlIGJldHdlZW4gMSBhbmQgJWQgYnl0ZXMiLAorICAgICAgICAgICAgICAgIEJMQUtFMkJfT1VUQllURVMpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBzZWxmLT5wYXJhbS5kaWdlc3RfbGVuZ3RoID0gZGlnZXN0X3NpemU7CisKKyAgICAvKiBTZXQgc2FsdCBwYXJhbWV0ZXIuICovCisgICAgaWYgKChzYWx0LT5vYmogIT0gTlVMTCkgJiYgc2FsdC0+bGVuKSB7CisgICAgICAgIGlmIChzYWx0LT5sZW4gPiBCTEFLRTJCX1NBTFRCWVRFUykgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgIm1heGltdW0gc2FsdCBsZW5ndGggaXMgJWQgYnl0ZXMiLAorICAgICAgICAgICAgICAgIEJMQUtFMkJfU0FMVEJZVEVTKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgbWVtY3B5KHNlbGYtPnBhcmFtLnNhbHQsIHNhbHQtPmJ1Ziwgc2FsdC0+bGVuKTsKKyAgICB9CisKKyAgICAvKiBTZXQgcGVyc29uYWxpemF0aW9uIHBhcmFtZXRlci4gKi8KKyAgICBpZiAoKHBlcnNvbi0+b2JqICE9IE5VTEwpICYmIHBlcnNvbi0+bGVuKSB7CisgICAgICAgIGlmIChwZXJzb24tPmxlbiA+IEJMQUtFMkJfUEVSU09OQUxCWVRFUykgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgIm1heGltdW0gcGVyc29uIGxlbmd0aCBpcyAlZCBieXRlcyIsCisgICAgICAgICAgICAgICAgQkxBS0UyQl9QRVJTT05BTEJZVEVTKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgbWVtY3B5KHNlbGYtPnBhcmFtLnBlcnNvbmFsLCBwZXJzb24tPmJ1ZiwgcGVyc29uLT5sZW4pOworICAgIH0KKworICAgIC8qIFNldCB0cmVlIHBhcmFtZXRlcnMuICovCisgICAgaWYgKGZhbm91dCA8IDAgfHwgZmFub3V0ID4gMjU1KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJmYW5vdXQgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDI1NSIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBzZWxmLT5wYXJhbS5mYW5vdXQgPSAodWludDhfdClmYW5vdXQ7CisKKyAgICBpZiAoZGVwdGggPD0gMCB8fCBkZXB0aCA+IDI1NSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAiZGVwdGggbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDI1NSIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBzZWxmLT5wYXJhbS5kZXB0aCA9ICh1aW50OF90KWRlcHRoOworCisgICAgaWYgKGxlYWZfc2l6ZV9vYmogIT0gTlVMTCkgeworICAgICAgICBsZWFmX3NpemUgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmcobGVhZl9zaXplX29iaik7CisgICAgICAgIGlmIChsZWFmX3NpemUgPT0gKHVuc2lnbmVkIGxvbmcpIC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGxlYWZfc2l6ZSA+IDB4RkZGRkZGRkZVKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgImxlYWZfc2l6ZSBpcyB0b28gbGFyZ2UiKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisgICAgc2VsZi0+cGFyYW0ubGVhZl9sZW5ndGggPSAodW5zaWduZWQgaW50KWxlYWZfc2l6ZTsKKworICAgIGlmIChub2RlX29mZnNldF9vYmogIT0gTlVMTCkgeworICAgICAgICBub2RlX29mZnNldCA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcobm9kZV9vZmZzZXRfb2JqKTsKKyAgICAgICAgaWYgKG5vZGVfb2Zmc2V0ID09ICh1bnNpZ25lZCBsb25nIGxvbmcpIC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisjaWZkZWYgSEFWRV9CTEFLRTJTCisgICAgaWYgKG5vZGVfb2Zmc2V0ID4gMHhGRkZGRkZGRkZGRkZVTEwpIHsKKyAgICAgICAgLyogbWF4aW11bSAyKio0OCAtIDEgKi8KKyAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAibm9kZV9vZmZzZXQgaXMgdG9vIGxhcmdlIik7CisgICAgICAgICBnb3RvIGVycm9yOworICAgICB9CisgICAgc3RvcmU0OCgmKHNlbGYtPnBhcmFtLm5vZGVfb2Zmc2V0KSwgbm9kZV9vZmZzZXQpOworI2Vsc2UKKyAgICBzZWxmLT5wYXJhbS5ub2RlX29mZnNldCA9IG5vZGVfb2Zmc2V0OworI2VuZGlmCisKKyAgICBpZiAobm9kZV9kZXB0aCA8IDAgfHwgbm9kZV9kZXB0aCA+IDI1NSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAibm9kZV9kZXB0aCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMjU1Iik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIHNlbGYtPnBhcmFtLm5vZGVfZGVwdGggPSBub2RlX2RlcHRoOworCisgICAgaWYgKGlubmVyX3NpemUgPCAwIHx8IGlubmVyX3NpemUgPiBCTEFLRTJCX09VVEJZVEVTKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJpbm5lcl9zaXplIG11c3QgYmUgYmV0d2VlbiAwIGFuZCBpcyAlZCIsCisgICAgICAgICAgICAgICAgQkxBS0UyQl9PVVRCWVRFUyk7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIHNlbGYtPnBhcmFtLmlubmVyX2xlbmd0aCA9IGlubmVyX3NpemU7CisKKyAgICAvKiBTZXQga2V5IGxlbmd0aC4gKi8KKyAgICBpZiAoKGtleS0+b2JqICE9IE5VTEwpICYmIGtleS0+bGVuKSB7CisgICAgICAgIGlmIChrZXktPmxlbiA+IEJMQUtFMkJfS0VZQllURVMpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJtYXhpbXVtIGtleSBsZW5ndGggaXMgJWQgYnl0ZXMiLAorICAgICAgICAgICAgICAgIEJMQUtFMkJfS0VZQllURVMpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBzZWxmLT5wYXJhbS5rZXlfbGVuZ3RoID0gKHVpbnQ4X3Qpa2V5LT5sZW47CisgICAgfQorCisgICAgLyogSW5pdGlhbGl6ZSBoYXNoIHN0YXRlLiAqLworICAgIGlmIChibGFrZTJiX2luaXRfcGFyYW0oJnNlbGYtPnN0YXRlLCAmc2VsZi0+cGFyYW0pIDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICJlcnJvciBpbml0aWFsaXppbmcgaGFzaCBzdGF0ZSIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIC8qIFNldCBsYXN0IG5vZGUgZmxhZyAobXVzdCBjb21lIGFmdGVyIGluaXRpYWxpemF0aW9uKS4gKi8KKyAgICBzZWxmLT5zdGF0ZS5sYXN0X25vZGUgPSBsYXN0X25vZGU7CisKKyAgICAvKiBQcm9jZXNzIGtleSBibG9jayBpZiBhbnkuICovCisgICAgaWYgKHNlbGYtPnBhcmFtLmtleV9sZW5ndGgpIHsKKyAgICAgICAgdWludDhfdCBibG9ja1tCTEFLRTJCX0JMT0NLQllURVNdOworICAgICAgICBtZW1zZXQoYmxvY2ssIDAsIHNpemVvZihibG9jaykpOworICAgICAgICBtZW1jcHkoYmxvY2ssIGtleS0+YnVmLCBrZXktPmxlbik7CisgICAgICAgIGJsYWtlMmJfdXBkYXRlKCZzZWxmLT5zdGF0ZSwgYmxvY2ssIHNpemVvZihibG9jaykpOworICAgICAgICBzZWN1cmVfemVyb19tZW1vcnkoYmxvY2ssIHNpemVvZihibG9jaykpOworICAgIH0KKworICAgIC8qIFByb2Nlc3MgaW5pdGlhbCBkYXRhIGlmIGFueS4gKi8KKyAgICBpZiAoZGF0YSAhPSBOVUxMKSB7CisgICAgICAgIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPUihkYXRhLCAmYnVmLCBnb3RvIGVycm9yKTsKKworICAgICAgICBpZiAoYnVmLmxlbiA+PSBIQVNITElCX0dJTF9NSU5TSVpFKSB7CisgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgICAgICBibGFrZTJiX3VwZGF0ZSgmc2VsZi0+c3RhdGUsIGJ1Zi5idWYsIGJ1Zi5sZW4pOworICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGJsYWtlMmJfdXBkYXRlKCZzZWxmLT5zdGF0ZSwgYnVmLmJ1ZiwgYnVmLmxlbik7CisgICAgICAgIH0KKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKKyAgICB9CisKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopc2VsZjsKKworICBlcnJvcjoKKyAgICBpZiAoc2VsZiAhPSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKKyAgICB9CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19ibGFrZTJiLmJsYWtlMmIuY29weQorCitSZXR1cm4gYSBjb3B5IG9mIHRoZSBoYXNoIG9iamVjdC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19ibGFrZTJiX2JsYWtlMmJfY29weV9pbXBsKEJMQUtFMmJPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Yzg5Y2QzMzU1MGFiMTU0MyBpbnB1dD00YzljMzE5ZjE4ZjEwNzQ3XSovCit7CisgICAgQkxBS0UyYk9iamVjdCAqY3B5OworCisgICAgaWYgKChjcHkgPSBuZXdfQkxBS0UyYk9iamVjdChQeV9UWVBFKHNlbGYpKSkgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBFTlRFUl9IQVNITElCKHNlbGYpOworICAgIGNweS0+cGFyYW0gPSBzZWxmLT5wYXJhbTsKKyAgICBjcHktPnN0YXRlID0gc2VsZi0+c3RhdGU7CisgICAgTEVBVkVfSEFTSExJQihzZWxmKTsKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopY3B5OworfQorCisvKltjbGluaWMgaW5wdXRdCitfYmxha2UyYi5ibGFrZTJiLnVwZGF0ZQorCisgICAgb2JqOiBvYmplY3QKKyAgICAvCisKK1VwZGF0ZSB0aGlzIGhhc2ggb2JqZWN0J3Mgc3RhdGUgd2l0aCB0aGUgcHJvdmlkZWQgc3RyaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2JsYWtlMmJfYmxha2UyYl91cGRhdGUoQkxBS0UyYk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm9iaikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hODg4ZjA3YzRjZGRiZTk0IGlucHV0PTNlY2I4YzEzZWU0MjYwZjJdKi8KK3sKKyAgICBQeV9idWZmZXIgYnVmOworCisgICAgR0VUX0JVRkZFUl9WSUVXX09SX0VSUk9VVChvYmosICZidWYpOworCisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBpZiAoc2VsZi0+bG9jayA9PSBOVUxMICYmIGJ1Zi5sZW4gPj0gSEFTSExJQl9HSUxfTUlOU0laRSkKKyAgICAgICAgc2VsZi0+bG9jayA9IFB5VGhyZWFkX2FsbG9jYXRlX2xvY2soKTsKKworICAgIGlmIChzZWxmLT5sb2NrICE9IE5VTEwpIHsKKyAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgUHlUaHJlYWRfYWNxdWlyZV9sb2NrKHNlbGYtPmxvY2ssIDEpOworICAgICAgIGJsYWtlMmJfdXBkYXRlKCZzZWxmLT5zdGF0ZSwgYnVmLmJ1ZiwgYnVmLmxlbik7CisgICAgICAgUHlUaHJlYWRfcmVsZWFzZV9sb2NrKHNlbGYtPmxvY2spOworICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfSBlbHNlIHsKKyAgICAgICAgYmxha2UyYl91cGRhdGUoJnNlbGYtPnN0YXRlLCBidWYuYnVmLCBidWYubGVuKTsKKyAgICB9CisjZWxzZQorICAgIGJsYWtlMmJfdXBkYXRlKCZzZWxmLT5zdGF0ZSwgYnVmLmJ1ZiwgYnVmLmxlbik7CisjZW5kaWYgLyogIVdJVEhfVEhSRUFEICovCisgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKKworICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICByZXR1cm4gUHlfTm9uZTsKK30KKworLypbY2xpbmljIGlucHV0XQorX2JsYWtlMmIuYmxha2UyYi5kaWdlc3QKKworUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgYmluYXJ5IGRhdGEuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYmxha2UyYl9ibGFrZTJiX2RpZ2VzdF9pbXBsKEJMQUtFMmJPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjEzYTc5MzYwZDk4NDc0MCBpbnB1dD1hYzJmYTQ2MmViYjFiOWM3XSovCit7CisgICAgdWludDhfdCBkaWdlc3RbQkxBS0UyQl9PVVRCWVRFU107CisgICAgYmxha2UyYl9zdGF0ZSBzdGF0ZV9jcHk7CisKKyAgICBFTlRFUl9IQVNITElCKHNlbGYpOworICAgIHN0YXRlX2NweSA9IHNlbGYtPnN0YXRlOworICAgIGJsYWtlMmJfZmluYWwoJnN0YXRlX2NweSwgZGlnZXN0LCBzZWxmLT5wYXJhbS5kaWdlc3RfbGVuZ3RoKTsKKyAgICBMRUFWRV9IQVNITElCKHNlbGYpOworICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjb25zdCBjaGFyICopZGlnZXN0LAorICAgICAgICAgICAgc2VsZi0+cGFyYW0uZGlnZXN0X2xlbmd0aCk7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19ibGFrZTJiLmJsYWtlMmIuaGV4ZGlnZXN0CisKK1JldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIGRpZ2l0cy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19ibGFrZTJiX2JsYWtlMmJfaGV4ZGlnZXN0X2ltcGwoQkxBS0UyYk9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02YTUwMzYxMTcxNWIyNGJkIGlucHV0PWQ1OGYwYjJmMzc4MTJlMzNdKi8KK3sKKyAgICB1aW50OF90IGRpZ2VzdFtCTEFLRTJCX09VVEJZVEVTXTsKKyAgICBibGFrZTJiX3N0YXRlIHN0YXRlX2NweTsKKworICAgIEVOVEVSX0hBU0hMSUIoc2VsZik7CisgICAgc3RhdGVfY3B5ID0gc2VsZi0+c3RhdGU7CisgICAgYmxha2UyYl9maW5hbCgmc3RhdGVfY3B5LCBkaWdlc3QsIHNlbGYtPnBhcmFtLmRpZ2VzdF9sZW5ndGgpOworICAgIExFQVZFX0hBU0hMSUIoc2VsZik7CisgICAgcmV0dXJuIF9QeV9zdHJoZXgoKGNvbnN0IGNoYXIgKilkaWdlc3QsIHNlbGYtPnBhcmFtLmRpZ2VzdF9sZW5ndGgpOworfQorCisKK3N0YXRpYyBQeU1ldGhvZERlZiBweV9ibGFrZTJiX21ldGhvZHNbXSA9IHsKKyAgICBfQkxBS0UyQl9CTEFLRTJCX0NPUFlfTUVUSE9EREVGCisgICAgX0JMQUtFMkJfQkxBS0UyQl9ESUdFU1RfTUVUSE9EREVGCisgICAgX0JMQUtFMkJfQkxBS0UyQl9IRVhESUdFU1RfTUVUSE9EREVGCisgICAgX0JMQUtFMkJfQkxBS0UyQl9VUERBVEVfTUVUSE9EREVGCisgICAge05VTEwsIE5VTEx9Cit9OworCisKKworc3RhdGljIFB5T2JqZWN0ICoKK3B5X2JsYWtlMmJfZ2V0X25hbWUoQkxBS0UyYk9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoImJsYWtlMmIiKTsKK30KKworCisKK3N0YXRpYyBQeU9iamVjdCAqCitweV9ibGFrZTJiX2dldF9ibG9ja19zaXplKEJMQUtFMmJPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhCTEFLRTJCX0JMT0NLQllURVMpOworfQorCisKKworc3RhdGljIFB5T2JqZWN0ICoKK3B5X2JsYWtlMmJfZ2V0X2RpZ2VzdF9zaXplKEJMQUtFMmJPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhzZWxmLT5wYXJhbS5kaWdlc3RfbGVuZ3RoKTsKK30KKworCitzdGF0aWMgUHlHZXRTZXREZWYgcHlfYmxha2UyYl9nZXRzZXR0ZXJzW10gPSB7CisgICAgeyJuYW1lIiwgKGdldHRlcilweV9ibGFrZTJiX2dldF9uYW1lLAorICAgICAgICBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgICB7ImJsb2NrX3NpemUiLCAoZ2V0dGVyKXB5X2JsYWtlMmJfZ2V0X2Jsb2NrX3NpemUsCisgICAgICAgIE5VTEwsIE5VTEwsIE5VTEx9LAorICAgIHsiZGlnZXN0X3NpemUiLCAoZ2V0dGVyKXB5X2JsYWtlMmJfZ2V0X2RpZ2VzdF9zaXplLAorICAgICAgICBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgICB7TlVMTH0KK307CisKKworc3RhdGljIHZvaWQKK3B5X2JsYWtlMmJfZGVhbGxvYyhQeU9iamVjdCAqc2VsZikKK3sKKyAgICBCTEFLRTJiT2JqZWN0ICpvYmogPSAoQkxBS0UyYk9iamVjdCAqKXNlbGY7CisKKyAgICAvKiBUcnkgbm90IHRvIGxlYXZlIHN0YXRlIGluIG1lbW9yeS4gKi8KKyAgICBzZWN1cmVfemVyb19tZW1vcnkoJm9iai0+cGFyYW0sIHNpemVvZihvYmotPnBhcmFtKSk7CisgICAgc2VjdXJlX3plcm9fbWVtb3J5KCZvYmotPnN0YXRlLCBzaXplb2Yob2JqLT5zdGF0ZSkpOworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgaWYgKG9iai0+bG9jaykgeworICAgICAgICBQeVRocmVhZF9mcmVlX2xvY2sob2JqLT5sb2NrKTsKKyAgICAgICAgb2JqLT5sb2NrID0gTlVMTDsKKyAgICB9CisjZW5kaWYKKyAgICBQeU9iamVjdF9EZWwoc2VsZik7Cit9CisKKworUHlUeXBlT2JqZWN0IFB5Qmxha2UyX0JMQUtFMmJUeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgICJfYmxha2UyLmJsYWtlMmIiLCAgICAgICAgLyogdHBfbmFtZSAgICAgICAgICAgICovCisgICAgc2l6ZW9mKEJMQUtFMmJPYmplY3QpLCAgICAvKiB0cF9zaXplICAgICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICAgICAgICAqLworICAgIHB5X2JsYWtlMmJfZGVhbGxvYywgICAgICAgLyogdHBfZGVhbGxvYyAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAgICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jb21wYXJlICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgICAgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAgICAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICAgICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAgICAgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAgICAgICAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgLyogdHBfZmxhZ3MgICAgICAgICAgICovCisgICAgcHlfYmxha2UyYl9uZXdfX2RvY19fLCAgICAvKiB0cF9kb2MgICAgICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgICAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAgICAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAgICAgICAgKi8KKyAgICBweV9ibGFrZTJiX21ldGhvZHMsICAgICAgIC8qIHRwX21ldGhvZHMgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAgICAgICAgICovCisgICAgcHlfYmxha2UyYl9nZXRzZXR0ZXJzLCAgICAvKiB0cF9nZXRzZXQgICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgICAgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAgICAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICAgICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICAgICAgICAgICAqLworICAgIHB5X2JsYWtlMmJfbmV3LCAgICAgICAgICAgLyogdHBfbmV3ICAgICAgICAgICAgICovCit9OwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fYmxha2UyL2JsYWtlMm1vZHVsZS5jIGIvTW9kdWxlcy9fYmxha2UyL2JsYWtlMm1vZHVsZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyYTNkNDIKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19ibGFrZTIvYmxha2UybW9kdWxlLmMKQEAgLTAsMCArMSwxMDUgQEAKKy8qCisgKiBXcml0dGVuIGluIDIwMTMgYnkgRG1pdHJ5IENoZXN0bnlraCA8ZG1pdHJ5QGNvZGluZ3JvYm90cy5jb20+CisgKiBNb2RpZmllZCBmb3IgQ1B5dGhvbiBieSBDaHJpc3RpYW4gSGVpbWVzIDxjaHJpc3RpYW5AcHl0aG9uLm9yZz4KKyAqCisgKiBUbyB0aGUgZXh0ZW50IHBvc3NpYmxlIHVuZGVyIGxhdywgdGhlIGF1dGhvciBoYXZlIGRlZGljYXRlZCBhbGwKKyAqIGNvcHlyaWdodCBhbmQgcmVsYXRlZCBhbmQgbmVpZ2hib3JpbmcgcmlnaHRzIHRvIHRoaXMgc29mdHdhcmUgdG8KKyAqIHRoZSBwdWJsaWMgZG9tYWluIHdvcmxkd2lkZS4gVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCB3aXRob3V0CisgKiBhbnkgd2FycmFudHkuIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKyAqLworCisjaW5jbHVkZSAiUHl0aG9uLmgiCisKKyNpbmNsdWRlICJpbXBsL2JsYWtlMi5oIgorCitleHRlcm4gUHlUeXBlT2JqZWN0IFB5Qmxha2UyX0JMQUtFMmJUeXBlOworZXh0ZXJuIFB5VHlwZU9iamVjdCBQeUJsYWtlMl9CTEFLRTJzVHlwZTsKKworCitQeURvY19TVFJWQVIoYmxha2UybW9kX19kb2NfXywKKyJfYmxha2UyYiBwcm92aWRlcyBCTEFLRTJiIGZvciBoYXNobGliXG4iCispOworCisKK3N0YXRpYyBzdHJ1Y3QgUHlNZXRob2REZWYgYmxha2UybW9kX2Z1bmN0aW9uc1tdID0geworICAgIHtOVUxMLCBOVUxMfQorfTsKKworc3RhdGljIHN0cnVjdCBQeU1vZHVsZURlZiBibGFrZTJfbW9kdWxlID0geworICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwKKyAgICAiX2JsYWtlMiIsCisgICAgYmxha2UybW9kX19kb2NfXywKKyAgICAtMSwKKyAgICBibGFrZTJtb2RfZnVuY3Rpb25zLAorICAgIE5VTEwsCisgICAgTlVMTCwKKyAgICBOVUxMLAorICAgIE5VTEwKK307CisKKyNkZWZpbmUgQUREX0lOVChkLCBuYW1lLCB2YWx1ZSkgZG8geyBcCisgICAgUHlPYmplY3QgKnggPSBQeUxvbmdfRnJvbUxvbmcodmFsdWUpOyBcCisgICAgaWYgKCF4KSB7IFwKKyAgICAgICAgUHlfREVDUkVGKG0pOyBcCisgICAgICAgIHJldHVybiBOVUxMOyBcCisgICAgfSBcCisgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsIG5hbWUsIHgpIDwgMCkgeyBcCisgICAgICAgIFB5X0RFQ1JFRihtKTsgXAorICAgICAgICByZXR1cm4gTlVMTDsgXAorICAgIH0gXAorICAgIFB5X0RFQ1JFRih4KTsgXAorfSB3aGlsZSgwKQorCisKK1B5TU9ESU5JVF9GVU5DCitQeUluaXRfX2JsYWtlMih2b2lkKQoreworICAgIFB5T2JqZWN0ICptOworICAgIFB5T2JqZWN0ICpkOworCisgICAgbSA9IFB5TW9kdWxlX0NyZWF0ZSgmYmxha2UyX21vZHVsZSk7CisgICAgaWYgKG0gPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvKiBCTEFLRTJiICovCisgICAgUHlfVFlQRSgmUHlCbGFrZTJfQkxBS0UyYlR5cGUpID0gJlB5VHlwZV9UeXBlOworICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5Qmxha2UyX0JMQUtFMmJUeXBlKSA8IDApIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlfSU5DUkVGKCZQeUJsYWtlMl9CTEFLRTJiVHlwZSk7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJibGFrZTJiIiwgKFB5T2JqZWN0ICopJlB5Qmxha2UyX0JMQUtFMmJUeXBlKTsKKworICAgIGQgPSBQeUJsYWtlMl9CTEFLRTJiVHlwZS50cF9kaWN0OworICAgIEFERF9JTlQoZCwgIlNBTFRfU0laRSIsIEJMQUtFMkJfU0FMVEJZVEVTKTsKKyAgICBBRERfSU5UKGQsICJQRVJTT05fU0laRSIsIEJMQUtFMkJfUEVSU09OQUxCWVRFUyk7CisgICAgQUREX0lOVChkLCAiTUFYX0tFWV9TSVpFIiwgQkxBS0UyQl9LRVlCWVRFUyk7CisgICAgQUREX0lOVChkLCAiTUFYX0RJR0VTVF9TSVpFIiwgQkxBS0UyQl9PVVRCWVRFUyk7CisKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQkxBS0UyQl9TQUxUX1NJWkUiLCBCTEFLRTJCX1NBTFRCWVRFUyk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkJMQUtFMkJfUEVSU09OX1NJWkUiLCBCTEFLRTJCX1BFUlNPTkFMQllURVMpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJCTEFLRTJCX01BWF9LRVlfU0laRSIsIEJMQUtFMkJfS0VZQllURVMpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJCTEFLRTJCX01BWF9ESUdFU1RfU0laRSIsIEJMQUtFMkJfT1VUQllURVMpOworCisgICAgLyogQkxBS0UycyAqLworICAgIFB5X1RZUEUoJlB5Qmxha2UyX0JMQUtFMnNUeXBlKSA9ICZQeVR5cGVfVHlwZTsKKyAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeUJsYWtlMl9CTEFLRTJzVHlwZSkgPCAwKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5X0lOQ1JFRigmUHlCbGFrZTJfQkxBS0Uyc1R5cGUpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiYmxha2UycyIsIChQeU9iamVjdCAqKSZQeUJsYWtlMl9CTEFLRTJzVHlwZSk7CisKKyAgICBkID0gUHlCbGFrZTJfQkxBS0Uyc1R5cGUudHBfZGljdDsKKyAgICBBRERfSU5UKGQsICJTQUxUX1NJWkUiLCBCTEFLRTJTX1NBTFRCWVRFUyk7CisgICAgQUREX0lOVChkLCAiUEVSU09OX1NJWkUiLCBCTEFLRTJTX1BFUlNPTkFMQllURVMpOworICAgIEFERF9JTlQoZCwgIk1BWF9LRVlfU0laRSIsIEJMQUtFMlNfS0VZQllURVMpOworICAgIEFERF9JTlQoZCwgIk1BWF9ESUdFU1RfU0laRSIsIEJMQUtFMlNfT1VUQllURVMpOworCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkJMQUtFMlNfU0FMVF9TSVpFIiwgQkxBS0UyU19TQUxUQllURVMpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJCTEFLRTJTX1BFUlNPTl9TSVpFIiwgQkxBS0UyU19QRVJTT05BTEJZVEVTKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQkxBS0UyU19NQVhfS0VZX1NJWkUiLCBCTEFLRTJTX0tFWUJZVEVTKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQkxBS0UyU19NQVhfRElHRVNUX1NJWkUiLCBCTEFLRTJTX09VVEJZVEVTKTsKKworICAgIHJldHVybiBtOworfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fYmxha2UyL2JsYWtlMm5zLmggYi9Nb2R1bGVzL19ibGFrZTIvYmxha2UybnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41M2JjZThlCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fYmxha2UyL2JsYWtlMm5zLmgKQEAgLTAsMCArMSwzMiBAQAorLyogUHJlZml4IGFsbCBwdWJsaWMgYmxha2UyIHN5bWJvbHMgd2l0aCBQeUJsYWtlMl8KKyAqLworCisjaWZuZGVmIFB5X0JMQUtFMl9OUworI2RlZmluZSBQeV9CTEFLRTJfTlMKKworI2RlZmluZSBibGFrZTJiICAgICAgICAgICAgUHlCbGFrZTJfYmxha2UyYgorI2RlZmluZSBibGFrZTJiX2NvbXByZXNzICAgUHlCbGFrZTJfYmxha2UyYl9jb21wcmVzcworI2RlZmluZSBibGFrZTJiX2ZpbmFsICAgICAgUHlCbGFrZTJfYmxha2UyYl9maW5hbAorI2RlZmluZSBibGFrZTJiX2luaXQgICAgICAgUHlCbGFrZTJfYmxha2UyYl9pbml0CisjZGVmaW5lIGJsYWtlMmJfaW5pdF9rZXkgICBQeUJsYWtlMl9ibGFrZTJiX2luaXRfa2V5CisjZGVmaW5lIGJsYWtlMmJfaW5pdF9wYXJhbSBQeUJsYWtlMl9ibGFrZTJiX2luaXRfcGFyYW0KKyNkZWZpbmUgYmxha2UyYl91cGRhdGUgICAgIFB5Qmxha2UyX2JsYWtlMmJfdXBkYXRlCisjZGVmaW5lIGJsYWtlMmJwICAgICAgICAgICBQeUJsYWtlMl9ibGFrZTJicAorI2RlZmluZSBibGFrZTJicF9maW5hbCAgICAgUHlCbGFrZTJfYmxha2UyYnBfZmluYWwKKyNkZWZpbmUgYmxha2UyYnBfaW5pdCAgICAgIFB5Qmxha2UyX2JsYWtlMmJwX2luaXQKKyNkZWZpbmUgYmxha2UyYnBfaW5pdF9rZXkgIFB5Qmxha2UyX2JsYWtlMmJwX2luaXRfa2V5CisjZGVmaW5lIGJsYWtlMmJwX3VwZGF0ZSAgICBQeUJsYWtlMl9ibGFrZTJicF91cGRhdGUKKyNkZWZpbmUgYmxha2UycyAgICAgICAgICAgIFB5Qmxha2UyX2JsYWtlMnMKKyNkZWZpbmUgYmxha2Uyc19jb21wcmVzcyAgIFB5Qmxha2UyX2JsYWtlMnNfY29tcHJlc3MKKyNkZWZpbmUgYmxha2Uyc19maW5hbCAgICAgIFB5Qmxha2UyX2JsYWtlMnNfZmluYWwKKyNkZWZpbmUgYmxha2Uyc19pbml0ICAgICAgIFB5Qmxha2UyX2JsYWtlMnNfaW5pdAorI2RlZmluZSBibGFrZTJzX2luaXRfa2V5ICAgUHlCbGFrZTJfYmxha2Uyc19pbml0X2tleQorI2RlZmluZSBibGFrZTJzX2luaXRfcGFyYW0gUHlCbGFrZTJfYmxha2Uyc19pbml0X3BhcmFtCisjZGVmaW5lIGJsYWtlMnNfdXBkYXRlICAgICBQeUJsYWtlMl9ibGFrZTJzX3VwZGF0ZQorI2RlZmluZSBibGFrZTJzcCAgICAgICAgICAgUHlCbGFrZTJfYmxha2Uyc3AKKyNkZWZpbmUgYmxha2Uyc3BfZmluYWwgICAgIFB5Qmxha2UyX2JsYWtlMnNwX2ZpbmFsCisjZGVmaW5lIGJsYWtlMnNwX2luaXQgICAgICBQeUJsYWtlMl9ibGFrZTJzcF9pbml0CisjZGVmaW5lIGJsYWtlMnNwX2luaXRfa2V5ICBQeUJsYWtlMl9ibGFrZTJzcF9pbml0X2tleQorI2RlZmluZSBibGFrZTJzcF91cGRhdGUgICAgUHlCbGFrZTJfYmxha2Uyc3BfdXBkYXRlCisKKyNlbmRpZiAvKiBQeV9CTEFLRTJfTlMgKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2JsYWtlMi9ibGFrZTJzX2ltcGwuYyBiL01vZHVsZXMvX2JsYWtlMi9ibGFrZTJzX2ltcGwuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMWQyZTAyCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fYmxha2UyL2JsYWtlMnNfaW1wbC5jCkBAIC0wLDAgKzEsNDYwIEBACisvKgorICogV3JpdHRlbiBpbiAyMDEzIGJ5IERtaXRyeSBDaGVzdG55a2ggPGRtaXRyeUBjb2Rpbmdyb2JvdHMuY29tPgorICogTW9kaWZpZWQgZm9yIENQeXRob24gYnkgQ2hyaXN0aWFuIEhlaW1lcyA8Y2hyaXN0aWFuQHB5dGhvbi5vcmc+CisgKgorICogVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBhdXRob3IgaGF2ZSBkZWRpY2F0ZWQgYWxsCisgKiBjb3B5cmlnaHQgYW5kIHJlbGF0ZWQgYW5kIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGlzIHNvZnR3YXJlIHRvCisgKiB0aGUgcHVibGljIGRvbWFpbiB3b3JsZHdpZGUuIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgd2l0aG91dAorICogYW55IHdhcnJhbnR5LiBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCisgKi8KKworLyogV0FSTklORzogYXV0b2dlbmVyYXRlZCBmaWxlIQorICoKKyAqIFRoZSBibGFrZTJzX2ltcGwuYyBpcyBhdXRvZ2VuZXJhdGVkIGZyb20gYmxha2Uyc19pbXBsLmMuCisgKi8KKworI2luY2x1ZGUgIlB5dGhvbi5oIgorI2luY2x1ZGUgInB5c3RyaGV4LmgiCisjaWZkZWYgV0lUSF9USFJFQUQKKyNpbmNsdWRlICJweXRocmVhZC5oIgorI2VuZGlmCisKKyNpbmNsdWRlICIuLi9oYXNobGliLmgiCisjaW5jbHVkZSAiYmxha2UybnMuaCIKKworI2RlZmluZSBIQVZFX0JMQUtFMlMgMQorI2RlZmluZSBCTEFLRTJfTE9DQUxfSU5MSU5FKHR5cGUpIFB5X0xPQ0FMX0lOTElORSh0eXBlKQorCisjaW5jbHVkZSAiaW1wbC9ibGFrZTIuaCIKKyNpbmNsdWRlICJpbXBsL2JsYWtlMi1pbXBsLmgiIC8qIGZvciBzZWN1cmVfemVyb19tZW1vcnkoKSBhbmQgc3RvcmU0OCgpICovCisKKyNpZmRlZiBCTEFLRTJfVVNFX1NTRQorI2luY2x1ZGUgImltcGwvYmxha2Uycy5jIgorI2Vsc2UKKyNpbmNsdWRlICJpbXBsL2JsYWtlMnMtcmVmLmMiCisjZW5kaWYKKworCitleHRlcm4gUHlUeXBlT2JqZWN0IFB5Qmxha2UyX0JMQUtFMnNUeXBlOworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIGJsYWtlMnNfcGFyYW0gICAgcGFyYW07CisgICAgYmxha2Uyc19zdGF0ZSAgICBzdGF0ZTsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrOworI2VuZGlmCit9IEJMQUtFMnNPYmplY3Q7CisKKyNpbmNsdWRlICJjbGluaWMvYmxha2Uyc19pbXBsLmMuaCIKKworLypbY2xpbmljIGlucHV0XQorbW9kdWxlIF9ibGFrZTJzCitjbGFzcyBfYmxha2Uycy5ibGFrZTJzICJCTEFLRTJzT2JqZWN0ICoiICImUHlCbGFrZTJfQkxBS0Uyc1R5cGUiCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1lZGJmY2Y3NTU3YTY4NWE3XSovCisKKworc3RhdGljIEJMQUtFMnNPYmplY3QgKgorbmV3X0JMQUtFMnNPYmplY3QoUHlUeXBlT2JqZWN0ICp0eXBlKQoreworICAgIEJMQUtFMnNPYmplY3QgKnNlbGY7CisgICAgc2VsZiA9IChCTEFLRTJzT2JqZWN0ICopdHlwZS0+dHBfYWxsb2ModHlwZSwgMCk7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBpZiAoc2VsZiAhPSBOVUxMKSB7CisgICAgICAgIHNlbGYtPmxvY2sgPSBOVUxMOworICAgIH0KKyNlbmRpZgorICAgIHJldHVybiBzZWxmOworfQorCisvKltjbGluaWMgaW5wdXRdCitAY2xhc3NtZXRob2QKK19ibGFrZTJzLmJsYWtlMnMuX19uZXdfXyBhcyBweV9ibGFrZTJzX25ldworICAgIHN0cmluZyBhcyBkYXRhOiBvYmplY3QgPSBOVUxMCisgICAgKgorICAgIGRpZ2VzdF9zaXplOiBpbnQoY19kZWZhdWx0PSJCTEFLRTJTX09VVEJZVEVTIikgPSBfYmxha2Uycy5ibGFrZTJzLk1BWF9ESUdFU1RfU0laRQorICAgIGtleTogUHlfYnVmZmVyID0gTm9uZQorICAgIHNhbHQ6IFB5X2J1ZmZlciA9IE5vbmUKKyAgICBwZXJzb246IFB5X2J1ZmZlciA9IE5vbmUKKyAgICBmYW5vdXQ6IGludCA9IDEKKyAgICBkZXB0aDogaW50ID0gMQorICAgIGxlYWZfc2l6ZSBhcyBsZWFmX3NpemVfb2JqOiBvYmplY3QgPSBOVUxMCisgICAgbm9kZV9vZmZzZXQgYXMgbm9kZV9vZmZzZXRfb2JqOiBvYmplY3QgPSBOVUxMCisgICAgbm9kZV9kZXB0aDogaW50ID0gMAorICAgIGlubmVyX3NpemU6IGludCA9IDAKKyAgICBsYXN0X25vZGU6IGJvb2wgPSBGYWxzZQorCitSZXR1cm4gYSBuZXcgQkxBS0UycyBoYXNoIG9iamVjdC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK3B5X2JsYWtlMnNfbmV3X2ltcGwoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqZGF0YSwgaW50IGRpZ2VzdF9zaXplLAorICAgICAgICAgICAgICAgICAgICBQeV9idWZmZXIgKmtleSwgUHlfYnVmZmVyICpzYWx0LCBQeV9idWZmZXIgKnBlcnNvbiwKKyAgICAgICAgICAgICAgICAgICAgaW50IGZhbm91dCwgaW50IGRlcHRoLCBQeU9iamVjdCAqbGVhZl9zaXplX29iaiwKKyAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm5vZGVfb2Zmc2V0X29iaiwgaW50IG5vZGVfZGVwdGgsCisgICAgICAgICAgICAgICAgICAgIGludCBpbm5lcl9zaXplLCBpbnQgbGFzdF9ub2RlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWZlMDYwYjI1OGE4Y2JmYzYgaW5wdXQ9NDU4Y2ZkY2IzZDBkNDdmZl0qLworeworICAgIEJMQUtFMnNPYmplY3QgKnNlbGYgPSBOVUxMOworICAgIFB5X2J1ZmZlciBidWY7CisKKyAgICB1bnNpZ25lZCBsb25nIGxlYWZfc2l6ZSA9IDA7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIG5vZGVfb2Zmc2V0ID0gMDsKKworICAgIHNlbGYgPSBuZXdfQkxBS0Uyc09iamVjdCh0eXBlKTsKKyAgICBpZiAoc2VsZiA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgLyogWmVybyBwYXJhbWV0ZXIgYmxvY2suICovCisgICAgbWVtc2V0KCZzZWxmLT5wYXJhbSwgMCwgc2l6ZW9mKHNlbGYtPnBhcmFtKSk7CisKKyAgICAvKiBTZXQgZGlnZXN0IHNpemUuICovCisgICAgaWYgKGRpZ2VzdF9zaXplIDw9IDAgfHwgZGlnZXN0X3NpemUgPiBCTEFLRTJTX09VVEJZVEVTKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJkaWdlc3Rfc2l6ZSBtdXN0IGJlIGJldHdlZW4gMSBhbmQgJWQgYnl0ZXMiLAorICAgICAgICAgICAgICAgIEJMQUtFMlNfT1VUQllURVMpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBzZWxmLT5wYXJhbS5kaWdlc3RfbGVuZ3RoID0gZGlnZXN0X3NpemU7CisKKyAgICAvKiBTZXQgc2FsdCBwYXJhbWV0ZXIuICovCisgICAgaWYgKChzYWx0LT5vYmogIT0gTlVMTCkgJiYgc2FsdC0+bGVuKSB7CisgICAgICAgIGlmIChzYWx0LT5sZW4gPiBCTEFLRTJTX1NBTFRCWVRFUykgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgIm1heGltdW0gc2FsdCBsZW5ndGggaXMgJWQgYnl0ZXMiLAorICAgICAgICAgICAgICAgIEJMQUtFMlNfU0FMVEJZVEVTKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgbWVtY3B5KHNlbGYtPnBhcmFtLnNhbHQsIHNhbHQtPmJ1Ziwgc2FsdC0+bGVuKTsKKyAgICB9CisKKyAgICAvKiBTZXQgcGVyc29uYWxpemF0aW9uIHBhcmFtZXRlci4gKi8KKyAgICBpZiAoKHBlcnNvbi0+b2JqICE9IE5VTEwpICYmIHBlcnNvbi0+bGVuKSB7CisgICAgICAgIGlmIChwZXJzb24tPmxlbiA+IEJMQUtFMlNfUEVSU09OQUxCWVRFUykgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgIm1heGltdW0gcGVyc29uIGxlbmd0aCBpcyAlZCBieXRlcyIsCisgICAgICAgICAgICAgICAgQkxBS0UyU19QRVJTT05BTEJZVEVTKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgbWVtY3B5KHNlbGYtPnBhcmFtLnBlcnNvbmFsLCBwZXJzb24tPmJ1ZiwgcGVyc29uLT5sZW4pOworICAgIH0KKworICAgIC8qIFNldCB0cmVlIHBhcmFtZXRlcnMuICovCisgICAgaWYgKGZhbm91dCA8IDAgfHwgZmFub3V0ID4gMjU1KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJmYW5vdXQgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDI1NSIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBzZWxmLT5wYXJhbS5mYW5vdXQgPSAodWludDhfdClmYW5vdXQ7CisKKyAgICBpZiAoZGVwdGggPD0gMCB8fCBkZXB0aCA+IDI1NSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAiZGVwdGggbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDI1NSIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBzZWxmLT5wYXJhbS5kZXB0aCA9ICh1aW50OF90KWRlcHRoOworCisgICAgaWYgKGxlYWZfc2l6ZV9vYmogIT0gTlVMTCkgeworICAgICAgICBsZWFmX3NpemUgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmcobGVhZl9zaXplX29iaik7CisgICAgICAgIGlmIChsZWFmX3NpemUgPT0gKHVuc2lnbmVkIGxvbmcpIC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGxlYWZfc2l6ZSA+IDB4RkZGRkZGRkZVKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgImxlYWZfc2l6ZSBpcyB0b28gbGFyZ2UiKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisgICAgc2VsZi0+cGFyYW0ubGVhZl9sZW5ndGggPSAodW5zaWduZWQgaW50KWxlYWZfc2l6ZTsKKworICAgIGlmIChub2RlX29mZnNldF9vYmogIT0gTlVMTCkgeworICAgICAgICBub2RlX29mZnNldCA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcobm9kZV9vZmZzZXRfb2JqKTsKKyAgICAgICAgaWYgKG5vZGVfb2Zmc2V0ID09ICh1bnNpZ25lZCBsb25nIGxvbmcpIC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisjaWZkZWYgSEFWRV9CTEFLRTJTCisgICAgaWYgKG5vZGVfb2Zmc2V0ID4gMHhGRkZGRkZGRkZGRkZVTEwpIHsKKyAgICAgICAgLyogbWF4aW11bSAyKio0OCAtIDEgKi8KKyAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAibm9kZV9vZmZzZXQgaXMgdG9vIGxhcmdlIik7CisgICAgICAgICBnb3RvIGVycm9yOworICAgICB9CisgICAgc3RvcmU0OCgmKHNlbGYtPnBhcmFtLm5vZGVfb2Zmc2V0KSwgbm9kZV9vZmZzZXQpOworI2Vsc2UKKyAgICBzZWxmLT5wYXJhbS5ub2RlX29mZnNldCA9IG5vZGVfb2Zmc2V0OworI2VuZGlmCisKKyAgICBpZiAobm9kZV9kZXB0aCA8IDAgfHwgbm9kZV9kZXB0aCA+IDI1NSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAibm9kZV9kZXB0aCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMjU1Iik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIHNlbGYtPnBhcmFtLm5vZGVfZGVwdGggPSBub2RlX2RlcHRoOworCisgICAgaWYgKGlubmVyX3NpemUgPCAwIHx8IGlubmVyX3NpemUgPiBCTEFLRTJTX09VVEJZVEVTKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJpbm5lcl9zaXplIG11c3QgYmUgYmV0d2VlbiAwIGFuZCBpcyAlZCIsCisgICAgICAgICAgICAgICAgQkxBS0UyU19PVVRCWVRFUyk7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIHNlbGYtPnBhcmFtLmlubmVyX2xlbmd0aCA9IGlubmVyX3NpemU7CisKKyAgICAvKiBTZXQga2V5IGxlbmd0aC4gKi8KKyAgICBpZiAoKGtleS0+b2JqICE9IE5VTEwpICYmIGtleS0+bGVuKSB7CisgICAgICAgIGlmIChrZXktPmxlbiA+IEJMQUtFMlNfS0VZQllURVMpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJtYXhpbXVtIGtleSBsZW5ndGggaXMgJWQgYnl0ZXMiLAorICAgICAgICAgICAgICAgIEJMQUtFMlNfS0VZQllURVMpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBzZWxmLT5wYXJhbS5rZXlfbGVuZ3RoID0gKHVpbnQ4X3Qpa2V5LT5sZW47CisgICAgfQorCisgICAgLyogSW5pdGlhbGl6ZSBoYXNoIHN0YXRlLiAqLworICAgIGlmIChibGFrZTJzX2luaXRfcGFyYW0oJnNlbGYtPnN0YXRlLCAmc2VsZi0+cGFyYW0pIDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICJlcnJvciBpbml0aWFsaXppbmcgaGFzaCBzdGF0ZSIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIC8qIFNldCBsYXN0IG5vZGUgZmxhZyAobXVzdCBjb21lIGFmdGVyIGluaXRpYWxpemF0aW9uKS4gKi8KKyAgICBzZWxmLT5zdGF0ZS5sYXN0X25vZGUgPSBsYXN0X25vZGU7CisKKyAgICAvKiBQcm9jZXNzIGtleSBibG9jayBpZiBhbnkuICovCisgICAgaWYgKHNlbGYtPnBhcmFtLmtleV9sZW5ndGgpIHsKKyAgICAgICAgdWludDhfdCBibG9ja1tCTEFLRTJTX0JMT0NLQllURVNdOworICAgICAgICBtZW1zZXQoYmxvY2ssIDAsIHNpemVvZihibG9jaykpOworICAgICAgICBtZW1jcHkoYmxvY2ssIGtleS0+YnVmLCBrZXktPmxlbik7CisgICAgICAgIGJsYWtlMnNfdXBkYXRlKCZzZWxmLT5zdGF0ZSwgYmxvY2ssIHNpemVvZihibG9jaykpOworICAgICAgICBzZWN1cmVfemVyb19tZW1vcnkoYmxvY2ssIHNpemVvZihibG9jaykpOworICAgIH0KKworICAgIC8qIFByb2Nlc3MgaW5pdGlhbCBkYXRhIGlmIGFueS4gKi8KKyAgICBpZiAoZGF0YSAhPSBOVUxMKSB7CisgICAgICAgIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPUihkYXRhLCAmYnVmLCBnb3RvIGVycm9yKTsKKworICAgICAgICBpZiAoYnVmLmxlbiA+PSBIQVNITElCX0dJTF9NSU5TSVpFKSB7CisgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgICAgICBibGFrZTJzX3VwZGF0ZSgmc2VsZi0+c3RhdGUsIGJ1Zi5idWYsIGJ1Zi5sZW4pOworICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGJsYWtlMnNfdXBkYXRlKCZzZWxmLT5zdGF0ZSwgYnVmLmJ1ZiwgYnVmLmxlbik7CisgICAgICAgIH0KKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKKyAgICB9CisKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopc2VsZjsKKworICBlcnJvcjoKKyAgICBpZiAoc2VsZiAhPSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKKyAgICB9CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19ibGFrZTJzLmJsYWtlMnMuY29weQorCitSZXR1cm4gYSBjb3B5IG9mIHRoZSBoYXNoIG9iamVjdC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19ibGFrZTJzX2JsYWtlMnNfY29weV9pbXBsKEJMQUtFMnNPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NmM1YmFkYTQwNGI3YWVkNyBpbnB1dD1jODg1OGU4ODdhZTRhMDdhXSovCit7CisgICAgQkxBS0Uyc09iamVjdCAqY3B5OworCisgICAgaWYgKChjcHkgPSBuZXdfQkxBS0Uyc09iamVjdChQeV9UWVBFKHNlbGYpKSkgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBFTlRFUl9IQVNITElCKHNlbGYpOworICAgIGNweS0+cGFyYW0gPSBzZWxmLT5wYXJhbTsKKyAgICBjcHktPnN0YXRlID0gc2VsZi0+c3RhdGU7CisgICAgTEVBVkVfSEFTSExJQihzZWxmKTsKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopY3B5OworfQorCisvKltjbGluaWMgaW5wdXRdCitfYmxha2Uycy5ibGFrZTJzLnVwZGF0ZQorCisgICAgb2JqOiBvYmplY3QKKyAgICAvCisKK1VwZGF0ZSB0aGlzIGhhc2ggb2JqZWN0J3Mgc3RhdGUgd2l0aCB0aGUgcHJvdmlkZWQgc3RyaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2JsYWtlMnNfYmxha2Uyc191cGRhdGUoQkxBS0Uyc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKm9iaikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mZTg0MzhhMWQzY2VkZTg3IGlucHV0PTQ3YTQwOGI5YTNjYzA1YzVdKi8KK3sKKyAgICBQeV9idWZmZXIgYnVmOworCisgICAgR0VUX0JVRkZFUl9WSUVXX09SX0VSUk9VVChvYmosICZidWYpOworCisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBpZiAoc2VsZi0+bG9jayA9PSBOVUxMICYmIGJ1Zi5sZW4gPj0gSEFTSExJQl9HSUxfTUlOU0laRSkKKyAgICAgICAgc2VsZi0+bG9jayA9IFB5VGhyZWFkX2FsbG9jYXRlX2xvY2soKTsKKworICAgIGlmIChzZWxmLT5sb2NrICE9IE5VTEwpIHsKKyAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgUHlUaHJlYWRfYWNxdWlyZV9sb2NrKHNlbGYtPmxvY2ssIDEpOworICAgICAgIGJsYWtlMnNfdXBkYXRlKCZzZWxmLT5zdGF0ZSwgYnVmLmJ1ZiwgYnVmLmxlbik7CisgICAgICAgUHlUaHJlYWRfcmVsZWFzZV9sb2NrKHNlbGYtPmxvY2spOworICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfSBlbHNlIHsKKyAgICAgICAgYmxha2Uyc191cGRhdGUoJnNlbGYtPnN0YXRlLCBidWYuYnVmLCBidWYubGVuKTsKKyAgICB9CisjZWxzZQorICAgIGJsYWtlMnNfdXBkYXRlKCZzZWxmLT5zdGF0ZSwgYnVmLmJ1ZiwgYnVmLmxlbik7CisjZW5kaWYgLyogIVdJVEhfVEhSRUFEICovCisgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKKworICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICByZXR1cm4gUHlfTm9uZTsKK30KKworLypbY2xpbmljIGlucHV0XQorX2JsYWtlMnMuYmxha2Uycy5kaWdlc3QKKworUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgYmluYXJ5IGRhdGEuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYmxha2Uyc19ibGFrZTJzX2RpZ2VzdF9pbXBsKEJMQUtFMnNPYmplY3QgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODBlODFhNDhjNmY3OWNmOSBpbnB1dD1mZWI5YTIyMDEzNWJkZWJhXSovCit7CisgICAgdWludDhfdCBkaWdlc3RbQkxBS0UyU19PVVRCWVRFU107CisgICAgYmxha2Uyc19zdGF0ZSBzdGF0ZV9jcHk7CisKKyAgICBFTlRFUl9IQVNITElCKHNlbGYpOworICAgIHN0YXRlX2NweSA9IHNlbGYtPnN0YXRlOworICAgIGJsYWtlMnNfZmluYWwoJnN0YXRlX2NweSwgZGlnZXN0LCBzZWxmLT5wYXJhbS5kaWdlc3RfbGVuZ3RoKTsKKyAgICBMRUFWRV9IQVNITElCKHNlbGYpOworICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjb25zdCBjaGFyICopZGlnZXN0LAorICAgICAgICAgICAgc2VsZi0+cGFyYW0uZGlnZXN0X2xlbmd0aCk7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19ibGFrZTJzLmJsYWtlMnMuaGV4ZGlnZXN0CisKK1JldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIGRpZ2l0cy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19ibGFrZTJzX2JsYWtlMnNfaGV4ZGlnZXN0X2ltcGwoQkxBS0Uyc09iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYjZjNTAyOGMwYTNjMmU1IGlucHV0PTRlNDg3N2I4YmQ3YWVhOTFdKi8KK3sKKyAgICB1aW50OF90IGRpZ2VzdFtCTEFLRTJTX09VVEJZVEVTXTsKKyAgICBibGFrZTJzX3N0YXRlIHN0YXRlX2NweTsKKworICAgIEVOVEVSX0hBU0hMSUIoc2VsZik7CisgICAgc3RhdGVfY3B5ID0gc2VsZi0+c3RhdGU7CisgICAgYmxha2Uyc19maW5hbCgmc3RhdGVfY3B5LCBkaWdlc3QsIHNlbGYtPnBhcmFtLmRpZ2VzdF9sZW5ndGgpOworICAgIExFQVZFX0hBU0hMSUIoc2VsZik7CisgICAgcmV0dXJuIF9QeV9zdHJoZXgoKGNvbnN0IGNoYXIgKilkaWdlc3QsIHNlbGYtPnBhcmFtLmRpZ2VzdF9sZW5ndGgpOworfQorCisKK3N0YXRpYyBQeU1ldGhvZERlZiBweV9ibGFrZTJzX21ldGhvZHNbXSA9IHsKKyAgICBfQkxBS0UyU19CTEFLRTJTX0NPUFlfTUVUSE9EREVGCisgICAgX0JMQUtFMlNfQkxBS0UyU19ESUdFU1RfTUVUSE9EREVGCisgICAgX0JMQUtFMlNfQkxBS0UyU19IRVhESUdFU1RfTUVUSE9EREVGCisgICAgX0JMQUtFMlNfQkxBS0UyU19VUERBVEVfTUVUSE9EREVGCisgICAge05VTEwsIE5VTEx9Cit9OworCisKKworc3RhdGljIFB5T2JqZWN0ICoKK3B5X2JsYWtlMnNfZ2V0X25hbWUoQkxBS0Uyc09iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoImJsYWtlMnMiKTsKK30KKworCisKK3N0YXRpYyBQeU9iamVjdCAqCitweV9ibGFrZTJzX2dldF9ibG9ja19zaXplKEJMQUtFMnNPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhCTEFLRTJTX0JMT0NLQllURVMpOworfQorCisKKworc3RhdGljIFB5T2JqZWN0ICoKK3B5X2JsYWtlMnNfZ2V0X2RpZ2VzdF9zaXplKEJMQUtFMnNPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhzZWxmLT5wYXJhbS5kaWdlc3RfbGVuZ3RoKTsKK30KKworCitzdGF0aWMgUHlHZXRTZXREZWYgcHlfYmxha2Uyc19nZXRzZXR0ZXJzW10gPSB7CisgICAgeyJuYW1lIiwgKGdldHRlcilweV9ibGFrZTJzX2dldF9uYW1lLAorICAgICAgICBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgICB7ImJsb2NrX3NpemUiLCAoZ2V0dGVyKXB5X2JsYWtlMnNfZ2V0X2Jsb2NrX3NpemUsCisgICAgICAgIE5VTEwsIE5VTEwsIE5VTEx9LAorICAgIHsiZGlnZXN0X3NpemUiLCAoZ2V0dGVyKXB5X2JsYWtlMnNfZ2V0X2RpZ2VzdF9zaXplLAorICAgICAgICBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgICB7TlVMTH0KK307CisKKworc3RhdGljIHZvaWQKK3B5X2JsYWtlMnNfZGVhbGxvYyhQeU9iamVjdCAqc2VsZikKK3sKKyAgICBCTEFLRTJzT2JqZWN0ICpvYmogPSAoQkxBS0Uyc09iamVjdCAqKXNlbGY7CisKKyAgICAvKiBUcnkgbm90IHRvIGxlYXZlIHN0YXRlIGluIG1lbW9yeS4gKi8KKyAgICBzZWN1cmVfemVyb19tZW1vcnkoJm9iai0+cGFyYW0sIHNpemVvZihvYmotPnBhcmFtKSk7CisgICAgc2VjdXJlX3plcm9fbWVtb3J5KCZvYmotPnN0YXRlLCBzaXplb2Yob2JqLT5zdGF0ZSkpOworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgaWYgKG9iai0+bG9jaykgeworICAgICAgICBQeVRocmVhZF9mcmVlX2xvY2sob2JqLT5sb2NrKTsKKyAgICAgICAgb2JqLT5sb2NrID0gTlVMTDsKKyAgICB9CisjZW5kaWYKKyAgICBQeU9iamVjdF9EZWwoc2VsZik7Cit9CisKKworUHlUeXBlT2JqZWN0IFB5Qmxha2UyX0JMQUtFMnNUeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgICJfYmxha2UyLmJsYWtlMnMiLCAgICAgICAgLyogdHBfbmFtZSAgICAgICAgICAgICovCisgICAgc2l6ZW9mKEJMQUtFMnNPYmplY3QpLCAgICAvKiB0cF9zaXplICAgICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICAgICAgICAqLworICAgIHB5X2JsYWtlMnNfZGVhbGxvYywgICAgICAgLyogdHBfZGVhbGxvYyAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAgICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jb21wYXJlICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgICAgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAgICAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICAgICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAgICAgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAgICAgICAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgLyogdHBfZmxhZ3MgICAgICAgICAgICovCisgICAgcHlfYmxha2Uyc19uZXdfX2RvY19fLCAgICAvKiB0cF9kb2MgICAgICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgICAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAgICAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAgICAgICAgKi8KKyAgICBweV9ibGFrZTJzX21ldGhvZHMsICAgICAgIC8qIHRwX21ldGhvZHMgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAgICAgICAgICovCisgICAgcHlfYmxha2Uyc19nZXRzZXR0ZXJzLCAgICAvKiB0cF9nZXRzZXQgICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgICAgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAgICAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICAgICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICAgICAgICAgICAqLworICAgIHB5X2JsYWtlMnNfbmV3LCAgICAgICAgICAgLyogdHBfbmV3ICAgICAgICAgICAgICovCit9OwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fYmxha2UyL2NsaW5pYy9ibGFrZTJiX2ltcGwuYy5oIGIvTW9kdWxlcy9fYmxha2UyL2NsaW5pYy9ibGFrZTJiX2ltcGwuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxYzA3M2EKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19ibGFrZTIvY2xpbmljL2JsYWtlMmJfaW1wbC5jLmgKQEAgLTAsMCArMSwxMjUgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihweV9ibGFrZTJiX25ld19fZG9jX18sCisiYmxha2UyYihzdHJpbmc9Tm9uZSwgKiwgZGlnZXN0X3NpemU9X2JsYWtlMmIuYmxha2UyYi5NQVhfRElHRVNUX1NJWkUsXG4iCisiICAgICAgICBrZXk9Tm9uZSwgc2FsdD1Ob25lLCBwZXJzb249Tm9uZSwgZmFub3V0PTEsIGRlcHRoPTEsXG4iCisiICAgICAgICBsZWFmX3NpemU9Tm9uZSwgbm9kZV9vZmZzZXQ9Tm9uZSwgbm9kZV9kZXB0aD0wLCBpbm5lcl9zaXplPTAsXG4iCisiICAgICAgICBsYXN0X25vZGU9RmFsc2UpXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBuZXcgQkxBS0UyYiBoYXNoIG9iamVjdC4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3B5X2JsYWtlMmJfbmV3X2ltcGwoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqZGF0YSwgaW50IGRpZ2VzdF9zaXplLAorICAgICAgICAgICAgICAgICAgICBQeV9idWZmZXIgKmtleSwgUHlfYnVmZmVyICpzYWx0LCBQeV9idWZmZXIgKnBlcnNvbiwKKyAgICAgICAgICAgICAgICAgICAgaW50IGZhbm91dCwgaW50IGRlcHRoLCBQeU9iamVjdCAqbGVhZl9zaXplX29iaiwKKyAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm5vZGVfb2Zmc2V0X29iaiwgaW50IG5vZGVfZGVwdGgsCisgICAgICAgICAgICAgICAgICAgIGludCBpbm5lcl9zaXplLCBpbnQgbGFzdF9ub2RlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3B5X2JsYWtlMmJfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgImRpZ2VzdF9zaXplIiwgImtleSIsICJzYWx0IiwgInBlcnNvbiIsICJmYW5vdXQiLCAiZGVwdGgiLCAibGVhZl9zaXplIiwgIm5vZGVfb2Zmc2V0IiwgIm5vZGVfZGVwdGgiLCAiaW5uZXJfc2l6ZSIsICJsYXN0X25vZGUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8TyRpeSp5KnkqaWlPT2lpcDpibGFrZTJiIiwgX2tleXdvcmRzLCAwfTsKKyAgICBQeU9iamVjdCAqZGF0YSA9IE5VTEw7CisgICAgaW50IGRpZ2VzdF9zaXplID0gQkxBS0UyQl9PVVRCWVRFUzsKKyAgICBQeV9idWZmZXIga2V5ID0ge05VTEwsIE5VTEx9OworICAgIFB5X2J1ZmZlciBzYWx0ID0ge05VTEwsIE5VTEx9OworICAgIFB5X2J1ZmZlciBwZXJzb24gPSB7TlVMTCwgTlVMTH07CisgICAgaW50IGZhbm91dCA9IDE7CisgICAgaW50IGRlcHRoID0gMTsKKyAgICBQeU9iamVjdCAqbGVhZl9zaXplX29iaiA9IE5VTEw7CisgICAgUHlPYmplY3QgKm5vZGVfb2Zmc2V0X29iaiA9IE5VTEw7CisgICAgaW50IG5vZGVfZGVwdGggPSAwOworICAgIGludCBpbm5lcl9zaXplID0gMDsKKyAgICBpbnQgbGFzdF9ub2RlID0gMDsKKworICAgIGlmICghX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoYXJncywga3dhcmdzLCAmX3BhcnNlciwKKyAgICAgICAgJmRhdGEsICZkaWdlc3Rfc2l6ZSwgJmtleSwgJnNhbHQsICZwZXJzb24sICZmYW5vdXQsICZkZXB0aCwgJmxlYWZfc2l6ZV9vYmosICZub2RlX29mZnNldF9vYmosICZub2RlX2RlcHRoLCAmaW5uZXJfc2l6ZSwgJmxhc3Rfbm9kZSkpIHsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBweV9ibGFrZTJiX25ld19pbXBsKHR5cGUsIGRhdGEsIGRpZ2VzdF9zaXplLCAma2V5LCAmc2FsdCwgJnBlcnNvbiwgZmFub3V0LCBkZXB0aCwgbGVhZl9zaXplX29iaiwgbm9kZV9vZmZzZXRfb2JqLCBub2RlX2RlcHRoLCBpbm5lcl9zaXplLCBsYXN0X25vZGUpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGtleSAqLworICAgIGlmIChrZXkub2JqKSB7CisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgma2V5KTsKKyAgICB9CisgICAgLyogQ2xlYW51cCBmb3Igc2FsdCAqLworICAgIGlmIChzYWx0Lm9iaikgeworICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnNhbHQpOworICAgIH0KKyAgICAvKiBDbGVhbnVwIGZvciBwZXJzb24gKi8KKyAgICBpZiAocGVyc29uLm9iaikgeworICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBlcnNvbik7CisgICAgfQorCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9ibGFrZTJiX2JsYWtlMmJfY29weV9fZG9jX18sCisiY29weSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGNvcHkgb2YgdGhlIGhhc2ggb2JqZWN0LiIpOworCisjZGVmaW5lIF9CTEFLRTJCX0JMQUtFMkJfQ09QWV9NRVRIT0RERUYgICAgXAorICAgIHsiY29weSIsIChQeUNGdW5jdGlvbilfYmxha2UyYl9ibGFrZTJiX2NvcHksIE1FVEhfTk9BUkdTLCBfYmxha2UyYl9ibGFrZTJiX2NvcHlfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19ibGFrZTJiX2JsYWtlMmJfY29weV9pbXBsKEJMQUtFMmJPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2JsYWtlMmJfYmxha2UyYl9jb3B5KEJMQUtFMmJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9ibGFrZTJiX2JsYWtlMmJfY29weV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2JsYWtlMmJfYmxha2UyYl91cGRhdGVfX2RvY19fLAorInVwZGF0ZSgkc2VsZiwgb2JqLCAvKVxuIgorIi0tXG4iCisiXG4iCisiVXBkYXRlIHRoaXMgaGFzaCBvYmplY3RcJ3Mgc3RhdGUgd2l0aCB0aGUgcHJvdmlkZWQgc3RyaW5nLiIpOworCisjZGVmaW5lIF9CTEFLRTJCX0JMQUtFMkJfVVBEQVRFX01FVEhPRERFRiAgICBcCisgICAgeyJ1cGRhdGUiLCAoUHlDRnVuY3Rpb24pX2JsYWtlMmJfYmxha2UyYl91cGRhdGUsIE1FVEhfTywgX2JsYWtlMmJfYmxha2UyYl91cGRhdGVfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKF9ibGFrZTJiX2JsYWtlMmJfZGlnZXN0X19kb2NfXywKKyJkaWdlc3QoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBiaW5hcnkgZGF0YS4iKTsKKworI2RlZmluZSBfQkxBS0UyQl9CTEFLRTJCX0RJR0VTVF9NRVRIT0RERUYgICAgXAorICAgIHsiZGlnZXN0IiwgKFB5Q0Z1bmN0aW9uKV9ibGFrZTJiX2JsYWtlMmJfZGlnZXN0LCBNRVRIX05PQVJHUywgX2JsYWtlMmJfYmxha2UyYl9kaWdlc3RfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19ibGFrZTJiX2JsYWtlMmJfZGlnZXN0X2ltcGwoQkxBS0UyYk9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfYmxha2UyYl9ibGFrZTJiX2RpZ2VzdChCTEFLRTJiT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfYmxha2UyYl9ibGFrZTJiX2RpZ2VzdF9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2JsYWtlMmJfYmxha2UyYl9oZXhkaWdlc3RfX2RvY19fLAorImhleGRpZ2VzdCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIGRpZ2l0cy4iKTsKKworI2RlZmluZSBfQkxBS0UyQl9CTEFLRTJCX0hFWERJR0VTVF9NRVRIT0RERUYgICAgXAorICAgIHsiaGV4ZGlnZXN0IiwgKFB5Q0Z1bmN0aW9uKV9ibGFrZTJiX2JsYWtlMmJfaGV4ZGlnZXN0LCBNRVRIX05PQVJHUywgX2JsYWtlMmJfYmxha2UyYl9oZXhkaWdlc3RfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19ibGFrZTJiX2JsYWtlMmJfaGV4ZGlnZXN0X2ltcGwoQkxBS0UyYk9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfYmxha2UyYl9ibGFrZTJiX2hleGRpZ2VzdChCTEFLRTJiT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfYmxha2UyYl9ibGFrZTJiX2hleGRpZ2VzdF9pbXBsKHNlbGYpOworfQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTUzNWE1NDg1MmM5OGU1MWMgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fYmxha2UyL2NsaW5pYy9ibGFrZTJzX2ltcGwuYy5oIGIvTW9kdWxlcy9fYmxha2UyL2NsaW5pYy9ibGFrZTJzX2ltcGwuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhOTA4ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19ibGFrZTIvY2xpbmljL2JsYWtlMnNfaW1wbC5jLmgKQEAgLTAsMCArMSwxMjUgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihweV9ibGFrZTJzX25ld19fZG9jX18sCisiYmxha2UycyhzdHJpbmc9Tm9uZSwgKiwgZGlnZXN0X3NpemU9X2JsYWtlMnMuYmxha2Uycy5NQVhfRElHRVNUX1NJWkUsXG4iCisiICAgICAgICBrZXk9Tm9uZSwgc2FsdD1Ob25lLCBwZXJzb249Tm9uZSwgZmFub3V0PTEsIGRlcHRoPTEsXG4iCisiICAgICAgICBsZWFmX3NpemU9Tm9uZSwgbm9kZV9vZmZzZXQ9Tm9uZSwgbm9kZV9kZXB0aD0wLCBpbm5lcl9zaXplPTAsXG4iCisiICAgICAgICBsYXN0X25vZGU9RmFsc2UpXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBuZXcgQkxBS0UycyBoYXNoIG9iamVjdC4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3B5X2JsYWtlMnNfbmV3X2ltcGwoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqZGF0YSwgaW50IGRpZ2VzdF9zaXplLAorICAgICAgICAgICAgICAgICAgICBQeV9idWZmZXIgKmtleSwgUHlfYnVmZmVyICpzYWx0LCBQeV9idWZmZXIgKnBlcnNvbiwKKyAgICAgICAgICAgICAgICAgICAgaW50IGZhbm91dCwgaW50IGRlcHRoLCBQeU9iamVjdCAqbGVhZl9zaXplX29iaiwKKyAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm5vZGVfb2Zmc2V0X29iaiwgaW50IG5vZGVfZGVwdGgsCisgICAgICAgICAgICAgICAgICAgIGludCBpbm5lcl9zaXplLCBpbnQgbGFzdF9ub2RlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3B5X2JsYWtlMnNfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgImRpZ2VzdF9zaXplIiwgImtleSIsICJzYWx0IiwgInBlcnNvbiIsICJmYW5vdXQiLCAiZGVwdGgiLCAibGVhZl9zaXplIiwgIm5vZGVfb2Zmc2V0IiwgIm5vZGVfZGVwdGgiLCAiaW5uZXJfc2l6ZSIsICJsYXN0X25vZGUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8TyRpeSp5KnkqaWlPT2lpcDpibGFrZTJzIiwgX2tleXdvcmRzLCAwfTsKKyAgICBQeU9iamVjdCAqZGF0YSA9IE5VTEw7CisgICAgaW50IGRpZ2VzdF9zaXplID0gQkxBS0UyU19PVVRCWVRFUzsKKyAgICBQeV9idWZmZXIga2V5ID0ge05VTEwsIE5VTEx9OworICAgIFB5X2J1ZmZlciBzYWx0ID0ge05VTEwsIE5VTEx9OworICAgIFB5X2J1ZmZlciBwZXJzb24gPSB7TlVMTCwgTlVMTH07CisgICAgaW50IGZhbm91dCA9IDE7CisgICAgaW50IGRlcHRoID0gMTsKKyAgICBQeU9iamVjdCAqbGVhZl9zaXplX29iaiA9IE5VTEw7CisgICAgUHlPYmplY3QgKm5vZGVfb2Zmc2V0X29iaiA9IE5VTEw7CisgICAgaW50IG5vZGVfZGVwdGggPSAwOworICAgIGludCBpbm5lcl9zaXplID0gMDsKKyAgICBpbnQgbGFzdF9ub2RlID0gMDsKKworICAgIGlmICghX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoYXJncywga3dhcmdzLCAmX3BhcnNlciwKKyAgICAgICAgJmRhdGEsICZkaWdlc3Rfc2l6ZSwgJmtleSwgJnNhbHQsICZwZXJzb24sICZmYW5vdXQsICZkZXB0aCwgJmxlYWZfc2l6ZV9vYmosICZub2RlX29mZnNldF9vYmosICZub2RlX2RlcHRoLCAmaW5uZXJfc2l6ZSwgJmxhc3Rfbm9kZSkpIHsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBweV9ibGFrZTJzX25ld19pbXBsKHR5cGUsIGRhdGEsIGRpZ2VzdF9zaXplLCAma2V5LCAmc2FsdCwgJnBlcnNvbiwgZmFub3V0LCBkZXB0aCwgbGVhZl9zaXplX29iaiwgbm9kZV9vZmZzZXRfb2JqLCBub2RlX2RlcHRoLCBpbm5lcl9zaXplLCBsYXN0X25vZGUpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGtleSAqLworICAgIGlmIChrZXkub2JqKSB7CisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgma2V5KTsKKyAgICB9CisgICAgLyogQ2xlYW51cCBmb3Igc2FsdCAqLworICAgIGlmIChzYWx0Lm9iaikgeworICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnNhbHQpOworICAgIH0KKyAgICAvKiBDbGVhbnVwIGZvciBwZXJzb24gKi8KKyAgICBpZiAocGVyc29uLm9iaikgeworICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBlcnNvbik7CisgICAgfQorCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9ibGFrZTJzX2JsYWtlMnNfY29weV9fZG9jX18sCisiY29weSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGNvcHkgb2YgdGhlIGhhc2ggb2JqZWN0LiIpOworCisjZGVmaW5lIF9CTEFLRTJTX0JMQUtFMlNfQ09QWV9NRVRIT0RERUYgICAgXAorICAgIHsiY29weSIsIChQeUNGdW5jdGlvbilfYmxha2Uyc19ibGFrZTJzX2NvcHksIE1FVEhfTk9BUkdTLCBfYmxha2Uyc19ibGFrZTJzX2NvcHlfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19ibGFrZTJzX2JsYWtlMnNfY29weV9pbXBsKEJMQUtFMnNPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2JsYWtlMnNfYmxha2Uyc19jb3B5KEJMQUtFMnNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9ibGFrZTJzX2JsYWtlMnNfY29weV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2JsYWtlMnNfYmxha2Uyc191cGRhdGVfX2RvY19fLAorInVwZGF0ZSgkc2VsZiwgb2JqLCAvKVxuIgorIi0tXG4iCisiXG4iCisiVXBkYXRlIHRoaXMgaGFzaCBvYmplY3RcJ3Mgc3RhdGUgd2l0aCB0aGUgcHJvdmlkZWQgc3RyaW5nLiIpOworCisjZGVmaW5lIF9CTEFLRTJTX0JMQUtFMlNfVVBEQVRFX01FVEhPRERFRiAgICBcCisgICAgeyJ1cGRhdGUiLCAoUHlDRnVuY3Rpb24pX2JsYWtlMnNfYmxha2Uyc191cGRhdGUsIE1FVEhfTywgX2JsYWtlMnNfYmxha2Uyc191cGRhdGVfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKF9ibGFrZTJzX2JsYWtlMnNfZGlnZXN0X19kb2NfXywKKyJkaWdlc3QoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBiaW5hcnkgZGF0YS4iKTsKKworI2RlZmluZSBfQkxBS0UyU19CTEFLRTJTX0RJR0VTVF9NRVRIT0RERUYgICAgXAorICAgIHsiZGlnZXN0IiwgKFB5Q0Z1bmN0aW9uKV9ibGFrZTJzX2JsYWtlMnNfZGlnZXN0LCBNRVRIX05PQVJHUywgX2JsYWtlMnNfYmxha2Uyc19kaWdlc3RfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19ibGFrZTJzX2JsYWtlMnNfZGlnZXN0X2ltcGwoQkxBS0Uyc09iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfYmxha2Uyc19ibGFrZTJzX2RpZ2VzdChCTEFLRTJzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfYmxha2Uyc19ibGFrZTJzX2RpZ2VzdF9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2JsYWtlMnNfYmxha2Uyc19oZXhkaWdlc3RfX2RvY19fLAorImhleGRpZ2VzdCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIGRpZ2l0cy4iKTsKKworI2RlZmluZSBfQkxBS0UyU19CTEFLRTJTX0hFWERJR0VTVF9NRVRIT0RERUYgICAgXAorICAgIHsiaGV4ZGlnZXN0IiwgKFB5Q0Z1bmN0aW9uKV9ibGFrZTJzX2JsYWtlMnNfaGV4ZGlnZXN0LCBNRVRIX05PQVJHUywgX2JsYWtlMnNfYmxha2Uyc19oZXhkaWdlc3RfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19ibGFrZTJzX2JsYWtlMnNfaGV4ZGlnZXN0X2ltcGwoQkxBS0Uyc09iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfYmxha2Uyc19ibGFrZTJzX2hleGRpZ2VzdChCTEFLRTJzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfYmxha2Uyc19ibGFrZTJzX2hleGRpZ2VzdF9pbXBsKHNlbGYpOworfQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTUzNWVhNzkwM2Y5Y2NmNzYgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2UyLWNvbmZpZy5oIGIvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2UyLWNvbmZpZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwNDU1YjEKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTItY29uZmlnLmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAgIEJMQUtFMiByZWZlcmVuY2Ugc291cmNlIGNvZGUgcGFja2FnZSAtIG9wdGltaXplZCBDIGltcGxlbWVudGF0aW9ucworCisgICBDb3B5cmlnaHQgMjAxMiwgU2FtdWVsIE5ldmVzIDxzbmV2ZXNAZGVpLnVjLnB0Pi4gIFlvdSBtYXkgdXNlIHRoaXMgdW5kZXIgdGhlCisgICB0ZXJtcyBvZiB0aGUgQ0MwLCB0aGUgT3BlblNTTCBMaWNlbmNlLCBvciB0aGUgQXBhY2hlIFB1YmxpYyBMaWNlbnNlIDIuMCwgYXQKKyAgIHlvdXIgb3B0aW9uLiAgVGhlIHRlcm1zIG9mIHRoZXNlIGxpY2Vuc2VzIGNhbiBiZSBmb3VuZCBhdDoKKworICAgLSBDQzAgMS4wIFVuaXZlcnNhbCA6IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMAorICAgLSBPcGVuU1NMIGxpY2Vuc2UgICA6IGh0dHBzOi8vd3d3Lm9wZW5zc2wub3JnL3NvdXJjZS9saWNlbnNlLmh0bWwKKyAgIC0gQXBhY2hlIDIuMCAgICAgICAgOiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworICAgTW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgQkxBS0UyIGhhc2ggZnVuY3Rpb24gY2FuIGJlIGZvdW5kIGF0CisgICBodHRwczovL2JsYWtlMi5uZXQuCisqLworI3ByYWdtYSBvbmNlCisjaWZuZGVmIF9fQkxBS0UyX0NPTkZJR19IX18KKyNkZWZpbmUgX19CTEFLRTJfQ09ORklHX0hfXworCisvKiBUaGVzZSBkb24ndCB3b3JrIGV2ZXJ5d2hlcmUgKi8KKyNpZiBkZWZpbmVkKF9fU1NFMl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19hbWQ2NF9fKQorI2RlZmluZSBIQVZFX1NTRTIKKyNlbmRpZgorCisjaWYgZGVmaW5lZChfX1NTU0UzX18pCisjZGVmaW5lIEhBVkVfU1NTRTMKKyNlbmRpZgorCisjaWYgZGVmaW5lZChfX1NTRTRfMV9fKQorI2RlZmluZSBIQVZFX1NTRTQxCisjZW5kaWYKKworI2lmIGRlZmluZWQoX19BVlhfXykKKyNkZWZpbmUgSEFWRV9BVlgKKyNlbmRpZgorCisjaWYgZGVmaW5lZChfX1hPUF9fKQorI2RlZmluZSBIQVZFX1hPUAorI2VuZGlmCisKKworI2lmZGVmIEhBVkVfQVZYMgorI2lmbmRlZiBIQVZFX0FWWAorI2RlZmluZSBIQVZFX0FWWAorI2VuZGlmCisjZW5kaWYKKworI2lmZGVmIEhBVkVfWE9QCisjaWZuZGVmIEhBVkVfQVZYCisjZGVmaW5lIEhBVkVfQVZYCisjZW5kaWYKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9BVlgKKyNpZm5kZWYgSEFWRV9TU0U0MQorI2RlZmluZSBIQVZFX1NTRTQxCisjZW5kaWYKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9TU0U0MQorI2lmbmRlZiBIQVZFX1NTU0UzCisjZGVmaW5lIEhBVkVfU1NTRTMKKyNlbmRpZgorI2VuZGlmCisKKyNpZmRlZiBIQVZFX1NTU0UzCisjZGVmaW5lIEhBVkVfU1NFMgorI2VuZGlmCisKKyNpZiAhZGVmaW5lZChIQVZFX1NTRTIpCisjZXJyb3IgIlRoaXMgY29kZSByZXF1aXJlcyBhdCBsZWFzdCBTU0UyLiIKKyNlbmRpZgorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2UyLWltcGwuaCBiL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMi1pbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmJlM2MwZgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMi1pbXBsLmgKQEAgLTAsMCArMSwxMzkgQEAKKy8qCisgICBCTEFLRTIgcmVmZXJlbmNlIHNvdXJjZSBjb2RlIHBhY2thZ2UgLSBvcHRpbWl6ZWQgQyBpbXBsZW1lbnRhdGlvbnMKKyAgCisgICBDb3B5cmlnaHQgMjAxMiwgU2FtdWVsIE5ldmVzIDxzbmV2ZXNAZGVpLnVjLnB0Pi4gIFlvdSBtYXkgdXNlIHRoaXMgdW5kZXIgdGhlCisgICB0ZXJtcyBvZiB0aGUgQ0MwLCB0aGUgT3BlblNTTCBMaWNlbmNlLCBvciB0aGUgQXBhY2hlIFB1YmxpYyBMaWNlbnNlIDIuMCwgYXQKKyAgIHlvdXIgb3B0aW9uLiAgVGhlIHRlcm1zIG9mIHRoZXNlIGxpY2Vuc2VzIGNhbiBiZSBmb3VuZCBhdDoKKyAgCisgICAtIENDMCAxLjAgVW5pdmVyc2FsIDogaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wCisgICAtIE9wZW5TU0wgbGljZW5zZSAgIDogaHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvc291cmNlL2xpY2Vuc2UuaHRtbAorICAgLSBBcGFjaGUgMi4wICAgICAgICA6IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAKKyAgIE1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIEJMQUtFMiBoYXNoIGZ1bmN0aW9uIGNhbiBiZSBmb3VuZCBhdAorICAgaHR0cHM6Ly9ibGFrZTIubmV0LgorKi8KKyNwcmFnbWEgb25jZQorI2lmbmRlZiBfX0JMQUtFMl9JTVBMX0hfXworI2RlZmluZSBfX0JMQUtFMl9JTVBMX0hfXworCisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUodWludDMyX3QpIGxvYWQzMiggY29uc3Qgdm9pZCAqc3JjICkKK3sKKyNpZiBkZWZpbmVkKE5BVElWRV9MSVRUTEVfRU5ESUFOKQorICB1aW50MzJfdCB3OworICBtZW1jcHkoJncsIHNyYywgc2l6ZW9mIHcpOworICByZXR1cm4gdzsKKyNlbHNlCisgIGNvbnN0IHVpbnQ4X3QgKnAgPSAoIGNvbnN0IHVpbnQ4X3QgKiApc3JjOworICB1aW50MzJfdCB3ID0gKnArKzsKKyAgdyB8PSAoIHVpbnQzMl90ICkoICpwKysgKSA8PCAgODsKKyAgdyB8PSAoIHVpbnQzMl90ICkoICpwKysgKSA8PCAxNjsKKyAgdyB8PSAoIHVpbnQzMl90ICkoICpwKysgKSA8PCAyNDsKKyAgcmV0dXJuIHc7CisjZW5kaWYKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORSh1aW50NjRfdCkgbG9hZDY0KCBjb25zdCB2b2lkICpzcmMgKQoreworI2lmIGRlZmluZWQoTkFUSVZFX0xJVFRMRV9FTkRJQU4pCisgIHVpbnQ2NF90IHc7CisgIG1lbWNweSgmdywgc3JjLCBzaXplb2Ygdyk7CisgIHJldHVybiB3OworI2Vsc2UKKyAgY29uc3QgdWludDhfdCAqcCA9ICggY29uc3QgdWludDhfdCAqIClzcmM7CisgIHVpbnQ2NF90IHcgPSAqcCsrOworICB3IHw9ICggdWludDY0X3QgKSggKnArKyApIDw8ICA4OworICB3IHw9ICggdWludDY0X3QgKSggKnArKyApIDw8IDE2OworICB3IHw9ICggdWludDY0X3QgKSggKnArKyApIDw8IDI0OworICB3IHw9ICggdWludDY0X3QgKSggKnArKyApIDw8IDMyOworICB3IHw9ICggdWludDY0X3QgKSggKnArKyApIDw8IDQwOworICB3IHw9ICggdWludDY0X3QgKSggKnArKyApIDw8IDQ4OworICB3IHw9ICggdWludDY0X3QgKSggKnArKyApIDw8IDU2OworICByZXR1cm4gdzsKKyNlbmRpZgorfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKHZvaWQpIHN0b3JlMzIoIHZvaWQgKmRzdCwgdWludDMyX3QgdyApCit7CisjaWYgZGVmaW5lZChOQVRJVkVfTElUVExFX0VORElBTikKKyAgbWVtY3B5KGRzdCwgJncsIHNpemVvZiB3KTsKKyNlbHNlCisgIHVpbnQ4X3QgKnAgPSAoIHVpbnQ4X3QgKiApZHN0OworICAqcCsrID0gKCB1aW50OF90ICl3OyB3ID4+PSA4OworICAqcCsrID0gKCB1aW50OF90ICl3OyB3ID4+PSA4OworICAqcCsrID0gKCB1aW50OF90ICl3OyB3ID4+PSA4OworICAqcCsrID0gKCB1aW50OF90ICl3OworI2VuZGlmCit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUodm9pZCkgc3RvcmU2NCggdm9pZCAqZHN0LCB1aW50NjRfdCB3ICkKK3sKKyNpZiBkZWZpbmVkKE5BVElWRV9MSVRUTEVfRU5ESUFOKQorICBtZW1jcHkoZHN0LCAmdywgc2l6ZW9mIHcpOworI2Vsc2UKKyAgdWludDhfdCAqcCA9ICggdWludDhfdCAqIClkc3Q7CisgICpwKysgPSAoIHVpbnQ4X3QgKXc7IHcgPj49IDg7CisgICpwKysgPSAoIHVpbnQ4X3QgKXc7IHcgPj49IDg7CisgICpwKysgPSAoIHVpbnQ4X3QgKXc7IHcgPj49IDg7CisgICpwKysgPSAoIHVpbnQ4X3QgKXc7IHcgPj49IDg7CisgICpwKysgPSAoIHVpbnQ4X3QgKXc7IHcgPj49IDg7CisgICpwKysgPSAoIHVpbnQ4X3QgKXc7IHcgPj49IDg7CisgICpwKysgPSAoIHVpbnQ4X3QgKXc7IHcgPj49IDg7CisgICpwKysgPSAoIHVpbnQ4X3QgKXc7CisjZW5kaWYKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORSh1aW50NjRfdCkgbG9hZDQ4KCBjb25zdCB2b2lkICpzcmMgKQoreworICBjb25zdCB1aW50OF90ICpwID0gKCBjb25zdCB1aW50OF90ICogKXNyYzsKKyAgdWludDY0X3QgdyA9ICpwKys7CisgIHcgfD0gKCB1aW50NjRfdCApKCAqcCsrICkgPDwgIDg7CisgIHcgfD0gKCB1aW50NjRfdCApKCAqcCsrICkgPDwgMTY7CisgIHcgfD0gKCB1aW50NjRfdCApKCAqcCsrICkgPDwgMjQ7CisgIHcgfD0gKCB1aW50NjRfdCApKCAqcCsrICkgPDwgMzI7CisgIHcgfD0gKCB1aW50NjRfdCApKCAqcCsrICkgPDwgNDA7CisgIHJldHVybiB3OworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKHZvaWQpIHN0b3JlNDgoIHZvaWQgKmRzdCwgdWludDY0X3QgdyApCit7CisgIHVpbnQ4X3QgKnAgPSAoIHVpbnQ4X3QgKiApZHN0OworICAqcCsrID0gKCB1aW50OF90ICl3OyB3ID4+PSA4OworICAqcCsrID0gKCB1aW50OF90ICl3OyB3ID4+PSA4OworICAqcCsrID0gKCB1aW50OF90ICl3OyB3ID4+PSA4OworICAqcCsrID0gKCB1aW50OF90ICl3OyB3ID4+PSA4OworICAqcCsrID0gKCB1aW50OF90ICl3OyB3ID4+PSA4OworICAqcCsrID0gKCB1aW50OF90ICl3OworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKHVpbnQzMl90KSByb3RsMzIoIGNvbnN0IHVpbnQzMl90IHcsIGNvbnN0IHVuc2lnbmVkIGMgKQoreworICByZXR1cm4gKCB3IDw8IGMgKSB8ICggdyA+PiAoIDMyIC0gYyApICk7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUodWludDY0X3QpIHJvdGw2NCggY29uc3QgdWludDY0X3QgdywgY29uc3QgdW5zaWduZWQgYyApCit7CisgIHJldHVybiAoIHcgPDwgYyApIHwgKCB3ID4+ICggNjQgLSBjICkgKTsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORSh1aW50MzJfdCkgcm90cjMyKCBjb25zdCB1aW50MzJfdCB3LCBjb25zdCB1bnNpZ25lZCBjICkKK3sKKyAgcmV0dXJuICggdyA+PiBjICkgfCAoIHcgPDwgKCAzMiAtIGMgKSApOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKHVpbnQ2NF90KSByb3RyNjQoIGNvbnN0IHVpbnQ2NF90IHcsIGNvbnN0IHVuc2lnbmVkIGMgKQoreworICByZXR1cm4gKCB3ID4+IGMgKSB8ICggdyA8PCAoIDY0IC0gYyApICk7Cit9CisKKy8qIHByZXZlbnRzIGNvbXBpbGVyIG9wdGltaXppbmcgb3V0IG1lbXNldCgpICovCitCTEFLRTJfTE9DQUxfSU5MSU5FKHZvaWQpIHNlY3VyZV96ZXJvX21lbW9yeSh2b2lkICp2LCBzaXplX3QgbikKK3sKKyAgc3RhdGljIHZvaWQgKigqY29uc3Qgdm9sYXRpbGUgbWVtc2V0X3YpKHZvaWQgKiwgaW50LCBzaXplX3QpID0gJm1lbXNldDsKKyAgbWVtc2V0X3YodiwgMCwgbik7Cit9CisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTIuaCBiL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhOWZkZjQKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTIuaApAQCAtMCwwICsxLDE2MSBAQAorLyoKKyAgIEJMQUtFMiByZWZlcmVuY2Ugc291cmNlIGNvZGUgcGFja2FnZSAtIHJlZmVyZW5jZSBDIGltcGxlbWVudGF0aW9ucworICAKKyAgIENvcHlyaWdodCAyMDEyLCBTYW11ZWwgTmV2ZXMgPHNuZXZlc0BkZWkudWMucHQ+LiAgWW91IG1heSB1c2UgdGhpcyB1bmRlciB0aGUKKyAgIHRlcm1zIG9mIHRoZSBDQzAsIHRoZSBPcGVuU1NMIExpY2VuY2UsIG9yIHRoZSBBcGFjaGUgUHVibGljIExpY2Vuc2UgMi4wLCBhdAorICAgeW91ciBvcHRpb24uICBUaGUgdGVybXMgb2YgdGhlc2UgbGljZW5zZXMgY2FuIGJlIGZvdW5kIGF0OgorICAKKyAgIC0gQ0MwIDEuMCBVbml2ZXJzYWwgOiBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAKKyAgIC0gT3BlblNTTCBsaWNlbnNlICAgOiBodHRwczovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2UvbGljZW5zZS5odG1sCisgICAtIEFwYWNoZSAyLjAgICAgICAgIDogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgIAorICAgTW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgQkxBS0UyIGhhc2ggZnVuY3Rpb24gY2FuIGJlIGZvdW5kIGF0CisgICBodHRwczovL2JsYWtlMi5uZXQuCisqLworI3ByYWdtYSBvbmNlCisjaWZuZGVmIF9fQkxBS0UyX0hfXworI2RlZmluZSBfX0JMQUtFMl9IX18KKworI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorCisjaWZkZWYgQkxBS0UyX05PX0lOTElORQorI2RlZmluZSBCTEFLRTJfTE9DQUxfSU5MSU5FKHR5cGUpIHN0YXRpYyB0eXBlCisjZW5kaWYKKworI2lmbmRlZiBCTEFLRTJfTE9DQUxfSU5MSU5FCisjZGVmaW5lIEJMQUtFMl9MT0NBTF9JTkxJTkUodHlwZSkgc3RhdGljIGlubGluZSB0eXBlCisjZW5kaWYKKworI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisgIGVudW0gYmxha2Uyc19jb25zdGFudAorICB7CisgICAgQkxBS0UyU19CTE9DS0JZVEVTID0gNjQsCisgICAgQkxBS0UyU19PVVRCWVRFUyAgID0gMzIsCisgICAgQkxBS0UyU19LRVlCWVRFUyAgID0gMzIsCisgICAgQkxBS0UyU19TQUxUQllURVMgID0gOCwKKyAgICBCTEFLRTJTX1BFUlNPTkFMQllURVMgPSA4CisgIH07CisKKyAgZW51bSBibGFrZTJiX2NvbnN0YW50CisgIHsKKyAgICBCTEFLRTJCX0JMT0NLQllURVMgPSAxMjgsCisgICAgQkxBS0UyQl9PVVRCWVRFUyAgID0gNjQsCisgICAgQkxBS0UyQl9LRVlCWVRFUyAgID0gNjQsCisgICAgQkxBS0UyQl9TQUxUQllURVMgID0gMTYsCisgICAgQkxBS0UyQl9QRVJTT05BTEJZVEVTID0gMTYKKyAgfTsKKworICB0eXBlZGVmIHN0cnVjdCBfX2JsYWtlMnNfc3RhdGUKKyAgeworICAgIHVpbnQzMl90IGhbOF07CisgICAgdWludDMyX3QgdFsyXTsKKyAgICB1aW50MzJfdCBmWzJdOworICAgIHVpbnQ4X3QgIGJ1ZlsyICogQkxBS0UyU19CTE9DS0JZVEVTXTsKKyAgICBzaXplX3QgICBidWZsZW47CisgICAgdWludDhfdCAgbGFzdF9ub2RlOworICB9IGJsYWtlMnNfc3RhdGU7CisKKyAgdHlwZWRlZiBzdHJ1Y3QgX19ibGFrZTJiX3N0YXRlCisgIHsKKyAgICB1aW50NjRfdCBoWzhdOworICAgIHVpbnQ2NF90IHRbMl07CisgICAgdWludDY0X3QgZlsyXTsKKyAgICB1aW50OF90ICBidWZbMiAqIEJMQUtFMkJfQkxPQ0tCWVRFU107CisgICAgc2l6ZV90ICAgYnVmbGVuOworICAgIHVpbnQ4X3QgIGxhc3Rfbm9kZTsKKyAgfSBibGFrZTJiX3N0YXRlOworCisgIHR5cGVkZWYgc3RydWN0IF9fYmxha2Uyc3Bfc3RhdGUKKyAgeworICAgIGJsYWtlMnNfc3RhdGUgU1s4XVsxXTsKKyAgICBibGFrZTJzX3N0YXRlIFJbMV07CisgICAgdWludDhfdCBidWZbOCAqIEJMQUtFMlNfQkxPQ0tCWVRFU107CisgICAgc2l6ZV90ICBidWZsZW47CisgIH0gYmxha2Uyc3Bfc3RhdGU7CisKKyAgdHlwZWRlZiBzdHJ1Y3QgX19ibGFrZTJicF9zdGF0ZQorICB7CisgICAgYmxha2UyYl9zdGF0ZSBTWzRdWzFdOworICAgIGJsYWtlMmJfc3RhdGUgUlsxXTsKKyAgICB1aW50OF90IGJ1Zls0ICogQkxBS0UyQl9CTE9DS0JZVEVTXTsKKyAgICBzaXplX3QgIGJ1ZmxlbjsKKyAgfSBibGFrZTJicF9zdGF0ZTsKKworCisjcHJhZ21hIHBhY2socHVzaCwgMSkKKyAgdHlwZWRlZiBzdHJ1Y3QgX19ibGFrZTJzX3BhcmFtCisgIHsKKyAgICB1aW50OF90ICBkaWdlc3RfbGVuZ3RoOyAvKiAxICovCisgICAgdWludDhfdCAga2V5X2xlbmd0aDsgICAgLyogMiAqLworICAgIHVpbnQ4X3QgIGZhbm91dDsgICAgICAgIC8qIDMgKi8KKyAgICB1aW50OF90ICBkZXB0aDsgICAgICAgICAvKiA0ICovCisgICAgdWludDMyX3QgbGVhZl9sZW5ndGg7ICAgLyogOCAqLworICAgIHVpbnQ4X3QgIG5vZGVfb2Zmc2V0WzZdOy8vIDE0CisgICAgdWludDhfdCAgbm9kZV9kZXB0aDsgICAgLyogMTUgKi8KKyAgICB1aW50OF90ICBpbm5lcl9sZW5ndGg7ICAvKiAxNiAqLworICAgIC8qIHVpbnQ4X3QgIHJlc2VydmVkWzBdOyAqLworICAgIHVpbnQ4X3QgIHNhbHRbQkxBS0UyU19TQUxUQllURVNdOyAvKiAyNCAqLworICAgIHVpbnQ4X3QgIHBlcnNvbmFsW0JMQUtFMlNfUEVSU09OQUxCWVRFU107ICAvKiAzMiAqLworICB9IGJsYWtlMnNfcGFyYW07CisKKyAgdHlwZWRlZiBzdHJ1Y3QgX19ibGFrZTJiX3BhcmFtCisgIHsKKyAgICB1aW50OF90ICBkaWdlc3RfbGVuZ3RoOyAvKiAxICovCisgICAgdWludDhfdCAga2V5X2xlbmd0aDsgICAgLyogMiAqLworICAgIHVpbnQ4X3QgIGZhbm91dDsgICAgICAgIC8qIDMgKi8KKyAgICB1aW50OF90ICBkZXB0aDsgICAgICAgICAvKiA0ICovCisgICAgdWludDMyX3QgbGVhZl9sZW5ndGg7ICAgLyogOCAqLworICAgIHVpbnQ2NF90IG5vZGVfb2Zmc2V0OyAgIC8qIDE2ICovCisgICAgdWludDhfdCAgbm9kZV9kZXB0aDsgICAgLyogMTcgKi8KKyAgICB1aW50OF90ICBpbm5lcl9sZW5ndGg7ICAvKiAxOCAqLworICAgIHVpbnQ4X3QgIHJlc2VydmVkWzE0XTsgIC8qIDMyICovCisgICAgdWludDhfdCAgc2FsdFtCTEFLRTJCX1NBTFRCWVRFU107IC8qIDQ4ICovCisgICAgdWludDhfdCAgcGVyc29uYWxbQkxBS0UyQl9QRVJTT05BTEJZVEVTXTsgIC8qIDY0ICovCisgIH0gYmxha2UyYl9wYXJhbTsKKyNwcmFnbWEgcGFjayhwb3ApCisKKyAgLyogU3RyZWFtaW5nIEFQSSAqLworICBpbnQgYmxha2Uyc19pbml0KCBibGFrZTJzX3N0YXRlICpTLCBjb25zdCB1aW50OF90IG91dGxlbiApOworICBpbnQgYmxha2Uyc19pbml0X2tleSggYmxha2Uyc19zdGF0ZSAqUywgY29uc3QgdWludDhfdCBvdXRsZW4sIGNvbnN0IHZvaWQgKmtleSwgY29uc3QgdWludDhfdCBrZXlsZW4gKTsKKyAgaW50IGJsYWtlMnNfaW5pdF9wYXJhbSggYmxha2Uyc19zdGF0ZSAqUywgY29uc3QgYmxha2Uyc19wYXJhbSAqUCApOworICBpbnQgYmxha2Uyc191cGRhdGUoIGJsYWtlMnNfc3RhdGUgKlMsIGNvbnN0IHVpbnQ4X3QgKmluLCB1aW50NjRfdCBpbmxlbiApOworICBpbnQgYmxha2Uyc19maW5hbCggYmxha2Uyc19zdGF0ZSAqUywgdWludDhfdCAqb3V0LCB1aW50OF90IG91dGxlbiApOworCisgIGludCBibGFrZTJiX2luaXQoIGJsYWtlMmJfc3RhdGUgKlMsIGNvbnN0IHVpbnQ4X3Qgb3V0bGVuICk7CisgIGludCBibGFrZTJiX2luaXRfa2V5KCBibGFrZTJiX3N0YXRlICpTLCBjb25zdCB1aW50OF90IG91dGxlbiwgY29uc3Qgdm9pZCAqa2V5LCBjb25zdCB1aW50OF90IGtleWxlbiApOworICBpbnQgYmxha2UyYl9pbml0X3BhcmFtKCBibGFrZTJiX3N0YXRlICpTLCBjb25zdCBibGFrZTJiX3BhcmFtICpQICk7CisgIGludCBibGFrZTJiX3VwZGF0ZSggYmxha2UyYl9zdGF0ZSAqUywgY29uc3QgdWludDhfdCAqaW4sIHVpbnQ2NF90IGlubGVuICk7CisgIGludCBibGFrZTJiX2ZpbmFsKCBibGFrZTJiX3N0YXRlICpTLCB1aW50OF90ICpvdXQsIHVpbnQ4X3Qgb3V0bGVuICk7CisKKyAgaW50IGJsYWtlMnNwX2luaXQoIGJsYWtlMnNwX3N0YXRlICpTLCBjb25zdCB1aW50OF90IG91dGxlbiApOworICBpbnQgYmxha2Uyc3BfaW5pdF9rZXkoIGJsYWtlMnNwX3N0YXRlICpTLCBjb25zdCB1aW50OF90IG91dGxlbiwgY29uc3Qgdm9pZCAqa2V5LCBjb25zdCB1aW50OF90IGtleWxlbiApOworICBpbnQgYmxha2Uyc3BfdXBkYXRlKCBibGFrZTJzcF9zdGF0ZSAqUywgY29uc3QgdWludDhfdCAqaW4sIHVpbnQ2NF90IGlubGVuICk7CisgIGludCBibGFrZTJzcF9maW5hbCggYmxha2Uyc3Bfc3RhdGUgKlMsIHVpbnQ4X3QgKm91dCwgdWludDhfdCBvdXRsZW4gKTsKKworICBpbnQgYmxha2UyYnBfaW5pdCggYmxha2UyYnBfc3RhdGUgKlMsIGNvbnN0IHVpbnQ4X3Qgb3V0bGVuICk7CisgIGludCBibGFrZTJicF9pbml0X2tleSggYmxha2UyYnBfc3RhdGUgKlMsIGNvbnN0IHVpbnQ4X3Qgb3V0bGVuLCBjb25zdCB2b2lkICprZXksIGNvbnN0IHVpbnQ4X3Qga2V5bGVuICk7CisgIGludCBibGFrZTJicF91cGRhdGUoIGJsYWtlMmJwX3N0YXRlICpTLCBjb25zdCB1aW50OF90ICppbiwgdWludDY0X3QgaW5sZW4gKTsKKyAgaW50IGJsYWtlMmJwX2ZpbmFsKCBibGFrZTJicF9zdGF0ZSAqUywgdWludDhfdCAqb3V0LCB1aW50OF90IG91dGxlbiApOworCisgIC8qIFNpbXBsZSBBUEkgKi8KKyAgaW50IGJsYWtlMnMoIHVpbnQ4X3QgKm91dCwgY29uc3Qgdm9pZCAqaW4sIGNvbnN0IHZvaWQgKmtleSwgY29uc3QgdWludDhfdCBvdXRsZW4sIGNvbnN0IHVpbnQ2NF90IGlubGVuLCB1aW50OF90IGtleWxlbiApOworICBpbnQgYmxha2UyYiggdWludDhfdCAqb3V0LCBjb25zdCB2b2lkICppbiwgY29uc3Qgdm9pZCAqa2V5LCBjb25zdCB1aW50OF90IG91dGxlbiwgY29uc3QgdWludDY0X3QgaW5sZW4sIHVpbnQ4X3Qga2V5bGVuICk7CisKKyAgaW50IGJsYWtlMnNwKCB1aW50OF90ICpvdXQsIGNvbnN0IHZvaWQgKmluLCBjb25zdCB2b2lkICprZXksIGNvbnN0IHVpbnQ4X3Qgb3V0bGVuLCBjb25zdCB1aW50NjRfdCBpbmxlbiwgdWludDhfdCBrZXlsZW4gKTsKKyAgaW50IGJsYWtlMmJwKCB1aW50OF90ICpvdXQsIGNvbnN0IHZvaWQgKmluLCBjb25zdCB2b2lkICprZXksIGNvbnN0IHVpbnQ4X3Qgb3V0bGVuLCBjb25zdCB1aW50NjRfdCBpbmxlbiwgdWludDhfdCBrZXlsZW4gKTsKKworICBzdGF0aWMgaW5saW5lIGludCBibGFrZTIoIHVpbnQ4X3QgKm91dCwgY29uc3Qgdm9pZCAqaW4sIGNvbnN0IHZvaWQgKmtleSwgY29uc3QgdWludDhfdCBvdXRsZW4sIGNvbnN0IHVpbnQ2NF90IGlubGVuLCB1aW50OF90IGtleWxlbiApCisgIHsKKyAgICByZXR1cm4gYmxha2UyYiggb3V0LCBpbiwga2V5LCBvdXRsZW4sIGlubGVuLCBrZXlsZW4gKTsKKyAgfQorCisjaWYgZGVmaW5lZChfX2NwbHVzcGx1cykKK30KKyNlbmRpZgorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2UyYi1sb2FkLXNzZTIuaCBiL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMmItbG9hZC1zc2UyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDAwNGE5OAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMmItbG9hZC1zc2UyLmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAgIEJMQUtFMiByZWZlcmVuY2Ugc291cmNlIGNvZGUgcGFja2FnZSAtIG9wdGltaXplZCBDIGltcGxlbWVudGF0aW9ucworICAKKyAgIENvcHlyaWdodCAyMDEyLCBTYW11ZWwgTmV2ZXMgPHNuZXZlc0BkZWkudWMucHQ+LiAgWW91IG1heSB1c2UgdGhpcyB1bmRlciB0aGUKKyAgIHRlcm1zIG9mIHRoZSBDQzAsIHRoZSBPcGVuU1NMIExpY2VuY2UsIG9yIHRoZSBBcGFjaGUgUHVibGljIExpY2Vuc2UgMi4wLCBhdAorICAgeW91ciBvcHRpb24uICBUaGUgdGVybXMgb2YgdGhlc2UgbGljZW5zZXMgY2FuIGJlIGZvdW5kIGF0OgorICAKKyAgIC0gQ0MwIDEuMCBVbml2ZXJzYWwgOiBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAKKyAgIC0gT3BlblNTTCBsaWNlbnNlICAgOiBodHRwczovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2UvbGljZW5zZS5odG1sCisgICAtIEFwYWNoZSAyLjAgICAgICAgIDogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgIAorICAgTW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgQkxBS0UyIGhhc2ggZnVuY3Rpb24gY2FuIGJlIGZvdW5kIGF0CisgICBodHRwczovL2JsYWtlMi5uZXQuCisqLworI3ByYWdtYSBvbmNlCisjaWZuZGVmIF9fQkxBS0UyQl9MT0FEX1NTRTJfSF9fCisjZGVmaW5lIF9fQkxBS0UyQl9MT0FEX1NTRTJfSF9fCisKKyNkZWZpbmUgTE9BRF9NU0dfMF8xKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtMiwgbTApOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG02LCBtNCkKKyNkZWZpbmUgTE9BRF9NU0dfMF8yKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtMywgbTEpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG03LCBtNSkKKyNkZWZpbmUgTE9BRF9NU0dfMF8zKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtMTAsIG04KTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtMTQsIG0xMikKKyNkZWZpbmUgTE9BRF9NU0dfMF80KGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtMTEsIG05KTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtMTUsIG0xMykKKyNkZWZpbmUgTE9BRF9NU0dfMV8xKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtNCwgbTE0KTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtMTMsIG05KQorI2RlZmluZSBMT0FEX01TR18xXzIoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG04LCBtMTApOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG02LCBtMTUpCisjZGVmaW5lIExPQURfTVNHXzFfMyhiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTAsIG0xKTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtNSwgbTExKQorI2RlZmluZSBMT0FEX01TR18xXzQoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG0yLCBtMTIpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG0zLCBtNykKKyNkZWZpbmUgTE9BRF9NU0dfMl8xKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtMTIsIG0xMSk7IGIxID0gX21tX3NldF9lcGk2NHgobTE1LCBtNSkKKyNkZWZpbmUgTE9BRF9NU0dfMl8yKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtMCwgbTgpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG0xMywgbTIpCisjZGVmaW5lIExPQURfTVNHXzJfMyhiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTMsIG0xMCk7IGIxID0gX21tX3NldF9lcGk2NHgobTksIG03KQorI2RlZmluZSBMT0FEX01TR18yXzQoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG02LCBtMTQpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG00LCBtMSkKKyNkZWZpbmUgTE9BRF9NU0dfM18xKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtMywgbTcpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG0xMSwgbTEzKQorI2RlZmluZSBMT0FEX01TR18zXzIoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG0xLCBtOSk7IGIxID0gX21tX3NldF9lcGk2NHgobTE0LCBtMTIpCisjZGVmaW5lIExPQURfTVNHXzNfMyhiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTUsIG0yKTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtMTUsIG00KQorI2RlZmluZSBMT0FEX01TR18zXzQoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG0xMCwgbTYpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG04LCBtMCkKKyNkZWZpbmUgTE9BRF9NU0dfNF8xKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtNSwgbTkpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG0xMCwgbTIpCisjZGVmaW5lIExPQURfTVNHXzRfMihiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTcsIG0wKTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtMTUsIG00KQorI2RlZmluZSBMT0FEX01TR180XzMoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG0xMSwgbTE0KTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtMywgbTYpCisjZGVmaW5lIExPQURfTVNHXzRfNChiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTEyLCBtMSk7IGIxID0gX21tX3NldF9lcGk2NHgobTEzLCBtOCkKKyNkZWZpbmUgTE9BRF9NU0dfNV8xKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtNiwgbTIpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG04LCBtMCkKKyNkZWZpbmUgTE9BRF9NU0dfNV8yKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtMTAsIG0xMik7IGIxID0gX21tX3NldF9lcGk2NHgobTMsIG0xMSkKKyNkZWZpbmUgTE9BRF9NU0dfNV8zKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtNywgbTQpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG0xLCBtMTUpCisjZGVmaW5lIExPQURfTVNHXzVfNChiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTUsIG0xMyk7IGIxID0gX21tX3NldF9lcGk2NHgobTksIG0xNCkKKyNkZWZpbmUgTE9BRF9NU0dfNl8xKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtMSwgbTEyKTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtNCwgbTE0KQorI2RlZmluZSBMT0FEX01TR182XzIoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG0xNSwgbTUpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG0xMCwgbTEzKQorI2RlZmluZSBMT0FEX01TR182XzMoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG02LCBtMCk7IGIxID0gX21tX3NldF9lcGk2NHgobTgsIG05KQorI2RlZmluZSBMT0FEX01TR182XzQoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG0zLCBtNyk7IGIxID0gX21tX3NldF9lcGk2NHgobTExLCBtMikKKyNkZWZpbmUgTE9BRF9NU0dfN18xKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtNywgbTEzKTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtMywgbTEyKQorI2RlZmluZSBMT0FEX01TR183XzIoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG0xNCwgbTExKTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtOSwgbTEpCisjZGVmaW5lIExPQURfTVNHXzdfMyhiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTE1LCBtNSk7IGIxID0gX21tX3NldF9lcGk2NHgobTIsIG04KQorI2RlZmluZSBMT0FEX01TR183XzQoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG00LCBtMCk7IGIxID0gX21tX3NldF9lcGk2NHgobTEwLCBtNikKKyNkZWZpbmUgTE9BRF9NU0dfOF8xKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtMTQsIG02KTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtMCwgbTExKQorI2RlZmluZSBMT0FEX01TR184XzIoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG05LCBtMTUpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG04LCBtMykKKyNkZWZpbmUgTE9BRF9NU0dfOF8zKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtMTMsIG0xMik7IGIxID0gX21tX3NldF9lcGk2NHgobTEwLCBtMSkKKyNkZWZpbmUgTE9BRF9NU0dfOF80KGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtNywgbTIpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG01LCBtNCkKKyNkZWZpbmUgTE9BRF9NU0dfOV8xKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtOCwgbTEwKTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtMSwgbTcpCisjZGVmaW5lIExPQURfTVNHXzlfMihiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTQsIG0yKTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtNSwgbTYpCisjZGVmaW5lIExPQURfTVNHXzlfMyhiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTksIG0xNSk7IGIxID0gX21tX3NldF9lcGk2NHgobTEzLCBtMykKKyNkZWZpbmUgTE9BRF9NU0dfOV80KGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtMTQsIG0xMSk7IGIxID0gX21tX3NldF9lcGk2NHgobTAsIG0xMikKKyNkZWZpbmUgTE9BRF9NU0dfMTBfMShiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTIsIG0wKTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtNiwgbTQpCisjZGVmaW5lIExPQURfTVNHXzEwXzIoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG0zLCBtMSk7IGIxID0gX21tX3NldF9lcGk2NHgobTcsIG01KQorI2RlZmluZSBMT0FEX01TR18xMF8zKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtMTAsIG04KTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtMTQsIG0xMikKKyNkZWZpbmUgTE9BRF9NU0dfMTBfNChiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTExLCBtOSk7IGIxID0gX21tX3NldF9lcGk2NHgobTE1LCBtMTMpCisjZGVmaW5lIExPQURfTVNHXzExXzEoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG00LCBtMTQpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG0xMywgbTkpCisjZGVmaW5lIExPQURfTVNHXzExXzIoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG04LCBtMTApOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG02LCBtMTUpCisjZGVmaW5lIExPQURfTVNHXzExXzMoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG0wLCBtMSk7IGIxID0gX21tX3NldF9lcGk2NHgobTUsIG0xMSkKKyNkZWZpbmUgTE9BRF9NU0dfMTFfNChiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTIsIG0xMik7IGIxID0gX21tX3NldF9lcGk2NHgobTMsIG03KQorCisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJiLWxvYWQtc3NlNDEuaCBiL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMmItbG9hZC1zc2U0MS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyYTEzNDkKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJiLWxvYWQtc3NlNDEuaApAQCAtMCwwICsxLDQwNCBAQAorLyoKKyAgIEJMQUtFMiByZWZlcmVuY2Ugc291cmNlIGNvZGUgcGFja2FnZSAtIG9wdGltaXplZCBDIGltcGxlbWVudGF0aW9ucworICAKKyAgIENvcHlyaWdodCAyMDEyLCBTYW11ZWwgTmV2ZXMgPHNuZXZlc0BkZWkudWMucHQ+LiAgWW91IG1heSB1c2UgdGhpcyB1bmRlciB0aGUKKyAgIHRlcm1zIG9mIHRoZSBDQzAsIHRoZSBPcGVuU1NMIExpY2VuY2UsIG9yIHRoZSBBcGFjaGUgUHVibGljIExpY2Vuc2UgMi4wLCBhdAorICAgeW91ciBvcHRpb24uICBUaGUgdGVybXMgb2YgdGhlc2UgbGljZW5zZXMgY2FuIGJlIGZvdW5kIGF0OgorICAKKyAgIC0gQ0MwIDEuMCBVbml2ZXJzYWwgOiBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAKKyAgIC0gT3BlblNTTCBsaWNlbnNlICAgOiBodHRwczovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2UvbGljZW5zZS5odG1sCisgICAtIEFwYWNoZSAyLjAgICAgICAgIDogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgIAorICAgTW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgQkxBS0UyIGhhc2ggZnVuY3Rpb24gY2FuIGJlIGZvdW5kIGF0CisgICBodHRwczovL2JsYWtlMi5uZXQuCisqLworI3ByYWdtYSBvbmNlCisjaWZuZGVmIF9fQkxBS0UyQl9MT0FEX1NTRTQxX0hfXworI2RlZmluZSBfX0JMQUtFMkJfTE9BRF9TU0U0MV9IX18KKworI2RlZmluZSBMT0FEX01TR18wXzEoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2xvX2VwaTY0KG0wLCBtMSk7IFwKK2IxID0gX21tX3VucGFja2xvX2VwaTY0KG0yLCBtMyk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzBfMihiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fdW5wYWNraGlfZXBpNjQobTAsIG0xKTsgXAorYjEgPSBfbW1fdW5wYWNraGlfZXBpNjQobTIsIG0zKTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfMF8zKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2tsb19lcGk2NChtNCwgbTUpOyBcCitiMSA9IF9tbV91bnBhY2tsb19lcGk2NChtNiwgbTcpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR18wXzQoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2hpX2VwaTY0KG00LCBtNSk7IFwKK2IxID0gX21tX3VucGFja2hpX2VwaTY0KG02LCBtNyk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzFfMShiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTcsIG0yKTsgXAorYjEgPSBfbW1fdW5wYWNraGlfZXBpNjQobTQsIG02KTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfMV8yKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2tsb19lcGk2NChtNSwgbTQpOyBcCitiMSA9IF9tbV9hbGlnbnJfZXBpOChtMywgbTcsIDgpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR18xXzMoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3NodWZmbGVfZXBpMzIobTAsIF9NTV9TSFVGRkxFKDEsMCwzLDIpKTsgXAorYjEgPSBfbW1fdW5wYWNraGlfZXBpNjQobTUsIG0yKTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfMV80KGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2tsb19lcGk2NChtNiwgbTEpOyBcCitiMSA9IF9tbV91bnBhY2toaV9lcGk2NChtMywgbTEpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR18yXzEoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX2FsaWducl9lcGk4KG02LCBtNSwgOCk7IFwKK2IxID0gX21tX3VucGFja2hpX2VwaTY0KG0yLCBtNyk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzJfMihiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTQsIG0wKTsgXAorYjEgPSBfbW1fYmxlbmRfZXBpMTYobTEsIG02LCAweEYwKTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfMl8zKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV9ibGVuZF9lcGkxNihtNSwgbTEsIDB4RjApOyBcCitiMSA9IF9tbV91bnBhY2toaV9lcGk2NChtMywgbTQpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR18yXzQoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2xvX2VwaTY0KG03LCBtMyk7IFwKK2IxID0gX21tX2FsaWducl9lcGk4KG0yLCBtMCwgOCk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzNfMShiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fdW5wYWNraGlfZXBpNjQobTMsIG0xKTsgXAorYjEgPSBfbW1fdW5wYWNraGlfZXBpNjQobTYsIG01KTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfM18yKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2toaV9lcGk2NChtNCwgbTApOyBcCitiMSA9IF9tbV91bnBhY2tsb19lcGk2NChtNiwgbTcpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR18zXzMoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX2JsZW5kX2VwaTE2KG0xLCBtMiwgMHhGMCk7IFwKK2IxID0gX21tX2JsZW5kX2VwaTE2KG0yLCBtNywgMHhGMCk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzNfNChiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTMsIG01KTsgXAorYjEgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTAsIG00KTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfNF8xKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2toaV9lcGk2NChtNCwgbTIpOyBcCitiMSA9IF9tbV91bnBhY2tsb19lcGk2NChtMSwgbTUpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR180XzIoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX2JsZW5kX2VwaTE2KG0wLCBtMywgMHhGMCk7IFwKK2IxID0gX21tX2JsZW5kX2VwaTE2KG0yLCBtNywgMHhGMCk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzRfMyhiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fYmxlbmRfZXBpMTYobTcsIG01LCAweEYwKTsgXAorYjEgPSBfbW1fYmxlbmRfZXBpMTYobTMsIG0xLCAweEYwKTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfNF80KGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV9hbGlnbnJfZXBpOChtNiwgbTAsIDgpOyBcCitiMSA9IF9tbV9ibGVuZF9lcGkxNihtNCwgbTYsIDB4RjApOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR181XzEoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2xvX2VwaTY0KG0xLCBtMyk7IFwKK2IxID0gX21tX3VucGFja2xvX2VwaTY0KG0wLCBtNCk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzVfMihiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTYsIG01KTsgXAorYjEgPSBfbW1fdW5wYWNraGlfZXBpNjQobTUsIG0xKTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfNV8zKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV9ibGVuZF9lcGkxNihtMiwgbTMsIDB4RjApOyBcCitiMSA9IF9tbV91bnBhY2toaV9lcGk2NChtNywgbTApOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR181XzQoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2hpX2VwaTY0KG02LCBtMik7IFwKK2IxID0gX21tX2JsZW5kX2VwaTE2KG03LCBtNCwgMHhGMCk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzZfMShiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fYmxlbmRfZXBpMTYobTYsIG0wLCAweEYwKTsgXAorYjEgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTcsIG0yKTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfNl8yKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2toaV9lcGk2NChtMiwgbTcpOyBcCitiMSA9IF9tbV9hbGlnbnJfZXBpOChtNSwgbTYsIDgpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR182XzMoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2xvX2VwaTY0KG0wLCBtMyk7IFwKK2IxID0gX21tX3NodWZmbGVfZXBpMzIobTQsIF9NTV9TSFVGRkxFKDEsMCwzLDIpKTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfNl80KGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2toaV9lcGk2NChtMywgbTEpOyBcCitiMSA9IF9tbV9ibGVuZF9lcGkxNihtMSwgbTUsIDB4RjApOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR183XzEoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2hpX2VwaTY0KG02LCBtMyk7IFwKK2IxID0gX21tX2JsZW5kX2VwaTE2KG02LCBtMSwgMHhGMCk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzdfMihiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fYWxpZ25yX2VwaTgobTcsIG01LCA4KTsgXAorYjEgPSBfbW1fdW5wYWNraGlfZXBpNjQobTAsIG00KTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfN18zKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2toaV9lcGk2NChtMiwgbTcpOyBcCitiMSA9IF9tbV91bnBhY2tsb19lcGk2NChtNCwgbTEpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR183XzQoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2xvX2VwaTY0KG0wLCBtMik7IFwKK2IxID0gX21tX3VucGFja2xvX2VwaTY0KG0zLCBtNSk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzhfMShiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTMsIG03KTsgXAorYjEgPSBfbW1fYWxpZ25yX2VwaTgobTAsIG01LCA4KTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfOF8yKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2toaV9lcGk2NChtNywgbTQpOyBcCitiMSA9IF9tbV9hbGlnbnJfZXBpOChtNCwgbTEsIDgpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR184XzMoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gbTY7IFwKK2IxID0gX21tX2FsaWducl9lcGk4KG01LCBtMCwgOCk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzhfNChiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fYmxlbmRfZXBpMTYobTEsIG0zLCAweEYwKTsgXAorYjEgPSBtMjsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfOV8xKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2tsb19lcGk2NChtNSwgbTQpOyBcCitiMSA9IF9tbV91bnBhY2toaV9lcGk2NChtMywgbTApOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR185XzIoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2xvX2VwaTY0KG0xLCBtMik7IFwKK2IxID0gX21tX2JsZW5kX2VwaTE2KG0zLCBtMiwgMHhGMCk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzlfMyhiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fdW5wYWNraGlfZXBpNjQobTcsIG00KTsgXAorYjEgPSBfbW1fdW5wYWNraGlfZXBpNjQobTEsIG02KTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfOV80KGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV9hbGlnbnJfZXBpOChtNywgbTUsIDgpOyBcCitiMSA9IF9tbV91bnBhY2tsb19lcGk2NChtNiwgbTApOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR18xMF8xKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2tsb19lcGk2NChtMCwgbTEpOyBcCitiMSA9IF9tbV91bnBhY2tsb19lcGk2NChtMiwgbTMpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR18xMF8yKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2toaV9lcGk2NChtMCwgbTEpOyBcCitiMSA9IF9tbV91bnBhY2toaV9lcGk2NChtMiwgbTMpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR18xMF8zKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2tsb19lcGk2NChtNCwgbTUpOyBcCitiMSA9IF9tbV91bnBhY2tsb19lcGk2NChtNiwgbTcpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR18xMF80KGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2toaV9lcGk2NChtNCwgbTUpOyBcCitiMSA9IF9tbV91bnBhY2toaV9lcGk2NChtNiwgbTcpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR18xMV8xKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2tsb19lcGk2NChtNywgbTIpOyBcCitiMSA9IF9tbV91bnBhY2toaV9lcGk2NChtNCwgbTYpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR18xMV8yKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2tsb19lcGk2NChtNSwgbTQpOyBcCitiMSA9IF9tbV9hbGlnbnJfZXBpOChtMywgbTcsIDgpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR18xMV8zKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV9zaHVmZmxlX2VwaTMyKG0wLCBfTU1fU0hVRkZMRSgxLDAsMywyKSk7IFwKK2IxID0gX21tX3VucGFja2hpX2VwaTY0KG01LCBtMik7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzExXzQoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2xvX2VwaTY0KG02LCBtMSk7IFwKK2IxID0gX21tX3VucGFja2hpX2VwaTY0KG0zLCBtMSk7IFwKK30gd2hpbGUoMCkKKworCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2UyYi1yZWYuYyBiL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMmItcmVmLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWIzNzVhNAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMmItcmVmLmMKQEAgLTAsMCArMSw0MjAgQEAKKy8qCisgICBCTEFLRTIgcmVmZXJlbmNlIHNvdXJjZSBjb2RlIHBhY2thZ2UgLSByZWZlcmVuY2UgQyBpbXBsZW1lbnRhdGlvbnMKKyAgCisgICBDb3B5cmlnaHQgMjAxMiwgU2FtdWVsIE5ldmVzIDxzbmV2ZXNAZGVpLnVjLnB0Pi4gIFlvdSBtYXkgdXNlIHRoaXMgdW5kZXIgdGhlCisgICB0ZXJtcyBvZiB0aGUgQ0MwLCB0aGUgT3BlblNTTCBMaWNlbmNlLCBvciB0aGUgQXBhY2hlIFB1YmxpYyBMaWNlbnNlIDIuMCwgYXQKKyAgIHlvdXIgb3B0aW9uLiAgVGhlIHRlcm1zIG9mIHRoZXNlIGxpY2Vuc2VzIGNhbiBiZSBmb3VuZCBhdDoKKyAgCisgICAtIENDMCAxLjAgVW5pdmVyc2FsIDogaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wCisgICAtIE9wZW5TU0wgbGljZW5zZSAgIDogaHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvc291cmNlL2xpY2Vuc2UuaHRtbAorICAgLSBBcGFjaGUgMi4wICAgICAgICA6IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAKKyAgIE1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIEJMQUtFMiBoYXNoIGZ1bmN0aW9uIGNhbiBiZSBmb3VuZCBhdAorICAgaHR0cHM6Ly9ibGFrZTIubmV0LgorKi8KKworI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNpbmNsdWRlICJibGFrZTIuaCIKKyNpbmNsdWRlICJibGFrZTItaW1wbC5oIgorCitzdGF0aWMgY29uc3QgdWludDY0X3QgYmxha2UyYl9JVls4XSA9Cit7CisgIDB4NmEwOWU2NjdmM2JjYzkwOFVMTCwgMHhiYjY3YWU4NTg0Y2FhNzNiVUxMLAorICAweDNjNmVmMzcyZmU5NGY4MmJVTEwsIDB4YTU0ZmY1M2E1ZjFkMzZmMVVMTCwKKyAgMHg1MTBlNTI3ZmFkZTY4MmQxVUxMLCAweDliMDU2ODhjMmIzZTZjMWZVTEwsCisgIDB4MWY4M2Q5YWJmYjQxYmQ2YlVMTCwgMHg1YmUwY2QxOTEzN2UyMTc5VUxMCit9OworCitzdGF0aWMgY29uc3QgdWludDhfdCBibGFrZTJiX3NpZ21hWzEyXVsxNl0gPQoreworICB7ICAwLCAgMSwgIDIsICAzLCAgNCwgIDUsICA2LCAgNywgIDgsICA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1IH0gLAorICB7IDE0LCAxMCwgIDQsICA4LCAgOSwgMTUsIDEzLCAgNiwgIDEsIDEyLCAgMCwgIDIsIDExLCAgNywgIDUsICAzIH0gLAorICB7IDExLCAgOCwgMTIsICAwLCAgNSwgIDIsIDE1LCAxMywgMTAsIDE0LCAgMywgIDYsICA3LCAgMSwgIDksICA0IH0gLAorICB7ICA3LCAgOSwgIDMsICAxLCAxMywgMTIsIDExLCAxNCwgIDIsICA2LCAgNSwgMTAsICA0LCAgMCwgMTUsICA4IH0gLAorICB7ICA5LCAgMCwgIDUsICA3LCAgMiwgIDQsIDEwLCAxNSwgMTQsICAxLCAxMSwgMTIsICA2LCAgOCwgIDMsIDEzIH0gLAorICB7ICAyLCAxMiwgIDYsIDEwLCAgMCwgMTEsICA4LCAgMywgIDQsIDEzLCAgNywgIDUsIDE1LCAxNCwgIDEsICA5IH0gLAorICB7IDEyLCAgNSwgIDEsIDE1LCAxNCwgMTMsICA0LCAxMCwgIDAsICA3LCAgNiwgIDMsICA5LCAgMiwgIDgsIDExIH0gLAorICB7IDEzLCAxMSwgIDcsIDE0LCAxMiwgIDEsICAzLCAgOSwgIDUsICAwLCAxNSwgIDQsICA4LCAgNiwgIDIsIDEwIH0gLAorICB7ICA2LCAxNSwgMTQsICA5LCAxMSwgIDMsICAwLCAgOCwgMTIsICAyLCAxMywgIDcsICAxLCAgNCwgMTAsICA1IH0gLAorICB7IDEwLCAgMiwgIDgsICA0LCAgNywgIDYsICAxLCAgNSwgMTUsIDExLCAgOSwgMTQsICAzLCAxMiwgMTMgLCAwIH0gLAorICB7ICAwLCAgMSwgIDIsICAzLCAgNCwgIDUsICA2LCAgNywgIDgsICA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1IH0gLAorICB7IDE0LCAxMCwgIDQsICA4LCAgOSwgMTUsIDEzLCAgNiwgIDEsIDEyLCAgMCwgIDIsIDExLCAgNywgIDUsICAzIH0KK307CisKKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfc2V0X2xhc3Rub2RlKCBibGFrZTJiX3N0YXRlICpTICkKK3sKKyAgUy0+ZlsxXSA9IC0xOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfY2xlYXJfbGFzdG5vZGUoIGJsYWtlMmJfc3RhdGUgKlMgKQoreworICBTLT5mWzFdID0gMDsKKyAgcmV0dXJuIDA7Cit9CisKKy8qIFNvbWUgaGVscGVyIGZ1bmN0aW9ucywgbm90IG5lY2Vzc2FyaWx5IHVzZWZ1bCAqLworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfaXNfbGFzdGJsb2NrKCBjb25zdCBibGFrZTJiX3N0YXRlICpTICkKK3sKKyAgcmV0dXJuIFMtPmZbMF0gIT0gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfc2V0X2xhc3RibG9jayggYmxha2UyYl9zdGF0ZSAqUyApCit7CisgIGlmKCBTLT5sYXN0X25vZGUgKSBibGFrZTJiX3NldF9sYXN0bm9kZSggUyApOworCisgIFMtPmZbMF0gPSAtMTsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJiX2NsZWFyX2xhc3RibG9jayggYmxha2UyYl9zdGF0ZSAqUyApCit7CisgIGlmKCBTLT5sYXN0X25vZGUgKSBibGFrZTJiX2NsZWFyX2xhc3Rub2RlKCBTICk7CisKKyAgUy0+ZlswXSA9IDA7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9pbmNyZW1lbnRfY291bnRlciggYmxha2UyYl9zdGF0ZSAqUywgY29uc3QgdWludDY0X3QgaW5jICkKK3sKKyAgUy0+dFswXSArPSBpbmM7CisgIFMtPnRbMV0gKz0gKCBTLT50WzBdIDwgaW5jICk7CisgIHJldHVybiAwOworfQorCisKKworLyogUGFyYW1ldGVyLXJlbGF0ZWQgZnVuY3Rpb25zICovCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9wYXJhbV9zZXRfZGlnZXN0X2xlbmd0aCggYmxha2UyYl9wYXJhbSAqUCwgY29uc3QgdWludDhfdCBkaWdlc3RfbGVuZ3RoICkKK3sKKyAgUC0+ZGlnZXN0X2xlbmd0aCA9IGRpZ2VzdF9sZW5ndGg7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9wYXJhbV9zZXRfZmFub3V0KCBibGFrZTJiX3BhcmFtICpQLCBjb25zdCB1aW50OF90IGZhbm91dCApCit7CisgIFAtPmZhbm91dCA9IGZhbm91dDsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJiX3BhcmFtX3NldF9tYXhfZGVwdGgoIGJsYWtlMmJfcGFyYW0gKlAsIGNvbnN0IHVpbnQ4X3QgZGVwdGggKQoreworICBQLT5kZXB0aCA9IGRlcHRoOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfcGFyYW1fc2V0X2xlYWZfbGVuZ3RoKCBibGFrZTJiX3BhcmFtICpQLCBjb25zdCB1aW50MzJfdCBsZWFmX2xlbmd0aCApCit7CisgIHN0b3JlMzIoICZQLT5sZWFmX2xlbmd0aCwgbGVhZl9sZW5ndGggKTsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJiX3BhcmFtX3NldF9ub2RlX29mZnNldCggYmxha2UyYl9wYXJhbSAqUCwgY29uc3QgdWludDY0X3Qgbm9kZV9vZmZzZXQgKQoreworICBzdG9yZTY0KCAmUC0+bm9kZV9vZmZzZXQsIG5vZGVfb2Zmc2V0ICk7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9wYXJhbV9zZXRfbm9kZV9kZXB0aCggYmxha2UyYl9wYXJhbSAqUCwgY29uc3QgdWludDhfdCBub2RlX2RlcHRoICkKK3sKKyAgUC0+bm9kZV9kZXB0aCA9IG5vZGVfZGVwdGg7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9wYXJhbV9zZXRfaW5uZXJfbGVuZ3RoKCBibGFrZTJiX3BhcmFtICpQLCBjb25zdCB1aW50OF90IGlubmVyX2xlbmd0aCApCit7CisgIFAtPmlubmVyX2xlbmd0aCA9IGlubmVyX2xlbmd0aDsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJiX3BhcmFtX3NldF9zYWx0KCBibGFrZTJiX3BhcmFtICpQLCBjb25zdCB1aW50OF90IHNhbHRbQkxBS0UyQl9TQUxUQllURVNdICkKK3sKKyAgbWVtY3B5KCBQLT5zYWx0LCBzYWx0LCBCTEFLRTJCX1NBTFRCWVRFUyApOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfcGFyYW1fc2V0X3BlcnNvbmFsKCBibGFrZTJiX3BhcmFtICpQLCBjb25zdCB1aW50OF90IHBlcnNvbmFsW0JMQUtFMkJfUEVSU09OQUxCWVRFU10gKQoreworICBtZW1jcHkoIFAtPnBlcnNvbmFsLCBwZXJzb25hbCwgQkxBS0UyQl9QRVJTT05BTEJZVEVTICk7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9pbml0MCggYmxha2UyYl9zdGF0ZSAqUyApCit7CisgIGludCBpOworICBtZW1zZXQoIFMsIDAsIHNpemVvZiggYmxha2UyYl9zdGF0ZSApICk7CisKKyAgZm9yKCBpID0gMDsgaSA8IDg7ICsraSApIFMtPmhbaV0gPSBibGFrZTJiX0lWW2ldOworCisgIHJldHVybiAwOworfQorCisvKiBpbml0IHhvcnMgSVYgd2l0aCBpbnB1dCBwYXJhbWV0ZXIgYmxvY2sgKi8KK2ludCBibGFrZTJiX2luaXRfcGFyYW0oIGJsYWtlMmJfc3RhdGUgKlMsIGNvbnN0IGJsYWtlMmJfcGFyYW0gKlAgKQoreworICBjb25zdCB1aW50OF90ICpwID0gKCBjb25zdCB1aW50OF90ICogKSggUCApOworICBzaXplX3QgaTsKKworICBibGFrZTJiX2luaXQwKCBTICk7CisKKyAgLyogSVYgWE9SIFBhcmFtQmxvY2sgKi8KKyAgZm9yKCBpID0gMDsgaSA8IDg7ICsraSApCisgICAgUy0+aFtpXSBePSBsb2FkNjQoIHAgKyBzaXplb2YoIFMtPmhbaV0gKSAqIGkgKTsKKworICByZXR1cm4gMDsKK30KKworCisKK2ludCBibGFrZTJiX2luaXQoIGJsYWtlMmJfc3RhdGUgKlMsIGNvbnN0IHVpbnQ4X3Qgb3V0bGVuICkKK3sKKyAgYmxha2UyYl9wYXJhbSBQWzFdOworCisgIGlmICggKCAhb3V0bGVuICkgfHwgKCBvdXRsZW4gPiBCTEFLRTJCX09VVEJZVEVTICkgKSByZXR1cm4gLTE7CisKKyAgUC0+ZGlnZXN0X2xlbmd0aCA9IG91dGxlbjsKKyAgUC0+a2V5X2xlbmd0aCAgICA9IDA7CisgIFAtPmZhbm91dCAgICAgICAgPSAxOworICBQLT5kZXB0aCAgICAgICAgID0gMTsKKyAgc3RvcmUzMiggJlAtPmxlYWZfbGVuZ3RoLCAwICk7CisgIHN0b3JlNjQoICZQLT5ub2RlX29mZnNldCwgMCApOworICBQLT5ub2RlX2RlcHRoICAgID0gMDsKKyAgUC0+aW5uZXJfbGVuZ3RoICA9IDA7CisgIG1lbXNldCggUC0+cmVzZXJ2ZWQsIDAsIHNpemVvZiggUC0+cmVzZXJ2ZWQgKSApOworICBtZW1zZXQoIFAtPnNhbHQsICAgICAwLCBzaXplb2YoIFAtPnNhbHQgKSApOworICBtZW1zZXQoIFAtPnBlcnNvbmFsLCAwLCBzaXplb2YoIFAtPnBlcnNvbmFsICkgKTsKKyAgcmV0dXJuIGJsYWtlMmJfaW5pdF9wYXJhbSggUywgUCApOworfQorCisKK2ludCBibGFrZTJiX2luaXRfa2V5KCBibGFrZTJiX3N0YXRlICpTLCBjb25zdCB1aW50OF90IG91dGxlbiwgY29uc3Qgdm9pZCAqa2V5LCBjb25zdCB1aW50OF90IGtleWxlbiApCit7CisgIGJsYWtlMmJfcGFyYW0gUFsxXTsKKworICBpZiAoICggIW91dGxlbiApIHx8ICggb3V0bGVuID4gQkxBS0UyQl9PVVRCWVRFUyApICkgcmV0dXJuIC0xOworCisgIGlmICggIWtleSB8fCAha2V5bGVuIHx8IGtleWxlbiA+IEJMQUtFMkJfS0VZQllURVMgKSByZXR1cm4gLTE7CisKKyAgUC0+ZGlnZXN0X2xlbmd0aCA9IG91dGxlbjsKKyAgUC0+a2V5X2xlbmd0aCAgICA9IGtleWxlbjsKKyAgUC0+ZmFub3V0ICAgICAgICA9IDE7CisgIFAtPmRlcHRoICAgICAgICAgPSAxOworICBzdG9yZTMyKCAmUC0+bGVhZl9sZW5ndGgsIDAgKTsKKyAgc3RvcmU2NCggJlAtPm5vZGVfb2Zmc2V0LCAwICk7CisgIFAtPm5vZGVfZGVwdGggICAgPSAwOworICBQLT5pbm5lcl9sZW5ndGggID0gMDsKKyAgbWVtc2V0KCBQLT5yZXNlcnZlZCwgMCwgc2l6ZW9mKCBQLT5yZXNlcnZlZCApICk7CisgIG1lbXNldCggUC0+c2FsdCwgICAgIDAsIHNpemVvZiggUC0+c2FsdCApICk7CisgIG1lbXNldCggUC0+cGVyc29uYWwsIDAsIHNpemVvZiggUC0+cGVyc29uYWwgKSApOworCisgIGlmKCBibGFrZTJiX2luaXRfcGFyYW0oIFMsIFAgKSA8IDAgKSByZXR1cm4gLTE7CisKKyAgeworICAgIHVpbnQ4X3QgYmxvY2tbQkxBS0UyQl9CTE9DS0JZVEVTXTsKKyAgICBtZW1zZXQoIGJsb2NrLCAwLCBCTEFLRTJCX0JMT0NLQllURVMgKTsKKyAgICBtZW1jcHkoIGJsb2NrLCBrZXksIGtleWxlbiApOworICAgIGJsYWtlMmJfdXBkYXRlKCBTLCBibG9jaywgQkxBS0UyQl9CTE9DS0JZVEVTICk7CisgICAgc2VjdXJlX3plcm9fbWVtb3J5KCBibG9jaywgQkxBS0UyQl9CTE9DS0JZVEVTICk7IC8qIEJ1cm4gdGhlIGtleSBmcm9tIHN0YWNrICovCisgIH0KKyAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgYmxha2UyYl9jb21wcmVzcyggYmxha2UyYl9zdGF0ZSAqUywgY29uc3QgdWludDhfdCBibG9ja1tCTEFLRTJCX0JMT0NLQllURVNdICkKK3sKKyAgdWludDY0X3QgbVsxNl07CisgIHVpbnQ2NF90IHZbMTZdOworICBpbnQgaTsKKworICBmb3IoIGkgPSAwOyBpIDwgMTY7ICsraSApCisgICAgbVtpXSA9IGxvYWQ2NCggYmxvY2sgKyBpICogc2l6ZW9mKCBtW2ldICkgKTsKKworICBmb3IoIGkgPSAwOyBpIDwgODsgKytpICkKKyAgICB2W2ldID0gUy0+aFtpXTsKKworICB2WyA4XSA9IGJsYWtlMmJfSVZbMF07CisgIHZbIDldID0gYmxha2UyYl9JVlsxXTsKKyAgdlsxMF0gPSBibGFrZTJiX0lWWzJdOworICB2WzExXSA9IGJsYWtlMmJfSVZbM107CisgIHZbMTJdID0gUy0+dFswXSBeIGJsYWtlMmJfSVZbNF07CisgIHZbMTNdID0gUy0+dFsxXSBeIGJsYWtlMmJfSVZbNV07CisgIHZbMTRdID0gUy0+ZlswXSBeIGJsYWtlMmJfSVZbNl07CisgIHZbMTVdID0gUy0+ZlsxXSBeIGJsYWtlMmJfSVZbN107CisjZGVmaW5lIEcocixpLGEsYixjLGQpIFwKKyAgZG8geyBcCisgICAgYSA9IGEgKyBiICsgbVtibGFrZTJiX3NpZ21hW3JdWzIqaSswXV07IFwKKyAgICBkID0gcm90cjY0KGQgXiBhLCAzMik7IFwKKyAgICBjID0gYyArIGQ7IFwKKyAgICBiID0gcm90cjY0KGIgXiBjLCAyNCk7IFwKKyAgICBhID0gYSArIGIgKyBtW2JsYWtlMmJfc2lnbWFbcl1bMippKzFdXTsgXAorICAgIGQgPSByb3RyNjQoZCBeIGEsIDE2KTsgXAorICAgIGMgPSBjICsgZDsgXAorICAgIGIgPSByb3RyNjQoYiBeIGMsIDYzKTsgXAorICB9IHdoaWxlKDApCisjZGVmaW5lIFJPVU5EKHIpICBcCisgIGRvIHsgXAorICAgIEcociwwLHZbIDBdLHZbIDRdLHZbIDhdLHZbMTJdKTsgXAorICAgIEcociwxLHZbIDFdLHZbIDVdLHZbIDldLHZbMTNdKTsgXAorICAgIEcociwyLHZbIDJdLHZbIDZdLHZbMTBdLHZbMTRdKTsgXAorICAgIEcociwzLHZbIDNdLHZbIDddLHZbMTFdLHZbMTVdKTsgXAorICAgIEcociw0LHZbIDBdLHZbIDVdLHZbMTBdLHZbMTVdKTsgXAorICAgIEcociw1LHZbIDFdLHZbIDZdLHZbMTFdLHZbMTJdKTsgXAorICAgIEcociw2LHZbIDJdLHZbIDddLHZbIDhdLHZbMTNdKTsgXAorICAgIEcociw3LHZbIDNdLHZbIDRdLHZbIDldLHZbMTRdKTsgXAorICB9IHdoaWxlKDApCisgIFJPVU5EKCAwICk7CisgIFJPVU5EKCAxICk7CisgIFJPVU5EKCAyICk7CisgIFJPVU5EKCAzICk7CisgIFJPVU5EKCA0ICk7CisgIFJPVU5EKCA1ICk7CisgIFJPVU5EKCA2ICk7CisgIFJPVU5EKCA3ICk7CisgIFJPVU5EKCA4ICk7CisgIFJPVU5EKCA5ICk7CisgIFJPVU5EKCAxMCApOworICBST1VORCggMTEgKTsKKworICBmb3IoIGkgPSAwOyBpIDwgODsgKytpICkKKyAgICBTLT5oW2ldID0gUy0+aFtpXSBeIHZbaV0gXiB2W2kgKyA4XTsKKworI3VuZGVmIEcKKyN1bmRlZiBST1VORAorICByZXR1cm4gMDsKK30KKworLyogaW5sZW4gbm93IGluIGJ5dGVzICovCitpbnQgYmxha2UyYl91cGRhdGUoIGJsYWtlMmJfc3RhdGUgKlMsIGNvbnN0IHVpbnQ4X3QgKmluLCB1aW50NjRfdCBpbmxlbiApCit7CisgIHdoaWxlKCBpbmxlbiA+IDAgKQorICB7CisgICAgc2l6ZV90IGxlZnQgPSBTLT5idWZsZW47CisgICAgc2l6ZV90IGZpbGwgPSAyICogQkxBS0UyQl9CTE9DS0JZVEVTIC0gbGVmdDsKKworICAgIGlmKCBpbmxlbiA+IGZpbGwgKQorICAgIHsKKyAgICAgIG1lbWNweSggUy0+YnVmICsgbGVmdCwgaW4sIGZpbGwgKTsgLyogRmlsbCBidWZmZXIgKi8KKyAgICAgIFMtPmJ1ZmxlbiArPSBmaWxsOworICAgICAgYmxha2UyYl9pbmNyZW1lbnRfY291bnRlciggUywgQkxBS0UyQl9CTE9DS0JZVEVTICk7CisgICAgICBibGFrZTJiX2NvbXByZXNzKCBTLCBTLT5idWYgKTsgLyogQ29tcHJlc3MgKi8KKyAgICAgIG1lbWNweSggUy0+YnVmLCBTLT5idWYgKyBCTEFLRTJCX0JMT0NLQllURVMsIEJMQUtFMkJfQkxPQ0tCWVRFUyApOyAvKiBTaGlmdCBidWZmZXIgbGVmdCAqLworICAgICAgUy0+YnVmbGVuIC09IEJMQUtFMkJfQkxPQ0tCWVRFUzsKKyAgICAgIGluICs9IGZpbGw7CisgICAgICBpbmxlbiAtPSBmaWxsOworICAgIH0KKyAgICBlbHNlIC8qIGlubGVuIDw9IGZpbGwgKi8KKyAgICB7CisgICAgICBtZW1jcHkoIFMtPmJ1ZiArIGxlZnQsIGluLCAoc2l6ZV90KWlubGVuICk7CisgICAgICBTLT5idWZsZW4gKz0gKHNpemVfdClpbmxlbjsgLyogQmUgbGF6eSwgZG8gbm90IGNvbXByZXNzICovCisgICAgICBpbiArPSBpbmxlbjsKKyAgICAgIGlubGVuIC09IGlubGVuOworICAgIH0KKyAgfQorCisgIHJldHVybiAwOworfQorCisvKiBJcyB0aGlzIGNvcnJlY3Q/ICovCitpbnQgYmxha2UyYl9maW5hbCggYmxha2UyYl9zdGF0ZSAqUywgdWludDhfdCAqb3V0LCB1aW50OF90IG91dGxlbiApCit7CisgIHVpbnQ4X3QgYnVmZmVyW0JMQUtFMkJfT1VUQllURVNdID0gezB9OworICBpbnQgaTsKKworICBpZiggb3V0ID09IE5VTEwgfHwgb3V0bGVuID09IDAgfHwgb3V0bGVuID4gQkxBS0UyQl9PVVRCWVRFUyApCisgICAgcmV0dXJuIC0xOworCisgIGlmKCBibGFrZTJiX2lzX2xhc3RibG9jayggUyApICkKKyAgICByZXR1cm4gLTE7CisKKyAgaWYoIFMtPmJ1ZmxlbiA+IEJMQUtFMkJfQkxPQ0tCWVRFUyApCisgIHsKKyAgICBibGFrZTJiX2luY3JlbWVudF9jb3VudGVyKCBTLCBCTEFLRTJCX0JMT0NLQllURVMgKTsKKyAgICBibGFrZTJiX2NvbXByZXNzKCBTLCBTLT5idWYgKTsKKyAgICBTLT5idWZsZW4gLT0gQkxBS0UyQl9CTE9DS0JZVEVTOworICAgIG1lbW1vdmUoIFMtPmJ1ZiwgUy0+YnVmICsgQkxBS0UyQl9CTE9DS0JZVEVTLCBTLT5idWZsZW4gKTsKKyAgfQorCisgIGJsYWtlMmJfaW5jcmVtZW50X2NvdW50ZXIoIFMsIFMtPmJ1ZmxlbiApOworICBibGFrZTJiX3NldF9sYXN0YmxvY2soIFMgKTsKKyAgbWVtc2V0KCBTLT5idWYgKyBTLT5idWZsZW4sIDAsIDIgKiBCTEFLRTJCX0JMT0NLQllURVMgLSBTLT5idWZsZW4gKTsgLyogUGFkZGluZyAqLworICBibGFrZTJiX2NvbXByZXNzKCBTLCBTLT5idWYgKTsKKworICBmb3IoIGkgPSAwOyBpIDwgODsgKytpICkgLyogT3V0cHV0IGZ1bGwgaGFzaCB0byB0ZW1wIGJ1ZmZlciAqLworICAgIHN0b3JlNjQoIGJ1ZmZlciArIHNpemVvZiggUy0+aFtpXSApICogaSwgUy0+aFtpXSApOworCisgIG1lbWNweSggb3V0LCBidWZmZXIsIG91dGxlbiApOworICByZXR1cm4gMDsKK30KKworLyogaW5sZW4sIGF0IGxlYXN0LCBzaG91bGQgYmUgdWludDY0X3QuIE90aGVycyBjYW4gYmUgc2l6ZV90LiAqLworaW50IGJsYWtlMmIoIHVpbnQ4X3QgKm91dCwgY29uc3Qgdm9pZCAqaW4sIGNvbnN0IHZvaWQgKmtleSwgY29uc3QgdWludDhfdCBvdXRsZW4sIGNvbnN0IHVpbnQ2NF90IGlubGVuLCB1aW50OF90IGtleWxlbiApCit7CisgIGJsYWtlMmJfc3RhdGUgU1sxXTsKKworICAvKiBWZXJpZnkgcGFyYW1ldGVycyAqLworICBpZiAoIE5VTEwgPT0gaW4gJiYgaW5sZW4gPiAwICkgcmV0dXJuIC0xOworCisgIGlmICggTlVMTCA9PSBvdXQgKSByZXR1cm4gLTE7CisKKyAgaWYoIE5VTEwgPT0ga2V5ICYmIGtleWxlbiA+IDAgKSByZXR1cm4gLTE7CisKKyAgaWYoICFvdXRsZW4gfHwgb3V0bGVuID4gQkxBS0UyQl9PVVRCWVRFUyApIHJldHVybiAtMTsKKworICBpZigga2V5bGVuID4gQkxBS0UyQl9LRVlCWVRFUyApIHJldHVybiAtMTsKKworICBpZigga2V5bGVuID4gMCApCisgIHsKKyAgICBpZiggYmxha2UyYl9pbml0X2tleSggUywgb3V0bGVuLCBrZXksIGtleWxlbiApIDwgMCApIHJldHVybiAtMTsKKyAgfQorICBlbHNlCisgIHsKKyAgICBpZiggYmxha2UyYl9pbml0KCBTLCBvdXRsZW4gKSA8IDAgKSByZXR1cm4gLTE7CisgIH0KKworICBibGFrZTJiX3VwZGF0ZSggUywgKCBjb25zdCB1aW50OF90ICogKWluLCBpbmxlbiApOworICBibGFrZTJiX2ZpbmFsKCBTLCBvdXQsIG91dGxlbiApOworICByZXR1cm4gMDsKK30KKworI2lmIGRlZmluZWQoU1VQRVJDT1ApCitpbnQgY3J5cHRvX2hhc2goIHVuc2lnbmVkIGNoYXIgKm91dCwgdW5zaWduZWQgY2hhciAqaW4sIHVuc2lnbmVkIGxvbmcgbG9uZyBpbmxlbiApCit7CisgIHJldHVybiBibGFrZTJiKCBvdXQsIGluLCBOVUxMLCBCTEFLRTJCX09VVEJZVEVTLCBpbmxlbiwgMCApOworfQorI2VuZGlmCisKKyNpZiBkZWZpbmVkKEJMQUtFMkJfU0VMRlRFU1QpCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSAiYmxha2UyLWthdC5oIgoraW50IG1haW4oIGludCBhcmdjLCBjaGFyICoqYXJndiApCit7CisgIHVpbnQ4X3Qga2V5W0JMQUtFMkJfS0VZQllURVNdOworICB1aW50OF90IGJ1ZltLQVRfTEVOR1RIXTsKKyAgc2l6ZV90IGk7CisKKyAgZm9yKCBpID0gMDsgaSA8IEJMQUtFMkJfS0VZQllURVM7ICsraSApCisgICAga2V5W2ldID0gKCB1aW50OF90IClpOworCisgIGZvciggaSA9IDA7IGkgPCBLQVRfTEVOR1RIOyArK2kgKQorICAgIGJ1ZltpXSA9ICggdWludDhfdCApaTsKKworICBmb3IoIGkgPSAwOyBpIDwgS0FUX0xFTkdUSDsgKytpICkKKyAgeworICAgIHVpbnQ4X3QgaGFzaFtCTEFLRTJCX09VVEJZVEVTXTsKKyAgICBibGFrZTJiKCBoYXNoLCBidWYsIGtleSwgQkxBS0UyQl9PVVRCWVRFUywgaSwgQkxBS0UyQl9LRVlCWVRFUyApOworCisgICAgaWYoIDAgIT0gbWVtY21wKCBoYXNoLCBibGFrZTJiX2tleWVkX2thdFtpXSwgQkxBS0UyQl9PVVRCWVRFUyApICkKKyAgICB7CisgICAgICBwdXRzKCAiZXJyb3IiICk7CisgICAgICByZXR1cm4gLTE7CisgICAgfQorICB9CisKKyAgcHV0cyggIm9rIiApOworICByZXR1cm4gMDsKK30KKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJiLXJvdW5kLmggYi9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJiLXJvdW5kLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGNlMjI1NQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMmItcm91bmQuaApAQCAtMCwwICsxLDE1OSBAQAorLyoKKyAgIEJMQUtFMiByZWZlcmVuY2Ugc291cmNlIGNvZGUgcGFja2FnZSAtIG9wdGltaXplZCBDIGltcGxlbWVudGF0aW9ucworICAKKyAgIENvcHlyaWdodCAyMDEyLCBTYW11ZWwgTmV2ZXMgPHNuZXZlc0BkZWkudWMucHQ+LiAgWW91IG1heSB1c2UgdGhpcyB1bmRlciB0aGUKKyAgIHRlcm1zIG9mIHRoZSBDQzAsIHRoZSBPcGVuU1NMIExpY2VuY2UsIG9yIHRoZSBBcGFjaGUgUHVibGljIExpY2Vuc2UgMi4wLCBhdAorICAgeW91ciBvcHRpb24uICBUaGUgdGVybXMgb2YgdGhlc2UgbGljZW5zZXMgY2FuIGJlIGZvdW5kIGF0OgorICAKKyAgIC0gQ0MwIDEuMCBVbml2ZXJzYWwgOiBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAKKyAgIC0gT3BlblNTTCBsaWNlbnNlICAgOiBodHRwczovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2UvbGljZW5zZS5odG1sCisgICAtIEFwYWNoZSAyLjAgICAgICAgIDogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgIAorICAgTW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgQkxBS0UyIGhhc2ggZnVuY3Rpb24gY2FuIGJlIGZvdW5kIGF0CisgICBodHRwczovL2JsYWtlMi5uZXQuCisqLworI3ByYWdtYSBvbmNlCisjaWZuZGVmIF9fQkxBS0UyQl9ST1VORF9IX18KKyNkZWZpbmUgX19CTEFLRTJCX1JPVU5EX0hfXworCisjZGVmaW5lIExPQURVKHApICBfbW1fbG9hZHVfc2kxMjgoIChjb25zdCBfX20xMjhpICopKHApICkKKyNkZWZpbmUgU1RPUkVVKHAscikgX21tX3N0b3JldV9zaTEyOCgoX19tMTI4aSAqKShwKSwgcikKKworI2RlZmluZSBUT0YocmVnKSBfbW1fY2FzdHNpMTI4X3BzKChyZWcpKQorI2RlZmluZSBUT0kocmVnKSBfbW1fY2FzdHBzX3NpMTI4KChyZWcpKQorCisjZGVmaW5lIExJS0VMWSh4KSBfX2J1aWx0aW5fZXhwZWN0KCh4KSwxKQorCisKKy8qIE1pY3JvYXJjaGl0ZWN0dXJlLXNwZWNpZmljIG1hY3JvcyAqLworI2lmbmRlZiBIQVZFX1hPUAorI2lmZGVmIEhBVkVfU1NTRTMKKyNkZWZpbmUgX21tX3JvdGlfZXBpNjQoeCwgYykgXAorICAgICgtKGMpID09IDMyKSA/IF9tbV9zaHVmZmxlX2VwaTMyKCh4KSwgX01NX1NIVUZGTEUoMiwzLDAsMSkpICBcCisgICAgOiAoLShjKSA9PSAyNCkgPyBfbW1fc2h1ZmZsZV9lcGk4KCh4KSwgcjI0KSBcCisgICAgOiAoLShjKSA9PSAxNikgPyBfbW1fc2h1ZmZsZV9lcGk4KCh4KSwgcjE2KSBcCisgICAgOiAoLShjKSA9PSA2MykgPyBfbW1feG9yX3NpMTI4KF9tbV9zcmxpX2VwaTY0KCh4KSwgLShjKSksIF9tbV9hZGRfZXBpNjQoKHgpLCAoeCkpKSAgXAorICAgIDogX21tX3hvcl9zaTEyOChfbW1fc3JsaV9lcGk2NCgoeCksIC0oYykpLCBfbW1fc2xsaV9lcGk2NCgoeCksIDY0LSgtKGMpKSkpCisjZWxzZQorI2RlZmluZSBfbW1fcm90aV9lcGk2NChyLCBjKSBfbW1feG9yX3NpMTI4KF9tbV9zcmxpX2VwaTY0KCAociksIC0oYykgKSxfbW1fc2xsaV9lcGk2NCggKHIpLCA2NC0oLShjKSkgKSkKKyNlbmRpZgorI2Vsc2UKKy8qIC4uLiAqLworI2VuZGlmCisKKworCisjZGVmaW5lIEcxKHJvdzFsLHJvdzJsLHJvdzNsLHJvdzRsLHJvdzFoLHJvdzJoLHJvdzNoLHJvdzRoLGIwLGIxKSBcCisgIHJvdzFsID0gX21tX2FkZF9lcGk2NChfbW1fYWRkX2VwaTY0KHJvdzFsLCBiMCksIHJvdzJsKTsgXAorICByb3cxaCA9IF9tbV9hZGRfZXBpNjQoX21tX2FkZF9lcGk2NChyb3cxaCwgYjEpLCByb3cyaCk7IFwKKyAgXAorICByb3c0bCA9IF9tbV94b3Jfc2kxMjgocm93NGwsIHJvdzFsKTsgXAorICByb3c0aCA9IF9tbV94b3Jfc2kxMjgocm93NGgsIHJvdzFoKTsgXAorICBcCisgIHJvdzRsID0gX21tX3JvdGlfZXBpNjQocm93NGwsIC0zMik7IFwKKyAgcm93NGggPSBfbW1fcm90aV9lcGk2NChyb3c0aCwgLTMyKTsgXAorICBcCisgIHJvdzNsID0gX21tX2FkZF9lcGk2NChyb3czbCwgcm93NGwpOyBcCisgIHJvdzNoID0gX21tX2FkZF9lcGk2NChyb3czaCwgcm93NGgpOyBcCisgIFwKKyAgcm93MmwgPSBfbW1feG9yX3NpMTI4KHJvdzJsLCByb3czbCk7IFwKKyAgcm93MmggPSBfbW1feG9yX3NpMTI4KHJvdzJoLCByb3czaCk7IFwKKyAgXAorICByb3cybCA9IF9tbV9yb3RpX2VwaTY0KHJvdzJsLCAtMjQpOyBcCisgIHJvdzJoID0gX21tX3JvdGlfZXBpNjQocm93MmgsIC0yNCk7IFwKKyAKKyNkZWZpbmUgRzIocm93MWwscm93Mmwscm93M2wscm93NGwscm93MWgscm93Mmgscm93M2gscm93NGgsYjAsYjEpIFwKKyAgcm93MWwgPSBfbW1fYWRkX2VwaTY0KF9tbV9hZGRfZXBpNjQocm93MWwsIGIwKSwgcm93MmwpOyBcCisgIHJvdzFoID0gX21tX2FkZF9lcGk2NChfbW1fYWRkX2VwaTY0KHJvdzFoLCBiMSksIHJvdzJoKTsgXAorICBcCisgIHJvdzRsID0gX21tX3hvcl9zaTEyOChyb3c0bCwgcm93MWwpOyBcCisgIHJvdzRoID0gX21tX3hvcl9zaTEyOChyb3c0aCwgcm93MWgpOyBcCisgIFwKKyAgcm93NGwgPSBfbW1fcm90aV9lcGk2NChyb3c0bCwgLTE2KTsgXAorICByb3c0aCA9IF9tbV9yb3RpX2VwaTY0KHJvdzRoLCAtMTYpOyBcCisgIFwKKyAgcm93M2wgPSBfbW1fYWRkX2VwaTY0KHJvdzNsLCByb3c0bCk7IFwKKyAgcm93M2ggPSBfbW1fYWRkX2VwaTY0KHJvdzNoLCByb3c0aCk7IFwKKyAgXAorICByb3cybCA9IF9tbV94b3Jfc2kxMjgocm93MmwsIHJvdzNsKTsgXAorICByb3cyaCA9IF9tbV94b3Jfc2kxMjgocm93MmgsIHJvdzNoKTsgXAorICBcCisgIHJvdzJsID0gX21tX3JvdGlfZXBpNjQocm93MmwsIC02Myk7IFwKKyAgcm93MmggPSBfbW1fcm90aV9lcGk2NChyb3cyaCwgLTYzKTsgXAorIAorI2lmIGRlZmluZWQoSEFWRV9TU1NFMykKKyNkZWZpbmUgRElBR09OQUxJWkUocm93MWwscm93Mmwscm93M2wscm93NGwscm93MWgscm93Mmgscm93M2gscm93NGgpIFwKKyAgdDAgPSBfbW1fYWxpZ25yX2VwaTgocm93MmgsIHJvdzJsLCA4KTsgXAorICB0MSA9IF9tbV9hbGlnbnJfZXBpOChyb3cybCwgcm93MmgsIDgpOyBcCisgIHJvdzJsID0gdDA7IFwKKyAgcm93MmggPSB0MTsgXAorICBcCisgIHQwID0gcm93M2w7IFwKKyAgcm93M2wgPSByb3czaDsgXAorICByb3czaCA9IHQwOyAgICBcCisgIFwKKyAgdDAgPSBfbW1fYWxpZ25yX2VwaTgocm93NGgsIHJvdzRsLCA4KTsgXAorICB0MSA9IF9tbV9hbGlnbnJfZXBpOChyb3c0bCwgcm93NGgsIDgpOyBcCisgIHJvdzRsID0gdDE7IFwKKyAgcm93NGggPSB0MDsKKworI2RlZmluZSBVTkRJQUdPTkFMSVpFKHJvdzFsLHJvdzJsLHJvdzNsLHJvdzRsLHJvdzFoLHJvdzJoLHJvdzNoLHJvdzRoKSBcCisgIHQwID0gX21tX2FsaWducl9lcGk4KHJvdzJsLCByb3cyaCwgOCk7IFwKKyAgdDEgPSBfbW1fYWxpZ25yX2VwaTgocm93MmgsIHJvdzJsLCA4KTsgXAorICByb3cybCA9IHQwOyBcCisgIHJvdzJoID0gdDE7IFwKKyAgXAorICB0MCA9IHJvdzNsOyBcCisgIHJvdzNsID0gcm93M2g7IFwKKyAgcm93M2ggPSB0MDsgXAorICBcCisgIHQwID0gX21tX2FsaWducl9lcGk4KHJvdzRsLCByb3c0aCwgOCk7IFwKKyAgdDEgPSBfbW1fYWxpZ25yX2VwaTgocm93NGgsIHJvdzRsLCA4KTsgXAorICByb3c0bCA9IHQxOyBcCisgIHJvdzRoID0gdDA7CisjZWxzZQorCisjZGVmaW5lIERJQUdPTkFMSVpFKHJvdzFsLHJvdzJsLHJvdzNsLHJvdzRsLHJvdzFoLHJvdzJoLHJvdzNoLHJvdzRoKSBcCisgIHQwID0gcm93NGw7XAorICB0MSA9IHJvdzJsO1wKKyAgcm93NGwgPSByb3czbDtcCisgIHJvdzNsID0gcm93M2g7XAorICByb3czaCA9IHJvdzRsO1wKKyAgcm93NGwgPSBfbW1fdW5wYWNraGlfZXBpNjQocm93NGgsIF9tbV91bnBhY2tsb19lcGk2NCh0MCwgdDApKTsgXAorICByb3c0aCA9IF9tbV91bnBhY2toaV9lcGk2NCh0MCwgX21tX3VucGFja2xvX2VwaTY0KHJvdzRoLCByb3c0aCkpOyBcCisgIHJvdzJsID0gX21tX3VucGFja2hpX2VwaTY0KHJvdzJsLCBfbW1fdW5wYWNrbG9fZXBpNjQocm93MmgsIHJvdzJoKSk7IFwKKyAgcm93MmggPSBfbW1fdW5wYWNraGlfZXBpNjQocm93MmgsIF9tbV91bnBhY2tsb19lcGk2NCh0MSwgdDEpKQorCisjZGVmaW5lIFVORElBR09OQUxJWkUocm93MWwscm93Mmwscm93M2wscm93NGwscm93MWgscm93Mmgscm93M2gscm93NGgpIFwKKyAgdDAgPSByb3czbDtcCisgIHJvdzNsID0gcm93M2g7XAorICByb3czaCA9IHQwO1wKKyAgdDAgPSByb3cybDtcCisgIHQxID0gcm93NGw7XAorICByb3cybCA9IF9tbV91bnBhY2toaV9lcGk2NChyb3cyaCwgX21tX3VucGFja2xvX2VwaTY0KHJvdzJsLCByb3cybCkpOyBcCisgIHJvdzJoID0gX21tX3VucGFja2hpX2VwaTY0KHQwLCBfbW1fdW5wYWNrbG9fZXBpNjQocm93MmgsIHJvdzJoKSk7IFwKKyAgcm93NGwgPSBfbW1fdW5wYWNraGlfZXBpNjQocm93NGwsIF9tbV91bnBhY2tsb19lcGk2NChyb3c0aCwgcm93NGgpKTsgXAorICByb3c0aCA9IF9tbV91bnBhY2toaV9lcGk2NChyb3c0aCwgX21tX3VucGFja2xvX2VwaTY0KHQxLCB0MSkpCisKKyNlbmRpZgorCisjaWYgZGVmaW5lZChIQVZFX1NTRTQxKQorI2luY2x1ZGUgImJsYWtlMmItbG9hZC1zc2U0MS5oIgorI2Vsc2UKKyNpbmNsdWRlICJibGFrZTJiLWxvYWQtc3NlMi5oIgorI2VuZGlmCisKKyNkZWZpbmUgUk9VTkQocikgXAorICBMT0FEX01TR18gIyNyICMjXzEoYjAsIGIxKTsgXAorICBHMShyb3cxbCxyb3cybCxyb3czbCxyb3c0bCxyb3cxaCxyb3cyaCxyb3czaCxyb3c0aCxiMCxiMSk7IFwKKyAgTE9BRF9NU0dfICMjciAjI18yKGIwLCBiMSk7IFwKKyAgRzIocm93MWwscm93Mmwscm93M2wscm93NGwscm93MWgscm93Mmgscm93M2gscm93NGgsYjAsYjEpOyBcCisgIERJQUdPTkFMSVpFKHJvdzFsLHJvdzJsLHJvdzNsLHJvdzRsLHJvdzFoLHJvdzJoLHJvdzNoLHJvdzRoKTsgXAorICBMT0FEX01TR18gIyNyICMjXzMoYjAsIGIxKTsgXAorICBHMShyb3cxbCxyb3cybCxyb3czbCxyb3c0bCxyb3cxaCxyb3cyaCxyb3czaCxyb3c0aCxiMCxiMSk7IFwKKyAgTE9BRF9NU0dfICMjciAjI180KGIwLCBiMSk7IFwKKyAgRzIocm93MWwscm93Mmwscm93M2wscm93NGwscm93MWgscm93Mmgscm93M2gscm93NGgsYjAsYjEpOyBcCisgIFVORElBR09OQUxJWkUocm93MWwscm93Mmwscm93M2wscm93NGwscm93MWgscm93Mmgscm93M2gscm93NGgpOworCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2UyYi5jIGIvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2UyYi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViYjY1YmIKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJiLmMKQEAgLTAsMCArMSw0NTMgQEAKKy8qCisgICBCTEFLRTIgcmVmZXJlbmNlIHNvdXJjZSBjb2RlIHBhY2thZ2UgLSBvcHRpbWl6ZWQgQyBpbXBsZW1lbnRhdGlvbnMKKyAgCisgICBDb3B5cmlnaHQgMjAxMiwgU2FtdWVsIE5ldmVzIDxzbmV2ZXNAZGVpLnVjLnB0Pi4gIFlvdSBtYXkgdXNlIHRoaXMgdW5kZXIgdGhlCisgICB0ZXJtcyBvZiB0aGUgQ0MwLCB0aGUgT3BlblNTTCBMaWNlbmNlLCBvciB0aGUgQXBhY2hlIFB1YmxpYyBMaWNlbnNlIDIuMCwgYXQKKyAgIHlvdXIgb3B0aW9uLiAgVGhlIHRlcm1zIG9mIHRoZXNlIGxpY2Vuc2VzIGNhbiBiZSBmb3VuZCBhdDoKKyAgCisgICAtIENDMCAxLjAgVW5pdmVyc2FsIDogaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wCisgICAtIE9wZW5TU0wgbGljZW5zZSAgIDogaHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvc291cmNlL2xpY2Vuc2UuaHRtbAorICAgLSBBcGFjaGUgMi4wICAgICAgICA6IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAKKyAgIE1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIEJMQUtFMiBoYXNoIGZ1bmN0aW9uIGNhbiBiZSBmb3VuZCBhdAorICAgaHR0cHM6Ly9ibGFrZTIubmV0LgorKi8KKworI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNpbmNsdWRlICJibGFrZTIuaCIKKyNpbmNsdWRlICJibGFrZTItaW1wbC5oIgorCisjaW5jbHVkZSAiYmxha2UyLWNvbmZpZy5oIgorCisjaWZkZWYgX01TQ19WRVIKKyNpbmNsdWRlIDxpbnRyaW4uaD4gLyogZm9yIF9tbV9zZXRfZXBpNjR4ICovCisjZW5kaWYKKyNpbmNsdWRlIDxlbW1pbnRyaW4uaD4KKyNpZiBkZWZpbmVkKEhBVkVfU1NTRTMpCisjaW5jbHVkZSA8dG1taW50cmluLmg+CisjZW5kaWYKKyNpZiBkZWZpbmVkKEhBVkVfU1NFNDEpCisjaW5jbHVkZSA8c21taW50cmluLmg+CisjZW5kaWYKKyNpZiBkZWZpbmVkKEhBVkVfQVZYKQorI2luY2x1ZGUgPGltbWludHJpbi5oPgorI2VuZGlmCisjaWYgZGVmaW5lZChIQVZFX1hPUCkKKyNpbmNsdWRlIDx4ODZpbnRyaW4uaD4KKyNlbmRpZgorCisjaW5jbHVkZSAiYmxha2UyYi1yb3VuZC5oIgorCitzdGF0aWMgY29uc3QgdWludDY0X3QgYmxha2UyYl9JVls4XSA9Cit7CisgIDB4NmEwOWU2NjdmM2JjYzkwOFVMTCwgMHhiYjY3YWU4NTg0Y2FhNzNiVUxMLAorICAweDNjNmVmMzcyZmU5NGY4MmJVTEwsIDB4YTU0ZmY1M2E1ZjFkMzZmMVVMTCwKKyAgMHg1MTBlNTI3ZmFkZTY4MmQxVUxMLCAweDliMDU2ODhjMmIzZTZjMWZVTEwsCisgIDB4MWY4M2Q5YWJmYjQxYmQ2YlVMTCwgMHg1YmUwY2QxOTEzN2UyMTc5VUxMCit9OworCitzdGF0aWMgY29uc3QgdWludDhfdCBibGFrZTJiX3NpZ21hWzEyXVsxNl0gPQoreworICB7ICAwLCAgMSwgIDIsICAzLCAgNCwgIDUsICA2LCAgNywgIDgsICA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1IH0gLAorICB7IDE0LCAxMCwgIDQsICA4LCAgOSwgMTUsIDEzLCAgNiwgIDEsIDEyLCAgMCwgIDIsIDExLCAgNywgIDUsICAzIH0gLAorICB7IDExLCAgOCwgMTIsICAwLCAgNSwgIDIsIDE1LCAxMywgMTAsIDE0LCAgMywgIDYsICA3LCAgMSwgIDksICA0IH0gLAorICB7ICA3LCAgOSwgIDMsICAxLCAxMywgMTIsIDExLCAxNCwgIDIsICA2LCAgNSwgMTAsICA0LCAgMCwgMTUsICA4IH0gLAorICB7ICA5LCAgMCwgIDUsICA3LCAgMiwgIDQsIDEwLCAxNSwgMTQsICAxLCAxMSwgMTIsICA2LCAgOCwgIDMsIDEzIH0gLAorICB7ICAyLCAxMiwgIDYsIDEwLCAgMCwgMTEsICA4LCAgMywgIDQsIDEzLCAgNywgIDUsIDE1LCAxNCwgIDEsICA5IH0gLAorICB7IDEyLCAgNSwgIDEsIDE1LCAxNCwgMTMsICA0LCAxMCwgIDAsICA3LCAgNiwgIDMsICA5LCAgMiwgIDgsIDExIH0gLAorICB7IDEzLCAxMSwgIDcsIDE0LCAxMiwgIDEsICAzLCAgOSwgIDUsICAwLCAxNSwgIDQsICA4LCAgNiwgIDIsIDEwIH0gLAorICB7ICA2LCAxNSwgMTQsICA5LCAxMSwgIDMsICAwLCAgOCwgMTIsICAyLCAxMywgIDcsICAxLCAgNCwgMTAsICA1IH0gLAorICB7IDEwLCAgMiwgIDgsICA0LCAgNywgIDYsICAxLCAgNSwgMTUsIDExLCAgOSwgMTQsICAzLCAxMiwgMTMgLCAwIH0gLAorICB7ICAwLCAgMSwgIDIsICAzLCAgNCwgIDUsICA2LCAgNywgIDgsICA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1IH0gLAorICB7IDE0LCAxMCwgIDQsICA4LCAgOSwgMTUsIDEzLCAgNiwgIDEsIDEyLCAgMCwgIDIsIDExLCAgNywgIDUsICAzIH0KK307CisKKworLyogU29tZSBoZWxwZXIgZnVuY3Rpb25zLCBub3QgbmVjZXNzYXJpbHkgdXNlZnVsICovCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9zZXRfbGFzdG5vZGUoIGJsYWtlMmJfc3RhdGUgKlMgKQoreworICBTLT5mWzFdID0gLTE7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9jbGVhcl9sYXN0bm9kZSggYmxha2UyYl9zdGF0ZSAqUyApCit7CisgIFMtPmZbMV0gPSAwOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfaXNfbGFzdGJsb2NrKCBjb25zdCBibGFrZTJiX3N0YXRlICpTICkKK3sKKyAgcmV0dXJuIFMtPmZbMF0gIT0gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfc2V0X2xhc3RibG9jayggYmxha2UyYl9zdGF0ZSAqUyApCit7CisgIGlmKCBTLT5sYXN0X25vZGUgKSBibGFrZTJiX3NldF9sYXN0bm9kZSggUyApOworCisgIFMtPmZbMF0gPSAtMTsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJiX2NsZWFyX2xhc3RibG9jayggYmxha2UyYl9zdGF0ZSAqUyApCit7CisgIGlmKCBTLT5sYXN0X25vZGUgKSBibGFrZTJiX2NsZWFyX2xhc3Rub2RlKCBTICk7CisKKyAgUy0+ZlswXSA9IDA7CisgIHJldHVybiAwOworfQorCisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJiX2luY3JlbWVudF9jb3VudGVyKCBibGFrZTJiX3N0YXRlICpTLCBjb25zdCB1aW50NjRfdCBpbmMgKQoreworI2lmIF9feDg2XzY0X18KKyAgLyogQUREL0FEQyBjaGFpbiAqLworICBfX3VpbnQxMjhfdCB0ID0gKCAoIF9fdWludDEyOF90IClTLT50WzFdIDw8IDY0ICkgfCBTLT50WzBdOworICB0ICs9IGluYzsKKyAgUy0+dFswXSA9ICggdWludDY0X3QgKSggdCA+PiAgMCApOworICBTLT50WzFdID0gKCB1aW50NjRfdCApKCB0ID4+IDY0ICk7CisjZWxzZQorICBTLT50WzBdICs9IGluYzsKKyAgUy0+dFsxXSArPSAoIFMtPnRbMF0gPCBpbmMgKTsKKyNlbmRpZgorICByZXR1cm4gMDsKK30KKworCisvKiBQYXJhbWV0ZXItcmVsYXRlZCBmdW5jdGlvbnMgKi8KK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJiX3BhcmFtX3NldF9kaWdlc3RfbGVuZ3RoKCBibGFrZTJiX3BhcmFtICpQLCBjb25zdCB1aW50OF90IGRpZ2VzdF9sZW5ndGggKQoreworICBQLT5kaWdlc3RfbGVuZ3RoID0gZGlnZXN0X2xlbmd0aDsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJiX3BhcmFtX3NldF9mYW5vdXQoIGJsYWtlMmJfcGFyYW0gKlAsIGNvbnN0IHVpbnQ4X3QgZmFub3V0ICkKK3sKKyAgUC0+ZmFub3V0ID0gZmFub3V0OworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfcGFyYW1fc2V0X21heF9kZXB0aCggYmxha2UyYl9wYXJhbSAqUCwgY29uc3QgdWludDhfdCBkZXB0aCApCit7CisgIFAtPmRlcHRoID0gZGVwdGg7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9wYXJhbV9zZXRfbGVhZl9sZW5ndGgoIGJsYWtlMmJfcGFyYW0gKlAsIGNvbnN0IHVpbnQzMl90IGxlYWZfbGVuZ3RoICkKK3sKKyAgUC0+bGVhZl9sZW5ndGggPSBsZWFmX2xlbmd0aDsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJiX3BhcmFtX3NldF9ub2RlX29mZnNldCggYmxha2UyYl9wYXJhbSAqUCwgY29uc3QgdWludDY0X3Qgbm9kZV9vZmZzZXQgKQoreworICBQLT5ub2RlX29mZnNldCA9IG5vZGVfb2Zmc2V0OworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfcGFyYW1fc2V0X25vZGVfZGVwdGgoIGJsYWtlMmJfcGFyYW0gKlAsIGNvbnN0IHVpbnQ4X3Qgbm9kZV9kZXB0aCApCit7CisgIFAtPm5vZGVfZGVwdGggPSBub2RlX2RlcHRoOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfcGFyYW1fc2V0X2lubmVyX2xlbmd0aCggYmxha2UyYl9wYXJhbSAqUCwgY29uc3QgdWludDhfdCBpbm5lcl9sZW5ndGggKQoreworICBQLT5pbm5lcl9sZW5ndGggPSBpbm5lcl9sZW5ndGg7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9wYXJhbV9zZXRfc2FsdCggYmxha2UyYl9wYXJhbSAqUCwgY29uc3QgdWludDhfdCBzYWx0W0JMQUtFMkJfU0FMVEJZVEVTXSApCit7CisgIG1lbWNweSggUC0+c2FsdCwgc2FsdCwgQkxBS0UyQl9TQUxUQllURVMgKTsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJiX3BhcmFtX3NldF9wZXJzb25hbCggYmxha2UyYl9wYXJhbSAqUCwgY29uc3QgdWludDhfdCBwZXJzb25hbFtCTEFLRTJCX1BFUlNPTkFMQllURVNdICkKK3sKKyAgbWVtY3B5KCBQLT5wZXJzb25hbCwgcGVyc29uYWwsIEJMQUtFMkJfUEVSU09OQUxCWVRFUyApOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfaW5pdDAoIGJsYWtlMmJfc3RhdGUgKlMgKQoreworICBpbnQgaTsKKyAgbWVtc2V0KCBTLCAwLCBzaXplb2YoIGJsYWtlMmJfc3RhdGUgKSApOworCisgIGZvciggaSA9IDA7IGkgPCA4OyArK2kgKSBTLT5oW2ldID0gYmxha2UyYl9JVltpXTsKKworICByZXR1cm4gMDsKK30KKworLyogaW5pdCB4b3JzIElWIHdpdGggaW5wdXQgcGFyYW1ldGVyIGJsb2NrICovCitpbnQgYmxha2UyYl9pbml0X3BhcmFtKCBibGFrZTJiX3N0YXRlICpTLCBjb25zdCBibGFrZTJiX3BhcmFtICpQICkKK3sKKyAgLypibGFrZTJiX2luaXQwKCBTICk7ICovCisgIGNvbnN0IHVpbnQ4X3QgKiB2ID0gKCBjb25zdCB1aW50OF90ICogKSggYmxha2UyYl9JViApOworICBjb25zdCB1aW50OF90ICogcCA9ICggY29uc3QgdWludDhfdCAqICkoIFAgKTsKKyAgdWludDhfdCAqIGggPSAoIHVpbnQ4X3QgKiApKCBTLT5oICk7CisgIGludCBpOworICAvKiBJViBYT1IgUGFyYW1CbG9jayAqLworICBtZW1zZXQoIFMsIDAsIHNpemVvZiggYmxha2UyYl9zdGF0ZSApICk7CisKKyAgZm9yKCBpID0gMDsgaSA8IEJMQUtFMkJfT1VUQllURVM7ICsraSApIGhbaV0gPSB2W2ldIF4gcFtpXTsKKworICByZXR1cm4gMDsKK30KKworCisvKiBTb21lIHNvcnQgb2YgZGVmYXVsdCBwYXJhbWV0ZXIgYmxvY2sgaW5pdGlhbGl6YXRpb24sIGZvciBzZXF1ZW50aWFsIGJsYWtlMmIgKi8KK2ludCBibGFrZTJiX2luaXQoIGJsYWtlMmJfc3RhdGUgKlMsIGNvbnN0IHVpbnQ4X3Qgb3V0bGVuICkKK3sKKyAgY29uc3QgYmxha2UyYl9wYXJhbSBQID0KKyAgeworICAgIG91dGxlbiwKKyAgICAwLAorICAgIDEsCisgICAgMSwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIHswfSwKKyAgICB7MH0sCisgICAgezB9CisgIH07CisKKyAgaWYgKCAoICFvdXRsZW4gKSB8fCAoIG91dGxlbiA+IEJMQUtFMkJfT1VUQllURVMgKSApIHJldHVybiAtMTsKKworICByZXR1cm4gYmxha2UyYl9pbml0X3BhcmFtKCBTLCAmUCApOworfQorCitpbnQgYmxha2UyYl9pbml0X2tleSggYmxha2UyYl9zdGF0ZSAqUywgY29uc3QgdWludDhfdCBvdXRsZW4sIGNvbnN0IHZvaWQgKmtleSwgY29uc3QgdWludDhfdCBrZXlsZW4gKQoreworICBjb25zdCBibGFrZTJiX3BhcmFtIFAgPQorICB7CisgICAgb3V0bGVuLAorICAgIGtleWxlbiwKKyAgICAxLAorICAgIDEsCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICB7MH0sCisgICAgezB9LAorICAgIHswfQorICB9OworCisgIGlmICggKCAhb3V0bGVuICkgfHwgKCBvdXRsZW4gPiBCTEFLRTJCX09VVEJZVEVTICkgKSByZXR1cm4gLTE7CisKKyAgaWYgKCAoICFrZXlsZW4gKSB8fCBrZXlsZW4gPiBCTEFLRTJCX0tFWUJZVEVTICkgcmV0dXJuIC0xOworCisgIGlmKCBibGFrZTJiX2luaXRfcGFyYW0oIFMsICZQICkgPCAwICkKKyAgICByZXR1cm4gMDsKKworICB7CisgICAgdWludDhfdCBibG9ja1tCTEFLRTJCX0JMT0NLQllURVNdOworICAgIG1lbXNldCggYmxvY2ssIDAsIEJMQUtFMkJfQkxPQ0tCWVRFUyApOworICAgIG1lbWNweSggYmxvY2ssIGtleSwga2V5bGVuICk7CisgICAgYmxha2UyYl91cGRhdGUoIFMsIGJsb2NrLCBCTEFLRTJCX0JMT0NLQllURVMgKTsKKyAgICBzZWN1cmVfemVyb19tZW1vcnkoIGJsb2NrLCBCTEFLRTJCX0JMT0NLQllURVMgKTsgLyogQnVybiB0aGUga2V5IGZyb20gc3RhY2sgKi8KKyAgfQorICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfY29tcHJlc3MoIGJsYWtlMmJfc3RhdGUgKlMsIGNvbnN0IHVpbnQ4X3QgYmxvY2tbQkxBS0UyQl9CTE9DS0JZVEVTXSApCit7CisgIF9fbTEyOGkgcm93MWwsIHJvdzFoOworICBfX20xMjhpIHJvdzJsLCByb3cyaDsKKyAgX19tMTI4aSByb3czbCwgcm93M2g7CisgIF9fbTEyOGkgcm93NGwsIHJvdzRoOworICBfX20xMjhpIGIwLCBiMTsKKyAgX19tMTI4aSB0MCwgdDE7CisjaWYgZGVmaW5lZChIQVZFX1NTU0UzKSAmJiAhZGVmaW5lZChIQVZFX1hPUCkKKyAgY29uc3QgX19tMTI4aSByMTYgPSBfbW1fc2V0cl9lcGk4KCAyLCAzLCA0LCA1LCA2LCA3LCAwLCAxLCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCA4LCA5ICk7CisgIGNvbnN0IF9fbTEyOGkgcjI0ID0gX21tX3NldHJfZXBpOCggMywgNCwgNSwgNiwgNywgMCwgMSwgMiwgMTEsIDEyLCAxMywgMTQsIDE1LCA4LCA5LCAxMCApOworI2VuZGlmCisjaWYgZGVmaW5lZChIQVZFX1NTRTQxKQorICBjb25zdCBfX20xMjhpIG0wID0gTE9BRFUoIGJsb2NrICsgMDAgKTsKKyAgY29uc3QgX19tMTI4aSBtMSA9IExPQURVKCBibG9jayArIDE2ICk7CisgIGNvbnN0IF9fbTEyOGkgbTIgPSBMT0FEVSggYmxvY2sgKyAzMiApOworICBjb25zdCBfX20xMjhpIG0zID0gTE9BRFUoIGJsb2NrICsgNDggKTsKKyAgY29uc3QgX19tMTI4aSBtNCA9IExPQURVKCBibG9jayArIDY0ICk7CisgIGNvbnN0IF9fbTEyOGkgbTUgPSBMT0FEVSggYmxvY2sgKyA4MCApOworICBjb25zdCBfX20xMjhpIG02ID0gTE9BRFUoIGJsb2NrICsgOTYgKTsKKyAgY29uc3QgX19tMTI4aSBtNyA9IExPQURVKCBibG9jayArIDExMiApOworI2Vsc2UKKyAgY29uc3QgdWludDY0X3QgIG0wID0gKCAoIHVpbnQ2NF90ICogKWJsb2NrIClbIDBdOworICBjb25zdCB1aW50NjRfdCAgbTEgPSAoICggdWludDY0X3QgKiApYmxvY2sgKVsgMV07CisgIGNvbnN0IHVpbnQ2NF90ICBtMiA9ICggKCB1aW50NjRfdCAqIClibG9jayApWyAyXTsKKyAgY29uc3QgdWludDY0X3QgIG0zID0gKCAoIHVpbnQ2NF90ICogKWJsb2NrIClbIDNdOworICBjb25zdCB1aW50NjRfdCAgbTQgPSAoICggdWludDY0X3QgKiApYmxvY2sgKVsgNF07CisgIGNvbnN0IHVpbnQ2NF90ICBtNSA9ICggKCB1aW50NjRfdCAqIClibG9jayApWyA1XTsKKyAgY29uc3QgdWludDY0X3QgIG02ID0gKCAoIHVpbnQ2NF90ICogKWJsb2NrIClbIDZdOworICBjb25zdCB1aW50NjRfdCAgbTcgPSAoICggdWludDY0X3QgKiApYmxvY2sgKVsgN107CisgIGNvbnN0IHVpbnQ2NF90ICBtOCA9ICggKCB1aW50NjRfdCAqIClibG9jayApWyA4XTsKKyAgY29uc3QgdWludDY0X3QgIG05ID0gKCAoIHVpbnQ2NF90ICogKWJsb2NrIClbIDldOworICBjb25zdCB1aW50NjRfdCBtMTAgPSAoICggdWludDY0X3QgKiApYmxvY2sgKVsxMF07CisgIGNvbnN0IHVpbnQ2NF90IG0xMSA9ICggKCB1aW50NjRfdCAqIClibG9jayApWzExXTsKKyAgY29uc3QgdWludDY0X3QgbTEyID0gKCAoIHVpbnQ2NF90ICogKWJsb2NrIClbMTJdOworICBjb25zdCB1aW50NjRfdCBtMTMgPSAoICggdWludDY0X3QgKiApYmxvY2sgKVsxM107CisgIGNvbnN0IHVpbnQ2NF90IG0xNCA9ICggKCB1aW50NjRfdCAqIClibG9jayApWzE0XTsKKyAgY29uc3QgdWludDY0X3QgbTE1ID0gKCAoIHVpbnQ2NF90ICogKWJsb2NrIClbMTVdOworI2VuZGlmCisgIHJvdzFsID0gTE9BRFUoICZTLT5oWzBdICk7CisgIHJvdzFoID0gTE9BRFUoICZTLT5oWzJdICk7CisgIHJvdzJsID0gTE9BRFUoICZTLT5oWzRdICk7CisgIHJvdzJoID0gTE9BRFUoICZTLT5oWzZdICk7CisgIHJvdzNsID0gTE9BRFUoICZibGFrZTJiX0lWWzBdICk7CisgIHJvdzNoID0gTE9BRFUoICZibGFrZTJiX0lWWzJdICk7CisgIHJvdzRsID0gX21tX3hvcl9zaTEyOCggTE9BRFUoICZibGFrZTJiX0lWWzRdICksIExPQURVKCAmUy0+dFswXSApICk7CisgIHJvdzRoID0gX21tX3hvcl9zaTEyOCggTE9BRFUoICZibGFrZTJiX0lWWzZdICksIExPQURVKCAmUy0+ZlswXSApICk7CisgIFJPVU5EKCAwICk7CisgIFJPVU5EKCAxICk7CisgIFJPVU5EKCAyICk7CisgIFJPVU5EKCAzICk7CisgIFJPVU5EKCA0ICk7CisgIFJPVU5EKCA1ICk7CisgIFJPVU5EKCA2ICk7CisgIFJPVU5EKCA3ICk7CisgIFJPVU5EKCA4ICk7CisgIFJPVU5EKCA5ICk7CisgIFJPVU5EKCAxMCApOworICBST1VORCggMTEgKTsKKyAgcm93MWwgPSBfbW1feG9yX3NpMTI4KCByb3czbCwgcm93MWwgKTsKKyAgcm93MWggPSBfbW1feG9yX3NpMTI4KCByb3czaCwgcm93MWggKTsKKyAgU1RPUkVVKCAmUy0+aFswXSwgX21tX3hvcl9zaTEyOCggTE9BRFUoICZTLT5oWzBdICksIHJvdzFsICkgKTsKKyAgU1RPUkVVKCAmUy0+aFsyXSwgX21tX3hvcl9zaTEyOCggTE9BRFUoICZTLT5oWzJdICksIHJvdzFoICkgKTsKKyAgcm93MmwgPSBfbW1feG9yX3NpMTI4KCByb3c0bCwgcm93MmwgKTsKKyAgcm93MmggPSBfbW1feG9yX3NpMTI4KCByb3c0aCwgcm93MmggKTsKKyAgU1RPUkVVKCAmUy0+aFs0XSwgX21tX3hvcl9zaTEyOCggTE9BRFUoICZTLT5oWzRdICksIHJvdzJsICkgKTsKKyAgU1RPUkVVKCAmUy0+aFs2XSwgX21tX3hvcl9zaTEyOCggTE9BRFUoICZTLT5oWzZdICksIHJvdzJoICkgKTsKKyAgcmV0dXJuIDA7Cit9CisKKworaW50IGJsYWtlMmJfdXBkYXRlKCBibGFrZTJiX3N0YXRlICpTLCBjb25zdCB1aW50OF90ICppbiwgdWludDY0X3QgaW5sZW4gKQoreworICB3aGlsZSggaW5sZW4gPiAwICkKKyAgeworICAgIHNpemVfdCBsZWZ0ID0gUy0+YnVmbGVuOworICAgIHNpemVfdCBmaWxsID0gMiAqIEJMQUtFMkJfQkxPQ0tCWVRFUyAtIGxlZnQ7CisKKyAgICBpZiggaW5sZW4gPiBmaWxsICkKKyAgICB7CisgICAgICBtZW1jcHkoIFMtPmJ1ZiArIGxlZnQsIGluLCBmaWxsICk7IC8qIEZpbGwgYnVmZmVyICovCisgICAgICBTLT5idWZsZW4gKz0gZmlsbDsKKyAgICAgIGJsYWtlMmJfaW5jcmVtZW50X2NvdW50ZXIoIFMsIEJMQUtFMkJfQkxPQ0tCWVRFUyApOworICAgICAgYmxha2UyYl9jb21wcmVzcyggUywgUy0+YnVmICk7IC8qIENvbXByZXNzICovCisgICAgICBtZW1jcHkoIFMtPmJ1ZiwgUy0+YnVmICsgQkxBS0UyQl9CTE9DS0JZVEVTLCBCTEFLRTJCX0JMT0NLQllURVMgKTsgLyogU2hpZnQgYnVmZmVyIGxlZnQgKi8KKyAgICAgIFMtPmJ1ZmxlbiAtPSBCTEFLRTJCX0JMT0NLQllURVM7CisgICAgICBpbiArPSBmaWxsOworICAgICAgaW5sZW4gLT0gZmlsbDsKKyAgICB9CisgICAgZWxzZSAvKiBpbmxlbiA8PSBmaWxsICovCisgICAgeworICAgICAgbWVtY3B5KCBTLT5idWYgKyBsZWZ0LCBpbiwgaW5sZW4gKTsKKyAgICAgIFMtPmJ1ZmxlbiArPSBpbmxlbjsgLyogQmUgbGF6eSwgZG8gbm90IGNvbXByZXNzICovCisgICAgICBpbiArPSBpbmxlbjsKKyAgICAgIGlubGVuIC09IGlubGVuOworICAgIH0KKyAgfQorCisgIHJldHVybiAwOworfQorCisKK2ludCBibGFrZTJiX2ZpbmFsKCBibGFrZTJiX3N0YXRlICpTLCB1aW50OF90ICpvdXQsIHVpbnQ4X3Qgb3V0bGVuICkKK3sKKyAgaWYoIG91dGxlbiA+IEJMQUtFMkJfT1VUQllURVMgKQorICAgIHJldHVybiAtMTsKKworICBpZiggYmxha2UyYl9pc19sYXN0YmxvY2soIFMgKSApCisgICAgcmV0dXJuIC0xOworCisgIGlmKCBTLT5idWZsZW4gPiBCTEFLRTJCX0JMT0NLQllURVMgKQorICB7CisgICAgYmxha2UyYl9pbmNyZW1lbnRfY291bnRlciggUywgQkxBS0UyQl9CTE9DS0JZVEVTICk7CisgICAgYmxha2UyYl9jb21wcmVzcyggUywgUy0+YnVmICk7CisgICAgUy0+YnVmbGVuIC09IEJMQUtFMkJfQkxPQ0tCWVRFUzsKKyAgICBtZW1tb3ZlKCBTLT5idWYsIFMtPmJ1ZiArIEJMQUtFMkJfQkxPQ0tCWVRFUywgUy0+YnVmbGVuICk7CisgIH0KKworICBibGFrZTJiX2luY3JlbWVudF9jb3VudGVyKCBTLCBTLT5idWZsZW4gKTsKKyAgYmxha2UyYl9zZXRfbGFzdGJsb2NrKCBTICk7CisgIG1lbXNldCggUy0+YnVmICsgUy0+YnVmbGVuLCAwLCAyICogQkxBS0UyQl9CTE9DS0JZVEVTIC0gUy0+YnVmbGVuICk7IC8qIFBhZGRpbmcgKi8KKyAgYmxha2UyYl9jb21wcmVzcyggUywgUy0+YnVmICk7CisgIG1lbWNweSggb3V0LCAmUy0+aFswXSwgb3V0bGVuICk7CisgIHJldHVybiAwOworfQorCisKK2ludCBibGFrZTJiKCB1aW50OF90ICpvdXQsIGNvbnN0IHZvaWQgKmluLCBjb25zdCB2b2lkICprZXksIGNvbnN0IHVpbnQ4X3Qgb3V0bGVuLCBjb25zdCB1aW50NjRfdCBpbmxlbiwgdWludDhfdCBrZXlsZW4gKQoreworICBibGFrZTJiX3N0YXRlIFNbMV07CisKKyAgLyogVmVyaWZ5IHBhcmFtZXRlcnMgKi8KKyAgaWYgKCBOVUxMID09IGluICYmIGlubGVuID4gMCApIHJldHVybiAtMTsKKworICBpZiAoIE5VTEwgPT0gb3V0ICkgcmV0dXJuIC0xOworCisgIGlmKCBOVUxMID09IGtleSAmJiBrZXlsZW4gPiAwICkgcmV0dXJuIC0xOworCisgIGlmKCAhb3V0bGVuIHx8IG91dGxlbiA+IEJMQUtFMkJfT1VUQllURVMgKSByZXR1cm4gLTE7CisKKyAgaWYoIGtleWxlbiA+IEJMQUtFMkJfS0VZQllURVMgKSByZXR1cm4gLTE7CisKKyAgaWYoIGtleWxlbiApCisgIHsKKyAgICBpZiggYmxha2UyYl9pbml0X2tleSggUywgb3V0bGVuLCBrZXksIGtleWxlbiApIDwgMCApIHJldHVybiAtMTsKKyAgfQorICBlbHNlCisgIHsKKyAgICBpZiggYmxha2UyYl9pbml0KCBTLCBvdXRsZW4gKSA8IDAgKSByZXR1cm4gLTE7CisgIH0KKworICBibGFrZTJiX3VwZGF0ZSggUywgKCBjb25zdCB1aW50OF90ICogKWluLCBpbmxlbiApOworICBibGFrZTJiX2ZpbmFsKCBTLCBvdXQsIG91dGxlbiApOworICByZXR1cm4gMDsKK30KKworI2lmIGRlZmluZWQoU1VQRVJDT1ApCitpbnQgY3J5cHRvX2hhc2goIHVuc2lnbmVkIGNoYXIgKm91dCwgdW5zaWduZWQgY2hhciAqaW4sIHVuc2lnbmVkIGxvbmcgbG9uZyBpbmxlbiApCit7CisgIHJldHVybiBibGFrZTJiKCBvdXQsIGluLCBOVUxMLCBCTEFLRTJCX09VVEJZVEVTLCBpbmxlbiwgMCApOworfQorI2VuZGlmCisKKyNpZiBkZWZpbmVkKEJMQUtFMkJfU0VMRlRFU1QpCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSAiYmxha2UyLWthdC5oIgoraW50IG1haW4oIGludCBhcmdjLCBjaGFyICoqYXJndiApCit7CisgIHVpbnQ4X3Qga2V5W0JMQUtFMkJfS0VZQllURVNdOworICB1aW50OF90IGJ1ZltLQVRfTEVOR1RIXTsKKyAgc2l6ZV90IGk7CisKKyAgZm9yKCBpID0gMDsgaSA8IEJMQUtFMkJfS0VZQllURVM7ICsraSApCisgICAga2V5W2ldID0gKCB1aW50OF90IClpOworCisgIGZvciggaSA9IDA7IGkgPCBLQVRfTEVOR1RIOyArK2kgKQorICAgIGJ1ZltpXSA9ICggdWludDhfdCApaTsKKworICBmb3IoIGkgPSAwOyBpIDwgS0FUX0xFTkdUSDsgKytpICkKKyAgeworICAgIHVpbnQ4X3QgaGFzaFtCTEFLRTJCX09VVEJZVEVTXTsKKyAgICBibGFrZTJiKCBoYXNoLCBidWYsIGtleSwgQkxBS0UyQl9PVVRCWVRFUywgaSwgQkxBS0UyQl9LRVlCWVRFUyApOworCisgICAgaWYoIDAgIT0gbWVtY21wKCBoYXNoLCBibGFrZTJiX2tleWVkX2thdFtpXSwgQkxBS0UyQl9PVVRCWVRFUyApICkKKyAgICB7CisgICAgICBwdXRzKCAiZXJyb3IiICk7CisgICAgICByZXR1cm4gLTE7CisgICAgfQorICB9CisKKyAgcHV0cyggIm9rIiApOworICByZXR1cm4gMDsKK30KKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJzLWxvYWQtc3NlMi5oIGIvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2Uycy1sb2FkLXNzZTIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYWRlZmE3Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2Uycy1sb2FkLXNzZTIuaApAQCAtMCwwICsxLDYxIEBACisvKgorICAgQkxBS0UyIHJlZmVyZW5jZSBzb3VyY2UgY29kZSBwYWNrYWdlIC0gb3B0aW1pemVkIEMgaW1wbGVtZW50YXRpb25zCisgIAorICAgQ29weXJpZ2h0IDIwMTIsIFNhbXVlbCBOZXZlcyA8c25ldmVzQGRlaS51Yy5wdD4uICBZb3UgbWF5IHVzZSB0aGlzIHVuZGVyIHRoZQorICAgdGVybXMgb2YgdGhlIENDMCwgdGhlIE9wZW5TU0wgTGljZW5jZSwgb3IgdGhlIEFwYWNoZSBQdWJsaWMgTGljZW5zZSAyLjAsIGF0CisgICB5b3VyIG9wdGlvbi4gIFRoZSB0ZXJtcyBvZiB0aGVzZSBsaWNlbnNlcyBjYW4gYmUgZm91bmQgYXQ6CisgIAorICAgLSBDQzAgMS4wIFVuaXZlcnNhbCA6IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMAorICAgLSBPcGVuU1NMIGxpY2Vuc2UgICA6IGh0dHBzOi8vd3d3Lm9wZW5zc2wub3JnL3NvdXJjZS9saWNlbnNlLmh0bWwKKyAgIC0gQXBhY2hlIDIuMCAgICAgICAgOiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgCisgICBNb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBCTEFLRTIgaGFzaCBmdW5jdGlvbiBjYW4gYmUgZm91bmQgYXQKKyAgIGh0dHBzOi8vYmxha2UyLm5ldC4KKyovCisjcHJhZ21hIG9uY2UKKyNpZm5kZWYgX19CTEFLRTJTX0xPQURfU1NFMl9IX18KKyNkZWZpbmUgX19CTEFLRTJTX0xPQURfU1NFMl9IX18KKworI2RlZmluZSBMT0FEX01TR18wXzEoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG02LG00LG0yLG0wKQorI2RlZmluZSBMT0FEX01TR18wXzIoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG03LG01LG0zLG0xKQorI2RlZmluZSBMT0FEX01TR18wXzMoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG0xNCxtMTIsbTEwLG04KQorI2RlZmluZSBMT0FEX01TR18wXzQoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG0xNSxtMTMsbTExLG05KQorI2RlZmluZSBMT0FEX01TR18xXzEoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG0xMyxtOSxtNCxtMTQpCisjZGVmaW5lIExPQURfTVNHXzFfMihidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTYsbTE1LG04LG0xMCkKKyNkZWZpbmUgTE9BRF9NU0dfMV8zKGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtNSxtMTEsbTAsbTEpCisjZGVmaW5lIExPQURfTVNHXzFfNChidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTMsbTcsbTIsbTEyKQorI2RlZmluZSBMT0FEX01TR18yXzEoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG0xNSxtNSxtMTIsbTExKQorI2RlZmluZSBMT0FEX01TR18yXzIoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG0xMyxtMixtMCxtOCkKKyNkZWZpbmUgTE9BRF9NU0dfMl8zKGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtOSxtNyxtMyxtMTApCisjZGVmaW5lIExPQURfTVNHXzJfNChidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTQsbTEsbTYsbTE0KQorI2RlZmluZSBMT0FEX01TR18zXzEoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG0xMSxtMTMsbTMsbTcpCisjZGVmaW5lIExPQURfTVNHXzNfMihidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTE0LG0xMixtMSxtOSkKKyNkZWZpbmUgTE9BRF9NU0dfM18zKGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtMTUsbTQsbTUsbTIpCisjZGVmaW5lIExPQURfTVNHXzNfNChidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTgsbTAsbTEwLG02KQorI2RlZmluZSBMT0FEX01TR180XzEoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG0xMCxtMixtNSxtOSkKKyNkZWZpbmUgTE9BRF9NU0dfNF8yKGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtMTUsbTQsbTcsbTApCisjZGVmaW5lIExPQURfTVNHXzRfMyhidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTMsbTYsbTExLG0xNCkKKyNkZWZpbmUgTE9BRF9NU0dfNF80KGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtMTMsbTgsbTEyLG0xKQorI2RlZmluZSBMT0FEX01TR181XzEoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG04LG0wLG02LG0yKQorI2RlZmluZSBMT0FEX01TR181XzIoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG0zLG0xMSxtMTAsbTEyKQorI2RlZmluZSBMT0FEX01TR181XzMoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG0xLG0xNSxtNyxtNCkKKyNkZWZpbmUgTE9BRF9NU0dfNV80KGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtOSxtMTQsbTUsbTEzKQorI2RlZmluZSBMT0FEX01TR182XzEoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG00LG0xNCxtMSxtMTIpCisjZGVmaW5lIExPQURfTVNHXzZfMihidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTEwLG0xMyxtMTUsbTUpCisjZGVmaW5lIExPQURfTVNHXzZfMyhidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTgsbTksbTYsbTApCisjZGVmaW5lIExPQURfTVNHXzZfNChidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTExLG0yLG0zLG03KQorI2RlZmluZSBMT0FEX01TR183XzEoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG0zLG0xMixtNyxtMTMpCisjZGVmaW5lIExPQURfTVNHXzdfMihidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTksbTEsbTE0LG0xMSkKKyNkZWZpbmUgTE9BRF9NU0dfN18zKGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtMixtOCxtMTUsbTUpCisjZGVmaW5lIExPQURfTVNHXzdfNChidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTEwLG02LG00LG0wKQorI2RlZmluZSBMT0FEX01TR184XzEoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG0wLG0xMSxtMTQsbTYpCisjZGVmaW5lIExPQURfTVNHXzhfMihidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTgsbTMsbTksbTE1KQorI2RlZmluZSBMT0FEX01TR184XzMoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG0xMCxtMSxtMTMsbTEyKQorI2RlZmluZSBMT0FEX01TR184XzQoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG01LG00LG03LG0yKQorI2RlZmluZSBMT0FEX01TR185XzEoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG0xLG03LG04LG0xMCkKKyNkZWZpbmUgTE9BRF9NU0dfOV8yKGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtNSxtNixtNCxtMikKKyNkZWZpbmUgTE9BRF9NU0dfOV8zKGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtMTMsbTMsbTksbTE1KQorI2RlZmluZSBMT0FEX01TR185XzQoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG0wLG0xMixtMTQsbTExKQorCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2Uycy1sb2FkLXNzZTQxLmggYi9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJzLWxvYWQtc3NlNDEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NGJmMGNkCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2Uycy1sb2FkLXNzZTQxLmgKQEAgLTAsMCArMSwyMzEgQEAKKy8qCisgICBCTEFLRTIgcmVmZXJlbmNlIHNvdXJjZSBjb2RlIHBhY2thZ2UgLSBvcHRpbWl6ZWQgQyBpbXBsZW1lbnRhdGlvbnMKKyAgCisgICBDb3B5cmlnaHQgMjAxMiwgU2FtdWVsIE5ldmVzIDxzbmV2ZXNAZGVpLnVjLnB0Pi4gIFlvdSBtYXkgdXNlIHRoaXMgdW5kZXIgdGhlCisgICB0ZXJtcyBvZiB0aGUgQ0MwLCB0aGUgT3BlblNTTCBMaWNlbmNlLCBvciB0aGUgQXBhY2hlIFB1YmxpYyBMaWNlbnNlIDIuMCwgYXQKKyAgIHlvdXIgb3B0aW9uLiAgVGhlIHRlcm1zIG9mIHRoZXNlIGxpY2Vuc2VzIGNhbiBiZSBmb3VuZCBhdDoKKyAgCisgICAtIENDMCAxLjAgVW5pdmVyc2FsIDogaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wCisgICAtIE9wZW5TU0wgbGljZW5zZSAgIDogaHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvc291cmNlL2xpY2Vuc2UuaHRtbAorICAgLSBBcGFjaGUgMi4wICAgICAgICA6IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAKKyAgIE1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIEJMQUtFMiBoYXNoIGZ1bmN0aW9uIGNhbiBiZSBmb3VuZCBhdAorICAgaHR0cHM6Ly9ibGFrZTIubmV0LgorKi8KKyNwcmFnbWEgb25jZQorI2lmbmRlZiBfX0JMQUtFMlNfTE9BRF9TU0U0MV9IX18KKyNkZWZpbmUgX19CTEFLRTJTX0xPQURfU1NFNDFfSF9fCisKKyNkZWZpbmUgTE9BRF9NU0dfMF8xKGJ1ZikgXAorYnVmID0gVE9JKF9tbV9zaHVmZmxlX3BzKFRPRihtMCksIFRPRihtMSksIF9NTV9TSFVGRkxFKDIsMCwyLDApKSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfMF8yKGJ1ZikgXAorYnVmID0gVE9JKF9tbV9zaHVmZmxlX3BzKFRPRihtMCksIFRPRihtMSksIF9NTV9TSFVGRkxFKDMsMSwzLDEpKSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfMF8zKGJ1ZikgXAorYnVmID0gVE9JKF9tbV9zaHVmZmxlX3BzKFRPRihtMiksIFRPRihtMyksIF9NTV9TSFVGRkxFKDIsMCwyLDApKSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfMF80KGJ1ZikgXAorYnVmID0gVE9JKF9tbV9zaHVmZmxlX3BzKFRPRihtMiksIFRPRihtMyksIF9NTV9TSFVGRkxFKDMsMSwzLDEpKSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfMV8xKGJ1ZikgXAordDAgPSBfbW1fYmxlbmRfZXBpMTYobTEsIG0yLCAweDBDKTsgXAordDEgPSBfbW1fc2xsaV9zaTEyOChtMywgNCk7IFwKK3QyID0gX21tX2JsZW5kX2VwaTE2KHQwLCB0MSwgMHhGMCk7IFwKK2J1ZiA9IF9tbV9zaHVmZmxlX2VwaTMyKHQyLCBfTU1fU0hVRkZMRSgyLDEsMCwzKSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfMV8yKGJ1ZikgXAordDAgPSBfbW1fc2h1ZmZsZV9lcGkzMihtMixfTU1fU0hVRkZMRSgwLDAsMiwwKSk7IFwKK3QxID0gX21tX2JsZW5kX2VwaTE2KG0xLG0zLDB4QzApOyBcCit0MiA9IF9tbV9ibGVuZF9lcGkxNih0MCwgdDEsIDB4RjApOyBcCitidWYgPSBfbW1fc2h1ZmZsZV9lcGkzMih0MiwgX01NX1NIVUZGTEUoMiwzLDAsMSkpOworCisjZGVmaW5lIExPQURfTVNHXzFfMyhidWYpIFwKK3QwID0gX21tX3NsbGlfc2kxMjgobTEsIDQpOyBcCit0MSA9IF9tbV9ibGVuZF9lcGkxNihtMiwgdDAsIDB4MzApOyBcCit0MiA9IF9tbV9ibGVuZF9lcGkxNihtMCwgdDEsIDB4RjApOyBcCitidWYgPSBfbW1fc2h1ZmZsZV9lcGkzMih0MiwgX01NX1NIVUZGTEUoMiwzLDAsMSkpOworCisjZGVmaW5lIExPQURfTVNHXzFfNChidWYpIFwKK3QwID0gX21tX3VucGFja2hpX2VwaTMyKG0wLG0xKTsgXAordDEgPSBfbW1fc2xsaV9zaTEyOChtMywgNCk7IFwKK3QyID0gX21tX2JsZW5kX2VwaTE2KHQwLCB0MSwgMHgwQyk7IFwKK2J1ZiA9IF9tbV9zaHVmZmxlX2VwaTMyKHQyLCBfTU1fU0hVRkZMRSgyLDMsMCwxKSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfMl8xKGJ1ZikgXAordDAgPSBfbW1fdW5wYWNraGlfZXBpMzIobTIsbTMpOyBcCit0MSA9IF9tbV9ibGVuZF9lcGkxNihtMyxtMSwweDBDKTsgXAordDIgPSBfbW1fYmxlbmRfZXBpMTYodDAsIHQxLCAweDBGKTsgXAorYnVmID0gX21tX3NodWZmbGVfZXBpMzIodDIsIF9NTV9TSFVGRkxFKDMsMSwwLDIpKTsKKworI2RlZmluZSBMT0FEX01TR18yXzIoYnVmKSBcCit0MCA9IF9tbV91bnBhY2tsb19lcGkzMihtMixtMCk7IFwKK3QxID0gX21tX2JsZW5kX2VwaTE2KHQwLCBtMCwgMHhGMCk7IFwKK3QyID0gX21tX3NsbGlfc2kxMjgobTMsIDgpOyBcCitidWYgPSBfbW1fYmxlbmRfZXBpMTYodDEsIHQyLCAweEMwKTsKKworI2RlZmluZSBMT0FEX01TR18yXzMoYnVmKSBcCit0MCA9IF9tbV9ibGVuZF9lcGkxNihtMCwgbTIsIDB4M0MpOyBcCit0MSA9IF9tbV9zcmxpX3NpMTI4KG0xLCAxMik7IFwKK3QyID0gX21tX2JsZW5kX2VwaTE2KHQwLHQxLDB4MDMpOyBcCitidWYgPSBfbW1fc2h1ZmZsZV9lcGkzMih0MiwgX01NX1NIVUZGTEUoMSwwLDMsMikpOworCisjZGVmaW5lIExPQURfTVNHXzJfNChidWYpIFwKK3QwID0gX21tX3NsbGlfc2kxMjgobTMsIDQpOyBcCit0MSA9IF9tbV9ibGVuZF9lcGkxNihtMCwgbTEsIDB4MzMpOyBcCit0MiA9IF9tbV9ibGVuZF9lcGkxNih0MSwgdDAsIDB4QzApOyBcCitidWYgPSBfbW1fc2h1ZmZsZV9lcGkzMih0MiwgX01NX1NIVUZGTEUoMCwxLDIsMykpOworCisjZGVmaW5lIExPQURfTVNHXzNfMShidWYpIFwKK3QwID0gX21tX3VucGFja2hpX2VwaTMyKG0wLG0xKTsgXAordDEgPSBfbW1fdW5wYWNraGlfZXBpMzIodDAsIG0yKTsgXAordDIgPSBfbW1fYmxlbmRfZXBpMTYodDEsIG0zLCAweDBDKTsgXAorYnVmID0gX21tX3NodWZmbGVfZXBpMzIodDIsIF9NTV9TSFVGRkxFKDMsMSwwLDIpKTsKKworI2RlZmluZSBMT0FEX01TR18zXzIoYnVmKSBcCit0MCA9IF9tbV9zbGxpX3NpMTI4KG0yLCA4KTsgXAordDEgPSBfbW1fYmxlbmRfZXBpMTYobTMsbTAsMHgwQyk7IFwKK3QyID0gX21tX2JsZW5kX2VwaTE2KHQxLCB0MCwgMHhDMCk7IFwKK2J1ZiA9IF9tbV9zaHVmZmxlX2VwaTMyKHQyLCBfTU1fU0hVRkZMRSgyLDAsMSwzKSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfM18zKGJ1ZikgXAordDAgPSBfbW1fYmxlbmRfZXBpMTYobTAsbTEsMHgwRik7IFwKK3QxID0gX21tX2JsZW5kX2VwaTE2KHQwLCBtMywgMHhDMCk7IFwKK2J1ZiA9IF9tbV9zaHVmZmxlX2VwaTMyKHQxLCBfTU1fU0hVRkZMRSgzLDAsMSwyKSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfM180KGJ1ZikgXAordDAgPSBfbW1fdW5wYWNrbG9fZXBpMzIobTAsbTIpOyBcCit0MSA9IF9tbV91bnBhY2toaV9lcGkzMihtMSxtMik7IFwKK2J1ZiA9IF9tbV91bnBhY2tsb19lcGk2NCh0MSx0MCk7CisKKyNkZWZpbmUgTE9BRF9NU0dfNF8xKGJ1ZikgXAordDAgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTEsbTIpOyBcCit0MSA9IF9tbV91bnBhY2toaV9lcGk2NChtMCxtMik7IFwKK3QyID0gX21tX2JsZW5kX2VwaTE2KHQwLHQxLDB4MzMpOyBcCitidWYgPSBfbW1fc2h1ZmZsZV9lcGkzMih0MiwgX01NX1NIVUZGTEUoMiwwLDEsMykpOworCisjZGVmaW5lIExPQURfTVNHXzRfMihidWYpIFwKK3QwID0gX21tX3VucGFja2hpX2VwaTY0KG0xLG0zKTsgXAordDEgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTAsbTEpOyBcCitidWYgPSBfbW1fYmxlbmRfZXBpMTYodDAsdDEsMHgzMyk7CisKKyNkZWZpbmUgTE9BRF9NU0dfNF8zKGJ1ZikgXAordDAgPSBfbW1fdW5wYWNraGlfZXBpNjQobTMsbTEpOyBcCit0MSA9IF9tbV91bnBhY2toaV9lcGk2NChtMixtMCk7IFwKK2J1ZiA9IF9tbV9ibGVuZF9lcGkxNih0MSx0MCwweDMzKTsKKworI2RlZmluZSBMT0FEX01TR180XzQoYnVmKSBcCit0MCA9IF9tbV9ibGVuZF9lcGkxNihtMCxtMiwweDAzKTsgXAordDEgPSBfbW1fc2xsaV9zaTEyOCh0MCwgOCk7IFwKK3QyID0gX21tX2JsZW5kX2VwaTE2KHQxLG0zLDB4MEYpOyBcCitidWYgPSBfbW1fc2h1ZmZsZV9lcGkzMih0MiwgX01NX1NIVUZGTEUoMSwyLDAsMykpOworCisjZGVmaW5lIExPQURfTVNHXzVfMShidWYpIFwKK3QwID0gX21tX3VucGFja2hpX2VwaTMyKG0wLG0xKTsgXAordDEgPSBfbW1fdW5wYWNrbG9fZXBpMzIobTAsbTIpOyBcCitidWYgPSBfbW1fdW5wYWNrbG9fZXBpNjQodDAsdDEpOworCisjZGVmaW5lIExPQURfTVNHXzVfMihidWYpIFwKK3QwID0gX21tX3NybGlfc2kxMjgobTIsIDQpOyBcCit0MSA9IF9tbV9ibGVuZF9lcGkxNihtMCxtMywweDAzKTsgXAorYnVmID0gX21tX2JsZW5kX2VwaTE2KHQxLHQwLDB4M0MpOworCisjZGVmaW5lIExPQURfTVNHXzVfMyhidWYpIFwKK3QwID0gX21tX2JsZW5kX2VwaTE2KG0xLG0wLDB4MEMpOyBcCit0MSA9IF9tbV9zcmxpX3NpMTI4KG0zLCA0KTsgXAordDIgPSBfbW1fYmxlbmRfZXBpMTYodDAsdDEsMHgzMCk7IFwKK2J1ZiA9IF9tbV9zaHVmZmxlX2VwaTMyKHQyLCBfTU1fU0hVRkZMRSgxLDIsMywwKSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfNV80KGJ1ZikgXAordDAgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTEsbTIpOyBcCit0MT0gX21tX3NodWZmbGVfZXBpMzIobTMsIF9NTV9TSFVGRkxFKDAsMiwwLDEpKTsgXAorYnVmID0gX21tX2JsZW5kX2VwaTE2KHQwLHQxLDB4MzMpOworCisjZGVmaW5lIExPQURfTVNHXzZfMShidWYpIFwKK3QwID0gX21tX3NsbGlfc2kxMjgobTEsIDEyKTsgXAordDEgPSBfbW1fYmxlbmRfZXBpMTYobTAsbTMsMHgzMyk7IFwKK2J1ZiA9IF9tbV9ibGVuZF9lcGkxNih0MSx0MCwweEMwKTsKKworI2RlZmluZSBMT0FEX01TR182XzIoYnVmKSBcCit0MCA9IF9tbV9ibGVuZF9lcGkxNihtMyxtMiwweDMwKTsgXAordDEgPSBfbW1fc3JsaV9zaTEyOChtMSwgNCk7IFwKK3QyID0gX21tX2JsZW5kX2VwaTE2KHQwLHQxLDB4MDMpOyBcCitidWYgPSBfbW1fc2h1ZmZsZV9lcGkzMih0MiwgX01NX1NIVUZGTEUoMiwxLDMsMCkpOworCisjZGVmaW5lIExPQURfTVNHXzZfMyhidWYpIFwKK3QwID0gX21tX3VucGFja2xvX2VwaTY0KG0wLG0yKTsgXAordDEgPSBfbW1fc3JsaV9zaTEyOChtMSwgNCk7IFwKK2J1ZiA9IF9tbV9zaHVmZmxlX2VwaTMyKF9tbV9ibGVuZF9lcGkxNih0MCx0MSwweDBDKSwgX01NX1NIVUZGTEUoMiwzLDEsMCkpOworCisjZGVmaW5lIExPQURfTVNHXzZfNChidWYpIFwKK3QwID0gX21tX3VucGFja2hpX2VwaTMyKG0xLG0yKTsgXAordDEgPSBfbW1fdW5wYWNraGlfZXBpNjQobTAsdDApOyBcCitidWYgPSBfbW1fc2h1ZmZsZV9lcGkzMih0MSwgX01NX1NIVUZGTEUoMywwLDEsMikpOworCisjZGVmaW5lIExPQURfTVNHXzdfMShidWYpIFwKK3QwID0gX21tX3VucGFja2hpX2VwaTMyKG0wLG0xKTsgXAordDEgPSBfbW1fYmxlbmRfZXBpMTYodDAsbTMsMHgwRik7IFwKK2J1ZiA9IF9tbV9zaHVmZmxlX2VwaTMyKHQxLF9NTV9TSFVGRkxFKDIsMCwzLDEpKTsKKworI2RlZmluZSBMT0FEX01TR183XzIoYnVmKSBcCit0MCA9IF9tbV9ibGVuZF9lcGkxNihtMixtMywweDMwKTsgXAordDEgPSBfbW1fc3JsaV9zaTEyOChtMCw0KTsgXAordDIgPSBfbW1fYmxlbmRfZXBpMTYodDAsdDEsMHgwMyk7IFwKK2J1ZiA9IF9tbV9zaHVmZmxlX2VwaTMyKHQyLCBfTU1fU0hVRkZMRSgxLDAsMiwzKSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfN18zKGJ1ZikgXAordDAgPSBfbW1fdW5wYWNraGlfZXBpNjQobTAsbTMpOyBcCit0MSA9IF9tbV91bnBhY2tsb19lcGk2NChtMSxtMik7IFwKK3QyID0gX21tX2JsZW5kX2VwaTE2KHQwLHQxLDB4M0MpOyBcCitidWYgPSBfbW1fc2h1ZmZsZV9lcGkzMih0MixfTU1fU0hVRkZMRSgwLDIsMywxKSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfN180KGJ1ZikgXAordDAgPSBfbW1fdW5wYWNrbG9fZXBpMzIobTAsbTEpOyBcCit0MSA9IF9tbV91bnBhY2toaV9lcGkzMihtMSxtMik7IFwKK2J1ZiA9IF9tbV91bnBhY2tsb19lcGk2NCh0MCx0MSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfOF8xKGJ1ZikgXAordDAgPSBfbW1fdW5wYWNraGlfZXBpMzIobTEsbTMpOyBcCit0MSA9IF9tbV91bnBhY2tsb19lcGk2NCh0MCxtMCk7IFwKK3QyID0gX21tX2JsZW5kX2VwaTE2KHQxLG0yLDB4QzApOyBcCitidWYgPSBfbW1fc2h1ZmZsZWhpX2VwaTE2KHQyLF9NTV9TSFVGRkxFKDEsMCwzLDIpKTsKKworI2RlZmluZSBMT0FEX01TR184XzIoYnVmKSBcCit0MCA9IF9tbV91bnBhY2toaV9lcGkzMihtMCxtMyk7IFwKK3QxID0gX21tX2JsZW5kX2VwaTE2KG0yLHQwLDB4RjApOyBcCitidWYgPSBfbW1fc2h1ZmZsZV9lcGkzMih0MSxfTU1fU0hVRkZMRSgwLDIsMSwzKSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfOF8zKGJ1ZikgXAordDAgPSBfbW1fYmxlbmRfZXBpMTYobTIsbTAsMHgwQyk7IFwKK3QxID0gX21tX3NsbGlfc2kxMjgodDAsNCk7IFwKK2J1ZiA9IF9tbV9ibGVuZF9lcGkxNih0MSxtMywweDBGKTsKKworI2RlZmluZSBMT0FEX01TR184XzQoYnVmKSBcCit0MCA9IF9tbV9ibGVuZF9lcGkxNihtMSxtMCwweDMwKTsgXAorYnVmID0gX21tX3NodWZmbGVfZXBpMzIodDAsX01NX1NIVUZGTEUoMSwwLDMsMikpOworCisjZGVmaW5lIExPQURfTVNHXzlfMShidWYpIFwKK3QwID0gX21tX2JsZW5kX2VwaTE2KG0wLG0yLDB4MDMpOyBcCit0MSA9IF9tbV9ibGVuZF9lcGkxNihtMSxtMiwweDMwKTsgXAordDIgPSBfbW1fYmxlbmRfZXBpMTYodDEsdDAsMHgwRik7IFwKK2J1ZiA9IF9tbV9zaHVmZmxlX2VwaTMyKHQyLF9NTV9TSFVGRkxFKDEsMywwLDIpKTsKKworI2RlZmluZSBMT0FEX01TR185XzIoYnVmKSBcCit0MCA9IF9tbV9zbGxpX3NpMTI4KG0wLDQpOyBcCit0MSA9IF9tbV9ibGVuZF9lcGkxNihtMSx0MCwweEMwKTsgXAorYnVmID0gX21tX3NodWZmbGVfZXBpMzIodDEsX01NX1NIVUZGTEUoMSwyLDAsMykpOworCisjZGVmaW5lIExPQURfTVNHXzlfMyhidWYpIFwKK3QwID0gX21tX3VucGFja2hpX2VwaTMyKG0wLG0zKTsgXAordDEgPSBfbW1fdW5wYWNrbG9fZXBpMzIobTIsbTMpOyBcCit0MiA9IF9tbV91bnBhY2toaV9lcGk2NCh0MCx0MSk7IFwKK2J1ZiA9IF9tbV9zaHVmZmxlX2VwaTMyKHQyLF9NTV9TSFVGRkxFKDMsMCwyLDEpKTsKKworI2RlZmluZSBMT0FEX01TR185XzQoYnVmKSBcCit0MCA9IF9tbV9ibGVuZF9lcGkxNihtMyxtMiwweEMwKTsgXAordDEgPSBfbW1fdW5wYWNrbG9fZXBpMzIobTAsbTMpOyBcCit0MiA9IF9tbV9ibGVuZF9lcGkxNih0MCx0MSwweDBGKTsgXAorYnVmID0gX21tX3NodWZmbGVfZXBpMzIodDIsX01NX1NIVUZGTEUoMCwxLDIsMykpOworCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2Uycy1sb2FkLXhvcC5oIGIvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2Uycy1sb2FkLXhvcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzYjVkNjUKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJzLWxvYWQteG9wLmgKQEAgLTAsMCArMSwxOTEgQEAKKy8qCisgICBCTEFLRTIgcmVmZXJlbmNlIHNvdXJjZSBjb2RlIHBhY2thZ2UgLSBvcHRpbWl6ZWQgQyBpbXBsZW1lbnRhdGlvbnMKKyAgCisgICBDb3B5cmlnaHQgMjAxMiwgU2FtdWVsIE5ldmVzIDxzbmV2ZXNAZGVpLnVjLnB0Pi4gIFlvdSBtYXkgdXNlIHRoaXMgdW5kZXIgdGhlCisgICB0ZXJtcyBvZiB0aGUgQ0MwLCB0aGUgT3BlblNTTCBMaWNlbmNlLCBvciB0aGUgQXBhY2hlIFB1YmxpYyBMaWNlbnNlIDIuMCwgYXQKKyAgIHlvdXIgb3B0aW9uLiAgVGhlIHRlcm1zIG9mIHRoZXNlIGxpY2Vuc2VzIGNhbiBiZSBmb3VuZCBhdDoKKyAgCisgICAtIENDMCAxLjAgVW5pdmVyc2FsIDogaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wCisgICAtIE9wZW5TU0wgbGljZW5zZSAgIDogaHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvc291cmNlL2xpY2Vuc2UuaHRtbAorICAgLSBBcGFjaGUgMi4wICAgICAgICA6IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAKKyAgIE1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIEJMQUtFMiBoYXNoIGZ1bmN0aW9uIGNhbiBiZSBmb3VuZCBhdAorICAgaHR0cHM6Ly9ibGFrZTIubmV0LgorKi8KKyNwcmFnbWEgb25jZQorI2lmbmRlZiBfX0JMQUtFMlNfTE9BRF9YT1BfSF9fCisjZGVmaW5lIF9fQkxBS0UyU19MT0FEX1hPUF9IX18KKworI2RlZmluZSBUT0IoeCkgKCh4KSo0KjB4MDEwMTAxMDEgKyAweDAzMDIwMTAwKSAvKiAuLm9yIG5vdCBUT0IgKi8KKworLyogQmFzaWMgVlBQRVJNIGVtdWxhdGlvbiwgZm9yIHRlc3RpbmcgcHVycG9zZXMgKi8KKy8qc3RhdGljIF9fbTEyOGkgX21tX3Blcm1fZXBpOChjb25zdCBfX20xMjhpIHNyYzEsIGNvbnN0IF9fbTEyOGkgc3JjMiwgY29uc3QgX19tMTI4aSBzZWwpCit7CisgICBjb25zdCBfX20xMjhpIHNpeHRlZW4gPSBfbW1fc2V0MV9lcGk4KDE2KTsKKyAgIGNvbnN0IF9fbTEyOGkgdDAgPSBfbW1fc2h1ZmZsZV9lcGk4KHNyYzEsIHNlbCk7CisgICBjb25zdCBfX20xMjhpIHMxID0gX21tX3NodWZmbGVfZXBpOChzcmMyLCBfbW1fc3ViX2VwaTgoc2VsLCBzaXh0ZWVuKSk7CisgICBjb25zdCBfX20xMjhpIG1hc2sgPSBfbW1fb3Jfc2kxMjgoX21tX2NtcGVxX2VwaTgoc2VsLCBzaXh0ZWVuKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbW1fY21wZ3RfZXBpOChzZWwsIHNpeHRlZW4pKTsgLyogKD49MTYpID0gMHhmZiA6IDAwICovCisgICByZXR1cm4gX21tX2JsZW5kdl9lcGk4KHQwLCBzMSwgbWFzayk7Cit9Ki8KKworI2RlZmluZSBMT0FEX01TR18wXzEoYnVmKSBcCitidWYgPSBfbW1fcGVybV9lcGk4KG0wLCBtMSwgX21tX3NldF9lcGkzMihUT0IoNiksVE9CKDQpLFRPQigyKSxUT0IoMCkpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfMF8yKGJ1ZikgXAorYnVmID0gX21tX3Blcm1fZXBpOChtMCwgbTEsIF9tbV9zZXRfZXBpMzIoVE9CKDcpLFRPQig1KSxUT0IoMyksVE9CKDEpKSApOworCisjZGVmaW5lIExPQURfTVNHXzBfMyhidWYpIFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgobTIsIG0zLCBfbW1fc2V0X2VwaTMyKFRPQig2KSxUT0IoNCksVE9CKDIpLFRPQigwKSkgKTsKKworI2RlZmluZSBMT0FEX01TR18wXzQoYnVmKSBcCitidWYgPSBfbW1fcGVybV9lcGk4KG0yLCBtMywgX21tX3NldF9lcGkzMihUT0IoNyksVE9CKDUpLFRPQigzKSxUT0IoMSkpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfMV8xKGJ1ZikgXAordDAgPSBfbW1fcGVybV9lcGk4KG0xLCBtMiwgX21tX3NldF9lcGkzMihUT0IoMCksVE9CKDUpLFRPQigwKSxUT0IoMCkpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDAsIG0zLCBfbW1fc2V0X2VwaTMyKFRPQig1KSxUT0IoMiksVE9CKDEpLFRPQig2KSkgKTsKKworI2RlZmluZSBMT0FEX01TR18xXzIoYnVmKSBcCit0MSA9IF9tbV9wZXJtX2VwaTgobTEsIG0yLCBfbW1fc2V0X2VwaTMyKFRPQigyKSxUT0IoMCksVE9CKDQpLFRPQig2KSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MSwgbTMsIF9tbV9zZXRfZXBpMzIoVE9CKDMpLFRPQig3KSxUT0IoMSksVE9CKDApKSApOworCisjZGVmaW5lIExPQURfTVNHXzFfMyhidWYpIFwKK3QwID0gX21tX3Blcm1fZXBpOChtMCwgbTEsIF9tbV9zZXRfZXBpMzIoVE9CKDUpLFRPQigwKSxUT0IoMCksVE9CKDEpKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQwLCBtMiwgX21tX3NldF9lcGkzMihUT0IoMyksVE9CKDcpLFRPQigxKSxUT0IoMCkpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfMV80KGJ1ZikgXAordDEgPSBfbW1fcGVybV9lcGk4KG0wLCBtMSwgX21tX3NldF9lcGkzMihUT0IoMyksVE9CKDcpLFRPQigyKSxUT0IoMCkpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDEsIG0zLCBfbW1fc2V0X2VwaTMyKFRPQigzKSxUT0IoMiksVE9CKDEpLFRPQig0KSkgKTsKKworI2RlZmluZSBMT0FEX01TR18yXzEoYnVmKSBcCit0MCA9IF9tbV9wZXJtX2VwaTgobTEsIG0yLCBfbW1fc2V0X2VwaTMyKFRPQigwKSxUT0IoMSksVE9CKDApLFRPQig3KSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MCwgbTMsIF9tbV9zZXRfZXBpMzIoVE9CKDcpLFRPQigyKSxUT0IoNCksVE9CKDApKSApOworCisjZGVmaW5lIExPQURfTVNHXzJfMihidWYpIFwKK3QxID0gX21tX3Blcm1fZXBpOChtMCwgbTIsIF9tbV9zZXRfZXBpMzIoVE9CKDApLFRPQigyKSxUT0IoMCksVE9CKDQpKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQxLCBtMywgX21tX3NldF9lcGkzMihUT0IoNSksVE9CKDIpLFRPQigxKSxUT0IoMCkpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfMl8zKGJ1ZikgXAordDAgPSBfbW1fcGVybV9lcGk4KG0wLCBtMSwgX21tX3NldF9lcGkzMihUT0IoMCksVE9CKDcpLFRPQigzKSxUT0IoMCkpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDAsIG0yLCBfbW1fc2V0X2VwaTMyKFRPQig1KSxUT0IoMiksVE9CKDEpLFRPQig2KSkgKTsKKworI2RlZmluZSBMT0FEX01TR18yXzQoYnVmKSBcCit0MSA9IF9tbV9wZXJtX2VwaTgobTAsIG0xLCBfbW1fc2V0X2VwaTMyKFRPQig0KSxUT0IoMSksVE9CKDYpLFRPQigwKSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MSwgbTMsIF9tbV9zZXRfZXBpMzIoVE9CKDMpLFRPQigyKSxUT0IoMSksVE9CKDYpKSApOworCisjZGVmaW5lIExPQURfTVNHXzNfMShidWYpIFwKK3QwID0gX21tX3Blcm1fZXBpOChtMCwgbTEsIF9tbV9zZXRfZXBpMzIoVE9CKDApLFRPQigwKSxUT0IoMyksVE9CKDcpKSApOyBcCit0MCA9IF9tbV9wZXJtX2VwaTgodDAsIG0yLCBfbW1fc2V0X2VwaTMyKFRPQig3KSxUT0IoMiksVE9CKDEpLFRPQigwKSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MCwgbTMsIF9tbV9zZXRfZXBpMzIoVE9CKDMpLFRPQig1KSxUT0IoMSksVE9CKDApKSApOworCisjZGVmaW5lIExPQURfTVNHXzNfMihidWYpIFwKK3QxID0gX21tX3Blcm1fZXBpOChtMCwgbTIsIF9tbV9zZXRfZXBpMzIoVE9CKDApLFRPQigwKSxUT0IoMSksVE9CKDUpKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQxLCBtMywgX21tX3NldF9lcGkzMihUT0IoNiksVE9CKDQpLFRPQigxKSxUT0IoMCkpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfM18zKGJ1ZikgXAordDAgPSBfbW1fcGVybV9lcGk4KG0wLCBtMSwgX21tX3NldF9lcGkzMihUT0IoMCksVE9CKDQpLFRPQig1KSxUT0IoMikpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDAsIG0zLCBfbW1fc2V0X2VwaTMyKFRPQig3KSxUT0IoMiksVE9CKDEpLFRPQigwKSkgKTsKKworI2RlZmluZSBMT0FEX01TR18zXzQoYnVmKSBcCit0MSA9IF9tbV9wZXJtX2VwaTgobTAsIG0xLCBfbW1fc2V0X2VwaTMyKFRPQigwKSxUT0IoMCksVE9CKDApLFRPQig2KSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MSwgbTIsIF9tbV9zZXRfZXBpMzIoVE9CKDQpLFRPQigyKSxUT0IoNiksVE9CKDApKSApOworCisjZGVmaW5lIExPQURfTVNHXzRfMShidWYpIFwKK3QwID0gX21tX3Blcm1fZXBpOChtMCwgbTEsIF9tbV9zZXRfZXBpMzIoVE9CKDApLFRPQigyKSxUT0IoNSksVE9CKDApKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQwLCBtMiwgX21tX3NldF9lcGkzMihUT0IoNiksVE9CKDIpLFRPQigxKSxUT0IoNSkpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfNF8yKGJ1ZikgXAordDEgPSBfbW1fcGVybV9lcGk4KG0wLCBtMSwgX21tX3NldF9lcGkzMihUT0IoMCksVE9CKDQpLFRPQig3KSxUT0IoMCkpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDEsIG0zLCBfbW1fc2V0X2VwaTMyKFRPQig3KSxUT0IoMiksVE9CKDEpLFRPQigwKSkgKTsKKworI2RlZmluZSBMT0FEX01TR180XzMoYnVmKSBcCit0MCA9IF9tbV9wZXJtX2VwaTgobTAsIG0xLCBfbW1fc2V0X2VwaTMyKFRPQigzKSxUT0IoNiksVE9CKDApLFRPQigwKSkgKTsgXAordDAgPSBfbW1fcGVybV9lcGk4KHQwLCBtMiwgX21tX3NldF9lcGkzMihUT0IoMyksVE9CKDIpLFRPQig3KSxUT0IoMCkpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDAsIG0zLCBfbW1fc2V0X2VwaTMyKFRPQigzKSxUT0IoMiksVE9CKDEpLFRPQig2KSkgKTsKKworI2RlZmluZSBMT0FEX01TR180XzQoYnVmKSBcCit0MSA9IF9tbV9wZXJtX2VwaTgobTAsIG0yLCBfbW1fc2V0X2VwaTMyKFRPQigwKSxUT0IoNCksVE9CKDApLFRPQigxKSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MSwgbTMsIF9tbV9zZXRfZXBpMzIoVE9CKDUpLFRPQigyKSxUT0IoNCksVE9CKDApKSApOworCisjZGVmaW5lIExPQURfTVNHXzVfMShidWYpIFwKK3QwID0gX21tX3Blcm1fZXBpOChtMCwgbTEsIF9tbV9zZXRfZXBpMzIoVE9CKDApLFRPQigwKSxUT0IoNiksVE9CKDIpKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQwLCBtMiwgX21tX3NldF9lcGkzMihUT0IoNCksVE9CKDIpLFRPQigxKSxUT0IoMCkpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfNV8yKGJ1ZikgXAordDEgPSBfbW1fcGVybV9lcGk4KG0wLCBtMiwgX21tX3NldF9lcGkzMihUT0IoMyksVE9CKDcpLFRPQig2KSxUT0IoMCkpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDEsIG0zLCBfbW1fc2V0X2VwaTMyKFRPQigzKSxUT0IoMiksVE9CKDEpLFRPQig0KSkgKTsKKworI2RlZmluZSBMT0FEX01TR181XzMoYnVmKSBcCit0MCA9IF9tbV9wZXJtX2VwaTgobTAsIG0xLCBfbW1fc2V0X2VwaTMyKFRPQigxKSxUT0IoMCksVE9CKDcpLFRPQig0KSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MCwgbTMsIF9tbV9zZXRfZXBpMzIoVE9CKDMpLFRPQig3KSxUT0IoMSksVE9CKDApKSApOworCisjZGVmaW5lIExPQURfTVNHXzVfNChidWYpIFwKK3QxID0gX21tX3Blcm1fZXBpOChtMSwgbTIsIF9tbV9zZXRfZXBpMzIoVE9CKDUpLFRPQigwKSxUT0IoMSksVE9CKDApKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQxLCBtMywgX21tX3NldF9lcGkzMihUT0IoMyksVE9CKDYpLFRPQigxKSxUT0IoNSkpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfNl8xKGJ1ZikgXAordDAgPSBfbW1fcGVybV9lcGk4KG0wLCBtMSwgX21tX3NldF9lcGkzMihUT0IoNCksVE9CKDApLFRPQigxKSxUT0IoMCkpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDAsIG0zLCBfbW1fc2V0X2VwaTMyKFRPQigzKSxUT0IoNiksVE9CKDEpLFRPQig0KSkgKTsKKworI2RlZmluZSBMT0FEX01TR182XzIoYnVmKSBcCit0MSA9IF9tbV9wZXJtX2VwaTgobTEsIG0yLCBfbW1fc2V0X2VwaTMyKFRPQig2KSxUT0IoMCksVE9CKDApLFRPQigxKSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MSwgbTMsIF9tbV9zZXRfZXBpMzIoVE9CKDMpLFRPQig1KSxUT0IoNyksVE9CKDApKSApOworCisjZGVmaW5lIExPQURfTVNHXzZfMyhidWYpIFwKK3QwID0gX21tX3Blcm1fZXBpOChtMCwgbTEsIF9tbV9zZXRfZXBpMzIoVE9CKDApLFRPQigwKSxUT0IoNiksVE9CKDApKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQwLCBtMiwgX21tX3NldF9lcGkzMihUT0IoNCksVE9CKDUpLFRPQigxKSxUT0IoMCkpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfNl80KGJ1ZikgXAordDEgPSBfbW1fcGVybV9lcGk4KG0wLCBtMSwgX21tX3NldF9lcGkzMihUT0IoMCksVE9CKDIpLFRPQigzKSxUT0IoNykpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDEsIG0yLCBfbW1fc2V0X2VwaTMyKFRPQig3KSxUT0IoMiksVE9CKDEpLFRPQigwKSkgKTsKKworI2RlZmluZSBMT0FEX01TR183XzEoYnVmKSBcCit0MCA9IF9tbV9wZXJtX2VwaTgobTAsIG0xLCBfbW1fc2V0X2VwaTMyKFRPQigzKSxUT0IoMCksVE9CKDcpLFRPQigwKSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MCwgbTMsIF9tbV9zZXRfZXBpMzIoVE9CKDMpLFRPQig0KSxUT0IoMSksVE9CKDUpKSApOworCisjZGVmaW5lIExPQURfTVNHXzdfMihidWYpIFwKK3QxID0gX21tX3Blcm1fZXBpOChtMCwgbTIsIF9tbV9zZXRfZXBpMzIoVE9CKDUpLFRPQigxKSxUT0IoMCksVE9CKDcpKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQxLCBtMywgX21tX3NldF9lcGkzMihUT0IoMyksVE9CKDIpLFRPQig2KSxUT0IoMCkpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfN18zKGJ1ZikgXAordDAgPSBfbW1fcGVybV9lcGk4KG0wLCBtMSwgX21tX3NldF9lcGkzMihUT0IoMiksVE9CKDApLFRPQigwKSxUT0IoNSkpICk7IFwKK3QwID0gX21tX3Blcm1fZXBpOCh0MCwgbTIsIF9tbV9zZXRfZXBpMzIoVE9CKDMpLFRPQig0KSxUT0IoMSksVE9CKDApKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQwLCBtMywgX21tX3NldF9lcGkzMihUT0IoMyksVE9CKDIpLFRPQig3KSxUT0IoMCkpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfN180KGJ1ZikgXAordDEgPSBfbW1fcGVybV9lcGk4KG0wLCBtMSwgX21tX3NldF9lcGkzMihUT0IoMCksVE9CKDYpLFRPQig0KSxUT0IoMCkpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDEsIG0yLCBfbW1fc2V0X2VwaTMyKFRPQig2KSxUT0IoMiksVE9CKDEpLFRPQigwKSkgKTsKKworI2RlZmluZSBMT0FEX01TR184XzEoYnVmKSBcCit0MCA9IF9tbV9wZXJtX2VwaTgobTAsIG0xLCBfbW1fc2V0X2VwaTMyKFRPQigwKSxUT0IoMCksVE9CKDApLFRPQig2KSkgKTsgXAordDAgPSBfbW1fcGVybV9lcGk4KHQwLCBtMiwgX21tX3NldF9lcGkzMihUT0IoMyksVE9CKDcpLFRPQigxKSxUT0IoMCkpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDAsIG0zLCBfbW1fc2V0X2VwaTMyKFRPQigzKSxUT0IoMiksVE9CKDYpLFRPQigwKSkgKTsKKworI2RlZmluZSBMT0FEX01TR184XzIoYnVmKSBcCit0MSA9IF9tbV9wZXJtX2VwaTgobTAsIG0yLCBfbW1fc2V0X2VwaTMyKFRPQig0KSxUT0IoMyksVE9CKDUpLFRPQigwKSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MSwgbTMsIF9tbV9zZXRfZXBpMzIoVE9CKDMpLFRPQigyKSxUT0IoMSksVE9CKDcpKSApOworCisjZGVmaW5lIExPQURfTVNHXzhfMyhidWYpIFwKK3QwID0gX21tX3Blcm1fZXBpOChtMCwgbTIsIF9tbV9zZXRfZXBpMzIoVE9CKDYpLFRPQigxKSxUT0IoMCksVE9CKDApKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQwLCBtMywgX21tX3NldF9lcGkzMihUT0IoMyksVE9CKDIpLFRPQig1KSxUT0IoNCkpICk7IFwKKyAKKyNkZWZpbmUgTE9BRF9NU0dfOF80KGJ1ZikgXAorYnVmID0gX21tX3Blcm1fZXBpOChtMCwgbTEsIF9tbV9zZXRfZXBpMzIoVE9CKDUpLFRPQig0KSxUT0IoNyksVE9CKDIpKSApOworCisjZGVmaW5lIExPQURfTVNHXzlfMShidWYpIFwKK3QwID0gX21tX3Blcm1fZXBpOChtMCwgbTEsIF9tbV9zZXRfZXBpMzIoVE9CKDEpLFRPQig3KSxUT0IoMCksVE9CKDApKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQwLCBtMiwgX21tX3NldF9lcGkzMihUT0IoMyksVE9CKDIpLFRPQig0KSxUT0IoNikpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfOV8yKGJ1ZikgXAorYnVmID0gX21tX3Blcm1fZXBpOChtMCwgbTEsIF9tbV9zZXRfZXBpMzIoVE9CKDUpLFRPQig2KSxUT0IoNCksVE9CKDIpKSApOworCisjZGVmaW5lIExPQURfTVNHXzlfMyhidWYpIFwKK3QwID0gX21tX3Blcm1fZXBpOChtMCwgbTIsIF9tbV9zZXRfZXBpMzIoVE9CKDApLFRPQigzKSxUT0IoNSksVE9CKDApKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQwLCBtMywgX21tX3NldF9lcGkzMihUT0IoNSksVE9CKDIpLFRPQigxKSxUT0IoNykpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfOV80KGJ1ZikgXAordDEgPSBfbW1fcGVybV9lcGk4KG0wLCBtMiwgX21tX3NldF9lcGkzMihUT0IoMCksVE9CKDApLFRPQigwKSxUT0IoNykpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDEsIG0zLCBfbW1fc2V0X2VwaTMyKFRPQigzKSxUT0IoNCksVE9CKDYpLFRPQigwKSkgKTsKKworI2VuZGlmCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMnMtcmVmLmMgYi9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJzLXJlZi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2MzY3NTMKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJzLXJlZi5jCkBAIC0wLDAgKzEsNDExIEBACisvKgorICAgQkxBS0UyIHJlZmVyZW5jZSBzb3VyY2UgY29kZSBwYWNrYWdlIC0gcmVmZXJlbmNlIEMgaW1wbGVtZW50YXRpb25zCisgIAorICAgQ29weXJpZ2h0IDIwMTIsIFNhbXVlbCBOZXZlcyA8c25ldmVzQGRlaS51Yy5wdD4uICBZb3UgbWF5IHVzZSB0aGlzIHVuZGVyIHRoZQorICAgdGVybXMgb2YgdGhlIENDMCwgdGhlIE9wZW5TU0wgTGljZW5jZSwgb3IgdGhlIEFwYWNoZSBQdWJsaWMgTGljZW5zZSAyLjAsIGF0CisgICB5b3VyIG9wdGlvbi4gIFRoZSB0ZXJtcyBvZiB0aGVzZSBsaWNlbnNlcyBjYW4gYmUgZm91bmQgYXQ6CisgIAorICAgLSBDQzAgMS4wIFVuaXZlcnNhbCA6IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMAorICAgLSBPcGVuU1NMIGxpY2Vuc2UgICA6IGh0dHBzOi8vd3d3Lm9wZW5zc2wub3JnL3NvdXJjZS9saWNlbnNlLmh0bWwKKyAgIC0gQXBhY2hlIDIuMCAgICAgICAgOiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgCisgICBNb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBCTEFLRTIgaGFzaCBmdW5jdGlvbiBjYW4gYmUgZm91bmQgYXQKKyAgIGh0dHBzOi8vYmxha2UyLm5ldC4KKyovCisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorCisjaW5jbHVkZSAiYmxha2UyLmgiCisjaW5jbHVkZSAiYmxha2UyLWltcGwuaCIKKworc3RhdGljIGNvbnN0IHVpbnQzMl90IGJsYWtlMnNfSVZbOF0gPQoreworICAweDZBMDlFNjY3VUwsIDB4QkI2N0FFODVVTCwgMHgzQzZFRjM3MlVMLCAweEE1NEZGNTNBVUwsCisgIDB4NTEwRTUyN0ZVTCwgMHg5QjA1Njg4Q1VMLCAweDFGODNEOUFCVUwsIDB4NUJFMENEMTlVTAorfTsKKworc3RhdGljIGNvbnN0IHVpbnQ4X3QgYmxha2Uyc19zaWdtYVsxMF1bMTZdID0KK3sKKyAgeyAgMCwgIDEsICAyLCAgMywgIDQsICA1LCAgNiwgIDcsICA4LCAgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSB9ICwKKyAgeyAxNCwgMTAsICA0LCAgOCwgIDksIDE1LCAxMywgIDYsICAxLCAxMiwgIDAsICAyLCAxMSwgIDcsICA1LCAgMyB9ICwKKyAgeyAxMSwgIDgsIDEyLCAgMCwgIDUsICAyLCAxNSwgMTMsIDEwLCAxNCwgIDMsICA2LCAgNywgIDEsICA5LCAgNCB9ICwKKyAgeyAgNywgIDksICAzLCAgMSwgMTMsIDEyLCAxMSwgMTQsICAyLCAgNiwgIDUsIDEwLCAgNCwgIDAsIDE1LCAgOCB9ICwKKyAgeyAgOSwgIDAsICA1LCAgNywgIDIsICA0LCAxMCwgMTUsIDE0LCAgMSwgMTEsIDEyLCAgNiwgIDgsICAzLCAxMyB9ICwKKyAgeyAgMiwgMTIsICA2LCAxMCwgIDAsIDExLCAgOCwgIDMsICA0LCAxMywgIDcsICA1LCAxNSwgMTQsICAxLCAgOSB9ICwKKyAgeyAxMiwgIDUsICAxLCAxNSwgMTQsIDEzLCAgNCwgMTAsICAwLCAgNywgIDYsICAzLCAgOSwgIDIsICA4LCAxMSB9ICwKKyAgeyAxMywgMTEsICA3LCAxNCwgMTIsICAxLCAgMywgIDksICA1LCAgMCwgMTUsICA0LCAgOCwgIDYsICAyLCAxMCB9ICwKKyAgeyAgNiwgMTUsIDE0LCAgOSwgMTEsICAzLCAgMCwgIDgsIDEyLCAgMiwgMTMsICA3LCAgMSwgIDQsIDEwLCAgNSB9ICwKKyAgeyAxMCwgIDIsICA4LCAgNCwgIDcsICA2LCAgMSwgIDUsIDE1LCAxMSwgIDksIDE0LCAgMywgMTIsIDEzICwgMCB9ICwKK307CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX3NldF9sYXN0bm9kZSggYmxha2Uyc19zdGF0ZSAqUyApCit7CisgIFMtPmZbMV0gPSAtMTsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX2NsZWFyX2xhc3Rub2RlKCBibGFrZTJzX3N0YXRlICpTICkKK3sKKyAgUy0+ZlsxXSA9IDA7CisgIHJldHVybiAwOworfQorCisvKiBTb21lIGhlbHBlciBmdW5jdGlvbnMsIG5vdCBuZWNlc3NhcmlseSB1c2VmdWwgKi8KK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX2lzX2xhc3RibG9jayggY29uc3QgYmxha2Uyc19zdGF0ZSAqUyApCit7CisgIHJldHVybiBTLT5mWzBdICE9IDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX3NldF9sYXN0YmxvY2soIGJsYWtlMnNfc3RhdGUgKlMgKQoreworICBpZiggUy0+bGFzdF9ub2RlICkgYmxha2Uyc19zZXRfbGFzdG5vZGUoIFMgKTsKKworICBTLT5mWzBdID0gLTE7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2Uyc19jbGVhcl9sYXN0YmxvY2soIGJsYWtlMnNfc3RhdGUgKlMgKQoreworICBpZiggUy0+bGFzdF9ub2RlICkgYmxha2Uyc19jbGVhcl9sYXN0bm9kZSggUyApOworCisgIFMtPmZbMF0gPSAwOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfaW5jcmVtZW50X2NvdW50ZXIoIGJsYWtlMnNfc3RhdGUgKlMsIGNvbnN0IHVpbnQzMl90IGluYyApCit7CisgIFMtPnRbMF0gKz0gaW5jOworICBTLT50WzFdICs9ICggUy0+dFswXSA8IGluYyApOworICByZXR1cm4gMDsKK30KKworLyogUGFyYW1ldGVyLXJlbGF0ZWQgZnVuY3Rpb25zICovCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2Uyc19wYXJhbV9zZXRfZGlnZXN0X2xlbmd0aCggYmxha2Uyc19wYXJhbSAqUCwgY29uc3QgdWludDhfdCBkaWdlc3RfbGVuZ3RoICkKK3sKKyAgUC0+ZGlnZXN0X2xlbmd0aCA9IGRpZ2VzdF9sZW5ndGg7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2Uyc19wYXJhbV9zZXRfZmFub3V0KCBibGFrZTJzX3BhcmFtICpQLCBjb25zdCB1aW50OF90IGZhbm91dCApCit7CisgIFAtPmZhbm91dCA9IGZhbm91dDsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX3BhcmFtX3NldF9tYXhfZGVwdGgoIGJsYWtlMnNfcGFyYW0gKlAsIGNvbnN0IHVpbnQ4X3QgZGVwdGggKQoreworICBQLT5kZXB0aCA9IGRlcHRoOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfcGFyYW1fc2V0X2xlYWZfbGVuZ3RoKCBibGFrZTJzX3BhcmFtICpQLCBjb25zdCB1aW50MzJfdCBsZWFmX2xlbmd0aCApCit7CisgIHN0b3JlMzIoICZQLT5sZWFmX2xlbmd0aCwgbGVhZl9sZW5ndGggKTsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX3BhcmFtX3NldF9ub2RlX29mZnNldCggYmxha2Uyc19wYXJhbSAqUCwgY29uc3QgdWludDY0X3Qgbm9kZV9vZmZzZXQgKQoreworICBzdG9yZTQ4KCBQLT5ub2RlX29mZnNldCwgbm9kZV9vZmZzZXQgKTsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX3BhcmFtX3NldF9ub2RlX2RlcHRoKCBibGFrZTJzX3BhcmFtICpQLCBjb25zdCB1aW50OF90IG5vZGVfZGVwdGggKQoreworICBQLT5ub2RlX2RlcHRoID0gbm9kZV9kZXB0aDsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX3BhcmFtX3NldF9pbm5lcl9sZW5ndGgoIGJsYWtlMnNfcGFyYW0gKlAsIGNvbnN0IHVpbnQ4X3QgaW5uZXJfbGVuZ3RoICkKK3sKKyAgUC0+aW5uZXJfbGVuZ3RoID0gaW5uZXJfbGVuZ3RoOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfcGFyYW1fc2V0X3NhbHQoIGJsYWtlMnNfcGFyYW0gKlAsIGNvbnN0IHVpbnQ4X3Qgc2FsdFtCTEFLRTJTX1NBTFRCWVRFU10gKQoreworICBtZW1jcHkoIFAtPnNhbHQsIHNhbHQsIEJMQUtFMlNfU0FMVEJZVEVTICk7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2Uyc19wYXJhbV9zZXRfcGVyc29uYWwoIGJsYWtlMnNfcGFyYW0gKlAsIGNvbnN0IHVpbnQ4X3QgcGVyc29uYWxbQkxBS0UyU19QRVJTT05BTEJZVEVTXSApCit7CisgIG1lbWNweSggUC0+cGVyc29uYWwsIHBlcnNvbmFsLCBCTEFLRTJTX1BFUlNPTkFMQllURVMgKTsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX2luaXQwKCBibGFrZTJzX3N0YXRlICpTICkKK3sKKyAgaW50IGk7CisgIG1lbXNldCggUywgMCwgc2l6ZW9mKCBibGFrZTJzX3N0YXRlICkgKTsKKworICBmb3IoIGkgPSAwOyBpIDwgODsgKytpICkgUy0+aFtpXSA9IGJsYWtlMnNfSVZbaV07CisKKyAgcmV0dXJuIDA7Cit9CisKKy8qIGluaXQyIHhvcnMgSVYgd2l0aCBpbnB1dCBwYXJhbWV0ZXIgYmxvY2sgKi8KK2ludCBibGFrZTJzX2luaXRfcGFyYW0oIGJsYWtlMnNfc3RhdGUgKlMsIGNvbnN0IGJsYWtlMnNfcGFyYW0gKlAgKQoreworICBjb25zdCB1aW50MzJfdCAqcCA9ICggY29uc3QgdWludDMyX3QgKiApKCBQICk7CisgIHNpemVfdCBpOworCisgIGJsYWtlMnNfaW5pdDAoIFMgKTsKKworICAvKiBJViBYT1IgUGFyYW1CbG9jayAqLworICBmb3IoIGkgPSAwOyBpIDwgODsgKytpICkKKyAgICBTLT5oW2ldIF49IGxvYWQzMiggJnBbaV0gKTsKKworICByZXR1cm4gMDsKK30KKworCisvKiBTZXF1ZW50aWFsIGJsYWtlMnMgaW5pdGlhbGl6YXRpb24gKi8KK2ludCBibGFrZTJzX2luaXQoIGJsYWtlMnNfc3RhdGUgKlMsIGNvbnN0IHVpbnQ4X3Qgb3V0bGVuICkKK3sKKyAgYmxha2Uyc19wYXJhbSBQWzFdOworCisgIC8qIE1vdmUgaW50ZXJ2YWwgdmVyaWZpY2F0aW9uIGhlcmU/ICovCisgIGlmICggKCAhb3V0bGVuICkgfHwgKCBvdXRsZW4gPiBCTEFLRTJTX09VVEJZVEVTICkgKSByZXR1cm4gLTE7CisKKyAgUC0+ZGlnZXN0X2xlbmd0aCA9IG91dGxlbjsKKyAgUC0+a2V5X2xlbmd0aCAgICA9IDA7CisgIFAtPmZhbm91dCAgICAgICAgPSAxOworICBQLT5kZXB0aCAgICAgICAgID0gMTsKKyAgc3RvcmUzMiggJlAtPmxlYWZfbGVuZ3RoLCAwICk7CisgIHN0b3JlNDgoICZQLT5ub2RlX29mZnNldCwgMCApOworICBQLT5ub2RlX2RlcHRoICAgID0gMDsKKyAgUC0+aW5uZXJfbGVuZ3RoICA9IDA7CisgIC8qIG1lbXNldChQLT5yZXNlcnZlZCwgMCwgc2l6ZW9mKFAtPnJlc2VydmVkKSApOyAqLworICBtZW1zZXQoIFAtPnNhbHQsICAgICAwLCBzaXplb2YoIFAtPnNhbHQgKSApOworICBtZW1zZXQoIFAtPnBlcnNvbmFsLCAwLCBzaXplb2YoIFAtPnBlcnNvbmFsICkgKTsKKyAgcmV0dXJuIGJsYWtlMnNfaW5pdF9wYXJhbSggUywgUCApOworfQorCitpbnQgYmxha2Uyc19pbml0X2tleSggYmxha2Uyc19zdGF0ZSAqUywgY29uc3QgdWludDhfdCBvdXRsZW4sIGNvbnN0IHZvaWQgKmtleSwgY29uc3QgdWludDhfdCBrZXlsZW4gKQoreworICBibGFrZTJzX3BhcmFtIFBbMV07CisKKyAgaWYgKCAoICFvdXRsZW4gKSB8fCAoIG91dGxlbiA+IEJMQUtFMlNfT1VUQllURVMgKSApIHJldHVybiAtMTsKKworICBpZiAoICFrZXkgfHwgIWtleWxlbiB8fCBrZXlsZW4gPiBCTEFLRTJTX0tFWUJZVEVTICkgcmV0dXJuIC0xOworCisgIFAtPmRpZ2VzdF9sZW5ndGggPSBvdXRsZW47CisgIFAtPmtleV9sZW5ndGggICAgPSBrZXlsZW47CisgIFAtPmZhbm91dCAgICAgICAgPSAxOworICBQLT5kZXB0aCAgICAgICAgID0gMTsKKyAgc3RvcmUzMiggJlAtPmxlYWZfbGVuZ3RoLCAwICk7CisgIHN0b3JlNDgoICZQLT5ub2RlX29mZnNldCwgMCApOworICBQLT5ub2RlX2RlcHRoICAgID0gMDsKKyAgUC0+aW5uZXJfbGVuZ3RoICA9IDA7CisgIC8qIG1lbXNldChQLT5yZXNlcnZlZCwgMCwgc2l6ZW9mKFAtPnJlc2VydmVkKSApOyAqLworICBtZW1zZXQoIFAtPnNhbHQsICAgICAwLCBzaXplb2YoIFAtPnNhbHQgKSApOworICBtZW1zZXQoIFAtPnBlcnNvbmFsLCAwLCBzaXplb2YoIFAtPnBlcnNvbmFsICkgKTsKKworICBpZiggYmxha2Uyc19pbml0X3BhcmFtKCBTLCBQICkgPCAwICkgcmV0dXJuIC0xOworCisgIHsKKyAgICB1aW50OF90IGJsb2NrW0JMQUtFMlNfQkxPQ0tCWVRFU107CisgICAgbWVtc2V0KCBibG9jaywgMCwgQkxBS0UyU19CTE9DS0JZVEVTICk7CisgICAgbWVtY3B5KCBibG9jaywga2V5LCBrZXlsZW4gKTsKKyAgICBibGFrZTJzX3VwZGF0ZSggUywgYmxvY2ssIEJMQUtFMlNfQkxPQ0tCWVRFUyApOworICAgIHNlY3VyZV96ZXJvX21lbW9yeSggYmxvY2ssIEJMQUtFMlNfQkxPQ0tCWVRFUyApOyAvKiBCdXJuIHRoZSBrZXkgZnJvbSBzdGFjayAqLworICB9CisgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50IGJsYWtlMnNfY29tcHJlc3MoIGJsYWtlMnNfc3RhdGUgKlMsIGNvbnN0IHVpbnQ4X3QgYmxvY2tbQkxBS0UyU19CTE9DS0JZVEVTXSApCit7CisgIHVpbnQzMl90IG1bMTZdOworICB1aW50MzJfdCB2WzE2XTsKKyAgc2l6ZV90IGk7CisKKyAgZm9yKCBpID0gMDsgaSA8IDE2OyArK2kgKQorICAgIG1baV0gPSBsb2FkMzIoIGJsb2NrICsgaSAqIHNpemVvZiggbVtpXSApICk7CisKKyAgZm9yKCBpID0gMDsgaSA8IDg7ICsraSApCisgICAgdltpXSA9IFMtPmhbaV07CisKKyAgdlsgOF0gPSBibGFrZTJzX0lWWzBdOworICB2WyA5XSA9IGJsYWtlMnNfSVZbMV07CisgIHZbMTBdID0gYmxha2Uyc19JVlsyXTsKKyAgdlsxMV0gPSBibGFrZTJzX0lWWzNdOworICB2WzEyXSA9IFMtPnRbMF0gXiBibGFrZTJzX0lWWzRdOworICB2WzEzXSA9IFMtPnRbMV0gXiBibGFrZTJzX0lWWzVdOworICB2WzE0XSA9IFMtPmZbMF0gXiBibGFrZTJzX0lWWzZdOworICB2WzE1XSA9IFMtPmZbMV0gXiBibGFrZTJzX0lWWzddOworI2RlZmluZSBHKHIsaSxhLGIsYyxkKSBcCisgIGRvIHsgXAorICAgIGEgPSBhICsgYiArIG1bYmxha2Uyc19zaWdtYVtyXVsyKmkrMF1dOyBcCisgICAgZCA9IHJvdHIzMihkIF4gYSwgMTYpOyBcCisgICAgYyA9IGMgKyBkOyBcCisgICAgYiA9IHJvdHIzMihiIF4gYywgMTIpOyBcCisgICAgYSA9IGEgKyBiICsgbVtibGFrZTJzX3NpZ21hW3JdWzIqaSsxXV07IFwKKyAgICBkID0gcm90cjMyKGQgXiBhLCA4KTsgXAorICAgIGMgPSBjICsgZDsgXAorICAgIGIgPSByb3RyMzIoYiBeIGMsIDcpOyBcCisgIH0gd2hpbGUoMCkKKyNkZWZpbmUgUk9VTkQocikgIFwKKyAgZG8geyBcCisgICAgRyhyLDAsdlsgMF0sdlsgNF0sdlsgOF0sdlsxMl0pOyBcCisgICAgRyhyLDEsdlsgMV0sdlsgNV0sdlsgOV0sdlsxM10pOyBcCisgICAgRyhyLDIsdlsgMl0sdlsgNl0sdlsxMF0sdlsxNF0pOyBcCisgICAgRyhyLDMsdlsgM10sdlsgN10sdlsxMV0sdlsxNV0pOyBcCisgICAgRyhyLDQsdlsgMF0sdlsgNV0sdlsxMF0sdlsxNV0pOyBcCisgICAgRyhyLDUsdlsgMV0sdlsgNl0sdlsxMV0sdlsxMl0pOyBcCisgICAgRyhyLDYsdlsgMl0sdlsgN10sdlsgOF0sdlsxM10pOyBcCisgICAgRyhyLDcsdlsgM10sdlsgNF0sdlsgOV0sdlsxNF0pOyBcCisgIH0gd2hpbGUoMCkKKyAgUk9VTkQoIDAgKTsKKyAgUk9VTkQoIDEgKTsKKyAgUk9VTkQoIDIgKTsKKyAgUk9VTkQoIDMgKTsKKyAgUk9VTkQoIDQgKTsKKyAgUk9VTkQoIDUgKTsKKyAgUk9VTkQoIDYgKTsKKyAgUk9VTkQoIDcgKTsKKyAgUk9VTkQoIDggKTsKKyAgUk9VTkQoIDkgKTsKKworICBmb3IoIGkgPSAwOyBpIDwgODsgKytpICkKKyAgICBTLT5oW2ldID0gUy0+aFtpXSBeIHZbaV0gXiB2W2kgKyA4XTsKKworI3VuZGVmIEcKKyN1bmRlZiBST1VORAorICByZXR1cm4gMDsKK30KKworCitpbnQgYmxha2Uyc191cGRhdGUoIGJsYWtlMnNfc3RhdGUgKlMsIGNvbnN0IHVpbnQ4X3QgKmluLCB1aW50NjRfdCBpbmxlbiApCit7CisgIHdoaWxlKCBpbmxlbiA+IDAgKQorICB7CisgICAgc2l6ZV90IGxlZnQgPSBTLT5idWZsZW47CisgICAgc2l6ZV90IGZpbGwgPSAyICogQkxBS0UyU19CTE9DS0JZVEVTIC0gbGVmdDsKKworICAgIGlmKCBpbmxlbiA+IGZpbGwgKQorICAgIHsKKyAgICAgIG1lbWNweSggUy0+YnVmICsgbGVmdCwgaW4sIGZpbGwgKTsgLyogRmlsbCBidWZmZXIgKi8KKyAgICAgIFMtPmJ1ZmxlbiArPSBmaWxsOworICAgICAgYmxha2Uyc19pbmNyZW1lbnRfY291bnRlciggUywgQkxBS0UyU19CTE9DS0JZVEVTICk7CisgICAgICBibGFrZTJzX2NvbXByZXNzKCBTLCBTLT5idWYgKTsgLyogQ29tcHJlc3MgKi8KKyAgICAgIG1lbWNweSggUy0+YnVmLCBTLT5idWYgKyBCTEFLRTJTX0JMT0NLQllURVMsIEJMQUtFMlNfQkxPQ0tCWVRFUyApOyAvKiBTaGlmdCBidWZmZXIgbGVmdCAqLworICAgICAgUy0+YnVmbGVuIC09IEJMQUtFMlNfQkxPQ0tCWVRFUzsKKyAgICAgIGluICs9IGZpbGw7CisgICAgICBpbmxlbiAtPSBmaWxsOworICAgIH0KKyAgICBlbHNlIC8qIGlubGVuIDw9IGZpbGwgKi8KKyAgICB7CisgICAgICBtZW1jcHkoIFMtPmJ1ZiArIGxlZnQsIGluLCAoc2l6ZV90KWlubGVuICk7CisgICAgICBTLT5idWZsZW4gKz0gKHNpemVfdClpbmxlbjsgLyogQmUgbGF6eSwgZG8gbm90IGNvbXByZXNzICovCisgICAgICBpbiArPSBpbmxlbjsKKyAgICAgIGlubGVuIC09IGlubGVuOworICAgIH0KKyAgfQorCisgIHJldHVybiAwOworfQorCitpbnQgYmxha2Uyc19maW5hbCggYmxha2Uyc19zdGF0ZSAqUywgdWludDhfdCAqb3V0LCB1aW50OF90IG91dGxlbiApCit7CisgIHVpbnQ4X3QgYnVmZmVyW0JMQUtFMlNfT1VUQllURVNdID0gezB9OworICBpbnQgaTsKKworICBpZiggb3V0ID09IE5VTEwgfHwgb3V0bGVuID09IDAgfHwgb3V0bGVuID4gQkxBS0UyU19PVVRCWVRFUyApCisgICAgcmV0dXJuIC0xOworCisgIGlmKCBibGFrZTJzX2lzX2xhc3RibG9jayggUyApICkKKyAgICByZXR1cm4gLTE7CisKKworICBpZiggUy0+YnVmbGVuID4gQkxBS0UyU19CTE9DS0JZVEVTICkKKyAgeworICAgIGJsYWtlMnNfaW5jcmVtZW50X2NvdW50ZXIoIFMsIEJMQUtFMlNfQkxPQ0tCWVRFUyApOworICAgIGJsYWtlMnNfY29tcHJlc3MoIFMsIFMtPmJ1ZiApOworICAgIFMtPmJ1ZmxlbiAtPSBCTEFLRTJTX0JMT0NLQllURVM7CisgICAgbWVtbW92ZSggUy0+YnVmLCBTLT5idWYgKyBCTEFLRTJTX0JMT0NLQllURVMsIFMtPmJ1ZmxlbiApOworICB9CisKKyAgYmxha2Uyc19pbmNyZW1lbnRfY291bnRlciggUywgKCB1aW50MzJfdCApUy0+YnVmbGVuICk7CisgIGJsYWtlMnNfc2V0X2xhc3RibG9jayggUyApOworICBtZW1zZXQoIFMtPmJ1ZiArIFMtPmJ1ZmxlbiwgMCwgMiAqIEJMQUtFMlNfQkxPQ0tCWVRFUyAtIFMtPmJ1ZmxlbiApOyAvKiBQYWRkaW5nICovCisgIGJsYWtlMnNfY29tcHJlc3MoIFMsIFMtPmJ1ZiApOworCisgIGZvciggaSA9IDA7IGkgPCA4OyArK2kgKSAvKiBPdXRwdXQgZnVsbCBoYXNoIHRvIHRlbXAgYnVmZmVyICovCisgICAgc3RvcmUzMiggYnVmZmVyICsgc2l6ZW9mKCBTLT5oW2ldICkgKiBpLCBTLT5oW2ldICk7CisgICAgCisgIG1lbWNweSggb3V0LCBidWZmZXIsIG91dGxlbiApOworICByZXR1cm4gMDsKK30KKworaW50IGJsYWtlMnMoIHVpbnQ4X3QgKm91dCwgY29uc3Qgdm9pZCAqaW4sIGNvbnN0IHZvaWQgKmtleSwgY29uc3QgdWludDhfdCBvdXRsZW4sIGNvbnN0IHVpbnQ2NF90IGlubGVuLCB1aW50OF90IGtleWxlbiApCit7CisgIGJsYWtlMnNfc3RhdGUgU1sxXTsKKworICAvKiBWZXJpZnkgcGFyYW1ldGVycyAqLworICBpZiAoIE5VTEwgPT0gaW4gJiYgaW5sZW4gPiAwICkgcmV0dXJuIC0xOworCisgIGlmICggTlVMTCA9PSBvdXQgKSByZXR1cm4gLTE7CisKKyAgaWYgKCBOVUxMID09IGtleSAmJiBrZXlsZW4gPiAwKSByZXR1cm4gLTE7CisKKyAgaWYoICFvdXRsZW4gfHwgb3V0bGVuID4gQkxBS0UyU19PVVRCWVRFUyApIHJldHVybiAtMTsKKworICBpZigga2V5bGVuID4gQkxBS0UyU19LRVlCWVRFUyApIHJldHVybiAtMTsKKworICBpZigga2V5bGVuID4gMCApCisgIHsKKyAgICBpZiggYmxha2Uyc19pbml0X2tleSggUywgb3V0bGVuLCBrZXksIGtleWxlbiApIDwgMCApIHJldHVybiAtMTsKKyAgfQorICBlbHNlCisgIHsKKyAgICBpZiggYmxha2Uyc19pbml0KCBTLCBvdXRsZW4gKSA8IDAgKSByZXR1cm4gLTE7CisgIH0KKworICBibGFrZTJzX3VwZGF0ZSggUywgKCBjb25zdCB1aW50OF90ICogKWluLCBpbmxlbiApOworICBibGFrZTJzX2ZpbmFsKCBTLCBvdXQsIG91dGxlbiApOworICByZXR1cm4gMDsKK30KKworI2lmIGRlZmluZWQoU1VQRVJDT1ApCitpbnQgY3J5cHRvX2hhc2goIHVuc2lnbmVkIGNoYXIgKm91dCwgdW5zaWduZWQgY2hhciAqaW4sIHVuc2lnbmVkIGxvbmcgbG9uZyBpbmxlbiApCit7CisgIHJldHVybiBibGFrZTJzKCBvdXQsIGluLCBOVUxMLCBCTEFLRTJTX09VVEJZVEVTLCBpbmxlbiwgMCApOworfQorI2VuZGlmCisKKyNpZiBkZWZpbmVkKEJMQUtFMlNfU0VMRlRFU1QpCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSAiYmxha2UyLWthdC5oIgoraW50IG1haW4oIGludCBhcmdjLCBjaGFyICoqYXJndiApCit7CisgIHVpbnQ4X3Qga2V5W0JMQUtFMlNfS0VZQllURVNdOworICB1aW50OF90IGJ1ZltLQVRfTEVOR1RIXTsKKyAgc2l6ZV90IGk7CisKKyAgZm9yKCBpID0gMDsgaSA8IEJMQUtFMlNfS0VZQllURVM7ICsraSApCisgICAga2V5W2ldID0gKCB1aW50OF90IClpOworCisgIGZvciggaSA9IDA7IGkgPCBLQVRfTEVOR1RIOyArK2kgKQorICAgIGJ1ZltpXSA9ICggdWludDhfdCApaTsKKworICBmb3IoIGkgPSAwOyBpIDwgS0FUX0xFTkdUSDsgKytpICkKKyAgeworICAgIHVpbnQ4X3QgaGFzaFtCTEFLRTJTX09VVEJZVEVTXTsKKyAgICBibGFrZTJzKCBoYXNoLCBidWYsIGtleSwgQkxBS0UyU19PVVRCWVRFUywgaSwgQkxBS0UyU19LRVlCWVRFUyApOworCisgICAgaWYoIDAgIT0gbWVtY21wKCBoYXNoLCBibGFrZTJzX2tleWVkX2thdFtpXSwgQkxBS0UyU19PVVRCWVRFUyApICkKKyAgICB7CisgICAgICBwdXRzKCAiZXJyb3IiICk7CisgICAgICByZXR1cm4gLTE7CisgICAgfQorICB9CisKKyAgcHV0cyggIm9rIiApOworICByZXR1cm4gMDsKK30KKyNlbmRpZgorCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMnMtcm91bmQuaCBiL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMnMtcm91bmQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDcwZDkyCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2Uycy1yb3VuZC5oCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgICBCTEFLRTIgcmVmZXJlbmNlIHNvdXJjZSBjb2RlIHBhY2thZ2UgLSBvcHRpbWl6ZWQgQyBpbXBsZW1lbnRhdGlvbnMKKyAgCisgICBDb3B5cmlnaHQgMjAxMiwgU2FtdWVsIE5ldmVzIDxzbmV2ZXNAZGVpLnVjLnB0Pi4gIFlvdSBtYXkgdXNlIHRoaXMgdW5kZXIgdGhlCisgICB0ZXJtcyBvZiB0aGUgQ0MwLCB0aGUgT3BlblNTTCBMaWNlbmNlLCBvciB0aGUgQXBhY2hlIFB1YmxpYyBMaWNlbnNlIDIuMCwgYXQKKyAgIHlvdXIgb3B0aW9uLiAgVGhlIHRlcm1zIG9mIHRoZXNlIGxpY2Vuc2VzIGNhbiBiZSBmb3VuZCBhdDoKKyAgCisgICAtIENDMCAxLjAgVW5pdmVyc2FsIDogaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wCisgICAtIE9wZW5TU0wgbGljZW5zZSAgIDogaHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvc291cmNlL2xpY2Vuc2UuaHRtbAorICAgLSBBcGFjaGUgMi4wICAgICAgICA6IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAKKyAgIE1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIEJMQUtFMiBoYXNoIGZ1bmN0aW9uIGNhbiBiZSBmb3VuZCBhdAorICAgaHR0cHM6Ly9ibGFrZTIubmV0LgorKi8KKyNwcmFnbWEgb25jZQorI2lmbmRlZiBfX0JMQUtFMlNfUk9VTkRfSF9fCisjZGVmaW5lIF9fQkxBS0UyU19ST1VORF9IX18KKworI2RlZmluZSBMT0FEVShwKSAgX21tX2xvYWR1X3NpMTI4KCAoY29uc3QgX19tMTI4aSAqKShwKSApCisjZGVmaW5lIFNUT1JFVShwLHIpIF9tbV9zdG9yZXVfc2kxMjgoKF9fbTEyOGkgKikocCksIHIpCisKKyNkZWZpbmUgVE9GKHJlZykgX21tX2Nhc3RzaTEyOF9wcygocmVnKSkKKyNkZWZpbmUgVE9JKHJlZykgX21tX2Nhc3Rwc19zaTEyOCgocmVnKSkKKworI2RlZmluZSBMSUtFTFkoeCkgX19idWlsdGluX2V4cGVjdCgoeCksMSkKKworCisvKiBNaWNyb2FyY2hpdGVjdHVyZS1zcGVjaWZpYyBtYWNyb3MgKi8KKyNpZm5kZWYgSEFWRV9YT1AKKyNpZmRlZiBIQVZFX1NTU0UzCisjZGVmaW5lIF9tbV9yb3RpX2VwaTMyKHIsIGMpICggXAorICAgICAgICAgICAgICAgICg4PT0tKGMpKSA/IF9tbV9zaHVmZmxlX2VwaTgocixyOCkgXAorICAgICAgICAgICAgICA6ICgxNj09LShjKSkgPyBfbW1fc2h1ZmZsZV9lcGk4KHIscjE2KSBcCisgICAgICAgICAgICAgIDogX21tX3hvcl9zaTEyOChfbW1fc3JsaV9lcGkzMiggKHIpLCAtKGMpICksX21tX3NsbGlfZXBpMzIoIChyKSwgMzItKC0oYykpICkpICkKKyNlbHNlCisjZGVmaW5lIF9tbV9yb3RpX2VwaTMyKHIsIGMpIF9tbV94b3Jfc2kxMjgoX21tX3NybGlfZXBpMzIoIChyKSwgLShjKSApLF9tbV9zbGxpX2VwaTMyKCAociksIDMyLSgtKGMpKSApKQorI2VuZGlmCisjZWxzZQorLyogLi4uICovCisjZW5kaWYKKworCisjZGVmaW5lIEcxKHJvdzEscm93Mixyb3czLHJvdzQsYnVmKSBcCisgIHJvdzEgPSBfbW1fYWRkX2VwaTMyKCBfbW1fYWRkX2VwaTMyKCByb3cxLCBidWYpLCByb3cyICk7IFwKKyAgcm93NCA9IF9tbV94b3Jfc2kxMjgoIHJvdzQsIHJvdzEgKTsgXAorICByb3c0ID0gX21tX3JvdGlfZXBpMzIocm93NCwgLTE2KTsgXAorICByb3czID0gX21tX2FkZF9lcGkzMiggcm93Mywgcm93NCApOyAgIFwKKyAgcm93MiA9IF9tbV94b3Jfc2kxMjgoIHJvdzIsIHJvdzMgKTsgXAorICByb3cyID0gX21tX3JvdGlfZXBpMzIocm93MiwgLTEyKTsKKworI2RlZmluZSBHMihyb3cxLHJvdzIscm93Myxyb3c0LGJ1ZikgXAorICByb3cxID0gX21tX2FkZF9lcGkzMiggX21tX2FkZF9lcGkzMiggcm93MSwgYnVmKSwgcm93MiApOyBcCisgIHJvdzQgPSBfbW1feG9yX3NpMTI4KCByb3c0LCByb3cxICk7IFwKKyAgcm93NCA9IF9tbV9yb3RpX2VwaTMyKHJvdzQsIC04KTsgXAorICByb3czID0gX21tX2FkZF9lcGkzMiggcm93Mywgcm93NCApOyAgIFwKKyAgcm93MiA9IF9tbV94b3Jfc2kxMjgoIHJvdzIsIHJvdzMgKTsgXAorICByb3cyID0gX21tX3JvdGlfZXBpMzIocm93MiwgLTcpOworCisjZGVmaW5lIERJQUdPTkFMSVpFKHJvdzEscm93Mixyb3czLHJvdzQpIFwKKyAgcm93NCA9IF9tbV9zaHVmZmxlX2VwaTMyKCByb3c0LCBfTU1fU0hVRkZMRSgyLDEsMCwzKSApOyBcCisgIHJvdzMgPSBfbW1fc2h1ZmZsZV9lcGkzMiggcm93MywgX01NX1NIVUZGTEUoMSwwLDMsMikgKTsgXAorICByb3cyID0gX21tX3NodWZmbGVfZXBpMzIoIHJvdzIsIF9NTV9TSFVGRkxFKDAsMywyLDEpICk7CisKKyNkZWZpbmUgVU5ESUFHT05BTElaRShyb3cxLHJvdzIscm93Myxyb3c0KSBcCisgIHJvdzQgPSBfbW1fc2h1ZmZsZV9lcGkzMiggcm93NCwgX01NX1NIVUZGTEUoMCwzLDIsMSkgKTsgXAorICByb3czID0gX21tX3NodWZmbGVfZXBpMzIoIHJvdzMsIF9NTV9TSFVGRkxFKDEsMCwzLDIpICk7IFwKKyAgcm93MiA9IF9tbV9zaHVmZmxlX2VwaTMyKCByb3cyLCBfTU1fU0hVRkZMRSgyLDEsMCwzKSApOworCisjaWYgZGVmaW5lZChIQVZFX1hPUCkKKyNpbmNsdWRlICJibGFrZTJzLWxvYWQteG9wLmgiCisjZWxpZiBkZWZpbmVkKEhBVkVfU1NFNDEpCisjaW5jbHVkZSAiYmxha2Uycy1sb2FkLXNzZTQxLmgiCisjZWxzZQorI2luY2x1ZGUgImJsYWtlMnMtbG9hZC1zc2UyLmgiCisjZW5kaWYKKworI2RlZmluZSBST1VORChyKSAgXAorICBMT0FEX01TR18gIyNyICMjXzEoYnVmMSk7IFwKKyAgRzEocm93MSxyb3cyLHJvdzMscm93NCxidWYxKTsgXAorICBMT0FEX01TR18gIyNyICMjXzIoYnVmMik7IFwKKyAgRzIocm93MSxyb3cyLHJvdzMscm93NCxidWYyKTsgXAorICBESUFHT05BTElaRShyb3cxLHJvdzIscm93Myxyb3c0KTsgXAorICBMT0FEX01TR18gIyNyICMjXzMoYnVmMyk7IFwKKyAgRzEocm93MSxyb3cyLHJvdzMscm93NCxidWYzKTsgXAorICBMT0FEX01TR18gIyNyICMjXzQoYnVmNCk7IFwKKyAgRzIocm93MSxyb3cyLHJvdzMscm93NCxidWY0KTsgXAorICBVTkRJQUdPTkFMSVpFKHJvdzEscm93Mixyb3czLHJvdzQpOyBcCisgCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2Uycy5jIGIvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2Uycy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5Mzg1ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJzLmMKQEAgLTAsMCArMSw0MzUgQEAKKy8qCisgICBCTEFLRTIgcmVmZXJlbmNlIHNvdXJjZSBjb2RlIHBhY2thZ2UgLSBvcHRpbWl6ZWQgQyBpbXBsZW1lbnRhdGlvbnMKKyAgCisgICBDb3B5cmlnaHQgMjAxMiwgU2FtdWVsIE5ldmVzIDxzbmV2ZXNAZGVpLnVjLnB0Pi4gIFlvdSBtYXkgdXNlIHRoaXMgdW5kZXIgdGhlCisgICB0ZXJtcyBvZiB0aGUgQ0MwLCB0aGUgT3BlblNTTCBMaWNlbmNlLCBvciB0aGUgQXBhY2hlIFB1YmxpYyBMaWNlbnNlIDIuMCwgYXQKKyAgIHlvdXIgb3B0aW9uLiAgVGhlIHRlcm1zIG9mIHRoZXNlIGxpY2Vuc2VzIGNhbiBiZSBmb3VuZCBhdDoKKyAgCisgICAtIENDMCAxLjAgVW5pdmVyc2FsIDogaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wCisgICAtIE9wZW5TU0wgbGljZW5zZSAgIDogaHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvc291cmNlL2xpY2Vuc2UuaHRtbAorICAgLSBBcGFjaGUgMi4wICAgICAgICA6IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAKKyAgIE1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIEJMQUtFMiBoYXNoIGZ1bmN0aW9uIGNhbiBiZSBmb3VuZCBhdAorICAgaHR0cHM6Ly9ibGFrZTIubmV0LgorKi8KKworI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNpbmNsdWRlICJibGFrZTIuaCIKKyNpbmNsdWRlICJibGFrZTItaW1wbC5oIgorCisjaW5jbHVkZSAiYmxha2UyLWNvbmZpZy5oIgorCisKKyNpbmNsdWRlIDxlbW1pbnRyaW4uaD4KKyNpZiBkZWZpbmVkKEhBVkVfU1NTRTMpCisjaW5jbHVkZSA8dG1taW50cmluLmg+CisjZW5kaWYKKyNpZiBkZWZpbmVkKEhBVkVfU1NFNDEpCisjaW5jbHVkZSA8c21taW50cmluLmg+CisjZW5kaWYKKyNpZiBkZWZpbmVkKEhBVkVfQVZYKQorI2luY2x1ZGUgPGltbWludHJpbi5oPgorI2VuZGlmCisjaWYgZGVmaW5lZChIQVZFX1hPUCkKKyNpbmNsdWRlIDx4ODZpbnRyaW4uaD4KKyNlbmRpZgorCisjaW5jbHVkZSAiYmxha2Uycy1yb3VuZC5oIgorCitzdGF0aWMgY29uc3QgdWludDMyX3QgYmxha2Uyc19JVls4XSA9Cit7CisgIDB4NkEwOUU2NjdVTCwgMHhCQjY3QUU4NVVMLCAweDNDNkVGMzcyVUwsIDB4QTU0RkY1M0FVTCwKKyAgMHg1MTBFNTI3RlVMLCAweDlCMDU2ODhDVUwsIDB4MUY4M0Q5QUJVTCwgMHg1QkUwQ0QxOVVMCit9OworCitzdGF0aWMgY29uc3QgdWludDhfdCBibGFrZTJzX3NpZ21hWzEwXVsxNl0gPQoreworICB7ICAwLCAgMSwgIDIsICAzLCAgNCwgIDUsICA2LCAgNywgIDgsICA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1IH0gLAorICB7IDE0LCAxMCwgIDQsICA4LCAgOSwgMTUsIDEzLCAgNiwgIDEsIDEyLCAgMCwgIDIsIDExLCAgNywgIDUsICAzIH0gLAorICB7IDExLCAgOCwgMTIsICAwLCAgNSwgIDIsIDE1LCAxMywgMTAsIDE0LCAgMywgIDYsICA3LCAgMSwgIDksICA0IH0gLAorICB7ICA3LCAgOSwgIDMsICAxLCAxMywgMTIsIDExLCAxNCwgIDIsICA2LCAgNSwgMTAsICA0LCAgMCwgMTUsICA4IH0gLAorICB7ICA5LCAgMCwgIDUsICA3LCAgMiwgIDQsIDEwLCAxNSwgMTQsICAxLCAxMSwgMTIsICA2LCAgOCwgIDMsIDEzIH0gLAorICB7ICAyLCAxMiwgIDYsIDEwLCAgMCwgMTEsICA4LCAgMywgIDQsIDEzLCAgNywgIDUsIDE1LCAxNCwgIDEsICA5IH0gLAorICB7IDEyLCAgNSwgIDEsIDE1LCAxNCwgMTMsICA0LCAxMCwgIDAsICA3LCAgNiwgIDMsICA5LCAgMiwgIDgsIDExIH0gLAorICB7IDEzLCAxMSwgIDcsIDE0LCAxMiwgIDEsICAzLCAgOSwgIDUsICAwLCAxNSwgIDQsICA4LCAgNiwgIDIsIDEwIH0gLAorICB7ICA2LCAxNSwgMTQsICA5LCAxMSwgIDMsICAwLCAgOCwgMTIsICAyLCAxMywgIDcsICAxLCAgNCwgMTAsICA1IH0gLAorICB7IDEwLCAgMiwgIDgsICA0LCAgNywgIDYsICAxLCAgNSwgMTUsIDExLCAgOSwgMTQsICAzLCAxMiwgMTMgLCAwIH0gLAorfTsKKworCisvKiBTb21lIGhlbHBlciBmdW5jdGlvbnMsIG5vdCBuZWNlc3NhcmlseSB1c2VmdWwgKi8KK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX3NldF9sYXN0bm9kZSggYmxha2Uyc19zdGF0ZSAqUyApCit7CisgIFMtPmZbMV0gPSAtMTsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX2NsZWFyX2xhc3Rub2RlKCBibGFrZTJzX3N0YXRlICpTICkKK3sKKyAgUy0+ZlsxXSA9IDA7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2Uyc19pc19sYXN0YmxvY2soIGNvbnN0IGJsYWtlMnNfc3RhdGUgKlMgKQoreworICByZXR1cm4gUy0+ZlswXSAhPSAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2Uyc19zZXRfbGFzdGJsb2NrKCBibGFrZTJzX3N0YXRlICpTICkKK3sKKyAgaWYoIFMtPmxhc3Rfbm9kZSApIGJsYWtlMnNfc2V0X2xhc3Rub2RlKCBTICk7CisKKyAgUy0+ZlswXSA9IC0xOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfY2xlYXJfbGFzdGJsb2NrKCBibGFrZTJzX3N0YXRlICpTICkKK3sKKyAgaWYoIFMtPmxhc3Rfbm9kZSApIGJsYWtlMnNfY2xlYXJfbGFzdG5vZGUoIFMgKTsKKworICBTLT5mWzBdID0gMDsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX2luY3JlbWVudF9jb3VudGVyKCBibGFrZTJzX3N0YXRlICpTLCBjb25zdCB1aW50MzJfdCBpbmMgKQoreworICB1aW50NjRfdCB0ID0gKCAoIHVpbnQ2NF90IClTLT50WzFdIDw8IDMyICkgfCBTLT50WzBdOworICB0ICs9IGluYzsKKyAgUy0+dFswXSA9ICggdWludDMyX3QgKSggdCA+PiAgMCApOworICBTLT50WzFdID0gKCB1aW50MzJfdCApKCB0ID4+IDMyICk7CisgIHJldHVybiAwOworfQorCisKKy8qIFBhcmFtZXRlci1yZWxhdGVkIGZ1bmN0aW9ucyAqLworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfcGFyYW1fc2V0X2RpZ2VzdF9sZW5ndGgoIGJsYWtlMnNfcGFyYW0gKlAsIGNvbnN0IHVpbnQ4X3QgZGlnZXN0X2xlbmd0aCApCit7CisgIFAtPmRpZ2VzdF9sZW5ndGggPSBkaWdlc3RfbGVuZ3RoOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfcGFyYW1fc2V0X2Zhbm91dCggYmxha2Uyc19wYXJhbSAqUCwgY29uc3QgdWludDhfdCBmYW5vdXQgKQoreworICBQLT5mYW5vdXQgPSBmYW5vdXQ7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2Uyc19wYXJhbV9zZXRfbWF4X2RlcHRoKCBibGFrZTJzX3BhcmFtICpQLCBjb25zdCB1aW50OF90IGRlcHRoICkKK3sKKyAgUC0+ZGVwdGggPSBkZXB0aDsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX3BhcmFtX3NldF9sZWFmX2xlbmd0aCggYmxha2Uyc19wYXJhbSAqUCwgY29uc3QgdWludDMyX3QgbGVhZl9sZW5ndGggKQoreworICBQLT5sZWFmX2xlbmd0aCA9IGxlYWZfbGVuZ3RoOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfcGFyYW1fc2V0X25vZGVfb2Zmc2V0KCBibGFrZTJzX3BhcmFtICpQLCBjb25zdCB1aW50NjRfdCBub2RlX29mZnNldCApCit7CisgIHN0b3JlNDgoIFAtPm5vZGVfb2Zmc2V0LCBub2RlX29mZnNldCApOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfcGFyYW1fc2V0X25vZGVfZGVwdGgoIGJsYWtlMnNfcGFyYW0gKlAsIGNvbnN0IHVpbnQ4X3Qgbm9kZV9kZXB0aCApCit7CisgIFAtPm5vZGVfZGVwdGggPSBub2RlX2RlcHRoOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfcGFyYW1fc2V0X2lubmVyX2xlbmd0aCggYmxha2Uyc19wYXJhbSAqUCwgY29uc3QgdWludDhfdCBpbm5lcl9sZW5ndGggKQoreworICBQLT5pbm5lcl9sZW5ndGggPSBpbm5lcl9sZW5ndGg7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2Uyc19wYXJhbV9zZXRfc2FsdCggYmxha2Uyc19wYXJhbSAqUCwgY29uc3QgdWludDhfdCBzYWx0W0JMQUtFMlNfU0FMVEJZVEVTXSApCit7CisgIG1lbWNweSggUC0+c2FsdCwgc2FsdCwgQkxBS0UyU19TQUxUQllURVMgKTsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX3BhcmFtX3NldF9wZXJzb25hbCggYmxha2Uyc19wYXJhbSAqUCwgY29uc3QgdWludDhfdCBwZXJzb25hbFtCTEFLRTJTX1BFUlNPTkFMQllURVNdICkKK3sKKyAgbWVtY3B5KCBQLT5wZXJzb25hbCwgcGVyc29uYWwsIEJMQUtFMlNfUEVSU09OQUxCWVRFUyApOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfaW5pdDAoIGJsYWtlMnNfc3RhdGUgKlMgKQoreworICBpbnQgaTsKKyAgbWVtc2V0KCBTLCAwLCBzaXplb2YoIGJsYWtlMnNfc3RhdGUgKSApOworCisgIGZvciggaSA9IDA7IGkgPCA4OyArK2kgKSBTLT5oW2ldID0gYmxha2Uyc19JVltpXTsKKworICByZXR1cm4gMDsKK30KKworLyogaW5pdDIgeG9ycyBJViB3aXRoIGlucHV0IHBhcmFtZXRlciBibG9jayAqLworaW50IGJsYWtlMnNfaW5pdF9wYXJhbSggYmxha2Uyc19zdGF0ZSAqUywgY29uc3QgYmxha2Uyc19wYXJhbSAqUCApCit7CisgIC8qYmxha2Uyc19pbml0MCggUyApOyAqLworICBjb25zdCB1aW50OF90ICogdiA9ICggY29uc3QgdWludDhfdCAqICkoIGJsYWtlMnNfSVYgKTsKKyAgY29uc3QgdWludDhfdCAqIHAgPSAoIGNvbnN0IHVpbnQ4X3QgKiApKCBQICk7CisgIHVpbnQ4X3QgKiBoID0gKCB1aW50OF90ICogKSggUy0+aCApOworICBpbnQgaTsKKyAgLyogSVYgWE9SIFBhcmFtQmxvY2sgKi8KKyAgbWVtc2V0KCBTLCAwLCBzaXplb2YoIGJsYWtlMnNfc3RhdGUgKSApOworCisgIGZvciggaSA9IDA7IGkgPCBCTEFLRTJTX09VVEJZVEVTOyArK2kgKSBoW2ldID0gdltpXSBeIHBbaV07CisKKyAgcmV0dXJuIDA7Cit9CisKKworLyogU29tZSBzb3J0IG9mIGRlZmF1bHQgcGFyYW1ldGVyIGJsb2NrIGluaXRpYWxpemF0aW9uLCBmb3Igc2VxdWVudGlhbCBibGFrZTJzICovCitpbnQgYmxha2Uyc19pbml0KCBibGFrZTJzX3N0YXRlICpTLCBjb25zdCB1aW50OF90IG91dGxlbiApCit7CisgIGNvbnN0IGJsYWtlMnNfcGFyYW0gUCA9CisgIHsKKyAgICBvdXRsZW4sCisgICAgMCwKKyAgICAxLAorICAgIDEsCisgICAgMCwKKyAgICB7MH0sCisgICAgMCwKKyAgICAwLAorICAgIHswfSwKKyAgICB7MH0KKyAgfTsKKyAgLyogTW92ZSBpbnRlcnZhbCB2ZXJpZmljYXRpb24gaGVyZT8gKi8KKyAgaWYgKCAoICFvdXRsZW4gKSB8fCAoIG91dGxlbiA+IEJMQUtFMlNfT1VUQllURVMgKSApIHJldHVybiAtMTsKKyAgcmV0dXJuIGJsYWtlMnNfaW5pdF9wYXJhbSggUywgJlAgKTsKK30KKworCitpbnQgYmxha2Uyc19pbml0X2tleSggYmxha2Uyc19zdGF0ZSAqUywgY29uc3QgdWludDhfdCBvdXRsZW4sIGNvbnN0IHZvaWQgKmtleSwgY29uc3QgdWludDhfdCBrZXlsZW4gKQoreworICBjb25zdCBibGFrZTJzX3BhcmFtIFAgPQorICB7CisgICAgb3V0bGVuLAorICAgIGtleWxlbiwKKyAgICAxLAorICAgIDEsCisgICAgMCwKKyAgICB7MH0sCisgICAgMCwKKyAgICAwLAorICAgIHswfSwKKyAgICB7MH0KKyAgfTsKKworICAvKiBNb3ZlIGludGVydmFsIHZlcmlmaWNhdGlvbiBoZXJlPyAqLworICBpZiAoICggIW91dGxlbiApIHx8ICggb3V0bGVuID4gQkxBS0UyU19PVVRCWVRFUyApICkgcmV0dXJuIC0xOworCisgIGlmICggKCAha2V5ICkgfHwgKCAha2V5bGVuICkgfHwga2V5bGVuID4gQkxBS0UyU19LRVlCWVRFUyApIHJldHVybiAtMTsKKworICBpZiggYmxha2Uyc19pbml0X3BhcmFtKCBTLCAmUCApIDwgMCApCisgICAgcmV0dXJuIC0xOworCisgIHsKKyAgICB1aW50OF90IGJsb2NrW0JMQUtFMlNfQkxPQ0tCWVRFU107CisgICAgbWVtc2V0KCBibG9jaywgMCwgQkxBS0UyU19CTE9DS0JZVEVTICk7CisgICAgbWVtY3B5KCBibG9jaywga2V5LCBrZXlsZW4gKTsKKyAgICBibGFrZTJzX3VwZGF0ZSggUywgYmxvY2ssIEJMQUtFMlNfQkxPQ0tCWVRFUyApOworICAgIHNlY3VyZV96ZXJvX21lbW9yeSggYmxvY2ssIEJMQUtFMlNfQkxPQ0tCWVRFUyApOyAvKiBCdXJuIHRoZSBrZXkgZnJvbSBzdGFjayAqLworICB9CisgIHJldHVybiAwOworfQorCisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX2NvbXByZXNzKCBibGFrZTJzX3N0YXRlICpTLCBjb25zdCB1aW50OF90IGJsb2NrW0JMQUtFMlNfQkxPQ0tCWVRFU10gKQoreworICBfX20xMjhpIHJvdzEsIHJvdzIsIHJvdzMsIHJvdzQ7CisgIF9fbTEyOGkgYnVmMSwgYnVmMiwgYnVmMywgYnVmNDsKKyNpZiBkZWZpbmVkKEhBVkVfU1NFNDEpCisgIF9fbTEyOGkgdDAsIHQxOworI2lmICFkZWZpbmVkKEhBVkVfWE9QKQorICBfX20xMjhpIHQyOworI2VuZGlmCisjZW5kaWYKKyAgX19tMTI4aSBmZjAsIGZmMTsKKyNpZiBkZWZpbmVkKEhBVkVfU1NTRTMpICYmICFkZWZpbmVkKEhBVkVfWE9QKQorICBjb25zdCBfX20xMjhpIHI4ID0gX21tX3NldF9lcGk4KCAxMiwgMTUsIDE0LCAxMywgOCwgMTEsIDEwLCA5LCA0LCA3LCA2LCA1LCAwLCAzLCAyLCAxICk7CisgIGNvbnN0IF9fbTEyOGkgcjE2ID0gX21tX3NldF9lcGk4KCAxMywgMTIsIDE1LCAxNCwgOSwgOCwgMTEsIDEwLCA1LCA0LCA3LCA2LCAxLCAwLCAzLCAyICk7CisjZW5kaWYKKyNpZiBkZWZpbmVkKEhBVkVfU1NFNDEpCisgIGNvbnN0IF9fbTEyOGkgbTAgPSBMT0FEVSggYmxvY2sgKyAgMDAgKTsKKyAgY29uc3QgX19tMTI4aSBtMSA9IExPQURVKCBibG9jayArICAxNiApOworICBjb25zdCBfX20xMjhpIG0yID0gTE9BRFUoIGJsb2NrICsgIDMyICk7CisgIGNvbnN0IF9fbTEyOGkgbTMgPSBMT0FEVSggYmxvY2sgKyAgNDggKTsKKyNlbHNlCisgIGNvbnN0IHVpbnQzMl90ICBtMCA9ICggKCB1aW50MzJfdCAqIClibG9jayApWyAwXTsKKyAgY29uc3QgdWludDMyX3QgIG0xID0gKCAoIHVpbnQzMl90ICogKWJsb2NrIClbIDFdOworICBjb25zdCB1aW50MzJfdCAgbTIgPSAoICggdWludDMyX3QgKiApYmxvY2sgKVsgMl07CisgIGNvbnN0IHVpbnQzMl90ICBtMyA9ICggKCB1aW50MzJfdCAqIClibG9jayApWyAzXTsKKyAgY29uc3QgdWludDMyX3QgIG00ID0gKCAoIHVpbnQzMl90ICogKWJsb2NrIClbIDRdOworICBjb25zdCB1aW50MzJfdCAgbTUgPSAoICggdWludDMyX3QgKiApYmxvY2sgKVsgNV07CisgIGNvbnN0IHVpbnQzMl90ICBtNiA9ICggKCB1aW50MzJfdCAqIClibG9jayApWyA2XTsKKyAgY29uc3QgdWludDMyX3QgIG03ID0gKCAoIHVpbnQzMl90ICogKWJsb2NrIClbIDddOworICBjb25zdCB1aW50MzJfdCAgbTggPSAoICggdWludDMyX3QgKiApYmxvY2sgKVsgOF07CisgIGNvbnN0IHVpbnQzMl90ICBtOSA9ICggKCB1aW50MzJfdCAqIClibG9jayApWyA5XTsKKyAgY29uc3QgdWludDMyX3QgbTEwID0gKCAoIHVpbnQzMl90ICogKWJsb2NrIClbMTBdOworICBjb25zdCB1aW50MzJfdCBtMTEgPSAoICggdWludDMyX3QgKiApYmxvY2sgKVsxMV07CisgIGNvbnN0IHVpbnQzMl90IG0xMiA9ICggKCB1aW50MzJfdCAqIClibG9jayApWzEyXTsKKyAgY29uc3QgdWludDMyX3QgbTEzID0gKCAoIHVpbnQzMl90ICogKWJsb2NrIClbMTNdOworICBjb25zdCB1aW50MzJfdCBtMTQgPSAoICggdWludDMyX3QgKiApYmxvY2sgKVsxNF07CisgIGNvbnN0IHVpbnQzMl90IG0xNSA9ICggKCB1aW50MzJfdCAqIClibG9jayApWzE1XTsKKyNlbmRpZgorICByb3cxID0gZmYwID0gTE9BRFUoICZTLT5oWzBdICk7CisgIHJvdzIgPSBmZjEgPSBMT0FEVSggJlMtPmhbNF0gKTsKKyAgcm93MyA9IF9tbV9zZXRyX2VwaTMyKCAweDZBMDlFNjY3LCAweEJCNjdBRTg1LCAweDNDNkVGMzcyLCAweEE1NEZGNTNBICk7CisgIHJvdzQgPSBfbW1feG9yX3NpMTI4KCBfbW1fc2V0cl9lcGkzMiggMHg1MTBFNTI3RiwgMHg5QjA1Njg4QywgMHgxRjgzRDlBQiwgMHg1QkUwQ0QxOSApLCBMT0FEVSggJlMtPnRbMF0gKSApOworICBST1VORCggMCApOworICBST1VORCggMSApOworICBST1VORCggMiApOworICBST1VORCggMyApOworICBST1VORCggNCApOworICBST1VORCggNSApOworICBST1VORCggNiApOworICBST1VORCggNyApOworICBST1VORCggOCApOworICBST1VORCggOSApOworICBTVE9SRVUoICZTLT5oWzBdLCBfbW1feG9yX3NpMTI4KCBmZjAsIF9tbV94b3Jfc2kxMjgoIHJvdzEsIHJvdzMgKSApICk7CisgIFNUT1JFVSggJlMtPmhbNF0sIF9tbV94b3Jfc2kxMjgoIGZmMSwgX21tX3hvcl9zaTEyOCggcm93Miwgcm93NCApICkgKTsKKyAgcmV0dXJuIDA7Cit9CisKKy8qIGlubGVuIG5vdyBpbiBieXRlcyAqLworaW50IGJsYWtlMnNfdXBkYXRlKCBibGFrZTJzX3N0YXRlICpTLCBjb25zdCB1aW50OF90ICppbiwgdWludDY0X3QgaW5sZW4gKQoreworICB3aGlsZSggaW5sZW4gPiAwICkKKyAgeworICAgIHNpemVfdCBsZWZ0ID0gUy0+YnVmbGVuOworICAgIHNpemVfdCBmaWxsID0gMiAqIEJMQUtFMlNfQkxPQ0tCWVRFUyAtIGxlZnQ7CisKKyAgICBpZiggaW5sZW4gPiBmaWxsICkKKyAgICB7CisgICAgICBtZW1jcHkoIFMtPmJ1ZiArIGxlZnQsIGluLCBmaWxsICk7IC8qIEZpbGwgYnVmZmVyICovCisgICAgICBTLT5idWZsZW4gKz0gZmlsbDsKKyAgICAgIGJsYWtlMnNfaW5jcmVtZW50X2NvdW50ZXIoIFMsIEJMQUtFMlNfQkxPQ0tCWVRFUyApOworICAgICAgYmxha2Uyc19jb21wcmVzcyggUywgUy0+YnVmICk7IC8qIENvbXByZXNzICovCisgICAgICBtZW1jcHkoIFMtPmJ1ZiwgUy0+YnVmICsgQkxBS0UyU19CTE9DS0JZVEVTLCBCTEFLRTJTX0JMT0NLQllURVMgKTsgLyogU2hpZnQgYnVmZmVyIGxlZnQgKi8KKyAgICAgIFMtPmJ1ZmxlbiAtPSBCTEFLRTJTX0JMT0NLQllURVM7CisgICAgICBpbiArPSBmaWxsOworICAgICAgaW5sZW4gLT0gZmlsbDsKKyAgICB9CisgICAgZWxzZSAvKiBpbmxlbiA8PSBmaWxsICovCisgICAgeworICAgICAgbWVtY3B5KCBTLT5idWYgKyBsZWZ0LCBpbiwgaW5sZW4gKTsKKyAgICAgIFMtPmJ1ZmxlbiArPSBpbmxlbjsgLyogQmUgbGF6eSwgZG8gbm90IGNvbXByZXNzICovCisgICAgICBpbiArPSBpbmxlbjsKKyAgICAgIGlubGVuIC09IGlubGVuOworICAgIH0KKyAgfQorCisgIHJldHVybiAwOworfQorCisvKiBJcyB0aGlzIGNvcnJlY3Q/ICovCitpbnQgYmxha2Uyc19maW5hbCggYmxha2Uyc19zdGF0ZSAqUywgdWludDhfdCAqb3V0LCB1aW50OF90IG91dGxlbiApCit7CisgIHVpbnQ4X3QgYnVmZmVyW0JMQUtFMlNfT1VUQllURVNdID0gezB9OworICBpbnQgaTsKKworICBpZiggb3V0bGVuID4gQkxBS0UyU19PVVRCWVRFUyApCisgICAgcmV0dXJuIC0xOworCisgIGlmKCBibGFrZTJzX2lzX2xhc3RibG9jayggUyApICkKKyAgICByZXR1cm4gLTE7CisKKyAgaWYoIFMtPmJ1ZmxlbiA+IEJMQUtFMlNfQkxPQ0tCWVRFUyApCisgIHsKKyAgICBibGFrZTJzX2luY3JlbWVudF9jb3VudGVyKCBTLCBCTEFLRTJTX0JMT0NLQllURVMgKTsKKyAgICBibGFrZTJzX2NvbXByZXNzKCBTLCBTLT5idWYgKTsKKyAgICBTLT5idWZsZW4gLT0gQkxBS0UyU19CTE9DS0JZVEVTOworICAgIG1lbW1vdmUoIFMtPmJ1ZiwgUy0+YnVmICsgQkxBS0UyU19CTE9DS0JZVEVTLCBTLT5idWZsZW4gKTsKKyAgfQorCisgIGJsYWtlMnNfaW5jcmVtZW50X2NvdW50ZXIoIFMsICggdWludDMyX3QgKVMtPmJ1ZmxlbiApOworICBibGFrZTJzX3NldF9sYXN0YmxvY2soIFMgKTsKKyAgbWVtc2V0KCBTLT5idWYgKyBTLT5idWZsZW4sIDAsIDIgKiBCTEFLRTJTX0JMT0NLQllURVMgLSBTLT5idWZsZW4gKTsgLyogUGFkZGluZyAqLworICBibGFrZTJzX2NvbXByZXNzKCBTLCBTLT5idWYgKTsKKworICBmb3IoIGkgPSAwOyBpIDwgODsgKytpICkgLyogT3V0cHV0IGZ1bGwgaGFzaCB0byB0ZW1wIGJ1ZmZlciAqLworICAgIHN0b3JlMzIoIGJ1ZmZlciArIHNpemVvZiggUy0+aFtpXSApICogaSwgUy0+aFtpXSApOworCisgIG1lbWNweSggb3V0LCBidWZmZXIsIG91dGxlbiApOworICByZXR1cm4gMDsKK30KKworLyogaW5sZW4sIGF0IGxlYXN0LCBzaG91bGQgYmUgdWludDY0X3QuIE90aGVycyBjYW4gYmUgc2l6ZV90LiAqLworaW50IGJsYWtlMnMoIHVpbnQ4X3QgKm91dCwgY29uc3Qgdm9pZCAqaW4sIGNvbnN0IHZvaWQgKmtleSwgY29uc3QgdWludDhfdCBvdXRsZW4sIGNvbnN0IHVpbnQ2NF90IGlubGVuLCB1aW50OF90IGtleWxlbiApCit7CisgIGJsYWtlMnNfc3RhdGUgU1sxXTsKKworICAvKiBWZXJpZnkgcGFyYW1ldGVycyAqLworICBpZiAoIE5VTEwgPT0gaW4gJiYgaW5sZW4gPiAwICkgcmV0dXJuIC0xOworCisgIGlmICggTlVMTCA9PSBvdXQgKSByZXR1cm4gLTE7CisKKyAgaWYgKCBOVUxMID09IGtleSAmJiBrZXlsZW4gPiAwKSByZXR1cm4gLTE7CisKKyAgaWYoICFvdXRsZW4gfHwgb3V0bGVuID4gQkxBS0UyU19PVVRCWVRFUyApIHJldHVybiAtMTsKKworICBpZigga2V5bGVuID4gQkxBS0UyU19LRVlCWVRFUyApIHJldHVybiAtMTsKKworICBpZigga2V5bGVuID4gMCApCisgIHsKKyAgICBpZiggYmxha2Uyc19pbml0X2tleSggUywgb3V0bGVuLCBrZXksIGtleWxlbiApIDwgMCApIHJldHVybiAtMTsKKyAgfQorICBlbHNlCisgIHsKKyAgICBpZiggYmxha2Uyc19pbml0KCBTLCBvdXRsZW4gKSA8IDAgKSByZXR1cm4gLTE7CisgIH0KKworICBibGFrZTJzX3VwZGF0ZSggUywgKCBjb25zdCB1aW50OF90ICogKWluLCBpbmxlbiApOworICBibGFrZTJzX2ZpbmFsKCBTLCBvdXQsIG91dGxlbiApOworICByZXR1cm4gMDsKK30KKworI2lmIGRlZmluZWQoU1VQRVJDT1ApCitpbnQgY3J5cHRvX2hhc2goIHVuc2lnbmVkIGNoYXIgKm91dCwgdW5zaWduZWQgY2hhciAqaW4sIHVuc2lnbmVkIGxvbmcgbG9uZyBpbmxlbiApCit7CisgIHJldHVybiBibGFrZTJzKCBvdXQsIGluLCBOVUxMLCBCTEFLRTJTX09VVEJZVEVTLCBpbmxlbiwgMCApOworfQorI2VuZGlmCisKKyNpZiBkZWZpbmVkKEJMQUtFMlNfU0VMRlRFU1QpCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSAiYmxha2UyLWthdC5oIgoraW50IG1haW4oIGludCBhcmdjLCBjaGFyICoqYXJndiApCit7CisgIHVpbnQ4X3Qga2V5W0JMQUtFMlNfS0VZQllURVNdOworICB1aW50OF90IGJ1ZltLQVRfTEVOR1RIXTsKKyAgc2l6ZV90IGk7CisKKyAgZm9yKCBpID0gMDsgaSA8IEJMQUtFMlNfS0VZQllURVM7ICsraSApCisgICAga2V5W2ldID0gKCB1aW50OF90IClpOworCisgIGZvciggaSA9IDA7IGkgPCBLQVRfTEVOR1RIOyArK2kgKQorICAgIGJ1ZltpXSA9ICggdWludDhfdCApaTsKKworICBmb3IoIGkgPSAwOyBpIDwgS0FUX0xFTkdUSDsgKytpICkKKyAgeworICAgIHVpbnQ4X3QgaGFzaFtCTEFLRTJTX09VVEJZVEVTXTsKKworICAgIGlmKCBibGFrZTJzKCBoYXNoLCBidWYsIGtleSwgQkxBS0UyU19PVVRCWVRFUywgaSwgQkxBS0UyU19LRVlCWVRFUyApIDwgMCB8fAorICAgICAgICAwICE9IG1lbWNtcCggaGFzaCwgYmxha2Uyc19rZXllZF9rYXRbaV0sIEJMQUtFMlNfT1VUQllURVMgKSApCisgICAgeworICAgICAgcHV0cyggImVycm9yIiApOworICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgfQorCisgIHB1dHMoICJvayIgKTsKKyAgcmV0dXJuIDA7Cit9CisjZW5kaWYKKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19iejJtb2R1bGUuYyBiL01vZHVsZXMvX2J6Mm1vZHVsZS5jCmluZGV4IDY3ZTFiNjUuLjVjZWE0MmMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2J6Mm1vZHVsZS5jCisrKyBiL01vZHVsZXMvX2J6Mm1vZHVsZS5jCkBAIC01OTQsNyArNTk0LDYgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIF9iejIuQloyRGVjb21wcmVzc29yLmRlY29tcHJlc3MKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iQloyRGVjb21wcmVzc29yICoiKQogICAgIGRhdGE6IFB5X2J1ZmZlcgogICAgIG1heF9sZW5ndGg6IFB5X3NzaXplX3Q9LTEKIApAQCAtNjE3LDcgKzYxNiw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogX2J6Ml9CWjJEZWNvbXByZXNzb3JfZGVjb21wcmVzc19pbXBsKEJaMkRlY29tcHJlc3NvciAqc2VsZiwgUHlfYnVmZmVyICpkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4X2xlbmd0aCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yM2U0MTA0NWRlYjI0MGEzIGlucHV0PTk1NThiNDI0YzhiMDA1MTZdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yM2U0MTA0NWRlYjI0MGEzIGlucHV0PTUyZTFmZmM2NmE4ZWE2MjRdKi8KIHsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY29kZWNzbW9kdWxlLmMgYi9Nb2R1bGVzL19jb2RlY3Ntb2R1bGUuYwppbmRleCA5YjExOTRlLi41ODZiNzNhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jb2RlY3Ntb2R1bGUuYworKysgYi9Nb2R1bGVzL19jb2RlY3Ntb2R1bGUuYwpAQCAtMjAsMTAgKzIwLDYgQEAKICAgICAgPGVuY29kaW5nPl9kZWNvZGUoY2hhcl9idWZmZXJfb2JqWyxlcnJvcnM9J3N0cmljdCddKSAtPgogICAgICAgICAoVW5pY29kZSBvYmplY3QsIGJ5dGVzIGNvbnN1bWVkKQogCi0gICA8ZW5jb2Rpbmc+X2VuY29kZSgpIGludGVyZmFjZXMgYWxzbyBhY2NlcHQgbm9uLVVuaWNvZGUgb2JqZWN0IGFzCi0gICBpbnB1dC4gVGhlIG9iamVjdHMgYXJlIHRoZW4gY29udmVydGVkIHRvIFVuaWNvZGUgdXNpbmcKLSAgIFB5VW5pY29kZV9Gcm9tT2JqZWN0KCkgcHJpb3IgdG8gYXBwbHlpbmcgdGhlIGNvbnZlcnNpb24uCi0KICAgIFRoZXNlIDxlbmNvZGluZz5zIGFyZSBhdmFpbGFibGU6IHV0Zl84LCB1bmljb2RlX2VzY2FwZSwKICAgIHJhd191bmljb2RlX2VzY2FwZSwgdW5pY29kZV9pbnRlcm5hbCwgbGF0aW5fMSwgYXNjaWkgKDctYml0KSwKICAgIG1iY3MgKG9uIHdpbjMyKS4KQEAgLTYwOCw3ICs2MDQsNyBAQAogICAgIHJldHVybiBjb2RlY190dXBsZShkZWNvZGVkLCBkYXRhLT5sZW4pOwogfQogCi0jaWZkZWYgSEFWRV9NQkNTCisjaWZkZWYgTVNfV0lORE9XUwogCiAvKltjbGluaWMgaW5wdXRdCiBfY29kZWNzLm1iY3NfZGVjb2RlCkBAIC02MzAsNiArNjI2LDI1IEBACiB9CiAKIC8qW2NsaW5pYyBpbnB1dF0KK19jb2RlY3Mub2VtX2RlY29kZQorICAgIGRhdGE6IFB5X2J1ZmZlcgorICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAorICAgIGZpbmFsOiBpbnQoY19kZWZhdWx0PSIwIikgPSBGYWxzZQorICAgIC8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3Nfb2VtX2RlY29kZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGZpbmFsKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMTYxNzYxMmYzZmNhZDggaW5wdXQ9OTViOGE5MmM0NDZiMDNjZF0qLworeworICAgIFB5X3NzaXplX3QgY29uc3VtZWQgPSBkYXRhLT5sZW47CisgICAgUHlPYmplY3QgKmRlY29kZWQgPSBQeVVuaWNvZGVfRGVjb2RlQ29kZVBhZ2VTdGF0ZWZ1bChDUF9PRU1DUCwKKyAgICAgICAgZGF0YS0+YnVmLCBkYXRhLT5sZW4sIGVycm9ycywgZmluYWwgPyBOVUxMIDogJmNvbnN1bWVkKTsKKyAgICByZXR1cm4gY29kZWNfdHVwbGUoZGVjb2RlZCwgY29uc3VtZWQpOworfQorCisvKltjbGluaWMgaW5wdXRdCiBfY29kZWNzLmNvZGVfcGFnZV9kZWNvZGUKICAgICBjb2RlcGFnZTogaW50CiAgICAgZGF0YTogUHlfYnVmZmVyCkBAIC02NTEsNyArNjY2LDcgQEAKICAgICByZXR1cm4gY29kZWNfdHVwbGUoZGVjb2RlZCwgY29uc3VtZWQpOwogfQogCi0jZW5kaWYgLyogSEFWRV9NQkNTICovCisjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogCiAvKiAtLS0gRW5jb2RlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIApAQCAtNzE4LDcgKzczMyw3IEBACiAKIC8qW2NsaW5pYyBpbnB1dF0KIF9jb2RlY3MudXRmXzdfZW5jb2RlCi0gICAgc3RyOiBvYmplY3QKKyAgICBzdHI6IHVuaWNvZGUKICAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKICAgICAvCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCkBAIC03MjYsMjQgKzc0MSwxNSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIF9jb2RlY3NfdXRmXzdfZW5jb2RlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTBmZWRhMjFmZmM5MjFiYzggaW5wdXQ9ZmQ5MWE3OGYxMDNiMDQyMV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTBmZWRhMjFmZmM5MjFiYzggaW5wdXQ9ZDFhNDc1NzllNzljYmUxNV0qLwogewotICAgIFB5T2JqZWN0ICp2OwotCi0gICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7Ci0gICAgICAgIFB5X1hERUNSRUYoc3RyKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHYgPSBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZVVURjcoc3RyLCAwLCAwLCBlcnJvcnMpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKLSAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICByZXR1cm4gdjsKKyAgICByZXR1cm4gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9FbmNvZGVVVEY3KHN0ciwgMCwgMCwgZXJyb3JzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiB9CiAKIC8qW2NsaW5pYyBpbnB1dF0KIF9jb2RlY3MudXRmXzhfZW5jb2RlCi0gICAgc3RyOiBvYmplY3QKKyAgICBzdHI6IHVuaWNvZGUKICAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKICAgICAvCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCkBAIC03NTEsMTkgKzc1NywxMCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIF9jb2RlY3NfdXRmXzhfZW5jb2RlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTAyYmY0NzMzMmI5Yzc5NmMgaW5wdXQ9MmMyMmQ0MDUzMmYwNzFmM10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTAyYmY0NzMzMmI5Yzc5NmMgaW5wdXQ9NDJlM2JhNzNjNDM5MmVlZl0qLwogewotICAgIFB5T2JqZWN0ICp2OwotCi0gICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7Ci0gICAgICAgIFB5X1hERUNSRUYoc3RyKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHYgPSBjb2RlY190dXBsZShQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKHN0ciwgInV0Zi04IiwgZXJyb3JzKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7Ci0gICAgUHlfREVDUkVGKHN0cik7Ci0gICAgcmV0dXJuIHY7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfQXNVVEY4U3RyaW5nKHN0ciwgZXJyb3JzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiB9CiAKIC8qIFRoaXMgdmVyc2lvbiBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIGJ5dGVvcmRlciBwYXJhbWV0ZXIgb2YgdGhlCkBAIC03NzUsNyArNzcyLDcgQEAKIAogLypbY2xpbmljIGlucHV0XQogX2NvZGVjcy51dGZfMTZfZW5jb2RlCi0gICAgc3RyOiBvYmplY3QKKyAgICBzdHI6IHVuaWNvZGUKICAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKICAgICBieXRlb3JkZXI6IGludCA9IDAKICAgICAvCkBAIC03ODQsMjQgKzc4MSwxNSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIF9jb2RlY3NfdXRmXzE2X2VuY29kZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIGludCBieXRlb3JkZXIpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YzY1NGUxM2VmYTJlNjRlNCBpbnB1dD0zOTM1YTQ4OWIyZDUzODVlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YzY1NGUxM2VmYTJlNjRlNCBpbnB1dD1mZjQ2NDE2YjA0ZWRiOTQ0XSovCiB7Ci0gICAgUHlPYmplY3QgKnY7Ci0KLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgdiA9IGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlVVRGMTYoc3RyLCBlcnJvcnMsIGJ5dGVvcmRlciksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwotICAgIFB5X0RFQ1JFRihzdHIpOwotICAgIHJldHVybiB2OworICAgIHJldHVybiBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZVVURjE2KHN0ciwgZXJyb3JzLCBieXRlb3JkZXIpLAorICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKIH0KIAogLypbY2xpbmljIGlucHV0XQogX2NvZGVjcy51dGZfMTZfbGVfZW5jb2RlCi0gICAgc3RyOiBvYmplY3QKKyAgICBzdHI6IHVuaWNvZGUKICAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKICAgICAvCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCkBAIC04MDksMjQgKzc5NywxNSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIF9jb2RlY3NfdXRmXzE2X2xlX2VuY29kZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDMxYjAxZTU1ZjJkNDk5NSBpbnB1dD1iYzI3ZGYwNWQxZDIwZGZlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDMxYjAxZTU1ZjJkNDk5NSBpbnB1dD1jYjM4NTQ1NWVhOGYyZmUwXSovCiB7Ci0gICAgUHlPYmplY3QgKnY7Ci0KLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgdiA9IGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlVVRGMTYoc3RyLCBlcnJvcnMsIC0xKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7Ci0gICAgUHlfREVDUkVGKHN0cik7Ci0gICAgcmV0dXJuIHY7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlVVRGMTYoc3RyLCBlcnJvcnMsIC0xKSwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiB9CiAKIC8qW2NsaW5pYyBpbnB1dF0KIF9jb2RlY3MudXRmXzE2X2JlX2VuY29kZQotICAgIHN0cjogb2JqZWN0CisgICAgc3RyOiB1bmljb2RlCiAgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCiAgICAgLwogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwpAQCAtODM0LDE5ICs4MTMsMTAgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBfY29kZWNzX3V0Zl8xNl9iZV9lbmNvZGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk2ODg2YTZmZDU0ZGNhZTMgaW5wdXQ9NWE2OWQ0MTEyNzYzNDYyYl0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk2ODg2YTZmZDU0ZGNhZTMgaW5wdXQ9OTExOTk5NzA2NmJkYWVmZF0qLwogewotICAgIFB5T2JqZWN0ICp2OwotCi0gICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7Ci0gICAgICAgIFB5X1hERUNSRUYoc3RyKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHYgPSBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZVVURjE2KHN0ciwgZXJyb3JzLCArMSksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwotICAgIFB5X0RFQ1JFRihzdHIpOwotICAgIHJldHVybiB2OworICAgIHJldHVybiBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZVVURjE2KHN0ciwgZXJyb3JzLCArMSksCisgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogfQogCiAvKiBUaGlzIHZlcnNpb24gcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBieXRlb3JkZXIgcGFyYW1ldGVyIG9mIHRoZQpAQCAtODU4LDcgKzgyOCw3IEBACiAKIC8qW2NsaW5pYyBpbnB1dF0KIF9jb2RlY3MudXRmXzMyX2VuY29kZQotICAgIHN0cjogb2JqZWN0CisgICAgc3RyOiB1bmljb2RlCiAgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCiAgICAgYnl0ZW9yZGVyOiBpbnQgPSAwCiAgICAgLwpAQCAtODY3LDI0ICs4MzcsMTUgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBfY29kZWNzX3V0Zl8zMl9lbmNvZGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgYnl0ZW9yZGVyKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTVjNzYwZGEwYzA5YThiODMgaW5wdXQ9NDM0YTFlZmE0OTJiOGQ1OF0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTVjNzYwZGEwYzA5YThiODMgaW5wdXQ9YzVlNzdkYTgyZmJlNWMyYV0qLwogewotICAgIFB5T2JqZWN0ICp2OwotCi0gICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7Ci0gICAgICAgIFB5X1hERUNSRUYoc3RyKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHYgPSBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZVVURjMyKHN0ciwgZXJyb3JzLCBieXRlb3JkZXIpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKLSAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICByZXR1cm4gdjsKKyAgICByZXR1cm4gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9FbmNvZGVVVEYzMihzdHIsIGVycm9ycywgYnl0ZW9yZGVyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiB9CiAKIC8qW2NsaW5pYyBpbnB1dF0KIF9jb2RlY3MudXRmXzMyX2xlX2VuY29kZQotICAgIHN0cjogb2JqZWN0CisgICAgc3RyOiB1bmljb2RlCiAgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCiAgICAgLwogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwpAQCAtODkyLDI0ICs4NTMsMTUgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBfY29kZWNzX3V0Zl8zMl9sZV9lbmNvZGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWI2NWNkMTc2ZGU4ZTM2ZDYgaW5wdXQ9ZGZhMmQ3ZGM3OGI5OTQyMl0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWI2NWNkMTc2ZGU4ZTM2ZDYgaW5wdXQ9OTk5M2IyNWZlMDg3Nzg0OF0qLwogewotICAgIFB5T2JqZWN0ICp2OwotCi0gICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7Ci0gICAgICAgIFB5X1hERUNSRUYoc3RyKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHYgPSBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZVVURjMyKHN0ciwgZXJyb3JzLCAtMSksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwotICAgIFB5X0RFQ1JFRihzdHIpOwotICAgIHJldHVybiB2OworICAgIHJldHVybiBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZVVURjMyKHN0ciwgZXJyb3JzLCAtMSksCisgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogfQogCiAvKltjbGluaWMgaW5wdXRdCiBfY29kZWNzLnV0Zl8zMl9iZV9lbmNvZGUKLSAgICBzdHI6IG9iamVjdAorICAgIHN0cjogdW5pY29kZQogICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAogICAgIC8KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KQEAgLTkxNywyNCArODY5LDE1IEBACiBzdGF0aWMgUHlPYmplY3QgKgogX2NvZGVjc191dGZfMzJfYmVfZW5jb2RlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xZDllNzFhOTM1ODcwOWU5IGlucHV0PTQ1OTU2MTdiMTgxNjkwMDJdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xZDllNzFhOTM1ODcwOWU5IGlucHV0PWQzZTBjY2FhMDI5MjA0MzFdKi8KIHsKLSAgICBQeU9iamVjdCAqdjsKLQotICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgewotICAgICAgICBQeV9YREVDUkVGKHN0cik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICB2ID0gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9FbmNvZGVVVEYzMihzdHIsIGVycm9ycywgKzEpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKLSAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICByZXR1cm4gdjsKKyAgICByZXR1cm4gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9FbmNvZGVVVEYzMihzdHIsIGVycm9ycywgKzEpLAorICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKIH0KIAogLypbY2xpbmljIGlucHV0XQogX2NvZGVjcy51bmljb2RlX2VzY2FwZV9lbmNvZGUKLSAgICBzdHI6IG9iamVjdAorICAgIHN0cjogdW5pY29kZQogICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAogICAgIC8KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KQEAgLTk0MiwyNCArODg1LDE1IEBACiBzdGF0aWMgUHlPYmplY3QgKgogX2NvZGVjc191bmljb2RlX2VzY2FwZV9lbmNvZGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjYyNzFiMzBiYzRmN2EzYyBpbnB1dD04MjczNTA2ZjE0MDc2OTEyXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjYyNzFiMzBiYzRmN2EzYyBpbnB1dD02NWQ5ZWVmY2E2NWI0NTVhXSovCiB7Ci0gICAgUHlPYmplY3QgKnY7Ci0KLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgdiA9IGNvZGVjX3R1cGxlKFB5VW5pY29kZV9Bc1VuaWNvZGVFc2NhcGVTdHJpbmcoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7Ci0gICAgUHlfREVDUkVGKHN0cik7Ci0gICAgcmV0dXJuIHY7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKFB5VW5pY29kZV9Bc1VuaWNvZGVFc2NhcGVTdHJpbmcoc3RyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiB9CiAKIC8qW2NsaW5pYyBpbnB1dF0KIF9jb2RlY3MucmF3X3VuaWNvZGVfZXNjYXBlX2VuY29kZQotICAgIHN0cjogb2JqZWN0CisgICAgc3RyOiB1bmljb2RlCiAgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCiAgICAgLwogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwpAQCAtOTY3LDI0ICs5MDEsMTUgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBfY29kZWNzX3Jhd191bmljb2RlX2VzY2FwZV9lbmNvZGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE2NmE4MDZlZDAxYzgzMGEgaW5wdXQ9MTgxNzU1ZDVkZmFjZWYzY10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE2NmE4MDZlZDAxYzgzMGEgaW5wdXQ9NWFhMzNlNGExMzMzOTFhYl0qLwogewotICAgIFB5T2JqZWN0ICp2OwotCi0gICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7Ci0gICAgICAgIFB5X1hERUNSRUYoc3RyKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHYgPSBjb2RlY190dXBsZShQeVVuaWNvZGVfQXNSYXdVbmljb2RlRXNjYXBlU3RyaW5nKHN0ciksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwotICAgIFB5X0RFQ1JFRihzdHIpOwotICAgIHJldHVybiB2OworICAgIHJldHVybiBjb2RlY190dXBsZShQeVVuaWNvZGVfQXNSYXdVbmljb2RlRXNjYXBlU3RyaW5nKHN0ciksCisgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogfQogCiAvKltjbGluaWMgaW5wdXRdCiBfY29kZWNzLmxhdGluXzFfZW5jb2RlCi0gICAgc3RyOiBvYmplY3QKKyAgICBzdHI6IHVuaWNvZGUKICAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKICAgICAvCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCkBAIC05OTIsMjQgKzkxNywxNSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIF9jb2RlY3NfbGF0aW5fMV9lbmNvZGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yYzI4YzgzYTI3ODg0ZTA4IGlucHV0PWYwM2Y2ZGNmMWQ4NGJlZTRdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yYzI4YzgzYTI3ODg0ZTA4IGlucHV0PTMwYjExYzllNDlhNjUxNTBdKi8KIHsKLSAgICBQeU9iamVjdCAqdjsKLQotICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgewotICAgICAgICBQeV9YREVDUkVGKHN0cik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICB2ID0gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9Bc0xhdGluMVN0cmluZyhzdHIsIGVycm9ycyksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwotICAgIFB5X0RFQ1JFRihzdHIpOwotICAgIHJldHVybiB2OworICAgIHJldHVybiBjb2RlY190dXBsZShfUHlVbmljb2RlX0FzTGF0aW4xU3RyaW5nKHN0ciwgZXJyb3JzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiB9CiAKIC8qW2NsaW5pYyBpbnB1dF0KIF9jb2RlY3MuYXNjaWlfZW5jb2RlCi0gICAgc3RyOiBvYmplY3QKKyAgICBzdHI6IHVuaWNvZGUKICAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKICAgICAvCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCkBAIC0xMDE3LDI0ICs5MzMsMTUgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBfY29kZWNzX2FzY2lpX2VuY29kZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iNWUwMzUxODJkMzNiZWZjIGlucHV0PWQ4N2UyNWExMGE1OTNmZWVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iNWUwMzUxODJkMzNiZWZjIGlucHV0PTg0M2ExZDI2OGU2ZGZhOGVdKi8KIHsKLSAgICBQeU9iamVjdCAqdjsKLQotICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgewotICAgICAgICBQeV9YREVDUkVGKHN0cik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICB2ID0gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nKHN0ciwgZXJyb3JzKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7Ci0gICAgUHlfREVDUkVGKHN0cik7Ci0gICAgcmV0dXJuIHY7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfQXNBU0NJSVN0cmluZyhzdHIsIGVycm9ycyksCisgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogfQogCiAvKltjbGluaWMgaW5wdXRdCiBfY29kZWNzLmNoYXJtYXBfZW5jb2RlCi0gICAgc3RyOiBvYmplY3QKKyAgICBzdHI6IHVuaWNvZGUKICAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKICAgICBtYXBwaW5nOiBvYmplY3QgPSBOVUxMCiAgICAgLwpAQCAtMTA0MywyMiArOTUwLDEzIEBACiBzdGF0aWMgUHlPYmplY3QgKgogX2NvZGVjc19jaGFybWFwX2VuY29kZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBQeU9iamVjdCAqbWFwcGluZykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wNDc0NzZmNDg0OTVhOWU5IGlucHV0PTg1ZjQxNzI2NjFlOGRhZDldKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wNDc0NzZmNDg0OTVhOWU5IGlucHV0PTA3NTJjZGUwN2E2ZDZkMDBdKi8KIHsKLSAgICBQeU9iamVjdCAqdjsKLQogICAgIGlmIChtYXBwaW5nID09IFB5X05vbmUpCiAgICAgICAgIG1hcHBpbmcgPSBOVUxMOwogCi0gICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7Ci0gICAgICAgIFB5X1hERUNSRUYoc3RyKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHYgPSBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZUNoYXJtYXAoc3RyLCBtYXBwaW5nLCBlcnJvcnMpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKLSAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICByZXR1cm4gdjsKKyAgICByZXR1cm4gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9FbmNvZGVDaGFybWFwKHN0ciwgbWFwcGluZywgZXJyb3JzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiB9CiAKIC8qW2NsaW5pYyBpbnB1dF0KQEAgLTEwNzQsMzYgKzk3Miw0MiBAQAogICAgIHJldHVybiBQeVVuaWNvZGVfQnVpbGRFbmNvZGluZ01hcChtYXApOwogfQogCi0jaWZkZWYgSEFWRV9NQkNTCisjaWZkZWYgTVNfV0lORE9XUwogCiAvKltjbGluaWMgaW5wdXRdCiBfY29kZWNzLm1iY3NfZW5jb2RlCi0gICAgc3RyOiBvYmplY3QKKyAgICBzdHI6IHVuaWNvZGUKICAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKICAgICAvCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfY29kZWNzX21iY3NfZW5jb2RlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwgY29uc3QgY2hhciAqZXJyb3JzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc2ZTJlMTcwYzk2NmMwODAgaW5wdXQ9NjVjMDllZTFlNDIwMzI2M10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc2ZTJlMTcwYzk2NmMwODAgaW5wdXQ9ZGU0NzFlMDgxNTk0NzU1M10qLwogewotICAgIFB5T2JqZWN0ICp2OworICAgIHJldHVybiBjb2RlY190dXBsZShQeVVuaWNvZGVfRW5jb2RlQ29kZVBhZ2UoQ1BfQUNQLCBzdHIsIGVycm9ycyksCisgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOworfQogCi0gICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7Ci0gICAgICAgIFB5X1hERUNSRUYoc3RyKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHYgPSBjb2RlY190dXBsZShQeVVuaWNvZGVfRW5jb2RlQ29kZVBhZ2UoQ1BfQUNQLCBzdHIsIGVycm9ycyksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwotICAgIFB5X0RFQ1JFRihzdHIpOwotICAgIHJldHVybiB2OworLypbY2xpbmljIGlucHV0XQorX2NvZGVjcy5vZW1fZW5jb2RlCisgICAgc3RyOiB1bmljb2RlCisgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19vZW1fZW5jb2RlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwgY29uc3QgY2hhciAqZXJyb3JzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTY1ZDU5ODJjNzM3ZGU2NDkgaW5wdXQ9M2ZjNWYwMDI4YWFkM2NkYV0qLworeworICAgIHJldHVybiBjb2RlY190dXBsZShQeVVuaWNvZGVfRW5jb2RlQ29kZVBhZ2UoQ1BfT0VNQ1AsIHN0ciwgZXJyb3JzKSwKKyAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiB9CiAKIC8qW2NsaW5pYyBpbnB1dF0KIF9jb2RlY3MuY29kZV9wYWdlX2VuY29kZQogICAgIGNvZGVfcGFnZTogaW50Ci0gICAgc3RyOiBvYmplY3QKKyAgICBzdHI6IHVuaWNvZGUKICAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKICAgICAvCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCkBAIC0xMTExLDI0ICsxMDE1LDEzIEBACiBzdGF0aWMgUHlPYmplY3QgKgogX2NvZGVjc19jb2RlX3BhZ2VfZW5jb2RlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IGNvZGVfcGFnZSwgUHlPYmplY3QgKnN0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00NTY3M2Y2MDg1NjU3YTllIGlucHV0PWM4NTYyZWM0NjBjMmUzMDldKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00NTY3M2Y2MDg1NjU3YTllIGlucHV0PTc4NjQyMWFlNjE3ZDY4MGJdKi8KIHsKLSAgICBQeU9iamVjdCAqdjsKLQotICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgewotICAgICAgICBQeV9YREVDUkVGKHN0cik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICB2ID0gY29kZWNfdHVwbGUoUHlVbmljb2RlX0VuY29kZUNvZGVQYWdlKGNvZGVfcGFnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycyksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwotICAgIFB5X0RFQ1JFRihzdHIpOwotICAgIHJldHVybiB2OworICAgIHJldHVybiBjb2RlY190dXBsZShQeVVuaWNvZGVfRW5jb2RlQ29kZVBhZ2UoY29kZV9wYWdlLCBzdHIsIGVycm9ycyksCisgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogfQogCi0jZW5kaWYgLyogSEFWRV9NQkNTICovCisjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogCiAvKiAtLS0gRXJyb3IgaGFuZGxlciByZWdpc3RyeSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIApAQCAtMTIxNiw2ICsxMTA5LDggQEAKICAgICBfQ09ERUNTX1JFQURCVUZGRVJfRU5DT0RFX01FVEhPRERFRgogICAgIF9DT0RFQ1NfTUJDU19FTkNPREVfTUVUSE9EREVGCiAgICAgX0NPREVDU19NQkNTX0RFQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX09FTV9FTkNPREVfTUVUSE9EREVGCisgICAgX0NPREVDU19PRU1fREVDT0RFX01FVEhPRERFRgogICAgIF9DT0RFQ1NfQ09ERV9QQUdFX0VOQ09ERV9NRVRIT0RERUYKICAgICBfQ09ERUNTX0NPREVfUEFHRV9ERUNPREVfTUVUSE9EREVGCiAgICAgX0NPREVDU19SRUdJU1RFUl9FUlJPUl9NRVRIT0RERUYKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2NvbGxlY3Rpb25zbW9kdWxlLmMgYi9Nb2R1bGVzL19jb2xsZWN0aW9uc21vZHVsZS5jCmluZGV4IDEwZmJjZmUuLjY2MDg3OTggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2NvbGxlY3Rpb25zbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fY29sbGVjdGlvbnNtb2R1bGUuYwpAQCAtODEsNyArODEsNyBAQAogICAgIFB5X3NzaXplX3QgbGVmdGluZGV4OyAgICAgICAvKiAwIDw9IGxlZnRpbmRleCA8IEJMT0NLTEVOICovCiAgICAgUHlfc3NpemVfdCByaWdodGluZGV4OyAgICAgIC8qIDAgPD0gcmlnaHRpbmRleCA8IEJMT0NLTEVOICovCiAgICAgc2l6ZV90IHN0YXRlOyAgICAgICAgICAgICAgIC8qIGluY3JlbWVudGVkIHdoZW5ldmVyIHRoZSBpbmRpY2VzIG1vdmUgKi8KLSAgICBQeV9zc2l6ZV90IG1heGxlbjsKKyAgICBQeV9zc2l6ZV90IG1heGxlbjsgICAgICAgICAgLyogbWF4bGVuIGlzIC0xIGZvciB1bmJvdW5kZWQgZGVxdWVzICovCiAgICAgUHlPYmplY3QgKndlYWtyZWZsaXN0OwogfSBkZXF1ZW9iamVjdDsKIApAQCAtMTA4LDI5ICsxMDgsMTggQEAKICNkZWZpbmUgQ0hFQ0tfTk9UX0VORChsaW5rKQogI2VuZGlmCiAKLS8qIFRvIHByZXZlbnQgbGVuIGZyb20gb3ZlcmZsb3dpbmcgUFlfU1NJWkVfVF9NQVgsIHdlIHJlZnVzZSB0bwotICAgYWxsb2NhdGUgbmV3IGJsb2NrcyBpZiB0aGUgY3VycmVudCBsZW4gaXMgbmVhcmluZyBvdmVyZmxvdy4KLSovCi0KLSNkZWZpbmUgTUFYX0RFUVVFX0xFTiAoUFlfU1NJWkVfVF9NQVggLSAzKkJMT0NLTEVOKQotCiAvKiBBIHNpbXBsZSBmcmVlbGlzdGluZyBzY2hlbWUgaXMgdXNlZCB0byBtaW5pbWl6ZSBjYWxscyB0byB0aGUgbWVtb3J5CiAgICBhbGxvY2F0b3IuICBJdCBhY2NvbW1vZGF0ZXMgY29tbW9uIHVzZSBjYXNlcyB3aGVyZSBuZXcgYmxvY2tzIGFyZSBiZWluZwogICAgYWRkZWQgYXQgYWJvdXQgdGhlIHNhbWUgcmF0ZSBhcyBvbGQgYmxvY2tzIGFyZSBiZWluZyBmcmVlZC4KICAqLwogCi0jZGVmaW5lIE1BWEZSRUVCTE9DS1MgMTAKKyNkZWZpbmUgTUFYRlJFRUJMT0NLUyAxNgogc3RhdGljIFB5X3NzaXplX3QgbnVtZnJlZWJsb2NrcyA9IDA7CiBzdGF0aWMgYmxvY2sgKmZyZWVibG9ja3NbTUFYRlJFRUJMT0NLU107CiAKIHN0YXRpYyBibG9jayAqCi1uZXdibG9jayhQeV9zc2l6ZV90IGxlbikgeworbmV3YmxvY2sodm9pZCkgewogICAgIGJsb2NrICpiOwotICAgIGlmIChsZW4gPj0gTUFYX0RFUVVFX0xFTikgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgYWRkIG1vcmUgYmxvY2tzIHRvIHRoZSBkZXF1ZSIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAgICAgaWYgKG51bWZyZWVibG9ja3MpIHsKICAgICAgICAgbnVtZnJlZWJsb2Nrcy0tOwogICAgICAgICByZXR1cm4gZnJlZWJsb2Nrc1tudW1mcmVlYmxvY2tzXTsKQEAgLTE1NCwxMiArMTQzLDYgQEAKICAgICB9CiB9CiAKLS8qIFhYWCBUb2RvOgotICAgSWYgYWxpZ25lZCBtZW1vcnkgYWxsb2NhdGlvbnMgYmVjb21lIGF2YWlsYWJsZSwgbWFrZSB0aGUKLSAgIGRlcXVlIG9iamVjdCA2NCBieXRlIGFsaWduZWQgc28gdGhhdCBhbGwgb2YgdGhlIGZpZWxkcwotICAgY2FuIGJlIHJldHJpZXZlZCBvciB1cGRhdGVkIGluIGEgc2luZ2xlIGNhY2hlIGxpbmUuCi0qLwotCiBzdGF0aWMgUHlPYmplY3QgKgogZGVxdWVfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewpAQCAtMTcxLDcgKzE1NCw3IEBACiAgICAgaWYgKGRlcXVlID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgYiA9IG5ld2Jsb2NrKDApOworICAgIGIgPSBuZXdibG9jaygpOwogICAgIGlmIChiID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKGRlcXVlKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yMDcsNyArMTkwLDcgQEAKICAgICBQeV9TSVpFKGRlcXVlKS0tOwogICAgIGRlcXVlLT5zdGF0ZSsrOwogCi0gICAgaWYgKGRlcXVlLT5yaWdodGluZGV4ID09IC0xKSB7CisgICAgaWYgKGRlcXVlLT5yaWdodGluZGV4IDwgMCkgewogICAgICAgICBpZiAoUHlfU0laRShkZXF1ZSkpIHsKICAgICAgICAgICAgIHByZXZibG9jayA9IGRlcXVlLT5yaWdodGJsb2NrLT5sZWZ0bGluazsKICAgICAgICAgICAgIGFzc2VydChkZXF1ZS0+bGVmdGJsb2NrICE9IGRlcXVlLT5yaWdodGJsb2NrKTsKQEAgLTI3MCw0MiArMjUzLDI0IEBACiAvKiBUaGUgZGVxdWUncyBzaXplIGxpbWl0IGlzIGQubWF4bGVuLiAgVGhlIGxpbWl0IGNhbiBiZSB6ZXJvIG9yIHBvc2l0aXZlLgogICogSWYgdGhlcmUgaXMgbm8gbGltaXQsIHRoZW4gZC5tYXhsZW4gPT0gLTEuCiAgKgotICogQWZ0ZXIgYW4gaXRlbSBpcyBhZGRlZCB0byBhIGRlcXVlLCB3ZSBjaGVjayB0byBzZWUgaWYgdGhlIHNpemUgaGFzIGdyb3duIHBhc3QKLSAqIHRoZSBsaW1pdC4gSWYgaXQgaGFzLCB3ZSBnZXQgdGhlIHNpemUgYmFjayBkb3duIHRvIHRoZSBsaW1pdCBieSBwb3BwaW5nIGFuCi0gKiBpdGVtIG9mZiBvZiB0aGUgb3Bwb3NpdGUgZW5kLiAgVGhlIG1ldGhvZHMgdGhhdCBjYW4gdHJpZ2dlciB0aGlzIGFyZSBhcHBlbmQoKSwKLSAqIGFwcGVuZGxlZnQoKSwgZXh0ZW5kKCksIGFuZCBleHRlbmRsZWZ0KCkuCisgKiBBZnRlciBhbiBpdGVtIGlzIGFkZGVkIHRvIGEgZGVxdWUsIHdlIGNoZWNrIHRvIHNlZSBpZiB0aGUgc2l6ZSBoYXMKKyAqIGdyb3duIHBhc3QgdGhlIGxpbWl0LiBJZiBpdCBoYXMsIHdlIGdldCB0aGUgc2l6ZSBiYWNrIGRvd24gdG8gdGhlIGxpbWl0CisgKiBieSBwb3BwaW5nIGFuIGl0ZW0gb2ZmIG9mIHRoZSBvcHBvc2l0ZSBlbmQuICBUaGUgbWV0aG9kcyB0aGF0IGNhbgorICogdHJpZ2dlciB0aGlzIGFyZSBhcHBlbmQoKSwgYXBwZW5kbGVmdCgpLCBleHRlbmQoKSwgYW5kIGV4dGVuZGxlZnQoKS4KKyAqCisgKiBUaGUgbWFjcm8gdG8gY2hlY2sgd2hldGhlciBhIGRlcXVlIG5lZWRzIHRvIGJlIHRyaW1tZWQgdXNlcyBhIHNpbmdsZQorICogdW5zaWduZWQgdGVzdCB0aGF0IHJldHVybnMgdHJ1ZSB3aGVuZXZlciAwIDw9IG1heGxlbiA8IFB5X1NJWkUoZGVxdWUpLgogICovCiAKLXN0YXRpYyB2b2lkCi1kZXF1ZV90cmltX3JpZ2h0KGRlcXVlb2JqZWN0ICpkZXF1ZSkKLXsKLSAgICBpZiAoZGVxdWUtPm1heGxlbiAhPSAtMSAmJiBQeV9TSVpFKGRlcXVlKSA+IGRlcXVlLT5tYXhsZW4pIHsKLSAgICAgICAgUHlPYmplY3QgKnJ2ID0gZGVxdWVfcG9wKGRlcXVlLCBOVUxMKTsKLSAgICAgICAgYXNzZXJ0KHJ2ICE9IE5VTEwpOwotICAgICAgICBhc3NlcnQoUHlfU0laRShkZXF1ZSkgPD0gZGVxdWUtPm1heGxlbik7Ci0gICAgICAgIFB5X0RFQ1JFRihydik7Ci0gICAgfQotfQorI2RlZmluZSBORUVEU19UUklNKGRlcXVlLCBtYXhsZW4pICgoc2l6ZV90KShtYXhsZW4pIDwgKHNpemVfdCkoUHlfU0laRShkZXF1ZSkpKQogCi1zdGF0aWMgdm9pZAotZGVxdWVfdHJpbV9sZWZ0KGRlcXVlb2JqZWN0ICpkZXF1ZSkKK3N0YXRpYyBpbnQKK2RlcXVlX2FwcGVuZF9pbnRlcm5hbChkZXF1ZW9iamVjdCAqZGVxdWUsIFB5T2JqZWN0ICppdGVtLCBQeV9zc2l6ZV90IG1heGxlbikKIHsKLSAgICBpZiAoZGVxdWUtPm1heGxlbiAhPSAtMSAmJiBQeV9TSVpFKGRlcXVlKSA+IGRlcXVlLT5tYXhsZW4pIHsKLSAgICAgICAgUHlPYmplY3QgKnJ2ID0gZGVxdWVfcG9wbGVmdChkZXF1ZSwgTlVMTCk7Ci0gICAgICAgIGFzc2VydChydiAhPSBOVUxMKTsKLSAgICAgICAgYXNzZXJ0KFB5X1NJWkUoZGVxdWUpIDw9IGRlcXVlLT5tYXhsZW4pOwotICAgICAgICBQeV9ERUNSRUYocnYpOwotICAgIH0KLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWRlcXVlX2FwcGVuZChkZXF1ZW9iamVjdCAqZGVxdWUsIFB5T2JqZWN0ICppdGVtKQotewotICAgIGRlcXVlLT5zdGF0ZSsrOwogICAgIGlmIChkZXF1ZS0+cmlnaHRpbmRleCA9PSBCTE9DS0xFTiAtIDEpIHsKLSAgICAgICAgYmxvY2sgKmIgPSBuZXdibG9jayhQeV9TSVpFKGRlcXVlKSk7CisgICAgICAgIGJsb2NrICpiID0gbmV3YmxvY2soKTsKICAgICAgICAgaWYgKGIgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICBiLT5sZWZ0bGluayA9IGRlcXVlLT5yaWdodGJsb2NrOwogICAgICAgICBDSEVDS19FTkQoZGVxdWUtPnJpZ2h0YmxvY2stPnJpZ2h0bGluayk7CiAgICAgICAgIGRlcXVlLT5yaWdodGJsb2NrLT5yaWdodGxpbmsgPSBiOwpAQCAtMzEzLDI0ICsyNzgsMzYgQEAKICAgICAgICAgTUFSS19FTkQoYi0+cmlnaHRsaW5rKTsKICAgICAgICAgZGVxdWUtPnJpZ2h0aW5kZXggPSAtMTsKICAgICB9Ci0gICAgUHlfSU5DUkVGKGl0ZW0pOwogICAgIFB5X1NJWkUoZGVxdWUpKys7CiAgICAgZGVxdWUtPnJpZ2h0aW5kZXgrKzsKICAgICBkZXF1ZS0+cmlnaHRibG9jay0+ZGF0YVtkZXF1ZS0+cmlnaHRpbmRleF0gPSBpdGVtOwotICAgIGRlcXVlX3RyaW1fbGVmdChkZXF1ZSk7CisgICAgaWYgKE5FRURTX1RSSU0oZGVxdWUsIG1heGxlbikpIHsKKyAgICAgICAgUHlPYmplY3QgKm9sZGl0ZW0gPSBkZXF1ZV9wb3BsZWZ0KGRlcXVlLCBOVUxMKTsKKyAgICAgICAgUHlfREVDUkVGKG9sZGl0ZW0pOworICAgIH0gZWxzZSB7CisgICAgICAgIGRlcXVlLT5zdGF0ZSsrOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2RlcXVlX2FwcGVuZChkZXF1ZW9iamVjdCAqZGVxdWUsIFB5T2JqZWN0ICppdGVtKQoreworICAgIFB5X0lOQ1JFRihpdGVtKTsKKyAgICBpZiAoZGVxdWVfYXBwZW5kX2ludGVybmFsKGRlcXVlLCBpdGVtLCBkZXF1ZS0+bWF4bGVuKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiBQeURvY19TVFJWQVIoYXBwZW5kX2RvYywgIkFkZCBhbiBlbGVtZW50IHRvIHRoZSByaWdodCBzaWRlIG9mIHRoZSBkZXF1ZS4iKTsKIAotc3RhdGljIFB5T2JqZWN0ICoKLWRlcXVlX2FwcGVuZGxlZnQoZGVxdWVvYmplY3QgKmRlcXVlLCBQeU9iamVjdCAqaXRlbSkKK3N0YXRpYyBpbnQKK2RlcXVlX2FwcGVuZGxlZnRfaW50ZXJuYWwoZGVxdWVvYmplY3QgKmRlcXVlLCBQeU9iamVjdCAqaXRlbSwgUHlfc3NpemVfdCBtYXhsZW4pCiB7Ci0gICAgZGVxdWUtPnN0YXRlKys7CiAgICAgaWYgKGRlcXVlLT5sZWZ0aW5kZXggPT0gMCkgewotICAgICAgICBibG9jayAqYiA9IG5ld2Jsb2NrKFB5X1NJWkUoZGVxdWUpKTsKKyAgICAgICAgYmxvY2sgKmIgPSBuZXdibG9jaygpOwogICAgICAgICBpZiAoYiA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIGItPnJpZ2h0bGluayA9IGRlcXVlLT5sZWZ0YmxvY2s7CiAgICAgICAgIENIRUNLX0VORChkZXF1ZS0+bGVmdGJsb2NrLT5sZWZ0bGluayk7CiAgICAgICAgIGRlcXVlLT5sZWZ0YmxvY2stPmxlZnRsaW5rID0gYjsKQEAgLTMzOCwzNyArMzE1LDY1IEBACiAgICAgICAgIE1BUktfRU5EKGItPmxlZnRsaW5rKTsKICAgICAgICAgZGVxdWUtPmxlZnRpbmRleCA9IEJMT0NLTEVOOwogICAgIH0KLSAgICBQeV9JTkNSRUYoaXRlbSk7CiAgICAgUHlfU0laRShkZXF1ZSkrKzsKICAgICBkZXF1ZS0+bGVmdGluZGV4LS07CiAgICAgZGVxdWUtPmxlZnRibG9jay0+ZGF0YVtkZXF1ZS0+bGVmdGluZGV4XSA9IGl0ZW07Ci0gICAgZGVxdWVfdHJpbV9yaWdodChkZXF1ZSk7CisgICAgaWYgKE5FRURTX1RSSU0oZGVxdWUsIGRlcXVlLT5tYXhsZW4pKSB7CisgICAgICAgIFB5T2JqZWN0ICpvbGRpdGVtID0gZGVxdWVfcG9wKGRlcXVlLCBOVUxMKTsKKyAgICAgICAgUHlfREVDUkVGKG9sZGl0ZW0pOworICAgIH0gZWxzZSB7CisgICAgICAgIGRlcXVlLT5zdGF0ZSsrOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2RlcXVlX2FwcGVuZGxlZnQoZGVxdWVvYmplY3QgKmRlcXVlLCBQeU9iamVjdCAqaXRlbSkKK3sKKyAgICBQeV9JTkNSRUYoaXRlbSk7CisgICAgaWYgKGRlcXVlX2FwcGVuZGxlZnRfaW50ZXJuYWwoZGVxdWUsIGl0ZW0sIGRlcXVlLT5tYXhsZW4pIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKIFB5RG9jX1NUUlZBUihhcHBlbmRsZWZ0X2RvYywgIkFkZCBhbiBlbGVtZW50IHRvIHRoZSBsZWZ0IHNpZGUgb2YgdGhlIGRlcXVlLiIpOwogCitzdGF0aWMgUHlPYmplY3QqCitmaW5hbGl6ZV9pdGVyYXRvcihQeU9iamVjdCAqaXQpCit7CisgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfU3RvcEl0ZXJhdGlvbikpCisgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihpdCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICBQeV9ERUNSRUYoaXQpOworICAgIFB5X1JFVFVSTl9OT05FOworfQogCiAvKiBSdW4gYW4gaXRlcmF0b3IgdG8gZXhoYXVzdGlvbi4gIFNob3J0Y3V0IGZvcgogICAgdGhlIGV4dGVuZC9leHRlbmRsZWZ0IG1ldGhvZHMgd2hlbiBtYXhsZW4gPT0gMC4gKi8KIHN0YXRpYyBQeU9iamVjdCoKIGNvbnN1bWVfaXRlcmF0b3IoUHlPYmplY3QgKml0KQogeworICAgIFB5T2JqZWN0ICooKml0ZXJuZXh0KShQeU9iamVjdCAqKTsKICAgICBQeU9iamVjdCAqaXRlbTsKIAotICAgIHdoaWxlICgoaXRlbSA9IFB5SXRlcl9OZXh0KGl0KSkgIT0gTlVMTCkgeworICAgIGl0ZXJuZXh0ID0gKlB5X1RZUEUoaXQpLT50cF9pdGVybmV4dDsKKyAgICB3aGlsZSAoKGl0ZW0gPSBpdGVybmV4dChpdCkpICE9IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOwogICAgIH0KLSAgICBQeV9ERUNSRUYoaXQpOwotICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICByZXR1cm4gZmluYWxpemVfaXRlcmF0b3IoaXQpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogZGVxdWVfZXh0ZW5kKGRlcXVlb2JqZWN0ICpkZXF1ZSwgUHlPYmplY3QgKml0ZXJhYmxlKQogewogICAgIFB5T2JqZWN0ICppdCwgKml0ZW07CisgICAgUHlPYmplY3QgKigqaXRlcm5leHQpKFB5T2JqZWN0ICopOworICAgIFB5X3NzaXplX3QgbWF4bGVuID0gZGVxdWUtPm1heGxlbjsKIAogICAgIC8qIEhhbmRsZSBjYXNlIHdoZXJlIGlkKGRlcXVlKSA9PSBpZChpdGVyYWJsZSkgKi8KICAgICBpZiAoKFB5T2JqZWN0ICopZGVxdWUgPT0gaXRlcmFibGUpIHsKQEAgLTM4MSw2ICszODYsMTMgQEAKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKKyAgICBpdCA9IFB5T2JqZWN0X0dldEl0ZXIoaXRlcmFibGUpOworICAgIGlmIChpdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChtYXhsZW4gPT0gMCkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVfaXRlcmF0b3IoaXQpOworCiAgICAgLyogU3BhY2Ugc2F2aW5nIGhldXJpc3RpYy4gIFN0YXJ0IGZpbGxpbmcgZnJvbSB0aGUgbGVmdCAqLwogICAgIGlmIChQeV9TSVpFKGRlcXVlKSA9PSAwKSB7CiAgICAgICAgIGFzc2VydChkZXF1ZS0+bGVmdGJsb2NrID09IGRlcXVlLT5yaWdodGJsb2NrKTsKQEAgLTM4OSwxNyArNDAxLDEwIEBACiAgICAgICAgIGRlcXVlLT5yaWdodGluZGV4ID0gMDsKICAgICB9CiAKLSAgICBpdCA9IFB5T2JqZWN0X0dldEl0ZXIoaXRlcmFibGUpOwotICAgIGlmIChpdCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmIChkZXF1ZS0+bWF4bGVuID09IDApCi0gICAgICAgIHJldHVybiBjb25zdW1lX2l0ZXJhdG9yKGl0KTsKLQotICAgIHdoaWxlICgoaXRlbSA9IFB5SXRlcl9OZXh0KGl0KSkgIT0gTlVMTCkgewotICAgICAgICBkZXF1ZS0+c3RhdGUrKzsKKyAgICBpdGVybmV4dCA9ICpQeV9UWVBFKGl0KS0+dHBfaXRlcm5leHQ7CisgICAgd2hpbGUgKChpdGVtID0gaXRlcm5leHQoaXQpKSAhPSBOVUxMKSB7CiAgICAgICAgIGlmIChkZXF1ZS0+cmlnaHRpbmRleCA9PSBCTE9DS0xFTiAtIDEpIHsKLSAgICAgICAgICAgIGJsb2NrICpiID0gbmV3YmxvY2soUHlfU0laRShkZXF1ZSkpOworICAgICAgICAgICAgYmxvY2sgKmIgPSBuZXdibG9jaygpOwogICAgICAgICAgICAgaWYgKGIgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXQpOwpAQCAtNDE1LDE0ICs0MjAsMTQgQEAKICAgICAgICAgUHlfU0laRShkZXF1ZSkrKzsKICAgICAgICAgZGVxdWUtPnJpZ2h0aW5kZXgrKzsKICAgICAgICAgZGVxdWUtPnJpZ2h0YmxvY2stPmRhdGFbZGVxdWUtPnJpZ2h0aW5kZXhdID0gaXRlbTsKLSAgICAgICAgZGVxdWVfdHJpbV9sZWZ0KGRlcXVlKTsKKyAgICAgICAgaWYgKE5FRURTX1RSSU0oZGVxdWUsIG1heGxlbikpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpvbGRpdGVtID0gZGVxdWVfcG9wbGVmdChkZXF1ZSwgTlVMTCk7CisgICAgICAgICAgICBQeV9ERUNSRUYob2xkaXRlbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBkZXF1ZS0+c3RhdGUrKzsKKyAgICAgICAgfQogICAgIH0KLSAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICBQeV9ERUNSRUYoaXQpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgUHlfREVDUkVGKGl0KTsKLSAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICByZXR1cm4gZmluYWxpemVfaXRlcmF0b3IoaXQpOwogfQogCiBQeURvY19TVFJWQVIoZXh0ZW5kX2RvYywKQEAgLTQzMiw2ICs0MzcsOCBAQAogZGVxdWVfZXh0ZW5kbGVmdChkZXF1ZW9iamVjdCAqZGVxdWUsIFB5T2JqZWN0ICppdGVyYWJsZSkKIHsKICAgICBQeU9iamVjdCAqaXQsICppdGVtOworICAgIFB5T2JqZWN0ICooKml0ZXJuZXh0KShQeU9iamVjdCAqKTsKKyAgICBQeV9zc2l6ZV90IG1heGxlbiA9IGRlcXVlLT5tYXhsZW47CiAKICAgICAvKiBIYW5kbGUgY2FzZSB3aGVyZSBpZChkZXF1ZSkgPT0gaWQoaXRlcmFibGUpICovCiAgICAgaWYgKChQeU9iamVjdCAqKWRlcXVlID09IGl0ZXJhYmxlKSB7CkBAIC00NDQsNiArNDUxLDEzIEBACiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCisgICAgaXQgPSBQeU9iamVjdF9HZXRJdGVyKGl0ZXJhYmxlKTsKKyAgICBpZiAoaXQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAobWF4bGVuID09IDApCisgICAgICAgIHJldHVybiBjb25zdW1lX2l0ZXJhdG9yKGl0KTsKKwogICAgIC8qIFNwYWNlIHNhdmluZyBoZXVyaXN0aWMuICBTdGFydCBmaWxsaW5nIGZyb20gdGhlIHJpZ2h0ICovCiAgICAgaWYgKFB5X1NJWkUoZGVxdWUpID09IDApIHsKICAgICAgICAgYXNzZXJ0KGRlcXVlLT5sZWZ0YmxvY2sgPT0gZGVxdWUtPnJpZ2h0YmxvY2spOwpAQCAtNDUyLDE3ICs0NjYsMTAgQEAKICAgICAgICAgZGVxdWUtPnJpZ2h0aW5kZXggPSBCTE9DS0xFTiAtIDI7CiAgICAgfQogCi0gICAgaXQgPSBQeU9iamVjdF9HZXRJdGVyKGl0ZXJhYmxlKTsKLSAgICBpZiAoaXQgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAoZGVxdWUtPm1heGxlbiA9PSAwKQotICAgICAgICByZXR1cm4gY29uc3VtZV9pdGVyYXRvcihpdCk7Ci0KLSAgICB3aGlsZSAoKGl0ZW0gPSBQeUl0ZXJfTmV4dChpdCkpICE9IE5VTEwpIHsKLSAgICAgICAgZGVxdWUtPnN0YXRlKys7CisgICAgaXRlcm5leHQgPSAqUHlfVFlQRShpdCktPnRwX2l0ZXJuZXh0OworICAgIHdoaWxlICgoaXRlbSA9IGl0ZXJuZXh0KGl0KSkgIT0gTlVMTCkgewogICAgICAgICBpZiAoZGVxdWUtPmxlZnRpbmRleCA9PSAwKSB7Ci0gICAgICAgICAgICBibG9jayAqYiA9IG5ld2Jsb2NrKFB5X1NJWkUoZGVxdWUpKTsKKyAgICAgICAgICAgIGJsb2NrICpiID0gbmV3YmxvY2soKTsKICAgICAgICAgICAgIGlmIChiID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0KTsKQEAgLTQ3OCwxNCArNDg1LDE0IEBACiAgICAgICAgIFB5X1NJWkUoZGVxdWUpKys7CiAgICAgICAgIGRlcXVlLT5sZWZ0aW5kZXgtLTsKICAgICAgICAgZGVxdWUtPmxlZnRibG9jay0+ZGF0YVtkZXF1ZS0+bGVmdGluZGV4XSA9IGl0ZW07Ci0gICAgICAgIGRlcXVlX3RyaW1fcmlnaHQoZGVxdWUpOworICAgICAgICBpZiAoTkVFRFNfVFJJTShkZXF1ZSwgbWF4bGVuKSkgeworICAgICAgICAgICAgUHlPYmplY3QgKm9sZGl0ZW0gPSBkZXF1ZV9wb3AoZGVxdWUsIE5VTEwpOworICAgICAgICAgICAgUHlfREVDUkVGKG9sZGl0ZW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZGVxdWUtPnN0YXRlKys7CisgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKLSAgICAgICAgUHlfREVDUkVGKGl0KTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIFB5X0RFQ1JFRihpdCk7Ci0gICAgUHlfUkVUVVJOX05PTkU7CisgICAgcmV0dXJuIGZpbmFsaXplX2l0ZXJhdG9yKGl0KTsKIH0KIAogUHlEb2NfU1RSVkFSKGV4dGVuZGxlZnRfZG9jLApAQCAtNTA0LDcgKzUxMSw0MCBAQAogICAgIHJldHVybiAoUHlPYmplY3QgKilkZXF1ZTsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICpkZXF1ZV9jb3B5KFB5T2JqZWN0ICpkZXF1ZSk7CitzdGF0aWMgUHlPYmplY3QgKgorZGVxdWVfY29weShQeU9iamVjdCAqZGVxdWUpCit7CisgICAgZGVxdWVvYmplY3QgKm9sZF9kZXF1ZSA9IChkZXF1ZW9iamVjdCAqKWRlcXVlOworICAgIGlmIChQeV9UWVBFKGRlcXVlKSA9PSAmZGVxdWVfdHlwZSkgeworICAgICAgICBkZXF1ZW9iamVjdCAqbmV3X2RlcXVlOworICAgICAgICBQeU9iamVjdCAqcnY7CisKKyAgICAgICAgbmV3X2RlcXVlID0gKGRlcXVlb2JqZWN0ICopZGVxdWVfbmV3KCZkZXF1ZV90eXBlLCAoUHlPYmplY3QgKilOVUxMLCAoUHlPYmplY3QgKilOVUxMKTsKKyAgICAgICAgaWYgKG5ld19kZXF1ZSA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIG5ld19kZXF1ZS0+bWF4bGVuID0gb2xkX2RlcXVlLT5tYXhsZW47CisgICAgICAgIC8qIEZhc3QgcGF0aCBmb3IgdGhlIGRlcXVlX3JlcGVhdCgpIGNvbW1vbiBjYXNlIHdoZXJlIGxlbihkZXF1ZSkgPT0gMSAqLworICAgICAgICBpZiAoUHlfU0laRShkZXF1ZSkgPT0gMSkgeworICAgICAgICAgICAgUHlPYmplY3QgKml0ZW0gPSBvbGRfZGVxdWUtPmxlZnRibG9jay0+ZGF0YVtvbGRfZGVxdWUtPmxlZnRpbmRleF07CisgICAgICAgICAgICBydiA9IGRlcXVlX2FwcGVuZChuZXdfZGVxdWUsIGl0ZW0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcnYgPSBkZXF1ZV9leHRlbmQobmV3X2RlcXVlLCBkZXF1ZSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJ2ICE9IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihydik7CisgICAgICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopbmV3X2RlcXVlOworICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRihuZXdfZGVxdWUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKG9sZF9kZXF1ZS0+bWF4bGVuIDwgMCkKKyAgICAgICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxGdW5jdGlvbigoUHlPYmplY3QgKikoUHlfVFlQRShkZXF1ZSkpLCAiTyIsIGRlcXVlLCBOVUxMKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBQeU9iamVjdF9DYWxsRnVuY3Rpb24oKFB5T2JqZWN0ICopKFB5X1RZUEUoZGVxdWUpKSwgIk9pIiwKKyAgICAgICAgICAgIGRlcXVlLCBvbGRfZGVxdWUtPm1heGxlbiwgTlVMTCk7Cit9CisKK1B5RG9jX1NUUlZBUihjb3B5X2RvYywgIlJldHVybiBhIHNoYWxsb3cgY29weSBvZiBhIGRlcXVlLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogZGVxdWVfY29uY2F0KGRlcXVlb2JqZWN0ICpkZXF1ZSwgUHlPYmplY3QgKm90aGVyKQpAQCAtNTM0LDM4ICs1NzQsMTAyIEBACiAgICAgcmV0dXJuIG5ld19kZXF1ZTsKIH0KIAotc3RhdGljIHZvaWQgZGVxdWVfY2xlYXIoZGVxdWVvYmplY3QgKmRlcXVlKTsKK3N0YXRpYyB2b2lkCitkZXF1ZV9jbGVhcihkZXF1ZW9iamVjdCAqZGVxdWUpCit7CisgICAgYmxvY2sgKmI7CisgICAgYmxvY2sgKnByZXZibG9jazsKKyAgICBibG9jayAqbGVmdGJsb2NrOworICAgIFB5X3NzaXplX3QgbGVmdGluZGV4OworICAgIFB5X3NzaXplX3QgbiwgbTsKKyAgICBQeU9iamVjdCAqaXRlbTsKKyAgICBQeU9iamVjdCAqKml0ZW1wdHIsICoqbGltaXQ7CisKKyAgICBpZiAoUHlfU0laRShkZXF1ZSkgPT0gMCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLyogRHVyaW5nIHRoZSBwcm9jZXNzIG9mIGNsZWFyaW5nIGEgZGVxdWUsIGRlY3JlZnMgY2FuIGNhdXNlIHRoZQorICAgICAgIGRlcXVlIHRvIG11dGF0ZS4gIFRvIGF2b2lkIGZhdGFsIGNvbmZ1c2lvbiwgd2UgaGF2ZSB0byBtYWtlIHRoZQorICAgICAgIGRlcXVlIGVtcHR5IGJlZm9yZSBjbGVhcmluZyB0aGUgYmxvY2tzIGFuZCBuZXZlciByZWZlciB0bworICAgICAgIGFueXRoaW5nIHZpYSBkZXF1ZS0+cmVmIHdoaWxlIGNsZWFyaW5nLiAgKFRoaXMgaXMgdGhlIHNhbWUKKyAgICAgICB0ZWNobmlxdWUgdXNlZCBmb3IgY2xlYXJpbmcgbGlzdHMsIHNldHMsIGFuZCBkaWN0cy4pCisKKyAgICAgICBNYWtpbmcgdGhlIGRlcXVlIGVtcHR5IHJlcXVpcmVzIGFsbG9jYXRpbmcgYSBuZXcgZW1wdHkgYmxvY2suICBJbgorICAgICAgIHRoZSB1bmxpa2VseSBldmVudCB0aGF0IG1lbW9yeSBpcyBmdWxsLCB3ZSBmYWxsIGJhY2sgdG8gYW4KKyAgICAgICBhbHRlcm5hdGUgbWV0aG9kIHRoYXQgZG9lc24ndCByZXF1aXJlIGEgbmV3IGJsb2NrLiAgUmVwZWF0aW5nCisgICAgICAgcG9wcyBpbiBhIHdoaWxlLWxvb3AgaXMgc2xvd2VyLCBwb3NzaWJseSByZS1lbnRyYW50IChhbmQgYSBjbGV2ZXIKKyAgICAgICBhZHZlcnNhcnkgY291bGQgY2F1c2UgaXQgdG8gbmV2ZXIgdGVybWluYXRlKS4KKyAgICAqLworCisgICAgYiA9IG5ld2Jsb2NrKCk7CisgICAgaWYgKGIgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICBnb3RvIGFsdGVybmF0ZV9tZXRob2Q7CisgICAgfQorCisgICAgLyogUmVtZW1iZXIgdGhlIG9sZCBzaXplLCBsZWZ0YmxvY2ssIGFuZCBsZWZ0aW5kZXggKi8KKyAgICBuID0gUHlfU0laRShkZXF1ZSk7CisgICAgbGVmdGJsb2NrID0gZGVxdWUtPmxlZnRibG9jazsKKyAgICBsZWZ0aW5kZXggPSBkZXF1ZS0+bGVmdGluZGV4OworCisgICAgLyogU2V0IHRoZSBkZXF1ZSB0byBiZSBlbXB0eSB1c2luZyB0aGUgbmV3bHkgYWxsb2NhdGVkIGJsb2NrICovCisgICAgTUFSS19FTkQoYi0+bGVmdGxpbmspOworICAgIE1BUktfRU5EKGItPnJpZ2h0bGluayk7CisgICAgUHlfU0laRShkZXF1ZSkgPSAwOworICAgIGRlcXVlLT5sZWZ0YmxvY2sgPSBiOworICAgIGRlcXVlLT5yaWdodGJsb2NrID0gYjsKKyAgICBkZXF1ZS0+bGVmdGluZGV4ID0gQ0VOVEVSICsgMTsKKyAgICBkZXF1ZS0+cmlnaHRpbmRleCA9IENFTlRFUjsKKyAgICBkZXF1ZS0+c3RhdGUrKzsKKworICAgIC8qIE5vdyB0aGUgb2xkIHNpemUsIGxlZnRibG9jaywgYW5kIGxlZnRpbmRleCBhcmUgZGlzY29ubmVjdGVkIGZyb20KKyAgICAgICB0aGUgZW1wdHkgZGVxdWUgYW5kIHdlIGNhbiB1c2UgdGhlbSB0byBkZWNyZWYgdGhlIHBvaW50ZXJzLgorICAgICovCisgICAgbSA9IChCTE9DS0xFTiAtIGxlZnRpbmRleCA+IG4pID8gbiA6IEJMT0NLTEVOIC0gbGVmdGluZGV4OworICAgIGl0ZW1wdHIgPSAmbGVmdGJsb2NrLT5kYXRhW2xlZnRpbmRleF07CisgICAgbGltaXQgPSBpdGVtcHRyICsgbTsKKyAgICBuIC09IG07CisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgaWYgKGl0ZW1wdHIgPT0gbGltaXQpIHsKKyAgICAgICAgICAgIGlmIChuID09IDApCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBDSEVDS19OT1RfRU5EKGxlZnRibG9jay0+cmlnaHRsaW5rKTsKKyAgICAgICAgICAgIHByZXZibG9jayA9IGxlZnRibG9jazsKKyAgICAgICAgICAgIGxlZnRibG9jayA9IGxlZnRibG9jay0+cmlnaHRsaW5rOworICAgICAgICAgICAgbSA9IChuID4gQkxPQ0tMRU4pID8gQkxPQ0tMRU4gOiBuOworICAgICAgICAgICAgaXRlbXB0ciA9IGxlZnRibG9jay0+ZGF0YTsKKyAgICAgICAgICAgIGxpbWl0ID0gaXRlbXB0ciArIG07CisgICAgICAgICAgICBuIC09IG07CisgICAgICAgICAgICBmcmVlYmxvY2socHJldmJsb2NrKTsKKyAgICAgICAgfQorICAgICAgICBpdGVtID0gKihpdGVtcHRyKyspOworICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CisgICAgfQorICAgIENIRUNLX0VORChsZWZ0YmxvY2stPnJpZ2h0bGluayk7CisgICAgZnJlZWJsb2NrKGxlZnRibG9jayk7CisgICAgcmV0dXJuOworCisgIGFsdGVybmF0ZV9tZXRob2Q6CisgICAgd2hpbGUgKFB5X1NJWkUoZGVxdWUpKSB7CisgICAgICAgIGl0ZW0gPSBkZXF1ZV9wb3AoZGVxdWUsIE5VTEwpOworICAgICAgICBhc3NlcnQgKGl0ZW0gIT0gTlVMTCk7CisgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICB9Cit9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1kZXF1ZV9yZXBlYXQoZGVxdWVvYmplY3QgKmRlcXVlLCBQeV9zc2l6ZV90IG4pCitkZXF1ZV9jbGVhcm1ldGhvZChkZXF1ZW9iamVjdCAqZGVxdWUpCiB7Ci0gICAgZGVxdWVvYmplY3QgKm5ld19kZXF1ZTsKLSAgICBQeU9iamVjdCAqcmVzdWx0OwotCi0gICAgLyogWFhYIGFkZCBhIHNwZWNpYWwgY2FzZSBmb3Igd2hlbiBtYXhsZW4gaXMgZGVmaW5lZCAqLwotICAgIGlmIChuIDwgMCkKLSAgICAgICAgbiA9IDA7Ci0gICAgZWxzZSBpZiAobiA+IDAgJiYgUHlfU0laRShkZXF1ZSkgPiBNQVhfREVRVUVfTEVOIC8gbikKLSAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0KLSAgICBuZXdfZGVxdWUgPSAoZGVxdWVvYmplY3QgKilkZXF1ZV9uZXcoJmRlcXVlX3R5cGUsIChQeU9iamVjdCAqKU5VTEwsIChQeU9iamVjdCAqKU5VTEwpOwotICAgIG5ld19kZXF1ZS0+bWF4bGVuID0gZGVxdWUtPm1heGxlbjsKLQotICAgIGZvciAoIDsgbiA7IG4tLSkgewotICAgICAgICByZXN1bHQgPSBkZXF1ZV9leHRlbmQobmV3X2RlcXVlLCAoUHlPYmplY3QgKilkZXF1ZSk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfREVDUkVGKG5ld19kZXF1ZSk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICB9Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKW5ld19kZXF1ZTsKKyAgICBkZXF1ZV9jbGVhcihkZXF1ZSk7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKK1B5RG9jX1NUUlZBUihjbGVhcl9kb2MsICJSZW1vdmUgYWxsIGVsZW1lbnRzIGZyb20gdGhlIGRlcXVlLiIpOworCiBzdGF0aWMgUHlPYmplY3QgKgogZGVxdWVfaW5wbGFjZV9yZXBlYXQoZGVxdWVvYmplY3QgKmRlcXVlLCBQeV9zc2l6ZV90IG4pCiB7Ci0gICAgUHlfc3NpemVfdCBpLCBzaXplOworICAgIFB5X3NzaXplX3QgaSwgbSwgc2l6ZTsKICAgICBQeU9iamVjdCAqc2VxOwogICAgIFB5T2JqZWN0ICpydjsKIApAQCAtNTgxLDI3ICs2ODUsNDcgQEAKICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKWRlcXVlOwogICAgIH0KIAotICAgIGlmIChzaXplID4gTUFYX0RFUVVFX0xFTiAvIG4pIHsKLSAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgfQotCiAgICAgaWYgKHNpemUgPT0gMSkgewogICAgICAgICAvKiBjb21tb24gY2FzZSwgcmVwZWF0aW5nIGEgc2luZ2xlIGVsZW1lbnQgKi8KICAgICAgICAgUHlPYmplY3QgKml0ZW0gPSBkZXF1ZS0+bGVmdGJsb2NrLT5kYXRhW2RlcXVlLT5sZWZ0aW5kZXhdOwogCi0gICAgICAgIGlmIChkZXF1ZS0+bWF4bGVuICE9IC0xICYmIG4gPiBkZXF1ZS0+bWF4bGVuKQorICAgICAgICBpZiAoZGVxdWUtPm1heGxlbiA+PSAwICYmIG4gPiBkZXF1ZS0+bWF4bGVuKQogICAgICAgICAgICAgbiA9IGRlcXVlLT5tYXhsZW47CiAKLSAgICAgICAgZm9yIChpID0gMCA7IGkgPCBuLTEgOyBpKyspIHsKLSAgICAgICAgICAgIHJ2ID0gZGVxdWVfYXBwZW5kKGRlcXVlLCBpdGVtKTsKLSAgICAgICAgICAgIGlmIChydiA9PSBOVUxMKQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgUHlfREVDUkVGKHJ2KTsKKyAgICAgICAgZGVxdWUtPnN0YXRlKys7CisgICAgICAgIGZvciAoaSA9IDAgOyBpIDwgbi0xIDsgKSB7CisgICAgICAgICAgICBpZiAoZGVxdWUtPnJpZ2h0aW5kZXggPT0gQkxPQ0tMRU4gLSAxKSB7CisgICAgICAgICAgICAgICAgYmxvY2sgKmIgPSBuZXdibG9jaygpOworICAgICAgICAgICAgICAgIGlmIChiID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfU0laRShkZXF1ZSkgKz0gaTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGItPmxlZnRsaW5rID0gZGVxdWUtPnJpZ2h0YmxvY2s7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRU5EKGRlcXVlLT5yaWdodGJsb2NrLT5yaWdodGxpbmspOworICAgICAgICAgICAgICAgIGRlcXVlLT5yaWdodGJsb2NrLT5yaWdodGxpbmsgPSBiOworICAgICAgICAgICAgICAgIGRlcXVlLT5yaWdodGJsb2NrID0gYjsKKyAgICAgICAgICAgICAgICBNQVJLX0VORChiLT5yaWdodGxpbmspOworICAgICAgICAgICAgICAgIGRlcXVlLT5yaWdodGluZGV4ID0gLTE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtID0gbiAtIDEgLSBpOworICAgICAgICAgICAgaWYgKG0gPiBCTE9DS0xFTiAtIDEgLSBkZXF1ZS0+cmlnaHRpbmRleCkKKyAgICAgICAgICAgICAgICBtID0gQkxPQ0tMRU4gLSAxIC0gZGVxdWUtPnJpZ2h0aW5kZXg7CisgICAgICAgICAgICBpICs9IG07CisgICAgICAgICAgICB3aGlsZSAobS0tKSB7CisgICAgICAgICAgICAgICAgZGVxdWUtPnJpZ2h0aW5kZXgrKzsKKyAgICAgICAgICAgICAgICBQeV9JTkNSRUYoaXRlbSk7CisgICAgICAgICAgICAgICAgZGVxdWUtPnJpZ2h0YmxvY2stPmRhdGFbZGVxdWUtPnJpZ2h0aW5kZXhdID0gaXRlbTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICBQeV9TSVpFKGRlcXVlKSArPSBpOwogICAgICAgICBQeV9JTkNSRUYoZGVxdWUpOwogICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopZGVxdWU7CiAgICAgfQogCisgICAgaWYgKChzaXplX3Qpc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC8gKHNpemVfdCluKSB7CisgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgIH0KKwogICAgIHNlcSA9IFB5U2VxdWVuY2VfTGlzdCgoUHlPYmplY3QgKilkZXF1ZSk7CiAgICAgaWYgKHNlcSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gc2VxOwpAQCAtNjE5LDYgKzc0MywyMCBAQAogICAgIHJldHVybiAoUHlPYmplY3QgKilkZXF1ZTsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2RlcXVlX3JlcGVhdChkZXF1ZW9iamVjdCAqZGVxdWUsIFB5X3NzaXplX3QgbikKK3sKKyAgICBkZXF1ZW9iamVjdCAqbmV3X2RlcXVlOworICAgIFB5T2JqZWN0ICpydjsKKworICAgIG5ld19kZXF1ZSA9IChkZXF1ZW9iamVjdCAqKWRlcXVlX2NvcHkoKFB5T2JqZWN0ICopIGRlcXVlKTsKKyAgICBpZiAobmV3X2RlcXVlID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJ2ID0gZGVxdWVfaW5wbGFjZV9yZXBlYXQobmV3X2RlcXVlLCBuKTsKKyAgICBQeV9ERUNSRUYobmV3X2RlcXVlKTsKKyAgICByZXR1cm4gcnY7Cit9CisKIC8qIFRoZSByb3RhdGUoKSBtZXRob2QgaXMgcGFydCBvZiB0aGUgcHVibGljIEFQSSBhbmQgaXMgdXNlZCBpbnRlcm5hbGx5CiBhcyBhIHByaW1pdGl2ZSBmb3Igb3RoZXIgbWV0aG9kcy4KIApAQCAtNjcxLDcgKzgwOSw3IEBACiAgICAgd2hpbGUgKG4gPiAwKSB7CiAgICAgICAgIGlmIChsZWZ0aW5kZXggPT0gMCkgewogICAgICAgICAgICAgaWYgKGIgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIGIgPSBuZXdibG9jayhsZW4pOworICAgICAgICAgICAgICAgIGIgPSBuZXdibG9jaygpOwogICAgICAgICAgICAgICAgIGlmIChiID09IE5VTEwpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZG9uZTsKICAgICAgICAgICAgIH0KQEAgLTcwMiw3ICs4NDAsNyBAQAogICAgICAgICAgICAgICAgICooZGVzdCsrKSA9ICooc3JjKyspOwogICAgICAgICAgICAgfSB3aGlsZSAoLS1tKTsKICAgICAgICAgfQotICAgICAgICBpZiAocmlnaHRpbmRleCA9PSAtMSkgeworICAgICAgICBpZiAocmlnaHRpbmRleCA8IDApIHsKICAgICAgICAgICAgIGFzc2VydChsZWZ0YmxvY2sgIT0gcmlnaHRibG9jayk7CiAgICAgICAgICAgICBhc3NlcnQoYiA9PSBOVUxMKTsKICAgICAgICAgICAgIGIgPSByaWdodGJsb2NrOwpAQCAtNzE1LDcgKzg1Myw3IEBACiAgICAgd2hpbGUgKG4gPCAwKSB7CiAgICAgICAgIGlmIChyaWdodGluZGV4ID09IEJMT0NLTEVOIC0gMSkgewogICAgICAgICAgICAgaWYgKGIgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIGIgPSBuZXdibG9jayhsZW4pOworICAgICAgICAgICAgICAgIGIgPSBuZXdibG9jaygpOwogICAgICAgICAgICAgICAgIGlmIChiID09IE5VTEwpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZG9uZTsKICAgICAgICAgICAgIH0KQEAgLTc5MCwxMSArOTI4LDExIEBACiAgICAgYmxvY2sgKnJpZ2h0YmxvY2sgPSBkZXF1ZS0+cmlnaHRibG9jazsKICAgICBQeV9zc2l6ZV90IGxlZnRpbmRleCA9IGRlcXVlLT5sZWZ0aW5kZXg7CiAgICAgUHlfc3NpemVfdCByaWdodGluZGV4ID0gZGVxdWUtPnJpZ2h0aW5kZXg7Ci0gICAgUHlfc3NpemVfdCBuID0gUHlfU0laRShkZXF1ZSkgLyAyOwotICAgIFB5X3NzaXplX3QgaTsKKyAgICBQeV9zc2l6ZV90IG4gPSBQeV9TSVpFKGRlcXVlKSA+PiAxOwogICAgIFB5T2JqZWN0ICp0bXA7CiAKLSAgICBmb3IgKGk9MCA7IGk8biA7IGkrKykgeworICAgIG4rKzsKKyAgICB3aGlsZSAoLS1uKSB7CiAgICAgICAgIC8qIFZhbGlkYXRlIHRoYXQgcG9pbnRlcnMgaGF2ZW4ndCBtZXQgaW4gdGhlIG1pZGRsZSAqLwogICAgICAgICBhc3NlcnQobGVmdGJsb2NrICE9IHJpZ2h0YmxvY2sgfHwgbGVmdGluZGV4IDwgcmlnaHRpbmRleCk7CiAgICAgICAgIENIRUNLX05PVF9FTkQobGVmdGJsb2NrKTsKQEAgLTgxNCw3ICs5NTIsNyBAQAogCiAgICAgICAgIC8qIFN0ZXAgYmFja3dhcmRzIHdpdGggdGhlIHJpZ2h0IGJsb2NrL2luZGV4IHBhaXIgKi8KICAgICAgICAgcmlnaHRpbmRleC0tOwotICAgICAgICBpZiAocmlnaHRpbmRleCA9PSAtMSkgeworICAgICAgICBpZiAocmlnaHRpbmRleCA8IDApIHsKICAgICAgICAgICAgIHJpZ2h0YmxvY2sgPSByaWdodGJsb2NrLT5sZWZ0bGluazsKICAgICAgICAgICAgIHJpZ2h0aW5kZXggPSBCTE9DS0xFTiAtIDE7CiAgICAgICAgIH0KQEAgLTgzMSwyMCArOTY5LDE5IEBACiAgICAgYmxvY2sgKmIgPSBkZXF1ZS0+bGVmdGJsb2NrOwogICAgIFB5X3NzaXplX3QgaW5kZXggPSBkZXF1ZS0+bGVmdGluZGV4OwogICAgIFB5X3NzaXplX3QgbiA9IFB5X1NJWkUoZGVxdWUpOwotICAgIFB5X3NzaXplX3QgaTsKICAgICBQeV9zc2l6ZV90IGNvdW50ID0gMDsKICAgICBzaXplX3Qgc3RhcnRfc3RhdGUgPSBkZXF1ZS0+c3RhdGU7CiAgICAgUHlPYmplY3QgKml0ZW07CiAgICAgaW50IGNtcDsKIAotICAgIGZvciAoaT0wIDsgaTxuIDsgaSsrKSB7CisgICAgbisrOworICAgIHdoaWxlICgtLW4pIHsKICAgICAgICAgQ0hFQ0tfTk9UX0VORChiKTsKICAgICAgICAgaXRlbSA9IGItPmRhdGFbaW5kZXhdOwogICAgICAgICBjbXAgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woaXRlbSwgdiwgUHlfRVEpOwotICAgICAgICBpZiAoY21wID4gMCkKLSAgICAgICAgICAgIGNvdW50Kys7Ci0gICAgICAgIGVsc2UgaWYgKGNtcCA8IDApCisgICAgICAgIGlmIChjbXAgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGNvdW50ICs9IGNtcDsKIAogICAgICAgICBpZiAoc3RhcnRfc3RhdGUgIT0gZGVxdWUtPnN0YXRlKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLApAQCAtODcxLDEyICsxMDA4LDEyIEBACiAgICAgYmxvY2sgKmIgPSBkZXF1ZS0+bGVmdGJsb2NrOwogICAgIFB5X3NzaXplX3QgaW5kZXggPSBkZXF1ZS0+bGVmdGluZGV4OwogICAgIFB5X3NzaXplX3QgbiA9IFB5X1NJWkUoZGVxdWUpOwotICAgIFB5X3NzaXplX3QgaTsKICAgICBzaXplX3Qgc3RhcnRfc3RhdGUgPSBkZXF1ZS0+c3RhdGU7CiAgICAgUHlPYmplY3QgKml0ZW07CiAgICAgaW50IGNtcDsKIAotICAgIGZvciAoaT0wIDsgaTxuIDsgaSsrKSB7CisgICAgbisrOworICAgIHdoaWxlICgtLW4pIHsKICAgICAgICAgQ0hFQ0tfTk9UX0VORChiKTsKICAgICAgICAgaXRlbSA9IGItPmRhdGFbaW5kZXhdOwogICAgICAgICBjbXAgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woaXRlbSwgdiwgUHlfRVEpOwpAQCAtOTA2LDExICsxMDQzLDEyIEBACiBzdGF0aWMgUHlPYmplY3QgKgogZGVxdWVfaW5kZXgoZGVxdWVvYmplY3QgKmRlcXVlLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9zc2l6ZV90IGksIHN0YXJ0PTAsIHN0b3A9UHlfU0laRShkZXF1ZSk7CisgICAgUHlfc3NpemVfdCBpLCBuLCBzdGFydD0wLCBzdG9wPVB5X1NJWkUoZGVxdWUpOwogICAgIFB5T2JqZWN0ICp2LCAqaXRlbTsKICAgICBibG9jayAqYiA9IGRlcXVlLT5sZWZ0YmxvY2s7CiAgICAgUHlfc3NpemVfdCBpbmRleCA9IGRlcXVlLT5sZWZ0aW5kZXg7CiAgICAgc2l6ZV90IHN0YXJ0X3N0YXRlID0gZGVxdWUtPnN0YXRlOworICAgIGludCBjbXA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98TyZPJjppbmRleCIsICZ2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlFdmFsX1NsaWNlSW5kZXgsICZzdGFydCwKQEAgLTkyOCwyMiArMTA2NiwzMiBAQAogICAgIH0KICAgICBpZiAoc3RvcCA+IFB5X1NJWkUoZGVxdWUpKQogICAgICAgICBzdG9wID0gUHlfU0laRShkZXF1ZSk7CisgICAgaWYgKHN0YXJ0ID4gc3RvcCkKKyAgICAgICAgc3RhcnQgPSBzdG9wOworICAgIGFzc2VydCgwIDw9IHN0YXJ0ICYmIHN0YXJ0IDw9IHN0b3AgJiYgc3RvcCA8PSBQeV9TSVpFKGRlcXVlKSk7CiAKLSAgICBmb3IgKGk9MCA7IGk8c3RvcCA7IGkrKykgewotICAgICAgICBpZiAoaSA+PSBzdGFydCkgewotICAgICAgICAgICAgaW50IGNtcDsKLSAgICAgICAgICAgIENIRUNLX05PVF9FTkQoYik7Ci0gICAgICAgICAgICBpdGVtID0gYi0+ZGF0YVtpbmRleF07Ci0gICAgICAgICAgICBjbXAgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woaXRlbSwgdiwgUHlfRVEpOwotICAgICAgICAgICAgaWYgKGNtcCA+IDApCi0gICAgICAgICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChpKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNtcCA8IDApCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICBpZiAoc3RhcnRfc3RhdGUgIT0gZGVxdWUtPnN0YXRlKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlcXVlIG11dGF0ZWQgZHVyaW5nIGl0ZXJhdGlvbiIpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQorICAgIC8qIFhYWCBSZXBsYWNlIHRoaXMgbG9vcCB3aXRoIGZhc3RlciBjb2RlIGZyb20gZGVxdWVfaXRlbSgpICovCisgICAgZm9yIChpPTAgOyBpPHN0YXJ0IDsgaSsrKSB7CisgICAgICAgIGluZGV4Kys7CisgICAgICAgIGlmIChpbmRleCA9PSBCTE9DS0xFTikgeworICAgICAgICAgICAgYiA9IGItPnJpZ2h0bGluazsKKyAgICAgICAgICAgIGluZGV4ID0gMDsKKyAgICAgICAgfQorICAgIH0KKworICAgIG4gPSBzdG9wIC0gaSArIDE7CisgICAgd2hpbGUgKC0tbikgeworICAgICAgICBDSEVDS19OT1RfRU5EKGIpOworICAgICAgICBpdGVtID0gYi0+ZGF0YVtpbmRleF07CisgICAgICAgIGNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChpdGVtLCB2LCBQeV9FUSk7CisgICAgICAgIGlmIChjbXAgPiAwKQorICAgICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChzdG9wIC0gbik7CisgICAgICAgIGlmIChjbXAgPCAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmIChzdGFydF9zdGF0ZSAhPSBkZXF1ZS0+c3RhdGUpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlcXVlIG11dGF0ZWQgZHVyaW5nIGl0ZXJhdGlvbiIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgaW5kZXgrKzsKICAgICAgICAgaWYgKGluZGV4ID09IEJMT0NLTEVOKSB7CkBAIC0xMDM3LDg0ICsxMTg1LDEwIEBACiBQeURvY19TVFJWQVIocmVtb3ZlX2RvYywKICJELnJlbW92ZSh2YWx1ZSkgLS0gcmVtb3ZlIGZpcnN0IG9jY3VycmVuY2Ugb2YgdmFsdWUuIik7CiAKLXN0YXRpYyB2b2lkCi1kZXF1ZV9jbGVhcihkZXF1ZW9iamVjdCAqZGVxdWUpCi17Ci0gICAgYmxvY2sgKmI7Ci0gICAgYmxvY2sgKnByZXZibG9jazsKLSAgICBibG9jayAqbGVmdGJsb2NrOwotICAgIFB5X3NzaXplX3QgbGVmdGluZGV4OwotICAgIFB5X3NzaXplX3QgbjsKLSAgICBQeU9iamVjdCAqaXRlbTsKLQotICAgIGlmIChQeV9TSVpFKGRlcXVlKSA9PSAwKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvKiBEdXJpbmcgdGhlIHByb2Nlc3Mgb2YgY2xlYXJpbmcgYSBkZXF1ZSwgZGVjcmVmcyBjYW4gY2F1c2UgdGhlCi0gICAgICAgZGVxdWUgdG8gbXV0YXRlLiAgVG8gYXZvaWQgZmF0YWwgY29uZnVzaW9uLCB3ZSBoYXZlIHRvIG1ha2UgdGhlCi0gICAgICAgZGVxdWUgZW1wdHkgYmVmb3JlIGNsZWFyaW5nIHRoZSBibG9ja3MgYW5kIG5ldmVyIHJlZmVyIHRvCi0gICAgICAgYW55dGhpbmcgdmlhIGRlcXVlLT5yZWYgd2hpbGUgY2xlYXJpbmcuICAoVGhpcyBpcyB0aGUgc2FtZQotICAgICAgIHRlY2huaXF1ZSB1c2VkIGZvciBjbGVhcmluZyBsaXN0cywgc2V0cywgYW5kIGRpY3RzLikKLQotICAgICAgIE1ha2luZyB0aGUgZGVxdWUgZW1wdHkgcmVxdWlyZXMgYWxsb2NhdGluZyBhIG5ldyBlbXB0eSBibG9jay4gIEluCi0gICAgICAgdGhlIHVubGlrZWx5IGV2ZW50IHRoYXQgbWVtb3J5IGlzIGZ1bGwsIHdlIGZhbGwgYmFjayB0byBhbgotICAgICAgIGFsdGVybmF0ZSBtZXRob2QgdGhhdCBkb2Vzbid0IHJlcXVpcmUgYSBuZXcgYmxvY2suICBSZXBlYXRpbmcKLSAgICAgICBwb3BzIGluIGEgd2hpbGUtbG9vcCBpcyBzbG93ZXIsIHBvc3NpYmx5IHJlLWVudHJhbnQgKGFuZCBhIGNsZXZlcgotICAgICAgIGFkdmVyc2FyeSBjb3VsZCBjYXVzZSBpdCB0byBuZXZlciB0ZXJtaW5hdGUpLgotICAgICovCi0KLSAgICBiID0gbmV3YmxvY2soMCk7Ci0gICAgaWYgKGIgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBnb3RvIGFsdGVybmF0ZV9tZXRob2Q7Ci0gICAgfQotCi0gICAgLyogUmVtZW1iZXIgdGhlIG9sZCBzaXplLCBsZWZ0YmxvY2ssIGFuZCBsZWZ0aW5kZXggKi8KLSAgICBsZWZ0YmxvY2sgPSBkZXF1ZS0+bGVmdGJsb2NrOwotICAgIGxlZnRpbmRleCA9IGRlcXVlLT5sZWZ0aW5kZXg7Ci0gICAgbiA9IFB5X1NJWkUoZGVxdWUpOwotCi0gICAgLyogU2V0IHRoZSBkZXF1ZSB0byBiZSBlbXB0eSB1c2luZyB0aGUgbmV3bHkgYWxsb2NhdGVkIGJsb2NrICovCi0gICAgTUFSS19FTkQoYi0+bGVmdGxpbmspOwotICAgIE1BUktfRU5EKGItPnJpZ2h0bGluayk7Ci0gICAgUHlfU0laRShkZXF1ZSkgPSAwOwotICAgIGRlcXVlLT5sZWZ0YmxvY2sgPSBiOwotICAgIGRlcXVlLT5yaWdodGJsb2NrID0gYjsKLSAgICBkZXF1ZS0+bGVmdGluZGV4ID0gQ0VOVEVSICsgMTsKLSAgICBkZXF1ZS0+cmlnaHRpbmRleCA9IENFTlRFUjsKLSAgICBkZXF1ZS0+c3RhdGUrKzsKLQotICAgIC8qIE5vdyB0aGUgb2xkIHNpemUsIGxlZnRibG9jaywgYW5kIGxlZnRpbmRleCBhcmUgZGlzY29ubmVjdGVkIGZyb20KLSAgICAgICB0aGUgZW1wdHkgZGVxdWUgYW5kIHdlIGNhbiB1c2UgdGhlbSB0byBkZWNyZWYgdGhlIHBvaW50ZXJzLgotICAgICovCi0gICAgd2hpbGUgKG4tLSkgewotICAgICAgICBpdGVtID0gbGVmdGJsb2NrLT5kYXRhW2xlZnRpbmRleF07Ci0gICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKLSAgICAgICAgbGVmdGluZGV4Kys7Ci0gICAgICAgIGlmIChsZWZ0aW5kZXggPT0gQkxPQ0tMRU4gJiYgbikgewotICAgICAgICAgICAgQ0hFQ0tfTk9UX0VORChsZWZ0YmxvY2stPnJpZ2h0bGluayk7Ci0gICAgICAgICAgICBwcmV2YmxvY2sgPSBsZWZ0YmxvY2s7Ci0gICAgICAgICAgICBsZWZ0YmxvY2sgPSBsZWZ0YmxvY2stPnJpZ2h0bGluazsKLSAgICAgICAgICAgIGxlZnRpbmRleCA9IDA7Ci0gICAgICAgICAgICBmcmVlYmxvY2socHJldmJsb2NrKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBDSEVDS19FTkQobGVmdGJsb2NrLT5yaWdodGxpbmspOwotICAgIGZyZWVibG9jayhsZWZ0YmxvY2spOwotICAgIHJldHVybjsKLQotICBhbHRlcm5hdGVfbWV0aG9kOgotICAgIHdoaWxlIChQeV9TSVpFKGRlcXVlKSkgewotICAgICAgICBpdGVtID0gZGVxdWVfcG9wKGRlcXVlLCBOVUxMKTsKLSAgICAgICAgYXNzZXJ0IChpdGVtICE9IE5VTEwpOwotICAgICAgICBQeV9ERUNSRUYoaXRlbSk7Ci0gICAgfQotfQotCiBzdGF0aWMgaW50CiB2YWxpZF9pbmRleChQeV9zc2l6ZV90IGksIFB5X3NzaXplX3QgbGltaXQpCiB7Ci0gICAgLyogVGhlIGNhc3QgdG8gc2l6ZV90IGxldCB1cyB1c2UganVzdCBhIHNpbmdsZSBjb21wYXJpc29uCisgICAgLyogVGhlIGNhc3QgdG8gc2l6ZV90IGxldHMgdXMgdXNlIGp1c3QgYSBzaW5nbGUgY29tcGFyaXNvbgogICAgICAgIHRvIGNoZWNrIHdoZXRoZXIgaSBpcyBpbiB0aGUgcmFuZ2U6IDAgPD0gaSA8IGxpbWl0ICovCiAgICAgcmV0dXJuIChzaXplX3QpIGkgPCAoc2l6ZV90KSBsaW1pdDsKIH0KQEAgLTExNDMsMTQgKzEyMTcsMTYgQEAKICAgICAgICAgaSA9IChQeV9zc2l6ZV90KSgoc2l6ZV90KSBpICUgQkxPQ0tMRU4pOwogICAgICAgICBpZiAoaW5kZXggPCAoUHlfU0laRShkZXF1ZSkgPj4gMSkpIHsKICAgICAgICAgICAgIGIgPSBkZXF1ZS0+bGVmdGJsb2NrOwotICAgICAgICAgICAgd2hpbGUgKG4tLSkKKyAgICAgICAgICAgIG4rKzsKKyAgICAgICAgICAgIHdoaWxlICgtLW4pCiAgICAgICAgICAgICAgICAgYiA9IGItPnJpZ2h0bGluazsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG4gPSAoUHlfc3NpemVfdCkoCiAgICAgICAgICAgICAgICAgICAgICgoc2l6ZV90KShkZXF1ZS0+bGVmdGluZGV4ICsgUHlfU0laRShkZXF1ZSkgLSAxKSkKICAgICAgICAgICAgICAgICAgICAgLyBCTE9DS0xFTiAtIG4pOwogICAgICAgICAgICAgYiA9IGRlcXVlLT5yaWdodGJsb2NrOwotICAgICAgICAgICAgd2hpbGUgKG4tLSkKKyAgICAgICAgICAgIG4rKzsKKyAgICAgICAgICAgIHdoaWxlICgtLW4pCiAgICAgICAgICAgICAgICAgYiA9IGItPmxlZnRsaW5rOwogICAgICAgICB9CiAgICAgfQpAQCAtMTE5NCwxNCArMTI3MCwxNiBAQAogICAgIGkgPSAoUHlfc3NpemVfdCkoKHNpemVfdCkgaSAlIEJMT0NLTEVOKTsKICAgICBpZiAoaW5kZXggPD0gaGFsZmxlbikgewogICAgICAgICBiID0gZGVxdWUtPmxlZnRibG9jazsKLSAgICAgICAgd2hpbGUgKG4tLSkKKyAgICAgICAgbisrOworICAgICAgICB3aGlsZSAoLS1uKQogICAgICAgICAgICAgYiA9IGItPnJpZ2h0bGluazsKICAgICB9IGVsc2UgewogICAgICAgICBuID0gKFB5X3NzaXplX3QpKAogICAgICAgICAgICAgICAgICgoc2l6ZV90KShkZXF1ZS0+bGVmdGluZGV4ICsgUHlfU0laRShkZXF1ZSkgLSAxKSkKICAgICAgICAgICAgICAgICAvIEJMT0NLTEVOIC0gbik7CiAgICAgICAgIGIgPSBkZXF1ZS0+cmlnaHRibG9jazsKLSAgICAgICAgd2hpbGUgKG4tLSkKKyAgICAgICAgbisrOworICAgICAgICB3aGlsZSAoLS1uKQogICAgICAgICAgICAgYiA9IGItPmxlZnRsaW5rOwogICAgIH0KICAgICBQeV9JTkNSRUYodik7CkBAIC0xMjExLDE1ICsxMjg5LDYgQEAKICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLWRlcXVlX2NsZWFybWV0aG9kKGRlcXVlb2JqZWN0ICpkZXF1ZSkKLXsKLSAgICBkZXF1ZV9jbGVhcihkZXF1ZSk7Ci0gICAgUHlfUkVUVVJOX05PTkU7Ci19Ci0KLVB5RG9jX1NUUlZBUihjbGVhcl9kb2MsICJSZW1vdmUgYWxsIGVsZW1lbnRzIGZyb20gdGhlIGRlcXVlLiIpOwotCiBzdGF0aWMgdm9pZAogZGVxdWVfZGVhbGxvYyhkZXF1ZW9iamVjdCAqZGVxdWUpCiB7CkBAIC0xMjQzLDYgKzEzMTIsNyBAQAogICAgIFB5T2JqZWN0ICppdGVtOwogICAgIFB5X3NzaXplX3QgaW5kZXg7CiAgICAgUHlfc3NpemVfdCBpbmRleGxvID0gZGVxdWUtPmxlZnRpbmRleDsKKyAgICBQeV9zc2l6ZV90IGluZGV4aGlnaDsKIAogICAgIGZvciAoYiA9IGRlcXVlLT5sZWZ0YmxvY2s7IGIgIT0gZGVxdWUtPnJpZ2h0YmxvY2s7IGIgPSBiLT5yaWdodGxpbmspIHsKICAgICAgICAgZm9yIChpbmRleCA9IGluZGV4bG87IGluZGV4IDwgQkxPQ0tMRU4gOyBpbmRleCsrKSB7CkBAIC0xMjUxLDcgKzEzMjEsOCBAQAogICAgICAgICB9CiAgICAgICAgIGluZGV4bG8gPSAwOwogICAgIH0KLSAgICBmb3IgKGluZGV4ID0gaW5kZXhsbzsgaW5kZXggPD0gZGVxdWUtPnJpZ2h0aW5kZXg7IGluZGV4KyspIHsKKyAgICBpbmRleGhpZ2ggPSBkZXF1ZS0+cmlnaHRpbmRleDsKKyAgICBmb3IgKGluZGV4ID0gaW5kZXhsbzsgaW5kZXggPD0gaW5kZXhoaWdoOyBpbmRleCsrKSB7CiAgICAgICAgIGl0ZW0gPSBiLT5kYXRhW2luZGV4XTsKICAgICAgICAgUHlfVklTSVQoaXRlbSk7CiAgICAgfQpAQCAtMTI1OSw0NSArMTMzMCwzMyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotZGVxdWVfY29weShQeU9iamVjdCAqZGVxdWUpCi17Ci0gICAgaWYgKCgoZGVxdWVvYmplY3QgKilkZXF1ZSktPm1heGxlbiA9PSAtMSkKLSAgICAgICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxGdW5jdGlvbigoUHlPYmplY3QgKikoUHlfVFlQRShkZXF1ZSkpLCAiTyIsIGRlcXVlLCBOVUxMKTsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBQeU9iamVjdF9DYWxsRnVuY3Rpb24oKFB5T2JqZWN0ICopKFB5X1RZUEUoZGVxdWUpKSwgIk9pIiwKLSAgICAgICAgICAgIGRlcXVlLCAoKGRlcXVlb2JqZWN0ICopZGVxdWUpLT5tYXhsZW4sIE5VTEwpOwotfQotCi1QeURvY19TVFJWQVIoY29weV9kb2MsICJSZXR1cm4gYSBzaGFsbG93IGNvcHkgb2YgYSBkZXF1ZS4iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKIGRlcXVlX3JlZHVjZShkZXF1ZW9iamVjdCAqZGVxdWUpCiB7Ci0gICAgUHlPYmplY3QgKmRpY3QsICpyZXN1bHQsICphc2xpc3Q7CisgICAgUHlPYmplY3QgKmRpY3QsICppdDsKICAgICBfUHlfSURFTlRJRklFUihfX2RpY3RfXyk7CiAKICAgICBkaWN0ID0gX1B5T2JqZWN0X0dldEF0dHJJZCgoUHlPYmplY3QgKilkZXF1ZSwgJlB5SWRfX19kaWN0X18pOwotICAgIGlmIChkaWN0ID09IE5VTEwpCisgICAgaWYgKGRpY3QgPT0gTlVMTCkgeworICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQogICAgICAgICBQeUVycl9DbGVhcigpOwotICAgIGFzbGlzdCA9IFB5U2VxdWVuY2VfTGlzdCgoUHlPYmplY3QgKilkZXF1ZSk7Ci0gICAgaWYgKGFzbGlzdCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X1hERUNSRUYoZGljdCk7CisgICAgICAgIGRpY3QgPSBQeV9Ob25lOworICAgICAgICBQeV9JTkNSRUYoZGljdCk7CisgICAgfQorCisgICAgaXQgPSBQeU9iamVjdF9HZXRJdGVyKChQeU9iamVjdCAqKWRlcXVlKTsKKyAgICBpZiAoaXQgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoZGljdCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoZGljdCA9PSBOVUxMKSB7Ci0gICAgICAgIGlmIChkZXF1ZS0+bWF4bGVuID09IC0xKQotICAgICAgICAgICAgcmVzdWx0ID0gUHlfQnVpbGRWYWx1ZSgiTyhPKSIsIFB5X1RZUEUoZGVxdWUpLCBhc2xpc3QpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQgPSBQeV9CdWlsZFZhbHVlKCJPKE9uKSIsIFB5X1RZUEUoZGVxdWUpLCBhc2xpc3QsIGRlcXVlLT5tYXhsZW4pOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChkZXF1ZS0+bWF4bGVuID09IC0xKQotICAgICAgICAgICAgcmVzdWx0ID0gUHlfQnVpbGRWYWx1ZSgiTyhPTylPIiwgUHlfVFlQRShkZXF1ZSksIGFzbGlzdCwgUHlfTm9uZSwgZGljdCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3VsdCA9IFB5X0J1aWxkVmFsdWUoIk8oT24pTyIsIFB5X1RZUEUoZGVxdWUpLCBhc2xpc3QsIGRlcXVlLT5tYXhsZW4sIGRpY3QpOworCisgICAgaWYgKGRlcXVlLT5tYXhsZW4gPCAwKSB7CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKClOTiIsIFB5X1RZUEUoZGVxdWUpLCBkaWN0LCBpdCk7CiAgICAgfQotICAgIFB5X1hERUNSRUYoZGljdCk7Ci0gICAgUHlfREVDUkVGKGFzbGlzdCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oKCluKU5OIiwgUHlfVFlQRShkZXF1ZSksIGRlcXVlLT5tYXhsZW4sIGRpY3QsIGl0KTsKKyAgICB9CiB9CiAKIFB5RG9jX1NUUlZBUihyZWR1Y2VfZG9jLCAiUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZy4iKTsKQEAgLTEzMjAsNyArMTM3OSw3IEBACiAgICAgICAgIFB5X1JlcHJMZWF2ZShkZXF1ZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoKChkZXF1ZW9iamVjdCAqKWRlcXVlKS0+bWF4bGVuICE9IC0xKQorICAgIGlmICgoKGRlcXVlb2JqZWN0ICopZGVxdWUpLT5tYXhsZW4gPj0gMCkKICAgICAgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoImRlcXVlKCVSLCBtYXhsZW49JXpkKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzbGlzdCwgKChkZXF1ZW9iamVjdCAqKWRlcXVlKS0+bWF4bGVuKTsKICAgICBlbHNlCkBAIC0xMzgxLDcgKzE0NDAsNyBAQAogICAgICAgICB9CiAgICAgICAgIFB5X0RFQ1JFRih4KTsKICAgICAgICAgUHlfREVDUkVGKHkpOwotICAgICAgICBpZiAoYiA9PSAtMSkKKyAgICAgICAgaWYgKGIgPCAwKQogICAgICAgICAgICAgZ290byBkb25lOwogICAgIH0KICAgICAvKiBXZSByZWFjaGVkIHRoZSBlbmQgb2Ygb25lIGRlcXVlIG9yIGJvdGggKi8KQEAgLTE0MTYsOCArMTQ3NSwxNCBAQAogICAgIFB5X3NzaXplX3QgbWF4bGVuID0gLTE7CiAgICAgY2hhciAqa3dsaXN0W10gPSB7Iml0ZXJhYmxlIiwgIm1heGxlbiIsIDB9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkYXJncywgInxPTzpkZXF1ZSIsIGt3bGlzdCwgJml0ZXJhYmxlLCAmbWF4bGVub2JqKSkKLSAgICAgICAgcmV0dXJuIC0xOworICAgIGlmIChrd2RhcmdzID09IE5VTEwpIHsKKyAgICAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZGVxdWUoKSIsIDAsIDIsICZpdGVyYWJsZSwgJm1heGxlbm9iaikpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkYXJncywgInxPTzpkZXF1ZSIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJml0ZXJhYmxlLCAmbWF4bGVub2JqKSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CiAgICAgaWYgKG1heGxlbm9iaiAhPSBOVUxMICYmIG1heGxlbm9iaiAhPSBQeV9Ob25lKSB7CiAgICAgICAgIG1heGxlbiA9IFB5TG9uZ19Bc1NzaXplX3QobWF4bGVub2JqKTsKICAgICAgICAgaWYgKG1heGxlbiA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQpAQCAtMTQ0Niw3ICsxNTExLDcgQEAKICAgICBQeV9zc2l6ZV90IGJsb2NrczsKIAogICAgIHJlcyA9IF9QeU9iamVjdF9TSVpFKFB5X1RZUEUoZGVxdWUpKTsKLSAgICBibG9ja3MgPSAoZGVxdWUtPmxlZnRpbmRleCArIFB5X1NJWkUoZGVxdWUpICsgQkxPQ0tMRU4gLSAxKSAvIEJMT0NLTEVOOworICAgIGJsb2NrcyA9IChzaXplX3QpKGRlcXVlLT5sZWZ0aW5kZXggKyBQeV9TSVpFKGRlcXVlKSArIEJMT0NLTEVOIC0gMSkgLyBCTE9DS0xFTjsKICAgICBhc3NlcnQoZGVxdWUtPmxlZnRpbmRleCArIFB5X1NJWkUoZGVxdWUpIC0gMSA9PQogICAgICAgICAgICAoYmxvY2tzIC0gMSkgKiBCTE9DS0xFTiArIGRlcXVlLT5yaWdodGluZGV4KTsKICAgICByZXMgKz0gYmxvY2tzICogc2l6ZW9mKGJsb2NrKTsKQEAgLTE0NjUsNyArMTUzMCw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogZGVxdWVfZ2V0X21heGxlbihkZXF1ZW9iamVjdCAqZGVxdWUpCiB7Ci0gICAgaWYgKGRlcXVlLT5tYXhsZW4gPT0gLTEpCisgICAgaWYgKGRlcXVlLT5tYXhsZW4gPCAwKQogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KGRlcXVlLT5tYXhsZW4pOwogfQpAQCAtMTgwNiw3ICsxODcxLDcgQEAKICAgICBpdGVtID0gaXQtPmItPmRhdGFbaXQtPmluZGV4XTsKICAgICBpdC0+aW5kZXgtLTsKICAgICBpdC0+Y291bnRlci0tOwotICAgIGlmIChpdC0+aW5kZXggPT0gLTEgJiYgaXQtPmNvdW50ZXIgPiAwKSB7CisgICAgaWYgKGl0LT5pbmRleCA8IDAgJiYgaXQtPmNvdW50ZXIgPiAwKSB7CiAgICAgICAgIENIRUNLX05PVF9FTkQoaXQtPmItPmxlZnRsaW5rKTsKICAgICAgICAgaXQtPmIgPSBpdC0+Yi0+bGVmdGxpbms7CiAgICAgICAgIGl0LT5pbmRleCA9IEJMT0NLTEVOIC0gMTsKQEAgLTE5ODAsNyArMjA0NSw3IEBACiAgICAgICAgIGFyZ3MgPSBQeVR1cGxlX1BhY2soMSwgZGQtPmRlZmF1bHRfZmFjdG9yeSk7CiAgICAgaWYgKGFyZ3MgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaXRlbXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCAqKWRkLCAmUHlJZF9pdGVtcywgIigpIik7CisgICAgaXRlbXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCAqKWRkLCAmUHlJZF9pdGVtcywgTlVMTCk7CiAgICAgaWYgKGl0ZW1zID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKGFyZ3MpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTIyMzUsMTMgKzIzMDAsMTUgQEAKIAogICAgICAgICAgICAgb2xkdmFsID0gX1B5RGljdF9HZXRJdGVtX0tub3duSGFzaChtYXBwaW5nLCBrZXksIGhhc2gpOwogICAgICAgICAgICAgaWYgKG9sZHZhbCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgaWYgKF9QeURpY3RfU2V0SXRlbV9Lbm93bkhhc2gobWFwcGluZywga2V5LCBvbmUsIGhhc2gpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgICAgICAgICAgaWYgKF9QeURpY3RfU2V0SXRlbV9Lbm93bkhhc2gobWFwcGluZywga2V5LCBvbmUsIGhhc2gpIDwgMCkKICAgICAgICAgICAgICAgICAgICAgZ290byBkb25lOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBuZXd2YWwgPSBQeU51bWJlcl9BZGQob2xkdmFsLCBvbmUpOwogICAgICAgICAgICAgICAgIGlmIChuZXd2YWwgPT0gTlVMTCkKICAgICAgICAgICAgICAgICAgICAgZ290byBkb25lOwotICAgICAgICAgICAgICAgIGlmIChfUHlEaWN0X1NldEl0ZW1fS25vd25IYXNoKG1hcHBpbmcsIGtleSwgbmV3dmFsLCBoYXNoKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5RGljdF9TZXRJdGVtX0tub3duSGFzaChtYXBwaW5nLCBrZXksIG5ld3ZhbCwgaGFzaCkgPCAwKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGRvbmU7CiAgICAgICAgICAgICAgICAgUHlfQ0xFQVIobmV3dmFsKTsKICAgICAgICAgICAgIH0KQEAgLTIyNjcsNyArMjMzNCw3IEBACiAgICAgICAgICAgICBQeV9ERUNSRUYob2xkdmFsKTsKICAgICAgICAgICAgIGlmIChuZXd2YWwgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRJdGVtKG1hcHBpbmcsIGtleSwgbmV3dmFsKSA9PSAtMSkKKyAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRJdGVtKG1hcHBpbmcsIGtleSwgbmV3dmFsKSA8IDApCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBQeV9DTEVBUihuZXd2YWwpOwogICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jc3YuYyBiL01vZHVsZXMvX2Nzdi5jCmluZGV4IGI0MjgyNzkuLjdhNzg1NDEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2Nzdi5jCisrKyBiL01vZHVsZXMvX2Nzdi5jCkBAIC02MCwxMCArNjAsMTAgQEAKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFF1b3RlU3R5bGUgc3R5bGU7Ci0gICAgY2hhciAqbmFtZTsKKyAgICBjb25zdCBjaGFyICpuYW1lOwogfSBTdHlsZURlc2M7CiAKLXN0YXRpYyBTdHlsZURlc2MgcXVvdGVfc3R5bGVzW10gPSB7CitzdGF0aWMgY29uc3QgU3R5bGVEZXNjIHF1b3RlX3N0eWxlc1tdID0gewogICAgIHsgUVVPVEVfTUlOSU1BTCwgICAgIlFVT1RFX01JTklNQUwiIH0sCiAgICAgeyBRVU9URV9BTEwsICAgICAgICAiUVVPVEVfQUxMIiB9LAogICAgIHsgUVVPVEVfTk9OTlVNRVJJQywgIlFVT1RFX05PTk5VTUVSSUMiIH0sCkBAIC0yODYsNyArMjg2LDcgQEAKIHN0YXRpYyBpbnQKIGRpYWxlY3RfY2hlY2tfcXVvdGluZyhpbnQgcXVvdGluZykKIHsKLSAgICBTdHlsZURlc2MgKnFzOworICAgIGNvbnN0IFN0eWxlRGVzYyAqcXM7CiAKICAgICBmb3IgKHFzID0gcXVvdGVfc3R5bGVzOyBxcy0+bmFtZTsgcXMrKykgewogICAgICAgICBpZiAoKGludClxcy0+c3R5bGUgPT0gcXVvdGluZykKQEAgLTUxOCwxNSArNTE4LDEzIEBACiBzdGF0aWMgUHlPYmplY3QgKgogX2NhbGxfZGlhbGVjdChQeU9iamVjdCAqZGlhbGVjdF9pbnN0LCBQeU9iamVjdCAqa3dhcmdzKQogewotICAgIFB5T2JqZWN0ICpjdG9yX2FyZ3M7Ci0gICAgUHlPYmplY3QgKmRpYWxlY3Q7Ci0KLSAgICBjdG9yX2FyZ3MgPSBQeV9CdWlsZFZhbHVlKGRpYWxlY3RfaW5zdCA/ICIoTykiIDogIigpIiwgZGlhbGVjdF9pbnN0KTsKLSAgICBpZiAoY3Rvcl9hcmdzID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGRpYWxlY3QgPSBQeU9iamVjdF9DYWxsKChQeU9iamVjdCAqKSZEaWFsZWN0X1R5cGUsIGN0b3JfYXJncywga3dhcmdzKTsKLSAgICBQeV9ERUNSRUYoY3Rvcl9hcmdzKTsKLSAgICByZXR1cm4gZGlhbGVjdDsKKyAgICBQeU9iamVjdCAqdHlwZSA9IChQeU9iamVjdCAqKSZEaWFsZWN0X1R5cGU7CisgICAgaWYgKGRpYWxlY3RfaW5zdCkgeworICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0Zhc3RDYWxsRGljdCh0eXBlLCAmZGlhbGVjdF9pbnN0LCAxLCBrd2FyZ3MpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIF9QeU9iamVjdF9GYXN0Q2FsbERpY3QodHlwZSwgTlVMTCwgMCwga3dhcmdzKTsKKyAgICB9CiB9CiAKIC8qCkBAIC0xNjQ4LDcgKzE2NDYsNyBAQAogUHlJbml0X19jc3Yodm9pZCkKIHsKICAgICBQeU9iamVjdCAqbW9kdWxlOwotICAgIFN0eWxlRGVzYyAqc3R5bGU7CisgICAgY29uc3QgU3R5bGVEZXNjICpzdHlsZTsKIAogICAgIGlmIChQeVR5cGVfUmVhZHkoJkRpYWxlY3RfVHlwZSkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9fY3R5cGVzLmMgYi9Nb2R1bGVzL19jdHlwZXMvX2N0eXBlcy5jCmluZGV4IGIzMmEwY2UuLmRmM2FlZGUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9fY3R5cGVzLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL19jdHlwZXMuYwpAQCAtMTExLDEyICsxMTEsNiBAQAogI2lmbmRlZiBJU19JTlRSRVNPVVJDRQogI2RlZmluZSBJU19JTlRSRVNPVVJDRSh4KSAoKChzaXplX3QpKHgpID4+IDE2KSA9PSAwKQogI2VuZGlmCi0jIGlmZGVmIF9XSU4zMl9XQ0UKLS8qIFVubGlrZSBkZXNrdG9wIFdpbmRvd3MsIFdpbkNFIGhhcyBib3RoIFcgYW5kIEEgdmFyaWFudHMgb2YKLSAgIEdldFByb2NBZGRyZXNzLCBidXQgdGhlIGRlZmF1bHQgVyB2ZXJzaW9uIGlzIG5vdCB3aGF0IHdlIHdhbnQgKi8KLSMgIHVuZGVmIEdldFByb2NBZGRyZXNzCi0jICBkZWZpbmUgR2V0UHJvY0FkZHJlc3MgR2V0UHJvY0FkZHJlc3NBCi0jIGVuZGlmCiAjZWxzZQogI2luY2x1ZGUgImN0eXBlc19kbGZjbi5oIgogI2VuZGlmCkBAIC00MzUsNyArNDI5LDcgQEAKICAgICByZXR1cm4gU3RydWN0VW5pb25UeXBlX25ldyh0eXBlLCBhcmdzLCBrd2RzLCAwKTsKIH0KIAotc3RhdGljIGNoYXIgZnJvbV9hZGRyZXNzX2RvY1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIGZyb21fYWRkcmVzc19kb2NbXSA9CiAiQy5mcm9tX2FkZHJlc3MoaW50ZWdlcikgLT4gQyBpbnN0YW5jZVxuYWNjZXNzIGEgQyBpbnN0YW5jZSBhdCB0aGUgc3BlY2lmaWVkIGFkZHJlc3MiOwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNDUzLDcgKzQ0Nyw3IEBACiAgICAgcmV0dXJuIFB5Q0RhdGFfQXRBZGRyZXNzKHR5cGUsIGJ1Zik7CiB9CiAKLXN0YXRpYyBjaGFyIGZyb21fYnVmZmVyX2RvY1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIGZyb21fYnVmZmVyX2RvY1tdID0KICJDLmZyb21fYnVmZmVyKG9iamVjdCwgb2Zmc2V0PTApIC0+IEMgaW5zdGFuY2VcbmNyZWF0ZSBhIEMgaW5zdGFuY2UgZnJvbSBhIHdyaXRlYWJsZSBidWZmZXIiOwogCiBzdGF0aWMgaW50CkBAIC01MjcsNyArNTIxLDcgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgY2hhciBmcm9tX2J1ZmZlcl9jb3B5X2RvY1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIGZyb21fYnVmZmVyX2NvcHlfZG9jW10gPQogIkMuZnJvbV9idWZmZXJfY29weShvYmplY3QsIG9mZnNldD0wKSAtPiBDIGluc3RhbmNlXG5jcmVhdGUgYSBDIGluc3RhbmNlIGZyb20gYSByZWFkYWJsZSBidWZmZXIiOwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNTcyLDcgKzU2Niw3IEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIGNoYXIgaW5fZGxsX2RvY1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIGluX2RsbF9kb2NbXSA9CiAiQy5pbl9kbGwoZGxsLCBuYW1lKSAtPiBDIGluc3RhbmNlXG5hY2Nlc3MgYSBDIGluc3RhbmNlIGluIGEgZGxsIjsKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTYyOSw3ICs2MjMsNyBAQAogICAgIHJldHVybiBQeUNEYXRhX0F0QWRkcmVzcyh0eXBlLCBhZGRyZXNzKTsKIH0KIAotc3RhdGljIGNoYXIgZnJvbV9wYXJhbV9kb2NbXSA9CitzdGF0aWMgY29uc3QgY2hhciBmcm9tX3BhcmFtX2RvY1tdID0KICJDb252ZXJ0IGEgUHl0aG9uIG9iamVjdCBpbnRvIGEgZnVuY3Rpb24gY2FsbCBwYXJhbWV0ZXIuIjsKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTE0OTQsNyArMTQ4OCw3IEBACiAKICovCiAKLXN0YXRpYyBjaGFyICpTSU1QTEVfVFlQRV9DSEFSUyA9ICJjYkJoSGlJbExkZnV6WnFRUFhPdj9nIjsKK3N0YXRpYyBjb25zdCBjaGFyIFNJTVBMRV9UWVBFX0NIQVJTW10gPSAiY2JCaEhpSWxMZGZ1elpxUVBYT3Y/ZyI7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBjX3djaGFyX3BfZnJvbV9wYXJhbShQeU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnZhbHVlKQpAQCAtMTczNSw3ICsxNzI5LDcgQEAKICAgICBpZiAoc3RnZCAmJiBDRGF0YU9iamVjdF9DaGVjayh2YWx1ZSkgJiYgc3RnZC0+cHJvdG8gJiYgUHlVbmljb2RlX0NoZWNrKHN0Z2QtPnByb3RvKSkgewogICAgICAgICBQeUNBcmdPYmplY3QgKnBhcmc7CiAKLSAgICAgICAgc3dpdGNoIChfUHlVbmljb2RlX0FzU3RyaW5nKHN0Z2QtPnByb3RvKVswXSkgeworICAgICAgICBzd2l0Y2ggKFB5VW5pY29kZV9Bc1VURjgoc3RnZC0+cHJvdG8pWzBdKSB7CiAgICAgICAgIGNhc2UgJ3onOiAvKiBjX2NoYXJfcCAqLwogICAgICAgICBjYXNlICdaJzogLyogY193Y2hhcl9wICovCiAgICAgICAgICAgICBwYXJnID0gUHlDQXJnT2JqZWN0X25ldygpOwpAQCAtMTg0Nyw3ICsxODQxLDcgQEAKIAogICAgIGRpY3QgPSBQeU9iamVjdF9zdGdkaWN0KChQeU9iamVjdCAqKXNlbGYpOwogICAgIGFzc2VydChkaWN0KTsgLyogQ2Fubm90IGJlIE5VTEwgZm9yIENEYXRhT2JqZWN0IGluc3RhbmNlcyAqLwotICAgIGZtdCA9IF9QeVVuaWNvZGVfQXNTdHJpbmcoZGljdC0+cHJvdG8pOworICAgIGZtdCA9IFB5VW5pY29kZV9Bc1VURjgoZGljdC0+cHJvdG8pOwogICAgIGFzc2VydChmbXQpOwogCiAgICAgZmQgPSBfY3R5cGVzX2dldF9maWVsZGRlc2MoZm10KTsKQEAgLTIwNzEsNyArMjA2NSw3IEBACiAgICAgYXNzZXJ0KGRpY3QpOwogCiAgICAgLyogSSB0aGluayB3ZSBjYW4gcmVseSBvbiB0aGlzIGJlaW5nIGEgb25lLWNoYXJhY3RlciBzdHJpbmcgKi8KLSAgICBmbXQgPSBfUHlVbmljb2RlX0FzU3RyaW5nKGRpY3QtPnByb3RvKTsKKyAgICBmbXQgPSBQeVVuaWNvZGVfQXNVVEY4KGRpY3QtPnByb3RvKTsKICAgICBhc3NlcnQoZm10KTsKIAogICAgIGZkID0gX2N0eXBlc19nZXRfZmllbGRkZXNjKGZtdCk7CkBAIC0yNDE5LDcgKzI0MTMsNyBAQAogICAgIGNoYXIgKmNwID0gc3RyaW5nOwogICAgIHNpemVfdCBieXRlc19sZWZ0OwogCi0gICAgYXNzZXJ0KHNpemVvZihzdHJpbmcpIC0gMSA+IHNpemVvZihQeV9zc2l6ZV90KSAqIDIpOworICAgIFB5X0JVSUxEX0FTU0VSVChzaXplb2Yoc3RyaW5nKSAtIDEgPiBzaXplb2YoUHlfc3NpemVfdCkgKiAyKTsKICAgICBjcCArPSBzcHJpbnRmKGNwLCAiJXgiLCBQeV9TQUZFX0RPV05DQVNUKGluZGV4LCBQeV9zc2l6ZV90LCBpbnQpKTsKICAgICB3aGlsZSAodGFyZ2V0LT5iX2Jhc2UpIHsKICAgICAgICAgYnl0ZXNfbGVmdCA9IHNpemVvZihzdHJpbmcpIC0gKGNwIC0gc3RyaW5nKSAtIDE7CkBAIC0zMDgwLDcgKzMwNzQsNyBAQAogfTsKIAogI2lmZGVmIE1TX1dJTjMyCi1zdGF0aWMgUFBST0MgRmluZEFkZHJlc3Modm9pZCAqaGFuZGxlLCBjaGFyICpuYW1lLCBQeU9iamVjdCAqdHlwZSkKK3N0YXRpYyBQUFJPQyBGaW5kQWRkcmVzcyh2b2lkICpoYW5kbGUsIGNvbnN0IGNoYXIgKm5hbWUsIFB5T2JqZWN0ICp0eXBlKQogewogI2lmZGVmIE1TX1dJTjY0CiAgICAgLyogd2luNjQgaGFzIG5vIHN0ZGNhbGwgY2FsbGluZyBjb252LCBzbyBpdCBzaG91bGQKQEAgLTMxNDAsNyArMzEzNCw3IEBACiAgICAgICAgIC8qIHNpbXBsZSBwb2ludGVyIHR5cGVzLCBjX3ZvaWRfcCwgY193Y2hhcl9wLCBCU1RSLCAuLi4gKi8KICAgICAgICAgJiYgUHlVbmljb2RlX0NoZWNrKGRpY3QtPnByb3RvKQogLyogV2Ugb25seSBhbGxvdyBjX3ZvaWRfcCwgY19jaGFyX3AgYW5kIGNfd2NoYXJfcCBhcyBhIHNpbXBsZSBvdXRwdXQgcGFyYW1ldGVyIHR5cGUgKi8KLSAgICAgICAgJiYgKHN0cmNocigiUHpaIiwgX1B5VW5pY29kZV9Bc1N0cmluZyhkaWN0LT5wcm90bylbMF0pKSkgeworICAgICAgICAmJiAoc3RyY2hyKCJQeloiLCBQeVVuaWNvZGVfQXNVVEY4KGRpY3QtPnByb3RvKVswXSkpKSB7CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KIApAQCAtMzIxNCw3ICszMjA4LDcgQEAKIH0KIAogc3RhdGljIGludAotX2dldF9uYW1lKFB5T2JqZWN0ICpvYmosIGNoYXIgKipwbmFtZSkKK19nZXRfbmFtZShQeU9iamVjdCAqb2JqLCBjb25zdCBjaGFyICoqcG5hbWUpCiB7CiAjaWZkZWYgTVNfV0lOMzIKICAgICBpZiAoUHlMb25nX0NoZWNrKG9iaikpIHsKQEAgLTMyMzAsNyArMzIyNCw3IEBACiAgICAgICAgIHJldHVybiAqcG5hbWUgPyAxIDogMDsKICAgICB9CiAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhvYmopKSB7Ci0gICAgICAgICpwbmFtZSA9IF9QeVVuaWNvZGVfQXNTdHJpbmcob2JqKTsKKyAgICAgICAgKnBuYW1lID0gUHlVbmljb2RlX0FzVVRGOChvYmopOwogICAgICAgICByZXR1cm4gKnBuYW1lID8gMSA6IDA7CiAgICAgfQogICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCkBAIC0zMjQyLDcgKzMyMzYsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIFB5Q0Z1bmNQdHJfRnJvbURsbChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBjaGFyICpuYW1lOworICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICAgaW50ICgqIGFkZHJlc3MpKHZvaWQpOwogICAgIFB5T2JqZWN0ICpmdHVwbGU7CiAgICAgUHlPYmplY3QgKmRsbDsKQEAgLTUxMzIsMTMgKzUxMjYsMTIgQEAKIAogI2lmZGVmIE1TX1dJTjMyCiAKLXN0YXRpYyBjaGFyIGNvbWVycm9yX2RvY1tdID0gIlJhaXNlZCB3aGVuIGEgQ09NIG1ldGhvZCBjYWxsIGZhaWxlZC4iOworc3RhdGljIGNvbnN0IGNoYXIgY29tZXJyb3JfZG9jW10gPSAiUmFpc2VkIHdoZW4gYSBDT00gbWV0aG9kIGNhbGwgZmFpbGVkLiI7CiAKIGludAogY29tZXJyb3JfaW5pdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewogICAgIFB5T2JqZWN0ICpocmVzdWx0LCAqdGV4dCwgKmRldGFpbHM7Ci0gICAgUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICpic2VsZjsKICAgICBQeU9iamVjdCAqYTsKICAgICBpbnQgc3RhdHVzOwogCkBAIC01MTY1LDkgKzUxNTgsOCBAQAogICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHNlbGYsICJkZXRhaWxzIiwgZGV0YWlscykgPCAwKQogICAgICAgICByZXR1cm4gLTE7CiAKLSAgICBic2VsZiA9IChQeUJhc2VFeGNlcHRpb25PYmplY3QgKilzZWxmOwogICAgIFB5X0lOQ1JFRihhcmdzKTsKLSAgICBQeV9TRVRSRUYoYnNlbGYtPmFyZ3MsIGFyZ3MpOworICAgIFB5X1NFVFJFRigoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYpLT5hcmdzLCBhcmdzKTsKIAogICAgIHJldHVybiAwOwogfQpAQCAtNTI0Nyw3ICs1MjM5LDcgQEAKICAgICBkaWN0ID0gUHlUeXBlX3N0Z2RpY3QoYXJnKTsKICAgICBpZiAoZGljdCkgewogICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGRpY3QtPnByb3RvKQotICAgICAgICAgICAgJiYgKHN0cmNocigic1B6VVpYTyIsIF9QeVVuaWNvZGVfQXNTdHJpbmcoZGljdC0+cHJvdG8pWzBdKSkpIHsKKyAgICAgICAgICAgICYmIChzdHJjaHIoInNQelVaWE8iLCBQeVVuaWNvZGVfQXNVVEY4KGRpY3QtPnByb3RvKVswXSkpKSB7CiAgICAgICAgICAgICAvKiBzaW1wbGUgcG9pbnRlciB0eXBlcywgY192b2lkX3AsIGNfd2NoYXJfcCwgQlNUUiwgLi4uICovCiAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQpAQCAtNTQ5NywxNCArNTQ4OSwxNCBAQAogI2VuZGlmCiAKIC8qIElmIFJUTERfTE9DQUwgaXMgbm90IGRlZmluZWQgKFdpbmRvd3MhKSwgc2V0IGl0IHRvIHplcm8uICovCi0jaWZuZGVmIFJUTERfTE9DQUwKKyNpZiAhSEFWRV9ERUNMX1JUTERfTE9DQUwKICNkZWZpbmUgUlRMRF9MT0NBTCAwCiAjZW5kaWYKIAogLyogSWYgUlRMRF9HTE9CQUwgaXMgbm90IGRlZmluZWQgKGN5Z3dpbiksIHNldCBpdCB0byB0aGUgc2FtZSB2YWx1ZSBhcwogICAgUlRMRF9MT0NBTC4KICovCi0jaWZuZGVmIFJUTERfR0xPQkFMCisjaWYgIUhBVkVfREVDTF9SVExEX0dMT0JBTAogI2RlZmluZSBSVExEX0dMT0JBTCBSVExEX0xPQ0FMCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL19jdHlwZXNfdGVzdC5jIGIvTW9kdWxlcy9fY3R5cGVzL19jdHlwZXNfdGVzdC5jCmluZGV4IDNjN2Y4OTIuLjYyOWRkZjYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9fY3R5cGVzX3Rlc3QuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvX2N0eXBlc190ZXN0LmMKQEAgLTIzMywxNiArMjMzLDE1IEBACiAgICAgcmV0dXJuICgqZnVuYykodGFibGUpOwogfQogCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLUVYUE9SVChQWV9MT05HX0xPTkcpIF90ZXN0ZnVuY19xX2JoaWxmZHEoc2lnbmVkIGNoYXIgYiwgc2hvcnQgaCwgaW50IGksIGxvbmcgbCwgZmxvYXQgZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgZCwgUFlfTE9OR19MT05HIHEpCitFWFBPUlQobG9uZyBsb25nKSBfdGVzdGZ1bmNfcV9iaGlsZmRxKHNpZ25lZCBjaGFyIGIsIHNob3J0IGgsIGludCBpLCBsb25nIGwsIGZsb2F0IGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBkLCBsb25nIGxvbmcgcSkKIHsKLSAgICByZXR1cm4gKFBZX0xPTkdfTE9ORykoYiArIGggKyBpICsgbCArIGYgKyBkICsgcSk7CisgICAgcmV0dXJuIChsb25nIGxvbmcpKGIgKyBoICsgaSArIGwgKyBmICsgZCArIHEpOwogfQogCi1FWFBPUlQoUFlfTE9OR19MT05HKSBfdGVzdGZ1bmNfcV9iaGlsZmQoc2lnbmVkIGNoYXIgYiwgc2hvcnQgaCwgaW50IGksIGxvbmcgbCwgZmxvYXQgZiwgZG91YmxlIGQpCitFWFBPUlQobG9uZyBsb25nKSBfdGVzdGZ1bmNfcV9iaGlsZmQoc2lnbmVkIGNoYXIgYiwgc2hvcnQgaCwgaW50IGksIGxvbmcgbCwgZmxvYXQgZiwgZG91YmxlIGQpCiB7Ci0gICAgcmV0dXJuIChQWV9MT05HX0xPTkcpKGIgKyBoICsgaSArIGwgKyBmICsgZCk7CisgICAgcmV0dXJuIChsb25nIGxvbmcpKGIgKyBoICsgaSArIGwgKyBmICsgZCk7CiB9CiAKIEVYUE9SVChpbnQpIF90ZXN0ZnVuY19jYWxsYmFja19pX2lmKGludCB2YWx1ZSwgaW50ICgqZnVuYykoaW50KSkKQEAgLTI1NSwxMCArMjU0LDEwIEBACiAgICAgcmV0dXJuIHN1bTsKIH0KIAotRVhQT1JUKFBZX0xPTkdfTE9ORykgX3Rlc3RmdW5jX2NhbGxiYWNrX3FfcWYoUFlfTE9OR19MT05HIHZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFlfTE9OR19MT05HICgqZnVuYykoUFlfTE9OR19MT05HKSkKK0VYUE9SVChsb25nIGxvbmcpIF90ZXN0ZnVuY19jYWxsYmFja19xX3FmKGxvbmcgbG9uZyB2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyAoKmZ1bmMpKGxvbmcgbG9uZykpCiB7Ci0gICAgUFlfTE9OR19MT05HIHN1bSA9IDA7CisgICAgbG9uZyBsb25nIHN1bSA9IDA7CiAKICAgICB3aGlsZSAodmFsdWUgIT0gMCkgewogICAgICAgICBzdW0gKz0gZnVuYyh2YWx1ZSk7CkBAIC0yNjcsOCArMjY2LDYgQEAKICAgICByZXR1cm4gc3VtOwogfQogCi0jZW5kaWYKLQogdHlwZWRlZiBzdHJ1Y3QgewogICAgIGNoYXIgKm5hbWU7CiAgICAgY2hhciAqdmFsdWU7CkBAIC0zODQsOCArMzgxLDggQEAKIHsKIH0KIAotRVhQT1JUKFBZX0xPTkdfTE9ORykgbGFzdF90Zl9hcmdfczsKLUVYUE9SVCh1bnNpZ25lZCBQWV9MT05HX0xPTkcpIGxhc3RfdGZfYXJnX3U7CitFWFBPUlQobG9uZyBsb25nKSBsYXN0X3RmX2FyZ19zOworRVhQT1JUKHVuc2lnbmVkIGxvbmcgbG9uZykgbGFzdF90Zl9hcmdfdTsKIAogc3RydWN0IEJJVFMgewogICAgIGludCBBOiAxLCBCOjIsIEM6MywgRDo0LCBFOiA1LCBGOiA2LCBHOiA3LCBIOiA4LCBJOiA5OwpAQCAtNDQ4LDggKzQ0NSw4IEBACiAgICAgeyBOVUxMLCBOVUxMLCAwLCBOVUxMfSwKIH07CiAKLSNkZWZpbmUgUyBsYXN0X3RmX2FyZ19zID0gKFBZX0xPTkdfTE9ORyljCi0jZGVmaW5lIFUgbGFzdF90Zl9hcmdfdSA9ICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpYworI2RlZmluZSBTIGxhc3RfdGZfYXJnX3MgPSAobG9uZyBsb25nKWMKKyNkZWZpbmUgVSBsYXN0X3RmX2FyZ191ID0gKHVuc2lnbmVkIGxvbmcgbG9uZyljCiAKIEVYUE9SVChzaWduZWQgY2hhcikgdGZfYihzaWduZWQgY2hhciBjKSB7IFM7IHJldHVybiBjLzM7IH0KIEVYUE9SVCh1bnNpZ25lZCBjaGFyKSB0Zl9CKHVuc2lnbmVkIGNoYXIgYykgeyBVOyByZXR1cm4gYy8zOyB9CkBAIC00NTksOCArNDU2LDggQEAKIEVYUE9SVCh1bnNpZ25lZCBpbnQpIHRmX0kodW5zaWduZWQgaW50IGMpIHsgVTsgcmV0dXJuIGMvMzsgfQogRVhQT1JUKGxvbmcpIHRmX2wobG9uZyBjKSB7IFM7IHJldHVybiBjLzM7IH0KIEVYUE9SVCh1bnNpZ25lZCBsb25nKSB0Zl9MKHVuc2lnbmVkIGxvbmcgYykgeyBVOyByZXR1cm4gYy8zOyB9Ci1FWFBPUlQoUFlfTE9OR19MT05HKSB0Zl9xKFBZX0xPTkdfTE9ORyBjKSB7IFM7IHJldHVybiBjLzM7IH0KLUVYUE9SVCh1bnNpZ25lZCBQWV9MT05HX0xPTkcpIHRmX1EodW5zaWduZWQgUFlfTE9OR19MT05HIGMpIHsgVTsgcmV0dXJuIGMvMzsgfQorRVhQT1JUKGxvbmcgbG9uZykgdGZfcShsb25nIGxvbmcgYykgeyBTOyByZXR1cm4gYy8zOyB9CitFWFBPUlQodW5zaWduZWQgbG9uZyBsb25nKSB0Zl9RKHVuc2lnbmVkIGxvbmcgbG9uZyBjKSB7IFU7IHJldHVybiBjLzM7IH0KIEVYUE9SVChmbG9hdCkgdGZfZihmbG9hdCBjKSB7IFM7IHJldHVybiBjLzM7IH0KIEVYUE9SVChkb3VibGUpIHRmX2QoZG91YmxlIGMpIHsgUzsgcmV0dXJuIGMvMzsgfQogRVhQT1JUKGxvbmcgZG91YmxlKSB0Zl9EKGxvbmcgZG91YmxlIGMpIHsgUzsgcmV0dXJuIGMvMzsgfQpAQCAtNDc0LDggKzQ3MSw4IEBACiBFWFBPUlQodW5zaWduZWQgaW50KSBfX3N0ZGNhbGwgc190Zl9JKHVuc2lnbmVkIGludCBjKSB7IFU7IHJldHVybiBjLzM7IH0KIEVYUE9SVChsb25nKSBfX3N0ZGNhbGwgc190Zl9sKGxvbmcgYykgeyBTOyByZXR1cm4gYy8zOyB9CiBFWFBPUlQodW5zaWduZWQgbG9uZykgX19zdGRjYWxsIHNfdGZfTCh1bnNpZ25lZCBsb25nIGMpIHsgVTsgcmV0dXJuIGMvMzsgfQotRVhQT1JUKFBZX0xPTkdfTE9ORykgX19zdGRjYWxsIHNfdGZfcShQWV9MT05HX0xPTkcgYykgeyBTOyByZXR1cm4gYy8zOyB9Ci1FWFBPUlQodW5zaWduZWQgUFlfTE9OR19MT05HKSBfX3N0ZGNhbGwgc190Zl9RKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBjKSB7IFU7IHJldHVybiBjLzM7IH0KK0VYUE9SVChsb25nIGxvbmcpIF9fc3RkY2FsbCBzX3RmX3EobG9uZyBsb25nIGMpIHsgUzsgcmV0dXJuIGMvMzsgfQorRVhQT1JUKHVuc2lnbmVkIGxvbmcgbG9uZykgX19zdGRjYWxsIHNfdGZfUSh1bnNpZ25lZCBsb25nIGxvbmcgYykgeyBVOyByZXR1cm4gYy8zOyB9CiBFWFBPUlQoZmxvYXQpIF9fc3RkY2FsbCBzX3RmX2YoZmxvYXQgYykgeyBTOyByZXR1cm4gYy8zOyB9CiBFWFBPUlQoZG91YmxlKSBfX3N0ZGNhbGwgc190Zl9kKGRvdWJsZSBjKSB7IFM7IHJldHVybiBjLzM7IH0KIEVYUE9SVChsb25nIGRvdWJsZSkgX19zdGRjYWxsIHNfdGZfRChsb25nIGRvdWJsZSBjKSB7IFM7IHJldHVybiBjLzM7IH0KQEAgLTQ5MCw4ICs0ODcsOCBAQAogRVhQT1JUKHVuc2lnbmVkIGludCkgdGZfYkkoc2lnbmVkIGNoYXIgeCwgdW5zaWduZWQgaW50IGMpIHsgVTsgcmV0dXJuIGMvMzsgfQogRVhQT1JUKGxvbmcpIHRmX2JsKHNpZ25lZCBjaGFyIHgsIGxvbmcgYykgeyBTOyByZXR1cm4gYy8zOyB9CiBFWFBPUlQodW5zaWduZWQgbG9uZykgdGZfYkwoc2lnbmVkIGNoYXIgeCwgdW5zaWduZWQgbG9uZyBjKSB7IFU7IHJldHVybiBjLzM7IH0KLUVYUE9SVChQWV9MT05HX0xPTkcpIHRmX2JxKHNpZ25lZCBjaGFyIHgsIFBZX0xPTkdfTE9ORyBjKSB7IFM7IHJldHVybiBjLzM7IH0KLUVYUE9SVCh1bnNpZ25lZCBQWV9MT05HX0xPTkcpIHRmX2JRKHNpZ25lZCBjaGFyIHgsIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBjKSB7IFU7IHJldHVybiBjLzM7IH0KK0VYUE9SVChsb25nIGxvbmcpIHRmX2JxKHNpZ25lZCBjaGFyIHgsIGxvbmcgbG9uZyBjKSB7IFM7IHJldHVybiBjLzM7IH0KK0VYUE9SVCh1bnNpZ25lZCBsb25nIGxvbmcpIHRmX2JRKHNpZ25lZCBjaGFyIHgsIHVuc2lnbmVkIGxvbmcgbG9uZyBjKSB7IFU7IHJldHVybiBjLzM7IH0KIEVYUE9SVChmbG9hdCkgdGZfYmYoc2lnbmVkIGNoYXIgeCwgZmxvYXQgYykgeyBTOyByZXR1cm4gYy8zOyB9CiBFWFBPUlQoZG91YmxlKSB0Zl9iZChzaWduZWQgY2hhciB4LCBkb3VibGUgYykgeyBTOyByZXR1cm4gYy8zOyB9CiBFWFBPUlQobG9uZyBkb3VibGUpIHRmX2JEKHNpZ25lZCBjaGFyIHgsIGxvbmcgZG91YmxlIGMpIHsgUzsgcmV0dXJuIGMvMzsgfQpAQCAtNTA2LDggKzUwMyw4IEBACiBFWFBPUlQodW5zaWduZWQgaW50KSBfX3N0ZGNhbGwgc190Zl9iSShzaWduZWQgY2hhciB4LCB1bnNpZ25lZCBpbnQgYykgeyBVOyByZXR1cm4gYy8zOyB9CiBFWFBPUlQobG9uZykgX19zdGRjYWxsIHNfdGZfYmwoc2lnbmVkIGNoYXIgeCwgbG9uZyBjKSB7IFM7IHJldHVybiBjLzM7IH0KIEVYUE9SVCh1bnNpZ25lZCBsb25nKSBfX3N0ZGNhbGwgc190Zl9iTChzaWduZWQgY2hhciB4LCB1bnNpZ25lZCBsb25nIGMpIHsgVTsgcmV0dXJuIGMvMzsgfQotRVhQT1JUKFBZX0xPTkdfTE9ORykgX19zdGRjYWxsIHNfdGZfYnEoc2lnbmVkIGNoYXIgeCwgUFlfTE9OR19MT05HIGMpIHsgUzsgcmV0dXJuIGMvMzsgfQotRVhQT1JUKHVuc2lnbmVkIFBZX0xPTkdfTE9ORykgX19zdGRjYWxsIHNfdGZfYlEoc2lnbmVkIGNoYXIgeCwgdW5zaWduZWQgUFlfTE9OR19MT05HIGMpIHsgVTsgcmV0dXJuIGMvMzsgfQorRVhQT1JUKGxvbmcgbG9uZykgX19zdGRjYWxsIHNfdGZfYnEoc2lnbmVkIGNoYXIgeCwgbG9uZyBsb25nIGMpIHsgUzsgcmV0dXJuIGMvMzsgfQorRVhQT1JUKHVuc2lnbmVkIGxvbmcgbG9uZykgX19zdGRjYWxsIHNfdGZfYlEoc2lnbmVkIGNoYXIgeCwgdW5zaWduZWQgbG9uZyBsb25nIGMpIHsgVTsgcmV0dXJuIGMvMzsgfQogRVhQT1JUKGZsb2F0KSBfX3N0ZGNhbGwgc190Zl9iZihzaWduZWQgY2hhciB4LCBmbG9hdCBjKSB7IFM7IHJldHVybiBjLzM7IH0KIEVYUE9SVChkb3VibGUpIF9fc3RkY2FsbCBzX3RmX2JkKHNpZ25lZCBjaGFyIHgsIGRvdWJsZSBjKSB7IFM7IHJldHVybiBjLzM7IH0KIEVYUE9SVChsb25nIGRvdWJsZSkgX19zdGRjYWxsIHNfdGZfYkQoc2lnbmVkIGNoYXIgeCwgbG9uZyBkb3VibGUgYykgeyBTOyByZXR1cm4gYy8zOyB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvY2FsbGJhY2tzLmMgYi9Nb2R1bGVzL19jdHlwZXMvY2FsbGJhY2tzLmMKaW5kZXggOTE0MTNkNy4uYjk1OGYzMCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2NhbGxiYWNrcy5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9jYWxsYmFja3MuYwpAQCAtNzcsNyArNzcsNyBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiBzdGF0aWMgdm9pZAotUHJpbnRFcnJvcihjaGFyICptc2csIC4uLikKK1ByaW50RXJyb3IoY29uc3QgY2hhciAqbXNnLCAuLi4pCiB7CiAgICAgY2hhciBidWZbNTEyXTsKICAgICBQeU9iamVjdCAqZiA9IFB5U3lzX0dldE9iamVjdCgic3RkZXJyIik7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvY2FsbHByb2MuYyBiL01vZHVsZXMvX2N0eXBlcy9jYWxscHJvYy5jCmluZGV4IGFiZDNiYzkuLjdkNTQyZmIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9jYWxscHJvYy5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9jYWxscHJvYy5jCkBAIC0zODIsNyArMzgyLDcgQEAKICAgICAgICAgICAgd2hvc2Ugb3BlcmF0aW9uIGlzIG5vdCBhbGxvd2VkIGluIHRoZSBjdXJyZW50CiAgICAgICAgICAgIG1hY2hpbmUgbW9kZS4gKi8KICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiZXhjZXB0aW9uOiBwcml2aWxlZGdlZCBpbnN0cnVjdGlvbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgImV4Y2VwdGlvbjogcHJpdmlsZWdlZCBpbnN0cnVjdGlvbiIpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgRVhDRVBUSU9OX05PTkNPTlRJTlVBQkxFX0VYQ0VQVElPTjoKQEAgLTQ3NCw3ICs0NzQsNiBAQAogICAgICAgICAgICAgc2VsZi0+dGFnLCBzZWxmLT52YWx1ZS5sKTsKICAgICAgICAgYnJlYWs7CiAKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwogICAgIGNhc2UgJ3EnOgogICAgIGNhc2UgJ1EnOgogICAgICAgICBzcHJpbnRmKGJ1ZmZlciwKQEAgLTQ4NSw3ICs0ODQsNiBAQAogI2VuZGlmCiAgICAgICAgICAgICBzZWxmLT50YWcsIHNlbGYtPnZhbHVlLnEpOwogICAgICAgICBicmVhazsKLSNlbmRpZgogICAgIGNhc2UgJ2QnOgogICAgICAgICBzcHJpbnRmKGJ1ZmZlciwgIjxjcGFyYW0gJyVjJyAoJWYpPiIsCiAgICAgICAgICAgICBzZWxmLT50YWcsIHNlbGYtPnZhbHVlLmQpOwpAQCAtNTkzLDkgKzU5MSw3IEBACiAgICAgc2hvcnQgaDsKICAgICBpbnQgaTsKICAgICBsb25nIGw7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICBQWV9MT05HX0xPTkcgcTsKLSNlbmRpZgorICAgIGxvbmcgbG9uZyBxOwogICAgIGxvbmcgZG91YmxlIEQ7CiAgICAgZG91YmxlIGQ7CiAgICAgZmxvYXQgZjsKQEAgLTkzMCw3ICs5MjYsNyBAQAogICogUmFpc2UgYSBuZXcgZXhjZXB0aW9uICdleGNfY2xhc3MnLCBhZGRpbmcgYWRkaXRpb25hbCB0ZXh0IHRvIHRoZSBvcmlnaW5hbAogICogZXhjZXB0aW9uIHN0cmluZy4KICAqLwotdm9pZCBfY3R5cGVzX2V4dGVuZF9lcnJvcihQeU9iamVjdCAqZXhjX2NsYXNzLCBjaGFyICpmbXQsIC4uLikKK3ZvaWQgX2N0eXBlc19leHRlbmRfZXJyb3IoUHlPYmplY3QgKmV4Y19jbGFzcywgY29uc3QgY2hhciAqZm10LCAuLi4pCiB7CiAgICAgdmFfbGlzdCB2YXJnczsKICAgICBQeU9iamVjdCAqdHAsICp2LCAqdGIsICpzLCAqY2xzX3N0ciwgKm1zZ19zdHI7CkBAIC0xMjAzLDcgKzExOTksNyBAQAogCiAjaWZkZWYgTVNfV0lOMzIKIAotc3RhdGljIGNoYXIgZm9ybWF0X2Vycm9yX2RvY1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIGZvcm1hdF9lcnJvcl9kb2NbXSA9CiAiRm9ybWF0RXJyb3IoW2ludGVnZXJdKSAtPiBzdHJpbmdcblwKIFxuXAogQ29udmVydCBhIHdpbjMyIGVycm9yIGNvZGUgaW50byBhIHN0cmluZy4gSWYgdGhlIGVycm9yIGNvZGUgaXMgbm90XG5cCkBAIC0xMjI3LDcgKzEyMjMsNyBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBjaGFyIGxvYWRfbGlicmFyeV9kb2NbXSA9CitzdGF0aWMgY29uc3QgY2hhciBsb2FkX2xpYnJhcnlfZG9jW10gPQogIkxvYWRMaWJyYXJ5KG5hbWUpIC0+IGhhbmRsZVxuXAogXG5cCiBMb2FkIGFuIGV4ZWN1dGFibGUgKHVzdWFsbHkgYSBETEwpLCBhbmQgcmV0dXJuIGEgaGFuZGxlIHRvIGl0LlxuXApAQCAtMTI1Niw3ICsxMjUyLDcgQEAKICNlbmRpZgogfQogCi1zdGF0aWMgY2hhciBmcmVlX2xpYnJhcnlfZG9jW10gPQorc3RhdGljIGNvbnN0IGNoYXIgZnJlZV9saWJyYXJ5X2RvY1tdID0KICJGcmVlTGlicmFyeShoYW5kbGUpIC0+IHZvaWRcblwKIFxuXAogRnJlZSB0aGUgaGFuZGxlIG9mIGFuIGV4ZWN1dGFibGUgcHJldmlvdXNseSBsb2FkZWQgYnkgTG9hZExpYnJhcnkuXG4iOwpAQCAtMTI3MSw3ICsxMjY3LDcgQEAKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KIAotc3RhdGljIGNoYXIgY29weV9jb21fcG9pbnRlcl9kb2NbXSA9CitzdGF0aWMgY29uc3QgY2hhciBjb3B5X2NvbV9wb2ludGVyX2RvY1tdID0KICJDb3B5Q29tUG9pbnRlcihzcmMsIGRzdCkgLT4gSFJFU1VMVCB2YWx1ZVxuIjsKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTEzMDksNyArMTMwNSw3IEBACiAgICAgUHlPYmplY3QgKm5hbWUsICpuYW1lMjsKICAgICBjaGFyICpuYW1lX3N0cjsKICAgICB2b2lkICogaGFuZGxlOwotI2lmZGVmIFJUTERfTE9DQUwKKyNpZiBIQVZFX0RFQ0xfUlRMRF9MT0NBTAogICAgIGludCBtb2RlID0gUlRMRF9OT1cgfCBSVExEX0xPQ0FMOwogI2Vsc2UKICAgICAvKiBjeWd3aW4gZG9lc24ndCBkZWZpbmUgUlRMRF9MT0NBTCAqLwpAQCAtMTQ0MSw3ICsxNDM3LDcgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogZnVuY3Rpb25zCiAgKi8KLXN0YXRpYyBjaGFyIHNpemVvZl9kb2NbXSA9CitzdGF0aWMgY29uc3QgY2hhciBzaXplb2ZfZG9jW10gPQogInNpemVvZihDIHR5cGUpIC0+IGludGVnZXJcbiIKICJzaXplb2YoQyBpbnN0YW5jZSkgLT4gaW50ZWdlclxuIgogIlJldHVybiB0aGUgc2l6ZSBpbiBieXRlcyBvZiBhIEMgaW5zdGFuY2UiOwpAQCAtMTQ2Miw3ICsxNDU4LDcgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotc3RhdGljIGNoYXIgYWxpZ25tZW50X2RvY1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIGFsaWdubWVudF9kb2NbXSA9CiAiYWxpZ25tZW50KEMgdHlwZSkgLT4gaW50ZWdlclxuIgogImFsaWdubWVudChDIGluc3RhbmNlKSAtPiBpbnRlZ2VyXG4iCiAiUmV0dXJuIHRoZSBhbGlnbm1lbnQgcmVxdWlyZW1lbnRzIG9mIGEgQyBpbnN0YW5jZSI7CkBAIC0xNDg1LDcgKzE0ODEsNyBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi1zdGF0aWMgY2hhciBieXJlZl9kb2NbXSA9CitzdGF0aWMgY29uc3QgY2hhciBieXJlZl9kb2NbXSA9CiAiYnlyZWYoQyBpbnN0YW5jZVssIG9mZnNldD0wXSkgLT4gYnlyZWYtb2JqZWN0XG4iCiAiUmV0dXJuIGEgcG9pbnRlciBsb29rYWxpa2UgdG8gYSBDIGluc3RhbmNlLCBvbmx5IHVzYWJsZVxuIgogImFzIGZ1bmN0aW9uIGFyZ3VtZW50IjsKQEAgLTE1MjksNyArMTUyNSw3IEBACiAgICAgcmV0dXJuIChQeU9iamVjdCAqKXBhcmc7CiB9CiAKLXN0YXRpYyBjaGFyIGFkZHJlc3NvZl9kb2NbXSA9CitzdGF0aWMgY29uc3QgY2hhciBhZGRyZXNzb2ZfZG9jW10gPQogImFkZHJlc3NvZihDIGluc3RhbmNlKSAtPiBpbnRlZ2VyXG4iCiAiUmV0dXJuIHRoZSBhZGRyZXNzIG9mIHRoZSBDIGluc3RhbmNlIGludGVybmFsIGJ1ZmZlciI7CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9jZmllbGQuYyBiL01vZHVsZXMvX2N0eXBlcy9jZmllbGQuYwppbmRleCBkNjY2YmU1Li5hNDM1ODVmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvY2ZpZWxkLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2NmaWVsZC5jCkBAIC0zNzksMTQgKzM3OSwxMiBAQAogICAgIHJldHVybiAwOwogfQogCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLQogLyogU2FtZSwgYnV0IGhhbmRsaW5nIG5hdGl2ZSBsb25nIGxvbmcuICovCiAKIHN0YXRpYyBpbnQKLWdldF9sb25nbG9uZyhQeU9iamVjdCAqdiwgUFlfTE9OR19MT05HICpwKQorZ2V0X2xvbmdsb25nKFB5T2JqZWN0ICp2LCBsb25nIGxvbmcgKnApCiB7Ci0gICAgUFlfTE9OR19MT05HIHg7CisgICAgbG9uZyBsb25nIHg7CiAgICAgaWYgKFB5RmxvYXRfQ2hlY2sodikpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJpbnQgZXhwZWN0ZWQgaW5zdGVhZCBvZiBmbG9hdCIpOwpAQCAtNDAyLDIzICs0MDAsMjEgQEAKIC8qIFNhbWUsIGJ1dCBoYW5kbGluZyBuYXRpdmUgdW5zaWduZWQgbG9uZyBsb25nLiAqLwogCiBzdGF0aWMgaW50Ci1nZXRfdWxvbmdsb25nKFB5T2JqZWN0ICp2LCB1bnNpZ25lZCBQWV9MT05HX0xPTkcgKnApCitnZXRfdWxvbmdsb25nKFB5T2JqZWN0ICp2LCB1bnNpZ25lZCBsb25nIGxvbmcgKnApCiB7Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIHg7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHg7CiAgICAgaWYgKFB5RmxvYXRfQ2hlY2sodikpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJpbnQgZXhwZWN0ZWQgaW5zdGVhZCBvZiBmbG9hdCIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIHggPSBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzayh2KTsKLSAgICBpZiAoeCA9PSAodW5zaWduZWQgUFlfTE9OR19MT05HKS0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKHggPT0gKHVuc2lnbmVkIGxvbmcgbG9uZyktMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgKnAgPSB4OwogICAgIHJldHVybiAwOwogfQogCi0jZW5kaWYKLQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiBJbnRlZ2VyIGZpZWxkcywgd2l0aCBiaXRmaWVsZCBzdXBwb3J0CiAgKi8KQEAgLTcxNSwxNCArNzExLDYgQEAKIH0KICNlbmRpZgogCi0jaWZkZWYgSEFWRV9DOTlfQk9PTAotI2RlZmluZSBCT09MX1RZUEUgX0Jvb2wKLSNlbHNlCi0jZGVmaW5lIEJPT0xfVFlQRSBjaGFyCi0jdW5kZWYgU0laRU9GX19CT09MCi0jZGVmaW5lIFNJWkVPRl9fQk9PTCAxCi0jZW5kaWYKLQogc3RhdGljIFB5T2JqZWN0ICoKIGJvb2xfc2V0KHZvaWQgKnB0ciwgUHlPYmplY3QgKnZhbHVlLCBQeV9zc2l6ZV90IHNpemUpCiB7CkBAIC03MzAsMTAgKzcxOCwxMCBAQAogICAgIGNhc2UgLTE6CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGNhc2UgMDoKLSAgICAgICAgKihCT09MX1RZUEUgKilwdHIgPSAwOworICAgICAgICAqKF9Cb29sICopcHRyID0gMDsKICAgICAgICAgX1JFVCh2YWx1ZSk7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgKihCT09MX1RZUEUgKilwdHIgPSAxOworICAgICAgICAqKF9Cb29sICopcHRyID0gMTsKICAgICAgICAgX1JFVCh2YWx1ZSk7CiAgICAgfQogfQpAQCAtNzQxLDcgKzcyOSw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogYm9vbF9nZXQodm9pZCAqcHRyLCBQeV9zc2l6ZV90IHNpemUpCiB7Ci0gICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygobG9uZykqKEJPT0xfVFlQRSAqKXB0cik7CisgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygobG9uZykqKF9Cb29sICopcHRyKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTg4OCwxNiArODc2LDE1IEBACiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKHZhbCk7CiB9CiAKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwogc3RhdGljIFB5T2JqZWN0ICoKIHFfc2V0KHZvaWQgKnB0ciwgUHlPYmplY3QgKnZhbHVlLCBQeV9zc2l6ZV90IHNpemUpCiB7Ci0gICAgUFlfTE9OR19MT05HIHZhbDsKLSAgICBQWV9MT05HX0xPTkcgeDsKKyAgICBsb25nIGxvbmcgdmFsOworICAgIGxvbmcgbG9uZyB4OwogICAgIGlmIChnZXRfbG9uZ2xvbmcodmFsdWUsICZ2YWwpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgbWVtY3B5KCZ4LCBwdHIsIHNpemVvZih4KSk7Ci0gICAgeCA9IFNFVChQWV9MT05HX0xPTkcsIHgsIHZhbCwgc2l6ZSk7CisgICAgeCA9IFNFVChsb25nIGxvbmcsIHgsIHZhbCwgc2l6ZSk7CiAgICAgbWVtY3B5KHB0ciwgJngsIHNpemVvZih4KSk7CiAgICAgX1JFVCh2YWx1ZSk7CiB9CkBAIC05MDUsMTMgKzg5MiwxMyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHFfc2V0X3N3KHZvaWQgKnB0ciwgUHlPYmplY3QgKnZhbHVlLCBQeV9zc2l6ZV90IHNpemUpCiB7Ci0gICAgUFlfTE9OR19MT05HIHZhbDsKLSAgICBQWV9MT05HX0xPTkcgZmllbGQ7CisgICAgbG9uZyBsb25nIHZhbDsKKyAgICBsb25nIGxvbmcgZmllbGQ7CiAgICAgaWYgKGdldF9sb25nbG9uZyh2YWx1ZSwgJnZhbCkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBtZW1jcHkoJmZpZWxkLCBwdHIsIHNpemVvZihmaWVsZCkpOwogICAgIGZpZWxkID0gU1dBUF84KGZpZWxkKTsKLSAgICBmaWVsZCA9IFNFVChQWV9MT05HX0xPTkcsIGZpZWxkLCB2YWwsIHNpemUpOworICAgIGZpZWxkID0gU0VUKGxvbmcgbG9uZywgZmllbGQsIHZhbCwgc2l6ZSk7CiAgICAgZmllbGQgPSBTV0FQXzgoZmllbGQpOwogICAgIG1lbWNweShwdHIsICZmaWVsZCwgc2l6ZW9mKGZpZWxkKSk7CiAgICAgX1JFVCh2YWx1ZSk7CkBAIC05MjAsNyArOTA3LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBxX2dldCh2b2lkICpwdHIsIFB5X3NzaXplX3Qgc2l6ZSkKIHsKLSAgICBQWV9MT05HX0xPTkcgdmFsOworICAgIGxvbmcgbG9uZyB2YWw7CiAgICAgbWVtY3B5KCZ2YWwsIHB0ciwgc2l6ZW9mKHZhbCkpOwogICAgIEdFVF9CSVRGSUVMRCh2YWwsIHNpemUpOwogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKHZhbCk7CkBAIC05MjksNyArOTE2LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBxX2dldF9zdyh2b2lkICpwdHIsIFB5X3NzaXplX3Qgc2l6ZSkKIHsKLSAgICBQWV9MT05HX0xPTkcgdmFsOworICAgIGxvbmcgbG9uZyB2YWw7CiAgICAgbWVtY3B5KCZ2YWwsIHB0ciwgc2l6ZW9mKHZhbCkpOwogICAgIHZhbCA9IFNXQVBfOCh2YWwpOwogICAgIEdFVF9CSVRGSUVMRCh2YWwsIHNpemUpOwpAQCAtOTM5LDEyICs5MjYsMTIgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBRX3NldCh2b2lkICpwdHIsIFB5T2JqZWN0ICp2YWx1ZSwgUHlfc3NpemVfdCBzaXplKQogewotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB2YWw7Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIHg7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHZhbDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgeDsKICAgICBpZiAoZ2V0X3Vsb25nbG9uZyh2YWx1ZSwgJnZhbCkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBtZW1jcHkoJngsIHB0ciwgc2l6ZW9mKHgpKTsKLSAgICB4ID0gU0VUKFBZX0xPTkdfTE9ORywgeCwgdmFsLCBzaXplKTsKKyAgICB4ID0gU0VUKGxvbmcgbG9uZywgeCwgdmFsLCBzaXplKTsKICAgICBtZW1jcHkocHRyLCAmeCwgc2l6ZW9mKHgpKTsKICAgICBfUkVUKHZhbHVlKTsKIH0KQEAgLTk1MiwxMyArOTM5LDEzIEBACiBzdGF0aWMgUHlPYmplY3QgKgogUV9zZXRfc3codm9pZCAqcHRyLCBQeU9iamVjdCAqdmFsdWUsIFB5X3NzaXplX3Qgc2l6ZSkKIHsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgdmFsOwotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBmaWVsZDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgdmFsOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBmaWVsZDsKICAgICBpZiAoZ2V0X3Vsb25nbG9uZyh2YWx1ZSwgJnZhbCkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBtZW1jcHkoJmZpZWxkLCBwdHIsIHNpemVvZihmaWVsZCkpOwogICAgIGZpZWxkID0gU1dBUF84KGZpZWxkKTsKLSAgICBmaWVsZCA9IFNFVCh1bnNpZ25lZCBQWV9MT05HX0xPTkcsIGZpZWxkLCB2YWwsIHNpemUpOworICAgIGZpZWxkID0gU0VUKHVuc2lnbmVkIGxvbmcgbG9uZywgZmllbGQsIHZhbCwgc2l6ZSk7CiAgICAgZmllbGQgPSBTV0FQXzgoZmllbGQpOwogICAgIG1lbWNweShwdHIsICZmaWVsZCwgc2l6ZW9mKGZpZWxkKSk7CiAgICAgX1JFVCh2YWx1ZSk7CkBAIC05NjcsNyArOTU0LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBRX2dldCh2b2lkICpwdHIsIFB5X3NzaXplX3Qgc2l6ZSkKIHsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgdmFsOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB2YWw7CiAgICAgbWVtY3B5KCZ2YWwsIHB0ciwgc2l6ZW9mKHZhbCkpOwogICAgIEdFVF9CSVRGSUVMRCh2YWwsIHNpemUpOwogICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcodmFsKTsKQEAgLTk3NiwxMyArOTYzLDEyIEBACiBzdGF0aWMgUHlPYmplY3QgKgogUV9nZXRfc3codm9pZCAqcHRyLCBQeV9zc2l6ZV90IHNpemUpCiB7Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIHZhbDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgdmFsOwogICAgIG1lbWNweSgmdmFsLCBwdHIsIHNpemVvZih2YWwpKTsKICAgICB2YWwgPSBTV0FQXzgodmFsKTsKICAgICBHRVRfQklURklFTEQodmFsLCBzaXplKTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKHZhbCk7CiB9Ci0jZW5kaWYKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiBub24taW50ZWdlciBhY2Nlc3NvciBtZXRob2RzLCBub3Qgc3VwcG9ydGluZyBiaXQgZmllbGRzCkBAIC0xNDkwLDEwICsxNDc2LDggQEAKICNpZiBTSVpFT0ZfVk9JRF9QIDw9IFNJWkVPRl9MT05HCiAgICAgdiA9ICh2b2lkICopUHlMb25nX0FzVW5zaWduZWRMb25nTWFzayh2YWx1ZSk7CiAjZWxzZQotI2lmbmRlZiBIQVZFX0xPTkdfTE9ORwotIyAgIGVycm9yICJQeUxvbmdfQXNWb2lkUHRyOiBzaXplb2Yodm9pZCopID4gc2l6ZW9mKGxvbmcpLCBidXQgbm8gbG9uZyBsb25nIgotI2VsaWYgU0laRU9GX0xPTkdfTE9ORyA8IFNJWkVPRl9WT0lEX1AKLSMgICBlcnJvciAiUHlMb25nX0FzVm9pZFB0cjogc2l6ZW9mKFBZX0xPTkdfTE9ORykgPCBzaXplb2Yodm9pZCopIgorI2lmIFNJWkVPRl9MT05HX0xPTkcgPCBTSVpFT0ZfVk9JRF9QCisjICAgZXJyb3IgIlB5TG9uZ19Bc1ZvaWRQdHI6IHNpemVvZihsb25nIGxvbmcpIDwgc2l6ZW9mKHZvaWQqKSIKICNlbmRpZgogICAgIHYgPSAodm9pZCAqKVB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrKHZhbHVlKTsKICNlbmRpZgpAQCAtMTUzOCwxNCArMTUyMiwxMiBAQAogI2Vsc2UKICMgZXJyb3IKICNlbmRpZgotI2lmZGVmIEhBVkVfTE9OR19MT05HCiAjaWYgU0laRU9GX0xPTkdfTE9ORyA9PSA4CiAgICAgeyAncScsIHFfc2V0LCBxX2dldCwgJmZmaV90eXBlX3NpbnQ2NCwgcV9zZXRfc3csIHFfZ2V0X3N3fSwKICAgICB7ICdRJywgUV9zZXQsIFFfZ2V0LCAmZmZpX3R5cGVfdWludDY0LCBRX3NldF9zdywgUV9nZXRfc3d9LAogI2Vsc2UKICMgZXJyb3IKICNlbmRpZgotI2VuZGlmCiAgICAgeyAnUCcsIFBfc2V0LCBQX2dldCwgJmZmaV90eXBlX3BvaW50ZXJ9LAogICAgIHsgJ3onLCB6X3NldCwgel9nZXQsICZmZmlfdHlwZV9wb2ludGVyfSwKICNpZmRlZiBDVFlQRVNfVU5JQ09ERQpAQCAtMTYzNSwxMCArMTYxNyw4IEBACiAjZW5kaWYKICovCiAKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotdHlwZWRlZiBzdHJ1Y3QgeyBjaGFyIGM7IFBZX0xPTkdfTE9ORyB4OyB9IHNfbG9uZ19sb25nOwotI2RlZmluZSBMT05HX0xPTkdfQUxJR04gKHNpemVvZihzX2xvbmdfbG9uZykgLSBzaXplb2YoUFlfTE9OR19MT05HKSkKLSNlbmRpZgordHlwZWRlZiBzdHJ1Y3QgeyBjaGFyIGM7IGxvbmcgbG9uZyB4OyB9IHNfbG9uZ19sb25nOworI2RlZmluZSBMT05HX0xPTkdfQUxJR04gKHNpemVvZihzX2xvbmdfbG9uZykgLSBzaXplb2YobG9uZyBsb25nKSkKIAogLyogZnJvbSBmZmkuaDoKIHR5cGVkZWYgc3RydWN0IF9mZmlfdHlwZQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2N0eXBlcy5oIGIvTW9kdWxlcy9fY3R5cGVzL2N0eXBlcy5oCmluZGV4IGYyZGY1YzAuLjVkM2I5NjYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9jdHlwZXMuaAorKysgYi9Nb2R1bGVzL19jdHlwZXMvY3R5cGVzLmgKQEAgLTMxLDkgKzMxLDcgQEAKICAgICAgICAgICAgICAgICBsb25nIGw7CiAgICAgICAgICAgICAgICAgZmxvYXQgZjsKICAgICAgICAgICAgICAgICBkb3VibGUgZDsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgICAgICAgICAgICAgIFBZX0xPTkdfTE9ORyBsbDsKLSNlbmRpZgorICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBsbDsKICAgICAgICAgICAgICAgICBsb25nIGRvdWJsZSBEOwogfTsKIApAQCAtMzAzLDkgKzMwMSw3IEBACiAgICAgICAgIHNob3J0IGg7CiAgICAgICAgIGludCBpOwogICAgICAgICBsb25nIGw7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICAgICAgUFlfTE9OR19MT05HIHE7Ci0jZW5kaWYKKyAgICAgICAgbG9uZyBsb25nIHE7CiAgICAgICAgIGxvbmcgZG91YmxlIEQ7CiAgICAgICAgIGRvdWJsZSBkOwogICAgICAgICBmbG9hdCBmOwpAQCAtMzI3LDcgKzMyMyw3IEBACiBQeUNEYXRhX3NldChQeU9iamVjdCAqZHN0LCBQeU9iamVjdCAqdHlwZSwgU0VURlVOQyBzZXRmdW5jLCBQeU9iamVjdCAqdmFsdWUsCiAgICAgICAgICAgUHlfc3NpemVfdCBpbmRleCwgUHlfc3NpemVfdCBzaXplLCBjaGFyICpwdHIpOwogCi1leHRlcm4gdm9pZCBfY3R5cGVzX2V4dGVuZF9lcnJvcihQeU9iamVjdCAqZXhjX2NsYXNzLCBjaGFyICpmbXQsIC4uLik7CitleHRlcm4gdm9pZCBfY3R5cGVzX2V4dGVuZF9lcnJvcihQeU9iamVjdCAqZXhjX2NsYXNzLCBjb25zdCBjaGFyICpmbXQsIC4uLik7CiAKIHN0cnVjdCBiYXNlc3BlYyB7CiAgICAgQ0RhdGFPYmplY3QgKmJhc2U7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9kbG1hbGxvYy5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvZGxtYWxsb2MuYwppbmRleCA2ZTQ3NGI3Li41NWMyZDc2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9kbG1hbGxvYy5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2RsbWFsbG9jLmMKQEAgLTUyNSw3ICs1MjUsNyBAQAogI2RlZmluZSBNTUFQX0NMRUFSUyAxCiAjZW5kaWYgIC8qIE1NQVBfQ0xFQVJTICovCiAjaWZuZGVmIEhBVkVfTVJFTUFQCi0jaWZkZWYgbGludXgKKyNpZmRlZiBfX2xpbnV4X18KICNkZWZpbmUgSEFWRV9NUkVNQVAgMQogI2Vsc2UgICAvKiBsaW51eCAqLwogI2RlZmluZSBIQVZFX01SRU1BUCAwCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9kZWJ1Zy5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2UvZGVidWcuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOThmMWY5Zi4uMDAwMDAwMAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9kZWJ1Zy5jCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIGRlYnVnLmMgLSBDb3B5cmlnaHQgKGMpIDE5OTYgUmVkIEhhdCwgSW5jLgotCi0gICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKLSAgIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQotICAgYGBTb2Z0d2FyZScnKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCi0gICB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCi0gICBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8KLSAgIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bwotICAgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotCi0gICBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZAotICAgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0KLSAgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MKLSAgIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKLSAgIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4KLSAgIElOIE5PIEVWRU5UIFNIQUxMIENZR05VUyBTT0xVVElPTlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IKLSAgIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAotICAgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCi0gICBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCi0gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0jaW5jbHVkZSA8ZmZpLmg+Ci0jaW5jbHVkZSA8ZmZpX2NvbW1vbi5oPgotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0KLS8qIEdlbmVyYWwgZGVidWdnaW5nIHJvdXRpbmVzICovCi0KLXZvaWQgZmZpX3N0b3BfaGVyZSh2b2lkKQotewotICAvKiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgdXNlZnVsIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMuCi0gICAgIFBsYWNlIGEgYnJlYWtwb2ludCBvbiBmZmlfc3RvcF9oZXJlIHRvIGJlIG5vdGlmaWVkIG9mIAotICAgICBzaWduaWZpY2FudCBldmVudHMuICovCi19Ci0KLS8qIFRoaXMgZnVuY3Rpb24gc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHZpYSB0aGUgRkZJX0FTU0VSVCgpIG1hY3JvICovCi0KLXZvaWQgZmZpX2Fzc2VydChjaGFyICpleHByLCBjaGFyICpmaWxlLCBpbnQgbGluZSkKLXsKLSAgZnByaW50ZihzdGRlcnIsICJBU1NFUlRJT04gRkFJTFVSRTogJXMgYXQgJXM6JWRcbiIsIGV4cHIsIGZpbGUsIGxpbmUpOwotICBmZmlfc3RvcF9oZXJlKCk7Ci0gIGFib3J0KCk7Ci19Ci0KLS8qIFBlcmZvcm0gYSBzYW5pdHkgY2hlY2sgb24gYW4gZmZpX3R5cGUgc3RydWN0dXJlICovCi0KLXZvaWQgZmZpX3R5cGVfdGVzdChmZmlfdHlwZSAqYSwgY2hhciAqZmlsZSwgaW50IGxpbmUpCi17Ci0gIEZGSV9BU1NFUlRfQVQoYSAhPSBOVUxMLCBmaWxlLCBsaW5lKTsKLQotICAvKkAtdXNlZGVmQCovCi0gIEZGSV9BU1NFUlRfQVQoYS0+dHlwZSA8PSBGRklfVFlQRV9MQVNULCBmaWxlLCBsaW5lKTsKLSAgRkZJX0FTU0VSVF9BVChhLT50eXBlID09IEZGSV9UWVBFX1ZPSUQgfHwgYS0+c2l6ZSA+IDAsIGZpbGUsIGxpbmUpOwotICBGRklfQVNTRVJUX0FUKGEtPnR5cGUgPT0gRkZJX1RZUEVfVk9JRCB8fCBhLT5hbGlnbm1lbnQgPiAwLCBmaWxlLCBsaW5lKTsKLSAgRkZJX0FTU0VSVF9BVChhLT50eXBlICE9IEZGSV9UWVBFX1NUUlVDVCB8fCBhLT5lbGVtZW50cyAhPSBOVUxMLCBmaWxlLCBsaW5lKTsKLSAgLypAPXVzZWRlZkAqLwotfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2UvZmZpLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9mZmkuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTE5M2FhYS4uMDAwMDAwMAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9mZmkuYworKysgL2Rldi9udWxsCkBAIC0xLDMxMCArMCwwIEBACi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgZmZpLmMgLSBDb3B5cmlnaHQgKGMpIDE5OTggIFJlZCBIYXQsIEluYy4KLSAgIAotICAgQVJNIEZvcmVpZ24gRnVuY3Rpb24gSW50ZXJmYWNlIAotCi0gICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKLSAgIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQotICAgYGBTb2Z0d2FyZScnKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCi0gICB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCi0gICBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8KLSAgIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bwotICAgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotCi0gICBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZAotICAgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0KLSAgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MKLSAgIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKLSAgIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4KLSAgIElOIE5PIEVWRU5UIFNIQUxMIENZR05VUyBTT0xVVElPTlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IKLSAgIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAotICAgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCi0gICBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCi0gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0jaW5jbHVkZSA8ZmZpLmg+Ci0jaW5jbHVkZSA8ZmZpX2NvbW1vbi5oPgotCi0jaW5jbHVkZSA8c3RkbGliLmg+Ci0KLSNpZmRlZiBfV0lOMzJfV0NFCi0jcHJhZ21hIHdhcm5pbmcgKGRpc2FibGUgOiA0MTQyKSAgICAvKiBiZW5pZ24gcmVkZWZpbml0aW9uIG9mIHR5cGUgKi8KLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jZW5kaWYKLQotLyogZmZpX3ByZXBfYXJncyBpcyBjYWxsZWQgYnkgdGhlIGFzc2VtYmx5IHJvdXRpbmUgb25jZSBzdGFjayBzcGFjZQotICAgaGFzIGJlZW4gYWxsb2NhdGVkIGZvciB0aGUgZnVuY3Rpb24ncyBhcmd1bWVudHMgKi8KLQotLypALWV4cG9ydGhlYWRlckAqLwotdm9pZCBmZmlfcHJlcF9hcmdzKGNoYXIgKnN0YWNrLCBleHRlbmRlZF9jaWYgKmVjaWYpCi0vKkA9ZXhwb3J0aGVhZGVyQCovCi17Ci0gIHJlZ2lzdGVyIHVuc2lnbmVkIGludCBpOwotICByZWdpc3RlciB2b2lkICoqcF9hcmd2OwotICByZWdpc3RlciBjaGFyICphcmdwOwotICByZWdpc3RlciBmZmlfdHlwZSAqKnBfYXJnOwotCi0gIGFyZ3AgPSBzdGFjazsKLQotICBpZiAoIGVjaWYtPmNpZi0+cnR5cGUtPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUICkgewotICAgICoodm9pZCAqKikgYXJncCA9IGVjaWYtPnJ2YWx1ZTsKLSAgICBhcmdwICs9IDQ7Ci0gIH0KLQotICBwX2FyZ3YgPSBlY2lmLT5hdmFsdWU7Ci0KLSAgZm9yIChpID0gZWNpZi0+Y2lmLT5uYXJncywgcF9hcmcgPSBlY2lmLT5jaWYtPmFyZ190eXBlczsKLSAgICAgICAoaSAhPSAwKTsKLSAgICAgICBpLS0sIHBfYXJnKyspCi0gICAgewotICAgICAgc2l6ZV90IHo7Ci0gICAgICBzaXplX3QgYXJnYWxpZ24gPSAoKnBfYXJnKS0+YWxpZ25tZW50OwotCi0jaWZkZWYgX1dJTjMyX1dDRQotICAgICAgaWYgKGFyZ2FsaWduID4gNCkKLSAgICAgICAgYXJnYWxpZ24gPSA0OwotI2VuZGlmCi0gICAgICAvKiBBbGlnbiBpZiBuZWNlc3NhcnkgKi8KLSAgICAgIGlmICgoYXJnYWxpZ24gLSAxKSAmICh1bnNpZ25lZCkgYXJncCkgewotCWFyZ3AgPSAoY2hhciAqKSBBTElHTihhcmdwLCBhcmdhbGlnbik7Ci0gICAgICB9Ci0KLQkgIHogPSAoKnBfYXJnKS0+c2l6ZTsKLQkgIGlmICh6IDwgc2l6ZW9mKGludCkpCi0JICAgIHsKLQkgICAgICB6ID0gc2l6ZW9mKGludCk7Ci0JICAgICAgc3dpdGNoICgoKnBfYXJnKS0+dHlwZSkKLQkJewotCQljYXNlIEZGSV9UWVBFX1NJTlQ4OgotCQkgICooc2lnbmVkIGludCAqKSBhcmdwID0gKHNpZ25lZCBpbnQpKihTSU5UOCAqKSgqIHBfYXJndik7Ci0JCSAgYnJlYWs7Ci0JCSAgCi0JCWNhc2UgRkZJX1RZUEVfVUlOVDg6Ci0JCSAgKih1bnNpZ25lZCBpbnQgKikgYXJncCA9ICh1bnNpZ25lZCBpbnQpKihVSU5UOCAqKSgqIHBfYXJndik7Ci0JCSAgYnJlYWs7Ci0JCSAgCi0JCWNhc2UgRkZJX1RZUEVfU0lOVDE2OgotCQkgICooc2lnbmVkIGludCAqKSBhcmdwID0gKHNpZ25lZCBpbnQpKihTSU5UMTYgKikoKiBwX2FyZ3YpOwotCQkgIGJyZWFrOwotCQkgIAotCQljYXNlIEZGSV9UWVBFX1VJTlQxNjoKLQkJICAqKHVuc2lnbmVkIGludCAqKSBhcmdwID0gKHVuc2lnbmVkIGludCkqKFVJTlQxNiAqKSgqIHBfYXJndik7Ci0JCSAgYnJlYWs7Ci0JCSAgCi0JCWNhc2UgRkZJX1RZUEVfU1RSVUNUOgotICAgICAgICAgICAgICAgICAgLyogKnBfYXJndiBtYXkgbm90IGJlIGFsaWduZWQgZm9yIGEgVUlOVDMyICovCi0gICAgICAgICAgICAgICAgICBtZW1jcHkoYXJncCwgKnBfYXJndiwgeik7Ci0JCSAgYnJlYWs7Ci0KLQkJZGVmYXVsdDoKLQkJICBGRklfQVNTRVJUKDApOwotCQl9Ci0JICAgIH0KLQkgIGVsc2UgaWYgKHogPT0gc2l6ZW9mKGludCkpCi0JICAgIHsKLQkgICAgICAqKHVuc2lnbmVkIGludCAqKSBhcmdwID0gKHVuc2lnbmVkIGludCkqKFVJTlQzMiAqKSgqIHBfYXJndik7Ci0JICAgIH0KLQkgIGVsc2UKLQkgICAgewotCSAgICAgIG1lbWNweShhcmdwLCAqcF9hcmd2LCB6KTsKLQkgICAgfQotCSAgcF9hcmd2Kys7Ci0JICBhcmdwICs9IHo7Ci0gICAgfQotICAKLSAgcmV0dXJuOwotfQotCi0vKiBQZXJmb3JtIG1hY2hpbmUgZGVwZW5kZW50IGNpZiBwcm9jZXNzaW5nICovCi1mZmlfc3RhdHVzIGZmaV9wcmVwX2NpZl9tYWNoZGVwKGZmaV9jaWYgKmNpZikKLXsKLSAgLyogU2V0IHRoZSByZXR1cm4gdHlwZSBmbGFnICovCi0gIHN3aXRjaCAoY2lmLT5ydHlwZS0+dHlwZSkKLSAgICB7Ci0gICAgY2FzZSBGRklfVFlQRV9WT0lEOgotICAgIGNhc2UgRkZJX1RZUEVfU1RSVUNUOgotICAgIGNhc2UgRkZJX1RZUEVfRkxPQVQ6Ci0gICAgY2FzZSBGRklfVFlQRV9ET1VCTEU6Ci0gICAgY2FzZSBGRklfVFlQRV9TSU5UNjQ6Ci0gICAgICBjaWYtPmZsYWdzID0gKHVuc2lnbmVkKSBjaWYtPnJ0eXBlLT50eXBlOwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEZGSV9UWVBFX1VJTlQ2NDoKLSAgICAgIGNpZi0+ZmxhZ3MgPSBGRklfVFlQRV9TSU5UNjQ7Ci0gICAgICBicmVhazsKLQotICAgIGRlZmF1bHQ6Ci0gICAgICBjaWYtPmZsYWdzID0gRkZJX1RZUEVfSU5UOwotICAgICAgYnJlYWs7Ci0gICAgfQotCi0gIHJldHVybiBGRklfT0s7Ci19Ci0KLS8qQC1kZWNsdW5kZWZAKi8KLS8qQC1leHBvcnRoZWFkZXJAKi8KLWV4dGVybiB2b2lkIGZmaV9jYWxsX1NZU1Yodm9pZCAoKikoY2hhciAqLCBleHRlbmRlZF9jaWYgKiksIAotCQkJICAvKkBvdXRAKi8gZXh0ZW5kZWRfY2lmICosIAotCQkJICB1bnNpZ25lZCwgdW5zaWduZWQsIAotCQkJICAvKkBvdXRAKi8gdW5zaWduZWQgKiwgCi0JCQkgIHZvaWQgKCpmbikoKSk7Ci0vKkA9ZGVjbHVuZGVmQCovCi0vKkA9ZXhwb3J0aGVhZGVyQCovCi0KLS8qIFJldHVybiB0eXBlIGNoYW5nZWQgZnJvbSB2b2lkIGZvciBjdHlwZXMgKi8KLWludCBmZmlfY2FsbCgvKkBkZXBlbmRlbnRAKi8gZmZpX2NpZiAqY2lmLCAKLQkgICAgICB2b2lkICgqZm4pKCksIAotCSAgICAgIC8qQG91dEAqLyB2b2lkICpydmFsdWUsIAotCSAgICAgIC8qQGRlcGVuZGVudEAqLyB2b2lkICoqYXZhbHVlKQotewotICBleHRlbmRlZF9jaWYgZWNpZjsKLQotICBlY2lmLmNpZiA9IGNpZjsKLSAgZWNpZi5hdmFsdWUgPSBhdmFsdWU7Ci0gIAotICAvKiBJZiB0aGUgcmV0dXJuIHZhbHVlIGlzIGEgc3RydWN0IGFuZCB3ZSBkb24ndCBoYXZlIGEgcmV0dXJuCSovCi0gIC8qIHZhbHVlIGFkZHJlc3MgdGhlbiB3ZSBuZWVkIHRvIG1ha2Ugb25lCQkgICAgICAgICovCi0KLSAgaWYgKChydmFsdWUgPT0gTlVMTCkgJiYgCi0gICAgICAoY2lmLT5ydHlwZS0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QpKQotICAgIHsKLSAgICAgIC8qQC1zeXN1bnJlY29nQCovCi0gICAgICBlY2lmLnJ2YWx1ZSA9IGFsbG9jYShjaWYtPnJ0eXBlLT5zaXplKTsKLSAgICAgIC8qQD1zeXN1bnJlY29nQCovCi0gICAgfQotICBlbHNlCi0gICAgZWNpZi5ydmFsdWUgPSBydmFsdWU7Ci0gICAgCi0gIAotICBzd2l0Y2ggKGNpZi0+YWJpKSAKLSAgICB7Ci0gICAgY2FzZSBGRklfU1lTVjoKLSAgICAgIC8qQC11c2VkZWZAKi8KLSAgICAgIGZmaV9jYWxsX1NZU1YoZmZpX3ByZXBfYXJncywgJmVjaWYsIGNpZi0+Ynl0ZXMsIAotCQkgICAgY2lmLT5mbGFncywgZWNpZi5ydmFsdWUsIGZuKTsKLSAgICAgIC8qQD11c2VkZWZAKi8KLSAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICBGRklfQVNTRVJUKDApOwotICAgICAgYnJlYWs7Ci0gICAgfQotICAvKiBJIHRoaW5rIGNhbGN1bGF0aW5nIHRoZSByZWFsIHN0YWNrIHBvaW50ZXIgZGVsdGEgaXMgbm90IHVzZWZ1bAotICAgICBiZWNhdXNlIHN0ZGNhbGwgaXMgbm90IHN1cHBvcnRlZCAqLwotICByZXR1cm4gMDsKLX0KLQotLyoqIHByaXZhdGUgbWVtYmVycyAqKi8KLQotc3RhdGljIHZvaWQgZmZpX3ByZXBfaW5jb21pbmdfYXJnc19TWVNWIChjaGFyICpzdGFjaywgdm9pZCAqKnJldCwKLQkJCQkJIHZvaWQqKiBhcmdzLCBmZmlfY2lmKiBjaWYpOwotCi0vKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSBmZmlfY2xvc3VyZV9TWVNWIGluIHN5c3YuYXNtICovCi0KLXVuc2lnbmVkIGludAotZmZpX2Nsb3N1cmVfU1lTVl9pbm5lciAoZmZpX2Nsb3N1cmUgKmNsb3N1cmUsIGNoYXIgKmluX2FyZ3MsIHZvaWQgKnJ2YWx1ZSkKLXsKLSAgZmZpX2NpZiAqY2lmID0gY2xvc3VyZS0+Y2lmOwotICB2b2lkICoqb3V0X2FyZ3M7Ci0KLSAgb3V0X2FyZ3MgPSAodm9pZCAqKikgYWxsb2NhKGNpZi0+bmFyZ3MgKiBzaXplb2YgKHZvaWQgKikpOyAgCi0KLSAgLyogdGhpcyBjYWxsIHdpbGwgaW5pdGlhbGl6ZSBvdXRfYXJncywgc3VjaCB0aGF0IGVhY2gKLSAgICogZWxlbWVudCBpbiB0aGF0IGFycmF5IHBvaW50cyB0byB0aGUgY29ycmVzcG9uZGluZyAKLSAgICogdmFsdWUgb24gdGhlIHN0YWNrOyBhbmQgaWYgdGhlIGZ1bmN0aW9uIHJldHVybnMKLSAgICogYSBzdHJ1Y3R1cmUsIGl0IHdpbGwgcmUtc2V0IHJ2YWx1ZSB0byBwb2ludCB0byB0aGUKLSAgICogc3RydWN0dXJlIHJldHVybiBhZGRyZXNzLiAgKi8KLQotICBmZmlfcHJlcF9pbmNvbWluZ19hcmdzX1NZU1YoaW5fYXJncywgJnJ2YWx1ZSwgb3V0X2FyZ3MsIGNpZik7Ci0gIAotICAoY2xvc3VyZS0+ZnVuKShjaWYsIHJ2YWx1ZSwgb3V0X2FyZ3MsIGNsb3N1cmUtPnVzZXJfZGF0YSk7Ci0KLSAgLyogVGVsbCBmZmlfY2xvc3VyZV9TWVNWIHdoYXQgdGhlIHJldHVybnR5cGUgaXMgKi8KLSAgcmV0dXJuIGNpZi0+ZmxhZ3M7Ci19Ci0KLS8qQC1leHBvcnRoZWFkZXJAKi8KLXN0YXRpYyB2b2lkIAotZmZpX3ByZXBfaW5jb21pbmdfYXJnc19TWVNWKGNoYXIgKnN0YWNrLCB2b2lkICoqcnZhbHVlLAotCQkJICAgIHZvaWQgKiphdmFsdWUsIGZmaV9jaWYgKmNpZikKLS8qQD1leHBvcnRoZWFkZXJAKi8KLXsKLSAgdW5zaWduZWQgaW50IGk7Ci0gIHZvaWQgKipwX2FyZ3Y7Ci0gIGNoYXIgKmFyZ3A7Ci0gIGZmaV90eXBlICoqcF9hcmc7Ci0KLSAgYXJncCA9IHN0YWNrOwotCi0gIGlmICggY2lmLT5ydHlwZS0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QgKSB7Ci0gICAgKnJ2YWx1ZSA9ICoodm9pZCAqKikgYXJncDsKLSAgICBhcmdwICs9IDQ7Ci0gIH0KLQotICBwX2FyZ3YgPSBhdmFsdWU7Ci0KLSAgZm9yIChpID0gY2lmLT5uYXJncywgcF9hcmcgPSBjaWYtPmFyZ190eXBlczsgKGkgIT0gMCk7IGktLSwgcF9hcmcrKykKLSAgICB7Ci0gICAgICBzaXplX3QgejsKLSAgICAgIHNpemVfdCBhcmdhbGlnbiA9ICgqcF9hcmcpLT5hbGlnbm1lbnQ7Ci0KLSNpZmRlZiBfV0lOMzJfV0NFCi0gICAgICBpZiAoYXJnYWxpZ24gPiA0KQotICAgICAgICBhcmdhbGlnbiA9IDQ7Ci0jZW5kaWYKLSAgICAgIC8qIEFsaWduIGlmIG5lY2Vzc2FyeSAqLwotICAgICAgaWYgKChhcmdhbGlnbiAtIDEpICYgKHVuc2lnbmVkKSBhcmdwKSB7Ci0JYXJncCA9IChjaGFyICopIEFMSUdOKGFyZ3AsIGFyZ2FsaWduKTsKLSAgICAgIH0KLQotICAgICAgeiA9ICgqcF9hcmcpLT5zaXplOwotICAgICAgaWYgKHogPCBzaXplb2YoaW50KSkKLSAgICAgICAgeiA9IHNpemVvZihpbnQpOwotCi0gICAgICAqcF9hcmd2ID0gKHZvaWQqKSBhcmdwOwotCi0gICAgICBwX2FyZ3YrKzsKLSAgICAgIGFyZ3AgKz0gejsKLSAgICB9Ci19Ci0KLS8qCi0gICAgYWRkICAgaXAsIHBjLCAjLTggICAgIDsgaXAgPSBhZGRyZXNzIG9mIHRoaXMgdHJhbXBvbGluZSA9PSBhZGRyZXNzIG9mIGZmaV9jbG9zdXJlCi0gICAgbGRyICAgcGMsIFtwYywgIy00XSAgIDsganVtcCB0byBfX2Z1bgotICAgIERDRCBfX2Z1bgotKi8KLSNkZWZpbmUgRkZJX0lOSVRfVFJBTVBPTElORShUUkFNUCxGVU4pIFwKLXsgXAotICAgIHVuc2lnbmVkIGludCAqX190cmFtcCA9ICh1bnNpZ25lZCBpbnQgKikoVFJBTVApOyBcCi0gICAgX190cmFtcFswXSA9IDB4ZTI0ZmMwMDg7ICAgICAgICAgICAgLyogYWRkICAgaXAsIHBjLCAjLTggICAgKi8gXAotICAgIF9fdHJhbXBbMV0gPSAweGU1MWZmMDA0OyAgICAgICAgICAgIC8qIGxkciAgIHBjLCBbcGMsICMtNF0gICovIFwKLSAgICBfX3RyYW1wWzJdID0gKHVuc2lnbmVkIGludCkoRlVOKTsgXAotICB9Ci0KLS8qIHRoZSBjaWYgbXVzdCBhbHJlYWR5IGJlIHByZXAnZWQgKi8KLQotLyogZGVmaW5lZCBpbiBzeXN2LmFzbSAqLwotdm9pZCBmZmlfY2xvc3VyZV9TWVNWKHZvaWQpOwotCi1mZmlfc3RhdHVzCi1mZmlfcHJlcF9jbG9zdXJlIChmZmlfY2xvc3VyZSogY2xvc3VyZSwKLQkJICBmZmlfY2lmKiBjaWYsCi0JCSAgdm9pZCAoKmZ1bikoZmZpX2NpZiosdm9pZCosdm9pZCoqLHZvaWQqKSwKLQkJICB2b2lkICp1c2VyX2RhdGEpCi17Ci0gIEZGSV9BU1NFUlQgKGNpZi0+YWJpID09IEZGSV9TWVNWKTsKLSAgCi0gIEZGSV9JTklUX1RSQU1QT0xJTkUgKCZjbG9zdXJlLT50cmFtcFswXSwgJmZmaV9jbG9zdXJlX1NZU1YpOwotCi0gIGNsb3N1cmUtPmNpZiAgPSBjaWY7Ci0gIGNsb3N1cmUtPnVzZXJfZGF0YSA9IHVzZXJfZGF0YTsKLSAgY2xvc3VyZS0+ZnVuICA9IGZ1bjsKLQotI2lmZGVmIF9XSU4zMl9XQ0UKLSAgLyogVGhpcyBpcyBpbXBvcnRhbnQgdG8gYWxsb3cgY2FsbGluZyB0aGUgdHJhbXBvbGluZSBzYWZlbHkgKi8KLSAgRmx1c2hJbnN0cnVjdGlvbkNhY2hlKEdldEN1cnJlbnRQcm9jZXNzKCksIDAsIDApOwotI2VuZGlmCi0KLSAgcmV0dXJuIEZGSV9PSzsKLX0KLQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2UvZmZpLmggYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9mZmkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjc5NzViNi4uMDAwMDAwMAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9mZmkuaAorKysgL2Rldi9udWxsCkBAIC0xLDMxNyArMCwwIEBACi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotQy0qLQotICAgbGliZmZpIDIuMDAtYmV0YS13aW5jZSAtIENvcHlyaWdodCAoYykgMTk5Ni0yMDAzICBSZWQgSGF0LCBJbmMuCi0KLSAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwotICAgYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCi0gICBgYFNvZnR3YXJlJycpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKLSAgIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKLSAgIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bwotICAgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCi0gICB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0KLSAgIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCi0gICBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLQotICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUwotICAgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgotICAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULgotICAgSU4gTk8gRVZFTlQgU0hBTEwgQ1lHTlVTIFNPTFVUSU9OUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUgotICAgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCi0gICBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKLSAgIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KLQotICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgVGhlIGJhc2ljIEFQSSBpcyBkZXNjcmliZWQgaW4gdGhlIFJFQURNRSBmaWxlLgotCi0gICBUaGUgcmF3IEFQSSBpcyBkZXNpZ25lZCB0byBieXBhc3Mgc29tZSBvZiB0aGUgYXJndW1lbnQgcGFja2luZwotICAgYW5kIHVucGFja2luZyBvbiBhcmNoaXRlY3R1cmVzIGZvciB3aGljaCBpdCBjYW4gYmUgYXZvaWRlZC4KLQotICAgVGhlIGNsb3N1cmUgQVBJIGFsbG93cyBpbnRlcnByZXRlZCBmdW5jdGlvbnMgdG8gYmUgcGFja2FnZWQgdXAKLSAgIGluc2lkZSBhIEMgZnVuY3Rpb24gcG9pbnRlciwgc28gdGhhdCB0aGV5IGNhbiBiZSBjYWxsZWQgYXMgQyBmdW5jdGlvbnMsCi0gICB3aXRoIG5vIHVuZGVyc3RhbmRpbmcgb24gdGhlIGNsaWVudCBzaWRlIHRoYXQgdGhleSBhcmUgaW50ZXJwcmV0ZWQuCi0gICBJdCBjYW4gYWxzbyBiZSB1c2VkIGluIG90aGVyIGNhc2VzIGluIHdoaWNoIGl0IGlzIG5lY2Vzc2FyeSB0byBwYWNrYWdlCi0gICB1cCBhIHVzZXIgc3BlY2lmaWVkIHBhcmFtZXRlciBhbmQgYSBmdW5jdGlvbiBwb2ludGVyIGFzIGEgc2luZ2xlCi0gICBmdW5jdGlvbiBwb2ludGVyLgotCi0gICBUaGUgY2xvc3VyZSBBUEkgbXVzdCBiZSBpbXBsZW1lbnRlZCBpbiBvcmRlciB0byBnZXQgaXRzIGZ1bmN0aW9uYWxpdHksCi0gICBlLmcuIGZvciB1c2UgYnkgZ2lqLiAgUm91dGluZXMgYXJlIHByb3ZpZGVkIHRvIGVtdWxhdGUgdGhlIHJhdyBBUEkKLSAgIGlmIHRoZSB1bmRlcmx5aW5nIHBsYXRmb3JtIGRvZXNuJ3QgYWxsb3cgZmFzdGVyIGltcGxlbWVudGF0aW9uLgotCi0gICBNb3JlIGRldGFpbHMgb24gdGhlIHJhdyBhbmQgY2xvdXJlIEFQSSBjYW4gYmUgZm91bmQgaW46Ci0KLSAgIGh0dHA6Ly9nY2MuZ251Lm9yZy9tbC9qYXZhLzE5OTktcTMvbXNnMDAxMzguaHRtbAotCi0gICBhbmQKLQotICAgaHR0cDovL2djYy5nbnUub3JnL21sL2phdmEvMTk5OS1xMy9tc2cwMDE3NC5odG1sCi0gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0jaWZuZGVmIExJQkZGSV9ICi0jZGVmaW5lIExJQkZGSV9ICi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotLyogU3BlY2lmeSB3aGljaCBhcmNoaXRlY3R1cmUgbGliZmZpIGlzIGNvbmZpZ3VyZWQgZm9yLiAqLwotLyojZGVmaW5lIEBUQVJHRVRAKi8KLQotLyogLS0tLSBTeXN0ZW0gY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotI2luY2x1ZGUgPGZmaXRhcmdldC5oPgotCi0jaWZuZGVmIExJQkZGSV9BU00KLQotI2luY2x1ZGUgPHN0ZGRlZi5oPgotI2luY2x1ZGUgPGxpbWl0cy5oPgotCi0vKiBMT05HX0xPTkdfTUFYIGlzIG5vdCBhbHdheXMgZGVmaW5lZCAobm90IGlmIFNUUklDVF9BTlNJLCBmb3IgZXhhbXBsZSkuCi0gICBCdXQgd2UgY2FuIGZpbmQgaXQgZWl0aGVyIHVuZGVyIHRoZSBjb3JyZWN0IEFOU0kgbmFtZSwgb3IgdW5kZXIgR05VCi0gICBDJ3MgaW50ZXJuYWwgbmFtZS4gICovCi0jaWZkZWYgTE9OR19MT05HX01BWAotIyBkZWZpbmUgRkZJX0xPTkdfTE9OR19NQVggTE9OR19MT05HX01BWAotI2Vsc2UKLSMgaWZkZWYgTExPTkdfTUFYCi0jICBkZWZpbmUgRkZJX0xPTkdfTE9OR19NQVggTExPTkdfTUFYCi0jIGVsc2UKLSMgIGlmZGVmIF9fR05VQ19fCi0jICAgZGVmaW5lIEZGSV9MT05HX0xPTkdfTUFYIF9fTE9OR19MT05HX01BWF9fCi0jICBlbmRpZgotIyAgaWZkZWYgX01TQ19WRVIKLSMgICBkZWZpbmUgRkZJX0xPTkdfTE9OR19NQVggX0k2NF9NQVgKLSMgIGVuZGlmCi0jIGVuZGlmCi0jZW5kaWYKLQotI2lmIFNDSEFSX01BWCA9PSAxMjcKLSMgZGVmaW5lIGZmaV90eXBlX3VjaGFyICAgICAgICAgICAgICAgIGZmaV90eXBlX3VpbnQ4Ci0jIGRlZmluZSBmZmlfdHlwZV9zY2hhciAgICAgICAgICAgICAgICBmZmlfdHlwZV9zaW50OAotI2Vsc2UKLSAjZXJyb3IgImNoYXIgc2l6ZSBub3Qgc3VwcG9ydGVkIgotI2VuZGlmCi0KLSNpZiBTSFJUX01BWCA9PSAzMjc2NwotIyBkZWZpbmUgZmZpX3R5cGVfdXNob3J0ICAgICAgIGZmaV90eXBlX3VpbnQxNgotIyBkZWZpbmUgZmZpX3R5cGVfc3Nob3J0ICAgICAgIGZmaV90eXBlX3NpbnQxNgotI2VsaWYgU0hSVF9NQVggPT0gMjE0NzQ4MzY0NwotIyBkZWZpbmUgZmZpX3R5cGVfdXNob3J0ICAgICAgIGZmaV90eXBlX3VpbnQzMgotIyBkZWZpbmUgZmZpX3R5cGVfc3Nob3J0ICAgICAgIGZmaV90eXBlX3NpbnQzMgotI2Vsc2UKLSAjZXJyb3IgInNob3J0IHNpemUgbm90IHN1cHBvcnRlZCIKLSNlbmRpZgotCi0jaWYgSU5UX01BWCA9PSAzMjc2NwotIyBkZWZpbmUgZmZpX3R5cGVfdWludCAgICAgICAgIGZmaV90eXBlX3VpbnQxNgotIyBkZWZpbmUgZmZpX3R5cGVfc2ludCAgICAgICAgIGZmaV90eXBlX3NpbnQxNgotI2VsaWYgSU5UX01BWCA9PSAyMTQ3NDgzNjQ3Ci0jIGRlZmluZSBmZmlfdHlwZV91aW50ICAgICAgICAgZmZpX3R5cGVfdWludDMyCi0jIGRlZmluZSBmZmlfdHlwZV9zaW50ICAgICAgICAgZmZpX3R5cGVfc2ludDMyCi0jZWxpZiBJTlRfTUFYID09IDkyMjMzNzIwMzY4NTQ3NzU4MDcKLSMgZGVmaW5lIGZmaV90eXBlX3VpbnQgICAgICAgICBmZmlfdHlwZV91aW50NjQKLSMgZGVmaW5lIGZmaV90eXBlX3NpbnQgICAgICAgICBmZmlfdHlwZV9zaW50NjQKLSNlbHNlCi0gI2Vycm9yICJpbnQgc2l6ZSBub3Qgc3VwcG9ydGVkIgotI2VuZGlmCi0KLSNkZWZpbmUgZmZpX3R5cGVfdWxvbmcgICAgICAgICBmZmlfdHlwZV91aW50NjQKLSNkZWZpbmUgZmZpX3R5cGVfc2xvbmcgICAgICAgICBmZmlfdHlwZV9zaW50NjQKLSNpZiBMT05HX01BWCA9PSAyMTQ3NDgzNjQ3Ci0jIGlmIEZGSV9MT05HX0xPTkdfTUFYICE9IDkyMjMzNzIwMzY4NTQ3NzU4MDcKLSAgI2Vycm9yICJubyA2NC1iaXQgZGF0YSB0eXBlIHN1cHBvcnRlZCIKLSMgZW5kaWYKLSNlbGlmIExPTkdfTUFYICE9IDkyMjMzNzIwMzY4NTQ3NzU4MDcKLSAjZXJyb3IgImxvbmcgc2l6ZSBub3Qgc3VwcG9ydGVkIgotI2VuZGlmCi0KLS8qIFRoZSBjbG9zdXJlIGNvZGUgYXNzdW1lcyB0aGF0IHRoaXMgd29ya3Mgb24gcG9pbnRlcnMsIGkuZS4gYSBzaXplX3QJKi8KLS8qIGNhbiBob2xkIGEgcG9pbnRlci4JCQkJCQkJKi8KLQotdHlwZWRlZiBzdHJ1Y3QgX2ZmaV90eXBlCi17Ci0gIHNpemVfdCBzaXplOwotICB1bnNpZ25lZCBzaG9ydCBhbGlnbm1lbnQ7Ci0gIHVuc2lnbmVkIHNob3J0IHR5cGU7Ci0gIC8qQG51bGxAKi8gc3RydWN0IF9mZmlfdHlwZSAqKmVsZW1lbnRzOwotfSBmZmlfdHlwZTsKLQotLyogVGhlc2UgYXJlIGRlZmluZWQgaW4gdHlwZXMuYyAqLwotZXh0ZXJuIGZmaV90eXBlIGZmaV90eXBlX3ZvaWQ7Ci1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfdWludDg7Ci1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfc2ludDg7Ci1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfdWludDE2OwotZXh0ZXJuIGZmaV90eXBlIGZmaV90eXBlX3NpbnQxNjsKLWV4dGVybiBmZmlfdHlwZSBmZmlfdHlwZV91aW50MzI7Ci1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfc2ludDMyOwotZXh0ZXJuIGZmaV90eXBlIGZmaV90eXBlX3VpbnQ2NDsKLWV4dGVybiBmZmlfdHlwZSBmZmlfdHlwZV9zaW50NjQ7Ci1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfZmxvYXQ7Ci1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfZG91YmxlOwotZXh0ZXJuIGZmaV90eXBlIGZmaV90eXBlX2xvbmdkb3VibGU7Ci1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfcG9pbnRlcjsKLQotCi10eXBlZGVmIGVudW0gewotICBGRklfT0sgPSAwLAotICBGRklfQkFEX1RZUEVERUYsCi0gIEZGSV9CQURfQUJJIAotfSBmZmlfc3RhdHVzOwotCi10eXBlZGVmIHVuc2lnbmVkIEZGSV9UWVBFOwotCi10eXBlZGVmIHN0cnVjdCB7Ci0gIGZmaV9hYmkgYWJpOwotICB1bnNpZ25lZCBuYXJnczsKLSAgLypAZGVwZW5kZW50QCovIGZmaV90eXBlICoqYXJnX3R5cGVzOwotICAvKkBkZXBlbmRlbnRAKi8gZmZpX3R5cGUgKnJ0eXBlOwotICB1bnNpZ25lZCBieXRlczsKLSAgdW5zaWduZWQgZmxhZ3M7Ci0jaWZkZWYgRkZJX0VYVFJBX0NJRl9GSUVMRFMKLSAgRkZJX0VYVFJBX0NJRl9GSUVMRFM7Ci0jZW5kaWYKLX0gZmZpX2NpZjsKLQotLyogLS0tLSBEZWZpbml0aW9ucyBmb3IgdGhlIHJhdyBBUEkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotI2lmbmRlZiBGRklfU0laRU9GX0FSRwotIyBpZiBMT05HX01BWCA9PSAyMTQ3NDgzNjQ3Ci0jICBkZWZpbmUgRkZJX1NJWkVPRl9BUkcgICAgICAgIDQKLSMgZWxpZiBMT05HX01BWCA9PSA5MjIzMzcyMDM2ODU0Nzc1ODA3Ci0jICBkZWZpbmUgRkZJX1NJWkVPRl9BUkcgICAgICAgIDgKLSMgZW5kaWYKLSNlbmRpZgotCi10eXBlZGVmIHVuaW9uIHsKLSAgZmZpX3NhcmcgIHNpbnQ7Ci0gIGZmaV9hcmcgICB1aW50OwotICBmbG9hdAkgICAgZmx0OwotICBjaGFyICAgICAgZGF0YVtGRklfU0laRU9GX0FSR107Ci0gIHZvaWQqICAgICBwdHI7Ci19IGZmaV9yYXc7Ci0KLXZvaWQgZmZpX3Jhd19jYWxsICgvKkBkZXBlbmRlbnRAKi8gZmZpX2NpZiAqY2lmLCAKLQkJICAgdm9pZCAoKmZuKSgpLCAKLQkJICAgLypAb3V0QCovIHZvaWQgKnJ2YWx1ZSwgCi0JCSAgIC8qQGRlcGVuZGVudEAqLyBmZmlfcmF3ICphdmFsdWUpOwotCi12b2lkIGZmaV9wdHJhcnJheV90b19yYXcgKGZmaV9jaWYgKmNpZiwgdm9pZCAqKmFyZ3MsIGZmaV9yYXcgKnJhdyk7Ci12b2lkIGZmaV9yYXdfdG9fcHRyYXJyYXkgKGZmaV9jaWYgKmNpZiwgZmZpX3JhdyAqcmF3LCB2b2lkICoqYXJncyk7Ci1zaXplX3QgZmZpX3Jhd19zaXplIChmZmlfY2lmICpjaWYpOwotCi0vKiBUaGlzIGlzIGFuYWxvZ291cyB0byB0aGUgcmF3IEFQSSwgZXhjZXB0IGl0IHVzZXMgSmF2YSBwYXJhbWV0ZXIJKi8KLS8qIHBhY2tpbmcsIGV2ZW4gb24gNjQtYml0IG1hY2hpbmVzLiAgSS5lLiBvbiA2NC1iaXQgbWFjaGluZXMJCSovCi0vKiBsb25ncyBhbmQgZG91YmxlcyBhcmUgZm9sbG93ZWQgYnkgYW4gZW1wdHkgNjQtYml0IHdvcmQuCQkqLwotCi12b2lkIGZmaV9qYXZhX3Jhd19jYWxsICgvKkBkZXBlbmRlbnRAKi8gZmZpX2NpZiAqY2lmLCAKLQkJICAgICAgICB2b2lkICgqZm4pKCksIAotCQkgICAgICAgIC8qQG91dEAqLyB2b2lkICpydmFsdWUsIAotCQkgICAgICAgIC8qQGRlcGVuZGVudEAqLyBmZmlfcmF3ICphdmFsdWUpOwotCi12b2lkIGZmaV9qYXZhX3B0cmFycmF5X3RvX3JhdyAoZmZpX2NpZiAqY2lmLCB2b2lkICoqYXJncywgZmZpX3JhdyAqcmF3KTsKLXZvaWQgZmZpX2phdmFfcmF3X3RvX3B0cmFycmF5IChmZmlfY2lmICpjaWYsIGZmaV9yYXcgKnJhdywgdm9pZCAqKmFyZ3MpOwotc2l6ZV90IGZmaV9qYXZhX3Jhd19zaXplIChmZmlfY2lmICpjaWYpOwotCi0vKiAtLS0tIERlZmluaXRpb25zIGZvciBjbG9zdXJlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0jaWYgRkZJX0NMT1NVUkVTCi0KLXR5cGVkZWYgc3RydWN0IHsKLSAgY2hhciB0cmFtcFtGRklfVFJBTVBPTElORV9TSVpFXTsKLSAgZmZpX2NpZiAgICpjaWY7Ci0gIHZvaWQgICAgICgqZnVuKShmZmlfY2lmKix2b2lkKix2b2lkKiosdm9pZCopOwotICB2b2lkICAgICAgKnVzZXJfZGF0YTsKLX0gZmZpX2Nsb3N1cmU7Ci0KLWZmaV9zdGF0dXMKLWZmaV9wcmVwX2Nsb3N1cmUgKGZmaV9jbG9zdXJlKiwKLQkJICBmZmlfY2lmICosCi0JCSAgdm9pZCAoKmZ1bikoZmZpX2NpZiosdm9pZCosdm9pZCoqLHZvaWQqKSwKLQkJICB2b2lkICp1c2VyX2RhdGEpOwotCi10eXBlZGVmIHN0cnVjdCB7Ci0gIGNoYXIgdHJhbXBbRkZJX1RSQU1QT0xJTkVfU0laRV07Ci0KLSAgZmZpX2NpZiAgICpjaWY7Ci0KLSNpZiAhRkZJX05BVElWRV9SQVdfQVBJCi0KLSAgLyogaWYgdGhpcyBpcyBlbmFibGVkLCB0aGVuIGEgcmF3IGNsb3N1cmUgaGFzIHRoZSBzYW1lIGxheW91dCAKLSAgICAgYXMgYSByZWd1bGFyIGNsb3N1cmUuICBXZSB1c2UgdGhpcyB0byBpbnN0YWxsIGFuIGludGVybWVkaWF0ZSAKLSAgICAgaGFuZGxlciB0byBkbyB0aGUgdHJhbnNhbHRpb24sIHZvaWQqKiAtPiBmZmlfcmF3Ki4gKi8KLQotICB2b2lkICAgICAoKnRyYW5zbGF0ZV9hcmdzKShmZmlfY2lmKix2b2lkKix2b2lkKiosdm9pZCopOwotICB2b2lkICAgICAgKnRoaXNfY2xvc3VyZTsKLQotI2VuZGlmCi0KLSAgdm9pZCAgICAgKCpmdW4pKGZmaV9jaWYqLHZvaWQqLGZmaV9yYXcqLHZvaWQqKTsKLSAgdm9pZCAgICAgICp1c2VyX2RhdGE7Ci0KLX0gZmZpX3Jhd19jbG9zdXJlOwotCi1mZmlfc3RhdHVzCi1mZmlfcHJlcF9yYXdfY2xvc3VyZSAoZmZpX3Jhd19jbG9zdXJlKiwKLQkJICAgICAgZmZpX2NpZiAqY2lmLAotCQkgICAgICB2b2lkICgqZnVuKShmZmlfY2lmKix2b2lkKixmZmlfcmF3Kix2b2lkKiksCi0JCSAgICAgIHZvaWQgKnVzZXJfZGF0YSk7Ci0KLWZmaV9zdGF0dXMKLWZmaV9wcmVwX2phdmFfcmF3X2Nsb3N1cmUgKGZmaV9yYXdfY2xvc3VyZSosCi0JCSAgICAgICAgICAgZmZpX2NpZiAqY2lmLAotCQkgICAgICAgICAgIHZvaWQgKCpmdW4pKGZmaV9jaWYqLHZvaWQqLGZmaV9yYXcqLHZvaWQqKSwKLQkJICAgICAgICAgICB2b2lkICp1c2VyX2RhdGEpOwotCi0jZW5kaWYgLyogRkZJX0NMT1NVUkVTICovCi0KLS8qIC0tLS0gUHVibGljIGludGVyZmFjZSBkZWZpbml0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLWZmaV9zdGF0dXMgZmZpX3ByZXBfY2lmKC8qQG91dEAqLyAvKkBwYXJ0aWFsQCovIGZmaV9jaWYgKmNpZiwgCi0JCQlmZmlfYWJpIGFiaSwKLQkJCXVuc2lnbmVkIGludCBuYXJncywgCi0JCQkvKkBkZXBlbmRlbnRAKi8gLypAb3V0QCovIC8qQHBhcnRpYWxAKi8gZmZpX3R5cGUgKnJ0eXBlLCAKLQkJCS8qQGRlcGVuZGVudEAqLyBmZmlfdHlwZSAqKmF0eXBlcyk7Ci0KLS8qIFJldHVybiB0eXBlIGNoYW5nZWQgZnJvbSB2b2lkIGZvciBjdHlwZXMgKi8KLWludCBmZmlfY2FsbCgvKkBkZXBlbmRlbnRAKi8gZmZpX2NpZiAqY2lmLCAKLQkgICAgICB2b2lkICgqZm4pKCksIAotCSAgICAgIC8qQG91dEAqLyB2b2lkICpydmFsdWUsIAotCSAgICAgIC8qQGRlcGVuZGVudEAqLyB2b2lkICoqYXZhbHVlKTsKLQotLyogVXNlZnVsIGZvciBlbGltaW5hdGluZyBjb21waWxlciB3YXJuaW5ncyAqLwotI2RlZmluZSBGRklfRk4oZikgKCh2b2lkICgqKSgpKWYpCi0KLS8qIC0tLS0gRGVmaW5pdGlvbnMgc2hhcmVkIHdpdGggYXNzZW1ibHkgY29kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLSNlbmRpZgotCi0vKiBJZiB0aGVzZSBjaGFuZ2UsIHVwZGF0ZSBzcmMvbWlwcy9mZml0YXJnZXQuaC4gKi8KLSNkZWZpbmUgRkZJX1RZUEVfVk9JRCAgICAgICAwICAgIAotI2RlZmluZSBGRklfVFlQRV9JTlQgICAgICAgIDEKLSNkZWZpbmUgRkZJX1RZUEVfRkxPQVQgICAgICAyICAgIAotI2RlZmluZSBGRklfVFlQRV9ET1VCTEUgICAgIDMKLSNpZiAwIC8qQEhBVkVfTE9OR19ET1VCTEVAKi8KLSNkZWZpbmUgRkZJX1RZUEVfTE9OR0RPVUJMRSA0Ci0jZWxzZQotI2RlZmluZSBGRklfVFlQRV9MT05HRE9VQkxFIEZGSV9UWVBFX0RPVUJMRQotI2VuZGlmCi0jZGVmaW5lIEZGSV9UWVBFX1VJTlQ4ICAgICAgNSAgIAotI2RlZmluZSBGRklfVFlQRV9TSU5UOCAgICAgIDYKLSNkZWZpbmUgRkZJX1RZUEVfVUlOVDE2ICAgICA3IAotI2RlZmluZSBGRklfVFlQRV9TSU5UMTYgICAgIDgKLSNkZWZpbmUgRkZJX1RZUEVfVUlOVDMyICAgICA5Ci0jZGVmaW5lIEZGSV9UWVBFX1NJTlQzMiAgICAgMTAKLSNkZWZpbmUgRkZJX1RZUEVfVUlOVDY0ICAgICAxMQotI2RlZmluZSBGRklfVFlQRV9TSU5UNjQgICAgIDEyCi0jZGVmaW5lIEZGSV9UWVBFX1NUUlVDVCAgICAgMTMKLSNkZWZpbmUgRkZJX1RZUEVfUE9JTlRFUiAgICAxNAotCi0vKiBUaGlzIHNob3VsZCBhbHdheXMgcmVmZXIgdG8gdGhlIGxhc3QgdHlwZSBjb2RlIChmb3Igc2FuaXR5IGNoZWNrcykgKi8KLSNkZWZpbmUgRkZJX1RZUEVfTEFTVCAgICAgICBGRklfVFlQRV9QT0lOVEVSCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9mZmlfY29tbW9uLmggYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9mZmlfY29tbW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmODc5ZDEuLjAwMDAwMDAKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2UvZmZpX2NvbW1vbi5oCisrKyAvZGV2L251bGwKQEAgLTEsMTExICswLDAgQEAKLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICBmZmlfY29tbW9uLmggLSBDb3B5cmlnaHQgKGMpIDE5OTYgIFJlZCBIYXQsIEluYy4KLQotICAgQ29tbW9uIGludGVybmFsIGRlZmluaXRpb25zIGFuZCBtYWNyb3MuIE9ubHkgbmVjZXNzYXJ5IGZvciBidWlsZGluZwotICAgbGliZmZpLgotICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotI2lmbmRlZiBGRklfQ09NTU9OX0gKLSNkZWZpbmUgRkZJX0NPTU1PTl9ICi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotI2luY2x1ZGUgPGZmaWNvbmZpZy5oPgotCi0vKiBEbyBub3QgbW92ZSB0aGlzLiBTb21lIHZlcnNpb25zIG9mIEFJWCBhcmUgdmVyeSBwaWNreSBhYm91dCB3aGVyZQotICAgdGhpcyBpcyBwb3NpdGlvbmVkLiAqLwotI2lmZGVmIF9fR05VQ19fCi0jIGRlZmluZSBhbGxvY2EgX19idWlsdGluX2FsbG9jYQotI2Vsc2UKLSMgaWYgSEFWRV9BTExPQ0FfSAotIyAgaW5jbHVkZSA8YWxsb2NhLmg+Ci0jIGVsc2UKLSMgIGlmZGVmIF9BSVgKLSAjcHJhZ21hIGFsbG9jYQotIyAgZWxzZQotIyAgIGlmbmRlZiBhbGxvY2EgLyogcHJlZGVmaW5lZCBieSBIUCBjYyArT2xpYmNhbGxzICovCi1jaGFyICphbGxvY2EgKCk7Ci0jICAgZW5kaWYKLSMgIGVuZGlmCi0jIGVuZGlmCi0jZW5kaWYKLQotLyogQ2hlY2sgZm9yIHRoZSBleGlzdGVuY2Ugb2YgbWVtY3B5LiAqLwotI2lmIFNURENfSEVBREVSUwotIyBpbmNsdWRlIDxzdHJpbmcuaD4KLSNlbHNlCi0jIGlmbmRlZiBIQVZFX01FTUNQWQotIyAgZGVmaW5lIG1lbWNweShkLCBzLCBuKSBiY29weSAoKHMpLCAoZCksIChuKSkKLSMgZW5kaWYKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChGRklfREVCVUcpIAotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jZW5kaWYKLQotI2lmZGVmIEZGSV9ERUJVRwotLypAZXhpdHNAKi8gdm9pZCBmZmlfYXNzZXJ0KC8qQHRlbXBAKi8gY2hhciAqZXhwciwgLypAdGVtcEAqLyBjaGFyICpmaWxlLCBpbnQgbGluZSk7Ci12b2lkIGZmaV9zdG9wX2hlcmUodm9pZCk7Ci12b2lkIGZmaV90eXBlX3Rlc3QoLypAdGVtcEAqLyAvKkBvdXRAKi8gZmZpX3R5cGUgKmEsIC8qQHRlbXBAKi8gY2hhciAqZmlsZSwgaW50IGxpbmUpOwotCi0jZGVmaW5lIEZGSV9BU1NFUlQoeCkgKCh4KSA/ICh2b2lkKTAgOiBmZmlfYXNzZXJ0KCN4LCBfX0ZJTEVfXyxfX0xJTkVfXykpCi0jZGVmaW5lIEZGSV9BU1NFUlRfQVQoeCwgZiwgbCkgKCh4KSA/IDAgOiBmZmlfYXNzZXJ0KCN4LCAoZiksIChsKSkpCi0jZGVmaW5lIEZGSV9BU1NFUlRfVkFMSURfVFlQRSh4KSBmZmlfdHlwZV90ZXN0ICh4LCBfX0ZJTEVfXywgX19MSU5FX18pCi0jZWxzZQotI2RlZmluZSBGRklfQVNTRVJUKHgpIAotI2RlZmluZSBGRklfQVNTRVJUX0FUKHgsIGYsIGwpCi0jZGVmaW5lIEZGSV9BU1NFUlRfVkFMSURfVFlQRSh4KQotI2VuZGlmCi0KLSNkZWZpbmUgQUxJR04odiwgYSkgICgoKCgoc2l6ZV90KSAodikpLTEpIHwgKChhKS0xKSkrMSkKLQotLyogUGVyZm9ybSBtYWNoaW5lIGRlcGVuZGVudCBjaWYgcHJvY2Vzc2luZyAqLwotZmZpX3N0YXR1cyBmZmlfcHJlcF9jaWZfbWFjaGRlcChmZmlfY2lmICpjaWYpOwotCi0vKiBFeHRlbmRlZCBjaWYsIHVzZWQgaW4gY2FsbGJhY2sgZnJvbSBhc3NlbWJseSByb3V0aW5lICovCi10eXBlZGVmIHN0cnVjdAotewotICAvKkBkZXBlbmRlbnRAKi8gZmZpX2NpZiAqY2lmOwotICAvKkBkZXBlbmRlbnRAKi8gdm9pZCAqcnZhbHVlOwotICAvKkBkZXBlbmRlbnRAKi8gdm9pZCAqKmF2YWx1ZTsKLX0gZXh0ZW5kZWRfY2lmOwotCi0vKiBUZXJzZSBzaXplZCB0eXBlIGRlZmluaXRpb25zLiAgKi8KLSNpZiBkZWZpbmVkKF9fR05VQ19fKQotCi10eXBlZGVmIHVuc2lnbmVkIGludCBVSU5UOCAgX19hdHRyaWJ1dGVfXygoX19tb2RlX18oX19RSV9fKSkpOwotdHlwZWRlZiBzaWduZWQgaW50ICAgU0lOVDggIF9fYXR0cmlidXRlX18oKF9fbW9kZV9fKF9fUUlfXykpKTsKLXR5cGVkZWYgdW5zaWduZWQgaW50IFVJTlQxNiBfX2F0dHJpYnV0ZV9fKChfX21vZGVfXyhfX0hJX18pKSk7Ci10eXBlZGVmIHNpZ25lZCBpbnQgICBTSU5UMTYgX19hdHRyaWJ1dGVfXygoX19tb2RlX18oX19ISV9fKSkpOwotdHlwZWRlZiB1bnNpZ25lZCBpbnQgVUlOVDMyIF9fYXR0cmlidXRlX18oKF9fbW9kZV9fKF9fU0lfXykpKTsKLXR5cGVkZWYgc2lnbmVkIGludCAgIFNJTlQzMiBfX2F0dHJpYnV0ZV9fKChfX21vZGVfXyhfX1NJX18pKSk7Ci10eXBlZGVmIHVuc2lnbmVkIGludCBVSU5UNjQgX19hdHRyaWJ1dGVfXygoX19tb2RlX18oX19ESV9fKSkpOwotdHlwZWRlZiBzaWduZWQgaW50ICAgU0lOVDY0IF9fYXR0cmlidXRlX18oKF9fbW9kZV9fKF9fRElfXykpKTsKLQotI2VsaWYgZGVmaW5lZChfTVNDX1ZFUikKLQotdHlwZWRlZiB1bnNpZ25lZCBfX2ludDggIFVJTlQ4OwotdHlwZWRlZiBzaWduZWQgX19pbnQ4ICAgIFNJTlQ4OwotdHlwZWRlZiB1bnNpZ25lZCBfX2ludDE2IFVJTlQxNjsKLXR5cGVkZWYgc2lnbmVkIF9faW50MTYgICBTSU5UMTY7Ci10eXBlZGVmIHVuc2lnbmVkIF9faW50MzIgVUlOVDMyOwotdHlwZWRlZiBzaWduZWQgX19pbnQzMiAgIFNJTlQzMjsKLXR5cGVkZWYgdW5zaWduZWQgX19pbnQ2NCBVSU5UNjQ7Ci10eXBlZGVmIHNpZ25lZCBfX2ludDY0ICAgU0lOVDY0OwotCi0jZWxzZQotI2Vycm9yICJOZWVkIHR5cGVkZWZzIGhlcmUiCi0jZW5kaWYKLQotdHlwZWRlZiBmbG9hdCBGTE9BVDMyOwotCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0KLSNlbmRpZgotCi0KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfYXJtX3dpbmNlL2ZmaWNvbmZpZy5oIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2UvZmZpY29uZmlnLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjNzk2NGMuLjAwMDAwMDAKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2UvZmZpY29uZmlnLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNTIgKzAsMCBAQAotLyogZmZpY29uZmlnLmggY3JlYXRlZCBtYW51YWxseSBmb3IgV2luZG93cyBDRSBvbiBBUk0gKi8KLS8qIGZmaWNvbmZpZy5oLmluLiAgR2VuZXJhdGVkIGZyb20gY29uZmlndXJlLmFjIGJ5IGF1dG9oZWFkZXIuICAqLwotCi0vKiAxMjM0ID0gTElMX0VORElBTiwgNDMyMSA9IEJJR0VORElBTiAqLwotI2RlZmluZSBCWVRFT1JERVIgMTIzNAotCi0vKiBEZWZpbmUgdG8gb25lIG9mIGBfZ2V0YjY3JywgYEdFVEI2NycsIGBnZXRiNjcnIGZvciBDcmF5LTIgYW5kIENyYXktWU1QCi0gICBzeXN0ZW1zLiBUaGlzIGZ1bmN0aW9uIGlzIHJlcXVpcmVkIGZvciBgYWxsb2NhLmMnIHN1cHBvcnQgb24gdGhvc2Ugc3lzdGVtcy4KLSAgICovCi0vKiAjdW5kZWYgQ1JBWV9TVEFDS1NFR19FTkQgKi8KLQotLyogRGVmaW5lIHRvIDEgaWYgdXNpbmcgYGFsbG9jYS5jJy4gKi8KLS8qICN1bmRlZiBDX0FMTE9DQSAqLwotCi0vKiBEZWZpbmUgdG8gdGhlIGZsYWdzIG5lZWRlZCBmb3IgdGhlIC5zZWN0aW9uIC5laF9mcmFtZSBkaXJlY3RpdmUuICovCi0vKiAjdW5kZWYgRUhfRlJBTUVfRkxBR1MgKi8KLQotLyogRGVmaW5lIHRoaXMgaWYgeW91IHdhbnQgZXh0cmEgZGVidWdnaW5nLiAqLwotI2lmZGVmIERFQlVHICAvKiBEZWZpbmVkIGJ5IHRoZSBwcm9qZWN0IHNldHRpbmdzIGZvciBEZWJ1ZyBidWlsZHMgKi8KLSNkZWZpbmUgRkZJX0RFQlVHCi0jZWxzZQotI3VuZGVmIEZGSV9ERUJVRwotI2VuZGlmCi0KLS8qIERlZmluZSB0aGlzIGlzIHlvdSBkbyBub3Qgd2FudCBzdXBwb3J0IGZvciB0aGUgcmF3IEFQSS4gKi8KLS8qICN1bmRlZiBGRklfTk9fUkFXX0FQSSAqLwotCi0vKiBEZWZpbmUgdGhpcyBpcyB5b3UgZG8gbm90IHdhbnQgc3VwcG9ydCBmb3IgYWdncmVnYXRlIHR5cGVzLiAqLwotLyogI3VuZGVmIEZGSV9OT19TVFJVQ1RTICovCi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIGBhbGxvY2EnLCBhcyBhIGZ1bmN0aW9uIG9yIG1hY3JvLiAqLwotI2RlZmluZSBIQVZFX0FMTE9DQSAxCi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIDxhbGxvY2EuaD4gYW5kIGl0IHNob3VsZCBiZSB1c2VkIChub3Qgb24gVWx0cml4KS4KLSAgICovCi0vKiAjdW5kZWYgSEFWRV9BTExPQ0FfSCAqLwotCi0vKiBEZWZpbmUgaWYgeW91ciBhc3NlbWJsZXIgc3VwcG9ydHMgLnJlZ2lzdGVyLiAqLwotLyogI3VuZGVmIEhBVkVfQVNfUkVHSVNURVJfUFNFVURPX09QICovCi0KLS8qIERlZmluZSBpZiB5b3VyIGFzc2VtYmxlciBhbmQgbGlua2VyIHN1cHBvcnQgdW5hbGlnbmVkIFBDIHJlbGF0aXZlIHJlbG9jcy4KLSAgICovCi0vKiAjdW5kZWYgSEFWRV9BU19TUEFSQ19VQV9QQ1JFTCAqLwotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGludHR5cGVzLmg+IGhlYWRlciBmaWxlLiAqLwotLyogI3VuZGVmIEhBVkVfSU5UVFlQRVNfSCAqLwotCi0vKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGxvbmcgZG91YmxlIHR5cGUgYW5kIGl0IGlzIGJpZ2dlciB0aGFuIGEgZG91YmxlICovCi0vKiBUaGlzIGRpZmZlcnMgZnJvbSB0aGUgTVNWQyBidWlsZCwgYnV0IGV2ZW4gdGhlcmUgaXQgc2hvdWxkIG5vdCBiZSBkZWZpbmVkICovCi0vKiAjdW5kZWYgSEFWRV9MT05HX0RPVUJMRSAqLwotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1lbWNweScgZnVuY3Rpb24uICovCi0jZGVmaW5lIEhBVkVfTUVNQ1BZIDEKLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxtZW1vcnkuaD4gaGVhZGVyIGZpbGUuICovCi0vKiBXaW5DRSBoYXMgdGhpcyBidXQgSSBkb24ndCB0aGluayB3ZSBuZWVkIHRvIHVzZSBpdCAqLwotLyogI3VuZGVmIEhBVkVfTUVNT1JZX0ggKi8KLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBtbWFwJyBmdW5jdGlvbi4gKi8KLS8qICN1bmRlZiBIQVZFX01NQVAgKi8KLQotLyogRGVmaW5lIGlmIG1tYXAgd2l0aCBNQVBfQU5PTihZTU9VUykgd29ya3MuICovCi0vKiAjdW5kZWYgSEFWRV9NTUFQX0FOT04gKi8KLQotLyogRGVmaW5lIGlmIG1tYXAgb2YgL2Rldi96ZXJvIHdvcmtzLiAqLwotLyogI3VuZGVmIEhBVkVfTU1BUF9ERVZfWkVSTyAqLwotCi0vKiBEZWZpbmUgaWYgcmVhZC1vbmx5IG1tYXAgb2YgYSBwbGFpbiBmaWxlIHdvcmtzLiAqLwotLyogI3VuZGVmIEhBVkVfTU1BUF9GSUxFICovCi0KLS8qIERlZmluZSBpZiAuZWhfZnJhbWUgc2VjdGlvbnMgc2hvdWxkIGJlIHJlYWQtb25seS4gKi8KLS8qICN1bmRlZiBIQVZFX1JPX0VIX0ZSQU1FICovCi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RkaW50Lmg+IGhlYWRlciBmaWxlLiAqLwotLyogI3VuZGVmIEhBVkVfU1RESU5UX0ggKi8KLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzdGRsaWIuaD4gaGVhZGVyIGZpbGUuICovCi0jZGVmaW5lIEhBVkVfU1RETElCX0ggMQotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN0cmluZ3MuaD4gaGVhZGVyIGZpbGUuICovCi0vKiAjdW5kZWYgSEFWRV9TVFJJTkdTX0ggKi8KLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzdHJpbmcuaD4gaGVhZGVyIGZpbGUuICovCi0jZGVmaW5lIEhBVkVfU1RSSU5HX0ggMQotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9tbWFuLmg+IGhlYWRlciBmaWxlLiAqLwotLyogI3VuZGVmIEhBVkVfU1lTX01NQU5fSCAqLwotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9zdGF0Lmg+IGhlYWRlciBmaWxlLiAqLwotLyogI3VuZGVmIEhBVkVfU1lTX1NUQVRfSCAqLwotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy90eXBlcy5oPiBoZWFkZXIgZmlsZS4gKi8KLS8qICN1bmRlZiBIQVZFX1NZU19UWVBFU19IICovCi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8dW5pc3RkLmg+IGhlYWRlciBmaWxlLiAqLwotLyogI3VuZGVmIEhBVkVfVU5JU1REX0ggKi8KLQotLyogRGVmaW5lIGlmIHRoZSBob3N0IG1hY2hpbmUgc3RvcmVzIHdvcmRzIG9mIG11bHRpLXdvcmQgaW50ZWdlcnMgaW4KLSAgIGJpZy1lbmRpYW4gb3JkZXIuICovCi0vKiAjdW5kZWYgSE9TVF9XT1JEU19CSUdfRU5ESUFOICovCi0KLS8qIERlZmluZSB0byAxIGlmIHlvdXIgQyBjb21waWxlciBkb2Vzbid0IGFjY2VwdCAtYyBhbmQgLW8gdG9nZXRoZXIuICovCi0vKiAjdW5kZWYgTk9fTUlOVVNfQ19NSU5VU19PICovCi0KLS8qIE5hbWUgb2YgcGFja2FnZSAqLwotLyogI3VuZGVmIFBBQ0tBR0UgKi8KLQotLyogRGVmaW5lIHRvIHRoZSBhZGRyZXNzIHdoZXJlIGJ1ZyByZXBvcnRzIGZvciB0aGlzIHBhY2thZ2Ugc2hvdWxkIGJlIHNlbnQuICovCi0vKiAjdW5kZWYgUEFDS0FHRV9CVUdSRVBPUlQgKi8KLQotLyogRGVmaW5lIHRvIHRoZSBmdWxsIG5hbWUgb2YgdGhpcyBwYWNrYWdlLiAqLwotLyogI3VuZGVmIFBBQ0tBR0VfTkFNRSAqLwotCi0vKiBEZWZpbmUgdG8gdGhlIGZ1bGwgbmFtZSBhbmQgdmVyc2lvbiBvZiB0aGlzIHBhY2thZ2UuICovCi0vKiAjdW5kZWYgUEFDS0FHRV9TVFJJTkcgKi8KLQotLyogRGVmaW5lIHRvIHRoZSBvbmUgc3ltYm9sIHNob3J0IG5hbWUgb2YgdGhpcyBwYWNrYWdlLiAqLwotLyogI3VuZGVmIFBBQ0tBR0VfVEFSTkFNRSAqLwotCi0vKiBEZWZpbmUgdG8gdGhlIHZlcnNpb24gb2YgdGhpcyBwYWNrYWdlLiAqLwotLyogI3VuZGVmIFBBQ0tBR0VfVkVSU0lPTiAqLwotCi0vKiBUaGUgbnVtYmVyIG9mIGJ5dGVzIGluIHR5cGUgZG91YmxlICovCi0jZGVmaW5lIFNJWkVPRl9ET1VCTEUgOAotCi0vKiBUaGUgbnVtYmVyIG9mIGJ5dGVzIGluIHR5cGUgbG9uZyBkb3VibGUgKi8KLSNkZWZpbmUgU0laRU9GX0xPTkdfRE9VQkxFIDgKLQotLyogSWYgdXNpbmcgdGhlIEMgaW1wbGVtZW50YXRpb24gb2YgYWxsb2NhLCBkZWZpbmUgaWYgeW91IGtub3cgdGhlCi0gICBkaXJlY3Rpb24gb2Ygc3RhY2sgZ3Jvd3RoIGZvciB5b3VyIHN5c3RlbTsgb3RoZXJ3aXNlIGl0IHdpbGwgYmUKLSAgIGF1dG9tYXRpY2FsbHkgZGVkdWNlZCBhdCBydW4tdGltZS4KLQlTVEFDS19ESVJFQ1RJT04gPiAwID0+IGdyb3dzIHRvd2FyZCBoaWdoZXIgYWRkcmVzc2VzCi0JU1RBQ0tfRElSRUNUSU9OIDwgMCA9PiBncm93cyB0b3dhcmQgbG93ZXIgYWRkcmVzc2VzCi0JU1RBQ0tfRElSRUNUSU9OID0gMCA9PiBkaXJlY3Rpb24gb2YgZ3Jvd3RoIHVua25vd24gKi8KLS8qICN1bmRlZiBTVEFDS19ESVJFQ1RJT04gKi8KLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIEFOU0kgQyBoZWFkZXIgZmlsZXMuICovCi0jZGVmaW5lIFNURENfSEVBREVSUyAxCi0KLS8qIERlZmluZSB0aGlzIGlmIHlvdSBhcmUgdXNpbmcgUHVyaWZ5IGFuZCB3YW50IHRvIHN1cHByZXNzIHNwdXJpb3VzIG1lc3NhZ2VzLgotICAgKi8KLS8qICN1bmRlZiBVU0lOR19QVVJJRlkgKi8KLQotLyogVmVyc2lvbiBudW1iZXIgb2YgcGFja2FnZSAqLwotLyogI3VuZGVmIFZFUlNJT04gKi8KLQotLyogd2hldGhlciBieXRlb3JkZXIgaXMgYmlnZW5kaWFuICovCi0vKiAjdW5kZWYgV09SRFNfQklHRU5ESUFOICovCi0KLSNkZWZpbmUgYWxsb2NhIF9hbGxvY2EKLQotI2RlZmluZSBhYm9ydCgpIGV4aXQoOTk5KQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2UvZmZpdGFyZ2V0LmggYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9mZml0YXJnZXQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjYyN2IyNS4uMDAwMDAwMAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9mZml0YXJnZXQuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi1DLSotCi0gICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMTk5Ni0yMDAzICBSZWQgSGF0LCBJbmMuCi0gICBUYXJnZXQgY29uZmlndXJhdGlvbiBtYWNyb3MgZm9yIEFSTS4KLQotICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCi0gICBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKLSAgIGBgU29mdHdhcmUnJyksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZwotICAgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAotICAgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCi0gICBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KLSAgIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLQotICAgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKLSAgIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotCi0gICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTCi0gICBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCi0gICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuCi0gICBJTiBOTyBFVkVOVCBTSEFMTCBDWUdOVVMgU09MVVRJT05TIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SCi0gICBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKLSAgIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgotICAgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgotCi0gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0jaWZuZGVmIExJQkZGSV9UQVJHRVRfSAotI2RlZmluZSBMSUJGRklfVEFSR0VUX0gKLQotI2lmbmRlZiBMSUJGRklfQVNNCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgICAgICAgICAgZmZpX2FyZzsKLXR5cGVkZWYgc2lnbmVkIGxvbmcgICAgICAgICAgICBmZmlfc2FyZzsKLQotdHlwZWRlZiBlbnVtIGZmaV9hYmkgewotICBGRklfRklSU1RfQUJJID0gMCwKLSAgRkZJX1NZU1YsCi0gIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9TWVNWLAotICBGRklfTEFTVF9BQkkgPSBGRklfREVGQVVMVF9BQkkgKyAxCi19IGZmaV9hYmk7Ci0jZW5kaWYKLQotLyogLS0tLSBEZWZpbml0aW9ucyBmb3IgY2xvc3VyZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotI2RlZmluZSBGRklfQ0xPU1VSRVMgMQotI2RlZmluZSBGRklfVFJBTVBPTElORV9TSVpFIDEyCi0KLSNkZWZpbmUgRkZJX05BVElWRV9SQVdfQVBJIDAKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfYXJtX3dpbmNlL3ByZXBfY2lmLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9wcmVwX2NpZi5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZWRjZTJmLi4wMDAwMDAwCi0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfYXJtX3dpbmNlL3ByZXBfY2lmLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNzUgKzAsMCBAQAotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIHByZXBfY2lmLmMgLSBDb3B5cmlnaHQgKGMpIDE5OTYsIDE5OTggIFJlZCBIYXQsIEluYy4KLQotICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCi0gICBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKLSAgIGBgU29mdHdhcmUnJyksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZwotICAgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAotICAgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCi0gICBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KLSAgIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLQotICAgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKLSAgIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotCi0gICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTCi0gICBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCi0gICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuCi0gICBJTiBOTyBFVkVOVCBTSEFMTCBDWUdOVVMgU09MVVRJT05TIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SCi0gICBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKLSAgIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgotICAgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgotICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotI2luY2x1ZGUgPGZmaS5oPgotI2luY2x1ZGUgPGZmaV9jb21tb24uaD4KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLQotCi0vKiBSb3VuZCB1cCB0byBGRklfU0laRU9GX0FSRy4gKi8KLQotI2RlZmluZSBTVEFDS19BUkdfU0laRSh4KSBBTElHTih4LCBGRklfU0laRU9GX0FSRykKLQotLyogUGVyZm9ybSBtYWNoaW5lIGluZGVwZW5kZW50IGluaXRpYWxpemF0aW9uIG9mIGFnZ3JlZ2F0ZSB0eXBlCi0gICBzcGVjaWZpY2F0aW9ucy4gKi8KLQotc3RhdGljIGZmaV9zdGF0dXMgaW5pdGlhbGl6ZV9hZ2dyZWdhdGUoLypAb3V0QCovIGZmaV90eXBlICphcmcpCi17Ci0gIGZmaV90eXBlICoqcHRyOyAKLQotICBGRklfQVNTRVJUKGFyZyAhPSBOVUxMKTsKLQotICAvKkAtdXNlZGVmQCovCi0KLSAgRkZJX0FTU0VSVChhcmctPmVsZW1lbnRzICE9IE5VTEwpOwotICBGRklfQVNTRVJUKGFyZy0+c2l6ZSA9PSAwKTsKLSAgRkZJX0FTU0VSVChhcmctPmFsaWdubWVudCA9PSAwKTsKLQotICBwdHIgPSAmKGFyZy0+ZWxlbWVudHNbMF0pOwotCi0gIHdoaWxlICgoKnB0cikgIT0gTlVMTCkKLSAgICB7Ci0gICAgICBpZiAoKCgqcHRyKS0+c2l6ZSA9PSAwKSAmJiAoaW5pdGlhbGl6ZV9hZ2dyZWdhdGUoKCpwdHIpKSAhPSBGRklfT0spKQotCXJldHVybiBGRklfQkFEX1RZUEVERUY7Ci0gICAgICAKLSAgICAgIC8qIFBlcmZvcm0gYSBzYW5pdHkgY2hlY2sgb24gdGhlIGFyZ3VtZW50IHR5cGUgKi8KLSAgICAgIEZGSV9BU1NFUlRfVkFMSURfVFlQRSgqcHRyKTsKLQotICAgICAgYXJnLT5zaXplID0gQUxJR04oYXJnLT5zaXplLCAoKnB0ciktPmFsaWdubWVudCk7Ci0gICAgICBhcmctPnNpemUgKz0gKCpwdHIpLT5zaXplOwotCi0gICAgICBhcmctPmFsaWdubWVudCA9IChhcmctPmFsaWdubWVudCA+ICgqcHRyKS0+YWxpZ25tZW50KSA/IAotCWFyZy0+YWxpZ25tZW50IDogKCpwdHIpLT5hbGlnbm1lbnQ7Ci0KLSAgICAgIHB0cisrOwotICAgIH0KLQotICAvKiBTdHJ1Y3R1cmUgc2l6ZSBpbmNsdWRlcyB0YWlsIHBhZGRpbmcuICBUaGlzIGlzIGltcG9ydGFudCBmb3IKLSAgICAgc3RydWN0dXJlcyB0aGF0IGZpdCBpbiBvbmUgcmVnaXN0ZXIgb24gQUJJcyBsaWtlIHRoZSBQb3dlclBDNjQKLSAgICAgTGludXggQUJJIHRoYXQgcmlnaHQganVzdGlmeSBzbWFsbCBzdHJ1Y3RzIGluIGEgcmVnaXN0ZXIuCi0gICAgIEl0J3MgYWxzbyBuZWVkZWQgZm9yIG5lc3RlZCBzdHJ1Y3R1cmUgbGF5b3V0LCBmb3IgZXhhbXBsZQotICAgICBzdHJ1Y3QgQSB7IGxvbmcgYTsgY2hhciBiOyB9OyBzdHJ1Y3QgQiB7IHN0cnVjdCBBIHg7IGNoYXIgeTsgfTsKLSAgICAgc2hvdWxkIGZpbmQgeSBhdCBhbiBvZmZzZXQgb2YgMipzaXplb2YobG9uZykgYW5kIHJlc3VsdCBpbiBhCi0gICAgIHRvdGFsIHNpemUgb2YgMypzaXplb2YobG9uZykuICAqLwotICBhcmctPnNpemUgPSBBTElHTiAoYXJnLT5zaXplLCBhcmctPmFsaWdubWVudCk7Ci0KLSAgaWYgKGFyZy0+c2l6ZSA9PSAwKQotICAgIHJldHVybiBGRklfQkFEX1RZUEVERUY7Ci0gIGVsc2UKLSAgICByZXR1cm4gRkZJX09LOwotCi0gIC8qQD11c2VkZWZAKi8KLX0KLQotLyogUGVyZm9ybSBtYWNoaW5lIGluZGVwZW5kZW50IGZmaV9jaWYgcHJlcGFyYXRpb24sIHRoZW4gY2FsbAotICAgbWFjaGluZSBkZXBlbmRlbnQgcm91dGluZS4gKi8KLQotZmZpX3N0YXR1cyBmZmlfcHJlcF9jaWYoLypAb3V0QCovIC8qQHBhcnRpYWxAKi8gZmZpX2NpZiAqY2lmLCAKLQkJCWZmaV9hYmkgYWJpLCB1bnNpZ25lZCBpbnQgbmFyZ3MsIAotCQkJLypAZGVwZW5kZW50QCovIC8qQG91dEAqLyAvKkBwYXJ0aWFsQCovIGZmaV90eXBlICpydHlwZSwgCi0JCQkvKkBkZXBlbmRlbnRAKi8gZmZpX3R5cGUgKiphdHlwZXMpCi17Ci0gIHVuc2lnbmVkIGJ5dGVzID0gMDsKLSAgdW5zaWduZWQgaW50IGk7Ci0gIGZmaV90eXBlICoqcHRyOwotCi0gIEZGSV9BU1NFUlQoY2lmICE9IE5VTEwpOwotICBGRklfQVNTRVJUKChhYmkgPiBGRklfRklSU1RfQUJJKSAmJiAoYWJpIDw9IEZGSV9ERUZBVUxUX0FCSSkpOwotCi0gIGNpZi0+YWJpID0gYWJpOwotICBjaWYtPmFyZ190eXBlcyA9IGF0eXBlczsKLSAgY2lmLT5uYXJncyA9IG5hcmdzOwotICBjaWYtPnJ0eXBlID0gcnR5cGU7Ci0KLSAgY2lmLT5mbGFncyA9IDA7Ci0KLSAgLyogSW5pdGlhbGl6ZSB0aGUgcmV0dXJuIHR5cGUgaWYgbmVjZXNzYXJ5ICovCi0gIC8qQC11c2VkZWZAKi8KLSAgaWYgKChjaWYtPnJ0eXBlLT5zaXplID09IDApICYmIChpbml0aWFsaXplX2FnZ3JlZ2F0ZShjaWYtPnJ0eXBlKSAhPSBGRklfT0spKQotICAgIHJldHVybiBGRklfQkFEX1RZUEVERUY7Ci0gIC8qQD11c2VkZWZAKi8KLQotICAvKiBQZXJmb3JtIGEgc2FuaXR5IGNoZWNrIG9uIHRoZSByZXR1cm4gdHlwZSAqLwotICBGRklfQVNTRVJUX1ZBTElEX1RZUEUoY2lmLT5ydHlwZSk7Ci0KLSAgLyogeDg2LTY0IGFuZCBzMzkwIHN0YWNrIHNwYWNlIGFsbG9jYXRpb24gaXMgaGFuZGxlZCBpbiBwcmVwX21hY2hkZXAuICAqLwotI2lmICFkZWZpbmVkIE02OEsgJiYgIWRlZmluZWQgX194ODZfNjRfXyAmJiAhZGVmaW5lZCBTMzkwCi0gIC8qIE1ha2Ugc3BhY2UgZm9yIHRoZSByZXR1cm4gc3RydWN0dXJlIHBvaW50ZXIgKi8KLSAgaWYgKGNpZi0+cnR5cGUtPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUCi0gICAgICAvKiBNU1ZDIHJldHVybnMgc21hbGwgc3RydWN0dXJlcyBpbiByZWdpc3RlcnMuICBCdXQgd2UgaGF2ZSBhIGRpZmZlcmVudAotICAgICAgd29ya2Fyb3VuZDogcHJldGVuZCBpbnQzMiBvciBpbnQ2NCByZXR1cm4gdHlwZSwgYW5kIGNvbnZlcnRpbmcgdG8KLSAgICAgIHN0cnVjdHVyZSBhZnRlcndhcmRzLiAqLwotI2lmZGVmIFNQQVJDCi0gICAgICAmJiAoY2lmLT5hYmkgIT0gRkZJX1Y5IHx8IGNpZi0+cnR5cGUtPnNpemUgPiAzMikKLSNlbmRpZgotICAgICAgKQotICAgIGJ5dGVzID0gU1RBQ0tfQVJHX1NJWkUoc2l6ZW9mKHZvaWQqKSk7Ci0jZW5kaWYKLQotICBmb3IgKHB0ciA9IGNpZi0+YXJnX3R5cGVzLCBpID0gY2lmLT5uYXJnczsgaSA+IDA7IGktLSwgcHRyKyspCi0gICAgewotCi0gICAgICAvKiBJbml0aWFsaXplIGFueSB1bmluaXRpYWxpemVkIGFnZ3JlZ2F0ZSB0eXBlIGRlZmluaXRpb25zICovCi0gICAgICBpZiAoKCgqcHRyKS0+c2l6ZSA9PSAwKSAmJiAoaW5pdGlhbGl6ZV9hZ2dyZWdhdGUoKCpwdHIpKSAhPSBGRklfT0spKQotCXJldHVybiBGRklfQkFEX1RZUEVERUY7Ci0KLSAgICAgIC8qIFBlcmZvcm0gYSBzYW5pdHkgY2hlY2sgb24gdGhlIGFyZ3VtZW50IHR5cGUsIGRvIHRoaXMgCi0JIGNoZWNrIGFmdGVyIHRoZSBpbml0aWFsaXphdGlvbi4gICovCi0gICAgICBGRklfQVNTRVJUX1ZBTElEX1RZUEUoKnB0cik7Ci0KLSNpZiAhZGVmaW5lZCBfX3g4Nl82NF9fICYmICFkZWZpbmVkIFMzOTAKLSNpZmRlZiBTUEFSQwotICAgICAgaWYgKCgoKnB0ciktPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUCi0JICAgJiYgKCgqcHRyKS0+c2l6ZSA+IDE2IHx8IGNpZi0+YWJpICE9IEZGSV9WOSkpCi0JICB8fCAoKCpwdHIpLT50eXBlID09IEZGSV9UWVBFX0xPTkdET1VCTEUKLQkgICAgICAmJiBjaWYtPmFiaSAhPSBGRklfVjkpKQotCWJ5dGVzICs9IHNpemVvZih2b2lkKik7Ci0gICAgICBlbHNlCi0jZW5kaWYKLQl7Ci0jaWZuZGVmIF9NU0NfVkVSCi0JCS8qIERvbid0IGtub3cgaWYgdGhpcyBpcyBhIGxpYmZmaSBidWcgb3Igbm90LiAgQXQgbGVhc3Qgb24KLQkJICAgV2luZG93cyB3aXRoIE1TVkMsIGZ1bmN0aW9uIGNhbGwgcGFyYW1ldGVycyBhcmUgKm5vdCoKLQkJICAgYWxpZ25lZCBpbiB0aGUgc2FtZSB3YXkgYXMgc3RydWN0dXJlIGZpZWxkcyBhcmUsIHRoZXkgYXJlCi0JCSAgIG9ubHkgYWxpZ25lZCBpbiBpbnRlZ2VyIGJvdW5kYXJpZXMuCi0KLQkJICAgVGhpcyBkb2Vzbid0IGRvIGFueSBoYXJtIGZvciBjZGVjbCBmdW5jdGlvbnMgYW5kIGNsb3N1cmVzLAotCQkgICBzaW5jZSB0aGUgY2FsbGVyIGNsZWFucyB1cCB0aGUgc3RhY2ssIGJ1dCBpdCBpcyB3cm9uZyBmb3IKLQkJICAgc3RkY2FsbCBmdW5jdGlvbnMgd2hlcmUgdGhlIGNhbGxlZSBjbGVhbnMuCi0JCSovCi0KLQkgIC8qIEFkZCBhbnkgcGFkZGluZyBpZiBuZWNlc3NhcnkgKi8KLQkgIGlmICgoKCpwdHIpLT5hbGlnbm1lbnQgLSAxKSAmIGJ5dGVzKQotCSAgICBieXRlcyA9IEFMSUdOKGJ5dGVzLCAoKnB0ciktPmFsaWdubWVudCk7Ci0JICAKLSNlbmRpZgotCSAgYnl0ZXMgKz0gU1RBQ0tfQVJHX1NJWkUoKCpwdHIpLT5zaXplKTsKLQl9Ci0jZW5kaWYKLSAgICB9Ci0KLSAgY2lmLT5ieXRlcyA9IGJ5dGVzOwotCi0gIC8qIFBlcmZvcm0gbWFjaGluZSBkZXBlbmRlbnQgY2lmIHByb2Nlc3NpbmcgKi8KLSAgcmV0dXJuIGZmaV9wcmVwX2NpZl9tYWNoZGVwKGNpZik7Ci19CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9zeXN2LmFzbSBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfYXJtX3dpbmNlL3N5c3YuYXNtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYjc4YjkwLi4wMDAwMDAwCi0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfYXJtX3dpbmNlL3N5c3YuYXNtCisrKyAvZGV2L251bGwKQEAgLTEsMjI4ICswLDAgQEAKLTsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLTsgIHN5c3YuUyAtIENvcHlyaWdodCAoYykgMTk5OCBSZWQgSGF0LCBJbmMuCi07ICAKLTsgIEFSTSBGb3JlaWduIEZ1bmN0aW9uIEludGVyZmFjZSAKLTsKLTsgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwotOyAgYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCi07ICBgYFNvZnR3YXJlJycpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKLTsgIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKLTsgIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bwotOyAgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCi07ICB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci07Ci07ICBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZAotOyAgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi07Ci07ICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTCi07ICBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCi07ICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuCi07ICBJTiBOTyBFVkVOVCBTSEFMTCBDWUdOVVMgU09MVVRJT05TIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SCi07ICBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKLTsgIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgotOyAgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgotOyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotOyNkZWZpbmUgTElCRkZJX0FTTSAgICAgCi07I2luY2x1ZGUgPGZmaWNvbmZpZy5oPgotOyNpbmNsdWRlIDxmZmkuaD4KLTsjaWZkZWYgSEFWRV9NQUNISU5FX0FTTV9ICi07I2luY2x1ZGUgPG1hY2hpbmUvYXNtLmg+Ci07I2Vsc2UKLTsjaWZkZWYgX19VU0VSX0xBQkVMX1BSRUZJWF9fCi07I2RlZmluZSBDT05DQVQxKGEsIGIpIENPTkNBVDIoYSwgYikKLTsjZGVmaW5lIENPTkNBVDIoYSwgYikgYSAjIyBiCi0KLTsvKiBVc2UgdGhlIHJpZ2h0IHByZWZpeCBmb3IgZ2xvYmFsIGxhYmVscy4gICovCi07I2RlZmluZSBDTkFNRSh4KSBDT05DQVQxIChfX1VTRVJfTEFCRUxfUFJFRklYX18sIHgpCi07I2Vsc2UKLTsjZGVmaW5lIENOQU1FKHgpIHgKLTsjZW5kaWYKLTsjZGVmaW5lIEVOVFJZKHgpIC5nbG9ibCBDTkFNRSh4KTsgLnR5cGUgQ05BTUUoeCksJWZ1bmN0aW9uOyBDTkFNRSh4KToKLTsjZW5kaWYKLQotCi1GRklfVFlQRV9WT0lEICAgICAgIEVRVSAwCi1GRklfVFlQRV9JTlQgICAgICAgIEVRVSAxCi1GRklfVFlQRV9GTE9BVCAgICAgIEVRVSAyCi1GRklfVFlQRV9ET1VCTEUgICAgIEVRVSAzCi07RkZJX1RZUEVfTE9OR0RPVUJMRSBFUVUgNAotRkZJX1RZUEVfVUlOVDggICAgICBFUVUgNQotRkZJX1RZUEVfU0lOVDggICAgICBFUVUgNgotRkZJX1RZUEVfVUlOVDE2ICAgICBFUVUgNwotRkZJX1RZUEVfU0lOVDE2ICAgICBFUVUgOAotRkZJX1RZUEVfVUlOVDMyICAgICBFUVUgOQotRkZJX1RZUEVfU0lOVDMyICAgICBFUVUgMTAKLUZGSV9UWVBFX1VJTlQ2NCAgICAgRVFVIDExCi1GRklfVFlQRV9TSU5UNjQgICAgIEVRVSAxMgotRkZJX1RZUEVfU1RSVUNUICAgICBFUVUgMTMKLUZGSV9UWVBFX1BPSU5URVIgICAgRVFVIDE0Ci0KLTsgV2luQ0UgYWx3YXlzIHVzZXMgc29mdHdhcmUgZmxvYXRpbmcgcG9pbnQgKEkgdGhpbmspCi1fX1NPRlRGUF9fIEVRVSB7VFJVRX0KLQotCi0gICAgQVJFQSB8LnRleHR8LCBDT0RFLCBBUk0gICAgIDsgLnRleHQKLQotCi0gICAgOyBhMTogICBmZmlfcHJlcF9hcmdzCi0gICAgOyBhMjogICAmZWNpZgotICAgIDsgYTM6ICAgY2lmLT5ieXRlcwotICAgIDsgYTQ6ICAgZmlnLT5mbGFncwotICAgIDsgc3ArMDogZWNpZi5ydmFsdWUKLSAgICA7IHNwKzQ6IGZuCi0KLSAgICA7IFRoaXMgYXNzdW1lcyB3ZSBhcmUgdXNpbmcgZ2FzLgotO0VOVFJZKGZmaV9jYWxsX1NZU1YpCi0KLSAgICBFWFBPUlQgfGZmaV9jYWxsX1NZU1Z8Ci0KLXxmZmlfY2FsbF9TWVNWfCBQUk9DCi0KLSAgICA7IFNhdmUgcmVnaXN0ZXJzCi0gICAgc3RtZmQgc3AhLCB7YTEtYTQsIGZwLCBscn0KLSAgICBtb3YgICBmcCwgc3AKLQotICAgIDsgTWFrZSByb29tIGZvciBhbGwgb2YgdGhlIG5ldyBhcmdzLgotICAgIHN1YiAgIHNwLCBmcCwgYTMKLQotICAgIDsgUGxhY2UgYWxsIG9mIHRoZSBmZmlfcHJlcF9hcmdzIGluIHBvc2l0aW9uCi0gICAgbW92ICAgaXAsIGExCi0gICAgbW92ICAgYTEsIHNwCi0gICAgOyAgICAgYTIgYWxyZWFkeSBzZXQKLQotICAgIDsgQW5kIGNhbGwKLSAgICBtb3YgICBsciwgcGMKLSAgICBtb3YgICBwYywgaXAKLQotICAgIDsgbW92ZSBmaXJzdCA0IHBhcmFtZXRlcnMgaW4gcmVnaXN0ZXJzCi0gICAgbGRyICAgYTEsIFtzcCwgIzBdCi0gICAgbGRyICAgYTIsIFtzcCwgIzRdCi0gICAgbGRyICAgYTMsIFtzcCwgIzhdCi0gICAgbGRyICAgYTQsIFtzcCwgIzEyXQotCi0gICAgOyBhbmQgYWRqdXN0IHN0YWNrCi0gICAgbGRyICAgaXAsIFtmcCwgIzhdCi0gICAgY21wICAgaXAsICMxNgotICAgIG1vdmdlIGlwLCAjMTYKLSAgICBhZGQgICBzcCwgc3AsIGlwCi0KLSAgICA7IGNhbGwgZnVuY3Rpb24KLSAgICBtb3YgICBsciwgcGMKLSAgICBsZHIgICBwYywgW2ZwLCAjMjhdCi0KLSAgICA7IFJlbW92ZSB0aGUgc3BhY2Ugd2UgcHVzaGVkIGZvciB0aGUgYXJncwotICAgIG1vdiAgIHNwLCBmcAotCi0gICAgOyBMb2FkIGEzIHdpdGggdGhlIHBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgdGhlIHJldHVybiB2YWx1ZQotICAgIGxkciAgIGEzLCBbc3AsICMyNF0KLQotICAgIDsgTG9hZCBhNCB3aXRoIHRoZSByZXR1cm4gdHlwZSBjb2RlIAotICAgIGxkciAgIGE0LCBbc3AsICMxMl0KLQotICAgIDsgSWYgdGhlIHJldHVybiB2YWx1ZSBwb2ludGVyIGlzIE5VTEwsIGFzc3VtZSBubyByZXR1cm4gdmFsdWUuCi0gICAgY21wICAgYTMsICMwCi0gICAgYmVxICAgY2FsbF9lcGlsb2d1ZQotCi07IHJldHVybiBJTlQKLSAgICBjbXAgICBhNCwgI0ZGSV9UWVBFX0lOVAotICAgIHN0cmVxIGExLCBbYTNdCi0gICAgYmVxICAgY2FsbF9lcGlsb2d1ZQotCi07IHJldHVybiBGTE9BVAotICAgIGNtcCAgICAgYTQsICNGRklfVFlQRV9GTE9BVAotICAgIFsgX19TT0ZURlBfXyAgICAgICAgICAgICAgICAgICAgO2lmZGVmIF9fU09GVEZQX18KLSAgICBzdHJlcSAgIGExLCBbYTNdCi0gICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7ZWxzZQotICAgIHN0ZmVxcyAgZjAsIFthM10KLSAgICBdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDtlbmRpZgotICAgIGJlcSAgICAgY2FsbF9lcGlsb2d1ZQotCi07IHJldHVybiBET1VCTEUgb3IgTE9OR0RPVUJMRQotICAgIGNtcCAgICAgYTQsICNGRklfVFlQRV9ET1VCTEUKLSAgICBbIF9fU09GVEZQX18gICAgICAgICAgICAgICAgICAgIDtpZmRlZiBfX1NPRlRGUF9fCi0gICAgc3RtZXFpYSBhMywge2ExLCBhMn0KLSAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDtlbHNlCi0gICAgc3RmZXFkICBmMCwgW2EzXQotICAgIF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgO2VuZGlmCi0gICAgYmVxICAgICBjYWxsX2VwaWxvZ3VlCi0KLTsgcmV0dXJuIFNJTlQ2NCBvciBVSU5UNjQKLSAgICBjbXAgICAgIGE0LCAjRkZJX1RZUEVfU0lOVDY0Ci0gICAgc3RtZXFpYSBhMywge2ExLCBhMn0KLQotY2FsbF9lcGlsb2d1ZQotICAgIGxkbWZkICAgc3AhLCB7YTEtYTQsIGZwLCBwY30KLQotOy5mZmlfY2FsbF9TWVNWX2VuZDoKLSAgICA7LnNpemUgICAgQ05BTUUoZmZpX2NhbGxfU1lTViksLmZmaV9jYWxsX1NZU1ZfZW5kLUNOQU1FKGZmaV9jYWxsX1NZU1YpCi0gICAgRU5EUAotCi0KLVJFU0VSVkVfUkVUVVJOIEVRVSAxNgotCi0gICAgOyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgdHJhbXBvbGluZQotICAgIDsgSXQgaXMgTk9UIGNhbGxhYmxlIGZyb20gQwotICAgIDsgaXAgPSBwb2ludGVyIHRvIHN0cnVjdCBmZmlfY2xvc3VyZQotCi0gICAgSU1QT1JUIHxmZmlfY2xvc3VyZV9TWVNWX2lubmVyfAotCi0gICAgRVhQT1JUIHxmZmlfY2xvc3VyZV9TWVNWfAotfGZmaV9jbG9zdXJlX1NZU1Z8IFBST0MKLQotICAgIDsgU3RvcmUgdGhlIGFyZ3VtZW50IHJlZ2lzdGVycyBvbiB0aGUgc3RhY2sKLSAgICBzdG1mZCAgIHNwISwge2ExLWE0fQotICAgIDsgUHVzaCB0aGUgcmV0dXJuIGFkZHJlc3Mgb250byB0aGUgc3RhY2sKLSAgICBzdG1mZCAgIHNwISwge2xyfQotCi0gICAgbW92ICAgICBhMSwgaXAgICAgICAgICAgICA7IGZpcnN0IGFyZyA9IGFkZHJlc3Mgb2YgZmZpX2Nsb3N1cmUKLSAgICBhZGQgICAgIGEyLCBzcCwgIzQgICAgICAgIDsgc2Vjb25kIGFyZyA9IHNwKzQgKHBvaW50cyB0byBzYXZlZCBhMSkKLQotICAgIDsgQWxsb2NhdGUgc3BhY2UgZm9yIGEgbm9uLXN0cnVjdCByZXR1cm4gdmFsdWUKLSAgICBzdWIgICAgIHNwLCBzcCwgI1JFU0VSVkVfUkVUVVJOCi0gICAgbW92ICAgICBhMywgc3AgICAgICAgICAgICA7IHRoaXJkIGFyZyA9IHJldHVybiB2YWx1ZSBhZGRyZXNzCi0KLSAgICA7IHN0YXRpYyB1bnNpZ25lZCBpbnQKLSAgICA7IGZmaV9jbG9zdXJlX1NZU1ZfaW5uZXIgKGZmaV9jbG9zdXJlICpjbG9zdXJlLCBjaGFyICppbl9hcmdzLCB2b2lkICpydmFsdWUpCi0gICAgYmwgICAgICBmZmlfY2xvc3VyZV9TWVNWX2lubmVyCi0gICAgOyBhMSBub3cgY29udGFpbnMgdGhlIHJldHVybiB0eXBlIGNvZGUgCi0KLSAgICA7IEF0IHRoaXMgcG9pbnQgdGhlIHJldHVybiB2YWx1ZSBpcyBvbiB0aGUgc3RhY2sKLSAgICA7IFRyYW5zZmVyIGl0IHRvIHRoZSBjb3JyZWN0IHJlZ2lzdGVycyBpZiBuZWNlc3NhcnkKLQotOyByZXR1cm4gSU5UCi0gICAgY21wICAgICBhMSwgI0ZGSV9UWVBFX0lOVAotICAgIGxkcmVxICAgYTEsIFtzcF0KLSAgICBiZXEgICAgIGNsb3N1cmVfZXBpbG9ndWUKLQotOyByZXR1cm4gRkxPQVQKLSAgICBjbXAgICAgIGExLCAjRkZJX1RZUEVfRkxPQVQKLSAgICBbIF9fU09GVEZQX18gICAgICAgICAgICAgICAgICAgIDtpZmRlZiBfX1NPRlRGUF9fCi0gICAgbGRyZXEgICBhMSwgW3NwXQotICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgO2Vsc2UKLSAgICBzdGZlcXMgIGYwLCBbc3BdCi0gICAgXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7ZW5kaWYKLSAgICBiZXEgICAgIGNsb3N1cmVfZXBpbG9ndWUKLQotOyByZXR1cm4gRE9VQkxFIG9yIExPTkdET1VCTEUKLSAgICBjbXAgICAgIGExLCAjRkZJX1RZUEVfRE9VQkxFCi0gICAgWyBfX1NPRlRGUF9fICAgICAgICAgICAgICAgICAgICA7aWZkZWYgX19TT0ZURlBfXwotICAgIGxkbWVxaWEgc3AsIHthMSwgYTJ9Ci0gICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7ZWxzZQotICAgIHN0ZmVxZCAgZjAsIFtzcF0KLSAgICBdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDtlbmRpZgotICAgIGJlcSAgICAgY2xvc3VyZV9lcGlsb2d1ZQotCi07IHJldHVybiBTSU5UNjQgb3IgVUlOVDY0Ci0gICAgY21wICAgICBhMSwgI0ZGSV9UWVBFX1NJTlQ2NAotICAgIGxkbWVxaWEgc3AsIHthMSwgYTJ9Ci0KLWNsb3N1cmVfZXBpbG9ndWUKLSAgICBhZGQgICAgIHNwLCBzcCwgI1JFU0VSVkVfUkVUVVJOICAgOyByZW1vdmUgcmV0dXJuIHZhbHVlIGJ1ZmZlcgotICAgIGxkbWZkICAgc3AhLCB7aXB9ICAgICAgICAgOyBpcCA9IHBvcCByZXR1cm4gYWRkcmVzcwotICAgIGFkZCAgICAgc3AsIHNwLCAjMTYgICAgICAgOyByZW1vdmUgc2F2ZWQgYXJndW1lbnQgcmVnaXN0ZXJzIHthMS1hNH0gZnJvbSB0aGUgc3RhY2sKLSAgICBtb3YgICAgIHBjLCBpcCAgICAgICAgICAgIDsgcmV0dXJuCi0KLSAgICBFTkRQICAgIDsgZmZpX2Nsb3N1cmVfU1lTVgotCi0gICAgRU5ECmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvc3RnZGljdC5jIGIvTW9kdWxlcy9fY3R5cGVzL3N0Z2RpY3QuYwppbmRleCA2YzBmZGE5Li43MTZkMWU5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvc3RnZGljdC5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9zdGdkaWN0LmMKQEAgLTQ4OSw3ICs0ODksNyBAQAogCiAgICAgICAgIGlmIChpc1N0cnVjdCAmJiAhaXNQYWNrZWQpIHsKICAgICAgICAgICAgIGNoYXIgKmZpZWxkZm10ID0gZGljdC0+Zm9ybWF0ID8gZGljdC0+Zm9ybWF0IDogIkIiOwotICAgICAgICAgICAgY2hhciAqZmllbGRuYW1lID0gX1B5VW5pY29kZV9Bc1N0cmluZyhuYW1lKTsKKyAgICAgICAgICAgIGNoYXIgKmZpZWxkbmFtZSA9IFB5VW5pY29kZV9Bc1VURjgobmFtZSk7CiAgICAgICAgICAgICBjaGFyICpwdHI7CiAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgIGNoYXIgKmJ1ZjsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N1cnNlc19wYW5lbC5jIGIvTW9kdWxlcy9fY3Vyc2VzX3BhbmVsLmMKaW5kZXggMjI4ZjQ5Ny4uMThlZjMzNSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3Vyc2VzX3BhbmVsLmMKKysrIGIvTW9kdWxlcy9fY3Vyc2VzX3BhbmVsLmMKQEAgLTYsNyArNiw3IEBACiAKIC8qIFJlbGVhc2UgTnVtYmVyICovCiAKLXN0YXRpYyBjaGFyICpQeUN1cnNlc1ZlcnNpb24gPSAiMi4xIjsKK3N0YXRpYyBjb25zdCBjaGFyIFB5Q3Vyc2VzVmVyc2lvbltdID0gIjIuMSI7CiAKIC8qIEluY2x1ZGVzICovCiAKQEAgLTU2LDcgKzU2LDcgQEAKICAqLwogCiBzdGF0aWMgUHlPYmplY3QgKgotUHlDdXJzZXNDaGVja0VSUihpbnQgY29kZSwgY2hhciAqZm5hbWUpCitQeUN1cnNlc0NoZWNrRVJSKGludCBjb2RlLCBjb25zdCBjaGFyICpmbmFtZSkKIHsKICAgICBpZiAoY29kZSAhPSBFUlIpIHsKICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3Vyc2VzbW9kdWxlLmMgYi9Nb2R1bGVzL19jdXJzZXNtb2R1bGUuYwppbmRleCA4OTZkNDBkLi4zYmYyY2E3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdXJzZXNtb2R1bGUuYworKysgYi9Nb2R1bGVzL19jdXJzZXNtb2R1bGUuYwpAQCAtMjMwNyw3ICsyMzA3LDcgQEAKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKLSAgICBkYXRhID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzdHJlYW0sICZQeUlkX3JlYWQsICIiKTsKKyAgICBkYXRhID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzdHJlYW0sICZQeUlkX3JlYWQsIE5VTEwpOwogICAgIGlmIChkYXRhID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgaWYgKCFQeUJ5dGVzX0NoZWNrKGRhdGEpKSB7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kYXRldGltZW1vZHVsZS5jIGIvTW9kdWxlcy9fZGF0ZXRpbWVtb2R1bGUuYwppbmRleCBmNDE5Y2IyLi5jMDljY2U5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19kYXRldGltZW1vZHVsZS5jCisrKyBiL01vZHVsZXMvX2RhdGV0aW1lbW9kdWxlLmMKQEAgLTU2LDYgKzU2LDcgQEAKICNkZWZpbmUgREFURV9HRVRfTUlOVVRFICAgICAgICAgUHlEYXRlVGltZV9EQVRFX0dFVF9NSU5VVEUKICNkZWZpbmUgREFURV9HRVRfU0VDT05EICAgICAgICAgUHlEYXRlVGltZV9EQVRFX0dFVF9TRUNPTkQKICNkZWZpbmUgREFURV9HRVRfTUlDUk9TRUNPTkQgICAgUHlEYXRlVGltZV9EQVRFX0dFVF9NSUNST1NFQ09ORAorI2RlZmluZSBEQVRFX0dFVF9GT0xEICAgICAgICAgICBQeURhdGVUaW1lX0RBVEVfR0VUX0ZPTEQKIAogLyogRGF0ZSBhY2Nlc3NvcnMgZm9yIGRhdGUgYW5kIGRhdGV0aW1lLiAqLwogI2RlZmluZSBTRVRfWUVBUihvLCB2KSAgICAgICAgICAoKChvKS0+ZGF0YVswXSA9ICgodikgJiAweGZmMDApID4+IDgpLCBcCkBAIC03MSwxMiArNzIsMTQgQEAKICAgICAoKChvKS0+ZGF0YVs3XSA9ICgodikgJiAweGZmMDAwMCkgPj4gMTYpLCBcCiAgICAgICgobyktPmRhdGFbOF0gPSAoKHYpICYgMHgwMGZmMDApID4+IDgpLCBcCiAgICAgICgobyktPmRhdGFbOV0gPSAoKHYpICYgMHgwMDAwZmYpKSkKKyNkZWZpbmUgREFURV9TRVRfRk9MRChvLCB2KSAgIChQeURhdGVUaW1lX0RBVEVfR0VUX0ZPTEQobykgPSAodikpCiAKIC8qIFRpbWUgYWNjZXNzb3JzIGZvciB0aW1lLiAqLwogI2RlZmluZSBUSU1FX0dFVF9IT1VSICAgICAgICAgICBQeURhdGVUaW1lX1RJTUVfR0VUX0hPVVIKICNkZWZpbmUgVElNRV9HRVRfTUlOVVRFICAgICAgICAgUHlEYXRlVGltZV9USU1FX0dFVF9NSU5VVEUKICNkZWZpbmUgVElNRV9HRVRfU0VDT05EICAgICAgICAgUHlEYXRlVGltZV9USU1FX0dFVF9TRUNPTkQKICNkZWZpbmUgVElNRV9HRVRfTUlDUk9TRUNPTkQgICAgUHlEYXRlVGltZV9USU1FX0dFVF9NSUNST1NFQ09ORAorI2RlZmluZSBUSU1FX0dFVF9GT0xEICAgICAgICAgICBQeURhdGVUaW1lX1RJTUVfR0VUX0ZPTEQKICNkZWZpbmUgVElNRV9TRVRfSE9VUihvLCB2KSAgICAgKFB5RGF0ZVRpbWVfVElNRV9HRVRfSE9VUihvKSA9ICh2KSkKICNkZWZpbmUgVElNRV9TRVRfTUlOVVRFKG8sIHYpICAgKFB5RGF0ZVRpbWVfVElNRV9HRVRfTUlOVVRFKG8pID0gKHYpKQogI2RlZmluZSBUSU1FX1NFVF9TRUNPTkQobywgdikgICAoUHlEYXRlVGltZV9USU1FX0dFVF9TRUNPTkQobykgPSAodikpCkBAIC04NCw2ICs4Nyw3IEBACiAgICAgKCgobyktPmRhdGFbM10gPSAoKHYpICYgMHhmZjAwMDApID4+IDE2KSwgXAogICAgICAoKG8pLT5kYXRhWzRdID0gKCh2KSAmIDB4MDBmZjAwKSA+PiA4KSwgXAogICAgICAoKG8pLT5kYXRhWzVdID0gKCh2KSAmIDB4MDAwMGZmKSkpCisjZGVmaW5lIFRJTUVfU0VUX0ZPTEQobywgdikgICAoUHlEYXRlVGltZV9USU1FX0dFVF9GT0xEKG8pID0gKHYpKQogCiAvKiBEZWx0YSBhY2Nlc3NvcnMgZm9yIHRpbWVkZWx0YS4gKi8KICNkZWZpbmUgR0VUX1REX0RBWVMobykgICAgICAgICAgKCgoUHlEYXRlVGltZV9EZWx0YSAqKShvKSktPmRheXMpCkBAIC0xODQsMTIgKzE4OCwxMiBAQAogICogYW5kIHRoZSBudW1iZXIgb2YgZGF5cyBiZWZvcmUgdGhhdCBtb250aCBpbiB0aGUgc2FtZSB5ZWFyLiAgVGhlc2UKICAqIGFyZSBjb3JyZWN0IGZvciBub24tbGVhcCB5ZWFycyBvbmx5LgogICovCi1zdGF0aWMgaW50IF9kYXlzX2luX21vbnRoW10gPSB7CitzdGF0aWMgY29uc3QgaW50IF9kYXlzX2luX21vbnRoW10gPSB7CiAgICAgMCwgLyogdW51c2VkOyB0aGlzIHZlY3RvciB1c2VzIDEtYmFzZWQgaW5kZXhpbmcgKi8KICAgICAzMSwgMjgsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzEsIDMwLCAzMSwgMzAsIDMxCiB9OwogCi1zdGF0aWMgaW50IF9kYXlzX2JlZm9yZV9tb250aFtdID0geworc3RhdGljIGNvbnN0IGludCBfZGF5c19iZWZvcmVfbW9udGhbXSA9IHsKICAgICAwLCAvKiB1bnVzZWQ7IHRoaXMgdmVjdG9yIHVzZXMgMS1iYXNlZCBpbmRleGluZyAqLwogICAgIDAsIDMxLCA1OSwgOTAsIDEyMCwgMTUxLCAxODEsIDIxMiwgMjQzLCAyNzMsIDMwNCwgMzM0CiB9OwpAQCAtNDE3LDcgKzQyMSw3IEBACiAgKiBhcmVuJ3QsIHJhaXNlIFZhbHVlRXJyb3IgYW5kIHJldHVybiAtMS4KICAqLwogc3RhdGljIGludAotY2hlY2tfdGltZV9hcmdzKGludCBoLCBpbnQgbSwgaW50IHMsIGludCB1cykKK2NoZWNrX3RpbWVfYXJncyhpbnQgaCwgaW50IG0sIGludCBzLCBpbnQgdXMsIGludCBmb2xkKQogewogICAgIGlmIChoIDwgMCB8fCBoID4gMjMpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCkBAIC00MzksNiArNDQzLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAibWljcm9zZWNvbmQgbXVzdCBiZSBpbiAwLi45OTk5OTkiKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KKyAgICBpZiAoZm9sZCAhPSAwICYmIGZvbGQgIT0gMSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJmb2xkIG11c3QgYmUgZWl0aGVyIDAgb3IgMSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQogICAgIHJldHVybiAwOwogfQogCkBAIC02NzQsOCArNjgzLDggQEAKIAogLyogQ3JlYXRlIGEgZGF0ZXRpbWUgaW5zdGFuY2Ugd2l0aCBubyByYW5nZSBjaGVja2luZy4gKi8KIHN0YXRpYyBQeU9iamVjdCAqCi1uZXdfZGF0ZXRpbWVfZXgoaW50IHllYXIsIGludCBtb250aCwgaW50IGRheSwgaW50IGhvdXIsIGludCBtaW51dGUsCi0gICAgICAgICAgICAgaW50IHNlY29uZCwgaW50IHVzZWNvbmQsIFB5T2JqZWN0ICp0emluZm8sIFB5VHlwZU9iamVjdCAqdHlwZSkKK25ld19kYXRldGltZV9leDIoaW50IHllYXIsIGludCBtb250aCwgaW50IGRheSwgaW50IGhvdXIsIGludCBtaW51dGUsCisgICAgICAgICAgICAgICAgIGludCBzZWNvbmQsIGludCB1c2Vjb25kLCBQeU9iamVjdCAqdHppbmZvLCBpbnQgZm9sZCwgUHlUeXBlT2JqZWN0ICp0eXBlKQogewogICAgIFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKnNlbGY7CiAgICAgY2hhciBhd2FyZSA9IHR6aW5mbyAhPSBQeV9Ob25lOwpAQCAtNjkyLDE4ICs3MDEsMjcgQEAKICAgICAgICAgICAgIFB5X0lOQ1JFRih0emluZm8pOwogICAgICAgICAgICAgc2VsZi0+dHppbmZvID0gdHppbmZvOwogICAgICAgICB9CisgICAgICAgIERBVEVfU0VUX0ZPTEQoc2VsZiwgZm9sZCk7CiAgICAgfQogICAgIHJldHVybiAoUHlPYmplY3QgKilzZWxmOwogfQogCi0jZGVmaW5lIG5ld19kYXRldGltZSh5LCBtLCBkLCBoaCwgbW0sIHNzLCB1cywgdHppbmZvKSAgICAgICAgICAgXAotICAgIG5ld19kYXRldGltZV9leCh5LCBtLCBkLCBoaCwgbW0sIHNzLCB1cywgdHppbmZvLCAgICAgICAgICAgIFwKK3N0YXRpYyBQeU9iamVjdCAqCituZXdfZGF0ZXRpbWVfZXgoaW50IHllYXIsIGludCBtb250aCwgaW50IGRheSwgaW50IGhvdXIsIGludCBtaW51dGUsCisgICAgICAgICAgICAgICAgaW50IHNlY29uZCwgaW50IHVzZWNvbmQsIFB5T2JqZWN0ICp0emluZm8sIFB5VHlwZU9iamVjdCAqdHlwZSkKK3sKKyAgICByZXR1cm4gbmV3X2RhdGV0aW1lX2V4Mih5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwgdXNlY29uZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0emluZm8sIDAsIHR5cGUpOworfQorCisjZGVmaW5lIG5ld19kYXRldGltZSh5LCBtLCBkLCBoaCwgbW0sIHNzLCB1cywgdHppbmZvLCBmb2xkKSBcCisgICAgbmV3X2RhdGV0aW1lX2V4Mih5LCBtLCBkLCBoaCwgbW0sIHNzLCB1cywgdHppbmZvLCBmb2xkLCBcCiAgICAgICAgICAgICAgICAgICAgICZQeURhdGVUaW1lX0RhdGVUaW1lVHlwZSkKIAogLyogQ3JlYXRlIGEgdGltZSBpbnN0YW5jZSB3aXRoIG5vIHJhbmdlIGNoZWNraW5nLiAqLwogc3RhdGljIFB5T2JqZWN0ICoKLW5ld190aW1lX2V4KGludCBob3VyLCBpbnQgbWludXRlLCBpbnQgc2Vjb25kLCBpbnQgdXNlY29uZCwKLSAgICAgICAgICAgIFB5T2JqZWN0ICp0emluZm8sIFB5VHlwZU9iamVjdCAqdHlwZSkKK25ld190aW1lX2V4MihpbnQgaG91ciwgaW50IG1pbnV0ZSwgaW50IHNlY29uZCwgaW50IHVzZWNvbmQsCisgICAgICAgICAgICAgUHlPYmplY3QgKnR6aW5mbywgaW50IGZvbGQsIFB5VHlwZU9iamVjdCAqdHlwZSkKIHsKICAgICBQeURhdGVUaW1lX1RpbWUgKnNlbGY7CiAgICAgY2hhciBhd2FyZSA9IHR6aW5mbyAhPSBQeV9Ob25lOwpAQCAtNzIwLDEyICs3MzgsMjAgQEAKICAgICAgICAgICAgIFB5X0lOQ1JFRih0emluZm8pOwogICAgICAgICAgICAgc2VsZi0+dHppbmZvID0gdHppbmZvOwogICAgICAgICB9CisgICAgICAgIFRJTUVfU0VUX0ZPTEQoc2VsZiwgZm9sZCk7CiAgICAgfQogICAgIHJldHVybiAoUHlPYmplY3QgKilzZWxmOwogfQogCi0jZGVmaW5lIG5ld190aW1lKGhoLCBtbSwgc3MsIHVzLCB0emluZm8pICAgICAgICAgICAgICAgIFwKLSAgICBuZXdfdGltZV9leChoaCwgbW0sIHNzLCB1cywgdHppbmZvLCAmUHlEYXRlVGltZV9UaW1lVHlwZSkKK3N0YXRpYyBQeU9iamVjdCAqCituZXdfdGltZV9leChpbnQgaG91ciwgaW50IG1pbnV0ZSwgaW50IHNlY29uZCwgaW50IHVzZWNvbmQsCisgICAgICAgICAgICBQeU9iamVjdCAqdHppbmZvLCBQeVR5cGVPYmplY3QgKnR5cGUpCit7CisgICAgcmV0dXJuIG5ld190aW1lX2V4Mihob3VyLCBtaW51dGUsIHNlY29uZCwgdXNlY29uZCwgdHppbmZvLCAwLCB0eXBlKTsKK30KKworI2RlZmluZSBuZXdfdGltZShoaCwgbW0sIHNzLCB1cywgdHppbmZvLCBmb2xkKSAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIG5ld190aW1lX2V4MihoaCwgbW0sIHNzLCB1cywgdHppbmZvLCBmb2xkLCAmUHlEYXRlVGltZV9UaW1lVHlwZSkKIAogLyogQ3JlYXRlIGEgdGltZWRlbHRhIGluc3RhbmNlLiAgTm9ybWFsaXplIHRoZSBtZW1iZXJzIGlmZiBub3JtYWxpemUgaXMKICAqIHRydWUuICBQYXNzaW5nIGZhbHNlIGlzIGEgc3BlZWQgb3B0aW1pemF0aW9uLCBpZiB5b3Uga25vdyBmb3Igc3VyZQpAQCAtODczLDcgKzg5OSw3IEBACiAgKiB0aGlzIHJldHVybnMgTlVMTC4gIEVsc2UgcmVzdWx0IGlzIHJldHVybmVkLgogICovCiBzdGF0aWMgUHlPYmplY3QgKgotY2FsbF90emluZm9fbWV0aG9kKFB5T2JqZWN0ICp0emluZm8sIGNoYXIgKm5hbWUsIFB5T2JqZWN0ICp0emluZm9hcmcpCitjYWxsX3R6aW5mb19tZXRob2QoUHlPYmplY3QgKnR6aW5mbywgY29uc3QgY2hhciAqbmFtZSwgUHlPYmplY3QgKnR6aW5mb2FyZykKIHsKICAgICBQeU9iamVjdCAqb2Zmc2V0OwogCkBAIC04ODcsMTAgKzkxMywxMCBAQAogICAgIGlmIChvZmZzZXQgPT0gUHlfTm9uZSB8fCBvZmZzZXQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIG9mZnNldDsKICAgICBpZiAoUHlEZWx0YV9DaGVjayhvZmZzZXQpKSB7Ci0gICAgICAgIGlmIChHRVRfVERfTUlDUk9TRUNPTkRTKG9mZnNldCkgIT0gMCB8fCBHRVRfVERfU0VDT05EUyhvZmZzZXQpICUgNjAgIT0gMCkgeworICAgICAgICBpZiAoR0VUX1REX01JQ1JPU0VDT05EUyhvZmZzZXQpICE9IDApIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihvZmZzZXQpOwogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsICJvZmZzZXQgbXVzdCBiZSBhIHRpbWVkZWx0YSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAiIHJlcHJlc2VudGluZyBhIHdob2xlIG51bWJlciBvZiBtaW51dGVzIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgIiByZXByZXNlbnRpbmcgYSB3aG9sZSBudW1iZXIgb2Ygc2Vjb25kcyIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgaWYgKChHRVRfVERfREFZUyhvZmZzZXQpID09IC0xICYmIEdFVF9URF9TRUNPTkRTKG9mZnNldCkgPT0gMCkgfHwKQEAgLTEwMDIsNiArMTAyOCwzMCBAQAogICAgIHJldHVybiByZXByOwogfQogCisvKiByZXByIGlzIGxpa2UgInNvbWVjbGFzcyhhcmcxLCBhcmcyKSIuICBJZiBmb2xkIGlzbid0IDAsCisgKiBzdHVmZgorICogICAgICIsIGZvbGQ9IiArIHJlcHIodHppbmZvKQorICogYmVmb3JlIHRoZSBjbG9zaW5nICIpIi4KKyAqLworc3RhdGljIFB5T2JqZWN0ICoKK2FwcGVuZF9rZXl3b3JkX2ZvbGQoUHlPYmplY3QgKnJlcHIsIGludCBmb2xkKQoreworICAgIFB5T2JqZWN0ICp0ZW1wOworCisgICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhyZXByKSk7CisgICAgaWYgKGZvbGQgPT0gMCkKKyAgICAgICAgcmV0dXJuIHJlcHI7CisgICAgLyogR2V0IHJpZCBvZiB0aGUgdHJhaWxpbmcgJyknLiAqLworICAgIGFzc2VydChQeVVuaWNvZGVfUkVBRF9DSEFSKHJlcHIsIFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlcHIpLTEpID09ICcpJyk7CisgICAgdGVtcCA9IFB5VW5pY29kZV9TdWJzdHJpbmcocmVwciwgMCwgUHlVbmljb2RlX0dFVF9MRU5HVEgocmVwcikgLSAxKTsKKyAgICBQeV9ERUNSRUYocmVwcik7CisgICAgaWYgKHRlbXAgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmVwciA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlVSwgZm9sZD0lZCkiLCB0ZW1wLCBmb2xkKTsKKyAgICBQeV9ERUNSRUYodGVtcCk7CisgICAgcmV0dXJuIHJlcHI7Cit9CisKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogU3RyaW5nIGZvcm1hdCBoZWxwZXJzLgogICovCkBAIC0xMDA5LDEwICsxMDU5LDEwIEBACiBzdGF0aWMgUHlPYmplY3QgKgogZm9ybWF0X2N0aW1lKFB5RGF0ZVRpbWVfRGF0ZSAqZGF0ZSwgaW50IGhvdXJzLCBpbnQgbWludXRlcywgaW50IHNlY29uZHMpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIgKkRheU5hbWVzW10gPSB7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBEYXlOYW1lc1tdID0gewogICAgICAgICAiTW9uIiwgIlR1ZSIsICJXZWQiLCAiVGh1IiwgIkZyaSIsICJTYXQiLCAiU3VuIgogICAgIH07Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIgKk1vbnRoTmFtZXNbXSA9IHsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IE1vbnRoTmFtZXNbXSA9IHsKICAgICAgICAgIkphbiIsICJGZWIiLCAiTWFyIiwgIkFwciIsICJNYXkiLCAiSnVuIiwKICAgICAgICAgIkp1bCIsICJBdWciLCAiU2VwIiwgIk9jdCIsICJOb3YiLCAiRGVjIgogICAgIH07CkBAIC0xMDU3LDEwICsxMTA3LDggQEAKICAgICB9CiAgICAgLyogT2Zmc2V0IGlzIG5vcm1hbGl6ZWQsIHNvIGl0IGlzIG5lZ2F0aXZlIGlmIGRheXMgPCAwICovCiAgICAgaWYgKEdFVF9URF9EQVlTKG9mZnNldCkgPCAwKSB7Ci0gICAgICAgIFB5T2JqZWN0ICp0ZW1wID0gb2Zmc2V0OwogICAgICAgICBzaWduID0gJy0nOwotICAgICAgICBvZmZzZXQgPSBkZWx0YV9uZWdhdGl2ZSgoUHlEYXRlVGltZV9EZWx0YSAqKW9mZnNldCk7Ci0gICAgICAgIFB5X0RFQ1JFRih0ZW1wKTsKKyAgICAgICAgUHlfU0VUUkVGKG9mZnNldCwgZGVsdGFfbmVnYXRpdmUoKFB5RGF0ZVRpbWVfRGVsdGEgKilvZmZzZXQpKTsKICAgICAgICAgaWYgKG9mZnNldCA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KQEAgLTEwNzIsMTAgKzExMjAsMTEgQEAKICAgICBQeV9ERUNSRUYob2Zmc2V0KTsKICAgICBtaW51dGVzID0gZGl2bW9kKHNlY29uZHMsIDYwLCAmc2Vjb25kcyk7CiAgICAgaG91cnMgPSBkaXZtb2QobWludXRlcywgNjAsICZtaW51dGVzKTsKLSAgICBhc3NlcnQoc2Vjb25kcyA9PSAwKTsKLSAgICAvKiBYWFggaWdub3JlIHN1Yi1taW51dGUgZGF0YSwgY3VycmVudGx5IG5vdCBhbGxvd2VkLiAqLwotICAgIFB5T1Nfc25wcmludGYoYnVmLCBidWZsZW4sICIlYyUwMmQlcyUwMmQiLCBzaWduLCBob3Vycywgc2VwLCBtaW51dGVzKTsKLQorICAgIGlmIChzZWNvbmRzID09IDApCisgICAgICAgIFB5T1Nfc25wcmludGYoYnVmLCBidWZsZW4sICIlYyUwMmQlcyUwMmQiLCBzaWduLCBob3Vycywgc2VwLCBtaW51dGVzKTsKKyAgICBlbHNlCisgICAgICAgIFB5T1Nfc25wcmludGYoYnVmLCBidWZsZW4sICIlYyUwMmQlcyUwMmQlcyUwMmQiLCBzaWduLCBob3VycywKKyAgICAgICAgICAgICAgICAgICAgICBzZXAsIG1pbnV0ZXMsIHNlcCwgc2Vjb25kcyk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTExNzAsNyArMTIxOSw3IEBACiAgICAgYXNzZXJ0KG9iamVjdCAmJiBmb3JtYXQgJiYgdGltZXR1cGxlKTsKICAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrKGZvcm1hdCkpOwogICAgIC8qIENvbnZlcnQgdGhlIGlucHV0IGZvcm1hdCB0byBhIEMgc3RyaW5nIGFuZCBzaXplICovCi0gICAgcGluID0gX1B5VW5pY29kZV9Bc1N0cmluZ0FuZFNpemUoZm9ybWF0LCAmZmxlbik7CisgICAgcGluID0gUHlVbmljb2RlX0FzVVRGOEFuZFNpemUoZm9ybWF0LCAmZmxlbik7CiAgICAgaWYgKCFwaW4pCiAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC0xMjM4LDcgKzEyODcsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgYXNzZXJ0KFpyZXBsYWNlbWVudCAhPSBOVUxMKTsKICAgICAgICAgICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2soWnJlcGxhY2VtZW50KSk7Ci0gICAgICAgICAgICBwdG9hcHBlbmQgPSBfUHlVbmljb2RlX0FzU3RyaW5nQW5kU2l6ZShacmVwbGFjZW1lbnQsCisgICAgICAgICAgICBwdG9hcHBlbmQgPSBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZShacmVwbGFjZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZudG9hcHBlbmQpOwogICAgICAgICAgICAgaWYgKHB0b2FwcGVuZCA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gRG9uZTsKQEAgLTEzMjMsNyArMTM3Miw3IEBACiAgICAgaWYgKHRpbWUgIT0gTlVMTCkgewogICAgICAgICBfUHlfSURFTlRJRklFUih0aW1lKTsKIAotICAgICAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHRpbWUsICZQeUlkX3RpbWUsICIoKSIpOworICAgICAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHRpbWUsICZQeUlkX3RpbWUsIE5VTEwpOwogICAgICAgICBQeV9ERUNSRUYodGltZSk7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CkBAIC0yMzA3LDcgKzIzNTYsNyBAQAogICAgIHtOVUxMLCAgICAgIE5VTEx9LAogfTsKIAotc3RhdGljIGNoYXIgZGVsdGFfZG9jW10gPQorc3RhdGljIGNvbnN0IGNoYXIgZGVsdGFfZG9jW10gPQogUHlEb2NfU1RSKCJEaWZmZXJlbmNlIGJldHdlZW4gdHdvIGRhdGV0aW1lIHZhbHVlcy4iKTsKIAogc3RhdGljIFB5TnVtYmVyTWV0aG9kcyBkZWx0YV9hc19udW1iZXIgPSB7CkBAIC0yNDYyLDI3ICsyNTExLDE5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogZGF0ZV9sb2NhbF9mcm9tX29iamVjdChQeU9iamVjdCAqY2xzLCBQeU9iamVjdCAqb2JqKQogewotICAgIHN0cnVjdCB0bSAqdG07CisgICAgc3RydWN0IHRtIHRtOwogICAgIHRpbWVfdCB0OwogCiAgICAgaWYgKF9QeVRpbWVfT2JqZWN0VG9UaW1lX3Qob2JqLCAmdCwgX1B5VGltZV9ST1VORF9GTE9PUikgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgdG0gPSBsb2NhbHRpbWUoJnQpOwotICAgIGlmICh0bSA9PSBOVUxMKSB7Ci0gICAgICAgIC8qIHVuY29udmVydGlibGUgdGltZSAqLwotI2lmZGVmIEVJTlZBTAotICAgICAgICBpZiAoZXJybm8gPT0gMCkKLSAgICAgICAgICAgIGVycm5vID0gRUlOVkFMOwotI2VuZGlmCi0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICBpZiAoX1B5VGltZV9sb2NhbHRpbWUodCwgJnRtKSAhPSAwKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAKICAgICByZXR1cm4gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKGNscywgImlpaSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS0+dG1feWVhciArIDE5MDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS0+dG1fbW9uICsgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV9tZGF5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLnRtX3llYXIgKyAxOTAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0udG1fbW9uICsgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLnRtX21kYXkpOwogfQogCiAvKiBSZXR1cm4gbmV3IGRhdGUgZnJvbSBjdXJyZW50IHRpbWUuCkBAIC0yNjQ4LDcgKzI2ODksNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGRhdGVfc3RyKFB5RGF0ZVRpbWVfRGF0ZSAqc2VsZikKIHsKLSAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QgKilzZWxmLCAmUHlJZF9pc29mb3JtYXQsICIoKSIpOworICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCAqKXNlbGYsICZQeUlkX2lzb2Zvcm1hdCwgTlVMTCk7CiB9CiAKIApAQCAtMjY3NCw3ICsyNzE1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZvcm1hdCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgdHVwbGUgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCAqKXNlbGYsICZQeUlkX3RpbWV0dXBsZSwgIigpIik7CisgICAgdHVwbGUgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCAqKXNlbGYsICZQeUlkX3RpbWV0dXBsZSwgTlVMTCk7CiAgICAgaWYgKHR1cGxlID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJlc3VsdCA9IHdyYXBfc3RyZnRpbWUoKFB5T2JqZWN0ICopc2VsZiwgZm9ybWF0LCB0dXBsZSwKQEAgLTI3ODYsOSArMjgyNywxMCBAQAogc3RhdGljIFB5X2hhc2hfdAogZGF0ZV9oYXNoKFB5RGF0ZVRpbWVfRGF0ZSAqc2VsZikKIHsKLSAgICBpZiAoc2VsZi0+aGFzaGNvZGUgPT0gLTEpCisgICAgaWYgKHNlbGYtPmhhc2hjb2RlID09IC0xKSB7CiAgICAgICAgIHNlbGYtPmhhc2hjb2RlID0gZ2VuZXJpY19oYXNoKAogICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIgKilzZWxmLT5kYXRhLCBfUHlEYXRlVGltZV9EQVRFX0RBVEFTSVpFKTsKKyAgICB9CiAKICAgICByZXR1cm4gc2VsZi0+aGFzaGNvZGU7CiB9CkBAIC0yODg2LDcgKzI5MjgsNyBAQAogICAgIHtOVUxMLCAgICAgIE5VTEx9CiB9OwogCi1zdGF0aWMgY2hhciBkYXRlX2RvY1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIGRhdGVfZG9jW10gPQogUHlEb2NfU1RSKCJkYXRlKHllYXIsIG1vbnRoLCBkYXkpIC0tPiBkYXRlIG9iamVjdCIpOwogCiBzdGF0aWMgUHlOdW1iZXJNZXRob2RzIGRhdGVfYXNfbnVtYmVyID0gewpAQCAtMzA0NywxMCArMzA4OSw4IEBACiAgICAgaWYgKGRzdCA9PSBQeV9Ob25lKQogICAgICAgICBnb3RvIEluY29uc2lzdGVudDsKICAgICBpZiAoZGVsdGFfYm9vbCgoUHlEYXRlVGltZV9EZWx0YSAqKWRzdCkgIT0gMCkgewotICAgICAgICBQeU9iamVjdCAqdGVtcCA9IHJlc3VsdDsKLSAgICAgICAgcmVzdWx0ID0gYWRkX2RhdGV0aW1lX3RpbWVkZWx0YSgoUHlEYXRlVGltZV9EYXRlVGltZSAqKXJlc3VsdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlEYXRlVGltZV9EZWx0YSAqKWRzdCwgMSk7Ci0gICAgICAgIFB5X0RFQ1JFRih0ZW1wKTsKKyAgICAgICAgUHlfU0VUUkVGKHJlc3VsdCwgYWRkX2RhdGV0aW1lX3RpbWVkZWx0YSgoUHlEYXRlVGltZV9EYXRlVGltZSAqKXJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlEYXRlVGltZV9EZWx0YSAqKWRzdCwgMSkpOwogICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIEZhaWw7CiAgICAgfQpAQCAtMzA4MCwzNyArMzEyMCwzNCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHR6aW5mb19yZWR1Y2UoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgUHlPYmplY3QgKmFyZ3MsICpzdGF0ZSwgKnRtcDsKKyAgICBQeU9iamVjdCAqYXJncywgKnN0YXRlOwogICAgIFB5T2JqZWN0ICpnZXRpbml0YXJncywgKmdldHN0YXRlOwogICAgIF9QeV9JREVOVElGSUVSKF9fZ2V0aW5pdGFyZ3NfXyk7CiAgICAgX1B5X0lERU5USUZJRVIoX19nZXRzdGF0ZV9fKTsKIAotICAgIHRtcCA9IFB5VHVwbGVfTmV3KDApOwotICAgIGlmICh0bXAgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBnZXRpbml0YXJncyA9IF9QeU9iamVjdF9HZXRBdHRySWQoc2VsZiwgJlB5SWRfX19nZXRpbml0YXJnc19fKTsKICAgICBpZiAoZ2V0aW5pdGFyZ3MgIT0gTlVMTCkgewotICAgICAgICBhcmdzID0gUHlPYmplY3RfQ2FsbE9iamVjdChnZXRpbml0YXJncywgdG1wKTsKKyAgICAgICAgYXJncyA9IF9QeU9iamVjdF9DYWxsTm9BcmcoZ2V0aW5pdGFyZ3MpOwogICAgICAgICBQeV9ERUNSRUYoZ2V0aW5pdGFyZ3MpOwogICAgICAgICBpZiAoYXJncyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodG1wKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBhcmdzID0gdG1wOwotICAgICAgICBQeV9JTkNSRUYoYXJncyk7CisKKyAgICAgICAgYXJncyA9IFB5VHVwbGVfTmV3KDApOworICAgICAgICBpZiAoYXJncyA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGdldHN0YXRlID0gX1B5T2JqZWN0X0dldEF0dHJJZChzZWxmLCAmUHlJZF9fX2dldHN0YXRlX18pOwogICAgIGlmIChnZXRzdGF0ZSAhPSBOVUxMKSB7Ci0gICAgICAgIHN0YXRlID0gUHlPYmplY3RfQ2FsbE9iamVjdChnZXRzdGF0ZSwgdG1wKTsKKyAgICAgICAgc3RhdGUgPSBfUHlPYmplY3RfQ2FsbE5vQXJnKGdldHN0YXRlKTsKICAgICAgICAgUHlfREVDUkVGKGdldHN0YXRlKTsKICAgICAgICAgaWYgKHN0YXRlID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih0bXApOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICB9CkBAIC0zMTE5LDEzICszMTU2LDEyIEBACiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIHN0YXRlID0gUHlfTm9uZTsKICAgICAgICAgZGljdHB0ciA9IF9QeU9iamVjdF9HZXREaWN0UHRyKHNlbGYpOwotICAgICAgICBpZiAoZGljdHB0ciAmJiAqZGljdHB0ciAmJiBQeURpY3RfU2l6ZSgqZGljdHB0cikpCisgICAgICAgIGlmIChkaWN0cHRyICYmICpkaWN0cHRyICYmIFB5RGljdF9TaXplKCpkaWN0cHRyKSkgewogICAgICAgICAgICAgc3RhdGUgPSAqZGljdHB0cjsKKyAgICAgICAgfQogICAgICAgICBQeV9JTkNSRUYoc3RhdGUpOwogICAgIH0KIAotICAgIFB5X0RFQ1JFRih0bXApOwotCiAgICAgaWYgKHN0YXRlID09IFB5X05vbmUpIHsKICAgICAgICAgUHlfREVDUkVGKHN0YXRlKTsKICAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihPTikiLCBQeV9UWVBFKHNlbGYpLCBhcmdzKTsKQEAgLTMxNTUsNyArMzE5MSw3IEBACiAgICAge05VTEwsIE5VTEx9CiB9OwogCi1zdGF0aWMgY2hhciB0emluZm9fZG9jW10gPQorc3RhdGljIGNvbnN0IGNoYXIgdHppbmZvX2RvY1tdID0KIFB5RG9jX1NUUigiQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgdGltZSB6b25lIGluZm8gb2JqZWN0cy4iKTsKIAogc3RhdGljIFB5VHlwZU9iamVjdCBQeURhdGVUaW1lX1RaSW5mb1R5cGUgPSB7CkBAIC0zMjg3LDYgKzMzMjMsMTEgQEAKICAgICAgICAgUHlfSU5DUkVGKHNlbGYtPm5hbWUpOwogICAgICAgICByZXR1cm4gc2VsZi0+bmFtZTsKICAgICB9CisgICAgaWYgKChQeU9iamVjdCAqKXNlbGYgPT0gUHlEYXRlVGltZV9UaW1lWm9uZV9VVEMgfHwKKyAgICAgICAgICAgKEdFVF9URF9EQVlTKHNlbGYtPm9mZnNldCkgPT0gMCAmJgorICAgICAgICAgICAgR0VUX1REX1NFQ09ORFMoc2VsZi0+b2Zmc2V0KSA9PSAwICYmCisgICAgICAgICAgICBHRVRfVERfTUlDUk9TRUNPTkRTKHNlbGYtPm9mZnNldCkgPT0gMCkpCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZygiVVRDIik7CiAgICAgLyogT2Zmc2V0IGlzIG5vcm1hbGl6ZWQsIHNvIGl0IGlzIG5lZ2F0aXZlIGlmIGRheXMgPCAwICovCiAgICAgaWYgKEdFVF9URF9EQVlTKHNlbGYtPm9mZnNldCkgPCAwKSB7CiAgICAgICAgIHNpZ24gPSAnLSc7CkBAIC0zMzgyLDcgKzM0MjMsNyBAQAogICAgIHtOVUxMLCBOVUxMfQogfTsKIAotc3RhdGljIGNoYXIgdGltZXpvbmVfZG9jW10gPQorc3RhdGljIGNvbnN0IGNoYXIgdGltZXpvbmVfZG9jW10gPQogUHlEb2NfU1RSKCJGaXhlZCBvZmZzZXQgZnJvbSBVVEMgaW1wbGVtZW50YXRpb24gb2YgdHppbmZvLiIpOwogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IFB5RGF0ZVRpbWVfVGltZVpvbmVUeXBlID0gewpAQCAtMzQ2NiwxMiArMzUwNywxOSBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCit0aW1lX2ZvbGQoUHlEYXRlVGltZV9UaW1lICpzZWxmLCB2b2lkICp1bnVzZWQpCit7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhUSU1FX0dFVF9GT0xEKHNlbGYpKTsKK30KKwogc3RhdGljIFB5R2V0U2V0RGVmIHRpbWVfZ2V0c2V0W10gPSB7CiAgICAgeyJob3VyIiwgICAgICAgIChnZXR0ZXIpdGltZV9ob3VyfSwKICAgICB7Im1pbnV0ZSIsICAgICAgKGdldHRlcil0aW1lX21pbnV0ZX0sCiAgICAgeyJzZWNvbmQiLCAgICAgIChnZXR0ZXIpcHlfdGltZV9zZWNvbmR9LAogICAgIHsibWljcm9zZWNvbmQiLCAoZ2V0dGVyKXRpbWVfbWljcm9zZWNvbmR9LAotICAgIHsidHppbmZvIiwgICAgICAgICAgKGdldHRlcil0aW1lX3R6aW5mb30sCisgICAgeyJ0emluZm8iLCAgICAgIChnZXR0ZXIpdGltZV90emluZm99LAorICAgIHsiZm9sZCIsICAgICAgICAoZ2V0dGVyKXRpbWVfZm9sZH0sCiAgICAge05VTEx9CiB9OwogCkBAIC0zNDgwLDcgKzM1MjgsNyBAQAogICovCiAKIHN0YXRpYyBjaGFyICp0aW1lX2t3c1tdID0geyJob3VyIiwgIm1pbnV0ZSIsICJzZWNvbmQiLCAibWljcm9zZWNvbmQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgInR6aW5mbyIsIE5VTEx9OworICAgICAgICAgICAgICAgICAgICAgICAgICAgInR6aW5mbyIsICJmb2xkIiwgTlVMTH07CiAKIHN0YXRpYyBQeU9iamVjdCAqCiB0aW1lX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3cpCkBAIC0zNDkyLDEzICszNTQwLDE0IEBACiAgICAgaW50IHNlY29uZCA9IDA7CiAgICAgaW50IHVzZWNvbmQgPSAwOwogICAgIFB5T2JqZWN0ICp0emluZm8gPSBQeV9Ob25lOworICAgIGludCBmb2xkID0gMDsKIAogICAgIC8qIENoZWNrIGZvciBpbnZvY2F0aW9uIGZyb20gcGlja2xlIHdpdGggX19nZXRzdGF0ZV9fIHN0YXRlICovCiAgICAgaWYgKFB5VHVwbGVfR0VUX1NJWkUoYXJncykgPj0gMSAmJgogICAgICAgICBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpIDw9IDIgJiYKICAgICAgICAgUHlCeXRlc19DaGVjayhzdGF0ZSA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgMCkpICYmCiAgICAgICAgIFB5Qnl0ZXNfR0VUX1NJWkUoc3RhdGUpID09IF9QeURhdGVUaW1lX1RJTUVfREFUQVNJWkUgJiYKLSAgICAgICAgKCh1bnNpZ25lZCBjaGFyKSAoUHlCeXRlc19BU19TVFJJTkcoc3RhdGUpWzBdKSkgPCAyNCkKKyAgICAgICAgKDB4N0YgJiAoKHVuc2lnbmVkIGNoYXIpIChQeUJ5dGVzX0FTX1NUUklORyhzdGF0ZSlbMF0pKSkgPCAyNCkKICAgICB7CiAgICAgICAgIFB5RGF0ZVRpbWVfVGltZSAqbWU7CiAgICAgICAgIGNoYXIgYXdhcmU7CkBAIC0zNTIzLDE5ICszNTcyLDI2IEBACiAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKHR6aW5mbyk7CiAgICAgICAgICAgICAgICAgbWUtPnR6aW5mbyA9IHR6aW5mbzsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChwZGF0YVswXSAmICgxIDw8IDcpKSB7CisgICAgICAgICAgICAgICAgbWUtPmRhdGFbMF0gLT0gMTI4OworICAgICAgICAgICAgICAgIG1lLT5mb2xkID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIG1lLT5mb2xkID0gMDsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopbWU7CiAgICAgfQogCi0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgInxpaWlpTyIsIHRpbWVfa3dzLAorICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJ8aWlpaU8kaSIsIHRpbWVfa3dzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhvdXIsICZtaW51dGUsICZzZWNvbmQsICZ1c2Vjb25kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnR6aW5mbykpIHsKLSAgICAgICAgaWYgKGNoZWNrX3RpbWVfYXJncyhob3VyLCBtaW51dGUsIHNlY29uZCwgdXNlY29uZCkgPCAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnR6aW5mbywgJmZvbGQpKSB7CisgICAgICAgIGlmIChjaGVja190aW1lX2FyZ3MoaG91ciwgbWludXRlLCBzZWNvbmQsIHVzZWNvbmQsIGZvbGQpIDwgMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBpZiAoY2hlY2tfdHppbmZvX3N1YmNsYXNzKHR6aW5mbykgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHNlbGYgPSBuZXdfdGltZV9leChob3VyLCBtaW51dGUsIHNlY29uZCwgdXNlY29uZCwgdHppbmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSk7CisgICAgICAgIHNlbGYgPSBuZXdfdGltZV9leDIoaG91ciwgbWludXRlLCBzZWNvbmQsIHVzZWNvbmQsIHR6aW5mbywgZm9sZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlKTsKICAgICB9CiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC0zNTg1LDYgKzM2NDEsNyBAQAogICAgIGludCBtID0gVElNRV9HRVRfTUlOVVRFKHNlbGYpOwogICAgIGludCBzID0gVElNRV9HRVRfU0VDT05EKHNlbGYpOwogICAgIGludCB1cyA9IFRJTUVfR0VUX01JQ1JPU0VDT05EKHNlbGYpOworICAgIGludCBmb2xkID0gVElNRV9HRVRfRk9MRChzZWxmKTsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKIAogICAgIGlmICh1cykKQEAgLTM1OTcsMzMgKzM2NTQsNjggQEAKICAgICAgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVzKCVkLCAlZCkiLCB0eXBlX25hbWUsIGgsIG0pOwogICAgIGlmIChyZXN1bHQgIT0gTlVMTCAmJiBIQVNUWklORk8oc2VsZikpCiAgICAgICAgIHJlc3VsdCA9IGFwcGVuZF9rZXl3b3JkX3R6aW5mbyhyZXN1bHQsIHNlbGYtPnR6aW5mbyk7CisgICAgaWYgKHJlc3VsdCAhPSBOVUxMICYmIGZvbGQpCisgICAgICAgIHJlc3VsdCA9IGFwcGVuZF9rZXl3b3JkX2ZvbGQocmVzdWx0LCBmb2xkKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogdGltZV9zdHIoUHlEYXRlVGltZV9UaW1lICpzZWxmKQogewotICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCAqKXNlbGYsICZQeUlkX2lzb2Zvcm1hdCwgIigpIik7CisgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0ICopc2VsZiwgJlB5SWRfaXNvZm9ybWF0LCBOVUxMKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLXRpbWVfaXNvZm9ybWF0KFB5RGF0ZVRpbWVfVGltZSAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKK3RpbWVfaXNvZm9ybWF0KFB5RGF0ZVRpbWVfVGltZSAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdykKIHsKICAgICBjaGFyIGJ1ZlsxMDBdOworICAgIGNoYXIgKnRpbWVzcGVjID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsidGltZXNwZWMiLCBOVUxMfTsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIGludCB1cyA9IFRJTUVfR0VUX01JQ1JPU0VDT05EKHNlbGYpOworICAgIHN0YXRpYyBjaGFyICpzcGVjc1tdWzJdID0geworICAgICAgICB7ImhvdXJzIiwgIiUwMmQifSwKKyAgICAgICAgeyJtaW51dGVzIiwgIiUwMmQ6JTAyZCJ9LAorICAgICAgICB7InNlY29uZHMiLCAiJTAyZDolMDJkOiUwMmQifSwKKyAgICAgICAgeyJtaWxsaXNlY29uZHMiLCAiJTAyZDolMDJkOiUwMmQuJTAzZCJ9LAorICAgICAgICB7Im1pY3Jvc2Vjb25kcyIsICIlMDJkOiUwMmQ6JTAyZC4lMDZkIn0sCisgICAgfTsKKyAgICBzaXplX3QgZ2l2ZW5fc3BlYzsKIAotICAgIGlmICh1cykKLSAgICAgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiUwMmQ6JTAyZDolMDJkLiUwNmQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSU1FX0dFVF9IT1VSKHNlbGYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSU1FX0dFVF9NSU5VVEUoc2VsZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJTUVfR0VUX1NFQ09ORChzZWxmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXMpOwotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiUwMmQ6JTAyZDolMDJkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElNRV9HRVRfSE9VUihzZWxmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElNRV9HRVRfTUlOVVRFKHNlbGYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSU1FX0dFVF9TRUNPTkQoc2VsZikpOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAifHM6aXNvZm9ybWF0Iiwga2V5d29yZHMsICZ0aW1lc3BlYykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKHRpbWVzcGVjID09IE5VTEwgfHwgc3RyY21wKHRpbWVzcGVjLCAiYXV0byIpID09IDApIHsKKyAgICAgICAgaWYgKHVzID09IDApIHsKKyAgICAgICAgICAgIC8qIHNlY29uZHMgKi8KKyAgICAgICAgICAgIGdpdmVuX3NwZWMgPSAyOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLyogbWljcm9zZWNvbmRzICovCisgICAgICAgICAgICBnaXZlbl9zcGVjID0gNDsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZm9yIChnaXZlbl9zcGVjID0gMDsgZ2l2ZW5fc3BlYyA8IFB5X0FSUkFZX0xFTkdUSChzcGVjcyk7IGdpdmVuX3NwZWMrKykgeworICAgICAgICAgICAgaWYgKHN0cmNtcCh0aW1lc3BlYywgc3BlY3NbZ2l2ZW5fc3BlY11bMF0pID09IDApIHsKKyAgICAgICAgICAgICAgICBpZiAoZ2l2ZW5fc3BlYyA9PSAzKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIG1pbGxpc2Vjb25kcyAqLworICAgICAgICAgICAgICAgICAgICB1cyA9IHVzIC8gMTAwMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoZ2l2ZW5fc3BlYyA9PSBQeV9BUlJBWV9MRU5HVEgoc3BlY3MpKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAiVW5rbm93biB0aW1lc3BlYyB2YWx1ZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KHNwZWNzW2dpdmVuX3NwZWNdWzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSU1FX0dFVF9IT1VSKHNlbGYpLCBUSU1FX0dFVF9NSU5VVEUoc2VsZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJTUVfR0VUX1NFQ09ORChzZWxmKSwgdXMpOworICAgIH0KIAogICAgIGlmIChyZXN1bHQgPT0gTlVMTCB8fCAhSEFTVFpJTkZPKHNlbGYpIHx8IHNlbGYtPnR6aW5mbyA9PSBQeV9Ob25lKQogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMzc1MCw5ICszODQyLDIzIEBACiB0aW1lX2hhc2goUHlEYXRlVGltZV9UaW1lICpzZWxmKQogewogICAgIGlmIChzZWxmLT5oYXNoY29kZSA9PSAtMSkgewotICAgICAgICBQeU9iamVjdCAqb2Zmc2V0OwotCi0gICAgICAgIG9mZnNldCA9IHRpbWVfdXRjb2Zmc2V0KChQeU9iamVjdCAqKXNlbGYsIE5VTEwpOworICAgICAgICBQeU9iamVjdCAqb2Zmc2V0LCAqc2VsZjA7CisgICAgICAgIGlmIChEQVRFX0dFVF9GT0xEKHNlbGYpKSB7CisgICAgICAgICAgICBzZWxmMCA9IG5ld190aW1lX2V4MihEQVRFX0dFVF9IT1VSKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfTUlOVVRFKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfU0VDT05EKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfTUlDUk9TRUNPTkQoc2VsZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQVNUWklORk8oc2VsZikgPyBzZWxmLT50emluZm8gOiBQeV9Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgUHlfVFlQRShzZWxmKSk7CisgICAgICAgICAgICBpZiAoc2VsZjAgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzZWxmMCA9IChQeU9iamVjdCAqKXNlbGY7CisgICAgICAgICAgICBQeV9JTkNSRUYoc2VsZjApOworICAgICAgICB9CisgICAgICAgIG9mZnNldCA9IHRpbWVfdXRjb2Zmc2V0KHNlbGYwLCBOVUxMKTsKKyAgICAgICAgUHlfREVDUkVGKHNlbGYwKTsKIAogICAgICAgICBpZiAob2Zmc2V0ID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gLTE7CkBAIC0zNzk4LDE1ICszOTA0LDI0IEBACiAgICAgaW50IHNzID0gVElNRV9HRVRfU0VDT05EKHNlbGYpOwogICAgIGludCB1cyA9IFRJTUVfR0VUX01JQ1JPU0VDT05EKHNlbGYpOwogICAgIFB5T2JqZWN0ICp0emluZm8gPSBIQVNUWklORk8oc2VsZikgPyBzZWxmLT50emluZm8gOiBQeV9Ob25lOworICAgIGludCBmb2xkID0gVElNRV9HRVRfRk9MRChzZWxmKTsKIAotICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgInxpaWlpTzpyZXBsYWNlIiwKKyAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJ8aWlpaU8kaTpyZXBsYWNlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZV9rd3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZoaCwgJm1tLCAmc3MsICZ1cywgJnR6aW5mbykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZoaCwgJm1tLCAmc3MsICZ1cywgJnR6aW5mbywgJmZvbGQpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB0dXBsZSA9IFB5X0J1aWxkVmFsdWUoImlpaWlPIiwgaGgsIG1tLCBzcywgdXMsIHR6aW5mbyk7CiAgICAgaWYgKHR1cGxlID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGNsb25lID0gdGltZV9uZXcoUHlfVFlQRShzZWxmKSwgdHVwbGUsIE5VTEwpOworICAgIGlmIChjbG9uZSAhPSBOVUxMKSB7CisgICAgICAgIGlmIChmb2xkICE9IDAgJiYgZm9sZCAhPSAxKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9sZCBtdXN0IGJlIGVpdGhlciAwIG9yIDEiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIFRJTUVfU0VUX0ZPTEQoY2xvbmUsIGZvbGQpOworICAgIH0KICAgICBQeV9ERUNSRUYodHVwbGUpOwogICAgIHJldHVybiBjbG9uZTsKIH0KQEAgLTM4MTksNyArMzkzNCw3IEBACiAgKiBfX2dldHN0YXRlX18gaXNuJ3QgZXhwb3NlZC4KICAqLwogc3RhdGljIFB5T2JqZWN0ICoKLXRpbWVfZ2V0c3RhdGUoUHlEYXRlVGltZV9UaW1lICpzZWxmKQordGltZV9nZXRzdGF0ZShQeURhdGVUaW1lX1RpbWUgKnNlbGYsIGludCBwcm90bykKIHsKICAgICBQeU9iamVjdCAqYmFzZXN0YXRlOwogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwpAQCAtMzgyNyw2ICszOTQyLDkgQEAKICAgICBiYXNlc3RhdGUgPSAgUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY2hhciAqKXNlbGYtPmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeURhdGVUaW1lX1RJTUVfREFUQVNJWkUpOwogICAgIGlmIChiYXNlc3RhdGUgIT0gTlVMTCkgeworICAgICAgICBpZiAocHJvdG8gPiAzICYmIFRJTUVfR0VUX0ZPTEQoc2VsZikpCisgICAgICAgICAgICAvKiBTZXQgdGhlIGZpcnN0IGJpdCBvZiB0aGUgZmlyc3QgYnl0ZSAqLworICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoYmFzZXN0YXRlKVswXSB8PSAoMSA8PCA3KTsKICAgICAgICAgaWYgKCEgSEFTVFpJTkZPKHNlbGYpIHx8IHNlbGYtPnR6aW5mbyA9PSBQeV9Ob25lKQogICAgICAgICAgICAgcmVzdWx0ID0gUHlUdXBsZV9QYWNrKDEsIGJhc2VzdGF0ZSk7CiAgICAgICAgIGVsc2UKQEAgLTM4MzcsMTYgKzM5NTUsMjcgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKK3RpbWVfcmVkdWNlX2V4KFB5RGF0ZVRpbWVfVGltZSAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IHByb3RvOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpfX3JlZHVjZV9leF9fIiwgJnByb3RvKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKE9OKSIsIFB5X1RZUEUoc2VsZiksIHRpbWVfZ2V0c3RhdGUoc2VsZiwgcHJvdG8pKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKIHRpbWVfcmVkdWNlKFB5RGF0ZVRpbWVfVGltZSAqc2VsZiwgUHlPYmplY3QgKmFyZykKIHsKLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKE9OKSIsIFB5X1RZUEUoc2VsZiksIHRpbWVfZ2V0c3RhdGUoc2VsZikpOworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIoT04pIiwgUHlfVFlQRShzZWxmKSwgdGltZV9nZXRzdGF0ZShzZWxmLCAyKSk7CiB9CiAKIHN0YXRpYyBQeU1ldGhvZERlZiB0aW1lX21ldGhvZHNbXSA9IHsKIAotICAgIHsiaXNvZm9ybWF0IiwgICAoUHlDRnVuY3Rpb24pdGltZV9pc29mb3JtYXQsICAgICAgICBNRVRIX05PQVJHUywKLSAgICAgUHlEb2NfU1RSKCJSZXR1cm4gc3RyaW5nIGluIElTTyA4NjAxIGZvcm1hdCwgSEg6TU06U1NbLm1tbW1tbV0iCi0gICAgICAgICAgICAgICAiWytISDpNTV0uIil9LAorICAgIHsiaXNvZm9ybWF0IiwgICAoUHlDRnVuY3Rpb24pdGltZV9pc29mb3JtYXQsICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICBQeURvY19TVFIoIlJldHVybiBzdHJpbmcgaW4gSVNPIDg2MDEgZm9ybWF0LCBbSEhbOk1NWzpTU1subW1tW3V1dV1dXV1dIgorICAgICAgICAgICAgICAgIlsrSEg6TU1dLlxuXG4iCisgICAgICAgICAgICAgICAidGltZXNwZWMgc3BlY2lmaWVzIHdoYXQgY29tcG9uZW50cyBvZiB0aGUgdGltZSB0byBpbmNsdWRlLlxuIil9LAogCiAgICAgeyJzdHJmdGltZSIsICAgICAgICAoUHlDRnVuY3Rpb24pdGltZV9zdHJmdGltZSwgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCiAgICAgIFB5RG9jX1NUUigiZm9ybWF0IC0+IHN0cmZ0aW1lKCkgc3R5bGUgc3RyaW5nLiIpfSwKQEAgLTM4NjYsMTMgKzM5OTUsMTYgQEAKICAgICB7InJlcGxhY2UiLCAgICAgKFB5Q0Z1bmN0aW9uKXRpbWVfcmVwbGFjZSwgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKICAgICAgUHlEb2NfU1RSKCJSZXR1cm4gdGltZSB3aXRoIG5ldyBzcGVjaWZpZWQgZmllbGRzLiIpfSwKIAorICAgIHsiX19yZWR1Y2VfZXhfXyIsIChQeUNGdW5jdGlvbil0aW1lX3JlZHVjZV9leCwgICAgICAgIE1FVEhfVkFSQVJHUywKKyAgICAgUHlEb2NfU1RSKCJfX3JlZHVjZV9leF9fKHByb3RvKSAtPiAoY2xzLCBzdGF0ZSkiKX0sCisKICAgICB7Il9fcmVkdWNlX18iLCAoUHlDRnVuY3Rpb24pdGltZV9yZWR1Y2UsICAgICAgICBNRVRIX05PQVJHUywKICAgICAgUHlEb2NfU1RSKCJfX3JlZHVjZV9fKCkgLT4gKGNscywgc3RhdGUpIil9LAogCiAgICAge05VTEwsICAgICAgTlVMTH0KIH07CiAKLXN0YXRpYyBjaGFyIHRpbWVfZG9jW10gPQorc3RhdGljIGNvbnN0IGNoYXIgdGltZV9kb2NbXSA9CiBQeURvY19TVFIoInRpbWUoW2hvdXJbLCBtaW51dGVbLCBzZWNvbmRbLCBtaWNyb3NlY29uZFssIHR6aW5mb11dXV1dKSAtLT4gYSB0aW1lIG9iamVjdFxuXAogXG5cCiBBbGwgYXJndW1lbnRzIGFyZSBvcHRpb25hbC4gdHppbmZvIG1heSBiZSBOb25lLCBvciBhbiBpbnN0YW5jZSBvZlxuXApAQCAtMzk2MCwxMiArNDA5MiwxOSBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitkYXRldGltZV9mb2xkKFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKnNlbGYsIHZvaWQgKnVudXNlZCkKK3sKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKERBVEVfR0VUX0ZPTEQoc2VsZikpOworfQorCiBzdGF0aWMgUHlHZXRTZXREZWYgZGF0ZXRpbWVfZ2V0c2V0W10gPSB7CiAgICAgeyJob3VyIiwgICAgICAgIChnZXR0ZXIpZGF0ZXRpbWVfaG91cn0sCiAgICAgeyJtaW51dGUiLCAgICAgIChnZXR0ZXIpZGF0ZXRpbWVfbWludXRlfSwKICAgICB7InNlY29uZCIsICAgICAgKGdldHRlcilkYXRldGltZV9zZWNvbmR9LAogICAgIHsibWljcm9zZWNvbmQiLCAoZ2V0dGVyKWRhdGV0aW1lX21pY3Jvc2Vjb25kfSwKLSAgICB7InR6aW5mbyIsICAgICAgICAgIChnZXR0ZXIpZGF0ZXRpbWVfdHppbmZvfSwKKyAgICB7InR6aW5mbyIsICAgICAgKGdldHRlcilkYXRldGltZV90emluZm99LAorICAgIHsiZm9sZCIsICAgICAgICAoZ2V0dGVyKWRhdGV0aW1lX2ZvbGR9LAogICAgIHtOVUxMfQogfTsKIApAQCAtMzk3NSw3ICs0MTE0LDcgQEAKIAogc3RhdGljIGNoYXIgKmRhdGV0aW1lX2t3c1tdID0gewogICAgICJ5ZWFyIiwgIm1vbnRoIiwgImRheSIsICJob3VyIiwgIm1pbnV0ZSIsICJzZWNvbmQiLAotICAgICJtaWNyb3NlY29uZCIsICJ0emluZm8iLCBOVUxMCisgICAgIm1pY3Jvc2Vjb25kIiwgInR6aW5mbyIsICJmb2xkIiwgTlVMTAogfTsKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTM5OTAsNiArNDEyOSw3IEBACiAgICAgaW50IG1pbnV0ZSA9IDA7CiAgICAgaW50IHNlY29uZCA9IDA7CiAgICAgaW50IHVzZWNvbmQgPSAwOworICAgIGludCBmb2xkID0gMDsKICAgICBQeU9iamVjdCAqdHppbmZvID0gUHlfTm9uZTsKIAogICAgIC8qIENoZWNrIGZvciBpbnZvY2F0aW9uIGZyb20gcGlja2xlIHdpdGggX19nZXRzdGF0ZV9fIHN0YXRlICovCkBAIC0zOTk3LDcgKzQxMzcsNyBAQAogICAgICAgICBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpIDw9IDIgJiYKICAgICAgICAgUHlCeXRlc19DaGVjayhzdGF0ZSA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgMCkpICYmCiAgICAgICAgIFB5Qnl0ZXNfR0VUX1NJWkUoc3RhdGUpID09IF9QeURhdGVUaW1lX0RBVEVUSU1FX0RBVEFTSVpFICYmCi0gICAgICAgIE1PTlRIX0lTX1NBTkUoUHlCeXRlc19BU19TVFJJTkcoc3RhdGUpWzJdKSkKKyAgICAgICAgTU9OVEhfSVNfU0FORShQeUJ5dGVzX0FTX1NUUklORyhzdGF0ZSlbMl0gJiAweDdGKSkKICAgICB7CiAgICAgICAgIFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKm1lOwogICAgICAgICBjaGFyIGF3YXJlOwpAQCAtNDAyMiwyOCArNDE2Miw3MyBAQAogICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih0emluZm8pOwogICAgICAgICAgICAgICAgIG1lLT50emluZm8gPSB0emluZm87CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocGRhdGFbMl0gJiAoMSA8PCA3KSkgeworICAgICAgICAgICAgICAgIG1lLT5kYXRhWzJdIC09IDEyODsKKyAgICAgICAgICAgICAgICBtZS0+Zm9sZCA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBtZS0+Zm9sZCA9IDA7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKW1lOwogICAgIH0KIAotICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJpaWl8aWlpaU8iLCBkYXRldGltZV9rd3MsCisgICAgaWYgKFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgImlpaXxpaWlpTyRpIiwgZGF0ZXRpbWVfa3dzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnllYXIsICZtb250aCwgJmRheSwgJmhvdXIsICZtaW51dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2Vjb25kLCAmdXNlY29uZCwgJnR6aW5mbykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzZWNvbmQsICZ1c2Vjb25kLCAmdHppbmZvLCAmZm9sZCkpIHsKICAgICAgICAgaWYgKGNoZWNrX2RhdGVfYXJncyh5ZWFyLCBtb250aCwgZGF5KSA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgaWYgKGNoZWNrX3RpbWVfYXJncyhob3VyLCBtaW51dGUsIHNlY29uZCwgdXNlY29uZCkgPCAwKQorICAgICAgICBpZiAoY2hlY2tfdGltZV9hcmdzKGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCB1c2Vjb25kLCBmb2xkKSA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgaWYgKGNoZWNrX3R6aW5mb19zdWJjbGFzcyh0emluZm8pIDwgMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBzZWxmID0gbmV3X2RhdGV0aW1lX2V4KHllYXIsIG1vbnRoLCBkYXksCisgICAgICAgIHNlbGYgPSBuZXdfZGF0ZXRpbWVfZXgyKHllYXIsIG1vbnRoLCBkYXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCB1c2Vjb25kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0emluZm8sIHR5cGUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0emluZm8sIGZvbGQsIHR5cGUpOwogICAgIH0KICAgICByZXR1cm4gc2VsZjsKIH0KIAotLyogVE1fRlVOQyBpcyB0aGUgc2hhcmVkIHR5cGUgb2YgbG9jYWx0aW1lKCkgYW5kIGdtdGltZSgpLiAqLwotdHlwZWRlZiBzdHJ1Y3QgdG0gKigqVE1fRlVOQykoY29uc3QgdGltZV90ICp0aW1lcik7CisvKiBUTV9GVU5DIGlzIHRoZSBzaGFyZWQgdHlwZSBvZiBfUHlUaW1lX2xvY2FsdGltZSgpIGFuZAorICogX1B5VGltZV9nbXRpbWUoKS4gKi8KK3R5cGVkZWYgaW50ICgqVE1fRlVOQykodGltZV90IHRpbWVyLCBzdHJ1Y3QgdG0qKTsKKworLyogQXMgb2YgdmVyc2lvbiAyMDE1ZiBtYXggZm9sZCBpbiBJQU5BIGRhdGFiYXNlIGlzCisgKiAyMyBob3VycyBhdCAxOTY5LTA5LTMwIDEzOjAwOjAwIGluIEt3YWphbGVpbi4gKi8KK3N0YXRpYyBsb25nIGxvbmcgbWF4X2ZvbGRfc2Vjb25kcyA9IDI0ICogMzYwMDsKKy8qIE5COiBkYXRlKDE5NzAsMSwxKS50b29yZGluYWwoKSA9PSA3MTkxNjMgKi8KK3N0YXRpYyBsb25nIGxvbmcgZXBvY2ggPSA3MTkxNjNMTCAqIDI0ICogNjAgKiA2MDsKKworc3RhdGljIGxvbmcgbG9uZwordXRjX3RvX3NlY29uZHMoaW50IHllYXIsIGludCBtb250aCwgaW50IGRheSwKKyAgICAgICAgICAgICAgIGludCBob3VyLCBpbnQgbWludXRlLCBpbnQgc2Vjb25kKQoreworICAgIGxvbmcgbG9uZyBvcmRpbmFsID0geW1kX3RvX29yZCh5ZWFyLCBtb250aCwgZGF5KTsKKyAgICByZXR1cm4gKChvcmRpbmFsICogMjQgKyBob3VyKSAqIDYwICsgbWludXRlKSAqIDYwICsgc2Vjb25kOworfQorCitzdGF0aWMgbG9uZyBsb25nCitsb2NhbChsb25nIGxvbmcgdSkKK3sKKyAgICBzdHJ1Y3QgdG0gbG9jYWxfdGltZTsKKyAgICB0aW1lX3QgdDsKKyAgICB1IC09IGVwb2NoOworICAgIHQgPSB1OworICAgIGlmICh0ICE9IHUpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICJ0aW1lc3RhbXAgb3V0IG9mIHJhbmdlIGZvciBwbGF0Zm9ybSB0aW1lX3QiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICAvKiBYWFg6IGFkZCBib3VuZHMgY2hlY2tpbmcgKi8KKyAgICBpZiAoX1B5VGltZV9sb2NhbHRpbWUodCwgJmxvY2FsX3RpbWUpICE9IDApCisgICAgICAgIHJldHVybiAtMTsKKyAgICByZXR1cm4gdXRjX3RvX3NlY29uZHMobG9jYWxfdGltZS50bV95ZWFyICsgMTkwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxfdGltZS50bV9tb24gKyAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbF90aW1lLnRtX21kYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsX3RpbWUudG1faG91ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxfdGltZS50bV9taW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsX3RpbWUudG1fc2VjKTsKK30KIAogLyogSW50ZXJuYWwgaGVscGVyLgogICogQnVpbGQgZGF0ZXRpbWUgZnJvbSBhIHRpbWVfdCBhbmQgYSBkaXN0aW5jdCBjb3VudCBvZiBtaWNyb3NlY29uZHMuCkBAIC00MDUzLDcyICs0MjM4LDQ2IEBACiBkYXRldGltZV9mcm9tX3RpbWV0X2FuZF91cyhQeU9iamVjdCAqY2xzLCBUTV9GVU5DIGYsIHRpbWVfdCB0aW1ldCwgaW50IHVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnR6aW5mbykKIHsKLSAgICBzdHJ1Y3QgdG0gKnRtOworICAgIHN0cnVjdCB0bSB0bTsKKyAgICBpbnQgeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIGZvbGQgPSAwOwogCi0gICAgdG0gPSBmKCZ0aW1ldCk7Ci0gICAgaWYgKHRtID09IE5VTEwpIHsKLSNpZmRlZiBFSU5WQUwKLSAgICAgICAgaWYgKGVycm5vID09IDApCi0gICAgICAgICAgICBlcnJubyA9IEVJTlZBTDsKLSNlbmRpZgotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwotICAgIH0KKyAgICBpZiAoZih0aW1ldCwgJnRtKSAhPSAwKQorICAgICAgICByZXR1cm4gTlVMTDsKIAorICAgIHllYXIgPSB0bS50bV95ZWFyICsgMTkwMDsKKyAgICBtb250aCA9IHRtLnRtX21vbiArIDE7CisgICAgZGF5ID0gdG0udG1fbWRheTsKKyAgICBob3VyID0gdG0udG1faG91cjsKKyAgICBtaW51dGUgPSB0bS50bV9taW47CiAgICAgLyogVGhlIHBsYXRmb3JtIGxvY2FsdGltZS9nbXRpbWUgbWF5IGluc2VydCBsZWFwIHNlY29uZHMsCi0gICAgICogaW5kaWNhdGVkIGJ5IHRtLT50bV9zZWMgPiA1OS4gIFdlIGRvbid0IGNhcmUgYWJvdXQgdGhlbSwKKyAgICAgKiBpbmRpY2F0ZWQgYnkgdG0udG1fc2VjID4gNTkuICBXZSBkb24ndCBjYXJlIGFib3V0IHRoZW0sCiAgICAgICogZXhjZXB0IHRvIHRoZSBleHRlbnQgdGhhdCBwYXNzaW5nIHRoZW0gb24gdG8gdGhlIGRhdGV0aW1lCiAgICAgICogY29uc3RydWN0b3Igd291bGQgcmFpc2UgVmFsdWVFcnJvciBmb3IgYSByZWFzb24gdGhhdAogICAgICAqIG1hZGUgbm8gc2Vuc2UgdG8gdGhlIHVzZXIuCiAgICAgICovCi0gICAgaWYgKHRtLT50bV9zZWMgPiA1OSkKLSAgICAgICAgdG0tPnRtX3NlYyA9IDU5OwotICAgIHJldHVybiBQeU9iamVjdF9DYWxsRnVuY3Rpb24oY2xzLCAiaWlpaWlpaU8iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX3llYXIgKyAxOTAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX21vbiArIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS0+dG1fbWRheSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV9ob3VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX21pbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV9zZWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR6aW5mbyk7Ci19CisgICAgc2Vjb25kID0gUHlfTUlOKDU5LCB0bS50bV9zZWMpOwogCi1zdGF0aWMgdGltZV90Ci1fUHlUaW1lX0RvdWJsZVRvVGltZXQoZG91YmxlIHgpCi17Ci0gICAgdGltZV90IHJlc3VsdDsKLSAgICBkb3VibGUgZGlmZjsKKyAgICBpZiAodHppbmZvID09IFB5X05vbmUgJiYgZiA9PSBfUHlUaW1lX2xvY2FsdGltZSkgeworICAgICAgICBsb25nIGxvbmcgcHJvYmVfc2Vjb25kcywgcmVzdWx0X3NlY29uZHMsIHRyYW5zaXRpb247CiAKLSAgICByZXN1bHQgPSAodGltZV90KXg7Ci0gICAgLyogSG93IG11Y2ggaW5mbyBkaWQgd2UgbG9zZT8gIHRpbWVfdCBtYXkgYmUgYW4gaW50ZWdyYWwgb3IKLSAgICAgKiBmbG9hdGluZyB0eXBlLCBhbmQgd2UgZG9uJ3Qga25vdyB3aGljaC4gIElmIGl0J3MgaW50ZWdyYWwsCi0gICAgICogd2UgZG9uJ3Qga25vdyB3aGV0aGVyIEMgdHJ1bmNhdGVzLCByb3VuZHMsIHJldHVybnMgdGhlIGZsb29yLAotICAgICAqIGV0Yy4gIElmIHdlIGxvc3QgYSBzZWNvbmQgb3IgbW9yZSwgdGhlIEMgcm91bmRpbmcgaXMKLSAgICAgKiB1bnJlYXNvbmFibGUsIG9yIHRoZSBpbnB1dCBqdXN0IGRvZXNuJ3QgZml0IGluIGEgdGltZV90OwotICAgICAqIGNhbGwgaXQgYW4gZXJyb3IgcmVnYXJkbGVzcy4gIE5vdGUgdGhhdCB0aGUgb3JpZ2luYWwgY2FzdCB0bwotICAgICAqIHRpbWVfdCBjYW4gY2F1c2UgYSBDIGVycm9yIHRvbywgYnV0IG5vdGhpbmcgd2UgY2FuIGRvIHRvCi0gICAgICogd29ybSBhcm91bmQgdGhhdC4KLSAgICAgKi8KLSAgICBkaWZmID0geCAtIChkb3VibGUpcmVzdWx0OwotICAgIGlmIChkaWZmIDw9IC0xLjAgfHwgZGlmZiA+PSAxLjApIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAidGltZXN0YW1wIG91dCBvZiByYW5nZSBmb3IgcGxhdGZvcm0gdGltZV90Iik7Ci0gICAgICAgIHJlc3VsdCA9ICh0aW1lX3QpLTE7CisgICAgICAgIHJlc3VsdF9zZWNvbmRzID0gdXRjX3RvX3NlY29uZHMoeWVhciwgbW9udGgsIGRheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3VyLCBtaW51dGUsIHNlY29uZCk7CisgICAgICAgIC8qIFByb2JlIG1heF9mb2xkX3NlY29uZHMgdG8gZGV0ZWN0IGEgZm9sZC4gKi8KKyAgICAgICAgcHJvYmVfc2Vjb25kcyA9IGxvY2FsKGVwb2NoICsgdGltZXQgLSBtYXhfZm9sZF9zZWNvbmRzKTsKKyAgICAgICAgaWYgKHByb2JlX3NlY29uZHMgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgdHJhbnNpdGlvbiA9IHJlc3VsdF9zZWNvbmRzIC0gcHJvYmVfc2Vjb25kcyAtIG1heF9mb2xkX3NlY29uZHM7CisgICAgICAgIGlmICh0cmFuc2l0aW9uIDwgMCkgeworICAgICAgICAgICAgcHJvYmVfc2Vjb25kcyA9IGxvY2FsKGVwb2NoICsgdGltZXQgKyB0cmFuc2l0aW9uKTsKKyAgICAgICAgICAgIGlmIChwcm9iZV9zZWNvbmRzID09IC0xKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgaWYgKHByb2JlX3NlY29uZHMgPT0gcmVzdWx0X3NlY29uZHMpCisgICAgICAgICAgICAgICAgZm9sZCA9IDE7CisgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogUm91bmQgYSBkb3VibGUgdG8gdGhlIG5lYXJlc3QgbG9uZy4gIHx4fCBtdXN0IGJlIHNtYWxsIGVub3VnaCB0byBmaXQKLSAqIGluIGEgQyBsb25nOyB0aGlzIGlzIG5vdCBjaGVja2VkLgotICovCi1zdGF0aWMgZG91YmxlCi1fUHlUaW1lX1JvdW5kSGFsZkV2ZW4oZG91YmxlIHgpCi17Ci0gICAgZG91YmxlIHJvdW5kZWQgPSByb3VuZCh4KTsKLSAgICBpZiAoZmFicyh4LXJvdW5kZWQpID09IDAuNSkKLSAgICAgICAgLyogaGFsZndheSBjYXNlOiByb3VuZCB0byBldmVuICovCi0gICAgICAgIHJvdW5kZWQgPSAyLjAqcm91bmQoeC8yLjApOwotICAgIHJldHVybiByb3VuZGVkOworICAgIHJldHVybiBuZXdfZGF0ZXRpbWVfZXgyKHllYXIsIG1vbnRoLCBkYXksIGhvdXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWludXRlLCBzZWNvbmQsIHVzLCB0emluZm8sIGZvbGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5VHlwZU9iamVjdCAqKWNscyk7CiB9CiAKIC8qIEludGVybmFsIGhlbHBlci4KQEAgLTQxMjksMzIgKzQyODgsMTcgQEAKICAqIHRvIGdldCB0aGF0IG11Y2ggcHJlY2lzaW9uIChlLmcuLCBDIHRpbWUoKSBpc24ndCBnb29kIGVub3VnaCkuCiAgKi8KIHN0YXRpYyBQeU9iamVjdCAqCi1kYXRldGltZV9mcm9tX3RpbWVzdGFtcChQeU9iamVjdCAqY2xzLCBUTV9GVU5DIGYsIGRvdWJsZSB0aW1lc3RhbXAsCitkYXRldGltZV9mcm9tX3RpbWVzdGFtcChQeU9iamVjdCAqY2xzLCBUTV9GVU5DIGYsIFB5T2JqZWN0ICp0aW1lc3RhbXAsCiAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdHppbmZvKQogewogICAgIHRpbWVfdCB0aW1ldDsKLSAgICBkb3VibGUgZnJhY3Rpb247Ci0gICAgaW50IHVzOworICAgIGxvbmcgdXM7CiAKLSAgICB0aW1ldCA9IF9QeVRpbWVfRG91YmxlVG9UaW1ldCh0aW1lc3RhbXApOwotICAgIGlmICh0aW1ldCA9PSAodGltZV90KS0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKF9QeVRpbWVfT2JqZWN0VG9UaW1ldmFsKHRpbWVzdGFtcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRpbWV0LCAmdXMsIF9QeVRpbWVfUk9VTkRfSEFMRl9FVkVOKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZnJhY3Rpb24gPSB0aW1lc3RhbXAgLSAoZG91YmxlKXRpbWV0OwotICAgIHVzID0gKGludClfUHlUaW1lX1JvdW5kSGFsZkV2ZW4oZnJhY3Rpb24gKiAxZTYpOwotICAgIGlmICh1cyA8IDApIHsKLSAgICAgICAgLyogVHJ1bmNhdGlvbiB0b3dhcmRzIHplcm8gaXMgbm90IHdoYXQgd2Ugd2FudGVkCi0gICAgICAgICAgIGZvciBuZWdhdGl2ZSBudW1iZXJzIChQeXRob24ncyBtb2Qgc2VtYW50aWNzKSAqLwotICAgICAgICB0aW1ldCAtPSAxOwotICAgICAgICB1cyArPSAxMDAwMDAwOwotICAgIH0KLSAgICAvKiBJZiB0aW1lc3RhbXAgaXMgbGVzcyB0aGFuIG9uZSBtaWNyb3NlY29uZCBzbWFsbGVyIHRoYW4gYQotICAgICAqIGZ1bGwgc2Vjb25kLCByb3VuZCB1cC4gT3RoZXJ3aXNlLCBWYWx1ZUVycm9ycyBhcmUgcmFpc2VkCi0gICAgICogZm9yIHNvbWUgZmxvYXRzLiAqLwotICAgIGlmICh1cyA9PSAxMDAwMDAwKSB7Ci0gICAgICAgIHRpbWV0ICs9IDE7Ci0gICAgICAgIHVzID0gMDsKLSAgICB9Ci0gICAgcmV0dXJuIGRhdGV0aW1lX2Zyb21fdGltZXRfYW5kX3VzKGNscywgZiwgdGltZXQsIHVzLCB0emluZm8pOworCisgICAgcmV0dXJuIGRhdGV0aW1lX2Zyb21fdGltZXRfYW5kX3VzKGNscywgZiwgdGltZXQsIChpbnQpdXMsIHR6aW5mbyk7CiB9CiAKIC8qIEludGVybmFsIGhlbHBlci4KQEAgLTQyMDEsMTQgKzQzNDUsMTIgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBzZWxmID0gZGF0ZXRpbWVfYmVzdF9wb3NzaWJsZSgoUHlPYmplY3QgKil0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR6ID09IFB5X05vbmUgPyBsb2NhbHRpbWUgOiBnbXRpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHogPT0gUHlfTm9uZSA/IF9QeVRpbWVfbG9jYWx0aW1lIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlUaW1lX2dtdGltZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eik7CiAgICAgaWYgKHNlbGYgIT0gTlVMTCAmJiB0eiAhPSBQeV9Ob25lKSB7CiAgICAgICAgIC8qIENvbnZlcnQgVVRDIHRvIHR6aW5mbydzIHpvbmUuICovCi0gICAgICAgIFB5T2JqZWN0ICp0ZW1wID0gc2VsZjsKLQotICAgICAgICBzZWxmID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCh0eiwgJlB5SWRfZnJvbXV0YywgIk8iLCBzZWxmKTsKLSAgICAgICAgUHlfREVDUkVGKHRlbXApOworICAgICAgICBzZWxmID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCh0eiwgJlB5SWRfZnJvbXV0YywgIk4iLCBzZWxmKTsKICAgICB9CiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC00MjE5LDcgKzQzNjEsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGRhdGV0aW1lX3V0Y25vdyhQeU9iamVjdCAqY2xzLCBQeU9iamVjdCAqZHVtbXkpCiB7Ci0gICAgcmV0dXJuIGRhdGV0aW1lX2Jlc3RfcG9zc2libGUoY2xzLCBnbXRpbWUsIFB5X05vbmUpOworICAgIHJldHVybiBkYXRldGltZV9iZXN0X3Bvc3NpYmxlKGNscywgX1B5VGltZV9nbXRpbWUsIFB5X05vbmUpOwogfQogCiAvKiBSZXR1cm4gbmV3IGxvY2FsIGRhdGV0aW1lIGZyb20gdGltZXN0YW1wIChQeXRob24gdGltZXN0YW1wIC0tIGEgZG91YmxlKS4gKi8KQEAgLTQyMjcsMjYgKzQzNjksMjQgQEAKIGRhdGV0aW1lX2Zyb210aW1lc3RhbXAoUHlPYmplY3QgKmNscywgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdykKIHsKICAgICBQeU9iamVjdCAqc2VsZjsKLSAgICBkb3VibGUgdGltZXN0YW1wOworICAgIFB5T2JqZWN0ICp0aW1lc3RhbXA7CiAgICAgUHlPYmplY3QgKnR6aW5mbyA9IFB5X05vbmU7CiAgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InRpbWVzdGFtcCIsICJ0eiIsIE5VTEx9OwogCi0gICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAiZHxPOmZyb210aW1lc3RhbXAiLAorICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgIk98Tzpmcm9tdGltZXN0YW1wIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZHMsICZ0aW1lc3RhbXAsICZ0emluZm8pKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoY2hlY2tfdHppbmZvX3N1YmNsYXNzKHR6aW5mbykgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHNlbGYgPSBkYXRldGltZV9mcm9tX3RpbWVzdGFtcChjbHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR6aW5mbyA9PSBQeV9Ob25lID8gbG9jYWx0aW1lIDogZ210aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0emluZm8gPT0gUHlfTm9uZSA/IF9QeVRpbWVfbG9jYWx0aW1lIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5VGltZV9nbXRpbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHppbmZvKTsKICAgICBpZiAoc2VsZiAhPSBOVUxMICYmIHR6aW5mbyAhPSBQeV9Ob25lKSB7CiAgICAgICAgIC8qIENvbnZlcnQgVVRDIHRvIHR6aW5mbydzIHpvbmUuICovCi0gICAgICAgIFB5T2JqZWN0ICp0ZW1wID0gc2VsZjsKLQotICAgICAgICBzZWxmID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCh0emluZm8sICZQeUlkX2Zyb211dGMsICJPIiwgc2VsZik7Ci0gICAgICAgIFB5X0RFQ1JFRih0ZW1wKTsKKyAgICAgICAgc2VsZiA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQodHppbmZvLCAmUHlJZF9mcm9tdXRjLCAiTiIsIHNlbGYpOwogICAgIH0KICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTQyNTUsMTEgKzQzOTUsMTEgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBkYXRldGltZV91dGNmcm9tdGltZXN0YW1wKFB5T2JqZWN0ICpjbHMsIFB5T2JqZWN0ICphcmdzKQogewotICAgIGRvdWJsZSB0aW1lc3RhbXA7CisgICAgUHlPYmplY3QgKnRpbWVzdGFtcDsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKIAotICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJkOnV0Y2Zyb210aW1lc3RhbXAiLCAmdGltZXN0YW1wKSkKLSAgICAgICAgcmVzdWx0ID0gZGF0ZXRpbWVfZnJvbV90aW1lc3RhbXAoY2xzLCBnbXRpbWUsIHRpbWVzdGFtcCwKKyAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzp1dGNmcm9tdGltZXN0YW1wIiwgJnRpbWVzdGFtcCkpCisgICAgICAgIHJlc3VsdCA9IGRhdGV0aW1lX2Zyb21fdGltZXN0YW1wKGNscywgX1B5VGltZV9nbXRpbWUsIHRpbWVzdGFtcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfTm9uZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTQyODgsMjcgKzQ0MjgsMzIgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBkYXRldGltZV9jb21iaW5lKFB5T2JqZWN0ICpjbHMsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3cpCiB7Ci0gICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7ImRhdGUiLCAidGltZSIsIE5VTEx9OworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJkYXRlIiwgInRpbWUiLCAidHppbmZvIiwgTlVMTH07CiAgICAgUHlPYmplY3QgKmRhdGU7CiAgICAgUHlPYmplY3QgKnRpbWU7CisgICAgUHlPYmplY3QgKnR6aW5mbyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAKLSAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAiTyFPITpjb21iaW5lIiwga2V5d29yZHMsCisgICAgaWYgKFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgIk8hTyF8Tzpjb21iaW5lIiwga2V5d29yZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlEYXRlVGltZV9EYXRlVHlwZSwgJmRhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlEYXRlVGltZV9UaW1lVHlwZSwgJnRpbWUpKSB7Ci0gICAgICAgIFB5T2JqZWN0ICp0emluZm8gPSBQeV9Ob25lOwotCi0gICAgICAgIGlmIChIQVNUWklORk8odGltZSkpCi0gICAgICAgICAgICB0emluZm8gPSAoKFB5RGF0ZVRpbWVfVGltZSAqKXRpbWUpLT50emluZm87CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlEYXRlVGltZV9UaW1lVHlwZSwgJnRpbWUsICZ0emluZm8pKSB7CisgICAgICAgIGlmICh0emluZm8gPT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKEhBU1RaSU5GTyh0aW1lKSkKKyAgICAgICAgICAgICAgICB0emluZm8gPSAoKFB5RGF0ZVRpbWVfVGltZSAqKXRpbWUpLT50emluZm87CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdHppbmZvID0gUHlfTm9uZTsKKyAgICAgICAgfQogICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oY2xzLCAiaWlpaWlpaU8iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFVF9ZRUFSKGRhdGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFVF9NT05USChkYXRlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfREFZKGRhdGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJTUVfR0VUX0hPVVIodGltZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElNRV9HRVRfTUlOVVRFKHRpbWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJTUVfR0VUX1NFQ09ORCh0aW1lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSU1FX0dFVF9NSUNST1NFQ09ORCh0aW1lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0emluZm8pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUX1lFQVIoZGF0ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfTU9OVEgoZGF0ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfREFZKGRhdGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElNRV9HRVRfSE9VUih0aW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJTUVfR0VUX01JTlVURSh0aW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJTUVfR0VUX1NFQ09ORCh0aW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJTUVfR0VUX01JQ1JPU0VDT05EKHRpbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHppbmZvKTsKKyAgICAgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgICAgIERBVEVfU0VUX0ZPTEQocmVzdWx0LCBUSU1FX0dFVF9GT0xEKHRpbWUpKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTQzNzYsNyArNDUyMSw3IEBACiAgICAgZWxzZQogICAgICAgICByZXR1cm4gbmV3X2RhdGV0aW1lKHllYXIsIG1vbnRoLCBkYXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBU1RaSU5GTyhkYXRlKSA/IGRhdGUtPnR6aW5mbyA6IFB5X05vbmUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBU1RaSU5GTyhkYXRlKSA/IGRhdGUtPnR6aW5mbyA6IFB5X05vbmUsIDApOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNDQ2OSw5ICs0NjE0LDcgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgICAgICAgICAgaWYgKG9mZmRpZmYgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp0ZW1wID0gcmVzdWx0OwotICAgICAgICAgICAgICAgIHJlc3VsdCA9IGRlbHRhX3N1YnRyYWN0KHJlc3VsdCwgb2ZmZGlmZik7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHRlbXApOworICAgICAgICAgICAgICAgIFB5X1NFVFJFRihyZXN1bHQsIGRlbHRhX3N1YnRyYWN0KHJlc3VsdCwgb2ZmZGlmZikpOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihvZmZkaWZmKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNDUyMSw2ICs0NjY0LDggQEAKICAgICAgICAgICAgICAgICAgICAgICBHRVRfWUVBUihzZWxmKSwgR0VUX01PTlRIKHNlbGYpLCBHRVRfREFZKHNlbGYpLAogICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX0hPVVIoc2VsZiksIERBVEVfR0VUX01JTlVURShzZWxmKSk7CiAgICAgfQorICAgIGlmIChiYXNlcmVwciAhPSBOVUxMICYmIERBVEVfR0VUX0ZPTEQoc2VsZikgIT0gMCkKKyAgICAgICAgYmFzZXJlcHIgPSBhcHBlbmRfa2V5d29yZF9mb2xkKGJhc2VyZXByLCBEQVRFX0dFVF9GT0xEKHNlbGYpKTsKICAgICBpZiAoYmFzZXJlcHIgPT0gTlVMTCB8fCAhIEhBU1RaSU5GTyhzZWxmKSkKICAgICAgICAgcmV0dXJuIGJhc2VyZXByOwogICAgIHJldHVybiBhcHBlbmRfa2V5d29yZF90emluZm8oYmFzZXJlcHIsIHNlbGYtPnR6aW5mbyk7CkBAIC00NTM2LDI1ICs0NjgxLDU1IEBACiBkYXRldGltZV9pc29mb3JtYXQoUHlEYXRlVGltZV9EYXRlVGltZSAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdykKIHsKICAgICBpbnQgc2VwID0gJ1QnOwotICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJzZXAiLCBOVUxMfTsKKyAgICBjaGFyICp0aW1lc3BlYyA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InNlcCIsICJ0aW1lc3BlYyIsIE5VTEx9OwogICAgIGNoYXIgYnVmZmVyWzEwMF07Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKICAgICBpbnQgdXMgPSBEQVRFX0dFVF9NSUNST1NFQ09ORChzZWxmKTsKKyAgICBzdGF0aWMgY2hhciAqc3BlY3NbXVsyXSA9IHsKKyAgICAgICAgeyJob3VycyIsICIlMDRkLSUwMmQtJTAyZCVjJTAyZCJ9LAorICAgICAgICB7Im1pbnV0ZXMiLCAiJTA0ZC0lMDJkLSUwMmQlYyUwMmQ6JTAyZCJ9LAorICAgICAgICB7InNlY29uZHMiLCAiJTA0ZC0lMDJkLSUwMmQlYyUwMmQ6JTAyZDolMDJkIn0sCisgICAgICAgIHsibWlsbGlzZWNvbmRzIiwgIiUwNGQtJTAyZC0lMDJkJWMlMDJkOiUwMmQ6JTAyZC4lMDNkIn0sCisgICAgICAgIHsibWljcm9zZWNvbmRzIiwgIiUwNGQtJTAyZC0lMDJkJWMlMDJkOiUwMmQ6JTAyZC4lMDZkIn0sCisgICAgfTsKKyAgICBzaXplX3QgZ2l2ZW5fc3BlYzsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAifEM6aXNvZm9ybWF0Iiwga2V5d29yZHMsICZzZXApKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAifENzOmlzb2Zvcm1hdCIsIGtleXdvcmRzLCAmc2VwLCAmdGltZXNwZWMpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAodXMpCi0gICAgICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlMDRkLSUwMmQtJTAyZCVjJTAyZDolMDJkOiUwMmQuJTA2ZCIsCisKKyAgICBpZiAodGltZXNwZWMgPT0gTlVMTCB8fCBzdHJjbXAodGltZXNwZWMsICJhdXRvIikgPT0gMCkgeworICAgICAgICBpZiAodXMgPT0gMCkgeworICAgICAgICAgICAgLyogc2Vjb25kcyAqLworICAgICAgICAgICAgZ2l2ZW5fc3BlYyA9IDI7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvKiBtaWNyb3NlY29uZHMgKi8KKyAgICAgICAgICAgIGdpdmVuX3NwZWMgPSA0OworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBmb3IgKGdpdmVuX3NwZWMgPSAwOyBnaXZlbl9zcGVjIDwgUHlfQVJSQVlfTEVOR1RIKHNwZWNzKTsgZ2l2ZW5fc3BlYysrKSB7CisgICAgICAgICAgICBpZiAoc3RyY21wKHRpbWVzcGVjLCBzcGVjc1tnaXZlbl9zcGVjXVswXSkgPT0gMCkgeworICAgICAgICAgICAgICAgIGlmIChnaXZlbl9zcGVjID09IDMpIHsKKyAgICAgICAgICAgICAgICAgICAgdXMgPSB1cyAvIDEwMDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGdpdmVuX3NwZWMgPT0gUHlfQVJSQVlfTEVOR1RIKHNwZWNzKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgIlVua25vd24gdGltZXNwZWMgdmFsdWUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdChzcGVjc1tnaXZlbl9zcGVjXVsxXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUX1lFQVIoc2VsZiksIEdFVF9NT05USChzZWxmKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUX0RBWShzZWxmKSwgKGludClzZXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX0hPVVIoc2VsZiksIERBVEVfR0VUX01JTlVURShzZWxmKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfU0VDT05EKHNlbGYpLCB1cyk7Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJTA0ZC0lMDJkLSUwMmQlYyUwMmQ6JTAyZDolMDJkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUX1lFQVIoc2VsZiksIEdFVF9NT05USChzZWxmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUX0RBWShzZWxmKSwgKGludClzZXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX0hPVVIoc2VsZiksIERBVEVfR0VUX01JTlVURShzZWxmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfU0VDT05EKHNlbGYpKTsKKyAgICB9CiAKICAgICBpZiAoIXJlc3VsdCB8fCAhSEFTVFpJTkZPKHNlbGYpKQogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNDU4MSw2ICs0NzU2LDcwIEBACiAvKiBNaXNjZWxsYW5lb3VzIG1ldGhvZHMuICovCiAKIHN0YXRpYyBQeU9iamVjdCAqCitmbGlwX2ZvbGQoUHlPYmplY3QgKmR0KQoreworICAgIHJldHVybiBuZXdfZGF0ZXRpbWVfZXgyKEdFVF9ZRUFSKGR0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfTU9OVEgoZHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFVF9EQVkoZHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX0hPVVIoZHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX01JTlVURShkdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfU0VDT05EKGR0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9NSUNST1NFQ09ORChkdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFTVFpJTkZPKGR0KSA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUHlEYXRlVGltZV9EYXRlVGltZSAqKWR0KS0+dHppbmZvIDogUHlfTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAhREFURV9HRVRfRk9MRChkdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShkdCkpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZ2V0X2ZsaXBfZm9sZF9vZmZzZXQoUHlPYmplY3QgKmR0KQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQsICpmbGlwX2R0OworCisgICAgZmxpcF9kdCA9IGZsaXBfZm9sZChkdCk7CisgICAgaWYgKGZsaXBfZHQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmVzdWx0ID0gZGF0ZXRpbWVfdXRjb2Zmc2V0KGZsaXBfZHQsIE5VTEwpOworICAgIFB5X0RFQ1JFRihmbGlwX2R0KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKiBQRVAgNDk1IGV4Y2VwdGlvbjogV2hlbmV2ZXIgb25lIG9yIGJvdGggb2YgdGhlIG9wZXJhbmRzIGluCisgKiBpbnRlci16b25lIGNvbXBhcmlzb24gaXMgc3VjaCB0aGF0IGl0cyB1dGNvZmZzZXQoKSBkZXBlbmRzCisgKiBvbiB0aGUgdmFsdWUgb2YgaXRzIGZvbGQgZm9sZCBhdHRyaWJ1dGUsIHRoZSByZXN1bHQgaXMgRmFsc2UuCisgKgorICogUmV0dXJuIDEgaWYgZXhjZXB0aW9uIGFwcGxpZXMsIDAgaWYgbm90LCAgYW5kIC0xIG9uIGVycm9yLgorICovCitzdGF0aWMgaW50CitwZXA0OTVfZXFfZXhjZXB0aW9uKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb3RoZXIsCisgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpvZmZzZXRfc2VsZiwgUHlPYmplY3QgKm9mZnNldF9vdGhlcikKK3sKKyAgICBpbnQgcmVzdWx0ID0gMDsKKyAgICBQeU9iamVjdCAqZmxpcF9vZmZzZXQ7CisKKyAgICBmbGlwX29mZnNldCA9IGdldF9mbGlwX2ZvbGRfb2Zmc2V0KHNlbGYpOworICAgIGlmIChmbGlwX29mZnNldCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKGZsaXBfb2Zmc2V0ICE9IG9mZnNldF9zZWxmICYmCisgICAgICAgIGRlbHRhX2NtcChmbGlwX29mZnNldCwgb2Zmc2V0X3NlbGYpKQorICAgIHsKKyAgICAgICAgcmVzdWx0ID0gMTsKKyAgICAgICAgZ290byBkb25lOworICAgIH0KKyAgICBQeV9ERUNSRUYoZmxpcF9vZmZzZXQpOworCisgICAgZmxpcF9vZmZzZXQgPSBnZXRfZmxpcF9mb2xkX29mZnNldChvdGhlcik7CisgICAgaWYgKGZsaXBfb2Zmc2V0ID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAoZmxpcF9vZmZzZXQgIT0gb2Zmc2V0X290aGVyICYmCisgICAgICAgIGRlbHRhX2NtcChmbGlwX29mZnNldCwgb2Zmc2V0X290aGVyKSkKKyAgICAgICAgcmVzdWx0ID0gMTsKKyBkb25lOgorICAgIFB5X0RFQ1JFRihmbGlwX29mZnNldCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKIGRhdGV0aW1lX3JpY2hjb21wYXJlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb3RoZXIsIGludCBvcCkKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKQEAgLTQ2MjcsNiArNDg2NiwxMyBAQAogICAgICAgICBkaWZmID0gbWVtY21wKCgoUHlEYXRlVGltZV9EYXRlVGltZSAqKXNlbGYpLT5kYXRhLAogICAgICAgICAgICAgICAgICAgICAgICgoUHlEYXRlVGltZV9EYXRlVGltZSAqKW90aGVyKS0+ZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICBfUHlEYXRlVGltZV9EQVRFVElNRV9EQVRBU0laRSk7CisgICAgICAgIGlmICgob3AgPT0gUHlfRVEgfHwgb3AgPT0gUHlfTkUpICYmIGRpZmYgPT0gMCkgeworICAgICAgICAgICAgaW50IGV4ID0gcGVwNDk1X2VxX2V4Y2VwdGlvbihzZWxmLCBvdGhlciwgb2Zmc2V0MSwgb2Zmc2V0Mik7CisgICAgICAgICAgICBpZiAoZXggPT0gLTEpCisgICAgICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICAgICAgaWYgKGV4KQorICAgICAgICAgICAgICAgIGRpZmYgPSAxOworICAgICAgICB9CiAgICAgICAgIHJlc3VsdCA9IGRpZmZfdG9fYm9vbChkaWZmLCBvcCk7CiAgICAgfQogICAgIGVsc2UgaWYgKG9mZnNldDEgIT0gUHlfTm9uZSAmJiBvZmZzZXQyICE9IFB5X05vbmUpIHsKQEAgLTQ2NDIsNiArNDg4OCwxMyBAQAogICAgICAgICAgICAgZGlmZiA9IEdFVF9URF9TRUNPTkRTKGRlbHRhKSB8CiAgICAgICAgICAgICAgICAgICAgR0VUX1REX01JQ1JPU0VDT05EUyhkZWx0YSk7CiAgICAgICAgIFB5X0RFQ1JFRihkZWx0YSk7CisgICAgICAgIGlmICgob3AgPT0gUHlfRVEgfHwgb3AgPT0gUHlfTkUpICYmIGRpZmYgPT0gMCkgeworICAgICAgICAgICAgaW50IGV4ID0gcGVwNDk1X2VxX2V4Y2VwdGlvbihzZWxmLCBvdGhlciwgb2Zmc2V0MSwgb2Zmc2V0Mik7CisgICAgICAgICAgICBpZiAoZXggPT0gLTEpCisgICAgICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICAgICAgaWYgKGV4KQorICAgICAgICAgICAgICAgIGRpZmYgPSAxOworICAgICAgICB9CiAgICAgICAgIHJlc3VsdCA9IGRpZmZfdG9fYm9vbChkaWZmLCBvcCk7CiAgICAgfQogICAgIGVsc2UgaWYgKG9wID09IFB5X0VRKSB7CkBAIC00NjY3LDkgKzQ5MjAsMjYgQEAKIGRhdGV0aW1lX2hhc2goUHlEYXRlVGltZV9EYXRlVGltZSAqc2VsZikKIHsKICAgICBpZiAoc2VsZi0+aGFzaGNvZGUgPT0gLTEpIHsKLSAgICAgICAgUHlPYmplY3QgKm9mZnNldDsKLQotICAgICAgICBvZmZzZXQgPSBkYXRldGltZV91dGNvZmZzZXQoKFB5T2JqZWN0ICopc2VsZiwgTlVMTCk7CisgICAgICAgIFB5T2JqZWN0ICpvZmZzZXQsICpzZWxmMDsKKyAgICAgICAgaWYgKERBVEVfR0VUX0ZPTEQoc2VsZikpIHsKKyAgICAgICAgICAgIHNlbGYwID0gbmV3X2RhdGV0aW1lX2V4MihHRVRfWUVBUihzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfTU9OVEgoc2VsZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUX0RBWShzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9IT1VSKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX01JTlVURShzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9TRUNPTkQoc2VsZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfTUlDUk9TRUNPTkQoc2VsZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFTVFpJTkZPKHNlbGYpID8gc2VsZi0+dHppbmZvIDogUHlfTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBQeV9UWVBFKHNlbGYpKTsKKyAgICAgICAgICAgIGlmIChzZWxmMCA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHNlbGYwID0gKFB5T2JqZWN0ICopc2VsZjsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihzZWxmMCk7CisgICAgICAgIH0KKyAgICAgICAgb2Zmc2V0ID0gZGF0ZXRpbWVfdXRjb2Zmc2V0KHNlbGYwLCBOVUxMKTsKKyAgICAgICAgUHlfREVDUkVGKHNlbGYwKTsKIAogICAgICAgICBpZiAob2Zmc2V0ID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gLTE7CkBAIC00NzIzLDc2ICs0OTkzLDgwIEBACiAgICAgaW50IHNzID0gREFURV9HRVRfU0VDT05EKHNlbGYpOwogICAgIGludCB1cyA9IERBVEVfR0VUX01JQ1JPU0VDT05EKHNlbGYpOwogICAgIFB5T2JqZWN0ICp0emluZm8gPSBIQVNUWklORk8oc2VsZikgPyBzZWxmLT50emluZm8gOiBQeV9Ob25lOworICAgIGludCBmb2xkID0gREFURV9HRVRfRk9MRChzZWxmKTsKIAotICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgInxpaWlpaWlpTzpyZXBsYWNlIiwKKyAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJ8aWlpaWlpaU8kaTpyZXBsYWNlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZXRpbWVfa3dzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmeSwgJm0sICZkLCAmaGgsICZtbSwgJnNzLCAmdXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0emluZm8pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHppbmZvLCAmZm9sZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHR1cGxlID0gUHlfQnVpbGRWYWx1ZSgiaWlpaWlpaU8iLCB5LCBtLCBkLCBoaCwgbW0sIHNzLCB1cywgdHppbmZvKTsKICAgICBpZiAodHVwbGUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgY2xvbmUgPSBkYXRldGltZV9uZXcoUHlfVFlQRShzZWxmKSwgdHVwbGUsIE5VTEwpOworCisgICAgaWYgKGNsb25lICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKGZvbGQgIT0gMCAmJiBmb2xkICE9IDEpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb2xkIG11c3QgYmUgZWl0aGVyIDAgb3IgMSIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgREFURV9TRVRfRk9MRChjbG9uZSwgZm9sZCk7CisgICAgfQogICAgIFB5X0RFQ1JFRih0dXBsZSk7CiAgICAgcmV0dXJuIGNsb25lOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotbG9jYWxfdGltZXpvbmUoUHlEYXRlVGltZV9EYXRlVGltZSAqdXRjX3RpbWUpCitsb2NhbF90aW1lem9uZV9mcm9tX3RpbWVzdGFtcCh0aW1lX3QgdGltZXN0YW1wKQogewogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwotICAgIHN0cnVjdCB0bSAqdGltZXA7Ci0gICAgdGltZV90IHRpbWVzdGFtcDsKICAgICBQeU9iamVjdCAqZGVsdGE7Ci0gICAgUHlPYmplY3QgKm9uZV9zZWNvbmQ7Ci0gICAgUHlPYmplY3QgKnNlY29uZHM7CisgICAgc3RydWN0IHRtIGxvY2FsX3RpbWVfdG07CiAgICAgUHlPYmplY3QgKm5hbWVvID0gTlVMTDsKICAgICBjb25zdCBjaGFyICp6b25lID0gTlVMTDsKIAotICAgIGRlbHRhID0gbmV3X2RlbHRhKHltZF90b19vcmQoR0VUX1lFQVIodXRjX3RpbWUpLCBHRVRfTU9OVEgodXRjX3RpbWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUX0RBWSh1dGNfdGltZSkpIC0gNzE5MTYzLAotICAgICAgICAgICAgICAgICAgICAgIDYwICogKDYwICogREFURV9HRVRfSE9VUih1dGNfdGltZSkgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX01JTlVURSh1dGNfdGltZSkpICsKLSAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9TRUNPTkQodXRjX3RpbWUpLAotICAgICAgICAgICAgICAgICAgICAgIDAsIDApOwotICAgIGlmIChkZWx0YSA9PSBOVUxMKQorICAgIGlmIChfUHlUaW1lX2xvY2FsdGltZSh0aW1lc3RhbXAsICZsb2NhbF90aW1lX3RtKSAhPSAwKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBvbmVfc2Vjb25kID0gbmV3X2RlbHRhKDAsIDEsIDAsIDApOwotICAgIGlmIChvbmVfc2Vjb25kID09IE5VTEwpCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgc2Vjb25kcyA9IGRpdmlkZV90aW1lZGVsdGFfdGltZWRlbHRhKChQeURhdGVUaW1lX0RlbHRhICopZGVsdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeURhdGVUaW1lX0RlbHRhICopb25lX3NlY29uZCk7Ci0gICAgUHlfREVDUkVGKG9uZV9zZWNvbmQpOwotICAgIGlmIChzZWNvbmRzID09IE5VTEwpCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgUHlfREVDUkVGKGRlbHRhKTsKLSAgICB0aW1lc3RhbXAgPSBQeUxvbmdfQXNMb25nKHNlY29uZHMpOwotICAgIFB5X0RFQ1JFRihzZWNvbmRzKTsKLSAgICBpZiAodGltZXN0YW1wID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHRpbWVwID0gbG9jYWx0aW1lKCZ0aW1lc3RhbXApOwogI2lmZGVmIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUKLSAgICB6b25lID0gdGltZXAtPnRtX3pvbmU7Ci0gICAgZGVsdGEgPSBuZXdfZGVsdGEoMCwgdGltZXAtPnRtX2dtdG9mZiwgMCwgMSk7CisgICAgem9uZSA9IGxvY2FsX3RpbWVfdG0udG1fem9uZTsKKyAgICBkZWx0YSA9IG5ld19kZWx0YSgwLCBsb2NhbF90aW1lX3RtLnRtX2dtdG9mZiwgMCwgMSk7CiAjZWxzZSAvKiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FICovCiAgICAgewotICAgICAgICBQeU9iamVjdCAqbG9jYWxfdGltZTsKLSAgICAgICAgbG9jYWxfdGltZSA9IG5ld19kYXRldGltZSh0aW1lcC0+dG1feWVhciArIDE5MDAsIHRpbWVwLT50bV9tb24gKyAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVwLT50bV9tZGF5LCB0aW1lcC0+dG1faG91ciwgdGltZXAtPnRtX21pbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lcC0+dG1fc2VjLCBEQVRFX0dFVF9NSUNST1NFQ09ORCh1dGNfdGltZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRjX3RpbWUtPnR6aW5mbyk7Ci0gICAgICAgIGlmIChsb2NhbF90aW1lID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICBkZWx0YSA9IGRhdGV0aW1lX3N1YnRyYWN0KGxvY2FsX3RpbWUsIChQeU9iamVjdCopdXRjX3RpbWUpOwotICAgICAgICAvKiBYWFg6IGJlZm9yZSByZWx5aW5nIG9uIHR6bmFtZSwgd2Ugc2hvdWxkIGNvbXBhcmUgZGVsdGEKLSAgICAgICAgICAgdG8gdGhlIG9mZnNldCBpbXBsaWVkIGJ5IHRpbWV6b25lL2FsdHpvbmUgKi8KLSAgICAgICAgaWYgKGRheWxpZ2h0ICYmIHRpbWVwLT50bV9pc2RzdCA+PSAwKQotICAgICAgICAgICAgem9uZSA9IHR6bmFtZVt0aW1lcC0+dG1faXNkc3QgJSAyXTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgem9uZSA9IHR6bmFtZVswXTsKKyAgICAgICAgUHlPYmplY3QgKmxvY2FsX3RpbWUsICp1dGNfdGltZTsKKyAgICAgICAgc3RydWN0IHRtIHV0Y190aW1lX3RtOworICAgICAgICBjaGFyIGJ1ZlsxMDBdOworICAgICAgICBzdHJmdGltZShidWYsIHNpemVvZihidWYpLCAiJVoiLCAmbG9jYWxfdGltZV90bSk7CisgICAgICAgIHpvbmUgPSBidWY7CisgICAgICAgIGxvY2FsX3RpbWUgPSBuZXdfZGF0ZXRpbWUobG9jYWxfdGltZV90bS50bV95ZWFyICsgMTkwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbF90aW1lX3RtLnRtX21vbiArIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxfdGltZV90bS50bV9tZGF5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsX3RpbWVfdG0udG1faG91ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbF90aW1lX3RtLnRtX21pbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbF90aW1lX3RtLnRtX3NlYywgMCwgUHlfTm9uZSwgMCk7CisgICAgICAgIGlmIChsb2NhbF90aW1lID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGlmIChfUHlUaW1lX2dtdGltZSh0aW1lc3RhbXAsICZ1dGNfdGltZV90bSkgIT0gMCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB1dGNfdGltZSA9IG5ld19kYXRldGltZSh1dGNfdGltZV90bS50bV95ZWFyICsgMTkwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRjX3RpbWVfdG0udG1fbW9uICsgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRjX3RpbWVfdG0udG1fbWRheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRjX3RpbWVfdG0udG1faG91ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRjX3RpbWVfdG0udG1fbWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGNfdGltZV90bS50bV9zZWMsIDAsIFB5X05vbmUsIDApOworICAgICAgICBpZiAodXRjX3RpbWUgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKGxvY2FsX3RpbWUpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgZGVsdGEgPSBkYXRldGltZV9zdWJ0cmFjdChsb2NhbF90aW1lLCB1dGNfdGltZSk7CiAgICAgICAgIFB5X0RFQ1JFRihsb2NhbF90aW1lKTsKKyAgICAgICAgUHlfREVDUkVGKHV0Y190aW1lKTsKICAgICB9CiAjZW5kaWYgLyogSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORSAqLworICAgIGlmIChkZWx0YSA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgaWYgKHpvbmUgIT0gTlVMTCkgewogICAgICAgICBuYW1lbyA9IFB5VW5pY29kZV9EZWNvZGVMb2NhbGUoem9uZSwgInN1cnJvZ2F0ZWVzY2FwZSIpOwogICAgICAgICBpZiAobmFtZW8gPT0gTlVMTCkKQEAgLTQ4MDUsMTIgKzUwNzksNjUgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorbG9jYWxfdGltZXpvbmUoUHlEYXRlVGltZV9EYXRlVGltZSAqdXRjX3RpbWUpCit7CisgICAgdGltZV90IHRpbWVzdGFtcDsKKyAgICBQeU9iamVjdCAqZGVsdGE7CisgICAgUHlPYmplY3QgKm9uZV9zZWNvbmQ7CisgICAgUHlPYmplY3QgKnNlY29uZHM7CisKKyAgICBkZWx0YSA9IGRhdGV0aW1lX3N1YnRyYWN0KChQeU9iamVjdCAqKXV0Y190aW1lLCBQeURhdGVUaW1lX0Vwb2NoKTsKKyAgICBpZiAoZGVsdGEgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgb25lX3NlY29uZCA9IG5ld19kZWx0YSgwLCAxLCAwLCAwKTsKKyAgICBpZiAob25lX3NlY29uZCA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihkZWx0YSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBzZWNvbmRzID0gZGl2aWRlX3RpbWVkZWx0YV90aW1lZGVsdGEoKFB5RGF0ZVRpbWVfRGVsdGEgKilkZWx0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5RGF0ZVRpbWVfRGVsdGEgKilvbmVfc2Vjb25kKTsKKyAgICBQeV9ERUNSRUYob25lX3NlY29uZCk7CisgICAgUHlfREVDUkVGKGRlbHRhKTsKKyAgICBpZiAoc2Vjb25kcyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB0aW1lc3RhbXAgPSBfUHlMb25nX0FzVGltZV90KHNlY29uZHMpOworICAgIFB5X0RFQ1JFRihzZWNvbmRzKTsKKyAgICBpZiAodGltZXN0YW1wID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBsb2NhbF90aW1lem9uZV9mcm9tX3RpbWVzdGFtcCh0aW1lc3RhbXApOworfQorCitzdGF0aWMgbG9uZyBsb25nCitsb2NhbF90b19zZWNvbmRzKGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBkYXksCisgICAgICAgICAgICAgICAgIGludCBob3VyLCBpbnQgbWludXRlLCBpbnQgc2Vjb25kLCBpbnQgZm9sZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitsb2NhbF90aW1lem9uZV9mcm9tX2xvY2FsKFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKmxvY2FsX2R0KQoreworICAgIGxvbmcgbG9uZyBzZWNvbmRzOworICAgIHRpbWVfdCB0aW1lc3RhbXA7CisgICAgc2Vjb25kcyA9IGxvY2FsX3RvX3NlY29uZHMoR0VUX1lFQVIobG9jYWxfZHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFVF9NT05USChsb2NhbF9kdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUX0RBWShsb2NhbF9kdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfSE9VUihsb2NhbF9kdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfTUlOVVRFKGxvY2FsX2R0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9TRUNPTkQobG9jYWxfZHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX0ZPTEQobG9jYWxfZHQpKTsKKyAgICBpZiAoc2Vjb25kcyA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgLyogWFhYOiBhZGQgYm91bmRzIGNoZWNrICovCisgICAgdGltZXN0YW1wID0gc2Vjb25kcyAtIGVwb2NoOworICAgIHJldHVybiBsb2NhbF90aW1lem9uZV9mcm9tX3RpbWVzdGFtcCh0aW1lc3RhbXApOworfQorCiBzdGF0aWMgUHlEYXRlVGltZV9EYXRlVGltZSAqCiBkYXRldGltZV9hc3RpbWV6b25lKFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3cpCiB7CiAgICAgUHlEYXRlVGltZV9EYXRlVGltZSAqcmVzdWx0OwogICAgIFB5T2JqZWN0ICpvZmZzZXQ7CiAgICAgUHlPYmplY3QgKnRlbXA7CisgICAgUHlPYmplY3QgKnNlbGZfdHppbmZvOwogICAgIFB5T2JqZWN0ICp0emluZm8gPSBQeV9Ob25lOwogICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJ0eiIsIE5VTEx9OwogCkBAIC00ODIxLDI3ICs1MTQ4LDI3IEBACiAgICAgaWYgKGNoZWNrX3R6aW5mb19zdWJjbGFzcyh0emluZm8pID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmICghSEFTVFpJTkZPKHNlbGYpIHx8IHNlbGYtPnR6aW5mbyA9PSBQeV9Ob25lKQotICAgICAgICBnb3RvIE5lZWRBd2FyZTsKKyAgICBpZiAoIUhBU1RaSU5GTyhzZWxmKSB8fCBzZWxmLT50emluZm8gPT0gUHlfTm9uZSkgeworICAgICAgICBzZWxmX3R6aW5mbyA9IGxvY2FsX3RpbWV6b25lX2Zyb21fbG9jYWwoc2VsZik7CisgICAgICAgIGlmIChzZWxmX3R6aW5mbyA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2VsZl90emluZm8gPSBzZWxmLT50emluZm87CisgICAgICAgIFB5X0lOQ1JFRihzZWxmX3R6aW5mbyk7CisgICAgfQogCiAgICAgLyogQ29udmVyc2lvbiB0byBzZWxmJ3Mgb3duIHRpbWUgem9uZSBpcyBhIE5PUC4gKi8KLSAgICBpZiAoc2VsZi0+dHppbmZvID09IHR6aW5mbykgeworICAgIGlmIChzZWxmX3R6aW5mbyA9PSB0emluZm8pIHsKKyAgICAgICAgUHlfREVDUkVGKHNlbGZfdHppbmZvKTsKICAgICAgICAgUHlfSU5DUkVGKHNlbGYpOwogICAgICAgICByZXR1cm4gc2VsZjsKICAgICB9CiAKICAgICAvKiBDb252ZXJ0IHNlbGYgdG8gVVRDLiAqLwotICAgIG9mZnNldCA9IGRhdGV0aW1lX3V0Y29mZnNldCgoUHlPYmplY3QgKilzZWxmLCBOVUxMKTsKKyAgICBvZmZzZXQgPSBjYWxsX3V0Y29mZnNldChzZWxmX3R6aW5mbywgKFB5T2JqZWN0ICopc2VsZik7CisgICAgUHlfREVDUkVGKHNlbGZfdHppbmZvKTsKICAgICBpZiAob2Zmc2V0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChvZmZzZXQgPT0gUHlfTm9uZSkgewotICAgICAgICBQeV9ERUNSRUYob2Zmc2V0KTsKLSAgICAgIE5lZWRBd2FyZToKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJhc3RpbWV6b25lKCkgY2Fubm90IGJlIGFwcGxpZWQgdG8gIgotICAgICAgICAgICAgICAgICAgICAgICAgImEgbmFpdmUgZGF0ZXRpbWUiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCiAgICAgLyogcmVzdWx0ID0gc2VsZiAtIG9mZnNldCAqLwogICAgIHJlc3VsdCA9IChQeURhdGVUaW1lX0RhdGVUaW1lICopYWRkX2RhdGV0aW1lX3RpbWVkZWx0YShzZWxmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5RGF0ZVRpbWVfRGVsdGEgKilvZmZzZXQsIC0xKTsKQEAgLTQ4NDksNiArNTE3NiwzMiBAQAogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKKyAgICAvKiBNYWtlIHN1cmUgcmVzdWx0IGlzIGF3YXJlIGFuZCBVVEMuICovCisgICAgaWYgKCFIQVNUWklORk8ocmVzdWx0KSkgeworICAgICAgICB0ZW1wID0gKFB5T2JqZWN0ICopcmVzdWx0OworICAgICAgICByZXN1bHQgPSAoUHlEYXRlVGltZV9EYXRlVGltZSAqKQorICAgICAgICAgICAgICAgICAgIG5ld19kYXRldGltZV9leDIoR0VUX1lFQVIocmVzdWx0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFVF9NT05USChyZXN1bHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUX0RBWShyZXN1bHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfSE9VUihyZXN1bHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfTUlOVVRFKHJlc3VsdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9TRUNPTkQocmVzdWx0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX01JQ1JPU0VDT05EKHJlc3VsdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeURhdGVUaW1lX1RpbWVab25lX1VUQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX0ZPTEQocmVzdWx0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUocmVzdWx0KSk7CisgICAgICAgIFB5X0RFQ1JFRih0ZW1wKTsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBSZXN1bHQgaXMgYWxyZWFkeSBhd2FyZSAtIGp1c3QgcmVwbGFjZSB0emluZm8uICovCisgICAgICAgIHRlbXAgPSByZXN1bHQtPnR6aW5mbzsKKyAgICAgICAgcmVzdWx0LT50emluZm8gPSBQeURhdGVUaW1lX1RpbWVab25lX1VUQzsKKyAgICAgICAgUHlfSU5DUkVGKHJlc3VsdC0+dHppbmZvKTsKKyAgICAgICAgUHlfREVDUkVGKHRlbXApOworICAgIH0KKwogICAgIC8qIEF0dGFjaCBuZXcgdHppbmZvIGFuZCBsZXQgZnJvbXV0YygpIGRvIHRoZSByZXN0LiAqLwogICAgIHRlbXAgPSByZXN1bHQtPnR6aW5mbzsKICAgICBpZiAodHppbmZvID09IFB5X05vbmUpIHsKQEAgLTQ4OTYsNiArNTI0OSw1NiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc3RmbGFnKTsKIH0KIAorc3RhdGljIGxvbmcgbG9uZworbG9jYWxfdG9fc2Vjb25kcyhpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF5LAorICAgICAgICAgICAgICAgICBpbnQgaG91ciwgaW50IG1pbnV0ZSwgaW50IHNlY29uZCwgaW50IGZvbGQpCit7CisgICAgbG9uZyBsb25nIHQsIGEsIGIsIHUxLCB1MiwgdDEsIHQyLCBsdDsKKyAgICB0ID0gdXRjX3RvX3NlY29uZHMoeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQpOworICAgIC8qIE91ciBnb2FsIGlzIHRvIHNvbHZlIHQgPSBsb2NhbCh1KSBmb3IgdS4gKi8KKyAgICBsdCA9IGxvY2FsKHQpOworICAgIGlmIChsdCA9PSAtMSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGEgPSBsdCAtIHQ7CisgICAgdTEgPSB0IC0gYTsKKyAgICB0MSA9IGxvY2FsKHUxKTsKKyAgICBpZiAodDEgPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAodDEgPT0gdCkgeworICAgICAgICAvKiBXZSBmb3VuZCBvbmUgc29sdXRpb24sIGJ1dCBpdCBtYXkgbm90IGJlIHRoZSBvbmUgd2UgbmVlZC4KKyAgICAgICAgICogTG9vayBmb3IgYW4gZWFybGllciBzb2x1dGlvbiAoaWYgYGZvbGRgIGlzIDApLCBvciBhCisgICAgICAgICAqIGxhdGVyIG9uZSAoaWYgYGZvbGRgIGlzIDEpLiAqLworICAgICAgICBpZiAoZm9sZCkKKyAgICAgICAgICAgIHUyID0gdTEgKyBtYXhfZm9sZF9zZWNvbmRzOworICAgICAgICBlbHNlCisgICAgICAgICAgICB1MiA9IHUxIC0gbWF4X2ZvbGRfc2Vjb25kczsKKyAgICAgICAgbHQgPSBsb2NhbCh1Mik7CisgICAgICAgIGlmIChsdCA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgYiA9IGx0IC0gdTI7CisgICAgICAgIGlmIChhID09IGIpCisgICAgICAgICAgICByZXR1cm4gdTE7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBiID0gdDEgLSB1MTsKKyAgICAgICAgYXNzZXJ0KGEgIT0gYik7CisgICAgfQorICAgIHUyID0gdCAtIGI7CisgICAgdDIgPSBsb2NhbCh1Mik7CisgICAgaWYgKHQyID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKHQyID09IHQpCisgICAgICAgIHJldHVybiB1MjsKKyAgICBpZiAodDEgPT0gdCkKKyAgICAgICAgcmV0dXJuIHUxOworICAgIC8qIFdlIGhhdmUgZm91bmQgYm90aCBvZmZzZXRzIGEgYW5kIGIsIGJ1dCBuZWl0aGVyIHQgLSBhIG5vciB0IC0gYiBpcworICAgICAqIGEgc29sdXRpb24uICBUaGlzIG1lYW5zIHQgaXMgaW4gdGhlIGdhcC4gKi8KKyAgICByZXR1cm4gZm9sZD9QeV9NSU4odTEsIHUyKTpQeV9NQVgodTEsIHUyKTsKK30KKworLyogZGF0ZSgxOTcwLDEsMSkudG9vcmRpbmFsKCkgPT0gNzE5MTYzICovCisjZGVmaW5lIEVQT0NIX1NFQ09ORFMgKDcxOTE2M0xMICogMjQgKiA2MCAqIDYwKQorCiBzdGF0aWMgUHlPYmplY3QgKgogZGF0ZXRpbWVfdGltZXN0YW1wKFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKnNlbGYpCiB7CkBAIC00OTEwLDMzICs1MzEzLDE4IEBACiAgICAgICAgIFB5X0RFQ1JFRihkZWx0YSk7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBzdHJ1Y3QgdG0gdGltZTsKLSAgICAgICAgdGltZV90IHRpbWVzdGFtcDsKLSAgICAgICAgbWVtc2V0KCh2b2lkICopICZ0aW1lLCAnXDAnLCBzaXplb2Yoc3RydWN0IHRtKSk7Ci0gICAgICAgIHRpbWUudG1feWVhciA9IEdFVF9ZRUFSKHNlbGYpIC0gMTkwMDsKLSAgICAgICAgdGltZS50bV9tb24gPSBHRVRfTU9OVEgoc2VsZikgLSAxOwotICAgICAgICB0aW1lLnRtX21kYXkgPSBHRVRfREFZKHNlbGYpOwotICAgICAgICB0aW1lLnRtX2hvdXIgPSBEQVRFX0dFVF9IT1VSKHNlbGYpOwotICAgICAgICB0aW1lLnRtX21pbiA9IERBVEVfR0VUX01JTlVURShzZWxmKTsKLSAgICAgICAgdGltZS50bV9zZWMgPSBEQVRFX0dFVF9TRUNPTkQoc2VsZik7Ci0gICAgICAgIHRpbWUudG1fd2RheSA9IC0xOwotICAgICAgICB0aW1lLnRtX2lzZHN0ID0gLTE7Ci0gICAgICAgIHRpbWVzdGFtcCA9IG1rdGltZSgmdGltZSk7Ci0gICAgICAgIGlmICh0aW1lc3RhbXAgPT0gKHRpbWVfdCkoLTEpCi0jaWZuZGVmIF9BSVgKLSAgICAgICAgICAgIC8qIFJldHVybiB2YWx1ZSBvZiAtMSBkb2VzIG5vdCBuZWNlc3NhcmlseSBtZWFuIGFuIGVycm9yLAotICAgICAgICAgICAgICogYnV0IHRtX3dkYXkgY2Fubm90IHJlbWFpbiBzZXQgdG8gLTEgaWYgbWt0aW1lIHN1Y2NlZWRlZC4gKi8KLSAgICAgICAgICAgICYmIHRpbWUudG1fd2RheSA9PSAtMQotI2Vsc2UKLSAgICAgICAgICAgIC8qIG9uIEFJWCwgdG1fd2RheSBpcyBhbHdheXMgc2V0cywgZXZlbiBvbiBlcnJvciAqLwotI2VuZGlmCi0gICAgICAgICAgKQotICAgICAgICB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGltZXN0YW1wIG91dCBvZiByYW5nZSIpOworICAgICAgICBsb25nIGxvbmcgc2Vjb25kczsKKyAgICAgICAgc2Vjb25kcyA9IGxvY2FsX3RvX3NlY29uZHMoR0VUX1lFQVIoc2VsZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFVF9NT05USChzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUX0RBWShzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfSE9VUihzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfTUlOVVRFKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9TRUNPTkQoc2VsZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX0ZPTEQoc2VsZikpOworICAgICAgICBpZiAoc2Vjb25kcyA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIHJlc3VsdCA9IFB5RmxvYXRfRnJvbURvdWJsZSh0aW1lc3RhbXAgKyBEQVRFX0dFVF9NSUNST1NFQ09ORChzZWxmKSAvIDFlNik7CisgICAgICAgIHJlc3VsdCA9IFB5RmxvYXRfRnJvbURvdWJsZShzZWNvbmRzIC0gRVBPQ0hfU0VDT05EUyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9NSUNST1NFQ09ORChzZWxmKSAvIDFlNik7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC00OTU2LDcgKzUzNDQsOCBAQAogICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9NSU5VVEUoc2VsZiksCiAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX1NFQ09ORChzZWxmKSwKICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfTUlDUk9TRUNPTkQoc2VsZiksCi0gICAgICAgICAgICAgICAgICAgIFB5X05vbmUpOworICAgICAgICAgICAgICAgICAgICBQeV9Ob25lLAorICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9GT0xEKHNlbGYpKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTQ5NjYsNyArNTM1NSw4IEBACiAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX01JTlVURShzZWxmKSwKICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfU0VDT05EKHNlbGYpLAogICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9NSUNST1NFQ09ORChzZWxmKSwKLSAgICAgICAgICAgICAgICAgICAgR0VUX0RUX1RaSU5GTyhzZWxmKSk7CisgICAgICAgICAgICAgICAgICAgIEdFVF9EVF9UWklORk8oc2VsZiksCisgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX0ZPTEQoc2VsZikpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNTAxOCw3ICs1NDA4LDcgQEAKICAqIF9fZ2V0c3RhdGVfXyBpc24ndCBleHBvc2VkLgogICovCiBzdGF0aWMgUHlPYmplY3QgKgotZGF0ZXRpbWVfZ2V0c3RhdGUoUHlEYXRlVGltZV9EYXRlVGltZSAqc2VsZikKK2RhdGV0aW1lX2dldHN0YXRlKFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKnNlbGYsIGludCBwcm90bykKIHsKICAgICBQeU9iamVjdCAqYmFzZXN0YXRlOwogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwpAQCAtNTAyNiw2ICs1NDE2LDkgQEAKICAgICBiYXNlc3RhdGUgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopc2VsZi0+ZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlEYXRlVGltZV9EQVRFVElNRV9EQVRBU0laRSk7CiAgICAgaWYgKGJhc2VzdGF0ZSAhPSBOVUxMKSB7CisgICAgICAgIGlmIChwcm90byA+IDMgJiYgREFURV9HRVRfRk9MRChzZWxmKSkKKyAgICAgICAgICAgIC8qIFNldCB0aGUgZmlyc3QgYml0IG9mIHRoZSB0aGlyZCBieXRlICovCisgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhiYXNlc3RhdGUpWzJdIHw9ICgxIDw8IDcpOwogICAgICAgICBpZiAoISBIQVNUWklORk8oc2VsZikgfHwgc2VsZi0+dHppbmZvID09IFB5X05vbmUpCiAgICAgICAgICAgICByZXN1bHQgPSBQeVR1cGxlX1BhY2soMSwgYmFzZXN0YXRlKTsKICAgICAgICAgZWxzZQpAQCAtNTAzNiw5ICs1NDI5LDE5IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCitkYXRldGltZV9yZWR1Y2VfZXgoUHlEYXRlVGltZV9EYXRlVGltZSAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IHByb3RvOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpfX3JlZHVjZV9leF9fIiwgJnByb3RvKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKE9OKSIsIFB5X1RZUEUoc2VsZiksIGRhdGV0aW1lX2dldHN0YXRlKHNlbGYsIHByb3RvKSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCiBkYXRldGltZV9yZWR1Y2UoUHlEYXRlVGltZV9EYXRlVGltZSAqc2VsZiwgUHlPYmplY3QgKmFyZykKIHsKLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKE9OKSIsIFB5X1RZUEUoc2VsZiksIGRhdGV0aW1lX2dldHN0YXRlKHNlbGYpKTsKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKE9OKSIsIFB5X1RZUEUoc2VsZiksIGRhdGV0aW1lX2dldHN0YXRlKHNlbGYsIDIpKTsKIH0KIAogc3RhdGljIFB5TWV0aG9kRGVmIGRhdGV0aW1lX21ldGhvZHNbXSA9IHsKQEAgLTUwOTMsOSArNTQ5NiwxMiBAQAogCiAgICAgeyJpc29mb3JtYXQiLCAgIChQeUNGdW5jdGlvbilkYXRldGltZV9pc29mb3JtYXQsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCiAgICAgIFB5RG9jX1NUUigiW3NlcF0gLT4gc3RyaW5nIGluIElTTyA4NjAxIGZvcm1hdCwgIgotICAgICAgICAgICAgICAgIllZWVktTU0tRERUSEg6TU06U1NbLm1tbW1tbV1bK0hIOk1NXS5cblxuIgorICAgICAgICAgICAgICAgIllZWVktTU0tRERUW0hIWzpNTVs6U1NbLm1tbVt1dXVdXV1dXVsrSEg6TU1dLlxuIgogICAgICAgICAgICAgICAgInNlcCBpcyB1c2VkIHRvIHNlcGFyYXRlIHRoZSB5ZWFyIGZyb20gdGhlIHRpbWUsIGFuZCAiCi0gICAgICAgICAgICAgICAiZGVmYXVsdHMgdG8gJ1QnLiIpfSwKKyAgICAgICAgICAgICAgICJkZWZhdWx0cyB0byAnVCcuXG4iCisgICAgICAgICAgICAgICAidGltZXNwZWMgc3BlY2lmaWVzIHdoYXQgY29tcG9uZW50cyBvZiB0aGUgdGltZSB0byBpbmNsdWRlIgorICAgICAgICAgICAgICAgIiAoYWxsb3dlZCB2YWx1ZXMgYXJlICdhdXRvJywgJ2hvdXJzJywgJ21pbnV0ZXMnLCAnc2Vjb25kcycsIgorICAgICAgICAgICAgICAgIiAnbWlsbGlzZWNvbmRzJywgYW5kICdtaWNyb3NlY29uZHMnKS5cbiIpfSwKIAogICAgIHsidXRjb2Zmc2V0IiwgICAgICAgKFB5Q0Z1bmN0aW9uKWRhdGV0aW1lX3V0Y29mZnNldCwgTUVUSF9OT0FSR1MsCiAgICAgIFB5RG9jX1NUUigiUmV0dXJuIHNlbGYudHppbmZvLnV0Y29mZnNldChzZWxmKS4iKX0sCkBAIC01MTEyLDEzICs1NTE4LDE2IEBACiAgICAgeyJhc3RpbWV6b25lIiwgIChQeUNGdW5jdGlvbilkYXRldGltZV9hc3RpbWV6b25lLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAogICAgICBQeURvY19TVFIoInR6IC0+IGNvbnZlcnQgdG8gbG9jYWwgdGltZSBpbiBuZXcgdGltZXpvbmUgdHpcbiIpfSwKIAorICAgIHsiX19yZWR1Y2VfZXhfXyIsIChQeUNGdW5jdGlvbilkYXRldGltZV9yZWR1Y2VfZXgsICAgICBNRVRIX1ZBUkFSR1MsCisgICAgIFB5RG9jX1NUUigiX19yZWR1Y2VfZXhfXyhwcm90bykgLT4gKGNscywgc3RhdGUpIil9LAorCiAgICAgeyJfX3JlZHVjZV9fIiwgKFB5Q0Z1bmN0aW9uKWRhdGV0aW1lX3JlZHVjZSwgICAgIE1FVEhfTk9BUkdTLAogICAgICBQeURvY19TVFIoIl9fcmVkdWNlX18oKSAtPiAoY2xzLCBzdGF0ZSkiKX0sCiAKICAgICB7TlVMTCwgICAgICBOVUxMfQogfTsKIAotc3RhdGljIGNoYXIgZGF0ZXRpbWVfZG9jW10gPQorc3RhdGljIGNvbnN0IGNoYXIgZGF0ZXRpbWVfZG9jW10gPQogUHlEb2NfU1RSKCJkYXRldGltZSh5ZWFyLCBtb250aCwgZGF5WywgaG91clssIG1pbnV0ZVssIHNlY29uZFssIG1pY3Jvc2Vjb25kWyx0emluZm9dXV1dXSlcblwKIFxuXAogVGhlIHllYXIsIG1vbnRoIGFuZCBkYXkgYXJndW1lbnRzIGFyZSByZXF1aXJlZC4gdHppbmZvIG1heSBiZSBOb25lLCBvciBhblxuXApAQCAtNTIwMSw3ICs1NjEwLDkgQEAKICAgICBuZXdfdGltZV9leCwKICAgICBuZXdfZGVsdGFfZXgsCiAgICAgZGF0ZXRpbWVfZnJvbXRpbWVzdGFtcCwKLSAgICBkYXRlX2Zyb210aW1lc3RhbXAKKyAgICBkYXRlX2Zyb210aW1lc3RhbXAsCisgICAgbmV3X2RhdGV0aW1lX2V4MiwKKyAgICBuZXdfdGltZV9leDIKIH07CiAKIApAQCAtNTI4MiwxMiArNTY5MywxMiBAQAogICAgIC8qIHRpbWUgdmFsdWVzICovCiAgICAgZCA9IFB5RGF0ZVRpbWVfVGltZVR5cGUudHBfZGljdDsKIAotICAgIHggPSBuZXdfdGltZSgwLCAwLCAwLCAwLCBQeV9Ob25lKTsKKyAgICB4ID0gbmV3X3RpbWUoMCwgMCwgMCwgMCwgUHlfTm9uZSwgMCk7CiAgICAgaWYgKHggPT0gTlVMTCB8fCBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAibWluIiwgeCkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9ERUNSRUYoeCk7CiAKLSAgICB4ID0gbmV3X3RpbWUoMjMsIDU5LCA1OSwgOTk5OTk5LCBQeV9Ob25lKTsKKyAgICB4ID0gbmV3X3RpbWUoMjMsIDU5LCA1OSwgOTk5OTk5LCBQeV9Ob25lLCAwKTsKICAgICBpZiAoeCA9PSBOVUxMIHx8IFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJtYXgiLCB4KSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X0RFQ1JFRih4KTsKQEAgLTUzMDAsMTIgKzU3MTEsMTIgQEAKICAgICAvKiBkYXRldGltZSB2YWx1ZXMgKi8KICAgICBkID0gUHlEYXRlVGltZV9EYXRlVGltZVR5cGUudHBfZGljdDsKIAotICAgIHggPSBuZXdfZGF0ZXRpbWUoMSwgMSwgMSwgMCwgMCwgMCwgMCwgUHlfTm9uZSk7CisgICAgeCA9IG5ld19kYXRldGltZSgxLCAxLCAxLCAwLCAwLCAwLCAwLCBQeV9Ob25lLCAwKTsKICAgICBpZiAoeCA9PSBOVUxMIHx8IFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJtaW4iLCB4KSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X0RFQ1JFRih4KTsKIAotICAgIHggPSBuZXdfZGF0ZXRpbWUoTUFYWUVBUiwgMTIsIDMxLCAyMywgNTksIDU5LCA5OTk5OTksIFB5X05vbmUpOworICAgIHggPSBuZXdfZGF0ZXRpbWUoTUFYWUVBUiwgMTIsIDMxLCAyMywgNTksIDU5LCA5OTk5OTksIFB5X05vbmUsIDApOwogICAgIGlmICh4ID09IE5VTEwgfHwgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIm1heCIsIHgpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfREVDUkVGKHgpOwpAQCAtNTM0Nyw3ICs1NzU4LDcgQEAKIAogICAgIC8qIEVwb2NoICovCiAgICAgUHlEYXRlVGltZV9FcG9jaCA9IG5ld19kYXRldGltZSgxOTcwLCAxLCAxLCAwLCAwLCAwLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlEYXRlVGltZV9UaW1lWm9uZV9VVEMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlEYXRlVGltZV9UaW1lWm9uZV9VVEMsIDApOwogICAgIGlmIChQeURhdGVUaW1lX0Vwb2NoID09IE5VTEwpCiAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtNTM4MiwxOSArNTc5MywxOSBAQAogICAgIC8qIEEgNC15ZWFyIGN5Y2xlIGhhcyBhbiBleHRyYSBsZWFwIGRheSBvdmVyIHdoYXQgd2UnZCBnZXQgZnJvbQogICAgICAqIHBhc3RpbmcgdG9nZXRoZXIgNCBzaW5nbGUgeWVhcnMuCiAgICAgICovCi0gICAgYXNzZXJ0KERJNFkgPT0gNCAqIDM2NSArIDEpOworICAgIFB5X0JVSUxEX0FTU0VSVChESTRZID09IDQgKiAzNjUgKyAxKTsKICAgICBhc3NlcnQoREk0WSA9PSBkYXlzX2JlZm9yZV95ZWFyKDQrMSkpOwogCiAgICAgLyogU2ltaWxhcmx5LCBhIDQwMC15ZWFyIGN5Y2xlIGhhcyBhbiBleHRyYSBsZWFwIGRheSBvdmVyIHdoYXQgd2UnZAogICAgICAqIGdldCBmcm9tIHBhc3RpbmcgdG9nZXRoZXIgNCAxMDAteWVhciBjeWNsZXMuCiAgICAgICovCi0gICAgYXNzZXJ0KERJNDAwWSA9PSA0ICogREkxMDBZICsgMSk7CisgICAgUHlfQlVJTERfQVNTRVJUKERJNDAwWSA9PSA0ICogREkxMDBZICsgMSk7CiAgICAgYXNzZXJ0KERJNDAwWSA9PSBkYXlzX2JlZm9yZV95ZWFyKDQwMCsxKSk7CiAKICAgICAvKiBPVE9ILCBhIDEwMC15ZWFyIGN5Y2xlIGhhcyBvbmUgZmV3ZXIgbGVhcCBkYXkgdGhhbiB3ZSdkIGdldCBmcm9tCiAgICAgICogcGFzdGluZyB0b2dldGhlciAyNSA0LXllYXIgY3ljbGVzLgogICAgICAqLwotICAgIGFzc2VydChESTEwMFkgPT0gMjUgKiBESTRZIC0gMSk7CisgICAgUHlfQlVJTERfQVNTRVJUKERJMTAwWSA9PSAyNSAqIERJNFkgLSAxKTsKICAgICBhc3NlcnQoREkxMDBZID09IGRheXNfYmVmb3JlX3llYXIoMTAwKzEpKTsKIAogICAgIG9uZSA9IFB5TG9uZ19Gcm9tTG9uZygxKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RibW1vZHVsZS5jIGIvTW9kdWxlcy9fZGJtbW9kdWxlLmMKaW5kZXggZWE4NzkwYi4uODA0OTc4YSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZGJtbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fZGJtbW9kdWxlLmMKQEAgLTE0LDE2ICsxNCwxNiBAQAogICovCiAjaWYgZGVmaW5lZChIQVZFX05EQk1fSCkKICNpbmNsdWRlIDxuZGJtLmg+Ci1zdGF0aWMgY2hhciAqd2hpY2hfZGJtID0gIkdOVSBnZGJtIjsgIC8qIEVNWCBwb3J0IG9mIEdEQk0gKi8KK3N0YXRpYyBjb25zdCBjaGFyIHdoaWNoX2RibVtdID0gIkdOVSBnZGJtIjsgIC8qIEVNWCBwb3J0IG9mIEdEQk0gKi8KICNlbGlmIGRlZmluZWQoSEFWRV9HREJNX05EQk1fSCkKICNpbmNsdWRlIDxnZGJtL25kYm0uaD4KLXN0YXRpYyBjaGFyICp3aGljaF9kYm0gPSAiR05VIGdkYm0iOworc3RhdGljIGNvbnN0IGNoYXIgd2hpY2hfZGJtW10gPSAiR05VIGdkYm0iOwogI2VsaWYgZGVmaW5lZChIQVZFX0dEQk1fREFTSF9OREJNX0gpCiAjaW5jbHVkZSA8Z2RibS1uZGJtLmg+Ci1zdGF0aWMgY2hhciAqd2hpY2hfZGJtID0gIkdOVSBnZGJtIjsKK3N0YXRpYyBjb25zdCBjaGFyIHdoaWNoX2RibVtdID0gIkdOVSBnZGJtIjsKICNlbGlmIGRlZmluZWQoSEFWRV9CRVJLREJfSCkKICNpbmNsdWRlIDxkYi5oPgotc3RhdGljIGNoYXIgKndoaWNoX2RibSA9ICJCZXJrZWxleSBEQiI7CitzdGF0aWMgY29uc3QgY2hhciB3aGljaF9kYm1bXSA9ICJCZXJrZWxleSBEQiI7CiAjZWxzZQogI2Vycm9yICJObyBuZGJtLmggYXZhaWxhYmxlISIKICNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9fZGVjaW1hbC5jIGIvTW9kdWxlcy9fZGVjaW1hbC9fZGVjaW1hbC5jCmluZGV4IDZlZmRjOTEuLjk5NTY3ODYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2RlY2ltYWwvX2RlY2ltYWwuYworKysgYi9Nb2R1bGVzL19kZWNpbWFsL19kZWNpbWFsLmMKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlIDxzdGRsaWIuaD4KIAogI2luY2x1ZGUgImRvY3N0cmluZ3MuaCIKLSNpbmNsdWRlICJtZW1vcnkuaCIKIAogCiAjaWYgIWRlZmluZWQoTVBEX1ZFUlNJT05fSEVYKSB8fCBNUERfVkVSU0lPTl9IRVggPCAweDAyMDQwMTAwCkBAIC0xODkwLDEyICsxODg5LDEzIEBACiAvKiBSZXR1cm4gdGhlIEFTQ0lJIHJlcHJlc2VudGF0aW9uIG9mIGEgbnVtZXJpYyBVbmljb2RlIHN0cmluZy4gVGhlIG51bWVyaWMKICAgIHN0cmluZyBtYXkgY29udGFpbiBhc2NpaSBjaGFyYWN0ZXJzIGluIHRoZSByYW5nZSBbMSwgMTI3XSwgYW55IFVuaWNvZGUKICAgIHNwYWNlIGFuZCBhbnkgdW5pY29kZSBkaWdpdC4gSWYgc3RyaXBfd3MgaXMgdHJ1ZSwgbGVhZGluZyBhbmQgdHJhaWxpbmcKLSAgIHdoaXRlc3BhY2UgaXMgc3RyaXBwZWQuCisgICB3aGl0ZXNwYWNlIGlzIHN0cmlwcGVkLiBJZiBpZ25vcmVfdW5kZXJzY29yZXMgaXMgdHJ1ZSwgdW5kZXJzY29yZXMgYXJlCisgICBpZ25vcmVkLgogCiAgICBSZXR1cm4gTlVMTCBpZiBtYWxsb2MgZmFpbHMgYW5kIGFuIGVtcHR5IHN0cmluZyBpZiBpbnZhbGlkIGNoYXJhY3RlcnMKICAgIGFyZSBmb3VuZC4gKi8KIHN0YXRpYyBjaGFyICoKLW51bWVyaWNfYXNfYXNjaWkoY29uc3QgUHlPYmplY3QgKnUsIGludCBzdHJpcF93cykKK251bWVyaWNfYXNfYXNjaWkoY29uc3QgUHlPYmplY3QgKnUsIGludCBzdHJpcF93cywgaW50IGlnbm9yZV91bmRlcnNjb3JlcykKIHsKICAgICBlbnVtIFB5VW5pY29kZV9LaW5kIGtpbmQ7CiAgICAgdm9pZCAqZGF0YTsKQEAgLTE5MzAsNiArMTkzMCw5IEBACiAKICAgICBmb3IgKDsgaiA8IGxlbjsgaisrKSB7CiAgICAgICAgIGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaik7CisgICAgICAgIGlmIChpZ25vcmVfdW5kZXJzY29yZXMgJiYgY2ggPT0gJ18nKSB7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQogICAgICAgICBpZiAoMCA8IGNoICYmIGNoIDw9IDEyNykgewogICAgICAgICAgICAgKmNwKysgPSBjaDsKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjAxMiw3ICsyMDE1LDcgQEAKICAgICBQeU9iamVjdCAqZGVjOwogICAgIGNoYXIgKnM7CiAKLSAgICBzID0gbnVtZXJpY19hc19hc2NpaSh1LCAwKTsKKyAgICBzID0gbnVtZXJpY19hc19hc2NpaSh1LCAwLCAwKTsKICAgICBpZiAocyA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTIwMzIsNyArMjAzNSw3IEBACiAgICAgUHlPYmplY3QgKmRlYzsKICAgICBjaGFyICpzOwogCi0gICAgcyA9IG51bWVyaWNfYXNfYXNjaWkodSwgMSk7CisgICAgcyA9IG51bWVyaWNfYXNfYXNjaWkodSwgMSwgMSk7CiAgICAgaWYgKHMgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0zMzk0LDYgKzMzOTcsMTA1IEBACiAgICAgcmV0dXJuIChQeU9iamVjdCAqKSBweWxvbmc7CiB9CiAKKy8qIENvbnZlcnQgYSBEZWNpbWFsIHRvIGl0cyBleGFjdCBpbnRlZ2VyIHJhdGlvIHJlcHJlc2VudGF0aW9uLiAqLworc3RhdGljIFB5T2JqZWN0ICoKK2RlY19hc19pbnRlZ2VyX3JhdGlvKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncyBVTlVTRUQpCit7CisgICAgUHlPYmplY3QgKm51bWVyYXRvciA9IE5VTEw7CisgICAgUHlPYmplY3QgKmRlbm9taW5hdG9yID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZXhwb25lbnQgPSBOVUxMOworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOworICAgIFB5T2JqZWN0ICp0bXA7CisgICAgbXBkX3NzaXplX3QgZXhwOworICAgIFB5T2JqZWN0ICpjb250ZXh0OworICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7CisKKyAgICBpZiAobXBkX2lzc3BlY2lhbChNUEQoc2VsZikpKSB7CisgICAgICAgIGlmIChtcGRfaXNuYW4oTVBEKHNlbGYpKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgImNhbm5vdCBjb252ZXJ0IE5hTiB0byBpbnRlZ2VyIHJhdGlvIik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAiY2Fubm90IGNvbnZlcnQgSW5maW5pdHkgdG8gaW50ZWdlciByYXRpbyIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIENVUlJFTlRfQ09OVEVYVChjb250ZXh0KTsKKworICAgIHRtcCA9IGRlY19hbGxvYygpOworICAgIGlmICh0bXAgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoIW1wZF9xY29weShNUEQodG1wKSwgTVBEKHNlbGYpLCAmc3RhdHVzKSkgeworICAgICAgICBQeV9ERUNSRUYodG1wKTsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZXhwID0gbXBkX2lzemVybyhNUEQodG1wKSkgPyAwIDogTVBEKHRtcCktPmV4cDsKKyAgICBNUEQodG1wKS0+ZXhwID0gMDsKKworICAgIC8qIGNvbnRleHQgYW5kIHJvdW5kaW5nIGFyZSB1bnVzZWQgaGVyZTogdGhlIGNvbnZlcnNpb24gaXMgZXhhY3QgKi8KKyAgICBudW1lcmF0b3IgPSBkZWNfYXNfbG9uZyh0bXAsIGNvbnRleHQsIE1QRF9ST1VORF9GTE9PUik7CisgICAgUHlfREVDUkVGKHRtcCk7CisgICAgaWYgKG51bWVyYXRvciA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgZXhwb25lbnQgPSBQeUxvbmdfRnJvbVNzaXplX3QoZXhwIDwgMCA/IC1leHAgOiBleHApOworICAgIGlmIChleHBvbmVudCA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgdG1wID0gUHlMb25nX0Zyb21Mb25nKDEwKTsKKyAgICBpZiAodG1wID09IE5VTEwpIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBQeV9TRVRSRUYoZXhwb25lbnQsIF9weV9sb25nX3Bvd2VyKHRtcCwgZXhwb25lbnQsIFB5X05vbmUpKTsKKyAgICBQeV9ERUNSRUYodG1wKTsKKyAgICBpZiAoZXhwb25lbnQgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIGlmIChleHAgPj0gMCkgeworICAgICAgICBQeV9TRVRSRUYobnVtZXJhdG9yLCBfcHlfbG9uZ19tdWx0aXBseShudW1lcmF0b3IsIGV4cG9uZW50KSk7CisgICAgICAgIGlmIChudW1lcmF0b3IgPT0gTlVMTCkgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBkZW5vbWluYXRvciA9IFB5TG9uZ19Gcm9tTG9uZygxKTsKKyAgICAgICAgaWYgKGRlbm9taW5hdG9yID09IE5VTEwpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGRlbm9taW5hdG9yID0gZXhwb25lbnQ7CisgICAgICAgIGV4cG9uZW50ID0gTlVMTDsKKyAgICAgICAgdG1wID0gX1B5TG9uZ19HQ0QobnVtZXJhdG9yLCBkZW5vbWluYXRvcik7CisgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBQeV9TRVRSRUYobnVtZXJhdG9yLCBfcHlfbG9uZ19mbG9vcl9kaXZpZGUobnVtZXJhdG9yLCB0bXApKTsKKyAgICAgICAgUHlfU0VUUkVGKGRlbm9taW5hdG9yLCBfcHlfbG9uZ19mbG9vcl9kaXZpZGUoZGVub21pbmF0b3IsIHRtcCkpOworICAgICAgICBQeV9ERUNSRUYodG1wKTsKKyAgICAgICAgaWYgKG51bWVyYXRvciA9PSBOVUxMIHx8IGRlbm9taW5hdG9yID09IE5VTEwpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXN1bHQgPSBQeVR1cGxlX1BhY2soMiwgbnVtZXJhdG9yLCBkZW5vbWluYXRvcik7CisKKworZXJyb3I6CisgICAgUHlfWERFQ1JFRihleHBvbmVudCk7CisgICAgUHlfWERFQ1JFRihkZW5vbWluYXRvcik7CisgICAgUHlfWERFQ1JFRihudW1lcmF0b3IpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIHN0YXRpYyBQeU9iamVjdCAqCiBQeURlY19Ub0ludGVncmFsVmFsdWUoUHlPYmplY3QgKmRlYywgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewpAQCAtNDcwMiw2ICs0ODA0LDcgQEAKICAgLyogTWlzY2VsbGFuZW91cyAqLwogICB7ICJmcm9tX2Zsb2F0IiwgZGVjX2Zyb21fZmxvYXQsIE1FVEhfT3xNRVRIX0NMQVNTLCBkb2NfZnJvbV9mbG9hdCB9LAogICB7ICJhc190dXBsZSIsIFB5RGVjX0FzVHVwbGUsIE1FVEhfTk9BUkdTLCBkb2NfYXNfdHVwbGUgfSwKKyAgeyAiYXNfaW50ZWdlcl9yYXRpbyIsIGRlY19hc19pbnRlZ2VyX3JhdGlvLCBNRVRIX05PQVJHUywgZG9jX2FzX2ludGVnZXJfcmF0aW8gfSwKIAogICAvKiBTcGVjaWFsIG1ldGhvZHMgKi8KICAgeyAiX19jb3B5X18iLCBkZWNfY29weSwgTUVUSF9OT0FSR1MsIE5VTEwgfSwKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvZG9jc3RyaW5ncy5oIGIvTW9kdWxlcy9fZGVjaW1hbC9kb2NzdHJpbmdzLmgKaW5kZXggNzEwMjlhOS4uZjdmZDZlNyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZGVjaW1hbC9kb2NzdHJpbmdzLmgKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9kb2NzdHJpbmdzLmgKQEAgLTcwLDYgKzcwLDE1IEBACiBSZXR1cm4gYSB0dXBsZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbnVtYmVyLlxuXAogXG4iKTsKIAorUHlEb2NfU1RSVkFSKGRvY19hc19pbnRlZ2VyX3JhdGlvLAorImFzX2ludGVnZXJfcmF0aW8oJHNlbGYsIC8pXG4tLVxuXG5cCitEZWNpbWFsLmFzX2ludGVnZXJfcmF0aW8oKSAtPiAoaW50LCBpbnQpXG5cCitcblwKK1JldHVybiBhIHBhaXIgb2YgaW50ZWdlcnMsIHdob3NlIHJhdGlvIGlzIGV4YWN0bHkgZXF1YWwgdG8gdGhlIG9yaWdpbmFsXG5cCitEZWNpbWFsIGFuZCB3aXRoIGEgcG9zaXRpdmUgZGVub21pbmF0b3IuIFRoZSByYXRpbyBpcyBpbiBsb3dlc3QgdGVybXMuXG5cCitSYWlzZSBPdmVyZmxvd0Vycm9yIG9uIGluZmluaXRpZXMgYW5kIGEgVmFsdWVFcnJvciBvbiBOYU5zLlxuXAorXG4iKTsKKwogUHlEb2NfU1RSVkFSKGRvY19jYW5vbmljYWwsCiAiY2Fub25pY2FsKCRzZWxmLCAvKVxuLS1cblxuXAogUmV0dXJuIHRoZSBjYW5vbmljYWwgZW5jb2Rpbmcgb2YgdGhlIGFyZ3VtZW50LiAgQ3VycmVudGx5LCB0aGUgZW5jb2RpbmdcblwKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvYmFzZWFyaXRoLmMgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2Jhc2Vhcml0aC5jCmluZGV4IDM1ZGU2YjguLmRmZTE1MjMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvYmFzZWFyaXRoLmMKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9iYXNlYXJpdGguYwpAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPGFzc2VydC5oPgogI2luY2x1ZGUgImNvbnN0YW50cy5oIgotI2luY2x1ZGUgIm1lbW9yeS5oIgogI2luY2x1ZGUgInR5cGVhcml0aC5oIgogI2luY2x1ZGUgImJhc2Vhcml0aC5oIgogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2lvLmMgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2lvLmMKaW5kZXggYTQ1YTQyOS4uM2FhZGZiMCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9pby5jCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvaW8uYwpAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgPGxvY2FsZS5oPgogI2luY2x1ZGUgImJpdHMuaCIKICNpbmNsdWRlICJjb25zdGFudHMuaCIKLSNpbmNsdWRlICJtZW1vcnkuaCIKICNpbmNsdWRlICJ0eXBlYXJpdGguaCIKICNpbmNsdWRlICJpby5oIgogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21lbW9yeS5jIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tZW1vcnkuYwppbmRleCAwZjQxZmU1Li5hODU0ZTA5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21lbW9yeS5jCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbWVtb3J5LmMKQEAgLTMwLDcgKzMwLDEyIEBACiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlICJ0eXBlYXJpdGguaCIKLSNpbmNsdWRlICJtZW1vcnkuaCIKKyNpbmNsdWRlICJtcGFsbG9jLmgiCisKKworI2lmIGRlZmluZWQoX01TQ19WRVIpCisgICNwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDIzMikKKyNlbmRpZgogCiAKIC8qIEd1YXJhbnRlZWQgbWluaW11bSBhbGxvY2F0aW9uIGZvciBhIGNvZWZmaWNpZW50LiBNYXkgYmUgY2hhbmdlZCBvbmNlCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21lbW9yeS5oIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tcGFsbG9jLmgKc2ltaWxhcml0eSBpbmRleCA5NyUKcmVuYW1lIGZyb20gTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tZW1vcnkuaApyZW5hbWUgdG8gTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tcGFsbG9jLmgKaW5kZXggOWM5OGQxYS4uZWZkNzExOSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tZW1vcnkuaAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21wYWxsb2MuaApAQCAtMjYsOCArMjYsOCBAQAogICovCiAKIAotI2lmbmRlZiBNRU1PUllfSAotI2RlZmluZSBNRU1PUllfSAorI2lmbmRlZiBNUEFMTE9DX0gKKyNkZWZpbmUgTVBBTExPQ19ICiAKIAogI2luY2x1ZGUgIm1wZGVjaW1hbC5oIgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tcGRlY2ltYWwuYyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbXBkZWNpbWFsLmMKaW5kZXggNTkzZjlmNS4uMzI4YWI5MiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tcGRlY2ltYWwuYworKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21wZGVjaW1hbC5jCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiYml0cy5oIgogI2luY2x1ZGUgImNvbnZvbHV0ZS5oIgogI2luY2x1ZGUgImNydC5oIgotI2luY2x1ZGUgIm1lbW9yeS5oIgorI2luY2x1ZGUgIm1wYWxsb2MuaCIKICNpbmNsdWRlICJ0eXBlYXJpdGguaCIKICNpbmNsdWRlICJ1bW9kYXJpdGguaCIKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tcGRlY2ltYWwuaCBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbXBkZWNpbWFsLmgKaW5kZXggNWNhNzQxMy4uZGFmMmI5ZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tcGRlY2ltYWwuaAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21wZGVjaW1hbC5oCkBAIC00OCw2ICs0OCw4IEBACiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8YXNzZXJ0Lmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8aW50dHlwZXMuaD4KIAogI2lmZGVmIF9NU0NfVkVSCiAgICNpbmNsdWRlICJ2Y2NvbXBhdC5oIgpAQCAtNTksMTIgKzYxLDYgQEAKICAgI2RlZmluZSBNUERfSElERV9TWU1CT0xTX0VORAogICAjZGVmaW5lIEVYVElOTElORSBleHRlcm4gaW5saW5lCiAjZWxzZQotICAjaWZkZWYgSEFWRV9TVERJTlRfSAotICAgICNpbmNsdWRlIDxzdGRpbnQuaD4KLSAgI2VuZGlmCi0gICNpZmRlZiBIQVZFX0lOVFRZUEVTX0gKLSAgICAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSAgI2VuZGlmCiAgICNpZm5kZWYgX19HTlVDX1NURENfSU5MSU5FX18KICAgICAjZGVmaW5lIF9fR05VQ19TVERDX0lOTElORV9fIDEKICAgI2VuZGlmCkBAIC0xMDgsOSArMTA0LDkgQEAKIAogI2RlZmluZSBNUERfTUFKT1JfVkVSU0lPTiAyCiAjZGVmaW5lIE1QRF9NSU5PUl9WRVJTSU9OIDQKLSNkZWZpbmUgTVBEX01JQ1JPX1ZFUlNJT04gMQorI2RlZmluZSBNUERfTUlDUk9fVkVSU0lPTiAyCiAKLSNkZWZpbmUgTVBEX1ZFUlNJT04gIjIuNC4xIgorI2RlZmluZSBNUERfVkVSU0lPTiAiMi40LjIiCiAKICNkZWZpbmUgTVBEX1ZFUlNJT05fSEVYICgoTVBEX01BSk9SX1ZFUlNJT04gPDwgMjQpIHwgXAogICAgICAgICAgICAgICAgICAgICAgICAgIChNUERfTUlOT1JfVkVSU0lPTiA8PCAxNikgfCBcCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL3ZjY29tcGF0LmggYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL3ZjY29tcGF0LmgKaW5kZXggZjU4ZTAyMy4uZGQxMzFkOCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy92Y2NvbXBhdC5oCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvdmNjb21wYXQuaApAQCAtMzIsNyArMzIsNiBAQAogCiAvKiBWaXN1YWwgQyBmaXhlczogbm8gc3RkaW50LmgsIG5vIHNucHJpbnRmIC4uLiAqLwogI2lmZGVmIF9NU0NfVkVSCi0gICNpbmNsdWRlICJ2Y3N0ZGludC5oIgogICAjdW5kZWYgaW5saW5lCiAgICNkZWZpbmUgaW5saW5lIF9faW5saW5lCiAgICN1bmRlZiByYW5kb20KQEAgLTQ5LDEwICs0OCw2IEBACiAgICN1bmRlZiBzdHJ0b2xsCiAgICNkZWZpbmUgc3RydG9sbCBfc3RydG9pNjQKICAgI2RlZmluZSBzdHJkdXAgX3N0cmR1cAotICAjZGVmaW5lIFBSSWk2NCAiSTY0aSIKLSAgI2RlZmluZSBQUkl1NjQgIkk2NHUiCi0gICNkZWZpbmUgUFJJaTMyICJJMzJpIgotICAjZGVmaW5lIFBSSXUzMiAiSTMydSIKICNlbmRpZgogCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvZGVjY2hlY2sucHkgYi9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL2RlY2NoZWNrLnB5CmluZGV4IGFiN2Q1YmQuLmY5MDc1MzEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvZGVjY2hlY2sucHkKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9kZWNjaGVjay5weQpAQCAtNTAsOCArNTAsOCBAQAogICAgICAgICAnX19hYnNfXycsICdfX2Jvb2xfXycsICdfX2NlaWxfXycsICdfX2NvbXBsZXhfXycsICdfX2NvcHlfXycsCiAgICAgICAgICdfX2Zsb29yX18nLCAnX19mbG9hdF9fJywgJ19faGFzaF9fJywgJ19faW50X18nLCAnX19uZWdfXycsCiAgICAgICAgICdfX3Bvc19fJywgJ19fcmVkdWNlX18nLCAnX19yZXByX18nLCAnX19zdHJfXycsICdfX3RydW5jX18nLAotICAgICAgICAnYWRqdXN0ZWQnLCAnYXNfdHVwbGUnLCAnY2Fub25pY2FsJywgJ2Nvbmp1Z2F0ZScsICdjb3B5X2FicycsCi0gICAgICAgICdjb3B5X25lZ2F0ZScsICdpc19jYW5vbmljYWwnLCAnaXNfZmluaXRlJywgJ2lzX2luZmluaXRlJywKKyAgICAgICAgJ2FkanVzdGVkJywgJ2FzX2ludGVnZXJfcmF0aW8nLCAnYXNfdHVwbGUnLCAnY2Fub25pY2FsJywgJ2Nvbmp1Z2F0ZScsCisgICAgICAgICdjb3B5X2FicycsICdjb3B5X25lZ2F0ZScsICdpc19jYW5vbmljYWwnLCAnaXNfZmluaXRlJywgJ2lzX2luZmluaXRlJywKICAgICAgICAgJ2lzX25hbicsICdpc19xbmFuJywgJ2lzX3NpZ25lZCcsICdpc19zbmFuJywgJ2lzX3plcm8nLCAncmFkaXgnCiAgICAgKSwKICAgICAjIFVuYXJ5IHdpdGggb3B0aW9uYWwgY29udGV4dDoKQEAgLTEyOCw3ICsxMjgsNyBAQAogIyBGdW5jdGlvbnMgdGhhdCByZXF1aXJlIGEgcmVzdHJpY3RlZCBleHBvbmVudCByYW5nZSBmb3IgcmVhc29uYWJsZSBydW50aW1lcy4KIFVuYXJ5UmVzdHJpY3RlZCA9IFsKICAgJ19fY2VpbF9fJywgJ19fZmxvb3JfXycsICdfX2ludF9fJywgJ19fdHJ1bmNfXycsCi0gICd0b19pbnRlZ3JhbCcsICd0b19pbnRlZ3JhbF92YWx1ZScKKyAgJ2FzX2ludGVnZXJfcmF0aW8nLCAndG9faW50ZWdyYWwnLCAndG9faW50ZWdyYWxfdmFsdWUnCiBdCiAKIEJpbmFyeVJlc3RyaWN0ZWQgPSBbJ19fcm91bmRfXyddCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19lbGVtZW50dHJlZS5jIGIvTW9kdWxlcy9fZWxlbWVudHRyZWUuYwppbmRleCA3ZDUwZGQwLi4yY2RhOThlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19lbGVtZW50dHJlZS5jCisrKyBiL01vZHVsZXMvX2VsZW1lbnR0cmVlLmMKQEAgLTU3LDkgKzU3LDkgQEAKICAgIHRoYXQgYWxsIHVzZSBvZiB0ZXh0IGFuZCB0YWlsIGFzIG9iamVjdCBwb2ludGVycyBtdXN0IGJlIHdyYXBwZWQgaW4KICAgIEpPSU5fT0JKLiAgc2VlIGNvbW1lbnRzIGluIHRoZSBFbGVtZW50T2JqZWN0IGRlZmluaXRpb24gZm9yIG1vcmUKICAgIGluZm8uICovCi0jZGVmaW5lIEpPSU5fR0VUKHApICgoUHlfdWludHB0cl90KSAocCkgJiAxKQotI2RlZmluZSBKT0lOX1NFVChwLCBmbGFnKSAoKHZvaWQqKSAoKFB5X3VpbnRwdHJfdCkgKEpPSU5fT0JKKHApKSB8IChmbGFnKSkpCi0jZGVmaW5lIEpPSU5fT0JKKHApICgoUHlPYmplY3QqKSAoKFB5X3VpbnRwdHJfdCkgKHApICYgfihQeV91aW50cHRyX3QpMSkpCisjZGVmaW5lIEpPSU5fR0VUKHApICgodWludHB0cl90KSAocCkgJiAxKQorI2RlZmluZSBKT0lOX1NFVChwLCBmbGFnKSAoKHZvaWQqKSAoKHVpbnRwdHJfdCkgKEpPSU5fT0JKKHApKSB8IChmbGFnKSkpCisjZGVmaW5lIEpPSU5fT0JKKHApICgoUHlPYmplY3QqKSAoKHVpbnRwdHJfdCkgKHApICYgfih1aW50cHRyX3QpMSkpCiAKIC8qIFB5X0NMRUFSIGZvciBhIFB5T2JqZWN0KiB0aGF0IHVzZXMgYSBqb2luIGZsYWcuIFBhc3MgdGhlIHBvaW50ZXIgYnkKICAqIHJlZmVyZW5jZSBzaW5jZSB0aGlzIGZ1bmN0aW9uIHNldHMgaXQgdG8gTlVMTC4KQEAgLTEyOSwzMCArMTI5LDYgQEAKIC8qIGhlbHBlcnMgKi8KIAogTE9DQUwoUHlPYmplY3QqKQotZGVlcGNvcHkoUHlPYmplY3QqIG9iamVjdCwgUHlPYmplY3QqIG1lbW8pCi17Ci0gICAgLyogZG8gYSBkZWVwIGNvcHkgb2YgdGhlIGdpdmVuIG9iamVjdCAqLwotICAgIFB5T2JqZWN0KiBhcmdzOwotICAgIFB5T2JqZWN0KiByZXN1bHQ7Ci0gICAgZWxlbWVudHRyZWVzdGF0ZSAqc3QgPSBFVF9TVEFURV9HTE9CQUw7Ci0KLSAgICBpZiAoIXN0LT5kZWVwY29weV9vYmopIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAotICAgICAgICAgICAgUHlFeGNfUnVudGltZUVycm9yLAotICAgICAgICAgICAgImRlZXBjb3B5IGhlbHBlciBub3QgZm91bmQiCi0gICAgICAgICAgICApOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBhcmdzID0gUHlUdXBsZV9QYWNrKDIsIG9iamVjdCwgbWVtbyk7Ci0gICAgaWYgKCFhcmdzKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsT2JqZWN0KHN0LT5kZWVwY29weV9vYmosIGFyZ3MpOwotICAgIFB5X0RFQ1JFRihhcmdzKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1MT0NBTChQeU9iamVjdCopCiBsaXN0X2pvaW4oUHlPYmplY3QqIGxpc3QpCiB7CiAgICAgLyogam9pbiBsaXN0IGVsZW1lbnRzIChkZXN0cm95aW5nIHRoZSBsaXN0IGluIHRoZSBwcm9jZXNzKSAqLwpAQCAtNDIwLDEwICszOTYsOCBAQAogICAgIFB5X1hERUNSRUYoYXR0cmliKTsKIAogICAgIC8qIFJlcGxhY2UgdGhlIG9iamVjdHMgYWxyZWFkeSBwb2ludGVkIHRvIGJ5IHRhZywgdGV4dCBhbmQgdGFpbC4gKi8KLSAgICB0bXAgPSBzZWxmX2VsZW0tPnRhZzsKICAgICBQeV9JTkNSRUYodGFnKTsKLSAgICBzZWxmX2VsZW0tPnRhZyA9IHRhZzsKLSAgICBQeV9ERUNSRUYodG1wKTsKKyAgICBQeV9YU0VUUkVGKHNlbGZfZWxlbS0+dGFnLCB0YWcpOwogCiAgICAgdG1wID0gc2VsZl9lbGVtLT50ZXh0OwogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKQEAgLTc1MCw2ICs3MjQsOSBAQAogICAgIHJldHVybiAoUHlPYmplY3QqKSBlbGVtZW50OwogfQogCisvKiBIZWxwZXIgZm9yIGEgZGVlcCBjb3B5LiAqLworTE9DQUwoUHlPYmplY3QgKikgZGVlcGNvcHkoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CisKIC8qW2NsaW5pYyBpbnB1dF0KIF9lbGVtZW50dHJlZS5FbGVtZW50Ll9fZGVlcGNvcHlfXwogCkBAIC04MjIsNyArNzk5LDcgQEAKICAgICB9CiAKICAgICAvKiBhZGQgb2JqZWN0IHRvIG1lbW8gZGljdGlvbmFyeSAoc28gZGVlcGNvcHkgd29uJ3QgdmlzaXQgaXQgYWdhaW4pICovCi0gICAgaWQgPSBQeUxvbmdfRnJvbVNzaXplX3QoKFB5X3VpbnRwdHJfdCkgc2VsZik7CisgICAgaWQgPSBQeUxvbmdfRnJvbVNzaXplX3QoKHVpbnRwdHJfdCkgc2VsZik7CiAgICAgaWYgKCFpZCkKICAgICAgICAgZ290byBlcnJvcjsKIApAQCAtODQwLDYgKzgxNyw1MyBAQAogICAgIHJldHVybiBOVUxMOwogfQogCitMT0NBTChQeU9iamVjdCAqKQorZGVlcGNvcHkoUHlPYmplY3QgKm9iamVjdCwgUHlPYmplY3QgKm1lbW8pCit7CisgICAgLyogZG8gYSBkZWVwIGNvcHkgb2YgdGhlIGdpdmVuIG9iamVjdCAqLworICAgIGVsZW1lbnR0cmVlc3RhdGUgKnN0OworICAgIFB5T2JqZWN0ICpzdGFja1syXTsKKworICAgIC8qIEZhc3QgcGF0aHMgKi8KKyAgICBpZiAob2JqZWN0ID09IFB5X05vbmUgfHwgUHlVbmljb2RlX0NoZWNrRXhhY3Qob2JqZWN0KSkgeworICAgICAgICBQeV9JTkNSRUYob2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIG9iamVjdDsKKyAgICB9CisKKyAgICBpZiAoUHlfUkVGQ05UKG9iamVjdCkgPT0gMSkgeworICAgICAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3Qob2JqZWN0KSkgeworICAgICAgICAgICAgUHlPYmplY3QgKmtleSwgKnZhbHVlOworICAgICAgICAgICAgUHlfc3NpemVfdCBwb3MgPSAwOworICAgICAgICAgICAgaW50IHNpbXBsZSA9IDE7CisgICAgICAgICAgICB3aGlsZSAoUHlEaWN0X05leHQob2JqZWN0LCAmcG9zLCAma2V5LCAmdmFsdWUpKSB7CisgICAgICAgICAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8ICFQeVVuaWNvZGVfQ2hlY2tFeGFjdCh2YWx1ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgc2ltcGxlID0gMDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHNpbXBsZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gUHlEaWN0X0NvcHkob2JqZWN0KTsKKyAgICAgICAgICAgIC8qIEZhbGwgdGhyb3VnaCB0byBnZW5lcmFsIGNhc2UgKi8KKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChFbGVtZW50X0NoZWNrRXhhY3Qob2JqZWN0KSkgeworICAgICAgICAgICAgcmV0dXJuIF9lbGVtZW50dHJlZV9FbGVtZW50X19fZGVlcGNvcHlfXygoRWxlbWVudE9iamVjdCAqKW9iamVjdCwgbWVtbyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBHZW5lcmFsIGNhc2UgKi8KKyAgICBzdCA9IEVUX1NUQVRFX0dMT0JBTDsKKyAgICBpZiAoIXN0LT5kZWVwY29weV9vYmopIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJkZWVwY29weSBoZWxwZXIgbm90IGZvdW5kIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHN0YWNrWzBdID0gb2JqZWN0OworICAgIHN0YWNrWzFdID0gbWVtbzsKKyAgICByZXR1cm4gX1B5T2JqZWN0X0Zhc3RDYWxsKHN0LT5kZWVwY29weV9vYmosIHN0YWNrLCAyKTsKK30KKworCiAvKltjbGluaWMgaW5wdXRdCiBfZWxlbWVudHRyZWUuRWxlbWVudC5fX3NpemVvZl9fIC0+IFB5X3NzaXplX3QKIApAQCAtMTc2NSw3ICsxNzg5LDcgQEAKICAgICAgICAgICAgICAgICBzdGVwID0gLXN0ZXA7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGFzc2VydCgoc2l6ZV90KXNsaWNlbGVuIDw9IFBZX1NJWkVfTUFYIC8gc2l6ZW9mKFB5T2JqZWN0ICopKTsKKyAgICAgICAgICAgIGFzc2VydCgoc2l6ZV90KXNsaWNlbGVuIDw9IFNJWkVfTUFYIC8gc2l6ZW9mKFB5T2JqZWN0ICopKTsKIAogICAgICAgICAgICAgLyogcmVjeWNsZSBpcyBhIGxpc3QgdGhhdCB3aWxsIGNvbnRhaW4gYWxsIHRoZSBjaGlsZHJlbgogICAgICAgICAgICAgICogc2NoZWR1bGVkIGZvciByZW1vdmFsLgpAQCAtMTg5NCw5MiArMTkxOCw5MCBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QqCi1lbGVtZW50X2dldGF0dHJvKEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBuYW1lb2JqKQorZWxlbWVudF90YWdfZ2V0dGVyKEVsZW1lbnRPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCiB7Ci0gICAgUHlPYmplY3QqIHJlczsKLSAgICBjaGFyICpuYW1lID0gIiI7Ci0KLSAgICBpZiAoUHlVbmljb2RlX0NoZWNrKG5hbWVvYmopKQotICAgICAgICBuYW1lID0gX1B5VW5pY29kZV9Bc1N0cmluZyhuYW1lb2JqKTsKLQotICAgIGlmIChuYW1lID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgLyogaGFuZGxlIGNvbW1vbiBhdHRyaWJ1dGVzIGZpcnN0ICovCi0gICAgaWYgKHN0cmNtcChuYW1lLCAidGFnIikgPT0gMCkgewotICAgICAgICByZXMgPSBzZWxmLT50YWc7Ci0gICAgICAgIFB5X0lOQ1JFRihyZXMpOwotICAgICAgICByZXR1cm4gcmVzOwotICAgIH0gZWxzZSBpZiAoc3RyY21wKG5hbWUsICJ0ZXh0IikgPT0gMCkgewotICAgICAgICByZXMgPSBlbGVtZW50X2dldF90ZXh0KHNlbGYpOwotICAgICAgICBQeV9YSU5DUkVGKHJlcyk7Ci0gICAgICAgIHJldHVybiByZXM7Ci0gICAgfQotCi0gICAgLyogbWV0aG9kcyAqLwotICAgIHJlcyA9IFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyKChQeU9iamVjdCopIHNlbGYsIG5hbWVvYmopOwotICAgIGlmIChyZXMpCi0gICAgICAgIHJldHVybiByZXM7Ci0KLSAgICAvKiBsZXNzIGNvbW1vbiBhdHRyaWJ1dGVzICovCi0gICAgaWYgKHN0cmNtcChuYW1lLCAidGFpbCIpID09IDApIHsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgcmVzID0gZWxlbWVudF9nZXRfdGFpbChzZWxmKTsKLSAgICB9IGVsc2UgaWYgKHN0cmNtcChuYW1lLCAiYXR0cmliIikgPT0gMCkgewotICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBpZiAoIXNlbGYtPmV4dHJhKSB7Ci0gICAgICAgICAgICBpZiAoY3JlYXRlX2V4dHJhKHNlbGYsIE5VTEwpIDwgMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICByZXMgPSBlbGVtZW50X2dldF9hdHRyaWIoc2VsZik7Ci0gICAgfQotCi0gICAgaWYgKCFyZXMpCi0gICAgICAgIHJldHVybiBOVUxMOwotCisgICAgUHlPYmplY3QgKnJlcyA9IHNlbGYtPnRhZzsKICAgICBQeV9JTkNSRUYocmVzKTsKICAgICByZXR1cm4gcmVzOwogfQogCi1zdGF0aWMgaW50Ci1lbGVtZW50X3NldGF0dHJvKEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBuYW1lb2JqLCBQeU9iamVjdCogdmFsdWUpCitzdGF0aWMgUHlPYmplY3QqCitlbGVtZW50X3RleHRfZ2V0dGVyKEVsZW1lbnRPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCiB7Ci0gICAgY2hhciAqbmFtZSA9ICIiOworICAgIFB5T2JqZWN0ICpyZXMgPSBlbGVtZW50X2dldF90ZXh0KHNlbGYpOworICAgIFB5X1hJTkNSRUYocmVzKTsKKyAgICByZXR1cm4gcmVzOworfQogCi0gICAgaWYgKHZhbHVlID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0F0dHJpYnV0ZUVycm9yLAotICAgICAgICAgICAgImNhbid0IGRlbGV0ZSBhdHRyaWJ1dGUiKTsKLSAgICAgICAgcmV0dXJuIC0xOworc3RhdGljIFB5T2JqZWN0KgorZWxlbWVudF90YWlsX2dldHRlcihFbGVtZW50T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIFB5T2JqZWN0ICpyZXMgPSBlbGVtZW50X2dldF90YWlsKHNlbGYpOworICAgIFB5X1hJTkNSRUYocmVzKTsKKyAgICByZXR1cm4gcmVzOworfQorCitzdGF0aWMgUHlPYmplY3QqCitlbGVtZW50X2F0dHJpYl9nZXR0ZXIoRWxlbWVudE9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICBQeU9iamVjdCAqcmVzOworICAgIGlmICghc2VsZi0+ZXh0cmEpIHsKKyAgICAgICAgaWYgKGNyZWF0ZV9leHRyYShzZWxmLCBOVUxMKSA8IDApCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgaWYgKFB5VW5pY29kZV9DaGVjayhuYW1lb2JqKSkKLSAgICAgICAgbmFtZSA9IF9QeVVuaWNvZGVfQXNTdHJpbmcobmFtZW9iaik7Ci0gICAgaWYgKG5hbWUgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIC0xOworICAgIHJlcyA9IGVsZW1lbnRfZ2V0X2F0dHJpYihzZWxmKTsKKyAgICBQeV9YSU5DUkVGKHJlcyk7CisgICAgcmV0dXJuIHJlczsKK30KIAotICAgIGlmIChzdHJjbXAobmFtZSwgInRhZyIpID09IDApIHsKLSAgICAgICAgUHlfSU5DUkVGKHZhbHVlKTsKLSAgICAgICAgUHlfU0VUUkVGKHNlbGYtPnRhZywgdmFsdWUpOwotICAgIH0gZWxzZSBpZiAoc3RyY21wKG5hbWUsICJ0ZXh0IikgPT0gMCkgewotICAgICAgICBQeV9ERUNSRUYoSk9JTl9PQkooc2VsZi0+dGV4dCkpOwotICAgICAgICBzZWxmLT50ZXh0ID0gdmFsdWU7Ci0gICAgICAgIFB5X0lOQ1JFRihzZWxmLT50ZXh0KTsKLSAgICB9IGVsc2UgaWYgKHN0cmNtcChuYW1lLCAidGFpbCIpID09IDApIHsKLSAgICAgICAgUHlfREVDUkVGKEpPSU5fT0JKKHNlbGYtPnRhaWwpKTsKLSAgICAgICAgc2VsZi0+dGFpbCA9IHZhbHVlOwotICAgICAgICBQeV9JTkNSRUYoc2VsZi0+dGFpbCk7Ci0gICAgfSBlbHNlIGlmIChzdHJjbXAobmFtZSwgImF0dHJpYiIpID09IDApIHsKLSAgICAgICAgaWYgKCFzZWxmLT5leHRyYSkgewotICAgICAgICAgICAgaWYgKGNyZWF0ZV9leHRyYShzZWxmLCBOVUxMKSA8IDApCi0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0gICAgICAgIFB5X0lOQ1JFRih2YWx1ZSk7Ci0gICAgICAgIFB5X1NFVFJFRihzZWxmLT5leHRyYS0+YXR0cmliLCB2YWx1ZSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0F0dHJpYnV0ZUVycm9yLAotICAgICAgICAgICAgIkNhbid0IHNldCBhcmJpdHJhcnkgYXR0cmlidXRlcyBvbiBFbGVtZW50Iik7Ci0gICAgICAgIHJldHVybiAtMTsKKy8qIG1hY3JvIGZvciBzZXR0ZXIgdmFsaWRhdGlvbiAqLworI2RlZmluZSBfVkFMSURBVEVfQVRUUl9WQUxVRShWKSAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoKFYpID09IE5VTEwpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5RXJyX1NldFN0cmluZyggICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgUHlFeGNfQXR0cmlidXRlRXJyb3IsICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICJjYW4ndCBkZWxldGUgZWxlbWVudCBhdHRyaWJ1dGUiKTsgICAgICBcCisgICAgICAgIHJldHVybiAtMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0KIAorc3RhdGljIGludAorZWxlbWVudF90YWdfc2V0dGVyKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICBfVkFMSURBVEVfQVRUUl9WQUxVRSh2YWx1ZSk7CisgICAgUHlfSU5DUkVGKHZhbHVlKTsKKyAgICBQeV9TRVRSRUYoc2VsZi0+dGFnLCB2YWx1ZSk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2VsZW1lbnRfdGV4dF9zZXR0ZXIoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlLCB2b2lkICpjbG9zdXJlKQoreworICAgIF9WQUxJREFURV9BVFRSX1ZBTFVFKHZhbHVlKTsKKyAgICBQeV9JTkNSRUYodmFsdWUpOworICAgIFB5X0RFQ1JFRihKT0lOX09CSihzZWxmLT50ZXh0KSk7CisgICAgc2VsZi0+dGV4dCA9IHZhbHVlOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitlbGVtZW50X3RhaWxfc2V0dGVyKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICBfVkFMSURBVEVfQVRUUl9WQUxVRSh2YWx1ZSk7CisgICAgUHlfSU5DUkVGKHZhbHVlKTsKKyAgICBQeV9ERUNSRUYoSk9JTl9PQkooc2VsZi0+dGFpbCkpOworICAgIHNlbGYtPnRhaWwgPSB2YWx1ZTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorZWxlbWVudF9hdHRyaWJfc2V0dGVyKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICBfVkFMSURBVEVfQVRUUl9WQUxVRSh2YWx1ZSk7CisgICAgaWYgKCFzZWxmLT5leHRyYSkgeworICAgICAgICBpZiAoY3JlYXRlX2V4dHJhKHNlbGYsIE5VTEwpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgUHlfSU5DUkVGKHZhbHVlKTsKKyAgICBQeV9TRVRSRUYoc2VsZi0+ZXh0cmEtPmF0dHJpYiwgdmFsdWUpOwogICAgIHJldHVybiAwOwogfQogCkBAIC0xOTk5LDIyICsyMDIxLDIyIEBACiAgKiBwcmUtb3JkZXIgdHJhdmVyc2FsLiBUbyBrZWVwIHRyYWNrIG9mIHdoaWNoIHN1Yi1lbGVtZW50IHNob3VsZCBiZSByZXR1cm5lZAogICogbmV4dCwgYSBzdGFjayBvZiBwYXJlbnRzIGlzIG1haW50YWluZWQuIFRoaXMgaXMgYSBzdGFuZGFyZCBzdGFjay1iYXNlZAogICogaXRlcmF0aXZlIHByZS1vcmRlciB0cmF2ZXJzYWwgb2YgYSB0cmVlLgotICogVGhlIHN0YWNrIGlzIG1hbmFnZWQgdXNpbmcgYSBzaW5nbGUtbGlua2VkIGxpc3Qgc3RhcnRpbmcgYXQgcGFyZW50X3N0YWNrLgotICogRWFjaCBzdGFjayBub2RlIGNvbnRhaW5zIHRoZSBzYXZlZCBwYXJlbnQgdG8gd2hpY2ggd2Ugc2hvdWxkIHJldHVybiBhZnRlcgorICogVGhlIHN0YWNrIGlzIG1hbmFnZWQgdXNpbmcgYSBjb250aW51b3VzIGFycmF5LgorICogRWFjaCBzdGFjayBpdGVtIGNvbnRhaW5zIHRoZSBzYXZlZCBwYXJlbnQgdG8gd2hpY2ggd2Ugc2hvdWxkIHJldHVybiBhZnRlcgogICogdGhlIGN1cnJlbnQgb25lIGlzIGV4aGF1c3RlZCwgYW5kIHRoZSBuZXh0IGNoaWxkIHRvIGV4YW1pbmUgaW4gdGhhdCBwYXJlbnQuCiAgKi8KIHR5cGVkZWYgc3RydWN0IFBhcmVudExvY2F0b3JfdCB7CiAgICAgRWxlbWVudE9iamVjdCAqcGFyZW50OwogICAgIFB5X3NzaXplX3QgY2hpbGRfaW5kZXg7Ci0gICAgc3RydWN0IFBhcmVudExvY2F0b3JfdCAqbmV4dDsKIH0gUGFyZW50TG9jYXRvcjsKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKICAgICBQYXJlbnRMb2NhdG9yICpwYXJlbnRfc3RhY2s7CisgICAgUHlfc3NpemVfdCBwYXJlbnRfc3RhY2tfdXNlZDsKKyAgICBQeV9zc2l6ZV90IHBhcmVudF9zdGFja19zaXplOwogICAgIEVsZW1lbnRPYmplY3QgKnJvb3RfZWxlbWVudDsKICAgICBQeU9iamVjdCAqc291Z2h0X3RhZzsKLSAgICBpbnQgcm9vdF9kb25lOwogICAgIGludCBnZXR0ZXh0OwogfSBFbGVtZW50SXRlck9iamVjdDsKIApAQCAtMjAyMiwxMyArMjA0NCwxMSBAQAogc3RhdGljIHZvaWQKIGVsZW1lbnRpdGVyX2RlYWxsb2MoRWxlbWVudEl0ZXJPYmplY3QgKml0KQogewotICAgIFBhcmVudExvY2F0b3IgKnAgPSBpdC0+cGFyZW50X3N0YWNrOwotICAgIHdoaWxlIChwKSB7Ci0gICAgICAgIFBhcmVudExvY2F0b3IgKnRlbXAgPSBwOwotICAgICAgICBQeV9YREVDUkVGKHAtPnBhcmVudCk7Ci0gICAgICAgIHAgPSBwLT5uZXh0OwotICAgICAgICBQeU9iamVjdF9GcmVlKHRlbXApOwotICAgIH0KKyAgICBQeV9zc2l6ZV90IGkgPSBpdC0+cGFyZW50X3N0YWNrX3VzZWQ7CisgICAgaXQtPnBhcmVudF9zdGFja191c2VkID0gMDsKKyAgICB3aGlsZSAoaS0tKQorICAgICAgICBQeV9YREVDUkVGKGl0LT5wYXJlbnRfc3RhY2tbaV0ucGFyZW50KTsKKyAgICBQeU1lbV9GcmVlKGl0LT5wYXJlbnRfc3RhY2spOwogCiAgICAgUHlfWERFQ1JFRihpdC0+c291Z2h0X3RhZyk7CiAgICAgUHlfWERFQ1JFRihpdC0+cm9vdF9lbGVtZW50KTsKQEAgLTIwNDAsMTEgKzIwNjAsOSBAQAogc3RhdGljIGludAogZWxlbWVudGl0ZXJfdHJhdmVyc2UoRWxlbWVudEl0ZXJPYmplY3QgKml0LCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKIHsKLSAgICBQYXJlbnRMb2NhdG9yICpwID0gaXQtPnBhcmVudF9zdGFjazsKLSAgICB3aGlsZSAocCkgewotICAgICAgICBQeV9WSVNJVChwLT5wYXJlbnQpOwotICAgICAgICBwID0gcC0+bmV4dDsKLSAgICB9CisgICAgUHlfc3NpemVfdCBpID0gaXQtPnBhcmVudF9zdGFja191c2VkOworICAgIHdoaWxlIChpLS0pCisgICAgICAgIFB5X1ZJU0lUKGl0LT5wYXJlbnRfc3RhY2tbaV0ucGFyZW50KTsKIAogICAgIFB5X1ZJU0lUKGl0LT5yb290X2VsZW1lbnQpOwogICAgIFB5X1ZJU0lUKGl0LT5zb3VnaHRfdGFnKTsKQEAgLTIwNTMsMTcgKzIwNzEsMjUgQEAKIAogLyogSGVscGVyIGZ1bmN0aW9uIGZvciBlbGVtZW50aXRlcl9uZXh0LiBBZGQgYSBuZXcgcGFyZW50IHRvIHRoZSBwYXJlbnQgc3RhY2suCiAgKi8KLXN0YXRpYyBQYXJlbnRMb2NhdG9yICoKLXBhcmVudF9zdGFja19wdXNoX25ldyhQYXJlbnRMb2NhdG9yICpzdGFjaywgRWxlbWVudE9iamVjdCAqcGFyZW50KQorc3RhdGljIGludAorcGFyZW50X3N0YWNrX3B1c2hfbmV3KEVsZW1lbnRJdGVyT2JqZWN0ICppdCwgRWxlbWVudE9iamVjdCAqcGFyZW50KQogewotICAgIFBhcmVudExvY2F0b3IgKm5ld19ub2RlID0gUHlPYmplY3RfTWFsbG9jKHNpemVvZihQYXJlbnRMb2NhdG9yKSk7Ci0gICAgaWYgKG5ld19ub2RlKSB7Ci0gICAgICAgIG5ld19ub2RlLT5wYXJlbnQgPSBwYXJlbnQ7Ci0gICAgICAgIFB5X0lOQ1JFRihwYXJlbnQpOwotICAgICAgICBuZXdfbm9kZS0+Y2hpbGRfaW5kZXggPSAwOwotICAgICAgICBuZXdfbm9kZS0+bmV4dCA9IHN0YWNrOworICAgIFBhcmVudExvY2F0b3IgKml0ZW07CisKKyAgICBpZiAoaXQtPnBhcmVudF9zdGFja191c2VkID49IGl0LT5wYXJlbnRfc3RhY2tfc2l6ZSkgeworICAgICAgICBQeV9zc2l6ZV90IG5ld19zaXplID0gaXQtPnBhcmVudF9zdGFja19zaXplICogMjsgIC8qIG5ldmVyIG92ZXJmbG93ICovCisgICAgICAgIFBhcmVudExvY2F0b3IgKnBhcmVudF9zdGFjayA9IGl0LT5wYXJlbnRfc3RhY2s7CisgICAgICAgIFB5TWVtX1Jlc2l6ZShwYXJlbnRfc3RhY2ssIFBhcmVudExvY2F0b3IsIG5ld19zaXplKTsKKyAgICAgICAgaWYgKHBhcmVudF9zdGFjayA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBpdC0+cGFyZW50X3N0YWNrID0gcGFyZW50X3N0YWNrOworICAgICAgICBpdC0+cGFyZW50X3N0YWNrX3NpemUgPSBuZXdfc2l6ZTsKICAgICB9Ci0gICAgcmV0dXJuIG5ld19ub2RlOworICAgIGl0ZW0gPSBpdC0+cGFyZW50X3N0YWNrICsgaXQtPnBhcmVudF9zdGFja191c2VkKys7CisgICAgUHlfSU5DUkVGKHBhcmVudCk7CisgICAgaXRlbS0+cGFyZW50ID0gcGFyZW50OworICAgIGl0ZW0tPmNoaWxkX2luZGV4ID0gMDsKKyAgICByZXR1cm4gMDsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTIwODAsMTUxICsyMTA2LDkxIEBACiAgICAgICogICAtIGl0ZXJ0ZXh0KCkgYWxzbyBoYXMgdG8gaGFuZGxlIHRhaWwsIGFmdGVyIGZpbmlzaGluZyB3aXRoIGFsbCB0aGUKICAgICAgKiAgICAgY2hpbGRyZW4gb2YgYSBub2RlLgogICAgICAqLwotICAgIEVsZW1lbnRPYmplY3QgKmN1cl9wYXJlbnQ7Ci0gICAgUHlfc3NpemVfdCBjaGlsZF9pbmRleDsKICAgICBpbnQgcmM7CiAgICAgRWxlbWVudE9iamVjdCAqZWxlbTsKKyAgICBQeU9iamVjdCAqdGV4dDsKIAogICAgIHdoaWxlICgxKSB7CiAgICAgICAgIC8qIEhhbmRsZSB0aGUgY2FzZSByZWFjaGVkIGluIHRoZSBiZWdpbm5pbmcgYW5kIGVuZCBvZiBpdGVyYXRpb24sIHdoZXJlCi0gICAgICAgICAqIHRoZSBwYXJlbnQgc3RhY2sgaXMgZW1wdHkuIFRoZSByb290X2RvbmUgZmxhZyBnaXZlcyB1cyBpbmRpY2F0aW9uCi0gICAgICAgICAqIHdoZXRoZXIgd2UndmUganVzdCBzdGFydGVkIGl0ZXJhdGluZyAoc28gcm9vdF9kb25lIGlzIDApLCBpbiB3aGljaAotICAgICAgICAgKiBjYXNlIHRoZSByb290IGlzIHJldHVybmVkLiBJZiByb290X2RvbmUgaXMgMSBhbmQgd2UncmUgaGVyZSwgdGhlCisgICAgICAgICAqIHRoZSBwYXJlbnQgc3RhY2sgaXMgZW1wdHkuIElmIHJvb3RfZWxlbWVudCBpcyBOVUxMIGFuZCB3ZSdyZSBoZXJlLCB0aGUKICAgICAgICAgICogaXRlcmF0b3IgaXMgZXhoYXVzdGVkLgogICAgICAgICAgKi8KLSAgICAgICAgaWYgKCFpdC0+cGFyZW50X3N0YWNrLT5wYXJlbnQpIHsKLSAgICAgICAgICAgIGlmIChpdC0+cm9vdF9kb25lKSB7CisgICAgICAgIGlmICghaXQtPnBhcmVudF9zdGFja191c2VkKSB7CisgICAgICAgICAgICBpZiAoIWl0LT5yb290X2VsZW1lbnQpIHsKICAgICAgICAgICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX1N0b3BJdGVyYXRpb24pOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBlbGVtID0gaXQtPnJvb3RfZWxlbWVudDsKLSAgICAgICAgICAgICAgICBpdC0+cGFyZW50X3N0YWNrID0gcGFyZW50X3N0YWNrX3B1c2hfbmV3KGl0LT5wYXJlbnRfc3RhY2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtKTsKLSAgICAgICAgICAgICAgICBpZiAoIWl0LT5wYXJlbnRfc3RhY2spIHsKLSAgICAgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgUHlfSU5DUkVGKGVsZW0pOwotICAgICAgICAgICAgICAgIGl0LT5yb290X2RvbmUgPSAxOwotICAgICAgICAgICAgICAgIHJjID0gKGl0LT5zb3VnaHRfdGFnID09IFB5X05vbmUpOwotICAgICAgICAgICAgICAgIGlmICghcmMpIHsKLSAgICAgICAgICAgICAgICAgICAgcmMgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woZWxlbS0+dGFnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC0+c291Z2h0X3RhZywgUHlfRVEpOwotICAgICAgICAgICAgICAgICAgICBpZiAocmMgPCAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZWxlbSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAocmMpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGl0LT5nZXR0ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdGV4dCA9IGVsZW1lbnRfZ2V0X3RleHQoZWxlbSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRleHQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZWxlbSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYodGV4dCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZWxlbSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByYyA9IFB5T2JqZWN0X0lzVHJ1ZSh0ZXh0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyYyA+IDApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRleHQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodGV4dCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmMgPCAwKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKWVsZW07Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvKiBTZWUgaWYgdGhlcmUgYXJlIGNoaWxkcmVuIGxlZnQgdG8gdHJhdmVyc2UgaW4gdGhlIGN1cnJlbnQgcGFyZW50LiBJZgotICAgICAgICAgKiB5ZXMsIHZpc2l0IHRoZSBuZXh0IGNoaWxkLiBJZiBub3QsIHBvcCB0aGUgc3RhY2sgYW5kIHRyeSBhZ2Fpbi4KLSAgICAgICAgICovCi0gICAgICAgIGN1cl9wYXJlbnQgPSBpdC0+cGFyZW50X3N0YWNrLT5wYXJlbnQ7Ci0gICAgICAgIGNoaWxkX2luZGV4ID0gaXQtPnBhcmVudF9zdGFjay0+Y2hpbGRfaW5kZXg7Ci0gICAgICAgIGlmIChjdXJfcGFyZW50LT5leHRyYSAmJiBjaGlsZF9pbmRleCA8IGN1cl9wYXJlbnQtPmV4dHJhLT5sZW5ndGgpIHsKLSAgICAgICAgICAgIGVsZW0gPSAoRWxlbWVudE9iamVjdCAqKWN1cl9wYXJlbnQtPmV4dHJhLT5jaGlsZHJlbltjaGlsZF9pbmRleF07Ci0gICAgICAgICAgICBpdC0+cGFyZW50X3N0YWNrLT5jaGlsZF9pbmRleCsrOwotICAgICAgICAgICAgaXQtPnBhcmVudF9zdGFjayA9IHBhcmVudF9zdGFja19wdXNoX25ldyhpdC0+cGFyZW50X3N0YWNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtKTsKLSAgICAgICAgICAgIGlmICghaXQtPnBhcmVudF9zdGFjaykgewotICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIFB5X0lOQ1JFRihlbGVtKTsKLSAgICAgICAgICAgIGlmIChpdC0+Z2V0dGV4dCkgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp0ZXh0ID0gZWxlbWVudF9nZXRfdGV4dChlbGVtKTsKLSAgICAgICAgICAgICAgICBpZiAoIXRleHQpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGVsZW0pOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgUHlfSU5DUkVGKHRleHQpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKLSAgICAgICAgICAgICAgICByYyA9IFB5T2JqZWN0X0lzVHJ1ZSh0ZXh0KTsKLSAgICAgICAgICAgICAgICBpZiAocmMgPiAwKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGV4dDsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodGV4dCk7Ci0gICAgICAgICAgICAgICAgaWYgKHJjIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHJjID0gKGl0LT5zb3VnaHRfdGFnID09IFB5X05vbmUpOwotICAgICAgICAgICAgICAgIGlmICghcmMpIHsKLSAgICAgICAgICAgICAgICAgICAgcmMgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woZWxlbS0+dGFnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC0+c291Z2h0X3RhZywgUHlfRVEpOwotICAgICAgICAgICAgICAgICAgICBpZiAocmMgPCAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZWxlbSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAocmMpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKWVsZW07Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsZW0gPSBpdC0+cm9vdF9lbGVtZW50OyAgLyogc3RlYWxzIGEgcmVmZXJlbmNlICovCisgICAgICAgICAgICBpdC0+cm9vdF9lbGVtZW50ID0gTlVMTDsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICp0YWlsOwotICAgICAgICAgICAgUGFyZW50TG9jYXRvciAqbmV4dDsKLSAgICAgICAgICAgIGlmIChpdC0+Z2V0dGV4dCkgewotICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihjdXJfcGFyZW50KTsKLSAgICAgICAgICAgICAgICB0YWlsID0gZWxlbWVudF9nZXRfdGFpbChjdXJfcGFyZW50KTsKLSAgICAgICAgICAgICAgICBpZiAoIXRhaWwpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGN1cl9wYXJlbnQpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgUHlfSU5DUkVGKHRhaWwpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihjdXJfcGFyZW50KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHRhaWwgPSBQeV9Ob25lOwotICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih0YWlsKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG5leHQgPSBpdC0+cGFyZW50X3N0YWNrLT5uZXh0OwotICAgICAgICAgICAgY3VyX3BhcmVudCA9IGl0LT5wYXJlbnRfc3RhY2stPnBhcmVudDsKLSAgICAgICAgICAgIFB5T2JqZWN0X0ZyZWUoaXQtPnBhcmVudF9zdGFjayk7Ci0gICAgICAgICAgICBpdC0+cGFyZW50X3N0YWNrID0gbmV4dDsKLSAgICAgICAgICAgIFB5X1hERUNSRUYoY3VyX3BhcmVudCk7Ci0KLSAgICAgICAgICAgIC8qIE5vdGUgdGhhdCBleHRyYSBjb25kaXRpb24gb24gaXQtPnBhcmVudF9zdGFjay0+cGFyZW50IGhlcmU7Ci0gICAgICAgICAgICAgKiB0aGlzIGlzIGJlY2F1c2UgaXRlcnRleHQoKSBpcyBzdXBwb3NlZCB0byBvbmx5IHJldHVybiAqaW5uZXIqCi0gICAgICAgICAgICAgKiB0ZXh0LCBub3QgdGV4dCBmb2xsb3dpbmcgdGhlIGVsZW1lbnQgaXQgYmVnYW4gaXRlcmF0aW9uIHdpdGguCisgICAgICAgICAgICAvKiBTZWUgaWYgdGhlcmUgYXJlIGNoaWxkcmVuIGxlZnQgdG8gdHJhdmVyc2UgaW4gdGhlIGN1cnJlbnQgcGFyZW50LiBJZgorICAgICAgICAgICAgICogeWVzLCB2aXNpdCB0aGUgbmV4dCBjaGlsZC4gSWYgbm90LCBwb3AgdGhlIHN0YWNrIGFuZCB0cnkgYWdhaW4uCiAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGlmIChpdC0+cGFyZW50X3N0YWNrLT5wYXJlbnQpIHsKLSAgICAgICAgICAgICAgICByYyA9IFB5T2JqZWN0X0lzVHJ1ZSh0YWlsKTsKLSAgICAgICAgICAgICAgICBpZiAocmMgPiAwKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGFpbDsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodGFpbCk7Ci0gICAgICAgICAgICAgICAgaWYgKHJjIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBQYXJlbnRMb2NhdG9yICppdGVtID0gJml0LT5wYXJlbnRfc3RhY2tbaXQtPnBhcmVudF9zdGFja191c2VkIC0gMV07CisgICAgICAgICAgICBQeV9zc2l6ZV90IGNoaWxkX2luZGV4ID0gaXRlbS0+Y2hpbGRfaW5kZXg7CisgICAgICAgICAgICBFbGVtZW50T2JqZWN0RXh0cmEgKmV4dHJhOworICAgICAgICAgICAgZWxlbSA9IGl0ZW0tPnBhcmVudDsKKyAgICAgICAgICAgIGV4dHJhID0gZWxlbS0+ZXh0cmE7CisgICAgICAgICAgICBpZiAoIWV4dHJhIHx8IGNoaWxkX2luZGV4ID49IGV4dHJhLT5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICBpdC0+cGFyZW50X3N0YWNrX3VzZWQtLTsKKyAgICAgICAgICAgICAgICAvKiBOb3RlIHRoYXQgZXh0cmEgY29uZGl0aW9uIG9uIGl0LT5wYXJlbnRfc3RhY2tfdXNlZCBoZXJlOworICAgICAgICAgICAgICAgICAqIHRoaXMgaXMgYmVjYXVzZSBpdGVydGV4dCgpIGlzIHN1cHBvc2VkIHRvIG9ubHkgcmV0dXJuICppbm5lcioKKyAgICAgICAgICAgICAgICAgKiB0ZXh0LCBub3QgdGV4dCBmb2xsb3dpbmcgdGhlIGVsZW1lbnQgaXQgYmVnYW4gaXRlcmF0aW9uIHdpdGguCisgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgaWYgKGl0LT5nZXR0ZXh0ICYmIGl0LT5wYXJlbnRfc3RhY2tfdXNlZCkgeworICAgICAgICAgICAgICAgICAgICB0ZXh0ID0gZWxlbWVudF9nZXRfdGFpbChlbGVtKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBnZXR0ZXh0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZWxlbSk7CisgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodGFpbCk7Ci0gICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGVsZW0gPSAoRWxlbWVudE9iamVjdCAqKWV4dHJhLT5jaGlsZHJlbltjaGlsZF9pbmRleF07CisgICAgICAgICAgICBpdGVtLT5jaGlsZF9pbmRleCsrOworICAgICAgICAgICAgUHlfSU5DUkVGKGVsZW0pOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHBhcmVudF9zdGFja19wdXNoX25ldyhpdCwgZWxlbSkgPCAwKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoZWxlbSk7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGl0LT5nZXR0ZXh0KSB7CisgICAgICAgICAgICB0ZXh0ID0gZWxlbWVudF9nZXRfdGV4dChlbGVtKTsKKyAgICAgICAgICAgIGdvdG8gZ2V0dGV4dDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChpdC0+c291Z2h0X3RhZyA9PSBQeV9Ob25lKQorICAgICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKWVsZW07CisKKyAgICAgICAgcmMgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woZWxlbS0+dGFnLCBpdC0+c291Z2h0X3RhZywgUHlfRVEpOworICAgICAgICBpZiAocmMgPiAwKQorICAgICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKWVsZW07CisKKyAgICAgICAgUHlfREVDUkVGKGVsZW0pOworICAgICAgICBpZiAocmMgPCAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGNvbnRpbnVlOworCitnZXR0ZXh0OgorICAgICAgICBpZiAoIXRleHQpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGlmICh0ZXh0ID09IFB5X05vbmUpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFB5X0lOQ1JFRih0ZXh0KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKKyAgICAgICAgICAgIHJjID0gUHlPYmplY3RfSXNUcnVlKHRleHQpOworICAgICAgICAgICAgaWYgKHJjID4gMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gdGV4dDsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih0ZXh0KTsKKyAgICAgICAgICAgIGlmIChyYyA8IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTIyNzYsNiArMjI0Miw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KIH07CiAKKyNkZWZpbmUgSU5JVF9QQVJFTlRfU1RBQ0tfU0laRSA4CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBjcmVhdGVfZWxlbWVudGl0ZXIoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnRhZywgaW50IGdldHRleHQpCkBAIC0yMjg4LDIyICsyMjU1LDIwIEBACiAKICAgICBQeV9JTkNSRUYodGFnKTsKICAgICBpdC0+c291Z2h0X3RhZyA9IHRhZzsKLSAgICBpdC0+cm9vdF9kb25lID0gMDsKICAgICBpdC0+Z2V0dGV4dCA9IGdldHRleHQ7CiAgICAgUHlfSU5DUkVGKHNlbGYpOwogICAgIGl0LT5yb290X2VsZW1lbnQgPSBzZWxmOwogCiAgICAgUHlPYmplY3RfR0NfVHJhY2soaXQpOwogCi0gICAgaXQtPnBhcmVudF9zdGFjayA9IFB5T2JqZWN0X01hbGxvYyhzaXplb2YoUGFyZW50TG9jYXRvcikpOworICAgIGl0LT5wYXJlbnRfc3RhY2sgPSBQeU1lbV9OZXcoUGFyZW50TG9jYXRvciwgSU5JVF9QQVJFTlRfU1RBQ0tfU0laRSk7CiAgICAgaWYgKGl0LT5wYXJlbnRfc3RhY2sgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYoaXQpOwogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgaXQtPnBhcmVudF9zdGFjay0+cGFyZW50ID0gTlVMTDsKLSAgICBpdC0+cGFyZW50X3N0YWNrLT5jaGlsZF9pbmRleCA9IDA7Ci0gICAgaXQtPnBhcmVudF9zdGFjay0+bmV4dCA9IE5VTEw7CisgICAgaXQtPnBhcmVudF9zdGFja191c2VkID0gMDsKKyAgICBpdC0+cGFyZW50X3N0YWNrX3NpemUgPSBJTklUX1BBUkVOVF9TVEFDS19TSVpFOwogCiAgICAgcmV0dXJuIChQeU9iamVjdCAqKWl0OwogfQpAQCAtMjMyOCw3ICsyMjkzLDcgQEAKICAgICBQeU9iamVjdCAqZWxlbWVudF9mYWN0b3J5OwogCiAgICAgLyogZWxlbWVudCB0cmFjaW5nICovCi0gICAgUHlPYmplY3QgKmV2ZW50czsgLyogbGlzdCBvZiBldmVudHMsIG9yIE5VTEwgaWYgbm90IGNvbGxlY3RpbmcgKi8KKyAgICBQeU9iamVjdCAqZXZlbnRzX2FwcGVuZDsgLyogdGhlIGFwcGVuZCBtZXRob2Qgb2YgdGhlIGxpc3Qgb2YgZXZlbnRzLCBvciBOVUxMICovCiAgICAgUHlPYmplY3QgKnN0YXJ0X2V2ZW50X29iajsgLyogZXZlbnQgb2JqZWN0cyAoTlVMTCB0byBpZ25vcmUpICovCiAgICAgUHlPYmplY3QgKmVuZF9ldmVudF9vYmo7CiAgICAgUHlPYmplY3QgKnN0YXJ0X25zX2V2ZW50X29iajsKQEAgLTIzNjMsNyArMjMyOCw3IEBACiAgICAgICAgIH0KICAgICAgICAgdC0+aW5kZXggPSAwOwogCi0gICAgICAgIHQtPmV2ZW50cyA9IE5VTEw7CisgICAgICAgIHQtPmV2ZW50c19hcHBlbmQgPSBOVUxMOwogICAgICAgICB0LT5zdGFydF9ldmVudF9vYmogPSB0LT5lbmRfZXZlbnRfb2JqID0gTlVMTDsKICAgICAgICAgdC0+c3RhcnRfbnNfZXZlbnRfb2JqID0gdC0+ZW5kX25zX2V2ZW50X29iaiA9IE5VTEw7CiAgICAgfQpAQCAtMjM4MiwxMyArMjM0Nyw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZWxlbWVudF9mYWN0b3J5KQogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTkxY2ZhNzU1ODk3MGVlOTYgaW5wdXQ9MWI0MjRlZWVmYzM1MjQ5Y10qLwogewotICAgIFB5T2JqZWN0ICp0bXA7Ci0KICAgICBpZiAoZWxlbWVudF9mYWN0b3J5KSB7CiAgICAgICAgIFB5X0lOQ1JFRihlbGVtZW50X2ZhY3RvcnkpOwotICAgICAgICB0bXAgPSBzZWxmLT5lbGVtZW50X2ZhY3Rvcnk7Ci0gICAgICAgIHNlbGYtPmVsZW1lbnRfZmFjdG9yeSA9IGVsZW1lbnRfZmFjdG9yeTsKLSAgICAgICAgUHlfWERFQ1JFRih0bXApOworICAgICAgICBQeV9YU0VUUkVGKHNlbGYtPmVsZW1lbnRfZmFjdG9yeSwgZWxlbWVudF9mYWN0b3J5KTsKICAgICB9CiAKICAgICByZXR1cm4gMDsKQEAgLTI0MTMsNyArMjM3NCw3IEBACiAgICAgUHlfQ0xFQVIoc2VsZi0+c3RhcnRfbnNfZXZlbnRfb2JqKTsKICAgICBQeV9DTEVBUihzZWxmLT5lbmRfZXZlbnRfb2JqKTsKICAgICBQeV9DTEVBUihzZWxmLT5zdGFydF9ldmVudF9vYmopOwotICAgIFB5X0NMRUFSKHNlbGYtPmV2ZW50cyk7CisgICAgUHlfQ0xFQVIoc2VsZi0+ZXZlbnRzX2FwcGVuZCk7CiAgICAgUHlfQ0xFQVIoc2VsZi0+c3RhY2spOwogICAgIFB5X0NMRUFSKHNlbGYtPmRhdGEpOwogICAgIFB5X0NMRUFSKHNlbGYtPmxhc3QpOwpAQCAtMjQ5NCwxMyArMjQ1NSwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpub2RlKQogewogICAgIGlmIChhY3Rpb24gIT0gTlVMTCkgewotICAgICAgICBQeU9iamVjdCAqcmVzID0gUHlUdXBsZV9QYWNrKDIsIGFjdGlvbiwgbm9kZSk7CisgICAgICAgIFB5T2JqZWN0ICpyZXM7CisgICAgICAgIFB5T2JqZWN0ICpldmVudCA9IFB5VHVwbGVfUGFjaygyLCBhY3Rpb24sIG5vZGUpOworICAgICAgICBpZiAoZXZlbnQgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgcmVzID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhzZWxmLT5ldmVudHNfYXBwZW5kLCBldmVudCwgTlVMTCk7CisgICAgICAgIFB5X0RFQ1JFRihldmVudCk7CiAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQoc2VsZi0+ZXZlbnRzLCByZXMpIDwgMCkgewotICAgICAgICAgICAgUHlfREVDUkVGKHJlcyk7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KICAgICAgICAgUHlfREVDUkVGKHJlcyk7CiAgICAgfQogICAgIHJldHVybiAwOwpAQCAtMjUyOSwxMCArMjQ5MSwxNyBAQAogICAgICAgICBzZWxmLT5kYXRhID0gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoc2VsZi0+ZWxlbWVudF9mYWN0b3J5ICYmIHNlbGYtPmVsZW1lbnRfZmFjdG9yeSAhPSBQeV9Ob25lKSB7Ci0gICAgICAgIG5vZGUgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oc2VsZi0+ZWxlbWVudF9mYWN0b3J5LCAiT08iLCB0YWcsIGF0dHJpYik7Ci0gICAgfSBlbHNlIHsKKyAgICBpZiAoIXNlbGYtPmVsZW1lbnRfZmFjdG9yeSB8fCBzZWxmLT5lbGVtZW50X2ZhY3RvcnkgPT0gUHlfTm9uZSkgewogICAgICAgICBub2RlID0gY3JlYXRlX25ld19lbGVtZW50KHRhZywgYXR0cmliKTsKKyAgICB9IGVsc2UgaWYgKGF0dHJpYiA9PSBQeV9Ob25lKSB7CisgICAgICAgIGF0dHJpYiA9IFB5RGljdF9OZXcoKTsKKyAgICAgICAgaWYgKCFhdHRyaWIpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgbm9kZSA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihzZWxmLT5lbGVtZW50X2ZhY3RvcnksICJPTyIsIHRhZywgYXR0cmliKTsKKyAgICAgICAgUHlfREVDUkVGKGF0dHJpYik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBub2RlID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKHNlbGYtPmVsZW1lbnRfZmFjdG9yeSwgIk9PIiwgdGFnLCBhdHRyaWIpOwogICAgIH0KICAgICBpZiAoIW5vZGUpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yOTkxLDEyICsyOTYwLDggQEAKICAgICAgICAgICAgIGF0dHJpYl9pbiArPSAyOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgLyogUGFzcyBhbiBlbXB0eSBkaWN0aW9uYXJ5IG9uICovCi0gICAgICAgIGF0dHJpYiA9IFB5RGljdF9OZXcoKTsKLSAgICAgICAgaWYgKCFhdHRyaWIpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih0YWcpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICAgICAgYXR0cmliID0gUHlfTm9uZTsKICAgICB9CiAKICAgICBpZiAoVHJlZUJ1aWxkZXJfQ2hlY2tFeGFjdChzZWxmLT50YXJnZXQpKSB7CkBAIC0zMDA1LDYgKzI5NzAsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZywgYXR0cmliKTsKICAgICB9CiAgICAgZWxzZSBpZiAoc2VsZi0+aGFuZGxlX3N0YXJ0KSB7CisgICAgICAgIGlmIChhdHRyaWIgPT0gUHlfTm9uZSkgeworICAgICAgICAgICAgUHlfREVDUkVGKGF0dHJpYik7CisgICAgICAgICAgICBhdHRyaWIgPSBQeURpY3RfTmV3KCk7CisgICAgICAgICAgICBpZiAoIWF0dHJpYikgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih0YWcpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICByZXMgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oc2VsZi0+aGFuZGxlX3N0YXJ0LCAiT08iLCB0YWcsIGF0dHJpYik7CiAgICAgfSBlbHNlCiAgICAgICAgIHJlcyA9IE5VTEw7CkBAIC0zMDc4LDcgKzMwNTEsNyBAQAogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIXRhcmdldC0+ZXZlbnRzIHx8ICF0YXJnZXQtPnN0YXJ0X25zX2V2ZW50X29iaikKKyAgICBpZiAoIXRhcmdldC0+ZXZlbnRzX2FwcGVuZCB8fCAhdGFyZ2V0LT5zdGFydF9uc19ldmVudF9vYmopCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghdXJpKQpAQCAtMzEwMSw3ICszMDc0LDcgQEAKICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCF0YXJnZXQtPmV2ZW50cykKKyAgICBpZiAoIXRhcmdldC0+ZXZlbnRzX2FwcGVuZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgdHJlZWJ1aWxkZXJfYXBwZW5kX2V2ZW50KHRhcmdldCwgdGFyZ2V0LT5lbmRfbnNfZXZlbnRfb2JqLCBQeV9Ob25lKTsKQEAgLTM0MjgsNyArMzQwMSw3IEBACiAgICAgfQogICAgIGVsc2UgaWYgKHNlbGYtPmhhbmRsZV9jbG9zZSkgewogICAgICAgICBQeV9ERUNSRUYocmVzKTsKLSAgICAgICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxGdW5jdGlvbihzZWxmLT5oYW5kbGVfY2xvc2UsICIiKTsKKyAgICAgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTm9Bcmcoc2VsZi0+aGFuZGxlX2Nsb3NlKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIHJldHVybiByZXM7CkBAIC0zNTkwLDcgKzM1NjMsNyBAQAogLypbY2xpbmljIGlucHV0XQogX2VsZW1lbnR0cmVlLlhNTFBhcnNlci5fc2V0ZXZlbnRzCiAKLSAgICBldmVudHNfcXVldWU6IG9iamVjdChzdWJjbGFzc19vZj0nJlB5TGlzdF9UeXBlJykKKyAgICBldmVudHNfcXVldWU6IG9iamVjdAogICAgIGV2ZW50c190b19yZXBvcnQ6IG9iamVjdCA9IE5vbmUKICAgICAvCiAKQEAgLTM2MDAsMTIgKzM1NzMsMTIgQEAKIF9lbGVtZW50dHJlZV9YTUxQYXJzZXJfX3NldGV2ZW50c19pbXBsKFhNTFBhcnNlck9iamVjdCAqc2VsZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpldmVudHNfcXVldWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZXZlbnRzX3RvX3JlcG9ydCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xNDQwMDkyOTIyYjEzZWQxIGlucHV0PTU5ZGI5NzQyOTEwYzYxNzRdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xNDQwMDkyOTIyYjEzZWQxIGlucHV0PWFiZjkwODMwYTFjM2IwZmNdKi8KIHsKICAgICAvKiBhY3RpdmF0ZSBlbGVtZW50IGV2ZW50IHJlcG9ydGluZyAqLwogICAgIFB5X3NzaXplX3QgaTsKICAgICBUcmVlQnVpbGRlck9iamVjdCAqdGFyZ2V0OwotICAgIFB5T2JqZWN0ICpldmVudHNfc2VxOworICAgIFB5T2JqZWN0ICpldmVudHNfYXBwZW5kLCAqZXZlbnRzX3NlcTsKIAogICAgIGlmICghVHJlZUJ1aWxkZXJfQ2hlY2tFeGFjdChzZWxmLT50YXJnZXQpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZygKQEAgLTM2MTgsOCArMzU5MSwxMCBAQAogCiAgICAgdGFyZ2V0ID0gKFRyZWVCdWlsZGVyT2JqZWN0Kikgc2VsZi0+dGFyZ2V0OwogCi0gICAgUHlfSU5DUkVGKGV2ZW50c19xdWV1ZSk7Ci0gICAgUHlfWFNFVFJFRih0YXJnZXQtPmV2ZW50cywgZXZlbnRzX3F1ZXVlKTsKKyAgICBldmVudHNfYXBwZW5kID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhldmVudHNfcXVldWUsICJhcHBlbmQiKTsKKyAgICBpZiAoZXZlbnRzX2FwcGVuZCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9YU0VUUkVGKHRhcmdldC0+ZXZlbnRzX2FwcGVuZCwgZXZlbnRzX2FwcGVuZCk7CiAKICAgICAvKiBjbGVhciBvdXQgZXhpc3RpbmcgZXZlbnRzICovCiAgICAgUHlfQ0xFQVIodGFyZ2V0LT5zdGFydF9ldmVudF9vYmopOwpAQCAtMzcyOSw3ICszNzA0LDcgQEAKICAgICBfRUxFTUVOVFRSRUVfRUxFTUVOVF9JVEVSVEVYVF9NRVRIT0RERUYKICAgICBfRUxFTUVOVFRSRUVfRUxFTUVOVF9JVEVSRklORF9NRVRIT0RERUYKIAotICAgIHsiZ2V0aXRlcmF0b3IiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXJfX2RvY19ffSwKKyAgICB7ImdldGl0ZXJhdG9yIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXIsIE1FVEhfRkFTVENBTEwsIF9lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXJfX2RvY19ffSwKICAgICBfRUxFTUVOVFRSRUVfRUxFTUVOVF9HRVRDSElMRFJFTl9NRVRIT0RERUYKIAogICAgIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0lURU1TX01FVEhPRERFRgpAQCAtMzc1Miw2ICszNzI3LDI2IEBACiAgICAgKG9iam9iamFyZ3Byb2MpIGVsZW1lbnRfYXNzX3N1YnNjciwKIH07CiAKK3N0YXRpYyBQeUdldFNldERlZiBlbGVtZW50X2dldHNldGxpc3RbXSA9IHsKKyAgICB7InRhZyIsCisgICAgICAgIChnZXR0ZXIpZWxlbWVudF90YWdfZ2V0dGVyLAorICAgICAgICAoc2V0dGVyKWVsZW1lbnRfdGFnX3NldHRlciwKKyAgICAgICAgIkEgc3RyaW5nIGlkZW50aWZ5aW5nIHdoYXQga2luZCBvZiBkYXRhIHRoaXMgZWxlbWVudCByZXByZXNlbnRzIn0sCisgICAgeyJ0ZXh0IiwKKyAgICAgICAgKGdldHRlcillbGVtZW50X3RleHRfZ2V0dGVyLAorICAgICAgICAoc2V0dGVyKWVsZW1lbnRfdGV4dF9zZXR0ZXIsCisgICAgICAgICJBIHN0cmluZyBvZiB0ZXh0IGRpcmVjdGx5IGFmdGVyIHRoZSBzdGFydCB0YWcsIG9yIE5vbmUifSwKKyAgICB7InRhaWwiLAorICAgICAgICAoZ2V0dGVyKWVsZW1lbnRfdGFpbF9nZXR0ZXIsCisgICAgICAgIChzZXR0ZXIpZWxlbWVudF90YWlsX3NldHRlciwKKyAgICAgICAgIkEgc3RyaW5nIG9mIHRleHQgZGlyZWN0bHkgYWZ0ZXIgdGhlIGVuZCB0YWcsIG9yIE5vbmUifSwKKyAgICB7ImF0dHJpYiIsCisgICAgICAgIChnZXR0ZXIpZWxlbWVudF9hdHRyaWJfZ2V0dGVyLAorICAgICAgICAoc2V0dGVyKWVsZW1lbnRfYXR0cmliX3NldHRlciwKKyAgICAgICAgIkEgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBlbGVtZW50J3MgYXR0cmlidXRlcyJ9LAorICAgIHtOVUxMfSwKK307CisKIHN0YXRpYyBQeVR5cGVPYmplY3QgRWxlbWVudF9UeXBlID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQogICAgICJ4bWwuZXRyZWUuRWxlbWVudFRyZWUuRWxlbWVudCIsIHNpemVvZihFbGVtZW50T2JqZWN0KSwgMCwKQEAgLTM3NjgsOCArMzc2Myw4IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KLSAgICAoZ2V0YXR0cm9mdW5jKWVsZW1lbnRfZ2V0YXR0cm8sICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLwotICAgIChzZXRhdHRyb2Z1bmMpZWxlbWVudF9zZXRhdHRybywgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwogICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUgfCBQeV9UUEZMQUdTX0hBVkVfR0MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KQEAgLTM3ODIsNyArMzc3Nyw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KICAgICBlbGVtZW50X21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIGVsZW1lbnRfZ2V0c2V0bGlzdCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19mdW5jdG9vbHNtb2R1bGUuYyBiL01vZHVsZXMvX2Z1bmN0b29sc21vZHVsZS5jCmluZGV4IDljOWFiNWYuLjIyNjlkMDUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2Z1bmN0b29sc21vZHVsZS5jCisrKyBiL01vZHVsZXMvX2Z1bmN0b29sc21vZHVsZS5jCkBAIC0xMjgsNDQgKzEyOCw2MCBAQAogewogICAgIFB5T2JqZWN0ICpyZXQ7CiAgICAgUHlPYmplY3QgKmFyZ2FwcGwsICprd2FwcGw7CisgICAgUHlPYmplY3QgKipzdGFjazsKKyAgICBQeV9zc2l6ZV90IG5hcmdzOwogCiAgICAgYXNzZXJ0IChQeUNhbGxhYmxlX0NoZWNrKHB0by0+Zm4pKTsKICAgICBhc3NlcnQgKFB5VHVwbGVfQ2hlY2socHRvLT5hcmdzKSk7CiAgICAgYXNzZXJ0IChQeURpY3RfQ2hlY2socHRvLT5rdykpOwogCiAgICAgaWYgKFB5VHVwbGVfR0VUX1NJWkUocHRvLT5hcmdzKSA9PSAwKSB7Ci0gICAgICAgIGFyZ2FwcGwgPSBhcmdzOwotICAgICAgICBQeV9JTkNSRUYoYXJncyk7Ci0gICAgfSBlbHNlIGlmIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpID09IDApIHsKLSAgICAgICAgYXJnYXBwbCA9IHB0by0+YXJnczsKLSAgICAgICAgUHlfSU5DUkVGKHB0by0+YXJncyk7Ci0gICAgfSBlbHNlIHsKKyAgICAgICAgc3RhY2sgPSAmUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAwKTsKKyAgICAgICAgbmFyZ3MgPSBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpOworICAgICAgICBhcmdhcHBsID0gTlVMTDsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlUdXBsZV9HRVRfU0laRShhcmdzKSA9PSAwKSB7CisgICAgICAgIHN0YWNrID0gJlB5VHVwbGVfR0VUX0lURU0ocHRvLT5hcmdzLCAwKTsKKyAgICAgICAgbmFyZ3MgPSBQeVR1cGxlX0dFVF9TSVpFKHB0by0+YXJncyk7CisgICAgICAgIGFyZ2FwcGwgPSBOVUxMOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgc3RhY2sgPSBOVUxMOwogICAgICAgICBhcmdhcHBsID0gUHlTZXF1ZW5jZV9Db25jYXQocHRvLT5hcmdzLCBhcmdzKTsKLSAgICAgICAgaWYgKGFyZ2FwcGwgPT0gTlVMTCkKKyAgICAgICAgaWYgKGFyZ2FwcGwgPT0gTlVMTCkgewogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKwogICAgICAgICBhc3NlcnQoUHlUdXBsZV9DaGVjayhhcmdhcHBsKSk7CiAgICAgfQogCiAgICAgaWYgKFB5RGljdF9TaXplKHB0by0+a3cpID09IDApIHsKICAgICAgICAga3dhcHBsID0ga3c7CiAgICAgICAgIFB5X1hJTkNSRUYoa3dhcHBsKTsKLSAgICB9IGVsc2UgeworICAgIH0KKyAgICBlbHNlIHsKICAgICAgICAga3dhcHBsID0gUHlEaWN0X0NvcHkocHRvLT5rdyk7CiAgICAgICAgIGlmIChrd2FwcGwgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfREVDUkVGKGFyZ2FwcGwpOworICAgICAgICAgICAgUHlfWERFQ1JFRihhcmdhcHBsKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CisKICAgICAgICAgaWYgKGt3ICE9IE5VTEwpIHsKICAgICAgICAgICAgIGlmIChQeURpY3RfTWVyZ2Uoa3dhcHBsLCBrdywgMSkgIT0gMCkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhcmdhcHBsKTsKKyAgICAgICAgICAgICAgICBQeV9YREVDUkVGKGFyZ2FwcGwpOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrd2FwcGwpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0ID0gUHlPYmplY3RfQ2FsbChwdG8tPmZuLCBhcmdhcHBsLCBrd2FwcGwpOwotICAgIFB5X0RFQ1JFRihhcmdhcHBsKTsKKyAgICBpZiAoc3RhY2spIHsKKyAgICAgICAgcmV0ID0gX1B5T2JqZWN0X0Zhc3RDYWxsRGljdChwdG8tPmZuLCBzdGFjaywgbmFyZ3MsIGt3YXBwbCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXQgPSBQeU9iamVjdF9DYWxsKHB0by0+Zm4sIGFyZ2FwcGwsIGt3YXBwbCk7CisgICAgICAgIFB5X0RFQ1JFRihhcmdhcHBsKTsKKyAgICB9CiAgICAgUHlfWERFQ1JFRihrd2FwcGwpOwogICAgIHJldHVybiByZXQ7CiB9CkBAIC0yMTMsNyArMjI5LDcgQEAKICAgICBpZiAoc3RhdHVzICE9IDApIHsKICAgICAgICAgaWYgKHN0YXR1cyA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlcyguLi4pIiwgUHlfVFlQRShwdG8pLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIuLi4iKTsKICAgICB9CiAKICAgICBhcmdsaXN0ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIiIpOwpAQCAtNDYxLDEyICs0NzcsMTIgQEAKIGtleW9iamVjdF9yaWNoY29tcGFyZShQeU9iamVjdCAqa28sIFB5T2JqZWN0ICpvdGhlciwgaW50IG9wKQogewogICAgIFB5T2JqZWN0ICpyZXM7Ci0gICAgUHlPYmplY3QgKmFyZ3M7CiAgICAgUHlPYmplY3QgKng7CiAgICAgUHlPYmplY3QgKnk7CiAgICAgUHlPYmplY3QgKmNvbXBhcmU7CiAgICAgUHlPYmplY3QgKmFuc3dlcjsKICAgICBzdGF0aWMgUHlPYmplY3QgKnplcm87CisgICAgUHlPYmplY3QqIHN0YWNrWzJdOwogCiAgICAgaWYgKHplcm8gPT0gTlVMTCkgewogICAgICAgICB6ZXJvID0gUHlMb25nX0Zyb21Mb25nKDApOwpAQCAtNDkwLDE3ICs1MDYsMTMgQEAKICAgICAvKiBDYWxsIHRoZSB1c2VyJ3MgY29tcGFyaXNvbiBmdW5jdGlvbiBhbmQgdHJhbnNsYXRlIHRoZSAzLXdheQogICAgICAqIHJlc3VsdCBpbnRvIHRydWUgb3IgZmFsc2UgKG9yIGVycm9yKS4KICAgICAgKi8KLSAgICBhcmdzID0gUHlUdXBsZV9OZXcoMik7Ci0gICAgaWYgKGFyZ3MgPT0gTlVMTCkKKyAgICBzdGFja1swXSA9IHg7CisgICAgc3RhY2tbMV0gPSB5OworICAgIHJlcyA9IF9QeU9iamVjdF9GYXN0Q2FsbChjb21wYXJlLCBzdGFjaywgMik7CisgICAgaWYgKHJlcyA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5X0lOQ1JFRih4KTsKLSAgICBQeV9JTkNSRUYoeSk7Ci0gICAgUHlUdXBsZV9TRVRfSVRFTShhcmdzLCAwLCB4KTsKLSAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDEsIHkpOwotICAgIHJlcyA9IFB5T2JqZWN0X0NhbGwoY29tcGFyZSwgYXJncywgTlVMTCk7Ci0gICAgUHlfREVDUkVGKGFyZ3MpOwotICAgIGlmIChyZXMgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCiAgICAgYW5zd2VyID0gUHlPYmplY3RfUmljaENvbXBhcmUocmVzLCB6ZXJvLCBvcCk7CiAgICAgUHlfREVDUkVGKHJlcyk7CiAgICAgcmV0dXJuIGFuc3dlcjsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2dkYm1tb2R1bGUuYyBiL01vZHVsZXMvX2dkYm1tb2R1bGUuYwppbmRleCBiODQwYmY1Li5kYWFlNzFkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19nZGJtbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fZ2RibW1vZHVsZS5jCkBAIC02MTQsNyArNjE0LDcgQEAKICAgICByZXR1cm4gbmV3ZGJtb2JqZWN0KG5hbWUsIGlmbGFncywgbW9kZSk7CiB9CiAKLXN0YXRpYyBjaGFyIGRibW1vZHVsZV9vcGVuX2ZsYWdzW10gPSAicndjbiIKK3N0YXRpYyBjb25zdCBjaGFyIGRibW1vZHVsZV9vcGVuX2ZsYWdzW10gPSAicndjbiIKICNpZmRlZiBHREJNX0ZBU1QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZiIKICNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faGFzaG9wZW5zc2wuYyBiL01vZHVsZXMvX2hhc2hvcGVuc3NsLmMKaW5kZXggZmY1NzYxNC4uZGFhNGYzZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faGFzaG9wZW5zc2wuYworKysgYi9Nb2R1bGVzL19oYXNob3BlbnNzbC5jCkBAIC0yNSw2ICsyNSwxMiBAQAogI2luY2x1ZGUgPG9wZW5zc2wvb2JqZWN0cy5oPgogI2luY2x1ZGUgIm9wZW5zc2wvZXJyLmgiCiAKKyNpbmNsdWRlICJjbGluaWMvX2hhc2hvcGVuc3NsLmMuaCIKKy8qW2NsaW5pYyBpbnB1dF0KK21vZHVsZSBfaGFzaGxpYgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9YzJiNGZmMDgxYmFjNGJlMV0qLworCiAjZGVmaW5lIE1VTkNIX1NJWkUgSU5UX01BWAogCiAjaWZuZGVmIEhBU0hfT0JKX0NPTlNUUlVDVE9SCkBAIC03MTMsNiArNzE5LDEyOCBAQAogCiAjZW5kaWYKIAorI2lmIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPiAweDEwMTAwMDAwTCAmJiAhZGVmaW5lZChPUEVOU1NMX05PX1NDUllQVCkgJiYgIWRlZmluZWQoTElCUkVTU0xfVkVSU0lPTl9OVU1CRVIpCisjZGVmaW5lIFBZX1NDUllQVCAxCisKKy8qW2NsaW5pYyBpbnB1dF0KK19oYXNobGliLnNjcnlwdAorCisgICAgcGFzc3dvcmQ6IFB5X2J1ZmZlcgorICAgICoKKyAgICBzYWx0OiBQeV9idWZmZXIgPSBOb25lCisgICAgbiBhcyBuX29iajogb2JqZWN0KHN1YmNsYXNzX29mPScmUHlMb25nX1R5cGUnKSA9IE5vbmUKKyAgICByIGFzIHJfb2JqOiBvYmplY3Qoc3ViY2xhc3Nfb2Y9JyZQeUxvbmdfVHlwZScpID0gTm9uZQorICAgIHAgYXMgcF9vYmo6IG9iamVjdChzdWJjbGFzc19vZj0nJlB5TG9uZ19UeXBlJykgPSBOb25lCisgICAgbWF4bWVtOiBsb25nID0gMAorICAgIGRrbGVuOiBsb25nID0gNjQKKworCitzY3J5cHQgcGFzc3dvcmQtYmFzZWQga2V5IGRlcml2YXRpb24gZnVuY3Rpb24uCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaGFzaGxpYl9zY3J5cHRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9idWZmZXIgKnBhc3N3b3JkLCBQeV9idWZmZXIgKnNhbHQsCisgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbl9vYmosIFB5T2JqZWN0ICpyX29iaiwgUHlPYmplY3QgKnBfb2JqLAorICAgICAgICAgICAgICAgICAgICAgbG9uZyBtYXhtZW0sIGxvbmcgZGtsZW4pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTQ4NDllMmFhMmI3YjQ2YyBpbnB1dD00OGE3ZDYzYmYzZjc1YzQyXSovCit7CisgICAgUHlPYmplY3QgKmtleV9vYmogPSBOVUxMOworICAgIGNoYXIgKmtleTsKKyAgICBpbnQgcmV0dmFsOworICAgIHVuc2lnbmVkIGxvbmcgbiwgciwgcDsKKworICAgIGlmIChwYXNzd29yZC0+bGVuID4gSU5UX01BWCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJwYXNzd29yZCBpcyB0b28gbG9uZy4iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKHNhbHQtPmJ1ZiA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAic2FsdCBpcyByZXF1aXJlZCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKHNhbHQtPmxlbiA+IElOVF9NQVgpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAic2FsdCBpcyB0b28gbG9uZy4iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbiA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZyhuX29iaik7CisgICAgaWYgKG4gPT0gKHVuc2lnbmVkIGxvbmcpIC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJuIGlzIHJlcXVpcmVkIGFuZCBtdXN0IGJlIGFuIHVuc2lnbmVkIGludCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKG4gPCAyIHx8IG4gJiAobiAtIDEpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIm4gbXVzdCBiZSBhIHBvd2VyIG9mIDIuIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHIgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmcocl9vYmopOworICAgIGlmIChyID09ICh1bnNpZ25lZCBsb25nKSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgInIgaXMgcmVxdWlyZWQgYW5kIG11c3QgYmUgYW4gdW5zaWduZWQgaW50Iik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHAgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmcocF9vYmopOworICAgIGlmIChwID09ICh1bnNpZ25lZCBsb25nKSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgInAgaXMgcmVxdWlyZWQgYW5kIG11c3QgYmUgYW4gdW5zaWduZWQgaW50Iik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChtYXhtZW0gPCAwIHx8IG1heG1lbSA+IElOVF9NQVgpIHsKKyAgICAgICAgLyogT3BlblNTTCAxLjEuMCByZXN0cmljdHMgbWF4bWVtIHRvIDMyTUIuIEl0IG1heSBjaGFuZ2UgaW4gdGhlCisgICAgICAgICAgIGZ1dHVyZS4gVGhlIG1heG1lbSBjb25zdGFudCBpcyBwcml2YXRlIHRvIE9wZW5TU0wuICovCisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIm1heG1lbSBtdXN0IGJlIHBvc2l0aXZlIGFuZCBzbWFsbGVyIHRoYW4gJWQiLAorICAgICAgICAgICAgICAgICAgICAgIElOVF9NQVgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoZGtsZW4gPCAxIHx8IGRrbGVuID4gSU5UX01BWCkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgImRrbGVuIG11c3QgYmUgZ3JlYXRlciB0aGFuIDAgYW5kIHNtYWxsZXIgdGhhbiAlZCIsCisgICAgICAgICAgICAgICAgICAgIElOVF9NQVgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiBsZXQgT3BlblNTTCB2YWxpZGF0ZSB0aGUgcmVzdCAqLworICAgIHJldHZhbCA9IEVWUF9QQkVfc2NyeXB0KE5VTEwsIDAsIE5VTEwsIDAsIG4sIHIsIHAsIG1heG1lbSwgTlVMTCwgMCk7CisgICAgaWYgKCFyZXR2YWwpIHsKKyAgICAgICAgLyogc29ycnksIGNhbid0IGRvIG11Y2ggYmV0dGVyICovCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgcGFyYW1lbXRlciBjb21iaW5hdGlvbiBmb3IgbiwgciwgcCwgbWF4bWVtLiIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgIH0KKworICAgIGtleV9vYmogPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGRrbGVuKTsKKyAgICBpZiAoa2V5X29iaiA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBrZXkgPSBQeUJ5dGVzX0FTX1NUUklORyhrZXlfb2JqKTsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICByZXR2YWwgPSBFVlBfUEJFX3NjcnlwdCgKKyAgICAgICAgKGNvbnN0IGNoYXIqKXBhc3N3b3JkLT5idWYsIChzaXplX3QpcGFzc3dvcmQtPmxlbiwKKyAgICAgICAgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilzYWx0LT5idWYsIChzaXplX3Qpc2FsdC0+bGVuLAorICAgICAgICBuLCByLCBwLCBtYXhtZW0sCisgICAgICAgICh1bnNpZ25lZCBjaGFyICopa2V5LCAoc2l6ZV90KWRrbGVuCisgICAgKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKCFyZXR2YWwpIHsKKyAgICAgICAgUHlfQ0xFQVIoa2V5X29iaik7CisgICAgICAgIF9zZXRFeGNlcHRpb24oUHlFeGNfVmFsdWVFcnJvcik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4ga2V5X29iajsKK30KKyNlbmRpZgorCiAvKiBTdGF0ZSBmb3Igb3VyIGNhbGxiYWNrIGZ1bmN0aW9uIHNvIHRoYXQgaXQgY2FuIGFjY3VtdWxhdGUgYSByZXN1bHQuICovCiB0eXBlZGVmIHN0cnVjdCBfaW50ZXJuYWxfbmFtZV9tYXBwZXJfc3RhdGUgewogICAgIFB5T2JqZWN0ICpzZXQ7CkBAIC04MzYsNiArOTY0LDcgQEAKICAgICB7InBia2RmMl9obWFjIiwgKFB5Q0Z1bmN0aW9uKXBia2RmMl9obWFjLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywKICAgICAgcGJrZGYyX2htYWNfX2RvY19ffSwKICNlbmRpZgorICAgIF9IQVNITElCX1NDUllQVF9NRVRIT0RERUYKICAgICBDT05TVFJVQ1RPUl9NRVRIX0RFRihtZDUpLAogICAgIENPTlNUUlVDVE9SX01FVEhfREVGKHNoYTEpLAogICAgIENPTlNUUlVDVE9SX01FVEhfREVGKHNoYTIyNCksCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19oZWFwcW1vZHVsZS5jIGIvTW9kdWxlcy9faGVhcHFtb2R1bGUuYwppbmRleCAxMzZhYmY1Li5iNDk5ZTFmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19oZWFwcW1vZHVsZS5jCisrKyBiL01vZHVsZXMvX2hlYXBxbW9kdWxlLmMKQEAgLTY2LDcgKzY2LDcgQEAKIAogICAgIC8qIEJ1YmJsZSB1cCB0aGUgc21hbGxlciBjaGlsZCB1bnRpbCBoaXR0aW5nIGEgbGVhZi4gKi8KICAgICBhcnIgPSBfUHlMaXN0X0lURU1TKGhlYXApOwotICAgIGxpbWl0ID0gZW5kcG9zIC8gMjsgICAgICAgICAgLyogc21hbGxlc3QgcG9zIHRoYXQgaGFzIG5vIGNoaWxkICovCisgICAgbGltaXQgPSBlbmRwb3MgPj4gMTsgICAgICAgICAvKiBzbWFsbGVzdCBwb3MgdGhhdCBoYXMgbm8gY2hpbGQgKi8KICAgICB3aGlsZSAocG9zIDwgbGltaXQpIHsKICAgICAgICAgLyogU2V0IGNoaWxkcG9zIHRvIGluZGV4IG9mIHNtYWxsZXIgY2hpbGQuICAgKi8KICAgICAgICAgY2hpbGRwb3MgPSAyKnBvcyArIDE7ICAgIC8qIGxlZnRtb3N0IGNoaWxkIHBvc2l0aW9uICAqLwpAQCAtNzgsNiArNzgsNyBAQAogICAgICAgICAgICAgaWYgKGNtcCA8IDApCiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgY2hpbGRwb3MgKz0gKCh1bnNpZ25lZCljbXAgXiAxKTsgICAvKiBpbmNyZW1lbnQgd2hlbiBjbXA9PTAgKi8KKyAgICAgICAgICAgIGFyciA9IF9QeUxpc3RfSVRFTVMoaGVhcCk7ICAgICAgICAgLyogYXJyIG1heSBoYXZlIGNoYW5nZWQgKi8KICAgICAgICAgICAgIGlmIChlbmRwb3MgIT0gUHlMaXN0X0dFVF9TSVpFKGhlYXApKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpc3QgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24iKTsKQEAgLTg1LDcgKzg2LDYgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAvKiBNb3ZlIHRoZSBzbWFsbGVyIGNoaWxkIHVwLiAqLwotICAgICAgICBhcnIgPSBfUHlMaXN0X0lURU1TKGhlYXApOwogICAgICAgICB0bXAxID0gYXJyW2NoaWxkcG9zXTsKICAgICAgICAgdG1wMiA9IGFycltwb3NdOwogICAgICAgICBhcnJbY2hpbGRwb3NdID0gdG1wMjsKQEAgLTM0Nyw3ICszNDcsNyBAQAogICAgICAgIG4gaXMgb2RkID0gMipqKzEsIHRoaXMgaXMgKDIqaisxLTEpLzIgPSBqIHNvIGotMSBpcyB0aGUgbGFyZ2VzdCwKICAgICAgICBhbmQgdGhhdCdzIGFnYWluIG4vLzItMS4KICAgICAqLwotICAgIGZvciAoaSA9IG4vMiAtIDEgOyBpID49IDAgOyBpLS0pCisgICAgZm9yIChpID0gKG4gPj4gMSkgLSAxIDsgaSA+PSAwIDsgaS0tKQogICAgICAgICBpZiAoc2lmdHVwX2Z1bmMoKFB5TGlzdE9iamVjdCAqKWhlYXAsIGkpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfUkVUVVJOX05PTkU7CkBAIC00MjAsNyArNDIwLDcgQEAKIAogICAgIC8qIEJ1YmJsZSB1cCB0aGUgc21hbGxlciBjaGlsZCB1bnRpbCBoaXR0aW5nIGEgbGVhZi4gKi8KICAgICBhcnIgPSBfUHlMaXN0X0lURU1TKGhlYXApOwotICAgIGxpbWl0ID0gZW5kcG9zIC8gMjsgICAgICAgICAgLyogc21hbGxlc3QgcG9zIHRoYXQgaGFzIG5vIGNoaWxkICovCisgICAgbGltaXQgPSBlbmRwb3MgPj4gMTsgICAgICAgICAvKiBzbWFsbGVzdCBwb3MgdGhhdCBoYXMgbm8gY2hpbGQgKi8KICAgICB3aGlsZSAocG9zIDwgbGltaXQpIHsKICAgICAgICAgLyogU2V0IGNoaWxkcG9zIHRvIGluZGV4IG9mIHNtYWxsZXIgY2hpbGQuICAgKi8KICAgICAgICAgY2hpbGRwb3MgPSAyKnBvcyArIDE7ICAgIC8qIGxlZnRtb3N0IGNoaWxkIHBvc2l0aW9uICAqLwpAQCAtNDMyLDYgKzQzMiw3IEBACiAgICAgICAgICAgICBpZiAoY21wIDwgMCkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICBjaGlsZHBvcyArPSAoKHVuc2lnbmVkKWNtcCBeIDEpOyAgIC8qIGluY3JlbWVudCB3aGVuIGNtcD09MCAqLworICAgICAgICAgICAgYXJyID0gX1B5TGlzdF9JVEVNUyhoZWFwKTsgICAgICAgICAvKiBhcnIgbWF5IGhhdmUgY2hhbmdlZCAqLwogICAgICAgICAgICAgaWYgKGVuZHBvcyAhPSBQeUxpc3RfR0VUX1NJWkUoaGVhcCkpIHsKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGlzdCBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbiIpOwpAQCAtNDM5LDcgKzQ0MCw2IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgLyogTW92ZSB0aGUgc21hbGxlciBjaGlsZCB1cC4gKi8KLSAgICAgICAgYXJyID0gX1B5TGlzdF9JVEVNUyhoZWFwKTsKICAgICAgICAgdG1wMSA9IGFycltjaGlsZHBvc107CiAgICAgICAgIHRtcDIgPSBhcnJbcG9zXTsKICAgICAgICAgYXJyW2NoaWxkcG9zXSA9IHRtcDI7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9faW9tb2R1bGUuYyBiL01vZHVsZXMvX2lvL19pb21vZHVsZS5jCmluZGV4IGU5ZjIyYWYuLmY0ZDNjYmQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL19pb21vZHVsZS5jCisrKyBiL01vZHVsZXMvX2lvL19pb21vZHVsZS5jCkBAIC0yMCw2ICsyMCw5IEBACiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KICNlbmRpZiAvKiBIQVZFX1NZU19TVEFUX0ggKi8KIAorI2lmZGVmIE1TX1dJTkRPV1MKKyNpbmNsdWRlIDxjb25zb2xlYXBpLmg+CisjZW5kaWYKIAogLyogVmFyaW91cyBpbnRlcm5lZCBzdHJpbmdzICovCiAKQEAgLTUyLDcgKzU1LDYgQEAKIFB5T2JqZWN0ICpfUHlJT19lbXB0eV9ieXRlczsKIFB5T2JqZWN0ICpfUHlJT196ZXJvOwogCi0MCiBQeURvY19TVFJWQVIobW9kdWxlX2RvYywKICJUaGUgaW8gbW9kdWxlIHByb3ZpZGVzIHRoZSBQeXRob24gaW50ZXJmYWNlcyB0byBzdHJlYW0gaGFuZGxpbmcuIFRoZVxuIgogImJ1aWx0aW4gb3BlbiBmdW5jdGlvbiBpcyBkZWZpbmVkIGluIHRoaXMgbW9kdWxlLlxuIgpAQCAtMjM4LDIwICsyNDAsMzMgQEAKICAgICBpbnQgdGV4dCA9IDAsIGJpbmFyeSA9IDAsIHVuaXZlcnNhbCA9IDA7CiAKICAgICBjaGFyIHJhd21vZGVbNl0sICptOwotICAgIGludCBsaW5lX2J1ZmZlcmluZywgaXNhdHR5OworICAgIGludCBsaW5lX2J1ZmZlcmluZywgaXNfbnVtYmVyOworICAgIGxvbmcgaXNhdHR5OwogCi0gICAgUHlPYmplY3QgKnJhdywgKm1vZGVvYmogPSBOVUxMLCAqYnVmZmVyLCAqd3JhcHBlciwgKnJlc3VsdCA9IE5VTEw7CisgICAgUHlPYmplY3QgKnJhdywgKm1vZGVvYmogPSBOVUxMLCAqYnVmZmVyLCAqd3JhcHBlciwgKnJlc3VsdCA9IE5VTEwsICpwYXRoX29yX2ZkID0gTlVMTDsKIAogICAgIF9QeV9JREVOVElGSUVSKF9ibGtzaXplKTsKICAgICBfUHlfSURFTlRJRklFUihpc2F0dHkpOwogICAgIF9QeV9JREVOVElGSUVSKG1vZGUpOwogICAgIF9QeV9JREVOVElGSUVSKGNsb3NlKTsKIAotICAgIGlmICghUHlVbmljb2RlX0NoZWNrKGZpbGUpICYmCi0JIVB5Qnl0ZXNfQ2hlY2soZmlsZSkgJiYKLQkhUHlOdW1iZXJfQ2hlY2soZmlsZSkpIHsKKyAgICBpc19udW1iZXIgPSBQeU51bWJlcl9DaGVjayhmaWxlKTsKKworICAgIGlmIChpc19udW1iZXIpIHsKKyAgICAgICAgcGF0aF9vcl9mZCA9IGZpbGU7CisgICAgICAgIFB5X0lOQ1JFRihwYXRoX29yX2ZkKTsKKyAgICB9IGVsc2UgeworICAgICAgICBwYXRoX29yX2ZkID0gUHlPU19GU1BhdGgoZmlsZSk7CisgICAgICAgIGlmIChwYXRoX29yX2ZkID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFpc19udW1iZXIgJiYKKyAgICAgICAgIVB5VW5pY29kZV9DaGVjayhwYXRoX29yX2ZkKSAmJgorICAgICAgICAhUHlCeXRlc19DaGVjayhwYXRoX29yX2ZkKSkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiaW52YWxpZCBmaWxlOiAlUiIsIGZpbGUpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKICAgICAvKiBEZWNvZGUgbW9kZSAqLwpAQCAtMjkyLDcgKzMwNyw3IEBACiAgICAgICAgIGlmIChzdHJjaHIobW9kZStpKzEsIGMpKSB7CiAgICAgICAgICAgaW52YWxpZF9tb2RlOgogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsICJpbnZhbGlkIG1vZGU6ICclcyciLCBtb2RlKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQogCiAgICAgfQpAQCAtMzA3LDU0ICszMjIsNjcgQEAKIAogICAgIC8qIFBhcmFtZXRlcnMgdmFsaWRhdGlvbiAqLwogICAgIGlmICh1bml2ZXJzYWwpIHsKLSAgICAgICAgaWYgKHdyaXRpbmcgfHwgYXBwZW5kaW5nKSB7CisgICAgICAgIGlmIChjcmVhdGluZyB8fCB3cml0aW5nIHx8IGFwcGVuZGluZyB8fCB1cGRhdGluZykgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNhbid0IHVzZSBVIGFuZCB3cml0aW5nIG1vZGUgYXQgb25jZSIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vZGUgVSBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCB4JywgJ3cnLCAnYScsIG9yICcrJyIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQogICAgICAgICBpZiAoUHlFcnJfV2FybkV4KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAiJ1UnIG1vZGUgaXMgZGVwcmVjYXRlZCIsIDEpIDwgMCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgcmVhZGluZyA9IDE7CiAgICAgfQogCiAgICAgaWYgKHRleHQgJiYgYmluYXJ5KSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImNhbid0IGhhdmUgdGV4dCBhbmQgYmluYXJ5IG1vZGUgYXQgb25jZSIpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKICAgICBpZiAoY3JlYXRpbmcgKyByZWFkaW5nICsgd3JpdGluZyArIGFwcGVuZGluZyA+IDEpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIGV4YWN0bHkgb25lIG9mIGNyZWF0ZS9yZWFkL3dyaXRlL2FwcGVuZCBtb2RlIik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KIAogICAgIGlmIChiaW5hcnkgJiYgZW5jb2RpbmcgIT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJiaW5hcnkgbW9kZSBkb2Vzbid0IHRha2UgYW4gZW5jb2RpbmcgYXJndW1lbnQiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogCiAgICAgaWYgKGJpbmFyeSAmJiBlcnJvcnMgIT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJiaW5hcnkgbW9kZSBkb2Vzbid0IHRha2UgYW4gZXJyb3JzIGFyZ3VtZW50Iik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KIAogICAgIGlmIChiaW5hcnkgJiYgbmV3bGluZSAhPSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImJpbmFyeSBtb2RlIGRvZXNuJ3QgdGFrZSBhIG5ld2xpbmUgYXJndW1lbnQiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogCiAgICAgLyogQ3JlYXRlIHRoZSBSYXcgZmlsZSBzdHJlYW0gKi8KLSAgICByYXcgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oKFB5T2JqZWN0ICopJlB5RmlsZUlPX1R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPc2lPIiwgZmlsZSwgcmF3bW9kZSwgY2xvc2VmZCwgb3BlbmVyKTsKKyAgICB7CisgICAgICAgIFB5T2JqZWN0ICpSYXdJT19jbGFzcyA9IChQeU9iamVjdCAqKSZQeUZpbGVJT19UeXBlOworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAgICAgaWYgKCFQeV9MZWdhY3lXaW5kb3dzU3RkaW9GbGFnICYmIF9QeUlPX2dldF9jb25zb2xlX3R5cGUocGF0aF9vcl9mZCkgIT0gJ1wwJykgeworICAgICAgICAgICAgUmF3SU9fY2xhc3MgPSAoUHlPYmplY3QgKikmUHlXaW5kb3dzQ29uc29sZUlPX1R5cGU7CisgICAgICAgICAgICBlbmNvZGluZyA9ICJ1dGYtOCI7CisgICAgICAgIH0KKyNlbmRpZgorICAgICAgICByYXcgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oUmF3SU9fY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT3NpTyIsIHBhdGhfb3JfZmQsIHJhd21vZGUsIGNsb3NlZmQsIG9wZW5lcik7CisgICAgfQorCiAgICAgaWYgKHJhdyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgZ290byBlcnJvcjsKICAgICByZXN1bHQgPSByYXc7CiAKKyAgICBQeV9ERUNSRUYocGF0aF9vcl9mZCk7CisgICAgcGF0aF9vcl9mZCA9IE5VTEw7CisKICAgICBtb2Rlb2JqID0gUHlVbmljb2RlX0Zyb21TdHJpbmcobW9kZSk7CiAgICAgaWYgKG1vZGVvYmogPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKQEAgLTQzNywxMCArNDY1LDEwIEBACiAKICAgICAvKiB3cmFwcyBpbnRvIGEgVGV4dElPV3JhcHBlciAqLwogICAgIHdyYXBwZXIgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oKFB5T2JqZWN0ICopJlB5VGV4dElPV3JhcHBlcl9UeXBlLAotCQkJCSAgICAiT3Nzc2kiLAotCQkJCSAgICBidWZmZXIsCi0JCQkJICAgIGVuY29kaW5nLCBlcnJvcnMsIG5ld2xpbmUsCi0JCQkJICAgIGxpbmVfYnVmZmVyaW5nKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPc3NzaSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZywgZXJyb3JzLCBuZXdsaW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZV9idWZmZXJpbmcpOwogICAgIGlmICh3cmFwcGVyID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgcmVzdWx0ID0gd3JhcHBlcjsKQEAgLTQ2MCw2ICs0ODgsNyBAQAogICAgICAgICBQeV9YREVDUkVGKGNsb3NlX3Jlc3VsdCk7CiAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgIH0KKyAgICBQeV9YREVDUkVGKHBhdGhfb3JfZmQpOwogICAgIFB5X1hERUNSRUYobW9kZW9iaik7CiAgICAgcmV0dXJuIE5VTEw7CiB9CkBAIC02OTEsNiArNzIwLDEyIEBACiAgICAgUHlTdHJpbmdJT19UeXBlLnRwX2Jhc2UgPSAmUHlUZXh0SU9CYXNlX1R5cGU7CiAgICAgQUREX1RZUEUoJlB5U3RyaW5nSU9fVHlwZSwgIlN0cmluZ0lPIik7CiAKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgLyogV2luZG93c0NvbnNvbGVJTyAqLworICAgIFB5V2luZG93c0NvbnNvbGVJT19UeXBlLnRwX2Jhc2UgPSAmUHlSYXdJT0Jhc2VfVHlwZTsKKyAgICBBRERfVFlQRSgmUHlXaW5kb3dzQ29uc29sZUlPX1R5cGUsICJfV2luZG93c0NvbnNvbGVJTyIpOworI2VuZGlmCisKICAgICAvKiBCdWZmZXJlZFJlYWRlciAqLwogICAgIFB5QnVmZmVyZWRSZWFkZXJfVHlwZS50cF9iYXNlID0gJlB5QnVmZmVyZWRJT0Jhc2VfVHlwZTsKICAgICBBRERfVFlQRSgmUHlCdWZmZXJlZFJlYWRlcl9UeXBlLCAiQnVmZmVyZWRSZWFkZXIiKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL19pb21vZHVsZS5oIGIvTW9kdWxlcy9faW8vX2lvbW9kdWxlLmgKaW5kZXggMGM2ZWFlMi4uZGFhZWJkMiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faW8vX2lvbW9kdWxlLmgKKysrIGIvTW9kdWxlcy9faW8vX2lvbW9kdWxlLmgKQEAgLTE5LDYgKzE5LDEzIEBACiBleHRlcm4gUHlUeXBlT2JqZWN0IFB5VGV4dElPV3JhcHBlcl9UeXBlOwogZXh0ZXJuIFB5VHlwZU9iamVjdCBQeUluY3JlbWVudGFsTmV3bGluZURlY29kZXJfVHlwZTsKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorI2lmZGVmIE1TX1dJTkRPV1MKK2V4dGVybiBQeVR5cGVPYmplY3QgUHlXaW5kb3dzQ29uc29sZUlPX1R5cGU7CitQeUFQSV9EQVRBKFB5T2JqZWN0ICopIF9QeVdpbmRvd3NDb25zb2xlSU9fVHlwZTsKKyNkZWZpbmUgUHlXaW5kb3dzQ29uc29sZUlPX0NoZWNrKG9wKSAoUHlPYmplY3RfVHlwZUNoZWNrKChvcCksIChQeVR5cGVPYmplY3QqKV9QeVdpbmRvd3NDb25zb2xlSU9fVHlwZSkpCisjZW5kaWYgLyogTVNfV0lORE9XUyAqLworI2VuZGlmIC8qIFB5X0xJTUlURURfQVBJICovCiAKIGV4dGVybiBpbnQgX1B5SU9fQ29udmVydFNzaXplX3QoUHlPYmplY3QgKiwgdm9pZCAqKTsKIApAQCAtNjAsNyArNjcsNyBAQAogICAgKiBPdGhlcndpc2UsIHRoZSBsaW5lIGVuZGluZyBpcyBzcGVjaWZpZWQgYnkgcmVhZG5sLCBhIHN0ciBvYmplY3QgKi8KIGV4dGVybiBQeV9zc2l6ZV90IF9QeUlPX2ZpbmRfbGluZV9lbmRpbmcoCiAgICAgaW50IHRyYW5zbGF0ZWQsIGludCB1bml2ZXJzYWwsIFB5T2JqZWN0ICpyZWFkbmwsCi0gICAgaW50IGtpbmQsIGNoYXIgKnN0YXJ0LCBjaGFyICplbmQsIFB5X3NzaXplX3QgKmNvbnN1bWVkKTsKKyAgICBpbnQga2luZCwgY29uc3QgY2hhciAqc3RhcnQsIGNvbnN0IGNoYXIgKmVuZCwgUHlfc3NpemVfdCAqY29uc3VtZWQpOwogCiAvKiBSZXR1cm4gMSBpZiBhbiBFbnZpcm9ubWVudEVycm9yIHdpdGggZXJybm8gPT0gRUlOVFIgaXMgc2V0IChhbmQgdGhlbgogICAgY2xlYXJzIHRoZSBlcnJvciBpbmRpY2F0b3IpLCAwIG90aGVyd2lzZS4KQEAgLTg1LDEyICs5MiwxMiBAQAogI2lmZGVmIE1TX1dJTkRPV1MKIAogLyogV2luZG93cyB1c2VzIGxvbmcgbG9uZyBmb3Igb2Zmc2V0cyAqLwotdHlwZWRlZiBQWV9MT05HX0xPTkcgUHlfb2ZmX3Q7Cit0eXBlZGVmIGxvbmcgbG9uZyBQeV9vZmZfdDsKICMgZGVmaW5lIFB5TG9uZ19Bc09mZl90ICAgICBQeUxvbmdfQXNMb25nTG9uZwogIyBkZWZpbmUgUHlMb25nX0Zyb21PZmZfdCAgIFB5TG9uZ19Gcm9tTG9uZ0xvbmcKLSMgZGVmaW5lIFBZX09GRl9UX01BWCAgICAgICBQWV9MTE9OR19NQVgKLSMgZGVmaW5lIFBZX09GRl9UX01JTiAgICAgICBQWV9MTE9OR19NSU4KLSMgZGVmaW5lIFBZX09GRl9UX0NPTVBBVCAgICBQWV9MT05HX0xPTkcgLyogdHlwZSBjb21wYXRpYmxlIHdpdGggb2ZmX3QgKi8KKyMgZGVmaW5lIFBZX09GRl9UX01BWCAgICAgICBMTE9OR19NQVgKKyMgZGVmaW5lIFBZX09GRl9UX01JTiAgICAgICBMTE9OR19NSU4KKyMgZGVmaW5lIFBZX09GRl9UX0NPTVBBVCAgICBsb25nIGxvbmcgICAgLyogdHlwZSBjb21wYXRpYmxlIHdpdGggb2ZmX3QgKi8KICMgZGVmaW5lIFBZX1BSSWRPRkYgICAgICAgICAibGxkIiAgICAgICAgLyogZm9ybWF0IHRvIHVzZSBmb3IgdGhhdCB0eXBlICovCiAKICNlbHNlCkBAIC0xMDQsMTIgKzExMSwxMiBAQAogIyBkZWZpbmUgUFlfT0ZGX1RfTUlOICAgICAgIFBZX1NTSVpFX1RfTUlOCiAjIGRlZmluZSBQWV9PRkZfVF9DT01QQVQgICAgUHlfc3NpemVfdAogIyBkZWZpbmUgUFlfUFJJZE9GRiAgICAgICAgICJ6ZCIKLSNlbGlmIChIQVZFX0xPTkdfTE9ORyAmJiBTSVpFT0ZfT0ZGX1QgPT0gU0laRU9GX0xPTkdfTE9ORykKKyNlbGlmIChTSVpFT0ZfT0ZGX1QgPT0gU0laRU9GX0xPTkdfTE9ORykKICMgZGVmaW5lIFB5TG9uZ19Bc09mZl90ICAgICBQeUxvbmdfQXNMb25nTG9uZwogIyBkZWZpbmUgUHlMb25nX0Zyb21PZmZfdCAgIFB5TG9uZ19Gcm9tTG9uZ0xvbmcKLSMgZGVmaW5lIFBZX09GRl9UX01BWCAgICAgICBQWV9MTE9OR19NQVgKLSMgZGVmaW5lIFBZX09GRl9UX01JTiAgICAgICBQWV9MTE9OR19NSU4KLSMgZGVmaW5lIFBZX09GRl9UX0NPTVBBVCAgICBQWV9MT05HX0xPTkcKKyMgZGVmaW5lIFBZX09GRl9UX01BWCAgICAgICBMTE9OR19NQVgKKyMgZGVmaW5lIFBZX09GRl9UX01JTiAgICAgICBMTE9OR19NSU4KKyMgZGVmaW5lIFBZX09GRl9UX0NPTVBBVCAgICBsb25nIGxvbmcKICMgZGVmaW5lIFBZX1BSSWRPRkYgICAgICAgICAibGxkIgogI2VsaWYgKFNJWkVPRl9PRkZfVCA9PSBTSVpFT0ZfTE9ORykKICMgZGVmaW5lIFB5TG9uZ19Bc09mZl90ICAgICBQeUxvbmdfQXNMb25nCkBAIC0xNDUsNiArMTUyLDEwIEBACiBleHRlcm4gX1B5SU9fU3RhdGUgKl9QeUlPX2dldF9tb2R1bGVfc3RhdGUodm9pZCk7CiBleHRlcm4gUHlPYmplY3QgKl9QeUlPX2dldF9sb2NhbGVfbW9kdWxlKF9QeUlPX1N0YXRlICopOwogCisjaWZkZWYgTVNfV0lORE9XUworZXh0ZXJuIGNoYXIgX1B5SU9fZ2V0X2NvbnNvbGVfdHlwZShQeU9iamVjdCAqKTsKKyNlbmRpZgorCiBleHRlcm4gUHlPYmplY3QgKl9QeUlPX3N0cl9jbG9zZTsKIGV4dGVybiBQeU9iamVjdCAqX1B5SU9fc3RyX2Nsb3NlZDsKIGV4dGVybiBQeU9iamVjdCAqX1B5SU9fc3RyX2RlY29kZTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2J1ZmZlcmVkaW8uYyBiL01vZHVsZXMvX2lvL2J1ZmZlcmVkaW8uYwppbmRleCA2ZDY3NzUxLi5jYmU3NDI1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9idWZmZXJlZGlvLmMKKysrIGIvTW9kdWxlcy9faW8vYnVmZmVyZWRpby5jCkBAIC02NTksNyArNjU5LDcgQEAKIAogLyogU2V0cyB0aGUgY3VycmVudCBlcnJvciB0byBCbG9ja2luZ0lPRXJyb3IgKi8KIHN0YXRpYyB2b2lkCi1fc2V0X0Jsb2NraW5nSU9FcnJvcihjaGFyICptc2csIFB5X3NzaXplX3Qgd3JpdHRlbikKK19zZXRfQmxvY2tpbmdJT0Vycm9yKGNvbnN0IGNoYXIgKm1zZywgUHlfc3NpemVfdCB3cml0dGVuKQogewogICAgIFB5T2JqZWN0ICplcnI7CiAgICAgUHlFcnJfQ2xlYXIoKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2J5dGVzaW8uYyBiL01vZHVsZXMvX2lvL2J5dGVzaW8uYwppbmRleCA5ZTVkNzhiLi5hMWJhMTIxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9ieXRlc2lvLmMKKysrIGIvTW9kdWxlcy9faW8vYnl0ZXNpby5jCkBAIC04Nyw3ICs4Nyw3IEBACiBzdGF0aWMgaW50CiB1bnNoYXJlX2J1ZmZlcihieXRlc2lvICpzZWxmLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICBQeU9iamVjdCAqbmV3X2J1ZiwgKm9sZF9idWY7CisgICAgUHlPYmplY3QgKm5ld19idWY7CiAgICAgYXNzZXJ0KFNIQVJFRF9CVUYoc2VsZikpOwogICAgIGFzc2VydChzZWxmLT5leHBvcnRzID09IDApOwogICAgIGFzc2VydChzaXplID49IChzaXplX3Qpc2VsZi0+c3RyaW5nX3NpemUpOwpAQCAtOTYsOSArOTYsNyBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgbWVtY3B5KFB5Qnl0ZXNfQVNfU1RSSU5HKG5ld19idWYpLCBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5idWYpLAogICAgICAgICAgICBzZWxmLT5zdHJpbmdfc2l6ZSk7Ci0gICAgb2xkX2J1ZiA9IHNlbGYtPmJ1ZjsKLSAgICBzZWxmLT5idWYgPSBuZXdfYnVmOwotICAgIFB5X0RFQ1JFRihvbGRfYnVmKTsKKyAgICBQeV9TRVRSRUYoc2VsZi0+YnVmLCBuZXdfYnVmKTsKICAgICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vY2xpbmljL19pb21vZHVsZS5jLmggYi9Nb2R1bGVzL19pby9jbGluaWMvX2lvbW9kdWxlLmMuaAppbmRleCA2Yzg4ZTMyLi5mMmU5MWE5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9jbGluaWMvX2lvbW9kdWxlLmMuaAorKysgYi9Nb2R1bGVzL19pby9jbGluaWMvX2lvbW9kdWxlLmMuaApAQCAtMTI3LDcgKzEyNyw3IEBACiAib3BlbmVkIGluIGEgYmluYXJ5IG1vZGUuIik7CiAKICNkZWZpbmUgX0lPX09QRU5fTUVUSE9EREVGICAgIFwKLSAgICB7Im9wZW4iLCAoUHlDRnVuY3Rpb24pX2lvX29wZW4sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfaW9fb3Blbl9fZG9jX199LAorICAgIHsib3BlbiIsIChQeUNGdW5jdGlvbilfaW9fb3BlbiwgTUVUSF9GQVNUQ0FMTCwgX2lvX29wZW5fX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9pb19vcGVuX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmZpbGUsIGNvbnN0IGNoYXIgKm1vZGUsCkBAIC0xMzUsMTAgKzEzNSwxMSBAQAogICAgICAgICAgICAgICBjb25zdCBjaGFyICpuZXdsaW5lLCBpbnQgY2xvc2VmZCwgUHlPYmplY3QgKm9wZW5lcik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1faW9fb3BlbihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19pb19vcGVuKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJmaWxlIiwgIm1vZGUiLCAiYnVmZmVyaW5nIiwgImVuY29kaW5nIiwgImVycm9ycyIsICJuZXdsaW5lIiwgImNsb3NlZmQiLCAib3BlbmVyIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZmlsZSIsICJtb2RlIiwgImJ1ZmZlcmluZyIsICJlbmNvZGluZyIsICJlcnJvcnMiLCAibmV3bGluZSIsICJjbG9zZWZkIiwgIm9wZW5lciIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98c2l6enppTzpvcGVuIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqZmlsZTsKICAgICBjb25zdCBjaGFyICptb2RlID0gInIiOwogICAgIGludCBidWZmZXJpbmcgPSAtMTsKQEAgLTE0OCwxMiArMTQ5LDEzIEBACiAgICAgaW50IGNsb3NlZmQgPSAxOwogICAgIFB5T2JqZWN0ICpvcGVuZXIgPSBQeV9Ob25lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xzaXp6emlPOm9wZW4iLCBfa2V5d29yZHMsCi0gICAgICAgICZmaWxlLCAmbW9kZSwgJmJ1ZmZlcmluZywgJmVuY29kaW5nLCAmZXJyb3JzLCAmbmV3bGluZSwgJmNsb3NlZmQsICZvcGVuZXIpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZmlsZSwgJm1vZGUsICZidWZmZXJpbmcsICZlbmNvZGluZywgJmVycm9ycywgJm5ld2xpbmUsICZjbG9zZWZkLCAmb3BlbmVyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19vcGVuX2ltcGwobW9kdWxlLCBmaWxlLCBtb2RlLCBidWZmZXJpbmcsIGVuY29kaW5nLCBlcnJvcnMsIG5ld2xpbmUsIGNsb3NlZmQsIG9wZW5lcik7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iYzJjMDAzY2I3ZGFlYWZlIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jNWI4ZmM4YjgzMTAyYmJmIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2NsaW5pYy9idWZmZXJlZGlvLmMuaCBiL01vZHVsZXMvX2lvL2NsaW5pYy9idWZmZXJlZGlvLmMuaAppbmRleCA0MzdlMjc1Li41ODE0NGE0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9jbGluaWMvYnVmZmVyZWRpby5jLmgKKysrIGIvTW9kdWxlcy9faW8vY2xpbmljL2J1ZmZlcmVkaW8uYy5oCkBAIC0xOSwxNCArMTksMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgYnVmZmVyID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ3KjpyZWFkaW50byIsICZidWZmZXIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAidyo6cmVhZGludG8iLCAmYnVmZmVyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19fQnVmZmVyZWRJT0Jhc2VfcmVhZGludG9faW1wbChzZWxmLCAmYnVmZmVyKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBidWZmZXIgKi8KLSAgICBpZiAoYnVmZmVyLm9iaikKKyAgICBpZiAoYnVmZmVyLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTQ4LDE0ICs1MCwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBidWZmZXIgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIncqOnJlYWRpbnRvMSIsICZidWZmZXIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAidyo6cmVhZGludG8xIiwgJmJ1ZmZlcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fX0J1ZmZlcmVkSU9CYXNlX3JlYWRpbnRvMV9pbXBsKHNlbGYsICZidWZmZXIpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLwotICAgIGlmIChidWZmZXIub2JqKQorICAgIGlmIChidWZmZXIub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtOTksOCArMTAzLDkgQEAKICAgICBQeV9zc2l6ZV90IHNpemUgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8bjpwZWVrIiwKLSAgICAgICAgJnNpemUpKQorICAgICAgICAmc2l6ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fX0J1ZmZlcmVkX3BlZWtfaW1wbChzZWxmLCBzaXplKTsKIAogZXhpdDoKQEAgLTEyNSw4ICsxMzAsOSBAQAogICAgIFB5X3NzaXplX3QgbiA9IC0xOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TyY6cmVhZCIsCi0gICAgICAgIF9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmbikpCisgICAgICAgIF9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmbikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fX0J1ZmZlcmVkX3JlYWRfaW1wbChzZWxmLCBuKTsKIAogZXhpdDoKQEAgLTE1MCw4ICsxNTYsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X3NzaXplX3QgbjsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAibjpyZWFkMSIsICZuKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIm46cmVhZDEiLCAmbikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fX0J1ZmZlcmVkX3JlYWQxX2ltcGwoc2VsZiwgbik7CiAKIGV4aXQ6CkBAIC0xNzUsMTQgKzE4MiwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBidWZmZXIgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIncqOnJlYWRpbnRvIiwgJmJ1ZmZlcikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ3KjpyZWFkaW50byIsICZidWZmZXIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19CdWZmZXJlZF9yZWFkaW50b19pbXBsKHNlbGYsICZidWZmZXIpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLwotICAgIGlmIChidWZmZXIub2JqKQorICAgIGlmIChidWZmZXIub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMjA0LDE0ICsyMTMsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgYnVmZmVyID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ3KjpyZWFkaW50bzEiLCAmYnVmZmVyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIncqOnJlYWRpbnRvMSIsICZidWZmZXIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19CdWZmZXJlZF9yZWFkaW50bzFfaW1wbChzZWxmLCAmYnVmZmVyKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBidWZmZXIgKi8KLSAgICBpZiAoYnVmZmVyLm9iaikKKyAgICBpZiAoYnVmZmVyLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTIzNCw4ICsyNDUsOSBAQAogICAgIFB5X3NzaXplX3Qgc2l6ZSA9IC0xOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TyY6cmVhZGxpbmUiLAotICAgICAgICBfUHlJT19Db252ZXJ0U3NpemVfdCwgJnNpemUpKQorICAgICAgICBfUHlJT19Db252ZXJ0U3NpemVfdCwgJnNpemUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19CdWZmZXJlZF9yZWFkbGluZV9pbXBsKHNlbGYsIHNpemUpOwogCiBleGl0OgpAQCAtMjYxLDggKzI3Myw5IEBACiAgICAgaW50IHdoZW5jZSA9IDA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98aTpzZWVrIiwKLSAgICAgICAgJnRhcmdldG9iaiwgJndoZW5jZSkpCisgICAgICAgICZ0YXJnZXRvYmosICZ3aGVuY2UpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19CdWZmZXJlZF9zZWVrX2ltcGwoc2VsZiwgdGFyZ2V0b2JqLCB3aGVuY2UpOwogCiBleGl0OgpAQCAtMjg4LDggKzMwMSw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJ0cnVuY2F0ZSIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZwb3MpKQorICAgICAgICAmcG9zKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19fQnVmZmVyZWRfdHJ1bmNhdGVfaW1wbChzZWxmLCBwb3MpOwogCiBleGl0OgpAQCAtMzEwLDEzICszMjQsMTUgQEAKIF9pb19CdWZmZXJlZFJlYWRlcl9fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CiAgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicmF3IiwgImJ1ZmZlcl9zaXplIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicmF3IiwgImJ1ZmZlcl9zaXplIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3xuOkJ1ZmZlcmVkUmVhZGVyIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqcmF3OwogICAgIFB5X3NzaXplX3QgYnVmZmVyX3NpemUgPSBERUZBVUxUX0JVRkZFUl9TSVpFOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xuOkJ1ZmZlcmVkUmVhZGVyIiwgX2tleXdvcmRzLAotICAgICAgICAmcmF3LCAmYnVmZmVyX3NpemUpKQorICAgIGlmICghX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoYXJncywga3dhcmdzLCAmX3BhcnNlciwKKyAgICAgICAgJnJhdywgJmJ1ZmZlcl9zaXplKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19CdWZmZXJlZFJlYWRlcl9fX2luaXRfX19pbXBsKChidWZmZXJlZCAqKXNlbGYsIHJhdywgYnVmZmVyX3NpemUpOwogCiBleGl0OgpAQCAtMzQxLDEzICszNTcsMTUgQEAKIF9pb19CdWZmZXJlZFdyaXRlcl9fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CiAgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicmF3IiwgImJ1ZmZlcl9zaXplIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicmF3IiwgImJ1ZmZlcl9zaXplIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3xuOkJ1ZmZlcmVkV3JpdGVyIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqcmF3OwogICAgIFB5X3NzaXplX3QgYnVmZmVyX3NpemUgPSBERUZBVUxUX0JVRkZFUl9TSVpFOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xuOkJ1ZmZlcmVkV3JpdGVyIiwgX2tleXdvcmRzLAotICAgICAgICAmcmF3LCAmYnVmZmVyX3NpemUpKQorICAgIGlmICghX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoYXJncywga3dhcmdzLCAmX3BhcnNlciwKKyAgICAgICAgJnJhdywgJmJ1ZmZlcl9zaXplKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19CdWZmZXJlZFdyaXRlcl9fX2luaXRfX19pbXBsKChidWZmZXJlZCAqKXNlbGYsIHJhdywgYnVmZmVyX3NpemUpOwogCiBleGl0OgpAQCAtMzcxLDE0ICszODksMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgYnVmZmVyID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjp3cml0ZSIsICZidWZmZXIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6d3JpdGUiLCAmYnVmZmVyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19CdWZmZXJlZFdyaXRlcl93cml0ZV9pbXBsKHNlbGYsICZidWZmZXIpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLwotICAgIGlmIChidWZmZXIub2JqKQorICAgIGlmIChidWZmZXIub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNDEwLDExICs0MzAsMTMgQEAKICAgICBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplID0gREVGQVVMVF9CVUZGRVJfU0laRTsKIAogICAgIGlmICgoUHlfVFlQRShzZWxmKSA9PSAmUHlCdWZmZXJlZFJXUGFpcl9UeXBlKSAmJgotICAgICAgICAhX1B5QXJnX05vS2V5d29yZHMoIkJ1ZmZlcmVkUldQYWlyIiwga3dhcmdzKSkKKyAgICAgICAgIV9QeUFyZ19Ob0tleXdvcmRzKCJCdWZmZXJlZFJXUGFpciIsIGt3YXJncykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9PfG46QnVmZmVyZWRSV1BhaXIiLAotICAgICAgICAmcmVhZGVyLCAmd3JpdGVyLCAmYnVmZmVyX3NpemUpKQorICAgICAgICAmcmVhZGVyLCAmd3JpdGVyLCAmYnVmZmVyX3NpemUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0J1ZmZlcmVkUldQYWlyX19faW5pdF9fX2ltcGwoKHJ3cGFpciAqKXNlbGYsIHJlYWRlciwgd3JpdGVyLCBidWZmZXJfc2l6ZSk7CiAKIGV4aXQ6CkBAIC00MzksMTYgKzQ2MSwxOCBAQAogX2lvX0J1ZmZlcmVkUmFuZG9tX19faW5pdF9fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICBpbnQgcmV0dXJuX3ZhbHVlID0gLTE7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJyYXciLCAiYnVmZmVyX3NpemUiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJyYXciLCAiYnVmZmVyX3NpemUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPfG46QnVmZmVyZWRSYW5kb20iLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpyYXc7CiAgICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSA9IERFRkFVTFRfQlVGRkVSX1NJWkU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfG46QnVmZmVyZWRSYW5kb20iLCBfa2V5d29yZHMsCi0gICAgICAgICZyYXcsICZidWZmZXJfc2l6ZSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChhcmdzLCBrd2FyZ3MsICZfcGFyc2VyLAorICAgICAgICAmcmF3LCAmYnVmZmVyX3NpemUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0J1ZmZlcmVkUmFuZG9tX19faW5pdF9fX2ltcGwoKGJ1ZmZlcmVkICopc2VsZiwgcmF3LCBidWZmZXJfc2l6ZSk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yYmJiNWUyMzliNGZmZTZmIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hOTU2ZjM5NGVjZGU0Y2Y5IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2NsaW5pYy9ieXRlc2lvLmMuaCBiL01vZHVsZXMvX2lvL2NsaW5pYy9ieXRlc2lvLmMuaAppbmRleCA1ZjJhYmIwLi5jNjRjZTVjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9jbGluaWMvYnl0ZXNpby5jLmgKKysrIGIvTW9kdWxlcy9faW8vY2xpbmljL2J5dGVzaW8uYy5oCkBAIC0xNzEsOCArMTcxLDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInJlYWQiLAogICAgICAgICAwLCAxLAotICAgICAgICAmYXJnKSkKKyAgICAgICAgJmFyZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fQnl0ZXNJT19yZWFkX2ltcGwoc2VsZiwgYXJnKTsKIAogZXhpdDoKQEAgLTIxNSw4ICsyMTYsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicmVhZGxpbmUiLAogICAgICAgICAwLCAxLAotICAgICAgICAmYXJnKSkKKyAgICAgICAgJmFyZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fQnl0ZXNJT19yZWFkbGluZV9pbXBsKHNlbGYsIGFyZyk7CiAKIGV4aXQ6CkBAIC0yNDcsOCArMjQ5LDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInJlYWRsaW5lcyIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZhcmcpKQorICAgICAgICAmYXJnKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19CeXRlc0lPX3JlYWRsaW5lc19pbXBsKHNlbGYsIGFyZyk7CiAKIGV4aXQ6CkBAIC0yNzYsMTQgKzI3OSwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBidWZmZXIgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIncqOnJlYWRpbnRvIiwgJmJ1ZmZlcikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ3KjpyZWFkaW50byIsICZidWZmZXIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0J5dGVzSU9fcmVhZGludG9faW1wbChzZWxmLCAmYnVmZmVyKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBidWZmZXIgKi8KLSAgICBpZiAoYnVmZmVyLm9iaikKKyAgICBpZiAoYnVmZmVyLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTMxMSw4ICszMTYsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAidHJ1bmNhdGUiLAogICAgICAgICAwLCAxLAotICAgICAgICAmYXJnKSkKKyAgICAgICAgJmFyZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fQnl0ZXNJT190cnVuY2F0ZV9pbXBsKHNlbGYsIGFyZyk7CiAKIGV4aXQ6CkBAIC0zNDUsOCArMzUxLDkgQEAKICAgICBpbnQgd2hlbmNlID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibnxpOnNlZWsiLAotICAgICAgICAmcG9zLCAmd2hlbmNlKSkKKyAgICAgICAgJnBvcywgJndoZW5jZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fQnl0ZXNJT19zZWVrX2ltcGwoc2VsZiwgcG9zLCB3aGVuY2UpOwogCiBleGl0OgpAQCAtNDA4LDE1ICs0MTUsMTcgQEAKIF9pb19CeXRlc0lPX19faW5pdF9fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICBpbnQgcmV0dXJuX3ZhbHVlID0gLTE7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJpbml0aWFsX2J5dGVzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiaW5pdGlhbF9ieXRlcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPOkJ5dGVzSU8iLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICppbml0dmFsdWUgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE86Qnl0ZXNJTyIsIF9rZXl3b3JkcywKLSAgICAgICAgJmluaXR2YWx1ZSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChhcmdzLCBrd2FyZ3MsICZfcGFyc2VyLAorICAgICAgICAmaW5pdHZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19CeXRlc0lPX19faW5pdF9fX2ltcGwoKGJ5dGVzaW8gKilzZWxmLCBpbml0dmFsdWUpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjBjZTJjNjI3MjcxODQzMSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjM4MmU4ZWI1NzhlZWE2NCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9jbGluaWMvZmlsZWlvLmMuaCBiL01vZHVsZXMvX2lvL2NsaW5pYy9maWxlaW8uYy5oCmluZGV4IDEwNDIwMDguLjkwOGZlMGYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL2NsaW5pYy9maWxlaW8uYy5oCisrKyBiL01vZHVsZXMvX2lvL2NsaW5pYy9maWxlaW8uYy5oCkBAIC00OSwxNSArNDksMTcgQEAKIF9pb19GaWxlSU9fX19pbml0X18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewogICAgIGludCByZXR1cm5fdmFsdWUgPSAtMTsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImZpbGUiLCAibW9kZSIsICJjbG9zZWZkIiwgIm9wZW5lciIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImZpbGUiLCAibW9kZSIsICJjbG9zZWZkIiwgIm9wZW5lciIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98c2lPOkZpbGVJTyIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKm5hbWVvYmo7CiAgICAgY29uc3QgY2hhciAqbW9kZSA9ICJyIjsKICAgICBpbnQgY2xvc2VmZCA9IDE7CiAgICAgUHlPYmplY3QgKm9wZW5lciA9IFB5X05vbmU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfHNpTzpGaWxlSU8iLCBfa2V5d29yZHMsCi0gICAgICAgICZuYW1lb2JqLCAmbW9kZSwgJmNsb3NlZmQsICZvcGVuZXIpKQorICAgIGlmICghX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoYXJncywga3dhcmdzLCAmX3BhcnNlciwKKyAgICAgICAgJm5hbWVvYmosICZtb2RlLCAmY2xvc2VmZCwgJm9wZW5lcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fRmlsZUlPX19faW5pdF9fX2ltcGwoKGZpbGVpbyAqKXNlbGYsIG5hbWVvYmosIG1vZGUsIGNsb3NlZmQsIG9wZW5lcik7CiAKIGV4aXQ6CkBAIC0xNTQsMTQgKzE1NiwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBidWZmZXIgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIncqOnJlYWRpbnRvIiwgJmJ1ZmZlcikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ3KjpyZWFkaW50byIsICZidWZmZXIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0ZpbGVJT19yZWFkaW50b19pbXBsKHNlbGYsICZidWZmZXIpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLwotICAgIGlmIChidWZmZXIub2JqKQorICAgIGlmIChidWZmZXIub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMjEwLDggKzIxNCw5IEBACiAgICAgUHlfc3NpemVfdCBzaXplID0gLTE7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPJjpyZWFkIiwKLSAgICAgICAgX1B5SU9fQ29udmVydFNzaXplX3QsICZzaXplKSkKKyAgICAgICAgX1B5SU9fQ29udmVydFNzaXplX3QsICZzaXplKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19GaWxlSU9fcmVhZF9pbXBsKHNlbGYsIHNpemUpOwogCiBleGl0OgpAQCAtMjQwLDE0ICsyNDUsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgYiA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6d3JpdGUiLCAmYikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjp3cml0ZSIsICZiKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19GaWxlSU9fd3JpdGVfaW1wbChzZWxmLCAmYik7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgYiAqLwotICAgIGlmIChiLm9iaikKKyAgICBpZiAoYi5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZiKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMjgwLDggKzI4Nyw5IEBACiAgICAgaW50IHdoZW5jZSA9IDA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98aTpzZWVrIiwKLSAgICAgICAgJnBvcywgJndoZW5jZSkpCisgICAgICAgICZwb3MsICZ3aGVuY2UpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0ZpbGVJT19zZWVrX2ltcGwoc2VsZiwgcG9zLCB3aGVuY2UpOwogCiBleGl0OgpAQCAtMzMzLDggKzM0MSw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJ0cnVuY2F0ZSIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZwb3NvYmopKQorICAgICAgICAmcG9zb2JqKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19GaWxlSU9fdHJ1bmNhdGVfaW1wbChzZWxmLCBwb3NvYmopOwogCiBleGl0OgpAQCAtMzY0LDQgKzM3Myw0IEBACiAjaWZuZGVmIF9JT19GSUxFSU9fVFJVTkNBVEVfTUVUSE9EREVGCiAgICAgI2RlZmluZSBfSU9fRklMRUlPX1RSVU5DQVRFX01FVEhPRERFRgogI2VuZGlmIC8qICFkZWZpbmVkKF9JT19GSUxFSU9fVFJVTkNBVEVfTUVUSE9EREVGKSAqLwotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRjYmMzOWI0NjY1OTg0OTIgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTUxOTI0YmMwZWUxMWQ1OGUgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vY2xpbmljL2lvYmFzZS5jLmggYi9Nb2R1bGVzL19pby9jbGluaWMvaW9iYXNlLmMuaAppbmRleCA5NzYyZjExLi5lZGJmNzNhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9jbGluaWMvaW9iYXNlLmMuaAorKysgYi9Nb2R1bGVzL19pby9jbGluaWMvaW9iYXNlLmMuaApAQCAtMTg2LDggKzE4Niw5IEBACiAgICAgUHlfc3NpemVfdCBsaW1pdCA9IC0xOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TyY6cmVhZGxpbmUiLAotICAgICAgICBfUHlJT19Db252ZXJ0U3NpemVfdCwgJmxpbWl0KSkKKyAgICAgICAgX1B5SU9fQ29udmVydFNzaXplX3QsICZsaW1pdCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fX0lPQmFzZV9yZWFkbGluZV9pbXBsKHNlbGYsIGxpbWl0KTsKIAogZXhpdDoKQEAgLTIxNyw4ICsyMTgsOSBAQAogICAgIFB5X3NzaXplX3QgaGludCA9IC0xOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TyY6cmVhZGxpbmVzIiwKLSAgICAgICAgX1B5SU9fQ29udmVydFNzaXplX3QsICZoaW50KSkKKyAgICAgICAgX1B5SU9fQ29udmVydFNzaXplX3QsICZoaW50KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19fSU9CYXNlX3JlYWRsaW5lc19pbXBsKHNlbGYsIGhpbnQpOwogCiBleGl0OgpAQCAtMjUxLDggKzI1Myw5IEBACiAgICAgUHlfc3NpemVfdCBuID0gLTE7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxuOnJlYWQiLAotICAgICAgICAmbikpCisgICAgICAgICZuKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19fUmF3SU9CYXNlX3JlYWRfaW1wbChzZWxmLCBuKTsKIAogZXhpdDoKQEAgLTI3Niw0ICsyNzksNCBAQAogewogICAgIHJldHVybiBfaW9fX1Jhd0lPQmFzZV9yZWFkYWxsX2ltcGwoc2VsZik7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Yjg3NDk1MmY1Y2MyNDhhNCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGY1M2ZlZDkyOGQ4ZTAyZiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9jbGluaWMvc3RyaW5naW8uYy5oIGIvTW9kdWxlcy9faW8vY2xpbmljL3N0cmluZ2lvLmMuaAppbmRleCBhOGUzMmEzLi5kMmMwNWQ3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9jbGluaWMvc3RyaW5naW8uYy5oCisrKyBiL01vZHVsZXMvX2lvL2NsaW5pYy9zdHJpbmdpby5jLmgKQEAgLTYxLDggKzYxLDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInJlYWQiLAogICAgICAgICAwLCAxLAotICAgICAgICAmYXJnKSkKKyAgICAgICAgJmFyZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fU3RyaW5nSU9fcmVhZF9pbXBsKHNlbGYsIGFyZyk7CiAKIGV4aXQ6CkBAIC05MSw4ICs5Miw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJyZWFkbGluZSIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZhcmcpKQorICAgICAgICAmYXJnKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19TdHJpbmdJT19yZWFkbGluZV9pbXBsKHNlbGYsIGFyZyk7CiAKIGV4aXQ6CkBAIC0xMjMsOCArMTI1LDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInRydW5jYXRlIiwKICAgICAgICAgMCwgMSwKLSAgICAgICAgJmFyZykpCisgICAgICAgICZhcmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX1N0cmluZ0lPX3RydW5jYXRlX2ltcGwoc2VsZiwgYXJnKTsKIAogZXhpdDoKQEAgLTE1Nyw4ICsxNjAsOSBAQAogICAgIGludCB3aGVuY2UgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJufGk6c2VlayIsCi0gICAgICAgICZwb3MsICZ3aGVuY2UpKQorICAgICAgICAmcG9zLCAmd2hlbmNlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19TdHJpbmdJT19zZWVrX2ltcGwoc2VsZiwgcG9zLCB3aGVuY2UpOwogCiBleGl0OgpAQCAtMjE3LDEzICsyMjEsMTUgQEAKIF9pb19TdHJpbmdJT19fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CiAgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiaW5pdGlhbF92YWx1ZSIsICJuZXdsaW5lIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiaW5pdGlhbF92YWx1ZSIsICJuZXdsaW5lIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE9POlN0cmluZ0lPIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqdmFsdWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpuZXdsaW5lX29iaiA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8T086U3RyaW5nSU8iLCBfa2V5d29yZHMsCi0gICAgICAgICZ2YWx1ZSwgJm5ld2xpbmVfb2JqKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KGFyZ3MsIGt3YXJncywgJl9wYXJzZXIsCisgICAgICAgICZ2YWx1ZSwgJm5ld2xpbmVfb2JqKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19TdHJpbmdJT19fX2luaXRfX19pbXBsKChzdHJpbmdpbyAqKXNlbGYsIHZhbHVlLCBuZXdsaW5lX29iaik7CiAKIGV4aXQ6CkBAIC0yODMsNCArMjg5LDQgQEAKIHsKICAgICByZXR1cm4gX2lvX1N0cmluZ0lPX3NlZWthYmxlX2ltcGwoc2VsZik7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjA2MWNmM2EyMGNkMTRlZCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWRkNWMyYTIxM2U3NTQwNSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9jbGluaWMvdGV4dGlvLmMuaCBiL01vZHVsZXMvX2lvL2NsaW5pYy90ZXh0aW8uYy5oCmluZGV4IGRjN2U4YzcuLmYzOWMzNTUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL2NsaW5pYy90ZXh0aW8uYy5oCisrKyBiL01vZHVsZXMvX2lvL2NsaW5pYy90ZXh0aW8uYy5oCkBAIC0yNCwxNCArMjQsMTYgQEAKIF9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX19faW5pdF9fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICBpbnQgcmV0dXJuX3ZhbHVlID0gLTE7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJkZWNvZGVyIiwgInRyYW5zbGF0ZSIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJkZWNvZGVyIiwgInRyYW5zbGF0ZSIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPaXxPOkluY3JlbWVudGFsTmV3bGluZURlY29kZXIiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpkZWNvZGVyOwogICAgIGludCB0cmFuc2xhdGU7CiAgICAgUHlPYmplY3QgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPaXxPOkluY3JlbWVudGFsTmV3bGluZURlY29kZXIiLCBfa2V5d29yZHMsCi0gICAgICAgICZkZWNvZGVyLCAmdHJhbnNsYXRlLCAmZXJyb3JzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KGFyZ3MsIGt3YXJncywgJl9wYXJzZXIsCisgICAgICAgICZkZWNvZGVyLCAmdHJhbnNsYXRlLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX19faW5pdF9fX2ltcGwoKG5sZGVjb2Rlcl9vYmplY3QgKilzZWxmLCBkZWNvZGVyLCB0cmFuc2xhdGUsIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC00NCwyMyArNDYsMjUgQEAKICJcbiIpOwogCiAjZGVmaW5lIF9JT19JTkNSRU1FTlRBTE5FV0xJTkVERUNPREVSX0RFQ09ERV9NRVRIT0RERUYgICAgXAotICAgIHsiZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX2RlY29kZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX2RlY29kZV9fZG9jX199LAorICAgIHsiZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX2RlY29kZSwgTUVUSF9GQVNUQ0FMTCwgX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfZGVjb2RlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9kZWNvZGVfaW1wbChubGRlY29kZXJfb2JqZWN0ICpzZWxmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmlucHV0LCBpbnQgZmluYWwpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfZGVjb2RlKG5sZGVjb2Rlcl9vYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfZGVjb2RlKG5sZGVjb2Rlcl9vYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJpbnB1dCIsICJmaW5hbCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImlucHV0IiwgImZpbmFsIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3xpOmRlY29kZSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKmlucHV0OwogICAgIGludCBmaW5hbCA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfGk6ZGVjb2RlIiwgX2tleXdvcmRzLAotICAgICAgICAmaW5wdXQsICZmaW5hbCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZpbnB1dCwgJmZpbmFsKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX2RlY29kZV9pbXBsKHNlbGYsIGlucHV0LCBmaW5hbCk7CiAKIGV4aXQ6CkBAIC0xNTMsNyArMTU3LDggQEAKIF9pb19UZXh0SU9XcmFwcGVyX19faW5pdF9fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICBpbnQgcmV0dXJuX3ZhbHVlID0gLTE7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJidWZmZXIiLCAiZW5jb2RpbmciLCAiZXJyb3JzIiwgIm5ld2xpbmUiLCAibGluZV9idWZmZXJpbmciLCAid3JpdGVfdGhyb3VnaCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImJ1ZmZlciIsICJlbmNvZGluZyIsICJlcnJvcnMiLCAibmV3bGluZSIsICJsaW5lX2J1ZmZlcmluZyIsICJ3cml0ZV90aHJvdWdoIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3x6enppaTpUZXh0SU9XcmFwcGVyIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqYnVmZmVyOwogICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nID0gTlVMTDsKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwpAQCAtMTYxLDkgKzE2NiwxMCBAQAogICAgIGludCBsaW5lX2J1ZmZlcmluZyA9IDA7CiAgICAgaW50IHdyaXRlX3Rocm91Z2ggPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3x6enppaTpUZXh0SU9XcmFwcGVyIiwgX2tleXdvcmRzLAotICAgICAgICAmYnVmZmVyLCAmZW5jb2RpbmcsICZlcnJvcnMsICZuZXdsaW5lLCAmbGluZV9idWZmZXJpbmcsICZ3cml0ZV90aHJvdWdoKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KGFyZ3MsIGt3YXJncywgJl9wYXJzZXIsCisgICAgICAgICZidWZmZXIsICZlbmNvZGluZywgJmVycm9ycywgJm5ld2xpbmUsICZsaW5lX2J1ZmZlcmluZywgJndyaXRlX3Rocm91Z2gpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX1RleHRJT1dyYXBwZXJfX19pbml0X19faW1wbCgodGV4dGlvICopc2VsZiwgYnVmZmVyLCBlbmNvZGluZywgZXJyb3JzLCBuZXdsaW5lLCBsaW5lX2J1ZmZlcmluZywgd3JpdGVfdGhyb3VnaCk7CiAKIGV4aXQ6CkBAIC0yMDQsOCArMjEwLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeU9iamVjdCAqdGV4dDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTp3cml0ZSIsICZ0ZXh0KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6d3JpdGUiLCAmdGV4dCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fVGV4dElPV3JhcHBlcl93cml0ZV9pbXBsKHNlbGYsIHRleHQpOwogCiBleGl0OgpAQCAtMjMwLDggKzIzNyw5IEBACiAgICAgUHlfc3NpemVfdCBuID0gLTE7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPJjpyZWFkIiwKLSAgICAgICAgX1B5SU9fQ29udmVydFNzaXplX3QsICZuKSkKKyAgICAgICAgX1B5SU9fQ29udmVydFNzaXplX3QsICZuKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19UZXh0SU9XcmFwcGVyX3JlYWRfaW1wbChzZWxmLCBuKTsKIAogZXhpdDoKQEAgLTI1Niw4ICsyNjQsOSBAQAogICAgIFB5X3NzaXplX3Qgc2l6ZSA9IC0xOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8bjpyZWFkbGluZSIsCi0gICAgICAgICZzaXplKSkKKyAgICAgICAgJnNpemUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX1RleHRJT1dyYXBwZXJfcmVhZGxpbmVfaW1wbChzZWxmLCBzaXplKTsKIAogZXhpdDoKQEAgLTI4Myw4ICsyOTIsOSBAQAogICAgIGludCB3aGVuY2UgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfGk6c2VlayIsCi0gICAgICAgICZjb29raWVPYmosICZ3aGVuY2UpKQorICAgICAgICAmY29va2llT2JqLCAmd2hlbmNlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19UZXh0SU9XcmFwcGVyX3NlZWtfaW1wbChzZWxmLCBjb29raWVPYmosIHdoZW5jZSk7CiAKIGV4aXQ6CkBAIC0zMjcsOCArMzM3LDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInRydW5jYXRlIiwKICAgICAgICAgMCwgMSwKLSAgICAgICAgJnBvcykpCisgICAgICAgICZwb3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX1RleHRJT1dyYXBwZXJfdHJ1bmNhdGVfaW1wbChzZWxmLCBwb3MpOwogCiBleGl0OgpAQCAtNDUzLDQgKzQ2NCw0IEBACiB7CiAgICAgcmV0dXJuIF9pb19UZXh0SU9XcmFwcGVyX2Nsb3NlX2ltcGwoc2VsZik7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjkwNjA4Zjg1YWFiOGJhNSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzhhZDE0ZWJhMTY2NzI1NCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9jbGluaWMvd2luY29uc29sZWlvLmMuaCBiL01vZHVsZXMvX2lvL2NsaW5pYy93aW5jb25zb2xlaW8uYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0NGZjYmIKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19pby9jbGluaWMvd2luY29uc29sZWlvLmMuaApAQCAtMCwwICsxLDMzMSBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKF9pb19fV2luZG93c0NvbnNvbGVJT19jbG9zZV9fZG9jX18sCisiY2xvc2UoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDbG9zZSB0aGUgaGFuZGxlLlxuIgorIlxuIgorIkEgY2xvc2VkIGhhbmRsZSBjYW5ub3QgYmUgdXNlZCBmb3IgZnVydGhlciBJL08gb3BlcmF0aW9ucy4gIGNsb3NlKCkgbWF5IGJlXG4iCisiY2FsbGVkIG1vcmUgdGhhbiBvbmNlIHdpdGhvdXQgZXJyb3IuIik7CisKKyNkZWZpbmUgX0lPX19XSU5ET1dTQ09OU09MRUlPX0NMT1NFX01FVEhPRERFRiAgICBcCisgICAgeyJjbG9zZSIsIChQeUNGdW5jdGlvbilfaW9fX1dpbmRvd3NDb25zb2xlSU9fY2xvc2UsIE1FVEhfTk9BUkdTLCBfaW9fX1dpbmRvd3NDb25zb2xlSU9fY2xvc2VfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19jbG9zZV9pbXBsKHdpbmNvbnNvbGVpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9fY2xvc2Uod2luY29uc29sZWlvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fX1dpbmRvd3NDb25zb2xlSU9fY2xvc2VfaW1wbChzZWxmKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKF9pb19fV2luZG93c0NvbnNvbGVJT19fX2luaXRfX19fZG9jX18sCisiX1dpbmRvd3NDb25zb2xlSU8oZmlsZSwgbW9kZT1cJ3JcJywgY2xvc2VmZD1UcnVlLCBvcGVuZXI9Tm9uZSlcbiIKKyItLVxuIgorIlxuIgorIk9wZW4gYSBjb25zb2xlIGJ1ZmZlciBieSBmaWxlIGRlc2NyaXB0b3IuXG4iCisiXG4iCisiVGhlIG1vZGUgY2FuIGJlIFwncmJcJyAoZGVmYXVsdCksIG9yIFwnd2JcJyBmb3IgcmVhZGluZyBvciB3cml0aW5nIGJ5dGVzLiBBbGxcbiIKKyJvdGhlciBtb2RlIGNoYXJhY3RlcnMgd2lsbCBiZSBpZ25vcmVkLiBNb2RlIFwnYlwnIHdpbGwgYmUgYXNzdW1lZCBpZiBpdCBpc1xuIgorIm9taXR0ZWQuIFRoZSAqb3BlbmVyKiBwYXJhbWV0ZXIgaXMgYWx3YXlzIGlnbm9yZWQuIik7CisKK3N0YXRpYyBpbnQKK19pb19fV2luZG93c0NvbnNvbGVJT19fX2luaXRfX19pbXBsKHdpbmNvbnNvbGVpbyAqc2VsZiwgUHlPYmplY3QgKm5hbWVvYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICptb2RlLCBpbnQgY2xvc2VmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpvcGVuZXIpOworCitzdGF0aWMgaW50CitfaW9fX1dpbmRvd3NDb25zb2xlSU9fX19pbml0X18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIGludCByZXR1cm5fdmFsdWUgPSAtMTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJmaWxlIiwgIm1vZGUiLCAiY2xvc2VmZCIsICJvcGVuZXIiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPfHNpTzpfV2luZG93c0NvbnNvbGVJTyIsIF9rZXl3b3JkcywgMH07CisgICAgUHlPYmplY3QgKm5hbWVvYmo7CisgICAgY29uc3QgY2hhciAqbW9kZSA9ICJyIjsKKyAgICBpbnQgY2xvc2VmZCA9IDE7CisgICAgUHlPYmplY3QgKm9wZW5lciA9IFB5X05vbmU7CisKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KGFyZ3MsIGt3YXJncywgJl9wYXJzZXIsCisgICAgICAgICZuYW1lb2JqLCAmbW9kZSwgJmNsb3NlZmQsICZvcGVuZXIpKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19XaW5kb3dzQ29uc29sZUlPX19faW5pdF9fX2ltcGwoKHdpbmNvbnNvbGVpbyAqKXNlbGYsIG5hbWVvYmosIG1vZGUsIGNsb3NlZmQsIG9wZW5lcik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKF9pb19fV2luZG93c0NvbnNvbGVJT19maWxlbm9fX2RvY19fLAorImZpbGVubygkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgdW5kZXJseWluZyBmaWxlIGRlc2NyaXB0b3IgKGFuIGludGVnZXIpLlxuIgorIlxuIgorImZpbGVubyBpcyBvbmx5IHNldCB3aGVuIGEgZmlsZSBkZXNjcmlwdG9yIGlzIHVzZWQgdG8gb3BlblxuIgorIm9uZSBvZiB0aGUgc3RhbmRhcmQgc3RyZWFtcy4iKTsKKworI2RlZmluZSBfSU9fX1dJTkRPV1NDT05TT0xFSU9fRklMRU5PX01FVEhPRERFRiAgICBcCisgICAgeyJmaWxlbm8iLCAoUHlDRnVuY3Rpb24pX2lvX19XaW5kb3dzQ29uc29sZUlPX2ZpbGVubywgTUVUSF9OT0FSR1MsIF9pb19fV2luZG93c0NvbnNvbGVJT19maWxlbm9fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19maWxlbm9faW1wbCh3aW5jb25zb2xlaW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX2ZpbGVubyh3aW5jb25zb2xlaW8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19fV2luZG93c0NvbnNvbGVJT19maWxlbm9faW1wbChzZWxmKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKF9pb19fV2luZG93c0NvbnNvbGVJT19yZWFkYWJsZV9fZG9jX18sCisicmVhZGFibGUoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJUcnVlIGlmIGNvbnNvbGUgaXMgYW4gaW5wdXQgYnVmZmVyLiIpOworCisjZGVmaW5lIF9JT19fV0lORE9XU0NPTlNPTEVJT19SRUFEQUJMRV9NRVRIT0RERUYgICAgXAorICAgIHsicmVhZGFibGUiLCAoUHlDRnVuY3Rpb24pX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRhYmxlLCBNRVRIX05PQVJHUywgX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRhYmxlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZGFibGVfaW1wbCh3aW5jb25zb2xlaW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRhYmxlKHdpbmNvbnNvbGVpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRhYmxlX2ltcGwoc2VsZik7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisKK1B5RG9jX1NUUlZBUihfaW9fX1dpbmRvd3NDb25zb2xlSU9fd3JpdGFibGVfX2RvY19fLAorIndyaXRhYmxlKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiVHJ1ZSBpZiBjb25zb2xlIGlzIGFuIG91dHB1dCBidWZmZXIuIik7CisKKyNkZWZpbmUgX0lPX19XSU5ET1dTQ09OU09MRUlPX1dSSVRBQkxFX01FVEhPRERFRiAgICBcCisgICAgeyJ3cml0YWJsZSIsIChQeUNGdW5jdGlvbilfaW9fX1dpbmRvd3NDb25zb2xlSU9fd3JpdGFibGUsIE1FVEhfTk9BUkdTLCBfaW9fX1dpbmRvd3NDb25zb2xlSU9fd3JpdGFibGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT193cml0YWJsZV9pbXBsKHdpbmNvbnNvbGVpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9fd3JpdGFibGUod2luY29uc29sZWlvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fX1dpbmRvd3NDb25zb2xlSU9fd3JpdGFibGVfaW1wbChzZWxmKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKF9pb19fV2luZG93c0NvbnNvbGVJT19yZWFkaW50b19fZG9jX18sCisicmVhZGludG8oJHNlbGYsIGJ1ZmZlciwgLylcbiIKKyItLVxuIgorIlxuIgorIlNhbWUgYXMgUmF3SU9CYXNlLnJlYWRpbnRvKCkuIik7CisKKyNkZWZpbmUgX0lPX19XSU5ET1dTQ09OU09MRUlPX1JFQURJTlRPX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkaW50byIsIChQeUNGdW5jdGlvbilfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZGludG8sIE1FVEhfTywgX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRpbnRvX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZGludG9faW1wbCh3aW5jb25zb2xlaW8gKnNlbGYsIFB5X2J1ZmZlciAqYnVmZmVyKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19yZWFkaW50byh3aW5jb25zb2xlaW8gKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfYnVmZmVyIGJ1ZmZlciA9IHtOVUxMLCBOVUxMfTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAidyo6cmVhZGludG8iLCAmYnVmZmVyKSkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IF9pb19fV2luZG93c0NvbnNvbGVJT19yZWFkaW50b19pbXBsKHNlbGYsICZidWZmZXIpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLworICAgIGlmIChidWZmZXIub2JqKSB7CisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChNU19XSU5ET1dTKSAqLworCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorCitQeURvY19TVFJWQVIoX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRhbGxfX2RvY19fLAorInJlYWRhbGwoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZWFkIGFsbCBkYXRhIGZyb20gdGhlIGNvbnNvbGUsIHJldHVybmVkIGFzIGJ5dGVzLlxuIgorIlxuIgorIlJldHVybiBhbiBlbXB0eSBieXRlcyBvYmplY3QgYXQgRU9GLiIpOworCisjZGVmaW5lIF9JT19fV0lORE9XU0NPTlNPTEVJT19SRUFEQUxMX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkYWxsIiwgKFB5Q0Z1bmN0aW9uKV9pb19fV2luZG93c0NvbnNvbGVJT19yZWFkYWxsLCBNRVRIX05PQVJHUywgX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRhbGxfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19yZWFkYWxsX2ltcGwod2luY29uc29sZWlvICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19yZWFkYWxsKHdpbmNvbnNvbGVpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRhbGxfaW1wbChzZWxmKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKF9pb19fV2luZG93c0NvbnNvbGVJT19yZWFkX19kb2NfXywKKyJyZWFkKCRzZWxmLCBzaXplPS0xLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmVhZCBhdCBtb3N0IHNpemUgYnl0ZXMsIHJldHVybmVkIGFzIGJ5dGVzLlxuIgorIlxuIgorIk9ubHkgbWFrZXMgb25lIHN5c3RlbSBjYWxsIHdoZW4gc2l6ZSBpcyBhIHBvc2l0aXZlIGludGVnZXIsXG4iCisic28gbGVzcyBkYXRhIG1heSBiZSByZXR1cm5lZCB0aGFuIHJlcXVlc3RlZC5cbiIKKyJSZXR1cm4gYW4gZW1wdHkgYnl0ZXMgb2JqZWN0IGF0IEVPRi4iKTsKKworI2RlZmluZSBfSU9fX1dJTkRPV1NDT05TT0xFSU9fUkVBRF9NRVRIT0RERUYgICAgXAorICAgIHsicmVhZCIsIChQeUNGdW5jdGlvbilfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZCwgTUVUSF9WQVJBUkdTLCBfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRfaW1wbCh3aW5jb25zb2xlaW8gKnNlbGYsIFB5X3NzaXplX3Qgc2l6ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZCh3aW5jb25zb2xlaW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X3NzaXplX3Qgc2l6ZSA9IC0xOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TyY6cmVhZCIsCisgICAgICAgIF9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmc2l6ZSkpIHsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZF9pbXBsKHNlbGYsIHNpemUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisKK1B5RG9jX1NUUlZBUihfaW9fX1dpbmRvd3NDb25zb2xlSU9fd3JpdGVfX2RvY19fLAorIndyaXRlKCRzZWxmLCBiLCAvKVxuIgorIi0tXG4iCisiXG4iCisiV3JpdGUgYnVmZmVyIGIgdG8gZmlsZSwgcmV0dXJuIG51bWJlciBvZiBieXRlcyB3cml0dGVuLlxuIgorIlxuIgorIk9ubHkgbWFrZXMgb25lIHN5c3RlbSBjYWxsLCBzbyBub3QgYWxsIG9mIHRoZSBkYXRhIG1heSBiZSB3cml0dGVuLlxuIgorIlRoZSBudW1iZXIgb2YgYnl0ZXMgYWN0dWFsbHkgd3JpdHRlbiBpcyByZXR1cm5lZC4iKTsKKworI2RlZmluZSBfSU9fX1dJTkRPV1NDT05TT0xFSU9fV1JJVEVfTUVUSE9EREVGICAgIFwKKyAgICB7IndyaXRlIiwgKFB5Q0Z1bmN0aW9uKV9pb19fV2luZG93c0NvbnNvbGVJT193cml0ZSwgTUVUSF9PLCBfaW9fX1dpbmRvd3NDb25zb2xlSU9fd3JpdGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT193cml0ZV9pbXBsKHdpbmNvbnNvbGVpbyAqc2VsZiwgUHlfYnVmZmVyICpiKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT193cml0ZSh3aW5jb25zb2xlaW8gKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfYnVmZmVyIGIgPSB7TlVMTCwgTlVMTH07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOndyaXRlIiwgJmIpKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19XaW5kb3dzQ29uc29sZUlPX3dyaXRlX2ltcGwoc2VsZiwgJmIpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGIgKi8KKyAgICBpZiAoYi5vYmopIHsKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZiKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChNU19XSU5ET1dTKSAqLworCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorCitQeURvY19TVFJWQVIoX2lvX19XaW5kb3dzQ29uc29sZUlPX2lzYXR0eV9fZG9jX18sCisiaXNhdHR5KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQWx3YXlzIFRydWUuIik7CisKKyNkZWZpbmUgX0lPX19XSU5ET1dTQ09OU09MRUlPX0lTQVRUWV9NRVRIT0RERUYgICAgXAorICAgIHsiaXNhdHR5IiwgKFB5Q0Z1bmN0aW9uKV9pb19fV2luZG93c0NvbnNvbGVJT19pc2F0dHksIE1FVEhfTk9BUkdTLCBfaW9fX1dpbmRvd3NDb25zb2xlSU9faXNhdHR5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9faXNhdHR5X2ltcGwod2luY29uc29sZWlvICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19pc2F0dHkod2luY29uc29sZWlvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fX1dpbmRvd3NDb25zb2xlSU9faXNhdHR5X2ltcGwoc2VsZik7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKKyNpZm5kZWYgX0lPX19XSU5ET1dTQ09OU09MRUlPX0NMT1NFX01FVEhPRERFRgorICAgICNkZWZpbmUgX0lPX19XSU5ET1dTQ09OU09MRUlPX0NMT1NFX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKF9JT19fV0lORE9XU0NPTlNPTEVJT19DTE9TRV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX0lPX19XSU5ET1dTQ09OU09MRUlPX0ZJTEVOT19NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9JT19fV0lORE9XU0NPTlNPTEVJT19GSUxFTk9fTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX0lPX19XSU5ET1dTQ09OU09MRUlPX0ZJTEVOT19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX0lPX19XSU5ET1dTQ09OU09MRUlPX1JFQURBQkxFX01FVEhPRERFRgorICAgICNkZWZpbmUgX0lPX19XSU5ET1dTQ09OU09MRUlPX1JFQURBQkxFX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKF9JT19fV0lORE9XU0NPTlNPTEVJT19SRUFEQUJMRV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX0lPX19XSU5ET1dTQ09OU09MRUlPX1dSSVRBQkxFX01FVEhPRERFRgorICAgICNkZWZpbmUgX0lPX19XSU5ET1dTQ09OU09MRUlPX1dSSVRBQkxFX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKF9JT19fV0lORE9XU0NPTlNPTEVJT19XUklUQUJMRV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX0lPX19XSU5ET1dTQ09OU09MRUlPX1JFQURJTlRPX01FVEhPRERFRgorICAgICNkZWZpbmUgX0lPX19XSU5ET1dTQ09OU09MRUlPX1JFQURJTlRPX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKF9JT19fV0lORE9XU0NPTlNPTEVJT19SRUFESU5UT19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX0lPX19XSU5ET1dTQ09OU09MRUlPX1JFQURBTExfTUVUSE9EREVGCisgICAgI2RlZmluZSBfSU9fX1dJTkRPV1NDT05TT0xFSU9fUkVBREFMTF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfSU9fX1dJTkRPV1NDT05TT0xFSU9fUkVBREFMTF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX0lPX19XSU5ET1dTQ09OU09MRUlPX1JFQURfTUVUSE9EREVGCisgICAgI2RlZmluZSBfSU9fX1dJTkRPV1NDT05TT0xFSU9fUkVBRF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfSU9fX1dJTkRPV1NDT05TT0xFSU9fUkVBRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX0lPX19XSU5ET1dTQ09OU09MRUlPX1dSSVRFX01FVEhPRERFRgorICAgICNkZWZpbmUgX0lPX19XSU5ET1dTQ09OU09MRUlPX1dSSVRFX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKF9JT19fV0lORE9XU0NPTlNPTEVJT19XUklURV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX0lPX19XSU5ET1dTQ09OU09MRUlPX0lTQVRUWV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9JT19fV0lORE9XU0NPTlNPTEVJT19JU0FUVFlfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX0lPX19XSU5ET1dTQ09OU09MRUlPX0lTQVRUWV9NRVRIT0RERUYpICovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OWViYTkxNmY4NTM3ZmZmNyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9maWxlaW8uYyBiL01vZHVsZXMvX2lvL2ZpbGVpby5jCmluZGV4IDkxOWNmNTAuLjU0Y2ZiN2YgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL2ZpbGVpby5jCisrKyBiL01vZHVsZXMvX2lvL2ZpbGVpby5jCkBAIC05Miw4ICs5Miw3IEBACiAgICAgaWYgKHNlbGYtPmZkID49IDAgJiYgc2VsZi0+Y2xvc2VmZCkgewogICAgICAgICBQeU9iamVjdCAqZXhjLCAqdmFsLCAqdGI7CiAgICAgICAgIFB5RXJyX0ZldGNoKCZleGMsICZ2YWwsICZ0Yik7Ci0gICAgICAgIGlmIChQeUVycl9XYXJuRm9ybWF0KFB5RXhjX1Jlc291cmNlV2FybmluZywgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuY2xvc2VkIGZpbGUgJVIiLCBzb3VyY2UpKSB7CisgICAgICAgIGlmIChQeUVycl9SZXNvdXJjZVdhcm5pbmcoc291cmNlLCAxLCAidW5jbG9zZWQgZmlsZSAlUiIsIHNvdXJjZSkpIHsKICAgICAgICAgICAgIC8qIFNwdXJpb3VzIGVycm9ycyBjYW4gYXBwZWFyIGF0IHNodXRkb3duICovCiAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19XYXJuaW5nKSkKICAgICAgICAgICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUoKFB5T2JqZWN0ICopIHNlbGYpOwpAQCAtMTE4LDE4ICsxMTcsMTMgQEAKICAgICAgICAgaW50IGZkID0gc2VsZi0+ZmQ7CiAgICAgICAgIHNlbGYtPmZkID0gLTE7CiAgICAgICAgIC8qIGZkIGlzIGFjY2Vzc2libGUgYW5kIHNvbWVvbmUgZWxzZSBtYXkgaGF2ZSBjbG9zZWQgaXQgKi8KLSAgICAgICAgaWYgKF9QeVZlcmlmeV9mZChmZCkpIHsKLSAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKLSAgICAgICAgICAgIGVyciA9IGNsb3NlKGZkKTsKLSAgICAgICAgICAgIGlmIChlcnIgPCAwKQotICAgICAgICAgICAgICAgIHNhdmVfZXJybm8gPSBlcnJubzsKLSAgICAgICAgICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICi0gICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICB9IGVsc2UgeworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyAgICAgICAgZXJyID0gY2xvc2UoZmQpOworICAgICAgICBpZiAoZXJyIDwgMCkKICAgICAgICAgICAgIHNhdmVfZXJybm8gPSBlcnJubzsKLSAgICAgICAgICAgIGVyciA9IC0xOwotICAgICAgICB9CisgICAgICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgfQogICAgIGlmIChlcnIgPCAwKSB7CiAgICAgICAgIGVycm5vID0gc2F2ZV9lcnJubzsKQEAgLTU0Niw3ICs1NDAsNyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotZXJyX21vZGUoY2hhciAqYWN0aW9uKQorZXJyX21vZGUoY29uc3QgY2hhciAqYWN0aW9uKQogewogICAgIF9QeUlPX1N0YXRlICpzdGF0ZSA9IElPX1NUQVRFKCk7CiAgICAgaWYgKHN0YXRlICE9IE5VTEwpCkBAIC03MDEsOCArNjk1LDYgQEAKIAogICAgIGlmIChzZWxmLT5mZCA8IDApCiAgICAgICAgIHJldHVybiBlcnJfY2xvc2VkKCk7Ci0gICAgaWYgKCFfUHlWZXJpZnlfZmQoc2VsZi0+ZmQpKQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwogCiAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogI2lmZGVmIE1TX1dJTkRPV1MKQEAgLTkxNSwxOCArOTA3LDE1IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoX1B5VmVyaWZ5X2ZkKGZkKSkgewotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICAgICAgcmVzID0gX2xzZWVraTY0KGZkLCBwb3MsIHdoZW5jZSk7CisgICAgcmVzID0gX2xzZWVraTY0KGZkLCBwb3MsIHdoZW5jZSk7CiAjZWxzZQotICAgICAgICByZXMgPSBsc2VlayhmZCwgcG9zLCB3aGVuY2UpOworICAgIHJlcyA9IGxzZWVrKGZkLCBwb3MsIHdoZW5jZSk7CiAjZW5kaWYKLSAgICAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICB9IGVsc2UKLSAgICAgICAgcmVzID0gLTE7CisgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIGlmIChyZXMgPCAwKQogICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwogCkBAIC0xMDQ5LDcgKzEwMzgsNyBAQAogfQogI2VuZGlmIC8qIEhBVkVfRlRSVU5DQVRFICovCiAKLXN0YXRpYyBjaGFyICoKK3N0YXRpYyBjb25zdCBjaGFyICoKIG1vZGVfc3RyaW5nKGZpbGVpbyAqc2VsZikKIHsKICAgICBpZiAoc2VsZi0+Y3JlYXRlZCkgewpAQCAtMTExNywxMCArMTEwNiw3IEBACiAgICAgICAgIHJldHVybiBlcnJfY2xvc2VkKCk7CiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKLSAgICBpZiAoX1B5VmVyaWZ5X2ZkKHNlbGYtPmZkKSkKLSAgICAgICAgcmVzID0gaXNhdHR5KHNlbGYtPmZkKTsKLSAgICBlbHNlCi0gICAgICAgIHJlcyA9IDA7CisgICAgcmVzID0gaXNhdHR5KHNlbGYtPmZkKTsKICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhyZXMpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vaW9iYXNlLmMgYi9Nb2R1bGVzL19pby9pb2Jhc2UuYwppbmRleCA1NzU0MWE4Li40NzJlZjNiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9pb2Jhc2UuYworKysgYi9Nb2R1bGVzL19pby9pb2Jhc2UuYwpAQCAtODI4LDcgKzgyOCw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RlbCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF92ZXJzaW9uX3RhZyAqLwotICAgIChkZXN0cnVjdG9yKWlvYmFzZV9maW5hbGl6ZSwgLyogdHBfZmluYWxpemUgKi8KKyAgICBpb2Jhc2VfZmluYWxpemUsICAgICAgICAgICAgLyogdHBfZmluYWxpemUgKi8KIH07CiAKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vc3RyaW5naW8uYyBiL01vZHVsZXMvX2lvL3N0cmluZ2lvLmMKaW5kZXggMDZiNDE0NC4uODU0MmVmZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faW8vc3RyaW5naW8uYworKysgYi9Nb2R1bGVzL19pby9zdHJpbmdpby5jCkBAIC00MzgsNyArNDM4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlJT19zdHJfcmVhZGxpbmUsIE5VTEwpOwogICAgICAgICBpZiAobGluZSAmJiAhUHlVbmljb2RlX0NoZWNrKGxpbmUpKSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSU9FcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAicmVhZGxpbmUoKSBzaG91bGQgaGF2ZSByZXR1cm5lZCBhbiBzdHIgb2JqZWN0LCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgInJlYWRsaW5lKCkgc2hvdWxkIGhhdmUgcmV0dXJuZWQgYSBzdHIgb2JqZWN0LCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCAnJS4yMDBzJyIsIFB5X1RZUEUobGluZSktPnRwX25hbWUpOwogICAgICAgICAgICAgUHlfREVDUkVGKGxpbmUpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC03MDgsNyArNzA4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKG5ld2xpbmVfb2JqKS0+dHBfbmFtZSk7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KLSAgICAgICAgbmV3bGluZSA9IF9QeVVuaWNvZGVfQXNTdHJpbmcobmV3bGluZV9vYmopOworICAgICAgICBuZXdsaW5lID0gUHlVbmljb2RlX0FzVVRGOChuZXdsaW5lX29iaik7CiAgICAgICAgIGlmIChuZXdsaW5lID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vdGV4dGlvLmMgYi9Nb2R1bGVzL19pby90ZXh0aW8uYwppbmRleCA0NmM5OWI1Li4xYzcyMDBiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby90ZXh0aW8uYworKysgYi9Nb2R1bGVzL19pby90ZXh0aW8uYwpAQCAtNTMxLDcgKzUzMSw3IEBACiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjBkMmM5YzEzNmY0ZTBkMCBpbnB1dD1mOGZmMTAxODI1ZTMyZTdmXSovCiB7CiAgICAgUHlPYmplY3QgKmJ1ZmZlcjsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgZmxhZzsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgZmxhZzsKIAogICAgIGlmIChzZWxmLT5kZWNvZGVyICE9IFB5X05vbmUpIHsKICAgICAgICAgUHlPYmplY3QgKnN0YXRlID0gUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3Moc2VsZi0+ZGVjb2RlciwKQEAgLTU2Nyw3ICs1NjcsNyBAQAogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWMxMGM2MjI1MDhiNTc2Y2IgaW5wdXQ9YzUzZmI1MDVhNzZkYmJlMl0qLwogewogICAgIFB5T2JqZWN0ICpidWZmZXI7Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIGZsYWc7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGZsYWc7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoc3RhdGUsICJPSyIsICZidWZmZXIsICZmbGFnKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC03NzIsNyArNzcyLDcgQEAKICAgICBlbmNvZGVmdW5jX3QgZW5jb2RlZnVuYzsKIH0gZW5jb2RlZnVuY2VudHJ5OwogCi1zdGF0aWMgZW5jb2RlZnVuY2VudHJ5IGVuY29kZWZ1bmNzW10gPSB7CitzdGF0aWMgY29uc3QgZW5jb2RlZnVuY2VudHJ5IGVuY29kZWZ1bmNzW10gPSB7CiAgICAgeyJhc2NpaSIsICAgICAgIChlbmNvZGVmdW5jX3QpIGFzY2lpX2VuY29kZX0sCiAgICAgeyJpc284ODU5LTEiLCAgIChlbmNvZGVmdW5jX3QpIGxhdGluMV9lbmNvZGV9LAogICAgIHsidXRmLTgiLCAgICAgICAoZW5jb2RlZnVuY190KSB1dGY4X2VuY29kZX0sCkBAIC05MjEsNyArOTIxLDcgQEAKICAgICAgICAgICAgIFB5X0NMRUFSKHNlbGYtPmVuY29kaW5nKTsKICAgICB9CiAgICAgaWYgKHNlbGYtPmVuY29kaW5nICE9IE5VTEwpIHsKLSAgICAgICAgZW5jb2RpbmcgPSBfUHlVbmljb2RlX0FzU3RyaW5nKHNlbGYtPmVuY29kaW5nKTsKKyAgICAgICAgZW5jb2RpbmcgPSBQeVVuaWNvZGVfQXNVVEY4KHNlbGYtPmVuY29kaW5nKTsKICAgICAgICAgaWYgKGVuY29kaW5nID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KQEAgLTk2NCw3ICs5NjQsNyBAQAogICAgIH0KICAgICBzZWxmLT53cml0ZXRyYW5zbGF0ZSA9IChuZXdsaW5lID09IE5VTEwgfHwgbmV3bGluZVswXSAhPSAnXDAnKTsKICAgICBpZiAoIXNlbGYtPnJlYWR1bml2ZXJzYWwgJiYgc2VsZi0+cmVhZG5sKSB7Ci0gICAgICAgIHNlbGYtPndyaXRlbmwgPSBfUHlVbmljb2RlX0FzU3RyaW5nKHNlbGYtPnJlYWRubCk7CisgICAgICAgIHNlbGYtPndyaXRlbmwgPSBQeVVuaWNvZGVfQXNVVEY4KHNlbGYtPnJlYWRubCk7CiAgICAgICAgIGlmIChzZWxmLT53cml0ZW5sID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICBpZiAoIXN0cmNtcChzZWxmLT53cml0ZW5sLCAiXG4iKSkKQEAgLTEwMjEsNyArMTAyMSw3IEBACiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2socmVzKSkgewotICAgICAgICAgICAgZW5jb2RlZnVuY2VudHJ5ICplID0gZW5jb2RlZnVuY3M7CisgICAgICAgICAgICBjb25zdCBlbmNvZGVmdW5jZW50cnkgKmUgPSBlbmNvZGVmdW5jczsKICAgICAgICAgICAgIHdoaWxlIChlLT5uYW1lICE9IE5VTEwpIHsKICAgICAgICAgICAgICAgICBpZiAoX1B5VW5pY29kZV9FcXVhbFRvQVNDSUlTdHJpbmcocmVzLCBlLT5uYW1lKSkgewogICAgICAgICAgICAgICAgICAgICBzZWxmLT5lbmNvZGVmdW5jID0gZS0+ZW5jb2RlZnVuYzsKQEAgLTE2MzcsOCArMTYzNyw4IEBACiAvKiBOT1RFOiBgZW5kYCBtdXN0IHBvaW50IHRvIHRoZSByZWFsIGVuZCBvZiB0aGUgUHlfVUNTNCBzdG9yYWdlLAogICAgdGhhdCBpcyB0byB0aGUgTlVMIGNoYXJhY3Rlci4gT3RoZXJ3aXNlIHRoZSBmdW5jdGlvbiB3aWxsIHByb2R1Y2UKICAgIGluY29ycmVjdCByZXN1bHRzLiAqLwotc3RhdGljIGNoYXIgKgotZmluZF9jb250cm9sX2NoYXIoaW50IGtpbmQsIGNoYXIgKnMsIGNoYXIgKmVuZCwgUHlfVUNTNCBjaCkKK3N0YXRpYyBjb25zdCBjaGFyICoKK2ZpbmRfY29udHJvbF9jaGFyKGludCBraW5kLCBjb25zdCBjaGFyICpzLCBjb25zdCBjaGFyICplbmQsIFB5X1VDUzQgY2gpCiB7CiAgICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpIHsKICAgICAgICAgYXNzZXJ0KGNoIDwgMjU2KTsKQEAgLTE2NTgsMTMgKzE2NTgsMTMgQEAKIFB5X3NzaXplX3QKIF9QeUlPX2ZpbmRfbGluZV9lbmRpbmcoCiAgICAgaW50IHRyYW5zbGF0ZWQsIGludCB1bml2ZXJzYWwsIFB5T2JqZWN0ICpyZWFkbmwsCi0gICAgaW50IGtpbmQsIGNoYXIgKnN0YXJ0LCBjaGFyICplbmQsIFB5X3NzaXplX3QgKmNvbnN1bWVkKQorICAgIGludCBraW5kLCBjb25zdCBjaGFyICpzdGFydCwgY29uc3QgY2hhciAqZW5kLCBQeV9zc2l6ZV90ICpjb25zdW1lZCkKIHsKICAgICBQeV9zc2l6ZV90IGxlbiA9ICgoY2hhciopZW5kIC0gKGNoYXIqKXN0YXJ0KS9raW5kOwogCiAgICAgaWYgKHRyYW5zbGF0ZWQpIHsKICAgICAgICAgLyogTmV3bGluZXMgYXJlIGFscmVhZHkgdHJhbnNsYXRlZCwgb25seSBzZWFyY2ggZm9yIFxuICovCi0gICAgICAgIGNoYXIgKnBvcyA9IGZpbmRfY29udHJvbF9jaGFyKGtpbmQsIHN0YXJ0LCBlbmQsICdcbicpOworICAgICAgICBjb25zdCBjaGFyICpwb3MgPSBmaW5kX2NvbnRyb2xfY2hhcihraW5kLCBzdGFydCwgZW5kLCAnXG4nKTsKICAgICAgICAgaWYgKHBvcyAhPSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIChwb3MgLSBzdGFydCkva2luZCArIDE7CiAgICAgICAgIGVsc2UgewpAQCAtMTY3Niw3ICsxNjc2LDcgQEAKICAgICAgICAgLyogVW5pdmVyc2FsIG5ld2xpbmUgc2VhcmNoLiBGaW5kIGFueSBvZiBcciwgXHJcbiwgXG4KICAgICAgICAgICogVGhlIGRlY29kZXIgZW5zdXJlcyB0aGF0IFxyXG4gYXJlIG5vdCBzcGxpdCBpbiB0d28gcGllY2VzCiAgICAgICAgICAqLwotICAgICAgICBjaGFyICpzID0gc3RhcnQ7CisgICAgICAgIGNvbnN0IGNoYXIgKnMgPSBzdGFydDsKICAgICAgICAgZm9yICg7OykgewogICAgICAgICAgICAgUHlfVUNTNCBjaDsKICAgICAgICAgICAgIC8qIEZhc3QgcGF0aCBmb3Igbm9uLWNvbnRyb2wgY2hhcnMuIFRoZSBsb29wIGFsd2F5cyBlbmRzCkBAIC0xNzA2LDIxICsxNzA2LDIxIEBACiAgICAgICAgIC8qIEFzc3VtZSB0aGF0IHJlYWRubCBpcyBhbiBBU0NJSSBjaGFyYWN0ZXIuICovCiAgICAgICAgIGFzc2VydChQeVVuaWNvZGVfS0lORChyZWFkbmwpID09IFB5VW5pY29kZV8xQllURV9LSU5EKTsKICAgICAgICAgaWYgKHJlYWRubF9sZW4gPT0gMSkgewotICAgICAgICAgICAgY2hhciAqcG9zID0gZmluZF9jb250cm9sX2NoYXIoa2luZCwgc3RhcnQsIGVuZCwgbmxbMF0pOworICAgICAgICAgICAgY29uc3QgY2hhciAqcG9zID0gZmluZF9jb250cm9sX2NoYXIoa2luZCwgc3RhcnQsIGVuZCwgbmxbMF0pOwogICAgICAgICAgICAgaWYgKHBvcyAhPSBOVUxMKQogICAgICAgICAgICAgICAgIHJldHVybiAocG9zIC0gc3RhcnQpL2tpbmQgKyAxOwogICAgICAgICAgICAgKmNvbnN1bWVkID0gbGVuOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgY2hhciAqcyA9IHN0YXJ0OwotICAgICAgICAgICAgY2hhciAqZSA9IGVuZCAtIChyZWFkbmxfbGVuIC0gMSkqa2luZDsKLSAgICAgICAgICAgIGNoYXIgKnBvczsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKnMgPSBzdGFydDsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKmUgPSBlbmQgLSAocmVhZG5sX2xlbiAtIDEpKmtpbmQ7CisgICAgICAgICAgICBjb25zdCBjaGFyICpwb3M7CiAgICAgICAgICAgICBpZiAoZSA8IHMpCiAgICAgICAgICAgICAgICAgZSA9IHM7CiAgICAgICAgICAgICB3aGlsZSAocyA8IGUpIHsKICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgY2hhciAqcG9zID0gZmluZF9jb250cm9sX2NoYXIoa2luZCwgcywgZW5kLCBubFswXSk7CisgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcG9zID0gZmluZF9jb250cm9sX2NoYXIoa2luZCwgcywgZW5kLCBubFswXSk7CiAgICAgICAgICAgICAgICAgaWYgKHBvcyA9PSBOVUxMIHx8IHBvcyA+PSBlKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBmb3IgKGkgPSAxOyBpIDwgcmVhZG5sX2xlbjsgaSsrKSB7CkBAIC0yNjgyLDcgKzI2ODIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeUlPX3N0cl9yZWFkbGluZSwgTlVMTCk7CiAgICAgICAgIGlmIChsaW5lICYmICFQeVVuaWNvZGVfQ2hlY2sobGluZSkpIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19JT0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICJyZWFkbGluZSgpIHNob3VsZCBoYXZlIHJldHVybmVkIGFuIHN0ciBvYmplY3QsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAicmVhZGxpbmUoKSBzaG91bGQgaGF2ZSByZXR1cm5lZCBhIHN0ciBvYmplY3QsICIKICAgICAgICAgICAgICAgICAgICAgICAgICAibm90ICclLjIwMHMnIiwgUHlfVFlQRShsaW5lKS0+dHBfbmFtZSk7CiAgICAgICAgICAgICBQeV9ERUNSRUYobGluZSk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL3dpbmNvbnNvbGVpby5jIGIvTW9kdWxlcy9faW8vd2luY29uc29sZWlvLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2IwMGE5ZQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2lvL3dpbmNvbnNvbGVpby5jCkBAIC0wLDAgKzEsMTE1NCBAQAorLyoKKyAgICBBbiBpbXBsZW1lbnRhdGlvbiBvZiBXaW5kb3dzIGNvbnNvbGUgSS9PCisKKyAgICBDbGFzc2VzIGRlZmluZWQgaGVyZTogX1dpbmRvd3NDb25zb2xlSU8KKworICAgIFdyaXR0ZW4gYnkgU3RldmUgRG93ZXIKKyovCisKKyNkZWZpbmUgUFlfU1NJWkVfVF9DTEVBTgorI2luY2x1ZGUgIlB5dGhvbi5oIgorCisjaWZkZWYgTVNfV0lORE9XUworCisjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCisjaWZkZWYgSEFWRV9TWVNfVFlQRVNfSAorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfU1RBVF9ICisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNlbmRpZgorI2luY2x1ZGUgPHN0ZGRlZi5oPiAvKiBGb3Igb2Zmc2V0b2YgKi8KKworI2RlZmluZSBXSU4zMl9MRUFOX0FORF9NRUFOCisjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisKKyNpbmNsdWRlICJfaW9tb2R1bGUuaCIKKworLyogQlVGU0laIGRldGVybWluZXMgaG93IG1hbnkgY2hhcmFjdGVycyBjYW4gYmUgdHlwZWQgYXQgdGhlIGNvbnNvbGUKKyAgIGJlZm9yZSBpdCBzdGFydHMgYmxvY2tpbmcuICovCisjaWYgQlVGU0laIDwgKDE2KjEwMjQpCisjZGVmaW5lIFNNQUxMQ0hVTksgKDIqMTAyNCkKKyNlbGlmIChCVUZTSVogPj0gKDIgPDwgMjUpKQorI2Vycm9yICJ1bnJlYXNvbmFibGUgQlVGU0laID4gNjRNQiBkZWZpbmVkIgorI2Vsc2UKKyNkZWZpbmUgU01BTExDSFVOSyBCVUZTSVoKKyNlbmRpZgorCisvKiBCVUZNQVggZGV0ZXJtaW5lcyBob3cgbWFueSBieXRlcyBjYW4gYmUgcmVhZCBpbiBvbmUgZ28uICovCisjZGVmaW5lIEJVRk1BWCAoMzIqMTAyNCoxMDI0KQorCisvKiBTTUFMTEJVRiBkZXRlcm1pbmVzIGhvdyBtYW55IHV0Zi04IGNoYXJhY3RlcnMgd2lsbCBiZQorICAgYnVmZmVyZWQgd2l0aGluIHRoZSBzdHJlYW0sIGluIG9yZGVyIHRvIHN1cHBvcnQgcmVhZHMKKyAgIG9mIGxlc3MgdGhhbiBvbmUgY2hhcmFjdGVyICovCisjZGVmaW5lIFNNQUxMQlVGIDQKKworY2hhciBfZ2V0X2NvbnNvbGVfdHlwZShIQU5ETEUgaGFuZGxlKSB7CisgICAgRFdPUkQgbW9kZSwgcGVla19jb3VudDsKKworICAgIGlmIChoYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCisgICAgICAgIHJldHVybiAnXDAnOworCisgICAgaWYgKCFHZXRDb25zb2xlTW9kZShoYW5kbGUsICZtb2RlKSkKKyAgICAgICAgcmV0dXJuICdcMCc7CisKKyAgICAvKiBQZWVrIGF0IHRoZSBoYW5kbGUgdG8gc2VlIHdoZXRoZXIgaXQgaXMgYW4gaW5wdXQgb3Igb3V0cHV0IGhhbmRsZSAqLworICAgIGlmIChHZXROdW1iZXJPZkNvbnNvbGVJbnB1dEV2ZW50cyhoYW5kbGUsICZwZWVrX2NvdW50KSkKKyAgICAgICAgcmV0dXJuICdyJzsKKyAgICByZXR1cm4gJ3cnOworfQorCitjaGFyIF9QeUlPX2dldF9jb25zb2xlX3R5cGUoUHlPYmplY3QgKnBhdGhfb3JfZmQpIHsKKyAgICBpbnQgZmQ7CisKKyAgICBmZCA9IFB5TG9uZ19Bc0xvbmcocGF0aF9vcl9mZCk7CisgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICBpZiAoZmQgPj0gMCkgeworICAgICAgICBIQU5ETEUgaGFuZGxlOworICAgICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisgICAgICAgIGhhbmRsZSA9IChIQU5ETEUpX2dldF9vc2ZoYW5kbGUoZmQpOworICAgICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAorICAgICAgICBpZiAoIWhhbmRsZSkKKyAgICAgICAgICAgIHJldHVybiAnXDAnOworICAgICAgICByZXR1cm4gX2dldF9jb25zb2xlX3R5cGUoaGFuZGxlKTsKKyAgICB9CisKKyAgICBQeU9iamVjdCAqZGVjb2RlZCwgKmRlY29kZWRfdXBwZXI7CisKKyAgICBpbnQgZCA9IFB5VW5pY29kZV9GU0RlY29kZXIocGF0aF9vcl9mZCwgJmRlY29kZWQpOworICAgIGlmICghZCkgeworICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICByZXR1cm4gJ1wwJzsKKyAgICB9CisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soZGVjb2RlZCkpIHsKKyAgICAgICAgUHlfQ0xFQVIoZGVjb2RlZCk7CisgICAgICAgIHJldHVybiAnXDAnOworICAgIH0KKyAgICBkZWNvZGVkX3VwcGVyID0gUHlPYmplY3RfQ2FsbE1ldGhvZChkZWNvZGVkLCAidXBwZXIiLCAiIik7CisgICAgUHlfQ0xFQVIoZGVjb2RlZCk7CisgICAgaWYgKCFkZWNvZGVkX3VwcGVyKSB7CisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIHJldHVybiAnXDAnOworICAgIH0KKworICAgIGNoYXIgbSA9ICdcMCc7CisgICAgaWYgKF9QeVVuaWNvZGVfRXF1YWxUb0FTQ0lJU3RyaW5nKGRlY29kZWRfdXBwZXIsICJDT05JTiQiKSkgeworICAgICAgICBtID0gJ3InOworICAgIH0gZWxzZSBpZiAoX1B5VW5pY29kZV9FcXVhbFRvQVNDSUlTdHJpbmcoZGVjb2RlZF91cHBlciwgIkNPTk9VVCQiKSkgeworICAgICAgICBtID0gJ3cnOworICAgIH0gZWxzZSBpZiAoX1B5VW5pY29kZV9FcXVhbFRvQVNDSUlTdHJpbmcoZGVjb2RlZF91cHBlciwgIkNPTiIpKSB7CisgICAgICAgIG0gPSAneCc7CisgICAgfQorCisgICAgUHlfQ0xFQVIoZGVjb2RlZF91cHBlcik7CisgICAgcmV0dXJuIG07Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK21vZHVsZSBfaW8KK2NsYXNzIF9pby5fV2luZG93c0NvbnNvbGVJTyAid2luY29uc29sZWlvICoiICImUHlXaW5kb3dzQ29uc29sZUlPX1R5cGUiCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1lODk3ZmRjMWZiYTRlMTMxXSovCisKKy8qW3B5dGhvbiBpbnB1dF0KK2NsYXNzIGlvX3NzaXplX3RfY29udmVydGVyKENDb252ZXJ0ZXIpOgorICAgIHR5cGUgPSAnUHlfc3NpemVfdCcKKyAgICBjb252ZXJ0ZXIgPSAnX1B5SU9fQ29udmVydFNzaXplX3QnCitbcHl0aG9uIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltweXRob24gZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1kMGE4MTFkM2NiZmQxYjMzXSovCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgSEFORExFIGhhbmRsZTsKKyAgICBpbnQgZmQ7CisgICAgdW5zaWduZWQgaW50IGNyZWF0ZWQgOiAxOworICAgIHVuc2lnbmVkIGludCByZWFkYWJsZSA6IDE7CisgICAgdW5zaWduZWQgaW50IHdyaXRhYmxlIDogMTsKKyAgICB1bnNpZ25lZCBpbnQgY2xvc2VoYW5kbGUgOiAxOworICAgIGNoYXIgZmluYWxpemluZzsKKyAgICB1bnNpZ25lZCBpbnQgYmxrc2l6ZTsKKyAgICBQeU9iamVjdCAqd2Vha3JlZmxpc3Q7CisgICAgUHlPYmplY3QgKmRpY3Q7CisgICAgY2hhciBidWZbU01BTExCVUZdOworICAgIHdjaGFyX3Qgd2J1ZjsKK30gd2luY29uc29sZWlvOworCitQeVR5cGVPYmplY3QgUHlXaW5kb3dzQ29uc29sZUlPX1R5cGU7CisKK19QeV9JREVOVElGSUVSKG5hbWUpOworCitpbnQKK19QeVdpbmRvd3NDb25zb2xlSU9fY2xvc2VkKFB5T2JqZWN0ICpzZWxmKQoreworICAgIHJldHVybiAoKHdpbmNvbnNvbGVpbyAqKXNlbGYpLT5oYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7Cit9CisKKworLyogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIC0xIHdpdGggZXhjZXB0aW9uIHNldCBvbiBmYWlsdXJlLiAqLworc3RhdGljIGludAoraW50ZXJuYWxfY2xvc2Uod2luY29uc29sZWlvICpzZWxmKQoreworICAgIGlmIChzZWxmLT5oYW5kbGUgIT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKKyAgICAgICAgaWYgKHNlbGYtPmNsb3NlaGFuZGxlKSB7CisgICAgICAgICAgICBpZiAoc2VsZi0+ZmQgPj0gMCkgeworICAgICAgICAgICAgICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyAgICAgICAgICAgICAgICBjbG9zZShzZWxmLT5mZCk7CisgICAgICAgICAgICAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIENsb3NlSGFuZGxlKHNlbGYtPmhhbmRsZSk7CisgICAgICAgIH0KKyAgICAgICAgc2VsZi0+aGFuZGxlID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7CisgICAgICAgIHNlbGYtPmZkID0gLTE7CisgICAgfQorICAgIHJldHVybiAwOworfQorCisvKltjbGluaWMgaW5wdXRdCitfaW8uX1dpbmRvd3NDb25zb2xlSU8uY2xvc2UKKworQ2xvc2UgdGhlIGhhbmRsZS4KKworQSBjbG9zZWQgaGFuZGxlIGNhbm5vdCBiZSB1c2VkIGZvciBmdXJ0aGVyIEkvTyBvcGVyYXRpb25zLiAgY2xvc2UoKSBtYXkgYmUKK2NhbGxlZCBtb3JlIHRoYW4gb25jZSB3aXRob3V0IGVycm9yLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX2Nsb3NlX2ltcGwod2luY29uc29sZWlvICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTI3ZWY5NWI2NmMyOTA1N2IgaW5wdXQ9MTg1NjE3ZTM0OWFlNGM3Yl0qLworeworICAgIFB5T2JqZWN0ICpyZXM7CisgICAgUHlPYmplY3QgKmV4YywgKnZhbCwgKnRiOworICAgIGludCByYzsKKyAgICBfUHlfSURFTlRJRklFUihjbG9zZSk7CisgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QqKSZQeVJhd0lPQmFzZV9UeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5SWRfY2xvc2UsICJPIiwgc2VsZik7CisgICAgaWYgKCFzZWxmLT5jbG9zZWhhbmRsZSkgeworICAgICAgICBzZWxmLT5oYW5kbGUgPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKKyAgICAgICAgcmV0dXJuIHJlczsKKyAgICB9CisgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICBQeUVycl9GZXRjaCgmZXhjLCAmdmFsLCAmdGIpOworICAgIHJjID0gaW50ZXJuYWxfY2xvc2Uoc2VsZik7CisgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICBfUHlFcnJfQ2hhaW5FeGNlcHRpb25zKGV4YywgdmFsLCB0Yik7CisgICAgaWYgKHJjIDwgMCkKKyAgICAgICAgUHlfQ0xFQVIocmVzKTsKKyAgICByZXR1cm4gcmVzOworfQorCitzdGF0aWMgUHlPYmplY3QgKgord2luY29uc29sZWlvX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICB3aW5jb25zb2xlaW8gKnNlbGY7CisKKyAgICBhc3NlcnQodHlwZSAhPSBOVUxMICYmIHR5cGUtPnRwX2FsbG9jICE9IE5VTEwpOworCisgICAgc2VsZiA9ICh3aW5jb25zb2xlaW8gKikgdHlwZS0+dHBfYWxsb2ModHlwZSwgMCk7CisgICAgaWYgKHNlbGYgIT0gTlVMTCkgeworICAgICAgICBzZWxmLT5oYW5kbGUgPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKKyAgICAgICAgc2VsZi0+ZmQgPSAtMTsKKyAgICAgICAgc2VsZi0+Y3JlYXRlZCA9IDA7CisgICAgICAgIHNlbGYtPnJlYWRhYmxlID0gMDsKKyAgICAgICAgc2VsZi0+d3JpdGFibGUgPSAwOworICAgICAgICBzZWxmLT5jbG9zZWhhbmRsZSA9IDA7CisgICAgICAgIHNlbGYtPmJsa3NpemUgPSAwOworICAgICAgICBzZWxmLT53ZWFrcmVmbGlzdCA9IE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIChQeU9iamVjdCAqKSBzZWxmOworfQorCisvKltjbGluaWMgaW5wdXRdCitfaW8uX1dpbmRvd3NDb25zb2xlSU8uX19pbml0X18KKyAgICBmaWxlIGFzIG5hbWVvYmo6IG9iamVjdAorICAgIG1vZGU6IHN0ciA9ICJyIgorICAgIGNsb3NlZmQ6IGludChjX2RlZmF1bHQ9IjEiKSA9IFRydWUKKyAgICBvcGVuZXI6IG9iamVjdCA9IE5vbmUKKworT3BlbiBhIGNvbnNvbGUgYnVmZmVyIGJ5IGZpbGUgZGVzY3JpcHRvci4KKworVGhlIG1vZGUgY2FuIGJlICdyYicgKGRlZmF1bHQpLCBvciAnd2InIGZvciByZWFkaW5nIG9yIHdyaXRpbmcgYnl0ZXMuIEFsbAorb3RoZXIgbW9kZSBjaGFyYWN0ZXJzIHdpbGwgYmUgaWdub3JlZC4gTW9kZSAnYicgd2lsbCBiZSBhc3N1bWVkIGlmIGl0IGlzCitvbWl0dGVkLiBUaGUgKm9wZW5lciogcGFyYW1ldGVyIGlzIGFsd2F5cyBpZ25vcmVkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgaW50CitfaW9fX1dpbmRvd3NDb25zb2xlSU9fX19pbml0X19faW1wbCh3aW5jb25zb2xlaW8gKnNlbGYsIFB5T2JqZWN0ICpuYW1lb2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbW9kZSwgaW50IGNsb3NlZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqb3BlbmVyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTNmZDljYmNkZDhkOTU0MjkgaW5wdXQ9NjFiZTM5NjMzYTg2ZjVkN10qLworeworICAgIGNvbnN0IGNoYXIgKnM7CisgICAgd2NoYXJfdCAqbmFtZSA9IE5VTEw7CisgICAgY2hhciBjb25zb2xlX3R5cGUgPSAnXDAnOworICAgIGludCByZXQgPSAwOworICAgIGludCByd2EgPSAwOworICAgIGludCBmZCA9IC0xOworICAgIGludCBmZF9pc19vd24gPSAwOworCisgICAgYXNzZXJ0KFB5V2luZG93c0NvbnNvbGVJT19DaGVjayhzZWxmKSk7CisgICAgaWYgKHNlbGYtPmhhbmRsZSA+PSAwKSB7CisgICAgICAgIGlmIChzZWxmLT5jbG9zZWhhbmRsZSkgeworICAgICAgICAgICAgLyogSGF2ZSB0byBjbG9zZSB0aGUgZXhpc3RpbmcgZmlsZSBmaXJzdC4gKi8KKyAgICAgICAgICAgIGlmIChpbnRlcm5hbF9jbG9zZShzZWxmKSA8IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNlbGYtPmhhbmRsZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOworICAgIH0KKworICAgIGlmIChQeUZsb2F0X0NoZWNrKG5hbWVvYmopKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiaW50ZWdlciBhcmd1bWVudCBleHBlY3RlZCwgZ290IGZsb2F0Iik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBmZCA9IF9QeUxvbmdfQXNJbnQobmFtZW9iaik7CisgICAgaWYgKGZkIDwgMCkgeworICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuZWdhdGl2ZSBmaWxlIGRlc2NyaXB0b3IiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBQeUVycl9DbGVhcigpOworICAgIH0KKyAgICBzZWxmLT5mZCA9IGZkOworCisgICAgaWYgKGZkIDwgMCkgeworICAgICAgICBQeU9iamVjdCAqZGVjb2RlZG5hbWUgPSBQeV9Ob25lOworICAgICAgICBQeV9JTkNSRUYoZGVjb2RlZG5hbWUpOworCisgICAgICAgIGludCBkID0gUHlVbmljb2RlX0ZTRGVjb2RlcihuYW1lb2JqLCAodm9pZCopJmRlY29kZWRuYW1lKTsKKyAgICAgICAgaWYgKCFkKQorICAgICAgICAgICAgcmV0dXJuIC0xOworCisgICAgICAgIFB5X3NzaXplX3QgbGVuZ3RoOworICAgICAgICBuYW1lID0gUHlVbmljb2RlX0FzV2lkZUNoYXJTdHJpbmcoZGVjb2RlZG5hbWUsICZsZW5ndGgpOworICAgICAgICBjb25zb2xlX3R5cGUgPSBfUHlJT19nZXRfY29uc29sZV90eXBlKGRlY29kZWRuYW1lKTsKKyAgICAgICAgUHlfQ0xFQVIoZGVjb2RlZG5hbWUpOworICAgICAgICBpZiAobmFtZSA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIC0xOworCisgICAgICAgIGlmICh3Y3NsZW4obmFtZSkgIT0gbGVuZ3RoKSB7CisgICAgICAgICAgICBQeU1lbV9GcmVlKG5hbWUpOworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJlbWJlZGRlZCBudWxsIGNoYXJhY3RlciIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgfQorCisgICAgcyA9IG1vZGU7CisgICAgd2hpbGUgKCpzKSB7CisgICAgICAgIHN3aXRjaCAoKnMrKykgeworICAgICAgICBjYXNlICcrJzoKKyAgICAgICAgY2FzZSAnYSc6CisgICAgICAgIGNhc2UgJ2InOgorICAgICAgICBjYXNlICd4JzoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICdyJzoKKyAgICAgICAgICAgIGlmIChyd2EpCisgICAgICAgICAgICAgICAgZ290byBiYWRfbW9kZTsKKyAgICAgICAgICAgIHJ3YSA9IDE7CisgICAgICAgICAgICBzZWxmLT5yZWFkYWJsZSA9IDE7CisgICAgICAgICAgICBpZiAoY29uc29sZV90eXBlID09ICd4JykKKyAgICAgICAgICAgICAgICBjb25zb2xlX3R5cGUgPSAncic7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAndyc6CisgICAgICAgICAgICBpZiAocndhKQorICAgICAgICAgICAgICAgIGdvdG8gYmFkX21vZGU7CisgICAgICAgICAgICByd2EgPSAxOworICAgICAgICAgICAgc2VsZi0+d3JpdGFibGUgPSAxOworICAgICAgICAgICAgaWYgKGNvbnNvbGVfdHlwZSA9PSAneCcpCisgICAgICAgICAgICAgICAgY29uc29sZV90eXBlID0gJ3cnOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBtb2RlOiAlLjIwMHMiLCBtb2RlKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIXJ3YSkKKyAgICAgICAgZ290byBiYWRfbW9kZTsKKworICAgIGlmIChmZCA+PSAwKSB7CisgICAgICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyAgICAgICAgc2VsZi0+aGFuZGxlID0gKEhBTkRMRSlfZ2V0X29zZmhhbmRsZShmZCk7CisgICAgICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICisgICAgICAgIHNlbGYtPmNsb3NlaGFuZGxlID0gMDsKKyAgICB9IGVsc2UgeworICAgICAgICBEV09SRCBhY2Nlc3MgPSBHRU5FUklDX1JFQUQ7CisKKyAgICAgICAgc2VsZi0+Y2xvc2VoYW5kbGUgPSAxOworICAgICAgICBpZiAoIWNsb3NlZmQpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJDYW5ub3QgdXNlIGNsb3NlZmQ9RmFsc2Ugd2l0aCBmaWxlIG5hbWUiKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc2VsZi0+d3JpdGFibGUpCisgICAgICAgICAgICBhY2Nlc3MgPSBHRU5FUklDX1dSSVRFOworCisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgLyogQXR0ZW1wdCB0byBvcGVuIGZvciByZWFkL3dyaXRlIGluaXRpYWxseSwgdGhlbiBmYWxsIGJhY2sKKyAgICAgICAgICAgb24gdGhlIHNwZWNpZmljIGFjY2Vzcy4gVGhpcyBpcyByZXF1aXJlZCBmb3IgbW9kZXJuIG5hbWVzCisgICAgICAgICAgIENPTklOJCBhbmQgQ09OT1VUJCwgd2hpY2ggYWxsb3cgcmVhZGluZy93cml0aW5nIHN0YXRlIGFzCisgICAgICAgICAgIHdlbGwgYXMgcmVhZGluZy93cml0aW5nIGNvbnRlbnQuICovCisgICAgICAgIHNlbGYtPmhhbmRsZSA9IENyZWF0ZUZpbGVXKG5hbWUsIEdFTkVSSUNfUkVBRCB8IEdFTkVSSUNfV1JJVEUsCisgICAgICAgICAgICBGSUxFX1NIQVJFX1JFQUQgfCBGSUxFX1NIQVJFX1dSSVRFLCBOVUxMLCBPUEVOX0VYSVNUSU5HLCAwLCBOVUxMKTsKKyAgICAgICAgaWYgKHNlbGYtPmhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKKyAgICAgICAgICAgIHNlbGYtPmhhbmRsZSA9IENyZWF0ZUZpbGVXKG5hbWUsIGFjY2VzcywKKyAgICAgICAgICAgICAgICBGSUxFX1NIQVJFX1JFQUQgfCBGSUxFX1NIQVJFX1dSSVRFLCBOVUxMLCBPUEVOX0VYSVNUSU5HLCAwLCBOVUxMKTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgICAgICBpZiAoc2VsZi0+aGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7CisgICAgICAgICAgICBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycldpdGhGaWxlbmFtZU9iamVjdChQeUV4Y19PU0Vycm9yLCBHZXRMYXN0RXJyb3IoKSwgbmFtZW9iaik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGNvbnNvbGVfdHlwZSA9PSAnXDAnKQorICAgICAgICBjb25zb2xlX3R5cGUgPSBfZ2V0X2NvbnNvbGVfdHlwZShzZWxmLT5oYW5kbGUpOworCisgICAgaWYgKHNlbGYtPndyaXRhYmxlICYmIGNvbnNvbGVfdHlwZSAhPSAndycpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAiQ2Fubm90IG9wZW4gY29uc29sZSBpbnB1dCBidWZmZXIgZm9yIHdyaXRpbmciKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgaWYgKHNlbGYtPnJlYWRhYmxlICYmIGNvbnNvbGVfdHlwZSAhPSAncicpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAiQ2Fubm90IG9wZW4gY29uc29sZSBvdXRwdXQgYnVmZmVyIGZvciByZWFkaW5nIik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgc2VsZi0+Ymxrc2l6ZSA9IERFRkFVTFRfQlVGRkVSX1NJWkU7CisgICAgbWVtc2V0KHNlbGYtPmJ1ZiwgMCwgNCk7CisKKyAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZCgoUHlPYmplY3QgKilzZWxmLCAmUHlJZF9uYW1lLCBuYW1lb2JqKSA8IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBnb3RvIGRvbmU7CisKK2JhZF9tb2RlOgorICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAiTXVzdCBoYXZlIGV4YWN0bHkgb25lIG9mIHJlYWQgb3Igd3JpdGUgbW9kZSIpOworZXJyb3I6CisgICAgcmV0ID0gLTE7CisgICAgaW50ZXJuYWxfY2xvc2Uoc2VsZik7CisKK2RvbmU6CisgICAgaWYgKG5hbWUpCisgICAgICAgIFB5TWVtX0ZyZWUobmFtZSk7CisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludAord2luY29uc29sZWlvX3RyYXZlcnNlKHdpbmNvbnNvbGVpbyAqc2VsZiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCit7CisgICAgUHlfVklTSVQoc2VsZi0+ZGljdCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK3dpbmNvbnNvbGVpb19jbGVhcih3aW5jb25zb2xlaW8gKnNlbGYpCit7CisgICAgUHlfQ0xFQVIoc2VsZi0+ZGljdCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkCit3aW5jb25zb2xlaW9fZGVhbGxvYyh3aW5jb25zb2xlaW8gKnNlbGYpCit7CisgICAgc2VsZi0+ZmluYWxpemluZyA9IDE7CisgICAgaWYgKF9QeUlPQmFzZV9maW5hbGl6ZSgoUHlPYmplY3QgKikgc2VsZikgPCAwKQorICAgICAgICByZXR1cm47CisgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0soc2VsZik7CisgICAgaWYgKHNlbGYtPndlYWtyZWZsaXN0ICE9IE5VTEwpCisgICAgICAgIFB5T2JqZWN0X0NsZWFyV2Vha1JlZnMoKFB5T2JqZWN0ICopIHNlbGYpOworICAgIFB5X0NMRUFSKHNlbGYtPmRpY3QpOworICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoKFB5T2JqZWN0ICopc2VsZik7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitlcnJfY2xvc2VkKHZvaWQpCit7CisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJJL08gb3BlcmF0aW9uIG9uIGNsb3NlZCBmaWxlIik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitlcnJfbW9kZShjb25zdCBjaGFyICphY3Rpb24pCit7CisgICAgX1B5SU9fU3RhdGUgKnN0YXRlID0gSU9fU1RBVEUoKTsKKyAgICBpZiAoc3RhdGUgIT0gTlVMTCkKKyAgICAgICAgUHlFcnJfRm9ybWF0KHN0YXRlLT51bnN1cHBvcnRlZF9vcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAiQ29uc29sZSBidWZmZXIgZG9lcyBub3Qgc3VwcG9ydCAlcyIsIGFjdGlvbik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fV2luZG93c0NvbnNvbGVJTy5maWxlbm8KKworUmV0dXJuIHRoZSB1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvciAoYW4gaW50ZWdlcikuCisKK2ZpbGVubyBpcyBvbmx5IHNldCB3aGVuIGEgZmlsZSBkZXNjcmlwdG9yIGlzIHVzZWQgdG8gb3Blbgorb25lIG9mIHRoZSBzdGFuZGFyZCBzdHJlYW1zLgorCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9fZmlsZW5vX2ltcGwod2luY29uc29sZWlvICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTAwNmZhNzRjZTNiNWNmYmYgaW5wdXQ9MDc5YWRjMzMwZGRhYWJlNl0qLworeworICAgIGlmIChzZWxmLT5mZCA8IDAgJiYgc2VsZi0+aGFuZGxlICE9IElOVkFMSURfSEFORExFX1ZBTFVFKSB7CisgICAgICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyAgICAgICAgaWYgKHNlbGYtPndyaXRhYmxlKQorICAgICAgICAgICAgc2VsZi0+ZmQgPSBfb3Blbl9vc2ZoYW5kbGUoKGludHB0cl90KXNlbGYtPmhhbmRsZSwgX09fV1JPTkxZIHwgX09fQklOQVJZKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2VsZi0+ZmQgPSBfb3Blbl9vc2ZoYW5kbGUoKGludHB0cl90KXNlbGYtPmhhbmRsZSwgX09fUkRPTkxZIHwgX09fQklOQVJZKTsKKyAgICAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKKyAgICB9CisgICAgaWYgKHNlbGYtPmZkIDwgMCkKKyAgICAgICAgcmV0dXJuIGVycl9tb2RlKCJmaWxlbm8iKTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHNlbGYtPmZkKTsKK30KKworLypbY2xpbmljIGlucHV0XQorX2lvLl9XaW5kb3dzQ29uc29sZUlPLnJlYWRhYmxlCisKK1RydWUgaWYgY29uc29sZSBpcyBhbiBpbnB1dCBidWZmZXIuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZGFibGVfaW1wbCh3aW5jb25zb2xlaW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGFmOWNlZjI3NDNiZWNmMCBpbnB1dD02YmU5ZGVmYjUzMDJkYWFlXSovCit7CisgICAgaWYgKHNlbGYtPmhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKKyAgICAgICAgcmV0dXJuIGVycl9jbG9zZWQoKTsKKyAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKChsb25nKSBzZWxmLT5yZWFkYWJsZSk7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fV2luZG93c0NvbnNvbGVJTy53cml0YWJsZQorCitUcnVlIGlmIGNvbnNvbGUgaXMgYW4gb3V0cHV0IGJ1ZmZlci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT193cml0YWJsZV9pbXBsKHdpbmNvbnNvbGVpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lMGEyYWQ3ZWFlNWFiZjY3IGlucHV0PWNlZmJkOGFiYzI0ZGY2YTBdKi8KK3sKKyAgICBpZiAoc2VsZi0+aGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQorICAgICAgICByZXR1cm4gZXJyX2Nsb3NlZCgpOworICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpIHNlbGYtPndyaXRhYmxlKTsKK30KKworc3RhdGljIERXT1JECitfYnVmbGVuKHdpbmNvbnNvbGVpbyAqc2VsZikKK3sKKyAgICBmb3IgKERXT1JEIGkgPSAwOyBpIDwgU01BTExCVUY7ICsraSkgeworICAgICAgICBpZiAoIXNlbGYtPmJ1ZltpXSkKKyAgICAgICAgICAgIHJldHVybiBpOworICAgIH0KKyAgICByZXR1cm4gU01BTExCVUY7Cit9CisKK3N0YXRpYyBEV09SRAorX2NvcHlmcm9tYnVmKHdpbmNvbnNvbGVpbyAqc2VsZiwgY2hhciAqYnVmLCBEV09SRCBsZW4pCit7CisgICAgRFdPUkQgbiA9IDA7CisKKyAgICB3aGlsZSAoc2VsZi0+YnVmWzBdICYmIGxlbi0tKSB7CisgICAgICAgIGJ1ZltuKytdID0gc2VsZi0+YnVmWzBdOworICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IFNNQUxMQlVGOyArK2kpCisgICAgICAgICAgICBzZWxmLT5idWZbaSAtIDFdID0gc2VsZi0+YnVmW2ldOworICAgICAgICBzZWxmLT5idWZbU01BTExCVUYgLSAxXSA9IDA7CisgICAgfQorCisgICAgcmV0dXJuIG47Cit9CisKK3N0YXRpYyB3Y2hhcl90ICoKK3JlYWRfY29uc29sZV93KEhBTkRMRSBoYW5kbGUsIERXT1JEIG1heGxlbiwgRFdPUkQgKnJlYWRsZW4pIHsKKyAgICBpbnQgZXJyID0gMCwgc2lnID0gMDsKKworICAgIHdjaGFyX3QgKmJ1ZiA9ICh3Y2hhcl90KilQeU1lbV9NYWxsb2MobWF4bGVuICogc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICBpZiAoIWJ1ZikKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgICpyZWFkbGVuID0gMDsKKworICAgIC8vRGVidWdCcmVhaygpOworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBEV09SRCBvZmYgPSAwOworICAgIHdoaWxlIChvZmYgPCBtYXhsZW4pIHsKKyAgICAgICAgRFdPUkQgbiwgbGVuID0gbWluKG1heGxlbiAtIG9mZiwgQlVGU0laKTsKKyAgICAgICAgU2V0TGFzdEVycm9yKDApOworICAgICAgICBCT09MIHJlcyA9IFJlYWRDb25zb2xlVyhoYW5kbGUsICZidWZbb2ZmXSwgbGVuLCAmbiwgTlVMTCk7CisKKyAgICAgICAgaWYgKCFyZXMpIHsKKyAgICAgICAgICAgIGVyciA9IEdldExhc3RFcnJvcigpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG4gPT0gMCkgeworICAgICAgICAgICAgZXJyID0gR2V0TGFzdEVycm9yKCk7CisgICAgICAgICAgICBpZiAoZXJyICE9IEVSUk9SX09QRVJBVElPTl9BQk9SVEVEKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZXJyID0gMDsKKyAgICAgICAgICAgIEhBTkRMRSBoSW50ZXJydXB0RXZlbnQgPSBfUHlPU19TaWdpbnRFdmVudCgpOworICAgICAgICAgICAgaWYgKFdhaXRGb3JTaW5nbGVPYmplY3RFeChoSW50ZXJydXB0RXZlbnQsIDEwMCwgRkFMU0UpCisgICAgICAgICAgICAgICAgICAgID09IFdBSVRfT0JKRUNUXzApIHsKKyAgICAgICAgICAgICAgICBSZXNldEV2ZW50KGhJbnRlcnJ1cHRFdmVudCk7CisgICAgICAgICAgICAgICAgUHlfQkxPQ0tfVEhSRUFEUworICAgICAgICAgICAgICAgIHNpZyA9IFB5RXJyX0NoZWNrU2lnbmFscygpOworICAgICAgICAgICAgICAgIFB5X1VOQkxPQ0tfVEhSRUFEUworICAgICAgICAgICAgICAgIGlmIChzaWcgPCAwKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAqcmVhZGxlbiArPSBuOworCisgICAgICAgIC8qIElmIHdlIGRpZG4ndCByZWFkIGEgZnVsbCBidWZmZXIgdGhhdCB0aW1lLCBkb24ndCB0cnkKKyAgICAgICAgICAgYWdhaW4gb3Igd2Ugd2lsbCBibG9jayBhIHNlY29uZCB0aW1lLiAqLworICAgICAgICBpZiAobiA8IGxlbikKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAvKiBJZiB0aGUgYnVmZmVyIGVuZGVkIHdpdGggYSBuZXdsaW5lLCBicmVhayBvdXQgKi8KKyAgICAgICAgaWYgKGJ1ZlsqcmVhZGxlbiAtIDFdID09ICdcbicpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgLyogSWYgdGhlIGJ1ZmZlciBlbmRzIHdpdGggYSBoaWdoIHN1cnJvZ2F0ZSwgZXhwYW5kIHRoZQorICAgICAgICAgICBidWZmZXIgYW5kIHJlYWQgYW4gZXh0cmEgY2hhcmFjdGVyLiAqLworICAgICAgICBXT1JEIGNoYXJfdHlwZTsKKyAgICAgICAgaWYgKG9mZiArIEJVRlNJWiA+PSBtYXhsZW4gJiYKKyAgICAgICAgICAgIEdldFN0cmluZ1R5cGVXKENUX0NUWVBFMywgJmJ1ZlsqcmVhZGxlbiAtIDFdLCAxLCAmY2hhcl90eXBlKSAmJgorICAgICAgICAgICAgY2hhcl90eXBlID09IEMzX0hJR0hTVVJST0dBVEUpIHsKKyAgICAgICAgICAgIHdjaGFyX3QgKm5ld2J1ZjsKKyAgICAgICAgICAgIG1heGxlbiArPSAxOworICAgICAgICAgICAgUHlfQkxPQ0tfVEhSRUFEUworICAgICAgICAgICAgbmV3YnVmID0gKHdjaGFyX3QqKVB5TWVtX1JlYWxsb2MoYnVmLCBtYXhsZW4gKiBzaXplb2Yod2NoYXJfdCkpOworICAgICAgICAgICAgUHlfVU5CTE9DS19USFJFQURTCisgICAgICAgICAgICBpZiAoIW5ld2J1ZikgeworICAgICAgICAgICAgICAgIHNpZyA9IC0xOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnVmID0gbmV3YnVmOworICAgICAgICAgICAgLyogT25seSBhZHZhbmNlIGJ5IG4gYW5kIG5vdCBCVUZTSVogaW4gdGhpcyBjYXNlICovCisgICAgICAgICAgICBvZmYgKz0gbjsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgb2ZmICs9IEJVRlNJWjsKKyAgICB9CisKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKHNpZykKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBpZiAoZXJyKSB7CisgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKGVycik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgaWYgKCpyZWFkbGVuID4gMCAmJiBidWZbMF0gPT0gTCdceDFhJykgeworICAgICAgICBQeU1lbV9GcmVlKGJ1Zik7CisgICAgICAgIGJ1ZiA9ICh3Y2hhcl90ICopUHlNZW1fTWFsbG9jKHNpemVvZih3Y2hhcl90KSk7CisgICAgICAgIGlmICghYnVmKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgYnVmWzBdID0gTCdcMCc7CisgICAgICAgICpyZWFkbGVuID0gMDsKKyAgICB9CisKKyAgICByZXR1cm4gYnVmOworCitlcnJvcjoKKyAgICBpZiAoYnVmKQorICAgICAgICBQeU1lbV9GcmVlKGJ1Zik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKworc3RhdGljIFB5X3NzaXplX3QKK3JlYWRpbnRvKHdpbmNvbnNvbGVpbyAqc2VsZiwgY2hhciAqYnVmLCBQeV9zc2l6ZV90IGxlbikKK3sKKyAgICBpZiAoc2VsZi0+aGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7CisgICAgICAgIGVycl9jbG9zZWQoKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoIXNlbGYtPnJlYWRhYmxlKSB7CisgICAgICAgIGVycl9tb2RlKCJyZWFkaW5nIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKGxlbiA9PSAwKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAobGVuID4gQlVGTUFYKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAiY2Fubm90IHJlYWQgbW9yZSB0aGFuICVkIGJ5dGVzIiwgQlVGTUFYKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIC8qIEVhY2ggY2hhcmFjdGVyIG1heSB0YWtlIHVwIHRvIDQgYnl0ZXMgaW4gdGhlIGZpbmFsIGJ1ZmZlci4KKyAgICAgICBUaGlzIGlzIGhpZ2hseSBjb25zZXJ2YXRpdmUsIGJ1dCBuZWNlc3NhcnkgdG8gYXZvaWQKKyAgICAgICBmYWlsdXJlIGZvciBhbnkgZ2l2ZW4gVW5pY29kZSBpbnB1dCAoZS5nLiBcVTAwMTBmZmZmKS4KKyAgICAgICBJZiB0aGUgY2FsbGVyIHJlcXVlc3RzIGZld2VyIHRoYW4gNCBieXRlcywgd2UgYnVmZmVyIG9uZQorICAgICAgIGNoYXJhY3Rlci4KKyAgICAqLworICAgIERXT1JEIHdsZW4gPSAoRFdPUkQpKGxlbiAvIDQpOworICAgIGlmICh3bGVuID09IDApIHsKKyAgICAgICAgd2xlbiA9IDE7CisgICAgfQorCisgICAgRFdPUkQgcmVhZF9sZW4gPSBfY29weWZyb21idWYoc2VsZiwgYnVmLCAoRFdPUkQpbGVuKTsKKyAgICBpZiAocmVhZF9sZW4pIHsKKyAgICAgICAgYnVmID0gJmJ1ZltyZWFkX2xlbl07CisgICAgICAgIGxlbiAtPSByZWFkX2xlbjsKKyAgICAgICAgd2xlbiAtPSAxOworICAgIH0KKyAgICBpZiAobGVuID09IHJlYWRfbGVuIHx8IHdsZW4gPT0gMCkKKyAgICAgICAgcmV0dXJuIHJlYWRfbGVuOworCisgICAgRFdPUkQgbjsKKyAgICB3Y2hhcl90ICp3YnVmID0gcmVhZF9jb25zb2xlX3coc2VsZi0+aGFuZGxlLCB3bGVuLCAmbik7CisgICAgaWYgKHdidWYgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmIChuID09IDApIHsKKyAgICAgICAgUHlNZW1fRnJlZSh3YnVmKTsKKyAgICAgICAgcmV0dXJuIHJlYWRfbGVuOworICAgIH0KKworICAgIGludCBlcnIgPSAwOworICAgIERXT1JEIHU4biA9IDA7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgaWYgKGxlbiA8IDQpIHsKKyAgICAgICAgaWYgKFdpZGVDaGFyVG9NdWx0aUJ5dGUoQ1BfVVRGOCwgMCwgd2J1ZiwgbiwKKyAgICAgICAgICAgICAgICBzZWxmLT5idWYsIHNpemVvZihzZWxmLT5idWYpIC8gc2l6ZW9mKHNlbGYtPmJ1ZlswXSksCisgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCkpCisgICAgICAgICAgICB1OG4gPSBfY29weWZyb21idWYoc2VsZiwgYnVmLCAoRFdPUkQpbGVuKTsKKyAgICB9IGVsc2UgeworICAgICAgICB1OG4gPSBXaWRlQ2hhclRvTXVsdGlCeXRlKENQX1VURjgsIDAsIHdidWYsIG4sCisgICAgICAgICAgICBidWYsIChEV09SRClsZW4sIE5VTEwsIE5VTEwpOworICAgIH0KKworICAgIGlmICh1OG4pIHsKKyAgICAgICAgcmVhZF9sZW4gKz0gdThuOworICAgICAgICB1OG4gPSAwOworICAgIH0gZWxzZSB7CisgICAgICAgIGVyciA9IEdldExhc3RFcnJvcigpOworICAgICAgICBpZiAoZXJyID09IEVSUk9SX0lOU1VGRklDSUVOVF9CVUZGRVIpIHsKKyAgICAgICAgICAgIC8qIENhbGN1bGF0ZSB0aGUgbmVlZGVkIGJ1ZmZlciBmb3IgYSBtb3JlIHVzZWZ1bCBlcnJvciwgYXMgdGhpcworICAgICAgICAgICAgICAgIG1lYW5zIG91ciAiLyA0IiBsb2dpYyBhYm92ZSBpcyBpbnN1ZmZpY2llbnQgZm9yIHNvbWUgaW5wdXQuCisgICAgICAgICAgICAqLworICAgICAgICAgICAgdThuID0gV2lkZUNoYXJUb011bHRpQnl0ZShDUF9VVEY4LCAwLCB3YnVmLCBuLAorICAgICAgICAgICAgICAgIE5VTEwsIDAsIE5VTEwsIE5VTEwpOworICAgICAgICB9CisgICAgfQorICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBQeU1lbV9GcmVlKHdidWYpOworCisgICAgaWYgKHU4bikgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAiQnVmZmVyIGhhZCByb29tIGZvciAlZCBieXRlcyBidXQgJWQgYnl0ZXMgcmVxdWlyZWQiLAorICAgICAgICAgICAgbGVuLCB1OG4pOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChlcnIpIHsKKyAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoZXJyKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIHJldHVybiByZWFkX2xlbjsKK30KKworLypbY2xpbmljIGlucHV0XQorX2lvLl9XaW5kb3dzQ29uc29sZUlPLnJlYWRpbnRvCisgICAgYnVmZmVyOiBQeV9idWZmZXIoYWNjZXB0PXtyd2J1ZmZlcn0pCisgICAgLworCitTYW1lIGFzIFJhd0lPQmFzZS5yZWFkaW50bygpLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRpbnRvX2ltcGwod2luY29uc29sZWlvICpzZWxmLCBQeV9idWZmZXIgKmJ1ZmZlcikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02NmQxYmRmYTNmMjBhZjM5IGlucHV0PTRlZDY4ZGE0OGE2YmFmZmVdKi8KK3sKKyAgICBQeV9zc2l6ZV90IGxlbiA9IHJlYWRpbnRvKHNlbGYsIGJ1ZmZlci0+YnVmLCBidWZmZXItPmxlbik7CisgICAgaWYgKGxlbiA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChsZW4pOworfQorCitzdGF0aWMgRFdPUkQKK25ld19idWZmZXJzaXplKHdpbmNvbnNvbGVpbyAqc2VsZiwgRFdPUkQgY3VycmVudHNpemUpCit7CisgICAgRFdPUkQgYWRkZW5kOworCisgICAgLyogRXhwYW5kIHRoZSBidWZmZXIgYnkgYW4gYW1vdW50IHByb3BvcnRpb25hbCB0byB0aGUgY3VycmVudCBzaXplLAorICAgICAgIGdpdmluZyB1cyBhbW9ydGl6ZWQgbGluZWFyLXRpbWUgYmVoYXZpb3IuICBGb3IgYmlnZ2VyIHNpemVzLCB1c2UgYQorICAgICAgIGxlc3MtdGhhbi1kb3VibGUgZ3Jvd3RoIGZhY3RvciB0byBhdm9pZCBleGNlc3NpdmUgYWxsb2NhdGlvbi4gKi8KKyAgICBpZiAoY3VycmVudHNpemUgPiA2NTUzNikKKyAgICAgICAgYWRkZW5kID0gY3VycmVudHNpemUgPj4gMzsKKyAgICBlbHNlCisgICAgICAgIGFkZGVuZCA9IDI1NiArIGN1cnJlbnRzaXplOworICAgIGlmIChhZGRlbmQgPCBTTUFMTENIVU5LKQorICAgICAgICAvKiBBdm9pZCB0aW55IHJlYWQoKSBjYWxscy4gKi8KKyAgICAgICAgYWRkZW5kID0gU01BTExDSFVOSzsKKyAgICByZXR1cm4gYWRkZW5kICsgY3VycmVudHNpemU7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fV2luZG93c0NvbnNvbGVJTy5yZWFkYWxsCisKK1JlYWQgYWxsIGRhdGEgZnJvbSB0aGUgY29uc29sZSwgcmV0dXJuZWQgYXMgYnl0ZXMuCisKK1JldHVybiBhbiBlbXB0eSBieXRlcyBvYmplY3QgYXQgRU9GLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRhbGxfaW1wbCh3aW5jb25zb2xlaW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTZkMzEyYzY4NGY2ZTIzYiBpbnB1dD00MDI0ZDY0OWExMDA2ZTY5XSovCit7CisgICAgd2NoYXJfdCAqYnVmOworICAgIERXT1JEIGJ1ZnNpemUsIG4sIGxlbiA9IDA7CisgICAgUHlPYmplY3QgKmJ5dGVzOworICAgIERXT1JEIGJ5dGVzX3NpemUsIHJuOworCisgICAgaWYgKHNlbGYtPmhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKKyAgICAgICAgcmV0dXJuIGVycl9jbG9zZWQoKTsKKworICAgIGJ1ZnNpemUgPSBCVUZTSVo7CisKKyAgICBidWYgPSAod2NoYXJfdCopUHlNZW1fTWFsbG9jKChidWZzaXplICsgMSkgKiBzaXplb2Yod2NoYXJfdCkpOworICAgIGlmIChidWYgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICB3aGlsZSAoMSkgeworICAgICAgICB3Y2hhcl90ICpzdWJidWY7CisKKyAgICAgICAgaWYgKGxlbiA+PSAoUHlfc3NpemVfdClidWZzaXplKSB7CisgICAgICAgICAgICBEV09SRCBuZXdzaXplID0gbmV3X2J1ZmZlcnNpemUoc2VsZiwgbGVuKTsKKyAgICAgICAgICAgIGlmIChuZXdzaXplID4gQlVGTUFYKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKG5ld3NpemUgPCBidWZzaXplKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmJvdW5kZWQgcmVhZCByZXR1cm5lZCBtb3JlIGJ5dGVzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRoYW4gYSBQeXRob24gYnl0ZXMgb2JqZWN0IGNhbiBob2xkIik7CisgICAgICAgICAgICAgICAgUHlNZW1fRnJlZShidWYpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnVmc2l6ZSA9IG5ld3NpemU7CisKKyAgICAgICAgICAgIGJ1ZiA9IFB5TWVtX1JlYWxsb2MoYnVmLCAoYnVmc2l6ZSArIDEpICogc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICAgICAgICAgIGlmICghYnVmKSB7CisgICAgICAgICAgICAgICAgUHlNZW1fRnJlZShidWYpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgc3ViYnVmID0gcmVhZF9jb25zb2xlX3coc2VsZi0+aGFuZGxlLCBidWZzaXplIC0gbGVuLCAmbik7CisKKyAgICAgICAgaWYgKHN1YmJ1ZiA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeU1lbV9GcmVlKGJ1Zik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChuID4gMCkKKyAgICAgICAgICAgIHdjc25jcHlfcygmYnVmW2xlbl0sIGJ1ZnNpemUgLSBsZW4gKyAxLCBzdWJidWYsIG4pOworCisgICAgICAgIFB5TWVtX0ZyZWUoc3ViYnVmKTsKKworICAgICAgICAvKiB3aGVuIHRoZSByZWFkIGlzIGVtcHR5IHdlIGJyZWFrICovCisgICAgICAgIGlmIChuID09IDApCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBsZW4gKz0gbjsKKyAgICB9CisKKyAgICBpZiAobGVuID09IDAgJiYgX2J1ZmxlbihzZWxmKSA9PSAwKSB7CisgICAgICAgIC8qIHdoZW4gdGhlIHJlc3VsdCBzdGFydHMgd2l0aCBeWiB3ZSByZXR1cm4gYW4gZW1wdHkgYnVmZmVyICovCisgICAgICAgIFB5TWVtX0ZyZWUoYnVmKTsKKyAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgMCk7CisgICAgfQorCisgICAgaWYgKGxlbikgeworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIGJ5dGVzX3NpemUgPSBXaWRlQ2hhclRvTXVsdGlCeXRlKENQX1VURjgsIDAsIGJ1ZiwgbGVuLAorICAgICAgICAgICAgTlVMTCwgMCwgTlVMTCwgTlVMTCk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICAgICAgaWYgKCFieXRlc19zaXplKSB7CisgICAgICAgICAgICBEV09SRCBlcnIgPSBHZXRMYXN0RXJyb3IoKTsKKyAgICAgICAgICAgIFB5TWVtX0ZyZWUoYnVmKTsKKyAgICAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycihlcnIpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgYnl0ZXNfc2l6ZSA9IDA7CisgICAgfQorCisgICAgYnl0ZXNfc2l6ZSArPSBfYnVmbGVuKHNlbGYpOworICAgIGJ5dGVzID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBieXRlc19zaXplKTsKKyAgICBybiA9IF9jb3B5ZnJvbWJ1ZihzZWxmLCBQeUJ5dGVzX0FTX1NUUklORyhieXRlcyksIGJ5dGVzX3NpemUpOworCisgICAgaWYgKGxlbikgeworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIGJ5dGVzX3NpemUgPSBXaWRlQ2hhclRvTXVsdGlCeXRlKENQX1VURjgsIDAsIGJ1ZiwgbGVuLAorICAgICAgICAgICAgJlB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVzKVtybl0sIGJ5dGVzX3NpemUgLSBybiwgTlVMTCwgTlVMTCk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICAgICAgaWYgKCFieXRlc19zaXplKSB7CisgICAgICAgICAgICBEV09SRCBlcnIgPSBHZXRMYXN0RXJyb3IoKTsKKyAgICAgICAgICAgIFB5TWVtX0ZyZWUoYnVmKTsKKyAgICAgICAgICAgIFB5X0NMRUFSKGJ5dGVzKTsKKyAgICAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycihlcnIpOworICAgICAgICB9CisKKyAgICAgICAgLyogYWRkIGJhY2sgdGhlIG51bWJlciBvZiBwcmVzZXJ2ZWQgYnl0ZXMgKi8KKyAgICAgICAgYnl0ZXNfc2l6ZSArPSBybjsKKyAgICB9CisKKyAgICBQeU1lbV9GcmVlKGJ1Zik7CisgICAgaWYgKGJ5dGVzX3NpemUgPCAoc2l6ZV90KVB5Qnl0ZXNfR0VUX1NJWkUoYnl0ZXMpKSB7CisgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJmJ5dGVzLCBuICogc2l6ZW9mKHdjaGFyX3QpKSA8IDApIHsKKyAgICAgICAgICAgIFB5X0NMRUFSKGJ5dGVzKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBieXRlczsKK30KKworLypbY2xpbmljIGlucHV0XQorX2lvLl9XaW5kb3dzQ29uc29sZUlPLnJlYWQKKyAgICBzaXplOiBpb19zc2l6ZV90ID0gLTEKKyAgICAvCisKK1JlYWQgYXQgbW9zdCBzaXplIGJ5dGVzLCByZXR1cm5lZCBhcyBieXRlcy4KKworT25seSBtYWtlcyBvbmUgc3lzdGVtIGNhbGwgd2hlbiBzaXplIGlzIGEgcG9zaXRpdmUgaW50ZWdlciwKK3NvIGxlc3MgZGF0YSBtYXkgYmUgcmV0dXJuZWQgdGhhbiByZXF1ZXN0ZWQuCitSZXR1cm4gYW4gZW1wdHkgYnl0ZXMgb2JqZWN0IGF0IEVPRi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19yZWFkX2ltcGwod2luY29uc29sZWlvICpzZWxmLCBQeV9zc2l6ZV90IHNpemUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTdkZjY4YWY5ZjRiMjJkMCBpbnB1dD02YzU2ZmNlZWM0NjBmMWRkXSovCit7CisgICAgUHlPYmplY3QgKmJ5dGVzOworICAgIFB5X3NzaXplX3QgYnl0ZXNfc2l6ZTsKKworICAgIGlmIChzZWxmLT5oYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCisgICAgICAgIHJldHVybiBlcnJfY2xvc2VkKCk7CisgICAgaWYgKCFzZWxmLT5yZWFkYWJsZSkKKyAgICAgICAgcmV0dXJuIGVycl9tb2RlKCJyZWFkaW5nIik7CisKKyAgICBpZiAoc2l6ZSA8IDApCisgICAgICAgIHJldHVybiBfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZGFsbF9pbXBsKHNlbGYpOworICAgIGlmIChzaXplID4gQlVGTUFYKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAiY2Fubm90IHJlYWQgbW9yZSB0aGFuICVkIGJ5dGVzIiwgQlVGTUFYKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgYnl0ZXMgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNpemUpOworICAgIGlmIChieXRlcyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGJ5dGVzX3NpemUgPSByZWFkaW50byhzZWxmLCBQeUJ5dGVzX0FTX1NUUklORyhieXRlcyksIFB5Qnl0ZXNfR0VUX1NJWkUoYnl0ZXMpKTsKKyAgICBpZiAoYnl0ZXNfc2l6ZSA8IDApIHsKKyAgICAgICAgUHlfQ0xFQVIoYnl0ZXMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoYnl0ZXNfc2l6ZSA8IFB5Qnl0ZXNfR0VUX1NJWkUoYnl0ZXMpKSB7CisgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJmJ5dGVzLCBieXRlc19zaXplKSA8IDApIHsKKyAgICAgICAgICAgIFB5X0NMRUFSKGJ5dGVzKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGJ5dGVzOworfQorCisvKltjbGluaWMgaW5wdXRdCitfaW8uX1dpbmRvd3NDb25zb2xlSU8ud3JpdGUKKyAgICBiOiBQeV9idWZmZXIKKyAgICAvCisKK1dyaXRlIGJ1ZmZlciBiIHRvIGZpbGUsIHJldHVybiBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbi4KKworT25seSBtYWtlcyBvbmUgc3lzdGVtIGNhbGwsIHNvIG5vdCBhbGwgb2YgdGhlIGRhdGEgbWF5IGJlIHdyaXR0ZW4uCitUaGUgbnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5IHdyaXR0ZW4gaXMgcmV0dXJuZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9fd3JpdGVfaW1wbCh3aW5jb25zb2xlaW8gKnNlbGYsIFB5X2J1ZmZlciAqYikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03NzViZGIxNmZiZjkxMzdiIGlucHV0PWJlMzVmYjYyNGY5N2M5NDFdKi8KK3sKKyAgICBCT09MIHJlcyA9IFRSVUU7CisgICAgd2NoYXJfdCAqd2J1ZjsKKyAgICBEV09SRCBsZW4sIHdsZW4sIG4gPSAwOworCisgICAgaWYgKHNlbGYtPmhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKKyAgICAgICAgcmV0dXJuIGVycl9jbG9zZWQoKTsKKyAgICBpZiAoIXNlbGYtPndyaXRhYmxlKQorICAgICAgICByZXR1cm4gZXJyX21vZGUoIndyaXRpbmciKTsKKworICAgIGlmIChiLT5sZW4gPiBCVUZNQVgpCisgICAgICAgIGxlbiA9IEJVRk1BWDsKKyAgICBlbHNlCisgICAgICAgIGxlbiA9IChEV09SRCliLT5sZW47CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgd2xlbiA9IE11bHRpQnl0ZVRvV2lkZUNoYXIoQ1BfVVRGOCwgMCwgYi0+YnVmLCBsZW4sIE5VTEwsIDApOworCisgICAgLyogaXNzdWUxMTM5NSB0aGVyZSBpcyBhbiB1bnNwZWNpZmllZCB1cHBlciBib3VuZCBvbiBob3cgbWFueSBieXRlcworICAgICAgIGNhbiBiZSB3cml0dGVuIGF0IG9uY2UuIFdlIGNhcCBhdCAzMmsgLSB0aGUgY2FsbGVyIHdpbGwgaGF2ZSB0bworICAgICAgIGhhbmRsZSBwYXJ0aWFsIHdyaXRlcy4KKyAgICAgICBTaW5jZSB3ZSBkb24ndCBrbm93IGhvdyBtYW55IGlucHV0IGJ5dGVzIGFyZSBiZWluZyBpZ25vcmVkLCB3ZQorICAgICAgIGhhdmUgdG8gcmVkdWNlIGFuZCByZWNhbGN1bGF0ZS4gKi8KKyAgICB3aGlsZSAod2xlbiA+IDMyNzY2IC8gc2l6ZW9mKHdjaGFyX3QpKSB7CisgICAgICAgIGxlbiAvPSAyOworICAgICAgICB3bGVuID0gTXVsdGlCeXRlVG9XaWRlQ2hhcihDUF9VVEY4LCAwLCBiLT5idWYsIGxlbiwgTlVMTCwgMCk7CisgICAgfQorICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAoIXdsZW4pCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKKworICAgIHdidWYgPSAod2NoYXJfdCopUHlNZW1fTWFsbG9jKHdsZW4gKiBzaXplb2Yod2NoYXJfdCkpOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHdsZW4gPSBNdWx0aUJ5dGVUb1dpZGVDaGFyKENQX1VURjgsIDAsIGItPmJ1ZiwgbGVuLCB3YnVmLCB3bGVuKTsKKyAgICBpZiAod2xlbikgeworICAgICAgICByZXMgPSBXcml0ZUNvbnNvbGVXKHNlbGYtPmhhbmRsZSwgd2J1Ziwgd2xlbiwgJm4sIE5VTEwpOworICAgICAgICBpZiAobiA8IHdsZW4pIHsKKyAgICAgICAgICAgIC8qIFdyb3RlIGZld2VyIGNoYXJhY3RlcnMgdGhhbiBleHBlY3RlZCwgd2hpY2ggbWVhbnMgb3VyCisgICAgICAgICAgICAgKiBsZW4gdmFsdWUgbWF5IGJlIHdyb25nLiBTbyByZWNhbGN1bGF0ZSBpdCBmcm9tIHRoZQorICAgICAgICAgICAgICogY2hhcmFjdGVycyB0aGF0IHdlcmUgd3JpdHRlbi4gQXMgdGhpcyBjb3VsZCBwb3RlbnRpYWxseQorICAgICAgICAgICAgICogcmVzdWx0IGluIGEgZGlmZmVyZW50IHZhbHVlLCB3ZSBhbHNvIHZhbGlkYXRlIHRoYXQgdmFsdWUuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGxlbiA9IFdpZGVDaGFyVG9NdWx0aUJ5dGUoQ1BfVVRGOCwgMCwgd2J1ZiwgbiwKKyAgICAgICAgICAgICAgICBOVUxMLCAwLCBOVUxMLCBOVUxMKTsKKyAgICAgICAgICAgIGlmIChsZW4pIHsKKyAgICAgICAgICAgICAgICB3bGVuID0gTXVsdGlCeXRlVG9XaWRlQ2hhcihDUF9VVEY4LCAwLCBiLT5idWYsIGxlbiwKKyAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KHdsZW4gPT0gbGVuKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0gZWxzZQorICAgICAgICByZXMgPSAwOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAoIXJlcykgeworICAgICAgICBEV09SRCBlcnIgPSBHZXRMYXN0RXJyb3IoKTsKKyAgICAgICAgUHlNZW1fRnJlZSh3YnVmKTsKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKGVycik7CisgICAgfQorCisgICAgUHlNZW1fRnJlZSh3YnVmKTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KGxlbik7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5jb25zb2xlaW9fcmVwcih3aW5jb25zb2xlaW8gKnNlbGYpCit7CisgICAgaWYgKHNlbGYtPmhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8X2lvLl9XaW5kb3dzQ29uc29sZUlPIFtjbG9zZWRdPiIpOworCisgICAgaWYgKHNlbGYtPnJlYWRhYmxlKQorICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjxfaW8uX1dpbmRvd3NDb25zb2xlSU8gbW9kZT0ncmInIGNsb3NlZmQ9JXM+IiwKKyAgICAgICAgICAgIHNlbGYtPmNsb3NlaGFuZGxlID8gIlRydWUiIDogIkZhbHNlIik7CisgICAgaWYgKHNlbGYtPndyaXRhYmxlKQorICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjxfaW8uX1dpbmRvd3NDb25zb2xlSU8gbW9kZT0nd2InIGNsb3NlZmQ9JXM+IiwKKyAgICAgICAgICAgIHNlbGYtPmNsb3NlaGFuZGxlID8gIlRydWUiIDogIkZhbHNlIik7CisKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsICJfV2luZG93c0NvbnNvbGVJTyBoYXMgaW52YWxpZCBtb2RlIik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fV2luZG93c0NvbnNvbGVJTy5pc2F0dHkKKworQWx3YXlzIFRydWUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9faXNhdHR5X2ltcGwod2luY29uc29sZWlvICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTllYWMwOWQyODdjMTFiZDcgaW5wdXQ9OWI5MTU5MWRiZTM1NmY4Nl0qLworeworICAgIGlmIChzZWxmLT5oYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCisgICAgICAgIHJldHVybiBlcnJfY2xvc2VkKCk7CisKKyAgICBQeV9SRVRVUk5fVFJVRTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbmNvbnNvbGVpb19nZXRzdGF0ZSh3aW5jb25zb2xlaW8gKnNlbGYpCit7CisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgImNhbm5vdCBzZXJpYWxpemUgJyVzJyBvYmplY3QiLCBQeV9UWVBFKHNlbGYpLT50cF9uYW1lKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworI2luY2x1ZGUgImNsaW5pYy93aW5jb25zb2xlaW8uYy5oIgorCitzdGF0aWMgUHlNZXRob2REZWYgd2luY29uc29sZWlvX21ldGhvZHNbXSA9IHsKKyAgICBfSU9fX1dJTkRPV1NDT05TT0xFSU9fUkVBRF9NRVRIT0RERUYKKyAgICBfSU9fX1dJTkRPV1NDT05TT0xFSU9fUkVBREFMTF9NRVRIT0RERUYKKyAgICBfSU9fX1dJTkRPV1NDT05TT0xFSU9fUkVBRElOVE9fTUVUSE9EREVGCisgICAgX0lPX19XSU5ET1dTQ09OU09MRUlPX1dSSVRFX01FVEhPRERFRgorICAgIF9JT19fV0lORE9XU0NPTlNPTEVJT19DTE9TRV9NRVRIT0RERUYKKyAgICBfSU9fX1dJTkRPV1NDT05TT0xFSU9fUkVBREFCTEVfTUVUSE9EREVGCisgICAgX0lPX19XSU5ET1dTQ09OU09MRUlPX1dSSVRBQkxFX01FVEhPRERFRgorICAgIF9JT19fV0lORE9XU0NPTlNPTEVJT19GSUxFTk9fTUVUSE9EREVGCisgICAgX0lPX19XSU5ET1dTQ09OU09MRUlPX0lTQVRUWV9NRVRIT0RERUYKKyAgICB7Il9fZ2V0c3RhdGVfXyIsIChQeUNGdW5jdGlvbil3aW5jb25zb2xlaW9fZ2V0c3RhdGUsIE1FVEhfTk9BUkdTLCBOVUxMfSwKKyAgICB7TlVMTCwgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAgIC8qIHNlbnRpbmVsICovCit9OworCisvKiAnY2xvc2VkJyBhbmQgJ21vZGUnIGFyZSBhdHRyaWJ1dGVzIGZvciBjb21wYXRpYmlsaXR5IHdpdGggRmlsZUlPLiAqLworCitzdGF0aWMgUHlPYmplY3QgKgorZ2V0X2Nsb3NlZCh3aW5jb25zb2xlaW8gKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygobG9uZykoc2VsZi0+aGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitnZXRfY2xvc2VmZCh3aW5jb25zb2xlaW8gKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygobG9uZykoc2VsZi0+Y2xvc2VoYW5kbGUpKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2dldF9tb2RlKHdpbmNvbnNvbGVpbyAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoc2VsZi0+cmVhZGFibGUgPyAicmIiIDogIndiIik7Cit9CisKK3N0YXRpYyBQeUdldFNldERlZiB3aW5jb25zb2xlaW9fZ2V0c2V0bGlzdFtdID0geworICAgIHsiY2xvc2VkIiwgKGdldHRlcilnZXRfY2xvc2VkLCBOVUxMLCAiVHJ1ZSBpZiB0aGUgZmlsZSBpcyBjbG9zZWQifSwKKyAgICB7ImNsb3NlZmQiLCAoZ2V0dGVyKWdldF9jbG9zZWZkLCBOVUxMLAorICAgICAgICAiVHJ1ZSBpZiB0aGUgZmlsZSBkZXNjcmlwdG9yIHdpbGwgYmUgY2xvc2VkIGJ5IGNsb3NlKCkuIn0sCisgICAgeyJtb2RlIiwgKGdldHRlcilnZXRfbW9kZSwgTlVMTCwgIlN0cmluZyBnaXZpbmcgdGhlIGZpbGUgbW9kZSJ9LAorICAgIHtOVUxMfSwKK307CisKK3N0YXRpYyBQeU1lbWJlckRlZiB3aW5jb25zb2xlaW9fbWVtYmVyc1tdID0geworICAgIHsiX2Jsa3NpemUiLCBUX1VJTlQsIG9mZnNldG9mKHdpbmNvbnNvbGVpbywgYmxrc2l6ZSksIDB9LAorICAgIHsiX2ZpbmFsaXppbmciLCBUX0JPT0wsIG9mZnNldG9mKHdpbmNvbnNvbGVpbywgZmluYWxpemluZyksIDB9LAorICAgIHtOVUxMfQorfTsKKworUHlUeXBlT2JqZWN0IFB5V2luZG93c0NvbnNvbGVJT19UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgICJfaW8uX1dpbmRvd3NDb25zb2xlSU8iLAorICAgIHNpemVvZih3aW5jb25zb2xlaW8pLAorICAgIDAsCisgICAgKGRlc3RydWN0b3Ipd2luY29uc29sZWlvX2RlYWxsb2MsICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAocmVwcmZ1bmMpd2luY29uc29sZWlvX3JlcHIsICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFCisgICAgICAgIHwgUHlfVFBGTEFHU19IQVZFX0dDIHwgUHlfVFBGTEFHU19IQVZFX0ZJTkFMSVpFLCAgICAgICAvKiB0cF9mbGFncyAqLworICAgIF9pb19fV2luZG93c0NvbnNvbGVJT19fX2luaXRfX19fZG9jX18sICAgICAgLyogdHBfZG9jICovCisgICAgKHRyYXZlcnNlcHJvYyl3aW5jb25zb2xlaW9fdHJhdmVyc2UsICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIChpbnF1aXJ5KXdpbmNvbnNvbGVpb19jbGVhciwgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgb2Zmc2V0b2Yod2luY29uc29sZWlvLCB3ZWFrcmVmbGlzdCksICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICB3aW5jb25zb2xlaW9fbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICB3aW5jb25zb2xlaW9fbWVtYmVycywgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICB3aW5jb25zb2xlaW9fZ2V0c2V0bGlzdCwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICBvZmZzZXRvZih3aW5jb25zb2xlaW8sIGRpY3QpLCAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICBfaW9fX1dpbmRvd3NDb25zb2xlSU9fX19pbml0X18sICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICBQeVR5cGVfR2VuZXJpY0FsbG9jLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgd2luY29uc29sZWlvX25ldywgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KKyAgICBQeU9iamVjdF9HQ19EZWwsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2lzX2djICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbXJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWNoZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3ViY2xhc3NlcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RlbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdmVyc2lvbl90YWcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZpbmFsaXplICovCit9OworCitQeUFQSV9EQVRBKFB5T2JqZWN0ICopIF9QeVdpbmRvd3NDb25zb2xlSU9fVHlwZSA9IChQeU9iamVjdCopJlB5V2luZG93c0NvbnNvbGVJT19UeXBlOworCisjZW5kaWYgLyogTVNfV0lORE9XUyAqLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fanNvbi5jIGIvTW9kdWxlcy9fanNvbi5jCmluZGV4IGY4MmFmMzQuLmQzZGJmOTggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2pzb24uYworKysgYi9Nb2R1bGVzL19qc29uLmMKQEAgLTExMiw3ICsxMTIsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIF9lbmNvZGVkX2NvbnN0KFB5T2JqZWN0ICpvYmopOwogc3RhdGljIHZvaWQKLXJhaXNlX2Vycm1zZyhjaGFyICptc2csIFB5T2JqZWN0ICpzLCBQeV9zc2l6ZV90IGVuZCk7CityYWlzZV9lcnJtc2coY29uc3QgY2hhciAqbXNnLCBQeU9iamVjdCAqcywgUHlfc3NpemVfdCBlbmQpOwogc3RhdGljIFB5T2JqZWN0ICoKIGVuY29kZXJfZW5jb2RlX3N0cmluZyhQeUVuY29kZXJPYmplY3QgKnMsIFB5T2JqZWN0ICpvYmopOwogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTMyMSw3ICszMjEsNyBAQAogfQogCiBzdGF0aWMgdm9pZAotcmFpc2VfZXJybXNnKGNoYXIgKm1zZywgUHlPYmplY3QgKnMsIFB5X3NzaXplX3QgZW5kKQorcmFpc2VfZXJybXNnKGNvbnN0IGNoYXIgKm1zZywgUHlPYmplY3QgKnMsIFB5X3NzaXplX3QgZW5kKQogewogICAgIC8qIFVzZSBKU09ORGVjb2RlRXJyb3IgZXhjZXB0aW9uIHRvIHJhaXNlIGEgbmljZSBsb29raW5nIFZhbHVlRXJyb3Igc3ViY2xhc3MgKi8KICAgICBzdGF0aWMgUHlPYmplY3QgKkpTT05EZWNvZGVFcnJvciA9IE5VTEw7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19sb2NhbGVtb2R1bGUuYyBiL01vZHVsZXMvX2xvY2FsZW1vZHVsZS5jCmluZGV4IGIxMzA3ZWYuLmZlYjM4MDIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2xvY2FsZW1vZHVsZS5jCisrKyBiL01vZHVsZXMvX2xvY2FsZW1vZHVsZS5jCkBAIC00OSw3ICs0OSw3IEBACiAKIC8qIHRoZSBncm91cGluZyBpcyB0ZXJtaW5hdGVkIGJ5IGVpdGhlciAwIG9yIENIQVJfTUFYICovCiBzdGF0aWMgUHlPYmplY3QqCi1jb3B5X2dyb3VwaW5nKGNoYXIqIHMpCitjb3B5X2dyb3VwaW5nKGNvbnN0IGNoYXIqIHMpCiB7CiAgICAgaW50IGk7CiAgICAgUHlPYmplY3QgKnJlc3VsdCwgKnZhbCA9IE5VTEw7CkBAIC02MjIsNTMgKzYyMiwzNCBAQAogUHlNT0RJTklUX0ZVTkMKIFB5SW5pdF9fbG9jYWxlKHZvaWQpCiB7Ci0gICAgUHlPYmplY3QgKm0sICpkLCAqeDsKKyAgICBQeU9iamVjdCAqbTsKICNpZmRlZiBIQVZFX0xBTkdJTkZPX0gKICAgICBpbnQgaTsKICNlbmRpZgogCiAgICAgbSA9IFB5TW9kdWxlX0NyZWF0ZSgmX2xvY2FsZW1vZHVsZSk7CiAgICAgaWYgKG0gPT0gTlVMTCkKLSAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBkID0gUHlNb2R1bGVfR2V0RGljdChtKTsKLQotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoTENfQ1RZUEUpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJMQ19DVFlQRSIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7Ci0KLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKExDX1RJTUUpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJMQ19USU1FIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKLQotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoTENfQ09MTEFURSk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkxDX0NPTExBVEUiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOwotCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhMQ19NT05FVEFSWSk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkxDX01PTkVUQVJZIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBMQ19DVFlQRSk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTENfVElNRSk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTENfQ09MTEFURSk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTENfTU9ORVRBUlkpOwogCiAjaWZkZWYgTENfTUVTU0FHRVMKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKExDX01FU1NBR0VTKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiTENfTUVTU0FHRVMiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIExDX01FU1NBR0VTKTsKICNlbmRpZiAvKiBMQ19NRVNTQUdFUyAqLwogCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhMQ19OVU1FUklDKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiTENfTlVNRVJJQyIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7Ci0KLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKExDX0FMTCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkxDX0FMTCIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7Ci0KLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKENIQVJfTUFYKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiQ0hBUl9NQVgiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIExDX05VTUVSSUMpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIExDX0FMTCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0hBUl9NQVgpOwogCiAgICAgRXJyb3IgPSBQeUVycl9OZXdFeGNlcHRpb24oImxvY2FsZS5FcnJvciIsIE5VTEwsIE5VTEwpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJFcnJvciIsIEVycm9yKTsKKyAgICBpZiAoRXJyb3IgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYobSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIkVycm9yIiwgRXJyb3IpOwogCiAjaWZkZWYgSEFWRV9MQU5HSU5GT19ICiAgICAgZm9yIChpID0gMDsgbGFuZ2luZm9fY29uc3RhbnRzW2ldLm5hbWU7IGkrKykgewpAQCAtNjc2LDYgKzY1NywxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5naW5mb19jb25zdGFudHNbaV0udmFsdWUpOwogICAgIH0KICNlbmRpZgorCisgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgUHlfREVDUkVGKG0pOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgcmV0dXJuIG07CiB9CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2xzcHJvZi5jIGIvTW9kdWxlcy9fbHNwcm9mLmMKaW5kZXggNzg3NmU3MS4uMGU3NjIzZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fbHNwcm9mLmMKKysrIGIvTW9kdWxlcy9fbHNwcm9mLmMKQEAgLTIsMTcgKzIsMTMgQEAKICNpbmNsdWRlICJmcmFtZW9iamVjdC5oIgogI2luY2x1ZGUgInJvdGF0aW5ndHJlZS5oIgogCi0jaWYgIWRlZmluZWQoSEFWRV9MT05HX0xPTkcpCi0jZXJyb3IgIlRoaXMgbW9kdWxlIHJlcXVpcmVzIGxvbmcgbG9uZ3MhIgotI2VuZGlmCi0KIC8qKiogU2VsZWN0aW9uIG9mIGEgaGlnaC1wcmVjaXNpb24gdGltZXIgKioqLwogCiAjaWZkZWYgTVNfV0lORE9XUwogCiAjaW5jbHVkZSA8d2luZG93cy5oPgogCi1zdGF0aWMgUFlfTE9OR19MT05HCitzdGF0aWMgbG9uZyBsb25nCiBocFRpbWVyKHZvaWQpCiB7CiAgICAgTEFSR0VfSU5URUdFUiBsaTsKQEAgLTM5LDExICszNSwxMSBAQAogI2luY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgogI2luY2x1ZGUgPHN5cy90aW1lcy5oPgogCi1zdGF0aWMgUFlfTE9OR19MT05HCitzdGF0aWMgbG9uZyBsb25nCiBocFRpbWVyKHZvaWQpCiB7CiAgICAgc3RydWN0IHRpbWV2YWwgdHY7Ci0gICAgUFlfTE9OR19MT05HIHJldDsKKyAgICBsb25nIGxvbmcgcmV0OwogI2lmZGVmIEdFVFRJTUVPRkRBWV9OT19UWgogICAgIGdldHRpbWVvZmRheSgmdHYpOwogI2Vsc2UKQEAgLTcwLDggKzY2LDggQEAKIC8qIHJlcHJlc2VudHMgYSBmdW5jdGlvbiBjYWxsZWQgZnJvbSBhbm90aGVyIGZ1bmN0aW9uICovCiB0eXBlZGVmIHN0cnVjdCBfUHJvZmlsZXJTdWJFbnRyeSB7CiAgICAgcm90YXRpbmdfbm9kZV90IGhlYWRlcjsKLSAgICBQWV9MT05HX0xPTkcgdHQ7Ci0gICAgUFlfTE9OR19MT05HIGl0OworICAgIGxvbmcgbG9uZyB0dDsKKyAgICBsb25nIGxvbmcgaXQ7CiAgICAgbG9uZyBjYWxsY291bnQ7CiAgICAgbG9uZyByZWN1cnNpdmVjYWxsY291bnQ7CiAgICAgbG9uZyByZWN1cnNpb25MZXZlbDsKQEAgLTgxLDggKzc3LDggQEAKIHR5cGVkZWYgc3RydWN0IF9Qcm9maWxlckVudHJ5IHsKICAgICByb3RhdGluZ19ub2RlX3QgaGVhZGVyOwogICAgIFB5T2JqZWN0ICp1c2VyT2JqOyAvKiBQeUNvZGVPYmplY3QsIG9yIGEgZGVzY3JpcHRpdmUgc3RyIGZvciBidWlsdGlucyAqLwotICAgIFBZX0xPTkdfTE9ORyB0dDsgLyogdG90YWwgdGltZSBpbiB0aGlzIGVudHJ5ICovCi0gICAgUFlfTE9OR19MT05HIGl0OyAvKiBpbmxpbmUgdGltZSBpbiB0aGlzIGVudHJ5IChub3QgaW4gc3ViY2FsbHMpICovCisgICAgbG9uZyBsb25nIHR0OyAvKiB0b3RhbCB0aW1lIGluIHRoaXMgZW50cnkgKi8KKyAgICBsb25nIGxvbmcgaXQ7IC8qIGlubGluZSB0aW1lIGluIHRoaXMgZW50cnkgKG5vdCBpbiBzdWJjYWxscykgKi8KICAgICBsb25nIGNhbGxjb3VudDsgLyogaG93IG1hbnkgdGltZXMgdGhpcyB3YXMgY2FsbGVkICovCiAgICAgbG9uZyByZWN1cnNpdmVjYWxsY291bnQ7IC8qIGhvdyBtYW55IHRpbWVzIGNhbGxlZCByZWN1cnNpdmVseSAqLwogICAgIGxvbmcgcmVjdXJzaW9uTGV2ZWw7CkBAIC05MCw4ICs4Niw4IEBACiB9IFByb2ZpbGVyRW50cnk7CiAKIHR5cGVkZWYgc3RydWN0IF9Qcm9maWxlckNvbnRleHQgewotICAgIFBZX0xPTkdfTE9ORyB0MDsKLSAgICBQWV9MT05HX0xPTkcgc3VidDsKKyAgICBsb25nIGxvbmcgdDA7CisgICAgbG9uZyBsb25nIHN1YnQ7CiAgICAgc3RydWN0IF9Qcm9maWxlckNvbnRleHQgKnByZXZpb3VzOwogICAgIFByb2ZpbGVyRW50cnkgKmN0eEVudHJ5OwogfSBQcm9maWxlckNvbnRleHQ7CkBAIC0xMjEsOSArMTE3LDkgQEAKICNkZWZpbmUgRE9VQkxFX1RJTUVSX1BSRUNJU0lPTiAgIDQyOTQ5NjcyOTYuMAogc3RhdGljIFB5T2JqZWN0ICplbXB0eV90dXBsZTsKIAotc3RhdGljIFBZX0xPTkdfTE9ORyBDYWxsRXh0ZXJuYWxUaW1lcihQcm9maWxlck9iamVjdCAqcE9iaikKK3N0YXRpYyBsb25nIGxvbmcgQ2FsbEV4dGVybmFsVGltZXIoUHJvZmlsZXJPYmplY3QgKnBPYmopCiB7Ci0gICAgUFlfTE9OR19MT05HIHJlc3VsdDsKKyAgICBsb25nIGxvbmcgcmVzdWx0OwogICAgIFB5T2JqZWN0ICpvID0gUHlPYmplY3RfQ2FsbChwT2JqLT5leHRlcm5hbFRpbWVyLCBlbXB0eV90dXBsZSwgTlVMTCk7CiAgICAgaWYgKG8gPT0gTlVMTCkgewogICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUocE9iai0+ZXh0ZXJuYWxUaW1lcik7CkBAIC0xMzYsMTEgKzEzMiwxMSBAQAogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgLyogaW50ZXJwcmV0IHRoZSByZXN1bHQgYXMgYSBkb3VibGUgbWVhc3VyZWQgaW4gc2Vjb25kcy4KLSAgICAgICAgICAgQXMgdGhlIHByb2ZpbGVyIHdvcmtzIHdpdGggUFlfTE9OR19MT05HIGludGVybmFsbHkKKyAgICAgICAgICAgQXMgdGhlIHByb2ZpbGVyIHdvcmtzIHdpdGggbG9uZyBsb25nIGludGVybmFsbHkKICAgICAgICAgICAgd2UgY29udmVydCBpdCB0byBhIGxhcmdlIGludGVnZXIgKi8KICAgICAgICAgZG91YmxlIHZhbCA9IFB5RmxvYXRfQXNEb3VibGUobyk7CiAgICAgICAgIC8qIGVycm9yIGhhbmRsaW5nIGRlbGF5ZWQgdG8gdGhlIGNvZGUgYmVsb3cgKi8KLSAgICAgICAgcmVzdWx0ID0gKFBZX0xPTkdfTE9ORykgKHZhbCAqIERPVUJMRV9USU1FUl9QUkVDSVNJT04pOworICAgICAgICByZXN1bHQgPSAobG9uZyBsb25nKSAodmFsICogRE9VQkxFX1RJTUVSX1BSRUNJU0lPTik7CiAgICAgfQogICAgIFB5X0RFQ1JFRihvKTsKICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgewpAQCAtMzQyLDggKzMzOCw4IEBACiBzdGF0aWMgdm9pZAogU3RvcChQcm9maWxlck9iamVjdCAqcE9iaiwgUHJvZmlsZXJDb250ZXh0ICpzZWxmLCBQcm9maWxlckVudHJ5ICplbnRyeSkKIHsKLSAgICBQWV9MT05HX0xPTkcgdHQgPSBDQUxMX1RJTUVSKHBPYmopIC0gc2VsZi0+dDA7Ci0gICAgUFlfTE9OR19MT05HIGl0ID0gdHQgLSBzZWxmLT5zdWJ0OworICAgIGxvbmcgbG9uZyB0dCA9IENBTExfVElNRVIocE9iaikgLSBzZWxmLT50MDsKKyAgICBsb25nIGxvbmcgaXQgPSB0dCAtIHNlbGYtPnN1YnQ7CiAgICAgaWYgKHNlbGYtPnByZXZpb3VzKQogICAgICAgICBzZWxmLT5wcmV2aW91cy0+c3VidCArPSB0dDsKICAgICBwT2JqLT5jdXJyZW50UHJvZmlsZXJDb250ZXh0ID0gc2VsZi0+cHJldmlvdXM7CkBAIC03NjIsNyArNzU4LDYgQEAKIHN0YXRpYyBpbnQKIHByb2ZpbGVyX2luaXQoUHJvZmlsZXJPYmplY3QgKnBPYmosIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3cpCiB7Ci0gICAgUHlPYmplY3QgKm87CiAgICAgUHlPYmplY3QgKnRpbWVyID0gTlVMTDsKICAgICBkb3VibGUgdGltZXVuaXQgPSAwLjA7CiAgICAgaW50IHN1YmNhbGxzID0gMTsKQEAgLTc3NywxMSArNzcyLDkgQEAKIAogICAgIGlmIChzZXRTdWJjYWxscyhwT2JqLCBzdWJjYWxscykgPCAwIHx8IHNldEJ1aWx0aW5zKHBPYmosIGJ1aWx0aW5zKSA8IDApCiAgICAgICAgIHJldHVybiAtMTsKLSAgICBvID0gcE9iai0+ZXh0ZXJuYWxUaW1lcjsKLSAgICBwT2JqLT5leHRlcm5hbFRpbWVyID0gdGltZXI7Ci0gICAgUHlfWElOQ1JFRih0aW1lcik7Ci0gICAgUHlfWERFQ1JFRihvKTsKICAgICBwT2JqLT5leHRlcm5hbFRpbWVyVW5pdCA9IHRpbWV1bml0OworICAgIFB5X1hJTkNSRUYodGltZXIpOworICAgIFB5X1hTRVRSRUYocE9iai0+ZXh0ZXJuYWxUaW1lciwgdGltZXIpOwogICAgIHJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19sem1hbW9kdWxlLmMgYi9Nb2R1bGVzL19sem1hbW9kdWxlLmMKaW5kZXggZTdiMWVkOS4uYmI3NzU1MiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fbHptYW1vZHVsZS5jCisrKyBiL01vZHVsZXMvX2x6bWFtb2R1bGUuYwpAQCAtMTgsMTIgKzE4LDYgQEAKIAogI2luY2x1ZGUgPGx6bWEuaD4KIAotCi0jaWZuZGVmIFBZX0xPTkdfTE9ORwotI2Vycm9yICJUaGlzIG1vZHVsZSByZXF1aXJlcyBQWV9MT05HX0xPTkcgdG8gYmUgZGVmaW5lZCIKLSNlbmRpZgotCi0KICNpZmRlZiBXSVRIX1RIUkVBRAogI2RlZmluZSBBQ1FVSVJFX0xPQ0sob2JqKSBkbyB7IFwKICAgICBpZiAoIVB5VGhyZWFkX2FjcXVpcmVfbG9jaygob2JqKS0+bG9jaywgMCkpIHsgXApAQCAtMTYzLDcgKzE1Nyw3IEBACiAgICAgICB1aW50MzJfdCAtIHRoZSAiSSIgKHVuc2lnbmVkIGludCkgc3BlY2lmaWVyIGlzIHRoZSByaWdodCBzaXplLCBidXQKICAgICAgIHNpbGVudGx5IGlnbm9yZXMgb3ZlcmZsb3dzIG9uIGNvbnZlcnNpb24uCiAKLSAgICAgIGx6bWFfdmxpIC0gdGhlICJLIiAodW5zaWduZWQgUFlfTE9OR19MT05HKSBzcGVjaWZpZXIgaXMgdGhlIHJpZ2h0CisgICAgICBsem1hX3ZsaSAtIHRoZSAiSyIgKHVuc2lnbmVkIGxvbmcgbG9uZykgc3BlY2lmaWVyIGlzIHRoZSByaWdodAogICAgICAgc2l6ZSwgYnV0IGxpa2UgIkkiIGl0IHNpbGVudGx5IGlnbm9yZXMgb3ZlcmZsb3dzIG9uIGNvbnZlcnNpb24uCiAKICAgICAgIGx6bWFfbW9kZSBhbmQgbHptYV9tYXRjaF9maW5kZXIgLSB0aGVzZSBhcmUgZW51bWVyYXRpb24gdHlwZXMsIGFuZApAQCAtMTc2LDEyICsxNzAsMTIgQEAKICAgICBzdGF0aWMgaW50IFwKICAgICBGVU5DTkFNRShQeU9iamVjdCAqb2JqLCB2b2lkICpwdHIpIFwKICAgICB7IFwKLSAgICAgICAgdW5zaWduZWQgUFlfTE9OR19MT05HIHZhbDsgXAorICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgdmFsOyBcCiAgICAgICAgIFwKICAgICAgICAgdmFsID0gUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZyhvYmopOyBcCiAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSBcCiAgICAgICAgICAgICByZXR1cm4gMDsgXAotICAgICAgICBpZiAoKHVuc2lnbmVkIFBZX0xPTkdfTE9ORykoVFlQRSl2YWwgIT0gdmFsKSB7IFwKKyAgICAgICAgaWYgKCh1bnNpZ25lZCBsb25nIGxvbmcpKFRZUEUpdmFsICE9IHZhbCkgeyBcCiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJWYWx1ZSB0b28gbGFyZ2UgZm9yICIgI1RZUEUgIiB0eXBlIik7IFwKICAgICAgICAgICAgIHJldHVybiAwOyBcCkBAIC0zOTgsNyArMzkyLDcgQEAKICAgIFB5dGhvbi1sZXZlbCBmaWx0ZXIgc3BlY2lmaWVycyAocmVwcmVzZW50ZWQgYXMgZGljdHMpLiAqLwogCiBzdGF0aWMgaW50Ci1zcGVjX2FkZF9maWVsZChQeU9iamVjdCAqc3BlYywgX1B5X0lkZW50aWZpZXIgKmtleSwgdW5zaWduZWQgUFlfTE9OR19MT05HIHZhbHVlKQorc3BlY19hZGRfZmllbGQoUHlPYmplY3QgKnNwZWMsIF9QeV9JZGVudGlmaWVyICprZXksIHVuc2lnbmVkIGxvbmcgbG9uZyB2YWx1ZSkKIHsKICAgICBpbnQgc3RhdHVzOwogICAgIFB5T2JqZWN0ICp2YWx1ZV9vYmplY3Q7CkBAIC01NTUsNyArNTQ5LDYgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIF9sem1hLkxaTUFDb21wcmVzc29yLmNvbXByZXNzCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IkNvbXByZXNzb3IgKiIpCiAgICAgZGF0YTogUHlfYnVmZmVyCiAgICAgLwogCkBAIC01NjksNyArNTYyLDcgQEAKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9sem1hX0xaTUFDb21wcmVzc29yX2NvbXByZXNzX2ltcGwoQ29tcHJlc3NvciAqc2VsZiwgUHlfYnVmZmVyICpkYXRhKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTMxZjYxNTEzNjk2M2UwMGYgaW5wdXQ9OGI2MGNiMTNlMGNlNjQyMF0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTMxZjYxNTEzNjk2M2UwMGYgaW5wdXQ9NjQwMTllYWM3ZjJjYzhkMF0qLwogewogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogCkBAIC01ODUsOCArNTc4LDYgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIF9sem1hLkxaTUFDb21wcmVzc29yLmZsdXNoCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IkNvbXByZXNzb3IgKiIpCi0KIEZpbmlzaCB0aGUgY29tcHJlc3Npb24gcHJvY2Vzcy4KIAogUmV0dXJucyB0aGUgY29tcHJlc3NlZCBkYXRhIGxlZnQgaW4gaW50ZXJuYWwgYnVmZmVycy4KQEAgLTU5Niw3ICs1ODcsNyBAQAogCiBzdGF0aWMgUHlPYmplY3QgKgogX2x6bWFfTFpNQUNvbXByZXNzb3JfZmx1c2hfaW1wbChDb21wcmVzc29yICpzZWxmKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWZlYzIxZjNlMjI1MDRmNTAgaW5wdXQ9MzA2MGZiMjZmOWI0MDQyY10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWZlYzIxZjNlMjI1MDRmNTAgaW5wdXQ9NmIzNjkzMDNmNjdhZDBhOF0qLwogewogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogCkBAIC03MDAsNyArNjkxLDYgQEAKIC8qWy1jbGluaWMgaW5wdXRdCiBfbHptYS5MWk1BQ29tcHJlc3Nvci5fX2luaXRfXwogCi0gICAgc2VsZjogc2VsZih0eXBlPSJDb21wcmVzc29yICoiKQogICAgIGZvcm1hdDogaW50KGNfZGVmYXVsdD0iRk9STUFUX1haIikgPSBGT1JNQVRfWFoKICAgICAgICAgVGhlIGNvbnRhaW5lciBmb3JtYXQgdG8gdXNlIGZvciB0aGUgb3V0cHV0LiAgVGhpcyBjYW4KICAgICAgICAgYmUgRk9STUFUX1haIChkZWZhdWx0KSwgRk9STUFUX0FMT05FLCBvciBGT1JNQVRfUkFXLgpAQCAtMTA3MCw3ICsxMDYwLDYgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIF9sem1hLkxaTUFEZWNvbXByZXNzb3IuZGVjb21wcmVzcwogCi0gICAgc2VsZjogc2VsZih0eXBlPSJEZWNvbXByZXNzb3IgKiIpCiAgICAgZGF0YTogUHlfYnVmZmVyCiAgICAgbWF4X2xlbmd0aDogUHlfc3NpemVfdD0tMQogCkBAIC0xMDkzLDcgKzEwODIsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIF9sem1hX0xaTUFEZWNvbXByZXNzb3JfZGVjb21wcmVzc19pbXBsKERlY29tcHJlc3NvciAqc2VsZiwgUHlfYnVmZmVyICpkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhfbGVuZ3RoKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWVmNGUyMGVjNzEyMjI0MWQgaW5wdXQ9ZjJiYjkwMmNjMWNhZjIwM10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWVmNGUyMGVjNzEyMjI0MWQgaW5wdXQ9NjBjMWYxMzU4MjBlMzA5ZF0qLwogewogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogCkBAIC0xMTMzLDcgKzExMjIsNiBAQAogLypbY2xpbmljIGlucHV0XQogX2x6bWEuTFpNQURlY29tcHJlc3Nvci5fX2luaXRfXwogCi0gICAgc2VsZjogc2VsZih0eXBlPSJEZWNvbXByZXNzb3IgKiIpCiAgICAgZm9ybWF0OiBpbnQoY19kZWZhdWx0PSJGT1JNQVRfQVVUTyIpID0gRk9STUFUX0FVVE8KICAgICAgICAgU3BlY2lmaWVzIHRoZSBjb250YWluZXIgZm9ybWF0IG9mIHRoZSBpbnB1dCBzdHJlYW0uICBJZiB0aGlzIGlzCiAgICAgICAgIEZPUk1BVF9BVVRPICh0aGUgZGVmYXVsdCksIHRoZSBkZWNvbXByZXNzb3Igd2lsbCBhdXRvbWF0aWNhbGx5IGRldGVjdApAQCAtMTE1OSw3ICsxMTQ3LDcgQEAKIHN0YXRpYyBpbnQKIF9sem1hX0xaTUFEZWNvbXByZXNzb3JfX19pbml0X19faW1wbChEZWNvbXByZXNzb3IgKnNlbGYsIGludCBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm1lbWxpbWl0LCBQeU9iamVjdCAqZmlsdGVycykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zZTE4MjFmOGFhMzY1NjRjIGlucHV0PTQ1OGNhNjEzMmVmMjk4MDFdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zZTE4MjFmOGFhMzY1NjRjIGlucHV0PTgxZmU2ODRhNmMyZjhhMjddKi8KIHsKICAgICBjb25zdCB1aW50MzJfdCBkZWNvZGVyX2ZsYWdzID0gTFpNQV9URUxMX0FOWV9DSEVDSyB8IExaTUFfVEVMTF9OT19DSEVDSzsKICAgICB1aW50NjRfdCBtZW1saW1pdF8gPSBVSU5UNjRfTUFYOwpAQCAtMTQ1NCw3ICsxNDQyLDcgQEAKIC8qIFNvbWUgb2Ygb3VyIGNvbnN0YW50cyBhcmUgbW9yZSB0aGFuIDMyIGJpdHMgd2lkZSwgc28gUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQKICAgIHdvdWxkIG5vdCB3b3JrIGNvcnJlY3RseSBvbiBwbGF0Zm9ybXMgd2l0aCAzMi1iaXQgbG9uZ3MuICovCiBzdGF0aWMgaW50Ci1tb2R1bGVfYWRkX2ludF9jb25zdGFudChQeU9iamVjdCAqbSwgY29uc3QgY2hhciAqbmFtZSwgUFlfTE9OR19MT05HIHZhbHVlKQorbW9kdWxlX2FkZF9pbnRfY29uc3RhbnQoUHlPYmplY3QgKm0sIGNvbnN0IGNoYXIgKm5hbWUsIGxvbmcgbG9uZyB2YWx1ZSkKIHsKICAgICBQeU9iamVjdCAqbyA9IFB5TG9uZ19Gcm9tTG9uZ0xvbmcodmFsdWUpOwogICAgIGlmIChvID09IE5VTEwpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19tdWx0aXByb2Nlc3NpbmcvbXVsdGlwcm9jZXNzaW5nLmMgYi9Nb2R1bGVzL19tdWx0aXByb2Nlc3NpbmcvbXVsdGlwcm9jZXNzaW5nLmMKaW5kZXggNGFlNjM4ZS4uZDkyYThiZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL211bHRpcHJvY2Vzc2luZy5jCisrKyBiL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9tdWx0aXByb2Nlc3NpbmcuYwpAQCAtMTI4LDcgKzEyOCw3IEBACiAgICAgeyJyZWN2IiwgbXVsdGlwcm9jZXNzaW5nX3JlY3YsIE1FVEhfVkFSQVJHUywgIiJ9LAogICAgIHsic2VuZCIsIG11bHRpcHJvY2Vzc2luZ19zZW5kLCBNRVRIX1ZBUkFSR1MsICIifSwKICNlbmRpZgotI2lmbmRlZiBQT1NJWF9TRU1BUEhPUkVTX05PVF9FTkFCTEVECisjaWYgIWRlZmluZWQoUE9TSVhfU0VNQVBIT1JFU19OT1RfRU5BQkxFRCkgJiYgIWRlZmluZWQoX19BTkRST0lEX18pCiAgICAgeyJzZW1fdW5saW5rIiwgX1B5TXBfc2VtX3VubGluaywgTUVUSF9WQVJBUkdTLCAiIn0sCiAjZW5kaWYKICAgICB7TlVMTH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9tdWx0aXByb2Nlc3NpbmcuaCBiL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9tdWx0aXByb2Nlc3NpbmcuaAppbmRleCA5YWVlYThkLi41MTJiYzE3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19tdWx0aXByb2Nlc3NpbmcvbXVsdGlwcm9jZXNzaW5nLmgKKysrIGIvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL211bHRpcHJvY2Vzc2luZy5oCkBAIC02MCw3ICs2MCw3IEBACiAjaWYgU0laRU9GX1ZPSURfUCA9PSBTSVpFT0ZfTE9ORwogIyAgZGVmaW5lIEZfUE9JTlRFUiAiayIKICMgIGRlZmluZSBUX1BPSU5URVIgVF9VTE9ORwotI2VsaWYgZGVmaW5lZChIQVZFX0xPTkdfTE9ORykgJiYgKFNJWkVPRl9WT0lEX1AgPT0gU0laRU9GX0xPTkdfTE9ORykKKyNlbGlmIFNJWkVPRl9WT0lEX1AgPT0gU0laRU9GX0xPTkdfTE9ORwogIyAgZGVmaW5lIEZfUE9JTlRFUiAiSyIKICMgIGRlZmluZSBUX1BPSU5URVIgVF9VTE9OR0xPTkcKICNlbHNlCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19vcGVyYXRvci5jIGIvTW9kdWxlcy9fb3BlcmF0b3IuYwppbmRleCBkZmZmMWQyLi5mYjhlYWZjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19vcGVyYXRvci5jCisrKyBiL01vZHVsZXMvX29wZXJhdG9yLmMKQEAgLTExMTEsNiArMTExMSw4IEBACiAgICAgICAgIFB5T2JqZWN0ICpmdW5jdG9vbHM7CiAgICAgICAgIFB5T2JqZWN0ICpwYXJ0aWFsOwogICAgICAgICBQeU9iamVjdCAqY29uc3RydWN0b3I7CisgICAgICAgIFB5T2JqZWN0ICpuZXdhcmdzWzJdOworCiAgICAgICAgIF9QeV9JREVOVElGSUVSKHBhcnRpYWwpOwogICAgICAgICBmdW5jdG9vbHMgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoImZ1bmN0b29scyIpOwogICAgICAgICBpZiAoIWZ1bmN0b29scykKQEAgLTExMTksMTcgKzExMjEsMTEgQEAKICAgICAgICAgUHlfREVDUkVGKGZ1bmN0b29scyk7CiAgICAgICAgIGlmICghcGFydGlhbCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBuZXdhcmdzID0gUHlUdXBsZV9OZXcoMik7Ci0gICAgICAgIGlmIChuZXdhcmdzID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihwYXJ0aWFsKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9UWVBFKG1jKSk7Ci0gICAgICAgIFB5VHVwbGVfU0VUX0lURU0obmV3YXJncywgMCwgKFB5T2JqZWN0ICopUHlfVFlQRShtYykpOwotICAgICAgICBQeV9JTkNSRUYobWMtPm5hbWUpOwotICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKG5ld2FyZ3MsIDEsIG1jLT5uYW1lKTsKLSAgICAgICAgY29uc3RydWN0b3IgPSBQeU9iamVjdF9DYWxsKHBhcnRpYWwsIG5ld2FyZ3MsIG1jLT5rd2RzKTsKLSAgICAgICAgUHlfREVDUkVGKG5ld2FyZ3MpOworCisgICAgICAgIG5ld2FyZ3NbMF0gPSAoUHlPYmplY3QgKilQeV9UWVBFKG1jKTsKKyAgICAgICAgbmV3YXJnc1sxXSA9IG1jLT5uYW1lOworICAgICAgICBjb25zdHJ1Y3RvciA9IF9QeU9iamVjdF9GYXN0Q2FsbERpY3QocGFydGlhbCwgbmV3YXJncywgMiwgbWMtPmt3ZHMpOworCiAgICAgICAgIFB5X0RFQ1JFRihwYXJ0aWFsKTsKICAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk5PIiwgY29uc3RydWN0b3IsIG1jLT5hcmdzKTsKICAgICB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19waWNrbGUuYyBiL01vZHVsZXMvX3BpY2tsZS5jCmluZGV4IGFjN2Y1YzQuLjc5MTEzZTAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3BpY2tsZS5jCisrKyBiL01vZHVsZXMvX3BpY2tsZS5jCkBAIC0xNTMsNiArMTUzLDkgQEAKICAgICBQeU9iamVjdCAqY29kZWNzX2VuY29kZTsKICAgICAvKiBidWlsdGlucy5nZXRhdHRyLCB1c2VkIGZvciBzYXZpbmcgbmVzdGVkIG5hbWVzIHdpdGggcHJvdG9jb2wgPCA0ICovCiAgICAgUHlPYmplY3QgKmdldGF0dHI7CisgICAgLyogZnVuY3Rvb2xzLnBhcnRpYWwsIHVzZWQgZm9yIGltcGxlbWVudGluZyBfX25ld29ial9leF9fIHdpdGggcHJvdG9jb2xzCisgICAgICAgMiBhbmQgMyAqLworICAgIFB5T2JqZWN0ICpwYXJ0aWFsOwogfSBQaWNrbGVTdGF0ZTsKIAogLyogRm9yd2FyZCBkZWNsYXJhdGlvbiBvZiB0aGUgX3BpY2tsZSBtb2R1bGUgZGVmaW5pdGlvbi4gKi8KQEAgLTE5MCw2ICsxOTMsNyBAQAogICAgIFB5X0NMRUFSKHN0LT5pbXBvcnRfbWFwcGluZ18zdG8yKTsKICAgICBQeV9DTEVBUihzdC0+Y29kZWNzX2VuY29kZSk7CiAgICAgUHlfQ0xFQVIoc3QtPmdldGF0dHIpOworICAgIFB5X0NMRUFSKHN0LT5wYXJ0aWFsKTsKIH0KIAogLyogSW5pdGlhbGl6ZSB0aGUgZ2l2ZW4gcGlja2xlIG1vZHVsZSBzdGF0ZS4gKi8KQEAgLTIwMCw2ICsyMDQsNyBAQAogICAgIFB5T2JqZWN0ICpjb3B5cmVnID0gTlVMTDsKICAgICBQeU9iamVjdCAqY29tcGF0X3BpY2tsZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmNvZGVjcyA9IE5VTEw7CisgICAgUHlPYmplY3QgKmZ1bmN0b29scyA9IE5VTEw7CiAKICAgICBidWlsdGlucyA9IFB5RXZhbF9HZXRCdWlsdGlucygpOwogICAgIGlmIChidWlsdGlucyA9PSBOVUxMKQpAQCAtMzE0LDEyICszMTksMjEgQEAKICAgICB9CiAgICAgUHlfQ0xFQVIoY29kZWNzKTsKIAorICAgIGZ1bmN0b29scyA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgiZnVuY3Rvb2xzIik7CisgICAgaWYgKCFmdW5jdG9vbHMpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgc3QtPnBhcnRpYWwgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGZ1bmN0b29scywgInBhcnRpYWwiKTsKKyAgICBpZiAoIXN0LT5wYXJ0aWFsKQorICAgICAgICBnb3RvIGVycm9yOworICAgIFB5X0NMRUFSKGZ1bmN0b29scyk7CisKICAgICByZXR1cm4gMDsKIAogICBlcnJvcjoKICAgICBQeV9DTEVBUihjb3B5cmVnKTsKICAgICBQeV9DTEVBUihjb21wYXRfcGlja2xlKTsKICAgICBQeV9DTEVBUihjb2RlY3MpOworICAgIFB5X0NMRUFSKGZ1bmN0b29scyk7CiAgICAgX1BpY2tsZV9DbGVhclN0YXRlKHN0KTsKICAgICByZXR1cm4gLTE7CiB9CkBAIC0zMzEsNDMgKzM0NSwyMCBAQAogX1BpY2tsZV9GYXN0Q2FsbChQeU9iamVjdCAqZnVuYywgUHlPYmplY3QgKm9iaikKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgIFB5T2JqZWN0ICphcmdfdHVwbGUgPSBQeVR1cGxlX05ldygxKTsKIAotICAgIC8qIE5vdGU6IHRoaXMgZnVuY3Rpb24gdXNlZCB0byByZXVzZSB0aGUgYXJndW1lbnQgdHVwbGUuIFRoaXMgdXNlZCB0byBnaXZlCi0gICAgICAgYSBzbGlnaHQgcGVyZm9ybWFuY2UgYm9vc3Qgd2l0aCBvbGRlciBwaWNrbGUgaW1wbGVtZW50YXRpb25zIHdoZXJlIG1hbnkKLSAgICAgICB1bmJ1ZmZlcmVkIHJlYWRzIG9jY3VycmVkICh0aHVzIG5lZWRpbmcgbWFueSBmdW5jdGlvbiBjYWxscykuCi0KLSAgICAgICBIb3dldmVyLCB0aGlzIG9wdGltaXphdGlvbiB3YXMgcmVtb3ZlZCBiZWNhdXNlIGl0IHdhcyB0b28gY29tcGxpY2F0ZWQKLSAgICAgICB0byBnZXQgcmlnaHQuIEl0IGFidXNlZCB0aGUgQyBBUEkgZm9yIHR1cGxlcyB0byBtdXRhdGUgdGhlbSB3aGljaCBsZWQKLSAgICAgICB0byBzdWJ0bGUgcmVmZXJlbmNlIGNvdW50aW5nIGFuZCBjb25jdXJyZW5jeSBidWdzLiBGdXJ0aGVybW9yZSwgdGhlCi0gICAgICAgaW50cm9kdWN0aW9uIG9mIHByb3RvY29sIDQgYW5kIHRoZSBwcmVmZXRjaGluZyBvcHRpbWl6YXRpb24gdmlhIHBlZWsoKQotICAgICAgIHNpZ25pZmljYW50bHkgcmVkdWNlZCB0aGUgbnVtYmVyIG9mIGZ1bmN0aW9uIGNhbGxzIHdlIGRvLiBUaHVzLCB0aGUKLSAgICAgICBiZW5lZml0cyBiZWNhbWUgbWFyZ2luYWwgYXQgYmVzdC4gKi8KLQotICAgIGlmIChhcmdfdHVwbGUgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYob2JqKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIFB5VHVwbGVfU0VUX0lURU0oYXJnX3R1cGxlLCAwLCBvYmopOwotICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGwoZnVuYywgYXJnX3R1cGxlLCBOVUxMKTsKLSAgICBQeV9DTEVBUihhcmdfdHVwbGUpOworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsQXJnMShmdW5jLCBvYmopOworICAgIFB5X0RFQ1JFRihvYmopOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCi1zdGF0aWMgaW50Ci1zdGFja191bmRlcmZsb3codm9pZCkKLXsKLSAgICBQaWNrbGVTdGF0ZSAqc3QgPSBfUGlja2xlX0dldEdsb2JhbFN0YXRlKCk7Ci0gICAgUHlFcnJfU2V0U3RyaW5nKHN0LT5VbnBpY2tsaW5nRXJyb3IsICJ1bnBpY2tsaW5nIHN0YWNrIHVuZGVyZmxvdyIpOwotICAgIHJldHVybiAtMTsKLX0KLQogLyogSW50ZXJuYWwgZGF0YSB0eXBlIHVzZWQgYXMgdGhlIHVucGlja2xpbmcgc3RhY2suICovCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfVkFSX0hFQUQKICAgICBQeU9iamVjdCAqKmRhdGE7CisgICAgaW50IG1hcmtfc2V0OyAgICAgICAgICAvKiBpcyBNQVJLIHNldD8gKi8KKyAgICBQeV9zc2l6ZV90IGZlbmNlOyAgICAgIC8qIHBvc2l0aW9uIG9mIHRvcCBNQVJLIG9yIDAgKi8KICAgICBQeV9zc2l6ZV90IGFsbG9jYXRlZDsgIC8qIG51bWJlciBvZiBzbG90cyBpbiBkYXRhIGFsbG9jYXRlZCAqLwogfSBQZGF0YTsKIApAQCAtMzk4LDYgKzM4OSw4IEBACiAgICAgaWYgKCEoc2VsZiA9IFB5T2JqZWN0X05ldyhQZGF0YSwgJlBkYXRhX1R5cGUpKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfU0laRShzZWxmKSA9IDA7CisgICAgc2VsZi0+bWFya19zZXQgPSAwOworICAgIHNlbGYtPmZlbmNlID0gMDsKICAgICBzZWxmLT5hbGxvY2F0ZWQgPSA4OwogICAgIHNlbGYtPmRhdGEgPSBQeU1lbV9NQUxMT0Moc2VsZi0+YWxsb2NhdGVkICogc2l6ZW9mKFB5T2JqZWN0ICopKTsKICAgICBpZiAoc2VsZi0+ZGF0YSkKQEAgLTQxNSw4ICs0MDgsNyBAQAogewogICAgIFB5X3NzaXplX3QgaSA9IFB5X1NJWkUoc2VsZik7CiAKLSAgICBpZiAoY2xlYXJ0byA8IDApCi0gICAgICAgIHJldHVybiBzdGFja191bmRlcmZsb3coKTsKKyAgICBhc3NlcnQoY2xlYXJ0byA+PSBzZWxmLT5mZW5jZSk7CiAgICAgaWYgKGNsZWFydG8gPj0gaSkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTQ1Miw2ICs0NDQsMTcgQEAKICAgICByZXR1cm4gLTE7CiB9CiAKK3N0YXRpYyBpbnQKK1BkYXRhX3N0YWNrX3VuZGVyZmxvdyhQZGF0YSAqc2VsZikKK3sKKyAgICBQaWNrbGVTdGF0ZSAqc3QgPSBfUGlja2xlX0dldEdsb2JhbFN0YXRlKCk7CisgICAgUHlFcnJfU2V0U3RyaW5nKHN0LT5VbnBpY2tsaW5nRXJyb3IsCisgICAgICAgICAgICAgICAgICAgIHNlbGYtPm1hcmtfc2V0ID8KKyAgICAgICAgICAgICAgICAgICAgInVuZXhwZWN0ZWQgTUFSSyBmb3VuZCIgOgorICAgICAgICAgICAgICAgICAgICAidW5waWNrbGluZyBzdGFjayB1bmRlcmZsb3ciKTsKKyAgICByZXR1cm4gLTE7Cit9CisKIC8qIEQgaXMgYSBQZGF0YSouICBQb3AgdGhlIHRvcG1vc3QgZWxlbWVudCBhbmQgc3RvcmUgaXQgaW50byBWLCB3aGljaAogICogbXVzdCBiZSBhbiBsdmFsdWUgaG9sZGluZyBQeU9iamVjdCouICBPbiBzdGFjayB1bmRlcmZsb3csIFVucGlja2xpbmdFcnJvcgogICogaXMgcmFpc2VkIGFuZCBWIGlzIHNldCB0byBOVUxMLgpAQCAtNDU5LDkgKzQ2Miw4IEBACiBzdGF0aWMgUHlPYmplY3QgKgogUGRhdGFfcG9wKFBkYXRhICpzZWxmKQogewotICAgIGlmIChQeV9TSVpFKHNlbGYpID09IDApIHsKLSAgICAgICAgUGlja2xlU3RhdGUgKnN0ID0gX1BpY2tsZV9HZXRHbG9iYWxTdGF0ZSgpOwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoc3QtPlVucGlja2xpbmdFcnJvciwgImJhZCBwaWNrbGUgZGF0YSIpOworICAgIGlmIChQeV9TSVpFKHNlbGYpIDw9IHNlbGYtPmZlbmNlKSB7CisgICAgICAgIFBkYXRhX3N0YWNrX3VuZGVyZmxvdyhzZWxmKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIHJldHVybiBzZWxmLT5kYXRhWy0tUHlfU0laRShzZWxmKV07CkBAIC00OTMsNiArNDk1LDEwIEBACiAgICAgUHlPYmplY3QgKnR1cGxlOwogICAgIFB5X3NzaXplX3QgbGVuLCBpLCBqOwogCisgICAgaWYgKHN0YXJ0IDwgc2VsZi0+ZmVuY2UpIHsKKyAgICAgICAgUGRhdGFfc3RhY2tfdW5kZXJmbG93KHNlbGYpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgbGVuID0gUHlfU0laRShzZWxmKSAtIHN0YXJ0OwogICAgIHR1cGxlID0gUHlUdXBsZV9OZXcobGVuKTsKICAgICBpZiAodHVwbGUgPT0gTlVMTCkKQEAgLTg2MCw3ICs4NjYsNyBAQAogewogICAgIHNpemVfdCBpOwogCi0gICAgYXNzZXJ0KHNpemVvZihzaXplX3QpIDw9IDgpOworICAgIFB5X0JVSUxEX0FTU0VSVChzaXplb2Yoc2l6ZV90KSA8PSA4KTsKIAogICAgIGZvciAoaSA9IDA7IGkgPCBzaXplb2Yoc2l6ZV90KTsgaSsrKSB7CiAgICAgICAgIG91dFtpXSA9ICh1bnNpZ25lZCBjaGFyKSgodmFsdWUgPj4gKDggKiBpKSkgJiAweGZmKTsKQEAgLTEwODYsNiArMTA5MiwxNCBAQAogfQogCiBzdGF0aWMgaW50CitiYWRfcmVhZGxpbmUodm9pZCkKK3sKKyAgICBQaWNrbGVTdGF0ZSAqc3QgPSBfUGlja2xlX0dldEdsb2JhbFN0YXRlKCk7CisgICAgUHlFcnJfU2V0U3RyaW5nKHN0LT5VbnBpY2tsaW5nRXJyb3IsICJwaWNrbGUgZGF0YSB3YXMgdHJ1bmNhdGVkIik7CisgICAgcmV0dXJuIC0xOworfQorCitzdGF0aWMgaW50CiBfVW5waWNrbGVyX1NraXBDb25zdW1lZChVbnBpY2tsZXJPYmplY3QgKnNlbGYpCiB7CiAgICAgUHlfc3NpemVfdCBjb25zdW1lZDsKQEAgLTExMzQsOSArMTE0OCw3IEBACiAgICAgICAgIHJldHVybiAtMTsKIAogICAgIGlmIChuID09IFJFQURfV0hPTEVfTElORSkgewotICAgICAgICBQeU9iamVjdCAqZW1wdHlfdHVwbGUgPSBQeVR1cGxlX05ldygwKTsKLSAgICAgICAgZGF0YSA9IFB5T2JqZWN0X0NhbGwoc2VsZi0+cmVhZGxpbmUsIGVtcHR5X3R1cGxlLCBOVUxMKTsKLSAgICAgICAgUHlfREVDUkVGKGVtcHR5X3R1cGxlKTsKKyAgICAgICAgZGF0YSA9IF9QeU9iamVjdF9DYWxsTm9Bcmcoc2VsZi0+cmVhZGxpbmUpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgUHlPYmplY3QgKmxlbjsKQEAgLTExNzQsNiArMTE4NiwzNiBAQAogICAgIHJldHVybiByZWFkX3NpemU7CiB9CiAKKy8qIERvbid0IGNhbGwgaXQgZGlyZWN0bHk6IHVzZSBfVW5waWNrbGVyX1JlYWQoKSAqLworc3RhdGljIFB5X3NzaXplX3QKK19VbnBpY2tsZXJfUmVhZEltcGwoVW5waWNrbGVyT2JqZWN0ICpzZWxmLCBjaGFyICoqcywgUHlfc3NpemVfdCBuKQoreworICAgIFB5X3NzaXplX3QgbnVtX3JlYWQ7CisKKyAgICAqcyA9IE5VTEw7CisgICAgaWYgKHNlbGYtPm5leHRfcmVhZF9pZHggPiBQWV9TU0laRV9UX01BWCAtIG4pIHsKKyAgICAgICAgUGlja2xlU3RhdGUgKnN0ID0gX1BpY2tsZV9HZXRHbG9iYWxTdGF0ZSgpOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoc3QtPlVucGlja2xpbmdFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJyZWFkIHdvdWxkIG92ZXJmbG93IChpbnZhbGlkIGJ5dGVjb2RlKSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgLyogVGhpcyBjYXNlIGlzIGhhbmRsZWQgYnkgdGhlIF9VbnBpY2tsZXJfUmVhZCgpIG1hY3JvIGZvciBlZmZpY2llbmN5ICovCisgICAgYXNzZXJ0KHNlbGYtPm5leHRfcmVhZF9pZHggKyBuID4gc2VsZi0+aW5wdXRfbGVuKTsKKworICAgIGlmICghc2VsZi0+cmVhZCkKKyAgICAgICAgcmV0dXJuIGJhZF9yZWFkbGluZSgpOworCisgICAgbnVtX3JlYWQgPSBfVW5waWNrbGVyX1JlYWRGcm9tRmlsZShzZWxmLCBuKTsKKyAgICBpZiAobnVtX3JlYWQgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKG51bV9yZWFkIDwgbikKKyAgICAgICAgcmV0dXJuIGJhZF9yZWFkbGluZSgpOworICAgICpzID0gc2VsZi0+aW5wdXRfYnVmZmVyOworICAgIHNlbGYtPm5leHRfcmVhZF9pZHggPSBuOworICAgIHJldHVybiBuOworfQorCiAvKiBSZWFkIGBuYCBieXRlcyBmcm9tIHRoZSB1bnBpY2tsZXIncyBkYXRhIHNvdXJjZSwgc3RvcmluZyB0aGUgcmVzdWx0IGluIGAqc2AuCiAKICAgIFRoaXMgc2hvdWxkIGJlIHVzZWQgZm9yIGFsbCBkYXRhIHJlYWRzLCByYXRoZXIgdGhhbiBhY2Nlc3NpbmcgdGhlIHVucGlja2xlcidzCkBAIC0xMTg3LDM4ICsxMjI5LDEyIEBACiAKICAgIFJldHVybnMgLTEgKHdpdGggYW4gZXhjZXB0aW9uIHNldCkgb24gZmFpbHVyZS4gT24gc3VjY2VzcywgcmV0dXJuIHRoZQogICAgbnVtYmVyIG9mIGNoYXJzIHJlYWQuICovCi1zdGF0aWMgUHlfc3NpemVfdAotX1VucGlja2xlcl9SZWFkKFVucGlja2xlck9iamVjdCAqc2VsZiwgY2hhciAqKnMsIFB5X3NzaXplX3QgbikKLXsKLSAgICBQeV9zc2l6ZV90IG51bV9yZWFkOwotCi0gICAgKnMgPSBOVUxMOwotICAgIGlmIChzZWxmLT5uZXh0X3JlYWRfaWR4ID4gUFlfU1NJWkVfVF9NQVggLSBuKSB7Ci0gICAgICAgIFBpY2tsZVN0YXRlICpzdCA9IF9QaWNrbGVfR2V0R2xvYmFsU3RhdGUoKTsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHN0LT5VbnBpY2tsaW5nRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAicmVhZCB3b3VsZCBvdmVyZmxvdyAoaW52YWxpZCBieXRlY29kZSkiKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBpZiAoc2VsZi0+bmV4dF9yZWFkX2lkeCArIG4gPD0gc2VsZi0+aW5wdXRfbGVuKSB7Ci0gICAgICAgICpzID0gc2VsZi0+aW5wdXRfYnVmZmVyICsgc2VsZi0+bmV4dF9yZWFkX2lkeDsKLSAgICAgICAgc2VsZi0+bmV4dF9yZWFkX2lkeCArPSBuOwotICAgICAgICByZXR1cm4gbjsKLSAgICB9Ci0gICAgaWYgKCFzZWxmLT5yZWFkKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19FT0ZFcnJvciwgIlJhbiBvdXQgb2YgaW5wdXQiKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBudW1fcmVhZCA9IF9VbnBpY2tsZXJfUmVhZEZyb21GaWxlKHNlbGYsIG4pOwotICAgIGlmIChudW1fcmVhZCA8IDApCi0gICAgICAgIHJldHVybiAtMTsKLSAgICBpZiAobnVtX3JlYWQgPCBuKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19FT0ZFcnJvciwgIlJhbiBvdXQgb2YgaW5wdXQiKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICAqcyA9IHNlbGYtPmlucHV0X2J1ZmZlcjsKLSAgICBzZWxmLT5uZXh0X3JlYWRfaWR4ID0gbjsKLSAgICByZXR1cm4gbjsKLX0KKyNkZWZpbmUgX1VucGlja2xlcl9SZWFkKHNlbGYsIHMsIG4pIFwKKyAgICAoKChuKSA8PSAoc2VsZiktPmlucHV0X2xlbiAtIChzZWxmKS0+bmV4dF9yZWFkX2lkeCkgICAgICBcCisgICAgID8gKCoocykgPSAoc2VsZiktPmlucHV0X2J1ZmZlciArIChzZWxmKS0+bmV4dF9yZWFkX2lkeCwgXAorICAgICAgICAoc2VsZiktPm5leHRfcmVhZF9pZHggKz0gKG4pLCAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKG4pKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIDogX1VucGlja2xlcl9SZWFkSW1wbChzZWxmLCAocyksIChuKSkpCiAKIHN0YXRpYyBQeV9zc2l6ZV90CiBfVW5waWNrbGVyX0NvcHlMaW5lKFVucGlja2xlck9iamVjdCAqc2VsZiwgY2hhciAqbGluZSwgUHlfc3NpemVfdCBsZW4sCkBAIC0xMjM4LDcgKzEyNTQsNyBAQAogfQogCiAvKiBSZWFkIGEgbGluZSBmcm9tIHRoZSBpbnB1dCBzdHJlYW0vYnVmZmVyLiBJZiB3ZSBydW4gb2ZmIHRoZSBlbmQgb2YgdGhlIGlucHV0Ci0gICBiZWZvcmUgaGl0dGluZyBcbiwgcmV0dXJuIHRoZSBkYXRhIHdlIGZvdW5kLgorICAgYmVmb3JlIGhpdHRpbmcgXG4sIHJhaXNlIGFuIGVycm9yLgogCiAgICBSZXR1cm5zIHRoZSBudW1iZXIgb2YgY2hhcnMgcmVhZCwgb3IgLTEgb24gZmFpbHVyZS4gKi8KIHN0YXRpYyBQeV9zc2l6ZV90CkBAIC0xMjU0LDIwICsxMjcwLDE2IEBACiAgICAgICAgICAgICByZXR1cm4gX1VucGlja2xlcl9Db3B5TGluZShzZWxmLCBsaW5lX3N0YXJ0LCBudW1fcmVhZCwgcmVzdWx0KTsKICAgICAgICAgfQogICAgIH0KLSAgICBpZiAoc2VsZi0+cmVhZCkgewotICAgICAgICBudW1fcmVhZCA9IF9VbnBpY2tsZXJfUmVhZEZyb21GaWxlKHNlbGYsIFJFQURfV0hPTEVfTElORSk7Ci0gICAgICAgIGlmIChudW1fcmVhZCA8IDApCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIHNlbGYtPm5leHRfcmVhZF9pZHggPSBudW1fcmVhZDsKLSAgICAgICAgcmV0dXJuIF9VbnBpY2tsZXJfQ29weUxpbmUoc2VsZiwgc2VsZi0+aW5wdXRfYnVmZmVyLCBudW1fcmVhZCwgcmVzdWx0KTsKLSAgICB9CisgICAgaWYgKCFzZWxmLT5yZWFkKQorICAgICAgICByZXR1cm4gYmFkX3JlYWRsaW5lKCk7CiAKLSAgICAvKiBJZiB3ZSBnZXQgaGVyZSwgd2UndmUgcnVuIG9mZiB0aGUgZW5kIG9mIHRoZSBpbnB1dCBzdHJpbmcuIFJldHVybiB0aGUKLSAgICAgICByZW1haW5pbmcgc3RyaW5nIGFuZCBsZXQgdGhlIGNhbGxlciBmaWd1cmUgaXQgb3V0LiAqLwotICAgICpyZXN1bHQgPSBzZWxmLT5pbnB1dF9idWZmZXIgKyBzZWxmLT5uZXh0X3JlYWRfaWR4OwotICAgIG51bV9yZWFkID0gaSAtIHNlbGYtPm5leHRfcmVhZF9pZHg7Ci0gICAgc2VsZi0+bmV4dF9yZWFkX2lkeCA9IGk7Ci0gICAgcmV0dXJuIG51bV9yZWFkOworICAgIG51bV9yZWFkID0gX1VucGlja2xlcl9SZWFkRnJvbUZpbGUoc2VsZiwgUkVBRF9XSE9MRV9MSU5FKTsKKyAgICBpZiAobnVtX3JlYWQgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKG51bV9yZWFkID09IDAgfHwgc2VsZi0+aW5wdXRfYnVmZmVyW251bV9yZWFkIC0gMV0gIT0gJ1xuJykKKyAgICAgICAgcmV0dXJuIGJhZF9yZWFkbGluZSgpOworICAgIHNlbGYtPm5leHRfcmVhZF9pZHggPSBudW1fcmVhZDsKKyAgICByZXR1cm4gX1VucGlja2xlcl9Db3B5TGluZShzZWxmLCBzZWxmLT5pbnB1dF9idWZmZXIsIG51bV9yZWFkLCByZXN1bHQpOwogfQogCiAvKiBSZXR1cm5zIC0xICh3aXRoIGFuIGV4Y2VwdGlvbiBzZXQpIG9uIGZhaWx1cmUsIDAgb24gc3VjY2Vzcy4gVGhlIG1lbW8gYXJyYXkKQEAgLTE5MzksNyArMTk1MSw3IEBACiAgICAgICAgIGlmIChyZXByID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGVycm9yOwogCi0gICAgICAgIHN0cmluZyA9IF9QeVVuaWNvZGVfQXNTdHJpbmdBbmRTaXplKHJlcHIsICZzaXplKTsKKyAgICAgICAgc3RyaW5nID0gUHlVbmljb2RlX0FzVVRGOEFuZFNpemUocmVwciwgJnNpemUpOwogICAgICAgICBpZiAoc3RyaW5nID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGVycm9yOwogCkBAIC0yMDk2LDM4ICsyMTA4LDM1IEBACiBzdGF0aWMgUHlPYmplY3QgKgogcmF3X3VuaWNvZGVfZXNjYXBlKFB5T2JqZWN0ICpvYmopCiB7Ci0gICAgUHlPYmplY3QgKnJlcHI7CiAgICAgY2hhciAqcDsKICAgICBQeV9zc2l6ZV90IGksIHNpemU7Ci0gICAgc2l6ZV90IGV4cGFuZHNpemU7CiAgICAgdm9pZCAqZGF0YTsKICAgICB1bnNpZ25lZCBpbnQga2luZDsKKyAgICBfUHlCeXRlc1dyaXRlciB3cml0ZXI7CiAKICAgICBpZiAoUHlVbmljb2RlX1JFQURZKG9iaikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCisgICAgX1B5Qnl0ZXNXcml0ZXJfSW5pdCgmd3JpdGVyKTsKKwogICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChvYmopOwogICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShvYmopOwogICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChvYmopOwotICAgIGlmIChraW5kID09IFB5VW5pY29kZV80QllURV9LSU5EKQotICAgICAgICBleHBhbmRzaXplID0gMTA7Ci0gICAgZWxzZQotICAgICAgICBleHBhbmRzaXplID0gNjsKIAotICAgIGlmICgoc2l6ZV90KXNpemUgPiAoc2l6ZV90KVBZX1NTSVpFX1RfTUFYIC8gZXhwYW5kc2l6ZSkKLSAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgcmVwciA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgZXhwYW5kc2l6ZSAqIHNpemUpOwotICAgIGlmIChyZXByID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChzaXplID09IDApCi0gICAgICAgIHJldHVybiByZXByOwotICAgIGFzc2VydChQeV9SRUZDTlQocmVwcikgPT0gMSk7CisgICAgcCA9IF9QeUJ5dGVzV3JpdGVyX0FsbG9jKCZ3cml0ZXIsIHNpemUpOworICAgIGlmIChwID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgd3JpdGVyLm92ZXJhbGxvY2F0ZSA9IDE7CiAKLSAgICBwID0gUHlCeXRlc19BU19TVFJJTkcocmVwcik7CiAgICAgZm9yIChpPTA7IGkgPCBzaXplOyBpKyspIHsKICAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOwogICAgICAgICAvKiBNYXAgMzItYml0IGNoYXJhY3RlcnMgdG8gJ1xVeHh4eHh4eHgnICovCiAgICAgICAgIGlmIChjaCA+PSAweDEwMDAwKSB7CisgICAgICAgICAgICAvKiAtMTogc3VidHJhY3QgMSBwcmVhbGxvY2F0ZWQgYnl0ZSAqLworICAgICAgICAgICAgcCA9IF9QeUJ5dGVzV3JpdGVyX1ByZXBhcmUoJndyaXRlciwgcCwgMTAtMSk7CisgICAgICAgICAgICBpZiAocCA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisKICAgICAgICAgICAgICpwKysgPSAnXFwnOwogICAgICAgICAgICAgKnArKyA9ICdVJzsKICAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDI4KSAmIDB4Zl07CkBAIC0yMTM5LDggKzIxNDgsMTMgQEAKICAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDQpICYgMHhmXTsKICAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbY2ggJiAxNV07CiAgICAgICAgIH0KLSAgICAgICAgLyogTWFwIDE2LWJpdCBjaGFyYWN0ZXJzIHRvICdcdXh4eHgnICovCisgICAgICAgIC8qIE1hcCAxNi1iaXQgY2hhcmFjdGVycywgJ1xcJyBhbmQgJ1xuJyB0byAnXHV4eHh4JyAqLwogICAgICAgICBlbHNlIGlmIChjaCA+PSAyNTYgfHwgY2ggPT0gJ1xcJyB8fCBjaCA9PSAnXG4nKSB7CisgICAgICAgICAgICAvKiAtMTogc3VidHJhY3QgMSBwcmVhbGxvY2F0ZWQgYnl0ZSAqLworICAgICAgICAgICAgcCA9IF9QeUJ5dGVzV3JpdGVyX1ByZXBhcmUoJndyaXRlciwgcCwgNi0xKTsKKyAgICAgICAgICAgIGlmIChwID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKwogICAgICAgICAgICAgKnArKyA9ICdcXCc7CiAgICAgICAgICAgICAqcCsrID0gJ3UnOwogICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMTIpICYgMHhmXTsKQEAgLTIxNTIsMTQgKzIxNjYsMTYgQEAKICAgICAgICAgZWxzZQogICAgICAgICAgICAgKnArKyA9IChjaGFyKSBjaDsKICAgICB9Ci0gICAgc2l6ZSA9IHAgLSBQeUJ5dGVzX0FTX1NUUklORyhyZXByKTsKLSAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXByLCBzaXplKSA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiByZXByOworCisgICAgcmV0dXJuIF9QeUJ5dGVzV3JpdGVyX0ZpbmlzaCgmd3JpdGVyLCBwKTsKKworZXJyb3I6CisgICAgX1B5Qnl0ZXNXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKKyAgICByZXR1cm4gTlVMTDsKIH0KIAogc3RhdGljIGludAotd3JpdGVfdXRmOChQaWNrbGVyT2JqZWN0ICpzZWxmLCBjaGFyICpkYXRhLCBQeV9zc2l6ZV90IHNpemUpCit3cml0ZV91dGY4KFBpY2tsZXJPYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKmRhdGEsIFB5X3NzaXplX3Qgc2l6ZSkKIHsKICAgICBjaGFyIGhlYWRlcls5XTsKICAgICBQeV9zc2l6ZV90IGxlbjsKQEAgLTI4NTgsNyArMjg3NCw3IEBACiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBfUHlfSURFTlRJRklFUihpdGVtcyk7CiAKLSAgICAgICAgICAgIGl0ZW1zID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChvYmosICZQeUlkX2l0ZW1zLCAiKCkiKTsKKyAgICAgICAgICAgIGl0ZW1zID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChvYmosICZQeUlkX2l0ZW1zLCBOVUxMKTsKICAgICAgICAgICAgIGlmIChpdGVtcyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICBpdGVyID0gUHlPYmplY3RfR2V0SXRlcihpdGVtcyk7CkBAIC0zNTM1LDExICszNTUxLDkgQEAKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKG5hbWUpKSB7Ci0gICAgICAgICAgICBpZiAoc2VsZi0+cHJvdG8gPj0gNCkgewotICAgICAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKF9fbmV3b2JqX2V4X18pOwotICAgICAgICAgICAgICAgIHVzZV9uZXdvYmpfZXggPSBQeVVuaWNvZGVfQ29tcGFyZSgKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIF9QeVVuaWNvZGVfRnJvbUlkKCZQeUlkX19fbmV3b2JqX2V4X18pKSA9PSAwOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoX19uZXdvYmpfZXhfXyk7CisgICAgICAgICAgICB1c2VfbmV3b2JqX2V4ID0gUHlVbmljb2RlX0NvbXBhcmUoCisgICAgICAgICAgICAgICAgICAgIG5hbWUsIF9QeVVuaWNvZGVfRnJvbUlkKCZQeUlkX19fbmV3b2JqX2V4X18pKSA9PSAwOwogICAgICAgICAgICAgaWYgKCF1c2VfbmV3b2JqX2V4KSB7CiAgICAgICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoX19uZXdvYmpfXyk7CiAgICAgICAgICAgICAgICAgdXNlX25ld29iaiA9IFB5VW5pY29kZV9Db21wYXJlKApAQCAtMzU4MywxMSArMzU5Nyw1OCBAQAogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHNhdmUoc2VsZiwgY2xzLCAwKSA8IDAgfHwKLSAgICAgICAgICAgIHNhdmUoc2VsZiwgYXJncywgMCkgPCAwIHx8Ci0gICAgICAgICAgICBzYXZlKHNlbGYsIGt3YXJncywgMCkgPCAwIHx8Ci0gICAgICAgICAgICBfUGlja2xlcl9Xcml0ZShzZWxmLCAmbmV3b2JqX2V4X29wLCAxKSA8IDApIHsKLSAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgaWYgKHNlbGYtPnByb3RvID49IDQpIHsKKyAgICAgICAgICAgIGlmIChzYXZlKHNlbGYsIGNscywgMCkgPCAwIHx8CisgICAgICAgICAgICAgICAgc2F2ZShzZWxmLCBhcmdzLCAwKSA8IDAgfHwKKyAgICAgICAgICAgICAgICBzYXZlKHNlbGYsIGt3YXJncywgMCkgPCAwIHx8CisgICAgICAgICAgICAgICAgX1BpY2tsZXJfV3JpdGUoc2VsZiwgJm5ld29ial9leF9vcCwgMSkgPCAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlPYmplY3QgKm5ld2FyZ3M7CisgICAgICAgICAgICBQeU9iamVjdCAqY2xzX25ldzsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKKyAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKF9fbmV3X18pOworCisgICAgICAgICAgICBuZXdhcmdzID0gUHlUdXBsZV9OZXcoUHlfU0laRShhcmdzKSArIDIpOworICAgICAgICAgICAgaWYgKG5ld2FyZ3MgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisKKyAgICAgICAgICAgIGNsc19uZXcgPSBfUHlPYmplY3RfR2V0QXR0cklkKGNscywgJlB5SWRfX19uZXdfXyk7CisgICAgICAgICAgICBpZiAoY2xzX25ldyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKG5ld2FyZ3MpOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0obmV3YXJncywgMCwgY2xzX25ldyk7CisgICAgICAgICAgICBQeV9JTkNSRUYoY2xzKTsKKyAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0obmV3YXJncywgMSwgY2xzKTsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeV9TSVpFKGFyZ3MpOyBpKyspIHsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqaXRlbSA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgaSk7CisgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGl0ZW0pOworICAgICAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0obmV3YXJncywgaSArIDIsIGl0ZW0pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYWxsYWJsZSA9IFB5T2JqZWN0X0NhbGwoc3QtPnBhcnRpYWwsIG5ld2FyZ3MsIGt3YXJncyk7CisgICAgICAgICAgICBQeV9ERUNSRUYobmV3YXJncyk7CisgICAgICAgICAgICBpZiAoY2FsbGFibGUgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisKKyAgICAgICAgICAgIG5ld2FyZ3MgPSBQeVR1cGxlX05ldygwKTsKKyAgICAgICAgICAgIGlmIChuZXdhcmdzID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoY2FsbGFibGUpOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHNhdmUoc2VsZiwgY2FsbGFibGUsIDApIDwgMCB8fAorICAgICAgICAgICAgICAgIHNhdmUoc2VsZiwgbmV3YXJncywgMCkgPCAwIHx8CisgICAgICAgICAgICAgICAgX1BpY2tsZXJfV3JpdGUoc2VsZiwgJnJlZHVjZV9vcCwgMSkgPCAwKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKG5ld2FyZ3MpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihjYWxsYWJsZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfREVDUkVGKG5ld2FyZ3MpOworICAgICAgICAgICAgUHlfREVDUkVGKGNhbGxhYmxlKTsKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIGlmICh1c2VfbmV3b2JqKSB7CkBAIC0zODc3LDEwICszOTM4LDcgQEAKICAgICAgICAgICAgIC8qIENoZWNrIGZvciBhIF9fcmVkdWNlX18gbWV0aG9kLiAqLwogICAgICAgICAgICAgcmVkdWNlX2Z1bmMgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfX19yZWR1Y2VfXyk7CiAgICAgICAgICAgICBpZiAocmVkdWNlX2Z1bmMgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICplbXB0eV90dXBsZSA9IFB5VHVwbGVfTmV3KDApOwotICAgICAgICAgICAgICAgIHJlZHVjZV92YWx1ZSA9IFB5T2JqZWN0X0NhbGwocmVkdWNlX2Z1bmMsIGVtcHR5X3R1cGxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGVtcHR5X3R1cGxlKTsKKyAgICAgICAgICAgICAgICByZWR1Y2VfdmFsdWUgPSBfUHlPYmplY3RfQ2FsbE5vQXJnKHJlZHVjZV9mdW5jKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChzdC0+UGlja2xpbmdFcnJvciwKQEAgLTQzOTcsNyArNDQ1NSw3IEBACiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIidtZW1vJyBhdHRyaWJ1dGUgbXVzdCBiZSBhbiBQaWNrbGVyTWVtb1Byb3h5IG9iamVjdCIKKyAgICAgICAgICAgICAgICAgICAgICInbWVtbycgYXR0cmlidXRlIG11c3QgYmUgYSBQaWNrbGVyTWVtb1Byb3h5IG9iamVjdCIKICAgICAgICAgICAgICAgICAgICAgICJvciBkaWN0LCBub3QgJS4yMDBzIiwgUHlfVFlQRShvYmopLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KQEAgLTQ0MjYsOCArNDQ4NCw2IEBACiBzdGF0aWMgaW50CiBQaWNrbGVyX3NldF9wZXJzaWQoUGlja2xlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlKQogewotICAgIFB5T2JqZWN0ICp0bXA7Ci0KICAgICBpZiAodmFsdWUgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImF0dHJpYnV0ZSBkZWxldGlvbiBpcyBub3Qgc3VwcG9ydGVkIik7CkBAIC00NDM5LDEwICs0NDk1LDggQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIHRtcCA9IHNlbGYtPnBlcnNfZnVuYzsKICAgICBQeV9JTkNSRUYodmFsdWUpOwotICAgIHNlbGYtPnBlcnNfZnVuYyA9IHZhbHVlOwotICAgIFB5X1hERUNSRUYodG1wKTsgICAgICAvKiBzZWxmLT5wZXJzX2Z1bmMgY2FuIGJlIE5VTEwsIHNvIGJlIGNhcmVmdWwuICovCisgICAgUHlfWFNFVFJFRihzZWxmLT5wZXJzX2Z1bmMsIHZhbHVlKTsKIAogICAgIHJldHVybiAwOwogfQpAQCAtNDUyNCwxMyArNDU3OCwxOSBAQAogc3RhdGljIFB5X3NzaXplX3QKIG1hcmtlcihVbnBpY2tsZXJPYmplY3QgKnNlbGYpCiB7Ci0gICAgUGlja2xlU3RhdGUgKnN0ID0gX1BpY2tsZV9HZXRHbG9iYWxTdGF0ZSgpOworICAgIFB5X3NzaXplX3QgbWFyazsKKwogICAgIGlmIChzZWxmLT5udW1fbWFya3MgPCAxKSB7CisgICAgICAgIFBpY2tsZVN0YXRlICpzdCA9IF9QaWNrbGVfR2V0R2xvYmFsU3RhdGUoKTsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHN0LT5VbnBpY2tsaW5nRXJyb3IsICJjb3VsZCBub3QgZmluZCBNQVJLIik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICByZXR1cm4gc2VsZi0+bWFya3NbLS1zZWxmLT5udW1fbWFya3NdOworICAgIG1hcmsgPSBzZWxmLT5tYXJrc1stLXNlbGYtPm51bV9tYXJrc107CisgICAgc2VsZi0+c3RhY2stPm1hcmtfc2V0ID0gc2VsZi0+bnVtX21hcmtzICE9IDA7CisgICAgc2VsZi0+c3RhY2stPmZlbmNlID0gc2VsZi0+bnVtX21hcmtzID8KKyAgICAgICAgICAgIHNlbGYtPm1hcmtzW3NlbGYtPm51bV9tYXJrcyAtIDFdIDogMDsKKyAgICByZXR1cm4gbWFyazsKIH0KIAogc3RhdGljIGludApAQCAtNDU0MSwxNCArNDYwMSw2IEBACiB9CiAKIHN0YXRpYyBpbnQKLWJhZF9yZWFkbGluZSh2b2lkKQotewotICAgIFBpY2tsZVN0YXRlICpzdCA9IF9QaWNrbGVfR2V0R2xvYmFsU3RhdGUoKTsKLSAgICBQeUVycl9TZXRTdHJpbmcoc3QtPlVucGlja2xpbmdFcnJvciwgInBpY2tsZSBkYXRhIHdhcyB0cnVuY2F0ZWQiKTsKLSAgICByZXR1cm4gLTE7Ci19Ci0KLXN0YXRpYyBpbnQKIGxvYWRfaW50KFVucGlja2xlck9iamVjdCAqc2VsZikKIHsKICAgICBQeU9iamVjdCAqdmFsdWU7CkBAIC00OTkxLDcgKzUwNDMsNyBAQAogICAgIFB5T2JqZWN0ICp0dXBsZTsKIAogICAgIGlmIChQeV9TSVpFKHNlbGYtPnN0YWNrKSA8IGxlbikKLSAgICAgICAgcmV0dXJuIHN0YWNrX3VuZGVyZmxvdygpOworICAgICAgICByZXR1cm4gUGRhdGFfc3RhY2tfdW5kZXJmbG93KHNlbGYtPnN0YWNrKTsKIAogICAgIHR1cGxlID0gUGRhdGFfcG9wdHVwbGUoc2VsZi0+c3RhY2ssIFB5X1NJWkUoc2VsZi0+c3RhY2spIC0gbGVuKTsKICAgICBpZiAodHVwbGUgPT0gTlVMTCkKQEAgLTUwNzMsNiArNTEyNSwxMyBAQAogICAgIGlmICgoZGljdCA9IFB5RGljdF9OZXcoKSkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogCisgICAgaWYgKChqIC0gaSkgJSAyICE9IDApIHsKKyAgICAgICAgUGlja2xlU3RhdGUgKnN0ID0gX1BpY2tsZV9HZXRHbG9iYWxTdGF0ZSgpOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoc3QtPlVucGlja2xpbmdFcnJvciwgIm9kZCBudW1iZXIgb2YgaXRlbXMgZm9yIERJQ1QiKTsKKyAgICAgICAgUHlfREVDUkVGKGRpY3QpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCiAgICAgZm9yIChrID0gaSArIDE7IGsgPCBqOyBrICs9IDIpIHsKICAgICAgICAga2V5ID0gc2VsZi0+c3RhY2stPmRhdGFbayAtIDFdOwogICAgICAgICB2YWx1ZSA9IHNlbGYtPnN0YWNrLT5kYXRhW2tdOwpAQCAtNTE0MCw3ICs1MTk5LDcgQEAKICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgaWYgKFB5X1NJWkUoc2VsZi0+c3RhY2spIC0gaSA8IDEpCi0gICAgICAgIHJldHVybiBzdGFja191bmRlcmZsb3coKTsKKyAgICAgICAgcmV0dXJuIFBkYXRhX3N0YWNrX3VuZGVyZmxvdyhzZWxmLT5zdGFjayk7CiAKICAgICBhcmdzID0gUGRhdGFfcG9wdHVwbGUoc2VsZi0+c3RhY2ssIGkgKyAxKTsKICAgICBpZiAoYXJncyA9PSBOVUxMKQpAQCAtNTQ2MywxMiArNTUyMiwxNSBAQAogICAgICAqLwogICAgIGlmIChzZWxmLT5udW1fbWFya3MgPiAwICYmIHNlbGYtPm1hcmtzW3NlbGYtPm51bV9tYXJrcyAtIDFdID09IGxlbikgewogICAgICAgICBzZWxmLT5udW1fbWFya3MtLTsKLSAgICB9IGVsc2UgaWYgKGxlbiA+IDApIHsKKyAgICAgICAgc2VsZi0+c3RhY2stPm1hcmtfc2V0ID0gc2VsZi0+bnVtX21hcmtzICE9IDA7CisgICAgICAgIHNlbGYtPnN0YWNrLT5mZW5jZSA9IHNlbGYtPm51bV9tYXJrcyA/CisgICAgICAgICAgICAgICAgc2VsZi0+bWFya3Nbc2VsZi0+bnVtX21hcmtzIC0gMV0gOiAwOworICAgIH0gZWxzZSBpZiAobGVuIDw9IHNlbGYtPnN0YWNrLT5mZW5jZSkKKyAgICAgICAgcmV0dXJuIFBkYXRhX3N0YWNrX3VuZGVyZmxvdyhzZWxmLT5zdGFjayk7CisgICAgZWxzZSB7CiAgICAgICAgIGxlbi0tOwogICAgICAgICBQeV9ERUNSRUYoc2VsZi0+c3RhY2stPmRhdGFbbGVuXSk7CiAgICAgICAgIFB5X1NJWkUoc2VsZi0+c3RhY2spID0gbGVuOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHJldHVybiBzdGFja191bmRlcmZsb3coKTsKICAgICB9CiAgICAgcmV0dXJuIDA7CiB9CkBAIC01NDkwLDEwICs1NTUyLDEwIEBACiBsb2FkX2R1cChVbnBpY2tsZXJPYmplY3QgKnNlbGYpCiB7CiAgICAgUHlPYmplY3QgKmxhc3Q7Ci0gICAgUHlfc3NpemVfdCBsZW47CisgICAgUHlfc3NpemVfdCBsZW4gPSBQeV9TSVpFKHNlbGYtPnN0YWNrKTsKIAotICAgIGlmICgobGVuID0gUHlfU0laRShzZWxmLT5zdGFjaykpIDw9IDApCi0gICAgICAgIHJldHVybiBzdGFja191bmRlcmZsb3coKTsKKyAgICBpZiAobGVuIDw9IHNlbGYtPnN0YWNrLT5mZW5jZSkKKyAgICAgICAgcmV0dXJuIFBkYXRhX3N0YWNrX3VuZGVyZmxvdyhzZWxmLT5zdGFjayk7CiAgICAgbGFzdCA9IHNlbGYtPnN0YWNrLT5kYXRhW2xlbiAtIDFdOwogICAgIFBEQVRBX0FQUEVORChzZWxmLT5zdGFjaywgbGFzdCwgLTEpOwogICAgIHJldHVybiAwOwpAQCAtNTY3Niw4ICs1NzM4LDggQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIGlmIChsZW4gPCAyKQogICAgICAgICByZXR1cm4gYmFkX3JlYWRsaW5lKCk7Ci0gICAgaWYgKFB5X1NJWkUoc2VsZi0+c3RhY2spIDw9IDApCi0gICAgICAgIHJldHVybiBzdGFja191bmRlcmZsb3coKTsKKyAgICBpZiAoUHlfU0laRShzZWxmLT5zdGFjaykgPD0gc2VsZi0+c3RhY2stPmZlbmNlKQorICAgICAgICByZXR1cm4gUGRhdGFfc3RhY2tfdW5kZXJmbG93KHNlbGYtPnN0YWNrKTsKICAgICB2YWx1ZSA9IHNlbGYtPnN0YWNrLT5kYXRhW1B5X1NJWkUoc2VsZi0+c3RhY2spIC0gMV07CiAKICAgICBrZXkgPSBQeUxvbmdfRnJvbVN0cmluZyhzLCBOVUxMLCAxMCk7CkBAIC01NzA1LDggKzU3NjcsOCBAQAogICAgIGlmIChfVW5waWNrbGVyX1JlYWQoc2VsZiwgJnMsIDEpIDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgaWYgKFB5X1NJWkUoc2VsZi0+c3RhY2spIDw9IDApCi0gICAgICAgIHJldHVybiBzdGFja191bmRlcmZsb3coKTsKKyAgICBpZiAoUHlfU0laRShzZWxmLT5zdGFjaykgPD0gc2VsZi0+c3RhY2stPmZlbmNlKQorICAgICAgICByZXR1cm4gUGRhdGFfc3RhY2tfdW5kZXJmbG93KHNlbGYtPnN0YWNrKTsKICAgICB2YWx1ZSA9IHNlbGYtPnN0YWNrLT5kYXRhW1B5X1NJWkUoc2VsZi0+c3RhY2spIC0gMV07CiAKICAgICBpZHggPSBQeV9DSEFSTUFTSyhzWzBdKTsKQEAgLTU3MjQsOCArNTc4Niw4IEBACiAgICAgaWYgKF9VbnBpY2tsZXJfUmVhZChzZWxmLCAmcywgNCkgPCAwKQogICAgICAgICByZXR1cm4gLTE7CiAKLSAgICBpZiAoUHlfU0laRShzZWxmLT5zdGFjaykgPD0gMCkKLSAgICAgICAgcmV0dXJuIHN0YWNrX3VuZGVyZmxvdygpOworICAgIGlmIChQeV9TSVpFKHNlbGYtPnN0YWNrKSA8PSBzZWxmLT5zdGFjay0+ZmVuY2UpCisgICAgICAgIHJldHVybiBQZGF0YV9zdGFja191bmRlcmZsb3coc2VsZi0+c3RhY2spOwogICAgIHZhbHVlID0gc2VsZi0+c3RhY2stPmRhdGFbUHlfU0laRShzZWxmLT5zdGFjaykgLSAxXTsKIAogICAgIGlkeCA9IGNhbGNfYmluc2l6ZShzLCA0KTsKQEAgLTU3NDMsOCArNTgwNSw4IEBACiB7CiAgICAgUHlPYmplY3QgKnZhbHVlOwogCi0gICAgaWYgKFB5X1NJWkUoc2VsZi0+c3RhY2spIDw9IDApCi0gICAgICAgIHJldHVybiBzdGFja191bmRlcmZsb3coKTsKKyAgICBpZiAoUHlfU0laRShzZWxmLT5zdGFjaykgPD0gc2VsZi0+c3RhY2stPmZlbmNlKQorICAgICAgICByZXR1cm4gUGRhdGFfc3RhY2tfdW5kZXJmbG93KHNlbGYtPnN0YWNrKTsKICAgICB2YWx1ZSA9IHNlbGYtPnN0YWNrLT5kYXRhW1B5X1NJWkUoc2VsZi0+c3RhY2spIC0gMV07CiAKICAgICByZXR1cm4gX1VucGlja2xlcl9NZW1vUHV0KHNlbGYsIHNlbGYtPm1lbW9fbGVuLCB2YWx1ZSk7CkBAIC01NzU4LDggKzU4MjAsOCBAQAogICAgIFB5X3NzaXplX3QgbGVuLCBpOwogCiAgICAgbGVuID0gUHlfU0laRShzZWxmLT5zdGFjayk7Ci0gICAgaWYgKHggPiBsZW4gfHwgeCA8PSAwKQotICAgICAgICByZXR1cm4gc3RhY2tfdW5kZXJmbG93KCk7CisgICAgaWYgKHggPiBsZW4gfHwgeCA8PSBzZWxmLT5zdGFjay0+ZmVuY2UpCisgICAgICAgIHJldHVybiBQZGF0YV9zdGFja191bmRlcmZsb3coc2VsZi0+c3RhY2spOwogICAgIGlmIChsZW4gPT0geCkgIC8qIG5vdGhpbmcgdG8gZG8gKi8KICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTU4MDgsOCArNTg3MCw4IEBACiBzdGF0aWMgaW50CiBsb2FkX2FwcGVuZChVbnBpY2tsZXJPYmplY3QgKnNlbGYpCiB7Ci0gICAgaWYgKFB5X1NJWkUoc2VsZi0+c3RhY2spIC0gMSA8PSAwKQotICAgICAgICByZXR1cm4gc3RhY2tfdW5kZXJmbG93KCk7CisgICAgaWYgKFB5X1NJWkUoc2VsZi0+c3RhY2spIC0gMSA8PSBzZWxmLT5zdGFjay0+ZmVuY2UpCisgICAgICAgIHJldHVybiBQZGF0YV9zdGFja191bmRlcmZsb3coc2VsZi0+c3RhY2spOwogICAgIHJldHVybiBkb19hcHBlbmQoc2VsZiwgUHlfU0laRShzZWxmLT5zdGFjaykgLSAxKTsKIH0KIApAQCAtNTgzMSw4ICs1ODkzLDggQEAKICAgICBpbnQgc3RhdHVzID0gMDsKIAogICAgIGxlbiA9IFB5X1NJWkUoc2VsZi0+c3RhY2spOwotICAgIGlmICh4ID4gbGVuIHx8IHggPD0gMCkKLSAgICAgICAgcmV0dXJuIHN0YWNrX3VuZGVyZmxvdygpOworICAgIGlmICh4ID4gbGVuIHx8IHggPD0gc2VsZi0+c3RhY2stPmZlbmNlKQorICAgICAgICByZXR1cm4gUGRhdGFfc3RhY2tfdW5kZXJmbG93KHNlbGYtPnN0YWNrKTsKICAgICBpZiAobGVuID09IHgpICAvKiBub3RoaW5nIHRvIGRvICovCiAgICAgICAgIHJldHVybiAwOwogICAgIGlmICgobGVuIC0geCkgJSAyICE9IDApIHsKQEAgLTU4ODUsOCArNTk0Nyw4IEBACiAgICAgaWYgKG1hcmsgPCAwKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgbGVuID0gUHlfU0laRShzZWxmLT5zdGFjayk7Ci0gICAgaWYgKG1hcmsgPiBsZW4gfHwgbWFyayA8PSAwKQotICAgICAgICByZXR1cm4gc3RhY2tfdW5kZXJmbG93KCk7CisgICAgaWYgKG1hcmsgPiBsZW4gfHwgbWFyayA8PSBzZWxmLT5zdGFjay0+ZmVuY2UpCisgICAgICAgIHJldHVybiBQZGF0YV9zdGFja191bmRlcmZsb3coc2VsZi0+c3RhY2spOwogICAgIGlmIChsZW4gPT0gbWFyaykgIC8qIG5vdGhpbmcgdG8gZG8gKi8KICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTU5NDEsOCArNjAwMyw4IEBACiAgICAgLyogU3RhY2sgaXMgLi4uIGluc3RhbmNlLCBzdGF0ZS4gIFdlIHdhbnQgdG8gbGVhdmUgaW5zdGFuY2UgYXQKICAgICAgKiB0aGUgc3RhY2sgdG9wLCBwb3NzaWJseSBtdXRhdGVkIHZpYSBpbnN0YW5jZS5fX3NldHN0YXRlX18oc3RhdGUpLgogICAgICAqLwotICAgIGlmIChQeV9TSVpFKHNlbGYtPnN0YWNrKSA8IDIpCi0gICAgICAgIHJldHVybiBzdGFja191bmRlcmZsb3coKTsKKyAgICBpZiAoUHlfU0laRShzZWxmLT5zdGFjaykgLSAyIDwgc2VsZi0+c3RhY2stPmZlbmNlKQorICAgICAgICByZXR1cm4gUGRhdGFfc3RhY2tfdW5kZXJmbG93KHNlbGYtPnN0YWNrKTsKIAogICAgIFBEQVRBX1BPUChzZWxmLT5zdGFjaywgc3RhdGUpOwogICAgIGlmIChzdGF0ZSA9PSBOVUxMKQpAQCAtNjA3OCw3ICs2MTQwLDggQEAKICAgICAgICAgc2VsZi0+bWFya3Nfc2l6ZSA9IChQeV9zc2l6ZV90KWFsbG9jOwogICAgIH0KIAotICAgIHNlbGYtPm1hcmtzW3NlbGYtPm51bV9tYXJrcysrXSA9IFB5X1NJWkUoc2VsZi0+c3RhY2spOworICAgIHNlbGYtPnN0YWNrLT5tYXJrX3NldCA9IDE7CisgICAgc2VsZi0+bWFya3Nbc2VsZi0+bnVtX21hcmtzKytdID0gc2VsZi0+c3RhY2stPmZlbmNlID0gUHlfU0laRShzZWxmLT5zdGFjayk7CiAKICAgICByZXR1cm4gMDsKIH0KQEAgLTYxNjEsNiArNjIyNCw4IEBACiAgICAgY2hhciAqcyA9IE5VTEw7CiAKICAgICBzZWxmLT5udW1fbWFya3MgPSAwOworICAgIHNlbGYtPnN0YWNrLT5tYXJrX3NldCA9IDA7CisgICAgc2VsZi0+c3RhY2stPmZlbmNlID0gMDsKICAgICBzZWxmLT5wcm90byA9IDA7CiAgICAgaWYgKFB5X1NJWkUoc2VsZi0+c3RhY2spKQogICAgICAgICBQZGF0YV9jbGVhcihzZWxmLT5zdGFjaywgMCk7CkBAIC02MTczLDggKzYyMzgsMTMgQEAKICAgICBjYXNlIG9wY29kZTogaWYgKGxvYWRfZnVuYyhzZWxmLCAoYXJnKSkgPCAwKSBicmVhazsgY29udGludWU7CiAKICAgICB3aGlsZSAoMSkgewotICAgICAgICBpZiAoX1VucGlja2xlcl9SZWFkKHNlbGYsICZzLCAxKSA8IDApCi0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKF9VbnBpY2tsZXJfUmVhZChzZWxmLCAmcywgMSkgPCAwKSB7CisgICAgICAgICAgICBQaWNrbGVTdGF0ZSAqc3QgPSBfUGlja2xlX0dldEdsb2JhbFN0YXRlKCk7CisgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhzdC0+VW5waWNrbGluZ0Vycm9yKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19FT0ZFcnJvciwgIlJhbiBvdXQgb2YgaW5wdXQiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CiAKICAgICAgICAgc3dpdGNoICgoZW51bSBvcGNvZGUpc1swXSkgewogICAgICAgICBPUChOT05FLCBsb2FkX25vbmUpCkBAIC02MjQ2LDE1ICs2MzE2LDE5IEBACiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgaWYgKHNbMF0gPT0gJ1wwJykgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfRU9GRXJyb3IpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgUGlja2xlU3RhdGUgKnN0ID0gX1BpY2tsZV9HZXRHbG9iYWxTdGF0ZSgpOwotICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChzdC0+VW5waWNrbGluZ0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBsb2FkIGtleSwgJyVjJy4iLCBzWzBdKTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGMgPSAodW5zaWduZWQgY2hhcikgKnM7CisgICAgICAgICAgICAgICAgaWYgKDB4MjAgPD0gYyAmJiBjIDw9IDB4N2UgJiYgYyAhPSAnXCcnICYmIGMgIT0gJ1xcJykgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoc3QtPlVucGlja2xpbmdFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGxvYWQga2V5LCAnJWMnLiIsIGMpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KHN0LT5VbnBpY2tsaW5nRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBsb2FkIGtleSwgJ1xceCUwMngnLiIsIGMpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAKICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgICAgICAgLyogYW5kIHdlIGFyZSBkb25lISAqLwpAQCAtNjg2NSw4ICs2OTM5LDYgQEAKIHN0YXRpYyBpbnQKIFVucGlja2xlcl9zZXRfcGVyc2xvYWQoVW5waWNrbGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdmFsdWUpCiB7Ci0gICAgUHlPYmplY3QgKnRtcDsKLQogICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiYXR0cmlidXRlIGRlbGV0aW9uIGlzIG5vdCBzdXBwb3J0ZWQiKTsKQEAgLTY4NzksMTAgKzY5NTEsOCBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgdG1wID0gc2VsZi0+cGVyc19mdW5jOwogICAgIFB5X0lOQ1JFRih2YWx1ZSk7Ci0gICAgc2VsZi0+cGVyc19mdW5jID0gdmFsdWU7Ci0gICAgUHlfWERFQ1JFRih0bXApOyAgICAgIC8qIHNlbGYtPnBlcnNfZnVuYyBjYW4gYmUgTlVMTCwgc28gYmUgY2FyZWZ1bC4gKi8KKyAgICBQeV9YU0VUUkVGKHNlbGYtPnBlcnNfZnVuYywgdmFsdWUpOwogCiAgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19wb3NpeHN1YnByb2Nlc3MuYyBiL01vZHVsZXMvX3Bvc2l4c3VicHJvY2Vzcy5jCmluZGV4IGMwMjQwZTIuLjUwMDdhMzkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3Bvc2l4c3VicHJvY2Vzcy5jCisrKyBiL01vZHVsZXMvX3Bvc2l4c3VicHJvY2Vzcy5jCkBAIC0yMSw4ICsyMSw3IEBACiAjaW5jbHVkZSA8ZGlyZW50Lmg+CiAjZW5kaWYKIAotI2lmIGRlZmluZWQoX19BTkRST0lEX18pICYmICFkZWZpbmVkKFNZU19nZXRkZW50czY0KQotLyogQW5kcm9pZCBkb2Vzbid0IGV4cG9zZSBzeXNjYWxscywgYWRkIHRoZSBkZWZpbml0aW9uIG1hbnVhbGx5LiAqLworI2lmIGRlZmluZWQoX19BTkRST0lEX18pICYmIF9fQU5EUk9JRF9BUElfXyA8IDIxICYmICFkZWZpbmVkKFNZU19nZXRkZW50czY0KQogIyBpbmNsdWRlIDxzeXMvbGludXgtc3lzY2FsbHMuaD4KICMgZGVmaW5lIFNZU19nZXRkZW50czY0ICBfX05SX2dldGRlbnRzNjQKICNlbmRpZgpAQCAtNzIsNyArNzEsNyBAQAogCiAvKiBDb252ZXJ0IEFTQ0lJIHRvIGEgcG9zaXRpdmUgaW50LCBubyBsaWJjIGNhbGwuIG5vIG92ZXJmbG93LiAtMSBvbiBlcnJvci4gKi8KIHN0YXRpYyBpbnQKLV9wb3NfaW50X2Zyb21fYXNjaWkoY2hhciAqbmFtZSkKK19wb3NfaW50X2Zyb21fYXNjaWkoY29uc3QgY2hhciAqbmFtZSkKIHsKICAgICBpbnQgbnVtID0gMDsKICAgICB3aGlsZSAoKm5hbWUgPj0gJzAnICYmICpuYW1lIDw9ICc5JykgewpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fcmFuZG9tbW9kdWxlLmMgYi9Nb2R1bGVzL19yYW5kb21tb2R1bGUuYwppbmRleCA5NWFkNGE0Li42Mzc1OWQ1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19yYW5kb21tb2R1bGUuYworKysgYi9Nb2R1bGVzL19yYW5kb21tb2R1bGUuYwpAQCAtNjgsOSArNjgsOCBAQAogCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSA8dGltZS5oPiAgICAgICAgICAgICAgIC8qIGZvciBzZWVkaW5nIHRvIGN1cnJlbnQgdGltZSAqLwotCi0jaWZuZGVmIFBZX1VJTlQzMl9UCi0jICBlcnJvciAiRmFpbGVkIHRvIGZpbmQgYW4gZXhhY3Qtd2lkdGggMzItYml0IGludGVnZXIgdHlwZSIKKyNpZmRlZiBIQVZFX1BST0NFU1NfSAorIyAgaW5jbHVkZSA8cHJvY2Vzcy5oPiAgICAgICAgICAvKiBuZWVkZWQgZm9yIGdldHBpZCgpICovCiAjZW5kaWYKIAogLyogUGVyaW9kIHBhcmFtZXRlcnMgLS0gVGhlc2UgYXJlIGFsbCBtYWdpYy4gIERvbid0IGNoYW5nZS4gKi8KQEAgLTgzLDcgKzgyLDcgQEAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECiAgICAgaW50IGluZGV4OwotICAgIFBZX1VJTlQzMl9UIHN0YXRlW05dOworICAgIHVpbnQzMl90IHN0YXRlW05dOwogfSBSYW5kb21PYmplY3Q7CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgUmFuZG9tX1R5cGU7CkBAIC05NSwxMyArOTQsMTMgQEAKIAogCiAvKiBnZW5lcmF0ZXMgYSByYW5kb20gbnVtYmVyIG9uIFswLDB4ZmZmZmZmZmZdLWludGVydmFsICovCi1zdGF0aWMgUFlfVUlOVDMyX1QKK3N0YXRpYyB1aW50MzJfdAogZ2VucmFuZF9pbnQzMihSYW5kb21PYmplY3QgKnNlbGYpCiB7Ci0gICAgUFlfVUlOVDMyX1QgeTsKLSAgICBzdGF0aWMgUFlfVUlOVDMyX1QgbWFnMDFbMl09ezB4MFUsIE1BVFJJWF9BfTsKKyAgICB1aW50MzJfdCB5OworICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBtYWcwMVsyXSA9IHsweDBVLCBNQVRSSVhfQX07CiAgICAgLyogbWFnMDFbeF0gPSB4ICogTUFUUklYX0EgIGZvciB4PTAsMSAqLwotICAgIFBZX1VJTlQzMl9UICptdDsKKyAgICB1aW50MzJfdCAqbXQ7CiAKICAgICBtdCA9IHNlbGYtPnN0YXRlOwogICAgIGlmIChzZWxmLT5pbmRleCA+PSBOKSB7IC8qIGdlbmVyYXRlIE4gd29yZHMgYXQgb25lIHRpbWUgKi8KQEAgLTEzNiwyMSArMTM1LDIxIEBACiAgKiBvcHRpbWl6ZSB0aGUgZGl2aXNpb24gYXdheSBhdCBjb21waWxlLXRpbWUuICA2NzEwODg2NCBpcyAyKioyNi4gIEluCiAgKiBlZmZlY3QsIGEgY29udGFpbnMgMjcgcmFuZG9tIGJpdHMgc2hpZnRlZCBsZWZ0IDI2LCBhbmQgYiBmaWxscyBpbiB0aGUKICAqIGxvd2VyIDI2IGJpdHMgb2YgdGhlIDUzLWJpdCBudW1lcmF0b3IuCi0gKiBUaGUgb3JnaW5hbCBjb2RlIGNyZWRpdGVkIElzYWt1IFdhZGEgZm9yIHRoaXMgYWxnb3JpdGhtLCAyMDAyLzAxLzA5LgorICogVGhlIG9yaWdpbmFsIGNvZGUgY3JlZGl0ZWQgSXNha3UgV2FkYSBmb3IgdGhpcyBhbGdvcml0aG0sIDIwMDIvMDEvMDkuCiAgKi8KIHN0YXRpYyBQeU9iamVjdCAqCiByYW5kb21fcmFuZG9tKFJhbmRvbU9iamVjdCAqc2VsZikKIHsKLSAgICBQWV9VSU5UMzJfVCBhPWdlbnJhbmRfaW50MzIoc2VsZik+PjUsIGI9Z2VucmFuZF9pbnQzMihzZWxmKT4+NjsKKyAgICB1aW50MzJfdCBhPWdlbnJhbmRfaW50MzIoc2VsZik+PjUsIGI9Z2VucmFuZF9pbnQzMihzZWxmKT4+NjsKICAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKChhKjY3MTA4ODY0LjArYikqKDEuMC85MDA3MTk5MjU0NzQwOTkyLjApKTsKIH0KIAogLyogaW5pdGlhbGl6ZXMgbXRbTl0gd2l0aCBhIHNlZWQgKi8KIHN0YXRpYyB2b2lkCi1pbml0X2dlbnJhbmQoUmFuZG9tT2JqZWN0ICpzZWxmLCBQWV9VSU5UMzJfVCBzKQoraW5pdF9nZW5yYW5kKFJhbmRvbU9iamVjdCAqc2VsZiwgdWludDMyX3QgcykKIHsKICAgICBpbnQgbXRpOwotICAgIFBZX1VJTlQzMl9UICptdDsKKyAgICB1aW50MzJfdCAqbXQ7CiAKICAgICBtdCA9IHNlbGYtPnN0YXRlOwogICAgIG10WzBdPSBzOwpAQCAtMTY5LDExICsxNjgsMTEgQEAKIC8qIGluaXRpYWxpemUgYnkgYW4gYXJyYXkgd2l0aCBhcnJheS1sZW5ndGggKi8KIC8qIGluaXRfa2V5IGlzIHRoZSBhcnJheSBmb3IgaW5pdGlhbGl6aW5nIGtleXMgKi8KIC8qIGtleV9sZW5ndGggaXMgaXRzIGxlbmd0aCAqLwotc3RhdGljIFB5T2JqZWN0ICoKLWluaXRfYnlfYXJyYXkoUmFuZG9tT2JqZWN0ICpzZWxmLCBQWV9VSU5UMzJfVCBpbml0X2tleVtdLCBzaXplX3Qga2V5X2xlbmd0aCkKK3N0YXRpYyB2b2lkCitpbml0X2J5X2FycmF5KFJhbmRvbU9iamVjdCAqc2VsZiwgdWludDMyX3QgaW5pdF9rZXlbXSwgc2l6ZV90IGtleV9sZW5ndGgpCiB7CiAgICAgc2l6ZV90IGksIGosIGs7ICAgICAgIC8qIHdhcyBzaWduZWQgaW4gdGhlIG9yaWdpbmFsIGNvZGUuIFJESCAxMi8xNi8yMDAyICovCi0gICAgUFlfVUlOVDMyX1QgKm10OworICAgIHVpbnQzMl90ICptdDsKIAogICAgIG10ID0gc2VsZi0+c3RhdGU7CiAgICAgaW5pdF9nZW5yYW5kKHNlbGYsIDE5NjUwMjE4VSk7CkBAIC0xODEsMjEgKzE4MCwxOSBAQAogICAgIGsgPSAoTj5rZXlfbGVuZ3RoID8gTiA6IGtleV9sZW5ndGgpOwogICAgIGZvciAoOyBrOyBrLS0pIHsKICAgICAgICAgbXRbaV0gPSAobXRbaV0gXiAoKG10W2ktMV0gXiAobXRbaS0xXSA+PiAzMCkpICogMTY2NDUyNVUpKQotICAgICAgICAgICAgICAgICArIGluaXRfa2V5W2pdICsgKFBZX1VJTlQzMl9UKWo7IC8qIG5vbiBsaW5lYXIgKi8KKyAgICAgICAgICAgICAgICAgKyBpbml0X2tleVtqXSArICh1aW50MzJfdClqOyAvKiBub24gbGluZWFyICovCiAgICAgICAgIGkrKzsgaisrOwogICAgICAgICBpZiAoaT49TikgeyBtdFswXSA9IG10W04tMV07IGk9MTsgfQogICAgICAgICBpZiAoaj49a2V5X2xlbmd0aCkgaj0wOwogICAgIH0KICAgICBmb3IgKGs9Ti0xOyBrOyBrLS0pIHsKICAgICAgICAgbXRbaV0gPSAobXRbaV0gXiAoKG10W2ktMV0gXiAobXRbaS0xXSA+PiAzMCkpICogMTU2NjA4Mzk0MVUpKQotICAgICAgICAgICAgICAgICAtIChQWV9VSU5UMzJfVClpOyAvKiBub24gbGluZWFyICovCisgICAgICAgICAgICAgICAgIC0gKHVpbnQzMl90KWk7IC8qIG5vbiBsaW5lYXIgKi8KICAgICAgICAgaSsrOwogICAgICAgICBpZiAoaT49TikgeyBtdFswXSA9IG10W04tMV07IGk9MTsgfQogICAgIH0KIAogICAgIG10WzBdID0gMHg4MDAwMDAwMFU7IC8qIE1TQiBpcyAxOyBhc3N1cmluZyBub24temVybyBpbml0aWFsIGFycmF5ICovCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOwogfQogCiAvKgpAQCAtMjAzLDEyICsyMDAsNDMgQEAKICAqIFR3aXN0ZXIgZG93bmxvYWQuCiAgKi8KIAorc3RhdGljIGludAorcmFuZG9tX3NlZWRfdXJhbmRvbShSYW5kb21PYmplY3QgKnNlbGYpCit7CisgICAgUFlfVUlOVDMyX1Qga2V5W05dOworCisgICAgaWYgKF9QeU9TX1VSYW5kb21Ob25ibG9jayhrZXksIHNpemVvZihrZXkpKSA8IDApIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpbml0X2J5X2FycmF5KHNlbGYsIGtleSwgUHlfQVJSQVlfTEVOR1RIKGtleSkpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAorcmFuZG9tX3NlZWRfdGltZV9waWQoUmFuZG9tT2JqZWN0ICpzZWxmKQoreworICAgIF9QeVRpbWVfdCBub3c7CisgICAgdWludDMyX3Qga2V5WzVdOworCisgICAgbm93ID0gX1B5VGltZV9HZXRTeXN0ZW1DbG9jaygpOworICAgIGtleVswXSA9IChQWV9VSU5UMzJfVCkobm93ICYgMHhmZmZmZmZmZlUpOworICAgIGtleVsxXSA9IChQWV9VSU5UMzJfVCkobm93ID4+IDMyKTsKKworICAgIGtleVsyXSA9IChQWV9VSU5UMzJfVClnZXRwaWQoKTsKKworICAgIG5vdyA9IF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2soKTsKKyAgICBrZXlbM10gPSAoUFlfVUlOVDMyX1QpKG5vdyAmIDB4ZmZmZmZmZmZVKTsKKyAgICBrZXlbNF0gPSAoUFlfVUlOVDMyX1QpKG5vdyA+PiAzMik7CisKKyAgICBpbml0X2J5X2FycmF5KHNlbGYsIGtleSwgUHlfQVJSQVlfTEVOR1RIKGtleSkpOworfQorCiBzdGF0aWMgUHlPYmplY3QgKgogcmFuZG9tX3NlZWQoUmFuZG9tT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsgICAgICAgICAgICAvKiBndWlsdHkgdW50aWwgcHJvdmVkIGlubm9jZW50ICovCiAgICAgUHlPYmplY3QgKm4gPSBOVUxMOwotICAgIFBZX1VJTlQzMl9UICprZXkgPSBOVUxMOworICAgIHVpbnQzMl90ICprZXkgPSBOVUxMOwogICAgIHNpemVfdCBiaXRzLCBrZXl1c2VkOwogICAgIGludCByZXM7CiAgICAgUHlPYmplY3QgKmFyZyA9IE5VTEw7CkBAIC0yMTYsMTQgKzI0NCwxNyBAQAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInNlZWQiLCAwLCAxLCAmYXJnKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoYXJnID09IE5VTEwgfHwgYXJnID09IFB5X05vbmUpIHsKLSAgICAgICAgdGltZV90IG5vdzsKKyAgICAgaWYgKGFyZyA9PSBOVUxMIHx8IGFyZyA9PSBQeV9Ob25lKSB7CisgICAgICAgIGlmIChyYW5kb21fc2VlZF91cmFuZG9tKHNlbGYpID49IDApIHsKKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAKLSAgICAgICAgdGltZSgmbm93KTsKLSAgICAgICAgaW5pdF9nZW5yYW5kKHNlbGYsIChQWV9VSU5UMzJfVClub3cpOwotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIHJldHVybiBQeV9Ob25lOworICAgICAgICAgICAgLyogUmVhZGluZyBzeXN0ZW0gZW50cm9weSBmYWlsZWQsIGZhbGwgYmFjayBvbiB0aGUgd29yc3QgZW50cm9weToKKyAgICAgICAgICAgICAgIHVzZSB0aGUgY3VycmVudCB0aW1lIGFuZCBwcm9jZXNzIGlkZW50aWZpZXIuICovCisgICAgICAgICAgICByYW5kb21fc2VlZF90aW1lX3BpZChzZWxmKTsKKyAgICAgICAgfQorICAgICAgICBQeV9SRVRVUk5fTk9ORTsKICAgICB9CisKICAgICAvKiBUaGlzIGFsZ29yaXRobSByZWxpZXMgb24gdGhlIG51bWJlciBiZWluZyB1bnNpZ25lZC4KICAgICAgKiBTbzogaWYgdGhlIGFyZyBpcyBhIFB5TG9uZywgdXNlIGl0cyBhYnNvbHV0ZSB2YWx1ZS4KICAgICAgKiBPdGhlcndpc2UgdXNlIGl0cyBoYXNoIHZhbHVlLCBjYXN0IHRvIHVuc2lnbmVkLgpAQCAtMjQ4LDcgKzI3OSw3IEBACiAgICAga2V5dXNlZCA9IGJpdHMgPT0gMCA/IDEgOiAoYml0cyAtIDEpIC8gMzIgKyAxOwogCiAgICAgLyogQ29udmVydCBzZWVkIHRvIGJ5dGUgc2VxdWVuY2UuICovCi0gICAga2V5ID0gKFBZX1VJTlQzMl9UICopUHlNZW1fTWFsbG9jKChzaXplX3QpNCAqIGtleXVzZWQpOworICAgIGtleSA9ICh1aW50MzJfdCAqKVB5TWVtX01hbGxvYygoc2l6ZV90KTQgKiBrZXl1c2VkKTsKICAgICBpZiAoa2V5ID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgZ290byBEb25lOwpAQCAtMjY3LDEzICsyOTgsMTcgQEAKICAgICAgICAgc2l6ZV90IGksIGo7CiAgICAgICAgIC8qIFJldmVyc2UgYW4gYXJyYXkuICovCiAgICAgICAgIGZvciAoaSA9IDAsIGogPSBrZXl1c2VkIC0gMTsgaSA8IGo7IGkrKywgai0tKSB7Ci0gICAgICAgICAgICBQWV9VSU5UMzJfVCB0bXAgPSBrZXlbaV07CisgICAgICAgICAgICB1aW50MzJfdCB0bXAgPSBrZXlbaV07CiAgICAgICAgICAgICBrZXlbaV0gPSBrZXlbal07CiAgICAgICAgICAgICBrZXlbal0gPSB0bXA7CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKLSAgICByZXN1bHQgPSBpbml0X2J5X2FycmF5KHNlbGYsIGtleSwga2V5dXNlZCk7CisgICAgaW5pdF9ieV9hcnJheShzZWxmLCBrZXksIGtleXVzZWQpOworCisgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgIHJlc3VsdCA9IFB5X05vbmU7CisKIERvbmU6CiAgICAgUHlfWERFQ1JFRihuKTsKICAgICBQeU1lbV9GcmVlKGtleSk7CkBAIC0zMjksNyArMzY0LDcgQEAKICAgICAgICAgZWxlbWVudCA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZyhQeVR1cGxlX0dFVF9JVEVNKHN0YXRlLCBpKSk7CiAgICAgICAgIGlmIChlbGVtZW50ID09ICh1bnNpZ25lZCBsb25nKS0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgc2VsZi0+c3RhdGVbaV0gPSAoUFlfVUlOVDMyX1QpZWxlbWVudDsKKyAgICAgICAgc2VsZi0+c3RhdGVbaV0gPSAodWludDMyX3QpZWxlbWVudDsKICAgICB9CiAKICAgICBpbmRleCA9IFB5TG9uZ19Bc0xvbmcoUHlUdXBsZV9HRVRfSVRFTShzdGF0ZSwgaSkpOwpAQCAtMzQ5LDggKzM4NCw4IEBACiByYW5kb21fZ2V0cmFuZGJpdHMoUmFuZG9tT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBpbnQgaywgaSwgd29yZHM7Ci0gICAgUFlfVUlOVDMyX1QgcjsKLSAgICBQWV9VSU5UMzJfVCAqd29yZGFycmF5OworICAgIHVpbnQzMl90IHI7CisgICAgdWludDMyX3QgKndvcmRhcnJheTsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOmdldHJhbmRiaXRzIiwgJmspKQpAQCAtMzY2LDcgKzQwMSw3IEBACiAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZyhnZW5yYW5kX2ludDMyKHNlbGYpID4+ICgzMiAtIGspKTsKIAogICAgIHdvcmRzID0gKGsgLSAxKSAvIDMyICsgMTsKLSAgICB3b3JkYXJyYXkgPSAoUFlfVUlOVDMyX1QgKilQeU1lbV9NYWxsb2Mod29yZHMgKiA0KTsKKyAgICB3b3JkYXJyYXkgPSAodWludDMyX3QgKilQeU1lbV9NYWxsb2Mod29yZHMgKiA0KTsKICAgICBpZiAod29yZGFycmF5ID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zY3Byb3h5LmMgYi9Nb2R1bGVzL19zY3Byb3h5LmMKaW5kZXggNjZiNmUzNC4uMWNlNGI3NyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc2Nwcm94eS5jCisrKyBiL01vZHVsZXMvX3NjcHJveHkuYwpAQCAtNzEsMTYgKzcxLDEyIEBACiAgICAgcmVzdWx0ID0gUHlEaWN0X05ldygpOwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgZ290byBlcnJvcjsKIAotICAgIGlmICgma1NDUHJvcE5ldFByb3hpZXNFeGNsdWRlU2ltcGxlSG9zdG5hbWVzICE9IE5VTEwpIHsKLSAgICAgICAgYU51bSA9IENGRGljdGlvbmFyeUdldFZhbHVlKHByb3h5RGljdCwKLSAgICAgICAgICAgIGtTQ1Byb3BOZXRQcm94aWVzRXhjbHVkZVNpbXBsZUhvc3RuYW1lcyk7Ci0gICAgICAgIGlmIChhTnVtID09IE5VTEwpIHsKLSAgICAgICAgICAgIHYgPSBQeUJvb2xfRnJvbUxvbmcoMCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB2ID0gUHlCb29sX0Zyb21Mb25nKGNmbnVtX3RvX2ludDMyKGFOdW0pKTsKLSAgICAgICAgfQotICAgIH0gIGVsc2UgeworICAgIGFOdW0gPSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm94eURpY3QsCisgICAgICAgIGtTQ1Byb3BOZXRQcm94aWVzRXhjbHVkZVNpbXBsZUhvc3RuYW1lcyk7CisgICAgaWYgKGFOdW0gPT0gTlVMTCkgewogICAgICAgICB2ID0gUHlCb29sX0Zyb21Mb25nKDApOworICAgIH0gZWxzZSB7CisgICAgICAgIHYgPSBQeUJvb2xfRnJvbUxvbmcoY2ZudW1fdG9faW50MzIoYU51bSkpOwogICAgIH0KIAogICAgIGlmICh2ID09IE5VTEwpIGdvdG8gZXJyb3I7CkBAIC0xMzAsNyArMTI2LDcgQEAKIH0KIAogc3RhdGljIGludAotc2V0X3Byb3h5KFB5T2JqZWN0KiBwcm94aWVzLCBjaGFyKiBwcm90bywgQ0ZEaWN0aW9uYXJ5UmVmIHByb3h5RGljdCwKK3NldF9wcm94eShQeU9iamVjdCogcHJveGllcywgY29uc3QgY2hhciogcHJvdG8sIENGRGljdGlvbmFyeVJlZiBwcm94eURpY3QsCiAgICAgICAgICAgICAgICAgQ0ZTdHJpbmdSZWYgZW5hYmxlZEtleSwKICAgICAgICAgICAgICAgICBDRlN0cmluZ1JlZiBob3N0S2V5LCBDRlN0cmluZ1JlZiBwb3J0S2V5KQogewpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9SRUFETUUudHh0IGIvTW9kdWxlcy9fc2hhMy9SRUFETUUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzNGIxZDEKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19zaGEzL1JFQURNRS50eHQKQEAgLTAsMCArMSwxMSBAQAorS2VjY2FrIENvZGUgUGFja2FnZQorPT09PT09PT09PT09PT09PT09PQorCitUaGUgZmlsZXMgaW4ga2NwIGFyZSB0YWtlbiBmcm9tIHRoZSBLZWNjYWsgQ29kZSBQYWNrYWdlLiBUaGV5IGhhdmUgYmVlbgorc2xpZ2h0bHkgdG8gYmUgQzg5IGNvbXBhdGlibGUuIFRoZSBhcmNoaXRlY3R1cmUgc3BlY2lmaWMgaGVhZGVyIGZpbGUKK0tlY2Nha1AtMTYwMC1TblAuaCBoYSBiZWVuIHJlbmFtZWQgdG8gS2VjY2FrUC0xNjAwLVNuUC1vcHQzMi5oIG9yCitLZWNjYWtQLTE2MDAtU25QLW9wdDY0LmguCisKK1RoZSA2NGJpdCBmaWxlcyB3ZXJlIGdlbmVyYXRlZCB3aXRoIGdlbmVyaWM2NGxjL2xpYmtlY2Nhay5hLnBhY2sgdGFyZ2V0LCB0aGUKKzMyYml0IGZpbGVzIHdpdGggZ2VuZXJpYzMybGMvbGlia2VjY2FrLmEucGFjay4KKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9jbGVhbnVwLnB5IGIvTW9kdWxlcy9fc2hhMy9jbGVhbnVwLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjE3YzU2YjMKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19zaGEzL2NsZWFudXAucHkKQEAgLTAsMCArMSw1MCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjIENvcHlyaWdodCAoQykgMjAxMiAgIENocmlzdGlhbiBIZWltZXMgKGNocmlzdGlhbkBweXRob24ub3JnKQorIyBMaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBDb250cmlidXRvciBBZ3JlZW1lbnQuCisjCisjIGNsZWFudXAgS2VjY2FrIHNvdXJjZXMKKworaW1wb3J0IG9zCitpbXBvcnQgcmUKKworQ1BQMSA9IHJlLmNvbXBpbGUoIl4vLyguKikiKQorQ1BQMiA9IHJlLmNvbXBpbGUoIlwgLy8oLiopIikKKworU1RBVElDUyA9ICgidm9pZCAiLCAiaW50ICIsICJIYXNoUmV0dXJuICIsCisgICAgICAgICAgICJjb25zdCBVSU5UNjQgIiwgIlVJTlQxNiAiLCAiICAgIGludCBwcmVmaXgjIyIpCisKK0hFUkUgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKF9fZmlsZV9fKSkKK0tFQ0NBSyA9IG9zLnBhdGguam9pbihIRVJFLCAia2NwIikKKworZGVmIGdldGZpbGVzKCk6CisgICAgZm9yIG5hbWUgaW4gb3MubGlzdGRpcihLRUNDQUspOgorICAgICAgICBuYW1lID0gb3MucGF0aC5qb2luKEtFQ0NBSywgbmFtZSkKKyAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUobmFtZSk6CisgICAgICAgICAgICB5aWVsZCBuYW1lCisKK2RlZiBjbGVhbnVwKGYpOgorICAgIGJ1ZiA9IFtdCisgICAgZm9yIGxpbmUgaW4gZjoKKyAgICAgICAgIyBtYXJrIGFsbCBmdW5jdGlvbnMgYW5kIGdsb2JhbCBkYXRhIGFzIHN0YXRpYworICAgICAgICAjaWYgbGluZS5zdGFydHN3aXRoKFNUQVRJQ1MpOgorICAgICAgICAjICAgIGJ1Zi5hcHBlbmQoInN0YXRpYyAiICsgbGluZSkKKyAgICAgICAgIyAgICBjb250aW51ZQorICAgICAgICAjIHJlbW92ZSBVSU5UNjQgdHlwZWRlZiwgd2UgaGF2ZSBvdXIgb3duCisgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgidHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50Iik6CisgICAgICAgICAgICBidWYuYXBwZW5kKCIvKiAlcyAqL1xuIiAlIGxpbmUuc3RyaXAoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICMjIHJlbW92ZSAjaW5jbHVkZSAiYnJnX2VuZGlhbi5oIgorICAgICAgICBpZiAiYnJnX2VuZGlhbi5oIiBpbiBsaW5lOgorICAgICAgICAgICAgYnVmLmFwcGVuZCgiLyogJXMgKi9cbiIgJSBsaW5lLnN0cmlwKCkpCisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAjIHRyYW5zZm9ybSBDKysgY29tbWVudHMgaW50byBBTlNJIEMgY29tbWVudHMKKyAgICAgICAgbGluZSA9IENQUDEuc3ViKHIiLypcMSAqL1xuIiwgbGluZSkKKyAgICAgICAgbGluZSA9IENQUDIuc3ViKHIiIC8qXDEgKi9cbiIsIGxpbmUpCisgICAgICAgIGJ1Zi5hcHBlbmQobGluZSkKKyAgICByZXR1cm4gIiIuam9pbihidWYpCisKK2ZvciBuYW1lIGluIGdldGZpbGVzKCk6CisgICAgd2l0aCBvcGVuKG5hbWUpIGFzIGY6CisgICAgICAgIHJlcyA9IGNsZWFudXAoZikKKyAgICB3aXRoIG9wZW4obmFtZSwgInciKSBhcyBmOgorICAgICAgICBmLndyaXRlKHJlcykKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NoYTMvY2xpbmljL3NoYTNtb2R1bGUuYy5oIGIvTW9kdWxlcy9fc2hhMy9jbGluaWMvc2hhM21vZHVsZS5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzY4OGU3ZAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMvY2xpbmljL3NoYTNtb2R1bGUuYy5oCkBAIC0wLDAgKzEsMTU0IEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIocHlfc2hhM19uZXdfX2RvY19fLAorInNoYTNfMjI0KHN0cmluZz1Ob25lKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgbmV3IFNIQTMgaGFzaCBvYmplY3Qgd2l0aCBhIGhhc2hiaXQgbGVuZ3RoIG9mIDI4IGJ5dGVzLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcHlfc2hhM19uZXdfaW1wbChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICpkYXRhKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3B5X3NoYTNfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE86c2hhM18yMjQiLCBfa2V5d29yZHMsIDB9OworICAgIFB5T2JqZWN0ICpkYXRhID0gTlVMTDsKKworICAgIGlmICghX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoYXJncywga3dhcmdzLCAmX3BhcnNlciwKKyAgICAgICAgJmRhdGEpKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gcHlfc2hhM19uZXdfaW1wbCh0eXBlLCBkYXRhKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NoYTNfc2hhM18yMjRfY29weV9fZG9jX18sCisiY29weSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGNvcHkgb2YgdGhlIGhhc2ggb2JqZWN0LiIpOworCisjZGVmaW5lIF9TSEEzX1NIQTNfMjI0X0NPUFlfTUVUSE9EREVGICAgIFwKKyAgICB7ImNvcHkiLCAoUHlDRnVuY3Rpb24pX3NoYTNfc2hhM18yMjRfY29weSwgTUVUSF9OT0FSR1MsIF9zaGEzX3NoYTNfMjI0X2NvcHlfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGEzX3NoYTNfMjI0X2NvcHlfaW1wbChTSEEzb2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGEzX3NoYTNfMjI0X2NvcHkoU0hBM29iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX3NoYTNfc2hhM18yMjRfY29weV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX3NoYTNfc2hhM18yMjRfZGlnZXN0X19kb2NfXywKKyJkaWdlc3QoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBiaW5hcnkgZGF0YS4iKTsKKworI2RlZmluZSBfU0hBM19TSEEzXzIyNF9ESUdFU1RfTUVUSE9EREVGICAgIFwKKyAgICB7ImRpZ2VzdCIsIChQeUNGdW5jdGlvbilfc2hhM19zaGEzXzIyNF9kaWdlc3QsIE1FVEhfTk9BUkdTLCBfc2hhM19zaGEzXzIyNF9kaWdlc3RfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGEzX3NoYTNfMjI0X2RpZ2VzdF9pbXBsKFNIQTNvYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NoYTNfc2hhM18yMjRfZGlnZXN0KFNIQTNvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9zaGEzX3NoYTNfMjI0X2RpZ2VzdF9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX3NoYTNfc2hhM18yMjRfaGV4ZGlnZXN0X19kb2NfXywKKyJoZXhkaWdlc3QoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBoZXhhZGVjaW1hbCBkaWdpdHMuIik7CisKKyNkZWZpbmUgX1NIQTNfU0hBM18yMjRfSEVYRElHRVNUX01FVEhPRERFRiAgICBcCisgICAgeyJoZXhkaWdlc3QiLCAoUHlDRnVuY3Rpb24pX3NoYTNfc2hhM18yMjRfaGV4ZGlnZXN0LCBNRVRIX05PQVJHUywgX3NoYTNfc2hhM18yMjRfaGV4ZGlnZXN0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhM19zaGEzXzIyNF9oZXhkaWdlc3RfaW1wbChTSEEzb2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGEzX3NoYTNfMjI0X2hleGRpZ2VzdChTSEEzb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfc2hhM19zaGEzXzIyNF9oZXhkaWdlc3RfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9zaGEzX3NoYTNfMjI0X3VwZGF0ZV9fZG9jX18sCisidXBkYXRlKCRzZWxmLCBvYmosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJVcGRhdGUgdGhpcyBoYXNoIG9iamVjdFwncyBzdGF0ZSB3aXRoIHRoZSBwcm92aWRlZCBzdHJpbmcuIik7CisKKyNkZWZpbmUgX1NIQTNfU0hBM18yMjRfVVBEQVRFX01FVEhPRERFRiAgICBcCisgICAgeyJ1cGRhdGUiLCAoUHlDRnVuY3Rpb24pX3NoYTNfc2hhM18yMjRfdXBkYXRlLCBNRVRIX08sIF9zaGEzX3NoYTNfMjI0X3VwZGF0ZV9fZG9jX199LAorCitQeURvY19TVFJWQVIoX3NoYTNfc2hha2VfMTI4X2RpZ2VzdF9fZG9jX18sCisiZGlnZXN0KCRzZWxmLCAvLCBsZW5ndGgpXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBiaW5hcnkgZGF0YS4iKTsKKworI2RlZmluZSBfU0hBM19TSEFLRV8xMjhfRElHRVNUX01FVEhPRERFRiAgICBcCisgICAgeyJkaWdlc3QiLCAoUHlDRnVuY3Rpb24pX3NoYTNfc2hha2VfMTI4X2RpZ2VzdCwgTUVUSF9GQVNUQ0FMTCwgX3NoYTNfc2hha2VfMTI4X2RpZ2VzdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NoYTNfc2hha2VfMTI4X2RpZ2VzdF9pbXBsKFNIQTNvYmplY3QgKnNlbGYsIHVuc2lnbmVkIGxvbmcgbGVuZ3RoKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGEzX3NoYWtlXzEyOF9kaWdlc3QoU0hBM29iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJsZW5ndGgiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJrOmRpZ2VzdCIsIF9rZXl3b3JkcywgMH07CisgICAgdW5zaWduZWQgbG9uZyBsZW5ndGg7CisKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmxlbmd0aCkpIHsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBfc2hhM19zaGFrZV8xMjhfZGlnZXN0X2ltcGwoc2VsZiwgbGVuZ3RoKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NoYTNfc2hha2VfMTI4X2hleGRpZ2VzdF9fZG9jX18sCisiaGV4ZGlnZXN0KCRzZWxmLCAvLCBsZW5ndGgpXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBoZXhhZGVjaW1hbCBkaWdpdHMuIik7CisKKyNkZWZpbmUgX1NIQTNfU0hBS0VfMTI4X0hFWERJR0VTVF9NRVRIT0RERUYgICAgXAorICAgIHsiaGV4ZGlnZXN0IiwgKFB5Q0Z1bmN0aW9uKV9zaGEzX3NoYWtlXzEyOF9oZXhkaWdlc3QsIE1FVEhfRkFTVENBTEwsIF9zaGEzX3NoYWtlXzEyOF9oZXhkaWdlc3RfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGEzX3NoYWtlXzEyOF9oZXhkaWdlc3RfaW1wbChTSEEzb2JqZWN0ICpzZWxmLCB1bnNpZ25lZCBsb25nIGxlbmd0aCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhM19zaGFrZV8xMjhfaGV4ZGlnZXN0KFNIQTNvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsibGVuZ3RoIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiazpoZXhkaWdlc3QiLCBfa2V5d29yZHMsIDB9OworICAgIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOworCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZsZW5ndGgpKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gX3NoYTNfc2hha2VfMTI4X2hleGRpZ2VzdF9pbXBsKHNlbGYsIGxlbmd0aCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05ODg4YmVhYjQ1MTM2YTU2IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha0hhc2guYyBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha0hhc2guYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMDlmYjQzCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrSGFzaC5jCkBAIC0wLDAgKzEsODIgQEAKKy8qCitJbXBsZW1lbnRhdGlvbiBieSB0aGUgS2VjY2FrLCBLZXlhayBhbmQgS2V0amUgVGVhbXMsIG5hbWVseSwgR3VpZG8gQmVydG9uaSwKK0pvYW4gRGFlbWVuLCBNaWNoYcOrbCBQZWV0ZXJzLCBHaWxsZXMgVmFuIEFzc2NoZSBhbmQgUm9ubnkgVmFuIEtlZXIsIGhlcmVieQorZGVub3RlZCBhcyAidGhlIGltcGxlbWVudGVyIi4KKworRm9yIG1vcmUgaW5mb3JtYXRpb24sIGZlZWRiYWNrIG9yIHF1ZXN0aW9ucywgcGxlYXNlIHJlZmVyIHRvIG91ciB3ZWJzaXRlczoKK2h0dHA6Ly9rZWNjYWsubm9la2Vvbi5vcmcvCitodHRwOi8va2V5YWsubm9la2Vvbi5vcmcvCitodHRwOi8va2V0amUubm9la2Vvbi5vcmcvCisKK1RvIHRoZSBleHRlbnQgcG9zc2libGUgdW5kZXIgbGF3LCB0aGUgaW1wbGVtZW50ZXIgaGFzIHdhaXZlZCBhbGwgY29weXJpZ2h0CithbmQgcmVsYXRlZCBvciBuZWlnaGJvcmluZyByaWdodHMgdG8gdGhlIHNvdXJjZSBjb2RlIGluIHRoaXMgZmlsZS4KK2h0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKyovCisKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlICJLZWNjYWtIYXNoLmgiCisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworSGFzaFJldHVybiBLZWNjYWtfSGFzaEluaXRpYWxpemUoS2VjY2FrX0hhc2hJbnN0YW5jZSAqaW5zdGFuY2UsIHVuc2lnbmVkIGludCByYXRlLCB1bnNpZ25lZCBpbnQgY2FwYWNpdHksIHVuc2lnbmVkIGludCBoYXNoYml0bGVuLCB1bnNpZ25lZCBjaGFyIGRlbGltaXRlZFN1ZmZpeCkKK3sKKyAgICBIYXNoUmV0dXJuIHJlc3VsdDsKKworICAgIGlmIChkZWxpbWl0ZWRTdWZmaXggPT0gMCkKKyAgICAgICAgcmV0dXJuIEZBSUw7CisgICAgcmVzdWx0ID0gKEhhc2hSZXR1cm4pS2VjY2FrV2lkdGgxNjAwX1Nwb25nZUluaXRpYWxpemUoJmluc3RhbmNlLT5zcG9uZ2UsIHJhdGUsIGNhcGFjaXR5KTsKKyAgICBpZiAocmVzdWx0ICE9IFNVQ0NFU1MpCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgaW5zdGFuY2UtPmZpeGVkT3V0cHV0TGVuZ3RoID0gaGFzaGJpdGxlbjsKKyAgICBpbnN0YW5jZS0+ZGVsaW1pdGVkU3VmZml4ID0gZGVsaW1pdGVkU3VmZml4OworICAgIHJldHVybiBTVUNDRVNTOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK0hhc2hSZXR1cm4gS2VjY2FrX0hhc2hVcGRhdGUoS2VjY2FrX0hhc2hJbnN0YW5jZSAqaW5zdGFuY2UsIGNvbnN0IEJpdFNlcXVlbmNlICpkYXRhLCBEYXRhTGVuZ3RoIGRhdGFiaXRsZW4pCit7CisgICAgaWYgKChkYXRhYml0bGVuICUgOCkgPT0gMCkKKyAgICAgICAgcmV0dXJuIChIYXNoUmV0dXJuKUtlY2Nha1dpZHRoMTYwMF9TcG9uZ2VBYnNvcmIoJmluc3RhbmNlLT5zcG9uZ2UsIGRhdGEsIGRhdGFiaXRsZW4vOCk7CisgICAgZWxzZSB7CisgICAgICAgIEhhc2hSZXR1cm4gcmV0ID0gKEhhc2hSZXR1cm4pS2VjY2FrV2lkdGgxNjAwX1Nwb25nZUFic29yYigmaW5zdGFuY2UtPnNwb25nZSwgZGF0YSwgZGF0YWJpdGxlbi84KTsKKyAgICAgICAgaWYgKHJldCA9PSBTVUNDRVNTKSB7CisgICAgICAgICAgICAvKiBUaGUgbGFzdCBwYXJ0aWFsIGJ5dGUgaXMgYXNzdW1lZCB0byBiZSBhbGlnbmVkIG9uIHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXRzICovCisKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgbGFzdEJ5dGUgPSBkYXRhW2RhdGFiaXRsZW4vOF07CisgICAgICAgICAgICAvKiBDb25jYXRlbmF0ZSB0aGUgbGFzdCBmZXcgYml0cyBwcm92aWRlZCBoZXJlIHdpdGggdGhvc2Ugb2YgdGhlIHN1ZmZpeCAqLworCisgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCBkZWxpbWl0ZWRMYXN0Qnl0ZXMgPSAodW5zaWduZWQgc2hvcnQpKCh1bnNpZ25lZCBzaG9ydClsYXN0Qnl0ZSB8ICgodW5zaWduZWQgc2hvcnQpaW5zdGFuY2UtPmRlbGltaXRlZFN1ZmZpeCA8PCAoZGF0YWJpdGxlbiAlIDgpKSk7CisgICAgICAgICAgICBpZiAoKGRlbGltaXRlZExhc3RCeXRlcyAmIDB4RkYwMCkgPT0gMHgwMDAwKSB7CisgICAgICAgICAgICAgICAgaW5zdGFuY2UtPmRlbGltaXRlZFN1ZmZpeCA9IGRlbGltaXRlZExhc3RCeXRlcyAmIDB4RkY7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIG9uZUJ5dGVbMV07CisgICAgICAgICAgICAgICAgb25lQnl0ZVswXSA9IGRlbGltaXRlZExhc3RCeXRlcyAmIDB4RkY7CisgICAgICAgICAgICAgICAgcmV0ID0gKEhhc2hSZXR1cm4pS2VjY2FrV2lkdGgxNjAwX1Nwb25nZUFic29yYigmaW5zdGFuY2UtPnNwb25nZSwgb25lQnl0ZSwgMSk7CisgICAgICAgICAgICAgICAgaW5zdGFuY2UtPmRlbGltaXRlZFN1ZmZpeCA9IChkZWxpbWl0ZWRMYXN0Qnl0ZXMgPj4gOCkgJiAweEZGOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiByZXQ7CisgICAgfQorfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK0hhc2hSZXR1cm4gS2VjY2FrX0hhc2hGaW5hbChLZWNjYWtfSGFzaEluc3RhbmNlICppbnN0YW5jZSwgQml0U2VxdWVuY2UgKmhhc2h2YWwpCit7CisgICAgSGFzaFJldHVybiByZXQgPSAoSGFzaFJldHVybilLZWNjYWtXaWR0aDE2MDBfU3BvbmdlQWJzb3JiTGFzdEZld0JpdHMoJmluc3RhbmNlLT5zcG9uZ2UsIGluc3RhbmNlLT5kZWxpbWl0ZWRTdWZmaXgpOworICAgIGlmIChyZXQgPT0gU1VDQ0VTUykKKyAgICAgICAgcmV0dXJuIChIYXNoUmV0dXJuKUtlY2Nha1dpZHRoMTYwMF9TcG9uZ2VTcXVlZXplKCZpbnN0YW5jZS0+c3BvbmdlLCBoYXNodmFsLCBpbnN0YW5jZS0+Zml4ZWRPdXRwdXRMZW5ndGgvOCk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gcmV0OworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK0hhc2hSZXR1cm4gS2VjY2FrX0hhc2hTcXVlZXplKEtlY2Nha19IYXNoSW5zdGFuY2UgKmluc3RhbmNlLCBCaXRTZXF1ZW5jZSAqZGF0YSwgRGF0YUxlbmd0aCBkYXRhYml0bGVuKQoreworICAgIGlmICgoZGF0YWJpdGxlbiAlIDgpICE9IDApCisgICAgICAgIHJldHVybiBGQUlMOworICAgIHJldHVybiAoSGFzaFJldHVybilLZWNjYWtXaWR0aDE2MDBfU3BvbmdlU3F1ZWV6ZSgmaW5zdGFuY2UtPnNwb25nZSwgZGF0YSwgZGF0YWJpdGxlbi84KTsKK30KZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha0hhc2guaCBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha0hhc2guaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYmQzZGM2Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrSGFzaC5oCkBAIC0wLDAgKzEsMTE0IEBACisvKgorSW1wbGVtZW50YXRpb24gYnkgdGhlIEtlY2NhaywgS2V5YWsgYW5kIEtldGplIFRlYW1zLCBuYW1lbHksIEd1aWRvIEJlcnRvbmksCitKb2FuIERhZW1lbiwgTWljaGHDq2wgUGVldGVycywgR2lsbGVzIFZhbiBBc3NjaGUgYW5kIFJvbm55IFZhbiBLZWVyLCBoZXJlYnkKK2Rlbm90ZWQgYXMgInRoZSBpbXBsZW1lbnRlciIuCisKK0ZvciBtb3JlIGluZm9ybWF0aW9uLCBmZWVkYmFjayBvciBxdWVzdGlvbnMsIHBsZWFzZSByZWZlciB0byBvdXIgd2Vic2l0ZXM6CitodHRwOi8va2VjY2FrLm5vZWtlb24ub3JnLworaHR0cDovL2tleWFrLm5vZWtlb24ub3JnLworaHR0cDovL2tldGplLm5vZWtlb24ub3JnLworCitUbyB0aGUgZXh0ZW50IHBvc3NpYmxlIHVuZGVyIGxhdywgdGhlIGltcGxlbWVudGVyIGhhcyB3YWl2ZWQgYWxsIGNvcHlyaWdodAorYW5kIHJlbGF0ZWQgb3IgbmVpZ2hib3JpbmcgcmlnaHRzIHRvIHRoZSBzb3VyY2UgY29kZSBpbiB0aGlzIGZpbGUuCitodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCisqLworCisjaWZuZGVmIF9LZWNjYWtIYXNoSW50ZXJmYWNlX2hfCisjZGVmaW5lIF9LZWNjYWtIYXNoSW50ZXJmYWNlX2hfCisKKyNpZm5kZWYgS2VjY2FrUDE2MDBfZXhjbHVkZWQKKworI2luY2x1ZGUgIktlY2Nha1Nwb25nZS5oIgorI2luY2x1ZGUgPHN0cmluZy5oPgorCit0eXBlZGVmIHVuc2lnbmVkIGNoYXIgQml0U2VxdWVuY2U7Cit0eXBlZGVmIHNpemVfdCBEYXRhTGVuZ3RoOwordHlwZWRlZiBlbnVtIHsgU1VDQ0VTUyA9IDAsIEZBSUwgPSAxLCBCQURfSEFTSExFTiA9IDIgfSBIYXNoUmV0dXJuOworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgS2VjY2FrV2lkdGgxNjAwX1Nwb25nZUluc3RhbmNlIHNwb25nZTsKKyAgICB1bnNpZ25lZCBpbnQgZml4ZWRPdXRwdXRMZW5ndGg7CisgICAgdW5zaWduZWQgY2hhciBkZWxpbWl0ZWRTdWZmaXg7Cit9IEtlY2Nha19IYXNoSW5zdGFuY2U7CisKKy8qKgorICAqIEZ1bmN0aW9uIHRvIGluaXRpYWxpemUgdGhlIEtlY2Nha1tyLCBjXSBzcG9uZ2UgZnVuY3Rpb24gaW5zdGFuY2UgdXNlZCBpbiBzZXF1ZW50aWFsIGhhc2hpbmcgbW9kZS4KKyAgKiBAcGFyYW0gIGhhc2hJbnN0YW5jZSAgICBQb2ludGVyIHRvIHRoZSBoYXNoIGluc3RhbmNlIHRvIGJlIGluaXRpYWxpemVkLgorICAqIEBwYXJhbSAgcmF0ZSAgICAgICAgVGhlIHZhbHVlIG9mIHRoZSByYXRlIHIuCisgICogQHBhcmFtICBjYXBhY2l0eSAgICBUaGUgdmFsdWUgb2YgdGhlIGNhcGFjaXR5IGMuCisgICogQHBhcmFtICBoYXNoYml0bGVuICBUaGUgZGVzaXJlZCBudW1iZXIgb2Ygb3V0cHV0IGJpdHMsCisgICogICAgICAgICAgICAgICAgICAgICBvciAwIGZvciBhbiBhcmJpdHJhcmlseS1sb25nIG91dHB1dC4KKyAgKiBAcGFyYW0gIGRlbGltaXRlZFN1ZmZpeCBCaXRzIHRoYXQgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGFwcGVuZGVkIHRvIHRoZSBlbmQKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgaW5wdXQgbWVzc2FnZSwgYXMgaW4gZG9tYWluIHNlcGFyYXRpb24uCisgICogICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBhIGJ5dGUgY29udGFpbmluZyBmcm9tIDAgdG8gNyBiaXRzCisgICogICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkIGxpa2UgdGhlIEBhIGRlbGltaXRlZERhdGEgcGFyYW1ldGVyIG9mCisgICogICAgICAgICAgICAgICAgICAgICAgICAgdGhlIEtlY2Nha19TcG9uZ2VBYnNvcmJMYXN0RmV3Qml0cygpIGZ1bmN0aW9uLgorICAqIEBwcmUgICAgT25lIG11c3QgaGF2ZSByK2M9MTYwMCBhbmQgdGhlIHJhdGUgYSBtdWx0aXBsZSBvZiA4IGJpdHMgaW4gdGhpcyBpbXBsZW1lbnRhdGlvbi4KKyAgKiBAcmV0dXJuIFNVQ0NFU1MgaWYgc3VjY2Vzc2Z1bCwgRkFJTCBvdGhlcndpc2UuCisgICovCitIYXNoUmV0dXJuIEtlY2Nha19IYXNoSW5pdGlhbGl6ZShLZWNjYWtfSGFzaEluc3RhbmNlICpoYXNoSW5zdGFuY2UsIHVuc2lnbmVkIGludCByYXRlLCB1bnNpZ25lZCBpbnQgY2FwYWNpdHksIHVuc2lnbmVkIGludCBoYXNoYml0bGVuLCB1bnNpZ25lZCBjaGFyIGRlbGltaXRlZFN1ZmZpeCk7CisKKy8qKiBNYWNybyB0byBpbml0aWFsaXplIGEgU0hBS0UxMjggaW5zdGFuY2UgYXMgc3BlY2lmaWVkIGluIHRoZSBGSVBTIDIwMiBzdGFuZGFyZC4KKyAgKi8KKyNkZWZpbmUgS2VjY2FrX0hhc2hJbml0aWFsaXplX1NIQUtFMTI4KGhhc2hJbnN0YW5jZSkgICAgICAgIEtlY2Nha19IYXNoSW5pdGlhbGl6ZShoYXNoSW5zdGFuY2UsIDEzNDQsICAyNTYsICAgMCwgMHgxRikKKworLyoqIE1hY3JvIHRvIGluaXRpYWxpemUgYSBTSEFLRTI1NiBpbnN0YW5jZSBhcyBzcGVjaWZpZWQgaW4gdGhlIEZJUFMgMjAyIHN0YW5kYXJkLgorICAqLworI2RlZmluZSBLZWNjYWtfSGFzaEluaXRpYWxpemVfU0hBS0UyNTYoaGFzaEluc3RhbmNlKSAgICAgICAgS2VjY2FrX0hhc2hJbml0aWFsaXplKGhhc2hJbnN0YW5jZSwgMTA4OCwgIDUxMiwgICAwLCAweDFGKQorCisvKiogTWFjcm8gdG8gaW5pdGlhbGl6ZSBhIFNIQTMtMjI0IGluc3RhbmNlIGFzIHNwZWNpZmllZCBpbiB0aGUgRklQUyAyMDIgc3RhbmRhcmQuCisgICovCisjZGVmaW5lIEtlY2Nha19IYXNoSW5pdGlhbGl6ZV9TSEEzXzIyNChoYXNoSW5zdGFuY2UpICAgICAgICBLZWNjYWtfSGFzaEluaXRpYWxpemUoaGFzaEluc3RhbmNlLCAxMTUyLCAgNDQ4LCAyMjQsIDB4MDYpCisKKy8qKiBNYWNybyB0byBpbml0aWFsaXplIGEgU0hBMy0yNTYgaW5zdGFuY2UgYXMgc3BlY2lmaWVkIGluIHRoZSBGSVBTIDIwMiBzdGFuZGFyZC4KKyAgKi8KKyNkZWZpbmUgS2VjY2FrX0hhc2hJbml0aWFsaXplX1NIQTNfMjU2KGhhc2hJbnN0YW5jZSkgICAgICAgIEtlY2Nha19IYXNoSW5pdGlhbGl6ZShoYXNoSW5zdGFuY2UsIDEwODgsICA1MTIsIDI1NiwgMHgwNikKKworLyoqIE1hY3JvIHRvIGluaXRpYWxpemUgYSBTSEEzLTM4NCBpbnN0YW5jZSBhcyBzcGVjaWZpZWQgaW4gdGhlIEZJUFMgMjAyIHN0YW5kYXJkLgorICAqLworI2RlZmluZSBLZWNjYWtfSGFzaEluaXRpYWxpemVfU0hBM18zODQoaGFzaEluc3RhbmNlKSAgICAgICAgS2VjY2FrX0hhc2hJbml0aWFsaXplKGhhc2hJbnN0YW5jZSwgIDgzMiwgIDc2OCwgMzg0LCAweDA2KQorCisvKiogTWFjcm8gdG8gaW5pdGlhbGl6ZSBhIFNIQTMtNTEyIGluc3RhbmNlIGFzIHNwZWNpZmllZCBpbiB0aGUgRklQUyAyMDIgc3RhbmRhcmQuCisgICovCisjZGVmaW5lIEtlY2Nha19IYXNoSW5pdGlhbGl6ZV9TSEEzXzUxMihoYXNoSW5zdGFuY2UpICAgICAgICBLZWNjYWtfSGFzaEluaXRpYWxpemUoaGFzaEluc3RhbmNlLCAgNTc2LCAxMDI0LCA1MTIsIDB4MDYpCisKKy8qKgorICAqIEZ1bmN0aW9uIHRvIGdpdmUgaW5wdXQgZGF0YSB0byBiZSBhYnNvcmJlZC4KKyAgKiBAcGFyYW0gIGhhc2hJbnN0YW5jZSAgICBQb2ludGVyIHRvIHRoZSBoYXNoIGluc3RhbmNlIGluaXRpYWxpemVkIGJ5IEtlY2Nha19IYXNoSW5pdGlhbGl6ZSgpLgorICAqIEBwYXJhbSAgZGF0YSAgICAgICAgUG9pbnRlciB0byB0aGUgaW5wdXQgZGF0YS4KKyAgKiAgICAgICAgICAgICAgICAgICAgIFdoZW4gQGEgZGF0YWJpdExlbiBpcyBub3QgYSBtdWx0aXBsZSBvZiA4LCB0aGUgbGFzdCBiaXRzIG9mIGRhdGEgbXVzdCBiZQorICAqICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdHMgb2YgdGhlIGxhc3QgYnl0ZSAobGl0dGxlLWVuZGlhbiBjb252ZW50aW9uKS4KKyAgKiBAcGFyYW0gIGRhdGFiaXRMZW4gIFRoZSBudW1iZXIgb2YgaW5wdXQgYml0cyBwcm92aWRlZCBpbiB0aGUgaW5wdXQgZGF0YS4KKyAgKiBAcHJlICAgIEluIHRoZSBwcmV2aW91cyBjYWxsIHRvIEtlY2Nha19IYXNoVXBkYXRlKCksIGRhdGFiaXRsZW4gd2FzIGEgbXVsdGlwbGUgb2YgOC4KKyAgKiBAcmV0dXJuIFNVQ0NFU1MgaWYgc3VjY2Vzc2Z1bCwgRkFJTCBvdGhlcndpc2UuCisgICovCitIYXNoUmV0dXJuIEtlY2Nha19IYXNoVXBkYXRlKEtlY2Nha19IYXNoSW5zdGFuY2UgKmhhc2hJbnN0YW5jZSwgY29uc3QgQml0U2VxdWVuY2UgKmRhdGEsIERhdGFMZW5ndGggZGF0YWJpdGxlbik7CisKKy8qKgorICAqIEZ1bmN0aW9uIHRvIGNhbGwgYWZ0ZXIgYWxsIGlucHV0IGJsb2NrcyBoYXZlIGJlZW4gaW5wdXQgYW5kIHRvIGdldAorICAqIG91dHB1dCBiaXRzIGlmIHRoZSBsZW5ndGggd2FzIHNwZWNpZmllZCB3aGVuIGNhbGxpbmcgS2VjY2FrX0hhc2hJbml0aWFsaXplKCkuCisgICogQHBhcmFtICBoYXNoSW5zdGFuY2UgICAgUG9pbnRlciB0byB0aGUgaGFzaCBpbnN0YW5jZSBpbml0aWFsaXplZCBieSBLZWNjYWtfSGFzaEluaXRpYWxpemUoKS4KKyAgKiBJZiBAYSBoYXNoYml0bGVuIHdhcyBub3QgMCBpbiB0aGUgY2FsbCB0byBLZWNjYWtfSGFzaEluaXRpYWxpemUoKSwgdGhlIG51bWJlciBvZgorICAqICAgICBvdXRwdXQgYml0cyBpcyBlcXVhbCB0byBAYSBoYXNoYml0bGVuLgorICAqIElmIEBhIGhhc2hiaXRsZW4gd2FzIDAgaW4gdGhlIGNhbGwgdG8gS2VjY2FrX0hhc2hJbml0aWFsaXplKCksIHRoZSBvdXRwdXQgYml0cworICAqICAgICBtdXN0IGJlIGV4dHJhY3RlZCB1c2luZyB0aGUgS2VjY2FrX0hhc2hTcXVlZXplKCkgZnVuY3Rpb24uCisgICogQHBhcmFtICBzdGF0ZSAgICAgICBQb2ludGVyIHRvIHRoZSBzdGF0ZSBvZiB0aGUgc3BvbmdlIGZ1bmN0aW9uIGluaXRpYWxpemVkIGJ5IEluaXQoKS4KKyAgKiBAcGFyYW0gIGhhc2h2YWwgICAgIFBvaW50ZXIgdG8gdGhlIGJ1ZmZlciB3aGVyZSB0byBzdG9yZSB0aGUgb3V0cHV0IGRhdGEuCisgICogQHJldHVybiBTVUNDRVNTIGlmIHN1Y2Nlc3NmdWwsIEZBSUwgb3RoZXJ3aXNlLgorICAqLworSGFzaFJldHVybiBLZWNjYWtfSGFzaEZpbmFsKEtlY2Nha19IYXNoSW5zdGFuY2UgKmhhc2hJbnN0YW5jZSwgQml0U2VxdWVuY2UgKmhhc2h2YWwpOworCisgLyoqCisgICogRnVuY3Rpb24gdG8gc3F1ZWV6ZSBvdXRwdXQgZGF0YS4KKyAgKiBAcGFyYW0gIGhhc2hJbnN0YW5jZSAgICBQb2ludGVyIHRvIHRoZSBoYXNoIGluc3RhbmNlIGluaXRpYWxpemVkIGJ5IEtlY2Nha19IYXNoSW5pdGlhbGl6ZSgpLgorICAqIEBwYXJhbSAgZGF0YSAgICAgICAgUG9pbnRlciB0byB0aGUgYnVmZmVyIHdoZXJlIHRvIHN0b3JlIHRoZSBvdXRwdXQgZGF0YS4KKyAgKiBAcGFyYW0gIGRhdGFiaXRsZW4gIFRoZSBudW1iZXIgb2Ygb3V0cHV0IGJpdHMgZGVzaXJlZCAobXVzdCBiZSBhIG11bHRpcGxlIG9mIDgpLgorICAqIEBwcmUgICAgS2VjY2FrX0hhc2hGaW5hbCgpIG11c3QgaGF2ZSBiZWVuIGFscmVhZHkgY2FsbGVkLgorICAqIEBwcmUgICAgQGEgZGF0YWJpdGxlbiBpcyBhIG11bHRpcGxlIG9mIDguCisgICogQHJldHVybiBTVUNDRVNTIGlmIHN1Y2Nlc3NmdWwsIEZBSUwgb3RoZXJ3aXNlLgorICAqLworSGFzaFJldHVybiBLZWNjYWtfSGFzaFNxdWVlemUoS2VjY2FrX0hhc2hJbnN0YW5jZSAqaGFzaEluc3RhbmNlLCBCaXRTZXF1ZW5jZSAqZGF0YSwgRGF0YUxlbmd0aCBkYXRhYml0bGVuKTsKKworI2VuZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrUC0xNjAwLTY0Lm1hY3JvcyBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC02NC5tYWNyb3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWYxMWZlMwotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC02NC5tYWNyb3MKQEAgLTAsMCArMSwyMjA4IEBACisvKgorSW1wbGVtZW50YXRpb24gYnkgdGhlIEtlY2NhaywgS2V5YWsgYW5kIEtldGplIFRlYW1zLCBuYW1lbHksIEd1aWRvIEJlcnRvbmksCitKb2FuIERhZW1lbiwgTWljaGHDq2wgUGVldGVycywgR2lsbGVzIFZhbiBBc3NjaGUgYW5kIFJvbm55IFZhbiBLZWVyLCBoZXJlYnkKK2Rlbm90ZWQgYXMgInRoZSBpbXBsZW1lbnRlciIuCisKK0ZvciBtb3JlIGluZm9ybWF0aW9uLCBmZWVkYmFjayBvciBxdWVzdGlvbnMsIHBsZWFzZSByZWZlciB0byBvdXIgd2Vic2l0ZXM6CitodHRwOi8va2VjY2FrLm5vZWtlb24ub3JnLworaHR0cDovL2tleWFrLm5vZWtlb24ub3JnLworaHR0cDovL2tldGplLm5vZWtlb24ub3JnLworCitUbyB0aGUgZXh0ZW50IHBvc3NpYmxlIHVuZGVyIGxhdywgdGhlIGltcGxlbWVudGVyIGhhcyB3YWl2ZWQgYWxsIGNvcHlyaWdodAorYW5kIHJlbGF0ZWQgb3IgbmVpZ2hib3JpbmcgcmlnaHRzIHRvIHRoZSBzb3VyY2UgY29kZSBpbiB0aGlzIGZpbGUuCitodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCisqLworCisjZGVmaW5lIGRlY2xhcmVBQkNERSBcCisgICAgVUlOVDY0IEFiYSwgQWJlLCBBYmksIEFibywgQWJ1OyBcCisgICAgVUlOVDY0IEFnYSwgQWdlLCBBZ2ksIEFnbywgQWd1OyBcCisgICAgVUlOVDY0IEFrYSwgQWtlLCBBa2ksIEFrbywgQWt1OyBcCisgICAgVUlOVDY0IEFtYSwgQW1lLCBBbWksIEFtbywgQW11OyBcCisgICAgVUlOVDY0IEFzYSwgQXNlLCBBc2ksIEFzbywgQXN1OyBcCisgICAgVUlOVDY0IEJiYSwgQmJlLCBCYmksIEJibywgQmJ1OyBcCisgICAgVUlOVDY0IEJnYSwgQmdlLCBCZ2ksIEJnbywgQmd1OyBcCisgICAgVUlOVDY0IEJrYSwgQmtlLCBCa2ksIEJrbywgQmt1OyBcCisgICAgVUlOVDY0IEJtYSwgQm1lLCBCbWksIEJtbywgQm11OyBcCisgICAgVUlOVDY0IEJzYSwgQnNlLCBCc2ksIEJzbywgQnN1OyBcCisgICAgVUlOVDY0IENhLCBDZSwgQ2ksIENvLCBDdTsgXAorICAgIFVJTlQ2NCBEYSwgRGUsIERpLCBEbywgRHU7IFwKKyAgICBVSU5UNjQgRWJhLCBFYmUsIEViaSwgRWJvLCBFYnU7IFwKKyAgICBVSU5UNjQgRWdhLCBFZ2UsIEVnaSwgRWdvLCBFZ3U7IFwKKyAgICBVSU5UNjQgRWthLCBFa2UsIEVraSwgRWtvLCBFa3U7IFwKKyAgICBVSU5UNjQgRW1hLCBFbWUsIEVtaSwgRW1vLCBFbXU7IFwKKyAgICBVSU5UNjQgRXNhLCBFc2UsIEVzaSwgRXNvLCBFc3U7IFwKKworI2RlZmluZSBwcmVwYXJlVGhldGEgXAorICAgIENhID0gQWJhXkFnYV5Ba2FeQW1hXkFzYTsgXAorICAgIENlID0gQWJlXkFnZV5Ba2VeQW1lXkFzZTsgXAorICAgIENpID0gQWJpXkFnaV5Ba2leQW1pXkFzaTsgXAorICAgIENvID0gQWJvXkFnb15Ba29eQW1vXkFzbzsgXAorICAgIEN1ID0gQWJ1XkFndV5Ba3VeQW11XkFzdTsgXAorCisjaWZkZWYgVXNlQmViaWdva2ltaXNhCisvKiAtLS0gQ29kZSBmb3Igcm91bmQsIHdpdGggcHJlcGFyZS10aGV0YSAobGFuZSBjb21wbGVtZW50aW5nIHBhdHRlcm4gJ2JlYmlnb2tpbWlzYScpICovCisKKy8qIC0tLSA2NC1iaXQgbGFuZXMgbWFwcGVkIHRvIDY0LWJpdCB3b3JkcyAqLworCisjZGVmaW5lIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGksIEEsIEUpIFwKKyAgICBEYSA9IEN1XlJPTDY0KENlLCAxKTsgXAorICAgIERlID0gQ2FeUk9MNjQoQ2ksIDEpOyBcCisgICAgRGkgPSBDZV5ST0w2NChDbywgMSk7IFwKKyAgICBEbyA9IENpXlJPTDY0KEN1LCAxKTsgXAorICAgIER1ID0gQ29eUk9MNjQoQ2EsIDEpOyBcCitcCisgICAgQSMjYmEgXj0gRGE7IFwKKyAgICBCYmEgPSBBIyNiYTsgXAorICAgIEEjI2dlIF49IERlOyBcCisgICAgQmJlID0gUk9MNjQoQSMjZ2UsIDQ0KTsgXAorICAgIEEjI2tpIF49IERpOyBcCisgICAgQmJpID0gUk9MNjQoQSMja2ksIDQzKTsgXAorICAgIEEjI21vIF49IERvOyBcCisgICAgQmJvID0gUk9MNjQoQSMjbW8sIDIxKTsgXAorICAgIEEjI3N1IF49IER1OyBcCisgICAgQmJ1ID0gUk9MNjQoQSMjc3UsIDE0KTsgXAorICAgIEUjI2JhID0gICBCYmEgXiggIEJiZSB8ICBCYmkgKTsgXAorICAgIEUjI2JhIF49IEtlY2Nha0YxNjAwUm91bmRDb25zdGFudHNbaV07IFwKKyAgICBDYSA9IEUjI2JhOyBcCisgICAgRSMjYmUgPSAgIEJiZSBeKCh+QmJpKXwgIEJibyApOyBcCisgICAgQ2UgPSBFIyNiZTsgXAorICAgIEUjI2JpID0gICBCYmkgXiggIEJibyAmICBCYnUgKTsgXAorICAgIENpID0gRSMjYmk7IFwKKyAgICBFIyNibyA9ICAgQmJvIF4oICBCYnUgfCAgQmJhICk7IFwKKyAgICBDbyA9IEUjI2JvOyBcCisgICAgRSMjYnUgPSAgIEJidSBeKCAgQmJhICYgIEJiZSApOyBcCisgICAgQ3UgPSBFIyNidTsgXAorXAorICAgIEEjI2JvIF49IERvOyBcCisgICAgQmdhID0gUk9MNjQoQSMjYm8sIDI4KTsgXAorICAgIEEjI2d1IF49IER1OyBcCisgICAgQmdlID0gUk9MNjQoQSMjZ3UsIDIwKTsgXAorICAgIEEjI2thIF49IERhOyBcCisgICAgQmdpID0gUk9MNjQoQSMja2EsIDMpOyBcCisgICAgQSMjbWUgXj0gRGU7IFwKKyAgICBCZ28gPSBST0w2NChBIyNtZSwgNDUpOyBcCisgICAgQSMjc2kgXj0gRGk7IFwKKyAgICBCZ3UgPSBST0w2NChBIyNzaSwgNjEpOyBcCisgICAgRSMjZ2EgPSAgIEJnYSBeKCAgQmdlIHwgIEJnaSApOyBcCisgICAgQ2EgXj0gRSMjZ2E7IFwKKyAgICBFIyNnZSA9ICAgQmdlIF4oICBCZ2kgJiAgQmdvICk7IFwKKyAgICBDZSBePSBFIyNnZTsgXAorICAgIEUjI2dpID0gICBCZ2kgXiggIEJnbyB8KH5CZ3UpKTsgXAorICAgIENpIF49IEUjI2dpOyBcCisgICAgRSMjZ28gPSAgIEJnbyBeKCAgQmd1IHwgIEJnYSApOyBcCisgICAgQ28gXj0gRSMjZ287IFwKKyAgICBFIyNndSA9ICAgQmd1IF4oICBCZ2EgJiAgQmdlICk7IFwKKyAgICBDdSBePSBFIyNndTsgXAorXAorICAgIEEjI2JlIF49IERlOyBcCisgICAgQmthID0gUk9MNjQoQSMjYmUsIDEpOyBcCisgICAgQSMjZ2kgXj0gRGk7IFwKKyAgICBCa2UgPSBST0w2NChBIyNnaSwgNik7IFwKKyAgICBBIyNrbyBePSBEbzsgXAorICAgIEJraSA9IFJPTDY0KEEjI2tvLCAyNSk7IFwKKyAgICBBIyNtdSBePSBEdTsgXAorICAgIEJrbyA9IFJPTDY0KEEjI211LCA4KTsgXAorICAgIEEjI3NhIF49IERhOyBcCisgICAgQmt1ID0gUk9MNjQoQSMjc2EsIDE4KTsgXAorICAgIEUjI2thID0gICBCa2EgXiggIEJrZSB8ICBCa2kgKTsgXAorICAgIENhIF49IEUjI2thOyBcCisgICAgRSMja2UgPSAgIEJrZSBeKCAgQmtpICYgIEJrbyApOyBcCisgICAgQ2UgXj0gRSMja2U7IFwKKyAgICBFIyNraSA9ICAgQmtpIF4oKH5Ca28pJiAgQmt1ICk7IFwKKyAgICBDaSBePSBFIyNraTsgXAorICAgIEUjI2tvID0gKH5Ca28pXiggIEJrdSB8ICBCa2EgKTsgXAorICAgIENvIF49IEUjI2tvOyBcCisgICAgRSMja3UgPSAgIEJrdSBeKCAgQmthICYgIEJrZSApOyBcCisgICAgQ3UgXj0gRSMja3U7IFwKK1wKKyAgICBBIyNidSBePSBEdTsgXAorICAgIEJtYSA9IFJPTDY0KEEjI2J1LCAyNyk7IFwKKyAgICBBIyNnYSBePSBEYTsgXAorICAgIEJtZSA9IFJPTDY0KEEjI2dhLCAzNik7IFwKKyAgICBBIyNrZSBePSBEZTsgXAorICAgIEJtaSA9IFJPTDY0KEEjI2tlLCAxMCk7IFwKKyAgICBBIyNtaSBePSBEaTsgXAorICAgIEJtbyA9IFJPTDY0KEEjI21pLCAxNSk7IFwKKyAgICBBIyNzbyBePSBEbzsgXAorICAgIEJtdSA9IFJPTDY0KEEjI3NvLCA1Nik7IFwKKyAgICBFIyNtYSA9ICAgQm1hIF4oICBCbWUgJiAgQm1pICk7IFwKKyAgICBDYSBePSBFIyNtYTsgXAorICAgIEUjI21lID0gICBCbWUgXiggIEJtaSB8ICBCbW8gKTsgXAorICAgIENlIF49IEUjI21lOyBcCisgICAgRSMjbWkgPSAgIEJtaSBeKCh+Qm1vKXwgIEJtdSApOyBcCisgICAgQ2kgXj0gRSMjbWk7IFwKKyAgICBFIyNtbyA9ICh+Qm1vKV4oICBCbXUgJiAgQm1hICk7IFwKKyAgICBDbyBePSBFIyNtbzsgXAorICAgIEUjI211ID0gICBCbXUgXiggIEJtYSB8ICBCbWUgKTsgXAorICAgIEN1IF49IEUjI211OyBcCitcCisgICAgQSMjYmkgXj0gRGk7IFwKKyAgICBCc2EgPSBST0w2NChBIyNiaSwgNjIpOyBcCisgICAgQSMjZ28gXj0gRG87IFwKKyAgICBCc2UgPSBST0w2NChBIyNnbywgNTUpOyBcCisgICAgQSMja3UgXj0gRHU7IFwKKyAgICBCc2kgPSBST0w2NChBIyNrdSwgMzkpOyBcCisgICAgQSMjbWEgXj0gRGE7IFwKKyAgICBCc28gPSBST0w2NChBIyNtYSwgNDEpOyBcCisgICAgQSMjc2UgXj0gRGU7IFwKKyAgICBCc3UgPSBST0w2NChBIyNzZSwgMik7IFwKKyAgICBFIyNzYSA9ICAgQnNhIF4oKH5Cc2UpJiAgQnNpICk7IFwKKyAgICBDYSBePSBFIyNzYTsgXAorICAgIEUjI3NlID0gKH5Cc2UpXiggIEJzaSB8ICBCc28gKTsgXAorICAgIENlIF49IEUjI3NlOyBcCisgICAgRSMjc2kgPSAgIEJzaSBeKCAgQnNvICYgIEJzdSApOyBcCisgICAgQ2kgXj0gRSMjc2k7IFwKKyAgICBFIyNzbyA9ICAgQnNvIF4oICBCc3UgfCAgQnNhICk7IFwKKyAgICBDbyBePSBFIyNzbzsgXAorICAgIEUjI3N1ID0gICBCc3UgXiggIEJzYSAmICBCc2UgKTsgXAorICAgIEN1IF49IEUjI3N1OyBcCitcCisKKy8qIC0tLSBDb2RlIGZvciByb3VuZCAobGFuZSBjb21wbGVtZW50aW5nIHBhdHRlcm4gJ2JlYmlnb2tpbWlzYScpICovCisKKy8qIC0tLSA2NC1iaXQgbGFuZXMgbWFwcGVkIHRvIDY0LWJpdCB3b3JkcyAqLworCisjZGVmaW5lIHRoZXRhUmhvUGlDaGlJb3RhKGksIEEsIEUpIFwKKyAgICBEYSA9IEN1XlJPTDY0KENlLCAxKTsgXAorICAgIERlID0gQ2FeUk9MNjQoQ2ksIDEpOyBcCisgICAgRGkgPSBDZV5ST0w2NChDbywgMSk7IFwKKyAgICBEbyA9IENpXlJPTDY0KEN1LCAxKTsgXAorICAgIER1ID0gQ29eUk9MNjQoQ2EsIDEpOyBcCitcCisgICAgQSMjYmEgXj0gRGE7IFwKKyAgICBCYmEgPSBBIyNiYTsgXAorICAgIEEjI2dlIF49IERlOyBcCisgICAgQmJlID0gUk9MNjQoQSMjZ2UsIDQ0KTsgXAorICAgIEEjI2tpIF49IERpOyBcCisgICAgQmJpID0gUk9MNjQoQSMja2ksIDQzKTsgXAorICAgIEEjI21vIF49IERvOyBcCisgICAgQmJvID0gUk9MNjQoQSMjbW8sIDIxKTsgXAorICAgIEEjI3N1IF49IER1OyBcCisgICAgQmJ1ID0gUk9MNjQoQSMjc3UsIDE0KTsgXAorICAgIEUjI2JhID0gICBCYmEgXiggIEJiZSB8ICBCYmkgKTsgXAorICAgIEUjI2JhIF49IEtlY2Nha0YxNjAwUm91bmRDb25zdGFudHNbaV07IFwKKyAgICBFIyNiZSA9ICAgQmJlIF4oKH5CYmkpfCAgQmJvICk7IFwKKyAgICBFIyNiaSA9ICAgQmJpIF4oICBCYm8gJiAgQmJ1ICk7IFwKKyAgICBFIyNibyA9ICAgQmJvIF4oICBCYnUgfCAgQmJhICk7IFwKKyAgICBFIyNidSA9ICAgQmJ1IF4oICBCYmEgJiAgQmJlICk7IFwKK1wKKyAgICBBIyNibyBePSBEbzsgXAorICAgIEJnYSA9IFJPTDY0KEEjI2JvLCAyOCk7IFwKKyAgICBBIyNndSBePSBEdTsgXAorICAgIEJnZSA9IFJPTDY0KEEjI2d1LCAyMCk7IFwKKyAgICBBIyNrYSBePSBEYTsgXAorICAgIEJnaSA9IFJPTDY0KEEjI2thLCAzKTsgXAorICAgIEEjI21lIF49IERlOyBcCisgICAgQmdvID0gUk9MNjQoQSMjbWUsIDQ1KTsgXAorICAgIEEjI3NpIF49IERpOyBcCisgICAgQmd1ID0gUk9MNjQoQSMjc2ksIDYxKTsgXAorICAgIEUjI2dhID0gICBCZ2EgXiggIEJnZSB8ICBCZ2kgKTsgXAorICAgIEUjI2dlID0gICBCZ2UgXiggIEJnaSAmICBCZ28gKTsgXAorICAgIEUjI2dpID0gICBCZ2kgXiggIEJnbyB8KH5CZ3UpKTsgXAorICAgIEUjI2dvID0gICBCZ28gXiggIEJndSB8ICBCZ2EgKTsgXAorICAgIEUjI2d1ID0gICBCZ3UgXiggIEJnYSAmICBCZ2UgKTsgXAorXAorICAgIEEjI2JlIF49IERlOyBcCisgICAgQmthID0gUk9MNjQoQSMjYmUsIDEpOyBcCisgICAgQSMjZ2kgXj0gRGk7IFwKKyAgICBCa2UgPSBST0w2NChBIyNnaSwgNik7IFwKKyAgICBBIyNrbyBePSBEbzsgXAorICAgIEJraSA9IFJPTDY0KEEjI2tvLCAyNSk7IFwKKyAgICBBIyNtdSBePSBEdTsgXAorICAgIEJrbyA9IFJPTDY0KEEjI211LCA4KTsgXAorICAgIEEjI3NhIF49IERhOyBcCisgICAgQmt1ID0gUk9MNjQoQSMjc2EsIDE4KTsgXAorICAgIEUjI2thID0gICBCa2EgXiggIEJrZSB8ICBCa2kgKTsgXAorICAgIEUjI2tlID0gICBCa2UgXiggIEJraSAmICBCa28gKTsgXAorICAgIEUjI2tpID0gICBCa2kgXigofkJrbykmICBCa3UgKTsgXAorICAgIEUjI2tvID0gKH5Ca28pXiggIEJrdSB8ICBCa2EgKTsgXAorICAgIEUjI2t1ID0gICBCa3UgXiggIEJrYSAmICBCa2UgKTsgXAorXAorICAgIEEjI2J1IF49IER1OyBcCisgICAgQm1hID0gUk9MNjQoQSMjYnUsIDI3KTsgXAorICAgIEEjI2dhIF49IERhOyBcCisgICAgQm1lID0gUk9MNjQoQSMjZ2EsIDM2KTsgXAorICAgIEEjI2tlIF49IERlOyBcCisgICAgQm1pID0gUk9MNjQoQSMja2UsIDEwKTsgXAorICAgIEEjI21pIF49IERpOyBcCisgICAgQm1vID0gUk9MNjQoQSMjbWksIDE1KTsgXAorICAgIEEjI3NvIF49IERvOyBcCisgICAgQm11ID0gUk9MNjQoQSMjc28sIDU2KTsgXAorICAgIEUjI21hID0gICBCbWEgXiggIEJtZSAmICBCbWkgKTsgXAorICAgIEUjI21lID0gICBCbWUgXiggIEJtaSB8ICBCbW8gKTsgXAorICAgIEUjI21pID0gICBCbWkgXigofkJtbyl8ICBCbXUgKTsgXAorICAgIEUjI21vID0gKH5CbW8pXiggIEJtdSAmICBCbWEgKTsgXAorICAgIEUjI211ID0gICBCbXUgXiggIEJtYSB8ICBCbWUgKTsgXAorXAorICAgIEEjI2JpIF49IERpOyBcCisgICAgQnNhID0gUk9MNjQoQSMjYmksIDYyKTsgXAorICAgIEEjI2dvIF49IERvOyBcCisgICAgQnNlID0gUk9MNjQoQSMjZ28sIDU1KTsgXAorICAgIEEjI2t1IF49IER1OyBcCisgICAgQnNpID0gUk9MNjQoQSMja3UsIDM5KTsgXAorICAgIEEjI21hIF49IERhOyBcCisgICAgQnNvID0gUk9MNjQoQSMjbWEsIDQxKTsgXAorICAgIEEjI3NlIF49IERlOyBcCisgICAgQnN1ID0gUk9MNjQoQSMjc2UsIDIpOyBcCisgICAgRSMjc2EgPSAgIEJzYSBeKCh+QnNlKSYgIEJzaSApOyBcCisgICAgRSMjc2UgPSAofkJzZSleKCAgQnNpIHwgIEJzbyApOyBcCisgICAgRSMjc2kgPSAgIEJzaSBeKCAgQnNvICYgIEJzdSApOyBcCisgICAgRSMjc28gPSAgIEJzbyBeKCAgQnN1IHwgIEJzYSApOyBcCisgICAgRSMjc3UgPSAgIEJzdSBeKCAgQnNhICYgIEJzZSApOyBcCitcCisKKyNlbHNlIC8qIFVzZUJlYmlnb2tpbWlzYSAqLworCisvKiAtLS0gQ29kZSBmb3Igcm91bmQsIHdpdGggcHJlcGFyZS10aGV0YSAqLworCisvKiAtLS0gNjQtYml0IGxhbmVzIG1hcHBlZCB0byA2NC1iaXQgd29yZHMgKi8KKworI2RlZmluZSB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpLCBBLCBFKSBcCisgICAgRGEgPSBDdV5ST0w2NChDZSwgMSk7IFwKKyAgICBEZSA9IENhXlJPTDY0KENpLCAxKTsgXAorICAgIERpID0gQ2VeUk9MNjQoQ28sIDEpOyBcCisgICAgRG8gPSBDaV5ST0w2NChDdSwgMSk7IFwKKyAgICBEdSA9IENvXlJPTDY0KENhLCAxKTsgXAorXAorICAgIEEjI2JhIF49IERhOyBcCisgICAgQmJhID0gQSMjYmE7IFwKKyAgICBBIyNnZSBePSBEZTsgXAorICAgIEJiZSA9IFJPTDY0KEEjI2dlLCA0NCk7IFwKKyAgICBBIyNraSBePSBEaTsgXAorICAgIEJiaSA9IFJPTDY0KEEjI2tpLCA0Myk7IFwKKyAgICBBIyNtbyBePSBEbzsgXAorICAgIEJibyA9IFJPTDY0KEEjI21vLCAyMSk7IFwKKyAgICBBIyNzdSBePSBEdTsgXAorICAgIEJidSA9IFJPTDY0KEEjI3N1LCAxNCk7IFwKKyAgICBFIyNiYSA9ICAgQmJhIF4oKH5CYmUpJiAgQmJpICk7IFwKKyAgICBFIyNiYSBePSBLZWNjYWtGMTYwMFJvdW5kQ29uc3RhbnRzW2ldOyBcCisgICAgQ2EgPSBFIyNiYTsgXAorICAgIEUjI2JlID0gICBCYmUgXigofkJiaSkmICBCYm8gKTsgXAorICAgIENlID0gRSMjYmU7IFwKKyAgICBFIyNiaSA9ICAgQmJpIF4oKH5CYm8pJiAgQmJ1ICk7IFwKKyAgICBDaSA9IEUjI2JpOyBcCisgICAgRSMjYm8gPSAgIEJibyBeKCh+QmJ1KSYgIEJiYSApOyBcCisgICAgQ28gPSBFIyNibzsgXAorICAgIEUjI2J1ID0gICBCYnUgXigofkJiYSkmICBCYmUgKTsgXAorICAgIEN1ID0gRSMjYnU7IFwKK1wKKyAgICBBIyNibyBePSBEbzsgXAorICAgIEJnYSA9IFJPTDY0KEEjI2JvLCAyOCk7IFwKKyAgICBBIyNndSBePSBEdTsgXAorICAgIEJnZSA9IFJPTDY0KEEjI2d1LCAyMCk7IFwKKyAgICBBIyNrYSBePSBEYTsgXAorICAgIEJnaSA9IFJPTDY0KEEjI2thLCAzKTsgXAorICAgIEEjI21lIF49IERlOyBcCisgICAgQmdvID0gUk9MNjQoQSMjbWUsIDQ1KTsgXAorICAgIEEjI3NpIF49IERpOyBcCisgICAgQmd1ID0gUk9MNjQoQSMjc2ksIDYxKTsgXAorICAgIEUjI2dhID0gICBCZ2EgXigofkJnZSkmICBCZ2kgKTsgXAorICAgIENhIF49IEUjI2dhOyBcCisgICAgRSMjZ2UgPSAgIEJnZSBeKCh+QmdpKSYgIEJnbyApOyBcCisgICAgQ2UgXj0gRSMjZ2U7IFwKKyAgICBFIyNnaSA9ICAgQmdpIF4oKH5CZ28pJiAgQmd1ICk7IFwKKyAgICBDaSBePSBFIyNnaTsgXAorICAgIEUjI2dvID0gICBCZ28gXigofkJndSkmICBCZ2EgKTsgXAorICAgIENvIF49IEUjI2dvOyBcCisgICAgRSMjZ3UgPSAgIEJndSBeKCh+QmdhKSYgIEJnZSApOyBcCisgICAgQ3UgXj0gRSMjZ3U7IFwKK1wKKyAgICBBIyNiZSBePSBEZTsgXAorICAgIEJrYSA9IFJPTDY0KEEjI2JlLCAxKTsgXAorICAgIEEjI2dpIF49IERpOyBcCisgICAgQmtlID0gUk9MNjQoQSMjZ2ksIDYpOyBcCisgICAgQSMja28gXj0gRG87IFwKKyAgICBCa2kgPSBST0w2NChBIyNrbywgMjUpOyBcCisgICAgQSMjbXUgXj0gRHU7IFwKKyAgICBCa28gPSBST0w2NChBIyNtdSwgOCk7IFwKKyAgICBBIyNzYSBePSBEYTsgXAorICAgIEJrdSA9IFJPTDY0KEEjI3NhLCAxOCk7IFwKKyAgICBFIyNrYSA9ICAgQmthIF4oKH5Ca2UpJiAgQmtpICk7IFwKKyAgICBDYSBePSBFIyNrYTsgXAorICAgIEUjI2tlID0gICBCa2UgXigofkJraSkmICBCa28gKTsgXAorICAgIENlIF49IEUjI2tlOyBcCisgICAgRSMja2kgPSAgIEJraSBeKCh+QmtvKSYgIEJrdSApOyBcCisgICAgQ2kgXj0gRSMja2k7IFwKKyAgICBFIyNrbyA9ICAgQmtvIF4oKH5Ca3UpJiAgQmthICk7IFwKKyAgICBDbyBePSBFIyNrbzsgXAorICAgIEUjI2t1ID0gICBCa3UgXigofkJrYSkmICBCa2UgKTsgXAorICAgIEN1IF49IEUjI2t1OyBcCitcCisgICAgQSMjYnUgXj0gRHU7IFwKKyAgICBCbWEgPSBST0w2NChBIyNidSwgMjcpOyBcCisgICAgQSMjZ2EgXj0gRGE7IFwKKyAgICBCbWUgPSBST0w2NChBIyNnYSwgMzYpOyBcCisgICAgQSMja2UgXj0gRGU7IFwKKyAgICBCbWkgPSBST0w2NChBIyNrZSwgMTApOyBcCisgICAgQSMjbWkgXj0gRGk7IFwKKyAgICBCbW8gPSBST0w2NChBIyNtaSwgMTUpOyBcCisgICAgQSMjc28gXj0gRG87IFwKKyAgICBCbXUgPSBST0w2NChBIyNzbywgNTYpOyBcCisgICAgRSMjbWEgPSAgIEJtYSBeKCh+Qm1lKSYgIEJtaSApOyBcCisgICAgQ2EgXj0gRSMjbWE7IFwKKyAgICBFIyNtZSA9ICAgQm1lIF4oKH5CbWkpJiAgQm1vICk7IFwKKyAgICBDZSBePSBFIyNtZTsgXAorICAgIEUjI21pID0gICBCbWkgXigofkJtbykmICBCbXUgKTsgXAorICAgIENpIF49IEUjI21pOyBcCisgICAgRSMjbW8gPSAgIEJtbyBeKCh+Qm11KSYgIEJtYSApOyBcCisgICAgQ28gXj0gRSMjbW87IFwKKyAgICBFIyNtdSA9ICAgQm11IF4oKH5CbWEpJiAgQm1lICk7IFwKKyAgICBDdSBePSBFIyNtdTsgXAorXAorICAgIEEjI2JpIF49IERpOyBcCisgICAgQnNhID0gUk9MNjQoQSMjYmksIDYyKTsgXAorICAgIEEjI2dvIF49IERvOyBcCisgICAgQnNlID0gUk9MNjQoQSMjZ28sIDU1KTsgXAorICAgIEEjI2t1IF49IER1OyBcCisgICAgQnNpID0gUk9MNjQoQSMja3UsIDM5KTsgXAorICAgIEEjI21hIF49IERhOyBcCisgICAgQnNvID0gUk9MNjQoQSMjbWEsIDQxKTsgXAorICAgIEEjI3NlIF49IERlOyBcCisgICAgQnN1ID0gUk9MNjQoQSMjc2UsIDIpOyBcCisgICAgRSMjc2EgPSAgIEJzYSBeKCh+QnNlKSYgIEJzaSApOyBcCisgICAgQ2EgXj0gRSMjc2E7IFwKKyAgICBFIyNzZSA9ICAgQnNlIF4oKH5Cc2kpJiAgQnNvICk7IFwKKyAgICBDZSBePSBFIyNzZTsgXAorICAgIEUjI3NpID0gICBCc2kgXigofkJzbykmICBCc3UgKTsgXAorICAgIENpIF49IEUjI3NpOyBcCisgICAgRSMjc28gPSAgIEJzbyBeKCh+QnN1KSYgIEJzYSApOyBcCisgICAgQ28gXj0gRSMjc287IFwKKyAgICBFIyNzdSA9ICAgQnN1IF4oKH5Cc2EpJiAgQnNlICk7IFwKKyAgICBDdSBePSBFIyNzdTsgXAorXAorCisvKiAtLS0gQ29kZSBmb3Igcm91bmQgKi8KKworLyogLS0tIDY0LWJpdCBsYW5lcyBtYXBwZWQgdG8gNjQtYml0IHdvcmRzICovCisKKyNkZWZpbmUgdGhldGFSaG9QaUNoaUlvdGEoaSwgQSwgRSkgXAorICAgIERhID0gQ3VeUk9MNjQoQ2UsIDEpOyBcCisgICAgRGUgPSBDYV5ST0w2NChDaSwgMSk7IFwKKyAgICBEaSA9IENlXlJPTDY0KENvLCAxKTsgXAorICAgIERvID0gQ2leUk9MNjQoQ3UsIDEpOyBcCisgICAgRHUgPSBDb15ST0w2NChDYSwgMSk7IFwKK1wKKyAgICBBIyNiYSBePSBEYTsgXAorICAgIEJiYSA9IEEjI2JhOyBcCisgICAgQSMjZ2UgXj0gRGU7IFwKKyAgICBCYmUgPSBST0w2NChBIyNnZSwgNDQpOyBcCisgICAgQSMja2kgXj0gRGk7IFwKKyAgICBCYmkgPSBST0w2NChBIyNraSwgNDMpOyBcCisgICAgQSMjbW8gXj0gRG87IFwKKyAgICBCYm8gPSBST0w2NChBIyNtbywgMjEpOyBcCisgICAgQSMjc3UgXj0gRHU7IFwKKyAgICBCYnUgPSBST0w2NChBIyNzdSwgMTQpOyBcCisgICAgRSMjYmEgPSAgIEJiYSBeKCh+QmJlKSYgIEJiaSApOyBcCisgICAgRSMjYmEgXj0gS2VjY2FrRjE2MDBSb3VuZENvbnN0YW50c1tpXTsgXAorICAgIEUjI2JlID0gICBCYmUgXigofkJiaSkmICBCYm8gKTsgXAorICAgIEUjI2JpID0gICBCYmkgXigofkJibykmICBCYnUgKTsgXAorICAgIEUjI2JvID0gICBCYm8gXigofkJidSkmICBCYmEgKTsgXAorICAgIEUjI2J1ID0gICBCYnUgXigofkJiYSkmICBCYmUgKTsgXAorXAorICAgIEEjI2JvIF49IERvOyBcCisgICAgQmdhID0gUk9MNjQoQSMjYm8sIDI4KTsgXAorICAgIEEjI2d1IF49IER1OyBcCisgICAgQmdlID0gUk9MNjQoQSMjZ3UsIDIwKTsgXAorICAgIEEjI2thIF49IERhOyBcCisgICAgQmdpID0gUk9MNjQoQSMja2EsIDMpOyBcCisgICAgQSMjbWUgXj0gRGU7IFwKKyAgICBCZ28gPSBST0w2NChBIyNtZSwgNDUpOyBcCisgICAgQSMjc2kgXj0gRGk7IFwKKyAgICBCZ3UgPSBST0w2NChBIyNzaSwgNjEpOyBcCisgICAgRSMjZ2EgPSAgIEJnYSBeKCh+QmdlKSYgIEJnaSApOyBcCisgICAgRSMjZ2UgPSAgIEJnZSBeKCh+QmdpKSYgIEJnbyApOyBcCisgICAgRSMjZ2kgPSAgIEJnaSBeKCh+QmdvKSYgIEJndSApOyBcCisgICAgRSMjZ28gPSAgIEJnbyBeKCh+Qmd1KSYgIEJnYSApOyBcCisgICAgRSMjZ3UgPSAgIEJndSBeKCh+QmdhKSYgIEJnZSApOyBcCitcCisgICAgQSMjYmUgXj0gRGU7IFwKKyAgICBCa2EgPSBST0w2NChBIyNiZSwgMSk7IFwKKyAgICBBIyNnaSBePSBEaTsgXAorICAgIEJrZSA9IFJPTDY0KEEjI2dpLCA2KTsgXAorICAgIEEjI2tvIF49IERvOyBcCisgICAgQmtpID0gUk9MNjQoQSMja28sIDI1KTsgXAorICAgIEEjI211IF49IER1OyBcCisgICAgQmtvID0gUk9MNjQoQSMjbXUsIDgpOyBcCisgICAgQSMjc2EgXj0gRGE7IFwKKyAgICBCa3UgPSBST0w2NChBIyNzYSwgMTgpOyBcCisgICAgRSMja2EgPSAgIEJrYSBeKCh+QmtlKSYgIEJraSApOyBcCisgICAgRSMja2UgPSAgIEJrZSBeKCh+QmtpKSYgIEJrbyApOyBcCisgICAgRSMja2kgPSAgIEJraSBeKCh+QmtvKSYgIEJrdSApOyBcCisgICAgRSMja28gPSAgIEJrbyBeKCh+Qmt1KSYgIEJrYSApOyBcCisgICAgRSMja3UgPSAgIEJrdSBeKCh+QmthKSYgIEJrZSApOyBcCitcCisgICAgQSMjYnUgXj0gRHU7IFwKKyAgICBCbWEgPSBST0w2NChBIyNidSwgMjcpOyBcCisgICAgQSMjZ2EgXj0gRGE7IFwKKyAgICBCbWUgPSBST0w2NChBIyNnYSwgMzYpOyBcCisgICAgQSMja2UgXj0gRGU7IFwKKyAgICBCbWkgPSBST0w2NChBIyNrZSwgMTApOyBcCisgICAgQSMjbWkgXj0gRGk7IFwKKyAgICBCbW8gPSBST0w2NChBIyNtaSwgMTUpOyBcCisgICAgQSMjc28gXj0gRG87IFwKKyAgICBCbXUgPSBST0w2NChBIyNzbywgNTYpOyBcCisgICAgRSMjbWEgPSAgIEJtYSBeKCh+Qm1lKSYgIEJtaSApOyBcCisgICAgRSMjbWUgPSAgIEJtZSBeKCh+Qm1pKSYgIEJtbyApOyBcCisgICAgRSMjbWkgPSAgIEJtaSBeKCh+Qm1vKSYgIEJtdSApOyBcCisgICAgRSMjbW8gPSAgIEJtbyBeKCh+Qm11KSYgIEJtYSApOyBcCisgICAgRSMjbXUgPSAgIEJtdSBeKCh+Qm1hKSYgIEJtZSApOyBcCitcCisgICAgQSMjYmkgXj0gRGk7IFwKKyAgICBCc2EgPSBST0w2NChBIyNiaSwgNjIpOyBcCisgICAgQSMjZ28gXj0gRG87IFwKKyAgICBCc2UgPSBST0w2NChBIyNnbywgNTUpOyBcCisgICAgQSMja3UgXj0gRHU7IFwKKyAgICBCc2kgPSBST0w2NChBIyNrdSwgMzkpOyBcCisgICAgQSMjbWEgXj0gRGE7IFwKKyAgICBCc28gPSBST0w2NChBIyNtYSwgNDEpOyBcCisgICAgQSMjc2UgXj0gRGU7IFwKKyAgICBCc3UgPSBST0w2NChBIyNzZSwgMik7IFwKKyAgICBFIyNzYSA9ICAgQnNhIF4oKH5Cc2UpJiAgQnNpICk7IFwKKyAgICBFIyNzZSA9ICAgQnNlIF4oKH5Cc2kpJiAgQnNvICk7IFwKKyAgICBFIyNzaSA9ICAgQnNpIF4oKH5Cc28pJiAgQnN1ICk7IFwKKyAgICBFIyNzbyA9ICAgQnNvIF4oKH5Cc3UpJiAgQnNhICk7IFwKKyAgICBFIyNzdSA9ICAgQnN1IF4oKH5Cc2EpJiAgQnNlICk7IFwKK1wKKworI2VuZGlmIC8qIFVzZUJlYmlnb2tpbWlzYSAqLworCisKKyNkZWZpbmUgY29weUZyb21TdGF0ZShYLCBzdGF0ZSkgXAorICAgIFgjI2JhID0gc3RhdGVbIDBdOyBcCisgICAgWCMjYmUgPSBzdGF0ZVsgMV07IFwKKyAgICBYIyNiaSA9IHN0YXRlWyAyXTsgXAorICAgIFgjI2JvID0gc3RhdGVbIDNdOyBcCisgICAgWCMjYnUgPSBzdGF0ZVsgNF07IFwKKyAgICBYIyNnYSA9IHN0YXRlWyA1XTsgXAorICAgIFgjI2dlID0gc3RhdGVbIDZdOyBcCisgICAgWCMjZ2kgPSBzdGF0ZVsgN107IFwKKyAgICBYIyNnbyA9IHN0YXRlWyA4XTsgXAorICAgIFgjI2d1ID0gc3RhdGVbIDldOyBcCisgICAgWCMja2EgPSBzdGF0ZVsxMF07IFwKKyAgICBYIyNrZSA9IHN0YXRlWzExXTsgXAorICAgIFgjI2tpID0gc3RhdGVbMTJdOyBcCisgICAgWCMja28gPSBzdGF0ZVsxM107IFwKKyAgICBYIyNrdSA9IHN0YXRlWzE0XTsgXAorICAgIFgjI21hID0gc3RhdGVbMTVdOyBcCisgICAgWCMjbWUgPSBzdGF0ZVsxNl07IFwKKyAgICBYIyNtaSA9IHN0YXRlWzE3XTsgXAorICAgIFgjI21vID0gc3RhdGVbMThdOyBcCisgICAgWCMjbXUgPSBzdGF0ZVsxOV07IFwKKyAgICBYIyNzYSA9IHN0YXRlWzIwXTsgXAorICAgIFgjI3NlID0gc3RhdGVbMjFdOyBcCisgICAgWCMjc2kgPSBzdGF0ZVsyMl07IFwKKyAgICBYIyNzbyA9IHN0YXRlWzIzXTsgXAorICAgIFgjI3N1ID0gc3RhdGVbMjRdOyBcCisKKyNkZWZpbmUgY29weVRvU3RhdGUoc3RhdGUsIFgpIFwKKyAgICBzdGF0ZVsgMF0gPSBYIyNiYTsgXAorICAgIHN0YXRlWyAxXSA9IFgjI2JlOyBcCisgICAgc3RhdGVbIDJdID0gWCMjYmk7IFwKKyAgICBzdGF0ZVsgM10gPSBYIyNibzsgXAorICAgIHN0YXRlWyA0XSA9IFgjI2J1OyBcCisgICAgc3RhdGVbIDVdID0gWCMjZ2E7IFwKKyAgICBzdGF0ZVsgNl0gPSBYIyNnZTsgXAorICAgIHN0YXRlWyA3XSA9IFgjI2dpOyBcCisgICAgc3RhdGVbIDhdID0gWCMjZ287IFwKKyAgICBzdGF0ZVsgOV0gPSBYIyNndTsgXAorICAgIHN0YXRlWzEwXSA9IFgjI2thOyBcCisgICAgc3RhdGVbMTFdID0gWCMja2U7IFwKKyAgICBzdGF0ZVsxMl0gPSBYIyNraTsgXAorICAgIHN0YXRlWzEzXSA9IFgjI2tvOyBcCisgICAgc3RhdGVbMTRdID0gWCMja3U7IFwKKyAgICBzdGF0ZVsxNV0gPSBYIyNtYTsgXAorICAgIHN0YXRlWzE2XSA9IFgjI21lOyBcCisgICAgc3RhdGVbMTddID0gWCMjbWk7IFwKKyAgICBzdGF0ZVsxOF0gPSBYIyNtbzsgXAorICAgIHN0YXRlWzE5XSA9IFgjI211OyBcCisgICAgc3RhdGVbMjBdID0gWCMjc2E7IFwKKyAgICBzdGF0ZVsyMV0gPSBYIyNzZTsgXAorICAgIHN0YXRlWzIyXSA9IFgjI3NpOyBcCisgICAgc3RhdGVbMjNdID0gWCMjc287IFwKKyAgICBzdGF0ZVsyNF0gPSBYIyNzdTsgXAorCisjZGVmaW5lIGNvcHlTdGF0ZVZhcmlhYmxlcyhYLCBZKSBcCisgICAgWCMjYmEgPSBZIyNiYTsgXAorICAgIFgjI2JlID0gWSMjYmU7IFwKKyAgICBYIyNiaSA9IFkjI2JpOyBcCisgICAgWCMjYm8gPSBZIyNibzsgXAorICAgIFgjI2J1ID0gWSMjYnU7IFwKKyAgICBYIyNnYSA9IFkjI2dhOyBcCisgICAgWCMjZ2UgPSBZIyNnZTsgXAorICAgIFgjI2dpID0gWSMjZ2k7IFwKKyAgICBYIyNnbyA9IFkjI2dvOyBcCisgICAgWCMjZ3UgPSBZIyNndTsgXAorICAgIFgjI2thID0gWSMja2E7IFwKKyAgICBYIyNrZSA9IFkjI2tlOyBcCisgICAgWCMja2kgPSBZIyNraTsgXAorICAgIFgjI2tvID0gWSMja287IFwKKyAgICBYIyNrdSA9IFkjI2t1OyBcCisgICAgWCMjbWEgPSBZIyNtYTsgXAorICAgIFgjI21lID0gWSMjbWU7IFwKKyAgICBYIyNtaSA9IFkjI21pOyBcCisgICAgWCMjbW8gPSBZIyNtbzsgXAorICAgIFgjI211ID0gWSMjbXU7IFwKKyAgICBYIyNzYSA9IFkjI3NhOyBcCisgICAgWCMjc2UgPSBZIyNzZTsgXAorICAgIFgjI3NpID0gWSMjc2k7IFwKKyAgICBYIyNzbyA9IFkjI3NvOyBcCisgICAgWCMjc3UgPSBZIyNzdTsgXAorCisjZGVmaW5lIGNvcHlGcm9tU3RhdGVBbmRBZGQoWCwgc3RhdGUsIGlucHV0LCBsYW5lQ291bnQpIFwKKyAgICBpZiAobGFuZUNvdW50IDwgMTYpIHsgXAorICAgICAgICBpZiAobGFuZUNvdW50IDwgOCkgeyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNCkgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNiYSA9IHN0YXRlWyAwXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2JhID0gc3RhdGVbIDBdXmlucHV0WyAwXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjYmUgPSBzdGF0ZVsgMV07IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjYmkgPSBzdGF0ZVsgMl07IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBYIyNiYSA9IHN0YXRlWyAwXV5pbnB1dFsgMF07IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjYmUgPSBzdGF0ZVsgMV1eaW5wdXRbIDFdOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAzKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2JpID0gc3RhdGVbIDJdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjYmkgPSBzdGF0ZVsgMl1eaW5wdXRbIDJdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIFgjI2JvID0gc3RhdGVbIDNdOyBcCisgICAgICAgICAgICAgICAgWCMjYnUgPSBzdGF0ZVsgNF07IFwKKyAgICAgICAgICAgICAgICBYIyNnYSA9IHN0YXRlWyA1XTsgXAorICAgICAgICAgICAgICAgIFgjI2dlID0gc3RhdGVbIDZdOyBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgWCMjYmEgPSBzdGF0ZVsgMF1eaW5wdXRbIDBdOyBcCisgICAgICAgICAgICAgICAgWCMjYmUgPSBzdGF0ZVsgMV1eaW5wdXRbIDFdOyBcCisgICAgICAgICAgICAgICAgWCMjYmkgPSBzdGF0ZVsgMl1eaW5wdXRbIDJdOyBcCisgICAgICAgICAgICAgICAgWCMjYm8gPSBzdGF0ZVsgM11eaW5wdXRbIDNdOyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDYpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNidSA9IHN0YXRlWyA0XTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2J1ID0gc3RhdGVbIDRdXmlucHV0WyA0XTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjZ2EgPSBzdGF0ZVsgNV07IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjZ2UgPSBzdGF0ZVsgNl07IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBYIyNidSA9IHN0YXRlWyA0XV5pbnB1dFsgNF07IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjZ2EgPSBzdGF0ZVsgNV1eaW5wdXRbIDVdOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA3KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2dlID0gc3RhdGVbIDZdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjZ2UgPSBzdGF0ZVsgNl1eaW5wdXRbIDZdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBYIyNnaSA9IHN0YXRlWyA3XTsgXAorICAgICAgICAgICAgWCMjZ28gPSBzdGF0ZVsgOF07IFwKKyAgICAgICAgICAgIFgjI2d1ID0gc3RhdGVbIDldOyBcCisgICAgICAgICAgICBYIyNrYSA9IHN0YXRlWzEwXTsgXAorICAgICAgICAgICAgWCMja2UgPSBzdGF0ZVsxMV07IFwKKyAgICAgICAgICAgIFgjI2tpID0gc3RhdGVbMTJdOyBcCisgICAgICAgICAgICBYIyNrbyA9IHN0YXRlWzEzXTsgXAorICAgICAgICAgICAgWCMja3UgPSBzdGF0ZVsxNF07IFwKKyAgICAgICAgfSBcCisgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICBYIyNiYSA9IHN0YXRlWyAwXV5pbnB1dFsgMF07IFwKKyAgICAgICAgICAgIFgjI2JlID0gc3RhdGVbIDFdXmlucHV0WyAxXTsgXAorICAgICAgICAgICAgWCMjYmkgPSBzdGF0ZVsgMl1eaW5wdXRbIDJdOyBcCisgICAgICAgICAgICBYIyNibyA9IHN0YXRlWyAzXV5pbnB1dFsgM107IFwKKyAgICAgICAgICAgIFgjI2J1ID0gc3RhdGVbIDRdXmlucHV0WyA0XTsgXAorICAgICAgICAgICAgWCMjZ2EgPSBzdGF0ZVsgNV1eaW5wdXRbIDVdOyBcCisgICAgICAgICAgICBYIyNnZSA9IHN0YXRlWyA2XV5pbnB1dFsgNl07IFwKKyAgICAgICAgICAgIFgjI2dpID0gc3RhdGVbIDddXmlucHV0WyA3XTsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDEyKSB7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTApIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgOSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNnbyA9IHN0YXRlWyA4XTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2dvID0gc3RhdGVbIDhdXmlucHV0WyA4XTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjZ3UgPSBzdGF0ZVsgOV07IFwKKyAgICAgICAgICAgICAgICAgICAgWCMja2EgPSBzdGF0ZVsxMF07IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBYIyNnbyA9IHN0YXRlWyA4XV5pbnB1dFsgOF07IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjZ3UgPSBzdGF0ZVsgOV1eaW5wdXRbIDldOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNrYSA9IHN0YXRlWzEwXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2thID0gc3RhdGVbMTBdXmlucHV0WzEwXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBYIyNrZSA9IHN0YXRlWzExXTsgXAorICAgICAgICAgICAgICAgIFgjI2tpID0gc3RhdGVbMTJdOyBcCisgICAgICAgICAgICAgICAgWCMja28gPSBzdGF0ZVsxM107IFwKKyAgICAgICAgICAgICAgICBYIyNrdSA9IHN0YXRlWzE0XTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIFgjI2dvID0gc3RhdGVbIDhdXmlucHV0WyA4XTsgXAorICAgICAgICAgICAgICAgIFgjI2d1ID0gc3RhdGVbIDldXmlucHV0WyA5XTsgXAorICAgICAgICAgICAgICAgIFgjI2thID0gc3RhdGVbMTBdXmlucHV0WzEwXTsgXAorICAgICAgICAgICAgICAgIFgjI2tlID0gc3RhdGVbMTFdXmlucHV0WzExXTsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxNCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNraSA9IHN0YXRlWzEyXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2tpID0gc3RhdGVbMTJdXmlucHV0WzEyXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgWCMja28gPSBzdGF0ZVsxM107IFwKKyAgICAgICAgICAgICAgICAgICAgWCMja3UgPSBzdGF0ZVsxNF07IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBYIyNraSA9IHN0YXRlWzEyXV5pbnB1dFsxMl07IFwKKyAgICAgICAgICAgICAgICAgICAgWCMja28gPSBzdGF0ZVsxM11eaW5wdXRbMTNdOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxNSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNrdSA9IHN0YXRlWzE0XTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2t1ID0gc3RhdGVbMTRdXmlucHV0WzE0XTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICAgICAgWCMjbWEgPSBzdGF0ZVsxNV07IFwKKyAgICAgICAgWCMjbWUgPSBzdGF0ZVsxNl07IFwKKyAgICAgICAgWCMjbWkgPSBzdGF0ZVsxN107IFwKKyAgICAgICAgWCMjbW8gPSBzdGF0ZVsxOF07IFwKKyAgICAgICAgWCMjbXUgPSBzdGF0ZVsxOV07IFwKKyAgICAgICAgWCMjc2EgPSBzdGF0ZVsyMF07IFwKKyAgICAgICAgWCMjc2UgPSBzdGF0ZVsyMV07IFwKKyAgICAgICAgWCMjc2kgPSBzdGF0ZVsyMl07IFwKKyAgICAgICAgWCMjc28gPSBzdGF0ZVsyM107IFwKKyAgICAgICAgWCMjc3UgPSBzdGF0ZVsyNF07IFwKKyAgICB9IFwKKyAgICBlbHNlIHsgXAorICAgICAgICBYIyNiYSA9IHN0YXRlWyAwXV5pbnB1dFsgMF07IFwKKyAgICAgICAgWCMjYmUgPSBzdGF0ZVsgMV1eaW5wdXRbIDFdOyBcCisgICAgICAgIFgjI2JpID0gc3RhdGVbIDJdXmlucHV0WyAyXTsgXAorICAgICAgICBYIyNibyA9IHN0YXRlWyAzXV5pbnB1dFsgM107IFwKKyAgICAgICAgWCMjYnUgPSBzdGF0ZVsgNF1eaW5wdXRbIDRdOyBcCisgICAgICAgIFgjI2dhID0gc3RhdGVbIDVdXmlucHV0WyA1XTsgXAorICAgICAgICBYIyNnZSA9IHN0YXRlWyA2XV5pbnB1dFsgNl07IFwKKyAgICAgICAgWCMjZ2kgPSBzdGF0ZVsgN11eaW5wdXRbIDddOyBcCisgICAgICAgIFgjI2dvID0gc3RhdGVbIDhdXmlucHV0WyA4XTsgXAorICAgICAgICBYIyNndSA9IHN0YXRlWyA5XV5pbnB1dFsgOV07IFwKKyAgICAgICAgWCMja2EgPSBzdGF0ZVsxMF1eaW5wdXRbMTBdOyBcCisgICAgICAgIFgjI2tlID0gc3RhdGVbMTFdXmlucHV0WzExXTsgXAorICAgICAgICBYIyNraSA9IHN0YXRlWzEyXV5pbnB1dFsxMl07IFwKKyAgICAgICAgWCMja28gPSBzdGF0ZVsxM11eaW5wdXRbMTNdOyBcCisgICAgICAgIFgjI2t1ID0gc3RhdGVbMTRdXmlucHV0WzE0XTsgXAorICAgICAgICBYIyNtYSA9IHN0YXRlWzE1XV5pbnB1dFsxNV07IFwKKyAgICAgICAgaWYgKGxhbmVDb3VudCA8IDI0KSB7IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyMCkgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDE4KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDE3KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI21lID0gc3RhdGVbMTZdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjbWUgPSBzdGF0ZVsxNl1eaW5wdXRbMTZdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBYIyNtaSA9IHN0YXRlWzE3XTsgXAorICAgICAgICAgICAgICAgICAgICBYIyNtbyA9IHN0YXRlWzE4XTsgXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIFgjI21lID0gc3RhdGVbMTZdXmlucHV0WzE2XTsgXAorICAgICAgICAgICAgICAgICAgICBYIyNtaSA9IHN0YXRlWzE3XV5pbnB1dFsxN107IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDE5KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI21vID0gc3RhdGVbMThdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjbW8gPSBzdGF0ZVsxOF1eaW5wdXRbMThdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIFgjI211ID0gc3RhdGVbMTldOyBcCisgICAgICAgICAgICAgICAgWCMjc2EgPSBzdGF0ZVsyMF07IFwKKyAgICAgICAgICAgICAgICBYIyNzZSA9IHN0YXRlWzIxXTsgXAorICAgICAgICAgICAgICAgIFgjI3NpID0gc3RhdGVbMjJdOyBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgWCMjbWUgPSBzdGF0ZVsxNl1eaW5wdXRbMTZdOyBcCisgICAgICAgICAgICAgICAgWCMjbWkgPSBzdGF0ZVsxN11eaW5wdXRbMTddOyBcCisgICAgICAgICAgICAgICAgWCMjbW8gPSBzdGF0ZVsxOF1eaW5wdXRbMThdOyBcCisgICAgICAgICAgICAgICAgWCMjbXUgPSBzdGF0ZVsxOV1eaW5wdXRbMTldOyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIyKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIxKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI3NhID0gc3RhdGVbMjBdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjc2EgPSBzdGF0ZVsyMF1eaW5wdXRbMjBdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBYIyNzZSA9IHN0YXRlWzIxXTsgXAorICAgICAgICAgICAgICAgICAgICBYIyNzaSA9IHN0YXRlWzIyXTsgXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIFgjI3NhID0gc3RhdGVbMjBdXmlucHV0WzIwXTsgXAorICAgICAgICAgICAgICAgICAgICBYIyNzZSA9IHN0YXRlWzIxXV5pbnB1dFsyMV07IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIzKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI3NpID0gc3RhdGVbMjJdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjc2kgPSBzdGF0ZVsyMl1eaW5wdXRbMjJdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBYIyNzbyA9IHN0YXRlWzIzXTsgXAorICAgICAgICAgICAgWCMjc3UgPSBzdGF0ZVsyNF07IFwKKyAgICAgICAgfSBcCisgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICBYIyNtZSA9IHN0YXRlWzE2XV5pbnB1dFsxNl07IFwKKyAgICAgICAgICAgIFgjI21pID0gc3RhdGVbMTddXmlucHV0WzE3XTsgXAorICAgICAgICAgICAgWCMjbW8gPSBzdGF0ZVsxOF1eaW5wdXRbMThdOyBcCisgICAgICAgICAgICBYIyNtdSA9IHN0YXRlWzE5XV5pbnB1dFsxOV07IFwKKyAgICAgICAgICAgIFgjI3NhID0gc3RhdGVbMjBdXmlucHV0WzIwXTsgXAorICAgICAgICAgICAgWCMjc2UgPSBzdGF0ZVsyMV1eaW5wdXRbMjFdOyBcCisgICAgICAgICAgICBYIyNzaSA9IHN0YXRlWzIyXV5pbnB1dFsyMl07IFwKKyAgICAgICAgICAgIFgjI3NvID0gc3RhdGVbMjNdXmlucHV0WzIzXTsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDI1KSB7IFwKKyAgICAgICAgICAgICAgICBYIyNzdSA9IHN0YXRlWzI0XTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIFgjI3N1ID0gc3RhdGVbMjRdXmlucHV0WzI0XTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgIH0KKworI2RlZmluZSBhZGRJbnB1dChYLCBpbnB1dCwgbGFuZUNvdW50KSBcCisgICAgaWYgKGxhbmVDb3VudCA9PSAyMSkgeyBcCisgICAgICAgIFgjI2JhIF49IGlucHV0WyAwXTsgXAorICAgICAgICBYIyNiZSBePSBpbnB1dFsgMV07IFwKKyAgICAgICAgWCMjYmkgXj0gaW5wdXRbIDJdOyBcCisgICAgICAgIFgjI2JvIF49IGlucHV0WyAzXTsgXAorICAgICAgICBYIyNidSBePSBpbnB1dFsgNF07IFwKKyAgICAgICAgWCMjZ2EgXj0gaW5wdXRbIDVdOyBcCisgICAgICAgIFgjI2dlIF49IGlucHV0WyA2XTsgXAorICAgICAgICBYIyNnaSBePSBpbnB1dFsgN107IFwKKyAgICAgICAgWCMjZ28gXj0gaW5wdXRbIDhdOyBcCisgICAgICAgIFgjI2d1IF49IGlucHV0WyA5XTsgXAorICAgICAgICBYIyNrYSBePSBpbnB1dFsxMF07IFwKKyAgICAgICAgWCMja2UgXj0gaW5wdXRbMTFdOyBcCisgICAgICAgIFgjI2tpIF49IGlucHV0WzEyXTsgXAorICAgICAgICBYIyNrbyBePSBpbnB1dFsxM107IFwKKyAgICAgICAgWCMja3UgXj0gaW5wdXRbMTRdOyBcCisgICAgICAgIFgjI21hIF49IGlucHV0WzE1XTsgXAorICAgICAgICBYIyNtZSBePSBpbnB1dFsxNl07IFwKKyAgICAgICAgWCMjbWkgXj0gaW5wdXRbMTddOyBcCisgICAgICAgIFgjI21vIF49IGlucHV0WzE4XTsgXAorICAgICAgICBYIyNtdSBePSBpbnB1dFsxOV07IFwKKyAgICAgICAgWCMjc2EgXj0gaW5wdXRbMjBdOyBcCisgICAgfSBcCisgICAgZWxzZSBpZiAobGFuZUNvdW50IDwgMTYpIHsgXAorICAgICAgICBpZiAobGFuZUNvdW50IDwgOCkgeyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNCkgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMSkgeyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjYmEgXj0gaW5wdXRbIDBdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIFgjI2JhIF49IGlucHV0WyAwXTsgXAorICAgICAgICAgICAgICAgICAgICBYIyNiZSBePSBpbnB1dFsgMV07IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDMpIHsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2JpIF49IGlucHV0WyAyXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICBYIyNiYSBePSBpbnB1dFsgMF07IFwKKyAgICAgICAgICAgICAgICBYIyNiZSBePSBpbnB1dFsgMV07IFwKKyAgICAgICAgICAgICAgICBYIyNiaSBePSBpbnB1dFsgMl07IFwKKyAgICAgICAgICAgICAgICBYIyNibyBePSBpbnB1dFsgM107IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNikgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA1KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNidSBePSBpbnB1dFsgNF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjYnUgXj0gaW5wdXRbIDRdOyBcCisgICAgICAgICAgICAgICAgICAgIFgjI2dhIF49IGlucHV0WyA1XTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNykgeyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjZ2UgXj0gaW5wdXRbIDZdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgWCMjYmEgXj0gaW5wdXRbIDBdOyBcCisgICAgICAgICAgICBYIyNiZSBePSBpbnB1dFsgMV07IFwKKyAgICAgICAgICAgIFgjI2JpIF49IGlucHV0WyAyXTsgXAorICAgICAgICAgICAgWCMjYm8gXj0gaW5wdXRbIDNdOyBcCisgICAgICAgICAgICBYIyNidSBePSBpbnB1dFsgNF07IFwKKyAgICAgICAgICAgIFgjI2dhIF49IGlucHV0WyA1XTsgXAorICAgICAgICAgICAgWCMjZ2UgXj0gaW5wdXRbIDZdOyBcCisgICAgICAgICAgICBYIyNnaSBePSBpbnB1dFsgN107IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMikgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDEwKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDkpIHsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2dvIF49IGlucHV0WyA4XTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBYIyNnbyBePSBpbnB1dFsgOF07IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjZ3UgXj0gaW5wdXRbIDldOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMSkgeyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMja2EgXj0gaW5wdXRbMTBdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIFgjI2dvIF49IGlucHV0WyA4XTsgXAorICAgICAgICAgICAgICAgIFgjI2d1IF49IGlucHV0WyA5XTsgXAorICAgICAgICAgICAgICAgIFgjI2thIF49IGlucHV0WzEwXTsgXAorICAgICAgICAgICAgICAgIFgjI2tlIF49IGlucHV0WzExXTsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxNCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMykgeyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMja2kgXj0gaW5wdXRbMTJdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIFgjI2tpIF49IGlucHV0WzEyXTsgXAorICAgICAgICAgICAgICAgICAgICBYIyNrbyBePSBpbnB1dFsxM107IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDE1KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNrdSBePSBpbnB1dFsxNF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgfSBcCisgICAgZWxzZSB7IFwKKyAgICAgICAgWCMjYmEgXj0gaW5wdXRbIDBdOyBcCisgICAgICAgIFgjI2JlIF49IGlucHV0WyAxXTsgXAorICAgICAgICBYIyNiaSBePSBpbnB1dFsgMl07IFwKKyAgICAgICAgWCMjYm8gXj0gaW5wdXRbIDNdOyBcCisgICAgICAgIFgjI2J1IF49IGlucHV0WyA0XTsgXAorICAgICAgICBYIyNnYSBePSBpbnB1dFsgNV07IFwKKyAgICAgICAgWCMjZ2UgXj0gaW5wdXRbIDZdOyBcCisgICAgICAgIFgjI2dpIF49IGlucHV0WyA3XTsgXAorICAgICAgICBYIyNnbyBePSBpbnB1dFsgOF07IFwKKyAgICAgICAgWCMjZ3UgXj0gaW5wdXRbIDldOyBcCisgICAgICAgIFgjI2thIF49IGlucHV0WzEwXTsgXAorICAgICAgICBYIyNrZSBePSBpbnB1dFsxMV07IFwKKyAgICAgICAgWCMja2kgXj0gaW5wdXRbMTJdOyBcCisgICAgICAgIFgjI2tvIF49IGlucHV0WzEzXTsgXAorICAgICAgICBYIyNrdSBePSBpbnB1dFsxNF07IFwKKyAgICAgICAgWCMjbWEgXj0gaW5wdXRbMTVdOyBcCisgICAgICAgIGlmIChsYW5lQ291bnQgPCAyNCkgeyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjApIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxOCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxNykgeyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjbWUgXj0gaW5wdXRbMTZdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIFgjI21lIF49IGlucHV0WzE2XTsgXAorICAgICAgICAgICAgICAgICAgICBYIyNtaSBePSBpbnB1dFsxN107IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDE5KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNtbyBePSBpbnB1dFsxOF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgWCMjbWUgXj0gaW5wdXRbMTZdOyBcCisgICAgICAgICAgICAgICAgWCMjbWkgXj0gaW5wdXRbMTddOyBcCisgICAgICAgICAgICAgICAgWCMjbW8gXj0gaW5wdXRbMThdOyBcCisgICAgICAgICAgICAgICAgWCMjbXUgXj0gaW5wdXRbMTldOyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIyKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIxKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNzYSBePSBpbnB1dFsyMF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjc2EgXj0gaW5wdXRbMjBdOyBcCisgICAgICAgICAgICAgICAgICAgIFgjI3NlIF49IGlucHV0WzIxXTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjMpIHsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI3NpIF49IGlucHV0WzIyXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgIFgjI21lIF49IGlucHV0WzE2XTsgXAorICAgICAgICAgICAgWCMjbWkgXj0gaW5wdXRbMTddOyBcCisgICAgICAgICAgICBYIyNtbyBePSBpbnB1dFsxOF07IFwKKyAgICAgICAgICAgIFgjI211IF49IGlucHV0WzE5XTsgXAorICAgICAgICAgICAgWCMjc2EgXj0gaW5wdXRbMjBdOyBcCisgICAgICAgICAgICBYIyNzZSBePSBpbnB1dFsyMV07IFwKKyAgICAgICAgICAgIFgjI3NpIF49IGlucHV0WzIyXTsgXAorICAgICAgICAgICAgWCMjc28gXj0gaW5wdXRbMjNdOyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjUpIHsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIFgjI3N1IF49IGlucHV0WzI0XTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgIH0KKworI2lmZGVmIFVzZUJlYmlnb2tpbWlzYQorCisjZGVmaW5lIGNvcHlUb1N0YXRlQW5kT3V0cHV0KFgsIHN0YXRlLCBvdXRwdXQsIGxhbmVDb3VudCkgXAorICAgIGlmIChsYW5lQ291bnQgPCAxNikgeyBcCisgICAgICAgIGlmIChsYW5lQ291bnQgPCA4KSB7IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA0KSB7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMikgeyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyAwXSA9IFgjI2JhOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyAxXSA9IFgjI2JlOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyAyXSA9IFgjI2JpOyBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyAwXSA9IFgjI2JhOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyAxXSA9IFgjI2JlOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgMV0gPSB+WCMjYmU7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDJdID0gWCMjYmk7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAzKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgMl0gPSB+WCMjYmk7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgc3RhdGVbIDNdID0gWCMjYm87IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsgNF0gPSBYIyNidTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWyA1XSA9IFgjI2dhOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsgMF0gPSBYIyNiYTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgMF0gPSBYIyNiYTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWyAxXSA9IFgjI2JlOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WyAxXSA9IH5YIyNiZTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWyAyXSA9IFgjI2JpOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WyAyXSA9IH5YIyNiaTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWyAzXSA9IFgjI2JvOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WyAzXSA9IFgjI2JvOyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDYpIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgNF0gPSBYIyNidTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDUpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA0XSA9IFgjI2J1OyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgNV0gPSBYIyNnYTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgNl0gPSBYIyNnZTsgXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyA0XSA9IFgjI2J1OyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgNF0gPSBYIyNidTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgNV0gPSBYIyNnYTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDVdID0gWCMjZ2E7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSA3KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgNl0gPSBYIyNnZTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgc3RhdGVbIDddID0gWCMjZ2k7IFwKKyAgICAgICAgICAgIHN0YXRlWyA4XSA9IFgjI2dvOyBcCisgICAgICAgICAgICBzdGF0ZVsgOV0gPSBYIyNndTsgXAorICAgICAgICAgICAgc3RhdGVbMTBdID0gWCMja2E7IFwKKyAgICAgICAgICAgIHN0YXRlWzExXSA9IFgjI2tlOyBcCisgICAgICAgICAgICBzdGF0ZVsxMl0gPSBYIyNraTsgXAorICAgICAgICAgICAgc3RhdGVbMTNdID0gWCMja287IFwKKyAgICAgICAgICAgIHN0YXRlWzE0XSA9IFgjI2t1OyBcCisgICAgICAgIH0gXAorICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgc3RhdGVbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgIG91dHB1dFsgMF0gPSBYIyNiYTsgXAorICAgICAgICAgICAgc3RhdGVbIDFdID0gWCMjYmU7IFwKKyAgICAgICAgICAgIG91dHB1dFsgMV0gPSB+WCMjYmU7IFwKKyAgICAgICAgICAgIHN0YXRlWyAyXSA9IFgjI2JpOyBcCisgICAgICAgICAgICBvdXRwdXRbIDJdID0gflgjI2JpOyBcCisgICAgICAgICAgICBzdGF0ZVsgM10gPSBYIyNibzsgXAorICAgICAgICAgICAgb3V0cHV0WyAzXSA9IFgjI2JvOyBcCisgICAgICAgICAgICBzdGF0ZVsgNF0gPSBYIyNidTsgXAorICAgICAgICAgICAgb3V0cHV0WyA0XSA9IFgjI2J1OyBcCisgICAgICAgICAgICBzdGF0ZVsgNV0gPSBYIyNnYTsgXAorICAgICAgICAgICAgb3V0cHV0WyA1XSA9IFgjI2dhOyBcCisgICAgICAgICAgICBzdGF0ZVsgNl0gPSBYIyNnZTsgXAorICAgICAgICAgICAgb3V0cHV0WyA2XSA9IFgjI2dlOyBcCisgICAgICAgICAgICBzdGF0ZVsgN10gPSBYIyNnaTsgXAorICAgICAgICAgICAgb3V0cHV0WyA3XSA9IFgjI2dpOyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTIpIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMCkgeyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyA4XSA9IFgjI2dvOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gOSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDhdID0gflgjI2dvOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgOV0gPSBYIyNndTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxMF0gPSBYIyNrYTsgXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyA4XSA9IFgjI2dvOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgOF0gPSB+WCMjZ287IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA5XSA9IFgjI2d1OyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzEwXSA9IFgjI2thOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMTEpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzEwXSA9IFgjI2thOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIHN0YXRlWzExXSA9IFgjI2tlOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbMTJdID0gWCMja2k7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxM10gPSBYIyNrbzsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzE0XSA9IFgjI2t1OyBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgc3RhdGVbIDhdID0gWCMjZ287IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDhdID0gflgjI2dvOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxMF0gPSBYIyNrYTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsxMF0gPSBYIyNrYTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzExXSA9IFgjI2tlOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzExXSA9IFgjI2tlOyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDE0KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTJdID0gWCMja2k7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAxMykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTJdID0gflgjI2tpOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxM10gPSBYIyNrbzsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxNF0gPSBYIyNrdTsgXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzEyXSA9IFgjI2tpOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxMl0gPSB+WCMja2k7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTNdID0gWCMja287IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzEzXSA9IFgjI2tvOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzE0XSA9IFgjI2t1OyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMTUpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzE0XSA9IFgjI2t1OyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgICAgICBzdGF0ZVsxNV0gPSBYIyNtYTsgXAorICAgICAgICBzdGF0ZVsxNl0gPSBYIyNtZTsgXAorICAgICAgICBzdGF0ZVsxN10gPSBYIyNtaTsgXAorICAgICAgICBzdGF0ZVsxOF0gPSBYIyNtbzsgXAorICAgICAgICBzdGF0ZVsxOV0gPSBYIyNtdTsgXAorICAgICAgICBzdGF0ZVsyMF0gPSBYIyNzYTsgXAorICAgICAgICBzdGF0ZVsyMV0gPSBYIyNzZTsgXAorICAgICAgICBzdGF0ZVsyMl0gPSBYIyNzaTsgXAorICAgICAgICBzdGF0ZVsyM10gPSBYIyNzbzsgXAorICAgICAgICBzdGF0ZVsyNF0gPSBYIyNzdTsgXAorICAgIH0gXAorICAgIGVsc2UgeyBcCisgICAgICAgIHN0YXRlWyAwXSA9IFgjI2JhOyBcCisgICAgICAgIG91dHB1dFsgMF0gPSBYIyNiYTsgXAorICAgICAgICBzdGF0ZVsgMV0gPSBYIyNiZTsgXAorICAgICAgICBvdXRwdXRbIDFdID0gflgjI2JlOyBcCisgICAgICAgIHN0YXRlWyAyXSA9IFgjI2JpOyBcCisgICAgICAgIG91dHB1dFsgMl0gPSB+WCMjYmk7IFwKKyAgICAgICAgc3RhdGVbIDNdID0gWCMjYm87IFwKKyAgICAgICAgb3V0cHV0WyAzXSA9IFgjI2JvOyBcCisgICAgICAgIHN0YXRlWyA0XSA9IFgjI2J1OyBcCisgICAgICAgIG91dHB1dFsgNF0gPSBYIyNidTsgXAorICAgICAgICBzdGF0ZVsgNV0gPSBYIyNnYTsgXAorICAgICAgICBvdXRwdXRbIDVdID0gWCMjZ2E7IFwKKyAgICAgICAgc3RhdGVbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgb3V0cHV0WyA2XSA9IFgjI2dlOyBcCisgICAgICAgIHN0YXRlWyA3XSA9IFgjI2dpOyBcCisgICAgICAgIG91dHB1dFsgN10gPSBYIyNnaTsgXAorICAgICAgICBzdGF0ZVsgOF0gPSBYIyNnbzsgXAorICAgICAgICBvdXRwdXRbIDhdID0gflgjI2dvOyBcCisgICAgICAgIHN0YXRlWyA5XSA9IFgjI2d1OyBcCisgICAgICAgIG91dHB1dFsgOV0gPSBYIyNndTsgXAorICAgICAgICBzdGF0ZVsxMF0gPSBYIyNrYTsgXAorICAgICAgICBvdXRwdXRbMTBdID0gWCMja2E7IFwKKyAgICAgICAgc3RhdGVbMTFdID0gWCMja2U7IFwKKyAgICAgICAgb3V0cHV0WzExXSA9IFgjI2tlOyBcCisgICAgICAgIHN0YXRlWzEyXSA9IFgjI2tpOyBcCisgICAgICAgIG91dHB1dFsxMl0gPSB+WCMja2k7IFwKKyAgICAgICAgc3RhdGVbMTNdID0gWCMja287IFwKKyAgICAgICAgb3V0cHV0WzEzXSA9IFgjI2tvOyBcCisgICAgICAgIHN0YXRlWzE0XSA9IFgjI2t1OyBcCisgICAgICAgIG91dHB1dFsxNF0gPSBYIyNrdTsgXAorICAgICAgICBzdGF0ZVsxNV0gPSBYIyNtYTsgXAorICAgICAgICBvdXRwdXRbMTVdID0gWCMjbWE7IFwKKyAgICAgICAgaWYgKGxhbmVDb3VudCA8IDI0KSB7IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyMCkgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDE4KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAxNykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzE3XSA9IFgjI21pOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzE4XSA9IFgjI21vOyBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzE3XSA9IFgjI21pOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxN10gPSB+WCMjbWk7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMThdID0gWCMjbW87IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAxOSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMThdID0gWCMjbW87IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgc3RhdGVbMTldID0gWCMjbXU7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsyMF0gPSBYIyNzYTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzIxXSA9IFgjI3NlOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbMjJdID0gWCMjc2k7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxNl0gPSBYIyNtZTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsxNl0gPSBYIyNtZTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzE3XSA9IFgjI21pOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzE3XSA9IH5YIyNtaTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzE4XSA9IFgjI21vOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzE4XSA9IFgjI21vOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbMTldID0gWCMjbXU7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMTldID0gWCMjbXU7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjIpIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsyMF0gPSBYIyNzYTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDIxKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsyMF0gPSB+WCMjc2E7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzIxXSA9IFgjI3NlOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzIyXSA9IFgjI3NpOyBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzIwXSA9IH5YIyNzYTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsyMV0gPSBYIyNzZTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMjFdID0gWCMjc2U7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMjJdID0gWCMjc2k7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAyMykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMjJdID0gWCMjc2k7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIHN0YXRlWzIzXSA9IFgjI3NvOyBcCisgICAgICAgICAgICBzdGF0ZVsyNF0gPSBYIyNzdTsgXAorICAgICAgICB9IFwKKyAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgIHN0YXRlWzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICBvdXRwdXRbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgIHN0YXRlWzE3XSA9IFgjI21pOyBcCisgICAgICAgICAgICBvdXRwdXRbMTddID0gflgjI21pOyBcCisgICAgICAgICAgICBzdGF0ZVsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgb3V0cHV0WzE4XSA9IFgjI21vOyBcCisgICAgICAgICAgICBzdGF0ZVsxOV0gPSBYIyNtdTsgXAorICAgICAgICAgICAgb3V0cHV0WzE5XSA9IFgjI211OyBcCisgICAgICAgICAgICBzdGF0ZVsyMF0gPSBYIyNzYTsgXAorICAgICAgICAgICAgb3V0cHV0WzIwXSA9IH5YIyNzYTsgXAorICAgICAgICAgICAgc3RhdGVbMjFdID0gWCMjc2U7IFwKKyAgICAgICAgICAgIG91dHB1dFsyMV0gPSBYIyNzZTsgXAorICAgICAgICAgICAgc3RhdGVbMjJdID0gWCMjc2k7IFwKKyAgICAgICAgICAgIG91dHB1dFsyMl0gPSBYIyNzaTsgXAorICAgICAgICAgICAgc3RhdGVbMjNdID0gWCMjc287IFwKKyAgICAgICAgICAgIG91dHB1dFsyM10gPSBYIyNzbzsgXAorICAgICAgICAgICAgc3RhdGVbMjRdID0gWCMjc3U7IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMjUpIHsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsyNF0gPSBYIyNzdTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgIH0KKworI2RlZmluZSBvdXRwdXQoWCwgb3V0cHV0LCBsYW5lQ291bnQpIFwKKyAgICBpZiAobGFuZUNvdW50IDwgMTYpIHsgXAorICAgICAgICBpZiAobGFuZUNvdW50IDwgOCkgeyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNCkgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDEpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyAwXSA9IFgjI2JhOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgMF0gPSBYIyNiYTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDFdID0gflgjI2JlOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDJdID0gflgjI2JpOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgMF0gPSBYIyNiYTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgMV0gPSB+WCMjYmU7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDJdID0gflgjI2JpOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WyAzXSA9IFgjI2JvOyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDYpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDUpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA0XSA9IFgjI2J1OyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgNF0gPSBYIyNidTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDVdID0gWCMjZ2E7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSA3KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgNl0gPSBYIyNnZTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgIG91dHB1dFsgMF0gPSBYIyNiYTsgXAorICAgICAgICAgICAgb3V0cHV0WyAxXSA9IH5YIyNiZTsgXAorICAgICAgICAgICAgb3V0cHV0WyAyXSA9IH5YIyNiaTsgXAorICAgICAgICAgICAgb3V0cHV0WyAzXSA9IFgjI2JvOyBcCisgICAgICAgICAgICBvdXRwdXRbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgIG91dHB1dFsgNV0gPSBYIyNnYTsgXAorICAgICAgICAgICAgb3V0cHV0WyA2XSA9IFgjI2dlOyBcCisgICAgICAgICAgICBvdXRwdXRbIDddID0gWCMjZ2k7IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMikgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDEwKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSA5KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgOF0gPSB+WCMjZ287IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA4XSA9IH5YIyNnbzsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAxMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTBdID0gWCMja2E7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WyA4XSA9IH5YIyNnbzsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgOV0gPSBYIyNndTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsxMF0gPSBYIyNrYTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsxMV0gPSBYIyNrZTsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxNCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMTMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzEyXSA9IH5YIyNraTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTJdID0gflgjI2tpOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxM10gPSBYIyNrbzsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDE1KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxNF0gPSBYIyNrdTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9IFwKKyAgICBlbHNlIHsgXAorICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgb3V0cHV0WyAxXSA9IH5YIyNiZTsgXAorICAgICAgICBvdXRwdXRbIDJdID0gflgjI2JpOyBcCisgICAgICAgIG91dHB1dFsgM10gPSBYIyNibzsgXAorICAgICAgICBvdXRwdXRbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgb3V0cHV0WyA1XSA9IFgjI2dhOyBcCisgICAgICAgIG91dHB1dFsgNl0gPSBYIyNnZTsgXAorICAgICAgICBvdXRwdXRbIDddID0gWCMjZ2k7IFwKKyAgICAgICAgb3V0cHV0WyA4XSA9IH5YIyNnbzsgXAorICAgICAgICBvdXRwdXRbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgb3V0cHV0WzEwXSA9IFgjI2thOyBcCisgICAgICAgIG91dHB1dFsxMV0gPSBYIyNrZTsgXAorICAgICAgICBvdXRwdXRbMTJdID0gflgjI2tpOyBcCisgICAgICAgIG91dHB1dFsxM10gPSBYIyNrbzsgXAorICAgICAgICBvdXRwdXRbMTRdID0gWCMja3U7IFwKKyAgICAgICAgb3V0cHV0WzE1XSA9IFgjI21hOyBcCisgICAgICAgIGlmIChsYW5lQ291bnQgPCAyNCkgeyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjApIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxOCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMTcpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxNl0gPSBYIyNtZTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTddID0gflgjI21pOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMTkpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzE4XSA9IFgjI21vOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsxNl0gPSBYIyNtZTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsxN10gPSB+WCMjbWk7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMThdID0gWCMjbW87IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMTldID0gWCMjbXU7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjIpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDIxKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsyMF0gPSB+WCMjc2E7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzIwXSA9IH5YIyNzYTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMjFdID0gWCMjc2U7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAyMykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMjJdID0gWCMjc2k7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICBvdXRwdXRbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgIG91dHB1dFsxN10gPSB+WCMjbWk7IFwKKyAgICAgICAgICAgIG91dHB1dFsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgb3V0cHV0WzE5XSA9IFgjI211OyBcCisgICAgICAgICAgICBvdXRwdXRbMjBdID0gflgjI3NhOyBcCisgICAgICAgICAgICBvdXRwdXRbMjFdID0gWCMjc2U7IFwKKyAgICAgICAgICAgIG91dHB1dFsyMl0gPSBYIyNzaTsgXAorICAgICAgICAgICAgb3V0cHV0WzIzXSA9IFgjI3NvOyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDI1KSB7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMjRdID0gWCMjc3U7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9CisKKyNkZWZpbmUgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCBpbmRleCwgbmFtZSkgXAorICAgIFgjI25hbWUgXj0gaW5wdXRbaW5kZXhdOyBcCisgICAgb3V0cHV0W2luZGV4XSA9IFgjI25hbWU7CisKKyNkZWZpbmUgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCBpbmRleCwgbmFtZSkgXAorICAgIFgjI25hbWUgXj0gaW5wdXRbaW5kZXhdOyBcCisgICAgb3V0cHV0W2luZGV4XSA9IH5YIyNuYW1lOworCisjZGVmaW5lIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCBpbmRleCwgbmFtZSkgXAorICAgIG91dHB1dFtpbmRleF0gPSBpbnB1dFtpbmRleF0gXiBYIyNuYW1lOyBcCisgICAgWCMjbmFtZSBePSBvdXRwdXRbaW5kZXhdOworCisjZGVmaW5lIHVud3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCBpbmRleCwgbmFtZSkgXAorICAgIG91dHB1dFtpbmRleF0gPSB+KGlucHV0W2luZGV4XSBeIFgjI25hbWUpOyBcCisgICAgWCMjbmFtZSBePSBvdXRwdXRbaW5kZXhdOyBcCisKKyNlbHNlIC8qIFVzZUJlYmlnb2tpbWlzYSAqLworCisKKyNkZWZpbmUgY29weVRvU3RhdGVBbmRPdXRwdXQoWCwgc3RhdGUsIG91dHB1dCwgbGFuZUNvdW50KSBcCisgICAgaWYgKGxhbmVDb3VudCA8IDE2KSB7IFwKKyAgICAgICAgaWYgKGxhbmVDb3VudCA8IDgpIHsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDQpIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAxKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgMF0gPSBYIyNiYTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDFdID0gWCMjYmU7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDJdID0gWCMjYmk7IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgMF0gPSBYIyNiYTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDFdID0gWCMjYmU7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyAxXSA9IFgjI2JlOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyAyXSA9IFgjI2JpOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDJdID0gWCMjYmk7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgc3RhdGVbIDNdID0gWCMjYm87IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsgNF0gPSBYIyNidTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWyA1XSA9IFgjI2dhOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsgMF0gPSBYIyNiYTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgMF0gPSBYIyNiYTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWyAxXSA9IFgjI2JlOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WyAxXSA9IFgjI2JlOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbIDJdID0gWCMjYmk7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDJdID0gWCMjYmk7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsgM10gPSBYIyNibzsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgM10gPSBYIyNibzsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA2KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSA1KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgNF0gPSBYIyNidTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDVdID0gWCMjZ2E7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgNF0gPSBYIyNidTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDVdID0gWCMjZ2E7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA1XSA9IFgjI2dhOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyA2XSA9IFgjI2dlOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gNykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIHN0YXRlWyA3XSA9IFgjI2dpOyBcCisgICAgICAgICAgICBzdGF0ZVsgOF0gPSBYIyNnbzsgXAorICAgICAgICAgICAgc3RhdGVbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgICAgIHN0YXRlWzEwXSA9IFgjI2thOyBcCisgICAgICAgICAgICBzdGF0ZVsxMV0gPSBYIyNrZTsgXAorICAgICAgICAgICAgc3RhdGVbMTJdID0gWCMja2k7IFwKKyAgICAgICAgICAgIHN0YXRlWzEzXSA9IFgjI2tvOyBcCisgICAgICAgICAgICBzdGF0ZVsxNF0gPSBYIyNrdTsgXAorICAgICAgICB9IFwKKyAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgIHN0YXRlWyAwXSA9IFgjI2JhOyBcCisgICAgICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgIHN0YXRlWyAxXSA9IFgjI2JlOyBcCisgICAgICAgICAgICBvdXRwdXRbIDFdID0gWCMjYmU7IFwKKyAgICAgICAgICAgIHN0YXRlWyAyXSA9IFgjI2JpOyBcCisgICAgICAgICAgICBvdXRwdXRbIDJdID0gWCMjYmk7IFwKKyAgICAgICAgICAgIHN0YXRlWyAzXSA9IFgjI2JvOyBcCisgICAgICAgICAgICBvdXRwdXRbIDNdID0gWCMjYm87IFwKKyAgICAgICAgICAgIHN0YXRlWyA0XSA9IFgjI2J1OyBcCisgICAgICAgICAgICBvdXRwdXRbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgIHN0YXRlWyA1XSA9IFgjI2dhOyBcCisgICAgICAgICAgICBvdXRwdXRbIDVdID0gWCMjZ2E7IFwKKyAgICAgICAgICAgIHN0YXRlWyA2XSA9IFgjI2dlOyBcCisgICAgICAgICAgICBvdXRwdXRbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgICAgIHN0YXRlWyA3XSA9IFgjI2dpOyBcCisgICAgICAgICAgICBvdXRwdXRbIDddID0gWCMjZ2k7IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMikgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDEwKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDhdID0gWCMjZ287IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSA5KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgOF0gPSBYIyNnbzsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTBdID0gWCMja2E7IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgOF0gPSBYIyNnbzsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDhdID0gWCMjZ287IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA5XSA9IFgjI2d1OyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzEwXSA9IFgjI2thOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMTEpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzEwXSA9IFgjI2thOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIHN0YXRlWzExXSA9IFgjI2tlOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbMTJdID0gWCMja2k7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxM10gPSBYIyNrbzsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzE0XSA9IFgjI2t1OyBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgc3RhdGVbIDhdID0gWCMjZ287IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDhdID0gWCMjZ287IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsgOV0gPSBYIyNndTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgOV0gPSBYIyNndTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzEwXSA9IFgjI2thOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzEwXSA9IFgjI2thOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbMTFdID0gWCMja2U7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMTFdID0gWCMja2U7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTQpIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxMl0gPSBYIyNraTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDEzKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxMl09IFgjI2tpOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxM10gPSBYIyNrbzsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxNF0gPSBYIyNrdTsgXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzEyXSA9IFgjI2tpOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxMl09IFgjI2tpOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzEzXSA9IFgjI2tvOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxM10gPSBYIyNrbzsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxNF0gPSBYIyNrdTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDE1KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxNF0gPSBYIyNrdTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICAgICAgc3RhdGVbMTVdID0gWCMjbWE7IFwKKyAgICAgICAgc3RhdGVbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgc3RhdGVbMTddID0gWCMjbWk7IFwKKyAgICAgICAgc3RhdGVbMThdID0gWCMjbW87IFwKKyAgICAgICAgc3RhdGVbMTldID0gWCMjbXU7IFwKKyAgICAgICAgc3RhdGVbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgc3RhdGVbMjFdID0gWCMjc2U7IFwKKyAgICAgICAgc3RhdGVbMjJdID0gWCMjc2k7IFwKKyAgICAgICAgc3RhdGVbMjNdID0gWCMjc287IFwKKyAgICAgICAgc3RhdGVbMjRdID0gWCMjc3U7IFwKKyAgICB9IFwKKyAgICBlbHNlIHsgXAorICAgICAgICBzdGF0ZVsgMF0gPSBYIyNiYTsgXAorICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgc3RhdGVbIDFdID0gWCMjYmU7IFwKKyAgICAgICAgb3V0cHV0WyAxXSA9IFgjI2JlOyBcCisgICAgICAgIHN0YXRlWyAyXSA9IFgjI2JpOyBcCisgICAgICAgIG91dHB1dFsgMl0gPSBYIyNiaTsgXAorICAgICAgICBzdGF0ZVsgM10gPSBYIyNibzsgXAorICAgICAgICBvdXRwdXRbIDNdID0gWCMjYm87IFwKKyAgICAgICAgc3RhdGVbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgb3V0cHV0WyA0XSA9IFgjI2J1OyBcCisgICAgICAgIHN0YXRlWyA1XSA9IFgjI2dhOyBcCisgICAgICAgIG91dHB1dFsgNV0gPSBYIyNnYTsgXAorICAgICAgICBzdGF0ZVsgNl0gPSBYIyNnZTsgXAorICAgICAgICBvdXRwdXRbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgc3RhdGVbIDddID0gWCMjZ2k7IFwKKyAgICAgICAgb3V0cHV0WyA3XSA9IFgjI2dpOyBcCisgICAgICAgIHN0YXRlWyA4XSA9IFgjI2dvOyBcCisgICAgICAgIG91dHB1dFsgOF0gPSBYIyNnbzsgXAorICAgICAgICBzdGF0ZVsgOV0gPSBYIyNndTsgXAorICAgICAgICBvdXRwdXRbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgc3RhdGVbMTBdID0gWCMja2E7IFwKKyAgICAgICAgb3V0cHV0WzEwXSA9IFgjI2thOyBcCisgICAgICAgIHN0YXRlWzExXSA9IFgjI2tlOyBcCisgICAgICAgIG91dHB1dFsxMV0gPSBYIyNrZTsgXAorICAgICAgICBzdGF0ZVsxMl0gPSBYIyNraTsgXAorICAgICAgICBvdXRwdXRbMTJdPSBYIyNraTsgXAorICAgICAgICBzdGF0ZVsxM10gPSBYIyNrbzsgXAorICAgICAgICBvdXRwdXRbMTNdID0gWCMja287IFwKKyAgICAgICAgc3RhdGVbMTRdID0gWCMja3U7IFwKKyAgICAgICAgb3V0cHV0WzE0XSA9IFgjI2t1OyBcCisgICAgICAgIHN0YXRlWzE1XSA9IFgjI21hOyBcCisgICAgICAgIG91dHB1dFsxNV0gPSBYIyNtYTsgXAorICAgICAgICBpZiAobGFuZUNvdW50IDwgMjQpIHsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIwKSB7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTgpIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxNl0gPSBYIyNtZTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDE3KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxNl0gPSBYIyNtZTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTddID0gWCMjbWk7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMThdID0gWCMjbW87IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxNl0gPSBYIyNtZTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTddID0gWCMjbWk7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzE3XSA9IFgjI21pOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzE4XSA9IFgjI21vOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMTkpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzE4XSA9IFgjI21vOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIHN0YXRlWzE5XSA9IFgjI211OyBcCisgICAgICAgICAgICAgICAgc3RhdGVbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsyMV0gPSBYIyNzZTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzIyXSA9IFgjI3NpOyBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgc3RhdGVbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxN10gPSBYIyNtaTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsxN10gPSBYIyNtaTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzE4XSA9IFgjI21vOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzE4XSA9IFgjI21vOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbMTldID0gWCMjbXU7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMTldID0gWCMjbXU7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjIpIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsyMF0gPSBYIyNzYTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDIxKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsyMF0gPSBYIyNzYTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMjFdID0gWCMjc2U7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMjJdID0gWCMjc2k7IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsyMF0gPSBYIyNzYTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMjFdID0gWCMjc2U7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzIxXSA9IFgjI3NlOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzIyXSA9IFgjI3NpOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMjMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzIyXSA9IFgjI3NpOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBzdGF0ZVsyM10gPSBYIyNzbzsgXAorICAgICAgICAgICAgc3RhdGVbMjRdID0gWCMjc3U7IFwKKyAgICAgICAgfSBcCisgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICBzdGF0ZVsxNl0gPSBYIyNtZTsgXAorICAgICAgICAgICAgb3V0cHV0WzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICBzdGF0ZVsxN10gPSBYIyNtaTsgXAorICAgICAgICAgICAgb3V0cHV0WzE3XSA9IFgjI21pOyBcCisgICAgICAgICAgICBzdGF0ZVsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgb3V0cHV0WzE4XSA9IFgjI21vOyBcCisgICAgICAgICAgICBzdGF0ZVsxOV0gPSBYIyNtdTsgXAorICAgICAgICAgICAgb3V0cHV0WzE5XSA9IFgjI211OyBcCisgICAgICAgICAgICBzdGF0ZVsyMF0gPSBYIyNzYTsgXAorICAgICAgICAgICAgb3V0cHV0WzIwXSA9IFgjI3NhOyBcCisgICAgICAgICAgICBzdGF0ZVsyMV0gPSBYIyNzZTsgXAorICAgICAgICAgICAgb3V0cHV0WzIxXSA9IFgjI3NlOyBcCisgICAgICAgICAgICBzdGF0ZVsyMl0gPSBYIyNzaTsgXAorICAgICAgICAgICAgb3V0cHV0WzIyXSA9IFgjI3NpOyBcCisgICAgICAgICAgICBzdGF0ZVsyM10gPSBYIyNzbzsgXAorICAgICAgICAgICAgb3V0cHV0WzIzXSA9IFgjI3NvOyBcCisgICAgICAgICAgICBzdGF0ZVsyNF0gPSBYIyNzdTsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAyNSkgeyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzI0XSA9IFgjI3N1OyBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgfQorCisjZGVmaW5lIG91dHB1dChYLCBvdXRwdXQsIGxhbmVDb3VudCkgXAorICAgIGlmIChsYW5lQ291bnQgPCAxNikgeyBcCisgICAgICAgIGlmIChsYW5lQ291bnQgPCA4KSB7IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA0KSB7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMikgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyAwXSA9IFgjI2JhOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgMV0gPSBYIyNiZTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyAyXSA9IFgjI2JpOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgMF0gPSBYIyNiYTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgMV0gPSBYIyNiZTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgMl0gPSBYIyNiaTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgM10gPSBYIyNibzsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA2KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSA1KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgNF0gPSBYIyNidTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA1XSA9IFgjI2dhOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gNykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgIG91dHB1dFsgMV0gPSBYIyNiZTsgXAorICAgICAgICAgICAgb3V0cHV0WyAyXSA9IFgjI2JpOyBcCisgICAgICAgICAgICBvdXRwdXRbIDNdID0gWCMjYm87IFwKKyAgICAgICAgICAgIG91dHB1dFsgNF0gPSBYIyNidTsgXAorICAgICAgICAgICAgb3V0cHV0WyA1XSA9IFgjI2dhOyBcCisgICAgICAgICAgICBvdXRwdXRbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgICAgIG91dHB1dFsgN10gPSBYIyNnaTsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDEyKSB7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTApIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDkpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA4XSA9IFgjI2dvOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgOF0gPSBYIyNnbzsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAxMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTBdID0gWCMja2E7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WyA4XSA9IFgjI2dvOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WyA5XSA9IFgjI2d1OyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzEwXSA9IFgjI2thOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzExXSA9IFgjI2tlOyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDE0KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAxMykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTJdID0gWCMja2k7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzEyXSA9IFgjI2tpOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxM10gPSBYIyNrbzsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDE1KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxNF0gPSBYIyNrdTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9IFwKKyAgICBlbHNlIHsgXAorICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgb3V0cHV0WyAxXSA9IFgjI2JlOyBcCisgICAgICAgIG91dHB1dFsgMl0gPSBYIyNiaTsgXAorICAgICAgICBvdXRwdXRbIDNdID0gWCMjYm87IFwKKyAgICAgICAgb3V0cHV0WyA0XSA9IFgjI2J1OyBcCisgICAgICAgIG91dHB1dFsgNV0gPSBYIyNnYTsgXAorICAgICAgICBvdXRwdXRbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgb3V0cHV0WyA3XSA9IFgjI2dpOyBcCisgICAgICAgIG91dHB1dFsgOF0gPSBYIyNnbzsgXAorICAgICAgICBvdXRwdXRbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgb3V0cHV0WzEwXSA9IFgjI2thOyBcCisgICAgICAgIG91dHB1dFsxMV0gPSBYIyNrZTsgXAorICAgICAgICBvdXRwdXRbMTJdID0gWCMja2k7IFwKKyAgICAgICAgb3V0cHV0WzEzXSA9IFgjI2tvOyBcCisgICAgICAgIG91dHB1dFsxNF0gPSBYIyNrdTsgXAorICAgICAgICBvdXRwdXRbMTVdID0gWCMjbWE7IFwKKyAgICAgICAgaWYgKGxhbmVDb3VudCA8IDI0KSB7IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyMCkgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDE4KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAxNykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxN10gPSBYIyNtaTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDE5KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMTddID0gWCMjbWk7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMThdID0gWCMjbW87IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMTldID0gWCMjbXU7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjIpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDIxKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsyMF0gPSBYIyNzYTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzIxXSA9IFgjI3NlOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMjMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzIyXSA9IFgjI3NpOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgb3V0cHV0WzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICBvdXRwdXRbMTddID0gWCMjbWk7IFwKKyAgICAgICAgICAgIG91dHB1dFsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgb3V0cHV0WzE5XSA9IFgjI211OyBcCisgICAgICAgICAgICBvdXRwdXRbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgICAgIG91dHB1dFsyMV0gPSBYIyNzZTsgXAorICAgICAgICAgICAgb3V0cHV0WzIyXSA9IFgjI3NpOyBcCisgICAgICAgICAgICBvdXRwdXRbMjNdID0gWCMjc287IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMjUpIHsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsyNF0gPSBYIyNzdTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgIH0KKworI2RlZmluZSB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIGluZGV4LCBuYW1lKSBcCisgICAgWCMjbmFtZSBePSBpbnB1dFtpbmRleF07IFwKKyAgICBvdXRwdXRbaW5kZXhdID0gWCMjbmFtZTsKKworI2RlZmluZSB3cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIGluZGV4LCBuYW1lKSBcCisgICAgWCMjbmFtZSBePSBpbnB1dFtpbmRleF07IFwKKyAgICBvdXRwdXRbaW5kZXhdID0gWCMjbmFtZTsKKworI2RlZmluZSB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgaW5kZXgsIG5hbWUpIFwKKyAgICBvdXRwdXRbaW5kZXhdID0gaW5wdXRbaW5kZXhdIF4gWCMjbmFtZTsgXAorICAgIFgjI25hbWUgXj0gb3V0cHV0W2luZGV4XTsKKworI2RlZmluZSB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgaW5kZXgsIG5hbWUpIFwKKyAgICBvdXRwdXRbaW5kZXhdID0gaW5wdXRbaW5kZXhdIF4gWCMjbmFtZTsgXAorICAgIFgjI25hbWUgXj0gb3V0cHV0W2luZGV4XTsKKworI2VuZGlmCisKKyNkZWZpbmUgd3JhcChYLCBpbnB1dCwgb3V0cHV0LCBsYW5lQ291bnQsIHRyYWlsaW5nQml0cykgXAorICAgIGlmIChsYW5lQ291bnQgPCAxNikgeyBcCisgICAgICAgIGlmIChsYW5lQ291bnQgPCA4KSB7IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA0KSB7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMikgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2JhIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMCwgYmEpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2JlIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDAsIGJhKSBcCisgICAgICAgICAgICAgICAgICAgIHdyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMSwgYmUpIFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjYmkgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAyLCBiaSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjYm8gXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMCwgYmEpIFwKKyAgICAgICAgICAgICAgICB3cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDEsIGJlKSBcCisgICAgICAgICAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAyLCBiaSkgXAorICAgICAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMywgYm8pIFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNikgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA1KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2J1IF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNCwgYnUpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2dhIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDQsIGJ1KSBcCisgICAgICAgICAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNSwgZ2EpIFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDcpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjZ2UgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA2LCBnZSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjZ2kgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAwLCBiYSkgXAorICAgICAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAxLCBiZSkgXAorICAgICAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAyLCBiaSkgXAorICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAzLCBibykgXAorICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA0LCBidSkgXAorICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA1LCBnYSkgXAorICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA2LCBnZSkgXAorICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA3LCBnaSkgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDEyKSB7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTApIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgOSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNnbyBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB3cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDgsIGdvKSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNndSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCA4LCBnbykgXAorICAgICAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDksIGd1KSBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNrYSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDEwLCBrYSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMja2UgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIHdyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgOCwgZ28pIFwKKyAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDksIGd1KSBcCisgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxMCwga2EpIFwKKyAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDExLCBrZSkgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxNCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNraSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB3cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDEyLCBraSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMja28gXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHdyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMTIsIGtpKSBcCisgICAgICAgICAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTMsIGtvKSBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxNSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNrdSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE0LCBrdSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjbWEgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgIH0gXAorICAgIGVsc2UgeyBcCisgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMCwgYmEpIFwKKyAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAxLCBiZSkgXAorICAgICAgICB3cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDIsIGJpKSBcCisgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMywgYm8pIFwKKyAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA0LCBidSkgXAorICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDUsIGdhKSBcCisgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNiwgZ2UpIFwKKyAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA3LCBnaSkgXAorICAgICAgICB3cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDgsIGdvKSBcCisgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgOSwgZ3UpIFwKKyAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxMCwga2EpIFwKKyAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxMSwga2UpIFwKKyAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAxMiwga2kpIFwKKyAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxMywga28pIFwKKyAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxNCwga3UpIFwKKyAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxNSwgbWEpIFwKKyAgICAgICAgaWYgKGxhbmVDb3VudCA8IDI0KSB7IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyMCkgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDE4KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDE3KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI21lIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTYsIG1lKSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNtaSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxNiwgbWUpIFwKKyAgICAgICAgICAgICAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAxNywgbWkpIFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDE5KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI21vIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTgsIG1vKSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNtdSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxNiwgbWUpIFwKKyAgICAgICAgICAgICAgICB3cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDE3LCBtaSkgXAorICAgICAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTgsIG1vKSBcCisgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxOSwgbXUpIFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjIpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjEpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjc2EgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAyMCwgc2EpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI3NlIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICB3cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDIwLCBzYSkgXAorICAgICAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDIxLCBzZSkgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjc2kgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAyMiwgc2kpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI3NvIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTYsIG1lKSBcCisgICAgICAgICAgICB3cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDE3LCBtaSkgXAorICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxOCwgbW8pIFwKKyAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTksIG11KSBcCisgICAgICAgICAgICB3cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDIwLCBzYSkgXAorICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAyMSwgc2UpIFwKKyAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMjIsIHNpKSBcCisgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDIzLCBzbykgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDI1KSB7IFwKKyAgICAgICAgICAgICAgICBYIyNzdSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDI0LCBzdSkgXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgIH0KKworI2RlZmluZSB1bndyYXAoWCwgaW5wdXQsIG91dHB1dCwgbGFuZUNvdW50LCB0cmFpbGluZ0JpdHMpIFwKKyAgICBpZiAobGFuZUNvdW50IDwgMTYpIHsgXAorICAgICAgICBpZiAobGFuZUNvdW50IDwgOCkgeyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNCkgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNiYSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMCwgYmEpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2JlIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMCwgYmEpIFwKKyAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDEsIGJlKSBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAzKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2JpIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVud3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAyLCBiaSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjYm8gXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAwLCBiYSkgXAorICAgICAgICAgICAgICAgIHVud3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAxLCBiZSkgXAorICAgICAgICAgICAgICAgIHVud3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAyLCBiaSkgXAorICAgICAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAzLCBibykgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA2KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDUpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjYnUgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDQsIGJ1KSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNnYSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDQsIGJ1KSBcCisgICAgICAgICAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA1LCBnYSkgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNnZSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNiwgZ2UpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2dpIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAwLCBiYSkgXAorICAgICAgICAgICAgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDEsIGJlKSBcCisgICAgICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMiwgYmkpIFwKKyAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAzLCBibykgXAorICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDQsIGJ1KSBcCisgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNSwgZ2EpIFwKKyAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA2LCBnZSkgXAorICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDcsIGdpKSBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTIpIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA5KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2dvIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVud3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCA4LCBnbykgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjZ3UgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHVud3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCA4LCBnbykgXAorICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgOSwgZ3UpIFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDExKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2thIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxMCwga2EpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2tlIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgOCwgZ28pIFwKKyAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgOSwgZ3UpIFwKKyAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTAsIGthKSBcCisgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDExLCBrZSkgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxNCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNraSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMTIsIGtpKSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNrbyBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDEyLCBraSkgXAorICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTMsIGtvKSBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxNSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNrdSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTQsIGt1KSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNtYSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgfSBcCisgICAgZWxzZSB7IFwKKyAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDAsIGJhKSBcCisgICAgICAgIHVud3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAxLCBiZSkgXAorICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMiwgYmkpIFwKKyAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDMsIGJvKSBcCisgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA0LCBidSkgXAorICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNSwgZ2EpIFwKKyAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDYsIGdlKSBcCisgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA3LCBnaSkgXAorICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgOCwgZ28pIFwKKyAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDksIGd1KSBcCisgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxMCwga2EpIFwKKyAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDExLCBrZSkgXAorICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMTIsIGtpKSBcCisgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxMywga28pIFwKKyAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE0LCBrdSkgXAorICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTUsIG1hKSBcCisgICAgICAgIGlmIChsYW5lQ291bnQgPCAyNCkgeyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjApIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxOCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxNykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNtZSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTYsIG1lKSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNtaSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE2LCBtZSkgXAorICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMTcsIG1pKSBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxOSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNtbyBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTgsIG1vKSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNtdSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE2LCBtZSkgXAorICAgICAgICAgICAgICAgIHVud3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAxNywgbWkpIFwKKyAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTgsIG1vKSBcCisgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE5LCBtdSkgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyMikgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNzYSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMjAsIHNhKSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNzZSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDIwLCBzYSkgXAorICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMjEsIHNlKSBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyMykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNzaSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMjIsIHNpKSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNzbyBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTYsIG1lKSBcCisgICAgICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMTcsIG1pKSBcCisgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTgsIG1vKSBcCisgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTksIG11KSBcCisgICAgICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMjAsIHNhKSBcCisgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMjEsIHNlKSBcCisgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMjIsIHNpKSBcCisgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMjMsIHNvKSBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjUpIHsgXAorICAgICAgICAgICAgICAgIFgjI3N1IF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAyNCwgc3UpIFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtU25QLW9wdDMyLmggYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtU25QLW9wdDMyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmNmNzY1ZQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC1TblAtb3B0MzIuaApAQCAtMCwwICsxLDM3IEBACisvKgorSW1wbGVtZW50YXRpb24gYnkgdGhlIEtlY2NhaywgS2V5YWsgYW5kIEtldGplIFRlYW1zLCBuYW1lbHksIEd1aWRvIEJlcnRvbmksCitKb2FuIERhZW1lbiwgTWljaGHDq2wgUGVldGVycywgR2lsbGVzIFZhbiBBc3NjaGUgYW5kIFJvbm55IFZhbiBLZWVyLCBoZXJlYnkKK2Rlbm90ZWQgYXMgInRoZSBpbXBsZW1lbnRlciIuCisKK0ZvciBtb3JlIGluZm9ybWF0aW9uLCBmZWVkYmFjayBvciBxdWVzdGlvbnMsIHBsZWFzZSByZWZlciB0byBvdXIgd2Vic2l0ZXM6CitodHRwOi8va2VjY2FrLm5vZWtlb24ub3JnLworaHR0cDovL2tleWFrLm5vZWtlb24ub3JnLworaHR0cDovL2tldGplLm5vZWtlb24ub3JnLworCitUbyB0aGUgZXh0ZW50IHBvc3NpYmxlIHVuZGVyIGxhdywgdGhlIGltcGxlbWVudGVyIGhhcyB3YWl2ZWQgYWxsIGNvcHlyaWdodAorYW5kIHJlbGF0ZWQgb3IgbmVpZ2hib3JpbmcgcmlnaHRzIHRvIHRoZSBzb3VyY2UgY29kZSBpbiB0aGlzIGZpbGUuCitodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCisqLworCisjaWZuZGVmIF9LZWNjYWtQXzE2MDBfU25QX2hfCisjZGVmaW5lIF9LZWNjYWtQXzE2MDBfU25QX2hfCisKKy8qKiBGb3IgdGhlIGRvY3VtZW50YXRpb24sIHNlZSBTblAtZG9jdW1lbnRhdGlvbi5oLgorICovCisKKyNkZWZpbmUgS2VjY2FrUDE2MDBfaW1wbGVtZW50YXRpb24gICAgICAiaW4tcGxhY2UgMzItYml0IG9wdGltaXplZCBpbXBsZW1lbnRhdGlvbiIKKyNkZWZpbmUgS2VjY2FrUDE2MDBfc3RhdGVTaXplSW5CeXRlcyAgICAyMDAKKyNkZWZpbmUgS2VjY2FrUDE2MDBfc3RhdGVBbGlnbm1lbnQgICAgICA4CisKKyNkZWZpbmUgS2VjY2FrUDE2MDBfU3RhdGljSW5pdGlhbGl6ZSgpCit2b2lkIEtlY2Nha1AxNjAwX0luaXRpYWxpemUodm9pZCAqc3RhdGUpOwordm9pZCBLZWNjYWtQMTYwMF9BZGRCeXRlKHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBjaGFyIGRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQpOwordm9pZCBLZWNjYWtQMTYwMF9BZGRCeXRlcyh2b2lkICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCk7Cit2b2lkIEtlY2Nha1AxNjAwX092ZXJ3cml0ZUJ5dGVzKHZvaWQgKnN0YXRlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKTsKK3ZvaWQgS2VjY2FrUDE2MDBfT3ZlcndyaXRlV2l0aFplcm9lcyh2b2lkICpzdGF0ZSwgdW5zaWduZWQgaW50IGJ5dGVDb3VudCk7Cit2b2lkIEtlY2Nha1AxNjAwX1Blcm11dGVfMTJyb3VuZHModm9pZCAqc3RhdGUpOwordm9pZCBLZWNjYWtQMTYwMF9QZXJtdXRlXzI0cm91bmRzKHZvaWQgKnN0YXRlKTsKK3ZvaWQgS2VjY2FrUDE2MDBfRXh0cmFjdEJ5dGVzKGNvbnN0IHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKTsKK3ZvaWQgS2VjY2FrUDE2MDBfRXh0cmFjdEFuZEFkZEJ5dGVzKGNvbnN0IHZvaWQgKnN0YXRlLCBjb25zdCB1bnNpZ25lZCBjaGFyICppbnB1dCwgdW5zaWduZWQgY2hhciAqb3V0cHV0LCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtU25QLW9wdDY0LmggYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtU25QLW9wdDY0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODg5YTMxYQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC1TblAtb3B0NjQuaApAQCAtMCwwICsxLDQ5IEBACisvKgorSW1wbGVtZW50YXRpb24gYnkgdGhlIEtlY2NhaywgS2V5YWsgYW5kIEtldGplIFRlYW1zLCBuYW1lbHksIEd1aWRvIEJlcnRvbmksCitKb2FuIERhZW1lbiwgTWljaGHDq2wgUGVldGVycywgR2lsbGVzIFZhbiBBc3NjaGUgYW5kIFJvbm55IFZhbiBLZWVyLCBoZXJlYnkKK2Rlbm90ZWQgYXMgInRoZSBpbXBsZW1lbnRlciIuCisKK0ZvciBtb3JlIGluZm9ybWF0aW9uLCBmZWVkYmFjayBvciBxdWVzdGlvbnMsIHBsZWFzZSByZWZlciB0byBvdXIgd2Vic2l0ZXM6CitodHRwOi8va2VjY2FrLm5vZWtlb24ub3JnLworaHR0cDovL2tleWFrLm5vZWtlb24ub3JnLworaHR0cDovL2tldGplLm5vZWtlb24ub3JnLworCitUbyB0aGUgZXh0ZW50IHBvc3NpYmxlIHVuZGVyIGxhdywgdGhlIGltcGxlbWVudGVyIGhhcyB3YWl2ZWQgYWxsIGNvcHlyaWdodAorYW5kIHJlbGF0ZWQgb3IgbmVpZ2hib3JpbmcgcmlnaHRzIHRvIHRoZSBzb3VyY2UgY29kZSBpbiB0aGlzIGZpbGUuCitodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCisqLworCisjaWZuZGVmIF9LZWNjYWtQXzE2MDBfU25QX2hfCisjZGVmaW5lIF9LZWNjYWtQXzE2MDBfU25QX2hfCisKKy8qKiBGb3IgdGhlIGRvY3VtZW50YXRpb24sIHNlZSBTblAtZG9jdW1lbnRhdGlvbi5oLgorICovCisKKy8qICNpbmNsdWRlICJicmdfZW5kaWFuLmgiICovCisjaW5jbHVkZSAiS2VjY2FrUC0xNjAwLW9wdDY0LWNvbmZpZy5oIgorCisjZGVmaW5lIEtlY2Nha1AxNjAwX2ltcGxlbWVudGF0aW9uICAgICAgImdlbmVyaWMgNjQtYml0IG9wdGltaXplZCBpbXBsZW1lbnRhdGlvbiAoIiBLZWNjYWtQMTYwMF9pbXBsZW1lbnRhdGlvbl9jb25maWcgIikiCisjZGVmaW5lIEtlY2Nha1AxNjAwX3N0YXRlU2l6ZUluQnl0ZXMgICAgMjAwCisjZGVmaW5lIEtlY2Nha1AxNjAwX3N0YXRlQWxpZ25tZW50ICAgICAgOAorI2RlZmluZSBLZWNjYWtGMTYwMF9GYXN0TG9vcF9zdXBwb3J0ZWQKKworI2luY2x1ZGUgPHN0ZGRlZi5oPgorCisjZGVmaW5lIEtlY2Nha1AxNjAwX1N0YXRpY0luaXRpYWxpemUoKQordm9pZCBLZWNjYWtQMTYwMF9Jbml0aWFsaXplKHZvaWQgKnN0YXRlKTsKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorI2RlZmluZSBLZWNjYWtQMTYwMF9BZGRCeXRlKHN0YXRlLCBieXRlLCBvZmZzZXQpIFwKKyAgICAoKHVuc2lnbmVkIGNoYXIqKShzdGF0ZSkpWyhvZmZzZXQpXSBePSAoYnl0ZSkKKyNlbHNlCit2b2lkIEtlY2Nha1AxNjAwX0FkZEJ5dGUodm9pZCAqc3RhdGUsIHVuc2lnbmVkIGNoYXIgZGF0YSwgdW5zaWduZWQgaW50IG9mZnNldCk7CisjZW5kaWYKK3ZvaWQgS2VjY2FrUDE2MDBfQWRkQnl0ZXModm9pZCAqc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpOwordm9pZCBLZWNjYWtQMTYwMF9PdmVyd3JpdGVCeXRlcyh2b2lkICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCk7Cit2b2lkIEtlY2Nha1AxNjAwX092ZXJ3cml0ZVdpdGhaZXJvZXModm9pZCAqc3RhdGUsIHVuc2lnbmVkIGludCBieXRlQ291bnQpOwordm9pZCBLZWNjYWtQMTYwMF9QZXJtdXRlXzEycm91bmRzKHZvaWQgKnN0YXRlKTsKK3ZvaWQgS2VjY2FrUDE2MDBfUGVybXV0ZV8yNHJvdW5kcyh2b2lkICpzdGF0ZSk7Cit2b2lkIEtlY2Nha1AxNjAwX0V4dHJhY3RCeXRlcyhjb25zdCB2b2lkICpzdGF0ZSwgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCk7Cit2b2lkIEtlY2Nha1AxNjAwX0V4dHJhY3RBbmRBZGRCeXRlcyhjb25zdCB2b2lkICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqaW5wdXQsIHVuc2lnbmVkIGNoYXIgKm91dHB1dCwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCk7CitzaXplX3QgS2VjY2FrRjE2MDBfRmFzdExvb3BfQWJzb3JiKHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBpbnQgbGFuZUNvdW50LCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW4pOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC1TblAuaCBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC1TblAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjIzZjA5Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrUC0xNjAwLVNuUC5oCkBAIC0wLDAgKzEsNyBAQAorI2lmIEtlY2Nha09wdCA9PSA2NAorICAjaW5jbHVkZSAiS2VjY2FrUC0xNjAwLVNuUC1vcHQ2NC5oIgorI2VsaWYgS2VjY2FrT3B0ID09IDMyCisgICNpbmNsdWRlICJLZWNjYWtQLTE2MDAtU25QLW9wdDMyLmgiCisjZWxzZQorICAjZXJyb3IgIk5vIEtlY2Nha09wdCIKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrUC0xNjAwLWlucGxhY2UzMkJJLmMgYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtaW5wbGFjZTMyQkkuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMmY5ZmZlCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrUC0xNjAwLWlucGxhY2UzMkJJLmMKQEAgLTAsMCArMSwxMTYyIEBACisvKgorSW1wbGVtZW50YXRpb24gYnkgdGhlIEtlY2NhaywgS2V5YWsgYW5kIEtldGplIFRlYW1zLCBuYW1lbHksIEd1aWRvIEJlcnRvbmksCitKb2FuIERhZW1lbiwgTWljaGHDq2wgUGVldGVycywgR2lsbGVzIFZhbiBBc3NjaGUgYW5kIFJvbm55IFZhbiBLZWVyLCBoZXJlYnkKK2Rlbm90ZWQgYXMgInRoZSBpbXBsZW1lbnRlciIuCisKK0ZvciBtb3JlIGluZm9ybWF0aW9uLCBmZWVkYmFjayBvciBxdWVzdGlvbnMsIHBsZWFzZSByZWZlciB0byBvdXIgd2Vic2l0ZXM6CitodHRwOi8va2VjY2FrLm5vZWtlb24ub3JnLworaHR0cDovL2tleWFrLm5vZWtlb24ub3JnLworaHR0cDovL2tldGplLm5vZWtlb24ub3JnLworCitUbyB0aGUgZXh0ZW50IHBvc3NpYmxlIHVuZGVyIGxhdywgdGhlIGltcGxlbWVudGVyIGhhcyB3YWl2ZWQgYWxsIGNvcHlyaWdodAorYW5kIHJlbGF0ZWQgb3IgbmVpZ2hib3JpbmcgcmlnaHRzIHRvIHRoZSBzb3VyY2UgY29kZSBpbiB0aGlzIGZpbGUuCitodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCisqLworCisjaW5jbHVkZSAgICA8c3RyaW5nLmg+CisvKiAjaW5jbHVkZSAiYnJnX2VuZGlhbi5oIiAqLworI2luY2x1ZGUgIktlY2Nha1AtMTYwMC1TblAuaCIKKyNpbmNsdWRlICJTblAtUmVsYW5lZC5oIgorCit0eXBlZGVmIHVuc2lnbmVkIGNoYXIgVUlOVDg7Cit0eXBlZGVmIHVuc2lnbmVkIGludCBVSU5UMzI7CisvKiBXQVJOSU5HOiBvbiA4LWJpdCBhbmQgMTYtYml0IHBsYXRmb3JtcywgdGhpcyBzaG91bGQgYmUgcmVwbGFjZWQgYnk6ICovCisKKy8qdHlwZWRlZiB1bnNpZ25lZCBsb25nICAgICAgIFVJTlQzMjsgKi8KKworCisjZGVmaW5lIFJPTDMyKGEsIG9mZnNldCkgKCgoKFVJTlQzMilhKSA8PCAob2Zmc2V0KSkgXiAoKChVSU5UMzIpYSkgPj4gKDMyLShvZmZzZXQpKSkpCisKKy8qIENyZWRpdCB0byBIZW5yeSBTLiBXYXJyZW4sIEhhY2tlcidzIERlbGlnaHQsIEFkZGlzb24tV2VzbGV5LCAyMDAyICovCisKKyNkZWZpbmUgcHJlcGFyZVRvQml0SW50ZXJsZWF2aW5nKGxvdywgaGlnaCwgdGVtcCwgdGVtcDAsIHRlbXAxKSBcCisgICAgICAgIHRlbXAwID0gKGxvdyk7IFwKKyAgICAgICAgdGVtcCA9ICh0ZW1wMCBeICh0ZW1wMCA+PiAgMSkpICYgMHgyMjIyMjIyMlVMOyAgdGVtcDAgPSB0ZW1wMCBeIHRlbXAgXiAodGVtcCA8PCAgMSk7IFwKKyAgICAgICAgdGVtcCA9ICh0ZW1wMCBeICh0ZW1wMCA+PiAgMikpICYgMHgwQzBDMEMwQ1VMOyAgdGVtcDAgPSB0ZW1wMCBeIHRlbXAgXiAodGVtcCA8PCAgMik7IFwKKyAgICAgICAgdGVtcCA9ICh0ZW1wMCBeICh0ZW1wMCA+PiAgNCkpICYgMHgwMEYwMDBGMFVMOyAgdGVtcDAgPSB0ZW1wMCBeIHRlbXAgXiAodGVtcCA8PCAgNCk7IFwKKyAgICAgICAgdGVtcCA9ICh0ZW1wMCBeICh0ZW1wMCA+PiAgOCkpICYgMHgwMDAwRkYwMFVMOyAgdGVtcDAgPSB0ZW1wMCBeIHRlbXAgXiAodGVtcCA8PCAgOCk7IFwKKyAgICAgICAgdGVtcDEgPSAoaGlnaCk7IFwKKyAgICAgICAgdGVtcCA9ICh0ZW1wMSBeICh0ZW1wMSA+PiAgMSkpICYgMHgyMjIyMjIyMlVMOyAgdGVtcDEgPSB0ZW1wMSBeIHRlbXAgXiAodGVtcCA8PCAgMSk7IFwKKyAgICAgICAgdGVtcCA9ICh0ZW1wMSBeICh0ZW1wMSA+PiAgMikpICYgMHgwQzBDMEMwQ1VMOyAgdGVtcDEgPSB0ZW1wMSBeIHRlbXAgXiAodGVtcCA8PCAgMik7IFwKKyAgICAgICAgdGVtcCA9ICh0ZW1wMSBeICh0ZW1wMSA+PiAgNCkpICYgMHgwMEYwMDBGMFVMOyAgdGVtcDEgPSB0ZW1wMSBeIHRlbXAgXiAodGVtcCA8PCAgNCk7IFwKKyAgICAgICAgdGVtcCA9ICh0ZW1wMSBeICh0ZW1wMSA+PiAgOCkpICYgMHgwMDAwRkYwMFVMOyAgdGVtcDEgPSB0ZW1wMSBeIHRlbXAgXiAodGVtcCA8PCAgOCk7CisKKyNkZWZpbmUgdG9CaXRJbnRlcmxlYXZpbmdBbmRYT1IobG93LCBoaWdoLCBldmVuLCBvZGQsIHRlbXAsIHRlbXAwLCB0ZW1wMSkgXAorICAgICAgICBwcmVwYXJlVG9CaXRJbnRlcmxlYXZpbmcobG93LCBoaWdoLCB0ZW1wLCB0ZW1wMCwgdGVtcDEpIFwKKyAgICAgICAgZXZlbiBePSAodGVtcDAgJiAweDAwMDBGRkZGKSB8ICh0ZW1wMSA8PCAxNik7IFwKKyAgICAgICAgb2RkIF49ICh0ZW1wMCA+PiAxNikgfCAodGVtcDEgJiAweEZGRkYwMDAwKTsKKworI2RlZmluZSB0b0JpdEludGVybGVhdmluZ0FuZEFORChsb3csIGhpZ2gsIGV2ZW4sIG9kZCwgdGVtcCwgdGVtcDAsIHRlbXAxKSBcCisgICAgICAgIHByZXBhcmVUb0JpdEludGVybGVhdmluZyhsb3csIGhpZ2gsIHRlbXAsIHRlbXAwLCB0ZW1wMSkgXAorICAgICAgICBldmVuICY9ICh0ZW1wMCAmIDB4MDAwMEZGRkYpIHwgKHRlbXAxIDw8IDE2KTsgXAorICAgICAgICBvZGQgJj0gKHRlbXAwID4+IDE2KSB8ICh0ZW1wMSAmIDB4RkZGRjAwMDApOworCisjZGVmaW5lIHRvQml0SW50ZXJsZWF2aW5nQW5kU2V0KGxvdywgaGlnaCwgZXZlbiwgb2RkLCB0ZW1wLCB0ZW1wMCwgdGVtcDEpIFwKKyAgICAgICAgcHJlcGFyZVRvQml0SW50ZXJsZWF2aW5nKGxvdywgaGlnaCwgdGVtcCwgdGVtcDAsIHRlbXAxKSBcCisgICAgICAgIGV2ZW4gPSAodGVtcDAgJiAweDAwMDBGRkZGKSB8ICh0ZW1wMSA8PCAxNik7IFwKKyAgICAgICAgb2RkID0gKHRlbXAwID4+IDE2KSB8ICh0ZW1wMSAmIDB4RkZGRjAwMDApOworCisvKiBDcmVkaXQgdG8gSGVucnkgUy4gV2FycmVuLCBIYWNrZXIncyBEZWxpZ2h0LCBBZGRpc29uLVdlc2xleSwgMjAwMiAqLworCisjZGVmaW5lIHByZXBhcmVGcm9tQml0SW50ZXJsZWF2aW5nKGV2ZW4sIG9kZCwgdGVtcCwgdGVtcDAsIHRlbXAxKSBcCisgICAgICAgIHRlbXAwID0gKGV2ZW4pOyBcCisgICAgICAgIHRlbXAxID0gKG9kZCk7IFwKKyAgICAgICAgdGVtcCA9ICh0ZW1wMCAmIDB4MDAwMEZGRkYpIHwgKHRlbXAxIDw8IDE2KTsgXAorICAgICAgICB0ZW1wMSA9ICh0ZW1wMCA+PiAxNikgfCAodGVtcDEgJiAweEZGRkYwMDAwKTsgXAorICAgICAgICB0ZW1wMCA9IHRlbXA7IFwKKyAgICAgICAgdGVtcCA9ICh0ZW1wMCBeICh0ZW1wMCA+PiAgOCkpICYgMHgwMDAwRkYwMFVMOyAgdGVtcDAgPSB0ZW1wMCBeIHRlbXAgXiAodGVtcCA8PCAgOCk7IFwKKyAgICAgICAgdGVtcCA9ICh0ZW1wMCBeICh0ZW1wMCA+PiAgNCkpICYgMHgwMEYwMDBGMFVMOyAgdGVtcDAgPSB0ZW1wMCBeIHRlbXAgXiAodGVtcCA8PCAgNCk7IFwKKyAgICAgICAgdGVtcCA9ICh0ZW1wMCBeICh0ZW1wMCA+PiAgMikpICYgMHgwQzBDMEMwQ1VMOyAgdGVtcDAgPSB0ZW1wMCBeIHRlbXAgXiAodGVtcCA8PCAgMik7IFwKKyAgICAgICAgdGVtcCA9ICh0ZW1wMCBeICh0ZW1wMCA+PiAgMSkpICYgMHgyMjIyMjIyMlVMOyAgdGVtcDAgPSB0ZW1wMCBeIHRlbXAgXiAodGVtcCA8PCAgMSk7IFwKKyAgICAgICAgdGVtcCA9ICh0ZW1wMSBeICh0ZW1wMSA+PiAgOCkpICYgMHgwMDAwRkYwMFVMOyAgdGVtcDEgPSB0ZW1wMSBeIHRlbXAgXiAodGVtcCA8PCAgOCk7IFwKKyAgICAgICAgdGVtcCA9ICh0ZW1wMSBeICh0ZW1wMSA+PiAgNCkpICYgMHgwMEYwMDBGMFVMOyAgdGVtcDEgPSB0ZW1wMSBeIHRlbXAgXiAodGVtcCA8PCAgNCk7IFwKKyAgICAgICAgdGVtcCA9ICh0ZW1wMSBeICh0ZW1wMSA+PiAgMikpICYgMHgwQzBDMEMwQ1VMOyAgdGVtcDEgPSB0ZW1wMSBeIHRlbXAgXiAodGVtcCA8PCAgMik7IFwKKyAgICAgICAgdGVtcCA9ICh0ZW1wMSBeICh0ZW1wMSA+PiAgMSkpICYgMHgyMjIyMjIyMlVMOyAgdGVtcDEgPSB0ZW1wMSBeIHRlbXAgXiAodGVtcCA8PCAgMSk7CisKKyNkZWZpbmUgZnJvbUJpdEludGVybGVhdmluZyhldmVuLCBvZGQsIGxvdywgaGlnaCwgdGVtcCwgdGVtcDAsIHRlbXAxKSBcCisgICAgICAgIHByZXBhcmVGcm9tQml0SW50ZXJsZWF2aW5nKGV2ZW4sIG9kZCwgdGVtcCwgdGVtcDAsIHRlbXAxKSBcCisgICAgICAgIGxvdyA9IHRlbXAwOyBcCisgICAgICAgIGhpZ2ggPSB0ZW1wMTsKKworI2RlZmluZSBmcm9tQml0SW50ZXJsZWF2aW5nQW5kWE9SKGV2ZW4sIG9kZCwgbG93SW4sIGhpZ2hJbiwgbG93T3V0LCBoaWdoT3V0LCB0ZW1wLCB0ZW1wMCwgdGVtcDEpIFwKKyAgICAgICAgcHJlcGFyZUZyb21CaXRJbnRlcmxlYXZpbmcoZXZlbiwgb2RkLCB0ZW1wLCB0ZW1wMCwgdGVtcDEpIFwKKyAgICAgICAgbG93T3V0ID0gbG93SW4gXiB0ZW1wMDsgXAorICAgICAgICBoaWdoT3V0ID0gaGlnaEluIF4gdGVtcDE7CisKK3ZvaWQgS2VjY2FrUDE2MDBfU2V0Qnl0ZXNJbkxhbmVUb1plcm8odm9pZCAqc3RhdGUsIHVuc2lnbmVkIGludCBsYW5lUG9zaXRpb24sIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpCit7CisgICAgVUlOVDggbGFuZUFzQnl0ZXNbOF07CisgICAgVUlOVDMyIGxvdywgaGlnaDsKKyAgICBVSU5UMzIgdGVtcCwgdGVtcDAsIHRlbXAxOworICAgIFVJTlQzMiAqc3RhdGVBc0hhbGZMYW5lcyA9IChVSU5UMzIqKXN0YXRlOworCisgICAgbWVtc2V0KGxhbmVBc0J5dGVzLCAweEZGLCBvZmZzZXQpOworICAgIG1lbXNldChsYW5lQXNCeXRlcytvZmZzZXQsIDB4MDAsIGxlbmd0aCk7CisgICAgbWVtc2V0KGxhbmVBc0J5dGVzK29mZnNldCtsZW5ndGgsIDB4RkYsIDgtb2Zmc2V0LWxlbmd0aCk7CisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgPT0gSVNfTElUVExFX0VORElBTikKKyAgICBsb3cgPSAqKChVSU5UMzIqKShsYW5lQXNCeXRlcyswKSk7CisgICAgaGlnaCA9ICooKFVJTlQzMiopKGxhbmVBc0J5dGVzKzQpKTsKKyNlbHNlCisgICAgbG93ID0gbGFuZUFzQnl0ZXNbMF0KKyAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbMV0pIDw8IDgpCisgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzJdKSA8PCAxNikKKyAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbM10pIDw8IDI0KTsKKyAgICBoaWdoID0gbGFuZUFzQnl0ZXNbNF0KKyAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbNV0pIDw8IDgpCisgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzZdKSA8PCAxNikKKyAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbN10pIDw8IDI0KTsKKyNlbmRpZgorICAgIHRvQml0SW50ZXJsZWF2aW5nQW5kQU5EKGxvdywgaGlnaCwgc3RhdGVBc0hhbGZMYW5lc1tsYW5lUG9zaXRpb24qMiswXSwgc3RhdGVBc0hhbGZMYW5lc1tsYW5lUG9zaXRpb24qMisxXSwgdGVtcCwgdGVtcDAsIHRlbXAxKTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0luaXRpYWxpemUodm9pZCAqc3RhdGUpCit7CisgICAgbWVtc2V0KHN0YXRlLCAwLCAyMDApOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfQWRkQnl0ZSh2b2lkICpzdGF0ZSwgdW5zaWduZWQgY2hhciBieXRlLCB1bnNpZ25lZCBpbnQgb2Zmc2V0KQoreworICAgIHVuc2lnbmVkIGludCBsYW5lUG9zaXRpb24gPSBvZmZzZXQvODsKKyAgICB1bnNpZ25lZCBpbnQgb2Zmc2V0SW5MYW5lID0gb2Zmc2V0JTg7CisgICAgVUlOVDMyIGxvdywgaGlnaDsKKyAgICBVSU5UMzIgdGVtcCwgdGVtcDAsIHRlbXAxOworICAgIFVJTlQzMiAqc3RhdGVBc0hhbGZMYW5lcyA9IChVSU5UMzIqKXN0YXRlOworCisgICAgaWYgKG9mZnNldEluTGFuZSA8IDQpIHsKKyAgICAgICAgbG93ID0gKFVJTlQzMilieXRlIDw8IChvZmZzZXRJbkxhbmUqOCk7CisgICAgICAgIGhpZ2ggPSAwOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgbG93ID0gMDsKKyAgICAgICAgaGlnaCA9IChVSU5UMzIpYnl0ZSA8PCAoKG9mZnNldEluTGFuZS00KSo4KTsKKyAgICB9CisgICAgdG9CaXRJbnRlcmxlYXZpbmdBbmRYT1IobG93LCBoaWdoLCBzdGF0ZUFzSGFsZkxhbmVzW2xhbmVQb3NpdGlvbioyKzBdLCBzdGF0ZUFzSGFsZkxhbmVzW2xhbmVQb3NpdGlvbioyKzFdLCB0ZW1wLCB0ZW1wMCwgdGVtcDEpOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfQWRkQnl0ZXNJbkxhbmUodm9pZCAqc3RhdGUsIHVuc2lnbmVkIGludCBsYW5lUG9zaXRpb24sIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpCit7CisgICAgVUlOVDggbGFuZUFzQnl0ZXNbOF07CisgICAgVUlOVDMyIGxvdywgaGlnaDsKKyAgICBVSU5UMzIgdGVtcCwgdGVtcDAsIHRlbXAxOworICAgIFVJTlQzMiAqc3RhdGVBc0hhbGZMYW5lcyA9IChVSU5UMzIqKXN0YXRlOworCisgICAgbWVtc2V0KGxhbmVBc0J5dGVzLCAwLCA4KTsKKyAgICBtZW1jcHkobGFuZUFzQnl0ZXMrb2Zmc2V0LCBkYXRhLCBsZW5ndGgpOworI2lmIChQTEFURk9STV9CWVRFX09SREVSID09IElTX0xJVFRMRV9FTkRJQU4pCisgICAgbG93ID0gKigoVUlOVDMyKikobGFuZUFzQnl0ZXMrMCkpOworICAgIGhpZ2ggPSAqKChVSU5UMzIqKShsYW5lQXNCeXRlcys0KSk7CisjZWxzZQorICAgIGxvdyA9IGxhbmVBc0J5dGVzWzBdCisgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzFdKSA8PCA4KQorICAgICAgICB8ICgoVUlOVDMyKShsYW5lQXNCeXRlc1syXSkgPDwgMTYpCisgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzNdKSA8PCAyNCk7CisgICAgaGlnaCA9IGxhbmVBc0J5dGVzWzRdCisgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzVdKSA8PCA4KQorICAgICAgICB8ICgoVUlOVDMyKShsYW5lQXNCeXRlc1s2XSkgPDwgMTYpCisgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzddKSA8PCAyNCk7CisjZW5kaWYKKyAgICB0b0JpdEludGVybGVhdmluZ0FuZFhPUihsb3csIGhpZ2gsIHN0YXRlQXNIYWxmTGFuZXNbbGFuZVBvc2l0aW9uKjIrMF0sIHN0YXRlQXNIYWxmTGFuZXNbbGFuZVBvc2l0aW9uKjIrMV0sIHRlbXAsIHRlbXAwLCB0ZW1wMSk7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9BZGRMYW5lcyh2b2lkICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IGxhbmVDb3VudCkKK3sKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorICAgIGNvbnN0IFVJTlQzMiAqIHBJID0gKGNvbnN0IFVJTlQzMiAqKWRhdGE7CisgICAgVUlOVDMyICogcFMgPSAoVUlOVDMyKilzdGF0ZTsKKyAgICBVSU5UMzIgdCwgeDAsIHgxOworICAgIGludCBpOworICAgIGZvciAoaSA9IGxhbmVDb3VudC0xOyBpID49IDA7IC0taSkgeworI2lmZGVmIE5PX01JU0FMSUdORURfQUNDRVNTRVMKKyAgICAgICAgVUlOVDMyIGxvdzsKKyAgICAgICAgVUlOVDMyIGhpZ2g7CisgICAgICAgIG1lbWNweSgmbG93LCBwSSsrLCA0KTsKKyAgICAgICAgbWVtY3B5KCZoaWdoLCBwSSsrLCA0KTsKKyAgICAgICAgdG9CaXRJbnRlcmxlYXZpbmdBbmRYT1IobG93LCBoaWdoLCAqKHBTKyspLCAqKHBTKyspLCB0LCB4MCwgeDEpOworI2Vsc2UKKyAgICAgICAgdG9CaXRJbnRlcmxlYXZpbmdBbmRYT1IoKihwSSsrKSwgKihwSSsrKSwgKihwUysrKSwgKihwUysrKSwgdCwgeDAsIHgxKQorI2VuZGlmCisgICAgfQorI2Vsc2UKKyAgICB1bnNpZ25lZCBpbnQgbGFuZVBvc2l0aW9uOworICAgIGZvcihsYW5lUG9zaXRpb249MDsgbGFuZVBvc2l0aW9uPGxhbmVDb3VudDsgbGFuZVBvc2l0aW9uKyspIHsKKyAgICAgICAgVUlOVDggbGFuZUFzQnl0ZXNbOF07CisgICAgICAgIFVJTlQzMiBsb3csIGhpZ2gsIHRlbXAsIHRlbXAwLCB0ZW1wMTsKKyAgICAgICAgVUlOVDMyICpzdGF0ZUFzSGFsZkxhbmVzOworICAgICAgICBtZW1jcHkobGFuZUFzQnl0ZXMsIGRhdGErbGFuZVBvc2l0aW9uKjgsIDgpOworICAgICAgICBsb3cgPSBsYW5lQXNCeXRlc1swXQorICAgICAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbMV0pIDw8IDgpCisgICAgICAgICAgICB8ICgoVUlOVDMyKShsYW5lQXNCeXRlc1syXSkgPDwgMTYpCisgICAgICAgICAgICB8ICgoVUlOVDMyKShsYW5lQXNCeXRlc1szXSkgPDwgMjQpOworICAgICAgICBoaWdoID0gbGFuZUFzQnl0ZXNbNF0KKyAgICAgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzVdKSA8PCA4KQorICAgICAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbNl0pIDw8IDE2KQorICAgICAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbN10pIDw8IDI0KTsKKyAgICAgICAgc3RhdGVBc0hhbGZMYW5lcyA9IChVSU5UMzIqKXN0YXRlOworICAgICAgICB0b0JpdEludGVybGVhdmluZ0FuZFhPUihsb3csIGhpZ2gsIHN0YXRlQXNIYWxmTGFuZXNbbGFuZVBvc2l0aW9uKjIrMF0sIHN0YXRlQXNIYWxmTGFuZXNbbGFuZVBvc2l0aW9uKjIrMV0sIHRlbXAsIHRlbXAwLCB0ZW1wMSk7CisgICAgfQorI2VuZGlmCit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9BZGRCeXRlcyh2b2lkICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCkKK3sKKyAgICBTblBfQWRkQnl0ZXMoc3RhdGUsIGRhdGEsIG9mZnNldCwgbGVuZ3RoLCBLZWNjYWtQMTYwMF9BZGRMYW5lcywgS2VjY2FrUDE2MDBfQWRkQnl0ZXNJbkxhbmUsIDgpOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfT3ZlcndyaXRlQnl0ZXNJbkxhbmUodm9pZCAqc3RhdGUsIHVuc2lnbmVkIGludCBsYW5lUG9zaXRpb24sIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpCit7CisgICAgS2VjY2FrUDE2MDBfU2V0Qnl0ZXNJbkxhbmVUb1plcm8oc3RhdGUsIGxhbmVQb3NpdGlvbiwgb2Zmc2V0LCBsZW5ndGgpOworICAgIEtlY2Nha1AxNjAwX0FkZEJ5dGVzSW5MYW5lKHN0YXRlLCBsYW5lUG9zaXRpb24sIGRhdGEsIG9mZnNldCwgbGVuZ3RoKTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX092ZXJ3cml0ZUxhbmVzKHZvaWQgKnN0YXRlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgbGFuZUNvdW50KQoreworI2lmIChQTEFURk9STV9CWVRFX09SREVSID09IElTX0xJVFRMRV9FTkRJQU4pCisgICAgY29uc3QgVUlOVDMyICogcEkgPSAoY29uc3QgVUlOVDMyICopZGF0YTsKKyAgICBVSU5UMzIgKiBwUyA9IChVSU5UMzIgKilzdGF0ZTsKKyAgICBVSU5UMzIgdCwgeDAsIHgxOworICAgIGludCBpOworICAgIGZvciAoaSA9IGxhbmVDb3VudC0xOyBpID49IDA7IC0taSkgeworI2lmZGVmIE5PX01JU0FMSUdORURfQUNDRVNTRVMKKyAgICAgICAgVUlOVDMyIGxvdzsKKyAgICAgICAgVUlOVDMyIGhpZ2g7CisgICAgICAgIG1lbWNweSgmbG93LCBwSSsrLCA0KTsKKyAgICAgICAgbWVtY3B5KCZoaWdoLCBwSSsrLCA0KTsKKyAgICAgICAgdG9CaXRJbnRlcmxlYXZpbmdBbmRTZXQobG93LCBoaWdoLCAqKHBTKyspLCAqKHBTKyspLCB0LCB4MCwgeDEpOworI2Vsc2UKKyAgICAgICAgdG9CaXRJbnRlcmxlYXZpbmdBbmRTZXQoKihwSSsrKSwgKihwSSsrKSwgKihwUysrKSwgKihwUysrKSwgdCwgeDAsIHgxKQorI2VuZGlmCisgICAgfQorI2Vsc2UKKyAgICB1bnNpZ25lZCBpbnQgbGFuZVBvc2l0aW9uOworICAgIGZvcihsYW5lUG9zaXRpb249MDsgbGFuZVBvc2l0aW9uPGxhbmVDb3VudDsgbGFuZVBvc2l0aW9uKyspIHsKKyAgICAgICAgVUlOVDggbGFuZUFzQnl0ZXNbOF07CisgICAgICAgIFVJTlQzMiBsb3csIGhpZ2gsIHRlbXAsIHRlbXAwLCB0ZW1wMTsKKyAgICAgICAgVUlOVDMyICpzdGF0ZUFzSGFsZkxhbmVzOworICAgICAgICBtZW1jcHkobGFuZUFzQnl0ZXMsIGRhdGErbGFuZVBvc2l0aW9uKjgsIDgpOworICAgICAgICBsb3cgPSBsYW5lQXNCeXRlc1swXQorICAgICAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbMV0pIDw8IDgpCisgICAgICAgICAgICB8ICgoVUlOVDMyKShsYW5lQXNCeXRlc1syXSkgPDwgMTYpCisgICAgICAgICAgICB8ICgoVUlOVDMyKShsYW5lQXNCeXRlc1szXSkgPDwgMjQpOworICAgICAgICBoaWdoID0gbGFuZUFzQnl0ZXNbNF0KKyAgICAgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzVdKSA8PCA4KQorICAgICAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbNl0pIDw8IDE2KQorICAgICAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbN10pIDw8IDI0KTsKKyAgICAgICAgc3RhdGVBc0hhbGZMYW5lcyA9IChVSU5UMzIqKXN0YXRlOworICAgICAgICB0b0JpdEludGVybGVhdmluZ0FuZFNldChsb3csIGhpZ2gsIHN0YXRlQXNIYWxmTGFuZXNbbGFuZVBvc2l0aW9uKjIrMF0sIHN0YXRlQXNIYWxmTGFuZXNbbGFuZVBvc2l0aW9uKjIrMV0sIHRlbXAsIHRlbXAwLCB0ZW1wMSk7CisgICAgfQorI2VuZGlmCit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9PdmVyd3JpdGVCeXRlcyh2b2lkICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCkKK3sKKyAgICBTblBfT3ZlcndyaXRlQnl0ZXMoc3RhdGUsIGRhdGEsIG9mZnNldCwgbGVuZ3RoLCBLZWNjYWtQMTYwMF9PdmVyd3JpdGVMYW5lcywgS2VjY2FrUDE2MDBfT3ZlcndyaXRlQnl0ZXNJbkxhbmUsIDgpOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfT3ZlcndyaXRlV2l0aFplcm9lcyh2b2lkICpzdGF0ZSwgdW5zaWduZWQgaW50IGJ5dGVDb3VudCkKK3sKKyAgICBVSU5UMzIgKnN0YXRlQXNIYWxmTGFuZXMgPSAoVUlOVDMyKilzdGF0ZTsKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIGZvcihpPTA7IGk8Ynl0ZUNvdW50Lzg7IGkrKykgeworICAgICAgICBzdGF0ZUFzSGFsZkxhbmVzW2kqMiswXSA9IDA7CisgICAgICAgIHN0YXRlQXNIYWxmTGFuZXNbaSoyKzFdID0gMDsKKyAgICB9CisgICAgaWYgKGJ5dGVDb3VudCU4ICE9IDApCisgICAgICAgIEtlY2Nha1AxNjAwX1NldEJ5dGVzSW5MYW5lVG9aZXJvKHN0YXRlLCBieXRlQ291bnQvOCwgMCwgYnl0ZUNvdW50JTgpOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfRXh0cmFjdEJ5dGVzSW5MYW5lKGNvbnN0IHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBpbnQgbGFuZVBvc2l0aW9uLCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworICAgIFVJTlQzMiAqc3RhdGVBc0hhbGZMYW5lcyA9IChVSU5UMzIqKXN0YXRlOworICAgIFVJTlQzMiBsb3csIGhpZ2gsIHRlbXAsIHRlbXAwLCB0ZW1wMTsKKyAgICBVSU5UOCBsYW5lQXNCeXRlc1s4XTsKKworICAgIGZyb21CaXRJbnRlcmxlYXZpbmcoc3RhdGVBc0hhbGZMYW5lc1tsYW5lUG9zaXRpb24qMl0sIHN0YXRlQXNIYWxmTGFuZXNbbGFuZVBvc2l0aW9uKjIrMV0sIGxvdywgaGlnaCwgdGVtcCwgdGVtcDAsIHRlbXAxKTsKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorICAgICooKFVJTlQzMiopKGxhbmVBc0J5dGVzKzApKSA9IGxvdzsKKyAgICAqKChVSU5UMzIqKShsYW5lQXNCeXRlcys0KSkgPSBoaWdoOworI2Vsc2UKKyAgICBsYW5lQXNCeXRlc1swXSA9IGxvdyAmIDB4RkY7CisgICAgbGFuZUFzQnl0ZXNbMV0gPSAobG93ID4+IDgpICYgMHhGRjsKKyAgICBsYW5lQXNCeXRlc1syXSA9IChsb3cgPj4gMTYpICYgMHhGRjsKKyAgICBsYW5lQXNCeXRlc1szXSA9IChsb3cgPj4gMjQpICYgMHhGRjsKKyAgICBsYW5lQXNCeXRlc1s0XSA9IGhpZ2ggJiAweEZGOworICAgIGxhbmVBc0J5dGVzWzVdID0gKGhpZ2ggPj4gOCkgJiAweEZGOworICAgIGxhbmVBc0J5dGVzWzZdID0gKGhpZ2ggPj4gMTYpICYgMHhGRjsKKyAgICBsYW5lQXNCeXRlc1s3XSA9IChoaWdoID4+IDI0KSAmIDB4RkY7CisjZW5kaWYKKyAgICBtZW1jcHkoZGF0YSwgbGFuZUFzQnl0ZXMrb2Zmc2V0LCBsZW5ndGgpOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfRXh0cmFjdExhbmVzKGNvbnN0IHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgbGFuZUNvdW50KQoreworI2lmIChQTEFURk9STV9CWVRFX09SREVSID09IElTX0xJVFRMRV9FTkRJQU4pCisgICAgVUlOVDMyICogcEkgPSAoVUlOVDMyICopZGF0YTsKKyAgICBjb25zdCBVSU5UMzIgKiBwUyA9ICggY29uc3QgVUlOVDMyICopc3RhdGU7CisgICAgVUlOVDMyIHQsIHgwLCB4MTsKKyAgICBpbnQgaTsKKyAgICBmb3IgKGkgPSBsYW5lQ291bnQtMTsgaSA+PSAwOyAtLWkpIHsKKyNpZmRlZiBOT19NSVNBTElHTkVEX0FDQ0VTU0VTCisgICAgICAgIFVJTlQzMiBsb3c7CisgICAgICAgIFVJTlQzMiBoaWdoOworICAgICAgICBmcm9tQml0SW50ZXJsZWF2aW5nKCoocFMrKyksICoocFMrKyksIGxvdywgaGlnaCwgdCwgeDAsIHgxKTsKKyAgICAgICAgbWVtY3B5KHBJKyssICZsb3csIDQpOworICAgICAgICBtZW1jcHkocEkrKywgJmhpZ2gsIDQpOworI2Vsc2UKKyAgICAgICAgZnJvbUJpdEludGVybGVhdmluZygqKHBTKyspLCAqKHBTKyspLCAqKHBJKyspLCAqKHBJKyspLCB0LCB4MCwgeDEpCisjZW5kaWYKKyAgICB9CisjZWxzZQorICAgIHVuc2lnbmVkIGludCBsYW5lUG9zaXRpb247CisgICAgZm9yKGxhbmVQb3NpdGlvbj0wOyBsYW5lUG9zaXRpb248bGFuZUNvdW50OyBsYW5lUG9zaXRpb24rKykgeworICAgICAgICBVSU5UMzIgKnN0YXRlQXNIYWxmTGFuZXMgPSAoVUlOVDMyKilzdGF0ZTsKKyAgICAgICAgVUlOVDMyIGxvdywgaGlnaCwgdGVtcCwgdGVtcDAsIHRlbXAxOworICAgICAgICBVSU5UOCBsYW5lQXNCeXRlc1s4XTsKKyAgICAgICAgZnJvbUJpdEludGVybGVhdmluZyhzdGF0ZUFzSGFsZkxhbmVzW2xhbmVQb3NpdGlvbioyXSwgc3RhdGVBc0hhbGZMYW5lc1tsYW5lUG9zaXRpb24qMisxXSwgbG93LCBoaWdoLCB0ZW1wLCB0ZW1wMCwgdGVtcDEpOworICAgICAgICBsYW5lQXNCeXRlc1swXSA9IGxvdyAmIDB4RkY7CisgICAgICAgIGxhbmVBc0J5dGVzWzFdID0gKGxvdyA+PiA4KSAmIDB4RkY7CisgICAgICAgIGxhbmVBc0J5dGVzWzJdID0gKGxvdyA+PiAxNikgJiAweEZGOworICAgICAgICBsYW5lQXNCeXRlc1szXSA9IChsb3cgPj4gMjQpICYgMHhGRjsKKyAgICAgICAgbGFuZUFzQnl0ZXNbNF0gPSBoaWdoICYgMHhGRjsKKyAgICAgICAgbGFuZUFzQnl0ZXNbNV0gPSAoaGlnaCA+PiA4KSAmIDB4RkY7CisgICAgICAgIGxhbmVBc0J5dGVzWzZdID0gKGhpZ2ggPj4gMTYpICYgMHhGRjsKKyAgICAgICAgbGFuZUFzQnl0ZXNbN10gPSAoaGlnaCA+PiAyNCkgJiAweEZGOworICAgICAgICBtZW1jcHkoZGF0YStsYW5lUG9zaXRpb24qOCwgbGFuZUFzQnl0ZXMsIDgpOworICAgIH0KKyNlbmRpZgorfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfRXh0cmFjdEJ5dGVzKGNvbnN0IHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworICAgIFNuUF9FeHRyYWN0Qnl0ZXMoc3RhdGUsIGRhdGEsIG9mZnNldCwgbGVuZ3RoLCBLZWNjYWtQMTYwMF9FeHRyYWN0TGFuZXMsIEtlY2Nha1AxNjAwX0V4dHJhY3RCeXRlc0luTGFuZSwgOCk7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9FeHRyYWN0QW5kQWRkQnl0ZXNJbkxhbmUoY29uc3Qgdm9pZCAqc3RhdGUsIHVuc2lnbmVkIGludCBsYW5lUG9zaXRpb24sIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmlucHV0LCB1bnNpZ25lZCBjaGFyICpvdXRwdXQsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpCit7CisgICAgVUlOVDMyICpzdGF0ZUFzSGFsZkxhbmVzID0gKFVJTlQzMiopc3RhdGU7CisgICAgVUlOVDMyIGxvdywgaGlnaCwgdGVtcCwgdGVtcDAsIHRlbXAxOworICAgIFVJTlQ4IGxhbmVBc0J5dGVzWzhdOworICAgIHVuc2lnbmVkIGludCBpOworCisgICAgZnJvbUJpdEludGVybGVhdmluZyhzdGF0ZUFzSGFsZkxhbmVzW2xhbmVQb3NpdGlvbioyXSwgc3RhdGVBc0hhbGZMYW5lc1tsYW5lUG9zaXRpb24qMisxXSwgbG93LCBoaWdoLCB0ZW1wLCB0ZW1wMCwgdGVtcDEpOworI2lmIChQTEFURk9STV9CWVRFX09SREVSID09IElTX0xJVFRMRV9FTkRJQU4pCisgICAgKigoVUlOVDMyKikobGFuZUFzQnl0ZXMrMCkpID0gbG93OworICAgICooKFVJTlQzMiopKGxhbmVBc0J5dGVzKzQpKSA9IGhpZ2g7CisjZWxzZQorICAgIGxhbmVBc0J5dGVzWzBdID0gbG93ICYgMHhGRjsKKyAgICBsYW5lQXNCeXRlc1sxXSA9IChsb3cgPj4gOCkgJiAweEZGOworICAgIGxhbmVBc0J5dGVzWzJdID0gKGxvdyA+PiAxNikgJiAweEZGOworICAgIGxhbmVBc0J5dGVzWzNdID0gKGxvdyA+PiAyNCkgJiAweEZGOworICAgIGxhbmVBc0J5dGVzWzRdID0gaGlnaCAmIDB4RkY7CisgICAgbGFuZUFzQnl0ZXNbNV0gPSAoaGlnaCA+PiA4KSAmIDB4RkY7CisgICAgbGFuZUFzQnl0ZXNbNl0gPSAoaGlnaCA+PiAxNikgJiAweEZGOworICAgIGxhbmVBc0J5dGVzWzddID0gKGhpZ2ggPj4gMjQpICYgMHhGRjsKKyNlbmRpZgorICAgIGZvcihpPTA7IGk8bGVuZ3RoOyBpKyspCisgICAgICAgIG91dHB1dFtpXSA9IGlucHV0W2ldIF4gbGFuZUFzQnl0ZXNbb2Zmc2V0K2ldOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfRXh0cmFjdEFuZEFkZExhbmVzKGNvbnN0IHZvaWQgKnN0YXRlLCBjb25zdCB1bnNpZ25lZCBjaGFyICppbnB1dCwgdW5zaWduZWQgY2hhciAqb3V0cHV0LCB1bnNpZ25lZCBpbnQgbGFuZUNvdW50KQoreworI2lmIChQTEFURk9STV9CWVRFX09SREVSID09IElTX0xJVFRMRV9FTkRJQU4pCisgICAgY29uc3QgVUlOVDMyICogcEkgPSAoY29uc3QgVUlOVDMyICopaW5wdXQ7CisgICAgVUlOVDMyICogcE8gPSAoVUlOVDMyICopb3V0cHV0OworICAgIGNvbnN0IFVJTlQzMiAqIHBTID0gKGNvbnN0IFVJTlQzMiAqKXN0YXRlOworICAgIFVJTlQzMiB0LCB4MCwgeDE7CisgICAgaW50IGk7CisgICAgZm9yIChpID0gbGFuZUNvdW50LTE7IGkgPj0gMDsgLS1pKSB7CisjaWZkZWYgTk9fTUlTQUxJR05FRF9BQ0NFU1NFUworICAgICAgICBVSU5UMzIgbG93OworICAgICAgICBVSU5UMzIgaGlnaDsKKyAgICAgICAgZnJvbUJpdEludGVybGVhdmluZygqKHBTKyspLCAqKHBTKyspLCBsb3csIGhpZ2gsIHQsIHgwLCB4MSk7CisgICAgICAgICoocE8rKykgPSAqKHBJKyspIF4gbG93OworICAgICAgICAqKHBPKyspID0gKihwSSsrKSBeIGhpZ2g7CisjZWxzZQorICAgICAgICBmcm9tQml0SW50ZXJsZWF2aW5nQW5kWE9SKCoocFMrKyksICoocFMrKyksICoocEkrKyksICoocEkrKyksICoocE8rKyksICoocE8rKyksIHQsIHgwLCB4MSkKKyNlbmRpZgorICAgIH0KKyNlbHNlCisgICAgdW5zaWduZWQgaW50IGxhbmVQb3NpdGlvbjsKKyAgICBmb3IobGFuZVBvc2l0aW9uPTA7IGxhbmVQb3NpdGlvbjxsYW5lQ291bnQ7IGxhbmVQb3NpdGlvbisrKSB7CisgICAgICAgIFVJTlQzMiAqc3RhdGVBc0hhbGZMYW5lcyA9IChVSU5UMzIqKXN0YXRlOworICAgICAgICBVSU5UMzIgbG93LCBoaWdoLCB0ZW1wLCB0ZW1wMCwgdGVtcDE7CisgICAgICAgIFVJTlQ4IGxhbmVBc0J5dGVzWzhdOworICAgICAgICBmcm9tQml0SW50ZXJsZWF2aW5nKHN0YXRlQXNIYWxmTGFuZXNbbGFuZVBvc2l0aW9uKjJdLCBzdGF0ZUFzSGFsZkxhbmVzW2xhbmVQb3NpdGlvbioyKzFdLCBsb3csIGhpZ2gsIHRlbXAsIHRlbXAwLCB0ZW1wMSk7CisgICAgICAgIGxhbmVBc0J5dGVzWzBdID0gbG93ICYgMHhGRjsKKyAgICAgICAgbGFuZUFzQnl0ZXNbMV0gPSAobG93ID4+IDgpICYgMHhGRjsKKyAgICAgICAgbGFuZUFzQnl0ZXNbMl0gPSAobG93ID4+IDE2KSAmIDB4RkY7CisgICAgICAgIGxhbmVBc0J5dGVzWzNdID0gKGxvdyA+PiAyNCkgJiAweEZGOworICAgICAgICBsYW5lQXNCeXRlc1s0XSA9IGhpZ2ggJiAweEZGOworICAgICAgICBsYW5lQXNCeXRlc1s1XSA9IChoaWdoID4+IDgpICYgMHhGRjsKKyAgICAgICAgbGFuZUFzQnl0ZXNbNl0gPSAoaGlnaCA+PiAxNikgJiAweEZGOworICAgICAgICBsYW5lQXNCeXRlc1s3XSA9IChoaWdoID4+IDI0KSAmIDB4RkY7CisgICAgICAgICgoVUlOVDMyKikob3V0cHV0K2xhbmVQb3NpdGlvbio4KSlbMF0gPSAoKFVJTlQzMiopKGlucHV0K2xhbmVQb3NpdGlvbio4KSlbMF0gXiAoKihjb25zdCBVSU5UMzIqKShsYW5lQXNCeXRlcyswKSk7CisgICAgICAgICgoVUlOVDMyKikob3V0cHV0K2xhbmVQb3NpdGlvbio4KSlbMV0gPSAoKFVJTlQzMiopKGlucHV0K2xhbmVQb3NpdGlvbio4KSlbMF0gXiAoKihjb25zdCBVSU5UMzIqKShsYW5lQXNCeXRlcys0KSk7CisgICAgfQorI2VuZGlmCit9CisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfRXh0cmFjdEFuZEFkZEJ5dGVzKGNvbnN0IHZvaWQgKnN0YXRlLCBjb25zdCB1bnNpZ25lZCBjaGFyICppbnB1dCwgdW5zaWduZWQgY2hhciAqb3V0cHV0LCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworICAgIFNuUF9FeHRyYWN0QW5kQWRkQnl0ZXMoc3RhdGUsIGlucHV0LCBvdXRwdXQsIG9mZnNldCwgbGVuZ3RoLCBLZWNjYWtQMTYwMF9FeHRyYWN0QW5kQWRkTGFuZXMsIEtlY2Nha1AxNjAwX0V4dHJhY3RBbmRBZGRCeXRlc0luTGFuZSwgOCk7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworc3RhdGljIGNvbnN0IFVJTlQzMiBLZWNjYWtGMTYwMFJvdW5kQ29uc3RhbnRzX2ludDJbMioyNCsxXSA9Cit7CisgICAgMHgwMDAwMDAwMVVMLCAgICAweDAwMDAwMDAwVUwsCisgICAgMHgwMDAwMDAwMFVMLCAgICAweDAwMDAwMDg5VUwsCisgICAgMHgwMDAwMDAwMFVMLCAgICAweDgwMDAwMDhiVUwsCisgICAgMHgwMDAwMDAwMFVMLCAgICAweDgwMDA4MDgwVUwsCisgICAgMHgwMDAwMDAwMVVMLCAgICAweDAwMDAwMDhiVUwsCisgICAgMHgwMDAwMDAwMVVMLCAgICAweDAwMDA4MDAwVUwsCisgICAgMHgwMDAwMDAwMVVMLCAgICAweDgwMDA4MDg4VUwsCisgICAgMHgwMDAwMDAwMVVMLCAgICAweDgwMDAwMDgyVUwsCisgICAgMHgwMDAwMDAwMFVMLCAgICAweDAwMDAwMDBiVUwsCisgICAgMHgwMDAwMDAwMFVMLCAgICAweDAwMDAwMDBhVUwsCisgICAgMHgwMDAwMDAwMVVMLCAgICAweDAwMDA4MDgyVUwsCisgICAgMHgwMDAwMDAwMFVMLCAgICAweDAwMDA4MDAzVUwsCisgICAgMHgwMDAwMDAwMVVMLCAgICAweDAwMDA4MDhiVUwsCisgICAgMHgwMDAwMDAwMVVMLCAgICAweDgwMDAwMDBiVUwsCisgICAgMHgwMDAwMDAwMVVMLCAgICAweDgwMDAwMDhhVUwsCisgICAgMHgwMDAwMDAwMVVMLCAgICAweDgwMDAwMDgxVUwsCisgICAgMHgwMDAwMDAwMFVMLCAgICAweDgwMDAwMDgxVUwsCisgICAgMHgwMDAwMDAwMFVMLCAgICAweDgwMDAwMDA4VUwsCisgICAgMHgwMDAwMDAwMFVMLCAgICAweDAwMDAwMDgzVUwsCisgICAgMHgwMDAwMDAwMFVMLCAgICAweDgwMDA4MDAzVUwsCisgICAgMHgwMDAwMDAwMVVMLCAgICAweDgwMDA4MDg4VUwsCisgICAgMHgwMDAwMDAwMFVMLCAgICAweDgwMDAwMDg4VUwsCisgICAgMHgwMDAwMDAwMVVMLCAgICAweDAwMDA4MDAwVUwsCisgICAgMHgwMDAwMDAwMFVMLCAgICAweDgwMDA4MDgyVUwsCisgICAgMHgwMDAwMDBGRlVMCit9OworCisjZGVmaW5lIEtlY2Nha0F0b0Rfcm91bmQwKCkgXAorICAgICAgICBDeCA9IEFidTBeQWd1MF5Ba3UwXkFtdTBeQXN1MDsgXAorICAgICAgICBEdTEgPSBBYmUxXkFnZTFeQWtlMV5BbWUxXkFzZTE7IFwKKyAgICAgICAgRGEwID0gQ3heUk9MMzIoRHUxLCAxKTsgXAorICAgICAgICBDeiA9IEFidTFeQWd1MV5Ba3UxXkFtdTFeQXN1MTsgXAorICAgICAgICBEdTAgPSBBYmUwXkFnZTBeQWtlMF5BbWUwXkFzZTA7IFwKKyAgICAgICAgRGExID0gQ3peRHUwOyBcCitcCisgICAgICAgIEN3ID0gQWJpMF5BZ2kwXkFraTBeQW1pMF5Bc2kwOyBcCisgICAgICAgIERvMCA9IEN3XlJPTDMyKEN6LCAxKTsgXAorICAgICAgICBDeSA9IEFiaTFeQWdpMV5Ba2kxXkFtaTFeQXNpMTsgXAorICAgICAgICBEbzEgPSBDeV5DeDsgXAorXAorICAgICAgICBDeCA9IEFiYTBeQWdhMF5Ba2EwXkFtYTBeQXNhMDsgXAorICAgICAgICBEZTAgPSBDeF5ST0wzMihDeSwgMSk7IFwKKyAgICAgICAgQ3ogPSBBYmExXkFnYTFeQWthMV5BbWExXkFzYTE7IFwKKyAgICAgICAgRGUxID0gQ3peQ3c7IFwKK1wKKyAgICAgICAgQ3kgPSBBYm8xXkFnbzFeQWtvMV5BbW8xXkFzbzE7IFwKKyAgICAgICAgRGkwID0gRHUwXlJPTDMyKEN5LCAxKTsgXAorICAgICAgICBDdyA9IEFibzBeQWdvMF5Ba28wXkFtbzBeQXNvMDsgXAorICAgICAgICBEaTEgPSBEdTFeQ3c7IFwKK1wKKyAgICAgICAgRHUwID0gQ3deUk9MMzIoQ3osIDEpOyBcCisgICAgICAgIER1MSA9IEN5XkN4OyBcCisKKyNkZWZpbmUgS2VjY2FrQXRvRF9yb3VuZDEoKSBcCisgICAgICAgIEN4ID0gQXN1MF5BZ3UwXkFtdTBeQWJ1MV5Ba3UxOyBcCisgICAgICAgIER1MSA9IEFnZTFeQW1lMF5BYmUwXkFrZTFeQXNlMTsgXAorICAgICAgICBEYTAgPSBDeF5ST0wzMihEdTEsIDEpOyBcCisgICAgICAgIEN6ID0gQXN1MV5BZ3UxXkFtdTFeQWJ1MF5Ba3UwOyBcCisgICAgICAgIER1MCA9IEFnZTBeQW1lMV5BYmUxXkFrZTBeQXNlMDsgXAorICAgICAgICBEYTEgPSBDel5EdTA7IFwKK1wKKyAgICAgICAgQ3cgPSBBa2kxXkFzaTFeQWdpMF5BbWkxXkFiaTA7IFwKKyAgICAgICAgRG8wID0gQ3deUk9MMzIoQ3osIDEpOyBcCisgICAgICAgIEN5ID0gQWtpMF5Bc2kwXkFnaTFeQW1pMF5BYmkxOyBcCisgICAgICAgIERvMSA9IEN5XkN4OyBcCitcCisgICAgICAgIEN4ID0gQWJhMF5Ba2ExXkFzYTBeQWdhMF5BbWExOyBcCisgICAgICAgIERlMCA9IEN4XlJPTDMyKEN5LCAxKTsgXAorICAgICAgICBDeiA9IEFiYTFeQWthMF5Bc2ExXkFnYTFeQW1hMDsgXAorICAgICAgICBEZTEgPSBDel5DdzsgXAorXAorICAgICAgICBDeSA9IEFtbzBeQWJvMV5Ba28wXkFzbzFeQWdvMDsgXAorICAgICAgICBEaTAgPSBEdTBeUk9MMzIoQ3ksIDEpOyBcCisgICAgICAgIEN3ID0gQW1vMV5BYm8wXkFrbzFeQXNvMF5BZ28xOyBcCisgICAgICAgIERpMSA9IER1MV5DdzsgXAorXAorICAgICAgICBEdTAgPSBDd15ST0wzMihDeiwgMSk7IFwKKyAgICAgICAgRHUxID0gQ3leQ3g7IFwKKworI2RlZmluZSBLZWNjYWtBdG9EX3JvdW5kMigpIFwKKyAgICAgICAgQ3ggPSBBa3UxXkFndTBeQWJ1MV5Bc3UxXkFtdTE7IFwKKyAgICAgICAgRHUxID0gQW1lMF5Ba2UwXkFnZTBeQWJlMF5Bc2UxOyBcCisgICAgICAgIERhMCA9IEN4XlJPTDMyKER1MSwgMSk7IFwKKyAgICAgICAgQ3ogPSBBa3UwXkFndTFeQWJ1MF5Bc3UwXkFtdTA7IFwKKyAgICAgICAgRHUwID0gQW1lMV5Ba2UxXkFnZTFeQWJlMV5Bc2UwOyBcCisgICAgICAgIERhMSA9IEN6XkR1MDsgXAorXAorICAgICAgICBDdyA9IEFnaTFeQWJpMV5Bc2kxXkFtaTBeQWtpMTsgXAorICAgICAgICBEbzAgPSBDd15ST0wzMihDeiwgMSk7IFwKKyAgICAgICAgQ3kgPSBBZ2kwXkFiaTBeQXNpMF5BbWkxXkFraTA7IFwKKyAgICAgICAgRG8xID0gQ3leQ3g7IFwKK1wKKyAgICAgICAgQ3ggPSBBYmEwXkFzYTFeQW1hMV5Ba2ExXkFnYTE7IFwKKyAgICAgICAgRGUwID0gQ3heUk9MMzIoQ3ksIDEpOyBcCisgICAgICAgIEN6ID0gQWJhMV5Bc2EwXkFtYTBeQWthMF5BZ2EwOyBcCisgICAgICAgIERlMSA9IEN6XkN3OyBcCitcCisgICAgICAgIEN5ID0gQXNvMF5BbW8wXkFrbzFeQWdvMF5BYm8wOyBcCisgICAgICAgIERpMCA9IER1MF5ST0wzMihDeSwgMSk7IFwKKyAgICAgICAgQ3cgPSBBc28xXkFtbzFeQWtvMF5BZ28xXkFibzE7IFwKKyAgICAgICAgRGkxID0gRHUxXkN3OyBcCitcCisgICAgICAgIER1MCA9IEN3XlJPTDMyKEN6LCAxKTsgXAorICAgICAgICBEdTEgPSBDeV5DeDsgXAorCisjZGVmaW5lIEtlY2Nha0F0b0Rfcm91bmQzKCkgXAorICAgICAgICBDeCA9IEFtdTFeQWd1MF5Bc3UxXkFrdTBeQWJ1MDsgXAorICAgICAgICBEdTEgPSBBa2UwXkFiZTFeQW1lMV5BZ2UwXkFzZTE7IFwKKyAgICAgICAgRGEwID0gQ3heUk9MMzIoRHUxLCAxKTsgXAorICAgICAgICBDeiA9IEFtdTBeQWd1MV5Bc3UwXkFrdTFeQWJ1MTsgXAorICAgICAgICBEdTAgPSBBa2UxXkFiZTBeQW1lMF5BZ2UxXkFzZTA7IFwKKyAgICAgICAgRGExID0gQ3peRHUwOyBcCitcCisgICAgICAgIEN3ID0gQXNpMF5Ba2kwXkFiaTFeQW1pMV5BZ2kxOyBcCisgICAgICAgIERvMCA9IEN3XlJPTDMyKEN6LCAxKTsgXAorICAgICAgICBDeSA9IEFzaTFeQWtpMV5BYmkwXkFtaTBeQWdpMDsgXAorICAgICAgICBEbzEgPSBDeV5DeDsgXAorXAorICAgICAgICBDeCA9IEFiYTBeQW1hMF5BZ2ExXkFzYTFeQWthMDsgXAorICAgICAgICBEZTAgPSBDeF5ST0wzMihDeSwgMSk7IFwKKyAgICAgICAgQ3ogPSBBYmExXkFtYTFeQWdhMF5Bc2EwXkFrYTE7IFwKKyAgICAgICAgRGUxID0gQ3peQ3c7IFwKK1wKKyAgICAgICAgQ3kgPSBBZ28xXkFzbzBeQWtvMF5BYm8wXkFtbzE7IFwKKyAgICAgICAgRGkwID0gRHUwXlJPTDMyKEN5LCAxKTsgXAorICAgICAgICBDdyA9IEFnbzBeQXNvMV5Ba28xXkFibzFeQW1vMDsgXAorICAgICAgICBEaTEgPSBEdTFeQ3c7IFwKK1wKKyAgICAgICAgRHUwID0gQ3deUk9MMzIoQ3osIDEpOyBcCisgICAgICAgIER1MSA9IEN5XkN4OyBcCisKK3ZvaWQgS2VjY2FrUDE2MDBfUGVybXV0ZV9Ocm91bmRzKHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBpbnQgblJvdW5kcykKK3sKKyAgICB7CisgICAgICAgIFVJTlQzMiBEYTAsIERlMCwgRGkwLCBEbzAsIER1MDsKKyAgICAgICAgVUlOVDMyIERhMSwgRGUxLCBEaTEsIERvMSwgRHUxOworICAgICAgICBVSU5UMzIgQ2EwLCBDZTAsIENpMCwgQ28wLCBDdTA7CisgICAgICAgIFVJTlQzMiBDeCwgQ3ksIEN6LCBDdzsKKyAgICAgICAgI2RlZmluZSBCYSBDYTAKKyAgICAgICAgI2RlZmluZSBCZSBDZTAKKyAgICAgICAgI2RlZmluZSBCaSBDaTAKKyAgICAgICAgI2RlZmluZSBCbyBDbzAKKyAgICAgICAgI2RlZmluZSBCdSBDdTAKKyAgICAgICAgY29uc3QgVUlOVDMyICpwUm91bmRDb25zdGFudHMgPSBLZWNjYWtGMTYwMFJvdW5kQ29uc3RhbnRzX2ludDIrKDI0LW5Sb3VuZHMpKjI7CisgICAgICAgIFVJTlQzMiAqc3RhdGVBc0hhbGZMYW5lcyA9IChVSU5UMzIqKXN0YXRlOworICAgICAgICAjZGVmaW5lIEFiYTAgc3RhdGVBc0hhbGZMYW5lc1sgMF0KKyAgICAgICAgI2RlZmluZSBBYmExIHN0YXRlQXNIYWxmTGFuZXNbIDFdCisgICAgICAgICNkZWZpbmUgQWJlMCBzdGF0ZUFzSGFsZkxhbmVzWyAyXQorICAgICAgICAjZGVmaW5lIEFiZTEgc3RhdGVBc0hhbGZMYW5lc1sgM10KKyAgICAgICAgI2RlZmluZSBBYmkwIHN0YXRlQXNIYWxmTGFuZXNbIDRdCisgICAgICAgICNkZWZpbmUgQWJpMSBzdGF0ZUFzSGFsZkxhbmVzWyA1XQorICAgICAgICAjZGVmaW5lIEFibzAgc3RhdGVBc0hhbGZMYW5lc1sgNl0KKyAgICAgICAgI2RlZmluZSBBYm8xIHN0YXRlQXNIYWxmTGFuZXNbIDddCisgICAgICAgICNkZWZpbmUgQWJ1MCBzdGF0ZUFzSGFsZkxhbmVzWyA4XQorICAgICAgICAjZGVmaW5lIEFidTEgc3RhdGVBc0hhbGZMYW5lc1sgOV0KKyAgICAgICAgI2RlZmluZSBBZ2EwIHN0YXRlQXNIYWxmTGFuZXNbMTBdCisgICAgICAgICNkZWZpbmUgQWdhMSBzdGF0ZUFzSGFsZkxhbmVzWzExXQorICAgICAgICAjZGVmaW5lIEFnZTAgc3RhdGVBc0hhbGZMYW5lc1sxMl0KKyAgICAgICAgI2RlZmluZSBBZ2UxIHN0YXRlQXNIYWxmTGFuZXNbMTNdCisgICAgICAgICNkZWZpbmUgQWdpMCBzdGF0ZUFzSGFsZkxhbmVzWzE0XQorICAgICAgICAjZGVmaW5lIEFnaTEgc3RhdGVBc0hhbGZMYW5lc1sxNV0KKyAgICAgICAgI2RlZmluZSBBZ28wIHN0YXRlQXNIYWxmTGFuZXNbMTZdCisgICAgICAgICNkZWZpbmUgQWdvMSBzdGF0ZUFzSGFsZkxhbmVzWzE3XQorICAgICAgICAjZGVmaW5lIEFndTAgc3RhdGVBc0hhbGZMYW5lc1sxOF0KKyAgICAgICAgI2RlZmluZSBBZ3UxIHN0YXRlQXNIYWxmTGFuZXNbMTldCisgICAgICAgICNkZWZpbmUgQWthMCBzdGF0ZUFzSGFsZkxhbmVzWzIwXQorICAgICAgICAjZGVmaW5lIEFrYTEgc3RhdGVBc0hhbGZMYW5lc1syMV0KKyAgICAgICAgI2RlZmluZSBBa2UwIHN0YXRlQXNIYWxmTGFuZXNbMjJdCisgICAgICAgICNkZWZpbmUgQWtlMSBzdGF0ZUFzSGFsZkxhbmVzWzIzXQorICAgICAgICAjZGVmaW5lIEFraTAgc3RhdGVBc0hhbGZMYW5lc1syNF0KKyAgICAgICAgI2RlZmluZSBBa2kxIHN0YXRlQXNIYWxmTGFuZXNbMjVdCisgICAgICAgICNkZWZpbmUgQWtvMCBzdGF0ZUFzSGFsZkxhbmVzWzI2XQorICAgICAgICAjZGVmaW5lIEFrbzEgc3RhdGVBc0hhbGZMYW5lc1syN10KKyAgICAgICAgI2RlZmluZSBBa3UwIHN0YXRlQXNIYWxmTGFuZXNbMjhdCisgICAgICAgICNkZWZpbmUgQWt1MSBzdGF0ZUFzSGFsZkxhbmVzWzI5XQorICAgICAgICAjZGVmaW5lIEFtYTAgc3RhdGVBc0hhbGZMYW5lc1szMF0KKyAgICAgICAgI2RlZmluZSBBbWExIHN0YXRlQXNIYWxmTGFuZXNbMzFdCisgICAgICAgICNkZWZpbmUgQW1lMCBzdGF0ZUFzSGFsZkxhbmVzWzMyXQorICAgICAgICAjZGVmaW5lIEFtZTEgc3RhdGVBc0hhbGZMYW5lc1szM10KKyAgICAgICAgI2RlZmluZSBBbWkwIHN0YXRlQXNIYWxmTGFuZXNbMzRdCisgICAgICAgICNkZWZpbmUgQW1pMSBzdGF0ZUFzSGFsZkxhbmVzWzM1XQorICAgICAgICAjZGVmaW5lIEFtbzAgc3RhdGVBc0hhbGZMYW5lc1szNl0KKyAgICAgICAgI2RlZmluZSBBbW8xIHN0YXRlQXNIYWxmTGFuZXNbMzddCisgICAgICAgICNkZWZpbmUgQW11MCBzdGF0ZUFzSGFsZkxhbmVzWzM4XQorICAgICAgICAjZGVmaW5lIEFtdTEgc3RhdGVBc0hhbGZMYW5lc1szOV0KKyAgICAgICAgI2RlZmluZSBBc2EwIHN0YXRlQXNIYWxmTGFuZXNbNDBdCisgICAgICAgICNkZWZpbmUgQXNhMSBzdGF0ZUFzSGFsZkxhbmVzWzQxXQorICAgICAgICAjZGVmaW5lIEFzZTAgc3RhdGVBc0hhbGZMYW5lc1s0Ml0KKyAgICAgICAgI2RlZmluZSBBc2UxIHN0YXRlQXNIYWxmTGFuZXNbNDNdCisgICAgICAgICNkZWZpbmUgQXNpMCBzdGF0ZUFzSGFsZkxhbmVzWzQ0XQorICAgICAgICAjZGVmaW5lIEFzaTEgc3RhdGVBc0hhbGZMYW5lc1s0NV0KKyAgICAgICAgI2RlZmluZSBBc28wIHN0YXRlQXNIYWxmTGFuZXNbNDZdCisgICAgICAgICNkZWZpbmUgQXNvMSBzdGF0ZUFzSGFsZkxhbmVzWzQ3XQorICAgICAgICAjZGVmaW5lIEFzdTAgc3RhdGVBc0hhbGZMYW5lc1s0OF0KKyAgICAgICAgI2RlZmluZSBBc3UxIHN0YXRlQXNIYWxmTGFuZXNbNDldCisKKyAgICAgICAgZG8KKyAgICAgICAgeworICAgICAgICAgICAgLyogLS0tIENvZGUgZm9yIDQgcm91bmRzICovCisKKyAgICAgICAgICAgIC8qIC0tLSB1c2luZyBmYWN0b3IgMiBpbnRlcmxlYXZpbmcsIDY0LWJpdCBsYW5lcyBtYXBwZWQgdG8gMzItYml0IHdvcmRzICovCisKKyAgICAgICAgICAgIEtlY2Nha0F0b0Rfcm91bmQwKCk7CisKKyAgICAgICAgICAgIEJhID0gKEFiYTBeRGEwKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFnZTBeRGUwKSwgMjIpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWtpMV5EaTEpLCAyMik7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBbW8xXkRvMSksIDExKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFzdTBeRHUwKSwgNyk7CisgICAgICAgICAgICBBYmEwID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFiYTAgXj0gKihwUm91bmRDb25zdGFudHMrKyk7CisgICAgICAgICAgICBBZ2UwID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFraTEgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQW1vMSA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBc3UwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQmEgPSAoQWJhMV5EYTEpOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWdlMV5EZTEpLCAyMik7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBa2kwXkRpMCksIDIxKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFtbzBeRG8wKSwgMTApOworICAgICAgICAgICAgQnUgPSBST0wzMigoQXN1MV5EdTEpLCA3KTsKKyAgICAgICAgICAgIEFiYTEgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWJhMSBePSAqKHBSb3VuZENvbnN0YW50cysrKTsKKyAgICAgICAgICAgIEFnZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWtpMCA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBbW8wID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFzdTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCaSA9IFJPTDMyKChBa2ExXkRhMSksIDIpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQW1lMV5EZTEpLCAyMyk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBc2kxXkRpMSksIDMxKTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFibzBeRG8wKSwgMTQpOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWd1MF5EdTApLCAxMCk7CisgICAgICAgICAgICBBa2ExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFtZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQXNpMSA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBYm8wID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFndTAgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCaSA9IFJPTDMyKChBa2EwXkRhMCksIDEpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQW1lMF5EZTApLCAyMik7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBc2kwXkRpMCksIDMwKTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFibzFeRG8xKSwgMTQpOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWd1MV5EdTEpLCAxMCk7CisgICAgICAgICAgICBBa2EwID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFtZTAgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQXNpMCA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBYm8xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFndTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCdSA9IFJPTDMyKChBc2EwXkRhMCksIDkpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQWJlMV5EZTEpLCAxKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFnaTBeRGkwKSwgMyk7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBa28xXkRvMSksIDEzKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFtdTBeRHUwKSwgNCk7CisgICAgICAgICAgICBBc2EwID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFiZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWdpMCA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBa28xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFtdTAgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCdSA9IFJPTDMyKChBc2ExXkRhMSksIDkpOworICAgICAgICAgICAgQmEgPSAoQWJlMF5EZTApOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWdpMV5EaTEpLCAzKTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFrbzBeRG8wKSwgMTIpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQW11MV5EdTEpLCA0KTsKKyAgICAgICAgICAgIEFzYTEgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWJlMCA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBZ2kxID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFrbzAgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQW11MSA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFnYTBeRGEwKSwgMTgpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWtlMF5EZTApLCA1KTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFtaTFeRGkxKSwgOCk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBc28wXkRvMCksIDI4KTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFidTFeRHUxKSwgMTQpOworICAgICAgICAgICAgQWdhMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBa2UwID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFtaTEgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQXNvMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBYnUxID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQmUgPSBST0wzMigoQWdhMV5EYTEpLCAxOCk7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBa2UxXkRlMSksIDUpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQW1pMF5EaTApLCA3KTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFzbzFeRG8xKSwgMjgpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQWJ1MF5EdTApLCAxMyk7CisgICAgICAgICAgICBBZ2ExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFrZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQW1pMCA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBc28xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFidTAgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCbyA9IFJPTDMyKChBbWExXkRhMSksIDIxKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFzZTBeRGUwKSwgMSk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBYmkwXkRpMCksIDMxKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFnbzFeRG8xKSwgMjgpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWt1MV5EdTEpLCAyMCk7CisgICAgICAgICAgICBBbWExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFzZTAgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWJpMCA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBZ28xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFrdTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCbyA9IFJPTDMyKChBbWEwXkRhMCksIDIwKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFzZTFeRGUxKSwgMSk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBYmkxXkRpMSksIDMxKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFnbzBeRG8wKSwgMjcpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWt1MF5EdTApLCAxOSk7CisgICAgICAgICAgICBBbWEwID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFzZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWJpMSA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBZ28wID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFrdTAgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBLZWNjYWtBdG9EX3JvdW5kMSgpOworCisgICAgICAgICAgICBCYSA9IChBYmEwXkRhMCk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBbWUxXkRlMCksIDIyKTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFnaTFeRGkxKSwgMjIpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQXNvMV5EbzEpLCAxMSk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBa3UxXkR1MCksIDcpOworICAgICAgICAgICAgQWJhMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBYmEwIF49ICoocFJvdW5kQ29uc3RhbnRzKyspOworICAgICAgICAgICAgQW1lMSA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBZ2kxID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFzbzEgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQWt1MSA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJhID0gKEFiYTFeRGExKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFtZTBeRGUxKSwgMjIpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWdpMF5EaTApLCAyMSk7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBc28wXkRvMCksIDEwKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFrdTBeRHUxKSwgNyk7CisgICAgICAgICAgICBBYmExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFiYTEgXj0gKihwUm91bmRDb25zdGFudHMrKyk7CisgICAgICAgICAgICBBbWUwID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFnaTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQXNvMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBa3UwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQmkgPSBST0wzMigoQXNhMV5EYTEpLCAyKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFrZTFeRGUxKSwgMjMpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQWJpMV5EaTEpLCAzMSk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBbW8xXkRvMCksIDE0KTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFndTBeRHUwKSwgMTApOworICAgICAgICAgICAgQXNhMSA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBa2UxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFiaTEgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQW1vMSA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBZ3UwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQmkgPSBST0wzMigoQXNhMF5EYTApLCAxKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFrZTBeRGUwKSwgMjIpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQWJpMF5EaTApLCAzMCk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBbW8wXkRvMSksIDE0KTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFndTFeRHUxKSwgMTApOworICAgICAgICAgICAgQXNhMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBa2UwID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFiaTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQW1vMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBZ3UxID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQnUgPSBST0wzMigoQW1hMV5EYTApLCA5KTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFnZTFeRGUxKSwgMSk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBc2kxXkRpMCksIDMpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWtvMF5EbzEpLCAxMyk7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBYnUxXkR1MCksIDQpOworICAgICAgICAgICAgQW1hMSA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBZ2UxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFzaTEgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWtvMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBYnUxID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQnUgPSBST0wzMigoQW1hMF5EYTEpLCA5KTsKKyAgICAgICAgICAgIEJhID0gKEFnZTBeRGUwKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFzaTBeRGkxKSwgMyk7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBa28xXkRvMCksIDEyKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFidTBeRHUxKSwgNCk7CisgICAgICAgICAgICBBbWEwID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFnZTAgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQXNpMCA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBa28xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFidTAgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCZSA9IFJPTDMyKChBa2ExXkRhMCksIDE4KTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFiZTFeRGUwKSwgNSk7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBbWkwXkRpMSksIDgpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQWdvMV5EbzApLCAyOCk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBc3UxXkR1MSksIDE0KTsKKyAgICAgICAgICAgIEFrYTEgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWJlMSA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBbWkwID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFnbzEgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQXN1MSA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFrYTBeRGExKSwgMTgpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWJlMF5EZTEpLCA1KTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFtaTFeRGkwKSwgNyk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBZ28wXkRvMSksIDI4KTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFzdTBeRHUwKSwgMTMpOworICAgICAgICAgICAgQWthMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBYmUwID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFtaTEgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWdvMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBc3UwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQm8gPSBST0wzMigoQWdhMV5EYTEpLCAyMSk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBc2UwXkRlMCksIDEpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQWtpMV5EaTApLCAzMSk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBYm8xXkRvMSksIDI4KTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFtdTFeRHUxKSwgMjApOworICAgICAgICAgICAgQWdhMSA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBc2UwID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFraTEgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWJvMSA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBbXUxID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQm8gPSBST0wzMigoQWdhMF5EYTApLCAyMCk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBc2UxXkRlMSksIDEpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQWtpMF5EaTEpLCAzMSk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBYm8wXkRvMCksIDI3KTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFtdTBeRHUwKSwgMTkpOworICAgICAgICAgICAgQWdhMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBc2UxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFraTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWJvMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBbXUwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgS2VjY2FrQXRvRF9yb3VuZDIoKTsKKworICAgICAgICAgICAgQmEgPSAoQWJhMF5EYTApOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWtlMV5EZTApLCAyMik7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBc2kwXkRpMSksIDIyKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFnbzBeRG8xKSwgMTEpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQW11MV5EdTApLCA3KTsKKyAgICAgICAgICAgIEFiYTAgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWJhMCBePSAqKHBSb3VuZENvbnN0YW50cysrKTsKKyAgICAgICAgICAgIEFrZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQXNpMCA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBZ28wID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFtdTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCYSA9IChBYmExXkRhMSk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBa2UwXkRlMSksIDIyKTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFzaTFeRGkwKSwgMjEpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQWdvMV5EbzApLCAxMCk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBbXUwXkR1MSksIDcpOworICAgICAgICAgICAgQWJhMSA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBYmExIF49ICoocFJvdW5kQ29uc3RhbnRzKyspOworICAgICAgICAgICAgQWtlMCA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBc2kxID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFnbzEgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQW11MCA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFtYTBeRGExKSwgMik7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBYmUwXkRlMSksIDIzKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFraTBeRGkxKSwgMzEpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQXNvMV5EbzApLCAxNCk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBZ3UwXkR1MCksIDEwKTsKKyAgICAgICAgICAgIEFtYTAgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWJlMCA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBa2kwID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFzbzEgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQWd1MCA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFtYTFeRGEwKSwgMSk7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBYmUxXkRlMCksIDIyKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFraTFeRGkwKSwgMzApOworICAgICAgICAgICAgQmEgPSBST0wzMigoQXNvMF5EbzEpLCAxNCk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBZ3UxXkR1MSksIDEwKTsKKyAgICAgICAgICAgIEFtYTEgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWJlMSA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBa2kxID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFzbzAgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQWd1MSA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFnYTFeRGEwKSwgOSk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBbWUwXkRlMSksIDEpOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWJpMV5EaTApLCAzKTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFrbzFeRG8xKSwgMTMpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQXN1MV5EdTApLCA0KTsKKyAgICAgICAgICAgIEFnYTEgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQW1lMCA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBYmkxID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFrbzEgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQXN1MSA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFnYTBeRGExKSwgOSk7CisgICAgICAgICAgICBCYSA9IChBbWUxXkRlMCk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBYmkwXkRpMSksIDMpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWtvMF5EbzApLCAxMik7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBc3UwXkR1MSksIDQpOworICAgICAgICAgICAgQWdhMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBbWUxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFiaTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWtvMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBc3UwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQmUgPSBST0wzMigoQXNhMV5EYTApLCAxOCk7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBZ2UxXkRlMCksIDUpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQW1pMV5EaTEpLCA4KTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFibzFeRG8wKSwgMjgpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQWt1MF5EdTEpLCAxNCk7CisgICAgICAgICAgICBBc2ExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFnZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQW1pMSA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBYm8xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFrdTAgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCZSA9IFJPTDMyKChBc2EwXkRhMSksIDE4KTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFnZTBeRGUxKSwgNSk7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBbWkwXkRpMCksIDcpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQWJvMF5EbzEpLCAyOCk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBa3UxXkR1MCksIDEzKTsKKyAgICAgICAgICAgIEFzYTAgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWdlMCA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBbWkwID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFibzAgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQWt1MSA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFrYTBeRGExKSwgMjEpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQXNlMF5EZTApLCAxKTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFnaTFeRGkwKSwgMzEpOworICAgICAgICAgICAgQmUgPSBST0wzMigoQW1vMF5EbzEpLCAyOCk7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBYnUwXkR1MSksIDIwKTsKKyAgICAgICAgICAgIEFrYTAgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQXNlMCA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBZ2kxID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFtbzAgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQWJ1MCA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFrYTFeRGEwKSwgMjApOworICAgICAgICAgICAgQnUgPSBST0wzMigoQXNlMV5EZTEpLCAxKTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFnaTBeRGkxKSwgMzEpOworICAgICAgICAgICAgQmUgPSBST0wzMigoQW1vMV5EbzApLCAyNyk7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBYnUxXkR1MCksIDE5KTsKKyAgICAgICAgICAgIEFrYTEgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQXNlMSA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBZ2kwID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFtbzEgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQWJ1MSA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEtlY2Nha0F0b0Rfcm91bmQzKCk7CisKKyAgICAgICAgICAgIEJhID0gKEFiYTBeRGEwKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFiZTBeRGUwKSwgMjIpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWJpMF5EaTEpLCAyMik7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBYm8wXkRvMSksIDExKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFidTBeRHUwKSwgNyk7CisgICAgICAgICAgICBBYmEwID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFiYTAgXj0gKihwUm91bmRDb25zdGFudHMrKyk7CisgICAgICAgICAgICBBYmUwID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFiaTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWJvMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBYnUwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQmEgPSAoQWJhMV5EYTEpOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWJlMV5EZTEpLCAyMik7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBYmkxXkRpMCksIDIxKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFibzFeRG8wKSwgMTApOworICAgICAgICAgICAgQnUgPSBST0wzMigoQWJ1MV5EdTEpLCA3KTsKKyAgICAgICAgICAgIEFiYTEgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWJhMSBePSAqKHBSb3VuZENvbnN0YW50cysrKTsKKyAgICAgICAgICAgIEFiZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWJpMSA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBYm8xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFidTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCaSA9IFJPTDMyKChBZ2EwXkRhMSksIDIpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQWdlMF5EZTEpLCAyMyk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBZ2kwXkRpMSksIDMxKTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFnbzBeRG8wKSwgMTQpOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWd1MF5EdTApLCAxMCk7CisgICAgICAgICAgICBBZ2EwID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFnZTAgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWdpMCA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBZ28wID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFndTAgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCaSA9IFJPTDMyKChBZ2ExXkRhMCksIDEpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQWdlMV5EZTApLCAyMik7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBZ2kxXkRpMCksIDMwKTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFnbzFeRG8xKSwgMTQpOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWd1MV5EdTEpLCAxMCk7CisgICAgICAgICAgICBBZ2ExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFnZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWdpMSA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBZ28xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFndTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCdSA9IFJPTDMyKChBa2EwXkRhMCksIDkpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQWtlMF5EZTEpLCAxKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFraTBeRGkwKSwgMyk7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBa28wXkRvMSksIDEzKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFrdTBeRHUwKSwgNCk7CisgICAgICAgICAgICBBa2EwID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFrZTAgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWtpMCA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBa28wID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFrdTAgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCdSA9IFJPTDMyKChBa2ExXkRhMSksIDkpOworICAgICAgICAgICAgQmEgPSAoQWtlMV5EZTApOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWtpMV5EaTEpLCAzKTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFrbzFeRG8wKSwgMTIpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQWt1MV5EdTEpLCA0KTsKKyAgICAgICAgICAgIEFrYTEgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWtlMSA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBa2kxID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFrbzEgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQWt1MSA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFtYTBeRGEwKSwgMTgpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQW1lMF5EZTApLCA1KTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFtaTBeRGkxKSwgOCk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBbW8wXkRvMCksIDI4KTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFtdTBeRHUxKSwgMTQpOworICAgICAgICAgICAgQW1hMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBbWUwID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFtaTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQW1vMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBbXUwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQmUgPSBST0wzMigoQW1hMV5EYTEpLCAxOCk7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBbWUxXkRlMSksIDUpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQW1pMV5EaTApLCA3KTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFtbzFeRG8xKSwgMjgpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQW11MV5EdTApLCAxMyk7CisgICAgICAgICAgICBBbWExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFtZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQW1pMSA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBbW8xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFtdTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCbyA9IFJPTDMyKChBc2EwXkRhMSksIDIxKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFzZTBeRGUwKSwgMSk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBc2kwXkRpMCksIDMxKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFzbzBeRG8xKSwgMjgpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQXN1MF5EdTEpLCAyMCk7CisgICAgICAgICAgICBBc2EwID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFzZTAgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQXNpMCA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBc28wID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFzdTAgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCbyA9IFJPTDMyKChBc2ExXkRhMCksIDIwKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFzZTFeRGUxKSwgMSk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBc2kxXkRpMSksIDMxKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFzbzFeRG8wKSwgMjcpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQXN1MV5EdTApLCAxOSk7CisgICAgICAgICAgICBBc2ExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFzZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQXNpMSA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBc28xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFzdTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworICAgICAgICB9CisgICAgICAgIHdoaWxlICggKnBSb3VuZENvbnN0YW50cyAhPSAweEZGICk7CisKKyAgICAgICAgI3VuZGVmIEFiYTAKKyAgICAgICAgI3VuZGVmIEFiYTEKKyAgICAgICAgI3VuZGVmIEFiZTAKKyAgICAgICAgI3VuZGVmIEFiZTEKKyAgICAgICAgI3VuZGVmIEFiaTAKKyAgICAgICAgI3VuZGVmIEFiaTEKKyAgICAgICAgI3VuZGVmIEFibzAKKyAgICAgICAgI3VuZGVmIEFibzEKKyAgICAgICAgI3VuZGVmIEFidTAKKyAgICAgICAgI3VuZGVmIEFidTEKKyAgICAgICAgI3VuZGVmIEFnYTAKKyAgICAgICAgI3VuZGVmIEFnYTEKKyAgICAgICAgI3VuZGVmIEFnZTAKKyAgICAgICAgI3VuZGVmIEFnZTEKKyAgICAgICAgI3VuZGVmIEFnaTAKKyAgICAgICAgI3VuZGVmIEFnaTEKKyAgICAgICAgI3VuZGVmIEFnbzAKKyAgICAgICAgI3VuZGVmIEFnbzEKKyAgICAgICAgI3VuZGVmIEFndTAKKyAgICAgICAgI3VuZGVmIEFndTEKKyAgICAgICAgI3VuZGVmIEFrYTAKKyAgICAgICAgI3VuZGVmIEFrYTEKKyAgICAgICAgI3VuZGVmIEFrZTAKKyAgICAgICAgI3VuZGVmIEFrZTEKKyAgICAgICAgI3VuZGVmIEFraTAKKyAgICAgICAgI3VuZGVmIEFraTEKKyAgICAgICAgI3VuZGVmIEFrbzAKKyAgICAgICAgI3VuZGVmIEFrbzEKKyAgICAgICAgI3VuZGVmIEFrdTAKKyAgICAgICAgI3VuZGVmIEFrdTEKKyAgICAgICAgI3VuZGVmIEFtYTAKKyAgICAgICAgI3VuZGVmIEFtYTEKKyAgICAgICAgI3VuZGVmIEFtZTAKKyAgICAgICAgI3VuZGVmIEFtZTEKKyAgICAgICAgI3VuZGVmIEFtaTAKKyAgICAgICAgI3VuZGVmIEFtaTEKKyAgICAgICAgI3VuZGVmIEFtbzAKKyAgICAgICAgI3VuZGVmIEFtbzEKKyAgICAgICAgI3VuZGVmIEFtdTAKKyAgICAgICAgI3VuZGVmIEFtdTEKKyAgICAgICAgI3VuZGVmIEFzYTAKKyAgICAgICAgI3VuZGVmIEFzYTEKKyAgICAgICAgI3VuZGVmIEFzZTAKKyAgICAgICAgI3VuZGVmIEFzZTEKKyAgICAgICAgI3VuZGVmIEFzaTAKKyAgICAgICAgI3VuZGVmIEFzaTEKKyAgICAgICAgI3VuZGVmIEFzbzAKKyAgICAgICAgI3VuZGVmIEFzbzEKKyAgICAgICAgI3VuZGVmIEFzdTAKKyAgICAgICAgI3VuZGVmIEFzdTEKKyAgICB9Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9QZXJtdXRlXzEycm91bmRzKHZvaWQgKnN0YXRlKQoreworICAgICBLZWNjYWtQMTYwMF9QZXJtdXRlX05yb3VuZHMoc3RhdGUsIDEyKTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX1Blcm11dGVfMjRyb3VuZHModm9pZCAqc3RhdGUpCit7CisgICAgIEtlY2Nha1AxNjAwX1Blcm11dGVfTnJvdW5kcyhzdGF0ZSwgMjQpOworfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrUC0xNjAwLW9wdDY0LWNvbmZpZy5oIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrUC0xNjAwLW9wdDY0LWNvbmZpZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1MDFjNjQKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtb3B0NjQtY29uZmlnLmgKQEAgLTAsMCArMSwzIEBACisjZGVmaW5lIEtlY2Nha1AxNjAwX2ltcGxlbWVudGF0aW9uX2NvbmZpZyAibGFuZSBjb21wbGVtZW50aW5nLCBhbGwgcm91bmRzIHVucm9sbGVkIgorI2RlZmluZSBLZWNjYWtQMTYwMF9mdWxsVW5yb2xsaW5nCisjZGVmaW5lIEtlY2Nha1AxNjAwX3VzZUxhbmVDb21wbGVtZW50aW5nCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtb3B0NjQuYyBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC1vcHQ2NC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5MDAxMGQKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtb3B0NjQuYwpAQCAtMCwwICsxLDQ3NCBAQAorLyoKK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBLZWNjYWssIEtleWFrIGFuZCBLZXRqZSBUZWFtcywgbmFtZWx5LCBHdWlkbyBCZXJ0b25pLAorSm9hbiBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMsIEdpbGxlcyBWYW4gQXNzY2hlIGFuZCBSb25ueSBWYW4gS2VlciwgaGVyZWJ5CitkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiwgZmVlZGJhY2sgb3IgcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGVzOgoraHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXlhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXRqZS5ub2VrZW9uLm9yZy8KKworVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBpbXBsZW1lbnRlciBoYXMgd2FpdmVkIGFsbCBjb3B5cmlnaHQKK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgoraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworKi8KKworI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorLyogI2luY2x1ZGUgImJyZ19lbmRpYW4uaCIgKi8KKyNpbmNsdWRlICJLZWNjYWtQLTE2MDAtb3B0NjQtY29uZmlnLmgiCisKKyNpZiBOT1RfUFlUSE9OCit0eXBlZGVmIHVuc2lnbmVkIGNoYXIgVUlOVDg7CisvKiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgVUlOVDY0OyAqLworI2VuZGlmCisKKyNpZiBkZWZpbmVkKEtlY2Nha1AxNjAwX3VzZUxhbmVDb21wbGVtZW50aW5nKQorI2RlZmluZSBVc2VCZWJpZ29raW1pc2EKKyNlbmRpZgorCisjaWYgZGVmaW5lZChfTVNDX1ZFUikKKyNkZWZpbmUgUk9MNjQoYSwgb2Zmc2V0KSBfcm90bDY0KGEsIG9mZnNldCkKKyNlbGlmIGRlZmluZWQoS2VjY2FrUDE2MDBfdXNlU0hMRCkKKyAgICAjZGVmaW5lIFJPTDY0KHgsTikgKHsgXAorICAgIHJlZ2lzdGVyIFVJTlQ2NCBfX291dDsgXAorICAgIHJlZ2lzdGVyIFVJTlQ2NCBfX2luID0geDsgXAorICAgIF9fYXNtX18gKCJzaGxkICUyLCUwLCUwIiA6ICI9ciIoX19vdXQpIDogIjAiKF9faW4pLCAiaSIoTikpOyBcCisgICAgX19vdXQ7IFwKKyAgICB9KQorI2Vsc2UKKyNkZWZpbmUgUk9MNjQoYSwgb2Zmc2V0KSAoKCgoVUlOVDY0KWEpIDw8IG9mZnNldCkgXiAoKChVSU5UNjQpYSkgPj4gKDY0LW9mZnNldCkpKQorI2VuZGlmCisKKyNpbmNsdWRlICJLZWNjYWtQLTE2MDAtNjQubWFjcm9zIgorI2lmZGVmIEtlY2Nha1AxNjAwX2Z1bGxVbnJvbGxpbmcKKyNkZWZpbmUgRnVsbFVucm9sbGluZworI2Vsc2UKKyNkZWZpbmUgVW5yb2xsaW5nIEtlY2Nha1AxNjAwX3Vucm9sbGluZworI2VuZGlmCisjaW5jbHVkZSAiS2VjY2FrUC0xNjAwLXVucm9sbGluZy5tYWNyb3MiCisjaW5jbHVkZSAiU25QLVJlbGFuZWQuaCIKKworc3RhdGljIGNvbnN0IFVJTlQ2NCBLZWNjYWtGMTYwMFJvdW5kQ29uc3RhbnRzWzI0XSA9IHsKKyAgICAweDAwMDAwMDAwMDAwMDAwMDFVTEwsCisgICAgMHgwMDAwMDAwMDAwMDA4MDgyVUxMLAorICAgIDB4ODAwMDAwMDAwMDAwODA4YVVMTCwKKyAgICAweDgwMDAwMDAwODAwMDgwMDBVTEwsCisgICAgMHgwMDAwMDAwMDAwMDA4MDhiVUxMLAorICAgIDB4MDAwMDAwMDA4MDAwMDAwMVVMTCwKKyAgICAweDgwMDAwMDAwODAwMDgwODFVTEwsCisgICAgMHg4MDAwMDAwMDAwMDA4MDA5VUxMLAorICAgIDB4MDAwMDAwMDAwMDAwMDA4YVVMTCwKKyAgICAweDAwMDAwMDAwMDAwMDAwODhVTEwsCisgICAgMHgwMDAwMDAwMDgwMDA4MDA5VUxMLAorICAgIDB4MDAwMDAwMDA4MDAwMDAwYVVMTCwKKyAgICAweDAwMDAwMDAwODAwMDgwOGJVTEwsCisgICAgMHg4MDAwMDAwMDAwMDAwMDhiVUxMLAorICAgIDB4ODAwMDAwMDAwMDAwODA4OVVMTCwKKyAgICAweDgwMDAwMDAwMDAwMDgwMDNVTEwsCisgICAgMHg4MDAwMDAwMDAwMDA4MDAyVUxMLAorICAgIDB4ODAwMDAwMDAwMDAwMDA4MFVMTCwKKyAgICAweDAwMDAwMDAwMDAwMDgwMGFVTEwsCisgICAgMHg4MDAwMDAwMDgwMDAwMDBhVUxMLAorICAgIDB4ODAwMDAwMDA4MDAwODA4MVVMTCwKKyAgICAweDgwMDAwMDAwMDAwMDgwODBVTEwsCisgICAgMHgwMDAwMDAwMDgwMDAwMDAxVUxMLAorICAgIDB4ODAwMDAwMDA4MDAwODAwOFVMTCB9OworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfSW5pdGlhbGl6ZSh2b2lkICpzdGF0ZSkKK3sKKyAgICBtZW1zZXQoc3RhdGUsIDAsIDIwMCk7CisjaWZkZWYgS2VjY2FrUDE2MDBfdXNlTGFuZUNvbXBsZW1lbnRpbmcKKyAgICAoKFVJTlQ2NCopc3RhdGUpWyAxXSA9IH4oVUlOVDY0KTA7CisgICAgKChVSU5UNjQqKXN0YXRlKVsgMl0gPSB+KFVJTlQ2NCkwOworICAgICgoVUlOVDY0KilzdGF0ZSlbIDhdID0gfihVSU5UNjQpMDsKKyAgICAoKFVJTlQ2NCopc3RhdGUpWzEyXSA9IH4oVUlOVDY0KTA7CisgICAgKChVSU5UNjQqKXN0YXRlKVsxN10gPSB+KFVJTlQ2NCkwOworICAgICgoVUlOVDY0KilzdGF0ZSlbMjBdID0gfihVSU5UNjQpMDsKKyNlbmRpZgorfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfQWRkQnl0ZXNJbkxhbmUodm9pZCAqc3RhdGUsIHVuc2lnbmVkIGludCBsYW5lUG9zaXRpb24sIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpCit7CisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgPT0gSVNfTElUVExFX0VORElBTikKKyAgICBVSU5UNjQgbGFuZTsKKyAgICBpZiAobGVuZ3RoID09IDApCisgICAgICAgIHJldHVybjsKKyAgICBpZiAobGVuZ3RoID09IDEpCisgICAgICAgIGxhbmUgPSBkYXRhWzBdOworICAgIGVsc2UgeworICAgICAgICBsYW5lID0gMDsKKyAgICAgICAgbWVtY3B5KCZsYW5lLCBkYXRhLCBsZW5ndGgpOworICAgIH0KKyAgICBsYW5lIDw8PSBvZmZzZXQqODsKKyNlbHNlCisgICAgVUlOVDY0IGxhbmUgPSAwOworICAgIHVuc2lnbmVkIGludCBpOworICAgIGZvcihpPTA7IGk8bGVuZ3RoOyBpKyspCisgICAgICAgIGxhbmUgfD0gKChVSU5UNjQpZGF0YVtpXSkgPDwgKChpK29mZnNldCkqOCk7CisjZW5kaWYKKyAgICAoKFVJTlQ2NCopc3RhdGUpW2xhbmVQb3NpdGlvbl0gXj0gbGFuZTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0FkZExhbmVzKHZvaWQgKnN0YXRlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgbGFuZUNvdW50KQoreworI2lmIChQTEFURk9STV9CWVRFX09SREVSID09IElTX0xJVFRMRV9FTkRJQU4pCisgICAgdW5zaWduZWQgaW50IGkgPSAwOworI2lmZGVmIE5PX01JU0FMSUdORURfQUNDRVNTRVMKKyAgICAvKiBJZiBlaXRoZXIgcG9pbnRlciBpcyBtaXNhbGlnbmVkLCBmYWxsIGJhY2sgdG8gYnl0ZS13aXNlIHhvci4gKi8KKworICAgIGlmICgoKCgodWludHB0cl90KXN0YXRlKSAmIDcpICE9IDApIHx8ICgoKCh1aW50cHRyX3QpZGF0YSkgJiA3KSAhPSAwKSkgeworICAgICAgZm9yIChpID0gMDsgaSA8IGxhbmVDb3VudCAqIDg7IGkrKykgeworICAgICAgICAoKHVuc2lnbmVkIGNoYXIqKXN0YXRlKVtpXSBePSBkYXRhW2ldOworICAgICAgfQorICAgIH0KKyAgICBlbHNlCisjZW5kaWYKKyAgICB7CisgICAgICAvKiBPdGhlcndpc2UuLi4gKi8KKworICAgICAgZm9yKCA7IChpKzgpPD1sYW5lQ291bnQ7IGkrPTgpIHsKKyAgICAgICAgICAoKFVJTlQ2NCopc3RhdGUpW2krMF0gXj0gKChVSU5UNjQqKWRhdGEpW2krMF07CisgICAgICAgICAgKChVSU5UNjQqKXN0YXRlKVtpKzFdIF49ICgoVUlOVDY0KilkYXRhKVtpKzFdOworICAgICAgICAgICgoVUlOVDY0KilzdGF0ZSlbaSsyXSBePSAoKFVJTlQ2NCopZGF0YSlbaSsyXTsKKyAgICAgICAgICAoKFVJTlQ2NCopc3RhdGUpW2krM10gXj0gKChVSU5UNjQqKWRhdGEpW2krM107CisgICAgICAgICAgKChVSU5UNjQqKXN0YXRlKVtpKzRdIF49ICgoVUlOVDY0KilkYXRhKVtpKzRdOworICAgICAgICAgICgoVUlOVDY0KilzdGF0ZSlbaSs1XSBePSAoKFVJTlQ2NCopZGF0YSlbaSs1XTsKKyAgICAgICAgICAoKFVJTlQ2NCopc3RhdGUpW2krNl0gXj0gKChVSU5UNjQqKWRhdGEpW2krNl07CisgICAgICAgICAgKChVSU5UNjQqKXN0YXRlKVtpKzddIF49ICgoVUlOVDY0KilkYXRhKVtpKzddOworICAgICAgfQorICAgICAgZm9yKCA7IChpKzQpPD1sYW5lQ291bnQ7IGkrPTQpIHsKKyAgICAgICAgICAoKFVJTlQ2NCopc3RhdGUpW2krMF0gXj0gKChVSU5UNjQqKWRhdGEpW2krMF07CisgICAgICAgICAgKChVSU5UNjQqKXN0YXRlKVtpKzFdIF49ICgoVUlOVDY0KilkYXRhKVtpKzFdOworICAgICAgICAgICgoVUlOVDY0KilzdGF0ZSlbaSsyXSBePSAoKFVJTlQ2NCopZGF0YSlbaSsyXTsKKyAgICAgICAgICAoKFVJTlQ2NCopc3RhdGUpW2krM10gXj0gKChVSU5UNjQqKWRhdGEpW2krM107CisgICAgICB9CisgICAgICBmb3IoIDsgKGkrMik8PWxhbmVDb3VudDsgaSs9MikgeworICAgICAgICAgICgoVUlOVDY0KilzdGF0ZSlbaSswXSBePSAoKFVJTlQ2NCopZGF0YSlbaSswXTsKKyAgICAgICAgICAoKFVJTlQ2NCopc3RhdGUpW2krMV0gXj0gKChVSU5UNjQqKWRhdGEpW2krMV07CisgICAgICB9CisgICAgICBpZiAoaTxsYW5lQ291bnQpIHsKKyAgICAgICAgICAoKFVJTlQ2NCopc3RhdGUpW2krMF0gXj0gKChVSU5UNjQqKWRhdGEpW2krMF07CisgICAgICB9CisgICAgfQorI2Vsc2UKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICBVSU5UOCAqY3VyRGF0YSA9IGRhdGE7CisgICAgZm9yKGk9MDsgaTxsYW5lQ291bnQ7IGkrKywgY3VyRGF0YSs9OCkgeworICAgICAgICBVSU5UNjQgbGFuZSA9IChVSU5UNjQpY3VyRGF0YVswXQorICAgICAgICAgICAgfCAoKFVJTlQ2NCljdXJEYXRhWzFdIDw8IDgpCisgICAgICAgICAgICB8ICgoVUlOVDY0KWN1ckRhdGFbMl0gPDwgMTYpCisgICAgICAgICAgICB8ICgoVUlOVDY0KWN1ckRhdGFbM10gPDwgMjQpCisgICAgICAgICAgICB8ICgoVUlOVDY0KWN1ckRhdGFbNF0gPDwzMikKKyAgICAgICAgICAgIHwgKChVSU5UNjQpY3VyRGF0YVs1XSA8PCA0MCkKKyAgICAgICAgICAgIHwgKChVSU5UNjQpY3VyRGF0YVs2XSA8PCA0OCkKKyAgICAgICAgICAgIHwgKChVSU5UNjQpY3VyRGF0YVs3XSA8PCA1Nik7CisgICAgICAgICgoVUlOVDY0KilzdGF0ZSlbaV0gXj0gbGFuZTsKKyAgICB9CisjZW5kaWYKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgIT0gSVNfTElUVExFX0VORElBTikKK3ZvaWQgS2VjY2FrUDE2MDBfQWRkQnl0ZSh2b2lkICpzdGF0ZSwgdW5zaWduZWQgY2hhciBieXRlLCB1bnNpZ25lZCBpbnQgb2Zmc2V0KQoreworICAgIFVJTlQ2NCBsYW5lID0gYnl0ZTsKKyAgICBsYW5lIDw8PSAob2Zmc2V0JTgpKjg7CisgICAgKChVSU5UNjQqKXN0YXRlKVtvZmZzZXQvOF0gXj0gbGFuZTsKK30KKyNlbmRpZgorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfQWRkQnl0ZXModm9pZCAqc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpCit7CisgICAgU25QX0FkZEJ5dGVzKHN0YXRlLCBkYXRhLCBvZmZzZXQsIGxlbmd0aCwgS2VjY2FrUDE2MDBfQWRkTGFuZXMsIEtlY2Nha1AxNjAwX0FkZEJ5dGVzSW5MYW5lLCA4KTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX092ZXJ3cml0ZUJ5dGVzSW5MYW5lKHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBpbnQgbGFuZVBvc2l0aW9uLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworI2lmIChQTEFURk9STV9CWVRFX09SREVSID09IElTX0xJVFRMRV9FTkRJQU4pCisjaWZkZWYgS2VjY2FrUDE2MDBfdXNlTGFuZUNvbXBsZW1lbnRpbmcKKyAgICBpZiAoKGxhbmVQb3NpdGlvbiA9PSAxKSB8fCAobGFuZVBvc2l0aW9uID09IDIpIHx8IChsYW5lUG9zaXRpb24gPT0gOCkgfHwgKGxhbmVQb3NpdGlvbiA9PSAxMikgfHwgKGxhbmVQb3NpdGlvbiA9PSAxNykgfHwgKGxhbmVQb3NpdGlvbiA9PSAyMCkpIHsKKyAgICAgICAgdW5zaWduZWQgaW50IGk7CisgICAgICAgIGZvcihpPTA7IGk8bGVuZ3RoOyBpKyspCisgICAgICAgICAgICAoKHVuc2lnbmVkIGNoYXIqKXN0YXRlKVtsYW5lUG9zaXRpb24qOCtvZmZzZXQraV0gPSB+ZGF0YVtpXTsKKyAgICB9CisgICAgZWxzZQorI2VuZGlmCisgICAgeworICAgICAgICBtZW1jcHkoKHVuc2lnbmVkIGNoYXIqKXN0YXRlK2xhbmVQb3NpdGlvbio4K29mZnNldCwgZGF0YSwgbGVuZ3RoKTsKKyAgICB9CisjZWxzZQorI2Vycm9yICJOb3QgeWV0IGltcGxlbWVudGVkIgorI2VuZGlmCit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9PdmVyd3JpdGVMYW5lcyh2b2lkICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IGxhbmVDb3VudCkKK3sKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorI2lmZGVmIEtlY2Nha1AxNjAwX3VzZUxhbmVDb21wbGVtZW50aW5nCisgICAgdW5zaWduZWQgaW50IGxhbmVQb3NpdGlvbjsKKworICAgIGZvcihsYW5lUG9zaXRpb249MDsgbGFuZVBvc2l0aW9uPGxhbmVDb3VudDsgbGFuZVBvc2l0aW9uKyspCisgICAgICAgIGlmICgobGFuZVBvc2l0aW9uID09IDEpIHx8IChsYW5lUG9zaXRpb24gPT0gMikgfHwgKGxhbmVQb3NpdGlvbiA9PSA4KSB8fCAobGFuZVBvc2l0aW9uID09IDEyKSB8fCAobGFuZVBvc2l0aW9uID09IDE3KSB8fCAobGFuZVBvc2l0aW9uID09IDIwKSkKKyAgICAgICAgICAgICgoVUlOVDY0KilzdGF0ZSlbbGFuZVBvc2l0aW9uXSA9IH4oKGNvbnN0IFVJTlQ2NCopZGF0YSlbbGFuZVBvc2l0aW9uXTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgKChVSU5UNjQqKXN0YXRlKVtsYW5lUG9zaXRpb25dID0gKChjb25zdCBVSU5UNjQqKWRhdGEpW2xhbmVQb3NpdGlvbl07CisjZWxzZQorICAgIG1lbWNweShzdGF0ZSwgZGF0YSwgbGFuZUNvdW50KjgpOworI2VuZGlmCisjZWxzZQorI2Vycm9yICJOb3QgeWV0IGltcGxlbWVudGVkIgorI2VuZGlmCit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9PdmVyd3JpdGVCeXRlcyh2b2lkICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCkKK3sKKyAgICBTblBfT3ZlcndyaXRlQnl0ZXMoc3RhdGUsIGRhdGEsIG9mZnNldCwgbGVuZ3RoLCBLZWNjYWtQMTYwMF9PdmVyd3JpdGVMYW5lcywgS2VjY2FrUDE2MDBfT3ZlcndyaXRlQnl0ZXNJbkxhbmUsIDgpOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfT3ZlcndyaXRlV2l0aFplcm9lcyh2b2lkICpzdGF0ZSwgdW5zaWduZWQgaW50IGJ5dGVDb3VudCkKK3sKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorI2lmZGVmIEtlY2Nha1AxNjAwX3VzZUxhbmVDb21wbGVtZW50aW5nCisgICAgdW5zaWduZWQgaW50IGxhbmVQb3NpdGlvbjsKKworICAgIGZvcihsYW5lUG9zaXRpb249MDsgbGFuZVBvc2l0aW9uPGJ5dGVDb3VudC84OyBsYW5lUG9zaXRpb24rKykKKyAgICAgICAgaWYgKChsYW5lUG9zaXRpb24gPT0gMSkgfHwgKGxhbmVQb3NpdGlvbiA9PSAyKSB8fCAobGFuZVBvc2l0aW9uID09IDgpIHx8IChsYW5lUG9zaXRpb24gPT0gMTIpIHx8IChsYW5lUG9zaXRpb24gPT0gMTcpIHx8IChsYW5lUG9zaXRpb24gPT0gMjApKQorICAgICAgICAgICAgKChVSU5UNjQqKXN0YXRlKVtsYW5lUG9zaXRpb25dID0gfjA7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICgoVUlOVDY0KilzdGF0ZSlbbGFuZVBvc2l0aW9uXSA9IDA7CisgICAgaWYgKGJ5dGVDb3VudCU4ICE9IDApIHsKKyAgICAgICAgbGFuZVBvc2l0aW9uID0gYnl0ZUNvdW50Lzg7CisgICAgICAgIGlmICgobGFuZVBvc2l0aW9uID09IDEpIHx8IChsYW5lUG9zaXRpb24gPT0gMikgfHwgKGxhbmVQb3NpdGlvbiA9PSA4KSB8fCAobGFuZVBvc2l0aW9uID09IDEyKSB8fCAobGFuZVBvc2l0aW9uID09IDE3KSB8fCAobGFuZVBvc2l0aW9uID09IDIwKSkKKyAgICAgICAgICAgIG1lbXNldCgodW5zaWduZWQgY2hhciopc3RhdGUrbGFuZVBvc2l0aW9uKjgsIDB4RkYsIGJ5dGVDb3VudCU4KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbWVtc2V0KCh1bnNpZ25lZCBjaGFyKilzdGF0ZStsYW5lUG9zaXRpb24qOCwgMCwgYnl0ZUNvdW50JTgpOworICAgIH0KKyNlbHNlCisgICAgbWVtc2V0KHN0YXRlLCAwLCBieXRlQ291bnQpOworI2VuZGlmCisjZWxzZQorI2Vycm9yICJOb3QgeWV0IGltcGxlbWVudGVkIgorI2VuZGlmCit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9QZXJtdXRlXzI0cm91bmRzKHZvaWQgKnN0YXRlKQoreworICAgIGRlY2xhcmVBQkNERQorICAgICNpZm5kZWYgS2VjY2FrUDE2MDBfZnVsbFVucm9sbGluZworICAgIHVuc2lnbmVkIGludCBpOworICAgICNlbmRpZgorICAgIFVJTlQ2NCAqc3RhdGVBc0xhbmVzID0gKFVJTlQ2NCopc3RhdGU7CisKKyAgICBjb3B5RnJvbVN0YXRlKEEsIHN0YXRlQXNMYW5lcykKKyAgICByb3VuZHMyNAorICAgIGNvcHlUb1N0YXRlKHN0YXRlQXNMYW5lcywgQSkKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX1Blcm11dGVfMTJyb3VuZHModm9pZCAqc3RhdGUpCit7CisgICAgZGVjbGFyZUFCQ0RFCisgICAgI2lmbmRlZiBLZWNjYWtQMTYwMF9mdWxsVW5yb2xsaW5nCisgICAgdW5zaWduZWQgaW50IGk7CisgICAgI2VuZGlmCisgICAgVUlOVDY0ICpzdGF0ZUFzTGFuZXMgPSAoVUlOVDY0KilzdGF0ZTsKKworICAgIGNvcHlGcm9tU3RhdGUoQSwgc3RhdGVBc0xhbmVzKQorICAgIHJvdW5kczEyCisgICAgY29weVRvU3RhdGUoc3RhdGVBc0xhbmVzLCBBKQorfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfRXh0cmFjdEJ5dGVzSW5MYW5lKGNvbnN0IHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBpbnQgbGFuZVBvc2l0aW9uLCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworICAgIFVJTlQ2NCBsYW5lID0gKChVSU5UNjQqKXN0YXRlKVtsYW5lUG9zaXRpb25dOworI2lmZGVmIEtlY2Nha1AxNjAwX3VzZUxhbmVDb21wbGVtZW50aW5nCisgICAgaWYgKChsYW5lUG9zaXRpb24gPT0gMSkgfHwgKGxhbmVQb3NpdGlvbiA9PSAyKSB8fCAobGFuZVBvc2l0aW9uID09IDgpIHx8IChsYW5lUG9zaXRpb24gPT0gMTIpIHx8IChsYW5lUG9zaXRpb24gPT0gMTcpIHx8IChsYW5lUG9zaXRpb24gPT0gMjApKQorICAgICAgICBsYW5lID0gfmxhbmU7CisjZW5kaWYKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorICAgIHsKKyAgICAgICAgVUlOVDY0IGxhbmUxWzFdOworICAgICAgICBsYW5lMVswXSA9IGxhbmU7CisgICAgICAgIG1lbWNweShkYXRhLCAoVUlOVDgqKWxhbmUxK29mZnNldCwgbGVuZ3RoKTsKKyAgICB9CisjZWxzZQorICAgIHVuc2lnbmVkIGludCBpOworICAgIGxhbmUgPj49IG9mZnNldCo4OworICAgIGZvcihpPTA7IGk8bGVuZ3RoOyBpKyspIHsKKyAgICAgICAgZGF0YVtpXSA9IGxhbmUgJiAweEZGOworICAgICAgICBsYW5lID4+PSA4OworICAgIH0KKyNlbmRpZgorfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiAhPSBJU19MSVRUTEVfRU5ESUFOKQordm9pZCBmcm9tV29yZFRvQnl0ZXMoVUlOVDggKmJ5dGVzLCBjb25zdCBVSU5UNjQgd29yZCkKK3sKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIGZvcihpPTA7IGk8KDY0LzgpOyBpKyspCisgICAgICAgIGJ5dGVzW2ldID0gKHdvcmQgPj4gKDgqaSkpICYgMHhGRjsKK30KKyNlbmRpZgorCit2b2lkIEtlY2Nha1AxNjAwX0V4dHJhY3RMYW5lcyhjb25zdCB2b2lkICpzdGF0ZSwgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IGxhbmVDb3VudCkKK3sKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorICAgIG1lbWNweShkYXRhLCBzdGF0ZSwgbGFuZUNvdW50KjgpOworI2Vsc2UKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIGZvcihpPTA7IGk8bGFuZUNvdW50OyBpKyspCisgICAgICAgIGZyb21Xb3JkVG9CeXRlcyhkYXRhKyhpKjgpLCAoKGNvbnN0IFVJTlQ2NCopc3RhdGUpW2ldKTsKKyNlbmRpZgorI2lmZGVmIEtlY2Nha1AxNjAwX3VzZUxhbmVDb21wbGVtZW50aW5nCisgICAgaWYgKGxhbmVDb3VudCA+IDEpIHsKKyAgICAgICAgKChVSU5UNjQqKWRhdGEpWyAxXSA9IH4oKFVJTlQ2NCopZGF0YSlbIDFdOworICAgICAgICBpZiAobGFuZUNvdW50ID4gMikgeworICAgICAgICAgICAgKChVSU5UNjQqKWRhdGEpWyAyXSA9IH4oKFVJTlQ2NCopZGF0YSlbIDJdOworICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+IDgpIHsKKyAgICAgICAgICAgICAgICAoKFVJTlQ2NCopZGF0YSlbIDhdID0gfigoVUlOVDY0KilkYXRhKVsgOF07CisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+IDEyKSB7CisgICAgICAgICAgICAgICAgICAgICgoVUlOVDY0KilkYXRhKVsxMl0gPSB+KChVSU5UNjQqKWRhdGEpWzEyXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+IDE3KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAoKFVJTlQ2NCopZGF0YSlbMTddID0gfigoVUlOVDY0KilkYXRhKVsxN107CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID4gMjApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFVJTlQ2NCopZGF0YSlbMjBdID0gfigoVUlOVDY0KilkYXRhKVsyMF07CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0V4dHJhY3RCeXRlcyhjb25zdCB2b2lkICpzdGF0ZSwgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCkKK3sKKyAgICBTblBfRXh0cmFjdEJ5dGVzKHN0YXRlLCBkYXRhLCBvZmZzZXQsIGxlbmd0aCwgS2VjY2FrUDE2MDBfRXh0cmFjdExhbmVzLCBLZWNjYWtQMTYwMF9FeHRyYWN0Qnl0ZXNJbkxhbmUsIDgpOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfRXh0cmFjdEFuZEFkZEJ5dGVzSW5MYW5lKGNvbnN0IHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBpbnQgbGFuZVBvc2l0aW9uLCBjb25zdCB1bnNpZ25lZCBjaGFyICppbnB1dCwgdW5zaWduZWQgY2hhciAqb3V0cHV0LCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworICAgIFVJTlQ2NCBsYW5lID0gKChVSU5UNjQqKXN0YXRlKVtsYW5lUG9zaXRpb25dOworI2lmZGVmIEtlY2Nha1AxNjAwX3VzZUxhbmVDb21wbGVtZW50aW5nCisgICAgaWYgKChsYW5lUG9zaXRpb24gPT0gMSkgfHwgKGxhbmVQb3NpdGlvbiA9PSAyKSB8fCAobGFuZVBvc2l0aW9uID09IDgpIHx8IChsYW5lUG9zaXRpb24gPT0gMTIpIHx8IChsYW5lUG9zaXRpb24gPT0gMTcpIHx8IChsYW5lUG9zaXRpb24gPT0gMjApKQorICAgICAgICBsYW5lID0gfmxhbmU7CisjZW5kaWYKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW50IGk7CisgICAgICAgIFVJTlQ2NCBsYW5lMVsxXTsKKyAgICAgICAgbGFuZTFbMF0gPSBsYW5lOworICAgICAgICBmb3IoaT0wOyBpPGxlbmd0aDsgaSsrKQorICAgICAgICAgICAgb3V0cHV0W2ldID0gaW5wdXRbaV0gXiAoKFVJTlQ4KilsYW5lMSlbb2Zmc2V0K2ldOworICAgIH0KKyNlbHNlCisgICAgdW5zaWduZWQgaW50IGk7CisgICAgbGFuZSA+Pj0gb2Zmc2V0Kjg7CisgICAgZm9yKGk9MDsgaTxsZW5ndGg7IGkrKykgeworICAgICAgICBvdXRwdXRbaV0gPSBpbnB1dFtpXSBeIChsYW5lICYgMHhGRik7CisgICAgICAgIGxhbmUgPj49IDg7CisgICAgfQorI2VuZGlmCit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9FeHRyYWN0QW5kQWRkTGFuZXMoY29uc3Qgdm9pZCAqc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmlucHV0LCB1bnNpZ25lZCBjaGFyICpvdXRwdXQsIHVuc2lnbmVkIGludCBsYW5lQ291bnQpCit7CisgICAgdW5zaWduZWQgaW50IGk7CisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgIT0gSVNfTElUVExFX0VORElBTikKKyAgICB1bnNpZ25lZCBjaGFyIHRlbXBbOF07CisgICAgdW5zaWduZWQgaW50IGo7CisjZW5kaWYKKworICAgIGZvcihpPTA7IGk8bGFuZUNvdW50OyBpKyspIHsKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorICAgICAgICAoKFVJTlQ2NCopb3V0cHV0KVtpXSA9ICgoVUlOVDY0KilpbnB1dClbaV0gXiAoKGNvbnN0IFVJTlQ2NCopc3RhdGUpW2ldOworI2Vsc2UKKyAgICAgICAgZnJvbVdvcmRUb0J5dGVzKHRlbXAsICgoY29uc3QgVUlOVDY0KilzdGF0ZSlbaV0pOworICAgICAgICBmb3Ioaj0wOyBqPDg7IGorKykKKyAgICAgICAgICAgIG91dHB1dFtpKjgral0gPSBpbnB1dFtpKjgral0gXiB0ZW1wW2pdOworI2VuZGlmCisgICAgfQorI2lmZGVmIEtlY2Nha1AxNjAwX3VzZUxhbmVDb21wbGVtZW50aW5nCisgICAgaWYgKGxhbmVDb3VudCA+IDEpIHsKKyAgICAgICAgKChVSU5UNjQqKW91dHB1dClbIDFdID0gfigoVUlOVDY0KilvdXRwdXQpWyAxXTsKKyAgICAgICAgaWYgKGxhbmVDb3VudCA+IDIpIHsKKyAgICAgICAgICAgICgoVUlOVDY0KilvdXRwdXQpWyAyXSA9IH4oKFVJTlQ2NCopb3V0cHV0KVsgMl07CisgICAgICAgICAgICBpZiAobGFuZUNvdW50ID4gOCkgeworICAgICAgICAgICAgICAgICgoVUlOVDY0KilvdXRwdXQpWyA4XSA9IH4oKFVJTlQ2NCopb3V0cHV0KVsgOF07CisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+IDEyKSB7CisgICAgICAgICAgICAgICAgICAgICgoVUlOVDY0KilvdXRwdXQpWzEyXSA9IH4oKFVJTlQ2NCopb3V0cHV0KVsxMl07CisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPiAxNykgeworICAgICAgICAgICAgICAgICAgICAgICAgKChVSU5UNjQqKW91dHB1dClbMTddID0gfigoVUlOVDY0KilvdXRwdXQpWzE3XTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPiAyMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoVUlOVDY0KilvdXRwdXQpWzIwXSA9IH4oKFVJTlQ2NCopb3V0cHV0KVsyMF07CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0V4dHJhY3RBbmRBZGRCeXRlcyhjb25zdCB2b2lkICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqaW5wdXQsIHVuc2lnbmVkIGNoYXIgKm91dHB1dCwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCkKK3sKKyAgICBTblBfRXh0cmFjdEFuZEFkZEJ5dGVzKHN0YXRlLCBpbnB1dCwgb3V0cHV0LCBvZmZzZXQsIGxlbmd0aCwgS2VjY2FrUDE2MDBfRXh0cmFjdEFuZEFkZExhbmVzLCBLZWNjYWtQMTYwMF9FeHRyYWN0QW5kQWRkQnl0ZXNJbkxhbmUsIDgpOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3NpemVfdCBLZWNjYWtGMTYwMF9GYXN0TG9vcF9BYnNvcmIodm9pZCAqc3RhdGUsIHVuc2lnbmVkIGludCBsYW5lQ291bnQsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHNpemVfdCBkYXRhQnl0ZUxlbikKK3sKKyAgICBzaXplX3Qgb3JpZ2luYWxEYXRhQnl0ZUxlbiA9IGRhdGFCeXRlTGVuOworICAgIGRlY2xhcmVBQkNERQorICAgICNpZm5kZWYgS2VjY2FrUDE2MDBfZnVsbFVucm9sbGluZworICAgIHVuc2lnbmVkIGludCBpOworICAgICNlbmRpZgorICAgIFVJTlQ2NCAqc3RhdGVBc0xhbmVzID0gKFVJTlQ2NCopc3RhdGU7CisgICAgVUlOVDY0ICppbkRhdGFBc0xhbmVzID0gKFVJTlQ2NCopZGF0YTsKKworICAgIGNvcHlGcm9tU3RhdGUoQSwgc3RhdGVBc0xhbmVzKQorICAgIHdoaWxlKGRhdGFCeXRlTGVuID49IGxhbmVDb3VudCo4KSB7CisgICAgICAgIGFkZElucHV0KEEsIGluRGF0YUFzTGFuZXMsIGxhbmVDb3VudCkKKyAgICAgICAgcm91bmRzMjQKKyAgICAgICAgaW5EYXRhQXNMYW5lcyArPSBsYW5lQ291bnQ7CisgICAgICAgIGRhdGFCeXRlTGVuIC09IGxhbmVDb3VudCo4OworICAgIH0KKyAgICBjb3B5VG9TdGF0ZShzdGF0ZUFzTGFuZXMsIEEpCisgICAgcmV0dXJuIG9yaWdpbmFsRGF0YUJ5dGVMZW4gLSBkYXRhQnl0ZUxlbjsKK30KZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC11bnJvbGxpbmcubWFjcm9zIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrUC0xNjAwLXVucm9sbGluZy5tYWNyb3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDA1Y2UyOQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC11bnJvbGxpbmcubWFjcm9zCkBAIC0wLDAgKzEsMTg1IEBACisvKgorSW1wbGVtZW50YXRpb24gYnkgdGhlIEtlY2NhaywgS2V5YWsgYW5kIEtldGplIFRlYW1zLCBuYW1lbHksIEd1aWRvIEJlcnRvbmksCitKb2FuIERhZW1lbiwgTWljaGHDq2wgUGVldGVycywgR2lsbGVzIFZhbiBBc3NjaGUgYW5kIFJvbm55IFZhbiBLZWVyLCBoZXJlYnkKK2Rlbm90ZWQgYXMgInRoZSBpbXBsZW1lbnRlciIuCisKK0ZvciBtb3JlIGluZm9ybWF0aW9uLCBmZWVkYmFjayBvciBxdWVzdGlvbnMsIHBsZWFzZSByZWZlciB0byBvdXIgd2Vic2l0ZXM6CitodHRwOi8va2VjY2FrLm5vZWtlb24ub3JnLworaHR0cDovL2tleWFrLm5vZWtlb24ub3JnLworaHR0cDovL2tldGplLm5vZWtlb24ub3JnLworCitUbyB0aGUgZXh0ZW50IHBvc3NpYmxlIHVuZGVyIGxhdywgdGhlIGltcGxlbWVudGVyIGhhcyB3YWl2ZWQgYWxsIGNvcHlyaWdodAorYW5kIHJlbGF0ZWQgb3IgbmVpZ2hib3JpbmcgcmlnaHRzIHRvIHRoZSBzb3VyY2UgY29kZSBpbiB0aGlzIGZpbGUuCitodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCisqLworCisjaWYgKGRlZmluZWQoRnVsbFVucm9sbGluZykpCisjZGVmaW5lIHJvdW5kczI0IFwKKyAgICBwcmVwYXJlVGhldGEgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKCAwLCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoIDEsIEUsIEEpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSggMiwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKCAzLCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoIDQsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSggNSwgRSwgQSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKCA2LCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoIDcsIEUsIEEpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSggOCwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKCA5LCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTAsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxMSwgRSwgQSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDEyLCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTMsIEUsIEEpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxNCwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDE1LCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTYsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxNywgRSwgQSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDE4LCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTksIEUsIEEpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgyMCwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDIxLCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMjIsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YSgyMywgRSwgQSkgXAorCisjZGVmaW5lIHJvdW5kczEyIFwKKyAgICBwcmVwYXJlVGhldGEgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDEyLCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTMsIEUsIEEpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxNCwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDE1LCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTYsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxNywgRSwgQSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDE4LCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTksIEUsIEEpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgyMCwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDIxLCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMjIsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YSgyMywgRSwgQSkgXAorCisjZWxpZiAoVW5yb2xsaW5nID09IDEyKQorI2RlZmluZSByb3VuZHMyNCBcCisgICAgcHJlcGFyZVRoZXRhIFwKKyAgICBmb3IoaT0wOyBpPDI0OyBpKz0xMikgeyBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkgICAsIEEsIEUpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsgMSwgRSwgQSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKyAyLCBBLCBFKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrIDMsIEUsIEEpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsgNCwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKyA1LCBFLCBBKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrIDYsIEEsIEUpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsgNywgRSwgQSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKyA4LCBBLCBFKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrIDksIEUsIEEpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsxMCwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzExLCBFLCBBKSBcCisgICAgfSBcCisKKyNkZWZpbmUgcm91bmRzMTIgXAorICAgIHByZXBhcmVUaGV0YSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTIsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxMywgRSwgQSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDE0LCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTUsIEUsIEEpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxNiwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDE3LCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTgsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxOSwgRSwgQSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDIwLCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMjEsIEUsIEEpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgyMiwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhKDIzLCBFLCBBKSBcCisKKyNlbGlmIChVbnJvbGxpbmcgPT0gNikKKyNkZWZpbmUgcm91bmRzMjQgXAorICAgIHByZXBhcmVUaGV0YSBcCisgICAgZm9yKGk9MDsgaTwyNDsgaSs9NikgeyBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkgICwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzEsIEUsIEEpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsyLCBBLCBFKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrMywgRSwgQSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzQsIEEsIEUpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSs1LCBFLCBBKSBcCisgICAgfSBcCisKKyNkZWZpbmUgcm91bmRzMTIgXAorICAgIHByZXBhcmVUaGV0YSBcCisgICAgZm9yKGk9MTI7IGk8MjQ7IGkrPTYpIHsgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpICAsIEEsIEUpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsxLCBFLCBBKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrMiwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzMsIEUsIEEpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSs0LCBBLCBFKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrNSwgRSwgQSkgXAorICAgIH0gXAorCisjZWxpZiAoVW5yb2xsaW5nID09IDQpCisjZGVmaW5lIHJvdW5kczI0IFwKKyAgICBwcmVwYXJlVGhldGEgXAorICAgIGZvcihpPTA7IGk8MjQ7IGkrPTQpIHsgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpICAsIEEsIEUpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsxLCBFLCBBKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrMiwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzMsIEUsIEEpIFwKKyAgICB9IFwKKworI2RlZmluZSByb3VuZHMxMiBcCisgICAgcHJlcGFyZVRoZXRhIFwKKyAgICBmb3IoaT0xMjsgaTwyNDsgaSs9NCkgeyBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkgICwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzEsIEUsIEEpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsyLCBBLCBFKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrMywgRSwgQSkgXAorICAgIH0gXAorCisjZWxpZiAoVW5yb2xsaW5nID09IDMpCisjZGVmaW5lIHJvdW5kczI0IFwKKyAgICBwcmVwYXJlVGhldGEgXAorICAgIGZvcihpPTA7IGk8MjQ7IGkrPTMpIHsgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpICAsIEEsIEUpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsxLCBFLCBBKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrMiwgQSwgRSkgXAorICAgICAgICBjb3B5U3RhdGVWYXJpYWJsZXMoQSwgRSkgXAorICAgIH0gXAorCisjZGVmaW5lIHJvdW5kczEyIFwKKyAgICBwcmVwYXJlVGhldGEgXAorICAgIGZvcihpPTEyOyBpPDI0OyBpKz0zKSB7IFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSAgLCBBLCBFKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrMSwgRSwgQSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzIsIEEsIEUpIFwKKyAgICAgICAgY29weVN0YXRlVmFyaWFibGVzKEEsIEUpIFwKKyAgICB9IFwKKworI2VsaWYgKFVucm9sbGluZyA9PSAyKQorI2RlZmluZSByb3VuZHMyNCBcCisgICAgcHJlcGFyZVRoZXRhIFwKKyAgICBmb3IoaT0wOyBpPDI0OyBpKz0yKSB7IFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSAgLCBBLCBFKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrMSwgRSwgQSkgXAorICAgIH0gXAorCisjZGVmaW5lIHJvdW5kczEyIFwKKyAgICBwcmVwYXJlVGhldGEgXAorICAgIGZvcihpPTEyOyBpPDI0OyBpKz0yKSB7IFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSAgLCBBLCBFKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrMSwgRSwgQSkgXAorICAgIH0gXAorCisjZWxpZiAoVW5yb2xsaW5nID09IDEpCisjZGVmaW5lIHJvdW5kczI0IFwKKyAgICBwcmVwYXJlVGhldGEgXAorICAgIGZvcihpPTA7IGk8MjQ7IGkrKykgeyBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkgICwgQSwgRSkgXAorICAgICAgICBjb3B5U3RhdGVWYXJpYWJsZXMoQSwgRSkgXAorICAgIH0gXAorCisjZGVmaW5lIHJvdW5kczEyIFwKKyAgICBwcmVwYXJlVGhldGEgXAorICAgIGZvcihpPTEyOyBpPDI0OyBpKyspIHsgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpICAsIEEsIEUpIFwKKyAgICAgICAgY29weVN0YXRlVmFyaWFibGVzKEEsIEUpIFwKKyAgICB9IFwKKworI2Vsc2UKKyNlcnJvciAiVW5yb2xsaW5nIGlzIG5vdCBjb3JyZWN0bHkgc3BlY2lmaWVkISIKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrU3BvbmdlLmMgYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtTcG9uZ2UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZmRiNzMxCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrU3BvbmdlLmMKQEAgLTAsMCArMSw5MiBAQAorLyoKK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBLZWNjYWssIEtleWFrIGFuZCBLZXRqZSBUZWFtcywgbmFtZWx5LCBHdWlkbyBCZXJ0b25pLAorSm9hbiBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMsIEdpbGxlcyBWYW4gQXNzY2hlIGFuZCBSb25ueSBWYW4gS2VlciwgaGVyZWJ5CitkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiwgZmVlZGJhY2sgb3IgcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGVzOgoraHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXlhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXRqZS5ub2VrZW9uLm9yZy8KKworVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBpbXBsZW1lbnRlciBoYXMgd2FpdmVkIGFsbCBjb3B5cmlnaHQKK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgoraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworKi8KKworI2luY2x1ZGUgIktlY2Nha1Nwb25nZS5oIgorCisjaWZkZWYgS2VjY2FrUmVmZXJlbmNlCisgICAgI2luY2x1ZGUgImRpc3BsYXlJbnRlcm1lZGlhdGVWYWx1ZXMuaCIKKyNlbmRpZgorCisjaWZuZGVmIEtlY2Nha1AyMDBfZXhjbHVkZWQKKyAgICAjaW5jbHVkZSAiS2VjY2FrUC0yMDAtU25QLmgiCisKKyAgICAjZGVmaW5lIHByZWZpeCBLZWNjYWtXaWR0aDIwMAorICAgICNkZWZpbmUgU25QIEtlY2Nha1AyMDAKKyAgICAjZGVmaW5lIFNuUF93aWR0aCAyMDAKKyAgICAjZGVmaW5lIFNuUF9QZXJtdXRlIEtlY2Nha1AyMDBfUGVybXV0ZV8xOHJvdW5kcworICAgICNpZiBkZWZpbmVkKEtlY2Nha0YyMDBfRmFzdExvb3Bfc3VwcG9ydGVkKQorICAgICAgICAjZGVmaW5lIFNuUF9GYXN0TG9vcF9BYnNvcmIgS2VjY2FrRjIwMF9GYXN0TG9vcF9BYnNvcmIKKyAgICAjZW5kaWYKKyAgICAgICAgI2luY2x1ZGUgIktlY2Nha1Nwb25nZS5pbmMiCisgICAgI3VuZGVmIHByZWZpeAorICAgICN1bmRlZiBTblAKKyAgICAjdW5kZWYgU25QX3dpZHRoCisgICAgI3VuZGVmIFNuUF9QZXJtdXRlCisgICAgI3VuZGVmIFNuUF9GYXN0TG9vcF9BYnNvcmIKKyNlbmRpZgorCisjaWZuZGVmIEtlY2Nha1A0MDBfZXhjbHVkZWQKKyAgICAjaW5jbHVkZSAiS2VjY2FrUC00MDAtU25QLmgiCisKKyAgICAjZGVmaW5lIHByZWZpeCBLZWNjYWtXaWR0aDQwMAorICAgICNkZWZpbmUgU25QIEtlY2Nha1A0MDAKKyAgICAjZGVmaW5lIFNuUF93aWR0aCA0MDAKKyAgICAjZGVmaW5lIFNuUF9QZXJtdXRlIEtlY2Nha1A0MDBfUGVybXV0ZV8yMHJvdW5kcworICAgICNpZiBkZWZpbmVkKEtlY2Nha0Y0MDBfRmFzdExvb3Bfc3VwcG9ydGVkKQorICAgICAgICAjZGVmaW5lIFNuUF9GYXN0TG9vcF9BYnNvcmIgS2VjY2FrRjQwMF9GYXN0TG9vcF9BYnNvcmIKKyAgICAjZW5kaWYKKyAgICAgICAgI2luY2x1ZGUgIktlY2Nha1Nwb25nZS5pbmMiCisgICAgI3VuZGVmIHByZWZpeAorICAgICN1bmRlZiBTblAKKyAgICAjdW5kZWYgU25QX3dpZHRoCisgICAgI3VuZGVmIFNuUF9QZXJtdXRlCisgICAgI3VuZGVmIFNuUF9GYXN0TG9vcF9BYnNvcmIKKyNlbmRpZgorCisjaWZuZGVmIEtlY2Nha1A4MDBfZXhjbHVkZWQKKyAgICAjaW5jbHVkZSAiS2VjY2FrUC04MDAtU25QLmgiCisKKyAgICAjZGVmaW5lIHByZWZpeCBLZWNjYWtXaWR0aDgwMAorICAgICNkZWZpbmUgU25QIEtlY2Nha1A4MDAKKyAgICAjZGVmaW5lIFNuUF93aWR0aCA4MDAKKyAgICAjZGVmaW5lIFNuUF9QZXJtdXRlIEtlY2Nha1A4MDBfUGVybXV0ZV8yMnJvdW5kcworICAgICNpZiBkZWZpbmVkKEtlY2Nha0Y4MDBfRmFzdExvb3Bfc3VwcG9ydGVkKQorICAgICAgICAjZGVmaW5lIFNuUF9GYXN0TG9vcF9BYnNvcmIgS2VjY2FrRjgwMF9GYXN0TG9vcF9BYnNvcmIKKyAgICAjZW5kaWYKKyAgICAgICAgI2luY2x1ZGUgIktlY2Nha1Nwb25nZS5pbmMiCisgICAgI3VuZGVmIHByZWZpeAorICAgICN1bmRlZiBTblAKKyAgICAjdW5kZWYgU25QX3dpZHRoCisgICAgI3VuZGVmIFNuUF9QZXJtdXRlCisgICAgI3VuZGVmIFNuUF9GYXN0TG9vcF9BYnNvcmIKKyNlbmRpZgorCisjaWZuZGVmIEtlY2Nha1AxNjAwX2V4Y2x1ZGVkCisgICAgI2luY2x1ZGUgIktlY2Nha1AtMTYwMC1TblAuaCIKKworICAgICNkZWZpbmUgcHJlZml4IEtlY2Nha1dpZHRoMTYwMAorICAgICNkZWZpbmUgU25QIEtlY2Nha1AxNjAwCisgICAgI2RlZmluZSBTblBfd2lkdGggMTYwMAorICAgICNkZWZpbmUgU25QX1Blcm11dGUgS2VjY2FrUDE2MDBfUGVybXV0ZV8yNHJvdW5kcworICAgICNpZiBkZWZpbmVkKEtlY2Nha0YxNjAwX0Zhc3RMb29wX3N1cHBvcnRlZCkKKyAgICAgICAgI2RlZmluZSBTblBfRmFzdExvb3BfQWJzb3JiIEtlY2Nha0YxNjAwX0Zhc3RMb29wX0Fic29yYgorICAgICNlbmRpZgorICAgICAgICAjaW5jbHVkZSAiS2VjY2FrU3BvbmdlLmluYyIKKyAgICAjdW5kZWYgcHJlZml4CisgICAgI3VuZGVmIFNuUAorICAgICN1bmRlZiBTblBfd2lkdGgKKyAgICAjdW5kZWYgU25QX1Blcm11dGUKKyAgICAjdW5kZWYgU25QX0Zhc3RMb29wX0Fic29yYgorI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtTcG9uZ2UuaCBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1Nwb25nZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmNGJhZGMKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtTcG9uZ2UuaApAQCAtMCwwICsxLDE3MiBAQAorLyoKK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBLZWNjYWssIEtleWFrIGFuZCBLZXRqZSBUZWFtcywgbmFtZWx5LCBHdWlkbyBCZXJ0b25pLAorSm9hbiBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMsIEdpbGxlcyBWYW4gQXNzY2hlIGFuZCBSb25ueSBWYW4gS2VlciwgaGVyZWJ5CitkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiwgZmVlZGJhY2sgb3IgcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGVzOgoraHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXlhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXRqZS5ub2VrZW9uLm9yZy8KKworVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBpbXBsZW1lbnRlciBoYXMgd2FpdmVkIGFsbCBjb3B5cmlnaHQKK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgoraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworKi8KKworI2lmbmRlZiBfS2VjY2FrU3BvbmdlX2hfCisjZGVmaW5lIF9LZWNjYWtTcG9uZ2VfaF8KKworLyoqIEdlbmVyYWwgaW5mb3JtYXRpb24KKyAgKgorICAqIFRoZSBmb2xsb3dpbmcgdHlwZSBhbmQgZnVuY3Rpb25zIGFyZSBub3QgYWN0dWFsbHkgaW1wbGVtZW50ZWQuIFRoZWlyCisgICogZG9jdW1lbnRhdGlvbiBpcyBnZW5lcmljLCB3aXRoIHRoZSBwcmVmaXggUHJlZml4IHJlcGxhY2VkIGJ5CisgICogLSBLZWNjYWtXaWR0aDIwMCBmb3IgYSBzcG9uZ2UgZnVuY3Rpb24gYmFzZWQgb24gS2VjY2FrLWZbMjAwXQorICAqIC0gS2VjY2FrV2lkdGg0MDAgZm9yIGEgc3BvbmdlIGZ1bmN0aW9uIGJhc2VkIG9uIEtlY2Nhay1mWzQwMF0KKyAgKiAtIEtlY2Nha1dpZHRoODAwIGZvciBhIHNwb25nZSBmdW5jdGlvbiBiYXNlZCBvbiBLZWNjYWstZls4MDBdCisgICogLSBLZWNjYWtXaWR0aDE2MDAgZm9yIGEgc3BvbmdlIGZ1bmN0aW9uIGJhc2VkIG9uIEtlY2Nhay1mWzE2MDBdCisgICoKKyAgKiBJbiBhbGwgdGhlc2UgZnVuY3Rpb25zLCB0aGUgcmF0ZSBhbmQgY2FwYWNpdHkgbXVzdCBzdW0gdG8gdGhlIHdpZHRoIG9mIHRoZQorICAqIGNob3NlbiBwZXJtdXRhdGlvbi4gRm9yIGluc3RhbmNlLCB0byB1c2UgdGhlIHNwb25nZSBmdW5jdGlvbgorICAqIEtlY2Nha1tyPTEzNDQsIGM9MjU2XSwgb25lIG11c3QgdXNlIEtlY2Nha1dpZHRoMTYwMF9TcG9uZ2UoKSBvciBhIGNvbWJpbmF0aW9uCisgICogb2YgS2VjY2FrV2lkdGgxNjAwX1Nwb25nZUluaXRpYWxpemUoKSwgS2VjY2FrV2lkdGgxNjAwX1Nwb25nZUFic29yYigpLAorICAqIEtlY2Nha1dpZHRoMTYwMF9TcG9uZ2VBYnNvcmJMYXN0RmV3Qml0cygpIGFuZAorICAqIEtlY2Nha1dpZHRoMTYwMF9TcG9uZ2VTcXVlZXplKCkuCisgICoKKyAgKiBUaGUgUHJlZml4X1Nwb25nZUluc3RhbmNlIGNvbnRhaW5zIHRoZSBzcG9uZ2UgaW5zdGFuY2UgYXR0cmlidXRlcyBmb3IgdXNlCisgICogd2l0aCB0aGUgUHJlZml4X1Nwb25nZSogZnVuY3Rpb25zLgorICAqIEl0IGdhdGhlcnMgdGhlIHN0YXRlIHByb2Nlc3NlZCBieSB0aGUgcGVybXV0YXRpb24gYXMgd2VsbCBhcyB0aGUgcmF0ZSwKKyAgKiB0aGUgcG9zaXRpb24gb2YgaW5wdXQvb3V0cHV0IGJ5dGVzIGluIHRoZSBzdGF0ZSBhbmQgdGhlIHBoYXNlCisgICogKGFic29yYmluZyBvciBzcXVlZXppbmcpLgorICAqLworCisjaWZkZWYgRG9udFJlYWxseUluY2x1ZGVfRG9jdW1lbnRhdGlvbk9ubHkKKy8qKiBGdW5jdGlvbiB0byBldmFsdWF0ZSB0aGUgc3BvbmdlIGZ1bmN0aW9uIEtlY2Nha1tyLCBjXSBpbiBhIHNpbmdsZSBjYWxsLgorICAqIEBwYXJhbSAgcmF0ZSAgICAgICAgVGhlIHZhbHVlIG9mIHRoZSByYXRlIHIuCisgICogQHBhcmFtICBjYXBhY2l0eSAgICBUaGUgdmFsdWUgb2YgdGhlIGNhcGFjaXR5IGMuCisgICogQHBhcmFtICBpbnB1dCAgICAgICAgICAgUG9pbnRlciB0byB0aGUgaW5wdXQgbWVzc2FnZSAoYmVmb3JlIHRoZSBzdWZmaXgpLgorICAqIEBwYXJhbSAgaW5wdXRCeXRlTGVuICAgIFRoZSBsZW5ndGggb2YgdGhlIGlucHV0IG1lc3NhZ2UgaW4gYnl0ZXMuCisgICogQHBhcmFtICBzdWZmaXggICAgICAgICAgQnl0ZSBjb250YWluaW5nIGZyb20gMCB0byA3IHN1ZmZpeCBiaXRzCisgICogICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBtdXN0IGJlIGFic29yYmVkIGFmdGVyIEBhIGlucHV0LgorICAqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZXNlIDxpPm48L2k+IGJpdHMgbXVzdCBiZSBpbiB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0IHBvc2l0aW9ucy4KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGVzZSBiaXRzIG11c3QgYmUgZGVsaW1pdGVkIHdpdGggYSBiaXQgMSBhdCBwb3NpdGlvbiA8aT5uPC9pPgorICAqICAgICAgICAgICAgICAgICAgICAgICAgIChjb3VudGluZyBmcm9tIDA9TFNCIHRvIDc9TVNCKSBhbmQgZm9sbG93ZWQgYnkgYml0cyAwCisgICogICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSBwb3NpdGlvbiA8aT5uPC9pPisxIHRvIHBvc2l0aW9uIDcuCisgICogICAgICAgICAgICAgICAgICAgICAgICAgU29tZSBleGFtcGxlczoKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBJZiBubyBiaXRzIGFyZSB0byBiZSBhYnNvcmJlZCwgdGhlbiBAYSBzdWZmaXggbXVzdCBiZSAweDAxLgorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIElmIHRoZSAyLWJpdCBzZXF1ZW5jZSAwLDAgaXMgdG8gYmUgYWJzb3JiZWQsIEBhIHN1ZmZpeCBtdXN0IGJlIDB4MDQuCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gSWYgdGhlIDUtYml0IHNlcXVlbmNlIDAsMSwwLDAsMSBpcyB0byBiZSBhYnNvcmJlZCwgQGEgc3VmZml4IG11c3QgYmUgMHgzMi4KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBJZiB0aGUgNy1iaXQgc2VxdWVuY2UgMSwxLDAsMSwwLDAsMCBpcyB0byBiZSBhYnNvcmJlZCwgQGEgc3VmZml4IG11c3QgYmUgMHg4Qi4KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAuCisgICogQHBhcmFtICBvdXRwdXQgICAgICAgICAgUG9pbnRlciB0byB0aGUgb3V0cHV0IGJ1ZmZlci4KKyAgKiBAcGFyYW0gIG91dHB1dEJ5dGVMZW4gICBUaGUgZGVzaXJlZCBudW1iZXIgb2Ygb3V0cHV0IGJ5dGVzLgorICAqIEBwcmUgICAgT25lIG11c3QgaGF2ZSByK2MgZXF1YWwgdG8gdGhlIHN1cHBvcnRlZCB3aWR0aCBvZiB0aGlzIGltcGxlbWVudGF0aW9uCisgICogICAgICAgICBhbmQgdGhlIHJhdGUgYSBtdWx0aXBsZSBvZiA4IGJpdHMgKG9uZSBieXRlKSBpbiB0aGlzIGltcGxlbWVudGF0aW9uLgorICAqIEBwcmUgICAgQGEgc3VmZml4IOKJoCAweDAwCisgICogQHJldHVybiBaZXJvIGlmIHN1Y2Nlc3NmdWwsIDEgb3RoZXJ3aXNlLgorICAqLworaW50IFByZWZpeF9TcG9uZ2UodW5zaWduZWQgaW50IHJhdGUsIHVuc2lnbmVkIGludCBjYXBhY2l0eSwgY29uc3QgdW5zaWduZWQgY2hhciAqaW5wdXQsIHNpemVfdCBpbnB1dEJ5dGVMZW4sIHVuc2lnbmVkIGNoYXIgc3VmZml4LCB1bnNpZ25lZCBjaGFyICpvdXRwdXQsIHNpemVfdCBvdXRwdXRCeXRlTGVuKTsKKworLyoqCisgICogRnVuY3Rpb24gdG8gaW5pdGlhbGl6ZSB0aGUgc3RhdGUgb2YgdGhlIEtlY2Nha1tyLCBjXSBzcG9uZ2UgZnVuY3Rpb24uCisgICogVGhlIHBoYXNlIG9mIHRoZSBzcG9uZ2UgZnVuY3Rpb24gaXMgc2V0IHRvIGFic29yYmluZy4KKyAgKiBAcGFyYW0gIHNwb25nZUluc3RhbmNlICBQb2ludGVyIHRvIHRoZSBzcG9uZ2UgaW5zdGFuY2UgdG8gYmUgaW5pdGlhbGl6ZWQuCisgICogQHBhcmFtICByYXRlICAgICAgICBUaGUgdmFsdWUgb2YgdGhlIHJhdGUgci4KKyAgKiBAcGFyYW0gIGNhcGFjaXR5ICAgIFRoZSB2YWx1ZSBvZiB0aGUgY2FwYWNpdHkgYy4KKyAgKiBAcHJlICAgIE9uZSBtdXN0IGhhdmUgcitjIGVxdWFsIHRvIHRoZSBzdXBwb3J0ZWQgd2lkdGggb2YgdGhpcyBpbXBsZW1lbnRhdGlvbgorICAqICAgICAgICAgYW5kIHRoZSByYXRlIGEgbXVsdGlwbGUgb2YgOCBiaXRzIChvbmUgYnl0ZSkgaW4gdGhpcyBpbXBsZW1lbnRhdGlvbi4KKyAgKiBAcmV0dXJuIFplcm8gaWYgc3VjY2Vzc2Z1bCwgMSBvdGhlcndpc2UuCisgICovCitpbnQgUHJlZml4X1Nwb25nZUluaXRpYWxpemUoUHJlZml4X1Nwb25nZUluc3RhbmNlICpzcG9uZ2VJbnN0YW5jZSwgdW5zaWduZWQgaW50IHJhdGUsIHVuc2lnbmVkIGludCBjYXBhY2l0eSk7CisKKy8qKgorICAqIEZ1bmN0aW9uIHRvIGdpdmUgaW5wdXQgZGF0YSBieXRlcyBmb3IgdGhlIHNwb25nZSBmdW5jdGlvbiB0byBhYnNvcmIuCisgICogQHBhcmFtICBzcG9uZ2VJbnN0YW5jZSAgUG9pbnRlciB0byB0aGUgc3BvbmdlIGluc3RhbmNlIGluaXRpYWxpemVkIGJ5IFByZWZpeF9TcG9uZ2VJbml0aWFsaXplKCkuCisgICogQHBhcmFtICBkYXRhICAgICAgICBQb2ludGVyIHRvIHRoZSBpbnB1dCBkYXRhLgorICAqIEBwYXJhbSAgZGF0YUJ5dGVMZW4gIFRoZSBudW1iZXIgb2YgaW5wdXQgYnl0ZXMgcHJvdmlkZWQgaW4gdGhlIGlucHV0IGRhdGEuCisgICogQHByZSAgICBUaGUgc3BvbmdlIGZ1bmN0aW9uIG11c3QgYmUgaW4gdGhlIGFic29yYmluZyBwaGFzZSwKKyAgKiAgICAgICAgIGkuZS4sIFByZWZpeF9TcG9uZ2VTcXVlZXplKCkgb3IgUHJlZml4X1Nwb25nZUFic29yYkxhc3RGZXdCaXRzKCkKKyAgKiAgICAgICAgIG11c3Qgbm90IGhhdmUgYmVlbiBjYWxsZWQgYmVmb3JlLgorICAqIEByZXR1cm4gWmVybyBpZiBzdWNjZXNzZnVsLCAxIG90aGVyd2lzZS4KKyAgKi8KK2ludCBQcmVmaXhfU3BvbmdlQWJzb3JiKFByZWZpeF9TcG9uZ2VJbnN0YW5jZSAqc3BvbmdlSW5zdGFuY2UsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHNpemVfdCBkYXRhQnl0ZUxlbik7CisKKy8qKgorICAqIEZ1bmN0aW9uIHRvIGdpdmUgaW5wdXQgZGF0YSBiaXRzIGZvciB0aGUgc3BvbmdlIGZ1bmN0aW9uIHRvIGFic29yYgorICAqIGFuZCB0aGVuIHRvIHN3aXRjaCB0byB0aGUgc3F1ZWV6aW5nIHBoYXNlLgorICAqIEBwYXJhbSAgc3BvbmdlSW5zdGFuY2UgIFBvaW50ZXIgdG8gdGhlIHNwb25nZSBpbnN0YW5jZSBpbml0aWFsaXplZCBieSBQcmVmaXhfU3BvbmdlSW5pdGlhbGl6ZSgpLgorICAqIEBwYXJhbSAgZGVsaW1pdGVkRGF0YSAgIEJ5dGUgY29udGFpbmluZyBmcm9tIDAgdG8gNyB0cmFpbGluZyBiaXRzCisgICogICAgICAgICAgICAgICAgICAgICB0aGF0IG11c3QgYmUgYWJzb3JiZWQuCisgICogICAgICAgICAgICAgICAgICAgICBUaGVzZSA8aT5uPC9pPiBiaXRzIG11c3QgYmUgaW4gdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdCBwb3NpdGlvbnMuCisgICogICAgICAgICAgICAgICAgICAgICBUaGVzZSBiaXRzIG11c3QgYmUgZGVsaW1pdGVkIHdpdGggYSBiaXQgMSBhdCBwb3NpdGlvbiA8aT5uPC9pPgorICAqICAgICAgICAgICAgICAgICAgICAgKGNvdW50aW5nIGZyb20gMD1MU0IgdG8gNz1NU0IpIGFuZCBmb2xsb3dlZCBieSBiaXRzIDAKKyAgKiAgICAgICAgICAgICAgICAgICAgIGZyb20gcG9zaXRpb24gPGk+bjwvaT4rMSB0byBwb3NpdGlvbiA3LgorICAqICAgICAgICAgICAgICAgICAgICAgU29tZSBleGFtcGxlczoKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAtIElmIG5vIGJpdHMgYXJlIHRvIGJlIGFic29yYmVkLCB0aGVuIEBhIGRlbGltaXRlZERhdGEgbXVzdCBiZSAweDAxLgorICAqICAgICAgICAgICAgICAgICAgICAgICAgIC0gSWYgdGhlIDItYml0IHNlcXVlbmNlIDAsMCBpcyB0byBiZSBhYnNvcmJlZCwgQGEgZGVsaW1pdGVkRGF0YSBtdXN0IGJlIDB4MDQuCisgICogICAgICAgICAgICAgICAgICAgICAgICAgLSBJZiB0aGUgNS1iaXQgc2VxdWVuY2UgMCwxLDAsMCwxIGlzIHRvIGJlIGFic29yYmVkLCBAYSBkZWxpbWl0ZWREYXRhIG11c3QgYmUgMHgzMi4KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAtIElmIHRoZSA3LWJpdCBzZXF1ZW5jZSAxLDEsMCwxLDAsMCwwIGlzIHRvIGJlIGFic29yYmVkLCBAYSBkZWxpbWl0ZWREYXRhIG11c3QgYmUgMHg4Qi4KKyAgKiAgICAgICAgICAgICAgICAgICAgIC4KKyAgKiBAcHJlICAgIFRoZSBzcG9uZ2UgZnVuY3Rpb24gbXVzdCBiZSBpbiB0aGUgYWJzb3JiaW5nIHBoYXNlLAorICAqICAgICAgICAgaS5lLiwgUHJlZml4X1Nwb25nZVNxdWVlemUoKSBvciBQcmVmaXhfU3BvbmdlQWJzb3JiTGFzdEZld0JpdHMoKQorICAqICAgICAgICAgbXVzdCBub3QgaGF2ZSBiZWVuIGNhbGxlZCBiZWZvcmUuCisgICogQHByZSAgICBAYSBkZWxpbWl0ZWREYXRhIOKJoCAweDAwCisgICogQHJldHVybiBaZXJvIGlmIHN1Y2Nlc3NmdWwsIDEgb3RoZXJ3aXNlLgorICAqLworaW50IFByZWZpeF9TcG9uZ2VBYnNvcmJMYXN0RmV3Qml0cyhQcmVmaXhfU3BvbmdlSW5zdGFuY2UgKnNwb25nZUluc3RhbmNlLCB1bnNpZ25lZCBjaGFyIGRlbGltaXRlZERhdGEpOworCisvKioKKyAgKiBGdW5jdGlvbiB0byBzcXVlZXplIG91dHB1dCBkYXRhIGZyb20gdGhlIHNwb25nZSBmdW5jdGlvbi4KKyAgKiBJZiB0aGUgc3BvbmdlIGZ1bmN0aW9uIHdhcyBpbiB0aGUgYWJzb3JiaW5nIHBoYXNlLCB0aGlzIGZ1bmN0aW9uCisgICogc3dpdGNoZXMgaXQgdG8gdGhlIHNxdWVlemluZyBwaGFzZQorICAqIGFzIGlmIFByZWZpeF9TcG9uZ2VBYnNvcmJMYXN0RmV3Qml0cyhzcG9uZ2VJbnN0YW5jZSwgMHgwMSkgd2FzIGNhbGxlZC4KKyAgKiBAcGFyYW0gIHNwb25nZUluc3RhbmNlICBQb2ludGVyIHRvIHRoZSBzcG9uZ2UgaW5zdGFuY2UgaW5pdGlhbGl6ZWQgYnkgUHJlZml4X1Nwb25nZUluaXRpYWxpemUoKS4KKyAgKiBAcGFyYW0gIGRhdGEgICAgICAgIFBvaW50ZXIgdG8gdGhlIGJ1ZmZlciB3aGVyZSB0byBzdG9yZSB0aGUgb3V0cHV0IGRhdGEuCisgICogQHBhcmFtICBkYXRhQnl0ZUxlbiBUaGUgbnVtYmVyIG9mIG91dHB1dCBieXRlcyBkZXNpcmVkLgorICAqIEByZXR1cm4gWmVybyBpZiBzdWNjZXNzZnVsLCAxIG90aGVyd2lzZS4KKyAgKi8KK2ludCBQcmVmaXhfU3BvbmdlU3F1ZWV6ZShQcmVmaXhfU3BvbmdlSW5zdGFuY2UgKnNwb25nZUluc3RhbmNlLCB1bnNpZ25lZCBjaGFyICpkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW4pOworI2VuZGlmCisKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlICJhbGlnbi5oIgorCisjZGVmaW5lIEtDUF9EZWNsYXJlU3BvbmdlU3RydWN0dXJlKHByZWZpeCwgc2l6ZSwgYWxpZ25tZW50KSBcCisgICAgQUxJR04oYWxpZ25tZW50KSB0eXBlZGVmIHN0cnVjdCBwcmVmaXgjI19TcG9uZ2VJbnN0YW5jZVN0cnVjdCB7IFwKKyAgICAgICAgdW5zaWduZWQgY2hhciBzdGF0ZVtzaXplXTsgXAorICAgICAgICB1bnNpZ25lZCBpbnQgcmF0ZTsgXAorICAgICAgICB1bnNpZ25lZCBpbnQgYnl0ZUlPSW5kZXg7IFwKKyAgICAgICAgaW50IHNxdWVlemluZzsgXAorICAgIH0gcHJlZml4IyNfU3BvbmdlSW5zdGFuY2U7CisKKyNkZWZpbmUgS0NQX0RlY2xhcmVTcG9uZ2VGdW5jdGlvbnMocHJlZml4KSBcCisgICAgaW50IHByZWZpeCMjX1Nwb25nZSh1bnNpZ25lZCBpbnQgcmF0ZSwgdW5zaWduZWQgaW50IGNhcGFjaXR5LCBjb25zdCB1bnNpZ25lZCBjaGFyICppbnB1dCwgc2l6ZV90IGlucHV0Qnl0ZUxlbiwgdW5zaWduZWQgY2hhciBzdWZmaXgsIHVuc2lnbmVkIGNoYXIgKm91dHB1dCwgc2l6ZV90IG91dHB1dEJ5dGVMZW4pOyBcCisgICAgaW50IHByZWZpeCMjX1Nwb25nZUluaXRpYWxpemUocHJlZml4IyNfU3BvbmdlSW5zdGFuY2UgKnNwb25nZUluc3RhbmNlLCB1bnNpZ25lZCBpbnQgcmF0ZSwgdW5zaWduZWQgaW50IGNhcGFjaXR5KTsgXAorICAgIGludCBwcmVmaXgjI19TcG9uZ2VBYnNvcmIocHJlZml4IyNfU3BvbmdlSW5zdGFuY2UgKnNwb25nZUluc3RhbmNlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW4pOyBcCisgICAgaW50IHByZWZpeCMjX1Nwb25nZUFic29yYkxhc3RGZXdCaXRzKHByZWZpeCMjX1Nwb25nZUluc3RhbmNlICpzcG9uZ2VJbnN0YW5jZSwgdW5zaWduZWQgY2hhciBkZWxpbWl0ZWREYXRhKTsgXAorICAgIGludCBwcmVmaXgjI19TcG9uZ2VTcXVlZXplKHByZWZpeCMjX1Nwb25nZUluc3RhbmNlICpzcG9uZ2VJbnN0YW5jZSwgdW5zaWduZWQgY2hhciAqZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuKTsKKworI2lmbmRlZiBLZWNjYWtQMjAwX2V4Y2x1ZGVkCisgICAgI2luY2x1ZGUgIktlY2Nha1AtMjAwLVNuUC5oIgorICAgIEtDUF9EZWNsYXJlU3BvbmdlU3RydWN0dXJlKEtlY2Nha1dpZHRoMjAwLCBLZWNjYWtQMjAwX3N0YXRlU2l6ZUluQnl0ZXMsIEtlY2Nha1AyMDBfc3RhdGVBbGlnbm1lbnQpCisgICAgS0NQX0RlY2xhcmVTcG9uZ2VGdW5jdGlvbnMoS2VjY2FrV2lkdGgyMDApCisjZW5kaWYKKworI2lmbmRlZiBLZWNjYWtQNDAwX2V4Y2x1ZGVkCisgICAgI2luY2x1ZGUgIktlY2Nha1AtNDAwLVNuUC5oIgorICAgIEtDUF9EZWNsYXJlU3BvbmdlU3RydWN0dXJlKEtlY2Nha1dpZHRoNDAwLCBLZWNjYWtQNDAwX3N0YXRlU2l6ZUluQnl0ZXMsIEtlY2Nha1A0MDBfc3RhdGVBbGlnbm1lbnQpCisgICAgS0NQX0RlY2xhcmVTcG9uZ2VGdW5jdGlvbnMoS2VjY2FrV2lkdGg0MDApCisjZW5kaWYKKworI2lmbmRlZiBLZWNjYWtQODAwX2V4Y2x1ZGVkCisgICAgI2luY2x1ZGUgIktlY2Nha1AtODAwLVNuUC5oIgorICAgIEtDUF9EZWNsYXJlU3BvbmdlU3RydWN0dXJlKEtlY2Nha1dpZHRoODAwLCBLZWNjYWtQODAwX3N0YXRlU2l6ZUluQnl0ZXMsIEtlY2Nha1A4MDBfc3RhdGVBbGlnbm1lbnQpCisgICAgS0NQX0RlY2xhcmVTcG9uZ2VGdW5jdGlvbnMoS2VjY2FrV2lkdGg4MDApCisjZW5kaWYKKworI2lmbmRlZiBLZWNjYWtQMTYwMF9leGNsdWRlZAorICAgICNpbmNsdWRlICJLZWNjYWtQLTE2MDAtU25QLmgiCisgICAgS0NQX0RlY2xhcmVTcG9uZ2VTdHJ1Y3R1cmUoS2VjY2FrV2lkdGgxNjAwLCBLZWNjYWtQMTYwMF9zdGF0ZVNpemVJbkJ5dGVzLCBLZWNjYWtQMTYwMF9zdGF0ZUFsaWdubWVudCkKKyAgICBLQ1BfRGVjbGFyZVNwb25nZUZ1bmN0aW9ucyhLZWNjYWtXaWR0aDE2MDApCisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtTcG9uZ2UuaW5jIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrU3BvbmdlLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTA3MzlkCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrU3BvbmdlLmluYwpAQCAtMCwwICsxLDMzMiBAQAorLyoKK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBLZWNjYWssIEtleWFrIGFuZCBLZXRqZSBUZWFtcywgbmFtZWx5LCBHdWlkbyBCZXJ0b25pLAorSm9hbiBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMsIEdpbGxlcyBWYW4gQXNzY2hlIGFuZCBSb25ueSBWYW4gS2VlciwgaGVyZWJ5CitkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiwgZmVlZGJhY2sgb3IgcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGVzOgoraHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXlhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXRqZS5ub2VrZW9uLm9yZy8KKworVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBpbXBsZW1lbnRlciBoYXMgd2FpdmVkIGFsbCBjb3B5cmlnaHQKK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgoraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworKi8KKworI2RlZmluZSBKT0lOMChhLCBiKSAgICAgICAgICAgICAgICAgICAgIGEgIyMgYgorI2RlZmluZSBKT0lOKGEsIGIpICAgICAgICAgICAgICAgICAgICAgIEpPSU4wKGEsIGIpCisKKyNkZWZpbmUgU3BvbmdlICAgICAgICAgICAgICAgICAgICAgICAgICBKT0lOKHByZWZpeCwgX1Nwb25nZSkKKyNkZWZpbmUgU3BvbmdlSW5zdGFuY2UgICAgICAgICAgICAgICAgICBKT0lOKHByZWZpeCwgX1Nwb25nZUluc3RhbmNlKQorI2RlZmluZSBTcG9uZ2VJbml0aWFsaXplICAgICAgICAgICAgICAgIEpPSU4ocHJlZml4LCBfU3BvbmdlSW5pdGlhbGl6ZSkKKyNkZWZpbmUgU3BvbmdlQWJzb3JiICAgICAgICAgICAgICAgICAgICBKT0lOKHByZWZpeCwgX1Nwb25nZUFic29yYikKKyNkZWZpbmUgU3BvbmdlQWJzb3JiTGFzdEZld0JpdHMgICAgICAgICBKT0lOKHByZWZpeCwgX1Nwb25nZUFic29yYkxhc3RGZXdCaXRzKQorI2RlZmluZSBTcG9uZ2VTcXVlZXplICAgICAgICAgICAgICAgICAgIEpPSU4ocHJlZml4LCBfU3BvbmdlU3F1ZWV6ZSkKKworI2RlZmluZSBTblBfc3RhdGVTaXplSW5CeXRlcyAgICAgICAgICAgIEpPSU4oU25QLCBfc3RhdGVTaXplSW5CeXRlcykKKyNkZWZpbmUgU25QX3N0YXRlQWxpZ25tZW50ICAgICAgICAgICAgICBKT0lOKFNuUCwgX3N0YXRlQWxpZ25tZW50KQorI2RlZmluZSBTblBfU3RhdGljSW5pdGlhbGl6ZSAgICAgICAgICAgIEpPSU4oU25QLCBfU3RhdGljSW5pdGlhbGl6ZSkKKyNkZWZpbmUgU25QX0luaXRpYWxpemUgICAgICAgICAgICAgICAgICBKT0lOKFNuUCwgX0luaXRpYWxpemUpCisjZGVmaW5lIFNuUF9BZGRCeXRlICAgICAgICAgICAgICAgICAgICAgSk9JTihTblAsIF9BZGRCeXRlKQorI2RlZmluZSBTblBfQWRkQnl0ZXMgICAgICAgICAgICAgICAgICAgIEpPSU4oU25QLCBfQWRkQnl0ZXMpCisjZGVmaW5lIFNuUF9FeHRyYWN0Qnl0ZXMgICAgICAgICAgICAgICAgSk9JTihTblAsIF9FeHRyYWN0Qnl0ZXMpCisKK2ludCBTcG9uZ2UodW5zaWduZWQgaW50IHJhdGUsIHVuc2lnbmVkIGludCBjYXBhY2l0eSwgY29uc3QgdW5zaWduZWQgY2hhciAqaW5wdXQsIHNpemVfdCBpbnB1dEJ5dGVMZW4sIHVuc2lnbmVkIGNoYXIgc3VmZml4LCB1bnNpZ25lZCBjaGFyICpvdXRwdXQsIHNpemVfdCBvdXRwdXRCeXRlTGVuKQoreworICAgIEFMSUdOKFNuUF9zdGF0ZUFsaWdubWVudCkgdW5zaWduZWQgY2hhciBzdGF0ZVtTblBfc3RhdGVTaXplSW5CeXRlc107CisgICAgdW5zaWduZWQgaW50IHBhcnRpYWxCbG9jazsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpjdXJJbnB1dCA9IGlucHV0OworICAgIHVuc2lnbmVkIGNoYXIgKmN1ck91dHB1dCA9IG91dHB1dDsKKyAgICB1bnNpZ25lZCBpbnQgcmF0ZUluQnl0ZXMgPSByYXRlLzg7CisKKyAgICBpZiAocmF0ZStjYXBhY2l0eSAhPSBTblBfd2lkdGgpCisgICAgICAgIHJldHVybiAxOworICAgIGlmICgocmF0ZSA8PSAwKSB8fCAocmF0ZSA+IFNuUF93aWR0aCkgfHwgKChyYXRlICUgOCkgIT0gMCkpCisgICAgICAgIHJldHVybiAxOworICAgIGlmIChzdWZmaXggPT0gMCkKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICAvKiBJbml0aWFsaXplIHRoZSBzdGF0ZSAqLworCisgICAgU25QX1N0YXRpY0luaXRpYWxpemUoKTsKKyAgICBTblBfSW5pdGlhbGl6ZShzdGF0ZSk7CisKKyAgICAvKiBGaXJzdCwgYWJzb3JiIHdob2xlIGJsb2NrcyAqLworCisjaWZkZWYgU25QX0Zhc3RMb29wX0Fic29yYgorICAgIGlmICgoKHJhdGVJbkJ5dGVzICUgKFNuUF93aWR0aC8yMDApKSA9PSAwKSAmJiAoaW5wdXRCeXRlTGVuID49IHJhdGVJbkJ5dGVzKSkgeworICAgICAgICAvKiBmYXN0IGxhbmU6IHdob2xlIGxhbmUgcmF0ZSAqLworCisgICAgICAgIHNpemVfdCBqOworICAgICAgICBqID0gU25QX0Zhc3RMb29wX0Fic29yYihzdGF0ZSwgcmF0ZUluQnl0ZXMvKFNuUF93aWR0aC8yMDApLCBjdXJJbnB1dCwgaW5wdXRCeXRlTGVuKTsKKyAgICAgICAgY3VySW5wdXQgKz0gajsKKyAgICAgICAgaW5wdXRCeXRlTGVuIC09IGo7CisgICAgfQorI2VuZGlmCisgICAgd2hpbGUoaW5wdXRCeXRlTGVuID49IChzaXplX3QpcmF0ZUluQnl0ZXMpIHsKKyAgICAgICAgI2lmZGVmIEtlY2Nha1JlZmVyZW5jZQorICAgICAgICBkaXNwbGF5Qnl0ZXMoMSwgIkJsb2NrIHRvIGJlIGFic29yYmVkIiwgY3VySW5wdXQsIHJhdGVJbkJ5dGVzKTsKKyAgICAgICAgI2VuZGlmCisgICAgICAgIFNuUF9BZGRCeXRlcyhzdGF0ZSwgY3VySW5wdXQsIDAsIHJhdGVJbkJ5dGVzKTsKKyAgICAgICAgU25QX1Blcm11dGUoc3RhdGUpOworICAgICAgICBjdXJJbnB1dCArPSByYXRlSW5CeXRlczsKKyAgICAgICAgaW5wdXRCeXRlTGVuIC09IHJhdGVJbkJ5dGVzOworICAgIH0KKworICAgIC8qIFRoZW4sIGFic29yYiB3aGF0IHJlbWFpbnMgKi8KKworICAgIHBhcnRpYWxCbG9jayA9ICh1bnNpZ25lZCBpbnQpaW5wdXRCeXRlTGVuOworICAgICNpZmRlZiBLZWNjYWtSZWZlcmVuY2UKKyAgICBkaXNwbGF5Qnl0ZXMoMSwgIkJsb2NrIHRvIGJlIGFic29yYmVkIChwYXJ0KSIsIGN1cklucHV0LCBwYXJ0aWFsQmxvY2spOworICAgICNlbmRpZgorICAgIFNuUF9BZGRCeXRlcyhzdGF0ZSwgY3VySW5wdXQsIDAsIHBhcnRpYWxCbG9jayk7CisKKyAgICAvKiBGaW5hbGx5LCBhYnNvcmIgdGhlIHN1ZmZpeCAqLworCisgICAgI2lmZGVmIEtlY2Nha1JlZmVyZW5jZQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgY2hhciBkZWxpbWl0ZWREYXRhMVsxXTsKKyAgICAgICAgZGVsaW1pdGVkRGF0YTFbMF0gPSBzdWZmaXg7CisgICAgICAgIGRpc3BsYXlCeXRlcygxLCAiQmxvY2sgdG8gYmUgYWJzb3JiZWQgKGxhc3QgZmV3IGJpdHMgKyBmaXJzdCBiaXQgb2YgcGFkZGluZykiLCBkZWxpbWl0ZWREYXRhMSwgMSk7CisgICAgfQorICAgICNlbmRpZgorICAgIC8qIExhc3QgZmV3IGJpdHMsIHdob3NlIGRlbGltaXRlciBjb2luY2lkZXMgd2l0aCBmaXJzdCBiaXQgb2YgcGFkZGluZyAqLworCisgICAgU25QX0FkZEJ5dGUoc3RhdGUsIHN1ZmZpeCwgcGFydGlhbEJsb2NrKTsKKyAgICAvKiBJZiB0aGUgZmlyc3QgYml0IG9mIHBhZGRpbmcgaXMgYXQgcG9zaXRpb24gcmF0ZS0xLCB3ZSBuZWVkIGEgd2hvbGUgbmV3IGJsb2NrIGZvciB0aGUgc2Vjb25kIGJpdCBvZiBwYWRkaW5nICovCisKKyAgICBpZiAoKHN1ZmZpeCA+PSAweDgwKSAmJiAocGFydGlhbEJsb2NrID09IChyYXRlSW5CeXRlcy0xKSkpCisgICAgICAgIFNuUF9QZXJtdXRlKHN0YXRlKTsKKyAgICAvKiBTZWNvbmQgYml0IG9mIHBhZGRpbmcgKi8KKworICAgIFNuUF9BZGRCeXRlKHN0YXRlLCAweDgwLCByYXRlSW5CeXRlcy0xKTsKKyAgICAjaWZkZWYgS2VjY2FrUmVmZXJlbmNlCisgICAgeworICAgICAgICB1bnNpZ25lZCBjaGFyIGJsb2NrW1NuUF93aWR0aC84XTsKKyAgICAgICAgbWVtc2V0KGJsb2NrLCAwLCBTblBfd2lkdGgvOCk7CisgICAgICAgIGJsb2NrW3JhdGVJbkJ5dGVzLTFdID0gMHg4MDsKKyAgICAgICAgZGlzcGxheUJ5dGVzKDEsICJTZWNvbmQgYml0IG9mIHBhZGRpbmciLCBibG9jaywgcmF0ZUluQnl0ZXMpOworICAgIH0KKyAgICAjZW5kaWYKKyAgICBTblBfUGVybXV0ZShzdGF0ZSk7CisgICAgI2lmZGVmIEtlY2Nha1JlZmVyZW5jZQorICAgIGRpc3BsYXlUZXh0KDEsICItLS0gU3dpdGNoaW5nIHRvIHNxdWVlemluZyBwaGFzZSAtLS0iKTsKKyAgICAjZW5kaWYKKworICAgIC8qIEZpcnN0LCBvdXRwdXQgd2hvbGUgYmxvY2tzICovCisKKyAgICB3aGlsZShvdXRwdXRCeXRlTGVuID4gKHNpemVfdClyYXRlSW5CeXRlcykgeworICAgICAgICBTblBfRXh0cmFjdEJ5dGVzKHN0YXRlLCBjdXJPdXRwdXQsIDAsIHJhdGVJbkJ5dGVzKTsKKyAgICAgICAgU25QX1Blcm11dGUoc3RhdGUpOworICAgICAgICAjaWZkZWYgS2VjY2FrUmVmZXJlbmNlCisgICAgICAgIGRpc3BsYXlCeXRlcygxLCAiU3F1ZWV6ZWQgYmxvY2siLCBjdXJPdXRwdXQsIHJhdGVJbkJ5dGVzKTsKKyAgICAgICAgI2VuZGlmCisgICAgICAgIGN1ck91dHB1dCArPSByYXRlSW5CeXRlczsKKyAgICAgICAgb3V0cHV0Qnl0ZUxlbiAtPSByYXRlSW5CeXRlczsKKyAgICB9CisKKyAgICAvKiBGaW5hbGx5LCBvdXRwdXQgd2hhdCByZW1haW5zICovCisKKyAgICBwYXJ0aWFsQmxvY2sgPSAodW5zaWduZWQgaW50KW91dHB1dEJ5dGVMZW47CisgICAgU25QX0V4dHJhY3RCeXRlcyhzdGF0ZSwgY3VyT3V0cHV0LCAwLCBwYXJ0aWFsQmxvY2spOworICAgICNpZmRlZiBLZWNjYWtSZWZlcmVuY2UKKyAgICBkaXNwbGF5Qnl0ZXMoMSwgIlNxdWVlemVkIGJsb2NrIChwYXJ0KSIsIGN1ck91dHB1dCwgcGFydGlhbEJsb2NrKTsKKyAgICAjZW5kaWYKKworICAgIHJldHVybiAwOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK2ludCBTcG9uZ2VJbml0aWFsaXplKFNwb25nZUluc3RhbmNlICppbnN0YW5jZSwgdW5zaWduZWQgaW50IHJhdGUsIHVuc2lnbmVkIGludCBjYXBhY2l0eSkKK3sKKyAgICBpZiAocmF0ZStjYXBhY2l0eSAhPSBTblBfd2lkdGgpCisgICAgICAgIHJldHVybiAxOworICAgIGlmICgocmF0ZSA8PSAwKSB8fCAocmF0ZSA+IFNuUF93aWR0aCkgfHwgKChyYXRlICUgOCkgIT0gMCkpCisgICAgICAgIHJldHVybiAxOworICAgIFNuUF9TdGF0aWNJbml0aWFsaXplKCk7CisgICAgU25QX0luaXRpYWxpemUoaW5zdGFuY2UtPnN0YXRlKTsKKyAgICBpbnN0YW5jZS0+cmF0ZSA9IHJhdGU7CisgICAgaW5zdGFuY2UtPmJ5dGVJT0luZGV4ID0gMDsKKyAgICBpbnN0YW5jZS0+c3F1ZWV6aW5nID0gMDsKKworICAgIHJldHVybiAwOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK2ludCBTcG9uZ2VBYnNvcmIoU3BvbmdlSW5zdGFuY2UgKmluc3RhbmNlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW4pCit7CisgICAgc2l6ZV90IGksIGo7CisgICAgdW5zaWduZWQgaW50IHBhcnRpYWxCbG9jazsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpjdXJEYXRhOworICAgIHVuc2lnbmVkIGludCByYXRlSW5CeXRlcyA9IGluc3RhbmNlLT5yYXRlLzg7CisKKyAgICBpZiAoaW5zdGFuY2UtPnNxdWVlemluZykKKyAgICAgICAgcmV0dXJuIDE7IC8qIFRvbyBsYXRlIGZvciBhZGRpdGlvbmFsIGlucHV0ICovCisKKworICAgIGkgPSAwOworICAgIGN1ckRhdGEgPSBkYXRhOworICAgIHdoaWxlKGkgPCBkYXRhQnl0ZUxlbikgeworICAgICAgICBpZiAoKGluc3RhbmNlLT5ieXRlSU9JbmRleCA9PSAwKSAmJiAoZGF0YUJ5dGVMZW4gPj0gKGkgKyByYXRlSW5CeXRlcykpKSB7CisjaWZkZWYgU25QX0Zhc3RMb29wX0Fic29yYgorICAgICAgICAgICAgLyogcHJvY2Vzc2luZyBmdWxsIGJsb2NrcyBmaXJzdCAqLworCisgICAgICAgICAgICBpZiAoKHJhdGVJbkJ5dGVzICUgKFNuUF93aWR0aC8yMDApKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgLyogZmFzdCBsYW5lOiB3aG9sZSBsYW5lIHJhdGUgKi8KKworICAgICAgICAgICAgICAgIGogPSBTblBfRmFzdExvb3BfQWJzb3JiKGluc3RhbmNlLT5zdGF0ZSwgcmF0ZUluQnl0ZXMvKFNuUF93aWR0aC8yMDApLCBjdXJEYXRhLCBkYXRhQnl0ZUxlbiAtIGkpOworICAgICAgICAgICAgICAgIGkgKz0gajsKKyAgICAgICAgICAgICAgICBjdXJEYXRhICs9IGo7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyNlbmRpZgorICAgICAgICAgICAgICAgIGZvcihqPWRhdGFCeXRlTGVuLWk7IGo+PXJhdGVJbkJ5dGVzOyBqLT1yYXRlSW5CeXRlcykgeworICAgICAgICAgICAgICAgICAgICAjaWZkZWYgS2VjY2FrUmVmZXJlbmNlCisgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlCeXRlcygxLCAiQmxvY2sgdG8gYmUgYWJzb3JiZWQiLCBjdXJEYXRhLCByYXRlSW5CeXRlcyk7CisgICAgICAgICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgICAgICAgICBTblBfQWRkQnl0ZXMoaW5zdGFuY2UtPnN0YXRlLCBjdXJEYXRhLCAwLCByYXRlSW5CeXRlcyk7CisgICAgICAgICAgICAgICAgICAgIFNuUF9QZXJtdXRlKGluc3RhbmNlLT5zdGF0ZSk7CisgICAgICAgICAgICAgICAgICAgIGN1ckRhdGErPXJhdGVJbkJ5dGVzOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpID0gZGF0YUJ5dGVMZW4gLSBqOworI2lmZGVmIFNuUF9GYXN0TG9vcF9BYnNvcmIKKyAgICAgICAgICAgIH0KKyNlbmRpZgorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLyogbm9ybWFsIGxhbmU6IHVzaW5nIHRoZSBtZXNzYWdlIHF1ZXVlICovCisKKyAgICAgICAgICAgIHBhcnRpYWxCbG9jayA9ICh1bnNpZ25lZCBpbnQpKGRhdGFCeXRlTGVuIC0gaSk7CisgICAgICAgICAgICBpZiAocGFydGlhbEJsb2NrK2luc3RhbmNlLT5ieXRlSU9JbmRleCA+IHJhdGVJbkJ5dGVzKQorICAgICAgICAgICAgICAgIHBhcnRpYWxCbG9jayA9IHJhdGVJbkJ5dGVzLWluc3RhbmNlLT5ieXRlSU9JbmRleDsKKyAgICAgICAgICAgICNpZmRlZiBLZWNjYWtSZWZlcmVuY2UKKyAgICAgICAgICAgIGRpc3BsYXlCeXRlcygxLCAiQmxvY2sgdG8gYmUgYWJzb3JiZWQgKHBhcnQpIiwgY3VyRGF0YSwgcGFydGlhbEJsb2NrKTsKKyAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgaSArPSBwYXJ0aWFsQmxvY2s7CisKKyAgICAgICAgICAgIFNuUF9BZGRCeXRlcyhpbnN0YW5jZS0+c3RhdGUsIGN1ckRhdGEsIGluc3RhbmNlLT5ieXRlSU9JbmRleCwgcGFydGlhbEJsb2NrKTsKKyAgICAgICAgICAgIGN1ckRhdGEgKz0gcGFydGlhbEJsb2NrOworICAgICAgICAgICAgaW5zdGFuY2UtPmJ5dGVJT0luZGV4ICs9IHBhcnRpYWxCbG9jazsKKyAgICAgICAgICAgIGlmIChpbnN0YW5jZS0+Ynl0ZUlPSW5kZXggPT0gcmF0ZUluQnl0ZXMpIHsKKyAgICAgICAgICAgICAgICBTblBfUGVybXV0ZShpbnN0YW5jZS0+c3RhdGUpOworICAgICAgICAgICAgICAgIGluc3RhbmNlLT5ieXRlSU9JbmRleCA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworaW50IFNwb25nZUFic29yYkxhc3RGZXdCaXRzKFNwb25nZUluc3RhbmNlICppbnN0YW5jZSwgdW5zaWduZWQgY2hhciBkZWxpbWl0ZWREYXRhKQoreworICAgIHVuc2lnbmVkIGludCByYXRlSW5CeXRlcyA9IGluc3RhbmNlLT5yYXRlLzg7CisKKyAgICBpZiAoZGVsaW1pdGVkRGF0YSA9PSAwKQorICAgICAgICByZXR1cm4gMTsKKyAgICBpZiAoaW5zdGFuY2UtPnNxdWVlemluZykKKyAgICAgICAgcmV0dXJuIDE7IC8qIFRvbyBsYXRlIGZvciBhZGRpdGlvbmFsIGlucHV0ICovCisKKworICAgICNpZmRlZiBLZWNjYWtSZWZlcmVuY2UKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgZGVsaW1pdGVkRGF0YTFbMV07CisgICAgICAgIGRlbGltaXRlZERhdGExWzBdID0gZGVsaW1pdGVkRGF0YTsKKyAgICAgICAgZGlzcGxheUJ5dGVzKDEsICJCbG9jayB0byBiZSBhYnNvcmJlZCAobGFzdCBmZXcgYml0cyArIGZpcnN0IGJpdCBvZiBwYWRkaW5nKSIsIGRlbGltaXRlZERhdGExLCAxKTsKKyAgICB9CisgICAgI2VuZGlmCisgICAgLyogTGFzdCBmZXcgYml0cywgd2hvc2UgZGVsaW1pdGVyIGNvaW5jaWRlcyB3aXRoIGZpcnN0IGJpdCBvZiBwYWRkaW5nICovCisKKyAgICBTblBfQWRkQnl0ZShpbnN0YW5jZS0+c3RhdGUsIGRlbGltaXRlZERhdGEsIGluc3RhbmNlLT5ieXRlSU9JbmRleCk7CisgICAgLyogSWYgdGhlIGZpcnN0IGJpdCBvZiBwYWRkaW5nIGlzIGF0IHBvc2l0aW9uIHJhdGUtMSwgd2UgbmVlZCBhIHdob2xlIG5ldyBibG9jayBmb3IgdGhlIHNlY29uZCBiaXQgb2YgcGFkZGluZyAqLworCisgICAgaWYgKChkZWxpbWl0ZWREYXRhID49IDB4ODApICYmIChpbnN0YW5jZS0+Ynl0ZUlPSW5kZXggPT0gKHJhdGVJbkJ5dGVzLTEpKSkKKyAgICAgICAgU25QX1Blcm11dGUoaW5zdGFuY2UtPnN0YXRlKTsKKyAgICAvKiBTZWNvbmQgYml0IG9mIHBhZGRpbmcgKi8KKworICAgIFNuUF9BZGRCeXRlKGluc3RhbmNlLT5zdGF0ZSwgMHg4MCwgcmF0ZUluQnl0ZXMtMSk7CisgICAgI2lmZGVmIEtlY2Nha1JlZmVyZW5jZQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgY2hhciBibG9ja1tTblBfd2lkdGgvOF07CisgICAgICAgIG1lbXNldChibG9jaywgMCwgU25QX3dpZHRoLzgpOworICAgICAgICBibG9ja1tyYXRlSW5CeXRlcy0xXSA9IDB4ODA7CisgICAgICAgIGRpc3BsYXlCeXRlcygxLCAiU2Vjb25kIGJpdCBvZiBwYWRkaW5nIiwgYmxvY2ssIHJhdGVJbkJ5dGVzKTsKKyAgICB9CisgICAgI2VuZGlmCisgICAgU25QX1Blcm11dGUoaW5zdGFuY2UtPnN0YXRlKTsKKyAgICBpbnN0YW5jZS0+Ynl0ZUlPSW5kZXggPSAwOworICAgIGluc3RhbmNlLT5zcXVlZXppbmcgPSAxOworICAgICNpZmRlZiBLZWNjYWtSZWZlcmVuY2UKKyAgICBkaXNwbGF5VGV4dCgxLCAiLS0tIFN3aXRjaGluZyB0byBzcXVlZXppbmcgcGhhc2UgLS0tIik7CisgICAgI2VuZGlmCisgICAgcmV0dXJuIDA7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworaW50IFNwb25nZVNxdWVlemUoU3BvbmdlSW5zdGFuY2UgKmluc3RhbmNlLCB1bnNpZ25lZCBjaGFyICpkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW4pCit7CisgICAgc2l6ZV90IGksIGo7CisgICAgdW5zaWduZWQgaW50IHBhcnRpYWxCbG9jazsKKyAgICB1bnNpZ25lZCBpbnQgcmF0ZUluQnl0ZXMgPSBpbnN0YW5jZS0+cmF0ZS84OworICAgIHVuc2lnbmVkIGNoYXIgKmN1ckRhdGE7CisKKyAgICBpZiAoIWluc3RhbmNlLT5zcXVlZXppbmcpCisgICAgICAgIFNwb25nZUFic29yYkxhc3RGZXdCaXRzKGluc3RhbmNlLCAweDAxKTsKKworICAgIGkgPSAwOworICAgIGN1ckRhdGEgPSBkYXRhOworICAgIHdoaWxlKGkgPCBkYXRhQnl0ZUxlbikgeworICAgICAgICBpZiAoKGluc3RhbmNlLT5ieXRlSU9JbmRleCA9PSByYXRlSW5CeXRlcykgJiYgKGRhdGFCeXRlTGVuID49IChpICsgcmF0ZUluQnl0ZXMpKSkgeworICAgICAgICAgICAgZm9yKGo9ZGF0YUJ5dGVMZW4taTsgaj49cmF0ZUluQnl0ZXM7IGotPXJhdGVJbkJ5dGVzKSB7CisgICAgICAgICAgICAgICAgU25QX1Blcm11dGUoaW5zdGFuY2UtPnN0YXRlKTsKKyAgICAgICAgICAgICAgICBTblBfRXh0cmFjdEJ5dGVzKGluc3RhbmNlLT5zdGF0ZSwgY3VyRGF0YSwgMCwgcmF0ZUluQnl0ZXMpOworICAgICAgICAgICAgICAgICNpZmRlZiBLZWNjYWtSZWZlcmVuY2UKKyAgICAgICAgICAgICAgICBkaXNwbGF5Qnl0ZXMoMSwgIlNxdWVlemVkIGJsb2NrIiwgY3VyRGF0YSwgcmF0ZUluQnl0ZXMpOworICAgICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgICAgIGN1ckRhdGErPXJhdGVJbkJ5dGVzOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaSA9IGRhdGFCeXRlTGVuIC0gajsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIG5vcm1hbCBsYW5lOiB1c2luZyB0aGUgbWVzc2FnZSBxdWV1ZSAqLworCisgICAgICAgICAgICBpZiAoaW5zdGFuY2UtPmJ5dGVJT0luZGV4ID09IHJhdGVJbkJ5dGVzKSB7CisgICAgICAgICAgICAgICAgU25QX1Blcm11dGUoaW5zdGFuY2UtPnN0YXRlKTsKKyAgICAgICAgICAgICAgICBpbnN0YW5jZS0+Ynl0ZUlPSW5kZXggPSAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcGFydGlhbEJsb2NrID0gKHVuc2lnbmVkIGludCkoZGF0YUJ5dGVMZW4gLSBpKTsKKyAgICAgICAgICAgIGlmIChwYXJ0aWFsQmxvY2sraW5zdGFuY2UtPmJ5dGVJT0luZGV4ID4gcmF0ZUluQnl0ZXMpCisgICAgICAgICAgICAgICAgcGFydGlhbEJsb2NrID0gcmF0ZUluQnl0ZXMtaW5zdGFuY2UtPmJ5dGVJT0luZGV4OworICAgICAgICAgICAgaSArPSBwYXJ0aWFsQmxvY2s7CisKKyAgICAgICAgICAgIFNuUF9FeHRyYWN0Qnl0ZXMoaW5zdGFuY2UtPnN0YXRlLCBjdXJEYXRhLCBpbnN0YW5jZS0+Ynl0ZUlPSW5kZXgsIHBhcnRpYWxCbG9jayk7CisgICAgICAgICAgICAjaWZkZWYgS2VjY2FrUmVmZXJlbmNlCisgICAgICAgICAgICBkaXNwbGF5Qnl0ZXMoMSwgIlNxdWVlemVkIGJsb2NrIChwYXJ0KSIsIGN1ckRhdGEsIHBhcnRpYWxCbG9jayk7CisgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgIGN1ckRhdGEgKz0gcGFydGlhbEJsb2NrOworICAgICAgICAgICAgaW5zdGFuY2UtPmJ5dGVJT0luZGV4ICs9IHBhcnRpYWxCbG9jazsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisjdW5kZWYgU3BvbmdlCisjdW5kZWYgU3BvbmdlSW5zdGFuY2UKKyN1bmRlZiBTcG9uZ2VJbml0aWFsaXplCisjdW5kZWYgU3BvbmdlQWJzb3JiCisjdW5kZWYgU3BvbmdlQWJzb3JiTGFzdEZld0JpdHMKKyN1bmRlZiBTcG9uZ2VTcXVlZXplCisjdW5kZWYgU25QX3N0YXRlU2l6ZUluQnl0ZXMKKyN1bmRlZiBTblBfc3RhdGVBbGlnbm1lbnQKKyN1bmRlZiBTblBfU3RhdGljSW5pdGlhbGl6ZQorI3VuZGVmIFNuUF9Jbml0aWFsaXplCisjdW5kZWYgU25QX0FkZEJ5dGUKKyN1bmRlZiBTblBfQWRkQnl0ZXMKKyN1bmRlZiBTblBfRXh0cmFjdEJ5dGVzCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL2tjcC9QbFNuUC1GYWxsYmFjay5pbmMgYi9Nb2R1bGVzL19zaGEzL2tjcC9QbFNuUC1GYWxsYmFjay5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2E5MTE5YQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMva2NwL1BsU25QLUZhbGxiYWNrLmluYwpAQCAtMCwwICsxLDI1NyBAQAorLyoKK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBLZWNjYWssIEtleWFrIGFuZCBLZXRqZSBUZWFtcywgbmFtZWx5LCBHdWlkbyBCZXJ0b25pLAorSm9hbiBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMsIEdpbGxlcyBWYW4gQXNzY2hlIGFuZCBSb25ueSBWYW4gS2VlciwgaGVyZWJ5CitkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiwgZmVlZGJhY2sgb3IgcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGVzOgoraHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXlhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXRqZS5ub2VrZW9uLm9yZy8KKworVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBpbXBsZW1lbnRlciBoYXMgd2FpdmVkIGFsbCBjb3B5cmlnaHQKK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgoraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworKi8KKworLyogZXhwZWN0IFBsU25QX2Jhc2VQYXJhbGxlbGlzbSwgUGxTblBfdGFyZ2V0UGFyYWxsZWxpc20gKi8KKworLyogZXhwZWN0IFNuUF9zdGF0ZVNpemVJbkJ5dGVzLCBTblBfc3RhdGVBbGlnbm1lbnQgKi8KKworLyogZXhwZWN0IHByZWZpeCAqLworCisvKiBleHBlY3QgU25QXyogKi8KKworCisjZGVmaW5lIEpPSU4wKGEsIGIpICAgICAgICAgICAgICAgICAgICAgYSAjIyBiCisjZGVmaW5lIEpPSU4oYSwgYikgICAgICAgICAgICAgICAgICAgICAgSk9JTjAoYSwgYikKKworI2RlZmluZSBQbFNuUF9TdGF0aWNJbml0aWFsaXplICAgICAgICAgIEpPSU4ocHJlZml4LCBfU3RhdGljSW5pdGlhbGl6ZSkKKyNkZWZpbmUgUGxTblBfSW5pdGlhbGl6ZUFsbCAgICAgICAgICAgICBKT0lOKHByZWZpeCwgX0luaXRpYWxpemVBbGwpCisjZGVmaW5lIFBsU25QX0FkZEJ5dGUgICAgICAgICAgICAgICAgICAgSk9JTihwcmVmaXgsIF9BZGRCeXRlKQorI2RlZmluZSBQbFNuUF9BZGRCeXRlcyAgICAgICAgICAgICAgICAgIEpPSU4ocHJlZml4LCBfQWRkQnl0ZXMpCisjZGVmaW5lIFBsU25QX0FkZExhbmVzQWxsICAgICAgICAgICAgICAgSk9JTihwcmVmaXgsIF9BZGRMYW5lc0FsbCkKKyNkZWZpbmUgUGxTblBfT3ZlcndyaXRlQnl0ZXMgICAgICAgICAgICBKT0lOKHByZWZpeCwgX092ZXJ3cml0ZUJ5dGVzKQorI2RlZmluZSBQbFNuUF9PdmVyd3JpdGVMYW5lc0FsbCAgICAgICAgIEpPSU4ocHJlZml4LCBfT3ZlcndyaXRlTGFuZXNBbGwpCisjZGVmaW5lIFBsU25QX092ZXJ3cml0ZVdpdGhaZXJvZXMgICAgICAgSk9JTihwcmVmaXgsIF9PdmVyd3JpdGVXaXRoWmVyb2VzKQorI2RlZmluZSBQbFNuUF9FeHRyYWN0Qnl0ZXMgICAgICAgICAgICAgIEpPSU4ocHJlZml4LCBfRXh0cmFjdEJ5dGVzKQorI2RlZmluZSBQbFNuUF9FeHRyYWN0TGFuZXNBbGwgICAgICAgICAgIEpPSU4ocHJlZml4LCBfRXh0cmFjdExhbmVzQWxsKQorI2RlZmluZSBQbFNuUF9FeHRyYWN0QW5kQWRkQnl0ZXMgICAgICAgIEpPSU4ocHJlZml4LCBfRXh0cmFjdEFuZEFkZEJ5dGVzKQorI2RlZmluZSBQbFNuUF9FeHRyYWN0QW5kQWRkTGFuZXNBbGwgICAgIEpPSU4ocHJlZml4LCBfRXh0cmFjdEFuZEFkZExhbmVzQWxsKQorCisjaWYgKFBsU25QX2Jhc2VQYXJhbGxlbGlzbSA9PSAxKQorICAgICNkZWZpbmUgU25QX3N0YXRlU2l6ZUluQnl0ZXMgICAgICAgICAgICBKT0lOKFNuUCwgX3N0YXRlU2l6ZUluQnl0ZXMpCisgICAgI2RlZmluZSBTblBfc3RhdGVBbGlnbm1lbnQgICAgICAgICAgICAgIEpPSU4oU25QLCBfc3RhdGVBbGlnbm1lbnQpCisjZWxzZQorICAgICNkZWZpbmUgU25QX3N0YXRlU2l6ZUluQnl0ZXMgICAgICAgICAgICBKT0lOKFNuUCwgX3N0YXRlc1NpemVJbkJ5dGVzKQorICAgICNkZWZpbmUgU25QX3N0YXRlQWxpZ25tZW50ICAgICAgICAgICAgICBKT0lOKFNuUCwgX3N0YXRlc0FsaWdubWVudCkKKyNlbmRpZgorI2RlZmluZSBQbFNuUF9mYWN0b3IgKChQbFNuUF90YXJnZXRQYXJhbGxlbGlzbSkvKFBsU25QX2Jhc2VQYXJhbGxlbGlzbSkpCisjZGVmaW5lIFNuUF9zdGF0ZU9mZnNldCAoKChTblBfc3RhdGVTaXplSW5CeXRlcysoU25QX3N0YXRlQWxpZ25tZW50LTEpKS9TblBfc3RhdGVBbGlnbm1lbnQpKlNuUF9zdGF0ZUFsaWdubWVudCkKKyNkZWZpbmUgc3RhdGVXaXRoSW5kZXgoaSkgKCh1bnNpZ25lZCBjaGFyICopc3RhdGVzKygoaSkqU25QX3N0YXRlT2Zmc2V0KSkKKworI2RlZmluZSBTblBfU3RhdGljSW5pdGlhbGl6ZSAgICAgICAgICAgIEpPSU4oU25QLCBfU3RhdGljSW5pdGlhbGl6ZSkKKyNkZWZpbmUgU25QX0luaXRpYWxpemUgICAgICAgICAgICAgICAgICBKT0lOKFNuUCwgX0luaXRpYWxpemUpCisjZGVmaW5lIFNuUF9Jbml0aWFsaXplQWxsICAgICAgICAgICAgICAgSk9JTihTblAsIF9Jbml0aWFsaXplQWxsKQorI2RlZmluZSBTblBfQWRkQnl0ZSAgICAgICAgICAgICAgICAgICAgIEpPSU4oU25QLCBfQWRkQnl0ZSkKKyNkZWZpbmUgU25QX0FkZEJ5dGVzICAgICAgICAgICAgICAgICAgICBKT0lOKFNuUCwgX0FkZEJ5dGVzKQorI2RlZmluZSBTblBfQWRkTGFuZXNBbGwgICAgICAgICAgICAgICAgIEpPSU4oU25QLCBfQWRkTGFuZXNBbGwpCisjZGVmaW5lIFNuUF9PdmVyd3JpdGVCeXRlcyAgICAgICAgICAgICAgSk9JTihTblAsIF9PdmVyd3JpdGVCeXRlcykKKyNkZWZpbmUgU25QX092ZXJ3cml0ZUxhbmVzQWxsICAgICAgICAgICBKT0lOKFNuUCwgX092ZXJ3cml0ZUxhbmVzQWxsKQorI2RlZmluZSBTblBfT3ZlcndyaXRlV2l0aFplcm9lcyAgICAgICAgIEpPSU4oU25QLCBfT3ZlcndyaXRlV2l0aFplcm9lcykKKyNkZWZpbmUgU25QX0V4dHJhY3RCeXRlcyAgICAgICAgICAgICAgICBKT0lOKFNuUCwgX0V4dHJhY3RCeXRlcykKKyNkZWZpbmUgU25QX0V4dHJhY3RMYW5lc0FsbCAgICAgICAgICAgICBKT0lOKFNuUCwgX0V4dHJhY3RMYW5lc0FsbCkKKyNkZWZpbmUgU25QX0V4dHJhY3RBbmRBZGRCeXRlcyAgICAgICAgICBKT0lOKFNuUCwgX0V4dHJhY3RBbmRBZGRCeXRlcykKKyNkZWZpbmUgU25QX0V4dHJhY3RBbmRBZGRMYW5lc0FsbCAgICAgICBKT0lOKFNuUCwgX0V4dHJhY3RBbmRBZGRMYW5lc0FsbCkKKwordm9pZCBQbFNuUF9TdGF0aWNJbml0aWFsaXplKCB2b2lkICkKK3sKKyAgICBTblBfU3RhdGljSW5pdGlhbGl6ZSgpOworfQorCit2b2lkIFBsU25QX0luaXRpYWxpemVBbGwodm9pZCAqc3RhdGVzKQoreworICAgIHVuc2lnbmVkIGludCBpOworCisgICAgZm9yKGk9MDsgaTxQbFNuUF9mYWN0b3I7IGkrKykKKyAgICAjaWYgKFBsU25QX2Jhc2VQYXJhbGxlbGlzbSA9PSAxKQorICAgICAgICBTblBfSW5pdGlhbGl6ZShzdGF0ZVdpdGhJbmRleChpKSk7CisgICAgI2Vsc2UKKyAgICAgICAgU25QX0luaXRpYWxpemVBbGwoc3RhdGVXaXRoSW5kZXgoaSkpOworICAgICNlbmRpZgorfQorCit2b2lkIFBsU25QX0FkZEJ5dGUodm9pZCAqc3RhdGVzLCB1bnNpZ25lZCBpbnQgaW5zdGFuY2VJbmRleCwgdW5zaWduZWQgY2hhciBieXRlLCB1bnNpZ25lZCBpbnQgb2Zmc2V0KQoreworICAgICNpZiAoUGxTblBfYmFzZVBhcmFsbGVsaXNtID09IDEpCisgICAgICAgIFNuUF9BZGRCeXRlKHN0YXRlV2l0aEluZGV4KGluc3RhbmNlSW5kZXgpLCBieXRlLCBvZmZzZXQpOworICAgICNlbHNlCisgICAgICAgIFNuUF9BZGRCeXRlKHN0YXRlV2l0aEluZGV4KGluc3RhbmNlSW5kZXgvUGxTblBfYmFzZVBhcmFsbGVsaXNtKSwgaW5zdGFuY2VJbmRleCVQbFNuUF9iYXNlUGFyYWxsZWxpc20sIGJ5dGUsIG9mZnNldCk7CisgICAgI2VuZGlmCit9CisKK3ZvaWQgUGxTblBfQWRkQnl0ZXModm9pZCAqc3RhdGVzLCB1bnNpZ25lZCBpbnQgaW5zdGFuY2VJbmRleCwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCkKK3sKKyAgICAjaWYgKFBsU25QX2Jhc2VQYXJhbGxlbGlzbSA9PSAxKQorICAgICAgICBTblBfQWRkQnl0ZXMoc3RhdGVXaXRoSW5kZXgoaW5zdGFuY2VJbmRleCksIGRhdGEsIG9mZnNldCwgbGVuZ3RoKTsKKyAgICAjZWxzZQorICAgICAgICBTblBfQWRkQnl0ZXMoc3RhdGVXaXRoSW5kZXgoaW5zdGFuY2VJbmRleC9QbFNuUF9iYXNlUGFyYWxsZWxpc20pLCBpbnN0YW5jZUluZGV4JVBsU25QX2Jhc2VQYXJhbGxlbGlzbSwgZGF0YSwgb2Zmc2V0LCBsZW5ndGgpOworICAgICNlbmRpZgorfQorCit2b2lkIFBsU25QX0FkZExhbmVzQWxsKHZvaWQgKnN0YXRlcywgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IGxhbmVDb3VudCwgdW5zaWduZWQgaW50IGxhbmVPZmZzZXQpCit7CisgICAgdW5zaWduZWQgaW50IGk7CisKKyAgICBmb3IoaT0wOyBpPFBsU25QX2ZhY3RvcjsgaSsrKSB7CisgICAgICAgICNpZiAoUGxTblBfYmFzZVBhcmFsbGVsaXNtID09IDEpCisgICAgICAgICAgICBTblBfQWRkQnl0ZXMoc3RhdGVXaXRoSW5kZXgoaSksIGRhdGEsIDAsIGxhbmVDb3VudCpTblBfbGFuZUxlbmd0aEluQnl0ZXMpOworICAgICAgICAjZWxzZQorICAgICAgICAgICAgU25QX0FkZExhbmVzQWxsKHN0YXRlV2l0aEluZGV4KGkpLCBkYXRhLCBsYW5lQ291bnQsIGxhbmVPZmZzZXQpOworICAgICAgICAjZW5kaWYKKyAgICAgICAgZGF0YSArPSBQbFNuUF9iYXNlUGFyYWxsZWxpc20qbGFuZU9mZnNldCpTblBfbGFuZUxlbmd0aEluQnl0ZXM7CisgICAgfQorfQorCit2b2lkIFBsU25QX092ZXJ3cml0ZUJ5dGVzKHZvaWQgKnN0YXRlcywgdW5zaWduZWQgaW50IGluc3RhbmNlSW5kZXgsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpCit7CisgICAgI2lmIChQbFNuUF9iYXNlUGFyYWxsZWxpc20gPT0gMSkKKyAgICAgICAgU25QX092ZXJ3cml0ZUJ5dGVzKHN0YXRlV2l0aEluZGV4KGluc3RhbmNlSW5kZXgpLCBkYXRhLCBvZmZzZXQsIGxlbmd0aCk7CisgICAgI2Vsc2UKKyAgICAgICAgU25QX092ZXJ3cml0ZUJ5dGVzKHN0YXRlV2l0aEluZGV4KGluc3RhbmNlSW5kZXgvUGxTblBfYmFzZVBhcmFsbGVsaXNtKSwgaW5zdGFuY2VJbmRleCVQbFNuUF9iYXNlUGFyYWxsZWxpc20sIGRhdGEsIG9mZnNldCwgbGVuZ3RoKTsKKyAgICAjZW5kaWYKK30KKwordm9pZCBQbFNuUF9PdmVyd3JpdGVMYW5lc0FsbCh2b2lkICpzdGF0ZXMsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBsYW5lQ291bnQsIHVuc2lnbmVkIGludCBsYW5lT2Zmc2V0KQoreworICAgIHVuc2lnbmVkIGludCBpOworCisgICAgZm9yKGk9MDsgaTxQbFNuUF9mYWN0b3I7IGkrKykgeworICAgICAgICAjaWYgKFBsU25QX2Jhc2VQYXJhbGxlbGlzbSA9PSAxKQorICAgICAgICAgICAgU25QX092ZXJ3cml0ZUJ5dGVzKHN0YXRlV2l0aEluZGV4KGkpLCBkYXRhLCAwLCBsYW5lQ291bnQqU25QX2xhbmVMZW5ndGhJbkJ5dGVzKTsKKyAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgIFNuUF9PdmVyd3JpdGVMYW5lc0FsbChzdGF0ZVdpdGhJbmRleChpKSwgZGF0YSwgbGFuZUNvdW50LCBsYW5lT2Zmc2V0KTsKKyAgICAgICAgI2VuZGlmCisgICAgICAgIGRhdGEgKz0gUGxTblBfYmFzZVBhcmFsbGVsaXNtKmxhbmVPZmZzZXQqU25QX2xhbmVMZW5ndGhJbkJ5dGVzOworICAgIH0KK30KKwordm9pZCBQbFNuUF9PdmVyd3JpdGVXaXRoWmVyb2VzKHZvaWQgKnN0YXRlcywgdW5zaWduZWQgaW50IGluc3RhbmNlSW5kZXgsIHVuc2lnbmVkIGludCBieXRlQ291bnQpCit7CisgICAgI2lmIChQbFNuUF9iYXNlUGFyYWxsZWxpc20gPT0gMSkKKyAgICAgICAgU25QX092ZXJ3cml0ZVdpdGhaZXJvZXMoc3RhdGVXaXRoSW5kZXgoaW5zdGFuY2VJbmRleCksIGJ5dGVDb3VudCk7CisgICAgI2Vsc2UKKyAgICAgICAgU25QX092ZXJ3cml0ZVdpdGhaZXJvZXMoc3RhdGVXaXRoSW5kZXgoaW5zdGFuY2VJbmRleC9QbFNuUF9iYXNlUGFyYWxsZWxpc20pLCBpbnN0YW5jZUluZGV4JVBsU25QX2Jhc2VQYXJhbGxlbGlzbSwgYnl0ZUNvdW50KTsKKyAgICAjZW5kaWYKK30KKwordm9pZCBQbFNuUF9QZXJtdXRlQWxsKHZvaWQgKnN0YXRlcykKK3sKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIGZvcihpPTA7IGk8UGxTblBfZmFjdG9yOyBpKyspIHsKKyAgICAgICAgI2lmIChQbFNuUF9iYXNlUGFyYWxsZWxpc20gPT0gMSkKKyAgICAgICAgICAgIFNuUF9QZXJtdXRlKHN0YXRlV2l0aEluZGV4KGkpKTsKKyAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgIFNuUF9QZXJtdXRlQWxsKHN0YXRlV2l0aEluZGV4KGkpKTsKKyAgICAgICAgI2VuZGlmCisgICAgfQorfQorCisjaWYgKGRlZmluZWQoU25QX1Blcm11dGVfMTJyb3VuZHMpIHx8IGRlZmluZWQoU25QX1Blcm11dGVBbGxfMTJyb3VuZHMpKQordm9pZCBQbFNuUF9QZXJtdXRlQWxsXzEycm91bmRzKHZvaWQgKnN0YXRlcykKK3sKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIGZvcihpPTA7IGk8UGxTblBfZmFjdG9yOyBpKyspIHsKKyAgICAgICAgI2lmIChQbFNuUF9iYXNlUGFyYWxsZWxpc20gPT0gMSkKKyAgICAgICAgICAgIFNuUF9QZXJtdXRlXzEycm91bmRzKHN0YXRlV2l0aEluZGV4KGkpKTsKKyAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgIFNuUF9QZXJtdXRlQWxsXzEycm91bmRzKHN0YXRlV2l0aEluZGV4KGkpKTsKKyAgICAgICAgI2VuZGlmCisgICAgfQorfQorI2VuZGlmCisKK3ZvaWQgUGxTblBfRXh0cmFjdEJ5dGVzKHZvaWQgKnN0YXRlcywgdW5zaWduZWQgaW50IGluc3RhbmNlSW5kZXgsIHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpCit7CisgICAgI2lmIChQbFNuUF9iYXNlUGFyYWxsZWxpc20gPT0gMSkKKyAgICAgICAgU25QX0V4dHJhY3RCeXRlcyhzdGF0ZVdpdGhJbmRleChpbnN0YW5jZUluZGV4KSwgZGF0YSwgb2Zmc2V0LCBsZW5ndGgpOworICAgICNlbHNlCisgICAgICAgIFNuUF9FeHRyYWN0Qnl0ZXMoc3RhdGVXaXRoSW5kZXgoaW5zdGFuY2VJbmRleC9QbFNuUF9iYXNlUGFyYWxsZWxpc20pLCBpbnN0YW5jZUluZGV4JVBsU25QX2Jhc2VQYXJhbGxlbGlzbSwgZGF0YSwgb2Zmc2V0LCBsZW5ndGgpOworICAgICNlbmRpZgorfQorCit2b2lkIFBsU25QX0V4dHJhY3RMYW5lc0FsbChjb25zdCB2b2lkICpzdGF0ZXMsIHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBsYW5lQ291bnQsIHVuc2lnbmVkIGludCBsYW5lT2Zmc2V0KQoreworICAgIHVuc2lnbmVkIGludCBpOworCisgICAgZm9yKGk9MDsgaTxQbFNuUF9mYWN0b3I7IGkrKykgeworICAgICAgICAjaWYgKFBsU25QX2Jhc2VQYXJhbGxlbGlzbSA9PSAxKQorICAgICAgICAgICAgU25QX0V4dHJhY3RCeXRlcyhzdGF0ZVdpdGhJbmRleChpKSwgZGF0YSwgMCwgbGFuZUNvdW50KlNuUF9sYW5lTGVuZ3RoSW5CeXRlcyk7CisgICAgICAgICNlbHNlCisgICAgICAgICAgICBTblBfRXh0cmFjdExhbmVzQWxsKHN0YXRlV2l0aEluZGV4KGkpLCBkYXRhLCBsYW5lQ291bnQsIGxhbmVPZmZzZXQpOworICAgICAgICAjZW5kaWYKKyAgICAgICAgZGF0YSArPSBsYW5lT2Zmc2V0KlNuUF9sYW5lTGVuZ3RoSW5CeXRlcypQbFNuUF9iYXNlUGFyYWxsZWxpc207CisgICAgfQorfQorCit2b2lkIFBsU25QX0V4dHJhY3RBbmRBZGRCeXRlcyh2b2lkICpzdGF0ZXMsIHVuc2lnbmVkIGludCBpbnN0YW5jZUluZGV4LCBjb25zdCB1bnNpZ25lZCBjaGFyICppbnB1dCwgdW5zaWduZWQgY2hhciAqb3V0cHV0LCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworICAgICNpZiAoUGxTblBfYmFzZVBhcmFsbGVsaXNtID09IDEpCisgICAgICAgIFNuUF9FeHRyYWN0QW5kQWRkQnl0ZXMoc3RhdGVXaXRoSW5kZXgoaW5zdGFuY2VJbmRleCksIGlucHV0LCBvdXRwdXQsIG9mZnNldCwgbGVuZ3RoKTsKKyAgICAjZWxzZQorICAgICAgICBTblBfRXh0cmFjdEFuZEFkZEJ5dGVzKHN0YXRlV2l0aEluZGV4KGluc3RhbmNlSW5kZXgvUGxTblBfYmFzZVBhcmFsbGVsaXNtKSwgaW5zdGFuY2VJbmRleCVQbFNuUF9iYXNlUGFyYWxsZWxpc20sIGlucHV0LCBvdXRwdXQsIG9mZnNldCwgbGVuZ3RoKTsKKyAgICAjZW5kaWYKK30KKwordm9pZCBQbFNuUF9FeHRyYWN0QW5kQWRkTGFuZXNBbGwoY29uc3Qgdm9pZCAqc3RhdGVzLCBjb25zdCB1bnNpZ25lZCBjaGFyICppbnB1dCwgdW5zaWduZWQgY2hhciAqb3V0cHV0LCB1bnNpZ25lZCBpbnQgbGFuZUNvdW50LCB1bnNpZ25lZCBpbnQgbGFuZU9mZnNldCkKK3sKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIGZvcihpPTA7IGk8UGxTblBfZmFjdG9yOyBpKyspIHsKKyAgICAgICAgI2lmIChQbFNuUF9iYXNlUGFyYWxsZWxpc20gPT0gMSkKKyAgICAgICAgICAgIFNuUF9FeHRyYWN0QW5kQWRkQnl0ZXMoc3RhdGVXaXRoSW5kZXgoaSksIGlucHV0LCBvdXRwdXQsIDAsIGxhbmVDb3VudCpTblBfbGFuZUxlbmd0aEluQnl0ZXMpOworICAgICAgICAjZWxzZQorICAgICAgICAgICAgU25QX0V4dHJhY3RBbmRBZGRMYW5lc0FsbChzdGF0ZVdpdGhJbmRleChpKSwgaW5wdXQsIG91dHB1dCwgbGFuZUNvdW50LCBsYW5lT2Zmc2V0KTsKKyAgICAgICAgI2VuZGlmCisgICAgICAgIGlucHV0ICs9IGxhbmVPZmZzZXQqU25QX2xhbmVMZW5ndGhJbkJ5dGVzKlBsU25QX2Jhc2VQYXJhbGxlbGlzbTsKKyAgICAgICAgb3V0cHV0ICs9IGxhbmVPZmZzZXQqU25QX2xhbmVMZW5ndGhJbkJ5dGVzKlBsU25QX2Jhc2VQYXJhbGxlbGlzbTsKKyAgICB9Cit9CisKKyN1bmRlZiBQbFNuUF9mYWN0b3IKKyN1bmRlZiBTblBfc3RhdGVPZmZzZXQKKyN1bmRlZiBzdGF0ZVdpdGhJbmRleAorI3VuZGVmIEpPSU4wCisjdW5kZWYgSk9JTgorI3VuZGVmIFBsU25QX1N0YXRpY0luaXRpYWxpemUKKyN1bmRlZiBQbFNuUF9Jbml0aWFsaXplQWxsCisjdW5kZWYgUGxTblBfQWRkQnl0ZQorI3VuZGVmIFBsU25QX0FkZEJ5dGVzCisjdW5kZWYgUGxTblBfQWRkTGFuZXNBbGwKKyN1bmRlZiBQbFNuUF9PdmVyd3JpdGVCeXRlcworI3VuZGVmIFBsU25QX092ZXJ3cml0ZUxhbmVzQWxsCisjdW5kZWYgUGxTblBfT3ZlcndyaXRlV2l0aFplcm9lcworI3VuZGVmIFBsU25QX1Blcm11dGVBbGwKKyN1bmRlZiBQbFNuUF9FeHRyYWN0Qnl0ZXMKKyN1bmRlZiBQbFNuUF9FeHRyYWN0TGFuZXNBbGwKKyN1bmRlZiBQbFNuUF9FeHRyYWN0QW5kQWRkQnl0ZXMKKyN1bmRlZiBQbFNuUF9FeHRyYWN0QW5kQWRkTGFuZXNBbGwKKyN1bmRlZiBTblBfc3RhdGVBbGlnbm1lbnQKKyN1bmRlZiBTblBfc3RhdGVTaXplSW5CeXRlcworI3VuZGVmIFBsU25QX2ZhY3RvcgorI3VuZGVmIFNuUF9zdGF0ZU9mZnNldAorI3VuZGVmIHN0YXRlV2l0aEluZGV4CisjdW5kZWYgU25QX1N0YXRpY0luaXRpYWxpemUKKyN1bmRlZiBTblBfSW5pdGlhbGl6ZQorI3VuZGVmIFNuUF9Jbml0aWFsaXplQWxsCisjdW5kZWYgU25QX0FkZEJ5dGUKKyN1bmRlZiBTblBfQWRkQnl0ZXMKKyN1bmRlZiBTblBfQWRkTGFuZXNBbGwKKyN1bmRlZiBTblBfT3ZlcndyaXRlQnl0ZXMKKyN1bmRlZiBTblBfT3ZlcndyaXRlV2l0aFplcm9lcworI3VuZGVmIFNuUF9PdmVyd3JpdGVMYW5lc0FsbAorI3VuZGVmIFNuUF9FeHRyYWN0Qnl0ZXMKKyN1bmRlZiBTblBfRXh0cmFjdExhbmVzQWxsCisjdW5kZWYgU25QX0V4dHJhY3RBbmRBZGRCeXRlcworI3VuZGVmIFNuUF9FeHRyYWN0QW5kQWRkTGFuZXNBbGwKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NoYTMva2NwL1NuUC1SZWxhbmVkLmggYi9Nb2R1bGVzL19zaGEzL2tjcC9TblAtUmVsYW5lZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4NmU2MzUKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19zaGEzL2tjcC9TblAtUmVsYW5lZC5oCkBAIC0wLDAgKzEsMTM0IEBACisvKgorSW1wbGVtZW50YXRpb24gYnkgdGhlIEtlY2NhaywgS2V5YWsgYW5kIEtldGplIFRlYW1zLCBuYW1lbHksIEd1aWRvIEJlcnRvbmksCitKb2FuIERhZW1lbiwgTWljaGHDq2wgUGVldGVycywgR2lsbGVzIFZhbiBBc3NjaGUgYW5kIFJvbm55IFZhbiBLZWVyLCBoZXJlYnkKK2Rlbm90ZWQgYXMgInRoZSBpbXBsZW1lbnRlciIuCisKK0ZvciBtb3JlIGluZm9ybWF0aW9uLCBmZWVkYmFjayBvciBxdWVzdGlvbnMsIHBsZWFzZSByZWZlciB0byBvdXIgd2Vic2l0ZXM6CitodHRwOi8va2VjY2FrLm5vZWtlb24ub3JnLworaHR0cDovL2tleWFrLm5vZWtlb24ub3JnLworaHR0cDovL2tldGplLm5vZWtlb24ub3JnLworCitUbyB0aGUgZXh0ZW50IHBvc3NpYmxlIHVuZGVyIGxhdywgdGhlIGltcGxlbWVudGVyIGhhcyB3YWl2ZWQgYWxsIGNvcHlyaWdodAorYW5kIHJlbGF0ZWQgb3IgbmVpZ2hib3JpbmcgcmlnaHRzIHRvIHRoZSBzb3VyY2UgY29kZSBpbiB0aGlzIGZpbGUuCitodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCisqLworCisjaWZuZGVmIF9TblBfUmVsYW5lZF9oXworI2RlZmluZSBfU25QX1JlbGFuZWRfaF8KKworI2RlZmluZSBTblBfQWRkQnl0ZXMoc3RhdGUsIGRhdGEsIG9mZnNldCwgbGVuZ3RoLCBTblBfQWRkTGFuZXMsIFNuUF9BZGRCeXRlc0luTGFuZSwgU25QX2xhbmVMZW5ndGhJbkJ5dGVzKSBcCisgICAgeyBcCisgICAgICAgIGlmICgob2Zmc2V0KSA9PSAwKSB7IFwKKyAgICAgICAgICAgIFNuUF9BZGRMYW5lcyhzdGF0ZSwgZGF0YSwgKGxlbmd0aCkvU25QX2xhbmVMZW5ndGhJbkJ5dGVzKTsgXAorICAgICAgICAgICAgU25QX0FkZEJ5dGVzSW5MYW5lKHN0YXRlLCBcCisgICAgICAgICAgICAgICAgKGxlbmd0aCkvU25QX2xhbmVMZW5ndGhJbkJ5dGVzLCBcCisgICAgICAgICAgICAgICAgKGRhdGEpKygobGVuZ3RoKS9TblBfbGFuZUxlbmd0aEluQnl0ZXMpKlNuUF9sYW5lTGVuZ3RoSW5CeXRlcywgXAorICAgICAgICAgICAgICAgIDAsIFwKKyAgICAgICAgICAgICAgICAobGVuZ3RoKSVTblBfbGFuZUxlbmd0aEluQnl0ZXMpOyBcCisgICAgICAgIH0gXAorICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgdW5zaWduZWQgaW50IF9zaXplTGVmdCA9IChsZW5ndGgpOyBcCisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX2xhbmVQb3NpdGlvbiA9IChvZmZzZXQpL1NuUF9sYW5lTGVuZ3RoSW5CeXRlczsgXAorICAgICAgICAgICAgdW5zaWduZWQgaW50IF9vZmZzZXRJbkxhbmUgPSAob2Zmc2V0KSVTblBfbGFuZUxlbmd0aEluQnl0ZXM7IFwKKyAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKl9jdXJEYXRhID0gKGRhdGEpOyBcCisgICAgICAgICAgICB3aGlsZShfc2l6ZUxlZnQgPiAwKSB7IFwKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX2J5dGVzSW5MYW5lID0gU25QX2xhbmVMZW5ndGhJbkJ5dGVzIC0gX29mZnNldEluTGFuZTsgXAorICAgICAgICAgICAgICAgIGlmIChfYnl0ZXNJbkxhbmUgPiBfc2l6ZUxlZnQpIFwKKyAgICAgICAgICAgICAgICAgICAgX2J5dGVzSW5MYW5lID0gX3NpemVMZWZ0OyBcCisgICAgICAgICAgICAgICAgU25QX0FkZEJ5dGVzSW5MYW5lKHN0YXRlLCBfbGFuZVBvc2l0aW9uLCBfY3VyRGF0YSwgX29mZnNldEluTGFuZSwgX2J5dGVzSW5MYW5lKTsgXAorICAgICAgICAgICAgICAgIF9zaXplTGVmdCAtPSBfYnl0ZXNJbkxhbmU7IFwKKyAgICAgICAgICAgICAgICBfbGFuZVBvc2l0aW9uKys7IFwKKyAgICAgICAgICAgICAgICBfb2Zmc2V0SW5MYW5lID0gMDsgXAorICAgICAgICAgICAgICAgIF9jdXJEYXRhICs9IF9ieXRlc0luTGFuZTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgIH0KKworI2RlZmluZSBTblBfT3ZlcndyaXRlQnl0ZXMoc3RhdGUsIGRhdGEsIG9mZnNldCwgbGVuZ3RoLCBTblBfT3ZlcndyaXRlTGFuZXMsIFNuUF9PdmVyd3JpdGVCeXRlc0luTGFuZSwgU25QX2xhbmVMZW5ndGhJbkJ5dGVzKSBcCisgICAgeyBcCisgICAgICAgIGlmICgob2Zmc2V0KSA9PSAwKSB7IFwKKyAgICAgICAgICAgIFNuUF9PdmVyd3JpdGVMYW5lcyhzdGF0ZSwgZGF0YSwgKGxlbmd0aCkvU25QX2xhbmVMZW5ndGhJbkJ5dGVzKTsgXAorICAgICAgICAgICAgU25QX092ZXJ3cml0ZUJ5dGVzSW5MYW5lKHN0YXRlLCBcCisgICAgICAgICAgICAgICAgKGxlbmd0aCkvU25QX2xhbmVMZW5ndGhJbkJ5dGVzLCBcCisgICAgICAgICAgICAgICAgKGRhdGEpKygobGVuZ3RoKS9TblBfbGFuZUxlbmd0aEluQnl0ZXMpKlNuUF9sYW5lTGVuZ3RoSW5CeXRlcywgXAorICAgICAgICAgICAgICAgIDAsIFwKKyAgICAgICAgICAgICAgICAobGVuZ3RoKSVTblBfbGFuZUxlbmd0aEluQnl0ZXMpOyBcCisgICAgICAgIH0gXAorICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgdW5zaWduZWQgaW50IF9zaXplTGVmdCA9IChsZW5ndGgpOyBcCisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX2xhbmVQb3NpdGlvbiA9IChvZmZzZXQpL1NuUF9sYW5lTGVuZ3RoSW5CeXRlczsgXAorICAgICAgICAgICAgdW5zaWduZWQgaW50IF9vZmZzZXRJbkxhbmUgPSAob2Zmc2V0KSVTblBfbGFuZUxlbmd0aEluQnl0ZXM7IFwKKyAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKl9jdXJEYXRhID0gKGRhdGEpOyBcCisgICAgICAgICAgICB3aGlsZShfc2l6ZUxlZnQgPiAwKSB7IFwKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX2J5dGVzSW5MYW5lID0gU25QX2xhbmVMZW5ndGhJbkJ5dGVzIC0gX29mZnNldEluTGFuZTsgXAorICAgICAgICAgICAgICAgIGlmIChfYnl0ZXNJbkxhbmUgPiBfc2l6ZUxlZnQpIFwKKyAgICAgICAgICAgICAgICAgICAgX2J5dGVzSW5MYW5lID0gX3NpemVMZWZ0OyBcCisgICAgICAgICAgICAgICAgU25QX092ZXJ3cml0ZUJ5dGVzSW5MYW5lKHN0YXRlLCBfbGFuZVBvc2l0aW9uLCBfY3VyRGF0YSwgX29mZnNldEluTGFuZSwgX2J5dGVzSW5MYW5lKTsgXAorICAgICAgICAgICAgICAgIF9zaXplTGVmdCAtPSBfYnl0ZXNJbkxhbmU7IFwKKyAgICAgICAgICAgICAgICBfbGFuZVBvc2l0aW9uKys7IFwKKyAgICAgICAgICAgICAgICBfb2Zmc2V0SW5MYW5lID0gMDsgXAorICAgICAgICAgICAgICAgIF9jdXJEYXRhICs9IF9ieXRlc0luTGFuZTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgIH0KKworI2RlZmluZSBTblBfRXh0cmFjdEJ5dGVzKHN0YXRlLCBkYXRhLCBvZmZzZXQsIGxlbmd0aCwgU25QX0V4dHJhY3RMYW5lcywgU25QX0V4dHJhY3RCeXRlc0luTGFuZSwgU25QX2xhbmVMZW5ndGhJbkJ5dGVzKSBcCisgICAgeyBcCisgICAgICAgIGlmICgob2Zmc2V0KSA9PSAwKSB7IFwKKyAgICAgICAgICAgIFNuUF9FeHRyYWN0TGFuZXMoc3RhdGUsIGRhdGEsIChsZW5ndGgpL1NuUF9sYW5lTGVuZ3RoSW5CeXRlcyk7IFwKKyAgICAgICAgICAgIFNuUF9FeHRyYWN0Qnl0ZXNJbkxhbmUoc3RhdGUsIFwKKyAgICAgICAgICAgICAgICAobGVuZ3RoKS9TblBfbGFuZUxlbmd0aEluQnl0ZXMsIFwKKyAgICAgICAgICAgICAgICAoZGF0YSkrKChsZW5ndGgpL1NuUF9sYW5lTGVuZ3RoSW5CeXRlcykqU25QX2xhbmVMZW5ndGhJbkJ5dGVzLCBcCisgICAgICAgICAgICAgICAgMCwgXAorICAgICAgICAgICAgICAgIChsZW5ndGgpJVNuUF9sYW5lTGVuZ3RoSW5CeXRlcyk7IFwKKyAgICAgICAgfSBcCisgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX3NpemVMZWZ0ID0gKGxlbmd0aCk7IFwKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBfbGFuZVBvc2l0aW9uID0gKG9mZnNldCkvU25QX2xhbmVMZW5ndGhJbkJ5dGVzOyBcCisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX29mZnNldEluTGFuZSA9IChvZmZzZXQpJVNuUF9sYW5lTGVuZ3RoSW5CeXRlczsgXAorICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqX2N1ckRhdGEgPSAoZGF0YSk7IFwKKyAgICAgICAgICAgIHdoaWxlKF9zaXplTGVmdCA+IDApIHsgXAorICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfYnl0ZXNJbkxhbmUgPSBTblBfbGFuZUxlbmd0aEluQnl0ZXMgLSBfb2Zmc2V0SW5MYW5lOyBcCisgICAgICAgICAgICAgICAgaWYgKF9ieXRlc0luTGFuZSA+IF9zaXplTGVmdCkgXAorICAgICAgICAgICAgICAgICAgICBfYnl0ZXNJbkxhbmUgPSBfc2l6ZUxlZnQ7IFwKKyAgICAgICAgICAgICAgICBTblBfRXh0cmFjdEJ5dGVzSW5MYW5lKHN0YXRlLCBfbGFuZVBvc2l0aW9uLCBfY3VyRGF0YSwgX29mZnNldEluTGFuZSwgX2J5dGVzSW5MYW5lKTsgXAorICAgICAgICAgICAgICAgIF9zaXplTGVmdCAtPSBfYnl0ZXNJbkxhbmU7IFwKKyAgICAgICAgICAgICAgICBfbGFuZVBvc2l0aW9uKys7IFwKKyAgICAgICAgICAgICAgICBfb2Zmc2V0SW5MYW5lID0gMDsgXAorICAgICAgICAgICAgICAgIF9jdXJEYXRhICs9IF9ieXRlc0luTGFuZTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgIH0KKworI2RlZmluZSBTblBfRXh0cmFjdEFuZEFkZEJ5dGVzKHN0YXRlLCBpbnB1dCwgb3V0cHV0LCBvZmZzZXQsIGxlbmd0aCwgU25QX0V4dHJhY3RBbmRBZGRMYW5lcywgU25QX0V4dHJhY3RBbmRBZGRCeXRlc0luTGFuZSwgU25QX2xhbmVMZW5ndGhJbkJ5dGVzKSBcCisgICAgeyBcCisgICAgICAgIGlmICgob2Zmc2V0KSA9PSAwKSB7IFwKKyAgICAgICAgICAgIFNuUF9FeHRyYWN0QW5kQWRkTGFuZXMoc3RhdGUsIGlucHV0LCBvdXRwdXQsIChsZW5ndGgpL1NuUF9sYW5lTGVuZ3RoSW5CeXRlcyk7IFwKKyAgICAgICAgICAgIFNuUF9FeHRyYWN0QW5kQWRkQnl0ZXNJbkxhbmUoc3RhdGUsIFwKKyAgICAgICAgICAgICAgICAobGVuZ3RoKS9TblBfbGFuZUxlbmd0aEluQnl0ZXMsIFwKKyAgICAgICAgICAgICAgICAoaW5wdXQpKygobGVuZ3RoKS9TblBfbGFuZUxlbmd0aEluQnl0ZXMpKlNuUF9sYW5lTGVuZ3RoSW5CeXRlcywgXAorICAgICAgICAgICAgICAgIChvdXRwdXQpKygobGVuZ3RoKS9TblBfbGFuZUxlbmd0aEluQnl0ZXMpKlNuUF9sYW5lTGVuZ3RoSW5CeXRlcywgXAorICAgICAgICAgICAgICAgIDAsIFwKKyAgICAgICAgICAgICAgICAobGVuZ3RoKSVTblBfbGFuZUxlbmd0aEluQnl0ZXMpOyBcCisgICAgICAgIH0gXAorICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgdW5zaWduZWQgaW50IF9zaXplTGVmdCA9IChsZW5ndGgpOyBcCisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX2xhbmVQb3NpdGlvbiA9IChvZmZzZXQpL1NuUF9sYW5lTGVuZ3RoSW5CeXRlczsgXAorICAgICAgICAgICAgdW5zaWduZWQgaW50IF9vZmZzZXRJbkxhbmUgPSAob2Zmc2V0KSVTblBfbGFuZUxlbmd0aEluQnl0ZXM7IFwKKyAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKl9jdXJJbnB1dCA9IChpbnB1dCk7IFwKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKl9jdXJPdXRwdXQgPSAob3V0cHV0KTsgXAorICAgICAgICAgICAgd2hpbGUoX3NpemVMZWZ0ID4gMCkgeyBcCisgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9ieXRlc0luTGFuZSA9IFNuUF9sYW5lTGVuZ3RoSW5CeXRlcyAtIF9vZmZzZXRJbkxhbmU7IFwKKyAgICAgICAgICAgICAgICBpZiAoX2J5dGVzSW5MYW5lID4gX3NpemVMZWZ0KSBcCisgICAgICAgICAgICAgICAgICAgIF9ieXRlc0luTGFuZSA9IF9zaXplTGVmdDsgXAorICAgICAgICAgICAgICAgIFNuUF9FeHRyYWN0QW5kQWRkQnl0ZXNJbkxhbmUoc3RhdGUsIF9sYW5lUG9zaXRpb24sIF9jdXJJbnB1dCwgX2N1ck91dHB1dCwgX29mZnNldEluTGFuZSwgX2J5dGVzSW5MYW5lKTsgXAorICAgICAgICAgICAgICAgIF9zaXplTGVmdCAtPSBfYnl0ZXNJbkxhbmU7IFwKKyAgICAgICAgICAgICAgICBfbGFuZVBvc2l0aW9uKys7IFwKKyAgICAgICAgICAgICAgICBfb2Zmc2V0SW5MYW5lID0gMDsgXAorICAgICAgICAgICAgICAgIF9jdXJJbnB1dCArPSBfYnl0ZXNJbkxhbmU7IFwKKyAgICAgICAgICAgICAgICBfY3VyT3V0cHV0ICs9IF9ieXRlc0luTGFuZTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgIH0KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL2tjcC9hbGlnbi5oIGIvTW9kdWxlcy9fc2hhMy9rY3AvYWxpZ24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NjUwZmU4Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9rY3AvYWxpZ24uaApAQCAtMCwwICsxLDM1IEBACisvKgorSW1wbGVtZW50YXRpb24gYnkgdGhlIEtlY2NhaywgS2V5YWsgYW5kIEtldGplIFRlYW1zLCBuYW1lbHksIEd1aWRvIEJlcnRvbmksCitKb2FuIERhZW1lbiwgTWljaGHDq2wgUGVldGVycywgR2lsbGVzIFZhbiBBc3NjaGUgYW5kIFJvbm55IFZhbiBLZWVyLCBoZXJlYnkKK2Rlbm90ZWQgYXMgInRoZSBpbXBsZW1lbnRlciIuCisKK0ZvciBtb3JlIGluZm9ybWF0aW9uLCBmZWVkYmFjayBvciBxdWVzdGlvbnMsIHBsZWFzZSByZWZlciB0byBvdXIgd2Vic2l0ZXM6CitodHRwOi8va2VjY2FrLm5vZWtlb24ub3JnLworaHR0cDovL2tleWFrLm5vZWtlb24ub3JnLworaHR0cDovL2tldGplLm5vZWtlb24ub3JnLworCitUbyB0aGUgZXh0ZW50IHBvc3NpYmxlIHVuZGVyIGxhdywgdGhlIGltcGxlbWVudGVyIGhhcyB3YWl2ZWQgYWxsIGNvcHlyaWdodAorYW5kIHJlbGF0ZWQgb3IgbmVpZ2hib3JpbmcgcmlnaHRzIHRvIHRoZSBzb3VyY2UgY29kZSBpbiB0aGlzIGZpbGUuCitodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCisqLworCisjaWZuZGVmIF9hbGlnbl9oXworI2RlZmluZSBfYWxpZ25faF8KKworLyogb24gTWFjIE9TLVggYW5kIHBvc3NpYmx5IG90aGVycywgQUxJR04oeCkgaXMgZGVmaW5lZCBpbiBwYXJhbS5oLCBhbmQgLVdlcnJvciBjaG9rZXMgb24gdGhlIHJlZGVmLiAqLworCisjaWZkZWYgQUxJR04KKyN1bmRlZiBBTElHTgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKF9fR05VQ19fKQorI2RlZmluZSBBTElHTih4KSBfX2F0dHJpYnV0ZV9fICgoYWxpZ25lZCh4KSkpCisjZWxpZiBkZWZpbmVkKF9NU0NfVkVSKQorI2RlZmluZSBBTElHTih4KSBfX2RlY2xzcGVjKGFsaWduKHgpKQorI2VsaWYgZGVmaW5lZChfX0FSTUNDX1ZFUlNJT04pCisjZGVmaW5lIEFMSUdOKHgpIF9fYWxpZ24oeCkKKyNlbHNlCisjZGVmaW5lIEFMSUdOKHgpCisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL3NoYTNtb2R1bGUuYyBiL01vZHVsZXMvX3NoYTMvc2hhM21vZHVsZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExYWFhMWYKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19zaGEzL3NoYTNtb2R1bGUuYwpAQCAtMCwwICsxLDc1NyBAQAorLyogU0hBMyBtb2R1bGUKKyAqCisgKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBhbiBpbnRlcmZhY2UgdG8gdGhlIFNIQTMgYWxnb3JpdGhtCisgKgorICogU2VlIGJlbG93IGZvciBpbmZvcm1hdGlvbiBhYm91dCB0aGUgb3JpZ2luYWwgY29kZSB0aGlzIG1vZHVsZSB3YXMKKyAqIGJhc2VkIHVwb24uIEFkZGl0aW9uYWwgd29yayBwZXJmb3JtZWQgYnk6CisgKgorICogIEFuZHJldyBLdWNobGluZyAoYW1rQGFtay5jYSkKKyAqICBHcmVnIFN0ZWluIChnc3RlaW5AbHlyYS5vcmcpCisgKiAgVHJldm9yIFBlcnJpbiAodHJldnBAdHJldnAubmV0KQorICogIEdyZWdvcnkgUC4gU21pdGggKGdyZWdAa3J5cHRvLm9yZykKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNiAgQ2hyaXN0aWFuIEhlaW1lcyAoY2hyaXN0aWFuQHB5dGhvbi5vcmcpCisgKiBMaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBDb250cmlidXRvciBBZ3JlZW1lbnQuCisgKgorICovCisKKyNpbmNsdWRlICJQeXRob24uaCIKKyNpbmNsdWRlICJweXN0cmhleC5oIgorI2luY2x1ZGUgIi4uL2hhc2hsaWIuaCIKKworLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICBTSEEtMyAoS2VjY2FrKSBhbmQgU0hBS0UKKyAqCisgKiBUaGUgY29kZSBpcyBiYXNlZCBvbiBLZWNjYWtDb2RlUGFja2FnZSBmcm9tIDIwMTYtMDQtMjMKKyAqIGNvbW1pdCA2NDdmOTMwNzlhZmM0YWRhM2QyMzczNzQ3N2E2ZTUyNTExY2E0MWZkCisgKgorICogVGhlIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBpcyBhbHRlcmVkIGluIHRoaXMgcG9pbnRzOgorICogIC0gQysrIGNvbW1lbnRzIGFyZSBjb252ZXJ0ZWQgdG8gQU5TSSBDIGNvbW1lbnRzLgorICogIC0gYWxsIGZ1bmN0aW9uIG5hbWVzIGFyZSBtYW5nbGVkCisgKiAgLSB0eXBlZGVmIGZvciBVSU5UNjQgaXMgY29tbWVudGVkIG91dC4KKyAqICAtIGJyZ19lbmRpYW4uaCBpcyByZW1vdmVkCisgKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmZGVmIF9fc3BhcmMKKyAgLyogb3B0NjQgdXNlcyB1bi1hbGlnbmVkIG1lbW9yeSBhY2Nlc3MgdGhhdCBjYXVzZXMgYSBCVVMgZXJyb3Igd2l0aCBtc2cKKyAgICogJ2ludmFsaWQgYWRkcmVzcyBhbGlnbm1lbnQnIG9uIFNQQVJDLiAqLworICAjZGVmaW5lIEtlY2Nha09wdCAzMgorI2VsaWYgUFlfQklHX0VORElBTgorICAvKiBvcHQ2NCBpcyBub3QgeWV0IHN1cHBvcnRlZCBvbiBiaWcgZW5kaWFuIHBsYXRmb3JtcyAqLworICAjZGVmaW5lIEtlY2Nha09wdCAzMgorI2VsaWYgU0laRU9GX1ZPSURfUCA9PSA4ICYmIGRlZmluZWQoUFlfVUlOVDY0X1QpCisgIC8qIG9wdDY0IHdvcmtzIG9ubHkgb24gbGl0dGxlLWVuZGlhbiA2NGJpdCBwbGF0Zm9ybXMgd2l0aCB1bnNpZ25lZCBpbnQ2NCAqLworICAjZGVmaW5lIEtlY2Nha09wdCA2NAorI2Vsc2UKKyAgLyogb3B0MzIgaXMgdXNlZCBmb3IgdGhlIHJlbWFpbmluZyAzMiBhbmQgNjRiaXQgcGxhdGZvcm1zICovCisgICNkZWZpbmUgS2VjY2FrT3B0IDMyCisjZW5kaWYKKworI2lmIEtlY2Nha09wdCA9PSA2NCAmJiBkZWZpbmVkKFBZX1VJTlQ2NF9UKQorICAvKiA2NGJpdCBwbGF0Zm9ybXMgd2l0aCB1bnNpZ25lZCBpbnQ2NCAqLworICB0eXBlZGVmIFBZX1VJTlQ2NF9UIFVJTlQ2NDsKKyAgdHlwZWRlZiB1bnNpZ25lZCBjaGFyIFVJTlQ4OworI2VuZGlmCisKKy8qIHJlcGxhY2VtZW50IGZvciBicmdfZW5kaWFuLmggKi8KKyNkZWZpbmUgSVNfTElUVExFX0VORElBTiAxMjM0CisjZGVmaW5lIElTX0JJR19FTkRJQU4gNDMyMQorI2lmIFBZX0xJVFRMRV9FTkRJQU4KKyNkZWZpbmUgUExBVEZPUk1fQllURV9PUkRFUiBJU19MSVRUTEVfRU5ESUFOCisjZW5kaWYKKyNpZiBQWV9CSUdfRU5ESUFOCisjZGVmaW5lIFBMQVRGT1JNX0JZVEVfT1JERVIgSVNfQklHX0VORElBTgorI2VuZGlmCisKKy8qIG1hbmdsZSBuYW1lcyAqLworI2RlZmluZSBLZWNjYWtGMTYwMF9GYXN0TG9vcF9BYnNvcmIgX1B5U0hBM19LZWNjYWtGMTYwMF9GYXN0TG9vcF9BYnNvcmIKKyNkZWZpbmUgS2VjY2FrX0hhc2hGaW5hbCBfUHlTSEEzX0tlY2Nha19IYXNoRmluYWwKKyNkZWZpbmUgS2VjY2FrX0hhc2hJbml0aWFsaXplIF9QeVNIQTNfS2VjY2FrX0hhc2hJbml0aWFsaXplCisjZGVmaW5lIEtlY2Nha19IYXNoU3F1ZWV6ZSBfUHlTSEEzX0tlY2Nha19IYXNoU3F1ZWV6ZQorI2RlZmluZSBLZWNjYWtfSGFzaFVwZGF0ZSBfUHlTSEEzX0tlY2Nha19IYXNoVXBkYXRlCisjZGVmaW5lIEtlY2Nha1AxNjAwX0FkZEJ5dGVzIF9QeVNIQTNfS2VjY2FrUDE2MDBfQWRkQnl0ZXMKKyNkZWZpbmUgS2VjY2FrUDE2MDBfQWRkQnl0ZXNJbkxhbmUgX1B5U0hBM19LZWNjYWtQMTYwMF9BZGRCeXRlc0luTGFuZQorI2RlZmluZSBLZWNjYWtQMTYwMF9BZGRMYW5lcyBfUHlTSEEzX0tlY2Nha1AxNjAwX0FkZExhbmVzCisjZGVmaW5lIEtlY2Nha1AxNjAwX0V4dHJhY3RBbmRBZGRCeXRlcyBfUHlTSEEzX0tlY2Nha1AxNjAwX0V4dHJhY3RBbmRBZGRCeXRlcworI2RlZmluZSBLZWNjYWtQMTYwMF9FeHRyYWN0QW5kQWRkQnl0ZXNJbkxhbmUgX1B5U0hBM19LZWNjYWtQMTYwMF9FeHRyYWN0QW5kQWRkQnl0ZXNJbkxhbmUKKyNkZWZpbmUgS2VjY2FrUDE2MDBfRXh0cmFjdEFuZEFkZExhbmVzIF9QeVNIQTNfS2VjY2FrUDE2MDBfRXh0cmFjdEFuZEFkZExhbmVzCisjZGVmaW5lIEtlY2Nha1AxNjAwX0V4dHJhY3RCeXRlcyBfUHlTSEEzX0tlY2Nha1AxNjAwX0V4dHJhY3RCeXRlcworI2RlZmluZSBLZWNjYWtQMTYwMF9FeHRyYWN0Qnl0ZXNJbkxhbmUgX1B5U0hBM19LZWNjYWtQMTYwMF9FeHRyYWN0Qnl0ZXNJbkxhbmUKKyNkZWZpbmUgS2VjY2FrUDE2MDBfRXh0cmFjdExhbmVzIF9QeVNIQTNfS2VjY2FrUDE2MDBfRXh0cmFjdExhbmVzCisjZGVmaW5lIEtlY2Nha1AxNjAwX0luaXRpYWxpemUgX1B5U0hBM19LZWNjYWtQMTYwMF9Jbml0aWFsaXplCisjZGVmaW5lIEtlY2Nha1AxNjAwX092ZXJ3cml0ZUJ5dGVzIF9QeVNIQTNfS2VjY2FrUDE2MDBfT3ZlcndyaXRlQnl0ZXMKKyNkZWZpbmUgS2VjY2FrUDE2MDBfT3ZlcndyaXRlQnl0ZXNJbkxhbmUgX1B5U0hBM19LZWNjYWtQMTYwMF9PdmVyd3JpdGVCeXRlc0luTGFuZQorI2RlZmluZSBLZWNjYWtQMTYwMF9PdmVyd3JpdGVMYW5lcyBfUHlTSEEzX0tlY2Nha1AxNjAwX092ZXJ3cml0ZUxhbmVzCisjZGVmaW5lIEtlY2Nha1AxNjAwX092ZXJ3cml0ZVdpdGhaZXJvZXMgX1B5U0hBM19LZWNjYWtQMTYwMF9PdmVyd3JpdGVXaXRoWmVyb2VzCisjZGVmaW5lIEtlY2Nha1AxNjAwX1Blcm11dGVfMTJyb3VuZHMgX1B5U0hBM19LZWNjYWtQMTYwMF9QZXJtdXRlXzEycm91bmRzCisjZGVmaW5lIEtlY2Nha1AxNjAwX1Blcm11dGVfMjRyb3VuZHMgX1B5U0hBM19LZWNjYWtQMTYwMF9QZXJtdXRlXzI0cm91bmRzCisjZGVmaW5lIEtlY2Nha1dpZHRoMTYwMF9TcG9uZ2UgX1B5U0hBM19LZWNjYWtXaWR0aDE2MDBfU3BvbmdlCisjZGVmaW5lIEtlY2Nha1dpZHRoMTYwMF9TcG9uZ2VBYnNvcmIgX1B5U0hBM19LZWNjYWtXaWR0aDE2MDBfU3BvbmdlQWJzb3JiCisjZGVmaW5lIEtlY2Nha1dpZHRoMTYwMF9TcG9uZ2VBYnNvcmJMYXN0RmV3Qml0cyBfUHlTSEEzX0tlY2Nha1dpZHRoMTYwMF9TcG9uZ2VBYnNvcmJMYXN0RmV3Qml0cworI2RlZmluZSBLZWNjYWtXaWR0aDE2MDBfU3BvbmdlSW5pdGlhbGl6ZSBfUHlTSEEzX0tlY2Nha1dpZHRoMTYwMF9TcG9uZ2VJbml0aWFsaXplCisjZGVmaW5lIEtlY2Nha1dpZHRoMTYwMF9TcG9uZ2VTcXVlZXplIF9QeVNIQTNfS2VjY2FrV2lkdGgxNjAwX1Nwb25nZVNxdWVlemUKKyNpZiBLZWNjYWtPcHQgPT0gMzIKKyNkZWZpbmUgS2VjY2FrUDE2MDBfQWRkQnl0ZSBfUHlTSEEzX0tlY2Nha1AxNjAwX0FkZEJ5dGUKKyNkZWZpbmUgS2VjY2FrUDE2MDBfUGVybXV0ZV9Ocm91bmRzIF9QeVNIQTNfS2VjY2FrUDE2MDBfUGVybXV0ZV9Ocm91bmRzCisjZGVmaW5lIEtlY2Nha1AxNjAwX1NldEJ5dGVzSW5MYW5lVG9aZXJvIF9QeVNIQTNfS2VjY2FrUDE2MDBfU2V0Qnl0ZXNJbkxhbmVUb1plcm8KKyNlbmRpZgorCisvKiB3ZSBhcmUgb25seSBpbnRlcmVzdGVkIGluIEtlY2Nha1AxNjAwICovCisjZGVmaW5lIEtlY2Nha1AyMDBfZXhjbHVkZWQgMQorI2RlZmluZSBLZWNjYWtQNDAwX2V4Y2x1ZGVkIDEKKyNkZWZpbmUgS2VjY2FrUDgwMF9leGNsdWRlZCAxCisKKy8qIGlubGluZSBhbGwgS2VjY2FrIGRlcGVuZGVuY2llcyAqLworI2luY2x1ZGUgImtjcC9LZWNjYWtIYXNoLmgiCisjaW5jbHVkZSAia2NwL0tlY2Nha1Nwb25nZS5oIgorI2luY2x1ZGUgImtjcC9LZWNjYWtIYXNoLmMiCisjaW5jbHVkZSAia2NwL0tlY2Nha1Nwb25nZS5jIgorI2lmIEtlY2Nha09wdCA9PSA2NAorICAjaW5jbHVkZSAia2NwL0tlY2Nha1AtMTYwMC1vcHQ2NC5jIgorI2VsaWYgS2VjY2FrT3B0ID09IDMyCisgICNpbmNsdWRlICJrY3AvS2VjY2FrUC0xNjAwLWlucGxhY2UzMkJJLmMiCisjZW5kaWYKKworI2RlZmluZSBTSEEzX01BWF9ESUdFU1RTSVpFIDY0IC8qIDY0IEJ5dGVzICg1MTIgQml0cykgZm9yIDIyNCB0byA1MTIgKi8KKyNkZWZpbmUgU0hBM19MQU5FU0laRSAoMjAgKiA4KSAvKiBFeHRyYWN0TGFuZSBuZWVkcyBtYXggdWludDY0X3RbMjBdIGV4dHJhLiAqLworI2RlZmluZSBTSEEzX3N0YXRlIEtlY2Nha19IYXNoSW5zdGFuY2UKKyNkZWZpbmUgU0hBM19pbml0IEtlY2Nha19IYXNoSW5pdGlhbGl6ZQorI2RlZmluZSBTSEEzX3Byb2Nlc3MgS2VjY2FrX0hhc2hVcGRhdGUKKyNkZWZpbmUgU0hBM19kb25lIEtlY2Nha19IYXNoRmluYWwKKyNkZWZpbmUgU0hBM19zcXVlZXplIEtlY2Nha19IYXNoU3F1ZWV6ZQorI2RlZmluZSBTSEEzX2NvcHlzdGF0ZShkZXN0LCBzcmMpIG1lbWNweSgmKGRlc3QpLCAmKHNyYyksIHNpemVvZihTSEEzX3N0YXRlKSkKKworCisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgX3NoYTMKK2NsYXNzIF9zaGEzLnNoYTNfMjI0ICJTSEEzb2JqZWN0ICoiICImU0hBM18yMjR0eXAiCitjbGFzcyBfc2hhMy5zaGEzXzI1NiAiU0hBM29iamVjdCAqIiAiJlNIQTNfMjU2dHlwIgorY2xhc3MgX3NoYTMuc2hhM18zODQgIlNIQTNvYmplY3QgKiIgIiZTSEEzXzM4NHR5cCIKK2NsYXNzIF9zaGEzLnNoYTNfNTEyICJTSEEzb2JqZWN0ICoiICImU0hBM181MTJ0eXAiCitjbGFzcyBfc2hhMy5zaGFrZV8xMjggIlNIQTNvYmplY3QgKiIgIiZTSEFLRTEyOHR5cGUiCitjbGFzcyBfc2hhMy5zaGFrZV8yNTYgIlNIQTNvYmplY3QgKiIgIiZTSEFLRTI1NnR5cGUiCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1iOGE1MzY4MGYzNzAyODVhXSovCisKKy8qIFRoZSBzdHJ1Y3R1cmUgZm9yIHN0b3JpbmcgU0hBMyBpbmZvICovCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgU0hBM19zdGF0ZSBoYXNoX3N0YXRlOworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2s7CisjZW5kaWYKK30gU0hBM29iamVjdDsKKworc3RhdGljIFB5VHlwZU9iamVjdCBTSEEzXzIyNHR5cGU7CitzdGF0aWMgUHlUeXBlT2JqZWN0IFNIQTNfMjU2dHlwZTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgU0hBM18zODR0eXBlOworc3RhdGljIFB5VHlwZU9iamVjdCBTSEEzXzUxMnR5cGU7CisjaWZkZWYgUFlfV0lUSF9LRUNDQUsKK3N0YXRpYyBQeVR5cGVPYmplY3QgS2VjY2FrXzIyNHR5cGU7CitzdGF0aWMgUHlUeXBlT2JqZWN0IEtlY2Nha18yNTZ0eXBlOworc3RhdGljIFB5VHlwZU9iamVjdCBLZWNjYWtfMzg0dHlwZTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgS2VjY2FrXzUxMnR5cGU7CisjZW5kaWYKK3N0YXRpYyBQeVR5cGVPYmplY3QgU0hBS0UxMjh0eXBlOworc3RhdGljIFB5VHlwZU9iamVjdCBTSEFLRTI1NnR5cGU7CisKKyNpbmNsdWRlICJjbGluaWMvc2hhM21vZHVsZS5jLmgiCisKK3N0YXRpYyBTSEEzb2JqZWN0ICoKK25ld1NIQTNvYmplY3QoUHlUeXBlT2JqZWN0ICp0eXBlKQoreworICAgIFNIQTNvYmplY3QgKm5ld29iajsKKyAgICBuZXdvYmogPSAoU0hBM29iamVjdCAqKVB5T2JqZWN0X05ldyhTSEEzb2JqZWN0LCB0eXBlKTsKKyAgICBpZiAobmV3b2JqID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorI2lmZGVmIFdJVEhfVEhSRUFECisgICAgbmV3b2JqLT5sb2NrID0gTlVMTDsKKyNlbmRpZgorICAgIHJldHVybiBuZXdvYmo7Cit9CisKKworLypbY2xpbmljIGlucHV0XQorQGNsYXNzbWV0aG9kCitfc2hhMy5zaGEzXzIyNC5fX25ld19fIGFzIHB5X3NoYTNfbmV3CisgICAgc3RyaW5nIGFzIGRhdGE6IG9iamVjdCA9IE5VTEwKKworUmV0dXJuIGEgbmV3IFNIQTMgaGFzaCBvYmplY3Qgd2l0aCBhIGhhc2hiaXQgbGVuZ3RoIG9mIDI4IGJ5dGVzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorcHlfc2hhM19uZXdfaW1wbChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICpkYXRhKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PThkNWMzNDI3OWU2OWJmMDkgaW5wdXQ9ZDdjNTgyYjk1MGE4NThiNl0qLworeworICAgIFNIQTNvYmplY3QgKnNlbGYgPSBOVUxMOworICAgIFB5X2J1ZmZlciBidWYgPSB7TlVMTCwgTlVMTH07CisgICAgSGFzaFJldHVybiByZXM7CisKKyAgICBzZWxmID0gbmV3U0hBM29iamVjdCh0eXBlKTsKKyAgICBpZiAoc2VsZiA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgaWYgKHR5cGUgPT0gJlNIQTNfMjI0dHlwZSkgeworICAgICAgICByZXMgPSBLZWNjYWtfSGFzaEluaXRpYWxpemVfU0hBM18yMjQoJnNlbGYtPmhhc2hfc3RhdGUpOworICAgIH0gZWxzZSBpZiAodHlwZSA9PSAmU0hBM18yNTZ0eXBlKSB7CisgICAgICAgIHJlcyA9IEtlY2Nha19IYXNoSW5pdGlhbGl6ZV9TSEEzXzI1Nigmc2VsZi0+aGFzaF9zdGF0ZSk7CisgICAgfSBlbHNlIGlmICh0eXBlID09ICZTSEEzXzM4NHR5cGUpIHsKKyAgICAgICAgcmVzID0gS2VjY2FrX0hhc2hJbml0aWFsaXplX1NIQTNfMzg0KCZzZWxmLT5oYXNoX3N0YXRlKTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJlNIQTNfNTEydHlwZSkgeworICAgICAgICByZXMgPSBLZWNjYWtfSGFzaEluaXRpYWxpemVfU0hBM181MTIoJnNlbGYtPmhhc2hfc3RhdGUpOworI2lmZGVmIFBZX1dJVEhfS0VDQ0FLCisgICAgfSBlbHNlIGlmICh0eXBlID09ICZLZWNjYWtfMjI0dHlwZSkgeworICAgICAgICByZXMgPSBLZWNjYWtfSGFzaEluaXRpYWxpemUoJnNlbGYtPmhhc2hfc3RhdGUsIDExNTIsIDQ0OCwgMjI0LCAweDAxKTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJktlY2Nha18yNTZ0eXBlKSB7CisgICAgICAgIHJlcyA9IEtlY2Nha19IYXNoSW5pdGlhbGl6ZSgmc2VsZi0+aGFzaF9zdGF0ZSwgMTA4OCwgNTEyLCAyNTYsIDB4MDEpOworICAgIH0gZWxzZSBpZiAodHlwZSA9PSAmS2VjY2FrXzM4NHR5cGUpIHsKKyAgICAgICAgcmVzID0gS2VjY2FrX0hhc2hJbml0aWFsaXplKCZzZWxmLT5oYXNoX3N0YXRlLCA4MzIsIDc2OCwgMzg0LCAweDAxKTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJktlY2Nha181MTJ0eXBlKSB7CisgICAgICAgIHJlcyA9IEtlY2Nha19IYXNoSW5pdGlhbGl6ZSgmc2VsZi0+aGFzaF9zdGF0ZSwgNTc2LCAxMDI0LCA1MTIsIDB4MDEpOworI2VuZGlmCisgICAgfSBlbHNlIGlmICh0eXBlID09ICZTSEFLRTEyOHR5cGUpIHsKKyAgICAgICAgcmVzID0gS2VjY2FrX0hhc2hJbml0aWFsaXplX1NIQUtFMTI4KCZzZWxmLT5oYXNoX3N0YXRlKTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJlNIQUtFMjU2dHlwZSkgeworICAgICAgICByZXMgPSBLZWNjYWtfSGFzaEluaXRpYWxpemVfU0hBS0UyNTYoJnNlbGYtPmhhc2hfc3RhdGUpOworICAgIH0gZWxzZSB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIGlmIChkYXRhKSB7CisgICAgICAgIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPUihkYXRhLCAmYnVmLCBnb3RvIGVycm9yKTsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgICAgICBpZiAoYnVmLmxlbiA+PSBIQVNITElCX0dJTF9NSU5TSVpFKSB7CisgICAgICAgICAgICAvKiBpbnZhcmlhbnQ6IE5ldyBvYmplY3RzIGNhbid0IGJlIGFjY2Vzc2VkIGJ5IG90aGVyIGNvZGUgeWV0LAorICAgICAgICAgICAgICogdGh1cyBpdCdzIHNhZmUgdG8gcmVsZWFzZSB0aGUgR0lMIHdpdGhvdXQgbG9ja2luZyB0aGUgb2JqZWN0LgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgICAgICByZXMgPSBTSEEzX3Byb2Nlc3MoJnNlbGYtPmhhc2hfc3RhdGUsIGJ1Zi5idWYsIGJ1Zi5sZW4gKiA4KTsKKyAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXMgPSBTSEEzX3Byb2Nlc3MoJnNlbGYtPmhhc2hfc3RhdGUsIGJ1Zi5idWYsIGJ1Zi5sZW4gKiA4KTsKKyAgICAgICAgfQorI2Vsc2UKKyAgICAgICAgcmVzID0gU0hBM19wcm9jZXNzKCZzZWxmLT5oYXNoX3N0YXRlLCBidWYuYnVmLCBidWYubGVuICogOCk7CisjZW5kaWYKKyAgICAgICAgaWYgKHJlcyAhPSBTVUNDRVNTKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnRlcm5hbCBlcnJvciBpbiBTSEEzIFVwZGF0ZSgpIik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7CisgICAgfQorCisgICAgcmV0dXJuIChQeU9iamVjdCAqKXNlbGY7CisKKyAgZXJyb3I6CisgICAgaWYgKHNlbGYpIHsKKyAgICAgICAgUHlfREVDUkVGKHNlbGYpOworICAgIH0KKyAgICBpZiAoZGF0YSAmJiBidWYub2JqKSB7CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7CisgICAgfQorICAgIHJldHVybiBOVUxMOworfQorCisKKy8qIEludGVybmFsIG1ldGhvZHMgZm9yIGEgaGFzaCBvYmplY3QgKi8KKworc3RhdGljIHZvaWQKK1NIQTNfZGVhbGxvYyhTSEEzb2JqZWN0ICpzZWxmKQoreworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgaWYgKHNlbGYtPmxvY2spIHsKKyAgICAgICAgUHlUaHJlYWRfZnJlZV9sb2NrKHNlbGYtPmxvY2spOworICAgIH0KKyNlbmRpZgorICAgIFB5T2JqZWN0X0RlbChzZWxmKTsKK30KKworCisvKiBFeHRlcm5hbCBtZXRob2RzIGZvciBhIGhhc2ggb2JqZWN0ICovCisKKworLypbY2xpbmljIGlucHV0XQorX3NoYTMuc2hhM18yMjQuY29weQorCitSZXR1cm4gYSBjb3B5IG9mIHRoZSBoYXNoIG9iamVjdC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGEzX3NoYTNfMjI0X2NvcHlfaW1wbChTSEEzb2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTZjNTM3NDExZWNkY2RhNGMgaW5wdXQ9OTNhNDRhYWViZWE1MWJhOF0qLworeworICAgIFNIQTNvYmplY3QgKm5ld29iajsKKworICAgIGlmICgobmV3b2JqID0gbmV3U0hBM29iamVjdChQeV9UWVBFKHNlbGYpKSkgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgRU5URVJfSEFTSExJQihzZWxmKTsKKyAgICBTSEEzX2NvcHlzdGF0ZShuZXdvYmotPmhhc2hfc3RhdGUsIHNlbGYtPmhhc2hfc3RhdGUpOworICAgIExFQVZFX0hBU0hMSUIoc2VsZik7CisgICAgcmV0dXJuIChQeU9iamVjdCAqKW5ld29iajsKK30KKworCisvKltjbGluaWMgaW5wdXRdCitfc2hhMy5zaGEzXzIyNC5kaWdlc3QKKworUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgYmluYXJ5IGRhdGEuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhM19zaGEzXzIyNF9kaWdlc3RfaW1wbChTSEEzb2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWZkNTMxODQyZTIwYjJkNWIgaW5wdXQ9YTU4MDc5MTdkMjE5YjMwZV0qLworeworICAgIHVuc2lnbmVkIGNoYXIgZGlnZXN0W1NIQTNfTUFYX0RJR0VTVFNJWkUgKyBTSEEzX0xBTkVTSVpFXTsKKyAgICBTSEEzX3N0YXRlIHRlbXA7CisgICAgSGFzaFJldHVybiByZXM7CisKKyAgICBFTlRFUl9IQVNITElCKHNlbGYpOworICAgIFNIQTNfY29weXN0YXRlKHRlbXAsIHNlbGYtPmhhc2hfc3RhdGUpOworICAgIExFQVZFX0hBU0hMSUIoc2VsZik7CisgICAgcmVzID0gU0hBM19kb25lKCZ0ZW1wLCBkaWdlc3QpOworICAgIGlmIChyZXMgIT0gU1VDQ0VTUykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiaW50ZXJuYWwgZXJyb3IgaW4gU0hBMyBGaW5hbCgpIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY29uc3QgY2hhciAqKWRpZ2VzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+aGFzaF9zdGF0ZS5maXhlZE91dHB1dExlbmd0aCAvIDgpOworfQorCisKKy8qW2NsaW5pYyBpbnB1dF0KK19zaGEzLnNoYTNfMjI0LmhleGRpZ2VzdAorCitSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBoZXhhZGVjaW1hbCBkaWdpdHMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhM19zaGEzXzIyNF9oZXhkaWdlc3RfaW1wbChTSEEzb2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc1YWQwMzI1NzkwNjkxOGQgaW5wdXQ9MmQ5MWJiNmUwZDExNGVlM10qLworeworICAgIHVuc2lnbmVkIGNoYXIgZGlnZXN0W1NIQTNfTUFYX0RJR0VTVFNJWkUgKyBTSEEzX0xBTkVTSVpFXTsKKyAgICBTSEEzX3N0YXRlIHRlbXA7CisgICAgSGFzaFJldHVybiByZXM7CisKKyAgICAvKiBHZXQgdGhlIHJhdyAoYmluYXJ5KSBkaWdlc3QgdmFsdWUgKi8KKyAgICBFTlRFUl9IQVNITElCKHNlbGYpOworICAgIFNIQTNfY29weXN0YXRlKHRlbXAsIHNlbGYtPmhhc2hfc3RhdGUpOworICAgIExFQVZFX0hBU0hMSUIoc2VsZik7CisgICAgcmVzID0gU0hBM19kb25lKCZ0ZW1wLCBkaWdlc3QpOworICAgIGlmIChyZXMgIT0gU1VDQ0VTUykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiaW50ZXJuYWwgZXJyb3IgaW4gU0hBMyBGaW5hbCgpIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gX1B5X3N0cmhleCgoY29uc3QgY2hhciAqKWRpZ2VzdCwKKyAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5oYXNoX3N0YXRlLmZpeGVkT3V0cHV0TGVuZ3RoIC8gOCk7Cit9CisKKworLypbY2xpbmljIGlucHV0XQorX3NoYTMuc2hhM18yMjQudXBkYXRlCisKKyAgICBvYmo6IG9iamVjdAorICAgIC8KKworVXBkYXRlIHRoaXMgaGFzaCBvYmplY3QncyBzdGF0ZSB3aXRoIHRoZSBwcm92aWRlZCBzdHJpbmcuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhM19zaGEzXzIyNF91cGRhdGUoU0hBM29iamVjdCAqc2VsZiwgUHlPYmplY3QgKm9iaikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wNjcyMWQ1NWI0ODNlMGFmIGlucHV0PWJlNDRiZjBkMWMyNzk3OTFdKi8KK3sKKyAgICBQeV9idWZmZXIgYnVmOworICAgIEhhc2hSZXR1cm4gcmVzOworCisgICAgR0VUX0JVRkZFUl9WSUVXX09SX0VSUk9VVChvYmosICZidWYpOworCisgICAgLyogYWRkIG5ldyBkYXRhLCB0aGUgZnVuY3Rpb24gdGFrZXMgdGhlIGxlbmd0aCBpbiBiaXRzIG5vdCBieXRlcyAqLworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgaWYgKHNlbGYtPmxvY2sgPT0gTlVMTCAmJiBidWYubGVuID49IEhBU0hMSUJfR0lMX01JTlNJWkUpIHsKKyAgICAgICAgc2VsZi0+bG9jayA9IFB5VGhyZWFkX2FsbG9jYXRlX2xvY2soKTsKKyAgICB9CisgICAgLyogT25jZSBhIGxvY2sgZXhpc3RzIGFsbCBjb2RlIHBhdGhzIG11c3QgYmUgc3luY2hyb25pemVkLiBXZSBoYXZlIHRvCisgICAgICogcmVsZWFzZSB0aGUgR0lMIGV2ZW4gZm9yIHNtYWxsIGJ1ZmZlcnMgYXMgYWNxdWlyaW5nIHRoZSBsb2NrIG1heSB0YWtlCisgICAgICogYW4gdW5saW1pdGVkIGFtb3VudCBvZiB0aW1lIHdoZW4gYW5vdGhlciB0aHJlYWQgdXBkYXRlcyB0aGlzIG9iamVjdAorICAgICAqIHdpdGggbG90cyBvZiBkYXRhLiAqLworICAgIGlmIChzZWxmLT5sb2NrKSB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgUHlUaHJlYWRfYWNxdWlyZV9sb2NrKHNlbGYtPmxvY2ssIDEpOworICAgICAgICByZXMgPSBTSEEzX3Byb2Nlc3MoJnNlbGYtPmhhc2hfc3RhdGUsIGJ1Zi5idWYsIGJ1Zi5sZW4gKiA4KTsKKyAgICAgICAgUHlUaHJlYWRfcmVsZWFzZV9sb2NrKHNlbGYtPmxvY2spOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmVzID0gU0hBM19wcm9jZXNzKCZzZWxmLT5oYXNoX3N0YXRlLCBidWYuYnVmLCBidWYubGVuICogOCk7CisgICAgfQorI2Vsc2UKKyAgICByZXMgPSBTSEEzX3Byb2Nlc3MoJnNlbGYtPmhhc2hfc3RhdGUsIGJ1Zi5idWYsIGJ1Zi5sZW4gKiA4KTsKKyNlbmRpZgorCisgICAgaWYgKHJlcyAhPSBTVUNDRVNTKSB7CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiaW50ZXJuYWwgZXJyb3IgaW4gU0hBMyBVcGRhdGUoKSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOworICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICByZXR1cm4gUHlfTm9uZTsKK30KKworCitzdGF0aWMgUHlNZXRob2REZWYgU0hBM19tZXRob2RzW10gPSB7CisgICAgX1NIQTNfU0hBM18yMjRfQ09QWV9NRVRIT0RERUYKKyAgICBfU0hBM19TSEEzXzIyNF9ESUdFU1RfTUVUSE9EREVGCisgICAgX1NIQTNfU0hBM18yMjRfSEVYRElHRVNUX01FVEhPRERFRgorICAgIF9TSEEzX1NIQTNfMjI0X1VQREFURV9NRVRIT0RERUYKKyAgICB7TlVMTCwgICAgICAgIE5VTEx9ICAgICAgICAgLyogc2VudGluZWwgKi8KK307CisKKworc3RhdGljIFB5T2JqZWN0ICoKK1NIQTNfZ2V0X2Jsb2NrX3NpemUoU0hBM29iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICBpbnQgcmF0ZSA9IHNlbGYtPmhhc2hfc3RhdGUuc3BvbmdlLnJhdGU7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhyYXRlIC8gOCk7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK1NIQTNfZ2V0X25hbWUoU0hBM29iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICBQeVR5cGVPYmplY3QgKnR5cGUgPSBQeV9UWVBFKHNlbGYpOworICAgIGlmICh0eXBlID09ICZTSEEzXzIyNHR5cGUpIHsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJzaGEzXzIyNCIpOworICAgIH0gZWxzZSBpZiAodHlwZSA9PSAmU0hBM18yNTZ0eXBlKSB7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZygic2hhM18yNTYiKTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJlNIQTNfMzg0dHlwZSkgeworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoInNoYTNfMzg0Iik7CisgICAgfSBlbHNlIGlmICh0eXBlID09ICZTSEEzXzUxMnR5cGUpIHsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJzaGEzXzUxMiIpOworI2lmZGVmIFBZX1dJVEhfS0VDQ0FLCisgICAgfSBlbHNlIGlmICh0eXBlID09ICZLZWNjYWtfMjI0dHlwZSkgeworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoImtlY2Nha18yMjQiKTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJktlY2Nha18yNTZ0eXBlKSB7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZygia2VjY2FrXzI1NiIpOworICAgIH0gZWxzZSBpZiAodHlwZSA9PSAmS2VjY2FrXzM4NHR5cGUpIHsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJrZWNjYWtfMzg0Iik7CisgICAgfSBlbHNlIGlmICh0eXBlID09ICZLZWNjYWtfNTEydHlwZSkgeworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoImtlY2Nha181MTIiKTsKKyNlbmRpZgorICAgIH0gZWxzZSBpZiAodHlwZSA9PSAmU0hBS0UxMjh0eXBlKSB7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZygic2hha2VfMTI4Iik7CisgICAgfSBlbHNlIGlmICh0eXBlID09ICZTSEFLRTI1NnR5cGUpIHsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJzaGFrZV8yNTYiKTsKKyAgICB9IGVsc2UgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCitTSEEzX2dldF9kaWdlc3Rfc2l6ZShTSEEzb2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoc2VsZi0+aGFzaF9zdGF0ZS5maXhlZE91dHB1dExlbmd0aCAvIDgpOworfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCitTSEEzX2dldF9jYXBhY2l0eV9iaXRzKFNIQTNvYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgaW50IGNhcGFjaXR5ID0gMTYwMCAtIHNlbGYtPmhhc2hfc3RhdGUuc3BvbmdlLnJhdGU7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhjYXBhY2l0eSk7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK1NIQTNfZ2V0X3JhdGVfYml0cyhTSEEzb2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIHVuc2lnbmVkIGludCByYXRlID0gc2VsZi0+aGFzaF9zdGF0ZS5zcG9uZ2UucmF0ZTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHJhdGUpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorU0hBM19nZXRfc3VmZml4KFNIQTNvYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgdW5zaWduZWQgY2hhciBzdWZmaXhbMl07CisgICAgc3VmZml4WzBdID0gc2VsZi0+aGFzaF9zdGF0ZS5kZWxpbWl0ZWRTdWZmaXg7CisgICAgc3VmZml4WzFdID0gMDsKKyAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY29uc3QgY2hhciAqKXN1ZmZpeCwgMSk7Cit9CisKKworc3RhdGljIFB5R2V0U2V0RGVmIFNIQTNfZ2V0c2V0ZXJzW10gPSB7CisgICAgeyJibG9ja19zaXplIiwgKGdldHRlcilTSEEzX2dldF9ibG9ja19zaXplLCBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgICB7Im5hbWUiLCAoZ2V0dGVyKVNIQTNfZ2V0X25hbWUsIE5VTEwsIE5VTEwsIE5VTEx9LAorICAgIHsiZGlnZXN0X3NpemUiLCAoZ2V0dGVyKVNIQTNfZ2V0X2RpZ2VzdF9zaXplLCBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgICB7Il9jYXBhY2l0eV9iaXRzIiwgKGdldHRlcilTSEEzX2dldF9jYXBhY2l0eV9iaXRzLCBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgICB7Il9yYXRlX2JpdHMiLCAoZ2V0dGVyKVNIQTNfZ2V0X3JhdGVfYml0cywgTlVMTCwgTlVMTCwgTlVMTH0sCisgICAgeyJfc3VmZml4IiwgKGdldHRlcilTSEEzX2dldF9zdWZmaXgsIE5VTEwsIE5VTEwsIE5VTEx9LAorICAgIHtOVUxMfSAgLyogU2VudGluZWwgKi8KK307CisKKworI2RlZmluZSBTSEEzX1RZUEUodHlwZV9vYmosIHR5cGVfbmFtZSwgdHlwZV9kb2MsIHR5cGVfbWV0aG9kcykgXAorICAgIHN0YXRpYyBQeVR5cGVPYmplY3QgdHlwZV9vYmogPSB7IFwKKyAgICAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApIFwKKyAgICAgICAgdHlwZV9uYW1lLCAgICAgICAgICAvKiB0cF9uYW1lICovIFwKKyAgICAgICAgc2l6ZW9mKFNIQTNvYmplY3QpLCAvKiB0cF9zaXplICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLyBcCisgICAgICAgIC8qICBtZXRob2RzICAqLyBcCisgICAgICAgIChkZXN0cnVjdG9yKVNIQTNfZGVhbGxvYywgLyogdHBfZGVhbGxvYyAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovIFwKKyAgICAgICAgUHlfVFBGTEFHU19ERUZBVUxULCAvKiB0cF9mbGFncyAqLyBcCisgICAgICAgIHR5cGVfZG9jLCAgICAgICAgICAgLyogdHBfZG9jICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8gXAorICAgICAgICB0eXBlX21ldGhvZHMsICAgICAgIC8qIHRwX21ldGhvZHMgKi8gXAorICAgICAgICBOVUxMLCAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8gXAorICAgICAgICBTSEEzX2dldHNldGVycywgICAgIC8qIHRwX2dldHNldCAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovIFwKKyAgICAgICAgcHlfc2hhM19uZXcsICAgICAgICAvKiB0cF9uZXcgKi8gXAorICAgIH0KKworUHlEb2NfU1RSVkFSKHNoYTNfMjU2X19kb2NfXywKKyJzaGEzXzI1Nihbc3RyaW5nXSkgLT4gU0hBMyBvYmplY3RcblwKK1xuXAorUmV0dXJuIGEgbmV3IFNIQTMgaGFzaCBvYmplY3Qgd2l0aCBhIGhhc2hiaXQgbGVuZ3RoIG9mIDMyIGJ5dGVzLiIpOworCitQeURvY19TVFJWQVIoc2hhM18zODRfX2RvY19fLAorInNoYTNfMzg0KFtzdHJpbmddKSAtPiBTSEEzIG9iamVjdFxuXAorXG5cCitSZXR1cm4gYSBuZXcgU0hBMyBoYXNoIG9iamVjdCB3aXRoIGEgaGFzaGJpdCBsZW5ndGggb2YgNDggYnl0ZXMuIik7CisKK1B5RG9jX1NUUlZBUihzaGEzXzUxMl9fZG9jX18sCisic2hhM181MTIoW3N0cmluZ10pIC0+IFNIQTMgb2JqZWN0XG5cCitcblwKK1JldHVybiBhIG5ldyBTSEEzIGhhc2ggb2JqZWN0IHdpdGggYSBoYXNoYml0IGxlbmd0aCBvZiA2NCBieXRlcy4iKTsKKworU0hBM19UWVBFKFNIQTNfMjI0dHlwZSwgIl9zaGEzLnNoYTNfMjI0IiwgcHlfc2hhM19uZXdfX2RvY19fLCBTSEEzX21ldGhvZHMpOworU0hBM19UWVBFKFNIQTNfMjU2dHlwZSwgIl9zaGEzLnNoYTNfMjU2Iiwgc2hhM18yNTZfX2RvY19fLCBTSEEzX21ldGhvZHMpOworU0hBM19UWVBFKFNIQTNfMzg0dHlwZSwgIl9zaGEzLnNoYTNfMzg0Iiwgc2hhM18zODRfX2RvY19fLCBTSEEzX21ldGhvZHMpOworU0hBM19UWVBFKFNIQTNfNTEydHlwZSwgIl9zaGEzLnNoYTNfNTEyIiwgc2hhM181MTJfX2RvY19fLCBTSEEzX21ldGhvZHMpOworCisjaWZkZWYgUFlfV0lUSF9LRUNDQUsKK1B5RG9jX1NUUlZBUihrZWNjYWtfMjI0X19kb2NfXywKKyJrZWNjYWtfMjI0KFtzdHJpbmddKSAtPiBLZWNjYWsgb2JqZWN0XG5cCitcblwKK1JldHVybiBhIG5ldyBLZWNjYWsgaGFzaCBvYmplY3Qgd2l0aCBhIGhhc2hiaXQgbGVuZ3RoIG9mIDI4IGJ5dGVzLiIpOworCitQeURvY19TVFJWQVIoa2VjY2FrXzI1Nl9fZG9jX18sCisia2VjY2FrXzI1Nihbc3RyaW5nXSkgLT4gS2VjY2FrIG9iamVjdFxuXAorXG5cCitSZXR1cm4gYSBuZXcgS2VjY2FrIGhhc2ggb2JqZWN0IHdpdGggYSBoYXNoYml0IGxlbmd0aCBvZiAzMiBieXRlcy4iKTsKKworUHlEb2NfU1RSVkFSKGtlY2Nha18zODRfX2RvY19fLAorImtlY2Nha18zODQoW3N0cmluZ10pIC0+IEtlY2NhayBvYmplY3RcblwKK1xuXAorUmV0dXJuIGEgbmV3IEtlY2NhayBoYXNoIG9iamVjdCB3aXRoIGEgaGFzaGJpdCBsZW5ndGggb2YgNDggYnl0ZXMuIik7CisKK1B5RG9jX1NUUlZBUihrZWNjYWtfNTEyX19kb2NfXywKKyJrZWNjYWtfNTEyKFtzdHJpbmddKSAtPiBLZWNjYWsgb2JqZWN0XG5cCitcblwKK1JldHVybiBhIG5ldyBLZWNjYWsgaGFzaCBvYmplY3Qgd2l0aCBhIGhhc2hiaXQgbGVuZ3RoIG9mIDY0IGJ5dGVzLiIpOworCitTSEEzX1RZUEUoS2VjY2FrXzIyNHR5cGUsICJfc2hhMy5rZWNjYWtfMjI0Iiwga2VjY2FrXzIyNF9fZG9jX18sIFNIQTNfbWV0aG9kcyk7CitTSEEzX1RZUEUoS2VjY2FrXzI1NnR5cGUsICJfc2hhMy5rZWNjYWtfMjU2Iiwga2VjY2FrXzI1Nl9fZG9jX18sIFNIQTNfbWV0aG9kcyk7CitTSEEzX1RZUEUoS2VjY2FrXzM4NHR5cGUsICJfc2hhMy5rZWNjYWtfMzg0Iiwga2VjY2FrXzM4NF9fZG9jX18sIFNIQTNfbWV0aG9kcyk7CitTSEEzX1RZUEUoS2VjY2FrXzUxMnR5cGUsICJfc2hhMy5rZWNjYWtfNTEyIiwga2VjY2FrXzUxMl9fZG9jX18sIFNIQTNfbWV0aG9kcyk7CisjZW5kaWYKKworCitzdGF0aWMgUHlPYmplY3QgKgorX1NIQUtFX2RpZ2VzdChTSEEzb2JqZWN0ICpzZWxmLCB1bnNpZ25lZCBsb25nIGRpZ2VzdGxlbiwgaW50IGhleCkKK3sKKyAgICB1bnNpZ25lZCBjaGFyICpkaWdlc3QgPSBOVUxMOworICAgIFNIQTNfc3RhdGUgdGVtcDsKKyAgICBpbnQgcmVzOworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOworCisgICAgLyogRXh0cmFjdExhbmUgbmVlZHMgYXQgbGVhc3QgU0hBM19NQVhfRElHRVNUU0laRSArIFNIQTNfTEFORVNJWkUgYW5kCisgICAgICogU0hBM19MQU5FU0laRSBleHRyYSBzcGFjZS4KKyAgICAgKi8KKyAgICBkaWdlc3QgPSAodW5zaWduZWQgY2hhciopUHlNZW1fTWFsbG9jKGRpZ2VzdGxlbiArIFNIQTNfTEFORVNJWkUpOworICAgIGlmIChkaWdlc3QgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICB9CisKKyAgICAvKiBHZXQgdGhlIHJhdyAoYmluYXJ5KSBkaWdlc3QgdmFsdWUgKi8KKyAgICBFTlRFUl9IQVNITElCKHNlbGYpOworICAgIFNIQTNfY29weXN0YXRlKHRlbXAsIHNlbGYtPmhhc2hfc3RhdGUpOworICAgIExFQVZFX0hBU0hMSUIoc2VsZik7CisgICAgcmVzID0gU0hBM19kb25lKCZ0ZW1wLCBOVUxMKTsKKyAgICBpZiAocmVzICE9IFNVQ0NFU1MpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgImludGVybmFsIGVycm9yIGluIFNIQTMgZG9uZSgpIik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIHJlcyA9IFNIQTNfc3F1ZWV6ZSgmdGVtcCwgZGlnZXN0LCBkaWdlc3RsZW4gKiA4KTsKKyAgICBpZiAocmVzICE9IFNVQ0NFU1MpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgImludGVybmFsIGVycm9yIGluIFNIQTMgU3F1ZWV6ZSgpIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoaGV4KSB7CisgICAgICAgICByZXN1bHQgPSBfUHlfc3RyaGV4KChjb25zdCBjaGFyICopZGlnZXN0LCBkaWdlc3RsZW4pOworICAgIH0gZWxzZSB7CisgICAgICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNvbnN0IGNoYXIgKilkaWdlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlnZXN0bGVuKTsKKyAgICB9CisgIGVycm9yOgorICAgIGlmIChkaWdlc3QgIT0gTlVMTCkgeworICAgICAgICBQeU1lbV9GcmVlKGRpZ2VzdCk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKKworLypbY2xpbmljIGlucHV0XQorX3NoYTMuc2hha2VfMTI4LmRpZ2VzdAorCisgICAgbGVuZ3RoOiB1bnNpZ25lZF9sb25nKGJpdHdpc2U9VHJ1ZSkKKyAgICBcCisKK1JldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGJpbmFyeSBkYXRhLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NoYTNfc2hha2VfMTI4X2RpZ2VzdF9pbXBsKFNIQTNvYmplY3QgKnNlbGYsIHVuc2lnbmVkIGxvbmcgbGVuZ3RoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTIzMTM2MDVlMmY4N2JiOGYgaW5wdXQ9NjA4YzhjYTgwYWU5ZDExNV0qLworeworICAgIHJldHVybiBfU0hBS0VfZGlnZXN0KHNlbGYsIGxlbmd0aCwgMCk7Cit9CisKKworLypbY2xpbmljIGlucHV0XQorX3NoYTMuc2hha2VfMTI4LmhleGRpZ2VzdAorCisgICAgbGVuZ3RoOiB1bnNpZ25lZF9sb25nKGJpdHdpc2U9VHJ1ZSkKKyAgICBcCisKK1JldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIGRpZ2l0cy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGEzX3NoYWtlXzEyOF9oZXhkaWdlc3RfaW1wbChTSEEzb2JqZWN0ICpzZWxmLCB1bnNpZ25lZCBsb25nIGxlbmd0aCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iZjhlMmYxZTQ5MDk0NGE4IGlucHV0PTY0ZTU2YjQ3NjBkYjQ1NzNdKi8KK3sKKyAgICByZXR1cm4gX1NIQUtFX2RpZ2VzdChzZWxmLCBsZW5ndGgsIDEpOworfQorCisKK3N0YXRpYyBQeU1ldGhvZERlZiBTSEFLRV9tZXRob2RzW10gPSB7CisgICAgX1NIQTNfU0hBM18yMjRfQ09QWV9NRVRIT0RERUYKKyAgICBfU0hBM19TSEFLRV8xMjhfRElHRVNUX01FVEhPRERFRgorICAgIF9TSEEzX1NIQUtFXzEyOF9IRVhESUdFU1RfTUVUSE9EREVGCisgICAgX1NIQTNfU0hBM18yMjRfVVBEQVRFX01FVEhPRERFRgorICAgIHtOVUxMLCAgICAgICAgTlVMTH0gICAgICAgICAvKiBzZW50aW5lbCAqLworfTsKKworUHlEb2NfU1RSVkFSKHNoYWtlXzEyOF9fZG9jX18sCisic2hha2VfMTI4KFtzdHJpbmddKSAtPiBTSEFLRSBvYmplY3RcblwKK1xuXAorUmV0dXJuIGEgbmV3IFNIQUtFIGhhc2ggb2JqZWN0LiIpOworCitQeURvY19TVFJWQVIoc2hha2VfMjU2X19kb2NfXywKKyJzaGFrZV8yNTYoW3N0cmluZ10pIC0+IFNIQUtFIG9iamVjdFxuXAorXG5cCitSZXR1cm4gYSBuZXcgU0hBS0UgaGFzaCBvYmplY3QuIik7CisKK1NIQTNfVFlQRShTSEFLRTEyOHR5cGUsICJfc2hhMy5zaGFrZV8xMjgiLCBzaGFrZV8xMjhfX2RvY19fLCBTSEFLRV9tZXRob2RzKTsKK1NIQTNfVFlQRShTSEFLRTI1NnR5cGUsICJfc2hhMy5zaGFrZV8yNTYiLCBzaGFrZV8yNTZfX2RvY19fLCBTSEFLRV9tZXRob2RzKTsKKworCisvKiBJbml0aWFsaXplIHRoaXMgbW9kdWxlLiAqLworc3RhdGljIHN0cnVjdCBQeU1vZHVsZURlZiBfU0hBM21vZHVsZSA9IHsKKyAgICAgICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULAorICAgICAgICAiX3NoYTMiLAorICAgICAgICBOVUxMLAorICAgICAgICAtMSwKKyAgICAgICAgTlVMTCwKKyAgICAgICAgTlVMTCwKKyAgICAgICAgTlVMTCwKKyAgICAgICAgTlVMTCwKKyAgICAgICAgTlVMTAorfTsKKworCitQeU1PRElOSVRfRlVOQworUHlJbml0X19zaGEzKHZvaWQpCit7CisgICAgUHlPYmplY3QgKm0gPSBOVUxMOworCisgICAgaWYgKChtID0gUHlNb2R1bGVfQ3JlYXRlKCZfU0hBM21vZHVsZSkpID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisjZGVmaW5lIGluaXRfc2hhM3R5cGUobmFtZSwgdHlwZSkgICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9UWVBFKHR5cGUpID0gJlB5VHlwZV9UeXBlOyBcCisgICAgICAgIGlmIChQeVR5cGVfUmVhZHkodHlwZSkgPCAwKSB7IFwKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7ICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X0lOQ1JFRigoUHlPYmplY3QgKil0eXBlKTsgIFwKKyAgICAgICAgaWYgKFB5TW9kdWxlX0FkZE9iamVjdChtLCBuYW1lLCAoUHlPYmplY3QgKil0eXBlKSA8IDApIHsgXAorICAgICAgICAgICAgZ290byBlcnJvcjsgICAgICAgICAgICAgICBcCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlKDApCisKKyAgICBpbml0X3NoYTN0eXBlKCJzaGEzXzIyNCIsICZTSEEzXzIyNHR5cGUpOworICAgIGluaXRfc2hhM3R5cGUoInNoYTNfMjU2IiwgJlNIQTNfMjU2dHlwZSk7CisgICAgaW5pdF9zaGEzdHlwZSgic2hhM18zODQiLCAmU0hBM18zODR0eXBlKTsKKyAgICBpbml0X3NoYTN0eXBlKCJzaGEzXzUxMiIsICZTSEEzXzUxMnR5cGUpOworI2lmZGVmIFBZX1dJVEhfS0VDQ0FLCisgICAgaW5pdF9zaGEzdHlwZSgia2VjY2FrXzIyNCIsICZLZWNjYWtfMjI0dHlwZSk7CisgICAgaW5pdF9zaGEzdHlwZSgia2VjY2FrXzI1NiIsICZLZWNjYWtfMjU2dHlwZSk7CisgICAgaW5pdF9zaGEzdHlwZSgia2VjY2FrXzM4NCIsICZLZWNjYWtfMzg0dHlwZSk7CisgICAgaW5pdF9zaGEzdHlwZSgia2VjY2FrXzUxMiIsICZLZWNjYWtfNTEydHlwZSk7CisjZW5kaWYKKyAgICBpbml0X3NoYTN0eXBlKCJzaGFrZV8xMjgiLCAmU0hBS0UxMjh0eXBlKTsKKyAgICBpbml0X3NoYTN0eXBlKCJzaGFrZV8yNTYiLCAmU0hBS0UyNTZ0eXBlKTsKKworI3VuZGVmIGluaXRfc2hhM3R5cGUKKworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAia2VjY2Frb3B0IiwgS2VjY2FrT3B0KSA8IDApIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgaWYgKFB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50KG0sICJpbXBsZW1lbnRhdGlvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtlY2Nha1AxNjAwX2ltcGxlbWVudGF0aW9uKSA8IDApIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICByZXR1cm4gbTsKKyAgZXJyb3I6CisgICAgUHlfREVDUkVGKG0pOworICAgIHJldHVybiBOVUxMOworfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3FsaXRlL2NhY2hlLmMgYi9Nb2R1bGVzL19zcWxpdGUvY2FjaGUuYwppbmRleCAzNjg5YTRlLi42MmM1ODkzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvY2FjaGUuYworKysgYi9Nb2R1bGVzL19zcWxpdGUvY2FjaGUuYwpAQCAtMjQ0LDggKzI0NCw3IEBACiAgICAgICAgIHB0ciA9IHB0ci0+bmV4dDsKICAgICB9CiAKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKIHN0YXRpYyBQeU1ldGhvZERlZiBjYWNoZV9tZXRob2RzW10gPSB7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvY29ubmVjdGlvbi5jIGIvTW9kdWxlcy9fc3FsaXRlL2Nvbm5lY3Rpb24uYwppbmRleCA3MGQwOTk1Li4xYzZhYTU0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvY29ubmVjdGlvbi5jCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9jb25uZWN0aW9uLmMKQEAgLTE2NSw3ICsxNjUsNiBAQAogICAgIHNlbGYtPnN0YXRlbWVudF9jYWNoZS0+ZGVjcmVmX2ZhY3RvcnkgPSAwOwogICAgIFB5X0RFQ1JFRihzZWxmKTsKIAotICAgIHNlbGYtPmluVHJhbnNhY3Rpb24gPSAwOwogICAgIHNlbGYtPmRldGVjdF90eXBlcyA9IGRldGVjdF90eXBlczsKICAgICBzZWxmLT50aW1lb3V0ID0gdGltZW91dDsKICAgICAodm9pZClzcWxpdGUzX2J1c3lfdGltZW91dChzZWxmLT5kYiwgKGludCkodGltZW91dCoxMDAwKSk7CkBAIC0yMDIsMjYgKzIwMSw2IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLS8qIEVtcHR5IHRoZSBlbnRpcmUgc3RhdGVtZW50IGNhY2hlIG9mIHRoaXMgY29ubmVjdGlvbiAqLwotdm9pZCBweXNxbGl0ZV9mbHVzaF9zdGF0ZW1lbnRfY2FjaGUocHlzcWxpdGVfQ29ubmVjdGlvbiogc2VsZikKLXsKLSAgICBweXNxbGl0ZV9Ob2RlKiBub2RlOwotICAgIHB5c3FsaXRlX1N0YXRlbWVudCogc3RhdGVtZW50OwotCi0gICAgbm9kZSA9IHNlbGYtPnN0YXRlbWVudF9jYWNoZS0+Zmlyc3Q7Ci0KLSAgICB3aGlsZSAobm9kZSkgewotICAgICAgICBzdGF0ZW1lbnQgPSAocHlzcWxpdGVfU3RhdGVtZW50Kikobm9kZS0+ZGF0YSk7Ci0gICAgICAgICh2b2lkKXB5c3FsaXRlX3N0YXRlbWVudF9maW5hbGl6ZShzdGF0ZW1lbnQpOwotICAgICAgICBub2RlID0gbm9kZS0+bmV4dDsKLSAgICB9Ci0KLSAgICBQeV9TRVRSRUYoc2VsZi0+c3RhdGVtZW50X2NhY2hlLAotICAgICAgICAgICAgICAocHlzcWxpdGVfQ2FjaGUgKilQeU9iamVjdF9DYWxsRnVuY3Rpb24oKFB5T2JqZWN0ICopJnB5c3FsaXRlX0NhY2hlVHlwZSwgIk8iLCBzZWxmKSk7Ci0gICAgUHlfREVDUkVGKHNlbGYpOwotICAgIHNlbGYtPnN0YXRlbWVudF9jYWNoZS0+ZGVjcmVmX2ZhY3RvcnkgPSAwOwotfQotCiAvKiBhY3Rpb24gaW4gKEFDVElPTl9SRVNFVCwgQUNUSU9OX0ZJTkFMSVpFKSAqLwogdm9pZCBweXNxbGl0ZV9kb19hbGxfc3RhdGVtZW50cyhweXNxbGl0ZV9Db25uZWN0aW9uKiBzZWxmLCBpbnQgYWN0aW9uLCBpbnQgcmVzZXRfY3Vyc29ycykKIHsKQEAgLTM2Niw4ICszNDUsNyBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiAvKgpAQCAtNDA2LDkgKzM4NCw3IEBACiAgICAgfQogCiAgICAgcmMgPSBweXNxbGl0ZV9zdGVwKHN0YXRlbWVudCwgc2VsZik7Ci0gICAgaWYgKHJjID09IFNRTElURV9ET05FKSB7Ci0gICAgICAgIHNlbGYtPmluVHJhbnNhY3Rpb24gPSAxOwotICAgIH0gZWxzZSB7CisgICAgaWYgKHJjICE9IFNRTElURV9ET05FKSB7CiAgICAgICAgIF9weXNxbGl0ZV9zZXRlcnJvcihzZWxmLT5kYiwgc3RhdGVtZW50KTsKICAgICB9CiAKQEAgLTQzOSw3ICs0MTUsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoc2VsZi0+aW5UcmFuc2FjdGlvbikgeworICAgIGlmICghc3FsaXRlM19nZXRfYXV0b2NvbW1pdChzZWxmLT5kYikpIHsKIAogICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgICAgIHJjID0gc3FsaXRlM19wcmVwYXJlKHNlbGYtPmRiLCAiQ09NTUlUIiwgLTEsICZzdGF0ZW1lbnQsICZ0YWlsKTsKQEAgLTQ1MCw5ICs0MjYsNyBAQAogICAgICAgICB9CiAKICAgICAgICAgcmMgPSBweXNxbGl0ZV9zdGVwKHN0YXRlbWVudCwgc2VsZik7Ci0gICAgICAgIGlmIChyYyA9PSBTUUxJVEVfRE9ORSkgewotICAgICAgICAgICAgc2VsZi0+aW5UcmFuc2FjdGlvbiA9IDA7Ci0gICAgICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChyYyAhPSBTUUxJVEVfRE9ORSkgewogICAgICAgICAgICAgX3B5c3FsaXRlX3NldGVycm9yKHNlbGYtPmRiLCBzdGF0ZW1lbnQpOwogICAgICAgICB9CiAKQEAgLTQ4NCw3ICs0NTgsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoc2VsZi0+aW5UcmFuc2FjdGlvbikgeworICAgIGlmICghc3FsaXRlM19nZXRfYXV0b2NvbW1pdChzZWxmLT5kYikpIHsKICAgICAgICAgcHlzcWxpdGVfZG9fYWxsX3N0YXRlbWVudHMoc2VsZiwgQUNUSU9OX1JFU0VULCAxKTsKIAogICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCkBAIC00OTYsOSArNDcwLDcgQEAKICAgICAgICAgfQogCiAgICAgICAgIHJjID0gcHlzcWxpdGVfc3RlcChzdGF0ZW1lbnQsIHNlbGYpOwotICAgICAgICBpZiAocmMgPT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgICAgIHNlbGYtPmluVHJhbnNhY3Rpb24gPSAwOwotICAgICAgICB9IGVsc2UgeworICAgICAgICBpZiAocmMgIT0gU1FMSVRFX0RPTkUpIHsKICAgICAgICAgICAgIF9weXNxbGl0ZV9zZXRlcnJvcihzZWxmLT5kYiwgc3RhdGVtZW50KTsKICAgICAgICAgfQogCkBAIC01MzMsNyArNTA1LDcgQEAKICAgICB9IGVsc2UgaWYgKFB5RmxvYXRfQ2hlY2socHlfdmFsKSkgewogICAgICAgICBzcWxpdGUzX3Jlc3VsdF9kb3VibGUoY29udGV4dCwgUHlGbG9hdF9Bc0RvdWJsZShweV92YWwpKTsKICAgICB9IGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhweV92YWwpKSB7Ci0gICAgICAgIGNvbnN0IGNoYXIgKnN0ciA9IF9QeVVuaWNvZGVfQXNTdHJpbmcocHlfdmFsKTsKKyAgICAgICAgY29uc3QgY2hhciAqc3RyID0gUHlVbmljb2RlX0FzVVRGOChweV92YWwpOwogICAgICAgICBpZiAoc3RyID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIHNxbGl0ZTNfcmVzdWx0X3RleHQoY29udGV4dCwgc3RyLCAtMSwgU1FMSVRFX1RSQU5TSUVOVCk7CkBAIC02NzMsNyArNjQ1LDcgQEAKICAgICBhZ2dyZWdhdGVfaW5zdGFuY2UgPSAoUHlPYmplY3QqKilzcWxpdGUzX2FnZ3JlZ2F0ZV9jb250ZXh0KGNvbnRleHQsIHNpemVvZihQeU9iamVjdCopKTsKIAogICAgIGlmICgqYWdncmVnYXRlX2luc3RhbmNlID09IDApIHsKLSAgICAgICAgKmFnZ3JlZ2F0ZV9pbnN0YW5jZSA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihhZ2dyZWdhdGVfY2xhc3MsICIiKTsKKyAgICAgICAgKmFnZ3JlZ2F0ZV9pbnN0YW5jZSA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihhZ2dyZWdhdGVfY2xhc3MsIE5VTEwpOwogCiAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgICAgICAqYWdncmVnYXRlX2luc3RhbmNlID0gMDsKQEAgLTc0NSw3ICs3MTcsNyBAQAogICAgIFB5RXJyX0ZldGNoKCZleGNlcHRpb24sICZ2YWx1ZSwgJnRiKTsKICAgICByZXN0b3JlID0gMTsKIAotICAgIGZ1bmN0aW9uX3Jlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKmFnZ3JlZ2F0ZV9pbnN0YW5jZSwgJlB5SWRfZmluYWxpemUsICIiKTsKKyAgICBmdW5jdGlvbl9yZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKCphZ2dyZWdhdGVfaW5zdGFuY2UsICZQeUlkX2ZpbmFsaXplLCBOVUxMKTsKIAogICAgIFB5X0RFQ1JFRigqYWdncmVnYXRlX2luc3RhbmNlKTsKIApAQCAtODc0LDggKzg0Niw3IEBACiAgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbShzZWxmLT5mdW5jdGlvbl9waW5ib2FyZCwgZnVuYywgUHlfTm9uZSkgPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIHJldHVybiBQeV9Ob25lOworICAgICAgICBQeV9SRVRVUk5fTk9ORTsKICAgICB9CiB9CiAKQEAgLTkwNiw4ICs4NzcsNyBAQAogICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW0oc2VsZi0+ZnVuY3Rpb25fcGluYm9hcmQsIGFnZ3JlZ2F0ZV9jbGFzcywgUHlfTm9uZSkgPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIHJldHVybiBQeV9Ob25lOworICAgICAgICBQeV9SRVRVUk5fTk9ORTsKICAgICB9CiB9CiAKQEAgLTk2Myw3ICs5MzMsNyBAQAogCiAgICAgZ2lsc3RhdGUgPSBQeUdJTFN0YXRlX0Vuc3VyZSgpOwogI2VuZGlmCi0gICAgcmV0ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKChQeU9iamVjdCopdXNlcl9hcmcsICIiKTsKKyAgICByZXQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oKFB5T2JqZWN0Kil1c2VyX2FyZywgTlVMTCk7CiAKICAgICBpZiAoIXJldCkgewogICAgICAgICBpZiAoX2VuYWJsZV9jYWxsYmFja190cmFjZWJhY2tzKSB7CkBAIC0xMDQyLDggKzEwMTIsNyBAQAogICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW0oc2VsZi0+ZnVuY3Rpb25fcGluYm9hcmQsIGF1dGhvcml6ZXJfY2IsIFB5X05vbmUpID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICByZXR1cm4gUHlfTm9uZTsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CiAgICAgfQogfQogCkBAIC0xMDcyLDggKzEwNDEsNyBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiBzdGF0aWMgUHlPYmplY3QqIHB5c3FsaXRlX2Nvbm5lY3Rpb25fc2V0X3RyYWNlX2NhbGxiYWNrKHB5c3FsaXRlX0Nvbm5lY3Rpb24qIHNlbGYsIFB5T2JqZWN0KiBhcmdzLCBQeU9iamVjdCoga3dhcmdzKQpAQCAtMTEwMCw4ICsxMDY4LDcgQEAKICAgICAgICAgc3FsaXRlM190cmFjZShzZWxmLT5kYiwgX3RyYWNlX2NhbGxiYWNrLCB0cmFjZV9jYWxsYmFjayk7CiAgICAgfQogCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiAjaWZkZWYgSEFWRV9MT0FEX0VYVEVOU0lPTgpAQCAtMTEyNCw4ICsxMDkxLDcgQEAKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHB5c3FsaXRlX09wZXJhdGlvbmFsRXJyb3IsICJFcnJvciBlbmFibGluZyBsb2FkIGV4dGVuc2lvbiIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9IGVsc2UgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIHJldHVybiBQeV9Ob25lOworICAgICAgICBQeV9SRVRVUk5fTk9ORTsKICAgICB9CiB9CiAKQEAgLTExNDgsOCArMTExNCw3IEBACiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhweXNxbGl0ZV9PcGVyYXRpb25hbEVycm9yLCBlcnJtc2cpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9IGVsc2UgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIHJldHVybiBQeV9Ob25lOworICAgICAgICBQeV9SRVRVUk5fTk9ORTsKICAgICB9CiB9CiAjZW5kaWYKQEAgLTExODYsNiArMTE1MSwxNyBAQAogICAgIH0KIH0KIAorc3RhdGljIFB5T2JqZWN0KiBweXNxbGl0ZV9jb25uZWN0aW9uX2dldF9pbl90cmFuc2FjdGlvbihweXNxbGl0ZV9Db25uZWN0aW9uKiBzZWxmLCB2b2lkKiB1bnVzZWQpCit7CisgICAgaWYgKCFweXNxbGl0ZV9jaGVja19jb25uZWN0aW9uKHNlbGYpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoIXNxbGl0ZTNfZ2V0X2F1dG9jb21taXQoc2VsZi0+ZGIpKSB7CisgICAgICAgIFB5X1JFVFVSTl9UUlVFOworICAgIH0KKyAgICBQeV9SRVRVUk5fRkFMU0U7Cit9CisKIHN0YXRpYyBpbnQgcHlzcWxpdGVfY29ubmVjdGlvbl9zZXRfaXNvbGF0aW9uX2xldmVsKHB5c3FsaXRlX0Nvbm5lY3Rpb24qIHNlbGYsIFB5T2JqZWN0KiBpc29sYXRpb25fbGV2ZWwpCiB7CiAgICAgaWYgKGlzb2xhdGlvbl9sZXZlbCA9PSBQeV9Ob25lKSB7CkBAIC0xMTk2LDcgKzExNzIsNiBAQAogICAgICAgICBQeV9ERUNSRUYocmVzKTsKIAogICAgICAgICBzZWxmLT5iZWdpbl9zdGF0ZW1lbnQgPSBOVUxMOwotICAgICAgICBzZWxmLT5pblRyYW5zYWN0aW9uID0gMDsKICAgICB9IGVsc2UgewogICAgICAgICBjb25zdCBjaGFyICogY29uc3QgKmNhbmRpZGF0ZTsKICAgICAgICAgUHlPYmplY3QgKnVwcGVyY2FzZV9sZXZlbDsKQEAgLTEyOTksNyArMTI3NCw3IEBACiAgICAgUHlPYmplY3QqIHJlc3VsdCA9IDA7CiAgICAgUHlPYmplY3QqIG1ldGhvZCA9IDA7CiAKLSAgICBjdXJzb3IgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCopc2VsZiwgJlB5SWRfY3Vyc29yLCAiIik7CisgICAgY3Vyc29yID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QqKXNlbGYsICZQeUlkX2N1cnNvciwgTlVMTCk7CiAgICAgaWYgKCFjdXJzb3IpIHsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CkBAIC0xMzI4LDcgKzEzMDMsNyBAQAogICAgIFB5T2JqZWN0KiByZXN1bHQgPSAwOwogICAgIFB5T2JqZWN0KiBtZXRob2QgPSAwOwogCi0gICAgY3Vyc29yID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QqKXNlbGYsICZQeUlkX2N1cnNvciwgIiIpOworICAgIGN1cnNvciA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0KilzZWxmLCAmUHlJZF9jdXJzb3IsIE5VTEwpOwogICAgIGlmICghY3Vyc29yKSB7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQpAQCAtMTM1Nyw3ICsxMzMyLDcgQEAKICAgICBQeU9iamVjdCogcmVzdWx0ID0gMDsKICAgICBQeU9iamVjdCogbWV0aG9kID0gMDsKIAotICAgIGN1cnNvciA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0KilzZWxmLCAmUHlJZF9jdXJzb3IsICIiKTsKKyAgICBjdXJzb3IgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCopc2VsZiwgJlB5SWRfY3Vyc29yLCBOVUxMKTsKICAgICBpZiAoIWN1cnNvcikgewogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KQEAgLTE1NTIsNyArMTUyNyw3IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICB1cHBlcmNhc2VfbmFtZV9zdHIgPSBfUHlVbmljb2RlX0FzU3RyaW5nKHVwcGVyY2FzZV9uYW1lKTsKKyAgICB1cHBlcmNhc2VfbmFtZV9zdHIgPSBQeVVuaWNvZGVfQXNVVEY4KHVwcGVyY2FzZV9uYW1lKTsKICAgICBpZiAoIXVwcGVyY2FzZV9uYW1lX3N0cikKICAgICAgICAgZ290byBmaW5hbGx5OwogCkBAIC0xNjIxLDcgKzE1OTYsNyBAQAogICAgICAgICBtZXRob2RfbmFtZSA9ICJyb2xsYmFjayI7CiAgICAgfQogCi0gICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZCgoUHlPYmplY3QqKXNlbGYsIG1ldGhvZF9uYW1lLCAiIik7CisgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZCgoUHlPYmplY3QqKXNlbGYsIG1ldGhvZF9uYW1lLCBOVUxMKTsKICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0xNjMwLDEyICsxNjA1LDEzIEBACiAgICAgUHlfUkVUVVJOX0ZBTFNFOwogfQogCi1zdGF0aWMgY2hhciBjb25uZWN0aW9uX2RvY1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIGNvbm5lY3Rpb25fZG9jW10gPQogUHlEb2NfU1RSKCJTUUxpdGUgZGF0YWJhc2UgY29ubmVjdGlvbiBvYmplY3QuIik7CiAKIHN0YXRpYyBQeUdldFNldERlZiBjb25uZWN0aW9uX2dldHNldFtdID0gewogICAgIHsiaXNvbGF0aW9uX2xldmVsIiwgIChnZXR0ZXIpcHlzcWxpdGVfY29ubmVjdGlvbl9nZXRfaXNvbGF0aW9uX2xldmVsLCAoc2V0dGVyKXB5c3FsaXRlX2Nvbm5lY3Rpb25fc2V0X2lzb2xhdGlvbl9sZXZlbH0sCiAgICAgeyJ0b3RhbF9jaGFuZ2VzIiwgIChnZXR0ZXIpcHlzcWxpdGVfY29ubmVjdGlvbl9nZXRfdG90YWxfY2hhbmdlcywgKHNldHRlcikwfSwKKyAgICB7ImluX3RyYW5zYWN0aW9uIiwgIChnZXR0ZXIpcHlzcWxpdGVfY29ubmVjdGlvbl9nZXRfaW5fdHJhbnNhY3Rpb24sIChzZXR0ZXIpMH0sCiAgICAge05VTEx9CiB9OwogCkBAIC0xNjk3LDcgKzE2NzMsNiBAQAogICAgIHsiTm90U3VwcG9ydGVkRXJyb3IiLCBUX09CSkVDVCwgb2Zmc2V0b2YocHlzcWxpdGVfQ29ubmVjdGlvbiwgTm90U3VwcG9ydGVkRXJyb3IpLCBSRUFET05MWX0sCiAgICAgeyJyb3dfZmFjdG9yeSIsIFRfT0JKRUNULCBvZmZzZXRvZihweXNxbGl0ZV9Db25uZWN0aW9uLCByb3dfZmFjdG9yeSl9LAogICAgIHsidGV4dF9mYWN0b3J5IiwgVF9PQkpFQ1QsIG9mZnNldG9mKHB5c3FsaXRlX0Nvbm5lY3Rpb24sIHRleHRfZmFjdG9yeSl9LAotICAgIHsiaW5fdHJhbnNhY3Rpb24iLCBUX0JPT0wsIG9mZnNldG9mKHB5c3FsaXRlX0Nvbm5lY3Rpb24sIGluVHJhbnNhY3Rpb24pLCBSRUFET05MWX0sCiAgICAge05VTEx9CiB9OwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvY29ubmVjdGlvbi5oIGIvTW9kdWxlcy9fc3FsaXRlL2Nvbm5lY3Rpb24uaAppbmRleCBhZGJmYjU0Li4yODYwYTBjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvY29ubmVjdGlvbi5oCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9jb25uZWN0aW9uLmgKQEAgLTM3LDEwICszNyw2IEBACiAgICAgUHlPYmplY3RfSEVBRAogICAgIHNxbGl0ZTMqIGRiOwogCi0gICAgLyogMSBpZiB3ZSBhcmUgY3VycmVudGx5IHdpdGhpbiBhIHRyYW5zYWN0aW9uLCBpLiBlLiBpZiBhIEJFR0lOIGhhcyBiZWVuCi0gICAgICogaXNzdWVkICovCi0gICAgY2hhciBpblRyYW5zYWN0aW9uOwotCiAgICAgLyogdGhlIHR5cGUgZGV0ZWN0aW9uIG1vZGUuIE9ubHkgMCwgUEFSU0VfREVDTFRZUEVTLCBQQVJTRV9DT0xOQU1FUyBvciBhCiAgICAgICogYml0d2lzZSBjb21iaW5hdGlvbiB0aGVyZW9mIG1ha2VzIHNlbnNlICovCiAgICAgaW50IGRldGVjdF90eXBlczsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS9jdXJzb3IuYyBiL01vZHVsZXMvX3NxbGl0ZS9jdXJzb3IuYwppbmRleCBlMTY3NmRlLi4zOWY3YTY1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvY3Vyc29yLmMKKysrIGIvTW9kdWxlcy9fc3FsaXRlL2N1cnNvci5jCkBAIC0yNyw0NSArMjcsNyBAQAogCiBQeU9iamVjdCogcHlzcWxpdGVfY3Vyc29yX2l0ZXJuZXh0KHB5c3FsaXRlX0N1cnNvciogc2VsZik7CiAKLXN0YXRpYyBjaGFyKiBlcnJtc2dfZmV0Y2hfYWNyb3NzX3JvbGxiYWNrID0gIkN1cnNvciBuZWVkZWQgdG8gYmUgcmVzZXQgYmVjYXVzZSBvZiBjb21taXQvcm9sbGJhY2sgYW5kIGNhbiBubyBsb25nZXIgYmUgZmV0Y2hlZCBmcm9tLiI7Ci0KLXN0YXRpYyBweXNxbGl0ZV9TdGF0ZW1lbnRLaW5kIGRldGVjdF9zdGF0ZW1lbnRfdHlwZShjb25zdCBjaGFyKiBzdGF0ZW1lbnQpCi17Ci0gICAgY2hhciBidWZbMjBdOwotICAgIGNvbnN0IGNoYXIqIHNyYzsKLSAgICBjaGFyKiBkc3Q7Ci0KLSAgICBzcmMgPSBzdGF0ZW1lbnQ7Ci0gICAgLyogc2tpcCBvdmVyIHdoaXRlcGFjZSAqLwotICAgIHdoaWxlICgqc3JjID09ICdccicgfHwgKnNyYyA9PSAnXG4nIHx8ICpzcmMgPT0gJyAnIHx8ICpzcmMgPT0gJ1x0JykgewotICAgICAgICBzcmMrKzsKLSAgICB9Ci0KLSAgICBpZiAoKnNyYyA9PSAwKQotICAgICAgICByZXR1cm4gU1RBVEVNRU5UX0lOVkFMSUQ7Ci0KLSAgICBkc3QgPSBidWY7Ci0gICAgKmRzdCA9IDA7Ci0gICAgd2hpbGUgKFB5X0lTQUxQSEEoKnNyYykgJiYgKGRzdCAtIGJ1ZikgPCAoKFB5X3NzaXplX3Qpc2l6ZW9mKGJ1ZikgLSAyKSkgewotICAgICAgICAqZHN0KysgPSBQeV9UT0xPV0VSKCpzcmMrKyk7Ci0gICAgfQotCi0gICAgKmRzdCA9IDA7Ci0KLSAgICBpZiAoIXN0cmNtcChidWYsICJzZWxlY3QiKSkgewotICAgICAgICByZXR1cm4gU1RBVEVNRU5UX1NFTEVDVDsKLSAgICB9IGVsc2UgaWYgKCFzdHJjbXAoYnVmLCAiaW5zZXJ0IikpIHsKLSAgICAgICAgcmV0dXJuIFNUQVRFTUVOVF9JTlNFUlQ7Ci0gICAgfSBlbHNlIGlmICghc3RyY21wKGJ1ZiwgInVwZGF0ZSIpKSB7Ci0gICAgICAgIHJldHVybiBTVEFURU1FTlRfVVBEQVRFOwotICAgIH0gZWxzZSBpZiAoIXN0cmNtcChidWYsICJkZWxldGUiKSkgewotICAgICAgICByZXR1cm4gU1RBVEVNRU5UX0RFTEVURTsKLSAgICB9IGVsc2UgaWYgKCFzdHJjbXAoYnVmLCAicmVwbGFjZSIpKSB7Ci0gICAgICAgIHJldHVybiBTVEFURU1FTlRfUkVQTEFDRTsKLSAgICB9IGVsc2UgewotICAgICAgICByZXR1cm4gU1RBVEVNRU5UX09USEVSOwotICAgIH0KLX0KK3N0YXRpYyBjb25zdCBjaGFyIGVycm1zZ19mZXRjaF9hY3Jvc3Nfcm9sbGJhY2tbXSA9ICJDdXJzb3IgbmVlZGVkIHRvIGJlIHJlc2V0IGJlY2F1c2Ugb2YgY29tbWl0L3JvbGxiYWNrIGFuZCBjYW4gbm8gbG9uZ2VyIGJlIGZldGNoZWQgZnJvbS4iOwogCiBzdGF0aWMgaW50IHB5c3FsaXRlX2N1cnNvcl9pbml0KHB5c3FsaXRlX0N1cnNvciogc2VsZiwgUHlPYmplY3QqIGFyZ3MsIFB5T2JqZWN0KiBrd2FyZ3MpCiB7CkBAIC0xNDMsNyArMTA1LDcgQEAKICAgICBQeU9iamVjdCogcmV0dmFsOwogICAgIF9QeV9JREVOVElGSUVSKHVwcGVyKTsKIAotICAgIHVwY2FzZV9rZXkgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGtleSwgJlB5SWRfdXBwZXIsICIiKTsKKyAgICB1cGNhc2Vfa2V5ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChrZXksICZQeUlkX3VwcGVyLCBOVUxMKTsKICAgICBpZiAoIXVwY2FzZV9rZXkpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMjQyLDggKzIwNCw3IEBACiAgICAgY29uc3QgY2hhciogcG9zOwogCiAgICAgaWYgKCFjb2xuYW1lKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICAgICAgcmV0dXJuIFB5X05vbmU7CisgICAgICAgIFB5X1JFVFVSTl9OT05FOwogICAgIH0KIAogICAgIGZvciAocG9zID0gY29sbmFtZTs7IHBvcysrKSB7CkBAIC00MjgsOSArMzg5LDkgQEAKICAgICBQeU9iamVjdCogZnVuY19hcmdzOwogICAgIFB5T2JqZWN0KiByZXN1bHQ7CiAgICAgaW50IG51bWNvbHM7Ci0gICAgaW50IHN0YXRlbWVudF90eXBlOwogICAgIFB5T2JqZWN0KiBkZXNjcmlwdG9yOwogICAgIFB5T2JqZWN0KiBzZWNvbmRfYXJndW1lbnQgPSBOVUxMOworICAgIHNxbGl0ZV9pbnQ2NCBsYXN0cm93aWQ7CiAKICAgICBpZiAoIWNoZWNrX2N1cnNvcihzZWxmKSkgewogICAgICAgICBnb3RvIGVycm9yOwpAQCAtNTA0LDE0ICs0NjUsMTQgQEAKICAgICAgICAgcHlzcWxpdGVfc3RhdGVtZW50X3Jlc2V0KHNlbGYtPnN0YXRlbWVudCk7CiAgICAgfQogCi0gICAgb3BlcmF0aW9uX2NzdHIgPSBfUHlVbmljb2RlX0FzU3RyaW5nQW5kU2l6ZShvcGVyYXRpb24sICZvcGVyYXRpb25fbGVuKTsKKyAgICBvcGVyYXRpb25fY3N0ciA9IFB5VW5pY29kZV9Bc1VURjhBbmRTaXplKG9wZXJhdGlvbiwgJm9wZXJhdGlvbl9sZW4pOwogICAgIGlmIChvcGVyYXRpb25fY3N0ciA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogCiAgICAgLyogcmVzZXQgZGVzY3JpcHRpb24gYW5kIHJvd2NvdW50ICovCiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgIFB5X1NFVFJFRihzZWxmLT5kZXNjcmlwdGlvbiwgUHlfTm9uZSk7Ci0gICAgc2VsZi0+cm93Y291bnQgPSAtMUw7CisgICAgc2VsZi0+cm93Y291bnQgPSAwTDsKIAogICAgIGZ1bmNfYXJncyA9IFB5VHVwbGVfTmV3KDEpOwogICAgIGlmICghZnVuY19hcmdzKSB7CkBAIC01NTAsNDMgKzUxMSwxOSBAQAogICAgIHB5c3FsaXRlX3N0YXRlbWVudF9yZXNldChzZWxmLT5zdGF0ZW1lbnQpOwogICAgIHB5c3FsaXRlX3N0YXRlbWVudF9tYXJrX2RpcnR5KHNlbGYtPnN0YXRlbWVudCk7CiAKLSAgICBzdGF0ZW1lbnRfdHlwZSA9IGRldGVjdF9zdGF0ZW1lbnRfdHlwZShvcGVyYXRpb25fY3N0cik7Ci0gICAgaWYgKHNlbGYtPmNvbm5lY3Rpb24tPmJlZ2luX3N0YXRlbWVudCkgewotICAgICAgICBzd2l0Y2ggKHN0YXRlbWVudF90eXBlKSB7Ci0gICAgICAgICAgICBjYXNlIFNUQVRFTUVOVF9VUERBVEU6Ci0gICAgICAgICAgICBjYXNlIFNUQVRFTUVOVF9ERUxFVEU6Ci0gICAgICAgICAgICBjYXNlIFNUQVRFTUVOVF9JTlNFUlQ6Ci0gICAgICAgICAgICBjYXNlIFNUQVRFTUVOVF9SRVBMQUNFOgotICAgICAgICAgICAgICAgIGlmICghc2VsZi0+Y29ubmVjdGlvbi0+aW5UcmFuc2FjdGlvbikgewotICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBfcHlzcWxpdGVfY29ubmVjdGlvbl9iZWdpbihzZWxmLT5jb25uZWN0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBTVEFURU1FTlRfT1RIRVI6Ci0gICAgICAgICAgICAgICAgLyogaXQncyBhIERETCBzdGF0ZW1lbnQgb3Igc29tZXRoaW5nIHNpbWlsYXIKLSAgICAgICAgICAgICAgICAgICAtIHdlIGJldHRlciBDT01NSVQgZmlyc3Qgc28gaXQgd29ya3MgZm9yIGFsbCBjYXNlcyAqLwotICAgICAgICAgICAgICAgIGlmIChzZWxmLT5jb25uZWN0aW9uLT5pblRyYW5zYWN0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHB5c3FsaXRlX2Nvbm5lY3Rpb25fY29tbWl0KHNlbGYtPmNvbm5lY3Rpb24sIE5VTEwpOwotICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFNUQVRFTUVOVF9TRUxFQ1Q6Ci0gICAgICAgICAgICAgICAgaWYgKG11bHRpcGxlKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhweXNxbGl0ZV9Qcm9ncmFtbWluZ0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiWW91IGNhbm5vdCBleGVjdXRlIFNFTEVDVCBzdGF0ZW1lbnRzIGluIGV4ZWN1dGVtYW55KCkuIik7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJyZWFrOworICAgIC8qIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSByZWFzb25zLCBkbyBub3Qgc3RhcnQgYSB0cmFuc2FjdGlvbiBpZiBhCisgICAgICAgRERMIHN0YXRlbWVudCBpcyBlbmNvdW50ZXJlZC4gIElmIGFueWJvZHkgd2FudHMgdHJhbnNhY3Rpb25hbCBEREwsCisgICAgICAgdGhleSBjYW4gaXNzdWUgYSBCRUdJTiBzdGF0ZW1lbnQgbWFudWFsbHkuICovCisgICAgaWYgKHNlbGYtPmNvbm5lY3Rpb24tPmJlZ2luX3N0YXRlbWVudCAmJiAhc3FsaXRlM19zdG10X3JlYWRvbmx5KHNlbGYtPnN0YXRlbWVudC0+c3QpICYmICFzZWxmLT5zdGF0ZW1lbnQtPmlzX2RkbCkgeworICAgICAgICBpZiAoc3FsaXRlM19nZXRfYXV0b2NvbW1pdChzZWxmLT5jb25uZWN0aW9uLT5kYikpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IF9weXNxbGl0ZV9jb25uZWN0aW9uX2JlZ2luKHNlbGYtPmNvbm5lY3Rpb24pOworICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgICAgIH0KICAgICB9CiAKLQogICAgIHdoaWxlICgxKSB7CiAgICAgICAgIHBhcmFtZXRlcnMgPSBQeUl0ZXJfTmV4dChwYXJhbWV0ZXJzX2l0ZXIpOwogICAgICAgICBpZiAoIXBhcmFtZXRlcnMpIHsKQEAgLTY3Miw2ICs2MDksMjAgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCisgICAgICAgIGlmICghc3FsaXRlM19zdG10X3JlYWRvbmx5KHNlbGYtPnN0YXRlbWVudC0+c3QpKSB7CisgICAgICAgICAgICBzZWxmLT5yb3djb3VudCArPSAobG9uZylzcWxpdGUzX2NoYW5nZXMoc2VsZi0+Y29ubmVjdGlvbi0+ZGIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2VsZi0+cm93Y291bnQ9IC0xTDsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghbXVsdGlwbGUpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzZWxmLT5sYXN0cm93aWQpOworICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICAgICAgbGFzdHJvd2lkID0gc3FsaXRlM19sYXN0X2luc2VydF9yb3dpZChzZWxmLT5jb25uZWN0aW9uLT5kYik7CisgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICAgICAgc2VsZi0+bGFzdHJvd2lkID0gX3B5c3FsaXRlX2xvbmdfZnJvbV9pbnQ2NChsYXN0cm93aWQpOworICAgICAgICB9CisKICAgICAgICAgaWYgKHJjID09IFNRTElURV9ST1cpIHsKICAgICAgICAgICAgIGlmIChtdWx0aXBsZSkgewogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhweXNxbGl0ZV9Qcm9ncmFtbWluZ0Vycm9yLCAiZXhlY3V0ZW1hbnkoKSBjYW4gb25seSBleGVjdXRlIERNTCBzdGF0ZW1lbnRzLiIpOwpAQCAtNjg2LDI5ICs2MzcsNiBAQAogICAgICAgICAgICAgUHlfQ0xFQVIoc2VsZi0+c3RhdGVtZW50KTsKICAgICAgICAgfQogCi0gICAgICAgIHN3aXRjaCAoc3RhdGVtZW50X3R5cGUpIHsKLSAgICAgICAgICAgIGNhc2UgU1RBVEVNRU5UX1VQREFURToKLSAgICAgICAgICAgIGNhc2UgU1RBVEVNRU5UX0RFTEVURToKLSAgICAgICAgICAgIGNhc2UgU1RBVEVNRU5UX0lOU0VSVDoKLSAgICAgICAgICAgIGNhc2UgU1RBVEVNRU5UX1JFUExBQ0U6Ci0gICAgICAgICAgICAgICAgaWYgKHNlbGYtPnJvd2NvdW50ID09IC0xTCkgewotICAgICAgICAgICAgICAgICAgICBzZWxmLT5yb3djb3VudCA9IDBMOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBzZWxmLT5yb3djb3VudCArPSAobG9uZylzcWxpdGUzX2NoYW5nZXMoc2VsZi0+Y29ubmVjdGlvbi0+ZGIpOwotICAgICAgICB9Ci0KLSAgICAgICAgUHlfREVDUkVGKHNlbGYtPmxhc3Ryb3dpZCk7Ci0gICAgICAgIGlmICghbXVsdGlwbGUgJiYgc3RhdGVtZW50X3R5cGUgPT0gU1RBVEVNRU5UX0lOU0VSVCkgewotICAgICAgICAgICAgc3FsaXRlX2ludDY0IGxhc3Ryb3dpZDsKLSAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgICAgIGxhc3Ryb3dpZCA9IHNxbGl0ZTNfbGFzdF9pbnNlcnRfcm93aWQoc2VsZi0+Y29ubmVjdGlvbi0+ZGIpOwotICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgICAgIHNlbGYtPmxhc3Ryb3dpZCA9IF9weXNxbGl0ZV9sb25nX2Zyb21faW50NjQobGFzdHJvd2lkKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICAgICAgICAgIHNlbGYtPmxhc3Ryb3dpZCA9IFB5X05vbmU7Ci0gICAgICAgIH0KLQogICAgICAgICBpZiAobXVsdGlwbGUpIHsKICAgICAgICAgICAgIHB5c3FsaXRlX3N0YXRlbWVudF9yZXNldChzZWxmLT5zdGF0ZW1lbnQpOwogICAgICAgICB9CkBAIC03MTYsMTUgKzY0NCw2IEBACiAgICAgfQogCiBlcnJvcjoKLSAgICAvKiBqdXN0IHRvIGJlIHN1cmUgKGltcGxpY2l0IFJPTExCQUNLcyB3aXRoIE9OIENPTkZMSUNUIFJPTExCQUNLL09SCi0gICAgICogUk9MTEJBQ0sgY291bGQgaGF2ZSBoYXBwZW5lZCAqLwotICAgICNpZmRlZiBTUUxJVEVfVkVSU0lPTl9OVU1CRVIKLSAgICAjaWYgU1FMSVRFX1ZFUlNJT05fTlVNQkVSID49IDMwMDIwMDIKLSAgICBpZiAoc2VsZi0+Y29ubmVjdGlvbiAmJiBzZWxmLT5jb25uZWN0aW9uLT5kYikKLSAgICAgICAgc2VsZi0+Y29ubmVjdGlvbi0+aW5UcmFuc2FjdGlvbiA9ICFzcWxpdGUzX2dldF9hdXRvY29tbWl0KHNlbGYtPmNvbm5lY3Rpb24tPmRiKTsKLSAgICAjZW5kaWYKLSAgICAjZW5kaWYKLQogICAgIFB5X1hERUNSRUYocGFyYW1ldGVycyk7CiAgICAgUHlfWERFQ1JFRihwYXJhbWV0ZXJzX2l0ZXIpOwogICAgIFB5X1hERUNSRUYocGFyYW1ldGVyc19saXN0KTsKQEAgLTc3MCw3ICs2ODksNyBAQAogICAgIHNlbGYtPnJlc2V0ID0gMDsKIAogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soc2NyaXB0X29iaikpIHsKLSAgICAgICAgc2NyaXB0X2NzdHIgPSBfUHlVbmljb2RlX0FzU3RyaW5nKHNjcmlwdF9vYmopOworICAgICAgICBzY3JpcHRfY3N0ciA9IFB5VW5pY29kZV9Bc1VURjgoc2NyaXB0X29iaik7CiAgICAgICAgIGlmICghc2NyaXB0X2NzdHIpIHsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CkBAIC05MTMsOCArODMyLDcgQEAKIAogICAgIHJvdyA9IHB5c3FsaXRlX2N1cnNvcl9pdGVybmV4dChzZWxmKTsKICAgICBpZiAoIXJvdyAmJiAhUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIHJldHVybiBQeV9Ob25lOworICAgICAgICBQeV9SRVRVUk5fTk9ORTsKICAgICB9CiAKICAgICByZXR1cm4gcm93OwpAQCAtOTk1LDggKzkxMyw3IEBACiBQeU9iamVjdCogcHlzcWxpdGVfbm9vcChweXNxbGl0ZV9Db25uZWN0aW9uKiBzZWxmLCBQeU9iamVjdCogYXJncykKIHsKICAgICAvKiBkb24ndCBjYXJlLCByZXR1cm4gTm9uZSAqLwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogUHlPYmplY3QqIHB5c3FsaXRlX2N1cnNvcl9jbG9zZShweXNxbGl0ZV9DdXJzb3IqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQpAQCAtMTAxMiw4ICs5MjksNyBAQAogCiAgICAgc2VsZi0+Y2xvc2VkID0gMTsKIAotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogc3RhdGljIFB5TWV0aG9kRGVmIGN1cnNvcl9tZXRob2RzW10gPSB7CkBAIC0xMDQ5LDcgKzk2NSw3IEBACiAgICAge05VTEx9CiB9OwogCi1zdGF0aWMgY2hhciBjdXJzb3JfZG9jW10gPQorc3RhdGljIGNvbnN0IGNoYXIgY3Vyc29yX2RvY1tdID0KIFB5RG9jX1NUUigiU1FMaXRlIGRhdGFiYXNlIGN1cnNvciBjbGFzcy4iKTsKIAogUHlUeXBlT2JqZWN0IHB5c3FsaXRlX0N1cnNvclR5cGUgPSB7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvY3Vyc29yLmggYi9Nb2R1bGVzL19zcWxpdGUvY3Vyc29yLmgKaW5kZXggMTE4YmEzOC4uMjhiYmQ1ZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL2N1cnNvci5oCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9jdXJzb3IuaApAQCAtNTEsMTIgKzUxLDYgQEAKICAgICBQeU9iamVjdCogaW5fd2Vha3JlZmxpc3Q7IC8qIExpc3Qgb2Ygd2VhayByZWZlcmVuY2VzICovCiB9IHB5c3FsaXRlX0N1cnNvcjsKIAotdHlwZWRlZiBlbnVtIHsKLSAgICBTVEFURU1FTlRfSU5WQUxJRCwgU1RBVEVNRU5UX0lOU0VSVCwgU1RBVEVNRU5UX0RFTEVURSwKLSAgICBTVEFURU1FTlRfVVBEQVRFLCBTVEFURU1FTlRfUkVQTEFDRSwgU1RBVEVNRU5UX1NFTEVDVCwKLSAgICBTVEFURU1FTlRfT1RIRVIKLX0gcHlzcWxpdGVfU3RhdGVtZW50S2luZDsKLQogZXh0ZXJuIFB5VHlwZU9iamVjdCBweXNxbGl0ZV9DdXJzb3JUeXBlOwogCiBQeU9iamVjdCogcHlzcWxpdGVfY3Vyc29yX2V4ZWN1dGUocHlzcWxpdGVfQ3Vyc29yKiBzZWxmLCBQeU9iamVjdCogYXJncyk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvbW9kdWxlLmMgYi9Nb2R1bGVzL19zcWxpdGUvbW9kdWxlLmMKaW5kZXggN2E3ZTg2MC4uY2M0NTMzMSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL21vZHVsZS5jCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9tb2R1bGUuYwpAQCAtMTM5LDggKzEzOSw3IEBACiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhweXNxbGl0ZV9PcGVyYXRpb25hbEVycm9yLCAiQ2hhbmdpbmcgdGhlIHNoYXJlZF9jYWNoZSBmbGFnIGZhaWxlZCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9IGVsc2UgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIHJldHVybiBQeV9Ob25lOworICAgICAgICBQeV9SRVRVUk5fTk9ORTsKICAgICB9CiB9CiAKQEAgLTE3Miw4ICsxNzEsNyBAQAogICAgIGlmIChyYyA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKIFB5RG9jX1NUUlZBUihtb2R1bGVfcmVnaXN0ZXJfYWRhcHRlcl9kb2MsCkBAIC0xOTQsNyArMTkyLDcgQEAKICAgICB9CiAKICAgICAvKiBjb252ZXJ0IHRoZSBuYW1lIHRvIHVwcGVyIGNhc2UgKi8KLSAgICBuYW1lID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChvcmlnX25hbWUsICZQeUlkX3VwcGVyLCAiIik7CisgICAgbmFtZSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQob3JpZ19uYW1lLCAmUHlJZF91cHBlciwgTlVMTCk7CiAgICAgaWYgKCFuYW1lKSB7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQpAQCAtMjIxLDggKzIxOSw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogUHlEb2NfU1RSVkFSKGVuYWJsZV9jYWxsYmFja190cmFjZWJhY2tzX2RvYywKQEAgLTI2MSwxMyArMjU4LDEzIEBACiB9OwogCiBzdHJ1Y3QgX0ludENvbnN0YW50UGFpciB7Ci0gICAgY2hhciogY29uc3RhbnRfbmFtZTsKKyAgICBjb25zdCBjaGFyICpjb25zdGFudF9uYW1lOwogICAgIGludCBjb25zdGFudF92YWx1ZTsKIH07CiAKIHR5cGVkZWYgc3RydWN0IF9JbnRDb25zdGFudFBhaXIgSW50Q29uc3RhbnRQYWlyOwogCi1zdGF0aWMgSW50Q29uc3RhbnRQYWlyIF9pbnRfY29uc3RhbnRzW10gPSB7CitzdGF0aWMgY29uc3QgSW50Q29uc3RhbnRQYWlyIF9pbnRfY29uc3RhbnRzW10gPSB7CiAgICAgeyJQQVJTRV9ERUNMVFlQRVMiLCBQQVJTRV9ERUNMVFlQRVN9LAogICAgIHsiUEFSU0VfQ09MTkFNRVMiLCBQQVJTRV9DT0xOQU1FU30sCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS9yb3cuYyBiL01vZHVsZXMvX3NxbGl0ZS9yb3cuYwppbmRleCAwNzU4NGUzLi41MzM0MmYzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvcm93LmMKKysrIGIvTW9kdWxlcy9fc3FsaXRlL3Jvdy5jCkBAIC05OCw3ICs5OCw3IEBACiAgICAgICAgIFB5X1hJTkNSRUYoaXRlbSk7CiAgICAgICAgIHJldHVybiBpdGVtOwogICAgIH0gZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKGlkeCkpIHsKLSAgICAgICAga2V5ID0gX1B5VW5pY29kZV9Bc1N0cmluZyhpZHgpOworICAgICAgICBrZXkgPSBQeVVuaWNvZGVfQXNVVEY4KGlkeCk7CiAgICAgICAgIGlmIChrZXkgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC0xMDgsNyArMTA4LDcgQEAKICAgICAgICAgICAgIFB5T2JqZWN0ICpvYmo7CiAgICAgICAgICAgICBvYmogPSBQeVR1cGxlX0dFVF9JVEVNKHNlbGYtPmRlc2NyaXB0aW9uLCBpKTsKICAgICAgICAgICAgIG9iaiA9IFB5VHVwbGVfR0VUX0lURU0ob2JqLCAwKTsKLSAgICAgICAgICAgIGNvbXBhcmVfa2V5ID0gX1B5VW5pY29kZV9Bc1N0cmluZyhvYmopOworICAgICAgICAgICAgY29tcGFyZV9rZXkgPSBQeVVuaWNvZGVfQXNVVEY4KG9iaik7CiAgICAgICAgICAgICBpZiAoIWNvbXBhcmVfa2V5KSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvc3RhdGVtZW50LmMgYi9Nb2R1bGVzL19zcWxpdGUvc3RhdGVtZW50LmMKaW5kZXggZTg3MDYzMy4uMGRmNjYxYiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL3N0YXRlbWVudC5jCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9zdGF0ZW1lbnQuYwpAQCAtNTQsMTEgKzU0LDEyIEBACiAgICAgaW50IHJjOwogICAgIGNvbnN0IGNoYXIqIHNxbF9jc3RyOwogICAgIFB5X3NzaXplX3Qgc3FsX2NzdHJfbGVuOworICAgIGNvbnN0IGNoYXIqIHA7CiAKICAgICBzZWxmLT5zdCA9IE5VTEw7CiAgICAgc2VsZi0+aW5fdXNlID0gMDsKIAotICAgIHNxbF9jc3RyID0gX1B5VW5pY29kZV9Bc1N0cmluZ0FuZFNpemUoc3FsLCAmc3FsX2NzdHJfbGVuKTsKKyAgICBzcWxfY3N0ciA9IFB5VW5pY29kZV9Bc1VURjhBbmRTaXplKHNxbCwgJnNxbF9jc3RyX2xlbik7CiAgICAgaWYgKHNxbF9jc3RyID09IE5VTEwpIHsKICAgICAgICAgcmMgPSBQWVNRTElURV9TUUxfV1JPTkdfVFlQRTsKICAgICAgICAgcmV0dXJuIHJjOwpAQCAtNzIsNiArNzMsMjMgQEAKICAgICBQeV9JTkNSRUYoc3FsKTsKICAgICBzZWxmLT5zcWwgPSBzcWw7CiAKKyAgICAvKiBkZXRlcm1pbmUgaWYgdGhlIHN0YXRlbWVudCBpcyBhIERETCBzdGF0ZW1lbnQgKi8KKyAgICBzZWxmLT5pc19kZGwgPSAwOworICAgIGZvciAocCA9IHNxbF9jc3RyOyAqcCAhPSAwOyBwKyspIHsKKyAgICAgICAgc3dpdGNoICgqcCkgeworICAgICAgICAgICAgY2FzZSAnICc6CisgICAgICAgICAgICBjYXNlICdccic6CisgICAgICAgICAgICBjYXNlICdcbic6CisgICAgICAgICAgICBjYXNlICdcdCc6CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBzZWxmLT5pc19kZGwgPSAoUHlPU19zdHJuaWNtcChwLCAiY3JlYXRlICIsIDcpID09IDApCisgICAgICAgICAgICAgICAgICAgIHx8IChQeU9TX3N0cm5pY21wKHAsICJkcm9wICIsIDUpID09IDApCisgICAgICAgICAgICAgICAgICAgIHx8IChQeU9TX3N0cm5pY21wKHAsICJyZWluZGV4ICIsIDgpID09IDApOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgcmMgPSBzcWxpdGUzX3ByZXBhcmUoY29ubmVjdGlvbi0+ZGIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc3FsX2NzdHIsCkBAIC0xMzQsNyArMTUyLDcgQEAKICAgICAgICAgICAgIHJjID0gc3FsaXRlM19iaW5kX2RvdWJsZShzZWxmLT5zdCwgcG9zLCBQeUZsb2F0X0FzRG91YmxlKHBhcmFtZXRlcikpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVFlQRV9VTklDT0RFOgotICAgICAgICAgICAgc3RyaW5nID0gX1B5VW5pY29kZV9Bc1N0cmluZ0FuZFNpemUocGFyYW1ldGVyLCAmYnVmbGVuKTsKKyAgICAgICAgICAgIHN0cmluZyA9IFB5VW5pY29kZV9Bc1VURjhBbmRTaXplKHBhcmFtZXRlciwgJmJ1Zmxlbik7CiAgICAgICAgICAgICBpZiAoc3RyaW5nID09IE5VTEwpCiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgaWYgKGJ1ZmxlbiA+IElOVF9NQVgpIHsKQEAgLTMwNyw3ICszMjUsNyBAQAogICAgIFB5X3NzaXplX3Qgc3FsX2xlbjsKICAgICBzcWxpdGUzX3N0bXQqIG5ld19zdDsKIAotICAgIHNxbF9jc3RyID0gX1B5VW5pY29kZV9Bc1N0cmluZ0FuZFNpemUoc2VsZi0+c3FsLCAmc3FsX2xlbik7CisgICAgc3FsX2NzdHIgPSBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZShzZWxmLT5zcWwsICZzcWxfbGVuKTsKICAgICBpZiAoc3FsX2NzdHIgPT0gTlVMTCkgewogICAgICAgICByYyA9IFBZU1FMSVRFX1NRTF9XUk9OR19UWVBFOwogICAgICAgICByZXR1cm4gcmM7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvc3RhdGVtZW50LmggYi9Nb2R1bGVzL19zcWxpdGUvc3RhdGVtZW50LmgKaW5kZXggNDY4MTQ0My4uNmVlZjE2OCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL3N0YXRlbWVudC5oCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9zdGF0ZW1lbnQuaApAQCAtMzgsNiArMzgsNyBAQAogICAgIHNxbGl0ZTNfc3RtdCogc3Q7CiAgICAgUHlPYmplY3QqIHNxbDsKICAgICBpbnQgaW5fdXNlOworICAgIGludCBpc19kZGw7CiAgICAgUHlPYmplY3QqIGluX3dlYWtyZWZsaXN0OyAvKiBMaXN0IG9mIHdlYWsgcmVmZXJlbmNlcyAqLwogfSBweXNxbGl0ZV9TdGF0ZW1lbnQ7CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS91dGlsLmMgYi9Nb2R1bGVzL19zcWxpdGUvdXRpbC5jCmluZGV4IDMxMmZlM2IuLjM1MWIxYjQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NxbGl0ZS91dGlsLmMKKysrIGIvTW9kdWxlcy9fc3FsaXRlL3V0aWwuYwpAQCAtMTEzLDcgKzExMyw2IEBACiBQeU9iamVjdCAqCiBfcHlzcWxpdGVfbG9uZ19mcm9tX2ludDY0KHNxbGl0ZV9pbnQ2NCB2YWx1ZSkKIHsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwogIyBpZiBTSVpFT0ZfTE9OR19MT05HIDwgOAogICAgIGlmICh2YWx1ZSA+IFBZX0xMT05HX01BWCB8fCB2YWx1ZSA8IFBZX0xMT05HX01JTikgewogICAgICAgICByZXR1cm4gX1B5TG9uZ19Gcm9tQnl0ZUFycmF5KCZ2YWx1ZSwgc2l6ZW9mKHZhbHVlKSwKQEAgLTEyNCwxNCArMTIzLDYgQEAKICAgICBpZiAodmFsdWUgPiBMT05HX01BWCB8fCB2YWx1ZSA8IExPTkdfTUlOKQogICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZyh2YWx1ZSk7CiAjIGVuZGlmCi0jZWxzZQotIyBpZiBTSVpFT0ZfTE9ORyA8IDgKLSAgICBpZiAodmFsdWUgPiBMT05HX01BWCB8fCB2YWx1ZSA8IExPTkdfTUlOKSB7Ci0gICAgICAgIHJldHVybiBfUHlMb25nX0Zyb21CeXRlQXJyYXkoJnZhbHVlLCBzaXplb2YodmFsdWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElTX0xJVFRMRV9FTkRJQU4sIDEgLyogc2lnbmVkICovKTsKLSAgICB9Ci0jIGVuZGlmCi0jZW5kaWYKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKFB5X1NBRkVfRE9XTkNBU1QodmFsdWUsIHNxbGl0ZV9pbnQ2NCwgbG9uZykpOwogfQogCkBAIC0xMzksMjMgKzEzMCwxMyBAQAogX3B5c3FsaXRlX2xvbmdfYXNfaW50NjQoUHlPYmplY3QgKiBweV92YWwpCiB7CiAgICAgaW50IG92ZXJmbG93OwotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgUFlfTE9OR19MT05HIHZhbHVlID0gUHlMb25nX0FzTG9uZ0xvbmdBbmRPdmVyZmxvdyhweV92YWwsICZvdmVyZmxvdyk7Ci0jZWxzZQotICAgIGxvbmcgdmFsdWUgPSBQeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3cocHlfdmFsLCAmb3ZlcmZsb3cpOwotI2VuZGlmCisgICAgbG9uZyBsb25nIHZhbHVlID0gUHlMb25nX0FzTG9uZ0xvbmdBbmRPdmVyZmxvdyhweV92YWwsICZvdmVyZmxvdyk7CiAgICAgaWYgKHZhbHVlID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiAtMTsKICAgICBpZiAoIW92ZXJmbG93KSB7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKICMgaWYgU0laRU9GX0xPTkdfTE9ORyA+IDgKICAgICAgICAgaWYgKC0weDgwMDAwMDAwMDAwMDAwMDBMTCA8PSB2YWx1ZSAmJiB2YWx1ZSA8PSAweDdGRkZGRkZGRkZGRkZGRkZMTCkKICMgZW5kaWYKLSNlbHNlCi0jIGlmIFNJWkVPRl9MT05HID4gOAotICAgICAgICBpZiAoLTB4ODAwMDAwMDAwMDAwMDAwMEwgPD0gdmFsdWUgJiYgdmFsdWUgPD0gMHg3RkZGRkZGRkZGRkZGRkZGTCkKLSMgZW5kaWYKLSNlbmRpZgogICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgIH0KICAgICBlbHNlIGlmIChzaXplb2YodmFsdWUpIDwgc2l6ZW9mKHNxbGl0ZV9pbnQ2NCkpIHsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NyZS5jIGIvTW9kdWxlcy9fc3JlLmMKaW5kZXggMDliNTgzNS4uOTc5ZTYxZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3JlLmMKKysrIGIvTW9kdWxlcy9fc3JlLmMKQEAgLTM1LDcgKzM1LDcgQEAKICAqIG90aGVyIGNvbXBhdGliaWxpdHkgd29yay4KICAqLwogCi1zdGF0aWMgY2hhciBjb3B5cmlnaHRbXSA9CitzdGF0aWMgY29uc3QgY2hhciBjb3B5cmlnaHRbXSA9CiAgICAgIiBTUkUgMi4yLjIgQ29weXJpZ2h0IChjKSAxOTk3LTIwMDIgYnkgU2VjcmV0IExhYnMgQUIgIjsKIAogI2RlZmluZSBQWV9TU0laRV9UX0NMRUFOCkBAIC02Miw5ICs2Miw2IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogLyogb3B0aW9uYWwgZmVhdHVyZXMgKi8KIAotLyogZW5hYmxlcyBmYXN0IHNlYXJjaGluZyAqLwotI2RlZmluZSBVU0VfRkFTVF9TRUFSQ0gKLQogLyogZW5hYmxlcyBjb3B5L2RlZXBjb3B5IGhhbmRsaW5nICh3b3JrIGluIHByb2dyZXNzKSAqLwogI3VuZGVmIFVTRV9CVUlMVElOX0NPUFkKIApAQCAtNzE3LDcgKzcxNCw3IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCoKLWNhbGwoY2hhciogbW9kdWxlLCBjaGFyKiBmdW5jdGlvbiwgUHlPYmplY3QqIGFyZ3MpCitjYWxsKGNvbnN0IGNoYXIqIG1vZHVsZSwgY29uc3QgY2hhciogZnVuY3Rpb24sIFB5T2JqZWN0KiBhcmdzKQogewogICAgIFB5T2JqZWN0KiBuYW1lOwogICAgIFB5T2JqZWN0KiBtb2Q7CkBAIC0xMDU5LDcgKzEwNTYsNiBAQAogICAgIFB5T2JqZWN0KiBqb2luZXI7CiAgICAgUHlPYmplY3QqIGl0ZW07CiAgICAgUHlPYmplY3QqIGZpbHRlcjsKLSAgICBQeU9iamVjdCogYXJnczsKICAgICBQeU9iamVjdCogbWF0Y2g7CiAgICAgdm9pZCogcHRyOwogICAgIFB5X3NzaXplX3Qgc3RhdHVzOwpAQCAtMTE2MSwxMyArMTE1Nyw3IEBACiAgICAgICAgICAgICBtYXRjaCA9IHBhdHRlcm5fbmV3X21hdGNoKHNlbGYsICZzdGF0ZSwgMSk7CiAgICAgICAgICAgICBpZiAoIW1hdGNoKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICBhcmdzID0gUHlUdXBsZV9QYWNrKDEsIG1hdGNoKTsKLSAgICAgICAgICAgIGlmICghYXJncykgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihtYXRjaCk7Ci0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGl0ZW0gPSBQeU9iamVjdF9DYWxsT2JqZWN0KGZpbHRlciwgYXJncyk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgICAgICAgICBpdGVtID0gX1B5T2JqZWN0X0NhbGxBcmcxKGZpbHRlciwgbWF0Y2gpOwogICAgICAgICAgICAgUHlfREVDUkVGKG1hdGNoKTsKICAgICAgICAgICAgIGlmICghaXRlbSkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwpAQCAtMTUxNiwxNCArMTUwNiwxMiBAQAogCiAgICAgc2VsZi0+Z3JvdXBzID0gZ3JvdXBzOwogCi0gICAgUHlfWElOQ1JFRihncm91cGluZGV4KTsKKyAgICBQeV9JTkNSRUYoZ3JvdXBpbmRleCk7CiAgICAgc2VsZi0+Z3JvdXBpbmRleCA9IGdyb3VwaW5kZXg7CiAKLSAgICBQeV9YSU5DUkVGKGluZGV4Z3JvdXApOworICAgIFB5X0lOQ1JFRihpbmRleGdyb3VwKTsKICAgICBzZWxmLT5pbmRleGdyb3VwID0gaW5kZXhncm91cDsKIAotICAgIHNlbGYtPndlYWtyZWZsaXN0ID0gTlVMTDsKLQogICAgIGlmICghX3ZhbGlkYXRlKHNlbGYpKSB7CiAgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xNTkyLDcgKzE1ODAsNyBAQAogICAgICAgICBza2lwID0gKmNvZGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIFZUUkFDRSgoIiVsdSAoc2tpcCB0byAlcClcbiIsICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKXNraXAsIGNvZGUrc2tpcCkpOyAgICAgICAgXAotICAgICAgICBpZiAoc2tpcC1hZGogPiAoUHlfdWludHB0cl90KShlbmQgLSBjb2RlKSkgICAgICBcCisgICAgICAgIGlmIChza2lwLWFkaiA+ICh1aW50cHRyX3QpKGVuZCAtIGNvZGUpKSAgICAgIFwKICAgICAgICAgICAgIEZBSUw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBjb2RlKys7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfSB3aGlsZSAoMCkKQEAgLTE2MjYsNyArMTYxNCw3IEBACiAKICAgICAgICAgY2FzZSBTUkVfT1BfQ0hBUlNFVDoKICAgICAgICAgICAgIG9mZnNldCA9IDI1Ni9TUkVfQ09ERV9CSVRTOyAvKiAyNTYtYml0IGJpdG1hcCAqLwotICAgICAgICAgICAgaWYgKG9mZnNldCA+IChQeV91aW50cHRyX3QpKGVuZCAtIGNvZGUpKQorICAgICAgICAgICAgaWYgKG9mZnNldCA+ICh1aW50cHRyX3QpKGVuZCAtIGNvZGUpKQogICAgICAgICAgICAgICAgIEZBSUw7CiAgICAgICAgICAgICBjb2RlICs9IG9mZnNldDsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTYzNCw3ICsxNjIyLDcgQEAKICAgICAgICAgY2FzZSBTUkVfT1BfQklHQ0hBUlNFVDoKICAgICAgICAgICAgIEdFVF9BUkc7IC8qIE51bWJlciBvZiBibG9ja3MgKi8KICAgICAgICAgICAgIG9mZnNldCA9IDI1Ni9zaXplb2YoU1JFX0NPREUpOyAvKiAyNTYtYnl0ZSB0YWJsZSAqLwotICAgICAgICAgICAgaWYgKG9mZnNldCA+IChQeV91aW50cHRyX3QpKGVuZCAtIGNvZGUpKQorICAgICAgICAgICAgaWYgKG9mZnNldCA+ICh1aW50cHRyX3QpKGVuZCAtIGNvZGUpKQogICAgICAgICAgICAgICAgIEZBSUw7CiAgICAgICAgICAgICAvKiBNYWtlIHN1cmUgdGhhdCBlYWNoIGJ5dGUgcG9pbnRzIHRvIGEgdmFsaWQgYmxvY2sgKi8KICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCAyNTY7IGkrKykgewpAQCAtMTY0Myw3ICsxNjMxLDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNvZGUgKz0gb2Zmc2V0OwogICAgICAgICAgICAgb2Zmc2V0ID0gYXJnICogKDI1Ni9TUkVfQ09ERV9CSVRTKTsgLyogMjU2LWJpdCBiaXRtYXAgdGltZXMgYXJnICovCi0gICAgICAgICAgICBpZiAob2Zmc2V0ID4gKFB5X3VpbnRwdHJfdCkoZW5kIC0gY29kZSkpCisgICAgICAgICAgICBpZiAob2Zmc2V0ID4gKHVpbnRwdHJfdCkoZW5kIC0gY29kZSkpCiAgICAgICAgICAgICAgICAgRkFJTDsKICAgICAgICAgICAgIGNvZGUgKz0gb2Zmc2V0OwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNzk0LDExICsxNzgyLDExIEBACiAgICAgICAgICAgICAgICAgICAgIEdFVF9BUkc7IHByZWZpeF9sZW4gPSBhcmc7CiAgICAgICAgICAgICAgICAgICAgIEdFVF9BUkc7CiAgICAgICAgICAgICAgICAgICAgIC8qIEhlcmUgY29tZXMgdGhlIHByZWZpeCBzdHJpbmcgKi8KLSAgICAgICAgICAgICAgICAgICAgaWYgKHByZWZpeF9sZW4gPiAoUHlfdWludHB0cl90KShuZXdjb2RlIC0gY29kZSkpCisgICAgICAgICAgICAgICAgICAgIGlmIChwcmVmaXhfbGVuID4gKHVpbnRwdHJfdCkobmV3Y29kZSAtIGNvZGUpKQogICAgICAgICAgICAgICAgICAgICAgICAgRkFJTDsKICAgICAgICAgICAgICAgICAgICAgY29kZSArPSBwcmVmaXhfbGVuOwogICAgICAgICAgICAgICAgICAgICAvKiBBbmQgaGVyZSBjb21lcyB0aGUgb3ZlcmxhcCB0YWJsZSAqLwotICAgICAgICAgICAgICAgICAgICBpZiAocHJlZml4X2xlbiA+IChQeV91aW50cHRyX3QpKG5ld2NvZGUgLSBjb2RlKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKHByZWZpeF9sZW4gPiAodWludHB0cl90KShuZXdjb2RlIC0gY29kZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBGQUlMOwogICAgICAgICAgICAgICAgICAgICAvKiBFYWNoIG92ZXJsYXAgdmFsdWUgc2hvdWxkIGJlIDwgcHJlZml4X2xlbiAqLwogICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcHJlZml4X2xlbjsgaSsrKSB7CkBAIC0xOTI3LDcgKzE5MTUsNyBAQAogICAgICAgICAgICAgICAgdG8gYWxsb3cgYXJiaXRyYXJ5IGp1bXBzIGFueXdoZXJlIGluIHRoZSBjb2RlOyBzbyB3ZSBqdXN0IGxvb2sKICAgICAgICAgICAgICAgIGZvciBhIEpVTVAgb3Bjb2RlIHByZWNlZGluZyBvdXIgc2tpcCB0YXJnZXQuCiAgICAgICAgICAgICAqLwotICAgICAgICAgICAgaWYgKHNraXAgPj0gMyAmJiBza2lwLTMgPCAoUHlfdWludHB0cl90KShlbmQgLSBjb2RlKSAmJgorICAgICAgICAgICAgaWYgKHNraXAgPj0gMyAmJiBza2lwLTMgPCAodWludHB0cl90KShlbmQgLSBjb2RlKSAmJgogICAgICAgICAgICAgICAgIGNvZGVbc2tpcC0zXSA9PSBTUkVfT1BfSlVNUCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBWVFJBQ0UoKCJib3RoIHRoZW4gYW5kIGVsc2UgcGFydHMgcHJlc2VudFxuIikpOwpAQCAtMjA1Miw4ICsyMDQwLDkgQEAKICAgICAgICAgLyogRGVmYXVsdCB2YWx1ZSAqLwogICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmIChQeUxvbmdfQ2hlY2soaW5kZXgpKQotICAgICAgICByZXR1cm4gUHlMb25nX0FzU3NpemVfdChpbmRleCk7CisgICAgaWYgKFB5SW5kZXhfQ2hlY2soaW5kZXgpKSB7CisgICAgICAgIHJldHVybiBQeU51bWJlcl9Bc1NzaXplX3QoaW5kZXgsIE5VTEwpOworICAgIH0KIAogICAgIGkgPSAtMTsKIApAQCAtMjEzMCw2ICsyMTE5LDEyIEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIFB5T2JqZWN0KgorbWF0Y2hfZ2V0aXRlbShNYXRjaE9iamVjdCogc2VsZiwgUHlPYmplY3QqIG5hbWUpCit7CisgICAgcmV0dXJuIG1hdGNoX2dldHNsaWNlKHNlbGYsIG5hbWUsIFB5X05vbmUpOworfQorCiAvKltjbGluaWMgaW5wdXRdCiBfc3JlLlNSRV9NYXRjaC5ncm91cHMKIApAQCAtMjY1Miw2ICsyNjQ3LDc1IEBACiAgICAgcmV0dXJuIChQeU9iamVjdCopIHNjYW5uZXI7CiB9CiAKK3N0YXRpYyBQeV9oYXNoX3QKK3BhdHRlcm5faGFzaChQYXR0ZXJuT2JqZWN0ICpzZWxmKQoreworICAgIFB5X2hhc2hfdCBoYXNoLCBoYXNoMjsKKworICAgIGhhc2ggPSBQeU9iamVjdF9IYXNoKHNlbGYtPnBhdHRlcm4pOworICAgIGlmIChoYXNoID09IC0xKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBoYXNoMiA9IF9QeV9IYXNoQnl0ZXMoc2VsZi0+Y29kZSwgc2l6ZW9mKHNlbGYtPmNvZGVbMF0pICogc2VsZi0+Y29kZXNpemUpOworICAgIGhhc2ggXj0gaGFzaDI7CisKKyAgICBoYXNoIF49IHNlbGYtPmZsYWdzOworICAgIGhhc2ggXj0gc2VsZi0+aXNieXRlczsKKyAgICBoYXNoIF49IHNlbGYtPmNvZGVzaXplOworCisgICAgaWYgKGhhc2ggPT0gLTEpIHsKKyAgICAgICAgaGFzaCA9IC0yOworICAgIH0KKyAgICByZXR1cm4gaGFzaDsKK30KKworc3RhdGljIFB5T2JqZWN0KgorcGF0dGVybl9yaWNoY29tcGFyZShQeU9iamVjdCAqbGVmdG8sIFB5T2JqZWN0ICpyaWdodG8sIGludCBvcCkKK3sKKyAgICBQYXR0ZXJuT2JqZWN0ICpsZWZ0LCAqcmlnaHQ7CisgICAgaW50IGNtcDsKKworICAgIGlmIChvcCAhPSBQeV9FUSAmJiBvcCAhPSBQeV9ORSkgeworICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CisgICAgfQorCisgICAgaWYgKFB5X1RZUEUobGVmdG8pICE9ICZQYXR0ZXJuX1R5cGUgfHwgUHlfVFlQRShyaWdodG8pICE9ICZQYXR0ZXJuX1R5cGUpIHsKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOworICAgIH0KKworICAgIGlmIChsZWZ0byA9PSByaWdodG8pIHsKKyAgICAgICAgLyogYSBwYXR0ZXJuIGlzIGVxdWFsIHRvIGl0c2VsZiAqLworICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKG9wID09IFB5X0VRKTsKKyAgICB9CisKKyAgICBsZWZ0ID0gKFBhdHRlcm5PYmplY3QgKilsZWZ0bzsKKyAgICByaWdodCA9IChQYXR0ZXJuT2JqZWN0ICopcmlnaHRvOworCisgICAgY21wID0gKGxlZnQtPmZsYWdzID09IHJpZ2h0LT5mbGFncworICAgICAgICAgICAmJiBsZWZ0LT5pc2J5dGVzID09IHJpZ2h0LT5pc2J5dGVzCisgICAgICAgICAgICYmIGxlZnQtPmNvZGVzaXplID09IHJpZ2h0LT5jb2Rlc2l6ZSk7CisgICAgaWYgKGNtcCkgeworICAgICAgICAvKiBDb21wYXJlIHRoZSBjb2RlIGFuZCB0aGUgcGF0dGVybiBiZWNhdXNlIHRoZSBzYW1lIHBhdHRlcm4gY2FuCisgICAgICAgICAgIHByb2R1Y2UgZGlmZmVyZW50IGNvZGVzIGRlcGVuZGluZyBvbiB0aGUgbG9jYWxlIHVzZWQgdG8gY29tcGlsZSB0aGUKKyAgICAgICAgICAgcGF0dGVybiB3aGVuIHRoZSByZS5MT0NBTEUgZmxhZyBpcyB1c2VkLiBEb24ndCBjb21wYXJlIGdyb3VwcywKKyAgICAgICAgICAgaW5kZXhncm91cCBub3IgZ3JvdXBpbmRleDogdGhleSBhcmUgZGVyaXZhdGVkIGZyb20gdGhlIHBhdHRlcm4uICovCisgICAgICAgIGNtcCA9IChtZW1jbXAobGVmdC0+Y29kZSwgcmlnaHQtPmNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGxlZnQtPmNvZGVbMF0pICogbGVmdC0+Y29kZXNpemUpID09IDApOworICAgIH0KKyAgICBpZiAoY21wKSB7CisgICAgICAgIGNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChsZWZ0LT5wYXR0ZXJuLCByaWdodC0+cGF0dGVybiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0VRKTsKKyAgICAgICAgaWYgKGNtcCA8IDApIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIGlmIChvcCA9PSBQeV9ORSkgeworICAgICAgICBjbXAgPSAhY21wOworICAgIH0KKyAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKGNtcCk7Cit9CisKICNpbmNsdWRlICJjbGluaWMvX3NyZS5jLmgiCiAKIHN0YXRpYyBQeU1ldGhvZERlZiBwYXR0ZXJuX21ldGhvZHNbXSA9IHsKQEAgLTI2OTYsNyArMjc2MCw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIChoYXNoZnVuYylwYXR0ZXJuX2hhc2gsICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KQEAgLTI3MDYsNyArMjc3MCw3IEBACiAgICAgcGF0dGVybl9kb2MsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgcGF0dGVybl9yaWNoY29tcGFyZSwgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KICAgICBvZmZzZXRvZihQYXR0ZXJuT2JqZWN0LCB3ZWFrcmVmbGlzdCksICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCkBAIC0yNzE1LDYgKzI3NzksMTMgQEAKICAgICBwYXR0ZXJuX2dldHNldCwgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KIH07CiAKKy8qIE1hdGNoIG9iamVjdHMgZG8gbm90IHN1cHBvcnQgbGVuZ3RoIG9yIGFzc2lnbm1lbnQsIGJ1dCBkbyBzdXBwb3J0CisgICBfX2dldGl0ZW1fXy4gKi8KK3N0YXRpYyBQeU1hcHBpbmdNZXRob2RzIG1hdGNoX2FzX21hcHBpbmcgPSB7CisgICAgTlVMTCwKKyAgICAoYmluYXJ5ZnVuYyltYXRjaF9nZXRpdGVtLAorICAgIE5VTEwKK307CiAKIHN0YXRpYyBQeU1ldGhvZERlZiBtYXRjaF9tZXRob2RzW10gPSB7CiAgICAgeyJncm91cCIsIChQeUNGdW5jdGlvbikgbWF0Y2hfZ3JvdXAsIE1FVEhfVkFSQVJHUywgbWF0Y2hfZ3JvdXBfZG9jfSwKQEAgLTI3NjAsNyArMjgzMSw3IEBACiAgICAgKHJlcHJmdW5jKW1hdGNoX3JlcHIsICAgICAgIC8qIHRwX3JlcHIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAmbWF0Y2hfYXNfbWFwcGluZywgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zc2wuYyBiL01vZHVsZXMvX3NzbC5jCmluZGV4IGE3OWMzYTguLmIxOTg4NTcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NzbC5jCisrKyBiL01vZHVsZXMvX3NzbC5jCkBAIC0xNDAsNiArMTQwLDggQEAKICNlbmRpZgogCiAjZGVmaW5lIFRMU19tZXRob2QgU1NMdjIzX21ldGhvZAorI2RlZmluZSBUTFNfY2xpZW50X21ldGhvZCBTU0x2MjNfY2xpZW50X21ldGhvZAorI2RlZmluZSBUTFNfc2VydmVyX21ldGhvZCBTU0x2MjNfc2VydmVyX21ldGhvZAogCiBzdGF0aWMgaW50IFg1MDlfTkFNRV9FTlRSWV9zZXQoY29uc3QgWDUwOV9OQU1FX0VOVFJZICpuZSkKIHsKQEAgLTE0NywxMCArMTQ5LDEyIEBACiB9CiAKICNpZm5kZWYgT1BFTlNTTF9OT19DT01QCisvKiBMQ09WX0VYQ0xfU1RBUlQgKi8KIHN0YXRpYyBpbnQgQ09NUF9nZXRfdHlwZShjb25zdCBDT01QX01FVEhPRCAqbWV0aCkKIHsKICAgICByZXR1cm4gbWV0aC0+dHlwZTsKIH0KKy8qIExDT1ZfRVhDTF9TVE9QICovCiAjZW5kaWYKIAogc3RhdGljIHBlbV9wYXNzd29yZF9jYiAqU1NMX0NUWF9nZXRfZGVmYXVsdF9wYXNzd2RfY2IoU1NMX0NUWCAqY3R4KQpAQCAtMTg3LDYgKzE5MSwxOSBAQAogewogICAgIHJldHVybiBzdG9yZS0+cGFyYW07CiB9CisKK3N0YXRpYyBpbnQKK1NTTF9TRVNTSU9OX2hhc190aWNrZXQoY29uc3QgU1NMX1NFU1NJT04gKnMpCit7CisgICAgcmV0dXJuIChzLT50bHNleHRfdGlja2xlbiA+IDApID8gMSA6IDA7Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBsb25nCitTU0xfU0VTU0lPTl9nZXRfdGlja2V0X2xpZmV0aW1lX2hpbnQoY29uc3QgU1NMX1NFU1NJT04gKnMpCit7CisgICAgcmV0dXJuIHMtPnRsc2V4dF90aWNrX2xpZmV0aW1lX2hpbnQ7Cit9CisKICNlbmRpZiAvKiBPcGVuU1NMIDwgMS4xLjAgb3IgTGlicmVTU0wgKi8KIAogCkBAIC0yMjAsMTQgKzIzNywxNiBAQAogZW51bSBweV9zc2xfdmVyc2lvbiB7CiAgICAgUFlfU1NMX1ZFUlNJT05fU1NMMiwKICAgICBQWV9TU0xfVkVSU0lPTl9TU0wzPTEsCi0gICAgUFlfU1NMX1ZFUlNJT05fVExTLAorICAgIFBZX1NTTF9WRVJTSU9OX1RMUywgLyogU1NMdjIzICovCiAjaWYgSEFWRV9UTFN2MV8yCiAgICAgUFlfU1NMX1ZFUlNJT05fVExTMSwKICAgICBQWV9TU0xfVkVSU0lPTl9UTFMxXzEsCi0gICAgUFlfU1NMX1ZFUlNJT05fVExTMV8yCisgICAgUFlfU1NMX1ZFUlNJT05fVExTMV8yLAogI2Vsc2UKLSAgICBQWV9TU0xfVkVSU0lPTl9UTFMxCisgICAgUFlfU1NMX1ZFUlNJT05fVExTMSwKICNlbmRpZgorICAgIFBZX1NTTF9WRVJTSU9OX1RMU19DTElFTlQ9MHgxMCwKKyAgICBQWV9TU0xfVkVSU0lPTl9UTFNfU0VSVkVSLAogfTsKIAogI2lmZGVmIFdJVEhfVEhSRUFECkBAIC0yOTMsMjUgKzMxMiwzNSBAQAogICAgIGludCBlb2Zfd3JpdHRlbjsKIH0gUHlTU0xNZW1vcnlCSU87CiAKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgU1NMX1NFU1NJT04gKnNlc3Npb247CisgICAgUHlTU0xDb250ZXh0ICpjdHg7Cit9IFB5U1NMU2Vzc2lvbjsKKwogc3RhdGljIFB5VHlwZU9iamVjdCBQeVNTTENvbnRleHRfVHlwZTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgUHlTU0xTb2NrZXRfVHlwZTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgUHlTU0xNZW1vcnlCSU9fVHlwZTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgUHlTU0xTZXNzaW9uX1R5cGU7CiAKIC8qW2NsaW5pYyBpbnB1dF0KIG1vZHVsZSBfc3NsCiBjbGFzcyBfc3NsLl9TU0xDb250ZXh0ICJQeVNTTENvbnRleHQgKiIgIiZQeVNTTENvbnRleHRfVHlwZSIKIGNsYXNzIF9zc2wuX1NTTFNvY2tldCAiUHlTU0xTb2NrZXQgKiIgIiZQeVNTTFNvY2tldF9UeXBlIgogY2xhc3MgX3NzbC5NZW1vcnlCSU8gIlB5U1NMTWVtb3J5QklPICoiICImUHlTU0xNZW1vcnlCSU9fVHlwZSIKK2NsYXNzIF9zc2wuU1NMU2Vzc2lvbiAiUHlTU0xTZXNzaW9uICoiICImUHlTU0xTZXNzaW9uX1R5cGUiCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD03YmY3Y2I4MzI2MzhlMmUxXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1iZGM2N2ZhZmVlYWE4MTA5XSovCiAKICNpbmNsdWRlICJjbGluaWMvX3NzbC5jLmgiCiAKIHN0YXRpYyBpbnQgUHlTU0xfc2VsZWN0KFB5U29ja2V0U29ja09iamVjdCAqcywgaW50IHdyaXRpbmcsIF9QeVRpbWVfdCB0aW1lb3V0KTsKIAorCiAjZGVmaW5lIFB5U1NMQ29udGV4dF9DaGVjayh2KSAgIChQeV9UWVBFKHYpID09ICZQeVNTTENvbnRleHRfVHlwZSkKICNkZWZpbmUgUHlTU0xTb2NrZXRfQ2hlY2sodikgICAgKFB5X1RZUEUodikgPT0gJlB5U1NMU29ja2V0X1R5cGUpCiAjZGVmaW5lIFB5U1NMTWVtb3J5QklPX0NoZWNrKHYpICAgIChQeV9UWVBFKHYpID09ICZQeVNTTE1lbW9yeUJJT19UeXBlKQorI2RlZmluZSBQeVNTTFNlc3Npb25fQ2hlY2sodikgICAoUHlfVFlQRSh2KSA9PSAmUHlTU0xTZXNzaW9uX1R5cGUpCiAKIHR5cGVkZWYgZW51bSB7CiAgICAgU09DS0VUX0lTX05PTkJMT0NLSU5HLApAQCAtNDU1LDcgKzQ4NCw3IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1QeVNTTF9TZXRFcnJvcihQeVNTTFNvY2tldCAqb2JqLCBpbnQgcmV0LCBjaGFyICpmaWxlbmFtZSwgaW50IGxpbmVubykKK1B5U1NMX1NldEVycm9yKFB5U1NMU29ja2V0ICpvYmosIGludCByZXQsIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgbGluZW5vKQogewogICAgIFB5T2JqZWN0ICp0eXBlID0gUHlTU0xFcnJvck9iamVjdDsKICAgICBjaGFyICplcnJzdHIgPSBOVUxMOwpAQCAtNTM3LDcgKzU2Niw3IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc2V0U1NMRXJyb3IgKGNoYXIgKmVycnN0ciwgaW50IGVycmNvZGUsIGNoYXIgKmZpbGVuYW1lLCBpbnQgbGluZW5vKSB7Citfc2V0U1NMRXJyb3IgKGNvbnN0IGNoYXIgKmVycnN0ciwgaW50IGVycmNvZGUsIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgbGluZW5vKSB7CiAKICAgICBpZiAoZXJyc3RyID09IE5VTEwpCiAgICAgICAgIGVycmNvZGUgPSBFUlJfcGVla19sYXN0X2Vycm9yKCk7CkBAIC0xNTQ3LDYgKzE1NzYsNjUgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAorI2lmIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPj0gMHgxMDAwMjAwMFVMCitzdGF0aWMgUHlPYmplY3QgKgorY2lwaGVyX3RvX2RpY3QoY29uc3QgU1NMX0NJUEhFUiAqY2lwaGVyKQoreworICAgIGNvbnN0IGNoYXIgKmNpcGhlcl9uYW1lLCAqY2lwaGVyX3Byb3RvY29sOworCisgICAgdW5zaWduZWQgbG9uZyBjaXBoZXJfaWQ7CisgICAgaW50IGFsZ19iaXRzLCBzdHJlbmd0aF9iaXRzLCBsZW47CisgICAgY2hhciBidWZbNTEyXSA9IHswfTsKKyNpZiBPUEVOU1NMX1ZFUlNJT05fMV8xCisgICAgaW50IGFlYWQsIG5pZDsKKyAgICBjb25zdCBjaGFyICpza2NpcGhlciA9IE5VTEwsICpkaWdlc3QgPSBOVUxMLCAqa3ggPSBOVUxMLCAqYXV0aCA9IE5VTEw7CisjZW5kaWYKKworICAgIC8qIGNhbiBiZSBOVUxMICovCisgICAgY2lwaGVyX25hbWUgPSBTU0xfQ0lQSEVSX2dldF9uYW1lKGNpcGhlcik7CisgICAgY2lwaGVyX3Byb3RvY29sID0gU1NMX0NJUEhFUl9nZXRfdmVyc2lvbihjaXBoZXIpOworICAgIGNpcGhlcl9pZCA9IFNTTF9DSVBIRVJfZ2V0X2lkKGNpcGhlcik7CisgICAgU1NMX0NJUEhFUl9kZXNjcmlwdGlvbihjaXBoZXIsIGJ1Ziwgc2l6ZW9mKGJ1ZikgLSAxKTsKKyAgICBsZW4gPSBzdHJsZW4oYnVmKTsKKyAgICBpZiAobGVuID4gMSAmJiBidWZbbGVuLTFdID09ICdcbicpCisgICAgICAgIGJ1ZltsZW4tMV0gPSAnXDAnOworICAgIHN0cmVuZ3RoX2JpdHMgPSBTU0xfQ0lQSEVSX2dldF9iaXRzKGNpcGhlciwgJmFsZ19iaXRzKTsKKworI2lmIE9QRU5TU0xfVkVSU0lPTl8xXzEKKyAgICBhZWFkID0gU1NMX0NJUEhFUl9pc19hZWFkKGNpcGhlcik7CisgICAgbmlkID0gU1NMX0NJUEhFUl9nZXRfY2lwaGVyX25pZChjaXBoZXIpOworICAgIHNrY2lwaGVyID0gbmlkICE9IE5JRF91bmRlZiA/IE9CSl9uaWQybG4obmlkKSA6IE5VTEw7CisgICAgbmlkID0gU1NMX0NJUEhFUl9nZXRfZGlnZXN0X25pZChjaXBoZXIpOworICAgIGRpZ2VzdCA9IG5pZCAhPSBOSURfdW5kZWYgPyBPQkpfbmlkMmxuKG5pZCkgOiBOVUxMOworICAgIG5pZCA9IFNTTF9DSVBIRVJfZ2V0X2t4X25pZChjaXBoZXIpOworICAgIGt4ID0gbmlkICE9IE5JRF91bmRlZiA/IE9CSl9uaWQybG4obmlkKSA6IE5VTEw7CisgICAgbmlkID0gU1NMX0NJUEhFUl9nZXRfYXV0aF9uaWQoY2lwaGVyKTsKKyAgICBhdXRoID0gbmlkICE9IE5JRF91bmRlZiA/IE9CSl9uaWQybG4obmlkKSA6IE5VTEw7CisjZW5kaWYKKworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKAorICAgICAgICAie3Nrc3Nzc3Nzc2lzaSIKKyNpZiBPUEVOU1NMX1ZFUlNJT05fMV8xCisgICAgICAgICJzT3Nzc3Nzc3NzIgorI2VuZGlmCisgICAgICAgICJ9IiwKKyAgICAgICAgImlkIiwgY2lwaGVyX2lkLAorICAgICAgICAibmFtZSIsIGNpcGhlcl9uYW1lLAorICAgICAgICAicHJvdG9jb2wiLCBjaXBoZXJfcHJvdG9jb2wsCisgICAgICAgICJkZXNjcmlwdGlvbiIsIGJ1ZiwKKyAgICAgICAgInN0cmVuZ3RoX2JpdHMiLCBzdHJlbmd0aF9iaXRzLAorICAgICAgICAiYWxnX2JpdHMiLCBhbGdfYml0cworI2lmIE9QRU5TU0xfVkVSU0lPTl8xXzEKKyAgICAgICAgLCJhZWFkIiwgYWVhZCA/IFB5X1RydWUgOiBQeV9GYWxzZSwKKyAgICAgICAgInN5bW1ldHJpYyIsIHNrY2lwaGVyLAorICAgICAgICAiZGlnZXN0IiwgZGlnZXN0LAorICAgICAgICAia2VhIiwga3gsCisgICAgICAgICJhdXRoIiwgYXV0aAorI2VuZGlmCisgICAgICAgKTsKK30KKyNlbmRpZgorCiAvKltjbGluaWMgaW5wdXRdCiBfc3NsLl9TU0xTb2NrZXQuc2hhcmVkX2NpcGhlcnMKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KQEAgLTIyNTUsNiArMjM0MywxNTIgQEAKICAgICByZXR1cm4gcmV0dmFsOwogfQogCisjaWZkZWYgT1BFTlNTTF9WRVJTSU9OXzFfMQorCitzdGF0aWMgU1NMX1NFU1NJT04qCitfc3NsX3Nlc3Npb25fZHVwKFNTTF9TRVNTSU9OICpzZXNzaW9uKSB7CisgICAgU1NMX1NFU1NJT04gKm5ld3Nlc3Npb24gPSBOVUxMOworICAgIGludCBzbGVuOworICAgIHVuc2lnbmVkIGNoYXIgKnNlbmMgPSBOVUxMLCAqcDsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpjb25zdF9wOworCisgICAgaWYgKHNlc3Npb24gPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIkludmFsaWQgc2Vzc2lvbiIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIC8qIGdldCBsZW5ndGggKi8KKyAgICBzbGVuID0gaTJkX1NTTF9TRVNTSU9OKHNlc3Npb24sIE5VTEwpOworICAgIGlmIChzbGVuID09IDAgfHwgc2xlbiA+IDB4RkYwMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImkyZCgpIGZhaWxlZC4iKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgaWYgKChzZW5jID0gUHlNZW1fTWFsbG9jKHNsZW4pKSA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIHAgPSBzZW5jOworICAgIGlmICghaTJkX1NTTF9TRVNTSU9OKHNlc3Npb24sICZwKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImkyZCgpIGZhaWxlZC4iKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgY29uc3RfcCA9IHNlbmM7CisgICAgbmV3c2Vzc2lvbiA9IGQyaV9TU0xfU0VTU0lPTihOVUxMLCAmY29uc3RfcCwgc2xlbik7CisgICAgaWYgKHNlc3Npb24gPT0gTlVMTCkgeworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBQeU1lbV9GcmVlKHNlbmMpOworICAgIHJldHVybiBuZXdzZXNzaW9uOworICBlcnJvcjoKKyAgICBpZiAoc2VuYyAhPSBOVUxMKSB7CisgICAgICAgIFB5TWVtX0ZyZWUoc2VuYyk7CisgICAgfQorICAgIHJldHVybiBOVUxMOworfQorI2VuZGlmCisKK3N0YXRpYyBQeU9iamVjdCAqCitQeVNTTF9nZXRfc2Vzc2lvbihQeVNTTFNvY2tldCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkgeworICAgIC8qIGdldF9zZXNzaW9uIGNhbiByZXR1cm4gc2Vzc2lvbnMgZnJvbSBhIHNlcnZlci1zaWRlIGNvbm5lY3Rpb24sCisgICAgICogaXQgZG9lcyBub3QgY2hlY2sgZm9yIGhhbmRzaGFrZSBkb25lIG9yIGNsaWVudCBzb2NrZXQuICovCisgICAgUHlTU0xTZXNzaW9uICpweXNlc3M7CisgICAgU1NMX1NFU1NJT04gKnNlc3Npb247CisKKyNpZmRlZiBPUEVOU1NMX1ZFUlNJT05fMV8xCisgICAgLyogZHVwbGljYXRlIHNlc3Npb24gYXMgd29ya2Fyb3VuZCBmb3Igc2Vzc2lvbiBidWcgaW4gT3BlblNTTCAxLjEuMCwKKyAgICAgKiBodHRwczovL2dpdGh1Yi5jb20vb3BlbnNzbC9vcGVuc3NsL2lzc3Vlcy8xNTUwICovCisgICAgc2Vzc2lvbiA9IFNTTF9nZXQwX3Nlc3Npb24oc2VsZi0+c3NsKTsgIC8qIGJvcnJvd2VkIHJlZmVyZW5jZSAqLworICAgIGlmIChzZXNzaW9uID09IE5VTEwpIHsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgfQorICAgIGlmICgoc2Vzc2lvbiA9IF9zc2xfc2Vzc2lvbl9kdXAoc2Vzc2lvbikpID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorI2Vsc2UKKyAgICBzZXNzaW9uID0gU1NMX2dldDFfc2Vzc2lvbihzZWxmLT5zc2wpOworICAgIGlmIChzZXNzaW9uID09IE5VTEwpIHsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgfQorI2VuZGlmCisgICAgcHlzZXNzID0gUHlPYmplY3RfR0NfTmV3KFB5U1NMU2Vzc2lvbiwgJlB5U1NMU2Vzc2lvbl9UeXBlKTsKKyAgICBpZiAocHlzZXNzID09IE5VTEwpIHsKKyAgICAgICAgU1NMX1NFU1NJT05fZnJlZShzZXNzaW9uKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgYXNzZXJ0KHNlbGYtPmN0eCk7CisgICAgcHlzZXNzLT5jdHggPSBzZWxmLT5jdHg7CisgICAgUHlfSU5DUkVGKHB5c2Vzcy0+Y3R4KTsKKyAgICBweXNlc3MtPnNlc3Npb24gPSBzZXNzaW9uOworICAgIFB5T2JqZWN0X0dDX1RyYWNrKHB5c2Vzcyk7CisgICAgcmV0dXJuIChQeU9iamVjdCAqKXB5c2VzczsKK30KKworc3RhdGljIGludCBQeVNTTF9zZXRfc2Vzc2lvbihQeVNTTFNvY2tldCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpjbG9zdXJlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgIFB5U1NMU2Vzc2lvbiAqcHlzZXNzOworI2lmZGVmIE9QRU5TU0xfVkVSU0lPTl8xXzEKKyAgICBTU0xfU0VTU0lPTiAqc2Vzc2lvbjsKKyNlbmRpZgorICAgIGludCByZXN1bHQ7CisKKyAgICBpZiAoIVB5U1NMU2Vzc2lvbl9DaGVjayh2YWx1ZSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIlZhbHVlIGlzIG5vdCBhIFNTTFNlc3Npb24uIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcHlzZXNzID0gKFB5U1NMU2Vzc2lvbiAqKXZhbHVlOworCisgICAgaWYgKHNlbGYtPmN0eC0+Y3R4ICE9IHB5c2Vzcy0+Y3R4LT5jdHgpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiU2Vzc2lvbiByZWZlcnMgdG8gYSBkaWZmZXJlbnQgU1NMQ29udGV4dC4iKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoc2VsZi0+c29ja2V0X3R5cGUgIT0gUFlfU1NMX0NMSUVOVCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3Qgc2V0IHNlc3Npb24gZm9yIHNlcnZlci1zaWRlIFNTTFNvY2tldC4iKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoc2VsZi0+aGFuZHNoYWtlX2RvbmUpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHNldCBzZXNzaW9uIGFmdGVyIGhhbmRzaGFrZS4iKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyNpZmRlZiBPUEVOU1NMX1ZFUlNJT05fMV8xCisgICAgLyogZHVwbGljYXRlIHNlc3Npb24gKi8KKyAgICBpZiAoKHNlc3Npb24gPSBfc3NsX3Nlc3Npb25fZHVwKHB5c2Vzcy0+c2Vzc2lvbikpID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXN1bHQgPSBTU0xfc2V0X3Nlc3Npb24oc2VsZi0+c3NsLCBzZXNzaW9uKTsKKyAgICAvKiBmcmVlIGR1cGxpY2F0ZSwgU1NMX3NldF9zZXNzaW9uKCkgYnVtcHMgcmVmIGNvdW50ICovCisgICAgU1NMX1NFU1NJT05fZnJlZShzZXNzaW9uKTsKKyNlbHNlCisgICAgcmVzdWx0ID0gU1NMX3NldF9zZXNzaW9uKHNlbGYtPnNzbCwgcHlzZXNzLT5zZXNzaW9uKTsKKyNlbmRpZgorICAgIGlmIChyZXN1bHQgPT0gMCkgeworICAgICAgICBfc2V0U1NMRXJyb3IoTlVMTCwgMCwgX19GSUxFX18sIF9fTElORV9fKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworUHlEb2NfU1RSVkFSKFB5U1NMX3NldF9zZXNzaW9uX2RvYywKKyJfc2V0dGVyX3Nlc3Npb24oc2Vzc2lvbilcblwKK1wKK0dldCAvIHNldCBTU0xTZXNzaW9uLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorUHlTU0xfZ2V0X3Nlc3Npb25fcmV1c2VkKFB5U1NMU29ja2V0ICpzZWxmLCB2b2lkICpjbG9zdXJlKSB7CisgICAgaWYgKFNTTF9zZXNzaW9uX3JldXNlZChzZWxmLT5zc2wpKSB7CisgICAgICAgIFB5X1JFVFVSTl9UUlVFOworICAgIH0gZWxzZSB7CisgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKKyAgICB9Cit9CisKK1B5RG9jX1NUUlZBUihQeVNTTF9nZXRfc2Vzc2lvbl9yZXVzZWRfZG9jLAorIldhcyB0aGUgY2xpZW50IHNlc3Npb24gcmV1c2VkIGR1cmluZyBoYW5kc2hha2U/Iik7CisKIHN0YXRpYyBQeUdldFNldERlZiBzc2xfZ2V0c2V0bGlzdFtdID0gewogICAgIHsiY29udGV4dCIsIChnZXR0ZXIpIFB5U1NMX2dldF9jb250ZXh0LAogICAgICAgICAgICAgICAgIChzZXR0ZXIpIFB5U1NMX3NldF9jb250ZXh0LCBQeVNTTF9zZXRfY29udGV4dF9kb2N9LApAQCAtMjI2NCw2ICsyNDk4LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeVNTTF9nZXRfc2VydmVyX2hvc3RuYW1lX2RvY30sCiAgICAgeyJvd25lciIsIChnZXR0ZXIpIFB5U1NMX2dldF9vd25lciwgKHNldHRlcikgUHlTU0xfc2V0X293bmVyLAogICAgICAgICAgICAgICBQeVNTTF9nZXRfb3duZXJfZG9jfSwKKyAgICB7InNlc3Npb24iLCAoZ2V0dGVyKSBQeVNTTF9nZXRfc2Vzc2lvbiwKKyAgICAgICAgICAgICAgICAoc2V0dGVyKSBQeVNTTF9zZXRfc2Vzc2lvbiwgUHlTU0xfc2V0X3Nlc3Npb25fZG9jfSwKKyAgICB7InNlc3Npb25fcmV1c2VkIiwgKGdldHRlcikgUHlTU0xfZ2V0X3Nlc3Npb25fcmV1c2VkLCBOVUxMLAorICAgICAgICAgICAgICBQeVNTTF9nZXRfc2Vzc2lvbl9yZXVzZWRfZG9jfSwKICAgICB7TlVMTH0sICAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTIzMjMsNiArMjU2MSwzMyBAQAogICogX1NTTENvbnRleHQgb2JqZWN0cwogICovCiAKK3N0YXRpYyBpbnQKK19zZXRfdmVyaWZ5X21vZGUoU1NMX0NUWCAqY3R4LCBlbnVtIHB5X3NzbF9jZXJ0X3JlcXVpcmVtZW50cyBuKQoreworICAgIGludCBtb2RlOworICAgIGludCAoKnZlcmlmeV9jYikoaW50LCBYNTA5X1NUT1JFX0NUWCAqKSA9IE5VTEw7CisKKyAgICBzd2l0Y2gobikgeworICAgIGNhc2UgUFlfU1NMX0NFUlRfTk9ORToKKyAgICAgICAgbW9kZSA9IFNTTF9WRVJJRllfTk9ORTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQWV9TU0xfQ0VSVF9PUFRJT05BTDoKKyAgICAgICAgbW9kZSA9IFNTTF9WRVJJRllfUEVFUjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQWV9TU0xfQ0VSVF9SRVFVSVJFRDoKKyAgICAgICAgbW9kZSA9IFNTTF9WRVJJRllfUEVFUiB8IFNTTF9WRVJJRllfRkFJTF9JRl9OT19QRUVSX0NFUlQ7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIHZhbHVlIGZvciB2ZXJpZnlfbW9kZSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIC8qIGtlZXAgY3VycmVudCB2ZXJpZnkgY2IgKi8KKyAgICB2ZXJpZnlfY2IgPSBTU0xfQ1RYX2dldF92ZXJpZnlfY2FsbGJhY2soY3R4KTsKKyAgICBTU0xfQ1RYX3NldF92ZXJpZnkoY3R4LCBtb2RlLCB2ZXJpZnlfY2IpOworICAgIHJldHVybiAwOworfQorCiAvKltjbGluaWMgaW5wdXRdCiBAY2xhc3NtZXRob2QKIF9zc2wuX1NTTENvbnRleHQuX19uZXdfXwpAQCAtMjMzNyw2ICsyNjAyLDcgQEAKICAgICBQeVNTTENvbnRleHQgKnNlbGY7CiAgICAgbG9uZyBvcHRpb25zOwogICAgIFNTTF9DVFggKmN0eCA9IE5VTEw7CisgICAgaW50IHJlc3VsdDsKICNpZiBkZWZpbmVkKFNTTF9NT0RFX1JFTEVBU0VfQlVGRkVSUykKICAgICB1bnNpZ25lZCBsb25nIGxpYnZlcjsKICNlbmRpZgpAQCAtMjM1OCw4ICsyNjI0LDEyIEBACiAgICAgZWxzZSBpZiAocHJvdG9fdmVyc2lvbiA9PSBQWV9TU0xfVkVSU0lPTl9TU0wyKQogICAgICAgICBjdHggPSBTU0xfQ1RYX25ldyhTU0x2Ml9tZXRob2QoKSk7CiAjZW5kaWYKLSAgICBlbHNlIGlmIChwcm90b192ZXJzaW9uID09IFBZX1NTTF9WRVJTSU9OX1RMUykKKyAgICBlbHNlIGlmIChwcm90b192ZXJzaW9uID09IFBZX1NTTF9WRVJTSU9OX1RMUykgLyogU1NMdjIzICovCiAgICAgICAgIGN0eCA9IFNTTF9DVFhfbmV3KFRMU19tZXRob2QoKSk7CisgICAgZWxzZSBpZiAocHJvdG9fdmVyc2lvbiA9PSBQWV9TU0xfVkVSU0lPTl9UTFNfQ0xJRU5UKQorICAgICAgICBjdHggPSBTU0xfQ1RYX25ldyhUTFNfY2xpZW50X21ldGhvZCgpKTsKKyAgICBlbHNlIGlmIChwcm90b192ZXJzaW9uID09IFBZX1NTTF9WRVJTSU9OX1RMU19TRVJWRVIpCisgICAgICAgIGN0eCA9IFNTTF9DVFhfbmV3KFRMU19zZXJ2ZXJfbWV0aG9kKCkpOwogICAgIGVsc2UKICAgICAgICAgcHJvdG9fdmVyc2lvbiA9IC0xOwogICAgIFB5U1NMX0VORF9BTExPV19USFJFQURTCkBAIC0yMzkyLDE2ICsyNjYyLDU3IEBACiAgICAgc2VsZi0+c2V0X2hvc3RuYW1lID0gTlVMTDsKICNlbmRpZgogICAgIC8qIERvbid0IGNoZWNrIGhvc3QgbmFtZSBieSBkZWZhdWx0ICovCi0gICAgc2VsZi0+Y2hlY2tfaG9zdG5hbWUgPSAwOworICAgIGlmIChwcm90b192ZXJzaW9uID09IFBZX1NTTF9WRVJTSU9OX1RMU19DTElFTlQpIHsKKyAgICAgICAgc2VsZi0+Y2hlY2tfaG9zdG5hbWUgPSAxOworICAgICAgICBpZiAoX3NldF92ZXJpZnlfbW9kZShzZWxmLT5jdHgsIFBZX1NTTF9DRVJUX1JFUVVJUkVEKSA9PSAtMSkgeworICAgICAgICAgICAgUHlfREVDUkVGKHNlbGYpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBzZWxmLT5jaGVja19ob3N0bmFtZSA9IDA7CisgICAgICAgIGlmIChfc2V0X3ZlcmlmeV9tb2RlKHNlbGYtPmN0eCwgUFlfU1NMX0NFUlRfTk9ORSkgPT0gLTEpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQogICAgIC8qIERlZmF1bHRzICovCi0gICAgU1NMX0NUWF9zZXRfdmVyaWZ5KHNlbGYtPmN0eCwgU1NMX1ZFUklGWV9OT05FLCBOVUxMKTsKICAgICBvcHRpb25zID0gU1NMX09QX0FMTCAmIH5TU0xfT1BfRE9OVF9JTlNFUlRfRU1QVFlfRlJBR01FTlRTOwogICAgIGlmIChwcm90b192ZXJzaW9uICE9IFBZX1NTTF9WRVJTSU9OX1NTTDIpCiAgICAgICAgIG9wdGlvbnMgfD0gU1NMX09QX05PX1NTTHYyOwogICAgIGlmIChwcm90b192ZXJzaW9uICE9IFBZX1NTTF9WRVJTSU9OX1NTTDMpCiAgICAgICAgIG9wdGlvbnMgfD0gU1NMX09QX05PX1NTTHYzOworICAgIC8qIE1pbmltYWwgc2VjdXJpdHkgZmxhZ3MgZm9yIHNlcnZlciBhbmQgY2xpZW50IHNpZGUgY29udGV4dC4KKyAgICAgKiBDbGllbnQgc29ja2V0cyBpZ25vcmUgc2VydmVyLXNpZGUgcGFyYW1ldGVycy4gKi8KKyNpZmRlZiBTU0xfT1BfTk9fQ09NUFJFU1NJT04KKyAgICBvcHRpb25zIHw9IFNTTF9PUF9OT19DT01QUkVTU0lPTjsKKyNlbmRpZgorI2lmZGVmIFNTTF9PUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UKKyAgICBvcHRpb25zIHw9IFNTTF9PUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0U7CisjZW5kaWYKKyNpZmRlZiBTU0xfT1BfU0lOR0xFX0RIX1VTRQorICAgIG9wdGlvbnMgfD0gU1NMX09QX1NJTkdMRV9ESF9VU0U7CisjZW5kaWYKKyNpZmRlZiBTU0xfT1BfU0lOR0xFX0VDREhfVVNFCisgICAgb3B0aW9ucyB8PSBTU0xfT1BfU0lOR0xFX0VDREhfVVNFOworI2VuZGlmCiAgICAgU1NMX0NUWF9zZXRfb3B0aW9ucyhzZWxmLT5jdHgsIG9wdGlvbnMpOwogCisgICAgLyogQSBiYXJlIG1pbmltdW0gY2lwaGVyIGxpc3Qgd2l0aG91dCBjb21wbGV0bHkgYnJva2VuIGNpcGhlciBzdWl0ZXMuCisgICAgICogSXQncyBmYXIgZnJvbSBwZXJmZWN0IGJ1dCBnaXZlcyB1c2VycyBhIGJldHRlciBoZWFkIHN0YXJ0LiAqLworICAgIGlmIChwcm90b192ZXJzaW9uICE9IFBZX1NTTF9WRVJTSU9OX1NTTDIpIHsKKyAgICAgICAgcmVzdWx0ID0gU1NMX0NUWF9zZXRfY2lwaGVyX2xpc3QoY3R4LCAiSElHSDohYU5VTEw6IWVOVUxMOiFNRDUiKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvKiBTU0x2MiBuZWVkcyBNRDUgKi8KKyAgICAgICAgcmVzdWx0ID0gU1NMX0NUWF9zZXRfY2lwaGVyX2xpc3QoY3R4LCAiSElHSDohYU5VTEw6IWVOVUxMIik7CisgICAgfQorICAgIGlmIChyZXN1bHQgPT0gMCkgeworICAgICAgICBQeV9ERUNSRUYoc2VsZik7CisgICAgICAgIEVSUl9jbGVhcl9lcnJvcigpOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlTU0xFcnJvck9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJObyBjaXBoZXIgY2FuIGJlIHNlbGVjdGVkLiIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKICNpZiBkZWZpbmVkKFNTTF9NT0RFX1JFTEVBU0VfQlVGRkVSUykKICAgICAvKiBTZXQgU1NMX01PREVfUkVMRUFTRV9CVUZGRVJTLiBUaGlzIHBvdGVudGlhbGx5IGdyZWF0bHkgcmVkdWNlcyBtZW1vcnkKICAgICAgICB1c2FnZSBmb3Igbm8gY29zdCBhdCBhbGwuIEhvd2V2ZXIsIGRvbid0IGRvIHRoaXMgZm9yIE9wZW5TU0wgdmVyc2lvbnMKQEAgLTI1MDYsNiArMjgxNyw1MiBAQAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCisjaWYgT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+PSAweDEwMDAyMDAwVUwKKy8qW2NsaW5pYyBpbnB1dF0KK19zc2wuX1NTTENvbnRleHQuZ2V0X2NpcGhlcnMKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTENvbnRleHRfZ2V0X2NpcGhlcnNfaW1wbChQeVNTTENvbnRleHQgKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTU2ZTRkNjhhNDA2ZGZjNCBpbnB1dD1hMmFhZGM5YWY4OWI3OWM1XSovCit7CisgICAgU1NMICpzc2wgPSBOVUxMOworICAgIFNUQUNLX09GKFNTTF9DSVBIRVIpICpzayA9IE5VTEw7CisgICAgY29uc3QgU1NMX0NJUEhFUiAqY2lwaGVyOworICAgIGludCBpPTA7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEwsICpkY3Q7CisKKyAgICBzc2wgPSBTU0xfbmV3KHNlbGYtPmN0eCk7CisgICAgaWYgKHNzbCA9PSBOVUxMKSB7CisgICAgICAgIF9zZXRTU0xFcnJvcihOVUxMLCAwLCBfX0ZJTEVfXywgX19MSU5FX18pOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHNrID0gU1NMX2dldF9jaXBoZXJzKHNzbCk7CisKKyAgICByZXN1bHQgPSBQeUxpc3RfTmV3KHNrX1NTTF9DSVBIRVJfbnVtKHNrKSk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgc2tfU1NMX0NJUEhFUl9udW0oc2spOyBpKyspIHsKKyAgICAgICAgY2lwaGVyID0gc2tfU1NMX0NJUEhFUl92YWx1ZShzaywgaSk7CisgICAgICAgIGRjdCA9IGNpcGhlcl90b19kaWN0KGNpcGhlcik7CisgICAgICAgIGlmIChkY3QgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfQ0xFQVIocmVzdWx0KTsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgfQorICAgICAgICBQeUxpc3RfU0VUX0lURU0ocmVzdWx0LCBpLCBkY3QpOworICAgIH0KKworICBleGl0OgorICAgIGlmIChzc2wgIT0gTlVMTCkKKyAgICAgICAgU1NMX2ZyZWUoc3NsKTsKKyAgICByZXR1cm4gcmVzdWx0OworCit9CisjZW5kaWYKKworCiAjaWZkZWYgT1BFTlNTTF9OUE5fTkVHT1RJQVRFRAogc3RhdGljIGludAogZG9fcHJvdG9jb2xfc2VsZWN0aW9uKGludCBhbHBuLCB1bnNpZ25lZCBjaGFyICoqb3V0LCB1bnNpZ25lZCBjaGFyICpvdXRsZW4sCkBAIC0yNjYyLDI4ICszMDE5LDE2IEBACiBzdGF0aWMgaW50CiBzZXRfdmVyaWZ5X21vZGUoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqYXJnLCB2b2lkICpjKQogewotICAgIGludCBuLCBtb2RlOworICAgIGludCBuOwogICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaSIsICZuKSkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmIChuID09IFBZX1NTTF9DRVJUX05PTkUpCi0gICAgICAgIG1vZGUgPSBTU0xfVkVSSUZZX05PTkU7Ci0gICAgZWxzZSBpZiAobiA9PSBQWV9TU0xfQ0VSVF9PUFRJT05BTCkKLSAgICAgICAgbW9kZSA9IFNTTF9WRVJJRllfUEVFUjsKLSAgICBlbHNlIGlmIChuID09IFBZX1NTTF9DRVJUX1JFUVVJUkVEKQotICAgICAgICBtb2RlID0gU1NMX1ZFUklGWV9QRUVSIHwgU1NMX1ZFUklGWV9GQUlMX0lGX05PX1BFRVJfQ0VSVDsKLSAgICBlbHNlIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCB2YWx1ZSBmb3IgdmVyaWZ5X21vZGUiKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBpZiAobW9kZSA9PSBTU0xfVkVSSUZZX05PTkUgJiYgc2VsZi0+Y2hlY2tfaG9zdG5hbWUpIHsKKyAgICBpZiAobiA9PSBQWV9TU0xfQ0VSVF9OT05FICYmIHNlbGYtPmNoZWNrX2hvc3RuYW1lKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBzZXQgdmVyaWZ5X21vZGUgdG8gQ0VSVF9OT05FIHdoZW4gIgogICAgICAgICAgICAgICAgICAgICAgICAgImNoZWNrX2hvc3RuYW1lIGlzIGVuYWJsZWQuIik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgU1NMX0NUWF9zZXRfdmVyaWZ5KHNlbGYtPmN0eCwgbW9kZSwgTlVMTCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIF9zZXRfdmVyaWZ5X21vZGUoc2VsZi0+Y3R4LCBuKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTM2NzMsNiArNDAxOCw3IEBACiAgICAgX1NTTF9fU1NMQ09OVEVYVF9TRVRfU0VSVkVSTkFNRV9DQUxMQkFDS19NRVRIT0RERUYKICAgICBfU1NMX19TU0xDT05URVhUX0NFUlRfU1RPUkVfU1RBVFNfTUVUSE9EREVGCiAgICAgX1NTTF9fU1NMQ09OVEVYVF9HRVRfQ0FfQ0VSVFNfTUVUSE9EREVGCisgICAgX1NTTF9fU1NMQ09OVEVYVF9HRVRfQ0lQSEVSU19NRVRIT0RERUYKICAgICB7TlVMTCwgTlVMTH0gICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC0zOTM4LDYgKzQyODQsMTk0IEBACiB9OwogCiAKKy8qCisgKiBTU0wgU2Vzc2lvbiBvYmplY3QKKyAqLworCitzdGF0aWMgdm9pZAorUHlTU0xTZXNzaW9uX2RlYWxsb2MoUHlTU0xTZXNzaW9uICpzZWxmKQoreworICAgIFB5T2JqZWN0X0dDX1VuVHJhY2soc2VsZik7CisgICAgUHlfWERFQ1JFRihzZWxmLT5jdHgpOworICAgIGlmIChzZWxmLT5zZXNzaW9uICE9IE5VTEwpIHsKKyAgICAgICAgU1NMX1NFU1NJT05fZnJlZShzZWxmLT5zZXNzaW9uKTsKKyAgICB9CisgICAgUHlPYmplY3RfR0NfRGVsKHNlbGYpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorUHlTU0xTZXNzaW9uX3JpY2hjb21wYXJlKFB5T2JqZWN0ICpsZWZ0LCBQeU9iamVjdCAqcmlnaHQsIGludCBvcCkKK3sKKyAgICBpbnQgcmVzdWx0OworCisgICAgaWYgKGxlZnQgPT0gTlVMTCB8fCByaWdodCA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoIVB5U1NMU2Vzc2lvbl9DaGVjayhsZWZ0KSB8fCAhUHlTU0xTZXNzaW9uX0NoZWNrKHJpZ2h0KSkgeworICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CisgICAgfQorCisgICAgaWYgKGxlZnQgPT0gcmlnaHQpIHsKKyAgICAgICAgcmVzdWx0ID0gMDsKKyAgICB9IGVsc2UgeworICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpsZWZ0X2lkLCAqcmlnaHRfaWQ7CisgICAgICAgIHVuc2lnbmVkIGludCBsZWZ0X2xlbiwgcmlnaHRfbGVuOworICAgICAgICBsZWZ0X2lkID0gU1NMX1NFU1NJT05fZ2V0X2lkKCgoUHlTU0xTZXNzaW9uICopbGVmdCktPnNlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxlZnRfbGVuKTsKKyAgICAgICAgcmlnaHRfaWQgPSBTU0xfU0VTU0lPTl9nZXRfaWQoKChQeVNTTFNlc3Npb24gKilyaWdodCktPnNlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyaWdodF9sZW4pOworICAgICAgICBpZiAobGVmdF9sZW4gPT0gcmlnaHRfbGVuKSB7CisgICAgICAgICAgICByZXN1bHQgPSBtZW1jbXAobGVmdF9pZCwgcmlnaHRfaWQsIGxlZnRfbGVuKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IDE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzd2l0Y2ggKG9wKSB7CisgICAgICBjYXNlIFB5X0VROgorICAgICAgICBpZiAocmVzdWx0ID09IDApIHsKKyAgICAgICAgICAgIFB5X1JFVFVSTl9UUlVFOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBQeV9ORToKKyAgICAgICAgaWYgKHJlc3VsdCAhPSAwKSB7CisgICAgICAgICAgICBQeV9SRVRVUk5fVFJVRTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgUHlfTFQ6CisgICAgICBjYXNlIFB5X0xFOgorICAgICAgY2FzZSBQeV9HVDoKKyAgICAgIGNhc2UgUHlfR0U6CisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OgorICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9Cit9CisKK3N0YXRpYyBpbnQKK1B5U1NMU2Vzc2lvbl90cmF2ZXJzZShQeVNTTFNlc3Npb24gKnNlbGYsIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQoreworICAgIFB5X1ZJU0lUKHNlbGYtPmN0eCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK1B5U1NMU2Vzc2lvbl9jbGVhcihQeVNTTFNlc3Npb24gKnNlbGYpCit7CisgICAgUHlfQ0xFQVIoc2VsZi0+Y3R4KTsKKyAgICByZXR1cm4gMDsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorUHlTU0xTZXNzaW9uX2dldF90aW1lKFB5U1NMU2Vzc2lvbiAqc2VsZiwgdm9pZCAqY2xvc3VyZSkgeworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoU1NMX1NFU1NJT05fZ2V0X3RpbWUoc2VsZi0+c2Vzc2lvbikpOworfQorCitQeURvY19TVFJWQVIoUHlTU0xTZXNzaW9uX2dldF90aW1lX2RvYywKKyJTZXNzaW9uIGNyZWF0aW9uIHRpbWUgKHNlY29uZHMgc2luY2UgZXBvY2gpLiIpOworCisKK3N0YXRpYyBQeU9iamVjdCAqCitQeVNTTFNlc3Npb25fZ2V0X3RpbWVvdXQoUHlTU0xTZXNzaW9uICpzZWxmLCB2b2lkICpjbG9zdXJlKSB7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhTU0xfU0VTU0lPTl9nZXRfdGltZW91dChzZWxmLT5zZXNzaW9uKSk7Cit9CisKK1B5RG9jX1NUUlZBUihQeVNTTFNlc3Npb25fZ2V0X3RpbWVvdXRfZG9jLAorIlNlc3Npb24gdGltZW91dCAoZGVsdGEgaW4gc2Vjb25kcykuIik7CisKKworc3RhdGljIFB5T2JqZWN0ICoKK1B5U1NMU2Vzc2lvbl9nZXRfdGlja2V0X2xpZmV0aW1lX2hpbnQoUHlTU0xTZXNzaW9uICpzZWxmLCB2b2lkICpjbG9zdXJlKSB7CisgICAgdW5zaWduZWQgbG9uZyBoaW50ID0gU1NMX1NFU1NJT05fZ2V0X3RpY2tldF9saWZldGltZV9oaW50KHNlbGYtPnNlc3Npb24pOworICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZyhoaW50KTsKK30KKworUHlEb2NfU1RSVkFSKFB5U1NMU2Vzc2lvbl9nZXRfdGlja2V0X2xpZmV0aW1lX2hpbnRfZG9jLAorIlRpY2tldCBsaWZlIHRpbWUgaGludC4iKTsKKworCitzdGF0aWMgUHlPYmplY3QgKgorUHlTU0xTZXNzaW9uX2dldF9zZXNzaW9uX2lkKFB5U1NMU2Vzc2lvbiAqc2VsZiwgdm9pZCAqY2xvc3VyZSkgeworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmlkOworICAgIHVuc2lnbmVkIGludCBsZW47CisgICAgaWQgPSBTU0xfU0VTU0lPTl9nZXRfaWQoc2VsZi0+c2Vzc2lvbiwgJmxlbik7CisgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNvbnN0IGNoYXIgKilpZCwgbGVuKTsKK30KKworUHlEb2NfU1RSVkFSKFB5U1NMU2Vzc2lvbl9nZXRfc2Vzc2lvbl9pZF9kb2MsCisiU2Vzc2lvbiBpZCIpOworCisKK3N0YXRpYyBQeU9iamVjdCAqCitQeVNTTFNlc3Npb25fZ2V0X2hhc190aWNrZXQoUHlTU0xTZXNzaW9uICpzZWxmLCB2b2lkICpjbG9zdXJlKSB7CisgICAgaWYgKFNTTF9TRVNTSU9OX2hhc190aWNrZXQoc2VsZi0+c2Vzc2lvbikpIHsKKyAgICAgICAgUHlfUkVUVVJOX1RSVUU7CisgICAgfSBlbHNlIHsKKyAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOworICAgIH0KK30KKworUHlEb2NfU1RSVkFSKFB5U1NMU2Vzc2lvbl9nZXRfaGFzX3RpY2tldF9kb2MsCisiRG9lcyB0aGUgc2Vzc2lvbiBjb250YWluIGEgdGlja2V0PyIpOworCisKK3N0YXRpYyBQeUdldFNldERlZiBQeVNTTFNlc3Npb25fZ2V0c2V0bGlzdFtdID0geworICAgIHsiaGFzX3RpY2tldCIsIChnZXR0ZXIpIFB5U1NMU2Vzc2lvbl9nZXRfaGFzX3RpY2tldCwgTlVMTCwKKyAgICAgICAgICAgICAgUHlTU0xTZXNzaW9uX2dldF9oYXNfdGlja2V0X2RvY30sCisgICAgeyJpZCIsICAgKGdldHRlcikgUHlTU0xTZXNzaW9uX2dldF9zZXNzaW9uX2lkLCBOVUxMLAorICAgICAgICAgICAgICBQeVNTTFNlc3Npb25fZ2V0X3Nlc3Npb25faWRfZG9jfSwKKyAgICB7InRpY2tldF9saWZldGltZV9oaW50IiwgKGdldHRlcikgUHlTU0xTZXNzaW9uX2dldF90aWNrZXRfbGlmZXRpbWVfaGludCwKKyAgICAgICAgICAgICAgTlVMTCwgUHlTU0xTZXNzaW9uX2dldF90aWNrZXRfbGlmZXRpbWVfaGludF9kb2N9LAorICAgIHsidGltZSIsIChnZXR0ZXIpIFB5U1NMU2Vzc2lvbl9nZXRfdGltZSwgTlVMTCwKKyAgICAgICAgICAgICAgUHlTU0xTZXNzaW9uX2dldF90aW1lX2RvY30sCisgICAgeyJ0aW1lb3V0IiwgKGdldHRlcikgUHlTU0xTZXNzaW9uX2dldF90aW1lb3V0LCBOVUxMLAorICAgICAgICAgICAgICBQeVNTTFNlc3Npb25fZ2V0X3RpbWVvdXRfZG9jfSwKKyAgICB7TlVMTH0sICAgICAgICAgICAgLyogc2VudGluZWwgKi8KK307CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgUHlTU0xTZXNzaW9uX1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgIl9zc2wuU2Vzc2lvbiIsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfbmFtZSovCisgICAgc2l6ZW9mKFB5U1NMU2Vzc2lvbiksICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYmFzaWNzaXplKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVtc2l6ZSovCisgICAgKGRlc3RydWN0b3IpUHlTU0xTZXNzaW9uX2RlYWxsb2MsICAgICAgICAgIC8qdHBfZGVhbGxvYyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcHJpbnQqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3Jlc2VydmVkKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yZXByKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19udW1iZXIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX3NlcXVlbmNlKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19tYXBwaW5nKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9oYXNoKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9jYWxsKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zdHIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHJvKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRybyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfYnVmZmVyKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MsICAgLyp0cF9mbGFncyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZG9jKi8KKyAgICAodHJhdmVyc2Vwcm9jKVB5U1NMU2Vzc2lvbl90cmF2ZXJzZSwgICAgICAgLyp0cF90cmF2ZXJzZSovCisgICAgKGlucXVpcnkpUHlTU0xTZXNzaW9uX2NsZWFyLCAgICAgICAgICAgICAgIC8qdHBfY2xlYXIqLworICAgIFB5U1NMU2Vzc2lvbl9yaWNoY29tcGFyZSwgICAgICAgICAgICAgICAgICAvKnRwX3JpY2hjb21wYXJlKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF93ZWFrbGlzdG9mZnNldCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlciovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlcm5leHQqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX21ldGhvZHMqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX21lbWJlcnMqLworICAgIFB5U1NMU2Vzc2lvbl9nZXRzZXRsaXN0LCAgICAgICAgICAgICAgICAgICAvKnRwX2dldHNldCovCit9OworCisKIC8qIGhlbHBlciByb3V0aW5lcyBmb3Igc2VlZGluZyB0aGUgU1NMIFBSTkcgKi8KIC8qW2NsaW5pYyBpbnB1dF0KIF9zc2wuUkFORF9hZGQKQEAgLTQwNTksNiArNDU5Myw3IEBACiB9CiAKICNpZm5kZWYgT1BFTlNTTF9OT19FR0QKKy8qIExDT1ZfRVhDTF9TVEFSVCAqLwogLypbY2xpbmljIGlucHV0XQogX3NzbC5SQU5EX2VnZAogICAgIHBhdGg6IG9iamVjdChjb252ZXJ0ZXI9IlB5VW5pY29kZV9GU0NvbnZlcnRlciIpCkBAIC00MDg0LDYgKzQ2MTksNyBAQAogICAgIH0KICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKGJ5dGVzKTsKIH0KKy8qIExDT1ZfRVhDTF9TVE9QICovCiAjZW5kaWYgLyogT1BFTlNTTF9OT19FR0QgKi8KIAogCkBAIC00NTQyLDEzICs1MDc4LDEyIEBACiAKICAgICBpZiAoX3NzbF9sb2NrcyA9PSBOVUxMKSB7CiAgICAgICAgIF9zc2xfbG9ja3NfY291bnQgPSBDUllQVE9fbnVtX2xvY2tzKCk7Ci0gICAgICAgIF9zc2xfbG9ja3MgPSBQeU1lbV9OZXcoUHlUaHJlYWRfdHlwZV9sb2NrLCBfc3NsX2xvY2tzX2NvdW50KTsKKyAgICAgICAgX3NzbF9sb2NrcyA9IFB5TWVtX0NhbGxvYyhfc3NsX2xvY2tzX2NvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihQeVRocmVhZF90eXBlX2xvY2spKTsKICAgICAgICAgaWYgKF9zc2xfbG9ja3MgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9Ci0gICAgICAgIG1lbXNldChfc3NsX2xvY2tzLCAwLAotICAgICAgICAgICAgICAgc2l6ZW9mKFB5VGhyZWFkX3R5cGVfbG9jaykgKiBfc3NsX2xvY2tzX2NvdW50KTsKICAgICAgICAgZm9yIChpID0gMDsgIGkgPCBfc3NsX2xvY2tzX2NvdW50OyAgaSsrKSB7CiAgICAgICAgICAgICBfc3NsX2xvY2tzW2ldID0gUHlUaHJlYWRfYWxsb2NhdGVfbG9jaygpOwogICAgICAgICAgICAgaWYgKF9zc2xfbG9ja3NbaV0gPT0gTlVMTCkgewpAQCAtNDYyMyw2ICs1MTU4LDkgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5VHlwZV9SZWFkeSgmUHlTU0xNZW1vcnlCSU9fVHlwZSkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeVNTTFNlc3Npb25fVHlwZSkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogCiAgICAgbSA9IFB5TW9kdWxlX0NyZWF0ZSgmX3NzbG1vZHVsZSk7CiAgICAgaWYgKG0gPT0gTlVMTCkKQEAgLTQ2OTQsNiArNTIzMiwxMCBAQAogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiTWVtb3J5QklPIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0ICopJlB5U1NMTWVtb3J5QklPX1R5cGUpICE9IDApCiAgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU1NMU2Vzc2lvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCAqKSZQeVNTTFNlc3Npb25fVHlwZSkgIT0gMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU1NMX0VSUk9SX1pFUk9fUkVUVVJOIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQWV9TU0xfRVJST1JfWkVST19SRVRVUk4pOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTU0xfRVJST1JfV0FOVF9SRUFEIiwKQEAgLTQ3OTgsNiArNTM0MCwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBZX1NTTF9WRVJTSU9OX1RMUyk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlBST1RPQ09MX1RMUyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFlfU1NMX1ZFUlNJT05fVExTKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUFJPVE9DT0xfVExTX0NMSUVOVCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFlfU1NMX1ZFUlNJT05fVExTX0NMSUVOVCk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlBST1RPQ09MX1RMU19TRVJWRVIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBZX1NTTF9WRVJTSU9OX1RMU19TRVJWRVIpOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQUk9UT0NPTF9UTFN2MSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFlfU1NMX1ZFUlNJT05fVExTMSk7CiAjaWYgSEFWRV9UTFN2MV8yCkBAIC00ODIwLDYgKzUzNjYsNyBAQAogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJPUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNTTF9PUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UpOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJPUF9TSU5HTEVfREhfVVNFIiwgU1NMX09QX1NJTkdMRV9ESF9VU0UpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJPUF9OT19USUNLRVQiLCBTU0xfT1BfTk9fVElDS0VUKTsKICNpZmRlZiBTU0xfT1BfU0lOR0xFX0VDREhfVVNFCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk9QX1NJTkdMRV9FQ0RIX1VTRSIsIFNTTF9PUF9TSU5HTEVfRUNESF9VU0UpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zdHJ1Y3QuYyBiL01vZHVsZXMvX3N0cnVjdC5jCmluZGV4IGY5NjU1NDEuLjc5NmQxNjggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3N0cnVjdC5jCisrKyBiL01vZHVsZXMvX3N0cnVjdC5jCkBAIC02MCw2ICs2MCw3IEBACiB0eXBlZGVmIHN0cnVjdCB7IGNoYXIgYzsgZG91YmxlIHg7IH0gc3RfZG91YmxlOwogdHlwZWRlZiBzdHJ1Y3QgeyBjaGFyIGM7IHZvaWQgKng7IH0gc3Rfdm9pZF9wOwogdHlwZWRlZiBzdHJ1Y3QgeyBjaGFyIGM7IHNpemVfdCB4OyB9IHN0X3NpemVfdDsKK3R5cGVkZWYgc3RydWN0IHsgY2hhciBjOyBfQm9vbCB4OyB9IHN0X2Jvb2w7CiAKICNkZWZpbmUgU0hPUlRfQUxJR04gKHNpemVvZihzdF9zaG9ydCkgLSBzaXplb2Yoc2hvcnQpKQogI2RlZmluZSBJTlRfQUxJR04gKHNpemVvZihzdF9pbnQpIC0gc2l6ZW9mKGludCkpCkBAIC02OCwyMiArNjksMTIgQEAKICNkZWZpbmUgRE9VQkxFX0FMSUdOIChzaXplb2Yoc3RfZG91YmxlKSAtIHNpemVvZihkb3VibGUpKQogI2RlZmluZSBWT0lEX1BfQUxJR04gKHNpemVvZihzdF92b2lkX3ApIC0gc2l6ZW9mKHZvaWQgKikpCiAjZGVmaW5lIFNJWkVfVF9BTElHTiAoc2l6ZW9mKHN0X3NpemVfdCkgLSBzaXplb2Yoc2l6ZV90KSkKKyNkZWZpbmUgQk9PTF9BTElHTiAoc2l6ZW9mKHN0X2Jvb2wpIC0gc2l6ZW9mKF9Cb29sKSkKIAogLyogV2UgY2FuJ3Qgc3VwcG9ydCBxIGFuZCBRIGluIG5hdGl2ZSBtb2RlIHVubGVzcyB0aGUgY29tcGlsZXIgZG9lczsKICAgIGluIHN0ZCBtb2RlLCB0aGV5J3JlIDggYnl0ZXMgb24gYWxsIHBsYXRmb3Jtcy4gKi8KLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotdHlwZWRlZiBzdHJ1Y3QgeyBjaGFyIGM7IFBZX0xPTkdfTE9ORyB4OyB9IHNfbG9uZ19sb25nOwotI2RlZmluZSBMT05HX0xPTkdfQUxJR04gKHNpemVvZihzX2xvbmdfbG9uZykgLSBzaXplb2YoUFlfTE9OR19MT05HKSkKLSNlbmRpZgotCi0jaWZkZWYgSEFWRV9DOTlfQk9PTAotI2RlZmluZSBCT09MX1RZUEUgX0Jvb2wKLXR5cGVkZWYgc3RydWN0IHsgY2hhciBjOyBfQm9vbCB4OyB9IHNfYm9vbDsKLSNkZWZpbmUgQk9PTF9BTElHTiAoc2l6ZW9mKHNfYm9vbCkgLSBzaXplb2YoQk9PTF9UWVBFKSkKLSNlbHNlCi0jZGVmaW5lIEJPT0xfVFlQRSBjaGFyCi0jZGVmaW5lIEJPT0xfQUxJR04gMAotI2VuZGlmCit0eXBlZGVmIHN0cnVjdCB7IGNoYXIgYzsgbG9uZyBsb25nIHg7IH0gc19sb25nX2xvbmc7CisjZGVmaW5lIExPTkdfTE9OR19BTElHTiAoc2l6ZW9mKHNfbG9uZ19sb25nKSAtIHNpemVvZihsb25nIGxvbmcpKQogCiAjaWZkZWYgX19wb3dlcmMKICNwcmFnbWEgb3B0aW9ucyBhbGlnbj1yZXNldApAQCAtMTY0LDE0ICsxNTUsMTIgQEAKICAgICByZXR1cm4gMDsKIH0KIAotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0KIC8qIFNhbWUsIGJ1dCBoYW5kbGluZyBuYXRpdmUgbG9uZyBsb25nLiAqLwogCiBzdGF0aWMgaW50Ci1nZXRfbG9uZ2xvbmcoUHlPYmplY3QgKnYsIFBZX0xPTkdfTE9ORyAqcCkKK2dldF9sb25nbG9uZyhQeU9iamVjdCAqdiwgbG9uZyBsb25nICpwKQogewotICAgIFBZX0xPTkdfTE9ORyB4OworICAgIGxvbmcgbG9uZyB4OwogCiAgICAgdiA9IGdldF9weWxvbmcodik7CiAgICAgaWYgKHYgPT0gTlVMTCkKQEAgLTE3OSw3ICsxNjgsNyBAQAogICAgIGFzc2VydChQeUxvbmdfQ2hlY2sodikpOwogICAgIHggPSBQeUxvbmdfQXNMb25nTG9uZyh2KTsKICAgICBQeV9ERUNSRUYodik7Ci0gICAgaWYgKHggPT0gKFBZX0xPTkdfTE9ORyktMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgaWYgKHggPT0gKGxvbmcgbG9uZyktMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX092ZXJmbG93RXJyb3IpKQogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFN0cnVjdEVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCBvdXQgb2YgcmFuZ2UiKTsKQEAgLTE5Miw5ICsxODEsOSBAQAogLyogU2FtZSwgYnV0IGhhbmRsaW5nIG5hdGl2ZSB1bnNpZ25lZCBsb25nIGxvbmcuICovCiAKIHN0YXRpYyBpbnQKLWdldF91bG9uZ2xvbmcoUHlPYmplY3QgKnYsIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyAqcCkKK2dldF91bG9uZ2xvbmcoUHlPYmplY3QgKnYsIHVuc2lnbmVkIGxvbmcgbG9uZyAqcCkKIHsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgeDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgeDsKIAogICAgIHYgPSBnZXRfcHlsb25nKHYpOwogICAgIGlmICh2ID09IE5VTEwpCkBAIC0yMDIsNyArMTkxLDcgQEAKICAgICBhc3NlcnQoUHlMb25nX0NoZWNrKHYpKTsKICAgICB4ID0gUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZyh2KTsKICAgICBQeV9ERUNSRUYodik7Ci0gICAgaWYgKHggPT0gKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyktMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgaWYgKHggPT0gKHVuc2lnbmVkIGxvbmcgbG9uZyktMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX092ZXJmbG93RXJyb3IpKQogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFN0cnVjdEVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCBvdXQgb2YgcmFuZ2UiKTsKQEAgLTIxMiw4ICsyMDEsNiBAQAogICAgIHJldHVybiAwOwogfQogCi0jZW5kaWYKLQogLyogU2FtZSwgYnV0IGhhbmRsaW5nIFB5X3NzaXplX3QgKi8KIAogc3RhdGljIGludApAQCAtMjY3LDYgKzI1NCwzMyBAQAogLyogRmxvYXRpbmcgcG9pbnQgaGVscGVycyAqLwogCiBzdGF0aWMgUHlPYmplY3QgKgordW5wYWNrX2hhbGZmbG9hdChjb25zdCBjaGFyICpwLCAgLyogc3RhcnQgb2YgMi1ieXRlIHN0cmluZyAqLworICAgICAgICAgICAgICAgICBpbnQgbGUpICAgICAgICAgLyogdHJ1ZSBmb3IgbGl0dGxlLWVuZGlhbiwgZmFsc2UgZm9yIGJpZy1lbmRpYW4gKi8KK3sKKyAgICBkb3VibGUgeDsKKworICAgIHggPSBfUHlGbG9hdF9VbnBhY2syKCh1bnNpZ25lZCBjaGFyICopcCwgbGUpOworICAgIGlmICh4ID09IC0xLjAgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSh4KTsKK30KKworc3RhdGljIGludAorcGFja19oYWxmZmxvYXQoY2hhciAqcCwgICAgICAvKiBzdGFydCBvZiAyLWJ5dGUgc3RyaW5nICovCisgICAgICAgICAgICAgICBQeU9iamVjdCAqdiwgIC8qIHZhbHVlIHRvIHBhY2sgKi8KKyAgICAgICAgICAgICAgIGludCBsZSkgICAgICAgLyogdHJ1ZSBmb3IgbGl0dGxlLWVuZGlhbiwgZmFsc2UgZm9yIGJpZy1lbmRpYW4gKi8KK3sKKyAgICBkb3VibGUgeCA9IFB5RmxvYXRfQXNEb3VibGUodik7CisgICAgaWYgKHggPT0gLTEuMCAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhTdHJ1Y3RFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJyZXF1aXJlZCBhcmd1bWVudCBpcyBub3QgYSBmbG9hdCIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiBfUHlGbG9hdF9QYWNrMih4LCAodW5zaWduZWQgY2hhciAqKXAsIGxlKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKIHVucGFja19mbG9hdChjb25zdCBjaGFyICpwLCAgLyogc3RhcnQgb2YgNC1ieXRlIHN0cmluZyAqLwogICAgICAgICAgaW50IGxlKSAgICAgICAgICAgICAvKiB0cnVlIGZvciBsaXR0bGUtZW5kaWFuLCBmYWxzZSBmb3IgYmlnLWVuZGlhbiAqLwogewpAQCAtNDM2LDQwICs0NTAsNDYgQEAKIC8qIE5hdGl2ZSBtb2RlIGRvZXNuJ3Qgc3VwcG9ydCBxIG9yIFEgdW5sZXNzIHRoZSBwbGF0Zm9ybSBDIHN1cHBvcnRzCiAgICBsb25nIGxvbmcgKG9yLCBvbiBXaW5kb3dzLCBfX2ludDY0KS4gKi8KIAotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0KIHN0YXRpYyBQeU9iamVjdCAqCiBudV9sb25nbG9uZyhjb25zdCBjaGFyICpwLCBjb25zdCBmb3JtYXRkZWYgKmYpCiB7Ci0gICAgUFlfTE9OR19MT05HIHg7CisgICAgbG9uZyBsb25nIHg7CiAgICAgbWVtY3B5KChjaGFyICopJngsIHAsIHNpemVvZiB4KTsKICAgICBpZiAoeCA+PSBMT05HX01JTiAmJiB4IDw9IExPTkdfTUFYKQotICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKFB5X1NBRkVfRE9XTkNBU1QoeCwgUFlfTE9OR19MT05HLCBsb25nKSk7CisgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoUHlfU0FGRV9ET1dOQ0FTVCh4LCBsb25nIGxvbmcsIGxvbmcpKTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZyh4KTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIG51X3Vsb25nbG9uZyhjb25zdCBjaGFyICpwLCBjb25zdCBmb3JtYXRkZWYgKmYpCiB7Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIHg7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHg7CiAgICAgbWVtY3B5KChjaGFyICopJngsIHAsIHNpemVvZiB4KTsKICAgICBpZiAoeCA8PSBMT05HX01BWCkKLSAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhQeV9TQUZFX0RPV05DQVNUKHgsIHVuc2lnbmVkIFBZX0xPTkdfTE9ORywgbG9uZykpOworICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKFB5X1NBRkVfRE9XTkNBU1QoeCwgdW5zaWduZWQgbG9uZyBsb25nLCBsb25nKSk7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZyh4KTsKIH0KIAotI2VuZGlmCi0KIHN0YXRpYyBQeU9iamVjdCAqCiBudV9ib29sKGNvbnN0IGNoYXIgKnAsIGNvbnN0IGZvcm1hdGRlZiAqZikKIHsKLSAgICBCT09MX1RZUEUgeDsKKyAgICBfQm9vbCB4OwogICAgIG1lbWNweSgoY2hhciAqKSZ4LCBwLCBzaXplb2YgeCk7CiAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyh4ICE9IDApOwogfQogCiAKIHN0YXRpYyBQeU9iamVjdCAqCitudV9oYWxmZmxvYXQoY29uc3QgY2hhciAqcCwgY29uc3QgZm9ybWF0ZGVmICpmKQoreworI2lmIFBZX0xJVFRMRV9FTkRJQU4KKyAgICByZXR1cm4gdW5wYWNrX2hhbGZmbG9hdChwLCAxKTsKKyNlbHNlCisgICAgcmV0dXJuIHVucGFja19oYWxmZmxvYXQocCwgMCk7CisjZW5kaWYKK30KKworc3RhdGljIFB5T2JqZWN0ICoKIG51X2Zsb2F0KGNvbnN0IGNoYXIgKnAsIGNvbnN0IGZvcm1hdGRlZiAqZikKIHsKICAgICBmbG9hdCB4OwpAQCAtNjQzLDEyICs2NjMsMTAgQEAKICAgICByZXR1cm4gMDsKIH0KIAotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0KIHN0YXRpYyBpbnQKIG5wX2xvbmdsb25nKGNoYXIgKnAsIFB5T2JqZWN0ICp2LCBjb25zdCBmb3JtYXRkZWYgKmYpCiB7Ci0gICAgUFlfTE9OR19MT05HIHg7CisgICAgbG9uZyBsb25nIHg7CiAgICAgaWYgKGdldF9sb25nbG9uZyh2LCAmeCkgPCAwKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgbWVtY3B5KHAsIChjaGFyICopJngsIHNpemVvZiB4KTsKQEAgLTY1OCwyMCArNjc2LDE5IEBACiBzdGF0aWMgaW50CiBucF91bG9uZ2xvbmcoY2hhciAqcCwgUHlPYmplY3QgKnYsIGNvbnN0IGZvcm1hdGRlZiAqZikKIHsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgeDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgeDsKICAgICBpZiAoZ2V0X3Vsb25nbG9uZyh2LCAmeCkgPCAwKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgbWVtY3B5KHAsIChjaGFyICopJngsIHNpemVvZiB4KTsKICAgICByZXR1cm4gMDsKIH0KLSNlbmRpZgogCiAKIHN0YXRpYyBpbnQKIG5wX2Jvb2woY2hhciAqcCwgUHlPYmplY3QgKnYsIGNvbnN0IGZvcm1hdGRlZiAqZikKIHsKICAgICBpbnQgeTsKLSAgICBCT09MX1RZUEUgeDsKKyAgICBfQm9vbCB4OwogICAgIHkgPSBQeU9iamVjdF9Jc1RydWUodik7CiAgICAgaWYgKHkgPCAwKQogICAgICAgICByZXR1cm4gLTE7CkBAIC02ODEsNiArNjk4LDE2IEBACiB9CiAKIHN0YXRpYyBpbnQKK25wX2hhbGZmbG9hdChjaGFyICpwLCBQeU9iamVjdCAqdiwgY29uc3QgZm9ybWF0ZGVmICpmKQoreworI2lmIFBZX0xJVFRMRV9FTkRJQU4KKyAgICByZXR1cm4gcGFja19oYWxmZmxvYXQocCwgdiwgMSk7CisjZWxzZQorICAgIHJldHVybiBwYWNrX2hhbGZmbG9hdChwLCB2LCAwKTsKKyNlbmRpZgorfQorCitzdGF0aWMgaW50CiBucF9mbG9hdChjaGFyICpwLCBQeU9iamVjdCAqdiwgY29uc3QgZm9ybWF0ZGVmICpmKQogewogICAgIGZsb2F0IHggPSAoZmxvYXQpUHlGbG9hdF9Bc0RvdWJsZSh2KTsKQEAgLTcyMyw3ICs3NTAsNyBAQAogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgZm9ybWF0ZGVmIG5hdGl2ZV90YWJsZVtdID0geworc3RhdGljIGNvbnN0IGZvcm1hdGRlZiBuYXRpdmVfdGFibGVbXSA9IHsKICAgICB7J3gnLCAgICAgICBzaXplb2YoY2hhciksICAgMCwgICAgICAgICAgICAgIE5VTEx9LAogICAgIHsnYicsICAgICAgIHNpemVvZihjaGFyKSwgICAwLCAgICAgICAgICAgICAgbnVfYnl0ZSwgICAgICAgIG5wX2J5dGV9LAogICAgIHsnQicsICAgICAgIHNpemVvZihjaGFyKSwgICAwLCAgICAgICAgICAgICAgbnVfdWJ5dGUsICAgICAgIG5wX3VieXRlfSwKQEAgLTczOCwxMSArNzY1LDEwIEBACiAgICAgeydMJywgICAgICAgc2l6ZW9mKGxvbmcpLCAgIExPTkdfQUxJR04sICAgICBudV91bG9uZywgICAgICAgbnBfdWxvbmd9LAogICAgIHsnbicsICAgICAgIHNpemVvZihzaXplX3QpLCBTSVpFX1RfQUxJR04sICAgbnVfc3NpemVfdCwgICAgIG5wX3NzaXplX3R9LAogICAgIHsnTicsICAgICAgIHNpemVvZihzaXplX3QpLCBTSVpFX1RfQUxJR04sICAgbnVfc2l6ZV90LCAgICAgIG5wX3NpemVfdH0sCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICB7J3EnLCAgICAgICBzaXplb2YoUFlfTE9OR19MT05HKSwgTE9OR19MT05HX0FMSUdOLCBudV9sb25nbG9uZywgbnBfbG9uZ2xvbmd9LAotICAgIHsnUScsICAgICAgIHNpemVvZihQWV9MT05HX0xPTkcpLCBMT05HX0xPTkdfQUxJR04sIG51X3Vsb25nbG9uZyxucF91bG9uZ2xvbmd9LAotI2VuZGlmCi0gICAgeyc/JywgICAgICAgc2l6ZW9mKEJPT0xfVFlQRSksICAgICAgQk9PTF9BTElHTiwgICAgIG51X2Jvb2wsICAgICAgICBucF9ib29sfSwKKyAgICB7J3EnLCAgICAgICBzaXplb2YobG9uZyBsb25nKSwgTE9OR19MT05HX0FMSUdOLCBudV9sb25nbG9uZywgbnBfbG9uZ2xvbmd9LAorICAgIHsnUScsICAgICAgIHNpemVvZihsb25nIGxvbmcpLCBMT05HX0xPTkdfQUxJR04sIG51X3Vsb25nbG9uZyxucF91bG9uZ2xvbmd9LAorICAgIHsnPycsICAgICAgIHNpemVvZihfQm9vbCksICAgICAgQk9PTF9BTElHTiwgICAgIG51X2Jvb2wsICAgICAgICBucF9ib29sfSwKKyAgICB7J2UnLCAgICAgICBzaXplb2Yoc2hvcnQpLCAgU0hPUlRfQUxJR04sICAgIG51X2hhbGZmbG9hdCwgICBucF9oYWxmZmxvYXR9LAogICAgIHsnZicsICAgICAgIHNpemVvZihmbG9hdCksICBGTE9BVF9BTElHTiwgICAgbnVfZmxvYXQsICAgICAgIG5wX2Zsb2F0fSwKICAgICB7J2QnLCAgICAgICBzaXplb2YoZG91YmxlKSwgRE9VQkxFX0FMSUdOLCAgIG51X2RvdWJsZSwgICAgICBucF9kb3VibGV9LAogICAgIHsnUCcsICAgICAgIHNpemVvZih2b2lkICopLCBWT0lEX1BfQUxJR04sICAgbnVfdm9pZF9wLCAgICAgIG5wX3ZvaWRfcH0sCkBAIC03ODMsOCArODA5LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBidV9sb25nbG9uZyhjb25zdCBjaGFyICpwLCBjb25zdCBmb3JtYXRkZWYgKmYpCiB7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICBQWV9MT05HX0xPTkcgeCA9IDA7CisgICAgbG9uZyBsb25nIHggPSAwOwogICAgIFB5X3NzaXplX3QgaSA9IGYtPnNpemU7CiAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYnl0ZXMgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKXA7CiAgICAgZG8gewpAQCAtNzkyLDM3ICs4MTcsMzAgQEAKICAgICB9IHdoaWxlICgtLWkgPiAwKTsKICAgICAvKiBFeHRlbmQgdGhlIHNpZ24gYml0LiAqLwogICAgIGlmIChTSVpFT0ZfTE9OR19MT05HID4gZi0+c2l6ZSkKLSAgICAgICAgeCB8PSAtKHggJiAoKFBZX0xPTkdfTE9ORykxIDw8ICgoOCAqIGYtPnNpemUpIC0gMSkpKTsKKyAgICAgICAgeCB8PSAtKHggJiAoKGxvbmcgbG9uZykxIDw8ICgoOCAqIGYtPnNpemUpIC0gMSkpKTsKICAgICBpZiAoeCA+PSBMT05HX01JTiAmJiB4IDw9IExPTkdfTUFYKQotICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKFB5X1NBRkVfRE9XTkNBU1QoeCwgUFlfTE9OR19MT05HLCBsb25nKSk7CisgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoUHlfU0FGRV9ET1dOQ0FTVCh4LCBsb25nIGxvbmcsIGxvbmcpKTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZyh4KTsKLSNlbHNlCi0gICAgcmV0dXJuIF9QeUxvbmdfRnJvbUJ5dGVBcnJheSgoY29uc3QgdW5zaWduZWQgY2hhciAqKXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAvKiBsaXR0bGUtZW5kaWFuICovCi0gICAgICAgICAgICAgICAgICAgICAgMSAgLyogc2lnbmVkICovKTsKLSNlbmRpZgogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogYnVfdWxvbmdsb25nKGNvbnN0IGNoYXIgKnAsIGNvbnN0IGZvcm1hdGRlZiAqZikKIHsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB4ID0gMDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgeCA9IDA7CiAgICAgUHlfc3NpemVfdCBpID0gZi0+c2l6ZTsKICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpieXRlcyA9IChjb25zdCB1bnNpZ25lZCBjaGFyICopcDsKICAgICBkbyB7CiAgICAgICAgIHggPSAoeDw8OCkgfCAqYnl0ZXMrKzsKICAgICB9IHdoaWxlICgtLWkgPiAwKTsKICAgICBpZiAoeCA8PSBMT05HX01BWCkKLSAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhQeV9TQUZFX0RPV05DQVNUKHgsIHVuc2lnbmVkIFBZX0xPTkdfTE9ORywgbG9uZykpOworICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKFB5X1NBRkVfRE9XTkNBU1QoeCwgdW5zaWduZWQgbG9uZyBsb25nLCBsb25nKSk7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZyh4KTsKLSNlbHNlCi0gICAgcmV0dXJuIF9QeUxvbmdfRnJvbUJ5dGVBcnJheSgoY29uc3QgdW5zaWduZWQgY2hhciAqKXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAvKiBsaXR0bGUtZW5kaWFuICovCi0gICAgICAgICAgICAgICAgICAgICAgMCAgLyogc2lnbmVkICovKTsKLSNlbmRpZgorfQorCitzdGF0aWMgUHlPYmplY3QgKgorYnVfaGFsZmZsb2F0KGNvbnN0IGNoYXIgKnAsIGNvbnN0IGZvcm1hdGRlZiAqZikKK3sKKyAgICByZXR1cm4gdW5wYWNrX2hhbGZmbG9hdChwLCAwKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTkyMiw2ICs5NDAsMTIgQEAKIH0KIAogc3RhdGljIGludAorYnBfaGFsZmZsb2F0KGNoYXIgKnAsIFB5T2JqZWN0ICp2LCBjb25zdCBmb3JtYXRkZWYgKmYpCit7CisgICAgcmV0dXJuIHBhY2tfaGFsZmZsb2F0KHAsIHYsIDApOworfQorCitzdGF0aWMgaW50CiBicF9mbG9hdChjaGFyICpwLCBQeU9iamVjdCAqdiwgY29uc3QgZm9ybWF0ZGVmICpmKQogewogICAgIGRvdWJsZSB4ID0gUHlGbG9hdF9Bc0RvdWJsZSh2KTsKQEAgLTk3Miw2ICs5OTYsNyBAQAogICAgIHsncScsICAgICAgIDgsICAgICAgICAgICAgICAwLCAgICAgICAgICAgICAgYnVfbG9uZ2xvbmcsICAgIGJwX2xvbmdsb25nfSwKICAgICB7J1EnLCAgICAgICA4LCAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgIGJ1X3Vsb25nbG9uZywgICBicF91bG9uZ2xvbmd9LAogICAgIHsnPycsICAgICAgIDEsICAgICAgICAgICAgICAwLCAgICAgICAgICAgICAgYnVfYm9vbCwgICAgICAgIGJwX2Jvb2x9LAorICAgIHsnZScsICAgICAgIDIsICAgICAgICAgICAgICAwLCAgICAgICAgICAgICAgYnVfaGFsZmZsb2F0LCAgIGJwX2hhbGZmbG9hdH0sCiAgICAgeydmJywgICAgICAgNCwgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICBidV9mbG9hdCwgICAgICAgYnBfZmxvYXR9LAogICAgIHsnZCcsICAgICAgIDgsICAgICAgICAgICAgICAwLCAgICAgICAgICAgICAgYnVfZG91YmxlLCAgICAgIGJwX2RvdWJsZX0sCiAgICAgezB9CkBAIC0xMDExLDggKzEwMzYsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGx1X2xvbmdsb25nKGNvbnN0IGNoYXIgKnAsIGNvbnN0IGZvcm1hdGRlZiAqZikKIHsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgIFBZX0xPTkdfTE9ORyB4ID0gMDsKKyAgICBsb25nIGxvbmcgeCA9IDA7CiAgICAgUHlfc3NpemVfdCBpID0gZi0+c2l6ZTsKICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpieXRlcyA9IChjb25zdCB1bnNpZ25lZCBjaGFyICopcDsKICAgICBkbyB7CkBAIC0xMDIwLDM3ICsxMDQ0LDMwIEBACiAgICAgfSB3aGlsZSAoaSA+IDApOwogICAgIC8qIEV4dGVuZCB0aGUgc2lnbiBiaXQuICovCiAgICAgaWYgKFNJWkVPRl9MT05HX0xPTkcgPiBmLT5zaXplKQotICAgICAgICB4IHw9IC0oeCAmICgoUFlfTE9OR19MT05HKTEgPDwgKCg4ICogZi0+c2l6ZSkgLSAxKSkpOworICAgICAgICB4IHw9IC0oeCAmICgobG9uZyBsb25nKTEgPDwgKCg4ICogZi0+c2l6ZSkgLSAxKSkpOwogICAgIGlmICh4ID49IExPTkdfTUlOICYmIHggPD0gTE9OR19NQVgpCi0gICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoUHlfU0FGRV9ET1dOQ0FTVCh4LCBQWV9MT05HX0xPTkcsIGxvbmcpKTsKKyAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhQeV9TQUZFX0RPV05DQVNUKHgsIGxvbmcgbG9uZywgbG9uZykpOwogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKHgpOwotI2Vsc2UKLSAgICByZXR1cm4gX1B5TG9uZ19Gcm9tQnl0ZUFycmF5KChjb25zdCB1bnNpZ25lZCBjaGFyICopcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIC8qIGxpdHRsZS1lbmRpYW4gKi8KLSAgICAgICAgICAgICAgICAgICAgICAxICAvKiBzaWduZWQgKi8pOwotI2VuZGlmCiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBsdV91bG9uZ2xvbmcoY29uc3QgY2hhciAqcCwgY29uc3QgZm9ybWF0ZGVmICpmKQogewotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIHggPSAwOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB4ID0gMDsKICAgICBQeV9zc2l6ZV90IGkgPSBmLT5zaXplOwogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ5dGVzID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilwOwogICAgIGRvIHsKICAgICAgICAgeCA9ICh4PDw4KSB8IGJ5dGVzWy0taV07CiAgICAgfSB3aGlsZSAoaSA+IDApOwogICAgIGlmICh4IDw9IExPTkdfTUFYKQotICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKFB5X1NBRkVfRE9XTkNBU1QoeCwgdW5zaWduZWQgUFlfTE9OR19MT05HLCBsb25nKSk7CisgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoUHlfU0FGRV9ET1dOQ0FTVCh4LCB1bnNpZ25lZCBsb25nIGxvbmcsIGxvbmcpKTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKHgpOwotI2Vsc2UKLSAgICByZXR1cm4gX1B5TG9uZ19Gcm9tQnl0ZUFycmF5KChjb25zdCB1bnNpZ25lZCBjaGFyICopcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIC8qIGxpdHRsZS1lbmRpYW4gKi8KLSAgICAgICAgICAgICAgICAgICAgICAwICAvKiBzaWduZWQgKi8pOwotI2VuZGlmCit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitsdV9oYWxmZmxvYXQoY29uc3QgY2hhciAqcCwgY29uc3QgZm9ybWF0ZGVmICpmKQoreworICAgIHJldHVybiB1bnBhY2tfaGFsZmZsb2F0KHAsIDEpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTE0Miw2ICsxMTU5LDEyIEBACiB9CiAKIHN0YXRpYyBpbnQKK2xwX2hhbGZmbG9hdChjaGFyICpwLCBQeU9iamVjdCAqdiwgY29uc3QgZm9ybWF0ZGVmICpmKQoreworICAgIHJldHVybiBwYWNrX2hhbGZmbG9hdChwLCB2LCAxKTsKK30KKworc3RhdGljIGludAogbHBfZmxvYXQoY2hhciAqcCwgUHlPYmplY3QgKnYsIGNvbnN0IGZvcm1hdGRlZiAqZikKIHsKICAgICBkb3VibGUgeCA9IFB5RmxvYXRfQXNEb3VibGUodik7CkBAIC0xMTgyLDYgKzEyMDUsNyBAQAogICAgIHsnUScsICAgICAgIDgsICAgICAgICAgICAgICAwLCAgICAgICAgICAgICAgbHVfdWxvbmdsb25nLCAgIGxwX3Vsb25nbG9uZ30sCiAgICAgeyc/JywgICAgICAgMSwgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICBidV9ib29sLCAgICAgICAgYnBfYm9vbH0sIC8qIFN0ZCByZXAgbm90IGVuZGlhbiBkZXAsCiAgICAgICAgIGJ1dCBwb3RlbnRpYWxseSBkaWZmZXJlbnQgZnJvbSBuYXRpdmUgcmVwIC0tIHJldXNlIGJ4X2Jvb2wgZnVuY3MuICovCisgICAgeydlJywgICAgICAgMiwgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICBsdV9oYWxmZmxvYXQsICAgbHBfaGFsZmZsb2F0fSwKICAgICB7J2YnLCAgICAgICA0LCAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgIGx1X2Zsb2F0LCAgICAgICBscF9mbG9hdH0sCiAgICAgeydkJywgICAgICAgOCwgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICBsdV9kb3VibGUsICAgICAgbHBfZG91YmxlfSwKICAgICB7MH0KQEAgLTExODksNyArMTIxMyw3IEBACiAKIAogc3RhdGljIGNvbnN0IGZvcm1hdGRlZiAqCi13aGljaHRhYmxlKGNoYXIgKipwZm10KQord2hpY2h0YWJsZShjb25zdCBjaGFyICoqcGZtdCkKIHsKICAgICBjb25zdCBjaGFyICpmbXQgPSAoKnBmbXQpKys7IC8qIE1heSBiZSBiYWNrZWQgb3V0IG9mIGxhdGVyICovCiAgICAgc3dpdGNoICgqZm10KSB7CkBAIC0xMjY4LDcgKzEyOTIsNyBAQAogCiAgICAgZm10ID0gUHlCeXRlc19BU19TVFJJTkcoc2VsZi0+c19mb3JtYXQpOwogCi0gICAgZiA9IHdoaWNodGFibGUoKGNoYXIgKiopJmZtdCk7CisgICAgZiA9IHdoaWNodGFibGUoJmZtdCk7CiAKICAgICBzID0gZm10OwogICAgIHNpemUgPSAwOwpAQCAtMTQ1Niw3ICsxNDgwLDcgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLXNfdW5wYWNrX2ludGVybmFsKFB5U3RydWN0T2JqZWN0ICpzb3NlbGYsIGNoYXIgKnN0YXJ0ZnJvbSkgeworc191bnBhY2tfaW50ZXJuYWwoUHlTdHJ1Y3RPYmplY3QgKnNvc2VsZiwgY29uc3QgY2hhciAqc3RhcnRmcm9tKSB7CiAgICAgZm9ybWF0Y29kZSAqY29kZTsKICAgICBQeV9zc2l6ZV90IGkgPSAwOwogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBQeVR1cGxlX05ldyhzb3NlbGYtPnNfbGVuKTsKQEAgLTIyMzksNyArMjI2Myw3IEBACiAgIHg6IHBhZCBieXRlIChubyBkYXRhKTsgYzpjaGFyOyBiOnNpZ25lZCBieXRlOyBCOnVuc2lnbmVkIGJ5dGU7XG5cCiAgID86IF9Cb29sIChyZXF1aXJlcyBDOTk7IGlmIG5vdCBhdmFpbGFibGUsIGNoYXIgaXMgdXNlZCBpbnN0ZWFkKVxuXAogICBoOnNob3J0OyBIOnVuc2lnbmVkIHNob3J0OyBpOmludDsgSTp1bnNpZ25lZCBpbnQ7XG5cCi0gIGw6bG9uZzsgTDp1bnNpZ25lZCBsb25nOyBmOmZsb2F0OyBkOmRvdWJsZS5cblwKKyAgbDpsb25nOyBMOnVuc2lnbmVkIGxvbmc7IGY6ZmxvYXQ7IGQ6ZG91YmxlOyBlOmhhbGYtZmxvYXQuXG5cCiBTcGVjaWFsIGNhc2VzIChwcmVjZWRpbmcgZGVjaW1hbCBjb3VudCBpbmRpY2F0ZXMgbGVuZ3RoKTpcblwKICAgczpzdHJpbmcgKGFycmF5IG9mIGNoYXIpOyBwOiBwYXNjYWwgc3RyaW5nICh3aXRoIGNvdW50IGJ5dGUpLlxuXAogU3BlY2lhbCBjYXNlcyAob25seSBhdmFpbGFibGUgaW4gbmF0aXZlIGZvcm1hdCk6XG5cCkBAIC0yMjc5LDcgKzIzMDMsNyBAQAogCiAgICAgLyogQ2hlY2sgZW5kaWFuIGFuZCBzd2FwIGluIGZhc3RlciBmdW5jdGlvbnMgKi8KICAgICB7Ci0gICAgICAgIGZvcm1hdGRlZiAqbmF0aXZlID0gbmF0aXZlX3RhYmxlOworICAgICAgICBjb25zdCBmb3JtYXRkZWYgKm5hdGl2ZSA9IG5hdGl2ZV90YWJsZTsKICAgICAgICAgZm9ybWF0ZGVmICpvdGhlciwgKnB0cjsKICNpZiBQWV9MSVRUTEVfRU5ESUFOCiAgICAgICAgIG90aGVyID0gbGlsZW5kaWFuX3RhYmxlOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fdGVzdGJ1ZmZlci5jIGIvTW9kdWxlcy9fdGVzdGJ1ZmZlci5jCmluZGV4IDQzZGI4YTguLjEzZDNjY2MgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3Rlc3RidWZmZXIuYworKysgYi9Nb2R1bGVzL190ZXN0YnVmZmVyLmMKQEAgLTEzLDcgKzEzLDcgQEAKIFB5T2JqZWN0ICpjYWxjc2l6ZSA9IE5VTEw7CiAKIC8qIGNhY2hlIHNpbXBsZSBmb3JtYXQgc3RyaW5nICovCi1zdGF0aWMgY29uc3QgY2hhciAqc2ltcGxlX2ZtdCA9ICJCIjsKK3N0YXRpYyBjb25zdCBjaGFyIHNpbXBsZV9mbXRbXSA9ICJCIjsKIFB5T2JqZWN0ICpzaW1wbGVfZm9ybWF0ID0gTlVMTDsKICNkZWZpbmUgU0lNUExFX0ZPUk1BVChmbXQpIChmbXQgPT0gTlVMTCB8fCBzdHJjbXAoZm10LCAiQiIpID09IDApCiAjZGVmaW5lIEZJWF9GT1JNQVQoZm10KSAoZm10ID09IE5VTEwgPyAiQiIgOiBmbXQpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL190ZXN0Y2FwaW1vZHVsZS5jIGIvTW9kdWxlcy9fdGVzdGNhcGltb2R1bGUuYwppbmRleCAwNjBhOTJkLi5mMDkyMDVmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL190ZXN0Y2FwaW1vZHVsZS5jCisrKyBiL01vZHVsZXMvX3Rlc3RjYXBpbW9kdWxlLmMKQEAgLTYwLDkgKzYwLDcgQEAKICAgICBDSEVDS19TSVpFT0YoU0laRU9GX0xPTkcsIGxvbmcpOwogICAgIENIRUNLX1NJWkVPRihTSVpFT0ZfVk9JRF9QLCB2b2lkKik7CiAgICAgQ0hFQ0tfU0laRU9GKFNJWkVPRl9USU1FX1QsIHRpbWVfdCk7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICBDSEVDS19TSVpFT0YoU0laRU9GX0xPTkdfTE9ORywgUFlfTE9OR19MT05HKTsKLSNlbmRpZgorICAgIENIRUNLX1NJWkVPRihTSVpFT0ZfTE9OR19MT05HLCBsb25nIGxvbmcpOwogCiAjdW5kZWYgQ0hFQ0tfU0laRU9GCiAKQEAgLTEwMCwyMiArOTgsMTQgQEAKICAgICBDSEVDS19TSUdOTkVTUyhQeV9VQ1MxLCAwKTsKICAgICBDSEVDS19TSUdOTkVTUyhQeV9VQ1MyLCAwKTsKICAgICBDSEVDS19TSUdOTkVTUyhQeV9VQ1M0LCAwKTsKLSNpZmRlZiBIQVZFX0lOVDMyX1QKLSAgICBDSEVDS19TSVpFT0YoUFlfSU5UMzJfVCwgNCk7Ci0gICAgQ0hFQ0tfU0lHTk5FU1MoUFlfSU5UMzJfVCwgMSk7Ci0jZW5kaWYKLSNpZmRlZiBIQVZFX1VJTlQzMl9UCi0gICAgQ0hFQ0tfU0laRU9GKFBZX1VJTlQzMl9ULCA0KTsKLSAgICBDSEVDS19TSUdOTkVTUyhQWV9VSU5UMzJfVCwgMCk7Ci0jZW5kaWYKLSNpZmRlZiBIQVZFX0lOVDY0X1QKLSAgICBDSEVDS19TSVpFT0YoUFlfSU5UNjRfVCwgOCk7Ci0gICAgQ0hFQ0tfU0lHTk5FU1MoUFlfSU5UNjRfVCwgMSk7Ci0jZW5kaWYKLSNpZmRlZiBIQVZFX1VJTlQ2NF9UCi0gICAgQ0hFQ0tfU0laRU9GKFBZX1VJTlQ2NF9ULCA4KTsKLSAgICBDSEVDS19TSUdOTkVTUyhQWV9VSU5UNjRfVCwgMCk7Ci0jZW5kaWYKKyAgICBDSEVDS19TSVpFT0YoaW50MzJfdCwgNCk7CisgICAgQ0hFQ0tfU0lHTk5FU1MoaW50MzJfdCwgMSk7CisgICAgQ0hFQ0tfU0laRU9GKHVpbnQzMl90LCA0KTsKKyAgICBDSEVDS19TSUdOTkVTUyh1aW50MzJfdCwgMCk7CisgICAgQ0hFQ0tfU0laRU9GKGludDY0X3QsIDgpOworICAgIENIRUNLX1NJR05ORVNTKGludDY0X3QsIDEpOworICAgIENIRUNLX1NJWkVPRih1aW50NjRfdCwgOCk7CisgICAgQ0hFQ0tfU0lHTk5FU1ModWludDY0X3QsIDApOwogCiAgICAgLyogcG9pbnRlci9zaXplIHR5cGVzICovCiAgICAgQ0hFQ0tfU0laRU9GKHNpemVfdCwgc2l6ZW9mKHZvaWQgKikpOwpAQCAtMTIzLDEwICsxMTMsMTAgQEAKICAgICBDSEVDS19TSVpFT0YoUHlfc3NpemVfdCwgc2l6ZW9mKHZvaWQgKikpOwogICAgIENIRUNLX1NJR05ORVNTKFB5X3NzaXplX3QsIDEpOwogCi0gICAgQ0hFQ0tfU0laRU9GKFB5X3VpbnRwdHJfdCwgc2l6ZW9mKHZvaWQgKikpOwotICAgIENIRUNLX1NJR05ORVNTKFB5X3VpbnRwdHJfdCwgMCk7Ci0gICAgQ0hFQ0tfU0laRU9GKFB5X2ludHB0cl90LCBzaXplb2Yodm9pZCAqKSk7Ci0gICAgQ0hFQ0tfU0lHTk5FU1MoUHlfaW50cHRyX3QsIDEpOworICAgIENIRUNLX1NJWkVPRih1aW50cHRyX3QsIHNpemVvZih2b2lkICopKTsKKyAgICBDSEVDS19TSUdOTkVTUyh1aW50cHRyX3QsIDApOworICAgIENIRUNLX1NJWkVPRihpbnRwdHJfdCwgc2l6ZW9mKHZvaWQgKikpOworICAgIENIRUNLX1NJR05ORVNTKGludHB0cl90LCAxKTsKIAogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICByZXR1cm4gUHlfTm9uZTsKQEAgLTI0OCwxMyArMjM4LDM3IEBACiAgICAgcmV0dXJuIFB5X05vbmU7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCoKK2RpY3RfZ2V0aXRlbV9rbm93bmhhc2goUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICptcCwgKmtleSwgKnJlc3VsdDsKKyAgICBQeV9zc2l6ZV90IGhhc2g7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9PbjpkaWN0X2dldGl0ZW1fa25vd25oYXNoIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJm1wLCAma2V5LCAmaGFzaCkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmVzdWx0ID0gX1B5RGljdF9HZXRJdGVtX0tub3duSGFzaChtcCwga2V5LCAoUHlfaGFzaF90KWhhc2gpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCAmJiAhUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBfUHlFcnJfU2V0S2V5RXJyb3Ioa2V5KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlfWElOQ1JFRihyZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CiAKIHN0YXRpYyBQeU9iamVjdCoKIGRpY3RfaGFzc3BsaXR0YWJsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKIHsKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8hOmRpY3RfaGFzc3BsaXR0YWJsZSIsICZQeURpY3RfVHlwZSwgJmFyZykpIHsKKyAgICBpZiAoIVB5RGljdF9DaGVjayhhcmcpKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiZGljdF9oYXNzcGxpdHRhYmxlKCkgYXJndW1lbnQgbXVzdCBiZSBkaWN0LCBub3QgJyVzJyIsCisgICAgICAgICAgICAgICAgICAgICBhcmctPm9iX3R5cGUtPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisKICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKF9QeURpY3RfSGFzU3BsaXRUYWJsZSgoUHlEaWN0T2JqZWN0KilhcmcpKTsKIH0KIApAQCAtMzY2LDEyICszODAsMTIgQEAKIH0KIAogCi0vKiBUZXN0cyBvZiBQeUxvbmdfe0FzLCBGcm9tfXtVbnNpZ25lZCx9TG9uZygpLCBhbmQgKCNpZmRlZiBIQVZFX0xPTkdfTE9ORykKKy8qIFRlc3RzIG9mIFB5TG9uZ197QXMsIEZyb219e1Vuc2lnbmVkLH1Mb25nKCksIGFuZAogICAgUHlMb25nX3tBcywgRnJvbX17VW5zaWduZWQsfUxvbmdMb25nKCkuCiAKICAgIE5vdGUgdGhhdCB0aGUgbWVhdCBvZiB0aGUgdGVzdCBpcyBjb250YWluZWQgaW4gdGVzdGNhcGlfbG9uZy5oLgogICAgVGhpcyBpcyByZXZvbHRpbmcsIGJ1dCBkZWxpY2F0ZSBjb2RlIGR1cGxpY2F0aW9uIGlzIHdvcnNlOiAgImFsbW9zdAotICAgZXhhY3RseSB0aGUgc2FtZSIgY29kZSBpcyBuZWVkZWQgdG8gdGVzdCBQWV9MT05HX0xPTkcsIGJ1dCB0aGUgdWJpcXVpdG91cworICAgZXhhY3RseSB0aGUgc2FtZSIgY29kZSBpcyBuZWVkZWQgdG8gdGVzdCBsb25nIGxvbmcsIGJ1dCB0aGUgdWJpcXVpdG91cwogICAgZGVwZW5kZW5jZSBvbiB0eXBlIG5hbWVzIG1ha2VzIGl0IGltcG9zc2libGUgdG8gdXNlIGEgcGFyYW1ldGVyaXplZAogICAgZnVuY3Rpb24uICBBIGdpYW50IG1hY3JvIHdvdWxkIGJlIGV2ZW4gd29yc2UgdGhhbiB0aGlzLiAgQSBDKysgdGVtcGxhdGUKICAgIHdvdWxkIGJlIHBlcmZlY3QuCkBAIC00MTEsOCArNDI1LDYgQEAKICN1bmRlZiBGX1VfVE9fUFkKICN1bmRlZiBGX1BZX1RPX1UKIAotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0KIHN0YXRpYyBQeU9iamVjdCAqCiByYWlzZV90ZXN0X2xvbmdsb25nX2Vycm9yKGNvbnN0IGNoYXIqIG1zZykKIHsKQEAgLTQyMCw3ICs0MzIsNyBAQAogfQogCiAjZGVmaW5lIFRFU1ROQU1FICAgICAgICB0ZXN0X2xvbmdsb25nX2FwaV9pbm5lcgotI2RlZmluZSBUWVBFTkFNRSAgICAgICAgUFlfTE9OR19MT05HCisjZGVmaW5lIFRZUEVOQU1FICAgICAgICBsb25nIGxvbmcKICNkZWZpbmUgRl9TX1RPX1BZICAgICAgIFB5TG9uZ19Gcm9tTG9uZ0xvbmcKICNkZWZpbmUgRl9QWV9UT19TICAgICAgIFB5TG9uZ19Bc0xvbmdMb25nCiAjZGVmaW5lIEZfVV9UT19QWSAgICAgICBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcKQEAgLTYwNyw3ICs2MTksNyBAQAogfQogCiAvKiBUZXN0IHRoZSBQeUxvbmdfQXNMb25nTG9uZ0FuZE92ZXJmbG93IEFQSS4gR2VuZXJhbCBjb252ZXJzaW9uIHRvCi0gICBQWV9MT05HX0xPTkcgaXMgdGVzdGVkIGJ5IHRlc3RfbG9uZ19hcGlfaW5uZXIuIFRoaXMgdGVzdCB3aWxsCisgICBsb25nIGxvbmcgaXMgdGVzdGVkIGJ5IHRlc3RfbG9uZ19hcGlfaW5uZXIuIFRoaXMgdGVzdCB3aWxsCiAgICBjb25jZW50cmF0ZSBvbiBwcm9wZXIgaGFuZGxpbmcgb2Ygb3ZlcmZsb3cuCiAqLwogCkBAIC02MTUsNyArNjI3LDcgQEAKIHRlc3RfbG9uZ19sb25nX2FuZF9vdmVyZmxvdyhQeU9iamVjdCAqc2VsZikKIHsKICAgICBQeU9iamVjdCAqbnVtLCAqb25lLCAqdGVtcDsKLSAgICBQWV9MT05HX0xPTkcgdmFsdWU7CisgICAgbG9uZyBsb25nIHZhbHVlOwogICAgIGludCBvdmVyZmxvdzsKIAogICAgIC8qIFRlc3QgdGhhdCBvdmVyZmxvdyBpcyBzZXQgcHJvcGVybHkgZm9yIGEgbGFyZ2UgdmFsdWUuICovCkBAIC04MzMsNyArODQ1LDcgQEAKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KIAotLyogVGVzdCB0aGUgTCBjb2RlIGZvciBQeUFyZ19QYXJzZVR1cGxlLiAgVGhpcyBzaG91bGQgZGVsaXZlciBhIFBZX0xPTkdfTE9ORworLyogVGVzdCB0aGUgTCBjb2RlIGZvciBQeUFyZ19QYXJzZVR1cGxlLiAgVGhpcyBzaG91bGQgZGVsaXZlciBhIGxvbmcgbG9uZwogICAgZm9yIGJvdGggbG9uZyBhbmQgaW50IGFyZ3VtZW50cy4gIFRoZSB0ZXN0IG1heSBsZWFrIGEgbGl0dGxlIG1lbW9yeSBpZgogICAgaXQgZmFpbHMuCiAqLwpAQCAtODQxLDcgKzg1Myw3IEBACiB0ZXN0X0xfY29kZShQeU9iamVjdCAqc2VsZikKIHsKICAgICBQeU9iamVjdCAqdHVwbGUsICpudW07Ci0gICAgUFlfTE9OR19MT05HIHZhbHVlOworICAgIGxvbmcgbG9uZyB2YWx1ZTsKIAogICAgIHR1cGxlID0gUHlUdXBsZV9OZXcoMSk7CiAgICAgaWYgKHR1cGxlID09IE5VTEwpCkBAIC04NzksOCArODkxLDYgQEAKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KIAotI2VuZGlmICAvKiBpZmRlZiBIQVZFX0xPTkdfTE9ORyAqLwotCiBzdGF0aWMgUHlPYmplY3QgKgogcmV0dXJuX25vbmUodm9pZCAqdW51c2VkKQogewpAQCAtMTAxMCw3ICsxMDIwLDcgQEAKIGdldGFyZ3Nfa2V5d29yZHMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewogICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJhcmcxIiwiYXJnMiIsImFyZzMiLCJhcmc0IiwiYXJnNSIsIE5VTEx9OwotICAgIHN0YXRpYyBjaGFyICpmbXQ9IihpaSlpfChpKGlpKSkoaWlpKWkiOworICAgIHN0YXRpYyBjb25zdCBjaGFyIGZtdFtdID0gIihpaSlpfChpKGlpKSkoaWlpKWkiOwogICAgIGludCBpbnRfYXJnc1sxMF09ey0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xfTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgZm10LCBrZXl3b3JkcywKQEAgLTEwMzcsNiArMTA0NywyMSBAQAogICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJpaWkiLCByZXF1aXJlZCwgb3B0aW9uYWwsIGtleXdvcmRfb25seSk7CiB9CiAKKy8qIHRlc3QgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzIHBvc2l0aW9uYWwtb25seSBhcmd1bWVudHMgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitnZXRhcmdzX3Bvc2l0aW9uYWxfb25seV9hbmRfa2V5d29yZHMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyIiLCAiIiwgImtleXdvcmQiLCBOVUxMfTsKKyAgICBpbnQgcmVxdWlyZWQgPSAtMTsKKyAgICBpbnQgb3B0aW9uYWwgPSAtMTsKKyAgICBpbnQga2V5d29yZCA9IC0xOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaXxpaSIsIGtleXdvcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZXF1aXJlZCwgJm9wdGlvbmFsLCAma2V5d29yZCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJpaWkiLCByZXF1aXJlZCwgb3B0aW9uYWwsIGtleXdvcmQpOworfQorCiAvKiBGdW5jdGlvbnMgdG8gY2FsbCBQeUFyZ19QYXJzZVR1cGxlIHdpdGggaW50ZWdlciBmb3JtYXQgY29kZXMsCiAgICBhbmQgcmV0dXJuIHRoZSByZXN1bHQuCiAqLwpAQCAtMTEzMCwxMSArMTE1NSwxMCBAQAogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcodmFsdWUpOwogfQogCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKIHN0YXRpYyBQeU9iamVjdCAqCiBnZXRhcmdzX0woUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFBZX0xPTkdfTE9ORyB2YWx1ZTsKKyAgICBsb25nIGxvbmcgdmFsdWU7CiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJMIiwgJnZhbHVlKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcodmFsdWUpOwpAQCAtMTE0MywxMiArMTE2NywxMSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGdldGFyZ3NfSyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIHZhbHVlOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB2YWx1ZTsKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIksiLCAmdmFsdWUpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKHZhbHVlKTsKIH0KLSNlbmRpZgogCiAvKiBUaGlzIGZ1bmN0aW9uIG5vdCBvbmx5IHRlc3RzIHRoZSAnaycgZ2V0YXJncyBjb2RlLCBidXQgYWxzbyB0aGUKICAgIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ01hc2soKSBhbmQgUHlMb25nX0FzVW5zaWduZWRMb25nTWFzaygpIGZ1bmN0aW9ucy4gKi8KQEAgLTExNzAsNyArMTE5Myw3IEBACiAgICAgdmFsdWUgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmdNYXNrKG51bSk7CiAgICAgaWYgKHZhbHVlICE9IFVMT05HX01BWCkKICAgICAgICAgcmV0dXJuIHJhaXNlVGVzdEVycm9yKCJ0ZXN0X2tfY29kZSIsCi0gICAgICAgICJQeUxvbmdfQXNVbnNpZ25lZExvbmdNYXNrKCkgcmV0dXJuZWQgd3JvbmcgdmFsdWUgZm9yIGxvbmcgMHhGRkYuLi5GRkYiKTsKKyAgICAgICAgICAgICJQeUxvbmdfQXNVbnNpZ25lZExvbmdNYXNrKCkgcmV0dXJuZWQgd3JvbmcgdmFsdWUgZm9yIGxvbmcgMHhGRkYuLi5GRkYiKTsKIAogICAgIFB5VHVwbGVfU0VUX0lURU0odHVwbGUsIDAsIG51bSk7CiAKQEAgLTExODksNyArMTIxMiw3IEBACiAgICAgdmFsdWUgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmdNYXNrKG51bSk7CiAgICAgaWYgKHZhbHVlICE9ICh1bnNpZ25lZCBsb25nKS0weDQyKQogICAgICAgICByZXR1cm4gcmFpc2VUZXN0RXJyb3IoInRlc3Rfa19jb2RlIiwKLSAgICAgICAgIlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ01hc2soKSByZXR1cm5lZCB3cm9uZyB2YWx1ZSBmb3IgbG9uZyAweEZGRi4uLkZGRiIpOworICAgICAgICAgICAgIlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ01hc2soKSByZXR1cm5lZCB3cm9uZyB2YWx1ZSBmb3IgbG9uZyAweEZGRi4uLkZGRiIpOwogCiAgICAgUHlUdXBsZV9TRVRfSVRFTSh0dXBsZSwgMCwgbnVtKTsKIApAQCAtMjIwMiw3ICsyMjI1LDcgQEAKICAgICBQeU9iamVjdCAqcmM7CiAgICAgaW50IHN1Y2Nlc3M7CiAgICAgUHlHSUxTdGF0ZV9TVEFURSBzID0gUHlHSUxTdGF0ZV9FbnN1cmUoKTsKLSAgICByYyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbigoUHlPYmplY3QgKiljYWxsYWJsZSwgIiIpOworICAgIHJjID0gX1B5T2JqZWN0X0NhbGxOb0FyZygoUHlPYmplY3QgKiljYWxsYWJsZSk7CiAgICAgc3VjY2VzcyA9IChyYyAhPSBOVUxMKTsKICAgICBQeV9YREVDUkVGKHJjKTsKICAgICBQeUdJTFN0YXRlX1JlbGVhc2Uocyk7CkBAIC0yMzM2LDEwICsyMzU5LDggQEAKICAgICBDSEVDS18xX0ZPUk1BVCgiJXp1Iiwgc2l6ZV90KTsKIAogICAgIC8qICIlbGxkIiBhbmQgIiVsbHUiIHN1cHBvcnQgYWRkZWQgaW4gUHl0aG9uIDIuNy4gKi8KLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgIENIRUNLXzFfRk9STUFUKCIlbGx1IiwgdW5zaWduZWQgUFlfTE9OR19MT05HKTsKLSAgICBDSEVDS18xX0ZPUk1BVCgiJWxsZCIsIFBZX0xPTkdfTE9ORyk7Ci0jZW5kaWYKKyAgICBDSEVDS18xX0ZPUk1BVCgiJWxsdSIsIHVuc2lnbmVkIGxvbmcgbG9uZyk7CisgICAgQ0hFQ0tfMV9GT1JNQVQoIiVsbGQiLCBsb25nIGxvbmcpOwogCiAgICAgUHlfUkVUVVJOX05PTkU7CiAKQEAgLTIzODQsNyArMjQwNSw3IEBACiAgICAgcmVzdWx0ID0gUHlPU19zdHJpbmdfdG9fZG91YmxlKFNUUiwgTlVMTCwgTlVMTCk7ICAgICAgICAgICAgXAogICAgIGlmIChyZXN1bHQgPT0gLTEuMCAmJiBQeUVycl9PY2N1cnJlZCgpKSAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgaWYgKHJlc3VsdCAhPSBleHBlY3RlZCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmIChyZXN1bHQgIT0gKGRvdWJsZSlleHBlY3RlZCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgbXNnID0gImNvbnZlcnNpb24gb2YgIiBTVFIgIiB0byBmbG9hdCBmYWlsZWQiOyAgICAgICAgICBcCiAgICAgICAgIGdvdG8gZmFpbDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0KQEAgLTI5NzYsNyArMjk5Nyw5IEBACiBzdGF0aWMgaW50CiBjaGVja190aW1lX3JvdW5kaW5nKGludCByb3VuZCkKIHsKLSAgICBpZiAocm91bmQgIT0gX1B5VGltZV9ST1VORF9GTE9PUiAmJiByb3VuZCAhPSBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpIHsKKyAgICBpZiAocm91bmQgIT0gX1B5VGltZV9ST1VORF9GTE9PUgorICAgICAgICAmJiByb3VuZCAhPSBfUHlUaW1lX1JPVU5EX0NFSUxJTkcKKyAgICAgICAgJiYgcm91bmQgIT0gX1B5VGltZV9ST1VORF9IQUxGX0VWRU4pIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJpbnZhbGlkIHJvdW5kaW5nIik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CkBAIC0zNDcxLDcgKzM0OTQsNyBAQAogICAgIC8qIEFsbG9jYXRlIGEgUHl0aG9uIHRocmVhZCBzdGF0ZSBmb3IgdGhpcyB0aHJlYWQgKi8KICAgICBzdGF0ZSA9IFB5R0lMU3RhdGVfRW5zdXJlKCk7CiAKLSAgICByZXMgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24odGVzdF9jX3RocmVhZC0+Y2FsbGJhY2ssICIiLCBOVUxMKTsKKyAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE5vQXJnKHRlc3RfY190aHJlYWQtPmNhbGxiYWNrKTsKICAgICBQeV9DTEVBUih0ZXN0X2NfdGhyZWFkLT5jYWxsYmFjayk7CiAKICAgICBpZiAocmVzID09IE5VTEwpIHsKQEAgLTM3NjEsNyArMzc4NCw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogdGVzdF9weXRpbWVfYXNzZWNvbmRzZG91YmxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQWV9MT05HX0xPTkcgbnM7CisgICAgbG9uZyBsb25nIG5zOwogICAgIF9QeVRpbWVfdCB0czsKICAgICBkb3VibGUgZDsKIApAQCAtMzc3NSw3ICszNzk4LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB0ZXN0X1B5VGltZV9Bc1RpbWV2YWwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFBZX0xPTkdfTE9ORyBuczsKKyAgICBsb25nIGxvbmcgbnM7CiAgICAgaW50IHJvdW5kOwogICAgIF9QeVRpbWVfdCB0OwogICAgIHN0cnVjdCB0aW1ldmFsIHR2OwpAQCAtMzc4OSw3ICszODEyLDcgQEAKICAgICBpZiAoX1B5VGltZV9Bc1RpbWV2YWwodCwgJnR2LCByb3VuZCkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHNlY29uZHMgPSBQeUxvbmdfRnJvbUxvbmcoKFBZX0xPTkdfTE9ORyl0di50dl9zZWMpOworICAgIHNlY29uZHMgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcgbG9uZyl0di50dl9zZWMpOwogICAgIGlmIChzZWNvbmRzID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJObCIsIHNlY29uZHMsIHR2LnR2X3VzZWMpOwpAQCAtMzc5OSw3ICszODIyLDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB0ZXN0X1B5VGltZV9Bc1RpbWVzcGVjKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQWV9MT05HX0xPTkcgbnM7CisgICAgbG9uZyBsb25nIG5zOwogICAgIF9QeVRpbWVfdCB0OwogICAgIHN0cnVjdCB0aW1lc3BlYyB0czsKIApAQCAtMzgxNSw3ICszODM4LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB0ZXN0X1B5VGltZV9Bc01pbGxpc2Vjb25kcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUFlfTE9OR19MT05HIG5zOworICAgIGxvbmcgbG9uZyBuczsKICAgICBpbnQgcm91bmQ7CiAgICAgX1B5VGltZV90IHQsIG1zOwogCkBAIC0zODMzLDcgKzM4NTYsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHRlc3RfUHlUaW1lX0FzTWljcm9zZWNvbmRzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQWV9MT05HX0xPTkcgbnM7CisgICAgbG9uZyBsb25nIG5zOwogICAgIGludCByb3VuZDsKICAgICBfUHlUaW1lX3QgdCwgbXM7CiAKQEAgLTM4NTcsNiArMzg4MCwxNTIgQEAKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHRzdGF0ZS0+cmVjdXJzaW9uX2RlcHRoIC0gMSk7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCoKK3B5bWVtX2J1ZmZlcl9vdmVyZmxvdyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgY2hhciAqYnVmZmVyOworCisgICAgLyogRGVsaWJlcmF0ZSBidWZmZXIgb3ZlcmZsb3cgdG8gY2hlY2sgdGhhdCBQeU1lbV9GcmVlKCkgZGV0ZWN0cworICAgICAgIHRoZSBvdmVyZmxvdyB3aGVuIGRlYnVnIGhvb2tzIGFyZSBpbnN0YWxsZWQuICovCisgICAgYnVmZmVyID0gUHlNZW1fTWFsbG9jKDE2KTsKKyAgICBidWZmZXJbMTZdID0gJ3gnOworICAgIFB5TWVtX0ZyZWUoYnVmZmVyKTsKKworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QqCitweW1lbV9hcGlfbWlzdXNlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBjaGFyICpidWZmZXI7CisKKyAgICAvKiBEZWxpYmVyYXRlIG1pc3VzYWdlIG9mIFB5dGhvbiBhbGxvY2F0b3JzOgorICAgICAgIGFsbG9jb2NhdGUgd2l0aCBQeU1lbSBidXQgcmVsZWFzZSB3aXRoIFB5TWVtX1Jhdy4gKi8KKyAgICBidWZmZXIgPSBQeU1lbV9NYWxsb2MoMTYpOworICAgIFB5TWVtX1Jhd0ZyZWUoYnVmZmVyKTsKKworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QqCitweW1lbV9tYWxsb2Nfd2l0aG91dF9naWwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGNoYXIgKmJ1ZmZlcjsKKworICAgIC8qIERlbGliZXJhdGUgYnVnIHRvIHRlc3QgZGVidWcgaG9va3Mgb24gUHl0aG9uIG1lbW9yeSBhbGxvY2F0b3JzOgorICAgICAgIGNhbGwgUHlNZW1fTWFsbG9jKCkgd2l0aG91dCBob2xkaW5nIHRoZSBHSUwgKi8KKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgYnVmZmVyID0gUHlNZW1fTWFsbG9jKDEwKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgUHlNZW1fRnJlZShidWZmZXIpOworCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK3B5b2JqZWN0X21hbGxvY193aXRob3V0X2dpbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgY2hhciAqYnVmZmVyOworCisgICAgLyogRGVsaWJlcmF0ZSBidWcgdG8gdGVzdCBkZWJ1ZyBob29rcyBvbiBQeXRob24gbWVtb3J5IGFsbG9jYXRvcnM6CisgICAgICAgY2FsbCBQeU9iamVjdF9NYWxsb2MoKSB3aXRob3V0IGhvbGRpbmcgdGhlIEdJTCAqLworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBidWZmZXIgPSBQeU9iamVjdF9NYWxsb2MoMTApOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBQeU9iamVjdF9GcmVlKGJ1ZmZlcik7CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3RyYWNlbWFsbG9jX3RyYWNrKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICB1bnNpZ25lZCBpbnQgZG9tYWluOworICAgIFB5T2JqZWN0ICpwdHJfb2JqOworICAgIHZvaWQgKnB0cjsKKyAgICBQeV9zc2l6ZV90IHNpemU7CisgICAgaW50IHJlbGVhc2VfZ2lsID0gMDsKKyAgICBpbnQgcmVzOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJJT258aSIsICZkb21haW4sICZwdHJfb2JqLCAmc2l6ZSwgJnJlbGVhc2VfZ2lsKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcHRyID0gUHlMb25nX0FzVm9pZFB0cihwdHJfb2JqKTsKKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAocmVsZWFzZV9naWwpIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICByZXMgPSBfUHlUcmFjZU1hbGxvY19UcmFjayhkb21haW4sICh1aW50cHRyX3QpcHRyLCBzaXplKTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJlcyA9IF9QeVRyYWNlTWFsbG9jX1RyYWNrKGRvbWFpbiwgKHVpbnRwdHJfdClwdHIsIHNpemUpOworICAgIH0KKworICAgIGlmIChyZXMgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJfUHlUcmFjZU1hbGxvY19UcmFjayBlcnJvciIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3RyYWNlbWFsbG9jX3VudHJhY2soUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIHVuc2lnbmVkIGludCBkb21haW47CisgICAgUHlPYmplY3QgKnB0cl9vYmo7CisgICAgdm9pZCAqcHRyOworICAgIGludCByZXM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIklPIiwgJmRvbWFpbiwgJnB0cl9vYmopKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBwdHIgPSBQeUxvbmdfQXNWb2lkUHRyKHB0cl9vYmopOworICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJlcyA9IF9QeVRyYWNlTWFsbG9jX1VudHJhY2soZG9tYWluLCAodWludHB0cl90KXB0cik7CisgICAgaWYgKHJlcyA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgIl9QeVRyYWNlTWFsbG9jX1RyYWNrIGVycm9yIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgordHJhY2VtYWxsb2NfZ2V0X3RyYWNlYmFjayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgdW5zaWduZWQgaW50IGRvbWFpbjsKKyAgICBQeU9iamVjdCAqcHRyX29iajsKKyAgICB2b2lkICpwdHI7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIklPIiwgJmRvbWFpbiwgJnB0cl9vYmopKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBwdHIgPSBQeUxvbmdfQXNWb2lkUHRyKHB0cl9vYmopOworICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJldHVybiBfUHlUcmFjZU1hbGxvY19HZXRUcmFjZWJhY2soZG9tYWluLCAodWludHB0cl90KXB0cik7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitkaWN0X2dldF92ZXJzaW9uKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeURpY3RPYmplY3QgKmRpY3Q7CisgICAgdWludDY0X3QgdmVyc2lvbjsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyEiLCAmUHlEaWN0X1R5cGUsICZkaWN0KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICB2ZXJzaW9uID0gZGljdC0+bWFfdmVyc2lvbl90YWc7CisKKyAgICBQeV9CVUlMRF9BU1NFUlQoc2l6ZW9mKHVuc2lnbmVkIFBZX0xPTkdfTE9ORykgPj0gc2l6ZW9mKHZlcnNpb24pKTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKCh1bnNpZ25lZCBQWV9MT05HX0xPTkcpdmVyc2lvbik7Cit9CisKIAogc3RhdGljIFB5TWV0aG9kRGVmIFRlc3RNZXRob2RzW10gPSB7CiAgICAgeyJyYWlzZV9leGNlcHRpb24iLCAgICAgICAgIHJhaXNlX2V4Y2VwdGlvbiwgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCkBAIC0zODY3LDYgKzQwMzYsNyBAQAogICAgIHsidGVzdF9kYXRldGltZV9jYXBpIiwgIHRlc3RfZGF0ZXRpbWVfY2FwaSwgICAgICAgICAgICAgIE1FVEhfTk9BUkdTfSwKICAgICB7InRlc3RfbGlzdF9hcGkiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXRlc3RfbGlzdF9hcGksICAgICAgTUVUSF9OT0FSR1N9LAogICAgIHsidGVzdF9kaWN0X2l0ZXJhdGlvbiIsICAgICAoUHlDRnVuY3Rpb24pdGVzdF9kaWN0X2l0ZXJhdGlvbixNRVRIX05PQVJHU30sCisgICAgeyJkaWN0X2dldGl0ZW1fa25vd25oYXNoIiwgIGRpY3RfZ2V0aXRlbV9rbm93bmhhc2gsICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJkaWN0X2hhc3NwbGl0dGFibGUiLCAgICAgIGRpY3RfaGFzc3BsaXR0YWJsZSwgICAgICAgICAgICAgIE1FVEhfT30sCiAgICAgeyJ0ZXN0X2xhenlfaGFzaF9pbmhlcml0YW5jZSIsICAgICAgKFB5Q0Z1bmN0aW9uKXRlc3RfbGF6eV9oYXNoX2luaGVyaXRhbmNlLE1FVEhfTk9BUkdTfSwKICAgICB7InRlc3RfbG9uZ19hcGkiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXRlc3RfbG9uZ19hcGksICAgICAgTUVUSF9OT0FSR1N9LApAQCAtMzkwMyw2ICs0MDczLDkgQEAKICAgICAgIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTfSwKICAgICB7ImdldGFyZ3Nfa2V5d29yZF9vbmx5IiwgKFB5Q0Z1bmN0aW9uKWdldGFyZ3Nfa2V5d29yZF9vbmx5LAogICAgICAgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFN9LAorICAgIHsiZ2V0YXJnc19wb3NpdGlvbmFsX29ubHlfYW5kX2tleXdvcmRzIiwKKyAgICAgIChQeUNGdW5jdGlvbilnZXRhcmdzX3Bvc2l0aW9uYWxfb25seV9hbmRfa2V5d29yZHMsCisgICAgICBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEU30sCiAgICAgeyJnZXRhcmdzX2IiLCAgICAgICAgICAgICAgIGdldGFyZ3NfYiwgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJnZXRhcmdzX0IiLCAgICAgICAgICAgICAgIGdldGFyZ3NfQiwgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJnZXRhcmdzX2giLCAgICAgICAgICAgICAgIGdldGFyZ3NfaCwgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCkBAIC0zOTEzLDE0ICs0MDg2LDEyIEBACiAgICAgeyJnZXRhcmdzX2wiLCAgICAgICAgICAgICAgIGdldGFyZ3NfbCwgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJnZXRhcmdzX24iLCAgICAgICAgICAgICAgIGdldGFyZ3NfbiwgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJnZXRhcmdzX3AiLCAgICAgICAgICAgICAgIGdldGFyZ3NfcCwgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICB7ImdldGFyZ3NfTCIsICAgICAgICAgICAgICAgZ2V0YXJnc19MLCAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImdldGFyZ3NfSyIsICAgICAgICAgICAgICAgZ2V0YXJnc19LLCAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7InRlc3RfbG9uZ2xvbmdfYXBpIiwgICAgICAgdGVzdF9sb25nbG9uZ19hcGksICAgICAgICAgICAgICAgTUVUSF9OT0FSR1N9LAogICAgIHsidGVzdF9sb25nX2xvbmdfYW5kX292ZXJmbG93IiwKICAgICAgICAgKFB5Q0Z1bmN0aW9uKXRlc3RfbG9uZ19sb25nX2FuZF9vdmVyZmxvdywgTUVUSF9OT0FSR1N9LAogICAgIHsidGVzdF9MX2NvZGUiLCAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pdGVzdF9MX2NvZGUsICAgICAgICBNRVRIX05PQVJHU30sCi0jZW5kaWYKICAgICB7ImdldGFyZ3NfZiIsICAgICAgICAgICAgICAgZ2V0YXJnc19mLCAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImdldGFyZ3NfZCIsICAgICAgICAgICAgICAgZ2V0YXJnc19kLCAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImdldGFyZ3NfRCIsICAgICAgICAgICAgICAgZ2V0YXJnc19ELCAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKQEAgLTQwNTEsNiArNDIyMiwxNCBAQAogICAgIHsiUHlUaW1lX0FzTWlsbGlzZWNvbmRzIiwgdGVzdF9QeVRpbWVfQXNNaWxsaXNlY29uZHMsIE1FVEhfVkFSQVJHU30sCiAgICAgeyJQeVRpbWVfQXNNaWNyb3NlY29uZHMiLCB0ZXN0X1B5VGltZV9Bc01pY3Jvc2Vjb25kcywgTUVUSF9WQVJBUkdTfSwKICAgICB7ImdldF9yZWN1cnNpb25fZGVwdGgiLCBnZXRfcmVjdXJzaW9uX2RlcHRoLCBNRVRIX05PQVJHU30sCisgICAgeyJweW1lbV9idWZmZXJfb3ZlcmZsb3ciLCBweW1lbV9idWZmZXJfb3ZlcmZsb3csIE1FVEhfTk9BUkdTfSwKKyAgICB7InB5bWVtX2FwaV9taXN1c2UiLCBweW1lbV9hcGlfbWlzdXNlLCBNRVRIX05PQVJHU30sCisgICAgeyJweW1lbV9tYWxsb2Nfd2l0aG91dF9naWwiLCBweW1lbV9tYWxsb2Nfd2l0aG91dF9naWwsIE1FVEhfTk9BUkdTfSwKKyAgICB7InB5b2JqZWN0X21hbGxvY193aXRob3V0X2dpbCIsIHB5b2JqZWN0X21hbGxvY193aXRob3V0X2dpbCwgTUVUSF9OT0FSR1N9LAorICAgIHsidHJhY2VtYWxsb2NfdHJhY2siLCB0cmFjZW1hbGxvY190cmFjaywgTUVUSF9WQVJBUkdTfSwKKyAgICB7InRyYWNlbWFsbG9jX3VudHJhY2siLCB0cmFjZW1hbGxvY191bnRyYWNrLCBNRVRIX1ZBUkFSR1N9LAorICAgIHsidHJhY2VtYWxsb2NfZ2V0X3RyYWNlYmFjayIsIHRyYWNlbWFsbG9jX2dldF90cmFjZWJhY2ssIE1FVEhfVkFSQVJHU30sCisgICAgeyJkaWN0X2dldF92ZXJzaW9uIiwgZGljdF9nZXRfdmVyc2lvbiwgTUVUSF9WQVJBUkdTfSwKICAgICB7TlVMTCwgTlVMTH0gLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTQwNzAsMTAgKzQyNDksOCBAQAogICAgIGZsb2F0IGZsb2F0X21lbWJlcjsKICAgICBkb3VibGUgZG91YmxlX21lbWJlcjsKICAgICBjaGFyIGlucGxhY2VfbWVtYmVyWzZdOwotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgUFlfTE9OR19MT05HIGxvbmdsb25nX21lbWJlcjsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgdWxvbmdsb25nX21lbWJlcjsKLSNlbmRpZgorICAgIGxvbmcgbG9uZyBsb25nbG9uZ19tZW1iZXI7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHVsb25nbG9uZ19tZW1iZXI7CiB9IGFsbF9zdHJ1Y3RtZW1iZXJzOwogCiB0eXBlZGVmIHN0cnVjdCB7CkBAIC00MDk1LDEwICs0MjcyLDggQEAKICAgICB7IlRfRkxPQVQiLCBUX0ZMT0FULCBvZmZzZXRvZih0ZXN0X3N0cnVjdG1lbWJlcnMsIHN0cnVjdG1lbWJlcnMuZmxvYXRfbWVtYmVyKSwgMCwgTlVMTH0sCiAgICAgeyJUX0RPVUJMRSIsIFRfRE9VQkxFLCBvZmZzZXRvZih0ZXN0X3N0cnVjdG1lbWJlcnMsIHN0cnVjdG1lbWJlcnMuZG91YmxlX21lbWJlciksIDAsIE5VTEx9LAogICAgIHsiVF9TVFJJTkdfSU5QTEFDRSIsIFRfU1RSSU5HX0lOUExBQ0UsIG9mZnNldG9mKHRlc3Rfc3RydWN0bWVtYmVycywgc3RydWN0bWVtYmVycy5pbnBsYWNlX21lbWJlciksIDAsIE5VTEx9LAotI2lmZGVmIEhBVkVfTE9OR19MT05HCiAgICAgeyJUX0xPTkdMT05HIiwgVF9MT05HTE9ORywgb2Zmc2V0b2YodGVzdF9zdHJ1Y3RtZW1iZXJzLCBzdHJ1Y3RtZW1iZXJzLmxvbmdsb25nX21lbWJlciksIDAsIE5VTEx9LAogICAgIHsiVF9VTE9OR0xPTkciLCBUX1VMT05HTE9ORywgb2Zmc2V0b2YodGVzdF9zdHJ1Y3RtZW1iZXJzLCBzdHJ1Y3RtZW1iZXJzLnVsb25nbG9uZ19tZW1iZXIpLCAwLCBOVUxMfSwKLSNlbmRpZgogICAgIHtOVUxMfQogfTsKIApAQCAtNDExMCwxNSArNDI4NSw5IEBACiAgICAgICAgICJUX0JPT0wiLCAiVF9CWVRFIiwgIlRfVUJZVEUiLCAiVF9TSE9SVCIsICJUX1VTSE9SVCIsCiAgICAgICAgICJUX0lOVCIsICJUX1VJTlQiLCAiVF9MT05HIiwgIlRfVUxPTkciLCAiVF9QWVNTSVpFVCIsCiAgICAgICAgICJUX0ZMT0FUIiwgIlRfRE9VQkxFIiwgIlRfU1RSSU5HX0lOUExBQ0UiLAotI2lmZGVmIEhBVkVfTE9OR19MT05HCiAgICAgICAgICJUX0xPTkdMT05HIiwgIlRfVUxPTkdMT05HIiwKLSNlbmRpZgogICAgICAgICBOVUxMfTsKLSAgICBzdGF0aWMgY2hhciAqZm10ID0gInxiYkJoSGlJbGtuZmRzIyIKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgICAgICAiTEsiCi0jZW5kaWYKLSAgICAgICAgOworICAgIHN0YXRpYyBjb25zdCBjaGFyIGZtdFtdID0gInxiYkJoSGlJbGtuZmRzI0xLIjsKICAgICB0ZXN0X3N0cnVjdG1lbWJlcnMgKm9iOwogICAgIGNvbnN0IGNoYXIgKnMgPSBOVUxMOwogICAgIFB5X3NzaXplX3Qgc3RyaW5nX2xlbiA9IDA7CkBAIC00MTQwLDEwICs0MzA5LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb2ItPnN0cnVjdG1lbWJlcnMuZmxvYXRfbWVtYmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvYi0+c3RydWN0bWVtYmVycy5kb3VibGVfbWVtYmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzLCAmc3RyaW5nX2xlbgotI2lmZGVmIEhBVkVfTE9OR19MT05HCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAmb2ItPnN0cnVjdG1lbWJlcnMubG9uZ2xvbmdfbWVtYmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvYi0+c3RydWN0bWVtYmVycy51bG9uZ2xvbmdfbWVtYmVyCi0jZW5kaWYKICAgICAgICAgKSkgewogICAgICAgICBQeV9ERUNSRUYob2IpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTQ0NjksNiArNDYzNiw3IEBACiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJQWV9TU0laRV9UX01BWCIsIFB5TG9uZ19Gcm9tU3NpemVfdChQWV9TU0laRV9UX01BWCkpOwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiUFlfU1NJWkVfVF9NSU4iLCBQeUxvbmdfRnJvbVNzaXplX3QoUFlfU1NJWkVfVF9NSU4pKTsKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIlNJWkVPRl9QWUdDX0hFQUQiLCBQeUxvbmdfRnJvbVNzaXplX3Qoc2l6ZW9mKFB5R0NfSGVhZCkpKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIlNJWkVPRl9USU1FX1QiLCBQeUxvbmdfRnJvbVNzaXplX3Qoc2l6ZW9mKHRpbWVfdCkpKTsKICAgICBQeV9JTkNSRUYoJlB5SW5zdGFuY2VNZXRob2RfVHlwZSk7CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJpbnN0YW5jZW1ldGhvZCIsIChQeU9iamVjdCAqKSZQeUluc3RhbmNlTWV0aG9kX1R5cGUpOwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL190ZXN0bXVsdGlwaGFzZS5jIGIvTW9kdWxlcy9fdGVzdG11bHRpcGhhc2UuYwppbmRleCA0MWRhOTk3Li40ZGFhMzRlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL190ZXN0bXVsdGlwaGFzZS5jCisrKyBiL01vZHVsZXMvX3Rlc3RtdWx0aXBoYXNlLmMKQEAgLTYxLDcgKzYxLDcgQEAKIH0KIAogc3RhdGljIGludAotRXhhbXBsZV9zZXRhdHRyKEV4YW1wbGVPYmplY3QgKnNlbGYsIGNoYXIgKm5hbWUsIFB5T2JqZWN0ICp2KQorRXhhbXBsZV9zZXRhdHRyKEV4YW1wbGVPYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKm5hbWUsIFB5T2JqZWN0ICp2KQogewogICAgIGlmIChzZWxmLT54X2F0dHIgPT0gTlVMTCkgewogICAgICAgICBzZWxmLT54X2F0dHIgPSBQeURpY3RfTmV3KCk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL190a2ludGVyLmMgYi9Nb2R1bGVzL190a2ludGVyLmMKaW5kZXggMTYzYzg3Zi4uM2U5NmFhMCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fdGtpbnRlci5jCisrKyBiL01vZHVsZXMvX3RraW50ZXIuYwpAQCAtNDYyLDcgKzQ2Miw3IEBACiAgICAgICAgICAgICAgICAgdiA9IE5VTEw7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeVR1cGxlX1NldEl0ZW0odiwgaSwgdyk7CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHYsIGksIHcpOwogICAgICAgICB9CiAgICAgfQogICAgIFRjbF9GcmVlKEZSRUVDQVNUIGFyZ3YpOwpAQCAtNDgwLDEzICs0ODAsMTMgQEAKICAgICAgICAgUHlfc3NpemVfdCBpLCBzaXplOwogICAgICAgICBQeU9iamVjdCAqZWxlbSwgKm5ld2VsZW0sICpyZXN1bHQ7CiAKLSAgICAgICAgc2l6ZSA9IFB5VHVwbGVfU2l6ZShhcmcpOworICAgICAgICBzaXplID0gUHlUdXBsZV9HRVRfU0laRShhcmcpOwogICAgICAgICByZXN1bHQgPSBOVUxMOwogICAgICAgICAvKiBSZWN1cnNpdmVseSBpbnZva2UgU3BsaXRPYmogZm9yIGFsbCB0dXBsZSBpdGVtcy4KICAgICAgICAgICAgSWYgdGhpcyBkb2VzIG5vdCByZXR1cm4gYSBuZXcgb2JqZWN0LCBubyBhY3Rpb24gaXMKICAgICAgICAgICAgbmVlZGVkLiAqLwogICAgICAgICBmb3IoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgICAgIGVsZW0gPSBQeVR1cGxlX0dldEl0ZW0oYXJnLCBpKTsKKyAgICAgICAgICAgIGVsZW0gPSBQeVR1cGxlX0dFVF9JVEVNKGFyZywgaSk7CiAgICAgICAgICAgICBuZXdlbGVtID0gU3BsaXRPYmooZWxlbSk7CiAgICAgICAgICAgICBpZiAoIW5ld2VsZW0pIHsKICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHJlc3VsdCk7CkBAIC01MDIsMTIgKzUwMiwxMiBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICBmb3IoayA9IDA7IGsgPCBpOyBrKyspIHsKLSAgICAgICAgICAgICAgICAgICAgZWxlbSA9IFB5VHVwbGVfR2V0SXRlbShhcmcsIGspOworICAgICAgICAgICAgICAgICAgICBlbGVtID0gUHlUdXBsZV9HRVRfSVRFTShhcmcsIGspOwogICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoZWxlbSk7Ci0gICAgICAgICAgICAgICAgICAgIFB5VHVwbGVfU2V0SXRlbShyZXN1bHQsIGssIGVsZW0pOworICAgICAgICAgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHJlc3VsdCwgaywgZWxlbSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlUdXBsZV9TZXRJdGVtKHJlc3VsdCwgaSwgbmV3ZWxlbSk7CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHJlc3VsdCwgaSwgbmV3ZWxlbSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHJlc3VsdCkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC01MjksNyArNTI5LDcgQEAKICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeVR1cGxlX1NldEl0ZW0ocmVzdWx0LCBpLCBuZXdlbGVtKTsKKyAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0ocmVzdWx0LCBpLCBuZXdlbGVtKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTU1MSw3ICs1NTEsNyBAQAogICAgIGVsc2UgaWYgKFB5Qnl0ZXNfQ2hlY2soYXJnKSkgewogICAgICAgICBpbnQgYXJnYzsKICAgICAgICAgY29uc3QgY2hhciAqKmFyZ3Y7Ci0gICAgICAgIGNoYXIgKmxpc3QgPSBQeUJ5dGVzX0FzU3RyaW5nKGFyZyk7CisgICAgICAgIGNoYXIgKmxpc3QgPSBQeUJ5dGVzX0FTX1NUUklORyhhcmcpOwogCiAgICAgICAgIGlmIChUY2xfU3BsaXRMaXN0KChUY2xfSW50ZXJwICopTlVMTCwgbGlzdCwgJmFyZ2MsICZhcmd2KSAhPSBUQ0xfT0spIHsKICAgICAgICAgICAgIFB5X0lOQ1JFRihhcmcpOwpAQCAtNTU5LDcgKzU1OSw3IEBACiAgICAgICAgIH0KICAgICAgICAgVGNsX0ZyZWUoRlJFRUNBU1QgYXJndik7CiAgICAgICAgIGlmIChhcmdjID4gMSkKLSAgICAgICAgICAgIHJldHVybiBTcGxpdChQeUJ5dGVzX0FzU3RyaW5nKGFyZykpOworICAgICAgICAgICAgcmV0dXJuIFNwbGl0KFB5Qnl0ZXNfQVNfU1RSSU5HKGFyZykpOwogICAgICAgICAvKiBGYWxsIHRocm91Z2gsIHJldHVybmluZyBhcmcuICovCiAgICAgfQogICAgIFB5X0lOQ1JFRihhcmcpOwpAQCAtNzU4LDcgKzc1OCw3IEBACiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIFRjbF9TZXRWYXIodi0+aW50ZXJwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgInRjbF9saWJyYXJ5IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQXNTdHJpbmcodXRmOF9wYXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHV0ZjhfcGF0aCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQ0xfR0xPQkFMX09OTFkpOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih1dGY4X3BhdGgpOwogICAgICAgICAgICAgfQpAQCAtODQxLDcgKzg0MSw3IEBACiAgICAgUHlfREVDUkVGKHRwKTsKIH0KIAotc3RhdGljIGNoYXIqCitzdGF0aWMgY29uc3QgY2hhciAqCiBQeVRjbE9iamVjdF9UY2xTdHJpbmcoUHlPYmplY3QgKnNlbGYpCiB7CiAgICAgcmV0dXJuIFRjbF9HZXRTdHJpbmcoKChQeVRjbE9iamVjdCopc2VsZiktPnZhbHVlKTsKQEAgLTk3Niw3ICs5NzYsNyBAQAogfTsKIAogCi0jaWYgUFlfU0laRV9NQVggPiBJTlRfTUFYCisjaWYgU0laRV9NQVggPiBJTlRfTUFYCiAjZGVmaW5lIENIRUNLX1NUUklOR19MRU5HVEgocykgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGlmIChzICE9IE5VTEwgJiYgc3RybGVuKHMpID49IElOVF9NQVgpIHsgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgInN0cmluZyBpcyB0b28gbG9uZyIpOyBcCkBAIC0xMTgyLDEwICsxMTgyLDggQEAKIHsKICAgICAgICAgVGNsX1dpZGVJbnQgd2lkZVZhbHVlOwogICAgICAgICBpZiAoVGNsX0dldFdpZGVJbnRGcm9tT2JqKFRrYXBwX0ludGVycCh0a2FwcCksIHZhbHVlLCAmd2lkZVZhbHVlKSA9PSBUQ0xfT0spIHsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwogICAgICAgICAgICAgaWYgKHNpemVvZih3aWRlVmFsdWUpIDw9IFNJWkVPRl9MT05HX0xPTkcpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcod2lkZVZhbHVlKTsKLSNlbmRpZgogICAgICAgICAgICAgcmV0dXJuIF9QeUxvbmdfRnJvbUJ5dGVBcnJheSgodW5zaWduZWQgY2hhciAqKSh2b2lkICopJndpZGVWYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHdpZGVWYWx1ZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBZX0xJVFRMRV9FTkRJQU4sCkBAIC0xMzA2LDcgKzEzMDQsNyBAQAogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlUdXBsZV9TZXRJdGVtKHJlc3VsdCwgaSwgZWxlbSk7CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHJlc3VsdCwgaSwgZWxlbSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC0xNTE3LDggKzE1MTUsOCBAQAogICAgIGludCBmbGFncyA9IFRDTF9FVkFMX0RJUkVDVCB8IFRDTF9FVkFMX0dMT0JBTDsKIAogICAgIC8qIElmIGFyZ3MgaXMgYSBzaW5nbGUgdHVwbGUsIHJlcGxhY2Ugd2l0aCBjb250ZW50cyBvZiB0dXBsZSAqLwotICAgIGlmICgxID09IFB5VHVwbGVfU2l6ZShhcmdzKSl7Ci0gICAgICAgIFB5T2JqZWN0KiBpdGVtID0gUHlUdXBsZV9HZXRJdGVtKGFyZ3MsIDApOworICAgIGlmIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpID09IDEpIHsKKyAgICAgICAgUHlPYmplY3QgKml0ZW0gPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDApOwogICAgICAgICBpZiAoUHlUdXBsZV9DaGVjayhpdGVtKSkKICAgICAgICAgICAgIGFyZ3MgPSBpdGVtOwogICAgIH0KQEAgLTE3MjYsMTQgKzE3MjQsMTQgQEAKIHZhcm5hbWVfY29udmVydGVyKFB5T2JqZWN0ICppbiwgdm9pZCAqX291dCkKIHsKICAgICBjaGFyICpzOwotICAgIGNoYXIgKipvdXQgPSAoY2hhcioqKV9vdXQ7CisgICAgY29uc3QgY2hhciAqKm91dCA9IChjb25zdCBjaGFyKiopX291dDsKICAgICBpZiAoUHlCeXRlc19DaGVjayhpbikpIHsKLSAgICAgICAgaWYgKFB5Qnl0ZXNfU2l6ZShpbikgPiBJTlRfTUFYKSB7CisgICAgICAgIGlmIChQeUJ5dGVzX0dFVF9TSVpFKGluKSA+IElOVF9NQVgpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAiYnl0ZXMgb2JqZWN0IGlzIHRvbyBsb25nIik7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQotICAgICAgICBzID0gUHlCeXRlc19Bc1N0cmluZyhpbik7Ci0gICAgICAgIGlmIChzdHJsZW4ocykgIT0gKHNpemVfdClQeUJ5dGVzX1NpemUoaW4pKSB7CisgICAgICAgIHMgPSBQeUJ5dGVzX0FTX1NUUklORyhpbik7CisgICAgICAgIGlmIChzdHJsZW4ocykgIT0gKHNpemVfdClQeUJ5dGVzX0dFVF9TSVpFKGluKSkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJlbWJlZGRlZCBudWxsIGJ5dGUiKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CkBAIC0xODQ2LDcgKzE4NDQsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIFNldFZhcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIGludCBmbGFncykKIHsKLSAgICBjaGFyICpuYW1lMSwgKm5hbWUyOworICAgIGNvbnN0IGNoYXIgKm5hbWUxLCAqbmFtZTI7CiAgICAgUHlPYmplY3QgKm5ld1ZhbHVlOwogICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOwogICAgIFRjbF9PYmogKm5ld3ZhbCwgKm9rOwpAQCAtMTkxNSw3ICsxOTEzLDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBHZXRWYXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBpbnQgZmxhZ3MpCiB7Ci0gICAgY2hhciAqbmFtZTEsICpuYW1lMj1OVUxMOworICAgIGNvbnN0IGNoYXIgKm5hbWUxLCAqbmFtZTI9TlVMTDsKICAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKICAgICBUY2xfT2JqICp0cmVzOwogCkBAIC0yMjc0LDEwICsyMjcyLDExIEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IG9iamM7IGkrKykgewogICAgICAgICAgICAgUHlPYmplY3QgKnMgPSBGcm9tT2JqKChQeU9iamVjdCopc2VsZiwgb2JqdltpXSk7Ci0gICAgICAgICAgICBpZiAoIXMgfHwgUHlUdXBsZV9TZXRJdGVtKHYsIGksIHMpKSB7CisgICAgICAgICAgICBpZiAoIXMpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHYsIGksIHMpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiB2OwogICAgIH0KQEAgLTIzMDQsMTEgKzIzMDMsMTIgQEAKIAogICAgIGZvciAoaSA9IDA7IGkgPCBhcmdjOyBpKyspIHsKICAgICAgICAgUHlPYmplY3QgKnMgPSB1bmljb2RlRnJvbVRjbFN0cmluZyhhcmd2W2ldKTsKLSAgICAgICAgaWYgKCFzIHx8IFB5VHVwbGVfU2V0SXRlbSh2LCBpLCBzKSkgeworICAgICAgICBpZiAoIXMpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKICAgICAgICAgICAgIHYgPSBOVUxMOwogICAgICAgICAgICAgZ290byBmaW5hbGx5OwogICAgICAgICB9CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0odiwgaSwgcyk7CiAgICAgfQogCiAgIGZpbmFsbHk6CkBAIC0yMzQ5LDEwICsyMzQ5LDExIEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IG9iamM7IGkrKykgewogICAgICAgICAgICAgUHlPYmplY3QgKnMgPSBGcm9tT2JqKChQeU9iamVjdCopc2VsZiwgb2JqdltpXSk7Ci0gICAgICAgICAgICBpZiAoIXMgfHwgUHlUdXBsZV9TZXRJdGVtKHYsIGksIHMpKSB7CisgICAgICAgICAgICBpZiAoIXMpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHYsIGksIHMpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiB2OwogICAgIH0KQEAgLTI0MTAsMTAgKzI0MTEsMTEgQEAKIAogICAgIGZvciAoaSA9IDA7IGkgPCAoYXJnYyAtIDEpOyBpKyspIHsKICAgICAgICAgUHlPYmplY3QgKnMgPSB1bmljb2RlRnJvbVRjbFN0cmluZyhhcmd2W2kgKyAxXSk7Ci0gICAgICAgIGlmICghcyB8fCBQeVR1cGxlX1NldEl0ZW0oYXJnLCBpLCBzKSkgeworICAgICAgICBpZiAoIXMpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihhcmcpOwogICAgICAgICAgICAgcmV0dXJuIFB5dGhvbkNtZF9FcnJvcihpbnRlcnApOwogICAgICAgICB9CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oYXJnLCBpLCBzKTsKICAgICB9CiAgICAgcmVzID0gUHlFdmFsX0NhbGxPYmplY3QoZnVuYywgYXJnKTsKICAgICBQeV9ERUNSRUYoYXJnKTsKQEAgLTI0ODUsNyArMjQ4Nyw2IEBACiAvKltjbGluaWMgaW5wdXRdCiBfdGtpbnRlci50a2FwcC5jcmVhdGVjb21tYW5kCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlRrYXBwT2JqZWN0ICoiKQogICAgIG5hbWU6IHN0cgogICAgIGZ1bmM6IG9iamVjdAogICAgIC8KQEAgLTI0OTUsNyArMjQ5Niw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogX3RraW50ZXJfdGthcHBfY3JlYXRlY29tbWFuZF9pbXBsKFRrYXBwT2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmdW5jKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJhMWM3OWE0ZWUyYWY0MTAgaW5wdXQ9MmJjMmMwNDZhMDkxNDIzNF0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJhMWM3OWE0ZWUyYWY0MTAgaW5wdXQ9MjU1Nzg1Y2I3MGVkYzZhMF0qLwogewogICAgIFB5dGhvbkNtZF9DbGllbnREYXRhICpkYXRhOwogICAgIGludCBlcnI7CkBAIC0yNTYxLDcgKzI1NjIsNiBAQAogLypbY2xpbmljIGlucHV0XQogX3RraW50ZXIudGthcHAuZGVsZXRlY29tbWFuZAogCi0gICAgc2VsZjogc2VsZih0eXBlPSJUa2FwcE9iamVjdCAqIikKICAgICBuYW1lOiBzdHIKICAgICAvCiAKQEAgLTI1NjksNyArMjU2OSw3IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfdGtpbnRlcl90a2FwcF9kZWxldGVjb21tYW5kX2ltcGwoVGthcHBPYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKm5hbWUpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTY3ZThjYjU4NDVlMGQyZCBpbnB1dD1iNjMwNjQ2OGYxMGIyMTljXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTY3ZThjYjU4NDVlMGQyZCBpbnB1dD01M2U5OTUyZWFlMWY4NWY1XSovCiB7CiAgICAgaW50IGVycjsKIApAQCAtMjc2MiwxMyArMjc2MiwxMSBAQAogLypbY2xpbmljIGlucHV0XQogX3RraW50ZXIudGt0aW1lcnRva2VuLmRlbGV0ZXRpbWVyaGFuZGxlcgogCi0gICAgc2VsZjogc2VsZih0eXBlPSJUa3R0T2JqZWN0ICoiKQotCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfdGtpbnRlcl90a3RpbWVydG9rZW5fZGVsZXRldGltZXJoYW5kbGVyX2ltcGwoVGt0dE9iamVjdCAqc2VsZikKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iZDdmZTE3ZjMyOGNmYTU1IGlucHV0PTI1YmE1ZGQ1OTRlNTIwODRdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iZDdmZTE3ZjMyOGNmYTU1IGlucHV0PTQwYmQwNzBmZjg1ZjVjZjNdKi8KIHsKICAgICBUa3R0T2JqZWN0ICp2ID0gc2VsZjsKICAgICBQeU9iamVjdCAqZnVuYyA9IHYtPmZ1bmM7CkBAIC0yODk0LDcgKzI4OTIsNiBAQAogLypbY2xpbmljIGlucHV0XQogX3RraW50ZXIudGthcHAubWFpbmxvb3AKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iVGthcHBPYmplY3QgKiIpCiAgICAgdGhyZXNob2xkOiBpbnQgPSAwCiAgICAgLwogCkBAIC0yOTAyLDcgKzI4OTksNyBAQAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3RraW50ZXJfdGthcHBfbWFpbmxvb3BfaW1wbChUa2FwcE9iamVjdCAqc2VsZiwgaW50IHRocmVzaG9sZCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wYmE4ZWFiYmU1Nzg0MWIwIGlucHV0PWFkNTdjOWMxZGQyYjk0NzBdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wYmE4ZWFiYmU1Nzg0MWIwIGlucHV0PTAzNmJjZGNmMDNkNWVjYTBdKi8KIHsKICNpZmRlZiBXSVRIX1RIUkVBRAogICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR2V0KCk7CkBAIC0zMDcyLDEzICszMDY5LDExIEBACiAvKltjbGluaWMgaW5wdXRdCiBfdGtpbnRlci50a2FwcC53aWxsZGlzcGF0Y2gKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iVGthcHBPYmplY3QgKiIpCi0KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKIF90a2ludGVyX3RrYXBwX3dpbGxkaXNwYXRjaF9pbXBsKFRrYXBwT2JqZWN0ICpzZWxmKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTBlM2Y0NmQyNDQ2NDIxNTUgaW5wdXQ9MjYzMDY5OTc2NzgwODk3MF0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTBlM2Y0NmQyNDQ2NDIxNTUgaW5wdXQ9ZDg4ZjU5NzA4NDNkNmRhYl0qLwogewogICAgIHNlbGYtPmRpc3BhdGNoaW5nID0gMTsKIApAQCAtMzYyOSwxNCArMzYyNCwxNCBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgVGNsX0ZpbmRFeGVjdXRhYmxlKFB5Qnl0ZXNfQXNTdHJpbmcoY2V4ZSkpOworICAgICAgICAgICAgVGNsX0ZpbmRFeGVjdXRhYmxlKFB5Qnl0ZXNfQVNfU1RSSU5HKGNleGUpKTsKIAogICAgICAgICAgICAgaWYgKHNldF92YXIpIHsKICAgICAgICAgICAgICAgICBTZXRFbnZpcm9ubWVudFZhcmlhYmxlVyhMIlRDTF9MSUJSQVJZIiwgTlVMTCk7CiAgICAgICAgICAgICAgICAgUHlNZW1fRnJlZSh3Y3NfcGF0aCk7CiAgICAgICAgICAgICB9CiAjZWxzZQotICAgICAgICAgICAgVGNsX0ZpbmRFeGVjdXRhYmxlKFB5Qnl0ZXNfQXNTdHJpbmcoY2V4ZSkpOworICAgICAgICAgICAgVGNsX0ZpbmRFeGVjdXRhYmxlKFB5Qnl0ZXNfQVNfU1RSSU5HKGNleGUpKTsKICNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAgICAgICAgIH0KICAgICAgICAgUHlfWERFQ1JFRihjZXhlKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3RyYWNlbWFsbG9jLmMgYi9Nb2R1bGVzL190cmFjZW1hbGxvYy5jCmluZGV4IDY1YmY3YTMuLmVjOGJkOTYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3RyYWNlbWFsbG9jLmMKKysrIGIvTW9kdWxlcy9fdHJhY2VtYWxsb2MuYwpAQCAtMzksNyArMzksMTEgQEAKICAgICAvKiBsaW1pdCBvZiB0aGUgbnVtYmVyIG9mIGZyYW1lcyBpbiBhIHRyYWNlYmFjaywgMSBieSBkZWZhdWx0LgogICAgICAgIFZhcmlhYmxlIHByb3RlY3RlZCBieSB0aGUgR0lMLiAqLwogICAgIGludCBtYXhfbmZyYW1lOwotfSB0cmFjZW1hbGxvY19jb25maWcgPSB7VFJBQ0VNQUxMT0NfTk9UX0lOSVRJQUxJWkVELCAwLCAxfTsKKworICAgIC8qIHVzZSBkb21haW4gaW4gdHJhY2Uga2V5PworICAgICAgIFZhcmlhYmxlIHByb3RlY3RlZCBieSB0aGUgR0lMLiAqLworICAgIGludCB1c2VfZG9tYWluOworfSB0cmFjZW1hbGxvY19jb25maWcgPSB7VFJBQ0VNQUxMT0NfTk9UX0lOSVRJQUxJWkVELCAwLCAxLCAwfTsKIAogI2lmIGRlZmluZWQoVFJBQ0VfUkFXX01BTExPQykgJiYgZGVmaW5lZChXSVRIX1RIUkVBRCkKIC8qIFRoaXMgbG9jayBpcyBuZWVkZWQgYmVjYXVzZSB0cmFjZW1hbGxvY19mcmVlKCkgaXMgY2FsbGVkIHdpdGhvdXQKQEAgLTU0LDEwICs1OCwyMSBAQAogIyAgZGVmaW5lIFRBQkxFU19VTkxPQ0soKQogI2VuZGlmCiAKKworI2RlZmluZSBERUZBVUxUX0RPTUFJTiAwCisKKy8qIFBhY2sgdGhlIGZyYW1lX3Qgc3RydWN0dXJlIHRvIHJlZHVjZSB0aGUgbWVtb3J5IGZvb3RwcmludC4gKi8KK3R5cGVkZWYgc3RydWN0CisjaWZkZWYgX19HTlVDX18KK19fYXR0cmlidXRlX18oKHBhY2tlZCkpCisjZW5kaWYKK3sKKyAgICB1aW50cHRyX3QgcHRyOworICAgIF9QeVRyYWNlTWFsbG9jX2RvbWFpbl90IGRvbWFpbjsKK30gcG9pbnRlcl90OworCiAvKiBQYWNrIHRoZSBmcmFtZV90IHN0cnVjdHVyZSB0byByZWR1Y2UgdGhlIG1lbW9yeSBmb290cHJpbnQgb24gNjQtYml0Ci0gICBhcmNoaXRlY3R1cmVzOiAxMiBieXRlcyBpbnN0ZWFkIG9mIDE2LiBUaGlzIG9wdGltaXphdGlvbiBtaWdodCBwcm9kdWNlCi0gICBTSUdCVVMgb24gYXJjaGl0ZWN0dXJlcyBub3Qgc3VwcG9ydGluZyB1bmFsaWduZWQgbWVtb3J5IGFjY2Vzc2VzICg2NC1iaXQKLSAgIE1JUFMgQ1BVPyk6IG9uIHN1Y2ggYXJjaGl0ZWN0dXJlLCB0aGUgc3RydWN0dXJlIG11c3Qgbm90IGJlIHBhY2tlZC4gKi8KKyAgIGFyY2hpdGVjdHVyZXM6IDEyIGJ5dGVzIGluc3RlYWQgb2YgMTYuICovCiB0eXBlZGVmIHN0cnVjdAogI2lmZGVmIF9fR05VQ19fCiBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKQpAQCAtNjUsMTAgKzgwLDEzIEBACiBfZGVjbHNwZWMoYWxpZ24oNCkpCiAjZW5kaWYKIHsKKyAgICAvKiBmaWxlbmFtZSBjYW5ub3QgYmUgTlVMTDogIjx1bmtub3duPiIgaXMgdXNlZCBpZiB0aGUgUHl0aG9uIGZyYW1lCisgICAgICAgZmlsZW5hbWUgaXMgTlVMTCAqLwogICAgIFB5T2JqZWN0ICpmaWxlbmFtZTsKICAgICB1bnNpZ25lZCBpbnQgbGluZW5vOwogfSBmcmFtZV90OwogCisKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeV91aGFzaF90IGhhc2g7CiAgICAgaW50IG5mcmFtZTsKQEAgLTgxLDYgKzk5LDcgQEAKICNkZWZpbmUgTUFYX05GUkFNRSBcCiAgICAgICAgICgoSU5UX01BWCAtIChpbnQpc2l6ZW9mKHRyYWNlYmFja190KSkgLyAoaW50KXNpemVvZihmcmFtZV90KSArIDEpCiAKKwogc3RhdGljIFB5T2JqZWN0ICp1bmtub3duX2ZpbGVuYW1lID0gTlVMTDsKIHN0YXRpYyB0cmFjZWJhY2tfdCB0cmFjZW1hbGxvY19lbXB0eV90cmFjZWJhY2s7CiAKQEAgLTkzLDYgKzExMiw3IEBACiAgICAgdHJhY2ViYWNrX3QgKnRyYWNlYmFjazsKIH0gdHJhY2VfdDsKIAorCiAvKiBTaXplIGluIGJ5dGVzIG9mIGN1cnJlbnRseSB0cmFjZWQgbWVtb3J5LgogICAgUHJvdGVjdGVkIGJ5IFRBQkxFU19MT0NLKCkuICovCiBzdGF0aWMgc2l6ZV90IHRyYWNlbWFsbG9jX3RyYWNlZF9tZW1vcnkgPSAwOwpAQCAtMTE5LDYgKzEzOSw3IEBACiAgICBQcm90ZWN0ZWQgYnkgVEFCTEVTX0xPQ0soKS4gKi8KIHN0YXRpYyBfUHlfaGFzaHRhYmxlX3QgKnRyYWNlbWFsbG9jX3RyYWNlcyA9IE5VTEw7CiAKKwogI2lmZGVmIFRSQUNFX0RFQlVHCiBzdGF0aWMgdm9pZAogdHJhY2VtYWxsb2NfZXJyb3IoY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCkBAIC0xMzMsNiArMTU0LDcgQEAKIH0KICNlbmRpZgogCisKICNpZiBkZWZpbmVkKFdJVEhfVEhSRUFEKSAmJiBkZWZpbmVkKFRSQUNFX1JBV19NQUxMT0MpCiAjZGVmaW5lIFJFRU5UUkFOVF9USFJFQURMT0NBTAogCkBAIC0xNDMsNyArMTY1LDcgQEAKICMgIGVycm9yICJuZWVkIG5hdGl2ZSB0aHJlYWQgbG9jYWwgc3RvcmFnZSAoVExTKSIKICNlbmRpZgogCi1zdGF0aWMgaW50IHRyYWNlbWFsbG9jX3JlZW50cmFudF9rZXk7CitzdGF0aWMgaW50IHRyYWNlbWFsbG9jX3JlZW50cmFudF9rZXkgPSAtMTsKIAogLyogQW55IG5vbi1OVUxMIHBvaW50ZXIgY2FuIGJlIHVzZWQgKi8KICNkZWZpbmUgUkVFTlRSQU5UIFB5X1RydWUKQEAgLTE1MSw3ICsxNzMsMTAgQEAKIHN0YXRpYyBpbnQKIGdldF9yZWVudHJhbnQodm9pZCkKIHsKLSAgICB2b2lkICpwdHIgPSBQeVRocmVhZF9nZXRfa2V5X3ZhbHVlKHRyYWNlbWFsbG9jX3JlZW50cmFudF9rZXkpOworICAgIHZvaWQgKnB0cjsKKworICAgIGFzc2VydCh0cmFjZW1hbGxvY19yZWVudHJhbnRfa2V5ICE9IC0xKTsKKyAgICBwdHIgPSBQeVRocmVhZF9nZXRfa2V5X3ZhbHVlKHRyYWNlbWFsbG9jX3JlZW50cmFudF9rZXkpOwogICAgIGlmIChwdHIgIT0gTlVMTCkgewogICAgICAgICBhc3NlcnQocHRyID09IFJFRU5UUkFOVCk7CiAgICAgICAgIHJldHVybiAxOwpAQCAtMTY0LDEyICsxODksMTQgQEAKIHNldF9yZWVudHJhbnQoaW50IHJlZW50cmFudCkKIHsKICAgICBhc3NlcnQocmVlbnRyYW50ID09IDAgfHwgcmVlbnRyYW50ID09IDEpOworICAgIGFzc2VydCh0cmFjZW1hbGxvY19yZWVudHJhbnRfa2V5ICE9IC0xKTsKKwogICAgIGlmIChyZWVudHJhbnQpIHsKLSAgICAgICAgYXNzZXJ0KFB5VGhyZWFkX2dldF9rZXlfdmFsdWUodHJhY2VtYWxsb2NfcmVlbnRyYW50X2tleSkgPT0gTlVMTCk7CisgICAgICAgIGFzc2VydCghZ2V0X3JlZW50cmFudCgpKTsKICAgICAgICAgUHlUaHJlYWRfc2V0X2tleV92YWx1ZSh0cmFjZW1hbGxvY19yZWVudHJhbnRfa2V5LCBSRUVOVFJBTlQpOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgYXNzZXJ0KFB5VGhyZWFkX2dldF9rZXlfdmFsdWUodHJhY2VtYWxsb2NfcmVlbnRyYW50X2tleSkgPT0gUkVFTlRSQU5UKTsKKyAgICAgICAgYXNzZXJ0KGdldF9yZWVudHJhbnQoKSk7CiAgICAgICAgIFB5VGhyZWFkX3NldF9rZXlfdmFsdWUodHJhY2VtYWxsb2NfcmVlbnRyYW50X2tleSwgTlVMTCk7CiAgICAgfQogfQpAQCAtMTk0LDI3ICsyMjEsNzUgQEAKIH0KICNlbmRpZgogCi1zdGF0aWMgaW50Ci1oYXNodGFibGVfY29tcGFyZV91bmljb2RlKGNvbnN0IHZvaWQgKmtleSwgY29uc3QgX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeSkKKworc3RhdGljIFB5X3VoYXNoX3QKK2hhc2h0YWJsZV9oYXNoX3B5b2JqZWN0KF9QeV9oYXNodGFibGVfdCAqaHQsIGNvbnN0IHZvaWQgKnBrZXkpCiB7Ci0gICAgaWYgKGtleSAhPSBOVUxMICYmIGVudHJ5LT5rZXkgIT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIChQeVVuaWNvZGVfQ29tcGFyZSgoUHlPYmplY3QgKilrZXksIChQeU9iamVjdCAqKWVudHJ5LT5rZXkpID09IDApOwotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIGtleSA9PSBlbnRyeS0+a2V5OworICAgIFB5T2JqZWN0ICpvYmo7CisKKyAgICBfUHlfSEFTSFRBQkxFX1JFQURfS0VZKGh0LCBwa2V5LCBvYmopOworICAgIHJldHVybiBQeU9iamVjdF9IYXNoKG9iaik7CiB9CiAKLXN0YXRpYyBfUHlfaGFzaHRhYmxlX2FsbG9jYXRvcl90IGhhc2h0YWJsZV9hbGxvYyA9IHttYWxsb2MsIGZyZWV9OworCitzdGF0aWMgaW50CitoYXNodGFibGVfY29tcGFyZV91bmljb2RlKF9QeV9oYXNodGFibGVfdCAqaHQsIGNvbnN0IHZvaWQgKnBrZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnkpCit7CisgICAgUHlPYmplY3QgKmtleTEsICprZXkyOworCisgICAgX1B5X0hBU0hUQUJMRV9SRUFEX0tFWShodCwgcGtleSwga2V5MSk7CisgICAgX1B5X0hBU0hUQUJMRV9FTlRSWV9SRUFEX0tFWShodCwgZW50cnksIGtleTIpOworCisgICAgaWYgKGtleTEgIT0gTlVMTCAmJiBrZXkyICE9IE5VTEwpCisgICAgICAgIHJldHVybiAoUHlVbmljb2RlX0NvbXBhcmUoa2V5MSwga2V5MikgPT0gMCk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4ga2V5MSA9PSBrZXkyOworfQorCisKK3N0YXRpYyBQeV91aGFzaF90CitoYXNodGFibGVfaGFzaF9wb2ludGVyX3QoX1B5X2hhc2h0YWJsZV90ICpodCwgY29uc3Qgdm9pZCAqcGtleSkKK3sKKyAgICBwb2ludGVyX3QgcHRyOworICAgIFB5X3VoYXNoX3QgaGFzaDsKKworICAgIF9QeV9IQVNIVEFCTEVfUkVBRF9LRVkoaHQsIHBrZXksIHB0cik7CisKKyAgICBoYXNoID0gKFB5X3VoYXNoX3QpX1B5X0hhc2hQb2ludGVyKCh2b2lkKilwdHIucHRyKTsKKyAgICBoYXNoIF49IHB0ci5kb21haW47CisgICAgcmV0dXJuIGhhc2g7Cit9CisKKworc3RhdGljIGludAoraGFzaHRhYmxlX2NvbXBhcmVfcG9pbnRlcl90KF9QeV9oYXNodGFibGVfdCAqaHQsIGNvbnN0IHZvaWQgKnBrZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeSkKK3sKKyAgICBwb2ludGVyX3QgcHRyMSwgcHRyMjsKKworICAgIF9QeV9IQVNIVEFCTEVfUkVBRF9LRVkoaHQsIHBrZXksIHB0cjEpOworICAgIF9QeV9IQVNIVEFCTEVfRU5UUllfUkVBRF9LRVkoaHQsIGVudHJ5LCBwdHIyKTsKKworICAgIC8qIGNvbXBhcmUgcG9pbnRlciBiZWZvcmUgZG9tYWluLCBiZWNhdXNlIHBvaW50ZXIgaXMgbW9yZSBsaWtlbHkgdG8gYmUKKyAgICAgICBkaWZmZXJlbnQgKi8KKyAgICByZXR1cm4gKHB0cjEucHRyID09IHB0cjIucHRyICYmIHB0cjEuZG9tYWluID09IHB0cjIuZG9tYWluKTsKKworfQorCiAKIHN0YXRpYyBfUHlfaGFzaHRhYmxlX3QgKgotaGFzaHRhYmxlX25ldyhzaXplX3QgZGF0YV9zaXplLAoraGFzaHRhYmxlX25ldyhzaXplX3Qga2V5X3NpemUsIHNpemVfdCBkYXRhX3NpemUsCiAgICAgICAgICAgICAgIF9QeV9oYXNodGFibGVfaGFzaF9mdW5jIGhhc2hfZnVuYywKICAgICAgICAgICAgICAgX1B5X2hhc2h0YWJsZV9jb21wYXJlX2Z1bmMgY29tcGFyZV9mdW5jKQogewotICAgIHJldHVybiBfUHlfaGFzaHRhYmxlX25ld19mdWxsKGRhdGFfc2l6ZSwgMCwKKyAgICBfUHlfaGFzaHRhYmxlX2FsbG9jYXRvcl90IGhhc2h0YWJsZV9hbGxvYyA9IHttYWxsb2MsIGZyZWV9OworICAgIHJldHVybiBfUHlfaGFzaHRhYmxlX25ld19mdWxsKGtleV9zaXplLCBkYXRhX3NpemUsIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaF9mdW5jLCBjb21wYXJlX2Z1bmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwgTlVMTCwgJmhhc2h0YWJsZV9hbGxvYyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhhc2h0YWJsZV9hbGxvYyk7CiB9CiAKKwogc3RhdGljIHZvaWQqCiByYXdfbWFsbG9jKHNpemVfdCBzaXplKQogewpAQCAtMjI3LDIxICszMDIsMjggQEAKICAgICBhbGxvY2F0b3JzLnJhdy5mcmVlKGFsbG9jYXRvcnMucmF3LmN0eCwgcHRyKTsKIH0KIAorCiBzdGF0aWMgUHlfdWhhc2hfdAotaGFzaHRhYmxlX2hhc2hfdHJhY2ViYWNrKGNvbnN0IHZvaWQgKmtleSkKK2hhc2h0YWJsZV9oYXNoX3RyYWNlYmFjayhfUHlfaGFzaHRhYmxlX3QgKmh0LCBjb25zdCB2b2lkICpwa2V5KQogewotICAgIGNvbnN0IHRyYWNlYmFja190ICp0cmFjZWJhY2sgPSBrZXk7CisgICAgdHJhY2ViYWNrX3QgKnRyYWNlYmFjazsKKworICAgIF9QeV9IQVNIVEFCTEVfUkVBRF9LRVkoaHQsIHBrZXksIHRyYWNlYmFjayk7CiAgICAgcmV0dXJuIHRyYWNlYmFjay0+aGFzaDsKIH0KIAorCiBzdGF0aWMgaW50Ci1oYXNodGFibGVfY29tcGFyZV90cmFjZWJhY2soY29uc3QgdHJhY2ViYWNrX3QgKnRyYWNlYmFjazEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgX1B5X2hhc2h0YWJsZV9lbnRyeV90ICpoZSkKK2hhc2h0YWJsZV9jb21wYXJlX3RyYWNlYmFjayhfUHlfaGFzaHRhYmxlX3QgKmh0LCBjb25zdCB2b2lkICpwa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnkpCiB7Ci0gICAgY29uc3QgdHJhY2ViYWNrX3QgKnRyYWNlYmFjazIgPSBoZS0+a2V5OworICAgIHRyYWNlYmFja190ICp0cmFjZWJhY2sxLCAqdHJhY2ViYWNrMjsKICAgICBjb25zdCBmcmFtZV90ICpmcmFtZTEsICpmcmFtZTI7CiAgICAgaW50IGk7CiAKKyAgICBfUHlfSEFTSFRBQkxFX1JFQURfS0VZKGh0LCBwa2V5LCB0cmFjZWJhY2sxKTsKKyAgICBfUHlfSEFTSFRBQkxFX0VOVFJZX1JFQURfS0VZKGh0LCBlbnRyeSwgdHJhY2ViYWNrMik7CisKICAgICBpZiAodHJhY2ViYWNrMS0+bmZyYW1lICE9IHRyYWNlYmFjazItPm5mcmFtZSkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTI2MCw2ICszNDIsNyBAQAogICAgIHJldHVybiAxOwogfQogCisKIHN0YXRpYyB2b2lkCiB0cmFjZW1hbGxvY19nZXRfZnJhbWUoUHlGcmFtZU9iamVjdCAqcHlmcmFtZSwgZnJhbWVfdCAqZnJhbWUpCiB7CkBAIC0zMTAsMTUgKzM5MywxNSBAQAogICAgIH0KIAogICAgIC8qIGludGVybiB0aGUgZmlsZW5hbWUgKi8KLSAgICBlbnRyeSA9IF9QeV9oYXNodGFibGVfZ2V0X2VudHJ5KHRyYWNlbWFsbG9jX2ZpbGVuYW1lcywgZmlsZW5hbWUpOworICAgIGVudHJ5ID0gX1B5X0hBU0hUQUJMRV9HRVRfRU5UUlkodHJhY2VtYWxsb2NfZmlsZW5hbWVzLCBmaWxlbmFtZSk7CiAgICAgaWYgKGVudHJ5ICE9IE5VTEwpIHsKLSAgICAgICAgZmlsZW5hbWUgPSAoUHlPYmplY3QgKillbnRyeS0+a2V5OworICAgICAgICBfUHlfSEFTSFRBQkxFX0VOVFJZX1JFQURfS0VZKHRyYWNlbWFsbG9jX2ZpbGVuYW1lcywgZW50cnksIGZpbGVuYW1lKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIC8qIHRyYWNlbWFsbG9jX2ZpbGVuYW1lcyBpcyByZXNwb25zaWJsZSB0byBrZWVwIGEgcmVmZXJlbmNlCiAgICAgICAgICAgIHRvIHRoZSBmaWxlbmFtZSAqLwogICAgICAgICBQeV9JTkNSRUYoZmlsZW5hbWUpOwotICAgICAgICBpZiAoX1B5X2hhc2h0YWJsZV9zZXQodHJhY2VtYWxsb2NfZmlsZW5hbWVzLCBmaWxlbmFtZSwgTlVMTCwgMCkgPCAwKSB7CisgICAgICAgIGlmIChfUHlfSEFTSFRBQkxFX1NFVF9OT0RBVEEodHJhY2VtYWxsb2NfZmlsZW5hbWVzLCBmaWxlbmFtZSkgPCAwKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoZmlsZW5hbWUpOwogI2lmZGVmIFRSQUNFX0RFQlVHCiAgICAgICAgICAgICB0cmFjZW1hbGxvY19lcnJvcigiZmFpbGVkIHRvIGludGVybiB0aGUgZmlsZW5hbWUiKTsKQEAgLTMzMSw2ICs0MTQsNyBAQAogICAgIGZyYW1lLT5maWxlbmFtZSA9IGZpbGVuYW1lOwogfQogCisKIHN0YXRpYyBQeV91aGFzaF90CiB0cmFjZWJhY2tfaGFzaCh0cmFjZWJhY2tfdCAqdHJhY2ViYWNrKQogewpAQCAtMzU1LDYgKzQzOSw3IEBACiAgICAgcmV0dXJuIHg7CiB9CiAKKwogc3RhdGljIHZvaWQKIHRyYWNlYmFja19nZXRfZnJhbWVzKHRyYWNlYmFja190ICp0cmFjZWJhY2spCiB7CkBAIC0zODIsNiArNDY3LDcgQEAKICAgICB9CiB9CiAKKwogc3RhdGljIHRyYWNlYmFja190ICoKIHRyYWNlYmFja19uZXcodm9pZCkKIHsKQEAgLTQwMSw5ICs0ODcsOSBAQAogICAgIHRyYWNlYmFjay0+aGFzaCA9IHRyYWNlYmFja19oYXNoKHRyYWNlYmFjayk7CiAKICAgICAvKiBpbnRlcm4gdGhlIHRyYWNlYmFjayAqLwotICAgIGVudHJ5ID0gX1B5X2hhc2h0YWJsZV9nZXRfZW50cnkodHJhY2VtYWxsb2NfdHJhY2ViYWNrcywgdHJhY2ViYWNrKTsKKyAgICBlbnRyeSA9IF9QeV9IQVNIVEFCTEVfR0VUX0VOVFJZKHRyYWNlbWFsbG9jX3RyYWNlYmFja3MsIHRyYWNlYmFjayk7CiAgICAgaWYgKGVudHJ5ICE9IE5VTEwpIHsKLSAgICAgICAgdHJhY2ViYWNrID0gKHRyYWNlYmFja190ICopZW50cnktPmtleTsKKyAgICAgICAgX1B5X0hBU0hUQUJMRV9FTlRSWV9SRUFEX0tFWSh0cmFjZW1hbGxvY190cmFjZWJhY2tzLCBlbnRyeSwgdHJhY2ViYWNrKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIHRyYWNlYmFja190ICpjb3B5OwpAQCAtNDIwLDcgKzUwNiw3IEBACiAgICAgICAgIH0KICAgICAgICAgbWVtY3B5KGNvcHksIHRyYWNlYmFjaywgdHJhY2ViYWNrX3NpemUpOwogCi0gICAgICAgIGlmIChfUHlfaGFzaHRhYmxlX3NldCh0cmFjZW1hbGxvY190cmFjZWJhY2tzLCBjb3B5LCBOVUxMLCAwKSA8IDApIHsKKyAgICAgICAgaWYgKF9QeV9IQVNIVEFCTEVfU0VUX05PREFUQSh0cmFjZW1hbGxvY190cmFjZWJhY2tzLCBjb3B5KSA8IDApIHsKICAgICAgICAgICAgIHJhd19mcmVlKGNvcHkpOwogI2lmZGVmIFRSQUNFX0RFQlVHCiAgICAgICAgICAgICB0cmFjZW1hbGxvY19lcnJvcigiZmFpbGVkIHRvIGludGVybiB0aGUgdHJhY2ViYWNrOiBwdXRkYXRhIGZhaWxlZCIpOwpAQCAtNDMyLDUzICs1MTgsMTYxIEBACiAgICAgcmV0dXJuIHRyYWNlYmFjazsKIH0KIAorCiBzdGF0aWMgaW50Ci10cmFjZW1hbGxvY19hZGRfdHJhY2Uodm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSkKK3RyYWNlbWFsbG9jX3VzZV9kb21haW5fY2IoX1B5X2hhc2h0YWJsZV90ICpvbGRfdHJhY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeSwgdm9pZCAqdXNlcl9kYXRhKQogewotICAgIHRyYWNlYmFja190ICp0cmFjZWJhY2s7Ci0gICAgdHJhY2VfdCB0cmFjZTsKLSAgICBpbnQgcmVzOworICAgIHVpbnRwdHJfdCBwdHI7CisgICAgcG9pbnRlcl90IGtleTsKKyAgICBfUHlfaGFzaHRhYmxlX3QgKm5ld190cmFjZXMgPSAoX1B5X2hhc2h0YWJsZV90ICopdXNlcl9kYXRhOworICAgIGNvbnN0IHZvaWQgKnBkYXRhID0gX1B5X0hBU0hUQUJMRV9FTlRSWV9QREFUQShvbGRfdHJhY2VzLCBlbnRyeSk7CiAKLSNpZmRlZiBXSVRIX1RIUkVBRAotICAgIGFzc2VydChQeUdJTFN0YXRlX0NoZWNrKCkpOwotI2VuZGlmCisgICAgX1B5X0hBU0hUQUJMRV9FTlRSWV9SRUFEX0tFWShvbGRfdHJhY2VzLCBlbnRyeSwgcHRyKTsKKyAgICBrZXkucHRyID0gcHRyOworICAgIGtleS5kb21haW4gPSBERUZBVUxUX0RPTUFJTjsKIAotICAgIHRyYWNlYmFjayA9IHRyYWNlYmFja19uZXcoKTsKLSAgICBpZiAodHJhY2ViYWNrID09IE5VTEwpCisgICAgcmV0dXJuIF9QeV9oYXNodGFibGVfc2V0KG5ld190cmFjZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihrZXkpLCAma2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRfdHJhY2VzLT5kYXRhX3NpemUsIHBkYXRhKTsKK30KKworCisvKiBDb252ZXJ0IHRyYWNlbWFsbG9jX3RyYWNlcyBmcm9tIGNvbXBhY3Qga2V5ICh1aW50cHRyX3QpIHRvIHBvaW50ZXJfdCBrZXkuCisgKiBSZXR1cm4gMCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvci4gKi8KK3N0YXRpYyBpbnQKK3RyYWNlbWFsbG9jX3VzZV9kb21haW4odm9pZCkKK3sKKyAgICBfUHlfaGFzaHRhYmxlX3QgKm5ld190cmFjZXMgPSBOVUxMOworCisgICAgYXNzZXJ0KCF0cmFjZW1hbGxvY19jb25maWcudXNlX2RvbWFpbik7CisKKyAgICBuZXdfdHJhY2VzID0gaGFzaHRhYmxlX25ldyhzaXplb2YocG9pbnRlcl90KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodHJhY2VfdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaHRhYmxlX2hhc2hfcG9pbnRlcl90LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2h0YWJsZV9jb21wYXJlX3BvaW50ZXJfdCk7CisgICAgaWYgKG5ld190cmFjZXMgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICB0cmFjZS5zaXplID0gc2l6ZTsKLSAgICB0cmFjZS50cmFjZWJhY2sgPSB0cmFjZWJhY2s7Ci0KLSAgICByZXMgPSBfUHlfSEFTSFRBQkxFX1NFVCh0cmFjZW1hbGxvY190cmFjZXMsIHB0ciwgdHJhY2UpOwotICAgIGlmIChyZXMgPT0gMCkgewotICAgICAgICBhc3NlcnQodHJhY2VtYWxsb2NfdHJhY2VkX21lbW9yeSA8PSBQWV9TSVpFX01BWCAtIHNpemUpOwotICAgICAgICB0cmFjZW1hbGxvY190cmFjZWRfbWVtb3J5ICs9IHNpemU7Ci0gICAgICAgIGlmICh0cmFjZW1hbGxvY190cmFjZWRfbWVtb3J5ID4gdHJhY2VtYWxsb2NfcGVha190cmFjZWRfbWVtb3J5KQotICAgICAgICAgICAgdHJhY2VtYWxsb2NfcGVha190cmFjZWRfbWVtb3J5ID0gdHJhY2VtYWxsb2NfdHJhY2VkX21lbW9yeTsKICAgICB9CiAKLSAgICByZXR1cm4gcmVzOworICAgIGlmIChfUHlfaGFzaHRhYmxlX2ZvcmVhY2godHJhY2VtYWxsb2NfdHJhY2VzLCB0cmFjZW1hbGxvY191c2VfZG9tYWluX2NiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3RyYWNlcykgPCAwKQorICAgIHsKKyAgICAgICAgX1B5X2hhc2h0YWJsZV9kZXN0cm95KG5ld190cmFjZXMpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgX1B5X2hhc2h0YWJsZV9kZXN0cm95KHRyYWNlbWFsbG9jX3RyYWNlcyk7CisgICAgdHJhY2VtYWxsb2NfdHJhY2VzID0gbmV3X3RyYWNlczsKKworICAgIHRyYWNlbWFsbG9jX2NvbmZpZy51c2VfZG9tYWluID0gMTsKKworICAgIHJldHVybiAwOwogfQogCisKIHN0YXRpYyB2b2lkCi10cmFjZW1hbGxvY19yZW1vdmVfdHJhY2Uodm9pZCAqcHRyKQordHJhY2VtYWxsb2NfcmVtb3ZlX3RyYWNlKF9QeVRyYWNlTWFsbG9jX2RvbWFpbl90IGRvbWFpbiwgdWludHB0cl90IHB0cikKIHsKICAgICB0cmFjZV90IHRyYWNlOworICAgIGludCByZW1vdmVkOwogCi0gICAgaWYgKF9QeV9oYXNodGFibGVfcG9wKHRyYWNlbWFsbG9jX3RyYWNlcywgcHRyLCAmdHJhY2UsIHNpemVvZih0cmFjZSkpKSB7CisgICAgYXNzZXJ0KHRyYWNlbWFsbG9jX2NvbmZpZy50cmFjaW5nKTsKKworICAgIGlmICh0cmFjZW1hbGxvY19jb25maWcudXNlX2RvbWFpbikgeworICAgICAgICBwb2ludGVyX3Qga2V5ID0ge3B0ciwgZG9tYWlufTsKKyAgICAgICAgcmVtb3ZlZCA9IF9QeV9IQVNIVEFCTEVfUE9QKHRyYWNlbWFsbG9jX3RyYWNlcywga2V5LCB0cmFjZSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZW1vdmVkID0gX1B5X0hBU0hUQUJMRV9QT1AodHJhY2VtYWxsb2NfdHJhY2VzLCBwdHIsIHRyYWNlKTsKKyAgICB9CisgICAgaWYgKCFyZW1vdmVkKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhc3NlcnQodHJhY2VtYWxsb2NfdHJhY2VkX21lbW9yeSA+PSB0cmFjZS5zaXplKTsKKyAgICB0cmFjZW1hbGxvY190cmFjZWRfbWVtb3J5IC09IHRyYWNlLnNpemU7Cit9CisKKyNkZWZpbmUgUkVNT1ZFX1RSQUNFKHB0cikgXAorICAgICAgICAgICAgdHJhY2VtYWxsb2NfcmVtb3ZlX3RyYWNlKERFRkFVTFRfRE9NQUlOLCAodWludHB0cl90KShwdHIpKQorCisKK3N0YXRpYyBpbnQKK3RyYWNlbWFsbG9jX2FkZF90cmFjZShfUHlUcmFjZU1hbGxvY19kb21haW5fdCBkb21haW4sIHVpbnRwdHJfdCBwdHIsCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUpCit7CisgICAgcG9pbnRlcl90IGtleSA9IHtwdHIsIGRvbWFpbn07CisgICAgdHJhY2ViYWNrX3QgKnRyYWNlYmFjazsKKyAgICB0cmFjZV90IHRyYWNlOworICAgIF9QeV9oYXNodGFibGVfZW50cnlfdCogZW50cnk7CisgICAgaW50IHJlczsKKworICAgIGFzc2VydCh0cmFjZW1hbGxvY19jb25maWcudHJhY2luZyk7CisKKyAgICB0cmFjZWJhY2sgPSB0cmFjZWJhY2tfbmV3KCk7CisgICAgaWYgKHRyYWNlYmFjayA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoIXRyYWNlbWFsbG9jX2NvbmZpZy51c2VfZG9tYWluICYmIGRvbWFpbiAhPSBERUZBVUxUX0RPTUFJTikgeworICAgICAgICAvKiBmaXJzdCB0cmFjZSB1c2luZyBhIG5vbi16ZXJvIGRvbWFpbiB3aGVyZWFzIHRyYWNlcyB1c2UgY29tcGFjdAorICAgICAgICAgICAodWludHB0cl90KSBrZXlzOiBzd2l0Y2ggdG8gcG9pbnRlcl90IGtleXMuICovCisgICAgICAgIGlmICh0cmFjZW1hbGxvY191c2VfZG9tYWluKCkgPCAwKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAodHJhY2VtYWxsb2NfY29uZmlnLnVzZV9kb21haW4pIHsKKyAgICAgICAgZW50cnkgPSBfUHlfSEFTSFRBQkxFX0dFVF9FTlRSWSh0cmFjZW1hbGxvY190cmFjZXMsIGtleSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBlbnRyeSA9IF9QeV9IQVNIVEFCTEVfR0VUX0VOVFJZKHRyYWNlbWFsbG9jX3RyYWNlcywgcHRyKTsKKyAgICB9CisKKyAgICBpZiAoZW50cnkgIT0gTlVMTCkgeworICAgICAgICAvKiB0aGUgbWVtb3J5IGJsb2NrIGlzIGFscmVhZHkgdHJhY2tlZCAqLworICAgICAgICBfUHlfSEFTSFRBQkxFX0VOVFJZX1JFQURfREFUQSh0cmFjZW1hbGxvY190cmFjZXMsIGVudHJ5LCB0cmFjZSk7CiAgICAgICAgIGFzc2VydCh0cmFjZW1hbGxvY190cmFjZWRfbWVtb3J5ID49IHRyYWNlLnNpemUpOwogICAgICAgICB0cmFjZW1hbGxvY190cmFjZWRfbWVtb3J5IC09IHRyYWNlLnNpemU7CisKKyAgICAgICAgdHJhY2Uuc2l6ZSA9IHNpemU7CisgICAgICAgIHRyYWNlLnRyYWNlYmFjayA9IHRyYWNlYmFjazsKKyAgICAgICAgX1B5X0hBU0hUQUJMRV9FTlRSWV9XUklURV9EQVRBKHRyYWNlbWFsbG9jX3RyYWNlcywgZW50cnksIHRyYWNlKTsKICAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHRyYWNlLnNpemUgPSBzaXplOworICAgICAgICB0cmFjZS50cmFjZWJhY2sgPSB0cmFjZWJhY2s7CisKKyAgICAgICAgaWYgKHRyYWNlbWFsbG9jX2NvbmZpZy51c2VfZG9tYWluKSB7CisgICAgICAgICAgICByZXMgPSBfUHlfSEFTSFRBQkxFX1NFVCh0cmFjZW1hbGxvY190cmFjZXMsIGtleSwgdHJhY2UpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmVzID0gX1B5X0hBU0hUQUJMRV9TRVQodHJhY2VtYWxsb2NfdHJhY2VzLCBwdHIsIHRyYWNlKTsKKyAgICAgICAgfQorICAgICAgICBpZiAocmVzICE9IDApIHsKKyAgICAgICAgICAgIHJldHVybiByZXM7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhc3NlcnQodHJhY2VtYWxsb2NfdHJhY2VkX21lbW9yeSA8PSBTSVpFX01BWCAtIHNpemUpOworICAgIHRyYWNlbWFsbG9jX3RyYWNlZF9tZW1vcnkgKz0gc2l6ZTsKKyAgICBpZiAodHJhY2VtYWxsb2NfdHJhY2VkX21lbW9yeSA+IHRyYWNlbWFsbG9jX3BlYWtfdHJhY2VkX21lbW9yeSkKKyAgICAgICAgdHJhY2VtYWxsb2NfcGVha190cmFjZWRfbWVtb3J5ID0gdHJhY2VtYWxsb2NfdHJhY2VkX21lbW9yeTsKKyAgICByZXR1cm4gMDsKIH0KIAorI2RlZmluZSBBRERfVFJBQ0UocHRyLCBzaXplKSBcCisgICAgICAgICAgICB0cmFjZW1hbGxvY19hZGRfdHJhY2UoREVGQVVMVF9ET01BSU4sICh1aW50cHRyX3QpKHB0ciksIHNpemUpCisKKwogc3RhdGljIHZvaWQqCiB0cmFjZW1hbGxvY19hbGxvYyhpbnQgdXNlX2NhbGxvYywgdm9pZCAqY3R4LCBzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpCiB7CiAgICAgUHlNZW1BbGxvY2F0b3JFeCAqYWxsb2MgPSAoUHlNZW1BbGxvY2F0b3JFeCAqKWN0eDsKICAgICB2b2lkICpwdHI7CiAKLSAgICBhc3NlcnQoZWxzaXplID09IDAgfHwgbmVsZW0gPD0gUFlfU0laRV9NQVggLyBlbHNpemUpOworICAgIGFzc2VydChlbHNpemUgPT0gMCB8fCBuZWxlbSA8PSBTSVpFX01BWCAvIGVsc2l6ZSk7CiAKICAgICBpZiAodXNlX2NhbGxvYykKICAgICAgICAgcHRyID0gYWxsb2MtPmNhbGxvYyhhbGxvYy0+Y3R4LCBuZWxlbSwgZWxzaXplKTsKQEAgLTQ4OCw3ICs2ODIsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIFRBQkxFU19MT0NLKCk7Ci0gICAgaWYgKHRyYWNlbWFsbG9jX2FkZF90cmFjZShwdHIsIG5lbGVtICogZWxzaXplKSA8IDApIHsKKyAgICBpZiAoQUREX1RSQUNFKHB0ciwgbmVsZW0gKiBlbHNpemUpIDwgMCkgewogICAgICAgICAvKiBGYWlsZWQgdG8gYWxsb2NhdGUgYSB0cmFjZSBmb3IgdGhlIG5ldyBtZW1vcnkgYmxvY2sgKi8KICAgICAgICAgVEFCTEVTX1VOTE9DSygpOwogICAgICAgICBhbGxvYy0+ZnJlZShhbGxvYy0+Y3R4LCBwdHIpOwpAQCAtNDk4LDYgKzY5Miw3IEBACiAgICAgcmV0dXJuIHB0cjsKIH0KIAorCiBzdGF0aWMgdm9pZCoKIHRyYWNlbWFsbG9jX3JlYWxsb2Modm9pZCAqY3R4LCB2b2lkICpwdHIsIHNpemVfdCBuZXdfc2l6ZSkKIHsKQEAgLTUxMiw5ICs3MDcsMTQgQEAKICAgICAgICAgLyogYW4gZXhpc3RpbmcgbWVtb3J5IGJsb2NrIGhhcyBiZWVuIHJlc2l6ZWQgKi8KIAogICAgICAgICBUQUJMRVNfTE9DSygpOwotICAgICAgICB0cmFjZW1hbGxvY19yZW1vdmVfdHJhY2UocHRyKTsKIAotICAgICAgICBpZiAodHJhY2VtYWxsb2NfYWRkX3RyYWNlKHB0cjIsIG5ld19zaXplKSA8IDApIHsKKyAgICAgICAgLyogdHJhY2VtYWxsb2NfYWRkX3RyYWNlKCkgdXBkYXRlcyB0aGUgdHJhY2UgaWYgdGhlcmUgaXMgYWxyZWFkeQorICAgICAgICAgICBhIHRyYWNlIGF0IGFkZHJlc3MgKGRvbWFpbiwgcHRyMikgKi8KKyAgICAgICAgaWYgKHB0cjIgIT0gcHRyKSB7CisgICAgICAgICAgICBSRU1PVkVfVFJBQ0UocHRyKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChBRERfVFJBQ0UocHRyMiwgbmV3X3NpemUpIDwgMCkgewogICAgICAgICAgICAgLyogTWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkLiBUaGUgZXJyb3IgY2Fubm90IGJlIHJlcG9ydGVkIHRvCiAgICAgICAgICAgICAgICB0aGUgY2FsbGVyLCBiZWNhdXNlIHJlYWxsb2MoKSBtYXkgYWxyZWFkeSBoYXZlIHNocnVuayB0aGUKICAgICAgICAgICAgICAgIG1lbW9yeSBibG9jayBhbmQgc28gcmVtb3ZlZCBieXRlcy4KQEAgLTUzMiw3ICs3MzIsNyBAQAogICAgICAgICAvKiBuZXcgYWxsb2NhdGlvbiAqLwogCiAgICAgICAgIFRBQkxFU19MT0NLKCk7Ci0gICAgICAgIGlmICh0cmFjZW1hbGxvY19hZGRfdHJhY2UocHRyMiwgbmV3X3NpemUpIDwgMCkgeworICAgICAgICBpZiAoQUREX1RSQUNFKHB0cjIsIG5ld19zaXplKSA8IDApIHsKICAgICAgICAgICAgIC8qIEZhaWxlZCB0byBhbGxvY2F0ZSBhIHRyYWNlIGZvciB0aGUgbmV3IG1lbW9yeSBibG9jayAqLwogICAgICAgICAgICAgVEFCTEVTX1VOTE9DSygpOwogICAgICAgICAgICAgYWxsb2MtPmZyZWUoYWxsb2MtPmN0eCwgcHRyMik7CkBAIC01NDMsNiArNzQzLDcgQEAKICAgICByZXR1cm4gcHRyMjsKIH0KIAorCiBzdGF0aWMgdm9pZAogdHJhY2VtYWxsb2NfZnJlZSh2b2lkICpjdHgsIHZvaWQgKnB0cikKIHsKQEAgLTU1NywxMCArNzU4LDExIEBACiAgICAgYWxsb2MtPmZyZWUoYWxsb2MtPmN0eCwgcHRyKTsKIAogICAgIFRBQkxFU19MT0NLKCk7Ci0gICAgdHJhY2VtYWxsb2NfcmVtb3ZlX3RyYWNlKHB0cik7CisgICAgUkVNT1ZFX1RSQUNFKHB0cik7CiAgICAgVEFCTEVTX1VOTE9DSygpOwogfQogCisKIHN0YXRpYyB2b2lkKgogdHJhY2VtYWxsb2NfYWxsb2NfZ2lsKGludCB1c2VfY2FsbG9jLCB2b2lkICpjdHgsIHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSkKIHsKQEAgLTU4NSwxOCArNzg3LDIxIEBACiAgICAgcmV0dXJuIHB0cjsKIH0KIAorCiBzdGF0aWMgdm9pZCoKIHRyYWNlbWFsbG9jX21hbGxvY19naWwodm9pZCAqY3R4LCBzaXplX3Qgc2l6ZSkKIHsKICAgICByZXR1cm4gdHJhY2VtYWxsb2NfYWxsb2NfZ2lsKDAsIGN0eCwgMSwgc2l6ZSk7CiB9CiAKKwogc3RhdGljIHZvaWQqCiB0cmFjZW1hbGxvY19jYWxsb2NfZ2lsKHZvaWQgKmN0eCwgc2l6ZV90IG5lbGVtLCBzaXplX3QgZWxzaXplKQogewogICAgIHJldHVybiB0cmFjZW1hbGxvY19hbGxvY19naWwoMSwgY3R4LCBuZWxlbSwgZWxzaXplKTsKIH0KIAorCiBzdGF0aWMgdm9pZCoKIHRyYWNlbWFsbG9jX3JlYWxsb2NfZ2lsKHZvaWQgKmN0eCwgdm9pZCAqcHRyLCBzaXplX3QgbmV3X3NpemUpCiB7CkBAIC02MTIsNyArODE3LDcgQEAKICAgICAgICAgcHRyMiA9IGFsbG9jLT5yZWFsbG9jKGFsbG9jLT5jdHgsIHB0ciwgbmV3X3NpemUpOwogICAgICAgICBpZiAocHRyMiAhPSBOVUxMICYmIHB0ciAhPSBOVUxMKSB7CiAgICAgICAgICAgICBUQUJMRVNfTE9DSygpOwotICAgICAgICAgICAgdHJhY2VtYWxsb2NfcmVtb3ZlX3RyYWNlKHB0cik7CisgICAgICAgICAgICBSRU1PVkVfVFJBQ0UocHRyKTsKICAgICAgICAgICAgIFRBQkxFU19VTkxPQ0soKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gcHRyMjsKQEAgLTYyOSw2ICs4MzQsNyBAQAogICAgIHJldHVybiBwdHIyOwogfQogCisKICNpZmRlZiBUUkFDRV9SQVdfTUFMTE9DCiBzdGF0aWMgdm9pZCoKIHRyYWNlbWFsbG9jX3Jhd19hbGxvYyhpbnQgdXNlX2NhbGxvYywgdm9pZCAqY3R4LCBzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpCkBAIC02NjMsMTggKzg2OSwyMSBAQAogICAgIHJldHVybiBwdHI7CiB9CiAKKwogc3RhdGljIHZvaWQqCiB0cmFjZW1hbGxvY19yYXdfbWFsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IHNpemUpCiB7CiAgICAgcmV0dXJuIHRyYWNlbWFsbG9jX3Jhd19hbGxvYygwLCBjdHgsIDEsIHNpemUpOwogfQogCisKIHN0YXRpYyB2b2lkKgogdHJhY2VtYWxsb2NfcmF3X2NhbGxvYyh2b2lkICpjdHgsIHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSkKIHsKICAgICByZXR1cm4gdHJhY2VtYWxsb2NfcmF3X2FsbG9jKDEsIGN0eCwgbmVsZW0sIGVsc2l6ZSk7CiB9CiAKKwogc3RhdGljIHZvaWQqCiB0cmFjZW1hbGxvY19yYXdfcmVhbGxvYyh2b2lkICpjdHgsIHZvaWQgKnB0ciwgc2l6ZV90IG5ld19zaXplKQogewpAQCAtNjkxLDcgKzkwMCw3IEBACiAKICAgICAgICAgaWYgKHB0cjIgIT0gTlVMTCAmJiBwdHIgIT0gTlVMTCkgewogICAgICAgICAgICAgVEFCTEVTX0xPQ0soKTsKLSAgICAgICAgICAgIHRyYWNlbWFsbG9jX3JlbW92ZV90cmFjZShwdHIpOworICAgICAgICAgICAgUkVNT1ZFX1RSQUNFKHB0cik7CiAgICAgICAgICAgICBUQUJMRVNfVU5MT0NLKCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHB0cjI7CkBAIC03MTUsMjIgKzkyNCwzMSBAQAogfQogI2VuZGlmICAgLyogVFJBQ0VfUkFXX01BTExPQyAqLwogCisKIHN0YXRpYyBpbnQKLXRyYWNlbWFsbG9jX2NsZWFyX2ZpbGVuYW1lKF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnksIHZvaWQgKnVzZXJfZGF0YSkKK3RyYWNlbWFsbG9jX2NsZWFyX2ZpbGVuYW1lKF9QeV9oYXNodGFibGVfdCAqaHQsIF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp1c2VyX2RhdGEpCiB7Ci0gICAgUHlPYmplY3QgKmZpbGVuYW1lID0gKFB5T2JqZWN0ICopZW50cnktPmtleTsKKyAgICBQeU9iamVjdCAqZmlsZW5hbWU7CisKKyAgICBfUHlfSEFTSFRBQkxFX0VOVFJZX1JFQURfS0VZKGh0LCBlbnRyeSwgZmlsZW5hbWUpOwogICAgIFB5X0RFQ1JFRihmaWxlbmFtZSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKKwogc3RhdGljIGludAotdHJhY2ViYWNrX2ZyZWVfdHJhY2ViYWNrKF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnksIHZvaWQgKnVzZXJfZGF0YSkKK3RyYWNlYmFja19mcmVlX3RyYWNlYmFjayhfUHlfaGFzaHRhYmxlX3QgKmh0LCBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnVzZXJfZGF0YSkKIHsKLSAgICB0cmFjZWJhY2tfdCAqdHJhY2ViYWNrID0gKHRyYWNlYmFja190ICopZW50cnktPmtleTsKKyAgICB0cmFjZWJhY2tfdCAqdHJhY2ViYWNrOworCisgICAgX1B5X0hBU0hUQUJMRV9FTlRSWV9SRUFEX0tFWShodCwgZW50cnksIHRyYWNlYmFjayk7CiAgICAgcmF3X2ZyZWUodHJhY2ViYWNrKTsKICAgICByZXR1cm4gMDsKIH0KIAorCiAvKiByZWVudHJhbnQgZmxhZyBtdXN0IGJlIHNldCB0byBjYWxsIHRoaXMgZnVuY3Rpb24gYW5kIEdJTCBtdXN0IGJlIGhlbGQgKi8KIHN0YXRpYyB2b2lkCiB0cmFjZW1hbGxvY19jbGVhcl90cmFjZXModm9pZCkKQEAgLTc1Myw2ICs5NzEsNyBAQAogICAgIF9QeV9oYXNodGFibGVfY2xlYXIodHJhY2VtYWxsb2NfZmlsZW5hbWVzKTsKIH0KIAorCiBzdGF0aWMgaW50CiB0cmFjZW1hbGxvY19pbml0KHZvaWQpCiB7CkBAIC03ODksMjEgKzEwMDgsMjkgQEAKICAgICB9CiAjZW5kaWYKIAotICAgIHRyYWNlbWFsbG9jX2ZpbGVuYW1lcyA9IGhhc2h0YWJsZV9uZXcoMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfUHlfaGFzaHRhYmxlX2hhc2hfZnVuYylQeU9iamVjdF9IYXNoLAorICAgIHRyYWNlbWFsbG9jX2ZpbGVuYW1lcyA9IGhhc2h0YWJsZV9uZXcoc2l6ZW9mKFB5T2JqZWN0ICopLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaHRhYmxlX2hhc2hfcHlvYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNodGFibGVfY29tcGFyZV91bmljb2RlKTsKIAotICAgIHRyYWNlbWFsbG9jX3RyYWNlYmFja3MgPSBoYXNodGFibGVfbmV3KDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9QeV9oYXNodGFibGVfaGFzaF9mdW5jKWhhc2h0YWJsZV9oYXNoX3RyYWNlYmFjaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX1B5X2hhc2h0YWJsZV9jb21wYXJlX2Z1bmMpaGFzaHRhYmxlX2NvbXBhcmVfdHJhY2ViYWNrKTsKKyAgICB0cmFjZW1hbGxvY190cmFjZWJhY2tzID0gaGFzaHRhYmxlX25ldyhzaXplb2YodHJhY2ViYWNrX3QgKiksIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaHRhYmxlX2hhc2hfdHJhY2ViYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2h0YWJsZV9jb21wYXJlX3RyYWNlYmFjayk7CiAKLSAgICB0cmFjZW1hbGxvY190cmFjZXMgPSBoYXNodGFibGVfbmV3KHNpemVvZih0cmFjZV90KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9oYXNodGFibGVfaGFzaF9wdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2NvbXBhcmVfZGlyZWN0KTsKKyAgICBpZiAodHJhY2VtYWxsb2NfY29uZmlnLnVzZV9kb21haW4pIHsKKyAgICAgICAgdHJhY2VtYWxsb2NfdHJhY2VzID0gaGFzaHRhYmxlX25ldyhzaXplb2YocG9pbnRlcl90KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodHJhY2VfdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaHRhYmxlX2hhc2hfcG9pbnRlcl90LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2h0YWJsZV9jb21wYXJlX3BvaW50ZXJfdCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICB0cmFjZW1hbGxvY190cmFjZXMgPSBoYXNodGFibGVfbmV3KHNpemVvZih1aW50cHRyX3QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih0cmFjZV90KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2hhc2hfcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9oYXNodGFibGVfY29tcGFyZV9kaXJlY3QpOworICAgIH0KIAogICAgIGlmICh0cmFjZW1hbGxvY19maWxlbmFtZXMgPT0gTlVMTCB8fCB0cmFjZW1hbGxvY190cmFjZWJhY2tzID09IE5VTEwKLSAgICAgICAgfHwgdHJhY2VtYWxsb2NfdHJhY2VzID09IE5VTEwpCi0gICAgeworICAgICAgIHx8IHRyYWNlbWFsbG9jX3RyYWNlcyA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CkBAIC04MjMsNiArMTA1MCw3IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKKwogc3RhdGljIHZvaWQKIHRyYWNlbWFsbG9jX2RlaW5pdCh2b2lkKQogewpAQCAtODMzLDkgKzEwNjEsOSBAQAogICAgIHRyYWNlbWFsbG9jX3N0b3AoKTsKIAogICAgIC8qIGRlc3Ryb3kgaGFzaCB0YWJsZXMgKi8KLSAgICBfUHlfaGFzaHRhYmxlX2Rlc3Ryb3kodHJhY2VtYWxsb2NfdHJhY2VzKTsKICAgICBfUHlfaGFzaHRhYmxlX2Rlc3Ryb3kodHJhY2VtYWxsb2NfdHJhY2ViYWNrcyk7CiAgICAgX1B5X2hhc2h0YWJsZV9kZXN0cm95KHRyYWNlbWFsbG9jX2ZpbGVuYW1lcyk7CisgICAgX1B5X2hhc2h0YWJsZV9kZXN0cm95KHRyYWNlbWFsbG9jX3RyYWNlcyk7CiAKICNpZiBkZWZpbmVkKFdJVEhfVEhSRUFEKSAmJiBkZWZpbmVkKFRSQUNFX1JBV19NQUxMT0MpCiAgICAgaWYgKHRhYmxlc19sb2NrICE9IE5VTEwpIHsKQEAgLTg0NiwxMSArMTA3NCwxMyBAQAogCiAjaWZkZWYgUkVFTlRSQU5UX1RIUkVBRExPQ0FMCiAgICAgUHlUaHJlYWRfZGVsZXRlX2tleSh0cmFjZW1hbGxvY19yZWVudHJhbnRfa2V5KTsKKyAgICB0cmFjZW1hbGxvY19yZWVudHJhbnRfa2V5ID0gLTE7CiAjZW5kaWYKIAogICAgIFB5X1hERUNSRUYodW5rbm93bl9maWxlbmFtZSk7CiB9CiAKKwogc3RhdGljIGludAogdHJhY2VtYWxsb2Nfc3RhcnQoaW50IG1heF9uZnJhbWUpCiB7CkBAIC05MDcsNiArMTEzNyw3IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKKwogc3RhdGljIHZvaWQKIHRyYWNlbWFsbG9jX3N0b3Aodm9pZCkKIHsKQEAgLTkyMyw4ICsxMTU0LDkgQEAKICAgICBQeU1lbV9TZXRBbGxvY2F0b3IoUFlNRU1fRE9NQUlOX01FTSwgJmFsbG9jYXRvcnMubWVtKTsKICAgICBQeU1lbV9TZXRBbGxvY2F0b3IoUFlNRU1fRE9NQUlOX09CSiwgJmFsbG9jYXRvcnMub2JqKTsKIAotICAgIC8qIHJlbGVhc2UgbWVtb3J5ICovCiAgICAgdHJhY2VtYWxsb2NfY2xlYXJfdHJhY2VzKCk7CisKKyAgICAvKiByZWxlYXNlIG1lbW9yeSAqLwogICAgIHJhd19mcmVlKHRyYWNlbWFsbG9jX3RyYWNlYmFjayk7CiAgICAgdHJhY2VtYWxsb2NfdHJhY2ViYWNrID0gTlVMTDsKIH0KQEAgLTkzNSw2ICsxMTY3LDcgQEAKICAgICAiVHJ1ZSBpZiB0aGUgdHJhY2VtYWxsb2MgbW9kdWxlIGlzIHRyYWNpbmcgUHl0aG9uIG1lbW9yeSBhbGxvY2F0aW9ucyxcbiIKICAgICAiRmFsc2Ugb3RoZXJ3aXNlLiIpOwogCisKIHN0YXRpYyBQeU9iamVjdCoKIHB5X3RyYWNlbWFsbG9jX2lzX3RyYWNpbmcoUHlPYmplY3QgKnNlbGYpCiB7CkBAIC05NDYsNiArMTE3OSw3IEBACiAgICAgIlxuIgogICAgICJDbGVhciB0cmFjZXMgb2YgbWVtb3J5IGJsb2NrcyBhbGxvY2F0ZWQgYnkgUHl0aG9uLiIpOwogCisKIHN0YXRpYyBQeU9iamVjdCoKIHB5X3RyYWNlbWFsbG9jX2NsZWFyX3RyYWNlcyhQeU9iamVjdCAqc2VsZikKIHsKQEAgLTk1OSw2ICsxMTkzLDcgQEAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAorCiBzdGF0aWMgUHlPYmplY3QqCiBmcmFtZV90b19weW9iamVjdChmcmFtZV90ICpmcmFtZSkKIHsKQEAgLTk2OCw4ICsxMjAzLDYgQEAKICAgICBpZiAoZnJhbWVfb2JqID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKGZyYW1lLT5maWxlbmFtZSA9PSBOVUxMKQotICAgICAgICBmcmFtZS0+ZmlsZW5hbWUgPSBQeV9Ob25lOwogICAgIFB5X0lOQ1JFRihmcmFtZS0+ZmlsZW5hbWUpOwogICAgIFB5VHVwbGVfU0VUX0lURU0oZnJhbWVfb2JqLCAwLCBmcmFtZS0+ZmlsZW5hbWUpOwogCkBAIC05ODMsNiArMTIxNiw3IEBACiAgICAgcmV0dXJuIGZyYW1lX29iajsKIH0KIAorCiBzdGF0aWMgUHlPYmplY3QqCiB0cmFjZWJhY2tfdG9fcHlvYmplY3QodHJhY2ViYWNrX3QgKnRyYWNlYmFjaywgX1B5X2hhc2h0YWJsZV90ICppbnRlcm5fdGFibGUpCiB7CkBAIC0xMDIxLDMzICsxMjU1LDQzIEBACiAgICAgcmV0dXJuIGZyYW1lczsKIH0KIAorCiBzdGF0aWMgUHlPYmplY3QqCi10cmFjZV90b19weW9iamVjdCh0cmFjZV90ICp0cmFjZSwgX1B5X2hhc2h0YWJsZV90ICppbnRlcm5fdHJhY2ViYWNrcykKK3RyYWNlX3RvX3B5b2JqZWN0KF9QeVRyYWNlTWFsbG9jX2RvbWFpbl90IGRvbWFpbiwgdHJhY2VfdCAqdHJhY2UsCisgICAgICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX3QgKmludGVybl90cmFjZWJhY2tzKQogewogICAgIFB5T2JqZWN0ICp0cmFjZV9vYmogPSBOVUxMOwotICAgIFB5T2JqZWN0ICpzaXplLCAqdHJhY2ViYWNrOworICAgIFB5T2JqZWN0ICpvYmo7CiAKLSAgICB0cmFjZV9vYmogPSBQeVR1cGxlX05ldygyKTsKKyAgICB0cmFjZV9vYmogPSBQeVR1cGxlX05ldygzKTsKICAgICBpZiAodHJhY2Vfb2JqID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgc2l6ZSA9IFB5TG9uZ19Gcm9tU2l6ZV90KHRyYWNlLT5zaXplKTsKLSAgICBpZiAoc2l6ZSA9PSBOVUxMKSB7CisgICAgb2JqID0gUHlMb25nX0Zyb21TaXplX3QoZG9tYWluKTsKKyAgICBpZiAob2JqID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKHRyYWNlX29iaik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBQeVR1cGxlX1NFVF9JVEVNKHRyYWNlX29iaiwgMCwgc2l6ZSk7CisgICAgUHlUdXBsZV9TRVRfSVRFTSh0cmFjZV9vYmosIDAsIG9iaik7CiAKLSAgICB0cmFjZWJhY2sgPSB0cmFjZWJhY2tfdG9fcHlvYmplY3QodHJhY2UtPnRyYWNlYmFjaywgaW50ZXJuX3RyYWNlYmFja3MpOwotICAgIGlmICh0cmFjZWJhY2sgPT0gTlVMTCkgeworICAgIG9iaiA9IFB5TG9uZ19Gcm9tU2l6ZV90KHRyYWNlLT5zaXplKTsKKyAgICBpZiAob2JqID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKHRyYWNlX29iaik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBQeVR1cGxlX1NFVF9JVEVNKHRyYWNlX29iaiwgMSwgdHJhY2ViYWNrKTsKKyAgICBQeVR1cGxlX1NFVF9JVEVNKHRyYWNlX29iaiwgMSwgb2JqKTsKKworICAgIG9iaiA9IHRyYWNlYmFja190b19weW9iamVjdCh0cmFjZS0+dHJhY2ViYWNrLCBpbnRlcm5fdHJhY2ViYWNrcyk7CisgICAgaWYgKG9iaiA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRih0cmFjZV9vYmopOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlUdXBsZV9TRVRfSVRFTSh0cmFjZV9vYmosIDIsIG9iaik7CiAKICAgICByZXR1cm4gdHJhY2Vfb2JqOwogfQogCisKIHR5cGVkZWYgc3RydWN0IHsKICAgICBfUHlfaGFzaHRhYmxlX3QgKnRyYWNlczsKICAgICBfUHlfaGFzaHRhYmxlX3QgKnRyYWNlYmFja3M7CkBAIC0xMDU1LDE2ICsxMjk5LDI2IEBACiB9IGdldF90cmFjZXNfdDsKIAogc3RhdGljIGludAotdHJhY2VtYWxsb2NfZ2V0X3RyYWNlc19maWxsKF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnksIHZvaWQgKnVzZXJfZGF0YSkKK3RyYWNlbWFsbG9jX2dldF90cmFjZXNfZmlsbChfUHlfaGFzaHRhYmxlX3QgKnRyYWNlcywgX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp1c2VyX2RhdGEpCiB7CiAgICAgZ2V0X3RyYWNlc190ICpnZXRfdHJhY2VzID0gdXNlcl9kYXRhOwotICAgIHRyYWNlX3QgKnRyYWNlOworICAgIF9QeVRyYWNlTWFsbG9jX2RvbWFpbl90IGRvbWFpbjsKKyAgICB0cmFjZV90IHRyYWNlOwogICAgIFB5T2JqZWN0ICp0cmFjZW1hbGxvY19vYmo7CiAgICAgaW50IHJlczsKIAotICAgIHRyYWNlID0gKHRyYWNlX3QgKilfUHlfSEFTSFRBQkxFX0VOVFJZX0RBVEEoZW50cnkpOworICAgIGlmICh0cmFjZW1hbGxvY19jb25maWcudXNlX2RvbWFpbikgeworICAgICAgICBwb2ludGVyX3Qga2V5OworICAgICAgICBfUHlfSEFTSFRBQkxFX0VOVFJZX1JFQURfS0VZKHRyYWNlcywgZW50cnksIGtleSk7CisgICAgICAgIGRvbWFpbiA9IGtleS5kb21haW47CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBkb21haW4gPSBERUZBVUxUX0RPTUFJTjsKKyAgICB9CisgICAgX1B5X0hBU0hUQUJMRV9FTlRSWV9SRUFEX0RBVEEodHJhY2VzLCBlbnRyeSwgdHJhY2UpOwogCi0gICAgdHJhY2VtYWxsb2Nfb2JqID0gdHJhY2VfdG9fcHlvYmplY3QodHJhY2UsIGdldF90cmFjZXMtPnRyYWNlYmFja3MpOworICAgIHRyYWNlbWFsbG9jX29iaiA9IHRyYWNlX3RvX3B5b2JqZWN0KGRvbWFpbiwgJnRyYWNlLCBnZXRfdHJhY2VzLT50cmFjZWJhY2tzKTsKICAgICBpZiAodHJhY2VtYWxsb2Nfb2JqID09IE5VTEwpCiAgICAgICAgIHJldHVybiAxOwogCkBAIC0xMDc2LDE0ICsxMzMwLDE5IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKKwogc3RhdGljIGludAotdHJhY2VtYWxsb2NfcHlvYmplY3RfZGVjcmVmX2NiKF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnksIHZvaWQgKnVzZXJfZGF0YSkKK3RyYWNlbWFsbG9jX3B5b2JqZWN0X2RlY3JlZl9jYihfUHlfaGFzaHRhYmxlX3QgKnRyYWNlYmFja3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp1c2VyX2RhdGEpCiB7Ci0gICAgUHlPYmplY3QgKm9iaiA9IChQeU9iamVjdCAqKV9QeV9IQVNIVEFCTEVfRU5UUllfREFUQV9BU19WT0lEX1AoZW50cnkpOworICAgIFB5T2JqZWN0ICpvYmo7CisgICAgX1B5X0hBU0hUQUJMRV9FTlRSWV9SRUFEX0RBVEEodHJhY2ViYWNrcywgZW50cnksIG9iaik7CiAgICAgUHlfREVDUkVGKG9iaik7CiAgICAgcmV0dXJuIDA7CiB9CiAKKwogUHlEb2NfU1RSVkFSKHRyYWNlbWFsbG9jX2dldF90cmFjZXNfZG9jLAogICAgICJfZ2V0X3RyYWNlcygpIC0+IGxpc3RcbiIKICAgICAiXG4iCkBAIC0xMTEwLDcgKzEzNjksOCBAQAogCiAgICAgLyogdGhlIHRyYWNlYmFjayBoYXNoIHRhYmxlIGlzIHVzZWQgdGVtcG9yYXJpbHkgdG8gaW50ZXJuIHRyYWNlYmFjayB0dXBsZQogICAgICAgIG9mIChmaWxlbmFtZSwgbGluZW5vKSB0dXBsZXMgKi8KLSAgICBnZXRfdHJhY2VzLnRyYWNlYmFja3MgPSBoYXNodGFibGVfbmV3KHNpemVvZihQeU9iamVjdCAqKSwKKyAgICBnZXRfdHJhY2VzLnRyYWNlYmFja3MgPSBoYXNodGFibGVfbmV3KHNpemVvZih0cmFjZWJhY2tfdCAqKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihQeU9iamVjdCAqKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9oYXNodGFibGVfaGFzaF9wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2NvbXBhcmVfZGlyZWN0KTsKICAgICBpZiAoZ2V0X3RyYWNlcy50cmFjZWJhY2tzID09IE5VTEwpIHsKQEAgLTExNDIsMTUgKzE0MDIsNDMgQEAKIGZpbmFsbHk6CiAgICAgaWYgKGdldF90cmFjZXMudHJhY2ViYWNrcyAhPSBOVUxMKSB7CiAgICAgICAgIF9QeV9oYXNodGFibGVfZm9yZWFjaChnZXRfdHJhY2VzLnRyYWNlYmFja3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2VtYWxsb2NfcHlvYmplY3RfZGVjcmVmX2NiLCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlbWFsbG9jX3B5b2JqZWN0X2RlY3JlZl9jYiwgTlVMTCk7CiAgICAgICAgIF9QeV9oYXNodGFibGVfZGVzdHJveShnZXRfdHJhY2VzLnRyYWNlYmFja3MpOwogICAgIH0KLSAgICBpZiAoZ2V0X3RyYWNlcy50cmFjZXMgIT0gTlVMTCkKKyAgICBpZiAoZ2V0X3RyYWNlcy50cmFjZXMgIT0gTlVMTCkgewogICAgICAgICBfUHlfaGFzaHRhYmxlX2Rlc3Ryb3koZ2V0X3RyYWNlcy50cmFjZXMpOworICAgIH0KIAogICAgIHJldHVybiBnZXRfdHJhY2VzLmxpc3Q7CiB9CiAKKworc3RhdGljIHRyYWNlYmFja190KgordHJhY2VtYWxsb2NfZ2V0X3RyYWNlYmFjayhfUHlUcmFjZU1hbGxvY19kb21haW5fdCBkb21haW4sIHVpbnRwdHJfdCBwdHIpCit7CisgICAgdHJhY2VfdCB0cmFjZTsKKyAgICBpbnQgZm91bmQ7CisKKyAgICBpZiAoIXRyYWNlbWFsbG9jX2NvbmZpZy50cmFjaW5nKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFRBQkxFU19MT0NLKCk7CisgICAgaWYgKHRyYWNlbWFsbG9jX2NvbmZpZy51c2VfZG9tYWluKSB7CisgICAgICAgIHBvaW50ZXJfdCBrZXkgPSB7cHRyLCBkb21haW59OworICAgICAgICBmb3VuZCA9IF9QeV9IQVNIVEFCTEVfR0VUKHRyYWNlbWFsbG9jX3RyYWNlcywga2V5LCB0cmFjZSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBmb3VuZCA9IF9QeV9IQVNIVEFCTEVfR0VUKHRyYWNlbWFsbG9jX3RyYWNlcywgcHRyLCB0cmFjZSk7CisgICAgfQorICAgIFRBQkxFU19VTkxPQ0soKTsKKworICAgIGlmICghZm91bmQpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0dXJuIHRyYWNlLnRyYWNlYmFjazsKK30KKworCiBQeURvY19TVFJWQVIodHJhY2VtYWxsb2NfZ2V0X29iamVjdF90cmFjZWJhY2tfZG9jLAogICAgICJfZ2V0X29iamVjdF90cmFjZWJhY2sob2JqKVxuIgogICAgICJcbiIKQEAgLTExNjUsMTEgKzE0NTMsNyBAQAogewogICAgIFB5VHlwZU9iamVjdCAqdHlwZTsKICAgICB2b2lkICpwdHI7Ci0gICAgdHJhY2VfdCB0cmFjZTsKLSAgICBpbnQgZm91bmQ7Ci0KLSAgICBpZiAoIXRyYWNlbWFsbG9jX2NvbmZpZy50cmFjaW5nKQotICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB0cmFjZWJhY2tfdCAqdHJhY2ViYWNrOwogCiAgICAgdHlwZSA9IFB5X1RZUEUob2JqKTsKICAgICBpZiAoUHlUeXBlX0lTX0dDKHR5cGUpKQpAQCAtMTE3NywxNiArMTQ2MSw0OCBAQAogICAgIGVsc2UKICAgICAgICAgcHRyID0gKHZvaWQgKilvYmo7CiAKLSAgICBUQUJMRVNfTE9DSygpOwotICAgIGZvdW5kID0gX1B5X0hBU0hUQUJMRV9HRVQodHJhY2VtYWxsb2NfdHJhY2VzLCBwdHIsIHRyYWNlKTsKLSAgICBUQUJMRVNfVU5MT0NLKCk7Ci0KLSAgICBpZiAoIWZvdW5kKQorICAgIHRyYWNlYmFjayA9IHRyYWNlbWFsbG9jX2dldF90cmFjZWJhY2soREVGQVVMVF9ET01BSU4sICh1aW50cHRyX3QpcHRyKTsKKyAgICBpZiAodHJhY2ViYWNrID09IE5VTEwpCiAgICAgICAgIFB5X1JFVFVSTl9OT05FOwogCi0gICAgcmV0dXJuIHRyYWNlYmFja190b19weW9iamVjdCh0cmFjZS50cmFjZWJhY2ssIE5VTEwpOworICAgIHJldHVybiB0cmFjZWJhY2tfdG9fcHlvYmplY3QodHJhY2ViYWNrLCBOVUxMKTsKIH0KIAorCisjZGVmaW5lIFBVVFMoZmQsIHN0cikgX1B5X3dyaXRlX25vcmFpc2UoZmQsIHN0ciwgKGludClzdHJsZW4oc3RyKSkKKworc3RhdGljIHZvaWQKK19QeU1lbV9EdW1wRnJhbWUoaW50IGZkLCBmcmFtZV90ICogZnJhbWUpCit7CisgICAgUFVUUyhmZCwgIiAgRmlsZSBcIiIpOworICAgIF9QeV9EdW1wQVNDSUkoZmQsIGZyYW1lLT5maWxlbmFtZSk7CisgICAgUFVUUyhmZCwgIlwiLCBsaW5lICIpOworICAgIF9QeV9EdW1wRGVjaW1hbChmZCwgZnJhbWUtPmxpbmVubyk7CisgICAgUFVUUyhmZCwgIlxuIik7Cit9CisKKy8qIER1bXAgdGhlIHRyYWNlYmFjayB3aGVyZSBhIG1lbW9yeSBibG9jayB3YXMgYWxsb2NhdGVkIGludG8gZmlsZSBkZXNjcmlwdG9yCisgICBmZC4gVGhlIGZ1bmN0aW9uIG1heSBibG9jayBvbiBUQUJMRVNfTE9DSygpIGJ1dCBpdCBpcyB1bmxpa2VseS4gKi8KK3ZvaWQKK19QeU1lbV9EdW1wVHJhY2ViYWNrKGludCBmZCwgY29uc3Qgdm9pZCAqcHRyKQoreworICAgIHRyYWNlYmFja190ICp0cmFjZWJhY2s7CisgICAgaW50IGk7CisKKyAgICB0cmFjZWJhY2sgPSB0cmFjZW1hbGxvY19nZXRfdHJhY2ViYWNrKERFRkFVTFRfRE9NQUlOLCAodWludHB0cl90KXB0cik7CisgICAgaWYgKHRyYWNlYmFjayA9PSBOVUxMKQorICAgICAgICByZXR1cm47CisKKyAgICBQVVRTKGZkLCAiTWVtb3J5IGJsb2NrIGFsbG9jYXRlZCBhdCAobW9zdCByZWNlbnQgY2FsbCBmaXJzdCk6XG4iKTsKKyAgICBmb3IgKGk9MDsgaSA8IHRyYWNlYmFjay0+bmZyYW1lOyBpKyspIHsKKyAgICAgICAgX1B5TWVtX0R1bXBGcmFtZShmZCwgJnRyYWNlYmFjay0+ZnJhbWVzW2ldKTsKKyAgICB9CisgICAgUFVUUyhmZCwgIlxuIik7Cit9CisKKyN1bmRlZiBQVVRTCisKKwogUHlEb2NfU1RSVkFSKHRyYWNlbWFsbG9jX3N0YXJ0X2RvYywKICAgICAic3RhcnQobmZyYW1lOiBpbnQ9MSlcbiIKICAgICAiXG4iCkBAIC0xMjIyLDYgKzE1MzgsNyBAQAogICAgICJTdG9wIHRyYWNpbmcgUHl0aG9uIG1lbW9yeSBhbGxvY2F0aW9ucyBhbmQgY2xlYXIgdHJhY2VzXG4iCiAgICAgIm9mIG1lbW9yeSBibG9ja3MgYWxsb2NhdGVkIGJ5IFB5dGhvbi4iKTsKIAorCiBzdGF0aWMgUHlPYmplY3QqCiBweV90cmFjZW1hbGxvY19zdG9wKFB5T2JqZWN0ICpzZWxmKQogewpAQCAtMTIyOSw2ICsxNTQ2LDcgQEAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAorCiBQeURvY19TVFJWQVIodHJhY2VtYWxsb2NfZ2V0X3RyYWNlYmFja19saW1pdF9kb2MsCiAgICAgImdldF90cmFjZWJhY2tfbGltaXQoKSAtPiBpbnRcbiIKICAgICAiXG4iCkBAIC0xMjQ0LDYgKzE1NjIsNyBAQAogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcodHJhY2VtYWxsb2NfY29uZmlnLm1heF9uZnJhbWUpOwogfQogCisKIFB5RG9jX1NUUlZBUih0cmFjZW1hbGxvY19nZXRfdHJhY2VtYWxsb2NfbWVtb3J5X2RvYywKICAgICAiZ2V0X3RyYWNlbWFsbG9jX21lbW9yeSgpIC0+IGludFxuIgogICAgICJcbiIKQEAgLTEyNjcsNiArMTU4Niw3IEBACiAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk4iLCBzaXplX29iaik7CiB9CiAKKwogUHlEb2NfU1RSVkFSKHRyYWNlbWFsbG9jX2dldF90cmFjZWRfbWVtb3J5X2RvYywKICAgICAiZ2V0X3RyYWNlZF9tZW1vcnkoKSAtPiAoaW50LCBpbnQpXG4iCiAgICAgIlxuIgpAQCAtMTI5Miw2ICsxNjEyLDcgQEAKICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTk4iLCBzaXplX29iaiwgcGVha19zaXplX29iaik7CiB9CiAKKwogc3RhdGljIFB5TWV0aG9kRGVmIG1vZHVsZV9tZXRob2RzW10gPSB7CiAgICAgeyJpc190cmFjaW5nIiwgKFB5Q0Z1bmN0aW9uKXB5X3RyYWNlbWFsbG9jX2lzX3RyYWNpbmcsCiAgICAgIE1FVEhfTk9BUkdTLCB0cmFjZW1hbGxvY19pc190cmFjaW5nX2RvY30sCkBAIC0xMzQyLDYgKzE2NjMsNyBAQAogICAgIHJldHVybiBtOwogfQogCisKIHN0YXRpYyBpbnQKIHBhcnNlX3N5c194b3B0aW9ucyhQeU9iamVjdCAqdmFsdWUpCiB7CkBAIC0xMzcwLDYgKzE2OTIsNyBAQAogICAgIHJldHVybiBQeV9TQUZFX0RPV05DQVNUKG5mcmFtZSwgbG9uZywgaW50KTsKIH0KIAorCiBpbnQKIF9QeVRyYWNlTWFsbG9jX0luaXQodm9pZCkKIHsKQEAgLTE0MjgsNiArMTc1MSw3IEBACiAgICAgcmV0dXJuIHRyYWNlbWFsbG9jX3N0YXJ0KG5mcmFtZSk7CiB9CiAKKwogdm9pZAogX1B5VHJhY2VNYWxsb2NfRmluaSh2b2lkKQogewpAQCAtMTQzNywzICsxNzYxLDU5IEBACiAgICAgdHJhY2VtYWxsb2NfZGVpbml0KCk7CiB9CiAKK2ludAorX1B5VHJhY2VNYWxsb2NfVHJhY2soX1B5VHJhY2VNYWxsb2NfZG9tYWluX3QgZG9tYWluLCB1aW50cHRyX3QgcHRyLAorICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUpCit7CisgICAgaW50IHJlczsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIFB5R0lMU3RhdGVfU1RBVEUgZ2lsX3N0YXRlOworI2VuZGlmCisKKyAgICBpZiAoIXRyYWNlbWFsbG9jX2NvbmZpZy50cmFjaW5nKSB7CisgICAgICAgIC8qIHRyYWNlbWFsbG9jIGlzIG5vdCB0cmFjaW5nOiBkbyBub3RoaW5nICovCisgICAgICAgIHJldHVybiAtMjsKKyAgICB9CisKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIGdpbF9zdGF0ZSA9IFB5R0lMU3RhdGVfRW5zdXJlKCk7CisjZW5kaWYKKworICAgIFRBQkxFU19MT0NLKCk7CisgICAgcmVzID0gdHJhY2VtYWxsb2NfYWRkX3RyYWNlKGRvbWFpbiwgcHRyLCBzaXplKTsKKyAgICBUQUJMRVNfVU5MT0NLKCk7CisKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIFB5R0lMU3RhdGVfUmVsZWFzZShnaWxfc3RhdGUpOworI2VuZGlmCisgICAgcmV0dXJuIHJlczsKK30KKworCitpbnQKK19QeVRyYWNlTWFsbG9jX1VudHJhY2soX1B5VHJhY2VNYWxsb2NfZG9tYWluX3QgZG9tYWluLCB1aW50cHRyX3QgcHRyKQoreworICAgIGlmICghdHJhY2VtYWxsb2NfY29uZmlnLnRyYWNpbmcpIHsKKyAgICAgICAgLyogdHJhY2VtYWxsb2MgaXMgbm90IHRyYWNpbmc6IGRvIG5vdGhpbmcgKi8KKyAgICAgICAgcmV0dXJuIC0yOworICAgIH0KKworICAgIFRBQkxFU19MT0NLKCk7CisgICAgdHJhY2VtYWxsb2NfcmVtb3ZlX3RyYWNlKGRvbWFpbiwgcHRyKTsKKyAgICBUQUJMRVNfVU5MT0NLKCk7CisKKyAgICByZXR1cm4gMDsKK30KKworCitQeU9iamVjdCoKK19QeVRyYWNlTWFsbG9jX0dldFRyYWNlYmFjayhfUHlUcmFjZU1hbGxvY19kb21haW5fdCBkb21haW4sIHVpbnRwdHJfdCBwdHIpCit7CisgICAgdHJhY2ViYWNrX3QgKnRyYWNlYmFjazsKKworICAgIHRyYWNlYmFjayA9IHRyYWNlbWFsbG9jX2dldF90cmFjZWJhY2soZG9tYWluLCBwdHIpOworICAgIGlmICh0cmFjZWJhY2sgPT0gTlVMTCkKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisKKyAgICByZXR1cm4gdHJhY2ViYWNrX3RvX3B5b2JqZWN0KHRyYWNlYmFjaywgTlVMTCk7Cit9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL193aW5hcGkuYyBiL01vZHVsZXMvX3dpbmFwaS5jCmluZGV4IGVkYzZjZjQuLjkxZDRmMDEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3dpbmFwaS5jCisrKyBiL01vZHVsZXMvX3dpbmFwaS5jCkBAIC0xNzUsNyArMTc1LDcgQEAKICAgICAgICAgc2VsZi5kZWNsYXJlKGRhdGEpCiAgICAgICAgIHNlbGYuZXJyX29jY3VycmVkX2lmKCJfcmV0dXJuX3ZhbHVlID09IElOVkFMSURfSEFORExFX1ZBTFVFIiwgZGF0YSkKICAgICAgICAgZGF0YS5yZXR1cm5fY29udmVyc2lvbi5hcHBlbmQoCi0gICAgICAgICAgICAnaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTClcbiAgICBQeV9SRVRVUk5fTk9ORTtcbicpCisgICAgICAgICAgICAnaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkge1xuICAgIFB5X1JFVFVSTl9OT05FO1xufVxuJykKICAgICAgICAgZGF0YS5yZXR1cm5fY29udmVyc2lvbi5hcHBlbmQoCiAgICAgICAgICAgICAncmV0dXJuX3ZhbHVlID0gSEFORExFX1RPX1BZTlVNKF9yZXR1cm5fdmFsdWUpO1xuJykKIApAQCAtMTg4LDcgKzE4OCw3IEBACiAgICAgICAgIGRhdGEucmV0dXJuX2NvbnZlcnNpb24uYXBwZW5kKAogICAgICAgICAgICAgJ3JldHVybl92YWx1ZSA9IFB5X0J1aWxkVmFsdWUoImsiLCBfcmV0dXJuX3ZhbHVlKTtcbicpCiBbcHl0aG9uIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCi0vKltweXRob24gZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD0zNzQwNzY5Nzk1OTZlYmJhXSovCisvKltweXRob24gZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD05NDgxOWU3MmQyYzZkNTU4XSovCiAKICNpbmNsdWRlICJjbGluaWMvX3dpbmFwaS5jLmgiCiAKQEAgLTQ4Niw3ICs0ODYsNyBAQAogICAgIGNvbnN0IFVTSE9SVCBwcmVmaXhfbGVuID0gNDsKICAgICBVU0hPUlQgcHJpbnRfbGVuID0gMDsKICAgICBVU0hPUlQgcmRiX3NpemUgPSAwOwotICAgIFBSRVBBUlNFX0RBVEFfQlVGRkVSIHJkYiA9IE5VTEw7CisgICAgX1B5X1BSRVBBUlNFX0RBVEFfQlVGRkVSIHJkYiA9IE5VTEw7CiAKICAgICAvKiBKdW5jdGlvbiBwb2ludCBjcmVhdGlvbiAqLwogICAgIEhBTkRMRSBqdW5jdGlvbiA9IE5VTEw7CkBAIC01NDIsMTggKzU0MiwxOCBAQAogICAgICAgICAgLSB0aGUgc2l6ZSBvZiB0aGUgcHJpbnQgbmFtZSBpbiBieXRlcwogICAgICAgICAgLSB0aGUgc2l6ZSBvZiB0aGUgc3Vic3RpdHV0ZSBuYW1lIGluIGJ5dGVzCiAgICAgICAgICAtIHRoZSBzaXplIG9mIHR3byBOVUwgdGVybWluYXRvcnMgaW4gYnl0ZXMgKi8KLSAgICByZGJfc2l6ZSA9IFJFUEFSU0VfREFUQV9CVUZGRVJfSEVBREVSX1NJWkUgKworICAgIHJkYl9zaXplID0gX1B5X1JFUEFSU0VfREFUQV9CVUZGRVJfSEVBREVSX1NJWkUgKwogICAgICAgICBzaXplb2YocmRiLT5Nb3VudFBvaW50UmVwYXJzZUJ1ZmZlcikgLQogICAgICAgICBzaXplb2YocmRiLT5Nb3VudFBvaW50UmVwYXJzZUJ1ZmZlci5QYXRoQnVmZmVyKSArCiAgICAgICAgIC8qIFR3byArMSdzIGZvciBOVUwgdGVybWluYXRvcnMuICovCiAgICAgICAgIChwcmVmaXhfbGVuICsgcHJpbnRfbGVuICsgMSArIHByaW50X2xlbiArIDEpICogc2l6ZW9mKFdDSEFSKTsKLSAgICByZGIgPSAoUFJFUEFSU0VfREFUQV9CVUZGRVIpUHlNZW1fUmF3TWFsbG9jKHJkYl9zaXplKTsKKyAgICByZGIgPSAoX1B5X1BSRVBBUlNFX0RBVEFfQlVGRkVSKVB5TWVtX1Jhd01hbGxvYyhyZGJfc2l6ZSk7CiAgICAgaWYgKHJkYiA9PSBOVUxMKQogICAgICAgICBnb3RvIGNsZWFudXA7CiAKICAgICBtZW1zZXQocmRiLCAwLCByZGJfc2l6ZSk7CiAgICAgcmRiLT5SZXBhcnNlVGFnID0gSU9fUkVQQVJTRV9UQUdfTU9VTlRfUE9JTlQ7Ci0gICAgcmRiLT5SZXBhcnNlRGF0YUxlbmd0aCA9IHJkYl9zaXplIC0gUkVQQVJTRV9EQVRBX0JVRkZFUl9IRUFERVJfU0laRTsKKyAgICByZGItPlJlcGFyc2VEYXRhTGVuZ3RoID0gcmRiX3NpemUgLSBfUHlfUkVQQVJTRV9EQVRBX0JVRkZFUl9IRUFERVJfU0laRTsKICAgICByZGItPk1vdW50UG9pbnRSZXBhcnNlQnVmZmVyLlN1YnN0aXR1dGVOYW1lT2Zmc2V0ID0gMDsKICAgICByZGItPk1vdW50UG9pbnRSZXBhcnNlQnVmZmVyLlN1YnN0aXR1dGVOYW1lTGVuZ3RoID0KICAgICAgICAgKHByZWZpeF9sZW4gKyBwcmludF9sZW4pICogc2l6ZW9mKFdDSEFSKTsKQEAgLTY3NCw3ICs2NzQsNyBAQAogLyogaGVscGVycyBmb3IgY3JlYXRlcHJvY2VzcyAqLwogCiBzdGF0aWMgdW5zaWduZWQgbG9uZwotZ2V0dWxvbmcoUHlPYmplY3QqIG9iaiwgY2hhciogbmFtZSkKK2dldHVsb25nKFB5T2JqZWN0KiBvYmosIGNvbnN0IGNoYXIqIG5hbWUpCiB7CiAgICAgUHlPYmplY3QqIHZhbHVlOwogICAgIHVuc2lnbmVkIGxvbmcgcmV0OwpAQCAtNjkwLDcgKzY5MCw3IEBACiB9CiAKIHN0YXRpYyBIQU5ETEUKLWdldGhhbmRsZShQeU9iamVjdCogb2JqLCBjaGFyKiBuYW1lKQorZ2V0aGFuZGxlKFB5T2JqZWN0KiBvYmosIGNvbnN0IGNoYXIqIG5hbWUpCiB7CiAgICAgUHlPYmplY3QqIHZhbHVlOwogICAgIEhBTkRMRSByZXQ7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2FkZHJpbmZvLmggYi9Nb2R1bGVzL2FkZHJpbmZvLmgKaW5kZXggMWNiNmYwZS4uYzNjODYyNCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9hZGRyaW5mby5oCisrKyBiL01vZHVsZXMvYWRkcmluZm8uaApAQCAtMTQxLDExICsxNDEsNyBAQAogICogUkZDIDI1NTM6IHByb3RvY29sLWluZGVwZW5kZW50IHBsYWNlaG9sZGVyIGZvciBzb2NrZXQgYWRkcmVzc2VzCiAgKi8KICNkZWZpbmUgX1NTX01BWFNJWkUgICAgIDEyOAotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0jZGVmaW5lIF9TU19BTElHTlNJWkUgICAoc2l6ZW9mKFBZX0xPTkdfTE9ORykpCi0jZWxzZQotI2RlZmluZSBfU1NfQUxJR05TSVpFICAgKHNpemVvZihkb3VibGUpKQotI2VuZGlmIC8qIEhBVkVfTE9OR19MT05HICovCisjZGVmaW5lIF9TU19BTElHTlNJWkUgICAoc2l6ZW9mKGxvbmcgbG9uZykpCiAjZGVmaW5lIF9TU19QQUQxU0laRSAgICAoX1NTX0FMSUdOU0laRSAtIHNpemVvZih1X2NoYXIpICogMikKICNkZWZpbmUgX1NTX1BBRDJTSVpFICAgIChfU1NfTUFYU0laRSAtIHNpemVvZih1X2NoYXIpICogMiAtIFwKICAgICAgICAgICAgICAgICBfU1NfUEFEMVNJWkUgLSBfU1NfQUxJR05TSVpFKQpAQCAtMTU4LDExICsxNTQsNyBAQAogICAgIHVuc2lnbmVkIHNob3J0IHNzX2ZhbWlseTsgICAgICAgICAgIC8qIGFkZHJlc3MgZmFtaWx5ICovCiAjZW5kaWYgLyogSEFWRV9TT0NLQUREUl9TQV9MRU4gKi8KICAgICBjaGFyICAgICAgICBfX3NzX3BhZDFbX1NTX1BBRDFTSVpFXTsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgIFBZX0xPTkdfTE9ORyBfX3NzX2FsaWduOyAgICAgICAgICAgIC8qIGZvcmNlIGRlc2lyZWQgc3RydWN0dXJlIHN0b3JhZ2UgYWxpZ25tZW50ICovCi0jZWxzZQotICAgIGRvdWJsZSBfX3NzX2FsaWduOyAgICAgICAgICAvKiBmb3JjZSBkZXNpcmVkIHN0cnVjdHVyZSBzdG9yYWdlIGFsaWdubWVudCAqLwotI2VuZGlmIC8qIEhBVkVfTE9OR19MT05HICovCisgICAgbG9uZyBsb25nIF9fc3NfYWxpZ247ICAgICAgICAgICAgLyogZm9yY2UgZGVzaXJlZCBzdHJ1Y3R1cmUgc3RvcmFnZSBhbGlnbm1lbnQgKi8KICAgICBjaGFyICAgICAgICBfX3NzX3BhZDJbX1NTX1BBRDJTSVpFXTsKIH07CiAjZW5kaWYgLyogIUhBVkVfU09DS0FERFJfU1RPUkFHRSAqLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9hcnJheW1vZHVsZS5jIGIvTW9kdWxlcy9hcnJheW1vZHVsZS5jCmluZGV4IGE0OTY2YjQuLjJjYWE4ZWUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvYXJyYXltb2R1bGUuYworKysgYi9Nb2R1bGVzL2FycmF5bW9kdWxlLmMKQEAgLTMxLDcgKzMxLDcgQEAKICAgICBpbnQgaXRlbXNpemU7CiAgICAgUHlPYmplY3QgKiAoKmdldGl0ZW0pKHN0cnVjdCBhcnJheW9iamVjdCAqLCBQeV9zc2l6ZV90KTsKICAgICBpbnQgKCpzZXRpdGVtKShzdHJ1Y3QgYXJyYXlvYmplY3QgKiwgUHlfc3NpemVfdCwgUHlPYmplY3QgKik7Ci0gICAgY2hhciAqZm9ybWF0czsKKyAgICBjb25zdCBjaGFyICpmb3JtYXRzOwogICAgIGludCBpc19pbnRlZ2VyX3R5cGU7CiAgICAgaW50IGlzX3NpZ25lZDsKIH07CkBAIC00MCw3ICs0MCw3IEBACiAgICAgUHlPYmplY3RfVkFSX0hFQUQKICAgICBjaGFyICpvYl9pdGVtOwogICAgIFB5X3NzaXplX3QgYWxsb2NhdGVkOwotICAgIHN0cnVjdCBhcnJheWRlc2NyICpvYl9kZXNjcjsKKyAgICBjb25zdCBzdHJ1Y3QgYXJyYXlkZXNjciAqb2JfZGVzY3I7CiAgICAgUHlPYmplY3QgKndlYWtyZWZsaXN0OyAvKiBMaXN0IG9mIHdlYWsgcmVmZXJlbmNlcyAqLwogICAgIGludCBvYl9leHBvcnRzOyAgLyogTnVtYmVyIG9mIGV4cG9ydGVkIGJ1ZmZlcnMgKi8KIH0gYXJyYXlvYmplY3Q7CkBAIC00MTgsMjIgKzQxOCwyMCBAQAogICAgIHJldHVybiAwOwogfQogCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLQogc3RhdGljIFB5T2JqZWN0ICoKIHFfZ2V0aXRlbShhcnJheW9iamVjdCAqYXAsIFB5X3NzaXplX3QgaSkKIHsKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZygoKFBZX0xPTkdfTE9ORyAqKWFwLT5vYl9pdGVtKVtpXSk7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKChsb25nIGxvbmcgKilhcC0+b2JfaXRlbSlbaV0pOwogfQogCiBzdGF0aWMgaW50CiBxX3NldGl0ZW0oYXJyYXlvYmplY3QgKmFwLCBQeV9zc2l6ZV90IGksIFB5T2JqZWN0ICp2KQogewotICAgIFBZX0xPTkdfTE9ORyB4OworICAgIGxvbmcgbG9uZyB4OwogICAgIGlmICghUHlBcmdfUGFyc2UodiwgIkw7YXJyYXkgaXRlbSBtdXN0IGJlIGludGVnZXIiLCAmeCkpCiAgICAgICAgIHJldHVybiAtMTsKICAgICBpZiAoaSA+PSAwKQotICAgICAgICAoKFBZX0xPTkdfTE9ORyAqKWFwLT5vYl9pdGVtKVtpXSA9IHg7CisgICAgICAgICgobG9uZyBsb25nICopYXAtPm9iX2l0ZW0pW2ldID0geDsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtNDQxLDIwICs0MzksMjAgQEAKIFFRX2dldGl0ZW0oYXJyYXlvYmplY3QgKmFwLCBQeV9zc2l6ZV90IGkpCiB7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZygKLSAgICAgICAgKCh1bnNpZ25lZCBQWV9MT05HX0xPTkcgKilhcC0+b2JfaXRlbSlbaV0pOworICAgICAgICAoKHVuc2lnbmVkIGxvbmcgbG9uZyAqKWFwLT5vYl9pdGVtKVtpXSk7CiB9CiAKIHN0YXRpYyBpbnQKIFFRX3NldGl0ZW0oYXJyYXlvYmplY3QgKmFwLCBQeV9zc2l6ZV90IGksIFB5T2JqZWN0ICp2KQogewotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB4OworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB4OwogICAgIGlmIChQeUxvbmdfQ2hlY2sodikpIHsKICAgICAgICAgeCA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcodik7Ci0gICAgICAgIGlmICh4ID09ICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpIC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGlmICh4ID09ICh1bnNpZ25lZCBsb25nIGxvbmcpIC0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBQWV9MT05HX0xPTkcgeTsKKyAgICAgICAgbG9uZyBsb25nIHk7CiAgICAgICAgIGlmICghUHlBcmdfUGFyc2UodiwgIkw7YXJyYXkgaXRlbSBtdXN0IGJlIGludGVnZXIiLCAmeSkpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIGlmICh5IDwgMCkgewpAQCAtNDYyLDE0ICs0NjAsMTMgQEAKICAgICAgICAgICAgICAgICAidW5zaWduZWQgbG9uZyBsb25nIGlzIGxlc3MgdGhhbiBtaW5pbXVtIik7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KLSAgICAgICAgeCA9ICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpeTsKKyAgICAgICAgeCA9ICh1bnNpZ25lZCBsb25nIGxvbmcpeTsKICAgICB9CiAKICAgICBpZiAoaSA+PSAwKQotICAgICAgICAoKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyAqKWFwLT5vYl9pdGVtKVtpXSA9IHg7CisgICAgICAgICgodW5zaWduZWQgbG9uZyBsb25nICopYXAtPm9iX2l0ZW0pW2ldID0geDsKICAgICByZXR1cm4gMDsKIH0KLSNlbmRpZgogCiBzdGF0aWMgUHlPYmplY3QgKgogZl9nZXRpdGVtKGFycmF5b2JqZWN0ICphcCwgUHlfc3NpemVfdCBpKQpAQCAtNTExLDcgKzUwOCw3IEBACiAgKiBEb24ndCBmb3JnZXQgdG8gdXBkYXRlIHR5cGVjb2RlX3RvX21mb3JtYXRfY29kZSgpIGlmIHlvdSBhZGQgYSBuZXcKICAqIHR5cGVjb2RlLgogICovCi1zdGF0aWMgc3RydWN0IGFycmF5ZGVzY3IgZGVzY3JpcHRvcnNbXSA9IHsKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYXJyYXlkZXNjciBkZXNjcmlwdG9yc1tdID0gewogICAgIHsnYicsIDEsIGJfZ2V0aXRlbSwgYl9zZXRpdGVtLCAiYiIsIDEsIDF9LAogICAgIHsnQicsIDEsIEJCX2dldGl0ZW0sIEJCX3NldGl0ZW0sICJCIiwgMSwgMH0sCiAgICAgeyd1Jywgc2l6ZW9mKFB5X1VOSUNPREUpLCB1X2dldGl0ZW0sIHVfc2V0aXRlbSwgInUiLCAwLCAwfSwKQEAgLTUyMSwxMCArNTE4LDggQEAKICAgICB7J0knLCBzaXplb2YoaW50KSwgSUlfZ2V0aXRlbSwgSUlfc2V0aXRlbSwgIkkiLCAxLCAwfSwKICAgICB7J2wnLCBzaXplb2YobG9uZyksIGxfZ2V0aXRlbSwgbF9zZXRpdGVtLCAibCIsIDEsIDF9LAogICAgIHsnTCcsIHNpemVvZihsb25nKSwgTExfZ2V0aXRlbSwgTExfc2V0aXRlbSwgIkwiLCAxLCAwfSwKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgIHsncScsIHNpemVvZihQWV9MT05HX0xPTkcpLCBxX2dldGl0ZW0sIHFfc2V0aXRlbSwgInEiLCAxLCAxfSwKLSAgICB7J1EnLCBzaXplb2YoUFlfTE9OR19MT05HKSwgUVFfZ2V0aXRlbSwgUVFfc2V0aXRlbSwgIlEiLCAxLCAwfSwKLSNlbmRpZgorICAgIHsncScsIHNpemVvZihsb25nIGxvbmcpLCBxX2dldGl0ZW0sIHFfc2V0aXRlbSwgInEiLCAxLCAxfSwKKyAgICB7J1EnLCBzaXplb2YobG9uZyBsb25nKSwgUVFfZ2V0aXRlbSwgUVFfc2V0aXRlbSwgIlEiLCAxLCAwfSwKICAgICB7J2YnLCBzaXplb2YoZmxvYXQpLCBmX2dldGl0ZW0sIGZfc2V0aXRlbSwgImYiLCAwLCAwfSwKICAgICB7J2QnLCBzaXplb2YoZG91YmxlKSwgZF9nZXRpdGVtLCBkX3NldGl0ZW0sICJkIiwgMCwgMH0sCiAgICAgeydcMCcsIDAsIDAsIDAsIDAsIDAsIDB9IC8qIFNlbnRpbmVsICovCkBAIC01MzksNyArNTM0LDcgQEAKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWFkNDNkMzdlOTQyYTg4NTRdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLW5ld2FycmF5b2JqZWN0KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlfc3NpemVfdCBzaXplLCBzdHJ1Y3QgYXJyYXlkZXNjciAqZGVzY3IpCituZXdhcnJheW9iamVjdChQeVR5cGVPYmplY3QgKnR5cGUsIFB5X3NzaXplX3Qgc2l6ZSwgY29uc3Qgc3RydWN0IGFycmF5ZGVzY3IgKmRlc2NyKQogewogICAgIGFycmF5b2JqZWN0ICpvcDsKICAgICBzaXplX3QgbmJ5dGVzOwpAQCAtODQxLDEwICs4MzYsMTAgQEAKICAgICAgICAgbWVtc2V0KG5wLT5vYl9pdGVtLCBhLT5vYl9pdGVtWzBdLCBuZXdieXRlcyk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgUHlfc3NpemVfdCBkb25lID0gb2xkYnl0ZXM7Ci0gICAgICAgIFB5X01FTUNQWShucC0+b2JfaXRlbSwgYS0+b2JfaXRlbSwgb2xkYnl0ZXMpOworICAgICAgICBtZW1jcHkobnAtPm9iX2l0ZW0sIGEtPm9iX2l0ZW0sIG9sZGJ5dGVzKTsKICAgICAgICAgd2hpbGUgKGRvbmUgPCBuZXdieXRlcykgewogICAgICAgICAgICAgUHlfc3NpemVfdCBuY29weSA9IChkb25lIDw9IG5ld2J5dGVzLWRvbmUpID8gZG9uZSA6IG5ld2J5dGVzLWRvbmU7Ci0gICAgICAgICAgICBQeV9NRU1DUFkobnAtPm9iX2l0ZW0rZG9uZSwgbnAtPm9iX2l0ZW0sIG5jb3B5KTsKKyAgICAgICAgICAgIG1lbWNweShucC0+b2JfaXRlbStkb25lLCBucC0+b2JfaXRlbSwgbmNvcHkpOwogICAgICAgICAgICAgZG9uZSArPSBuY29weTsKICAgICAgICAgfQogICAgIH0KQEAgLTg1MiwzNyArODQ3LDEwIEBACiB9CiAKIHN0YXRpYyBpbnQKLWFycmF5X2Fzc19zbGljZShhcnJheW9iamVjdCAqYSwgUHlfc3NpemVfdCBpbG93LCBQeV9zc2l6ZV90IGloaWdoLCBQeU9iamVjdCAqdikKK2FycmF5X2RlbF9zbGljZShhcnJheW9iamVjdCAqYSwgUHlfc3NpemVfdCBpbG93LCBQeV9zc2l6ZV90IGloaWdoKQogewogICAgIGNoYXIgKml0ZW07Ci0gICAgUHlfc3NpemVfdCBuOyAvKiBTaXplIG9mIHJlcGxhY2VtZW50IGFycmF5ICovCiAgICAgUHlfc3NpemVfdCBkOyAvKiBDaGFuZ2UgaW4gc2l6ZSAqLwotI2RlZmluZSBiICgoYXJyYXlvYmplY3QgKil2KQotICAgIGlmICh2ID09IE5VTEwpCi0gICAgICAgIG4gPSAwOwotICAgIGVsc2UgaWYgKGFycmF5X0NoZWNrKHYpKSB7Ci0gICAgICAgIG4gPSBQeV9TSVpFKGIpOwotICAgICAgICBpZiAoYSA9PSBiKSB7Ci0gICAgICAgICAgICAvKiBTcGVjaWFsIGNhc2UgImFbaTpqXSA9IGEiIC0tIGNvcHkgYiBmaXJzdCAqLwotICAgICAgICAgICAgaW50IHJldDsKLSAgICAgICAgICAgIHYgPSBhcnJheV9zbGljZShiLCAwLCBuKTsKLSAgICAgICAgICAgIGlmICghdikKLSAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICByZXQgPSBhcnJheV9hc3Nfc2xpY2UoYSwgaWxvdywgaWhpZ2gsIHYpOwotICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAgICAgfQotICAgICAgICBpZiAoYi0+b2JfZGVzY3IgIT0gYS0+b2JfZGVzY3IpIHsKLSAgICAgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAiY2FuIG9ubHkgYXNzaWduIGFycmF5IChub3QgXCIlLjIwMHNcIikgdG8gYXJyYXkgc2xpY2UiLAotICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUodiktPnRwX25hbWUpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQogICAgIGlmIChpbG93IDwgMCkKICAgICAgICAgaWxvdyA9IDA7CiAgICAgZWxzZSBpZiAoaWxvdyA+IFB5X1NJWkUoYSkpCkBAIC04OTQsNyArODYyLDcgQEAKICAgICBlbHNlIGlmIChpaGlnaCA+IFB5X1NJWkUoYSkpCiAgICAgICAgIGloaWdoID0gUHlfU0laRShhKTsKICAgICBpdGVtID0gYS0+b2JfaXRlbTsKLSAgICBkID0gbiAtIChpaGlnaC1pbG93KTsKKyAgICBkID0gaWhpZ2gtaWxvdzsKICAgICAvKiBJc3N1ZSAjNDUwOTogSWYgdGhlIGFycmF5IGhhcyBleHBvcnRlZCBidWZmZXJzIGFuZCB0aGUgc2xpY2UKICAgICAgICBhc3NpZ25tZW50IHdvdWxkIGNoYW5nZSB0aGUgc2l6ZSBvZiB0aGUgYXJyYXksIGZhaWwgZWFybHkgdG8gbWFrZQogICAgICAgIHN1cmUgd2UgZG9uJ3QgbW9kaWZ5IGl0LiAqLwpAQCAtOTAzLDI1ICs4NzEsMTQgQEAKICAgICAgICAgICAgICJjYW5ub3QgcmVzaXplIGFuIGFycmF5IHRoYXQgaXMgZXhwb3J0aW5nIGJ1ZmZlcnMiKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBpZiAoZCA8IDApIHsgLyogRGVsZXRlIC1kIGl0ZW1zICovCi0gICAgICAgIG1lbW1vdmUoaXRlbSArIChpaGlnaCtkKSphLT5vYl9kZXNjci0+aXRlbXNpemUsCisgICAgaWYgKGQgPiAwKSB7IC8qIERlbGV0ZSBkIGl0ZW1zICovCisgICAgICAgIG1lbW1vdmUoaXRlbSArIChpaGlnaC1kKSphLT5vYl9kZXNjci0+aXRlbXNpemUsCiAgICAgICAgICAgICBpdGVtICsgaWhpZ2gqYS0+b2JfZGVzY3ItPml0ZW1zaXplLAogICAgICAgICAgICAgKFB5X1NJWkUoYSktaWhpZ2gpKmEtPm9iX2Rlc2NyLT5pdGVtc2l6ZSk7Ci0gICAgICAgIGlmIChhcnJheV9yZXNpemUoYSwgUHlfU0laRShhKSArIGQpID09IC0xKQorICAgICAgICBpZiAoYXJyYXlfcmVzaXplKGEsIFB5X1NJWkUoYSkgLSBkKSA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgZWxzZSBpZiAoZCA+IDApIHsgLyogSW5zZXJ0IGQgaXRlbXMgKi8KLSAgICAgICAgaWYgKGFycmF5X3Jlc2l6ZShhLCBQeV9TSVpFKGEpICsgZCkpCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIG1lbW1vdmUoaXRlbSArIChpaGlnaCtkKSphLT5vYl9kZXNjci0+aXRlbXNpemUsCi0gICAgICAgICAgICBpdGVtICsgaWhpZ2gqYS0+b2JfZGVzY3ItPml0ZW1zaXplLAotICAgICAgICAgICAgKFB5X1NJWkUoYSktaWhpZ2gpKmEtPm9iX2Rlc2NyLT5pdGVtc2l6ZSk7Ci0gICAgfQotICAgIGlmIChuID4gMCkKLSAgICAgICAgbWVtY3B5KGl0ZW0gKyBpbG93KmEtPm9iX2Rlc2NyLT5pdGVtc2l6ZSwgYi0+b2JfaXRlbSwKLSAgICAgICAgICAgICAgIG4qYi0+b2JfZGVzY3ItPml0ZW1zaXplKTsKICAgICByZXR1cm4gMDsKLSN1bmRlZiBiCiB9CiAKIHN0YXRpYyBpbnQKQEAgLTkzMyw3ICs4OTAsNyBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIGlmICh2ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBhcnJheV9hc3Nfc2xpY2UoYSwgaSwgaSsxLCB2KTsKKyAgICAgICAgcmV0dXJuIGFycmF5X2RlbF9zbGljZShhLCBpLCBpKzEpOwogICAgIHJldHVybiAoKmEtPm9iX2Rlc2NyLT5zZXRpdGVtKShhLCBpLCB2KTsKIH0KIApAQCAtMTE2Myw4ICsxMTIwLDcgQEAKICAgICAgICAgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHNlbGZpLCB2LCBQeV9FUSk7CiAgICAgICAgIFB5X0RFQ1JFRihzZWxmaSk7CiAgICAgICAgIGlmIChjbXAgPiAwKSB7Ci0gICAgICAgICAgICBpZiAoYXJyYXlfYXNzX3NsaWNlKHNlbGYsIGksIGkrMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlPYmplY3QgKilOVUxMKSAhPSAwKQorICAgICAgICAgICAgaWYgKGFycmF5X2RlbF9zbGljZShzZWxmLCBpLCBpKzEpICE9IDApCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgICAgICAgICByZXR1cm4gUHlfTm9uZTsKQEAgLTEyMDcsNyArMTE2Myw3IEBACiAgICAgdiA9IGdldGFycmF5aXRlbSgoUHlPYmplY3QgKilzZWxmLCBpKTsKICAgICBpZiAodiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoYXJyYXlfYXNzX3NsaWNlKHNlbGYsIGksIGkrMSwgKFB5T2JqZWN0ICopTlVMTCkgIT0gMCkgeworICAgIGlmIChhcnJheV9kZWxfc2xpY2Uoc2VsZiwgaSwgaSsxKSAhPSAwKSB7CiAgICAgICAgIFB5X0RFQ1JFRih2KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMTg2MSwxNiArMTgxNywxNCBAQAogICAgICAgICBpbnRzaXplID0gc2l6ZW9mKGxvbmcpOwogICAgICAgICBpc19zaWduZWQgPSAwOwogICAgICAgICBicmVhazsKLSNpZiBIQVZFX0xPTkdfTE9ORwogICAgIGNhc2UgJ3EnOgotICAgICAgICBpbnRzaXplID0gc2l6ZW9mKFBZX0xPTkdfTE9ORyk7CisgICAgICAgIGludHNpemUgPSBzaXplb2YobG9uZyBsb25nKTsKICAgICAgICAgaXNfc2lnbmVkID0gMTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAnUSc6Ci0gICAgICAgIGludHNpemUgPSBzaXplb2YoUFlfTE9OR19MT05HKTsKKyAgICAgICAgaW50c2l6ZSA9IHNpemVvZihsb25nIGxvbmcpOwogICAgICAgICBpc19zaWduZWQgPSAwOwogICAgICAgICBicmVhazsKLSNlbmRpZgogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBVTktOT1dOX0ZPUk1BVDsKICAgICB9CkBAIC0xOTU0LDcgKzE5MDgsNyBAQAogewogICAgIFB5T2JqZWN0ICpjb252ZXJ0ZWRfaXRlbXM7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKLSAgICBzdHJ1Y3QgYXJyYXlkZXNjciAqZGVzY3I7CisgICAgY29uc3Qgc3RydWN0IGFycmF5ZGVzY3IgKmRlc2NyOwogCiAgICAgaWYgKCFQeVR5cGVfQ2hlY2soYXJyYXl0eXBlKSkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLApAQCAtMjA5Miw3ICsyMDQ2LDcgQEAKICAgICAgICAgUHlfc3NpemVfdCBpdGVtY291bnQgPSBQeV9TSVpFKGl0ZW1zKSAvIG1mX2Rlc2NyLnNpemU7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKm1lbXN0ciA9CiAgICAgICAgICAgICAodW5zaWduZWQgY2hhciAqKVB5Qnl0ZXNfQVNfU1RSSU5HKGl0ZW1zKTsKLSAgICAgICAgc3RydWN0IGFycmF5ZGVzY3IgKmRlc2NyOworICAgICAgICBjb25zdCBzdHJ1Y3QgYXJyYXlkZXNjciAqZGVzY3I7CiAKICAgICAgICAgLyogSWYgcG9zc2libGUsIHRyeSB0byBwYWNrIGFycmF5J3MgaXRlbXMgdXNpbmcgYSBkYXRhIHR5cGUKICAgICAgICAgICogdGhhdCBmaXRzIGJldHRlci4gVGhpcyBtYXkgcmVzdWx0IGluIGFuIGFycmF5IHdpdGggbmFycm93ZXIKQEAgLTI1NjIsNyArMjUxNiw3IEBACiAgICAgdmlldy0+Zm9ybWF0ID0gTlVMTDsKICAgICB2aWV3LT5pbnRlcm5hbCA9IE5VTEw7CiAgICAgaWYgKChmbGFncyAmIFB5QlVGX0ZPUk1BVCkgPT0gUHlCVUZfRk9STUFUKSB7Ci0gICAgICAgIHZpZXctPmZvcm1hdCA9IHNlbGYtPm9iX2Rlc2NyLT5mb3JtYXRzOworICAgICAgICB2aWV3LT5mb3JtYXQgPSAoY2hhciAqKXNlbGYtPm9iX2Rlc2NyLT5mb3JtYXRzOwogI2lmZGVmIFB5X1VOSUNPREVfV0lERQogICAgICAgICBpZiAoc2VsZi0+b2JfZGVzY3ItPnR5cGVjb2RlID09ICd1JykgewogICAgICAgICAgICAgdmlldy0+Zm9ybWF0ID0gInciOwpAQCAtMjYwMyw3ICsyNTU3LDcgQEAKIHsKICAgICBpbnQgYzsKICAgICBQeU9iamVjdCAqaW5pdGlhbCA9IE5VTEwsICppdCA9IE5VTEw7Ci0gICAgc3RydWN0IGFycmF5ZGVzY3IgKmRlc2NyOworICAgIGNvbnN0IHN0cnVjdCBhcnJheWRlc2NyICpkZXNjcjsKIAogICAgIGlmICh0eXBlID09ICZBcnJheXR5cGUgJiYgIV9QeUFyZ19Ob0tleXdvcmRzKCJhcnJheS5hcnJheSgpIiwga3dkcykpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjczMiwxMSArMjY4Niw3IEBACiAgICAgICAgIH0KICAgICB9CiAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICAgICAgImJhZCB0eXBlY29kZSAobXVzdCBiZSBiLCBCLCB1LCBoLCBILCBpLCBJLCBsLCBMLCBxLCBRLCBmIG9yIGQpIik7Ci0jZWxzZQotICAgICAgICAiYmFkIHR5cGVjb2RlIChtdXN0IGJlIGIsIEIsIHUsIGgsIEgsIGksIEksIGwsIEwsIGYgb3IgZCkiKTsKLSNlbmRpZgogICAgIHJldHVybiBOVUxMOwogfQogCkBAIC0yODgzLDkgKzI4MzMsMjAgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBhcnJheWl0ZXJfbmV4dChhcnJheWl0ZXJvYmplY3QgKml0KQogeworICAgIGFycmF5b2JqZWN0ICphbzsKKworICAgIGFzc2VydChpdCAhPSBOVUxMKTsKICAgICBhc3NlcnQoUHlBcnJheUl0ZXJfQ2hlY2soaXQpKTsKLSAgICBpZiAoaXQtPmluZGV4IDwgUHlfU0laRShpdC0+YW8pKQotICAgICAgICByZXR1cm4gKCppdC0+Z2V0aXRlbSkoaXQtPmFvLCBpdC0+aW5kZXgrKyk7CisgICAgYW8gPSBpdC0+YW87CisgICAgaWYgKGFvID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGFzc2VydChhcnJheV9DaGVjayhhbykpOworICAgIGlmIChpdC0+aW5kZXggPCBQeV9TSVpFKGFvKSkgeworICAgICAgICByZXR1cm4gKCppdC0+Z2V0aXRlbSkoYW8sIGl0LT5pbmRleCsrKTsKKyAgICB9CisgICAgaXQtPmFvID0gTlVMTDsKKyAgICBQeV9ERUNSRUYoYW8pOwogICAgIHJldHVybiBOVUxMOwogfQogCkBAIC0yOTE0LDggKzI4NzUsMTEgQEAKIGFycmF5X2FycmF5aXRlcmF0b3JfX19yZWR1Y2VfX19pbXBsKGFycmF5aXRlcm9iamVjdCAqc2VsZikKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03ODk4YTUyZThlNjZlMDE2IGlucHV0PWEwNjJlYTFlOTk1MTQxN2FdKi8KIHsKLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTihPKW4iLCBfUHlPYmplY3RfR2V0QnVpbHRpbigiaXRlciIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmFvLCBzZWxmLT5pbmRleCk7CisgICAgUHlPYmplY3QgKmZ1bmMgPSBfUHlPYmplY3RfR2V0QnVpbHRpbigiaXRlciIpOworICAgIGlmIChzZWxmLT5hbyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOKCgpKSIsIGZ1bmMpOworICAgIH0KKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTihPKW4iLCBmdW5jLCBzZWxmLT5hbywgc2VsZi0+aW5kZXgpOwogfQogCiAvKltjbGluaWMgaW5wdXRdCkBAIC0yOTk1LDcgKzI5NTksNyBAQAogICAgIGNoYXIgYnVmZmVyW1B5X0FSUkFZX0xFTkdUSChkZXNjcmlwdG9ycyldLCAqcDsKICAgICBQeU9iamVjdCAqdHlwZWNvZGVzOwogICAgIFB5X3NzaXplX3Qgc2l6ZSA9IDA7Ci0gICAgc3RydWN0IGFycmF5ZGVzY3IgKmRlc2NyOworICAgIGNvbnN0IHN0cnVjdCBhcnJheWRlc2NyICpkZXNjcjsKIAogICAgIGlmIChQeVR5cGVfUmVhZHkoJkFycmF5dHlwZSkgPCAwKQogICAgICAgICByZXR1cm4gLTE7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2F1ZGlvb3AuYyBiL01vZHVsZXMvYXVkaW9vcC5jCmluZGV4IDFlMTMxZDIuLmRjZDc3ODggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvYXVkaW9vcC5jCisrKyBiL01vZHVsZXMvYXVkaW9vcC5jCkBAIC01LDggKzUsNiBAQAogCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAKLXR5cGVkZWYgc2hvcnQgUHlJbnQxNjsKLQogI2lmIGRlZmluZWQoX19DSEFSX1VOU0lHTkVEX18pCiAjaWYgZGVmaW5lZChzaWduZWQpCiAvKiBUaGlzIG1vZHVsZSBjdXJyZW50bHkgZG9lcyBub3Qgd29yayBvbiBzeXN0ZW1zIHdoZXJlIG9ubHkgdW5zaWduZWQKQEAgLTUxLDEzICs0OSwxNSBAQAogI2RlZmluZSBTRUdfU0hJRlQgICAgICAgKDQpICAgICAgICAgICAgIC8qIExlZnQgc2hpZnQgZm9yIHNlZ21lbnQgbnVtYmVyLiAqLwogI2RlZmluZSBTRUdfTUFTSyAgICAgICAgKDB4NzApICAgICAgICAgIC8qIFNlZ21lbnQgZmllbGQgbWFzay4gKi8KIAotc3RhdGljIFB5SW50MTYgc2VnX2FlbmRbOF0gPSB7MHgxRiwgMHgzRiwgMHg3RiwgMHhGRiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MUZGLCAweDNGRiwgMHg3RkYsIDB4RkZGfTsKLXN0YXRpYyBQeUludDE2IHNlZ191ZW5kWzhdID0gezB4M0YsIDB4N0YsIDB4RkYsIDB4MUZGLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzRkYsIDB4N0ZGLCAweEZGRiwgMHgxRkZGfTsKK3N0YXRpYyBjb25zdCBpbnQxNl90IHNlZ19hZW5kWzhdID0geworICAgIDB4MUYsIDB4M0YsIDB4N0YsIDB4RkYsIDB4MUZGLCAweDNGRiwgMHg3RkYsIDB4RkZGCit9Oworc3RhdGljIGNvbnN0IGludDE2X3Qgc2VnX3VlbmRbOF0gPSB7CisgICAgMHgzRiwgMHg3RiwgMHhGRiwgMHgxRkYsIDB4M0ZGLCAweDdGRiwgMHhGRkYsIDB4MUZGRgorfTsKIAotc3RhdGljIFB5SW50MTYKLXNlYXJjaChQeUludDE2IHZhbCwgUHlJbnQxNiAqdGFibGUsIGludCBzaXplKQorc3RhdGljIGludDE2X3QKK3NlYXJjaChpbnQxNl90IHZhbCwgY29uc3QgaW50MTZfdCAqdGFibGUsIGludCBzaXplKQogewogICAgIGludCBpOwogCkBAIC03MCw3ICs3MCw3IEBACiAjZGVmaW5lIHN0X3VsYXcybGluZWFyMTYodWMpIChfc3RfdWxhdzJsaW5lYXIxNlt1Y10pCiAjZGVmaW5lIHN0X2FsYXcybGluZWFyMTYodWMpIChfc3RfYWxhdzJsaW5lYXIxNlt1Y10pCiAKLXN0YXRpYyBQeUludDE2IF9zdF91bGF3MmxpbmVhcjE2WzI1Nl0gPSB7CitzdGF0aWMgY29uc3QgaW50MTZfdCBfc3RfdWxhdzJsaW5lYXIxNlsyNTZdID0gewogICAgIC0zMjEyNCwgIC0zMTEwMCwgIC0zMDA3NiwgIC0yOTA1MiwgIC0yODAyOCwgIC0yNzAwNCwgIC0yNTk4MCwKICAgICAtMjQ5NTYsICAtMjM5MzIsICAtMjI5MDgsICAtMjE4ODQsICAtMjA4NjAsICAtMTk4MzYsICAtMTg4MTIsCiAgICAgLTE3Nzg4LCAgLTE2NzY0LCAgLTE1OTk2LCAgLTE1NDg0LCAgLTE0OTcyLCAgLTE0NDYwLCAgLTEzOTQ4LApAQCAtMTQzLDEwICsxNDMsMTAgQEAKICAqIEpvaG4gV2lsZXkgJiBTb25zLCBwcHMgOTgtMTExIGFuZCA0NzItNDc2LgogICovCiBzdGF0aWMgdW5zaWduZWQgY2hhcgotc3RfMTRsaW5lYXIydWxhdyhQeUludDE2IHBjbV92YWwpICAgICAgIC8qIDIncyBjb21wbGVtZW50ICgxNC1iaXQgcmFuZ2UpICovCitzdF8xNGxpbmVhcjJ1bGF3KGludDE2X3QgcGNtX3ZhbCkgICAgICAgLyogMidzIGNvbXBsZW1lbnQgKDE0LWJpdCByYW5nZSkgKi8KIHsKLSAgICBQeUludDE2ICAgICAgICAgbWFzazsKLSAgICBQeUludDE2ICAgICAgICAgc2VnOworICAgIGludDE2X3QgICAgICAgICBtYXNrOworICAgIGludDE2X3QgICAgICAgICBzZWc7CiAgICAgdW5zaWduZWQgY2hhciAgIHV2YWw7CiAKICAgICAvKiB1LWxhdyBpbnZlcnRzIGFsbCBiaXRzICovCkBAIC0xNzYsNyArMTc2LDcgQEAKIAogfQogCi1zdGF0aWMgUHlJbnQxNiBfc3RfYWxhdzJsaW5lYXIxNlsyNTZdID0geworc3RhdGljIGNvbnN0IGludDE2X3QgX3N0X2FsYXcybGluZWFyMTZbMjU2XSA9IHsKICAgICAgLTU1MDQsICAgLTUyNDgsICAgLTYwMTYsICAgLTU3NjAsICAgLTQ0ODAsICAgLTQyMjQsICAgLTQ5OTIsCiAgICAgIC00NzM2LCAgIC03NTUyLCAgIC03Mjk2LCAgIC04MDY0LCAgIC03ODA4LCAgIC02NTI4LCAgIC02MjcyLAogICAgICAtNzA0MCwgICAtNjc4NCwgICAtMjc1MiwgICAtMjYyNCwgICAtMzAwOCwgICAtMjg4MCwgICAtMjI0MCwKQEAgLTIzNywxMCArMjM3LDEwIEBACiAgKiBKb2huIFdpbGV5ICYgU29ucywgcHBzIDk4LTExMSBhbmQgNDcyLTQ3Ni4KICAqLwogc3RhdGljIHVuc2lnbmVkIGNoYXIKLXN0X2xpbmVhcjJhbGF3KFB5SW50MTYgcGNtX3ZhbCkgLyogMidzIGNvbXBsZW1lbnQgKDEzLWJpdCByYW5nZSkgKi8KK3N0X2xpbmVhcjJhbGF3KGludDE2X3QgcGNtX3ZhbCkgLyogMidzIGNvbXBsZW1lbnQgKDEzLWJpdCByYW5nZSkgKi8KIHsKLSAgICBQeUludDE2ICAgICAgICAgbWFzazsKLSAgICBzaG9ydCAgICAgICAgICAgc2VnOworICAgIGludDE2X3QgICAgICAgICBtYXNrOworICAgIGludDE2X3QgICAgICAgICBzZWc7CiAgICAgdW5zaWduZWQgY2hhciAgIGF2YWw7CiAKICAgICAvKiBBLWxhdyB1c2luZyBldmVuIGJpdCBpbnZlcnNpb24gKi8KQEAgLTI3MCwxMiArMjcwLDEyIEBACiAvKiBFbmQgb2YgY29kZSB0YWtlbiBmcm9tIHNveCAqLwogCiAvKiBJbnRlbCBBRFBDTSBzdGVwIHZhcmlhdGlvbiB0YWJsZSAqLwotc3RhdGljIGludCBpbmRleFRhYmxlWzE2XSA9IHsKK3N0YXRpYyBjb25zdCBpbnQgaW5kZXhUYWJsZVsxNl0gPSB7CiAgICAgLTEsIC0xLCAtMSwgLTEsIDIsIDQsIDYsIDgsCiAgICAgLTEsIC0xLCAtMSwgLTEsIDIsIDQsIDYsIDgsCiB9OwogCi1zdGF0aWMgaW50IHN0ZXBzaXplVGFibGVbODldID0geworc3RhdGljIGNvbnN0IGludCBzdGVwc2l6ZVRhYmxlWzg5XSA9IHsKICAgICA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE2LCAxNywKICAgICAxOSwgMjEsIDIzLCAyNSwgMjgsIDMxLCAzNCwgMzcsIDQxLCA0NSwKICAgICA1MCwgNTUsIDYwLCA2NiwgNzMsIDgwLCA4OCwgOTcsIDEwNywgMTE4LApAQCAtMjk0LDggKzI5NCw4IEBACiAKIAogI2RlZmluZSBHRVRJTlQ4KGNwLCBpKSAgICAgICAgICBHRVRJTlRYKHNpZ25lZCBjaGFyLCAoY3ApLCAoaSkpCi0jZGVmaW5lIEdFVElOVDE2KGNwLCBpKSAgICAgICAgIEdFVElOVFgoc2hvcnQsIChjcCksIChpKSkKLSNkZWZpbmUgR0VUSU5UMzIoY3AsIGkpICAgICAgICAgR0VUSU5UWChQWV9JTlQzMl9ULCAoY3ApLCAoaSkpCisjZGVmaW5lIEdFVElOVDE2KGNwLCBpKSAgICAgICAgIEdFVElOVFgoaW50MTZfdCwgKGNwKSwgKGkpKQorI2RlZmluZSBHRVRJTlQzMihjcCwgaSkgICAgICAgICBHRVRJTlRYKGludDMyX3QsIChjcCksIChpKSkKIAogI2lmIFdPUkRTX0JJR0VORElBTgogI2RlZmluZSBHRVRJTlQyNChjcCwgaSkgICggICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0zMTEsOCArMzExLDggQEAKIAogCiAjZGVmaW5lIFNFVElOVDgoY3AsIGksIHZhbCkgICAgIFNFVElOVFgoc2lnbmVkIGNoYXIsIChjcCksIChpKSwgKHZhbCkpCi0jZGVmaW5lIFNFVElOVDE2KGNwLCBpLCB2YWwpICAgIFNFVElOVFgoc2hvcnQsIChjcCksIChpKSwgKHZhbCkpCi0jZGVmaW5lIFNFVElOVDMyKGNwLCBpLCB2YWwpICAgIFNFVElOVFgoUFlfSU5UMzJfVCwgKGNwKSwgKGkpLCAodmFsKSkKKyNkZWZpbmUgU0VUSU5UMTYoY3AsIGksIHZhbCkgICAgU0VUSU5UWChpbnQxNl90LCAoY3ApLCAoaSksICh2YWwpKQorI2RlZmluZSBTRVRJTlQzMihjcCwgaSwgdmFsKSAgICBTRVRJTlRYKGludDMyX3QsIChjcCksIChpKSwgKHZhbCkpCiAKICNpZiBXT1JEU19CSUdFTkRJQU4KICNkZWZpbmUgU0VUSU5UMjQoY3AsIGksIHZhbCkgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC00NDQsNyArNDQ0LDkgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgZm9yIChpID0gMDsgaSA8IGZyYWdtZW50LT5sZW47IGkgKz0gd2lkdGgpIHsKICAgICAgICAgaW50IHZhbCA9IEdFVFJBV1NBTVBMRSh3aWR0aCwgZnJhZ21lbnQtPmJ1ZiwgaSk7Ci0gICAgICAgIGlmICh2YWwgPCAwKSBhYnN2YWwgPSAoLXZhbCk7CisgICAgICAgIC8qIENhc3QgdG8gdW5zaWduZWQgYmVmb3JlIG5lZ2F0aW5nLiBVbnNpZ25lZCBvdmVyZmxvdyBpcyB3ZWxsLQorICAgICAgICBkZWZpbmVkLCBidXQgc2lnbmVkIG92ZXJmbG93IGlzIG5vdC4gKi8KKyAgICAgICAgaWYgKHZhbCA8IDApIGFic3ZhbCA9ICh1bnNpZ25lZCBpbnQpLShpbnQ2NF90KXZhbDsKICAgICAgICAgZWxzZSBhYnN2YWwgPSB2YWw7CiAgICAgICAgIGlmIChhYnN2YWwgPiBtYXgpIG1heCA9IGFic3ZhbDsKICAgICB9CkBAIC01NDAsNyArNTQyLDcgQEAKICAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcocmVzKTsKIH0KIAotc3RhdGljIGRvdWJsZSBfc3VtMihjb25zdCBzaG9ydCAqYSwgY29uc3Qgc2hvcnQgKmIsIFB5X3NzaXplX3QgbGVuKQorc3RhdGljIGRvdWJsZSBfc3VtMihjb25zdCBpbnQxNl90ICphLCBjb25zdCBpbnQxNl90ICpiLCBQeV9zc2l6ZV90IGxlbikKIHsKICAgICBQeV9zc2l6ZV90IGk7CiAgICAgZG91YmxlIHN1bSA9IDAuMDsKQEAgLTU5OCw3ICs2MDAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgUHlfYnVmZmVyICpyZWZlcmVuY2UpCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTc1MjMwNmQ4M2NiYmFkYSBpbnB1dD02MmMzMDU2MDVlMTgzYzlhXSovCiB7Ci0gICAgY29uc3Qgc2hvcnQgKmNwMSwgKmNwMjsKKyAgICBjb25zdCBpbnQxNl90ICpjcDEsICpjcDI7CiAgICAgUHlfc3NpemVfdCBsZW4xLCBsZW4yOwogICAgIFB5X3NzaXplX3QgaiwgYmVzdF9qOwogICAgIGRvdWJsZSBhal9tMSwgYWpfbG0xOwpAQCAtNjA4LDkgKzYxMCw5IEBACiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhBdWRpb29wRXJyb3IsICJTdHJpbmdzIHNob3VsZCBiZSBldmVuLXNpemVkIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBjcDEgPSAoY29uc3Qgc2hvcnQgKilmcmFnbWVudC0+YnVmOworICAgIGNwMSA9IChjb25zdCBpbnQxNl90ICopZnJhZ21lbnQtPmJ1ZjsKICAgICBsZW4xID0gZnJhZ21lbnQtPmxlbiA+PiAxOwotICAgIGNwMiA9IChjb25zdCBzaG9ydCAqKXJlZmVyZW5jZS0+YnVmOworICAgIGNwMiA9IChjb25zdCBpbnQxNl90ICopcmVmZXJlbmNlLT5idWY7CiAgICAgbGVuMiA9IHJlZmVyZW5jZS0+bGVuID4+IDE7CiAKICAgICBpZiAobGVuMSA8IGxlbjIpIHsKQEAgLTY2Nyw3ICs2NjksNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlfYnVmZmVyICpyZWZlcmVuY2UpCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTRlYTk1NjUyYzFhZmNmOCBpbnB1dD04MTY2ODAzMDFkMDEyYjIxXSovCiB7Ci0gICAgY29uc3Qgc2hvcnQgKmNwMSwgKmNwMjsKKyAgICBjb25zdCBpbnQxNl90ICpjcDEsICpjcDI7CiAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgZG91YmxlIHN1bV9yaV8yLCBzdW1fYWlqX3JpLCByZXN1bHQ7CiAKQEAgLTY3OSw4ICs2ODEsOCBAQAogICAgICAgICBQeUVycl9TZXRTdHJpbmcoQXVkaW9vcEVycm9yLCAiU2FtcGxlcyBzaG91bGQgYmUgc2FtZSBzaXplIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBjcDEgPSAoY29uc3Qgc2hvcnQgKilmcmFnbWVudC0+YnVmOwotICAgIGNwMiA9IChjb25zdCBzaG9ydCAqKXJlZmVyZW5jZS0+YnVmOworICAgIGNwMSA9IChjb25zdCBpbnQxNl90ICopZnJhZ21lbnQtPmJ1ZjsKKyAgICBjcDIgPSAoY29uc3QgaW50MTZfdCAqKXJlZmVyZW5jZS0+YnVmOwogICAgIGxlbiA9IGZyYWdtZW50LT5sZW4gPj4gMTsKICAgICBzdW1fcmlfMiA9IF9zdW0yKGNwMiwgY3AyLCBsZW4pOwogICAgIHN1bV9haWpfcmkgPSBfc3VtMihjcDEsIGNwMiwgbGVuKTsKQEAgLTcwOSw3ICs3MTEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW5ndGgpCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjAwODEyODIzMzUyMzA0MCBpbnB1dD0yZjMwNDgwMWVkNDIzODNjXSovCiB7Ci0gICAgY29uc3Qgc2hvcnQgKmNwMTsKKyAgICBjb25zdCBpbnQxNl90ICpjcDE7CiAgICAgUHlfc3NpemVfdCBsZW4xOwogICAgIFB5X3NzaXplX3QgaiwgYmVzdF9qOwogICAgIGRvdWJsZSBhal9tMSwgYWpfbG0xOwpAQCAtNzE5LDcgKzcyMSw3IEBACiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhBdWRpb29wRXJyb3IsICJTdHJpbmdzIHNob3VsZCBiZSBldmVuLXNpemVkIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBjcDEgPSAoY29uc3Qgc2hvcnQgKilmcmFnbWVudC0+YnVmOworICAgIGNwMSA9IChjb25zdCBpbnQxNl90ICopZnJhZ21lbnQtPmJ1ZjsKICAgICBsZW4xID0gZnJhZ21lbnQtPmxlbiA+PiAxOwogCiAgICAgaWYgKGxlbmd0aCA8IDAgfHwgbGVuMSA8IGxlbmd0aCkgewpAQCAtMTEyMCwxMiArMTEyMiwxMiBAQAogICAgICAgICBpZiAod2lkdGggPT0gMSkKICAgICAgICAgICAgIHZhbCA9IEdFVElOVFgodW5zaWduZWQgY2hhciwgZnJhZ21lbnQtPmJ1ZiwgaSk7CiAgICAgICAgIGVsc2UgaWYgKHdpZHRoID09IDIpCi0gICAgICAgICAgICB2YWwgPSBHRVRJTlRYKHVuc2lnbmVkIHNob3J0LCBmcmFnbWVudC0+YnVmLCBpKTsKKyAgICAgICAgICAgIHZhbCA9IEdFVElOVFgodWludDE2X3QsIGZyYWdtZW50LT5idWYsIGkpOwogICAgICAgICBlbHNlIGlmICh3aWR0aCA9PSAzKQogICAgICAgICAgICAgdmFsID0gKCh1bnNpZ25lZCBpbnQpR0VUSU5UMjQoZnJhZ21lbnQtPmJ1ZiwgaSkpICYgMHhmZmZmZmZ1OwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGFzc2VydCh3aWR0aCA9PSA0KTsKLSAgICAgICAgICAgIHZhbCA9IEdFVElOVFgoUFlfVUlOVDMyX1QsIGZyYWdtZW50LT5idWYsIGkpOworICAgICAgICAgICAgdmFsID0gR0VUSU5UWCh1aW50MzJfdCwgZnJhZ21lbnQtPmJ1ZiwgaSk7CiAgICAgICAgIH0KIAogICAgICAgICB2YWwgKz0gKHVuc2lnbmVkIGludCliaWFzOwpAQCAtMTEzNSwxMiArMTEzNywxMiBAQAogICAgICAgICBpZiAod2lkdGggPT0gMSkKICAgICAgICAgICAgIFNFVElOVFgodW5zaWduZWQgY2hhciwgbmNwLCBpLCB2YWwpOwogICAgICAgICBlbHNlIGlmICh3aWR0aCA9PSAyKQotICAgICAgICAgICAgU0VUSU5UWCh1bnNpZ25lZCBzaG9ydCwgbmNwLCBpLCB2YWwpOworICAgICAgICAgICAgU0VUSU5UWCh1aW50MTZfdCwgbmNwLCBpLCB2YWwpOwogICAgICAgICBlbHNlIGlmICh3aWR0aCA9PSAzKQogICAgICAgICAgICAgU0VUSU5UMjQobmNwLCBpLCAoaW50KXZhbCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgYXNzZXJ0KHdpZHRoID09IDQpOwotICAgICAgICAgICAgU0VUSU5UWChQWV9VSU5UMzJfVCwgbmNwLCBpLCB2YWwpOworICAgICAgICAgICAgU0VUSU5UWCh1aW50MzJfdCwgbmNwLCBpLCB2YWwpOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBydjsKQEAgLTEzMzIsNyArMTMzNCw3IEBACiAgICAgd2VpZ2h0QSAvPSBkOwogICAgIHdlaWdodEIgLz0gZDsKIAotICAgIGlmICgoc2l6ZV90KW5jaGFubmVscyA+IFBZX1NJWkVfTUFYL3NpemVvZihpbnQpKSB7CisgICAgaWYgKChzaXplX3QpbmNoYW5uZWxzID4gU0laRV9NQVgvc2l6ZW9mKGludCkpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX01lbW9yeUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCBlbm91Z2ggbWVtb3J5IGZvciBvdXRwdXQgYnVmZmVyIik7CiAgICAgICAgIHJldHVybiBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9iaW5hc2NpaS5jIGIvTW9kdWxlcy9iaW5hc2NpaS5jCmluZGV4IDFhNDBiNDEuLjliOWNkN2YgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvYmluYXNjaWkuYworKysgYi9Nb2R1bGVzL2JpbmFzY2lpLmMKQEAgLTc0LDcgKzc0LDcgQEAKICNkZWZpbmUgU0tJUCAweDdFCiAjZGVmaW5lIEZBSUwgMHg3RAogCi1zdGF0aWMgdW5zaWduZWQgY2hhciB0YWJsZV9hMmJfaHF4WzI1Nl0gPSB7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciB0YWJsZV9hMmJfaHF4WzI1Nl0gPSB7CiAvKiAgICAgICBeQCAgICBeQSAgICBeQiAgICBeQyAgICBeRCAgICBeRSAgICBeRiAgICBeRyAgICovCiAvKiAwKi8gIEZBSUwsIEZBSUwsIEZBSUwsIEZBSUwsIEZBSUwsIEZBSUwsIEZBSUwsIEZBSUwsCiAvKiAgICAgICBcYiAgICBcdCAgICBcbiAgICBeSyAgICBeTCAgICBcciAgICBeTiAgICBeTyAgICovCkBAIC0xMjUsMTAgKzEyNSwxMCBAQAogICAgIEZBSUwsIEZBSUwsIEZBSUwsIEZBSUwsIEZBSUwsIEZBSUwsIEZBSUwsIEZBSUwsCiB9OwogCi1zdGF0aWMgdW5zaWduZWQgY2hhciB0YWJsZV9iMmFfaHF4W10gPQorc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgdGFibGVfYjJhX2hxeFtdID0KICIhXCIjJCUmJygpKissLTAxMjM0NTY4OUBBQkNERUZHSElKS0xNTlBRUlNUVVZYWVpbYGFiY2RlZmhpamtsbXBxciI7CiAKLXN0YXRpYyBjaGFyIHRhYmxlX2EyYl9iYXNlNjRbXSA9IHsKK3N0YXRpYyBjb25zdCBjaGFyIHRhYmxlX2EyYl9iYXNlNjRbXSA9IHsKICAgICAtMSwtMSwtMSwtMSwgLTEsLTEsLTEsLTEsIC0xLC0xLC0xLC0xLCAtMSwtMSwtMSwtMSwKICAgICAtMSwtMSwtMSwtMSwgLTEsLTEsLTEsLTEsIC0xLC0xLC0xLC0xLCAtMSwtMSwtMSwtMSwKICAgICAtMSwtMSwtMSwtMSwgLTEsLTEsLTEsLTEsIC0xLC0xLC0xLDYyLCAtMSwtMSwtMSw2MywKQEAgLTE0NCwxMiArMTQ0LDEyIEBACiAvKiBNYXggYmluYXJ5IGNodW5rIHNpemU7IGxpbWl0ZWQgb25seSBieSBhdmFpbGFibGUgbWVtb3J5ICovCiAjZGVmaW5lIEJBU0U2NF9NQVhCSU4gKChQWV9TU0laRV9UX01BWCAtIDMpIC8gMikKIAotc3RhdGljIHVuc2lnbmVkIGNoYXIgdGFibGVfYjJhX2Jhc2U2NFtdID0KK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHRhYmxlX2IyYV9iYXNlNjRbXSA9CiAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7CiAKIAogCi1zdGF0aWMgdW5zaWduZWQgc2hvcnQgY3JjdGFiX2hxeFsyNTZdID0geworc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IGNyY3RhYl9ocXhbMjU2XSA9IHsKICAgICAweDAwMDAsIDB4MTAyMSwgMHgyMDQyLCAweDMwNjMsIDB4NDA4NCwgMHg1MGE1LCAweDYwYzYsIDB4NzBlNywKICAgICAweDgxMDgsIDB4OTEyOSwgMHhhMTRhLCAweGIxNmIsIDB4YzE4YywgMHhkMWFkLCAweGUxY2UsIDB4ZjFlZiwKICAgICAweDEyMzEsIDB4MDIxMCwgMHgzMjczLCAweDIyNTIsIDB4NTJiNSwgMHg0Mjk0LCAweDcyZjcsIDB4NjJkNiwKQEAgLTI1Niw3ICsyNTYsOCBAQAogYmluYXNjaWlfYTJiX3V1X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhKQogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWUwMjdmOGUwYjA1OTg3NDIgaW5wdXQ9N2NhZmVhZjczZGY2M2QxY10qLwogewotICAgIHVuc2lnbmVkIGNoYXIgKmFzY2lpX2RhdGEsICpiaW5fZGF0YTsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICphc2NpaV9kYXRhOworICAgIHVuc2lnbmVkIGNoYXIgKmJpbl9kYXRhOwogICAgIGludCBsZWZ0Yml0cyA9IDA7CiAgICAgdW5zaWduZWQgY2hhciB0aGlzX2NoOwogICAgIHVuc2lnbmVkIGludCBsZWZ0Y2hhciA9IDA7CkBAIC0zNDIsMTMgKzM0MywxNSBAQAogYmluYXNjaWlfYjJhX3V1X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhKQogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTAwNzA2NzBlNTJlNGFhNmIgaW5wdXQ9MDBmZGY0NThjZThiNDY1Yl0qLwogewotICAgIHVuc2lnbmVkIGNoYXIgKmFzY2lpX2RhdGEsICpiaW5fZGF0YTsKKyAgICB1bnNpZ25lZCBjaGFyICphc2NpaV9kYXRhOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJpbl9kYXRhOwogICAgIGludCBsZWZ0Yml0cyA9IDA7CiAgICAgdW5zaWduZWQgY2hhciB0aGlzX2NoOwogICAgIHVuc2lnbmVkIGludCBsZWZ0Y2hhciA9IDA7Ci0gICAgUHlPYmplY3QgKnJ2OwotICAgIFB5X3NzaXplX3QgYmluX2xlbjsKKyAgICBQeV9zc2l6ZV90IGJpbl9sZW4sIG91dF9sZW47CisgICAgX1B5Qnl0ZXNXcml0ZXIgd3JpdGVyOwogCisgICAgX1B5Qnl0ZXNXcml0ZXJfSW5pdCgmd3JpdGVyKTsKICAgICBiaW5fZGF0YSA9IGRhdGEtPmJ1ZjsKICAgICBiaW5fbGVuID0gZGF0YS0+bGVuOwogICAgIGlmICggYmluX2xlbiA+IDQ1ICkgewpAQCAtMzU4LDkgKzM2MSwxMCBAQAogICAgIH0KIAogICAgIC8qIFdlJ3JlIGxhenkgYW5kIGFsbG9jYXRlIHRvIG11Y2ggKGZpeGVkIHVwIGxhdGVyKSAqLwotICAgIGlmICggKHJ2PVB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgMiArIChiaW5fbGVuKzIpLzMqNCkpID09IE5VTEwgKQorICAgIG91dF9sZW4gPSAyICsgKGJpbl9sZW4gKyAyKSAvIDMgKiA0OworICAgIGFzY2lpX2RhdGEgPSBfUHlCeXRlc1dyaXRlcl9BbGxvYygmd3JpdGVyLCBvdXRfbGVuKTsKKyAgICBpZiAoYXNjaWlfZGF0YSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBhc2NpaV9kYXRhID0gKHVuc2lnbmVkIGNoYXIgKilQeUJ5dGVzX0FTX1NUUklORyhydik7CiAKICAgICAvKiBTdG9yZSB0aGUgbGVuZ3RoICovCiAgICAgKmFzY2lpX2RhdGErKyA9ICcgJyArIChiaW5fbGVuICYgMDc3KTsKQEAgLTM4MiwxNyArMzg2LDEyIEBACiAgICAgfQogICAgICphc2NpaV9kYXRhKysgPSAnXG4nOyAgICAgICAvKiBBcHBlbmQgYSBjb3VydGVzeSBuZXdsaW5lICovCiAKLSAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZydiwKLSAgICAgICAgICAgICAgICAgICAgICAgKGFzY2lpX2RhdGEgLQotICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIgKilQeUJ5dGVzX0FTX1NUUklORyhydikpKSA8IDApIHsKLSAgICAgICAgUHlfQ0xFQVIocnYpOwotICAgIH0KLSAgICByZXR1cm4gcnY7CisgICAgcmV0dXJuIF9QeUJ5dGVzV3JpdGVyX0ZpbmlzaCgmd3JpdGVyLCBhc2NpaV9kYXRhKTsKIH0KIAogCiBzdGF0aWMgaW50Ci1iaW5hc2NpaV9maW5kX3ZhbGlkKHVuc2lnbmVkIGNoYXIgKnMsIFB5X3NzaXplX3Qgc2xlbiwgaW50IG51bSkKK2JpbmFzY2lpX2ZpbmRfdmFsaWQoY29uc3QgdW5zaWduZWQgY2hhciAqcywgUHlfc3NpemVfdCBzbGVuLCBpbnQgbnVtKQogewogICAgIC8qIEZpbmRzICYgcmV0dXJucyB0aGUgKG51bSsxKXRoCiAgICAgKiogdmFsaWQgY2hhcmFjdGVyIGZvciBiYXNlNjQsIG9yIC0xIGlmIG5vbmUuCkBAIC00MjksMTMgKzQyOCwxNCBAQAogYmluYXNjaWlfYTJiX2Jhc2U2NF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSkKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wNjI4MjIzZjE5ZmQzZjliIGlucHV0PTU4NzJhY2Y2ZTFjYWMyNDNdKi8KIHsKLSAgICB1bnNpZ25lZCBjaGFyICphc2NpaV9kYXRhLCAqYmluX2RhdGE7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYXNjaWlfZGF0YTsKKyAgICB1bnNpZ25lZCBjaGFyICpiaW5fZGF0YTsKICAgICBpbnQgbGVmdGJpdHMgPSAwOwogICAgIHVuc2lnbmVkIGNoYXIgdGhpc19jaDsKICAgICB1bnNpZ25lZCBpbnQgbGVmdGNoYXIgPSAwOwotICAgIFB5T2JqZWN0ICpydjsKICAgICBQeV9zc2l6ZV90IGFzY2lpX2xlbiwgYmluX2xlbjsKICAgICBpbnQgcXVhZF9wb3MgPSAwOworICAgIF9QeUJ5dGVzV3JpdGVyIHdyaXRlcjsKIAogICAgIGFzY2lpX2RhdGEgPSBkYXRhLT5idWY7CiAgICAgYXNjaWlfbGVuID0gZGF0YS0+bGVuOwpAQCAtNDQ3LDExICs0NDcsMTIgQEAKIAogICAgIGJpbl9sZW4gPSAoKGFzY2lpX2xlbiszKS80KSozOyAvKiBVcHBlciBib3VuZCwgY29ycmVjdGVkIGxhdGVyICovCiAKKyAgICBfUHlCeXRlc1dyaXRlcl9Jbml0KCZ3cml0ZXIpOworCiAgICAgLyogQWxsb2NhdGUgdGhlIGJ1ZmZlciAqLwotICAgIGlmICggKHJ2PVB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgYmluX2xlbikpID09IE5VTEwgKQorICAgIGJpbl9kYXRhID0gX1B5Qnl0ZXNXcml0ZXJfQWxsb2MoJndyaXRlciwgYmluX2xlbik7CisgICAgaWYgKGJpbl9kYXRhID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGJpbl9kYXRhID0gKHVuc2lnbmVkIGNoYXIgKilQeUJ5dGVzX0FTX1NUUklORyhydik7Ci0gICAgYmluX2xlbiA9IDA7CiAKICAgICBmb3IoIDsgYXNjaWlfbGVuID4gMDsgYXNjaWlfbGVuLS0sIGFzY2lpX2RhdGErKykgewogICAgICAgICB0aGlzX2NoID0gKmFzY2lpX2RhdGE7CkBAIC00OTYsMzEgKzQ5NywxNyBAQAogICAgICAgICBpZiAoIGxlZnRiaXRzID49IDggKSB7CiAgICAgICAgICAgICBsZWZ0Yml0cyAtPSA4OwogICAgICAgICAgICAgKmJpbl9kYXRhKysgPSAobGVmdGNoYXIgPj4gbGVmdGJpdHMpICYgMHhmZjsKLSAgICAgICAgICAgIGJpbl9sZW4rKzsKICAgICAgICAgICAgIGxlZnRjaGFyICY9ICgoMSA8PCBsZWZ0Yml0cykgLSAxKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChsZWZ0Yml0cyAhPSAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhFcnJvciwgIkluY29ycmVjdCBwYWRkaW5nIik7Ci0gICAgICAgIFB5X0RFQ1JFRihydik7CisgICAgICAgIF9QeUJ5dGVzV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIC8qIEFuZCBzZXQgc3RyaW5nIHNpemUgY29ycmVjdGx5LiBJZiB0aGUgcmVzdWx0IHN0cmluZyBpcyBlbXB0eQotICAgICoqIChiZWNhdXNlIHRoZSBpbnB1dCB3YXMgYWxsIGludmFsaWQpIHJldHVybiB0aGUgc2hhcmVkIGVtcHR5Ci0gICAgKiogc3RyaW5nIGluc3RlYWQ7IF9QeUJ5dGVzX1Jlc2l6ZSgpIHdvbid0IGRvIHRoaXMgZm9yIHVzLgotICAgICovCi0gICAgaWYgKGJpbl9sZW4gPiAwKSB7Ci0gICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJ2LCBiaW5fbGVuKSA8IDApIHsKLSAgICAgICAgICAgIFB5X0NMRUFSKHJ2KTsKLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgUHlfREVDUkVGKHJ2KTsKLSAgICAgICAgcnYgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKCIiLCAwKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJ2OworICAgIHJldHVybiBfUHlCeXRlc1dyaXRlcl9GaW5pc2goJndyaXRlciwgYmluX2RhdGEpOwogfQogCiAKQEAgLTUyOCwyNCArNTE1LDI3IEBACiBiaW5hc2NpaS5iMmFfYmFzZTY0CiAKICAgICBkYXRhOiBQeV9idWZmZXIKLSAgICAvCisgICAgKgorICAgIG5ld2xpbmU6IGludChjX2RlZmF1bHQ9IjEiKSA9IFRydWUKIAogQmFzZTY0LWNvZGUgbGluZSBvZiBkYXRhLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYmluYXNjaWlfYjJhX2Jhc2U2NF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00ZDk2NjYzMTcwNzc4ZGMzIGlucHV0PTE0ZWM0ZTQ3MzcxMTc0YTldKi8KK2JpbmFzY2lpX2IyYV9iYXNlNjRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsIGludCBuZXdsaW5lKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTRhZDYyYzhlODQ4NWQzYjMgaW5wdXQ9N2IyZWE2ZmEzOGQ4OTI0Y10qLwogewotICAgIHVuc2lnbmVkIGNoYXIgKmFzY2lpX2RhdGEsICpiaW5fZGF0YTsKKyAgICB1bnNpZ25lZCBjaGFyICphc2NpaV9kYXRhOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJpbl9kYXRhOwogICAgIGludCBsZWZ0Yml0cyA9IDA7CiAgICAgdW5zaWduZWQgY2hhciB0aGlzX2NoOwogICAgIHVuc2lnbmVkIGludCBsZWZ0Y2hhciA9IDA7Ci0gICAgUHlPYmplY3QgKnJ2OwotICAgIFB5X3NzaXplX3QgYmluX2xlbjsKKyAgICBQeV9zc2l6ZV90IGJpbl9sZW4sIG91dF9sZW47CisgICAgX1B5Qnl0ZXNXcml0ZXIgd3JpdGVyOwogCiAgICAgYmluX2RhdGEgPSBkYXRhLT5idWY7CiAgICAgYmluX2xlbiA9IGRhdGEtPmxlbjsKKyAgICBfUHlCeXRlc1dyaXRlcl9Jbml0KCZ3cml0ZXIpOwogCiAgICAgYXNzZXJ0KGJpbl9sZW4gPj0gMCk7CiAKQEAgLTU1NSwxMSArNTQ1LDE0IEBACiAgICAgfQogCiAgICAgLyogV2UncmUgbGF6eSBhbmQgYWxsb2NhdGUgdG9vIG11Y2ggKGZpeGVkIHVwIGxhdGVyKS4KLSAgICAgICAiKzMiIGxlYXZlcyByb29tIGZvciB1cCB0byB0d28gcGFkIGNoYXJhY3RlcnMgYW5kIGEgdHJhaWxpbmcKLSAgICAgICBuZXdsaW5lLiAgTm90ZSB0aGF0ICdiJyBnZXRzIGVuY29kZWQgYXMgJ1lnPT1cbicgKDEgaW4sIDUgb3V0KS4gKi8KLSAgICBpZiAoIChydj1QeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGJpbl9sZW4qMiArIDMpKSA9PSBOVUxMICkKKyAgICAgICAiKzIiIGxlYXZlcyByb29tIGZvciB1cCB0byB0d28gcGFkIGNoYXJhY3RlcnMuCisgICAgICAgTm90ZSB0aGF0ICdiJyBnZXRzIGVuY29kZWQgYXMgJ1lnPT1cbicgKDEgaW4sIDUgb3V0KS4gKi8KKyAgICBvdXRfbGVuID0gYmluX2xlbioyICsgMjsKKyAgICBpZiAobmV3bGluZSkKKyAgICAgICAgb3V0X2xlbisrOworICAgIGFzY2lpX2RhdGEgPSBfUHlCeXRlc1dyaXRlcl9BbGxvYygmd3JpdGVyLCBvdXRfbGVuKTsKKyAgICBpZiAoYXNjaWlfZGF0YSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBhc2NpaV9kYXRhID0gKHVuc2lnbmVkIGNoYXIgKilQeUJ5dGVzX0FTX1NUUklORyhydik7CiAKICAgICBmb3IoIDsgYmluX2xlbiA+IDAgOyBiaW5fbGVuLS0sIGJpbl9kYXRhKysgKSB7CiAgICAgICAgIC8qIFNoaWZ0IHRoZSBkYXRhIGludG8gb3VyIGJ1ZmZlciAqLwpAQCAtNTgxLDE0ICs1NzQsMTAgQEAKICAgICAgICAgKmFzY2lpX2RhdGErKyA9IHRhYmxlX2IyYV9iYXNlNjRbKGxlZnRjaGFyJjB4ZikgPDwgMl07CiAgICAgICAgICphc2NpaV9kYXRhKysgPSBCQVNFNjRfUEFEOwogICAgIH0KLSAgICAqYXNjaWlfZGF0YSsrID0gJ1xuJzsgICAgICAgLyogQXBwZW5kIGEgY291cnRlc3kgbmV3bGluZSAqLworICAgIGlmIChuZXdsaW5lKQorICAgICAgICAqYXNjaWlfZGF0YSsrID0gJ1xuJzsgICAgICAgLyogQXBwZW5kIGEgY291cnRlc3kgbmV3bGluZSAqLwogCi0gICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcnYsCi0gICAgICAgICAgICAgICAgICAgICAgIChhc2NpaV9kYXRhIC0KLSAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyICopUHlCeXRlc19BU19TVFJJTkcocnYpKSkgPCAwKSB7Ci0gICAgICAgIFB5X0NMRUFSKHJ2KTsKLSAgICB9Ci0gICAgcmV0dXJuIHJ2OworICAgIHJldHVybiBfUHlCeXRlc1dyaXRlcl9GaW5pc2goJndyaXRlciwgYXNjaWlfZGF0YSk7CiB9CiAKIC8qW2NsaW5pYyBpbnB1dF0KQEAgLTYwNCwxNiArNTkzLDE5IEBACiBiaW5hc2NpaV9hMmJfaHF4X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhKQogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTRkNmQ4YzU0ZDU0ZWExYzEgaW5wdXQ9MGQ5MTRjNjgwZTBlZWQ1NV0qLwogewotICAgIHVuc2lnbmVkIGNoYXIgKmFzY2lpX2RhdGEsICpiaW5fZGF0YTsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICphc2NpaV9kYXRhOworICAgIHVuc2lnbmVkIGNoYXIgKmJpbl9kYXRhOwogICAgIGludCBsZWZ0Yml0cyA9IDA7CiAgICAgdW5zaWduZWQgY2hhciB0aGlzX2NoOwogICAgIHVuc2lnbmVkIGludCBsZWZ0Y2hhciA9IDA7Ci0gICAgUHlPYmplY3QgKnJ2OworICAgIFB5T2JqZWN0ICpyZXM7CiAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgaW50IGRvbmUgPSAwOworICAgIF9QeUJ5dGVzV3JpdGVyIHdyaXRlcjsKIAogICAgIGFzY2lpX2RhdGEgPSBkYXRhLT5idWY7CiAgICAgbGVuID0gZGF0YS0+bGVuOworICAgIF9QeUJ5dGVzV3JpdGVyX0luaXQoJndyaXRlcik7CiAKICAgICBhc3NlcnQobGVuID49IDApOwogCkBAIC02MjMsOSArNjE1LDkgQEAKICAgICAvKiBBbGxvY2F0ZSBhIHN0cmluZyB0aGF0IGlzIHRvbyBiaWcgKGZpeGVkIGxhdGVyKQogICAgICAgIEFkZCB0d28gdG8gdGhlIGluaXRpYWwgbGVuZ3RoIHRvIHByZXZlbnQgaW50ZXJuaW5nIHdoaWNoCiAgICAgICAgd291bGQgcHJlY2x1ZGUgc3Vic2VxdWVudCByZXNpemluZy4gICovCi0gICAgaWYgKCAocnY9UHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBsZW4rMikpID09IE5VTEwgKQorICAgIGJpbl9kYXRhID0gX1B5Qnl0ZXNXcml0ZXJfQWxsb2MoJndyaXRlciwgbGVuICsgMik7CisgICAgaWYgKGJpbl9kYXRhID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGJpbl9kYXRhID0gKHVuc2lnbmVkIGNoYXIgKilQeUJ5dGVzX0FTX1NUUklORyhydik7CiAKICAgICBmb3IoIDsgbGVuID4gMCA7IGxlbi0tLCBhc2NpaV9kYXRhKysgKSB7CiAgICAgICAgIC8qIEdldCB0aGUgYnl0ZSBhbmQgbG9vayBpdCB1cCAqLwpAQCAtNjM0LDcgKzYyNiw3IEBACiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKCB0aGlzX2NoID09IEZBSUwgKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoRXJyb3IsICJJbGxlZ2FsIGNoYXIiKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihydik7CisgICAgICAgICAgICBfUHlCeXRlc1dyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCB0aGlzX2NoID09IERPTkUgKSB7CkBAIC02NTYsMjEgKzY0OCwxNCBAQAogICAgIGlmICggbGVmdGJpdHMgJiYgIWRvbmUgKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhJbmNvbXBsZXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgIlN0cmluZyBoYXMgaW5jb21wbGV0ZSBudW1iZXIgb2YgYnl0ZXMiKTsKLSAgICAgICAgUHlfREVDUkVGKHJ2KTsKKyAgICAgICAgX1B5Qnl0ZXNXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJ2LAotICAgICAgICAgICAgICAgICAgICAgICAoYmluX2RhdGEgLQotICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIgKilQeUJ5dGVzX0FTX1NUUklORyhydikpKSA8IDApIHsKLSAgICAgICAgUHlfQ0xFQVIocnYpOwotICAgIH0KLSAgICBpZiAocnYpIHsKLSAgICAgICAgUHlPYmplY3QgKnJydiA9IFB5X0J1aWxkVmFsdWUoIk9pIiwgcnYsIGRvbmUpOwotICAgICAgICBQeV9ERUNSRUYocnYpOwotICAgICAgICByZXR1cm4gcnJ2OwotICAgIH0KIAotICAgIHJldHVybiBOVUxMOworICAgIHJlcyA9IF9QeUJ5dGVzV3JpdGVyX0ZpbmlzaCgmd3JpdGVyLCBiaW5fZGF0YSk7CisgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTmkiLCByZXMsIGRvbmUpOwogfQogCiAKQEAgLTY4NywxMSArNjcyLDEzIEBACiBiaW5hc2NpaV9ybGVjb2RlX2hxeF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSkKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zOTNkNzkzMzhmNWY1NjI5IGlucHV0PWUxZjE3MTI0NDdhODJiMDldKi8KIHsKLSAgICB1bnNpZ25lZCBjaGFyICppbl9kYXRhLCAqb3V0X2RhdGE7Ci0gICAgUHlPYmplY3QgKnJ2OworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluX2RhdGE7CisgICAgdW5zaWduZWQgY2hhciAqb3V0X2RhdGE7CiAgICAgdW5zaWduZWQgY2hhciBjaDsKICAgICBQeV9zc2l6ZV90IGluLCBpbmVuZCwgbGVuOworICAgIF9QeUJ5dGVzV3JpdGVyIHdyaXRlcjsKIAorICAgIF9QeUJ5dGVzV3JpdGVyX0luaXQoJndyaXRlcik7CiAgICAgaW5fZGF0YSA9IGRhdGEtPmJ1ZjsKICAgICBsZW4gPSBkYXRhLT5sZW47CiAKQEAgLTcwMSw5ICs2ODgsOSBAQAogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKIAogICAgIC8qIFdvcnN0IGNhc2U6IG91dHB1dCBpcyB0d2ljZSBhcyBiaWcgYXMgaW5wdXQgKGZpeGVkIGxhdGVyKSAqLwotICAgIGlmICggKHJ2PVB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbGVuKjIrMikpID09IE5VTEwgKQorICAgIG91dF9kYXRhID0gX1B5Qnl0ZXNXcml0ZXJfQWxsb2MoJndyaXRlciwgbGVuICogMiArIDIpOworICAgIGlmIChvdXRfZGF0YSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBvdXRfZGF0YSA9ICh1bnNpZ25lZCBjaGFyICopUHlCeXRlc19BU19TVFJJTkcocnYpOwogCiAgICAgZm9yKCBpbj0wOyBpbjxsZW47IGluKyspIHsKICAgICAgICAgY2ggPSBpbl9kYXRhW2luXTsKQEAgLTcyOSwxMiArNzE2LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZydiwKLSAgICAgICAgICAgICAgICAgICAgICAgKG91dF9kYXRhIC0KLSAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyICopUHlCeXRlc19BU19TVFJJTkcocnYpKSkgPCAwKSB7Ci0gICAgICAgIFB5X0NMRUFSKHJ2KTsKLSAgICB9Ci0gICAgcmV0dXJuIHJ2OworCisgICAgcmV0dXJuIF9QeUJ5dGVzV3JpdGVyX0ZpbmlzaCgmd3JpdGVyLCBvdXRfZGF0YSk7CiB9CiAKIApAQCAtNzUxLDE1ICs3MzQsMTcgQEAKIGJpbmFzY2lpX2IyYV9ocXhfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEpCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDBhYTVhNzA0YmM5ZjdkZSBpbnB1dD05NTk2ZWJlMDE5ZmUxMmJhXSovCiB7Ci0gICAgdW5zaWduZWQgY2hhciAqYXNjaWlfZGF0YSwgKmJpbl9kYXRhOworICAgIHVuc2lnbmVkIGNoYXIgKmFzY2lpX2RhdGE7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYmluX2RhdGE7CiAgICAgaW50IGxlZnRiaXRzID0gMDsKICAgICB1bnNpZ25lZCBjaGFyIHRoaXNfY2g7CiAgICAgdW5zaWduZWQgaW50IGxlZnRjaGFyID0gMDsKLSAgICBQeU9iamVjdCAqcnY7CiAgICAgUHlfc3NpemVfdCBsZW47CisgICAgX1B5Qnl0ZXNXcml0ZXIgd3JpdGVyOwogCiAgICAgYmluX2RhdGEgPSBkYXRhLT5idWY7CiAgICAgbGVuID0gZGF0YS0+bGVuOworICAgIF9QeUJ5dGVzV3JpdGVyX0luaXQoJndyaXRlcik7CiAKICAgICBhc3NlcnQobGVuID49IDApOwogCkBAIC03NjcsOSArNzUyLDkgQEAKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CiAKICAgICAvKiBBbGxvY2F0ZSBhIGJ1ZmZlciB0aGF0IGlzIGF0IGxlYXN0IGxhcmdlIGVub3VnaCAqLwotICAgIGlmICggKHJ2PVB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbGVuKjIrMikpID09IE5VTEwgKQorICAgIGFzY2lpX2RhdGEgPSBfUHlCeXRlc1dyaXRlcl9BbGxvYygmd3JpdGVyLCBsZW4gKiAyICsgMik7CisgICAgaWYgKGFzY2lpX2RhdGEgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYXNjaWlfZGF0YSA9ICh1bnNpZ25lZCBjaGFyICopUHlCeXRlc19BU19TVFJJTkcocnYpOwogCiAgICAgZm9yKCA7IGxlbiA+IDAgOyBsZW4tLSwgYmluX2RhdGErKyApIHsKICAgICAgICAgLyogU2hpZnQgaW50byBvdXIgYnVmZmVyLCBhbmQgb3V0cHV0IGFueSA2Yml0cyByZWFkeSAqLwpAQCAtNzg2LDEyICs3NzEsOCBAQAogICAgICAgICBsZWZ0Y2hhciA8PD0gKDYtbGVmdGJpdHMpOwogICAgICAgICAqYXNjaWlfZGF0YSsrID0gdGFibGVfYjJhX2hxeFtsZWZ0Y2hhciAmIDB4M2ZdOwogICAgIH0KLSAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZydiwKLSAgICAgICAgICAgICAgICAgICAgICAgKGFzY2lpX2RhdGEgLQotICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIgKilQeUJ5dGVzX0FTX1NUUklORyhydikpKSA8IDApIHsKLSAgICAgICAgUHlfQ0xFQVIocnYpOwotICAgIH0KLSAgICByZXR1cm4gcnY7CisKKyAgICByZXR1cm4gX1B5Qnl0ZXNXcml0ZXJfRmluaXNoKCZ3cml0ZXIsIGFzY2lpX2RhdGEpOwogfQogCiAKQEAgLTgwOCwxMyArNzg5LDE1IEBACiBiaW5hc2NpaV9ybGVkZWNvZGVfaHF4X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhKQogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk4MjY2MTk1NjVkZTFjNmMgaW5wdXQ9NTRjZGQ0OWZjMDE0NDAyY10qLwogewotICAgIHVuc2lnbmVkIGNoYXIgKmluX2RhdGEsICpvdXRfZGF0YTsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICppbl9kYXRhOworICAgIHVuc2lnbmVkIGNoYXIgKm91dF9kYXRhOwogICAgIHVuc2lnbmVkIGNoYXIgaW5fYnl0ZSwgaW5fcmVwZWF0OwotICAgIFB5T2JqZWN0ICpydjsKLSAgICBQeV9zc2l6ZV90IGluX2xlbiwgb3V0X2xlbiwgb3V0X2xlbl9sZWZ0OworICAgIFB5X3NzaXplX3QgaW5fbGVuOworICAgIF9QeUJ5dGVzV3JpdGVyIHdyaXRlcjsKIAogICAgIGluX2RhdGEgPSBkYXRhLT5idWY7CiAgICAgaW5fbGVuID0gZGF0YS0+bGVuOworICAgIF9QeUJ5dGVzV3JpdGVyX0luaXQoJndyaXRlcik7CiAKICAgICBhc3NlcnQoaW5fbGVuID49IDApOwogCkBAIC04MjUsNTkgKzgwOCw0OCBAQAogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKIAogICAgIC8qIEFsbG9jYXRlIGEgYnVmZmVyIG9mIHJlYXNvbmFibGUgc2l6ZS4gUmVzaXplZCB3aGVuIG5lZWRlZCAqLwotICAgIG91dF9sZW4gPSBpbl9sZW4qMjsKLSAgICBpZiAoIChydj1QeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIG91dF9sZW4pKSA9PSBOVUxMICkKKyAgICBvdXRfZGF0YSA9IF9QeUJ5dGVzV3JpdGVyX0FsbG9jKCZ3cml0ZXIsIGluX2xlbik7CisgICAgaWYgKG91dF9kYXRhID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIG91dF9sZW5fbGVmdCA9IG91dF9sZW47Ci0gICAgb3V0X2RhdGEgPSAodW5zaWduZWQgY2hhciAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHJ2KTsKKworICAgIC8qIFVzZSBvdmVyYWxsb2NhdGlvbiAqLworICAgIHdyaXRlci5vdmVyYWxsb2NhdGUgPSAxOwogCiAgICAgLyoKICAgICAqKiBXZSBuZWVkIHR3byBtYWNyb3MgaGVyZSB0byBnZXQvcHV0IGJ5dGVzIGFuZCBoYW5kbGUKICAgICAqKiBlbmQtb2YtYnVmZmVyIGZvciBpbnB1dCBhbmQgb3V0cHV0IHN0cmluZ3MuCiAgICAgKi8KLSNkZWZpbmUgSU5CWVRFKGIpIFwKLSAgICBkbyB7IFwKLSAgICAgICAgICAgICBpZiAoIC0taW5fbGVuIDwgMCApIHsgXAotICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoSW5jb21wbGV0ZSwgIiIpOyBcCi0gICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihydik7IFwKLSAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7IFwKLSAgICAgICAgICAgICB9IFwKLSAgICAgICAgICAgICBiID0gKmluX2RhdGErKzsgXAorI2RlZmluZSBJTkJZVEUoYikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgaWYgKCAtLWluX2xlbiA8IDAgKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoSW5jb21wbGV0ZSwgIiIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICBnb3RvIGVycm9yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgYiA9ICppbl9kYXRhKys7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUoMCkKIAotI2RlZmluZSBPVVRCWVRFKGIpIFwKLSAgICBkbyB7IFwKLSAgICAgICAgICAgICBpZiAoIC0tb3V0X2xlbl9sZWZ0IDwgMCApIHsgXAotICAgICAgICAgICAgICAgICAgICAgIGlmICggb3V0X2xlbiA+IFBZX1NTSVpFX1RfTUFYIC8gMikgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7IFwKLSAgICAgICAgICAgICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZydiwgMipvdXRfbGVuKSA8IDApIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIHsgUHlfWERFQ1JFRihydik7IHJldHVybiBOVUxMOyB9IFwKLSAgICAgICAgICAgICAgICAgICAgICBvdXRfZGF0YSA9ICh1bnNpZ25lZCBjaGFyICopUHlCeXRlc19BU19TVFJJTkcocnYpIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIG91dF9sZW47IFwKLSAgICAgICAgICAgICAgICAgICAgICBvdXRfbGVuX2xlZnQgPSBvdXRfbGVuLTE7IFwKLSAgICAgICAgICAgICAgICAgICAgICBvdXRfbGVuID0gb3V0X2xlbiAqIDI7IFwKLSAgICAgICAgICAgICB9IFwKLSAgICAgICAgICAgICAqb3V0X2RhdGErKyA9IGI7IFwKLSAgICB9IHdoaWxlKDApCi0KLSAgICAgICAgLyoKLSAgICAgICAgKiogSGFuZGxlIGZpcnN0IGJ5dGUgc2VwYXJhdGVseSAoc2luY2Ugd2UgaGF2ZSB0byBnZXQgYW5ncnkKLSAgICAgICAgKiogaW4gY2FzZSBvZiBhbiBvcnBoYW5lZCBSTEUgY29kZSkuCi0gICAgICAgICovCi0gICAgICAgIElOQllURShpbl9ieXRlKTsKKyAgICAvKgorICAgICoqIEhhbmRsZSBmaXJzdCBieXRlIHNlcGFyYXRlbHkgKHNpbmNlIHdlIGhhdmUgdG8gZ2V0IGFuZ3J5CisgICAgKiogaW4gY2FzZSBvZiBhbiBvcnBoYW5lZCBSTEUgY29kZSkuCisgICAgKi8KKyAgICBJTkJZVEUoaW5fYnl0ZSk7CiAKICAgICBpZiAoaW5fYnl0ZSA9PSBSVU5DSEFSKSB7CiAgICAgICAgIElOQllURShpbl9yZXBlYXQpOworICAgICAgICAvKiBvbmx5IDEgYnl0ZSB3aWxsIGJlIHdyaXR0ZW4sIGJ1dCAyIGJ5dGVzIHdlcmUgcHJlYWxsb2NhdGVkOgorICAgICAgICAgICBzdWJ0cmFjdCAxIGJ5dGUgdG8gcHJldmVudCBvdmVyYWxsb2NhdGlvbiAqLworICAgICAgICB3cml0ZXIubWluX3NpemUtLTsKKwogICAgICAgICBpZiAoaW5fcmVwZWF0ICE9IDApIHsKICAgICAgICAgICAgIC8qIE5vdGUgRXJyb3IsIG5vdCBJbmNvbXBsZXRlICh3aGljaCBpcyBhdCB0aGUgZW5kCiAgICAgICAgICAgICAqKiBvZiB0aGUgc3RyaW5nIG9ubHkpLiBUaGlzIGlzIGEgcHJvZ3JhbW1lciBlcnJvci4KICAgICAgICAgICAgICovCiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoRXJyb3IsICJPcnBoYW5lZCBSTEUgY29kZSBhdCBzdGFydCIpOwotICAgICAgICAgICAgUHlfREVDUkVGKHJ2KTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQotICAgICAgICBPVVRCWVRFKFJVTkNIQVIpOworICAgICAgICAqb3V0X2RhdGErKyA9IFJVTkNIQVI7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgT1VUQllURShpbl9ieXRlKTsKKyAgICAgICAgKm91dF9kYXRhKysgPSBpbl9ieXRlOwogICAgIH0KIAogICAgIHdoaWxlKCBpbl9sZW4gPiAwICkgewpAQCAtODg1LDI2ICs4NTcsMzkgQEAKIAogICAgICAgICBpZiAoaW5fYnl0ZSA9PSBSVU5DSEFSKSB7CiAgICAgICAgICAgICBJTkJZVEUoaW5fcmVwZWF0KTsKKyAgICAgICAgICAgIC8qIG9ubHkgMSBieXRlIHdpbGwgYmUgd3JpdHRlbiwgYnV0IDIgYnl0ZXMgd2VyZSBwcmVhbGxvY2F0ZWQ6CisgICAgICAgICAgICAgICBzdWJ0cmFjdCAxIGJ5dGUgdG8gcHJldmVudCBvdmVyYWxsb2NhdGlvbiAqLworICAgICAgICAgICAgd3JpdGVyLm1pbl9zaXplLS07CisKICAgICAgICAgICAgIGlmICggaW5fcmVwZWF0ID09IDAgKSB7CiAgICAgICAgICAgICAgICAgLyogSnVzdCBhbiBlc2NhcGVkIFJVTkNIQVIgdmFsdWUgKi8KLSAgICAgICAgICAgICAgICBPVVRCWVRFKFJVTkNIQVIpOworICAgICAgICAgICAgICAgICpvdXRfZGF0YSsrID0gUlVOQ0hBUjsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLyogUGljayB1cCB2YWx1ZSBhbmQgb3V0cHV0IGEgc2VxdWVuY2Ugb2YgaXQgKi8KICAgICAgICAgICAgICAgICBpbl9ieXRlID0gb3V0X2RhdGFbLTFdOworCisgICAgICAgICAgICAgICAgLyogZW5sYXJnZSB0aGUgYnVmZmVyIGlmIG5lZWRlZCAqLworICAgICAgICAgICAgICAgIGlmIChpbl9yZXBlYXQgPiAxKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIC0xIGJlY2F1c2Ugd2UgYWxyZWFkeSBwcmVhbGxvY2F0ZWQgMSBieXRlICovCisgICAgICAgICAgICAgICAgICAgIG91dF9kYXRhID0gX1B5Qnl0ZXNXcml0ZXJfUHJlcGFyZSgmd3JpdGVyLCBvdXRfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluX3JlcGVhdCAtIDEpOworICAgICAgICAgICAgICAgICAgICBpZiAob3V0X2RhdGEgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgd2hpbGUgKCAtLWluX3JlcGVhdCA+IDAgKQotICAgICAgICAgICAgICAgICAgICBPVVRCWVRFKGluX2J5dGUpOworICAgICAgICAgICAgICAgICAgICAqb3V0X2RhdGErKyA9IGluX2J5dGU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvKiBOb3JtYWwgYnl0ZSAqLwotICAgICAgICAgICAgT1VUQllURShpbl9ieXRlKTsKKyAgICAgICAgICAgICpvdXRfZGF0YSsrID0gaW5fYnl0ZTsKICAgICAgICAgfQogICAgIH0KLSAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZydiwKLSAgICAgICAgICAgICAgICAgICAgICAgKG91dF9kYXRhIC0KLSAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyICopUHlCeXRlc19BU19TVFJJTkcocnYpKSkgPCAwKSB7Ci0gICAgICAgIFB5X0NMRUFSKHJ2KTsKLSAgICB9Ci0gICAgcmV0dXJuIHJ2OworICAgIHJldHVybiBfUHlCeXRlc1dyaXRlcl9GaW5pc2goJndyaXRlciwgb3V0X2RhdGEpOworCitlcnJvcjoKKyAgICBfUHlCeXRlc1dyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOworICAgIHJldHVybiBOVUxMOwogfQogCiAKQEAgLTkyMiw3ICs5MDcsNyBAQAogYmluYXNjaWlfY3JjX2hxeF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwgdW5zaWduZWQgaW50IGNyYykKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04ZWMyYTc4NTkwZDE5MTcwIGlucHV0PWFkZDhjNTM3MTJjY2NlZGFdKi8KIHsKLSAgICB1bnNpZ25lZCBjaGFyICpiaW5fZGF0YTsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpiaW5fZGF0YTsKICAgICBQeV9zc2l6ZV90IGxlbjsKIAogICAgIGNyYyAmPSAweGZmZmY7CkBAIC0xMDAwLDcgKzk4NSw3IEBACiAgICAgIHVzaW5nIGJ5dGUtc3dhcCBpbnN0cnVjdGlvbnMuCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAotc3RhdGljIHVuc2lnbmVkIGludCBjcmNfMzJfdGFiWzI1Nl0gPSB7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IGNyY18zMl90YWJbMjU2XSA9IHsKIDB4MDAwMDAwMDBVLCAweDc3MDczMDk2VSwgMHhlZTBlNjEyY1UsIDB4OTkwOTUxYmFVLCAweDA3NmRjNDE5VSwKIDB4NzA2YWY0OGZVLCAweGU5NjNhNTM1VSwgMHg5ZTY0OTVhM1UsIDB4MGVkYjg4MzJVLCAweDc5ZGNiOGE0VSwKIDB4ZTBkNWU5MWVVLCAweDk3ZDJkOTg4VSwgMHgwOWI2NGMyYlUsIDB4N2ViMTdjYmRVLCAweGU3YjgyZDA3VSwKQEAgLTEwNzMsNyArMTA1OCw3IEBACiAjaWZkZWYgVVNFX1pMSUJfQ1JDMzIKIC8qIFRoaXMgd2FzIHRha2VuIGZyb20gemxpYm1vZHVsZS5jIFB5WmxpYl9jcmMzMiAoYnV0IGlzIFBZX1NTSVpFX1RfQ0xFQU4pICovCiB7Ci0gICAgQnl0ZSAqYnVmOworICAgIGNvbnN0IEJ5dGUgKmJ1ZjsKICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICBpbnQgc2lnbmVkX3ZhbDsKIApAQCAtMTA4NCw3ICsxMDY5LDcgQEAKIH0KICNlbHNlICAvKiBVU0VfWkxJQl9DUkMzMiAqLwogeyAvKiBCeSBKaW0gQWhsc3Ryb207IEFsbCByaWdodHMgdHJhbnNmZXJyZWQgdG8gQ05SSSAqLwotICAgIHVuc2lnbmVkIGNoYXIgKmJpbl9kYXRhOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJpbl9kYXRhOwogICAgIFB5X3NzaXplX3QgbGVuOwogICAgIHVuc2lnbmVkIGludCByZXN1bHQ7CiAKQEAgLTExNjcsNyArMTE1Miw3IEBACiBiaW5hc2NpaV9hMmJfaGV4X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpoZXhzdHIpCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGNjMWExMzlhZjBlZWVjYiBpbnB1dD05ZTFlN2YyZjk0ZGIyNGZkXSovCiB7Ci0gICAgY2hhciogYXJnYnVmOworICAgIGNvbnN0IGNoYXIqIGFyZ2J1ZjsKICAgICBQeV9zc2l6ZV90IGFyZ2xlbjsKICAgICBQeU9iamVjdCAqcmV0dmFsOwogICAgIGNoYXIqIHJldGJ1ZjsKQEAgLTEyMjQsNyArMTIwOSw3IEBACiAgICAgcmV0dXJuIGJpbmFzY2lpX2EyYl9oZXhfaW1wbChtb2R1bGUsIGhleHN0cik7CiB9CiAKLXN0YXRpYyBpbnQgdGFibGVfaGV4WzEyOF0gPSB7CitzdGF0aWMgY29uc3QgaW50IHRhYmxlX2hleFsxMjhdID0gewogICAtMSwtMSwtMSwtMSwgLTEsLTEsLTEsLTEsIC0xLC0xLC0xLC0xLCAtMSwtMSwtMSwtMSwKICAgLTEsLTEsLTEsLTEsIC0xLC0xLC0xLC0xLCAtMSwtMSwtMSwtMSwgLTEsLTEsLTEsLTEsCiAgIC0xLC0xLC0xLC0xLCAtMSwtMSwtMSwtMSwgLTEsLTEsLTEsLTEsIC0xLC0xLC0xLC0xLApAQCAtMTI1NSw3ICsxMjQwLDggQEAKIHsKICAgICBQeV9zc2l6ZV90IGluLCBvdXQ7CiAgICAgY2hhciBjaDsKLSAgICB1bnNpZ25lZCBjaGFyICphc2NpaV9kYXRhLCAqb2RhdGE7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYXNjaWlfZGF0YTsKKyAgICB1bnNpZ25lZCBjaGFyICpvZGF0YTsKICAgICBQeV9zc2l6ZV90IGRhdGFsZW4gPSAwOwogICAgIFB5T2JqZWN0ICpydjsKIApAQCAtMTM2MiwxMyArMTM0OCwxNCBAQAogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWU5ODg0NDcyZWJiMWE5NGMgaW5wdXQ9N2YyYTlhYWEwMDhlOTJiMl0qLwogewogICAgIFB5X3NzaXplX3QgaW4sIG91dDsKLSAgICB1bnNpZ25lZCBjaGFyICpkYXRhYnVmLCAqb2RhdGE7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YWJ1ZjsKKyAgICB1bnNpZ25lZCBjaGFyICpvZGF0YTsKICAgICBQeV9zc2l6ZV90IGRhdGFsZW4gPSAwLCBvZGF0YWxlbiA9IDA7CiAgICAgUHlPYmplY3QgKnJ2OwogICAgIHVuc2lnbmVkIGludCBsaW5lbGVuID0gMDsKICAgICB1bnNpZ25lZCBjaGFyIGNoOwogICAgIGludCBjcmxmID0gMDsKLSAgICB1bnNpZ25lZCBjaGFyICpwOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnA7CiAKICAgICBkYXRhYnVmID0gZGF0YS0+YnVmOwogICAgIGRhdGFsZW4gPSBkYXRhLT5sZW47CkBAIC0xMzc3LDcgKzEzNjQsNyBAQAogICAgIC8qIFhYWDogdGhpcyBmdW5jdGlvbiBoYXMgdGhlIHNpZGUgZWZmZWN0IG9mIGNvbnZlcnRpbmcgYWxsIG9mCiAgICAgICogdGhlIGVuZCBvZiBsaW5lcyB0byBiZSB0aGUgc2FtZSBkZXBlbmRpbmcgb24gdGhpcyBkZXRlY3Rpb24KICAgICAgKiBoZXJlICovCi0gICAgcCA9ICh1bnNpZ25lZCBjaGFyICopIG1lbWNocihkYXRhYnVmLCAnXG4nLCBkYXRhbGVuKTsKKyAgICBwID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgbWVtY2hyKGRhdGFidWYsICdcbicsIGRhdGFsZW4pOwogICAgIGlmICgocCAhPSBOVUxMKSAmJiAocCA+IGRhdGFidWYpICYmICgqKHAtMSkgPT0gJ1xyJykpCiAgICAgICAgIGNybGYgPSAxOwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2Nqa2NvZGVjcy9jamtjb2RlY3MuaCBiL01vZHVsZXMvY2prY29kZWNzL2Nqa2NvZGVjcy5oCmluZGV4IGI3MmEzZjAuLjJhZTI4ZWMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2prY29kZWNzL2Nqa2NvZGVjcy5oCisrKyBiL01vZHVsZXMvY2prY29kZWNzL2Nqa2NvZGVjcy5oCkBAIC0yNjcsNyArMjY3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJlbmNvZGluZyBuYW1lIG11c3QgYmUgYSBzdHJpbmcuIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBlbmMgPSBfUHlVbmljb2RlX0FzU3RyaW5nKGVuY29kaW5nKTsKKyAgICBlbmMgPSBQeVVuaWNvZGVfQXNVVEY4KGVuY29kaW5nKTsKICAgICBpZiAoZW5jID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2Nqa2NvZGVjcy9jbGluaWMvbXVsdGlieXRlY29kZWMuYy5oIGIvTW9kdWxlcy9jamtjb2RlY3MvY2xpbmljL211bHRpYnl0ZWNvZGVjLmMuaAppbmRleCA4YTQ3ZmY4Li44NGZmZDEyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2Nqa2NvZGVjcy9jbGluaWMvbXVsdGlieXRlY29kZWMuYy5oCisrKyBiL01vZHVsZXMvY2prY29kZWNzL2NsaW5pYy9tdWx0aWJ5dGVjb2RlYy5jLmgKQEAgLTE0LDcgKzE0LDcgQEAKICJyZWdpc3RlcmVkIHdpdGggY29kZWNzLnJlZ2lzdGVyX2Vycm9yIHRoYXQgY2FuIGhhbmRsZSBVbmljb2RlRW5jb2RlRXJyb3JzLiIpOwogCiAjZGVmaW5lIF9NVUxUSUJZVEVDT0RFQ19NVUxUSUJZVEVDT0RFQ19FTkNPREVfTUVUSE9EREVGICAgIFwKLSAgICB7ImVuY29kZSIsIChQeUNGdW5jdGlvbilfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlQ29kZWNfZW5jb2RlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUNvZGVjX2VuY29kZV9fZG9jX199LAorICAgIHsiZW5jb2RlIiwgKFB5Q0Z1bmN0aW9uKV9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19lbmNvZGUsIE1FVEhfRkFTVENBTEwsIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19lbmNvZGVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19lbmNvZGVfaW1wbChNdWx0aWJ5dGVDb2RlY09iamVjdCAqc2VsZiwKQEAgLTIyLDE2ICsyMiwxOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fbXVsdGlieXRlY29kZWNfTXVsdGlieXRlQ29kZWNfZW5jb2RlKE11bHRpYnl0ZUNvZGVjT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19lbmNvZGUoTXVsdGlieXRlQ29kZWNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJpbnB1dCIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJpbnB1dCIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPfHo6ZW5jb2RlIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqaW5wdXQ7CiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98ejplbmNvZGUiLCBfa2V5d29yZHMsCi0gICAgICAgICZpbnB1dCwgJmVycm9ycykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZpbnB1dCwgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlQ29kZWNfZW5jb2RlX2ltcGwoc2VsZiwgaW5wdXQsIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC01MCw3ICs1Miw3IEBACiAiY29kZWNzLnJlZ2lzdGVyX2Vycm9yIHRoYXQgaXMgYWJsZSB0byBoYW5kbGUgVW5pY29kZURlY29kZUVycm9ycy5cIiIpOwogCiAjZGVmaW5lIF9NVUxUSUJZVEVDT0RFQ19NVUxUSUJZVEVDT0RFQ19ERUNPREVfTUVUSE9EREVGICAgIFwKLSAgICB7ImRlY29kZSIsIChQeUNGdW5jdGlvbilfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlQ29kZWNfZGVjb2RlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUNvZGVjX2RlY29kZV9fZG9jX199LAorICAgIHsiZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19kZWNvZGUsIE1FVEhfRkFTVENBTEwsIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19kZWNvZGVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19kZWNvZGVfaW1wbChNdWx0aWJ5dGVDb2RlY09iamVjdCAqc2VsZiwKQEAgLTU4LDIyICs2MCwyNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fbXVsdGlieXRlY29kZWNfTXVsdGlieXRlQ29kZWNfZGVjb2RlKE11bHRpYnl0ZUNvZGVjT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19kZWNvZGUoTXVsdGlieXRlQ29kZWNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJpbnB1dCIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJpbnB1dCIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ5Knx6OmRlY29kZSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlfYnVmZmVyIGlucHV0ID0ge05VTEwsIE5VTEx9OwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ5Knx6OmRlY29kZSIsIF9rZXl3b3JkcywKLSAgICAgICAgJmlucHV0LCAmZXJyb3JzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmlucHV0LCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19kZWNvZGVfaW1wbChzZWxmLCAmaW5wdXQsIGVycm9ycyk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgaW5wdXQgKi8KLSAgICBpZiAoaW5wdXQub2JqKQorICAgIGlmIChpbnB1dC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZpbnB1dCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTg0LDcgKzg5LDcgQEAKICJcbiIpOwogCiAjZGVmaW5lIF9NVUxUSUJZVEVDT0RFQ19NVUxUSUJZVEVJTkNSRU1FTlRBTEVOQ09ERVJfRU5DT0RFX01FVEhPRERFRiAgICBcCi0gICAgeyJlbmNvZGUiLCAoUHlDRnVuY3Rpb24pX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlcl9lbmNvZGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyX2VuY29kZV9fZG9jX199LAorICAgIHsiZW5jb2RlIiwgKFB5Q0Z1bmN0aW9uKV9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJfZW5jb2RlLCBNRVRIX0ZBU1RDQUxMLCBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyX2VuY29kZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlcl9lbmNvZGVfaW1wbChNdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJPYmplY3QgKnNlbGYsCkBAIC05MiwxNiArOTcsMTggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZpbmFsKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJfZW5jb2RlKE11bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyX2VuY29kZShNdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJpbnB1dCIsICJmaW5hbCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImlucHV0IiwgImZpbmFsIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3xpOmVuY29kZSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKmlucHV0OwogICAgIGludCBmaW5hbCA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfGk6ZW5jb2RlIiwgX2tleXdvcmRzLAotICAgICAgICAmaW5wdXQsICZmaW5hbCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZpbnB1dCwgJmZpbmFsKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJfZW5jb2RlX2ltcGwoc2VsZiwgaW5wdXQsIGZpbmFsKTsKIAogZXhpdDoKQEAgLTEzMSw3ICsxMzgsNyBAQAogIlxuIik7CiAKICNkZWZpbmUgX01VTFRJQllURUNPREVDX01VTFRJQllURUlOQ1JFTUVOVEFMREVDT0RFUl9ERUNPREVfTUVUSE9EREVGICAgIFwKLSAgICB7ImRlY29kZSIsIChQeUNGdW5jdGlvbilfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyX2RlY29kZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJfZGVjb2RlX19kb2NfX30sCisgICAgeyJkZWNvZGUiLCAoUHlDRnVuY3Rpb24pX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlcl9kZWNvZGUsIE1FVEhfRkFTVENBTEwsIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJfZGVjb2RlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyX2RlY29kZV9pbXBsKE11bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlck9iamVjdCAqc2VsZiwKQEAgLTEzOSwyMiArMTQ2LDI1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmaW5hbCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyX2RlY29kZShNdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlcl9kZWNvZGUoTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiaW5wdXQiLCAiZmluYWwiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJpbnB1dCIsICJmaW5hbCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InkqfGk6ZGVjb2RlIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeV9idWZmZXIgaW5wdXQgPSB7TlVMTCwgTlVMTH07CiAgICAgaW50IGZpbmFsID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInkqfGk6ZGVjb2RlIiwgX2tleXdvcmRzLAotICAgICAgICAmaW5wdXQsICZmaW5hbCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZpbnB1dCwgJmZpbmFsKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJfZGVjb2RlX2ltcGwoc2VsZiwgJmlucHV0LCBmaW5hbCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgaW5wdXQgKi8KLSAgICBpZiAoaW5wdXQub2JqKQorICAgIGlmIChpbnB1dC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZpbnB1dCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTE5Niw4ICsyMDYsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicmVhZCIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZzaXplb2JqKSkKKyAgICAgICAgJnNpemVvYmopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVJlYWRlcl9yZWFkX2ltcGwoc2VsZiwgc2l6ZW9iaik7CiAKIGV4aXQ6CkBAIC0yMjQsOCArMjM1LDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInJlYWRsaW5lIiwKICAgICAgICAgMCwgMSwKLSAgICAgICAgJnNpemVvYmopKQorICAgICAgICAmc2l6ZW9iaikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtUmVhZGVyX3JlYWRsaW5lX2ltcGwoc2VsZiwgc2l6ZW9iaik7CiAKIGV4aXQ6CkBAIC0yNTIsOCArMjY0LDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInJlYWRsaW5lcyIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZzaXplaGludG9iaikpCisgICAgICAgICZzaXplaGludG9iaikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtUmVhZGVyX3JlYWRsaW5lc19pbXBsKHNlbGYsIHNpemVoaW50b2JqKTsKIAogZXhpdDoKQEAgLTMxNyw0ICszMzAsNCBAQAogCiAjZGVmaW5lIF9NVUxUSUJZVEVDT0RFQ19fX0NSRUFURV9DT0RFQ19NRVRIT0RERUYgICAgXAogICAgIHsiX19jcmVhdGVfY29kZWMiLCAoUHlDRnVuY3Rpb24pX211bHRpYnl0ZWNvZGVjX19fY3JlYXRlX2NvZGVjLCBNRVRIX08sIF9tdWx0aWJ5dGVjb2RlY19fX2NyZWF0ZV9jb2RlY19fZG9jX199LAotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWVlYmIyMWUxOGMzMDQzZDEgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTEzNGI5ZTM2Y2I5ODU5MzkgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jamtjb2RlY3MvbXVsdGlieXRlY29kZWMuYyBiL01vZHVsZXMvY2prY29kZWNzL211bHRpYnl0ZWNvZGVjLmMKaW5kZXggZjVjODQyMS4uZDFkYTE4OSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jamtjb2RlY3MvbXVsdGlieXRlY29kZWMuYworKysgYi9Nb2R1bGVzL2Nqa2NvZGVjcy9tdWx0aWJ5dGVjb2RlYy5jCkBAIC04NSw3ICs4NSw3IEBACiAgICAgY29uc3QgY2hhciAqc3RyOwogCiAgICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhlcnJvcnMpKTsKLSAgICBzdHIgPSBfUHlVbmljb2RlX0FzU3RyaW5nKGVycm9ycyk7CisgICAgc3RyID0gUHlVbmljb2RlX0FzVVRGOChlcnJvcnMpOwogICAgIGlmIChzdHIgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgY2IgPSBQeUNvZGVjX0xvb2t1cEVycm9yKHN0cik7CkBAIC0xMzgsNyArMTM4LDcgQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIHN0ciA9IF9QeVVuaWNvZGVfQXNTdHJpbmcodmFsdWUpOworICAgIHN0ciA9IFB5VW5pY29kZV9Bc1VURjgodmFsdWUpOwogICAgIGlmIChzdHIgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fYXN5bmNpb21vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fYXN5bmNpb21vZHVsZS5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDUyZDI1MgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvY2xpbmljL19hc3luY2lvbW9kdWxlLmMuaApAQCAtMCwwICsxLDUyMCBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKF9hc3luY2lvX0Z1dHVyZV9fX2luaXRfX19fZG9jX18sCisiRnV0dXJlKCosIGxvb3A9Tm9uZSlcbiIKKyItLVxuIgorIlxuIgorIlRoaXMgY2xhc3MgaXMgKmFsbW9zdCogY29tcGF0aWJsZSB3aXRoIGNvbmN1cnJlbnQuZnV0dXJlcy5GdXR1cmUuXG4iCisiXG4iCisiICAgIERpZmZlcmVuY2VzOlxuIgorIlxuIgorIiAgICAtIHJlc3VsdCgpIGFuZCBleGNlcHRpb24oKSBkbyBub3QgdGFrZSBhIHRpbWVvdXQgYXJndW1lbnQgYW5kXG4iCisiICAgICAgcmFpc2UgYW4gZXhjZXB0aW9uIHdoZW4gdGhlIGZ1dHVyZSBpc25cJ3QgZG9uZSB5ZXQuXG4iCisiXG4iCisiICAgIC0gQ2FsbGJhY2tzIHJlZ2lzdGVyZWQgd2l0aCBhZGRfZG9uZV9jYWxsYmFjaygpIGFyZSBhbHdheXMgY2FsbGVkXG4iCisiICAgICAgdmlhIHRoZSBldmVudCBsb29wXCdzIGNhbGxfc29vbl90aHJlYWRzYWZlKCkuXG4iCisiXG4iCisiICAgIC0gVGhpcyBjbGFzcyBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoZSB3YWl0KCkgYW5kIGFzX2NvbXBsZXRlZCgpXG4iCisiICAgICAgbWV0aG9kcyBpbiB0aGUgY29uY3VycmVudC5mdXR1cmVzIHBhY2thZ2UuIik7CisKK3N0YXRpYyBpbnQKK19hc3luY2lvX0Z1dHVyZV9fX2luaXRfX19pbXBsKEZ1dHVyZU9iaiAqc2VsZiwgUHlPYmplY3QgKmxvb3ApOworCitzdGF0aWMgaW50CitfYXN5bmNpb19GdXR1cmVfX19pbml0X18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIGludCByZXR1cm5fdmFsdWUgPSAtMTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJsb29wIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifCRPOkZ1dHVyZSIsIF9rZXl3b3JkcywgMH07CisgICAgUHlPYmplY3QgKmxvb3AgPSBOVUxMOworCisgICAgaWYgKCFfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChhcmdzLCBrd2FyZ3MsICZfcGFyc2VyLAorICAgICAgICAmbG9vcCkpIHsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBfYXN5bmNpb19GdXR1cmVfX19pbml0X19faW1wbCgoRnV0dXJlT2JqICopc2VsZiwgbG9vcCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9hc3luY2lvX0Z1dHVyZV9yZXN1bHRfX2RvY19fLAorInJlc3VsdCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgcmVzdWx0IHRoaXMgZnV0dXJlIHJlcHJlc2VudHMuXG4iCisiXG4iCisiSWYgdGhlIGZ1dHVyZSBoYXMgYmVlbiBjYW5jZWxsZWQsIHJhaXNlcyBDYW5jZWxsZWRFcnJvci4gIElmIHRoZVxuIgorImZ1dHVyZVwncyByZXN1bHQgaXNuXCd0IHlldCBhdmFpbGFibGUsIHJhaXNlcyBJbnZhbGlkU3RhdGVFcnJvci4gIElmXG4iCisidGhlIGZ1dHVyZSBpcyBkb25lIGFuZCBoYXMgYW4gZXhjZXB0aW9uIHNldCwgdGhpcyBleGNlcHRpb24gaXMgcmFpc2VkLiIpOworCisjZGVmaW5lIF9BU1lOQ0lPX0ZVVFVSRV9SRVNVTFRfTUVUSE9EREVGICAgIFwKKyAgICB7InJlc3VsdCIsIChQeUNGdW5jdGlvbilfYXN5bmNpb19GdXR1cmVfcmVzdWx0LCBNRVRIX05PQVJHUywgX2FzeW5jaW9fRnV0dXJlX3Jlc3VsdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fRnV0dXJlX3Jlc3VsdF9pbXBsKEZ1dHVyZU9iaiAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfYXN5bmNpb19GdXR1cmVfcmVzdWx0KEZ1dHVyZU9iaiAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2FzeW5jaW9fRnV0dXJlX3Jlc3VsdF9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2FzeW5jaW9fRnV0dXJlX2V4Y2VwdGlvbl9fZG9jX18sCisiZXhjZXB0aW9uKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBleGNlcHRpb24gdGhhdCB3YXMgc2V0IG9uIHRoaXMgZnV0dXJlLlxuIgorIlxuIgorIlRoZSBleGNlcHRpb24gKG9yIE5vbmUgaWYgbm8gZXhjZXB0aW9uIHdhcyBzZXQpIGlzIHJldHVybmVkIG9ubHkgaWZcbiIKKyJ0aGUgZnV0dXJlIGlzIGRvbmUuICBJZiB0aGUgZnV0dXJlIGhhcyBiZWVuIGNhbmNlbGxlZCwgcmFpc2VzXG4iCisiQ2FuY2VsbGVkRXJyb3IuICBJZiB0aGUgZnV0dXJlIGlzblwndCBkb25lIHlldCwgcmFpc2VzXG4iCisiSW52YWxpZFN0YXRlRXJyb3IuIik7CisKKyNkZWZpbmUgX0FTWU5DSU9fRlVUVVJFX0VYQ0VQVElPTl9NRVRIT0RERUYgICAgXAorICAgIHsiZXhjZXB0aW9uIiwgKFB5Q0Z1bmN0aW9uKV9hc3luY2lvX0Z1dHVyZV9leGNlcHRpb24sIE1FVEhfTk9BUkdTLCBfYXN5bmNpb19GdXR1cmVfZXhjZXB0aW9uX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYXN5bmNpb19GdXR1cmVfZXhjZXB0aW9uX2ltcGwoRnV0dXJlT2JqICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19hc3luY2lvX0Z1dHVyZV9leGNlcHRpb24oRnV0dXJlT2JqICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfYXN5bmNpb19GdXR1cmVfZXhjZXB0aW9uX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfYXN5bmNpb19GdXR1cmVfc2V0X3Jlc3VsdF9fZG9jX18sCisic2V0X3Jlc3VsdCgkc2VsZiwgcmVzLCAvKVxuIgorIi0tXG4iCisiXG4iCisiTWFyayB0aGUgZnV0dXJlIGRvbmUgYW5kIHNldCBpdHMgcmVzdWx0LlxuIgorIlxuIgorIklmIHRoZSBmdXR1cmUgaXMgYWxyZWFkeSBkb25lIHdoZW4gdGhpcyBtZXRob2QgaXMgY2FsbGVkLCByYWlzZXNcbiIKKyJJbnZhbGlkU3RhdGVFcnJvci4iKTsKKworI2RlZmluZSBfQVNZTkNJT19GVVRVUkVfU0VUX1JFU1VMVF9NRVRIT0RERUYgICAgXAorICAgIHsic2V0X3Jlc3VsdCIsIChQeUNGdW5jdGlvbilfYXN5bmNpb19GdXR1cmVfc2V0X3Jlc3VsdCwgTUVUSF9PLCBfYXN5bmNpb19GdXR1cmVfc2V0X3Jlc3VsdF9fZG9jX199LAorCitQeURvY19TVFJWQVIoX2FzeW5jaW9fRnV0dXJlX3NldF9leGNlcHRpb25fX2RvY19fLAorInNldF9leGNlcHRpb24oJHNlbGYsIGV4Y2VwdGlvbiwgLylcbiIKKyItLVxuIgorIlxuIgorIk1hcmsgdGhlIGZ1dHVyZSBkb25lIGFuZCBzZXQgYW4gZXhjZXB0aW9uLlxuIgorIlxuIgorIklmIHRoZSBmdXR1cmUgaXMgYWxyZWFkeSBkb25lIHdoZW4gdGhpcyBtZXRob2QgaXMgY2FsbGVkLCByYWlzZXNcbiIKKyJJbnZhbGlkU3RhdGVFcnJvci4iKTsKKworI2RlZmluZSBfQVNZTkNJT19GVVRVUkVfU0VUX0VYQ0VQVElPTl9NRVRIT0RERUYgICAgXAorICAgIHsic2V0X2V4Y2VwdGlvbiIsIChQeUNGdW5jdGlvbilfYXN5bmNpb19GdXR1cmVfc2V0X2V4Y2VwdGlvbiwgTUVUSF9PLCBfYXN5bmNpb19GdXR1cmVfc2V0X2V4Y2VwdGlvbl9fZG9jX199LAorCitQeURvY19TVFJWQVIoX2FzeW5jaW9fRnV0dXJlX2FkZF9kb25lX2NhbGxiYWNrX19kb2NfXywKKyJhZGRfZG9uZV9jYWxsYmFjaygkc2VsZiwgZm4sIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJBZGQgYSBjYWxsYmFjayB0byBiZSBydW4gd2hlbiB0aGUgZnV0dXJlIGJlY29tZXMgZG9uZS5cbiIKKyJcbiIKKyJUaGUgY2FsbGJhY2sgaXMgY2FsbGVkIHdpdGggYSBzaW5nbGUgYXJndW1lbnQgLSB0aGUgZnV0dXJlIG9iamVjdC4gSWZcbiIKKyJ0aGUgZnV0dXJlIGlzIGFscmVhZHkgZG9uZSB3aGVuIHRoaXMgaXMgY2FsbGVkLCB0aGUgY2FsbGJhY2sgaXNcbiIKKyJzY2hlZHVsZWQgd2l0aCBjYWxsX3Nvb24uIik7CisKKyNkZWZpbmUgX0FTWU5DSU9fRlVUVVJFX0FERF9ET05FX0NBTExCQUNLX01FVEhPRERFRiAgICBcCisgICAgeyJhZGRfZG9uZV9jYWxsYmFjayIsIChQeUNGdW5jdGlvbilfYXN5bmNpb19GdXR1cmVfYWRkX2RvbmVfY2FsbGJhY2ssIE1FVEhfTywgX2FzeW5jaW9fRnV0dXJlX2FkZF9kb25lX2NhbGxiYWNrX19kb2NfX30sCisKK1B5RG9jX1NUUlZBUihfYXN5bmNpb19GdXR1cmVfcmVtb3ZlX2RvbmVfY2FsbGJhY2tfX2RvY19fLAorInJlbW92ZV9kb25lX2NhbGxiYWNrKCRzZWxmLCBmbiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJlbW92ZSBhbGwgaW5zdGFuY2VzIG9mIGEgY2FsbGJhY2sgZnJvbSB0aGUgXCJjYWxsIHdoZW4gZG9uZVwiIGxpc3QuXG4iCisiXG4iCisiUmV0dXJucyB0aGUgbnVtYmVyIG9mIGNhbGxiYWNrcyByZW1vdmVkLiIpOworCisjZGVmaW5lIF9BU1lOQ0lPX0ZVVFVSRV9SRU1PVkVfRE9ORV9DQUxMQkFDS19NRVRIT0RERUYgICAgXAorICAgIHsicmVtb3ZlX2RvbmVfY2FsbGJhY2siLCAoUHlDRnVuY3Rpb24pX2FzeW5jaW9fRnV0dXJlX3JlbW92ZV9kb25lX2NhbGxiYWNrLCBNRVRIX08sIF9hc3luY2lvX0Z1dHVyZV9yZW1vdmVfZG9uZV9jYWxsYmFja19fZG9jX199LAorCitQeURvY19TVFJWQVIoX2FzeW5jaW9fRnV0dXJlX2NhbmNlbF9fZG9jX18sCisiY2FuY2VsKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQ2FuY2VsIHRoZSBmdXR1cmUgYW5kIHNjaGVkdWxlIGNhbGxiYWNrcy5cbiIKKyJcbiIKKyJJZiB0aGUgZnV0dXJlIGlzIGFscmVhZHkgZG9uZSBvciBjYW5jZWxsZWQsIHJldHVybiBGYWxzZS4gIE90aGVyd2lzZSxcbiIKKyJjaGFuZ2UgdGhlIGZ1dHVyZVwncyBzdGF0ZSB0byBjYW5jZWxsZWQsIHNjaGVkdWxlIHRoZSBjYWxsYmFja3MgYW5kXG4iCisicmV0dXJuIFRydWUuIik7CisKKyNkZWZpbmUgX0FTWU5DSU9fRlVUVVJFX0NBTkNFTF9NRVRIT0RERUYgICAgXAorICAgIHsiY2FuY2VsIiwgKFB5Q0Z1bmN0aW9uKV9hc3luY2lvX0Z1dHVyZV9jYW5jZWwsIE1FVEhfTk9BUkdTLCBfYXN5bmNpb19GdXR1cmVfY2FuY2VsX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYXN5bmNpb19GdXR1cmVfY2FuY2VsX2ltcGwoRnV0dXJlT2JqICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19hc3luY2lvX0Z1dHVyZV9jYW5jZWwoRnV0dXJlT2JqICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfYXN5bmNpb19GdXR1cmVfY2FuY2VsX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfYXN5bmNpb19GdXR1cmVfY2FuY2VsbGVkX19kb2NfXywKKyJjYW5jZWxsZWQoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gVHJ1ZSBpZiB0aGUgZnV0dXJlIHdhcyBjYW5jZWxsZWQuIik7CisKKyNkZWZpbmUgX0FTWU5DSU9fRlVUVVJFX0NBTkNFTExFRF9NRVRIT0RERUYgICAgXAorICAgIHsiY2FuY2VsbGVkIiwgKFB5Q0Z1bmN0aW9uKV9hc3luY2lvX0Z1dHVyZV9jYW5jZWxsZWQsIE1FVEhfTk9BUkdTLCBfYXN5bmNpb19GdXR1cmVfY2FuY2VsbGVkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYXN5bmNpb19GdXR1cmVfY2FuY2VsbGVkX2ltcGwoRnV0dXJlT2JqICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19hc3luY2lvX0Z1dHVyZV9jYW5jZWxsZWQoRnV0dXJlT2JqICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfYXN5bmNpb19GdXR1cmVfY2FuY2VsbGVkX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfYXN5bmNpb19GdXR1cmVfZG9uZV9fZG9jX18sCisiZG9uZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBUcnVlIGlmIHRoZSBmdXR1cmUgaXMgZG9uZS5cbiIKKyJcbiIKKyJEb25lIG1lYW5zIGVpdGhlciB0aGF0IGEgcmVzdWx0IC8gZXhjZXB0aW9uIGFyZSBhdmFpbGFibGUsIG9yIHRoYXQgdGhlXG4iCisiZnV0dXJlIHdhcyBjYW5jZWxsZWQuIik7CisKKyNkZWZpbmUgX0FTWU5DSU9fRlVUVVJFX0RPTkVfTUVUSE9EREVGICAgIFwKKyAgICB7ImRvbmUiLCAoUHlDRnVuY3Rpb24pX2FzeW5jaW9fRnV0dXJlX2RvbmUsIE1FVEhfTk9BUkdTLCBfYXN5bmNpb19GdXR1cmVfZG9uZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fRnV0dXJlX2RvbmVfaW1wbChGdXR1cmVPYmogKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fRnV0dXJlX2RvbmUoRnV0dXJlT2JqICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfYXN5bmNpb19GdXR1cmVfZG9uZV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2FzeW5jaW9fRnV0dXJlX19yZXByX2luZm9fX2RvY19fLAorIl9yZXByX2luZm8oJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9BU1lOQ0lPX0ZVVFVSRV9fUkVQUl9JTkZPX01FVEhPRERFRiAgICBcCisgICAgeyJfcmVwcl9pbmZvIiwgKFB5Q0Z1bmN0aW9uKV9hc3luY2lvX0Z1dHVyZV9fcmVwcl9pbmZvLCBNRVRIX05PQVJHUywgX2FzeW5jaW9fRnV0dXJlX19yZXByX2luZm9fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19hc3luY2lvX0Z1dHVyZV9fcmVwcl9pbmZvX2ltcGwoRnV0dXJlT2JqICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19hc3luY2lvX0Z1dHVyZV9fcmVwcl9pbmZvKEZ1dHVyZU9iaiAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2FzeW5jaW9fRnV0dXJlX19yZXByX2luZm9faW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9hc3luY2lvX0Z1dHVyZV9fc2NoZWR1bGVfY2FsbGJhY2tzX19kb2NfXywKKyJfc2NoZWR1bGVfY2FsbGJhY2tzKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQVNZTkNJT19GVVRVUkVfX1NDSEVEVUxFX0NBTExCQUNLU19NRVRIT0RERUYgICAgXAorICAgIHsiX3NjaGVkdWxlX2NhbGxiYWNrcyIsIChQeUNGdW5jdGlvbilfYXN5bmNpb19GdXR1cmVfX3NjaGVkdWxlX2NhbGxiYWNrcywgTUVUSF9OT0FSR1MsIF9hc3luY2lvX0Z1dHVyZV9fc2NoZWR1bGVfY2FsbGJhY2tzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYXN5bmNpb19GdXR1cmVfX3NjaGVkdWxlX2NhbGxiYWNrc19pbXBsKEZ1dHVyZU9iaiAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfYXN5bmNpb19GdXR1cmVfX3NjaGVkdWxlX2NhbGxiYWNrcyhGdXR1cmVPYmogKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9hc3luY2lvX0Z1dHVyZV9fc2NoZWR1bGVfY2FsbGJhY2tzX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfYXN5bmNpb19UYXNrX19faW5pdF9fX19kb2NfXywKKyJUYXNrKGNvcm8sICosIGxvb3A9Tm9uZSlcbiIKKyItLVxuIgorIlxuIgorIkEgY29yb3V0aW5lIHdyYXBwZWQgaW4gYSBGdXR1cmUuIik7CisKK3N0YXRpYyBpbnQKK19hc3luY2lvX1Rhc2tfX19pbml0X19faW1wbChUYXNrT2JqICpzZWxmLCBQeU9iamVjdCAqY29ybywgUHlPYmplY3QgKmxvb3ApOworCitzdGF0aWMgaW50CitfYXN5bmNpb19UYXNrX19faW5pdF9fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBpbnQgcmV0dXJuX3ZhbHVlID0gLTE7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiY29ybyIsICJsb29wIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3wkTzpUYXNrIiwgX2tleXdvcmRzLCAwfTsKKyAgICBQeU9iamVjdCAqY29ybzsKKyAgICBQeU9iamVjdCAqbG9vcCA9IE5VTEw7CisKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KGFyZ3MsIGt3YXJncywgJl9wYXJzZXIsCisgICAgICAgICZjb3JvLCAmbG9vcCkpIHsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBfYXN5bmNpb19UYXNrX19faW5pdF9fX2ltcGwoKFRhc2tPYmogKilzZWxmLCBjb3JvLCBsb29wKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2FzeW5jaW9fVGFza19jdXJyZW50X3Rhc2tfX2RvY19fLAorImN1cnJlbnRfdGFzaygkdHlwZSwgLywgbG9vcD1Ob25lKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBjdXJyZW50bHkgcnVubmluZyB0YXNrIGluIGFuIGV2ZW50IGxvb3Agb3IgTm9uZS5cbiIKKyJcbiIKKyJCeSBkZWZhdWx0IHRoZSBjdXJyZW50IHRhc2sgZm9yIHRoZSBjdXJyZW50IGV2ZW50IGxvb3AgaXMgcmV0dXJuZWQuXG4iCisiXG4iCisiTm9uZSBpcyByZXR1cm5lZCB3aGVuIGNhbGxlZCBub3QgaW4gdGhlIGNvbnRleHQgb2YgYSBUYXNrLiIpOworCisjZGVmaW5lIF9BU1lOQ0lPX1RBU0tfQ1VSUkVOVF9UQVNLX01FVEhPRERFRiAgICBcCisgICAgeyJjdXJyZW50X3Rhc2siLCAoUHlDRnVuY3Rpb24pX2FzeW5jaW9fVGFza19jdXJyZW50X3Rhc2ssIE1FVEhfRkFTVENBTEx8TUVUSF9DTEFTUywgX2FzeW5jaW9fVGFza19jdXJyZW50X3Rhc2tfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19hc3luY2lvX1Rhc2tfY3VycmVudF90YXNrX2ltcGwoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqbG9vcCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfYXN5bmNpb19UYXNrX2N1cnJlbnRfdGFzayhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsibG9vcCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPOmN1cnJlbnRfdGFzayIsIF9rZXl3b3JkcywgMH07CisgICAgUHlPYmplY3QgKmxvb3AgPSBOVUxMOworCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZsb29wKSkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IF9hc3luY2lvX1Rhc2tfY3VycmVudF90YXNrX2ltcGwodHlwZSwgbG9vcCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9hc3luY2lvX1Rhc2tfYWxsX3Rhc2tzX19kb2NfXywKKyJhbGxfdGFza3MoJHR5cGUsIC8sIGxvb3A9Tm9uZSlcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIHNldCBvZiBhbGwgdGFza3MgZm9yIGFuIGV2ZW50IGxvb3AuXG4iCisiXG4iCisiQnkgZGVmYXVsdCBhbGwgdGFza3MgZm9yIHRoZSBjdXJyZW50IGV2ZW50IGxvb3AgYXJlIHJldHVybmVkLiIpOworCisjZGVmaW5lIF9BU1lOQ0lPX1RBU0tfQUxMX1RBU0tTX01FVEhPRERFRiAgICBcCisgICAgeyJhbGxfdGFza3MiLCAoUHlDRnVuY3Rpb24pX2FzeW5jaW9fVGFza19hbGxfdGFza3MsIE1FVEhfRkFTVENBTEx8TUVUSF9DTEFTUywgX2FzeW5jaW9fVGFza19hbGxfdGFza3NfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19hc3luY2lvX1Rhc2tfYWxsX3Rhc2tzX2ltcGwoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqbG9vcCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfYXN5bmNpb19UYXNrX2FsbF90YXNrcyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsibG9vcCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPOmFsbF90YXNrcyIsIF9rZXl3b3JkcywgMH07CisgICAgUHlPYmplY3QgKmxvb3AgPSBOVUxMOworCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZsb29wKSkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IF9hc3luY2lvX1Rhc2tfYWxsX3Rhc2tzX2ltcGwodHlwZSwgbG9vcCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9hc3luY2lvX1Rhc2tfX3JlcHJfaW5mb19fZG9jX18sCisiX3JlcHJfaW5mbygkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0FTWU5DSU9fVEFTS19fUkVQUl9JTkZPX01FVEhPRERFRiAgICBcCisgICAgeyJfcmVwcl9pbmZvIiwgKFB5Q0Z1bmN0aW9uKV9hc3luY2lvX1Rhc2tfX3JlcHJfaW5mbywgTUVUSF9OT0FSR1MsIF9hc3luY2lvX1Rhc2tfX3JlcHJfaW5mb19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fVGFza19fcmVwcl9pbmZvX2ltcGwoVGFza09iaiAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfYXN5bmNpb19UYXNrX19yZXByX2luZm8oVGFza09iaiAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2FzeW5jaW9fVGFza19fcmVwcl9pbmZvX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfYXN5bmNpb19UYXNrX2NhbmNlbF9fZG9jX18sCisiY2FuY2VsKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmVxdWVzdCB0aGF0IHRoaXMgdGFzayBjYW5jZWwgaXRzZWxmLlxuIgorIlxuIgorIlRoaXMgYXJyYW5nZXMgZm9yIGEgQ2FuY2VsbGVkRXJyb3IgdG8gYmUgdGhyb3duIGludG8gdGhlXG4iCisid3JhcHBlZCBjb3JvdXRpbmUgb24gdGhlIG5leHQgY3ljbGUgdGhyb3VnaCB0aGUgZXZlbnQgbG9vcC5cbiIKKyJUaGUgY29yb3V0aW5lIHRoZW4gaGFzIGEgY2hhbmNlIHRvIGNsZWFuIHVwIG9yIGV2ZW4gZGVueVxuIgorInRoZSByZXF1ZXN0IHVzaW5nIHRyeS9leGNlcHQvZmluYWxseS5cbiIKKyJcbiIKKyJVbmxpa2UgRnV0dXJlLmNhbmNlbCwgdGhpcyBkb2VzIG5vdCBndWFyYW50ZWUgdGhhdCB0aGVcbiIKKyJ0YXNrIHdpbGwgYmUgY2FuY2VsbGVkOiB0aGUgZXhjZXB0aW9uIG1pZ2h0IGJlIGNhdWdodCBhbmRcbiIKKyJhY3RlZCB1cG9uLCBkZWxheWluZyBjYW5jZWxsYXRpb24gb2YgdGhlIHRhc2sgb3IgcHJldmVudGluZ1xuIgorImNhbmNlbGxhdGlvbiBjb21wbGV0ZWx5LiAgVGhlIHRhc2sgbWF5IGFsc28gcmV0dXJuIGEgdmFsdWUgb3JcbiIKKyJyYWlzZSBhIGRpZmZlcmVudCBleGNlcHRpb24uXG4iCisiXG4iCisiSW1tZWRpYXRlbHkgYWZ0ZXIgdGhpcyBtZXRob2QgaXMgY2FsbGVkLCBUYXNrLmNhbmNlbGxlZCgpIHdpbGxcbiIKKyJub3QgcmV0dXJuIFRydWUgKHVubGVzcyB0aGUgdGFzayB3YXMgYWxyZWFkeSBjYW5jZWxsZWQpLiAgQVxuIgorInRhc2sgd2lsbCBiZSBtYXJrZWQgYXMgY2FuY2VsbGVkIHdoZW4gdGhlIHdyYXBwZWQgY29yb3V0aW5lXG4iCisidGVybWluYXRlcyB3aXRoIGEgQ2FuY2VsbGVkRXJyb3IgZXhjZXB0aW9uIChldmVuIGlmIGNhbmNlbCgpXG4iCisid2FzIG5vdCBjYWxsZWQpLiIpOworCisjZGVmaW5lIF9BU1lOQ0lPX1RBU0tfQ0FOQ0VMX01FVEhPRERFRiAgICBcCisgICAgeyJjYW5jZWwiLCAoUHlDRnVuY3Rpb24pX2FzeW5jaW9fVGFza19jYW5jZWwsIE1FVEhfTk9BUkdTLCBfYXN5bmNpb19UYXNrX2NhbmNlbF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fVGFza19jYW5jZWxfaW1wbChUYXNrT2JqICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19hc3luY2lvX1Rhc2tfY2FuY2VsKFRhc2tPYmogKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9hc3luY2lvX1Rhc2tfY2FuY2VsX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfYXN5bmNpb19UYXNrX2dldF9zdGFja19fZG9jX18sCisiZ2V0X3N0YWNrKCRzZWxmLCAvLCAqLCBsaW1pdD1Ob25lKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBsaXN0IG9mIHN0YWNrIGZyYW1lcyBmb3IgdGhpcyB0YXNrXCdzIGNvcm91dGluZS5cbiIKKyJcbiIKKyJJZiB0aGUgY29yb3V0aW5lIGlzIG5vdCBkb25lLCB0aGlzIHJldHVybnMgdGhlIHN0YWNrIHdoZXJlIGl0IGlzXG4iCisic3VzcGVuZGVkLiAgSWYgdGhlIGNvcm91dGluZSBoYXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSBvciB3YXNcbiIKKyJjYW5jZWxsZWQsIHRoaXMgcmV0dXJucyBhbiBlbXB0eSBsaXN0LiAgSWYgdGhlIGNvcm91dGluZSB3YXNcbiIKKyJ0ZXJtaW5hdGVkIGJ5IGFuIGV4Y2VwdGlvbiwgdGhpcyByZXR1cm5zIHRoZSBsaXN0IG9mIHRyYWNlYmFja1xuIgorImZyYW1lcy5cbiIKKyJcbiIKKyJUaGUgZnJhbWVzIGFyZSBhbHdheXMgb3JkZXJlZCBmcm9tIG9sZGVzdCB0byBuZXdlc3QuXG4iCisiXG4iCisiVGhlIG9wdGlvbmFsIGxpbWl0IGdpdmVzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBmcmFtZXMgdG9cbiIKKyJyZXR1cm47IGJ5IGRlZmF1bHQgYWxsIGF2YWlsYWJsZSBmcmFtZXMgYXJlIHJldHVybmVkLiAgSXRzXG4iCisibWVhbmluZyBkaWZmZXJzIGRlcGVuZGluZyBvbiB3aGV0aGVyIGEgc3RhY2sgb3IgYSB0cmFjZWJhY2sgaXNcbiIKKyJyZXR1cm5lZDogdGhlIG5ld2VzdCBmcmFtZXMgb2YgYSBzdGFjayBhcmUgcmV0dXJuZWQsIGJ1dCB0aGVcbiIKKyJvbGRlc3QgZnJhbWVzIG9mIGEgdHJhY2ViYWNrIGFyZSByZXR1cm5lZC4gIChUaGlzIG1hdGNoZXMgdGhlXG4iCisiYmVoYXZpb3Igb2YgdGhlIHRyYWNlYmFjayBtb2R1bGUuKVxuIgorIlxuIgorIkZvciByZWFzb25zIGJleW9uZCBvdXIgY29udHJvbCwgb25seSBvbmUgc3RhY2sgZnJhbWUgaXNcbiIKKyJyZXR1cm5lZCBmb3IgYSBzdXNwZW5kZWQgY29yb3V0aW5lLiIpOworCisjZGVmaW5lIF9BU1lOQ0lPX1RBU0tfR0VUX1NUQUNLX01FVEhPRERFRiAgICBcCisgICAgeyJnZXRfc3RhY2siLCAoUHlDRnVuY3Rpb24pX2FzeW5jaW9fVGFza19nZXRfc3RhY2ssIE1FVEhfRkFTVENBTEwsIF9hc3luY2lvX1Rhc2tfZ2V0X3N0YWNrX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYXN5bmNpb19UYXNrX2dldF9zdGFja19pbXBsKFRhc2tPYmogKnNlbGYsIFB5T2JqZWN0ICpsaW1pdCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfYXN5bmNpb19UYXNrX2dldF9zdGFjayhUYXNrT2JqICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImxpbWl0IiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifCRPOmdldF9zdGFjayIsIF9rZXl3b3JkcywgMH07CisgICAgUHlPYmplY3QgKmxpbWl0ID0gUHlfTm9uZTsKKworICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmbGltaXQpKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gX2FzeW5jaW9fVGFza19nZXRfc3RhY2tfaW1wbChzZWxmLCBsaW1pdCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9hc3luY2lvX1Rhc2tfcHJpbnRfc3RhY2tfX2RvY19fLAorInByaW50X3N0YWNrKCRzZWxmLCAvLCAqLCBsaW1pdD1Ob25lLCBmaWxlPU5vbmUpXG4iCisiLS1cbiIKKyJcbiIKKyJQcmludCB0aGUgc3RhY2sgb3IgdHJhY2ViYWNrIGZvciB0aGlzIHRhc2tcJ3MgY29yb3V0aW5lLlxuIgorIlxuIgorIlRoaXMgcHJvZHVjZXMgb3V0cHV0IHNpbWlsYXIgdG8gdGhhdCBvZiB0aGUgdHJhY2ViYWNrIG1vZHVsZSxcbiIKKyJmb3IgdGhlIGZyYW1lcyByZXRyaWV2ZWQgYnkgZ2V0X3N0YWNrKCkuICBUaGUgbGltaXQgYXJndW1lbnRcbiIKKyJpcyBwYXNzZWQgdG8gZ2V0X3N0YWNrKCkuICBUaGUgZmlsZSBhcmd1bWVudCBpcyBhbiBJL08gc3RyZWFtXG4iCisidG8gd2hpY2ggdGhlIG91dHB1dCBpcyB3cml0dGVuOyBieSBkZWZhdWx0IG91dHB1dCBpcyB3cml0dGVuXG4iCisidG8gc3lzLnN0ZGVyci4iKTsKKworI2RlZmluZSBfQVNZTkNJT19UQVNLX1BSSU5UX1NUQUNLX01FVEhPRERFRiAgICBcCisgICAgeyJwcmludF9zdGFjayIsIChQeUNGdW5jdGlvbilfYXN5bmNpb19UYXNrX3ByaW50X3N0YWNrLCBNRVRIX0ZBU1RDQUxMLCBfYXN5bmNpb19UYXNrX3ByaW50X3N0YWNrX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYXN5bmNpb19UYXNrX3ByaW50X3N0YWNrX2ltcGwoVGFza09iaiAqc2VsZiwgUHlPYmplY3QgKmxpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmaWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19hc3luY2lvX1Rhc2tfcHJpbnRfc3RhY2soVGFza09iaiAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJsaW1pdCIsICJmaWxlIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifCRPTzpwcmludF9zdGFjayIsIF9rZXl3b3JkcywgMH07CisgICAgUHlPYmplY3QgKmxpbWl0ID0gUHlfTm9uZTsKKyAgICBQeU9iamVjdCAqZmlsZSA9IFB5X05vbmU7CisKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmxpbWl0LCAmZmlsZSkpIHsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBfYXN5bmNpb19UYXNrX3ByaW50X3N0YWNrX2ltcGwoc2VsZiwgbGltaXQsIGZpbGUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfYXN5bmNpb19UYXNrX19zdGVwX19kb2NfXywKKyJfc3RlcCgkc2VsZiwgLywgZXhjPU5vbmUpXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9BU1lOQ0lPX1RBU0tfX1NURVBfTUVUSE9EREVGICAgIFwKKyAgICB7Il9zdGVwIiwgKFB5Q0Z1bmN0aW9uKV9hc3luY2lvX1Rhc2tfX3N0ZXAsIE1FVEhfRkFTVENBTEwsIF9hc3luY2lvX1Rhc2tfX3N0ZXBfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19hc3luY2lvX1Rhc2tfX3N0ZXBfaW1wbChUYXNrT2JqICpzZWxmLCBQeU9iamVjdCAqZXhjKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19hc3luY2lvX1Rhc2tfX3N0ZXAoVGFza09iaiAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJleGMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8Tzpfc3RlcCIsIF9rZXl3b3JkcywgMH07CisgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7CisKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmV4YykpIHsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBfYXN5bmNpb19UYXNrX19zdGVwX2ltcGwoc2VsZiwgZXhjKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2FzeW5jaW9fVGFza19fd2FrZXVwX19kb2NfXywKKyJfd2FrZXVwKCRzZWxmLCAvLCBmdXQpXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9BU1lOQ0lPX1RBU0tfX1dBS0VVUF9NRVRIT0RERUYgICAgXAorICAgIHsiX3dha2V1cCIsIChQeUNGdW5jdGlvbilfYXN5bmNpb19UYXNrX193YWtldXAsIE1FVEhfRkFTVENBTEwsIF9hc3luY2lvX1Rhc2tfX3dha2V1cF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fVGFza19fd2FrZXVwX2ltcGwoVGFza09iaiAqc2VsZiwgUHlPYmplY3QgKmZ1dCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfYXN5bmNpb19UYXNrX193YWtldXAoVGFza09iaiAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJmdXQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPOl93YWtldXAiLCBfa2V5d29yZHMsIDB9OworICAgIFB5T2JqZWN0ICpmdXQ7CisKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmZ1dCkpIHsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBfYXN5bmNpb19UYXNrX193YWtldXBfaW1wbChzZWxmLCBmdXQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OGYwMzYzMjFiYjA4MzA2NiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fYnoybW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL19iejJtb2R1bGUuYy5oCmluZGV4IDNlZDgzMDMuLjFjYTgxMGMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL19iejJtb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL19iejJtb2R1bGUuYy5oCkBAIC0yNSwxNCArMjUsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6Y29tcHJlc3MiLCAmZGF0YSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjpjb21wcmVzcyIsICZkYXRhKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9iejJfQloyQ29tcHJlc3Nvcl9jb21wcmVzc19pbXBsKHNlbGYsICZkYXRhKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC04MCwxMSArODIsMTMgQEAKICAgICBpbnQgY29tcHJlc3NsZXZlbCA9IDk7CiAKICAgICBpZiAoKFB5X1RZUEUoc2VsZikgPT0gJkJaMkNvbXByZXNzb3JfVHlwZSkgJiYKLSAgICAgICAgIV9QeUFyZ19Ob0tleXdvcmRzKCJCWjJDb21wcmVzc29yIiwga3dhcmdzKSkKKyAgICAgICAgIV9QeUFyZ19Ob0tleXdvcmRzKCJCWjJDb21wcmVzc29yIiwga3dhcmdzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGk6QloyQ29tcHJlc3NvciIsCi0gICAgICAgICZjb21wcmVzc2xldmVsKSkKKyAgICAgICAgJmNvbXByZXNzbGV2ZWwpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2J6Ml9CWjJDb21wcmVzc29yX19faW5pdF9fX2ltcGwoKEJaMkNvbXByZXNzb3IgKilzZWxmLCBjb21wcmVzc2xldmVsKTsKIAogZXhpdDoKQEAgLTExMSwyOSArMTE1LDMyIEBACiAidGhlIHVudXNlZF9kYXRhIGF0dHJpYnV0ZS4iKTsKIAogI2RlZmluZSBfQloyX0JaMkRFQ09NUFJFU1NPUl9ERUNPTVBSRVNTX01FVEhPRERFRiAgICBcCi0gICAgeyJkZWNvbXByZXNzIiwgKFB5Q0Z1bmN0aW9uKV9iejJfQloyRGVjb21wcmVzc29yX2RlY29tcHJlc3MsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfYnoyX0JaMkRlY29tcHJlc3Nvcl9kZWNvbXByZXNzX19kb2NfX30sCisgICAgeyJkZWNvbXByZXNzIiwgKFB5Q0Z1bmN0aW9uKV9iejJfQloyRGVjb21wcmVzc29yX2RlY29tcHJlc3MsIE1FVEhfRkFTVENBTEwsIF9iejJfQloyRGVjb21wcmVzc29yX2RlY29tcHJlc3NfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9iejJfQloyRGVjb21wcmVzc29yX2RlY29tcHJlc3NfaW1wbChCWjJEZWNvbXByZXNzb3IgKnNlbGYsIFB5X2J1ZmZlciAqZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heF9sZW5ndGgpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX2J6Ml9CWjJEZWNvbXByZXNzb3JfZGVjb21wcmVzcyhCWjJEZWNvbXByZXNzb3IgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX2J6Ml9CWjJEZWNvbXByZXNzb3JfZGVjb21wcmVzcyhCWjJEZWNvbXByZXNzb3IgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJkYXRhIiwgIm1heF9sZW5ndGgiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJkYXRhIiwgIm1heF9sZW5ndGgiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ5KnxuOmRlY29tcHJlc3MiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogICAgIFB5X3NzaXplX3QgbWF4X2xlbmd0aCA9IC0xOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAieSp8bjpkZWNvbXByZXNzIiwgX2tleXdvcmRzLAotICAgICAgICAmZGF0YSwgJm1heF9sZW5ndGgpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZGF0YSwgJm1heF9sZW5ndGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2J6Ml9CWjJEZWNvbXByZXNzb3JfZGVjb21wcmVzc19pbXBsKHNlbGYsICZkYXRhLCBtYXhfbGVuZ3RoKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0xNTUsMTQgKzE2MiwxNiBAQAogICAgIGludCByZXR1cm5fdmFsdWUgPSAtMTsKIAogICAgIGlmICgoUHlfVFlQRShzZWxmKSA9PSAmQloyRGVjb21wcmVzc29yX1R5cGUpICYmCi0gICAgICAgICFfUHlBcmdfTm9Qb3NpdGlvbmFsKCJCWjJEZWNvbXByZXNzb3IiLCBhcmdzKSkKKyAgICAgICAgIV9QeUFyZ19Ob1Bvc2l0aW9uYWwoIkJaMkRlY29tcHJlc3NvciIsIGFyZ3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgaWYgKChQeV9UWVBFKHNlbGYpID09ICZCWjJEZWNvbXByZXNzb3JfVHlwZSkgJiYKLSAgICAgICAgIV9QeUFyZ19Ob0tleXdvcmRzKCJCWjJEZWNvbXByZXNzb3IiLCBrd2FyZ3MpKQorICAgICAgICAhX1B5QXJnX05vS2V5d29yZHMoIkJaMkRlY29tcHJlc3NvciIsIGt3YXJncykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfYnoyX0JaMkRlY29tcHJlc3Nvcl9fX2luaXRfX19pbXBsKChCWjJEZWNvbXByZXNzb3IgKilzZWxmKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWZlZjI5Yjc2YjMzMTRmYzcgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTdlNTdhZjBiMzY4ZDNlNTUgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX2NvZGVjc21vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fY29kZWNzbW9kdWxlLmMuaAppbmRleCBhZjA2YzZkLi4wNTYyODdkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9fY29kZWNzbW9kdWxlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9fY29kZWNzbW9kdWxlLmMuaApAQCAtMzMsOCArMzMsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmxvb2t1cCIsICZlbmNvZGluZykpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmxvb2t1cCIsICZlbmNvZGluZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2xvb2t1cF9pbXBsKG1vZHVsZSwgZW5jb2RpbmcpOwogCiBleGl0OgpAQCAtNTQsMjQgKzU1LDI2IEBACiAiY29kZWNzLnJlZ2lzdGVyX2Vycm9yIHRoYXQgY2FuIGhhbmRsZSBWYWx1ZUVycm9ycy4iKTsKIAogI2RlZmluZSBfQ09ERUNTX0VOQ09ERV9NRVRIT0RERUYgICAgXAotICAgIHsiZW5jb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfZW5jb2RlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX2NvZGVjc19lbmNvZGVfX2RvY19ffSwKKyAgICB7ImVuY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX2VuY29kZSwgTUVUSF9GQVNUQ0FMTCwgX2NvZGVjc19lbmNvZGVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9jb2RlY3NfZW5jb2RlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKm9iaiwgY29uc3QgY2hhciAqZW5jb2RpbmcsCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fY29kZWNzX2VuY29kZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19jb2RlY3NfZW5jb2RlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJvYmoiLCAiZW5jb2RpbmciLCAiZXJyb3JzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsib2JqIiwgImVuY29kaW5nIiwgImVycm9ycyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98c3M6ZW5jb2RlIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqb2JqOwogICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nID0gTlVMTDsKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xzczplbmNvZGUiLCBfa2V5d29yZHMsCi0gICAgICAgICZvYmosICZlbmNvZGluZywgJmVycm9ycykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZvYmosICZlbmNvZGluZywgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2VuY29kZV9pbXBsKG1vZHVsZSwgb2JqLCBlbmNvZGluZywgZXJyb3JzKTsKIAogZXhpdDoKQEAgLTkxLDI0ICs5NCwyNiBAQAogImNvZGVjcy5yZWdpc3Rlcl9lcnJvciB0aGF0IGNhbiBoYW5kbGUgVmFsdWVFcnJvcnMuIik7CiAKICNkZWZpbmUgX0NPREVDU19ERUNPREVfTUVUSE9EREVGICAgIFwKLSAgICB7ImRlY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX2RlY29kZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9jb2RlY3NfZGVjb2RlX19kb2NfX30sCisgICAgeyJkZWNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc19kZWNvZGUsIE1FVEhfRkFTVENBTEwsIF9jb2RlY3NfZGVjb2RlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfY29kZWNzX2RlY29kZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpvYmosIGNvbnN0IGNoYXIgKmVuY29kaW5nLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX2NvZGVjc19kZWNvZGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfY29kZWNzX2RlY29kZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsib2JqIiwgImVuY29kaW5nIiwgImVycm9ycyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7Im9iaiIsICJlbmNvZGluZyIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPfHNzOmRlY29kZSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKm9iajsKICAgICBjb25zdCBjaGFyICplbmNvZGluZyA9IE5VTEw7CiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98c3M6ZGVjb2RlIiwgX2tleXdvcmRzLAotICAgICAgICAmb2JqLCAmZW5jb2RpbmcsICZlcnJvcnMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmb2JqLCAmZW5jb2RpbmcsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19kZWNvZGVfaW1wbChtb2R1bGUsIG9iaiwgZW5jb2RpbmcsIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC0xMzMsOCArMTM4LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBjb25zdCBjaGFyICplbmNvZGluZzsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpfZm9yZ2V0X2NvZGVjIiwgJmVuY29kaW5nKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6X2ZvcmdldF9jb2RlYyIsICZlbmNvZGluZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX19mb3JnZXRfY29kZWNfaW1wbChtb2R1bGUsIGVuY29kaW5nKTsKIAogZXhpdDoKQEAgLTE2MSwxNCArMTY3LDE2IEBACiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAicyp8ejplc2NhcGVfZGVjb2RlIiwKLSAgICAgICAgJmRhdGEsICZlcnJvcnMpKQorICAgICAgICAmZGF0YSwgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2VzY2FwZV9kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTE5Myw4ICsyMDEsOSBAQAogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8hfHo6ZXNjYXBlX2VuY29kZSIsCi0gICAgICAgICZQeUJ5dGVzX1R5cGUsICZkYXRhLCAmZXJyb3JzKSkKKyAgICAgICAgJlB5Qnl0ZXNfVHlwZSwgJmRhdGEsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19lc2NhcGVfZW5jb2RlX2ltcGwobW9kdWxlLCBkYXRhLCBlcnJvcnMpOwogCiBleGl0OgpAQCAtMjIxLDggKzIzMCw5IEBACiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6OnVuaWNvZGVfaW50ZXJuYWxfZGVjb2RlIiwKLSAgICAgICAgJm9iaiwgJmVycm9ycykpCisgICAgICAgICZvYmosICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191bmljb2RlX2ludGVybmFsX2RlY29kZV9pbXBsKG1vZHVsZSwgb2JqLCBlcnJvcnMpOwogCiBleGl0OgpAQCAtMjUwLDE0ICsyNjAsMTYgQEAKICAgICBpbnQgZmluYWwgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6aTp1dGZfN19kZWNvZGUiLAotICAgICAgICAmZGF0YSwgJmVycm9ycywgJmZpbmFsKSkKKyAgICAgICAgJmRhdGEsICZlcnJvcnMsICZmaW5hbCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl83X2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgZmluYWwpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTI4MywxNCArMjk1LDE2IEBACiAgICAgaW50IGZpbmFsID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emk6dXRmXzhfZGVjb2RlIiwKLSAgICAgICAgJmRhdGEsICZlcnJvcnMsICZmaW5hbCkpCisgICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191dGZfOF9kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMsIGZpbmFsKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0zMTYsMTQgKzMzMCwxNiBAQAogICAgIGludCBmaW5hbCA9IDA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHppOnV0Zl8xNl9kZWNvZGUiLAotICAgICAgICAmZGF0YSwgJmVycm9ycywgJmZpbmFsKSkKKyAgICAgICAgJmRhdGEsICZlcnJvcnMsICZmaW5hbCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl8xNl9kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMsIGZpbmFsKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0zNDksMTQgKzM2NSwxNiBAQAogICAgIGludCBmaW5hbCA9IDA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHppOnV0Zl8xNl9sZV9kZWNvZGUiLAotICAgICAgICAmZGF0YSwgJmVycm9ycywgJmZpbmFsKSkKKyAgICAgICAgJmRhdGEsICZlcnJvcnMsICZmaW5hbCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl8xNl9sZV9kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMsIGZpbmFsKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0zODIsMTQgKzQwMCwxNiBAQAogICAgIGludCBmaW5hbCA9IDA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHppOnV0Zl8xNl9iZV9kZWNvZGUiLAotICAgICAgICAmZGF0YSwgJmVycm9ycywgJmZpbmFsKSkKKyAgICAgICAgJmRhdGEsICZlcnJvcnMsICZmaW5hbCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl8xNl9iZV9kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMsIGZpbmFsKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC00MTcsMTQgKzQzNywxNiBAQAogICAgIGludCBmaW5hbCA9IDA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHppaTp1dGZfMTZfZXhfZGVjb2RlIiwKLSAgICAgICAgJmRhdGEsICZlcnJvcnMsICZieXRlb3JkZXIsICZmaW5hbCkpCisgICAgICAgICZkYXRhLCAmZXJyb3JzLCAmYnl0ZW9yZGVyLCAmZmluYWwpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191dGZfMTZfZXhfZGVjb2RlX2ltcGwobW9kdWxlLCAmZGF0YSwgZXJyb3JzLCBieXRlb3JkZXIsIGZpbmFsKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC00NTAsMTQgKzQ3MiwxNiBAQAogICAgIGludCBmaW5hbCA9IDA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHppOnV0Zl8zMl9kZWNvZGUiLAotICAgICAgICAmZGF0YSwgJmVycm9ycywgJmZpbmFsKSkKKyAgICAgICAgJmRhdGEsICZlcnJvcnMsICZmaW5hbCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl8zMl9kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMsIGZpbmFsKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC00ODMsMTQgKzUwNywxNiBAQAogICAgIGludCBmaW5hbCA9IDA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHppOnV0Zl8zMl9sZV9kZWNvZGUiLAotICAgICAgICAmZGF0YSwgJmVycm9ycywgJmZpbmFsKSkKKyAgICAgICAgJmRhdGEsICZlcnJvcnMsICZmaW5hbCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl8zMl9sZV9kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMsIGZpbmFsKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC01MTYsMTQgKzU0MiwxNiBAQAogICAgIGludCBmaW5hbCA9IDA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHppOnV0Zl8zMl9iZV9kZWNvZGUiLAotICAgICAgICAmZGF0YSwgJmVycm9ycywgJmZpbmFsKSkKKyAgICAgICAgJmRhdGEsICZlcnJvcnMsICZmaW5hbCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl8zMl9iZV9kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMsIGZpbmFsKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC01NTEsMTQgKzU3OSwxNiBAQAogICAgIGludCBmaW5hbCA9IDA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHppaTp1dGZfMzJfZXhfZGVjb2RlIiwKLSAgICAgICAgJmRhdGEsICZlcnJvcnMsICZieXRlb3JkZXIsICZmaW5hbCkpCisgICAgICAgICZkYXRhLCAmZXJyb3JzLCAmYnl0ZW9yZGVyLCAmZmluYWwpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191dGZfMzJfZXhfZGVjb2RlX2ltcGwobW9kdWxlLCAmZGF0YSwgZXJyb3JzLCBieXRlb3JkZXIsIGZpbmFsKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC01ODMsMTQgKzYxMywxNiBAQAogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMqfHo6dW5pY29kZV9lc2NhcGVfZGVjb2RlIiwKLSAgICAgICAgJmRhdGEsICZlcnJvcnMpKQorICAgICAgICAmZGF0YSwgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3VuaWNvZGVfZXNjYXBlX2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycyk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNjE1LDE0ICs2NDcsMTYgQEAKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzKnx6OnJhd191bmljb2RlX2VzY2FwZV9kZWNvZGUiLAotICAgICAgICAmZGF0YSwgJmVycm9ycykpCisgICAgICAgICZkYXRhLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfcmF3X3VuaWNvZGVfZXNjYXBlX2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycyk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNjQ3LDE0ICs2ODEsMTYgQEAKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6OmxhdGluXzFfZGVjb2RlIiwKLSAgICAgICAgJmRhdGEsICZlcnJvcnMpKQorICAgICAgICAmZGF0YSwgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2xhdGluXzFfZGVjb2RlX2ltcGwobW9kdWxlLCAmZGF0YSwgZXJyb3JzKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC02NzksMTQgKzcxNSwxNiBAQAogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHo6YXNjaWlfZGVjb2RlIiwKLSAgICAgICAgJmRhdGEsICZlcnJvcnMpKQorICAgICAgICAmZGF0YSwgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2FzY2lpX2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycyk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNzEyLDE5ICs3NTAsMjEgQEAKICAgICBQeU9iamVjdCAqbWFwcGluZyA9IE5VTEw7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHpPOmNoYXJtYXBfZGVjb2RlIiwKLSAgICAgICAgJmRhdGEsICZlcnJvcnMsICZtYXBwaW5nKSkKKyAgICAgICAgJmRhdGEsICZlcnJvcnMsICZtYXBwaW5nKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfY2hhcm1hcF9kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMsIG1hcHBpbmcpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KIAotI2lmIGRlZmluZWQoSEFWRV9NQkNTKQorI2lmIGRlZmluZWQoTVNfV0lORE9XUykKIAogUHlEb2NfU1RSVkFSKF9jb2RlY3NfbWJjc19kZWNvZGVfX2RvY19fLAogIm1iY3NfZGVjb2RlKCRtb2R1bGUsIGRhdGEsIGVycm9ycz1Ob25lLCBmaW5hbD1GYWxzZSwgLylcbiIKQEAgLTc0NywyMSArNzg3LDYyIEBACiAgICAgaW50IGZpbmFsID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emk6bWJjc19kZWNvZGUiLAotICAgICAgICAmZGF0YSwgJmVycm9ycywgJmZpbmFsKSkKKyAgICAgICAgJmRhdGEsICZlcnJvcnMsICZmaW5hbCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX21iY3NfZGVjb2RlX2ltcGwobW9kdWxlLCAmZGF0YSwgZXJyb3JzLCBmaW5hbCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQogCi0jZW5kaWYgLyogZGVmaW5lZChIQVZFX01CQ1MpICovCisjZW5kaWYgLyogZGVmaW5lZChNU19XSU5ET1dTKSAqLwogCi0jaWYgZGVmaW5lZChIQVZFX01CQ1MpCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorCitQeURvY19TVFJWQVIoX2NvZGVjc19vZW1fZGVjb2RlX19kb2NfXywKKyJvZW1fZGVjb2RlKCRtb2R1bGUsIGRhdGEsIGVycm9ycz1Ob25lLCBmaW5hbD1GYWxzZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19PRU1fREVDT0RFX01FVEhPRERFRiAgICBcCisgICAgeyJvZW1fZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3Nfb2VtX2RlY29kZSwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX29lbV9kZWNvZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3Nfb2VtX2RlY29kZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGZpbmFsKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3Nfb2VtX2RlY29kZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworICAgIGludCBmaW5hbCA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHppOm9lbV9kZWNvZGUiLAorICAgICAgICAmZGF0YSwgJmVycm9ycywgJmZpbmFsKSkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3Nfb2VtX2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgZmluYWwpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KKyAgICBpZiAoZGF0YS5vYmopIHsKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChNU19XSU5ET1dTKSAqLworCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQogCiBQeURvY19TVFJWQVIoX2NvZGVjc19jb2RlX3BhZ2VfZGVjb2RlX19kb2NfXywKICJjb2RlX3BhZ2VfZGVjb2RlKCRtb2R1bGUsIGNvZGVwYWdlLCBkYXRhLCBlcnJvcnM9Tm9uZSwgZmluYWw9RmFsc2UsIC8pXG4iCkBAIC03ODUsMTkgKzg2NiwyMSBAQAogICAgIGludCBmaW5hbCA9IDA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIml5Knx6aTpjb2RlX3BhZ2VfZGVjb2RlIiwKLSAgICAgICAgJmNvZGVwYWdlLCAmZGF0YSwgJmVycm9ycywgJmZpbmFsKSkKKyAgICAgICAgJmNvZGVwYWdlLCAmZGF0YSwgJmVycm9ycywgJmZpbmFsKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfY29kZV9wYWdlX2RlY29kZV9pbXBsKG1vZHVsZSwgY29kZXBhZ2UsICZkYXRhLCBlcnJvcnMsIGZpbmFsKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKLSNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfTUJDUykgKi8KKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCiAKIFB5RG9jX1NUUlZBUihfY29kZWNzX3JlYWRidWZmZXJfZW5jb2RlX19kb2NfXywKICJyZWFkYnVmZmVyX2VuY29kZSgkbW9kdWxlLCBkYXRhLCBlcnJvcnM9Tm9uZSwgLylcbiIKQEAgLTgxOSwxNCArOTAyLDE2IEBACiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAicyp8ejpyZWFkYnVmZmVyX2VuY29kZSIsCi0gICAgICAgICZkYXRhLCAmZXJyb3JzKSkKKyAgICAgICAgJmRhdGEsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19yZWFkYnVmZmVyX2VuY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycyk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtODUxLDggKzkzNiw5IEBACiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6OnVuaWNvZGVfaW50ZXJuYWxfZW5jb2RlIiwKLSAgICAgICAgJm9iaiwgJmVycm9ycykpCisgICAgICAgICZvYmosICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191bmljb2RlX2ludGVybmFsX2VuY29kZV9pbXBsKG1vZHVsZSwgb2JqLCBlcnJvcnMpOwogCiBleGl0OgpAQCAtODc4LDkgKzk2NCwxMCBAQAogICAgIFB5T2JqZWN0ICpzdHI7CiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6OnV0Zl83X2VuY29kZSIsCi0gICAgICAgICZzdHIsICZlcnJvcnMpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVXx6OnV0Zl83X2VuY29kZSIsCisgICAgICAgICZzdHIsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191dGZfN19lbmNvZGVfaW1wbChtb2R1bGUsIHN0ciwgZXJyb3JzKTsKIAogZXhpdDoKQEAgLTkwNiw5ICs5OTMsMTAgQEAKICAgICBQeU9iamVjdCAqc3RyOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejp1dGZfOF9lbmNvZGUiLAotICAgICAgICAmc3RyLCAmZXJyb3JzKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8ejp1dGZfOF9lbmNvZGUiLAorICAgICAgICAmc3RyLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzhfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC05MzUsOSArMTAyMywxMCBAQAogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAgICAgaW50IGJ5dGVvcmRlciA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98emk6dXRmXzE2X2VuY29kZSIsCi0gICAgICAgICZzdHIsICZlcnJvcnMsICZieXRlb3JkZXIpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVXx6aTp1dGZfMTZfZW5jb2RlIiwKKyAgICAgICAgJnN0ciwgJmVycm9ycywgJmJ5dGVvcmRlcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl8xNl9lbmNvZGVfaW1wbChtb2R1bGUsIHN0ciwgZXJyb3JzLCBieXRlb3JkZXIpOwogCiBleGl0OgpAQCAtOTYzLDkgKzEwNTIsMTAgQEAKICAgICBQeU9iamVjdCAqc3RyOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejp1dGZfMTZfbGVfZW5jb2RlIiwKLSAgICAgICAgJnN0ciwgJmVycm9ycykpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfHo6dXRmXzE2X2xlX2VuY29kZSIsCisgICAgICAgICZzdHIsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191dGZfMTZfbGVfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC05OTEsOSArMTA4MSwxMCBAQAogICAgIFB5T2JqZWN0ICpzdHI7CiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6OnV0Zl8xNl9iZV9lbmNvZGUiLAotICAgICAgICAmc3RyLCAmZXJyb3JzKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8ejp1dGZfMTZfYmVfZW5jb2RlIiwKKyAgICAgICAgJnN0ciwgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl8xNl9iZV9lbmNvZGVfaW1wbChtb2R1bGUsIHN0ciwgZXJyb3JzKTsKIAogZXhpdDoKQEAgLTEwMjAsOSArMTExMSwxMCBAQAogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAgICAgaW50IGJ5dGVvcmRlciA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98emk6dXRmXzMyX2VuY29kZSIsCi0gICAgICAgICZzdHIsICZlcnJvcnMsICZieXRlb3JkZXIpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVXx6aTp1dGZfMzJfZW5jb2RlIiwKKyAgICAgICAgJnN0ciwgJmVycm9ycywgJmJ5dGVvcmRlcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl8zMl9lbmNvZGVfaW1wbChtb2R1bGUsIHN0ciwgZXJyb3JzLCBieXRlb3JkZXIpOwogCiBleGl0OgpAQCAtMTA0OCw5ICsxMTQwLDEwIEBACiAgICAgUHlPYmplY3QgKnN0cjsKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6dXRmXzMyX2xlX2VuY29kZSIsCi0gICAgICAgICZzdHIsICZlcnJvcnMpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVXx6OnV0Zl8zMl9sZV9lbmNvZGUiLAorICAgICAgICAmc3RyLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzMyX2xlX2VuY29kZV9pbXBsKG1vZHVsZSwgc3RyLCBlcnJvcnMpOwogCiBleGl0OgpAQCAtMTA3Niw5ICsxMTY5LDEwIEBACiAgICAgUHlPYmplY3QgKnN0cjsKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6dXRmXzMyX2JlX2VuY29kZSIsCi0gICAgICAgICZzdHIsICZlcnJvcnMpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVXx6OnV0Zl8zMl9iZV9lbmNvZGUiLAorICAgICAgICAmc3RyLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzMyX2JlX2VuY29kZV9pbXBsKG1vZHVsZSwgc3RyLCBlcnJvcnMpOwogCiBleGl0OgpAQCAtMTEwNCw5ICsxMTk4LDEwIEBACiAgICAgUHlPYmplY3QgKnN0cjsKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6dW5pY29kZV9lc2NhcGVfZW5jb2RlIiwKLSAgICAgICAgJnN0ciwgJmVycm9ycykpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfHo6dW5pY29kZV9lc2NhcGVfZW5jb2RlIiwKKyAgICAgICAgJnN0ciwgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3VuaWNvZGVfZXNjYXBlX2VuY29kZV9pbXBsKG1vZHVsZSwgc3RyLCBlcnJvcnMpOwogCiBleGl0OgpAQCAtMTEzMiw5ICsxMjI3LDEwIEBACiAgICAgUHlPYmplY3QgKnN0cjsKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6cmF3X3VuaWNvZGVfZXNjYXBlX2VuY29kZSIsCi0gICAgICAgICZzdHIsICZlcnJvcnMpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVXx6OnJhd191bmljb2RlX2VzY2FwZV9lbmNvZGUiLAorICAgICAgICAmc3RyLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfcmF3X3VuaWNvZGVfZXNjYXBlX2VuY29kZV9pbXBsKG1vZHVsZSwgc3RyLCBlcnJvcnMpOwogCiBleGl0OgpAQCAtMTE2MCw5ICsxMjU2LDEwIEBACiAgICAgUHlPYmplY3QgKnN0cjsKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6bGF0aW5fMV9lbmNvZGUiLAotICAgICAgICAmc3RyLCAmZXJyb3JzKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8ejpsYXRpbl8xX2VuY29kZSIsCisgICAgICAgICZzdHIsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19sYXRpbl8xX2VuY29kZV9pbXBsKG1vZHVsZSwgc3RyLCBlcnJvcnMpOwogCiBleGl0OgpAQCAtMTE4OCw5ICsxMjg1LDEwIEBACiAgICAgUHlPYmplY3QgKnN0cjsKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6YXNjaWlfZW5jb2RlIiwKLSAgICAgICAgJnN0ciwgJmVycm9ycykpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfHo6YXNjaWlfZW5jb2RlIiwKKyAgICAgICAgJnN0ciwgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2FzY2lpX2VuY29kZV9pbXBsKG1vZHVsZSwgc3RyLCBlcnJvcnMpOwogCiBleGl0OgpAQCAtMTIxNyw5ICsxMzE1LDEwIEBACiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKICAgICBQeU9iamVjdCAqbWFwcGluZyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ek86Y2hhcm1hcF9lbmNvZGUiLAotICAgICAgICAmc3RyLCAmZXJyb3JzLCAmbWFwcGluZykpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfHpPOmNoYXJtYXBfZW5jb2RlIiwKKyAgICAgICAgJnN0ciwgJmVycm9ycywgJm1hcHBpbmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19jaGFybWFwX2VuY29kZV9pbXBsKG1vZHVsZSwgc3RyLCBlcnJvcnMsIG1hcHBpbmcpOwogCiBleGl0OgpAQCAtMTI0MywxNSArMTM0MiwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICptYXA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6Y2hhcm1hcF9idWlsZCIsICZtYXApKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTpjaGFybWFwX2J1aWxkIiwgJm1hcCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2NoYXJtYXBfYnVpbGRfaW1wbChtb2R1bGUsIG1hcCk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KIAotI2lmIGRlZmluZWQoSEFWRV9NQkNTKQorI2lmIGRlZmluZWQoTVNfV0lORE9XUykKIAogUHlEb2NfU1RSVkFSKF9jb2RlY3NfbWJjc19lbmNvZGVfX2RvY19fLAogIm1iY3NfZW5jb2RlKCRtb2R1bGUsIHN0ciwgZXJyb3JzPU5vbmUsIC8pXG4iCkBAIC0xMjcxLDE4ICsxMzcxLDUxIEBACiAgICAgUHlPYmplY3QgKnN0cjsKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6bWJjc19lbmNvZGUiLAotICAgICAgICAmc3RyLCAmZXJyb3JzKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8ejptYmNzX2VuY29kZSIsCisgICAgICAgICZzdHIsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19tYmNzX2VuY29kZV9pbXBsKG1vZHVsZSwgc3RyLCBlcnJvcnMpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKLSNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfTUJDUykgKi8KKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCiAKLSNpZiBkZWZpbmVkKEhBVkVfTUJDUykKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisKK1B5RG9jX1NUUlZBUihfY29kZWNzX29lbV9lbmNvZGVfX2RvY19fLAorIm9lbV9lbmNvZGUoJG1vZHVsZSwgc3RyLCBlcnJvcnM9Tm9uZSwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0NPREVDU19PRU1fRU5DT0RFX01FVEhPRERFRiAgICBcCisgICAgeyJvZW1fZW5jb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3Nfb2VtX2VuY29kZSwgTUVUSF9WQVJBUkdTLCBfY29kZWNzX29lbV9lbmNvZGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19jb2RlY3Nfb2VtX2VuY29kZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsIGNvbnN0IGNoYXIgKmVycm9ycyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX29lbV9lbmNvZGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnN0cjsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfHo6b2VtX2VuY29kZSIsCisgICAgICAgICZzdHIsICZlcnJvcnMpKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19vZW1fZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKIAogUHlEb2NfU1RSVkFSKF9jb2RlY3NfY29kZV9wYWdlX2VuY29kZV9fZG9jX18sCiAiY29kZV9wYWdlX2VuY29kZSgkbW9kdWxlLCBjb2RlX3BhZ2UsIHN0ciwgZXJyb3JzPU5vbmUsIC8pXG4iCkBAIC0xMzA0LDE2ICsxNDM3LDE3IEBACiAgICAgUHlPYmplY3QgKnN0cjsKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpT3x6OmNvZGVfcGFnZV9lbmNvZGUiLAotICAgICAgICAmY29kZV9wYWdlLCAmc3RyLCAmZXJyb3JzKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlVfHo6Y29kZV9wYWdlX2VuY29kZSIsCisgICAgICAgICZjb2RlX3BhZ2UsICZzdHIsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19jb2RlX3BhZ2VfZW5jb2RlX2ltcGwobW9kdWxlLCBjb2RlX3BhZ2UsIHN0ciwgZXJyb3JzKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQogCi0jZW5kaWYgLyogZGVmaW5lZChIQVZFX01CQ1MpICovCisjZW5kaWYgLyogZGVmaW5lZChNU19XSU5ET1dTKSAqLwogCiBQeURvY19TVFJWQVIoX2NvZGVjc19yZWdpc3Rlcl9lcnJvcl9fZG9jX18sCiAicmVnaXN0ZXJfZXJyb3IoJG1vZHVsZSwgZXJyb3JzLCBoYW5kbGVyLCAvKVxuIgpAQCAtMTM0MCw4ICsxNDc0LDkgQEAKICAgICBQeU9iamVjdCAqaGFuZGxlcjsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic086cmVnaXN0ZXJfZXJyb3IiLAotICAgICAgICAmZXJyb3JzLCAmaGFuZGxlcikpCisgICAgICAgICZlcnJvcnMsICZoYW5kbGVyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfcmVnaXN0ZXJfZXJyb3JfaW1wbChtb2R1bGUsIGVycm9ycywgaGFuZGxlcik7CiAKIGV4aXQ6CkBAIC0xMzY5LDggKzE1MDQsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6bG9va3VwX2Vycm9yIiwgJm5hbWUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpsb29rdXBfZXJyb3IiLCAmbmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2xvb2t1cF9lcnJvcl9pbXBsKG1vZHVsZSwgbmFtZSk7CiAKIGV4aXQ6CkBAIC0xMzgxLDYgKzE1MTcsMTAgQEAKICAgICAjZGVmaW5lIF9DT0RFQ1NfTUJDU19ERUNPREVfTUVUSE9EREVGCiAjZW5kaWYgLyogIWRlZmluZWQoX0NPREVDU19NQkNTX0RFQ09ERV9NRVRIT0RERUYpICovCiAKKyNpZm5kZWYgX0NPREVDU19PRU1fREVDT0RFX01FVEhPRERFRgorICAgICNkZWZpbmUgX0NPREVDU19PRU1fREVDT0RFX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKF9DT0RFQ1NfT0VNX0RFQ09ERV9NRVRIT0RERUYpICovCisKICNpZm5kZWYgX0NPREVDU19DT0RFX1BBR0VfREVDT0RFX01FVEhPRERFRgogICAgICNkZWZpbmUgX0NPREVDU19DT0RFX1BBR0VfREVDT0RFX01FVEhPRERFRgogI2VuZGlmIC8qICFkZWZpbmVkKF9DT0RFQ1NfQ09ERV9QQUdFX0RFQ09ERV9NRVRIT0RERUYpICovCkBAIC0xMzg5LDcgKzE1MjksMTEgQEAKICAgICAjZGVmaW5lIF9DT0RFQ1NfTUJDU19FTkNPREVfTUVUSE9EREVGCiAjZW5kaWYgLyogIWRlZmluZWQoX0NPREVDU19NQkNTX0VOQ09ERV9NRVRIT0RERUYpICovCiAKKyNpZm5kZWYgX0NPREVDU19PRU1fRU5DT0RFX01FVEhPRERFRgorICAgICNkZWZpbmUgX0NPREVDU19PRU1fRU5DT0RFX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKF9DT0RFQ1NfT0VNX0VOQ09ERV9NRVRIT0RERUYpICovCisKICNpZm5kZWYgX0NPREVDU19DT0RFX1BBR0VfRU5DT0RFX01FVEhPRERFRgogICAgICNkZWZpbmUgX0NPREVDU19DT0RFX1BBR0VfRU5DT0RFX01FVEhPRERFRgogI2VuZGlmIC8qICFkZWZpbmVkKF9DT0RFQ1NfQ09ERV9QQUdFX0VOQ09ERV9NRVRIT0RERUYpICovCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDJmZWQ5NGUyYWI3NjViYSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NmQ2YWZjYWJkZTEwZWQ3OSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fY3J5cHRtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvX2NyeXB0bW9kdWxlLmMuaAppbmRleCBhM2MzNzFjLi40MTJjNmZlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9fY3J5cHRtb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL19jcnlwdG1vZHVsZS5jLmgKQEAgLTI3LDExICsyNywxMiBAQAogICAgIGNvbnN0IGNoYXIgKnNhbHQ7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNzOmNyeXB0IiwKLSAgICAgICAgJndvcmQsICZzYWx0KSkKKyAgICAgICAgJndvcmQsICZzYWx0KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGNyeXB0X2NyeXB0X2ltcGwobW9kdWxlLCB3b3JkLCBzYWx0KTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWUwNDkzYTk2OTE1Mzc2OTAgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PThkZmM4ODI2NGU2NjJkZjQgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX2N1cnNlc21vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fY3Vyc2VzbW9kdWxlLmMuaAppbmRleCA1ZTExNzQyLi42MmZmMWM4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9fY3Vyc2VzbW9kdWxlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9fY3Vyc2VzbW9kdWxlLmMuaApAQCAtNDAsMjIgKzQwLDI2IEBACiAKICAgICBzd2l0Y2ggKFB5VHVwbGVfR0VUX1NJWkUoYXJncykpIHsKICAgICAgICAgY2FzZSAxOgotICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOmFkZGNoIiwgJmNoKSkKKyAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzphZGRjaCIsICZjaCkpIHsKICAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPbDphZGRjaCIsICZjaCwgJmF0dHIpKQorICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPbDphZGRjaCIsICZjaCwgJmF0dHIpKSB7CiAgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgfQogICAgICAgICAgICAgZ3JvdXBfcmlnaHRfMSA9IDE7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAzOgotICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaU86YWRkY2giLCAmeSwgJngsICZjaCkpCisgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpTzphZGRjaCIsICZ5LCAmeCwgJmNoKSkgewogICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGdyb3VwX2xlZnRfMSA9IDE7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSA0OgotICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaU9sOmFkZGNoIiwgJnksICZ4LCAmY2gsICZhdHRyKSkKKyAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWlPbDphZGRjaCIsICZ5LCAmeCwgJmNoLCAmYXR0cikpIHsKICAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBncm91cF9yaWdodF8xID0gMTsKICAgICAgICAgICAgIGdyb3VwX2xlZnRfMSA9IDE7CiAgICAgICAgICAgICBicmVhazsKQEAgLTY4LDQgKzcyLDQgQEAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05ODJiMWU3MDk1NzdmM2VjIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xM2ZmYzVmOGQ3OWNiZmJmIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL19kYXRldGltZW1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fZGF0ZXRpbWVtb2R1bGUuYy5oCmluZGV4IDY4OGM5MDMuLmRjYjk5MmIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL19kYXRldGltZW1vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvX2RhdGV0aW1lbW9kdWxlLmMuaApAQCAtMTQsMjQgKzE0LDI2IEBACiAiSWYgbm8gdHogaXMgc3BlY2lmaWVkLCB1c2VzIGxvY2FsIHRpbWV6b25lLiIpOwogCiAjZGVmaW5lIERBVEVUSU1FX0RBVEVUSU1FX05PV19NRVRIT0RERUYgICAgXAotICAgIHsibm93IiwgKFB5Q0Z1bmN0aW9uKWRhdGV0aW1lX2RhdGV0aW1lX25vdywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFN8TUVUSF9DTEFTUywgZGF0ZXRpbWVfZGF0ZXRpbWVfbm93X19kb2NfX30sCisgICAgeyJub3ciLCAoUHlDRnVuY3Rpb24pZGF0ZXRpbWVfZGF0ZXRpbWVfbm93LCBNRVRIX0ZBU1RDQUxMfE1FVEhfQ0xBU1MsIGRhdGV0aW1lX2RhdGV0aW1lX25vd19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogZGF0ZXRpbWVfZGF0ZXRpbWVfbm93X2ltcGwoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqdHopOwogCiBzdGF0aWMgUHlPYmplY3QgKgotZGF0ZXRpbWVfZGF0ZXRpbWVfbm93KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitkYXRldGltZV9kYXRldGltZV9ub3coUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsidHoiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJ0eiIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPOm5vdyIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnR6ID0gUHlfTm9uZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPOm5vdyIsIF9rZXl3b3JkcywKLSAgICAgICAgJnR6KSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnR6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGRhdGV0aW1lX2RhdGV0aW1lX25vd19pbXBsKHR5cGUsIHR6KTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTdmNDVjNjcwZDZlNDk1M2EgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PThhYWFjMDcwNWFkZDYxY2EgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX2RibW1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fZGJtbW9kdWxlLmMuaAppbmRleCA0OWNiY2ViLi4wNmNmN2U2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9fZGJtbW9kdWxlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9fZGJtbW9kdWxlLmMuaApAQCAtNjAsOCArNjAsOSBAQAogICAgIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAicyN8TzpnZXQiLAotICAgICAgICAma2V5LCAma2V5X2xlbmd0aCwgJmRlZmF1bHRfdmFsdWUpKQorICAgICAgICAma2V5LCAma2V5X2xlbmd0aCwgJmRlZmF1bHRfdmFsdWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2RibV9kYm1fZ2V0X2ltcGwoc2VsZiwga2V5LCBrZXlfbGVuZ3RoLCBkZWZhdWx0X3ZhbHVlKTsKIAogZXhpdDoKQEAgLTkzLDggKzk0LDkgQEAKICAgICBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSA9IE5VTEw7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMjfE86c2V0ZGVmYXVsdCIsCi0gICAgICAgICZrZXksICZrZXlfbGVuZ3RoLCAmZGVmYXVsdF92YWx1ZSkpCisgICAgICAgICZrZXksICZrZXlfbGVuZ3RoLCAmZGVmYXVsdF92YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfZGJtX2RibV9zZXRkZWZhdWx0X2ltcGwoc2VsZiwga2V5LCBrZXlfbGVuZ3RoLCBkZWZhdWx0X3ZhbHVlKTsKIAogZXhpdDoKQEAgLTEzMSwxMSArMTMzLDEyIEBACiAgICAgaW50IG1vZGUgPSA0Mzg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInN8c2k6b3BlbiIsCi0gICAgICAgICZmaWxlbmFtZSwgJmZsYWdzLCAmbW9kZSkpCisgICAgICAgICZmaWxlbmFtZSwgJmZsYWdzLCAmbW9kZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBkYm1vcGVuX2ltcGwobW9kdWxlLCBmaWxlbmFtZSwgZmxhZ3MsIG1vZGUpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZmZmMTJmMTY4Y2RmOGI0MyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTlhZGY5NjZlZjA0NzVmZiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fZWxlbWVudHRyZWUuYy5oIGIvTW9kdWxlcy9jbGluaWMvX2VsZW1lbnR0cmVlLmMuaAppbmRleCA4NmI0YzRjLi4xYjMwOWNkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9fZWxlbWVudHRyZWUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL19lbGVtZW50dHJlZS5jLmgKQEAgLTE5LDggKzE5LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeU9iamVjdCAqc3ViZWxlbWVudDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyE6YXBwZW5kIiwgJkVsZW1lbnRfVHlwZSwgJnN1YmVsZW1lbnQpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyE6YXBwZW5kIiwgJkVsZW1lbnRfVHlwZSwgJnN1YmVsZW1lbnQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX0VsZW1lbnRfYXBwZW5kX2ltcGwoc2VsZiwgc3ViZWxlbWVudCk7CiAKIGV4aXQ6CkBAIC04Nyw4ICs4OCw5IEBACiAgICAgUHlfc3NpemVfdCBfcmV0dXJuX3ZhbHVlOwogCiAgICAgX3JldHVybl92YWx1ZSA9IF9lbGVtZW50dHJlZV9FbGVtZW50X19fc2l6ZW9mX19faW1wbChzZWxmKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Tc2l6ZV90KF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMTM0LDIzICsxMzYsMjUgQEAKICJcbiIpOwogCiAjZGVmaW5lIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0ZJTkRfTUVUSE9EREVGICAgIFwKLSAgICB7ImZpbmQiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmRfX2RvY19ffSwKKyAgICB7ImZpbmQiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZCwgTUVUSF9GQVNUQ0FMTCwgX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZF9pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lc3BhY2VzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmQoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm5hbWVzcGFjZXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm5hbWVzcGFjZXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPfE86ZmluZCIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnBhdGg7CiAgICAgUHlPYmplY3QgKm5hbWVzcGFjZXMgPSBQeV9Ob25lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xPOmZpbmQiLCBfa2V5d29yZHMsCi0gICAgICAgICZwYXRoLCAmbmFtZXNwYWNlcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZwYXRoLCAmbmFtZXNwYWNlcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kX2ltcGwoc2VsZiwgcGF0aCwgbmFtZXNwYWNlcyk7CiAKIGV4aXQ6CkBAIC0xNjMsNyArMTY3LDcgQEAKICJcbiIpOwogCiAjZGVmaW5lIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0ZJTkRURVhUX01FVEhPRERFRiAgICBcCi0gICAgeyJmaW5kdGV4dCIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kdGV4dCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmR0ZXh0X19kb2NfX30sCisgICAgeyJmaW5kdGV4dCIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kdGV4dCwgTUVUSF9GQVNUQ0FMTCwgX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZHRleHRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmR0ZXh0X2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnBhdGgsCkBAIC0xNzEsMTcgKzE3NSwxOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbmFtZXNwYWNlcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fZWxlbWVudHRyZWVfRWxlbWVudF9maW5kdGV4dChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmR0ZXh0KEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImRlZmF1bHQiLCAibmFtZXNwYWNlcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZGVmYXVsdCIsICJuYW1lc3BhY2VzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3xPTzpmaW5kdGV4dCIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnBhdGg7CiAgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUgPSBQeV9Ob25lOwogICAgIFB5T2JqZWN0ICpuYW1lc3BhY2VzID0gUHlfTm9uZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98T086ZmluZHRleHQiLCBfa2V5d29yZHMsCi0gICAgICAgICZwYXRoLCAmZGVmYXVsdF92YWx1ZSwgJm5hbWVzcGFjZXMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmcGF0aCwgJmRlZmF1bHRfdmFsdWUsICZuYW1lc3BhY2VzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmR0ZXh0X2ltcGwoc2VsZiwgcGF0aCwgZGVmYXVsdF92YWx1ZSwgbmFtZXNwYWNlcyk7CiAKIGV4aXQ6CkBAIC0xOTQsMjMgKzIwMCwyNSBAQAogIlxuIik7CiAKICNkZWZpbmUgX0VMRU1FTlRUUkVFX0VMRU1FTlRfRklOREFMTF9NRVRIT0RERUYgICAgXAotICAgIHsiZmluZGFsbCIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kYWxsLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZGFsbF9fZG9jX199LAorICAgIHsiZmluZGFsbCIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kYWxsLCBNRVRIX0ZBU1RDQUxMLCBfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kYWxsX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kYWxsX2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm5hbWVzcGFjZXMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZGFsbChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmRhbGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAibmFtZXNwYWNlcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAibmFtZXNwYWNlcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98TzpmaW5kYWxsIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqcGF0aDsKICAgICBQeU9iamVjdCAqbmFtZXNwYWNlcyA9IFB5X05vbmU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfE86ZmluZGFsbCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnBhdGgsICZuYW1lc3BhY2VzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnBhdGgsICZuYW1lc3BhY2VzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmRhbGxfaW1wbChzZWxmLCBwYXRoLCBuYW1lc3BhY2VzKTsKIAogZXhpdDoKQEAgLTIyMywyMyArMjMxLDI1IEBACiAiXG4iKTsKIAogI2RlZmluZSBfRUxFTUVOVFRSRUVfRUxFTUVOVF9JVEVSRklORF9NRVRIT0RERUYgICAgXAotICAgIHsiaXRlcmZpbmQiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcmZpbmQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyZmluZF9fZG9jX199LAorICAgIHsiaXRlcmZpbmQiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcmZpbmQsIE1FVEhfRkFTVENBTEwsIF9lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXJmaW5kX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyZmluZF9pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbmFtZXNwYWNlcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyZmluZChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXJmaW5kKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm5hbWVzcGFjZXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm5hbWVzcGFjZXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPfE86aXRlcmZpbmQiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpwYXRoOwogICAgIFB5T2JqZWN0ICpuYW1lc3BhY2VzID0gUHlfTm9uZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98TzppdGVyZmluZCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnBhdGgsICZuYW1lc3BhY2VzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnBhdGgsICZuYW1lc3BhY2VzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXJmaW5kX2ltcGwoc2VsZiwgcGF0aCwgbmFtZXNwYWNlcyk7CiAKIGV4aXQ6CkBAIC0yNTIsMjMgKzI2MiwyNSBAQAogIlxuIik7CiAKICNkZWZpbmUgX0VMRU1FTlRUUkVFX0VMRU1FTlRfR0VUX01FVEhPRERFRiAgICBcCi0gICAgeyJnZXQiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX0VsZW1lbnRfZ2V0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX2VsZW1lbnR0cmVlX0VsZW1lbnRfZ2V0X19kb2NfX30sCisgICAgeyJnZXQiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX0VsZW1lbnRfZ2V0LCBNRVRIX0ZBU1RDQUxMLCBfZWxlbWVudHRyZWVfRWxlbWVudF9nZXRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9lbGVtZW50dHJlZV9FbGVtZW50X2dldF9pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICprZXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fZWxlbWVudHRyZWVfRWxlbWVudF9nZXQoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfZWxlbWVudHRyZWVfRWxlbWVudF9nZXQoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImtleSIsICJkZWZhdWx0IiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsia2V5IiwgImRlZmF1bHQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPfE86Z2V0IiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqa2V5OwogICAgIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlID0gUHlfTm9uZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98TzpnZXQiLCBfa2V5d29yZHMsCi0gICAgICAgICZrZXksICZkZWZhdWx0X3ZhbHVlKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmtleSwgJmRlZmF1bHRfdmFsdWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX0VsZW1lbnRfZ2V0X2ltcGwoc2VsZiwga2V5LCBkZWZhdWx0X3ZhbHVlKTsKIAogZXhpdDoKQEAgLTI5OCwyMSArMzEwLDIzIEBACiAiXG4iKTsKIAogI2RlZmluZSBfRUxFTUVOVFRSRUVfRUxFTUVOVF9JVEVSX01FVEhPRERFRiAgICBcCi0gICAgeyJpdGVyIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyX19kb2NfX30sCisgICAgeyJpdGVyIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXIsIE1FVEhfRkFTVENBTEwsIF9lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXJfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXJfaW1wbChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGFnKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXIoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJ0YWciLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJ0YWciLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8TzppdGVyIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqdGFnID0gUHlfTm9uZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPOml0ZXIiLCBfa2V5d29yZHMsCi0gICAgICAgICZ0YWcpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmdGFnKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXJfaW1wbChzZWxmLCB0YWcpOwogCiBleGl0OgpAQCAtMzU2LDggKzM3MCw5IEBACiAgICAgUHlPYmplY3QgKnN1YmVsZW1lbnQ7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIm5PITppbnNlcnQiLAotICAgICAgICAmaW5kZXgsICZFbGVtZW50X1R5cGUsICZzdWJlbGVtZW50KSkKKyAgICAgICAgJmluZGV4LCAmRWxlbWVudF9UeXBlLCAmc3ViZWxlbWVudCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfRWxlbWVudF9pbnNlcnRfaW1wbChzZWxmLCBpbmRleCwgc3ViZWxlbWVudCk7CiAKIGV4aXQ6CkBAIC00MTksOCArNDM0LDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgIm1ha2VlbGVtZW50IiwKICAgICAgICAgMiwgMiwKLSAgICAgICAgJnRhZywgJmF0dHJpYikpCisgICAgICAgICZ0YWcsICZhdHRyaWIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX0VsZW1lbnRfbWFrZWVsZW1lbnRfaW1wbChzZWxmLCB0YWcsIGF0dHJpYik7CiAKIGV4aXQ6CkBAIC00NDQsOCArNDYwLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeU9iamVjdCAqc3ViZWxlbWVudDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyE6cmVtb3ZlIiwgJkVsZW1lbnRfVHlwZSwgJnN1YmVsZW1lbnQpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyE6cmVtb3ZlIiwgJkVsZW1lbnRfVHlwZSwgJnN1YmVsZW1lbnQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX0VsZW1lbnRfcmVtb3ZlX2ltcGwoc2VsZiwgc3ViZWxlbWVudCk7CiAKIGV4aXQ6CkBAIC00NzMsOCArNDkwLDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInNldCIsCiAgICAgICAgIDIsIDIsCi0gICAgICAgICZrZXksICZ2YWx1ZSkpCisgICAgICAgICZrZXksICZ2YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfRWxlbWVudF9zZXRfaW1wbChzZWxmLCBrZXksIHZhbHVlKTsKIAogZXhpdDoKQEAgLTQ4OSwxMiArNTA3LDE0IEBACiBfZWxlbWVudHRyZWVfVHJlZUJ1aWxkZXJfX19pbml0X18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewogICAgIGludCByZXR1cm5fdmFsdWUgPSAtMTsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImVsZW1lbnRfZmFjdG9yeSIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImVsZW1lbnRfZmFjdG9yeSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPOlRyZWVCdWlsZGVyIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqZWxlbWVudF9mYWN0b3J5ID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPOlRyZWVCdWlsZGVyIiwgX2tleXdvcmRzLAotICAgICAgICAmZWxlbWVudF9mYWN0b3J5KSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KGFyZ3MsIGt3YXJncywgJl9wYXJzZXIsCisgICAgICAgICZlbGVtZW50X2ZhY3RvcnkpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX1RyZWVCdWlsZGVyX19faW5pdF9fX2ltcGwoKFRyZWVCdWlsZGVyT2JqZWN0ICopc2VsZiwgZWxlbWVudF9mYWN0b3J5KTsKIAogZXhpdDoKQEAgLTU1NSw4ICs1NzUsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAic3RhcnQiLAogICAgICAgICAxLCAyLAotICAgICAgICAmdGFnLCAmYXR0cnMpKQorICAgICAgICAmdGFnLCAmYXR0cnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX1RyZWVCdWlsZGVyX3N0YXJ0X2ltcGwoc2VsZiwgdGFnLCBhdHRycyk7CiAKIGV4aXQ6CkBAIC01NzEsMTQgKzU5MiwxNiBAQAogX2VsZW1lbnR0cmVlX1hNTFBhcnNlcl9fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CiAgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiaHRtbCIsICJ0YXJnZXQiLCAiZW5jb2RpbmciLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJodG1sIiwgInRhcmdldCIsICJlbmNvZGluZyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPT3o6WE1MUGFyc2VyIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqaHRtbCA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnRhcmdldCA9IE5VTEw7CiAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE9PejpYTUxQYXJzZXIiLCBfa2V5d29yZHMsCi0gICAgICAgICZodG1sLCAmdGFyZ2V0LCAmZW5jb2RpbmcpKQorICAgIGlmICghX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoYXJncywga3dhcmdzLCAmX3BhcnNlciwKKyAgICAgICAgJmh0bWwsICZ0YXJnZXQsICZlbmNvZGluZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfWE1MUGFyc2VyX19faW5pdF9fX2ltcGwoKFhNTFBhcnNlck9iamVjdCAqKXNlbGYsIGh0bWwsIHRhcmdldCwgZW5jb2RpbmcpOwogCiBleGl0OgpAQCAtNjQwLDggKzY2Myw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJkb2N0eXBlIiwKICAgICAgICAgMywgMywKLSAgICAgICAgJm5hbWUsICZwdWJpZCwgJnN5c3RlbSkpCisgICAgICAgICZuYW1lLCAmcHViaWQsICZzeXN0ZW0pKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX1hNTFBhcnNlcl9kb2N0eXBlX2ltcGwoc2VsZiwgbmFtZSwgcHViaWQsIHN5c3RlbSk7CiAKIGV4aXQ6CkBAIC02NjgsMTIgKzY5MiwxNCBAQAogICAgIFB5T2JqZWN0ICpldmVudHNfcXVldWU7CiAgICAgUHlPYmplY3QgKmV2ZW50c190b19yZXBvcnQgPSBQeV9Ob25lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPIXxPOl9zZXRldmVudHMiLAotICAgICAgICAmUHlMaXN0X1R5cGUsICZldmVudHNfcXVldWUsICZldmVudHNfdG9fcmVwb3J0KSkKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJfc2V0ZXZlbnRzIiwKKyAgICAgICAgMSwgMiwKKyAgICAgICAgJmV2ZW50c19xdWV1ZSwgJmV2ZW50c190b19yZXBvcnQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX1hNTFBhcnNlcl9fc2V0ZXZlbnRzX2ltcGwoc2VsZiwgZXZlbnRzX3F1ZXVlLCBldmVudHNfdG9fcmVwb3J0KTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTI1YjhiZjdlN2YyMTUxY2EgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWI0YTU3MWE5OGNlZDMxNjMgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX2dkYm1tb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvX2dkYm1tb2R1bGUuYy5oCmluZGV4IDJkODdjZmMuLmZkZDU4OWMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL19nZGJtbW9kdWxlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9fZ2RibW1vZHVsZS5jLmgKQEAgLTIzLDggKzIzLDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImdldCIsCiAgICAgICAgIDEsIDIsCi0gICAgICAgICZrZXksICZkZWZhdWx0X3ZhbHVlKSkKKyAgICAgICAgJmtleSwgJmRlZmF1bHRfdmFsdWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2dkYm1fZ2RibV9nZXRfaW1wbChzZWxmLCBrZXksIGRlZmF1bHRfdmFsdWUpOwogCiBleGl0OgpAQCAtNTMsOCArNTQsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAic2V0ZGVmYXVsdCIsCiAgICAgICAgIDEsIDIsCi0gICAgICAgICZrZXksICZkZWZhdWx0X3ZhbHVlKSkKKyAgICAgICAgJmtleSwgJmRlZmF1bHRfdmFsdWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2dkYm1fZ2RibV9zZXRkZWZhdWx0X2ltcGwoc2VsZiwga2V5LCBkZWZhdWx0X3ZhbHVlKTsKIAogZXhpdDoKQEAgLTE0Nyw4ICsxNDksOSBAQAogICAgIGNvbnN0IGNoYXIgKmtleTsKICAgICBQeV9zc2l6ZV9jbGVhbl90IGtleV9sZW5ndGg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInMjOm5leHRrZXkiLCAma2V5LCAma2V5X2xlbmd0aCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzIzpuZXh0a2V5IiwgJmtleSwgJmtleV9sZW5ndGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2dkYm1fZ2RibV9uZXh0a2V5X2ltcGwoc2VsZiwga2V5LCBrZXlfbGVuZ3RoKTsKIAogZXhpdDoKQEAgLTI0MiwxMSArMjQ1LDEyIEBACiAgICAgaW50IG1vZGUgPSA0Mzg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInN8c2k6b3BlbiIsCi0gICAgICAgICZuYW1lLCAmZmxhZ3MsICZtb2RlKSkKKyAgICAgICAgJm5hbWUsICZmbGFncywgJm1vZGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gZGJtb3Blbl9pbXBsKG1vZHVsZSwgbmFtZSwgZmxhZ3MsIG1vZGUpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OWFjN2E4OTg1OGE5NzY1ZiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZWQwZjVkNGUzZDc5YjgwYyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9faGFzaG9wZW5zc2wuYy5oIGIvTW9kdWxlcy9jbGluaWMvX2hhc2hvcGVuc3NsLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDQ1MzUyCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9jbGluaWMvX2hhc2hvcGVuc3NsLmMuaApAQCAtMCwwICsxLDYwIEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCisjaWYgKE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPiAweDEwMTAwMDAwTCAmJiAhZGVmaW5lZChPUEVOU1NMX05PX1NDUllQVCkgJiYgIWRlZmluZWQoTElCUkVTU0xfVkVSU0lPTl9OVU1CRVIpKQorCitQeURvY19TVFJWQVIoX2hhc2hsaWJfc2NyeXB0X19kb2NfXywKKyJzY3J5cHQoJG1vZHVsZSwgLywgcGFzc3dvcmQsICosIHNhbHQ9Tm9uZSwgbj1Ob25lLCByPU5vbmUsIHA9Tm9uZSxcbiIKKyIgICAgICAgbWF4bWVtPTAsIGRrbGVuPTY0KVxuIgorIi0tXG4iCisiXG4iCisic2NyeXB0IHBhc3N3b3JkLWJhc2VkIGtleSBkZXJpdmF0aW9uIGZ1bmN0aW9uLiIpOworCisjZGVmaW5lIF9IQVNITElCX1NDUllQVF9NRVRIT0RERUYgICAgXAorICAgIHsic2NyeXB0IiwgKFB5Q0Z1bmN0aW9uKV9oYXNobGliX3NjcnlwdCwgTUVUSF9GQVNUQ0FMTCwgX2hhc2hsaWJfc2NyeXB0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaGFzaGxpYl9zY3J5cHRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9idWZmZXIgKnBhc3N3b3JkLCBQeV9idWZmZXIgKnNhbHQsCisgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbl9vYmosIFB5T2JqZWN0ICpyX29iaiwgUHlPYmplY3QgKnBfb2JqLAorICAgICAgICAgICAgICAgICAgICAgbG9uZyBtYXhtZW0sIGxvbmcgZGtsZW4pOworCitzdGF0aWMgUHlPYmplY3QgKgorX2hhc2hsaWJfc2NyeXB0KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGFzc3dvcmQiLCAic2FsdCIsICJuIiwgInIiLCAicCIsICJtYXhtZW0iLCAiZGtsZW4iLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ5KnwkeSpPIU8hTyFsbDpzY3J5cHQiLCBfa2V5d29yZHMsIDB9OworICAgIFB5X2J1ZmZlciBwYXNzd29yZCA9IHtOVUxMLCBOVUxMfTsKKyAgICBQeV9idWZmZXIgc2FsdCA9IHtOVUxMLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqbl9vYmogPSBQeV9Ob25lOworICAgIFB5T2JqZWN0ICpyX29iaiA9IFB5X05vbmU7CisgICAgUHlPYmplY3QgKnBfb2JqID0gUHlfTm9uZTsKKyAgICBsb25nIG1heG1lbSA9IDA7CisgICAgbG9uZyBka2xlbiA9IDY0OworCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZwYXNzd29yZCwgJnNhbHQsICZQeUxvbmdfVHlwZSwgJm5fb2JqLCAmUHlMb25nX1R5cGUsICZyX29iaiwgJlB5TG9uZ19UeXBlLCAmcF9vYmosICZtYXhtZW0sICZka2xlbikpIHsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBfaGFzaGxpYl9zY3J5cHRfaW1wbChtb2R1bGUsICZwYXNzd29yZCwgJnNhbHQsIG5fb2JqLCByX29iaiwgcF9vYmosIG1heG1lbSwgZGtsZW4pOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIHBhc3N3b3JkICovCisgICAgaWYgKHBhc3N3b3JkLm9iaikgeworICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBhc3N3b3JkKTsKKyAgICB9CisgICAgLyogQ2xlYW51cCBmb3Igc2FsdCAqLworICAgIGlmIChzYWx0Lm9iaikgeworICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnNhbHQpOworICAgIH0KKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiAoT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+IDB4MTAxMDAwMDBMICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fU0NSWVBUKSAmJiAhZGVmaW5lZChMSUJSRVNTTF9WRVJTSU9OX05VTUJFUikpICovCisKKyNpZm5kZWYgX0hBU0hMSUJfU0NSWVBUX01FVEhPRERFRgorICAgICNkZWZpbmUgX0hBU0hMSUJfU0NSWVBUX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKF9IQVNITElCX1NDUllQVF9NRVRIT0RERUYpICovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTE4Y2Q3MDM2ZmEwZmI1MiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fbHptYW1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fbHptYW1vZHVsZS5jLmgKaW5kZXggZjhkMzhlYS4uOWU2MDc1OSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvX2x6bWFtb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL19sem1hbW9kdWxlLmMuaApAQCAtMjUsMTQgKzI1LDE2IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOmNvbXByZXNzIiwgJmRhdGEpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6Y29tcHJlc3MiLCAmZGF0YSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfbHptYV9MWk1BQ29tcHJlc3Nvcl9jb21wcmVzc19pbXBsKHNlbGYsICZkYXRhKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC03OSwyOSArODEsMzIgQEAKICJ0aGUgdW51c2VkX2RhdGEgYXR0cmlidXRlLiIpOwogCiAjZGVmaW5lIF9MWk1BX0xaTUFERUNPTVBSRVNTT1JfREVDT01QUkVTU19NRVRIT0RERUYgICAgXAotICAgIHsiZGVjb21wcmVzcyIsIChQeUNGdW5jdGlvbilfbHptYV9MWk1BRGVjb21wcmVzc29yX2RlY29tcHJlc3MsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfbHptYV9MWk1BRGVjb21wcmVzc29yX2RlY29tcHJlc3NfX2RvY19ffSwKKyAgICB7ImRlY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9kZWNvbXByZXNzLCBNRVRIX0ZBU1RDQUxMLCBfbHptYV9MWk1BRGVjb21wcmVzc29yX2RlY29tcHJlc3NfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9sem1hX0xaTUFEZWNvbXByZXNzb3JfZGVjb21wcmVzc19pbXBsKERlY29tcHJlc3NvciAqc2VsZiwgUHlfYnVmZmVyICpkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhfbGVuZ3RoKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9sem1hX0xaTUFEZWNvbXByZXNzb3JfZGVjb21wcmVzcyhEZWNvbXByZXNzb3IgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9kZWNvbXByZXNzKERlY29tcHJlc3NvciAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImRhdGEiLCAibWF4X2xlbmd0aCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImRhdGEiLCAibWF4X2xlbmd0aCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InkqfG46ZGVjb21wcmVzcyIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAgICAgUHlfc3NpemVfdCBtYXhfbGVuZ3RoID0gLTE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ5KnxuOmRlY29tcHJlc3MiLCBfa2V5d29yZHMsCi0gICAgICAgICZkYXRhLCAmbWF4X2xlbmd0aCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZkYXRhLCAmbWF4X2xlbmd0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfbHptYV9MWk1BRGVjb21wcmVzc29yX2RlY29tcHJlc3NfaW1wbChzZWxmLCAmZGF0YSwgbWF4X2xlbmd0aCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMTM3LDE0ICsxNDIsMTYgQEAKIF9sem1hX0xaTUFEZWNvbXByZXNzb3JfX19pbml0X18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewogICAgIGludCByZXR1cm5fdmFsdWUgPSAtMTsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImZvcm1hdCIsICJtZW1saW1pdCIsICJmaWx0ZXJzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZm9ybWF0IiwgIm1lbWxpbWl0IiwgImZpbHRlcnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8aU9POkxaTUFEZWNvbXByZXNzb3IiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBmb3JtYXQgPSBGT1JNQVRfQVVUTzsKICAgICBQeU9iamVjdCAqbWVtbGltaXQgPSBQeV9Ob25lOwogICAgIFB5T2JqZWN0ICpmaWx0ZXJzID0gUHlfTm9uZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxpT086TFpNQURlY29tcHJlc3NvciIsIF9rZXl3b3JkcywKLSAgICAgICAgJmZvcm1hdCwgJm1lbWxpbWl0LCAmZmlsdGVycykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChhcmdzLCBrd2FyZ3MsICZfcGFyc2VyLAorICAgICAgICAmZm9ybWF0LCAmbWVtbGltaXQsICZmaWx0ZXJzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9sem1hX0xaTUFEZWNvbXByZXNzb3JfX19pbml0X19faW1wbCgoRGVjb21wcmVzc29yICopc2VsZiwgZm9ybWF0LCBtZW1saW1pdCwgZmlsdGVycyk7CiAKIGV4aXQ6CkBAIC0xNzEsOCArMTc4LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgY2hlY2tfaWQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6aXNfY2hlY2tfc3VwcG9ydGVkIiwgJmNoZWNrX2lkKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6aXNfY2hlY2tfc3VwcG9ydGVkIiwgJmNoZWNrX2lkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9sem1hX2lzX2NoZWNrX3N1cHBvcnRlZF9pbXBsKG1vZHVsZSwgY2hlY2tfaWQpOwogCiBleGl0OgpAQCAtMTk5LDggKzIwNyw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgbHptYV9maWx0ZXIgZmlsdGVyID0ge0xaTUFfVkxJX1VOS05PV04sIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpfZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzIiwgbHptYV9maWx0ZXJfY29udmVydGVyLCAmZmlsdGVyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOl9lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXMiLCBsem1hX2ZpbHRlcl9jb252ZXJ0ZXIsICZmaWx0ZXIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2x6bWFfX2VuY29kZV9maWx0ZXJfcHJvcGVydGllc19pbXBsKG1vZHVsZSwgZmlsdGVyKTsKIAogZXhpdDoKQEAgLTIzNCwxNSArMjQzLDE3IEBACiAgICAgUHlfYnVmZmVyIGVuY29kZWRfcHJvcHMgPSB7TlVMTCwgTlVMTH07CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8meSo6X2RlY29kZV9maWx0ZXJfcHJvcGVydGllcyIsCi0gICAgICAgIGx6bWFfdmxpX2NvbnZlcnRlciwgJmZpbHRlcl9pZCwgJmVuY29kZWRfcHJvcHMpKQorICAgICAgICBsem1hX3ZsaV9jb252ZXJ0ZXIsICZmaWx0ZXJfaWQsICZlbmNvZGVkX3Byb3BzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9sem1hX19kZWNvZGVfZmlsdGVyX3Byb3BlcnRpZXNfaW1wbChtb2R1bGUsIGZpbHRlcl9pZCwgJmVuY29kZWRfcHJvcHMpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGVuY29kZWRfcHJvcHMgKi8KLSAgICBpZiAoZW5jb2RlZF9wcm9wcy5vYmopCisgICAgaWYgKGVuY29kZWRfcHJvcHMub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZW5jb2RlZF9wcm9wcyk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mYWRhMDYwMjBmZDMxOGNjIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mMjdhYmFlNDYwMTIyNzA2IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL19vcGNvZGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvX29wY29kZS5jLmgKaW5kZXggYTVmNjQ0Mi4uNTEzY2JmZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvX29wY29kZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvX29wY29kZS5jLmgKQEAgLTIzLDE0ICsyMywxNiBAQAogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpfE86c3RhY2tfZWZmZWN0IiwKLSAgICAgICAgJm9wY29kZSwgJm9wYXJnKSkKKyAgICAgICAgJm9wY29kZSwgJm9wYXJnKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBfb3Bjb2RlX3N0YWNrX2VmZmVjdF9pbXBsKG1vZHVsZSwgb3Bjb2RlLCBvcGFyZyk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk4NGQ2ZGUxNDAzMDNkMTAgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTRkOTFjNmE3NjUwOTc4NTMgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX3BpY2tsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fcGlja2xlLmMuaAppbmRleCBiZDEyZDJhLi45YWQ0YzM3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9fcGlja2xlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9fcGlja2xlLmMuaApAQCAtNTMsOCArNTMsOSBAQAogICAgIFB5X3NzaXplX3QgX3JldHVybl92YWx1ZTsKIAogICAgIF9yZXR1cm5fdmFsdWUgPSBfcGlja2xlX1BpY2tsZXJfX19zaXplb2ZfX19pbXBsKHNlbGYpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbVNzaXplX3QoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC05MiwxNCArOTMsMTYgQEAKIF9waWNrbGVfUGlja2xlcl9fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CiAgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZmlsZSIsICJwcm90b2NvbCIsICJmaXhfaW1wb3J0cyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImZpbGUiLCAicHJvdG9jb2wiLCAiZml4X2ltcG9ydHMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPfE9wOlBpY2tsZXIiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpmaWxlOwogICAgIFB5T2JqZWN0ICpwcm90b2NvbCA9IE5VTEw7CiAgICAgaW50IGZpeF9pbXBvcnRzID0gMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98T3A6UGlja2xlciIsIF9rZXl3b3JkcywKLSAgICAgICAgJmZpbGUsICZwcm90b2NvbCwgJmZpeF9pbXBvcnRzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KGFyZ3MsIGt3YXJncywgJl9wYXJzZXIsCisgICAgICAgICZmaWxlLCAmcHJvdG9jb2wsICZmaXhfaW1wb3J0cykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfcGlja2xlX1BpY2tsZXJfX19pbml0X19faW1wbCgoUGlja2xlck9iamVjdCAqKXNlbGYsIGZpbGUsIHByb3RvY29sLCBmaXhfaW1wb3J0cyk7CiAKIGV4aXQ6CkBAIC0yMTIsOCArMjE1LDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImZpbmRfY2xhc3MiLAogICAgICAgICAyLCAyLAotICAgICAgICAmbW9kdWxlX25hbWUsICZnbG9iYWxfbmFtZSkpCisgICAgICAgICZtb2R1bGVfbmFtZSwgJmdsb2JhbF9uYW1lKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9waWNrbGVfVW5waWNrbGVyX2ZpbmRfY2xhc3NfaW1wbChzZWxmLCBtb2R1bGVfbmFtZSwgZ2xvYmFsX25hbWUpOwogCiBleGl0OgpAQCAtMjM5LDggKzI0Myw5IEBACiAgICAgUHlfc3NpemVfdCBfcmV0dXJuX3ZhbHVlOwogCiAgICAgX3JldHVybl92YWx1ZSA9IF9waWNrbGVfVW5waWNrbGVyX19fc2l6ZW9mX19faW1wbChzZWxmKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Tc2l6ZV90KF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMjgxLDE1ICsyODYsMTcgQEAKIF9waWNrbGVfVW5waWNrbGVyX19faW5pdF9fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICBpbnQgcmV0dXJuX3ZhbHVlID0gLTE7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJmaWxlIiwgImZpeF9pbXBvcnRzIiwgImVuY29kaW5nIiwgImVycm9ycyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImZpbGUiLCAiZml4X2ltcG9ydHMiLCAiZW5jb2RpbmciLCAiZXJyb3JzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3wkcHNzOlVucGlja2xlciIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKmZpbGU7CiAgICAgaW50IGZpeF9pbXBvcnRzID0gMTsKICAgICBjb25zdCBjaGFyICplbmNvZGluZyA9ICJBU0NJSSI7CiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gInN0cmljdCI7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfCRwc3M6VW5waWNrbGVyIiwgX2tleXdvcmRzLAotICAgICAgICAmZmlsZSwgJmZpeF9pbXBvcnRzLCAmZW5jb2RpbmcsICZlcnJvcnMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoYXJncywga3dhcmdzLCAmX3BhcnNlciwKKyAgICAgICAgJmZpbGUsICZmaXhfaW1wb3J0cywgJmVuY29kaW5nLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9waWNrbGVfVW5waWNrbGVyX19faW5pdF9fX2ltcGwoKFVucGlja2xlck9iamVjdCAqKXNlbGYsIGZpbGUsIGZpeF9pbXBvcnRzLCBlbmNvZGluZywgZXJyb3JzKTsKIAogZXhpdDoKQEAgLTM3NywyNSArMzg0LDI3IEBACiAiMiwgc28gdGhhdCB0aGUgcGlja2xlIGRhdGEgc3RyZWFtIGlzIHJlYWRhYmxlIHdpdGggUHl0aG9uIDIuIik7CiAKICNkZWZpbmUgX1BJQ0tMRV9EVU1QX01FVEhPRERFRiAgICBcCi0gICAgeyJkdW1wIiwgKFB5Q0Z1bmN0aW9uKV9waWNrbGVfZHVtcCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9waWNrbGVfZHVtcF9fZG9jX199LAorICAgIHsiZHVtcCIsIChQeUNGdW5jdGlvbilfcGlja2xlX2R1bXAsIE1FVEhfRkFTVENBTEwsIF9waWNrbGVfZHVtcF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3BpY2tsZV9kdW1wX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKmZpbGUsCiAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcHJvdG9jb2wsIGludCBmaXhfaW1wb3J0cyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fcGlja2xlX2R1bXAoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfcGlja2xlX2R1bXAoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7Im9iaiIsICJmaWxlIiwgInByb3RvY29sIiwgImZpeF9pbXBvcnRzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsib2JqIiwgImZpbGUiLCAicHJvdG9jb2wiLCAiZml4X2ltcG9ydHMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPT3xPJHA6ZHVtcCIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKm9iajsKICAgICBQeU9iamVjdCAqZmlsZTsKICAgICBQeU9iamVjdCAqcHJvdG9jb2wgPSBOVUxMOwogICAgIGludCBmaXhfaW1wb3J0cyA9IDE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPT3xPJHA6ZHVtcCIsIF9rZXl3b3JkcywKLSAgICAgICAgJm9iaiwgJmZpbGUsICZwcm90b2NvbCwgJmZpeF9pbXBvcnRzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJm9iaiwgJmZpbGUsICZwcm90b2NvbCwgJmZpeF9pbXBvcnRzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9waWNrbGVfZHVtcF9pbXBsKG1vZHVsZSwgb2JqLCBmaWxlLCBwcm90b2NvbCwgZml4X2ltcG9ydHMpOwogCiBleGl0OgpAQCAtNDIxLDI0ICs0MzAsMjYgQEAKICJQeXRob24gMiwgc28gdGhhdCB0aGUgcGlja2xlIGRhdGEgc3RyZWFtIGlzIHJlYWRhYmxlIHdpdGggUHl0aG9uIDIuIik7CiAKICNkZWZpbmUgX1BJQ0tMRV9EVU1QU19NRVRIT0RERUYgICAgXAotICAgIHsiZHVtcHMiLCAoUHlDRnVuY3Rpb24pX3BpY2tsZV9kdW1wcywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9waWNrbGVfZHVtcHNfX2RvY19ffSwKKyAgICB7ImR1bXBzIiwgKFB5Q0Z1bmN0aW9uKV9waWNrbGVfZHVtcHMsIE1FVEhfRkFTVENBTEwsIF9waWNrbGVfZHVtcHNfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9waWNrbGVfZHVtcHNfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqcHJvdG9jb2wsCiAgICAgICAgICAgICAgICAgICAgaW50IGZpeF9pbXBvcnRzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9waWNrbGVfZHVtcHMoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfcGlja2xlX2R1bXBzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJvYmoiLCAicHJvdG9jb2wiLCAiZml4X2ltcG9ydHMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJvYmoiLCAicHJvdG9jb2wiLCAiZml4X2ltcG9ydHMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPfE8kcDpkdW1wcyIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKm9iajsKICAgICBQeU9iamVjdCAqcHJvdG9jb2wgPSBOVUxMOwogICAgIGludCBmaXhfaW1wb3J0cyA9IDE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfE8kcDpkdW1wcyIsIF9rZXl3b3JkcywKLSAgICAgICAgJm9iaiwgJnByb3RvY29sLCAmZml4X2ltcG9ydHMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmb2JqLCAmcHJvdG9jb2wsICZmaXhfaW1wb3J0cykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfcGlja2xlX2R1bXBzX2ltcGwobW9kdWxlLCBvYmosIHByb3RvY29sLCBmaXhfaW1wb3J0cyk7CiAKIGV4aXQ6CkBAIC00NzUsMjUgKzQ4NiwyNyBAQAogInN0cmluZyBpbnN0YW5jZXMgYXMgYnl0ZXMgb2JqZWN0cy4iKTsKIAogI2RlZmluZSBfUElDS0xFX0xPQURfTUVUSE9EREVGICAgIFwKLSAgICB7ImxvYWQiLCAoUHlDRnVuY3Rpb24pX3BpY2tsZV9sb2FkLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3BpY2tsZV9sb2FkX19kb2NfX30sCisgICAgeyJsb2FkIiwgKFB5Q0Z1bmN0aW9uKV9waWNrbGVfbG9hZCwgTUVUSF9GQVNUQ0FMTCwgX3BpY2tsZV9sb2FkX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfcGlja2xlX2xvYWRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqZmlsZSwgaW50IGZpeF9pbXBvcnRzLAogICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKmVycm9ycyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fcGlja2xlX2xvYWQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfcGlja2xlX2xvYWQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImZpbGUiLCAiZml4X2ltcG9ydHMiLCAiZW5jb2RpbmciLCAiZXJyb3JzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZmlsZSIsICJmaXhfaW1wb3J0cyIsICJlbmNvZGluZyIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPfCRwc3M6bG9hZCIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKmZpbGU7CiAgICAgaW50IGZpeF9pbXBvcnRzID0gMTsKICAgICBjb25zdCBjaGFyICplbmNvZGluZyA9ICJBU0NJSSI7CiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gInN0cmljdCI7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfCRwc3M6bG9hZCIsIF9rZXl3b3JkcywKLSAgICAgICAgJmZpbGUsICZmaXhfaW1wb3J0cywgJmVuY29kaW5nLCAmZXJyb3JzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmZpbGUsICZmaXhfaW1wb3J0cywgJmVuY29kaW5nLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9waWNrbGVfbG9hZF9pbXBsKG1vZHVsZSwgZmlsZSwgZml4X2ltcG9ydHMsIGVuY29kaW5nLCBlcnJvcnMpOwogCiBleGl0OgpAQCAtNTIxLDI4ICs1MzQsMzAgQEAKICJzdHJpbmcgaW5zdGFuY2VzIGFzIGJ5dGVzIG9iamVjdHMuIik7CiAKICNkZWZpbmUgX1BJQ0tMRV9MT0FEU19NRVRIT0RERUYgICAgXAotICAgIHsibG9hZHMiLCAoUHlDRnVuY3Rpb24pX3BpY2tsZV9sb2FkcywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9waWNrbGVfbG9hZHNfX2RvY19ffSwKKyAgICB7ImxvYWRzIiwgKFB5Q0Z1bmN0aW9uKV9waWNrbGVfbG9hZHMsIE1FVEhfRkFTVENBTEwsIF9waWNrbGVfbG9hZHNfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9waWNrbGVfbG9hZHNfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqZGF0YSwgaW50IGZpeF9pbXBvcnRzLAogICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICplcnJvcnMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3BpY2tsZV9sb2FkcyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19waWNrbGVfbG9hZHMoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImRhdGEiLCAiZml4X2ltcG9ydHMiLCAiZW5jb2RpbmciLCAiZXJyb3JzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZGF0YSIsICJmaXhfaW1wb3J0cyIsICJlbmNvZGluZyIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPfCRwc3M6bG9hZHMiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpkYXRhOwogICAgIGludCBmaXhfaW1wb3J0cyA9IDE7CiAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSAiQVNDSUkiOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9ICJzdHJpY3QiOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3wkcHNzOmxvYWRzIiwgX2tleXdvcmRzLAotICAgICAgICAmZGF0YSwgJmZpeF9pbXBvcnRzLCAmZW5jb2RpbmcsICZlcnJvcnMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZGF0YSwgJmZpeF9pbXBvcnRzLCAmZW5jb2RpbmcsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3BpY2tsZV9sb2Fkc19pbXBsKG1vZHVsZSwgZGF0YSwgZml4X2ltcG9ydHMsIGVuY29kaW5nLCBlcnJvcnMpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTM2NTdlNTVkNmE3NDhhZiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODJiZTEzN2IzYzA5Y2I5ZiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fc3JlLmMuaCBiL01vZHVsZXMvY2xpbmljL19zcmUuYy5oCmluZGV4IDMyODE3MTcuLjA2MTIwMDUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL19zcmUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL19zcmUuYy5oCkBAIC0yMCw4ICsyMCw5IEBACiAgICAgaW50IF9yZXR1cm5fdmFsdWU7CiAKICAgICBfcmV0dXJuX3ZhbHVlID0gX3NyZV9nZXRjb2Rlc2l6ZV9pbXBsKG1vZHVsZSk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTQ4LDExICs0OSwxMyBAQAogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTpnZXRsb3dlciIsCi0gICAgICAgICZjaGFyYWN0ZXIsICZmbGFncykpCisgICAgICAgICZjaGFyYWN0ZXIsICZmbGFncykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gX3NyZV9nZXRsb3dlcl9pbXBsKG1vZHVsZSwgY2hhcmFjdGVyLCBmbGFncyk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTY2LDcgKzY5LDcgQEAKICJNYXRjaGVzIHplcm8gb3IgbW9yZSBjaGFyYWN0ZXJzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cmluZy4iKTsKIAogI2RlZmluZSBfU1JFX1NSRV9QQVRURVJOX01BVENIX01FVEhPRERFRiAgICBcCi0gICAgeyJtYXRjaCIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX21hdGNoLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NyZV9TUkVfUGF0dGVybl9tYXRjaF9fZG9jX199LAorICAgIHsibWF0Y2giLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfUGF0dGVybl9tYXRjaCwgTUVUSF9GQVNUQ0FMTCwgX3NyZV9TUkVfUGF0dGVybl9tYXRjaF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NyZV9TUkVfUGF0dGVybl9tYXRjaF9pbXBsKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdHJpbmcsCkBAIC03NCwxOCArNzcsMjAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcGF0dGVybik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc3JlX1NSRV9QYXR0ZXJuX21hdGNoKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NyZV9TUkVfUGF0dGVybl9tYXRjaChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgInBvcyIsICJlbmRwb3MiLCAicGF0dGVybiIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InN0cmluZyIsICJwb3MiLCAiZW5kcG9zIiwgInBhdHRlcm4iLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8T25uJE86bWF0Y2giLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpzdHJpbmcgPSBOVUxMOwogICAgIFB5X3NzaXplX3QgcG9zID0gMDsKICAgICBQeV9zc2l6ZV90IGVuZHBvcyA9IFBZX1NTSVpFX1RfTUFYOwogICAgIFB5T2JqZWN0ICpwYXR0ZXJuID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPbm4kTzptYXRjaCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnN0cmluZywgJnBvcywgJmVuZHBvcywgJnBhdHRlcm4pKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc3RyaW5nLCAmcG9zLCAmZW5kcG9zLCAmcGF0dGVybikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9QYXR0ZXJuX21hdGNoX2ltcGwoc2VsZiwgc3RyaW5nLCBwb3MsIGVuZHBvcywgcGF0dGVybik7CiAKIGV4aXQ6CkBAIC0xMDAsNyArMTA1LDcgQEAKICJNYXRjaGVzIGFnYWluc3QgYWxsIG9mIHRoZSBzdHJpbmciKTsKIAogI2RlZmluZSBfU1JFX1NSRV9QQVRURVJOX0ZVTExNQVRDSF9NRVRIT0RERUYgICAgXAotICAgIHsiZnVsbG1hdGNoIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1BhdHRlcm5fZnVsbG1hdGNoLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NyZV9TUkVfUGF0dGVybl9mdWxsbWF0Y2hfX2RvY19ffSwKKyAgICB7ImZ1bGxtYXRjaCIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX2Z1bGxtYXRjaCwgTUVUSF9GQVNUQ0FMTCwgX3NyZV9TUkVfUGF0dGVybl9mdWxsbWF0Y2hfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zcmVfU1JFX1BhdHRlcm5fZnVsbG1hdGNoX2ltcGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN0cmluZywKQEAgLTEwOCwxOCArMTEzLDIwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpwYXR0ZXJuKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zcmVfU1JFX1BhdHRlcm5fZnVsbG1hdGNoKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NyZV9TUkVfUGF0dGVybl9mdWxsbWF0Y2goUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0cmluZyIsICJwb3MiLCAiZW5kcG9zIiwgInBhdHRlcm4iLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCAicG9zIiwgImVuZHBvcyIsICJwYXR0ZXJuIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE9ubiRPOmZ1bGxtYXRjaCIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnN0cmluZyA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBwb3MgPSAwOwogICAgIFB5X3NzaXplX3QgZW5kcG9zID0gUFlfU1NJWkVfVF9NQVg7CiAgICAgUHlPYmplY3QgKnBhdHRlcm4gPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE9ubiRPOmZ1bGxtYXRjaCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnN0cmluZywgJnBvcywgJmVuZHBvcywgJnBhdHRlcm4pKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc3RyaW5nLCAmcG9zLCAmZW5kcG9zLCAmcGF0dGVybikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9QYXR0ZXJuX2Z1bGxtYXRjaF9pbXBsKHNlbGYsIHN0cmluZywgcG9zLCBlbmRwb3MsIHBhdHRlcm4pOwogCiBleGl0OgpAQCAtMTM2LDcgKzE0Myw3IEBACiAiUmV0dXJuIE5vbmUgaWYgbm8gcG9zaXRpb24gaW4gdGhlIHN0cmluZyBtYXRjaGVzLiIpOwogCiAjZGVmaW5lIF9TUkVfU1JFX1BBVFRFUk5fU0VBUkNIX01FVEhPRERFRiAgICBcCi0gICAgeyJzZWFyY2giLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfUGF0dGVybl9zZWFyY2gsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3JlX1NSRV9QYXR0ZXJuX3NlYXJjaF9fZG9jX199LAorICAgIHsic2VhcmNoIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1BhdHRlcm5fc2VhcmNoLCBNRVRIX0ZBU1RDQUxMLCBfc3JlX1NSRV9QYXR0ZXJuX3NlYXJjaF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NyZV9TUkVfUGF0dGVybl9zZWFyY2hfaW1wbChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc3RyaW5nLApAQCAtMTQ0LDE4ICsxNTEsMjAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnBhdHRlcm4pOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NyZV9TUkVfUGF0dGVybl9zZWFyY2goUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc3JlX1NSRV9QYXR0ZXJuX3NlYXJjaChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgInBvcyIsICJlbmRwb3MiLCAicGF0dGVybiIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InN0cmluZyIsICJwb3MiLCAiZW5kcG9zIiwgInBhdHRlcm4iLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8T25uJE86c2VhcmNoIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqc3RyaW5nID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IHBvcyA9IDA7CiAgICAgUHlfc3NpemVfdCBlbmRwb3MgPSBQWV9TU0laRV9UX01BWDsKICAgICBQeU9iamVjdCAqcGF0dGVybiA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8T25uJE86c2VhcmNoIiwgX2tleXdvcmRzLAotICAgICAgICAmc3RyaW5nLCAmcG9zLCAmZW5kcG9zLCAmcGF0dGVybikpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdHJpbmcsICZwb3MsICZlbmRwb3MsICZwYXR0ZXJuKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zcmVfU1JFX1BhdHRlcm5fc2VhcmNoX2ltcGwoc2VsZiwgc3RyaW5nLCBwb3MsIGVuZHBvcywgcGF0dGVybik7CiAKIGV4aXQ6CkBAIC0xNzAsNyArMTc5LDcgQEAKICJSZXR1cm4gYSBsaXN0IG9mIGFsbCBub24tb3ZlcmxhcHBpbmcgbWF0Y2hlcyBvZiBwYXR0ZXJuIGluIHN0cmluZy4iKTsKIAogI2RlZmluZSBfU1JFX1NSRV9QQVRURVJOX0ZJTkRBTExfTUVUSE9EREVGICAgIFwKLSAgICB7ImZpbmRhbGwiLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfUGF0dGVybl9maW5kYWxsLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NyZV9TUkVfUGF0dGVybl9maW5kYWxsX19kb2NfX30sCisgICAgeyJmaW5kYWxsIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1BhdHRlcm5fZmluZGFsbCwgTUVUSF9GQVNUQ0FMTCwgX3NyZV9TUkVfUGF0dGVybl9maW5kYWxsX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc3JlX1NSRV9QYXR0ZXJuX2ZpbmRhbGxfaW1wbChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc3RyaW5nLApAQCAtMTc4LDE4ICsxODcsMjAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzb3VyY2UpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NyZV9TUkVfUGF0dGVybl9maW5kYWxsKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NyZV9TUkVfUGF0dGVybl9maW5kYWxsKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCAicG9zIiwgImVuZHBvcyIsICJzb3VyY2UiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCAicG9zIiwgImVuZHBvcyIsICJzb3VyY2UiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8T25uJE86ZmluZGFsbCIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnN0cmluZyA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBwb3MgPSAwOwogICAgIFB5X3NzaXplX3QgZW5kcG9zID0gUFlfU1NJWkVfVF9NQVg7CiAgICAgUHlPYmplY3QgKnNvdXJjZSA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8T25uJE86ZmluZGFsbCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnN0cmluZywgJnBvcywgJmVuZHBvcywgJnNvdXJjZSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdHJpbmcsICZwb3MsICZlbmRwb3MsICZzb3VyY2UpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NyZV9TUkVfUGF0dGVybl9maW5kYWxsX2ltcGwoc2VsZiwgc3RyaW5nLCBwb3MsIGVuZHBvcywgc291cmNlKTsKIAogZXhpdDoKQEAgLTIwNSwyNCArMjE2LDI2IEBACiAiRm9yIGVhY2ggbWF0Y2gsIHRoZSBpdGVyYXRvciByZXR1cm5zIGEgbWF0Y2ggb2JqZWN0LiIpOwogCiAjZGVmaW5lIF9TUkVfU1JFX1BBVFRFUk5fRklORElURVJfTUVUSE9EREVGICAgIFwKLSAgICB7ImZpbmRpdGVyIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1BhdHRlcm5fZmluZGl0ZXIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3JlX1NSRV9QYXR0ZXJuX2ZpbmRpdGVyX19kb2NfX30sCisgICAgeyJmaW5kaXRlciIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX2ZpbmRpdGVyLCBNRVRIX0ZBU1RDQUxMLCBfc3JlX1NSRV9QYXR0ZXJuX2ZpbmRpdGVyX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc3JlX1NSRV9QYXR0ZXJuX2ZpbmRpdGVyX2ltcGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN0cmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHBvcywgUHlfc3NpemVfdCBlbmRwb3MpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NyZV9TUkVfUGF0dGVybl9maW5kaXRlcihQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zcmVfU1JFX1BhdHRlcm5fZmluZGl0ZXIoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0cmluZyIsICJwb3MiLCAiZW5kcG9zIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgInBvcyIsICJlbmRwb3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPfG5uOmZpbmRpdGVyIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqc3RyaW5nOwogICAgIFB5X3NzaXplX3QgcG9zID0gMDsKICAgICBQeV9zc2l6ZV90IGVuZHBvcyA9IFBZX1NTSVpFX1RfTUFYOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xubjpmaW5kaXRlciIsIF9rZXl3b3JkcywKLSAgICAgICAgJnN0cmluZywgJnBvcywgJmVuZHBvcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdHJpbmcsICZwb3MsICZlbmRwb3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NyZV9TUkVfUGF0dGVybl9maW5kaXRlcl9pbXBsKHNlbGYsIHN0cmluZywgcG9zLCBlbmRwb3MpOwogCiBleGl0OgpAQCAtMjM1LDI0ICsyNDgsMjYgQEAKICJcbiIpOwogCiAjZGVmaW5lIF9TUkVfU1JFX1BBVFRFUk5fU0NBTk5FUl9NRVRIT0RERUYgICAgXAotICAgIHsic2Nhbm5lciIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX3NjYW5uZXIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3JlX1NSRV9QYXR0ZXJuX3NjYW5uZXJfX2RvY19ffSwKKyAgICB7InNjYW5uZXIiLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfUGF0dGVybl9zY2FubmVyLCBNRVRIX0ZBU1RDQUxMLCBfc3JlX1NSRV9QYXR0ZXJuX3NjYW5uZXJfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zcmVfU1JFX1BhdHRlcm5fc2Nhbm5lcl9pbXBsKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHBvcywgUHlfc3NpemVfdCBlbmRwb3MpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NyZV9TUkVfUGF0dGVybl9zY2FubmVyKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NyZV9TUkVfUGF0dGVybl9zY2FubmVyKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCAicG9zIiwgImVuZHBvcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InN0cmluZyIsICJwb3MiLCAiZW5kcG9zIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3xubjpzY2FubmVyIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqc3RyaW5nOwogICAgIFB5X3NzaXplX3QgcG9zID0gMDsKICAgICBQeV9zc2l6ZV90IGVuZHBvcyA9IFBZX1NTSVpFX1RfTUFYOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xubjpzY2FubmVyIiwgX2tleXdvcmRzLAotICAgICAgICAmc3RyaW5nLCAmcG9zLCAmZW5kcG9zKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnN0cmluZywgJnBvcywgJmVuZHBvcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9QYXR0ZXJuX3NjYW5uZXJfaW1wbChzZWxmLCBzdHJpbmcsIHBvcywgZW5kcG9zKTsKIAogZXhpdDoKQEAgLTI2NiwyNCArMjgxLDI2IEBACiAiU3BsaXQgc3RyaW5nIGJ5IHRoZSBvY2N1cnJlbmNlcyBvZiBwYXR0ZXJuLiIpOwogCiAjZGVmaW5lIF9TUkVfU1JFX1BBVFRFUk5fU1BMSVRfTUVUSE9EREVGICAgIFwKLSAgICB7InNwbGl0IiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1BhdHRlcm5fc3BsaXQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3JlX1NSRV9QYXR0ZXJuX3NwbGl0X19kb2NfX30sCisgICAgeyJzcGxpdCIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX3NwbGl0LCBNRVRIX0ZBU1RDQUxMLCBfc3JlX1NSRV9QYXR0ZXJuX3NwbGl0X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc3JlX1NSRV9QYXR0ZXJuX3NwbGl0X2ltcGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN0cmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heHNwbGl0LCBQeU9iamVjdCAqc291cmNlKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zcmVfU1JFX1BhdHRlcm5fc3BsaXQoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc3JlX1NSRV9QYXR0ZXJuX3NwbGl0KFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCAibWF4c3BsaXQiLCAic291cmNlIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgIm1heHNwbGl0IiwgInNvdXJjZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPbiRPOnNwbGl0IiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqc3RyaW5nID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IG1heHNwbGl0ID0gMDsKICAgICBQeU9iamVjdCAqc291cmNlID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPbiRPOnNwbGl0IiwgX2tleXdvcmRzLAotICAgICAgICAmc3RyaW5nLCAmbWF4c3BsaXQsICZzb3VyY2UpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc3RyaW5nLCAmbWF4c3BsaXQsICZzb3VyY2UpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NyZV9TUkVfUGF0dGVybl9zcGxpdF9pbXBsKHNlbGYsIHN0cmluZywgbWF4c3BsaXQsIHNvdXJjZSk7CiAKIGV4aXQ6CkBAIC0yOTcsMjQgKzMxNCwyNiBAQAogIlJldHVybiB0aGUgc3RyaW5nIG9idGFpbmVkIGJ5IHJlcGxhY2luZyB0aGUgbGVmdG1vc3Qgbm9uLW92ZXJsYXBwaW5nIG9jY3VycmVuY2VzIG9mIHBhdHRlcm4gaW4gc3RyaW5nIGJ5IHRoZSByZXBsYWNlbWVudCByZXBsLiIpOwogCiAjZGVmaW5lIF9TUkVfU1JFX1BBVFRFUk5fU1VCX01FVEhPRERFRiAgICBcCi0gICAgeyJzdWIiLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfUGF0dGVybl9zdWIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3JlX1NSRV9QYXR0ZXJuX3N1Yl9fZG9jX199LAorICAgIHsic3ViIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1BhdHRlcm5fc3ViLCBNRVRIX0ZBU1RDQUxMLCBfc3JlX1NSRV9QYXR0ZXJuX3N1Yl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NyZV9TUkVfUGF0dGVybl9zdWJfaW1wbChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqcmVwbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN0cmluZywgUHlfc3NpemVfdCBjb3VudCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc3JlX1NSRV9QYXR0ZXJuX3N1YihQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zcmVfU1JFX1BhdHRlcm5fc3ViKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJyZXBsIiwgInN0cmluZyIsICJjb3VudCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InJlcGwiLCAic3RyaW5nIiwgImNvdW50IiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT098bjpzdWIiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpyZXBsOwogICAgIFB5T2JqZWN0ICpzdHJpbmc7CiAgICAgUHlfc3NpemVfdCBjb3VudCA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPT3xuOnN1YiIsIF9rZXl3b3JkcywKLSAgICAgICAgJnJlcGwsICZzdHJpbmcsICZjb3VudCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZyZXBsLCAmc3RyaW5nLCAmY291bnQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NyZV9TUkVfUGF0dGVybl9zdWJfaW1wbChzZWxmLCByZXBsLCBzdHJpbmcsIGNvdW50KTsKIAogZXhpdDoKQEAgLTMyOCwyNCArMzQ3LDI2IEBACiAiUmV0dXJuIHRoZSB0dXBsZSAobmV3X3N0cmluZywgbnVtYmVyX29mX3N1YnNfbWFkZSkgZm91bmQgYnkgcmVwbGFjaW5nIHRoZSBsZWZ0bW9zdCBub24tb3ZlcmxhcHBpbmcgb2NjdXJyZW5jZXMgb2YgcGF0dGVybiB3aXRoIHRoZSByZXBsYWNlbWVudCByZXBsLiIpOwogCiAjZGVmaW5lIF9TUkVfU1JFX1BBVFRFUk5fU1VCTl9NRVRIT0RERUYgICAgXAotICAgIHsic3VibiIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX3N1Ym4sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3JlX1NSRV9QYXR0ZXJuX3N1Ym5fX2RvY19ffSwKKyAgICB7InN1Ym4iLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfUGF0dGVybl9zdWJuLCBNRVRIX0ZBU1RDQUxMLCBfc3JlX1NSRV9QYXR0ZXJuX3N1Ym5fX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zcmVfU1JFX1BhdHRlcm5fc3Vibl9pbXBsKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpyZXBsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN0cmluZywgUHlfc3NpemVfdCBjb3VudCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc3JlX1NSRV9QYXR0ZXJuX3N1Ym4oUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc3JlX1NSRV9QYXR0ZXJuX3N1Ym4oUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InJlcGwiLCAic3RyaW5nIiwgImNvdW50IiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicmVwbCIsICJzdHJpbmciLCAiY291bnQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPT3xuOnN1Ym4iLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpyZXBsOwogICAgIFB5T2JqZWN0ICpzdHJpbmc7CiAgICAgUHlfc3NpemVfdCBjb3VudCA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPT3xuOnN1Ym4iLCBfa2V5d29yZHMsCi0gICAgICAgICZyZXBsLCAmc3RyaW5nLCAmY291bnQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmcmVwbCwgJnN0cmluZywgJmNvdW50KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zcmVfU1JFX1BhdHRlcm5fc3Vibl9pbXBsKHNlbGYsIHJlcGwsIHN0cmluZywgY291bnQpOwogCiBleGl0OgpAQCAtMzc1LDIxICszOTYsMjMgQEAKICJcbiIpOwogCiAjZGVmaW5lIF9TUkVfU1JFX1BBVFRFUk5fX19ERUVQQ09QWV9fX01FVEhPRERFRiAgICBcCi0gICAgeyJfX2RlZXBjb3B5X18iLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfUGF0dGVybl9fX2RlZXBjb3B5X18sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3JlX1NSRV9QYXR0ZXJuX19fZGVlcGNvcHlfX19fZG9jX199LAorICAgIHsiX19kZWVwY29weV9fIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1BhdHRlcm5fX19kZWVwY29weV9fLCBNRVRIX0ZBU1RDQUxMLCBfc3JlX1NSRV9QYXR0ZXJuX19fZGVlcGNvcHlfX19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NyZV9TUkVfUGF0dGVybl9fX2RlZXBjb3B5X19faW1wbChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbWVtbyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc3JlX1NSRV9QYXR0ZXJuX19fZGVlcGNvcHlfXyhQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zcmVfU1JFX1BhdHRlcm5fX19kZWVwY29weV9fKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJtZW1vIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsibWVtbyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik86X19kZWVwY29weV9fIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqbWVtbzsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk86X19kZWVwY29weV9fIiwgX2tleXdvcmRzLAotICAgICAgICAmbWVtbykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZtZW1vKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zcmVfU1JFX1BhdHRlcm5fX19kZWVwY29weV9fX2ltcGwoc2VsZiwgbWVtbyk7CiAKIGV4aXQ6CkBAIC00MDMsNyArNDI2LDcgQEAKICJcbiIpOwogCiAjZGVmaW5lIF9TUkVfQ09NUElMRV9NRVRIT0RERUYgICAgXAotICAgIHsiY29tcGlsZSIsIChQeUNGdW5jdGlvbilfc3JlX2NvbXBpbGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3JlX2NvbXBpbGVfX2RvY19ffSwKKyAgICB7ImNvbXBpbGUiLCAoUHlDRnVuY3Rpb24pX3NyZV9jb21waWxlLCBNRVRIX0ZBU1RDQUxMLCBfc3JlX2NvbXBpbGVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zcmVfY29tcGlsZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpwYXR0ZXJuLCBpbnQgZmxhZ3MsCkBAIC00MTEsMTAgKzQzNCwxMSBAQAogICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmluZGV4Z3JvdXApOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NyZV9jb21waWxlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NyZV9jb21waWxlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXR0ZXJuIiwgImZsYWdzIiwgImNvZGUiLCAiZ3JvdXBzIiwgImdyb3VwaW5kZXgiLCAiaW5kZXhncm91cCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdHRlcm4iLCAiZmxhZ3MiLCAiY29kZSIsICJncm91cHMiLCAiZ3JvdXBpbmRleCIsICJpbmRleGdyb3VwIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT2lPIW5PTzpjb21waWxlIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqcGF0dGVybjsKICAgICBpbnQgZmxhZ3M7CiAgICAgUHlPYmplY3QgKmNvZGU7CkBAIC00MjIsOSArNDQ2LDEwIEBACiAgICAgUHlPYmplY3QgKmdyb3VwaW5kZXg7CiAgICAgUHlPYmplY3QgKmluZGV4Z3JvdXA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPaU8hbk9POmNvbXBpbGUiLCBfa2V5d29yZHMsCi0gICAgICAgICZwYXR0ZXJuLCAmZmxhZ3MsICZQeUxpc3RfVHlwZSwgJmNvZGUsICZncm91cHMsICZncm91cGluZGV4LCAmaW5kZXhncm91cCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZwYXR0ZXJuLCAmZmxhZ3MsICZQeUxpc3RfVHlwZSwgJmNvZGUsICZncm91cHMsICZncm91cGluZGV4LCAmaW5kZXhncm91cCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3JlX2NvbXBpbGVfaW1wbChtb2R1bGUsIHBhdHRlcm4sIGZsYWdzLCBjb2RlLCBncm91cHMsIGdyb3VwaW5kZXgsIGluZGV4Z3JvdXApOwogCiBleGl0OgpAQCAtNDM4LDIxICs0NjMsMjMgQEAKICJSZXR1cm4gdGhlIHN0cmluZyBvYnRhaW5lZCBieSBkb2luZyBiYWNrc2xhc2ggc3Vic3RpdHV0aW9uIG9uIHRoZSBzdHJpbmcgdGVtcGxhdGUsIGFzIGRvbmUgYnkgdGhlIHN1YigpIG1ldGhvZC4iKTsKIAogI2RlZmluZSBfU1JFX1NSRV9NQVRDSF9FWFBBTkRfTUVUSE9EREVGICAgIFwKLSAgICB7ImV4cGFuZCIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9NYXRjaF9leHBhbmQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3JlX1NSRV9NYXRjaF9leHBhbmRfX2RvY19ffSwKKyAgICB7ImV4cGFuZCIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9NYXRjaF9leHBhbmQsIE1FVEhfRkFTVENBTEwsIF9zcmVfU1JFX01hdGNoX2V4cGFuZF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NyZV9TUkVfTWF0Y2hfZXhwYW5kX2ltcGwoTWF0Y2hPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp0ZW1wbGF0ZSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc3JlX1NSRV9NYXRjaF9leHBhbmQoTWF0Y2hPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NyZV9TUkVfTWF0Y2hfZXhwYW5kKE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsidGVtcGxhdGUiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJ0ZW1wbGF0ZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik86ZXhwYW5kIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqdGVtcGxhdGU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPOmV4cGFuZCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnRlbXBsYXRlKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnRlbXBsYXRlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zcmVfU1JFX01hdGNoX2V4cGFuZF9pbXBsKHNlbGYsIHRlbXBsYXRlKTsKIAogZXhpdDoKQEAgLTQ2OSwyMSArNDk2LDIzIEBACiAiICAgIElzIHVzZWQgZm9yIGdyb3VwcyB0aGF0IGRpZCBub3QgcGFydGljaXBhdGUgaW4gdGhlIG1hdGNoLiIpOwogCiAjZGVmaW5lIF9TUkVfU1JFX01BVENIX0dST1VQU19NRVRIT0RERUYgICAgXAotICAgIHsiZ3JvdXBzIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX01hdGNoX2dyb3VwcywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX01hdGNoX2dyb3Vwc19fZG9jX199LAorICAgIHsiZ3JvdXBzIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX01hdGNoX2dyb3VwcywgTUVUSF9GQVNUQ0FMTCwgX3NyZV9TUkVfTWF0Y2hfZ3JvdXBzX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc3JlX1NSRV9NYXRjaF9ncm91cHNfaW1wbChNYXRjaE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NyZV9TUkVfTWF0Y2hfZ3JvdXBzKE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zcmVfU1JFX01hdGNoX2dyb3VwcyhNYXRjaE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImRlZmF1bHQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJkZWZhdWx0IiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE86Z3JvdXBzIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSA9IFB5X05vbmU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8Tzpncm91cHMiLCBfa2V5d29yZHMsCi0gICAgICAgICZkZWZhdWx0X3ZhbHVlKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmRlZmF1bHRfdmFsdWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NyZV9TUkVfTWF0Y2hfZ3JvdXBzX2ltcGwoc2VsZiwgZGVmYXVsdF92YWx1ZSk7CiAKIGV4aXQ6CkBAIC01MDAsMjEgKzUyOSwyMyBAQAogIiAgICBJcyB1c2VkIGZvciBncm91cHMgdGhhdCBkaWQgbm90IHBhcnRpY2lwYXRlIGluIHRoZSBtYXRjaC4iKTsKIAogI2RlZmluZSBfU1JFX1NSRV9NQVRDSF9HUk9VUERJQ1RfTUVUSE9EREVGICAgIFwKLSAgICB7Imdyb3VwZGljdCIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9NYXRjaF9ncm91cGRpY3QsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3JlX1NSRV9NYXRjaF9ncm91cGRpY3RfX2RvY19ffSwKKyAgICB7Imdyb3VwZGljdCIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9NYXRjaF9ncm91cGRpY3QsIE1FVEhfRkFTVENBTEwsIF9zcmVfU1JFX01hdGNoX2dyb3VwZGljdF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NyZV9TUkVfTWF0Y2hfZ3JvdXBkaWN0X2ltcGwoTWF0Y2hPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zcmVfU1JFX01hdGNoX2dyb3VwZGljdChNYXRjaE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc3JlX1NSRV9NYXRjaF9ncm91cGRpY3QoTWF0Y2hPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJkZWZhdWx0IiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZGVmYXVsdCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPOmdyb3VwZGljdCIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUgPSBQeV9Ob25lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE86Z3JvdXBkaWN0IiwgX2tleXdvcmRzLAotICAgICAgICAmZGVmYXVsdF92YWx1ZSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZkZWZhdWx0X3ZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zcmVfU1JFX01hdGNoX2dyb3VwZGljdF9pbXBsKHNlbGYsIGRlZmF1bHRfdmFsdWUpOwogCiBleGl0OgpAQCAtNTQyLDExICs1NzMsMTMgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInN0YXJ0IiwKICAgICAgICAgMCwgMSwKLSAgICAgICAgJmdyb3VwKSkKKyAgICAgICAgJmdyb3VwKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9NYXRjaF9zdGFydF9pbXBsKHNlbGYsIGdyb3VwKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Tc2l6ZV90KF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNTc0LDExICs2MDcsMTMgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImVuZCIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZncm91cCkpCisgICAgICAgICZncm91cCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gX3NyZV9TUkVfTWF0Y2hfZW5kX2ltcGwoc2VsZiwgZ3JvdXApOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbVNzaXplX3QoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC02MDUsOCArNjQwLDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInNwYW4iLAogICAgICAgICAwLCAxLAotICAgICAgICAmZ3JvdXApKQorICAgICAgICAmZ3JvdXApKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NyZV9TUkVfTWF0Y2hfc3Bhbl9pbXBsKHNlbGYsIGdyb3VwKTsKIAogZXhpdDoKQEAgLTYzNiwyMSArNjcyLDIzIEBACiAiXG4iKTsKIAogI2RlZmluZSBfU1JFX1NSRV9NQVRDSF9fX0RFRVBDT1BZX19fTUVUSE9EREVGICAgIFwKLSAgICB7Il9fZGVlcGNvcHlfXyIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9NYXRjaF9fX2RlZXBjb3B5X18sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3JlX1NSRV9NYXRjaF9fX2RlZXBjb3B5X19fX2RvY19ffSwKKyAgICB7Il9fZGVlcGNvcHlfXyIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9NYXRjaF9fX2RlZXBjb3B5X18sIE1FVEhfRkFTVENBTEwsIF9zcmVfU1JFX01hdGNoX19fZGVlcGNvcHlfX19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NyZV9TUkVfTWF0Y2hfX19kZWVwY29weV9fX2ltcGwoTWF0Y2hPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICptZW1vKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zcmVfU1JFX01hdGNoX19fZGVlcGNvcHlfXyhNYXRjaE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc3JlX1NSRV9NYXRjaF9fX2RlZXBjb3B5X18oTWF0Y2hPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJtZW1vIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsibWVtbyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik86X19kZWVwY29weV9fIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqbWVtbzsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk86X19kZWVwY29weV9fIiwgX2tleXdvcmRzLAotICAgICAgICAmbWVtbykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZtZW1vKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zcmVfU1JFX01hdGNoX19fZGVlcGNvcHlfX19pbXBsKHNlbGYsIG1lbW8pOwogCiBleGl0OgpAQCAtNjkwLDQgKzcyOCw0IEBACiB7CiAgICAgcmV0dXJuIF9zcmVfU1JFX1NjYW5uZXJfc2VhcmNoX2ltcGwoc2VsZik7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTRjZTllNWI3NDhjZTUzMiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTRhMjQ2YmNhMTk2M2JjOSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fc3NsLmMuaCBiL01vZHVsZXMvY2xpbmljL19zc2wuYy5oCmluZGV4IDg1MmUzNjUuLjI5ZjU4MzggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL19zc2wuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL19zc2wuYy5oCkBAIC0zNiw4ICszNiw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnBhdGg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOl90ZXN0X2RlY29kZV9jZXJ0IiwgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmcGF0aCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpfdGVzdF9kZWNvZGVfY2VydCIsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJnBhdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9fdGVzdF9kZWNvZGVfY2VydF9pbXBsKG1vZHVsZSwgcGF0aCk7CiAKIGV4aXQ6CkBAIC03MSw4ICs3Miw5IEBACiAgICAgaW50IGJpbmFyeV9tb2RlID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifHA6cGVlcl9jZXJ0aWZpY2F0ZSIsCi0gICAgICAgICZiaW5hcnlfbW9kZSkpCisgICAgICAgICZiaW5hcnlfbW9kZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3NsX19TU0xTb2NrZXRfcGVlcl9jZXJ0aWZpY2F0ZV9pbXBsKHNlbGYsIGJpbmFyeV9tb2RlKTsKIAogZXhpdDoKQEAgLTIwOSwxNCArMjExLDE2IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGIgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOndyaXRlIiwgJmIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6d3JpdGUiLCAmYikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3NsX19TU0xTb2NrZXRfd3JpdGVfaW1wbChzZWxmLCAmYik7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgYiAqLwotICAgIGlmIChiLm9iaikKKyAgICBpZiAoYi5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZiKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMjYwLDEyICsyNjQsMTQgQEAKIAogICAgIHN3aXRjaCAoUHlUdXBsZV9HRVRfU0laRShhcmdzKSkgewogICAgICAgICBjYXNlIDE6Ci0gICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6cmVhZCIsICZsZW4pKQorICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOnJlYWQiLCAmbGVuKSkgewogICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIml3KjpyZWFkIiwgJmxlbiwgJmJ1ZmZlcikpCisgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIml3KjpyZWFkIiwgJmxlbiwgJmJ1ZmZlcikpIHsKICAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBncm91cF9yaWdodF8xID0gMTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgpAQCAtMjc2LDggKzI4Miw5IEBACiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgYnVmZmVyICovCi0gICAgaWYgKGJ1ZmZlci5vYmopCisgICAgaWYgKGJ1ZmZlci5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWZmZXIpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0zMzIsMTEgKzMzOSwxMyBAQAogICAgIGludCBwcm90b192ZXJzaW9uOwogCiAgICAgaWYgKCh0eXBlID09ICZQeVNTTENvbnRleHRfVHlwZSkgJiYKLSAgICAgICAgIV9QeUFyZ19Ob0tleXdvcmRzKCJfU1NMQ29udGV4dCIsIGt3YXJncykpCisgICAgICAgICFfUHlBcmdfTm9LZXl3b3JkcygiX1NTTENvbnRleHQiLCBrd2FyZ3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOl9TU0xDb250ZXh0IiwKLSAgICAgICAgJnByb3RvX3ZlcnNpb24pKQorICAgICAgICAmcHJvdG9fdmVyc2lvbikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3NsX19TU0xDb250ZXh0X2ltcGwodHlwZSwgcHJvdG9fdmVyc2lvbik7CiAKIGV4aXQ6CkBAIC0zNjAsMTQgKzM2OSwzNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKmNpcGhlcmxpc3Q7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6c2V0X2NpcGhlcnMiLCAmY2lwaGVybGlzdCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOnNldF9jaXBoZXJzIiwgJmNpcGhlcmxpc3QpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9fU1NMQ29udGV4dF9zZXRfY2lwaGVyc19pbXBsKHNlbGYsIGNpcGhlcmxpc3QpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKKyNpZiAoT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+PSAweDEwMDAyMDAwVUwpCisKK1B5RG9jX1NUUlZBUihfc3NsX19TU0xDb250ZXh0X2dldF9jaXBoZXJzX19kb2NfXywKKyJnZXRfY2lwaGVycygkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX1NTTF9fU1NMQ09OVEVYVF9HRVRfQ0lQSEVSU19NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0X2NpcGhlcnMiLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMQ29udGV4dF9nZXRfY2lwaGVycywgTUVUSF9OT0FSR1MsIF9zc2xfX1NTTENvbnRleHRfZ2V0X2NpcGhlcnNfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTENvbnRleHRfZ2V0X2NpcGhlcnNfaW1wbChQeVNTTENvbnRleHQgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMQ29udGV4dF9nZXRfY2lwaGVycyhQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9zc2xfX1NTTENvbnRleHRfZ2V0X2NpcGhlcnNfaW1wbChzZWxmKTsKK30KKworI2VuZGlmIC8qIChPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID49IDB4MTAwMDIwMDBVTCkgKi8KKwogUHlEb2NfU1RSVkFSKF9zc2xfX1NTTENvbnRleHRfX3NldF9ucG5fcHJvdG9jb2xzX19kb2NfXywKICJfc2V0X25wbl9wcm90b2NvbHMoJHNlbGYsIHByb3RvcywgLylcbiIKICItLVxuIgpAQCAtMzg2LDE0ICs0MTcsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgcHJvdG9zID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjpfc2V0X25wbl9wcm90b2NvbHMiLCAmcHJvdG9zKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOl9zZXRfbnBuX3Byb3RvY29scyIsICZwcm90b3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9fU1NMQ29udGV4dF9fc2V0X25wbl9wcm90b2NvbHNfaW1wbChzZWxmLCAmcHJvdG9zKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBwcm90b3MgKi8KLSAgICBpZiAocHJvdG9zLm9iaikKKyAgICBpZiAocHJvdG9zLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnByb3Rvcyk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTQxNiwxNCArNDQ5LDE2IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIHByb3RvcyA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6X3NldF9hbHBuX3Byb3RvY29scyIsICZwcm90b3MpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6X3NldF9hbHBuX3Byb3RvY29scyIsICZwcm90b3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9fU1NMQ29udGV4dF9fc2V0X2FscG5fcHJvdG9jb2xzX2ltcGwoc2VsZiwgJnByb3Rvcyk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgcHJvdG9zICovCi0gICAgaWYgKHByb3Rvcy5vYmopCisgICAgaWYgKHByb3Rvcy5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwcm90b3MpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC00MzQsMjQgKzQ2OSwyNiBAQAogIlxuIik7CiAKICNkZWZpbmUgX1NTTF9fU1NMQ09OVEVYVF9MT0FEX0NFUlRfQ0hBSU5fTUVUSE9EREVGICAgIFwKLSAgICB7ImxvYWRfY2VydF9jaGFpbiIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xDb250ZXh0X2xvYWRfY2VydF9jaGFpbiwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zc2xfX1NTTENvbnRleHRfbG9hZF9jZXJ0X2NoYWluX19kb2NfX30sCisgICAgeyJsb2FkX2NlcnRfY2hhaW4iLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMQ29udGV4dF9sb2FkX2NlcnRfY2hhaW4sIE1FVEhfRkFTVENBTEwsIF9zc2xfX1NTTENvbnRleHRfbG9hZF9jZXJ0X2NoYWluX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc3NsX19TU0xDb250ZXh0X2xvYWRfY2VydF9jaGFpbl9pbXBsKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKmNlcnRmaWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqa2V5ZmlsZSwgUHlPYmplY3QgKnBhc3N3b3JkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zc2xfX1NTTENvbnRleHRfbG9hZF9jZXJ0X2NoYWluKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc3NsX19TU0xDb250ZXh0X2xvYWRfY2VydF9jaGFpbihQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJjZXJ0ZmlsZSIsICJrZXlmaWxlIiwgInBhc3N3b3JkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiY2VydGZpbGUiLCAia2V5ZmlsZSIsICJwYXNzd29yZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98T086bG9hZF9jZXJ0X2NoYWluIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqY2VydGZpbGU7CiAgICAgUHlPYmplY3QgKmtleWZpbGUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpwYXNzd29yZCA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfE9POmxvYWRfY2VydF9jaGFpbiIsIF9rZXl3b3JkcywKLSAgICAgICAgJmNlcnRmaWxlLCAma2V5ZmlsZSwgJnBhc3N3b3JkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmNlcnRmaWxlLCAma2V5ZmlsZSwgJnBhc3N3b3JkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfX1NTTENvbnRleHRfbG9hZF9jZXJ0X2NoYWluX2ltcGwoc2VsZiwgY2VydGZpbGUsIGtleWZpbGUsIHBhc3N3b3JkKTsKIAogZXhpdDoKQEAgLTQ2NCw3ICs1MDEsNyBAQAogIlxuIik7CiAKICNkZWZpbmUgX1NTTF9fU1NMQ09OVEVYVF9MT0FEX1ZFUklGWV9MT0NBVElPTlNfTUVUSE9EREVGICAgIFwKLSAgICB7ImxvYWRfdmVyaWZ5X2xvY2F0aW9ucyIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xDb250ZXh0X2xvYWRfdmVyaWZ5X2xvY2F0aW9ucywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zc2xfX1NTTENvbnRleHRfbG9hZF92ZXJpZnlfbG9jYXRpb25zX19kb2NfX30sCisgICAgeyJsb2FkX3ZlcmlmeV9sb2NhdGlvbnMiLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMQ29udGV4dF9sb2FkX3ZlcmlmeV9sb2NhdGlvbnMsIE1FVEhfRkFTVENBTEwsIF9zc2xfX1NTTENvbnRleHRfbG9hZF92ZXJpZnlfbG9jYXRpb25zX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc3NsX19TU0xDb250ZXh0X2xvYWRfdmVyaWZ5X2xvY2F0aW9uc19pbXBsKFB5U1NMQ29udGV4dCAqc2VsZiwKQEAgLTQ3MywxNyArNTEwLDE5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjYWRhdGEpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NzbF9fU1NMQ29udGV4dF9sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zc2xfX1NTTENvbnRleHRfbG9hZF92ZXJpZnlfbG9jYXRpb25zKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImNhZmlsZSIsICJjYXBhdGgiLCAiY2FkYXRhIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiY2FmaWxlIiwgImNhcGF0aCIsICJjYWRhdGEiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8T09POmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKmNhZmlsZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmNhcGF0aCA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmNhZGF0YSA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8T09POmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyIsIF9rZXl3b3JkcywKLSAgICAgICAgJmNhZmlsZSwgJmNhcGF0aCwgJmNhZGF0YSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZjYWZpbGUsICZjYXBhdGgsICZjYWRhdGEpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9fU1NMQ29udGV4dF9sb2FkX3ZlcmlmeV9sb2NhdGlvbnNfaW1wbChzZWxmLCBjYWZpbGUsIGNhcGF0aCwgY2FkYXRhKTsKIAogZXhpdDoKQEAgLTUwNCwyNCArNTQzLDI2IEBACiAiXG4iKTsKIAogI2RlZmluZSBfU1NMX19TU0xDT05URVhUX19XUkFQX1NPQ0tFVF9NRVRIT0RERUYgICAgXAotICAgIHsiX3dyYXBfc29ja2V0IiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTENvbnRleHRfX3dyYXBfc29ja2V0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NzbF9fU1NMQ29udGV4dF9fd3JhcF9zb2NrZXRfX2RvY19ffSwKKyAgICB7Il93cmFwX3NvY2tldCIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xDb250ZXh0X193cmFwX3NvY2tldCwgTUVUSF9GQVNUQ0FMTCwgX3NzbF9fU1NMQ29udGV4dF9fd3JhcF9zb2NrZXRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zc2xfX1NTTENvbnRleHRfX3dyYXBfc29ja2V0X2ltcGwoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqc29jaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNlcnZlcl9zaWRlLCBQeU9iamVjdCAqaG9zdG5hbWVfb2JqKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zc2xfX1NTTENvbnRleHRfX3dyYXBfc29ja2V0KFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc3NsX19TU0xDb250ZXh0X193cmFwX3NvY2tldChQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzb2NrIiwgInNlcnZlcl9zaWRlIiwgInNlcnZlcl9ob3N0bmFtZSIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InNvY2siLCAic2VydmVyX3NpZGUiLCAic2VydmVyX2hvc3RuYW1lIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyFpfE86X3dyYXBfc29ja2V0IiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqc29jazsKICAgICBpbnQgc2VydmVyX3NpZGU7CiAgICAgUHlPYmplY3QgKmhvc3RuYW1lX29iaiA9IFB5X05vbmU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPIWl8Tzpfd3JhcF9zb2NrZXQiLCBfa2V5d29yZHMsCi0gICAgICAgIFB5U29ja2V0TW9kdWxlLlNvY2tfVHlwZSwgJnNvY2ssICZzZXJ2ZXJfc2lkZSwgJmhvc3RuYW1lX29iaikpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIFB5U29ja2V0TW9kdWxlLlNvY2tfVHlwZSwgJnNvY2ssICZzZXJ2ZXJfc2lkZSwgJmhvc3RuYW1lX29iaikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3NsX19TU0xDb250ZXh0X193cmFwX3NvY2tldF9pbXBsKHNlbGYsIHNvY2ssIHNlcnZlcl9zaWRlLCBob3N0bmFtZV9vYmopOwogCiBleGl0OgpAQCAtNTM1LDcgKzU3Niw3IEBACiAiXG4iKTsKIAogI2RlZmluZSBfU1NMX19TU0xDT05URVhUX19XUkFQX0JJT19NRVRIT0RERUYgICAgXAotICAgIHsiX3dyYXBfYmlvIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTENvbnRleHRfX3dyYXBfYmlvLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NzbF9fU1NMQ29udGV4dF9fd3JhcF9iaW9fX2RvY19ffSwKKyAgICB7Il93cmFwX2JpbyIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xDb250ZXh0X193cmFwX2JpbywgTUVUSF9GQVNUQ0FMTCwgX3NzbF9fU1NMQ29udGV4dF9fd3JhcF9iaW9fX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zc2xfX1NTTENvbnRleHRfX3dyYXBfYmlvX2ltcGwoUHlTU0xDb250ZXh0ICpzZWxmLCBQeVNTTE1lbW9yeUJJTyAqaW5jb21pbmcsCkBAIC01NDMsMTggKzU4NCwyMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqaG9zdG5hbWVfb2JqKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zc2xfX1NTTENvbnRleHRfX3dyYXBfYmlvKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc3NsX19TU0xDb250ZXh0X193cmFwX2JpbyhQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJpbmNvbWluZyIsICJvdXRnb2luZyIsICJzZXJ2ZXJfc2lkZSIsICJzZXJ2ZXJfaG9zdG5hbWUiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJpbmNvbWluZyIsICJvdXRnb2luZyIsICJzZXJ2ZXJfc2lkZSIsICJzZXJ2ZXJfaG9zdG5hbWUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPIU8haXxPOl93cmFwX2JpbyIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlTU0xNZW1vcnlCSU8gKmluY29taW5nOwogICAgIFB5U1NMTWVtb3J5QklPICpvdXRnb2luZzsKICAgICBpbnQgc2VydmVyX3NpZGU7CiAgICAgUHlPYmplY3QgKmhvc3RuYW1lX29iaiA9IFB5X05vbmU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPIU8haXxPOl93cmFwX2JpbyIsIF9rZXl3b3JkcywKLSAgICAgICAgJlB5U1NMTWVtb3J5QklPX1R5cGUsICZpbmNvbWluZywgJlB5U1NMTWVtb3J5QklPX1R5cGUsICZvdXRnb2luZywgJnNlcnZlcl9zaWRlLCAmaG9zdG5hbWVfb2JqKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJlB5U1NMTWVtb3J5QklPX1R5cGUsICZpbmNvbWluZywgJlB5U1NMTWVtb3J5QklPX1R5cGUsICZvdXRnb2luZywgJnNlcnZlcl9zaWRlLCAmaG9zdG5hbWVfb2JqKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfX1NTTENvbnRleHRfX3dyYXBfYmlvX2ltcGwoc2VsZiwgaW5jb21pbmcsIG91dGdvaW5nLCBzZXJ2ZXJfc2lkZSwgaG9zdG5hbWVfb2JqKTsKIAogZXhpdDoKQEAgLTY1NywyMSArNzAwLDIzIEBACiAiYmVlbiB1c2VkIGF0IGxlYXN0IG9uY2UuIik7CiAKICNkZWZpbmUgX1NTTF9fU1NMQ09OVEVYVF9HRVRfQ0FfQ0VSVFNfTUVUSE9EREVGICAgIFwKLSAgICB7ImdldF9jYV9jZXJ0cyIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xDb250ZXh0X2dldF9jYV9jZXJ0cywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zc2xfX1NTTENvbnRleHRfZ2V0X2NhX2NlcnRzX19kb2NfX30sCisgICAgeyJnZXRfY2FfY2VydHMiLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMQ29udGV4dF9nZXRfY2FfY2VydHMsIE1FVEhfRkFTVENBTEwsIF9zc2xfX1NTTENvbnRleHRfZ2V0X2NhX2NlcnRzX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc3NsX19TU0xDb250ZXh0X2dldF9jYV9jZXJ0c19pbXBsKFB5U1NMQ29udGV4dCAqc2VsZiwgaW50IGJpbmFyeV9mb3JtKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zc2xfX1NTTENvbnRleHRfZ2V0X2NhX2NlcnRzKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc3NsX19TU0xDb250ZXh0X2dldF9jYV9jZXJ0cyhQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJiaW5hcnlfZm9ybSIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImJpbmFyeV9mb3JtIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifHA6Z2V0X2NhX2NlcnRzIiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgYmluYXJ5X2Zvcm0gPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifHA6Z2V0X2NhX2NlcnRzIiwgX2tleXdvcmRzLAotICAgICAgICAmYmluYXJ5X2Zvcm0pKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmYmluYXJ5X2Zvcm0pKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9fU1NMQ29udGV4dF9nZXRfY2FfY2VydHNfaW1wbChzZWxmLCBiaW5hcnlfZm9ybSk7CiAKIGV4aXQ6CkBAIC02ODcsMTEgKzczMiwxMyBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogCiAgICAgaWYgKCh0eXBlID09ICZQeVNTTE1lbW9yeUJJT19UeXBlKSAmJgotICAgICAgICAhX1B5QXJnX05vUG9zaXRpb25hbCgiTWVtb3J5QklPIiwgYXJncykpCisgICAgICAgICFfUHlBcmdfTm9Qb3NpdGlvbmFsKCJNZW1vcnlCSU8iLCBhcmdzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIGlmICgodHlwZSA9PSAmUHlTU0xNZW1vcnlCSU9fVHlwZSkgJiYKLSAgICAgICAgIV9QeUFyZ19Ob0tleXdvcmRzKCJNZW1vcnlCSU8iLCBrd2FyZ3MpKQorICAgICAgICAhX1B5QXJnX05vS2V5d29yZHMoIk1lbW9yeUJJTyIsIGt3YXJncykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3NsX01lbW9yeUJJT19pbXBsKHR5cGUpOwogCiBleGl0OgpAQCAtNzIyLDggKzc2OSw5IEBACiAgICAgaW50IGxlbiA9IC0xOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpyZWFkIiwKLSAgICAgICAgJmxlbikpCisgICAgICAgICZsZW4pKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9NZW1vcnlCSU9fcmVhZF9pbXBsKHNlbGYsIGxlbik7CiAKIGV4aXQ6CkBAIC03NTAsMTQgKzc5OCwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBiID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjp3cml0ZSIsICZiKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOndyaXRlIiwgJmIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9NZW1vcnlCSU9fd3JpdGVfaW1wbChzZWxmLCAmYik7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgYiAqLwotICAgIGlmIChiLm9iaikKKyAgICBpZiAoYi5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZiKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtODA1LDE0ICs4NTUsMTYgQEAKICAgICBkb3VibGUgZW50cm9weTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAicypkOlJBTkRfYWRkIiwKLSAgICAgICAgJnZpZXcsICZlbnRyb3B5KSkKKyAgICAgICAgJnZpZXcsICZlbnRyb3B5KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfUkFORF9hZGRfaW1wbChtb2R1bGUsICZ2aWV3LCBlbnRyb3B5KTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciB2aWV3ICovCi0gICAgaWYgKHZpZXcub2JqKQorICAgIGlmICh2aWV3Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXcpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC04MzUsOCArODg3LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgbjsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpSQU5EX2J5dGVzIiwgJm4pKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpSQU5EX2J5dGVzIiwgJm4pKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9SQU5EX2J5dGVzX2ltcGwobW9kdWxlLCBuKTsKIAogZXhpdDoKQEAgLTg2NCw4ICs5MTcsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBuOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOlJBTkRfcHNldWRvX2J5dGVzIiwgJm4pKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpSQU5EX3BzZXVkb19ieXRlcyIsICZuKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfUkFORF9wc2V1ZG9fYnl0ZXNfaW1wbChtb2R1bGUsIG4pOwogCiBleGl0OgpAQCAtOTE2LDggKzk3MCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnBhdGg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOlJBTkRfZWdkIiwgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmcGF0aCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpSQU5EX2VnZCIsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJnBhdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9SQU5EX2VnZF9pbXBsKG1vZHVsZSwgcGF0aCk7CiAKIGV4aXQ6CkBAIC05NTYsMjIgKzEwMTEsMjQgQEAKICJsb25nIG5hbWUgYXJlIGFsc28gbWF0Y2hlZC4iKTsKIAogI2RlZmluZSBfU1NMX1RYVDJPQkpfTUVUSE9EREVGICAgIFwKLSAgICB7InR4dDJvYmoiLCAoUHlDRnVuY3Rpb24pX3NzbF90eHQyb2JqLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NzbF90eHQyb2JqX19kb2NfX30sCisgICAgeyJ0eHQyb2JqIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfdHh0Mm9iaiwgTUVUSF9GQVNUQ0FMTCwgX3NzbF90eHQyb2JqX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc3NsX3R4dDJvYmpfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBjb25zdCBjaGFyICp0eHQsIGludCBuYW1lKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zc2xfdHh0Mm9iaihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zc2xfdHh0Mm9iaihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsidHh0IiwgIm5hbWUiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJ0eHQiLCAibmFtZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InN8cDp0eHQyb2JqIiwgX2tleXdvcmRzLCAwfTsKICAgICBjb25zdCBjaGFyICp0eHQ7CiAgICAgaW50IG5hbWUgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAic3xwOnR4dDJvYmoiLCBfa2V5d29yZHMsCi0gICAgICAgICZ0eHQsICZuYW1lKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnR4dCwgJm5hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF90eHQyb2JqX2ltcGwobW9kdWxlLCB0eHQsIG5hbWUpOwogCiBleGl0OgpAQCAtOTk2LDggKzEwNTMsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBuaWQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6bmlkMm9iaiIsICZuaWQpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpuaWQyb2JqIiwgJm5pZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3NsX25pZDJvYmpfaW1wbChtb2R1bGUsIG5pZCk7CiAKIGV4aXQ6CkBAIC0xMDE5LDIxICsxMDc3LDIzIEBACiAiYSBzZXQgb2YgT0lEcyBvciB0aGUgYm9vbGVhbiBUcnVlLiIpOwogCiAjZGVmaW5lIF9TU0xfRU5VTV9DRVJUSUZJQ0FURVNfTUVUSE9EREVGICAgIFwKLSAgICB7ImVudW1fY2VydGlmaWNhdGVzIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfZW51bV9jZXJ0aWZpY2F0ZXMsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3NsX2VudW1fY2VydGlmaWNhdGVzX19kb2NfX30sCisgICAgeyJlbnVtX2NlcnRpZmljYXRlcyIsIChQeUNGdW5jdGlvbilfc3NsX2VudW1fY2VydGlmaWNhdGVzLCBNRVRIX0ZBU1RDQUxMLCBfc3NsX2VudW1fY2VydGlmaWNhdGVzX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc3NsX2VudW1fY2VydGlmaWNhdGVzX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgY29uc3QgY2hhciAqc3RvcmVfbmFtZSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc3NsX2VudW1fY2VydGlmaWNhdGVzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NzbF9lbnVtX2NlcnRpZmljYXRlcyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RvcmVfbmFtZSIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InN0b3JlX25hbWUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJzOmVudW1fY2VydGlmaWNhdGVzIiwgX2tleXdvcmRzLCAwfTsKICAgICBjb25zdCBjaGFyICpzdG9yZV9uYW1lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiczplbnVtX2NlcnRpZmljYXRlcyIsIF9rZXl3b3JkcywKLSAgICAgICAgJnN0b3JlX25hbWUpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc3RvcmVfbmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3NsX2VudW1fY2VydGlmaWNhdGVzX2ltcGwobW9kdWxlLCBzdG9yZV9uYW1lKTsKIAogZXhpdDoKQEAgLTEwNTYsMjEgKzExMTYsMjMgQEAKICJYNTA5X0FTTl9FTkNPRElORyBvciBQS0NTXzdfQVNOX0VOQ09ESU5HLiIpOwogCiAjZGVmaW5lIF9TU0xfRU5VTV9DUkxTX01FVEhPRERFRiAgICBcCi0gICAgeyJlbnVtX2NybHMiLCAoUHlDRnVuY3Rpb24pX3NzbF9lbnVtX2NybHMsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3NsX2VudW1fY3Jsc19fZG9jX199LAorICAgIHsiZW51bV9jcmxzIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfZW51bV9jcmxzLCBNRVRIX0ZBU1RDQUxMLCBfc3NsX2VudW1fY3Jsc19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NzbF9lbnVtX2NybHNfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBjb25zdCBjaGFyICpzdG9yZV9uYW1lKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zc2xfZW51bV9jcmxzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NzbF9lbnVtX2NybHMoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0b3JlX25hbWUiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdG9yZV9uYW1lIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiczplbnVtX2NybHMiLCBfa2V5d29yZHMsIDB9OwogICAgIGNvbnN0IGNoYXIgKnN0b3JlX25hbWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJzOmVudW1fY3JscyIsIF9rZXl3b3JkcywKLSAgICAgICAgJnN0b3JlX25hbWUpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc3RvcmVfbmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3NsX2VudW1fY3Jsc19pbXBsKG1vZHVsZSwgc3RvcmVfbmFtZSk7CiAKIGV4aXQ6CkBAIC0xMDg3LDYgKzExNDksMTAgQEAKICAgICAjZGVmaW5lIF9TU0xfX1NTTFNPQ0tFVF9TRUxFQ1RFRF9BTFBOX1BST1RPQ09MX01FVEhPRERFRgogI2VuZGlmIC8qICFkZWZpbmVkKF9TU0xfX1NTTFNPQ0tFVF9TRUxFQ1RFRF9BTFBOX1BST1RPQ09MX01FVEhPRERFRikgKi8KIAorI2lmbmRlZiBfU1NMX19TU0xDT05URVhUX0dFVF9DSVBIRVJTX01FVEhPRERFRgorICAgICNkZWZpbmUgX1NTTF9fU1NMQ09OVEVYVF9HRVRfQ0lQSEVSU19NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfU1NMX19TU0xDT05URVhUX0dFVF9DSVBIRVJTX01FVEhPRERFRikgKi8KKwogI2lmbmRlZiBfU1NMX19TU0xDT05URVhUX1NFVF9FQ0RIX0NVUlZFX01FVEhPRERFRgogICAgICNkZWZpbmUgX1NTTF9fU1NMQ09OVEVYVF9TRVRfRUNESF9DVVJWRV9NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChfU1NMX19TU0xDT05URVhUX1NFVF9FQ0RIX0NVUlZFX01FVEhPRERFRikgKi8KQEAgLTExMDIsNCArMTE2OCw0IEBACiAjaWZuZGVmIF9TU0xfRU5VTV9DUkxTX01FVEhPRERFRgogICAgICNkZWZpbmUgX1NTTF9FTlVNX0NSTFNfTUVUSE9EREVGCiAjZW5kaWYgLyogIWRlZmluZWQoX1NTTF9FTlVNX0NSTFNfTUVUSE9EREVGKSAqLwotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTZmYjEwNTk0ZDgzNTFkYzUgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE4NTliMjFmZTY4YTYxMTUgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX3RraW50ZXIuYy5oIGIvTW9kdWxlcy9jbGluaWMvX3RraW50ZXIuYy5oCmluZGV4IDc3YWYwODMuLmVkZDUzODAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL190a2ludGVyLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9fdGtpbnRlci5jLmgKQEAgLTE5LDggKzE5LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBjb25zdCBjaGFyICpzY3JpcHQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6ZXZhbCIsICZzY3JpcHQpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpldmFsIiwgJnNjcmlwdCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl90a2FwcF9ldmFsX2ltcGwoc2VsZiwgc2NyaXB0KTsKIAogZXhpdDoKQEAgLTQ0LDggKzQ1LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBjb25zdCBjaGFyICpmaWxlTmFtZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpldmFsZmlsZSIsICZmaWxlTmFtZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmV2YWxmaWxlIiwgJmZpbGVOYW1lKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX2V2YWxmaWxlX2ltcGwoc2VsZiwgZmlsZU5hbWUpOwogCiBleGl0OgpAQCAtNjksOCArNzEsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKnNjcmlwdDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpyZWNvcmQiLCAmc2NyaXB0KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6cmVjb3JkIiwgJnNjcmlwdCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl90a2FwcF9yZWNvcmRfaW1wbChzZWxmLCBzY3JpcHQpOwogCiBleGl0OgpAQCAtOTQsOCArOTcsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKm1zZzsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczphZGRlcnJpbmZvIiwgJm1zZykpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmFkZGVycmluZm8iLCAmbXNnKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX2FkZGVycmluZm9faW1wbChzZWxmLCBtc2cpOwogCiBleGl0OgpAQCAtMTQzLDggKzE0Nyw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgY29uc3QgY2hhciAqczsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpleHByc3RyaW5nIiwgJnMpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpleHByc3RyaW5nIiwgJnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfdGthcHBfZXhwcnN0cmluZ19pbXBsKHNlbGYsIHMpOwogCiBleGl0OgpAQCAtMTY4LDggKzE3Myw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgY29uc3QgY2hhciAqczsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpleHBybG9uZyIsICZzKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6ZXhwcmxvbmciLCAmcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl90a2FwcF9leHBybG9uZ19pbXBsKHNlbGYsIHMpOwogCiBleGl0OgpAQCAtMTkzLDggKzE5OSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgY29uc3QgY2hhciAqczsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpleHByZG91YmxlIiwgJnMpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpleHByZG91YmxlIiwgJnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfdGthcHBfZXhwcmRvdWJsZV9pbXBsKHNlbGYsIHMpOwogCiBleGl0OgpAQCAtMjE4LDggKzIyNSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgY29uc3QgY2hhciAqczsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpleHByYm9vbGVhbiIsICZzKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6ZXhwcmJvb2xlYW4iLCAmcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl90a2FwcF9leHByYm9vbGVhbl9pbXBsKHNlbGYsIHMpOwogCiBleGl0OgpAQCAtMjYyLDggKzI3MCw5IEBACiAgICAgUHlPYmplY3QgKmZ1bmM7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNPOmNyZWF0ZWNvbW1hbmQiLAotICAgICAgICAmbmFtZSwgJmZ1bmMpKQorICAgICAgICAmbmFtZSwgJmZ1bmMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfdGthcHBfY3JlYXRlY29tbWFuZF9pbXBsKHNlbGYsIG5hbWUsIGZ1bmMpOwogCiBleGl0OgpAQCAtMjg3LDggKzI5Niw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgY29uc3QgY2hhciAqbmFtZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpkZWxldGVjb21tYW5kIiwgJm5hbWUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpkZWxldGVjb21tYW5kIiwgJm5hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfdGthcHBfZGVsZXRlY29tbWFuZF9pbXBsKHNlbGYsIG5hbWUpOwogCiBleGl0OgpAQCAtMzE4LDggKzMyOCw5IEBACiAgICAgUHlPYmplY3QgKmZ1bmM7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9pTzpjcmVhdGVmaWxlaGFuZGxlciIsCi0gICAgICAgICZmaWxlLCAmbWFzaywgJmZ1bmMpKQorICAgICAgICAmZmlsZSwgJm1hc2ssICZmdW5jKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX2NyZWF0ZWZpbGVoYW5kbGVyX2ltcGwoc2VsZiwgZmlsZSwgbWFzaywgZnVuYyk7CiAKIGV4aXQ6CkBAIC0zNzcsOCArMzg4LDkgQEAKICAgICBQeU9iamVjdCAqZnVuYzsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU86Y3JlYXRldGltZXJoYW5kbGVyIiwKLSAgICAgICAgJm1pbGxpc2Vjb25kcywgJmZ1bmMpKQorICAgICAgICAmbWlsbGlzZWNvbmRzLCAmZnVuYykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl90a2FwcF9jcmVhdGV0aW1lcmhhbmRsZXJfaW1wbChzZWxmLCBtaWxsaXNlY29uZHMsIGZ1bmMpOwogCiBleGl0OgpAQCAtNDAzLDggKzQxNSw5IEBACiAgICAgaW50IHRocmVzaG9sZCA9IDA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOm1haW5sb29wIiwKLSAgICAgICAgJnRocmVzaG9sZCkpCisgICAgICAgICZ0aHJlc2hvbGQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfdGthcHBfbWFpbmxvb3BfaW1wbChzZWxmLCB0aHJlc2hvbGQpOwogCiBleGl0OgpAQCAtNDI5LDggKzQ0Miw5IEBACiAgICAgaW50IGZsYWdzID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGk6ZG9vbmVldmVudCIsCi0gICAgICAgICZmbGFncykpCisgICAgICAgICZmbGFncykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl90a2FwcF9kb29uZWV2ZW50X2ltcGwoc2VsZiwgZmxhZ3MpOwogCiBleGl0OgpAQCAtNTUxLDggKzU2NSw5IEBACiAgICAgY29uc3QgY2hhciAqdXNlID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifHpzc2lpaWl6OmNyZWF0ZSIsCi0gICAgICAgICZzY3JlZW5OYW1lLCAmYmFzZU5hbWUsICZjbGFzc05hbWUsICZpbnRlcmFjdGl2ZSwgJndhbnRvYmplY3RzLCAmd2FudFRrLCAmc3luYywgJnVzZSkpCisgICAgICAgICZzY3JlZW5OYW1lLCAmYmFzZU5hbWUsICZjbGFzc05hbWUsICZpbnRlcmFjdGl2ZSwgJndhbnRvYmplY3RzLCAmd2FudFRrLCAmc3luYywgJnVzZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl9jcmVhdGVfaW1wbChtb2R1bGUsIHNjcmVlbk5hbWUsIGJhc2VOYW1lLCBjbGFzc05hbWUsIGludGVyYWN0aXZlLCB3YW50b2JqZWN0cywgd2FudFRrLCBzeW5jLCB1c2UpOwogCiBleGl0OgpAQCAtNTc5LDggKzU5NCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IG5ld192YWw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6c2V0YnVzeXdhaXRpbnRlcnZhbCIsICZuZXdfdmFsKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6c2V0YnVzeXdhaXRpbnRlcnZhbCIsICZuZXdfdmFsKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3NldGJ1c3l3YWl0aW50ZXJ2YWxfaW1wbChtb2R1bGUsIG5ld192YWwpOwogCiBleGl0OgpAQCAtNjA2LDggKzYyMiw5IEBACiAgICAgaW50IF9yZXR1cm5fdmFsdWU7CiAKICAgICBfcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfZ2V0YnVzeXdhaXRpbnRlcnZhbF9pbXBsKG1vZHVsZSk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTYyMSw0ICs2MzgsNCBAQAogI2lmbmRlZiBfVEtJTlRFUl9US0FQUF9ERUxFVEVGSUxFSEFORExFUl9NRVRIT0RERUYKICAgICAjZGVmaW5lIF9US0lOVEVSX1RLQVBQX0RFTEVURUZJTEVIQU5ETEVSX01FVEhPRERFRgogI2VuZGlmIC8qICFkZWZpbmVkKF9US0lOVEVSX1RLQVBQX0RFTEVURUZJTEVIQU5ETEVSX01FVEhPRERFRikgKi8KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mOTA1N2M4YmYyODg2MzNkIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04MzZjNTc4YjcxZDY5MDk3IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL193ZWFrcmVmLmMuaCBiL01vZHVsZXMvY2xpbmljL193ZWFrcmVmLmMuaAppbmRleCBiODNiMzNlLi5jMTkyZTcyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9fd2Vha3JlZi5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvX3dlYWtyZWYuYy5oCkBAIC0yMSwxMSArMjEsMTIgQEAKICAgICBQeV9zc2l6ZV90IF9yZXR1cm5fdmFsdWU7CiAKICAgICBfcmV0dXJuX3ZhbHVlID0gX3dlYWtyZWZfZ2V0d2Vha3JlZmNvdW50X2ltcGwobW9kdWxlLCBvYmplY3QpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbVNzaXplX3QoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kOTA4NmM4NTc2ZDQ2OTMzIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lMWFkNTg3MTQ3MzIzZTE5IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL193aW5hcGkuYy5oIGIvTW9kdWxlcy9jbGluaWMvX3dpbmFwaS5jLmgKaW5kZXggYWMzOGQzNy4uNWJmYmFmMCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvX3dpbmFwaS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvX3dpbmFwaS5jLmgKQEAgLTE5LDggKzE5LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgd2FpdDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAicDpHZXRPdmVybGFwcGVkUmVzdWx0IiwgJndhaXQpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAicDpHZXRPdmVybGFwcGVkUmVzdWx0IiwgJndhaXQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9PdmVybGFwcGVkX0dldE92ZXJsYXBwZWRSZXN1bHRfaW1wbChzZWxmLCB3YWl0KTsKIAogZXhpdDoKQEAgLTc5LDggKzgwLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBIQU5ETEUgaGFuZGxlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIEZfSEFORExFICI6Q2xvc2VIYW5kbGUiLCAmaGFuZGxlKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgRl9IQU5ETEUgIjpDbG9zZUhhbmRsZSIsICZoYW5kbGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9DbG9zZUhhbmRsZV9pbXBsKG1vZHVsZSwgaGFuZGxlKTsKIAogZXhpdDoKQEAgLTkzLDIzICs5NSwyNSBAQAogIlxuIik7CiAKICNkZWZpbmUgX1dJTkFQSV9DT05ORUNUTkFNRURQSVBFX01FVEhPRERFRiAgICBcCi0gICAgeyJDb25uZWN0TmFtZWRQaXBlIiwgKFB5Q0Z1bmN0aW9uKV93aW5hcGlfQ29ubmVjdE5hbWVkUGlwZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF93aW5hcGlfQ29ubmVjdE5hbWVkUGlwZV9fZG9jX199LAorICAgIHsiQ29ubmVjdE5hbWVkUGlwZSIsIChQeUNGdW5jdGlvbilfd2luYXBpX0Nvbm5lY3ROYW1lZFBpcGUsIE1FVEhfRkFTVENBTEwsIF93aW5hcGlfQ29ubmVjdE5hbWVkUGlwZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3dpbmFwaV9Db25uZWN0TmFtZWRQaXBlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgSEFORExFIGhhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB1c2Vfb3ZlcmxhcHBlZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fd2luYXBpX0Nvbm5lY3ROYW1lZFBpcGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfd2luYXBpX0Nvbm5lY3ROYW1lZFBpcGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImhhbmRsZSIsICJvdmVybGFwcGVkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiaGFuZGxlIiwgIm92ZXJsYXBwZWQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyIiIEZfSEFORExFICJ8aTpDb25uZWN0TmFtZWRQaXBlIiwgX2tleXdvcmRzLCAwfTsKICAgICBIQU5ETEUgaGFuZGxlOwogICAgIGludCB1c2Vfb3ZlcmxhcHBlZCA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICIiIEZfSEFORExFICJ8aTpDb25uZWN0TmFtZWRQaXBlIiwgX2tleXdvcmRzLAotICAgICAgICAmaGFuZGxlLCAmdXNlX292ZXJsYXBwZWQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmaGFuZGxlLCAmdXNlX292ZXJsYXBwZWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9Db25uZWN0TmFtZWRQaXBlX2ltcGwobW9kdWxlLCBoYW5kbGUsIHVzZV9vdmVybGFwcGVkKTsKIAogZXhpdDoKQEAgLTE0NywxMyArMTUxLDE2IEBACiAgICAgSEFORExFIF9yZXR1cm5fdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNrayIgRl9QT0lOVEVSICJrayIgRl9IQU5ETEUgIjpDcmVhdGVGaWxlIiwKLSAgICAgICAgJmZpbGVfbmFtZSwgJmRlc2lyZWRfYWNjZXNzLCAmc2hhcmVfbW9kZSwgJnNlY3VyaXR5X2F0dHJpYnV0ZXMsICZjcmVhdGlvbl9kaXNwb3NpdGlvbiwgJmZsYWdzX2FuZF9hdHRyaWJ1dGVzLCAmdGVtcGxhdGVfZmlsZSkpCisgICAgICAgICZmaWxlX25hbWUsICZkZXNpcmVkX2FjY2VzcywgJnNoYXJlX21vZGUsICZzZWN1cml0eV9hdHRyaWJ1dGVzLCAmY3JlYXRpb25fZGlzcG9zaXRpb24sICZmbGFnc19hbmRfYXR0cmlidXRlcywgJnRlbXBsYXRlX2ZpbGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IF93aW5hcGlfQ3JlYXRlRmlsZV9pbXBsKG1vZHVsZSwgZmlsZV9uYW1lLCBkZXNpcmVkX2FjY2Vzcywgc2hhcmVfbW9kZSwgc2VjdXJpdHlfYXR0cmlidXRlcywgY3JlYXRpb25fZGlzcG9zaXRpb24sIGZsYWdzX2FuZF9hdHRyaWJ1dGVzLCB0ZW1wbGF0ZV9maWxlKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKLSAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKQorICAgIH0KKyAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKSB7CiAgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBIQU5ETEVfVE9fUFlOVU0oX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0xODAsOCArMTg3LDkgQEAKICAgICBMUFdTVFIgZHN0X3BhdGg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInV1OkNyZWF0ZUp1bmN0aW9uIiwKLSAgICAgICAgJnNyY19wYXRoLCAmZHN0X3BhdGgpKQorICAgICAgICAmc3JjX3BhdGgsICZkc3RfcGF0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX0NyZWF0ZUp1bmN0aW9uX2ltcGwobW9kdWxlLCBzcmNfcGF0aCwgZHN0X3BhdGgpOwogCiBleGl0OgpAQCAtMjIwLDEzICsyMjgsMTYgQEAKICAgICBIQU5ETEUgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic2tra2trayIgRl9QT0lOVEVSICI6Q3JlYXRlTmFtZWRQaXBlIiwKLSAgICAgICAgJm5hbWUsICZvcGVuX21vZGUsICZwaXBlX21vZGUsICZtYXhfaW5zdGFuY2VzLCAmb3V0X2J1ZmZlcl9zaXplLCAmaW5fYnVmZmVyX3NpemUsICZkZWZhdWx0X3RpbWVvdXQsICZzZWN1cml0eV9hdHRyaWJ1dGVzKSkKKyAgICAgICAgJm5hbWUsICZvcGVuX21vZGUsICZwaXBlX21vZGUsICZtYXhfaW5zdGFuY2VzLCAmb3V0X2J1ZmZlcl9zaXplLCAmaW5fYnVmZmVyX3NpemUsICZkZWZhdWx0X3RpbWVvdXQsICZzZWN1cml0eV9hdHRyaWJ1dGVzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBfd2luYXBpX0NyZWF0ZU5hbWVkUGlwZV9pbXBsKG1vZHVsZSwgbmFtZSwgb3Blbl9tb2RlLCBwaXBlX21vZGUsIG1heF9pbnN0YW5jZXMsIG91dF9idWZmZXJfc2l6ZSwgaW5fYnVmZmVyX3NpemUsIGRlZmF1bHRfdGltZW91dCwgc2VjdXJpdHlfYXR0cmlidXRlcyk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkKKyAgICB9CisgICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkgewogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gSEFORExFX1RPX1BZTlVNKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMjU4LDggKzI2OSw5IEBACiAgICAgRFdPUkQgc2l6ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT2s6Q3JlYXRlUGlwZSIsCi0gICAgICAgICZwaXBlX2F0dHJzLCAmc2l6ZSkpCisgICAgICAgICZwaXBlX2F0dHJzLCAmc2l6ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX0NyZWF0ZVBpcGVfaW1wbChtb2R1bGUsIHBpcGVfYXR0cnMsIHNpemUpOwogCiBleGl0OgpAQCAtMzA4LDggKzMyMCw5IEBACiAgICAgUHlPYmplY3QgKnN0YXJ0dXBfaW5mbzsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiWlpPT2lrT1pPOkNyZWF0ZVByb2Nlc3MiLAotICAgICAgICAmYXBwbGljYXRpb25fbmFtZSwgJmNvbW1hbmRfbGluZSwgJnByb2NfYXR0cnMsICZ0aHJlYWRfYXR0cnMsICZpbmhlcml0X2hhbmRsZXMsICZjcmVhdGlvbl9mbGFncywgJmVudl9tYXBwaW5nLCAmY3VycmVudF9kaXJlY3RvcnksICZzdGFydHVwX2luZm8pKQorICAgICAgICAmYXBwbGljYXRpb25fbmFtZSwgJmNvbW1hbmRfbGluZSwgJnByb2NfYXR0cnMsICZ0aHJlYWRfYXR0cnMsICZpbmhlcml0X2hhbmRsZXMsICZjcmVhdGlvbl9mbGFncywgJmVudl9tYXBwaW5nLCAmY3VycmVudF9kaXJlY3RvcnksICZzdGFydHVwX2luZm8pKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9DcmVhdGVQcm9jZXNzX2ltcGwobW9kdWxlLCBhcHBsaWNhdGlvbl9uYW1lLCBjb21tYW5kX2xpbmUsIHByb2NfYXR0cnMsIHRocmVhZF9hdHRycywgaW5oZXJpdF9oYW5kbGVzLCBjcmVhdGlvbl9mbGFncywgZW52X21hcHBpbmcsIGN1cnJlbnRfZGlyZWN0b3J5LCBzdGFydHVwX2luZm8pOwogCiBleGl0OgpAQCAtMzUxLDEzICszNjQsMTYgQEAKICAgICBIQU5ETEUgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBGX0hBTkRMRSAiIiBGX0hBTkRMRSAiIiBGX0hBTkRMRSAia2l8azpEdXBsaWNhdGVIYW5kbGUiLAotICAgICAgICAmc291cmNlX3Byb2Nlc3NfaGFuZGxlLCAmc291cmNlX2hhbmRsZSwgJnRhcmdldF9wcm9jZXNzX2hhbmRsZSwgJmRlc2lyZWRfYWNjZXNzLCAmaW5oZXJpdF9oYW5kbGUsICZvcHRpb25zKSkKKyAgICAgICAgJnNvdXJjZV9wcm9jZXNzX2hhbmRsZSwgJnNvdXJjZV9oYW5kbGUsICZ0YXJnZXRfcHJvY2Vzc19oYW5kbGUsICZkZXNpcmVkX2FjY2VzcywgJmluaGVyaXRfaGFuZGxlLCAmb3B0aW9ucykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9EdXBsaWNhdGVIYW5kbGVfaW1wbChtb2R1bGUsIHNvdXJjZV9wcm9jZXNzX2hhbmRsZSwgc291cmNlX2hhbmRsZSwgdGFyZ2V0X3Byb2Nlc3NfaGFuZGxlLCBkZXNpcmVkX2FjY2VzcywgaW5oZXJpdF9oYW5kbGUsIG9wdGlvbnMpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OwotICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpCisgICAgfQorICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpIHsKICAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IEhBTkRMRV9UT19QWU5VTShfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTM4MSw4ICszOTcsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFVJTlQgRXhpdENvZGU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkk6RXhpdFByb2Nlc3MiLCAmRXhpdENvZGUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiSTpFeGl0UHJvY2VzcyIsICZFeGl0Q29kZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX0V4aXRQcm9jZXNzX2ltcGwobW9kdWxlLCBFeGl0Q29kZSk7CiAKIGV4aXQ6CkBAIC00MDgsMTAgKzQyNSwxMiBAQAogICAgIEhBTkRMRSBfcmV0dXJuX3ZhbHVlOwogCiAgICAgX3JldHVybl92YWx1ZSA9IF93aW5hcGlfR2V0Q3VycmVudFByb2Nlc3NfaW1wbChtb2R1bGUpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OwotICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpCisgICAgfQorICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpIHsKICAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IEhBTkRMRV9UT19QWU5VTShfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTQzNywxMSArNDU2LDEzIEBACiAgICAgSEFORExFIHByb2Nlc3M7CiAgICAgRFdPUkQgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiIiBGX0hBTkRMRSAiOkdldEV4aXRDb2RlUHJvY2VzcyIsICZwcm9jZXNzKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgRl9IQU5ETEUgIjpHZXRFeGl0Q29kZVByb2Nlc3MiLCAmcHJvY2VzcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9HZXRFeGl0Q29kZVByb2Nlc3NfaW1wbChtb2R1bGUsIHByb2Nlc3MpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSBEV09SRF9NQVgpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IERXT1JEX01BWCkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5X0J1aWxkVmFsdWUoImsiLCBfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTQ2Niw4ICs0ODcsOSBAQAogICAgIERXT1JEIF9yZXR1cm5fdmFsdWU7CiAKICAgICBfcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9HZXRMYXN0RXJyb3JfaW1wbChtb2R1bGUpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSBEV09SRF9NQVgpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IERXT1JEX01BWCkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5X0J1aWxkVmFsdWUoImsiLCBfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTQ5OSw4ICs1MjEsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIEhNT0RVTEUgbW9kdWxlX2hhbmRsZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiIiBGX0hBTkRMRSAiOkdldE1vZHVsZUZpbGVOYW1lIiwgJm1vZHVsZV9oYW5kbGUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiIiBGX0hBTkRMRSAiOkdldE1vZHVsZUZpbGVOYW1lIiwgJm1vZHVsZV9oYW5kbGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9HZXRNb2R1bGVGaWxlTmFtZV9pbXBsKG1vZHVsZSwgbW9kdWxlX2hhbmRsZSk7CiAKIGV4aXQ6CkBAIC01MzEsMTMgKzU1NCwxNiBAQAogICAgIERXT1JEIHN0ZF9oYW5kbGU7CiAgICAgSEFORExFIF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIms6R2V0U3RkSGFuZGxlIiwgJnN0ZF9oYW5kbGUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiazpHZXRTdGRIYW5kbGUiLCAmc3RkX2hhbmRsZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9HZXRTdGRIYW5kbGVfaW1wbChtb2R1bGUsIHN0ZF9oYW5kbGUpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OwotICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpCisgICAgfQorICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpIHsKICAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IEhBTkRMRV9UT19QWU5VTShfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTU2Myw4ICs1ODksOSBAQAogICAgIGxvbmcgX3JldHVybl92YWx1ZTsKIAogICAgIF9yZXR1cm5fdmFsdWUgPSBfd2luYXBpX0dldFZlcnNpb25faW1wbChtb2R1bGUpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC01OTMsMTMgKzYyMCwxNiBAQAogICAgIEhBTkRMRSBfcmV0dXJuX3ZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJraWs6T3BlblByb2Nlc3MiLAotICAgICAgICAmZGVzaXJlZF9hY2Nlc3MsICZpbmhlcml0X2hhbmRsZSwgJnByb2Nlc3NfaWQpKQorICAgICAgICAmZGVzaXJlZF9hY2Nlc3MsICZpbmhlcml0X2hhbmRsZSwgJnByb2Nlc3NfaWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IF93aW5hcGlfT3BlblByb2Nlc3NfaW1wbChtb2R1bGUsIGRlc2lyZWRfYWNjZXNzLCBpbmhlcml0X2hhbmRsZSwgcHJvY2Vzc19pZCk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkKKyAgICB9CisgICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkgewogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gSEFORExFX1RPX1BZTlVNKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNjI1LDggKzY1NSw5IEBACiAgICAgaW50IHNpemUgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIEZfSEFORExFICJ8aTpQZWVrTmFtZWRQaXBlIiwKLSAgICAgICAgJmhhbmRsZSwgJnNpemUpKQorICAgICAgICAmaGFuZGxlLCAmc2l6ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX1BlZWtOYW1lZFBpcGVfaW1wbChtb2R1bGUsIGhhbmRsZSwgc2l6ZSk7CiAKIGV4aXQ6CkBAIC02MzksMjQgKzY3MCwyNiBAQAogIlxuIik7CiAKICNkZWZpbmUgX1dJTkFQSV9SRUFERklMRV9NRVRIT0RERUYgICAgXAotICAgIHsiUmVhZEZpbGUiLCAoUHlDRnVuY3Rpb24pX3dpbmFwaV9SZWFkRmlsZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF93aW5hcGlfUmVhZEZpbGVfX2RvY19ffSwKKyAgICB7IlJlYWRGaWxlIiwgKFB5Q0Z1bmN0aW9uKV93aW5hcGlfUmVhZEZpbGUsIE1FVEhfRkFTVENBTEwsIF93aW5hcGlfUmVhZEZpbGVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF93aW5hcGlfUmVhZEZpbGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBIQU5ETEUgaGFuZGxlLCBpbnQgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICBpbnQgdXNlX292ZXJsYXBwZWQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3dpbmFwaV9SZWFkRmlsZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK193aW5hcGlfUmVhZEZpbGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImhhbmRsZSIsICJzaXplIiwgIm92ZXJsYXBwZWQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJoYW5kbGUiLCAic2l6ZSIsICJvdmVybGFwcGVkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiIiBGX0hBTkRMRSAiaXxpOlJlYWRGaWxlIiwgX2tleXdvcmRzLCAwfTsKICAgICBIQU5ETEUgaGFuZGxlOwogICAgIGludCBzaXplOwogICAgIGludCB1c2Vfb3ZlcmxhcHBlZCA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICIiIEZfSEFORExFICJpfGk6UmVhZEZpbGUiLCBfa2V5d29yZHMsCi0gICAgICAgICZoYW5kbGUsICZzaXplLCAmdXNlX292ZXJsYXBwZWQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmaGFuZGxlLCAmc2l6ZSwgJnVzZV9vdmVybGFwcGVkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfUmVhZEZpbGVfaW1wbChtb2R1bGUsIGhhbmRsZSwgc2l6ZSwgdXNlX292ZXJsYXBwZWQpOwogCiBleGl0OgpAQCAtNjg4LDggKzcyMSw5IEBACiAgICAgUHlPYmplY3QgKmNvbGxlY3RfZGF0YV90aW1lb3V0OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIEZfSEFORExFICJPT086U2V0TmFtZWRQaXBlSGFuZGxlU3RhdGUiLAotICAgICAgICAmbmFtZWRfcGlwZSwgJm1vZGUsICZtYXhfY29sbGVjdGlvbl9jb3VudCwgJmNvbGxlY3RfZGF0YV90aW1lb3V0KSkKKyAgICAgICAgJm5hbWVkX3BpcGUsICZtb2RlLCAmbWF4X2NvbGxlY3Rpb25fY291bnQsICZjb2xsZWN0X2RhdGFfdGltZW91dCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX1NldE5hbWVkUGlwZUhhbmRsZVN0YXRlX2ltcGwobW9kdWxlLCBuYW1lZF9waXBlLCBtb2RlLCBtYXhfY29sbGVjdGlvbl9jb3VudCwgY29sbGVjdF9kYXRhX3RpbWVvdXQpOwogCiBleGl0OgpAQCAtNzE3LDggKzc1MSw5IEBACiAgICAgVUlOVCBleGl0X2NvZGU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiIgRl9IQU5ETEUgIkk6VGVybWluYXRlUHJvY2VzcyIsCi0gICAgICAgICZoYW5kbGUsICZleGl0X2NvZGUpKQorICAgICAgICAmaGFuZGxlLCAmZXhpdF9jb2RlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfVGVybWluYXRlUHJvY2Vzc19pbXBsKG1vZHVsZSwgaGFuZGxlLCBleGl0X2NvZGUpOwogCiBleGl0OgpAQCAtNzQ0LDggKzc3OSw5IEBACiAgICAgRFdPUkQgdGltZW91dDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic2s6V2FpdE5hbWVkUGlwZSIsCi0gICAgICAgICZuYW1lLCAmdGltZW91dCkpCisgICAgICAgICZuYW1lLCAmdGltZW91dCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX1dhaXROYW1lZFBpcGVfaW1wbChtb2R1bGUsIG5hbWUsIHRpbWVvdXQpOwogCiBleGl0OgpAQCAtNzc0LDggKzgxMCw5IEBACiAgICAgRFdPUkQgbWlsbGlzZWNvbmRzID0gSU5GSU5JVEU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9pfGs6V2FpdEZvck11bHRpcGxlT2JqZWN0cyIsCi0gICAgICAgICZoYW5kbGVfc2VxLCAmd2FpdF9mbGFnLCAmbWlsbGlzZWNvbmRzKSkKKyAgICAgICAgJmhhbmRsZV9zZXEsICZ3YWl0X2ZsYWcsICZtaWxsaXNlY29uZHMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9XYWl0Rm9yTXVsdGlwbGVPYmplY3RzX2ltcGwobW9kdWxlLCBoYW5kbGVfc2VxLCB3YWl0X2ZsYWcsIG1pbGxpc2Vjb25kcyk7CiAKIGV4aXQ6CkBAIC04MDgsMTEgKzg0NSwxMyBAQAogICAgIGxvbmcgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBGX0hBTkRMRSAiazpXYWl0Rm9yU2luZ2xlT2JqZWN0IiwKLSAgICAgICAgJmhhbmRsZSwgJm1pbGxpc2Vjb25kcykpCisgICAgICAgICZoYW5kbGUsICZtaWxsaXNlY29uZHMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IF93aW5hcGlfV2FpdEZvclNpbmdsZU9iamVjdF9pbXBsKG1vZHVsZSwgaGFuZGxlLCBtaWxsaXNlY29uZHMpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC04MjUsMjcgKzg2NCwyOSBAQAogIlxuIik7CiAKICNkZWZpbmUgX1dJTkFQSV9XUklURUZJTEVfTUVUSE9EREVGICAgIFwKLSAgICB7IldyaXRlRmlsZSIsIChQeUNGdW5jdGlvbilfd2luYXBpX1dyaXRlRmlsZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF93aW5hcGlfV3JpdGVGaWxlX19kb2NfX30sCisgICAgeyJXcml0ZUZpbGUiLCAoUHlDRnVuY3Rpb24pX3dpbmFwaV9Xcml0ZUZpbGUsIE1FVEhfRkFTVENBTEwsIF93aW5hcGlfV3JpdGVGaWxlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfd2luYXBpX1dyaXRlRmlsZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIEhBTkRMRSBoYW5kbGUsIFB5T2JqZWN0ICpidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgIGludCB1c2Vfb3ZlcmxhcHBlZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fd2luYXBpX1dyaXRlRmlsZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK193aW5hcGlfV3JpdGVGaWxlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJoYW5kbGUiLCAiYnVmZmVyIiwgIm92ZXJsYXBwZWQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJoYW5kbGUiLCAiYnVmZmVyIiwgIm92ZXJsYXBwZWQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyIiIEZfSEFORExFICJPfGk6V3JpdGVGaWxlIiwgX2tleXdvcmRzLCAwfTsKICAgICBIQU5ETEUgaGFuZGxlOwogICAgIFB5T2JqZWN0ICpidWZmZXI7CiAgICAgaW50IHVzZV9vdmVybGFwcGVkID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIiIgRl9IQU5ETEUgIk98aTpXcml0ZUZpbGUiLCBfa2V5d29yZHMsCi0gICAgICAgICZoYW5kbGUsICZidWZmZXIsICZ1c2Vfb3ZlcmxhcHBlZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZoYW5kbGUsICZidWZmZXIsICZ1c2Vfb3ZlcmxhcHBlZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX1dyaXRlRmlsZV9pbXBsKG1vZHVsZSwgaGFuZGxlLCBidWZmZXIsIHVzZV9vdmVybGFwcGVkKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE0YzRiMmE5ZmNiMGJlYTEgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ2ZDYzODJhNjY2MmM0YTkgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvYXJyYXltb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvYXJyYXltb2R1bGUuYy5oCmluZGV4IDBjNzA2MWEuLjNiOWZjZGEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL2FycmF5bW9kdWxlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9hcnJheW1vZHVsZS5jLmgKQEAgLTc3LDggKzc3LDkgQEAKICAgICBQeV9zc2l6ZV90IGkgPSAtMTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifG46cG9wIiwKLSAgICAgICAgJmkpKQorICAgICAgICAmaSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhcnJheV9hcnJheV9wb3BfaW1wbChzZWxmLCBpKTsKIAogZXhpdDoKQEAgLTExNCw4ICsxMTUsOSBAQAogICAgIFB5T2JqZWN0ICp2OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJuTzppbnNlcnQiLAotICAgICAgICAmaSwgJnYpKQorICAgICAgICAmaSwgJnYpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXJyYXlfYXJyYXlfaW5zZXJ0X2ltcGwoc2VsZiwgaSwgdik7CiAKIGV4aXQ6CkBAIC0yMTEsOCArMjEzLDkgQEAKICAgICBQeV9zc2l6ZV90IG47CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9uOmZyb21maWxlIiwKLSAgICAgICAgJmYsICZuKSkKKyAgICAgICAgJmYsICZuKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGFycmF5X2FycmF5X2Zyb21maWxlX2ltcGwoc2VsZiwgZiwgbik7CiAKIGV4aXQ6CkBAIC0yNzUsMTQgKzI3OCwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBidWZmZXIgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInMqOmZyb21zdHJpbmciLCAmYnVmZmVyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInMqOmZyb21zdHJpbmciLCAmYnVmZmVyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGFycmF5X2FycmF5X2Zyb21zdHJpbmdfaW1wbChzZWxmLCAmYnVmZmVyKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBidWZmZXIgKi8KLSAgICBpZiAoYnVmZmVyLm9iaikKKyAgICBpZiAoYnVmZmVyLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTMwNSwxNCArMzEwLDE2IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGJ1ZmZlciA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6ZnJvbWJ5dGVzIiwgJmJ1ZmZlcikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjpmcm9tYnl0ZXMiLCAmYnVmZmVyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGFycmF5X2FycmF5X2Zyb21ieXRlc19pbXBsKHNlbGYsICZidWZmZXIpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLwotICAgIGlmIChidWZmZXIub2JqKQorICAgIGlmIChidWZmZXIub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMzc5LDggKzM4Niw5IEBACiAgICAgUHlfVU5JQ09ERSAqdXN0cjsKICAgICBQeV9zc2l6ZV9jbGVhbl90IHVzdHJfbGVuZ3RoOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ1Izpmcm9tdW5pY29kZSIsICZ1c3RyLCAmdXN0cl9sZW5ndGgpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAidSM6ZnJvbXVuaWNvZGUiLCAmdXN0ciwgJnVzdHJfbGVuZ3RoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGFycmF5X2FycmF5X2Zyb211bmljb2RlX2ltcGwoc2VsZiwgdXN0ciwgdXN0cl9sZW5ndGgpOwogCiBleGl0OgpAQCAtNDUzLDggKzQ2MSw5IEBACiAgICAgUHlPYmplY3QgKml0ZW1zOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPQ2lPOl9hcnJheV9yZWNvbnN0cnVjdG9yIiwKLSAgICAgICAgJmFycmF5dHlwZSwgJnR5cGVjb2RlLCAmbWZvcm1hdF9jb2RlLCAmaXRlbXMpKQorICAgICAgICAmYXJyYXl0eXBlLCAmdHlwZWNvZGUsICZtZm9ybWF0X2NvZGUsICZpdGVtcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhcnJheV9fYXJyYXlfcmVjb25zdHJ1Y3Rvcl9pbXBsKG1vZHVsZSwgYXJyYXl0eXBlLCB0eXBlY29kZSwgbWZvcm1hdF9jb2RlLCBpdGVtcyk7CiAKIGV4aXQ6CkBAIC00OTYsNCArNTA1LDQgQEAKIAogI2RlZmluZSBBUlJBWV9BUlJBWUlURVJBVE9SX19fU0VUU1RBVEVfX19NRVRIT0RERUYgICAgXAogICAgIHsiX19zZXRzdGF0ZV9fIiwgKFB5Q0Z1bmN0aW9uKWFycmF5X2FycmF5aXRlcmF0b3JfX19zZXRzdGF0ZV9fLCBNRVRIX08sIGFycmF5X2FycmF5aXRlcmF0b3JfX19zZXRzdGF0ZV9fX19kb2NfX30sCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzA1ZGYzZjU3OTYwMzllNCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjIwNTRmYjc2NGM4Y2M2NCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9hdWRpb29wLmMuaCBiL01vZHVsZXMvY2xpbmljL2F1ZGlvb3AuYy5oCmluZGV4IDYyZTMxM2I1Li5iZTRiNzE4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9hdWRpb29wLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9hdWRpb29wLmMuaApAQCAtMjQsMTQgKzI0LDE2IEBACiAgICAgUHlfc3NpemVfdCBpbmRleDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppbjpnZXRzYW1wbGUiLAotICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJmluZGV4KSkKKyAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgsICZpbmRleCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2dldHNhbXBsZV9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCwgaW5kZXgpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC01NiwxNCArNTgsMTYgQEAKICAgICBpbnQgd2lkdGg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaTptYXgiLAotICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpCisgICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfbWF4X2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtODgsMTQgKzkyLDE2IEBACiAgICAgaW50IHdpZHRoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kmk6bWlubWF4IiwKLSAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX21pbm1heF9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQgKi8KLSAgICBpZiAoZnJhZ21lbnQub2JqKQorICAgIGlmIChmcmFnbWVudC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTEyMCwxNCArMTI2LDE2IEBACiAgICAgaW50IHdpZHRoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kmk6YXZnIiwKLSAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2F2Z19pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQgKi8KLSAgICBpZiAoZnJhZ21lbnQub2JqKQorICAgIGlmIChmcmFnbWVudC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTE1MiwxNCArMTYwLDE2IEBACiAgICAgaW50IHdpZHRoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kmk6cm1zIiwKLSAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX3Jtc19pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQgKi8KLSAgICBpZiAoZnJhZ21lbnQub2JqKQorICAgIGlmIChmcmFnbWVudC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTE4NSwxNyArMTk1LDIwIEBACiAgICAgUHlfYnVmZmVyIHJlZmVyZW5jZSA9IHtOVUxMLCBOVUxMfTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp5KjpmaW5kZml0IiwKLSAgICAgICAgJmZyYWdtZW50LCAmcmVmZXJlbmNlKSkKKyAgICAgICAgJmZyYWdtZW50LCAmcmVmZXJlbmNlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfZmluZGZpdF9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCAmcmVmZXJlbmNlKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAgICAgLyogQ2xlYW51cCBmb3IgcmVmZXJlbmNlICovCi0gICAgaWYgKHJlZmVyZW5jZS5vYmopCisgICAgaWYgKHJlZmVyZW5jZS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZyZWZlcmVuY2UpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0yMjEsMTcgKzIzNCwyMCBAQAogICAgIFB5X2J1ZmZlciByZWZlcmVuY2UgPSB7TlVMTCwgTlVMTH07CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqeSo6ZmluZGZhY3RvciIsCi0gICAgICAgICZmcmFnbWVudCwgJnJlZmVyZW5jZSkpCisgICAgICAgICZmcmFnbWVudCwgJnJlZmVyZW5jZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2ZpbmRmYWN0b3JfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgJnJlZmVyZW5jZSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQgKi8KLSAgICBpZiAoZnJhZ21lbnQub2JqKQorICAgIGlmIChmcmFnbWVudC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudCk7CisgICAgfQogICAgIC8qIENsZWFudXAgZm9yIHJlZmVyZW5jZSAqLwotICAgIGlmIChyZWZlcmVuY2Uub2JqKQorICAgIGlmIChyZWZlcmVuY2Uub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcmVmZXJlbmNlKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMjU3LDE0ICsyNzMsMTYgQEAKICAgICBQeV9zc2l6ZV90IGxlbmd0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSpuOmZpbmRtYXgiLAotICAgICAgICAmZnJhZ21lbnQsICZsZW5ndGgpKQorICAgICAgICAmZnJhZ21lbnQsICZsZW5ndGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9maW5kbWF4X2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIGxlbmd0aCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQgKi8KLSAgICBpZiAoZnJhZ21lbnQub2JqKQorICAgIGlmIChmcmFnbWVudC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTI4OSwxNCArMzA3LDE2IEBACiAgICAgaW50IHdpZHRoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kmk6YXZncHAiLAotICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpCisgICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfYXZncHBfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0zMjEsMTQgKzM0MSwxNiBAQAogICAgIGludCB3aWR0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOm1heHBwIiwKLSAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX21heHBwX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMzUzLDE0ICszNzUsMTYgQEAKICAgICBpbnQgd2lkdGg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaTpjcm9zcyIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkKKyAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9jcm9zc19pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQgKi8KLSAgICBpZiAoZnJhZ21lbnQub2JqKQorICAgIGlmIChmcmFnbWVudC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTM4NywxNCArNDExLDE2IEBACiAgICAgZG91YmxlIGZhY3RvcjsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppZDptdWwiLAotICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJmZhY3RvcikpCisgICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmZmFjdG9yKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfbXVsX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoLCBmYWN0b3IpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC00MjIsMTQgKzQ0OCwxNiBAQAogICAgIGRvdWJsZSByZmFjdG9yOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KmlkZDp0b21vbm8iLAotICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJmxmYWN0b3IsICZyZmFjdG9yKSkKKyAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgsICZsZmFjdG9yLCAmcmZhY3RvcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX3RvbW9ub19pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCwgbGZhY3RvciwgcmZhY3Rvcik7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQgKi8KLSAgICBpZiAoZnJhZ21lbnQub2JqKQorICAgIGlmIChmcmFnbWVudC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTQ1NywxNCArNDg1LDE2IEBACiAgICAgZG91YmxlIHJmYWN0b3I7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaWRkOnRvc3RlcmVvIiwKLSAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgsICZsZmFjdG9yLCAmcmZhY3RvcikpCisgICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmbGZhY3RvciwgJnJmYWN0b3IpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF90b3N0ZXJlb19pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCwgbGZhY3RvciwgcmZhY3Rvcik7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQgKi8KLSAgICBpZiAoZnJhZ21lbnQub2JqKQorICAgIGlmIChmcmFnbWVudC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTQ5MSwxNyArNTIxLDIwIEBACiAgICAgaW50IHdpZHRoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KnkqaTphZGQiLAotICAgICAgICAmZnJhZ21lbnQxLCAmZnJhZ21lbnQyLCAmd2lkdGgpKQorICAgICAgICAmZnJhZ21lbnQxLCAmZnJhZ21lbnQyLCAmd2lkdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9hZGRfaW1wbChtb2R1bGUsICZmcmFnbWVudDEsICZmcmFnbWVudDIsIHdpZHRoKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudDEgKi8KLSAgICBpZiAoZnJhZ21lbnQxLm9iaikKKyAgICBpZiAoZnJhZ21lbnQxLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50MSk7CisgICAgfQogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50MiAqLwotICAgIGlmIChmcmFnbWVudDIub2JqKQorICAgIGlmIChmcmFnbWVudDIub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQyKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNTI3LDE0ICs1NjAsMTYgQEAKICAgICBpbnQgYmlhczsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppaTpiaWFzIiwKLSAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgsICZiaWFzKSkKKyAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgsICZiaWFzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfYmlhc19pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCwgYmlhcyk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQgKi8KLSAgICBpZiAoZnJhZ21lbnQub2JqKQorICAgIGlmIChmcmFnbWVudC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTU1OSwxNCArNTk0LDE2IEBACiAgICAgaW50IHdpZHRoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kmk6cmV2ZXJzZSIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkKKyAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9yZXZlcnNlX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNTkxLDE0ICs2MjgsMTYgQEAKICAgICBpbnQgd2lkdGg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaTpieXRlc3dhcCIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkKKyAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9ieXRlc3dhcF9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQgKi8KLSAgICBpZiAoZnJhZ21lbnQub2JqKQorICAgIGlmIChmcmFnbWVudC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTYyNSwxNCArNjY0LDE2IEBACiAgICAgaW50IG5ld3dpZHRoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KmlpOmxpbjJsaW4iLAotICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJm5ld3dpZHRoKSkKKyAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgsICZuZXd3aWR0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2xpbjJsaW5faW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgsIG5ld3dpZHRoKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNjY2LDE0ICs3MDcsMTYgQEAKICAgICBpbnQgd2VpZ2h0QiA9IDA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaWlpaU98aWk6cmF0ZWN2IiwKLSAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgsICZuY2hhbm5lbHMsICZpbnJhdGUsICZvdXRyYXRlLCAmc3RhdGUsICZ3ZWlnaHRBLCAmd2VpZ2h0QikpCisgICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmbmNoYW5uZWxzLCAmaW5yYXRlLCAmb3V0cmF0ZSwgJnN0YXRlLCAmd2VpZ2h0QSwgJndlaWdodEIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9yYXRlY3ZfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgsIG5jaGFubmVscywgaW5yYXRlLCBvdXRyYXRlLCBzdGF0ZSwgd2VpZ2h0QSwgd2VpZ2h0Qik7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQgKi8KLSAgICBpZiAoZnJhZ21lbnQub2JqKQorICAgIGlmIChmcmFnbWVudC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTY5OCwxNCArNzQxLDE2IEBACiAgICAgaW50IHdpZHRoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kmk6bGluMnVsYXciLAotICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpCisgICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfbGluMnVsYXdfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC03MzAsMTQgKzc3NSwxNiBAQAogICAgIGludCB3aWR0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOnVsYXcybGluIiwKLSAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX3VsYXcybGluX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNzYyLDE0ICs4MDksMTYgQEAKICAgICBpbnQgd2lkdGg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaTpsaW4yYWxhdyIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkKKyAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9saW4yYWxhd19pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQgKi8KLSAgICBpZiAoZnJhZ21lbnQub2JqKQorICAgIGlmIChmcmFnbWVudC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTc5NCwxNCArODQzLDE2IEBACiAgICAgaW50IHdpZHRoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kmk6YWxhdzJsaW4iLAotICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpCisgICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfYWxhdzJsaW5faW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC04MjgsMTQgKzg3OSwxNiBAQAogICAgIFB5T2JqZWN0ICpzdGF0ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppTzpsaW4yYWRwY20iLAotICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJnN0YXRlKSkKKyAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgsICZzdGF0ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2xpbjJhZHBjbV9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCwgc3RhdGUpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC04NjIsMTUgKzkxNSwxNyBAQAogICAgIFB5T2JqZWN0ICpzdGF0ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppTzphZHBjbTJsaW4iLAotICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJnN0YXRlKSkKKyAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgsICZzdGF0ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2FkcGNtMmxpbl9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCwgc3RhdGUpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Mzg1ZmIwOWZhMjFhNjJjMCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTBhYjc0YzNmYTU3YzM5YyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9iaW5hc2NpaS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9iaW5hc2NpaS5jLmgKaW5kZXggZTIwY2FjMi4uYWNhZmNiZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvYmluYXNjaWkuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL2JpbmFzY2lpLmMuaApAQCAtMjAsOCArMjAsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjphMmJfdXUiLCBhc2NpaV9idWZmZXJfY29udmVydGVyLCAmZGF0YSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjphMmJfdXUiLCBhc2NpaV9idWZmZXJfY29udmVydGVyLCAmZGF0YSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV9hMmJfdXVfaW1wbChtb2R1bGUsICZkYXRhKTsKIAogZXhpdDoKQEAgLTUwLDE0ICs1MSwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5KjpiMmFfdXUiLCAmZGF0YSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5KjpiMmFfdXUiLCAmZGF0YSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV9iMmFfdXVfaW1wbChtb2R1bGUsICZkYXRhKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC04MCw4ICs4Myw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOmEyYl9iYXNlNjQiLCBhc2NpaV9idWZmZXJfY29udmVydGVyLCAmZGF0YSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjphMmJfYmFzZTY0IiwgYXNjaWlfYnVmZmVyX2NvbnZlcnRlciwgJmRhdGEpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfYTJiX2Jhc2U2NF9pbXBsKG1vZHVsZSwgJmRhdGEpOwogCiBleGl0OgpAQCAtOTMsMzEgKzk3LDM3IEBACiB9CiAKIFB5RG9jX1NUUlZBUihiaW5hc2NpaV9iMmFfYmFzZTY0X19kb2NfXywKLSJiMmFfYmFzZTY0KCRtb2R1bGUsIGRhdGEsIC8pXG4iCisiYjJhX2Jhc2U2NCgkbW9kdWxlLCAvLCBkYXRhLCAqLCBuZXdsaW5lPVRydWUpXG4iCiAiLS1cbiIKICJcbiIKICJCYXNlNjQtY29kZSBsaW5lIG9mIGRhdGEuIik7CiAKICNkZWZpbmUgQklOQVNDSUlfQjJBX0JBU0U2NF9NRVRIT0RERUYgICAgXAotICAgIHsiYjJhX2Jhc2U2NCIsIChQeUNGdW5jdGlvbiliaW5hc2NpaV9iMmFfYmFzZTY0LCBNRVRIX08sIGJpbmFzY2lpX2IyYV9iYXNlNjRfX2RvY19ffSwKKyAgICB7ImIyYV9iYXNlNjQiLCAoUHlDRnVuY3Rpb24pYmluYXNjaWlfYjJhX2Jhc2U2NCwgTUVUSF9GQVNUQ0FMTCwgYmluYXNjaWlfYjJhX2Jhc2U2NF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotYmluYXNjaWlfYjJhX2Jhc2U2NF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSk7CitiaW5hc2NpaV9iMmFfYmFzZTY0X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLCBpbnQgbmV3bGluZSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1iaW5hc2NpaV9iMmFfYmFzZTY0KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmcpCitiaW5hc2NpaV9iMmFfYmFzZTY0KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZGF0YSIsICJuZXdsaW5lIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsieSp8JGk6YjJhX2Jhc2U2NCIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CisgICAgaW50IG5ld2xpbmUgPSAxOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5KjpiMmFfYmFzZTY0IiwgJmRhdGEpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZGF0YSwgJm5ld2xpbmUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKLSAgICByZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV9iMmFfYmFzZTY0X2ltcGwobW9kdWxlLCAmZGF0YSk7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX2IyYV9iYXNlNjRfaW1wbChtb2R1bGUsICZkYXRhLCBuZXdsaW5lKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0xNDAsOCArMTUwLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6YTJiX2hxeCIsIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZkYXRhKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOmEyYl9ocXgiLCBhc2NpaV9idWZmZXJfY29udmVydGVyLCAmZGF0YSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV9hMmJfaHF4X2ltcGwobW9kdWxlLCAmZGF0YSk7CiAKIGV4aXQ6CkBAIC0xNzAsMTQgKzE4MSwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5KjpybGVjb2RlX2hxeCIsICZkYXRhKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOnJsZWNvZGVfaHF4IiwgJmRhdGEpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfcmxlY29kZV9ocXhfaW1wbChtb2R1bGUsICZkYXRhKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0yMDAsMTQgKzIxMywxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5KjpiMmFfaHF4IiwgJmRhdGEpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6YjJhX2hxeCIsICZkYXRhKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX2IyYV9ocXhfaW1wbChtb2R1bGUsICZkYXRhKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0yMzAsMTQgKzI0NSwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5KjpybGVkZWNvZGVfaHF4IiwgJmRhdGEpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6cmxlZGVjb2RlX2hxeCIsICZkYXRhKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX3JsZWRlY29kZV9ocXhfaW1wbChtb2R1bGUsICZkYXRhKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0yNjMsMTcgKzI4MCwyMCBAQAogICAgIHVuc2lnbmVkIGludCBfcmV0dXJuX3ZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kkk6Y3JjX2hxeCIsCi0gICAgICAgICZkYXRhLCAmY3JjKSkKKyAgICAgICAgJmRhdGEsICZjcmMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IGJpbmFzY2lpX2NyY19ocXhfaW1wbChtb2R1bGUsICZkYXRhLCBjcmMpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAodW5zaWduZWQgaW50KS0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAodW5zaWduZWQgaW50KS0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoKHVuc2lnbmVkIGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMjk5LDE3ICszMTksMjAgQEAKICAgICB1bnNpZ25lZCBpbnQgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8STpjcmMzMiIsCi0gICAgICAgICZkYXRhLCAmY3JjKSkKKyAgICAgICAgJmRhdGEsICZjcmMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IGJpbmFzY2lpX2NyYzMyX2ltcGwobW9kdWxlLCAmZGF0YSwgY3JjKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gKHVuc2lnbmVkIGludCktMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gKHVuc2lnbmVkIGludCktMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKCh1bnNpZ25lZCBsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTMzNSwxNCArMzU4LDE2IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOmIyYV9oZXgiLCAmZGF0YSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5KjpiMmFfaGV4IiwgJmRhdGEpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfYjJhX2hleF9pbXBsKG1vZHVsZSwgJmRhdGEpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTM2NywxNCArMzkyLDE2IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOmhleGxpZnkiLCAmZGF0YSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5KjpoZXhsaWZ5IiwgJmRhdGEpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfaGV4bGlmeV9pbXBsKG1vZHVsZSwgJmRhdGEpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTQwMCw4ICs0MjcsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBoZXhzdHIgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOmEyYl9oZXgiLCBhc2NpaV9idWZmZXJfY29udmVydGVyLCAmaGV4c3RyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOmEyYl9oZXgiLCBhc2NpaV9idWZmZXJfY29udmVydGVyLCAmaGV4c3RyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX2EyYl9oZXhfaW1wbChtb2R1bGUsICZoZXhzdHIpOwogCiBleGl0OgpAQCAtNDMyLDggKzQ2MCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGhleHN0ciA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6dW5oZXhsaWZ5IiwgYXNjaWlfYnVmZmVyX2NvbnZlcnRlciwgJmhleHN0cikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjp1bmhleGxpZnkiLCBhc2NpaV9idWZmZXJfY29udmVydGVyLCAmaGV4c3RyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX3VuaGV4bGlmeV9pbXBsKG1vZHVsZSwgJmhleHN0cik7CiAKIGV4aXQ6CkBAIC00NTEsMjIgKzQ4MCwyNCBAQAogIkRlY29kZSBhIHN0cmluZyBvZiBxcC1lbmNvZGVkIGRhdGEuIik7CiAKICNkZWZpbmUgQklOQVNDSUlfQTJCX1FQX01FVEhPRERFRiAgICBcCi0gICAgeyJhMmJfcXAiLCAoUHlDRnVuY3Rpb24pYmluYXNjaWlfYTJiX3FwLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgYmluYXNjaWlfYTJiX3FwX19kb2NfX30sCisgICAgeyJhMmJfcXAiLCAoUHlDRnVuY3Rpb24pYmluYXNjaWlfYTJiX3FwLCBNRVRIX0ZBU1RDQUxMLCBiaW5hc2NpaV9hMmJfcXBfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJpbmFzY2lpX2EyYl9xcF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwgaW50IGhlYWRlcik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1iaW5hc2NpaV9hMmJfcXAoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitiaW5hc2NpaV9hMmJfcXAoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImRhdGEiLCAiaGVhZGVyIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZGF0YSIsICJoZWFkZXIiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJnxpOmEyYl9xcCIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAgICAgaW50IGhlYWRlciA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnxpOmEyYl9xcCIsIF9rZXl3b3JkcywKLSAgICAgICAgYXNjaWlfYnVmZmVyX2NvbnZlcnRlciwgJmRhdGEsICZoZWFkZXIpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBhc2NpaV9idWZmZXJfY29udmVydGVyLCAmZGF0YSwgJmhlYWRlcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV9hMmJfcXBfaW1wbChtb2R1bGUsICZkYXRhLCBoZWFkZXIpOwogCiBleGl0OgpAQCAtNDg4LDMyICs1MTksMzUgQEAKICJhcmUgYm90aCBlbmNvZGVkLiAgV2hlbiBxdW90ZXRhYnMgaXMgc2V0LCBzcGFjZSBhbmQgdGFicyBhcmUgZW5jb2RlZC4iKTsKIAogI2RlZmluZSBCSU5BU0NJSV9CMkFfUVBfTUVUSE9EREVGICAgIFwKLSAgICB7ImIyYV9xcCIsIChQeUNGdW5jdGlvbiliaW5hc2NpaV9iMmFfcXAsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBiaW5hc2NpaV9iMmFfcXBfX2RvY19ffSwKKyAgICB7ImIyYV9xcCIsIChQeUNGdW5jdGlvbiliaW5hc2NpaV9iMmFfcXAsIE1FVEhfRkFTVENBTEwsIGJpbmFzY2lpX2IyYV9xcF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogYmluYXNjaWlfYjJhX3FwX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLCBpbnQgcXVvdGV0YWJzLAogICAgICAgICAgICAgICAgICAgICAgaW50IGlzdGV4dCwgaW50IGhlYWRlcik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1iaW5hc2NpaV9iMmFfcXAoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitiaW5hc2NpaV9iMmFfcXAoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImRhdGEiLCAicXVvdGV0YWJzIiwgImlzdGV4dCIsICJoZWFkZXIiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJkYXRhIiwgInF1b3RldGFicyIsICJpc3RleHQiLCAiaGVhZGVyIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsieSp8aWlpOmIyYV9xcCIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAgICAgaW50IHF1b3RldGFicyA9IDA7CiAgICAgaW50IGlzdGV4dCA9IDE7CiAgICAgaW50IGhlYWRlciA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ5KnxpaWk6YjJhX3FwIiwgX2tleXdvcmRzLAotICAgICAgICAmZGF0YSwgJnF1b3RldGFicywgJmlzdGV4dCwgJmhlYWRlcikpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZkYXRhLCAmcXVvdGV0YWJzLCAmaXN0ZXh0LCAmaGVhZGVyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX2IyYV9xcF9pbXBsKG1vZHVsZSwgJmRhdGEsIHF1b3RldGFicywgaXN0ZXh0LCBoZWFkZXIpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01MTE3M2ZjOTcxOGE1ZWRjIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xZjhkNmU0OGY3NWY2ZDFlIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL2NtYXRobW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL2NtYXRobW9kdWxlLmMuaAppbmRleCBhMjU1MzUzLi4wNTQzMWZhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9jbWF0aG1vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvY21hdGhtb2R1bGUuYy5oCkBAIC0yMSw4ICsyMSw5IEBACiAgICAgUHlfY29tcGxleCB6OwogICAgIFB5X2NvbXBsZXggX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDphY29zIiwgJnopKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDphY29zIiwgJnopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgLyogbW9kaWZpY2F0aW9ucyBmb3IgeiAqLwogICAgIGVycm5vID0gMDsgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIGdvdG8gZXhpdCk7CiAgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX2Fjb3NfaW1wbChtb2R1bGUsIHopOwpAQCAtNjIsOCArNjMsOSBAQAogICAgIFB5X2NvbXBsZXggejsKICAgICBQeV9jb21wbGV4IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6YWNvc2giLCAmeikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmFjb3NoIiwgJnopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgLyogbW9kaWZpY2F0aW9ucyBmb3IgeiAqLwogICAgIGVycm5vID0gMDsgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIGdvdG8gZXhpdCk7CiAgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX2Fjb3NoX2ltcGwobW9kdWxlLCB6KTsKQEAgLTEwMyw4ICsxMDUsOSBAQAogICAgIFB5X2NvbXBsZXggejsKICAgICBQeV9jb21wbGV4IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6YXNpbiIsICZ6KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6YXNpbiIsICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIC8qIG1vZGlmaWNhdGlvbnMgZm9yIHogKi8KICAgICBlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOwogICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF9hc2luX2ltcGwobW9kdWxlLCB6KTsKQEAgLTE0NCw4ICsxNDcsOSBAQAogICAgIFB5X2NvbXBsZXggejsKICAgICBQeV9jb21wbGV4IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6YXNpbmgiLCAmeikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmFzaW5oIiwgJnopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgLyogbW9kaWZpY2F0aW9ucyBmb3IgeiAqLwogICAgIGVycm5vID0gMDsgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIGdvdG8gZXhpdCk7CiAgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX2FzaW5oX2ltcGwobW9kdWxlLCB6KTsKQEAgLTE4NSw4ICsxODksOSBAQAogICAgIFB5X2NvbXBsZXggejsKICAgICBQeV9jb21wbGV4IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6YXRhbiIsICZ6KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6YXRhbiIsICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIC8qIG1vZGlmaWNhdGlvbnMgZm9yIHogKi8KICAgICBlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOwogICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF9hdGFuX2ltcGwobW9kdWxlLCB6KTsKQEAgLTIyNiw4ICsyMzEsOSBAQAogICAgIFB5X2NvbXBsZXggejsKICAgICBQeV9jb21wbGV4IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6YXRhbmgiLCAmeikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmF0YW5oIiwgJnopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgLyogbW9kaWZpY2F0aW9ucyBmb3IgeiAqLwogICAgIGVycm5vID0gMDsgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIGdvdG8gZXhpdCk7CiAgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX2F0YW5oX2ltcGwobW9kdWxlLCB6KTsKQEAgLTI2Nyw4ICsyNzMsOSBAQAogICAgIFB5X2NvbXBsZXggejsKICAgICBQeV9jb21wbGV4IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6Y29zIiwgJnopKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpjb3MiLCAmeikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCiAgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKICAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfY29zX2ltcGwobW9kdWxlLCB6KTsKQEAgLTMwOCw4ICszMTUsOSBAQAogICAgIFB5X2NvbXBsZXggejsKICAgICBQeV9jb21wbGV4IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6Y29zaCIsICZ6KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6Y29zaCIsICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIC8qIG1vZGlmaWNhdGlvbnMgZm9yIHogKi8KICAgICBlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOwogICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF9jb3NoX2ltcGwobW9kdWxlLCB6KTsKQEAgLTM0OSw4ICszNTcsOSBAQAogICAgIFB5X2NvbXBsZXggejsKICAgICBQeV9jb21wbGV4IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6ZXhwIiwgJnopKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpleHAiLCAmeikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCiAgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKICAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfZXhwX2ltcGwobW9kdWxlLCB6KTsKQEAgLTM5MCw4ICszOTksOSBAQAogICAgIFB5X2NvbXBsZXggejsKICAgICBQeV9jb21wbGV4IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6bG9nMTAiLCAmeikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmxvZzEwIiwgJnopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgLyogbW9kaWZpY2F0aW9ucyBmb3IgeiAqLwogICAgIGVycm5vID0gMDsgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIGdvdG8gZXhpdCk7CiAgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX2xvZzEwX2ltcGwobW9kdWxlLCB6KTsKQEAgLTQzMSw4ICs0NDEsOSBAQAogICAgIFB5X2NvbXBsZXggejsKICAgICBQeV9jb21wbGV4IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6c2luIiwgJnopKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpzaW4iLCAmeikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCiAgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKICAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfc2luX2ltcGwobW9kdWxlLCB6KTsKQEAgLTQ3Miw4ICs0ODMsOSBAQAogICAgIFB5X2NvbXBsZXggejsKICAgICBQeV9jb21wbGV4IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6c2luaCIsICZ6KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6c2luaCIsICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIC8qIG1vZGlmaWNhdGlvbnMgZm9yIHogKi8KICAgICBlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOwogICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF9zaW5oX2ltcGwobW9kdWxlLCB6KTsKQEAgLTUxMyw4ICs1MjUsOSBAQAogICAgIFB5X2NvbXBsZXggejsKICAgICBQeV9jb21wbGV4IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6c3FydCIsICZ6KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6c3FydCIsICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIC8qIG1vZGlmaWNhdGlvbnMgZm9yIHogKi8KICAgICBlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOwogICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF9zcXJ0X2ltcGwobW9kdWxlLCB6KTsKQEAgLTU1NCw4ICs1NjcsOSBAQAogICAgIFB5X2NvbXBsZXggejsKICAgICBQeV9jb21wbGV4IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6dGFuIiwgJnopKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDp0YW4iLCAmeikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCiAgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKICAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfdGFuX2ltcGwobW9kdWxlLCB6KTsKQEAgLTU5NSw4ICs2MDksOSBAQAogICAgIFB5X2NvbXBsZXggejsKICAgICBQeV9jb21wbGV4IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6dGFuaCIsICZ6KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6dGFuaCIsICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIC8qIG1vZGlmaWNhdGlvbnMgZm9yIHogKi8KICAgICBlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOwogICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF90YW5oX2ltcGwobW9kdWxlLCB6KTsKQEAgLTYzOSw4ICs2NTQsOSBAQAogICAgIFB5T2JqZWN0ICp5X29iaiA9IE5VTEw7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIkR8Tzpsb2ciLAotICAgICAgICAmeCwgJnlfb2JqKSkKKyAgICAgICAgJngsICZ5X29iaikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBjbWF0aF9sb2dfaW1wbChtb2R1bGUsIHgsIHlfb2JqKTsKIAogZXhpdDoKQEAgLTY2NSw4ICs2ODEsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2NvbXBsZXggejsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpwaGFzZSIsICZ6KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6cGhhc2UiLCAmeikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBjbWF0aF9waGFzZV9pbXBsKG1vZHVsZSwgeik7CiAKIGV4aXQ6CkBAIC02OTMsOCArNzEwLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9jb21wbGV4IHo7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6cG9sYXIiLCAmeikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOnBvbGFyIiwgJnopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gY21hdGhfcG9sYXJfaW1wbChtb2R1bGUsIHopOwogCiBleGl0OgpAQCAtNzIxLDggKzczOSw5IEBACiAgICAgZG91YmxlIHBoaTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiZGQ6cmVjdCIsCi0gICAgICAgICZyLCAmcGhpKSkKKyAgICAgICAgJnIsICZwaGkpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gY21hdGhfcmVjdF9pbXBsKG1vZHVsZSwgciwgcGhpKTsKIAogZXhpdDoKQEAgLTc0Nyw4ICs3NjYsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2NvbXBsZXggejsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDppc2Zpbml0ZSIsICZ6KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6aXNmaW5pdGUiLCAmeikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBjbWF0aF9pc2Zpbml0ZV9pbXBsKG1vZHVsZSwgeik7CiAKIGV4aXQ6CkBAIC03NzMsOCArNzkzLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9jb21wbGV4IHo7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6aXNuYW4iLCAmeikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmlzbmFuIiwgJnopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gY21hdGhfaXNuYW5faW1wbChtb2R1bGUsIHopOwogCiBleGl0OgpAQCAtNzk5LDggKzgyMCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfY29tcGxleCB6OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmlzaW5mIiwgJnopKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDppc2luZiIsICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGNtYXRoX2lzaW5mX2ltcGwobW9kdWxlLCB6KTsKIAogZXhpdDoKQEAgLTgyOSwzMiArODUxLDM1IEBACiAibm90IGNsb3NlIHRvIGFueXRoaW5nLCBldmVuIGl0c2VsZi4gaW5mIGFuZCAtaW5mIGFyZSBvbmx5IGNsb3NlIHRvIHRoZW1zZWx2ZXMuIik7CiAKICNkZWZpbmUgQ01BVEhfSVNDTE9TRV9NRVRIT0RERUYgICAgXAotICAgIHsiaXNjbG9zZSIsIChQeUNGdW5jdGlvbiljbWF0aF9pc2Nsb3NlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgY21hdGhfaXNjbG9zZV9fZG9jX199LAorICAgIHsiaXNjbG9zZSIsIChQeUNGdW5jdGlvbiljbWF0aF9pc2Nsb3NlLCBNRVRIX0ZBU1RDQUxMLCBjbWF0aF9pc2Nsb3NlX19kb2NfX30sCiAKIHN0YXRpYyBpbnQKIGNtYXRoX2lzY2xvc2VfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9jb21wbGV4IGEsIFB5X2NvbXBsZXggYiwKICAgICAgICAgICAgICAgICAgICBkb3VibGUgcmVsX3RvbCwgZG91YmxlIGFic190b2wpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotY21hdGhfaXNjbG9zZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK2NtYXRoX2lzY2xvc2UoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImEiLCAiYiIsICJyZWxfdG9sIiwgImFic190b2wiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJhIiwgImIiLCAicmVsX3RvbCIsICJhYnNfdG9sIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiRER8JGRkOmlzY2xvc2UiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5X2NvbXBsZXggYTsKICAgICBQeV9jb21wbGV4IGI7CiAgICAgZG91YmxlIHJlbF90b2wgPSAxZS0wOTsKICAgICBkb3VibGUgYWJzX3RvbCA9IDAuMDsKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIkREfCRkZDppc2Nsb3NlIiwgX2tleXdvcmRzLAotICAgICAgICAmYSwgJmIsICZyZWxfdG9sLCAmYWJzX3RvbCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZhLCAmYiwgJnJlbF90b2wsICZhYnNfdG9sKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF9pc2Nsb3NlX2ltcGwobW9kdWxlLCBhLCBiLCByZWxfdG9sLCBhYnNfdG9sKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlCb29sX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzMyMTk0MDI5YjdmYjFlNyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTc4ZjU5NzAyYjQxNjU1ZiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9mY250bG1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9mY250bG1vZHVsZS5jLmgKaW5kZXggNjc2NjBlYi4uODRhMDA0YiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvZmNudGxtb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL2ZjbnRsbW9kdWxlLmMuaApAQCAtMzMsOCArMzMsOSBAQAogICAgIFB5T2JqZWN0ICphcmcgPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJml8TzpmY250bCIsCi0gICAgICAgIGNvbnZfZGVzY3JpcHRvciwgJmZkLCAmY29kZSwgJmFyZykpCisgICAgICAgIGNvbnZfZGVzY3JpcHRvciwgJmZkLCAmY29kZSwgJmFyZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBmY250bF9mY250bF9pbXBsKG1vZHVsZSwgZmQsIGNvZGUsIGFyZyk7CiAKIGV4aXQ6CkBAIC05MSw4ICs5Miw5IEBACiAgICAgaW50IG11dGF0ZV9hcmcgPSAxOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJkl8T3A6aW9jdGwiLAotICAgICAgICBjb252X2Rlc2NyaXB0b3IsICZmZCwgJmNvZGUsICZvYl9hcmcsICZtdXRhdGVfYXJnKSkKKyAgICAgICAgY29udl9kZXNjcmlwdG9yLCAmZmQsICZjb2RlLCAmb2JfYXJnLCAmbXV0YXRlX2FyZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBmY250bF9pb2N0bF9pbXBsKG1vZHVsZSwgZmQsIGNvZGUsIG9iX2FyZywgbXV0YXRlX2FyZyk7CiAKIGV4aXQ6CkBAIC0xMjIsOCArMTI0LDkgQEAKICAgICBpbnQgY29kZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZpOmZsb2NrIiwKLSAgICAgICAgY29udl9kZXNjcmlwdG9yLCAmZmQsICZjb2RlKSkKKyAgICAgICAgY29udl9kZXNjcmlwdG9yLCAmZmQsICZjb2RlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGZjbnRsX2Zsb2NrX2ltcGwobW9kdWxlLCBmZCwgY29kZSk7CiAKIGV4aXQ6CkBAIC0xNzUsMTEgKzE3OCwxMiBAQAogICAgIGludCB3aGVuY2UgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJml8T09pOmxvY2tmIiwKLSAgICAgICAgY29udl9kZXNjcmlwdG9yLCAmZmQsICZjb2RlLCAmbGVub2JqLCAmc3RhcnRvYmosICZ3aGVuY2UpKQorICAgICAgICBjb252X2Rlc2NyaXB0b3IsICZmZCwgJmNvZGUsICZsZW5vYmosICZzdGFydG9iaiwgJndoZW5jZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBmY250bF9sb2NrZl9pbXBsKG1vZHVsZSwgZmQsIGNvZGUsIGxlbm9iaiwgc3RhcnRvYmosIHdoZW5jZSk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05N2IxMzA2Yjg2NGMwMWM4IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zNmNmZjc2YThmYjJjOWE2IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL2dycG1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9ncnBtb2R1bGUuYy5oCmluZGV4IDJjNDdhNDIuLjAyODJiNGUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL2dycG1vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvZ3JwbW9kdWxlLmMuaApAQCAtMTEsMjEgKzExLDIzIEBACiAiSWYgaWQgaXMgbm90IHZhbGlkLCByYWlzZSBLZXlFcnJvci4iKTsKIAogI2RlZmluZSBHUlBfR0VUR1JHSURfTUVUSE9EREVGICAgIFwKLSAgICB7ImdldGdyZ2lkIiwgKFB5Q0Z1bmN0aW9uKWdycF9nZXRncmdpZCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGdycF9nZXRncmdpZF9fZG9jX199LAorICAgIHsiZ2V0Z3JnaWQiLCAoUHlDRnVuY3Rpb24pZ3JwX2dldGdyZ2lkLCBNRVRIX0ZBU1RDQUxMLCBncnBfZ2V0Z3JnaWRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIGdycF9nZXRncmdpZF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICppZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ncnBfZ2V0Z3JnaWQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitncnBfZ2V0Z3JnaWQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImlkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiaWQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPOmdldGdyZ2lkIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqaWQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPOmdldGdyZ2lkIiwgX2tleXdvcmRzLAotICAgICAgICAmaWQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmaWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gZ3JwX2dldGdyZ2lkX2ltcGwobW9kdWxlLCBpZCk7CiAKIGV4aXQ6CkBAIC00MSwyMSArNDMsMjMgQEAKICJJZiBuYW1lIGlzIG5vdCB2YWxpZCwgcmFpc2UgS2V5RXJyb3IuIik7CiAKICNkZWZpbmUgR1JQX0dFVEdSTkFNX01FVEhPRERFRiAgICBcCi0gICAgeyJnZXRncm5hbSIsIChQeUNGdW5jdGlvbilncnBfZ2V0Z3JuYW0sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBncnBfZ2V0Z3JuYW1fX2RvY19ffSwKKyAgICB7ImdldGdybmFtIiwgKFB5Q0Z1bmN0aW9uKWdycF9nZXRncm5hbSwgTUVUSF9GQVNUQ0FMTCwgZ3JwX2dldGdybmFtX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBncnBfZ2V0Z3JuYW1faW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqbmFtZSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ncnBfZ2V0Z3JuYW0oUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitncnBfZ2V0Z3JuYW0oUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7Im5hbWUiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJuYW1lIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiVTpnZXRncm5hbSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKm5hbWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJVOmdldGdybmFtIiwgX2tleXdvcmRzLAotICAgICAgICAmbmFtZSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZuYW1lKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGdycF9nZXRncm5hbV9pbXBsKG1vZHVsZSwgbmFtZSk7CiAKIGV4aXQ6CkBAIC04Miw0ICs4Niw0IEBACiB7CiAgICAgcmV0dXJuIGdycF9nZXRncmFsbF9pbXBsKG1vZHVsZSk7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmVlMDlmZWVmYzU0YTJjYiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDY0MTdhZTBhNzI5OGUwZSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9tZDVtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvbWQ1bW9kdWxlLmMuaAppbmRleCAwYmQ5NThhLi5hODQxZmU1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9tZDVtb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL21kNW1vZHVsZS5jLmgKQEAgLTcyLDI0ICs3MiwyNiBAQAogIlJldHVybiBhIG5ldyBNRDUgaGFzaCBvYmplY3Q7IG9wdGlvbmFsbHkgaW5pdGlhbGl6ZWQgd2l0aCBhIHN0cmluZy4iKTsKIAogI2RlZmluZSBfTUQ1X01ENV9NRVRIT0RERUYgICAgXAotICAgIHsibWQ1IiwgKFB5Q0Z1bmN0aW9uKV9tZDVfbWQ1LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX21kNV9tZDVfX2RvY19ffSwKKyAgICB7Im1kNSIsIChQeUNGdW5jdGlvbilfbWQ1X21kNSwgTUVUSF9GQVNUQ0FMTCwgX21kNV9tZDVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9tZDVfbWQ1X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnN0cmluZyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fbWQ1X21kNShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19tZDVfbWQ1KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8TzptZDUiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpzdHJpbmcgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE86bWQ1IiwgX2tleXdvcmRzLAotICAgICAgICAmc3RyaW5nKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnN0cmluZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfbWQ1X21kNV9pbXBsKG1vZHVsZSwgc3RyaW5nKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTRjZDNjYzk2ZTM1NTYzZDIgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTU0Y2Q1MGRiMDUwZjI1ODkgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvcG9zaXhtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvcG9zaXhtb2R1bGUuYy5oCmluZGV4IGIzNTIxZDguLmY2M2EzYmUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL3Bvc2l4bW9kdWxlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9wb3NpeG1vZHVsZS5jLmgKQEAgLTI3LDIzICsyNywyNSBAQAogIiAgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuIik7CiAKICNkZWZpbmUgT1NfU1RBVF9NRVRIT0RERUYgICAgXAotICAgIHsic3RhdCIsIChQeUNGdW5jdGlvbilvc19zdGF0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3Nfc3RhdF9fZG9jX199LAorICAgIHsic3RhdCIsIChQeUNGdW5jdGlvbilvc19zdGF0LCBNRVRIX0ZBU1RDQUxMLCBvc19zdGF0X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19zdGF0X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgZGlyX2ZkLCBpbnQgZm9sbG93X3N5bWxpbmtzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3N0YXQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19zdGF0KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImRpcl9mZCIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImRpcl9mZCIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJnwkTyZwOnN0YXQiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoInN0YXQiLCAicGF0aCIsIDAsIDEpOwogICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKICAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfCRPJnA6c3RhdCIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBGU1RBVEFUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQsICZmb2xsb3dfc3ltbGlua3MpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIEZTVEFUQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCwgJmZvbGxvd19zeW1saW5rcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zdGF0X2ltcGwobW9kdWxlLCAmcGF0aCwgZGlyX2ZkLCBmb2xsb3dfc3ltbGlua3MpOwogCiBleGl0OgpAQCAtNjMsMjIgKzY1LDI0IEBACiAiRXF1aXZhbGVudCB0byBzdGF0KHBhdGgsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkuIik7CiAKICNkZWZpbmUgT1NfTFNUQVRfTUVUSE9EREVGICAgIFwKLSAgICB7ImxzdGF0IiwgKFB5Q0Z1bmN0aW9uKW9zX2xzdGF0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfbHN0YXRfX2RvY19ffSwKKyAgICB7ImxzdGF0IiwgKFB5Q0Z1bmN0aW9uKW9zX2xzdGF0LCBNRVRIX0ZBU1RDQUxMLCBvc19sc3RhdF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfbHN0YXRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBkaXJfZmQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfbHN0YXQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19sc3RhdChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImRpcl9mZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mfCRPJjpsc3RhdCIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgibHN0YXQiLCAicGF0aCIsIDAsIDApOwogICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfCRPJjpsc3RhdCIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBGU1RBVEFUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIEZTVEFUQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19sc3RhdF9pbXBsKG1vZHVsZSwgJnBhdGgsIGRpcl9mZCk7CiAKIGV4aXQ6CkBAIC0xMjEsMTcgKzEyNSwxOCBAQAogIiAgaGFzIHRoZSBzcGVjaWZpZWQgYWNjZXNzIHRvIHRoZSBwYXRoLiIpOwogCiAjZGVmaW5lIE9TX0FDQ0VTU19NRVRIT0RERUYgICAgXAotICAgIHsiYWNjZXNzIiwgKFB5Q0Z1bmN0aW9uKW9zX2FjY2VzcywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2FjY2Vzc19fZG9jX199LAorICAgIHsiYWNjZXNzIiwgKFB5Q0Z1bmN0aW9uKW9zX2FjY2VzcywgTUVUSF9GQVNUQ0FMTCwgb3NfYWNjZXNzX19kb2NfX30sCiAKIHN0YXRpYyBpbnQKIG9zX2FjY2Vzc19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IG1vZGUsIGludCBkaXJfZmQsCiAgICAgICAgICAgICAgICBpbnQgZWZmZWN0aXZlX2lkcywgaW50IGZvbGxvd19zeW1saW5rcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19hY2Nlc3MoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19hY2Nlc3MoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAibW9kZSIsICJkaXJfZmQiLCAiZWZmZWN0aXZlX2lkcyIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCAiZGlyX2ZkIiwgImVmZmVjdGl2ZV9pZHMiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZpfCRPJnBwOmFjY2VzcyIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgiYWNjZXNzIiwgInBhdGgiLCAwLCAwKTsKICAgICBpbnQgbW9kZTsKICAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CkBAIC0xMzksMTIgKzE0NCwxNCBAQAogICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOwogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZpfCRPJnBwOmFjY2VzcyIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmbW9kZSwgRkFDQ0VTU0FUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQsICZlZmZlY3RpdmVfaWRzLCAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmbW9kZSwgRkFDQ0VTU0FUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQsICZlZmZlY3RpdmVfaWRzLCAmZm9sbG93X3N5bWxpbmtzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19hY2Nlc3NfaW1wbChtb2R1bGUsICZwYXRoLCBtb2RlLCBkaXJfZmQsIGVmZmVjdGl2ZV9pZHMsIGZvbGxvd19zeW1saW5rcyk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5Qm9vbF9Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTE3OCwxMSArMTg1LDEzIEBACiAgICAgaW50IGZkOwogICAgIGNoYXIgKl9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6dHR5bmFtZSIsICZmZCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOnR0eW5hbWUiLCAmZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX3R0eW5hbWVfaW1wbChtb2R1bGUsIGZkKTsKLSAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKQorICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMjI0LDIxICsyMzMsMjMgQEAKICIgIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi4iKTsKIAogI2RlZmluZSBPU19DSERJUl9NRVRIT0RERUYgICAgXAotICAgIHsiY2hkaXIiLCAoUHlDRnVuY3Rpb24pb3NfY2hkaXIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19jaGRpcl9fZG9jX199LAorICAgIHsiY2hkaXIiLCAoUHlDRnVuY3Rpb24pb3NfY2hkaXIsIE1FVEhfRkFTVENBTEwsIG9zX2NoZGlyX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19jaGRpcl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19jaGRpcihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2NoZGlyKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mOmNoZGlyIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJjaGRpciIsICJwYXRoIiwgMCwgUEFUSF9IQVZFX0ZDSERJUik7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJjpjaGRpciIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2NoZGlyX2ltcGwobW9kdWxlLCAmcGF0aCk7CiAKIGV4aXQ6CkBAIC0yNjAsMjEgKzI3MSwyMyBAQAogIkVxdWl2YWxlbnQgdG8gb3MuY2hkaXIoZmQpLiIpOwogCiAjZGVmaW5lIE9TX0ZDSERJUl9NRVRIT0RERUYgICAgXAotICAgIHsiZmNoZGlyIiwgKFB5Q0Z1bmN0aW9uKW9zX2ZjaGRpciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2ZjaGRpcl9fZG9jX199LAorICAgIHsiZmNoZGlyIiwgKFB5Q0Z1bmN0aW9uKW9zX2ZjaGRpciwgTUVUSF9GQVNUQ0FMTCwgb3NfZmNoZGlyX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19mY2hkaXJfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgZmQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfZmNoZGlyKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfZmNoZGlyKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJmZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImZkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyY6ZmNoZGlyIiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgZmQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJjpmY2hkaXIiLCBfa2V5d29yZHMsCi0gICAgICAgIGZpbGRlc19jb252ZXJ0ZXIsICZmZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIGZpbGRlc19jb252ZXJ0ZXIsICZmZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19mY2hkaXJfaW1wbChtb2R1bGUsIGZkKTsKIAogZXhpdDoKQEAgLTMxMCwyNSArMzIzLDI3IEBACiAiICBJZiB0aGV5IGFyZSB1bmF2YWlsYWJsZSwgdXNpbmcgdGhlbSB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKIAogI2RlZmluZSBPU19DSE1PRF9NRVRIT0RERUYgICAgXAotICAgIHsiY2htb2QiLCAoUHlDRnVuY3Rpb24pb3NfY2htb2QsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19jaG1vZF9fZG9jX199LAorICAgIHsiY2htb2QiLCAoUHlDRnVuY3Rpb24pb3NfY2htb2QsIE1FVEhfRkFTVENBTEwsIG9zX2NobW9kX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19jaG1vZF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IG1vZGUsIGludCBkaXJfZmQsCiAgICAgICAgICAgICAgIGludCBmb2xsb3dfc3ltbGlua3MpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfY2htb2QoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19jaG1vZChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgImRpcl9mZCIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCAiZGlyX2ZkIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8maXwkTyZwOmNobW9kIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJjaG1vZCIsICJwYXRoIiwgMCwgUEFUSF9IQVZFX0ZDSE1PRCk7CiAgICAgaW50IG1vZGU7CiAgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZpfCRPJnA6Y2htb2QiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJm1vZGUsIEZDSE1PREFUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQsICZmb2xsb3dfc3ltbGlua3MpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZtb2RlLCBGQ0hNT0RBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkLCAmZm9sbG93X3N5bWxpbmtzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2NobW9kX2ltcGwobW9kdWxlLCAmcGF0aCwgbW9kZSwgZGlyX2ZkLCBmb2xsb3dfc3ltbGlua3MpOwogCiBleGl0OgpAQCAtMzQ5LDIyICszNjQsMjQgQEAKICJFcXVpdmFsZW50IHRvIG9zLmNobW9kKGZkLCBtb2RlKS4iKTsKIAogI2RlZmluZSBPU19GQ0hNT0RfTUVUSE9EREVGICAgIFwKLSAgICB7ImZjaG1vZCIsIChQeUNGdW5jdGlvbilvc19mY2htb2QsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19mY2htb2RfX2RvY19ffSwKKyAgICB7ImZjaG1vZCIsIChQeUNGdW5jdGlvbilvc19mY2htb2QsIE1FVEhfRkFTVENBTEwsIG9zX2ZjaG1vZF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfZmNobW9kX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IGZkLCBpbnQgbW9kZSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19mY2htb2QoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19mY2htb2QoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImZkIiwgIm1vZGUiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJmZCIsICJtb2RlIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiaWk6ZmNobW9kIiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgZmQ7CiAgICAgaW50IG1vZGU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpaTpmY2htb2QiLCBfa2V5d29yZHMsCi0gICAgICAgICZmZCwgJm1vZGUpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZmQsICZtb2RlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2ZjaG1vZF9pbXBsKG1vZHVsZSwgZmQsIG1vZGUpOwogCiBleGl0OgpAQCAtMzg1LDIyICs0MDIsMjQgQEAKICJFcXVpdmFsZW50IHRvIGNobW9kKHBhdGgsIG1vZGUsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkuXCIiKTsKIAogI2RlZmluZSBPU19MQ0hNT0RfTUVUSE9EREVGICAgIFwKLSAgICB7ImxjaG1vZCIsIChQeUNGdW5jdGlvbilvc19sY2htb2QsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19sY2htb2RfX2RvY19ffSwKKyAgICB7ImxjaG1vZCIsIChQeUNGdW5jdGlvbilvc19sY2htb2QsIE1FVEhfRkFTVENBTEwsIG9zX2xjaG1vZF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfbGNobW9kX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgbW9kZSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19sY2htb2QoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19sY2htb2QoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAibW9kZSIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAibW9kZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8maTpsY2htb2QiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImxjaG1vZCIsICJwYXRoIiwgMCwgMCk7CiAgICAgaW50IG1vZGU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJmk6bGNobW9kIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZtb2RlKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmbW9kZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19sY2htb2RfaW1wbChtb2R1bGUsICZwYXRoLCBtb2RlKTsKIAogZXhpdDoKQEAgLTQyNywyNCArNDQ2LDI2IEBACiAidW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiAjZGVmaW5lIE9TX0NIRkxBR1NfTUVUSE9EREVGICAgIFwKLSAgICB7ImNoZmxhZ3MiLCAoUHlDRnVuY3Rpb24pb3NfY2hmbGFncywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2NoZmxhZ3NfX2RvY19ffSwKKyAgICB7ImNoZmxhZ3MiLCAoUHlDRnVuY3Rpb24pb3NfY2hmbGFncywgTUVUSF9GQVNUQ0FMTCwgb3NfY2hmbGFnc19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfY2hmbGFnc19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgdW5zaWduZWQgbG9uZyBmbGFncywKICAgICAgICAgICAgICAgICBpbnQgZm9sbG93X3N5bWxpbmtzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2NoZmxhZ3MoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19jaGZsYWdzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImZsYWdzIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZmxhZ3MiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZrfHA6Y2hmbGFncyIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgiY2hmbGFncyIsICJwYXRoIiwgMCwgMCk7CiAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8ma3xwOmNoZmxhZ3MiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJmZsYWdzLCAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmZmxhZ3MsICZmb2xsb3dfc3ltbGlua3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfY2hmbGFnc19pbXBsKG1vZHVsZSwgJnBhdGgsIGZsYWdzLCBmb2xsb3dfc3ltbGlua3MpOwogCiBleGl0OgpAQCAtNDY4LDIyICs0ODksMjQgQEAKICJFcXVpdmFsZW50IHRvIGNoZmxhZ3MocGF0aCwgZmxhZ3MsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkuIik7CiAKICNkZWZpbmUgT1NfTENIRkxBR1NfTUVUSE9EREVGICAgIFwKLSAgICB7ImxjaGZsYWdzIiwgKFB5Q0Z1bmN0aW9uKW9zX2xjaGZsYWdzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfbGNoZmxhZ3NfX2RvY19ffSwKKyAgICB7ImxjaGZsYWdzIiwgKFB5Q0Z1bmN0aW9uKW9zX2xjaGZsYWdzLCBNRVRIX0ZBU1RDQUxMLCBvc19sY2hmbGFnc19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfbGNoZmxhZ3NfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfbGNoZmxhZ3MoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19sY2hmbGFncyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJmbGFncyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZmxhZ3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJms6bGNoZmxhZ3MiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImxjaGZsYWdzIiwgInBhdGgiLCAwLCAwKTsKICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZrOmxjaGZsYWdzIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZmbGFncykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJmZsYWdzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2xjaGZsYWdzX2ltcGwobW9kdWxlLCAmcGF0aCwgZmxhZ3MpOwogCiBleGl0OgpAQCAtNTA0LDIxICs1MjcsMjMgQEAKICJDaGFuZ2Ugcm9vdCBkaXJlY3RvcnkgdG8gcGF0aC4iKTsKIAogI2RlZmluZSBPU19DSFJPT1RfTUVUSE9EREVGICAgIFwKLSAgICB7ImNocm9vdCIsIChQeUNGdW5jdGlvbilvc19jaHJvb3QsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19jaHJvb3RfX2RvY19ffSwKKyAgICB7ImNocm9vdCIsIChQeUNGdW5jdGlvbilvc19jaHJvb3QsIE1FVEhfRkFTVENBTEwsIG9zX2Nocm9vdF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfY2hyb290X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2Nocm9vdChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2Nocm9vdChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJjpjaHJvb3QiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImNocm9vdCIsICJwYXRoIiwgMCwgMCk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJjpjaHJvb3QiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19jaHJvb3RfaW1wbChtb2R1bGUsICZwYXRoKTsKIAogZXhpdDoKQEAgLTUzOSwyMSArNTY0LDIzIEBACiAiRm9yY2Ugd3JpdGUgb2YgZmQgdG8gZGlzay4iKTsKIAogI2RlZmluZSBPU19GU1lOQ19NRVRIT0RERUYgICAgXAotICAgIHsiZnN5bmMiLCAoUHlDRnVuY3Rpb24pb3NfZnN5bmMsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19mc3luY19fZG9jX199LAorICAgIHsiZnN5bmMiLCAoUHlDRnVuY3Rpb24pb3NfZnN5bmMsIE1FVEhfRkFTVENBTEwsIG9zX2ZzeW5jX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19mc3luY19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBmZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19mc3luYyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2ZzeW5jKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJmZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImZkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyY6ZnN5bmMiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBmZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mOmZzeW5jIiwgX2tleXdvcmRzLAotICAgICAgICBmaWxkZXNfY29udmVydGVyLCAmZmQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBmaWxkZXNfY29udmVydGVyLCAmZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfZnN5bmNfaW1wbChtb2R1bGUsIGZkKTsKIAogZXhpdDoKQEAgLTU5MywyMSArNjIwLDIzIEBACiAiRm9yY2Ugd3JpdGUgb2YgZmQgdG8gZGlzayB3aXRob3V0IGZvcmNpbmcgdXBkYXRlIG9mIG1ldGFkYXRhLiIpOwogCiAjZGVmaW5lIE9TX0ZEQVRBU1lOQ19NRVRIT0RERUYgICAgXAotICAgIHsiZmRhdGFzeW5jIiwgKFB5Q0Z1bmN0aW9uKW9zX2ZkYXRhc3luYywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2ZkYXRhc3luY19fZG9jX199LAorICAgIHsiZmRhdGFzeW5jIiwgKFB5Q0Z1bmN0aW9uKW9zX2ZkYXRhc3luYywgTUVUSF9GQVNUQ0FMTCwgb3NfZmRhdGFzeW5jX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19mZGF0YXN5bmNfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgZmQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfZmRhdGFzeW5jKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfZmRhdGFzeW5jKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJmZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImZkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyY6ZmRhdGFzeW5jIiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgZmQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJjpmZGF0YXN5bmMiLCBfa2V5d29yZHMsCi0gICAgICAgIGZpbGRlc19jb252ZXJ0ZXIsICZmZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIGZpbGRlc19jb252ZXJ0ZXIsICZmZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19mZGF0YXN5bmNfaW1wbChtb2R1bGUsIGZkKTsKIAogZXhpdDoKQEAgLTY0OSwyNiArNjc4LDI4IEBACiAiICBJZiB0aGV5IGFyZSB1bmF2YWlsYWJsZSwgdXNpbmcgdGhlbSB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKIAogI2RlZmluZSBPU19DSE9XTl9NRVRIT0RERUYgICAgXAotICAgIHsiY2hvd24iLCAoUHlDRnVuY3Rpb24pb3NfY2hvd24sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19jaG93bl9fZG9jX199LAorICAgIHsiY2hvd24iLCAoUHlDRnVuY3Rpb24pb3NfY2hvd24sIE1FVEhfRkFTVENBTEwsIG9zX2Nob3duX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19jaG93bl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgdWlkX3QgdWlkLCBnaWRfdCBnaWQsCiAgICAgICAgICAgICAgIGludCBkaXJfZmQsIGludCBmb2xsb3dfc3ltbGlua3MpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfY2hvd24oUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19jaG93bihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJ1aWQiLCAiZ2lkIiwgImRpcl9mZCIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgInVpZCIsICJnaWQiLCAiZGlyX2ZkIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mTyZPJnwkTyZwOmNob3duIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJjaG93biIsICJwYXRoIiwgMCwgUEFUSF9IQVZFX0ZDSE9XTik7CiAgICAgdWlkX3QgdWlkOwogICAgIGdpZF90IGdpZDsKICAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CiAgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8mTyZ8JE8mcDpjaG93biIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBfUHlfVWlkX0NvbnZlcnRlciwgJnVpZCwgX1B5X0dpZF9Db252ZXJ0ZXIsICZnaWQsIEZDSE9XTkFUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQsICZmb2xsb3dfc3ltbGlua3MpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIF9QeV9VaWRfQ29udmVydGVyLCAmdWlkLCBfUHlfR2lkX0NvbnZlcnRlciwgJmdpZCwgRkNIT1dOQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCwgJmZvbGxvd19zeW1saW5rcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19jaG93bl9pbXBsKG1vZHVsZSwgJnBhdGgsIHVpZCwgZ2lkLCBkaXJfZmQsIGZvbGxvd19zeW1saW5rcyk7CiAKIGV4aXQ6CkBAIC02OTEsMjMgKzcyMiwyNSBAQAogIkVxdWl2YWxlbnQgdG8gb3MuY2hvd24oZmQsIHVpZCwgZ2lkKS4iKTsKIAogI2RlZmluZSBPU19GQ0hPV05fTUVUSE9EREVGICAgIFwKLSAgICB7ImZjaG93biIsIChQeUNGdW5jdGlvbilvc19mY2hvd24sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19mY2hvd25fX2RvY19ffSwKKyAgICB7ImZjaG93biIsIChQeUNGdW5jdGlvbilvc19mY2hvd24sIE1FVEhfRkFTVENBTEwsIG9zX2ZjaG93bl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfZmNob3duX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IGZkLCB1aWRfdCB1aWQsIGdpZF90IGdpZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19mY2hvd24oUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19mY2hvd24oUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImZkIiwgInVpZCIsICJnaWQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJmZCIsICJ1aWQiLCAiZ2lkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiaU8mTyY6ZmNob3duIiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgZmQ7CiAgICAgdWlkX3QgdWlkOwogICAgIGdpZF90IGdpZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImlPJk8mOmZjaG93biIsIF9rZXl3b3JkcywKLSAgICAgICAgJmZkLCBfUHlfVWlkX0NvbnZlcnRlciwgJnVpZCwgX1B5X0dpZF9Db252ZXJ0ZXIsICZnaWQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZmQsIF9QeV9VaWRfQ29udmVydGVyLCAmdWlkLCBfUHlfR2lkX0NvbnZlcnRlciwgJmdpZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19mY2hvd25faW1wbChtb2R1bGUsIGZkLCB1aWQsIGdpZCk7CiAKIGV4aXQ6CkBAIC03MjgsMjMgKzc2MSwyNSBAQAogIkVxdWl2YWxlbnQgdG8gb3MuY2hvd24ocGF0aCwgdWlkLCBnaWQsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkuIik7CiAKICNkZWZpbmUgT1NfTENIT1dOX01FVEhPRERFRiAgICBcCi0gICAgeyJsY2hvd24iLCAoUHlDRnVuY3Rpb24pb3NfbGNob3duLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfbGNob3duX19kb2NfX30sCisgICAgeyJsY2hvd24iLCAoUHlDRnVuY3Rpb24pb3NfbGNob3duLCBNRVRIX0ZBU1RDQUxMLCBvc19sY2hvd25fX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2xjaG93bl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgdWlkX3QgdWlkLCBnaWRfdCBnaWQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfbGNob3duKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfbGNob3duKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgInVpZCIsICJnaWQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgInVpZCIsICJnaWQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJk8mTyY6bGNob3duIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJsY2hvd24iLCAicGF0aCIsIDAsIDApOwogICAgIHVpZF90IHVpZDsKICAgICBnaWRfdCBnaWQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8mTyY6bGNob3duIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIF9QeV9VaWRfQ29udmVydGVyLCAmdWlkLCBfUHlfR2lkX0NvbnZlcnRlciwgJmdpZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgX1B5X1VpZF9Db252ZXJ0ZXIsICZ1aWQsIF9QeV9HaWRfQ29udmVydGVyLCAmZ2lkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2xjaG93bl9pbXBsKG1vZHVsZSwgJnBhdGgsIHVpZCwgZ2lkKTsKIAogZXhpdDoKQEAgLTgxMiwyNiArODQ3LDI4IEBACiAiICBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiAjZGVmaW5lIE9TX0xJTktfTUVUSE9EREVGICAgIFwKLSAgICB7ImxpbmsiLCAoUHlDRnVuY3Rpb24pb3NfbGluaywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2xpbmtfX2RvY19ffSwKKyAgICB7ImxpbmsiLCAoUHlDRnVuY3Rpb24pb3NfbGluaywgTUVUSF9GQVNUQ0FMTCwgb3NfbGlua19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfbGlua19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqc3JjLCBwYXRoX3QgKmRzdCwgaW50IHNyY19kaXJfZmQsCiAgICAgICAgICAgICAgaW50IGRzdF9kaXJfZmQsIGludCBmb2xsb3dfc3ltbGlua3MpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfbGluayhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2xpbmsoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InNyYyIsICJkc3QiLCAic3JjX2Rpcl9mZCIsICJkc3RfZGlyX2ZkIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InNyYyIsICJkc3QiLCAic3JjX2Rpcl9mZCIsICJkc3RfZGlyX2ZkIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mTyZ8JE8mTyZwOmxpbmsiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBzcmMgPSBQQVRIX1RfSU5JVElBTElaRSgibGluayIsICJzcmMiLCAwLCAwKTsKICAgICBwYXRoX3QgZHN0ID0gUEFUSF9UX0lOSVRJQUxJWkUoImxpbmsiLCAiZHN0IiwgMCwgMCk7CiAgICAgaW50IHNyY19kaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKICAgICBpbnQgZHN0X2Rpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJnwkTyZPJnA6bGluayIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZzcmMsIHBhdGhfY29udmVydGVyLCAmZHN0LCBkaXJfZmRfY29udmVydGVyLCAmc3JjX2Rpcl9mZCwgZGlyX2ZkX2NvbnZlcnRlciwgJmRzdF9kaXJfZmQsICZmb2xsb3dfc3ltbGlua3MpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnNyYywgcGF0aF9jb252ZXJ0ZXIsICZkc3QsIGRpcl9mZF9jb252ZXJ0ZXIsICZzcmNfZGlyX2ZkLCBkaXJfZmRfY29udmVydGVyLCAmZHN0X2Rpcl9mZCwgJmZvbGxvd19zeW1saW5rcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19saW5rX2ltcGwobW9kdWxlLCAmc3JjLCAmZHN0LCBzcmNfZGlyX2ZkLCBkc3RfZGlyX2ZkLCBmb2xsb3dfc3ltbGlua3MpOwogCiBleGl0OgpAQCAtODYzLDIxICs5MDAsMjMgQEAKICJlbnRyaWVzIFwnLlwnIGFuZCBcJy4uXCcgZXZlbiBpZiB0aGV5IGFyZSBwcmVzZW50IGluIHRoZSBkaXJlY3RvcnkuIik7CiAKICNkZWZpbmUgT1NfTElTVERJUl9NRVRIT0RERUYgICAgXAotICAgIHsibGlzdGRpciIsIChQeUNGdW5jdGlvbilvc19saXN0ZGlyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfbGlzdGRpcl9fZG9jX199LAorICAgIHsibGlzdGRpciIsIChQeUNGdW5jdGlvbilvc19saXN0ZGlyLCBNRVRIX0ZBU1RDQUxMLCBvc19saXN0ZGlyX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19saXN0ZGlyX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2xpc3RkaXIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19saXN0ZGlyKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPJjpsaXN0ZGlyIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJsaXN0ZGlyIiwgInBhdGgiLCAxLCBQQVRIX0hBVkVfRkRPUEVORElSKTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPJjpsaXN0ZGlyIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfbGlzdGRpcl9pbXBsKG1vZHVsZSwgJnBhdGgpOwogCiBleGl0OgpAQCAtOTA2LDggKzk0NSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgiX2dldGZ1bGxwYXRobmFtZSIsICJwYXRoIiwgMCwgMCk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOl9nZXRmdWxscGF0aG5hbWUiLCBwYXRoX2NvbnZlcnRlciwgJnBhdGgpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6X2dldGZ1bGxwYXRobmFtZSIsIHBhdGhfY29udmVydGVyLCAmcGF0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19fZ2V0ZnVsbHBhdGhuYW1lX2ltcGwobW9kdWxlLCAmcGF0aCk7CiAKIGV4aXQ6CkBAIC05MzksOCArOTc5LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeU9iamVjdCAqcGF0aDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTpfZ2V0ZmluYWxwYXRobmFtZSIsICZwYXRoKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6X2dldGZpbmFscGF0aG5hbWUiLCAmcGF0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19fZ2V0ZmluYWxwYXRobmFtZV9pbXBsKG1vZHVsZSwgcGF0aCk7CiAKIGV4aXQ6CkBAIC05NjksOCArMTAxMCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgiX2lzZGlyIiwgInBhdGgiLCAwLCAwKTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6X2lzZGlyIiwgcGF0aF9jb252ZXJ0ZXIsICZwYXRoKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOl9pc2RpciIsIHBhdGhfY29udmVydGVyLCAmcGF0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19faXNkaXJfaW1wbChtb2R1bGUsICZwYXRoKTsKIAogZXhpdDoKQEAgLTk5MSwyMSArMTAzMywyMyBAQAogIkEgaGVscGVyIGZ1bmN0aW9uIGZvciBpc21vdW50IG9uIFdpbjMyLiIpOwogCiAjZGVmaW5lIE9TX19HRVRWT0xVTUVQQVRITkFNRV9NRVRIT0RERUYgICAgXAotICAgIHsiX2dldHZvbHVtZXBhdGhuYW1lIiwgKFB5Q0Z1bmN0aW9uKW9zX19nZXR2b2x1bWVwYXRobmFtZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX19nZXR2b2x1bWVwYXRobmFtZV9fZG9jX199LAorICAgIHsiX2dldHZvbHVtZXBhdGhuYW1lIiwgKFB5Q0Z1bmN0aW9uKW9zX19nZXR2b2x1bWVwYXRobmFtZSwgTUVUSF9GQVNUQ0FMTCwgb3NfX2dldHZvbHVtZXBhdGhuYW1lX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19fZ2V0dm9sdW1lcGF0aG5hbWVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqcGF0aCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19fZ2V0dm9sdW1lcGF0aG5hbWUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19fZ2V0dm9sdW1lcGF0aG5hbWUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiVTpfZ2V0dm9sdW1lcGF0aG5hbWUiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpwYXRoOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiVTpfZ2V0dm9sdW1lcGF0aG5hbWUiLCBfa2V5d29yZHMsCi0gICAgICAgICZwYXRoKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnBhdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfX2dldHZvbHVtZXBhdGhuYW1lX2ltcGwobW9kdWxlLCBwYXRoKTsKIAogZXhpdDoKQEAgLTEwMjgsMjMgKzEwNzIsMjUgQEAKICJUaGUgbW9kZSBhcmd1bWVudCBpcyBpZ25vcmVkIG9uIFdpbmRvd3MuIik7CiAKICNkZWZpbmUgT1NfTUtESVJfTUVUSE9EREVGICAgIFwKLSAgICB7Im1rZGlyIiwgKFB5Q0Z1bmN0aW9uKW9zX21rZGlyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfbWtkaXJfX2RvY19ffSwKKyAgICB7Im1rZGlyIiwgKFB5Q0Z1bmN0aW9uKW9zX21rZGlyLCBNRVRIX0ZBU1RDQUxMLCBvc19ta2Rpcl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfbWtkaXJfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBtb2RlLCBpbnQgZGlyX2ZkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX21rZGlyKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfbWtkaXIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAibW9kZSIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZ8aSRPJjpta2RpciIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgibWtkaXIiLCAicGF0aCIsIDAsIDApOwogICAgIGludCBtb2RlID0gNTExOwogICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfGkkTyY6bWtkaXIiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJm1vZGUsIE1LRElSQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJm1vZGUsIE1LRElSQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19ta2Rpcl9pbXBsKG1vZHVsZSwgJnBhdGgsIG1vZGUsIGRpcl9mZCk7CiAKIGV4aXQ6CkBAIC0xMDc0LDggKzExMjAsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBpbmNyZW1lbnQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6bmljZSIsICZpbmNyZW1lbnQpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpuaWNlIiwgJmluY3JlbWVudCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19uaWNlX2ltcGwobW9kdWxlLCBpbmNyZW1lbnQpOwogCiBleGl0OgpAQCAtMTA5MywyMiArMTE0MCwyNCBAQAogIlJldHVybiBwcm9ncmFtIHNjaGVkdWxpbmcgcHJpb3JpdHkuIik7CiAKICNkZWZpbmUgT1NfR0VUUFJJT1JJVFlfTUVUSE9EREVGICAgIFwKLSAgICB7ImdldHByaW9yaXR5IiwgKFB5Q0Z1bmN0aW9uKW9zX2dldHByaW9yaXR5LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfZ2V0cHJpb3JpdHlfX2RvY19ffSwKKyAgICB7ImdldHByaW9yaXR5IiwgKFB5Q0Z1bmN0aW9uKW9zX2dldHByaW9yaXR5LCBNRVRIX0ZBU1RDQUxMLCBvc19nZXRwcmlvcml0eV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfZ2V0cHJpb3JpdHlfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgd2hpY2gsIGludCB3aG8pOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfZ2V0cHJpb3JpdHkoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19nZXRwcmlvcml0eShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsid2hpY2giLCAid2hvIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsid2hpY2giLCAid2hvIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiaWk6Z2V0cHJpb3JpdHkiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCB3aGljaDsKICAgICBpbnQgd2hvOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaWk6Z2V0cHJpb3JpdHkiLCBfa2V5d29yZHMsCi0gICAgICAgICZ3aGljaCwgJndobykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZ3aGljaCwgJndobykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19nZXRwcmlvcml0eV9pbXBsKG1vZHVsZSwgd2hpY2gsIHdobyk7CiAKIGV4aXQ6CkBAIC0xMTI2LDIzICsxMTc1LDI1IEBACiAiU2V0IHByb2dyYW0gc2NoZWR1bGluZyBwcmlvcml0eS4iKTsKIAogI2RlZmluZSBPU19TRVRQUklPUklUWV9NRVRIT0RERUYgICAgXAotICAgIHsic2V0cHJpb3JpdHkiLCAoUHlDRnVuY3Rpb24pb3Nfc2V0cHJpb3JpdHksIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19zZXRwcmlvcml0eV9fZG9jX199LAorICAgIHsic2V0cHJpb3JpdHkiLCAoUHlDRnVuY3Rpb24pb3Nfc2V0cHJpb3JpdHksIE1FVEhfRkFTVENBTEwsIG9zX3NldHByaW9yaXR5X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19zZXRwcmlvcml0eV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCB3aGljaCwgaW50IHdobywgaW50IHByaW9yaXR5KTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3NldHByaW9yaXR5KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3Nfc2V0cHJpb3JpdHkoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7IndoaWNoIiwgIndobyIsICJwcmlvcml0eSIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7IndoaWNoIiwgIndobyIsICJwcmlvcml0eSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7ImlpaTpzZXRwcmlvcml0eSIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IHdoaWNoOwogICAgIGludCB3aG87CiAgICAgaW50IHByaW9yaXR5OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaWlpOnNldHByaW9yaXR5IiwgX2tleXdvcmRzLAotICAgICAgICAmd2hpY2gsICZ3aG8sICZwcmlvcml0eSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZ3aGljaCwgJndobywgJnByaW9yaXR5KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3NldHByaW9yaXR5X2ltcGwobW9kdWxlLCB3aGljaCwgd2hvLCBwcmlvcml0eSk7CiAKIGV4aXQ6CkBAIC0xMTY0LDI1ICsxMjE1LDI3IEBACiAiICBJZiB0aGV5IGFyZSB1bmF2YWlsYWJsZSwgdXNpbmcgdGhlbSB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKIAogI2RlZmluZSBPU19SRU5BTUVfTUVUSE9EREVGICAgIFwKLSAgICB7InJlbmFtZSIsIChQeUNGdW5jdGlvbilvc19yZW5hbWUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19yZW5hbWVfX2RvY19ffSwKKyAgICB7InJlbmFtZSIsIChQeUNGdW5jdGlvbilvc19yZW5hbWUsIE1FVEhfRkFTVENBTEwsIG9zX3JlbmFtZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfcmVuYW1lX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpzcmMsIHBhdGhfdCAqZHN0LCBpbnQgc3JjX2Rpcl9mZCwKICAgICAgICAgICAgICAgIGludCBkc3RfZGlyX2ZkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3JlbmFtZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3JlbmFtZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3JjIiwgImRzdCIsICJzcmNfZGlyX2ZkIiwgImRzdF9kaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzcmMiLCAiZHN0IiwgInNyY19kaXJfZmQiLCAiZHN0X2Rpcl9mZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mTyZ8JE8mTyY6cmVuYW1lIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3Qgc3JjID0gUEFUSF9UX0lOSVRJQUxJWkUoInJlbmFtZSIsICJzcmMiLCAwLCAwKTsKICAgICBwYXRoX3QgZHN0ID0gUEFUSF9UX0lOSVRJQUxJWkUoInJlbmFtZSIsICJkc3QiLCAwLCAwKTsKICAgICBpbnQgc3JjX2Rpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogICAgIGludCBkc3RfZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8mfCRPJk8mOnJlbmFtZSIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZzcmMsIHBhdGhfY29udmVydGVyLCAmZHN0LCBkaXJfZmRfY29udmVydGVyLCAmc3JjX2Rpcl9mZCwgZGlyX2ZkX2NvbnZlcnRlciwgJmRzdF9kaXJfZmQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnNyYywgcGF0aF9jb252ZXJ0ZXIsICZkc3QsIGRpcl9mZF9jb252ZXJ0ZXIsICZzcmNfZGlyX2ZkLCBkaXJfZmRfY29udmVydGVyLCAmZHN0X2Rpcl9mZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19yZW5hbWVfaW1wbChtb2R1bGUsICZzcmMsICZkc3QsIHNyY19kaXJfZmQsIGRzdF9kaXJfZmQpOwogCiBleGl0OgpAQCAtMTIwNywyNSArMTI2MCwyNyBAQAogIiAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuXCIiKTsKIAogI2RlZmluZSBPU19SRVBMQUNFX01FVEhPRERFRiAgICBcCi0gICAgeyJyZXBsYWNlIiwgKFB5Q0Z1bmN0aW9uKW9zX3JlcGxhY2UsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19yZXBsYWNlX19kb2NfX30sCisgICAgeyJyZXBsYWNlIiwgKFB5Q0Z1bmN0aW9uKW9zX3JlcGxhY2UsIE1FVEhfRkFTVENBTEwsIG9zX3JlcGxhY2VfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX3JlcGxhY2VfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnNyYywgcGF0aF90ICpkc3QsIGludCBzcmNfZGlyX2ZkLAogICAgICAgICAgICAgICAgIGludCBkc3RfZGlyX2ZkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3JlcGxhY2UoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19yZXBsYWNlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzcmMiLCAiZHN0IiwgInNyY19kaXJfZmQiLCAiZHN0X2Rpcl9mZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InNyYyIsICJkc3QiLCAic3JjX2Rpcl9mZCIsICJkc3RfZGlyX2ZkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZPJnwkTyZPJjpyZXBsYWNlIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3Qgc3JjID0gUEFUSF9UX0lOSVRJQUxJWkUoInJlcGxhY2UiLCAic3JjIiwgMCwgMCk7CiAgICAgcGF0aF90IGRzdCA9IFBBVEhfVF9JTklUSUFMSVpFKCJyZXBsYWNlIiwgImRzdCIsIDAsIDApOwogICAgIGludCBzcmNfZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CiAgICAgaW50IGRzdF9kaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZ8JE8mTyY6cmVwbGFjZSIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZzcmMsIHBhdGhfY29udmVydGVyLCAmZHN0LCBkaXJfZmRfY29udmVydGVyLCAmc3JjX2Rpcl9mZCwgZGlyX2ZkX2NvbnZlcnRlciwgJmRzdF9kaXJfZmQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnNyYywgcGF0aF9jb252ZXJ0ZXIsICZkc3QsIGRpcl9mZF9jb252ZXJ0ZXIsICZzcmNfZGlyX2ZkLCBkaXJfZmRfY29udmVydGVyLCAmZHN0X2Rpcl9mZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19yZXBsYWNlX2ltcGwobW9kdWxlLCAmc3JjLCAmZHN0LCBzcmNfZGlyX2ZkLCBkc3RfZGlyX2ZkKTsKIAogZXhpdDoKQEAgLTEyNDksMjIgKzEzMDQsMjQgQEAKICIgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKIAogI2RlZmluZSBPU19STURJUl9NRVRIT0RERUYgICAgXAotICAgIHsicm1kaXIiLCAoUHlDRnVuY3Rpb24pb3Nfcm1kaXIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19ybWRpcl9fZG9jX199LAorICAgIHsicm1kaXIiLCAoUHlDRnVuY3Rpb24pb3Nfcm1kaXIsIE1FVEhfRkFTVENBTEwsIG9zX3JtZGlyX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19ybWRpcl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IGRpcl9mZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19ybWRpcihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3JtZGlyKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImRpcl9mZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZ8JE8mOnJtZGlyIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJybWRpciIsICJwYXRoIiwgMCwgMCk7CiAgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8JE8mOnJtZGlyIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIFVOTElOS0FUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIFVOTElOS0FUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfcm1kaXJfaW1wbChtb2R1bGUsICZwYXRoLCBkaXJfZmQpOwogCiBleGl0OgpAQCAtMTI4MywyNSArMTM0MCwyOCBAQAogIkV4ZWN1dGUgdGhlIGNvbW1hbmQgaW4gYSBzdWJzaGVsbC4iKTsKIAogI2RlZmluZSBPU19TWVNURU1fTUVUSE9EREVGICAgIFwKLSAgICB7InN5c3RlbSIsIChQeUNGdW5jdGlvbilvc19zeXN0ZW0sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19zeXN0ZW1fX2RvY19ffSwKKyAgICB7InN5c3RlbSIsIChQeUNGdW5jdGlvbilvc19zeXN0ZW0sIE1FVEhfRkFTVENBTEwsIG9zX3N5c3RlbV9fZG9jX199LAogCiBzdGF0aWMgbG9uZwogb3Nfc3lzdGVtX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfVU5JQ09ERSAqY29tbWFuZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19zeXN0ZW0oUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19zeXN0ZW0oUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImNvbW1hbmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJjb21tYW5kIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsidTpzeXN0ZW0iLCBfa2V5d29yZHMsIDB9OwogICAgIFB5X1VOSUNPREUgKmNvbW1hbmQ7CiAgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAidTpzeXN0ZW0iLCBfa2V5d29yZHMsCi0gICAgICAgICZjb21tYW5kKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmNvbW1hbmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX3N5c3RlbV9pbXBsKG1vZHVsZSwgY29tbWFuZCk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTEzMTksMjUgKzEzNzksMjggQEAKICJFeGVjdXRlIHRoZSBjb21tYW5kIGluIGEgc3Vic2hlbGwuIik7CiAKICNkZWZpbmUgT1NfU1lTVEVNX01FVEhPRERFRiAgICBcCi0gICAgeyJzeXN0ZW0iLCAoUHlDRnVuY3Rpb24pb3Nfc3lzdGVtLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3Nfc3lzdGVtX19kb2NfX30sCisgICAgeyJzeXN0ZW0iLCAoUHlDRnVuY3Rpb24pb3Nfc3lzdGVtLCBNRVRIX0ZBU1RDQUxMLCBvc19zeXN0ZW1fX2RvY19ffSwKIAogc3RhdGljIGxvbmcKIG9zX3N5c3RlbV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpjb21tYW5kKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3N5c3RlbShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3N5c3RlbShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiY29tbWFuZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImNvbW1hbmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJjpzeXN0ZW0iLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpjb21tYW5kID0gTlVMTDsKICAgICBsb25nIF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJjpzeXN0ZW0iLCBfa2V5d29yZHMsCi0gICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJmNvbW1hbmQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZjb21tYW5kKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19zeXN0ZW1faW1wbChtb2R1bGUsIGNvbW1hbmQpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0xMzY3LDggKzE0MzAsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBtYXNrOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOnVtYXNrIiwgJm1hc2spKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTp1bWFzayIsICZtYXNrKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3VtYXNrX2ltcGwobW9kdWxlLCBtYXNrKTsKIAogZXhpdDoKQEAgLTEzODcsMjIgKzE0NTEsMjQgQEAKICIgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKIAogI2RlZmluZSBPU19VTkxJTktfTUVUSE9EREVGICAgIFwKLSAgICB7InVubGluayIsIChQeUNGdW5jdGlvbilvc191bmxpbmssIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc191bmxpbmtfX2RvY19ffSwKKyAgICB7InVubGluayIsIChQeUNGdW5jdGlvbilvc191bmxpbmssIE1FVEhfRkFTVENBTEwsIG9zX3VubGlua19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfdW5saW5rX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgZGlyX2ZkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3VubGluayhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3VubGluayhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImRpcl9mZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mfCRPJjp1bmxpbmsiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoInVubGluayIsICJwYXRoIiwgMCwgMCk7CiAgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8JE8mOnVubGluayIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBVTkxJTktBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBVTkxJTktBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3VubGlua19pbXBsKG1vZHVsZSwgJnBhdGgsIGRpcl9mZCk7CiAKIGV4aXQ6CkBAIC0xNDI0LDIyICsxNDkwLDI0IEBACiAiICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKICNkZWZpbmUgT1NfUkVNT1ZFX01FVEhPRERFRiAgICBcCi0gICAgeyJyZW1vdmUiLCAoUHlDRnVuY3Rpb24pb3NfcmVtb3ZlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfcmVtb3ZlX19kb2NfX30sCisgICAgeyJyZW1vdmUiLCAoUHlDRnVuY3Rpb24pb3NfcmVtb3ZlLCBNRVRIX0ZBU1RDQUxMLCBvc19yZW1vdmVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX3JlbW92ZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IGRpcl9mZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19yZW1vdmUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19yZW1vdmUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJnwkTyY6cmVtb3ZlIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJyZW1vdmUiLCAicGF0aCIsIDAsIDApOwogICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfCRPJjpyZW1vdmUiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgVU5MSU5LQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgVU5MSU5LQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19yZW1vdmVfaW1wbChtb2R1bGUsICZwYXRoLCBkaXJfZmQpOwogCiBleGl0OgpAQCAtMTUwNCwyNiArMTU3MiwyOCBAQAogIiAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKICNkZWZpbmUgT1NfVVRJTUVfTUVUSE9EREVGICAgIFwKLSAgICB7InV0aW1lIiwgKFB5Q0Z1bmN0aW9uKW9zX3V0aW1lLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfdXRpbWVfX2RvY19ffSwKKyAgICB7InV0aW1lIiwgKFB5Q0Z1bmN0aW9uKW9zX3V0aW1lLCBNRVRIX0ZBU1RDQUxMLCBvc191dGltZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfdXRpbWVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIFB5T2JqZWN0ICp0aW1lcywgUHlPYmplY3QgKm5zLAogICAgICAgICAgICAgICBpbnQgZGlyX2ZkLCBpbnQgZm9sbG93X3N5bWxpbmtzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3V0aW1lKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfdXRpbWUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAidGltZXMiLCAibnMiLCAiZGlyX2ZkIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAidGltZXMiLCAibnMiLCAiZGlyX2ZkIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mfE8kT08mcDp1dGltZSIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgidXRpbWUiLCAicGF0aCIsIDAsIFBBVEhfVVRJTUVfSEFWRV9GRCk7CiAgICAgUHlPYmplY3QgKnRpbWVzID0gTlVMTDsKICAgICBQeU9iamVjdCAqbnMgPSBOVUxMOwogICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKICAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfE8kT08mcDp1dGltZSIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmdGltZXMsICZucywgRlVUSU1FTlNBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkLCAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmdGltZXMsICZucywgRlVUSU1FTlNBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkLCAmZm9sbG93X3N5bWxpbmtzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3V0aW1lX2ltcGwobW9kdWxlLCAmcGF0aCwgdGltZXMsIG5zLCBkaXJfZmQsIGZvbGxvd19zeW1saW5rcyk7CiAKIGV4aXQ6CkBAIC0xNTQwLDIxICsxNjEwLDIzIEBACiAiRXhpdCB0byB0aGUgc3lzdGVtIHdpdGggc3BlY2lmaWVkIHN0YXR1cywgd2l0aG91dCBub3JtYWwgZXhpdCBwcm9jZXNzaW5nLiIpOwogCiAjZGVmaW5lIE9TX19FWElUX01FVEhPRERFRiAgICBcCi0gICAgeyJfZXhpdCIsIChQeUNGdW5jdGlvbilvc19fZXhpdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX19leGl0X19kb2NfX30sCisgICAgeyJfZXhpdCIsIChQeUNGdW5jdGlvbilvc19fZXhpdCwgTUVUSF9GQVNUQ0FMTCwgb3NfX2V4aXRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX19leGl0X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IHN0YXR1cyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19fZXhpdChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX19leGl0KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdGF0dXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdGF0dXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJpOl9leGl0IiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgc3RhdHVzOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTpfZXhpdCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnN0YXR1cykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdGF0dXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfX2V4aXRfaW1wbChtb2R1bGUsIHN0YXR1cyk7CiAKIGV4aXQ6CkBAIC0xNTc4LDIzICsxNjUwLDI0IEBACiAgICAgeyJleGVjdiIsIChQeUNGdW5jdGlvbilvc19leGVjdiwgTUVUSF9WQVJBUkdTLCBvc19leGVjdl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfZXhlY3ZfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqcGF0aCwgUHlPYmplY3QgKmFyZ3YpOworb3NfZXhlY3ZfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIFB5T2JqZWN0ICphcmd2KTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2V4ZWN2KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpwYXRoID0gTlVMTDsKKyAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJleGVjdiIsICJwYXRoIiwgMCwgMCk7CiAgICAgUHlPYmplY3QgKmFyZ3Y7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mTzpleGVjdiIsCi0gICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJnBhdGgsICZhcmd2KSkKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmYXJndikpIHsKICAgICAgICAgZ290byBleGl0OwotICAgIHJldHVybl92YWx1ZSA9IG9zX2V4ZWN2X2ltcGwobW9kdWxlLCBwYXRoLCBhcmd2KTsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfZXhlY3ZfaW1wbChtb2R1bGUsICZwYXRoLCBhcmd2KTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCi0gICAgUHlfWERFQ1JFRihwYXRoKTsKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOwogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTE2MTcsMjMgKzE2OTAsMjUgQEAKICIgICAgRGljdGlvbmFyeSBvZiBzdHJpbmdzIG1hcHBpbmcgdG8gc3RyaW5ncy4iKTsKIAogI2RlZmluZSBPU19FWEVDVkVfTUVUSE9EREVGICAgIFwKLSAgICB7ImV4ZWN2ZSIsIChQeUNGdW5jdGlvbilvc19leGVjdmUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19leGVjdmVfX2RvY19ffSwKKyAgICB7ImV4ZWN2ZSIsIChQeUNGdW5jdGlvbilvc19leGVjdmUsIE1FVEhfRkFTVENBTEwsIG9zX2V4ZWN2ZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfZXhlY3ZlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBQeU9iamVjdCAqYXJndiwgUHlPYmplY3QgKmVudik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19leGVjdmUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19leGVjdmUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiYXJndiIsICJlbnYiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImFyZ3YiLCAiZW52IiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZPTzpleGVjdmUiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImV4ZWN2ZSIsICJwYXRoIiwgMCwgUEFUSF9IQVZFX0ZFWEVDVkUpOwogICAgIFB5T2JqZWN0ICphcmd2OwogICAgIFB5T2JqZWN0ICplbnY7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk9POmV4ZWN2ZSIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmYXJndiwgJmVudikpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJmFyZ3YsICZlbnYpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfZXhlY3ZlX2ltcGwobW9kdWxlLCAmcGF0aCwgYXJndiwgZW52KTsKIAogZXhpdDoKQEAgLTE2NDUsNyArMTcyMCw3IEBACiAKICNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfRVhFQ1YpICovCiAKLSNpZiBkZWZpbmVkKEhBVkVfU1BBV05WKQorI2lmIChkZWZpbmVkKEhBVkVfU1BBV05WKSB8fCBkZWZpbmVkKEhBVkVfV1NQQVdOVikpCiAKIFB5RG9jX1NUUlZBUihvc19zcGF3bnZfX2RvY19fLAogInNwYXdudigkbW9kdWxlLCBtb2RlLCBwYXRoLCBhcmd2LCAvKVxuIgpAQCAtMTY2NCwzMSArMTczOSwzMiBAQAogICAgIHsic3Bhd252IiwgKFB5Q0Z1bmN0aW9uKW9zX3NwYXdudiwgTUVUSF9WQVJBUkdTLCBvc19zcGF3bnZfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3NwYXdudl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBtb2RlLCBQeU9iamVjdCAqcGF0aCwgUHlPYmplY3QgKmFyZ3YpOworb3Nfc3Bhd252X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IG1vZGUsIHBhdGhfdCAqcGF0aCwgUHlPYmplY3QgKmFyZ3YpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogb3Nfc3Bhd252KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBtb2RlOwotICAgIFB5T2JqZWN0ICpwYXRoID0gTlVMTDsKKyAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJzcGF3bnYiLCAicGF0aCIsIDAsIDApOwogICAgIFB5T2JqZWN0ICphcmd2OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTyZPOnNwYXdudiIsCi0gICAgICAgICZtb2RlLCBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZwYXRoLCAmYXJndikpCisgICAgICAgICZtb2RlLCBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZhcmd2KSkgewogICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgcmV0dXJuX3ZhbHVlID0gb3Nfc3Bhd252X2ltcGwobW9kdWxlLCBtb2RlLCBwYXRoLCBhcmd2KTsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc3Bhd252X2ltcGwobW9kdWxlLCBtb2RlLCAmcGF0aCwgYXJndik7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgcGF0aCAqLwotICAgIFB5X1hERUNSRUYocGF0aCk7CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKLSNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU1BBV05WKSAqLworI2VuZGlmIC8qIChkZWZpbmVkKEhBVkVfU1BBV05WKSB8fCBkZWZpbmVkKEhBVkVfV1NQQVdOVikpICovCiAKLSNpZiBkZWZpbmVkKEhBVkVfU1BBV05WKQorI2lmIChkZWZpbmVkKEhBVkVfU1BBV05WKSB8fCBkZWZpbmVkKEhBVkVfV1NQQVdOVikpCiAKIFB5RG9jX1NUUlZBUihvc19zcGF3bnZlX19kb2NfXywKICJzcGF3bnZlKCRtb2R1bGUsIG1vZGUsIHBhdGgsIGFyZ3YsIGVudiwgLylcbiIKQEAgLTE3MDksNyArMTc4NSw3IEBACiAgICAgeyJzcGF3bnZlIiwgKFB5Q0Z1bmN0aW9uKW9zX3NwYXdudmUsIE1FVEhfVkFSQVJHUywgb3Nfc3Bhd252ZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfc3Bhd252ZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBtb2RlLCBQeU9iamVjdCAqcGF0aCwgUHlPYmplY3QgKmFyZ3YsCitvc19zcGF3bnZlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IG1vZGUsIHBhdGhfdCAqcGF0aCwgUHlPYmplY3QgKmFyZ3YsCiAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmVudik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xNzE3LDIzICsxNzkzLDI0IEBACiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IG1vZGU7Ci0gICAgUHlPYmplY3QgKnBhdGggPSBOVUxMOworICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoInNwYXdudmUiLCAicGF0aCIsIDAsIDApOwogICAgIFB5T2JqZWN0ICphcmd2OwogICAgIFB5T2JqZWN0ICplbnY7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPJk9POnNwYXdudmUiLAotICAgICAgICAmbW9kZSwgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmcGF0aCwgJmFyZ3YsICZlbnYpKQorICAgICAgICAmbW9kZSwgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmYXJndiwgJmVudikpIHsKICAgICAgICAgZ290byBleGl0OwotICAgIHJldHVybl92YWx1ZSA9IG9zX3NwYXdudmVfaW1wbChtb2R1bGUsIG1vZGUsIHBhdGgsIGFyZ3YsIGVudik7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IG9zX3NwYXdudmVfaW1wbChtb2R1bGUsIG1vZGUsICZwYXRoLCBhcmd2LCBlbnYpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KLSAgICBQeV9YREVDUkVGKHBhdGgpOworICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQogCi0jZW5kaWYgLyogZGVmaW5lZChIQVZFX1NQQVdOVikgKi8KKyNlbmRpZiAvKiAoZGVmaW5lZChIQVZFX1NQQVdOVikgfHwgZGVmaW5lZChIQVZFX1dTUEFXTlYpKSAqLwogCiAjaWYgZGVmaW5lZChIQVZFX0ZPUksxKQogCkBAIC0xNzkyLDIxICsxODY5LDIzIEBACiAiR2V0IHRoZSBtYXhpbXVtIHNjaGVkdWxpbmcgcHJpb3JpdHkgZm9yIHBvbGljeS4iKTsKIAogI2RlZmluZSBPU19TQ0hFRF9HRVRfUFJJT1JJVFlfTUFYX01FVEhPRERFRiAgICBcCi0gICAgeyJzY2hlZF9nZXRfcHJpb3JpdHlfbWF4IiwgKFB5Q0Z1bmN0aW9uKW9zX3NjaGVkX2dldF9wcmlvcml0eV9tYXgsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWF4X19kb2NfX30sCisgICAgeyJzY2hlZF9nZXRfcHJpb3JpdHlfbWF4IiwgKFB5Q0Z1bmN0aW9uKW9zX3NjaGVkX2dldF9wcmlvcml0eV9tYXgsIE1FVEhfRkFTVENBTEwsIG9zX3NjaGVkX2dldF9wcmlvcml0eV9tYXhfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX3NjaGVkX2dldF9wcmlvcml0eV9tYXhfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgcG9saWN5KTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3NjaGVkX2dldF9wcmlvcml0eV9tYXgoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWF4KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwb2xpY3kiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwb2xpY3kiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJpOnNjaGVkX2dldF9wcmlvcml0eV9tYXgiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBwb2xpY3k7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpOnNjaGVkX2dldF9wcmlvcml0eV9tYXgiLCBfa2V5d29yZHMsCi0gICAgICAgICZwb2xpY3kpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmcG9saWN5KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3NjaGVkX2dldF9wcmlvcml0eV9tYXhfaW1wbChtb2R1bGUsIHBvbGljeSk7CiAKIGV4aXQ6CkBAIC0xODI0LDIxICsxOTAzLDIzIEBACiAiR2V0IHRoZSBtaW5pbXVtIHNjaGVkdWxpbmcgcHJpb3JpdHkgZm9yIHBvbGljeS4iKTsKIAogI2RlZmluZSBPU19TQ0hFRF9HRVRfUFJJT1JJVFlfTUlOX01FVEhPRERFRiAgICBcCi0gICAgeyJzY2hlZF9nZXRfcHJpb3JpdHlfbWluIiwgKFB5Q0Z1bmN0aW9uKW9zX3NjaGVkX2dldF9wcmlvcml0eV9taW4sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWluX19kb2NfX30sCisgICAgeyJzY2hlZF9nZXRfcHJpb3JpdHlfbWluIiwgKFB5Q0Z1bmN0aW9uKW9zX3NjaGVkX2dldF9wcmlvcml0eV9taW4sIE1FVEhfRkFTVENBTEwsIG9zX3NjaGVkX2dldF9wcmlvcml0eV9taW5fX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX3NjaGVkX2dldF9wcmlvcml0eV9taW5faW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgcG9saWN5KTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3NjaGVkX2dldF9wcmlvcml0eV9taW4oUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWluKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwb2xpY3kiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwb2xpY3kiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJpOnNjaGVkX2dldF9wcmlvcml0eV9taW4iLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBwb2xpY3k7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpOnNjaGVkX2dldF9wcmlvcml0eV9taW4iLCBfa2V5d29yZHMsCi0gICAgICAgICZwb2xpY3kpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmcG9saWN5KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3NjaGVkX2dldF9wcmlvcml0eV9taW5faW1wbChtb2R1bGUsIHBvbGljeSk7CiAKIGV4aXQ6CkBAIC0xODY5LDggKzE5NTAsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIHBpZF90IHBpZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiIiBfUHlfUEFSU0VfUElEICI6c2NoZWRfZ2V0c2NoZWR1bGVyIiwgJnBpZCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIF9QeV9QQVJTRV9QSUQgIjpzY2hlZF9nZXRzY2hlZHVsZXIiLCAmcGlkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3NjaGVkX2dldHNjaGVkdWxlcl9pbXBsKG1vZHVsZSwgcGlkKTsKIAogZXhpdDoKQEAgLTE4OTcsMTIgKzE5NzksMTQgQEAKIG9zX3NjaGVkX3BhcmFtKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzY2hlZF9wcmlvcml0eSIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InNjaGVkX3ByaW9yaXR5IiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTzpzY2hlZF9wYXJhbSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnNjaGVkX3ByaW9yaXR5OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTzpzY2hlZF9wYXJhbSIsIF9rZXl3b3JkcywKLSAgICAgICAgJnNjaGVkX3ByaW9yaXR5KSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KGFyZ3MsIGt3YXJncywgJl9wYXJzZXIsCisgICAgICAgICZzY2hlZF9wcmlvcml0eSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zY2hlZF9wYXJhbV9pbXBsKHR5cGUsIHNjaGVkX3ByaW9yaXR5KTsKIAogZXhpdDoKQEAgLTE5MzgsOCArMjAyMiw5IEBACiAgICAgc3RydWN0IHNjaGVkX3BhcmFtIHBhcmFtOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIF9QeV9QQVJTRV9QSUQgImlPJjpzY2hlZF9zZXRzY2hlZHVsZXIiLAotICAgICAgICAmcGlkLCAmcG9saWN5LCBjb252ZXJ0X3NjaGVkX3BhcmFtLCAmcGFyYW0pKQorICAgICAgICAmcGlkLCAmcG9saWN5LCBjb252ZXJ0X3NjaGVkX3BhcmFtLCAmcGFyYW0pKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2NoZWRfc2V0c2NoZWR1bGVyX2ltcGwobW9kdWxlLCBwaWQsIHBvbGljeSwgJnBhcmFtKTsKIAogZXhpdDoKQEAgLTE5NzEsOCArMjA1Niw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgcGlkX3QgcGlkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIF9QeV9QQVJTRV9QSUQgIjpzY2hlZF9nZXRwYXJhbSIsICZwaWQpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiIiBfUHlfUEFSU0VfUElEICI6c2NoZWRfZ2V0cGFyYW0iLCAmcGlkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3NjaGVkX2dldHBhcmFtX2ltcGwobW9kdWxlLCBwaWQpOwogCiBleGl0OgpAQCAtMjAwNyw4ICsyMDkzLDkgQEAKICAgICBzdHJ1Y3Qgc2NoZWRfcGFyYW0gcGFyYW07CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiIgX1B5X1BBUlNFX1BJRCAiTyY6c2NoZWRfc2V0cGFyYW0iLAotICAgICAgICAmcGlkLCBjb252ZXJ0X3NjaGVkX3BhcmFtLCAmcGFyYW0pKQorICAgICAgICAmcGlkLCBjb252ZXJ0X3NjaGVkX3BhcmFtLCAmcGFyYW0pKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2NoZWRfc2V0cGFyYW1faW1wbChtb2R1bGUsIHBpZCwgJnBhcmFtKTsKIAogZXhpdDoKQEAgLTIwNDAsMTEgKzIxMjcsMTMgQEAKICAgICBwaWRfdCBwaWQ7CiAgICAgZG91YmxlIF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgX1B5X1BBUlNFX1BJRCAiOnNjaGVkX3JyX2dldF9pbnRlcnZhbCIsICZwaWQpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiIiBfUHlfUEFSU0VfUElEICI6c2NoZWRfcnJfZ2V0X2ludGVydmFsIiwgJnBpZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3Nfc2NoZWRfcnJfZ2V0X2ludGVydmFsX2ltcGwobW9kdWxlLCBwaWQpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMS4wKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMS4wKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlGbG9hdF9Gcm9tRG91YmxlKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMjA5OSw4ICsyMTg4LDkgQEAKICAgICBQeU9iamVjdCAqbWFzazsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBfUHlfUEFSU0VfUElEICJPOnNjaGVkX3NldGFmZmluaXR5IiwKLSAgICAgICAgJnBpZCwgJm1hc2spKQorICAgICAgICAmcGlkLCAmbWFzaykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zY2hlZF9zZXRhZmZpbml0eV9pbXBsKG1vZHVsZSwgcGlkLCBtYXNrKTsKIAogZXhpdDoKQEAgLTIxMTUsNyArMjIwNSw3IEBACiAic2NoZWRfZ2V0YWZmaW5pdHkoJG1vZHVsZSwgcGlkLCAvKVxuIgogIi0tXG4iCiAiXG4iCi0iUmV0dXJuIHRoZSBhZmZpbml0eSBvZiB0aGUgcHJvY2VzcyBpZGVudGlmaWVkIGJ5IHBpZC5cbiIKKyJSZXR1cm4gdGhlIGFmZmluaXR5IG9mIHRoZSBwcm9jZXNzIGlkZW50aWZpZWQgYnkgcGlkIChvciB0aGUgY3VycmVudCBwcm9jZXNzIGlmIHplcm8pLlxuIgogIlxuIgogIlRoZSBhZmZpbml0eSBpcyByZXR1cm5lZCBhcyBhIHNldCBvZiBDUFUgaWRlbnRpZmllcnMuIik7CiAKQEAgLTIxMzEsOCArMjIyMSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgcGlkX3QgcGlkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIF9QeV9QQVJTRV9QSUQgIjpzY2hlZF9nZXRhZmZpbml0eSIsICZwaWQpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiIiBfUHlfUEFSU0VfUElEICI6c2NoZWRfZ2V0YWZmaW5pdHkiLCAmcGlkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3NjaGVkX2dldGFmZmluaXR5X2ltcGwobW9kdWxlLCBwaWQpOwogCiBleGl0OgpAQCAtMjI1OSw2ICsyMzUwLDggQEAKIAogI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9HRVRHSUQpICovCiAKKyNpZiBkZWZpbmVkKEhBVkVfR0VUUElEKQorCiBQeURvY19TVFJWQVIob3NfZ2V0cGlkX19kb2NfXywKICJnZXRwaWQoJG1vZHVsZSwgLylcbiIKICItLVxuIgpAQCAtMjI3Nyw2ICsyMzcwLDggQEAKICAgICByZXR1cm4gb3NfZ2V0cGlkX2ltcGwobW9kdWxlKTsKIH0KIAorI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9HRVRQSUQpICovCisKICNpZiBkZWZpbmVkKEhBVkVfR0VUR1JPVVBTKQogCiBQeURvY19TVFJWQVIob3NfZ2V0Z3JvdXBzX19kb2NfXywKQEAgLTIzMDgsMjEgKzI0MDMsMjMgQEAKICJDYWxsIHRoZSBzeXN0ZW0gY2FsbCBnZXRwZ2lkKCksIGFuZCByZXR1cm4gdGhlIHJlc3VsdC4iKTsKIAogI2RlZmluZSBPU19HRVRQR0lEX01FVEhPRERFRiAgICBcCi0gICAgeyJnZXRwZ2lkIiwgKFB5Q0Z1bmN0aW9uKW9zX2dldHBnaWQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19nZXRwZ2lkX19kb2NfX30sCisgICAgeyJnZXRwZ2lkIiwgKFB5Q0Z1bmN0aW9uKW9zX2dldHBnaWQsIE1FVEhfRkFTVENBTEwsIG9zX2dldHBnaWRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2dldHBnaWRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwaWRfdCBwaWQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfZ2V0cGdpZChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2dldHBnaWQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBpZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBpZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7IiIgX1B5X1BBUlNFX1BJRCAiOmdldHBnaWQiLCBfa2V5d29yZHMsIDB9OwogICAgIHBpZF90IHBpZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIiIgX1B5X1BBUlNFX1BJRCAiOmdldHBnaWQiLCBfa2V5d29yZHMsCi0gICAgICAgICZwaWQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmcGlkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2dldHBnaWRfaW1wbChtb2R1bGUsIHBpZCk7CiAKIGV4aXQ6CkBAIC0yNDY2LDggKzI1NjMsOSBAQAogICAgIFB5X3NzaXplX3Qgc2lnbmFsOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIF9QeV9QQVJTRV9QSUQgIm46a2lsbCIsCi0gICAgICAgICZwaWQsICZzaWduYWwpKQorICAgICAgICAmcGlkLCAmc2lnbmFsKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2tpbGxfaW1wbChtb2R1bGUsIHBpZCwgc2lnbmFsKTsKIAogZXhpdDoKQEAgLTI0OTgsOCArMjU5Niw5IEBACiAgICAgaW50IHNpZ25hbDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBfUHlfUEFSU0VfUElEICJpOmtpbGxwZyIsCi0gICAgICAgICZwZ2lkLCAmc2lnbmFsKSkKKyAgICAgICAgJnBnaWQsICZzaWduYWwpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfa2lsbHBnX2ltcGwobW9kdWxlLCBwZ2lkLCBzaWduYWwpOwogCiBleGl0OgpAQCAtMjUyOCw4ICsyNjI3LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgb3A7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6cGxvY2siLCAmb3ApKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpwbG9jayIsICZvcCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19wbG9ja19pbXBsKG1vZHVsZSwgb3ApOwogCiBleGl0OgpAQCAtMjU1OCw4ICsyNjU4LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICB1aWRfdCB1aWQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOnNldHVpZCIsIF9QeV9VaWRfQ29udmVydGVyLCAmdWlkKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOnNldHVpZCIsIF9QeV9VaWRfQ29udmVydGVyLCAmdWlkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3NldHVpZF9pbXBsKG1vZHVsZSwgdWlkKTsKIAogZXhpdDoKQEAgLTI1ODgsOCArMjY4OSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgdWlkX3QgZXVpZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6c2V0ZXVpZCIsIF9QeV9VaWRfQ29udmVydGVyLCAmZXVpZCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpzZXRldWlkIiwgX1B5X1VpZF9Db252ZXJ0ZXIsICZldWlkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3NldGV1aWRfaW1wbChtb2R1bGUsIGV1aWQpOwogCiBleGl0OgpAQCAtMjYxOCw4ICsyNzIwLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBnaWRfdCBlZ2lkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpzZXRlZ2lkIiwgX1B5X0dpZF9Db252ZXJ0ZXIsICZlZ2lkKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOnNldGVnaWQiLCBfUHlfR2lkX0NvbnZlcnRlciwgJmVnaWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2V0ZWdpZF9pbXBsKG1vZHVsZSwgZWdpZCk7CiAKIGV4aXQ6CkBAIC0yNjUwLDggKzI3NTMsOSBAQAogICAgIHVpZF90IGV1aWQ7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mTyY6c2V0cmV1aWQiLAotICAgICAgICBfUHlfVWlkX0NvbnZlcnRlciwgJnJ1aWQsIF9QeV9VaWRfQ29udmVydGVyLCAmZXVpZCkpCisgICAgICAgIF9QeV9VaWRfQ29udmVydGVyLCAmcnVpZCwgX1B5X1VpZF9Db252ZXJ0ZXIsICZldWlkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3NldHJldWlkX2ltcGwobW9kdWxlLCBydWlkLCBldWlkKTsKIAogZXhpdDoKQEAgLTI2ODIsOCArMjc4Niw5IEBACiAgICAgZ2lkX3QgZWdpZDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZPJjpzZXRyZWdpZCIsCi0gICAgICAgIF9QeV9HaWRfQ29udmVydGVyLCAmcmdpZCwgX1B5X0dpZF9Db252ZXJ0ZXIsICZlZ2lkKSkKKyAgICAgICAgX1B5X0dpZF9Db252ZXJ0ZXIsICZyZ2lkLCBfUHlfR2lkX0NvbnZlcnRlciwgJmVnaWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2V0cmVnaWRfaW1wbChtb2R1bGUsIHJnaWQsIGVnaWQpOwogCiBleGl0OgpAQCAtMjcxMiw4ICsyODE3LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBnaWRfdCBnaWQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOnNldGdpZCIsIF9QeV9HaWRfQ29udmVydGVyLCAmZ2lkKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOnNldGdpZCIsIF9QeV9HaWRfQ29udmVydGVyLCAmZ2lkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3NldGdpZF9pbXBsKG1vZHVsZSwgZ2lkKTsKIAogZXhpdDoKQEAgLTI3NDcsMjEgKzI4NTMsMjMgQEAKICIgIChwaWQsIHN0YXR1cywgcnVzYWdlKSIpOwogCiAjZGVmaW5lIE9TX1dBSVQzX01FVEhPRERFRiAgICBcCi0gICAgeyJ3YWl0MyIsIChQeUNGdW5jdGlvbilvc193YWl0MywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3dhaXQzX19kb2NfX30sCisgICAgeyJ3YWl0MyIsIChQeUNGdW5jdGlvbilvc193YWl0MywgTUVUSF9GQVNUQ0FMTCwgb3Nfd2FpdDNfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX3dhaXQzX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IG9wdGlvbnMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfd2FpdDMoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc193YWl0MyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsib3B0aW9ucyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7Im9wdGlvbnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJpOndhaXQzIiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgb3B0aW9uczsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImk6d2FpdDMiLCBfa2V5d29yZHMsCi0gICAgICAgICZvcHRpb25zKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJm9wdGlvbnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfd2FpdDNfaW1wbChtb2R1bGUsIG9wdGlvbnMpOwogCiBleGl0OgpAQCAtMjc4MiwyMiArMjg5MCwyNCBAQAogIiAgKHBpZCwgc3RhdHVzLCBydXNhZ2UpIik7CiAKICNkZWZpbmUgT1NfV0FJVDRfTUVUSE9EREVGICAgIFwKLSAgICB7IndhaXQ0IiwgKFB5Q0Z1bmN0aW9uKW9zX3dhaXQ0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3Nfd2FpdDRfX2RvY19ffSwKKyAgICB7IndhaXQ0IiwgKFB5Q0Z1bmN0aW9uKW9zX3dhaXQ0LCBNRVRIX0ZBU1RDQUxMLCBvc193YWl0NF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3Nfd2FpdDRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwaWRfdCBwaWQsIGludCBvcHRpb25zKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3dhaXQ0KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3Nfd2FpdDQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBpZCIsICJvcHRpb25zIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGlkIiwgIm9wdGlvbnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyIiIF9QeV9QQVJTRV9QSUQgImk6d2FpdDQiLCBfa2V5d29yZHMsIDB9OwogICAgIHBpZF90IHBpZDsKICAgICBpbnQgb3B0aW9uczsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIiIgX1B5X1BBUlNFX1BJRCAiaTp3YWl0NCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnBpZCwgJm9wdGlvbnMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmcGlkLCAmb3B0aW9ucykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc193YWl0NF9pbXBsKG1vZHVsZSwgcGlkLCBvcHRpb25zKTsKIAogZXhpdDoKQEAgLTI4NDAsOCArMjk1MCw5IEBACiAgICAgaW50IG9wdGlvbnM7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImkiIF9QeV9QQVJTRV9QSUQgImk6d2FpdGlkIiwKLSAgICAgICAgJmlkdHlwZSwgJmlkLCAmb3B0aW9ucykpCisgICAgICAgICZpZHR5cGUsICZpZCwgJm9wdGlvbnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfd2FpdGlkX2ltcGwobW9kdWxlLCBpZHR5cGUsIGlkLCBvcHRpb25zKTsKIAogZXhpdDoKQEAgLTI4NzcsOCArMjk4OCw5IEBACiAgICAgaW50IG9wdGlvbnM7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiIgX1B5X1BBUlNFX1BJRCAiaTp3YWl0cGlkIiwKLSAgICAgICAgJnBpZCwgJm9wdGlvbnMpKQorICAgICAgICAmcGlkLCAmb3B0aW9ucykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc193YWl0cGlkX2ltcGwobW9kdWxlLCBwaWQsIG9wdGlvbnMpOwogCiBleGl0OgpAQCAtMjkwNCwxOCArMzAxNiwxOSBAQAogICAgIHsid2FpdHBpZCIsIChQeUNGdW5jdGlvbilvc193YWl0cGlkLCBNRVRIX1ZBUkFSR1MsIG9zX3dhaXRwaWRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3dhaXRwaWRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9pbnRwdHJfdCBwaWQsIGludCBvcHRpb25zKTsKK29zX3dhaXRwaWRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnRwdHJfdCBwaWQsIGludCBvcHRpb25zKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX3dhaXRwaWQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgUHlfaW50cHRyX3QgcGlkOworICAgIGludHB0cl90IHBpZDsKICAgICBpbnQgb3B0aW9uczsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBfUHlfUEFSU0VfSU5UUFRSICJpOndhaXRwaWQiLAotICAgICAgICAmcGlkLCAmb3B0aW9ucykpCisgICAgICAgICZwaWQsICZvcHRpb25zKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3dhaXRwaWRfaW1wbChtb2R1bGUsIHBpZCwgb3B0aW9ucyk7CiAKIGV4aXQ6CkBAIC0yOTY4LDI1ICszMDgxLDI3IEBACiAiICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKICNkZWZpbmUgT1NfU1lNTElOS19NRVRIT0RERUYgICAgXAotICAgIHsic3ltbGluayIsIChQeUNGdW5jdGlvbilvc19zeW1saW5rLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3Nfc3ltbGlua19fZG9jX199LAorICAgIHsic3ltbGluayIsIChQeUNGdW5jdGlvbilvc19zeW1saW5rLCBNRVRIX0ZBU1RDQUxMLCBvc19zeW1saW5rX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19zeW1saW5rX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpzcmMsIHBhdGhfdCAqZHN0LAogICAgICAgICAgICAgICAgIGludCB0YXJnZXRfaXNfZGlyZWN0b3J5LCBpbnQgZGlyX2ZkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3N5bWxpbmsoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19zeW1saW5rKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzcmMiLCAiZHN0IiwgInRhcmdldF9pc19kaXJlY3RvcnkiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3JjIiwgImRzdCIsICJ0YXJnZXRfaXNfZGlyZWN0b3J5IiwgImRpcl9mZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mTyZ8cCRPJjpzeW1saW5rIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3Qgc3JjID0gUEFUSF9UX0lOSVRJQUxJWkUoInN5bWxpbmsiLCAic3JjIiwgMCwgMCk7CiAgICAgcGF0aF90IGRzdCA9IFBBVEhfVF9JTklUSUFMSVpFKCJzeW1saW5rIiwgImRzdCIsIDAsIDApOwogICAgIGludCB0YXJnZXRfaXNfZGlyZWN0b3J5ID0gMDsKICAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8mfHAkTyY6c3ltbGluayIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZzcmMsIHBhdGhfY29udmVydGVyLCAmZHN0LCAmdGFyZ2V0X2lzX2RpcmVjdG9yeSwgU1lNTElOS0FUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnNyYywgcGF0aF9jb252ZXJ0ZXIsICZkc3QsICZ0YXJnZXRfaXNfZGlyZWN0b3J5LCBTWU1MSU5LQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zeW1saW5rX2ltcGwobW9kdWxlLCAmc3JjLCAmZHN0LCB0YXJnZXRfaXNfZGlyZWN0b3J5LCBkaXJfZmQpOwogCiBleGl0OgpAQCAtMzA0Niw4ICszMTYxLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBwaWRfdCBwaWQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgX1B5X1BBUlNFX1BJRCAiOmdldHNpZCIsICZwaWQpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiIiBfUHlfUEFSU0VfUElEICI6Z2V0c2lkIiwgJnBpZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19nZXRzaWRfaW1wbChtb2R1bGUsIHBpZCk7CiAKIGV4aXQ6CkBAIC0zMTAwLDggKzMyMTYsOSBAQAogICAgIHBpZF90IHBncnA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiIgX1B5X1BBUlNFX1BJRCAiIiBfUHlfUEFSU0VfUElEICI6c2V0cGdpZCIsCi0gICAgICAgICZwaWQsICZwZ3JwKSkKKyAgICAgICAgJnBpZCwgJnBncnApKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2V0cGdpZF9pbXBsKG1vZHVsZSwgcGlkLCBwZ3JwKTsKIAogZXhpdDoKQEAgLTMxMzAsOCArMzI0Nyw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IGZkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOnRjZ2V0cGdycCIsICZmZCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOnRjZ2V0cGdycCIsICZmZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc190Y2dldHBncnBfaW1wbChtb2R1bGUsIGZkKTsKIAogZXhpdDoKQEAgLTMxNjIsOCArMzI4MCw5IEBACiAgICAgcGlkX3QgcGdpZDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaSIgX1B5X1BBUlNFX1BJRCAiOnRjc2V0cGdycCIsCi0gICAgICAgICZmZCwgJnBnaWQpKQorICAgICAgICAmZmQsICZwZ2lkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3Rjc2V0cGdycF9pbXBsKG1vZHVsZSwgZmQsIHBnaWQpOwogCiBleGl0OgpAQCAtMzE4NCwyOCArMzMwMywzMSBAQAogIiAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiAjZGVmaW5lIE9TX09QRU5fTUVUSE9EREVGICAgIFwKLSAgICB7Im9wZW4iLCAoUHlDRnVuY3Rpb24pb3Nfb3BlbiwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX29wZW5fX2RvY19ffSwKKyAgICB7Im9wZW4iLCAoUHlDRnVuY3Rpb24pb3Nfb3BlbiwgTUVUSF9GQVNUQ0FMTCwgb3Nfb3Blbl9fZG9jX199LAogCiBzdGF0aWMgaW50CiBvc19vcGVuX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgZmxhZ3MsIGludCBtb2RlLCBpbnQgZGlyX2ZkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX29wZW4oUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19vcGVuKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImZsYWdzIiwgIm1vZGUiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJmbGFncyIsICJtb2RlIiwgImRpcl9mZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8maXxpJE8mOm9wZW4iLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoIm9wZW4iLCAicGF0aCIsIDAsIDApOwogICAgIGludCBmbGFnczsKICAgICBpbnQgbW9kZSA9IDUxMTsKICAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CiAgICAgaW50IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJml8aSRPJjpvcGVuIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZmbGFncywgJm1vZGUsIE9QRU5BVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmZmxhZ3MsICZtb2RlLCBPUEVOQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3Nfb3Blbl9pbXBsKG1vZHVsZSwgJnBhdGgsIGZsYWdzLCBtb2RlLCBkaXJfZmQpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0zMjIyLDIxICszMzQ0LDIzIEBACiAiQ2xvc2UgYSBmaWxlIGRlc2NyaXB0b3IuIik7CiAKICNkZWZpbmUgT1NfQ0xPU0VfTUVUSE9EREVGICAgIFwKLSAgICB7ImNsb3NlIiwgKFB5Q0Z1bmN0aW9uKW9zX2Nsb3NlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfY2xvc2VfX2RvY19ffSwKKyAgICB7ImNsb3NlIiwgKFB5Q0Z1bmN0aW9uKW9zX2Nsb3NlLCBNRVRIX0ZBU1RDQUxMLCBvc19jbG9zZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfY2xvc2VfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgZmQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfY2xvc2UoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19jbG9zZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJmZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Imk6Y2xvc2UiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBmZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImk6Y2xvc2UiLCBfa2V5d29yZHMsCi0gICAgICAgICZmZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZmZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19jbG9zZV9pbXBsKG1vZHVsZSwgZmQpOwogCiBleGl0OgpAQCAtMzI2Myw4ICszMzg3LDkgQEAKICAgICBpbnQgZmRfaGlnaDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWk6Y2xvc2VyYW5nZSIsCi0gICAgICAgICZmZF9sb3csICZmZF9oaWdoKSkKKyAgICAgICAgJmZkX2xvdywgJmZkX2hpZ2gpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfY2xvc2VyYW5nZV9pbXBsKG1vZHVsZSwgZmRfbG93LCBmZF9oaWdoKTsKIAogZXhpdDoKQEAgLTMyOTAsMTEgKzM0MTUsMTMgQEAKICAgICBpbnQgZmQ7CiAgICAgaW50IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6ZHVwIiwgJmZkKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6ZHVwIiwgJmZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19kdXBfaW1wbChtb2R1bGUsIGZkKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMzMwOCwyMyArMzQzNSwyNSBAQAogIkR1cGxpY2F0ZSBmaWxlIGRlc2NyaXB0b3IuIik7CiAKICNkZWZpbmUgT1NfRFVQMl9NRVRIT0RERUYgICAgXAotICAgIHsiZHVwMiIsIChQeUNGdW5jdGlvbilvc19kdXAyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfZHVwMl9fZG9jX199LAorICAgIHsiZHVwMiIsIChQeUNGdW5jdGlvbilvc19kdXAyLCBNRVRIX0ZBU1RDQUxMLCBvc19kdXAyX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19kdXAyX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IGZkLCBpbnQgZmQyLCBpbnQgaW5oZXJpdGFibGUpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfZHVwMihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2R1cDIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImZkIiwgImZkMiIsICJpbmhlcml0YWJsZSIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImZkIiwgImZkMiIsICJpbmhlcml0YWJsZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7ImlpfHA6ZHVwMiIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IGZkOwogICAgIGludCBmZDI7CiAgICAgaW50IGluaGVyaXRhYmxlID0gMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImlpfHA6ZHVwMiIsIF9rZXl3b3JkcywKLSAgICAgICAgJmZkLCAmZmQyLCAmaW5oZXJpdGFibGUpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZmQsICZmZDIsICZpbmhlcml0YWJsZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19kdXAyX2ltcGwobW9kdWxlLCBmZCwgZmQyLCBpbmhlcml0YWJsZSk7CiAKIGV4aXQ6CkBAIC0zMzYxLDggKzM0OTAsOSBAQAogICAgIFB5X29mZl90IGxlbmd0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWlPJjpsb2NrZiIsCi0gICAgICAgICZmZCwgJmNvbW1hbmQsIFB5X29mZl90X2NvbnZlcnRlciwgJmxlbmd0aCkpCisgICAgICAgICZmZCwgJmNvbW1hbmQsIFB5X29mZl90X2NvbnZlcnRlciwgJmxlbmd0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19sb2NrZl9pbXBsKG1vZHVsZSwgZmQsIGNvbW1hbmQsIGxlbmd0aCk7CiAKIGV4aXQ6CkBAIC0zMzk2LDExICszNTI2LDEzIEBACiAgICAgUHlfb2ZmX3QgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU8maTpsc2VlayIsCi0gICAgICAgICZmZCwgUHlfb2ZmX3RfY29udmVydGVyLCAmcG9zaXRpb24sICZob3cpKQorICAgICAgICAmZmQsIFB5X29mZl90X2NvbnZlcnRlciwgJnBvc2l0aW9uLCAmaG93KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19sc2Vla19pbXBsKG1vZHVsZSwgZmQsIHBvc2l0aW9uLCBob3cpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbVB5X29mZl90KF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMzQyNyw4ICszNTU5LDkgQEAKICAgICBQeV9zc2l6ZV90IGxlbmd0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaW46cmVhZCIsCi0gICAgICAgICZmZCwgJmxlbmd0aCkpCisgICAgICAgICZmZCwgJmxlbmd0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19yZWFkX2ltcGwobW9kdWxlLCBmZCwgbGVuZ3RoKTsKIAogZXhpdDoKQEAgLTM0NjYsMTEgKzM1OTksMTMgQEAKICAgICBQeV9zc2l6ZV90IF9yZXR1cm5fdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPOnJlYWR2IiwKLSAgICAgICAgJmZkLCAmYnVmZmVycykpCisgICAgICAgICZmZCwgJmJ1ZmZlcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX3JlYWR2X2ltcGwobW9kdWxlLCBmZCwgYnVmZmVycyk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tU3NpemVfdChfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTM1MDUsOCArMzY0MCw5IEBACiAgICAgUHlfb2ZmX3Qgb2Zmc2V0OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaU8mOnByZWFkIiwKLSAgICAgICAgJmZkLCAmbGVuZ3RoLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZvZmZzZXQpKQorICAgICAgICAmZmQsICZsZW5ndGgsIFB5X29mZl90X2NvbnZlcnRlciwgJm9mZnNldCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19wcmVhZF9pbXBsKG1vZHVsZSwgZmQsIGxlbmd0aCwgb2Zmc2V0KTsKIAogZXhpdDoKQEAgLTM1MzYsMTcgKzM2NzIsMjAgQEAKICAgICBQeV9zc2l6ZV90IF9yZXR1cm5fdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIml5Kjp3cml0ZSIsCi0gICAgICAgICZmZCwgJmRhdGEpKQorICAgICAgICAmZmQsICZkYXRhKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc193cml0ZV9pbXBsKG1vZHVsZSwgZmQsICZkYXRhKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Tc2l6ZV90KF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTM1NjEsMjEgKzM3MDAsMjMgQEAKICJFcXVpdmFsZW50IHRvIG9zLnN0YXQoZmQpLiIpOwogCiAjZGVmaW5lIE9TX0ZTVEFUX01FVEhPRERFRiAgICBcCi0gICAgeyJmc3RhdCIsIChQeUNGdW5jdGlvbilvc19mc3RhdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2ZzdGF0X19kb2NfX30sCisgICAgeyJmc3RhdCIsIChQeUNGdW5jdGlvbilvc19mc3RhdCwgTUVUSF9GQVNUQ0FMTCwgb3NfZnN0YXRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2ZzdGF0X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IGZkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2ZzdGF0KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfZnN0YXQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImZkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJpOmZzdGF0IiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgZmQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpOmZzdGF0IiwgX2tleXdvcmRzLAotICAgICAgICAmZmQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfZnN0YXRfaW1wbChtb2R1bGUsIGZkKTsKIAogZXhpdDoKQEAgLTM2MDQsMTEgKzM3NDUsMTMgQEAKICAgICBpbnQgZmQ7CiAgICAgaW50IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6aXNhdHR5IiwgJmZkKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6aXNhdHR5IiwgJmZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19pc2F0dHlfaW1wbChtb2R1bGUsIGZkKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlCb29sX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMzY2Niw4ICszODA5LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgZmxhZ3M7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6cGlwZTIiLCAmZmxhZ3MpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpwaXBlMiIsICZmbGFncykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19waXBlMl9pbXBsKG1vZHVsZSwgZmxhZ3MpOwogCiBleGl0OgpAQCAtMzcwMiwxMSArMzg0NiwxMyBAQAogICAgIFB5X3NzaXplX3QgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU86d3JpdGV2IiwKLSAgICAgICAgJmZkLCAmYnVmZmVycykpCisgICAgICAgICZmZCwgJmJ1ZmZlcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX3dyaXRldl9pbXBsKG1vZHVsZSwgZmQsIGJ1ZmZlcnMpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbVNzaXplX3QoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0zNzQzLDE3ICszODg5LDIwIEBACiAgICAgUHlfc3NpemVfdCBfcmV0dXJuX3ZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpeSpPJjpwd3JpdGUiLAotICAgICAgICAmZmQsICZidWZmZXIsIFB5X29mZl90X2NvbnZlcnRlciwgJm9mZnNldCkpCisgICAgICAgICZmZCwgJmJ1ZmZlciwgUHlfb2ZmX3RfY29udmVydGVyLCAmb2Zmc2V0KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19wd3JpdGVfaW1wbChtb2R1bGUsIGZkLCAmYnVmZmVyLCBvZmZzZXQpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbVNzaXplX3QoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgYnVmZmVyICovCi0gICAgaWYgKGJ1ZmZlci5vYmopCisgICAgaWYgKGJ1ZmZlci5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWZmZXIpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0zNzc0LDIzICszOTIzLDI1IEBACiAiICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKICNkZWZpbmUgT1NfTUtGSUZPX01FVEhPRERFRiAgICBcCi0gICAgeyJta2ZpZm8iLCAoUHlDRnVuY3Rpb24pb3NfbWtmaWZvLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfbWtmaWZvX19kb2NfX30sCisgICAgeyJta2ZpZm8iLCAoUHlDRnVuY3Rpb24pb3NfbWtmaWZvLCBNRVRIX0ZBU1RDQUxMLCBvc19ta2ZpZm9fX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX21rZmlmb19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IG1vZGUsIGludCBkaXJfZmQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfbWtmaWZvKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfbWtmaWZvKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgImRpcl9mZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mfGkkTyY6bWtmaWZvIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJta2ZpZm8iLCAicGF0aCIsIDAsIDApOwogICAgIGludCBtb2RlID0gNDM4OwogICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfGkkTyY6bWtmaWZvIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZtb2RlLCBNS0ZJRk9BVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmbW9kZSwgTUtGSUZPQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19ta2ZpZm9faW1wbChtb2R1bGUsICZwYXRoLCBtb2RlLCBkaXJfZmQpOwogCiBleGl0OgpAQCAtMzgyMywyNSArMzk3NCwyNyBAQAogIiAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiAjZGVmaW5lIE9TX01LTk9EX01FVEhPRERFRiAgICBcCi0gICAgeyJta25vZCIsIChQeUNGdW5jdGlvbilvc19ta25vZCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX21rbm9kX19kb2NfX30sCisgICAgeyJta25vZCIsIChQeUNGdW5jdGlvbilvc19ta25vZCwgTUVUSF9GQVNUQ0FMTCwgb3NfbWtub2RfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX21rbm9kX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgbW9kZSwgZGV2X3QgZGV2aWNlLAogICAgICAgICAgICAgICBpbnQgZGlyX2ZkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX21rbm9kKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfbWtub2QoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAibW9kZSIsICJkZXZpY2UiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgImRldmljZSIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJnxpTyYkTyY6bWtub2QiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoIm1rbm9kIiwgInBhdGgiLCAwLCAwKTsKICAgICBpbnQgbW9kZSA9IDM4NDsKICAgICBkZXZfdCBkZXZpY2UgPSAwOwogICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfGlPJiRPJjpta25vZCIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmbW9kZSwgX1B5X0Rldl9Db252ZXJ0ZXIsICZkZXZpY2UsIE1LTk9EQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJm1vZGUsIF9QeV9EZXZfQ29udmVydGVyLCAmZGV2aWNlLCBNS05PREFUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfbWtub2RfaW1wbChtb2R1bGUsICZwYXRoLCBtb2RlLCBkZXZpY2UsIGRpcl9mZCk7CiAKIGV4aXQ6CkBAIC0zODc0LDExICs0MDI3LDEzIEBACiAgICAgZGV2X3QgZGV2aWNlOwogICAgIHVuc2lnbmVkIGludCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjptYWpvciIsIF9QeV9EZXZfQ29udmVydGVyLCAmZGV2aWNlKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOm1ham9yIiwgX1B5X0Rldl9Db252ZXJ0ZXIsICZkZXZpY2UpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX21ham9yX2ltcGwobW9kdWxlLCBkZXZpY2UpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAodW5zaWduZWQgaW50KS0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAodW5zaWduZWQgaW50KS0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoKHVuc2lnbmVkIGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0zOTA4LDExICs0MDYzLDEzIEBACiAgICAgZGV2X3QgZGV2aWNlOwogICAgIHVuc2lnbmVkIGludCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjptaW5vciIsIF9QeV9EZXZfQ29udmVydGVyLCAmZGV2aWNlKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOm1pbm9yIiwgX1B5X0Rldl9Db252ZXJ0ZXIsICZkZXZpY2UpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX21pbm9yX2ltcGwobW9kdWxlLCBkZXZpY2UpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAodW5zaWduZWQgaW50KS0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAodW5zaWduZWQgaW50KS0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoKHVuc2lnbmVkIGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0zOTQ0LDExICs0MTAxLDEzIEBACiAgICAgZGV2X3QgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWk6bWFrZWRldiIsCi0gICAgICAgICZtYWpvciwgJm1pbm9yKSkKKyAgICAgICAgJm1ham9yLCAmbWlub3IpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX21ha2VkZXZfaW1wbChtb2R1bGUsIG1ham9yLCBtaW5vcik7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IChkZXZfdCktMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gKGRldl90KS0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX1B5TG9uZ19Gcm9tRGV2KF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMzk3OSw4ICs0MTM4LDkgQEAKICAgICBQeV9vZmZfdCBsZW5ndGg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPJjpmdHJ1bmNhdGUiLAotICAgICAgICAmZmQsIFB5X29mZl90X2NvbnZlcnRlciwgJmxlbmd0aCkpCisgICAgICAgICZmZCwgUHlfb2ZmX3RfY29udmVydGVyLCAmbGVuZ3RoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2Z0cnVuY2F0ZV9pbXBsKG1vZHVsZSwgZmQsIGxlbmd0aCk7CiAKIGV4aXQ6CkBAIC00MDAxLDIyICs0MTYxLDI0IEBACiAiICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBhbiBleGNlcHRpb24uIik7CiAKICNkZWZpbmUgT1NfVFJVTkNBVEVfTUVUSE9EREVGICAgIFwKLSAgICB7InRydW5jYXRlIiwgKFB5Q0Z1bmN0aW9uKW9zX3RydW5jYXRlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfdHJ1bmNhdGVfX2RvY19ffSwKKyAgICB7InRydW5jYXRlIiwgKFB5Q0Z1bmN0aW9uKW9zX3RydW5jYXRlLCBNRVRIX0ZBU1RDQUxMLCBvc190cnVuY2F0ZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfdHJ1bmNhdGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIFB5X29mZl90IGxlbmd0aCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc190cnVuY2F0ZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3RydW5jYXRlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImxlbmd0aCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAibGVuZ3RoIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZPJjp0cnVuY2F0ZSIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgidHJ1bmNhdGUiLCAicGF0aCIsIDAsIFBBVEhfSEFWRV9GVFJVTkNBVEUpOwogICAgIFB5X29mZl90IGxlbmd0aDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyY6dHJ1bmNhdGUiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgUHlfb2ZmX3RfY29udmVydGVyLCAmbGVuZ3RoKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZsZW5ndGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfdHJ1bmNhdGVfaW1wbChtb2R1bGUsICZwYXRoLCBsZW5ndGgpOwogCiBleGl0OgpAQCAtNDA1NSw4ICs0MjE3LDkgQEAKICAgICBQeV9vZmZfdCBsZW5ndGg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPJk8mOnBvc2l4X2ZhbGxvY2F0ZSIsCi0gICAgICAgICZmZCwgUHlfb2ZmX3RfY29udmVydGVyLCAmb2Zmc2V0LCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZsZW5ndGgpKQorICAgICAgICAmZmQsIFB5X29mZl90X2NvbnZlcnRlciwgJm9mZnNldCwgUHlfb2ZmX3RfY29udmVydGVyLCAmbGVuZ3RoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3Bvc2l4X2ZhbGxvY2F0ZV9pbXBsKG1vZHVsZSwgZmQsIG9mZnNldCwgbGVuZ3RoKTsKIAogZXhpdDoKQEAgLTQwOTgsOCArNDI2MSw5IEBACiAgICAgaW50IGFkdmljZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU8mTyZpOnBvc2l4X2ZhZHZpc2UiLAotICAgICAgICAmZmQsIFB5X29mZl90X2NvbnZlcnRlciwgJm9mZnNldCwgUHlfb2ZmX3RfY29udmVydGVyLCAmbGVuZ3RoLCAmYWR2aWNlKSkKKyAgICAgICAgJmZkLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZvZmZzZXQsIFB5X29mZl90X2NvbnZlcnRlciwgJmxlbmd0aCwgJmFkdmljZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19wb3NpeF9mYWR2aXNlX2ltcGwobW9kdWxlLCBmZCwgb2Zmc2V0LCBsZW5ndGgsIGFkdmljZSk7CiAKIGV4aXQ6CkBAIC00MTMwLDggKzQyOTQsOSBAQAogICAgIFB5T2JqZWN0ICp2YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVVU6cHV0ZW52IiwKLSAgICAgICAgJm5hbWUsICZ2YWx1ZSkpCisgICAgICAgICZuYW1lLCAmdmFsdWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfcHV0ZW52X2ltcGwobW9kdWxlLCBuYW1lLCB2YWx1ZSk7CiAKIGV4aXQ6CkBAIC00MTYyLDggKzQzMjcsOSBAQAogICAgIFB5T2JqZWN0ICp2YWx1ZSA9IE5VTEw7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mTyY6cHV0ZW52IiwKLSAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmbmFtZSwgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmdmFsdWUpKQorICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZuYW1lLCBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZ2YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19wdXRlbnZfaW1wbChtb2R1bGUsIG5hbWUsIHZhbHVlKTsKIAogZXhpdDoKQEAgLTQxOTcsOCArNDM2Myw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKm5hbWUgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjp1bnNldGVudiIsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm5hbWUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6dW5zZXRlbnYiLCBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZuYW1lKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3Vuc2V0ZW52X2ltcGwobW9kdWxlLCBuYW1lKTsKIAogZXhpdDoKQEAgLTQyMjgsOCArNDM5NSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IGNvZGU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6c3RyZXJyb3IiLCAmY29kZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOnN0cmVycm9yIiwgJmNvZGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc3RyZXJyb3JfaW1wbChtb2R1bGUsIGNvZGUpOwogCiBleGl0OgpAQCAtNDI1NywxMSArNDQyNSwxMyBAQAogICAgIGludCBzdGF0dXM7CiAgICAgaW50IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6V0NPUkVEVU1QIiwgJnN0YXR1cykpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOldDT1JFRFVNUCIsICZzdGF0dXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX1dDT1JFRFVNUF9pbXBsKG1vZHVsZSwgc3RhdHVzKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlCb29sX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNDI4MiwyNSArNDQ1MiwyOCBAQAogImpvYiBjb250cm9sIHN0b3AuIik7CiAKICNkZWZpbmUgT1NfV0lGQ09OVElOVUVEX01FVEhPRERFRiAgICBcCi0gICAgeyJXSUZDT05USU5VRUQiLCAoUHlDRnVuY3Rpb24pb3NfV0lGQ09OVElOVUVELCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfV0lGQ09OVElOVUVEX19kb2NfX30sCisgICAgeyJXSUZDT05USU5VRUQiLCAoUHlDRnVuY3Rpb24pb3NfV0lGQ09OVElOVUVELCBNRVRIX0ZBU1RDQUxMLCBvc19XSUZDT05USU5VRURfX2RvY19ffSwKIAogc3RhdGljIGludAogb3NfV0lGQ09OVElOVUVEX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IHN0YXR1cyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19XSUZDT05USU5VRUQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19XSUZDT05USU5VRUQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0YXR1cyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InN0YXR1cyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Imk6V0lGQ09OVElOVUVEIiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgc3RhdHVzOwogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTpXSUZDT05USU5VRUQiLCBfa2V5d29yZHMsCi0gICAgICAgICZzdGF0dXMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc3RhdHVzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19XSUZDT05USU5VRURfaW1wbChtb2R1bGUsIHN0YXR1cyk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5Qm9vbF9Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTQzMTgsMjUgKzQ0OTEsMjggQEAKICJSZXR1cm4gVHJ1ZSBpZiB0aGUgcHJvY2VzcyByZXR1cm5pbmcgc3RhdHVzIHdhcyBzdG9wcGVkLiIpOwogCiAjZGVmaW5lIE9TX1dJRlNUT1BQRURfTUVUSE9EREVGICAgIFwKLSAgICB7IldJRlNUT1BQRUQiLCAoUHlDRnVuY3Rpb24pb3NfV0lGU1RPUFBFRCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX1dJRlNUT1BQRURfX2RvY19ffSwKKyAgICB7IldJRlNUT1BQRUQiLCAoUHlDRnVuY3Rpb24pb3NfV0lGU1RPUFBFRCwgTUVUSF9GQVNUQ0FMTCwgb3NfV0lGU1RPUFBFRF9fZG9jX199LAogCiBzdGF0aWMgaW50CiBvc19XSUZTVE9QUEVEX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IHN0YXR1cyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19XSUZTVE9QUEVEKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfV0lGU1RPUFBFRChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RhdHVzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RhdHVzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiaTpXSUZTVE9QUEVEIiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgc3RhdHVzOwogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTpXSUZTVE9QUEVEIiwgX2tleXdvcmRzLAotICAgICAgICAmc3RhdHVzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnN0YXR1cykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfV0lGU1RPUFBFRF9pbXBsKG1vZHVsZSwgc3RhdHVzKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlCb29sX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNDM1NCwyNSArNDUzMCwyOCBAQAogIlJldHVybiBUcnVlIGlmIHRoZSBwcm9jZXNzIHJldHVybmluZyBzdGF0dXMgd2FzIHRlcm1pbmF0ZWQgYnkgYSBzaWduYWwuIik7CiAKICNkZWZpbmUgT1NfV0lGU0lHTkFMRURfTUVUSE9EREVGICAgIFwKLSAgICB7IldJRlNJR05BTEVEIiwgKFB5Q0Z1bmN0aW9uKW9zX1dJRlNJR05BTEVELCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfV0lGU0lHTkFMRURfX2RvY19ffSwKKyAgICB7IldJRlNJR05BTEVEIiwgKFB5Q0Z1bmN0aW9uKW9zX1dJRlNJR05BTEVELCBNRVRIX0ZBU1RDQUxMLCBvc19XSUZTSUdOQUxFRF9fZG9jX199LAogCiBzdGF0aWMgaW50CiBvc19XSUZTSUdOQUxFRF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBzdGF0dXMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfV0lGU0lHTkFMRUQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19XSUZTSUdOQUxFRChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RhdHVzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RhdHVzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiaTpXSUZTSUdOQUxFRCIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IHN0YXR1czsKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImk6V0lGU0lHTkFMRUQiLCBfa2V5d29yZHMsCi0gICAgICAgICZzdGF0dXMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc3RhdHVzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19XSUZTSUdOQUxFRF9pbXBsKG1vZHVsZSwgc3RhdHVzKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlCb29sX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNDM5MCwyNSArNDU2OSwyOCBAQAogIlJldHVybiBUcnVlIGlmIHRoZSBwcm9jZXNzIHJldHVybmluZyBzdGF0dXMgZXhpdGVkIHZpYSB0aGUgZXhpdCgpIHN5c3RlbSBjYWxsLiIpOwogCiAjZGVmaW5lIE9TX1dJRkVYSVRFRF9NRVRIT0RERUYgICAgXAotICAgIHsiV0lGRVhJVEVEIiwgKFB5Q0Z1bmN0aW9uKW9zX1dJRkVYSVRFRCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX1dJRkVYSVRFRF9fZG9jX199LAorICAgIHsiV0lGRVhJVEVEIiwgKFB5Q0Z1bmN0aW9uKW9zX1dJRkVYSVRFRCwgTUVUSF9GQVNUQ0FMTCwgb3NfV0lGRVhJVEVEX19kb2NfX30sCiAKIHN0YXRpYyBpbnQKIG9zX1dJRkVYSVRFRF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBzdGF0dXMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfV0lGRVhJVEVEKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfV0lGRVhJVEVEKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdGF0dXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdGF0dXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJpOldJRkVYSVRFRCIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IHN0YXR1czsKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImk6V0lGRVhJVEVEIiwgX2tleXdvcmRzLAotICAgICAgICAmc3RhdHVzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnN0YXR1cykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfV0lGRVhJVEVEX2ltcGwobW9kdWxlLCBzdGF0dXMpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC00NDI2LDI1ICs0NjA4LDI4IEBACiAiUmV0dXJuIHRoZSBwcm9jZXNzIHJldHVybiBjb2RlIGZyb20gc3RhdHVzLiIpOwogCiAjZGVmaW5lIE9TX1dFWElUU1RBVFVTX01FVEhPRERFRiAgICBcCi0gICAgeyJXRVhJVFNUQVRVUyIsIChQeUNGdW5jdGlvbilvc19XRVhJVFNUQVRVUywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX1dFWElUU1RBVFVTX19kb2NfX30sCisgICAgeyJXRVhJVFNUQVRVUyIsIChQeUNGdW5jdGlvbilvc19XRVhJVFNUQVRVUywgTUVUSF9GQVNUQ0FMTCwgb3NfV0VYSVRTVEFUVVNfX2RvY19ffSwKIAogc3RhdGljIGludAogb3NfV0VYSVRTVEFUVVNfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgc3RhdHVzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX1dFWElUU1RBVFVTKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfV0VYSVRTVEFUVVMoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0YXR1cyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InN0YXR1cyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Imk6V0VYSVRTVEFUVVMiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBzdGF0dXM7CiAgICAgaW50IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpOldFWElUU1RBVFVTIiwgX2tleXdvcmRzLAotICAgICAgICAmc3RhdHVzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnN0YXR1cykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfV0VYSVRTVEFUVVNfaW1wbChtb2R1bGUsIHN0YXR1cyk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTQ0NjIsMjUgKzQ2NDcsMjggQEAKICJSZXR1cm4gdGhlIHNpZ25hbCB0aGF0IHRlcm1pbmF0ZWQgdGhlIHByb2Nlc3MgdGhhdCBwcm92aWRlZCB0aGUgc3RhdHVzIHZhbHVlLiIpOwogCiAjZGVmaW5lIE9TX1dURVJNU0lHX01FVEhPRERFRiAgICBcCi0gICAgeyJXVEVSTVNJRyIsIChQeUNGdW5jdGlvbilvc19XVEVSTVNJRywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX1dURVJNU0lHX19kb2NfX30sCisgICAgeyJXVEVSTVNJRyIsIChQeUNGdW5jdGlvbilvc19XVEVSTVNJRywgTUVUSF9GQVNUQ0FMTCwgb3NfV1RFUk1TSUdfX2RvY19ffSwKIAogc3RhdGljIGludAogb3NfV1RFUk1TSUdfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgc3RhdHVzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX1dURVJNU0lHKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfV1RFUk1TSUcoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0YXR1cyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InN0YXR1cyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Imk6V1RFUk1TSUciLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBzdGF0dXM7CiAgICAgaW50IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpOldURVJNU0lHIiwgX2tleXdvcmRzLAotICAgICAgICAmc3RhdHVzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnN0YXR1cykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfV1RFUk1TSUdfaW1wbChtb2R1bGUsIHN0YXR1cyk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTQ0OTgsMjUgKzQ2ODYsMjggQEAKICJSZXR1cm4gdGhlIHNpZ25hbCB0aGF0IHN0b3BwZWQgdGhlIHByb2Nlc3MgdGhhdCBwcm92aWRlZCB0aGUgc3RhdHVzIHZhbHVlLiIpOwogCiAjZGVmaW5lIE9TX1dTVE9QU0lHX01FVEhPRERFRiAgICBcCi0gICAgeyJXU1RPUFNJRyIsIChQeUNGdW5jdGlvbilvc19XU1RPUFNJRywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX1dTVE9QU0lHX19kb2NfX30sCisgICAgeyJXU1RPUFNJRyIsIChQeUNGdW5jdGlvbilvc19XU1RPUFNJRywgTUVUSF9GQVNUQ0FMTCwgb3NfV1NUT1BTSUdfX2RvY19ffSwKIAogc3RhdGljIGludAogb3NfV1NUT1BTSUdfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgc3RhdHVzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX1dTVE9QU0lHKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfV1NUT1BTSUcoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0YXR1cyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InN0YXR1cyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Imk6V1NUT1BTSUciLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBzdGF0dXM7CiAgICAgaW50IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpOldTVE9QU0lHIiwgX2tleXdvcmRzLAotICAgICAgICAmc3RhdHVzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnN0YXR1cykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfV1NUT1BTSUdfaW1wbChtb2R1bGUsIHN0YXR1cyk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTQ1NDcsOCArNDczOCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IGZkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmZzdGF0dmZzIiwgJmZkKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6ZnN0YXR2ZnMiLCAmZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfZnN0YXR2ZnNfaW1wbChtb2R1bGUsIGZkKTsKIAogZXhpdDoKQEAgLTQ1NzAsMjEgKzQ3NjIsMjMgQEAKICIgIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi4iKTsKIAogI2RlZmluZSBPU19TVEFUVkZTX01FVEhPRERFRiAgICBcCi0gICAgeyJzdGF0dmZzIiwgKFB5Q0Z1bmN0aW9uKW9zX3N0YXR2ZnMsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19zdGF0dmZzX19kb2NfX30sCisgICAgeyJzdGF0dmZzIiwgKFB5Q0Z1bmN0aW9uKW9zX3N0YXR2ZnMsIE1FVEhfRkFTVENBTEwsIG9zX3N0YXR2ZnNfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX3N0YXR2ZnNfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfc3RhdHZmcyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3N0YXR2ZnMoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyY6c3RhdHZmcyIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgic3RhdHZmcyIsICJwYXRoIiwgMCwgUEFUSF9IQVZFX0ZTVEFUVkZTKTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mOnN0YXR2ZnMiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zdGF0dmZzX2ltcGwobW9kdWxlLCAmcGF0aCk7CiAKIGV4aXQ6CkBAIC00NjA1LDIxICs0Nzk5LDIzIEBACiAiUmV0dXJuIGRpc2sgdXNhZ2Ugc3RhdGlzdGljcyBhYm91dCB0aGUgZ2l2ZW4gcGF0aCBhcyBhICh0b3RhbCwgZnJlZSkgdHVwbGUuIik7CiAKICNkZWZpbmUgT1NfX0dFVERJU0tVU0FHRV9NRVRIT0RERUYgICAgXAotICAgIHsiX2dldGRpc2t1c2FnZSIsIChQeUNGdW5jdGlvbilvc19fZ2V0ZGlza3VzYWdlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfX2dldGRpc2t1c2FnZV9fZG9jX199LAorICAgIHsiX2dldGRpc2t1c2FnZSIsIChQeUNGdW5jdGlvbilvc19fZ2V0ZGlza3VzYWdlLCBNRVRIX0ZBU1RDQUxMLCBvc19fZ2V0ZGlza3VzYWdlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19fZ2V0ZGlza3VzYWdlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfVU5JQ09ERSAqcGF0aCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19fZ2V0ZGlza3VzYWdlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfX2dldGRpc2t1c2FnZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ1Ol9nZXRkaXNrdXNhZ2UiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5X1VOSUNPREUgKnBhdGg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ1Ol9nZXRkaXNrdXNhZ2UiLCBfa2V5d29yZHMsCi0gICAgICAgICZwYXRoKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnBhdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfX2dldGRpc2t1c2FnZV9pbXBsKG1vZHVsZSwgcGF0aCk7CiAKIGV4aXQ6CkBAIC00NjUzLDExICs0ODQ5LDEzIEBACiAgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTyY6ZnBhdGhjb25mIiwKLSAgICAgICAgJmZkLCBjb252X3BhdGhfY29uZm5hbWUsICZuYW1lKSkKKyAgICAgICAgJmZkLCBjb252X3BhdGhfY29uZm5hbWUsICZuYW1lKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19mcGF0aGNvbmZfaW1wbChtb2R1bGUsIGZkLCBuYW1lKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNDY3OSwyNiArNDg3NywyOSBAQAogIiAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLiIpOwogCiAjZGVmaW5lIE9TX1BBVEhDT05GX01FVEhPRERFRiAgICBcCi0gICAgeyJwYXRoY29uZiIsIChQeUNGdW5jdGlvbilvc19wYXRoY29uZiwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3BhdGhjb25mX19kb2NfX30sCisgICAgeyJwYXRoY29uZiIsIChQeUNGdW5jdGlvbilvc19wYXRoY29uZiwgTUVUSF9GQVNUQ0FMTCwgb3NfcGF0aGNvbmZfX2RvY19ffSwKIAogc3RhdGljIGxvbmcKIG9zX3BhdGhjb25mX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgbmFtZSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19wYXRoY29uZihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3BhdGhjb25mKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm5hbWUiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm5hbWUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJk8mOnBhdGhjb25mIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJwYXRoY29uZiIsICJwYXRoIiwgMCwgUEFUSF9IQVZFX0ZQQVRIQ09ORik7CiAgICAgaW50IG5hbWU7CiAgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJjpwYXRoY29uZiIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBjb252X3BhdGhfY29uZm5hbWUsICZuYW1lKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBjb252X3BhdGhfY29uZm5hbWUsICZuYW1lKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19wYXRoY29uZl9pbXBsKG1vZHVsZSwgJnBhdGgsIG5hbWUpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC00NzMwLDggKzQ5MzEsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBuYW1lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpjb25mc3RyIiwgY29udl9jb25mc3RyX2NvbmZuYW1lLCAmbmFtZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpjb25mc3RyIiwgY29udl9jb25mc3RyX2NvbmZuYW1lLCAmbmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19jb25mc3RyX2ltcGwobW9kdWxlLCBuYW1lKTsKIAogZXhpdDoKQEAgLTQ3NjEsMTEgKzQ5NjMsMTMgQEAKICAgICBpbnQgbmFtZTsKICAgICBsb25nIF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOnN5c2NvbmYiLCBjb252X3N5c2NvbmZfY29uZm5hbWUsICZuYW1lKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOnN5c2NvbmYiLCBjb252X3N5c2NvbmZfY29uZm5hbWUsICZuYW1lKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19zeXNjb25mX2ltcGwobW9kdWxlLCBuYW1lKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNDc5NSw2ICs0OTk5LDYxIEBACiAgICAgcmV0dXJuIG9zX2Fib3J0X2ltcGwobW9kdWxlKTsKIH0KIAorI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKG9zX3N0YXJ0ZmlsZV9fZG9jX18sCisic3RhcnRmaWxlKCRtb2R1bGUsIC8sIGZpbGVwYXRoLCBvcGVyYXRpb249Tm9uZSlcbiIKKyItLVxuIgorIlxuIgorInN0YXJ0ZmlsZShmaWxlcGF0aCBbLCBvcGVyYXRpb25dKVxuIgorIlxuIgorIlN0YXJ0IGEgZmlsZSB3aXRoIGl0cyBhc3NvY2lhdGVkIGFwcGxpY2F0aW9uLlxuIgorIlxuIgorIldoZW4gXCJvcGVyYXRpb25cIiBpcyBub3Qgc3BlY2lmaWVkIG9yIFwib3BlblwiLCB0aGlzIGFjdHMgbGlrZVxuIgorImRvdWJsZS1jbGlja2luZyB0aGUgZmlsZSBpbiBFeHBsb3Jlciwgb3IgZ2l2aW5nIHRoZSBmaWxlIG5hbWUgYXMgYW5cbiIKKyJhcmd1bWVudCB0byB0aGUgRE9TIFwic3RhcnRcIiBjb21tYW5kOiB0aGUgZmlsZSBpcyBvcGVuZWQgd2l0aCB3aGF0ZXZlclxuIgorImFwcGxpY2F0aW9uIChpZiBhbnkpIGl0cyBleHRlbnNpb24gaXMgYXNzb2NpYXRlZC5cbiIKKyJXaGVuIGFub3RoZXIgXCJvcGVyYXRpb25cIiBpcyBnaXZlbiwgaXQgc3BlY2lmaWVzIHdoYXQgc2hvdWxkIGJlIGRvbmUgd2l0aFxuIgorInRoZSBmaWxlLiAgQSB0eXBpY2FsIG9wZXJhdGlvbiBpcyBcInByaW50XCIuXG4iCisiXG4iCisic3RhcnRmaWxlIHJldHVybnMgYXMgc29vbiBhcyB0aGUgYXNzb2NpYXRlZCBhcHBsaWNhdGlvbiBpcyBsYXVuY2hlZC5cbiIKKyJUaGVyZSBpcyBubyBvcHRpb24gdG8gd2FpdCBmb3IgdGhlIGFwcGxpY2F0aW9uIHRvIGNsb3NlLCBhbmQgbm8gd2F5XG4iCisidG8gcmV0cmlldmUgdGhlIGFwcGxpY2F0aW9uXCdzIGV4aXQgc3RhdHVzLlxuIgorIlxuIgorIlRoZSBmaWxlcGF0aCBpcyByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBkaXJlY3RvcnkuICBJZiB5b3Ugd2FudCB0byB1c2VcbiIKKyJhbiBhYnNvbHV0ZSBwYXRoLCBtYWtlIHN1cmUgdGhlIGZpcnN0IGNoYXJhY3RlciBpcyBub3QgYSBzbGFzaCAoXCIvXCIpO1xuIgorInRoZSB1bmRlcmx5aW5nIFdpbjMyIFNoZWxsRXhlY3V0ZSBmdW5jdGlvbiBkb2VzblwndCB3b3JrIGlmIGl0IGlzLiIpOworCisjZGVmaW5lIE9TX1NUQVJURklMRV9NRVRIT0RERUYgICAgXAorICAgIHsic3RhcnRmaWxlIiwgKFB5Q0Z1bmN0aW9uKW9zX3N0YXJ0ZmlsZSwgTUVUSF9GQVNUQ0FMTCwgb3Nfc3RhcnRmaWxlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zdGFydGZpbGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKmZpbGVwYXRoLCBQeV9VTklDT0RFICpvcGVyYXRpb24pOworCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc3RhcnRmaWxlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZmlsZXBhdGgiLCAib3BlcmF0aW9uIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZ8dTpzdGFydGZpbGUiLCBfa2V5d29yZHMsIDB9OworICAgIHBhdGhfdCBmaWxlcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJzdGFydGZpbGUiLCAiZmlsZXBhdGgiLCAwLCAwKTsKKyAgICBQeV9VTklDT0RFICpvcGVyYXRpb24gPSBOVUxMOworCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmZmlsZXBhdGgsICZvcGVyYXRpb24pKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc3RhcnRmaWxlX2ltcGwobW9kdWxlLCAmZmlsZXBhdGgsIG9wZXJhdGlvbik7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgZmlsZXBhdGggKi8KKyAgICBwYXRoX2NsZWFudXAoJmZpbGVwYXRoKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKICNpZiBkZWZpbmVkKEhBVkVfR0VUTE9BREFWRykKIAogUHlEb2NfU1RSVkFSKG9zX2dldGxvYWRhdmdfX2RvY19fLApAQCAtNDgzMSwyMSArNTA5MCwyMyBAQAogIklmIHRoZSBkZXZpY2UgaXMgbm90IGEgdGVybWluYWwsIHJldHVybiBOb25lLiIpOwogCiAjZGVmaW5lIE9TX0RFVklDRV9FTkNPRElOR19NRVRIT0RERUYgICAgXAotICAgIHsiZGV2aWNlX2VuY29kaW5nIiwgKFB5Q0Z1bmN0aW9uKW9zX2RldmljZV9lbmNvZGluZywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2RldmljZV9lbmNvZGluZ19fZG9jX199LAorICAgIHsiZGV2aWNlX2VuY29kaW5nIiwgKFB5Q0Z1bmN0aW9uKW9zX2RldmljZV9lbmNvZGluZywgTUVUSF9GQVNUQ0FMTCwgb3NfZGV2aWNlX2VuY29kaW5nX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19kZXZpY2VfZW5jb2RpbmdfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgZmQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfZGV2aWNlX2VuY29kaW5nKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfZGV2aWNlX2VuY29kaW5nKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJmZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImZkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiaTpkZXZpY2VfZW5jb2RpbmciLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBmZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImk6ZGV2aWNlX2VuY29kaW5nIiwgX2tleXdvcmRzLAotICAgICAgICAmZmQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfZGV2aWNlX2VuY29kaW5nX2ltcGwobW9kdWxlLCBmZCk7CiAKIGV4aXQ6CkBAIC00ODc1LDggKzUxMzYsOSBAQAogICAgIHVpZF90IHN1aWQ7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mTyZPJjpzZXRyZXN1aWQiLAotICAgICAgICBfUHlfVWlkX0NvbnZlcnRlciwgJnJ1aWQsIF9QeV9VaWRfQ29udmVydGVyLCAmZXVpZCwgX1B5X1VpZF9Db252ZXJ0ZXIsICZzdWlkKSkKKyAgICAgICAgX1B5X1VpZF9Db252ZXJ0ZXIsICZydWlkLCBfUHlfVWlkX0NvbnZlcnRlciwgJmV1aWQsIF9QeV9VaWRfQ29udmVydGVyLCAmc3VpZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zZXRyZXN1aWRfaW1wbChtb2R1bGUsIHJ1aWQsIGV1aWQsIHN1aWQpOwogCiBleGl0OgpAQCAtNDkwOCw4ICs1MTcwLDkgQEAKICAgICBnaWRfdCBzZ2lkOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJk8mTyY6c2V0cmVzZ2lkIiwKLSAgICAgICAgX1B5X0dpZF9Db252ZXJ0ZXIsICZyZ2lkLCBfUHlfR2lkX0NvbnZlcnRlciwgJmVnaWQsIF9QeV9HaWRfQ29udmVydGVyLCAmc2dpZCkpCisgICAgICAgIF9QeV9HaWRfQ29udmVydGVyLCAmcmdpZCwgX1B5X0dpZF9Db252ZXJ0ZXIsICZlZ2lkLCBfUHlfR2lkX0NvbnZlcnRlciwgJnNnaWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2V0cmVzZ2lkX2ltcGwobW9kdWxlLCByZ2lkLCBlZ2lkLCBzZ2lkKTsKIAogZXhpdDoKQEAgLTQ5NzYsMjQgKzUyMzksMjYgQEAKICIgIHRoZSBsaW5rIHBvaW50cyB0by4iKTsKIAogI2RlZmluZSBPU19HRVRYQVRUUl9NRVRIT0RERUYgICAgXAotICAgIHsiZ2V0eGF0dHIiLCAoUHlDRnVuY3Rpb24pb3NfZ2V0eGF0dHIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19nZXR4YXR0cl9fZG9jX199LAorICAgIHsiZ2V0eGF0dHIiLCAoUHlDRnVuY3Rpb24pb3NfZ2V0eGF0dHIsIE1FVEhfRkFTVENBTEwsIG9zX2dldHhhdHRyX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19nZXR4YXR0cl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgcGF0aF90ICphdHRyaWJ1dGUsCiAgICAgICAgICAgICAgICAgIGludCBmb2xsb3dfc3ltbGlua3MpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfZ2V0eGF0dHIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19nZXR4YXR0cihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJhdHRyaWJ1dGUiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJhdHRyaWJ1dGUiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZPJnwkcDpnZXR4YXR0ciIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgiZ2V0eGF0dHIiLCAicGF0aCIsIDAsIDEpOwogICAgIHBhdGhfdCBhdHRyaWJ1dGUgPSBQQVRIX1RfSU5JVElBTElaRSgiZ2V0eGF0dHIiLCAiYXR0cmlidXRlIiwgMCwgMCk7CiAgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8mfCRwOmdldHhhdHRyIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIHBhdGhfY29udmVydGVyLCAmYXR0cmlidXRlLCAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBwYXRoX2NvbnZlcnRlciwgJmF0dHJpYnV0ZSwgJmZvbGxvd19zeW1saW5rcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19nZXR4YXR0cl9pbXBsKG1vZHVsZSwgJnBhdGgsICZhdHRyaWJ1dGUsIGZvbGxvd19zeW1saW5rcyk7CiAKIGV4aXQ6CkBAIC01MDIyLDI2ICs1Mjg3LDI4IEBACiAiICB0aGUgbGluayBwb2ludHMgdG8uIik7CiAKICNkZWZpbmUgT1NfU0VUWEFUVFJfTUVUSE9EREVGICAgIFwKLSAgICB7InNldHhhdHRyIiwgKFB5Q0Z1bmN0aW9uKW9zX3NldHhhdHRyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3Nfc2V0eGF0dHJfX2RvY19ffSwKKyAgICB7InNldHhhdHRyIiwgKFB5Q0Z1bmN0aW9uKW9zX3NldHhhdHRyLCBNRVRIX0ZBU1RDQUxMLCBvc19zZXR4YXR0cl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3Nfc2V0eGF0dHJfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIHBhdGhfdCAqYXR0cmlidXRlLAogICAgICAgICAgICAgICAgICBQeV9idWZmZXIgKnZhbHVlLCBpbnQgZmxhZ3MsIGludCBmb2xsb3dfc3ltbGlua3MpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfc2V0eGF0dHIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19zZXR4YXR0cihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJhdHRyaWJ1dGUiLCAidmFsdWUiLCAiZmxhZ3MiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJhdHRyaWJ1dGUiLCAidmFsdWUiLCAiZmxhZ3MiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZPJnkqfGkkcDpzZXR4YXR0ciIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgic2V0eGF0dHIiLCAicGF0aCIsIDAsIDEpOwogICAgIHBhdGhfdCBhdHRyaWJ1dGUgPSBQQVRIX1RfSU5JVElBTElaRSgic2V0eGF0dHIiLCAiYXR0cmlidXRlIiwgMCwgMCk7CiAgICAgUHlfYnVmZmVyIHZhbHVlID0ge05VTEwsIE5VTEx9OwogICAgIGludCBmbGFncyA9IDA7CiAgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8meSp8aSRwOnNldHhhdHRyIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIHBhdGhfY29udmVydGVyLCAmYXR0cmlidXRlLCAmdmFsdWUsICZmbGFncywgJmZvbGxvd19zeW1saW5rcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgcGF0aF9jb252ZXJ0ZXIsICZhdHRyaWJ1dGUsICZ2YWx1ZSwgJmZsYWdzLCAmZm9sbG93X3N5bWxpbmtzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3NldHhhdHRyX2ltcGwobW9kdWxlLCAmcGF0aCwgJmF0dHJpYnV0ZSwgJnZhbHVlLCBmbGFncywgZm9sbG93X3N5bWxpbmtzKTsKIAogZXhpdDoKQEAgLTUwNTAsOCArNTMxNyw5IEBACiAgICAgLyogQ2xlYW51cCBmb3IgYXR0cmlidXRlICovCiAgICAgcGF0aF9jbGVhbnVwKCZhdHRyaWJ1dGUpOwogICAgIC8qIENsZWFudXAgZm9yIHZhbHVlICovCi0gICAgaWYgKHZhbHVlLm9iaikKKyAgICBpZiAodmFsdWUub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmFsdWUpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC01MDcyLDI0ICs1MzQwLDI2IEBACiAiICB0aGUgbGluayBwb2ludHMgdG8uIik7CiAKICNkZWZpbmUgT1NfUkVNT1ZFWEFUVFJfTUVUSE9EREVGICAgIFwKLSAgICB7InJlbW92ZXhhdHRyIiwgKFB5Q0Z1bmN0aW9uKW9zX3JlbW92ZXhhdHRyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfcmVtb3ZleGF0dHJfX2RvY19ffSwKKyAgICB7InJlbW92ZXhhdHRyIiwgKFB5Q0Z1bmN0aW9uKW9zX3JlbW92ZXhhdHRyLCBNRVRIX0ZBU1RDQUxMLCBvc19yZW1vdmV4YXR0cl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfcmVtb3ZleGF0dHJfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIHBhdGhfdCAqYXR0cmlidXRlLAogICAgICAgICAgICAgICAgICAgICBpbnQgZm9sbG93X3N5bWxpbmtzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3JlbW92ZXhhdHRyKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfcmVtb3ZleGF0dHIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiYXR0cmlidXRlIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAiYXR0cmlidXRlIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mTyZ8JHA6cmVtb3ZleGF0dHIiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoInJlbW92ZXhhdHRyIiwgInBhdGgiLCAwLCAxKTsKICAgICBwYXRoX3QgYXR0cmlidXRlID0gUEFUSF9UX0lOSVRJQUxJWkUoInJlbW92ZXhhdHRyIiwgImF0dHJpYnV0ZSIsIDAsIDApOwogICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJnwkcDpyZW1vdmV4YXR0ciIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBwYXRoX2NvbnZlcnRlciwgJmF0dHJpYnV0ZSwgJmZvbGxvd19zeW1saW5rcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgcGF0aF9jb252ZXJ0ZXIsICZhdHRyaWJ1dGUsICZmb2xsb3dfc3ltbGlua3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfcmVtb3ZleGF0dHJfaW1wbChtb2R1bGUsICZwYXRoLCAmYXR0cmlidXRlLCBmb2xsb3dfc3ltbGlua3MpOwogCiBleGl0OgpAQCAtNTExOCwyMiArNTM4OCwyNCBAQAogIiAgdGhlIGxpbmsgcG9pbnRzIHRvLiIpOwogCiAjZGVmaW5lIE9TX0xJU1RYQVRUUl9NRVRIT0RERUYgICAgXAotICAgIHsibGlzdHhhdHRyIiwgKFB5Q0Z1bmN0aW9uKW9zX2xpc3R4YXR0ciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2xpc3R4YXR0cl9fZG9jX199LAorICAgIHsibGlzdHhhdHRyIiwgKFB5Q0Z1bmN0aW9uKW9zX2xpc3R4YXR0ciwgTUVUSF9GQVNUQ0FMTCwgb3NfbGlzdHhhdHRyX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19saXN0eGF0dHJfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBmb2xsb3dfc3ltbGlua3MpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfbGlzdHhhdHRyKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfbGlzdHhhdHRyKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE8mJHA6bGlzdHhhdHRyIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJsaXN0eGF0dHIiLCAicGF0aCIsIDEsIDEpOwogICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE8mJHA6bGlzdHhhdHRyIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZmb2xsb3dfc3ltbGlua3MpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZmb2xsb3dfc3ltbGlua3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfbGlzdHhhdHRyX2ltcGwobW9kdWxlLCAmcGF0aCwgZm9sbG93X3N5bWxpbmtzKTsKIAogZXhpdDoKQEAgLTUxNjMsOCArNTQzNSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBzaXplOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJuOnVyYW5kb20iLCAmc2l6ZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJuOnVyYW5kb20iLCAmc2l6ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc191cmFuZG9tX2ltcGwobW9kdWxlLCBzaXplKTsKIAogZXhpdDoKQEAgLTUxNzUsNyArNTQ0OCwxMSBAQAogImNwdV9jb3VudCgkbW9kdWxlLCAvKVxuIgogIi0tXG4iCiAiXG4iCi0iUmV0dXJuIHRoZSBudW1iZXIgb2YgQ1BVcyBpbiB0aGUgc3lzdGVtOyByZXR1cm4gTm9uZSBpZiBpbmRldGVybWluYWJsZS4iKTsKKyJSZXR1cm4gdGhlIG51bWJlciBvZiBDUFVzIGluIHRoZSBzeXN0ZW07IHJldHVybiBOb25lIGlmIGluZGV0ZXJtaW5hYmxlLlxuIgorIlxuIgorIlRoaXMgbnVtYmVyIGlzIG5vdCBlcXVpdmFsZW50IHRvIHRoZSBudW1iZXIgb2YgQ1BVcyB0aGUgY3VycmVudCBwcm9jZXNzIGNhblxuIgorInVzZS4gIFRoZSBudW1iZXIgb2YgdXNhYmxlIENQVXMgY2FuIGJlIG9idGFpbmVkIHdpdGhcbiIKKyJgYGxlbihvcy5zY2hlZF9nZXRhZmZpbml0eSgwKSlgYCIpOwogCiAjZGVmaW5lIE9TX0NQVV9DT1VOVF9NRVRIT0RERUYgICAgXAogICAgIHsiY3B1X2NvdW50IiwgKFB5Q0Z1bmN0aW9uKW9zX2NwdV9jb3VudCwgTUVUSF9OT0FSR1MsIG9zX2NwdV9jb3VudF9fZG9jX199LApAQCAtNTIwOCwxMSArNTQ4NSwxMyBAQAogICAgIGludCBmZDsKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpnZXRfaW5oZXJpdGFibGUiLCAmZmQpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpnZXRfaW5oZXJpdGFibGUiLCAmZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX2dldF9pbmhlcml0YWJsZV9pbXBsKG1vZHVsZSwgZmQpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC01MjM5LDggKzU1MTgsOSBAQAogICAgIGludCBpbmhlcml0YWJsZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWk6c2V0X2luaGVyaXRhYmxlIiwKLSAgICAgICAgJmZkLCAmaW5oZXJpdGFibGUpKQorICAgICAgICAmZmQsICZpbmhlcml0YWJsZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zZXRfaW5oZXJpdGFibGVfaW1wbChtb2R1bGUsIGZkLCBpbmhlcml0YWJsZSk7CiAKIGV4aXQ6CkBAIC01MjU5LDIwICs1NTM5LDIyIEBACiAgICAgeyJnZXRfaGFuZGxlX2luaGVyaXRhYmxlIiwgKFB5Q0Z1bmN0aW9uKW9zX2dldF9oYW5kbGVfaW5oZXJpdGFibGUsIE1FVEhfTywgb3NfZ2V0X2hhbmRsZV9pbmhlcml0YWJsZV9fZG9jX199LAogCiBzdGF0aWMgaW50Ci1vc19nZXRfaGFuZGxlX2luaGVyaXRhYmxlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfaW50cHRyX3QgaGFuZGxlKTsKK29zX2dldF9oYW5kbGVfaW5oZXJpdGFibGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnRwdHJfdCBoYW5kbGUpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfZ2V0X2hhbmRsZV9pbmhlcml0YWJsZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIFB5X2ludHB0cl90IGhhbmRsZTsKKyAgICBpbnRwdHJfdCBoYW5kbGU7CiAgICAgaW50IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgX1B5X1BBUlNFX0lOVFBUUiAiOmdldF9oYW5kbGVfaW5oZXJpdGFibGUiLCAmaGFuZGxlKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgX1B5X1BBUlNFX0lOVFBUUiAiOmdldF9oYW5kbGVfaW5oZXJpdGFibGUiLCAmaGFuZGxlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19nZXRfaGFuZGxlX2luaGVyaXRhYmxlX2ltcGwobW9kdWxlLCBoYW5kbGUpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC01MjkzLDE5ICs1NTc1LDIwIEBACiAgICAgeyJzZXRfaGFuZGxlX2luaGVyaXRhYmxlIiwgKFB5Q0Z1bmN0aW9uKW9zX3NldF9oYW5kbGVfaW5oZXJpdGFibGUsIE1FVEhfVkFSQVJHUywgb3Nfc2V0X2hhbmRsZV9pbmhlcml0YWJsZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfc2V0X2hhbmRsZV9pbmhlcml0YWJsZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2ludHB0cl90IGhhbmRsZSwKK29zX3NldF9oYW5kbGVfaW5oZXJpdGFibGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnRwdHJfdCBoYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGluaGVyaXRhYmxlKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX3NldF9oYW5kbGVfaW5oZXJpdGFibGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgUHlfaW50cHRyX3QgaGFuZGxlOworICAgIGludHB0cl90IGhhbmRsZTsKICAgICBpbnQgaW5oZXJpdGFibGU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiIgX1B5X1BBUlNFX0lOVFBUUiAicDpzZXRfaGFuZGxlX2luaGVyaXRhYmxlIiwKLSAgICAgICAgJmhhbmRsZSwgJmluaGVyaXRhYmxlKSkKKyAgICAgICAgJmhhbmRsZSwgJmluaGVyaXRhYmxlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3NldF9oYW5kbGVfaW5oZXJpdGFibGVfaW1wbChtb2R1bGUsIGhhbmRsZSwgaW5oZXJpdGFibGUpOwogCiBleGl0OgpAQCAtNTMxNCw2ICs1NTk3LDc1IEBACiAKICNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCiAKK1B5RG9jX1NUUlZBUihvc19mc3BhdGhfX2RvY19fLAorImZzcGF0aCgkbW9kdWxlLCAvLCBwYXRoKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBmaWxlIHN5c3RlbSBwYXRoIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBvYmplY3QuXG4iCisiXG4iCisiSWYgdGhlIG9iamVjdCBpcyBzdHIgb3IgYnl0ZXMsIHRoZW4gYWxsb3cgaXQgdG8gcGFzcyB0aHJvdWdoIGFzLWlzLiBJZiB0aGVcbiIKKyJvYmplY3QgZGVmaW5lcyBfX2ZzcGF0aF9fKCksIHRoZW4gcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhhdCBtZXRob2QuIEFsbCBvdGhlclxuIgorInR5cGVzIHJhaXNlIGEgVHlwZUVycm9yLiIpOworCisjZGVmaW5lIE9TX0ZTUEFUSF9NRVRIT0RERUYgICAgXAorICAgIHsiZnNwYXRoIiwgKFB5Q0Z1bmN0aW9uKW9zX2ZzcGF0aCwgTUVUSF9GQVNUQ0FMTCwgb3NfZnNwYXRoX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19mc3BhdGhfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqcGF0aCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19mc3BhdGgoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTzpmc3BhdGgiLCBfa2V5d29yZHMsIDB9OworICAgIFB5T2JqZWN0ICpwYXRoOworCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZwYXRoKSkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IG9zX2ZzcGF0aF9pbXBsKG1vZHVsZSwgcGF0aCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2lmIGRlZmluZWQoSEFWRV9HRVRSQU5ET01fU1lTQ0FMTCkKKworUHlEb2NfU1RSVkFSKG9zX2dldHJhbmRvbV9fZG9jX18sCisiZ2V0cmFuZG9tKCRtb2R1bGUsIC8sIHNpemUsIGZsYWdzPTApXG4iCisiLS1cbiIKKyJcbiIKKyJPYnRhaW4gYSBzZXJpZXMgb2YgcmFuZG9tIGJ5dGVzLiIpOworCisjZGVmaW5lIE9TX0dFVFJBTkRPTV9NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0cmFuZG9tIiwgKFB5Q0Z1bmN0aW9uKW9zX2dldHJhbmRvbSwgTUVUSF9GQVNUQ0FMTCwgb3NfZ2V0cmFuZG9tX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRyYW5kb21faW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9zc2l6ZV90IHNpemUsIGludCBmbGFncyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRyYW5kb20oUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzaXplIiwgImZsYWdzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsibnxpOmdldHJhbmRvbSIsIF9rZXl3b3JkcywgMH07CisgICAgUHlfc3NpemVfdCBzaXplOworICAgIGludCBmbGFncyA9IDA7CisKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnNpemUsICZmbGFncykpIHsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBvc19nZXRyYW5kb21faW1wbChtb2R1bGUsIHNpemUsIGZsYWdzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChIQVZFX0dFVFJBTkRPTV9TWVNDQUxMKSAqLworCiAjaWZuZGVmIE9TX1RUWU5BTUVfTUVUSE9EREVGCiAgICAgI2RlZmluZSBPU19UVFlOQU1FX01FVEhPRERFRgogI2VuZGlmIC8qICFkZWZpbmVkKE9TX1RUWU5BTUVfTUVUSE9EREVGKSAqLwpAQCAtNTQ5NCw2ICs1ODQ2LDEwIEBACiAgICAgI2RlZmluZSBPU19HRVRHSURfTUVUSE9EREVGCiAjZW5kaWYgLyogIWRlZmluZWQoT1NfR0VUR0lEX01FVEhPRERFRikgKi8KIAorI2lmbmRlZiBPU19HRVRQSURfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19HRVRQSURfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfR0VUUElEX01FVEhPRERFRikgKi8KKwogI2lmbmRlZiBPU19HRVRHUk9VUFNfTUVUSE9EREVGCiAgICAgI2RlZmluZSBPU19HRVRHUk9VUFNfTUVUSE9EREVGCiAjZW5kaWYgLyogIWRlZmluZWQoT1NfR0VUR1JPVVBTX01FVEhPRERFRikgKi8KQEAgLTU3NDIsNiArNjA5OCwxMCBAQAogICAgICNkZWZpbmUgT1NfU1lTQ09ORl9NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChPU19TWVNDT05GX01FVEhPRERFRikgKi8KIAorI2lmbmRlZiBPU19TVEFSVEZJTEVfTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19TVEFSVEZJTEVfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfU1RBUlRGSUxFX01FVEhPRERFRikgKi8KKwogI2lmbmRlZiBPU19HRVRMT0FEQVZHX01FVEhPRERFRgogICAgICNkZWZpbmUgT1NfR0VUTE9BREFWR19NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChPU19HRVRMT0FEQVZHX01FVEhPRERFRikgKi8KQEAgLTU3ODUsNCArNjE0NSw4IEBACiAjaWZuZGVmIE9TX1NFVF9IQU5ETEVfSU5IRVJJVEFCTEVfTUVUSE9EREVGCiAgICAgI2RlZmluZSBPU19TRVRfSEFORExFX0lOSEVSSVRBQkxFX01FVEhPRERFRgogI2VuZGlmIC8qICFkZWZpbmVkKE9TX1NFVF9IQU5ETEVfSU5IRVJJVEFCTEVfTUVUSE9EREVGKSAqLwotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc2OTBiNzI1NDlkMjUyNGUgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworCisjaWZuZGVmIE9TX0dFVFJBTkRPTV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIE9TX0dFVFJBTkRPTV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChPU19HRVRSQU5ET01fTUVUSE9EREVGKSAqLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTUwY2ZiN2ViYzQ0ZWZiNjcgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvcHdkbW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL3B3ZG1vZHVsZS5jLmgKaW5kZXggY2IxOTFhMC4uZjllMDY0NCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvcHdkbW9kdWxlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9wd2Rtb2R1bGUuYy5oCkBAIC0zMyw4ICszMyw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmFyZzsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnXywgIlU6Z2V0cHduYW0iLCAmYXJnKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZ18sICJVOmdldHB3bmFtIiwgJmFyZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBwd2RfZ2V0cHduYW1faW1wbChtb2R1bGUsIGFyZyk7CiAKIGV4aXQ6CkBAIC02OCw0ICs2OSw0IEBACiAjaWZuZGVmIFBXRF9HRVRQV0FMTF9NRVRIT0RERUYKICAgICAjZGVmaW5lIFBXRF9HRVRQV0FMTF9NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChQV0RfR0VUUFdBTExfTUVUSE9EREVGKSAqLwotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQwZWExYzVjODMyZjBjMWEgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWZjNDFkOGQ4OGVjMjA2ZDggaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvcHlleHBhdC5jLmggYi9Nb2R1bGVzL2NsaW5pYy9weWV4cGF0LmMuaAppbmRleCBjNWI1YzcxLi43NWEwOTZjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9weWV4cGF0LmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9weWV4cGF0LmMuaApAQCAtMjUsOCArMjUsOSBAQAogICAgIGludCBpc2ZpbmFsID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xpOlBhcnNlIiwKLSAgICAgICAgJmRhdGEsICZpc2ZpbmFsKSkKKyAgICAgICAgJmRhdGEsICZpc2ZpbmFsKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHB5ZXhwYXRfeG1scGFyc2VyX1BhcnNlX2ltcGwoc2VsZiwgZGF0YSwgaXNmaW5hbCk7CiAKIGV4aXQ6CkBAIC02MCw4ICs2MSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgY29uc3QgY2hhciAqYmFzZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpTZXRCYXNlIiwgJmJhc2UpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpTZXRCYXNlIiwgJmJhc2UpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gcHlleHBhdF94bWxwYXJzZXJfU2V0QmFzZV9pbXBsKHNlbGYsIGJhc2UpOwogCiBleGl0OgpAQCAtMTI5LDggKzEzMSw5IEBACiAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ6fHM6RXh0ZXJuYWxFbnRpdHlQYXJzZXJDcmVhdGUiLAotICAgICAgICAmY29udGV4dCwgJmVuY29kaW5nKSkKKyAgICAgICAgJmNvbnRleHQsICZlbmNvZGluZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBweWV4cGF0X3htbHBhcnNlcl9FeHRlcm5hbEVudGl0eVBhcnNlckNyZWF0ZV9pbXBsKHNlbGYsIGNvbnRleHQsIGVuY29kaW5nKTsKIAogZXhpdDoKQEAgLTE2MCw4ICsxNjMsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBmbGFnOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOlNldFBhcmFtRW50aXR5UGFyc2luZyIsICZmbGFnKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6U2V0UGFyYW1FbnRpdHlQYXJzaW5nIiwgJmZsYWcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gcHlleHBhdF94bWxwYXJzZXJfU2V0UGFyYW1FbnRpdHlQYXJzaW5nX2ltcGwoc2VsZiwgZmxhZyk7CiAKIGV4aXQ6CkBAIC0xOTMsOCArMTk3LDkgQEAKICAgICBpbnQgZmxhZyA9IDE7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxwOlVzZUZvcmVpZ25EVEQiLAotICAgICAgICAmZmxhZykpCisgICAgICAgICZmbGFnKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHB5ZXhwYXRfeG1scGFyc2VyX1VzZUZvcmVpZ25EVERfaW1wbChzZWxmLCBmbGFnKTsKIAogZXhpdDoKQEAgLTIyOCwyNCArMjMzLDI2IEBACiAiUmV0dXJuIGEgbmV3IFhNTCBwYXJzZXIgb2JqZWN0LiIpOwogCiAjZGVmaW5lIFBZRVhQQVRfUEFSU0VSQ1JFQVRFX01FVEhPRERFRiAgICBcCi0gICAgeyJQYXJzZXJDcmVhdGUiLCAoUHlDRnVuY3Rpb24pcHlleHBhdF9QYXJzZXJDcmVhdGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBweWV4cGF0X1BhcnNlckNyZWF0ZV9fZG9jX199LAorICAgIHsiUGFyc2VyQ3JlYXRlIiwgKFB5Q0Z1bmN0aW9uKXB5ZXhwYXRfUGFyc2VyQ3JlYXRlLCBNRVRIX0ZBU1RDQUxMLCBweWV4cGF0X1BhcnNlckNyZWF0ZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogcHlleHBhdF9QYXJzZXJDcmVhdGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBjb25zdCBjaGFyICplbmNvZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZXNwYWNlX3NlcGFyYXRvciwgUHlPYmplY3QgKmludGVybik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1weWV4cGF0X1BhcnNlckNyZWF0ZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3B5ZXhwYXRfUGFyc2VyQ3JlYXRlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJlbmNvZGluZyIsICJuYW1lc3BhY2Vfc2VwYXJhdG9yIiwgImludGVybiIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImVuY29kaW5nIiwgIm5hbWVzcGFjZV9zZXBhcmF0b3IiLCAiaW50ZXJuIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifHp6TzpQYXJzZXJDcmVhdGUiLCBfa2V5d29yZHMsIDB9OwogICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nID0gTlVMTDsKICAgICBjb25zdCBjaGFyICpuYW1lc3BhY2Vfc2VwYXJhdG9yID0gTlVMTDsKICAgICBQeU9iamVjdCAqaW50ZXJuID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInx6ek86UGFyc2VyQ3JlYXRlIiwgX2tleXdvcmRzLAotICAgICAgICAmZW5jb2RpbmcsICZuYW1lc3BhY2Vfc2VwYXJhdG9yLCAmaW50ZXJuKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmVuY29kaW5nLCAmbmFtZXNwYWNlX3NlcGFyYXRvciwgJmludGVybikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBweWV4cGF0X1BhcnNlckNyZWF0ZV9pbXBsKG1vZHVsZSwgZW5jb2RpbmcsIG5hbWVzcGFjZV9zZXBhcmF0b3IsIGludGVybik7CiAKIGV4aXQ6CkBAIC0yNzAsOCArMjc3LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBsb25nIGNvZGU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImw6RXJyb3JTdHJpbmciLCAmY29kZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJsOkVycm9yU3RyaW5nIiwgJmNvZGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gcHlleHBhdF9FcnJvclN0cmluZ19pbXBsKG1vZHVsZSwgY29kZSk7CiAKIGV4aXQ6CkBAIC0yODEsNCArMjg5LDQgQEAKICNpZm5kZWYgUFlFWFBBVF9YTUxQQVJTRVJfVVNFRk9SRUlHTkRURF9NRVRIT0RERUYKICAgICAjZGVmaW5lIFBZRVhQQVRfWE1MUEFSU0VSX1VTRUZPUkVJR05EVERfTUVUSE9EREVGCiAjZW5kaWYgLyogIWRlZmluZWQoUFlFWFBBVF9YTUxQQVJTRVJfVVNFRk9SRUlHTkRURF9NRVRIT0RERUYpICovCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDQ3OWNmYWI2MDdlOWRjOCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTg4OWY3YzZhZjZjYzQyZiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9zaGExbW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL3NoYTFtb2R1bGUuYy5oCmluZGV4IDViOGRiODAuLmIwOGU5MmQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL3NoYTFtb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL3NoYTFtb2R1bGUuYy5oCkBAIC03MiwyNCArNzIsMjYgQEAKICJSZXR1cm4gYSBuZXcgU0hBMSBoYXNoIG9iamVjdDsgb3B0aW9uYWxseSBpbml0aWFsaXplZCB3aXRoIGEgc3RyaW5nLiIpOwogCiAjZGVmaW5lIF9TSEExX1NIQTFfTUVUSE9EREVGICAgIFwKLSAgICB7InNoYTEiLCAoUHlDRnVuY3Rpb24pX3NoYTFfc2hhMSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zaGExX3NoYTFfX2RvY19ffSwKKyAgICB7InNoYTEiLCAoUHlDRnVuY3Rpb24pX3NoYTFfc2hhMSwgTUVUSF9GQVNUQ0FMTCwgX3NoYTFfc2hhMV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NoYTFfc2hhMV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzdHJpbmcpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NoYTFfc2hhMShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zaGExX3NoYTEoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0cmluZyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InN0cmluZyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPOnNoYTEiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpzdHJpbmcgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE86c2hhMSIsIF9rZXl3b3JkcywKLSAgICAgICAgJnN0cmluZykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdHJpbmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NoYTFfc2hhMV9pbXBsKG1vZHVsZSwgc3RyaW5nKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTBiNmExOTRmYmIwYjk0ZjIgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE0MzA0NTBmM2Y4MDY4OTUgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvc2hhMjU2bW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL3NoYTI1Nm1vZHVsZS5jLmgKaW5kZXggNjYxNTY5Yy4uMTE1ZGI1MCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvc2hhMjU2bW9kdWxlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9zaGEyNTZtb2R1bGUuYy5oCkBAIC03MiwyMSArNzIsMjMgQEAKICJSZXR1cm4gYSBuZXcgU0hBLTI1NiBoYXNoIG9iamVjdDsgb3B0aW9uYWxseSBpbml0aWFsaXplZCB3aXRoIGEgc3RyaW5nLiIpOwogCiAjZGVmaW5lIF9TSEEyNTZfU0hBMjU2X01FVEhPRERFRiAgICBcCi0gICAgeyJzaGEyNTYiLCAoUHlDRnVuY3Rpb24pX3NoYTI1Nl9zaGEyNTYsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc2hhMjU2X3NoYTI1Nl9fZG9jX199LAorICAgIHsic2hhMjU2IiwgKFB5Q0Z1bmN0aW9uKV9zaGEyNTZfc2hhMjU2LCBNRVRIX0ZBU1RDQUxMLCBfc2hhMjU2X3NoYTI1Nl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NoYTI1Nl9zaGEyNTZfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc3RyaW5nKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zaGEyNTZfc2hhMjU2KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NoYTI1Nl9zaGEyNTYoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0cmluZyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InN0cmluZyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPOnNoYTI1NiIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnN0cmluZyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8TzpzaGEyNTYiLCBfa2V5d29yZHMsCi0gICAgICAgICZzdHJpbmcpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc3RyaW5nKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zaGEyNTZfc2hhMjU2X2ltcGwobW9kdWxlLCBzdHJpbmcpOwogCiBleGl0OgpAQCAtMTAwLDI0ICsxMDIsMjYgQEAKICJSZXR1cm4gYSBuZXcgU0hBLTIyNCBoYXNoIG9iamVjdDsgb3B0aW9uYWxseSBpbml0aWFsaXplZCB3aXRoIGEgc3RyaW5nLiIpOwogCiAjZGVmaW5lIF9TSEEyNTZfU0hBMjI0X01FVEhPRERFRiAgICBcCi0gICAgeyJzaGEyMjQiLCAoUHlDRnVuY3Rpb24pX3NoYTI1Nl9zaGEyMjQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc2hhMjU2X3NoYTIyNF9fZG9jX199LAorICAgIHsic2hhMjI0IiwgKFB5Q0Z1bmN0aW9uKV9zaGEyNTZfc2hhMjI0LCBNRVRIX0ZBU1RDQUxMLCBfc2hhMjU2X3NoYTIyNF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NoYTI1Nl9zaGEyMjRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc3RyaW5nKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zaGEyNTZfc2hhMjI0KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NoYTI1Nl9zaGEyMjQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0cmluZyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InN0cmluZyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPOnNoYTIyNCIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnN0cmluZyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8TzpzaGEyMjQiLCBfa2V5d29yZHMsCi0gICAgICAgICZzdHJpbmcpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc3RyaW5nKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zaGEyNTZfc2hhMjI0X2ltcGwobW9kdWxlLCBzdHJpbmcpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWExZmM1NDgwZTM5OWY5NSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTk0MzlkNzBkYjdlYWQ1YyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9zaGE1MTJtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvc2hhNTEybW9kdWxlLmMuaAppbmRleCBkNjRjMmE0Li5hMmI1N2Y3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9zaGE1MTJtb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL3NoYTUxMm1vZHVsZS5jLmgKQEAgLTIsOCArMiw2IEBACiBwcmVzZXJ2ZQogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi0jaWYgZGVmaW5lZChQWV9MT05HX0xPTkcpCi0KIFB5RG9jX1NUUlZBUihTSEE1MTJUeXBlX2NvcHlfX2RvY19fLAogImNvcHkoJHNlbGYsIC8pXG4iCiAiLS1cbiIKQEAgLTIyLDEwICsyMCw2IEBACiAgICAgcmV0dXJuIFNIQTUxMlR5cGVfY29weV9pbXBsKHNlbGYpOwogfQogCi0jZW5kaWYgLyogZGVmaW5lZChQWV9MT05HX0xPTkcpICovCi0KLSNpZiBkZWZpbmVkKFBZX0xPTkdfTE9ORykKLQogUHlEb2NfU1RSVkFSKFNIQTUxMlR5cGVfZGlnZXN0X19kb2NfXywKICJkaWdlc3QoJHNlbGYsIC8pXG4iCiAiLS1cbiIKQEAgLTQ0LDEwICszOCw2IEBACiAgICAgcmV0dXJuIFNIQTUxMlR5cGVfZGlnZXN0X2ltcGwoc2VsZik7CiB9CiAKLSNlbmRpZiAvKiBkZWZpbmVkKFBZX0xPTkdfTE9ORykgKi8KLQotI2lmIGRlZmluZWQoUFlfTE9OR19MT05HKQotCiBQeURvY19TVFJWQVIoU0hBNTEyVHlwZV9oZXhkaWdlc3RfX2RvY19fLAogImhleGRpZ2VzdCgkc2VsZiwgLylcbiIKICItLVxuIgpAQCAtNjYsMTAgKzU2LDYgQEAKICAgICByZXR1cm4gU0hBNTEyVHlwZV9oZXhkaWdlc3RfaW1wbChzZWxmKTsKIH0KIAotI2VuZGlmIC8qIGRlZmluZWQoUFlfTE9OR19MT05HKSAqLwotCi0jaWYgZGVmaW5lZChQWV9MT05HX0xPTkcpCi0KIFB5RG9jX1NUUlZBUihTSEE1MTJUeXBlX3VwZGF0ZV9fZG9jX18sCiAidXBkYXRlKCRzZWxmLCBvYmosIC8pXG4iCiAiLS1cbiIKQEAgLTc5LDEwICs2NSw2IEBACiAjZGVmaW5lIFNIQTUxMlRZUEVfVVBEQVRFX01FVEhPRERFRiAgICBcCiAgICAgeyJ1cGRhdGUiLCAoUHlDRnVuY3Rpb24pU0hBNTEyVHlwZV91cGRhdGUsIE1FVEhfTywgU0hBNTEyVHlwZV91cGRhdGVfX2RvY19ffSwKIAotI2VuZGlmIC8qIGRlZmluZWQoUFlfTE9OR19MT05HKSAqLwotCi0jaWYgZGVmaW5lZChQWV9MT05HX0xPTkcpCi0KIFB5RG9jX1NUUlZBUihfc2hhNTEyX3NoYTUxMl9fZG9jX18sCiAic2hhNTEyKCRtb2R1bGUsIC8sIHN0cmluZz1iXCdcJylcbiIKICItLVxuIgpAQCAtOTAsMzEgKzcyLDI5IEBACiAiUmV0dXJuIGEgbmV3IFNIQS01MTIgaGFzaCBvYmplY3Q7IG9wdGlvbmFsbHkgaW5pdGlhbGl6ZWQgd2l0aCBhIHN0cmluZy4iKTsKIAogI2RlZmluZSBfU0hBNTEyX1NIQTUxMl9NRVRIT0RERUYgICAgXAotICAgIHsic2hhNTEyIiwgKFB5Q0Z1bmN0aW9uKV9zaGE1MTJfc2hhNTEyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NoYTUxMl9zaGE1MTJfX2RvY19ffSwKKyAgICB7InNoYTUxMiIsIChQeUNGdW5jdGlvbilfc2hhNTEyX3NoYTUxMiwgTUVUSF9GQVNUQ0FMTCwgX3NoYTUxMl9zaGE1MTJfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zaGE1MTJfc2hhNTEyX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnN0cmluZyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc2hhNTEyX3NoYTUxMihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zaGE1MTJfc2hhNTEyKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8TzpzaGE1MTIiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpzdHJpbmcgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE86c2hhNTEyIiwgX2tleXdvcmRzLAotICAgICAgICAmc3RyaW5nKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnN0cmluZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc2hhNTEyX3NoYTUxMl9pbXBsKG1vZHVsZSwgc3RyaW5nKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQogCi0jZW5kaWYgLyogZGVmaW5lZChQWV9MT05HX0xPTkcpICovCi0KLSNpZiBkZWZpbmVkKFBZX0xPTkdfTE9ORykKLQogUHlEb2NfU1RSVkFSKF9zaGE1MTJfc2hhMzg0X19kb2NfXywKICJzaGEzODQoJG1vZHVsZSwgLywgc3RyaW5nPWJcJ1wnKVxuIgogIi0tXG4iCkBAIC0xMjIsNTAgKzEwMiwyNiBAQAogIlJldHVybiBhIG5ldyBTSEEtMzg0IGhhc2ggb2JqZWN0OyBvcHRpb25hbGx5IGluaXRpYWxpemVkIHdpdGggYSBzdHJpbmcuIik7CiAKICNkZWZpbmUgX1NIQTUxMl9TSEEzODRfTUVUSE9EREVGICAgIFwKLSAgICB7InNoYTM4NCIsIChQeUNGdW5jdGlvbilfc2hhNTEyX3NoYTM4NCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zaGE1MTJfc2hhMzg0X19kb2NfX30sCisgICAgeyJzaGEzODQiLCAoUHlDRnVuY3Rpb24pX3NoYTUxMl9zaGEzODQsIE1FVEhfRkFTVENBTEwsIF9zaGE1MTJfc2hhMzg0X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc2hhNTEyX3NoYTM4NF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzdHJpbmcpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NoYTUxMl9zaGEzODQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc2hhNTEyX3NoYTM4NChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE86c2hhMzg0IiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqc3RyaW5nID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPOnNoYTM4NCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnN0cmluZykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdHJpbmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NoYTUxMl9zaGEzODRfaW1wbChtb2R1bGUsIHN0cmluZyk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLQotI2VuZGlmIC8qIGRlZmluZWQoUFlfTE9OR19MT05HKSAqLwotCi0jaWZuZGVmIFNIQTUxMlRZUEVfQ09QWV9NRVRIT0RERUYKLSAgICAjZGVmaW5lIFNIQTUxMlRZUEVfQ09QWV9NRVRIT0RERUYKLSNlbmRpZiAvKiAhZGVmaW5lZChTSEE1MTJUWVBFX0NPUFlfTUVUSE9EREVGKSAqLwotCi0jaWZuZGVmIFNIQTUxMlRZUEVfRElHRVNUX01FVEhPRERFRgotICAgICNkZWZpbmUgU0hBNTEyVFlQRV9ESUdFU1RfTUVUSE9EREVGCi0jZW5kaWYgLyogIWRlZmluZWQoU0hBNTEyVFlQRV9ESUdFU1RfTUVUSE9EREVGKSAqLwotCi0jaWZuZGVmIFNIQTUxMlRZUEVfSEVYRElHRVNUX01FVEhPRERFRgotICAgICNkZWZpbmUgU0hBNTEyVFlQRV9IRVhESUdFU1RfTUVUSE9EREVGCi0jZW5kaWYgLyogIWRlZmluZWQoU0hBNTEyVFlQRV9IRVhESUdFU1RfTUVUSE9EREVGKSAqLwotCi0jaWZuZGVmIFNIQTUxMlRZUEVfVVBEQVRFX01FVEhPRERFRgotICAgICNkZWZpbmUgU0hBNTEyVFlQRV9VUERBVEVfTUVUSE9EREVGCi0jZW5kaWYgLyogIWRlZmluZWQoU0hBNTEyVFlQRV9VUERBVEVfTUVUSE9EREVGKSAqLwotCi0jaWZuZGVmIF9TSEE1MTJfU0hBNTEyX01FVEhPRERFRgotICAgICNkZWZpbmUgX1NIQTUxMl9TSEE1MTJfTUVUSE9EREVGCi0jZW5kaWYgLyogIWRlZmluZWQoX1NIQTUxMl9TSEE1MTJfTUVUSE9EREVGKSAqLwotCi0jaWZuZGVmIF9TSEE1MTJfU0hBMzg0X01FVEhPRERFRgotICAgICNkZWZpbmUgX1NIQTUxMl9TSEEzODRfTUVUSE9EREVGCi0jZW5kaWYgLyogIWRlZmluZWQoX1NIQTUxMl9TSEEzODRfTUVUSE9EREVGKSAqLwotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJiODdmNDk0ZGY1MGZmYzAgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE4ZjE1NTk4YzM0ODcwNDUgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvc2lnbmFsbW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL3NpZ25hbG1vZHVsZS5jLmgKaW5kZXggYzhmNGNkNS4uZjhkNWJkOSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvc2lnbmFsbW9kdWxlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9zaWduYWxtb2R1bGUuYy5oCkBAIC0yMywxMSArMjMsMTMgQEAKICAgICBpbnQgc2Vjb25kczsKICAgICBsb25nIF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6YWxhcm0iLCAmc2Vjb25kcykpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmFsYXJtIiwgJnNlY29uZHMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IHNpZ25hbF9hbGFybV9pbXBsKG1vZHVsZSwgc2Vjb25kcyk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTg1LDggKzg3LDkgQEAKICAgICBQeU9iamVjdCAqaGFuZGxlcjsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU86c2lnbmFsIiwKLSAgICAgICAgJnNpZ25hbG51bSwgJmhhbmRsZXIpKQorICAgICAgICAmc2lnbmFsbnVtLCAmaGFuZGxlcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBzaWduYWxfc2lnbmFsX2ltcGwobW9kdWxlLCBzaWduYWxudW0sIGhhbmRsZXIpOwogCiBleGl0OgpAQCAtMTE3LDggKzEyMCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IHNpZ25hbG51bTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpnZXRzaWduYWwiLCAmc2lnbmFsbnVtKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6Z2V0c2lnbmFsIiwgJnNpZ25hbG51bSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBzaWduYWxfZ2V0c2lnbmFsX2ltcGwobW9kdWxlLCBzaWduYWxudW0pOwogCiBleGl0OgpAQCAtMTUwLDggKzE1NCw5IEBACiAgICAgaW50IGZsYWc7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpOnNpZ2ludGVycnVwdCIsCi0gICAgICAgICZzaWduYWxudW0sICZmbGFnKSkKKyAgICAgICAgJnNpZ25hbG51bSwgJmZsYWcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gc2lnbmFsX3NpZ2ludGVycnVwdF9pbXBsKG1vZHVsZSwgc2lnbmFsbnVtLCBmbGFnKTsKIAogZXhpdDoKQEAgLTE4OSw4ICsxOTQsOSBAQAogICAgIGRvdWJsZSBpbnRlcnZhbCA9IDAuMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWR8ZDpzZXRpdGltZXIiLAotICAgICAgICAmd2hpY2gsICZzZWNvbmRzLCAmaW50ZXJ2YWwpKQorICAgICAgICAmd2hpY2gsICZzZWNvbmRzLCAmaW50ZXJ2YWwpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gc2lnbmFsX3NldGl0aW1lcl9pbXBsKG1vZHVsZSwgd2hpY2gsIHNlY29uZHMsIGludGVydmFsKTsKIAogZXhpdDoKQEAgLTIxOSw4ICsyMjUsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCB3aGljaDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpnZXRpdGltZXIiLCAmd2hpY2gpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpnZXRpdGltZXIiLCAmd2hpY2gpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gc2lnbmFsX2dldGl0aW1lcl9pbXBsKG1vZHVsZSwgd2hpY2gpOwogCiBleGl0OgpAQCAtMjUxLDggKzI1OCw5IEBACiAgICAgUHlPYmplY3QgKm1hc2s7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPOnB0aHJlYWRfc2lnbWFzayIsCi0gICAgICAgICZob3csICZtYXNrKSkKKyAgICAgICAgJmhvdywgJm1hc2spKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gc2lnbmFsX3B0aHJlYWRfc2lnbWFza19pbXBsKG1vZHVsZSwgaG93LCBtYXNrKTsKIAogZXhpdDoKQEAgLTM0NCw4ICszNTIsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAic2lndGltZWR3YWl0IiwKICAgICAgICAgMiwgMiwKLSAgICAgICAgJnNpZ3NldCwgJnRpbWVvdXRfb2JqKSkKKyAgICAgICAgJnNpZ3NldCwgJnRpbWVvdXRfb2JqKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHNpZ25hbF9zaWd0aW1lZHdhaXRfaW1wbChtb2R1bGUsIHNpZ3NldCwgdGltZW91dF9vYmopOwogCiBleGl0OgpAQCAtMzc2LDggKzM4NSw5IEBACiAgICAgaW50IHNpZ25hbG51bTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibGk6cHRocmVhZF9raWxsIiwKLSAgICAgICAgJnRocmVhZF9pZCwgJnNpZ25hbG51bSkpCisgICAgICAgICZ0aHJlYWRfaWQsICZzaWduYWxudW0pKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gc2lnbmFsX3B0aHJlYWRfa2lsbF9pbXBsKG1vZHVsZSwgdGhyZWFkX2lkLCBzaWduYWxudW0pOwogCiBleGl0OgpAQCAtNDI5LDQgKzQzOSw0IEBACiAjaWZuZGVmIFNJR05BTF9QVEhSRUFEX0tJTExfTUVUSE9EREVGCiAgICAgI2RlZmluZSBTSUdOQUxfUFRIUkVBRF9LSUxMX01FVEhPRERFRgogI2VuZGlmIC8qICFkZWZpbmVkKFNJR05BTF9QVEhSRUFEX0tJTExfTUVUSE9EREVGKSAqLwotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhZmE1OTg0MTJiZmI4ZDIgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWM2OTkwZWYwZDBiYTcyYjYgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvc3B3ZG1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9zcHdkbW9kdWxlLmMuaAppbmRleCBlMjZhY2YxLi5iMjQ3OWZmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9zcHdkbW9kdWxlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9zcHdkbW9kdWxlLmMuaApAQCAtMjQsOCArMjQsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICphcmc7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZ18sICJVOmdldHNwbmFtIiwgJmFyZykpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmdfLCAiVTpnZXRzcG5hbSIsICZhcmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gc3B3ZF9nZXRzcG5hbV9pbXBsKG1vZHVsZSwgYXJnKTsKIAogZXhpdDoKQEAgLTY1LDQgKzY2LDQgQEAKICNpZm5kZWYgU1BXRF9HRVRTUEFMTF9NRVRIT0RERUYKICAgICAjZGVmaW5lIFNQV0RfR0VUU1BBTExfTUVUSE9EREVGCiAjZW5kaWYgLyogIWRlZmluZWQoU1BXRF9HRVRTUEFMTF9NRVRIT0RERUYpICovCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTEwZjY4MWIzNmY1NGMzMCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDdjZDhhZjBhZmQ3N2ZlNyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy91bmljb2RlZGF0YS5jLmggYi9Nb2R1bGVzL2NsaW5pYy91bmljb2RlZGF0YS5jLmgKaW5kZXggZDUyMGMxZS4uZDQ4MWNjYiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvdW5pY29kZWRhdGEuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL3VuaWNvZGVkYXRhLmMuaApAQCAtMjcsOCArMjcsOSBAQAogICAgIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiQ3xPOmRlY2ltYWwiLAotICAgICAgICAmY2hyLCAmZGVmYXVsdF92YWx1ZSkpCisgICAgICAgICZjaHIsICZkZWZhdWx0X3ZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHVuaWNvZGVkYXRhX1VDRF9kZWNpbWFsX2ltcGwoc2VsZiwgY2hyLCBkZWZhdWx0X3ZhbHVlKTsKIAogZXhpdDoKQEAgLTU5LDggKzYwLDkgQEAKICAgICBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSA9IE5VTEw7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIkN8TzpkaWdpdCIsCi0gICAgICAgICZjaHIsICZkZWZhdWx0X3ZhbHVlKSkKKyAgICAgICAgJmNociwgJmRlZmF1bHRfdmFsdWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gdW5pY29kZWRhdGFfVUNEX2RpZ2l0X2ltcGwoc2VsZiwgY2hyLCBkZWZhdWx0X3ZhbHVlKTsKIAogZXhpdDoKQEAgLTkyLDggKzk0LDkgQEAKICAgICBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSA9IE5VTEw7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIkN8TzpudW1lcmljIiwKLSAgICAgICAgJmNociwgJmRlZmF1bHRfdmFsdWUpKQorICAgICAgICAmY2hyLCAmZGVmYXVsdF92YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB1bmljb2RlZGF0YV9VQ0RfbnVtZXJpY19pbXBsKHNlbGYsIGNociwgZGVmYXVsdF92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0xMTgsOCArMTIxLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgY2hyOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJDOmNhdGVnb3J5IiwgJmNocikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJDOmNhdGVnb3J5IiwgJmNocikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB1bmljb2RlZGF0YV9VQ0RfY2F0ZWdvcnlfaW1wbChzZWxmLCBjaHIpOwogCiBleGl0OgpAQCAtMTQ2LDggKzE1MCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IGNocjsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiQzpiaWRpcmVjdGlvbmFsIiwgJmNocikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJDOmJpZGlyZWN0aW9uYWwiLCAmY2hyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHVuaWNvZGVkYXRhX1VDRF9iaWRpcmVjdGlvbmFsX2ltcGwoc2VsZiwgY2hyKTsKIAogZXhpdDoKQEAgLTE3NSwxMSArMTgwLDEzIEBACiAgICAgaW50IGNocjsKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiQzpjb21iaW5pbmciLCAmY2hyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkM6Y29tYmluaW5nIiwgJmNocikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gdW5pY29kZWRhdGFfVUNEX2NvbWJpbmluZ19pbXBsKHNlbGYsIGNocik7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTIwOCwxMSArMjE1LDEzIEBACiAgICAgaW50IGNocjsKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiQzptaXJyb3JlZCIsICZjaHIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiQzptaXJyb3JlZCIsICZjaHIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IHVuaWNvZGVkYXRhX1VDRF9taXJyb3JlZF9pbXBsKHNlbGYsIGNocik7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTIzNyw4ICsyNDYsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBjaHI7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkM6ZWFzdF9hc2lhbl93aWR0aCIsICZjaHIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiQzplYXN0X2FzaWFuX3dpZHRoIiwgJmNocikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB1bmljb2RlZGF0YV9VQ0RfZWFzdF9hc2lhbl93aWR0aF9pbXBsKHNlbGYsIGNocik7CiAKIGV4aXQ6CkBAIC0yNjUsOCArMjc1LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgY2hyOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJDOmRlY29tcG9zaXRpb24iLCAmY2hyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkM6ZGVjb21wb3NpdGlvbiIsICZjaHIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gdW5pY29kZWRhdGFfVUNEX2RlY29tcG9zaXRpb25faW1wbChzZWxmLCBjaHIpOwogCiBleGl0OgpAQCAtMjk2LDggKzMwNyw5IEBACiAgICAgUHlPYmplY3QgKmlucHV0OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzTyE6bm9ybWFsaXplIiwKLSAgICAgICAgJmZvcm0sICZQeVVuaWNvZGVfVHlwZSwgJmlucHV0KSkKKyAgICAgICAgJmZvcm0sICZQeVVuaWNvZGVfVHlwZSwgJmlucHV0KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHVuaWNvZGVkYXRhX1VDRF9ub3JtYWxpemVfaW1wbChzZWxmLCBmb3JtLCBpbnB1dCk7CiAKIGV4aXQ6CkBAIC0zMjcsOCArMzM5LDkgQEAKICAgICBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSA9IE5VTEw7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIkN8TzpuYW1lIiwKLSAgICAgICAgJmNociwgJmRlZmF1bHRfdmFsdWUpKQorICAgICAgICAmY2hyLCAmZGVmYXVsdF92YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB1bmljb2RlZGF0YV9VQ0RfbmFtZV9pbXBsKHNlbGYsIGNociwgZGVmYXVsdF92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0zNTgsMTEgKzM3MSwxMiBAQAogICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICAgUHlfc3NpemVfY2xlYW5fdCBuYW1lX2xlbmd0aDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAicyM6bG9va3VwIiwgJm5hbWUsICZuYW1lX2xlbmd0aCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzIzpsb29rdXAiLCAmbmFtZSwgJm5hbWVfbGVuZ3RoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHVuaWNvZGVkYXRhX1VDRF9sb29rdXBfaW1wbChzZWxmLCBuYW1lLCBuYW1lX2xlbmd0aCk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00ZjhkYTMzYzZiYzZlZmM5IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01MzEzY2UxMjlkYTg3YjJmIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL3psaWJtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvemxpYm1vZHVsZS5jLmgKaW5kZXggYjFhZjdjZS4uZmRhMzkyYSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvemxpYm1vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvemxpYm1vZHVsZS5jLmgKQEAgLTMsNDQgKzMsNDggQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogUHlEb2NfU1RSVkFSKHpsaWJfY29tcHJlc3NfX2RvY19fLAotImNvbXByZXNzKCRtb2R1bGUsIGJ5dGVzLCBsZXZlbD1aX0RFRkFVTFRfQ09NUFJFU1NJT04sIC8pXG4iCisiY29tcHJlc3MoJG1vZHVsZSwgZGF0YSwgLywgbGV2ZWw9Wl9ERUZBVUxUX0NPTVBSRVNTSU9OKVxuIgogIi0tXG4iCiAiXG4iCiAiUmV0dXJucyBhIGJ5dGVzIG9iamVjdCBjb250YWluaW5nIGNvbXByZXNzZWQgZGF0YS5cbiIKICJcbiIKLSIgIGJ5dGVzXG4iCisiICBkYXRhXG4iCiAiICAgIEJpbmFyeSBkYXRhIHRvIGJlIGNvbXByZXNzZWQuXG4iCiAiICBsZXZlbFxuIgotIiAgICBDb21wcmVzc2lvbiBsZXZlbCwgaW4gMC05LiIpOworIiAgICBDb21wcmVzc2lvbiBsZXZlbCwgaW4gMC05IG9yIC0xLiIpOwogCiAjZGVmaW5lIFpMSUJfQ09NUFJFU1NfTUVUSE9EREVGICAgIFwKLSAgICB7ImNvbXByZXNzIiwgKFB5Q0Z1bmN0aW9uKXpsaWJfY29tcHJlc3MsIE1FVEhfVkFSQVJHUywgemxpYl9jb21wcmVzc19fZG9jX199LAorICAgIHsiY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pemxpYl9jb21wcmVzcywgTUVUSF9GQVNUQ0FMTCwgemxpYl9jb21wcmVzc19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotemxpYl9jb21wcmVzc19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqYnl0ZXMsIGludCBsZXZlbCk7Cit6bGliX2NvbXByZXNzX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLCBpbnQgbGV2ZWwpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotemxpYl9jb21wcmVzcyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3psaWJfY29tcHJlc3MoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBQeV9idWZmZXIgYnl0ZXMgPSB7TlVMTCwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiIiwgImxldmVsIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsieSp8aTpjb21wcmVzcyIsIF9rZXl3b3JkcywgMH07CisgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAgICAgaW50IGxldmVsID0gWl9ERUZBVUxUX0NPTVBSRVNTSU9OOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KnxpOmNvbXByZXNzIiwKLSAgICAgICAgJmJ5dGVzLCAmbGV2ZWwpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZGF0YSwgJmxldmVsKSkgewogICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgcmV0dXJuX3ZhbHVlID0gemxpYl9jb21wcmVzc19pbXBsKG1vZHVsZSwgJmJ5dGVzLCBsZXZlbCk7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IHpsaWJfY29tcHJlc3NfaW1wbChtb2R1bGUsICZkYXRhLCBsZXZlbCk7CiAKIGV4aXQ6Ci0gICAgLyogQ2xlYW51cCBmb3IgYnl0ZXMgKi8KLSAgICBpZiAoYnl0ZXMub2JqKQotICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ5dGVzKTsKKyAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCisgICAgaWYgKGRhdGEub2JqKSB7CisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KIAogUHlEb2NfU1RSVkFSKHpsaWJfZGVjb21wcmVzc19fZG9jX18sCi0iZGVjb21wcmVzcygkbW9kdWxlLCBkYXRhLCB3Yml0cz1NQVhfV0JJVFMsIGJ1ZnNpemU9REVGX0JVRl9TSVpFLCAvKVxuIgorImRlY29tcHJlc3MoJG1vZHVsZSwgZGF0YSwgLywgd2JpdHM9TUFYX1dCSVRTLCBidWZzaXplPURFRl9CVUZfU0laRSlcbiIKICItLVxuIgogIlxuIgogIlJldHVybnMgYSBieXRlcyBvYmplY3QgY29udGFpbmluZyB0aGUgdW5jb21wcmVzc2VkIGRhdGEuXG4iCkBAIC01MywyOSArNTcsMzMgQEAKICIgICAgVGhlIGluaXRpYWwgb3V0cHV0IGJ1ZmZlciBzaXplLiIpOwogCiAjZGVmaW5lIFpMSUJfREVDT01QUkVTU19NRVRIT0RERUYgICAgXAotICAgIHsiZGVjb21wcmVzcyIsIChQeUNGdW5jdGlvbil6bGliX2RlY29tcHJlc3MsIE1FVEhfVkFSQVJHUywgemxpYl9kZWNvbXByZXNzX19kb2NfX30sCisgICAgeyJkZWNvbXByZXNzIiwgKFB5Q0Z1bmN0aW9uKXpsaWJfZGVjb21wcmVzcywgTUVUSF9GQVNUQ0FMTCwgemxpYl9kZWNvbXByZXNzX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiB6bGliX2RlY29tcHJlc3NfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsIGludCB3Yml0cywKICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgYnVmc2l6ZSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi16bGliX2RlY29tcHJlc3MoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit6bGliX2RlY29tcHJlc3MoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyIiLCAid2JpdHMiLCAiYnVmc2l6ZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InkqfGlPJjpkZWNvbXByZXNzIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKICAgICBpbnQgd2JpdHMgPSBNQVhfV0JJVFM7CiAgICAgUHlfc3NpemVfdCBidWZzaXplID0gREVGX0JVRl9TSVpFOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KnxpTyY6ZGVjb21wcmVzcyIsCi0gICAgICAgICZkYXRhLCAmd2JpdHMsIHNzaXplX3RfY29udmVydGVyLCAmYnVmc2l6ZSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZkYXRhLCAmd2JpdHMsIHNzaXplX3RfY29udmVydGVyLCAmYnVmc2l6ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB6bGliX2RlY29tcHJlc3NfaW1wbChtb2R1bGUsICZkYXRhLCB3Yml0cywgYnVmc2l6ZSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMTExLDE3ICsxMTksMTggQEAKICIgICAgY29udGFpbmluZyBzdWJzZXF1ZW5jZXMgdGhhdCBhcmUgbGlrZWx5IHRvIG9jY3VyIGluIHRoZSBpbnB1dCBkYXRhLiIpOwogCiAjZGVmaW5lIFpMSUJfQ09NUFJFU1NPQkpfTUVUSE9EREVGICAgIFwKLSAgICB7ImNvbXByZXNzb2JqIiwgKFB5Q0Z1bmN0aW9uKXpsaWJfY29tcHJlc3NvYmosIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCB6bGliX2NvbXByZXNzb2JqX19kb2NfX30sCisgICAgeyJjb21wcmVzc29iaiIsIChQeUNGdW5jdGlvbil6bGliX2NvbXByZXNzb2JqLCBNRVRIX0ZBU1RDQUxMLCB6bGliX2NvbXByZXNzb2JqX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiB6bGliX2NvbXByZXNzb2JqX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IGxldmVsLCBpbnQgbWV0aG9kLCBpbnQgd2JpdHMsCiAgICAgICAgICAgICAgICAgICAgICAgaW50IG1lbUxldmVsLCBpbnQgc3RyYXRlZ3ksIFB5X2J1ZmZlciAqemRpY3QpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotemxpYl9jb21wcmVzc29iaihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3psaWJfY29tcHJlc3NvYmooUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImxldmVsIiwgIm1ldGhvZCIsICJ3Yml0cyIsICJtZW1MZXZlbCIsICJzdHJhdGVneSIsICJ6ZGljdCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImxldmVsIiwgIm1ldGhvZCIsICJ3Yml0cyIsICJtZW1MZXZlbCIsICJzdHJhdGVneSIsICJ6ZGljdCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxpaWlpaXkqOmNvbXByZXNzb2JqIiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgbGV2ZWwgPSBaX0RFRkFVTFRfQ09NUFJFU1NJT047CiAgICAgaW50IG1ldGhvZCA9IERFRkxBVEVEOwogICAgIGludCB3Yml0cyA9IE1BWF9XQklUUzsKQEAgLTEyOSwxNSArMTM4LDE3IEBACiAgICAgaW50IHN0cmF0ZWd5ID0gWl9ERUZBVUxUX1NUUkFURUdZOwogICAgIFB5X2J1ZmZlciB6ZGljdCA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxpaWlpaXkqOmNvbXByZXNzb2JqIiwgX2tleXdvcmRzLAotICAgICAgICAmbGV2ZWwsICZtZXRob2QsICZ3Yml0cywgJm1lbUxldmVsLCAmc3RyYXRlZ3ksICZ6ZGljdCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZsZXZlbCwgJm1ldGhvZCwgJndiaXRzLCAmbWVtTGV2ZWwsICZzdHJhdGVneSwgJnpkaWN0KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHpsaWJfY29tcHJlc3NvYmpfaW1wbChtb2R1bGUsIGxldmVsLCBtZXRob2QsIHdiaXRzLCBtZW1MZXZlbCwgc3RyYXRlZ3ksICZ6ZGljdCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgemRpY3QgKi8KLSAgICBpZiAoemRpY3Qub2JqKQorICAgIGlmICh6ZGljdC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ6ZGljdCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTE1NSwyMiArMTY2LDI0IEBACiAiICAgIGRpY3Rpb25hcnkgYXMgdXNlZCBieSB0aGUgY29tcHJlc3NvciB0aGF0IHByb2R1Y2VkIHRoZSBpbnB1dCBkYXRhLiIpOwogCiAjZGVmaW5lIFpMSUJfREVDT01QUkVTU09CSl9NRVRIT0RERUYgICAgXAotICAgIHsiZGVjb21wcmVzc29iaiIsIChQeUNGdW5jdGlvbil6bGliX2RlY29tcHJlc3NvYmosIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCB6bGliX2RlY29tcHJlc3NvYmpfX2RvY19ffSwKKyAgICB7ImRlY29tcHJlc3NvYmoiLCAoUHlDRnVuY3Rpb24pemxpYl9kZWNvbXByZXNzb2JqLCBNRVRIX0ZBU1RDQUxMLCB6bGliX2RlY29tcHJlc3NvYmpfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIHpsaWJfZGVjb21wcmVzc29ial9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCB3Yml0cywgUHlPYmplY3QgKnpkaWN0KTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXpsaWJfZGVjb21wcmVzc29iaihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3psaWJfZGVjb21wcmVzc29iaihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsid2JpdHMiLCAiemRpY3QiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJ3Yml0cyIsICJ6ZGljdCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxpTzpkZWNvbXByZXNzb2JqIiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgd2JpdHMgPSBNQVhfV0JJVFM7CiAgICAgUHlPYmplY3QgKnpkaWN0ID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxpTzpkZWNvbXByZXNzb2JqIiwgX2tleXdvcmRzLAotICAgICAgICAmd2JpdHMsICZ6ZGljdCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZ3Yml0cywgJnpkaWN0KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHpsaWJfZGVjb21wcmVzc29ial9pbXBsKG1vZHVsZSwgd2JpdHMsIHpkaWN0KTsKIAogZXhpdDoKQEAgLTIwMiwyMCArMjE1LDIyIEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOmNvbXByZXNzIiwgJmRhdGEpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6Y29tcHJlc3MiLCAmZGF0YSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB6bGliX0NvbXByZXNzX2NvbXByZXNzX2ltcGwoc2VsZiwgJmRhdGEpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KIAogUHlEb2NfU1RSVkFSKHpsaWJfRGVjb21wcmVzc19kZWNvbXByZXNzX19kb2NfXywKLSJkZWNvbXByZXNzKCRzZWxmLCBkYXRhLCBtYXhfbGVuZ3RoPTAsIC8pXG4iCisiZGVjb21wcmVzcygkc2VsZiwgZGF0YSwgLywgbWF4X2xlbmd0aD0wKVxuIgogIi0tXG4iCiAiXG4iCiAiUmV0dXJuIGEgYnl0ZXMgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGRlY29tcHJlc3NlZCB2ZXJzaW9uIG9mIHRoZSBkYXRhLlxuIgpAQCAtMjMyLDI4ICsyNDcsMzIgQEAKICJDYWxsIHRoZSBmbHVzaCgpIG1ldGhvZCB0byBjbGVhciB0aGVzZSBidWZmZXJzLiIpOwogCiAjZGVmaW5lIFpMSUJfREVDT01QUkVTU19ERUNPTVBSRVNTX01FVEhPRERFRiAgICBcCi0gICAgeyJkZWNvbXByZXNzIiwgKFB5Q0Z1bmN0aW9uKXpsaWJfRGVjb21wcmVzc19kZWNvbXByZXNzLCBNRVRIX1ZBUkFSR1MsIHpsaWJfRGVjb21wcmVzc19kZWNvbXByZXNzX19kb2NfX30sCisgICAgeyJkZWNvbXByZXNzIiwgKFB5Q0Z1bmN0aW9uKXpsaWJfRGVjb21wcmVzc19kZWNvbXByZXNzLCBNRVRIX0ZBU1RDQUxMLCB6bGliX0RlY29tcHJlc3NfZGVjb21wcmVzc19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogemxpYl9EZWNvbXByZXNzX2RlY29tcHJlc3NfaW1wbChjb21wb2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4X2xlbmd0aCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi16bGliX0RlY29tcHJlc3NfZGVjb21wcmVzcyhjb21wb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3psaWJfRGVjb21wcmVzc19kZWNvbXByZXNzKGNvbXBvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiIiwgIm1heF9sZW5ndGgiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ5KnxPJjpkZWNvbXByZXNzIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKICAgICBQeV9zc2l6ZV90IG1heF9sZW5ndGggPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KnxPJjpkZWNvbXByZXNzIiwKLSAgICAgICAgJmRhdGEsIHNzaXplX3RfY29udmVydGVyLCAmbWF4X2xlbmd0aCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZkYXRhLCBzc2l6ZV90X2NvbnZlcnRlciwgJm1heF9sZW5ndGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gemxpYl9EZWNvbXByZXNzX2RlY29tcHJlc3NfaW1wbChzZWxmLCAmZGF0YSwgbWF4X2xlbmd0aCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMjgzLDggKzMwMiw5IEBACiAgICAgaW50IG1vZGUgPSBaX0ZJTklTSDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGk6Zmx1c2giLAotICAgICAgICAmbW9kZSkpCisgICAgICAgICZtb2RlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHpsaWJfQ29tcHJlc3NfZmx1c2hfaW1wbChzZWxmLCBtb2RlKTsKIAogZXhpdDoKQEAgLTM1Nyw4ICszNzcsOSBAQAogICAgIFB5X3NzaXplX3QgbGVuZ3RoID0gREVGX0JVRl9TSVpFOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TyY6Zmx1c2giLAotICAgICAgICBzc2l6ZV90X2NvbnZlcnRlciwgJmxlbmd0aCkpCisgICAgICAgIHNzaXplX3RfY29udmVydGVyLCAmbGVuZ3RoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHpsaWJfRGVjb21wcmVzc19mbHVzaF9pbXBsKHNlbGYsIGxlbmd0aCk7CiAKIGV4aXQ6CkBAIC0zOTAsMTQgKzQxMSwxNiBAQAogICAgIHVuc2lnbmVkIGludCB2YWx1ZSA9IDE7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfEk6YWRsZXIzMiIsCi0gICAgICAgICZkYXRhLCAmdmFsdWUpKQorICAgICAgICAmZGF0YSwgJnZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHpsaWJfYWRsZXIzMl9pbXBsKG1vZHVsZSwgJmRhdGEsIHZhbHVlKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC00MjcsMTQgKzQ1MCwxNiBAQAogICAgIHVuc2lnbmVkIGludCB2YWx1ZSA9IDA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfEk6Y3JjMzIiLAotICAgICAgICAmZGF0YSwgJnZhbHVlKSkKKyAgICAgICAgJmRhdGEsICZ2YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB6bGliX2NyYzMyX2ltcGwobW9kdWxlLCAmZGF0YSwgdmFsdWUpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTQ0Miw0ICs0NjcsNCBAQAogI2lmbmRlZiBaTElCX0NPTVBSRVNTX0NPUFlfTUVUSE9EREVGCiAgICAgI2RlZmluZSBaTElCX0NPTVBSRVNTX0NPUFlfTUVUSE9EREVGCiAjZW5kaWYgLyogIWRlZmluZWQoWkxJQl9DT01QUkVTU19DT1BZX01FVEhPRERFRikgKi8KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03NzExZWYwMmQxZDU3NzZjIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zYTRlMmJmZTc1MDQyM2EzIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY21hdGhtb2R1bGUuYyBiL01vZHVsZXMvY21hdGhtb2R1bGUuYwppbmRleCBjYmE0MmE3Li44MzE5NzY3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NtYXRobW9kdWxlLmMKKysrIGIvTW9kdWxlcy9jbWF0aG1vZHVsZS5jCkBAIC04MSw2ICs4MSw1NCBAQAogI2VuZGlmCiAjZGVmaW5lIENNX1NDQUxFX0RPV04gKC0oQ01fU0NBTEVfVVArMSkvMikKIAorLyogQ29uc3RhbnRzIGNtYXRoLmluZiwgY21hdGguaW5maiwgY21hdGgubmFuLCBjbWF0aC5uYW5qLgorICAgY21hdGgubmFuIGFuZCBjbWF0aC5uYW5qIGFyZSBkZWZpbmVkIG9ubHkgd2hlbiBlaXRoZXIKKyAgIFBZX05PX1NIT1JUX0ZMT0FUX1JFUFIgaXMgKm5vdCogZGVmaW5lZCAod2hpY2ggc2hvdWxkIGJlCisgICB0aGUgbW9zdCBjb21tb24gc2l0dWF0aW9uIG9uIG1hY2hpbmVzIHVzaW5nIGFuIElFRUUgNzU0CisgICByZXByZXNlbnRhdGlvbiksIG9yIFB5X05BTiBpcyBkZWZpbmVkLiAqLworCitzdGF0aWMgZG91YmxlCittX2luZih2b2lkKQoreworI2lmbmRlZiBQWV9OT19TSE9SVF9GTE9BVF9SRVBSCisgICAgcmV0dXJuIF9QeV9kZ19pbmZpbml0eSgwKTsKKyNlbHNlCisgICAgcmV0dXJuIFB5X0hVR0VfVkFMOworI2VuZGlmCit9CisKK3N0YXRpYyBQeV9jb21wbGV4CitjX2luZmoodm9pZCkKK3sKKyAgICBQeV9jb21wbGV4IHI7CisgICAgci5yZWFsID0gMC4wOworICAgIHIuaW1hZyA9IG1faW5mKCk7CisgICAgcmV0dXJuIHI7Cit9CisKKyNpZiAhZGVmaW5lZChQWV9OT19TSE9SVF9GTE9BVF9SRVBSKSB8fCBkZWZpbmVkKFB5X05BTikKKworc3RhdGljIGRvdWJsZQorbV9uYW4odm9pZCkKK3sKKyNpZm5kZWYgUFlfTk9fU0hPUlRfRkxPQVRfUkVQUgorICAgIHJldHVybiBfUHlfZGdfc3RkbmFuKDApOworI2Vsc2UKKyAgICByZXR1cm4gUHlfTkFOOworI2VuZGlmCit9CisKK3N0YXRpYyBQeV9jb21wbGV4CitjX25hbmoodm9pZCkKK3sKKyAgICBQeV9jb21wbGV4IHI7CisgICAgci5yZWFsID0gMC4wOworICAgIHIuaW1hZyA9IG1fbmFuKCk7CisgICAgcmV0dXJuIHI7Cit9CisKKyNlbmRpZgorCiAvKiBmb3J3YXJkIGRlY2xhcmF0aW9ucyAqLwogc3RhdGljIFB5X2NvbXBsZXggY21hdGhfYXNpbmhfaW1wbChQeU9iamVjdCAqLCBQeV9jb21wbGV4KTsKIHN0YXRpYyBQeV9jb21wbGV4IGNtYXRoX2F0YW5oX2ltcGwoUHlPYmplY3QgKiwgUHlfY29tcGxleCk7CkBAIC0xMjM5LDYgKzEyODcsMTMgQEAKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgInBpIiwKICAgICAgICAgICAgICAgICAgICAgICAgUHlGbG9hdF9Gcm9tRG91YmxlKFB5X01BVEhfUEkpKTsKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgImUiLCBQeUZsb2F0X0Zyb21Eb3VibGUoUHlfTUFUSF9FKSk7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJ0YXUiLCBQeUZsb2F0X0Zyb21Eb3VibGUoUHlfTUFUSF9UQVUpKTsgLyogMnBpICovCisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJpbmYiLCBQeUZsb2F0X0Zyb21Eb3VibGUobV9pbmYoKSkpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiaW5maiIsIFB5Q29tcGxleF9Gcm9tQ0NvbXBsZXgoY19pbmZqKCkpKTsKKyNpZiAhZGVmaW5lZChQWV9OT19TSE9SVF9GTE9BVF9SRVBSKSB8fCBkZWZpbmVkKFB5X05BTikKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIm5hbiIsIFB5RmxvYXRfRnJvbURvdWJsZShtX25hbigpKSk7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJuYW5qIiwgUHlDb21wbGV4X0Zyb21DQ29tcGxleChjX25hbmooKSkpOworI2VuZGlmCiAKICAgICAvKiBpbml0aWFsaXplIHNwZWNpYWwgdmFsdWUgdGFibGVzICovCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvZmF1bHRoYW5kbGVyLmMgYi9Nb2R1bGVzL2ZhdWx0aGFuZGxlci5jCmluZGV4IGYxZmRhNDguLjFjMWU0ZmIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvZmF1bHRoYW5kbGVyLmMKKysrIGIvTW9kdWxlcy9mYXVsdGhhbmRsZXIuYwpAQCAtMTE5LDcgKzExOSw3IEBACiAgICAgICAgaGFuZGxlciBmYWlscyBpbiBmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3IoKSAqLwogICAgIHtTSUdTRUdWLCAwLCAiU2VnbWVudGF0aW9uIGZhdWx0IiwgfQogfTsKLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGZhdWx0aGFuZGxlcl9uc2lnbmFscyA9IFwKK3N0YXRpYyBjb25zdCBzaXplX3QgZmF1bHRoYW5kbGVyX25zaWduYWxzID0gXAogICAgIFB5X0FSUkFZX0xFTkdUSChmYXVsdGhhbmRsZXJfaGFuZGxlcnMpOwogCiAjaWZkZWYgSEFWRV9TSUdBTFRTVEFDSwpAQCAtMTU5LDcgKzE1OSw3IEBACiAgICAgICAgIGZkID0gX1B5TG9uZ19Bc0ludChmaWxlKTsKICAgICAgICAgaWYgKGZkID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIGlmIChmZCA8IDAgfHwgIV9QeVZlcmlmeV9mZChmZCkpIHsKKyAgICAgICAgaWYgKGZkIDwgMCkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUgaXMgbm90IGEgdmFsaWQgZmlsZSBkZXNjcmlwdGVyIik7CiAgICAgICAgICAgICByZXR1cm4gLTE7CkBAIC0xNjgsNyArMTY4LDcgQEAKICAgICAgICAgcmV0dXJuIGZkOwogICAgIH0KIAotICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZmlsZSwgJlB5SWRfZmlsZW5vLCAiIik7CisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmaWxlLCAmUHlJZF9maWxlbm8sIE5VTEwpOwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogCkBAIC0xODYsNyArMTg2LDcgQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZmlsZSwgJlB5SWRfZmx1c2gsICIiKTsKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZpbGUsICZQeUlkX2ZsdXNoLCBOVUxMKTsKICAgICBpZiAocmVzdWx0ICE9IE5VTEwpCiAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgIGVsc2UgewpAQCAtMjAyLDggKzIwMiw5IEBACiBzdGF0aWMgUHlUaHJlYWRTdGF0ZSoKIGdldF90aHJlYWRfc3RhdGUodm9pZCkKIHsKLSAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dldCgpOworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IF9QeVRocmVhZFN0YXRlX1VuY2hlY2tlZEdldCgpOwogICAgIGlmICh0c3RhdGUgPT0gTlVMTCkgeworICAgICAgICAvKiBqdXN0IGluIGNhc2UgYnV0IHZlcnkgdW5saWtlbHkuLi4gKi8KICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmFibGUgdG8gZ2V0IHRoZSBjdXJyZW50IHRocmVhZCBzdGF0ZSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTIzNCwxMSArMjM1LDEyIEBACiAgICAgICAgUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUoKS4gKi8KICAgICB0c3RhdGUgPSBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZSgpOwogI2Vsc2UKLSAgICB0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dldCgpOworICAgIHRzdGF0ZSA9IF9QeVRocmVhZFN0YXRlX1VuY2hlY2tlZEdldCgpOwogI2VuZGlmCiAKLSAgICBpZiAoYWxsX3RocmVhZHMpCi0gICAgICAgIF9QeV9EdW1wVHJhY2ViYWNrVGhyZWFkcyhmZCwgaW50ZXJwLCB0c3RhdGUpOworICAgIGlmIChhbGxfdGhyZWFkcykgeworICAgICAgICAodm9pZClfUHlfRHVtcFRyYWNlYmFja1RocmVhZHMoZmQsIE5VTEwsIHRzdGF0ZSk7CisgICAgfQogICAgIGVsc2UgewogICAgICAgICBpZiAodHN0YXRlICE9IE5VTEwpCiAgICAgICAgICAgICBfUHlfRHVtcFRyYWNlYmFjayhmZCwgdHN0YXRlKTsKQEAgLTI3Miw3ICsyNzQsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmIChhbGxfdGhyZWFkcykgewotICAgICAgICBlcnJtc2cgPSBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHMoZmQsIHRzdGF0ZS0+aW50ZXJwLCB0c3RhdGUpOworICAgICAgICBlcnJtc2cgPSBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHMoZmQsIE5VTEwsIHRzdGF0ZSk7CiAgICAgICAgIGlmIChlcnJtc2cgIT0gTlVMTCkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgZXJybXNnKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjg4LDYgKzI5MCwxOSBAQAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCitzdGF0aWMgdm9pZAorZmF1bHRoYW5kbGVyX2Rpc2FibGVfZmF0YWxfaGFuZGxlcihmYXVsdF9oYW5kbGVyX3QgKmhhbmRsZXIpCit7CisgICAgaWYgKCFoYW5kbGVyLT5lbmFibGVkKQorICAgICAgICByZXR1cm47CisgICAgaGFuZGxlci0+ZW5hYmxlZCA9IDA7CisjaWZkZWYgSEFWRV9TSUdBQ1RJT04KKyAgICAodm9pZClzaWdhY3Rpb24oaGFuZGxlci0+c2lnbnVtLCAmaGFuZGxlci0+cHJldmlvdXMsIE5VTEwpOworI2Vsc2UKKyAgICAodm9pZClzaWduYWwoaGFuZGxlci0+c2lnbnVtLCBoYW5kbGVyLT5wcmV2aW91cyk7CisjZW5kaWYKK30KKwogCiAvKiBIYW5kbGVyIGZvciBTSUdTRUdWLCBTSUdGUEUsIFNJR0FCUlQsIFNJR0JVUyBhbmQgU0lHSUxMIHNpZ25hbHMuCiAKQEAgLTMwNiw3ICszMjEsNyBAQAogZmF1bHRoYW5kbGVyX2ZhdGFsX2Vycm9yKGludCBzaWdudW0pCiB7CiAgICAgY29uc3QgaW50IGZkID0gZmF0YWxfZXJyb3IuZmQ7Ci0gICAgdW5zaWduZWQgaW50IGk7CisgICAgc2l6ZV90IGk7CiAgICAgZmF1bHRfaGFuZGxlcl90ICpoYW5kbGVyID0gTlVMTDsKICAgICBpbnQgc2F2ZV9lcnJubyA9IGVycm5vOwogCkBAIC0zMjQsMTIgKzMzOSw3IEBACiAgICAgfQogCiAgICAgLyogcmVzdG9yZSB0aGUgcHJldmlvdXMgaGFuZGxlciAqLwotI2lmZGVmIEhBVkVfU0lHQUNUSU9OCi0gICAgKHZvaWQpc2lnYWN0aW9uKHNpZ251bSwgJmhhbmRsZXItPnByZXZpb3VzLCBOVUxMKTsKLSNlbHNlCi0gICAgKHZvaWQpc2lnbmFsKHNpZ251bSwgaGFuZGxlci0+cHJldmlvdXMpOwotI2VuZGlmCi0gICAgaGFuZGxlci0+ZW5hYmxlZCA9IDA7CisgICAgZmF1bHRoYW5kbGVyX2Rpc2FibGVfZmF0YWxfaGFuZGxlcihoYW5kbGVyKTsKIAogICAgIFBVVFMoZmQsICJGYXRhbCBQeXRob24gZXJyb3I6ICIpOwogICAgIFBVVFMoZmQsIGhhbmRsZXItPm5hbWUpOwpAQCAtMzUxLDIwICszNjEsMTE3IEBACiAgICAgcmFpc2Uoc2lnbnVtKTsKIH0KIAorI2lmZGVmIE1TX1dJTkRPV1MKK3N0YXRpYyBMT05HIFdJTkFQSQorZmF1bHRoYW5kbGVyX2V4Y19oYW5kbGVyKHN0cnVjdCBfRVhDRVBUSU9OX1BPSU5URVJTICpleGNfaW5mbykKK3sKKyAgICBjb25zdCBpbnQgZmQgPSBmYXRhbF9lcnJvci5mZDsKKyAgICBEV09SRCBjb2RlID0gZXhjX2luZm8tPkV4Y2VwdGlvblJlY29yZC0+RXhjZXB0aW9uQ29kZTsKKyAgICBEV09SRCBmbGFncyA9IGV4Y19pbmZvLT5FeGNlcHRpb25SZWNvcmQtPkV4Y2VwdGlvbkZsYWdzOworCisgICAgLyogb25seSBsb2cgZmF0YWwgZXhjZXB0aW9ucyAqLworICAgIGlmIChmbGFncyAmIEVYQ0VQVElPTl9OT05DT05USU5VQUJMRSkgeworICAgICAgICAvKiBjYWxsIHRoZSBuZXh0IGV4Y2VwdGlvbiBoYW5kbGVyICovCisgICAgICAgIHJldHVybiBFWENFUFRJT05fQ09OVElOVUVfU0VBUkNIOworICAgIH0KKworICAgIFBVVFMoZmQsICJXaW5kb3dzIGZhdGFsIGV4Y2VwdGlvbjogIik7CisgICAgc3dpdGNoIChjb2RlKQorICAgIHsKKyAgICAvKiBvbmx5IGZvcm1hdCBtb3N0IGNvbW1vbiBlcnJvcnMgKi8KKyAgICBjYXNlIEVYQ0VQVElPTl9BQ0NFU1NfVklPTEFUSU9OOiBQVVRTKGZkLCAiYWNjZXNzIHZpb2xhdGlvbiIpOyBicmVhazsKKyAgICBjYXNlIEVYQ0VQVElPTl9GTFRfRElWSURFX0JZX1pFUk86IFBVVFMoZmQsICJmbG9hdCBkaXZpZGUgYnkgemVybyIpOyBicmVhazsKKyAgICBjYXNlIEVYQ0VQVElPTl9GTFRfT1ZFUkZMT1c6IFBVVFMoZmQsICJmbG9hdCBvdmVyZmxvdyIpOyBicmVhazsKKyAgICBjYXNlIEVYQ0VQVElPTl9JTlRfRElWSURFX0JZX1pFUk86IFBVVFMoZmQsICJpbnQgZGl2aWRlIGJ5IHplcm8iKTsgYnJlYWs7CisgICAgY2FzZSBFWENFUFRJT05fSU5UX09WRVJGTE9XOiBQVVRTKGZkLCAiaW50ZWdlciBvdmVyZmxvdyIpOyBicmVhazsKKyAgICBjYXNlIEVYQ0VQVElPTl9JTl9QQUdFX0VSUk9SOiBQVVRTKGZkLCAicGFnZSBlcnJvciIpOyBicmVhazsKKyAgICBjYXNlIEVYQ0VQVElPTl9TVEFDS19PVkVSRkxPVzogUFVUUyhmZCwgInN0YWNrIG92ZXJmbG93Iik7IGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIFBVVFMoZmQsICJjb2RlICIpOworICAgICAgICBfUHlfRHVtcERlY2ltYWwoZmQsIGNvZGUpOworICAgIH0KKyAgICBQVVRTKGZkLCAiXG5cbiIpOworCisgICAgaWYgKGNvZGUgPT0gRVhDRVBUSU9OX0FDQ0VTU19WSU9MQVRJT04pIHsKKyAgICAgICAgLyogZGlzYWJsZSBzaWduYWwgaGFuZGxlciBmb3IgU0lHU0VHViAqLworICAgICAgICBzaXplX3QgaTsKKyAgICAgICAgZm9yIChpPTA7IGkgPCBmYXVsdGhhbmRsZXJfbnNpZ25hbHM7IGkrKykgeworICAgICAgICAgICAgZmF1bHRfaGFuZGxlcl90ICpoYW5kbGVyID0gJmZhdWx0aGFuZGxlcl9oYW5kbGVyc1tpXTsKKyAgICAgICAgICAgIGlmIChoYW5kbGVyLT5zaWdudW0gPT0gU0lHU0VHVikgeworICAgICAgICAgICAgICAgIGZhdWx0aGFuZGxlcl9kaXNhYmxlX2ZhdGFsX2hhbmRsZXIoaGFuZGxlcik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmYXVsdGhhbmRsZXJfZHVtcF90cmFjZWJhY2soZmQsIGZhdGFsX2Vycm9yLmFsbF90aHJlYWRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYXRhbF9lcnJvci5pbnRlcnApOworCisgICAgLyogY2FsbCB0aGUgbmV4dCBleGNlcHRpb24gaGFuZGxlciAqLworICAgIHJldHVybiBFWENFUFRJT05fQ09OVElOVUVfU0VBUkNIOworfQorI2VuZGlmCisKIC8qIEluc3RhbGwgdGhlIGhhbmRsZXIgZm9yIGZhdGFsIHNpZ25hbHMsIGZhdWx0aGFuZGxlcl9mYXRhbF9lcnJvcigpLiAqLwogCitzdGF0aWMgaW50CitmYXVsdGhhbmRsZXJfZW5hYmxlKHZvaWQpCit7CisgICAgc2l6ZV90IGk7CisKKyAgICBpZiAoZmF0YWxfZXJyb3IuZW5hYmxlZCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgZmF0YWxfZXJyb3IuZW5hYmxlZCA9IDE7CisKKyAgICBmb3IgKGk9MDsgaSA8IGZhdWx0aGFuZGxlcl9uc2lnbmFsczsgaSsrKSB7CisgICAgICAgIGZhdWx0X2hhbmRsZXJfdCAqaGFuZGxlcjsKKyNpZmRlZiBIQVZFX1NJR0FDVElPTgorICAgICAgICBzdHJ1Y3Qgc2lnYWN0aW9uIGFjdGlvbjsKKyNlbmRpZgorICAgICAgICBpbnQgZXJyOworCisgICAgICAgIGhhbmRsZXIgPSAmZmF1bHRoYW5kbGVyX2hhbmRsZXJzW2ldOworICAgICAgICBhc3NlcnQoIWhhbmRsZXItPmVuYWJsZWQpOworI2lmZGVmIEhBVkVfU0lHQUNUSU9OCisgICAgICAgIGFjdGlvbi5zYV9oYW5kbGVyID0gZmF1bHRoYW5kbGVyX2ZhdGFsX2Vycm9yOworICAgICAgICBzaWdlbXB0eXNldCgmYWN0aW9uLnNhX21hc2spOworICAgICAgICAvKiBEbyBub3QgcHJldmVudCB0aGUgc2lnbmFsIGZyb20gYmVpbmcgcmVjZWl2ZWQgZnJvbSB3aXRoaW4KKyAgICAgICAgICAgaXRzIG93biBzaWduYWwgaGFuZGxlciAqLworICAgICAgICBhY3Rpb24uc2FfZmxhZ3MgPSBTQV9OT0RFRkVSOworI2lmZGVmIEhBVkVfU0lHQUxUU1RBQ0sKKyAgICAgICAgaWYgKHN0YWNrLnNzX3NwICE9IE5VTEwpIHsKKyAgICAgICAgICAgIC8qIENhbGwgdGhlIHNpZ25hbCBoYW5kbGVyIG9uIGFuIGFsdGVybmF0ZSBzaWduYWwgc3RhY2sKKyAgICAgICAgICAgICAgIHByb3ZpZGVkIGJ5IHNpZ2FsdHN0YWNrKCkgKi8KKyAgICAgICAgICAgIGFjdGlvbi5zYV9mbGFncyB8PSBTQV9PTlNUQUNLOworICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgZXJyID0gc2lnYWN0aW9uKGhhbmRsZXItPnNpZ251bSwgJmFjdGlvbiwgJmhhbmRsZXItPnByZXZpb3VzKTsKKyNlbHNlCisgICAgICAgIGhhbmRsZXItPnByZXZpb3VzID0gc2lnbmFsKGhhbmRsZXItPnNpZ251bSwKKyAgICAgICAgICAgICAgICBmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3IpOworICAgICAgICBlcnIgPSAoaGFuZGxlci0+cHJldmlvdXMgPT0gU0lHX0VSUik7CisjZW5kaWYKKyAgICAgICAgaWYgKGVycikgeworICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX1J1bnRpbWVFcnJvcik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKworICAgICAgICBoYW5kbGVyLT5lbmFibGVkID0gMTsKKyAgICB9CisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgQWRkVmVjdG9yZWRFeGNlcHRpb25IYW5kbGVyKDEsIGZhdWx0aGFuZGxlcl9leGNfaGFuZGxlcik7CisjZW5kaWYKKyAgICByZXR1cm4gMDsKK30KKwogc3RhdGljIFB5T2JqZWN0KgotZmF1bHRoYW5kbGVyX2VuYWJsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitmYXVsdGhhbmRsZXJfcHlfZW5hYmxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImZpbGUiLCAiYWxsX3RocmVhZHMiLCBOVUxMfTsKICAgICBQeU9iamVjdCAqZmlsZSA9IE5VTEw7CiAgICAgaW50IGFsbF90aHJlYWRzID0gMTsKLSAgICB1bnNpZ25lZCBpbnQgaTsKLSAgICBmYXVsdF9oYW5kbGVyX3QgKmhhbmRsZXI7Ci0jaWZkZWYgSEFWRV9TSUdBQ1RJT04KLSAgICBzdHJ1Y3Qgc2lnYWN0aW9uIGFjdGlvbjsKLSNlbmRpZgotICAgIGludCBlcnI7CiAgICAgaW50IGZkOwogICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKIApAQCAtMzg2LDM3ICs0OTMsMTAgQEAKICAgICBmYXRhbF9lcnJvci5hbGxfdGhyZWFkcyA9IGFsbF90aHJlYWRzOwogICAgIGZhdGFsX2Vycm9yLmludGVycCA9IHRzdGF0ZS0+aW50ZXJwOwogCi0gICAgaWYgKCFmYXRhbF9lcnJvci5lbmFibGVkKSB7Ci0gICAgICAgIGZhdGFsX2Vycm9yLmVuYWJsZWQgPSAxOwotCi0gICAgICAgIGZvciAoaT0wOyBpIDwgZmF1bHRoYW5kbGVyX25zaWduYWxzOyBpKyspIHsKLSAgICAgICAgICAgIGhhbmRsZXIgPSAmZmF1bHRoYW5kbGVyX2hhbmRsZXJzW2ldOwotI2lmZGVmIEhBVkVfU0lHQUNUSU9OCi0gICAgICAgICAgICBhY3Rpb24uc2FfaGFuZGxlciA9IGZhdWx0aGFuZGxlcl9mYXRhbF9lcnJvcjsKLSAgICAgICAgICAgIHNpZ2VtcHR5c2V0KCZhY3Rpb24uc2FfbWFzayk7Ci0gICAgICAgICAgICAvKiBEbyBub3QgcHJldmVudCB0aGUgc2lnbmFsIGZyb20gYmVpbmcgcmVjZWl2ZWQgZnJvbSB3aXRoaW4KLSAgICAgICAgICAgICAgIGl0cyBvd24gc2lnbmFsIGhhbmRsZXIgKi8KLSAgICAgICAgICAgIGFjdGlvbi5zYV9mbGFncyA9IFNBX05PREVGRVI7Ci0jaWZkZWYgSEFWRV9TSUdBTFRTVEFDSwotICAgICAgICAgICAgaWYgKHN0YWNrLnNzX3NwICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAvKiBDYWxsIHRoZSBzaWduYWwgaGFuZGxlciBvbiBhbiBhbHRlcm5hdGUgc2lnbmFsIHN0YWNrCi0gICAgICAgICAgICAgICAgICAgcHJvdmlkZWQgYnkgc2lnYWx0c3RhY2soKSAqLwotICAgICAgICAgICAgICAgIGFjdGlvbi5zYV9mbGFncyB8PSBTQV9PTlNUQUNLOwotICAgICAgICAgICAgfQotI2VuZGlmCi0gICAgICAgICAgICBlcnIgPSBzaWdhY3Rpb24oaGFuZGxlci0+c2lnbnVtLCAmYWN0aW9uLCAmaGFuZGxlci0+cHJldmlvdXMpOwotI2Vsc2UKLSAgICAgICAgICAgIGhhbmRsZXItPnByZXZpb3VzID0gc2lnbmFsKGhhbmRsZXItPnNpZ251bSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhdWx0aGFuZGxlcl9mYXRhbF9lcnJvcik7Ci0gICAgICAgICAgICBlcnIgPSAoaGFuZGxlci0+cHJldmlvdXMgPT0gU0lHX0VSUik7Ci0jZW5kaWYKLSAgICAgICAgICAgIGlmIChlcnIpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfUnVudGltZUVycm9yKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGhhbmRsZXItPmVuYWJsZWQgPSAxOwotICAgICAgICB9CisgICAgaWYgKGZhdWx0aGFuZGxlcl9lbmFibGUoKSA8IDApIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorCiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKQEAgLTQzMCwxNCArNTEwLDcgQEAKICAgICAgICAgZmF0YWxfZXJyb3IuZW5hYmxlZCA9IDA7CiAgICAgICAgIGZvciAoaT0wOyBpIDwgZmF1bHRoYW5kbGVyX25zaWduYWxzOyBpKyspIHsKICAgICAgICAgICAgIGhhbmRsZXIgPSAmZmF1bHRoYW5kbGVyX2hhbmRsZXJzW2ldOwotICAgICAgICAgICAgaWYgKCFoYW5kbGVyLT5lbmFibGVkKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotI2lmZGVmIEhBVkVfU0lHQUNUSU9OCi0gICAgICAgICAgICAodm9pZClzaWdhY3Rpb24oaGFuZGxlci0+c2lnbnVtLCAmaGFuZGxlci0+cHJldmlvdXMsIE5VTEwpOwotI2Vsc2UKLSAgICAgICAgICAgICh2b2lkKXNpZ25hbChoYW5kbGVyLT5zaWdudW0sIGhhbmRsZXItPnByZXZpb3VzKTsKLSNlbmRpZgotICAgICAgICAgICAgaGFuZGxlci0+ZW5hYmxlZCA9IDA7CisgICAgICAgICAgICBmYXVsdGhhbmRsZXJfZGlzYWJsZV9mYXRhbF9oYW5kbGVyKGhhbmRsZXIpOwogICAgICAgICB9CiAgICAgfQogCkBAIC00NjksNyArNTQyLDYgQEAKIHsKICAgICBQeUxvY2tTdGF0dXMgc3Q7CiAgICAgY29uc3QgY2hhciogZXJybXNnOwotICAgIFB5VGhyZWFkU3RhdGUgKmN1cnJlbnQ7CiAgICAgaW50IG9rOwogI2lmIGRlZmluZWQoSEFWRV9QVEhSRUFEX1NJR01BU0spICYmICFkZWZpbmVkKEhBVkVfQlJPS0VOX1BUSFJFQURfU0lHTUFTSykKICAgICBzaWdzZXRfdCBzZXQ7CkBAIC00ODksMTIgKzU2MSw5IEBACiAgICAgICAgIC8qIFRpbWVvdXQgPT4gZHVtcCB0cmFjZWJhY2sgKi8KICAgICAgICAgYXNzZXJ0KHN0ID09IFBZX0xPQ0tfRkFJTFVSRSk7CiAKLSAgICAgICAgLyogZ2V0IHRoZSB0aHJlYWQgaG9sZGluZyB0aGUgR0lMLCBOVUxMIGlmIG5vIHRocmVhZCBob2xkIHRoZSBHSUwgKi8KLSAgICAgICAgY3VycmVudCA9IF9QeVRocmVhZFN0YXRlX1VuY2hlY2tlZEdldCgpOwotCiAgICAgICAgIF9QeV93cml0ZV9ub3JhaXNlKHRocmVhZC5mZCwgdGhyZWFkLmhlYWRlciwgKGludCl0aHJlYWQuaGVhZGVyX2xlbik7CiAKLSAgICAgICAgZXJybXNnID0gX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKHRocmVhZC5mZCwgdGhyZWFkLmludGVycCwgY3VycmVudCk7CisgICAgICAgIGVycm1zZyA9IF9QeV9EdW1wVHJhY2ViYWNrVGhyZWFkcyh0aHJlYWQuZmQsIHRocmVhZC5pbnRlcnAsIE5VTEwpOwogICAgICAgICBvayA9IChlcnJtc2cgPT0gTlVMTCk7CiAKICAgICAgICAgaWYgKHRocmVhZC5leGl0KQpAQCAtODk0LDcgKzk2Myw3IEBACiBmYXVsdGhhbmRsZXJfc2lnc2VndihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgaW50IHJlbGVhc2VfZ2lsID0gMDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOl9yZWFkX251bGwiLCAmcmVsZWFzZV9naWwpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGk6X3NpZ3NlZ3YiLCAmcmVsZWFzZV9naWwpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmIChyZWxlYXNlX2dpbCkgewpAQCAtOTA3LDYgKzk3Niw0OSBAQAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCisjaWZkZWYgV0lUSF9USFJFQUQKK3N0YXRpYyB2b2lkCitmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3JfdGhyZWFkKHZvaWQgKnBsb2NrKQoreworICAgIFB5VGhyZWFkX3R5cGVfbG9jayAqbG9jayA9IChQeVRocmVhZF90eXBlX2xvY2sgKilwbG9jazsKKworICAgIFB5X0ZhdGFsRXJyb3IoImluIG5ldyB0aHJlYWQiKTsKKworICAgIC8qIG5vdGlmeSB0aGUgY2FsbGVyIHRoYXQgd2UgYXJlIGRvbmUgKi8KKyAgICBQeVRocmVhZF9yZWxlYXNlX2xvY2sobG9jayk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3JfY190aHJlYWQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGxvbmcgdGhyZWFkOworICAgIFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrOworCisgICAgZmF1bHRoYW5kbGVyX3N1cHByZXNzX2NyYXNoX3JlcG9ydCgpOworCisgICAgbG9jayA9IFB5VGhyZWFkX2FsbG9jYXRlX2xvY2soKTsKKyAgICBpZiAobG9jayA9PSBOVUxMKQorICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKworICAgIFB5VGhyZWFkX2FjcXVpcmVfbG9jayhsb2NrLCBXQUlUX0xPQ0spOworCisgICAgdGhyZWFkID0gUHlUaHJlYWRfc3RhcnRfbmV3X3RocmVhZChmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3JfdGhyZWFkLCBsb2NrKTsKKyAgICBpZiAodGhyZWFkID09IC0xKSB7CisgICAgICAgIFB5VGhyZWFkX2ZyZWVfbG9jayhsb2NrKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgInVuYWJsZSB0byBzdGFydCB0aGUgdGhyZWFkIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qIHdhaXQgdW50aWwgdGhlIHRocmVhZCBjb21wbGV0ZXM6IGl0IHdpbGwgbmV2ZXIgb2NjdXIsIHNpbmNlIFB5X0ZhdGFsRXJyb3IoKQorICAgICAgIGV4aXRzIHRoZSBwcm9jZXNzIGltbWVkaWFsdHkuICovCisgICAgUHlUaHJlYWRfYWNxdWlyZV9sb2NrKGxvY2ssIFdBSVRfTE9DSyk7CisgICAgUHlUaHJlYWRfcmVsZWFzZV9sb2NrKGxvY2spOworICAgIFB5VGhyZWFkX2ZyZWVfbG9jayhsb2NrKTsKKworICAgIFB5X1JFVFVSTl9OT05FOworfQorI2VuZGlmCisKIHN0YXRpYyBQeU9iamVjdCAqCiBmYXVsdGhhbmRsZXJfc2lnZnBlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKQEAgLTk1MSw2ICsxMDYzLDggQEAKIH0KIAogI2lmIGRlZmluZWQoSEFWRV9TSUdBTFRTVEFDSykgJiYgZGVmaW5lZChIQVZFX1NJR0FDVElPTikKKyNkZWZpbmUgRkFVTFRIQU5ETEVSX1NUQUNLX09WRVJGTE9XCisKICNpZmRlZiBfX0lOVEVMX0NPTVBJTEVSCiAgICAvKiBJc3N1ZSAjMjM2NTQ6IFR1cm4gb2ZmIElDQydzIHRhaWwgY2FsbCBvcHRpbWl6YXRpb24gZm9yIHRoZQogICAgICogc3RhY2tfb3ZlcmZsb3cgZ2VuZXJhdG9yLiBJQ0MgdHVybnMgdGhlIHJlY3Vyc2l2ZSB0YWlsIGNhbGwgaW50bwpAQCAtOTU4LDEyICsxMDcyLDEyIEBACiAjICBwcmFnbWEgaW50ZWwgb3B0aW1pemF0aW9uX2xldmVsIDAKICNlbmRpZgogc3RhdGljCi1QeV91aW50cHRyX3QKLXN0YWNrX292ZXJmbG93KFB5X3VpbnRwdHJfdCBtaW5fc3AsIFB5X3VpbnRwdHJfdCBtYXhfc3AsIHNpemVfdCAqZGVwdGgpCit1aW50cHRyX3QKK3N0YWNrX292ZXJmbG93KHVpbnRwdHJfdCBtaW5fc3AsIHVpbnRwdHJfdCBtYXhfc3AsIHNpemVfdCAqZGVwdGgpCiB7CiAgICAgLyogYWxsb2NhdGUgNDA5NiBieXRlcyBvbiB0aGUgc3RhY2sgYXQgZWFjaCBjYWxsICovCiAgICAgdW5zaWduZWQgY2hhciBidWZmZXJbNDA5Nl07Ci0gICAgUHlfdWludHB0cl90IHNwID0gKFB5X3VpbnRwdHJfdCkmYnVmZmVyOworICAgIHVpbnRwdHJfdCBzcCA9ICh1aW50cHRyX3QpJmJ1ZmZlcjsKICAgICAqZGVwdGggKz0gMTsKICAgICBpZiAoc3AgPCBtaW5fc3AgfHwgbWF4X3NwIDwgc3ApCiAgICAgICAgIHJldHVybiBzcDsKQEAgLTk3Niw4ICsxMDkwLDggQEAKIGZhdWx0aGFuZGxlcl9zdGFja19vdmVyZmxvdyhQeU9iamVjdCAqc2VsZikKIHsKICAgICBzaXplX3QgZGVwdGgsIHNpemU7Ci0gICAgUHlfdWludHB0cl90IHNwID0gKFB5X3VpbnRwdHJfdCkmZGVwdGg7Ci0gICAgUHlfdWludHB0cl90IHN0b3A7CisgICAgdWludHB0cl90IHNwID0gKHVpbnRwdHJfdCkmZGVwdGg7CisgICAgdWludHB0cl90IHN0b3A7CiAKICAgICBmYXVsdGhhbmRsZXJfc3VwcHJlc3NfY3Jhc2hfcmVwb3J0KCk7CiAgICAgZGVwdGggPSAwOwpAQCAtOTk0LDcgKzExMDgsNyBAQAogICAgICAgICBzaXplLCBkZXB0aCk7CiAgICAgcmV0dXJuIE5VTEw7CiB9Ci0jZW5kaWYKKyNlbmRpZiAgIC8qIGRlZmluZWQoSEFWRV9TSUdBTFRTVEFDSykgJiYgZGVmaW5lZChIQVZFX1NJR0FDVElPTikgKi8KIAogCiBzdGF0aWMgaW50CkBAIC0xMDE3LDEyICsxMTMxLDI1IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKKyNpZmRlZiBNU19XSU5ET1dTCitzdGF0aWMgUHlPYmplY3QgKgorZmF1bHRoYW5kbGVyX3JhaXNlX2V4Y2VwdGlvbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgdW5zaWduZWQgaW50IGNvZGUsIGZsYWdzID0gMDsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIkl8STpfcmFpc2VfZXhjZXB0aW9uIiwgJmNvZGUsICZmbGFncykpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGZhdWx0aGFuZGxlcl9zdXBwcmVzc19jcmFzaF9yZXBvcnQoKTsKKyAgICBSYWlzZUV4Y2VwdGlvbihjb2RlLCBmbGFncywgMCwgTlVMTCk7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisjZW5kaWYKKwogUHlEb2NfU1RSVkFSKG1vZHVsZV9kb2MsCiAiZmF1bHRoYW5kbGVyIG1vZHVsZS4iKTsKIAogc3RhdGljIFB5TWV0aG9kRGVmIG1vZHVsZV9tZXRob2RzW10gPSB7CiAgICAgeyJlbmFibGUiLAotICAgICAoUHlDRnVuY3Rpb24pZmF1bHRoYW5kbGVyX2VuYWJsZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsCisgICAgIChQeUNGdW5jdGlvbilmYXVsdGhhbmRsZXJfcHlfZW5hYmxlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywKICAgICAgUHlEb2NfU1RSKCJlbmFibGUoZmlsZT1zeXMuc3RkZXJyLCBhbGxfdGhyZWFkcz1UcnVlKTogIgogICAgICAgICAgICAgICAgImVuYWJsZSB0aGUgZmF1bHQgaGFuZGxlciIpfSwKICAgICB7ImRpc2FibGUiLCAoUHlDRnVuY3Rpb24pZmF1bHRoYW5kbGVyX2Rpc2FibGVfcHksIE1FVEhfTk9BUkdTLApAQCAtMTA2NSwxNiArMTE5MiwyNSBAQAogICAgICAgICAgICAgICAgImEgU0lHU0VHViBvciBTSUdCVVMgc2lnbmFsIGRlcGVuZGluZyBvbiB0aGUgcGxhdGZvcm0iKX0sCiAgICAgeyJfc2lnc2VndiIsIGZhdWx0aGFuZGxlcl9zaWdzZWd2LCBNRVRIX1ZBUkFSR1MsCiAgICAgIFB5RG9jX1NUUigiX3NpZ3NlZ3YocmVsZWFzZV9naWw9RmFsc2UpOiByYWlzZSBhIFNJR1NFR1Ygc2lnbmFsIil9LAorI2lmZGVmIFdJVEhfVEhSRUFECisgICAgeyJfZmF0YWxfZXJyb3JfY190aHJlYWQiLCBmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3JfY190aHJlYWQsIE1FVEhfTk9BUkdTLAorICAgICBQeURvY19TVFIoImZhdGFsX2Vycm9yX2NfdGhyZWFkKCk6ICIKKyAgICAgICAgICAgICAgICJjYWxsIFB5X0ZhdGFsRXJyb3IoKSBpbiBhIG5ldyBDIHRocmVhZC4iKX0sCisjZW5kaWYKICAgICB7Il9zaWdhYnJ0IiwgZmF1bHRoYW5kbGVyX3NpZ2FicnQsIE1FVEhfTk9BUkdTLAogICAgICBQeURvY19TVFIoIl9zaWdhYnJ0KCk6IHJhaXNlIGEgU0lHQUJSVCBzaWduYWwiKX0sCiAgICAgeyJfc2lnZnBlIiwgKFB5Q0Z1bmN0aW9uKWZhdWx0aGFuZGxlcl9zaWdmcGUsIE1FVEhfTk9BUkdTLAogICAgICBQeURvY19TVFIoIl9zaWdmcGUoKTogcmFpc2UgYSBTSUdGUEUgc2lnbmFsIil9LAogICAgIHsiX2ZhdGFsX2Vycm9yIiwgZmF1bHRoYW5kbGVyX2ZhdGFsX2Vycm9yX3B5LCBNRVRIX1ZBUkFSR1MsCiAgICAgIFB5RG9jX1NUUigiX2ZhdGFsX2Vycm9yKG1lc3NhZ2UpOiBjYWxsIFB5X0ZhdGFsRXJyb3IobWVzc2FnZSkiKX0sCi0jaWYgZGVmaW5lZChIQVZFX1NJR0FMVFNUQUNLKSAmJiBkZWZpbmVkKEhBVkVfU0lHQUNUSU9OKQorI2lmZGVmIEZBVUxUSEFORExFUl9TVEFDS19PVkVSRkxPVwogICAgIHsiX3N0YWNrX292ZXJmbG93IiwgKFB5Q0Z1bmN0aW9uKWZhdWx0aGFuZGxlcl9zdGFja19vdmVyZmxvdywgTUVUSF9OT0FSR1MsCiAgICAgIFB5RG9jX1NUUigiX3N0YWNrX292ZXJmbG93KCk6IHJlY3Vyc2l2ZSBjYWxsIHRvIHJhaXNlIGEgc3RhY2sgb3ZlcmZsb3ciKX0sCiAjZW5kaWYKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgeyJfcmFpc2VfZXhjZXB0aW9uIiwgZmF1bHRoYW5kbGVyX3JhaXNlX2V4Y2VwdGlvbiwgTUVUSF9WQVJBUkdTLAorICAgICBQeURvY19TVFIoInJhaXNlX2V4Y2VwdGlvbihjb2RlLCBmbGFncz0wKTogQ2FsbCBSYWlzZUV4Y2VwdGlvbihjb2RlLCBmbGFncykuIil9LAorI2VuZGlmCiAgICAge05VTEwsIE5VTEx9ICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtMTA5Myw3ICsxMjI5LDMzIEBACiBQeU1PRElOSVRfRlVOQwogUHlJbml0X2ZhdWx0aGFuZGxlcih2b2lkKQogewotICAgIHJldHVybiBQeU1vZHVsZV9DcmVhdGUoJm1vZHVsZV9kZWYpOworICAgIFB5T2JqZWN0ICptID0gUHlNb2R1bGVfQ3JlYXRlKCZtb2R1bGVfZGVmKTsKKyAgICBpZiAobSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIC8qIEFkZCBjb25zdGFudHMgZm9yIHVuaXQgdGVzdHMgKi8KKyNpZmRlZiBNU19XSU5ET1dTCisgICAgLyogUmFpc2VFeGNlcHRpb24oKSBjb2RlcyAocHJlZml4ZWQgYnkgYW4gdW5kZXJzY29yZSkgKi8KKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIl9FWENFUFRJT05fQUNDRVNTX1ZJT0xBVElPTiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVYQ0VQVElPTl9BQ0NFU1NfVklPTEFUSU9OKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJfRVhDRVBUSU9OX0lOVF9ESVZJREVfQllfWkVSTyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVYQ0VQVElPTl9JTlRfRElWSURFX0JZX1pFUk8pKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIl9FWENFUFRJT05fU1RBQ0tfT1ZFUkZMT1ciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFWENFUFRJT05fU1RBQ0tfT1ZFUkZMT1cpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIC8qIFJhaXNlRXhjZXB0aW9uKCkgZmxhZ3MgKHByZWZpeGVkIGJ5IGFuIHVuZGVyc2NvcmUpICovCisgICAgaWYgKFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJfRVhDRVBUSU9OX05PTkNPTlRJTlVBQkxFIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVhDRVBUSU9OX05PTkNPTlRJTlVBQkxFKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJfRVhDRVBUSU9OX05PTkNPTlRJTlVBQkxFX0VYQ0VQVElPTiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVYQ0VQVElPTl9OT05DT05USU5VQUJMRV9FWENFUFRJT04pKQorICAgICAgICByZXR1cm4gTlVMTDsKKyNlbmRpZgorCisgICAgcmV0dXJuIG07CiB9CiAKIC8qIENhbGwgZmF1bHRoYW5kbGVyLmVuYWJsZSgpIGlmIHRoZSBQWVRIT05GQVVMVEhBTkRMRVIgZW52aXJvbm1lbnQgdmFyaWFibGUKQEAgLTExMjgsNyArMTI5MCw3IEBACiAgICAgaWYgKG1vZHVsZSA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChtb2R1bGUsICZQeUlkX2VuYWJsZSwgIiIpOworICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQobW9kdWxlLCAmUHlJZF9lbmFibGUsIE5VTEwpOwogICAgIFB5X0RFQ1JFRihtb2R1bGUpOwogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9nY21vZHVsZS5jIGIvTW9kdWxlcy9nY21vZHVsZS5jCmluZGV4IGNiNzIyMmQuLjc1NDM0OGUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvZ2Ntb2R1bGUuYworKysgYi9Nb2R1bGVzL2djbW9kdWxlLmMKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgImZyYW1lb2JqZWN0LmgiICAgICAgICAvKiBmb3IgUHlGcmFtZV9DbGVhckZyZWVMaXN0ICovCisjaW5jbHVkZSAicHlkdHJhY2UuaCIKICNpbmNsdWRlICJweXRpbWUuaCIgICAgICAgICAgICAgLyogZm9yIF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2soKSAqLwogCiAvKiBHZXQgYW4gb2JqZWN0J3MgR0MgaGVhZCAqLwpAQCAtNzM4LDcgKzczOSw3IEBACiB9CiAKIHN0YXRpYyB2b2lkCi1kZWJ1Z19jeWNsZShjaGFyICptc2csIFB5T2JqZWN0ICpvcCkKK2RlYnVnX2N5Y2xlKGNvbnN0IGNoYXIgKm1zZywgUHlPYmplY3QgKm9wKQogewogICAgIFB5U3lzX0Zvcm1hdFN0ZGVycigiZ2M6ICVzIDwlcyAlcD5cbiIsCiAgICAgICAgICAgICAgICAgICAgICAgIG1zZywgUHlfVFlQRShvcCktPnRwX25hbWUsIG9wKTsKQEAgLTg5Miw2ICs4OTMsNyBAQAogICAgICh2b2lkKVB5TGlzdF9DbGVhckZyZWVMaXN0KCk7CiAgICAgKHZvaWQpUHlEaWN0X0NsZWFyRnJlZUxpc3QoKTsKICAgICAodm9pZClQeVNldF9DbGVhckZyZWVMaXN0KCk7CisgICAgKHZvaWQpUHlBc3luY0dlbl9DbGVhckZyZWVMaXN0cygpOwogfQogCiAvKiBUaGlzIGlzIHRoZSBtYWluIGZ1bmN0aW9uLiAgUmVhZCB0aGlzIHRvIHVuZGVyc3RhbmQgaG93IHRoZQpAQCAtOTI0LDYgKzkyNiw5IEBACiAgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCJcbiIpOwogICAgIH0KIAorICAgIGlmIChQeURUcmFjZV9HQ19TVEFSVF9FTkFCTEVEKCkpCisgICAgICAgIFB5RFRyYWNlX0dDX1NUQVJUKGdlbmVyYXRpb24pOworCiAgICAgLyogdXBkYXRlIGNvbGxlY3Rpb24gYW5kIGFsbG9jYXRpb24gY291bnRlcnMgKi8KICAgICBpZiAoZ2VuZXJhdGlvbisxIDwgTlVNX0dFTkVSQVRJT05TKQogICAgICAgICBnZW5lcmF0aW9uc1tnZW5lcmF0aW9uKzFdLmNvdW50ICs9IDE7CkBAIC0xMDY4LDYgKzEwNzMsMTAgQEAKICAgICBzdGF0cy0+Y29sbGVjdGlvbnMrKzsKICAgICBzdGF0cy0+Y29sbGVjdGVkICs9IG07CiAgICAgc3RhdHMtPnVuY29sbGVjdGFibGUgKz0gbjsKKworICAgIGlmIChQeURUcmFjZV9HQ19ET05FX0VOQUJMRUQoKSkKKyAgICAgICAgUHlEVHJhY2VfR0NfRE9ORShuK20pOworCiAgICAgcmV0dXJuIG4rbTsKIH0KIApAQCAtMTU4OCw2ICsxNTk3LDE1IEBACiB9CiAKIFB5X3NzaXplX3QKK19QeUdDX0NvbGxlY3RJZkVuYWJsZWQodm9pZCkKK3sKKyAgICBpZiAoIWVuYWJsZWQpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIFB5R0NfQ29sbGVjdCgpOworfQorCitQeV9zc2l6ZV90CiBfUHlHQ19Db2xsZWN0Tm9GYWlsKHZvaWQpCiB7CiAgICAgUHlfc3NpemVfdCBuOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9nZXRhZGRyaW5mby5jIGIvTW9kdWxlcy9nZXRhZGRyaW5mby5jCmluZGV4IGQ4MTY3ZWEuLmI2ZmI1M2MgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvZ2V0YWRkcmluZm8uYworKysgYi9Nb2R1bGVzL2dldGFkZHJpbmZvLmMKQEAgLTEzNiw3ICsxMzYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGFkZHJpbmZvICosIGludCk7CiBzdGF0aWMgaW50IHN0cl9pc251bWJlcihjb25zdCBjaGFyICopOwogCi1zdGF0aWMgY2hhciAqYWlfZXJybGlzdFtdID0geworc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBhaV9lcnJsaXN0W10gPSB7CiAgICAgInN1Y2Nlc3MuIiwKICAgICAiYWRkcmVzcyBmYW1pbHkgZm9yIGhvc3RuYW1lIG5vdCBzdXBwb3J0ZWQuIiwgICAgICAgLyogRUFJX0FERFJGQU1JTFkgKi8KICAgICAidGVtcG9yYXJ5IGZhaWx1cmUgaW4gbmFtZSByZXNvbHV0aW9uLiIsICAgICAgICAgICAgLyogRUFJX0FHQUlOICAgICAgKi8KQEAgLTE5OCw3ICsxOTgsNyBAQAogCiAjZGVmaW5lIEVSUihlcnIpIHsgZXJyb3IgPSAoZXJyKTsgZ290byBiYWQ7IH0KIAotY2hhciAqCitjb25zdCBjaGFyICoKIGdhaV9zdHJlcnJvcihpbnQgZWNvZGUpCiB7CiAgICAgaWYgKGVjb2RlIDwgMCB8fCBlY29kZSA+IEVBSV9NQVgpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2dldHBhdGguYyBiL01vZHVsZXMvZ2V0cGF0aC5jCmluZGV4IGM0MzhiOGUuLjBmOTE2NDMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvZ2V0cGF0aC5jCisrKyBiL01vZHVsZXMvZ2V0cGF0aC5jCkBAIC00NjAsOCArNDYwLDggQEAKIHsKICAgICBleHRlcm4gd2NoYXJfdCAqUHlfR2V0UHJvZ3JhbU5hbWUodm9pZCk7CiAKLSAgICBzdGF0aWMgd2NoYXJfdCBkZWxpbWl0ZXJbMl0gPSB7REVMSU0sICdcMCd9OwotICAgIHN0YXRpYyB3Y2hhcl90IHNlcGFyYXRvclsyXSA9IHtTRVAsICdcMCd9OworICAgIHN0YXRpYyBjb25zdCB3Y2hhcl90IGRlbGltaXRlclsyXSA9IHtERUxJTSwgJ1wwJ307CisgICAgc3RhdGljIGNvbnN0IHdjaGFyX3Qgc2VwYXJhdG9yWzJdID0ge1NFUCwgJ1wwJ307CiAgICAgY2hhciAqX3J0cHlwYXRoID0gUHlfR0VURU5WKCJQWVRIT05QQVRIIik7IC8qIFhYWCB1c2Ugd2lkZSB2ZXJzaW9uIG9uIFdpbmRvd3MgKi8KICAgICB3Y2hhcl90ICpydHB5cGF0aCA9IE5VTEw7CiAgICAgd2NoYXJfdCAqaG9tZSA9IFB5X0dldFB5dGhvbkhvbWUoKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvZ3JwbW9kdWxlLmMgYi9Nb2R1bGVzL2dycG1vZHVsZS5jCmluZGV4IDNhMTM0YTAuLjk0MzdhZTcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvZ3JwbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9ncnBtb2R1bGUuYwpAQCAtMTAwLDE0ICsxMDAsMjUgQEAKICAgICBnaWRfdCBnaWQ7CiAgICAgc3RydWN0IGdyb3VwICpwOwogCi0gICAgcHlfaW50X2lkID0gUHlOdW1iZXJfTG9uZyhpZCk7Ci0gICAgaWYgKCFweV9pbnRfaWQpCisgICAgaWYgKCFfUHlfR2lkX0NvbnZlcnRlcihpZCwgJmdpZCkpIHsKKyAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpIHsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICghX1B5X0dpZF9Db252ZXJ0ZXIocHlfaW50X2lkLCAmZ2lkKSkgeworICAgICAgICB9CisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIGlmIChQeUVycl9XYXJuRm9ybWF0KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdyb3VwIGlkIG11c3QgYmUgaW50LCBub3QgJS4yMDAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZC0+b2JfdHlwZS0+dHBfbmFtZSkgPCAwKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBweV9pbnRfaWQgPSBQeU51bWJlcl9Mb25nKGlkKTsKKyAgICAgICAgaWYgKCFweV9pbnRfaWQpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKCFfUHlfR2lkX0NvbnZlcnRlcihweV9pbnRfaWQsICZnaWQpKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYocHlfaW50X2lkKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CiAgICAgICAgIFB5X0RFQ1JFRihweV9pbnRfaWQpOwotICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgUHlfREVDUkVGKHB5X2ludF9pZCk7CiAKICAgICBpZiAoKHAgPSBnZXRncmdpZChnaWQpKSA9PSBOVUxMKSB7CiAgICAgICAgIFB5T2JqZWN0ICpnaWRfb2JqID0gX1B5TG9uZ19Gcm9tR2lkKGdpZCk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2hhc2hsaWIuaCBiL01vZHVsZXMvaGFzaGxpYi5oCmluZGV4IDM1ODA0NTMuLjUzMGI2YjEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvaGFzaGxpYi5oCisrKyBiL01vZHVsZXMvaGFzaGxpYi5oCkBAIC0yLDMwICsyLDMzIEBACiAKIC8qCiAgKiBHaXZlbiBhIFB5T2JqZWN0KiBvYmosIGZpbGwgaW4gdGhlIFB5X2J1ZmZlciogdmlld3Agd2l0aCB0aGUgcmVzdWx0Ci0gKiBvZiBQeU9iamVjdF9HZXRCdWZmZXIuICBTZXRzIGFuIGV4Y2VwdGlvbiBhbmQgaXNzdWVzIGEgcmV0dXJuIE5VTEwKLSAqIG9uIGFueSBlcnJvcnMuCisgKiBvZiBQeU9iamVjdF9HZXRCdWZmZXIuICBTZXRzIGFuIGV4Y2VwdGlvbiBhbmQgaXNzdWVzIHRoZSBlcnJhY3Rpb24KKyAqIG9uIGFueSBlcnJvcnMsIGUuZy4gJ3JldHVybiBOVUxMJyBvciAnZ290byBlcnJvcicuCiAgKi8KLSNkZWZpbmUgR0VUX0JVRkZFUl9WSUVXX09SX0VSUk9VVChvYmosIHZpZXdwKSBkbyB7IFwKKyNkZWZpbmUgR0VUX0JVRkZFUl9WSUVXX09SX0VSUk9SKG9iaiwgdmlld3AsIGVycmFjdGlvbikgZG8geyBcCiAgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soKG9iaikpKSB7IFwKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5pY29kZS1vYmplY3RzIG11c3QgYmUgZW5jb2RlZCBiZWZvcmUgaGFzaGluZyIpO1wKLSAgICAgICAgICAgIHJldHVybiBOVUxMOyBcCisgICAgICAgICAgICBlcnJhY3Rpb247IFwKICAgICAgICAgfSBcCiAgICAgICAgIGlmICghUHlPYmplY3RfQ2hlY2tCdWZmZXIoKG9iaikpKSB7IFwKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib2JqZWN0IHN1cHBvcnRpbmcgdGhlIGJ1ZmZlciBBUEkgcmVxdWlyZWQiKTsgXAotICAgICAgICAgICAgcmV0dXJuIE5VTEw7IFwKKyAgICAgICAgICAgIGVycmFjdGlvbjsgXAogICAgICAgICB9IFwKICAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcigob2JqKSwgKHZpZXdwKSwgUHlCVUZfU0lNUExFKSA9PSAtMSkgeyBcCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsgXAorICAgICAgICAgICAgZXJyYWN0aW9uOyBcCiAgICAgICAgIH0gXAogICAgICAgICBpZiAoKHZpZXdwKS0+bmRpbSA+IDEpIHsgXAogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0J1ZmZlckVycm9yLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJ1ZmZlciBtdXN0IGJlIHNpbmdsZSBkaW1lbnNpb24iKTsgXAogICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgodmlld3ApKTsgXAotICAgICAgICAgICAgcmV0dXJuIE5VTEw7IFwKKyAgICAgICAgICAgIGVycmFjdGlvbjsgXAogICAgICAgICB9IFwKLSAgICB9IHdoaWxlKDApOworICAgIH0gd2hpbGUoMCkKKworI2RlZmluZSBHRVRfQlVGRkVSX1ZJRVdfT1JfRVJST1VUKG9iaiwgdmlld3ApIFwKKyAgICBHRVRfQlVGRkVSX1ZJRVdfT1JfRVJST1Iob2JqLCB2aWV3cCwgcmV0dXJuIE5VTEwpCiAKIC8qCiAgKiBIZWxwZXIgY29kZSB0byBzeW5jaHJvbml6ZSBhY2Nlc3MgdG8gdGhlIGhhc2ggb2JqZWN0IHdoZW4gdGhlIEdJTCBpcwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9oYXNodGFibGUuYyBiL01vZHVsZXMvaGFzaHRhYmxlLmMKaW5kZXggZmRkZGMxOS4uMDU0N2E2ZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9oYXNodGFibGUuYworKysgYi9Nb2R1bGVzL2hhc2h0YWJsZS5jCkBAIC0xLDUgKzEsNSBAQAotLyogVGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBoYXNoIHRhYmxlIChfUHlfaGFzaHRhYmxlX3QpIGlzIGJhc2VkIG9uIHRoZSBjZnVoYXNoCi0gICBwcm9qZWN0OgorLyogVGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBoYXNoIHRhYmxlIChfUHlfaGFzaHRhYmxlX3QpIGlzIGJhc2VkIG9uIHRoZQorICAgY2Z1aGFzaCBwcm9qZWN0OgogICAgaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9saWJjZnUvCiAKICAgIENvcHlyaWdodCBvZiBjZnVoYXNoOgpAQCAtNTksNyArNTksMjEgQEAKICNkZWZpbmUgRU5UUllfTkVYVChFTlRSWSkgXAogICAgICAgICAoKF9QeV9oYXNodGFibGVfZW50cnlfdCAqKV9QeV9TTElTVF9JVEVNX05FWFQoRU5UUlkpKQogI2RlZmluZSBIQVNIVEFCTEVfSVRFTV9TSVpFKEhUKSBcCi0gICAgICAgIChzaXplb2YoX1B5X2hhc2h0YWJsZV9lbnRyeV90KSArIChIVCktPmRhdGFfc2l6ZSkKKyAgICAgICAgKHNpemVvZihfUHlfaGFzaHRhYmxlX2VudHJ5X3QpICsgKEhUKS0+a2V5X3NpemUgKyAoSFQpLT5kYXRhX3NpemUpCisKKyNkZWZpbmUgRU5UUllfUkVBRF9QREFUQShUQUJMRSwgRU5UUlksIERBVEFfU0laRSwgUERBVEEpIFwKKyAgICBkbyB7IFwKKyAgICAgICAgYXNzZXJ0KChEQVRBX1NJWkUpID09IChUQUJMRSktPmRhdGFfc2l6ZSk7IFwKKyAgICAgICAgbWVtY3B5KChQREFUQSksIF9QeV9IQVNIVEFCTEVfRU5UUllfUERBVEEoVEFCTEUsIChFTlRSWSkpLCBcCisgICAgICAgICAgICAgICAgICAoREFUQV9TSVpFKSk7IFwKKyAgICB9IHdoaWxlICgwKQorCisjZGVmaW5lIEVOVFJZX1dSSVRFX1BEQVRBKFRBQkxFLCBFTlRSWSwgREFUQV9TSVpFLCBQREFUQSkgXAorICAgIGRvIHsgXAorICAgICAgICBhc3NlcnQoKERBVEFfU0laRSkgPT0gKFRBQkxFKS0+ZGF0YV9zaXplKTsgXAorICAgICAgICBtZW1jcHkoKHZvaWQgKilfUHlfSEFTSFRBQkxFX0VOVFJZX1BEQVRBKChUQUJMRSksIChFTlRSWSkpLCBcCisgICAgICAgICAgICAgICAgICAoUERBVEEpLCAoREFUQV9TSVpFKSk7IFwKKyAgICB9IHdoaWxlICgwKQogCiAvKiBGb3J3YXJkIGRlY2xhcmF0aW9uICovCiBzdGF0aWMgdm9pZCBoYXNodGFibGVfcmVoYXNoKF9QeV9oYXNodGFibGVfdCAqaHQpOwpAQCAtNzAsNiArODQsNyBAQAogICAgIGxpc3QtPmhlYWQgPSBOVUxMOwogfQogCisKIHN0YXRpYyB2b2lkCiBfUHlfc2xpc3RfcHJlcGVuZChfUHlfc2xpc3RfdCAqbGlzdCwgX1B5X3NsaXN0X2l0ZW1fdCAqaXRlbSkKIHsKQEAgLTc3LDYgKzkyLDcgQEAKICAgICBsaXN0LT5oZWFkID0gaXRlbTsKIH0KIAorCiBzdGF0aWMgdm9pZAogX1B5X3NsaXN0X3JlbW92ZShfUHlfc2xpc3RfdCAqbGlzdCwgX1B5X3NsaXN0X2l0ZW1fdCAqcHJldmlvdXMsCiAgICAgICAgICAgICAgICAgIF9QeV9zbGlzdF9pdGVtX3QgKml0ZW0pCkBAIC04NywyNCArMTAzLDI2IEBACiAgICAgICAgIGxpc3QtPmhlYWQgPSBpdGVtLT5uZXh0OwogfQogCi1QeV91aGFzaF90Ci1fUHlfaGFzaHRhYmxlX2hhc2hfaW50KGNvbnN0IHZvaWQgKmtleSkKLXsKLSAgICByZXR1cm4gKFB5X3VoYXNoX3Qpa2V5OwotfQogCiBQeV91aGFzaF90Ci1fUHlfaGFzaHRhYmxlX2hhc2hfcHRyKGNvbnN0IHZvaWQgKmtleSkKK19QeV9oYXNodGFibGVfaGFzaF9wdHIoc3RydWN0IF9QeV9oYXNodGFibGVfdCAqaHQsIGNvbnN0IHZvaWQgKnBrZXkpCiB7Ci0gICAgcmV0dXJuIChQeV91aGFzaF90KV9QeV9IYXNoUG9pbnRlcigodm9pZCAqKWtleSk7CisgICAgdm9pZCAqa2V5OworCisgICAgX1B5X0hBU0hUQUJMRV9SRUFEX0tFWShodCwgcGtleSwga2V5KTsKKyAgICByZXR1cm4gKFB5X3VoYXNoX3QpX1B5X0hhc2hQb2ludGVyKGtleSk7CiB9CiAKKwogaW50Ci1fUHlfaGFzaHRhYmxlX2NvbXBhcmVfZGlyZWN0KGNvbnN0IHZvaWQgKmtleSwgY29uc3QgX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeSkKK19QeV9oYXNodGFibGVfY29tcGFyZV9kaXJlY3QoX1B5X2hhc2h0YWJsZV90ICpodCwgY29uc3Qgdm9pZCAqcGtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeSkKIHsKLSAgICByZXR1cm4gZW50cnktPmtleSA9PSBrZXk7CisgICAgY29uc3Qgdm9pZCAqcGtleTIgPSBfUHlfSEFTSFRBQkxFX0VOVFJZX1BLRVkoZW50cnkpOworICAgIHJldHVybiAobWVtY21wKHBrZXksIHBrZXkyLCBodC0+a2V5X3NpemUpID09IDApOwogfQogCisKIC8qIG1ha2VzIHN1cmUgdGhlIHJlYWwgc2l6ZSBvZiB0aGUgYnVja2V0cyBhcnJheSBpcyBhIHBvd2VyIG9mIDIgKi8KIHN0YXRpYyBzaXplX3QKIHJvdW5kX3NpemUoc2l6ZV90IHMpCkBAIC0xMTgsMTMgKzEzNiwxMiBAQAogICAgIHJldHVybiBpOwogfQogCisKIF9QeV9oYXNodGFibGVfdCAqCi1fUHlfaGFzaHRhYmxlX25ld19mdWxsKHNpemVfdCBkYXRhX3NpemUsIHNpemVfdCBpbml0X3NpemUsCitfUHlfaGFzaHRhYmxlX25ld19mdWxsKHNpemVfdCBrZXlfc2l6ZSwgc2l6ZV90IGRhdGFfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGluaXRfc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgX1B5X2hhc2h0YWJsZV9oYXNoX2Z1bmMgaGFzaF9mdW5jLAogICAgICAgICAgICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2NvbXBhcmVfZnVuYyBjb21wYXJlX2Z1bmMsCi0gICAgICAgICAgICAgICAgICAgICAgIF9QeV9oYXNodGFibGVfY29weV9kYXRhX2Z1bmMgY29weV9kYXRhX2Z1bmMsCi0gICAgICAgICAgICAgICAgICAgICAgIF9QeV9oYXNodGFibGVfZnJlZV9kYXRhX2Z1bmMgZnJlZV9kYXRhX2Z1bmMsCi0gICAgICAgICAgICAgICAgICAgICAgIF9QeV9oYXNodGFibGVfZ2V0X2RhdGFfc2l6ZV9mdW5jIGdldF9kYXRhX3NpemVfZnVuYywKICAgICAgICAgICAgICAgICAgICAgICAgX1B5X2hhc2h0YWJsZV9hbGxvY2F0b3JfdCAqYWxsb2NhdG9yKQogewogICAgIF9QeV9oYXNodGFibGVfdCAqaHQ7CkBAIC0xNDQsNiArMTYxLDcgQEAKIAogICAgIGh0LT5udW1fYnVja2V0cyA9IHJvdW5kX3NpemUoaW5pdF9zaXplKTsKICAgICBodC0+ZW50cmllcyA9IDA7CisgICAgaHQtPmtleV9zaXplID0ga2V5X3NpemU7CiAgICAgaHQtPmRhdGFfc2l6ZSA9IGRhdGFfc2l6ZTsKIAogICAgIGJ1Y2tldHNfc2l6ZSA9IGh0LT5udW1fYnVja2V0cyAqIHNpemVvZihodC0+YnVja2V0c1swXSk7CkBAIC0xNTYsMjggKzE3NCwyNyBAQAogCiAgICAgaHQtPmhhc2hfZnVuYyA9IGhhc2hfZnVuYzsKICAgICBodC0+Y29tcGFyZV9mdW5jID0gY29tcGFyZV9mdW5jOwotICAgIGh0LT5jb3B5X2RhdGFfZnVuYyA9IGNvcHlfZGF0YV9mdW5jOwotICAgIGh0LT5mcmVlX2RhdGFfZnVuYyA9IGZyZWVfZGF0YV9mdW5jOwotICAgIGh0LT5nZXRfZGF0YV9zaXplX2Z1bmMgPSBnZXRfZGF0YV9zaXplX2Z1bmM7CiAgICAgaHQtPmFsbG9jID0gYWxsb2M7CiAgICAgcmV0dXJuIGh0OwogfQogCisKIF9QeV9oYXNodGFibGVfdCAqCi1fUHlfaGFzaHRhYmxlX25ldyhzaXplX3QgZGF0YV9zaXplLAorX1B5X2hhc2h0YWJsZV9uZXcoc2l6ZV90IGtleV9zaXplLCBzaXplX3QgZGF0YV9zaXplLAogICAgICAgICAgICAgICAgICAgX1B5X2hhc2h0YWJsZV9oYXNoX2Z1bmMgaGFzaF9mdW5jLAogICAgICAgICAgICAgICAgICAgX1B5X2hhc2h0YWJsZV9jb21wYXJlX2Z1bmMgY29tcGFyZV9mdW5jKQogewotICAgIHJldHVybiBfUHlfaGFzaHRhYmxlX25ld19mdWxsKGRhdGFfc2l6ZSwgSEFTSFRBQkxFX01JTl9TSVpFLAorICAgIHJldHVybiBfUHlfaGFzaHRhYmxlX25ld19mdWxsKGtleV9zaXplLCBkYXRhX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFTSFRBQkxFX01JTl9TSVpFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2hfZnVuYywgY29tcGFyZV9mdW5jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwogfQogCisKIHNpemVfdAogX1B5X2hhc2h0YWJsZV9zaXplKF9QeV9oYXNodGFibGVfdCAqaHQpCiB7CiAgICAgc2l6ZV90IHNpemU7Ci0gICAgc2l6ZV90IGh2OwogCiAgICAgc2l6ZSA9IHNpemVvZihfUHlfaGFzaHRhYmxlX3QpOwogCkBAIC0xODcsMjIgKzIwNCwxMCBAQAogICAgIC8qIGVudHJpZXMgKi8KICAgICBzaXplICs9IGh0LT5lbnRyaWVzICogSEFTSFRBQkxFX0lURU1fU0laRShodCk7CiAKLSAgICAvKiBkYXRhIGxpbmtlZCBmcm9tIGVudHJpZXMgKi8KLSAgICBpZiAoaHQtPmdldF9kYXRhX3NpemVfZnVuYykgewotICAgICAgICBmb3IgKGh2ID0gMDsgaHYgPCBodC0+bnVtX2J1Y2tldHM7IGh2KyspIHsKLSAgICAgICAgICAgIF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnk7Ci0KLSAgICAgICAgICAgIGZvciAoZW50cnkgPSBUQUJMRV9IRUFEKGh0LCBodik7IGVudHJ5OyBlbnRyeSA9IEVOVFJZX05FWFQoZW50cnkpKSB7Ci0gICAgICAgICAgICAgICAgdm9pZCAqZGF0YTsKLQotICAgICAgICAgICAgICAgIGRhdGEgPSBfUHlfSEFTSFRBQkxFX0VOVFJZX0RBVEFfQVNfVk9JRF9QKGVudHJ5KTsKLSAgICAgICAgICAgICAgICBzaXplICs9IGh0LT5nZXRfZGF0YV9zaXplX2Z1bmMoZGF0YSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9CiAgICAgcmV0dXJuIHNpemU7CiB9CiAKKwogI2lmZGVmIFB5X0RFQlVHCiB2b2lkCiBfUHlfaGFzaHRhYmxlX3ByaW50X3N0YXRzKF9QeV9oYXNodGFibGVfdCAqaHQpCkBAIC0yNDMsMzggKzI0OCw0NSBAQAogfQogI2VuZGlmCiAKLS8qIEdldCBhbiBlbnRyeS4gUmV0dXJuIE5VTEwgaWYgdGhlIGtleSBkb2VzIG5vdCBleGlzdC4gKi8KKwogX1B5X2hhc2h0YWJsZV9lbnRyeV90ICoKLV9QeV9oYXNodGFibGVfZ2V0X2VudHJ5KF9QeV9oYXNodGFibGVfdCAqaHQsIGNvbnN0IHZvaWQgKmtleSkKK19QeV9oYXNodGFibGVfZ2V0X2VudHJ5KF9QeV9oYXNodGFibGVfdCAqaHQsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qga2V5X3NpemUsIGNvbnN0IHZvaWQgKnBrZXkpCiB7CiAgICAgUHlfdWhhc2hfdCBrZXlfaGFzaDsKICAgICBzaXplX3QgaW5kZXg7CiAgICAgX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeTsKIAotICAgIGtleV9oYXNoID0gaHQtPmhhc2hfZnVuYyhrZXkpOworICAgIGFzc2VydChrZXlfc2l6ZSA9PSBodC0+a2V5X3NpemUpOworCisgICAga2V5X2hhc2ggPSBodC0+aGFzaF9mdW5jKGh0LCBwa2V5KTsKICAgICBpbmRleCA9IGtleV9oYXNoICYgKGh0LT5udW1fYnVja2V0cyAtIDEpOwogCiAgICAgZm9yIChlbnRyeSA9IFRBQkxFX0hFQUQoaHQsIGluZGV4KTsgZW50cnkgIT0gTlVMTDsgZW50cnkgPSBFTlRSWV9ORVhUKGVudHJ5KSkgewotICAgICAgICBpZiAoZW50cnktPmtleV9oYXNoID09IGtleV9oYXNoICYmIGh0LT5jb21wYXJlX2Z1bmMoa2V5LCBlbnRyeSkpCisgICAgICAgIGlmIChlbnRyeS0+a2V5X2hhc2ggPT0ga2V5X2hhc2ggJiYgaHQtPmNvbXBhcmVfZnVuYyhodCwgcGtleSwgZW50cnkpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgcmV0dXJuIGVudHJ5OwogfQogCisKIHN0YXRpYyBpbnQKLV9oYXNodGFibGVfcG9wX2VudHJ5KF9QeV9oYXNodGFibGVfdCAqaHQsIGNvbnN0IHZvaWQgKmtleSwgdm9pZCAqZGF0YSwgc2l6ZV90IGRhdGFfc2l6ZSkKK19QeV9oYXNodGFibGVfcG9wX2VudHJ5KF9QeV9oYXNodGFibGVfdCAqaHQsIHNpemVfdCBrZXlfc2l6ZSwgY29uc3Qgdm9pZCAqcGtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmRhdGEsIHNpemVfdCBkYXRhX3NpemUpCiB7CiAgICAgUHlfdWhhc2hfdCBrZXlfaGFzaDsKICAgICBzaXplX3QgaW5kZXg7CiAgICAgX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeSwgKnByZXZpb3VzOwogCi0gICAga2V5X2hhc2ggPSBodC0+aGFzaF9mdW5jKGtleSk7CisgICAgYXNzZXJ0KGtleV9zaXplID09IGh0LT5rZXlfc2l6ZSk7CisKKyAgICBrZXlfaGFzaCA9IGh0LT5oYXNoX2Z1bmMoaHQsIHBrZXkpOwogICAgIGluZGV4ID0ga2V5X2hhc2ggJiAoaHQtPm51bV9idWNrZXRzIC0gMSk7CiAKICAgICBwcmV2aW91cyA9IE5VTEw7CiAgICAgZm9yIChlbnRyeSA9IFRBQkxFX0hFQUQoaHQsIGluZGV4KTsgZW50cnkgIT0gTlVMTDsgZW50cnkgPSBFTlRSWV9ORVhUKGVudHJ5KSkgewotICAgICAgICBpZiAoZW50cnktPmtleV9oYXNoID09IGtleV9oYXNoICYmIGh0LT5jb21wYXJlX2Z1bmMoa2V5LCBlbnRyeSkpCisgICAgICAgIGlmIChlbnRyeS0+a2V5X2hhc2ggPT0ga2V5X2hhc2ggJiYgaHQtPmNvbXBhcmVfZnVuYyhodCwgcGtleSwgZW50cnkpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIHByZXZpb3VzID0gZW50cnk7CiAgICAgfQpAQCAtMjg3LDcgKzI5OSw3IEBACiAgICAgaHQtPmVudHJpZXMtLTsKIAogICAgIGlmIChkYXRhICE9IE5VTEwpCi0gICAgICAgIF9QeV9IQVNIVEFCTEVfRU5UUllfUkVBRF9EQVRBKGh0LCBkYXRhLCBkYXRhX3NpemUsIGVudHJ5KTsKKyAgICAgICAgRU5UUllfUkVBRF9QREFUQShodCwgZW50cnksIGRhdGFfc2l6ZSwgZGF0YSk7CiAgICAgaHQtPmFsbG9jLmZyZWUoZW50cnkpOwogCiAgICAgaWYgKChmbG9hdClodC0+ZW50cmllcyAvIChmbG9hdClodC0+bnVtX2J1Y2tldHMgPCBIQVNIVEFCTEVfTE9XKQpAQCAtMjk1LDI2ICszMDcsMjcgQEAKICAgICByZXR1cm4gMTsKIH0KIAotLyogQWRkIGEgbmV3IGVudHJ5IHRvIHRoZSBoYXNoLiBUaGUga2V5IG11c3Qgbm90IGJlIHByZXNlbnQgaW4gdGhlIGhhc2ggdGFibGUuCi0gICBSZXR1cm4gMCBvbiBzdWNjZXNzLCAtMSBvbiBtZW1vcnkgZXJyb3IuICovCisKIGludAotX1B5X2hhc2h0YWJsZV9zZXQoX1B5X2hhc2h0YWJsZV90ICpodCwgY29uc3Qgdm9pZCAqa2V5LAotICAgICAgICAgICAgICAgICAgdm9pZCAqZGF0YSwgc2l6ZV90IGRhdGFfc2l6ZSkKK19QeV9oYXNodGFibGVfc2V0KF9QeV9oYXNodGFibGVfdCAqaHQsIHNpemVfdCBrZXlfc2l6ZSwgY29uc3Qgdm9pZCAqcGtleSwKKyAgICAgICAgICAgICAgICAgIHNpemVfdCBkYXRhX3NpemUsIGNvbnN0IHZvaWQgKmRhdGEpCiB7CiAgICAgUHlfdWhhc2hfdCBrZXlfaGFzaDsKICAgICBzaXplX3QgaW5kZXg7CiAgICAgX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeTsKIAorICAgIGFzc2VydChrZXlfc2l6ZSA9PSBodC0+a2V5X3NpemUpOworCiAgICAgYXNzZXJ0KGRhdGEgIT0gTlVMTCB8fCBkYXRhX3NpemUgPT0gMCk7CiAjaWZuZGVmIE5ERUJVRwogICAgIC8qIERvbid0IHdyaXRlIHRoZSBhc3NlcnRpb24gb24gYSBzaW5nbGUgbGluZSBiZWNhdXNlIGl0IGlzIGludGVyZXN0aW5nCiAgICAgICAgdG8ga25vdyB0aGUgZHVwbGljYXRlZCBlbnRyeSBpZiB0aGUgYXNzZXJ0aW9uIGZhaWxlZC4gVGhlIGVudHJ5IGNhbgogICAgICAgIGJlIHJlYWQgdXNpbmcgYSBkZWJ1Z2dlci4gKi8KLSAgICBlbnRyeSA9IF9QeV9oYXNodGFibGVfZ2V0X2VudHJ5KGh0LCBrZXkpOworICAgIGVudHJ5ID0gX1B5X2hhc2h0YWJsZV9nZXRfZW50cnkoaHQsIGtleV9zaXplLCBwa2V5KTsKICAgICBhc3NlcnQoZW50cnkgPT0gTlVMTCk7CiAjZW5kaWYKIAotICAgIGtleV9oYXNoID0gaHQtPmhhc2hfZnVuYyhrZXkpOworICAgIGtleV9oYXNoID0gaHQtPmhhc2hfZnVuYyhodCwgcGtleSk7CiAgICAgaW5kZXggPSBrZXlfaGFzaCAmIChodC0+bnVtX2J1Y2tldHMgLSAxKTsKIAogICAgIGVudHJ5ID0gaHQtPmFsbG9jLm1hbGxvYyhIQVNIVEFCTEVfSVRFTV9TSVpFKGh0KSk7CkBAIC0zMjMsMTIgKzMzNiwxMCBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgZW50cnktPmtleSA9ICh2b2lkICopa2V5OwogICAgIGVudHJ5LT5rZXlfaGFzaCA9IGtleV9oYXNoOwotCi0gICAgYXNzZXJ0KGRhdGFfc2l6ZSA9PSBodC0+ZGF0YV9zaXplKTsKKyAgICBtZW1jcHkoKHZvaWQgKilfUHlfSEFTSFRBQkxFX0VOVFJZX1BLRVkoZW50cnkpLCBwa2V5LCBodC0+a2V5X3NpemUpOwogICAgIGlmIChkYXRhKQotICAgICAgICBtZW1jcHkoX1B5X0hBU0hUQUJMRV9FTlRSWV9EQVRBKGVudHJ5KSwgZGF0YSwgZGF0YV9zaXplKTsKKyAgICAgICAgRU5UUllfV1JJVEVfUERBVEEoaHQsIGVudHJ5LCBkYXRhX3NpemUsIGRhdGEpOwogCiAgICAgX1B5X3NsaXN0X3ByZXBlbmQoJmh0LT5idWNrZXRzW2luZGV4XSwgKF9QeV9zbGlzdF9pdGVtX3QqKWVudHJ5KTsKICAgICBodC0+ZW50cmllcysrOwpAQCAtMzM4LDQ4ICszNDksNTAgQEAKICAgICByZXR1cm4gMDsKIH0KIAotLyogR2V0IGRhdGEgZnJvbSBhbiBlbnRyeS4gQ29weSBlbnRyeSBkYXRhIGludG8gZGF0YSBhbmQgcmV0dXJuIDEgaWYgdGhlIGVudHJ5Ci0gICBleGlzdHMsIHJldHVybiAwIGlmIHRoZSBlbnRyeSBkb2VzIG5vdCBleGlzdC4gKi8KKwogaW50Ci1fUHlfaGFzaHRhYmxlX2dldChfUHlfaGFzaHRhYmxlX3QgKmh0LCBjb25zdCB2b2lkICprZXksIHZvaWQgKmRhdGEsIHNpemVfdCBkYXRhX3NpemUpCitfUHlfaGFzaHRhYmxlX2dldChfUHlfaGFzaHRhYmxlX3QgKmh0LCBzaXplX3Qga2V5X3NpemUsY29uc3Qgdm9pZCAqcGtleSwKKyAgICAgICAgICAgICAgICAgIHNpemVfdCBkYXRhX3NpemUsIHZvaWQgKmRhdGEpCiB7CiAgICAgX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeTsKIAogICAgIGFzc2VydChkYXRhICE9IE5VTEwpOwogCi0gICAgZW50cnkgPSBfUHlfaGFzaHRhYmxlX2dldF9lbnRyeShodCwga2V5KTsKKyAgICBlbnRyeSA9IF9QeV9oYXNodGFibGVfZ2V0X2VudHJ5KGh0LCBrZXlfc2l6ZSwgcGtleSk7CiAgICAgaWYgKGVudHJ5ID09IE5VTEwpCiAgICAgICAgIHJldHVybiAwOwotICAgIF9QeV9IQVNIVEFCTEVfRU5UUllfUkVBRF9EQVRBKGh0LCBkYXRhLCBkYXRhX3NpemUsIGVudHJ5KTsKKyAgICBFTlRSWV9SRUFEX1BEQVRBKGh0LCBlbnRyeSwgZGF0YV9zaXplLCBkYXRhKTsKICAgICByZXR1cm4gMTsKIH0KIAorCiBpbnQKLV9QeV9oYXNodGFibGVfcG9wKF9QeV9oYXNodGFibGVfdCAqaHQsIGNvbnN0IHZvaWQgKmtleSwgdm9pZCAqZGF0YSwgc2l6ZV90IGRhdGFfc2l6ZSkKK19QeV9oYXNodGFibGVfcG9wKF9QeV9oYXNodGFibGVfdCAqaHQsIHNpemVfdCBrZXlfc2l6ZSwgY29uc3Qgdm9pZCAqcGtleSwKKyAgICAgICAgICAgICAgICAgIHNpemVfdCBkYXRhX3NpemUsIHZvaWQgKmRhdGEpCiB7CiAgICAgYXNzZXJ0KGRhdGEgIT0gTlVMTCk7Ci0gICAgYXNzZXJ0KGh0LT5mcmVlX2RhdGFfZnVuYyA9PSBOVUxMKTsKLSAgICByZXR1cm4gX2hhc2h0YWJsZV9wb3BfZW50cnkoaHQsIGtleSwgZGF0YSwgZGF0YV9zaXplKTsKKyAgICByZXR1cm4gX1B5X2hhc2h0YWJsZV9wb3BfZW50cnkoaHQsIGtleV9zaXplLCBwa2V5LCBkYXRhLCBkYXRhX3NpemUpOwogfQogCi0vKiBEZWxldGUgYW4gZW50cnkuIFRoZSBlbnRyeSBtdXN0IGV4aXN0LiAqLworCisvKiBDb2RlIGNvbW1lbnRlZCBzaW5jZSB0aGUgZnVuY3Rpb24gaXMgbm90IG5lZWRlZCBpbiBQeXRob24gKi8KKyNpZiAwCiB2b2lkCi1fUHlfaGFzaHRhYmxlX2RlbGV0ZShfUHlfaGFzaHRhYmxlX3QgKmh0LCBjb25zdCB2b2lkICprZXkpCitfUHlfaGFzaHRhYmxlX2RlbGV0ZShfUHlfaGFzaHRhYmxlX3QgKmh0LCBzaXplX3Qga2V5X3NpemUsIGNvbnN0IHZvaWQgKnBrZXkpCiB7CiAjaWZuZGVmIE5ERUJVRwotICAgIGludCBmb3VuZCA9IF9oYXNodGFibGVfcG9wX2VudHJ5KGh0LCBrZXksIE5VTEwsIDApOworICAgIGludCBmb3VuZCA9IF9QeV9oYXNodGFibGVfcG9wX2VudHJ5KGh0LCBrZXlfc2l6ZSwgcGtleSwgTlVMTCwgMCk7CiAgICAgYXNzZXJ0KGZvdW5kKTsKICNlbHNlCi0gICAgKHZvaWQpX2hhc2h0YWJsZV9wb3BfZW50cnkoaHQsIGtleSwgTlVMTCwgMCk7CisgICAgKHZvaWQpX1B5X2hhc2h0YWJsZV9wb3BfZW50cnkoaHQsIGtleV9zaXplLCBwa2V5LCBOVUxMLCAwKTsKICNlbmRpZgogfQorI2VuZGlmCiAKLS8qIFByb3RvdHlwZSBmb3IgYSBwb2ludGVyIHRvIGEgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGZvcmVhY2gKLSAgIGtleS92YWx1ZSBwYWlyIGluIHRoZSBoYXNoIGJ5IGhhc2h0YWJsZV9mb3JlYWNoKCkuICBJdGVyYXRpb24KLSAgIHN0b3BzIGlmIGEgbm9uLXplcm8gdmFsdWUgaXMgcmV0dXJuZWQuICovCisKIGludAogX1B5X2hhc2h0YWJsZV9mb3JlYWNoKF9QeV9oYXNodGFibGVfdCAqaHQsCi0gICAgICAgICAgICAgICAgICAgICAgaW50ICgqZnVuYykgKF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnksIHZvaWQgKmFyZyksCisgICAgICAgICAgICAgICAgICAgICAgX1B5X2hhc2h0YWJsZV9mb3JlYWNoX2Z1bmMgZnVuYywKICAgICAgICAgICAgICAgICAgICAgICB2b2lkICphcmcpCiB7CiAgICAgX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeTsKQEAgLTM4Nyw3ICs0MDAsNyBAQAogCiAgICAgZm9yIChodiA9IDA7IGh2IDwgaHQtPm51bV9idWNrZXRzOyBodisrKSB7CiAgICAgICAgIGZvciAoZW50cnkgPSBUQUJMRV9IRUFEKGh0LCBodik7IGVudHJ5OyBlbnRyeSA9IEVOVFJZX05FWFQoZW50cnkpKSB7Ci0gICAgICAgICAgICBpbnQgcmVzID0gZnVuYyhlbnRyeSwgYXJnKTsKKyAgICAgICAgICAgIGludCByZXMgPSBmdW5jKGh0LCBlbnRyeSwgYXJnKTsKICAgICAgICAgICAgIGlmIChyZXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlczsKICAgICAgICAgfQpAQCAtMzk1LDYgKzQwOCw3IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKKwogc3RhdGljIHZvaWQKIGhhc2h0YWJsZV9yZWhhc2goX1B5X2hhc2h0YWJsZV90ICpodCkKIHsKQEAgLTQyNiw3ICs0NDAsOCBAQAogICAgICAgICBmb3IgKGVudHJ5ID0gQlVDS0VUU19IRUFEKG9sZF9idWNrZXRzW2J1Y2tldF0pOyBlbnRyeSAhPSBOVUxMOyBlbnRyeSA9IG5leHQpIHsKICAgICAgICAgICAgIHNpemVfdCBlbnRyeV9pbmRleDsKIAotICAgICAgICAgICAgYXNzZXJ0KGh0LT5oYXNoX2Z1bmMoZW50cnktPmtleSkgPT0gZW50cnktPmtleV9oYXNoKTsKKworICAgICAgICAgICAgYXNzZXJ0KGh0LT5oYXNoX2Z1bmMoaHQsIF9QeV9IQVNIVEFCTEVfRU5UUllfUEtFWShlbnRyeSkpID09IGVudHJ5LT5rZXlfaGFzaCk7CiAgICAgICAgICAgICBuZXh0ID0gRU5UUllfTkVYVChlbnRyeSk7CiAgICAgICAgICAgICBlbnRyeV9pbmRleCA9IGVudHJ5LT5rZXlfaGFzaCAmIChuZXdfc2l6ZSAtIDEpOwogCkBAIC00MzcsNiArNDUyLDcgQEAKICAgICBodC0+YWxsb2MuZnJlZShvbGRfYnVja2V0cyk7CiB9CiAKKwogdm9pZAogX1B5X2hhc2h0YWJsZV9jbGVhcihfUHlfaGFzaHRhYmxlX3QgKmh0KQogewpAQCAtNDQ2LDggKzQ2Miw2IEBACiAgICAgZm9yIChpPTA7IGkgPCBodC0+bnVtX2J1Y2tldHM7IGkrKykgewogICAgICAgICBmb3IgKGVudHJ5ID0gVEFCTEVfSEVBRChodCwgaSk7IGVudHJ5ICE9IE5VTEw7IGVudHJ5ID0gbmV4dCkgewogICAgICAgICAgICAgbmV4dCA9IEVOVFJZX05FWFQoZW50cnkpOwotICAgICAgICAgICAgaWYgKGh0LT5mcmVlX2RhdGFfZnVuYykKLSAgICAgICAgICAgICAgICBodC0+ZnJlZV9kYXRhX2Z1bmMoX1B5X0hBU0hUQUJMRV9FTlRSWV9EQVRBX0FTX1ZPSURfUChlbnRyeSkpOwogICAgICAgICAgICAgaHQtPmFsbG9jLmZyZWUoZW50cnkpOwogICAgICAgICB9CiAgICAgICAgIF9QeV9zbGlzdF9pbml0KCZodC0+YnVja2V0c1tpXSk7CkBAIC00NTYsNiArNDcwLDcgQEAKICAgICBoYXNodGFibGVfcmVoYXNoKGh0KTsKIH0KIAorCiB2b2lkCiBfUHlfaGFzaHRhYmxlX2Rlc3Ryb3koX1B5X2hhc2h0YWJsZV90ICpodCkKIHsKQEAgLTQ2NSw4ICs0ODAsNiBAQAogICAgICAgICBfUHlfc2xpc3RfaXRlbV90ICplbnRyeSA9IGh0LT5idWNrZXRzW2ldLmhlYWQ7CiAgICAgICAgIHdoaWxlIChlbnRyeSkgewogICAgICAgICAgICAgX1B5X3NsaXN0X2l0ZW1fdCAqZW50cnlfbmV4dCA9IGVudHJ5LT5uZXh0OwotICAgICAgICAgICAgaWYgKGh0LT5mcmVlX2RhdGFfZnVuYykKLSAgICAgICAgICAgICAgICBodC0+ZnJlZV9kYXRhX2Z1bmMoX1B5X0hBU0hUQUJMRV9FTlRSWV9EQVRBX0FTX1ZPSURfUChlbnRyeSkpOwogICAgICAgICAgICAgaHQtPmFsbG9jLmZyZWUoZW50cnkpOwogICAgICAgICAgICAgZW50cnkgPSBlbnRyeV9uZXh0OwogICAgICAgICB9CkBAIC00NzYsMzkgKzQ4OSwzMSBAQAogICAgIGh0LT5hbGxvYy5mcmVlKGh0KTsKIH0KIAotLyogUmV0dXJuIGEgY29weSBvZiB0aGUgaGFzaCB0YWJsZSAqLworCiBfUHlfaGFzaHRhYmxlX3QgKgogX1B5X2hhc2h0YWJsZV9jb3B5KF9QeV9oYXNodGFibGVfdCAqc3JjKQogeworICAgIGNvbnN0IHNpemVfdCBrZXlfc2l6ZSA9IHNyYy0+a2V5X3NpemU7CisgICAgY29uc3Qgc2l6ZV90IGRhdGFfc2l6ZSA9IHNyYy0+ZGF0YV9zaXplOwogICAgIF9QeV9oYXNodGFibGVfdCAqZHN0OwogICAgIF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnk7CiAgICAgc2l6ZV90IGJ1Y2tldDsKICAgICBpbnQgZXJyOwotICAgIHZvaWQgKmRhdGEsICpuZXdfZGF0YTsKIAotICAgIGRzdCA9IF9QeV9oYXNodGFibGVfbmV3X2Z1bGwoc3JjLT5kYXRhX3NpemUsIHNyYy0+bnVtX2J1Y2tldHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjLT5oYXNoX2Z1bmMsIHNyYy0+Y29tcGFyZV9mdW5jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYy0+Y29weV9kYXRhX2Z1bmMsIHNyYy0+ZnJlZV9kYXRhX2Z1bmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjLT5nZXRfZGF0YV9zaXplX2Z1bmMsICZzcmMtPmFsbG9jKTsKKyAgICBkc3QgPSBfUHlfaGFzaHRhYmxlX25ld19mdWxsKGtleV9zaXplLCBkYXRhX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMtPm51bV9idWNrZXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjLT5oYXNoX2Z1bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMtPmNvbXBhcmVfZnVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzcmMtPmFsbG9jKTsKICAgICBpZiAoZHN0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgZm9yIChidWNrZXQ9MDsgYnVja2V0IDwgc3JjLT5udW1fYnVja2V0czsgYnVja2V0KyspIHsKICAgICAgICAgZW50cnkgPSBUQUJMRV9IRUFEKHNyYywgYnVja2V0KTsKICAgICAgICAgZm9yICg7IGVudHJ5OyBlbnRyeSA9IEVOVFJZX05FWFQoZW50cnkpKSB7Ci0gICAgICAgICAgICBpZiAoc3JjLT5jb3B5X2RhdGFfZnVuYykgewotICAgICAgICAgICAgICAgIGRhdGEgPSBfUHlfSEFTSFRBQkxFX0VOVFJZX0RBVEFfQVNfVk9JRF9QKGVudHJ5KTsKLSAgICAgICAgICAgICAgICBuZXdfZGF0YSA9IHNyYy0+Y29weV9kYXRhX2Z1bmMoZGF0YSk7Ci0gICAgICAgICAgICAgICAgaWYgKG5ld19kYXRhICE9IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgIGVyciA9IF9QeV9oYXNodGFibGVfc2V0KGRzdCwgZW50cnktPmtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmV3X2RhdGEsIHNyYy0+ZGF0YV9zaXplKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGVyciA9IDE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBkYXRhID0gX1B5X0hBU0hUQUJMRV9FTlRSWV9EQVRBKGVudHJ5KTsKLSAgICAgICAgICAgICAgICBlcnIgPSBfUHlfaGFzaHRhYmxlX3NldChkc3QsIGVudHJ5LT5rZXksIGRhdGEsIHNyYy0+ZGF0YV9zaXplKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBrZXkgPSBfUHlfSEFTSFRBQkxFX0VOVFJZX1BLRVkoZW50cnkpOworICAgICAgICAgICAgY29uc3Qgdm9pZCAqcGRhdGEgPSBfUHlfSEFTSFRBQkxFX0VOVFJZX1BEQVRBKHNyYywgZW50cnkpOworICAgICAgICAgICAgZXJyID0gX1B5X2hhc2h0YWJsZV9zZXQoZHN0LCBrZXlfc2l6ZSwgcGtleSwgZGF0YV9zaXplLCBwZGF0YSk7CiAgICAgICAgICAgICBpZiAoZXJyKSB7CiAgICAgICAgICAgICAgICAgX1B5X2hhc2h0YWJsZV9kZXN0cm95KGRzdCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC01MTcsNCArNTIyLDMgQEAKICAgICB9CiAgICAgcmV0dXJuIGRzdDsKIH0KLQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9oYXNodGFibGUuaCBiL01vZHVsZXMvaGFzaHRhYmxlLmgKaW5kZXggYTlmOTk5My4uZGJlYzIzZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9oYXNodGFibGUuaAorKysgYi9Nb2R1bGVzL2hhc2h0YWJsZS5oCkBAIC0xLDkgKzEsMTAgQEAKICNpZm5kZWYgUHlfSEFTSFRBQkxFX0gKICNkZWZpbmUgUHlfSEFTSFRBQkxFX0gKLQogLyogVGhlIHdob2xlIEFQSSBpcyBwcml2YXRlICovCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAKKy8qIFNpbmdsZSBsaW5rZWQgbGlzdCAqLworCiB0eXBlZGVmIHN0cnVjdCBfUHlfc2xpc3RfaXRlbV9zIHsKICAgICBzdHJ1Y3QgX1B5X3NsaXN0X2l0ZW1fcyAqbmV4dDsKIH0gX1B5X3NsaXN0X2l0ZW1fdDsKQEAgLTE2LDMzICsxNyw2NiBAQAogCiAjZGVmaW5lIF9QeV9TTElTVF9IRUFEKFNMSVNUKSAoKChfUHlfc2xpc3RfdCAqKVNMSVNUKS0+aGVhZCkKIAorCisvKiBfUHlfaGFzaHRhYmxlOiB0YWJsZSBlbnRyeSAqLworCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgLyogdXNlZCBieSBfUHlfaGFzaHRhYmxlX3QuYnVja2V0cyB0byBsaW5rIGVudHJpZXMgKi8KICAgICBfUHlfc2xpc3RfaXRlbV90IF9QeV9zbGlzdF9pdGVtOwogCi0gICAgY29uc3Qgdm9pZCAqa2V5OwogICAgIFB5X3VoYXNoX3Qga2V5X2hhc2g7CiAKLSAgICAvKiBkYXRhIGZvbGxvd3MgKi8KKyAgICAvKiBrZXkgKGtleV9zaXplIGJ5dGVzKSBhbmQgdGhlbiBkYXRhIChkYXRhX3NpemUgYnl0ZXMpIGZvbGxvd3MgKi8KIH0gX1B5X2hhc2h0YWJsZV9lbnRyeV90OwogCi0jZGVmaW5lIF9QeV9IQVNIVEFCTEVfRU5UUllfREFUQShFTlRSWSkgXAotICAgICAgICAoKGNoYXIgKikoRU5UUlkpICsgc2l6ZW9mKF9QeV9oYXNodGFibGVfZW50cnlfdCkpCisjZGVmaW5lIF9QeV9IQVNIVEFCTEVfRU5UUllfUEtFWShFTlRSWSkgXAorICAgICAgICAoKGNvbnN0IHZvaWQgKikoKGNoYXIgKikoRU5UUlkpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICsgc2l6ZW9mKF9QeV9oYXNodGFibGVfZW50cnlfdCkpKQogCi0jZGVmaW5lIF9QeV9IQVNIVEFCTEVfRU5UUllfREFUQV9BU19WT0lEX1AoRU5UUlkpIFwKLSAgICAgICAgKCoodm9pZCAqKilfUHlfSEFTSFRBQkxFX0VOVFJZX0RBVEEoRU5UUlkpKQorI2RlZmluZSBfUHlfSEFTSFRBQkxFX0VOVFJZX1BEQVRBKFRBQkxFLCBFTlRSWSkgXAorICAgICAgICAoKGNvbnN0IHZvaWQgKikoKGNoYXIgKikoRU5UUlkpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICsgc2l6ZW9mKF9QeV9oYXNodGFibGVfZW50cnlfdCkgXAorICAgICAgICAgICAgICAgICAgICAgICAgKyAoVEFCTEUpLT5rZXlfc2l6ZSkpCiAKLSNkZWZpbmUgX1B5X0hBU0hUQUJMRV9FTlRSWV9SRUFEX0RBVEEoVEFCTEUsIERBVEEsIERBVEFfU0laRSwgRU5UUlkpIFwKKy8qIEdldCBhIGtleSB2YWx1ZSBmcm9tIHBrZXk6IHVzZSBtZW1jcHkoKSByYXRoZXIgdGhhbiBhIHBvaW50ZXIgZGVyZWZlcmVuY2UKKyAgIHRvIGF2b2lkIG1lbW9yeSBhbGlnbm1lbnQgaXNzdWVzLiAqLworI2RlZmluZSBfUHlfSEFTSFRBQkxFX1JFQURfS0VZKFRBQkxFLCBQS0VZLCBEU1RfS0VZKSBcCiAgICAgZG8geyBcCi0gICAgICAgIGFzc2VydCgoREFUQV9TSVpFKSA9PSAoVEFCTEUpLT5kYXRhX3NpemUpOyBcCi0gICAgICAgIG1lbWNweShEQVRBLCBfUHlfSEFTSFRBQkxFX0VOVFJZX0RBVEEoRU5UUlkpLCBEQVRBX1NJWkUpOyBcCisgICAgICAgIGFzc2VydChzaXplb2YoRFNUX0tFWSkgPT0gKFRBQkxFKS0+a2V5X3NpemUpOyBcCisgICAgICAgIG1lbWNweSgmKERTVF9LRVkpLCAoUEtFWSksIHNpemVvZihEU1RfS0VZKSk7IFwKICAgICB9IHdoaWxlICgwKQogCi10eXBlZGVmIFB5X3VoYXNoX3QgKCpfUHlfaGFzaHRhYmxlX2hhc2hfZnVuYykgKGNvbnN0IHZvaWQgKmtleSk7Ci10eXBlZGVmIGludCAoKl9QeV9oYXNodGFibGVfY29tcGFyZV9mdW5jKSAoY29uc3Qgdm9pZCAqa2V5LCBjb25zdCBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmhlKTsKLXR5cGVkZWYgdm9pZCogKCpfUHlfaGFzaHRhYmxlX2NvcHlfZGF0YV9mdW5jKSh2b2lkICpkYXRhKTsKLXR5cGVkZWYgdm9pZCAoKl9QeV9oYXNodGFibGVfZnJlZV9kYXRhX2Z1bmMpKHZvaWQgKmRhdGEpOwotdHlwZWRlZiBzaXplX3QgKCpfUHlfaGFzaHRhYmxlX2dldF9kYXRhX3NpemVfZnVuYykodm9pZCAqZGF0YSk7CisjZGVmaW5lIF9QeV9IQVNIVEFCTEVfRU5UUllfUkVBRF9LRVkoVEFCTEUsIEVOVFJZLCBLRVkpIFwKKyAgICBkbyB7IFwKKyAgICAgICAgYXNzZXJ0KHNpemVvZihLRVkpID09IChUQUJMRSktPmtleV9zaXplKTsgXAorICAgICAgICBtZW1jcHkoJihLRVkpLCBfUHlfSEFTSFRBQkxFX0VOVFJZX1BLRVkoRU5UUlkpLCBzaXplb2YoS0VZKSk7IFwKKyAgICB9IHdoaWxlICgwKQorCisjZGVmaW5lIF9QeV9IQVNIVEFCTEVfRU5UUllfUkVBRF9EQVRBKFRBQkxFLCBFTlRSWSwgREFUQSkgXAorICAgIGRvIHsgXAorICAgICAgICBhc3NlcnQoc2l6ZW9mKERBVEEpID09IChUQUJMRSktPmRhdGFfc2l6ZSk7IFwKKyAgICAgICAgbWVtY3B5KCYoREFUQSksIF9QeV9IQVNIVEFCTEVfRU5UUllfUERBVEEoVEFCTEUsIChFTlRSWSkpLCBcCisgICAgICAgICAgICAgICAgICBzaXplb2YoREFUQSkpOyBcCisgICAgfSB3aGlsZSAoMCkKKworI2RlZmluZSBfUHlfSEFTSFRBQkxFX0VOVFJZX1dSSVRFX0RBVEEoVEFCTEUsIEVOVFJZLCBEQVRBKSBcCisgICAgZG8geyBcCisgICAgICAgIGFzc2VydChzaXplb2YoREFUQSkgPT0gKFRBQkxFKS0+ZGF0YV9zaXplKTsgXAorICAgICAgICBtZW1jcHkoKHZvaWQgKilfUHlfSEFTSFRBQkxFX0VOVFJZX1BEQVRBKChUQUJMRSksIChFTlRSWSkpLCBcCisgICAgICAgICAgICAgICAgICAmKERBVEEpLCBzaXplb2YoREFUQSkpOyBcCisgICAgfSB3aGlsZSAoMCkKKworCisvKiBfUHlfaGFzaHRhYmxlOiBwcm90b3R5cGVzICovCisKKy8qIEZvcndhcmQgZGVjbGFyYXRpb24gKi8KK3N0cnVjdCBfUHlfaGFzaHRhYmxlX3Q7CisKK3R5cGVkZWYgUHlfdWhhc2hfdCAoKl9QeV9oYXNodGFibGVfaGFzaF9mdW5jKSAoc3RydWN0IF9QeV9oYXNodGFibGVfdCAqaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBrZXkpOwordHlwZWRlZiBpbnQgKCpfUHlfaGFzaHRhYmxlX2NvbXBhcmVfZnVuYykgKHN0cnVjdCBfUHlfaGFzaHRhYmxlX3QgKmh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBrZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgX1B5X2hhc2h0YWJsZV9lbnRyeV90ICpoZSk7CiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICAvKiBhbGxvY2F0ZSBhIG1lbW9yeSBibG9jayAqLwpAQCAtNTIsNzcgKzg2LDEyNiBAQAogICAgIHZvaWQgKCpmcmVlKSAodm9pZCAqcHRyKTsKIH0gX1B5X2hhc2h0YWJsZV9hbGxvY2F0b3JfdDsKIAotdHlwZWRlZiBzdHJ1Y3QgeworCisvKiBfUHlfaGFzaHRhYmxlOiB0YWJsZSAqLworCit0eXBlZGVmIHN0cnVjdCBfUHlfaGFzaHRhYmxlX3QgewogICAgIHNpemVfdCBudW1fYnVja2V0czsKICAgICBzaXplX3QgZW50cmllczsgLyogVG90YWwgbnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIHRhYmxlLiAqLwogICAgIF9QeV9zbGlzdF90ICpidWNrZXRzOworICAgIHNpemVfdCBrZXlfc2l6ZTsKICAgICBzaXplX3QgZGF0YV9zaXplOwogCiAgICAgX1B5X2hhc2h0YWJsZV9oYXNoX2Z1bmMgaGFzaF9mdW5jOwogICAgIF9QeV9oYXNodGFibGVfY29tcGFyZV9mdW5jIGNvbXBhcmVfZnVuYzsKLSAgICBfUHlfaGFzaHRhYmxlX2NvcHlfZGF0YV9mdW5jIGNvcHlfZGF0YV9mdW5jOwotICAgIF9QeV9oYXNodGFibGVfZnJlZV9kYXRhX2Z1bmMgZnJlZV9kYXRhX2Z1bmM7Ci0gICAgX1B5X2hhc2h0YWJsZV9nZXRfZGF0YV9zaXplX2Z1bmMgZ2V0X2RhdGFfc2l6ZV9mdW5jOwogICAgIF9QeV9oYXNodGFibGVfYWxsb2NhdG9yX3QgYWxsb2M7CiB9IF9QeV9oYXNodGFibGVfdDsKIAotLyogaGFzaCBhbmQgY29tcGFyZSBmdW5jdGlvbnMgZm9yIGludGVnZXJzIGFuZCBwb2ludGVycyAqLwotUHlBUElfRlVOQyhQeV91aGFzaF90KSBfUHlfaGFzaHRhYmxlX2hhc2hfcHRyKGNvbnN0IHZvaWQgKmtleSk7Ci1QeUFQSV9GVU5DKFB5X3VoYXNoX3QpIF9QeV9oYXNodGFibGVfaGFzaF9pbnQoY29uc3Qgdm9pZCAqa2V5KTsKLVB5QVBJX0ZVTkMoaW50KSBfUHlfaGFzaHRhYmxlX2NvbXBhcmVfZGlyZWN0KGNvbnN0IHZvaWQgKmtleSwgY29uc3QgX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeSk7CisvKiBoYXNoIGEgcG9pbnRlciAodm9pZCopICovCitQeUFQSV9GVU5DKFB5X3VoYXNoX3QpIF9QeV9oYXNodGFibGVfaGFzaF9wdHIoCisgICAgc3RydWN0IF9QeV9oYXNodGFibGVfdCAqaHQsCisgICAgY29uc3Qgdm9pZCAqcGtleSk7CisKKy8qIGNvbXBhcmlzb24gdXNpbmcgbWVtY21wKCkgKi8KK1B5QVBJX0ZVTkMoaW50KSBfUHlfaGFzaHRhYmxlX2NvbXBhcmVfZGlyZWN0KAorICAgIF9QeV9oYXNodGFibGVfdCAqaHQsCisgICAgY29uc3Qgdm9pZCAqcGtleSwKKyAgICBjb25zdCBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5KTsKIAogUHlBUElfRlVOQyhfUHlfaGFzaHRhYmxlX3QgKikgX1B5X2hhc2h0YWJsZV9uZXcoCisgICAgc2l6ZV90IGtleV9zaXplLAogICAgIHNpemVfdCBkYXRhX3NpemUsCiAgICAgX1B5X2hhc2h0YWJsZV9oYXNoX2Z1bmMgaGFzaF9mdW5jLAogICAgIF9QeV9oYXNodGFibGVfY29tcGFyZV9mdW5jIGNvbXBhcmVfZnVuYyk7CisKIFB5QVBJX0ZVTkMoX1B5X2hhc2h0YWJsZV90ICopIF9QeV9oYXNodGFibGVfbmV3X2Z1bGwoCisgICAgc2l6ZV90IGtleV9zaXplLAogICAgIHNpemVfdCBkYXRhX3NpemUsCiAgICAgc2l6ZV90IGluaXRfc2l6ZSwKICAgICBfUHlfaGFzaHRhYmxlX2hhc2hfZnVuYyBoYXNoX2Z1bmMsCiAgICAgX1B5X2hhc2h0YWJsZV9jb21wYXJlX2Z1bmMgY29tcGFyZV9mdW5jLAotICAgIF9QeV9oYXNodGFibGVfY29weV9kYXRhX2Z1bmMgY29weV9kYXRhX2Z1bmMsCi0gICAgX1B5X2hhc2h0YWJsZV9mcmVlX2RhdGFfZnVuYyBmcmVlX2RhdGFfZnVuYywKLSAgICBfUHlfaGFzaHRhYmxlX2dldF9kYXRhX3NpemVfZnVuYyBnZXRfZGF0YV9zaXplX2Z1bmMsCiAgICAgX1B5X2hhc2h0YWJsZV9hbGxvY2F0b3JfdCAqYWxsb2NhdG9yKTsKLVB5QVBJX0ZVTkMoX1B5X2hhc2h0YWJsZV90ICopIF9QeV9oYXNodGFibGVfY29weShfUHlfaGFzaHRhYmxlX3QgKnNyYyk7Ci1QeUFQSV9GVU5DKHZvaWQpIF9QeV9oYXNodGFibGVfY2xlYXIoX1B5X2hhc2h0YWJsZV90ICpodCk7CisKIFB5QVBJX0ZVTkModm9pZCkgX1B5X2hhc2h0YWJsZV9kZXN0cm95KF9QeV9oYXNodGFibGVfdCAqaHQpOwogCi10eXBlZGVmIGludCAoKl9QeV9oYXNodGFibGVfZm9yZWFjaF9mdW5jKSAoX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeSwgdm9pZCAqYXJnKTsKKy8qIFJldHVybiBhIGNvcHkgb2YgdGhlIGhhc2ggdGFibGUgKi8KK1B5QVBJX0ZVTkMoX1B5X2hhc2h0YWJsZV90ICopIF9QeV9oYXNodGFibGVfY29weShfUHlfaGFzaHRhYmxlX3QgKnNyYyk7CiAKK1B5QVBJX0ZVTkModm9pZCkgX1B5X2hhc2h0YWJsZV9jbGVhcihfUHlfaGFzaHRhYmxlX3QgKmh0KTsKKwordHlwZWRlZiBpbnQgKCpfUHlfaGFzaHRhYmxlX2ZvcmVhY2hfZnVuYykgKF9QeV9oYXNodGFibGVfdCAqaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICphcmcpOworCisvKiBDYWxsIGZ1bmMoKSBvbiBlYWNoIGVudHJ5IG9mIHRoZSBoYXNodGFibGUuCisgICBJdGVyYXRpb24gc3RvcHMgaWYgZnVuYygpIHJlc3VsdCBpcyBub24temVybywgaW4gdGhpcyBjYXNlIGl0J3MgdGhlIHJlc3VsdAorICAgb2YgdGhlIGNhbGwuIE90aGVyd2lzZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgMC4gKi8KIFB5QVBJX0ZVTkMoaW50KSBfUHlfaGFzaHRhYmxlX2ZvcmVhY2goCiAgICAgX1B5X2hhc2h0YWJsZV90ICpodCwKLSAgICBfUHlfaGFzaHRhYmxlX2ZvcmVhY2hfZnVuYyBmdW5jLCB2b2lkICphcmcpOworICAgIF9QeV9oYXNodGFibGVfZm9yZWFjaF9mdW5jIGZ1bmMsCisgICAgdm9pZCAqYXJnKTsKKwogUHlBUElfRlVOQyhzaXplX3QpIF9QeV9oYXNodGFibGVfc2l6ZShfUHlfaGFzaHRhYmxlX3QgKmh0KTsKIAotUHlBUElfRlVOQyhfUHlfaGFzaHRhYmxlX2VudHJ5X3QqKSBfUHlfaGFzaHRhYmxlX2dldF9lbnRyeSgKLSAgICBfUHlfaGFzaHRhYmxlX3QgKmh0LAotICAgIGNvbnN0IHZvaWQgKmtleSk7CisvKiBBZGQgYSBuZXcgZW50cnkgdG8gdGhlIGhhc2guIFRoZSBrZXkgbXVzdCBub3QgYmUgcHJlc2VudCBpbiB0aGUgaGFzaCB0YWJsZS4KKyAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIC0xIG9uIG1lbW9yeSBlcnJvci4KKworICAgRG9uJ3QgY2FsbCBkaXJlY3RseSB0aGlzIGZ1bmN0aW9uLAorICAgYnV0IHVzZSBfUHlfSEFTSFRBQkxFX1NFVCgpIGFuZCBfUHlfSEFTSFRBQkxFX1NFVF9OT0RBVEEoKSBtYWNyb3MgKi8KIFB5QVBJX0ZVTkMoaW50KSBfUHlfaGFzaHRhYmxlX3NldCgKICAgICBfUHlfaGFzaHRhYmxlX3QgKmh0LAotICAgIGNvbnN0IHZvaWQgKmtleSwKLSAgICB2b2lkICpkYXRhLAotICAgIHNpemVfdCBkYXRhX3NpemUpOwotUHlBUElfRlVOQyhpbnQpIF9QeV9oYXNodGFibGVfZ2V0KAotICAgIF9QeV9oYXNodGFibGVfdCAqaHQsCi0gICAgY29uc3Qgdm9pZCAqa2V5LAotICAgIHZvaWQgKmRhdGEsCi0gICAgc2l6ZV90IGRhdGFfc2l6ZSk7Ci1QeUFQSV9GVU5DKGludCkgX1B5X2hhc2h0YWJsZV9wb3AoCi0gICAgX1B5X2hhc2h0YWJsZV90ICpodCwKLSAgICBjb25zdCB2b2lkICprZXksCi0gICAgdm9pZCAqZGF0YSwKLSAgICBzaXplX3QgZGF0YV9zaXplKTsKLVB5QVBJX0ZVTkModm9pZCkgX1B5X2hhc2h0YWJsZV9kZWxldGUoCi0gICAgX1B5X2hhc2h0YWJsZV90ICpodCwKLSAgICBjb25zdCB2b2lkICprZXkpOworICAgIHNpemVfdCBrZXlfc2l6ZSwKKyAgICBjb25zdCB2b2lkICpwa2V5LAorICAgIHNpemVfdCBkYXRhX3NpemUsCisgICAgY29uc3Qgdm9pZCAqZGF0YSk7CiAKICNkZWZpbmUgX1B5X0hBU0hUQUJMRV9TRVQoVEFCTEUsIEtFWSwgREFUQSkgXAotICAgIF9QeV9oYXNodGFibGVfc2V0KFRBQkxFLCBLRVksICYoREFUQSksIHNpemVvZihEQVRBKSkKKyAgICBfUHlfaGFzaHRhYmxlX3NldChUQUJMRSwgc2l6ZW9mKEtFWSksICYoS0VZKSwgc2l6ZW9mKERBVEEpLCAmKERBVEEpKQorCisjZGVmaW5lIF9QeV9IQVNIVEFCTEVfU0VUX05PREFUQShUQUJMRSwgS0VZKSBcCisgICAgX1B5X2hhc2h0YWJsZV9zZXQoVEFCTEUsIHNpemVvZihLRVkpLCAmKEtFWSksIDAsIE5VTEwpCisKKworLyogR2V0IGFuIGVudHJ5LgorICAgUmV0dXJuIE5VTEwgaWYgdGhlIGtleSBkb2VzIG5vdCBleGlzdC4KKworICAgRG9uJ3QgY2FsbCBkaXJlY3RseSB0aGlzIGZ1bmN0aW9uLCBidXQgdXNlIF9QeV9IQVNIVEFCTEVfR0VUX0VOVFJZKCkKKyAgIG1hY3JvICovCitQeUFQSV9GVU5DKF9QeV9oYXNodGFibGVfZW50cnlfdCopIF9QeV9oYXNodGFibGVfZ2V0X2VudHJ5KAorICAgIF9QeV9oYXNodGFibGVfdCAqaHQsCisgICAgc2l6ZV90IGtleV9zaXplLAorICAgIGNvbnN0IHZvaWQgKnBrZXkpOworCisjZGVmaW5lIF9QeV9IQVNIVEFCTEVfR0VUX0VOVFJZKFRBQkxFLCBLRVkpIFwKKyAgICBfUHlfaGFzaHRhYmxlX2dldF9lbnRyeShUQUJMRSwgc2l6ZW9mKEtFWSksICYoS0VZKSkKKworCisvKiBHZXQgZGF0YSBmcm9tIGFuIGVudHJ5LiBDb3B5IGVudHJ5IGRhdGEgaW50byBkYXRhIGFuZCByZXR1cm4gMSBpZiB0aGUgZW50cnkKKyAgIGV4aXN0cywgcmV0dXJuIDAgaWYgdGhlIGVudHJ5IGRvZXMgbm90IGV4aXN0LgorCisgICBEb24ndCBjYWxsIGRpcmVjdGx5IHRoaXMgZnVuY3Rpb24sIGJ1dCB1c2UgX1B5X0hBU0hUQUJMRV9HRVQoKSBtYWNybyAqLworUHlBUElfRlVOQyhpbnQpIF9QeV9oYXNodGFibGVfZ2V0KAorICAgIF9QeV9oYXNodGFibGVfdCAqaHQsCisgICAgc2l6ZV90IGtleV9zaXplLAorICAgIGNvbnN0IHZvaWQgKnBrZXksCisgICAgc2l6ZV90IGRhdGFfc2l6ZSwKKyAgICB2b2lkICpkYXRhKTsKIAogI2RlZmluZSBfUHlfSEFTSFRBQkxFX0dFVChUQUJMRSwgS0VZLCBEQVRBKSBcCi0gICAgX1B5X2hhc2h0YWJsZV9nZXQoVEFCTEUsIEtFWSwgJihEQVRBKSwgc2l6ZW9mKERBVEEpKQorICAgIF9QeV9oYXNodGFibGVfZ2V0KFRBQkxFLCBzaXplb2YoS0VZKSwgJihLRVkpLCBzaXplb2YoREFUQSksICYoREFUQSkpCisKKworLyogRG9uJ3QgY2FsbCBkaXJlY3RseSB0aGlzIGZ1bmN0aW9uLCBidXQgdXNlIF9QeV9IQVNIVEFCTEVfUE9QKCkgbWFjcm8gKi8KK1B5QVBJX0ZVTkMoaW50KSBfUHlfaGFzaHRhYmxlX3BvcCgKKyAgICBfUHlfaGFzaHRhYmxlX3QgKmh0LAorICAgIHNpemVfdCBrZXlfc2l6ZSwKKyAgICBjb25zdCB2b2lkICpwa2V5LAorICAgIHNpemVfdCBkYXRhX3NpemUsCisgICAgdm9pZCAqZGF0YSk7CisKKyNkZWZpbmUgX1B5X0hBU0hUQUJMRV9QT1AoVEFCTEUsIEtFWSwgREFUQSkgXAorICAgIF9QeV9oYXNodGFibGVfcG9wKFRBQkxFLCBzaXplb2YoS0VZKSwgJihLRVkpLCBzaXplb2YoREFUQSksICYoREFUQSkpCisKIAogI2VuZGlmICAgLyogUHlfTElNSVRFRF9BUEkgKi8KLQogI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2l0ZXJ0b29sc21vZHVsZS5jIGIvTW9kdWxlcy9pdGVydG9vbHNtb2R1bGUuYwppbmRleCBiZTBmNDk4Li42YmYwNGNiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2l0ZXJ0b29sc21vZHVsZS5jCisrKyBiL01vZHVsZXMvaXRlcnRvb2xzbW9kdWxlLmMKQEAgLTEsNCArMSw1IEBACiAKKyNkZWZpbmUgUFlfU1NJWkVfVF9DTEVBTgogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgogCkBAIC03LDcgKzgsNyBAQAogKi8KIAogCi0vKiBncm91cGJ5IG9iamVjdCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIGdyb3VwYnkgb2JqZWN0ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKQEAgLTc0LDcgKzc1LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBncm91cGJ5X25leHQoZ3JvdXBieW9iamVjdCAqZ2JvKQogewotICAgIFB5T2JqZWN0ICpuZXd2YWx1ZSwgKm5ld2tleSwgKnIsICpncm91cGVyLCAqdG1wOworICAgIFB5T2JqZWN0ICpuZXd2YWx1ZSwgKm5ld2tleSwgKnIsICpncm91cGVyOwogCiAgICAgLyogc2tpcCB0byBuZXh0IGl0ZXJhdGlvbiBncm91cCAqLwogICAgIGZvciAoOzspIHsKQEAgLTg1LDggKzg2LDcgQEAKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBpbnQgcmNtcDsKIAotICAgICAgICAgICAgcmNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChnYm8tPnRndGtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2JvLT5jdXJya2V5LCBQeV9FUSk7CisgICAgICAgICAgICByY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKGdiby0+dGd0a2V5LCBnYm8tPmN1cnJrZXksIFB5X0VRKTsKICAgICAgICAgICAgIGlmIChyY21wID09IC0xKQogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgZWxzZSBpZiAocmNtcCA9PSAwKQpAQCAtMTAxLDI3ICsxMDEsMTkgQEAKICAgICAgICAgICAgIG5ld2tleSA9IG5ld3ZhbHVlOwogICAgICAgICAgICAgUHlfSU5DUkVGKG5ld3ZhbHVlKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG5ld2tleSA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoZ2JvLT5rZXlmdW5jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXd2YWx1ZSwgTlVMTCk7CisgICAgICAgICAgICBuZXdrZXkgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGdiby0+a2V5ZnVuYywgbmV3dmFsdWUsIE5VTEwpOwogICAgICAgICAgICAgaWYgKG5ld2tleSA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKG5ld3ZhbHVlKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIHRtcCA9IGdiby0+Y3VycmtleTsKLSAgICAgICAgZ2JvLT5jdXJya2V5ID0gbmV3a2V5OwotICAgICAgICBQeV9YREVDUkVGKHRtcCk7Ci0KLSAgICAgICAgdG1wID0gZ2JvLT5jdXJydmFsdWU7Ci0gICAgICAgIGdiby0+Y3VycnZhbHVlID0gbmV3dmFsdWU7Ci0gICAgICAgIFB5X1hERUNSRUYodG1wKTsKKyAgICAgICAgUHlfWFNFVFJFRihnYm8tPmN1cnJrZXksIG5ld2tleSk7CisgICAgICAgIFB5X1hTRVRSRUYoZ2JvLT5jdXJydmFsdWUsIG5ld3ZhbHVlKTsKICAgICB9CiAKICAgICBQeV9JTkNSRUYoZ2JvLT5jdXJya2V5KTsKLSAgICB0bXAgPSBnYm8tPnRndGtleTsKLSAgICBnYm8tPnRndGtleSA9IGdiby0+Y3VycmtleTsKLSAgICBQeV9YREVDUkVGKHRtcCk7CisgICAgUHlfWFNFVFJFRihnYm8tPnRndGtleSwgZ2JvLT5jdXJya2V5KTsKIAogICAgIGdyb3VwZXIgPSBfZ3JvdXBlcl9jcmVhdGUoZ2JvLCBnYm8tPnRndGtleSk7CiAgICAgaWYgKGdyb3VwZXIgPT0gTlVMTCkKQEAgLTE3OCw3ICsxNzAsNyBAQAogICAgICByZWR1Y2VfZG9jfSwKICAgICB7Il9fc2V0c3RhdGVfXyIsICAgIChQeUNGdW5jdGlvbilncm91cGJ5X3NldHN0YXRlLCAgICBNRVRIX08sCiAgICAgIHNldHN0YXRlX2RvY30sCi0gICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgIC8qIHNlbnRpbmVsICovCisgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKIFB5RG9jX1NUUlZBUihncm91cGJ5X2RvYywKQEAgLTMwMSw4ICsyOTMsNyBAQAogICAgICAgICAgICAgbmV3a2V5ID0gbmV3dmFsdWU7CiAgICAgICAgICAgICBQeV9JTkNSRUYobmV3dmFsdWUpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbmV3a2V5ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhnYm8tPmtleWZ1bmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld3ZhbHVlLCBOVUxMKTsKKyAgICAgICAgICAgIG5ld2tleSA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoZ2JvLT5rZXlmdW5jLCBuZXd2YWx1ZSwgTlVMTCk7CiAgICAgICAgICAgICBpZiAobmV3a2V5ID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmV3dmFsdWUpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMzMwLDggKzMyMSw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogX2dyb3VwZXJfcmVkdWNlKF9ncm91cGVyb2JqZWN0ICpseikKIHsKLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPTykiLCBQeV9UWVBFKGx6KSwKLSAgICAgICAgICAgIGx6LT5wYXJlbnQsIGx6LT50Z3RrZXkpOworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9PKSIsIFB5X1RZUEUobHopLCBsei0+cGFyZW50LCBsei0+dGd0a2V5KTsKIH0KIAogc3RhdGljIFB5TWV0aG9kRGVmIF9ncm91cGVyX21ldGhvZHNbXSA9IHsKQEAgLTM2NCw3ICszNTQsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwogICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQywgICAgICAgICAgICAvKiB0cF9mbGFncyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwotICAgICh0cmF2ZXJzZXByb2MpX2dyb3VwZXJfdHJhdmVyc2UsLyogdHBfdHJhdmVyc2UgKi8KKyAgICAodHJhdmVyc2Vwcm9jKV9ncm91cGVyX3RyYXZlcnNlLCAgICAvKiB0cF90cmF2ZXJzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwpAQCAtMzg1LDggKzM3NSw3IEBACiB9OwogCiAKLQotLyogdGVlIG9iamVjdCBhbmQgd2l0aCBzdXBwb3J0aW5nIGZ1bmN0aW9uIGFuZCBvYmplY3RzICoqKioqKioqKioqKioqKi8KKy8qIHRlZSBvYmplY3QgYW5kIHdpdGggc3VwcG9ydGluZyBmdW5jdGlvbiBhbmQgb2JqZWN0cyAqKioqKioqKioqKioqKioqKioqKioqKi8KIAogLyogVGhlIHRlZWRhdGFvYmplY3QgcHJlLWFsbG9jYXRlcyBzcGFjZSBmb3IgTElOS0NFTExTIG51bWJlciBvZiBvYmplY3RzLgogICAgVG8gaGVscCB0aGUgb2JqZWN0IGZpdCBuZWF0bHkgaW5zaWRlIGNhY2hlIGxpbmVzIChzcGFjZSBmb3IgMTYgdG8gMzIKQEAgLTQwMSw3ICszOTAsNyBAQAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKICAgICBQeU9iamVjdCAqaXQ7Ci0gICAgaW50IG51bXJlYWQ7ICAvKiAwIDw9IG51bXJlYWQgPD0gTElOS0NFTExTICovCisgICAgaW50IG51bXJlYWQ7ICAgICAgICAgICAgICAgIC8qIDAgPD0gbnVtcmVhZCA8PSBMSU5LQ0VMTFMgKi8KICAgICBQeU9iamVjdCAqbmV4dGxpbms7CiAgICAgUHlPYmplY3QgKih2YWx1ZXNbTElOS0NFTExTXSk7CiB9IHRlZWRhdGFvYmplY3Q7CkBAIC00MDksNyArMzk4LDcgQEAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECiAgICAgdGVlZGF0YW9iamVjdCAqZGF0YW9iajsKLSAgICBpbnQgaW5kZXg7ICAgIC8qIDAgPD0gaW5kZXggPD0gTElOS0NFTExTICovCisgICAgaW50IGluZGV4OyAgICAgICAgICAgICAgICAgIC8qIDAgPD0gaW5kZXggPD0gTElOS0NFTExTICovCiAgICAgUHlPYmplY3QgKndlYWtyZWZsaXN0OwogfSB0ZWVvYmplY3Q7CiAKQEAgLTQ2Niw2ICs0NTUsNyBAQAogdGVlZGF0YW9iamVjdF90cmF2ZXJzZSh0ZWVkYXRhb2JqZWN0ICp0ZG8sIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqIGFyZykKIHsKICAgICBpbnQgaTsKKwogICAgIFB5X1ZJU0lUKHRkby0+aXQpOwogICAgIGZvciAoaSA9IDA7IGkgPCB0ZG8tPm51bXJlYWQ7IGkrKykKICAgICAgICAgUHlfVklTSVQodGRvLT52YWx1ZXNbaV0pOwpAQCAtNTE1LDYgKzUwNSw3IEBACiAgICAgaW50IGk7CiAgICAgLyogY3JlYXRlIGEgdGVtcG9yYXJ5IGxpc3Qgb2YgYWxyZWFkeSBpdGVyYXRlZCB2YWx1ZXMgKi8KICAgICBQeU9iamVjdCAqdmFsdWVzID0gUHlMaXN0X05ldyh0ZG8tPm51bXJlYWQpOworCiAgICAgaWYgKCF2YWx1ZXMpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGZvciAoaT0wIDsgaTx0ZG8tPm51bXJlYWQgOyBpKyspIHsKQEAgLTU4Miw3ICs1NzMsNyBAQAogUHlEb2NfU1RSVkFSKHRlZWRhdGFvYmplY3RfZG9jLCAiRGF0YSBjb250YWluZXIgY29tbW9uIHRvIG11bHRpcGxlIHRlZSBvYmplY3RzLiIpOwogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IHRlZWRhdGFvYmplY3RfdHlwZSA9IHsKLSAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoMCwgMCkgICAgICAgICAvKiBNdXN0IGZpbGwgaW4gdHlwZSB2YWx1ZSBsYXRlciAqLworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgwLCAwKSAgICAgICAgICAgICAgICAgLyogTXVzdCBmaWxsIGluIHR5cGUgdmFsdWUgbGF0ZXIgKi8KICAgICAiaXRlcnRvb2xzLl90ZWVfZGF0YW9iamVjdCIsICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KICAgICBzaXplb2YodGVlZGF0YW9iamVjdCksICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KQEAgLTYwMiw3ICs1OTMsNyBAQAogICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KLSAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MsICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MsICAgIC8qIHRwX2ZsYWdzICovCiAgICAgdGVlZGF0YW9iamVjdF9kb2MsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KICAgICAodHJhdmVyc2Vwcm9jKXRlZWRhdGFvYmplY3RfdHJhdmVyc2UsICAgICAgIC8qIHRwX3RyYXZlcnNlICovCiAgICAgKGlucXVpcnkpdGVlZGF0YW9iamVjdF9jbGVhciwgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwpAQCAtNzYyLDkgKzc1Myw5IEBACiAiSXRlcmF0b3Igd3JhcHBlZCB0byBtYWtlIGl0IGNvcHlhYmxlIik7CiAKIHN0YXRpYyBQeU1ldGhvZERlZiB0ZWVfbWV0aG9kc1tdID0gewotICAgIHsiX19jb3B5X18iLCAgICAgICAgKFB5Q0Z1bmN0aW9uKXRlZV9jb3B5LCAgTUVUSF9OT0FSR1MsIHRlZWNvcHlfZG9jfSwKLSAgICB7Il9fcmVkdWNlX18iLCAgICAgIChQeUNGdW5jdGlvbil0ZWVfcmVkdWNlLCAgICAgIE1FVEhfTk9BUkdTLCByZWR1Y2VfZG9jfSwKLSAgICB7Il9fc2V0c3RhdGVfXyIsICAgIChQeUNGdW5jdGlvbil0ZWVfc2V0c3RhdGUsICAgIE1FVEhfTywgc2V0c3RhdGVfZG9jfSwKKyAgICB7Il9fY29weV9fIiwgICAgICAgIChQeUNGdW5jdGlvbil0ZWVfY29weSwgICAgIE1FVEhfTk9BUkdTLCB0ZWVjb3B5X2RvY30sCisgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pdGVlX3JlZHVjZSwgICBNRVRIX05PQVJHUywgcmVkdWNlX2RvY30sCisgICAgeyJfX3NldHN0YXRlX18iLCAgICAoUHlDRnVuY3Rpb24pdGVlX3NldHN0YXRlLCBNRVRIX08sICAgICAgc2V0c3RhdGVfZG9jfSwKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtNzk0LDcgKzc4NSw3IEBACiAgICAgKHRyYXZlcnNlcHJvYyl0ZWVfdHJhdmVyc2UsICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KICAgICAoaW5xdWlyeSl0ZWVfY2xlYXIsICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCi0gICAgb2Zmc2V0b2YodGVlb2JqZWN0LCB3ZWFrcmVmbGlzdCksICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIG9mZnNldG9mKHRlZW9iamVjdCwgd2Vha3JlZmxpc3QpLCAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIChpdGVybmV4dGZ1bmMpdGVlX25leHQsICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCiAgICAgdGVlX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwpAQCAtODYwLDEyICs4NTEsMTMgQEAKICJ0ZWUoaXRlcmFibGUsIG49MikgLS0+IHR1cGxlIG9mIG4gaW5kZXBlbmRlbnQgaXRlcmF0b3JzLiIpOwogCiAKLS8qIGN5Y2xlIG9iamVjdCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogY3ljbGUgb2JqZWN0ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAogICAgIFB5T2JqZWN0ICppdDsKICAgICBQeU9iamVjdCAqc2F2ZWQ7CisgICAgUHlfc3NpemVfdCBpbmRleDsKICAgICBpbnQgZmlyc3RwYXNzOwogfSBjeWNsZW9iamVjdDsKIApAQCAtOTA1LDYgKzg5Nyw3IEBACiAgICAgfQogICAgIGx6LT5pdCA9IGl0OwogICAgIGx6LT5zYXZlZCA9IHNhdmVkOworICAgIGx6LT5pbmRleCA9IDA7CiAgICAgbHotPmZpcnN0cGFzcyA9IDA7CiAKICAgICByZXR1cm4gKFB5T2JqZWN0ICopbHo7CkBAIC05MTQsMTUgKzkwNywxNiBAQAogY3ljbGVfZGVhbGxvYyhjeWNsZW9iamVjdCAqbHopCiB7CiAgICAgUHlPYmplY3RfR0NfVW5UcmFjayhseik7Ci0gICAgUHlfWERFQ1JFRihsei0+c2F2ZWQpOwogICAgIFB5X1hERUNSRUYobHotPml0KTsKKyAgICBQeV9YREVDUkVGKGx6LT5zYXZlZCk7CiAgICAgUHlfVFlQRShseiktPnRwX2ZyZWUobHopOwogfQogCiBzdGF0aWMgaW50CiBjeWNsZV90cmF2ZXJzZShjeWNsZW9iamVjdCAqbHosIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQogewotICAgIFB5X1ZJU0lUKGx6LT5pdCk7CisgICAgaWYgKGx6LT5pdCkKKyAgICAgICAgUHlfVklTSVQobHotPml0KTsKICAgICBQeV9WSVNJVChsei0+c2F2ZWQpOwogICAgIHJldHVybiAwOwogfQpAQCAtOTMxLDQ1ICs5MjUsNTYgQEAKIGN5Y2xlX25leHQoY3ljbGVvYmplY3QgKmx6KQogewogICAgIFB5T2JqZWN0ICppdGVtOwotICAgIFB5T2JqZWN0ICppdDsKLSAgICBQeU9iamVjdCAqdG1wOwogCi0gICAgd2hpbGUgKDEpIHsKKyAgICBpZiAobHotPml0ICE9IE5VTEwpIHsKICAgICAgICAgaXRlbSA9IFB5SXRlcl9OZXh0KGx6LT5pdCk7CiAgICAgICAgIGlmIChpdGVtICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGlmICghbHotPmZpcnN0cGFzcyAmJiBQeUxpc3RfQXBwZW5kKGx6LT5zYXZlZCwgaXRlbSkpIHsKKyAgICAgICAgICAgIGlmIChsei0+Zmlyc3RwYXNzKQorICAgICAgICAgICAgICAgIHJldHVybiBpdGVtOworICAgICAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQobHotPnNhdmVkLCBpdGVtKSkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBpdGVtOwogICAgICAgICB9Ci0gICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19TdG9wSXRlcmF0aW9uKSkKLSAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGlmIChQeUxpc3RfU2l6ZShsei0+c2F2ZWQpID09IDApCisgICAgICAgIC8qIE5vdGU6ICBTdG9wSXRlcmF0aW9uIGlzIGFscmVhZHkgY2xlYXJlZCBieSBQeUl0ZXJfTmV4dCgpICovCisgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGl0ID0gUHlPYmplY3RfR2V0SXRlcihsei0+c2F2ZWQpOwotICAgICAgICBpZiAoaXQgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB0bXAgPSBsei0+aXQ7Ci0gICAgICAgIGx6LT5pdCA9IGl0OwotICAgICAgICBsei0+Zmlyc3RwYXNzID0gMTsKLSAgICAgICAgUHlfREVDUkVGKHRtcCk7CisgICAgICAgIFB5X0NMRUFSKGx6LT5pdCk7CiAgICAgfQorICAgIGlmIChQeV9TSVpFKGx6LT5zYXZlZCkgPT0gMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaXRlbSA9IFB5TGlzdF9HRVRfSVRFTShsei0+c2F2ZWQsIGx6LT5pbmRleCk7CisgICAgbHotPmluZGV4Kys7CisgICAgaWYgKGx6LT5pbmRleCA+PSBQeV9TSVpFKGx6LT5zYXZlZCkpCisgICAgICAgIGx6LT5pbmRleCA9IDA7CisgICAgUHlfSU5DUkVGKGl0ZW0pOworICAgIHJldHVybiBpdGVtOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogY3ljbGVfcmVkdWNlKGN5Y2xlb2JqZWN0ICpseikKIHsKLSAgICAvKiBDcmVhdGUgYSBuZXcgY3ljbGUgd2l0aCB0aGUgaXRlcmF0b3IgdHVwbGUsIHRoZW4gc2V0Ci0gICAgICogdGhlIHNhdmVkIHN0YXRlIG9uIGl0LgotICAgICAqLwotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE8pKE9pKSIsIFB5X1RZUEUobHopLAotICAgICAgICBsei0+aXQsIGx6LT5zYXZlZCwgbHotPmZpcnN0cGFzcyk7CisgICAgLyogQ3JlYXRlIGEgbmV3IGN5Y2xlIHdpdGggdGhlIGl0ZXJhdG9yIHR1cGxlLCB0aGVuIHNldCB0aGUgc2F2ZWQgc3RhdGUgKi8KKyAgICBpZiAobHotPml0ID09IE5VTEwpIHsKKyAgICAgICAgUHlPYmplY3QgKml0ID0gUHlPYmplY3RfR2V0SXRlcihsei0+c2F2ZWQpOworICAgICAgICBpZiAoaXQgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAobHotPmluZGV4ICE9IDApIHsKKyAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKF9fc2V0c3RhdGVfXyk7CisgICAgICAgICAgICBQeU9iamVjdCAqcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChpdCwgJlB5SWRfX19zZXRzdGF0ZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm4iLCBsei0+aW5kZXgpOworICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE4pKE9pKSIsIFB5X1RZUEUobHopLCBpdCwgbHotPnNhdmVkLCAxKTsKICAgICB9CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oTykoT2kpIiwgUHlfVFlQRShseiksIGx6LT5pdCwgbHotPnNhdmVkLAorICAgICAgICAgICAgICAgICAgICAgICAgIGx6LT5maXJzdHBhc3MpOworfQogCiBzdGF0aWMgUHlPYmplY3QgKgogY3ljbGVfc2V0c3RhdGUoY3ljbGVvYmplY3QgKmx6LCBQeU9iamVjdCAqc3RhdGUpCkBAIC05ODMsOSArOTg4LDEwIEBACiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKHN0YXRlLCAiTyFpIiwgJlB5TGlzdF9UeXBlLCAmc2F2ZWQsICZmaXJzdHBhc3MpKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBQeV9YSU5DUkVGKHNhdmVkKTsKKyAgICBQeV9JTkNSRUYoc2F2ZWQpOwogICAgIFB5X1hTRVRSRUYobHotPnNhdmVkLCBzYXZlZCk7CiAgICAgbHotPmZpcnN0cGFzcyA9IGZpcnN0cGFzcyAhPSAwOworICAgIGx6LT5pbmRleCA9IDA7CiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKQEAgLTEwNTQsNyArMTA2MCw3IEBACiAgICAgUHlPYmplY3RfSEVBRAogICAgIFB5T2JqZWN0ICpmdW5jOwogICAgIFB5T2JqZWN0ICppdDsKLSAgICBsb25nICAgICAgICAgc3RhcnQ7CisgICAgbG9uZyBzdGFydDsKIH0gZHJvcHdoaWxlb2JqZWN0OwogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IGRyb3B3aGlsZV90eXBlOwpAQCAtMTE0NCw4ICsxMTUwLDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBkcm9wd2hpbGVfcmVkdWNlKGRyb3B3aGlsZW9iamVjdCAqbHopCiB7Ci0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT08pbCIsIFB5X1RZUEUobHopLAotICAgICAgICAgICAgICAgICAgICAgICAgIGx6LT5mdW5jLCBsei0+aXQsIGx6LT5zdGFydCk7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT08pbCIsIFB5X1RZUEUobHopLCBsei0+ZnVuYywgbHotPml0LCBsei0+c3RhcnQpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTE5NiwxMyArMTIwMSwxMyBAQAogICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQyB8CiAgICAgICAgIFB5X1RQRkxBR1NfQkFTRVRZUEUsICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KICAgICBkcm9wd2hpbGVfZG9jLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KLSAgICAodHJhdmVyc2Vwcm9jKWRyb3B3aGlsZV90cmF2ZXJzZSwgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAodHJhdmVyc2Vwcm9jKWRyb3B3aGlsZV90cmF2ZXJzZSwgICAvKiB0cF90cmF2ZXJzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAoaXRlcm5leHRmdW5jKWRyb3B3aGlsZV9uZXh0LCAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIGRyb3B3aGlsZV9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgZHJvcHdoaWxlX21ldGhvZHMsICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCkBAIC0xMjIzLDcgKzEyMjgsNyBAQAogICAgIFB5T2JqZWN0X0hFQUQKICAgICBQeU9iamVjdCAqZnVuYzsKICAgICBQeU9iamVjdCAqaXQ7Ci0gICAgbG9uZyAgICAgICAgIHN0b3A7CisgICAgbG9uZyBzdG9wOwogfSB0YWtld2hpbGVvYmplY3Q7CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgdGFrZXdoaWxlX3R5cGU7CkBAIC0xMjk4LDcgKzEzMDMsNyBAQAogICAgIH0KICAgICBvayA9IFB5T2JqZWN0X0lzVHJ1ZShnb29kKTsKICAgICBQeV9ERUNSRUYoZ29vZCk7Ci0gICAgaWYgKG9rID09IDEpCisgICAgaWYgKG9rID4gMCkKICAgICAgICAgcmV0dXJuIGl0ZW07CiAgICAgUHlfREVDUkVGKGl0ZW0pOwogICAgIGlmIChvayA9PSAwKQpAQCAtMTMwOSwxNCArMTMxNCwxNCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHRha2V3aGlsZV9yZWR1Y2UodGFrZXdoaWxlb2JqZWN0ICpseikKIHsKLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPTylsIiwgUHlfVFlQRShseiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgbHotPmZ1bmMsIGx6LT5pdCwgbHotPnN0b3ApOworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9PKWwiLCBQeV9UWVBFKGx6KSwgbHotPmZ1bmMsIGx6LT5pdCwgbHotPnN0b3ApOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogdGFrZXdoaWxlX3JlZHVjZV9zZXRzdGF0ZSh0YWtld2hpbGVvYmplY3QgKmx6LCBQeU9iamVjdCAqc3RhdGUpCiB7CiAgICAgaW50IHN0b3AgPSBQeU9iamVjdF9Jc1RydWUoc3RhdGUpOworCiAgICAgaWYgKHN0b3AgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBsei0+c3RvcCA9IHN0b3A7CkBAIC0xMzYwLDcgKzEzNjUsNyBAQAogICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQyB8CiAgICAgICAgIFB5X1RQRkxBR1NfQkFTRVRZUEUsICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KICAgICB0YWtld2hpbGVfZG9jLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KLSAgICAodHJhdmVyc2Vwcm9jKXRha2V3aGlsZV90cmF2ZXJzZSwgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAodHJhdmVyc2Vwcm9jKXRha2V3aGlsZV90cmF2ZXJzZSwgICAvKiB0cF90cmF2ZXJzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwpAQCAtMTM4MSw3ICsxMzg2LDcgQEAKIH07CiAKIAotLyogaXNsaWNlIG9iamVjdCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBpc2xpY2Ugb2JqZWN0ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECkBAIC0xNDE3LDcgKzE0MjIsOCBAQAogICAgICAgICAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICJTdG9wIGFyZ3VtZW50IGZvciBpc2xpY2UoKSBtdXN0IGJlIE5vbmUgb3IgYW4gaW50ZWdlcjogMCA8PSB4IDw9IHN5cy5tYXhzaXplLiIpOworICAgICAgICAgICAgICAgICAgICJTdG9wIGFyZ3VtZW50IGZvciBpc2xpY2UoKSBtdXN0IGJlIE5vbmUgb3IgIgorICAgICAgICAgICAgICAgICAgICJhbiBpbnRlZ2VyOiAwIDw9IHggPD0gc3lzLm1heHNpemUuIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTE0MzIsMTQgKzE0MzgsMTYgQEAKICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAiU3RvcCBhcmd1bWVudCBmb3IgaXNsaWNlKCkgbXVzdCBiZSBOb25lIG9yIGFuIGludGVnZXI6IDAgPD0geCA8PSBzeXMubWF4c2l6ZS4iKTsKKyAgICAgICAgICAgICAgICAgICAiU3RvcCBhcmd1bWVudCBmb3IgaXNsaWNlKCkgbXVzdCBiZSBOb25lIG9yICIKKyAgICAgICAgICAgICAgICAgICAiYW4gaW50ZWdlcjogMCA8PSB4IDw9IHN5cy5tYXhzaXplLiIpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIGlmIChzdGFydDwwIHx8IHN0b3A8LTEpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICJJbmRpY2VzIGZvciBpc2xpY2UoKSBtdXN0IGJlIE5vbmUgb3IgYW4gaW50ZWdlcjogMCA8PSB4IDw9IHN5cy5tYXhzaXplLiIpOworICAgICAgICAgICAiSW5kaWNlcyBmb3IgaXNsaWNlKCkgbXVzdCBiZSBOb25lIG9yICIKKyAgICAgICAgICAgImFuIGludGVnZXI6IDAgPD0geCA8PSBzeXMubWF4c2l6ZS4iKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCkBAIC0xNTM2LDYgKzE1NDQsNyBAQAogICAgICAqIHRoZW4gJ3NldHN0YXRlJyB3aXRoIHRoZSBuZXh0IGFuZCBjb3VudAogICAgICAqLwogICAgIFB5T2JqZWN0ICpzdG9wOworCiAgICAgaWYgKGx6LT5pdCA9PSBOVUxMKSB7CiAgICAgICAgIFB5T2JqZWN0ICplbXB0eV9saXN0OwogICAgICAgICBQeU9iamVjdCAqZW1wdHlfaXQ7CkBAIC0xNTY1LDYgKzE1NzQsNyBAQAogaXNsaWNlX3NldHN0YXRlKGlzbGljZW9iamVjdCAqbHosIFB5T2JqZWN0ICpzdGF0ZSkKIHsKICAgICBQeV9zc2l6ZV90IGNudCA9IFB5TG9uZ19Bc1NzaXplX3Qoc3RhdGUpOworCiAgICAgaWYgKGNudCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBsei0+Y250ID0gY250OwpAQCAtMTc3OSw3ICsxNzg5LDcgQEAKIH07CiAKIAotLyogY2hhaW4gb2JqZWN0ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIGNoYWluIG9iamVjdCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKQEAgLTE4NTUsMzIgKzE4NjUsMzIgQEAKICAgICBQeU9iamVjdCAqaXRlbTsKIAogICAgIGlmIChsei0+c291cmNlID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFscmVhZHkgc3RvcHBlZCAqLworICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgIC8qIGFscmVhZHkgc3RvcHBlZCAqLwogCiAgICAgaWYgKGx6LT5hY3RpdmUgPT0gTlVMTCkgewogICAgICAgICBQeU9iamVjdCAqaXRlcmFibGUgPSBQeUl0ZXJfTmV4dChsei0+c291cmNlKTsKICAgICAgICAgaWYgKGl0ZXJhYmxlID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0NMRUFSKGx6LT5zb3VyY2UpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBubyBtb3JlIGlucHV0IHNvdXJjZXMgKi8KKyAgICAgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAvKiBubyBtb3JlIGlucHV0IHNvdXJjZXMgKi8KICAgICAgICAgfQogICAgICAgICBsei0+YWN0aXZlID0gUHlPYmplY3RfR2V0SXRlcihpdGVyYWJsZSk7CiAgICAgICAgIFB5X0RFQ1JFRihpdGVyYWJsZSk7CiAgICAgICAgIGlmIChsei0+YWN0aXZlID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0NMRUFSKGx6LT5zb3VyY2UpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCBub3QgaXRlcmFibGUgKi8KKyAgICAgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAvKiBpbnB1dCBub3QgaXRlcmFibGUgKi8KICAgICAgICAgfQogICAgIH0KLSAgICBpdGVtID0gUHlJdGVyX05leHQobHotPmFjdGl2ZSk7CisgICAgaXRlbSA9ICgqUHlfVFlQRShsei0+YWN0aXZlKS0+dHBfaXRlcm5leHQpKGx6LT5hY3RpdmUpOwogICAgIGlmIChpdGVtICE9IE5VTEwpCiAgICAgICAgIHJldHVybiBpdGVtOwogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1N0b3BJdGVyYXRpb24pKQogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCByYWlzZWQgYW4gZXhjZXB0aW9uICovCisgICAgICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgLyogaW5wdXQgcmFpc2VkIGFuIGV4Y2VwdGlvbiAqLwogICAgIH0KICAgICBQeV9DTEVBUihsei0+YWN0aXZlKTsKLSAgICByZXR1cm4gY2hhaW5fbmV4dChseik7ICAgICAgICAgICAgICAgICAgICAgIC8qIHJlY3Vyc2UgYW5kIHVzZSBuZXh0IGFjdGl2ZSAqLworICAgIHJldHVybiBjaGFpbl9uZXh0KGx6KTsgICAgICAgICAgICAgIC8qIHJlY3Vyc2UgYW5kIHVzZSBuZXh0IGFjdGl2ZSAqLwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTk0MCwxMyArMTk1MCwxMyBAQAogdGhhdCBldmFsdWF0ZXMgbGF6aWx5LiIpOwogCiBzdGF0aWMgUHlNZXRob2REZWYgY2hhaW5fbWV0aG9kc1tdID0gewotICAgIHsiZnJvbV9pdGVyYWJsZSIsIChQeUNGdW5jdGlvbikgY2hhaW5fbmV3X2Zyb21faXRlcmFibGUsICAgICAgICAgICAgTUVUSF9PIHwgTUVUSF9DTEFTUywKLSAgICAgICAgY2hhaW5fZnJvbV9pdGVyYWJsZV9kb2N9LAorICAgIHsiZnJvbV9pdGVyYWJsZSIsIChQeUNGdW5jdGlvbikgY2hhaW5fbmV3X2Zyb21faXRlcmFibGUsIE1FVEhfTyB8IE1FVEhfQ0xBU1MsCisgICAgIGNoYWluX2Zyb21faXRlcmFibGVfZG9jfSwKICAgICB7Il9fcmVkdWNlX18iLCAgICAgIChQeUNGdW5jdGlvbiljaGFpbl9yZWR1Y2UsICAgICAgTUVUSF9OT0FSR1MsCiAgICAgIHJlZHVjZV9kb2N9LAogICAgIHsiX19zZXRzdGF0ZV9fIiwgICAgKFB5Q0Z1bmN0aW9uKWNoYWluX3NldHN0YXRlLCAgICBNRVRIX08sCiAgICAgIHNldHN0YXRlX2RvY30sCi0gICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgIC8qIHNlbnRpbmVsICovCisgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgY2hhaW5fdHlwZSA9IHsKQEAgLTE5OTgsMTAgKzIwMDgsMTAgQEAKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKLSAgICBQeU9iamVjdCAqcG9vbHM7ICAgICAgICAgICAgICAgICAgICAvKiB0dXBsZSBvZiBwb29sIHR1cGxlcyAqLwotICAgIFB5X3NzaXplX3QgKmluZGljZXM7ICAgICAgICAgICAgLyogb25lIGluZGV4IHBlciBwb29sICovCi0gICAgUHlPYmplY3QgKnJlc3VsdDsgICAgICAgICAgICAgICAvKiBtb3N0IHJlY2VudGx5IHJldHVybmVkIHJlc3VsdCB0dXBsZSAqLwotICAgIGludCBzdG9wcGVkOyAgICAgICAgICAgICAgICAgICAgLyogc2V0IHRvIDEgd2hlbiB0aGUgcHJvZHVjdCBpdGVyYXRvciBpcyBleGhhdXN0ZWQgKi8KKyAgICBQeU9iamVjdCAqcG9vbHM7ICAgICAgICAvKiB0dXBsZSBvZiBwb29sIHR1cGxlcyAqLworICAgIFB5X3NzaXplX3QgKmluZGljZXM7ICAgIC8qIG9uZSBpbmRleCBwZXIgcG9vbCAqLworICAgIFB5T2JqZWN0ICpyZXN1bHQ7ICAgICAgIC8qIG1vc3QgcmVjZW50bHkgcmV0dXJuZWQgcmVzdWx0IHR1cGxlICovCisgICAgaW50IHN0b3BwZWQ7ICAgICAgICAgICAgLyogc2V0IHRvIDEgd2hlbiB0aGUgaXRlcmF0b3IgaXMgZXhoYXVzdGVkICovCiB9IHByb2R1Y3RvYmplY3Q7CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgcHJvZHVjdF90eXBlOwpAQCAtMjAyMCw3ICsyMDMwLDggQEAKICAgICAgICAgUHlPYmplY3QgKnRtcGFyZ3MgPSBQeVR1cGxlX05ldygwKTsKICAgICAgICAgaWYgKHRtcGFyZ3MgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkcyh0bXBhcmdzLCBrd2RzLCAifG46cHJvZHVjdCIsIGt3bGlzdCwgJnJlcGVhdCkpIHsKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHModG1wYXJncywga3dkcywgInxuOnByb2R1Y3QiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2xpc3QsICZyZXBlYXQpKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYodG1wYXJncyk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQpAQCAtMjMwOSw3ICsyMzIwLDcgQEAKIHN0YXRpYyBQeVR5cGVPYmplY3QgcHJvZHVjdF90eXBlID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQogICAgICJpdGVydG9vbHMucHJvZHVjdCIsICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KLSAgICBzaXplb2YocHJvZHVjdG9iamVjdCksICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgc2l6ZW9mKHByb2R1Y3RvYmplY3QpLCAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KICAgICAvKiBtZXRob2RzICovCiAgICAgKGRlc3RydWN0b3IpcHJvZHVjdF9kZWFsbG9jLCAgICAgICAgLyogdHBfZGVhbGxvYyAqLwpAQCAtMjM1MSwxNSArMjM2MiwxNSBAQAogfTsKIAogCi0vKiBjb21iaW5hdGlvbnMgb2JqZWN0ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIGNvbWJpbmF0aW9ucyBvYmplY3QgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKLSAgICBQeU9iamVjdCAqcG9vbDsgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCBjb252ZXJ0ZWQgdG8gYSB0dXBsZSAqLwotICAgIFB5X3NzaXplX3QgKmluZGljZXM7ICAgICAgICAgICAgLyogb25lIGluZGV4IHBlciByZXN1bHQgZWxlbWVudCAqLwotICAgIFB5T2JqZWN0ICpyZXN1bHQ7ICAgICAgICAgICAgICAgLyogbW9zdCByZWNlbnRseSByZXR1cm5lZCByZXN1bHQgdHVwbGUgKi8KLSAgICBQeV9zc2l6ZV90IHI7ICAgICAgICAgICAgICAgICAgICAgICAvKiBzaXplIG9mIHJlc3VsdCB0dXBsZSAqLwotICAgIGludCBzdG9wcGVkOyAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNldCB0byAxIHdoZW4gdGhlIGNvbWJpbmF0aW9ucyBpdGVyYXRvciBpcyBleGhhdXN0ZWQgKi8KKyAgICBQeU9iamVjdCAqcG9vbDsgICAgICAgICAvKiBpbnB1dCBjb252ZXJ0ZWQgdG8gYSB0dXBsZSAqLworICAgIFB5X3NzaXplX3QgKmluZGljZXM7ICAgIC8qIG9uZSBpbmRleCBwZXIgcmVzdWx0IGVsZW1lbnQgKi8KKyAgICBQeU9iamVjdCAqcmVzdWx0OyAgICAgICAvKiBtb3N0IHJlY2VudGx5IHJldHVybmVkIHJlc3VsdCB0dXBsZSAqLworICAgIFB5X3NzaXplX3QgcjsgICAgICAgICAgIC8qIHNpemUgb2YgcmVzdWx0IHR1cGxlICovCisgICAgaW50IHN0b3BwZWQ7ICAgICAgICAgICAgLyogc2V0IHRvIDEgd2hlbiB0aGUgaXRlcmF0b3IgaXMgZXhoYXVzdGVkICovCiB9IGNvbWJpbmF0aW9uc29iamVjdDsKIAogc3RhdGljIFB5VHlwZU9iamVjdCBjb21iaW5hdGlvbnNfdHlwZTsKQEAgLTI1NjksMTcgKzI1ODAsMTYgQEAKICAgICBQeV9zc2l6ZV90IGk7CiAgICAgUHlfc3NpemVfdCBuID0gUHlUdXBsZV9HRVRfU0laRShsei0+cG9vbCk7CiAKLSAgICBpZiAoIVB5VHVwbGVfQ2hlY2soc3RhdGUpIHx8IFB5VHVwbGVfR0VUX1NJWkUoc3RhdGUpICE9IGx6LT5yKQotICAgIHsKKyAgICBpZiAoIVB5VHVwbGVfQ2hlY2soc3RhdGUpIHx8IFB5VHVwbGVfR0VUX1NJWkUoc3RhdGUpICE9IGx6LT5yKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiaW52YWxpZCBhcmd1bWVudHMiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgZm9yIChpPTA7IGk8bHotPnI7IGkrKykKLSAgICB7CisgICAgZm9yIChpPTA7IGk8bHotPnI7IGkrKykgewogICAgICAgICBQeV9zc2l6ZV90IG1heDsKICAgICAgICAgUHlPYmplY3QqIGluZGV4T2JqZWN0ID0gUHlUdXBsZV9HRVRfSVRFTShzdGF0ZSwgaSk7CiAgICAgICAgIFB5X3NzaXplX3QgaW5kZXggPSBQeUxvbmdfQXNTc2l6ZV90KGluZGV4T2JqZWN0KTsKKwogICAgICAgICBpZiAoaW5kZXggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOyAvKiBub3QgYW4gaW50ZWdlciAqLwogICAgICAgICBtYXggPSBpICsgbiAtIGx6LT5yOwpAQCAtMjY2NSw3ICsyNjc1LDcgQEAKIH07CiAKIAotLyogY29tYmluYXRpb25zIHdpdGggcmVwbGFjZW1lbnQgb2JqZWN0ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBjb21iaW5hdGlvbnMgd2l0aCByZXBsYWNlbWVudCBvYmplY3QgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8qIEVxdWl2YWxlbnQgdG86CiAKQEAgLTI2OTUsMTEgKzI3MDUsMTEgQEAKICovCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAotICAgIFB5T2JqZWN0ICpwb29sOyAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IGNvbnZlcnRlZCB0byBhIHR1cGxlICovCisgICAgUHlPYmplY3QgKnBvb2w7ICAgICAgICAgLyogaW5wdXQgY29udmVydGVkIHRvIGEgdHVwbGUgKi8KICAgICBQeV9zc2l6ZV90ICppbmRpY2VzOyAgICAvKiBvbmUgaW5kZXggcGVyIHJlc3VsdCBlbGVtZW50ICovCiAgICAgUHlPYmplY3QgKnJlc3VsdDsgICAgICAgLyogbW9zdCByZWNlbnRseSByZXR1cm5lZCByZXN1bHQgdHVwbGUgKi8KLSAgICBQeV9zc2l6ZV90IHI7ICAgICAgICAgICAgICAgICAgICAgICAvKiBzaXplIG9mIHJlc3VsdCB0dXBsZSAqLwotICAgIGludCBzdG9wcGVkOyAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNldCB0byAxIHdoZW4gdGhlIGN3ciBpdGVyYXRvciBpcyBleGhhdXN0ZWQgKi8KKyAgICBQeV9zc2l6ZV90IHI7ICAgICAgICAgICAvKiBzaXplIG9mIHJlc3VsdCB0dXBsZSAqLworICAgIGludCBzdG9wcGVkOyAgICAgICAgICAgIC8qIHNldCB0byAxIHdoZW4gdGhlIGN3ciBpdGVyYXRvciBpcyBleGhhdXN0ZWQgKi8KIH0gY3dyb2JqZWN0OwogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IGN3cl90eXBlOwpAQCAtMjcxNiw4ICsyNzI2LDkgQEAKICAgICBQeV9zc2l6ZV90IGk7CiAgICAgc3RhdGljIGNoYXIgKmt3YXJnc1tdID0geyJpdGVyYWJsZSIsICJyIiwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT246Y29tYmluYXRpb25zX3dpdGhfcmVwbGFjZW1lbnQiLCBrd2FyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJml0ZXJhYmxlLCAmcikpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT246Y29tYmluYXRpb25zX3dpdGhfcmVwbGFjZW1lbnQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3YXJncywgJml0ZXJhYmxlLCAmcikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgcG9vbCA9IFB5U2VxdWVuY2VfVHVwbGUoaXRlcmFibGUpOwpAQCAtMjg4Miw4ICsyODkzLDcgQEAKICAgICAgICAgaW5kaWNlcyA9IFB5VHVwbGVfTmV3KGx6LT5yKTsKICAgICAgICAgaWYgKCFpbmRpY2VzKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGZvciAoaT0wOyBpPGx6LT5yOyBpKyspCi0gICAgICAgIHsKKyAgICAgICAgZm9yIChpPTA7IGk8bHotPnI7IGkrKykgewogICAgICAgICAgICAgUHlPYmplY3QqIGluZGV4ID0gUHlMb25nX0Zyb21Tc2l6ZV90KGx6LT5pbmRpY2VzW2ldKTsKICAgICAgICAgICAgIGlmICghaW5kZXgpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaW5kaWNlcyk7CkBAIC0yOTA5LDEwICsyOTE5LDEwIEBACiAgICAgfQogCiAgICAgbiA9IFB5VHVwbGVfR0VUX1NJWkUobHotPnBvb2wpOwotICAgIGZvciAoaT0wOyBpPGx6LT5yOyBpKyspCi0gICAgeworICAgIGZvciAoaT0wOyBpPGx6LT5yOyBpKyspIHsKICAgICAgICAgUHlPYmplY3QqIGluZGV4T2JqZWN0ID0gUHlUdXBsZV9HRVRfSVRFTShzdGF0ZSwgaSk7CiAgICAgICAgIFB5X3NzaXplX3QgaW5kZXggPSBQeUxvbmdfQXNTc2l6ZV90KGluZGV4T2JqZWN0KTsKKwogICAgICAgICBpZiAoaW5kZXggPCAwICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsgLyogbm90IGFuIGludGVnZXIgKi8KICAgICAgICAgLyogY2xhbXAgdGhlIGluZGV4ICovCkBAIC0yOTk2LDcgKzMwMDYsNyBAQAogfTsKIAogCi0vKiBwZXJtdXRhdGlvbnMgb2JqZWN0ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLyogcGVybXV0YXRpb25zIG9iamVjdCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogCiBkZWYgcGVybXV0YXRpb25zKGl0ZXJhYmxlLCByPU5vbmUpOgogICAgICdwZXJtdXRhdGlvbnMocmFuZ2UoMyksIDIpIC0tPiAoMCwxKSAoMCwyKSAoMSwwKSAoMSwyKSAoMiwwKSAoMiwxKScKQEAgLTMwMjMsMTIgKzMwMzMsMTIgQEAKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKLSAgICBQeU9iamVjdCAqcG9vbDsgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCBjb252ZXJ0ZWQgdG8gYSB0dXBsZSAqLwotICAgIFB5X3NzaXplX3QgKmluZGljZXM7ICAgICAgICAgICAgLyogb25lIGluZGV4IHBlciBlbGVtZW50IGluIHRoZSBwb29sICovCi0gICAgUHlfc3NpemVfdCAqY3ljbGVzOyAgICAgICAgICAgICAgICAgLyogb25lIHJvbGxvdmVyIGNvdW50ZXIgcGVyIGVsZW1lbnQgaW4gdGhlIHJlc3VsdCAqLwotICAgIFB5T2JqZWN0ICpyZXN1bHQ7ICAgICAgICAgICAgICAgLyogbW9zdCByZWNlbnRseSByZXR1cm5lZCByZXN1bHQgdHVwbGUgKi8KLSAgICBQeV9zc2l6ZV90IHI7ICAgICAgICAgICAgICAgICAgICAgICAvKiBzaXplIG9mIHJlc3VsdCB0dXBsZSAqLwotICAgIGludCBzdG9wcGVkOyAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNldCB0byAxIHdoZW4gdGhlIHBlcm11dGF0aW9ucyBpdGVyYXRvciBpcyBleGhhdXN0ZWQgKi8KKyAgICBQeU9iamVjdCAqcG9vbDsgICAgICAgICAvKiBpbnB1dCBjb252ZXJ0ZWQgdG8gYSB0dXBsZSAqLworICAgIFB5X3NzaXplX3QgKmluZGljZXM7ICAgIC8qIG9uZSBpbmRleCBwZXIgZWxlbWVudCBpbiB0aGUgcG9vbCAqLworICAgIFB5X3NzaXplX3QgKmN5Y2xlczsgICAgIC8qIG9uZSByb2xsb3ZlciBjb3VudGVyIHBlciBlbGVtZW50IGluIHRoZSByZXN1bHQgKi8KKyAgICBQeU9iamVjdCAqcmVzdWx0OyAgICAgICAvKiBtb3N0IHJlY2VudGx5IHJldHVybmVkIHJlc3VsdCB0dXBsZSAqLworICAgIFB5X3NzaXplX3QgcjsgICAgICAgICAgIC8qIHNpemUgb2YgcmVzdWx0IHR1cGxlICovCisgICAgaW50IHN0b3BwZWQ7ICAgICAgICAgICAgLyogc2V0IHRvIDEgd2hlbiB0aGUgaXRlcmF0b3IgaXMgZXhoYXVzdGVkICovCiB9IHBlcm11dGF0aW9uc29iamVjdDsKIAogc3RhdGljIFB5VHlwZU9iamVjdCBwZXJtdXRhdGlvbnNfdHlwZTsKQEAgLTMyNDMsNyArMzI1Myw3IEBACiAgICAgICAgIGluZGljZXMgPSBQeVR1cGxlX05ldyhuKTsKICAgICAgICAgaWYgKGluZGljZXMgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZXJyOwotICAgICAgICBmb3IgKGk9MDsgaTxuOyBpKyspeworICAgICAgICBmb3IgKGk9MDsgaTxuOyBpKyspIHsKICAgICAgICAgICAgIFB5T2JqZWN0KiBpbmRleCA9IFB5TG9uZ19Gcm9tU3NpemVfdChwby0+aW5kaWNlc1tpXSk7CiAgICAgICAgICAgICBpZiAoIWluZGV4KQogICAgICAgICAgICAgICAgIGdvdG8gZXJyOwpAQCAtMzI1Myw4ICszMjYzLDcgQEAKICAgICAgICAgY3ljbGVzID0gUHlUdXBsZV9OZXcocG8tPnIpOwogICAgICAgICBpZiAoY3ljbGVzID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGVycjsKLSAgICAgICAgZm9yIChpPTA7IGk8cG8tPnI7IGkrKykKLSAgICAgICAgeworICAgICAgICBmb3IgKGk9MCA7IGk8cG8tPnIgOyBpKyspIHsKICAgICAgICAgICAgIFB5T2JqZWN0KiBpbmRleCA9IFB5TG9uZ19Gcm9tU3NpemVfdChwby0+Y3ljbGVzW2ldKTsKICAgICAgICAgICAgIGlmICghaW5kZXgpCiAgICAgICAgICAgICAgICAgZ290byBlcnI7CkBAIC0zMjg3LDE1ICszMjk2LDEyIEBACiAgICAgfQogCiAgICAgbiA9IFB5VHVwbGVfR0VUX1NJWkUocG8tPnBvb2wpOwotICAgIGlmIChQeVR1cGxlX0dFVF9TSVpFKGluZGljZXMpICE9IG4gfHwKLSAgICAgICAgUHlUdXBsZV9HRVRfU0laRShjeWNsZXMpICE9IHBvLT5yKQotICAgIHsKKyAgICBpZiAoUHlUdXBsZV9HRVRfU0laRShpbmRpY2VzKSAhPSBuIHx8IFB5VHVwbGVfR0VUX1NJWkUoY3ljbGVzKSAhPSBwby0+cikgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImludmFsaWQgYXJndW1lbnRzIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGZvciAoaT0wOyBpPG47IGkrKykKLSAgICB7CisgICAgZm9yIChpPTA7IGk8bjsgaSsrKSB7CiAgICAgICAgIFB5T2JqZWN0KiBpbmRleE9iamVjdCA9IFB5VHVwbGVfR0VUX0lURU0oaW5kaWNlcywgaSk7CiAgICAgICAgIFB5X3NzaXplX3QgaW5kZXggPSBQeUxvbmdfQXNTc2l6ZV90KGluZGV4T2JqZWN0KTsKICAgICAgICAgaWYgKGluZGV4IDwgMCAmJiBQeUVycl9PY2N1cnJlZCgpKQpAQCAtMzMwOCw4ICszMzE0LDcgQEAKICAgICAgICAgcG8tPmluZGljZXNbaV0gPSBpbmRleDsKICAgICB9CiAKLSAgICBmb3IgKGk9MDsgaTxwby0+cjsgaSsrKQotICAgIHsKKyAgICBmb3IgKGk9MDsgaTxwby0+cjsgaSsrKSB7CiAgICAgICAgIFB5T2JqZWN0KiBpbmRleE9iamVjdCA9IFB5VHVwbGVfR0VUX0lURU0oY3ljbGVzLCBpKTsKICAgICAgICAgUHlfc3NpemVfdCBpbmRleCA9IFB5TG9uZ19Bc1NzaXplX3QoaW5kZXhPYmplY3QpOwogICAgICAgICBpZiAoaW5kZXggPCAwICYmIFB5RXJyX09jY3VycmVkKCkpCkBAIC0zMzUwLDExICszMzU1LDExIEBACiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgcGVybXV0YXRpb25zX3R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCi0gICAgIml0ZXJ0b29scy5wZXJtdXRhdGlvbnMiLCAgICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgIml0ZXJ0b29scy5wZXJtdXRhdGlvbnMiLCAgICAgICAgICAgLyogdHBfbmFtZSAqLwogICAgIHNpemVvZihwZXJtdXRhdGlvbnNvYmplY3QpLCAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCiAgICAgLyogbWV0aG9kcyAqLwotICAgIChkZXN0cnVjdG9yKXBlcm11dGF0aW9uc19kZWFsbG9jLCAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIChkZXN0cnVjdG9yKXBlcm11dGF0aW9uc19kZWFsbG9jLCAgIC8qIHRwX2RlYWxsb2MgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCkBAIC0zMzcxLDEzICszMzc2LDEzIEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCiAgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDIHwKICAgICAgICAgUHlfVFBGTEFHU19CQVNFVFlQRSwgICAgICAgICAgICAvKiB0cF9mbGFncyAqLwotICAgIHBlcm11dGF0aW9uc19kb2MsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCi0gICAgKHRyYXZlcnNlcHJvYylwZXJtdXRhdGlvbnNfdHJhdmVyc2UsICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIHBlcm11dGF0aW9uc19kb2MsICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgICh0cmF2ZXJzZXByb2MpcGVybXV0YXRpb25zX3RyYXZlcnNlLC8qIHRwX3RyYXZlcnNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwotICAgIChpdGVybmV4dGZ1bmMpcGVybXV0YXRpb25zX25leHQsICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICAoaXRlcm5leHRmdW5jKXBlcm11dGF0aW9uc19uZXh0LCAgICAvKiB0cF9pdGVybmV4dCAqLwogICAgIHBlcm11YXRpb25zX21ldGhvZHMsICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCkBAIC0zMzg4LDExICszMzkzLDExIEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLwotICAgIHBlcm11dGF0aW9uc19uZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCisgICAgcGVybXV0YXRpb25zX25ldywgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCiAgICAgUHlPYmplY3RfR0NfRGVsLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLwogfTsKIAotLyogYWNjdW11bGF0ZSBvYmplY3QgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogYWNjdW11bGF0ZSBvYmplY3QgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECkBAIC0zNDU5LDkgKzM0NjQsOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGFjY3VtdWxhdGVfbmV4dChhY2N1bXVsYXRlb2JqZWN0ICpseikKIHsKLSAgICBQeU9iamVjdCAqdmFsLCAqb2xkdG90YWwsICpuZXd0b3RhbDsKKyAgICBQeU9iamVjdCAqdmFsLCAqbmV3dG90YWw7CiAKLSAgICB2YWwgPSBQeUl0ZXJfTmV4dChsei0+aXQpOworICAgIHZhbCA9ICgqUHlfVFlQRShsei0+aXQpLT50cF9pdGVybmV4dCkobHotPml0KTsKICAgICBpZiAodmFsID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC0zNDc5LDExICszNDg0LDggQEAKICAgICBpZiAobmV3dG90YWwgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBvbGR0b3RhbCA9IGx6LT50b3RhbDsKLSAgICBsei0+dG90YWwgPSBuZXd0b3RhbDsKLSAgICBQeV9ERUNSRUYob2xkdG90YWwpOwotCiAgICAgUHlfSU5DUkVGKG5ld3RvdGFsKTsKKyAgICBQeV9TRVRSRUYobHotPnRvdGFsLCBuZXd0b3RhbCk7CiAgICAgcmV0dXJuIG5ld3RvdGFsOwogfQogCkBAIC0zNTEwLDcgKzM1MTIsNyBAQAogICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9PKU8iLCBQeV9UWVBFKGx6KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsei0+aXQsIGx6LT5iaW5vcD9sei0+Ymlub3A6UHlfTm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsei0+dG90YWw/bHotPnRvdGFsOlB5X05vbmUpOwotIH0KK30KIAogc3RhdGljIFB5T2JqZWN0ICoKIGFjY3VtdWxhdGVfc2V0c3RhdGUoYWNjdW11bGF0ZW9iamVjdCAqbHosIFB5T2JqZWN0ICpzdGF0ZSkKQEAgLTM2NzIsNyArMzY3NCw3IEBACiAKICAgICAgICAgb2sgPSBQeU9iamVjdF9Jc1RydWUoc2VsZWN0b3IpOwogICAgICAgICBQeV9ERUNSRUYoc2VsZWN0b3IpOwotICAgICAgICBpZiAob2sgPT0gMSkKKyAgICAgICAgaWYgKG9rID4gMCkKICAgICAgICAgICAgIHJldHVybiBkYXR1bTsKICAgICAgICAgUHlfREVDUkVGKGRhdHVtKTsKICAgICAgICAgaWYgKG9rIDwgMCkKQEAgLTM2ODUsNyArMzY4Nyw3IEBACiB7CiAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT08pIiwgUHlfVFlQRShseiksCiAgICAgICAgIGx6LT5kYXRhLCBsei0+c2VsZWN0b3JzKTsKLSAgICB9Cit9CiAKIHN0YXRpYyBQeU1ldGhvZERlZiBjb21wcmVzc19tZXRob2RzW10gPSB7CiAgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pY29tcHJlc3NfcmVkdWNlLCAgICAgIE1FVEhfTk9BUkdTLApAQCAtMzcwNCw0NCArMzcwNiw0NCBAQAogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQogICAgICJpdGVydG9vbHMuY29tcHJlc3MiLCAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KICAgICBzaXplb2YoY29tcHJlc3NvYmplY3QpLCAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCiAgICAgLyogbWV0aG9kcyAqLwogICAgIChkZXN0cnVjdG9yKWNvbXByZXNzX2RlYWxsb2MsICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCi0gICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLCAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KICAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfAotICAgICAgICBQeV9UUEZMQUdTX0JBU0VUWVBFLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KLSAgICBjb21wcmVzc19kb2MsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCi0gICAgKHRyYXZlcnNlcHJvYyljb21wcmVzc190cmF2ZXJzZSwgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwotICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgICAgIFB5X1RQRkxBR1NfQkFTRVRZUEUsICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICBjb21wcmVzc19kb2MsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAodHJhdmVyc2Vwcm9jKWNvbXByZXNzX3RyYXZlcnNlLCAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAoaXRlcm5leHRmdW5jKWNvbXByZXNzX25leHQsICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIGNvbXByZXNzX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KLSAgICBjb21wcmVzc19uZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCi0gICAgUHlPYmplY3RfR0NfRGVsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KKyAgICBjb21wcmVzc19tZXRob2RzLCAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIGNvbXByZXNzX25ldywgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworICAgIFB5T2JqZWN0X0dDX0RlbCwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KIH07CiAKIApAQCAtMzgyMiw4ICszODI0LDcgQEAKICAgICAgICAgICAgIG9rID0gUHlPYmplY3RfSXNUcnVlKGl0ZW0pOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgUHlPYmplY3QgKmdvb2Q7Ci0gICAgICAgICAgICBnb29kID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhsei0+ZnVuYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0sIE5VTEwpOworICAgICAgICAgICAgZ29vZCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MobHotPmZ1bmMsIGl0ZW0sIE5VTEwpOwogICAgICAgICAgICAgaWYgKGdvb2QgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTM4NDIsOSArMzg0Myw4IEBACiBzdGF0aWMgUHlPYmplY3QgKgogZmlsdGVyZmFsc2VfcmVkdWNlKGZpbHRlcmZhbHNlb2JqZWN0ICpseikKIHsKLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPTykiLCBQeV9UWVBFKGx6KSwKLSAgICAgICAgbHotPmZ1bmMsIGx6LT5pdCk7Ci0gICAgfQorICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9PKSIsIFB5X1RZUEUobHopLCBsei0+ZnVuYywgbHotPml0KTsKK30KIAogc3RhdGljIFB5TWV0aG9kRGVmIGZpbHRlcmZhbHNlX21ldGhvZHNbXSA9IHsKICAgICB7Il9fcmVkdWNlX18iLCAgICAgIChQeUNGdW5jdGlvbilmaWx0ZXJmYWxzZV9yZWR1Y2UsICAgICAgTUVUSF9OT0FSR1MsCkBAIC0zODY0LDcgKzM4NjQsNyBAQAogICAgIHNpemVvZihmaWx0ZXJmYWxzZW9iamVjdCksICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCiAgICAgLyogbWV0aG9kcyAqLwotICAgIChkZXN0cnVjdG9yKWZpbHRlcmZhbHNlX2RlYWxsb2MsICAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIChkZXN0cnVjdG9yKWZpbHRlcmZhbHNlX2RlYWxsb2MsICAgIC8qIHRwX2RlYWxsb2MgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCkBAIC0zODgyLDcgKzM4ODIsNyBAQAogICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQyB8CiAgICAgICAgIFB5X1RQRkxBR1NfQkFTRVRZUEUsICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KICAgICBmaWx0ZXJmYWxzZV9kb2MsICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KLSAgICAodHJhdmVyc2Vwcm9jKWZpbHRlcmZhbHNlX3RyYXZlcnNlLCAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgKHRyYXZlcnNlcHJvYylmaWx0ZXJmYWxzZV90cmF2ZXJzZSwgLyogdHBfdHJhdmVyc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KQEAgLTQxMzQsMTUgKzQxMzQsMTUgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwogICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQyB8Ci0gICAgICAgIFB5X1RQRkxBR1NfQkFTRVRZUEUsICAgICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgICAgICBQeV9UUEZMQUdTX0JBU0VUWVBFLCAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCiAgICAgY291bnRfZG9jLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCi0gICAgKHRyYXZlcnNlcHJvYyljb3VudF90cmF2ZXJzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAodHJhdmVyc2Vwcm9jKWNvdW50X3RyYXZlcnNlLCAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAoaXRlcm5leHRmdW5jKWNvdW50X25leHQsICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIGNvdW50X21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIGNvdW50X21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwpAQCAtNDMwOCw5ICs0MzA4LDcgQEAKICAgICBQeU9iamVjdF9HQ19EZWwsICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCiB9OwogCi0vKiB6aXBsb25nZXN0IG9iamVjdCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLSNpbmNsdWRlICJQeXRob24uaCIKKy8qIHppcGxvbmdlc3Qgb2JqZWN0ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKQEAgLTQzNDksNyArNDM0Nyw3IEBACiAgICAgaXR0dXBsZSA9IFB5VHVwbGVfTmV3KHR1cGxlc2l6ZSk7CiAgICAgaWYgKGl0dHVwbGUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZm9yIChpPTA7IGkgPCB0dXBsZXNpemU7ICsraSkgeworICAgIGZvciAoaT0wOyBpIDwgdHVwbGVzaXplOyBpKyspIHsKICAgICAgICAgUHlPYmplY3QgKml0ZW0gPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIGkpOwogICAgICAgICBQeU9iamVjdCAqaXQgPSBQeU9iamVjdF9HZXRJdGVyKGl0ZW0pOwogICAgICAgICBpZiAoaXQgPT0gTlVMTCkgewpAQCAtNDQ5MCw2ICs0NDg4LDcgQEAKICAgICAgKi8KICAgICBpbnQgaTsKICAgICBQeU9iamVjdCAqYXJncyA9IFB5VHVwbGVfTmV3KFB5VHVwbGVfR0VUX1NJWkUobHotPml0dHVwbGUpKTsKKwogICAgIGlmIChhcmdzID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGZvciAoaT0wOyBpPFB5VHVwbGVfR0VUX1NJWkUobHotPml0dHVwbGUpOyBpKyspIHsKQEAgLTQ1NDAsNyArNDUzOSw3IEBACiAgICAgc2l6ZW9mKHppcGxvbmdlc3RvYmplY3QpLCAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KICAgICAvKiBtZXRob2RzICovCi0gICAgKGRlc3RydWN0b3IpemlwX2xvbmdlc3RfZGVhbGxvYywgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgKGRlc3RydWN0b3IpemlwX2xvbmdlc3RfZGVhbGxvYywgICAgLyogdHBfZGVhbGxvYyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KQEAgLTQ1NTcsOCArNDU1Niw4IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCiAgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDIHwKICAgICAgICAgUHlfVFBGTEFHU19CQVNFVFlQRSwgICAgICAgICAgICAvKiB0cF9mbGFncyAqLwotICAgIHppcF9sb25nZXN0X2RvYywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCi0gICAgKHRyYXZlcnNlcHJvYyl6aXBfbG9uZ2VzdF90cmF2ZXJzZSwgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICB6aXBfbG9uZ2VzdF9kb2MsICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAodHJhdmVyc2Vwcm9jKXppcF9sb25nZXN0X3RyYXZlcnNlLCAvKiB0cF90cmF2ZXJzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwpAQCAtNDU3NCw3ICs0NTczLDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCi0gICAgemlwX2xvbmdlc3RfbmV3LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KKyAgICB6aXBfbG9uZ2VzdF9uZXcsICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KICAgICBQeU9iamVjdF9HQ19EZWwsICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCiB9OwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL21haW4uYyBiL01vZHVsZXMvbWFpbi5jCmluZGV4IGU0Yzk1NWUuLmQ3NWY2NGEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvbWFpbi5jCisrKyBiL01vZHVsZXMvbWFpbi5jCkBAIC00MiwxMSArNDIsMTEgQEAKICNkZWZpbmUgUFJPR1JBTV9PUFRTIEJBU0VfT1BUUwogCiAvKiBTaG9ydCB1c2FnZSBtZXNzYWdlICh3aXRoICVzIGZvciBhcmd2MCkgKi8KLXN0YXRpYyBjaGFyICp1c2FnZV9saW5lID0KK3N0YXRpYyBjb25zdCBjaGFyIHVzYWdlX2xpbmVbXSA9CiAidXNhZ2U6ICVscyBbb3B0aW9uXSAuLi4gWy1jIGNtZCB8IC1tIG1vZCB8IGZpbGUgfCAtXSBbYXJnXSAuLi5cbiI7CiAKIC8qIExvbmcgdXNhZ2UgbWVzc2FnZSwgc3BsaXQgaW50byBwYXJ0cyA8IDUxMiBieXRlcyAqLwotc3RhdGljIGNoYXIgKnVzYWdlXzEgPSAiXAorc3RhdGljIGNvbnN0IGNoYXIgdXNhZ2VfMVtdID0gIlwKIE9wdGlvbnMgYW5kIGFyZ3VtZW50cyAoYW5kIGNvcnJlc3BvbmRpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzKTpcblwKIC1iICAgICA6IGlzc3VlIHdhcm5pbmdzIGFib3V0IHN0cihieXRlc19pbnN0YW5jZSksIHN0cihieXRlYXJyYXlfaW5zdGFuY2UpXG5cCiAgICAgICAgICBhbmQgY29tcGFyaW5nIGJ5dGVzL2J5dGVhcnJheSB3aXRoIHN0ci4gKC1iYjogaXNzdWUgZXJyb3JzKVxuXApAQCAtNTYsNyArNTYsNyBAQAogLUUgICAgIDogaWdub3JlIFBZVEhPTiogZW52aXJvbm1lbnQgdmFyaWFibGVzIChzdWNoIGFzIFBZVEhPTlBBVEgpXG5cCiAtaCAgICAgOiBwcmludCB0aGlzIGhlbHAgbWVzc2FnZSBhbmQgZXhpdCAoYWxzbyAtLWhlbHApXG5cCiAiOwotc3RhdGljIGNoYXIgKnVzYWdlXzIgPSAiXAorc3RhdGljIGNvbnN0IGNoYXIgdXNhZ2VfMltdID0gIlwKIC1pICAgICA6IGluc3BlY3QgaW50ZXJhY3RpdmVseSBhZnRlciBydW5uaW5nIHNjcmlwdDsgZm9yY2VzIGEgcHJvbXB0IGV2ZW5cblwKICAgICAgICAgIGlmIHN0ZGluIGRvZXMgbm90IGFwcGVhciB0byBiZSBhIHRlcm1pbmFsOyBhbHNvIFBZVEhPTklOU1BFQ1Q9eFxuXAogLUkgICAgIDogaXNvbGF0ZSBQeXRob24gZnJvbSB0aGUgdXNlcidzIGVudmlyb25tZW50IChpbXBsaWVzIC1FIGFuZCAtcylcblwKQEAgLTY3LDE5ICs2NywyMCBAQAogLXMgICAgIDogZG9uJ3QgYWRkIHVzZXIgc2l0ZSBkaXJlY3RvcnkgdG8gc3lzLnBhdGg7IGFsc28gUFlUSE9OTk9VU0VSU0lURVxuXAogLVMgICAgIDogZG9uJ3QgaW1wbHkgJ2ltcG9ydCBzaXRlJyBvbiBpbml0aWFsaXphdGlvblxuXAogIjsKLXN0YXRpYyBjaGFyICp1c2FnZV8zID0gIlwKK3N0YXRpYyBjb25zdCBjaGFyIHVzYWdlXzNbXSA9ICJcCiAtdSAgICAgOiB1bmJ1ZmZlcmVkIGJpbmFyeSBzdGRvdXQgYW5kIHN0ZGVyciwgc3RkaW4gYWx3YXlzIGJ1ZmZlcmVkO1xuXAogICAgICAgICAgYWxzbyBQWVRIT05VTkJVRkZFUkVEPXhcblwKICAgICAgICAgIHNlZSBtYW4gcGFnZSBmb3IgZGV0YWlscyBvbiBpbnRlcm5hbCBidWZmZXJpbmcgcmVsYXRpbmcgdG8gJy11J1xuXAogLXYgICAgIDogdmVyYm9zZSAodHJhY2UgaW1wb3J0IHN0YXRlbWVudHMpOyBhbHNvIFBZVEhPTlZFUkJPU0U9eFxuXAogICAgICAgICAgY2FuIGJlIHN1cHBsaWVkIG11bHRpcGxlIHRpbWVzIHRvIGluY3JlYXNlIHZlcmJvc2l0eVxuXAogLVYgICAgIDogcHJpbnQgdGhlIFB5dGhvbiB2ZXJzaW9uIG51bWJlciBhbmQgZXhpdCAoYWxzbyAtLXZlcnNpb24pXG5cCisgICAgICAgICB3aGVuIGdpdmVuIHR3aWNlLCBwcmludCBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBidWlsZFxuXAogLVcgYXJnIDogd2FybmluZyBjb250cm9sOyBhcmcgaXMgYWN0aW9uOm1lc3NhZ2U6Y2F0ZWdvcnk6bW9kdWxlOmxpbmVub1xuXAogICAgICAgICAgYWxzbyBQWVRIT05XQVJOSU5HUz1hcmdcblwKIC14ICAgICA6IHNraXAgZmlyc3QgbGluZSBvZiBzb3VyY2UsIGFsbG93aW5nIHVzZSBvZiBub24tVW5peCBmb3JtcyBvZiAjIWNtZFxuXAogLVggb3B0IDogc2V0IGltcGxlbWVudGF0aW9uLXNwZWNpZmljIG9wdGlvblxuXAogIjsKLXN0YXRpYyBjaGFyICp1c2FnZV80ID0gIlwKK3N0YXRpYyBjb25zdCBjaGFyIHVzYWdlXzRbXSA9ICJcCiBmaWxlICAgOiBwcm9ncmFtIHJlYWQgZnJvbSBzY3JpcHQgZmlsZVxuXAogLSAgICAgIDogcHJvZ3JhbSByZWFkIGZyb20gc3RkaW4gKGRlZmF1bHQ7IGludGVyYWN0aXZlIG1vZGUgaWYgYSB0dHkpXG5cCiBhcmcgLi4uOiBhcmd1bWVudHMgcGFzc2VkIHRvIHByb2dyYW0gaW4gc3lzLmFyZ3ZbMTpdXG5cblwKQEAgLTg4LDIyICs4OSwyMyBAQAogUFlUSE9OUEFUSCAgIDogJyVsYyctc2VwYXJhdGVkIGxpc3Qgb2YgZGlyZWN0b3JpZXMgcHJlZml4ZWQgdG8gdGhlXG5cCiAgICAgICAgICAgICAgICBkZWZhdWx0IG1vZHVsZSBzZWFyY2ggcGF0aC4gIFRoZSByZXN1bHQgaXMgc3lzLnBhdGguXG5cCiAiOwotc3RhdGljIGNoYXIgKnVzYWdlXzUgPQorc3RhdGljIGNvbnN0IGNoYXIgdXNhZ2VfNVtdID0KICJQWVRIT05IT01FICAgOiBhbHRlcm5hdGUgPHByZWZpeD4gZGlyZWN0b3J5IChvciA8cHJlZml4PiVsYzxleGVjX3ByZWZpeD4pLlxuIgogIiAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IG1vZHVsZSBzZWFyY2ggcGF0aCB1c2VzICVzLlxuIgogIlBZVEhPTkNBU0VPSyA6IGlnbm9yZSBjYXNlIGluICdpbXBvcnQnIHN0YXRlbWVudHMgKFdpbmRvd3MpLlxuIgogIlBZVEhPTklPRU5DT0RJTkc6IEVuY29kaW5nWzplcnJvcnNdIHVzZWQgZm9yIHN0ZGluL3N0ZG91dC9zdGRlcnIuXG4iCi0iUFlUSE9ORkFVTFRIQU5ETEVSOiBkdW1wIHRoZSBQeXRob24gdHJhY2ViYWNrIG9uIGZhdGFsIGVycm9ycy5cblwKLSI7Ci1zdGF0aWMgY2hhciAqdXNhZ2VfNiA9ICJcCi1QWVRIT05IQVNIU0VFRDogaWYgdGhpcyB2YXJpYWJsZSBpcyBzZXQgdG8gJ3JhbmRvbScsIGEgcmFuZG9tIHZhbHVlIGlzIHVzZWRcblwKLSAgIHRvIHNlZWQgdGhlIGhhc2hlcyBvZiBzdHIsIGJ5dGVzIGFuZCBkYXRldGltZSBvYmplY3RzLiAgSXQgY2FuIGFsc28gYmVcblwKLSAgIHNldCB0byBhbiBpbnRlZ2VyIGluIHRoZSByYW5nZSBbMCw0Mjk0OTY3Mjk1XSB0byBnZXQgaGFzaCB2YWx1ZXMgd2l0aCBhXG5cCi0gICBwcmVkaWN0YWJsZSBzZWVkLlxuXAotIjsKKyJQWVRIT05GQVVMVEhBTkRMRVI6IGR1bXAgdGhlIFB5dGhvbiB0cmFjZWJhY2sgb24gZmF0YWwgZXJyb3JzLlxuIjsKK3N0YXRpYyBjb25zdCBjaGFyIHVzYWdlXzZbXSA9CisiUFlUSE9OSEFTSFNFRUQ6IGlmIHRoaXMgdmFyaWFibGUgaXMgc2V0IHRvICdyYW5kb20nLCBhIHJhbmRvbSB2YWx1ZSBpcyB1c2VkXG4iCisiICAgdG8gc2VlZCB0aGUgaGFzaGVzIG9mIHN0ciwgYnl0ZXMgYW5kIGRhdGV0aW1lIG9iamVjdHMuICBJdCBjYW4gYWxzbyBiZVxuIgorIiAgIHNldCB0byBhbiBpbnRlZ2VyIGluIHRoZSByYW5nZSBbMCw0Mjk0OTY3Mjk1XSB0byBnZXQgaGFzaCB2YWx1ZXMgd2l0aCBhXG4iCisiICAgcHJlZGljdGFibGUgc2VlZC5cbiIKKyJQWVRIT05NQUxMT0M6IHNldCB0aGUgUHl0aG9uIG1lbW9yeSBhbGxvY2F0b3JzIGFuZC9vciBpbnN0YWxsIGRlYnVnIGhvb2tzXG4iCisiICAgb24gUHl0aG9uIG1lbW9yeSBhbGxvY2F0b3JzLiBVc2UgUFlUSE9OTUFMTE9DPWRlYnVnIHRvIGluc3RhbGwgZGVidWdcbiIKKyIgICBob29rcy5cbiI7CiAKIHN0YXRpYyBpbnQKLXVzYWdlKGludCBleGl0Y29kZSwgd2NoYXJfdCogcHJvZ3JhbSkKK3VzYWdlKGludCBleGl0Y29kZSwgY29uc3Qgd2NoYXJfdCogcHJvZ3JhbSkKIHsKICAgICBGSUxFICpmID0gZXhpdGNvZGUgPyBzdGRlcnIgOiBzdGRvdXQ7CiAKQEAgLTM0MSw2ICszNDMsNyBAQAogICAgIGludCBoZWxwID0gMDsKICAgICBpbnQgdmVyc2lvbiA9IDA7CiAgICAgaW50IHNhd191bmJ1ZmZlcmVkX2ZsYWcgPSAwOworICAgIGNoYXIgKm9wdDsKICAgICBQeUNvbXBpbGVyRmxhZ3MgY2Y7CiAgICAgUHlPYmplY3QgKndhcm5pbmdfb3B0aW9uID0gTlVMTDsKICAgICBQeU9iamVjdCAqd2FybmluZ19vcHRpb25zID0gTlVMTDsKQEAgLTM2NSw2ICszNjgsMTMgQEAKICAgICAgICAgfQogICAgIH0KIAorICAgIG9wdCA9IFB5X0dFVEVOVigiUFlUSE9OTUFMTE9DIik7CisgICAgaWYgKF9QeU1lbV9TZXR1cEFsbG9jYXRvcnMob3B0KSA8IDApIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsCisgICAgICAgICAgICAgICAgIkVycm9yIGluIFBZVEhPTk1BTExPQzogdW5rbm93biBhbGxvY2F0b3IgXCIlc1wiIVxuIiwgb3B0KTsKKyAgICAgICAgZXhpdCgxKTsKKyAgICB9CisKICAgICBQeV9IYXNoUmFuZG9taXphdGlvbkZsYWcgPSAxOwogICAgIF9QeVJhbmRvbV9Jbml0KCk7CiAKQEAgLTQ3Myw3ICs0ODMsOCBAQAogICAgICAgICAgICAgd2FybmluZ19vcHRpb24gPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKF9QeU9TX29wdGFyZywgLTEpOwogICAgICAgICAgICAgaWYgKHdhcm5pbmdfb3B0aW9uID09IE5VTEwpCiAgICAgICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiZmFpbHVyZSBpbiBoYW5kbGluZyBvZiAtVyBhcmd1bWVudCIpOwotICAgICAgICAgICAgUHlMaXN0X0FwcGVuZCh3YXJuaW5nX29wdGlvbnMsIHdhcm5pbmdfb3B0aW9uKTsKKyAgICAgICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKHdhcm5pbmdfb3B0aW9ucywgd2FybmluZ19vcHRpb24pID09IC0xKQorICAgICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImZhaWx1cmUgaW4gaGFuZGxpbmcgb2YgLVcgYXJndW1lbnQiKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRih3YXJuaW5nX29wdGlvbik7CiAgICAgICAgICAgICBicmVhazsKIApAQCAtNTAyLDcgKzUxMyw3IEBACiAgICAgICAgIHJldHVybiB1c2FnZSgwLCBhcmd2WzBdKTsKIAogICAgIGlmICh2ZXJzaW9uKSB7Ci0gICAgICAgIHByaW50ZigiUHl0aG9uICVzXG4iLCBQWV9WRVJTSU9OKTsKKyAgICAgICAgcHJpbnRmKCJQeXRob24gJXNcbiIsIHZlcnNpb24gPj0gMiA/IFB5X0dldFZlcnNpb24oKSA6IFBZX1ZFUlNJT04pOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKQEAgLTY1NCw3ICs2NjUsNyBAQAogICAgICAgICAgICAgUHlfU2V0UHJvZ3JhbU5hbWUod2J1Zik7CiAKICAgICAgICAgICAgIC8qIERvbid0IGZyZWUgd2J1ZiwgdGhlIGFyZ3VtZW50IHRvIFB5X1NldFByb2dyYW1OYW1lCi0gICAgICAgICAgICAgKiBtdXN0IHJlbWFpbiB2YWxpZCB1bnRpbCB0aGUgUHlfRmluYWxpemUgaXMgY2FsbGVkLgorICAgICAgICAgICAgICogbXVzdCByZW1haW4gdmFsaWQgdW50aWwgUHlfRmluYWxpemVFeCBpcyBjYWxsZWQuCiAgICAgICAgICAgICAgKi8KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFB5X1NldFByb2dyYW1OYW1lKGFyZ3ZbMF0pOwpAQCAtNjkzLDcgKzcwNCw4IEBACiAgICAgUHlTeXNfU2V0QXJndihhcmdjLV9QeU9TX29wdGluZCwgYXJnditfUHlPU19vcHRpbmQpOwogCiAgICAgaWYgKChQeV9JbnNwZWN0RmxhZyB8fCAoY29tbWFuZCA9PSBOVUxMICYmIGZpbGVuYW1lID09IE5VTEwgJiYgbW9kdWxlID09IE5VTEwpKSAmJgotICAgICAgICBpc2F0dHkoZmlsZW5vKHN0ZGluKSkpIHsKKyAgICAgICAgaXNhdHR5KGZpbGVubyhzdGRpbikpICYmCisgICAgICAgICFQeV9Jc29sYXRlZEZsYWcpIHsKICAgICAgICAgUHlPYmplY3QgKnY7CiAgICAgICAgIHYgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoInJlYWRsaW5lIik7CiAgICAgICAgIGlmICh2ID09IE5VTEwpCkBAIC03ODUsNyArNzk3LDExIEBACiAgICAgICAgIHN0cyA9IFB5UnVuX0FueUZpbGVGbGFncyhzdGRpbiwgIjxzdGRpbj4iLCAmY2YpICE9IDA7CiAgICAgfQogCi0gICAgUHlfRmluYWxpemUoKTsKKyAgICBpZiAoUHlfRmluYWxpemVFeCgpIDwgMCkgeworICAgICAgICAvKiBWYWx1ZSB1bmxpa2VseSB0byBiZSBjb25mdXNlZCB3aXRoIGEgbm9uLWVycm9yIGV4aXQgc3RhdHVzIG9yCisgICAgICAgIG90aGVyIHNwZWNpYWwgbWVhbmluZyAqLworICAgICAgICBzdHMgPSAxMjA7CisgICAgfQogCiAjaWZkZWYgX19JTlNVUkVfXwogICAgIC8qIEluc3VyZSsrIGlzIGEgbWVtb3J5IGFuYWx5c2lzIHRvb2wgdGhhdCBhaWRzIGluIGRpc2NvdmVyaW5nCmRpZmYgLS1naXQgYS9Nb2R1bGVzL21hdGhtb2R1bGUuYyBiL01vZHVsZXMvbWF0aG1vZHVsZS5jCmluZGV4IGI5NDViZDYuLjk1ZWE0ZjcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvbWF0aG1vZHVsZS5jCisrKyBiL01vZHVsZXMvbWF0aG1vZHVsZS5jCkBAIC04NzUsNyArODc1LDcgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLW1hdGhfMihQeU9iamVjdCAqYXJncywgZG91YmxlICgqZnVuYykgKGRvdWJsZSwgZG91YmxlKSwgY2hhciAqZnVuY25hbWUpCittYXRoXzIoUHlPYmplY3QgKmFyZ3MsIGRvdWJsZSAoKmZ1bmMpIChkb3VibGUsIGRvdWJsZSksIGNvbnN0IGNoYXIgKmZ1bmNuYW1lKQogewogICAgIFB5T2JqZWN0ICpveCwgKm95OwogICAgIGRvdWJsZSB4LCB5LCByOwpAQCAtMTY3Miw3ICsxNjcyLDcgQEAKICAgIGluIHRoYXQgaW50IGlzIGxhcmdlciB0aGFuIFBZX1NTSVpFX1RfTUFYLiAqLwogCiBzdGF0aWMgUHlPYmplY3QqCi1sb2doZWxwZXIoUHlPYmplY3QqIGFyZywgZG91YmxlICgqZnVuYykoZG91YmxlKSwgY2hhciAqZnVuY25hbWUpCitsb2doZWxwZXIoUHlPYmplY3QqIGFyZywgZG91YmxlICgqZnVuYykoZG91YmxlKSwgY29uc3QgY2hhciAqZnVuY25hbWUpCiB7CiAgICAgLyogSWYgaXQgaXMgaW50LCBkbyBpdCBvdXJzZWx2ZXMuICovCiAgICAgaWYgKFB5TG9uZ19DaGVjayhhcmcpKSB7CkBAIC0yMTQ0LDYgKzIxNDQsNyBAQAogCiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJwaSIsIFB5RmxvYXRfRnJvbURvdWJsZShQeV9NQVRIX1BJKSk7CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJlIiwgUHlGbG9hdF9Gcm9tRG91YmxlKFB5X01BVEhfRSkpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAidGF1IiwgUHlGbG9hdF9Gcm9tRG91YmxlKFB5X01BVEhfVEFVKSk7ICAvKiAycGkgKi8KICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgImluZiIsIFB5RmxvYXRfRnJvbURvdWJsZShtX2luZigpKSk7CiAjaWYgIWRlZmluZWQoUFlfTk9fU0hPUlRfRkxPQVRfUkVQUikgfHwgZGVmaW5lZChQeV9OQU4pCiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJuYW4iLCBQeUZsb2F0X0Zyb21Eb3VibGUobV9uYW4oKSkpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9tZDVtb2R1bGUuYyBiL01vZHVsZXMvbWQ1bW9kdWxlLmMKaW5kZXggZjk0YWNjNy4uMDRiYzA2ZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9tZDVtb2R1bGUuYworKysgYi9Nb2R1bGVzL21kNW1vZHVsZS5jCkBAIC0zMCw3ICszMCw3IEBACiAKICNpZiBTSVpFT0ZfSU5UID09IDQKIHR5cGVkZWYgdW5zaWduZWQgaW50IE1ENV9JTlQzMjsgLyogMzItYml0IGludGVnZXIgKi8KLXR5cGVkZWYgUFlfTE9OR19MT05HIE1ENV9JTlQ2NDsgLyogNjQtYml0IGludGVnZXIgKi8KK3R5cGVkZWYgbG9uZyBsb25nIE1ENV9JTlQ2NDsgLyogNjQtYml0IGludGVnZXIgKi8KICNlbHNlCiAvKiBub3QgZGVmaW5lZC4gY29tcGlsYXRpb24gd2lsbCBkaWUuICovCiAjZW5kaWYKZGlmZiAtLWdpdCBhL01vZHVsZXMvbW1hcG1vZHVsZS5jIGIvTW9kdWxlcy9tbWFwbW9kdWxlLmMKaW5kZXggNGViOTI3NC4uNWYxNjE1ZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9tbWFwbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9tbWFwbW9kdWxlLmMKQEAgLTkzLDcgKzkzLDcgQEAKICAgICBQeV9zc2l6ZV90ICBzaXplOwogICAgIFB5X3NzaXplX3QgIHBvczsgICAgLyogcmVsYXRpdmUgdG8gb2Zmc2V0ICovCiAjaWZkZWYgTVNfV0lORE9XUwotICAgIFBZX0xPTkdfTE9ORyBvZmZzZXQ7CisgICAgbG9uZyBsb25nIG9mZnNldDsKICNlbHNlCiAgICAgb2ZmX3QgICAgICAgb2Zmc2V0OwogI2VuZGlmCkBAIC0zOTcsOCArMzk3LDcgQEAKICAgICBtZW1jcHkoJnNlbGYtPmRhdGFbc2VsZi0+cG9zXSwgZGF0YS5idWYsIGRhdGEubGVuKTsKICAgICBzZWxmLT5wb3MgKz0gZGF0YS5sZW47CiAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QoZGF0YS5sZW4pOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNDM0LDcgKzQzMyw3IEBACiAjaWZkZWYgTVNfV0lORE9XUwogICAgIGlmIChzZWxmLT5maWxlX2hhbmRsZSAhPSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewogICAgICAgICBEV09SRCBsb3csaGlnaDsKLSAgICAgICAgUFlfTE9OR19MT05HIHNpemU7CisgICAgICAgIGxvbmcgbG9uZyBzaXplOwogICAgICAgICBsb3cgPSBHZXRGaWxlU2l6ZShzZWxmLT5maWxlX2hhbmRsZSwgJmhpZ2gpOwogICAgICAgICBpZiAobG93ID09IElOVkFMSURfRklMRV9TSVpFKSB7CiAgICAgICAgICAgICAvKiBJdCBtaWdodCBiZSB0aGF0IHRoZSBmdW5jdGlvbiBhcHBlYXJzIHRvIGhhdmUgZmFpbGVkLApAQCAtNDQ1LDcgKzQ0NCw3IEBACiAgICAgICAgIH0KICAgICAgICAgaWYgKCFoaWdoICYmIGxvdyA8IExPTkdfTUFYKQogICAgICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZylsb3cpOwotICAgICAgICBzaXplID0gKCgoUFlfTE9OR19MT05HKWhpZ2gpPDwzMikgKyBsb3c7CisgICAgICAgIHNpemUgPSAoKChsb25nIGxvbmcpaGlnaCk8PDMyKSArIGxvdzsKICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoc2l6ZSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChzZWxmLT5zaXplKTsKQEAgLTEyMjcsNyArMTIyNiw3IEBACiAKIC8qIEEgbm90ZSBvbiBzaXplcyBhbmQgb2Zmc2V0czogd2hpbGUgdGhlIGFjdHVhbCBtYXAgc2l6ZSBtdXN0IGhvbGQgaW4gYQogICAgUHlfc3NpemVfdCwgYm90aCB0aGUgdG90YWwgZmlsZSBzaXplIGFuZCB0aGUgc3RhcnQgb2Zmc2V0IGNhbiBiZSBsb25nZXIKLSAgIHRoYW4gYSBQeV9zc2l6ZV90LCBzbyB3ZSB1c2UgUFlfTE9OR19MT05HIHdoaWNoIGlzIGFsd2F5cyA2NC1iaXQuCisgICB0aGFuIGEgUHlfc3NpemVfdCwgc28gd2UgdXNlIGxvbmcgbG9uZyB3aGljaCBpcyBhbHdheXMgNjQtYml0LgogKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTEyMzUsNyArMTIzNCw3IEBACiB7CiAgICAgbW1hcF9vYmplY3QgKm1fb2JqOwogICAgIFB5X3NzaXplX3QgbWFwX3NpemU7Ci0gICAgUFlfTE9OR19MT05HIG9mZnNldCA9IDAsIHNpemU7CisgICAgbG9uZyBsb25nIG9mZnNldCA9IDAsIHNpemU7CiAgICAgRFdPUkQgb2ZmX2hpOyAgICAgICAvKiB1cHBlciAzMiBiaXRzIG9mIG9mZnNldCAqLwogICAgIERXT1JEIG9mZl9sbzsgICAgICAgLyogbG93ZXIgMzIgYml0cyBvZiBvZmZzZXQgKi8KICAgICBEV09SRCBzaXplX2hpOyAgICAgIC8qIHVwcGVyIDMyIGJpdHMgb2Ygc2l6ZSAqLwpAQCAtMTI5NiwxMCArMTI5NSw2IEBACiAgICAgICovCiAgICAgaWYgKGZpbGVubyAhPSAtMSAmJiBmaWxlbm8gIT0gMCkgewogICAgICAgICAvKiBFbnN1cmUgdGhhdCBmaWxlbm8gaXMgd2l0aGluIHRoZSBDUlQncyB2YWxpZCByYW5nZSAqLwotICAgICAgICBpZiAoIV9QeVZlcmlmeV9mZChmaWxlbm8pKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQogICAgICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICiAgICAgICAgIGZoID0gKEhBTkRMRSlfZ2V0X29zZmhhbmRsZShmaWxlbm8pOwogICAgICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSApAQCAtMTM0OSw3ICsxMzQ0LDcgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoZHdFcnIpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBzaXplID0gKCgoUFlfTE9OR19MT05HKSBoaWdoKSA8PCAzMikgKyBsb3c7CisgICAgICAgICAgICBzaXplID0gKCgobG9uZyBsb25nKSBoaWdoKSA8PCAzMikgKyBsb3c7CiAgICAgICAgICAgICBpZiAoc2l6ZSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgbW1hcCBhbiBlbXB0eSBmaWxlIik7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL25pc21vZHVsZS5jIGIvTW9kdWxlcy9uaXNtb2R1bGUuYwppbmRleCA2NGViNWRiLi5iNmE4NTVjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL25pc21vZHVsZS5jCisrKyBiL01vZHVsZXMvbmlzbW9kdWxlLmMKQEAgLTc2LDExICs3Niw3IEBACiAKICAgICAqcGZpeCA9IDA7CiAgICAgZm9yIChpPTA7IGFsaWFzZXNbaV0uYWxpYXMgIT0gMEw7IGkrKykgewotICAgICAgICBpZiAoIXN0cmNtcCAoYWxpYXNlc1tpXS5hbGlhcywgbWFwKSkgewotICAgICAgICAgICAgKnBmaXggPSBhbGlhc2VzW2ldLmZpeDsKLSAgICAgICAgICAgIHJldHVybiBhbGlhc2VzW2ldLm1hcDsKLSAgICAgICAgfQotICAgICAgICBpZiAoIXN0cmNtcCAoYWxpYXNlc1tpXS5tYXAsIG1hcCkpIHsKKyAgICAgICAgaWYgKCFzdHJjbXAgKGFsaWFzZXNbaV0uYWxpYXMsIG1hcCkgfHwgIXN0cmNtcCAoYWxpYXNlc1tpXS5tYXAsIG1hcCkpIHsKICAgICAgICAgICAgICpwZml4ID0gYWxpYXNlc1tpXS5maXg7CiAgICAgICAgICAgICByZXR1cm4gYWxpYXNlc1tpXS5tYXA7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvb3NzYXVkaW9kZXYuYyBiL01vZHVsZXMvb3NzYXVkaW9kZXYuYwppbmRleCA1NDIzMzA4Li41ZjA1MDVjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL29zc2F1ZGlvZGV2LmMKKysrIGIvTW9kdWxlcy9vc3NhdWRpb2Rldi5jCkBAIC0zMSw5ICszMSwxMyBAQAogI2VuZGlmCiAKICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyNpZmRlZiBfX0FORFJPSURfXworI2luY2x1ZGUgPGxpbnV4L3NvdW5kY2FyZC5oPgorI2Vsc2UKICNpbmNsdWRlIDxzeXMvc291bmRjYXJkLmg+CisjZW5kaWYKIAotI2lmIGRlZmluZWQobGludXgpCisjaWZkZWYgX19saW51eF9fCiAKICNpZm5kZWYgSEFWRV9TVERJTlRfSAogdHlwZWRlZiB1bnNpZ25lZCBsb25nIHVpbnQzMl90OwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9vdmVybGFwcGVkLmMgYi9Nb2R1bGVzL292ZXJsYXBwZWQuYwppbmRleCBmODVlNWJjLi4wYWE4NjU3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL292ZXJsYXBwZWQuYworKysgYi9Nb2R1bGVzL292ZXJsYXBwZWQuYwpAQCAtOTczLDI4ICs5NzMsMjggQEAKIHN0YXRpYyBpbnQKIHBhcnNlX2FkZHJlc3MoUHlPYmplY3QgKm9iaiwgU09DS0FERFIgKkFkZHJlc3MsIGludCBMZW5ndGgpCiB7Ci0gICAgY2hhciAqSG9zdDsKKyAgICBQeV9VTklDT0RFICpIb3N0OwogICAgIHVuc2lnbmVkIHNob3J0IFBvcnQ7CiAgICAgdW5zaWduZWQgbG9uZyBGbG93SW5mbzsKICAgICB1bnNpZ25lZCBsb25nIFNjb3BlSWQ7CiAKICAgICBtZW1zZXQoQWRkcmVzcywgMCwgTGVuZ3RoKTsKIAotICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKG9iaiwgInNIIiwgJkhvc3QsICZQb3J0KSkKKyAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShvYmosICJ1SCIsICZIb3N0LCAmUG9ydCkpCiAgICAgewogICAgICAgICBBZGRyZXNzLT5zYV9mYW1pbHkgPSBBRl9JTkVUOwotICAgICAgICBpZiAoV1NBU3RyaW5nVG9BZGRyZXNzQShIb3N0LCBBRl9JTkVULCBOVUxMLCBBZGRyZXNzLCAmTGVuZ3RoKSA8IDApIHsKKyAgICAgICAgaWYgKFdTQVN0cmluZ1RvQWRkcmVzc1coSG9zdCwgQUZfSU5FVCwgTlVMTCwgQWRkcmVzcywgJkxlbmd0aCkgPCAwKSB7CiAgICAgICAgICAgICBTZXRGcm9tV2luZG93c0VycihXU0FHZXRMYXN0RXJyb3IoKSk7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICAgICAgKChTT0NLQUREUl9JTiopQWRkcmVzcyktPnNpbl9wb3J0ID0gaHRvbnMoUG9ydCk7CiAgICAgICAgIHJldHVybiBMZW5ndGg7CiAgICAgfQotICAgIGVsc2UgaWYgKFB5QXJnX1BhcnNlVHVwbGUob2JqLCAic0hrayIsICZIb3N0LCAmUG9ydCwgJkZsb3dJbmZvLCAmU2NvcGVJZCkpCisgICAgZWxzZSBpZiAoUHlBcmdfUGFyc2VUdXBsZShvYmosICJ1SGtrIiwgJkhvc3QsICZQb3J0LCAmRmxvd0luZm8sICZTY29wZUlkKSkKICAgICB7CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIEFkZHJlc3MtPnNhX2ZhbWlseSA9IEFGX0lORVQ2OwotICAgICAgICBpZiAoV1NBU3RyaW5nVG9BZGRyZXNzQShIb3N0LCBBRl9JTkVUNiwgTlVMTCwgQWRkcmVzcywgJkxlbmd0aCkgPCAwKSB7CisgICAgICAgIGlmIChXU0FTdHJpbmdUb0FkZHJlc3NXKEhvc3QsIEFGX0lORVQ2LCBOVUxMLCBBZGRyZXNzLCAmTGVuZ3RoKSA8IDApIHsKICAgICAgICAgICAgIFNldEZyb21XaW5kb3dzRXJyKFdTQUdldExhc3RFcnJvcigpKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9wYXJzZXJtb2R1bGUuYyBiL01vZHVsZXMvcGFyc2VybW9kdWxlLmMKaW5kZXggNjQ3MWI4ZS4uYjI1NjY5NTEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvcGFyc2VybW9kdWxlLmMKKysrIGIvTW9kdWxlcy9wYXJzZXJtb2R1bGUuYwpAQCAtNTMsNyArNTMsNyBAQAogLyogIFN0cmluZyBjb25zdGFudHMgdXNlZCB0byBpbml0aWFsaXplIG1vZHVsZSBhdHRyaWJ1dGVzLgogICoKICAqLwotc3RhdGljIGNoYXIgcGFyc2VyX2NvcHlyaWdodF9zdHJpbmdbXSA9CitzdGF0aWMgY29uc3QgY2hhciBwYXJzZXJfY29weXJpZ2h0X3N0cmluZ1tdID0KICJDb3B5cmlnaHQgMTk5NS0xOTk2IGJ5IFZpcmdpbmlhIFBvbHl0ZWNobmljIEluc3RpdHV0ZSAmIFN0YXRlXG5cCiBVbml2ZXJzaXR5LCBCbGFja3NidXJnLCBWaXJnaW5pYSwgVVNBLCBhbmQgRnJlZCBMLiBEcmFrZSwgSnIuLCBSZXN0b24sXG5cCiBWaXJnaW5pYSwgVVNBLiAgUG9ydGlvbnMgY29weXJpZ2h0IDE5OTEtMTk5NSBieSBTdGljaHRpbmcgTWF0aGVtYXRpc2NoXG5cCkBAIC02Myw3ICs2Myw3IEBACiBQeURvY19TVFJWQVIocGFyc2VyX2RvY19zdHJpbmcsCiAiVGhpcyBpcyBhbiBpbnRlcmZhY2UgdG8gUHl0aG9uJ3MgaW50ZXJuYWwgcGFyc2VyLiIpOwogCi1zdGF0aWMgY2hhciBwYXJzZXJfdmVyc2lvbl9zdHJpbmdbXSA9ICIwLjUiOworc3RhdGljIGNvbnN0IGNoYXIgcGFyc2VyX3ZlcnNpb25fc3RyaW5nW10gPSAiMC41IjsKIAogCiB0eXBlZGVmIFB5T2JqZWN0KiAoKlNlcU1ha2VyKSAoUHlfc3NpemVfdCBsZW5ndGgpOwpAQCAtNTc4LDEzICs1NzgsMTMgQEAKIH0KIAogCi0vKiAgZXJyX3N0cmluZyhjaGFyKiBtZXNzYWdlKQorLyogIGVycl9zdHJpbmcoY29uc3QgY2hhciogbWVzc2FnZSkKICAqCiAgKiAgU2V0cyB0aGUgZXJyb3Igc3RyaW5nIGZvciBhbiBleGNlcHRpb24gb2YgdHlwZSBQYXJzZXJFcnJvci4KICAqCiAgKi8KIHN0YXRpYyB2b2lkCi1lcnJfc3RyaW5nKGNoYXIgKm1lc3NhZ2UpCitlcnJfc3RyaW5nKGNvbnN0IGNoYXIgKm1lc3NhZ2UpCiB7CiAgICAgUHlFcnJfU2V0U3RyaW5nKHBhcnNlcl9lcnJvciwgbWVzc2FnZSk7CiB9CkBAIC01OTcsNyArNTk3LDcgQEAKICAqCiAgKi8KIHN0YXRpYyBQeU9iamVjdCoKLXBhcnNlcl9kb19wYXJzZShQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3LCBjaGFyICphcmdzcGVjLCBpbnQgdHlwZSkKK3BhcnNlcl9kb19wYXJzZShQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3LCBjb25zdCBjaGFyICphcmdzcGVjLCBpbnQgdHlwZSkKIHsKICAgICBjaGFyKiAgICAgc3RyaW5nID0gMDsKICAgICBQeU9iamVjdCogcmVzICAgID0gMDsKQEAgLTY3MCw5ICs2NzAsNzUgQEAKIAogCiBzdGF0aWMgbm9kZSogYnVpbGRfbm9kZV90cmVlKFB5T2JqZWN0ICp0dXBsZSk7Ci1zdGF0aWMgaW50ICAgdmFsaWRhdGVfZXhwcl90cmVlKG5vZGUgKnRyZWUpOwotc3RhdGljIGludCAgIHZhbGlkYXRlX2ZpbGVfaW5wdXQobm9kZSAqdHJlZSk7Ci1zdGF0aWMgaW50ICAgdmFsaWRhdGVfZW5jb2RpbmdfZGVjbChub2RlICp0cmVlKTsKKworc3RhdGljIGludAordmFsaWRhdGVfbm9kZShub2RlICp0cmVlKQoreworICAgIGludCB0eXBlID0gVFlQRSh0cmVlKTsKKyAgICBpbnQgbmNoID0gTkNIKHRyZWUpOworICAgIGRmYSAqbnRfZGZhOworICAgIHN0YXRlICpkZmFfc3RhdGU7CisgICAgaW50IHBvcywgYXJjOworCisgICAgYXNzZXJ0KElTTk9OVEVSTUlOQUwodHlwZSkpOworICAgIHR5cGUgLT0gTlRfT0ZGU0VUOworICAgIGlmICh0eXBlID49IF9QeVBhcnNlcl9HcmFtbWFyLmdfbmRmYXMpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KHBhcnNlcl9lcnJvciwgIlVucmVjb2duaXplZCBub2RlIHR5cGUgJWQuIiwgVFlQRSh0cmVlKSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBudF9kZmEgPSAmX1B5UGFyc2VyX0dyYW1tYXIuZ19kZmFbdHlwZV07CisgICAgUkVRKHRyZWUsIG50X2RmYS0+ZF90eXBlKTsKKworICAgIC8qIFJ1biB0aGUgREZBIGZvciB0aGlzIG5vbnRlcm1pbmFsLiAqLworICAgIGRmYV9zdGF0ZSA9ICZudF9kZmEtPmRfc3RhdGVbbnRfZGZhLT5kX2luaXRpYWxdOworICAgIGZvciAocG9zID0gMDsgcG9zIDwgbmNoOyArK3BvcykgeworICAgICAgICBub2RlICpjaCA9IENISUxEKHRyZWUsIHBvcyk7CisgICAgICAgIGludCBjaF90eXBlID0gVFlQRShjaCk7CisgICAgICAgIGZvciAoYXJjID0gMDsgYXJjIDwgZGZhX3N0YXRlLT5zX25hcmNzOyArK2FyYykgeworICAgICAgICAgICAgc2hvcnQgYV9sYWJlbCA9IGRmYV9zdGF0ZS0+c19hcmNbYXJjXS5hX2xibDsKKyAgICAgICAgICAgIGFzc2VydChhX2xhYmVsIDwgX1B5UGFyc2VyX0dyYW1tYXIuZ19sbC5sbF9ubGFiZWxzKTsKKyAgICAgICAgICAgIGlmIChfUHlQYXJzZXJfR3JhbW1hci5nX2xsLmxsX2xhYmVsW2FfbGFiZWxdLmxiX3R5cGUgPT0gY2hfdHlwZSkgeworICAgICAJICAgICAgICAvKiBUaGUgY2hpbGQgaXMgYWNjZXB0YWJsZTsgaWYgbm9uLXRlcm1pbmFsLCB2YWxpZGF0ZSBpdCByZWN1cnNpdmVseS4gKi8KKyAgICAgICAgICAgICAgICBpZiAoSVNOT05URVJNSU5BTChjaF90eXBlKSAmJiAhdmFsaWRhdGVfbm9kZShjaCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgICAgICAgICAgLyogVXBkYXRlIHRoZSBzdGF0ZSwgYW5kIG1vdmUgb24gdG8gdGhlIG5leHQgY2hpbGQuICovCisgICAgICAgICAgICAgICAgZGZhX3N0YXRlID0gJm50X2RmYS0+ZF9zdGF0ZVtkZmFfc3RhdGUtPnNfYXJjW2FyY10uYV9hcnJvd107CisgICAgICAgICAgICAgICAgZ290byBhcmNfZm91bmQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgLyogV2hhdCB3b3VsZCB0aGlzIHN0YXRlIGhhdmUgYWNjZXB0ZWQ/ICovCisgICAgICAgIHsKKyAgICAgICAgICAgIHNob3J0IGFfbGFiZWwgPSBkZmFfc3RhdGUtPnNfYXJjLT5hX2xibDsKKyAgICAgICAgICAgIGludCBuZXh0X3R5cGU7CisgICAgICAgICAgICBpZiAoIWFfbGFiZWwpIC8qIFdvdWxkbid0IGFjY2VwdCBhbnkgbW9yZSBjaGlsZHJlbiAqLworICAgICAgICAgICAgICAgIGdvdG8gaWxsZWdhbF9udW1fY2hpbGRyZW47CisKKyAgICAgICAgICAgIG5leHRfdHlwZSA9IF9QeVBhcnNlcl9HcmFtbWFyLmdfbGwubGxfbGFiZWxbYV9sYWJlbF0ubGJfdHlwZTsKKyAgICAgICAgICAgIGlmIChJU05PTlRFUk1JTkFMKG5leHRfdHlwZSkpCisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KHBhcnNlcl9lcnJvciwgIkV4cGVjdGVkIG5vZGUgdHlwZSAlZCwgZ290ICVkLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRfdHlwZSwgY2hfdHlwZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KHBhcnNlcl9lcnJvciwgIklsbGVnYWwgdGVybWluYWw6IGV4cGVjdGVkICVzLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeVBhcnNlcl9Ub2tlbk5hbWVzW25leHRfdHlwZV0pOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworYXJjX2ZvdW5kOgorICAgICAgICBjb250aW51ZTsKKyAgICB9CisgICAgLyogQXJlIHdlIGluIGEgZmluYWwgc3RhdGU/IElmIHNvLCByZXR1cm4gMSBmb3Igc3VjY2Vzc2Z1bCB2YWxpZGF0aW9uLiAqLworICAgIGZvciAoYXJjID0gMDsgYXJjIDwgZGZhX3N0YXRlLT5zX25hcmNzOyArK2FyYykgeworICAgICAgICBpZiAoIWRmYV9zdGF0ZS0+c19hcmNbYXJjXS5hX2xibCkgeworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICB9CisKK2lsbGVnYWxfbnVtX2NoaWxkcmVuOgorICAgIFB5RXJyX0Zvcm1hdChwYXJzZXJfZXJyb3IsCisgICAgICAgICAgICAgICAgICJJbGxlZ2FsIG51bWJlciBvZiBjaGlsZHJlbiBmb3IgJXMgbm9kZS4iLCBudF9kZmEtPmRfbmFtZSk7CisgICAgcmV0dXJuIDA7Cit9CiAKIC8qICBQeU9iamVjdCogcGFyc2VyX3R1cGxlMnN0KFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKICAqCkBAIC02ODEsNyArNzQ3LDcgQEAKICAqICB0dXBsZSBjYW4gYmUgdmFsaWRhdGVkLiAgSXQgZG9lcyB0aGlzIGJ5IGNoZWNraW5nIHRoZSBmaXJzdCBjb2RlIG9mIHRoZQogICogIHR1cGxlLCBhbmQsIGlmIGFjY2VwdGFibGUsIGJ1aWxkcyB0aGUgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24uICBJZiB0aGlzCiAgKiAgc3RlcCBzdWNjZWVkcywgdGhlIGludGVybmFsIHJlcHJlc2VudGF0aW9uIGlzIHZhbGlkYXRlZCBhcyBmdWxseSBhcwotICogIHBvc3NpYmxlIHdpdGggdGhlIHZhcmlvdXMgdmFsaWRhdGVfKigpIHJvdXRpbmVzIGRlZmluZWQgYmVsb3cuCisgKiAgcG9zc2libGUgd2l0aCB0aGUgcmVjdXJzaXZlIHZhbGlkYXRlX25vZGUoKSByb3V0aW5lIGRlZmluZWQgYWJvdmUuCiAgKgogICogIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjaGFuZ2VkIGlmIHN1cHBvcnQgaXMgdG8gYmUgYWRkZWQgZm9yIFB5U1RfRlJBR01FTlQKICAqICBTVCBvYmplY3RzLgpAQCAtNzEwLDMzICs3NzYsMzUgQEAKICAgICAgKi8KICAgICB0cmVlID0gYnVpbGRfbm9kZV90cmVlKHR1cGxlKTsKICAgICBpZiAodHJlZSAhPSAwKSB7Ci0gICAgICAgIGludCBzdGFydF9zeW0gPSBUWVBFKHRyZWUpOwotICAgICAgICBpZiAoc3RhcnRfc3ltID09IGV2YWxfaW5wdXQpIHsKKyAgICAgICAgbm9kZSAqdmFsaWRhdGlvbl9yb290ID0gdHJlZTsKKyAgICAgICAgaW50IHRyZWVfdHlwZSA9IDA7CisgICAgICAgIHN3aXRjaCAoVFlQRSh0cmVlKSkgeworICAgICAgICBjYXNlIGV2YWxfaW5wdXQ6CiAgICAgICAgICAgICAvKiAgTWlnaHQgYmUgYW4gZXZhbCBmb3JtLiAgKi8KLSAgICAgICAgICAgIGlmICh2YWxpZGF0ZV9leHByX3RyZWUodHJlZSkpCi0gICAgICAgICAgICAgICAgc3QgPSBwYXJzZXJfbmV3c3RvYmplY3QodHJlZSwgUHlTVF9FWFBSKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBQeU5vZGVfRnJlZSh0cmVlKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChzdGFydF9zeW0gPT0gZmlsZV9pbnB1dCkgewotICAgICAgICAgICAgLyogIFRoaXMgbG9va3MgbGlrZSBhbiBleGVjIGZvcm0gc28gZmFyLiAgKi8KLSAgICAgICAgICAgIGlmICh2YWxpZGF0ZV9maWxlX2lucHV0KHRyZWUpKQotICAgICAgICAgICAgICAgIHN0ID0gcGFyc2VyX25ld3N0b2JqZWN0KHRyZWUsIFB5U1RfU1VJVEUpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIFB5Tm9kZV9GcmVlKHRyZWUpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKHN0YXJ0X3N5bSA9PSBlbmNvZGluZ19kZWNsKSB7CisgICAgICAgICAgICB0cmVlX3R5cGUgPSBQeVNUX0VYUFI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBlbmNvZGluZ19kZWNsOgogICAgICAgICAgICAgLyogVGhpcyBsb29rcyBsaWtlIGFuIGVuY29kaW5nX2RlY2wgc28gZmFyLiAqLwotICAgICAgICAgICAgaWYgKHZhbGlkYXRlX2VuY29kaW5nX2RlY2wodHJlZSkpCi0gICAgICAgICAgICAgICAgc3QgPSBwYXJzZXJfbmV3c3RvYmplY3QodHJlZSwgUHlTVF9TVUlURSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgUHlOb2RlX0ZyZWUodHJlZSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoTkNIKHRyZWUpICE9IDEpCisgICAgICAgICAgICAgICAgZXJyX3N0cmluZygiRXJyb3IgUGFyc2luZyBlbmNvZGluZ19kZWNsIik7CisgICAgICAgICAgICB2YWxpZGF0aW9uX3Jvb3QgPSBDSElMRCh0cmVlLCAwKTsKKyAgICAgICAgICAgIC8qIEZhbGwgdGhyb3VnaCAqLworICAgICAgICBjYXNlIGZpbGVfaW5wdXQ6CisgICAgICAgICAgICAvKiAgVGhpcyBsb29rcyBsaWtlIGFuIGV4ZWMgZm9ybSBzbyBmYXIuICAqLworCisgICAgICAgICAgICB0cmVlX3R5cGUgPSBQeVNUX1NVSVRFOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAvKiAgVGhpcyBpcyBhIGZyYWdtZW50LCBhdCBiZXN0LiAqLwogICAgICAgICAgICAgUHlOb2RlX0ZyZWUodHJlZSk7CiAgICAgICAgICAgICBlcnJfc3RyaW5nKCJwYXJzZSB0cmVlIGRvZXMgbm90IHVzZSBhIHZhbGlkIHN0YXJ0IHN5bWJvbCIpOworICAgICAgICAgICAgcmV0dXJuICgwKTsKICAgICAgICAgfQorCisgICAgICAgIGlmICh2YWxpZGF0ZV9ub2RlKHZhbGlkYXRpb25fcm9vdCkpCisgICAgICAgICAgICBzdCA9IHBhcnNlcl9uZXdzdG9iamVjdCh0cmVlLCB0cmVlX3R5cGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBQeU5vZGVfRnJlZSh0cmVlKTsKICAgICB9CiAgICAgLyogIE1ha2Ugc3VyZSB3ZSByYWlzZSBhbiBleGNlcHRpb24gb24gYWxsIGVycm9ycy4gIFdlIHNob3VsZCBuZXZlcgogICAgICAqICBnZXQgdGhpcywgYnV0IHdlJ2QgZG8gd2VsbCB0byBiZSBzdXJlIHNvbWV0aGluZyBpcyBkb25lLgpAQCAtODQ0LDcgKzkxMiw3IEBACiAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihvKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB0ZW1wX3N0ciA9IF9QeVVuaWNvZGVfQXNTdHJpbmdBbmRTaXplKHRlbXAsICZsZW4pOworICAgICAgICAgICAgdGVtcF9zdHIgPSBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZSh0ZW1wLCAmbGVuKTsKICAgICAgICAgICAgIGlmICh0ZW1wX3N0ciA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHRlbXApOwogICAgICAgICAgICAgICAgIFB5X1hERUNSRUYoZWxlbSk7CkBAIC05NDUsNyArMTAxMyw3IEBACiAgICAgICAgICAgICBpZiAocmVzICYmIGVuY29kaW5nKSB7CiAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdGVtcDsKLSAgICAgICAgICAgICAgICB0ZW1wID0gX1B5VW5pY29kZV9Bc1N0cmluZ0FuZFNpemUoZW5jb2RpbmcsICZsZW4pOworICAgICAgICAgICAgICAgIHRlbXAgPSBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZShlbmNvZGluZywgJmxlbik7CiAgICAgICAgICAgICAgICAgaWYgKHRlbXAgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGVuY29kaW5nKTsKQEAgLTk4MSwyNDMzICsxMDQ5LDYgQEAKIH0KIAogCi0vKgotICogIFZhbGlkYXRpb24gcm91dGluZXMgdXNlZCB3aXRoaW4gdGhlIHZhbGlkYXRpb24gc2VjdGlvbjoKLSAqLwotc3RhdGljIGludCB2YWxpZGF0ZV90ZXJtaW5hbChub2RlICp0ZXJtaW5hbCwgaW50IHR5cGUsIGNoYXIgKnN0cmluZyk7Ci0KLSNkZWZpbmUgdmFsaWRhdGVfYW1wZXJzYW5kKGNoKSAgdmFsaWRhdGVfdGVybWluYWwoY2gsICAgICAgQU1QRVIsICImIikKLSNkZWZpbmUgdmFsaWRhdGVfY2lyY3VtZmxleChjaCkgdmFsaWRhdGVfdGVybWluYWwoY2gsIENJUkNVTUZMRVgsICJeIikKLSNkZWZpbmUgdmFsaWRhdGVfY29sb24oY2gpICAgICAgdmFsaWRhdGVfdGVybWluYWwoY2gsICAgICAgQ09MT04sICI6IikKLSNkZWZpbmUgdmFsaWRhdGVfY29tbWEoY2gpICAgICAgdmFsaWRhdGVfdGVybWluYWwoY2gsICAgICAgQ09NTUEsICIsIikKLSNkZWZpbmUgdmFsaWRhdGVfZGVkZW50KGNoKSAgICAgdmFsaWRhdGVfdGVybWluYWwoY2gsICAgICBERURFTlQsICIiKQotI2RlZmluZSB2YWxpZGF0ZV9lcXVhbChjaCkgICAgICB2YWxpZGF0ZV90ZXJtaW5hbChjaCwgICAgICBFUVVBTCwgIj0iKQotI2RlZmluZSB2YWxpZGF0ZV9pbmRlbnQoY2gpICAgICB2YWxpZGF0ZV90ZXJtaW5hbChjaCwgICAgIElOREVOVCwgKGNoYXIqKU5VTEwpCi0jZGVmaW5lIHZhbGlkYXRlX2xwYXJlbihjaCkgICAgIHZhbGlkYXRlX3Rlcm1pbmFsKGNoLCAgICAgICBMUEFSLCAiKCIpCi0jZGVmaW5lIHZhbGlkYXRlX25ld2xpbmUoY2gpICAgIHZhbGlkYXRlX3Rlcm1pbmFsKGNoLCAgICBORVdMSU5FLCAoY2hhciopTlVMTCkKLSNkZWZpbmUgdmFsaWRhdGVfcnBhcmVuKGNoKSAgICAgdmFsaWRhdGVfdGVybWluYWwoY2gsICAgICAgIFJQQVIsICIpIikKLSNkZWZpbmUgdmFsaWRhdGVfc2VtaShjaCkgICAgICAgdmFsaWRhdGVfdGVybWluYWwoY2gsICAgICAgIFNFTUksICI7IikKLSNkZWZpbmUgdmFsaWRhdGVfc3RhcihjaCkgICAgICAgdmFsaWRhdGVfdGVybWluYWwoY2gsICAgICAgIFNUQVIsICIqIikKLSNkZWZpbmUgdmFsaWRhdGVfdmJhcihjaCkgICAgICAgdmFsaWRhdGVfdGVybWluYWwoY2gsICAgICAgIFZCQVIsICJ8IikKLSNkZWZpbmUgdmFsaWRhdGVfZG91Ymxlc3RhcihjaCkgdmFsaWRhdGVfdGVybWluYWwoY2gsIERPVUJMRVNUQVIsICIqKiIpCi0jZGVmaW5lIHZhbGlkYXRlX2RvdChjaCkgICAgICAgIHZhbGlkYXRlX3Rlcm1pbmFsKGNoLCAgICAgICAgRE9ULCAiLiIpCi0jZGVmaW5lIHZhbGlkYXRlX2F0KGNoKSAgICAgICAgIHZhbGlkYXRlX3Rlcm1pbmFsKGNoLCAgICAgICAgIEFULCAiQCIpCi0jZGVmaW5lIHZhbGlkYXRlX3JhcnJvdyhjaCkgICAgIHZhbGlkYXRlX3Rlcm1pbmFsKGNoLCAgICAgUkFSUk9XLCAiLT4iKQotI2RlZmluZSB2YWxpZGF0ZV9uYW1lKGNoLCBzdHIpICB2YWxpZGF0ZV90ZXJtaW5hbChjaCwgICAgICAgTkFNRSwgc3RyKQotCi0jZGVmaW5lIFZBTElEQVRFUihuKSAgICBzdGF0aWMgaW50IHZhbGlkYXRlXyMjbihub2RlICp0cmVlKQotCi1WQUxJREFURVIobm9kZSk7ICAgICAgICAgICAgICAgIFZBTElEQVRFUihzbWFsbF9zdG10KTsKLVZBTElEQVRFUihjbGFzcyk7ICAgICAgICAgICAgICAgVkFMSURBVEVSKG5vZGUpOwotVkFMSURBVEVSKHBhcmFtZXRlcnMpOyAgICAgICAgICBWQUxJREFURVIoc3VpdGUpOwotVkFMSURBVEVSKHRlc3RsaXN0KTsgICAgICAgICAgICBWQUxJREFURVIodmFyYXJnc2xpc3QpOwotVkFMSURBVEVSKHZmcGRlZik7Ci1WQUxJREFURVIoc3RtdCk7ICAgICAgICAgICAgICAgIFZBTElEQVRFUihzaW1wbGVfc3RtdCk7Ci1WQUxJREFURVIoZXhwcl9zdG10KTsgICAgICAgICAgIFZBTElEQVRFUihwb3dlcik7Ci1WQUxJREFURVIoZGVsX3N0bXQpOwotVkFMSURBVEVSKHJldHVybl9zdG10KTsgICAgICAgICBWQUxJREFURVIocmFpc2Vfc3RtdCk7Ci1WQUxJREFURVIoaW1wb3J0X3N0bXQpOyAgICAgICAgIFZBTElEQVRFUihpbXBvcnRfc3RtdCk7Ci1WQUxJREFURVIoaW1wb3J0X25hbWUpOyAgICAgICAgIFZBTElEQVRFUih5aWVsZF9zdG10KTsKLVZBTElEQVRFUihnbG9iYWxfc3RtdCk7ICAgICAgICAgVkFMSURBVEVSKG5vbmxvY2FsX3N0bXQpOwotVkFMSURBVEVSKGFzc2VydF9zdG10KTsKLVZBTElEQVRFUihjb21wb3VuZF9zdG10KTsgICAgICAgVkFMSURBVEVSKHRlc3Rfb3Jfc3Rhcl9leHByKTsKLVZBTElEQVRFUih3aGlsZSk7ICAgICAgICAgICAgICAgVkFMSURBVEVSKGZvcik7Ci1WQUxJREFURVIodHJ5KTsgICAgICAgICAgICAgICAgIFZBTElEQVRFUihleGNlcHRfY2xhdXNlKTsKLVZBTElEQVRFUih0ZXN0KTsgICAgICAgICAgICAgICAgVkFMSURBVEVSKGFuZF90ZXN0KTsKLVZBTElEQVRFUihub3RfdGVzdCk7ICAgICAgICAgICAgVkFMSURBVEVSKGNvbXBhcmlzb24pOwotVkFMSURBVEVSKGNvbXBfb3ApOwotVkFMSURBVEVSKHN0YXJfZXhwcik7ICAgICAgICAgICBWQUxJREFURVIoZXhwcik7Ci1WQUxJREFURVIoeG9yX2V4cHIpOyAgICAgICAgICAgIFZBTElEQVRFUihhbmRfZXhwcik7Ci1WQUxJREFURVIoc2hpZnRfZXhwcik7ICAgICAgICAgIFZBTElEQVRFUihhcml0aF9leHByKTsKLVZBTElEQVRFUih0ZXJtKTsgICAgICAgICAgICAgICAgVkFMSURBVEVSKGZhY3Rvcik7Ci1WQUxJREFURVIoYXRvbSk7ICAgICAgICAgICAgICAgIFZBTElEQVRFUihsYW1iZGVmKTsKLVZBTElEQVRFUih0cmFpbGVyKTsgICAgICAgICAgICAgVkFMSURBVEVSKHN1YnNjcmlwdCk7Ci1WQUxJREFURVIoc3Vic2NyaXB0bGlzdCk7ICAgICAgIFZBTElEQVRFUihzbGljZW9wKTsKLVZBTElEQVRFUihleHBybGlzdCk7ICAgICAgICAgICAgVkFMSURBVEVSKGRpY3RvcnNldG1ha2VyKTsKLVZBTElEQVRFUihhcmdsaXN0KTsgICAgICAgICAgICAgVkFMSURBVEVSKGFyZ3VtZW50KTsKLVZBTElEQVRFUihjb21wX2Zvcik7Ci1WQUxJREFURVIoY29tcF9pdGVyKTsgICAgICAgICAgIFZBTElEQVRFUihjb21wX2lmKTsKLVZBTElEQVRFUih0ZXN0bGlzdF9jb21wKTsgICAgICAgVkFMSURBVEVSKHlpZWxkX2V4cHIpOwotVkFMSURBVEVSKG9yX3Rlc3QpOwotVkFMSURBVEVSKHRlc3Rfbm9jb25kKTsgICAgICAgICBWQUxJREFURVIobGFtYmRlZl9ub2NvbmQpOwotVkFMSURBVEVSKHlpZWxkX2FyZyk7Ci1WQUxJREFURVIoYXN5bmNfZnVuY2RlZik7ICAgICAgIFZBTElEQVRFUihhc3luY19zdG10KTsKLVZBTElEQVRFUihhdG9tX2V4cHIpOwotCi0jdW5kZWYgVkFMSURBVEVSCi0KLSNkZWZpbmUgaXNfZXZlbihuKSAgICAgICgoKG4pICYgMSkgPT0gMCkKLSNkZWZpbmUgaXNfb2RkKG4pICAgICAgICgoKG4pICYgMSkgPT0gMSkKLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9udHlwZShub2RlICpuLCBpbnQgdCkKLXsKLSAgICBpZiAoVFlQRShuKSAhPSB0KSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChwYXJzZXJfZXJyb3IsICJFeHBlY3RlZCBub2RlIHR5cGUgJWQsIGdvdCAlZC4iLAotICAgICAgICAgICAgICAgICAgICAgdCwgVFlQRShuKSk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1cm4gMTsKLX0KLQotCi0vKiAgVmVyaWZpZXMgdGhhdCB0aGUgbnVtYmVyIG9mIGNoaWxkIG5vZGVzIGlzIGV4YWN0bHkgJ251bScsIHJhaXNpbmcKLSAqICBhbiBleGNlcHRpb24gaWYgaXQgaXNuJ3QuICBUaGUgZXhjZXB0aW9uIG1lc3NhZ2UgZG9lcyBub3QgaW5kaWNhdGUKLSAqICB0aGUgZXhhY3QgbnVtYmVyIG9mIG5vZGVzLCBhbGxvd2luZyB0aGlzIHRvIGJlIHVzZWQgdG8gcmFpc2UgdGhlCi0gKiAgInJpZ2h0IiBleGNlcHRpb24gd2hlbiB0aGUgd3JvbmcgbnVtYmVyIG9mIG5vZGVzIGlzIHByZXNlbnQgaW4gYQotICogIHNwZWNpZmljIHZhcmlhbnQgb2YgYSBzdGF0ZW1lbnQncyBzeW50YXguICBUaGlzIGlzIGNvbW1vbmx5IHVzZWQKLSAqICBpbiB0aGF0IGZhc2hpb24uCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX251bW5vZGVzKG5vZGUgKm4sIGludCBudW0sIGNvbnN0IGNoYXIgKmNvbnN0IG5hbWUpCi17Ci0gICAgaWYgKE5DSChuKSAhPSBudW0pIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KHBhcnNlcl9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJJbGxlZ2FsIG51bWJlciBvZiBjaGlsZHJlbiBmb3IgJXMgbm9kZS4iLCBuYW1lKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHJldHVybiAxOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3Rlcm1pbmFsKG5vZGUgKnRlcm1pbmFsLCBpbnQgdHlwZSwgY2hhciAqc3RyaW5nKQotewotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodGVybWluYWwsIHR5cGUpCi0gICAgICAgICAgICAgICAmJiAoKHN0cmluZyA9PSAwKSB8fCAoc3RyY21wKHN0cmluZywgU1RSKHRlcm1pbmFsKSkgPT0gMCkpKTsKLQotICAgIGlmICghcmVzICYmICFQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChwYXJzZXJfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiSWxsZWdhbCB0ZXJtaW5hbDogZXhwZWN0ZWQgXCIlc1wiIiwgc3RyaW5nKTsKLSAgICB9Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi0vKiAgWCAoJywnIFgpIFsnLCddICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9yZXBlYXRpbmdfbGlzdF92YXJpYWJsZShub2RlICp0cmVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpc3Rfbm9kZV90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICgqdmFsaWRhdGVfY2hpbGRfZnVuY19pbmMpKG5vZGUgKiwgaW50ICopLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpwb3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjb25zdCBsaXN0X25vZGVfdHlwZV9uYW1lKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9IChuY2ggJiYgdmFsaWRhdGVfbnR5cGUodHJlZSwgbGlzdF9ub2RlX3R5cGUpKTsKLQotICAgIGlmICghcmVzICYmICFQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgIC8qIFVuY29uZGl0aW9uYWxseSByYWlzZS4gKi8KLSAgICAgICAgKHZvaWQpIHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDEsIGxpc3Rfbm9kZV90eXBlX25hbWUpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgZm9yICggOyByZXMgJiYgKnBvcyA8IG5jaDsgKSB7Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9jaGlsZF9mdW5jX2luYyh0cmVlLCBwb3MpOwotICAgICAgICAgICAgaWYgKCFyZXMgfHwgKnBvcyA+PSBuY2gpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9jb21tYShDSElMRCh0cmVlLCAoKnBvcykrKykpOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiByZXM7Ci19Ci0KLS8qICBYICgnLCcgWCkgWycsJ10gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3JlcGVhdGluZ19saXN0KG5vZGUgKnRyZWUsCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGlzdF9ub2RlX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgKCp2YWxpZGF0ZV9jaGlsZF9mdW5jKShub2RlICopLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY29uc3QgbGlzdF9ub2RlX3R5cGVfbmFtZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAobmNoICYmIHZhbGlkYXRlX250eXBlKHRyZWUsIGxpc3Rfbm9kZV90eXBlKSk7Ci0gICAgaW50IHBvcyA9IDA7Ci0KLSAgICBpZiAoIXJlcyAmJiAhUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICAvKiBVbmNvbmRpdGlvbmFsbHkgcmFpc2UuICovCi0gICAgICAgICh2b2lkKSB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAxLCBsaXN0X25vZGVfdHlwZV9uYW1lKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGZvciAoIDsgcmVzICYmIHBvcyA8IG5jaDsgKSB7Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9jaGlsZF9mdW5jKENISUxEKHRyZWUsIHBvcysrKSk7Ci0gICAgICAgICAgICBpZiAoIXJlcyB8fCBwb3MgPj0gbmNoKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfY29tbWEoQ0hJTEQodHJlZSwgcG9zKyspKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gcmVzOwotfQotCi0KLS8qICB2YWxpZGF0ZV9jbGFzcygpCi0gKgotICogIGNsYXNzZGVmOgotICogICAgICAnY2xhc3MnIE5BTUUgWycoJyB0ZXN0bGlzdCAnKSddICc6JyBzdWl0ZQotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9jbGFzcyhub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBjbGFzc2RlZikgJiYKLSAgICAgICAgICAgICAgICAoKG5jaCA9PSA0KSB8fCAobmNoID09IDYpIHx8IChuY2ggPT0gNykpKTsKLQotICAgIGlmIChyZXMpIHsKLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksICJjbGFzcyIpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCAxKSwgTkFNRSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsIG5jaCAtIDIpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfc3VpdGUoQ0hJTEQodHJlZSwgbmNoIC0gMSkpKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgICh2b2lkKSB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCA0LCAiY2xhc3MiKTsKLSAgICB9Ci0KLSAgICBpZiAocmVzKSB7Ci0gICAgICAgIGlmIChuY2ggPT0gNykgewotICAgICAgICAgICAgICAgIHJlcyA9ICgodmFsaWRhdGVfbHBhcmVuKENISUxEKHRyZWUsIDIpKSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVfYXJnbGlzdChDSElMRCh0cmVlLCAzKSkgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlX3JwYXJlbihDSElMRCh0cmVlLCA0KSkpKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChuY2ggPT0gNikgewotICAgICAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9scGFyZW4oQ0hJTEQodHJlZSwyKSkgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlX3JwYXJlbihDSElMRCh0cmVlLDMpKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLS8qICBpZl9zdG10OgotICogICAgICAnaWYnIHRlc3QgJzonIHN1aXRlICgnZWxpZicgdGVzdCAnOicgc3VpdGUpKiBbJ2Vsc2UnICc6JyBzdWl0ZV0KLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfaWYobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgaWZfc3RtdCkKLSAgICAgICAgICAgICAgICYmIChuY2ggPj0gNCkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksICJpZiIpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIDEpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfY29sb24oQ0hJTEQodHJlZSwgMikpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9zdWl0ZShDSElMRCh0cmVlLCAzKSkpOwotCi0gICAgaWYgKHJlcyAmJiAoKG5jaCAlIDQpID09IDMpKSB7Ci0gICAgICAgIC8qICAuLi4gJ2Vsc2UnICc6JyBzdWl0ZSAgKi8KLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgbmNoIC0gMyksICJlbHNlIikKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsIG5jaCAtIDIpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfc3VpdGUoQ0hJTEQodHJlZSwgbmNoIC0gMSkpKTsKLSAgICAgICAgbmNoIC09IDM7Ci0gICAgfQotICAgIGVsc2UgaWYgKCFyZXMgJiYgIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICh2b2lkKSB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCA0LCAiaWYiKTsKLSAgICBpZiAoKG5jaCAlIDQpICE9IDApCi0gICAgICAgIC8qIFdpbGwgY2F0Y2ggdGhlIGNhc2UgZm9yIG5jaCA8IDQgKi8KLSAgICAgICAgcmVzID0gdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMCwgImlmIik7Ci0gICAgZWxzZSBpZiAocmVzICYmIChuY2ggPiA0KSkgewotICAgICAgICAvKiAgLi4uICgnZWxpZicgdGVzdCAnOicgc3VpdGUpKyAuLi4gICovCi0gICAgICAgIGludCBqID0gNDsKLSAgICAgICAgd2hpbGUgKChqIDwgbmNoKSAmJiByZXMpIHsKLSAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIGopLCAiZWxpZiIpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfY29sb24oQ0hJTEQodHJlZSwgaiArIDIpKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgaiArIDEpKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3N1aXRlKENISUxEKHRyZWUsIGogKyAzKSkpOwotICAgICAgICAgICAgaiArPSA0OwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi0vKiAgcGFyYW1ldGVyczoKLSAqICAgICAgJygnIFt2YXJhcmdzbGlzdF0gJyknCi0gKgotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9wYXJhbWV0ZXJzKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gdmFsaWRhdGVfbnR5cGUodHJlZSwgcGFyYW1ldGVycykgJiYgKChuY2ggPT0gMikgfHwgKG5jaCA9PSAzKSk7Ci0KLSAgICBpZiAocmVzKSB7Ci0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9scGFyZW4oQ0hJTEQodHJlZSwgMCkpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9ycGFyZW4oQ0hJTEQodHJlZSwgbmNoIC0gMSkpKTsKLSAgICAgICAgaWYgKHJlcyAmJiAobmNoID09IDMpKQotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfdmFyYXJnc2xpc3QoQ0hJTEQodHJlZSwgMSkpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgKHZvaWQpIHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDIsICJwYXJhbWV0ZXJzIik7Ci0gICAgfQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi0vKiAgdmFsaWRhdGVfc3VpdGUoKQotICoKLSAqICBzdWl0ZToKLSAqICAgICAgc2ltcGxlX3N0bXQKLSAqICAgIHwgTkVXTElORSBJTkRFTlQgc3RtdCsgREVERU5UCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3N1aXRlKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIHN1aXRlKSAmJiAoKG5jaCA9PSAxKSB8fCAobmNoID49IDQpKSk7Ci0KLSAgICBpZiAocmVzICYmIChuY2ggPT0gMSkpCi0gICAgICAgIHJlcyA9IHZhbGlkYXRlX3NpbXBsZV9zdG10KENISUxEKHRyZWUsIDApKTsKLSAgICBlbHNlIGlmIChyZXMpIHsKLSAgICAgICAgLyogIE5FV0xJTkUgSU5ERU5UIHN0bXQrIERFREVOVCAgKi8KLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX25ld2xpbmUoQ0hJTEQodHJlZSwgMCkpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9pbmRlbnQoQ0hJTEQodHJlZSwgMSkpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9zdG10KENISUxEKHRyZWUsIDIpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfZGVkZW50KENISUxEKHRyZWUsIG5jaCAtIDEpKSk7Ci0KLSAgICAgICAgaWYgKHJlcyAmJiAobmNoID4gNCkpIHsKLSAgICAgICAgICAgIGludCBpID0gMzsKLSAgICAgICAgICAgIC0tbmNoOyAgICAgICAgICAgICAgICAgICAgICAvKiBmb3JnZXQgdGhlIERFREVOVCAgICAgKi8KLSAgICAgICAgICAgIGZvciAoIDsgcmVzICYmIChpIDwgbmNoKTsgKytpKQotICAgICAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3N0bXQoQ0hJTEQodHJlZSwgaSkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKG5jaCA8IDQpCi0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCA0LCAic3VpdGUiKTsKLSAgICB9Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3Rlc3RsaXN0KG5vZGUgKnRyZWUpCi17Ci0gICAgcmV0dXJuICh2YWxpZGF0ZV9yZXBlYXRpbmdfbGlzdCh0cmVlLCB0ZXN0bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlX3Rlc3QsICJ0ZXN0bGlzdCIpKTsKLX0KLQotc3RhdGljIGludAotdmFsaWRhdGVfdGVzdGxpc3Rfc3Rhcl9leHByKG5vZGUgKnRsKQotewotICAgIHJldHVybiAodmFsaWRhdGVfcmVwZWF0aW5nX2xpc3QodGwsIHRlc3RsaXN0X3N0YXJfZXhwciwgdmFsaWRhdGVfdGVzdF9vcl9zdGFyX2V4cHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGVzdGxpc3QiKSk7Ci19Ci0KLQotLyogdmFsaWRhdGUgZWl0aGVyIHZmcGRlZiBvciB0ZnBkZWYuCi0gKiB2ZnBkZWY6IE5BTUUKLSAqIHRmcGRlZjogTkFNRSBbJzonIHRlc3RdCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3ZmcGRlZihub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaWYgKFRZUEUodHJlZSkgPT0gdmZwZGVmKSB7Ci0gICAgICAgIHJldHVybiBuY2ggPT0gMSAmJiB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCBOVUxMKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoVFlQRSh0cmVlKSA9PSB0ZnBkZWYpIHsKLSAgICAgICAgaWYgKG5jaCA9PSAxKSB7Ci0gICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgTlVMTCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAobmNoID09IDMpIHsKLSAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCBOVUxMKSAmJgotICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsIDEpKSAmJgotICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMikpOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiAwOwotfQotCi0vKiAnKicgW3ZmcGRlZl0gKCcsJyB2ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcgJyoqJyB2ZnBkZWZdIHwgJyoqJyB2ZnBkZWYKLSAqIC4ub3IgdGZwZGVmIGluIHBsYWNlIG9mIHZmcGRlZi4gdmZwZGVmOiBOQU1FOyB0ZnBkZWY6IE5BTUUgWyc6JyB0ZXN0XQotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV92YXJhcmdzbGlzdF90cmFpbGVyKG5vZGUgKnRyZWUsIGludCBzdGFydCkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAwOwotCi0gICAgaWYgKG5jaCA8PSBzdGFydCkgewotICAgICAgICBlcnJfc3RyaW5nKCJleHBlY3RlZCB2YXJpYWJsZSBhcmd1bWVudCB0cmFpbGVyIGZvciB2YXJhcmdzbGlzdCIpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgaWYgKFRZUEUoQ0hJTEQodHJlZSwgc3RhcnQpKSA9PSBTVEFSKSB7Ci0gICAgICAgIC8qCi0gICAgICAgICAqICcqJyBbdmZwZGVmXQotICAgICAgICAgKi8KLSAgICAgICAgcmVzID0gdmFsaWRhdGVfc3RhcihDSElMRCh0cmVlLCBzdGFydCsrKSk7Ci0gICAgICAgIGlmIChyZXMgJiYgc3RhcnQgPCBuY2ggJiYgKFRZUEUoQ0hJTEQodHJlZSwgc3RhcnQpKSA9PSB2ZnBkZWYgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFlQRShDSElMRCh0cmVlLCBzdGFydCkpID09IHRmcGRlZikpCi0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV92ZnBkZWYoQ0hJTEQodHJlZSwgc3RhcnQrKykpOwotICAgICAgICAvKgotICAgICAgICAgKiAoJywnIHZmcGRlZiBbJz0nIHRlc3RdKSoKLSAgICAgICAgICovCi0gICAgICAgIHdoaWxlIChyZXMgJiYgc3RhcnQgKyAxIDwgbmNoICYmICgKLSAgICAgICAgICAgICAgICAgICBUWVBFKENISUxEKHRyZWUsIHN0YXJ0ICsgMSkpID09IHZmcGRlZiB8fAotICAgICAgICAgICAgICAgICAgIFRZUEUoQ0hJTEQodHJlZSwgc3RhcnQgKyAxKSkgPT0gdGZwZGVmKSkgewotICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX2NvbW1hKENISUxEKHRyZWUsIHN0YXJ0KyspKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3ZmcGRlZihDSElMRCh0cmVlLCBzdGFydCsrKSkpOwotICAgICAgICAgICAgaWYgKHJlcyAmJiBzdGFydCArIDEgPCBuY2ggJiYgVFlQRShDSElMRCh0cmVlLCBzdGFydCkpID09IEVRVUFMKQotICAgICAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9lcXVhbChDSElMRCh0cmVlLCBzdGFydCsrKSkKLSAgICAgICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCBzdGFydCsrKSkpOwotICAgICAgICB9Ci0gICAgICAgIC8qCi0gICAgICAgICAqIFsnLCcgJyoqJyB2ZnBkZWZdCi0gICAgICAgICAqLwotICAgICAgICBpZiAocmVzICYmIHN0YXJ0ICsgMiA8IG5jaCAmJiBUWVBFKENISUxEKHRyZWUsIHN0YXJ0KzEpKSA9PSBET1VCTEVTVEFSKQotICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX2NvbW1hKENISUxEKHRyZWUsIHN0YXJ0KyspKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2RvdWJsZXN0YXIoQ0hJTEQodHJlZSwgc3RhcnQrKykpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdmZwZGVmKENISUxEKHRyZWUsIHN0YXJ0KyspKSk7Ci0gICAgfQotICAgIGVsc2UgaWYgKFRZUEUoQ0hJTEQodHJlZSwgc3RhcnQpKSA9PSBET1VCTEVTVEFSKSB7Ci0gICAgICAgIC8qCi0gICAgICAgICAqICcqKicgdmZwZGVmCi0gICAgICAgICAqLwotICAgICAgICBpZiAoc3RhcnQgKyAxIDwgbmNoKQotICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX2RvdWJsZXN0YXIoQ0hJTEQodHJlZSwgc3RhcnQrKykpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdmZwZGVmKENISUxEKHRyZWUsIHN0YXJ0KyspKSk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgcmVzID0gMDsKLSAgICAgICAgICAgIGVycl9zdHJpbmcoImV4cGVjdGVkIHZmcGRlZiBhZnRlciAqKiBpbiB2YXJhcmdzbGlzdCB0cmFpbGVyIik7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIHJlcyA9IDA7Ci0gICAgICAgIGVycl9zdHJpbmcoImV4cGVjdGVkICogb3IgKiogaW4gdmFyYXJnc2xpc3QgdHJhaWxlciIpOwotICAgIH0KLQotICAgIGlmIChyZXMgJiYgc3RhcnQgIT0gbmNoKSB7Ci0gICAgICAgIHJlcyA9IDA7Ci0gICAgICAgIGVycl9zdHJpbmcoInVuZXhwZWN0ZWQgZXh0cmEgY2hpbGRyZW4gaW4gdmFyYXJnc2xpc3QgdHJhaWxlciIpOwotICAgIH0KLSAgICByZXR1cm4gcmVzOwotfQotCi0KLS8qIHZhbGlkYXRlX3ZhcmFyZ3NsaXN0KCkKLSAqCi0gKiBWYWxpZGF0ZSB0eXBlZGFyZ3NsaXN0IG9yIHZhcmFyZ3NsaXN0LgotICoKLSAqIHR5cGVkYXJnc2xpc3Q6ICgodGZwZGVmIFsnPScgdGVzdF0gJywnKSoKLSAqICAgICAgICAgICAgICAgICAoJyonIFt0ZnBkZWZdICgnLCcgdGZwZGVmIFsnPScgdGVzdF0pKiBbJywnICcqKicgdGZwZGVmXSB8Ci0gKiAgICAgICAgICAgICAgICAgICcqKicgdGZwZGVmKQotICogICAgICAgICAgICAgICAgIHwgdGZwZGVmIFsnPScgdGVzdF0gKCcsJyB0ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCddKQotICogdGZwZGVmOiBOQU1FIFsnOicgdGVzdF0KLSAqIHZhcmFyZ3NsaXN0OiAoKHZmcGRlZiBbJz0nIHRlc3RdICcsJykqCi0gKiAgICAgICAgICAgICAgICgnKicgW3ZmcGRlZl0gKCcsJyB2ZnBkZWYgWyc9JyB0ZXN0XSkqICBbJywnICcqKicgdmZwZGVmXSB8Ci0gKiAgICAgICAgICAgICAgICAnKionIHZmcGRlZikKLSAqICAgICAgICAgICAgICAgfCB2ZnBkZWYgWyc9JyB0ZXN0XSAoJywnIHZmcGRlZiBbJz0nIHRlc3RdKSogWycsJ10pCi0gKiB2ZnBkZWY6IE5BTUUKLSAqCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3ZhcmFyZ3NsaXN0KG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKFRZUEUodHJlZSkgPT0gdmFyYXJnc2xpc3QgfHwKLSAgICAgICAgICAgICAgIFRZUEUodHJlZSkgPT0gdHlwZWRhcmdzbGlzdCkgJiYKLSAgICAgICAgICAgICAgKG5jaCAhPSAwKTsKLSAgICBpbnQgc3ltOwotICAgIG5vZGUgKmNoOwotICAgIGludCBpID0gMDsKLQotICAgIGlmICghcmVzKQotICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAobmNoIDwgMSkgewotICAgICAgICBlcnJfc3RyaW5nKCJ2YXJhcmdzbGlzdCBtaXNzaW5nIGNoaWxkIG5vZGVzIik7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICB3aGlsZSAoaSA8IG5jaCkgewotICAgICAgICBjaCA9IENISUxEKHRyZWUsIGkpOwotICAgICAgICBzeW0gPSBUWVBFKGNoKTsKLSAgICAgICAgaWYgKHN5bSA9PSB2ZnBkZWYgfHwgc3ltID09IHRmcGRlZikgewotICAgICAgICAgICAgLyogdmFsaWRhdGUgKHZmcGRlZiBbJz0nIHRlc3RdICcsJykrICovCi0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV92ZnBkZWYoY2gpOwotICAgICAgICAgICAgKytpOwotICAgICAgICAgICAgaWYgKHJlcyAmJiAoaSsyIDw9IG5jaCkgJiYgVFlQRShDSElMRCh0cmVlLCBpKSkgPT0gRVFVQUwpIHsKLSAgICAgICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfZXF1YWwoQ0hJTEQodHJlZSwgaSkpCi0gICAgICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgaSsxKSkpOwotICAgICAgICAgICAgICAgIGlmIChyZXMpCi0gICAgICAgICAgICAgICAgICBpICs9IDI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAocmVzICYmIGkgPCBuY2gpIHsKLSAgICAgICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9jb21tYShDSElMRCh0cmVlLCBpKSk7Ci0gICAgICAgICAgICAgICAgKytpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKHN5bSA9PSBET1VCTEVTVEFSIHx8IHN5bSA9PSBTVEFSKSB7Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV92YXJhcmdzbGlzdF90cmFpbGVyKHRyZWUsIGkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXMgPSAwOwotICAgICAgICAgICAgZXJyX3N0cmluZygiaWxsZWdhbCBmb3JtYXRpb24gZm9yIHZhcmFyZ3NsaXN0Iik7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHJlczsKLX0KLQotCi0vKiAgY29tcF9pdGVyOiAgY29tcF9mb3IgfCBjb21wX2lmCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2NvbXBfaXRlcihub2RlICp0cmVlKQotewotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgY29tcF9pdGVyKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMSwgImNvbXBfaXRlciIpKTsKLSAgICBpZiAocmVzICYmIFRZUEUoQ0hJTEQodHJlZSwgMCkpID09IGNvbXBfZm9yKQotICAgICAgICByZXMgPSB2YWxpZGF0ZV9jb21wX2ZvcihDSElMRCh0cmVlLCAwKSk7Ci0gICAgZWxzZQotICAgICAgICByZXMgPSB2YWxpZGF0ZV9jb21wX2lmKENISUxEKHRyZWUsIDApKTsKLQotICAgIHJldHVybiByZXM7Ci19Ci0KLS8qICBjb21wX2ZvcjogICdmb3InIGV4cHJsaXN0ICdpbicgdGVzdCBbY29tcF9pdGVyXQotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9jb21wX2Zvcihub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlczsKLQotICAgIGlmIChuY2ggPT0gNSkKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfY29tcF9pdGVyKENISUxEKHRyZWUsIDQpKTsKLSAgICBlbHNlCi0gICAgICAgIHJlcyA9IHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDQsICJjb21wX2ZvciIpOwotCi0gICAgaWYgKHJlcykKLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksICJmb3IiKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfZXhwcmxpc3QoQ0hJTEQodHJlZSwgMSkpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDIpLCAiaW4iKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfb3JfdGVzdChDSElMRCh0cmVlLCAzKSkpOwotCi0gICAgcmV0dXJuIHJlczsKLX0KLQotLyogIGNvbXBfaWY6ICAnaWYnIHRlc3Rfbm9jb25kIFtjb21wX2l0ZXJdCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2NvbXBfaWYobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXM7Ci0KLSAgICBpZiAobmNoID09IDMpCi0gICAgICAgIHJlcyA9IHZhbGlkYXRlX2NvbXBfaXRlcihDSElMRCh0cmVlLCAyKSk7Ci0gICAgZWxzZQotICAgICAgICByZXMgPSB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAyLCAiY29tcF9pZiIpOwotCi0gICAgaWYgKHJlcykKLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksICJpZiIpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0X25vY29uZChDSElMRCh0cmVlLCAxKSkpOwotCi0gICAgcmV0dXJuIHJlczsKLX0KLQotCi0vKiAgc2ltcGxlX3N0bXQgfCBjb21wb3VuZF9zdG10Ci0gKgotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9zdG10KG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBzdG10KQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMSwgInN0bXQiKSk7Ci0KLSAgICBpZiAocmVzKSB7Ci0gICAgICAgIHRyZWUgPSBDSElMRCh0cmVlLCAwKTsKLQotICAgICAgICBpZiAoVFlQRSh0cmVlKSA9PSBzaW1wbGVfc3RtdCkKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3NpbXBsZV9zdG10KHRyZWUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9jb21wb3VuZF9zdG10KHRyZWUpOwotICAgIH0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotLyogIHNtYWxsX3N0bXQgKCc7JyBzbWFsbF9zdG10KSogWyc7J10gTkVXTElORQotICoKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfc2ltcGxlX3N0bXQobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgc2ltcGxlX3N0bXQpCi0gICAgICAgICAgICAgICAmJiAobmNoID49IDIpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9zbWFsbF9zdG10KENISUxEKHRyZWUsIDApKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbmV3bGluZShDSElMRCh0cmVlLCBuY2ggLSAxKSkpOwotCi0gICAgaWYgKG5jaCA8IDIpCi0gICAgICAgIHJlcyA9IHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDIsICJzaW1wbGVfc3RtdCIpOwotICAgIC0tbmNoOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZvcmdldCB0aGUgTkVXTElORSAgICAqLwotICAgIGlmIChyZXMgJiYgaXNfZXZlbihuY2gpKQotICAgICAgICByZXMgPSB2YWxpZGF0ZV9zZW1pKENISUxEKHRyZWUsIC0tbmNoKSk7Ci0gICAgaWYgKHJlcyAmJiAobmNoID4gMikpIHsKLSAgICAgICAgaW50IGk7Ci0KLSAgICAgICAgZm9yIChpID0gMTsgcmVzICYmIChpIDwgbmNoKTsgaSArPSAyKQotICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX3NlbWkoQ0hJTEQodHJlZSwgaSkpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfc21hbGxfc3RtdChDSElMRCh0cmVlLCBpICsgMSkpKTsKLSAgICB9Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3NtYWxsX3N0bXQobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAxLCAic21hbGxfc3RtdCIpOwotCi0gICAgaWYgKHJlcykgewotICAgICAgICBpbnQgbnR5cGUgPSBUWVBFKENISUxEKHRyZWUsIDApKTsKLQotICAgICAgICBpZiAoICAobnR5cGUgPT0gZXhwcl9zdG10KQotICAgICAgICAgICAgICB8fCAobnR5cGUgPT0gZGVsX3N0bXQpCi0gICAgICAgICAgICAgIHx8IChudHlwZSA9PSBwYXNzX3N0bXQpCi0gICAgICAgICAgICAgIHx8IChudHlwZSA9PSBmbG93X3N0bXQpCi0gICAgICAgICAgICAgIHx8IChudHlwZSA9PSBpbXBvcnRfc3RtdCkKLSAgICAgICAgICAgICAgfHwgKG50eXBlID09IGdsb2JhbF9zdG10KQotICAgICAgICAgICAgICB8fCAobnR5cGUgPT0gbm9ubG9jYWxfc3RtdCkKLSAgICAgICAgICAgICAgfHwgKG50eXBlID09IGFzc2VydF9zdG10KSkKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX25vZGUoQ0hJTEQodHJlZSwgMCkpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHJlcyA9IDA7Ci0gICAgICAgICAgICBlcnJfc3RyaW5nKCJpbGxlZ2FsIHNtYWxsX3N0bXQgY2hpbGQgdHlwZSIpOwotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UgaWYgKG5jaCA9PSAxKSB7Ci0gICAgICAgIHJlcyA9IDA7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChwYXJzZXJfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiVW5yZWNvZ25pemVkIGNoaWxkIG5vZGUgb2Ygc21hbGxfc3RtdDogJWQuIiwKLSAgICAgICAgICAgICAgICAgICAgIFRZUEUoQ0hJTEQodHJlZSwgMCkpKTsKLSAgICB9Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLS8qICBjb21wb3VuZF9zdG10OgotICogICAgICBpZl9zdG10IHwgd2hpbGVfc3RtdCB8IGZvcl9zdG10IHwgdHJ5X3N0bXQgfCB3aXRoX3N0bXQgfCBmdW5jZGVmIHwgY2xhc3NkZWYgfCBkZWNvcmF0ZWQKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfY29tcG91bmRfc3RtdChub2RlICp0cmVlKQotewotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgY29tcG91bmRfc3RtdCkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDEsICJjb21wb3VuZF9zdG10IikpOwotICAgIGludCBudHlwZTsKLQotICAgIGlmICghcmVzKQotICAgICAgICByZXR1cm4gKDApOwotCi0gICAgdHJlZSA9IENISUxEKHRyZWUsIDApOwotICAgIG50eXBlID0gVFlQRSh0cmVlKTsKLSAgICBpZiAoICAobnR5cGUgPT0gaWZfc3RtdCkKLSAgICAgICAgICB8fCAobnR5cGUgPT0gd2hpbGVfc3RtdCkKLSAgICAgICAgICB8fCAobnR5cGUgPT0gZm9yX3N0bXQpCi0gICAgICAgICAgfHwgKG50eXBlID09IHRyeV9zdG10KQotICAgICAgICAgIHx8IChudHlwZSA9PSB3aXRoX3N0bXQpCi0gICAgICAgICAgfHwgKG50eXBlID09IGZ1bmNkZWYpCi0gICAgICAgICAgfHwgKG50eXBlID09IGFzeW5jX3N0bXQpCi0gICAgICAgICAgfHwgKG50eXBlID09IGNsYXNzZGVmKQotICAgICAgICAgIHx8IChudHlwZSA9PSBkZWNvcmF0ZWQpKQotICAgICAgICByZXMgPSB2YWxpZGF0ZV9ub2RlKHRyZWUpOwotICAgIGVsc2UgewotICAgICAgICByZXMgPSAwOwotICAgICAgICBQeUVycl9Gb3JtYXQocGFyc2VyX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgIklsbGVnYWwgY29tcG91bmQgc3RhdGVtZW50IHR5cGU6ICVkLiIsIFRZUEUodHJlZSkpOwotICAgIH0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3lpZWxkX29yX3Rlc3RsaXN0KG5vZGUgKnRyZWUsIGludCB0c2UpCi17Ci0gICAgaWYgKFRZUEUodHJlZSkgPT0geWllbGRfZXhwcikgewotICAgICAgICByZXR1cm4gdmFsaWRhdGVfeWllbGRfZXhwcih0cmVlKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmICh0c2UpCi0gICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVfdGVzdGxpc3Rfc3Rhcl9leHByKHRyZWUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVfdGVzdGxpc3QodHJlZSk7Ci0gICAgfQotfQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9leHByX3N0bXQobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgajsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgZXhwcl9zdG10KQotICAgICAgICAgICAgICAgJiYgaXNfb2RkKG5jaCkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3Rlc3RsaXN0X3N0YXJfZXhwcihDSElMRCh0cmVlLCAwKSkpOwotCi0gICAgaWYgKHJlcyAmJiBuY2ggPT0gMwotICAgICAgICAmJiBUWVBFKENISUxEKHRyZWUsIDEpKSA9PSBhdWdhc3NpZ24pIHsKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfbnVtbm9kZXMoQ0hJTEQodHJlZSwgMSksIDEsICJhdWdhc3NpZ24iKQotICAgICAgICAgICAgJiYgdmFsaWRhdGVfeWllbGRfb3JfdGVzdGxpc3QoQ0hJTEQodHJlZSwgMiksIDApOwotCi0gICAgICAgIGlmIChyZXMpIHsKLSAgICAgICAgICAgIGNoYXIgKnMgPSBTVFIoQ0hJTEQoQ0hJTEQodHJlZSwgMSksIDApKTsKLQotICAgICAgICAgICAgcmVzID0gKHN0cmNtcChzLCAiKz0iKSA9PSAwCi0gICAgICAgICAgICAgICAgICAgfHwgc3RyY21wKHMsICItPSIpID09IDAKLSAgICAgICAgICAgICAgICAgICB8fCBzdHJjbXAocywgIio9IikgPT0gMAotICAgICAgICAgICAgICAgICAgIHx8IHN0cmNtcChzLCAiLz0iKSA9PSAwCi0gICAgICAgICAgICAgICAgICAgfHwgc3RyY21wKHMsICIvLz0iKSA9PSAwCi0gICAgICAgICAgICAgICAgICAgfHwgc3RyY21wKHMsICIlPSIpID09IDAKLSAgICAgICAgICAgICAgICAgICB8fCBzdHJjbXAocywgIiY9IikgPT0gMAotICAgICAgICAgICAgICAgICAgIHx8IHN0cmNtcChzLCAifD0iKSA9PSAwCi0gICAgICAgICAgICAgICAgICAgfHwgc3RyY21wKHMsICJePSIpID09IDAKLSAgICAgICAgICAgICAgICAgICB8fCBzdHJjbXAocywgIjw8PSIpID09IDAKLSAgICAgICAgICAgICAgICAgICB8fCBzdHJjbXAocywgIj4+PSIpID09IDAKLSAgICAgICAgICAgICAgICAgICB8fCBzdHJjbXAocywgIioqPSIpID09IDApOwotICAgICAgICAgICAgaWYgKCFyZXMpCi0gICAgICAgICAgICAgICAgZXJyX3N0cmluZygiaWxsZWdhbCBhdWdtZW50ZWQgYXNzaWdubWVudCBvcGVyYXRvciIpOwotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBmb3IgKGogPSAxOyByZXMgJiYgKGogPCBuY2gpOyBqICs9IDIpCi0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9lcXVhbChDSElMRCh0cmVlLCBqKSkKLSAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV95aWVsZF9vcl90ZXN0bGlzdChDSElMRCh0cmVlLCBqICsgMSksIDEpOwotICAgIH0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfZGVsX3N0bXQobm9kZSAqdHJlZSkKLXsKLSAgICByZXR1cm4gKHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDIsICJkZWxfc3RtdCIpCi0gICAgICAgICAgICAmJiB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAiZGVsIikKLSAgICAgICAgICAgICYmIHZhbGlkYXRlX2V4cHJsaXN0KENISUxEKHRyZWUsIDEpKSk7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfcmV0dXJuX3N0bXQobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgcmV0dXJuX3N0bXQpCi0gICAgICAgICAgICAgICAmJiAoKG5jaCA9PSAxKSB8fCAobmNoID09IDIpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgInJldHVybiIpKTsKLQotICAgIGlmIChyZXMgJiYgKG5jaCA9PSAyKSkKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfdGVzdGxpc3QoQ0hJTEQodHJlZSwgMSkpOwotCi0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLS8qCi0gKiAgcmFpc2Vfc3RtdDoKLSAqCi0gKiAgJ3JhaXNlJyBbdGVzdCBbJ2Zyb20nIHRlc3RdXQotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9yYWlzZV9zdG10KG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIHJhaXNlX3N0bXQpCi0gICAgICAgICAgICAgICAmJiAoKG5jaCA9PSAxKSB8fCAobmNoID09IDIpIHx8IChuY2ggPT0gNCkpKTsKLQotICAgIGlmICghcmVzICYmICFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAodm9pZCkgdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMiwgInJhaXNlIik7Ci0KLSAgICBpZiAocmVzKSB7Ci0gICAgICAgIHJlcyA9IHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksICJyYWlzZSIpOwotICAgICAgICBpZiAocmVzICYmIChuY2ggPj0gMikpCi0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIDEpKTsKLSAgICAgICAgaWYgKHJlcyAmJiAobmNoID09IDQpKSB7Ci0gICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAyKSwgImZyb20iKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMykpKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotLyogeWllbGRfZXhwcjogJ3lpZWxkJyBbeWllbGRfYXJnXQotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV95aWVsZF9leHByKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpZiAobmNoIDwgMSB8fCBuY2ggPiAyKQotICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoIXZhbGlkYXRlX250eXBlKHRyZWUsIHlpZWxkX2V4cHIpKQotICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoIXZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksICJ5aWVsZCIpKQotICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAobmNoID09IDIpIHsKLSAgICAgICAgaWYgKCF2YWxpZGF0ZV95aWVsZF9hcmcoQ0hJTEQodHJlZSwgMSkpKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHJldHVybiAxOwotfQotCi0vKiB5aWVsZF9hcmc6ICdmcm9tJyB0ZXN0IHwgdGVzdGxpc3QKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfeWllbGRfYXJnKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpZiAoIXZhbGlkYXRlX250eXBlKHRyZWUsIHlpZWxkX2FyZykpCi0gICAgICAgIHJldHVybiAwOwotICAgIHN3aXRjaCAobmNoKSB7Ci0gICAgICBjYXNlIDE6Ci0gICAgICAgIGlmICghdmFsaWRhdGVfdGVzdGxpc3QoQ0hJTEQodHJlZSwgbmNoIC0gMSkpKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSAyOgotICAgICAgICBpZiAoIXZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksICJmcm9tIikpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgaWYgKCF2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIDEpKSkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBicmVhazsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1cm4gMTsKLX0KLQotLyogeWllbGRfc3RtdDogeWllbGRfZXhwcgotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV95aWVsZF9zdG10KG5vZGUgKnRyZWUpCi17Ci0gICAgcmV0dXJuICh2YWxpZGF0ZV9udHlwZSh0cmVlLCB5aWVsZF9zdG10KQotICAgICAgICAgICAgJiYgdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMSwgInlpZWxkX3N0bXQiKQotICAgICAgICAgICAgJiYgdmFsaWRhdGVfeWllbGRfZXhwcihDSElMRCh0cmVlLCAwKSkpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2ltcG9ydF9hc19uYW1lKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgb2sgPSB2YWxpZGF0ZV9udHlwZSh0cmVlLCBpbXBvcnRfYXNfbmFtZSk7Ci0KLSAgICBpZiAob2spIHsKLSAgICAgICAgaWYgKG5jaCA9PSAxKQotICAgICAgICAgICAgb2sgPSB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCBOVUxMKTsKLSAgICAgICAgZWxzZSBpZiAobmNoID09IDMpCi0gICAgICAgICAgICBvayA9ICh2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCBOVUxMKQotICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAxKSwgImFzIikKLSAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMiksIE5VTEwpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgb2sgPSB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAzLCAiaW1wb3J0X2FzX25hbWUiKTsKLSAgICB9Ci0gICAgcmV0dXJuIG9rOwotfQotCi0KLS8qIGRvdHRlZF9uYW1lOiAgTkFNRSAoIi4iIE5BTUUpKgotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9kb3R0ZWRfbmFtZShub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBkb3R0ZWRfbmFtZSkKLSAgICAgICAgICAgICAgICYmIGlzX29kZChuY2gpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCBOVUxMKSk7Ci0gICAgaW50IGk7Ci0KLSAgICBmb3IgKGkgPSAxOyByZXMgJiYgKGkgPCBuY2gpOyBpICs9IDIpIHsKLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX2RvdChDSElMRCh0cmVlLCBpKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgaSsxKSwgTlVMTCkpOwotICAgIH0KLSAgICByZXR1cm4gcmVzOwotfQotCi0KLS8qIGRvdHRlZF9hc19uYW1lOiAgZG90dGVkX25hbWUgW05BTUUgTkFNRV0KLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfZG90dGVkX2FzX25hbWUobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSB2YWxpZGF0ZV9udHlwZSh0cmVlLCBkb3R0ZWRfYXNfbmFtZSk7Ci0KLSAgICBpZiAocmVzKSB7Ci0gICAgICAgIGlmIChuY2ggPT0gMSkKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2RvdHRlZF9uYW1lKENISUxEKHRyZWUsIDApKTsKLSAgICAgICAgZWxzZSBpZiAobmNoID09IDMpCi0gICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfZG90dGVkX25hbWUoQ0hJTEQodHJlZSwgMCkpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAxKSwgImFzIikKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDIpLCBOVUxMKSk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgcmVzID0gMDsKLSAgICAgICAgICAgIGVycl9zdHJpbmcoImlsbGVnYWwgbnVtYmVyIG9mIGNoaWxkcmVuIGZvciBkb3R0ZWRfYXNfbmFtZSIpOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiByZXM7Ci19Ci0KLQotLyogZG90dGVkX2FzX25hbWUgKCcsJyBkb3R0ZWRfYXNfbmFtZSkqICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9kb3R0ZWRfYXNfbmFtZXMobm9kZSAqdHJlZSkKLXsKLSAgICAgICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICAgICAgaW50IHJlcyA9IGlzX29kZChuY2gpICYmIHZhbGlkYXRlX2RvdHRlZF9hc19uYW1lKENISUxEKHRyZWUsIDApKTsKLSAgICAgICAgaW50IGk7Ci0KLSAgICAgICAgZm9yIChpID0gMTsgcmVzICYmIChpIDwgbmNoKTsgaSArPSAyKQotICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX2NvbW1hKENISUxEKHRyZWUsIGkpKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2RvdHRlZF9hc19uYW1lKENISUxEKHRyZWUsIGkgKyAxKSkpOwotICAgICAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotLyogaW1wb3J0X2FzX25hbWUgKCcsJyBpbXBvcnRfYXNfbmFtZSkqIFsnLCddICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9pbXBvcnRfYXNfbmFtZXMobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSB2YWxpZGF0ZV9pbXBvcnRfYXNfbmFtZShDSElMRCh0cmVlLCAwKSk7Ci0gICAgaW50IGk7Ci0KLSAgICBmb3IgKGkgPSAxOyByZXMgJiYgKGkgKyAxIDwgbmNoKTsgaSArPSAyKQotICAgICAgICByZXMgPSAodmFsaWRhdGVfY29tbWEoQ0hJTEQodHJlZSwgaSkpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9pbXBvcnRfYXNfbmFtZShDSElMRCh0cmVlLCBpICsgMSkpKTsKLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotLyogJ2ltcG9ydCcgZG90dGVkX2FzX25hbWVzICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9pbXBvcnRfbmFtZShub2RlICp0cmVlKQotewotICAgICAgICByZXR1cm4gKHZhbGlkYXRlX250eXBlKHRyZWUsIGltcG9ydF9uYW1lKQotICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDIsICJpbXBvcnRfbmFtZSIpCi0gICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgImltcG9ydCIpCi0gICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfZG90dGVkX2FzX25hbWVzKENISUxEKHRyZWUsIDEpKSk7Ci19Ci0KLS8qIEhlbHBlciBmdW5jdGlvbiB0byBjb3VudCB0aGUgbnVtYmVyIG9mIGxlYWRpbmcgZG90cyAob3IgZWxsaXBzaXMgdG9rZW5zKSBpbgotICogJ2Zyb20gLi4ubW9kdWxlIGltcG9ydCBuYW1lJwotICovCi1zdGF0aWMgaW50Ci1jb3VudF9mcm9tX2RvdHMobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgaTsKLSAgICBmb3IgKGkgPSAxOyBpIDwgTkNIKHRyZWUpOyBpKyspCi0gICAgICAgIGlmIChUWVBFKENISUxEKHRyZWUsIGkpKSAhPSBET1QgJiYgVFlQRShDSElMRCh0cmVlLCBpKSkgIT0gRUxMSVBTSVMpCi0gICAgICAgICAgICBicmVhazsKLSAgICByZXR1cm4gaSAtIDE7Ci19Ci0KLS8qIGltcG9ydF9mcm9tOiAoJ2Zyb20nICgnLicqIGRvdHRlZF9uYW1lIHwgJy4nKykKLSAqICAgICAgICAgICAgICAgJ2ltcG9ydCcgKCcqJyB8ICcoJyBpbXBvcnRfYXNfbmFtZXMgJyknIHwgaW1wb3J0X2FzX25hbWVzKSkKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfaW1wb3J0X2Zyb20obm9kZSAqdHJlZSkKLXsKLSAgICAgICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICAgICAgaW50IG5kb3RzID0gY291bnRfZnJvbV9kb3RzKHRyZWUpOwotICAgICAgICBpbnQgaGF2ZW5hbWUgPSAoVFlQRShDSElMRCh0cmVlLCBuZG90cyArIDEpKSA9PSBkb3R0ZWRfbmFtZSk7Ci0gICAgICAgIGludCBvZmZzZXQgPSBuZG90cyArIGhhdmVuYW1lOwotICAgICAgICBpbnQgcmVzID0gdmFsaWRhdGVfbnR5cGUodHJlZSwgaW1wb3J0X2Zyb20pCi0gICAgICAgICAgICAgICAgJiYgKG9mZnNldCA+PSAxKQotICAgICAgICAgICAgICAgICYmIChuY2ggPj0gMyArIG9mZnNldCkKLSAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAiZnJvbSIpCi0gICAgICAgICAgICAgICAgJiYgKCFoYXZlbmFtZSB8fCB2YWxpZGF0ZV9kb3R0ZWRfbmFtZShDSElMRCh0cmVlLCBuZG90cyArIDEpKSkKLSAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIG9mZnNldCArIDEpLCAiaW1wb3J0Iik7Ci0KLSAgICAgICAgaWYgKHJlcyAmJiBUWVBFKENISUxEKHRyZWUsIG9mZnNldCArIDIpKSA9PSBMUEFSKQotICAgICAgICAgICAgcmVzID0gKChuY2ggPT0gb2Zmc2V0ICsgNSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9scGFyZW4oQ0hJTEQodHJlZSwgb2Zmc2V0ICsgMikpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfaW1wb3J0X2FzX25hbWVzKENISUxEKHRyZWUsIG9mZnNldCArIDMpKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3JwYXJlbihDSElMRCh0cmVlLCBvZmZzZXQgKyA0KSkpOwotICAgICAgICBlbHNlIGlmIChyZXMgJiYgVFlQRShDSElMRCh0cmVlLCBvZmZzZXQgKyAyKSkgIT0gU1RBUikKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2ltcG9ydF9hc19uYW1lcyhDSElMRCh0cmVlLCBvZmZzZXQgKyAyKSk7Ci0gICAgICAgIHJldHVybiAocmVzKTsKLX0KLQotCi0vKiBpbXBvcnRfc3RtdDogaW1wb3J0X25hbWUgfCBpbXBvcnRfZnJvbSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfaW1wb3J0X3N0bXQobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAxLCAiaW1wb3J0X3N0bXQiKTsKLQotICAgIGlmIChyZXMpIHsKLSAgICAgICAgaW50IG50eXBlID0gVFlQRShDSElMRCh0cmVlLCAwKSk7Ci0KLSAgICAgICAgaWYgKG50eXBlID09IGltcG9ydF9uYW1lIHx8IG50eXBlID09IGltcG9ydF9mcm9tKQotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfbm9kZShDSElMRCh0cmVlLCAwKSk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgcmVzID0gMDsKLSAgICAgICAgICAgIGVycl9zdHJpbmcoImlsbGVnYWwgaW1wb3J0X3N0bXQgY2hpbGQgdHlwZSIpOwotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UgaWYgKG5jaCA9PSAxKSB7Ci0gICAgICAgIHJlcyA9IDA7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChwYXJzZXJfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiVW5yZWNvZ25pemVkIGNoaWxkIG5vZGUgb2YgaW1wb3J0X3N0bXQ6ICVkLiIsCi0gICAgICAgICAgICAgICAgICAgICBUWVBFKENISUxEKHRyZWUsIDApKSk7Ci0gICAgfQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi0vKiAgZ2xvYmFsX3N0bXQ6Ci0gKgotICogICdnbG9iYWwnIE5BTUUgKCcsJyBOQU1FKSoKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfZ2xvYmFsX3N0bXQobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgajsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgZ2xvYmFsX3N0bXQpCi0gICAgICAgICAgICAgICAmJiBpc19ldmVuKG5jaCkgJiYgKG5jaCA+PSAyKSk7Ci0KLSAgICBpZiAoIXJlcyAmJiAhUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgZXJyX3N0cmluZygiaWxsZWdhbCBnbG9iYWwgc3RhdGVtZW50Iik7Ci0KLSAgICBpZiAocmVzKQotICAgICAgICByZXMgPSAodmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgImdsb2JhbCIpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCAxKSwgTkFNRSkpOwotICAgIGZvciAoaiA9IDI7IHJlcyAmJiAoaiA8IG5jaCk7IGogKz0gMikKLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX2NvbW1hKENISUxEKHRyZWUsIGopKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbnR5cGUoQ0hJTEQodHJlZSwgaiArIDEpLCBOQU1FKSk7Ci0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLS8qICBub25sb2NhbF9zdG10OgotICoKLSAqICAnbm9ubG9jYWwnIE5BTUUgKCcsJyBOQU1FKSoKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfbm9ubG9jYWxfc3RtdChub2RlICp0cmVlKQotewotICAgIGludCBqOwotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBub25sb2NhbF9zdG10KQotICAgICAgICAgICAgICAgJiYgaXNfZXZlbihuY2gpICYmIChuY2ggPj0gMikpOwotCi0gICAgaWYgKCFyZXMgJiYgIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIGVycl9zdHJpbmcoImlsbGVnYWwgbm9ubG9jYWwgc3RhdGVtZW50Iik7Ci0KLSAgICBpZiAocmVzKQotICAgICAgICByZXMgPSAodmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgIm5vbmxvY2FsIikKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX250eXBlKENISUxEKHRyZWUsIDEpLCBOQU1FKSk7Ci0gICAgZm9yIChqID0gMjsgcmVzICYmIChqIDwgbmNoKTsgaiArPSAyKQotICAgICAgICByZXMgPSAodmFsaWRhdGVfY29tbWEoQ0hJTEQodHJlZSwgaikpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCBqICsgMSksIE5BTUUpKTsKLQotICAgIHJldHVybiByZXM7Ci19Ci0KLS8qICBhc3NlcnRfc3RtdDoKLSAqCi0gKiAgJ2Fzc2VydCcgdGVzdCBbJywnIHRlc3RdCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2Fzc2VydF9zdG10KG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGFzc2VydF9zdG10KQotICAgICAgICAgICAgICAgJiYgKChuY2ggPT0gMikgfHwgKG5jaCA9PSA0KSkKLSAgICAgICAgICAgICAgICYmICh2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAiYXNzZXJ0IikpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIDEpKSk7Ci0KLSAgICBpZiAoIXJlcyAmJiAhUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgZXJyX3N0cmluZygiaWxsZWdhbCBhc3NlcnQgc3RhdGVtZW50Iik7Ci0gICAgaWYgKHJlcyAmJiAobmNoID4gMikpCi0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9jb21tYShDSElMRCh0cmVlLCAyKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMykpKTsKLQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV93aGlsZShub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCB3aGlsZV9zdG10KQotICAgICAgICAgICAgICAgJiYgKChuY2ggPT0gNCkgfHwgKG5jaCA9PSA3KSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksICJ3aGlsZSIpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIDEpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfY29sb24oQ0hJTEQodHJlZSwgMikpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9zdWl0ZShDSElMRCh0cmVlLCAzKSkpOwotCi0gICAgaWYgKHJlcyAmJiAobmNoID09IDcpKQotICAgICAgICByZXMgPSAodmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCA0KSwgImVsc2UiKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfY29sb24oQ0hJTEQodHJlZSwgNSkpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9zdWl0ZShDSElMRCh0cmVlLCA2KSkpOwotCi0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2Zvcihub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBmb3Jfc3RtdCkKLSAgICAgICAgICAgICAgICYmICgobmNoID09IDYpIHx8IChuY2ggPT0gOSkpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAiZm9yIikKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2V4cHJsaXN0KENISUxEKHRyZWUsIDEpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAyKSwgImluIikKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3Rlc3RsaXN0KENISUxEKHRyZWUsIDMpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfY29sb24oQ0hJTEQodHJlZSwgNCkpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9zdWl0ZShDSElMRCh0cmVlLCA1KSkpOwotCi0gICAgaWYgKHJlcyAmJiAobmNoID09IDkpKQotICAgICAgICByZXMgPSAodmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCA2KSwgImVsc2UiKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfY29sb24oQ0hJTEQodHJlZSwgNykpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9zdWl0ZShDSElMRCh0cmVlLCA4KSkpOwotCi0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLS8qICB0cnlfc3RtdDoKLSAqICAgICAgJ3RyeScgJzonIHN1aXRlIChleGNlcHRfY2xhdXNlICc6JyBzdWl0ZSkrIFsnZWxzZScgJzonIHN1aXRlXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydmaW5hbGx5JyAnOicgc3VpdGVdCi0gKiAgICB8ICd0cnknICc6JyBzdWl0ZSAnZmluYWxseScgJzonIHN1aXRlCi0gKgotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV90cnkobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCBwb3MgPSAzOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgdHJ5X3N0bXQpCi0gICAgICAgICAgICAgICAmJiAobmNoID49IDYpICYmICgobmNoICUgMykgPT0gMCkpOwotCi0gICAgaWYgKHJlcykKLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksICJ0cnkiKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfY29sb24oQ0hJTEQodHJlZSwgMSkpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9zdWl0ZShDSElMRCh0cmVlLCAyKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsIG5jaCAtIDIpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfc3VpdGUoQ0hJTEQodHJlZSwgbmNoIC0gMSkpKTsKLSAgICBlbHNlIGlmICghUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICBjb25zdCBjaGFyKiBuYW1lID0gImV4Y2VwdCI7Ci0gICAgICAgIGlmIChUWVBFKENISUxEKHRyZWUsIG5jaCAtIDMpKSAhPSBleGNlcHRfY2xhdXNlKQotICAgICAgICAgICAgbmFtZSA9IFNUUihDSElMRCh0cmVlLCBuY2ggLSAzKSk7Ci0KLSAgICAgICAgUHlFcnJfRm9ybWF0KHBhcnNlcl9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJJbGxlZ2FsIG51bWJlciBvZiBjaGlsZHJlbiBmb3IgdHJ5LyVzIG5vZGUuIiwgbmFtZSk7Ci0gICAgfQotICAgIC8qIEhhbmRsZSB0cnkvZmluYWxseSBzdGF0ZW1lbnQgKi8KLSAgICBpZiAocmVzICYmIChUWVBFKENISUxEKHRyZWUsIHBvcykpID09IE5BTUUpICYmCi0gICAgICAgIChzdHJjbXAoU1RSKENISUxEKHRyZWUsIHBvcykpLCAiZmluYWxseSIpID09IDApKSB7Ci0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCA2LCAidHJ5L2ZpbmFsbHkiKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfY29sb24oQ0hJTEQodHJlZSwgNCkpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9zdWl0ZShDSElMRCh0cmVlLCA1KSkpOwotICAgICAgICByZXR1cm4gKHJlcyk7Ci0gICAgfQotICAgIC8qIHRyeS9leGNlcHQgc3RhdGVtZW50OiBza2lwIHBhc3QgZXhjZXB0X2NsYXVzZSBzZWN0aW9ucyAqLwotICAgIHdoaWxlIChyZXMgJiYgcG9zIDwgbmNoICYmIChUWVBFKENISUxEKHRyZWUsIHBvcykpID09IGV4Y2VwdF9jbGF1c2UpKSB7Ci0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9leGNlcHRfY2xhdXNlKENISUxEKHRyZWUsIHBvcykpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb2xvbihDSElMRCh0cmVlLCBwb3MgKyAxKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3N1aXRlKENISUxEKHRyZWUsIHBvcyArIDIpKSk7Ci0gICAgICAgIHBvcyArPSAzOwotICAgIH0KLSAgICAvKiBza2lwIGVsc2UgY2xhdXNlICovCi0gICAgaWYgKHJlcyAmJiBwb3MgPCBuY2ggJiYgKFRZUEUoQ0hJTEQodHJlZSwgcG9zKSkgPT0gTkFNRSkgJiYKLSAgICAgICAgKHN0cmNtcChTVFIoQ0hJTEQodHJlZSwgcG9zKSksICJlbHNlIikgPT0gMCkpIHsKLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsIHBvcyArIDEpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfc3VpdGUoQ0hJTEQodHJlZSwgcG9zICsgMikpKTsKLSAgICAgICAgcG9zICs9IDM7Ci0gICAgfQotICAgIGlmIChyZXMgJiYgcG9zIDwgbmNoKSB7Ci0gICAgICAgIC8qIGxhc3QgY2xhdXNlIG11c3QgYmUgYSBmaW5hbGx5ICovCi0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIHBvcyksICJmaW5hbGx5IikKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIHBvcyArIDMsICJ0cnkvZXhjZXB0L2ZpbmFsbHkiKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfY29sb24oQ0hJTEQodHJlZSwgcG9zICsgMSkpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9zdWl0ZShDSElMRCh0cmVlLCBwb3MgKyAyKSkpOwotICAgIH0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfZXhjZXB0X2NsYXVzZShub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBleGNlcHRfY2xhdXNlKQotICAgICAgICAgICAgICAgJiYgKChuY2ggPT0gMSkgfHwgKG5jaCA9PSAyKSB8fCAobmNoID09IDQpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgImV4Y2VwdCIpKTsKLQotICAgIGlmIChyZXMgJiYgKG5jaCA+IDEpKQotICAgICAgICByZXMgPSB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIDEpKTsKLSAgICBpZiAocmVzICYmIChuY2ggPT0gNCkpCi0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDIpLCAiYXMiKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbnR5cGUoQ0hJTEQodHJlZSwgMyksIE5BTUUpKTsKLQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV90ZXN0KG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gdmFsaWRhdGVfbnR5cGUodHJlZSwgdGVzdCkgJiYgaXNfb2RkKG5jaCk7Ci0KLSAgICBpZiAocmVzICYmIChUWVBFKENISUxEKHRyZWUsIDApKSA9PSBsYW1iZGVmKSkKLSAgICAgICAgcmVzID0gKChuY2ggPT0gMSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2xhbWJkZWYoQ0hJTEQodHJlZSwgMCkpKTsKLSAgICBlbHNlIGlmIChyZXMpIHsKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfb3JfdGVzdChDSElMRCh0cmVlLCAwKSk7Ci0gICAgICAgIHJlcyA9IChyZXMgJiYgKG5jaCA9PSAxIHx8IChuY2ggPT0gNSAmJgotICAgICAgICAgICAgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAxKSwgImlmIikgJiYKLSAgICAgICAgICAgIHZhbGlkYXRlX29yX3Rlc3QoQ0hJTEQodHJlZSwgMikpICYmCi0gICAgICAgICAgICB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDMpLCAiZWxzZSIpICYmCi0gICAgICAgICAgICB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIDQpKSkpKTsKLSAgICB9Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV90ZXN0X25vY29uZChub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9IHZhbGlkYXRlX250eXBlKHRyZWUsIHRlc3Rfbm9jb25kKSAmJiAobmNoID09IDEpOwotCi0gICAgaWYgKHJlcyAmJiAoVFlQRShDSElMRCh0cmVlLCAwKSkgPT0gbGFtYmRlZl9ub2NvbmQpKQotICAgICAgICByZXMgPSAodmFsaWRhdGVfbGFtYmRlZl9ub2NvbmQoQ0hJTEQodHJlZSwgMCkpKTsKLSAgICBlbHNlIGlmIChyZXMpIHsKLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX29yX3Rlc3QoQ0hJTEQodHJlZSwgMCkpKTsKLSAgICB9Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9vcl90ZXN0KG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gdmFsaWRhdGVfbnR5cGUodHJlZSwgb3JfdGVzdCkgJiYgaXNfb2RkKG5jaCk7Ci0KLSAgICBpZiAocmVzKSB7Ci0gICAgICAgIGludCBwb3M7Ci0gICAgICAgIHJlcyA9IHZhbGlkYXRlX2FuZF90ZXN0KENISUxEKHRyZWUsIDApKTsKLSAgICAgICAgZm9yIChwb3MgPSAxOyByZXMgJiYgKHBvcyA8IG5jaCk7IHBvcyArPSAyKQotICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgcG9zKSwgIm9yIikKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9hbmRfdGVzdChDSElMRCh0cmVlLCBwb3MgKyAxKSkpOwotICAgIH0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfYW5kX3Rlc3Qobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgcG9zOwotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBhbmRfdGVzdCkKLSAgICAgICAgICAgICAgICYmIGlzX29kZChuY2gpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9ub3RfdGVzdChDSElMRCh0cmVlLCAwKSkpOwotCi0gICAgZm9yIChwb3MgPSAxOyByZXMgJiYgKHBvcyA8IG5jaCk7IHBvcyArPSAyKQotICAgICAgICByZXMgPSAodmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCBwb3MpLCAiYW5kIikKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX25vdF90ZXN0KENISUxEKHRyZWUsIDApKSk7Ci0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfbm90X3Rlc3Qobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSB2YWxpZGF0ZV9udHlwZSh0cmVlLCBub3RfdGVzdCkgJiYgKChuY2ggPT0gMSkgfHwgKG5jaCA9PSAyKSk7Ci0KLSAgICBpZiAocmVzKSB7Ci0gICAgICAgIGlmIChuY2ggPT0gMikKLSAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAibm90IikKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9ub3RfdGVzdChDSElMRCh0cmVlLCAxKSkpOwotICAgICAgICBlbHNlIGlmIChuY2ggPT0gMSkKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2NvbXBhcmlzb24oQ0hJTEQodHJlZSwgMCkpOwotICAgIH0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfY29tcGFyaXNvbihub2RlICp0cmVlKQotewotICAgIGludCBwb3M7Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGNvbXBhcmlzb24pCi0gICAgICAgICAgICAgICAmJiBpc19vZGQobmNoKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfZXhwcihDSElMRCh0cmVlLCAwKSkpOwotCi0gICAgZm9yIChwb3MgPSAxOyByZXMgJiYgKHBvcyA8IG5jaCk7IHBvcyArPSAyKQotICAgICAgICByZXMgPSAodmFsaWRhdGVfY29tcF9vcChDSElMRCh0cmVlLCBwb3MpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfZXhwcihDSElMRCh0cmVlLCBwb3MgKyAxKSkpOwotCi0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2NvbXBfb3Aobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgcmVzID0gMDsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotCi0gICAgaWYgKCF2YWxpZGF0ZV9udHlwZSh0cmVlLCBjb21wX29wKSkKLSAgICAgICAgcmV0dXJuICgwKTsKLSAgICBpZiAobmNoID09IDEpIHsKLSAgICAgICAgLyoKLSAgICAgICAgICogIE9ubHkgY2hpbGQgd2lsbCBiZSBhIHRlcm1pbmFsIHdpdGggYSB3ZWxsLWRlZmluZWQgc3ltYm9saWMgbmFtZQotICAgICAgICAgKiAgb3IgYSBOQU1FIHdpdGggYSBzdHJpbmcgb2YgZWl0aGVyICdpcycgb3IgJ2luJwotICAgICAgICAgKi8KLSAgICAgICAgdHJlZSA9IENISUxEKHRyZWUsIDApOwotICAgICAgICBzd2l0Y2ggKFRZUEUodHJlZSkpIHsKLSAgICAgICAgICBjYXNlIExFU1M6Ci0gICAgICAgICAgY2FzZSBHUkVBVEVSOgotICAgICAgICAgIGNhc2UgRVFFUVVBTDoKLSAgICAgICAgICBjYXNlIEVRVUFMOgotICAgICAgICAgIGNhc2UgTEVTU0VRVUFMOgotICAgICAgICAgIGNhc2UgR1JFQVRFUkVRVUFMOgotICAgICAgICAgIGNhc2UgTk9URVFVQUw6Ci0gICAgICAgICAgICAgIHJlcyA9IDE7Ci0gICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgTkFNRToKLSAgICAgICAgICAgICAgcmVzID0gKChzdHJjbXAoU1RSKHRyZWUpLCAiaW4iKSA9PSAwKQotICAgICAgICAgICAgICAgICAgICAgfHwgKHN0cmNtcChTVFIodHJlZSksICJpcyIpID09IDApKTsKLSAgICAgICAgICAgICAgaWYgKCFyZXMpIHsKLSAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChwYXJzZXJfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImlsbGVnYWwgb3BlcmF0b3IgJyVzJyIsIFNUUih0cmVlKSk7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgZXJyX3N0cmluZygiaWxsZWdhbCBjb21wYXJpc29uIG9wZXJhdG9yIHR5cGUiKTsKLSAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSBpZiAoKHJlcyA9IHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDIsICJjb21wX29wIikpICE9IDApIHsKLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX250eXBlKENISUxEKHRyZWUsIDApLCBOQU1FKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbnR5cGUoQ0hJTEQodHJlZSwgMSksIE5BTUUpCi0gICAgICAgICAgICAgICAmJiAoKChzdHJjbXAoU1RSKENISUxEKHRyZWUsIDApKSwgImlzIikgPT0gMCkKLSAgICAgICAgICAgICAgICAgICAgJiYgKHN0cmNtcChTVFIoQ0hJTEQodHJlZSwgMSkpLCAibm90IikgPT0gMCkpCi0gICAgICAgICAgICAgICAgICAgfHwgKChzdHJjbXAoU1RSKENISUxEKHRyZWUsIDApKSwgIm5vdCIpID09IDApCi0gICAgICAgICAgICAgICAgICAgICAgICYmIChzdHJjbXAoU1RSKENISUxEKHRyZWUsIDEpKSwgImluIikgPT0gMCkpKSk7Ci0gICAgICAgIGlmICghcmVzICYmICFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgZXJyX3N0cmluZygidW5rbm93biBjb21wYXJpc29uIG9wZXJhdG9yIik7Ci0gICAgfQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9zdGFyX2V4cHIobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgcmVzID0gdmFsaWRhdGVfbnR5cGUodHJlZSwgc3Rhcl9leHByKTsKLSAgICBpZiAoIXJlcykgcmV0dXJuIHJlczsKLSAgICBpZiAoIXZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDIsICJzdGFyX2V4cHIiKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIHZhbGlkYXRlX250eXBlKENISUxEKHRyZWUsIDApLCBTVEFSKSAmJiAgICAgIFwKLSAgICAgICAgdmFsaWRhdGVfZXhwcihDSElMRCh0cmVlLCAxKSk7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfZXhwcihub2RlICp0cmVlKQotewotICAgIGludCBqOwotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBleHByKQotICAgICAgICAgICAgICAgJiYgaXNfb2RkKG5jaCkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3hvcl9leHByKENISUxEKHRyZWUsIDApKSk7Ci0KLSAgICBmb3IgKGogPSAyOyByZXMgJiYgKGogPCBuY2gpOyBqICs9IDIpCi0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV94b3JfZXhwcihDSElMRCh0cmVlLCBqKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3ZiYXIoQ0hJTEQodHJlZSwgaiAtIDEpKSk7Ci0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfeG9yX2V4cHIobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgajsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgeG9yX2V4cHIpCi0gICAgICAgICAgICAgICAmJiBpc19vZGQobmNoKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfYW5kX2V4cHIoQ0hJTEQodHJlZSwgMCkpKTsKLQotICAgIGZvciAoaiA9IDI7IHJlcyAmJiAoaiA8IG5jaCk7IGogKz0gMikKLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX2NpcmN1bWZsZXgoQ0hJTEQodHJlZSwgaiAtIDEpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfYW5kX2V4cHIoQ0hJTEQodHJlZSwgaikpKTsKLQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9hbmRfZXhwcihub2RlICp0cmVlKQotewotICAgIGludCBwb3M7Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGFuZF9leHByKQotICAgICAgICAgICAgICAgJiYgaXNfb2RkKG5jaCkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3NoaWZ0X2V4cHIoQ0hJTEQodHJlZSwgMCkpKTsKLQotICAgIGZvciAocG9zID0gMTsgcmVzICYmIChwb3MgPCBuY2gpOyBwb3MgKz0gMikKLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX2FtcGVyc2FuZChDSElMRCh0cmVlLCBwb3MpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfc2hpZnRfZXhwcihDSElMRCh0cmVlLCBwb3MgKyAxKSkpOwotCi0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2NoYWluX3R3b19vcHMobm9kZSAqdHJlZSwgaW50ICgqdGVybXZhbGlkKShub2RlICopLCBpbnQgb3AxLCBpbnQgb3AyKQotIHsKLSAgICBpbnQgcG9zID0gMTsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAoaXNfb2RkKG5jaCkKLSAgICAgICAgICAgICAgICYmICgqdGVybXZhbGlkKShDSElMRCh0cmVlLCAwKSkpOwotCi0gICAgZm9yICggOyByZXMgJiYgKHBvcyA8IG5jaCk7IHBvcyArPSAyKSB7Ci0gICAgICAgIGlmIChUWVBFKENISUxEKHRyZWUsIHBvcykpICE9IG9wMSkKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX250eXBlKENISUxEKHRyZWUsIHBvcyksIG9wMik7Ci0gICAgICAgIGlmIChyZXMpCi0gICAgICAgICAgICByZXMgPSAoKnRlcm12YWxpZCkoQ0hJTEQodHJlZSwgcG9zICsgMSkpOwotICAgIH0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfc2hpZnRfZXhwcihub2RlICp0cmVlKQotewotICAgIHJldHVybiAodmFsaWRhdGVfbnR5cGUodHJlZSwgc2hpZnRfZXhwcikKLSAgICAgICAgICAgICYmIHZhbGlkYXRlX2NoYWluX3R3b19vcHModHJlZSwgdmFsaWRhdGVfYXJpdGhfZXhwciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTEVGVFNISUZULCBSSUdIVFNISUZUKSk7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfYXJpdGhfZXhwcihub2RlICp0cmVlKQotewotICAgIHJldHVybiAodmFsaWRhdGVfbnR5cGUodHJlZSwgYXJpdGhfZXhwcikKLSAgICAgICAgICAgICYmIHZhbGlkYXRlX2NoYWluX3R3b19vcHModHJlZSwgdmFsaWRhdGVfdGVybSwgUExVUywgTUlOVVMpKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV90ZXJtKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IHBvcyA9IDE7Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIHRlcm0pCi0gICAgICAgICAgICAgICAmJiBpc19vZGQobmNoKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfZmFjdG9yKENISUxEKHRyZWUsIDApKSk7Ci0KLSAgICBmb3IgKCA7IHJlcyAmJiAocG9zIDwgbmNoKTsgcG9zICs9IDIpCi0gICAgICAgIHJlcyA9ICgoKFRZUEUoQ0hJTEQodHJlZSwgcG9zKSkgPT0gU1RBUikKLSAgICAgICAgICAgICAgIHx8IChUWVBFKENISUxEKHRyZWUsIHBvcykpID09IFNMQVNIKQotICAgICAgICAgICAgICAgfHwgKFRZUEUoQ0hJTEQodHJlZSwgcG9zKSkgPT0gRE9VQkxFU0xBU0gpCi0gICAgICAgICAgICAgICB8fCAoVFlQRShDSElMRCh0cmVlLCBwb3MpKSA9PSBQRVJDRU5UKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2ZhY3RvcihDSElMRCh0cmVlLCBwb3MgKyAxKSkpOwotCi0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLS8qICBmYWN0b3I6Ci0gKgotICogIGZhY3RvcjogKCcrJ3wnLSd8J34nKSBmYWN0b3IgfCBwb3dlcgotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9mYWN0b3Iobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgZmFjdG9yKQotICAgICAgICAgICAgICAgJiYgKCgobmNoID09IDIpCi0gICAgICAgICAgICAgICAgICAgICYmICgoVFlQRShDSElMRCh0cmVlLCAwKSkgPT0gUExVUykKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IChUWVBFKENISUxEKHRyZWUsIDApKSA9PSBNSU5VUykKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IChUWVBFKENISUxEKHRyZWUsIDApKSA9PSBUSUxERSkpCi0gICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2ZhY3RvcihDSElMRCh0cmVlLCAxKSkpCi0gICAgICAgICAgICAgICAgICAgfHwgKChuY2ggPT0gMSkKLSAgICAgICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfcG93ZXIoQ0hJTEQodHJlZSwgMCkpKSkpOwotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi0vKiAgcG93ZXI6Ci0gKgotICogIHBvd2VyOiBhdG9tX2V4cHIgdHJhaWxlciogWycqKicgZmFjdG9yXQotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9wb3dlcihub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBwb3dlcikgJiYgKG5jaCA+PSAxKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfYXRvbV9leHByKENISUxEKHRyZWUsIDApKSk7Ci0KLSAgICBpZiAobmNoID4gMSkgewotICAgICAgICBpZiAobmNoICE9IDMpIHsKLSAgICAgICAgICAgIGVycl9zdHJpbmcoImlsbGVnYWwgbnVtYmVyIG9mIG5vZGVzIGZvciAncG93ZXInIik7Ci0gICAgICAgICAgICByZXR1cm4gKDApOwotICAgICAgICB9Ci0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9kb3VibGVzdGFyKENISUxEKHRyZWUsIDEpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfZmFjdG9yKENISUxEKHRyZWUsIDIpKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLS8qICBhdG9tX2V4cHI6Ci0gKgotICogIGF0b21fZXhwcjogW0FXQUlUXSBhdG9tIHRyYWlsZXIqCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2F0b21fZXhwcihub2RlICp0cmVlKQotewotICAgIGludCBzdGFydCA9IDA7Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzOwotICAgIGludCBwb3M7Ci0KLSAgICByZXMgPSB2YWxpZGF0ZV9udHlwZSh0cmVlLCBhdG9tX2V4cHIpICYmIChuY2ggPj0gMSk7Ci0gICAgaWYgKCFyZXMpIHsKLSAgICAgICAgcmV0dXJuIChyZXMpOwotICAgIH0KLQotICAgIGlmIChUWVBFKENISUxEKHRyZWUsIDApKSA9PSBBV0FJVCkgewotICAgICAgICBzdGFydCA9IDE7Ci0gICAgICAgIGlmIChuY2ggPCAyKSB7Ci0gICAgICAgICAgICBlcnJfc3RyaW5nKCJpbGxlZ2FsIG51bWJlciBvZiBub2RlcyBmb3IgJ2F0b21fZXhwciciKTsKLSAgICAgICAgICAgIHJldHVybiAoMCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXMgPSB2YWxpZGF0ZV9hdG9tKENISUxEKHRyZWUsIHN0YXJ0KSk7Ci0gICAgaWYgKHJlcykgewotICAgICAgICBwb3MgPSBzdGFydCArIDE7Ci0gICAgICAgIHdoaWxlIChyZXMgJiYgKHBvcyA8IG5jaCkgJiYgKFRZUEUoQ0hJTEQodHJlZSwgcG9zKSkgPT0gdHJhaWxlcikpCi0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV90cmFpbGVyKENISUxEKHRyZWUsIHBvcysrKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2F0b20obm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgcG9zOwotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9IHZhbGlkYXRlX250eXBlKHRyZWUsIGF0b20pOwotCi0gICAgaWYgKHJlcyAmJiBuY2ggPCAxKQotICAgICAgICByZXMgPSB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCBuY2grMSwgImF0b20iKTsKLSAgICBpZiAocmVzKSB7Ci0gICAgICAgIHN3aXRjaCAoVFlQRShDSElMRCh0cmVlLCAwKSkpIHsKLSAgICAgICAgICBjYXNlIExQQVI6Ci0gICAgICAgICAgICByZXMgPSAoKG5jaCA8PSAzKQotICAgICAgICAgICAgICAgICAgICYmICh2YWxpZGF0ZV9ycGFyZW4oQ0hJTEQodHJlZSwgbmNoIC0gMSkpKSk7Ci0KLSAgICAgICAgICAgIGlmIChyZXMgJiYgKG5jaCA9PSAzKSkgewotICAgICAgICAgICAgICAgIGlmIChUWVBFKENISUxEKHRyZWUsIDEpKT09eWllbGRfZXhwcikKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3lpZWxkX2V4cHIoQ0hJTEQodHJlZSwgMSkpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3Rlc3RsaXN0X2NvbXAoQ0hJTEQodHJlZSwgMSkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBMU1FCOgotICAgICAgICAgICAgaWYgKG5jaCA9PSAyKQotICAgICAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX250eXBlKENISUxEKHRyZWUsIDEpLCBSU1FCKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKG5jaCA9PSAzKQotICAgICAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV90ZXN0bGlzdF9jb21wKENISUxEKHRyZWUsIDEpKQotICAgICAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCAyKSwgUlNRQikpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgcmVzID0gMDsKLSAgICAgICAgICAgICAgICBlcnJfc3RyaW5nKCJpbGxlZ2FsIGxpc3QgZGlzcGxheSBhdG9tIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIExCUkFDRToKLSAgICAgICAgICAgIHJlcyA9ICgobmNoIDw9IDMpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbnR5cGUoQ0hJTEQodHJlZSwgbmNoIC0gMSksIFJCUkFDRSkpOwotCi0gICAgICAgICAgICBpZiAocmVzICYmIChuY2ggPT0gMykpCi0gICAgICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfZGljdG9yc2V0bWFrZXIoQ0hJTEQodHJlZSwgMSkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBOQU1FOgotICAgICAgICAgIGNhc2UgTlVNQkVSOgotICAgICAgICAgIGNhc2UgRUxMSVBTSVM6Ci0gICAgICAgICAgICByZXMgPSAobmNoID09IDEpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBTVFJJTkc6Ci0gICAgICAgICAgICBmb3IgKHBvcyA9IDE7IHJlcyAmJiAocG9zIDwgbmNoKTsgKytwb3MpCi0gICAgICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfbnR5cGUoQ0hJTEQodHJlZSwgcG9zKSwgU1RSSU5HKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXMgPSAwOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLS8qICB0ZXN0bGlzdF9jb21wOgotICogICAgKHRlc3R8c3Rhcl9leHByKSAoIGNvbXBfZm9yIHwgKCcsJyAodGVzdHxzdGFyX2V4cHIpKSogWycsJ10gKQotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV90ZXN0bGlzdF9jb21wKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgb2s7Ci0KLSAgICBpZiAobmNoID09IDApIHsKLSAgICAgICAgZXJyX3N0cmluZygibWlzc2luZyBjaGlsZCBub2RlcyBvZiB0ZXN0bGlzdF9jb21wIik7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIGlmIChuY2ggPT0gMiAmJiBUWVBFKENISUxEKHRyZWUsIDEpKSA9PSBjb21wX2ZvcikgewotICAgICAgICBvayA9ICh2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIDApKQotICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbXBfZm9yKENISUxEKHRyZWUsIDEpKSk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBvayA9IHZhbGlkYXRlX3JlcGVhdGluZ19saXN0KHRyZWUsCi0gICAgICAgICAgICAgICAgdGVzdGxpc3RfY29tcCwKLSAgICAgICAgICAgICAgICB2YWxpZGF0ZV90ZXN0X29yX3N0YXJfZXhwciwKLSAgICAgICAgICAgICAgICAidGVzdGxpc3RfY29tcCIpOwotICAgIH0KLSAgICByZXR1cm4gb2s7Ci19Ci0KLS8qICBkZWNvcmF0b3I6Ci0gKiAgICAnQCcgZG90dGVkX25hbWUgWyAnKCcgW2FyZ2xpc3RdICcpJyBdIE5FV0xJTkUKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfZGVjb3JhdG9yKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG9rOwotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgb2sgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgZGVjb3JhdG9yKSAmJgotICAgICAgICAgIChuY2ggPT0gMyB8fCBuY2ggPT0gNSB8fCBuY2ggPT0gNikgJiYKLSAgICAgICAgICB2YWxpZGF0ZV9hdChDSElMRCh0cmVlLCAwKSkgJiYKLSAgICAgICAgICB2YWxpZGF0ZV9kb3R0ZWRfbmFtZShDSElMRCh0cmVlLCAxKSkgJiYKLSAgICAgICAgICB2YWxpZGF0ZV9uZXdsaW5lKFJDSElMRCh0cmVlLCAtMSkpKTsKLQotICAgIGlmIChvayAmJiBuY2ggIT0gMykgewotICAgICAgICBvayA9ICh2YWxpZGF0ZV9scGFyZW4oQ0hJTEQodHJlZSwgMikpICYmCi0gICAgICAgICAgICAgIHZhbGlkYXRlX3JwYXJlbihSQ0hJTEQodHJlZSwgLTIpKSk7Ci0KLSAgICAgICAgaWYgKG9rICYmIG5jaCA9PSA2KQotICAgICAgICAgICAgb2sgPSB2YWxpZGF0ZV9hcmdsaXN0KENISUxEKHRyZWUsIDMpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gb2s7Ci19Ci0KLS8qICBkZWNvcmF0b3JzOgotICogICAgZGVjb3JhdG9yKwotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9kZWNvcmF0b3JzKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IGksIG5jaCwgb2s7Ci0gICAgbmNoID0gTkNIKHRyZWUpOwotICAgIG9rID0gdmFsaWRhdGVfbnR5cGUodHJlZSwgZGVjb3JhdG9ycykgJiYgbmNoID49IDE7Ci0KLSAgICBmb3IgKGkgPSAwOyBvayAmJiBpIDwgbmNoOyArK2kpCi0gICAgICAgIG9rID0gdmFsaWRhdGVfZGVjb3JhdG9yKENISUxEKHRyZWUsIGkpKTsKLQotICAgIHJldHVybiBvazsKLX0KLQotLyogIHdpdGhfaXRlbToKLSAqICAgdGVzdCBbJ2FzJyBleHByXQotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV93aXRoX2l0ZW0obm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCBvayA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCB3aXRoX2l0ZW0pCi0gICAgICAgICAgICAgICYmIChuY2ggPT0gMSB8fCBuY2ggPT0gMykKLSAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAwKSkpOwotICAgIGlmIChvayAmJiBuY2ggPT0gMykKLSAgICAgICAgb2sgPSAodmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAxKSwgImFzIikKLSAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfZXhwcihDSElMRCh0cmVlLCAyKSkpOwotICAgIHJldHVybiBvazsKLX0KLQotLyogIHdpdGhfc3RtdDoKLSAqICAgIDAgICAgICAxICAgICAgICAgIC4uLiAgICAgICAgICAgICAtMiAgIC0xCi0gKiAgICd3aXRoJyB3aXRoX2l0ZW0gKCcsJyB3aXRoX2l0ZW0pKiAnOicgc3VpdGUKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfd2l0aF9zdG10KG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IGk7Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgb2sgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgd2l0aF9zdG10KQotICAgICAgICAmJiAobmNoICUgMiA9PSAwKQotICAgICAgICAmJiB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAid2l0aCIpCi0gICAgICAgICYmIHZhbGlkYXRlX2NvbG9uKFJDSElMRCh0cmVlLCAtMikpCi0gICAgICAgICYmIHZhbGlkYXRlX3N1aXRlKFJDSElMRCh0cmVlLCAtMSkpKTsKLSAgICBmb3IgKGkgPSAxOyBvayAmJiBpIDwgbmNoIC0gMjsgaSArPSAyKQotICAgICAgICBvayA9IHZhbGlkYXRlX3dpdGhfaXRlbShDSElMRCh0cmVlLCBpKSk7Ci0gICAgcmV0dXJuIG9rOwotfQotCi0vKiBmdW5jZGVmOiAnZGVmJyBOQU1FIHBhcmFtZXRlcnMgWyctPicgdGVzdF0gJzonIHN1aXRlICovCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2Z1bmNkZWYobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSB2YWxpZGF0ZV9udHlwZSh0cmVlLCBmdW5jZGVmKTsKLSAgICBpZiAocmVzKSB7Ci0gICAgICAgIGlmIChuY2ggPT0gNSkgewotICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksICJkZWYiKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX250eXBlKENISUxEKHRyZWUsIDEpLCBOQU1FKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3BhcmFtZXRlcnMoQ0hJTEQodHJlZSwgMikpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfY29sb24oQ0hJTEQodHJlZSwgMykpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfc3VpdGUoQ0hJTEQodHJlZSwgNCkpKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChuY2ggPT0gNykgewotICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksICJkZWYiKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX250eXBlKENISUxEKHRyZWUsIDEpLCBOQU1FKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3BhcmFtZXRlcnMoQ0hJTEQodHJlZSwgMikpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfcmFycm93KENISUxEKHRyZWUsIDMpKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgNCkpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfY29sb24oQ0hJTEQodHJlZSwgNSkpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfc3VpdGUoQ0hJTEQodHJlZSwgNikpKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHJlcyA9IDA7Ci0gICAgICAgICAgICBlcnJfc3RyaW5nKCJpbGxlZ2FsIG51bWJlciBvZiBjaGlsZHJlbiBmb3IgZnVuY2RlZiIpOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiByZXM7Ci19Ci0KLS8qIGFzeW5jX2Z1bmNkZWY6IEFTWU5DIGZ1bmNkZWYgKi8KLQotc3RhdGljIGludAotdmFsaWRhdGVfYXN5bmNfZnVuY2RlZihub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9IHZhbGlkYXRlX250eXBlKHRyZWUsIGFzeW5jX2Z1bmNkZWYpOwotICAgIGlmIChyZXMpIHsKLSAgICAgICAgaWYgKG5jaCA9PSAyKSB7Ci0gICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfbnR5cGUoQ0hJTEQodHJlZSwgMCksIEFTWU5DKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2Z1bmNkZWYoQ0hJTEQodHJlZSwgMSkpKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHJlcyA9IDA7Ci0gICAgICAgICAgICBlcnJfc3RyaW5nKCJpbGxlZ2FsIG51bWJlciBvZiBjaGlsZHJlbiBmb3IgYXN5bmNfZnVuY2RlZiIpOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiByZXM7Ci19Ci0KLQotLyogYXN5bmNfc3RtdDogQVNZTkMgKGZ1bmNkZWYgfCB3aXRoX3N0bXQgfCBmb3Jfc3RtdCkgKi8KLQotc3RhdGljIGludAotdmFsaWRhdGVfYXN5bmNfc3RtdChub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBhc3luY19zdG10KQotICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX250eXBlKENISUxEKHRyZWUsIDApLCBBU1lOQykpOwotCi0gICAgaWYgKG5jaCAhPSAyKSB7Ci0gICAgICAgIHJlcyA9IDA7Ci0gICAgICAgIGVycl9zdHJpbmcoImlsbGVnYWwgbnVtYmVyIG9mIGNoaWxkcmVuIGZvciBhc3luY19zdG10Iik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKFRZUEUoQ0hJTEQodHJlZSwgMSkpID09IGZ1bmNkZWYpIHsKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2Z1bmNkZWYoQ0hJTEQodHJlZSwgMSkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKFRZUEUoQ0hJTEQodHJlZSwgMSkpID09IHdpdGhfc3RtdCkgewotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfd2l0aF9zdG10KENISUxEKHRyZWUsIDEpKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChUWVBFKENISUxEKHRyZWUsIDEpKSA9PSBmb3Jfc3RtdCkgewotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfZm9yKENISUxEKHRyZWUsIDEpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiByZXM7Ci19Ci0KLQotCi0vKiBkZWNvcmF0ZWQKLSAqICAgZGVjb3JhdG9ycyAoY2xhc3NkZWYgfCBmdW5jZGVmKQotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9kZWNvcmF0ZWQobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCBvayA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBkZWNvcmF0ZWQpCi0gICAgICAgICAgICAgICYmIChuY2ggPT0gMikKLSAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfZGVjb3JhdG9ycyhSQ0hJTEQodHJlZSwgLTIpKSk7Ci0gICAgaWYgKFRZUEUoUkNISUxEKHRyZWUsIC0xKSkgPT0gZnVuY2RlZikKLSAgICAgICAgb2sgPSBvayAmJiB2YWxpZGF0ZV9mdW5jZGVmKFJDSElMRCh0cmVlLCAtMSkpOwotICAgIGVsc2UKLSAgICAgICAgb2sgPSBvayAmJiB2YWxpZGF0ZV9jbGFzcyhSQ0hJTEQodHJlZSwgLTEpKTsKLSAgICByZXR1cm4gb2s7Ci19Ci0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2xhbWJkZWYobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgbGFtYmRlZikKLSAgICAgICAgICAgICAgICYmICgobmNoID09IDMpIHx8IChuY2ggPT0gNCkpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAibGFtYmRhIikKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsIG5jaCAtIDIpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCBuY2ggLSAxKSkpOwotCi0gICAgaWYgKHJlcyAmJiAobmNoID09IDQpKQotICAgICAgICByZXMgPSB2YWxpZGF0ZV92YXJhcmdzbGlzdChDSElMRCh0cmVlLCAxKSk7Ci0gICAgZWxzZSBpZiAoIXJlcyAmJiAhUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgKHZvaWQpIHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDMsICJsYW1iZGVmIik7Ci0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfbGFtYmRlZl9ub2NvbmQobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgbGFtYmRlZl9ub2NvbmQpCi0gICAgICAgICAgICAgICAmJiAoKG5jaCA9PSAzKSB8fCAobmNoID09IDQpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgImxhbWJkYSIpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb2xvbihDSElMRCh0cmVlLCBuY2ggLSAyKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgbmNoIC0gMSkpKTsKLQotICAgIGlmIChyZXMgJiYgKG5jaCA9PSA0KSkKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfdmFyYXJnc2xpc3QoQ0hJTEQodHJlZSwgMSkpOwotICAgIGVsc2UgaWYgKCFyZXMgJiYgIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICh2b2lkKSB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAzLCAibGFtYmRlZl9ub2NvbmQiKTsKLQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi0vKiAgYXJnbGlzdDoKLSAqCi0gKiAgKGFyZ3VtZW50ICcsJykqIChhcmd1bWVudCBbJywnXSB8ICcqJyB0ZXN0IFsnLCcgJyoqJyB0ZXN0XSB8ICcqKicgdGVzdCkKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfYXJnbGlzdChub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IGkgPSAwOwotICAgIGludCBvayA9IDE7Ci0KLSAgICBpZiAobmNoIDw9IDApCi0gICAgICAgIC8qIHJhaXNlIHRoZSByaWdodCBlcnJvciBmcm9tIGhhdmluZyBhbiBpbnZhbGlkIG51bWJlciBvZiBjaGlsZHJlbiAqLwotICAgICAgICByZXR1cm4gdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgbmNoICsgMSwgImFyZ2xpc3QiKTsKLQotICAgIGlmIChuY2ggPiAxKSB7Ci0gICAgICAgIGZvciAoaT0wOyBpPG5jaDsgaSsrKSB7Ci0gICAgICAgICAgICBpZiAoVFlQRShDSElMRCh0cmVlLCBpKSkgPT0gYXJndW1lbnQpIHsKLSAgICAgICAgICAgICAgICBub2RlICpjaCA9IENISUxEKHRyZWUsIGkpOwotICAgICAgICAgICAgICAgIGlmIChOQ0goY2gpID09IDIgJiYgVFlQRShDSElMRChjaCwgMSkpID09IGNvbXBfZm9yKSB7Ci0gICAgICAgICAgICAgICAgICAgIGVycl9zdHJpbmcoIm5lZWQgJygnLCAnKScgZm9yIGdlbmVyYXRvciBleHByZXNzaW9uIik7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHdoaWxlIChvayAmJiBuY2gtaSA+PSAyKSB7Ci0gICAgICAgIC8qIHNraXAgbGVhZGluZyAoYXJndW1lbnQgJywnKSAqLwotICAgICAgICBvayA9ICh2YWxpZGF0ZV9hcmd1bWVudChDSElMRCh0cmVlLCBpKSkKLSAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfY29tbWEoQ0hJTEQodHJlZSwgaSsxKSkpOwotICAgICAgICBpZiAob2spCi0gICAgICAgICAgICBpICs9IDI7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgfQotICAgIG9rID0gMTsKLSAgICBpZiAobmNoLWkgPiAwKSB7Ci0gICAgICAgIGludCBzeW0gPSBUWVBFKENISUxEKHRyZWUsIGkpKTsKLQotICAgICAgICBpZiAoc3ltID09IGFyZ3VtZW50KSB7Ci0gICAgICAgICAgICBvayA9IHZhbGlkYXRlX2FyZ3VtZW50KENISUxEKHRyZWUsIGkpKTsKLSAgICAgICAgICAgIGlmIChvayAmJiBpKzEgIT0gbmNoKSB7Ci0gICAgICAgICAgICAgICAgZXJyX3N0cmluZygiaWxsZWdhbCBhcmdsaXN0IHNwZWNpZmljYXRpb24iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiIChleHRyYSBzdHVmZiBvbiBlbmQpIik7Ci0gICAgICAgICAgICAgICAgb2sgPSAwOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBlcnJfc3RyaW5nKCJpbGxlZ2FsIGFyZ2xpc3Qgc3BlY2lmaWNhdGlvbiIpOwotICAgICAgICAgICAgb2sgPSAwOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiAob2spOwotfQotCi0KLQotLyogIGFyZ3VtZW50OiAoIHRlc3QgW2NvbXBfZm9yXSB8Ci0gKiAgICAgICAgICAgICAgdGVzdCAnPScgdGVzdCB8Ci0gKiAgICAgICAgICAgICAgJyoqJyB0ZXN0IHwKLSAqICAgICAgICAgICAgICAnKicgdGVzdCApCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2FyZ3VtZW50KG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGFyZ3VtZW50KQotICAgICAgICAgICAgICAgJiYgKChuY2ggPT0gMSkgfHwgKG5jaCA9PSAyKSB8fCAobmNoID09IDMpKSk7Ci0KLSAgICBpZiAocmVzKSB7Ci0gICAgICAgIGlmIChUWVBFKENISUxEKHRyZWUsIDApKSA9PSBET1VCTEVTVEFSKSB7Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIDEpKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChUWVBFKENISUxEKHRyZWUsIDApKSA9PSBTVEFSKSB7Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIDEpKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChuY2ggPT0gMSkgewotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAwKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAobmNoID09IDIpIHsKLSAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIDApKQotICAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb21wX2ZvcihDSElMRCh0cmVlLCAxKSkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKHJlcyAmJiAobmNoID09IDMpKSB7Ci0gICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAwKSkKLSAgICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfZXF1YWwoQ0hJTEQodHJlZSwgMSkpCi0gICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMikpKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotCi0vKiAgdHJhaWxlcjoKLSAqCi0gKiAgJygnIFthcmdsaXN0XSAnKScgfCAnWycgc3Vic2NyaXB0bGlzdCAnXScgfCAnLicgTkFNRQotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV90cmFpbGVyKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gdmFsaWRhdGVfbnR5cGUodHJlZSwgdHJhaWxlcikgJiYgKChuY2ggPT0gMikgfHwgKG5jaCA9PSAzKSk7Ci0KLSAgICBpZiAocmVzKSB7Ci0gICAgICAgIHN3aXRjaCAoVFlQRShDSElMRCh0cmVlLCAwKSkpIHsKLSAgICAgICAgICBjYXNlIExQQVI6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9ycGFyZW4oQ0hJTEQodHJlZSwgbmNoIC0gMSkpOwotICAgICAgICAgICAgaWYgKHJlcyAmJiAobmNoID09IDMpKQotICAgICAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2FyZ2xpc3QoQ0hJTEQodHJlZSwgMSkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBMU1FCOgotICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDMsICJ0cmFpbGVyIikKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9zdWJzY3JpcHRsaXN0KENISUxEKHRyZWUsIDEpKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX250eXBlKENISUxEKHRyZWUsIDIpLCBSU1FCKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIERPVDoKLSAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAyLCAidHJhaWxlciIpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbnR5cGUoQ0hJTEQodHJlZSwgMSksIE5BTUUpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXMgPSAwOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgICh2b2lkKSB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAyLCAidHJhaWxlciIpOwotICAgIH0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotLyogIHN1YnNjcmlwdGxpc3Q6Ci0gKgotICogIHN1YnNjcmlwdCAoJywnIHN1YnNjcmlwdCkqIFsnLCddCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3N1YnNjcmlwdGxpc3Qobm9kZSAqdHJlZSkKLXsKLSAgICByZXR1cm4gKHZhbGlkYXRlX3JlcGVhdGluZ19saXN0KHRyZWUsIHN1YnNjcmlwdGxpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZV9zdWJzY3JpcHQsICJzdWJzY3JpcHRsaXN0IikpOwotfQotCi0KLS8qICBzdWJzY3JpcHQ6Ci0gKgotICogICcuJyAnLicgJy4nIHwgdGVzdCB8IFt0ZXN0XSAnOicgW3Rlc3RdIFtzbGljZW9wXQotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9zdWJzY3JpcHQobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgb2Zmc2V0ID0gMDsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSB2YWxpZGF0ZV9udHlwZSh0cmVlLCBzdWJzY3JpcHQpICYmIChuY2ggPj0gMSkgJiYgKG5jaCA8PSA0KTsKLQotICAgIGlmICghcmVzKSB7Ci0gICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgIGVycl9zdHJpbmcoImludmFsaWQgbnVtYmVyIG9mIGFyZ3VtZW50cyBmb3Igc3Vic2NyaXB0IG5vZGUiKTsKLSAgICAgICAgcmV0dXJuICgwKTsKLSAgICB9Ci0gICAgaWYgKFRZUEUoQ0hJTEQodHJlZSwgMCkpID09IERPVCkKLSAgICAgICAgLyogdGFrZSBjYXJlIG9mICgnLicgJy4nICcuJykgcG9zc2liaWxpdHkgKi8KLSAgICAgICAgcmV0dXJuICh2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAzLCAic3Vic2NyaXB0IikKLSAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9kb3QoQ0hJTEQodHJlZSwgMCkpCi0gICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfZG90KENISUxEKHRyZWUsIDEpKQotICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2RvdChDSElMRCh0cmVlLCAyKSkpOwotICAgIGlmIChuY2ggPT0gMSkgewotICAgICAgICBpZiAoVFlQRShDSElMRCh0cmVlLCAwKSkgPT0gdGVzdCkKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMCkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9jb2xvbihDSElMRCh0cmVlLCAwKSk7Ci0gICAgICAgIHJldHVybiAocmVzKTsKLSAgICB9Ci0gICAgLyogIE11c3QgYmUgW3Rlc3RdICc6JyBbdGVzdF0gW3NsaWNlb3BdLAotICAgICAqICBidXQgYXQgbGVhc3Qgb25lIG9mIHRoZSBvcHRpb25hbCBjb21wb25lbnRzIHdpbGwKLSAgICAgKiAgYmUgcHJlc2VudCwgYnV0IHdlIGRvbid0IGtub3cgd2hpY2ggeWV0LgotICAgICAqLwotICAgIGlmICgoVFlQRShDSElMRCh0cmVlLCAwKSkgIT0gQ09MT04pIHx8IChuY2ggPT0gNCkpIHsKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAwKSk7Ci0gICAgICAgIG9mZnNldCA9IDE7Ci0gICAgfQotICAgIGlmIChyZXMpCi0gICAgICAgIHJlcyA9IHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsIG9mZnNldCkpOwotICAgIGlmIChyZXMpIHsKLSAgICAgICAgaW50IHJlbSA9IG5jaCAtICsrb2Zmc2V0OwotICAgICAgICBpZiAocmVtKSB7Ci0gICAgICAgICAgICBpZiAoVFlQRShDSElMRCh0cmVlLCBvZmZzZXQpKSA9PSB0ZXN0KSB7Ci0gICAgICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCBvZmZzZXQpKTsKLSAgICAgICAgICAgICAgICArK29mZnNldDsKLSAgICAgICAgICAgICAgICAtLXJlbTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChyZXMgJiYgcmVtKQotICAgICAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3NsaWNlb3AoQ0hJTEQodHJlZSwgb2Zmc2V0KSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3NsaWNlb3Aobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAoKG5jaCA9PSAxKSB8fCB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAyLCAic2xpY2VvcCIpKQotICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9udHlwZSh0cmVlLCBzbGljZW9wKTsKLSAgICBpZiAoIXJlcyAmJiAhUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICByZXMgPSB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAxLCAic2xpY2VvcCIpOwotICAgIH0KLSAgICBpZiAocmVzKQotICAgICAgICByZXMgPSB2YWxpZGF0ZV9jb2xvbihDSElMRCh0cmVlLCAwKSk7Ci0gICAgaWYgKHJlcyAmJiAobmNoID09IDIpKQotICAgICAgICByZXMgPSB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIDEpKTsKLQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV90ZXN0X29yX3N0YXJfZXhwcihub2RlICpuKQotewotICAgIGlmIChUWVBFKG4pID09IHRlc3QpCi0gICAgICAgIHJldHVybiB2YWxpZGF0ZV90ZXN0KG4pOwotICAgIHJldHVybiB2YWxpZGF0ZV9zdGFyX2V4cHIobik7Ci19Ci0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2V4cHJfb3Jfc3Rhcl9leHByKG5vZGUgKm4pCi17Ci0gICAgaWYgKFRZUEUobikgPT0gZXhwcikKLSAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHIobik7Ci0gICAgcmV0dXJuIHZhbGlkYXRlX3N0YXJfZXhwcihuKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9leHBybGlzdChub2RlICp0cmVlKQotewotICAgIHJldHVybiAodmFsaWRhdGVfcmVwZWF0aW5nX2xpc3QodHJlZSwgZXhwcmxpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZV9leHByX29yX3N0YXJfZXhwciwgImV4cHJsaXN0IikpOwotfQotCi0vKiBJbmNyZW1lbnRpbmcgdmFsaWRhdGUgZnVuY3Rpb25zIHJldHVybnMgbm9uemVybyBpZmYgc3VjY2VzcyAobGlrZSBvdGhlcgotICogdmFsaWRhdGUgZnVuY3Rpb25zLCBhbmQgYWR2YW5jZSAqaSBieSB0aGUgbGVuZ3RoIG9mIHRoZSBtYXRjaGVkIHBhdHRlcm4uICovCi0KLS8qIHRlc3QgJzonIHRlc3QgKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3Rlc3RfY29sb25fdGVzdF9pbmMobm9kZSAqdHJlZSwgaW50ICppKQotewotICAgIHJldHVybiAodmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAoKmkpKyspKQotICAgICAgICAgICAgJiYgdmFsaWRhdGVfY29sb24oQ0hJTEQodHJlZSwgKCppKSsrKSkKLSAgICAgICAgICAgICYmIHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgKCppKSsrKSkpOwotfQotCi0vKiB0ZXN0ICc6JyB0ZXN0IHwgJyoqJyBleHByICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9kaWN0X2VsZW1lbnRfaW5jKG5vZGUgKnRyZWUsIGludCAqaSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAwOwotICAgIGlmIChuY2ggLSAqaSA+PSAyKSB7Ci0gICAgICAgIGlmIChUWVBFKENISUxEKHRyZWUsICppKzEpKSA9PSBDT0xPTikgewotICAgICAgICAgICAgLyogdGVzdCAnOicgdGVzdCAqLwotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfdGVzdF9jb2xvbl90ZXN0X2luYyh0cmVlLCBpKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8qICcqKicgZXhwciAqLwotICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX2RvdWJsZXN0YXIoQ0hJTEQodHJlZSwgKCppKSsrKSkKLSAgICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfZXhwcihDSElMRCh0cmVlLCAoKmkpKyspKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHJlczsKLX0KLQotLyoKLSAqICBkaWN0b3JzZXRtYWtlcjoKLSAqCi0gKiAgICggKCh0ZXN0ICc6JyB0ZXN0IHwgJyoqJyBleHByKQotICogICAgICAoY29tcF9mb3IgfCAoJywnICh0ZXN0ICc6JyB0ZXN0IHwgJyoqJyBleHByKSkqIFsnLCddKSkgfAotICogICAgICgodGVzdCB8ICcqJyB0ZXN0KQotICogICAgICAoY29tcF9mb3IgfCAoJywnICh0ZXN0IHwgJyonIHRlc3QpKSogWycsJ10pKSApCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2RpY3RvcnNldG1ha2VyKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzOwotICAgIGludCBpID0gMDsKLQotICAgIHJlcyA9IHZhbGlkYXRlX250eXBlKHRyZWUsIGRpY3RvcnNldG1ha2VyKTsKLSAgICBpZiAoIXJlcykKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBpZiAobmNoIC0gaSA8IDEpIHsKLSAgICAgICAgLyogVW5jb25kaXRpb25hbGx5IHJhaXNlLiAqLwotICAgICAgICAodm9pZCkgdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMSwgImRpY3RvcnNldG1ha2VyIik7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIGlmIChuY2ggLSBpID49IDIKLSAgICAgICAgJiYgKChUWVBFKENISUxEKHRyZWUsIGkrMSkpID09IENPTE9OKSB8fAotICAgICAgICAgICAgKFRZUEUoQ0hJTEQodHJlZSwgaSkpID09IERPVUJMRVNUQVIpKSkgewotICAgICAgICAvKiBEaWN0aW9uYXJ5IGRpc3BsYXkgb3IgZGljdGlvbmFyeSBjb21wcmVoZW5zaW9uLiAqLwotICAgICAgICBpZiAobmNoIC0gaSA+PSA0ICYmIFRZUEUoQ0hJTEQodHJlZSwgaSszKSkgPT0gY29tcF9mb3IpIHsKLSAgICAgICAgICAgIC8qIERpY3Rpb25hcnkgY29tcHJlaGVuc2lvbi4gKi8KLSAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV90ZXN0X2NvbG9uX3Rlc3RfaW5jKHRyZWUsICZpKQotICAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb21wX2ZvcihDSElMRCh0cmVlLCBpKyspKSk7Ci0gICAgICAgICAgICBpZiAoIXJlcykKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8qIERpY3Rpb25hcnkgZGlzcGxheS4gKi8KLSAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZV9yZXBlYXRpbmdfbGlzdF92YXJpYWJsZSgKLSAgICAgICAgICAgICAgICAgICAgdHJlZSwKLSAgICAgICAgICAgICAgICAgICAgZGljdG9yc2V0bWFrZXIsCi0gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlX2RpY3RfZWxlbWVudF9pbmMsCi0gICAgICAgICAgICAgICAgICAgICZpLAotICAgICAgICAgICAgICAgICAgICAiZGljdG9yc2V0bWFrZXIiKTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8qIFNldCBkaXNwbGF5IG9yIHNldCBjb21wcmVoZW5zaW9uLiAqLwotICAgICAgICBpZiAobmNoIC0gaSA+PSAyICYmIFRZUEUoQ0hJTEQodHJlZSwgaSArIDEpKSA9PSBjb21wX2ZvcikgewotICAgICAgICAgICAgLyogU2V0IGNvbXByZWhlbnNpb24uICovCi0gICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCBpKyspKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbXBfZm9yKENISUxEKHRyZWUsIGkrKykpKTsKLSAgICAgICAgICAgIGlmICghcmVzKQotICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLyogU2V0IGRpc3BsYXkuICovCi0gICAgICAgICAgIHJldHVybiB2YWxpZGF0ZV9yZXBlYXRpbmdfbGlzdCh0cmVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGljdG9yc2V0bWFrZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZV90ZXN0X29yX3N0YXJfZXhwciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkaWN0b3JzZXRtYWtlciIpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKG5jaCAtIGkgPiAwKSB7Ci0gICAgICAgIGVycl9zdHJpbmcoIklsbGVnYWwgdHJhaWxpbmcgbm9kZXMgZm9yIGRpY3RvcnNldG1ha2VyLiIpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICByZXR1cm4gMTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9ldmFsX2lucHV0KG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IHBvczsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgZXZhbF9pbnB1dCkKLSAgICAgICAgICAgICAgICYmIChuY2ggPj0gMikKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3Rlc3RsaXN0KENISUxEKHRyZWUsIDApKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbnR5cGUoQ0hJTEQodHJlZSwgbmNoIC0gMSksIEVORE1BUktFUikpOwotCi0gICAgZm9yIChwb3MgPSAxOyByZXMgJiYgKHBvcyA8IChuY2ggLSAxKSk7ICsrcG9zKQotICAgICAgICByZXMgPSB2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCBwb3MpLCBORVdMSU5FKTsKLQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9ub2RlKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50ICAgbmNoICA9IDA7ICAgICAgICAgICAgICAgICAgICAgLyogbnVtLiBjaGlsZHJlbiBvbiBjdXJyZW50IG5vZGUgICovCi0gICAgaW50ICAgcmVzICA9IDE7ICAgICAgICAgICAgICAgICAgICAgLyogcmVzdWx0IHZhbHVlICAgICAgICAgICAgICAgICAgICovCi0gICAgbm9kZSogbmV4dCA9IDA7ICAgICAgICAgICAgICAgICAgICAgLyogbm9kZSB0byBwcm9jZXNzIGFmdGVyIHRoaXMgb25lICovCi0KLSAgICB3aGlsZSAocmVzICYmICh0cmVlICE9IDApKSB7Ci0gICAgICAgIG5jaCAgPSBOQ0godHJlZSk7Ci0gICAgICAgIG5leHQgPSAwOwotICAgICAgICBzd2l0Y2ggKFRZUEUodHJlZSkpIHsKLSAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgKiAgRGVmaW5pdGlvbiBub2Rlcy4KLSAgICAgICAgICAgICAqLwotICAgICAgICAgIGNhc2UgYXN5bmNfZnVuY2RlZjoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2FzeW5jX2Z1bmNkZWYodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGFzeW5jX3N0bXQ6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9hc3luY19zdG10KHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBmdW5jZGVmOgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfZnVuY2RlZih0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2Ugd2l0aF9zdG10OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfd2l0aF9zdG10KHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBjbGFzc2RlZjoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2NsYXNzKHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBkZWNvcmF0ZWQ6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9kZWNvcmF0ZWQodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgKiAgIlRyaXZpYWwiIHBhcnNlIHRyZWUgbm9kZXMuCi0gICAgICAgICAgICAgKiAgKFdoeSBkaWQgSSBjYWxsIHRoZXNlIHRyaXZpYWw/KQotICAgICAgICAgICAgICovCi0gICAgICAgICAgY2FzZSBzdG10OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfc3RtdCh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2Ugc21hbGxfc3RtdDoKLSAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgKiAgZXhwcl9zdG10IHwgZGVsX3N0bXQgfCBwYXNzX3N0bXQgfCBmbG93X3N0bXQgfAotICAgICAgICAgICAgICogIGltcG9ydF9zdG10IHwgZ2xvYmFsX3N0bXQgfCBub25sb2NhbF9zdG10IHwgYXNzZXJ0X3N0bXQKLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfc21hbGxfc3RtdCh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgZmxvd19zdG10OgotICAgICAgICAgICAgcmVzICA9ICh2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAxLCAiZmxvd19zdG10IikKLSAgICAgICAgICAgICAgICAgICAgJiYgKChUWVBFKENISUxEKHRyZWUsIDApKSA9PSBicmVha19zdG10KQotICAgICAgICAgICAgICAgICAgICAgICAgfHwgKFRZUEUoQ0hJTEQodHJlZSwgMCkpID09IGNvbnRpbnVlX3N0bXQpCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCAoVFlQRShDSElMRCh0cmVlLCAwKSkgPT0geWllbGRfc3RtdCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IChUWVBFKENISUxEKHRyZWUsIDApKSA9PSByZXR1cm5fc3RtdCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IChUWVBFKENISUxEKHRyZWUsIDApKSA9PSByYWlzZV9zdG10KSkpOwotICAgICAgICAgICAgaWYgKHJlcykKLSAgICAgICAgICAgICAgICBuZXh0ID0gQ0hJTEQodHJlZSwgMCk7Ci0gICAgICAgICAgICBlbHNlIGlmIChuY2ggPT0gMSkKLSAgICAgICAgICAgICAgICBlcnJfc3RyaW5nKCJpbGxlZ2FsIGZsb3dfc3RtdCB0eXBlIik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIHlpZWxkX3N0bXQ6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV95aWVsZF9zdG10KHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogIENvbXBvdW5kIHN0YXRlbWVudHMuCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICBjYXNlIHNpbXBsZV9zdG10OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfc2ltcGxlX3N0bXQodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGNvbXBvdW5kX3N0bXQ6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9jb21wb3VuZF9zdG10KHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogIEZ1bmRhbWVudGFsIHN0YXRlbWVudHMuCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICBjYXNlIGV4cHJfc3RtdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2V4cHJfc3RtdCh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgZGVsX3N0bXQ6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9kZWxfc3RtdCh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgcGFzc19zdG10OgotICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDEsICJwYXNzIikKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAicGFzcyIpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgYnJlYWtfc3RtdDoKLSAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAxLCAiYnJlYWsiKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksICJicmVhayIpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgY29udGludWVfc3RtdDoKLSAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAxLCAiY29udGludWUiKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksICJjb250aW51ZSIpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgcmV0dXJuX3N0bXQ6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9yZXR1cm5fc3RtdCh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgcmFpc2Vfc3RtdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3JhaXNlX3N0bXQodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGltcG9ydF9zdG10OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfaW1wb3J0X3N0bXQodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGltcG9ydF9uYW1lOgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfaW1wb3J0X25hbWUodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGltcG9ydF9mcm9tOgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfaW1wb3J0X2Zyb20odHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGdsb2JhbF9zdG10OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfZ2xvYmFsX3N0bXQodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIG5vbmxvY2FsX3N0bXQ6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9ub25sb2NhbF9zdG10KHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBhc3NlcnRfc3RtdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2Fzc2VydF9zdG10KHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBpZl9zdG10OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfaWYodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIHdoaWxlX3N0bXQ6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV93aGlsZSh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgZm9yX3N0bXQ6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9mb3IodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIHRyeV9zdG10OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfdHJ5KHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBzdWl0ZToKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3N1aXRlKHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogIEV4cHJlc3Npb24gbm9kZXMuCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICBjYXNlIHRlc3RsaXN0OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfdGVzdGxpc3QodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIHlpZWxkX2V4cHI6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV95aWVsZF9leHByKHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSB0ZXN0OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfdGVzdCh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgYW5kX3Rlc3Q6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9hbmRfdGVzdCh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2Ugbm90X3Rlc3Q6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9ub3RfdGVzdCh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgY29tcGFyaXNvbjoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2NvbXBhcmlzb24odHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGV4cHJsaXN0OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfZXhwcmxpc3QodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGNvbXBfb3A6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9jb21wX29wKHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBleHByOgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfZXhwcih0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgeG9yX2V4cHI6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV94b3JfZXhwcih0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgYW5kX2V4cHI6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9hbmRfZXhwcih0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2Ugc2hpZnRfZXhwcjoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3NoaWZ0X2V4cHIodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGFyaXRoX2V4cHI6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9hcml0aF9leHByKHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSB0ZXJtOgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfdGVybSh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgZmFjdG9yOgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfZmFjdG9yKHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBwb3dlcjoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3Bvd2VyKHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBhdG9tOgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfYXRvbSh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIC8qIEhvcGVmdWxseSBuZXZlciByZWFjaGVkISAqLwotICAgICAgICAgICAgZXJyX3N0cmluZygidW5yZWNvZ25pemVkIG5vZGUgdHlwZSIpOwotICAgICAgICAgICAgcmVzID0gMDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIHRyZWUgPSBuZXh0OwotICAgIH0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfZXhwcl90cmVlKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IHJlcyA9IHZhbGlkYXRlX2V2YWxfaW5wdXQodHJlZSk7Ci0KLSAgICBpZiAoIXJlcyAmJiAhUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgZXJyX3N0cmluZygiY291bGQgbm90IHZhbGlkYXRlIGV4cHJlc3Npb24gdHVwbGUiKTsKLQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi0vKiAgZmlsZV9pbnB1dDoKLSAqICAgICAgKE5FV0xJTkUgfCBzdG10KSogRU5ETUFSS0VSCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2ZpbGVfaW5wdXQobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgajsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpIC0gMTsKLSAgICBpbnQgcmVzID0gKChuY2ggPj0gMCkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX250eXBlKENISUxEKHRyZWUsIG5jaCksIEVORE1BUktFUikpOwotCi0gICAgZm9yIChqID0gMDsgcmVzICYmIChqIDwgbmNoKTsgKytqKSB7Ci0gICAgICAgIGlmIChUWVBFKENISUxEKHRyZWUsIGopKSA9PSBzdG10KQotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfc3RtdChDSElMRCh0cmVlLCBqKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX25ld2xpbmUoQ0hJTEQodHJlZSwgaikpOwotICAgIH0KLSAgICAvKiAgVGhpcyBzdGF5cyBpbiB0byBwcmV2ZW50IGFueSBpbnRlcm5hbCBmYWlsdXJlcyBmcm9tIGdldHRpbmcgdG8gdGhlCi0gICAgICogIHVzZXIuICBIb3BlZnVsbHksIHRoaXMgd29uJ3QgYmUgbmVlZGVkLiAgSWYgYSB1c2VyIHJlcG9ydHMgZ2V0dGluZwotICAgICAqICB0aGlzLCB3ZSBoYXZlIHNvbWUgZGVidWdnaW5nIHRvIGRvLgotICAgICAqLwotICAgIGlmICghcmVzICYmICFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICBlcnJfc3RyaW5nKCJWQUxJREFUSU9OIEZBSUxVUkU6IHJlcG9ydCB0aGlzIHRvIHRoZSBtYWludGFpbmVyISIpOwotCi0gICAgcmV0dXJuIChyZXMpOwotfQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9lbmNvZGluZ19kZWNsKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKChuY2ggPT0gMSkKLSAgICAgICAgJiYgdmFsaWRhdGVfZmlsZV9pbnB1dChDSElMRCh0cmVlLCAwKSkpOwotCi0gICAgaWYgKCFyZXMgJiYgIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIGVycl9zdHJpbmcoIkVycm9yIFBhcnNpbmcgZW5jb2RpbmdfZGVjbCIpOwotCi0gICAgcmV0dXJuIHJlczsKLX0KLQogc3RhdGljIFB5T2JqZWN0KgogcGlja2xlX2NvbnN0cnVjdG9yID0gTlVMTDsKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9wb3NpeG1vZHVsZS5jIGIvTW9kdWxlcy9wb3NpeG1vZHVsZS5jCmluZGV4IDNlNDQ2YTUuLmFlMjUxMDIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvcG9zaXhtb2R1bGUuYworKysgYi9Nb2R1bGVzL3Bvc2l4bW9kdWxlLmMKQEAgLTMyLDYgKzMyLDEyIEBACiAjaW5jbHVkZSAid2lucmVwYXJzZS5oIgogI2VuZGlmCiAKKy8qIE9uIGFuZHJvaWQgQVBJIGxldmVsIDIxLCAnQVRfRUFDQ0VTUycgaXMgbm90IGRlY2xhcmVkIGFsdGhvdWdoCisgKiBIQVZFX0ZBQ0NFU1NBVCBpcyBkZWZpbmVkLiAqLworI2lmZGVmIF9fQU5EUk9JRF9fCisjdW5kZWYgSEFWRV9GQUNDRVNTQVQKKyNlbmRpZgorCiAjaW5jbHVkZSA8c3RkaW8uaD4gIC8qIG5lZWRlZCBmb3IgY3Rlcm1pZCgpICovCiAKICNpZmRlZiBfX2NwbHVzcGx1cwpAQCAtMTI3LDYgKzEzMywxMyBAQAogI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4KICNlbmRpZgogCisjaWZkZWYgSEFWRV9MSU5VWF9SQU5ET01fSAorIyAgaW5jbHVkZSA8bGludXgvcmFuZG9tLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX0dFVFJBTkRPTV9TWVNDQUxMCisjICBpbmNsdWRlIDxzeXMvc3lzY2FsbC5oPgorI2VuZGlmCisKICNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCiAjICBkZWZpbmUgVEVSTVNJWkVfVVNFX0NPTklPCiAjZWxpZiBkZWZpbmVkKEhBVkVfU1lTX0lPQ1RMX0gpCkBAIC0xNTEsNiArMTY0LDggQEAKICNkZWZpbmUgSEFWRV9HRVRMT0dJTiAgIDEKICNkZWZpbmUgSEFWRV9TUEFXTlYgICAgIDEKICNkZWZpbmUgSEFWRV9FWEVDViAgICAgIDEKKyNkZWZpbmUgSEFWRV9XU1BBV05WICAgIDEKKyNkZWZpbmUgSEFWRV9XRVhFQ1YgICAgIDEKICNkZWZpbmUgSEFWRV9QSVBFICAgICAgIDEKICNkZWZpbmUgSEFWRV9TWVNURU0gICAgIDEKICNkZWZpbmUgSEFWRV9DV0FJVCAgICAgIDEKQEAgLTYzNCwyMiArNjQ5LDE0IEBACiAjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogCiAKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotIyAgZGVmaW5lIF9QeUxvbmdfRnJvbURldiBQeUxvbmdfRnJvbUxvbmdMb25nCi0jZWxzZQotIyAgZGVmaW5lIF9QeUxvbmdfRnJvbURldiBQeUxvbmdfRnJvbUxvbmcKLSNlbmRpZgorI2RlZmluZSBfUHlMb25nX0Zyb21EZXYgUHlMb25nX0Zyb21Mb25nTG9uZwogCiAKICNpZiBkZWZpbmVkKEhBVkVfTUtOT0QpICYmIGRlZmluZWQoSEFWRV9NQUtFREVWKQogc3RhdGljIGludAogX1B5X0Rldl9Db252ZXJ0ZXIoUHlPYmplY3QgKm9iaiwgdm9pZCAqcCkKIHsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwogICAgICooKGRldl90ICopcCkgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nKG9iaik7Ci0jZWxzZQotICAgICooKGRldl90ICopcCkgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmcob2JqKTsKLSNlbmRpZgogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gMTsKQEAgLTY3MSwyMSArNjc4LDIwIEBACiAjZW5kaWYKIAogc3RhdGljIGludAotX2ZkX2NvbnZlcnRlcihQeU9iamVjdCAqbywgaW50ICpwLCBjb25zdCBjaGFyICphbGxvd2VkKQorX2ZkX2NvbnZlcnRlcihQeU9iamVjdCAqbywgaW50ICpwKQogewogICAgIGludCBvdmVyZmxvdzsKICAgICBsb25nIGxvbmdfdmFsdWU7CiAKICAgICBQeU9iamVjdCAqaW5kZXggPSBQeU51bWJlcl9JbmRleChvKTsKICAgICBpZiAoaW5kZXggPT0gTlVMTCkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IHNob3VsZCBiZSAlcywgbm90ICUuMjAwcyIsCi0gICAgICAgICAgICAgICAgICAgICBhbGxvd2VkLCBQeV9UWVBFKG8pLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisgICAgYXNzZXJ0KFB5TG9uZ19DaGVjayhpbmRleCkpOwogICAgIGxvbmdfdmFsdWUgPSBQeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3coaW5kZXgsICZvdmVyZmxvdyk7CiAgICAgUHlfREVDUkVGKGluZGV4KTsKKyAgICBhc3NlcnQoIVB5RXJyX09jY3VycmVkKCkpOwogICAgIGlmIChvdmVyZmxvdyA+IDAgfHwgbG9uZ192YWx1ZSA+IElOVF9NQVgpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiZmQgaXMgZ3JlYXRlciB0aGFuIG1heGltdW0iKTsKQEAgLTcwOCw3ICs3MTQsMTUgQEAKICAgICAgICAgKihpbnQgKilwID0gREVGQVVMVF9ESVJfRkQ7CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KLSAgICByZXR1cm4gX2ZkX2NvbnZlcnRlcihvLCAoaW50ICopcCwgImludGVnZXIiKTsKKyAgICBlbHNlIGlmIChQeUluZGV4X0NoZWNrKG8pKSB7CisgICAgICAgIHJldHVybiBfZmRfY29udmVydGVyKG8sIChpbnQgKilwKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgc2hvdWxkIGJlIGludGVnZXIgb3IgTm9uZSwgbm90ICUuMjAwcyIsCisgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKG8pLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogfQogCiAKQEAgLTcyMyw3ICs3MzcsNyBAQAogICoKICAqICAgKiBPbiBXaW5kb3dzLCBpZiB3ZSBnZXQgYSAoVW5pY29kZSkgc3RyaW5nIHdlCiAgKiAgICAgZXh0cmFjdCB0aGUgd2NoYXJfdCAqIGFuZCByZXR1cm4gaXQ7IGlmIHdlIGdldAotICogICAgIGJ5dGVzIHdlIGV4dHJhY3QgdGhlIGNoYXIgKiBhbmQgcmV0dXJuIHRoYXQuCisgKiAgICAgYnl0ZXMgd2UgZGVjb2RlIHRvIHdjaGFyX3QgKiBhbmQgcmV0dXJuIHRoYXQuCiAgKgogICogICAqIE9uIGFsbCBvdGhlciBwbGF0Zm9ybXMsIHN0cmluZ3MgYXJlIGVuY29kZWQKICAqICAgICB0byBieXRlcyB1c2luZyBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsIHRoZW4gd2UKQEAgLTc1NSw3ICs3NjksOSBAQAogICogICAgIGFuZCB3YXMgbm90IGVuY29kZWQuICAoT25seSB1c2VkIG9uIFdpbmRvd3MuKQogICogICBwYXRoLm5hcnJvdwogICogICAgIFBvaW50cyB0byB0aGUgcGF0aCBpZiBpdCB3YXMgZXhwcmVzc2VkIGFzIGJ5dGVzLAotICogICAgIG9yIGl0IHdhcyBVbmljb2RlIGFuZCB3YXMgZW5jb2RlZCB0byBieXRlcy4KKyAqICAgICBvciBpdCB3YXMgVW5pY29kZSBhbmQgd2FzIGVuY29kZWQgdG8gYnl0ZXMuIChPbiBXaW5kb3dzLAorICogICAgIGlzIGEgbm9uLXplcm8gaW50ZWdlciBpZiB0aGUgcGF0aCB3YXMgZXhwcmVzc2VkIGFzIGJ5dGVzLgorICogICAgIFRoZSB0eXBlIGlzIGRlbGliZXJhdGVseSBpbmNvbXBhdGlibGUgdG8gcHJldmVudCBtaXN1c2UuKQogICogICBwYXRoLmZkCiAgKiAgICAgQ29udGFpbnMgYSBmaWxlIGRlc2NyaXB0b3IgaWYgcGF0aC5hY2NlcHRfZmQgd2FzIHRydWUKICAqICAgICBhbmQgdGhlIGNhbGxlciBwcm92aWRlZCBhIHNpZ25lZCBpbnRlZ2VyIGluc3RlYWQgb2YgYW55CkBAIC03OTksMTYgKzgxNSwyNSBAQAogICAgIGNvbnN0IGNoYXIgKmFyZ3VtZW50X25hbWU7CiAgICAgaW50IG51bGxhYmxlOwogICAgIGludCBhbGxvd19mZDsKLSAgICB3Y2hhcl90ICp3aWRlOwotICAgIGNoYXIgKm5hcnJvdzsKKyAgICBjb25zdCB3Y2hhcl90ICp3aWRlOworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBCT09MIG5hcnJvdzsKKyNlbHNlCisgICAgY29uc3QgY2hhciAqbmFycm93OworI2VuZGlmCiAgICAgaW50IGZkOwogICAgIFB5X3NzaXplX3QgbGVuZ3RoOwogICAgIFB5T2JqZWN0ICpvYmplY3Q7CiAgICAgUHlPYmplY3QgKmNsZWFudXA7CiB9IHBhdGhfdDsKIAorI2lmZGVmIE1TX1dJTkRPV1MKKyNkZWZpbmUgUEFUSF9UX0lOSVRJQUxJWkUoZnVuY3Rpb25fbmFtZSwgYXJndW1lbnRfbmFtZSwgbnVsbGFibGUsIGFsbG93X2ZkKSBcCisgICAge2Z1bmN0aW9uX25hbWUsIGFyZ3VtZW50X25hbWUsIG51bGxhYmxlLCBhbGxvd19mZCwgTlVMTCwgRkFMU0UsIC0xLCAwLCBOVUxMLCBOVUxMfQorI2Vsc2UKICNkZWZpbmUgUEFUSF9UX0lOSVRJQUxJWkUoZnVuY3Rpb25fbmFtZSwgYXJndW1lbnRfbmFtZSwgbnVsbGFibGUsIGFsbG93X2ZkKSBcCiAgICAge2Z1bmN0aW9uX25hbWUsIGFyZ3VtZW50X25hbWUsIG51bGxhYmxlLCBhbGxvd19mZCwgTlVMTCwgTlVMTCwgLTEsIDAsIE5VTEwsIE5VTEx9CisjZW5kaWYKIAogc3RhdGljIHZvaWQKIHBhdGhfY2xlYW51cChwYXRoX3QgKnBhdGgpIHsKQEAgLTgxOCwxMSArODQzLDE5IEBACiB9CiAKIHN0YXRpYyBpbnQKLXBhdGhfY29udmVydGVyKFB5T2JqZWN0ICpvLCB2b2lkICpwKSB7CitwYXRoX2NvbnZlcnRlcihQeU9iamVjdCAqbywgdm9pZCAqcCkKK3sKICAgICBwYXRoX3QgKnBhdGggPSAocGF0aF90ICopcDsKLSAgICBQeU9iamVjdCAqdW5pY29kZSwgKmJ5dGVzOworICAgIFB5T2JqZWN0ICpieXRlcywgKnRvX2NsZWFudXAgPSBOVUxMOwogICAgIFB5X3NzaXplX3QgbGVuZ3RoOwotICAgIGNoYXIgKm5hcnJvdzsKKyAgICBpbnQgaXNfaW5kZXgsIGlzX2J1ZmZlciwgaXNfYnl0ZXMsIGlzX3VuaWNvZGU7CisgICAgLyogRGVmYXVsdCB0byBmYWlsdXJlLCBmb3JjaW5nIGV4cGxpY2l0IHNpZ25hbGluZyBvZiBzdWNjY2Vzcy4gKi8KKyAgICBpbnQgcmV0ID0gMDsKKyAgICBjb25zdCBjaGFyICpuYXJyb3c7CisjaWZkZWYgTVNfV0lORE9XUworICAgIFB5T2JqZWN0ICp3bzsKKyAgICBjb25zdCB3Y2hhcl90ICp3aWRlOworI2VuZGlmCiAKICNkZWZpbmUgRk9STUFUX0VYQ0VQVElPTihleGMsIGZtdCkgXAogICAgIFB5RXJyX0Zvcm1hdChleGMsICIlcyVzIiBmbXQsIFwKQEAgLTgzNiwxMjIgKzg2OSwxOTEgQEAKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQogCi0gICAgLyogZW5zdXJlIGl0J3MgYWx3YXlzIHNhZmUgdG8gY2FsbCBwYXRoX2NsZWFudXAoKSAqLworICAgIC8qIEVuc3VyZSBpdCdzIGFsd2F5cyBzYWZlIHRvIGNhbGwgcGF0aF9jbGVhbnVwKCkuICovCiAgICAgcGF0aC0+Y2xlYW51cCA9IE5VTEw7CiAKLSAgICBpZiAobyA9PSBQeV9Ob25lKSB7Ci0gICAgICAgIGlmICghcGF0aC0+bnVsbGFibGUpIHsKLSAgICAgICAgICAgIEZPUk1BVF9FWENFUFRJT04oUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2FuJ3Qgc3BlY2lmeSBOb25lIGZvciAlcyBhcmd1bWVudCIpOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KKyAgICBpZiAoKG8gPT0gUHlfTm9uZSkgJiYgcGF0aC0+bnVsbGFibGUpIHsKICAgICAgICAgcGF0aC0+d2lkZSA9IE5VTEw7CisjaWZkZWYgTVNfV0lORE9XUworICAgICAgICBwYXRoLT5uYXJyb3cgPSBGQUxTRTsKKyNlbHNlCiAgICAgICAgIHBhdGgtPm5hcnJvdyA9IE5VTEw7CisjZW5kaWYKICAgICAgICAgcGF0aC0+bGVuZ3RoID0gMDsKICAgICAgICAgcGF0aC0+b2JqZWN0ID0gbzsKICAgICAgICAgcGF0aC0+ZmQgPSAtMTsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQogCi0gICAgdW5pY29kZSA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KG8pOwotICAgIGlmICh1bmljb2RlKSB7Ci0jaWZkZWYgTVNfV0lORE9XUwotICAgICAgICB3Y2hhcl90ICp3aWRlOworICAgIC8qIE9ubHkgY2FsbCB0aGlzIGhlcmUgc28gdGhhdCB3ZSBkb24ndCB0cmVhdCB0aGUgcmV0dXJuIHZhbHVlIG9mCisgICAgICAgb3MuZnNwYXRoKCkgYXMgYW4gZmQgb3IgYnVmZmVyLiAqLworICAgIGlzX2luZGV4ID0gcGF0aC0+YWxsb3dfZmQgJiYgUHlJbmRleF9DaGVjayhvKTsKKyAgICBpc19idWZmZXIgPSBQeU9iamVjdF9DaGVja0J1ZmZlcihvKTsKKyAgICBpc19ieXRlcyA9IFB5Qnl0ZXNfQ2hlY2sobyk7CisgICAgaXNfdW5pY29kZSA9IFB5VW5pY29kZV9DaGVjayhvKTsKIAotICAgICAgICB3aWRlID0gUHlVbmljb2RlX0FzVW5pY29kZUFuZFNpemUodW5pY29kZSwgJmxlbmd0aCk7CisgICAgaWYgKCFpc19pbmRleCAmJiAhaXNfYnVmZmVyICYmICFpc191bmljb2RlICYmICFpc19ieXRlcykgeworICAgICAgICAvKiBJbmxpbmUgUHlPU19GU1BhdGgoKSBmb3IgYmV0dGVyIGVycm9yIG1lc3NhZ2VzLiAqLworICAgICAgICBfUHlfSURFTlRJRklFUihfX2ZzcGF0aF9fKTsKKyAgICAgICAgUHlPYmplY3QgKmZ1bmMgPSBOVUxMOworCisgICAgICAgIGZ1bmMgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChvLCAmUHlJZF9fX2ZzcGF0aF9fKTsKKyAgICAgICAgaWYgKE5VTEwgPT0gZnVuYykgeworICAgICAgICAgICAgZ290byBlcnJvcl9leGl0OworICAgICAgICB9CisKKyAgICAgICAgbyA9IHRvX2NsZWFudXAgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGZ1bmMsIE5VTEwpOworICAgICAgICBQeV9ERUNSRUYoZnVuYyk7CisgICAgICAgIGlmIChOVUxMID09IG8pIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2sobykpIHsKKyAgICAgICAgICAgIGlzX3VuaWNvZGUgPSAxOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKFB5Qnl0ZXNfQ2hlY2sobykpIHsKKyAgICAgICAgICAgIGlzX2J5dGVzID0gMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChpc191bmljb2RlKSB7CisjaWZkZWYgTVNfV0lORE9XUworICAgICAgICB3aWRlID0gUHlVbmljb2RlX0FzVW5pY29kZUFuZFNpemUobywgJmxlbmd0aCk7CiAgICAgICAgIGlmICghd2lkZSkgewotICAgICAgICAgICAgUHlfREVDUkVGKHVuaWNvZGUpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGxlbmd0aCA+IDMyNzY3KSB7CiAgICAgICAgICAgICBGT1JNQVRfRVhDRVBUSU9OKFB5RXhjX1ZhbHVlRXJyb3IsICIlcyB0b28gbG9uZyBmb3IgV2luZG93cyIpOwotICAgICAgICAgICAgUHlfREVDUkVGKHVuaWNvZGUpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHdjc2xlbih3aWRlKSAhPSBsZW5ndGgpIHsKLSAgICAgICAgICAgIEZPUk1BVF9FWENFUFRJT04oUHlFeGNfVmFsdWVFcnJvciwgImVtYmVkZGVkIG51bGwgY2hhcmFjdGVyIik7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodW5pY29kZSk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIEZPUk1BVF9FWENFUFRJT04oUHlFeGNfVmFsdWVFcnJvciwgImVtYmVkZGVkIG51bGwgY2hhcmFjdGVyIGluICVzIik7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CiAgICAgICAgIH0KIAogICAgICAgICBwYXRoLT53aWRlID0gd2lkZTsKLSAgICAgICAgcGF0aC0+bmFycm93ID0gTlVMTDsKICAgICAgICAgcGF0aC0+bGVuZ3RoID0gbGVuZ3RoOwogICAgICAgICBwYXRoLT5vYmplY3QgPSBvOwogICAgICAgICBwYXRoLT5mZCA9IC0xOwotICAgICAgICBwYXRoLT5jbGVhbnVwID0gdW5pY29kZTsKLSAgICAgICAgcmV0dXJuIFB5X0NMRUFOVVBfU1VQUE9SVEVEOworICAgICAgICByZXQgPSAxOworICAgICAgICBnb3RvIGV4aXQ7CiAjZWxzZQotICAgICAgICBpbnQgY29udmVydGVkID0gUHlVbmljb2RlX0ZTQ29udmVydGVyKHVuaWNvZGUsICZieXRlcyk7Ci0gICAgICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKLSAgICAgICAgaWYgKCFjb252ZXJ0ZWQpCi0gICAgICAgICAgICBieXRlcyA9IE5VTEw7CisgICAgICAgIGlmICghUHlVbmljb2RlX0ZTQ29udmVydGVyKG8sICZieXRlcykpIHsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgfQogI2VuZGlmCiAgICAgfQotICAgIGVsc2UgewotICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBpZiAoUHlPYmplY3RfQ2hlY2tCdWZmZXIobykpCi0gICAgICAgICAgICBieXRlcyA9IFB5Qnl0ZXNfRnJvbU9iamVjdChvKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYnl0ZXMgPSBOVUxMOworICAgIGVsc2UgaWYgKGlzX2J5dGVzKSB7CisgICAgICAgIGJ5dGVzID0gbzsKKyAgICAgICAgUHlfSU5DUkVGKGJ5dGVzKTsKKyAgICB9CisgICAgZWxzZSBpZiAoaXNfYnVmZmVyKSB7CisgICAgICAgIGlmIChQeUVycl9XYXJuRm9ybWF0KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywgMSwKKyAgICAgICAgICAgICIlcyVzJXMgc2hvdWxkIGJlICVzLCBub3QgJS4yMDBzIiwKKyAgICAgICAgICAgIHBhdGgtPmZ1bmN0aW9uX25hbWUgPyBwYXRoLT5mdW5jdGlvbl9uYW1lIDogIiIsCisgICAgICAgICAgICBwYXRoLT5mdW5jdGlvbl9uYW1lID8gIjogIiAgICAgICAgICAgICAgICA6ICIiLAorICAgICAgICAgICAgcGF0aC0+YXJndW1lbnRfbmFtZSA/IHBhdGgtPmFyZ3VtZW50X25hbWUgOiAicGF0aCIsCisgICAgICAgICAgICBwYXRoLT5hbGxvd19mZCAmJiBwYXRoLT5udWxsYWJsZSA/ICJzdHJpbmcsIGJ5dGVzLCBvcy5QYXRoTGlrZSwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW50ZWdlciBvciBOb25lIiA6CisgICAgICAgICAgICBwYXRoLT5hbGxvd19mZCA/ICJzdHJpbmcsIGJ5dGVzLCBvcy5QYXRoTGlrZSBvciBpbnRlZ2VyIiA6CisgICAgICAgICAgICBwYXRoLT5udWxsYWJsZSA/ICJzdHJpbmcsIGJ5dGVzLCBvcy5QYXRoTGlrZSBvciBOb25lIiA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmcsIGJ5dGVzIG9yIG9zLlBhdGhMaWtlIiwKKyAgICAgICAgICAgIFB5X1RZUEUobyktPnRwX25hbWUpKSB7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKyAgICAgICAgYnl0ZXMgPSBQeUJ5dGVzX0Zyb21PYmplY3Qobyk7CiAgICAgICAgIGlmICghYnl0ZXMpIHsKLSAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgICAgICBpZiAocGF0aC0+YWxsb3dfZmQpIHsKLSAgICAgICAgICAgICAgICBpbnQgZmQ7Ci0gICAgICAgICAgICAgICAgaW50IHJlc3VsdCA9IF9mZF9jb252ZXJ0ZXIobywgJmZkLAotICAgICAgICAgICAgICAgICAgICAgICAgInN0cmluZywgYnl0ZXMgb3IgaW50ZWdlciIpOwotICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgICAgICAgICAgICAgcGF0aC0+d2lkZSA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgICAgIHBhdGgtPm5hcnJvdyA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgICAgIHBhdGgtPmxlbmd0aCA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIHBhdGgtPm9iamVjdCA9IG87Ci0gICAgICAgICAgICAgICAgICAgIHBhdGgtPmZkID0gZmQ7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQorICAgICAgICAgICAgZ290byBleGl0OwogICAgICAgICB9CiAgICAgfQotCi0gICAgaWYgKCFieXRlcykgewotICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICBGT1JNQVRfRVhDRVBUSU9OKFB5RXhjX1R5cGVFcnJvciwgImlsbGVnYWwgdHlwZSBmb3IgJXMgcGFyYW1ldGVyIik7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQorICAgIGVsc2UgaWYgKGlzX2luZGV4KSB7CisgICAgICAgIGlmICghX2ZkX2NvbnZlcnRlcihvLCAmcGF0aC0+ZmQpKSB7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKyAgICAgICAgcGF0aC0+d2lkZSA9IE5VTEw7CiAjaWZkZWYgTVNfV0lORE9XUwotICAgIGlmICh3aW4zMl93YXJuX2J5dGVzX2FwaSgpKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihieXRlcyk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KKyAgICAgICAgcGF0aC0+bmFycm93ID0gRkFMU0U7CisjZWxzZQorICAgICAgICBwYXRoLT5uYXJyb3cgPSBOVUxMOwogI2VuZGlmCisgICAgICAgIHBhdGgtPmxlbmd0aCA9IDA7CisgICAgICAgIHBhdGgtPm9iamVjdCA9IG87CisgICAgICAgIHJldCA9IDE7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgZWxzZSB7CisgZXJyb3JfZXhpdDoKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIiVzJXMlcyBzaG91bGQgYmUgJXMsIG5vdCAlLjIwMHMiLAorICAgICAgICAgICAgcGF0aC0+ZnVuY3Rpb25fbmFtZSA/IHBhdGgtPmZ1bmN0aW9uX25hbWUgOiAiIiwKKyAgICAgICAgICAgIHBhdGgtPmZ1bmN0aW9uX25hbWUgPyAiOiAiICAgICAgICAgICAgICAgIDogIiIsCisgICAgICAgICAgICBwYXRoLT5hcmd1bWVudF9uYW1lID8gcGF0aC0+YXJndW1lbnRfbmFtZSA6ICJwYXRoIiwKKyAgICAgICAgICAgIHBhdGgtPmFsbG93X2ZkICYmIHBhdGgtPm51bGxhYmxlID8gInN0cmluZywgYnl0ZXMsIG9zLlBhdGhMaWtlLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnRlZ2VyIG9yIE5vbmUiIDoKKyAgICAgICAgICAgIHBhdGgtPmFsbG93X2ZkID8gInN0cmluZywgYnl0ZXMsIG9zLlBhdGhMaWtlIG9yIGludGVnZXIiIDoKKyAgICAgICAgICAgIHBhdGgtPm51bGxhYmxlID8gInN0cmluZywgYnl0ZXMsIG9zLlBhdGhMaWtlIG9yIE5vbmUiIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0cmluZywgYnl0ZXMgb3Igb3MuUGF0aExpa2UiLAorICAgICAgICAgICAgUHlfVFlQRShvKS0+dHBfbmFtZSk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAKICAgICBsZW5ndGggPSBQeUJ5dGVzX0dFVF9TSVpFKGJ5dGVzKTsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgaWYgKGxlbmd0aCA+IE1BWF9QQVRILTEpIHsKLSAgICAgICAgRk9STUFUX0VYQ0VQVElPTihQeUV4Y19WYWx1ZUVycm9yLCAiJXMgdG9vIGxvbmcgZm9yIFdpbmRvd3MiKTsKLSAgICAgICAgUHlfREVDUkVGKGJ5dGVzKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotI2VuZGlmCi0KICAgICBuYXJyb3cgPSBQeUJ5dGVzX0FTX1NUUklORyhieXRlcyk7CiAgICAgaWYgKChzaXplX3QpbGVuZ3RoICE9IHN0cmxlbihuYXJyb3cpKSB7CiAgICAgICAgIEZPUk1BVF9FWENFUFRJT04oUHlFeGNfVmFsdWVFcnJvciwgImVtYmVkZGVkIG51bGwgY2hhcmFjdGVyIGluICVzIik7CiAgICAgICAgIFB5X0RFQ1JFRihieXRlcyk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICBnb3RvIGV4aXQ7CiAgICAgfQogCisjaWZkZWYgTVNfV0lORE9XUworICAgIHdvID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUoCisgICAgICAgIG5hcnJvdywKKyAgICAgICAgbGVuZ3RoCisgICAgKTsKKyAgICBpZiAoIXdvKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyAgICB3aWRlID0gUHlVbmljb2RlX0FzV2lkZUNoYXJTdHJpbmcod28sICZsZW5ndGgpOworICAgIFB5X0RFQ1JFRih3byk7CisKKyAgICBpZiAoIXdpZGUpIHsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBpZiAobGVuZ3RoID4gMzI3NjcpIHsKKyAgICAgICAgRk9STUFUX0VYQ0VQVElPTihQeUV4Y19WYWx1ZUVycm9yLCAiJXMgdG9vIGxvbmcgZm9yIFdpbmRvd3MiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBpZiAod2NzbGVuKHdpZGUpICE9IGxlbmd0aCkgeworICAgICAgICBGT1JNQVRfRVhDRVBUSU9OKFB5RXhjX1ZhbHVlRXJyb3IsICJlbWJlZGRlZCBudWxsIGNoYXJhY3RlciBpbiAlcyIpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHBhdGgtPndpZGUgPSB3aWRlOworICAgIHBhdGgtPm5hcnJvdyA9IFRSVUU7CisjZWxzZQogICAgIHBhdGgtPndpZGUgPSBOVUxMOwogICAgIHBhdGgtPm5hcnJvdyA9IG5hcnJvdzsKKyNlbmRpZgogICAgIHBhdGgtPmxlbmd0aCA9IGxlbmd0aDsKICAgICBwYXRoLT5vYmplY3QgPSBvOwogICAgIHBhdGgtPmZkID0gLTE7Ci0gICAgcGF0aC0+Y2xlYW51cCA9IGJ5dGVzOwotICAgIHJldHVybiBQeV9DTEVBTlVQX1NVUFBPUlRFRDsKKyAgICBpZiAoYnl0ZXMgPT0gbykgeworICAgICAgICBQeV9ERUNSRUYoYnl0ZXMpOworICAgICAgICByZXQgPSAxOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcGF0aC0+Y2xlYW51cCA9IGJ5dGVzOworICAgICAgICByZXQgPSBQeV9DTEVBTlVQX1NVUFBPUlRFRDsKKyAgICB9CisgZXhpdDoKKyAgICBQeV9YREVDUkVGKHRvX2NsZWFudXApOworICAgIHJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyB2b2lkCi1hcmd1bWVudF91bmF2YWlsYWJsZV9lcnJvcihjaGFyICpmdW5jdGlvbl9uYW1lLCBjaGFyICphcmd1bWVudF9uYW1lKSB7Cithcmd1bWVudF91bmF2YWlsYWJsZV9lcnJvcihjb25zdCBjaGFyICpmdW5jdGlvbl9uYW1lLCBjb25zdCBjaGFyICphcmd1bWVudF9uYW1lKQorewogICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLAogICAgICAgICAiJXMlcyVzIHVuYXZhaWxhYmxlIG9uIHRoaXMgcGxhdGZvcm0iLAogICAgICAgICAoZnVuY3Rpb25fbmFtZSAhPSBOVUxMKSA/IGZ1bmN0aW9uX25hbWUgOiAiIiwKQEAgLTk3NCw3ICsxMDc2LDggQEAKIH0KIAogc3RhdGljIGludAotZmRfc3BlY2lmaWVkKGNoYXIgKmZ1bmN0aW9uX25hbWUsIGludCBmZCkgeworZmRfc3BlY2lmaWVkKGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUsIGludCBmZCkKK3sKICAgICBpZiAoZmQgPT0gLTEpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC05ODMsNyArMTA4Niw4IEBACiB9CiAKIHN0YXRpYyBpbnQKLWZvbGxvd19zeW1saW5rc19zcGVjaWZpZWQoY2hhciAqZnVuY3Rpb25fbmFtZSwgaW50IGZvbGxvd19zeW1saW5rcykgeworZm9sbG93X3N5bWxpbmtzX3NwZWNpZmllZChjb25zdCBjaGFyICpmdW5jdGlvbl9uYW1lLCBpbnQgZm9sbG93X3N5bWxpbmtzKQorewogICAgIGlmIChmb2xsb3dfc3ltbGlua3MpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC05OTIsOCArMTA5NiwxMyBAQAogfQogCiBzdGF0aWMgaW50Ci1wYXRoX2FuZF9kaXJfZmRfaW52YWxpZChjaGFyICpmdW5jdGlvbl9uYW1lLCBwYXRoX3QgKnBhdGgsIGludCBkaXJfZmQpIHsKLSAgICBpZiAoIXBhdGgtPm5hcnJvdyAmJiAhcGF0aC0+d2lkZSAmJiAoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKSkgeworcGF0aF9hbmRfZGlyX2ZkX2ludmFsaWQoY29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSwgcGF0aF90ICpwYXRoLCBpbnQgZGlyX2ZkKQoreworICAgIGlmICghcGF0aC0+d2lkZSAmJiAoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKQorI2lmbmRlZiBNU19XSU5ET1dTCisgICAgICAgICYmICFwYXRoLT5uYXJyb3cKKyNlbmRpZgorICAgICkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICIlczogY2FuJ3Qgc3BlY2lmeSBkaXJfZmQgd2l0aG91dCBtYXRjaGluZyBwYXRoIiwKICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uX25hbWUpOwpAQCAtMTAwMyw3ICsxMTEyLDggQEAKIH0KIAogc3RhdGljIGludAotZGlyX2ZkX2FuZF9mZF9pbnZhbGlkKGNoYXIgKmZ1bmN0aW9uX25hbWUsIGludCBkaXJfZmQsIGludCBmZCkgeworZGlyX2ZkX2FuZF9mZF9pbnZhbGlkKGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUsIGludCBkaXJfZmQsIGludCBmZCkKK3sKICAgICBpZiAoKGRpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkgJiYgKGZkICE9IC0xKSkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICIlczogY2FuJ3Qgc3BlY2lmeSBib3RoIGRpcl9mZCBhbmQgZmQiLApAQCAtMTAxNCw4ICsxMTI0LDkgQEAKIH0KIAogc3RhdGljIGludAotZmRfYW5kX2ZvbGxvd19zeW1saW5rc19pbnZhbGlkKGNoYXIgKmZ1bmN0aW9uX25hbWUsIGludCBmZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZm9sbG93X3N5bWxpbmtzKSB7CitmZF9hbmRfZm9sbG93X3N5bWxpbmtzX2ludmFsaWQoY29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSwgaW50IGZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmb2xsb3dfc3ltbGlua3MpCit7CiAgICAgaWYgKChmZCA+IDApICYmICghZm9sbG93X3N5bWxpbmtzKSkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICIlczogY2Fubm90IHVzZSBmZCBhbmQgZm9sbG93X3N5bWxpbmtzIHRvZ2V0aGVyIiwKQEAgLTEwMjYsOCArMTEzNyw5IEBACiB9CiAKIHN0YXRpYyBpbnQKLWRpcl9mZF9hbmRfZm9sbG93X3N5bWxpbmtzX2ludmFsaWQoY2hhciAqZnVuY3Rpb25fbmFtZSwgaW50IGRpcl9mZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZvbGxvd19zeW1saW5rcykgeworZGlyX2ZkX2FuZF9mb2xsb3dfc3ltbGlua3NfaW52YWxpZChjb25zdCBjaGFyICpmdW5jdGlvbl9uYW1lLCBpbnQgZGlyX2ZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZm9sbG93X3N5bWxpbmtzKQorewogICAgIGlmICgoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKSAmJiAoIWZvbGxvd19zeW1saW5rcykpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAiJXM6IGNhbm5vdCB1c2UgZGlyX2ZkIGFuZCBmb2xsb3dfc3ltbGlua3MgdG9nZXRoZXIiLApAQCAtMTAzOCw3ICsxMTUwLDcgQEAKIH0KIAogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICB0eXBlZGVmIFBZX0xPTkdfTE9ORyBQeV9vZmZfdDsKKyAgICB0eXBlZGVmIGxvbmcgbG9uZyBQeV9vZmZfdDsKICNlbHNlCiAgICAgdHlwZWRlZiBvZmZfdCBQeV9vZmZfdDsKICNlbmRpZgpAQCAtMTA2Niw0MSArMTE3OCwxMyBAQAogI2VuZGlmCiB9CiAKLQotI2lmIGRlZmluZWQgX01TQ19WRVIgJiYgX01TQ19WRVIgPj0gMTQwMCAmJiBfTVNDX1ZFUiA8IDE5MDAKLS8qIExlZ2FjeSBpbXBsZW1lbnRhdGlvbiBvZiBfUHlWZXJpZnlfZmRfZHVwMiB3aGlsZSB0cmFuc2l0aW9uaW5nIHRvCi0gKiBNU1ZDIDE0LjAuIFRoaXMgc2hvdWxkIGV2ZW50dWFsbHkgYmUgcmVtb3ZlZC4gKGlzc3VlMjM1MjQpCi0gKi8KLSNkZWZpbmUgSU9JTkZPX0wyRSA1Ci0jZGVmaW5lIElPSU5GT19BUlJBWVMgNjQKLSNkZWZpbmUgSU9JTkZPX0FSUkFZX0VMVFMgICAoMSA8PCBJT0lORk9fTDJFKQotI2RlZmluZSBfTkhBTkRMRV8gICAgICAgICAgIChJT0lORk9fQVJSQVlTICogSU9JTkZPX0FSUkFZX0VMVFMpCi0jZGVmaW5lIF9OT19DT05TT0xFX0ZJTEVOTyAoaW50cHRyX3QpLTIKLQotLyogdGhlIHNwZWNpYWwgY2FzZSBvZiBjaGVja2luZyBkdXAyLiAgVGhlIHRhcmdldCBmZCBtdXN0IGJlIGluIGEgc2Vuc2libGUgcmFuZ2UgKi8KLXN0YXRpYyBpbnQKLV9QeVZlcmlmeV9mZF9kdXAyKGludCBmZDEsIGludCBmZDIpCi17Ci0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQxKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKGZkMiA9PSBfTk9fQ09OU09MRV9GSUxFTk8pCi0gICAgICAgIHJldHVybiAwOwotICAgIGlmICgodW5zaWduZWQpZmQyIDwgX05IQU5ETEVfKQotICAgICAgICByZXR1cm4gMTsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiAwOwotfQotI2Vsc2UKLSNkZWZpbmUgX1B5VmVyaWZ5X2ZkX2R1cDIoZmQxLCBmZDIpIChfUHlWZXJpZnlfZmQoZmQxKSAmJiAoZmQyKSA+PSAwKQotI2VuZGlmCi0KICNpZmRlZiBNU19XSU5ET1dTCiAKIHN0YXRpYyBpbnQKIHdpbjMyX2dldF9yZXBhcnNlX3RhZyhIQU5ETEUgcmVwYXJzZV9wb2ludF9oYW5kbGUsIFVMT05HICpyZXBhcnNlX3RhZykKIHsKLSAgICBjaGFyIHRhcmdldF9idWZmZXJbTUFYSU1VTV9SRVBBUlNFX0RBVEFfQlVGRkVSX1NJWkVdOwotICAgIFJFUEFSU0VfREFUQV9CVUZGRVIgKnJkYiA9IChSRVBBUlNFX0RBVEFfQlVGRkVSICopdGFyZ2V0X2J1ZmZlcjsKKyAgICBjaGFyIHRhcmdldF9idWZmZXJbX1B5X01BWElNVU1fUkVQQVJTRV9EQVRBX0JVRkZFUl9TSVpFXTsKKyAgICBfUHlfUkVQQVJTRV9EQVRBX0JVRkZFUiAqcmRiID0gKF9QeV9SRVBBUlNFX0RBVEFfQlVGRkVSICopdGFyZ2V0X2J1ZmZlcjsKICAgICBEV09SRCBuX2J5dGVzX3JldHVybmVkOwogCiAgICAgaWYgKDAgPT0gRGV2aWNlSW9Db250cm9sKApAQCAtMTE1OSw3ICsxMjQzLDcgQEAKICAgICBmb3IgKGUgPSBfd2Vudmlyb247ICplICE9IE5VTEw7IGUrKykgewogICAgICAgICBQeU9iamVjdCAqazsKICAgICAgICAgUHlPYmplY3QgKnY7Ci0gICAgICAgIHdjaGFyX3QgKnAgPSB3Y3NjaHIoKmUsIEwnPScpOworICAgICAgICBjb25zdCB3Y2hhcl90ICpwID0gd2NzY2hyKCplLCBMJz0nKTsKICAgICAgICAgaWYgKHAgPT0gTlVMTCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBrID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcigqZSwgKFB5X3NzaXplX3QpKHAtKmUpKTsKQEAgLTExODcsNyArMTI3MSw3IEBACiAgICAgZm9yIChlID0gZW52aXJvbjsgKmUgIT0gTlVMTDsgZSsrKSB7CiAgICAgICAgIFB5T2JqZWN0ICprOwogICAgICAgICBQeU9iamVjdCAqdjsKLSAgICAgICAgY2hhciAqcCA9IHN0cmNocigqZSwgJz0nKTsKKyAgICAgICAgY29uc3QgY2hhciAqcCA9IHN0cmNocigqZSwgJz0nKTsKICAgICAgICAgaWYgKHAgPT0gTlVMTCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBrID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgqZSwgKGludCkocC0qZSkpOwpAQCAtMTIyMiw3ICsxMzA2LDcgQEAKIAogI2lmZGVmIE1TX1dJTkRPV1MKIHN0YXRpYyBQeU9iamVjdCAqCi13aW4zMl9lcnJvcihjaGFyKiBmdW5jdGlvbiwgY29uc3QgY2hhciogZmlsZW5hbWUpCit3aW4zMl9lcnJvcihjb25zdCBjaGFyKiBmdW5jdGlvbiwgY29uc3QgY2hhciogZmlsZW5hbWUpCiB7CiAgICAgLyogWFhYIFdlIHNob3VsZCBwYXNzIHRoZSBmdW5jdGlvbiBuYW1lIGFsb25nIGluIHRoZSBmdXR1cmUuCiAgICAgICAgKHdpbnJlZy5jIGFsc28gd2FudHMgdG8gcGFzcyB0aGUgZnVuY3Rpb24gbmFtZS4pCkBAIC0xMjM3LDcgKzEzMjEsNyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotd2luMzJfZXJyb3Jfb2JqZWN0KGNoYXIqIGZ1bmN0aW9uLCBQeU9iamVjdCogZmlsZW5hbWUpCit3aW4zMl9lcnJvcl9vYmplY3QoY29uc3QgY2hhciogZnVuY3Rpb24sIFB5T2JqZWN0KiBmaWxlbmFtZSkKIHsKICAgICAvKiBYWFggLSBzZWUgd2luMzJfZXJyb3IgZm9yIGNvbW1lbnRzIG9uICdmdW5jdGlvbicgKi8KICAgICBlcnJubyA9IEdldExhc3RFcnJvcigpOwpAQCAtMTI1MywyNyArMTMzNywzNyBAQAogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBhdGhfZXJyb3IocGF0aF90ICpwYXRoKQorcGF0aF9vYmplY3RfZXJyb3IoUHlPYmplY3QgKnBhdGgpCiB7CiAjaWZkZWYgTVNfV0lORE9XUwotICAgIHJldHVybiBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycldpdGhGaWxlbmFtZU9iamVjdChQeUV4Y19PU0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBwYXRoLT5vYmplY3QpOworICAgIHJldHVybiBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycldpdGhGaWxlbmFtZU9iamVjdCgKKyAgICAgICAgICAgICAgICBQeUV4Y19PU0Vycm9yLCAwLCBwYXRoKTsKICNlbHNlCi0gICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZU9iamVjdChQeUV4Y19PU0Vycm9yLCBwYXRoLT5vYmplY3QpOworICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3QoUHlFeGNfT1NFcnJvciwgcGF0aCk7CiAjZW5kaWYKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK3BhdGhfb2JqZWN0X2Vycm9yMihQeU9iamVjdCAqcGF0aCwgUHlPYmplY3QgKnBhdGgyKQoreworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICByZXR1cm4gUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWVPYmplY3RzKAorICAgICAgICAgICAgICAgIFB5RXhjX09TRXJyb3IsIDAsIHBhdGgsIHBhdGgyKTsKKyNlbHNlCisgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZU9iamVjdHMoUHlFeGNfT1NFcnJvciwgcGF0aCwgcGF0aDIpOworI2VuZGlmCit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitwYXRoX2Vycm9yKHBhdGhfdCAqcGF0aCkKK3sKKyAgICByZXR1cm4gcGF0aF9vYmplY3RfZXJyb3IocGF0aC0+b2JqZWN0KTsKK30KIAogc3RhdGljIFB5T2JqZWN0ICoKIHBhdGhfZXJyb3IyKHBhdGhfdCAqcGF0aCwgcGF0aF90ICpwYXRoMikKIHsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgcmV0dXJuIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyV2l0aEZpbGVuYW1lT2JqZWN0cyhQeUV4Y19PU0Vycm9yLAotICAgICAgICAgICAgMCwgcGF0aC0+b2JqZWN0LCBwYXRoMi0+b2JqZWN0KTsKLSNlbHNlCi0gICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZU9iamVjdHMoUHlFeGNfT1NFcnJvciwKLSAgICAgICAgcGF0aC0+b2JqZWN0LCBwYXRoMi0+b2JqZWN0KTsKLSNlbmRpZgorICAgIHJldHVybiBwYXRoX29iamVjdF9lcnJvcjIocGF0aC0+b2JqZWN0LCBwYXRoMi0+b2JqZWN0KTsKIH0KIAogCkBAIC0xMjk3LDkgKzEzOTEsNiBAQAogICAgIGludCByZXM7CiAgICAgaW50IGFzeW5jX2VyciA9IDA7CiAKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotCiAgICAgZG8gewogICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKQEAgLTEzMjAsMzEgKzE0MTEsNiBAQAogICAgaXQgYWxzbyBuZWVkcyB0byBzZXQgIm1hZ2ljIiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgaW5kaWNhdGluZwogICAgdGhlIHBlci1kcml2ZSBjdXJyZW50IGRpcmVjdG9yeSwgd2hpY2ggYXJlIG9mIHRoZSBmb3JtID08ZHJpdmU+OiAqLwogc3RhdGljIEJPT0wgX19zdGRjYWxsCi13aW4zMl9jaGRpcihMUENTVFIgcGF0aCkKLXsKLSAgICBjaGFyIG5ld19wYXRoW01BWF9QQVRIXTsKLSAgICBpbnQgcmVzdWx0OwotICAgIGNoYXIgZW52WzRdID0gIj14OiI7Ci0KLSAgICBpZighU2V0Q3VycmVudERpcmVjdG9yeUEocGF0aCkpCi0gICAgICAgIHJldHVybiBGQUxTRTsKLSAgICByZXN1bHQgPSBHZXRDdXJyZW50RGlyZWN0b3J5QShQeV9BUlJBWV9MRU5HVEgobmV3X3BhdGgpLCBuZXdfcGF0aCk7Ci0gICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJldHVybiBGQUxTRTsKLSAgICAvKiBJbiB0aGUgQU5TSSBBUEksIHRoZXJlIHNob3VsZCBub3QgYmUgYW55IHBhdGhzIGxvbmdlcgotICAgICAgIHRoYW4gTUFYX1BBVEgtMSAobm90IGluY2x1ZGluZyB0aGUgZmluYWwgbnVsbCBjaGFyYWN0ZXIpLiAqLwotICAgIGFzc2VydChyZXN1bHQgPCBQeV9BUlJBWV9MRU5HVEgobmV3X3BhdGgpKTsKLSAgICBpZiAoc3RybmNtcChuZXdfcGF0aCwgIlxcXFwiLCAyKSA9PSAwIHx8Ci0gICAgICAgIHN0cm5jbXAobmV3X3BhdGgsICIvLyIsIDIpID09IDApCi0gICAgICAgIC8qIFVOQyBwYXRoLCBub3RoaW5nIHRvIGRvLiAqLwotICAgICAgICByZXR1cm4gVFJVRTsKLSAgICBlbnZbMV0gPSBuZXdfcGF0aFswXTsKLSAgICByZXR1cm4gU2V0RW52aXJvbm1lbnRWYXJpYWJsZUEoZW52LCBuZXdfcGF0aCk7Ci19Ci0KLS8qIFRoZSBVbmljb2RlIHZlcnNpb24gZGlmZmVycyBmcm9tIHRoZSBBTlNJIHZlcnNpb24KLSAgIHNpbmNlIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBtaWdodCBleGNlZWQgTUFYX1BBVEggY2hhcmFjdGVycyAqLwotc3RhdGljIEJPT0wgX19zdGRjYWxsCiB3aW4zMl93Y2hkaXIoTFBDV1NUUiBwYXRoKQogewogICAgIHdjaGFyX3QgcGF0aF9idWZbTUFYX1BBVEhdLCAqbmV3X3BhdGggPSBwYXRoX2J1ZjsKQEAgLTEzOTAsMzMgKzE0NTYsMTAgQEAKICNkZWZpbmUgSEFWRV9TVEFUX05TRUMgMQogI2RlZmluZSBIQVZFX1NUUlVDVF9TVEFUX1NUX0ZJTEVfQVRUUklCVVRFUyAxCiAKLXN0YXRpYyBCT09MCi1hdHRyaWJ1dGVzX2Zyb21fZGlyKExQQ1NUUiBwc3pGaWxlLCBCWV9IQU5ETEVfRklMRV9JTkZPUk1BVElPTiAqaW5mbywgVUxPTkcgKnJlcGFyc2VfdGFnKQotewotICAgIEhBTkRMRSBoRmluZEZpbGU7Ci0gICAgV0lOMzJfRklORF9EQVRBQSBGaWxlRGF0YTsKLSAgICBoRmluZEZpbGUgPSBGaW5kRmlyc3RGaWxlQShwc3pGaWxlLCAmRmlsZURhdGEpOwotICAgIGlmIChoRmluZEZpbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCi0gICAgICAgIHJldHVybiBGQUxTRTsKLSAgICBGaW5kQ2xvc2UoaEZpbmRGaWxlKTsKLSAgICBtZW1zZXQoaW5mbywgMCwgc2l6ZW9mKCppbmZvKSk7Ci0gICAgKnJlcGFyc2VfdGFnID0gMDsKLSAgICBpbmZvLT5kd0ZpbGVBdHRyaWJ1dGVzID0gRmlsZURhdGEuZHdGaWxlQXR0cmlidXRlczsKLSAgICBpbmZvLT5mdENyZWF0aW9uVGltZSAgID0gRmlsZURhdGEuZnRDcmVhdGlvblRpbWU7Ci0gICAgaW5mby0+ZnRMYXN0QWNjZXNzVGltZSA9IEZpbGVEYXRhLmZ0TGFzdEFjY2Vzc1RpbWU7Ci0gICAgaW5mby0+ZnRMYXN0V3JpdGVUaW1lICA9IEZpbGVEYXRhLmZ0TGFzdFdyaXRlVGltZTsKLSAgICBpbmZvLT5uRmlsZVNpemVIaWdoICAgID0gRmlsZURhdGEubkZpbGVTaXplSGlnaDsKLSAgICBpbmZvLT5uRmlsZVNpemVMb3cgICAgID0gRmlsZURhdGEubkZpbGVTaXplTG93OwotLyogIGluZm8tPm5OdW1iZXJPZkxpbmtzICAgPSAxOyAqLwotICAgIGlmIChGaWxlRGF0YS5kd0ZpbGVBdHRyaWJ1dGVzICYgRklMRV9BVFRSSUJVVEVfUkVQQVJTRV9QT0lOVCkKLSAgICAgICAgKnJlcGFyc2VfdGFnID0gRmlsZURhdGEuZHdSZXNlcnZlZDA7Ci0gICAgcmV0dXJuIFRSVUU7Ci19Ci0KIHN0YXRpYyB2b2lkCi1maW5kX2RhdGFfdG9fZmlsZV9pbmZvX3coV0lOMzJfRklORF9EQVRBVyAqcEZpbGVEYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgIEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OICppbmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgIFVMT05HICpyZXBhcnNlX3RhZykKK2ZpbmRfZGF0YV90b19maWxlX2luZm8oV0lOMzJfRklORF9EQVRBVyAqcEZpbGVEYXRhLAorICAgICAgICAgICAgICAgICAgICAgICBCWV9IQU5ETEVfRklMRV9JTkZPUk1BVElPTiAqaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgVUxPTkcgKnJlcGFyc2VfdGFnKQogewogICAgIG1lbXNldChpbmZvLCAwLCBzaXplb2YoKmluZm8pKTsKICAgICBpbmZvLT5kd0ZpbGVBdHRyaWJ1dGVzID0gcEZpbGVEYXRhLT5kd0ZpbGVBdHRyaWJ1dGVzOwpAQCAtMTQzMyw3ICsxNDc2LDcgQEAKIH0KIAogc3RhdGljIEJPT0wKLWF0dHJpYnV0ZXNfZnJvbV9kaXJfdyhMUENXU1RSIHBzekZpbGUsIEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OICppbmZvLCBVTE9ORyAqcmVwYXJzZV90YWcpCithdHRyaWJ1dGVzX2Zyb21fZGlyKExQQ1dTVFIgcHN6RmlsZSwgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04gKmluZm8sIFVMT05HICpyZXBhcnNlX3RhZykKIHsKICAgICBIQU5ETEUgaEZpbmRGaWxlOwogICAgIFdJTjMyX0ZJTkRfREFUQVcgRmlsZURhdGE7CkBAIC0xNDQxLDcgKzE0ODQsNyBAQAogICAgIGlmIChoRmluZEZpbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCiAgICAgICAgIHJldHVybiBGQUxTRTsKICAgICBGaW5kQ2xvc2UoaEZpbmRGaWxlKTsKLSAgICBmaW5kX2RhdGFfdG9fZmlsZV9pbmZvX3coJkZpbGVEYXRhLCBpbmZvLCByZXBhcnNlX3RhZyk7CisgICAgZmluZF9kYXRhX3RvX2ZpbGVfaW5mbygmRmlsZURhdGEsIGluZm8sIHJlcGFyc2VfdGFnKTsKICAgICByZXR1cm4gVFJVRTsKIH0KIApAQCAtMTQ1OCw3ICsxNTAxLDcgQEAKICAgICBpZighYnVmX3NpemUpCiAgICAgICAgIHJldHVybiBGQUxTRTsKIAotICAgIGJ1ZiA9IFB5TWVtX05ldyh3Y2hhcl90LCBidWZfc2l6ZSsxKTsKKyAgICBidWYgPSAod2NoYXJfdCAqKVB5TWVtX1Jhd01hbGxvYygoYnVmX3NpemUgKyAxKSAqIHNpemVvZih3Y2hhcl90KSk7CiAgICAgaWYgKCFidWYpIHsKICAgICAgICAgU2V0TGFzdEVycm9yKEVSUk9SX09VVE9GTUVNT1JZKTsKICAgICAgICAgcmV0dXJuIEZBTFNFOwpAQCAtMTQ2OCwxMiArMTUxMSwxMiBAQAogICAgICAgICAgICAgICAgICAgICAgICBidWYsIGJ1Zl9zaXplLCBWT0xVTUVfTkFNRV9ET1MpOwogCiAgICAgaWYoIXJlc3VsdF9sZW5ndGgpIHsKLSAgICAgICAgUHlNZW1fRnJlZShidWYpOworICAgICAgICBQeU1lbV9SYXdGcmVlKGJ1Zik7CiAgICAgICAgIHJldHVybiBGQUxTRTsKICAgICB9CiAKICAgICBpZighQ2xvc2VIYW5kbGUoaGRsKSkgewotICAgICAgICBQeU1lbV9GcmVlKGJ1Zik7CisgICAgICAgIFB5TWVtX1Jhd0ZyZWUoYnVmKTsKICAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgIH0KIApAQCAtMTQ4NCwxMCArMTUyNyw3IEBACiB9CiAKIHN0YXRpYyBpbnQKLXdpbjMyX3hzdGF0X2ltcGxfdyhjb25zdCB3Y2hhcl90ICpwYXRoLCBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0ICpyZXN1bHQsCi0gICAgICAgICAgICAgICAgICAgQk9PTCB0cmF2ZXJzZSk7Ci1zdGF0aWMgaW50Ci13aW4zMl94c3RhdF9pbXBsKGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3QgKnJlc3VsdCwKK3dpbjMyX3hzdGF0X2ltcGwoY29uc3Qgd2NoYXJfdCAqcGF0aCwgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCAqcmVzdWx0LAogICAgICAgICAgICAgICAgICBCT09MIHRyYXZlcnNlKQogewogICAgIGludCBjb2RlOwpAQCAtMTQ5NSw5ICsxNTM1LDkgQEAKICAgICBCWV9IQU5ETEVfRklMRV9JTkZPUk1BVElPTiBpbmZvOwogICAgIFVMT05HIHJlcGFyc2VfdGFnID0gMDsKICAgICB3Y2hhcl90ICp0YXJnZXRfcGF0aDsKLSAgICBjb25zdCBjaGFyICpkb3Q7CisgICAgY29uc3Qgd2NoYXJfdCAqZG90OwogCi0gICAgaEZpbGUgPSBDcmVhdGVGaWxlQSgKKyAgICBoRmlsZSA9IENyZWF0ZUZpbGVXKAogICAgICAgICBwYXRoLAogICAgICAgICBGSUxFX1JFQURfQVRUUklCVVRFUywgLyogZGVzaXJlZCBhY2Nlc3MgKi8KICAgICAgICAgMCwgLyogc2hhcmUgbW9kZSAqLwpAQCAtMTU0OCw5OCArMTU4OCw2IEBACiAgICAgICAgICAgICBpZiAodHJhdmVyc2UpIHsKICAgICAgICAgICAgICAgICAvKiBJbiBvcmRlciB0byBjYWxsIEdldEZpbmFsUGF0aE5hbWVCeUhhbmRsZSB3ZSBuZWVkIHRvIG9wZW4KICAgICAgICAgICAgICAgICAgICB0aGUgZmlsZSB3aXRob3V0IHRoZSByZXBhcnNlIGhhbmRsaW5nIGZsYWcgc2V0LiAqLwotICAgICAgICAgICAgICAgIGhGaWxlMiA9IENyZWF0ZUZpbGVBKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCwgRklMRV9SRUFEX0FUVFJJQlVURVMsIEZJTEVfU0hBUkVfUkVBRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE9QRU5fRVhJU1RJTkcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFX0FUVFJJQlVURV9OT1JNQUx8RklMRV9GTEFHX0JBQ0tVUF9TRU1BTlRJQ1MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLSAgICAgICAgICAgICAgICBpZiAoaEZpbGUyID09IElOVkFMSURfSEFORExFX1ZBTFVFKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICAgICAgICAgICAgICBpZiAoIWdldF90YXJnZXRfcGF0aChoRmlsZTIsICZ0YXJnZXRfcGF0aCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLQotICAgICAgICAgICAgICAgIGNvZGUgPSB3aW4zMl94c3RhdF9pbXBsX3codGFyZ2V0X3BhdGgsIHJlc3VsdCwgRkFMU0UpOwotICAgICAgICAgICAgICAgIFB5TWVtX0ZyZWUodGFyZ2V0X3BhdGgpOwotICAgICAgICAgICAgICAgIHJldHVybiBjb2RlOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIENsb3NlSGFuZGxlKGhGaWxlKTsKLSAgICB9Ci0gICAgX1B5X2F0dHJpYnV0ZV9kYXRhX3RvX3N0YXQoJmluZm8sIHJlcGFyc2VfdGFnLCByZXN1bHQpOwotCi0gICAgLyogU2V0IFNfSUVYRUMgaWYgaXQgaXMgYW4gLmV4ZSwgLmJhdCwgLi4uICovCi0gICAgZG90ID0gc3RycmNocihwYXRoLCAnLicpOwotICAgIGlmIChkb3QpIHsKLSAgICAgICAgaWYgKHN0cmljbXAoZG90LCAiLmJhdCIpID09IDAgfHwgc3RyaWNtcChkb3QsICIuY21kIikgPT0gMCB8fAotICAgICAgICAgICAgc3RyaWNtcChkb3QsICIuZXhlIikgPT0gMCB8fCBzdHJpY21wKGRvdCwgIi5jb20iKSA9PSAwKQotICAgICAgICAgICAgcmVzdWx0LT5zdF9tb2RlIHw9IDAxMTE7Ci0gICAgfQotICAgIHJldHVybiAwOwotfQotCi1zdGF0aWMgaW50Ci13aW4zMl94c3RhdF9pbXBsX3coY29uc3Qgd2NoYXJfdCAqcGF0aCwgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCAqcmVzdWx0LAotICAgICAgICAgICAgICAgICAgIEJPT0wgdHJhdmVyc2UpCi17Ci0gICAgaW50IGNvZGU7Ci0gICAgSEFORExFIGhGaWxlLCBoRmlsZTI7Ci0gICAgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04gaW5mbzsKLSAgICBVTE9ORyByZXBhcnNlX3RhZyA9IDA7Ci0gICAgd2NoYXJfdCAqdGFyZ2V0X3BhdGg7Ci0gICAgY29uc3Qgd2NoYXJfdCAqZG90OwotCi0gICAgaEZpbGUgPSBDcmVhdGVGaWxlVygKLSAgICAgICAgcGF0aCwKLSAgICAgICAgRklMRV9SRUFEX0FUVFJJQlVURVMsIC8qIGRlc2lyZWQgYWNjZXNzICovCi0gICAgICAgIDAsIC8qIHNoYXJlIG1vZGUgKi8KLSAgICAgICAgTlVMTCwgLyogc2VjdXJpdHkgYXR0cmlidXRlcyAqLwotICAgICAgICBPUEVOX0VYSVNUSU5HLAotICAgICAgICAvKiBGSUxFX0ZMQUdfQkFDS1VQX1NFTUFOVElDUyBpcyByZXF1aXJlZCB0byBvcGVuIGEgZGlyZWN0b3J5ICovCi0gICAgICAgIC8qIEZJTEVfRkxBR19PUEVOX1JFUEFSU0VfUE9JTlQgZG9lcyBub3QgZm9sbG93IHRoZSBzeW1saW5rLgotICAgICAgICAgICBCZWNhdXNlIG9mIHRoaXMsIGNhbGxzIGxpa2UgR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlIHdpbGwgcmV0dXJuCi0gICAgICAgICAgIHRoZSBzeW1saW5rIHBhdGggYWdhaW4gYW5kIG5vdCB0aGUgYWN0dWFsIGZpbmFsIHBhdGguICovCi0gICAgICAgIEZJTEVfQVRUUklCVVRFX05PUk1BTHxGSUxFX0ZMQUdfQkFDS1VQX1NFTUFOVElDU3wKLSAgICAgICAgICAgIEZJTEVfRkxBR19PUEVOX1JFUEFSU0VfUE9JTlQsCi0gICAgICAgIE5VTEwpOwotCi0gICAgaWYgKGhGaWxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7Ci0gICAgICAgIC8qIEVpdGhlciB0aGUgdGFyZ2V0IGRvZXNuJ3QgZXhpc3QsIG9yIHdlIGRvbid0IGhhdmUgYWNjZXNzIHRvCi0gICAgICAgICAgIGdldCBhIGhhbmRsZSB0byBpdC4gSWYgdGhlIGZvcm1lciwgd2UgbmVlZCB0byByZXR1cm4gYW4gZXJyb3IuCi0gICAgICAgICAgIElmIHRoZSBsYXR0ZXIsIHdlIGNhbiB1c2UgYXR0cmlidXRlc19mcm9tX2Rpci4gKi8KLSAgICAgICAgRFdPUkQgbGFzdEVycm9yID0gR2V0TGFzdEVycm9yKCk7Ci0gICAgICAgIGlmIChsYXN0RXJyb3IgIT0gRVJST1JfQUNDRVNTX0RFTklFRCAmJgotICAgICAgICAgICAgbGFzdEVycm9yICE9IEVSUk9SX1NIQVJJTkdfVklPTEFUSU9OKQotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAvKiBDb3VsZCBub3QgZ2V0IGF0dHJpYnV0ZXMgb24gb3BlbiBmaWxlLiBGYWxsIGJhY2sgdG8KLSAgICAgICAgICAgcmVhZGluZyB0aGUgZGlyZWN0b3J5LiAqLwotICAgICAgICBpZiAoIWF0dHJpYnV0ZXNfZnJvbV9kaXJfdyhwYXRoLCAmaW5mbywgJnJlcGFyc2VfdGFnKSkKLSAgICAgICAgICAgIC8qIFZlcnkgc3RyYW5nZS4gVGhpcyBzaG91bGQgbm90IGZhaWwgbm93ICovCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIGlmIChpbmZvLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9SRVBBUlNFX1BPSU5UKSB7Ci0gICAgICAgICAgICBpZiAodHJhdmVyc2UpIHsKLSAgICAgICAgICAgICAgICAvKiBTaG91bGQgdHJhdmVyc2UsIGJ1dCBjb3VsZCBub3Qgb3BlbiByZXBhcnNlIHBvaW50IGhhbmRsZSAqLwotICAgICAgICAgICAgICAgIFNldExhc3RFcnJvcihsYXN0RXJyb3IpOwotICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmICghR2V0RmlsZUluZm9ybWF0aW9uQnlIYW5kbGUoaEZpbGUsICZpbmZvKSkgewotICAgICAgICAgICAgQ2xvc2VIYW5kbGUoaEZpbGUpOwotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0gICAgICAgIGlmIChpbmZvLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9SRVBBUlNFX1BPSU5UKSB7Ci0gICAgICAgICAgICBpZiAoIXdpbjMyX2dldF9yZXBhcnNlX3RhZyhoRmlsZSwgJnJlcGFyc2VfdGFnKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICAgICAgICAgIC8qIENsb3NlIHRoZSBvdXRlciBvcGVuIGZpbGUgaGFuZGxlIG5vdyB0aGF0IHdlJ3JlIGFib3V0IHRvCi0gICAgICAgICAgICAgICByZW9wZW4gaXQgd2l0aCBkaWZmZXJlbnQgZmxhZ3MuICovCi0gICAgICAgICAgICBpZiAoIUNsb3NlSGFuZGxlKGhGaWxlKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICAgICAgICAgIGlmICh0cmF2ZXJzZSkgewotICAgICAgICAgICAgICAgIC8qIEluIG9yZGVyIHRvIGNhbGwgR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlIHdlIG5lZWQgdG8gb3BlbgotICAgICAgICAgICAgICAgICAgIHRoZSBmaWxlIHdpdGhvdXQgdGhlIHJlcGFyc2UgaGFuZGxpbmcgZmxhZyBzZXQuICovCiAgICAgICAgICAgICAgICAgaEZpbGUyID0gQ3JlYXRlRmlsZVcoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLCBGSUxFX1JFQURfQVRUUklCVVRFUywgRklMRV9TSEFSRV9SRUFELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgT1BFTl9FWElTVElORywKQEAgLTE2NTEsOCArMTU5OSw4IEBACiAgICAgICAgICAgICAgICAgaWYgKCFnZXRfdGFyZ2V0X3BhdGgoaEZpbGUyLCAmdGFyZ2V0X3BhdGgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAKLSAgICAgICAgICAgICAgICBjb2RlID0gd2luMzJfeHN0YXRfaW1wbF93KHRhcmdldF9wYXRoLCByZXN1bHQsIEZBTFNFKTsKLSAgICAgICAgICAgICAgICBQeU1lbV9GcmVlKHRhcmdldF9wYXRoKTsKKyAgICAgICAgICAgICAgICBjb2RlID0gd2luMzJfeHN0YXRfaW1wbCh0YXJnZXRfcGF0aCwgcmVzdWx0LCBGQUxTRSk7CisgICAgICAgICAgICAgICAgUHlNZW1fUmF3RnJlZSh0YXJnZXRfcGF0aCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNvZGU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZQpAQCAtMTY3MSw3ICsxNjE5LDcgQEAKIH0KIAogc3RhdGljIGludAotd2luMzJfeHN0YXQoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCAqcmVzdWx0LCBCT09MIHRyYXZlcnNlKQord2luMzJfeHN0YXQoY29uc3Qgd2NoYXJfdCAqcGF0aCwgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCAqcmVzdWx0LCBCT09MIHRyYXZlcnNlKQogewogICAgIC8qIFByb3RvY29sIHZpb2xhdGlvbjogd2UgZXhwbGljaXRseSBjbGVhciBlcnJubywgaW5zdGVhZCBvZgogICAgICAgIHNldHRpbmcgaXQgdG8gYSBQT1NJWCBlcnJvci4gQ2FsbGVycyBzaG91bGQgdXNlIEdldExhc3RFcnJvci4gKi8KQEAgLTE2NzksMTYgKzE2MjcsNiBAQAogICAgIGVycm5vID0gMDsKICAgICByZXR1cm4gY29kZTsKIH0KLQotc3RhdGljIGludAotd2luMzJfeHN0YXRfdyhjb25zdCB3Y2hhcl90ICpwYXRoLCBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0ICpyZXN1bHQsIEJPT0wgdHJhdmVyc2UpCi17Ci0gICAgLyogUHJvdG9jb2wgdmlvbGF0aW9uOiB3ZSBleHBsaWNpdGx5IGNsZWFyIGVycm5vLCBpbnN0ZWFkIG9mCi0gICAgICAgc2V0dGluZyBpdCB0byBhIFBPU0lYIGVycm9yLiBDYWxsZXJzIHNob3VsZCB1c2UgR2V0TGFzdEVycm9yLiAqLwotICAgIGludCBjb2RlID0gd2luMzJfeHN0YXRfaW1wbF93KHBhdGgsIHJlc3VsdCwgdHJhdmVyc2UpOwotICAgIGVycm5vID0gMDsKLSAgICByZXR1cm4gY29kZTsKLX0KIC8qIEFib3V0IHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOiB3aW4zMl9sc3RhdF93LCB3aW4zMl9zdGF0LCB3aW4zMl9zdGF0X3cKIAogICAgSW4gUG9zaXgsIHN0YXQgYXV0b21hdGljYWxseSB0cmF2ZXJzZXMgc3ltbGlua3MgYW5kIHJldHVybnMgdGhlIHN0YXQKQEAgLTE2OTgsMzQgKzE2MzYsMjAgQEAKIAogICAgVGhlcmVmb3JlLCB3aW4zMl9sc3RhdCB3aWxsIGdldCB0aGUgYXR0cmlidXRlcyB0cmFkaXRpb25hbGx5LCBhbmQKICAgIHdpbjMyX3N0YXQgd2lsbCBmaXJzdCBleHBsaWNpdGx5IHJlc29sdmUgdGhlIHN5bWxpbmsgdGFyZ2V0IGFuZCB0aGVuIHdpbGwKLSAgIGNhbGwgd2luMzJfbHN0YXQgb24gdGhhdCByZXN1bHQuCi0KLSAgIFRoZSBfdyByZXByZXNlbnQgVW5pY29kZSBlcXVpdmFsZW50cyBvZiB0aGUgYWZvcmVtZW50aW9uZWQgQU5TSSBmdW5jdGlvbnMuICovCisgICBjYWxsIHdpbjMyX2xzdGF0IG9uIHRoYXQgcmVzdWx0LiAqLwogCiBzdGF0aWMgaW50Ci13aW4zMl9sc3RhdChjb25zdCBjaGFyKiBwYXRoLCBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0ICpyZXN1bHQpCit3aW4zMl9sc3RhdChjb25zdCB3Y2hhcl90KiBwYXRoLCBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0ICpyZXN1bHQpCiB7CiAgICAgcmV0dXJuIHdpbjMyX3hzdGF0KHBhdGgsIHJlc3VsdCwgRkFMU0UpOwogfQogCiBzdGF0aWMgaW50Ci13aW4zMl9sc3RhdF93KGNvbnN0IHdjaGFyX3QqIHBhdGgsIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3QgKnJlc3VsdCkKLXsKLSAgICByZXR1cm4gd2luMzJfeHN0YXRfdyhwYXRoLCByZXN1bHQsIEZBTFNFKTsKLX0KLQotc3RhdGljIGludAotd2luMzJfc3RhdChjb25zdCBjaGFyKiBwYXRoLCBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0ICpyZXN1bHQpCit3aW4zMl9zdGF0KGNvbnN0IHdjaGFyX3QqIHBhdGgsIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3QgKnJlc3VsdCkKIHsKICAgICByZXR1cm4gd2luMzJfeHN0YXQocGF0aCwgcmVzdWx0LCBUUlVFKTsKIH0KIAotc3RhdGljIGludAotd2luMzJfc3RhdF93KGNvbnN0IHdjaGFyX3QqIHBhdGgsIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3QgKnJlc3VsdCkKLXsKLSAgICByZXR1cm4gd2luMzJfeHN0YXRfdyhwYXRoLCByZXN1bHQsIFRSVUUpOwotfQotCiAjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogCiBQeURvY19TVFJWQVIoc3RhdF9yZXN1bHRfX2RvY19fLApAQCAtMjAwNyw3ICsxOTMxLDcgQEAKICAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHYsIDAsIFB5TG9uZ19Gcm9tTG9uZygobG9uZylzdC0+c3RfbW9kZSkpOwogI2lmZGVmIEhBVkVfTEFSR0VGSUxFX1NVUFBPUlQKICAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHYsIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxvbmdfRnJvbUxvbmdMb25nKChQWV9MT05HX0xPTkcpc3QtPnN0X2lubykpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nTG9uZygobG9uZyBsb25nKXN0LT5zdF9pbm8pKTsKICNlbHNlCiAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCAxLCBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpc3QtPnN0X2lubykpOwogI2VuZGlmCkBAIC0yMDI2LDcgKzE5NTAsNyBAQAogI2VuZGlmCiAjaWZkZWYgSEFWRV9MQVJHRUZJTEVfU1VQUE9SVAogICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgNiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKFBZX0xPTkdfTE9ORylzdC0+c3Rfc2l6ZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nTG9uZygobG9uZyBsb25nKXN0LT5zdF9zaXplKSk7CiAjZWxzZQogICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgNiwgUHlMb25nX0Zyb21Mb25nKHN0LT5zdF9zaXplKSk7CiAjZW5kaWYKQEAgLTIxMDYsNyArMjAzMCw3IEBACiAKIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2RvX3N0YXQoY2hhciAqZnVuY3Rpb25fbmFtZSwgcGF0aF90ICpwYXRoLAorcG9zaXhfZG9fc3RhdChjb25zdCBjaGFyICpmdW5jdGlvbl9uYW1lLCBwYXRoX3QgKnBhdGgsCiAgICAgICAgICAgICAgIGludCBkaXJfZmQsIGludCBmb2xsb3dfc3ltbGlua3MpCiB7CiAgICAgU1RSVUNUX1NUQVQgc3Q7CkBAIC0yMTI1LDI4ICsyMDQ5LDI2IEBACiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIGlmIChwYXRoLT5mZCAhPSAtMSkKICAgICAgICAgcmVzdWx0ID0gRlNUQVQocGF0aC0+ZmQsICZzdCk7Ci0gICAgZWxzZQogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBpZiAocGF0aC0+d2lkZSkgewotICAgICAgICBpZiAoZm9sbG93X3N5bWxpbmtzKQotICAgICAgICAgICAgcmVzdWx0ID0gd2luMzJfc3RhdF93KHBhdGgtPndpZGUsICZzdCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3VsdCA9IHdpbjMyX2xzdGF0X3cocGF0aC0+d2lkZSwgJnN0KTsKLSAgICB9CisgICAgZWxzZSBpZiAoZm9sbG93X3N5bWxpbmtzKQorICAgICAgICByZXN1bHQgPSB3aW4zMl9zdGF0KHBhdGgtPndpZGUsICZzdCk7CiAgICAgZWxzZQotI2VuZGlmCi0jaWYgZGVmaW5lZChIQVZFX0xTVEFUKSB8fCBkZWZpbmVkKE1TX1dJTkRPV1MpCisgICAgICAgIHJlc3VsdCA9IHdpbjMyX2xzdGF0KHBhdGgtPndpZGUsICZzdCk7CisjZWxzZQorICAgIGVsc2UKKyNpZiBkZWZpbmVkKEhBVkVfTFNUQVQpCiAgICAgaWYgKCghZm9sbG93X3N5bWxpbmtzKSAmJiAoZGlyX2ZkID09IERFRkFVTFRfRElSX0ZEKSkKICAgICAgICAgcmVzdWx0ID0gTFNUQVQocGF0aC0+bmFycm93LCAmc3QpOwogICAgIGVsc2UKLSNlbmRpZgorI2VuZGlmIC8qIEhBVkVfTFNUQVQgKi8KICNpZmRlZiBIQVZFX0ZTVEFUQVQKICAgICBpZiAoKGRpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkgfHwgIWZvbGxvd19zeW1saW5rcykKICAgICAgICAgcmVzdWx0ID0gZnN0YXRhdChkaXJfZmQsIHBhdGgtPm5hcnJvdywgJnN0LAogICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd19zeW1saW5rcyA/IDAgOiBBVF9TWU1MSU5LX05PRk9MTE9XKTsKICAgICBlbHNlCi0jZW5kaWYKKyNlbmRpZiAvKiBIQVZFX0ZTVEFUQVQgKi8KICAgICAgICAgcmVzdWx0ID0gU1RBVChwYXRoLT5uYXJyb3csICZzdCk7CisjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBpZiAocmVzdWx0ICE9IDApIHsKQEAgLTI0MjYsOCArMjM0OCw4IEBACiAgICAgdHlwZSA9ICdpZF90JwogICAgIGZvcm1hdF91bml0ID0gJyIgX1B5X1BBUlNFX1BJRCAiJwogCi1jbGFzcyBQeV9pbnRwdHJfdF9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6Ci0gICAgdHlwZSA9ICdQeV9pbnRwdHJfdCcKK2NsYXNzIGludHB0cl90X2NvbnZlcnRlcihDQ29udmVydGVyKToKKyAgICB0eXBlID0gJ2ludHB0cl90JwogICAgIGZvcm1hdF91bml0ID0gJyIgX1B5X1BBUlNFX0lOVFBUUiAiJwogCiBjbGFzcyBQeV9vZmZfdF9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CkBAIC0yNDU0LDcgKzIzNzYsNyBAQAogICAgIGltcGxfYnlfcmVmZXJlbmNlID0gVHJ1ZTsKIAogW3B5dGhvbiBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwotLypbcHl0aG9uIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9YWZmZTY4MzE2ZjE2MDQwMV0qLworLypbcHl0aG9uIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9NDE4ZmNlMGUwMTE0NDQ2MV0qLwogCiAvKltjbGluaWMgaW5wdXRdCiAKQEAgLTI1ODIsMTAgKzI1MDQsNyBAQAogCiAjaWZkZWYgTVNfV0lORE9XUwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocGF0aC0+d2lkZSAhPSBOVUxMKQotICAgICAgICBhdHRyID0gR2V0RmlsZUF0dHJpYnV0ZXNXKHBhdGgtPndpZGUpOwotICAgIGVsc2UKLSAgICAgICAgYXR0ciA9IEdldEZpbGVBdHRyaWJ1dGVzQShwYXRoLT5uYXJyb3cpOworICAgIGF0dHIgPSBHZXRGaWxlQXR0cmlidXRlc1cocGF0aC0+d2lkZSk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAogICAgIC8qCkBAIC0yNzA5LDExICsyNjI4LDggQEAKIAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgaWYgKHBhdGgtPndpZGUpCi0gICAgICAgIHJlc3VsdCA9IHdpbjMyX3djaGRpcihwYXRoLT53aWRlKTsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IHdpbjMyX2NoZGlyKHBhdGgtPm5hcnJvdyk7Ci0gICAgcmVzdWx0ID0gIXJlc3VsdDsgLyogb24gdW5peCwgc3VjY2VzcyA9IDAsIG9uIHdpbmRvd3MsIHN1Y2Nlc3MgPSAhMCAqLworICAgIC8qIG9uIHVuaXgsIHN1Y2Nlc3MgPSAwLCBvbiB3aW5kb3dzLCBzdWNjZXNzID0gITAgKi8KKyAgICByZXN1bHQgPSAhd2luMzJfd2NoZGlyKHBhdGgtPndpZGUpOwogI2Vsc2UKICNpZmRlZiBIQVZFX0ZDSERJUgogICAgIGlmIChwYXRoLT5mZCAhPSAtMSkKQEAgLTI4MDgsMTAgKzI3MjQsNyBAQAogCiAjaWZkZWYgTVNfV0lORE9XUwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocGF0aC0+d2lkZSkKLSAgICAgICAgYXR0ciA9IEdldEZpbGVBdHRyaWJ1dGVzVyhwYXRoLT53aWRlKTsKLSAgICBlbHNlCi0gICAgICAgIGF0dHIgPSBHZXRGaWxlQXR0cmlidXRlc0EocGF0aC0+bmFycm93KTsKKyAgICBhdHRyID0gR2V0RmlsZUF0dHJpYnV0ZXNXKHBhdGgtPndpZGUpOwogICAgIGlmIChhdHRyID09IElOVkFMSURfRklMRV9BVFRSSUJVVEVTKQogICAgICAgICByZXN1bHQgPSAwOwogICAgIGVsc2UgewpAQCAtMjgxOSwxMCArMjczMiw3IEBACiAgICAgICAgICAgICBhdHRyICY9IH5GSUxFX0FUVFJJQlVURV9SRUFET05MWTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgYXR0ciB8PSBGSUxFX0FUVFJJQlVURV9SRUFET05MWTsKLSAgICAgICAgaWYgKHBhdGgtPndpZGUpCi0gICAgICAgICAgICByZXN1bHQgPSBTZXRGaWxlQXR0cmlidXRlc1cocGF0aC0+d2lkZSwgYXR0cik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3VsdCA9IFNldEZpbGVBdHRyaWJ1dGVzQShwYXRoLT5uYXJyb3csIGF0dHIpOworICAgICAgICByZXN1bHQgPSBTZXRGaWxlQXR0cmlidXRlc1cocGF0aC0+d2lkZSwgYXR0cik7CiAgICAgfQogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKQEAgLTMzMTgsMTIgKzMyMjgsMjIgQEAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgZG8gewogICAgICAgICBidWZsZW4gKz0gY2h1bms7CisjaWZkZWYgTVNfV0lORE9XUworICAgICAgICBpZiAoYnVmbGVuID4gSU5UX01BWCkgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisjZW5kaWYKICAgICAgICAgdG1wYnVmID0gUHlNZW1fUmF3UmVhbGxvYyhidWYsIGJ1Zmxlbik7CiAgICAgICAgIGlmICh0bXBidWYgPT0gTlVMTCkKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGJ1ZiA9IHRtcGJ1ZjsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgIGN3ZCA9IGdldGN3ZChidWYsIChpbnQpYnVmbGVuKTsKKyNlbHNlCiAgICAgICAgIGN3ZCA9IGdldGN3ZChidWYsIGJ1Zmxlbik7CisjZW5kaWYKICAgICB9IHdoaWxlIChjd2QgPT0gTlVMTCAmJiBlcnJubyA9PSBFUkFOR0UpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKQEAgLTM0MDUsNyArMzMyNSw3IEBACiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9N2YwMGY2MDA3ZmQ1MjY5YSBpbnB1dD1iMDA5NWViYmNiYWE3ZTA0XSovCiB7CiAjaWZkZWYgTVNfV0lORE9XUwotICAgIEJPT0wgcmVzdWx0OworICAgIEJPT0wgcmVzdWx0ID0gRkFMU0U7CiAjZWxzZQogICAgIGludCByZXN1bHQ7CiAjZW5kaWYKQEAgLTM0MTcsMTggKzMzMzcsMTcgQEAKICAgICB9CiAjZW5kaWYKIAorI2lmbmRlZiBNU19XSU5ET1dTCiAgICAgaWYgKChzcmMtPm5hcnJvdyAmJiBkc3QtPndpZGUpIHx8IChzcmMtPndpZGUgJiYgZHN0LT5uYXJyb3cpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImxpbms6IHNyYyBhbmQgZHN0IG11c3QgYmUgdGhlIHNhbWUgdHlwZSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisjZW5kaWYKIAogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgaWYgKHNyYy0+d2lkZSkKLSAgICAgICAgcmVzdWx0ID0gQ3JlYXRlSGFyZExpbmtXKGRzdC0+d2lkZSwgc3JjLT53aWRlLCBOVUxMKTsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IENyZWF0ZUhhcmRMaW5rQShkc3QtPm5hcnJvdywgc3JjLT5uYXJyb3csIE5VTEwpOworICAgIHJlc3VsdCA9IENyZWF0ZUhhcmRMaW5rVyhkc3QtPndpZGUsIHNyYy0+d2lkZSwgTlVMTCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAogICAgIGlmICghcmVzdWx0KQpAQCAtMzQ0MywxMyArMzM2MiwxMyBAQAogICAgICAgICAgICAgZHN0X2Rpcl9mZCwgZHN0LT5uYXJyb3csCiAgICAgICAgICAgICBmb2xsb3dfc3ltbGlua3MgPyBBVF9TWU1MSU5LX0ZPTExPVyA6IDApOwogICAgIGVsc2UKLSNlbmRpZgorI2VuZGlmIC8qIEhBVkVfTElOS0FUICovCiAgICAgICAgIHJlc3VsdCA9IGxpbmsoc3JjLT5uYXJyb3csIGRzdC0+bmFycm93KTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgaWYgKHJlc3VsdCkKICAgICAgICAgcmV0dXJuIHBhdGhfZXJyb3IyKHNyYywgZHN0KTsKLSNlbmRpZgorI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIAogICAgIFB5X1JFVFVSTl9OT05FOwogfQpAQCAtMzQ2Myw5OSArMzM4MiwzOSBAQAogICAgIFB5T2JqZWN0ICp2OwogICAgIEhBTkRMRSBoRmluZEZpbGUgPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKICAgICBCT09MIHJlc3VsdDsKLSAgICBXSU4zMl9GSU5EX0RBVEEgRmlsZURhdGE7Ci0gICAgY2hhciBuYW1lYnVmW01BWF9QQVRIKzRdOyAvKiBPdmVyYWxsb2NhdGUgZm9yICJcKi4qIiAqLwotICAgIGNoYXIgKmJ1ZnB0ciA9IG5hbWVidWY7CisgICAgd2NoYXJfdCBuYW1lYnVmW01BWF9QQVRIKzRdOyAvKiBPdmVyYWxsb2NhdGUgZm9yICJcKi4qIiAqLwogICAgIC8qIG9ubHkgY2xhaW0gdG8gaGF2ZSBzcGFjZSBmb3IgTUFYX1BBVEggKi8KICAgICBQeV9zc2l6ZV90IGxlbiA9IFB5X0FSUkFZX0xFTkdUSChuYW1lYnVmKS00OwotICAgIFB5T2JqZWN0ICpwbyA9IE5VTEw7CiAgICAgd2NoYXJfdCAqd25hbWVidWYgPSBOVUxMOwogCi0gICAgaWYgKCFwYXRoLT5uYXJyb3cpIHsKLSAgICAgICAgV0lOMzJfRklORF9EQVRBVyB3RmlsZURhdGE7Ci0gICAgICAgIHdjaGFyX3QgKnBvX3djaGFyczsKKyAgICBXSU4zMl9GSU5EX0RBVEFXIHdGaWxlRGF0YTsKKyAgICBjb25zdCB3Y2hhcl90ICpwb193Y2hhcnM7CiAKLSAgICAgICAgaWYgKCFwYXRoLT53aWRlKSB7IC8qIERlZmF1bHQgYXJnOiAiLiIgKi8KLSAgICAgICAgICAgIHBvX3djaGFycyA9IEwiLiI7Ci0gICAgICAgICAgICBsZW4gPSAxOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcG9fd2NoYXJzID0gcGF0aC0+d2lkZTsKLSAgICAgICAgICAgIGxlbiA9IHdjc2xlbihwYXRoLT53aWRlKTsKLSAgICAgICAgfQotICAgICAgICAvKiBUaGUgKzUgaXMgc28gd2UgY2FuIGFwcGVuZCAiXFwqLipcMCIgKi8KLSAgICAgICAgd25hbWVidWYgPSBQeU1lbV9OZXcod2NoYXJfdCwgbGVuICsgNSk7Ci0gICAgICAgIGlmICghd25hbWVidWYpIHsKLSAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgICAgIH0KLSAgICAgICAgd2NzY3B5KHduYW1lYnVmLCBwb193Y2hhcnMpOwotICAgICAgICBpZiAobGVuID4gMCkgewotICAgICAgICAgICAgd2NoYXJfdCB3Y2ggPSB3bmFtZWJ1ZltsZW4tMV07Ci0gICAgICAgICAgICBpZiAod2NoICE9IFNFUCAmJiB3Y2ggIT0gQUxUU0VQICYmIHdjaCAhPSBMJzonKQotICAgICAgICAgICAgICAgIHduYW1lYnVmW2xlbisrXSA9IFNFUDsKLSAgICAgICAgICAgIHdjc2NweSh3bmFtZWJ1ZiArIGxlbiwgTCIqLioiKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoKGxpc3QgPSBQeUxpc3RfTmV3KDApKSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgICAgIH0KLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICBoRmluZEZpbGUgPSBGaW5kRmlyc3RGaWxlVyh3bmFtZWJ1ZiwgJndGaWxlRGF0YSk7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgIGlmIChoRmluZEZpbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKLSAgICAgICAgICAgIGludCBlcnJvciA9IEdldExhc3RFcnJvcigpOwotICAgICAgICAgICAgaWYgKGVycm9yID09IEVSUk9SX0ZJTEVfTk9UX0ZPVU5EKQotICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKLSAgICAgICAgICAgIGxpc3QgPSBwYXRoX2Vycm9yKHBhdGgpOwotICAgICAgICAgICAgZ290byBleGl0OwotICAgICAgICB9Ci0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIC8qIFNraXAgb3ZlciAuIGFuZCAuLiAqLwotICAgICAgICAgICAgaWYgKHdjc2NtcCh3RmlsZURhdGEuY0ZpbGVOYW1lLCBMIi4iKSAhPSAwICYmCi0gICAgICAgICAgICAgICAgd2NzY21wKHdGaWxlRGF0YS5jRmlsZU5hbWUsIEwiLi4iKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgdiA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIod0ZpbGVEYXRhLmNGaWxlTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3Y3NsZW4od0ZpbGVEYXRhLmNGaWxlTmFtZSkpOwotICAgICAgICAgICAgICAgIGlmICh2ID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGxpc3QpOwotICAgICAgICAgICAgICAgICAgICBsaXN0ID0gTlVMTDsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKGxpc3QsIHYpICE9IDApIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7Ci0gICAgICAgICAgICAgICAgICAgIGxpc3QgPSBOVUxMOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICAgICAgcmVzdWx0ID0gRmluZE5leHRGaWxlVyhoRmluZEZpbGUsICZ3RmlsZURhdGEpOwotICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgICAgIC8qIEZpbmROZXh0RmlsZSBzZXRzIGVycm9yIHRvIEVSUk9SX05PX01PUkVfRklMRVMgaWYKLSAgICAgICAgICAgICAgIGl0IGdvdCB0byB0aGUgZW5kIG9mIHRoZSBkaXJlY3RvcnkuICovCi0gICAgICAgICAgICBpZiAoIXJlc3VsdCAmJiBHZXRMYXN0RXJyb3IoKSAhPSBFUlJPUl9OT19NT1JFX0ZJTEVTKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGxpc3QpOwotICAgICAgICAgICAgICAgIGxpc3QgPSBwYXRoX2Vycm9yKHBhdGgpOwotICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSB3aGlsZSAocmVzdWx0ID09IFRSVUUpOwotCisgICAgaWYgKCFwYXRoLT53aWRlKSB7IC8qIERlZmF1bHQgYXJnOiAiLiIgKi8KKyAgICAgICAgcG9fd2NoYXJzID0gTCIuIjsKKyAgICAgICAgbGVuID0gMTsKKyAgICB9IGVsc2UgeworICAgICAgICBwb193Y2hhcnMgPSBwYXRoLT53aWRlOworICAgICAgICBsZW4gPSB3Y3NsZW4ocGF0aC0+d2lkZSk7CisgICAgfQorICAgIC8qIFRoZSArNSBpcyBzbyB3ZSBjYW4gYXBwZW5kICJcXCouKlwwIiAqLworICAgIHduYW1lYnVmID0gUHlNZW1fTmV3KHdjaGFyX3QsIGxlbiArIDUpOworICAgIGlmICghd25hbWVidWYpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgZ290byBleGl0OwogICAgIH0KLSAgICBzdHJjcHkobmFtZWJ1ZiwgcGF0aC0+bmFycm93KTsKLSAgICBsZW4gPSBwYXRoLT5sZW5ndGg7CisgICAgd2NzY3B5KHduYW1lYnVmLCBwb193Y2hhcnMpOwogICAgIGlmIChsZW4gPiAwKSB7Ci0gICAgICAgIGNoYXIgY2ggPSBuYW1lYnVmW2xlbi0xXTsKLSAgICAgICAgaWYgKGNoICE9ICdcXCcgJiYgY2ggIT0gJy8nICYmIGNoICE9ICc6JykKLSAgICAgICAgICAgIG5hbWVidWZbbGVuKytdID0gJ1xcJzsKLSAgICAgICAgc3RyY3B5KG5hbWVidWYgKyBsZW4sICIqLioiKTsKKyAgICAgICAgd2NoYXJfdCB3Y2ggPSB3bmFtZWJ1ZltsZW4tMV07CisgICAgICAgIGlmICh3Y2ggIT0gU0VQICYmIHdjaCAhPSBBTFRTRVAgJiYgd2NoICE9IEwnOicpCisgICAgICAgICAgICB3bmFtZWJ1ZltsZW4rK10gPSBTRVA7CisgICAgICAgIHdjc2NweSh3bmFtZWJ1ZiArIGxlbiwgTCIqLioiKTsKICAgICB9Ci0KLSAgICBpZiAoKGxpc3QgPSBQeUxpc3RfTmV3KDApKSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLQorICAgIGlmICgobGlzdCA9IFB5TGlzdF9OZXcoMCkpID09IE5VTEwpIHsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgaEZpbmRGaWxlID0gRmluZEZpcnN0RmlsZShuYW1lYnVmLCAmRmlsZURhdGEpOworICAgIGhGaW5kRmlsZSA9IEZpbmRGaXJzdEZpbGVXKHduYW1lYnVmLCAmd0ZpbGVEYXRhKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIGlmIChoRmluZEZpbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKICAgICAgICAgaW50IGVycm9yID0gR2V0TGFzdEVycm9yKCk7CkBAIC0zNTY3LDkgKzM0MjYsMTMgQEAKICAgICB9CiAgICAgZG8gewogICAgICAgICAvKiBTa2lwIG92ZXIgLiBhbmQgLi4gKi8KLSAgICAgICAgaWYgKHN0cmNtcChGaWxlRGF0YS5jRmlsZU5hbWUsICIuIikgIT0gMCAmJgotICAgICAgICAgICAgc3RyY21wKEZpbGVEYXRhLmNGaWxlTmFtZSwgIi4uIikgIT0gMCkgewotICAgICAgICAgICAgdiA9IFB5Qnl0ZXNfRnJvbVN0cmluZyhGaWxlRGF0YS5jRmlsZU5hbWUpOworICAgICAgICBpZiAod2NzY21wKHdGaWxlRGF0YS5jRmlsZU5hbWUsIEwiLiIpICE9IDAgJiYKKyAgICAgICAgICAgIHdjc2NtcCh3RmlsZURhdGEuY0ZpbGVOYW1lLCBMIi4uIikgIT0gMCkgeworICAgICAgICAgICAgdiA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIod0ZpbGVEYXRhLmNGaWxlTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdjc2xlbih3RmlsZURhdGEuY0ZpbGVOYW1lKSk7CisgICAgICAgICAgICBpZiAocGF0aC0+bmFycm93ICYmIHYpIHsKKyAgICAgICAgICAgICAgICBQeV9TRVRSRUYodiwgUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdCh2KSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAodiA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGxpc3QpOwogICAgICAgICAgICAgICAgIGxpc3QgPSBOVUxMOwpAQCAtMzU4NCw3ICszNDQ3LDcgQEAKICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKICAgICAgICAgfQogICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIHJlc3VsdCA9IEZpbmROZXh0RmlsZShoRmluZEZpbGUsICZGaWxlRGF0YSk7CisgICAgICAgIHJlc3VsdCA9IEZpbmROZXh0RmlsZVcoaEZpbmRGaWxlLCAmd0ZpbGVEYXRhKTsKICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICAgICAgLyogRmluZE5leHRGaWxlIHNldHMgZXJyb3IgdG8gRVJST1JfTk9fTU9SRV9GSUxFUyBpZgogICAgICAgICAgICBpdCBnb3QgdG8gdGhlIGVuZCBvZiB0aGUgZGlyZWN0b3J5LiAqLwpAQCAtMzYzOSw3ICszNTAyLDcgQEAKICAgICBlbHNlCiAjZW5kaWYKICAgICB7Ci0gICAgICAgIGNoYXIgKm5hbWU7CisgICAgICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICAgICAgIGlmIChwYXRoLT5uYXJyb3cpIHsKICAgICAgICAgICAgIG5hbWUgPSBwYXRoLT5uYXJyb3c7CiAgICAgICAgICAgICAvKiBvbmx5IHJldHVybiBieXRlcyBpZiB0aGV5IHNwZWNpZmllZCBhIGJ5dGVzIG9iamVjdCAqLwpAQCAtMzc2NSw0MSArMzYyOCwyOSBAQAogb3NfX2dldGZ1bGxwYXRobmFtZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCkKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iYjg2NzlkNTY4NDViYzliIGlucHV0PTMzMmVkNTM3YzI5ZDBhM2VdKi8KIHsKLSAgICBpZiAoIXBhdGgtPm5hcnJvdykKLSAgICB7Ci0gICAgICAgIHdjaGFyX3Qgd291dGJ1ZltNQVhfUEFUSF0sICp3b3V0YnVmcCA9IHdvdXRidWY7Ci0gICAgICAgIHdjaGFyX3QgKnd0ZW1wOwotICAgICAgICBEV09SRCByZXN1bHQ7Ci0gICAgICAgIFB5T2JqZWN0ICp2OworICAgIHdjaGFyX3Qgd291dGJ1ZltNQVhfUEFUSF0sICp3b3V0YnVmcCA9IHdvdXRidWY7CisgICAgd2NoYXJfdCAqd3RlbXA7CisgICAgRFdPUkQgcmVzdWx0OworICAgIFB5T2JqZWN0ICp2OwogCi0gICAgICAgIHJlc3VsdCA9IEdldEZ1bGxQYXRoTmFtZVcocGF0aC0+d2lkZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9BUlJBWV9MRU5HVEgod291dGJ1ZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd291dGJ1ZiwgJnd0ZW1wKTsKLSAgICAgICAgaWYgKHJlc3VsdCA+IFB5X0FSUkFZX0xFTkdUSCh3b3V0YnVmKSkgewotICAgICAgICAgICAgd291dGJ1ZnAgPSBQeU1lbV9OZXcod2NoYXJfdCwgcmVzdWx0KTsKLSAgICAgICAgICAgIGlmICghd291dGJ1ZnApCi0gICAgICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgICAgICByZXN1bHQgPSBHZXRGdWxsUGF0aE5hbWVXKHBhdGgtPndpZGUsIHJlc3VsdCwgd291dGJ1ZnAsICZ3dGVtcCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHJlc3VsdCkKLSAgICAgICAgICAgIHYgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHdvdXRidWZwLCB3Y3NsZW4od291dGJ1ZnApKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdiA9IHdpbjMyX2Vycm9yX29iamVjdCgiR2V0RnVsbFBhdGhOYW1lVyIsIHBhdGgtPm9iamVjdCk7Ci0gICAgICAgIGlmICh3b3V0YnVmcCAhPSB3b3V0YnVmKQotICAgICAgICAgICAgUHlNZW1fRnJlZSh3b3V0YnVmcCk7Ci0gICAgICAgIHJldHVybiB2OworICAgIHJlc3VsdCA9IEdldEZ1bGxQYXRoTmFtZVcocGF0aC0+d2lkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0FSUkFZX0xFTkdUSCh3b3V0YnVmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvdXRidWYsICZ3dGVtcCk7CisgICAgaWYgKHJlc3VsdCA+IFB5X0FSUkFZX0xFTkdUSCh3b3V0YnVmKSkgeworICAgICAgICB3b3V0YnVmcCA9IFB5TWVtX05ldyh3Y2hhcl90LCByZXN1bHQpOworICAgICAgICBpZiAoIXdvdXRidWZwKQorICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJlc3VsdCA9IEdldEZ1bGxQYXRoTmFtZVcocGF0aC0+d2lkZSwgcmVzdWx0LCB3b3V0YnVmcCwgJnd0ZW1wKTsKICAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGNoYXIgb3V0YnVmW01BWF9QQVRIXTsKLSAgICAgICAgY2hhciAqdGVtcDsKLQotICAgICAgICBpZiAoIUdldEZ1bGxQYXRoTmFtZShwYXRoLT5uYXJyb3csIFB5X0FSUkFZX0xFTkdUSChvdXRidWYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRidWYsICZ0ZW1wKSkgewotICAgICAgICAgICAgd2luMzJfZXJyb3Jfb2JqZWN0KCJHZXRGdWxsUGF0aE5hbWUiLCBwYXRoLT5vYmplY3QpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZyhvdXRidWYpOwotICAgIH0KKyAgICBpZiAocmVzdWx0KSB7CisgICAgICAgIHYgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHdvdXRidWZwLCB3Y3NsZW4od291dGJ1ZnApKTsKKyAgICAgICAgaWYgKHBhdGgtPm5hcnJvdykKKyAgICAgICAgICAgIFB5X1NFVFJFRih2LCBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KHYpKTsKKyAgICB9IGVsc2UKKyAgICAgICAgdiA9IHdpbjMyX2Vycm9yX29iamVjdCgiR2V0RnVsbFBhdGhOYW1lVyIsIHBhdGgtPm9iamVjdCk7CisgICAgaWYgKHdvdXRidWZwICE9IHdvdXRidWYpCisgICAgICAgIFB5TWVtX0ZyZWUod291dGJ1ZnApOworICAgIHJldHVybiB2OwogfQogCiAKQEAgLTM4MjEsNyArMzY3Miw3IEBACiAgICAgd2NoYXJfdCAqdGFyZ2V0X3BhdGg7CiAgICAgaW50IHJlc3VsdF9sZW5ndGg7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKLSAgICB3Y2hhcl90ICpwYXRoX3djaGFyOworICAgIGNvbnN0IHdjaGFyX3QgKnBhdGhfd2NoYXI7CiAKICAgICBwYXRoX3djaGFyID0gUHlVbmljb2RlX0FzVW5pY29kZShwYXRoKTsKICAgICBpZiAocGF0aF93Y2hhciA9PSBOVUxMKQpAQCAtMzg4MSwxMCArMzczMiw3IEBACiAgICAgRFdPUkQgYXR0cmlidXRlczsKIAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAoIXBhdGgtPm5hcnJvdykKLSAgICAgICAgYXR0cmlidXRlcyA9IEdldEZpbGVBdHRyaWJ1dGVzVyhwYXRoLT53aWRlKTsKLSAgICBlbHNlCi0gICAgICAgIGF0dHJpYnV0ZXMgPSBHZXRGaWxlQXR0cmlidXRlc0EocGF0aC0+bmFycm93KTsKKyAgICBhdHRyaWJ1dGVzID0gR2V0RmlsZUF0dHJpYnV0ZXNXKHBhdGgtPndpZGUpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBpZiAoYXR0cmlidXRlcyA9PSBJTlZBTElEX0ZJTEVfQVRUUklCVVRFUykKQEAgLTM5MTAsNyArMzc1OCw4IEBACiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Y2JkY2JkMTA1OWNlZWY0YyBpbnB1dD03ZWFjYWRjNDBhY2JkYTZiXSovCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKLSAgICB3Y2hhcl90ICpwYXRoX3djaGFyLCAqbW91bnRwYXRoPU5VTEw7CisgICAgY29uc3Qgd2NoYXJfdCAqcGF0aF93Y2hhcjsKKyAgICB3Y2hhcl90ICptb3VudHBhdGg9TlVMTDsKICAgICBzaXplX3QgYnVmbGVuOwogICAgIEJPT0wgcmV0OwogCkBAIC0zOTgxLDEwICszODMwLDcgQEAKIAogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgaWYgKHBhdGgtPndpZGUpCi0gICAgICAgIHJlc3VsdCA9IENyZWF0ZURpcmVjdG9yeVcocGF0aC0+d2lkZSwgTlVMTCk7Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQgPSBDcmVhdGVEaXJlY3RvcnlBKHBhdGgtPm5hcnJvdywgTlVMTCk7CisgICAgcmVzdWx0ID0gQ3JlYXRlRGlyZWN0b3J5VyhwYXRoLT53aWRlLCBOVUxMKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgaWYgKCFyZXN1bHQpCkBAIC00MDA0LDcgKzM4NTAsNyBAQAogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKHJlc3VsdCA8IDApCiAgICAgICAgIHJldHVybiBwYXRoX2Vycm9yKHBhdGgpOwotI2VuZGlmCisjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCkBAIC00MTA4LDcgKzM5NTQsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGludGVybmFsX3JlbmFtZShwYXRoX3QgKnNyYywgcGF0aF90ICpkc3QsIGludCBzcmNfZGlyX2ZkLCBpbnQgZHN0X2Rpcl9mZCwgaW50IGlzX3JlcGxhY2UpCiB7Ci0gICAgY2hhciAqZnVuY3Rpb25fbmFtZSA9IGlzX3JlcGxhY2UgPyAicmVwbGFjZSIgOiAicmVuYW1lIjsKKyAgICBjb25zdCBjaGFyICpmdW5jdGlvbl9uYW1lID0gaXNfcmVwbGFjZSA/ICJyZXBsYWNlIiA6ICJyZW5hbWUiOwogICAgIGludCBkaXJfZmRfc3BlY2lmaWVkOwogCiAjaWZkZWYgTVNfV0lORE9XUwpAQCAtNDEyNywzMSArMzk3MywyOCBAQAogICAgIH0KICNlbmRpZgogCi0gICAgaWYgKChzcmMtPm5hcnJvdyAmJiBkc3QtPndpZGUpIHx8IChzcmMtPndpZGUgJiYgZHN0LT5uYXJyb3cpKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIiVzOiBzcmMgYW5kIGRzdCBtdXN0IGJlIHRoZSBzYW1lIHR5cGUiLCBmdW5jdGlvbl9uYW1lKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCiAjaWZkZWYgTVNfV0lORE9XUwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAoc3JjLT53aWRlKQotICAgICAgICByZXN1bHQgPSBNb3ZlRmlsZUV4VyhzcmMtPndpZGUsIGRzdC0+d2lkZSwgZmxhZ3MpOwotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gTW92ZUZpbGVFeEEoc3JjLT5uYXJyb3csIGRzdC0+bmFycm93LCBmbGFncyk7CisgICAgcmVzdWx0ID0gTW92ZUZpbGVFeFcoc3JjLT53aWRlLCBkc3QtPndpZGUsIGZsYWdzKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBwYXRoX2Vycm9yMihzcmMsIGRzdCk7CiAKICNlbHNlCisgICAgaWYgKChzcmMtPm5hcnJvdyAmJiBkc3QtPndpZGUpIHx8IChzcmMtPndpZGUgJiYgZHN0LT5uYXJyb3cpKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIiVzOiBzcmMgYW5kIGRzdCBtdXN0IGJlIHRoZSBzYW1lIHR5cGUiLCBmdW5jdGlvbl9uYW1lKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogI2lmZGVmIEhBVkVfUkVOQU1FQVQKICAgICBpZiAoZGlyX2ZkX3NwZWNpZmllZCkKICAgICAgICAgcmVzdWx0ID0gcmVuYW1lYXQoc3JjX2Rpcl9mZCwgc3JjLT5uYXJyb3csIGRzdF9kaXJfZmQsIGRzdC0+bmFycm93KTsKICAgICBlbHNlCiAjZW5kaWYKLSAgICAgICAgcmVzdWx0ID0gcmVuYW1lKHNyYy0+bmFycm93LCBkc3QtPm5hcnJvdyk7CisgICAgcmVzdWx0ID0gcmVuYW1lKHNyYy0+bmFycm93LCBkc3QtPm5hcnJvdyk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAogICAgIGlmIChyZXN1bHQpCkBAIC00MjMyLDExICs0MDc1LDggQEAKIAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgaWYgKHBhdGgtPndpZGUpCi0gICAgICAgIHJlc3VsdCA9IFJlbW92ZURpcmVjdG9yeVcocGF0aC0+d2lkZSk7Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQgPSBSZW1vdmVEaXJlY3RvcnlBKHBhdGgtPm5hcnJvdyk7Ci0gICAgcmVzdWx0ID0gIXJlc3VsdDsgLyogV2luZG93cywgc3VjY2Vzcz0xLCBVTklYLCBzdWNjZXNzPTAgKi8KKyAgICAvKiBXaW5kb3dzLCBzdWNjZXNzPTEsIFVOSVgsIHN1Y2Nlc3M9MCAqLworICAgIHJlc3VsdCA9ICFSZW1vdmVEaXJlY3RvcnlXKHBhdGgtPndpZGUpOwogI2Vsc2UKICNpZmRlZiBIQVZFX1VOTElOS0FUCiAgICAgaWYgKGRpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkKQEAgLTQyNzAsNyArNDExMCw5IEBACiB7CiAgICAgbG9uZyByZXN1bHQ7CiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICAgICByZXN1bHQgPSBfd3N5c3RlbShjb21tYW5kKTsKKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTQyODgsNyArNDEzMCw3IEBACiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MjkwZmM0MzdkZDRmMzNhMCBpbnB1dD04NmE1ODU1NGJhNjA5NGFmXSovCiB7CiAgICAgbG9uZyByZXN1bHQ7Ci0gICAgY2hhciAqYnl0ZXMgPSBQeUJ5dGVzX0FzU3RyaW5nKGNvbW1hbmQpOworICAgIGNvbnN0IGNoYXIgKmJ5dGVzID0gUHlCeXRlc19Bc1N0cmluZyhjb21tYW5kKTsKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgcmVzdWx0ID0gc3lzdGVtKGJ5dGVzKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwpAQCAtNDM4MiwxMSArNDIyNCw4IEBACiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgaWYgKHBhdGgtPndpZGUpCi0gICAgICAgIHJlc3VsdCA9IFB5X0RlbGV0ZUZpbGVXKHBhdGgtPndpZGUpOwotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gRGVsZXRlRmlsZUEocGF0aC0+bmFycm93KTsKLSAgICByZXN1bHQgPSAhcmVzdWx0OyAvKiBXaW5kb3dzLCBzdWNjZXNzPTEsIFVOSVgsIHN1Y2Nlc3M9MCAqLworICAgIC8qIFdpbmRvd3MsIHN1Y2Nlc3M9MSwgVU5JWCwgc3VjY2Vzcz0wICovCisgICAgcmVzdWx0ID0gIVB5X0RlbGV0ZUZpbGVXKHBhdGgtPndpZGUpOwogI2Vsc2UKICNpZmRlZiBIQVZFX1VOTElOS0FUCiAgICAgaWYgKGRpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkKQEAgLTQ1NjgsNyArNDQwNyw3IEBACiAjaWYgZGVmaW5lZChIQVZFX0ZVVElNRVNBVCkgfHwgZGVmaW5lZChIQVZFX1VUSU1FTlNBVCkKIAogc3RhdGljIGludAotdXRpbWVfZGlyX2ZkKHV0aW1lX3QgKnV0LCBpbnQgZGlyX2ZkLCBjaGFyICpwYXRoLCBpbnQgZm9sbG93X3N5bWxpbmtzKQordXRpbWVfZGlyX2ZkKHV0aW1lX3QgKnV0LCBpbnQgZGlyX2ZkLCBjb25zdCBjaGFyICpwYXRoLCBpbnQgZm9sbG93X3N5bWxpbmtzKQogewogI2lmZGVmIEhBVkVfVVRJTUVOU0FUCiAgICAgaW50IGZsYWdzID0gZm9sbG93X3N5bWxpbmtzID8gMCA6IEFUX1NZTUxJTktfTk9GT0xMT1c7CkBAIC00NjEwLDE0ICs0NDQ5LDE0IEBACiAgICAgI2RlZmluZSBQQVRIX1VUSU1FX0hBVkVfRkQgMAogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKEhBVkVfVVRJTUVOU0FUKSB8fCBkZWZpbmVkKEhBVkVfTFVUSU1FUykKKyMgIGRlZmluZSBVVElNRV9IQVZFX05PRk9MTE9XX1NZTUxJTktTCisjZW5kaWYKIAotI2RlZmluZSBVVElNRV9IQVZFX05PRk9MTE9XX1NZTUxJTktTIFwKLSAgICAgICAgKGRlZmluZWQoSEFWRV9VVElNRU5TQVQpIHx8IGRlZmluZWQoSEFWRV9MVVRJTUVTKSkKLQotI2lmIFVUSU1FX0hBVkVfTk9GT0xMT1dfU1lNTElOS1MKKyNpZmRlZiBVVElNRV9IQVZFX05PRk9MTE9XX1NZTUxJTktTCiAKIHN0YXRpYyBpbnQKLXV0aW1lX25vZm9sbG93X3N5bWxpbmtzKHV0aW1lX3QgKnV0LCBjaGFyICpwYXRoKQordXRpbWVfbm9mb2xsb3dfc3ltbGlua3ModXRpbWVfdCAqdXQsIGNvbnN0IGNoYXIgKnBhdGgpCiB7CiAjaWZkZWYgSEFWRV9VVElNRU5TQVQKICAgICBVVElNRV9UT19USU1FU1BFQzsKQEAgLTQ2MzMsNyArNDQ3Miw3IEBACiAjaWZuZGVmIE1TX1dJTkRPV1MKIAogc3RhdGljIGludAotdXRpbWVfZGVmYXVsdCh1dGltZV90ICp1dCwgY2hhciAqcGF0aCkKK3V0aW1lX2RlZmF1bHQodXRpbWVfdCAqdXQsIGNvbnN0IGNoYXIgKnBhdGgpCiB7CiAjaWZkZWYgSEFWRV9VVElNRU5TQVQKICAgICBVVElNRV9UT19USU1FU1BFQzsKQEAgLTQ3NzYsNyArNDYxNSw3IEBACiAgICAgICAgIHV0aW1lLm5vdyA9IDE7CiAgICAgfQogCi0jaWYgIVVUSU1FX0hBVkVfTk9GT0xMT1dfU1lNTElOS1MKKyNpZiAhZGVmaW5lZChVVElNRV9IQVZFX05PRk9MTE9XX1NZTUxJTktTKQogICAgIGlmIChmb2xsb3dfc3ltbGlua3Nfc3BlY2lmaWVkKCJ1dGltZSIsIGZvbGxvd19zeW1saW5rcykpCiAgICAgICAgIGdvdG8gZXhpdDsKICNlbmRpZgpAQCAtNDc5NywxNCArNDYzNiw5IEBACiAKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIGlmIChwYXRoLT53aWRlKQotICAgICAgICBoRmlsZSA9IENyZWF0ZUZpbGVXKHBhdGgtPndpZGUsIEZJTEVfV1JJVEVfQVRUUklCVVRFUywgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBPUEVOX0VYSVNUSU5HLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEVfRkxBR19CQUNLVVBfU0VNQU5USUNTLCBOVUxMKTsKLSAgICBlbHNlCi0gICAgICAgIGhGaWxlID0gQ3JlYXRlRmlsZUEocGF0aC0+bmFycm93LCBGSUxFX1dSSVRFX0FUVFJJQlVURVMsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgT1BFTl9FWElTVElORywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFX0ZMQUdfQkFDS1VQX1NFTUFOVElDUywgTlVMTCk7CisgICAgaEZpbGUgPSBDcmVhdGVGaWxlVyhwYXRoLT53aWRlLCBGSUxFX1dSSVRFX0FUVFJJQlVURVMsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBPUEVOX0VYSVNUSU5HLAorICAgICAgICAgICAgICAgICAgICAgICAgRklMRV9GTEFHX0JBQ0tVUF9TRU1BTlRJQ1MsIE5VTEwpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKGhGaWxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7CiAgICAgICAgIHBhdGhfZXJyb3IocGF0aCk7CkBAIC00ODMwLDcgKzQ2NjQsNyBAQAogI2Vsc2UgLyogTVNfV0lORE9XUyAqLwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKIAotI2lmIFVUSU1FX0hBVkVfTk9GT0xMT1dfU1lNTElOS1MKKyNpZmRlZiBVVElNRV9IQVZFX05PRk9MTE9XX1NZTUxJTktTCiAgICAgaWYgKCghZm9sbG93X3N5bWxpbmtzKSAmJiAoZGlyX2ZkID09IERFRkFVTFRfRElSX0ZEKSkKICAgICAgICAgcmVzdWx0ID0gdXRpbWVfbm9mb2xsb3dfc3ltbGlua3MoJnV0aW1lLCBwYXRoLT5uYXJyb3cpOwogICAgIGVsc2UKQEAgLTQ4OTAsOSArNDcyNCwxNSBAQAogICAgIHJldHVybiBOVUxMOyAvKiBNYWtlIGdjYyAtV2FsbCBoYXBweSAqLwogfQogCisjaWYgZGVmaW5lZChIQVZFX1dFWEVDVikgfHwgZGVmaW5lZChIQVZFX1dTUEFXTlYpCisjZGVmaW5lIEVYRUNWX0NIQVIgd2NoYXJfdAorI2Vsc2UKKyNkZWZpbmUgRVhFQ1ZfQ0hBUiBjaGFyCisjZW5kaWYKKwogI2lmIGRlZmluZWQoSEFWRV9FWEVDVikgfHwgZGVmaW5lZChIQVZFX1NQQVdOVikKIHN0YXRpYyB2b2lkCi1mcmVlX3N0cmluZ19hcnJheShjaGFyICoqYXJyYXksIFB5X3NzaXplX3QgY291bnQpCitmcmVlX3N0cmluZ19hcnJheShFWEVDVl9DSEFSICoqYXJyYXksIFB5X3NzaXplX3QgY291bnQpCiB7CiAgICAgUHlfc3NpemVfdCBpOwogICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKQpAQCAtNDkwMCw0MCArNDc0MCw0NyBAQAogICAgIFB5TWVtX0RFTChhcnJheSk7CiB9CiAKLXN0YXRpYwotaW50IGZzY29udmVydF9zdHJkdXAoUHlPYmplY3QgKm8sIGNoYXIqKm91dCkKK3N0YXRpYyBpbnQKK2ZzY29udmVydF9zdHJkdXAoUHlPYmplY3QgKm8sIEVYRUNWX0NIQVIgKipvdXQpCiB7Ci0gICAgUHlPYmplY3QgKmJ5dGVzOwogICAgIFB5X3NzaXplX3Qgc2l6ZTsKLSAgICBpZiAoIVB5VW5pY29kZV9GU0NvbnZlcnRlcihvLCAmYnl0ZXMpKQorICAgIFB5T2JqZWN0ICp1YjsKKyAgICBpbnQgcmVzdWx0ID0gMDsKKyNpZiBkZWZpbmVkKEhBVkVfV0VYRUNWKSB8fCBkZWZpbmVkKEhBVkVfV1NQQVdOVikKKyAgICBpZiAoIVB5VW5pY29kZV9GU0RlY29kZXIobywgJnViKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUoYnl0ZXMpOwotICAgICpvdXQgPSBQeU1lbV9NYWxsb2Moc2l6ZSsxKTsKLSAgICBpZiAoISpvdXQpIHsKKyAgICAqb3V0ID0gUHlVbmljb2RlX0FzV2lkZUNoYXJTdHJpbmcodWIsICZzaXplKTsKKyAgICBpZiAoKm91dCkKKyAgICAgICAgcmVzdWx0ID0gMTsKKyNlbHNlCisgICAgaWYgKCFQeVVuaWNvZGVfRlNDb252ZXJ0ZXIobywgJnViKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUodWIpOworICAgICpvdXQgPSBQeU1lbV9NYWxsb2Moc2l6ZSArIDEpOworICAgIGlmICgqb3V0KSB7CisgICAgICAgIG1lbWNweSgqb3V0LCBQeUJ5dGVzX0FTX1NUUklORyh1YiksIHNpemUgKyAxKTsKKyAgICAgICAgcmVzdWx0ID0gMTsKKyAgICB9IGVsc2UKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIG1lbWNweSgqb3V0LCBQeUJ5dGVzX0FzU3RyaW5nKGJ5dGVzKSwgc2l6ZSsxKTsKLSAgICBQeV9ERUNSRUYoYnl0ZXMpOwotICAgIHJldHVybiAxOworI2VuZGlmCisgICAgUHlfREVDUkVGKHViKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogI2VuZGlmCiAKICNpZiBkZWZpbmVkKEhBVkVfRVhFQ1YpIHx8IGRlZmluZWQgKEhBVkVfRkVYRUNWRSkKLXN0YXRpYyBjaGFyKioKK3N0YXRpYyBFWEVDVl9DSEFSKioKIHBhcnNlX2Vudmxpc3QoUHlPYmplY3QqIGVudiwgUHlfc3NpemVfdCAqZW52Y19wdHIpCiB7Ci0gICAgY2hhciAqKmVudmxpc3Q7CiAgICAgUHlfc3NpemVfdCBpLCBwb3MsIGVudmM7CiAgICAgUHlPYmplY3QgKmtleXM9TlVMTCwgKnZhbHM9TlVMTDsKLSAgICBQeU9iamVjdCAqa2V5LCAqdmFsLCAqa2V5MiwgKnZhbDI7Ci0gICAgY2hhciAqcCwgKmssICp2OwotICAgIHNpemVfdCBsZW47CisgICAgUHlPYmplY3QgKmtleSwgKnZhbCwgKmtleTIsICp2YWwyLCAqa2V5dmFsOworICAgIEVYRUNWX0NIQVIgKiplbnZsaXN0OwogCiAgICAgaSA9IFB5TWFwcGluZ19TaXplKGVudik7CiAgICAgaWYgKGkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBlbnZsaXN0ID0gUHlNZW1fTkVXKGNoYXIgKiwgaSArIDEpOworICAgIGVudmxpc3QgPSBQeU1lbV9ORVcoRVhFQ1ZfQ0hBUiAqLCBpICsgMSk7CiAgICAgaWYgKGVudmxpc3QgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTQ5NTcsMjggKzQ4MDQsMzUgQEAKICAgICAgICAgaWYgKCFrZXkgfHwgIXZhbCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAKLSAgICAgICAgaWYgKFB5VW5pY29kZV9GU0NvbnZlcnRlcihrZXksICZrZXkyKSA9PSAwKQorI2lmIGRlZmluZWQoSEFWRV9XRVhFQ1YpIHx8IGRlZmluZWQoSEFWRV9XU1BBV05WKQorICAgICAgICBpZiAoIVB5VW5pY29kZV9GU0RlY29kZXIoa2V5LCAma2V5MikpCiAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICBpZiAoUHlVbmljb2RlX0ZTQ29udmVydGVyKHZhbCwgJnZhbDIpID09IDApIHsKKyAgICAgICAgaWYgKCFQeVVuaWNvZGVfRlNEZWNvZGVyKHZhbCwgJnZhbDIpKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoa2V5Mik7CiAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICB9Ci0KLSAgICAgICAgayA9IFB5Qnl0ZXNfQXNTdHJpbmcoa2V5Mik7Ci0gICAgICAgIHYgPSBQeUJ5dGVzX0FzU3RyaW5nKHZhbDIpOwotICAgICAgICBsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKGtleTIpICsgUHlCeXRlc19HRVRfU0laRSh2YWwyKSArIDI7Ci0KLSAgICAgICAgcCA9IFB5TWVtX05FVyhjaGFyLCBsZW4pOwotICAgICAgICBpZiAocCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBrZXl2YWwgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVU9JVUiLCBrZXkyLCB2YWwyKTsKKyNlbHNlCisgICAgICAgIGlmICghUHlVbmljb2RlX0ZTQ29udmVydGVyKGtleSwgJmtleTIpKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgaWYgKCFQeVVuaWNvZGVfRlNDb252ZXJ0ZXIodmFsLCAmdmFsMikpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkyKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih2YWwyKTsKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KLSAgICAgICAgUHlPU19zbnByaW50ZihwLCBsZW4sICIlcz0lcyIsIGssIHYpOwotICAgICAgICBlbnZsaXN0W2VudmMrK10gPSBwOworICAgICAgICBrZXl2YWwgPSBQeUJ5dGVzX0Zyb21Gb3JtYXQoIiVzPSVzIiwgUHlCeXRlc19BU19TVFJJTkcoa2V5MiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyh2YWwyKSk7CisjZW5kaWYKICAgICAgICAgUHlfREVDUkVGKGtleTIpOwogICAgICAgICBQeV9ERUNSRUYodmFsMik7CisgICAgICAgIGlmICgha2V5dmFsKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKworICAgICAgICBpZiAoIWZzY29udmVydF9zdHJkdXAoa2V5dmFsLCAmZW52bGlzdFtlbnZjKytdKSkgeworICAgICAgICAgICAgUHlfREVDUkVGKGtleXZhbCk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisKKyAgICAgICAgUHlfREVDUkVGKGtleXZhbCk7CiAgICAgfQogICAgIFB5X0RFQ1JFRih2YWxzKTsKICAgICBQeV9ERUNSRUYoa2V5cyk7CkBAIC00OTkwLDE3ICs0ODQ0LDE1IEBACiBlcnJvcjoKICAgICBQeV9YREVDUkVGKGtleXMpOwogICAgIFB5X1hERUNSRUYodmFscyk7Ci0gICAgd2hpbGUgKC0tZW52YyA+PSAwKQotICAgICAgICBQeU1lbV9ERUwoZW52bGlzdFtlbnZjXSk7Ci0gICAgUHlNZW1fREVMKGVudmxpc3QpOworICAgIGZyZWVfc3RyaW5nX2FycmF5KGVudmxpc3QsIGVudmMpOwogICAgIHJldHVybiBOVUxMOwogfQogCi1zdGF0aWMgY2hhcioqCitzdGF0aWMgRVhFQ1ZfQ0hBUioqCiBwYXJzZV9hcmdsaXN0KFB5T2JqZWN0KiBhcmd2LCBQeV9zc2l6ZV90ICphcmdjKQogewogICAgIGludCBpOwotICAgIGNoYXIgKiphcmd2bGlzdCA9IFB5TWVtX05FVyhjaGFyICosICphcmdjKzEpOworICAgIEVYRUNWX0NIQVIgKiphcmd2bGlzdCA9IFB5TWVtX05FVyhFWEVDVl9DSEFSICosICphcmdjKzEpOwogICAgIGlmIChhcmd2bGlzdCA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNTAyMiw2ICs0ODc0LDcgQEAKICAgICBmcmVlX3N0cmluZ19hcnJheShhcmd2bGlzdCwgKmFyZ2MpOwogICAgIHJldHVybiBOVUxMOwogfQorCiAjZW5kaWYKIAogCkBAIC01MDI5LDcgKzQ4ODIsNyBAQAogLypbY2xpbmljIGlucHV0XQogb3MuZXhlY3YKIAotICAgIHBhdGg6IEZTQ29udmVydGVyCisgICAgcGF0aDogcGF0aF90CiAgICAgICAgIFBhdGggb2YgZXhlY3V0YWJsZSBmaWxlLgogICAgIGFyZ3Y6IG9iamVjdAogICAgICAgICBUdXBsZSBvciBsaXN0IG9mIHN0cmluZ3MuCkBAIC01MDM5LDE3ICs0ODkyLDE1IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19leGVjdl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpwYXRoLCBQeU9iamVjdCAqYXJndikKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iMjFkYzM0ZGVlYjViMDA0IGlucHV0PTk2MDQxNTU5OTI1ZTUyMjldKi8KK29zX2V4ZWN2X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBQeU9iamVjdCAqYXJndikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zYjUyZmVjMzRjZDBkYWZkIGlucHV0PTliYWMzMWVmYWUwN2RhYzddKi8KIHsKLSAgICBjaGFyICpwYXRoX2NoYXI7Ci0gICAgY2hhciAqKmFyZ3ZsaXN0OworICAgIEVYRUNWX0NIQVIgKiphcmd2bGlzdDsKICAgICBQeV9zc2l6ZV90IGFyZ2M7CiAKICAgICAvKiBleGVjdiBoYXMgdHdvIGFyZ3VtZW50czogKHBhdGgsIGFyZ3YpLCB3aGVyZQogICAgICAgIGFyZ3YgaXMgYSBsaXN0IG9yIHR1cGxlIG9mIHN0cmluZ3MuICovCiAKLSAgICBwYXRoX2NoYXIgPSBQeUJ5dGVzX0FzU3RyaW5nKHBhdGgpOwogICAgIGlmICghUHlMaXN0X0NoZWNrKGFyZ3YpICYmICFQeVR1cGxlX0NoZWNrKGFyZ3YpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiZXhlY3YoKSBhcmcgMiBtdXN0IGJlIGEgdHVwbGUgb3IgbGlzdCIpOwpAQCAtNTA2NSw4ICs0OTE2LDIwIEBACiAgICAgaWYgKGFyZ3ZsaXN0ID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorICAgIGlmICghYXJndmxpc3RbMF1bMF0pIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAiZXhlY3YoKSBhcmcgMiBmaXJzdCBlbGVtZW50IGNhbm5vdCBiZSBlbXB0eSIpOworICAgICAgICBmcmVlX3N0cmluZ19hcnJheShhcmd2bGlzdCwgYXJnYyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAotICAgIGV4ZWN2KHBhdGhfY2hhciwgYXJndmxpc3QpOworICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyNpZmRlZiBIQVZFX1dFWEVDVgorICAgIF93ZXhlY3YocGF0aC0+d2lkZSwgYXJndmxpc3QpOworI2Vsc2UKKyAgICBleGVjdihwYXRoLT5uYXJyb3csIGFyZ3ZsaXN0KTsKKyNlbmRpZgorICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICiAKICAgICAvKiBJZiB3ZSBnZXQgaGVyZSBpdCdzIGRlZmluaXRlbHkgYW4gZXJyb3IgKi8KIApAQCAtNTA5Miw4ICs0OTU1LDggQEAKIG9zX2V4ZWN2ZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgUHlPYmplY3QgKmFyZ3YsIFB5T2JqZWN0ICplbnYpCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZmY5ZmE4ZTRkYThiZGU1OCBpbnB1dD02MjY4MDRmYTA5MjYwNmQ5XSovCiB7Ci0gICAgY2hhciAqKmFyZ3ZsaXN0ID0gTlVMTDsKLSAgICBjaGFyICoqZW52bGlzdDsKKyAgICBFWEVDVl9DSEFSICoqYXJndmxpc3QgPSBOVUxMOworICAgIEVYRUNWX0NIQVIgKiplbnZsaXN0OwogICAgIFB5X3NzaXplX3QgYXJnYywgZW52YzsKIAogICAgIC8qIGV4ZWN2ZSBoYXMgdGhyZWUgYXJndW1lbnRzOiAocGF0aCwgYXJndiwgZW52KSwgd2hlcmUKQEAgLTUxMDYsNiArNDk2OSwxMSBAQAogICAgICAgICBnb3RvIGZhaWw7CiAgICAgfQogICAgIGFyZ2MgPSBQeVNlcXVlbmNlX1NpemUoYXJndik7CisgICAgaWYgKGFyZ2MgPCAxKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiZXhlY3ZlOiBhcmd2IG11c3Qgbm90IGJlIGVtcHR5Iik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKwogICAgIGlmICghUHlNYXBwaW5nX0NoZWNrKGVudikpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJleGVjdmU6IGVudmlyb25tZW50IG11c3QgYmUgYSBtYXBwaW5nIG9iamVjdCIpOwpAQCAtNTExNiw0MCArNDk4NCw1MCBAQAogICAgIGlmIChhcmd2bGlzdCA9PSBOVUxMKSB7CiAgICAgICAgIGdvdG8gZmFpbDsKICAgICB9CisgICAgaWYgKCFhcmd2bGlzdFswXVswXSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJleGVjdmU6IGFyZ3YgZmlyc3QgZWxlbWVudCBjYW5ub3QgYmUgZW1wdHkiKTsKKyAgICAgICAgZ290byBmYWlsOworICAgIH0KIAogICAgIGVudmxpc3QgPSBwYXJzZV9lbnZsaXN0KGVudiwgJmVudmMpOwogICAgIGlmIChlbnZsaXN0ID09IE5VTEwpCiAgICAgICAgIGdvdG8gZmFpbDsKIAorICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICNpZmRlZiBIQVZFX0ZFWEVDVkUKICAgICBpZiAocGF0aC0+ZmQgPiAtMSkKICAgICAgICAgZmV4ZWN2ZShwYXRoLT5mZCwgYXJndmxpc3QsIGVudmxpc3QpOwogICAgIGVsc2UKICNlbmRpZgorI2lmZGVmIEhBVkVfV0VYRUNWCisgICAgICAgIF93ZXhlY3ZlKHBhdGgtPndpZGUsIGFyZ3ZsaXN0LCBlbnZsaXN0KTsKKyNlbHNlCiAgICAgICAgIGV4ZWN2ZShwYXRoLT5uYXJyb3csIGFyZ3ZsaXN0LCBlbnZsaXN0KTsKKyNlbmRpZgorICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICiAKICAgICAvKiBJZiB3ZSBnZXQgaGVyZSBpdCdzIGRlZmluaXRlbHkgYW4gZXJyb3IgKi8KIAogICAgIHBhdGhfZXJyb3IocGF0aCk7CiAKLSAgICB3aGlsZSAoLS1lbnZjID49IDApCi0gICAgICAgIFB5TWVtX0RFTChlbnZsaXN0W2VudmNdKTsKLSAgICBQeU1lbV9ERUwoZW52bGlzdCk7CisgICAgZnJlZV9zdHJpbmdfYXJyYXkoZW52bGlzdCwgZW52Yyk7CiAgIGZhaWw6CiAgICAgaWYgKGFyZ3ZsaXN0KQogICAgICAgICBmcmVlX3N0cmluZ19hcnJheShhcmd2bGlzdCwgYXJnYyk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CisKICNlbmRpZiAvKiBIQVZFX0VYRUNWICovCiAKIAotI2lmZGVmIEhBVkVfU1BBV05WCisjaWYgZGVmaW5lZChIQVZFX1NQQVdOVikgfHwgZGVmaW5lZChIQVZFX1dTUEFXTlYpCiAvKltjbGluaWMgaW5wdXRdCiBvcy5zcGF3bnYKIAogICAgIG1vZGU6IGludAogICAgICAgICBNb2RlIG9mIHByb2Nlc3MgY3JlYXRpb24uCi0gICAgcGF0aDogRlNDb252ZXJ0ZXIKKyAgICBwYXRoOiBwYXRoX3QKICAgICAgICAgUGF0aCBvZiBleGVjdXRhYmxlIGZpbGUuCiAgICAgYXJndjogb2JqZWN0CiAgICAgICAgIFR1cGxlIG9yIGxpc3Qgb2Ygc3RyaW5ncy4KQEAgLTUxNTksMjAgKzUwMzcsMTggQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3NwYXdudl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBtb2RlLCBQeU9iamVjdCAqcGF0aCwgUHlPYmplY3QgKmFyZ3YpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YzQyN2MwY2U0MGYxMDYzOCBpbnB1dD0wNDJjOTFkZmMxZTZkZWJjXSovCitvc19zcGF3bnZfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgbW9kZSwgcGF0aF90ICpwYXRoLCBQeU9iamVjdCAqYXJndikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03MWNkMDM3YTlkOTZiODE2IGlucHV0PTQzMjI0MjQyMzAzMjkxYmVdKi8KIHsKLSAgICBjaGFyICpwYXRoX2NoYXI7Ci0gICAgY2hhciAqKmFyZ3ZsaXN0OworICAgIEVYRUNWX0NIQVIgKiphcmd2bGlzdDsKICAgICBpbnQgaTsKICAgICBQeV9zc2l6ZV90IGFyZ2M7Ci0gICAgUHlfaW50cHRyX3Qgc3Bhd252YWw7CisgICAgaW50cHRyX3Qgc3Bhd252YWw7CiAgICAgUHlPYmplY3QgKigqZ2V0aXRlbSkoUHlPYmplY3QgKiwgUHlfc3NpemVfdCk7CiAKICAgICAvKiBzcGF3bnYgaGFzIHRocmVlIGFyZ3VtZW50czogKG1vZGUsIHBhdGgsIGFyZ3YpLCB3aGVyZQogICAgICAgIGFyZ3YgaXMgYSBsaXN0IG9yIHR1cGxlIG9mIHN0cmluZ3MuICovCiAKLSAgICBwYXRoX2NoYXIgPSBQeUJ5dGVzX0FzU3RyaW5nKHBhdGgpOwogICAgIGlmIChQeUxpc3RfQ2hlY2soYXJndikpIHsKICAgICAgICAgYXJnYyA9IFB5TGlzdF9TaXplKGFyZ3YpOwogICAgICAgICBnZXRpdGVtID0gUHlMaXN0X0dldEl0ZW07CkBAIC01MTg2LDE4ICs1MDYyLDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAic3Bhd252KCkgYXJnIDIgbXVzdCBiZSBhIHR1cGxlIG9yIGxpc3QiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICAvKiBBdm9pZCBjaGFuZ2luZyBiZWhhdmlvciBpbiBtYWludGVuYW5jZSByZWxlYXNlLCBidXQKLSAgICAgICB0aGUgcHJldmlvdXMgV2luZG93cyBiZWhhdmlvciB3YXMgdG8gY3Jhc2gsIHNvIHRoaXMKLSAgICAgICBpcyBhICJjb21wYXRpYmxlIiBpbXByb3ZlbWVudC4gKi8KICAgICBpZiAoYXJnYyA9PSAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInNwYXdudigpIGFyZyAyIGNhbm5vdCBiZSBlbXB0eSIpOworICAgICAgICAgICAgInNwYXdudigpIGFyZyAyIGNhbm5vdCBiZSBlbXB0eSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0jZW5kaWYKIAotICAgIGFyZ3ZsaXN0ID0gUHlNZW1fTkVXKGNoYXIgKiwgYXJnYysxKTsKKyAgICBhcmd2bGlzdCA9IFB5TWVtX05FVyhFWEVDVl9DSEFSICosIGFyZ2MrMSk7CiAgICAgaWYgKGFyZ3ZsaXN0ID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgfQpAQCAtNTIxMCw3ICs1MDgxLDYgQEAKICAgICAgICAgICAgICAgICAic3Bhd252KCkgYXJnIDIgbXVzdCBjb250YWluIG9ubHkgc3RyaW5ncyIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSNpZmRlZiBNU19XSU5ET1dTCiAgICAgICAgIGlmIChpID09IDAgJiYgIWFyZ3ZsaXN0WzBdWzBdKSB7CiAgICAgICAgICAgICBmcmVlX3N0cmluZ19hcnJheShhcmd2bGlzdCwgaSk7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoCkBAIC01MjE4LDcgKzUwODgsNiBAQAogICAgICAgICAgICAgICAgICJzcGF3bnYoKSBhcmcgMiBmaXJzdCBlbGVtZW50IGNhbm5vdCBiZSBlbXB0eSIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSNlbmRpZgogICAgIH0KICAgICBhcmd2bGlzdFthcmdjXSA9IE5VTEw7CiAKQEAgLTUyMjcsNyArNTA5NiwxMSBAQAogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKLSAgICBzcGF3bnZhbCA9IF9zcGF3bnYobW9kZSwgcGF0aF9jaGFyLCBhcmd2bGlzdCk7CisjaWZkZWYgSEFWRV9XU1BBV05WCisgICAgc3Bhd252YWwgPSBfd3NwYXdudihtb2RlLCBwYXRoLT53aWRlLCBhcmd2bGlzdCk7CisjZWxzZQorICAgIHNwYXdudmFsID0gX3NwYXdudihtb2RlLCBwYXRoLT5uYXJyb3csIGFyZ3ZsaXN0KTsKKyNlbmRpZgogICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIApAQCAtNTI0NSw3ICs1MTE4LDcgQEAKIAogICAgIG1vZGU6IGludAogICAgICAgICBNb2RlIG9mIHByb2Nlc3MgY3JlYXRpb24uCi0gICAgcGF0aDogRlNDb252ZXJ0ZXIKKyAgICBwYXRoOiBwYXRoX3QKICAgICAgICAgUGF0aCBvZiBleGVjdXRhYmxlIGZpbGUuCiAgICAgYXJndjogb2JqZWN0CiAgICAgICAgIFR1cGxlIG9yIGxpc3Qgb2Ygc3RyaW5ncy4KQEAgLTUyNTcsMTYgKzUxMzAsMTUgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3NwYXdudmVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgbW9kZSwgUHlPYmplY3QgKnBhdGgsIFB5T2JqZWN0ICphcmd2LAorb3Nfc3Bhd252ZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBtb2RlLCBwYXRoX3QgKnBhdGgsIFB5T2JqZWN0ICphcmd2LAogICAgICAgICAgICAgICAgIFB5T2JqZWN0ICplbnYpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZWJjZmE1ZjdiYTJmNDIxOSBpbnB1dD0wMjM2MmZkOTM3OTYzZjhmXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzBmZTg1YmU1NmZlMzdhZCBpbnB1dD0zZTQwODAzZWU3YzRjNTg2XSovCiB7Ci0gICAgY2hhciAqcGF0aF9jaGFyOwotICAgIGNoYXIgKiphcmd2bGlzdDsKLSAgICBjaGFyICoqZW52bGlzdDsKKyAgICBFWEVDVl9DSEFSICoqYXJndmxpc3Q7CisgICAgRVhFQ1ZfQ0hBUiAqKmVudmxpc3Q7CiAgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBhcmdjLCBpLCBlbnZjOwotICAgIFB5X2ludHB0cl90IHNwYXdudmFsOworICAgIGludHB0cl90IHNwYXdudmFsOwogICAgIFB5T2JqZWN0ICooKmdldGl0ZW0pKFB5T2JqZWN0ICosIFB5X3NzaXplX3QpOwogICAgIFB5X3NzaXplX3QgbGFzdGFyZyA9IDA7CiAKQEAgLTUyNzQsNyArNTE0Niw2IEBACiAgICAgICAgYXJndiBpcyBhIGxpc3Qgb3IgdHVwbGUgb2Ygc3RyaW5ncyBhbmQgZW52IGlzIGEgZGljdGlvbmFyeQogICAgICAgIGxpa2UgcG9zaXguZW52aXJvbi4gKi8KIAotICAgIHBhdGhfY2hhciA9IFB5Qnl0ZXNfQXNTdHJpbmcocGF0aCk7CiAgICAgaWYgKFB5TGlzdF9DaGVjayhhcmd2KSkgewogICAgICAgICBhcmdjID0gUHlMaXN0X1NpemUoYXJndik7CiAgICAgICAgIGdldGl0ZW0gPSBQeUxpc3RfR2V0SXRlbTsKQEAgLTUyODgsMTMgKzUxNTksMTggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJzcGF3bnZlKCkgYXJnIDIgbXVzdCBiZSBhIHR1cGxlIG9yIGxpc3QiKTsKICAgICAgICAgZ290byBmYWlsXzA7CiAgICAgfQorICAgIGlmIChhcmdjID09IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAic3Bhd252ZSgpIGFyZyAyIGNhbm5vdCBiZSBlbXB0eSIpOworICAgICAgICBnb3RvIGZhaWxfMDsKKyAgICB9CiAgICAgaWYgKCFQeU1hcHBpbmdfQ2hlY2soZW52KSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgInNwYXdudmUoKSBhcmcgMyBtdXN0IGJlIGEgbWFwcGluZyBvYmplY3QiKTsKICAgICAgICAgZ290byBmYWlsXzA7CiAgICAgfQogCi0gICAgYXJndmxpc3QgPSBQeU1lbV9ORVcoY2hhciAqLCBhcmdjKzEpOworICAgIGFyZ3ZsaXN0ID0gUHlNZW1fTkVXKEVYRUNWX0NIQVIgKiwgYXJnYysxKTsKICAgICBpZiAoYXJndmxpc3QgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICBnb3RvIGZhaWxfMDsKQEAgLTUzMDYsNiArNTE4MiwxMyBAQAogICAgICAgICAgICAgbGFzdGFyZyA9IGk7CiAgICAgICAgICAgICBnb3RvIGZhaWxfMTsKICAgICAgICAgfQorICAgICAgICBpZiAoaSA9PSAwICYmICFhcmd2bGlzdFswXVswXSkgeworICAgICAgICAgICAgbGFzdGFyZyA9IGk7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoCisgICAgICAgICAgICAgICAgUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAic3Bhd252KCkgYXJnIDIgZmlyc3QgZWxlbWVudCBjYW5ub3QgYmUgZW1wdHkiKTsKKyAgICAgICAgICAgIGdvdG8gZmFpbF8xOworICAgICAgICB9CiAgICAgfQogICAgIGxhc3RhcmcgPSBhcmdjOwogICAgIGFyZ3ZsaXN0W2FyZ2NdID0gTlVMTDsKQEAgLTUzMTksNyArNTIwMiwxMSBAQAogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKLSAgICBzcGF3bnZhbCA9IF9zcGF3bnZlKG1vZGUsIHBhdGhfY2hhciwgYXJndmxpc3QsIGVudmxpc3QpOworI2lmZGVmIEhBVkVfV1NQQVdOVgorICAgIHNwYXdudmFsID0gX3dzcGF3bnZlKG1vZGUsIHBhdGgtPndpZGUsIGFyZ3ZsaXN0LCBlbnZsaXN0KTsKKyNlbHNlCisgICAgc3Bhd252YWwgPSBfc3Bhd252ZShtb2RlLCBwYXRoLT5uYXJyb3csIGFyZ3ZsaXN0LCBlbnZsaXN0KTsKKyNlbmRpZgogICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIApAQCAtNTc4MywxNCArNTY3MCwxNCBAQAogICAgIHBpZDogcGlkX3QKICAgICAvCiAKLVJldHVybiB0aGUgYWZmaW5pdHkgb2YgdGhlIHByb2Nlc3MgaWRlbnRpZmllZCBieSBwaWQuCitSZXR1cm4gdGhlIGFmZmluaXR5IG9mIHRoZSBwcm9jZXNzIGlkZW50aWZpZWQgYnkgcGlkIChvciB0aGUgY3VycmVudCBwcm9jZXNzIGlmIHplcm8pLgogCiBUaGUgYWZmaW5pdHkgaXMgcmV0dXJuZWQgYXMgYSBzZXQgb2YgQ1BVIGlkZW50aWZpZXJzLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgogb3Nfc2NoZWRfZ2V0YWZmaW5pdHlfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwaWRfdCBwaWQpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjcyNmYyYzE5M2MxN2E0ZiBpbnB1dD1lYWYxNjE5MzY4NzRiOGExXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjcyNmYyYzE5M2MxN2E0ZiBpbnB1dD05ODNjZTdjYjRhNTY1OTgwXSovCiB7CiAgICAgaW50IGNwdSwgbmNwdXMsIGNvdW50OwogICAgIHNpemVfdCBzZXRzaXplOwpAQCAtNTk1MSw3ICs1ODM4LDcgQEAKICAgICBpZiAoX1B5X3NldF9pbmhlcml0YWJsZShtYXN0ZXJfZmQsIDAsIE5VTEwpIDwgMCkKICAgICAgICAgZ290byBwb3NpeF9lcnJvcjsKIAotI2lmICFkZWZpbmVkKF9fQ1lHV0lOX18pICYmICFkZWZpbmVkKEhBVkVfREVWX1BUQykKKyNpZiAhZGVmaW5lZChfX0NZR1dJTl9fKSAmJiAhZGVmaW5lZChfX0FORFJPSURfXykgJiYgIWRlZmluZWQoSEFWRV9ERVZfUFRDKQogICAgIGlvY3RsKHNsYXZlX2ZkLCBJX1BVU0gsICJwdGVtIik7IC8qIHB1c2ggcHRlbSAqLwogICAgIGlvY3RsKHNsYXZlX2ZkLCBJX1BVU0gsICJsZHRlcm0iKTsgLyogcHVzaCBsZHRlcm0gKi8KICNpZm5kZWYgX19ocHV4CkBAIC02MDYzLDYgKzU5NTAsNyBAQAogI2VuZGlmIC8qIEhBVkVfR0VUR0lEICovCiAKIAorI2lmZGVmIEhBVkVfR0VUUElECiAvKltjbGluaWMgaW5wdXRdCiBvcy5nZXRwaWQKIApAQCAtNjA3NSw2ICs1OTYzLDcgQEAKIHsKICAgICByZXR1cm4gUHlMb25nX0Zyb21QaWQoZ2V0cGlkKCkpOwogfQorI2VuZGlmIC8qIEhBVkVfR0VUUElEICovCiAKICNpZmRlZiBIQVZFX0dFVEdST1VQTElTVAogCkBAIC02Mjc2LDcgKzYxNjUsNyBAQAogcG9zaXhfaW5pdGdyb3VwcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlPYmplY3QgKm9uYW1lOwotICAgIGNoYXIgKnVzZXJuYW1lOworICAgIGNvbnN0IGNoYXIgKnVzZXJuYW1lOwogICAgIGludCByZXM7CiAjaWZkZWYgX19BUFBMRV9fCiAgICAgaW50IGdpZDsKQEAgLTcwMjMsNyArNjkxMiw3IEBACiAvKiBNUyBDIGhhcyBhIHZhcmlhbnQgb2Ygd2FpdHBpZCgpIHRoYXQncyB1c2FibGUgZm9yIG1vc3QgcHVycG9zZXMuICovCiAvKltjbGluaWMgaW5wdXRdCiBvcy53YWl0cGlkCi0gICAgcGlkOiBQeV9pbnRwdHJfdAorICAgIHBpZDogaW50cHRyX3QKICAgICBvcHRpb25zOiBpbnQKICAgICAvCiAKQEAgLTcwMzYsMTEgKzY5MjUsMTEgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3dhaXRwaWRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9pbnRwdHJfdCBwaWQsIGludCBvcHRpb25zKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE1ZjFjZTAwNWEzNDZiMDkgaW5wdXQ9NDQ0YzhmNTFjY2E1Yjg2Ml0qLworb3Nfd2FpdHBpZF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludHB0cl90IHBpZCwgaW50IG9wdGlvbnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmU4MzZiMjIxMjcxZDUzOCBpbnB1dD00MGYyNDQwYzUxNTQxMGY4XSovCiB7CiAgICAgaW50IHN0YXR1czsKLSAgICBQeV9pbnRwdHJfdCByZXM7CisgICAgaW50cHRyX3QgcmVzOwogICAgIGludCBhc3luY19lcnIgPSAwOwogCiAgICAgZG8gewpAQCAtNzE1MywxNiArNzA0MiwxNiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHdpbl9yZWFkbGluayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7Ci0gICAgd2NoYXJfdCAqcGF0aDsKKyAgICBjb25zdCB3Y2hhcl90ICpwYXRoOwogICAgIERXT1JEIG5fYnl0ZXNfcmV0dXJuZWQ7CiAgICAgRFdPUkQgaW9fcmVzdWx0OwogICAgIFB5T2JqZWN0ICpwbywgKnJlc3VsdDsKLSAgICAgICAgaW50IGRpcl9mZDsKKyAgICBpbnQgZGlyX2ZkOwogICAgIEhBTkRMRSByZXBhcnNlX3BvaW50X2hhbmRsZTsKIAotICAgIGNoYXIgdGFyZ2V0X2J1ZmZlcltNQVhJTVVNX1JFUEFSU0VfREFUQV9CVUZGRVJfU0laRV07Ci0gICAgUkVQQVJTRV9EQVRBX0JVRkZFUiAqcmRiID0gKFJFUEFSU0VfREFUQV9CVUZGRVIgKil0YXJnZXRfYnVmZmVyOwotICAgIHdjaGFyX3QgKnByaW50X25hbWU7CisgICAgY2hhciB0YXJnZXRfYnVmZmVyW19QeV9NQVhJTVVNX1JFUEFSU0VfREFUQV9CVUZGRVJfU0laRV07CisgICAgX1B5X1JFUEFSU0VfREFUQV9CVUZGRVIgKnJkYiA9IChfUHlfUkVQQVJTRV9EQVRBX0JVRkZFUiAqKXRhcmdldF9idWZmZXI7CisgICAgY29uc3Qgd2NoYXJfdCAqcHJpbnRfbmFtZTsKIAogICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgImRpcl9mZCIsIE5VTEx9OwogCkBAIC03MjMwLDIyICs3MTE5LDE5IEBACiAjaWYgZGVmaW5lZChNU19XSU5ET1dTKQogCiAvKiBHcmFiIENyZWF0ZVN5bWJvbGljTGlua1cgZHluYW1pY2FsbHkgZnJvbSBrZXJuZWwzMiAqLwotc3RhdGljIERXT1JEIChDQUxMQkFDSyAqUHlfQ3JlYXRlU3ltYm9saWNMaW5rVykoTFBXU1RSLCBMUFdTVFIsIERXT1JEKSA9IE5VTEw7Ci1zdGF0aWMgRFdPUkQgKENBTExCQUNLICpQeV9DcmVhdGVTeW1ib2xpY0xpbmtBKShMUFNUUiwgTFBTVFIsIERXT1JEKSA9IE5VTEw7CitzdGF0aWMgRFdPUkQgKENBTExCQUNLICpQeV9DcmVhdGVTeW1ib2xpY0xpbmtXKShMUENXU1RSLCBMUENXU1RSLCBEV09SRCkgPSBOVUxMOwogCiBzdGF0aWMgaW50CiBjaGVja19DcmVhdGVTeW1ib2xpY0xpbmsodm9pZCkKIHsKICAgICBISU5TVEFOQ0UgaEtlcm5lbDMyOwogICAgIC8qIG9ubHkgcmVjaGVjayAqLwotICAgIGlmIChQeV9DcmVhdGVTeW1ib2xpY0xpbmtXICYmIFB5X0NyZWF0ZVN5bWJvbGljTGlua0EpCisgICAgaWYgKFB5X0NyZWF0ZVN5bWJvbGljTGlua1cpCiAgICAgICAgIHJldHVybiAxOwogICAgIGhLZXJuZWwzMiA9IEdldE1vZHVsZUhhbmRsZVcoTCJLRVJORUwzMiIpOwogICAgICooRkFSUFJPQyopJlB5X0NyZWF0ZVN5bWJvbGljTGlua1cgPSBHZXRQcm9jQWRkcmVzcyhoS2VybmVsMzIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDcmVhdGVTeW1ib2xpY0xpbmtXIik7Ci0gICAgKihGQVJQUk9DKikmUHlfQ3JlYXRlU3ltYm9saWNMaW5rQSA9IEdldFByb2NBZGRyZXNzKGhLZXJuZWwzMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNyZWF0ZVN5bWJvbGljTGlua0EiKTsKLSAgICByZXR1cm4gKFB5X0NyZWF0ZVN5bWJvbGljTGlua1cgJiYgUHlfQ3JlYXRlU3ltYm9saWNMaW5rQSk7CisgICAgcmV0dXJuIFB5X0NyZWF0ZVN5bWJvbGljTGlua1cgIT0gTlVMTDsKIH0KIAogLyogUmVtb3ZlIHRoZSBsYXN0IHBvcnRpb24gb2YgdGhlIHBhdGggKi8KQEAgLTcyNjIsMjAgKzcxNDgsNiBAQAogICAgICpwdHIgPSAwOwogfQogCi0vKiBSZW1vdmUgdGhlIGxhc3QgcG9ydGlvbiBvZiB0aGUgcGF0aCAqLwotc3RhdGljIHZvaWQKLV9kaXJuYW1lQShjaGFyICpwYXRoKQotewotICAgIGNoYXIgKnB0cjsKLQotICAgIC8qIHdhbGsgdGhlIHBhdGggZnJvbSB0aGUgZW5kIHVudGlsIGEgYmFja3NsYXNoIGlzIGVuY291bnRlcmVkICovCi0gICAgZm9yKHB0ciA9IHBhdGggKyBzdHJsZW4ocGF0aCk7IHB0ciAhPSBwYXRoOyBwdHItLSkgewotICAgICAgICBpZiAoKnB0ciA9PSAnXFwnIHx8ICpwdHIgPT0gJy8nKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgICpwdHIgPSAwOwotfQotCiAvKiBJcyB0aGlzIHBhdGggYWJzb2x1dGU/ICovCiBzdGF0aWMgaW50CiBfaXNfYWJzVyhjb25zdCBXQ0hBUiAqcGF0aCkKQEAgLTcyODQsMTQgKzcxNTYsNiBAQAogCiB9CiAKLS8qIElzIHRoaXMgcGF0aCBhYnNvbHV0ZT8gKi8KLXN0YXRpYyBpbnQKLV9pc19hYnNBKGNvbnN0IGNoYXIgKnBhdGgpCi17Ci0gICAgcmV0dXJuIHBhdGhbMF0gPT0gJ1xcJyB8fCBwYXRoWzBdID09ICcvJyB8fCBwYXRoWzFdID09ICc6JzsKLQotfQotCiAvKiBqb2luIHJvb3QgYW5kIHJlc3Qgd2l0aCBhIGJhY2tzbGFzaCAqLwogc3RhdGljIHZvaWQKIF9qb2luVyhXQ0hBUiAqZGVzdF9wYXRoLCBjb25zdCBXQ0hBUiAqcm9vdCwgY29uc3QgV0NIQVIgKnJlc3QpCkBAIC03MzEzLDMwICs3MTc3LDkgQEAKICAgICB3Y3NjcHkoZGVzdF9wYXRoK3Jvb3RfbGVuLCByZXN0KTsKIH0KIAotLyogam9pbiByb290IGFuZCByZXN0IHdpdGggYSBiYWNrc2xhc2ggKi8KLXN0YXRpYyB2b2lkCi1fam9pbkEoY2hhciAqZGVzdF9wYXRoLCBjb25zdCBjaGFyICpyb290LCBjb25zdCBjaGFyICpyZXN0KQotewotICAgIHNpemVfdCByb290X2xlbjsKLQotICAgIGlmIChfaXNfYWJzQShyZXN0KSkgewotICAgICAgICBzdHJjcHkoZGVzdF9wYXRoLCByZXN0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHJvb3RfbGVuID0gc3RybGVuKHJvb3QpOwotCi0gICAgc3RyY3B5KGRlc3RfcGF0aCwgcm9vdCk7Ci0gICAgaWYocm9vdF9sZW4pIHsKLSAgICAgICAgZGVzdF9wYXRoW3Jvb3RfbGVuXSA9ICdcXCc7Ci0gICAgICAgIHJvb3RfbGVuKys7Ci0gICAgfQotICAgIHN0cmNweShkZXN0X3BhdGgrcm9vdF9sZW4sIHJlc3QpOwotfQotCiAvKiBSZXR1cm4gVHJ1ZSBpZiB0aGUgcGF0aCBhdCBzcmMgcmVsYXRpdmUgdG8gZGVzdCBpcyBhIGRpcmVjdG9yeSAqLwogc3RhdGljIGludAotX2NoZWNrX2RpclcoV0NIQVIgKnNyYywgV0NIQVIgKmRlc3QpCitfY2hlY2tfZGlyVyhMUENXU1RSIHNyYywgTFBDV1NUUiBkZXN0KQogewogICAgIFdJTjMyX0ZJTEVfQVRUUklCVVRFX0RBVEEgc3JjX2luZm87CiAgICAgV0NIQVIgZGVzdF9wYXJlbnRbTUFYX1BBVEhdOwpAQCAtNzM1MiwyNSArNzE5NSw2IEBACiAgICAgICAgICYmIHNyY19pbmZvLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkKICAgICApOwogfQotCi0vKiBSZXR1cm4gVHJ1ZSBpZiB0aGUgcGF0aCBhdCBzcmMgcmVsYXRpdmUgdG8gZGVzdCBpcyBhIGRpcmVjdG9yeSAqLwotc3RhdGljIGludAotX2NoZWNrX2RpckEoY2hhciAqc3JjLCBjaGFyICpkZXN0KQotewotICAgIFdJTjMyX0ZJTEVfQVRUUklCVVRFX0RBVEEgc3JjX2luZm87Ci0gICAgY2hhciBkZXN0X3BhcmVudFtNQVhfUEFUSF07Ci0gICAgY2hhciBzcmNfcmVzb2x2ZWRbTUFYX1BBVEhdID0gIiI7Ci0KLSAgICAvKiBkZXN0X3BhcmVudCA9IG9zLnBhdGguZGlybmFtZShkZXN0KSAqLwotICAgIHN0cmNweShkZXN0X3BhcmVudCwgZGVzdCk7Ci0gICAgX2Rpcm5hbWVBKGRlc3RfcGFyZW50KTsKLSAgICAvKiBzcmNfcmVzb2x2ZWQgPSBvcy5wYXRoLmpvaW4oZGVzdF9wYXJlbnQsIHNyYykgKi8KLSAgICBfam9pbkEoc3JjX3Jlc29sdmVkLCBkZXN0X3BhcmVudCwgc3JjKTsKLSAgICByZXR1cm4gKAotICAgICAgICBHZXRGaWxlQXR0cmlidXRlc0V4QShzcmNfcmVzb2x2ZWQsIEdldEZpbGVFeEluZm9TdGFuZGFyZCwgJnNyY19pbmZvKQotICAgICAgICAmJiBzcmNfaW5mby5kd0ZpbGVBdHRyaWJ1dGVzICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZCi0gICAgKTsKLX0KICNlbmRpZgogCiAKQEAgLTc0MzAsMTggKzcyNTQsMTAgQEAKICNpZmRlZiBNU19XSU5ET1dTCiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgaWYgKGRzdC0+d2lkZSkgewotICAgICAgICAvKiBpZiBzcmMgaXMgYSBkaXJlY3RvcnksIGVuc3VyZSB0YXJnZXRfaXNfZGlyZWN0b3J5PT0xICovCi0gICAgICAgIHRhcmdldF9pc19kaXJlY3RvcnkgfD0gX2NoZWNrX2Rpclcoc3JjLT53aWRlLCBkc3QtPndpZGUpOwotICAgICAgICByZXN1bHQgPSBQeV9DcmVhdGVTeW1ib2xpY0xpbmtXKGRzdC0+d2lkZSwgc3JjLT53aWRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF9pc19kaXJlY3RvcnkpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgLyogaWYgc3JjIGlzIGEgZGlyZWN0b3J5LCBlbnN1cmUgdGFyZ2V0X2lzX2RpcmVjdG9yeT09MSAqLwotICAgICAgICB0YXJnZXRfaXNfZGlyZWN0b3J5IHw9IF9jaGVja19kaXJBKHNyYy0+bmFycm93LCBkc3QtPm5hcnJvdyk7Ci0gICAgICAgIHJlc3VsdCA9IFB5X0NyZWF0ZVN5bWJvbGljTGlua0EoZHN0LT5uYXJyb3csIHNyYy0+bmFycm93LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF9pc19kaXJlY3RvcnkpOwotICAgIH0KKyAgICAvKiBpZiBzcmMgaXMgYSBkaXJlY3RvcnksIGVuc3VyZSB0YXJnZXRfaXNfZGlyZWN0b3J5PT0xICovCisgICAgdGFyZ2V0X2lzX2RpcmVjdG9yeSB8PSBfY2hlY2tfZGlyVyhzcmMtPndpZGUsIGRzdC0+d2lkZSk7CisgICAgcmVzdWx0ID0gUHlfQ3JlYXRlU3ltYm9saWNMaW5rVyhkc3QtPndpZGUsIHNyYy0+d2lkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF9pc19kaXJlY3RvcnkpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBpZiAoIXJlc3VsdCkKQEAgLTc3NDYsMTYgKzc1NjIsMTUgQEAKICAgICBkbyB7CiAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgICAgIGlmIChwYXRoLT53aWRlKQotICAgICAgICAgICAgZmQgPSBfd29wZW4ocGF0aC0+d2lkZSwgZmxhZ3MsIG1vZGUpOwotICAgICAgICBlbHNlCi0jZW5kaWYKKyAgICAgICAgZmQgPSBfd29wZW4ocGF0aC0+d2lkZSwgZmxhZ3MsIG1vZGUpOworI2Vsc2UKICNpZmRlZiBIQVZFX09QRU5BVAogICAgICAgICBpZiAoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKQogICAgICAgICAgICAgZmQgPSBvcGVuYXQoZGlyX2ZkLCBwYXRoLT5uYXJyb3csIGZsYWdzLCBtb2RlKTsKICAgICAgICAgZWxzZQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9PUEVOQVQgKi8KICAgICAgICAgICAgIGZkID0gb3BlbihwYXRoLT5uYXJyb3csIGZsYWdzLCBtb2RlKTsKKyNlbmRpZiAvKiAhTVNfV0lORE9XUyAqLwogICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIH0gd2hpbGUgKGZkIDwgMCAmJiBlcnJubyA9PSBFSU5UUiAmJiAhKGFzeW5jX2VyciA9IFB5RXJyX0NoZWNrU2lnbmFscygpKSk7CiAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKQEAgLTc3OTAsOCArNzYwNSw2IEBACiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MmZlNGU5MzYwMjgyMmMxNCBpbnB1dD0yYmM0MjQ1MWNhNWMzMjIzXSovCiB7CiAgICAgaW50IHJlczsKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwogICAgIC8qIFdlIGRvIG5vdCB3YW50IHRvIHJldHJ5IHVwb24gRUlOVFI6IHNlZSBodHRwOi8vbHduLm5ldC9BcnRpY2xlcy81NzY0NzgvCiAgICAgICogYW5kIGh0dHA6Ly9saW51eC5kZXJrZWlsZXIuY29tL01haWxpbmctTGlzdHMvS2VybmVsLzIwMDUtMDkvMzAwMC5odG1sCiAgICAgICogZm9yIG1vcmUgZGV0YWlscy4KQEAgLTc4MjQsOSArNzYzNyw4IEBACiAgICAgaW50IGk7CiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKLSAgICBmb3IgKGkgPSBmZF9sb3c7IGkgPCBmZF9oaWdoOyBpKyspCi0gICAgICAgIGlmIChfUHlWZXJpZnlfZmQoaSkpCi0gICAgICAgICAgICBjbG9zZShpKTsKKyAgICBmb3IgKGkgPSBQeV9NQVgoZmRfbG93LCAwKTsgaSA8IGZkX2hpZ2g7IGkrKykKKyAgICAgICAgY2xvc2UoaSk7CiAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIFB5X1JFVFVSTl9OT05FOwpAQCAtNzg3MCw3ICs3NjgyLDcgQEAKICAgICBpbnQgZHVwM193b3JrcyA9IC0xOwogI2VuZGlmCiAKLSAgICBpZiAoIV9QeVZlcmlmeV9mZF9kdXAyKGZkLCBmZDIpKQorICAgIGlmIChmZCA8IDAgfHwgZmQyIDwgMCkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiAKICAgICAvKiBkdXAyKCkgY2FuIGZhaWwgd2l0aCBFSU5UUiBpZiB0aGUgdGFyZ2V0IEZEIGlzIGFscmVhZHkgb3BlbiwgYmVjYXVzZSBpdApAQCAtNzk5NCwxMCArNzgwNiw2IEBACiB7CiAgICAgUHlfb2ZmX3QgcmVzdWx0OwogCi0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKSB7Ci0gICAgICAgIHBvc2l4X2Vycm9yKCk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9CiAjaWZkZWYgU0VFS19TRVQKICAgICAvKiBUdXJuIDAsIDEsIDIgaW50byBTRUVLX3tTRVQsQ1VSLEVORH0gKi8KICAgICBzd2l0Y2ggKGhvdykgewpAQCAtODAxMCwxMCArNzgxOCw2IEBACiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiAtMTsKIAotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkgewotICAgICAgICBwb3NpeF9lcnJvcigpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICiAjaWZkZWYgTVNfV0lORE9XUwpAQCAtODIyMSwxMCArODAyNSw2IEBACiAgICAgYnVmZmVyID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY2hhciAqKU5VTEwsIGxlbmd0aCk7CiAgICAgaWYgKGJ1ZmZlciA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKLSAgICAgICAgUHlfREVDUkVGKGJ1ZmZlcik7Ci0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgIH0KIAogICAgIGRvIHsKICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwpAQCAtODM4Nyw3ICs4MTg3LDcgQEAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RpY3QsICJpaU9uOnNlbmRmaWxlIiwKICAgICAgICAgICAgIGtleXdvcmRzLCAmb3V0LCAmaW4sICZvZmZvYmosICZjb3VudCkpCiAgICAgICAgIHJldHVybiBOVUxMOwotI2lmZGVmIGxpbnV4CisjaWZkZWYgX19saW51eF9fCiAgICAgaWYgKG9mZm9iaiA9PSBQeV9Ob25lKSB7CiAgICAgICAgIGRvIHsKICAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKQEAgLTg0NjcsOCArODI2Nyw2IEBACiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NmE0OGM4YjRlNjQ0Y2EwMCBpbnB1dD0wOGNlOTRhYTFlYWY3YjVlXSovCiB7CiAgICAgaW50IHJldHVybl92YWx1ZTsKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpCi0gICAgICAgIHJldHVybiAwOwogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICAgICByZXR1cm5fdmFsdWUgPSBpc2F0dHkoZmQpOwogICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICkBAIC04NTA1LDE2ICs4MzAzLDE4IEBACiAgICAgYXR0ci5iSW5oZXJpdEhhbmRsZSA9IEZBTFNFOwogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICAgICBvayA9IENyZWF0ZVBpcGUoJnJlYWQsICZ3cml0ZSwgJmF0dHIsIDApOwogICAgIGlmIChvaykgewotICAgICAgICBmZHNbMF0gPSBfb3Blbl9vc2ZoYW5kbGUoKFB5X2ludHB0cl90KXJlYWQsIF9PX1JET05MWSk7Ci0gICAgICAgIGZkc1sxXSA9IF9vcGVuX29zZmhhbmRsZSgoUHlfaW50cHRyX3Qpd3JpdGUsIF9PX1dST05MWSk7CisgICAgICAgIGZkc1swXSA9IF9vcGVuX29zZmhhbmRsZSgoaW50cHRyX3QpcmVhZCwgX09fUkRPTkxZKTsKKyAgICAgICAgZmRzWzFdID0gX29wZW5fb3NmaGFuZGxlKChpbnRwdHJfdCl3cml0ZSwgX09fV1JPTkxZKTsKICAgICAgICAgaWYgKGZkc1swXSA9PSAtMSB8fCBmZHNbMV0gPT0gLTEpIHsKICAgICAgICAgICAgIENsb3NlSGFuZGxlKHJlYWQpOwogICAgICAgICAgICAgQ2xvc2VIYW5kbGUod3JpdGUpOwogICAgICAgICAgICAgb2sgPSAwOwogICAgICAgICB9CiAgICAgfQorICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAogICAgIGlmICghb2spCkBAIC04NjYwLDExICs4NDYwLDYgQEAKICAgICBQeV9zc2l6ZV90IHNpemU7CiAgICAgaW50IGFzeW5jX2VyciA9IDA7CiAKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKLSAgICAgICAgcG9zaXhfZXJyb3IoKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQogICAgIGRvIHsKICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICkBAIC04ODQ3LDkgKzg2NDIsNiBAQAogICAgIGludCByZXN1bHQ7CiAgICAgaW50IGFzeW5jX2VyciA9IDA7CiAKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotCiAgICAgZG8gewogICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKQEAgLTg4OTYsMTAgKzg2ODgsNyBAQAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICiAjaWZkZWYgTVNfV0lORE9XUwotICAgIGlmIChwYXRoLT53aWRlKQotICAgICAgICBmZCA9IF93b3BlbihwYXRoLT53aWRlLCBfT19XUk9OTFkgfCBfT19CSU5BUlkgfCBfT19OT0lOSEVSSVQpOwotICAgIGVsc2UKLSAgICAgICAgZmQgPSBfb3BlbihwYXRoLT5uYXJyb3csIF9PX1dST05MWSB8IF9PX0JJTkFSWSB8IF9PX05PSU5IRVJJVCk7CisgICAgZmQgPSBfd29wZW4ocGF0aC0+d2lkZSwgX09fV1JPTkxZIHwgX09fQklOQVJZIHwgX09fTk9JTkhFUklUKTsKICAgICBpZiAoZmQgPCAwKQogICAgICAgICByZXN1bHQgPSAtMTsKICAgICBlbHNlIHsKQEAgLTkwNDMsNyArODgzMiw3IEBACiBvc19wdXRlbnZfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnZhbHVlKQogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQyOWE1NjdkNmIyMzI3ZDIgaW5wdXQ9YmE1ODY1ODFjMmU2MTA1Zl0qLwogewotICAgIHdjaGFyX3QgKmVudjsKKyAgICBjb25zdCB3Y2hhcl90ICplbnY7CiAKICAgICBQeU9iamVjdCAqdW5pY29kZSA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlVT0lVSIsIG5hbWUsIHZhbHVlKTsKICAgICBpZiAodW5pY29kZSA9PSBOVUxMKSB7CkBAIC05MDg5LDggKzg4NzgsOCBAQAogewogICAgIFB5T2JqZWN0ICpieXRlcyA9IE5VTEw7CiAgICAgY2hhciAqZW52OwotICAgIGNoYXIgKm5hbWVfc3RyaW5nID0gUHlCeXRlc19Bc1N0cmluZyhuYW1lKTsKLSAgICBjaGFyICp2YWx1ZV9zdHJpbmcgPSBQeUJ5dGVzX0FzU3RyaW5nKHZhbHVlKTsKKyAgICBjb25zdCBjaGFyICpuYW1lX3N0cmluZyA9IFB5Qnl0ZXNfQXNTdHJpbmcobmFtZSk7CisgICAgY29uc3QgY2hhciAqdmFsdWVfc3RyaW5nID0gUHlCeXRlc19Bc1N0cmluZyh2YWx1ZSk7CiAKICAgICBieXRlcyA9IFB5Qnl0ZXNfRnJvbUZvcm1hdCgiJXM9JXMiLCBuYW1lX3N0cmluZywgdmFsdWVfc3RyaW5nKTsKICAgICBpZiAoYnl0ZXMgPT0gTlVMTCkgewpAQCAtOTM2OCwxNyArOTE1NywxNyBAQAogICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgMCwgUHlMb25nX0Zyb21Mb25nKChsb25nKSBzdC5mX2JzaXplKSk7CiAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCAxLCBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpIHN0LmZfZnJzaXplKSk7CiAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCAyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nTG9uZygoUFlfTE9OR19MT05HKSBzdC5mX2Jsb2NrcykpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nTG9uZygobG9uZyBsb25nKSBzdC5mX2Jsb2NrcykpOwogICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgMywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKFBZX0xPTkdfTE9ORykgc3QuZl9iZnJlZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nTG9uZygobG9uZyBsb25nKSBzdC5mX2JmcmVlKSk7CiAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCA0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nTG9uZygoUFlfTE9OR19MT05HKSBzdC5mX2JhdmFpbCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nTG9uZygobG9uZyBsb25nKSBzdC5mX2JhdmFpbCkpOwogICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgNSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKFBZX0xPTkdfTE9ORykgc3QuZl9maWxlcykpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nTG9uZygobG9uZyBsb25nKSBzdC5mX2ZpbGVzKSk7CiAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCA2LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nTG9uZygoUFlfTE9OR19MT05HKSBzdC5mX2ZmcmVlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxvbmdfRnJvbUxvbmdMb25nKChsb25nIGxvbmcpIHN0LmZfZmZyZWUpKTsKICAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHYsIDcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxvbmdfRnJvbUxvbmdMb25nKChQWV9MT05HX0xPTkcpIHN0LmZfZmF2YWlsKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxvbmdfRnJvbUxvbmdMb25nKChsb25nIGxvbmcpIHN0LmZfZmF2YWlsKSk7CiAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCA4LCBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpIHN0LmZfZmxhZykpOwogICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgOSwgUHlMb25nX0Zyb21Mb25nKChsb25nKSBzdC5mX25hbWVtYXgpKTsKICNlbmRpZgpAQCAtOTUwOSw4ICs5Mjk4LDggQEAKICAqIHN1ZmZpY2llbnRseSBwZXJ2YXNpdmUgdGhhdCBpdCdzIG5vdCB3b3J0aCB0aGUgbG9zcyBvZiByZWFkYWJpbGl0eS4KICAqLwogc3RydWN0IGNvbnN0ZGVmIHsKLSAgICBjaGFyICpuYW1lOwotICAgIGxvbmcgdmFsdWU7CisgICAgY29uc3QgY2hhciAqbmFtZTsKKyAgICBpbnQgdmFsdWU7CiB9OwogCiBzdGF0aWMgaW50CkBAIC05NTE4LDcgKzkzMDcsMTAgQEAKICAgICAgICAgICAgICAgc2l6ZV90IHRhYmxlc2l6ZSkKIHsKICAgICBpZiAoUHlMb25nX0NoZWNrKGFyZykpIHsKLSAgICAgICAgKnZhbHVlcCA9IFB5TG9uZ19BU19MT05HKGFyZyk7CisgICAgICAgIGludCB2YWx1ZSA9IF9QeUxvbmdfQXNJbnQoYXJnKTsKKyAgICAgICAgaWYgKHZhbHVlID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgKnZhbHVlcCA9IHZhbHVlOwogICAgICAgICByZXR1cm4gMTsKICAgICB9CiAgICAgZWxzZSB7CkBAIC05NTMzLDcgKzkzMjUsNyBAQAogICAgICAgICAgICAgICAgICJjb25maWd1cmF0aW9uIG5hbWVzIG11c3QgYmUgc3RyaW5ncyBvciBpbnRlZ2VycyIpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KLSAgICAgICAgY29uZm5hbWUgPSBfUHlVbmljb2RlX0FzU3RyaW5nKGFyZyk7CisgICAgICAgIGNvbmZuYW1lID0gUHlVbmljb2RlX0FzVVRGOChhcmcpOwogICAgICAgICBpZiAoY29uZm5hbWUgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB3aGlsZSAobG8gPCBoaSkgewpAQCAtMTA0NzksNyArMTAyNzEsNyBAQAogCiBzdGF0aWMgaW50CiBzZXR1cF9jb25mbmFtZV90YWJsZShzdHJ1Y3QgY29uc3RkZWYgKnRhYmxlLCBzaXplX3QgdGFibGVzaXplLAotICAgICAgICAgICAgICAgICAgICAgY2hhciAqdGFibGVuYW1lLCBQeU9iamVjdCAqbW9kdWxlKQorICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdGFibGVuYW1lLCBQeU9iamVjdCAqbW9kdWxlKQogewogICAgIFB5T2JqZWN0ICpkID0gTlVMTDsKICAgICBzaXplX3QgaTsKQEAgLTEwNTUwLDMxICsxMDM0Miw4IEBACiB9CiAKICNpZmRlZiBNU19XSU5ET1dTCi0vKiBBQyAzLjU6IGNoYW5nZSB0byBwYXRoX3Q/IGJ1dCB0aGF0IG1pZ2h0IGNoYW5nZSBleGNlcHRpb25zICovCi1QeURvY19TVFJWQVIod2luMzJfc3RhcnRmaWxlX19kb2NfXywKLSJzdGFydGZpbGUoZmlsZXBhdGggWywgb3BlcmF0aW9uXSlcblwKLVxuXAotU3RhcnQgYSBmaWxlIHdpdGggaXRzIGFzc29jaWF0ZWQgYXBwbGljYXRpb24uXG5cCi1cblwKLVdoZW4gXCJvcGVyYXRpb25cIiBpcyBub3Qgc3BlY2lmaWVkIG9yIFwib3BlblwiLCB0aGlzIGFjdHMgbGlrZVxuXAotZG91YmxlLWNsaWNraW5nIHRoZSBmaWxlIGluIEV4cGxvcmVyLCBvciBnaXZpbmcgdGhlIGZpbGUgbmFtZSBhcyBhblxuXAotYXJndW1lbnQgdG8gdGhlIERPUyBcInN0YXJ0XCIgY29tbWFuZDogdGhlIGZpbGUgaXMgb3BlbmVkIHdpdGggd2hhdGV2ZXJcblwKLWFwcGxpY2F0aW9uIChpZiBhbnkpIGl0cyBleHRlbnNpb24gaXMgYXNzb2NpYXRlZC5cblwKLVdoZW4gYW5vdGhlciBcIm9wZXJhdGlvblwiIGlzIGdpdmVuLCBpdCBzcGVjaWZpZXMgd2hhdCBzaG91bGQgYmUgZG9uZSB3aXRoXG5cCi10aGUgZmlsZS4gIEEgdHlwaWNhbCBvcGVyYXRpb24gaXMgXCJwcmludFwiLlxuXAotXG5cCi1zdGFydGZpbGUgcmV0dXJucyBhcyBzb29uIGFzIHRoZSBhc3NvY2lhdGVkIGFwcGxpY2F0aW9uIGlzIGxhdW5jaGVkLlxuXAotVGhlcmUgaXMgbm8gb3B0aW9uIHRvIHdhaXQgZm9yIHRoZSBhcHBsaWNhdGlvbiB0byBjbG9zZSwgYW5kIG5vIHdheVxuXAotdG8gcmV0cmlldmUgdGhlIGFwcGxpY2F0aW9uJ3MgZXhpdCBzdGF0dXMuXG5cCi1cblwKLVRoZSBmaWxlcGF0aCBpcyByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBkaXJlY3RvcnkuICBJZiB5b3Ugd2FudCB0byB1c2VcblwKLWFuIGFic29sdXRlIHBhdGgsIG1ha2Ugc3VyZSB0aGUgZmlyc3QgY2hhcmFjdGVyIGlzIG5vdCBhIHNsYXNoIChcIi9cIik7XG5cCi10aGUgdW5kZXJseWluZyBXaW4zMiBTaGVsbEV4ZWN1dGUgZnVuY3Rpb24gZG9lc24ndCB3b3JrIGlmIGl0IGlzLiIpOwotCiAvKiBHcmFiIFNoZWxsRXhlY3V0ZSBkeW5hbWljYWxseSBmcm9tIHNoZWxsMzIgKi8KIHN0YXRpYyBpbnQgaGFzX1NoZWxsRXhlY3V0ZSA9IC0xOwotc3RhdGljIEhJTlNUQU5DRSAoQ0FMTEJBQ0sgKlB5X1NoZWxsRXhlY3V0ZUEpKEhXTkQsIExQQ1NUUiwgTFBDU1RSLCBMUENTVFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFBDU1RSLCBJTlQpOwogc3RhdGljIEhJTlNUQU5DRSAoQ0FMTEJBQ0sgKlB5X1NoZWxsRXhlY3V0ZVcpKEhXTkQsIExQQ1dTVFIsIExQQ1dTVFIsIExQQ1dTVFIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFBDV1NUUiwgSU5UKTsKIHN0YXRpYyBpbnQKQEAgLTEwNTg4LDEyICsxMDM1Nyw5IEBACiAgICAgICAgIGhTaGVsbDMyID0gTG9hZExpYnJhcnlXKEwiU0hFTEwzMiIpOwogICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgICAgICBpZiAoaFNoZWxsMzIpIHsKLSAgICAgICAgICAgICooRkFSUFJPQyopJlB5X1NoZWxsRXhlY3V0ZUEgPSBHZXRQcm9jQWRkcmVzcyhoU2hlbGwzMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNoZWxsRXhlY3V0ZUEiKTsKICAgICAgICAgICAgICooRkFSUFJPQyopJlB5X1NoZWxsRXhlY3V0ZVcgPSBHZXRQcm9jQWRkcmVzcyhoU2hlbGwzMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNoZWxsRXhlY3V0ZVciKTsKLSAgICAgICAgICAgIGhhc19TaGVsbEV4ZWN1dGUgPSBQeV9TaGVsbEV4ZWN1dGVBICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfU2hlbGxFeGVjdXRlVzsKKyAgICAgICAgICAgIGhhc19TaGVsbEV4ZWN1dGUgPSBQeV9TaGVsbEV4ZWN1dGVXICE9IE5VTEw7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBoYXNfU2hlbGxFeGVjdXRlID0gMDsKICAgICAgICAgfQpAQCAtMTA2MDIsMTYgKzEwMzY4LDM2IEBACiB9CiAKIAotc3RhdGljIFB5T2JqZWN0ICoKLXdpbjMyX3N0YXJ0ZmlsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKm9maWxlcGF0aDsKLSAgICBjaGFyICpmaWxlcGF0aDsKLSAgICBjaGFyICpvcGVyYXRpb24gPSBOVUxMOwotICAgIHdjaGFyX3QgKndwYXRoLCAqd29wZXJhdGlvbjsKLSAgICBISU5TVEFOQ0UgcmM7CisvKltjbGluaWMgaW5wdXRdCitvcy5zdGFydGZpbGUKKyAgICBmaWxlcGF0aDogcGF0aF90CisgICAgb3BlcmF0aW9uOiBQeV9VTklDT0RFID0gTlVMTAogCi0gICAgUHlPYmplY3QgKnVuaXBhdGgsICp1b3BlcmF0aW9uID0gTlVMTDsKK3N0YXJ0ZmlsZShmaWxlcGF0aCBbLCBvcGVyYXRpb25dKQorCitTdGFydCBhIGZpbGUgd2l0aCBpdHMgYXNzb2NpYXRlZCBhcHBsaWNhdGlvbi4KKworV2hlbiAib3BlcmF0aW9uIiBpcyBub3Qgc3BlY2lmaWVkIG9yICJvcGVuIiwgdGhpcyBhY3RzIGxpa2UKK2RvdWJsZS1jbGlja2luZyB0aGUgZmlsZSBpbiBFeHBsb3Jlciwgb3IgZ2l2aW5nIHRoZSBmaWxlIG5hbWUgYXMgYW4KK2FyZ3VtZW50IHRvIHRoZSBET1MgInN0YXJ0IiBjb21tYW5kOiB0aGUgZmlsZSBpcyBvcGVuZWQgd2l0aCB3aGF0ZXZlcgorYXBwbGljYXRpb24gKGlmIGFueSkgaXRzIGV4dGVuc2lvbiBpcyBhc3NvY2lhdGVkLgorV2hlbiBhbm90aGVyICJvcGVyYXRpb24iIGlzIGdpdmVuLCBpdCBzcGVjaWZpZXMgd2hhdCBzaG91bGQgYmUgZG9uZSB3aXRoCit0aGUgZmlsZS4gIEEgdHlwaWNhbCBvcGVyYXRpb24gaXMgInByaW50Ii4KKworc3RhcnRmaWxlIHJldHVybnMgYXMgc29vbiBhcyB0aGUgYXNzb2NpYXRlZCBhcHBsaWNhdGlvbiBpcyBsYXVuY2hlZC4KK1RoZXJlIGlzIG5vIG9wdGlvbiB0byB3YWl0IGZvciB0aGUgYXBwbGljYXRpb24gdG8gY2xvc2UsIGFuZCBubyB3YXkKK3RvIHJldHJpZXZlIHRoZSBhcHBsaWNhdGlvbidzIGV4aXQgc3RhdHVzLgorCitUaGUgZmlsZXBhdGggaXMgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LiAgSWYgeW91IHdhbnQgdG8gdXNlCithbiBhYnNvbHV0ZSBwYXRoLCBtYWtlIHN1cmUgdGhlIGZpcnN0IGNoYXJhY3RlciBpcyBub3QgYSBzbGFzaCAoIi8iKTsKK3RoZSB1bmRlcmx5aW5nIFdpbjMyIFNoZWxsRXhlY3V0ZSBmdW5jdGlvbiBkb2Vzbid0IHdvcmsgaWYgaXQgaXMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19zdGFydGZpbGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKmZpbGVwYXRoLCBQeV9VTklDT0RFICpvcGVyYXRpb24pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTEyY2ViYTc5YWNmYTFjOSBpbnB1dD02Mzk1MGJmMjk4NjM4MGQwXSovCit7CisgICAgSElOU1RBTkNFIHJjOwogCiAgICAgaWYoIWNoZWNrX1NoZWxsRXhlY3V0ZSgpKSB7CiAgICAgICAgIC8qIElmIHRoZSBPUyBkb2Vzbid0IGhhdmUgU2hlbGxFeGVjdXRlLCByZXR1cm4gYQpAQCAtMTA2MjAsNjggKzEwNDA2LDE2IEBACiAgICAgICAgICAgICAic3RhcnRmaWxlIG5vdCBhdmFpbGFibGUgb24gdGhpcyBwbGF0Zm9ybSIpOwogICAgIH0KIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVXxzOnN0YXJ0ZmlsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZ1bmlwYXRoLCAmb3BlcmF0aW9uKSkgewotICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBnb3RvIG5vcm1hbDsKLSAgICB9Ci0KLSAgICBpZiAob3BlcmF0aW9uKSB7Ci0gICAgICAgIHVvcGVyYXRpb24gPSBQeVVuaWNvZGVfRGVjb2RlQVNDSUkob3BlcmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmxlbihvcGVyYXRpb24pLCBOVUxMKTsKLSAgICAgICAgaWYgKCF1b3BlcmF0aW9uKSB7Ci0gICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICAgICAgb3BlcmF0aW9uID0gTlVMTDsKLSAgICAgICAgICAgIGdvdG8gbm9ybWFsOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgd3BhdGggPSBQeVVuaWNvZGVfQXNVbmljb2RlKHVuaXBhdGgpOwotICAgIGlmICh3cGF0aCA9PSBOVUxMKQotICAgICAgICBnb3RvIG5vcm1hbDsKLSAgICBpZiAodW9wZXJhdGlvbikgewotICAgICAgICB3b3BlcmF0aW9uID0gUHlVbmljb2RlX0FzVW5pY29kZSh1b3BlcmF0aW9uKTsKLSAgICAgICAgaWYgKHdvcGVyYXRpb24gPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gbm9ybWFsOwotICAgIH0KLSAgICBlbHNlCi0gICAgICAgIHdvcGVyYXRpb24gPSBOVUxMOwotCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJjID0gUHlfU2hlbGxFeGVjdXRlVygoSFdORCkwLCB3b3BlcmF0aW9uLCB3cGF0aCwKKyAgICByYyA9IFB5X1NoZWxsRXhlY3V0ZVcoKEhXTkQpMCwgb3BlcmF0aW9uLCBmaWxlcGF0aC0+d2lkZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwgU1dfU0hPV05PUk1BTCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAotICAgIFB5X1hERUNSRUYodW9wZXJhdGlvbik7CiAgICAgaWYgKHJjIDw9IChISU5TVEFOQ0UpMzIpIHsKLSAgICAgICAgd2luMzJfZXJyb3Jfb2JqZWN0KCJzdGFydGZpbGUiLCB1bmlwYXRoKTsKKyAgICAgICAgd2luMzJfZXJyb3Jfb2JqZWN0KCJzdGFydGZpbGUiLCBmaWxlcGF0aC0+b2JqZWN0KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKLQotbm9ybWFsOgotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZ8czpzdGFydGZpbGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZvZmlsZXBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZvcGVyYXRpb24pKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAod2luMzJfd2Fybl9ieXRlc19hcGkoKSkgewotICAgICAgICBQeV9ERUNSRUYob2ZpbGVwYXRoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGZpbGVwYXRoID0gUHlCeXRlc19Bc1N0cmluZyhvZmlsZXBhdGgpOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByYyA9IFB5X1NoZWxsRXhlY3V0ZUEoKEhXTkQpMCwgb3BlcmF0aW9uLCBmaWxlcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwgU1dfU0hPV05PUk1BTCk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocmMgPD0gKEhJTlNUQU5DRSkzMikgewotICAgICAgICBQeU9iamVjdCAqZXJydmFsID0gd2luMzJfZXJyb3IoInN0YXJ0ZmlsZSIsIGZpbGVwYXRoKTsKLSAgICAgICAgUHlfREVDUkVGKG9maWxlcGF0aCk7Ci0gICAgICAgIHJldHVybiBlcnJ2YWw7Ci0gICAgfQotICAgIFB5X0RFQ1JFRihvZmlsZXBhdGgpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KICNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAKQEAgLTEwODQ5LDcgKzEwNTgzLDcgQEAKICAgICBmb3IgKGkgPSAwOyA7IGkrKykgewogICAgICAgICB2b2lkICpwdHI7CiAgICAgICAgIHNzaXplX3QgcmVzdWx0OwotICAgICAgICBzdGF0aWMgUHlfc3NpemVfdCBidWZmZXJfc2l6ZXNbXSA9IHsxMjgsIFhBVFRSX1NJWkVfTUFYLCAwfTsKKyAgICAgICAgc3RhdGljIGNvbnN0IFB5X3NzaXplX3QgYnVmZmVyX3NpemVzW10gPSB7MTI4LCBYQVRUUl9TSVpFX01BWCwgMH07CiAgICAgICAgIFB5X3NzaXplX3QgYnVmZmVyX3NpemUgPSBidWZmZXJfc2l6ZXNbaV07CiAgICAgICAgIGlmICghYnVmZmVyX3NpemUpIHsKICAgICAgICAgICAgIHBhdGhfZXJyb3IocGF0aCk7CkBAIC0xMTAxMyw5ICsxMDc0Nyw5IEBACiAgICAgbmFtZSA9IHBhdGgtPm5hcnJvdyA/IHBhdGgtPm5hcnJvdyA6ICIuIjsKIAogICAgIGZvciAoaSA9IDA7IDsgaSsrKSB7Ci0gICAgICAgIGNoYXIgKnN0YXJ0LCAqdHJhY2UsICplbmQ7CisgICAgICAgIGNvbnN0IGNoYXIgKnN0YXJ0LCAqdHJhY2UsICplbmQ7CiAgICAgICAgIHNzaXplX3QgbGVuZ3RoOwotICAgICAgICBzdGF0aWMgUHlfc3NpemVfdCBidWZmZXJfc2l6ZXNbXSA9IHsgMjU2LCBYQVRUUl9MSVNUX01BWCwgMCB9OworICAgICAgICBzdGF0aWMgY29uc3QgUHlfc3NpemVfdCBidWZmZXJfc2l6ZXNbXSA9IHsgMjU2LCBYQVRUUl9MSVNUX01BWCwgMCB9OwogICAgICAgICBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplID0gYnVmZmVyX3NpemVzW2ldOwogICAgICAgICBpZiAoIWJ1ZmZlcl9zaXplKSB7CiAgICAgICAgICAgICAvKiBFUkFOR0UgKi8KQEAgLTExMTA2LDggKzEwODQwLDcgQEAKICAgICBpZiAoYnl0ZXMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICByZXN1bHQgPSBfUHlPU19VUmFuZG9tKFB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfR0VUX1NJWkUoYnl0ZXMpKTsKKyAgICByZXN1bHQgPSBfUHlPU19VUmFuZG9tKFB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVzKSwgUHlCeXRlc19HRVRfU0laRShieXRlcykpOwogICAgIGlmIChyZXN1bHQgPT0gLTEpIHsKICAgICAgICAgUHlfREVDUkVGKGJ5dGVzKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMTIyNywxMSArMTA5NjAsMTUgQEAKIG9zLmNwdV9jb3VudAogCiBSZXR1cm4gdGhlIG51bWJlciBvZiBDUFVzIGluIHRoZSBzeXN0ZW07IHJldHVybiBOb25lIGlmIGluZGV0ZXJtaW5hYmxlLgorCitUaGlzIG51bWJlciBpcyBub3QgZXF1aXZhbGVudCB0byB0aGUgbnVtYmVyIG9mIENQVXMgdGhlIGN1cnJlbnQgcHJvY2VzcyBjYW4KK3VzZS4gIFRoZSBudW1iZXIgb2YgdXNhYmxlIENQVXMgY2FuIGJlIG9idGFpbmVkIHdpdGgKK2BgbGVuKG9zLnNjaGVkX2dldGFmZmluaXR5KDApKWBgCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19jcHVfY291bnRfaW1wbChQeU9iamVjdCAqbW9kdWxlKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTVmYzI5NDYzYzM5MzZhOWMgaW5wdXQ9ZDU1ZTJmOGYzODIzYTYyOF0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTVmYzI5NDYzYzM5MzZhOWMgaW5wdXQ9ZTdjOGY0YmE2ZGJiYWRkM10qLwogewogICAgIGludCBuY3B1ID0gMDsKICNpZmRlZiBNU19XSU5ET1dTCkBAIC0xMTI3NSwxMSArMTEwMTIsNiBAQAogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTA0NDVlMjBlMTQ5YWE1YjggaW5wdXQ9ODlhYzAwOGRjOWFiNmI5NV0qLwogewogICAgIGludCByZXR1cm5fdmFsdWU7Ci0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKSB7Ci0gICAgICAgIHBvc2l4X2Vycm9yKCk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICiAgICAgcmV0dXJuX3ZhbHVlID0gX1B5X2dldF9pbmhlcml0YWJsZShmZCk7CiAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKQEAgLTExMzAxLDggKzExMDMzLDYgQEAKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mMWIxOTE4YTJmM2MzOGMyIGlucHV0PTljZWFlYWQ4N2ExZTI0MDJdKi8KIHsKICAgICBpbnQgcmVzdWx0OwotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiAKICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICiAgICAgcmVzdWx0ID0gX1B5X3NldF9pbmhlcml0YWJsZShmZCwgaW5oZXJpdGFibGUsIE5VTEwpOwpAQCAtMTEzMTYsMTUgKzExMDQ2LDE1IEBACiAjaWZkZWYgTVNfV0lORE9XUwogLypbY2xpbmljIGlucHV0XQogb3MuZ2V0X2hhbmRsZV9pbmhlcml0YWJsZSAtPiBib29sCi0gICAgaGFuZGxlOiBQeV9pbnRwdHJfdAorICAgIGhhbmRsZTogaW50cHRyX3QKICAgICAvCiAKIEdldCB0aGUgY2xvc2Utb24tZXhlIGZsYWcgb2YgdGhlIHNwZWNpZmllZCBmaWxlIGRlc2NyaXB0b3IuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBpbnQKLW9zX2dldF9oYW5kbGVfaW5oZXJpdGFibGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9pbnRwdHJfdCBoYW5kbGUpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OWU1Mzg5YjBhYTA5MTZjZSBpbnB1dD01Zjc3NTk0NDNhYWUzZGM1XSovCitvc19nZXRfaGFuZGxlX2luaGVyaXRhYmxlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50cHRyX3QgaGFuZGxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTM2YmU1YWZjYTZlYTg0ZDggaW5wdXQ9Y2ZlOTlmOWMwNWM3MGFkMV0qLwogewogICAgIERXT1JEIGZsYWdzOwogCkBAIC0xMTMzOSw3ICsxMTA2OSw3IEBACiAKIC8qW2NsaW5pYyBpbnB1dF0KIG9zLnNldF9oYW5kbGVfaW5oZXJpdGFibGUKLSAgICBoYW5kbGU6IFB5X2ludHB0cl90CisgICAgaGFuZGxlOiBpbnRwdHJfdAogICAgIGluaGVyaXRhYmxlOiBib29sCiAgICAgLwogCkBAIC0xMTM0Nyw5ICsxMTA3Nyw5IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19zZXRfaGFuZGxlX2luaGVyaXRhYmxlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfaW50cHRyX3QgaGFuZGxlLAorb3Nfc2V0X2hhbmRsZV9pbmhlcml0YWJsZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludHB0cl90IGhhbmRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5oZXJpdGFibGUpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjFlNjdiZmEzMjEzZDc0NSBpbnB1dD1lNjRiMmIyNzMwNDY5ZGVmXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDIxZDc0ZmU2Yzk2YmFhMyBpbnB1dD03YTc2NDEzOTBkODM2NGZjXSovCiB7CiAgICAgRFdPUkQgZmxhZ3MgPSBpbmhlcml0YWJsZSA/IEhBTkRMRV9GTEFHX0lOSEVSSVQgOiAwOwogICAgIGlmICghU2V0SGFuZGxlSW5mb3JtYXRpb24oKEhBTkRMRSloYW5kbGUsIEhBTkRMRV9GTEFHX0lOSEVSSVQsIGZsYWdzKSkgewpAQCAtMTEzNzYsOSArMTExMDYsNiBAQAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpnZXRfYmxvY2tpbmciLCAmZmQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0KICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICiAgICAgYmxvY2tpbmcgPSBfUHlfZ2V0X2Jsb2NraW5nKGZkKTsKICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSApAQCAtMTE0MDIsOSArMTExMjksNiBAQAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWk6c2V0X2Jsb2NraW5nIiwgJmZkLCAmYmxvY2tpbmcpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0KICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICiAgICAgcmVzdWx0ID0gX1B5X3NldF9ibG9ja2luZyhmZCwgYmxvY2tpbmcpOwogICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICkBAIC0xMTQ4NSw0MSArMTEyMDksMjYgQEAKIERpckVudHJ5X2ZldGNoX3N0YXQoRGlyRW50cnkgKnNlbGYsIGludCBmb2xsb3dfc3ltbGlua3MpCiB7CiAgICAgaW50IHJlc3VsdDsKLSAgICBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0IHN0OworICAgIFNUUlVDVF9TVEFUIHN0OworICAgIFB5T2JqZWN0ICp1YjsKIAogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICB3Y2hhcl90ICpwYXRoOwotCi0gICAgcGF0aCA9IFB5VW5pY29kZV9Bc1VuaWNvZGUoc2VsZi0+cGF0aCk7Ci0gICAgaWYgKCFwYXRoKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmIChmb2xsb3dfc3ltbGlua3MpCi0gICAgICAgIHJlc3VsdCA9IHdpbjMyX3N0YXRfdyhwYXRoLCAmc3QpOwotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gd2luMzJfbHN0YXRfdyhwYXRoLCAmc3QpOwotCi0gICAgaWYgKHJlc3VsdCAhPSAwKSB7Ci0gICAgICAgIHJldHVybiBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycldpdGhGaWxlbmFtZU9iamVjdChQeUV4Y19PU0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgc2VsZi0+cGF0aCk7Ci0gICAgfQorICAgIGlmIChQeVVuaWNvZGVfRlNEZWNvZGVyKHNlbGYtPnBhdGgsICZ1YikpIHsKKyAgICAgICAgY29uc3Qgd2NoYXJfdCAqcGF0aCA9IFB5VW5pY29kZV9Bc1VuaWNvZGUodWIpOwogI2Vsc2UgLyogUE9TSVggKi8KLSAgICBQeU9iamVjdCAqYnl0ZXM7Ci0gICAgY2hhciAqcGF0aDsKLQotICAgIGlmICghUHlVbmljb2RlX0ZTQ29udmVydGVyKHNlbGYtPnBhdGgsICZieXRlcykpCisgICAgaWYgKFB5VW5pY29kZV9GU0NvbnZlcnRlcihzZWxmLT5wYXRoLCAmdWIpKSB7CisgICAgICAgIGNvbnN0IGNoYXIgKnBhdGggPSBQeUJ5dGVzX0FTX1NUUklORyh1Yik7CisjZW5kaWYKKyAgICAgICAgaWYgKGZvbGxvd19zeW1saW5rcykKKyAgICAgICAgICAgIHJlc3VsdCA9IFNUQVQocGF0aCwgJnN0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzdWx0ID0gTFNUQVQocGF0aCwgJnN0KTsKKyAgICAgICAgUHlfREVDUkVGKHViKTsKKyAgICB9IGVsc2UKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcGF0aCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVzKTsKLQotICAgIGlmIChmb2xsb3dfc3ltbGlua3MpCi0gICAgICAgIHJlc3VsdCA9IFNUQVQocGF0aCwgJnN0KTsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IExTVEFUKHBhdGgsICZzdCk7Ci0gICAgUHlfREVDUkVGKGJ5dGVzKTsKIAogICAgIGlmIChyZXN1bHQgIT0gMCkKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZU9iamVjdChQeUV4Y19PU0Vycm9yLCBzZWxmLT5wYXRoKTsKLSNlbmRpZgorICAgICAgICByZXR1cm4gcGF0aF9vYmplY3RfZXJyb3Ioc2VsZi0+cGF0aCk7CiAKICAgICByZXR1cm4gX3B5c3RhdF9mcm9tc3RydWN0c3RhdCgmc3QpOwogfQpAQCAtMTE2ODksMjUgKzExMzk4LDI3IEBACiB7CiAjaWZkZWYgTVNfV0lORE9XUwogICAgIGlmICghc2VsZi0+Z290X2ZpbGVfaW5kZXgpIHsKLSAgICAgICAgd2NoYXJfdCAqcGF0aDsKLSAgICAgICAgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCBzdGF0OworICAgICAgICBQeU9iamVjdCAqdW5pY29kZTsKKyAgICAgICAgY29uc3Qgd2NoYXJfdCAqcGF0aDsKKyAgICAgICAgU1RSVUNUX1NUQVQgc3RhdDsKKyAgICAgICAgaW50IHJlc3VsdDsKIAotICAgICAgICBwYXRoID0gUHlVbmljb2RlX0FzVW5pY29kZShzZWxmLT5wYXRoKTsKLSAgICAgICAgaWYgKCFwYXRoKQorICAgICAgICBpZiAoIVB5VW5pY29kZV9GU0RlY29kZXIoc2VsZi0+cGF0aCwgJnVuaWNvZGUpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHBhdGggPSBQeVVuaWNvZGVfQXNVbmljb2RlKHVuaWNvZGUpOworICAgICAgICByZXN1bHQgPSBMU1RBVChwYXRoLCAmc3RhdCk7CisgICAgICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKIAotICAgICAgICBpZiAod2luMzJfbHN0YXRfdyhwYXRoLCAmc3RhdCkgIT0gMCkgewotICAgICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyV2l0aEZpbGVuYW1lT2JqZWN0KFB5RXhjX09TRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgc2VsZi0+cGF0aCk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKHJlc3VsdCAhPSAwKQorICAgICAgICAgICAgcmV0dXJuIHBhdGhfb2JqZWN0X2Vycm9yKHNlbGYtPnBhdGgpOwogCiAgICAgICAgIHNlbGYtPndpbjMyX2ZpbGVfaW5kZXggPSBzdGF0LnN0X2lubzsKICAgICAgICAgc2VsZi0+Z290X2ZpbGVfaW5kZXggPSAxOwogICAgIH0KLSAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZygoUFlfTE9OR19MT05HKXNlbGYtPndpbjMyX2ZpbGVfaW5kZXgpOworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKChsb25nIGxvbmcpc2VsZi0+d2luMzJfZmlsZV9pbmRleCk7CiAjZWxzZSAvKiBQT1NJWCAqLwogI2lmZGVmIEhBVkVfTEFSR0VGSUxFX1NVUFBPUlQKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZygoUFlfTE9OR19MT05HKXNlbGYtPmRfaW5vKTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZygobG9uZyBsb25nKXNlbGYtPmRfaW5vKTsKICNlbHNlCiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZylzZWxmLT5kX2lubyk7CiAjZW5kaWYKQEAgLTExNzIwLDYgKzExNDMxLDEzIEBACiAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8RGlyRW50cnkgJVI+Iiwgc2VsZi0+bmFtZSk7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitEaXJFbnRyeV9mc3BhdGgoRGlyRW50cnkgKnNlbGYpCit7CisgICAgUHlfSU5DUkVGKHNlbGYtPnBhdGgpOworICAgIHJldHVybiBzZWxmLT5wYXRoOworfQorCiBzdGF0aWMgUHlNZW1iZXJEZWYgRGlyRW50cnlfbWVtYmVyc1tdID0gewogICAgIHsibmFtZSIsIFRfT0JKRUNUX0VYLCBvZmZzZXRvZihEaXJFbnRyeSwgbmFtZSksIFJFQURPTkxZLAogICAgICAidGhlIGVudHJ5J3MgYmFzZSBmaWxlbmFtZSwgcmVsYXRpdmUgdG8gc2NhbmRpcigpIFwicGF0aFwiIGFyZ3VtZW50In0sCkBAIC0xMTc0NCw2ICsxMTQ2Miw5IEBACiAgICAgeyJpbm9kZSIsIChQeUNGdW5jdGlvbilEaXJFbnRyeV9pbm9kZSwgTUVUSF9OT0FSR1MsCiAgICAgICJyZXR1cm4gaW5vZGUgb2YgdGhlIGVudHJ5OyBjYWNoZWQgcGVyIGVudHJ5IiwKICAgICB9LAorICAgIHsiX19mc3BhdGhfXyIsIChQeUNGdW5jdGlvbilEaXJFbnRyeV9mc3BhdGgsIE1FVEhfTk9BUkdTLAorICAgICAicmV0dXJucyB0aGUgcGF0aCBmb3IgdGhlIGVudHJ5IiwKKyAgICB9LAogICAgIHtOVUxMfQogfTsKIApAQCAtMTE3ODMsNyArMTE1MDQsNyBAQAogI2lmZGVmIE1TX1dJTkRPV1MKIAogc3RhdGljIHdjaGFyX3QgKgotam9pbl9wYXRoX2ZpbGVuYW1lVyh3Y2hhcl90ICpwYXRoX3dpZGUsIHdjaGFyX3QqIGZpbGVuYW1lKQoram9pbl9wYXRoX2ZpbGVuYW1lVyhjb25zdCB3Y2hhcl90ICpwYXRoX3dpZGUsIGNvbnN0IHdjaGFyX3QgKmZpbGVuYW1lKQogewogICAgIFB5X3NzaXplX3QgcGF0aF9sZW47CiAgICAgUHlfc3NpemVfdCBzaXplOwpAQCAtMTE4MzUsNiArMTE1NTYsMTEgQEAKICAgICBlbnRyeS0+bmFtZSA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIoZGF0YVctPmNGaWxlTmFtZSwgLTEpOwogICAgIGlmICghZW50cnktPm5hbWUpCiAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgaWYgKHBhdGgtPm5hcnJvdykgeworICAgICAgICBQeV9TRVRSRUYoZW50cnktPm5hbWUsIFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQoZW50cnktPm5hbWUpKTsKKyAgICAgICAgaWYgKCFlbnRyeS0+bmFtZSkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQogCiAgICAgam9pbmVkX3BhdGggPSBqb2luX3BhdGhfZmlsZW5hbWVXKHBhdGgtPndpZGUsIGRhdGFXLT5jRmlsZU5hbWUpOwogICAgIGlmICgham9pbmVkX3BhdGgpCkBAIC0xMTg0NCw4ICsxMTU3MCwxMyBAQAogICAgIFB5TWVtX0ZyZWUoam9pbmVkX3BhdGgpOwogICAgIGlmICghZW50cnktPnBhdGgpCiAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgaWYgKHBhdGgtPm5hcnJvdykgeworICAgICAgICBQeV9TRVRSRUYoZW50cnktPnBhdGgsIFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQoZW50cnktPnBhdGgpKTsKKyAgICAgICAgaWYgKCFlbnRyeS0+cGF0aCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQogCi0gICAgZmluZF9kYXRhX3RvX2ZpbGVfaW5mb193KGRhdGFXLCAmZmlsZV9pbmZvLCAmcmVwYXJzZV90YWcpOworICAgIGZpbmRfZGF0YV90b19maWxlX2luZm8oZGF0YVcsICZmaWxlX2luZm8sICZyZXBhcnNlX3RhZyk7CiAgICAgX1B5X2F0dHJpYnV0ZV9kYXRhX3RvX3N0YXQoJmZpbGVfaW5mbywgcmVwYXJzZV90YWcsICZlbnRyeS0+d2luMzJfbHN0YXQpOwogCiAgICAgcmV0dXJuIChQeU9iamVjdCAqKWVudHJ5OwpAQCAtMTE4NTgsNyArMTE1ODksNyBAQAogI2Vsc2UgLyogUE9TSVggKi8KIAogc3RhdGljIGNoYXIgKgotam9pbl9wYXRoX2ZpbGVuYW1lKGNoYXIgKnBhdGhfbmFycm93LCBjaGFyKiBmaWxlbmFtZSwgUHlfc3NpemVfdCBmaWxlbmFtZV9sZW4pCitqb2luX3BhdGhfZmlsZW5hbWUoY29uc3QgY2hhciAqcGF0aF9uYXJyb3csIGNvbnN0IGNoYXIqIGZpbGVuYW1lLCBQeV9zc2l6ZV90IGZpbGVuYW1lX2xlbikKIHsKICAgICBQeV9zc2l6ZV90IHBhdGhfbGVuOwogICAgIFB5X3NzaXplX3Qgc2l6ZTsKQEAgLTExODkwLDcgKzExNjIxLDcgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLURpckVudHJ5X2Zyb21fcG9zaXhfaW5mbyhwYXRoX3QgKnBhdGgsIGNoYXIgKm5hbWUsIFB5X3NzaXplX3QgbmFtZV9sZW4sCitEaXJFbnRyeV9mcm9tX3Bvc2l4X2luZm8ocGF0aF90ICpwYXRoLCBjb25zdCBjaGFyICpuYW1lLCBQeV9zc2l6ZV90IG5hbWVfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgIGlub190IGRfaW5vCiAjaWZkZWYgSEFWRV9ESVJFTlRfRF9UWVBFCiAgICAgICAgICAgICAgICAgICAgICAgICAgLCB1bnNpZ25lZCBjaGFyIGRfdHlwZQpAQCAtMTE5NTMsOCArMTE2ODQsMTQgQEAKIAogI2lmZGVmIE1TX1dJTkRPV1MKIAorc3RhdGljIGludAorU2NhbmRpckl0ZXJhdG9yX2lzX2Nsb3NlZChTY2FuZGlySXRlcmF0b3IgKml0ZXJhdG9yKQoreworICAgIHJldHVybiBpdGVyYXRvci0+aGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFOworfQorCiBzdGF0aWMgdm9pZAotU2NhbmRpckl0ZXJhdG9yX2Nsb3NlKFNjYW5kaXJJdGVyYXRvciAqaXRlcmF0b3IpCitTY2FuZGlySXRlcmF0b3JfY2xvc2VkaXIoU2NhbmRpckl0ZXJhdG9yICppdGVyYXRvcikKIHsKICAgICBIQU5ETEUgaGFuZGxlID0gaXRlcmF0b3ItPmhhbmRsZTsKIApAQCAtMTE5NzQsNyArMTE3MTEsNyBAQAogICAgIEJPT0wgc3VjY2VzczsKICAgICBQeU9iamVjdCAqZW50cnk7CiAKLSAgICAvKiBIYXBwZW5zIGlmIHRoZSBpdGVyYXRvciBpcyBpdGVyYXRlZCB0d2ljZSAqLworICAgIC8qIEhhcHBlbnMgaWYgdGhlIGl0ZXJhdG9yIGlzIGl0ZXJhdGVkIHR3aWNlLCBvciBjbG9zZWQgZXhwbGljaXRseSAqLwogICAgIGlmIChpdGVyYXRvci0+aGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtMTIwMDUsMTQgKzExNzQyLDIwIEBACiAgICAgfQogCiAgICAgLyogRXJyb3Igb3Igbm8gbW9yZSBmaWxlcyAqLwotICAgIFNjYW5kaXJJdGVyYXRvcl9jbG9zZShpdGVyYXRvcik7CisgICAgU2NhbmRpckl0ZXJhdG9yX2Nsb3NlZGlyKGl0ZXJhdG9yKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIAogI2Vsc2UgLyogUE9TSVggKi8KIAorc3RhdGljIGludAorU2NhbmRpckl0ZXJhdG9yX2lzX2Nsb3NlZChTY2FuZGlySXRlcmF0b3IgKml0ZXJhdG9yKQoreworICAgIHJldHVybiAhaXRlcmF0b3ItPmRpcnA7Cit9CisKIHN0YXRpYyB2b2lkCi1TY2FuZGlySXRlcmF0b3JfY2xvc2UoU2NhbmRpckl0ZXJhdG9yICppdGVyYXRvcikKK1NjYW5kaXJJdGVyYXRvcl9jbG9zZWRpcihTY2FuZGlySXRlcmF0b3IgKml0ZXJhdG9yKQogewogICAgIERJUiAqZGlycCA9IGl0ZXJhdG9yLT5kaXJwOwogCkBAIC0xMjAzNCw3ICsxMTc3Nyw3IEBACiAgICAgaW50IGlzX2RvdDsKICAgICBQeU9iamVjdCAqZW50cnk7CiAKLSAgICAvKiBIYXBwZW5zIGlmIHRoZSBpdGVyYXRvciBpcyBpdGVyYXRlZCB0d2ljZSAqLworICAgIC8qIEhhcHBlbnMgaWYgdGhlIGl0ZXJhdG9yIGlzIGl0ZXJhdGVkIHR3aWNlLCBvciBjbG9zZWQgZXhwbGljaXRseSAqLwogICAgIGlmICghaXRlcmF0b3ItPmRpcnApCiAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC0xMjA3MSwyMSArMTE4MTQsNzYgQEAKICAgICB9CiAKICAgICAvKiBFcnJvciBvciBubyBtb3JlIGZpbGVzICovCi0gICAgU2NhbmRpckl0ZXJhdG9yX2Nsb3NlKGl0ZXJhdG9yKTsKKyAgICBTY2FuZGlySXRlcmF0b3JfY2xvc2VkaXIoaXRlcmF0b3IpOwogICAgIHJldHVybiBOVUxMOwogfQogCiAjZW5kaWYKIAorc3RhdGljIFB5T2JqZWN0ICoKK1NjYW5kaXJJdGVyYXRvcl9jbG9zZShTY2FuZGlySXRlcmF0b3IgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFNjYW5kaXJJdGVyYXRvcl9jbG9zZWRpcihzZWxmKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK1NjYW5kaXJJdGVyYXRvcl9lbnRlcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlfSU5DUkVGKHNlbGYpOworICAgIHJldHVybiBzZWxmOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorU2NhbmRpckl0ZXJhdG9yX2V4aXQoU2NhbmRpckl0ZXJhdG9yICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBTY2FuZGlySXRlcmF0b3JfY2xvc2VkaXIoc2VsZik7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyB2b2lkCitTY2FuZGlySXRlcmF0b3JfZmluYWxpemUoU2NhbmRpckl0ZXJhdG9yICppdGVyYXRvcikKK3sKKyAgICBQeU9iamVjdCAqZXJyb3JfdHlwZSwgKmVycm9yX3ZhbHVlLCAqZXJyb3JfdHJhY2ViYWNrOworCisgICAgLyogU2F2ZSB0aGUgY3VycmVudCBleGNlcHRpb24sIGlmIGFueS4gKi8KKyAgICBQeUVycl9GZXRjaCgmZXJyb3JfdHlwZSwgJmVycm9yX3ZhbHVlLCAmZXJyb3JfdHJhY2ViYWNrKTsKKworICAgIGlmICghU2NhbmRpckl0ZXJhdG9yX2lzX2Nsb3NlZChpdGVyYXRvcikpIHsKKyAgICAgICAgU2NhbmRpckl0ZXJhdG9yX2Nsb3NlZGlyKGl0ZXJhdG9yKTsKKworICAgICAgICBpZiAoUHlFcnJfUmVzb3VyY2VXYXJuaW5nKChQeU9iamVjdCAqKWl0ZXJhdG9yLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmNsb3NlZCBzY2FuZGlyIGl0ZXJhdG9yICVSIiwgaXRlcmF0b3IpKSB7CisgICAgICAgICAgICAvKiBTcHVyaW91cyBlcnJvcnMgY2FuIGFwcGVhciBhdCBzaHV0ZG93biAqLworICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfV2FybmluZykpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUoKFB5T2JqZWN0ICopIGl0ZXJhdG9yKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIFB5X0NMRUFSKGl0ZXJhdG9yLT5wYXRoLm9iamVjdCk7CisgICAgcGF0aF9jbGVhbnVwKCZpdGVyYXRvci0+cGF0aCk7CisKKyAgICAvKiBSZXN0b3JlIHRoZSBzYXZlZCBleGNlcHRpb24uICovCisgICAgUHlFcnJfUmVzdG9yZShlcnJvcl90eXBlLCBlcnJvcl92YWx1ZSwgZXJyb3JfdHJhY2ViYWNrKTsKK30KKwogc3RhdGljIHZvaWQKIFNjYW5kaXJJdGVyYXRvcl9kZWFsbG9jKFNjYW5kaXJJdGVyYXRvciAqaXRlcmF0b3IpCiB7Ci0gICAgU2NhbmRpckl0ZXJhdG9yX2Nsb3NlKGl0ZXJhdG9yKTsKLSAgICBQeV9YREVDUkVGKGl0ZXJhdG9yLT5wYXRoLm9iamVjdCk7Ci0gICAgcGF0aF9jbGVhbnVwKCZpdGVyYXRvci0+cGF0aCk7CisgICAgaWYgKFB5T2JqZWN0X0NhbGxGaW5hbGl6ZXJGcm9tRGVhbGxvYygoUHlPYmplY3QgKilpdGVyYXRvcikgPCAwKQorICAgICAgICByZXR1cm47CisKICAgICBQeV9UWVBFKGl0ZXJhdG9yKS0+dHBfZnJlZSgoUHlPYmplY3QgKilpdGVyYXRvcik7CiB9CiAKK3N0YXRpYyBQeU1ldGhvZERlZiBTY2FuZGlySXRlcmF0b3JfbWV0aG9kc1tdID0geworICAgIHsiX19lbnRlcl9fIiwgKFB5Q0Z1bmN0aW9uKVNjYW5kaXJJdGVyYXRvcl9lbnRlciwgTUVUSF9OT0FSR1N9LAorICAgIHsiX19leGl0X18iLCAoUHlDRnVuY3Rpb24pU2NhbmRpckl0ZXJhdG9yX2V4aXQsIE1FVEhfVkFSQVJHU30sCisgICAgeyJjbG9zZSIsIChQeUNGdW5jdGlvbilTY2FuZGlySXRlcmF0b3JfY2xvc2UsIE1FVEhfTk9BUkdTfSwKKyAgICB7TlVMTH0KK307CisKIHN0YXRpYyBQeVR5cGVPYmplY3QgU2NhbmRpckl0ZXJhdG9yVHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKICAgICBNT0ROQU1FICIuU2NhbmRpckl0ZXJhdG9yIiwgICAgICAgICAgICAgLyogdHBfbmFtZSAqLwpAQCAtMTIxMDcsNyArMTE5MDUsOCBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KLSAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQKKyAgICAgICAgfCBQeV9UUEZMQUdTX0hBVkVfRklOQUxJWkUsICAgICAgICAgLyogdHBfZmxhZ3MgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCkBAIC0xMjExNSw2ICsxMTkxNCwyNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgKGl0ZXJuZXh0ZnVuYylTY2FuZGlySXRlcmF0b3JfaXRlcm5leHQsIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgU2NhbmRpckl0ZXJhdG9yX21ldGhvZHMsICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2lzX2djICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2VzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWNoZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdWJjbGFzc2VzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RlbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF92ZXJzaW9uX3RhZyAqLworICAgIChkZXN0cnVjdG9yKVNjYW5kaXJJdGVyYXRvcl9maW5hbGl6ZSwgICAvKiB0cF9maW5hbGl6ZSAqLwogfTsKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTEyMTI1LDcgKzExOTQ1LDcgQEAKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgd2NoYXJfdCAqcGF0aF9zdHJXOwogI2Vsc2UKLSAgICBjaGFyICpwYXRoOworICAgIGNvbnN0IGNoYXIgKnBhdGg7CiAjZW5kaWYKIAogICAgIGl0ZXJhdG9yID0gUHlPYmplY3RfTmV3KFNjYW5kaXJJdGVyYXRvciwgJlNjYW5kaXJJdGVyYXRvclR5cGUpOwpAQCAtMTIxNTIsMTEgKzExOTcyLDYgQEAKICAgICBQeV9YSU5DUkVGKGl0ZXJhdG9yLT5wYXRoLm9iamVjdCk7CiAKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgaWYgKGl0ZXJhdG9yLT5wYXRoLm5hcnJvdykgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIm9zLnNjYW5kaXIoKSBkb2Vzbid0IHN1cHBvcnQgYnl0ZXMgcGF0aCBvbiBXaW5kb3dzLCB1c2UgVW5pY29kZSBpbnN0ZWFkIik7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQogICAgIGl0ZXJhdG9yLT5maXJzdF90aW1lID0gMTsKIAogICAgIHBhdGhfc3RyVyA9IGpvaW5fcGF0aF9maWxlbmFtZVcoaXRlcmF0b3ItPnBhdGgud2lkZSwgTCIqLioiKTsKQEAgLTEyMTk3LDYgKzEyMDEyLDEzMiBAQAogICAgIHJldHVybiBOVUxMOwogfQogCisvKgorICAgIFJldHVybiB0aGUgZmlsZSBzeXN0ZW0gcGF0aCByZXByZXNlbnRhdGlvbiBvZiB0aGUgb2JqZWN0LgorCisgICAgSWYgdGhlIG9iamVjdCBpcyBzdHIgb3IgYnl0ZXMsIHRoZW4gYWxsb3cgaXQgdG8gcGFzcyB0aHJvdWdoIHdpdGgKKyAgICBhbiBpbmNyZW1lbnRlZCByZWZjb3VudC4gSWYgdGhlIG9iamVjdCBkZWZpbmVzIF9fZnNwYXRoX18oKSwgdGhlbgorICAgIHJldHVybiB0aGUgcmVzdWx0IG9mIHRoYXQgbWV0aG9kLiBBbGwgb3RoZXIgdHlwZXMgcmFpc2UgYSBUeXBlRXJyb3IuCisqLworUHlPYmplY3QgKgorUHlPU19GU1BhdGgoUHlPYmplY3QgKnBhdGgpCit7CisgICAgLyogRm9yIGVycm9yIG1lc3NhZ2UgcmVhc29ucywgdGhpcyBmdW5jdGlvbiBpcyBtYW51YWxseSBpbmxpbmVkIGluCisgICAgICAgcGF0aF9jb252ZXJ0ZXIoKS4gKi8KKyAgICBfUHlfSURFTlRJRklFUihfX2ZzcGF0aF9fKTsKKyAgICBQeU9iamVjdCAqZnVuYyA9IE5VTEw7CisgICAgUHlPYmplY3QgKnBhdGhfcmVwciA9IE5VTEw7CisKKyAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHBhdGgpIHx8IFB5Qnl0ZXNfQ2hlY2socGF0aCkpIHsKKyAgICAgICAgUHlfSU5DUkVGKHBhdGgpOworICAgICAgICByZXR1cm4gcGF0aDsKKyAgICB9CisKKyAgICBmdW5jID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwocGF0aCwgJlB5SWRfX19mc3BhdGhfXyk7CisgICAgaWYgKE5VTEwgPT0gZnVuYykgeworICAgICAgICByZXR1cm4gUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgc3RyLCBieXRlcyBvciBvcy5QYXRoTGlrZSBvYmplY3QsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm90ICUuMjAwcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShwYXRoKS0+dHBfbmFtZSk7CisgICAgfQorCisgICAgcGF0aF9yZXByID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhmdW5jLCBOVUxMKTsKKyAgICBQeV9ERUNSRUYoZnVuYyk7CisgICAgaWYgKE5VTEwgPT0gcGF0aF9yZXByKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmICghKFB5VW5pY29kZV9DaGVjayhwYXRoX3JlcHIpIHx8IFB5Qnl0ZXNfQ2hlY2socGF0aF9yZXByKSkpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCAlLjIwMHMuX19mc3BhdGhfXygpIHRvIHJldHVybiBzdHIgb3IgYnl0ZXMsICIKKyAgICAgICAgICAgICAgICAgICAgICJub3QgJS4yMDBzIiwgUHlfVFlQRShwYXRoKS0+dHBfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUocGF0aF9yZXByKS0+dHBfbmFtZSk7CisgICAgICAgIFB5X0RFQ1JFRihwYXRoX3JlcHIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gcGF0aF9yZXByOworfQorCisvKltjbGluaWMgaW5wdXRdCitvcy5mc3BhdGgKKworICAgIHBhdGg6IG9iamVjdAorCitSZXR1cm4gdGhlIGZpbGUgc3lzdGVtIHBhdGggcmVwcmVzZW50YXRpb24gb2YgdGhlIG9iamVjdC4KKworSWYgdGhlIG9iamVjdCBpcyBzdHIgb3IgYnl0ZXMsIHRoZW4gYWxsb3cgaXQgdG8gcGFzcyB0aHJvdWdoIGFzLWlzLiBJZiB0aGUKK29iamVjdCBkZWZpbmVzIF9fZnNwYXRoX18oKSwgdGhlbiByZXR1cm4gdGhlIHJlc3VsdCBvZiB0aGF0IG1ldGhvZC4gQWxsIG90aGVyCit0eXBlcyByYWlzZSBhIFR5cGVFcnJvci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK29zX2ZzcGF0aF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpwYXRoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWMzYzNiNzhlY2ZmMjkxNGYgaW5wdXQ9ZTM1NzE2NWY3YjIyNDkwZl0qLworeworICAgIHJldHVybiBQeU9TX0ZTUGF0aChwYXRoKTsKK30KKworI2lmZGVmIEhBVkVfR0VUUkFORE9NX1NZU0NBTEwKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmdldHJhbmRvbQorCisgICAgc2l6ZTogUHlfc3NpemVfdAorICAgIGZsYWdzOiBpbnQ9MAorCitPYnRhaW4gYSBzZXJpZXMgb2YgcmFuZG9tIGJ5dGVzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0cmFuZG9tX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfc3NpemVfdCBzaXplLCBpbnQgZmxhZ3MpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjNhNjE4MTk2YTYxNDA5YyBpbnB1dD01OWJhZmFjMzljNTk0OTQ3XSovCit7CisgICAgUHlPYmplY3QgKmJ5dGVzOworICAgIFB5X3NzaXplX3QgbjsKKworICAgIGlmIChzaXplIDwgMCkgeworICAgICAgICBlcnJubyA9IEVJTlZBTDsKKyAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgfQorCisgICAgYnl0ZXMgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNpemUpOworICAgIGlmIChieXRlcyA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHdoaWxlICgxKSB7CisgICAgICAgIG4gPSBzeXNjYWxsKFNZU19nZXRyYW5kb20sCisgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVzKSwKKyAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19HRVRfU0laRShieXRlcyksCisgICAgICAgICAgICAgICAgICAgIGZsYWdzKTsKKyAgICAgICAgaWYgKG4gPCAwICYmIGVycm5vID09IEVJTlRSKSB7CisgICAgICAgICAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkgPCAwKSB7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogZ2V0cmFuZG9tKCkgd2FzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsOiByZXRyeSAqLworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKG4gPCAwKSB7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBpZiAobiAhPSBzaXplKSB7CisgICAgICAgIF9QeUJ5dGVzX1Jlc2l6ZSgmYnl0ZXMsIG4pOworICAgIH0KKworICAgIHJldHVybiBieXRlczsKKworZXJyb3I6CisgICAgUHlfREVDUkVGKGJ5dGVzKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKyNlbmRpZiAgIC8qIEhBVkVfR0VUUkFORE9NX1NZU0NBTEwgKi8KIAogI2luY2x1ZGUgImNsaW5pYy9wb3NpeG1vZHVsZS5jLmgiCiAKQEAgLTEyMjg4LDcgKzEyMjI5LDcgQEAKICAgICBPU19LSUxMUEdfTUVUSE9EREVGCiAgICAgT1NfUExPQ0tfTUVUSE9EREVGCiAjaWZkZWYgTVNfV0lORE9XUwotICAgIHsic3RhcnRmaWxlIiwgICAgICAgd2luMzJfc3RhcnRmaWxlLCBNRVRIX1ZBUkFSR1MsIHdpbjMyX3N0YXJ0ZmlsZV9fZG9jX199LAorICAgIE9TX1NUQVJURklMRV9NRVRIT0RERUYKICNlbmRpZgogICAgIE9TX1NFVFVJRF9NRVRIT0RERUYKICAgICBPU19TRVRFVUlEX01FVEhPRERFRgpAQCAtMTIzOTcsNiArMTIzMzgsOCBAQAogICAgIHsic2NhbmRpciIsICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X3NjYW5kaXIsCiAgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAogICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfc2NhbmRpcl9fZG9jX199LAorICAgIE9TX0ZTUEFUSF9NRVRIT0RERUYKKyAgICBPU19HRVRSQU5ET01fTUVUSE9EREVGCiAgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgIC8qIFNlbnRpbmVsICovCiB9OwogCkBAIC0xMjQwOCw3ICsxMjM1MSw2IEBACiAgICAgSEFORExFIHRvazsKICAgICBUT0tFTl9QUklWSUxFR0VTIHRva19wcml2OwogICAgIExVSUQgbHVpZDsKLSAgICBpbnQgbWV0aF9pZHggPSAwOwogCiAgICAgaWYgKCFPcGVuUHJvY2Vzc1Rva2VuKEdldEN1cnJlbnRQcm9jZXNzKCksIFRPS0VOX0FMTF9BQ0NFU1MsICZ0b2spKQogICAgICAgICByZXR1cm4gMDsKQEAgLTEyNTExLDEyICsxMjQ1MywxNCBAQAogI2lmZGVmIE9fTEFSR0VGSUxFCiAgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIE9fTEFSR0VGSUxFKSkgcmV0dXJuIC0xOwogI2VuZGlmCisjaWZuZGVmIF9fR05VX18KICNpZmRlZiBPX1NITE9DSwogICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBPX1NITE9DSykpIHJldHVybiAtMTsKICNlbmRpZgogI2lmZGVmIE9fRVhMT0NLCiAgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIE9fRVhMT0NLKSkgcmV0dXJuIC0xOwogI2VuZGlmCisjZW5kaWYKICNpZmRlZiBPX0VYRUMKICAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgT19FWEVDKSkgcmV0dXJuIC0xOwogI2VuZGlmCkBAIC0xMjgxOSwyOCArMTI3NjMsMzMgQEAKICAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgWEFUVFJfU0laRV9NQVgpKSByZXR1cm4gLTE7CiAjZW5kaWYKIAotI2lmZGVmIFJUTERfTEFaWQorI2lmIEhBVkVfREVDTF9SVExEX0xBWlkKICAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgUlRMRF9MQVpZKSkgcmV0dXJuIC0xOwogI2VuZGlmCi0jaWZkZWYgUlRMRF9OT1cKKyNpZiBIQVZFX0RFQ0xfUlRMRF9OT1cKICAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgUlRMRF9OT1cpKSByZXR1cm4gLTE7CiAjZW5kaWYKLSNpZmRlZiBSVExEX0dMT0JBTAorI2lmIEhBVkVfREVDTF9SVExEX0dMT0JBTAogICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBSVExEX0dMT0JBTCkpIHJldHVybiAtMTsKICNlbmRpZgotI2lmZGVmIFJUTERfTE9DQUwKKyNpZiBIQVZFX0RFQ0xfUlRMRF9MT0NBTAogICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBSVExEX0xPQ0FMKSkgcmV0dXJuIC0xOwogI2VuZGlmCi0jaWZkZWYgUlRMRF9OT0RFTEVURQorI2lmIEhBVkVfREVDTF9SVExEX05PREVMRVRFCiAgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFJUTERfTk9ERUxFVEUpKSByZXR1cm4gLTE7CiAjZW5kaWYKLSNpZmRlZiBSVExEX05PTE9BRAorI2lmIEhBVkVfREVDTF9SVExEX05PTE9BRAogICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBSVExEX05PTE9BRCkpIHJldHVybiAtMTsKICNlbmRpZgotI2lmZGVmIFJUTERfREVFUEJJTkQKKyNpZiBIQVZFX0RFQ0xfUlRMRF9ERUVQQklORAogICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBSVExEX0RFRVBCSU5EKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAKKyNpZmRlZiBIQVZFX0dFVFJBTkRPTV9TWVNDQUxMCisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEdSTkRfUkFORE9NKSkgcmV0dXJuIC0xOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBHUk5EX05PTkJMT0NLKSkgcmV0dXJuIC0xOworI2VuZGlmCisKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMTI4NTgsNyArMTI4MDcsNyBAQAogfTsKIAogCi1zdGF0aWMgY2hhciAqaGF2ZV9mdW5jdGlvbnNbXSA9IHsKK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgaGF2ZV9mdW5jdGlvbnNbXSA9IHsKIAogI2lmZGVmIEhBVkVfRkFDQ0VTU0FUCiAgICAgIkhBVkVfRkFDQ0VTU0FUIiwKQEAgLTEyOTkzLDcgKzEyOTQyLDcgQEAKIHsKICAgICBQeU9iamVjdCAqbSwgKnY7CiAgICAgUHlPYmplY3QgKmxpc3Q7Ci0gICAgY2hhciAqKnRyYWNlOworICAgIGNvbnN0IGNoYXIgKiBjb25zdCAqdHJhY2U7CiAKICNpZiBkZWZpbmVkKEhBVkVfU1lNTElOSykgJiYgZGVmaW5lZChNU19XSU5ET1dTKQogICAgIHdpbjMyX2Nhbl9zeW1saW5rID0gZW5hYmxlX3N5bWxpbmsoKTsKQEAgLTEzMTY5LDYgKzEzMTE4LDkgQEAKICAgICB9CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJfaGF2ZV9mdW5jdGlvbnMiLCBsaXN0KTsKIAorICAgIFB5X0lOQ1JFRigoUHlPYmplY3QgKikgJkRpckVudHJ5VHlwZSk7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJEaXJFbnRyeSIsIChQeU9iamVjdCAqKSZEaXJFbnRyeVR5cGUpOworCiAgICAgaW5pdGlhbGl6ZWQgPSAxOwogCiAgICAgcmV0dXJuIG07CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3B3ZG1vZHVsZS5jIGIvTW9kdWxlcy9wd2Rtb2R1bGUuYwppbmRleCA3NDE2Y2Y3Li43ODRlOWQwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3B3ZG1vZHVsZS5jCisrKyBiL01vZHVsZXMvcHdkbW9kdWxlLmMKQEAgLTc1LDEwICs3NSwxOCBAQAogI2RlZmluZSBTRVRTKGksdmFsKSBzZXRzKHYsIGksIHZhbCkKIAogICAgIFNFVFMoc2V0SW5kZXgrKywgcC0+cHdfbmFtZSk7CisjaWYgZGVmaW5lZChIQVZFX1NUUlVDVF9QQVNTV0RfUFdfUEFTU1dEKSAmJiAhZGVmaW5lZChfX0FORFJPSURfXykKICAgICBTRVRTKHNldEluZGV4KyssIHAtPnB3X3Bhc3N3ZCk7CisjZWxzZQorICAgIFNFVFMoc2V0SW5kZXgrKywgIiIpOworI2VuZGlmCiAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCBzZXRJbmRleCsrLCBfUHlMb25nX0Zyb21VaWQocC0+cHdfdWlkKSk7CiAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCBzZXRJbmRleCsrLCBfUHlMb25nX0Zyb21HaWQocC0+cHdfZ2lkKSk7CisjaWYgZGVmaW5lZChIQVZFX1NUUlVDVF9QQVNTV0RfUFdfR0VDT1MpCiAgICAgU0VUUyhzZXRJbmRleCsrLCBwLT5wd19nZWNvcyk7CisjZWxzZQorICAgIFNFVFMoc2V0SW5kZXgrKywgIiIpOworI2VuZGlmCiAgICAgU0VUUyhzZXRJbmRleCsrLCBwLT5wd19kaXIpOwogICAgIFNFVFMoc2V0SW5kZXgrKywgcC0+cHdfc2hlbGwpOwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3B5ZXhwYXQuYyBiL01vZHVsZXMvcHlleHBhdC5jCmluZGV4IDAwYzk2YTEuLmIzMjU5ZDUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvcHlleHBhdC5jCisrKyBiL01vZHVsZXMvcHlleHBhdC5jCkBAIC05MSw3ICs5MSw3IEBACiAgKiBmYWxzZSBvbiBhbiBleGNlcHRpb24uCiAgKi8KIHN0YXRpYyBpbnQKLXNldF9lcnJvcl9hdHRyKFB5T2JqZWN0ICplcnIsIGNoYXIgKm5hbWUsIGludCB2YWx1ZSkKK3NldF9lcnJvcl9hdHRyKFB5T2JqZWN0ICplcnIsIGNvbnN0IGNoYXIgKm5hbWUsIGludCB2YWx1ZSkKIHsKICAgICBQeU9iamVjdCAqdiA9IFB5TG9uZ19Gcm9tTG9uZyh2YWx1ZSk7CiAKQEAgLTIxOCw3ICsyMTgsNyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QqCi1jYWxsX3dpdGhfZnJhbWUoY2hhciAqZnVuY25hbWUsIGludCBsaW5lbm8sIFB5T2JqZWN0KiBmdW5jLCBQeU9iamVjdCogYXJncywKK2NhbGxfd2l0aF9mcmFtZShjb25zdCBjaGFyICpmdW5jbmFtZSwgaW50IGxpbmVubywgUHlPYmplY3QqIGZ1bmMsIFB5T2JqZWN0KiBhcmdzLAogICAgICAgICAgICAgICAgIHhtbHBhcnNlb2JqZWN0ICpzZWxmKQogewogICAgIFB5T2JqZWN0ICpyZXM7CkBAIC03NDcsNyArNzQ3LDggQEAKICAgICAgICAgcyArPSBNQVhfQ0hVTktfU0laRTsKICAgICAgICAgc2xlbiAtPSBNQVhfQ0hVTktfU0laRTsKICAgICB9Ci0gICAgYXNzZXJ0KE1BWF9DSFVOS19TSVpFIDwgSU5UX01BWCAmJiBzbGVuIDwgSU5UX01BWCk7CisgICAgUHlfQlVJTERfQVNTRVJUKE1BWF9DSFVOS19TSVpFIDw9IElOVF9NQVgpOworICAgIGFzc2VydChzbGVuIDw9IElOVF9NQVgpOwogICAgIHJjID0gWE1MX1BhcnNlKHNlbGYtPml0c2VsZiwgcywgKGludClzbGVuLCBpc2ZpbmFsKTsKIAogZG9uZToKQEAgLTc2NSw3ICs3NjYsNyBAQAogewogICAgIFB5T2JqZWN0ICpzdHI7CiAgICAgUHlfc3NpemVfdCBsZW47Ci0gICAgY2hhciAqcHRyOworICAgIGNvbnN0IGNoYXIgKnB0cjsKIAogICAgIHN0ciA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihtZXRoLCAibiIsIGJ1Zl9zaXplKTsKICAgICBpZiAoc3RyID09IE5VTEwpCkBAIC0xMjI1LDEyICsxMjI2LDggQEAKICAgICBzZWxmLT5pdHNlbGYgPSBOVUxMOwogCiAgICAgaWYgKHNlbGYtPmhhbmRsZXJzICE9IE5VTEwpIHsKLSAgICAgICAgUHlPYmplY3QgKnRlbXA7Ci0gICAgICAgIGZvciAoaSA9IDA7IGhhbmRsZXJfaW5mb1tpXS5uYW1lICE9IE5VTEw7IGkrKykgewotICAgICAgICAgICAgdGVtcCA9IHNlbGYtPmhhbmRsZXJzW2ldOwotICAgICAgICAgICAgc2VsZi0+aGFuZGxlcnNbaV0gPSBOVUxMOwotICAgICAgICAgICAgUHlfWERFQ1JFRih0ZW1wKTsKLSAgICAgICAgfQorICAgICAgICBmb3IgKGkgPSAwOyBoYW5kbGVyX2luZm9baV0ubmFtZSAhPSBOVUxMOyBpKyspCisgICAgICAgICAgICBQeV9DTEVBUihzZWxmLT5oYW5kbGVyc1tpXSk7CiAgICAgICAgIFB5TWVtX0ZyZWUoc2VsZi0+aGFuZGxlcnMpOwogICAgICAgICBzZWxmLT5oYW5kbGVycyA9IE5VTEw7CiAgICAgfQpAQCAtMTM0Myw3ICsxMzQwLDYgQEAKICAgICBpbnQgaGFuZGxlcm51bSA9IGhhbmRsZXJuYW1lMmludChuYW1lKTsKICAgICBpZiAoaGFuZGxlcm51bSA+PSAwKSB7CiAgICAgICAgIHhtbGhhbmRsZXIgY19oYW5kbGVyID0gTlVMTDsKLSAgICAgICAgUHlPYmplY3QgKnRlbXAgPSBzZWxmLT5oYW5kbGVyc1toYW5kbGVybnVtXTsKIAogICAgICAgICBpZiAodiA9PSBQeV9Ob25lKSB7CiAgICAgICAgICAgICAvKiBJZiB0aGlzIGlzIHRoZSBjaGFyYWN0ZXIgZGF0YSBoYW5kbGVyLCBhbmQgYSBjaGFyYWN0ZXIKQEAgLTEzNjUsOCArMTM2MSw3IEBACiAgICAgICAgICAgICBQeV9JTkNSRUYodik7CiAgICAgICAgICAgICBjX2hhbmRsZXIgPSBoYW5kbGVyX2luZm9baGFuZGxlcm51bV0uaGFuZGxlcjsKICAgICAgICAgfQotICAgICAgICBzZWxmLT5oYW5kbGVyc1toYW5kbGVybnVtXSA9IHY7Ci0gICAgICAgIFB5X1hERUNSRUYodGVtcCk7CisgICAgICAgIFB5X1hTRVRSRUYoc2VsZi0+aGFuZGxlcnNbaGFuZGxlcm51bV0sIHYpOwogICAgICAgICBoYW5kbGVyX2luZm9baGFuZGxlcm51bV0uc2V0dGVyKHNlbGYtPml0c2VsZiwgY19oYW5kbGVyKTsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQpAQCAtMTcwNSw3ICsxNzAwLDE1IEBACiAgICAgUHlNb2R1bGVfQWRkU3RyaW5nQ29uc3RhbnQobSwgIm5hdGl2ZV9lbmNvZGluZyIsICJVVEYtOCIpOwogCiAgICAgc3lzX21vZHVsZXMgPSBQeVN5c19HZXRPYmplY3QoIm1vZHVsZXMiKTsKKyAgICBpZiAoc3lzX21vZHVsZXMgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYobSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICBkID0gUHlNb2R1bGVfR2V0RGljdChtKTsKKyAgICBpZiAoZCA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihtKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIGVycm9yc19tb2R1bGUgPSBQeURpY3RfR2V0SXRlbShkLCBlcnJtb2RfbmFtZSk7CiAgICAgaWYgKGVycm9yc19tb2R1bGUgPT0gTlVMTCkgewogICAgICAgICBlcnJvcnNfbW9kdWxlID0gUHlNb2R1bGVfTmV3KE1PRFVMRV9OQU1FICIuZXJyb3JzIik7CkBAIC0xNzI2LDkgKzE3MjksMTEgQEAKICAgICAgICAgfQogICAgIH0KICAgICBQeV9ERUNSRUYobW9kZWxtb2RfbmFtZSk7Ci0gICAgaWYgKGVycm9yc19tb2R1bGUgPT0gTlVMTCB8fCBtb2RlbF9tb2R1bGUgPT0gTlVMTCkKKyAgICBpZiAoZXJyb3JzX21vZHVsZSA9PSBOVUxMIHx8IG1vZGVsX21vZHVsZSA9PSBOVUxMKSB7CiAgICAgICAgIC8qIERvbid0IGNvcmUgZHVtcCBsYXRlciEgKi8KKyAgICAgICAgUHlfREVDUkVGKG0pOwogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAKICNpZiBYTUxfQ09NQklORURfVkVSU0lPTiA+IDE5NTA1CiAgICAgewpAQCAtMTg5NiwxNSArMTkwMSwxMiBAQAogY2xlYXJfaGFuZGxlcnMoeG1scGFyc2VvYmplY3QgKnNlbGYsIGludCBpbml0aWFsKQogewogICAgIGludCBpID0gMDsKLSAgICBQeU9iamVjdCAqdGVtcDsKIAogICAgIGZvciAoOyBoYW5kbGVyX2luZm9baV0ubmFtZSAhPSBOVUxMOyBpKyspIHsKICAgICAgICAgaWYgKGluaXRpYWwpCiAgICAgICAgICAgICBzZWxmLT5oYW5kbGVyc1tpXSA9IE5VTEw7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgdGVtcCA9IHNlbGYtPmhhbmRsZXJzW2ldOwotICAgICAgICAgICAgc2VsZi0+aGFuZGxlcnNbaV0gPSBOVUxMOwotICAgICAgICAgICAgUHlfWERFQ1JFRih0ZW1wKTsKKyAgICAgICAgICAgIFB5X0NMRUFSKHNlbGYtPmhhbmRsZXJzW2ldKTsKICAgICAgICAgICAgIGhhbmRsZXJfaW5mb1tpXS5zZXR0ZXIoc2VsZi0+aXRzZWxmLCBOVUxMKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvcmVhZGxpbmUuYyBiL01vZHVsZXMvcmVhZGxpbmUuYwppbmRleCA1NGYxNWJjLi4zYjk0ZDRhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3JlYWRsaW5lLmMKKysrIGIvTW9kdWxlcy9yZWFkbGluZS5jCkBAIC0zNDMsMTAgKzM0Myw4IEBACiAgICAgICAgIFB5X0NMRUFSKCpob29rX3Zhcik7CiAgICAgfQogICAgIGVsc2UgaWYgKFB5Q2FsbGFibGVfQ2hlY2soZnVuY3Rpb24pKSB7Ci0gICAgICAgIFB5T2JqZWN0ICp0bXAgPSAqaG9va192YXI7CiAgICAgICAgIFB5X0lOQ1JFRihmdW5jdGlvbik7Ci0gICAgICAgICpob29rX3ZhciA9IGZ1bmN0aW9uOwotICAgICAgICBQeV9YREVDUkVGKHRtcCk7CisgICAgICAgIFB5X1hTRVRSRUYoKmhvb2tfdmFyLCBmdW5jdGlvbik7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLApAQCAtNjA0LDYgKzYwMiwyNCBAQAogImFkZF9oaXN0b3J5KHN0cmluZykgLT4gTm9uZVxuXAogYWRkIGFuIGl0ZW0gdG8gdGhlIGhpc3RvcnkgYnVmZmVyIik7CiAKK3N0YXRpYyBpbnQgc2hvdWxkX2F1dG9fYWRkX2hpc3RvcnkgPSAxOworCisvKiBFbmFibGUgb3IgZGlzYWJsZSBhdXRvbWF0aWMgaGlzdG9yeSAqLworCitzdGF0aWMgUHlPYmplY3QgKgorcHlfc2V0X2F1dG9faGlzdG9yeShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJwOnNldF9hdXRvX2hpc3RvcnkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmc2hvdWxkX2F1dG9fYWRkX2hpc3RvcnkpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworUHlEb2NfU1RSVkFSKGRvY19zZXRfYXV0b19oaXN0b3J5LAorInNldF9hdXRvX2hpc3RvcnkoZW5hYmxlZCkgLT4gTm9uZVxuXAorRW5hYmxlcyBvciBkaXNhYmxlcyBhdXRvbWF0aWMgaGlzdG9yeS4iKTsKKwogCiAvKiBHZXQgdGhlIHRhYi1jb21wbGV0aW9uIHdvcmQtZGVsaW1pdGVycyB0aGF0IHJlYWRsaW5lIHVzZXMgKi8KIApAQCAtODIyLDYgKzgzOCw3IEBACiAKICAgICB7InNldF9jb21wbGV0ZXJfZGVsaW1zIiwgc2V0X2NvbXBsZXRlcl9kZWxpbXMsCiAgICAgIE1FVEhfTywgZG9jX3NldF9jb21wbGV0ZXJfZGVsaW1zfSwKKyAgICB7InNldF9hdXRvX2hpc3RvcnkiLCBweV9zZXRfYXV0b19oaXN0b3J5LCBNRVRIX1ZBUkFSR1MsIGRvY19zZXRfYXV0b19oaXN0b3J5fSwKICAgICB7ImFkZF9oaXN0b3J5IiwgcHlfYWRkX2hpc3RvcnksIE1FVEhfTywgZG9jX2FkZF9oaXN0b3J5fSwKICAgICB7InJlbW92ZV9oaXN0b3J5X2l0ZW0iLCBweV9yZW1vdmVfaGlzdG9yeSwgTUVUSF9WQVJBUkdTLCBkb2NfcmVtb3ZlX2hpc3Rvcnl9LAogICAgIHsicmVwbGFjZV9oaXN0b3J5X2l0ZW0iLCBweV9yZXBsYWNlX2hpc3RvcnksIE1FVEhfVkFSQVJHUywgZG9jX3JlcGxhY2VfaGlzdG9yeX0sCkBAIC04NTcsNyArODc0LDcgQEAKICAgICAgICAgaWYgKHIgPT0gUHlfTm9uZSkKICAgICAgICAgICAgIHJlc3VsdCA9IDA7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgcmVzdWx0ID0gUHlMb25nX0FzTG9uZyhyKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IF9QeUxvbmdfQXNJbnQocik7CiAgICAgICAgICAgICBpZiAocmVzdWx0ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQpAQCAtMTMyNyw3ICsxMzQ0LDcgQEAKIAogICAgIC8qIHdlIGhhdmUgYSB2YWxpZCBsaW5lICovCiAgICAgbiA9IHN0cmxlbihwKTsKLSAgICBpZiAobiA+IDApIHsKKyAgICBpZiAoc2hvdWxkX2F1dG9fYWRkX2hpc3RvcnkgJiYgbiA+IDApIHsKICAgICAgICAgY29uc3QgY2hhciAqbGluZTsKICAgICAgICAgaW50IGxlbmd0aCA9IF9weV9nZXRfaGlzdG9yeV9sZW5ndGgoKTsKICAgICAgICAgaWYgKGxlbmd0aCA+IDApCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3Jlc291cmNlLmMgYi9Nb2R1bGVzL3Jlc291cmNlLmMKaW5kZXggOTcwZWU4NC4uMTEzYWQ1YyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9yZXNvdXJjZS5jCisrKyBiL01vZHVsZXMvcmVzb3VyY2UuYwpAQCAtMTUyLDEzICsxNTIsMTEgQEAKIHN0YXRpYyBQeU9iamVjdCoKIHJsaW1pdDJweShzdHJ1Y3QgcmxpbWl0IHJsKQogewotI2lmIGRlZmluZWQoSEFWRV9MT05HX0xPTkcpCiAgICAgaWYgKHNpemVvZihybC5ybGltX2N1cikgPiBzaXplb2YobG9uZykpIHsKICAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIkxMIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFBZX0xPTkdfTE9ORykgcmwucmxpbV9jdXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQWV9MT05HX0xPTkcpIHJsLnJsaW1fbWF4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykgcmwucmxpbV9jdXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcpIHJsLnJsaW1fbWF4KTsKICAgICB9Ci0jZW5kaWYKICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgibGwiLCAobG9uZykgcmwucmxpbV9jdXIsIChsb25nKSBybC5ybGltX21heCk7CiB9CiAKQEAgLTQzNiwxMSArNDM0LDkgQEAKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBSTElNSVRfTlBUUyk7CiAjZW5kaWYKIAotI2lmIGRlZmluZWQoSEFWRV9MT05HX0xPTkcpCiAgICAgaWYgKHNpemVvZihSTElNX0lORklOSVRZKSA+IHNpemVvZihsb25nKSkgewotICAgICAgICB2ID0gUHlMb25nX0Zyb21Mb25nTG9uZygoUFlfTE9OR19MT05HKSBSTElNX0lORklOSVRZKTsKKyAgICAgICAgdiA9IFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKGxvbmcgbG9uZykgUkxJTV9JTkZJTklUWSk7CiAgICAgfSBlbHNlCi0jZW5kaWYKICAgICB7CiAgICAgICAgIHYgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpIFJMSU1fSU5GSU5JVFkpOwogICAgIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvc2VsZWN0bW9kdWxlLmMgYi9Nb2R1bGVzL3NlbGVjdG1vZHVsZS5jCmluZGV4IDAwMzI0YTUuLjQ3ZGE0OTMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc2VsZWN0bW9kdWxlLmMKKysrIGIvTW9kdWxlcy9zZWxlY3Rtb2R1bGUuYwpAQCAtNCw2ICs0LDEwIEBACiAgICBoYXZlIGFueSB2YWx1ZSBleGNlcHQgSU5WQUxJRF9TT0NLRVQuCiAqLwogCisjaWYgZGVmaW5lZChIQVZFX1BPTExfSCkgJiYgIWRlZmluZWQoX0dOVV9TT1VSQ0UpCisjZGVmaW5lIF9HTlVfU09VUkNFCisjZW5kaWYKKwogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgPHN0cnVjdG1lbWJlci5oPgogCkBAIC0xNzkzLDcgKzE3OTcsNyBAQAogICovCiAjaWYgIWRlZmluZWQoX19PcGVuQlNEX18pCiAjICAgZGVmaW5lIElERU5UX1RZUEUgIFRfVUlOVFBUUlQKLSMgICBkZWZpbmUgSURFTlRfQ0FTVCAgUHlfaW50cHRyX3QKKyMgICBkZWZpbmUgSURFTlRfQ0FTVCAgaW50cHRyX3QKICMgICBkZWZpbmUgREFUQV9UWVBFICAgVF9JTlRQVFJUCiAjICAgZGVmaW5lIERBVEFfRk1UX1VOSVQgSU5UUFRSVF9GTVRfVU5JVAogIyAgIGRlZmluZSBJREVOVF9Bc1R5cGUgUHlMb25nX0FzVWludHB0cl90CkBAIC0xODQyLDcgKzE4NDYsNyBAQAogICAgIFB5T2JqZWN0ICpwZmQ7CiAgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJpZGVudCIsICJmaWx0ZXIiLCAiZmxhZ3MiLCAiZmZsYWdzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRhdGEiLCAidWRhdGEiLCBOVUxMfTsKLSAgICBzdGF0aWMgY2hhciAqZm10ID0gIk98aEhJIiBEQVRBX0ZNVF9VTklUIFVJTlRQVFJUX0ZNVF9VTklUICI6a2V2ZW50IjsKKyAgICBzdGF0aWMgY29uc3QgY2hhciBmbXRbXSA9ICJPfGhISSIgREFUQV9GTVRfVU5JVCBVSU5UUFRSVF9GTVRfVU5JVCAiOmtldmVudCI7CiAKICAgICBFVl9TRVQoJihzZWxmLT5lKSwgMCwgRVZGSUxUX1JFQUQsIEVWX0FERCwgMCwgMCwgMCk7IC8qIGRlZmF1bHRzICovCiAKQEAgLTE4NzIsNyArMTg3Niw3IEBACiBrcXVldWVfZXZlbnRfcmljaGNvbXBhcmUoa3F1ZXVlX2V2ZW50X09iamVjdCAqcywga3F1ZXVlX2V2ZW50X09iamVjdCAqbywKICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgb3ApCiB7Ci0gICAgUHlfaW50cHRyX3QgcmVzdWx0ID0gMDsKKyAgICBpbnRwdHJfdCByZXN1bHQgPSAwOwogCiAgICAgaWYgKCFrcXVldWVfZXZlbnRfQ2hlY2sobykpIHsKICAgICAgICAgaWYgKG9wID09IFB5X0VRIHx8IG9wID09IFB5X05FKSB7CkBAIC0yMTI3LDcgKzIxMzEsNyBAQAogICAgICAgICBpZiAoX1B5VGltZV9Gcm9tU2Vjb25kc09iamVjdCgmdGltZW91dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RpbWVvdXQsIF9QeVRpbWVfUk9VTkRfQ0VJTElORykgPCAwKSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICJ0aW1lb3V0IGFyZ3VtZW50IG11c3QgYmUgYW4gbnVtYmVyICIKKyAgICAgICAgICAgICAgICAidGltZW91dCBhcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyICIKICAgICAgICAgICAgICAgICAib3IgTm9uZSwgZ290ICUuMjAwcyIsCiAgICAgICAgICAgICAgICAgUHlfVFlQRShvdGltZW91dCktPnRwX25hbWUpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yNDUyLDYgKzI0NTYsMTAgQEAKICNpZmRlZiBQT0xMTVNHCiAgICAgICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFBPTExNU0cpOwogI2VuZGlmCisjaWZkZWYgUE9MTFJESFVQCisgICAgICAgIC8qIEtlcm5lbCAyLjYuMTcrICovCisgICAgICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFBPTExSREhVUCk7CisjZW5kaWYKICAgICB9CiAjZW5kaWYgLyogSEFWRV9QT0xMICovCiAKQEAgLTI0NzMsMTIgKzI0ODEsMTggQEAKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBFUE9MTFBSSSk7CiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRVBPTExFUlIpOwogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEVQT0xMSFVQKTsKKyNpZmRlZiBFUE9MTFJESFVQCisgICAgLyogS2VybmVsIDIuNi4xNyAqLworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEVQT0xMUkRIVVApOworI2VuZGlmCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRVBPTExFVCk7CiAjaWZkZWYgRVBPTExPTkVTSE9UCiAgICAgLyogS2VybmVsIDIuNi4yKyAqLwogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEVQT0xMT05FU0hPVCk7CiAjZW5kaWYKLSAgICAvKiBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiRVBPTExfUkRIVVAiLCBFUE9MTFJESFVQKTsgKi8KKyNpZmRlZiBFUE9MTEVYQ0xVU0lWRQorICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEVQT0xMRVhDTFVTSVZFKTsKKyNlbmRpZgogCiAjaWZkZWYgRVBPTExSRE5PUk0KICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBFUE9MTFJETk9STSk7CkBAIC0yNTE5LDEzICsyNTMzLDIxIEBACiAgICAgLyogZXZlbnQgZmlsdGVycyAqLwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9GSUxURVJfUkVBRCIsIEVWRklMVF9SRUFEKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfRklMVEVSX1dSSVRFIiwgRVZGSUxUX1dSSVRFKTsKKyNpZmRlZiBFVkZJTFRfQUlPCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX0ZJTFRFUl9BSU8iLCBFVkZJTFRfQUlPKTsKKyNlbmRpZgorI2lmZGVmIEVWRklMVF9WTk9ERQogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9GSUxURVJfVk5PREUiLCBFVkZJTFRfVk5PREUpOworI2VuZGlmCisjaWZkZWYgRVZGSUxUX1BST0MKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfRklMVEVSX1BST0MiLCBFVkZJTFRfUFJPQyk7CisjZW5kaWYKICNpZmRlZiBFVkZJTFRfTkVUREVWCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX0ZJTFRFUl9ORVRERVYiLCBFVkZJTFRfTkVUREVWKTsKICNlbmRpZgorI2lmZGVmIEVWRklMVF9TSUdOQUwKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfRklMVEVSX1NJR05BTCIsIEVWRklMVF9TSUdOQUwpOworI2VuZGlmCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX0ZJTFRFUl9USU1FUiIsIEVWRklMVF9USU1FUik7CiAKICAgICAvKiBldmVudCBmbGFncyAqLwpAQCAtMjUzNiwxNiArMjU1OCwyMyBAQAogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9FVl9PTkVTSE9UIiwgRVZfT05FU0hPVCk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX0VWX0NMRUFSIiwgRVZfQ0xFQVIpOwogCisjaWZkZWYgRVZfU1lTRkxBR1MKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfRVZfU1lTRkxBR1MiLCBFVl9TWVNGTEFHUyk7CisjZW5kaWYKKyNpZmRlZiBFVl9GTEFHMQogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9FVl9GTEFHMSIsIEVWX0ZMQUcxKTsKKyNlbmRpZgogCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX0VWX0VPRiIsIEVWX0VPRik7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX0VWX0VSUk9SIiwgRVZfRVJST1IpOwogCiAgICAgLyogUkVBRCBXUklURSBmaWx0ZXIgZmxhZyAqLworI2lmZGVmIE5PVEVfTE9XQVQKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfTk9URV9MT1dBVCIsIE5PVEVfTE9XQVQpOworI2VuZGlmCiAKICAgICAvKiBWTk9ERSBmaWx0ZXIgZmxhZ3MgICovCisjaWZkZWYgRVZGSUxUX1ZOT0RFCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX05PVEVfREVMRVRFIiwgTk9URV9ERUxFVEUpOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9OT1RFX1dSSVRFIiwgTk9URV9XUklURSk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX05PVEVfRVhURU5EIiwgTk9URV9FWFRFTkQpOwpAQCAtMjU1Myw4ICsyNTgyLDEwIEBACiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX05PVEVfTElOSyIsIE5PVEVfTElOSyk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX05PVEVfUkVOQU1FIiwgTk9URV9SRU5BTUUpOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9OT1RFX1JFVk9LRSIsIE5PVEVfUkVWT0tFKTsKKyNlbmRpZgogCiAgICAgLyogUFJPQyBmaWx0ZXIgZmxhZ3MgICovCisjaWZkZWYgRVZGSUxUX1BST0MKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfTk9URV9FWElUIiwgTk9URV9FWElUKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfTk9URV9GT1JLIiwgTk9URV9GT1JLKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfTk9URV9FWEVDIiwgTk9URV9FWEVDKTsKQEAgLTI1NjQsNiArMjU5NSw3IEBACiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX05PVEVfVFJBQ0siLCBOT1RFX1RSQUNLKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfTk9URV9DSElMRCIsIE5PVEVfQ0hJTEQpOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9OT1RFX1RSQUNLRVJSIiwgTk9URV9UUkFDS0VSUik7CisjZW5kaWYKIAogICAgIC8qIE5FVERFViBmaWx0ZXIgZmxhZ3MgKi8KICNpZmRlZiBFVkZJTFRfTkVUREVWCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3NoYTFtb2R1bGUuYyBiL01vZHVsZXMvc2hhMW1vZHVsZS5jCmluZGV4IDZjYjMyZWQuLmQ1MDY1Y2UgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc2hhMW1vZHVsZS5jCisrKyBiL01vZHVsZXMvc2hhMW1vZHVsZS5jCkBAIC0zMCw3ICszMCw3IEBACiAKICNpZiBTSVpFT0ZfSU5UID09IDQKIHR5cGVkZWYgdW5zaWduZWQgaW50IFNIQTFfSU5UMzI7ICAgICAgICAvKiAzMi1iaXQgaW50ZWdlciAqLwotdHlwZWRlZiBQWV9MT05HX0xPTkcgU0hBMV9JTlQ2NDsgICAgICAgIC8qIDY0LWJpdCBpbnRlZ2VyICovCit0eXBlZGVmIGxvbmcgbG9uZyBTSEExX0lOVDY0OyAgICAgICAgLyogNjQtYml0IGludGVnZXIgKi8KICNlbHNlCiAvKiBub3QgZGVmaW5lZC4gY29tcGlsYXRpb24gd2lsbCBkaWUuICovCiAjZW5kaWYKZGlmZiAtLWdpdCBhL01vZHVsZXMvc2hhNTEybW9kdWxlLmMgYi9Nb2R1bGVzL3NoYTUxMm1vZHVsZS5jCmluZGV4IGY5ZmYwZWEuLjE3Nzc1YWU1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3NoYTUxMm1vZHVsZS5jCisrKyBiL01vZHVsZXMvc2hhNTEybW9kdWxlLmMKQEAgLTI3LDE1ICsyNywxMyBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9ODFhM2NjZGU5MmJjZmU4ZF0qLwogCi0jaWZkZWYgUFlfTE9OR19MT05HIC8qIElmIG5vIFBZX0xPTkdfTE9ORywgZG9uJ3QgY29tcGlsZSBhbnl0aGluZyEgKi8KLQogLyogU29tZSB1c2VmdWwgdHlwZXMgKi8KIAogdHlwZWRlZiB1bnNpZ25lZCBjaGFyIFNIQV9CWVRFOwogCiAjaWYgU0laRU9GX0lOVCA9PSA0CiB0eXBlZGVmIHVuc2lnbmVkIGludCBTSEFfSU5UMzI7IC8qIDMyLWJpdCBpbnRlZ2VyICovCi10eXBlZGVmIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBTSEFfSU5UNjQ7ICAgICAgICAvKiA2NC1iaXQgaW50ZWdlciAqLwordHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgU0hBX0lOVDY0OyAgICAgICAgLyogNjQtYml0IGludGVnZXIgKi8KICNlbHNlCiAvKiBub3QgZGVmaW5lZC4gY29tcGlsYXRpb24gd2lsbCBkaWUuICovCiAjZW5kaWYKQEAgLTEyMSwxMiArMTE5LDEyIEBACiAKIC8qIFZhcmlvdXMgbG9naWNhbCBmdW5jdGlvbnMgKi8KICNkZWZpbmUgUk9SNjQoeCwgeSkgXAotICAgICggKCgoKHgpICYgUHlfVUxMKDB4RkZGRkZGRkZGRkZGRkZGRikpPj4oKHVuc2lnbmVkIFBZX0xPTkdfTE9ORykoeSkgJiA2MykpIHwgXAotICAgICAgKCh4KTw8KCh1bnNpZ25lZCBQWV9MT05HX0xPTkcpKDY0LSgoeSkgJiA2MykpKSkpICYgUHlfVUxMKDB4RkZGRkZGRkZGRkZGRkZGRikpCisgICAgKCAoKCgoeCkgJiAweEZGRkZGRkZGRkZGRkZGRkZVTEwpPj4oKHVuc2lnbmVkIGxvbmcgbG9uZykoeSkgJiA2MykpIHwgXAorICAgICAgKCh4KTw8KCh1bnNpZ25lZCBsb25nIGxvbmcpKDY0LSgoeSkgJiA2MykpKSkpICYgMHhGRkZGRkZGRkZGRkZGRkZGVUxMKQogI2RlZmluZSBDaCh4LHkseikgICAgICAgKHogXiAoeCAmICh5IF4geikpKQogI2RlZmluZSBNYWooeCx5LHopICAgICAgKCgoeCB8IHkpICYgeikgfCAoeCAmIHkpKQogI2RlZmluZSBTKHgsIG4pICAgICAgICAgUk9SNjQoKHgpLChuKSkKLSNkZWZpbmUgUih4LCBuKSAgICAgICAgICgoKHgpICYgUHlfVUxMKDB4RkZGRkZGRkZGRkZGRkZGRikpID4+ICgodW5zaWduZWQgUFlfTE9OR19MT05HKW4pKQorI2RlZmluZSBSKHgsIG4pICAgICAgICAgKCgoeCkgJiAweEZGRkZGRkZGRkZGRkZGRkZVTEwpID4+ICgodW5zaWduZWQgbG9uZyBsb25nKW4pKQogI2RlZmluZSBTaWdtYTAoeCkgICAgICAgKFMoeCwgMjgpIF4gUyh4LCAzNCkgXiBTKHgsIDM5KSkKICNkZWZpbmUgU2lnbWExKHgpICAgICAgIChTKHgsIDE0KSBeIFMoeCwgMTgpIF4gUyh4LCA0MSkpCiAjZGVmaW5lIEdhbW1hMCh4KSAgICAgICAoUyh4LCAxKSBeIFMoeCwgOCkgXiBSKHgsIDcpKQpAQCAtMTU4LDg2ICsxNTYsODYgQEAKICAgICAgZCArPSB0MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBoICA9IHQwICsgdDE7CiAKLSAgICBSTkQoU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLDAsUHlfVUxMKDB4NDI4YTJmOThkNzI4YWUyMikpOwotICAgIFJORChTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sMSxQeV9VTEwoMHg3MTM3NDQ5MTIzZWY2NWNkKSk7Ci0gICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSwyLFB5X1VMTCgweGI1YzBmYmNmZWM0ZDNiMmYpKTsKLSAgICBSTkQoU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLDMsUHlfVUxMKDB4ZTliNWRiYTU4MTg5ZGJiYykpOwotICAgIFJORChTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sNCxQeV9VTEwoMHgzOTU2YzI1YmYzNDhiNTM4KSk7Ci0gICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSw1LFB5X1VMTCgweDU5ZjExMWYxYjYwNWQwMTkpKTsKLSAgICBSTkQoU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLDYsUHlfVUxMKDB4OTIzZjgyYTRhZjE5NGY5YikpOwotICAgIFJORChTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sNyxQeV9VTEwoMHhhYjFjNWVkNWRhNmQ4MTE4KSk7Ci0gICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSw4LFB5X1VMTCgweGQ4MDdhYTk4YTMwMzAyNDIpKTsKLSAgICBSTkQoU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLDksUHlfVUxMKDB4MTI4MzViMDE0NTcwNmZiZSkpOwotICAgIFJORChTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sMTAsUHlfVUxMKDB4MjQzMTg1YmU0ZWU0YjI4YykpOwotICAgIFJORChTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sMTEsUHlfVUxMKDB4NTUwYzdkYzNkNWZmYjRlMikpOwotICAgIFJORChTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sMTIsUHlfVUxMKDB4NzJiZTVkNzRmMjdiODk2ZikpOwotICAgIFJORChTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sMTMsUHlfVUxMKDB4ODBkZWIxZmUzYjE2OTZiMSkpOwotICAgIFJORChTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sMTQsUHlfVUxMKDB4OWJkYzA2YTcyNWM3MTIzNSkpOwotICAgIFJORChTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sMTUsUHlfVUxMKDB4YzE5YmYxNzRjZjY5MjY5NCkpOwotICAgIFJORChTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sMTYsUHlfVUxMKDB4ZTQ5YjY5YzE5ZWYxNGFkMikpOwotICAgIFJORChTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sMTcsUHlfVUxMKDB4ZWZiZTQ3ODYzODRmMjVlMykpOwotICAgIFJORChTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sMTgsUHlfVUxMKDB4MGZjMTlkYzY4YjhjZDViNSkpOwotICAgIFJORChTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sMTksUHlfVUxMKDB4MjQwY2ExY2M3N2FjOWM2NSkpOwotICAgIFJORChTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sMjAsUHlfVUxMKDB4MmRlOTJjNmY1OTJiMDI3NSkpOwotICAgIFJORChTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sMjEsUHlfVUxMKDB4NGE3NDg0YWE2ZWE2ZTQ4MykpOwotICAgIFJORChTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sMjIsUHlfVUxMKDB4NWNiMGE5ZGNiZDQxZmJkNCkpOwotICAgIFJORChTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sMjMsUHlfVUxMKDB4NzZmOTg4ZGE4MzExNTNiNSkpOwotICAgIFJORChTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sMjQsUHlfVUxMKDB4OTgzZTUxNTJlZTY2ZGZhYikpOwotICAgIFJORChTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sMjUsUHlfVUxMKDB4YTgzMWM2NmQyZGI0MzIxMCkpOwotICAgIFJORChTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sMjYsUHlfVUxMKDB4YjAwMzI3Yzg5OGZiMjEzZikpOwotICAgIFJORChTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sMjcsUHlfVUxMKDB4YmY1OTdmYzdiZWVmMGVlNCkpOwotICAgIFJORChTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sMjgsUHlfVUxMKDB4YzZlMDBiZjMzZGE4OGZjMikpOwotICAgIFJORChTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sMjksUHlfVUxMKDB4ZDVhNzkxNDc5MzBhYTcyNSkpOwotICAgIFJORChTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sMzAsUHlfVUxMKDB4MDZjYTYzNTFlMDAzODI2ZikpOwotICAgIFJORChTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sMzEsUHlfVUxMKDB4MTQyOTI5NjcwYTBlNmU3MCkpOwotICAgIFJORChTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sMzIsUHlfVUxMKDB4MjdiNzBhODU0NmQyMmZmYykpOwotICAgIFJORChTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sMzMsUHlfVUxMKDB4MmUxYjIxMzg1YzI2YzkyNikpOwotICAgIFJORChTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sMzQsUHlfVUxMKDB4NGQyYzZkZmM1YWM0MmFlZCkpOwotICAgIFJORChTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sMzUsUHlfVUxMKDB4NTMzODBkMTM5ZDk1YjNkZikpOwotICAgIFJORChTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sMzYsUHlfVUxMKDB4NjUwYTczNTQ4YmFmNjNkZSkpOwotICAgIFJORChTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sMzcsUHlfVUxMKDB4NzY2YTBhYmIzYzc3YjJhOCkpOwotICAgIFJORChTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sMzgsUHlfVUxMKDB4ODFjMmM5MmU0N2VkYWVlNikpOwotICAgIFJORChTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sMzksUHlfVUxMKDB4OTI3MjJjODUxNDgyMzUzYikpOwotICAgIFJORChTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sNDAsUHlfVUxMKDB4YTJiZmU4YTE0Y2YxMDM2NCkpOwotICAgIFJORChTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sNDEsUHlfVUxMKDB4YTgxYTY2NGJiYzQyMzAwMSkpOwotICAgIFJORChTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sNDIsUHlfVUxMKDB4YzI0YjhiNzBkMGY4OTc5MSkpOwotICAgIFJORChTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sNDMsUHlfVUxMKDB4Yzc2YzUxYTMwNjU0YmUzMCkpOwotICAgIFJORChTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sNDQsUHlfVUxMKDB4ZDE5MmU4MTlkNmVmNTIxOCkpOwotICAgIFJORChTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sNDUsUHlfVUxMKDB4ZDY5OTA2MjQ1NTY1YTkxMCkpOwotICAgIFJORChTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sNDYsUHlfVUxMKDB4ZjQwZTM1ODU1NzcxMjAyYSkpOwotICAgIFJORChTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sNDcsUHlfVUxMKDB4MTA2YWEwNzAzMmJiZDFiOCkpOwotICAgIFJORChTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sNDgsUHlfVUxMKDB4MTlhNGMxMTZiOGQyZDBjOCkpOwotICAgIFJORChTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sNDksUHlfVUxMKDB4MWUzNzZjMDg1MTQxYWI1MykpOwotICAgIFJORChTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sNTAsUHlfVUxMKDB4Mjc0ODc3NGNkZjhlZWI5OSkpOwotICAgIFJORChTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sNTEsUHlfVUxMKDB4MzRiMGJjYjVlMTliNDhhOCkpOwotICAgIFJORChTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sNTIsUHlfVUxMKDB4MzkxYzBjYjNjNWM5NWE2MykpOwotICAgIFJORChTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sNTMsUHlfVUxMKDB4NGVkOGFhNGFlMzQxOGFjYikpOwotICAgIFJORChTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sNTQsUHlfVUxMKDB4NWI5Y2NhNGY3NzYzZTM3MykpOwotICAgIFJORChTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sNTUsUHlfVUxMKDB4NjgyZTZmZjNkNmIyYjhhMykpOwotICAgIFJORChTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sNTYsUHlfVUxMKDB4NzQ4ZjgyZWU1ZGVmYjJmYykpOwotICAgIFJORChTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sNTcsUHlfVUxMKDB4NzhhNTYzNmY0MzE3MmY2MCkpOwotICAgIFJORChTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sNTgsUHlfVUxMKDB4ODRjODc4MTRhMWYwYWI3MikpOwotICAgIFJORChTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sNTksUHlfVUxMKDB4OGNjNzAyMDgxYTY0MzllYykpOwotICAgIFJORChTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sNjAsUHlfVUxMKDB4OTBiZWZmZmEyMzYzMWUyOCkpOwotICAgIFJORChTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sNjEsUHlfVUxMKDB4YTQ1MDZjZWJkZTgyYmRlOSkpOwotICAgIFJORChTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sNjIsUHlfVUxMKDB4YmVmOWEzZjdiMmM2NzkxNSkpOwotICAgIFJORChTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sNjMsUHlfVUxMKDB4YzY3MTc4ZjJlMzcyNTMyYikpOwotICAgIFJORChTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sNjQsUHlfVUxMKDB4Y2EyNzNlY2VlYTI2NjE5YykpOwotICAgIFJORChTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sNjUsUHlfVUxMKDB4ZDE4NmI4YzcyMWMwYzIwNykpOwotICAgIFJORChTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sNjYsUHlfVUxMKDB4ZWFkYTdkZDZjZGUwZWIxZSkpOwotICAgIFJORChTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sNjcsUHlfVUxMKDB4ZjU3ZDRmN2ZlZTZlZDE3OCkpOwotICAgIFJORChTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sNjgsUHlfVUxMKDB4MDZmMDY3YWE3MjE3NmZiYSkpOwotICAgIFJORChTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sNjksUHlfVUxMKDB4MGE2MzdkYzVhMmM4OThhNikpOwotICAgIFJORChTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sNzAsUHlfVUxMKDB4MTEzZjk4MDRiZWY5MGRhZSkpOwotICAgIFJORChTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sNzEsUHlfVUxMKDB4MWI3MTBiMzUxMzFjNDcxYikpOwotICAgIFJORChTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sNzIsUHlfVUxMKDB4MjhkYjc3ZjUyMzA0N2Q4NCkpOwotICAgIFJORChTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sNzMsUHlfVUxMKDB4MzJjYWFiN2I0MGM3MjQ5MykpOwotICAgIFJORChTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sNzQsUHlfVUxMKDB4M2M5ZWJlMGExNWM5YmViYykpOwotICAgIFJORChTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sNzUsUHlfVUxMKDB4NDMxZDY3YzQ5YzEwMGQ0YykpOwotICAgIFJORChTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sNzYsUHlfVUxMKDB4NGNjNWQ0YmVjYjNlNDJiNikpOwotICAgIFJORChTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sNzcsUHlfVUxMKDB4NTk3ZjI5OWNmYzY1N2UyYSkpOwotICAgIFJORChTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sNzgsUHlfVUxMKDB4NWZjYjZmYWIzYWQ2ZmFlYykpOwotICAgIFJORChTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sNzksUHlfVUxMKDB4NmM0NDE5OGM0YTQ3NTgxNykpOworICAgIFJORChTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sMCwweDQyOGEyZjk4ZDcyOGFlMjJVTEwpOworICAgIFJORChTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sMSwweDcxMzc0NDkxMjNlZjY1Y2RVTEwpOworICAgIFJORChTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sMiwweGI1YzBmYmNmZWM0ZDNiMmZVTEwpOworICAgIFJORChTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sMywweGU5YjVkYmE1ODE4OWRiYmNVTEwpOworICAgIFJORChTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sNCwweDM5NTZjMjViZjM0OGI1MzhVTEwpOworICAgIFJORChTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sNSwweDU5ZjExMWYxYjYwNWQwMTlVTEwpOworICAgIFJORChTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sNiwweDkyM2Y4MmE0YWYxOTRmOWJVTEwpOworICAgIFJORChTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sNywweGFiMWM1ZWQ1ZGE2ZDgxMThVTEwpOworICAgIFJORChTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sOCwweGQ4MDdhYTk4YTMwMzAyNDJVTEwpOworICAgIFJORChTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sOSwweDEyODM1YjAxNDU3MDZmYmVVTEwpOworICAgIFJORChTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sMTAsMHgyNDMxODViZTRlZTRiMjhjVUxMKTsKKyAgICBSTkQoU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLDExLDB4NTUwYzdkYzNkNWZmYjRlMlVMTCk7CisgICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSwxMiwweDcyYmU1ZDc0ZjI3Yjg5NmZVTEwpOworICAgIFJORChTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sMTMsMHg4MGRlYjFmZTNiMTY5NmIxVUxMKTsKKyAgICBSTkQoU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLDE0LDB4OWJkYzA2YTcyNWM3MTIzNVVMTCk7CisgICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSwxNSwweGMxOWJmMTc0Y2Y2OTI2OTRVTEwpOworICAgIFJORChTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sMTYsMHhlNDliNjljMTllZjE0YWQyVUxMKTsKKyAgICBSTkQoU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLDE3LDB4ZWZiZTQ3ODYzODRmMjVlM1VMTCk7CisgICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSwxOCwweDBmYzE5ZGM2OGI4Y2Q1YjVVTEwpOworICAgIFJORChTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sMTksMHgyNDBjYTFjYzc3YWM5YzY1VUxMKTsKKyAgICBSTkQoU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLDIwLDB4MmRlOTJjNmY1OTJiMDI3NVVMTCk7CisgICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSwyMSwweDRhNzQ4NGFhNmVhNmU0ODNVTEwpOworICAgIFJORChTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sMjIsMHg1Y2IwYTlkY2JkNDFmYmQ0VUxMKTsKKyAgICBSTkQoU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLDIzLDB4NzZmOTg4ZGE4MzExNTNiNVVMTCk7CisgICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSwyNCwweDk4M2U1MTUyZWU2NmRmYWJVTEwpOworICAgIFJORChTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sMjUsMHhhODMxYzY2ZDJkYjQzMjEwVUxMKTsKKyAgICBSTkQoU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLDI2LDB4YjAwMzI3Yzg5OGZiMjEzZlVMTCk7CisgICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSwyNywweGJmNTk3ZmM3YmVlZjBlZTRVTEwpOworICAgIFJORChTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sMjgsMHhjNmUwMGJmMzNkYTg4ZmMyVUxMKTsKKyAgICBSTkQoU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLDI5LDB4ZDVhNzkxNDc5MzBhYTcyNVVMTCk7CisgICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSwzMCwweDA2Y2E2MzUxZTAwMzgyNmZVTEwpOworICAgIFJORChTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sMzEsMHgxNDI5Mjk2NzBhMGU2ZTcwVUxMKTsKKyAgICBSTkQoU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLDMyLDB4MjdiNzBhODU0NmQyMmZmY1VMTCk7CisgICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSwzMywweDJlMWIyMTM4NWMyNmM5MjZVTEwpOworICAgIFJORChTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sMzQsMHg0ZDJjNmRmYzVhYzQyYWVkVUxMKTsKKyAgICBSTkQoU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLDM1LDB4NTMzODBkMTM5ZDk1YjNkZlVMTCk7CisgICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSwzNiwweDY1MGE3MzU0OGJhZjYzZGVVTEwpOworICAgIFJORChTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sMzcsMHg3NjZhMGFiYjNjNzdiMmE4VUxMKTsKKyAgICBSTkQoU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLDM4LDB4ODFjMmM5MmU0N2VkYWVlNlVMTCk7CisgICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSwzOSwweDkyNzIyYzg1MTQ4MjM1M2JVTEwpOworICAgIFJORChTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sNDAsMHhhMmJmZThhMTRjZjEwMzY0VUxMKTsKKyAgICBSTkQoU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLDQxLDB4YTgxYTY2NGJiYzQyMzAwMVVMTCk7CisgICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSw0MiwweGMyNGI4YjcwZDBmODk3OTFVTEwpOworICAgIFJORChTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sNDMsMHhjNzZjNTFhMzA2NTRiZTMwVUxMKTsKKyAgICBSTkQoU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLDQ0LDB4ZDE5MmU4MTlkNmVmNTIxOFVMTCk7CisgICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSw0NSwweGQ2OTkwNjI0NTU2NWE5MTBVTEwpOworICAgIFJORChTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sNDYsMHhmNDBlMzU4NTU3NzEyMDJhVUxMKTsKKyAgICBSTkQoU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLDQ3LDB4MTA2YWEwNzAzMmJiZDFiOFVMTCk7CisgICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSw0OCwweDE5YTRjMTE2YjhkMmQwYzhVTEwpOworICAgIFJORChTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sNDksMHgxZTM3NmMwODUxNDFhYjUzVUxMKTsKKyAgICBSTkQoU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLDUwLDB4Mjc0ODc3NGNkZjhlZWI5OVVMTCk7CisgICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSw1MSwweDM0YjBiY2I1ZTE5YjQ4YThVTEwpOworICAgIFJORChTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sNTIsMHgzOTFjMGNiM2M1Yzk1YTYzVUxMKTsKKyAgICBSTkQoU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLDUzLDB4NGVkOGFhNGFlMzQxOGFjYlVMTCk7CisgICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSw1NCwweDViOWNjYTRmNzc2M2UzNzNVTEwpOworICAgIFJORChTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sNTUsMHg2ODJlNmZmM2Q2YjJiOGEzVUxMKTsKKyAgICBSTkQoU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLDU2LDB4NzQ4ZjgyZWU1ZGVmYjJmY1VMTCk7CisgICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSw1NywweDc4YTU2MzZmNDMxNzJmNjBVTEwpOworICAgIFJORChTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sNTgsMHg4NGM4NzgxNGExZjBhYjcyVUxMKTsKKyAgICBSTkQoU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLDU5LDB4OGNjNzAyMDgxYTY0MzllY1VMTCk7CisgICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSw2MCwweDkwYmVmZmZhMjM2MzFlMjhVTEwpOworICAgIFJORChTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sNjEsMHhhNDUwNmNlYmRlODJiZGU5VUxMKTsKKyAgICBSTkQoU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLDYyLDB4YmVmOWEzZjdiMmM2NzkxNVVMTCk7CisgICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSw2MywweGM2NzE3OGYyZTM3MjUzMmJVTEwpOworICAgIFJORChTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sNjQsMHhjYTI3M2VjZWVhMjY2MTljVUxMKTsKKyAgICBSTkQoU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLDY1LDB4ZDE4NmI4YzcyMWMwYzIwN1VMTCk7CisgICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSw2NiwweGVhZGE3ZGQ2Y2RlMGViMWVVTEwpOworICAgIFJORChTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sNjcsMHhmNTdkNGY3ZmVlNmVkMTc4VUxMKTsKKyAgICBSTkQoU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLDY4LDB4MDZmMDY3YWE3MjE3NmZiYVVMTCk7CisgICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSw2OSwweDBhNjM3ZGM1YTJjODk4YTZVTEwpOworICAgIFJORChTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sNzAsMHgxMTNmOTgwNGJlZjkwZGFlVUxMKTsKKyAgICBSTkQoU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLDcxLDB4MWI3MTBiMzUxMzFjNDcxYlVMTCk7CisgICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSw3MiwweDI4ZGI3N2Y1MjMwNDdkODRVTEwpOworICAgIFJORChTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sNzMsMHgzMmNhYWI3YjQwYzcyNDkzVUxMKTsKKyAgICBSTkQoU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLDc0LDB4M2M5ZWJlMGExNWM5YmViY1VMTCk7CisgICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSw3NSwweDQzMWQ2N2M0OWMxMDBkNGNVTEwpOworICAgIFJORChTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sNzYsMHg0Y2M1ZDRiZWNiM2U0MmI2VUxMKTsKKyAgICBSTkQoU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLDc3LDB4NTk3ZjI5OWNmYzY1N2UyYVVMTCk7CisgICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSw3OCwweDVmY2I2ZmFiM2FkNmZhZWNVTEwpOworICAgIFJORChTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sNzksMHg2YzQ0MTk4YzRhNDc1ODE3VUxMKTsKIAogI3VuZGVmIFJORAogCkBAIC04MDMsNSArODAxLDMgQEAKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIlNIQTUxMlR5cGUiLCAoUHlPYmplY3QgKikmU0hBNTEydHlwZSk7CiAgICAgcmV0dXJuIG07CiB9Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zaWduYWxtb2R1bGUuYyBiL01vZHVsZXMvc2lnbmFsbW9kdWxlLmMKaW5kZXggNzUzZDk4Ny4uZTI3MDc1YiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zaWduYWxtb2R1bGUuYworKysgYi9Nb2R1bGVzL3NpZ25hbG1vZHVsZS5jCkBAIC0xOTgsNyArMTk4LDcgQEAKIHJlcG9ydF93YWtldXBfd3JpdGVfZXJyb3Iodm9pZCAqZGF0YSkKIHsKICAgICBpbnQgc2F2ZV9lcnJubyA9IGVycm5vOwotICAgIGVycm5vID0gKGludCkgKFB5X2ludHB0cl90KSBkYXRhOworICAgIGVycm5vID0gKGludCkgKGludHB0cl90KSBkYXRhOwogICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICBQeVN5c19Xcml0ZVN0ZGVycigiRXhjZXB0aW9uIGlnbm9yZWQgd2hlbiB0cnlpbmcgdG8gd3JpdGUgdG8gdGhlICIKICAgICAgICAgICAgICAgICAgICAgICAic2lnbmFsIHdha2V1cCBmZDpcbiIpOwpAQCAtMjc3LDcgKzI3Nyw3IEBACiAKICAgICAgICAgICAgIGlmIChyYyA8IDApIHsKICAgICAgICAgICAgICAgICBQeV9BZGRQZW5kaW5nQ2FsbChyZXBvcnRfd2FrZXVwX3dyaXRlX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopKFB5X2ludHB0cl90KWVycm5vKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCAqKShpbnRwdHJfdCllcnJubyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC01NzksNyArNTc5LDcgQEAKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZmQgPSAoaW50KXNvY2tmZDsKLSAgICAgICAgICAgIGlmICgoU09DS0VUX1QpZmQgIT0gc29ja2ZkIHx8ICFfUHlWZXJpZnlfZmQoZmQpKSB7CisgICAgICAgICAgICBpZiAoKFNPQ0tFVF9UKWZkICE9IHNvY2tmZCkgewogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiaW52YWxpZCBmZCIpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQpAQCAtNjA5LDExICs2MDksNiBAQAogICAgIGlmIChmZCAhPSAtMSkgewogICAgICAgICBpbnQgYmxvY2tpbmc7CiAKLSAgICAgICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImludmFsaWQgZmQiKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0KICAgICAgICAgaWYgKF9QeV9mc3RhdChmZCwgJnN0YXR1cykgIT0gMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC0xMjcxLDIxMCArMTI2NiwxNjkgQEAKICAgICB9CiAKICNpZmRlZiBTSUdIVVAKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR0hVUCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR0hVUCIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR0hVUCkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdJTlQKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR0lOVCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR0lOVCIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR0lOVCkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdCUkVBSwotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHQlJFQUspOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdCUkVBSyIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR0JSRUFLKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1FVSVQKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1FVSVQpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdRVUlUIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHUVVJVCkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdJTEwKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR0lMTCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR0lMTCIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR0lMTCkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdUUkFQCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdUUkFQKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHVFJBUCIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1RSQVApKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHSU9UCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdJT1QpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdJT1QiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdJT1QpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHQUJSVAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHQUJSVCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR0FCUlQiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdBQlJUKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR0VNVAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHRU1UKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHRU1UIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHRU1UKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR0ZQRQotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHRlBFKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHRlBFIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHRlBFKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR0tJTEwKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR0tJTEwpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdLSUxMIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHS0lMTCkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdCVVMKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR0JVUyk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR0JVUyIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR0JVUykpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdTRUdWCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdTRUdWKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHU0VHViIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1NFR1YpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHU1lTCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdTWVMpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdTWVMiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdTWVMpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHUElQRQotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHUElQRSk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1BJUEUiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdQSVBFKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR0FMUk0KLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR0FMUk0pOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdBTFJNIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHQUxSTSkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdURVJNCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdURVJNKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHVEVSTSIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1RFUk0pKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHVVNSMQotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHVVNSMSk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1VTUjEiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdVU1IxKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1VTUjIKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1VTUjIpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdVU1IyIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHVVNSMikpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdDTEQKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR0NMRCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR0NMRCIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR0NMRCkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdDSExECi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdDSExEKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHQ0hMRCIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR0NITEQpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHUFdSCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdQV1IpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdQV1IiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdQV1IpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHSU8KLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR0lPKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHSU8iLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdJTykpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdVUkcKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1VSRyk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1VSRyIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1VSRykpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdXSU5DSAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHV0lOQ0gpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdXSU5DSCIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1dJTkNIKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1BPTEwKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1BPTEwpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdQT0xMIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHUE9MTCkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdTVE9QCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdTVE9QKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHU1RPUCIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1NUT1ApKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHVFNUUAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHVFNUUCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1RTVFAiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdUU1RQKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR0NPTlQKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR0NPTlQpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdDT05UIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHQ09OVCkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdUVElOCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdUVElOKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHVFRJTiIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1RUSU4pKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHVFRPVQotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHVFRPVSk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1RUT1UiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdUVE9VKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1ZUQUxSTQotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHVlRBTFJNKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHVlRBTFJNIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHVlRBTFJNKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1BST0YKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1BST0YpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdQUk9GIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHUFJPRikpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdYQ1BVCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdYQ1BVKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHWENQVSIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1hDUFUpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHWEZTWgotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHWEZTWik7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1hGU1oiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdYRlNaKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1JUTUlOCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdSVE1JTik7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1JUTUlOIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHUlRNSU4pKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHUlRNQVgKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1JUTUFYKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHUlRNQVgiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdSVE1BWCkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdJTkZPCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdJTkZPKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHSU5GTyIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR0lORk8pKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAKICNpZmRlZiBJVElNRVJfUkVBTAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoSVRJTUVSX1JFQUwpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJJVElNRVJfUkVBTCIsIHgpOwotICAgIFB5X0RFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgSVRJTUVSX1JFQUwpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgSVRJTUVSX1ZJUlRVQUwKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKElUSU1FUl9WSVJUVUFMKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiSVRJTUVSX1ZJUlRVQUwiLCB4KTsKLSAgICBQeV9ERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElUSU1FUl9WSVJUVUFMKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIElUSU1FUl9QUk9GCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhJVElNRVJfUFJPRik7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIklUSU1FUl9QUk9GIiwgeCk7Ci0gICAgUHlfREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBJVElNRVJfUFJPRikpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKIAogI2lmIGRlZmluZWQgKEhBVkVfU0VUSVRJTUVSKSB8fCBkZWZpbmVkIChIQVZFX0dFVElUSU1FUikKQEAgLTE0ODUsMTUgKzE0MzksMTMgQEAKICNlbmRpZgogCiAjaWZkZWYgQ1RSTF9DX0VWRU5UCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhDVFJMX0NfRVZFTlQpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJDVFJMX0NfRVZFTlQiLCB4KTsKLSAgICBQeV9ERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENUUkxfQ19FVkVOVCkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKIAogI2lmZGVmIENUUkxfQlJFQUtfRVZFTlQKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKENUUkxfQlJFQUtfRVZFTlQpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJDVFJMX0JSRUFLX0VWRU5UIiwgeCk7Ci0gICAgUHlfREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDVFJMX0JSRUFLX0VWRU5UKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogCiAjaWZkZWYgTVNfV0lORE9XUwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zb2NrZXRtb2R1bGUuYyBiL01vZHVsZXMvc29ja2V0bW9kdWxlLmMKaW5kZXggYWY2Y2M5NC4uZjRlZGMwNiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zb2NrZXRtb2R1bGUuYworKysgYi9Nb2R1bGVzL3NvY2tldG1vZHVsZS5jCkBAIC0xMzYsNyArMTM2LDcgQEAKIHNlbmQoZGF0YVssIGZsYWdzXSkgLS0gc2VuZCBkYXRhLCBtYXkgbm90IHNlbmQgYWxsIG9mIGl0XG5cCiBzZW5kdG8oZGF0YVssIGZsYWdzXSwgYWRkcikgLS0gc2VuZCBkYXRhIHRvIGEgZ2l2ZW4gYWRkcmVzc1xuXAogc2V0YmxvY2tpbmcoMCB8IDEpIC0tIHNldCBvciBjbGVhciB0aGUgYmxvY2tpbmcgSS9PIGZsYWdcblwKLXNldHNvY2tvcHQobGV2ZWwsIG9wdG5hbWUsIHZhbHVlKSAtLSBzZXQgc29ja2V0IG9wdGlvbnNcblwKK3NldHNvY2tvcHQobGV2ZWwsIG9wdG5hbWUsIHZhbHVlWywgb3B0bGVuXSkgLS0gc2V0IHNvY2tldCBvcHRpb25zXG5cCiBzZXR0aW1lb3V0KE5vbmUgfCBmbG9hdCkgLS0gc2V0IG9yIGNsZWFyIHRoZSB0aW1lb3V0XG5cCiBzaHV0ZG93bihob3cpIC0tIHNodXQgZG93biB0cmFmZmljIGluIG9uZSBvciBib3RoIGRpcmVjdGlvbnNcblwKIGlmX25hbWVpbmRleCgpIC0tIHJldHVybiBhbGwgbmV0d29yayBpbnRlcmZhY2UgaW5kaWNlcyBhbmQgbmFtZXNcblwKQEAgLTE1Myw3ICsxNTMsNyBAQAogICAgT24gdGhlIG90aGVyIGhhbmQsIG5vdCBhbGwgTGludXggdmVyc2lvbnMgYWdyZWUsIHNvIHRoZXJlIHRoZSBzZXR0aW5ncwogICAgY29tcHV0ZWQgYnkgdGhlIGNvbmZpZ3VyZSBzY3JpcHQgYXJlIG5lZWRlZCEgKi8KIAotI2lmbmRlZiBsaW51eAorI2lmbmRlZiBfX2xpbnV4X18KICMgdW5kZWYgSEFWRV9HRVRIT1NUQllOQU1FX1JfM19BUkcKICMgdW5kZWYgSEFWRV9HRVRIT1NUQllOQU1FX1JfNV9BUkcKICMgdW5kZWYgSEFWRV9HRVRIT1NUQllOQU1FX1JfNl9BUkcKQEAgLTE2Myw3ICsxNjMsMTEgQEAKICMgaW5jbHVkZSA8c3lzL3Vpby5oPgogI2VuZGlmCiAKLSNpZm5kZWYgV0lUSF9USFJFQUQKKyNpZiAhZGVmaW5lZChXSVRIX1RIUkVBRCkKKyMgdW5kZWYgSEFWRV9HRVRIT1NUQllOQU1FX1IKKyNlbmRpZgorCisjaWYgZGVmaW5lZChfX0FORFJPSURfXykgJiYgX19BTkRST0lEX0FQSV9fIDwgMjMKICMgdW5kZWYgSEFWRV9HRVRIT1NUQllOQU1FX1IKICNlbmRpZgogCkBAIC0xNzIsNyArMTc2LDcgQEAKICMgIGRlZmluZSBIQVZFX0dFVEhPU1RCWU5BTUVfUl8zX0FSRwogIyBlbGlmIGRlZmluZWQoX19zdW4pIHx8IGRlZmluZWQoX19zZ2kpCiAjICBkZWZpbmUgSEFWRV9HRVRIT1NUQllOQU1FX1JfNV9BUkcKLSMgZWxpZiBkZWZpbmVkKGxpbnV4KQorIyBlbGlmIGRlZmluZWQoX19saW51eF9fKQogLyogUmVseSBvbiB0aGUgY29uZmlndXJlIHNjcmlwdCAqLwogIyBlbGlmIGRlZmluZWQoX0xJTlVYX1NPVVJDRV9DT01QQVQpIC8qIExpbnV4IGNvbXBhdGliaWxpdHkgb24gQUlYICovCiAjICBkZWZpbmUgSEFWRV9HRVRIT1NUQllOQU1FX1JfNl9BUkcKQEAgLTI4NCw2ICsyODgsMzYgQEAKICNpbmNsdWRlIDxuZXQvaWYuaD4KICNlbmRpZgogCisjaWZkZWYgSEFWRV9TT0NLQUREUl9BTEcKKyNpbmNsdWRlIDxsaW51eC9pZl9hbGcuaD4KKyNpZm5kZWYgQUZfQUxHCisjZGVmaW5lIEFGX0FMRyAzOAorI2VuZGlmCisjaWZuZGVmIFNPTF9BTEcKKyNkZWZpbmUgU09MX0FMRyAyNzkKKyNlbmRpZgorCisvKiBMaW51eCAzLjE5ICovCisjaWZuZGVmIEFMR19TRVRfQUVBRF9BU1NPQ0xFTgorI2RlZmluZSBBTEdfU0VUX0FFQURfQVNTT0NMRU4gICAgICAgICAgIDQKKyNlbmRpZgorI2lmbmRlZiBBTEdfU0VUX0FFQURfQVVUSFNJWkUKKyNkZWZpbmUgQUxHX1NFVF9BRUFEX0FVVEhTSVpFICAgICAgICAgICA1CisjZW5kaWYKKy8qIExpbnV4IDQuOCAqLworI2lmbmRlZiBBTEdfU0VUX1BVQktFWQorI2RlZmluZSBBTEdfU0VUX1BVQktFWSAgICAgICAgICAgICAgICAgIDYKKyNlbmRpZgorCisjaWZuZGVmIEFMR19PUF9TSUdOCisjZGVmaW5lIEFMR19PUF9TSUdOICAgICAgICAgICAgICAgICAgICAgMgorI2VuZGlmCisjaWZuZGVmIEFMR19PUF9WRVJJRlkKKyNkZWZpbmUgQUxHX09QX1ZFUklGWSAgICAgICAgICAgICAgICAgICAzCisjZW5kaWYKKworI2VuZGlmIC8qIEhBVkVfU09DS0FERFJfQUxHICovCisKIC8qIEdlbmVyaWMgc29ja2V0IG9iamVjdCBkZWZpbml0aW9ucyBhbmQgaW5jbHVkZXMgKi8KICNkZWZpbmUgUHlTb2NrZXRfQlVJTERJTkdfU09DS0VUCiAjaW5jbHVkZSAic29ja2V0bW9kdWxlLmgiCkBAIC01OTAsNiArNjI0LDcgQEAKIHN0YXRpYyBpbnQKIGludGVybmFsX3NldGJsb2NraW5nKFB5U29ja2V0U29ja09iamVjdCAqcywgaW50IGJsb2NrKQogeworICAgIGludCByZXN1bHQgPSAtMTsKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgdV9sb25nIGFyZzsKICNlbmRpZgpAQCAtNjA4LDI0ICs2NDMsNDEgQEAKICNpZm5kZWYgTVNfV0lORE9XUwogI2lmIChkZWZpbmVkKEhBVkVfU1lTX0lPQ1RMX0gpICYmIGRlZmluZWQoRklPTkJJTykpCiAgICAgYmxvY2sgPSAhYmxvY2s7Ci0gICAgaW9jdGwocy0+c29ja19mZCwgRklPTkJJTywgKHVuc2lnbmVkIGludCAqKSZibG9jayk7CisgICAgaWYgKGlvY3RsKHMtPnNvY2tfZmQsIEZJT05CSU8sICh1bnNpZ25lZCBpbnQgKikmYmxvY2spID09IC0xKQorICAgICAgICBnb3RvIGRvbmU7CiAjZWxzZQogICAgIGRlbGF5X2ZsYWcgPSBmY250bChzLT5zb2NrX2ZkLCBGX0dFVEZMLCAwKTsKKyAgICBpZiAoZGVsYXlfZmxhZyA9PSAtMSkKKyAgICAgICAgZ290byBkb25lOwogICAgIGlmIChibG9jaykKICAgICAgICAgbmV3X2RlbGF5X2ZsYWcgPSBkZWxheV9mbGFnICYgKH5PX05PTkJMT0NLKTsKICAgICBlbHNlCiAgICAgICAgIG5ld19kZWxheV9mbGFnID0gZGVsYXlfZmxhZyB8IE9fTk9OQkxPQ0s7CiAgICAgaWYgKG5ld19kZWxheV9mbGFnICE9IGRlbGF5X2ZsYWcpCi0gICAgICAgIGZjbnRsKHMtPnNvY2tfZmQsIEZfU0VURkwsIG5ld19kZWxheV9mbGFnKTsKKyAgICAgICAgaWYgKGZjbnRsKHMtPnNvY2tfZmQsIEZfU0VURkwsIG5ld19kZWxheV9mbGFnKSA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZG9uZTsKICNlbmRpZgogI2Vsc2UgLyogTVNfV0lORE9XUyAqLwogICAgIGFyZyA9ICFibG9jazsKLSAgICBpb2N0bHNvY2tldChzLT5zb2NrX2ZkLCBGSU9OQklPLCAmYXJnKTsKKyAgICBpZiAoaW9jdGxzb2NrZXQocy0+c29ja19mZCwgRklPTkJJTywgJmFyZykgIT0gMCkKKyAgICAgICAgZ290byBkb25lOwogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KKworICAgIHJlc3VsdCA9IDA7CisKKyAgZG9uZToKKyAgICA7ICAvKiBuZWNlc3NhcnkgZm9yIC0td2l0aG91dC10aHJlYWRzIGZsYWcgKi8KICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCi0gICAgLyogU2luY2UgdGhlc2UgZG9uJ3QgcmV0dXJuIGFueXRoaW5nICovCi0gICAgcmV0dXJuIDE7CisgICAgaWYgKHJlc3VsdCkgeworI2lmbmRlZiBNU19XSU5ET1dTCisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyNlbHNlCisgICAgICAgIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyKFB5RXhjX09TRXJyb3IsIFdTQUdldExhc3RFcnJvcigpKTsKKyNlbmRpZgorICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHN0YXRpYyBpbnQKQEAgLTg3Myw3ICs5MjUsNyBAQAogLyogRGVmYXVsdCB0aW1lb3V0IGZvciBuZXcgc29ja2V0cyAqLwogc3RhdGljIF9QeVRpbWVfdCBkZWZhdWx0dGltZW91dCA9IF9QWVRJTUVfRlJPTVNFQ09ORFMoLTEpOwogCi1zdGF0aWMgdm9pZAorc3RhdGljIGludAogaW5pdF9zb2Nrb2JqZWN0KFB5U29ja2V0U29ja09iamVjdCAqcywKICAgICAgICAgICAgICAgICBTT0NLRVRfVCBmZCwgaW50IGZhbWlseSwgaW50IHR5cGUsIGludCBwcm90bykKIHsKQEAgLTg5MCwxMCArOTQyLDEzIEBACiAjZW5kaWYKICAgICB7CiAgICAgICAgIHMtPnNvY2tfdGltZW91dCA9IGRlZmF1bHR0aW1lb3V0OwotICAgICAgICBpZiAoZGVmYXVsdHRpbWVvdXQgPj0gMCkKLSAgICAgICAgICAgIGludGVybmFsX3NldGJsb2NraW5nKHMsIDApOworICAgICAgICBpZiAoZGVmYXVsdHRpbWVvdXQgPj0gMCkgeworICAgICAgICAgICAgaWYgKGludGVybmFsX3NldGJsb2NraW5nKHMsIDApID09IC0xKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQotCisgICAgcmV0dXJuIDA7CiB9CiAKIApAQCAtOTA4LDggKzk2MywxMiBAQAogICAgIFB5U29ja2V0U29ja09iamVjdCAqczsKICAgICBzID0gKFB5U29ja2V0U29ja09iamVjdCAqKQogICAgICAgICBQeVR5cGVfR2VuZXJpY05ldygmc29ja190eXBlLCBOVUxMLCBOVUxMKTsKLSAgICBpZiAocyAhPSBOVUxMKQotICAgICAgICBpbml0X3NvY2tvYmplY3QocywgZmQsIGZhbWlseSwgdHlwZSwgcHJvdG8pOworICAgIGlmIChzID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChpbml0X3NvY2tvYmplY3QocywgZmQsIGZhbWlseSwgdHlwZSwgcHJvdG8pID09IC0xKSB7CisgICAgICAgIFB5X0RFQ1JFRihzKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIHJldHVybiBzOwogfQogCkBAIC05MjgsNyArOTg3LDcgQEAKICAgIGFuIGVycm9yIG9jY3VycmVkOyB0aGVuIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQuICovCiAKIHN0YXRpYyBpbnQKLXNldGlwYWRkcihjaGFyICpuYW1lLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHJfcmV0LCBzaXplX3QgYWRkcl9yZXRfc2l6ZSwgaW50IGFmKQorc2V0aXBhZGRyKGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBzb2NrYWRkciAqYWRkcl9yZXQsIHNpemVfdCBhZGRyX3JldF9zaXplLCBpbnQgYWYpCiB7CiAgICAgc3RydWN0IGFkZHJpbmZvIGhpbnRzLCAqcmVzOwogICAgIGludCBlcnJvcjsKQEAgLTExMDksNyArMTE2OCw3IEBACiAgICBhbiBlcnJvciBvY2N1cnJlZC4gKi8KIAogc3RhdGljIGludAotc2V0YmRhZGRyKGNoYXIgKm5hbWUsIGJkYWRkcl90ICpiZGFkZHIpCitzZXRiZGFkZHIoY29uc3QgY2hhciAqbmFtZSwgYmRhZGRyX3QgKmJkYWRkcikKIHsKICAgICB1bnNpZ25lZCBpbnQgYjAsIGIxLCBiMiwgYjMsIGI0LCBiNTsKICAgICBjaGFyIGNoOwpAQCAtMTE4Miw3ICsxMjQxLDcgQEAKICAgICBjYXNlIEFGX1VOSVg6CiAgICAgewogICAgICAgICBzdHJ1Y3Qgc29ja2FkZHJfdW4gKmEgPSAoc3RydWN0IHNvY2thZGRyX3VuICopIGFkZHI7Ci0jaWZkZWYgbGludXgKKyNpZmRlZiBfX2xpbnV4X18KICAgICAgICAgaWYgKGEtPnN1bl9wYXRoWzBdID09IDApIHsgIC8qIExpbnV4IGFic3RyYWN0IG5hbWVzcGFjZSAqLwogICAgICAgICAgICAgYWRkcmxlbiAtPSBvZmZzZXRvZihzdHJ1Y3Qgc29ja2FkZHJfdW4sIHN1bl9wYXRoKTsKICAgICAgICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKGEtPnN1bl9wYXRoLCBhZGRybGVuKTsKQEAgLTEzNzMsNiArMTQzMiwyMiBAQAogICAgICAgICB9CiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfU09DS0FERFJfQUxHCisgICAgY2FzZSBBRl9BTEc6CisgICAgeworICAgICAgICBzdHJ1Y3Qgc29ja2FkZHJfYWxnICphID0gKHN0cnVjdCBzb2NrYWRkcl9hbGcgKilhZGRyOworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgicyNzI0hIIiwKKyAgICAgICAgICAgIGEtPnNhbGdfdHlwZSwKKyAgICAgICAgICAgIHN0cm5sZW4oKGNvbnN0IGNoYXIqKWEtPnNhbGdfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGEtPnNhbGdfdHlwZSkpLAorICAgICAgICAgICAgYS0+c2FsZ19uYW1lLAorICAgICAgICAgICAgc3RybmxlbigoY29uc3QgY2hhciopYS0+c2FsZ19uYW1lLAorICAgICAgICAgICAgICAgICAgICBzaXplb2YoYS0+c2FsZ19uYW1lKSksCisgICAgICAgICAgICBhLT5zYWxnX2ZlYXQsCisgICAgICAgICAgICBhLT5zYWxnX21hc2spOworICAgIH0KKyNlbmRpZgorCiAgICAgLyogTW9yZSBjYXNlcyBoZXJlLi4uICovCiAKICAgICBkZWZhdWx0OgpAQCAtMTQwMyw3ICsxNDc4LDcgQEAKIGlkbmFfY29udmVydGVyKFB5T2JqZWN0ICpvYmosIHN0cnVjdCBtYXliZV9pZG5hICpkYXRhKQogewogICAgIHNpemVfdCBsZW47Ci0gICAgUHlPYmplY3QgKm9iajIsICpvYmozOworICAgIFB5T2JqZWN0ICpvYmoyOwogICAgIGlmIChvYmogPT0gTlVMTCkgewogICAgICAgICBpZG5hX2NsZWFudXAoZGF0YSk7CiAgICAgICAgIHJldHVybiAxOwpAQCAtMTQxOCwzMSArMTQ5MywyNyBAQAogICAgICAgICBkYXRhLT5idWYgPSBQeUJ5dGVBcnJheV9Bc1N0cmluZyhvYmopOwogICAgICAgICBsZW4gPSBQeUJ5dGVBcnJheV9TaXplKG9iaik7CiAgICAgfQotICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhvYmopICYmIFB5VW5pY29kZV9SRUFEWShvYmopID09IDAgJiYgUHlVbmljb2RlX0lTX0NPTVBBQ1RfQVNDSUkob2JqKSkgewotICAgICAgICBkYXRhLT5idWYgPSBQeVVuaWNvZGVfREFUQShvYmopOwotICAgICAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChvYmopOworICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhvYmopKSB7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkob2JqKSA9PSAwICYmIFB5VW5pY29kZV9JU19DT01QQUNUX0FTQ0lJKG9iaikpIHsKKyAgICAgICAgICAgIGRhdGEtPmJ1ZiA9IFB5VW5pY29kZV9EQVRBKG9iaik7CisgICAgICAgICAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChvYmopOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgb2JqMiA9IFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcob2JqLCAiaWRuYSIsIE5VTEwpOworICAgICAgICAgICAgaWYgKCFvYmoyKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImVuY29kaW5nIG9mIGhvc3RuYW1lIGZhaWxlZCIpOworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYXNzZXJ0KFB5Qnl0ZXNfQ2hlY2sob2JqMikpOworICAgICAgICAgICAgZGF0YS0+b2JqID0gb2JqMjsKKyAgICAgICAgICAgIGRhdGEtPmJ1ZiA9IFB5Qnl0ZXNfQVNfU1RSSU5HKG9iajIpOworICAgICAgICAgICAgbGVuID0gUHlCeXRlc19HRVRfU0laRShvYmoyKTsKKyAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgb2JqMiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KG9iaik7Ci0gICAgICAgIGlmICghb2JqMikgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgInN0cmluZyBvciB1bmljb2RlIHRleHQgYnVmZmVyIGV4cGVjdGVkLCBub3QgJXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgIG9iai0+b2JfdHlwZS0+dHBfbmFtZSk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotICAgICAgICBvYmozID0gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyhvYmoyLCAiaWRuYSIsIE5VTEwpOwotICAgICAgICBQeV9ERUNSRUYob2JqMik7Ci0gICAgICAgIGlmICghb2JqMykgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImVuY29kaW5nIG9mIGhvc3RuYW1lIGZhaWxlZCIpOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFQeUJ5dGVzX0NoZWNrKG9iajMpKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYob2JqMyk7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZW5jb2Rpbmcgb2YgaG9zdG5hbWUgZmFpbGVkIHRvIHJldHVybiBieXRlcyIpOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICAgICAgZGF0YS0+b2JqID0gb2JqMzsKLSAgICAgICAgZGF0YS0+YnVmID0gUHlCeXRlc19BU19TVFJJTkcob2JqMyk7Ci0gICAgICAgIGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUob2JqMyk7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJzdHIsIGJ5dGVzIG9yIGJ5dGVhcnJheSBleHBlY3RlZCwgbm90ICVzIiwKKyAgICAgICAgICAgICAgICAgICAgIG9iai0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBpZiAoc3RybGVuKGRhdGEtPmJ1ZikgIT0gbGVuKSB7CiAgICAgICAgIFB5X0NMRUFSKGRhdGEtPm9iaik7CkBAIC0xNDg1LDcgKzE1NTYsNyBAQAogICAgICAgICBhc3NlcnQocGF0aC5sZW4gPj0gMCk7CiAKICAgICAgICAgYWRkciA9IChzdHJ1Y3Qgc29ja2FkZHJfdW4qKWFkZHJfcmV0OwotI2lmZGVmIGxpbnV4CisjaWZkZWYgX19saW51eF9fCiAgICAgICAgIGlmIChwYXRoLmxlbiA+IDAgJiYgKihjb25zdCBjaGFyICopcGF0aC5idWYgPT0gMCkgewogICAgICAgICAgICAgLyogTGludXggYWJzdHJhY3QgbmFtZXNwYWNlIGV4dGVuc2lvbiAqLwogICAgICAgICAgICAgaWYgKChzaXplX3QpcGF0aC5sZW4gPiBzaXplb2YgYWRkci0+c3VuX3BhdGgpIHsKQEAgLTE5NDIsNiArMjAxMywzNiBAQAogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICNlbmRpZgorI2lmZGVmIEhBVkVfU09DS0FERFJfQUxHCisgICAgY2FzZSBBRl9BTEc6CisgICAgeworICAgICAgICBzdHJ1Y3Qgc29ja2FkZHJfYWxnICpzYTsKKyAgICAgICAgY2hhciAqdHlwZTsKKyAgICAgICAgY2hhciAqbmFtZTsKKyAgICAgICAgc2EgPSAoc3RydWN0IHNvY2thZGRyX2FsZyAqKWFkZHJfcmV0OworCisgICAgICAgIG1lbXNldChzYSwgMCwgc2l6ZW9mKCpzYSkpOworICAgICAgICBzYS0+c2FsZ19mYW1pbHkgPSBBRl9BTEc7CisKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzc3xISDpnZXRzb2NrYWRkcmFyZyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0eXBlLCAmbmFtZSwgJnNhLT5zYWxnX2ZlYXQsICZzYS0+c2FsZ19tYXNrKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAvKiBzb2NrYWRkcl9hbGcgaGFzIGZpeGVkLXNpemVkIGNoYXIgYXJyYXlzIGZvciB0eXBlIGFuZCBuYW1lICovCisgICAgICAgIGlmIChzdHJsZW4odHlwZSkgPiBzaXplb2Yoc2EtPnNhbGdfdHlwZSkpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiQUZfQUxHIHR5cGUgdG9vIGxvbmcuIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBzdHJuY3B5KChjaGFyICopc2EtPnNhbGdfdHlwZSwgdHlwZSwgc2l6ZW9mKHNhLT5zYWxnX3R5cGUpKTsKKyAgICAgICAgaWYgKHN0cmxlbihuYW1lKSA+IHNpemVvZihzYS0+c2FsZ19uYW1lKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJBRl9BTEcgbmFtZSB0b28gbG9uZy4iKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHN0cm5jcHkoKGNoYXIgKilzYS0+c2FsZ19uYW1lLCBuYW1lLCBzaXplb2Yoc2EtPnNhbGdfbmFtZSkpOworCisgICAgICAgICpsZW5fcmV0ID0gc2l6ZW9mKCpzYSk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyNlbmRpZgogCiAgICAgLyogTW9yZSBjYXNlcyBoZXJlLi4uICovCiAKQEAgLTIwNjQsNiArMjE2NSwxMyBAQAogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICNlbmRpZgorI2lmZGVmIEhBVkVfU09DS0FERFJfQUxHCisgICAgY2FzZSBBRl9BTEc6CisgICAgeworICAgICAgICAqbGVuX3JldCA9IHNpemVvZiAoc3RydWN0IHNvY2thZGRyX2FsZyk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyNlbmRpZgogCiAgICAgLyogTW9yZSBjYXNlcyBoZXJlLi4uICovCiAKQEAgLTIyMjMsMTAgKzIzMzEsMjEgQEAKIHNvY2tfYWNjZXB0X2ltcGwoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCB2b2lkICpkYXRhKQogewogICAgIHN0cnVjdCBzb2NrX2FjY2VwdCAqY3R4ID0gZGF0YTsKKyAgICBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIgPSBTQVMyU0EoY3R4LT5hZGRyYnVmKTsKKyAgICBzb2NrbGVuX3QgKnBhZGRybGVuID0gY3R4LT5hZGRybGVuOworI2lmZGVmIEhBVkVfU09DS0FERFJfQUxHCisgICAgLyogQUZfQUxHIGRvZXMgbm90IHN1cHBvcnQgYWNjZXB0KCkgd2l0aCBhZGRyIGFuZCByYWlzZXMKKyAgICAgKiBFQ09OTkFCT1JURUQgaW5zdGVhZC4gKi8KKyAgICBpZiAocy0+c29ja19mYW1pbHkgPT0gQUZfQUxHKSB7CisgICAgICAgIGFkZHIgPSBOVUxMOworICAgICAgICBwYWRkcmxlbiA9IE5VTEw7CisgICAgICAgICpjdHgtPmFkZHJsZW4gPSAwOworICAgIH0KKyNlbmRpZgogCiAjaWYgZGVmaW5lZChIQVZFX0FDQ0VQVDQpICYmIGRlZmluZWQoU09DS19DTE9FWEVDKQogICAgIGlmIChhY2NlcHQ0X3dvcmtzICE9IDApIHsKLSAgICAgICAgY3R4LT5yZXN1bHQgPSBhY2NlcHQ0KHMtPnNvY2tfZmQsIFNBUzJTQShjdHgtPmFkZHJidWYpLCBjdHgtPmFkZHJsZW4sCisgICAgICAgIGN0eC0+cmVzdWx0ID0gYWNjZXB0NChzLT5zb2NrX2ZkLCBhZGRyLCBwYWRkcmxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNPQ0tfQ0xPRVhFQyk7CiAgICAgICAgIGlmIChjdHgtPnJlc3VsdCA9PSBJTlZBTElEX1NPQ0tFVCAmJiBhY2NlcHQ0X3dvcmtzID09IC0xKSB7CiAgICAgICAgICAgICAvKiBPbiBMaW51eCBvbGRlciB0aGFuIDIuNi4yOCwgYWNjZXB0NCgpIGZhaWxzIHdpdGggRU5PU1lTICovCkBAIC0yMjM0LDkgKzIzNTMsOSBAQAogICAgICAgICB9CiAgICAgfQogICAgIGlmIChhY2NlcHQ0X3dvcmtzID09IDApCi0gICAgICAgIGN0eC0+cmVzdWx0ID0gYWNjZXB0KHMtPnNvY2tfZmQsIFNBUzJTQShjdHgtPmFkZHJidWYpLCBjdHgtPmFkZHJsZW4pOworICAgICAgICBjdHgtPnJlc3VsdCA9IGFjY2VwdChzLT5zb2NrX2ZkLCBhZGRyLCBwYWRkcmxlbik7CiAjZWxzZQotICAgIGN0eC0+cmVzdWx0ID0gYWNjZXB0KHMtPnNvY2tfZmQsIFNBUzJTQShjdHgtPmFkZHJidWYpLCBjdHgtPmFkZHJsZW4pOworICAgIGN0eC0+cmVzdWx0ID0gYWNjZXB0KHMtPnNvY2tfZmQsIGFkZHIsIHBhZGRybGVuKTsKICNlbmRpZgogCiAjaWZkZWYgTVNfV0lORE9XUwpAQCAtMjMzMiwxMCArMjQ1MSwxMCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHMtPnNvY2tfdGltZW91dCA9IF9QeVRpbWVfRnJvbVNlY29uZHMoYmxvY2sgPyAtMSA6IDApOwotICAgIGludGVybmFsX3NldGJsb2NraW5nKHMsIGJsb2NrKTsKLQotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBpZiAoaW50ZXJuYWxfc2V0YmxvY2tpbmcocywgYmxvY2spID09IC0xKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogUHlEb2NfU1RSVkFSKHNldGJsb2NraW5nX2RvYywKQEAgLTI0MDEsMTAgKzI1MjAsMTAgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBzLT5zb2NrX3RpbWVvdXQgPSB0aW1lb3V0OwotICAgIGludGVybmFsX3NldGJsb2NraW5nKHMsIHRpbWVvdXQgPCAwKTsKLQotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBpZiAoaW50ZXJuYWxfc2V0YmxvY2tpbmcocywgdGltZW91dCA8IDApID09IC0xKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogUHlEb2NfU1RSVkFSKHNldHRpbWVvdXRfZG9jLApAQCAtMjQzOCw5ICsyNTU3LDEyIEBACiBvcGVyYXRpb25zIGFyZSBkaXNhYmxlZC4iKTsKIAogLyogcy5zZXRzb2Nrb3B0KCkgbWV0aG9kLgotICAgV2l0aCBhbiBpbnRlZ2VyIHRoaXJkIGFyZ3VtZW50LCBzZXRzIGFuIGludGVnZXIgb3B0aW9uLgorICAgV2l0aCBhbiBpbnRlZ2VyIHRoaXJkIGFyZ3VtZW50LCBzZXRzIGFuIGludGVnZXIgb3B0dmFsIHdpdGggb3B0bGVuPTQuCisgICBXaXRoIE5vbmUgYXMgdGhpcmQgYXJndW1lbnQgYW5kIGFuIGludGVnZXIgZm91cnRoIGFyZ3VtZW50LCBzZXQKKyAgIG9wdHZhbD1OVUxMIHdpdGggdW5zaWduZWQgaW50IGFzIG9wdGxlbi4KICAgIFdpdGggYSBzdHJpbmcgdGhpcmQgYXJndW1lbnQsIHNldHMgYW4gb3B0aW9uIGZyb20gYSBidWZmZXI7Ci0gICB1c2Ugb3B0aW9uYWwgYnVpbHQtaW4gbW9kdWxlICdzdHJ1Y3QnIHRvIGVuY29kZSB0aGUgc3RyaW5nLiAqLworICAgdXNlIG9wdGlvbmFsIGJ1aWx0LWluIG1vZHVsZSAnc3RydWN0JyB0byBlbmNvZGUgdGhlIHN0cmluZy4KKyovCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBzb2NrX3NldHNvY2tvcHQoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCBQeU9iamVjdCAqYXJncykKQEAgLTI0NTAsMzEgKzI1NzIsNjQgQEAKICAgICBpbnQgcmVzOwogICAgIFB5X2J1ZmZlciBvcHR2YWw7CiAgICAgaW50IGZsYWc7CisgICAgdW5zaWduZWQgaW50IG9wdGxlbjsKKyAgICBQeU9iamVjdCAqbm9uZTsKIAorICAgIC8qIHNldHNvY2tvcHQobGV2ZWwsIG9wdCwgZmxhZykgKi8KICAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWlpOnNldHNvY2tvcHQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICZsZXZlbCwgJm9wdG5hbWUsICZmbGFnKSkgewogICAgICAgICByZXMgPSBzZXRzb2Nrb3B0KHMtPnNvY2tfZmQsIGxldmVsLCBvcHRuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyKikmZmxhZywgc2l6ZW9mIGZsYWcpOworICAgICAgICBnb3RvIGRvbmU7CiAgICAgfQotICAgIGVsc2UgewotICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpeSo6c2V0c29ja29wdCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbGV2ZWwsICZvcHRuYW1lLCAmb3B0dmFsKSkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICByZXMgPSBzZXRzb2Nrb3B0KHMtPnNvY2tfZmQsIGxldmVsLCBvcHRuYW1lLCBvcHR2YWwuYnVmLCBvcHR2YWwubGVuKTsKKworICAgIFB5RXJyX0NsZWFyKCk7CisgICAgLyogc2V0c29ja29wdChsZXZlbCwgb3B0LCBOb25lLCBmbGFnKSAqLworICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaU8hSTpzZXRzb2Nrb3B0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAmbGV2ZWwsICZvcHRuYW1lLCBQeV9UWVBFKFB5X05vbmUpLCAmbm9uZSwgJm9wdGxlbikpIHsKKyAgICAgICAgYXNzZXJ0KHNpemVvZihzb2NrbGVuX3QpID49IHNpemVvZih1bnNpZ25lZCBpbnQpKTsKKyAgICAgICAgcmVzID0gc2V0c29ja29wdChzLT5zb2NrX2ZkLCBsZXZlbCwgb3B0bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAoc29ja2xlbl90KW9wdGxlbik7CisgICAgICAgIGdvdG8gZG9uZTsKKyAgICB9CisKKyAgICBQeUVycl9DbGVhcigpOworICAgIC8qIHNldHNvY2tvcHQobGV2ZWwsIG9wdCwgYnVmZmVyKSAqLworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWl5KjpzZXRzb2Nrb3B0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbGV2ZWwsICZvcHRuYW1lLCAmb3B0dmFsKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaWYgKG9wdHZhbC5sZW4gPiBJTlRfTUFYKSB7CiAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJm9wdHZhbCk7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInNvY2tldCBvcHRpb24gaXMgbGFyZ2VyIHRoYW4gJWkgYnl0ZXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgSU5UX01BWCk7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAocmVzIDwgMCkKKyAgICByZXMgPSBzZXRzb2Nrb3B0KHMtPnNvY2tfZmQsIGxldmVsLCBvcHRuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgb3B0dmFsLmJ1ZiwgKGludClvcHR2YWwubGVuKTsKKyNlbHNlCisgICAgcmVzID0gc2V0c29ja29wdChzLT5zb2NrX2ZkLCBsZXZlbCwgb3B0bmFtZSwgb3B0dmFsLmJ1Ziwgb3B0dmFsLmxlbik7CisjZW5kaWYKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZvcHR2YWwpOworCitkb25lOgorICAgIGlmIChyZXMgPCAwKSB7CiAgICAgICAgIHJldHVybiBzLT5lcnJvcmhhbmRsZXIoKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgfQorCisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKIFB5RG9jX1NUUlZBUihzZXRzb2Nrb3B0X2RvYywKLSJzZXRzb2Nrb3B0KGxldmVsLCBvcHRpb24sIHZhbHVlKVxuXAorInNldHNvY2tvcHQobGV2ZWwsIG9wdGlvbiwgdmFsdWU6IGludClcblwKK3NldHNvY2tvcHQobGV2ZWwsIG9wdGlvbiwgdmFsdWU6IGJ1ZmZlcilcblwKK3NldHNvY2tvcHQobGV2ZWwsIG9wdGlvbiwgTm9uZSwgb3B0bGVuOiBpbnQpXG5cCiBcblwKIFNldCBhIHNvY2tldCBvcHRpb24uICBTZWUgdGhlIFVuaXggbWFudWFsIGZvciBsZXZlbCBhbmQgb3B0aW9uLlxuXAotVGhlIHZhbHVlIGFyZ3VtZW50IGNhbiBlaXRoZXIgYmUgYW4gaW50ZWdlciBvciBhIHN0cmluZy4iKTsKK1RoZSB2YWx1ZSBhcmd1bWVudCBjYW4gZWl0aGVyIGJlIGFuIGludGVnZXIsIGEgc3RyaW5nIGJ1ZmZlciwgb3IgXG5cCitOb25lLCBvcHRsZW4uIik7CiAKIAogLyogcy5nZXRzb2Nrb3B0KCkgbWV0aG9kLgpAQCAtMjU2NiwxNyArMjcyMSwyMiBAQAogc29ja19jbG9zZShQeVNvY2tldFNvY2tPYmplY3QgKnMpCiB7CiAgICAgU09DS0VUX1QgZmQ7CisgICAgaW50IHJlczsKIAotICAgIC8qIFdlIGRvIG5vdCB3YW50IHRvIHJldHJ5IHVwb24gRUlOVFI6IHNlZSBodHRwOi8vbHduLm5ldC9BcnRpY2xlcy81NzY0NzgvCi0gICAgICogYW5kIGh0dHA6Ly9saW51eC5kZXJrZWlsZXIuY29tL01haWxpbmctTGlzdHMvS2VybmVsLzIwMDUtMDkvMzAwMC5odG1sCi0gICAgICogZm9yIG1vcmUgZGV0YWlscy4KLSAgICAgKi8KICAgICBmZCA9IHMtPnNvY2tfZmQ7CiAgICAgaWYgKGZkICE9IElOVkFMSURfU09DS0VUKSB7CiAgICAgICAgIHMtPnNvY2tfZmQgPSBJTlZBTElEX1NPQ0tFVDsKKworICAgICAgICAvKiBXZSBkbyBub3Qgd2FudCB0byByZXRyeSB1cG9uIEVJTlRSOiBzZWUKKyAgICAgICAgICAgaHR0cDovL2x3bi5uZXQvQXJ0aWNsZXMvNTc2NDc4LyBhbmQKKyAgICAgICAgICAgaHR0cDovL2xpbnV4LmRlcmtlaWxlci5jb20vTWFpbGluZy1MaXN0cy9LZXJuZWwvMjAwNS0wOS8zMDAwLmh0bWwKKyAgICAgICAgICAgZm9yIG1vcmUgZGV0YWlscy4gKi8KICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICAodm9pZCkgU09DS0VUQ0xPU0UoZmQpOworICAgICAgICByZXMgPSBTT0NLRVRDTE9TRShmZCk7CiAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgICAgIGlmIChyZXMgPCAwKSB7CisgICAgICAgICAgICByZXR1cm4gcy0+ZXJyb3JoYW5kbGVyKCk7CisgICAgICAgIH0KICAgICB9CiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgIHJldHVybiBQeV9Ob25lOwpAQCAtMzc1OSw2ICszOTE5LDYzIEBACiB9OwogCiBzdGF0aWMgaW50Citzb2NrX3NlbmRtc2dfaW92ZWMoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCBQeU9iamVjdCAqZGF0YV9hcmcsCisgICAgICAgICAgICAgICAgICAgc3RydWN0IG1zZ2hkciAqbXNnLAorICAgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqKmRhdGFidWZzb3V0LCBQeV9zc2l6ZV90ICpuZGF0YWJ1ZnNvdXQpIHsKKyAgICBQeV9zc2l6ZV90IG5kYXRhcGFydHMsIG5kYXRhYnVmcyA9IDA7CisgICAgaW50IHJlc3VsdCA9IC0xOworICAgIHN0cnVjdCBpb3ZlYyAqaW92cyA9IE5VTEw7CisgICAgUHlPYmplY3QgKmRhdGFfZmFzdCA9IE5VTEw7CisgICAgUHlfYnVmZmVyICpkYXRhYnVmcyA9IE5VTEw7CisKKyAgICAvKiBGaWxsIGluIGFuIGlvdmVjIGZvciBlYWNoIG1lc3NhZ2UgcGFydCwgYW5kIHNhdmUgdGhlIFB5X2J1ZmZlcgorICAgICAgIHN0cnVjdHMgdG8gcmVsZWFzZSBhZnRlcndhcmRzLiAqLworICAgIGRhdGFfZmFzdCA9IFB5U2VxdWVuY2VfRmFzdChkYXRhX2FyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbmRtc2coKSBhcmd1bWVudCAxIG11c3QgYmUgYW4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaXRlcmFibGUiKTsKKyAgICBpZiAoZGF0YV9mYXN0ID09IE5VTEwpIHsKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIH0KKworICAgIG5kYXRhcGFydHMgPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX1NJWkUoZGF0YV9mYXN0KTsKKyAgICBpZiAobmRhdGFwYXJ0cyA+IElOVF9NQVgpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJzZW5kbXNnKCkgYXJndW1lbnQgMSBpcyB0b28gbG9uZyIpOworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorCisgICAgbXNnLT5tc2dfaW92bGVuID0gbmRhdGFwYXJ0czsKKyAgICBpZiAobmRhdGFwYXJ0cyA+IDApIHsKKyAgICAgICAgaW92cyA9IFB5TWVtX05ldyhzdHJ1Y3QgaW92ZWMsIG5kYXRhcGFydHMpOworICAgICAgICBpZiAoaW92cyA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgZ290byBmaW5hbGx5OworICAgICAgICB9CisgICAgICAgIG1zZy0+bXNnX2lvdiA9IGlvdnM7CisKKyAgICAgICAgZGF0YWJ1ZnMgPSBQeU1lbV9OZXcoUHlfYnVmZmVyLCBuZGF0YXBhcnRzKTsKKyAgICAgICAgaWYgKGRhdGFidWZzID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgICAgIH0KKyAgICB9CisgICAgZm9yICg7IG5kYXRhYnVmcyA8IG5kYXRhcGFydHM7IG5kYXRhYnVmcysrKSB7CisgICAgICAgIGlmICghUHlBcmdfUGFyc2UoUHlTZXF1ZW5jZV9GYXN0X0dFVF9JVEVNKGRhdGFfZmFzdCwgbmRhdGFidWZzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAieSo7c2VuZG1zZygpIGFyZ3VtZW50IDEgbXVzdCBiZSBhbiBpdGVyYWJsZSBvZiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgImJ5dGVzLWxpa2Ugb2JqZWN0cyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgJmRhdGFidWZzW25kYXRhYnVmc10pKQorICAgICAgICAgICAgZ290byBmaW5hbGx5OworICAgICAgICBpb3ZzW25kYXRhYnVmc10uaW92X2Jhc2UgPSBkYXRhYnVmc1tuZGF0YWJ1ZnNdLmJ1ZjsKKyAgICAgICAgaW92c1tuZGF0YWJ1ZnNdLmlvdl9sZW4gPSBkYXRhYnVmc1tuZGF0YWJ1ZnNdLmxlbjsKKyAgICB9CisgICAgcmVzdWx0ID0gMDsKKyAgZmluYWxseToKKyAgICAqZGF0YWJ1ZnNvdXQgPSBkYXRhYnVmczsKKyAgICAqbmRhdGFidWZzb3V0ID0gbmRhdGFidWZzOworICAgIFB5X1hERUNSRUYoZGF0YV9mYXN0KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgaW50CiBzb2NrX3NlbmRtc2dfaW1wbChQeVNvY2tldFNvY2tPYmplY3QgKnMsIHZvaWQgKmRhdGEpCiB7CiAgICAgc3RydWN0IHNvY2tfc2VuZG1zZyAqY3R4ID0gZGF0YTsKQEAgLTM3NzIsMTEgKzM5ODksMTAgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzb2NrX3NlbmRtc2coUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9zc2l6ZV90IGksIG5kYXRhcGFydHMsIG5kYXRhYnVmcyA9IDAsIG5jbXNncywgbmNtc2didWZzID0gMDsKKyAgICBQeV9zc2l6ZV90IGksIG5kYXRhYnVmcyA9IDAsIG5jbXNncywgbmNtc2didWZzID0gMDsKICAgICBQeV9idWZmZXIgKmRhdGFidWZzID0gTlVMTDsKLSAgICBzdHJ1Y3QgaW92ZWMgKmlvdnMgPSBOVUxMOwogICAgIHNvY2tfYWRkcl90IGFkZHJidWY7Ci0gICAgc3RydWN0IG1zZ2hkciBtc2cgPSB7MH07CisgICAgc3RydWN0IG1zZ2hkciBtc2c7CiAgICAgc3RydWN0IGNtc2dpbmZvIHsKICAgICAgICAgaW50IGxldmVsOwogICAgICAgICBpbnQgdHlwZTsKQEAgLTM3ODUsMTMgKzQwMDEsMTYgQEAKICAgICB2b2lkICpjb250cm9sYnVmID0gTlVMTDsKICAgICBzaXplX3QgY29udHJvbGxlbiwgY29udHJvbGxlbl9sYXN0OwogICAgIGludCBhZGRybGVuLCBmbGFncyA9IDA7Ci0gICAgUHlPYmplY3QgKmRhdGFfYXJnLCAqY21zZ19hcmcgPSBOVUxMLCAqYWRkcl9hcmcgPSBOVUxMLCAqZGF0YV9mYXN0ID0gTlVMTCwKKyAgICBQeU9iamVjdCAqZGF0YV9hcmcsICpjbXNnX2FyZyA9IE5VTEwsICphZGRyX2FyZyA9IE5VTEwsCiAgICAgICAgICpjbXNnX2Zhc3QgPSBOVUxMLCAqcmV0dmFsID0gTlVMTDsKICAgICBzdHJ1Y3Qgc29ja19zZW5kbXNnIGN0eDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xPaU86c2VuZG1zZyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZkYXRhX2FyZywgJmNtc2dfYXJnLCAmZmxhZ3MsICZhZGRyX2FyZykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICZkYXRhX2FyZywgJmNtc2dfYXJnLCAmZmxhZ3MsICZhZGRyX2FyZykpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbWVtc2V0KCZtc2csIDAsIHNpemVvZihtc2cpKTsKIAogICAgIC8qIFBhcnNlIGRlc3RpbmF0aW9uIGFkZHJlc3MuICovCiAgICAgaWYgKGFkZHJfYXJnICE9IE5VTEwgJiYgYWRkcl9hcmcgIT0gUHlfTm9uZSkgewpAQCAtMzgwMywzMCArNDAyMiw4IEBACiAKICAgICAvKiBGaWxsIGluIGFuIGlvdmVjIGZvciBlYWNoIG1lc3NhZ2UgcGFydCwgYW5kIHNhdmUgdGhlIFB5X2J1ZmZlcgogICAgICAgIHN0cnVjdHMgdG8gcmVsZWFzZSBhZnRlcndhcmRzLiAqLwotICAgIGlmICgoZGF0YV9mYXN0ID0gUHlTZXF1ZW5jZV9GYXN0KGRhdGFfYXJnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZW5kbXNnKCkgYXJndW1lbnQgMSBtdXN0IGJlIGFuICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaXRlcmFibGUiKSkgPT0gTlVMTCkKKyAgICBpZiAoc29ja19zZW5kbXNnX2lvdmVjKHMsIGRhdGFfYXJnLCAmbXNnLCAmZGF0YWJ1ZnMsICZuZGF0YWJ1ZnMpID09IC0xKSB7CiAgICAgICAgIGdvdG8gZmluYWxseTsKLSAgICBuZGF0YXBhcnRzID0gUHlTZXF1ZW5jZV9GYXN0X0dFVF9TSVpFKGRhdGFfZmFzdCk7Ci0gICAgaWYgKG5kYXRhcGFydHMgPiBJTlRfTUFYKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAic2VuZG1zZygpIGFyZ3VtZW50IDEgaXMgdG9vIGxvbmciKTsKLSAgICAgICAgZ290byBmaW5hbGx5OwotICAgIH0KLSAgICBtc2cubXNnX2lvdmxlbiA9IG5kYXRhcGFydHM7Ci0gICAgaWYgKG5kYXRhcGFydHMgPiAwICYmCi0gICAgICAgICgobXNnLm1zZ19pb3YgPSBpb3ZzID0gUHlNZW1fTmV3KHN0cnVjdCBpb3ZlYywgbmRhdGFwYXJ0cykpID09IE5VTEwgfHwKLSAgICAgICAgIChkYXRhYnVmcyA9IFB5TWVtX05ldyhQeV9idWZmZXIsIG5kYXRhcGFydHMpKSA9PSBOVUxMKSkgewotICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICBnb3RvIGZpbmFsbHk7Ci0gICAgfQotICAgIGZvciAoOyBuZGF0YWJ1ZnMgPCBuZGF0YXBhcnRzOyBuZGF0YWJ1ZnMrKykgewotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlKFB5U2VxdWVuY2VfRmFzdF9HRVRfSVRFTShkYXRhX2Zhc3QsIG5kYXRhYnVmcyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgInkqO3NlbmRtc2coKSBhcmd1bWVudCAxIG11c3QgYmUgYW4gaXRlcmFibGUgb2YgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJieXRlcy1saWtlIG9iamVjdHMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICZkYXRhYnVmc1tuZGF0YWJ1ZnNdKSkKLSAgICAgICAgICAgIGdvdG8gZmluYWxseTsKLSAgICAgICAgaW92c1tuZGF0YWJ1ZnNdLmlvdl9iYXNlID0gZGF0YWJ1ZnNbbmRhdGFidWZzXS5idWY7Ci0gICAgICAgIGlvdnNbbmRhdGFidWZzXS5pb3ZfbGVuID0gZGF0YWJ1ZnNbbmRhdGFidWZzXS5sZW47CiAgICAgfQogCiAgICAgaWYgKGNtc2dfYXJnID09IE5VTEwpCkBAIC0zODg1LDExICs0MDgyLDEzIEBACiAgICAgaWYgKG5jbXNnYnVmcyA+IDApIHsKICAgICAgICAgc3RydWN0IGNtc2doZHIgKmNtc2doID0gTlVMTDsKIAotICAgICAgICBpZiAoKG1zZy5tc2dfY29udHJvbCA9IGNvbnRyb2xidWYgPQotICAgICAgICAgICAgIFB5TWVtX01hbGxvYyhjb250cm9sbGVuKSkgPT0gTlVMTCkgeworICAgICAgICBjb250cm9sYnVmID0gUHlNZW1fTWFsbG9jKGNvbnRyb2xsZW4pOworICAgICAgICBpZiAoY29udHJvbGJ1ZiA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICAgICAgZ290byBmaW5hbGx5OwogICAgICAgICB9CisgICAgICAgIG1zZy5tc2dfY29udHJvbCA9IGNvbnRyb2xidWY7CisKICAgICAgICAgbXNnLm1zZ19jb250cm9sbGVuID0gY29udHJvbGxlbjsKIAogICAgICAgICAvKiBOZWVkIHRvIHplcm8gb3V0IHRoZSBidWZmZXIgYXMgYSB3b3JrYXJvdW5kIGZvciBnbGliYydzCkBAIC0zOTU0LDExICs0MTUzLDExIEBACiAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmNtc2dzW2ldLmRhdGEpOwogICAgIFB5TWVtX0ZyZWUoY21zZ3MpOwogICAgIFB5X1hERUNSRUYoY21zZ19mYXN0KTsKLSAgICBmb3IgKGkgPSAwOyBpIDwgbmRhdGFidWZzOyBpKyspCisgICAgUHlNZW1fRnJlZShtc2cubXNnX2lvdik7CisgICAgZm9yIChpID0gMDsgaSA8IG5kYXRhYnVmczsgaSsrKSB7CiAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGFidWZzW2ldKTsKKyAgICB9CiAgICAgUHlNZW1fRnJlZShkYXRhYnVmcyk7Ci0gICAgUHlNZW1fRnJlZShpb3ZzKTsKLSAgICBQeV9YREVDUkVGKGRhdGFfZmFzdCk7CiAgICAgcmV0dXJuIHJldHZhbDsKIH0KIApAQCAtMzk4MCw2ICs0MTc5LDE3MSBAQAogZGF0YSBzZW50LiIpOwogI2VuZGlmICAgIC8qIENNU0dfTEVOICovCiAKKyNpZmRlZiBIQVZFX1NPQ0tBRERSX0FMRworc3RhdGljIFB5T2JqZWN0Kgorc29ja19zZW5kbXNnX2FmYWxnKFB5U29ja2V0U29ja09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIFB5T2JqZWN0ICpyZXR2YWwgPSBOVUxMOworCisgICAgUHlfc3NpemVfdCBpLCBuZGF0YWJ1ZnMgPSAwOworICAgIFB5X2J1ZmZlciAqZGF0YWJ1ZnMgPSBOVUxMOworICAgIFB5T2JqZWN0ICpkYXRhX2FyZyA9IE5VTEw7CisKKyAgICBQeV9idWZmZXIgaXYgPSB7TlVMTCwgTlVMTH07CisKKyAgICBQeU9iamVjdCAqb3BvYmogPSBOVUxMOworICAgIGludCBvcCA9IC0xOworCisgICAgUHlPYmplY3QgKmFzc29jbGVub2JqID0gTlVMTDsKKyAgICBpbnQgYXNzb2NsZW4gPSAtMTsKKworICAgIHVuc2lnbmVkIGludCAqdWlwdHI7CisgICAgaW50IGZsYWdzID0gMDsKKworICAgIHN0cnVjdCBtc2doZHIgbXNnOworICAgIHN0cnVjdCBjbXNnaGRyICpoZWFkZXIgPSBOVUxMOworICAgIHN0cnVjdCBhZl9hbGdfaXYgKmFsZ19pdiA9IE5VTEw7CisgICAgc3RydWN0IHNvY2tfc2VuZG1zZyBjdHg7CisgICAgUHlfc3NpemVfdCBjb250cm9sbGVuOworICAgIHZvaWQgKmNvbnRyb2xidWYgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJtc2ciLCAib3AiLCAiaXYiLCAiYXNzb2NsZW4iLCAiZmxhZ3MiLCAwfTsKKworICAgIGlmIChzZWxmLT5zb2NrX2ZhbWlseSAhPSBBRl9BTEcpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiYWxnc2V0IGlzIG9ubHkgc3VwcG9ydGVkIGZvciBBRl9BTEciKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAifE8kTyF5Kk8haTpzZW5kbXNnX2FmYWxnIiwga2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRhdGFfYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUxvbmdfVHlwZSwgJm9wb2JqLCAmaXYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5TG9uZ19UeXBlLCAmYXNzb2NsZW5vYmosICZmbGFncykpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbWVtc2V0KCZtc2csIDAsIHNpemVvZihtc2cpKTsKKworICAgIC8qIG9wIGlzIGEgcmVxdWlyZWQsIGtleXdvcmQtb25seSBhcmd1bWVudCA+PSAwICovCisgICAgaWYgKG9wb2JqICE9IE5VTEwpIHsKKyAgICAgICAgb3AgPSBfUHlMb25nX0FzSW50KG9wb2JqKTsKKyAgICB9CisgICAgaWYgKG9wIDwgMCkgeworICAgICAgICAvKiBvdmVycmlkZSBleGNlcHRpb24gZnJvbSBfUHlMb25nX0FzSW50KCkgKi8KKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIG9yIG1pc3NpbmcgYXJndW1lbnQgJ29wJyIpOworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorICAgIC8qIGFzc29jbGVuIGlzIG9wdGlvbmFsIGJ1dCBtdXN0IGJlID49IDAgKi8KKyAgICBpZiAoYXNzb2NsZW5vYmogIT0gTlVMTCkgeworICAgICAgICBhc3NvY2xlbiA9IF9QeUxvbmdfQXNJbnQoYXNzb2NsZW5vYmopOworICAgICAgICBpZiAoYXNzb2NsZW4gPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgZ290byBmaW5hbGx5OworICAgICAgICB9CisgICAgICAgIGlmIChhc3NvY2xlbiA8IDApIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFzc29jbGVuIG11c3QgYmUgcG9zaXRpdmUiKTsKKyAgICAgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNvbnRyb2xsZW4gPSBDTVNHX1NQQUNFKDQpOworICAgIGlmIChpdi5idWYgIT0gTlVMTCkgeworICAgICAgICBjb250cm9sbGVuICs9IENNU0dfU1BBQ0Uoc2l6ZW9mKCphbGdfaXYpICsgaXYubGVuKTsKKyAgICB9CisgICAgaWYgKGFzc29jbGVuID49IDApIHsKKyAgICAgICAgY29udHJvbGxlbiArPSBDTVNHX1NQQUNFKDQpOworICAgIH0KKworICAgIGNvbnRyb2xidWYgPSBQeU1lbV9NYWxsb2MoY29udHJvbGxlbik7CisgICAgaWYgKGNvbnRyb2xidWYgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorICAgIG1lbXNldChjb250cm9sYnVmLCAwLCBjb250cm9sbGVuKTsKKworICAgIG1zZy5tc2dfY29udHJvbGxlbiA9IGNvbnRyb2xsZW47CisgICAgbXNnLm1zZ19jb250cm9sID0gY29udHJvbGJ1ZjsKKworICAgIC8qIEZpbGwgaW4gYW4gaW92ZWMgZm9yIGVhY2ggbWVzc2FnZSBwYXJ0LCBhbmQgc2F2ZSB0aGUgUHlfYnVmZmVyCisgICAgICAgc3RydWN0cyB0byByZWxlYXNlIGFmdGVyd2FyZHMuICovCisgICAgaWYgKGRhdGFfYXJnICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKHNvY2tfc2VuZG1zZ19pb3ZlYyhzZWxmLCBkYXRhX2FyZywgJm1zZywgJmRhdGFidWZzLCAmbmRhdGFidWZzKSA9PSAtMSkgeworICAgICAgICAgICAgZ290byBmaW5hbGx5OworICAgICAgICB9CisgICAgfQorCisgICAgLyogc2V0IG9wZXJhdGlvbiB0byBlbmNyeXB0IG9yIGRlY3J5cHQgKi8KKyAgICBoZWFkZXIgPSBDTVNHX0ZJUlNUSERSKCZtc2cpOworICAgIGlmIChoZWFkZXIgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInVuZXhwZWN0ZWQgTlVMTCByZXN1bHQgZnJvbSBDTVNHX0ZJUlNUSERSIik7CisgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICB9CisgICAgaGVhZGVyLT5jbXNnX2xldmVsID0gU09MX0FMRzsKKyAgICBoZWFkZXItPmNtc2dfdHlwZSA9IEFMR19TRVRfT1A7CisgICAgaGVhZGVyLT5jbXNnX2xlbiA9IENNU0dfTEVOKDQpOworICAgIHVpcHRyID0gKHZvaWQqKUNNU0dfREFUQShoZWFkZXIpOworICAgICp1aXB0ciA9ICh1bnNpZ25lZCBpbnQpb3A7CisKKyAgICAvKiBzZXQgaW5pdGlhbGl6YXRpb24gdmVjdG9yICovCisgICAgaWYgKGl2LmJ1ZiAhPSBOVUxMKSB7CisgICAgICAgIGhlYWRlciA9IENNU0dfTlhUSERSKCZtc2csIGhlYWRlcik7CisgICAgICAgIGlmIChoZWFkZXIgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5leHBlY3RlZCBOVUxMIHJlc3VsdCBmcm9tIENNU0dfTlhUSERSKGl2KSIpOworICAgICAgICAgICAgZ290byBmaW5hbGx5OworICAgICAgICB9CisgICAgICAgIGhlYWRlci0+Y21zZ19sZXZlbCA9IFNPTF9BTEc7CisgICAgICAgIGhlYWRlci0+Y21zZ190eXBlID0gQUxHX1NFVF9JVjsKKyAgICAgICAgaGVhZGVyLT5jbXNnX2xlbiA9IENNU0dfU1BBQ0Uoc2l6ZW9mKCphbGdfaXYpICsgaXYubGVuKTsKKyAgICAgICAgYWxnX2l2ID0gKHZvaWQqKUNNU0dfREFUQShoZWFkZXIpOworICAgICAgICBhbGdfaXYtPml2bGVuID0gaXYubGVuOworICAgICAgICBtZW1jcHkoYWxnX2l2LT5pdiwgaXYuYnVmLCBpdi5sZW4pOworICAgIH0KKworICAgIC8qIHNldCBsZW5ndGggb2YgYXNzb2NpYXRlZCBkYXRhIGZvciBBRUFEICovCisgICAgaWYgKGFzc29jbGVuID49IDApIHsKKyAgICAgICAgaGVhZGVyID0gQ01TR19OWFRIRFIoJm1zZywgaGVhZGVyKTsKKyAgICAgICAgaWYgKGhlYWRlciA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmV4cGVjdGVkIE5VTEwgcmVzdWx0IGZyb20gQ01TR19OWFRIRFIoYXNzb2MpIik7CisgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgICAgIH0KKyAgICAgICAgaGVhZGVyLT5jbXNnX2xldmVsID0gU09MX0FMRzsKKyAgICAgICAgaGVhZGVyLT5jbXNnX3R5cGUgPSBBTEdfU0VUX0FFQURfQVNTT0NMRU47CisgICAgICAgIGhlYWRlci0+Y21zZ19sZW4gPSBDTVNHX0xFTig0KTsKKyAgICAgICAgdWlwdHIgPSAodm9pZCopQ01TR19EQVRBKGhlYWRlcik7CisgICAgICAgICp1aXB0ciA9ICh1bnNpZ25lZCBpbnQpYXNzb2NsZW47CisgICAgfQorCisgICAgY3R4Lm1zZyA9ICZtc2c7CisgICAgY3R4LmZsYWdzID0gZmxhZ3M7CisgICAgaWYgKHNvY2tfY2FsbChzZWxmLCAxLCBzb2NrX3NlbmRtc2dfaW1wbCwgJmN0eCkgPCAwKSB7CisgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICB9CisKKyAgICByZXR2YWwgPSBQeUxvbmdfRnJvbVNzaXplX3QoY3R4LnJlc3VsdCk7CisKKyAgZmluYWxseToKKyAgICBQeU1lbV9GcmVlKGNvbnRyb2xidWYpOworICAgIGlmIChpdi5idWYgIT0gTlVMTCkgeworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZpdik7CisgICAgfQorICAgIFB5TWVtX0ZyZWUobXNnLm1zZ19pb3YpOworICAgIGZvciAoaSA9IDA7IGkgPCBuZGF0YWJ1ZnM7IGkrKykgeworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhYnVmc1tpXSk7CisgICAgfQorICAgIFB5TWVtX0ZyZWUoZGF0YWJ1ZnMpOworICAgIHJldHVybiByZXR2YWw7Cit9CisKK1B5RG9jX1NUUlZBUihzZW5kbXNnX2FmYWxnX2RvYywKKyJzZW5kbXNnX2FmYWxnKFttc2ddLCAqLCBvcFssIGl2WywgYXNzb2NsZW5bLCBmbGFncz1NU0dfTU9SRV1dXSlcblwKK1xuXAorU2V0IG9wZXJhdGlvbiBtb2RlLCBJViBhbmQgbGVuZ3RoIG9mIGFzc29jaWF0ZWQgZGF0YSBmb3IgYW4gQUZfQUxHXG5cCitvcGVyYXRpb24gc29ja2V0LiIpOworI2VuZGlmCiAKIC8qIHMuc2h1dGRvd24oaG93KSBtZXRob2QgKi8KIApAQCAtNDAzOCw2ICs0NDAyLDE3IEBACiAgICAgICAgICAgICByZXR1cm4gc2V0X2Vycm9yKCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKHJlY3YpOyB9CisjaWYgZGVmaW5lZChTSU9fTE9PUEJBQ0tfRkFTVF9QQVRIKQorICAgIGNhc2UgU0lPX0xPT1BCQUNLX0ZBU1RfUEFUSDogeworICAgICAgICB1bnNpZ25lZCBpbnQgb3B0aW9uOworICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJnLCAia0k6aW9jdGwiLCAmY21kLCAmb3B0aW9uKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoV1NBSW9jdGwocy0+c29ja19mZCwgY21kLCAmb3B0aW9uLCBzaXplb2Yob3B0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAwLCAmcmVjdiwgTlVMTCwgTlVMTCkgPT0gU09DS0VUX0VSUk9SKSB7CisgICAgICAgICAgICByZXR1cm4gc2V0X2Vycm9yKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKHJlY3YpOyB9CisjZW5kaWYKICAgICBkZWZhdWx0OgogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgImludmFsaWQgaW9jdGwgY29tbWFuZCAlZCIsIGNtZCk7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNDA0OCw3ICs0NDIzLDggQEAKIFxuXAogQ29udHJvbCB0aGUgc29ja2V0IHdpdGggV1NBSW9jdGwgc3lzY2FsbC4gQ3VycmVudGx5IHN1cHBvcnRlZCAnY21kJyB2YWx1ZXMgYXJlXG5cCiBTSU9fUkNWQUxMOiAgJ29wdGlvbicgbXVzdCBiZSBvbmUgb2YgdGhlIHNvY2tldC5SQ1ZBTExfKiBjb25zdGFudHMuXG5cCi1TSU9fS0VFUEFMSVZFX1ZBTFM6ICAnb3B0aW9uJyBpcyBhIHR1cGxlIG9mIChvbm9mZiwgdGltZW91dCwgaW50ZXJ2YWwpLiIpOworU0lPX0tFRVBBTElWRV9WQUxTOiAgJ29wdGlvbicgaXMgYSB0dXBsZSBvZiAob25vZmYsIHRpbWVvdXQsIGludGVydmFsKS5cblwKK1NJT19MT09QQkFDS19GQVNUX1BBVEg6ICdvcHRpb24nIGlzIGEgYm9vbGVhbiB2YWx1ZSwgYW5kIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQiKTsKICNlbmRpZgogCiAjaWYgZGVmaW5lZChNU19XSU5ET1dTKQpAQCAtNDE0Nyw2ICs0NTIzLDEwIEBACiAgICAgeyJzZW5kbXNnIiwgICAgICAgICAgIChQeUNGdW5jdGlvbilzb2NrX3NlbmRtc2csIE1FVEhfVkFSQVJHUywKICAgICAgICAgICAgICAgICAgICAgICBzZW5kbXNnX2RvY30sCiAjZW5kaWYKKyNpZmRlZiBIQVZFX1NPQ0tBRERSX0FMRworICAgIHsic2VuZG1zZ19hZmFsZyIsICAgICAoUHlDRnVuY3Rpb24pc29ja19zZW5kbXNnX2FmYWxnLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgIHNlbmRtc2dfYWZhbGdfZG9jfSwKKyNlbmRpZgogICAgIHtOVUxMLCAgICAgICAgICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTQxNjcsMjIgKzQ1NDcsNDUgQEAKICAgIEZpcnN0IGNsb3NlIHRoZSBmaWxlIGRlc2NyaXB0aW9uLiAqLwogCiBzdGF0aWMgdm9pZAorc29ja19maW5hbGl6ZShQeVNvY2tldFNvY2tPYmplY3QgKnMpCit7CisgICAgU09DS0VUX1QgZmQ7CisgICAgUHlPYmplY3QgKmVycm9yX3R5cGUsICplcnJvcl92YWx1ZSwgKmVycm9yX3RyYWNlYmFjazsKKworICAgIC8qIFNhdmUgdGhlIGN1cnJlbnQgZXhjZXB0aW9uLCBpZiBhbnkuICovCisgICAgUHlFcnJfRmV0Y2goJmVycm9yX3R5cGUsICZlcnJvcl92YWx1ZSwgJmVycm9yX3RyYWNlYmFjayk7CisKKyAgICBpZiAocy0+c29ja19mZCAhPSBJTlZBTElEX1NPQ0tFVCkgeworICAgICAgICBpZiAoUHlFcnJfUmVzb3VyY2VXYXJuaW5nKChQeU9iamVjdCAqKXMsIDEsICJ1bmNsb3NlZCAlUiIsIHMpKSB7CisgICAgICAgICAgICAvKiBTcHVyaW91cyBlcnJvcnMgY2FuIGFwcGVhciBhdCBzaHV0ZG93biAqLworICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfV2FybmluZykpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUoKFB5T2JqZWN0ICopcyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvKiBPbmx5IGNsb3NlIHRoZSBzb2NrZXQgKmFmdGVyKiBsb2dnaW5nIHRoZSBSZXNvdXJjZVdhcm5pbmcgd2FybmluZworICAgICAgICAgICB0byBhbGxvdyB0aGUgbG9nZ2VyIHRvIGNhbGwgc29ja2V0IG1ldGhvZHMgbGlrZQorICAgICAgICAgICBzb2NrZXQuZ2V0c29ja25hbWUoKS4gSWYgdGhlIHNvY2tldCBpcyBjbG9zZWQgYmVmb3JlLCBzb2NrZXQKKyAgICAgICAgICAgbWV0aG9kcyBmYWlscyB3aXRoIHRoZSBFQkFERiBlcnJvci4gKi8KKyAgICAgICAgZmQgPSBzLT5zb2NrX2ZkOworICAgICAgICBzLT5zb2NrX2ZkID0gSU5WQUxJRF9TT0NLRVQ7CisKKyAgICAgICAgLyogV2UgZG8gbm90IHdhbnQgdG8gcmV0cnkgdXBvbiBFSU5UUjogc2VlIHNvY2tfY2xvc2UoKSAqLworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgICh2b2lkKSBTT0NLRVRDTE9TRShmZCk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfQorCisgICAgLyogUmVzdG9yZSB0aGUgc2F2ZWQgZXhjZXB0aW9uLiAqLworICAgIFB5RXJyX1Jlc3RvcmUoZXJyb3JfdHlwZSwgZXJyb3JfdmFsdWUsIGVycm9yX3RyYWNlYmFjayk7Cit9CisKK3N0YXRpYyB2b2lkCiBzb2NrX2RlYWxsb2MoUHlTb2NrZXRTb2NrT2JqZWN0ICpzKQogewotICAgIGlmIChzLT5zb2NrX2ZkICE9IElOVkFMSURfU09DS0VUKSB7Ci0gICAgICAgIFB5T2JqZWN0ICpleGMsICp2YWwsICp0YjsKLSAgICAgICAgUHlfc3NpemVfdCBvbGRfcmVmY291bnQgPSBQeV9SRUZDTlQocyk7Ci0gICAgICAgICsrUHlfUkVGQ05UKHMpOwotICAgICAgICBQeUVycl9GZXRjaCgmZXhjLCAmdmFsLCAmdGIpOwotICAgICAgICBpZiAoUHlFcnJfV2FybkZvcm1hdChQeUV4Y19SZXNvdXJjZVdhcm5pbmcsIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmNsb3NlZCAlUiIsIHMpKQotICAgICAgICAgICAgLyogU3B1cmlvdXMgZXJyb3JzIGNhbiBhcHBlYXIgYXQgc2h1dGRvd24gKi8KLSAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1dhcm5pbmcpKQotICAgICAgICAgICAgICAgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZSgoUHlPYmplY3QgKikgcyk7Ci0gICAgICAgIFB5RXJyX1Jlc3RvcmUoZXhjLCB2YWwsIHRiKTsKLSAgICAgICAgKHZvaWQpIFNPQ0tFVENMT1NFKHMtPnNvY2tfZmQpOwotICAgICAgICBQeV9SRUZDTlQocykgPSBvbGRfcmVmY291bnQ7Ci0gICAgfQorICAgIGlmIChQeU9iamVjdF9DYWxsRmluYWxpemVyRnJvbURlYWxsb2MoKFB5T2JqZWN0ICopcykgPCAwKQorICAgICAgICByZXR1cm47CisKICAgICBQeV9UWVBFKHMpLT50cF9mcmVlKChQeU9iamVjdCAqKXMpOwogfQogCkBAIC00MzcwLDcgKzQ3NzMsMTAgQEAKICAgICAgICAgfQogI2VuZGlmCiAgICAgfQotICAgIGluaXRfc29ja29iamVjdChzLCBmZCwgZmFtaWx5LCB0eXBlLCBwcm90byk7CisgICAgaWYgKGluaXRfc29ja29iamVjdChzLCBmZCwgZmFtaWx5LCB0eXBlLCBwcm90bykgPT0gLTEpIHsKKyAgICAgICAgU09DS0VUQ0xPU0UoZmQpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQogCiAgICAgcmV0dXJuIDA7CiAKQEAgLTQzOTksNyArNDgwNSw4IEBACiAgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUsIC8qIHRwX2ZsYWdzICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRQorICAgICAgICB8IFB5X1RQRkxBR1NfSEFWRV9GSU5BTElaRSwgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KICAgICBzb2NrX2RvYywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCkBAIC00NDE5LDYgKzQ4MjYsMTUgQEAKICAgICBQeVR5cGVfR2VuZXJpY0FsbG9jLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCiAgICAgc29ja19uZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KICAgICBQeU9iamVjdF9EZWwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2lzX2djICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbXJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWNoZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3ViY2xhc3NlcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RlbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdmVyc2lvbl90YWcgKi8KKyAgICAoZGVzdHJ1Y3Rvcilzb2NrX2ZpbmFsaXplLCAgICAgICAgICAgICAgICAgIC8qIHRwX2ZpbmFsaXplICovCiB9OwogCiAKQEAgLTU0NTQsMTAgKzU4NzAsNiBAQAogICAgIH0gZWxzZSB7CiAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyhyZXR2YWwpOwogICAgIH0KLQotICAgIC8qIE5PVFJFQUNIRUQgKi8KLSAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiaW52YWxpZCBoYW5kbGluZyBvZiBpbmV0X250b3AiKTsKLSAgICByZXR1cm4gTlVMTDsKIH0KIAogI2VsaWYgZGVmaW5lZChNU19XSU5ET1dTKQpAQCAtNTU3Nyw3ICs1OTg5LDcgQEAKICAgICAgICAgUHlPU19zbnByaW50ZihwYnVmLCBzaXplb2YocGJ1ZiksICIlbGQiLCB2YWx1ZSk7CiAgICAgICAgIHBwdHIgPSBwYnVmOwogICAgIH0gZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKHBvYmopKSB7Ci0gICAgICAgIHBwdHIgPSBfUHlVbmljb2RlX0FzU3RyaW5nKHBvYmopOworICAgICAgICBwcHRyID0gUHlVbmljb2RlX0FzVVRGOChwb2JqKTsKICAgICAgICAgaWYgKHBwdHIgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZXJyOwogICAgIH0gZWxzZSBpZiAoUHlCeXRlc19DaGVjayhwb2JqKSkgewpAQCAtNjE5MSw5ICs2NjAzLDYgQEAKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBRl9VTlNQRUMpOwogI2VuZGlmCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUZfSU5FVCk7Ci0jaWZkZWYgQUZfSU5FVDYKLSAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBRl9JTkVUNik7Ci0jZW5kaWYgLyogQUZfSU5FVDYgKi8KICNpZiBkZWZpbmVkKEFGX1VOSVgpCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUZfVU5JWCk7CiAjZW5kaWYgLyogQUZfVU5JWCAqLwpAQCAtNjIyNCw2ICs2NjMzLDkgQEAKICAgICAvKiBSZXNlcnZlZCBmb3IgV2VybmVyJ3MgQVRNICovCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUZfQUFMNSk7CiAjZW5kaWYKKyNpZmRlZiBIQVZFX1NPQ0tBRERSX0FMRworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFGX0FMRyk7IC8qIExpbnV4IGNyeXB0byAqLworI2VuZGlmCiAjaWZkZWYgQUZfWDI1CiAgICAgLyogUmVzZXJ2ZWQgZm9yIFguMjUgcHJvamVjdCAqLwogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFGX1gyNSk7CkBAIC02Mjg1LDYgKzY2OTcsOSBAQAogI2lmZGVmIE5FVExJTktfVEFQQkFTRQogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIE5FVExJTktfVEFQQkFTRSk7CiAjZW5kaWYKKyNpZmRlZiBORVRMSU5LX0NSWVBUTworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIE5FVExJTktfQ1JZUFRPKTsKKyNlbmRpZgogI2VuZGlmIC8qIEFGX05FVExJTksgKi8KICNpZmRlZiBBRl9ST1VURQogICAgIC8qIEFsaWFzIHRvIGVtdWxhdGUgNC40QlNEICovCkBAIC02NDM4LDExICs2ODUzLDMwIEBACiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgVElQQ19UT1BfU1JWKTsKICNlbmRpZgogCisjaWZkZWYgSEFWRV9TT0NLQUREUl9BTEcKKyAgICAvKiBTb2NrZXQgb3B0aW9ucyAqLworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFMR19TRVRfS0VZKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBTEdfU0VUX0lWKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBTEdfU0VUX09QKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBTEdfU0VUX0FFQURfQVNTT0NMRU4pOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFMR19TRVRfQUVBRF9BVVRIU0laRSk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUxHX1NFVF9QVUJLRVkpOworCisgICAgLyogT3BlcmF0aW9ucyAqLworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFMR19PUF9ERUNSWVBUKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBTEdfT1BfRU5DUllQVCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUxHX09QX1NJR04pOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFMR19PUF9WRVJJRlkpOworI2VuZGlmCisKICAgICAvKiBTb2NrZXQgdHlwZXMgKi8KICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT0NLX1NUUkVBTSk7CiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09DS19ER1JBTSk7CiAvKiBXZSBoYXZlIGluY29tcGxldGUgc29ja2V0IHN1cHBvcnQuICovCisjaWZkZWYgU09DS19SQVcKKyAgICAvKiBTT0NLX1JBVyBpcyBtYXJrZWQgYXMgb3B0aW9uYWwgaW4gdGhlIFBPU0lYIHNwZWNpZmljYXRpb24gKi8KICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT0NLX1JBVyk7CisjZW5kaWYKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT0NLX1NFUVBBQ0tFVCk7CiAjaWYgZGVmaW5lZChTT0NLX1JETSkKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT0NLX1JETSk7CkBAIC02NDg1LDkgKzY5MTksMTEgQEAKICNpZmRlZiAgU09fT09CSU5MSU5FCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09fT09CSU5MSU5FKTsKICNlbmRpZgorI2lmbmRlZiBfX0dOVV9fCiAjaWZkZWYgIFNPX1JFVVNFUE9SVAogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPX1JFVVNFUE9SVCk7CiAjZW5kaWYKKyNlbmRpZgogI2lmZGVmICBTT19TTkRCVUYKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT19TTkRCVUYpOwogI2VuZGlmCkBAIC02NTI0LDYgKzY5NjAsMTIgQEAKICNpZmRlZiAgTE9DQUxfUEVFUkNSRUQKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBMT0NBTF9QRUVSQ1JFRCk7CiAjZW5kaWYKKyNpZmRlZiAgU09fUEFTU1NFQworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPX1BBU1NTRUMpOworI2VuZGlmCisjaWZkZWYgIFNPX1BFRVJTRUMKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT19QRUVSU0VDKTsKKyNlbmRpZgogI2lmZGVmICBTT19CSU5EVE9ERVZJQ0UKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT19CSU5EVE9ERVZJQ0UpOwogI2VuZGlmCkBAIC02NTMzLDYgKzY5NzUsMTIgQEAKICNpZmRlZiAgU09fTUFSSwogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPX01BUkspOwogI2VuZGlmCisjaWZkZWYgU09fRE9NQUlOCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09fRE9NQUlOKTsKKyNlbmRpZgorI2lmZGVmIFNPX1BST1RPQ09MCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09fUFJPVE9DT0wpOworI2VuZGlmCiAKICAgICAvKiBNYXhpbXVtIG51bWJlciBvZiBjb25uZWN0aW9ucyBmb3IgImxpc3RlbiIgKi8KICNpZmRlZiAgU09NQVhDT05OCkBAIC02NjkxLDYgKzcxMzksOSBAQAogI2lmZGVmIFNPTF9SRFMKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT0xfUkRTKTsKICNlbmRpZgorI2lmZGVmIEhBVkVfU09DS0FERFJfQUxHCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09MX0FMRyk7CisjZW5kaWYKICNpZmRlZiBSRFNfQ0FOQ0VMX1NFTlRfVE8KICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBSRFNfQ0FOQ0VMX1NFTlRfVE8pOwogI2VuZGlmCkBAIC03MDYxLDYgKzc1MTIsMTIgQEAKICNpZmRlZiAgVENQX0ZBU1RPUEVOCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgVENQX0ZBU1RPUEVOKTsKICNlbmRpZgorI2lmZGVmICBUQ1BfQ09OR0VTVElPTgorICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFRDUF9DT05HRVNUSU9OKTsKKyNlbmRpZgorI2lmZGVmICBUQ1BfVVNFUl9USU1FT1VUCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgVENQX1VTRVJfVElNRU9VVCk7CisjZW5kaWYKIAogICAgIC8qIElQWCBvcHRpb25zICovCiAjaWZkZWYgIElQWF9UWVBFCkBAIC03MjI4LDggKzc2ODUsMTYgQEAKIAogI2lmZGVmIFNJT19SQ1ZBTEwKICAgICB7Ci0gICAgICAgIERXT1JEIGNvZGVzW10gPSB7U0lPX1JDVkFMTCwgU0lPX0tFRVBBTElWRV9WQUxTfTsKLSAgICAgICAgY29uc3QgY2hhciAqbmFtZXNbXSA9IHsiU0lPX1JDVkFMTCIsICJTSU9fS0VFUEFMSVZFX1ZBTFMifTsKKyAgICAgICAgRFdPUkQgY29kZXNbXSA9IHtTSU9fUkNWQUxMLCBTSU9fS0VFUEFMSVZFX1ZBTFMsCisjaWYgZGVmaW5lZChTSU9fTE9PUEJBQ0tfRkFTVF9QQVRIKQorICAgICAgICAgICAgU0lPX0xPT1BCQUNLX0ZBU1RfUEFUSAorI2VuZGlmCisgICAgICAgIH07CisgICAgICAgIGNvbnN0IGNoYXIgKm5hbWVzW10gPSB7IlNJT19SQ1ZBTEwiLCAiU0lPX0tFRVBBTElWRV9WQUxTIiwKKyNpZiBkZWZpbmVkKFNJT19MT09QQkFDS19GQVNUX1BBVEgpCisgICAgICAgICAgICAiU0lPX0xPT1BCQUNLX0ZBU1RfUEFUSCIKKyNlbmRpZgorICAgICAgICB9OwogICAgICAgICBpbnQgaTsKICAgICAgICAgZm9yKGkgPSAwOyBpPFB5X0FSUkFZX0xFTkdUSChjb2Rlcyk7ICsraSkgewogICAgICAgICAgICAgUHlPYmplY3QgKnRtcDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvc3B3ZG1vZHVsZS5jIGIvTW9kdWxlcy9zcHdkbW9kdWxlLmMKaW5kZXggNGI5ZjNjZC4uNTU2YTcxNSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zcHdkbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9zcHdkbW9kdWxlLmMKQEAgLTEzNyw3ICsxMzcsMTAgQEAKICAgICBpZiAoUHlCeXRlc19Bc1N0cmluZ0FuZFNpemUoYnl0ZXMsICZuYW1lLCBOVUxMKSA9PSAtMSkKICAgICAgICAgZ290byBvdXQ7CiAgICAgaWYgKChwID0gZ2V0c3BuYW0obmFtZSkpID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0tleUVycm9yLCAiZ2V0c3BuYW0oKTogbmFtZSBub3QgZm91bmQiKTsKKyAgICAgICAgaWYgKGVycm5vICE9IDApCisgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19LZXlFcnJvciwgImdldHNwbmFtKCk6IG5hbWUgbm90IGZvdW5kIik7CiAgICAgICAgIGdvdG8gb3V0OwogICAgIH0KICAgICByZXR2YWwgPSBta3NwZW50KHApOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zcmVfbGliLmggYi9Nb2R1bGVzL3NyZV9saWIuaAppbmRleCAxMjhjNzFlLi4wODY1ZmM2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3NyZV9saWIuaAorKysgYi9Nb2R1bGVzL3NyZV9saWIuaApAQCAtMzY3LDE0ICszNjcsMTIgQEAKICNkZWZpbmUgUkVUVVJOX09OX0ZBSUxVUkUoaSkgXAogICAgIGRvIHsgUkVUVVJOX09OX0VSUk9SKGkpOyBpZiAoaSA9PSAwKSBSRVRVUk5fRkFJTFVSRTsgfSB3aGlsZSAoMCkKIAotI2RlZmluZSBTRlkoeCkgI3gKLQogI2RlZmluZSBEQVRBX1NUQUNLX0FMTE9DKHN0YXRlLCB0eXBlLCBwdHIpIFwKIGRvIHsgXAogICAgIGFsbG9jX3BvcyA9IHN0YXRlLT5kYXRhX3N0YWNrX2Jhc2U7IFwKICAgICBUUkFDRSgoImFsbG9jYXRpbmcgJXMgaW4gJSIgUFlfRk9STUFUX1NJWkVfVCAiZCAiIFwKICAgICAgICAgICAgIiglIiBQWV9GT1JNQVRfU0laRV9UICJkKVxuIiwgXAotICAgICAgICAgICBTRlkodHlwZSksIGFsbG9jX3Bvcywgc2l6ZW9mKHR5cGUpKSk7IFwKKyAgICAgICAgICAgUHlfU1RSSU5HSUZZKHR5cGUpLCBhbGxvY19wb3MsIHNpemVvZih0eXBlKSkpOyBcCiAgICAgaWYgKHNpemVvZih0eXBlKSA+IHN0YXRlLT5kYXRhX3N0YWNrX3NpemUgLSBhbGxvY19wb3MpIHsgXAogICAgICAgICBpbnQgaiA9IGRhdGFfc3RhY2tfZ3JvdyhzdGF0ZSwgc2l6ZW9mKHR5cGUpKTsgXAogICAgICAgICBpZiAoaiA8IDApIHJldHVybiBqOyBcCkBAIC0zODcsNyArMzg1LDcgQEAKIAogI2RlZmluZSBEQVRBX1NUQUNLX0xPT0tVUF9BVChzdGF0ZSwgdHlwZSwgcHRyLCBwb3MpIFwKIGRvIHsgXAotICAgIFRSQUNFKCgibG9va2luZyB1cCAlcyBhdCAlIiBQWV9GT1JNQVRfU0laRV9UICJkXG4iLCBTRlkodHlwZSksIHBvcykpOyBcCisgICAgVFJBQ0UoKCJsb29raW5nIHVwICVzIGF0ICUiIFBZX0ZPUk1BVF9TSVpFX1QgImRcbiIsIFB5X1NUUklOR0lGWSh0eXBlKSwgcG9zKSk7IFwKICAgICBwdHIgPSAodHlwZSopKHN0YXRlLT5kYXRhX3N0YWNrK3Bvcyk7IFwKIH0gd2hpbGUgKDApCiAKQEAgLTUzMSw3ICs1MjksNyBAQAogICAgIGlmIChjdHgtPnBhdHRlcm5bMF0gPT0gU1JFX09QX0lORk8pIHsKICAgICAgICAgLyogb3B0aW1pemF0aW9uIGluZm8gYmxvY2sgKi8KICAgICAgICAgLyogPElORk8+IDwxPXNraXA+IDwyPWZsYWdzPiA8Mz1taW4+IC4uLiAqLwotICAgICAgICBpZiAoY3R4LT5wYXR0ZXJuWzNdICYmIChQeV91aW50cHRyX3QpKGVuZCAtIGN0eC0+cHRyKSA8IGN0eC0+cGF0dGVyblszXSkgeworICAgICAgICBpZiAoY3R4LT5wYXR0ZXJuWzNdICYmICh1aW50cHRyX3QpKGVuZCAtIGN0eC0+cHRyKSA8IGN0eC0+cGF0dGVyblszXSkgewogICAgICAgICAgICAgVFJBQ0UoKCJyZWplY3QgKGdvdCAlIiBQWV9GT1JNQVRfU0laRV9UICJkIGNoYXJzLCAiCiAgICAgICAgICAgICAgICAgICAgIm5lZWQgJSIgUFlfRk9STUFUX1NJWkVfVCAiZClcbiIsCiAgICAgICAgICAgICAgICAgICAgZW5kIC0gY3R4LT5wdHIsIChQeV9zc2l6ZV90KSBjdHgtPnBhdHRlcm5bM10pKTsKQEAgLTEyNTYsNyArMTI1NCwzMiBAQAogICAgICAgICAgICBwcmVmaXgsIHByZWZpeF9sZW4sIHByZWZpeF9za2lwKSk7CiAgICAgVFJBQ0UoKCJjaGFyc2V0ID0gJXBcbiIsIGNoYXJzZXQpKTsKIAotI2lmIGRlZmluZWQoVVNFX0ZBU1RfU0VBUkNIKQorICAgIGlmIChwcmVmaXhfbGVuID09IDEpIHsKKyAgICAgICAgLyogcGF0dGVybiBzdGFydHMgd2l0aCBhIGxpdGVyYWwgY2hhcmFjdGVyICovCisgICAgICAgIFNSRV9DSEFSIGMgPSAoU1JFX0NIQVIpIHByZWZpeFswXTsKKyNpZiBTSVpFT0ZfU1JFX0NIQVIgPCA0CisgICAgICAgIGlmICgoU1JFX0NPREUpIGMgIT0gcHJlZml4WzBdKQorICAgICAgICAgICAgcmV0dXJuIDA7IC8qIGxpdGVyYWwgY2FuJ3QgbWF0Y2g6IGRvZXNuJ3QgZml0IGluIGNoYXIgd2lkdGggKi8KKyNlbmRpZgorICAgICAgICBlbmQgPSAoU1JFX0NIQVIgKilzdGF0ZS0+ZW5kOworICAgICAgICB3aGlsZSAocHRyIDwgZW5kKSB7CisgICAgICAgICAgICB3aGlsZSAoKnB0ciAhPSBjKSB7CisgICAgICAgICAgICAgICAgaWYgKCsrcHRyID49IGVuZCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBUUkFDRSgoInwlcHwlcHxTRUFSQ0ggTElURVJBTFxuIiwgcGF0dGVybiwgcHRyKSk7CisgICAgICAgICAgICBzdGF0ZS0+c3RhcnQgPSBwdHI7CisgICAgICAgICAgICBzdGF0ZS0+cHRyID0gcHRyICsgcHJlZml4X3NraXA7CisgICAgICAgICAgICBpZiAoZmxhZ3MgJiBTUkVfSU5GT19MSVRFUkFMKQorICAgICAgICAgICAgICAgIHJldHVybiAxOyAvKiB3ZSBnb3QgYWxsIG9mIGl0ICovCisgICAgICAgICAgICBzdGF0dXMgPSBTUkUobWF0Y2gpKHN0YXRlLCBwYXR0ZXJuICsgMipwcmVmaXhfc2tpcCwgMCk7CisgICAgICAgICAgICBpZiAoc3RhdHVzICE9IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKKyAgICAgICAgICAgICsrcHRyOworICAgICAgICB9CisgICAgICAgIHJldHVybiAwOworICAgIH0KKwogICAgIGlmIChwcmVmaXhfbGVuID4gMSkgewogICAgICAgICAvKiBwYXR0ZXJuIHN0YXJ0cyB3aXRoIGEga25vd24gcHJlZml4LiAgdXNlIHRoZSBvdmVybGFwCiAgICAgICAgICAgIHRhYmxlIHRvIHNraXAgZm9yd2FyZCBhcyBmYXN0IGFzIHdlIHBvc3NpYmx5IGNhbiAqLwpAQCAtMTMwNSwzMiArMTMyOCw4IEBACiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotI2VuZGlmCiAKLSAgICBpZiAocGF0dGVyblswXSA9PSBTUkVfT1BfTElURVJBTCkgewotICAgICAgICAvKiBwYXR0ZXJuIHN0YXJ0cyB3aXRoIGEgbGl0ZXJhbCBjaGFyYWN0ZXIuICB0aGlzIGlzIHVzZWQKLSAgICAgICAgICAgZm9yIHNob3J0IHByZWZpeGVzLCBhbmQgaWYgZmFzdCBzZWFyY2ggaXMgZGlzYWJsZWQgKi8KLSAgICAgICAgU1JFX0NIQVIgYyA9IChTUkVfQ0hBUikgcGF0dGVyblsxXTsKLSNpZiBTSVpFT0ZfU1JFX0NIQVIgPCA0Ci0gICAgICAgIGlmICgoU1JFX0NPREUpIGMgIT0gcGF0dGVyblsxXSkKLSAgICAgICAgICAgIHJldHVybiAwOyAvKiBsaXRlcmFsIGNhbid0IG1hdGNoOiBkb2Vzbid0IGZpdCBpbiBjaGFyIHdpZHRoICovCi0jZW5kaWYKLSAgICAgICAgZW5kID0gKFNSRV9DSEFSICopc3RhdGUtPmVuZDsKLSAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCkgewotICAgICAgICAgICAgd2hpbGUgKCpwdHIgIT0gYykgewotICAgICAgICAgICAgICAgIGlmICgrK3B0ciA+PSBlbmQpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgVFJBQ0UoKCJ8JXB8JXB8U0VBUkNIIExJVEVSQUxcbiIsIHBhdHRlcm4sIHB0cikpOwotICAgICAgICAgICAgc3RhdGUtPnN0YXJ0ID0gcHRyOwotICAgICAgICAgICAgc3RhdGUtPnB0ciA9ICsrcHRyOwotICAgICAgICAgICAgaWYgKGZsYWdzICYgU1JFX0lORk9fTElURVJBTCkKLSAgICAgICAgICAgICAgICByZXR1cm4gMTsgLyogd2UgZ290IGFsbCBvZiBpdCAqLwotICAgICAgICAgICAgc3RhdHVzID0gU1JFKG1hdGNoKShzdGF0ZSwgcGF0dGVybiArIDIsIDApOwotICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSAwKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChjaGFyc2V0KSB7CisgICAgaWYgKGNoYXJzZXQpIHsKICAgICAgICAgLyogcGF0dGVybiBzdGFydHMgd2l0aCBhIGNoYXJhY3RlciBmcm9tIGEga25vd24gc2V0ICovCiAgICAgICAgIGVuZCA9IChTUkVfQ0hBUiAqKXN0YXRlLT5lbmQ7CiAgICAgICAgIGZvciAoOzspIHsKZGlmZiAtLWdpdCBhL01vZHVsZXMvc3ltdGFibGVtb2R1bGUuYyBiL01vZHVsZXMvc3ltdGFibGVtb2R1bGUuYwppbmRleCBmODRjYzc4Li4zNGE2ZmM1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3N5bXRhYmxlbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9zeW10YWJsZW1vZHVsZS5jCkBAIC03OSw2ICs3OSw3IEBACiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgREVGX0ZSRUVfQ0xBU1MpOwogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIERFRl9JTVBPUlQpOwogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIERFRl9CT1VORCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgREVGX0FOTk9UKTsKIAogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJUWVBFX0ZVTkNUSU9OIiwgRnVuY3Rpb25CbG9jayk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlRZUEVfQ0xBU1MiLCBDbGFzc0Jsb2NrKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvc3lzbG9nbW9kdWxlLmMgYi9Nb2R1bGVzL3N5c2xvZ21vZHVsZS5jCmluZGV4IGYyZDQ0ZmYuLjdhZmNhNTggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc3lzbG9nbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9zeXNsb2dtb2R1bGUuYwpAQCAtMTM5LDcgKzEzOSw3IEBACiAgICAgICogSWYgTlVMTCwganVzdCBsZXQgb3BlbmxvZyBmaWd1cmUgaXQgb3V0IChwcm9iYWJseSB1c2luZyBDIGFyZ3ZbMF0pLgogICAgICAqLwogICAgIGlmIChTX2lkZW50X28pIHsKLSAgICAgICAgaWRlbnQgPSBfUHlVbmljb2RlX0FzU3RyaW5nKFNfaWRlbnRfbyk7CisgICAgICAgIGlkZW50ID0gUHlVbmljb2RlX0FzVVRGOChTX2lkZW50X28pOwogICAgICAgICBpZiAoaWRlbnQgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTE2Nyw3ICsxNjcsNyBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgbWVzc2FnZSA9IF9QeVVuaWNvZGVfQXNTdHJpbmcobWVzc2FnZV9vYmplY3QpOworICAgIG1lc3NhZ2UgPSBQeVVuaWNvZGVfQXNVVEY4KG1lc3NhZ2Vfb2JqZWN0KTsKICAgICBpZiAobWVzc2FnZSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy90aW1lbW9kdWxlLmMgYi9Nb2R1bGVzL3RpbWVtb2R1bGUuYwppbmRleCBkMmNhYWNkLi5lYmQ0NGFkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3RpbWVtb2R1bGUuYworKysgYi9Nb2R1bGVzL3RpbWVtb2R1bGUuYwpAQCAtMTYwLDcgKzE2MCw5IEBACiAiY2xvY2tfZ2V0dGltZShjbGtfaWQpIC0+IGZsb2F0aW5nIHBvaW50IG51bWJlclxuXAogXG5cCiBSZXR1cm4gdGhlIHRpbWUgb2YgdGhlIHNwZWNpZmllZCBjbG9jayBjbGtfaWQuIik7CisjZW5kaWYgICAvKiBIQVZFX0NMT0NLX0dFVFRJTUUgKi8KIAorI2lmZGVmIEhBVkVfQ0xPQ0tfU0VUVElNRQogc3RhdGljIFB5T2JqZWN0ICoKIHRpbWVfY2xvY2tfc2V0dGltZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CkBAIC0xOTEsNyArMTkzLDkgQEAKICJjbG9ja19zZXR0aW1lKGNsa19pZCwgdGltZSlcblwKIFxuXAogU2V0IHRoZSB0aW1lIG9mIHRoZSBzcGVjaWZpZWQgY2xvY2sgY2xrX2lkLiIpOworI2VuZGlmICAgLyogSEFWRV9DTE9DS19TRVRUSU1FICovCiAKKyNpZmRlZiBIQVZFX0NMT0NLX0dFVFJFUwogc3RhdGljIFB5T2JqZWN0ICoKIHRpbWVfY2xvY2tfZ2V0cmVzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKQEAgLTIxNSw3ICsyMTksNyBAQAogImNsb2NrX2dldHJlcyhjbGtfaWQpIC0+IGZsb2F0aW5nIHBvaW50IG51bWJlclxuXAogXG5cCiBSZXR1cm4gdGhlIHJlc29sdXRpb24gKHByZWNpc2lvbikgb2YgdGhlIHNwZWNpZmllZCBjbG9jayBjbGtfaWQuIik7Ci0jZW5kaWYgICAvKiBIQVZFX0NMT0NLX0dFVFRJTUUgKi8KKyNlbmRpZiAgIC8qIEhBVkVfQ0xPQ0tfR0VUUkVTICovCiAKIHN0YXRpYyBQeU9iamVjdCAqCiB0aW1lX3NsZWVwKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb2JqKQpAQCAtMjUwLDEwICsyNTQsOCBAQAogICAgIHsidG1fd2RheSIsICJkYXkgb2Ygd2VlaywgcmFuZ2UgWzAsIDZdLCBNb25kYXkgaXMgMCJ9LAogICAgIHsidG1feWRheSIsICJkYXkgb2YgeWVhciwgcmFuZ2UgWzEsIDM2Nl0ifSwKICAgICB7InRtX2lzZHN0IiwgIjEgaWYgc3VtbWVyIHRpbWUgaXMgaW4gZWZmZWN0LCAwIGlmIG5vdCwgYW5kIC0xIGlmIHVua25vd24ifSwKLSNpZmRlZiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FCiAgICAgeyJ0bV96b25lIiwgImFiYnJldmlhdGlvbiBvZiB0aW1lem9uZSBuYW1lIn0sCiAgICAgeyJ0bV9nbXRvZmYiLCAib2Zmc2V0IGZyb20gVVRDIGluIHNlY29uZHMifSwKLSNlbmRpZiAvKiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FICovCiAgICAgezB9CiB9OwogCkBAIC0yNzUsNyArMjc3LDExIEBACiAKIAogc3RhdGljIFB5T2JqZWN0ICoKLXRtdG90dXBsZShzdHJ1Y3QgdG0gKnApCit0bXRvdHVwbGUoc3RydWN0IHRtICpwCisjaWZuZGVmIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUKKyAgICAgICAgLCBjb25zdCBjaGFyICp6b25lLCBpbnQgZ210b2ZmCisjZW5kaWYKKykKIHsKICAgICBQeU9iamVjdCAqdiA9IFB5U3RydWN0U2VxdWVuY2VfTmV3KCZTdHJ1Y3RUaW1lVHlwZSk7CiAgICAgaWYgKHYgPT0gTlVMTCkKQEAgLTI5Niw2ICszMDIsMTAgQEAKICAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHYsIDksCiAgICAgICAgIFB5VW5pY29kZV9EZWNvZGVMb2NhbGUocC0+dG1fem9uZSwgInN1cnJvZ2F0ZWVzY2FwZSIpKTsKICAgICBTRVQoMTAsIHAtPnRtX2dtdG9mZik7CisjZWxzZQorICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgOSwKKyAgICAgICAgUHlVbmljb2RlX0RlY29kZUxvY2FsZSh6b25lLCAic3Vycm9nYXRlZXNjYXBlIikpOworICAgIFNFVCgxMCwgZ210b2ZmKTsKICNlbmRpZiAvKiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FICovCiAjdW5kZWYgU0VUCiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKQEAgLTMxMSw3ICszMjEsNyBAQAogICAgUmV0dXJucyBub24temVybyBvbiBzdWNjZXNzIChwYXJhbGxlbHMgUHlBcmdfUGFyc2VUdXBsZSkuCiAqLwogc3RhdGljIGludAotcGFyc2VfdGltZV90X2FyZ3MoUHlPYmplY3QgKmFyZ3MsIGNoYXIgKmZvcm1hdCwgdGltZV90ICpwd2hlbikKK3BhcnNlX3RpbWVfdF9hcmdzKFB5T2JqZWN0ICphcmdzLCBjb25zdCBjaGFyICpmb3JtYXQsIHRpbWVfdCAqcHdoZW4pCiB7CiAgICAgUHlPYmplY3QgKm90ID0gTlVMTDsKICAgICB0aW1lX3Qgd2hlbnQ7CkBAIC0zMzMsMjQgKzM0MywzNCBAQAogdGltZV9nbXRpbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIHRpbWVfdCB3aGVuOwotICAgIHN0cnVjdCB0bSBidWYsICpsb2NhbDsKKyAgICBzdHJ1Y3QgdG0gYnVmOwogCiAgICAgaWYgKCFwYXJzZV90aW1lX3RfYXJncyhhcmdzLCAifE86Z210aW1lIiwgJndoZW4pKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGVycm5vID0gMDsKLSAgICBsb2NhbCA9IGdtdGltZSgmd2hlbik7Ci0gICAgaWYgKGxvY2FsID09IE5VTEwpIHsKLSNpZmRlZiBFSU5WQUwKLSAgICAgICAgaWYgKGVycm5vID09IDApCi0gICAgICAgICAgICBlcnJubyA9IEVJTlZBTDsKLSNlbmRpZgotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwotICAgIH0KLSAgICBidWYgPSAqbG9jYWw7CisgICAgaWYgKF9QeVRpbWVfZ210aW1lKHdoZW4sICZidWYpICE9IDApCisgICAgICAgIHJldHVybiBOVUxMOworI2lmZGVmIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUKICAgICByZXR1cm4gdG10b3R1cGxlKCZidWYpOworI2Vsc2UKKyAgICByZXR1cm4gdG10b3R1cGxlKCZidWYsICJVVEMiLCAwKTsKKyNlbmRpZgogfQogCisjaWZuZGVmIEhBVkVfVElNRUdNCitzdGF0aWMgdGltZV90Cit0aW1lZ20oc3RydWN0IHRtICpwKQoreworICAgIC8qIFhYWDogdGhlIGZvbGxvd2luZyBpbXBsZW1lbnRhdGlvbiB3aWxsIG5vdCB3b3JrIGZvciB0bV95ZWFyIDwgMTk3MC4KKyAgICAgICBidXQgaXQgaXMgbGlrZWx5IHRoYXQgcGxhdGZvcm1zIHRoYXQgZG9uJ3QgaGF2ZSB0aW1lZ20gZG8gbm90IHN1cHBvcnQKKyAgICAgICBuZWdhdGl2ZSB0aW1lc3RhbXBzIGFueXdheXMuICovCisgICAgcmV0dXJuIHAtPnRtX3NlYyArIHAtPnRtX21pbio2MCArIHAtPnRtX2hvdXIqMzYwMCArIHAtPnRtX3lkYXkqODY0MDAgKworICAgICAgICAocC0+dG1feWVhci03MCkqMzE1MzYwMDAgKyAoKHAtPnRtX3llYXItNjkpLzQpKjg2NDAwIC0KKyAgICAgICAgKChwLT50bV95ZWFyLTEpLzEwMCkqODY0MDAgKyAoKHAtPnRtX3llYXIrMjk5KS80MDApKjg2NDAwOworfQorI2VuZGlmCisKIFB5RG9jX1NUUlZBUihnbXRpbWVfZG9jLAogImdtdGltZShbc2Vjb25kc10pIC0+ICh0bV95ZWFyLCB0bV9tb24sIHRtX21kYXksIHRtX2hvdXIsIHRtX21pbixcblwKICAgICAgICAgICAgICAgICAgICAgICAgdG1fc2VjLCB0bV93ZGF5LCB0bV95ZGF5LCB0bV9pc2RzdClcblwKQEAgLTM2MSwyNiArMzgxLDYgQEAKIElmIHRoZSBwbGF0Zm9ybSBzdXBwb3J0cyB0aGUgdG1fZ210b2ZmIGFuZCB0bV96b25lLCB0aGV5IGFyZSBhdmFpbGFibGUgYXNcblwKIGF0dHJpYnV0ZXMgb25seS4iKTsKIAotc3RhdGljIGludAotcHlsb2NhbHRpbWUodGltZV90ICp0aW1lcCwgc3RydWN0IHRtICpyZXN1bHQpCi17Ci0gICAgc3RydWN0IHRtICpsb2NhbDsKLQotICAgIGFzc2VydCAodGltZXAgIT0gTlVMTCk7Ci0gICAgbG9jYWwgPSBsb2NhbHRpbWUodGltZXApOwotICAgIGlmIChsb2NhbCA9PSBOVUxMKSB7Ci0gICAgICAgIC8qIHVuY29udmVydGlibGUgdGltZSAqLwotI2lmZGVmIEVJTlZBTAotICAgICAgICBpZiAoZXJybm8gPT0gMCkKLSAgICAgICAgICAgIGVycm5vID0gRUlOVkFMOwotI2VuZGlmCi0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICAqcmVzdWx0ID0gKmxvY2FsOwotICAgIHJldHVybiAwOwotfQotCiBzdGF0aWMgUHlPYmplY3QgKgogdGltZV9sb2NhbHRpbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewpAQCAtMzg5LDkgKzM4OSwyMCBAQAogCiAgICAgaWYgKCFwYXJzZV90aW1lX3RfYXJncyhhcmdzLCAifE86bG9jYWx0aW1lIiwgJndoZW4pKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAocHlsb2NhbHRpbWUoJndoZW4sICZidWYpID09IC0xKQorICAgIGlmIChfUHlUaW1lX2xvY2FsdGltZSh3aGVuLCAmYnVmKSAhPSAwKQogICAgICAgICByZXR1cm4gTlVMTDsKKyNpZmRlZiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FCiAgICAgcmV0dXJuIHRtdG90dXBsZSgmYnVmKTsKKyNlbHNlCisgICAgeworICAgICAgICBzdHJ1Y3QgdG0gbG9jYWwgPSBidWY7CisgICAgICAgIGNoYXIgem9uZVsxMDBdOworICAgICAgICBpbnQgZ210b2ZmOworICAgICAgICBzdHJmdGltZSh6b25lLCBzaXplb2Yoem9uZSksICIlWiIsICZidWYpOworICAgICAgICBnbXRvZmYgPSB0aW1lZ20oJmJ1ZikgLSB3aGVuOworICAgICAgICByZXR1cm4gdG10b3R1cGxlKCZsb2NhbCwgem9uZSwgZ210b2ZmKTsKKyAgICB9CisjZW5kaWYKIH0KIAogUHlEb2NfU1RSVkFSKGxvY2FsdGltZV9kb2MsCkBAIC00MzAsNyArNDQxLDcgQEAKICAgICBpZiAoUHlfVFlQRShhcmdzKSA9PSAmU3RydWN0VGltZVR5cGUpIHsKICAgICAgICAgUHlPYmplY3QgKml0ZW07CiAgICAgICAgIGl0ZW0gPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDkpOwotICAgICAgICBwLT50bV96b25lID0gaXRlbSA9PSBQeV9Ob25lID8gTlVMTCA6IF9QeVVuaWNvZGVfQXNTdHJpbmcoaXRlbSk7CisgICAgICAgIHAtPnRtX3pvbmUgPSBpdGVtID09IFB5X05vbmUgPyBOVUxMIDogUHlVbmljb2RlX0FzVVRGOChpdGVtKTsKICAgICAgICAgaXRlbSA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgMTApOwogICAgICAgICBwLT50bV9nbXRvZmYgPSBpdGVtID09IFB5X05vbmUgPyAwIDogUHlMb25nX0FzTG9uZyhpdGVtKTsKICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCkBAIC01NzMsNyArNTg0LDcgQEAKIAogICAgIGlmICh0dXAgPT0gTlVMTCkgewogICAgICAgICB0aW1lX3QgdHQgPSB0aW1lKE5VTEwpOwotICAgICAgICBpZiAocHlsb2NhbHRpbWUoJnR0LCAmYnVmKSA9PSAtMSkKKyAgICAgICAgaWYgKF9QeVRpbWVfbG9jYWx0aW1lKHR0LCAmYnVmKSAhPSAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGVsc2UgaWYgKCFnZXR0bWFyZyh0dXAsICZidWYpIHx8ICFjaGVja3RtKCZidWYpKQpAQCAtNzMyLDEwICs3NDMsMTAgQEAKIHsKICAgICAvKiBJbnNwaXJlZCBieSBPcGVuIEdyb3VwIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBhdmFpbGFibGUgYXQKICAgICAgKiBodHRwOi8vcHVicy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvMDA5Njk1Mzk5L2Z1bmN0aW9ucy9hc2N0aW1lLmh0bWwgKi8KLSAgICBzdGF0aWMgY2hhciB3ZGF5X25hbWVbN11bNF0gPSB7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgd2RheV9uYW1lWzddWzRdID0gewogICAgICAgICAiU3VuIiwgIk1vbiIsICJUdWUiLCAiV2VkIiwgIlRodSIsICJGcmkiLCAiU2F0IgogICAgIH07Ci0gICAgc3RhdGljIGNoYXIgbW9uX25hbWVbMTJdWzRdID0geworICAgIHN0YXRpYyBjb25zdCBjaGFyIG1vbl9uYW1lWzEyXVs0XSA9IHsKICAgICAgICAgIkphbiIsICJGZWIiLCAiTWFyIiwgIkFwciIsICJNYXkiLCAiSnVuIiwKICAgICAgICAgIkp1bCIsICJBdWciLCAiU2VwIiwgIk9jdCIsICJOb3YiLCAiRGVjIgogICAgIH07CkBAIC03NTgsNyArNzY5LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKHR1cCA9PSBOVUxMKSB7CiAgICAgICAgIHRpbWVfdCB0dCA9IHRpbWUoTlVMTCk7Ci0gICAgICAgIGlmIChweWxvY2FsdGltZSgmdHQsICZidWYpID09IC0xKQorICAgICAgICBpZiAoX1B5VGltZV9sb2NhbHRpbWUodHQsICZidWYpICE9IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIH0gZWxzZSBpZiAoIWdldHRtYXJnKHR1cCwgJmJ1ZikgfHwgIWNoZWNrdG0oJmJ1ZikpCkBAIC03ODAsNyArNzkxLDcgQEAKICAgICBzdHJ1Y3QgdG0gYnVmOwogICAgIGlmICghcGFyc2VfdGltZV90X2FyZ3MoYXJncywgInxPOmN0aW1lIiwgJnR0KSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKHB5bG9jYWx0aW1lKCZ0dCwgJmJ1ZikgPT0gLTEpCisgICAgaWYgKF9QeVRpbWVfbG9jYWx0aW1lKHR0LCAmYnVmKSAhPSAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gX2FzY3RpbWUoJmJ1Zik7CiB9CkBAIC0xMDM0LDYgKzEwNDUsNyBAQAogICAgIH0KICNlbmRpZgogCisgICAgLyogQ3VycmVudGx5LCBQeXRob24gMyByZXF1aXJlcyBjbG9jaygpIHRvIGJ1aWxkOiBzZWUgaXNzdWUgIzIyNjI0ICovCiAgICAgcmV0dXJuIGZsb2F0Y2xvY2soaW5mbyk7CiAjZW5kaWYKIH0KQEAgLTExNDUsNiArMTE1NywyNyBAQAogR2V0IGluZm9ybWF0aW9uIG9mIHRoZSBzcGVjaWZpZWQgY2xvY2suIik7CiAKIHN0YXRpYyB2b2lkCitnZXRfem9uZShjaGFyICp6b25lLCBpbnQgbiwgc3RydWN0IHRtICpwKQoreworI2lmZGVmIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUKKyAgICBzdHJuY3B5KHpvbmUsIHAtPnRtX3pvbmUgPyBwLT50bV96b25lIDogIiAgICIsIG4pOworI2Vsc2UKKyAgICB0enNldCgpOworICAgIHN0cmZ0aW1lKHpvbmUsIG4sICIlWiIsIHApOworI2VuZGlmCit9CisKK3N0YXRpYyBpbnQKK2dldF9nbXRvZmYodGltZV90IHQsIHN0cnVjdCB0bSAqcCkKK3sKKyNpZmRlZiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FCisgICAgcmV0dXJuIHAtPnRtX2dtdG9mZjsKKyNlbHNlCisgICAgcmV0dXJuIHRpbWVnbShwKSAtIHQ7CisjZW5kaWYKK30KKworc3RhdGljIHZvaWQKIFB5SW5pdF90aW1lem9uZShQeU9iamVjdCAqbSkgewogICAgIC8qIFRoaXMgY29kZSBtb3ZlZCBmcm9tIFB5SW5pdF90aW1lIHdob2xlc2FsZSB0byBhbGxvdyBjYWxsaW5nIGl0IGZyb20KICAgICB0aW1lX3R6c2V0LiBJbiB0aGUgZnV0dXJlLCBzb21lIHBhcnRzIG9mIGl0IGNhbiBiZSBtb3ZlZCBiYWNrCkBAIC0xMTc2LDIyICsxMjA5LDIxIEBACiAgICAgb3R6MSA9IFB5VW5pY29kZV9EZWNvZGVMb2NhbGUodHpuYW1lWzFdLCAic3Vycm9nYXRlZXNjYXBlIik7CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJ0em5hbWUiLCBQeV9CdWlsZFZhbHVlKCIoTk4pIiwgb3R6MCwgb3R6MSkpOwogI2Vsc2UgLyogIUhBVkVfVFpOQU1FIHx8IF9fR0xJQkNfXyB8fCBfX0NZR1dJTl9fKi8KLSNpZmRlZiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FCiAgICAgewogI2RlZmluZSBZRUFSICgodGltZV90KSgoMzY1ICogMjQgKyA2KSAqIDM2MDApKQogICAgICAgICB0aW1lX3QgdDsKLSAgICAgICAgc3RydWN0IHRtICpwOworICAgICAgICBzdHJ1Y3QgdG0gcDsKICAgICAgICAgbG9uZyBqYW56b25lLCBqdWx5em9uZTsKICAgICAgICAgY2hhciBqYW5uYW1lWzEwXSwganVseW5hbWVbMTBdOwogICAgICAgICB0ID0gKHRpbWUoKHRpbWVfdCAqKTApIC8gWUVBUikgKiBZRUFSOwotICAgICAgICBwID0gbG9jYWx0aW1lKCZ0KTsKLSAgICAgICAgamFuem9uZSA9IC1wLT50bV9nbXRvZmY7Ci0gICAgICAgIHN0cm5jcHkoamFubmFtZSwgcC0+dG1fem9uZSA/IHAtPnRtX3pvbmUgOiAiICAgIiwgOSk7CisgICAgICAgIF9QeVRpbWVfbG9jYWx0aW1lKHQsICZwKTsKKyAgICAgICAgZ2V0X3pvbmUoamFubmFtZSwgOSwgJnApOworICAgICAgICBqYW56b25lID0gLWdldF9nbXRvZmYodCwgJnApOwogICAgICAgICBqYW5uYW1lWzldID0gJ1wwJzsKICAgICAgICAgdCArPSBZRUFSLzI7Ci0gICAgICAgIHAgPSBsb2NhbHRpbWUoJnQpOwotICAgICAgICBqdWx5em9uZSA9IC1wLT50bV9nbXRvZmY7Ci0gICAgICAgIHN0cm5jcHkoanVseW5hbWUsIHAtPnRtX3pvbmUgPyBwLT50bV96b25lIDogIiAgICIsIDkpOworICAgICAgICBfUHlUaW1lX2xvY2FsdGltZSh0LCAmcCk7CisgICAgICAgIGdldF96b25lKGp1bHluYW1lLCA5LCAmcCk7CisgICAgICAgIGp1bHl6b25lID0gLWdldF9nbXRvZmYodCwgJnApOwogICAgICAgICBqdWx5bmFtZVs5XSA9ICdcMCc7CiAKICAgICAgICAgaWYoIGphbnpvbmUgPCBqdWx5em9uZSApIHsKQEAgLTEyMTMsOCArMTI0NSw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYW5uYW1lLCBqdWx5bmFtZSkpOwogICAgICAgICB9CiAgICAgfQotI2Vsc2UKLSNlbmRpZiAvKiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FICovCiAjaWZkZWYgX19DWUdXSU5fXwogICAgIHR6c2V0KCk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgInRpbWV6b25lIiwgX3RpbWV6b25lKTsKQEAgLTEyMjQsMjUgKzEyNTQsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICBQeV9CdWlsZFZhbHVlKCIoenopIiwgX3R6bmFtZVswXSwgX3R6bmFtZVsxXSkpOwogI2VuZGlmIC8qIF9fQ1lHV0lOX18gKi8KICNlbmRpZiAvKiAhSEFWRV9UWk5BTUUgfHwgX19HTElCQ19fIHx8IF9fQ1lHV0lOX18qLwotCi0jaWYgZGVmaW5lZChIQVZFX0NMT0NLX0dFVFRJTUUpCi0gICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0xPQ0tfUkVBTFRJTUUpOwotI2lmZGVmIENMT0NLX01PTk9UT05JQwotICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENMT0NLX01PTk9UT05JQyk7Ci0jZW5kaWYKLSNpZmRlZiBDTE9DS19NT05PVE9OSUNfUkFXCi0gICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0xPQ0tfTU9OT1RPTklDX1JBVyk7Ci0jZW5kaWYKLSNpZmRlZiBDTE9DS19ISUdIUkVTCi0gICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0xPQ0tfSElHSFJFUyk7Ci0jZW5kaWYKLSNpZmRlZiBDTE9DS19QUk9DRVNTX0NQVVRJTUVfSUQKLSAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDTE9DS19QUk9DRVNTX0NQVVRJTUVfSUQpOwotI2VuZGlmCi0jaWZkZWYgQ0xPQ0tfVEhSRUFEX0NQVVRJTUVfSUQKLSAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDTE9DS19USFJFQURfQ1BVVElNRV9JRCk7Ci0jZW5kaWYKLSNlbmRpZiAvKiBIQVZFX0NMT0NLX0dFVFRJTUUgKi8KIH0KIAogCkBAIC0xMjUzLDcgKzEyNjQsMTEgQEAKICNlbmRpZgogI2lmZGVmIEhBVkVfQ0xPQ0tfR0VUVElNRQogICAgIHsiY2xvY2tfZ2V0dGltZSIsICAgdGltZV9jbG9ja19nZXR0aW1lLCBNRVRIX1ZBUkFSR1MsIGNsb2NrX2dldHRpbWVfZG9jfSwKKyNlbmRpZgorI2lmZGVmIEhBVkVfQ0xPQ0tfU0VUVElNRQogICAgIHsiY2xvY2tfc2V0dGltZSIsICAgdGltZV9jbG9ja19zZXR0aW1lLCBNRVRIX1ZBUkFSR1MsIGNsb2NrX3NldHRpbWVfZG9jfSwKKyNlbmRpZgorI2lmZGVmIEhBVkVfQ0xPQ0tfR0VUUkVTCiAgICAgeyJjbG9ja19nZXRyZXMiLCAgICB0aW1lX2Nsb2NrX2dldHJlcywgTUVUSF9WQVJBUkdTLCBjbG9ja19nZXRyZXNfZG9jfSwKICNlbmRpZgogICAgIHsic2xlZXAiLCAgICAgICAgICAgdGltZV9zbGVlcCwgTUVUSF9PLCBzbGVlcF9kb2N9LApAQCAtMTM0OSwxNyArMTM2NCwzMiBAQAogICAgIC8qIFNldCwgb3IgcmVzZXQsIG1vZHVsZSB2YXJpYWJsZXMgbGlrZSB0aW1lLnRpbWV6b25lICovCiAgICAgUHlJbml0X3RpbWV6b25lKG0pOwogCisjaWZkZWYgQ0xPQ0tfUkVBTFRJTUUKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDTE9DS19SRUFMVElNRSk7CisjZW5kaWYKKyNpZmRlZiBDTE9DS19NT05PVE9OSUMKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDTE9DS19NT05PVE9OSUMpOworI2VuZGlmCisjaWZkZWYgQ0xPQ0tfTU9OT1RPTklDX1JBVworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENMT0NLX01PTk9UT05JQ19SQVcpOworI2VuZGlmCisjaWZkZWYgQ0xPQ0tfSElHSFJFUworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENMT0NLX0hJR0hSRVMpOworI2VuZGlmCisjaWZkZWYgQ0xPQ0tfUFJPQ0VTU19DUFVUSU1FX0lECisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0xPQ0tfUFJPQ0VTU19DUFVUSU1FX0lEKTsKKyNlbmRpZgorI2lmZGVmIENMT0NLX1RIUkVBRF9DUFVUSU1FX0lECisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0xPQ0tfVEhSRUFEX0NQVVRJTUVfSUQpOworI2VuZGlmCisKICAgICBpZiAoIWluaXRpYWxpemVkKSB7CiAgICAgICAgIGlmIChQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlMigmU3RydWN0VGltZVR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RydWN0X3RpbWVfdHlwZV9kZXNjKSA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgUHlfSU5DUkVGKCZTdHJ1Y3RUaW1lVHlwZSk7Ci0jaWZkZWYgSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORQogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJfU1RSVUNUX1RNX0lURU1TIiwgMTEpOwotI2Vsc2UKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiX1NUUlVDVF9UTV9JVEVNUyIsIDkpOwotI2VuZGlmCiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJzdHJ1Y3RfdGltZSIsIChQeU9iamVjdCopICZTdHJ1Y3RUaW1lVHlwZSk7CiAgICAgaW5pdGlhbGl6ZWQgPSAxOwogICAgIHJldHVybiBtOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy91bmljb2RlZGF0YS5jIGIvTW9kdWxlcy91bmljb2RlZGF0YS5jCmluZGV4IDFmOWJhNzguLjllNzFlMDEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvdW5pY29kZWRhdGEuYworKysgYi9Nb2R1bGVzL3VuaWNvZGVkYXRhLmMKQEAgLTQ1LDYgKzQ1LDcgQEAKICAgICBjb25zdCB1bnNpZ25lZCBjaGFyIGNhdGVnb3J5X2NoYW5nZWQ7CiAgICAgY29uc3QgdW5zaWduZWQgY2hhciBkZWNpbWFsX2NoYW5nZWQ7CiAgICAgY29uc3QgdW5zaWduZWQgY2hhciBtaXJyb3JlZF9jaGFuZ2VkOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgZWFzdF9hc2lhbl93aWR0aF9jaGFuZ2VkOwogICAgIGNvbnN0IGRvdWJsZSBudW1lcmljX2NoYW5nZWQ7CiB9IGNoYW5nZV9yZWNvcmQ7CiAKQEAgLTM3NSw2ICszNzYsOCBAQAogICAgICAgICBjb25zdCBjaGFuZ2VfcmVjb3JkICpvbGQgPSBnZXRfb2xkX3JlY29yZChzZWxmLCBjKTsKICAgICAgICAgaWYgKG9sZC0+Y2F0ZWdvcnlfY2hhbmdlZCA9PSAwKQogICAgICAgICAgICAgaW5kZXggPSAwOyAvKiB1bmFzc2lnbmVkICovCisgICAgICAgIGVsc2UgaWYgKG9sZC0+ZWFzdF9hc2lhbl93aWR0aF9jaGFuZ2VkICE9IDB4RkYpCisgICAgICAgICAgICBpbmRleCA9IG9sZC0+ZWFzdF9hc2lhbl93aWR0aF9jaGFuZ2VkOwogICAgIH0KICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoX1B5VW5pY29kZV9FYXN0QXNpYW5XaWR0aE5hbWVzW2luZGV4XSk7CiB9CkBAIC04ODQsNyArODg3LDcgQEAKICAgICByZXR1cm4gaDsKIH0KIAotc3RhdGljIGNoYXIgKmhhbmd1bF9zeWxsYWJsZXNbXVszXSA9IHsKK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgaGFuZ3VsX3N5bGxhYmxlc1tdWzNdID0gewogICAgIHsgIkciLCAgIkEiLCAgICIiICAgfSwKICAgICB7ICJHRyIsICJBRSIsICAiRyIgIH0sCiAgICAgeyAiTiIsICAiWUEiLCAgIkdHIiB9LApAQCAtMTA1Nyw3ICsxMDYwLDcgQEAKICAgICBpbnQgaSwgbGVuMTsKICAgICAqbGVuID0gLTE7CiAgICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKLSAgICAgICAgY2hhciAqcyA9IGhhbmd1bF9zeWxsYWJsZXNbaV1bY29sdW1uXTsKKyAgICAgICAgY29uc3QgY2hhciAqcyA9IGhhbmd1bF9zeWxsYWJsZXNbaV1bY29sdW1uXTsKICAgICAgICAgbGVuMSA9IFB5X1NBRkVfRE9XTkNBU1Qoc3RybGVuKHMpLCBzaXplX3QsIGludCk7CiAgICAgICAgIGlmIChsZW4xIDw9ICpsZW4pCiAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvdW5pY29kZWRhdGFfZGIuaCBiL01vZHVsZXMvdW5pY29kZWRhdGFfZGIuaAppbmRleCA4OWQ4NzY4Li5lYTQwYzJiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3VuaWNvZGVkYXRhX2RiLmgKKysrIGIvTW9kdWxlcy91bmljb2RlZGF0YV9kYi5oCkBAIC0xLDYgKzEsNiBAQAogLyogdGhpcyBmaWxlIHdhcyBnZW5lcmF0ZWQgYnkgVG9vbHMvdW5pY29kZS9tYWtldW5pY29kZWRhdGEucHkgMy4yICovCiAKLSNkZWZpbmUgVU5JREFUQV9WRVJTSU9OICI4LjAuMCIKKyNkZWZpbmUgVU5JREFUQV9WRVJTSU9OICI5LjAuMCIKIC8qIGEgbGlzdCBvZiB1bmlxdWUgZGF0YWJhc2UgcmVjb3JkcyAqLwogY29uc3QgX1B5VW5pY29kZV9EYXRhYmFzZVJlY29yZCBfUHlVbmljb2RlX0RhdGFiYXNlX1JlY29yZHNbXSA9IHsKICAgICB7MCwgMCwgMCwgMCwgMCwgMH0sCkBAIC0yNDIsMTIgKzI0MiwxMyBAQAogICAgIHsyNywgMCwgMTEsIDAsIDUsIDB9LAogICAgIHsyNywgMCwgMTksIDEsIDQsIDEzNn0sCiAgICAgezI3LCAwLCAxOSwgMSwgNCwgMTB9LAorICAgIHszMCwgMCwgMTksIDAsIDIsIDB9LAogICAgIHsyMiwgMCwgMTksIDEsIDIsIDE3MH0sCiAgICAgezIzLCAwLCAxOSwgMSwgMiwgMTcwfSwKICAgICB7MzAsIDAsIDEsIDAsIDQsIDEzNn0sCiAgICAgezksIDAsIDE5LCAwLCA0LCAwfSwKKyAgICB7MjcsIDAsIDE5LCAwLCAyLCAwfSwKICAgICB7MjcsIDAsIDE5LCAxLCA1LCAxNzB9LAotICAgIHszMCwgMCwgMTksIDAsIDIsIDB9LAogICAgIHszMCwgMCwgMTksIDAsIDIsIDEzNn0sCiAgICAgezEwLCAwLCAxOCwgMCwgMCwgMTM2fSwKICAgICB7MjYsIDAsIDE5LCAwLCAyLCAwfSwKQEAgLTMyOSw2ICszMzAsNyBAQAogICAgIHsxLCAwLCA0LCAwLCA1LCAwfSwKICAgICB7MiwgMCwgNCwgMCwgNSwgMH0sCiAgICAgezksIDAsIDEyLCAwLCA1LCAwfSwKKyAgICB7NCwgOSwgMSwgMCwgNSwgMH0sCiAgICAgezMwLCAwLCAxLCAwLCA1LCAxNzB9LAogICAgIHs1LCAyMTYsIDEsIDAsIDUsIDB9LAogICAgIHs1LCAyMjYsIDEsIDAsIDUsIDB9LApAQCAtMzM2LDYgKzMzOCw3IEBACiAgICAgezcsIDAsIDksIDAsIDUsIDEzNn0sCiAgICAgezMwLCAwLCAxLCAwLCA1LCAxMzZ9LAogICAgIHszMCwgMCwgMSwgMCwgNCwgMH0sCisgICAgezI5LCAwLCAxOSwgMCwgMiwgMH0sCiB9OwogCiAvKiBSZWluZGV4aW5nIG9mIE5GQyBmaXJzdCBjaGFyYWN0ZXJzLiAqLwpAQCAtNzMwLDM5ICs3MzMsMzkgQEAKICAgICAxMjUsIDEyNiwgMTI3LCAxMjcsIDEyOCwgMTI5LCAxMzAsIDEzMSwgMTMyLCAxMzMsIDEzNCwgMTM1LCAxMzYsIDEzNywgCiAgICAgMTM4LCAxMzksIDE0MCwgMTQxLCAxNDIsIDE0MywgMTQ0LCAxMzgsIDQxLCA0MSwgMTQ1LCAxMzgsIDE0NiwgMTQ3LCAxNDgsIAogICAgIDE0OSwgMTUwLCAxNTEsIDE1MiwgMTUzLCAxNTQsIDE1NSwgMTM4LCAxMzgsIDE1NiwgMTM4LCAxMzgsIDEzOCwgMTU3LCAKLSAgICAxNTgsIDE1OSwgMTYwLCAxNjEsIDE2MiwgMTYzLCAxMzgsIDEzOCwgMTY0LCAxMzgsIDE2NSwgMTY2LCAxNjcsIDE2OCwgCi0gICAgMTM4LCAxMzgsIDE2OSwgMTM4LCAxMzgsIDEzOCwgMTcwLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDEzOCwgMTM4LCAxMzgsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCAxNzEsIDE3MiwgNDEsIDE3MywgMTM4LCAxMzgsIAorICAgIDE1OCwgMTU5LCAxNjAsIDE2MSwgMTYyLCAxNjMsIDEzOCwgMTY0LCAxNjUsIDEzOCwgMTY2LCAxNjcsIDE2OCwgMTY5LCAKKyAgICAxMzgsIDEzOCwgMTcwLCAxMzgsIDEzOCwgMTM4LCAxNzEsIDEzOCwgMTM4LCAxNzIsIDE3MywgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDE3NCwgMTc1LCA0MSwgMTc2LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDE3NCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDE3NywgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCi0gICAgMTM4LCA0MSwgNDEsIDQxLCA0MSwgMTc1LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDQxLCA0MSwgNDEsIDQxLCAxNzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDEzOCwgNDEsIDQxLCA0MSwgNDEsIDE3NiwgMTc3LCAxNzgsIDE3OSwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDEzOCwgMTgwLCAxODEsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgNDEsIDQxLCA0MSwgNDEsIDE3OSwgMTgwLCAxODEsIDE4MiwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTgzLCAxODQsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxODUsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxODYsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxODcsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxODgsIDE4OSwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCi0gICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxODIsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCi0gICAgMTM4LCAxODMsIDE4NCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDc4LCAxODUsIAotICAgIDE4NiwgMTg3LCAxODgsIDEzOCwgMTg5LCAxMzgsIDE5MCwgMTkxLCAxOTIsIDE5MywgMTk0LCAxOTUsIDE5NiwgMTk3LCA3OCwgCi0gICAgNzgsIDc4LCA3OCwgMTk4LCAxOTksIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCi0gICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDEzOCwgMTM4LCAyMDAsIDIwMSwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAyMDIsIDIwMywgMTM4LCAxMzgsIDIwNCwgMjA1LCAyMDYsIDIwNywgMjA4LCAxMzgsIDIwOSwgMjEwLCAyMDksIDIwOSwgCi0gICAgMjExLCAyMTIsIDIwOSwgMjEzLCAyMTQsIDIxNSwgMjE2LCAyMTcsIDIxOCwgMjE5LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgNzgsIDE5MCwgCisgICAgMTkxLCAxOTIsIDE5MywgMTM4LCAxOTQsIDEzOCwgMTk1LCAxOTYsIDE5NywgMTk4LCAxOTksIDIwMCwgMjAxLCAyMDIsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCAyMDMsIDIwNCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAyMDUsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDIwNiwgMjA3LCAyMDgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDIwOSwgMjEwLCAxMzgsIDEzOCwgMjExLCAyMTIsIDIxMywgMjE0LCAyMTUsIDEzOCwgMjE2LCAyMTcsIDIxOCwgMjE5LCAKKyAgICAyMjAsIDIyMSwgMjIyLCAyMjMsIDIyNCwgMjI1LCAyMjYsIDIyNywgMjI4LCAyMjksIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAogICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKICAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCkBAIC03ODcsMTkgKzc5MCwxOSBAQAogICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKICAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCiAgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAotICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAyMjAsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMjMwLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCiAgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAotICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMjIxLCAxMDEsIDIyMiwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDIzMSwgMTAxLCAyMzIsIDEwMSwgCiAgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAogICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKICAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCi0gICAgMTAxLCAyMjMsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEwMSwgMjMzLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDEyMiwgMTIyLCAxMjIsIDEyMiwgMjI0LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMjIsIDEyMiwgMTIyLCAxMjIsIDIzNCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCkBAIC0xMjAyLDcgKzEyMDUsNyBAQAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDIyNSwgMTM4LCAyMjYsIDIyNywgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAyMzUsIDEzOCwgMjM2LCAyMzcsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCkBAIC0xMjc1LDcgKzEyNzgsNyBAQAogICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKICAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCiAgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAotICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMjI4LCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDIzOCwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCiAgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAogICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKICAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCkBAIC0xMzEyLDcgKzEzMTUsNyBAQAogICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKICAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCiAgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAotICAgIDEyMSwgMjI4LCAKKyAgICAxMjEsIDIzOCwgCiB9OwogCiBzdGF0aWMgdW5zaWduZWQgc2hvcnQgaW5kZXgyW10gPSB7CkBAIC0xNDQ0LDE3MCArMTQ0NywxNzEgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCi0gICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4NiwgODEsIDgxLCA4NiwgODEsIDgxLCA4NiwgODEsIAotICAgIDgxLCA4MSwgODYsIDg2LCA4NiwgMTIxLCAxMjIsIDEyMywgODEsIDgxLCA4MSwgODYsIDgxLCA4MSwgODYsIDg2LCA4MSwgCi0gICAgODEsIDgxLCA4MSwgODEsIDEzNSwgMTM1LCAxMzUsIDEzOSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0MCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDE0MCwgNDgsIDQ4LCAxNDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzksIDE0MSwgNDgsIDEzOSwgMTM5LCAxMzksIAotICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzksIDE0MiwgMTM5LCAKLSAgICAxMzksIDQ4LCA4MSwgODYsIDgxLCA4MSwgMTM1LCAxMzUsIDEzNSwgMTQzLCAxNDMsIDE0MywgMTQzLCAxNDMsIDE0MywgCi0gICAgMTQzLCAxNDMsIDQ4LCA0OCwgMTM1LCAxMzUsIDgzLCA4MywgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCA4MywgNTMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDEzNSwgMTM5LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIAotICAgIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAwLCAwLCAwLCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMTQ1LCA0OCwgMTQ2LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAwLCAwLCAKLSAgICAxMzksIDEzOSwgMCwgMCwgMTQ3LCAxNDcsIDE0MiwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NiwgMCwgMCwgMCwgCi0gICAgMCwgMTQzLCAxNDMsIDAsIDE0MywgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA0OCwgNDgsIDg1LCA4NSwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCi0gICAgODAsIDg1LCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAKLSAgICAwLCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIAotICAgIDE0MywgMCwgNDgsIDE0MywgMCwgNDgsIDQ4LCAwLCAwLCAxNDUsIDAsIDEzOSwgMTM5LCAxMzksIDEzNSwgMTM1LCAwLCAwLCAKLSAgICAwLCAwLCAxMzUsIDEzNSwgMCwgMCwgMTM1LCAxMzUsIDE0MiwgMCwgMCwgMCwgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxNDMsIDE0MywgMTQzLCA0OCwgMCwgMTQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDEzNSwgMTM1LCA0OCwgNDgsIDQ4LCAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAKLSAgICA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCAwLCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDE0NSwgNDgsIDEzOSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgCi0gICAgMTM1LCAwLCAxMzUsIDEzNSwgMTM5LCAwLCAxMzksIDEzOSwgMTQyLCAwLCAwLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA4MywgODUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxMzUsIDEzOSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgMCwgCi0gICAgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDAsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgMCwgMCwgMTQ1LCA0OCwgMTQ2LCAxMzUsIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAwLCAwLCAxMzksIAotICAgIDE0NywgMCwgMCwgMTQ3LCAxNDcsIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ5LCAxNDYsIDAsIDAsIDAsIDAsIAotICAgIDE0MywgMTQzLCAwLCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA4MCwgNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDEzNSwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIAotICAgIDAsIDQ4LCA0OCwgMTQwLCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCAwLCA0OCwgMCwgNDgsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIAotICAgIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDAsIDAsIDAsIDAsIDE0NiwgMTM5LCAxMzUsIDEzOSwgMTM5LCAwLCAwLCAwLCAxMzksIDEzOSwgMTM5LCAwLCAxNDcsIAotICAgIDE0NywgMTQ3LCAxNDIsIDAsIDAsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAxNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ4LCAKLSAgICAxNDgsIDE0OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgODUsIDI2LCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzOSwgMTM5LCAKLSAgICAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgCi0gICAgMCwgMCwgNDgsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzOSwgMCwgMTM1LCAxMzUsIDE1MCwgMCwgMTM1LCAKLSAgICAxMzUsIDEzNSwgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTEsIDE1MiwgMCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDgwLCAwLCAKLSAgICAxMzUsIDEzOSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgMCwgMCwgMTQ1LCA0OCwgMTM5LCAxNTQsIDE0NywgMTM5LCAxNDYsIDEzOSwgMTM5LCAwLCAxNTQsIDE0NywgCi0gICAgMTQ3LCAwLCAxNDcsIDE0NywgMTM1LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NiwgMTQ2LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA0OCwgMCwgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAwLCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNSwgCi0gICAgMTM5LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCAKKyAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDAsIDExOCwgMTE4LCAxMTgsIDExOCwgCisgICAgMTE4LCAxMTgsIDExOCwgMTE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDEwOCwgCisgICAgODYsIDgxLCA4MSwgODYsIDgxLCA4MSwgODYsIDgxLCA4MSwgODEsIDg2LCA4NiwgODYsIDEyMSwgMTIyLCAxMjMsIDgxLCAKKyAgICA4MSwgODEsIDg2LCA4MSwgODEsIDg2LCA4NiwgODEsIDgxLCA4MSwgODEsIDgxLCAxMzUsIDEzNSwgMTM1LCAxMzksIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgMTQ2LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAwLCAxMzksIDEzOSwgCi0gICAgMTM5LCAwLCAxNDcsIDE0NywgMTQ3LCAxNDIsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDYsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIDAsIDAsIDgwLCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCAwLCAwLCAxMzksIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAKLSAgICAwLCAwLCAxNTUsIDAsIDAsIDAsIDAsIDE0NiwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDAsIDEzNSwgMCwgMTM5LCAxMzksIAotICAgIDE0NywgMTM5LCAxNDcsIDE0NywgMTQ3LCAxNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMTM5LCAxMzksIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDQ4LCAxNTYsIAotICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTU3LCAxNTcsIDE0MiwgMCwgMCwgMCwgMCwgODUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDUzLCAxMzUsIDE1OCwgMTU4LCAxNTgsIDE1OCwgMTM1LCAxMzUsIDEzNSwgODMsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA0OCwgNDgsIDAsIDQ4LCAwLCAwLCA0OCwgNDgsIDAsIDQ4LCAwLCAwLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAwLCA0OCwgMCwgNDgsIAotICAgIDAsIDAsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgNDgsIDE1NiwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNTksIAotICAgIDE1OSwgMCwgMTM1LCAxMzUsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDUzLCAwLCAxNjAsIDE2MCwgMTYwLCAKLSAgICAxNjAsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIAotICAgIDAsIDE1NiwgMTU2LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA4MCwgODAsIDgwLCA4MywgODMsIDgzLCAKLSAgICA4MywgODMsIDgzLCA4MywgODMsIDE2MSwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODAsIDgzLCA4MCwgODAsIDgwLCA4NiwgCi0gICAgODYsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCA4MCwgODYsIDgwLCA4NiwgCi0gICAgODAsIDE2MiwgMTYzLCAxNjQsIDE2MywgMTY0LCAxMzksIDEzOSwgNDgsIDQ4LCA0OCwgMTQzLCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgMCwgNDgsIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDE0MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQzLCA0OCwgNDgsIAotICAgIDQ4LCAwLCAwLCAwLCAwLCAxNjUsIDE2NiwgMTY3LCAxNjgsIDE2NywgMTY3LCAxNjksIDE2NywgMTY5LCAxNjYsIDE2NiwgCi0gICAgMTY2LCAxNjYsIDEzNSwgMTM5LCAxNjYsIDE2NywgODEsIDgxLCAxNDIsIDgzLCA4MSwgODEsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTY3LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDEzNSwgMTM1LCAKLSAgICAxMzUsIDEzNSwgMTY3LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE2NywgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNjcsIDEzNSwgCi0gICAgMTM1LCAxMzUsIDEzNSwgMTY3LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAotICAgIDEzNSwgMTM1LCAxNjcsIDEzNSwgMTM1LCAxMzUsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODYsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDAsIDgwLCA4MCwgODMsIDgzLCA4MywgODMsIDgzLCA4MCwgODAsIDgwLCA4MCwgODMsIAotICAgIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0MCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgCi0gICAgMTM5LCAxMzUsIDE0OSwgMTM1LCAxMzUsIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE0NSwgMTM5LCAxNDIsIAotICAgIDE0MiwgMTM5LCAxMzksIDEzNSwgMTM1LCA0OCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM1LCAxMzUsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTM1LCA0OCwgMTM5LCAxMzksIDEzOSwgNDgsIDQ4LCAxMzksIDEzOSwgMTM5LCAKLSAgICAxMzksIDEzOSwgMTM5LCAxMzksIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxMzUsIDEzNSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM5LCAKLSAgICAxMzksIDEzOSwgMTM5LCA4NiwgNDgsIDEzOSwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxMzksIDEzOSwgMTM5LCAxMzUsIDgwLCA4MCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAotICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAotICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAwLCA0NCwgMCwgMCwgMCwgMCwgMCwgNDQsIDAsIDAsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MywgNTEsIDQ4LCA0OCwgNDgsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDQ4LCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIAotICAgIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE3MSwgMTcxLCAxNzEsIDE3MSwgCi0gICAgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIAotICAgIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgMCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCAKKyAgICAxNDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDAsIDQ4LCA0OCwgMTQwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDEzNSwgMTM5LCAxNDEsIDQ4LCAxMzksIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxNDIsIDEzOSwgMTM5LCA0OCwgODEsIDg2LCA4MSwgODEsIDEzNSwgMTM1LCAxMzUsIAorICAgIDE0MywgMTQzLCAxNDMsIDE0MywgMTQzLCAxNDMsIDE0MywgMTQzLCA0OCwgNDgsIDEzNSwgMTM1LCA4MywgODMsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgODMsIDUzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzOSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCAwLCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDE0NSwgNDgsIDE0NiwgMTM5LCAxMzksIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMCwgMCwgMTM5LCAxMzksIDAsIDAsIDE0NywgMTQ3LCAxNDIsIDQ4LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAxNDYsIDAsIDAsIDAsIDAsIDE0MywgMTQzLCAwLCAxNDMsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgNDgsIDQ4LCA4NSwgODUsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDgwLCA4NSwgMCwgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzOSwgMCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAxNDMsIDAsIDQ4LCAxNDMsIDAsIDQ4LCA0OCwgMCwgMCwgMTQ1LCAwLCAxMzksIAorICAgIDEzOSwgMTM5LCAxMzUsIDEzNSwgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDAsIDAsIDEzNSwgMTM1LCAxNDIsIDAsIDAsIDAsIAorICAgIDEzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQzLCAxNDMsIDE0MywgNDgsIDAsIDE0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxMzUsIDEzNSwgNDgsIDQ4LCA0OCwgCisgICAgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAxNDUsIDQ4LCAxMzksIDEzOSwgCisgICAgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMCwgMTM1LCAxMzUsIDEzOSwgMCwgMTM5LCAxMzksIDE0MiwgMCwgMCwgCisgICAgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgODMsIDg1LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1LCAxMzksIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDE0NSwgNDgsIDE0NiwgMTM1LCAxMzksIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMCwgMCwgMTM5LCAxNDcsIDAsIDAsIDE0NywgMTQ3LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDE0OSwgMTQ2LCAwLCAwLCAwLCAwLCAxNDMsIDE0MywgMCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgODAsIDQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMTQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDE0MCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgMCwgNDgsIDAsIAorICAgIDQ4LCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAxNDYsIDEzOSwgMTM1LCAxMzksIDEzOSwgMCwgCisgICAgMCwgMCwgMTM5LCAxMzksIDEzOSwgMCwgMTQ3LCAxNDcsIDE0NywgMTQyLCAwLCAwLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0OCwgMTQ4LCAxNDgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDg1LCAyNiwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTM1LCAxMzksIDEzOSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIAorICAgIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDQ4LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgCisgICAgMTM5LCAxMzksIDAsIDEzNSwgMTM1LCAxNTAsIDAsIDEzNSwgMTM1LCAxMzUsIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTUxLCAxNTIsIDAsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUzLCAxNTMsIAorICAgIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCA4MCwgNDgsIDEzNSwgMTM5LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAxNDUsIDQ4LCAxMzksIDE1NCwgMTQ3LCAKKyAgICAxMzksIDE0NiwgMTM5LCAxMzksIDAsIDE1NCwgMTQ3LCAxNDcsIDAsIDE0NywgMTQ3LCAxMzUsIDE0MiwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMTQ2LCAxNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCAwLCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1LCAxMzksIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCAxNDYsIDEzOSwgMTM5LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDAsIDEzOSwgMTM5LCAxMzksIDAsIDE0NywgMTQ3LCAxNDcsIDE0MiwgNDgsIDgwLCAwLCAwLCAwLCAKKyAgICAwLCA0OCwgNDgsIDQ4LCAxNDYsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgNDgsIDQ4LCA0OCwgMTM1LCAKKyAgICAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgODAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDEzOSwgCisgICAgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCAwLCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDE1NSwgMCwgMCwgMCwgCisgICAgMCwgMTQ2LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMCwgMTM1LCAwLCAxMzksIDEzOSwgMTQ3LCAxMzksIDE0NywgMTQ3LCAKKyAgICAxNDcsIDE0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAwLCAwLCAxMzksIDEzOSwgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDQ4LCAxNTYsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTU3LCAxNTcsIDE0MiwgMCwgMCwgMCwgMCwgODUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDUzLCAxMzUsIDE1OCwgMTU4LCAKKyAgICAxNTgsIDE1OCwgMTM1LCAxMzUsIDEzNSwgODMsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDAsIDQ4LCAwLCAwLCAKKyAgICA0OCwgNDgsIDAsIDQ4LCAwLCAwLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAwLCA0OCwgMCwgNDgsIDAsIDAsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDEzNSwgNDgsIDE1NiwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNTksIDE1OSwgMCwgMTM1LCAxMzUsIDQ4LCAwLCAwLCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDUzLCAwLCAxNjAsIDE2MCwgMTYwLCAxNjAsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDE1NiwgMTU2LCA0OCwgNDgsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA4MCwgODAsIDgwLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDE2MSwgCisgICAgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODAsIDgzLCA4MCwgODAsIDgwLCA4NiwgODYsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCA4MCwgODYsIDgwLCA4NiwgODAsIDE2MiwgMTYzLCAxNjQsIDE2MywgCisgICAgMTY0LCAxMzksIDEzOSwgNDgsIDQ4LCA0OCwgMTQzLCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDE0MywgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQzLCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAxNjUsIAorICAgIDE2NiwgMTY3LCAxNjgsIDE2NywgMTY3LCAxNjksIDE2NywgMTY5LCAxNjYsIDE2NiwgMTY2LCAxNjYsIDEzNSwgMTM5LCAKKyAgICAxNjYsIDE2NywgODEsIDgxLCAxNDIsIDgzLCA4MSwgODEsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTY3LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTY3LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDE2NywgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNjcsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTY3LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNjcsIDEzNSwgCisgICAgMTM1LCAxMzUsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODYsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDAsIDgwLCA4MCwgODMsIDgzLCA4MywgODMsIDgzLCA4MCwgODAsIDgwLCA4MCwgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0MCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzUsIDE0OSwgMTM1LCAKKyAgICAxMzUsIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE0NSwgMTM5LCAxNDIsIDE0MiwgMTM5LCAxMzksIDEzNSwgCisgICAgMTM1LCA0OCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA4MywgODMsIDgzLCAKKyAgICA4MywgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM1LCAxMzUsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICAxMzUsIDEzNSwgMTM1LCA0OCwgMTM5LCAxMzksIDEzOSwgNDgsIDQ4LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzksIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxMzUsIDEzNSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICA4NiwgNDgsIDEzOSwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxMzksIDEzOSwgCisgICAgMTM5LCAxMzUsIDgwLCA4MCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAwLCA0NCwgMCwgMCwgMCwgMCwgMCwgNDQsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIAotICAgIDgxLCA4MSwgODEsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKLSAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCi0gICAgMTQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NCwgNDQsIAorICAgIDQ4LCA0OCwgNDgsIDgzLCA1MSwgNDgsIDQ4LCA0OCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgNDgsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgCisgICAgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgCisgICAgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIAorICAgIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgODEsIDgxLCAKKyAgICA4MSwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIAorICAgIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKICAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKICAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKICAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKICAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKLSAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDAsIDAsIDg0LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgCisgICAgODQsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCkBAIC0xNjI3LDQ1ICsxNjMxLDQ1IEBACiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE3MiwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNjMsIDE2NCwgCi0gICAgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE3MiwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNjMsIDE2NCwgMCwgCisgICAgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgzLCA4MywgODMsIDE3MywgMTczLCAxNzMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCAxMzUsIDEzNSwgMTQyLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMCwgNDgsIDQ4LCA0OCwgMCwgMTM1LCAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgODMsIDgzLCA4MywgMTczLCAxNzMsIDE3MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDEzNSwgMTM1LCAxNDIsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICAwLCA0OCwgNDgsIDQ4LCAwLCAxMzUsIDEzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgCi0gICAgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAotICAgIDEzOSwgMTM5LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKLSAgICAxNDIsIDEzNSwgODMsIDgzLCA4MywgNTMsIDgzLCA4MywgODMsIDg1LCA0OCwgODEsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUzLCAxNTMsIDE1MywgMTUzLCAKLSAgICAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCi0gICAgMTM4LCA4NCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzUsIDEzNSwgMTM1LCAxNzQsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTM5LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCisgICAgMTM5LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNDIsIAorICAgIDEzNSwgODMsIDgzLCA4MywgNTMsIDgzLCA4MywgODMsIDg1LCA0OCwgODEsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIAorICAgIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICA4NCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzUsIDEzNSwgMTM1LCAxNzQsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNTMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA1MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgMTM1LCAxMzUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgODgsIDQ4LCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDg4LCA0OCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzksIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKICAgICAxMzUsIDEzNSwgMTM5LCAxMzksIDEzOSwgMCwgMCwgMCwgMCwgMTM5LCAxMzksIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKICAgICAxMzksIDEzOSwgODcsIDgxLCA4NiwgMCwgMCwgMCwgMCwgMjYsIDAsIDAsIDAsIDEzOCwgMTM4LCAxNDQsIDE0NCwgMTQ0LCAKICAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIApAQCAtMTcxNCwyNyArMTcxOCwyNyBAQAogICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCiAgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgODMsIDgzLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgxLCA4MSwgODEsIAotICAgIDgzLCAxNzYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODEsIDgxLCA4NiwgODYsIDg2LCA4NiwgODEsIDEzOSwgMTc2LCAxNzYsIAotICAgIDE3NiwgMTc2LCAxNzYsIDE3NiwgMTc2LCA0OCwgNDgsIDQ4LCA0OCwgODYsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgCi0gICAgODEsIDQ4LCA0OCwgMCwgODEsIDgxLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDAsIDAsIDAsIDAsIDAsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgODEsIDgxLCA4MSwgODMsIDE3NiwgODYsIDg2LCA4NiwgODYsIDg2LCA4MSwgODEsIDg2LCA4NiwgODYsIDg2LCA4MSwgMTM5LCAKKyAgICAxNzYsIDE3NiwgMTc2LCAxNzYsIDE3NiwgMTc2LCAxNzYsIDQ4LCA0OCwgNDgsIDQ4LCA4NiwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDEzOSwgMTM5LCA4MSwgNDgsIDQ4LCAwLCA4MSwgODEsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCiAgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCiAgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNTEsIDUxLCA1MSwgNTMsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTMsIDUxLCA1MSwgCi0gICAgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUzLCA1MSwgCisgICAgNDcsIDQ3LCA0NywgNTEsIDUxLCA1MSwgNTMsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgCisgICAgNTMsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgCisgICAgNTEsIDUzLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgCisgICAgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDUxLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgCiAgICAgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgCi0gICAgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDUxLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgCi0gICAgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgCi0gICAgNTEsIDUxLCA1MSwgNTEsIDgxLCA4MSwgODYsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4NiwgODEsIDgxLCAxNzcsIAotICAgIDE3OCwgODYsIDE3OSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgCisgICAgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDgxLCA4MSwgODYsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4NiwgCisgICAgODEsIDgxLCAxNzcsIDE3OCwgODYsIDE3OSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAKICAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAKLSAgICA4MSwgODEsIDgxLCA4MSwgMCwgMCwgMCwgMCwgMCwgMCwgMTgwLCA4NiwgODEsIDg2LCAzOCwgNDMsIDM4LCA0MywgMzgsIAorICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgMCwgMCwgMCwgMCwgMCwgODEsIDE4MCwgODYsIDgxLCA4NiwgMzgsIAogICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAogICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAogICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIApAQCAtMTc0MywzMzIgKzE3NDcsMzMzIEBACiAgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCiAgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCiAgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCi0gICAgNDMsIDQzLCA0MywgNDMsIDQzLCAzNSwgMTgxLCA0NywgNDcsIDQ0LCA0NywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAorICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgNDMsIDQzLCA0MywgNDMsIDM1LCAxODEsIDQ3LCA0NywgNDQsIDQ3LCAzOCwgNDMsIDM4LCAKICAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKICAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKICAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKICAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKLSAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQzLCAKLSAgICA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCA0MywgNDMsIDQzLCAKLSAgICA0MywgNDMsIDQzLCAwLCAwLCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAwLCAwLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAKLSAgICA0MywgNDMsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAKLSAgICAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDAsIDAsIDM4LCAzOCwgMzgsIAotICAgIDM4LCAzOCwgMzgsIDAsIDAsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMCwgMzgsIDAsIDM4LCAwLCAzOCwgMCwgCi0gICAgMzgsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCA0MywgCi0gICAgMTgyLCA0MywgMTgyLCA0MywgMTgyLCA0MywgMTgyLCA0MywgMTgyLCA0MywgMTgyLCA0MywgMTgyLCAwLCAwLCA0MywgNDMsIAotICAgIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCA0MywgNDMsIAotICAgIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCA0MywgNDMsIAotICAgIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCA0MywgNDMsIAotICAgIDQzLCA0MywgNDMsIDAsIDQzLCA0MywgMzgsIDM4LCAzOCwgMTg0LCAxODMsIDU4LCAxODIsIDU4LCA1OCwgNzYsIDQzLCA0MywgCi0gICAgNDMsIDAsIDQzLCA0MywgMzgsIDE4NCwgMzgsIDE4NCwgMTgzLCA3NiwgNzYsIDc2LCA0MywgNDMsIDQzLCAxODIsIDAsIDAsIAotICAgIDQzLCA0MywgMzgsIDM4LCAzOCwgMTg0LCAwLCA3NiwgNzYsIDc2LCA0MywgNDMsIDQzLCAxODIsIDQzLCA0MywgNDMsIDQzLCAKLSAgICAzOCwgMzgsIDM4LCAxODQsIDM4LCA3NiwgMTg1LCAxODUsIDAsIDAsIDQzLCA0MywgNDMsIDAsIDQzLCA0MywgMzgsIDE4NCwgCi0gICAgMzgsIDE4NCwgMTgzLCAxODUsIDU4LCAwLCAxODYsIDE4NiwgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAKLSAgICAxODcsIDE4NywgMTc0LCAxNzQsIDE3NCwgMTg4LCAxODksIDE5MCwgMTkxLCA4NCwgMTkwLCAxOTAsIDE5MCwgMjIsIDE5MiwgCi0gICAgMTkzLCAxOTQsIDE5NSwgMTk2LCAxOTMsIDE5NCwgMTk1LCAxOTYsIDIyLCAyMiwgMjIsIDEzOCwgMTk3LCAxOTcsIDE5NywgCi0gICAgMjIsIDE5OCwgMTk5LCAyMDAsIDIwMSwgMjAyLCAyMDMsIDIwNCwgMjEsIDIwNSwgMTEwLCAyMDUsIDIwNiwgMjA3LCAyMiwgCi0gICAgMTkyLCAxOTIsIDEzOCwgMjgsIDM2LCAyMiwgMTkyLCAxMzgsIDE5NywgMjA4LCAyMDgsIDEzOCwgMTM4LCAxMzgsIDIwOSwgCi0gICAgMTYzLCAxNjQsIDE5MiwgMTkyLCAxOTIsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCA3OCwgMTM4LCAKLSAgICAyMDgsIDEzOCwgMTM4LCAxOTIsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTg3LCAxNzQsIDE3NCwgCi0gICAgMTc0LCAxNzQsIDE3NCwgMCwgMjEwLCAyMTEsIDIxMiwgMjEzLCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAyMTQsIAotICAgIDUxLCAwLCAwLCAzNCwgMjE0LCAyMTQsIDIxNCwgMjE0LCAyMTQsIDIxNSwgMjE1LCAyMTYsIDIxNywgMjE4LCAyMTksIDIxNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDIxNCwgMjE0LCAyMTQsIDIxNCwgMjE0LCAyMTUsIDIxNSwgMjE2LCAyMTcsIDIxOCwgMCwgNTEsIAotICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDAsIDAsIDAsIDg1LCA4NSwgODUsIDg1LCAKLSAgICA4NSwgODUsIDg1LCA4NSwgMjIwLCAyMjEsIDg1LCA4NSwgMjMsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIAotICAgIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDgxLCA4MSwgMTc2LCAxNzYsIDgxLCA4MSwgODEsIDgxLCAxNzYsIDE3NiwgMTc2LCA4MSwgODEsIAotICAgIDgyLCA4MiwgODIsIDgyLCA4MSwgODIsIDgyLCA4MiwgMTc2LCAxNzYsIDgxLCA4NiwgODEsIDE3NiwgMTc2LCA4NiwgODYsIAotICAgIDg2LCA4NiwgODEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIyMiwgMjIyLCA0OSwgCi0gICAgMjIzLCAyNiwgMjIzLCAyMjIsIDQ5LCAyNiwgMjIzLCAzNSwgNDksIDQ5LCA0OSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0NiwgCi0gICAgMjYsIDQ5LCAyMjMsIDI2LCA3OCwgNDksIDQ5LCA0OSwgNDksIDQ5LCAyNiwgMjYsIDIyMiwgMjIzLCAyMjMsIDI2LCA0OSwgCi0gICAgMjYsIDIyNCwgMjYsIDQ5LCAyNiwgMTg0LCAyMjQsIDQ5LCA0OSwgMjI1LCAzNSwgNDksIDQ5LCA0NCwgNDksIDM1LCAxNTYsIAotICAgIDE1NiwgMTU2LCAxNTYsIDM1LCAyNiwgMjIyLCAzNSwgMzUsIDQ5LCA0OSwgMjI2LCA3OCwgNzgsIDc4LCA3OCwgNDksIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAyNiwgNzgsIDI2LCAyNiwgNDcsIDgwLCAyMjcsIDIyNywgMjI3LCAzNywgMzcsIDIyNywgMjI3LCAyMjcsIAotICAgIDIyNywgMjI3LCAyMjcsIDM3LCAzNywgMzcsIDM3LCAyMjcsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgCi0gICAgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOSwgMjI5LCAyMjksIDIyOSwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIAotICAgIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjksIDIyOSwgMjI5LCAyMjksIDIyOSwgMjI5LCAxNzMsIDE3MywgMTczLCA0NCwgCi0gICAgNDcsIDE3MywgMTczLCAxNzMsIDE3MywgMzcsIDI2LCAyNiwgMCwgMCwgMCwgMCwgNDAsIDQwLCA0MCwgNDAsIDQwLCAzMCwgCi0gICAgMzAsIDMwLCAzMCwgMzAsIDIzMCwgMjMwLCAyNiwgMjYsIDI2LCAyNiwgNzgsIDI2LCAyNiwgNzgsIDI2LCAyNiwgNzgsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDIzMSwgMjMwLCAyMzAsIDI2LCAyNiwgNDAsIDI2LCA0MCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDQwLCAKLSAgICAyMzIsIDIzMywgMjMzLCAyMzQsIDc4LCA3OCwgNDAsIDIzMywgMjM0LCAyMzIsIDIzMywgMjM0LCAyMzIsIDc4LCA0MCwgNzgsIAotICAgIDIzMywgMjM1LCAyMzYsIDc4LCAyMzMsIDIzMiwgNzgsIDc4LCA3OCwgMjMzLCAyMzIsIDIzMiwgMjMzLCA0MCwgMjMzLCAKLSAgICAyMzMsIDIzMiwgMjMyLCA0MCwgMjM0LCA0MCwgMjM0LCA0MCwgNDAsIDQwLCA0MCwgMjMzLCAyMzcsIDIyNiwgMjMzLCAyMjYsIAotICAgIDIyNiwgMjMyLCAyMzIsIDIzMiwgNDAsIDQwLCA0MCwgNDAsIDc4LCAyMzIsIDc4LCAyMzIsIDIzMywgMjMzLCAyMzIsIDIzMiwgCi0gICAgMjMyLCAyMzQsIDIzMiwgMjMyLCAyMzQsIDIzMiwgMjMyLCAyMzQsIDIzMywgMjM0LCAyMzIsIDIzMiwgMjMzLCA3OCwgNzgsIAotICAgIDc4LCA3OCwgNzgsIDIzMywgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAKLSAgICAyMzgsIDQwLCAyMzQsIDc4LCAyMzMsIDIzMywgMjMzLCAyMzMsIDIzMiwgMjMyLCAyMzMsIDIzMywgNzgsIDIzMCwgMjM4LCAKLSAgICAyMzgsIDIzNCwgMjM0LCAyMzIsIDIzMiwgMjM0LCAyMzQsIDIzMiwgMjMyLCAyMzQsIDIzNCwgMjMyLCAyMzIsIDIzMiwgCi0gICAgMjMyLCAyMzIsIDIzMiwgMjM0LCAyMzQsIDIzMywgMjMzLCAyMzQsIDIzNCwgMjMzLCAyMzMsIDIzNCwgMjM0LCAyMzIsIAotICAgIDIzMiwgMjMyLCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA0MCwgNzgsIDc4LCAyMzIsIDQwLCA3OCwgCi0gICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCA3OCwgNDAsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDIzNCwgMjM0LCAyMzQsIDIzNCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIAotICAgIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMywgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIAotICAgIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCi0gICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzNCwgMjM0LCAyMzQsIDIzNCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAotICAgIDIzMiwgMjM0LCAyMzQsIDIzNCwgMjM0LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAxNjMsIDE2NCwgMTYzLCAxNjQsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjMyLCAyMzIsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIAotICAgIDI0MCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCA0NCwgNDcsIDQ0LCAKKyAgICA0NywgNDQsIDQ3LCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAKKyAgICAzOCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMCwgMCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMCwgMCwgNDMsIDQzLCAKKyAgICA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDQzLCA0MywgNDMsIDQzLCAKKyAgICA0MywgNDMsIDQzLCA0MywgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAKKyAgICAwLCAwLCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAwLCAwLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDAsIAorICAgIDM4LCAwLCAzOCwgMCwgMzgsIDAsIDM4LCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDM4LCAzOCwgMzgsIDM4LCAKKyAgICAzOCwgMzgsIDM4LCAzOCwgNDMsIDE4MiwgNDMsIDE4MiwgNDMsIDE4MiwgNDMsIDE4MiwgNDMsIDE4MiwgNDMsIDE4MiwgNDMsIAorICAgIDE4MiwgMCwgMCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAKKyAgICAxODMsIDE4MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAKKyAgICAxODMsIDE4MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAKKyAgICAxODMsIDE4MywgNDMsIDQzLCA0MywgNDMsIDQzLCAwLCA0MywgNDMsIDM4LCAzOCwgMzgsIDE4NCwgMTgzLCA1OCwgMTgyLCAKKyAgICA1OCwgNTgsIDc2LCA0MywgNDMsIDQzLCAwLCA0MywgNDMsIDM4LCAxODQsIDM4LCAxODQsIDE4MywgNzYsIDc2LCA3NiwgNDMsIAorICAgIDQzLCA0MywgMTgyLCAwLCAwLCA0MywgNDMsIDM4LCAzOCwgMzgsIDE4NCwgMCwgNzYsIDc2LCA3NiwgNDMsIDQzLCA0MywgCisgICAgMTgyLCA0MywgNDMsIDQzLCA0MywgMzgsIDM4LCAzOCwgMTg0LCAzOCwgNzYsIDE4NSwgMTg1LCAwLCAwLCA0MywgNDMsIDQzLCAKKyAgICAwLCA0MywgNDMsIDM4LCAxODQsIDM4LCAxODQsIDE4MywgMTg1LCA1OCwgMCwgMTg2LCAxODYsIDE4NywgMTg3LCAxODcsIAorICAgIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE3NCwgMTc0LCAxNzQsIDE4OCwgMTg5LCAxOTAsIDE5MSwgODQsIDE5MCwgCisgICAgMTkwLCAxOTAsIDIyLCAxOTIsIDE5MywgMTk0LCAxOTUsIDE5NiwgMTkzLCAxOTQsIDE5NSwgMTk2LCAyMiwgMjIsIDIyLCAKKyAgICAxMzgsIDE5NywgMTk3LCAxOTcsIDIyLCAxOTgsIDE5OSwgMjAwLCAyMDEsIDIwMiwgMjAzLCAyMDQsIDIxLCAyMDUsIDExMCwgCisgICAgMjA1LCAyMDYsIDIwNywgMjIsIDE5MiwgMTkyLCAxMzgsIDI4LCAzNiwgMjIsIDE5MiwgMTM4LCAxOTcsIDIwOCwgMjA4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAyMDksIDE2MywgMTY0LCAxOTIsIDE5MiwgMTkyLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgNzgsIDEzOCwgMjA4LCAxMzgsIDEzOCwgMTkyLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDE4NywgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDAsIDIxMCwgMjExLCAyMTIsIDIxMywgMTc0LCAxNzQsIDE3NCwgCisgICAgMTc0LCAxNzQsIDE3NCwgMjE0LCA1MSwgMCwgMCwgMzQsIDIxNCwgMjE0LCAyMTQsIDIxNCwgMjE0LCAyMTUsIDIxNSwgMjE2LCAKKyAgICAyMTcsIDIxOCwgMjE5LCAyMTQsIDM0LCAzNCwgMzQsIDM0LCAyMTQsIDIxNCwgMjE0LCAyMTQsIDIxNCwgMjE1LCAyMTUsIAorICAgIDIxNiwgMjE3LCAyMTgsIDAsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCAwLCAKKyAgICAwLCAwLCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDIyMCwgMjIxLCA4NSwgODUsIDIzLCA4NSwgODUsIDg1LCAKKyAgICA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MSwgODEsIDE3NiwgMTc2LCA4MSwgODEsIDgxLCA4MSwgCisgICAgMTc2LCAxNzYsIDE3NiwgODEsIDgxLCA4MiwgODIsIDgyLCA4MiwgODEsIDgyLCA4MiwgODIsIDE3NiwgMTc2LCA4MSwgODYsIAorICAgIDgxLCAxNzYsIDE3NiwgODYsIDg2LCA4NiwgODYsIDgxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAyMjIsIDIyMiwgNDksIDIyMywgMjYsIDIyMywgMjIyLCA0OSwgMjYsIDIyMywgMzUsIDQ5LCA0OSwgNDksIDM1LCAKKyAgICAzNSwgNDksIDQ5LCA0OSwgNDYsIDI2LCA0OSwgMjIzLCAyNiwgNzgsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMjYsIDI2LCAyMjIsIAorICAgIDIyMywgMjIzLCAyNiwgNDksIDI2LCAyMjQsIDI2LCA0OSwgMjYsIDE4NCwgMjI0LCA0OSwgNDksIDIyNSwgMzUsIDQ5LCA0OSwgCisgICAgNDQsIDQ5LCAzNSwgMTU2LCAxNTYsIDE1NiwgMTU2LCAzNSwgMjYsIDIyMiwgMzUsIDM1LCA0OSwgNDksIDIyNiwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMjYsIDc4LCAyNiwgMjYsIDQ3LCA4MCwgMjI3LCAyMjcsIDIyNywgMzcsIAorICAgIDM3LCAyMjcsIDIyNywgMjI3LCAyMjcsIDIyNywgMjI3LCAzNywgMzcsIDM3LCAzNywgMjI3LCAyMjgsIDIyOCwgMjI4LCAKKyAgICAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjksIDIyOSwgMjI5LCAyMjksIDIyOCwgCisgICAgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI5LCAyMjksIDIyOSwgMjI5LCAyMjksIAorICAgIDIyOSwgMTczLCAxNzMsIDE3MywgNDQsIDQ3LCAxNzMsIDE3MywgMTczLCAxNzMsIDM3LCAyNiwgMjYsIDAsIDAsIDAsIDAsIAorICAgIDQwLCA0MCwgNDAsIDQwLCA0MCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyMzAsIDIzMCwgMjYsIDI2LCAyNiwgMjYsIDc4LCAyNiwgCisgICAgMjYsIDc4LCAyNiwgMjYsIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzEsIDIzMCwgMjMwLCAyNiwgMjYsIDQwLCAyNiwgNDAsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA0MCwgMjMyLCAyMzMsIDIzMywgMjM0LCA3OCwgNzgsIDQwLCAyMzMsIDIzNCwgMjMyLCAKKyAgICAyMzMsIDIzNCwgMjMyLCA3OCwgNDAsIDc4LCAyMzMsIDIzNSwgMjM2LCA3OCwgMjMzLCAyMzIsIDc4LCA3OCwgNzgsIDIzMywgCisgICAgMjMyLCAyMzIsIDIzMywgNDAsIDIzMywgMjMzLCAyMzIsIDIzMiwgNDAsIDIzNCwgNDAsIDIzNCwgNDAsIDQwLCA0MCwgNDAsIAorICAgIDIzMywgMjM3LCAyMjYsIDIzMywgMjI2LCAyMjYsIDIzMiwgMjMyLCAyMzIsIDQwLCA0MCwgNDAsIDQwLCA3OCwgMjMyLCA3OCwgCisgICAgMjMyLCAyMzMsIDIzMywgMjMyLCAyMzIsIDIzMiwgMjM0LCAyMzIsIDIzMiwgMjM0LCAyMzIsIDIzMiwgMjM0LCAyMzMsIAorICAgIDIzNCwgMjMyLCAyMzIsIDIzMywgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzMsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjM4LCA0MCwgMjM0LCA3OCwgMjMzLCAyMzMsIDIzMywgMjMzLCAyMzIsIAorICAgIDIzMiwgMjMzLCAyMzMsIDc4LCAyMzAsIDIzOCwgMjM4LCAyMzQsIDIzNCwgMjMyLCAyMzIsIDIzNCwgMjM0LCAyMzIsIDIzMiwgCisgICAgMjM0LCAyMzQsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzNCwgMjM0LCAyMzMsIDIzMywgMjM0LCAyMzQsIAorICAgIDIzMywgMjMzLCAyMzQsIDIzNCwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgCisgICAgNDAsIDc4LCA3OCwgMjMyLCA0MCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgNzgsIDQwLCAKKyAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzQsIDIzNCwgMjM0LCAyMzQsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCisgICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzMsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDIzMiwgMjMyLCA3OCwgNzgsIAorICAgIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzQsIDIzNCwgMjM0LCAKKyAgICAyMzQsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzNCwgMjM0LCAyMzQsIDIzNCwgNzgsIDc4LCAyMzIsIDIzMiwgCisgICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMTYzLCAxNjQsIDE2MywgMTY0LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjM5LCAyNiwgMjYsIDI2LCAyNiwgMjMyLCAyMzIsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNDAsIDI0MSwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDI2LCA3OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgODAsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAotICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAyNiwgNzgsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA3OCwgNzgsIAotICAgIDc4LCA3OCwgNzgsIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgODAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyNiwgMjYsIDI2LCAyMzksIDI2LCAyNiwgMjM5LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIAogICAgIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIAotICAgIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDI0MSwgMjQxLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDIyNywgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAKLSAgICAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMzAsIAorICAgIDM3LCAzNywgMzcsIDM3LCAzNywgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAKKyAgICAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgCisgICAgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIAorICAgIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAKKyAgICAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgCisgICAgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyMjcsIAorICAgIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAKKyAgICAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAogICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAogICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAogICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMzAsIAogICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAotICAgIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAotICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAotICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIAotICAgIDI2LCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIAotICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIAotICAgIDI2LCAzMCwgNDAsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAyNiwgMzAsIDQwLCAyNiwgMjYsIDI2LCAyNiwgMzAsIAotICAgIDMwLCAzMCwgMjYsIDI2LCAzMCwgMjYsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAotICAgIDc4LCA3OCwgNzgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMzAsIAotICAgIDMwLCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIDMwLCAyNiwgMjYsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAyNiwgMzAsIDQwLCAyNiwgMjYsIDI2LCAyNiwgMzAsIAorICAgIDMwLCAyNiwgMjYsIDMwLCA0MCwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMzAsIDI2LCAyNiwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyNDQsIDI0NCwgNzgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMzAsIDMwLCAyNiwgMjYsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyMzksIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAyNiwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAzMCwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAyNiwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMzAsIDMwLCAzMCwgMjYsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMzAsIDMwLCAKKyAgICAyNiwgNDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMzAsIDMwLCAzMCwgMjYsIDMwLCAzMCwgCi0gICAgMzAsIDMwLCAyNiwgMzAsIDMwLCAyNiwgNDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDIzOSwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDIzOSwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDIzOSwgODAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDIzOSwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDIzOSwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyMzksIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjM5LCAzMCwgMzAsIDMwLCAzMCwgCisgICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyMzksIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyMzksIDIzOSwgMzAsIDIzOSwgMzAsIDMwLCAzMCwgMzAsIDIzOSwgMzAsIAorICAgIDMwLCAyMzksIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDI2LCAyNiwgMjYsIDI2LCAyMzksIDIzOSwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIAotICAgIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA4MCwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAotICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMzAsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAotICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDI2LCAyMzksIDI2LCAyNiwgMjYsIDI2LCAyMzksIAorICAgIDIzOSwgMjM5LCAyNiwgMjM5LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgCi0gICAgMTYzLCAxNjQsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMTUzLCAxNTMsIAorICAgIDE2MywgMTY0LCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDE1MywgMTUzLCAKICAgICAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgCi0gICAgMTUzLCAxNTMsIDE1MywgMTUzLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzMiwgNzgsIDc4LCAyMzIsIAotICAgIDIzMiwgMTYzLCAxNjQsIDc4LCAyMzIsIDIzMiwgNzgsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAKLSAgICAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDIzMiwgOSwgMTAsIDksIDEwLCA5LCAxMCwgOSwgMTAsIDE2MywgMTY0LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICAxNTMsIDE1MywgMTUzLCAxNTMsIDI2LCAyMzksIDIzOSwgMjM5LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyMzIsIDc4LCA3OCwgCisgICAgMjMyLCAyMzIsIDE2MywgMTY0LCA3OCwgMjMyLCAyMzIsIDc4LCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCAyMzIsIAorICAgIDIzMiwgMjMyLCAyMzIsIDksIDEwLCA5LCAxMCwgOSwgMTAsIDksIDEwLCAxNjMsIDE2NCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKICAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKICAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKICAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKICAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKICAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKICAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDE2MywgCi0gICAgMTY0LCA5LCAxMCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgCi0gICAgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAotICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgCi0gICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCi0gICAgMjMyLCA3OCwgMjMyLCAyMzIsIDc4LCA3OCwgMTYzLCAxNjQsIDE2MywgMTY0LCAyMzIsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIAotICAgIDc4LCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKLSAgICA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCAxNjMsIDE2NCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIyNiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCi0gICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKLSAgICA3OCwgNzgsIDIzMiwgNzgsIDIzMiwgNzgsIDc4LCAyMzIsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIAotICAgIDc4LCA3OCwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCAKICAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKLSAgICA3OCwgNzgsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAKLSAgICA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgMjMyLCAyMzIsIDc4LCA3OCwgMjMyLCAyMjYsIDIxNiwgCi0gICAgMjE2LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAorICAgIDE2MywgMTY0LCA5LCAxMCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIAorICAgIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKKyAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCisgICAgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAKKyAgICAyMzIsIDIzMiwgMjMyLCA3OCwgMjMyLCAyMzIsIDc4LCA3OCwgMTYzLCAxNjQsIDE2MywgMTY0LCAyMzIsIDc4LCA3OCwgNzgsIAorICAgIDc4LCAyMzIsIDc4LCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCAxNjMsIDE2NCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIyNiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKKyAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgMjMyLCAyMzIsIAorICAgIDIzMiwgMjMyLCA3OCwgNzgsIDIzMiwgNzgsIDIzMiwgNzgsIDc4LCAyMzIsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgMjMyLCAyMzIsIDc4LCA3OCwgMjMyLCAKKyAgICAyMjYsIDIxNiwgMjE2LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCiAgICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAogICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgMjMyLCAKKyAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCisgICAgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKICAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCi0gICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAotICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgCi0gICAgNzgsIDI0MywgNzgsIDIzMiwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCAKLSAgICA3OCwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDc4LCAyMzIsIDc4LCA3OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgMjQ1LCA3OCwgMjMyLCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgMjMyLCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAKKyAgICAyMzIsIDIzMiwgNzgsIDIzMiwgNzgsIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDIzOSwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA3OCwgCi0gICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCi0gICAgNzgsIDc4LCAyNiwgMjYsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgMjYsIDI2LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyNiwgMjYsIDI2LCAyMzksIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyMzksIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDQsIDQ0LCAKICAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKICAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKLSAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCiAgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCiAgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgMCwgNDQsIDQ3LCA0NCwgNDQsIDQ0LCA0NywgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NCwgNDQsIDQ0LCAKLSAgICA0NywgNDQsIDQ3LCA0NywgNDQsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDUxLCA1MSwgNDQsIDQ0LCA0NCwgNDcsIDQ0LCAKKyAgICA0NywgNDcsIDAsIDQ0LCA0NywgNDQsIDQ0LCA0NCwgNDcsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDQsIAorICAgIDQ0LCA0NCwgNDcsIDQ0LCA0NywgNDcsIDQ0LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA1MSwgNTEsIDQ0LCA0NCwgNDQsIAogICAgIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIAogICAgIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIAogICAgIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIAogICAgIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIAogICAgIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIAotICAgIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NywgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgNDQsIDQ3LCA0NCwgNDcsIAotICAgIDgxLCA4MSwgODEsIDQ0LCA0NywgMCwgMCwgMCwgMCwgMCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxNTMsIDEzOCwgMTM4LCA0NywgCisgICAgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDcsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA4MSwgODEsIDgxLCA0NCwgNDcsIDAsIDAsIDAsIDAsIDAsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTUzLCAxMzgsIAorICAgIDEzOCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKICAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgMCwgNDcsIDAsIDAsIDAsIDAsIDAsIDQ3LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0NywgNDcsIDQ3LCAwLCA0NywgMCwgMCwgMCwgMCwgMCwgNDcsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxLCA4MywgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQyLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDUxLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQyLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgODEsIDgxLCA4MSwgODEsIAogICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIAotICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgMTM4LCAxMzgsIDI4LCAzNiwgMjgsIDM2LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAyOCwgMzYsIDEzOCwgMjgsIDM2LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCA4NCwgCi0gICAgMTM4LCAxMzgsIDg0LCAxMzgsIDI4LCAzNiwgMTM4LCAxMzgsIDI4LCAzNiwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIAotICAgIDE2NCwgMTYzLCAxNjQsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCA1MiwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCi0gICAgMTM4LCAxMzgsIDEzOCwgMTM4LCA4NCwgODQsIDEzOCwgMTM4LCAxMzgsIDEzOCwgODQsIDEzOCwgMTk1LCAwLCAwLCAwLCAwLCAKKyAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgMTM4LCAxMzgsIDI4LCAzNiwgMjgsIDM2LCAxMzgsIAorICAgIDEzOCwgMTM4LCAyOCwgMzYsIDEzOCwgMjgsIDM2LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCA4NCwgMTM4LCAxMzgsIDg0LCAxMzgsIDI4LCAzNiwgMTM4LCAxMzgsIDI4LCAzNiwgMTYzLCAxNjQsIDE2MywgMTY0LCAKKyAgICAxNjMsIDE2NCwgMTYzLCAxNjQsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCA1MiwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCA4NCwgODQsIDEzOCwgMTM4LCAxMzgsIDEzOCwgODQsIDEzOCwgMTk1LCAxMzgsIAorICAgIDEzOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCi0gICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMjQ0LCAyNDQsIDAsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ1LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKLSAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCi0gICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKLSAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCi0gICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgCi0gICAgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIAotICAgIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAKLSAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgCi0gICAgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIAotICAgIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAKLSAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgCi0gICAgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIAotICAgIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAKLSAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgCi0gICAgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIAotICAgIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAKLSAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgCi0gICAgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIAotICAgIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAKLSAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCi0gICAgMjQ0LCAyNDQsIDAsIDAsIDAsIDAsIDI0NiwgMjQ3LCAyNDcsIDI0NywgMjQ0LCAyNDgsIDE3MCwgMjQ5LCAyNTAsIDI1MSwgCi0gICAgMjUwLCAyNTEsIDI1MCwgMjUxLCAyNTAsIDI1MSwgMjUwLCAyNTEsIDI0NCwgMjQ0LCAyNTAsIDI1MSwgMjUwLCAyNTEsIAotICAgIDI1MCwgMjUxLCAyNTAsIDI1MSwgMjUyLCAyNTMsIDI1NCwgMjU0LCAyNDQsIDI0OSwgMjQ5LCAyNDksIDI0OSwgMjQ5LCAKLSAgICAyNDksIDI0OSwgMjQ5LCAyNDksIDI1NSwgMjU2LCAyNTcsIDI1OCwgMjU5LCAyNTksIDI1MiwgMjQ4LCAyNDgsIDI0OCwgCi0gICAgMjQ4LCAyNDgsIDI0NSwgMjQ0LCAyNjAsIDI2MCwgMjYwLCAyNDgsIDE3MCwgMjQ3LCAyNDQsIDI2LCAwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIAotICAgIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAKLSAgICAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMjYxLCAyNjEsIDE3MCwgMjYxLCAyNjEsIDE3MCwgMjYxLCAyNjEsIDE3MCwgMjYxLCAyNjEsIAotICAgIDE3MCwgMjYxLCAyNjEsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjYxLCAxNzAsIDE3MCwgMCwgCi0gICAgMCwgMjYyLCAyNjIsIDI2MywgMjYzLCAyNDgsIDI2NCwgMjY1LCAyNTIsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAKLSAgICAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgCi0gICAgMTcwLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNjEsIAotICAgIDI2MSwgMTcwLCAyNjEsIDI2MSwgMTcwLCAyNjEsIDI2MSwgMTcwLCAyNjEsIDI2MSwgMTcwLCAyNjEsIDI2MSwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNjEsIDE3MCwgMTcwLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAotICAgIDI0NywgMjQ4LCAyNDgsIDI2NCwgMjY1LCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMCwgMjM5LCAyMzksIDIzOSwgMjM5LCAyNDYsIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIAorICAgIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAKKyAgICAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgCisgICAgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIAorICAgIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAKKyAgICAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgCisgICAgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIAorICAgIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAKKyAgICAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgCisgICAgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIAorICAgIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAKKyAgICAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgCisgICAgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIAorICAgIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAKKyAgICAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgCisgICAgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMCwgMCwgMCwgMCwgMjQ3LCAyNDgsIDI0OCwgMjQ4LCAyMzksIDI0OSwgMTcwLCAKKyAgICAyNTAsIDI1MSwgMjUyLCAyNTEsIDI1MiwgMjUxLCAyNTIsIDI1MSwgMjUyLCAyNTEsIDI1MiwgMjM5LCAyMzksIDI1MSwgCisgICAgMjUyLCAyNTEsIDI1MiwgMjUxLCAyNTIsIDI1MSwgMjUyLCAyNTMsIDI1NCwgMjU1LCAyNTUsIDIzOSwgMjUwLCAyNTAsIAorICAgIDI1MCwgMjUwLCAyNTAsIDI1MCwgMjUwLCAyNTAsIDI1MCwgMjU2LCAyNTcsIDI1OCwgMjU5LCAyNjAsIDI2MCwgMjUzLCAKKyAgICAyNDksIDI0OSwgMjQ5LCAyNDksIDI0OSwgMjQ2LCAyMzksIDI2MSwgMjYxLCAyNjEsIDI0OSwgMTcwLCAyNDgsIDIzOSwgMjYsIAorICAgIDAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNjIsIDE3MCwgMjYyLCAKKyAgICAxNzAsIDI2MiwgMTcwLCAyNjIsIDE3MCwgMjYyLCAxNzAsIDI2MiwgMTcwLCAyNjIsIDE3MCwgMjYyLCAxNzAsIDI2MiwgCisgICAgMTcwLCAyNjIsIDE3MCwgMjYyLCAxNzAsIDI2MiwgMTcwLCAxNzAsIDI2MiwgMTcwLCAyNjIsIDE3MCwgMjYyLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNjIsIDI2MiwgMTcwLCAyNjIsIDI2MiwgMTcwLCAyNjIsIDI2MiwgMTcwLCAKKyAgICAyNjIsIDI2MiwgMTcwLCAyNjIsIDI2MiwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNjIsIAorICAgIDE3MCwgMTcwLCAwLCAwLCAyNjMsIDI2MywgMjY0LCAyNjQsIDI0OSwgMjY1LCAyNjYsIDI1MywgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDI2MiwgMTcwLCAyNjIsIDE3MCwgMjYyLCAxNzAsIAorICAgIDI2MiwgMTcwLCAyNjIsIDE3MCwgMjYyLCAxNzAsIDI2MiwgMTcwLCAyNjIsIDE3MCwgMjYyLCAxNzAsIDI2MiwgMTcwLCAKKyAgICAyNjIsIDE3MCwgMjYyLCAxNzAsIDE3MCwgMjYyLCAxNzAsIDI2MiwgMTcwLCAyNjIsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDI2MiwgMjYyLCAxNzAsIDI2MiwgMjYyLCAxNzAsIDI2MiwgMjYyLCAxNzAsIDI2MiwgMjYyLCAxNzAsIAorICAgIDI2MiwgMjYyLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDI2MiwgMTcwLCAxNzAsIDI2MiwgCisgICAgMjYyLCAyNjIsIDI2MiwgMjQ4LCAyNDksIDI0OSwgMjY1LCAyNjYsIDAsIDAsIDAsIDAsIDAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAKLSAgICAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgCi0gICAgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIAotICAgIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAKLSAgICAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgCi0gICAgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIAotICAgIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAKLSAgICAyNjUsIDI2NSwgMjY1LCAyNjUsIDAsIDI2NiwgMjY2LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMjY2LCAyNjYsIDI2NiwgCisgICAgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIAorICAgIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAKKyAgICAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgCisgICAgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIAorICAgIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAKKyAgICAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgCisgICAgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAwLCAyNjcsIDI2NywgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKLSAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCi0gICAgMjQ0LCAyNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI0NSwgMjQ1LCAwLCAKLSAgICAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OSwgMjY5LCAKLSAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNDUsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCi0gICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjQ1LCAyNDUsIDI0NSwgMjY2LCAyNjcsIDI2NywgCi0gICAgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAotICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDAsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI0NSwgMjQ1LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI0NSwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNDYsIDI0NiwgMCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjQ2LCAyNzEsIDI3MSwgMjcxLCAyNzEsIAorICAgIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI0NiwgMjQ2LCAyNDYsIAorICAgIDI2NywgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAKKyAgICAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAwLCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNDYsIDI0NiwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNDYsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKQEAgLTIwODEsMjAgKzIwODYsMjAgQEAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDI0OCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjQ5LCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKQEAgLTIxMDMsMTI0ICsyMTA4LDExNSBAQAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMCwgMCwgMCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCi0gICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKLSAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCi0gICAgMjQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIAotICAgIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNTMsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNTMsIDUzLCAKKyAgICA1MywgNTMsIDUzLCA1MywgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA1MywgMTM4LCAxMzgsIDEzOCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgNDgsIDQ4LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDcsIDQ0LCA0NywgCiAgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCiAgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCi0gICAgNDQsIDQ3LCA0OCwgODEsIDgyLCA4MiwgODIsIDEzOCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIAotICAgIDEzOCwgNTIsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKLSAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA1MSwgNTEsIDgxLCA4MSwgNDgsIDQ4LCAKKyAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0OCwgODEsIDgyLCA4MiwgODIsIDEzOCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgCisgICAgODEsIDgxLCA4MSwgODEsIDEzOCwgNTIsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA1MSwgNTEsIAorICAgIDgxLCA4MSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTczLCAxNzMsIDE3MywgCi0gICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCA4MSwgODEsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgCi0gICAgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCi0gICAgNTQsIDU0LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ3LCA0NywgCisgICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCA4MSwgODEsIDgzLCA4MywgODMsIDgzLCAKKyAgICA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCAKKyAgICA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTQsIDU0LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKKyAgICA0NCwgNDcsIDQ3LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKICAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKICAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKLSAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKLSAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDUxLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ0LCAKLSAgICA0NywgNDQsIDQ3LCA0NCwgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDUyLCAyNzEsIDI3MSwgNDQsIAotICAgIDQ3LCA0NCwgNDcsIDQ4LCA0NCwgNDcsIDQ0LCA0NywgNDcsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAotICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NCwgNDQsIDQ0LCAwLCAwLCA0NCwgCi0gICAgNDQsIDQ0LCA0NCwgNDQsIDQ3LCA0NCwgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDUxLCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDUyLCAyNzIsIDI3MiwgNDQsIDQ3LCA0NCwgNDcsIDQ4LCA0NCwgNDcsIDQ0LCA0NywgNDcsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NCwgCisgICAgNDQsIDQ0LCA0NCwgMCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NywgNDQsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA0OCwgNTEsIDUxLCA0NywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgNDgsIDQ4LCA0OCwgMTQyLCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgMTM1LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM5LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMCwgMCwgMCwgMCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgODAsIDgwLCA4NSwgMjI1LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNTEsIDUxLCA0NywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgNDgsIAorICAgIDQ4LCA0OCwgMTQyLCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzUsIDEzNSwgCisgICAgMTM5LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgODAsIDgwLCAKKyAgICA4NSwgMjI1LCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzksIDEzOSwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDE0MiwgCisgICAgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MywgODMsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIAorICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODMsIDgzLCA4MywgNDgsIAorICAgIDgzLCA0OCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDg2LCA4NiwgODYsIDgzLCAKKyAgICA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM5LCAxNzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgzLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM5LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0NSwgMTM5LCAxMzksIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM5LCAxMzksIDEzOSwgMTc1LCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAKKyAgICA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgMCwgNTMsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgNTMsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA0OCwgNDgsIDQ4LCAxMzUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzksIDAsIDAsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgODMsIDgzLCA4MywgODMsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA1MywgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgODAsIDgwLCA4MCwgNDgsIDEzOSwgMTM1LCAxMzksIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODEsIDQ4LCA4MSwgODEsIDg2LCA0OCwgNDgsIDgxLCA4MSwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA4MSwgODEsIDQ4LCA4MSwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNTMsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzNSwgMTM1LCAxMzksIDEzOSwgODMsIDgzLCA0OCwgNTMsIDUzLCAKKyAgICAxMzksIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgMjcyLCA1MSwgNTEsIDUxLCA1MSwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzUsIDEzOSwgMTM5LCAKKyAgICAxMzUsIDEzOSwgMTM5LCA4MywgMTM5LCAxNDIsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAorICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKKyAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCisgICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAorICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKKyAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCisgICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAorICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKKyAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCisgICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAorICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKKyAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCisgICAgMjYyLCAyNjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgCiAgICAgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOCwgCi0gICAgMTM4LCAxMzgsIDEzOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM5LCAxMzksIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAotICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDgzLCA4MywgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIAotICAgIDgxLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MywgODMsIDgzLCA0OCwgODMsIDQ4LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgODYsIDg2LCA4NiwgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgCi0gICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDE3NSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODMsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzksIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQ1LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIAotICAgIDEzOSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxNzUsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgCi0gICAgODMsIDgzLCAwLCA1MywgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAKLSAgICAwLCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCA1MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAKLSAgICAxMzksIDEzOSwgMTM1LCAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDEzNSwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzOSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCA4MywgODMsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDUzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MCwgODAsIDgwLCAKLSAgICA0OCwgMTM5LCAxMzUsIDEzOSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA4MSwgNDgsIDgxLCA4MSwgODYsIDQ4LCA0OCwgODEsIDgxLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgxLCA4MSwgNDgsIAotICAgIDgxLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNDgsIDQ4LCA1MywgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDEzOSwgMTM1LCAxMzUsIDEzOSwgMTM5LCA4MywgODMsIDQ4LCA1MywgNTMsIDEzOSwgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAyNzEsIAotICAgIDUxLCA1MSwgNTEsIDUxLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM5LCAxMzksIDgzLCAxMzksIAotICAgIDE0MiwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAotICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKLSAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCi0gICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAotICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKLSAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCi0gICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAotICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKLSAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCi0gICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAotICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKLSAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgCi0gICAgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIAotICAgIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAKLSAgICAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgCi0gICAgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIAotICAgIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAKLSAgICAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgCi0gICAgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIAotICAgIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAKLSAgICAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MywgMjczLCAyNzMsIDI3MywgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAyNzMsIAogICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAKICAgICAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgCiAgICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIApAQCAtMjIyOSw3ICsyMjI1LDggQEAKICAgICAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgCiAgICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIAogICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAKLSAgICAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzQsIDI3NCwgCisgICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIAorICAgIDI3MywgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKICAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCiAgICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAogICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKQEAgLTIyMzgsMzggKzIyMzUsNDcgQEAKICAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCiAgICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAogICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCi0gICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAotICAgIDE3MCwgMTcwLCAyNzQsIDE3MCwgMjc0LCAxNzAsIDE3MCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICAyNzQsIDI3NCwgMjc0LCAxNzAsIDI3NCwgMTcwLCAyNzQsIDE3MCwgMTcwLCAyNzQsIDI3NCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAotICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCi0gICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAotICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDAsIDAsIDI3NCwgCi0gICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAotICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCi0gICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAotICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCi0gICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAotICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMjc0LCAyNzQsIDI3NCwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAxNzAsIDE3MCwgMjc1LCAxNzAsIDI3NSwgMTcwLCAxNzAsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMTcwLCAyNzUsIDE3MCwgMjc1LCAxNzAsIDE3MCwgCisgICAgMjc1LCAyNzUsIDE3MCwgMTcwLCAxNzAsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAwLCAwLCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDAsIDAsIDAsIDAsIDAsIDI3NSwgMjc2LCAyNzUsIDI3NywgMjc3LCAyNzcsIDI3NywgMjc3LCAKLSAgICAyNzcsIDI3NywgMjc3LCAyNzcsIDIxNSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCi0gICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAwLCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMCwgMjc1LCAwLCAyNzUsIDI3NSwgMCwgCi0gICAgMjc1LCAyNzUsIDAsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NywgMTMxLCAxMzEsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDAsIDAsIDAsIDAsIDAsIDI3NiwgMjc3LCAyNzYsIAorICAgIDI3OCwgMjc4LCAyNzgsIDI3OCwgMjc4LCAyNzgsIDI3OCwgMjc4LCAyNzgsIDIxNSwgMjc2LCAyNzYsIDI3NiwgMjc2LCAKKyAgICAyNzYsIDI3NiwgMjc2LCAyNzYsIDI3NiwgMjc2LCAyNzYsIDI3NiwgMjc2LCAwLCAyNzYsIDI3NiwgMjc2LCAyNzYsIDI3NiwgCisgICAgMCwgMjc2LCAwLCAyNzYsIDI3NiwgMCwgMjc2LCAyNzYsIDAsIDI3NiwgMjc2LCAyNzYsIDI3NiwgMjc2LCAyNzYsIDI3NiwgCisgICAgMjc2LCAyNzYsIDI3OCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDI3OCwgMjc4LCAKLSAgICAyNzgsIDI3OCwgMjc4LCAyNzgsIDI3OCwgMjc4LCAyNzgsIDI3OCwgMjc4LCAyNzgsIDI3OCwgMjc4LCAyNzgsIDI3OCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAorICAgIDEzMSwgMTMxLCAxMzEsIDI3OSwgMjc5LCAyNzksIDI3OSwgMjc5LCAyNzksIDI3OSwgMjc5LCAyNzksIDI3OSwgMjc5LCAKKyAgICAyNzksIDI3OSwgMjc5LCAyNzksIDI3OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIApAQCAtMjI4NSwyNyArMjI5MSwyNyBAQAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAyNzksIDE5NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAorICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAyODAsIDE5NSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMCwgMCwgMTMxLCAxMzEsIAorICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKKyAgICAxMzEsIDAsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCi0gICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCi0gICAgMTMxLCAxMzEsIDI4MCwgMjYsIDAsIDAsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCAyODEsIDI4MSwgMjgxLCAyODEsIDI4MSwgMjgxLCAyODEsIDI4MiwgMjgzLCAyODEsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4NiwgODYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODEsIAotICAgIDgxLCAyODEsIDI4NCwgMjg0LCAyODUsIDI4NSwgMjgyLCAyODMsIDI4MiwgMjgzLCAyODIsIDI4MywgMjgyLCAyODMsIDI4MiwgCi0gICAgMjgzLCAyODIsIDI4MywgMjgyLCAyODMsIDI4MiwgMjgzLCAyNDcsIDI0NywgMjgyLCAyODMsIDI4MSwgMjgxLCAyODEsIAotICAgIDI4MSwgMjg1LCAyODUsIDI4NSwgMjg2LCAyODEsIDI4NiwgMCwgMjgxLCAyODYsIDI4MSwgMjgxLCAyODQsIDI4NywgMjg4LCAKLSAgICAyODcsIDI4OCwgMjg3LCAyODgsIDI4OSwgMjgxLCAyODEsIDI5MCwgMjkxLCAyOTIsIDI5MiwgMjkzLCAwLCAyODEsIDI5NCwgCi0gICAgMjg5LCAyODEsIDAsIDAsIDAsIDAsIDEzMSwgMTMxLCAxMzEsIDExOCwgMTMxLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKKyAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDI4MSwgMjYsIDAsIDAsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAyODIsIDI4MiwgMjgyLCAyODIsIDI4MiwgMjgyLCAKKyAgICAyODIsIDI4MywgMjg0LCAyODIsIDAsIDAsIDAsIDAsIDAsIDAsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4NiwgODYsIAorICAgIDg2LCA4NiwgODYsIDg2LCA4NiwgODEsIDgxLCAyODIsIDI4NSwgMjg1LCAyODYsIDI4NiwgMjgzLCAyODQsIDI4MywgMjg0LCAKKyAgICAyODMsIDI4NCwgMjgzLCAyODQsIDI4MywgMjg0LCAyODMsIDI4NCwgMjgzLCAyODQsIDI4MywgMjg0LCAyNDgsIDI0OCwgCisgICAgMjgzLCAyODQsIDI4MiwgMjgyLCAyODIsIDI4MiwgMjg2LCAyODYsIDI4NiwgMjg3LCAyODIsIDI4NywgMCwgMjgyLCAyODcsIAorICAgIDI4MiwgMjgyLCAyODUsIDI4OCwgMjg5LCAyODgsIDI4OSwgMjg4LCAyODksIDI5MCwgMjgyLCAyODIsIDI5MSwgMjkyLCAKKyAgICAyOTMsIDI5MywgMjk0LCAwLCAyODIsIDI5NSwgMjkwLCAyODIsIDAsIDAsIDAsIDAsIDEzMSwgMTMxLCAxMzEsIDExOCwgCisgICAgMTMxLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIApAQCAtMjMxNCwxNjUgKzIzMjAsMTY1IEBACiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCi0gICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAwLCAwLCAxNzQsIDAsIDI5NSwgMjk1LCAyOTYsIDI5NywgMjk2LCAyOTUsIDI5NSwgCi0gICAgMjk4LCAyOTksIDI5NSwgMzAwLCAzMDEsIDMwMiwgMzAxLCAzMDEsIDMwMywgMzAzLCAzMDMsIDMwMywgMzAzLCAzMDMsIAotICAgIDMwMywgMzAzLCAzMDMsIDMwMywgMzAxLCAyOTUsIDMwNCwgMzA1LCAzMDQsIDI5NSwgMjk1LCAzMDYsIDMwNiwgMzA2LCAKLSAgICAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgCi0gICAgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMjk4LCAyOTUsIDI5OSwgMzA3LCAzMDgsIAotICAgIDMwNywgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAKLSAgICAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDI5OCwgCi0gICAgMzA1LCAyOTksIDMwNSwgMjk4LCAyOTksIDMxMCwgMzExLCAzMTIsIDMxMCwgMzEwLCAzMTMsIDMxMywgMzEzLCAzMTMsIAotICAgIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxNCwgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAKLSAgICAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgCi0gICAgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIAotICAgIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzE0LCAzMTQsIDMxMywgMzEzLCAKLSAgICAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgCi0gICAgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIAotICAgIDMxMywgMCwgMCwgMCwgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMCwgMCwgMzEzLCAzMTMsIDMxMywgMzEzLCAKLSAgICAzMTMsIDMxMywgMCwgMCwgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMCwgMCwgMzEzLCAzMTMsIDMxMywgMCwgMCwgCi0gICAgMCwgMjk3LCAyOTcsIDMwNSwgMzA3LCAzMTUsIDI5NywgMjk3LCAwLCAzMTYsIDMxNywgMzE3LCAzMTcsIDMxNywgMzE2LCAKLSAgICAzMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxOCwgMzE4LCAzMTgsIDI2LCAzMCwgMCwgMCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMCwgMCwgMTc0LCAwLCAyOTYsIDI5NiwgCisgICAgMjk3LCAyOTgsIDI5NywgMjk2LCAyOTYsIDI5OSwgMzAwLCAyOTYsIDMwMSwgMzAyLCAzMDMsIDMwMiwgMzAyLCAzMDQsIAorICAgIDMwNCwgMzA0LCAzMDQsIDMwNCwgMzA0LCAzMDQsIDMwNCwgMzA0LCAzMDQsIDMwMiwgMjk2LCAzMDUsIDMwNiwgMzA1LCAKKyAgICAyOTYsIDI5NiwgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgCisgICAgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIAorICAgIDI5OSwgMjk2LCAzMDAsIDMwOCwgMzA5LCAzMDgsIDMxMCwgMzEwLCAzMTAsIDMxMCwgMzEwLCAzMTAsIDMxMCwgMzEwLCAKKyAgICAzMTAsIDMxMCwgMzEwLCAzMTAsIDMxMCwgMzEwLCAzMTAsIDMxMCwgMzEwLCAzMTAsIDMxMCwgMzEwLCAzMTAsIDMxMCwgCisgICAgMzEwLCAzMTAsIDMxMCwgMzEwLCAyOTksIDMwNiwgMzAwLCAzMDYsIDI5OSwgMzAwLCAzMTEsIDMxMiwgMzEzLCAzMTEsIAorICAgIDMxMSwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTUsIDMxNCwgMzE0LCAKKyAgICAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgCisgICAgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIAorICAgIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAKKyAgICAzMTQsIDMxNSwgMzE1LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgCisgICAgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIAorICAgIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDAsIDAsIDAsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDAsIAorICAgIDAsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDAsIDAsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDAsIAorICAgIDAsIDMxNCwgMzE0LCAzMTQsIDAsIDAsIDAsIDI5OCwgMjk4LCAzMDYsIDMwOCwgMzE2LCAyOTgsIDI5OCwgMCwgMzE3LCAKKyAgICAzMTgsIDMxOCwgMzE4LCAzMTgsIDMxNywgMzE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTksIDMxOSwgCisgICAgMzE5LCAyNiwgMzAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDgzLCAxMzgsIDgzLCAwLCAwLCAwLCAwLCAxNDgsIDE0OCwgMTQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgODMsIDEzOCwgODMsIDAsIDAsIAorICAgIDAsIDAsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCiAgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAogICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKLSAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMCwgCi0gICAgMCwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgCi0gICAgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIAotICAgIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAKLSAgICAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgCi0gICAgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDE1MywgMTUzLCAxNTMsIDE1MywgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAxNTMsIDE1MywgMjYsIDAsIDAsIDAsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODYsIDMyMCwgMzIwLCAzMjAsIAorICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMCwgMCwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMzIwLCAKICAgICAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgCi0gICAgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNzMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTczLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDgxLCA4MSwgODEsIDgxLCA4MSwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgODMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgCisgICAgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIAorICAgIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMTUzLCAxNTMsIDE1MywgMTUzLCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDE1MywgMTUzLCAKKyAgICAyNiwgODAsIDgwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAKKyAgICAwLCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDg2LCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIAorICAgIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAwLCAKKyAgICAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNzMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMTczLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgxLCA4MSwgODEsIDgxLCA4MSwgMCwgMCwgMCwgMCwgMCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCisgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCisgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKICAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKLSAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKICAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCAKKyAgICAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMTA3LCAwLCAKKyAgICA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIAorICAgIDAsIDEwNywgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDEwNywgMTA3LCAwLCAwLCAwLCAxMDcsIDAsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAwLCAxMDcsIDEwNywgMCwgMCwgMCwgMTA3LCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMTA0LCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDAsIDEwNCwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAzMjMsIDMyMywgMzIyLCAzMjIsIDMyMiwgCisgICAgMzIyLCAzMjIsIDMyMiwgMzIyLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDMyMiwgMzIyLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgCi0gICAgMzIxLCAzMjEsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIAotICAgIDMyMSwgMzIxLCAzMjEsIDMyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjIsIDMyMiwgMzIyLCAKKyAgICAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDEwNywgMTA3LCAwLCAwLCAwLCAwLCAwLCAzMjEsIAotICAgIDMyMSwgMzIxLCAzMjEsIDMyMSwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAzMjEsIDMyMSwgCi0gICAgMzIxLCAzMjEsIDMyMSwgMzIxLCAwLCAwLCAwLCAxMzgsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDEwNywgMTA3LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIDAsIDAsIDEwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMCwgMCwgMCwgMTM4LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMCwgMCwgMTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAwLCAzMjEsIDMyMSwgMTA3LCAxMDcsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAKLSAgICAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMCwgMCwgMzIxLCAzMjEsIAotICAgIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAKLSAgICAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgCi0gICAgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIAotICAgIDMyMSwgMzIxLCAxMDcsIDEzNSwgMTM1LCAxMzUsIDAsIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAwLCAxMzUsIDg2LCAxMzUsIAotICAgIDgxLCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDEwNywgMTA3LCAxMDcsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIDAsIDMyMiwgMzIyLCAxMDcsIDEwNywgMzIyLCAzMjIsIDMyMiwgMzIyLCAKKyAgICAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAwLCAwLCAzMjIsIAorICAgIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAKKyAgICAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgCisgICAgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIAorICAgIDMyMiwgMzIyLCAzMjIsIDEwNywgMTM1LCAxMzUsIDEzNSwgMCwgMTM1LCAxMzUsIDAsIDAsIDAsIDAsIDAsIDEzNSwgODYsIAorICAgIDEzNSwgODEsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMTA3LCAxMDcsIDEwNywgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIDAsIDgxLCAxNzYsIDg2LCAwLCAwLCAwLCAKLSAgICAwLCAxNDIsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIDAsIDgxLCAxNzYsIDg2LCAwLCAKKyAgICAwLCAwLCAwLCAxNDIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDMyMSwgMzIxLCAxMDQsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDMyMiwgMzIyLCAxMDQsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMzIxLCAzMjEsIDMyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDMyMiwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAzMjIsIDMyMiwgMzIyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMzIzLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCA4MSwgODYsIDAsIDAsIDAsIDAsIDMyMSwgMzIxLCAzMjEsIDMyMSwgCi0gICAgMzIxLCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCA4MSwgODYsIDAsIDAsIDAsIDAsIDMyMiwgMzIyLCAzMjIsIAorICAgIDMyMiwgMzIyLCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAxMzgsIDEzOCwgCi0gICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgCi0gICAgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAKKyAgICAwLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDAsIDAsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAxMDQsIDEwNCwgMTA0LCAxMDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyMSwgCi0gICAgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjIsIAorICAgIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgCkBAIC0yNDgzLDIxICsyNDg5LDIxIEBACiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAKLSAgICAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgCi0gICAgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIAotICAgIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIAorICAgIDAsIDAsIDAsIDAsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIAogICAgIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAKICAgICAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgCi0gICAgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAKKyAgICAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAKICAgICAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgCi0gICAgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDAsIDEzOSwgMTM1LCAxMzksIAorICAgIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAKKyAgICAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIAorICAgIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAKKyAgICAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMCwgMTM5LCAxMzUsIDEzOSwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIApAQCAtMjUzMCwxNSArMjUzNiwxNSBAQAogICAgIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzksIAotICAgIDEzOSwgMTM1LCAxNzUsIDE0NSwgMTM1LCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMzksIDEzNSwgMTc1LCAxNDUsIDEzNSwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODMsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzNSwgMTM1LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM1LCAxMzUsIAogICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTQ1LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKICAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzOSwgMTM5LCAwLCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIApAQCAtMjU1MCw2ICsyNTU2LDEzIEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM5LCAxMzksIDE0MiwgMTM1LCAxMzUsIDEzOSwgMTQ1LCA0OCwgNDgsIDQ4LCA0OCwgODMsIDgzLCA4MywgODMsIAorICAgIDgzLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDgzLCAwLCA4MywgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgMTQ2LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxNDksIDE0NywgMTQ3LCAxNDYsIAogICAgIDE0NywgMTM1LCAxMzUsIDEzOSwgMTQyLCAxNDUsIDQ4LCA0OCwgODMsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtMjU2NiwyMzAgKzI1NzksMjY4IEBACiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzksIDEzNSwgCiAgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzksIDE0MiwgMTM1LCA4MywgODMsIAogICAgIDgzLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzksIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAotICAgIDE3NSwgMTQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMTM1LCAKLSAgICAxMzUsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE0MiwgMCwgCi0gICAgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDgsIDE0OCwgODMsIAotICAgIDgzLCA4MywgODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAotICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKLSAgICAxNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKLSAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCi0gICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAotICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKLSAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCi0gICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAotICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKLSAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCi0gICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDAsIDgzLCA4MywgODMsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzOSwgMTM1LCAxMzksIDEzOSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTc1LCAxNDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgODMsIDgzLCAwLCAwLCAwLCAKKyAgICA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTQyLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0OCwgMTQ4LCA4MywgODMsIDgzLCA4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMTc2LCAxNzYsIDE3NiwgMTc2LCAxNzYsIAotICAgIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODMsIDgzLCA4MywgODMsIDgzLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgNTMsIDUzLCA1MywgNTMsIDgzLCA4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCi0gICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAotICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKLSAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgCi0gICAgNTMsIDUzLCA1MywgNTMsIDUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAzMjcsIDQ4LCA4MywgODMsIDgzLCA4MywgCisgICAgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAwLCAwLCAwLCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMCwgCisgICAgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM1LCAxMzUsIDEzOSwgMTM1LCAxMzUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKKyAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCisgICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKKyAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCisgICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKKyAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMCwgODMsIDgzLCA4MywgODMsIDgzLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAKLSAgICAwLCA4MCwgMTM1LCAxNzYsIDgzLCAxNzQsIDE3NCwgMTc0LCAxNzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDgzLCAKKyAgICA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDAsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAKLSAgICAzMjcsIDMyNywgMTc2LCAxNzYsIDE3NiwgODAsIDgwLCA4MCwgMzI4LCAzMjcsIDMyNywgMzI3LCAzMjcsIDMyNywgMTc0LCAKLSAgICAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDg2LCA4NiwgODYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODAsIAotICAgIDgwLCA4MSwgODEsIDgxLCA4MSwgODEsIDg2LCA4NiwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODEsIDgxLCA4MSwgODEsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgODEsIDgxLCA4MSwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDE3NiwgMTc2LCAxNzYsIAorICAgIDE3NiwgMTc2LCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgzLCA4MywgODMsIDgzLCA4MywgODAsIAorICAgIDgwLCA4MCwgODAsIDUzLCA1MywgNTMsIDUzLCA4MywgODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMTQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCisgICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDUzLCA1MywgNTMsIDUzLCAKKyAgICA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAyNDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgCisgICAgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDgwLCAxMzUsIDE3NiwgODMsIDE3NCwgMTc0LCAxNzQsIAorICAgIDE3NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDAsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjksIDMyOSwgMTc2LCAxNzYsIDE3NiwgODAsIDgwLCA4MCwgCisgICAgMzMwLCAzMjksIDMyOSwgMzI5LCAzMjksIDMyOSwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDg2LCAKKyAgICA4NiwgODYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODAsIDgwLCA4MSwgODEsIDgxLCA4MSwgODEsIDg2LCA4NiwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODEsIDgxLCA4MSwgODEsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgODEsIDgxLCA4MSwgMjYsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAotICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCAwLCA0OSwgNDksIDAsIDAsIDQ5LCAwLCAKLSAgICAwLCA0OSwgNDksIDAsIDAsIDQ5LCA0OSwgNDksIDQ5LCAwLCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAwLCAzNSwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgMCwgNDksIDQ5LCA0OSwgNDksIDAsIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgNDksIDQ5LCAwLCA0OSwgNDksIDQ5LCA0OSwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCAwLCA0OSwgMCwgMCwgMCwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAogICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIAogICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAogICAgIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAogICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCiAgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDAsIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzMjksIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAyMjYsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzMjksIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAyMjYsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDAsIDQ5LCA0OSwgMCwgMCwgNDksIDAsIDAsIDQ5LCA0OSwgMCwgMCwgNDksIDQ5LCA0OSwgNDksIDAsIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDAsIDM1LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIAogICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgMzI5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMjI2LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzI5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMjI2LCAzNSwgMzUsIDM1LCAKKyAgICA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgMCwgNDksIDQ5LCA0OSwgNDksIDAsIAorICAgIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDAsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCAwLCA0OSwgNDksIDQ5LCA0OSwgMCwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCAwLCA0OSwgMCwgMCwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCiAgICAgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDMyOSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAogICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDIyNiwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDM1LCAwLCAwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAKLSAgICAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgCi0gICAgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIAotICAgIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAKLSAgICAzMzAsIDMzMCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAwLCAwLCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgMzMxLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMjI2LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzMxLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMjI2LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzMxLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMjI2LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzMxLCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMjI2LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzMxLCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMjI2LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgMzUsIDAsIDAsIAorICAgIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAKKyAgICAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgCisgICAgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIAorICAgIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKICAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCiAgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAogICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKLSAgICAxMzUsIDgwLCA4MCwgODAsIDgwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgODAsIDgwLCA4MCwgODAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCiAgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAogICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKLSAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDEzNSwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCAxMzUsIDgwLCA4MCwgODMsIDgzLCA4MywgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCi0gICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAxMzUsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMTM1LCA4MCwgODAsIDgzLCA4MywgODMsIDgzLCA4MywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDAsIDgxLCA4MSwgODEsIDgxLCAKKyAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgMCwgMCwgODEsIDgxLCA4MSwgODEsIAorICAgIDgxLCA4MSwgODEsIDAsIDgxLCA4MSwgMCwgODEsIDgxLCA4MSwgODEsIDgxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKQEAgLTI4MDMsMTEgKzI4NTQsMTggQEAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgCi0gICAgMCwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgODYsIDg2LCA4NiwgODYsIDg2LCA4NiwgCi0gICAgODYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCi0gICAgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAorICAgIDEwNywgMTA3LCAxMDcsIDAsIDAsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDg2LCA4NiwgCisgICAgODYsIDg2LCA4NiwgODYsIDg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjQsIAorICAgIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAKKyAgICAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgCisgICAgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIAorICAgIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAKKyAgICAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgODEsIDgxLCA4MSwgODEsIAorICAgIDgxLCA4MSwgMTQ1LCAwLCAwLCAwLCAwLCAwLCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAKKyAgICAxMzYsIDAsIDAsIDAsIDAsIDEwNCwgMTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIAorICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIDEzMSwgCiAgICAgMTMxLCAwLCAxMzEsIDAsIDAsIDEzMSwgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIDEzMSwgMCwgMTMxLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzEsIDAsIDAsIApAQCAtMjgyMSw3ICsyODc5LDcgQEAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzgsIDc4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCkBAIC0yODMyLDE3MyArMjg5MCwyMDggQEAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxNTMsIDE1MywgMCwgMCwgMCwgMjQxLCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMzMxLCAwLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAKLSAgICAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgCi0gICAgMzMyLCAzMzIsIDIyMiwgMjIyLCAwLCAwLCAwLCAwLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgCi0gICAgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIAotICAgIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMjQxLCAzMzIsIDMzMiwgMzMyLCAKLSAgICAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxNTMsIDE1MywgMCwgMCwgMCwgMjQyLCAyNDIsIDI0MiwgCisgICAgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIAorICAgIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMzMzLCAwLCAKKyAgICAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgCisgICAgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIAorICAgIDI0MiwgMjQyLCAyNDIsIDI0MiwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAKKyAgICAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgCisgICAgMzM0LCAzMzQsIDIyMiwgMjIyLCAwLCAwLCAwLCAwLCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgCisgICAgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIAorICAgIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAyNjcsIDMzNCwgMjQyLCAyNjcsIDI2NywgMjY3LCAKKyAgICAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgCisgICAgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjgsIAotICAgIDI2OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA1NCwgNTQsIAotICAgIDU0LCA1NCwgNTQsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDI2OSwgMjY5LCAyNjksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAwLCAwLCAwLCAwLCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjksIDI2OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjYsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjYsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyNiwgMjYsIDI2LCAyMzksIAorICAgIDI2LCAyNiwgMjYsIDIzOSwgMjM5LCAyMzksIDMzNSwgMzM1LCAzMzUsIDMzNSwgMzM1LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyNiwgMjM5LCAyNiwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyNiwgMjYsIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDI2LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyMzksIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDIzOSwgMjYsIDI2LCAyNiwgMjM5LCAyMzksIDIzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDIzOSwgMCwgMCwgMCwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDIzOSwgMjM5LCAyMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMCwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIzOSwgMCwgMCwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMCwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMCwgMCwgMCwgMCwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMjM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE3NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAKKyAgICAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgCisgICAgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIAorICAgIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAKKyAgICAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgCisgICAgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIAorICAgIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAKKyAgICAxNzQsIDE3NCwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKICAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCi0gICAgMjc0LCAyNzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE3NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAKLSAgICAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgCi0gICAgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIAotICAgIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAKLSAgICAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgCi0gICAgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIAotICAgIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAKLSAgICAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAKLSAgICAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgCi0gICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIAotICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAKLSAgICAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgCi0gICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIAotICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAKLSAgICAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgCi0gICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIAotICAgIDI3MywgMjczLCAyNzMsIDI3MywgMCwgMCwgCisgICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAorICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKKyAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCisgICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAorICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKKyAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCisgICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAorICAgIDI3NCwgMCwgMCwgCiB9OwogCiAvKiBkZWNvbXBvc2l0aW9uIGRhdGEgKi8KQEAgLTM5NzAsMTAyICs0MDYzLDEwMiBAQAogICAgIDI2NiwgMjg0MzYsIDI2NiwgMjUyMzcsIDI2NiwgMjU0MjksIDI2NiwgMTk5NjgsIDI2NiwgMTk5NzcsIDI2NiwgMzY5MzgsIAogICAgIDI2NiwgMjQwMzgsIDI2NiwgMjAwMTMsIDI2NiwgMjE0OTEsIDI2NiwgMjUzNTEsIDI2NiwgMzYyMDgsIDI2NiwgMjUxNzEsIAogICAgIDI2NiwgMzExMDUsIDI2NiwgMzEzNTQsIDI2NiwgMjE1MTIsIDI2NiwgMjgyODgsIDI2NiwgMjYzNzcsIDI2NiwgMjYzNzYsIAotICAgIDI2NiwgMzAwMDMsIDI2NiwgMjExMDYsIDI2NiwgMjE5NDIsIDc3MCwgMTIzMDgsIDI2NDEyLCAxMjMwOSwgNzcwLCAxMjMwOCwgCi0gICAgMTk5NzcsIDEyMzA5LCA3NzAsIDEyMzA4LCAyMDEwOCwgMTIzMDksIDc3MCwgMTIzMDgsIDIzNDMzLCAxMjMwOSwgNzcwLCAKLSAgICAxMjMwOCwgMjg4NTcsIDEyMzA5LCA3NzAsIDEyMzA4LCAyNTE3MSwgMTIzMDksIDc3MCwgMTIzMDgsIDMwNDIzLCAxMjMwOSwgCi0gICAgNzcwLCAxMjMwOCwgMjEyMTMsIDEyMzA5LCA3NzAsIDEyMzA4LCAyNTk0MywgMTIzMDksIDI2MywgMjQ0NzEsIDI2MywgCi0gICAgMjE0ODcsIDI1NiwgMjAwMjksIDI1NiwgMjAwMjQsIDI1NiwgMjAwMzMsIDI1NiwgMTMxMzYyLCAyNTYsIDIwMzIwLCAyNTYsIAotICAgIDIwMzk4LCAyNTYsIDIwNDExLCAyNTYsIDIwNDgyLCAyNTYsIDIwNjAyLCAyNTYsIDIwNjMzLCAyNTYsIDIwNzExLCAyNTYsIAotICAgIDIwNjg3LCAyNTYsIDEzNDcwLCAyNTYsIDEzMjY2NiwgMjU2LCAyMDgxMywgMjU2LCAyMDgyMCwgMjU2LCAyMDgzNiwgMjU2LCAKLSAgICAyMDg1NSwgMjU2LCAxMzIzODAsIDI1NiwgMTM0OTcsIDI1NiwgMjA4MzksIDI1NiwgMjA4NzcsIDI1NiwgMTMyNDI3LCAyNTYsIAotICAgIDIwODg3LCAyNTYsIDIwOTAwLCAyNTYsIDIwMTcyLCAyNTYsIDIwOTA4LCAyNTYsIDIwOTE3LCAyNTYsIDE2ODQxNSwgMjU2LCAKLSAgICAyMDk4MSwgMjU2LCAyMDk5NSwgMjU2LCAxMzUzNSwgMjU2LCAyMTA1MSwgMjU2LCAyMTA2MiwgMjU2LCAyMTEwNiwgMjU2LCAKLSAgICAyMTExMSwgMjU2LCAxMzU4OSwgMjU2LCAyMTE5MSwgMjU2LCAyMTE5MywgMjU2LCAyMTIyMCwgMjU2LCAyMTI0MiwgMjU2LCAKLSAgICAyMTI1MywgMjU2LCAyMTI1NCwgMjU2LCAyMTI3MSwgMjU2LCAyMTMyMSwgMjU2LCAyMTMyOSwgMjU2LCAyMTMzOCwgMjU2LCAKLSAgICAyMTM2MywgMjU2LCAyMTM3MywgMjU2LCAyMTM3NSwgMjU2LCAyMTM3NSwgMjU2LCAyMTM3NSwgMjU2LCAxMzM2NzYsIDI1NiwgCi0gICAgMjg3ODQsIDI1NiwgMjE0NTAsIDI1NiwgMjE0NzEsIDI1NiwgMTMzOTg3LCAyNTYsIDIxNDgzLCAyNTYsIDIxNDg5LCAyNTYsIAotICAgIDIxNTEwLCAyNTYsIDIxNjYyLCAyNTYsIDIxNTYwLCAyNTYsIDIxNTc2LCAyNTYsIDIxNjA4LCAyNTYsIDIxNjY2LCAyNTYsIAotICAgIDIxNzUwLCAyNTYsIDIxNzc2LCAyNTYsIDIxODQzLCAyNTYsIDIxODU5LCAyNTYsIDIxODkyLCAyNTYsIDIxODkyLCAyNTYsIAotICAgIDIxOTEzLCAyNTYsIDIxOTMxLCAyNTYsIDIxOTM5LCAyNTYsIDIxOTU0LCAyNTYsIDIyMjk0LCAyNTYsIDIyMDIyLCAyNTYsIAotICAgIDIyMjk1LCAyNTYsIDIyMDk3LCAyNTYsIDIyMTMyLCAyNTYsIDIwOTk5LCAyNTYsIDIyNzY2LCAyNTYsIDIyNDc4LCAyNTYsIAotICAgIDIyNTE2LCAyNTYsIDIyNTQxLCAyNTYsIDIyNDExLCAyNTYsIDIyNTc4LCAyNTYsIDIyNTc3LCAyNTYsIDIyNzAwLCAyNTYsIAotICAgIDEzNjQyMCwgMjU2LCAyMjc3MCwgMjU2LCAyMjc3NSwgMjU2LCAyMjc5MCwgMjU2LCAyMjgxMCwgMjU2LCAyMjgxOCwgMjU2LCAKLSAgICAyMjg4MiwgMjU2LCAxMzY4NzIsIDI1NiwgMTM2OTM4LCAyNTYsIDIzMDIwLCAyNTYsIDIzMDY3LCAyNTYsIDIzMDc5LCAyNTYsIAotICAgIDIzMDAwLCAyNTYsIDIzMTQyLCAyNTYsIDE0MDYyLCAyNTYsIDE0MDc2LCAyNTYsIDIzMzA0LCAyNTYsIDIzMzU4LCAyNTYsIAotICAgIDIzMzU4LCAyNTYsIDEzNzY3MiwgMjU2LCAyMzQ5MSwgMjU2LCAyMzUxMiwgMjU2LCAyMzUyNywgMjU2LCAyMzUzOSwgMjU2LCAKLSAgICAxMzgwMDgsIDI1NiwgMjM1NTEsIDI1NiwgMjM1NTgsIDI1NiwgMjQ0MDMsIDI1NiwgMjM1ODYsIDI1NiwgMTQyMDksIDI1NiwgCi0gICAgMjM2NDgsIDI1NiwgMjM2NjIsIDI1NiwgMjM3NDQsIDI1NiwgMjM2OTMsIDI1NiwgMTM4NzI0LCAyNTYsIDIzODc1LCAyNTYsIAotICAgIDEzODcyNiwgMjU2LCAyMzkxOCwgMjU2LCAyMzkxNSwgMjU2LCAyMzkzMiwgMjU2LCAyNDAzMywgMjU2LCAyNDAzNCwgMjU2LCAKLSAgICAxNDM4MywgMjU2LCAyNDA2MSwgMjU2LCAyNDEwNCwgMjU2LCAyNDEyNSwgMjU2LCAyNDE2OSwgMjU2LCAxNDQzNCwgMjU2LCAKLSAgICAxMzk2NTEsIDI1NiwgMTQ0NjAsIDI1NiwgMjQyNDAsIDI1NiwgMjQyNDMsIDI1NiwgMjQyNDYsIDI1NiwgMjQyNjYsIDI1NiwgCi0gICAgMTcyOTQ2LCAyNTYsIDI0MzE4LCAyNTYsIDE0MDA4MSwgMjU2LCAxNDAwODEsIDI1NiwgMzMyODEsIDI1NiwgMjQzNTQsIAotICAgIDI1NiwgMjQzNTQsIDI1NiwgMTQ1MzUsIDI1NiwgMTQ0MDU2LCAyNTYsIDE1NjEyMiwgMjU2LCAyNDQxOCwgMjU2LCAyNDQyNywgCi0gICAgMjU2LCAxNDU2MywgMjU2LCAyNDQ3NCwgMjU2LCAyNDUyNSwgMjU2LCAyNDUzNSwgMjU2LCAyNDU2OSwgMjU2LCAyNDcwNSwgCi0gICAgMjU2LCAxNDY1MCwgMjU2LCAxNDYyMCwgMjU2LCAyNDcyNCwgMjU2LCAxNDEwMTIsIDI1NiwgMjQ3NzUsIDI1NiwgMjQ5MDQsIAotICAgIDI1NiwgMjQ5MDgsIDI1NiwgMjQ5MTAsIDI1NiwgMjQ5MDgsIDI1NiwgMjQ5NTQsIDI1NiwgMjQ5NzQsIDI1NiwgMjUwMTAsIAotICAgIDI1NiwgMjQ5OTYsIDI1NiwgMjUwMDcsIDI1NiwgMjUwNTQsIDI1NiwgMjUwNzQsIDI1NiwgMjUwNzgsIDI1NiwgMjUxMDQsIAotICAgIDI1NiwgMjUxMTUsIDI1NiwgMjUxODEsIDI1NiwgMjUyNjUsIDI1NiwgMjUzMDAsIDI1NiwgMjU0MjQsIDI1NiwgMTQyMDkyLCAKLSAgICAyNTYsIDI1NDA1LCAyNTYsIDI1MzQwLCAyNTYsIDI1NDQ4LCAyNTYsIDI1NDc1LCAyNTYsIDI1NTcyLCAyNTYsIDE0MjMyMSwgCi0gICAgMjU2LCAyNTYzNCwgMjU2LCAyNTU0MSwgMjU2LCAyNTUxMywgMjU2LCAxNDg5NCwgMjU2LCAyNTcwNSwgMjU2LCAyNTcyNiwgCi0gICAgMjU2LCAyNTc1NywgMjU2LCAyNTcxOSwgMjU2LCAxNDk1NiwgMjU2LCAyNTkzNSwgMjU2LCAyNTk2NCwgMjU2LCAxNDMzNzAsIAotICAgIDI1NiwgMjYwODMsIDI1NiwgMjYzNjAsIDI1NiwgMjYxODUsIDI1NiwgMTUxMjksIDI1NiwgMjYyNTcsIDI1NiwgMTUxMTIsIAotICAgIDI1NiwgMTUwNzYsIDI1NiwgMjA4ODIsIDI1NiwgMjA4ODUsIDI1NiwgMjYzNjgsIDI1NiwgMjYyNjgsIDI1NiwgMzI5NDEsIAotICAgIDI1NiwgMTczNjksIDI1NiwgMjYzOTEsIDI1NiwgMjYzOTUsIDI1NiwgMjY0MDEsIDI1NiwgMjY0NjIsIDI1NiwgMjY0NTEsIAotICAgIDI1NiwgMTQ0MzIzLCAyNTYsIDE1MTc3LCAyNTYsIDI2NjE4LCAyNTYsIDI2NTAxLCAyNTYsIDI2NzA2LCAyNTYsIDI2NzU3LCAKLSAgICAyNTYsIDE0NDQ5MywgMjU2LCAyNjc2NiwgMjU2LCAyNjY1NSwgMjU2LCAyNjkwMCwgMjU2LCAxNTI2MSwgMjU2LCAyNjk0NiwgCi0gICAgMjU2LCAyNzA0MywgMjU2LCAyNzExNCwgMjU2LCAyNzMwNCwgMjU2LCAxNDUwNTksIDI1NiwgMjczNTUsIDI1NiwgMTUzODQsIAotICAgIDI1NiwgMjc0MjUsIDI1NiwgMTQ1NTc1LCAyNTYsIDI3NDc2LCAyNTYsIDE1NDM4LCAyNTYsIDI3NTA2LCAyNTYsIDI3NTUxLCAKLSAgICAyNTYsIDI3NTc4LCAyNTYsIDI3NTc5LCAyNTYsIDE0NjA2MSwgMjU2LCAxMzg1MDcsIDI1NiwgMTQ2MTcwLCAyNTYsIAotICAgIDI3NzI2LCAyNTYsIDE0NjYyMCwgMjU2LCAyNzgzOSwgMjU2LCAyNzg1MywgMjU2LCAyNzc1MSwgMjU2LCAyNzkyNiwgMjU2LCAKLSAgICAyNzk2NiwgMjU2LCAyODAyMywgMjU2LCAyNzk2OSwgMjU2LCAyODAwOSwgMjU2LCAyODAyNCwgMjU2LCAyODAzNywgMjU2LCAKLSAgICAxNDY3MTgsIDI1NiwgMjc5NTYsIDI1NiwgMjgyMDcsIDI1NiwgMjgyNzAsIDI1NiwgMTU2NjcsIDI1NiwgMjgzNjMsIDI1NiwgCi0gICAgMjgzNTksIDI1NiwgMTQ3MTUzLCAyNTYsIDI4MTUzLCAyNTYsIDI4NTI2LCAyNTYsIDE0NzI5NCwgMjU2LCAxNDczNDIsIAotICAgIDI1NiwgMjg2MTQsIDI1NiwgMjg3MjksIDI1NiwgMjg3MDIsIDI1NiwgMjg2OTksIDI1NiwgMTU3NjYsIDI1NiwgMjg3NDYsIAotICAgIDI1NiwgMjg3OTcsIDI1NiwgMjg3OTEsIDI1NiwgMjg4NDUsIDI1NiwgMTMyMzg5LCAyNTYsIDI4OTk3LCAyNTYsIDE0ODA2NywgCi0gICAgMjU2LCAyOTA4NCwgMjU2LCAxNDgzOTUsIDI1NiwgMjkyMjQsIDI1NiwgMjkyMzcsIDI1NiwgMjkyNjQsIDI1NiwgMTQ5MDAwLCAKLSAgICAyNTYsIDI5MzEyLCAyNTYsIDI5MzMzLCAyNTYsIDE0OTMwMSwgMjU2LCAxNDk1MjQsIDI1NiwgMjk1NjIsIDI1NiwgMjk1NzksIAotICAgIDI1NiwgMTYwNDQsIDI1NiwgMjk2MDUsIDI1NiwgMTYwNTYsIDI1NiwgMTYwNTYsIDI1NiwgMjk3NjcsIDI1NiwgMjk3ODgsIAotICAgIDI1NiwgMjk4MDksIDI1NiwgMjk4MjksIDI1NiwgMjk4OTgsIDI1NiwgMTYxNTUsIDI1NiwgMjk5ODgsIDI1NiwgMTUwNTgyLCAKLSAgICAyNTYsIDMwMDE0LCAyNTYsIDE1MDY3NCwgMjU2LCAzMDA2NCwgMjU2LCAxMzk2NzksIDI1NiwgMzAyMjQsIDI1NiwgCi0gICAgMTUxNDU3LCAyNTYsIDE1MTQ4MCwgMjU2LCAxNTE2MjAsIDI1NiwgMTYzODAsIDI1NiwgMTYzOTIsIDI1NiwgMzA0NTIsIAotICAgIDI1NiwgMTUxNzk1LCAyNTYsIDE1MTc5NCwgMjU2LCAxNTE4MzMsIDI1NiwgMTUxODU5LCAyNTYsIDMwNDk0LCAyNTYsIAotICAgIDMwNDk1LCAyNTYsIDMwNDk1LCAyNTYsIDMwNTM4LCAyNTYsIDE2NDQxLCAyNTYsIDMwNjAzLCAyNTYsIDE2NDU0LCAyNTYsIAotICAgIDE2NTM0LCAyNTYsIDE1MjYwNSwgMjU2LCAzMDc5OCwgMjU2LCAzMDg2MCwgMjU2LCAzMDkyNCwgMjU2LCAxNjYxMSwgMjU2LCAKLSAgICAxNTMxMjYsIDI1NiwgMzEwNjIsIDI1NiwgMTUzMjQyLCAyNTYsIDE1MzI4NSwgMjU2LCAzMTExOSwgMjU2LCAzMTIxMSwgCi0gICAgMjU2LCAxNjY4NywgMjU2LCAzMTI5NiwgMjU2LCAzMTMwNiwgMjU2LCAzMTMxMSwgMjU2LCAxNTM5ODAsIDI1NiwgMTU0Mjc5LCAKLSAgICAyNTYsIDE1NDI3OSwgMjU2LCAzMTQ3MCwgMjU2LCAxNjg5OCwgMjU2LCAxNTQ1MzksIDI1NiwgMzE2ODYsIDI1NiwgMzE2ODksIAotICAgIDI1NiwgMTY5MzUsIDI1NiwgMTU0NzUyLCAyNTYsIDMxOTU0LCAyNTYsIDE3MDU2LCAyNTYsIDMxOTc2LCAyNTYsIDMxOTcxLCAKLSAgICAyNTYsIDMyMDAwLCAyNTYsIDE1NTUyNiwgMjU2LCAzMjA5OSwgMjU2LCAxNzE1MywgMjU2LCAzMjE5OSwgMjU2LCAzMjI1OCwgCi0gICAgMjU2LCAzMjMyNSwgMjU2LCAxNzIwNCwgMjU2LCAxNTYyMDAsIDI1NiwgMTU2MjMxLCAyNTYsIDE3MjQxLCAyNTYsIAotICAgIDE1NjM3NywgMjU2LCAzMjYzNCwgMjU2LCAxNTY0NzgsIDI1NiwgMzI2NjEsIDI1NiwgMzI3NjIsIDI1NiwgMzI3NzMsIDI1NiwgCi0gICAgMTU2ODkwLCAyNTYsIDE1Njk2MywgMjU2LCAzMjg2NCwgMjU2LCAxNTcwOTYsIDI1NiwgMzI4ODAsIDI1NiwgMTQ0MjIzLCAKLSAgICAyNTYsIDE3MzY1LCAyNTYsIDMyOTQ2LCAyNTYsIDMzMDI3LCAyNTYsIDE3NDE5LCAyNTYsIDMzMDg2LCAyNTYsIDIzMjIxLCAKLSAgICAyNTYsIDE1NzYwNywgMjU2LCAxNTc2MjEsIDI1NiwgMTQ0Mjc1LCAyNTYsIDE0NDI4NCwgMjU2LCAzMzI4MSwgMjU2LCAKLSAgICAzMzI4NCwgMjU2LCAzNjc2NiwgMjU2LCAxNzUxNSwgMjU2LCAzMzQyNSwgMjU2LCAzMzQxOSwgMjU2LCAzMzQzNywgMjU2LCAKLSAgICAyMTE3MSwgMjU2LCAzMzQ1NywgMjU2LCAzMzQ1OSwgMjU2LCAzMzQ2OSwgMjU2LCAzMzUxMCwgMjU2LCAxNTg1MjQsIDI1NiwgCi0gICAgMzM1MDksIDI1NiwgMzM1NjUsIDI1NiwgMzM2MzUsIDI1NiwgMzM3MDksIDI1NiwgMzM1NzEsIDI1NiwgMzM3MjUsIDI1NiwgCi0gICAgMzM3NjcsIDI1NiwgMzM4NzksIDI1NiwgMzM2MTksIDI1NiwgMzM3MzgsIDI1NiwgMzM3NDAsIDI1NiwgMzM3NTYsIDI1NiwgCi0gICAgMTU4Nzc0LCAyNTYsIDE1OTA4MywgMjU2LCAxNTg5MzMsIDI1NiwgMTc3MDcsIDI1NiwgMzQwMzMsIDI1NiwgMzQwMzUsIAotICAgIDI1NiwgMzQwNzAsIDI1NiwgMTYwNzE0LCAyNTYsIDM0MTQ4LCAyNTYsIDE1OTUzMiwgMjU2LCAxNzc1NywgMjU2LCAxNzc2MSwgCi0gICAgMjU2LCAxNTk2NjUsIDI1NiwgMTU5OTU0LCAyNTYsIDE3NzcxLCAyNTYsIDM0Mzg0LCAyNTYsIDM0Mzk2LCAyNTYsIDM0NDA3LCAKLSAgICAyNTYsIDM0NDA5LCAyNTYsIDM0NDczLCAyNTYsIDM0NDQwLCAyNTYsIDM0NTc0LCAyNTYsIDM0NTMwLCAyNTYsIDM0NjgxLCAKLSAgICAyNTYsIDM0NjAwLCAyNTYsIDM0NjY3LCAyNTYsIDM0Njk0LCAyNTYsIDE3ODc5LCAyNTYsIDM0Nzg1LCAyNTYsIDM0ODE3LCAKLSAgICAyNTYsIDE3OTEzLCAyNTYsIDM0OTEyLCAyNTYsIDM0OTE1LCAyNTYsIDE2MTM4MywgMjU2LCAzNTAzMSwgMjU2LCAzNTAzOCwgCi0gICAgMjU2LCAxNzk3MywgMjU2LCAzNTA2NiwgMjU2LCAxMzQ5OSwgMjU2LCAxNjE5NjYsIDI1NiwgMTYyMTUwLCAyNTYsIDE4MTEwLCAKLSAgICAyNTYsIDE4MTE5LCAyNTYsIDM1NDg4LCAyNTYsIDM1NTY1LCAyNTYsIDM1NzIyLCAyNTYsIDM1OTI1LCAyNTYsIDE2Mjk4NCwgCi0gICAgMjU2LCAzNjAxMSwgMjU2LCAzNjAzMywgMjU2LCAzNjEyMywgMjU2LCAzNjIxNSwgMjU2LCAxNjM2MzEsIDI1NiwgMTMzMTI0LCAKLSAgICAyNTYsIDM2Mjk5LCAyNTYsIDM2Mjg0LCAyNTYsIDM2MzM2LCAyNTYsIDEzMzM0MiwgMjU2LCAzNjU2NCwgMjU2LCAzNjY2NCwgCi0gICAgMjU2LCAxNjUzMzAsIDI1NiwgMTY1MzU3LCAyNTYsIDM3MDEyLCAyNTYsIDM3MTA1LCAyNTYsIDM3MTM3LCAyNTYsIAotICAgIDE2NTY3OCwgMjU2LCAzNzE0NywgMjU2LCAzNzQzMiwgMjU2LCAzNzU5MSwgMjU2LCAzNzU5MiwgMjU2LCAzNzUwMCwgMjU2LCAKLSAgICAzNzg4MSwgMjU2LCAzNzkwOSwgMjU2LCAxNjY5MDYsIDI1NiwgMzgyODMsIDI1NiwgMTg4MzcsIDI1NiwgMzgzMjcsIDI1NiwgCi0gICAgMTY3Mjg3LCAyNTYsIDE4OTE4LCAyNTYsIDM4NTk1LCAyNTYsIDIzOTg2LCAyNTYsIDM4NjkxLCAyNTYsIDE2ODI2MSwgMjU2LCAKLSAgICAxNjg0NzQsIDI1NiwgMTkwNTQsIDI1NiwgMTkwNjIsIDI1NiwgMzg4ODAsIDI1NiwgMTY4OTcwLCAyNTYsIDE5MTIyLCAyNTYsIAotICAgIDE2OTExMCwgMjU2LCAzODkyMywgMjU2LCAzODkyMywgMjU2LCAzODk1MywgMjU2LCAxNjkzOTgsIDI1NiwgMzkxMzgsIDI1NiwgCi0gICAgMTkyNTEsIDI1NiwgMzkyMDksIDI1NiwgMzkzMzUsIDI1NiwgMzkzNjIsIDI1NiwgMzk0MjIsIDI1NiwgMTk0MDYsIDI1NiwgCi0gICAgMTcwODAwLCAyNTYsIDM5Njk4LCAyNTYsIDQwMDAwLCAyNTYsIDQwMTg5LCAyNTYsIDE5NjYyLCAyNTYsIDE5NjkzLCAyNTYsIAotICAgIDQwMjk1LCAyNTYsIDE3MjIzOCwgMjU2LCAxOTcwNCwgMjU2LCAxNzIyOTMsIDI1NiwgMTcyNTU4LCAyNTYsIDE3MjY4OSwgCi0gICAgMjU2LCA0MDYzNSwgMjU2LCAxOTc5OCwgMjU2LCA0MDY5NywgMjU2LCA0MDcwMiwgMjU2LCA0MDcwOSwgMjU2LCA0MDcxOSwgCi0gICAgMjU2LCA0MDcyNiwgMjU2LCA0MDc2MywgMjU2LCAxNzM1NjgsIAorICAgIDI2NiwgMzAwMDMsIDI2NiwgMjExMDYsIDI2NiwgMjE5NDIsIDI2NiwgMzcxOTcsIDc3MCwgMTIzMDgsIDI2NDEyLCAxMjMwOSwgCisgICAgNzcwLCAxMjMwOCwgMTk5NzcsIDEyMzA5LCA3NzAsIDEyMzA4LCAyMDEwOCwgMTIzMDksIDc3MCwgMTIzMDgsIDIzNDMzLCAKKyAgICAxMjMwOSwgNzcwLCAxMjMwOCwgMjg4NTcsIDEyMzA5LCA3NzAsIDEyMzA4LCAyNTE3MSwgMTIzMDksIDc3MCwgMTIzMDgsIAorICAgIDMwNDIzLCAxMjMwOSwgNzcwLCAxMjMwOCwgMjEyMTMsIDEyMzA5LCA3NzAsIDEyMzA4LCAyNTk0MywgMTIzMDksIDI2MywgCisgICAgMjQ0NzEsIDI2MywgMjE0ODcsIDI1NiwgMjAwMjksIDI1NiwgMjAwMjQsIDI1NiwgMjAwMzMsIDI1NiwgMTMxMzYyLCAyNTYsIAorICAgIDIwMzIwLCAyNTYsIDIwMzk4LCAyNTYsIDIwNDExLCAyNTYsIDIwNDgyLCAyNTYsIDIwNjAyLCAyNTYsIDIwNjMzLCAyNTYsIAorICAgIDIwNzExLCAyNTYsIDIwNjg3LCAyNTYsIDEzNDcwLCAyNTYsIDEzMjY2NiwgMjU2LCAyMDgxMywgMjU2LCAyMDgyMCwgMjU2LCAKKyAgICAyMDgzNiwgMjU2LCAyMDg1NSwgMjU2LCAxMzIzODAsIDI1NiwgMTM0OTcsIDI1NiwgMjA4MzksIDI1NiwgMjA4NzcsIDI1NiwgCisgICAgMTMyNDI3LCAyNTYsIDIwODg3LCAyNTYsIDIwOTAwLCAyNTYsIDIwMTcyLCAyNTYsIDIwOTA4LCAyNTYsIDIwOTE3LCAyNTYsIAorICAgIDE2ODQxNSwgMjU2LCAyMDk4MSwgMjU2LCAyMDk5NSwgMjU2LCAxMzUzNSwgMjU2LCAyMTA1MSwgMjU2LCAyMTA2MiwgMjU2LCAKKyAgICAyMTEwNiwgMjU2LCAyMTExMSwgMjU2LCAxMzU4OSwgMjU2LCAyMTE5MSwgMjU2LCAyMTE5MywgMjU2LCAyMTIyMCwgMjU2LCAKKyAgICAyMTI0MiwgMjU2LCAyMTI1MywgMjU2LCAyMTI1NCwgMjU2LCAyMTI3MSwgMjU2LCAyMTMyMSwgMjU2LCAyMTMyOSwgMjU2LCAKKyAgICAyMTMzOCwgMjU2LCAyMTM2MywgMjU2LCAyMTM3MywgMjU2LCAyMTM3NSwgMjU2LCAyMTM3NSwgMjU2LCAyMTM3NSwgMjU2LCAKKyAgICAxMzM2NzYsIDI1NiwgMjg3ODQsIDI1NiwgMjE0NTAsIDI1NiwgMjE0NzEsIDI1NiwgMTMzOTg3LCAyNTYsIDIxNDgzLCAyNTYsIAorICAgIDIxNDg5LCAyNTYsIDIxNTEwLCAyNTYsIDIxNjYyLCAyNTYsIDIxNTYwLCAyNTYsIDIxNTc2LCAyNTYsIDIxNjA4LCAyNTYsIAorICAgIDIxNjY2LCAyNTYsIDIxNzUwLCAyNTYsIDIxNzc2LCAyNTYsIDIxODQzLCAyNTYsIDIxODU5LCAyNTYsIDIxODkyLCAyNTYsIAorICAgIDIxODkyLCAyNTYsIDIxOTEzLCAyNTYsIDIxOTMxLCAyNTYsIDIxOTM5LCAyNTYsIDIxOTU0LCAyNTYsIDIyMjk0LCAyNTYsIAorICAgIDIyMDIyLCAyNTYsIDIyMjk1LCAyNTYsIDIyMDk3LCAyNTYsIDIyMTMyLCAyNTYsIDIwOTk5LCAyNTYsIDIyNzY2LCAyNTYsIAorICAgIDIyNDc4LCAyNTYsIDIyNTE2LCAyNTYsIDIyNTQxLCAyNTYsIDIyNDExLCAyNTYsIDIyNTc4LCAyNTYsIDIyNTc3LCAyNTYsIAorICAgIDIyNzAwLCAyNTYsIDEzNjQyMCwgMjU2LCAyMjc3MCwgMjU2LCAyMjc3NSwgMjU2LCAyMjc5MCwgMjU2LCAyMjgxMCwgMjU2LCAKKyAgICAyMjgxOCwgMjU2LCAyMjg4MiwgMjU2LCAxMzY4NzIsIDI1NiwgMTM2OTM4LCAyNTYsIDIzMDIwLCAyNTYsIDIzMDY3LCAyNTYsIAorICAgIDIzMDc5LCAyNTYsIDIzMDAwLCAyNTYsIDIzMTQyLCAyNTYsIDE0MDYyLCAyNTYsIDE0MDc2LCAyNTYsIDIzMzA0LCAyNTYsIAorICAgIDIzMzU4LCAyNTYsIDIzMzU4LCAyNTYsIDEzNzY3MiwgMjU2LCAyMzQ5MSwgMjU2LCAyMzUxMiwgMjU2LCAyMzUyNywgMjU2LCAKKyAgICAyMzUzOSwgMjU2LCAxMzgwMDgsIDI1NiwgMjM1NTEsIDI1NiwgMjM1NTgsIDI1NiwgMjQ0MDMsIDI1NiwgMjM1ODYsIDI1NiwgCisgICAgMTQyMDksIDI1NiwgMjM2NDgsIDI1NiwgMjM2NjIsIDI1NiwgMjM3NDQsIDI1NiwgMjM2OTMsIDI1NiwgMTM4NzI0LCAyNTYsIAorICAgIDIzODc1LCAyNTYsIDEzODcyNiwgMjU2LCAyMzkxOCwgMjU2LCAyMzkxNSwgMjU2LCAyMzkzMiwgMjU2LCAyNDAzMywgMjU2LCAKKyAgICAyNDAzNCwgMjU2LCAxNDM4MywgMjU2LCAyNDA2MSwgMjU2LCAyNDEwNCwgMjU2LCAyNDEyNSwgMjU2LCAyNDE2OSwgMjU2LCAKKyAgICAxNDQzNCwgMjU2LCAxMzk2NTEsIDI1NiwgMTQ0NjAsIDI1NiwgMjQyNDAsIDI1NiwgMjQyNDMsIDI1NiwgMjQyNDYsIDI1NiwgCisgICAgMjQyNjYsIDI1NiwgMTcyOTQ2LCAyNTYsIDI0MzE4LCAyNTYsIDE0MDA4MSwgMjU2LCAxNDAwODEsIDI1NiwgMzMyODEsIAorICAgIDI1NiwgMjQzNTQsIDI1NiwgMjQzNTQsIDI1NiwgMTQ1MzUsIDI1NiwgMTQ0MDU2LCAyNTYsIDE1NjEyMiwgMjU2LCAyNDQxOCwgCisgICAgMjU2LCAyNDQyNywgMjU2LCAxNDU2MywgMjU2LCAyNDQ3NCwgMjU2LCAyNDUyNSwgMjU2LCAyNDUzNSwgMjU2LCAyNDU2OSwgCisgICAgMjU2LCAyNDcwNSwgMjU2LCAxNDY1MCwgMjU2LCAxNDYyMCwgMjU2LCAyNDcyNCwgMjU2LCAxNDEwMTIsIDI1NiwgMjQ3NzUsIAorICAgIDI1NiwgMjQ5MDQsIDI1NiwgMjQ5MDgsIDI1NiwgMjQ5MTAsIDI1NiwgMjQ5MDgsIDI1NiwgMjQ5NTQsIDI1NiwgMjQ5NzQsIAorICAgIDI1NiwgMjUwMTAsIDI1NiwgMjQ5OTYsIDI1NiwgMjUwMDcsIDI1NiwgMjUwNTQsIDI1NiwgMjUwNzQsIDI1NiwgMjUwNzgsIAorICAgIDI1NiwgMjUxMDQsIDI1NiwgMjUxMTUsIDI1NiwgMjUxODEsIDI1NiwgMjUyNjUsIDI1NiwgMjUzMDAsIDI1NiwgMjU0MjQsIAorICAgIDI1NiwgMTQyMDkyLCAyNTYsIDI1NDA1LCAyNTYsIDI1MzQwLCAyNTYsIDI1NDQ4LCAyNTYsIDI1NDc1LCAyNTYsIDI1NTcyLCAKKyAgICAyNTYsIDE0MjMyMSwgMjU2LCAyNTYzNCwgMjU2LCAyNTU0MSwgMjU2LCAyNTUxMywgMjU2LCAxNDg5NCwgMjU2LCAyNTcwNSwgCisgICAgMjU2LCAyNTcyNiwgMjU2LCAyNTc1NywgMjU2LCAyNTcxOSwgMjU2LCAxNDk1NiwgMjU2LCAyNTkzNSwgMjU2LCAyNTk2NCwgCisgICAgMjU2LCAxNDMzNzAsIDI1NiwgMjYwODMsIDI1NiwgMjYzNjAsIDI1NiwgMjYxODUsIDI1NiwgMTUxMjksIDI1NiwgMjYyNTcsIAorICAgIDI1NiwgMTUxMTIsIDI1NiwgMTUwNzYsIDI1NiwgMjA4ODIsIDI1NiwgMjA4ODUsIDI1NiwgMjYzNjgsIDI1NiwgMjYyNjgsIAorICAgIDI1NiwgMzI5NDEsIDI1NiwgMTczNjksIDI1NiwgMjYzOTEsIDI1NiwgMjYzOTUsIDI1NiwgMjY0MDEsIDI1NiwgMjY0NjIsIAorICAgIDI1NiwgMjY0NTEsIDI1NiwgMTQ0MzIzLCAyNTYsIDE1MTc3LCAyNTYsIDI2NjE4LCAyNTYsIDI2NTAxLCAyNTYsIDI2NzA2LCAKKyAgICAyNTYsIDI2NzU3LCAyNTYsIDE0NDQ5MywgMjU2LCAyNjc2NiwgMjU2LCAyNjY1NSwgMjU2LCAyNjkwMCwgMjU2LCAxNTI2MSwgCisgICAgMjU2LCAyNjk0NiwgMjU2LCAyNzA0MywgMjU2LCAyNzExNCwgMjU2LCAyNzMwNCwgMjU2LCAxNDUwNTksIDI1NiwgMjczNTUsIAorICAgIDI1NiwgMTUzODQsIDI1NiwgMjc0MjUsIDI1NiwgMTQ1NTc1LCAyNTYsIDI3NDc2LCAyNTYsIDE1NDM4LCAyNTYsIDI3NTA2LCAKKyAgICAyNTYsIDI3NTUxLCAyNTYsIDI3NTc4LCAyNTYsIDI3NTc5LCAyNTYsIDE0NjA2MSwgMjU2LCAxMzg1MDcsIDI1NiwgCisgICAgMTQ2MTcwLCAyNTYsIDI3NzI2LCAyNTYsIDE0NjYyMCwgMjU2LCAyNzgzOSwgMjU2LCAyNzg1MywgMjU2LCAyNzc1MSwgMjU2LCAKKyAgICAyNzkyNiwgMjU2LCAyNzk2NiwgMjU2LCAyODAyMywgMjU2LCAyNzk2OSwgMjU2LCAyODAwOSwgMjU2LCAyODAyNCwgMjU2LCAKKyAgICAyODAzNywgMjU2LCAxNDY3MTgsIDI1NiwgMjc5NTYsIDI1NiwgMjgyMDcsIDI1NiwgMjgyNzAsIDI1NiwgMTU2NjcsIDI1NiwgCisgICAgMjgzNjMsIDI1NiwgMjgzNTksIDI1NiwgMTQ3MTUzLCAyNTYsIDI4MTUzLCAyNTYsIDI4NTI2LCAyNTYsIDE0NzI5NCwgMjU2LCAKKyAgICAxNDczNDIsIDI1NiwgMjg2MTQsIDI1NiwgMjg3MjksIDI1NiwgMjg3MDIsIDI1NiwgMjg2OTksIDI1NiwgMTU3NjYsIDI1NiwgCisgICAgMjg3NDYsIDI1NiwgMjg3OTcsIDI1NiwgMjg3OTEsIDI1NiwgMjg4NDUsIDI1NiwgMTMyMzg5LCAyNTYsIDI4OTk3LCAyNTYsIAorICAgIDE0ODA2NywgMjU2LCAyOTA4NCwgMjU2LCAxNDgzOTUsIDI1NiwgMjkyMjQsIDI1NiwgMjkyMzcsIDI1NiwgMjkyNjQsIDI1NiwgCisgICAgMTQ5MDAwLCAyNTYsIDI5MzEyLCAyNTYsIDI5MzMzLCAyNTYsIDE0OTMwMSwgMjU2LCAxNDk1MjQsIDI1NiwgMjk1NjIsIAorICAgIDI1NiwgMjk1NzksIDI1NiwgMTYwNDQsIDI1NiwgMjk2MDUsIDI1NiwgMTYwNTYsIDI1NiwgMTYwNTYsIDI1NiwgMjk3NjcsIAorICAgIDI1NiwgMjk3ODgsIDI1NiwgMjk4MDksIDI1NiwgMjk4MjksIDI1NiwgMjk4OTgsIDI1NiwgMTYxNTUsIDI1NiwgMjk5ODgsIAorICAgIDI1NiwgMTUwNTgyLCAyNTYsIDMwMDE0LCAyNTYsIDE1MDY3NCwgMjU2LCAzMDA2NCwgMjU2LCAxMzk2NzksIDI1NiwgCisgICAgMzAyMjQsIDI1NiwgMTUxNDU3LCAyNTYsIDE1MTQ4MCwgMjU2LCAxNTE2MjAsIDI1NiwgMTYzODAsIDI1NiwgMTYzOTIsIAorICAgIDI1NiwgMzA0NTIsIDI1NiwgMTUxNzk1LCAyNTYsIDE1MTc5NCwgMjU2LCAxNTE4MzMsIDI1NiwgMTUxODU5LCAyNTYsIAorICAgIDMwNDk0LCAyNTYsIDMwNDk1LCAyNTYsIDMwNDk1LCAyNTYsIDMwNTM4LCAyNTYsIDE2NDQxLCAyNTYsIDMwNjAzLCAyNTYsIAorICAgIDE2NDU0LCAyNTYsIDE2NTM0LCAyNTYsIDE1MjYwNSwgMjU2LCAzMDc5OCwgMjU2LCAzMDg2MCwgMjU2LCAzMDkyNCwgMjU2LCAKKyAgICAxNjYxMSwgMjU2LCAxNTMxMjYsIDI1NiwgMzEwNjIsIDI1NiwgMTUzMjQyLCAyNTYsIDE1MzI4NSwgMjU2LCAzMTExOSwgCisgICAgMjU2LCAzMTIxMSwgMjU2LCAxNjY4NywgMjU2LCAzMTI5NiwgMjU2LCAzMTMwNiwgMjU2LCAzMTMxMSwgMjU2LCAxNTM5ODAsIAorICAgIDI1NiwgMTU0Mjc5LCAyNTYsIDE1NDI3OSwgMjU2LCAzMTQ3MCwgMjU2LCAxNjg5OCwgMjU2LCAxNTQ1MzksIDI1NiwgCisgICAgMzE2ODYsIDI1NiwgMzE2ODksIDI1NiwgMTY5MzUsIDI1NiwgMTU0NzUyLCAyNTYsIDMxOTU0LCAyNTYsIDE3MDU2LCAyNTYsIAorICAgIDMxOTc2LCAyNTYsIDMxOTcxLCAyNTYsIDMyMDAwLCAyNTYsIDE1NTUyNiwgMjU2LCAzMjA5OSwgMjU2LCAxNzE1MywgMjU2LCAKKyAgICAzMjE5OSwgMjU2LCAzMjI1OCwgMjU2LCAzMjMyNSwgMjU2LCAxNzIwNCwgMjU2LCAxNTYyMDAsIDI1NiwgMTU2MjMxLCAyNTYsIAorICAgIDE3MjQxLCAyNTYsIDE1NjM3NywgMjU2LCAzMjYzNCwgMjU2LCAxNTY0NzgsIDI1NiwgMzI2NjEsIDI1NiwgMzI3NjIsIDI1NiwgCisgICAgMzI3NzMsIDI1NiwgMTU2ODkwLCAyNTYsIDE1Njk2MywgMjU2LCAzMjg2NCwgMjU2LCAxNTcwOTYsIDI1NiwgMzI4ODAsIAorICAgIDI1NiwgMTQ0MjIzLCAyNTYsIDE3MzY1LCAyNTYsIDMyOTQ2LCAyNTYsIDMzMDI3LCAyNTYsIDE3NDE5LCAyNTYsIDMzMDg2LCAKKyAgICAyNTYsIDIzMjIxLCAyNTYsIDE1NzYwNywgMjU2LCAxNTc2MjEsIDI1NiwgMTQ0Mjc1LCAyNTYsIDE0NDI4NCwgMjU2LCAKKyAgICAzMzI4MSwgMjU2LCAzMzI4NCwgMjU2LCAzNjc2NiwgMjU2LCAxNzUxNSwgMjU2LCAzMzQyNSwgMjU2LCAzMzQxOSwgMjU2LCAKKyAgICAzMzQzNywgMjU2LCAyMTE3MSwgMjU2LCAzMzQ1NywgMjU2LCAzMzQ1OSwgMjU2LCAzMzQ2OSwgMjU2LCAzMzUxMCwgMjU2LCAKKyAgICAxNTg1MjQsIDI1NiwgMzM1MDksIDI1NiwgMzM1NjUsIDI1NiwgMzM2MzUsIDI1NiwgMzM3MDksIDI1NiwgMzM1NzEsIDI1NiwgCisgICAgMzM3MjUsIDI1NiwgMzM3NjcsIDI1NiwgMzM4NzksIDI1NiwgMzM2MTksIDI1NiwgMzM3MzgsIDI1NiwgMzM3NDAsIDI1NiwgCisgICAgMzM3NTYsIDI1NiwgMTU4Nzc0LCAyNTYsIDE1OTA4MywgMjU2LCAxNTg5MzMsIDI1NiwgMTc3MDcsIDI1NiwgMzQwMzMsIAorICAgIDI1NiwgMzQwMzUsIDI1NiwgMzQwNzAsIDI1NiwgMTYwNzE0LCAyNTYsIDM0MTQ4LCAyNTYsIDE1OTUzMiwgMjU2LCAxNzc1NywgCisgICAgMjU2LCAxNzc2MSwgMjU2LCAxNTk2NjUsIDI1NiwgMTU5OTU0LCAyNTYsIDE3NzcxLCAyNTYsIDM0Mzg0LCAyNTYsIDM0Mzk2LCAKKyAgICAyNTYsIDM0NDA3LCAyNTYsIDM0NDA5LCAyNTYsIDM0NDczLCAyNTYsIDM0NDQwLCAyNTYsIDM0NTc0LCAyNTYsIDM0NTMwLCAKKyAgICAyNTYsIDM0NjgxLCAyNTYsIDM0NjAwLCAyNTYsIDM0NjY3LCAyNTYsIDM0Njk0LCAyNTYsIDE3ODc5LCAyNTYsIDM0Nzg1LCAKKyAgICAyNTYsIDM0ODE3LCAyNTYsIDE3OTEzLCAyNTYsIDM0OTEyLCAyNTYsIDM0OTE1LCAyNTYsIDE2MTM4MywgMjU2LCAzNTAzMSwgCisgICAgMjU2LCAzNTAzOCwgMjU2LCAxNzk3MywgMjU2LCAzNTA2NiwgMjU2LCAxMzQ5OSwgMjU2LCAxNjE5NjYsIDI1NiwgMTYyMTUwLCAKKyAgICAyNTYsIDE4MTEwLCAyNTYsIDE4MTE5LCAyNTYsIDM1NDg4LCAyNTYsIDM1NTY1LCAyNTYsIDM1NzIyLCAyNTYsIDM1OTI1LCAKKyAgICAyNTYsIDE2Mjk4NCwgMjU2LCAzNjAxMSwgMjU2LCAzNjAzMywgMjU2LCAzNjEyMywgMjU2LCAzNjIxNSwgMjU2LCAxNjM2MzEsIAorICAgIDI1NiwgMTMzMTI0LCAyNTYsIDM2Mjk5LCAyNTYsIDM2Mjg0LCAyNTYsIDM2MzM2LCAyNTYsIDEzMzM0MiwgMjU2LCAzNjU2NCwgCisgICAgMjU2LCAzNjY2NCwgMjU2LCAxNjUzMzAsIDI1NiwgMTY1MzU3LCAyNTYsIDM3MDEyLCAyNTYsIDM3MTA1LCAyNTYsIDM3MTM3LCAKKyAgICAyNTYsIDE2NTY3OCwgMjU2LCAzNzE0NywgMjU2LCAzNzQzMiwgMjU2LCAzNzU5MSwgMjU2LCAzNzU5MiwgMjU2LCAzNzUwMCwgCisgICAgMjU2LCAzNzg4MSwgMjU2LCAzNzkwOSwgMjU2LCAxNjY5MDYsIDI1NiwgMzgyODMsIDI1NiwgMTg4MzcsIDI1NiwgMzgzMjcsIAorICAgIDI1NiwgMTY3Mjg3LCAyNTYsIDE4OTE4LCAyNTYsIDM4NTk1LCAyNTYsIDIzOTg2LCAyNTYsIDM4NjkxLCAyNTYsIDE2ODI2MSwgCisgICAgMjU2LCAxNjg0NzQsIDI1NiwgMTkwNTQsIDI1NiwgMTkwNjIsIDI1NiwgMzg4ODAsIDI1NiwgMTY4OTcwLCAyNTYsIDE5MTIyLCAKKyAgICAyNTYsIDE2OTExMCwgMjU2LCAzODkyMywgMjU2LCAzODkyMywgMjU2LCAzODk1MywgMjU2LCAxNjkzOTgsIDI1NiwgMzkxMzgsIAorICAgIDI1NiwgMTkyNTEsIDI1NiwgMzkyMDksIDI1NiwgMzkzMzUsIDI1NiwgMzkzNjIsIDI1NiwgMzk0MjIsIDI1NiwgMTk0MDYsIAorICAgIDI1NiwgMTcwODAwLCAyNTYsIDM5Njk4LCAyNTYsIDQwMDAwLCAyNTYsIDQwMTg5LCAyNTYsIDE5NjYyLCAyNTYsIDE5NjkzLCAKKyAgICAyNTYsIDQwMjk1LCAyNTYsIDE3MjIzOCwgMjU2LCAxOTcwNCwgMjU2LCAxNzIyOTMsIDI1NiwgMTcyNTU4LCAyNTYsIAorICAgIDE3MjY4OSwgMjU2LCA0MDYzNSwgMjU2LCAxOTc5OCwgMjU2LCA0MDY5NywgMjU2LCA0MDcwMiwgMjU2LCA0MDcwOSwgMjU2LCAKKyAgICA0MDcxOSwgMjU2LCA0MDcyNiwgMjU2LCA0MDc2MywgMjU2LCAxNzM1NjgsIAogfTsKIAogLyogaW5kZXggdGFibGVzIGZvciB0aGUgZGVjb21wb3NpdGlvbiBkYXRhICovCkBAIC01MTg3LDExICs1MjgwLDExIEBACiAgICAgMTMwNDQsIDEzMDQ2LCAxMzA0OCwgMTMwNTAsIDEzMDUyLCAxMzA1NCwgMTMwNTYsIDEzMDU4LCAxMzA2MCwgMTMwNjIsIAogICAgIDEzMDY0LCAxMzA2NiwgMTMwNjgsIDEzMDcwLCAxMzA3MiwgMTMwNzQsIDEzMDc2LCAxMzA3OCwgMTMwODAsIDEzMDgyLCAKICAgICAxMzA4NCwgMTMwODYsIDEzMDg4LCAxMzA5MCwgMTMwOTIsIDEzMDk0LCAxMzA5NiwgMTMwOTgsIDEzMTAwLCAxMzEwMiwgCi0gICAgMTMxMDQsIDEzMTA2LCAxMzEwOCwgMTMxMTAsIDEzMTEyLCAxMzExNCwgMTMxMTYsIDEzMTE4LCAxMzEyMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMTMxMjIsIDEzMTI2LCAxMzEzMCwgMTMxMzQsIDEzMTM4LCAxMzE0MiwgMTMxNDYsIDEzMTUwLCAxMzE1NCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMTMxNTgsIDEzMTYwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMzEwNCwgMTMxMDYsIDEzMTA4LCAxMzExMCwgMTMxMTIsIDEzMTE0LCAxMzExNiwgMTMxMTgsIDEzMTIwLCAxMzEyMiwgMCwgCisgICAgMCwgMCwgMCwgMTMxMjQsIDEzMTI4LCAxMzEzMiwgMTMxMzYsIDEzMTQwLCAxMzE0NCwgMTMxNDgsIDEzMTUyLCAxMzE1NiwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMxNjAsIDEzMTYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzE2MiwgMTMxNjQsIDEzMTY2LCAxMzE2OCwgMTMxNzAsIDEzMTcyLCAxMzE3NCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMxNjQsIDEzMTY2LCAxMzE2OCwgMTMxNzAsIDEzMTcyLCAxMzE3NCwgCiAgICAgMTMxNzYsIDEzMTc4LCAxMzE4MCwgMTMxODIsIDEzMTg0LCAxMzE4NiwgMTMxODgsIDEzMTkwLCAxMzE5MiwgMTMxOTQsIAogICAgIDEzMTk2LCAxMzE5OCwgMTMyMDAsIDEzMjAyLCAxMzIwNCwgMTMyMDYsIDEzMjA4LCAxMzIxMCwgMTMyMTIsIDEzMjE0LCAKICAgICAxMzIxNiwgMTMyMTgsIDEzMjIwLCAxMzIyMiwgMTMyMjQsIDEzMjI2LCAxMzIyOCwgMTMyMzAsIDEzMjMyLCAxMzIzNCwgCkBAIC01MjQ1LDExICs1MzM4LDExIEBACiAgICAgMTQxNzYsIDE0MTc4LCAxNDE4MCwgMTQxODIsIDE0MTg0LCAxNDE4NiwgMTQxODgsIDE0MTkwLCAxNDE5MiwgMTQxOTQsIAogICAgIDE0MTk2LCAxNDE5OCwgMTQyMDAsIDE0MjAyLCAxNDIwNCwgMTQyMDYsIDE0MjA4LCAxNDIxMCwgMTQyMTIsIDE0MjE0LCAKICAgICAxNDIxNiwgMTQyMTgsIDE0MjIwLCAxNDIyMiwgMTQyMjQsIDE0MjI2LCAxNDIyOCwgMTQyMzAsIDE0MjMyLCAxNDIzNCwgCi0gICAgMTQyMzYsIDE0MjM4LCAxNDI0MCwgMTQyNDIsIDE0MjQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNDIzNiwgMTQyMzgsIDE0MjQwLCAxNDI0MiwgMTQyNDQsIDE0MjQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKIH07CiAKIC8qIE5GQyBwYWlycyAqLwpAQCAtNTY2NSwxMzIgKzU3NTgsMTM1IEBACiB9OwogCiBzdGF0aWMgY29uc3QgY2hhbmdlX3JlY29yZCBjaGFuZ2VfcmVjb3Jkc18zXzJfMFtdID0gewotCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAwIH0sCi0JeyAxMSwgMjU1LCAyNTUsIDI1NSwgMCB9LAotCXsgMTAsIDI1NSwgMjU1LCAyNTUsIDAgfSwKLQl7IDI1NSwgMzAsIDI1NSwgMjU1LCAwIH0sCi0JeyAyNTUsIDIsIDI1NSwgMjU1LCAwIH0sCi0JeyAxOSwgMjEsIDI1NSwgMjU1LCAwIH0sCi0JeyAyNTUsIDI1NSwgMiwgMjU1LCAwIH0sCi0JeyAyNTUsIDI1NSwgMywgMjU1LCAwIH0sCi0JeyAyNTUsIDI1NSwgMSwgMjU1LCAwIH0sCi0JeyAyNTUsIDAsIDI1NSwgMjU1LCAwIH0sCi0JeyAyNTUsIDI5LCAyNTUsIDI1NSwgMCB9LAotCXsgMjU1LCAyNiwgMjU1LCAyNTUsIDAgfSwKLQl7IDUsIDI1NSwgMjU1LCAyNTUsIDAgfSwKLQl7IDE0LCA2LCAyNTUsIDI1NSwgMCB9LAotCXsgMTUsIDI1NSwgMjU1LCAyNTUsIDAgfSwKLQl7IDI1NSwgMjU1LCAyNTUsIDI1NSwgMS4wIH0sCi0JeyAyNTUsIDI1NSwgMjU1LCAyNTUsIDIuMCB9LAotCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAzLjAgfSwKLQl7IDI1NSwgMjU1LCAyNTUsIDI1NSwgNC4wIH0sCi0JeyAyNTUsIDI1NSwgMjU1LCAyNTUsIC0xIH0sCi0JeyAxNCwgMjU1LCAyNTUsIDI1NSwgMCB9LAotCXsgMjU1LCAyNTUsIDI1NSwgMCwgMCB9LAotCXsgMjU1LCA3LCAxLCAyNTUsIDAgfSwKLQl7IDI1NSwgNywgMiwgMjU1LCAwIH0sCi0JeyAyNTUsIDcsIDMsIDI1NSwgMCB9LAotCXsgMjU1LCA3LCA0LCAyNTUsIDAgfSwKLQl7IDI1NSwgNywgNSwgMjU1LCAwIH0sCi0JeyAyNTUsIDcsIDYsIDI1NSwgMCB9LAotCXsgMjU1LCA3LCA3LCAyNTUsIDAgfSwKLQl7IDI1NSwgNywgOCwgMjU1LCAwIH0sCi0JeyAyNTUsIDcsIDksIDI1NSwgMCB9LAotCXsgMjU1LCAxOSwgMjU1LCAyNTUsIDAgfSwKLQl7IDEsIDUsIDI1NSwgMjU1LCAwIH0sCi0JeyAyNTUsIDEwLCAyNTUsIDI1NSwgMCB9LAotCXsgMTgsIDI1NSwgMjU1LCAyNTUsIDAgfSwKLQl7IDE5LCAyNTUsIDI1NSwgMjU1LCAwIH0sCi0JeyAyNTUsIDI1NSwgMCwgMjU1LCAwIH0sCi0JeyAyNTUsIDI1NSwgNCwgMjU1LCAwIH0sCi0JeyAyNTUsIDI1NSwgNSwgMjU1LCAwIH0sCi0JeyAyNTUsIDI1NSwgNiwgMjU1LCAwIH0sCi0JeyAyNTUsIDI1NSwgNywgMjU1LCAwIH0sCi0JeyAyNTUsIDI1NSwgOCwgMjU1LCAwIH0sCi0JeyAyNTUsIDI1NSwgOSwgMjU1LCAwIH0sCi0JeyAxOSwgMzAsIDI1NSwgMjU1LCAwIH0sCi0JeyAyNTUsIDgsIDI1NSwgMjU1LCAwIH0sCi0JeyAyNTUsIDI3LCAyNTUsIDI1NSwgMCB9LAotCXsgMjU1LCAyMiwgMjU1LCAyNTUsIDAgfSwKLQl7IDI1NSwgMjMsIDI1NSwgMjU1LCAwIH0sCi0JeyA5LCAyNTUsIDI1NSwgMjU1LCAwIH0sCi0JeyAxNCwgNCwgMjU1LCAyNTUsIDAgfSwKLQl7IDI1NSwgMjAsIDI1NSwgMjU1LCAwIH0sCi0JeyAyNTUsIDI1NSwgMjU1LCAyNTUsIDFlKzE2IH0sCi0JeyAyNTUsIDI1NSwgMjU1LCAyNTUsIDFlKzIwIH0sCi0JeyAyNTUsIDE5LCAyNTUsIDI1NSwgLTEgfSwKLQl7IDEsIDI1NSwgMjU1LCAwLCAwIH0sCisJeyAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMTEsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMTAsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAzMCwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyLCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAxOSwgMjEsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMjU1LCAyLCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyNTUsIDMsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDI1NSwgMSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMCwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyOSwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyNiwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgNSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAxNCwgNiwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDEuMCB9LAorCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDIuMCB9LAorCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDMuMCB9LAorCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDQuMCB9LAorCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIC0xIH0sCisJeyAxNCwgMjU1LCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDI1NSwgMjU1LCAwLCAyNTUsIDAgfSwKKwl7IDI1NSwgNywgMSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgNywgMiwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgNywgMywgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgNywgNCwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgNywgNSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgNywgNiwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgNywgNywgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgNywgOCwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgNywgOSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMTksIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDEsIDUsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDEsIDE5LCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDEwLCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAxOCwgMjU1LCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAxOSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDI1NSwgMCwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMjU1LCA0LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyNTUsIDUsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDI1NSwgNiwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMjU1LCA3LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyNTUsIDgsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDI1NSwgOSwgMjU1LCAyNTUsIDAgfSwKKwl7IDE5LCAzMCwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCA4LCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDI3LCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDI1NSwgMjU1LCAyNTUsIDUsIDAgfSwKKwl7IDI1NSwgMjIsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMjMsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDksIDI1NSwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMTQsIDQsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMjAsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAxZSsxNiB9LAorCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDFlKzIwIH0sCisJeyAyNTUsIDE5LCAyNTUsIDI1NSwgMjU1LCAtMSB9LAorCXsgMSwgMjU1LCAyNTUsIDAsIDI1NSwgMCB9LAogfTsKIHN0YXRpYyB1bnNpZ25lZCBjaGFyIGNoYW5nZXNfM18yXzBfaW5kZXhbXSA9IHsKICAgICAwLCAxLCAyLCAyLCAzLCA0LCA1LCA2LCAyLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTcsIDE4LCAKICAgICAxOSwgMjAsIDIxLCAyMiwgMjMsIDI0LCAyNSwgMiwgMjYsIDI3LCAyOCwgMjksIDMwLCAzMSwgMzIsIDMzLCAzNCwgMzUsIAogICAgIDM2LCAzNywgMiwgMiwgMiwgMzgsIDM5LCAyLCA0MCwgMiwgNDEsIDQyLCA0MywgNDQsIDQ1LCA0NiwgNDcsIDQ4LCA0OSwgCi0gICAgNTAsIDUxLCAyLCA1MiwgMiwgMiwgNTMsIDU0LCA1NSwgNTYsIDU3LCAyLCA1OCwgNTksIDYwLCA2MSwgMiwgMiwgNjIsIDYzLCAKLSAgICA2NCwgNjUsIDY2LCA2NiwgMiwgMiwgMiwgMiwgNjcsIDY4LCA2OSwgNzAsIDcxLCA3MiwgNzMsIDIsIDIsIDIsIDc0LCA3NSwgCi0gICAgNzYsIDc3LCA3OCwgNzksIDgwLCA4MSwgODIsIDgzLCAyLCAyLCAyLCAyLCAyLCAyLCA4NCwgMiwgMiwgMiwgMiwgMiwgODUsIAorICAgIDUwLCA1MSwgMiwgNTIsIDIsIDIsIDUzLCA1NCwgNTUsIDU2LCA1NywgMiwgNTgsIDU5LCA2MCwgNjEsIDIsIDYyLCA2MywgCisgICAgNjQsIDY1LCA2NiwgNjcsIDY3LCAyLCAyLCAyLCAyLCA2OCwgNjksIDcwLCA3MSwgNzIsIDczLCA3NCwgMiwgMiwgMiwgNzUsIAorICAgIDc2LCA3NywgNzgsIDc5LCA4MCwgODEsIDgyLCA4MywgODQsIDIsIDIsIDIsIDIsIDIsIDIsIDg1LCAyLCAyLCAyLCAyLCAyLCAKKyAgICA4NiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgODcsIDIsIDg4LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICA4OSwgOTAsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDkxLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5MiwgCisgICAgOTMsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDk0LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA4NiwgMiwgODcsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDg4LCA4OSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTAsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDkxLCAKLSAgICA5MiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTMsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDk0LCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5NSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTYsIDk3LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5OCwgNTAsIDUwLCAKLSAgICA5OSwgMTAwLCA1MCwgMTAxLCAxMDIsIDEwMywgMTA0LCAxMDUsIDEwNiwgMTA3LCAxMDgsIDEwOSwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTUsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDk2LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5NywgOTgsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDk5LCA1MCwgNTAsIAorICAgIDEwMCwgMTAxLCA1MCwgMTAyLCAxMDMsIDEwNCwgMTA1LCAxMDYsIDEwNywgMTA4LCAxMDksIDExMCwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTEwLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxMTEsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDExMSwgMTEyLCAxMTMsIDExNCwgMTE1LCAxMTYsIDIsIDIsIDExNywgMTE4LCAxMTksIDIsIDEyMCwgCi0gICAgMTIxLCAxMjIsIDEyMywgMTI0LCAxMjUsIDIsIDEyNiwgMTI3LCAxMjgsIDEyOSwgMTMwLCAxMzEsIDIsIDUwLCA1MCwgMTMyLCAKLSAgICAyLCAxMzMsIDEzNCwgMTM1LCAxMzYsIDEzNywgMTM4LCAxMzksIDE0MCwgMTQxLCAxNDIsIDIsIDIsIDE0MywgMiwgMiwgMiwgCi0gICAgMTQ0LCAxNDUsIDE0NiwgMTQ3LCAxNDgsIDE0OSwgMTUwLCAyLCAyLCAxNTEsIDIsIDE1MiwgMTUzLCAxNTQsIDE1NSwgMiwgCi0gICAgMiwgMTU2LCAyLCAyLCAyLCAxNTcsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCAxNTgsIDE1OSwgNTAsIDE2MCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNjEsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDExMiwgMTEzLCAxMTQsIDExNSwgMTE2LCAxMTcsIDIsIDIsIDExOCwgMTE5LCAxMjAsIDIsIDEyMSwgCisgICAgMTIyLCAxMjMsIDEyNCwgMTI1LCAxMjYsIDIsIDEyNywgMTI4LCAxMjksIDEzMCwgMTMxLCAxMzIsIDIsIDUwLCA1MCwgMTMzLCAKKyAgICAyLCAxMzQsIDEzNSwgMTM2LCAxMzcsIDEzOCwgMTM5LCAxNDAsIDE0MSwgMTQyLCAxNDMsIDIsIDIsIDE0NCwgMiwgMiwgMiwgCisgICAgMTQ1LCAxNDYsIDE0NywgMTQ4LCAxNDksIDE1MCwgMTUxLCAyLCAxNTIsIDE1MywgMiwgMTU0LCAxNTUsIDE1NiwgMTU3LCAyLCAKKyAgICAyLCAxNTgsIDIsIDIsIDIsIDE1OSwgMiwgMiwgMTYwLCAxNjEsIDIsIDIsIDIsIDIsIDIsIDIsIDUwLCA1MCwgNTAsIDUwLCAKKyAgICA1MCwgNTAsIDUwLCAxNjIsIDE2MywgNTAsIDE2NCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNjUsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDUwLCA1MCwgNTAsIDUwLCAxNjIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDUwLCA1MCwgNTAsIDUwLCAxNjYsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDUwLCA1MCwgNTAsIDUwLCAxNjMsIDE2NCwgMTY1LCAxNjYsIDIsIDIsIDIsIDIsIDIsIDIsIDE2NywgMTY4LCAKKyAgICAyLCAyLCAyLCAyLCA1MCwgNTAsIDUwLCA1MCwgMTY3LCAxNjgsIDE2OSwgMTcwLCAyLCAyLCAyLCAyLCAyLCAyLCAxNzEsIAorICAgIDE3MiwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKKyAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKKyAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzMsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCisgICAgMTc0LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAxNzUsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDE3NiwgMTc3LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxNzgsIAorICAgIDE3OSwgMTgwLCAyLCAxODEsIDIsIDIsIDE4MiwgMiwgMiwgMiwgMTgzLCAxODQsIDE4NSwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKKyAgICAxODYsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE4NywgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgNTAsIDE4OCwgMTg5LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxOTAsIDE5MSwgMiwgMiwgMTkyLCAKKyAgICAxOTMsIDE5NCwgMTk1LCAxOTYsIDIsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxOTcsIDE5OCwgMTk5LCAyMDAsIAorICAgIDIwMSwgMjAyLCAyMDMsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIwNCwgMjA1LCA5NiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgODUsIDIwNiwgMiwgMjA3LCAyMDgsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIwOSwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMjEwLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyMTEsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIxMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTY5LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxNzAsIDE3MSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMTcyLCAxNzMsIDE3NCwgMiwgMTc1LCAyLCAyLCAxNzYsIDIsIDIsIDIsIDE3NywgMTc4LCAxNzksIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgMTgwLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA1MCwgMTgxLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxODIsIAotICAgIDE4MywgMiwgMiwgMTg0LCAxODUsIDE4NiwgMTg3LCAxODgsIDIsIDUwLCA1MCwgNTAsIDUwLCAxODksIDE5MCwgNTAsIDE5MSwgCi0gICAgMTkyLCAxOTMsIDE5NCwgMTk1LCAxOTYsIDE5NywgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTk4LCAKLSAgICAxOTksIDk1LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA4NCwgMjAwLCAyLCAyMDEsIAotICAgIDIwMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMjAzLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyMDQsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIwNSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMjA2LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDIwNywgNTAsIDIwOCwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKKyAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKKyAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAyMTMsIDUwLCAyMTQsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAogICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAogICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMjA5LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICA1MCwgNTAsIDIxNSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMjAzLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyMDksIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIApAQCAtNjAyNiw4ICs2MTIyLDcgQEAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA1MCwgMjEwLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICA1MCwgMjE2LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKQEAgLTYwOTAsNyArNjE4NSw3IEBACiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiB9OwogCiBzdGF0aWMgdW5zaWduZWQgY2hhciBjaGFuZ2VzXzNfMl8wX2RhdGFbXSA9IHsKQEAgLTYxNzYsOSArNjI3MSw5IEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgCkBAIC02MjE2LDcgKzYzMTEsNyBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDIwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC02MjI1LDkgKzYzMjAsOSBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtNjMxNCw3ICs2NDA5LDcgQEAKICAgICAzMiwgMzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMzLCAzMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgCiAgICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCkBAIC02MzU2LDggKzY0NTEsOCBAQAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIApAQCAtNjM3MiwyOSArNjQ2NywyOSBAQAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIAotICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAzNiwgNCwgMCwgMCwgCi0gICAgMzcsIDM4LCAzOSwgNDAsIDQxLCA0MiwgMSwgMSwgMCwgMCwgMCwgNCwgMzYsIDgsIDYsIDcsIDM3LCAzOCwgMzksIDQwLCAKLSAgICA0MSwgNDIsIDEsIDEsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAzNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMzcsIDQsIDAsIDAsIAorICAgIDM4LCAzOSwgNDAsIDQxLCA0MiwgNDMsIDEsIDEsIDAsIDAsIDAsIDQsIDM3LCA4LCA2LCA3LCAzOCwgMzksIDQwLCA0MSwgCisgICAgNDIsIDQzLCAxLCAxLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC02NDA1LDEzNyArNjUwMCw4MjEgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NSwgNDUsIDQ1LCA0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDYsIDQ2LCA0NiwgNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDYsIDQ3LCAxMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ5LCAxMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCisgICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCisgICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgOSwgMCwgCisgICAgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgOSwgOSwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzYsIDM2LCAzNiwgMzYsIDM2LCAKKyAgICAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAKKyAgICAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAKKyAgICAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAKKyAgICAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAKKyAgICAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAKKyAgICAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAKKyAgICAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA1MSwgNTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDksIDAsIDAsIDAsIAotICAgIDAsIDksIDksIDksIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA0OCwgNDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIxLCAyMSwgCisgICAgMjEsIDIxLCAyMSwgMjEsIDAsIDAsIDAsIDEsIDEsIDIxLCAyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMSwgMCwgMSwgMCwgMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTIsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE0LCAxNCwgMTQsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDAsIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDksIDQ5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgMCwgMCwgMCwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCisgICAgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgCisgICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgMCwgOSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDU2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTYsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NiwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgOSwgOSwgMCwgOSwgMCwgMCwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgCisgICAgMCwgOSwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgOSwgMCwgOSwgMCwgOSwgMCwgOSwgOSwgOSwgCisgICAgMCwgOSwgOSwgMCwgOSwgMCwgMCwgOSwgMCwgOSwgMCwgOSwgMCwgOSwgMCwgOSwgMCwgOSwgOSwgMCwgOSwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKQEAgLTY1NDcsNjgzICs3MzI2LDMxIEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTEsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTIsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgCi0gICAgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMTksIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NiwgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDAsIDAsIDAsIDEsIDEsIDIxLCAyMSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMCwgMSwgMCwgMiwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0LCAxNCwgMTQsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAotICAgIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgMCwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgMCwgMCwgMCwgOSwgCi0gICAgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCi0gICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgMCwgOSwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgMCwgMCwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgMCwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgMCwgMCwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCi0gICAgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCAwLCA5LCA5LCAwLCA5LCAwLCAwLCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCAKLSAgICA5LCA5LCA5LCAwLCA5LCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCA5LCAwLCA5LCAwLCA5LCAwLCAKLSAgICA5LCA5LCA5LCAwLCA5LCA5LCAwLCA5LCAwLCAwLCA5LCAwLCA5LCAwLCA5LCAwLCA5LCAwLCA5LCAwLCA5LCA5LCAwLCA5LCAKLSAgICAwLCAwLCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAKLSAgICAwLCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiB9OwogCiBzdGF0aWMgY29uc3QgY2hhbmdlX3JlY29yZCogZ2V0X2NoYW5nZV8zXzJfMChQeV9VQ1M0IG4pCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3VuaWNvZGVuYW1lX2RiLmggYi9Nb2R1bGVzL3VuaWNvZGVuYW1lX2RiLmgKaW5kZXggZDBmOWNiNC4uYTgxZDhlMyAxMDA2NDQKLS0tIGEvTW9kdWxlcy91bmljb2RlbmFtZV9kYi5oCisrKyBiL01vZHVsZXMvdW5pY29kZW5hbWVfZGIuaApAQCAtNCwyNDYgKzQsMjQ3IEBACiAKIC8qIGxleGljb24gKi8KIHN0YXRpYyB1bnNpZ25lZCBjaGFyIGxleGljb25bXSA9IHsKLSAgICA3NiwgNjksIDg0LCA4NCwgNjksIDIxMCwgODMsIDczLCA3MSwgMjA2LCA4NywgNzMsIDg0LCAyMDAsIDgzLCA4OSwgNzYsIAotICAgIDc2LCA2NSwgNjYsIDc2LCAxOTcsIDgzLCA3NywgNjUsIDc2LCAyMDQsIDY3LCA2NSwgODAsIDczLCA4NCwgNjUsIDIwNCwgCi0gICAgNzIsIDczLCA2OSwgODIsIDc5LCA3MSwgNzYsIDg5LCA4MCwgMjAwLCA3NiwgNjUsIDg0LCA3MywgMjA2LCA2NywgODUsIDc4LCAKLSAgICA2OSwgNzMsIDcwLCA3OSwgODIsIDIwNSwgNjUsIDgyLCA2NSwgNjYsIDczLCAxOTUsIDg5LCAyMDEsIDY3LCA3NCwgMjAzLCAKKyAgICA3NiwgNjksIDg0LCA4NCwgNjksIDIxMCwgODMsIDczLCA3MSwgMjA2LCA4NywgNzMsIDg0LCAyMDAsIDgzLCA3NywgNjUsIAorICAgIDc2LCAyMDQsIDgzLCA4OSwgNzYsIDc2LCA2NSwgNjYsIDc2LCAxOTcsIDY3LCA2NSwgODAsIDczLCA4NCwgNjUsIDIwNCwgCisgICAgNzIsIDczLCA2OSwgODIsIDc5LCA3MSwgNzYsIDg5LCA4MCwgMjAwLCA3NiwgNjUsIDg0LCA3MywgMjA2LCA2NSwgODIsIDY1LCAKKyAgICA2NiwgNzMsIDE5NSwgNjcsIDg1LCA3OCwgNjksIDczLCA3MCwgNzksIDgyLCAyMDUsIDg5LCAyMDEsIDY3LCA3NCwgMjAzLCAKICAgICA3NywgNjUsIDg0LCA3MiwgNjksIDc3LCA2NSwgODQsIDczLCA2NywgNjUsIDIwNCwgNjksIDcxLCA4OSwgODAsIDg0LCA3MywgCiAgICAgNjUsIDIwNiwgNjcsIDc5LCA3NywgODAsIDY1LCA4NCwgNzMsIDY2LCA3MywgNzYsIDczLCA4NCwgMjE3LCA4MywgODksIDc3LCAKLSAgICA2NiwgNzksIDIwNCwgNjgsIDczLCA3MSwgNzMsIDIxMiwgNzAsIDc5LCA4MiwgNzcsIDEyOCwgNjcsIDY1LCA3OCwgNjUsIAotICAgIDY4LCA3MywgNjUsIDIwNiwgODMsIDg5LCA3NiwgNzYsIDY1LCA2NiwgNzMsIDY3LCAyMTEsIDgzLCA3MywgNzEsIDc4LCA4NywgCi0gICAgODIsIDczLCA4NCwgNzMsIDc4LCAxOTksIDg2LCA3OSwgODcsIDY5LCAyMDQsIDg0LCA3MywgNzcsIDY5LCAyMTEsIDY2LCAKLSAgICA2NSwgNzcsIDg1LCAyMDUsIDY1LCA3OCwgMTk2LCA2NiwgNzksIDc2LCAxOTYsIDY1LCA3OCwgNjUsIDg0LCA3OSwgNzYsIAotICAgIDczLCA2NSwgMjA2LCA3MiwgNjUsIDc4LCA3MSwgODUsIDIwNCwgNzYsIDczLCA3OCwgNjksIDY1LCAyMTAsIDcxLCA4MiwgCi0gICAgNjksIDY5LCAyMDMsIDc3LCA4NSwgODMsIDczLCA2NywgNjUsIDIwNCwgNzYsIDczLCA3MSwgNjUsIDg0LCA4NSwgODIsIAotICAgIDE5NywgNjksIDg0LCA3MiwgNzMsIDc5LCA4MCwgNzMsIDE5NSwgMTkzLCA3MCwgNzksIDIxMCwgNjcsIDg5LCA4MiwgNzMsIAotICAgIDc2LCA3NiwgNzMsIDE5NSwgNzMsIDg0LCA2NSwgNzYsIDczLCAxOTUsIDY3LCA3OSwgNzcsIDY2LCA3MywgNzgsIDczLCA3OCwgCi0gICAgMTk5LCA4MiwgNjUsIDY4LCA3MywgNjcsIDY1LCAyMDQsIDgzLCA2NSwgNzgsIDgzLCA0NSwgODMsIDY5LCA4MiwgNzMsIAotICAgIDE5OCwgNzgsIDg1LCA3NywgNjYsIDY5LCAyMTAsIDY3LCA3MywgODIsIDY3LCA3NiwgNjksIDE5NiwgODQsIDY1LCA3NywgCi0gICAgNzMsIDIwNCwgODQsIDY1LCAyMDEsIDcwLCA3MywgNzgsIDY1LCAyMDQsIDY1LCA4MiwgODIsIDc5LCA4NywgMTI4LCA4NiwgCi0gICAgNjUsIDIwMSwgNzYsIDY5LCA3MCwgMjEyLCA4MiwgNzMsIDcxLCA3MiwgMjEyLCA4MywgODEsIDg1LCA2NSwgODIsIDE5NywgCi0gICAgNjgsIDc5LCA4NSwgNjYsIDc2LCAxOTcsIDY1LCA4MiwgODIsIDc5LCAyMTUsIDgzLCA3MywgNzEsIDc4LCAxMjgsIDY1LCAKLSAgICA2NiwgNzksIDg2LCA2OSwgMTI4LCA2NiwgNjksIDc2LCA3OSwgODcsIDEyOCwgODYsIDY1LCA4MiwgNzMsIDY1LCA4NCwgNzMsIAotICAgIDc5LCAyMDYsIDY2LCA4MiwgNjUsIDczLCA3NiwgNzYsIDE5NywgODAsIDY1LCA4NCwgODQsIDY5LCA4MiwgMjA2LCA2NiwgCi0gICAgODksIDkwLCA2NSwgNzgsIDg0LCA3MywgNzgsIDE5NywgODcsIDcyLCA3MywgODQsIDE5NywgNjYsIDc2LCA2NSwgNjcsIAotICAgIDIwMywgNjUsIDEyOCwgNzMsIDgzLCA3OSwgNzYsIDY1LCA4NCwgNjksIDE5NiwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgCi0gICAgNjksIDIxMCwgMTk0LCA3NSwgNjUsIDg0LCA2NSwgNzUsIDY1LCA3OCwgMTkzLCA4NSwgMTI4LCA3NywgODksIDY1LCA3OCwgCi0gICAgNzcsIDY1LCAyMTAsIDY4LCA3OSwgMjEyLCA3NSwgNjUsIDc4LCA3MSwgODgsIDIwMSwgNzUsIDczLCA3NSwgNjUsIDc1LCAKLSAgICA4NSwgMjAxLCA3NywgNjksIDc4LCA2OCwgMTk3LCA3MywgMTI4LCA3OSwgMTk4LCA4NCwgNzMsIDY2LCA2OSwgODQsIDY1LCAKLSAgICAyMDYsIDc5LCAxMjgsIDcyLCA2OSwgNjUsIDg2LCAyMTcsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCAyMDQsIDczLCAKLSAgICA3OCwgNzMsIDg0LCA3MywgNjUsIDIwNCwgNzcsIDY1LCA4MiwgNzUsIDEyOCwgNzcsIDY5LCA2OSwgMjA1LCA2NywgNzksIAotICAgIDgwLCA4NCwgNzMsIDE5NSwgNzUsIDcyLCA3NywgNjksIDIxMCwgODIsIDczLCA3MSwgNzIsIDg0LCA4NywgNjUsIDgyLCA2OCwgCi0gICAgMjExLCA2NSwgNjYsIDc5LCA4NiwgMTk3LCA2NywgNjUsIDgyLCA4MiwgNzMsIDY5LCAyMTAsIDg5LCA2OSwgMjAwLCA2NywgCi0gICAgNzIsIDY5LCA4MiwgNzksIDc1LCA2OSwgMTk3LCA4MCwgNzYsIDg1LCAyMTEsIDY4LCA2OSwgODYsIDY1LCA3OCwgNjUsIDcxLCAKLSAgICA2NSwgODIsIDIwMSwgODAsIDcyLCA2NSwgODMsIDY5LCA0NSwgMTk3LCA3NywgNzksIDc4LCA3MSwgNzksIDc2LCA3MywgNjUsIAotICAgIDIwNiwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgMTI4LCA3NiwgNjksIDcwLCA4NCwgODcsIDY1LCA4MiwgNjgsIDIxMSwgCi0gICAgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgMTI4LCA2NiwgNzksIDIxNiwgODQsIDczLCA3NiwgMTk3LCA2OCwgODUsIDgwLCAKLSAgICA3NiwgNzksIDg5LCA2NSwgMjA2LCA3NywgNzMsIDY4LCA2OCwgNzYsIDE5NywgODAsIDY1LCA4MiwgNjksIDc4LCA4NCwgNzIsIAotICAgIDY5LCA4MywgNzMsIDkwLCA2OSwgMTk2LCA4MywgODEsIDg1LCA2NSwgODIsIDY5LCAxOTYsIDg0LCA3MiwgNjUsIDIwNSwgCi0gICAgNzksIDc4LCA2OSwgMTI4LCAyMTMsIDc0LCA3OSwgNzgsIDcxLCA4MywgNjksIDc5LCA3OCwgMTk5LCA4NCwgODcsIDc5LCAKLSAgICAxMjgsIDY3LCA3OSwgNzgsIDgzLCA3OSwgNzgsIDY1LCA3OCwgMjEyLCA3MiwgNjksIDY2LCA4MiwgNjksIDIxNSwgNzcsIAotICAgIDczLCA2NSwgMjA3LCA4NSwgMjA4LCA3MiwgNzksIDc5LCA3NSwgMTI4LCA3MSwgNjksIDc5LCA4MiwgNzEsIDczLCA2NSwgCi0gICAgMjA2LCA3OSwgODYsIDY5LCAyMTAsIDY4LCA4MiwgNjUsIDg3LCA3MywgNzgsIDcxLCAyMTEsIDcyLCA3NywgNzksIDc4LCAKLSAgICAxOTksIDc5LCA3OCwgMTk3LCA4MCwgNjUsIDcyLCA2NSwgODcsIDIwMCwgODQsIDg3LCAyMDcsIDY4LCA3OSwgODcsIDIwNiwgCi0gICAgNzMsIDc4LCA2OCwgNjksIDIxNiwgNjcsIDcyLCA3OSwgODMsIDY5LCA3OSwgNzgsIDE5OSwgNzYsIDc5LCAyMTUsIDg2LCAKLSAgICA3OSwgNjcsIDY1LCA3NiwgNzMsIDE5NSwgODQsIDcyLCA4MiwgNjksIDE5NywgNzIsIDY1LCA3NiwgNzAsIDg3LCA3MywgNjgsIAotICAgIDg0LCAyMDAsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNzAsIDczLCA4MywgMjEyLCA3NywgNjksIDgyLCA3OSwgNzMsIDg0LCA3MywgCi0gICAgMTk1LCA2NiwgNjUsIDc2LCA3MywgNzgsIDY5LCA4MywgMTk3LCA3NywgNjUsIDgyLCAyMDMsIDgzLCA2NywgODIsIDczLCAKLSAgICA4MCwgMjEyLCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgMjA1LCA4MCwgNzIsIDY1LCA4MywgNjksIDQ1LCAxOTYsIAotICAgIDg0LCA3OSwgMTI4LCA2NSwgNzYsIDY3LCA3MiwgNjksIDc3LCA3MywgNjcsIDY1LCAyMDQsIDY1LCA3NiwgNjksIDE5OCwgCi0gICAgNzIsIDczLCA3MSwgMjAwLCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA3MywgMTk1LCA4MywgNzMsIDc4LCAKLSAgICA3MiwgNjUsIDc2LCAxOTMsIDc4LCA4NSwgNzcsIDY5LCA4MiwgNzMsIDE5NSwgNjYsIDY1LCA4MiwgMTI4LCA4NCwgNzksIAotICAgIDc4LCAxOTcsIDY2LCA4MiwgNjUsIDcyLCA3NywgMjAxLCA3MiwgODUsIDc4LCA3MSwgNjUsIDgyLCA3MywgNjUsIDIwNiwgCi0gICAgODQsIDcyLCA4MiwgNjksIDY5LCAxMjgsIDg0LCA3MiwgODUsIDc3LCAxOTQsIDcwLCA3OSwgODUsIDgyLCAxMjgsIDY2LCAKLSAgICA2NSwgODIsIDE5NCwgNzIsIDY1LCAyMDAsIDcyLCA2NSwgMTI4LCA3OCwgNzksIDgyLCA4NCwgMjAwLCA3MCwgODUsIDc2LCAKLSAgICA3NiwgODcsIDczLCA2OCwgODQsIDIwMCwgNjYsIDgyLCA2NSwgNjcsIDc1LCA2OSwgODQsIDEyOCwgNjksIDgxLCA4NSwgNjUsIAotICAgIDIwNCwgNzYsIDczLCA3MSwgNzIsIDIxMiwgODQsIDY1LCAxOTksIDY4LCA3OSwgNzcsIDczLCA3OCwgMjA3LCA3MiwgNjUsIAotICAgIDc2LCAxOTgsIDc2LCA3OSwgNzgsIDE5OSwgNzcsIDY1LCA3NiwgNjUsIDg5LCA2NSwgNzYsIDY1LCAyMDUsIDY1LCA2NywgCi0gICAgODUsIDg0LCA2OSwgMTI4LCA3MCwgODIsIDY1LCA3NSwgODQsIDg1LCAyMTAsIDY3LCA3MiwgNjUsIDgyLCA2NSwgNjcsIDg0LCAKLSAgICA2OSwgMjEwLCA4MCwgNzIsIDY1LCA4MywgNjksIDQ1LCAxOTUsIDY4LCA3OSwgODUsIDY2LCA3NiwgNjksIDQ1LCA4MywgODQsIAotICAgIDgyLCA4NSwgNjcsIDIwMywgNzAsIDczLCA4NiwgNjksIDEyOCwgNzksIDgwLCA2OSwgMjA2LCA3MiwgNzMsIDgyLCA2NSwgCi0gICAgNzEsIDY1LCA3OCwgMTkzLCA3NSwgNjUsIDEyOCwgNzcsIDY5LCA2OCwgNzMsIDY1LCAyMDQsIDg0LCA2OSwgNzYsIDg1LCAKKyAgICA2NiwgNzksIDIwNCwgNjgsIDczLCA3MSwgNzMsIDIxMiwgODQsIDY1LCA3OCwgNzEsIDg1LCAyMTIsIDcwLCA3OSwgODIsIAorICAgIDc3LCAxMjgsIDY3LCA2NSwgNzgsIDY1LCA2OCwgNzMsIDY1LCAyMDYsIDgzLCA4OSwgNzYsIDc2LCA2NSwgNjYsIDczLCA2NywgCisgICAgMjExLCA4NiwgNzksIDg3LCA2OSwgMjA0LCA4MywgNzMsIDcxLCA3OCwgODcsIDgyLCA3MywgODQsIDczLCA3OCwgMTk5LCAKKyAgICA4NCwgNzMsIDc3LCA2OSwgMjExLCA2NiwgNjUsIDc3LCA4NSwgMjA1LCA2NSwgNzgsIDE5NiwgNjYsIDc5LCA3NiwgMTk2LCAKKyAgICA2NSwgNzgsIDY1LCA4NCwgNzksIDc2LCA3MywgNjUsIDIwNiwgNzIsIDY1LCA3OCwgNzEsIDg1LCAyMDQsIDc2LCA3MywgNzgsIAorICAgIDY5LCA2NSwgMjEwLCA3MSwgODIsIDY5LCA2OSwgMjAzLCA3NywgODUsIDgzLCA3MywgNjcsIDY1LCAyMDQsIDc2LCA3MywgCisgICAgNzEsIDY1LCA4NCwgODUsIDgyLCAxOTcsIDY5LCA4NCwgNzIsIDczLCA3OSwgODAsIDczLCAxOTUsIDE5MywgNzAsIDc5LCAKKyAgICAyMTAsIDY3LCA4OSwgODIsIDczLCA3NiwgNzYsIDczLCAxOTUsIDY3LCA3OSwgNzcsIDY2LCA3MywgNzgsIDczLCA3OCwgCisgICAgMTk5LCA3MywgODQsIDY1LCA3NiwgNzMsIDE5NSwgNzgsIDg1LCA3NywgNjYsIDY5LCAyMTAsIDgyLCA2NSwgNjgsIDczLCAKKyAgICA2NywgNjUsIDIwNCwgODMsIDY1LCA3OCwgODMsIDQ1LCA4MywgNjksIDgyLCA3MywgMTk4LCA2NywgNzMsIDgyLCA2NywgNzYsIAorICAgIDY5LCAxOTYsIDg0LCA2NSwgNzcsIDczLCAyMDQsIDg0LCA2NSwgMjAxLCA3MCwgNzMsIDc4LCA2NSwgMjA0LCA2NSwgODIsIAorICAgIDgyLCA3OSwgODcsIDEyOCwgNzYsIDY5LCA3MCwgMjEyLCA4NiwgNjUsIDIwMSwgODIsIDczLCA3MSwgNzIsIDIxMiwgODMsIAorICAgIDgxLCA4NSwgNjUsIDgyLCAxOTcsIDY4LCA3OSwgODUsIDY2LCA3NiwgMTk3LCA4MywgNzMsIDcxLCA3OCwgMTI4LCA2NSwgCisgICAgODIsIDgyLCA3OSwgMjE1LCA2NSwgNjYsIDc5LCA4NiwgNjksIDEyOCwgNjYsIDY5LCA3NiwgNzksIDg3LCAxMjgsIDg2LCAKKyAgICA2NSwgODIsIDczLCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NiwgODIsIDY1LCA3MywgNzYsIDc2LCAxOTcsIDgwLCA2NSwgODQsIAorICAgIDg0LCA2OSwgODIsIDIwNiwgNjYsIDg5LCA5MCwgNjUsIDc4LCA4NCwgNzMsIDc4LCAxOTcsIDY1LCAxMjgsIDY2LCA3NiwgCisgICAgNjUsIDY3LCAyMDMsIDg3LCA3MiwgNzMsIDg0LCAxOTcsIDczLCA4MywgNzksIDc2LCA2NSwgODQsIDY5LCAxOTYsIDg1LCAKKyAgICAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCAyMTAsIDE5NCwgNzUsIDY1LCA4NCwgNjUsIDc1LCA2NSwgNzgsIAorICAgIDE5MywgNzMsIDEyOCwgNzcsIDg5LCA2NSwgNzgsIDc3LCA2NSwgMjEwLCA2OCwgNzksIDIxMiwgNzksIDEyOCwgNzUsIDY1LCAKKyAgICA3OCwgNzEsIDg4LCAyMDEsIDc5LCAxOTgsIDc1LCA3MywgNzUsIDY1LCA3NSwgODUsIDIwMSwgNzcsIDY5LCA3OCwgNjgsIAorICAgIDE5NywgODQsIDczLCA2NiwgNjksIDg0LCA2NSwgMjA2LCA3MiwgNjksIDY1LCA4NiwgMjE3LCA3NywgNjUsIDgyLCA3NSwgCisgICAgMTI4LCA3MywgNzgsIDczLCA4NCwgNzMsIDY1LCAyMDQsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCAyMDQsIDc3LCAKKyAgICA2OSwgNjksIDIwNSwgNjcsIDc5LCA4MCwgODQsIDczLCAxOTUsIDc1LCA3MiwgNzcsIDY5LCAyMTAsIDgyLCA3MywgNzEsIAorICAgIDcyLCA4NCwgODcsIDY1LCA4MiwgNjgsIDIxMSwgNjUsIDY2LCA3OSwgODYsIDE5NywgNjcsIDY1LCA4MiwgODIsIDczLCA2OSwgCisgICAgMjEwLCA4OSwgNjksIDIwMCwgNjcsIDcyLCA2OSwgODIsIDc5LCA3NSwgNjksIDE5NywgNzcsIDc5LCA3OCwgNzEsIDc5LCAKKyAgICA3NiwgNzMsIDY1LCAyMDYsIDgwLCA3NiwgODUsIDIxMSwgNjgsIDY5LCA4NiwgNjUsIDc4LCA2NSwgNzEsIDY1LCA4MiwgCisgICAgMjAxLCA4MywgODEsIDg1LCA2NSwgODIsIDY5LCAxOTYsIDgwLCA3MiwgNjUsIDgzLCA2OSwgNDUsIDE5NywgODMsIDg0LCAKKyAgICA4MiwgNzksIDc1LCA2OSwgMTI4LCA3NiwgNjksIDcwLCA4NCwgODcsIDY1LCA4MiwgNjgsIDIxMSwgODMsIDg5LCA3NywgNjYsIAorICAgIDc5LCA3NiwgMTI4LCA2NiwgNzksIDIxNiwgNzcsIDczLCA2OCwgNjgsIDc2LCAxOTcsIDc5LCA3OCwgNjksIDEyOCwgODQsIAorICAgIDczLCA3NiwgMTk3LCA2OCwgODUsIDgwLCA3NiwgNzksIDg5LCA2NSwgMjA2LCA4NCwgODcsIDc5LCAxMjgsIDgwLCA2NSwgCisgICAgODIsIDY5LCA3OCwgODQsIDcyLCA2OSwgODMsIDczLCA5MCwgNjksIDE5NiwgODQsIDcyLCA2NSwgMjA1LCAyMTMsIDg2LCAKKyAgICA3OSwgNjcsIDY1LCA3NiwgNzMsIDE5NSwgNzQsIDc5LCA3OCwgNzEsIDgzLCA2OSwgNzksIDc4LCAxOTksIDY3LCA3OSwgNzgsIAorICAgIDgzLCA3OSwgNzgsIDY1LCA3OCwgMjEyLCA3OSwgNzgsIDE5NywgNzIsIDY5LCA2NiwgODIsIDY5LCAyMTUsIDc3LCA3MywgCisgICAgNjUsIDIwNywgODUsIDIwOCwgNzEsIDc2LCA2NSwgNzEsIDc5LCA3NiwgNzMsIDg0LCA3MywgMTk1LCA3MiwgNzksIDc5LCAKKyAgICA3NSwgMTI4LCA3MSwgNjksIDc5LCA4MiwgNzEsIDczLCA2NSwgMjA2LCA3OSwgODYsIDY5LCAyMTAsIDg0LCA4NywgMjA3LCAKKyAgICA2OCwgODIsIDY1LCA4NywgNzMsIDc4LCA3MSwgMjExLCA3MiwgNzMsIDcxLCAyMDAsIDcyLCA3NywgNzksIDc4LCAxOTksIAorICAgIDczLCA3OCwgNjgsIDY5LCAyMTYsIDgwLCA2NSwgNzIsIDY1LCA4NywgMjAwLCA4NCwgNzIsIDgyLCA2OSwgMTk3LCA2OCwgCisgICAgNzksIDg3LCAyMDYsIDc2LCA3OSwgMjE1LCA2NywgNzIsIDc5LCA4MywgNjksIDc5LCA3OCwgMTk5LCA3MiwgNjUsIDc2LCAKKyAgICA3MCwgODcsIDczLCA2OCwgODQsIDIwMCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA3MCwgNzMsIDgzLCAyMTIsIDc3LCA2OSwgODIsIAorICAgIDc5LCA3MywgODQsIDczLCAxOTUsIDY2LCA2NSwgNzYsIDczLCA3OCwgNjksIDgzLCAxOTcsIDc3LCA2NSwgODIsIDIwMywgCisgICAgODMsIDY3LCA4MiwgNzMsIDgwLCAyMTIsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAyMDUsIDgwLCA3MiwgNjUsIDgzLCAKKyAgICA2OSwgNDUsIDE5NiwgODQsIDc5LCAxMjgsIDY1LCA3NiwgNjcsIDcyLCA2OSwgNzcsIDczLCA2NywgNjUsIDIwNCwgNjUsIAorICAgIDc2LCA2OSwgMTk4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA3MywgMTk1LCA3NywgNjUsIDc2LCA2NSwgCisgICAgODksIDY1LCA3NiwgNjUsIDIwNSwgODMsIDczLCA3OCwgNzIsIDY1LCA3NiwgMTkzLCA3MiwgNjUsIDEyOCwgNzgsIDg1LCAKKyAgICA3NywgNjksIDgyLCA3MywgMTk1LCA4MiwgMTI4LCA4NCwgNzIsIDgyLCA2OSwgNjksIDEyOCwgNjYsIDY1LCA4MiwgMTI4LCAKKyAgICA3MCwgNzksIDg1LCA4MiwgMTI4LCA4NCwgNzksIDc4LCAxOTcsIDY2LCA4MiwgNjUsIDcyLCA3NywgMjAxLCA3MiwgODUsIAorICAgIDc4LCA3MSwgNjUsIDgyLCA3MywgNjUsIDIwNiwgODQsIDcyLCA4NSwgNzcsIDE5NCwgNjYsIDY1LCA4MiwgMTk0LCA3MiwgCisgICAgNjUsIDIwMCwgNzgsIDc5LCA4MiwgODQsIDIwMCwgNzAsIDg1LCA3NiwgNzYsIDg3LCA3MywgNjgsIDg0LCAyMDAsIDY2LCAKKyAgICA4MiwgNjUsIDY3LCA3NSwgNjksIDg0LCAxMjgsIDY5LCA4MSwgODUsIDY1LCAyMDQsIDc1LCA2NSwgMTI4LCA3NiwgNzMsIAorICAgIDcxLCA3MiwgMjEyLCA3MCwgNzMsIDg2LCA2OSwgMTI4LCA4NCwgNjUsIDE5OSwgNjgsIDc5LCA3NywgNzMsIDc4LCAyMDcsIAorICAgIDcyLCA2NSwgNzYsIDE5OCwgNzYsIDc5LCA3OCwgMTk5LCA2NSwgNjcsIDg1LCA4NCwgNjksIDEyOCwgNzAsIDgyLCA2NSwgCisgICAgNzUsIDg0LCA4NSwgMjEwLCA2NywgNzIsIDY1LCA4MiwgNjUsIDY3LCA4NCwgNjksIDIxMCwgODAsIDY1LCAxMjgsIDgwLCAKKyAgICA3MiwgNjUsIDgzLCA2OSwgNDUsIDE5NSwgNjYsIDcyLCA2NSwgNzMsIDc1LCA4MywgODUsIDc1LCAyMDEsIDY4LCA3OSwgODUsIAorICAgIDY2LCA3NiwgNjksIDQ1LCA4MywgODQsIDgyLCA4NSwgNjcsIDIwMywgNzksIDgwLCA2OSwgMjA2LCA3MiwgNzMsIDgyLCA2NSwgCisgICAgNzEsIDY1LCA3OCwgMTkzLCA3NywgNjUsIDEyOCwgNzcsIDY5LCA2OCwgNzMsIDY1LCAyMDQsIDg0LCA2OSwgNzYsIDg1LCAKICAgICA3MSwgMjEzLCA3NCwgODUsIDc4LCA3MSwgODMsIDY5LCA3OSwgNzgsIDE5OSwgODUsIDgwLCA4NywgNjUsIDgyLCA2OCwgCi0gICAgMjExLCA2NSwgODIsIDc3LCA2OSwgNzgsIDczLCA2NSwgMjA2LCA2NiwgNjksIDc4LCA3MSwgNjUsIDc2LCAyMDEsIDcxLCAKLSAgICA3NiwgNjUsIDcxLCA3OSwgNzYsIDczLCA4NCwgNzMsIDE5NSwgODMsIDcyLCA2NSwgODIsIDY1LCA2OCwgMTkzLCA3OCwgNjksIAotICAgIDcxLCA2NSwgODQsIDczLCA4NiwgMTk3LCA2OCwgNzksIDg3LCA3OCwgODcsIDY1LCA4MiwgNjgsIDIxMSwgNzQsIDY5LCA2OSwgCi0gICAgMjA1LCA4MCwgNjUsIDEyOCwgODMsIDczLCA2OCwgNjgsIDcyLCA2NSwgMjA1LCA2OCwgNzksIDg0LCAyMTEsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgMjAwLCA3NCwgNjUsIDg2LCA2NSwgNzgsIDY5LCA4MywgMTk3LCA2NywgODUsIDgyLCAKLSAgICA4MywgNzMsIDg2LCAxOTcsIDc3LCA2NSwgMTI4LCA3OSwgODIsIDczLCA4OSwgMTkzLCA4MywgMTI4LCA4MywgNzMsIDg4LCAKLSAgICAxMjgsIDg3LCA2OSwgODMsIDg0LCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA4MiwgODUsIDc4LCA3MywgMTk1LCA4OSwgNjUsIAotICAgIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCAxMjgsIDc1LCA2NSwgNzgsIDc4LCA2NSwgNjgsIDE5MywgNzgsIDY1LCAxMjgsIAotICAgIDkwLCA5MCwgODksIDg4LCAxMjgsIDkwLCA5MCwgODksIDg0LCAxMjgsIDkwLCA5MCwgODksIDgyLCA4OCwgMTI4LCA5MCwgCi0gICAgOTAsIDg5LCA4MiwgMTI4LCA5MCwgOTAsIDg5LCA4MCwgMTI4LCA5MCwgOTAsIDg5LCA2NSwgMTI4LCA5MCwgOTAsIDg5LCAKLSAgICAxMjgsIDkwLCA5MCwgODUsIDg4LCAxMjgsIDkwLCA5MCwgODUsIDgyLCA4OCwgMTI4LCA5MCwgOTAsIDg1LCA4MiwgMTI4LCAKLSAgICA5MCwgOTAsIDg1LCA4MCwgMTI4LCA5MCwgOTAsIDg1LCAxMjgsIDkwLCA5MCwgODMsIDg5LCA2NSwgMTI4LCA5MCwgOTAsIAotICAgIDgzLCA2NSwgMTI4LCA5MCwgOTAsIDc5LCA4OCwgMTI4LCA5MCwgOTAsIDc5LCA4MCwgMTI4LCA5MCwgOTAsIDc5LCAxMjgsIAotICAgIDkwLCA5MCwgNzMsIDg4LCAxMjgsIDkwLCA5MCwgNzMsIDg0LCAxMjgsIDkwLCA5MCwgNzMsIDgwLCAxMjgsIDkwLCA5MCwgCi0gICAgNzMsIDY5LCA4OCwgMTI4LCA5MCwgOTAsIDczLCA2OSwgODQsIDEyOCwgOTAsIDkwLCA3MywgNjksIDgwLCAxMjgsIDkwLCAKLSAgICA5MCwgNzMsIDY5LCAxMjgsIDkwLCA5MCwgNzMsIDEyOCwgOTAsIDkwLCA2OSwgODgsIDEyOCwgOTAsIDkwLCA2OSwgODAsIAotICAgIDEyOCwgOTAsIDkwLCA2OSwgNjksIDEyOCwgOTAsIDkwLCA2OSwgMTI4LCA5MCwgOTAsIDY1LCA4OCwgMTI4LCA5MCwgOTAsIAotICAgIDY1LCA4NCwgMTI4LCA5MCwgOTAsIDY1LCA4MCwgMTI4LCA5MCwgOTAsIDY1LCA2NSwgMTI4LCA5MCwgOTAsIDY1LCAxMjgsIAotICAgIDkwLCA4OSwgNzEsIDc5LCA4MywgMTI4LCA5MCwgODcsIDgzLCA4MCwgMTI4LCA5MCwgODcsIDc4LCA3NCwgMTI4LCA5MCwgCi0gICAgODcsIDc4LCA2NiwgODMsIDgwLCAxMjgsIDkwLCA4NywgNzQsIDEyOCwgOTAsIDg3LCAyMDIsIDkwLCA4NywgNjUsIDgyLCAKLSAgICA2NSwgNzUsIDY1LCA4OSwgMTI4LCA5MCwgODcsIDY1LCAxMjgsIDkwLCA4NSwgODQsIDEyOCwgOTAsIDg1LCA3OSwgODgsIAotICAgIDEyOCwgOTAsIDg1LCA3OSwgODAsIDEyOCwgOTAsIDg1LCA3OSwgMTI4LCA5MCwgODUsIDc3LCAxMjgsIDkwLCA4NSwgNjYsIAotICAgIDg1LCA4MiwgMTI4LCA5MCwgODUsIDUzLCAxMjgsIDkwLCA4NSwgMTgxLCA5MCwgMjEzLCA5MCwgODMsIDcyLCA2NSwgMTI4LCAKLSAgICA5MCwgODIsIDY1LCAxMjgsIDkwLCA4MSwgNjUsIDgwLCA3MiwgMTkzLCA5MCwgNzksIDg0LCAxMjgsIDkwLCA3OSwgNzksIAotICAgIDEyOCwgOTAsIDc5LCA2NSwgMTI4LCA5MCwgNzYsIDY1LCA3NywgMTkzLCA5MCwgNzYsIDY1LCAxMjgsIDkwLCA3NiwgMTkzLCAKLSAgICA5MCwgNzQsIDY5LCAxMjgsIDkwLCA3MywgOTAsIDUwLCAxMjgsIDkwLCA3MywgODEsIDY1LCA2NSwgMTI4LCA5MCwgNzMsIAotICAgIDgwLCA4MCwgNjksIDgyLCA0NSwgNzcsIDc5LCA4NSwgODQsIDIwMCwgOTAsIDczLCA3OCwgNzksIDgyLCAxMjgsIDkwLCA3MywgCi0gICAgNzYsIDY4LCA2OSwgMTI4LCA5MCwgNzMsIDcxLCA5MCwgNjUsIDE5OSwgOTAsIDczLCA3MSwgMTI4LCA5MCwgNzMsIDY4LCAKLSAgICAxOTMsIDkwLCA3MywgNjYsIDEyOCwgOTAsIDczLCAxOTQsIDkwLCA3MywgNTEsIDEyOCwgOTAsIDIwMSwgOTAsIDcyLCA4OSwgCi0gICAgODgsIDEyOCwgOTAsIDcyLCA4OSwgODQsIDEyOCwgOTAsIDcyLCA4OSwgODIsIDg4LCAxMjgsIDkwLCA3MiwgODksIDgyLCAKLSAgICAxMjgsIDkwLCA3MiwgODksIDgwLCAxMjgsIDkwLCA3MiwgODksIDEyOCwgOTAsIDcyLCA4NywgNjksIDEyOCwgOTAsIDcyLCAKLSAgICA4NywgNjUsIDEyOCwgOTAsIDcyLCA4NSwgODgsIDEyOCwgOTAsIDcyLCA4NSwgODQsIDEyOCwgOTAsIDcyLCA4NSwgODIsIAotICAgIDg4LCAxMjgsIDkwLCA3MiwgODUsIDgyLCAxMjgsIDkwLCA3MiwgODUsIDgwLCAxMjgsIDkwLCA3MiwgODUsIDc5LCA4OCwgCi0gICAgMTI4LCA5MCwgNzIsIDg1LCA3OSwgODAsIDEyOCwgOTAsIDcyLCA4NSwgNzksIDEyOCwgOTAsIDcyLCA4NSwgMTI4LCA5MCwgCi0gICAgNzIsIDc5LCA4OCwgMTI4LCA5MCwgNzIsIDc5LCA4NCwgMTI4LCA5MCwgNzIsIDc5LCA4MCwgMTI4LCA5MCwgNzIsIDc5LCAKLSAgICA3OSwgMTI4LCA5MCwgNzIsIDc5LCA3MywgMTI4LCA5MCwgNzIsIDc5LCAxMjgsIDkwLCA3MiwgNzMsIDg2LCA2OSwgODQsIAotICAgIDY5LCAxMjgsIDkwLCA3MiwgNzMsIDc2LCAxMjgsIDkwLCA3MiwgNzMsIDEyOCwgOTAsIDcyLCA2OSwgODgsIDEyOCwgOTAsIAotICAgIDcyLCA2OSwgODQsIDEyOCwgOTAsIDcyLCA2OSwgODAsIDEyOCwgOTAsIDcyLCA2OSwgNjksIDEyOCwgOTAsIDcyLCA2OSwgCi0gICAgMTI4LCA5MCwgNzIsIDE5NywgOTAsIDcyLCA2NSwgODksIDczLCA3OCwgMTI4LCA5MCwgNzIsIDY1LCA4OCwgMTI4LCA5MCwgCi0gICAgNzIsIDY1LCA4NCwgMTI4LCA5MCwgNzIsIDY1LCA4MiwgMTI4LCA5MCwgNzIsIDY1LCA4MCwgMTI4LCA5MCwgNzIsIDY1LCAKLSAgICA3MywgNzgsIDEyOCwgOTAsIDcyLCA2NSwgNjUsIDEyOCwgOTAsIDcyLCA2NSwgMTI4LCA5MCwgNzIsIDEyOCwgOTAsIDY5LCAKLSAgICA4NCwgNjUsIDEyOCwgOTAsIDY5LCA4MiwgNzksIDEyOCwgOTAsIDY5LCA4MiwgMjA3LCA5MCwgNjksIDc4LCAxMjgsIDkwLCAKLSAgICA2OSwgNzcsIDc2LCA4OSwgNjUsIDEyOCwgOTAsIDY5LCA3NywgNzYsIDc0LCA2NSwgMTI4LCA5MCwgNjksIDUwLCAxMjgsIAotICAgIDkwLCAxOTcsIDkwLCA2NSwgODksIDc4LCAxMjgsIDkwLCA2NSwgODksIDczLCA3OCwgMTI4LCA5MCwgNjUsIDg5LCA3MywgCi0gICAgMjA2LCA5MCwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgOTAsIDY1LCA4NCwgNjUsIDEyOCwgOTAsIDY1LCAKLSAgICA4MiwgODEsIDY1LCAxMjgsIDkwLCA2NSwgODIsIDc2LCAxMjgsIDkwLCA2NSwgODEsIDY5LCAxOTgsIDkwLCA2NSwgNzcsIAotICAgIDg4LCAxMjgsIDkwLCA2NSwgMjA0LCA5MCwgNjUsIDczLCA3OCwgMTI4LCA5MCwgNjUsIDczLCAyMDYsIDkwLCA2NSwgNzMsIAotICAgIDEyOCwgOTAsIDY1LCA3MiwgMTI4LCA5MCwgNjUsIDIwMCwgOTAsIDY1LCA3MSwgMTI4LCA5MCwgNjUsIDY5LCA3MCwgMTI4LCAKLSAgICA5MCwgNjUsIDU1LCAxMjgsIDkwLCAxOTMsIDkwLCA0OCwgNDksIDU0LCA3MiwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNzEsIAotICAgIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDcwLCAxMjgsIDkwLCA0OCwgNDksIDU0LCA2OSwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgCi0gICAgNjgsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDY3LCAxMjgsIDkwLCA0OCwgNDksIDU0LCA2NiwgMTI4LCA5MCwgNDgsIDQ5LCAKLSAgICA1NCwgNjUsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDczLCAxMjgsIDkwLCA0OCwgNDksIAotICAgIDUzLCA3MiwgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNzEsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDcwLCAxMjgsIDkwLCA0OCwgCi0gICAgNDksIDUzLCA2OSwgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNjgsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDY3LCAxMjgsIDkwLCAKLSAgICA0OCwgNDksIDUzLCA2NiwgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNjUsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDEyOCwgOTAsIAotICAgIDQ4LCA0OSwgNTIsIDEyOCwgOTAsIDQ4LCA0OSwgNTEsIDEyOCwgOTAsIDQ4LCA0OSwgNTAsIDEyOCwgOTAsIDQ4LCA0OSwgCi0gICAgNDksIDEyOCwgOTAsIDQ4LCA0OSwgNDgsIDEyOCwgOTAsIDQ4LCA0OCwgNTcsIDEyOCwgOTAsIDQ4LCA0OCwgNTYsIDEyOCwgCi0gICAgOTAsIDQ4LCA0OCwgNTUsIDEyOCwgOTAsIDQ4LCA0OCwgNTQsIDEyOCwgOTAsIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDkwLCAKLSAgICA0OCwgNDgsIDUzLCAxMjgsIDkwLCA0OCwgNDgsIDUyLCA2NSwgMTI4LCA5MCwgNDgsIDQ4LCA1MiwgMTI4LCA5MCwgNDgsIAotICAgIDQ4LCA1MSwgNjYsIDEyOCwgOTAsIDQ4LCA0OCwgNTEsIDY1LCAxMjgsIDkwLCA0OCwgNDgsIDUxLCAxMjgsIDkwLCA0OCwgCi0gICAgNDgsIDUwLCA2OCwgMTI4LCA5MCwgNDgsIDQ4LCA1MCwgNjcsIDEyOCwgOTAsIDQ4LCA0OCwgNTAsIDY2LCAxMjgsIDkwLCAKLSAgICA0OCwgNDgsIDUwLCA2NSwgMTI4LCA5MCwgNDgsIDQ4LCA1MCwgMTI4LCA5MCwgNDgsIDQ4LCA0OSwgMTI4LCA5MCwgMTI4LCAKLSAgICAyMTgsIDg5LCA4OSwgODgsIDEyOCwgODksIDg5LCA4NCwgMTI4LCA4OSwgODksIDgyLCA4OCwgMTI4LCA4OSwgODksIDgyLCAKLSAgICAxMjgsIDg5LCA4OSwgODAsIDEyOCwgODksIDg5LCA2OSwgMTI4LCA4OSwgODksIDY1LCA2NSwgMTI4LCA4OSwgODksIDY1LCAKLSAgICAxMjgsIDg5LCA4OSwgMTI4LCA4OSwgODcsIDc5LCA3OSwgMTI4LCA4OSwgODcsIDc5LCAxMjgsIDg5LCA4NywgNzMsIDczLCAKLSAgICAxMjgsIDg5LCA4NywgNzMsIDEyOCwgODksIDg3LCA2OSwgMTI4LCA4OSwgODcsIDY1LCA2NSwgMTI4LCA4OSwgODcsIDY1LCAKLSAgICAxMjgsIDg5LCA4NiwgMTI4LCA4OSwgODUsIDg4LCAxMjgsIDg5LCA4NSwgODcsIDc5LCA4MSwgMTI4LCA4OSwgODUsIDg1LCAKLSAgICA3NSwgNjUsIDc2LCA2OSwgNjUsIDgwLCA3MywgNzgsIDg0LCA4NSwgMTI4LCA4OSwgODUsIDg1LCAxMjgsIDg5LCA4NSwgODQsIAotICAgIDEyOCwgODksIDg1LCA4MywgMTI4LCA4OSwgODUsIDIxMSwgODksIDg1LCA4MiwgODgsIDEyOCwgODksIDg1LCA4MiwgMTI4LCAKLSAgICA4OSwgODUsIDgxLCAxMjgsIDg5LCA4NSwgMjA5LCA4OSwgODUsIDgwLCAxMjgsIDg5LCA4NSwgNzksIDg4LCAxMjgsIDg5LCAKLSAgICA4NSwgNzksIDg0LCAxMjgsIDg5LCA4NSwgNzksIDgwLCAxMjgsIDg5LCA4NSwgNzksIDc3LCAxMjgsIDg5LCA4NSwgNzksIAotICAgIDEyOCwgODksIDg1LCA3OCwgMTI4LCA4OSwgODUsIDc3LCAxMjgsIDg5LCA4NSwgNzQsIDEyOCwgODksIDg1LCA2OSwgODEsIAotICAgIDEyOCwgODksIDg1LCA2OSwgMTI4LCA4OSwgODUsIDY4LCA3MiwgMTI4LCA4OSwgODUsIDY4LCAyMDAsIDg5LCA4NSwgNjUsIAotICAgIDc4LCAxMjgsIDg5LCA4NSwgNjUsIDY5LCA3OCwgMTI4LCA4OSwgODUsIDQ1LCA4OSwgNjksIDc5LCAxMjgsIDg5LCA4NSwgCi0gICAgNDUsIDg5LCA2OSwgMTI4LCA4OSwgODUsIDQ1LCA4NSwgMTI4LCA4OSwgODUsIDQ1LCA3OSwgMTI4LCA4OSwgODUsIDQ1LCAKLSAgICA3MywgMTI4LCA4OSwgODUsIDQ1LCA2OSwgNzksIDEyOCwgODksIDg1LCA0NSwgNjksIDEyOCwgODksIDg1LCA0NSwgNjUsIAotICAgIDY5LCAxMjgsIDg5LCA4NSwgNDUsIDY1LCAxMjgsIDg5LCA4NSwgMTI4LCA4OSwgMjEzLCA4OSwgODIsIDg5LCAxMjgsIDg5LCAKLSAgICA4MCwgODMsIDczLCA3NiwgNzMsIDEyOCwgODksIDgwLCA3OSwgODIsIDgyLCA3OSwgNzMsIDEyOCwgODksIDgwLCA3OSwgNzUsIAotICAgIDgyLCA3MywgODMsIDczLCA4MywgMTI4LCA4OSwgODAsIDc5LCA3NSwgODIsIDczLCA4MywgNzMsIDIxMSwgODksIDgwLCA3OSwgCi0gICAgNzEsIDY5LCA3MSwgODIsIDY1LCA3NywgNzcsIDY5LCA3OCwgNzMsIDEyOCwgODksIDc5LCA4OSwgMTI4LCA4OSwgNzksIDg4LCAKLSAgICAxMjgsIDg5LCA3OSwgODcsIDY4LCAxMjgsIDg5LCA3OSwgODUsIDg0LCA3MiwgNzAsIDg1LCA3NiwgNzgsIDY5LCA4MywgODMsIAotICAgIDEyOCwgODksIDc5LCA4NSwgODQsIDcyLCA3MCwgODUsIDIwNCwgODksIDc5LCA4NCwgMTI4LCA4OSwgNzksIDgyLCA3MywgCi0gICAgMTI4LCA4OSwgNzksIDgxLCAxMjgsIDg5LCA3OSwgMjA5LCA4OSwgNzksIDgwLCAxMjgsIDg5LCA3OSwgNzksIDEyOCwgODksIAotICAgIDc5LCA3NywgNzksIDEyOCwgODksIDc5LCA3MSwgNzIsIDEyOCwgODksIDc5LCA2OCwgNzIsIDEyOCwgODksIDc5LCA2OCwgCi0gICAgMTI4LCA4OSwgNzksIDE5NiwgODksIDc5LCA2NSwgMTI4LCA4OSwgNzksIDQ1LCA4OSwgNjksIDc5LCAxMjgsIDg5LCA3OSwgCi0gICAgNDUsIDg5LCA2NSwgNjksIDEyOCwgODksIDc5LCA0NSwgODksIDY1LCAxMjgsIDg5LCA3OSwgNDUsIDc5LCAxMjgsIDg5LCAKLSAgICA3OSwgNDUsIDczLCAxMjgsIDg5LCA3OSwgNDUsIDY5LCA3OSwgMTI4LCA4OSwgNzksIDQ1LCA2NSwgNjksIDEyOCwgODksIAotICAgIDc5LCA0NSwgNjUsIDEyOCwgODksIDc5LCAxMjgsIDg5LCAyMDcsIDg5LCA3MywgOTAsIDY5LCA4NCwgMTI4LCA4OSwgNzMsIAotICAgIDg4LCAxMjgsIDg5LCA3MywgODcsIDc4LCAxMjgsIDg5LCA3MywgODQsIDEyOCwgODksIDczLCA4MCwgMTI4LCA4OSwgNzMsIAotICAgIDc4LCA3MSwgMTI4LCA4OSwgNzMsIDczLCAxMjgsIDg5LCA3MywgMTk5LCA4OSwgNzMsIDY5LCA4OCwgMTI4LCA4OSwgNzMsIAotICAgIDY5LCA4NCwgMTI4LCA4OSwgNzMsIDY5LCA4MCwgMTI4LCA4OSwgNzMsIDY5LCA2OSwgMTI4LCA4OSwgNzMsIDY5LCAxMjgsIAotICAgIDg5LCA3MywgNjgsIDY4LCA3MywgODMsIDIwMCwgODksIDczLCA0NSwgODUsIDEyOCwgODksIDczLCAxMjgsIDg5LCA3MCwgCi0gICAgNjksIDgzLCA3MywgODMsIDEyOCwgODksIDcwLCA2OSwgODMsIDczLCAyMTEsIDg5LCA3MCwgNjksIDIwNiwgODksIDY5LCAKLSAgICA4OSwgMTI4LCA4OSwgNjksIDg3LCAxMjgsIDg5LCA2OSwgODUsIDg4LCAxMjgsIDg5LCA2OSwgODUsIDgyLCA2NSwgNjksIAotICAgIDEyOCwgODksIDY5LCA4NSwgODEsIDEyOCwgODksIDY5LCA4NSwgNzcsIDEyOCwgODksIDY5LCA4NSwgNjUsIDY5LCA4NCwgCi0gICAgMTI4LCA4OSwgNjksIDg1LCA2NSwgNjksIDEyOCwgODksIDY5LCA4NCwgNzMsIDg2LCAxMjgsIDg5LCA2OSwgODMsIDg0LCAKLSAgICA4NSwgMTI4LCA4OSwgNjksIDgzLCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4OSwgNjksIAotICAgIDgzLCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4OSwgNjksIDgzLCAKLSAgICA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgCi0gICAgNzgsIDcxLCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDg5LCA2OSwgODMsIDczLCA2OSwgODUsIDc4LCA3MSwgMTI4LCAKLSAgICA4OSwgNjksIDgyLCA4NSwgMTI4LCA4OSwgNjksIDgyLCAyMTMsIDg5LCA2OSwgODIsIDczLCAxMjgsIDg5LCA2OSwgODIsIAotICAgIDY1LCAyMDAsIDg5LCA2OSwgODIsIDEyOCwgODksIDY5LCA3OSwgODIsIDczLCA3OCwgNzIsIDczLCA2OSwgODUsIDcyLCAKLSAgICAxMjgsIDg5LCA2OSwgNzksIDQ1LCA4OSwgNjUsIDEyOCwgODksIDY5LCA3OSwgNDUsIDg1LCAxMjgsIDg5LCA2OSwgNzksIAotICAgIDQ1LCA3OSwgMTI4LCA4OSwgNjksIDc4LCA3MywgODMsIDY5LCAyMDEsIDg5LCA2OSwgNzgsIDY1LCA4MCwgMTI4LCA4OSwgCi0gICAgNjksIDc4LCAxMjgsIDg5LCA2OSwgMjA2LCA4OSwgNjksIDc2LCA3NiwgNzksIDg3LCAxMjgsIDg5LCA2OSwgNzYsIDc2LCAKLSAgICA3OSwgMjE1LCA4OSwgNjksIDczLCA3OCwgMTI4LCA4OSwgNjksIDcyLCAxMjgsIDg5LCA2OSwgNjksIDcxLCAxMjgsIDg5LCAKLSAgICA2OSwgNjksIDEyOCwgODksIDY5LCA2NSwgMjEwLCA4OSwgNjksIDY1LCAxMjgsIDg5LCA2NSwgOTAsIDkwLCAxMjgsIDg5LCAKLSAgICA2NSwgOTAsIDcyLCAxMjgsIDg5LCA2NSwgOTAsIDEyOCwgODksIDY1LCA4OSwgNjgsIDEyOCwgODksIDY1LCA4OSwgNjUsIAotICAgIDc4LCA3OCwgNjUsIDEyOCwgODksIDY1LCA4OSwgMTI4LCA4OSwgNjUsIDg3LCA3OCwgMTI4LCA4OSwgNjUsIDg3LCAxMjgsIAotICAgIDg5LCA2NSwgODYsIDEyOCwgODksIDY1LCA4NSwgMTI4LCA4OSwgNjUsIDg0LCA4NCwgMTI4LCA4OSwgNjUsIDg0LCA3MywgCi0gICAgMTI4LCA4OSwgNjUsIDg0LCA3MiwgMTI4LCA4OSwgNjUsIDg0LCAxMjgsIDg5LCA2NSwgODMsIDgzLCAxMjgsIDg5LCA2NSwgCi0gICAgODMsIDcyLCAxMjgsIDg5LCA2NSwgODMsIDEyOCwgODksIDY1LCA4MiwgODIsIDEyOCwgODksIDY1LCA4MiwgMTI4LCA4OSwgCi0gICAgNjUsIDIxMCwgODksIDY1LCA4MSwgMTI4LCA4OSwgNjUsIDgwLCAxMjgsIDg5LCA2NSwgNzgsIDgzLCA2NSwgODksIDY1LCAKLSAgICAxMjgsIDg5LCA2NSwgNzgsIDcxLCAxMjgsIDg5LCA2NSwgNzgsIDE5OSwgODksIDY1LCA3OCwgMTI4LCA4OSwgNjUsIDc3LCAKLSAgICA3OSwgNzUsIDEyOCwgODksIDY1LCA3NywgNjUsIDc1LCA3NSwgNjUsIDc4LCAxMjgsIDg5LCA2NSwgNzcsIDEyOCwgODksIAotICAgIDY1LCA3NiwgMTI4LCA4OSwgNjUsIDc1LCA3MiwgNzIsIDEyOCwgODksIDY1LCA3NSwgNzIsIDEyOCwgODksIDY1LCA3NSwgCi0gICAgNjUsIDgzLCA3MiwgMTI4LCA4OSwgNjUsIDc1LCAxMjgsIDg5LCA2NSwgNzQsIDg1LCA4MiwgODYsIDY5LCA2OCwgNzMsIAotICAgIDE5NSwgODksIDY1LCA3NCwgMTI4LCA4OSwgNjUsIDczLCAxMjgsIDg5LCA2NSwgNzIsIDcyLCAxMjgsIDg5LCA2NSwgNzIsIAotICAgIDEyOCwgODksIDY1LCA3MSwgNzgsIDEyOCwgODksIDY1LCA3MSwgNzIsIDcyLCAxMjgsIDg5LCA2NSwgNzEsIDcyLCAxMjgsIAotICAgIDg5LCA2NSwgNzEsIDEyOCwgODksIDY1LCA3MCwgMjEzLCA4OSwgNjUsIDcwLCAxMjgsIDg5LCA2NSwgNjksIDc3LCA3NywgCi0gICAgNjUsIDY5LCAxMjgsIDg5LCA2NSwgNjgsIDcyLCAxMjgsIDg5LCA2NSwgNjgsIDY4LCA3MiwgMTI4LCA4OSwgNjUsIDY4LCAKLSAgICA2OCwgMTI4LCA4OSwgNjUsIDY4LCAxMjgsIDg5LCA2NSwgNjcsIDcyLCAxMjgsIDg5LCA2NSwgNjYsIDcyLCAxMjgsIDg5LCAKLSAgICA2NSwgNjYsIDEyOCwgODksIDY1LCA2NSwgODIsIDg1LCAxMjgsIDg5LCA2NSwgNjUsIDczLCAxMjgsIDg5LCA2NSwgNjUsIAotICAgIDY4LCA3OSwgMTI4LCA4OSwgNjUsIDQ1LCA4OSwgNzksIDEyOCwgODksIDY1LCA0NSwgODUsIDEyOCwgODksIDY1LCA0NSwgCi0gICAgNzksIDEyOCwgODksIDQ4LCA0OCwgNTYsIDEyOCwgODksIDQ4LCA0OCwgNTUsIDEyOCwgODksIDQ4LCA0OCwgNTQsIDEyOCwgCi0gICAgODksIDQ4LCA0OCwgNTMsIDEyOCwgODksIDQ4LCA0OCwgNTIsIDEyOCwgODksIDQ4LCA0OCwgNTEsIDEyOCwgODksIDQ4LCAKLSAgICA0OCwgNTAsIDEyOCwgODksIDQ4LCA0OCwgNDksIDY1LCAxMjgsIDg5LCA0OCwgNDgsIDQ5LCAxMjgsIDg5LCA0NSwgNjcsIAotICAgIDgyLCA2OSwgMTk3LCA4OCwgODksIDg4LCAxMjgsIDg4LCA4OSwgODUsIDEyOCwgODgsIDg5LCA4NCwgMTI4LCA4OCwgODksIAotICAgIDgyLCA4OCwgMTI4LCA4OCwgODksIDgyLCAxMjgsIDg4LCA4OSwgODAsIDEyOCwgODgsIDg5LCA3OSwgNzksIDc0LCAxMjgsIAotICAgIDg4LCA4OSwgNzksIDc5LCAxMjgsIDg4LCA4OSwgNzksIDEyOCwgODgsIDg5LCA3MywgMTI4LCA4OCwgODksIDY5LCA2OSwgCi0gICAgMjA1LCA4OCwgODksIDY5LCA2OSwgMTI4LCA4OCwgODksIDY5LCAxMjgsIDg4LCA4OSwgNjUsIDY1LCAxMjgsIDg4LCA4OSwgCi0gICAgNjUsIDEyOCwgODgsIDg5LCAxMjgsIDg4LCA4NywgNzMsIDEyOCwgODgsIDg3LCA2OSwgNjksIDEyOCwgODgsIDg3LCA2OSwgCi0gICAgMTI4LCA4OCwgODcsIDY1LCA2NSwgMTI4LCA4OCwgODcsIDY1LCAxMjgsIDg4LCA4NywgMTI4LCA4OCwgODYsIDY5LCAxMjgsIAotICAgIDg4LCA4NiwgNjUsIDEyOCwgODgsIDg1LCA3OSwgODgsIDEyOCwgODgsIDg1LCA3OSwgMTI4LCA4OCwgODUsIDEyOCwgODgsIAotICAgIDgzLCA3MiwgNjUsIDY1LCA4OSwgNjUsIDg0LCA3MiwgNzMsIDg5LCA2NSwgMTI4LCA4OCwgNzksIDg4LCAxMjgsIDg4LCA3OSwgCi0gICAgODQsIDEyOCwgODgsIDc5LCA4MiwgMTI4LCA4OCwgNzksIDgwLCA3MiwgMTI4LCA4OCwgNzksIDgwLCAxMjgsIDg4LCA3OSwgCi0gICAgNjUsIDEyOCwgODgsIDc5LCAxMjgsIDg4LCA3MywgODgsIDEyOCwgODgsIDczLCA4NCwgMTI4LCA4OCwgNzMsIDgyLCA3OSwgCi0gICAgMjA2LCA4OCwgNzMsIDgwLCAxMjgsIDg4LCA3MywgNjksIDg4LCAxMjgsIDg4LCA3MywgNjksIDg0LCAxMjgsIDg4LCA3MywgCi0gICAgNjksIDgwLCAxMjgsIDg4LCA3MywgNjksIDEyOCwgODgsIDczLCA2NSwgNjYsIDEyOCwgODgsIDczLCAxMjgsIDg4LCA3MSwgCi0gICAgMTI4LCA4OCwgNjksIDg5LCA3OCwgMTI4LCA4OCwgNjksIDgzLCA4NCwgNjksIDIxMSwgODgsIDY5LCA3MiwgMTI4LCA4OCwgCi0gICAgNjksIDY5LCAxMjgsIDg4LCA2OSwgMTI4LCA4OCwgNjUsIDg1LCA4MywgMTI4LCA4OCwgNjUsIDg1LCAxMjgsIDg4LCA2NSwgCi0gICAgODAsIDcyLCAxMjgsIDg4LCA2NSwgNzgsIDEyOCwgODgsIDY1LCA2NSwgMTI4LCA4OCwgNjUsIDEyOCwgODgsIDQ4LCA0OCwgCi0gICAgNTYsIDY1LCAxMjgsIDg4LCA0OCwgNDgsIDU2LCAxMjgsIDg4LCA0OCwgNDgsIDU1LCAxMjgsIDg4LCA0OCwgNDgsIDU0LCAKLSAgICA2NSwgMTI4LCA4OCwgNDgsIDQ4LCA1NCwgMTI4LCA4OCwgNDgsIDQ4LCA1MywgMTI4LCA4OCwgNDgsIDQ4LCA1MiwgNjYsIAotICAgIDEyOCwgODgsIDQ4LCA0OCwgNTIsIDY1LCAxMjgsIDg4LCA0OCwgNDgsIDUyLCAxMjgsIDg4LCA0OCwgNDgsIDUxLCAxMjgsIAotICAgIDg4LCA0OCwgNDgsIDUwLCAxMjgsIDg4LCA0OCwgNDgsIDQ5LCAxMjgsIDg4LCA0NSwgMjE2LCA4NywgOTAsIDEyOCwgODcsIAotICAgIDg5LCA3OCwgNzgsIDEyOCwgODcsIDg5LCA3OCwgMjA2LCA4NywgODYsIDczLCAxMjgsIDg3LCA4NiwgNjksIDEyOCwgODcsIAotICAgIDg2LCA2NSwgMTI4LCA4NywgODYsIDEyOCwgODcsIDg1LCA4MCwgMTI4LCA4NywgODUsIDc5LCA4OCwgMTI4LCA4NywgODUsIAotICAgIDc5LCA4MCwgMTI4LCA4NywgODUsIDc5LCAxMjgsIDg3LCA4NSwgNzgsIDc0LCAyMDcsIDg3LCA4NSwgNzgsIDEyOCwgODcsIAotICAgIDg1LCA3NiwgODUsIDEyOCwgODcsIDg1LCA3NiwgMjEzLCA4NywgODUsIDczLCAxMjgsIDg3LCA4NSwgNjksIDEyOCwgODcsIAotICAgIDg1LCA2NSwgNjksIDg0LCAxMjgsIDg3LCA4NSwgNjUsIDY5LCA3OCwgMTI4LCA4NywgODUsIDEyOCwgODcsIDgyLCAyMTcsIAotICAgIDg3LCA4MiwgNzksIDc4LCA3MSwgMTI4LCA4NywgODIsIDczLCA4MywgMjEyLCA4NywgODIsIDczLCA3OCwgNzUsIDc2LCA2OSwgCi0gICAgODMsIDEyOCwgODcsIDgyLCA3MywgNzgsIDc1LCA3NiwgNjksIDIxMSwgODcsIDgyLCA3MywgNzgsIDc1LCA3NiwgNjksIDY4LCAKLSAgICAxMjgsIDg3LCA4MiwgNjksIDc4LCA2NywgNzIsIDEyOCwgODcsIDgyLCA2OSwgNjUsIDg0LCAyMDAsIDg3LCA4MiwgNjUsIAotICAgIDgwLCA4MCwgNjksIDE5NiwgODcsIDgyLCA2NSwgODAsIDEyOCwgODcsIDc5LCA4OCwgMTI4LCA4NywgNzksIDg3LCAxMjgsIAotICAgIDg3LCA3OSwgODIsIDgzLCA3MiwgNzMsIDgwLCAxMjgsIDg3LCA3OSwgODIsIDgyLCA3MywgNjksIDE5NiwgODcsIDc5LCA4MiwgCi0gICAgNzYsIDE5NiwgODcsIDc5LCA4MiwgNzUsIDY5LCA4MiwgMTI4LCA4NywgNzksIDgyLCA3NSwgMTI4LCA4NywgNzksIDgyLCAKLSAgICAyMDMsIDg3LCA3OSwgODIsIDY4LCA4MywgODAsIDY1LCA2NywgNjksIDEyOCwgODcsIDc5LCA4MiwgMTk2LCA4NywgNzksIAotICAgIDgwLCAxMjgsIDg3LCA3OSwgNzksIDc4LCAxMjgsIDg3LCA3OSwgNzksIDc2LCAxMjgsIDg3LCA3OSwgNzksIDY4LCA4MywgCi0gICAgNDUsIDY3LCA4MiwgNjksIDE5NywgODcsIDc5LCA3OSwgNjgsIDEyOCwgODcsIDc5LCA3OCwgMTI4LCA4NywgNzksIDIwNiwgCi0gICAgODcsIDc5LCA3NywgNjksIDc4LCAyMTEsIDg3LCA3OSwgNzcsIDY5LCAyMDYsIDg3LCA3OSwgNzcsIDY1LCA3OCwgMjExLCAKLSAgICA4NywgNzksIDc3LCA2NSwgNzgsIDEyOCwgODcsIDc5LCA3NywgNjUsIDIwNiwgODcsIDc5LCA3NiwgNzksIDgzLCA3OSwgCi0gICAgMTI4LCA4NywgNzksIDc2LCAxOTgsIDg3LCA3OSwgNjksIDEyOCwgODcsIDc5LCA2NSwgMTI4LCA4NywgNzMsIDg0LCA3MiwgCi0gICAgNzksIDg1LCAyMTIsIDg3LCA3MywgODQsIDcyLCA3MywgNzgsIDEyOCwgODcsIDczLCA4NCwgNzIsIDczLCAyMDYsIDg3LCAKLSAgICA3MywgODIsIDY5LCAxOTYsIDg3LCA3MywgNzgsIDg0LCA2OSwgODIsIDEyOCwgODcsIDczLCA3OCwgNzUsIDczLCA3OCwgCi0gICAgMTk5LCA4NywgNzMsIDc4LCA3NSwgMTI4LCA4NywgNzMsIDc4LCA3NCwgNjUsIDEyOCwgODcsIDczLCA3OCwgNzEsIDgzLCAKLSAgICAxMjgsIDg3LCA3MywgNzgsIDY5LCAxMjgsIDg3LCA3MywgNzgsIDE5NywgODcsIDczLCA3OCwgNjgsIDg1LCAxMjgsIDg3LCAKLSAgICA3MywgNzgsIDY4LCA3OSwgODcsIDEyOCwgODcsIDczLCA3OCwgNjgsIDEyOCwgODcsIDczLCA3OCwgMTk2LCA4NywgNzMsIAotICAgIDc4LCAxMjgsIDg3LCA3MywgNzEsIDc4LCA4OSwgNjUsIDc4LCAxMjgsIDg3LCA3MywgNzEsIDcxLCA3NiwgMjE3LCA4NywgCi0gICAgNzMsIDcxLCA3MSwgNzYsIDY5LCA4MywgMTI4LCA4NywgNzMsIDY4LCA4NCwgNzIsIDEyOCwgODcsIDczLCA2OCwgNjksIDc4LCAKLSAgICA3MywgNzgsIDE5OSwgODcsIDczLCA2OCwgNjksIDQ1LCA3MiwgNjksIDY1LCA2OCwgNjksIDE5NiwgODcsIDczLCA2OCwgCi0gICAgMTk3LCA4NywgNzMsIDY1LCA3OCwgNzEsIDg3LCA2NSwgNjUsIDc1LCAxMjgsIDg3LCA3MywgNjUsIDc4LCA3MSwgMTI4LCAKLSAgICA4NywgNzIsIDc5LCA3NiwgMTk3LCA4NywgNzIsIDczLCA4NCwgNjksIDQ1LCA3MCwgNjksIDY1LCA4NCwgNzIsIDY5LCA4MiwgCi0gICAgNjksIDE5NiwgODcsIDcyLCA3MywgODQsIDY5LCAxMjgsIDg3LCA3MiwgNjksIDY5LCA3NiwgNjksIDE5NiwgODcsIDcyLCAKLSAgICA2OSwgNjksIDc2LCA2NywgNzIsIDY1LCA3MywgMjEwLCA4NywgNzIsIDY5LCA2OSwgNzYsIDEyOCwgODcsIDcyLCA2OSwgNjksIAotICAgIDIwNCwgODcsIDcyLCA2OSwgNjUsIDg0LCAxMjgsIDg3LCA3MiwgNjUsIDc2LCA2OSwgMTI4LCA4NywgNzIsIDEyOCwgODcsIAotICAgIDcxLCAxMjgsIDg3LCA2OSwgODgsIDEyOCwgODcsIDY5LCA4NSwgODgsIDEyOCwgODcsIDY5LCA4MywgODQsIDY5LCA4MiwgCi0gICAgMjA2LCA4NywgNjksIDgzLCA4NCwgMTI4LCA4NywgNjksIDgzLCAyMTIsIDg3LCA2OSwgODAsIDEyOCwgODcsIDY5LCA3OSwgCi0gICAgMTI4LCA4NywgNjksIDc4LCAxMjgsIDg3LCA2OSwgNzYsIDc2LCAxMjgsIDg3LCA2OSwgNzMsIDcxLCA3MiwgMjEyLCA4NywgCi0gICAgNjksIDczLCA2OSwgODIsIDgzLCA4NCwgODIsIDY1LCA4MywgMjExLCA4NywgNjksIDczLCAxMjgsIDg3LCA2OSwgNjksIDc4LCAKKyAgICAyMTEsIDg5LCA2NSwgMTI4LCA2NSwgODIsIDc3LCA2OSwgNzgsIDczLCA2NSwgMjA2LCA2NiwgNjksIDc4LCA3MSwgNjUsIAorICAgIDc2LCAyMDEsIDgzLCA3MiwgNjUsIDgyLCA2NSwgNjgsIDE5MywgODMsIDczLCA4OCwgMTI4LCA3OCwgNjUsIDEyOCwgNzgsIAorICAgIDY5LCA3MSwgNjUsIDg0LCA3MywgODYsIDE5NywgNjgsIDc5LCA4NCwgMjExLCA2OCwgNzksIDg3LCA3OCwgODcsIDY1LCA4MiwgCisgICAgNjgsIDIxMSwgNjksIDczLCA3MSwgNzIsIDg0LCAxMjgsIDc0LCA2OSwgNjksIDIwNSwgNzYsIDY1LCAxMjgsIDc4LCA2OSwgCisgICAgODcsIDE5MywgODMsIDczLCA2OCwgNjgsIDcyLCA2NSwgMjA1LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAorICAgIDIwMCwgOTAsIDkwLCA4OSwgODgsIDEyOCwgOTAsIDkwLCA4OSwgODQsIDEyOCwgOTAsIDkwLCA4OSwgODIsIDg4LCAxMjgsIAorICAgIDkwLCA5MCwgODksIDgyLCAxMjgsIDkwLCA5MCwgODksIDgwLCAxMjgsIDkwLCA5MCwgODksIDY1LCAxMjgsIDkwLCA5MCwgCisgICAgODksIDEyOCwgOTAsIDkwLCA4NSwgODgsIDEyOCwgOTAsIDkwLCA4NSwgODIsIDg4LCAxMjgsIDkwLCA5MCwgODUsIDgyLCAKKyAgICAxMjgsIDkwLCA5MCwgODUsIDgwLCAxMjgsIDkwLCA5MCwgODUsIDEyOCwgOTAsIDkwLCA4MywgODksIDY1LCAxMjgsIDkwLCAKKyAgICA5MCwgODMsIDY1LCAxMjgsIDkwLCA5MCwgNzksIDg4LCAxMjgsIDkwLCA5MCwgNzksIDgwLCAxMjgsIDkwLCA5MCwgNzksIAorICAgIDEyOCwgOTAsIDkwLCA3MywgODgsIDEyOCwgOTAsIDkwLCA3MywgODQsIDEyOCwgOTAsIDkwLCA3MywgODAsIDEyOCwgOTAsIAorICAgIDkwLCA3MywgNjksIDg4LCAxMjgsIDkwLCA5MCwgNzMsIDY5LCA4NCwgMTI4LCA5MCwgOTAsIDczLCA2OSwgODAsIDEyOCwgCisgICAgOTAsIDkwLCA3MywgNjksIDEyOCwgOTAsIDkwLCA3MywgMTI4LCA5MCwgOTAsIDY5LCA4OCwgMTI4LCA5MCwgOTAsIDY5LCAKKyAgICA4MCwgMTI4LCA5MCwgOTAsIDY5LCA2OSwgMTI4LCA5MCwgOTAsIDY5LCAxMjgsIDkwLCA5MCwgNjUsIDg4LCAxMjgsIDkwLCAKKyAgICA5MCwgNjUsIDg0LCAxMjgsIDkwLCA5MCwgNjUsIDgwLCAxMjgsIDkwLCA5MCwgNjUsIDY1LCAxMjgsIDkwLCA5MCwgNjUsIAorICAgIDEyOCwgOTAsIDg5LCA3MSwgNzksIDgzLCAxMjgsIDkwLCA4NywgODMsIDgwLCAxMjgsIDkwLCA4NywgNzgsIDc0LCAxMjgsIAorICAgIDkwLCA4NywgNzgsIDY2LCA4MywgODAsIDEyOCwgOTAsIDg3LCA3NCwgMTI4LCA5MCwgODcsIDIwMiwgOTAsIDg3LCA2NSwgCisgICAgODIsIDY1LCA3NSwgNjUsIDg5LCAxMjgsIDkwLCA4NywgNjUsIDEyOCwgOTAsIDg1LCA4NCwgMTI4LCA5MCwgODUsIDc5LCAKKyAgICA4OCwgMTI4LCA5MCwgODUsIDc5LCA4MCwgMTI4LCA5MCwgODUsIDc5LCAxMjgsIDkwLCA4NSwgNzcsIDEyOCwgOTAsIDg1LCAKKyAgICA2NiwgODUsIDgyLCAxMjgsIDkwLCA4NSwgNTMsIDEyOCwgOTAsIDg1LCAxODEsIDkwLCAyMTMsIDkwLCA4MywgNzIsIDY1LCAKKyAgICAxMjgsIDkwLCA4MiwgNjUsIDEyOCwgOTAsIDgxLCA2NSwgODAsIDcyLCAxOTMsIDkwLCA3OSwgODQsIDEyOCwgOTAsIDc5LCAKKyAgICA3OSwgMTI4LCA5MCwgNzksIDY1LCAxMjgsIDkwLCA3NiwgNjUsIDc3LCAxOTMsIDkwLCA3NiwgNjUsIDEyOCwgOTAsIDc2LCAKKyAgICAxOTMsIDkwLCA3NCwgNjksIDEyOCwgOTAsIDczLCA5MCwgNTAsIDEyOCwgOTAsIDczLCA4MSwgNjUsIDY1LCAxMjgsIDkwLCAKKyAgICA3MywgODAsIDgwLCA2OSwgODIsIDQ1LCA3NywgNzksIDg1LCA4NCwgMjAwLCA5MCwgNzMsIDc4LCA3OSwgODIsIDEyOCwgOTAsIAorICAgIDczLCA3NiwgNjgsIDY5LCAxMjgsIDkwLCA3MywgNzEsIDkwLCA2NSwgMTk5LCA5MCwgNzMsIDcxLCAxMjgsIDkwLCA3MywgCisgICAgNjgsIDE5MywgOTAsIDczLCA2NiwgMTI4LCA5MCwgNzMsIDE5NCwgOTAsIDczLCA1MSwgMTI4LCA5MCwgMjAxLCA5MCwgNzIsIAorICAgIDg5LCA4OCwgMTI4LCA5MCwgNzIsIDg5LCA4NCwgMTI4LCA5MCwgNzIsIDg5LCA4MiwgODgsIDEyOCwgOTAsIDcyLCA4OSwgCisgICAgODIsIDEyOCwgOTAsIDcyLCA4OSwgODAsIDEyOCwgOTAsIDcyLCA4OSwgMTI4LCA5MCwgNzIsIDg3LCA2OSwgMTI4LCA5MCwgCisgICAgNzIsIDg3LCA2NSwgMTI4LCA5MCwgNzIsIDg1LCA4OCwgMTI4LCA5MCwgNzIsIDg1LCA4NCwgMTI4LCA5MCwgNzIsIDg1LCAKKyAgICA4MiwgODgsIDEyOCwgOTAsIDcyLCA4NSwgODIsIDEyOCwgOTAsIDcyLCA4NSwgODAsIDEyOCwgOTAsIDcyLCA4NSwgNzksIAorICAgIDg4LCAxMjgsIDkwLCA3MiwgODUsIDc5LCA4MCwgMTI4LCA5MCwgNzIsIDg1LCA3OSwgMTI4LCA5MCwgNzIsIDg1LCAxMjgsIAorICAgIDkwLCA3MiwgNzksIDg4LCAxMjgsIDkwLCA3MiwgNzksIDg0LCAxMjgsIDkwLCA3MiwgNzksIDgwLCAxMjgsIDkwLCA3MiwgCisgICAgNzksIDc5LCAxMjgsIDkwLCA3MiwgNzksIDczLCAxMjgsIDkwLCA3MiwgNzksIDEyOCwgOTAsIDcyLCA3MywgODYsIDY5LCAKKyAgICA4NCwgNjksIDEyOCwgOTAsIDcyLCA3MywgNzYsIDEyOCwgOTAsIDcyLCA3MywgMTI4LCA5MCwgNzIsIDY5LCA4OCwgMTI4LCAKKyAgICA5MCwgNzIsIDY5LCA4NCwgMTI4LCA5MCwgNzIsIDY5LCA4MCwgMTI4LCA5MCwgNzIsIDY5LCA2OSwgMTI4LCA5MCwgNzIsIAorICAgIDY5LCAxMjgsIDkwLCA3MiwgMTk3LCA5MCwgNzIsIDY1LCA4OSwgNzMsIDc4LCAxMjgsIDkwLCA3MiwgNjUsIDg4LCAxMjgsIAorICAgIDkwLCA3MiwgNjUsIDg0LCAxMjgsIDkwLCA3MiwgNjUsIDgyLCAxMjgsIDkwLCA3MiwgNjUsIDgwLCAxMjgsIDkwLCA3MiwgCisgICAgNjUsIDczLCA3OCwgMTI4LCA5MCwgNzIsIDY1LCA2NSwgMTI4LCA5MCwgNzIsIDY1LCAxMjgsIDkwLCA3MiwgMTI4LCA5MCwgCisgICAgNjksIDg0LCA2NSwgMTI4LCA5MCwgNjksIDgyLCA3OSwgMTI4LCA5MCwgNjksIDgyLCAyMDcsIDkwLCA2OSwgNzgsIDEyOCwgCisgICAgOTAsIDY5LCA3NywgNzYsIDg5LCA2NSwgMTI4LCA5MCwgNjksIDc3LCA3NiwgNzQsIDY1LCAxMjgsIDkwLCA2OSwgNTAsIAorICAgIDEyOCwgOTAsIDE5NywgOTAsIDY1LCA4OSwgNzgsIDEyOCwgOTAsIDY1LCA4OSwgNzMsIDc4LCAxMjgsIDkwLCA2NSwgODksIAorICAgIDczLCAyMDYsIDkwLCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA5MCwgNjUsIDg0LCA2NSwgMTI4LCA5MCwgCisgICAgNjUsIDgyLCA4MSwgNjUsIDEyOCwgOTAsIDY1LCA4MiwgNzYsIDEyOCwgOTAsIDY1LCA4MSwgNjksIDE5OCwgOTAsIDY1LCAKKyAgICA3NywgODgsIDEyOCwgOTAsIDY1LCA3NiwgMTI4LCA5MCwgNjUsIDIwNCwgOTAsIDY1LCA3MywgNzgsIDEyOCwgOTAsIDY1LCAKKyAgICA3MywgMjA2LCA5MCwgNjUsIDczLCAxMjgsIDkwLCA2NSwgNzIsIDEyOCwgOTAsIDY1LCAyMDAsIDkwLCA2NSwgNzEsIDEyOCwgCisgICAgOTAsIDY1LCA2OSwgNzAsIDEyOCwgOTAsIDY1LCA1NSwgMTI4LCA5MCwgMTkzLCA5MCwgNDgsIDQ5LCA1NCwgNzIsIDEyOCwgCisgICAgOTAsIDQ4LCA0OSwgNTQsIDcxLCAxMjgsIDkwLCA0OCwgNDksIDU0LCA3MCwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNjksIAorICAgIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDY4LCAxMjgsIDkwLCA0OCwgNDksIDU0LCA2NywgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgCisgICAgNjYsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDY1LCAxMjgsIDkwLCA0OCwgNDksIDU0LCAxMjgsIDkwLCA0OCwgNDksIDUzLCAKKyAgICA3MywgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNzIsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDcxLCAxMjgsIDkwLCA0OCwgNDksIAorICAgIDUzLCA3MCwgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNjksIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDY4LCAxMjgsIDkwLCA0OCwgCisgICAgNDksIDUzLCA2NywgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNjYsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDY1LCAxMjgsIDkwLCAKKyAgICA0OCwgNDksIDUzLCAxMjgsIDkwLCA0OCwgNDksIDUyLCAxMjgsIDkwLCA0OCwgNDksIDUxLCAxMjgsIDkwLCA0OCwgNDksIAorICAgIDUwLCAxMjgsIDkwLCA0OCwgNDksIDQ5LCAxMjgsIDkwLCA0OCwgNDksIDQ4LCAxMjgsIDkwLCA0OCwgNDgsIDU3LCAxMjgsIAorICAgIDkwLCA0OCwgNDgsIDU2LCAxMjgsIDkwLCA0OCwgNDgsIDU1LCAxMjgsIDkwLCA0OCwgNDgsIDU0LCAxMjgsIDkwLCA0OCwgCisgICAgNDgsIDUzLCA2NSwgMTI4LCA5MCwgNDgsIDQ4LCA1MywgMTI4LCA5MCwgNDgsIDQ4LCA1MiwgNjUsIDEyOCwgOTAsIDQ4LCAKKyAgICA0OCwgNTIsIDEyOCwgOTAsIDQ4LCA0OCwgNTEsIDY2LCAxMjgsIDkwLCA0OCwgNDgsIDUxLCA2NSwgMTI4LCA5MCwgNDgsIAorICAgIDQ4LCA1MSwgMTI4LCA5MCwgNDgsIDQ4LCA1MCwgNjgsIDEyOCwgOTAsIDQ4LCA0OCwgNTAsIDY3LCAxMjgsIDkwLCA0OCwgCisgICAgNDgsIDUwLCA2NiwgMTI4LCA5MCwgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgOTAsIDQ4LCA0OCwgNTAsIDEyOCwgOTAsIDQ4LCAKKyAgICA0OCwgNDksIDEyOCwgOTAsIDEyOCwgMjE4LCA4OSwgODksIDg4LCAxMjgsIDg5LCA4OSwgODQsIDEyOCwgODksIDg5LCA4MiwgCisgICAgODgsIDEyOCwgODksIDg5LCA4MiwgMTI4LCA4OSwgODksIDgwLCAxMjgsIDg5LCA4OSwgNjksIDEyOCwgODksIDg5LCA2NSwgCisgICAgNjUsIDEyOCwgODksIDg5LCA2NSwgMTI4LCA4OSwgODksIDEyOCwgODksIDg3LCA3OSwgNzksIDEyOCwgODksIDg3LCA3OSwgCisgICAgMTI4LCA4OSwgODcsIDczLCA3MywgMTI4LCA4OSwgODcsIDczLCAxMjgsIDg5LCA4NywgNjksIDEyOCwgODksIDg3LCA2NSwgCisgICAgNjUsIDEyOCwgODksIDg3LCA2NSwgMTI4LCA4OSwgODYsIDEyOCwgODksIDg1LCA4OCwgMTI4LCA4OSwgODUsIDg3LCA3OSwgCisgICAgODEsIDEyOCwgODksIDg1LCA4NSwgNzUsIDY1LCA3NiwgNjksIDY1LCA4MCwgNzMsIDc4LCA4NCwgODUsIDEyOCwgODksIDg1LCAKKyAgICA4NSwgMTI4LCA4OSwgODUsIDg0LCAxMjgsIDg5LCA4NSwgODMsIDEyOCwgODksIDg1LCAyMTEsIDg5LCA4NSwgODIsIDg4LCAKKyAgICAxMjgsIDg5LCA4NSwgODIsIDEyOCwgODksIDg1LCA4MSwgMTI4LCA4OSwgODUsIDIwOSwgODksIDg1LCA4MCwgMTI4LCA4OSwgCisgICAgODUsIDc5LCA4OCwgMTI4LCA4OSwgODUsIDc5LCA4NCwgMTI4LCA4OSwgODUsIDc5LCA4MCwgMTI4LCA4OSwgODUsIDc5LCAKKyAgICA3NywgMTI4LCA4OSwgODUsIDc5LCAxMjgsIDg5LCA4NSwgNzgsIDEyOCwgODksIDg1LCA3NywgMTI4LCA4OSwgODUsIDc0LCAKKyAgICAxMjgsIDg5LCA4NSwgNjksIDgxLCAxMjgsIDg5LCA4NSwgNjksIDEyOCwgODksIDg1LCA2OCwgNzIsIDEyOCwgODksIDg1LCAKKyAgICA2OCwgMjAwLCA4OSwgODUsIDY1LCA3OCwgMTI4LCA4OSwgODUsIDY1LCA2OSwgNzgsIDEyOCwgODksIDg1LCA0NSwgODksIAorICAgIDY5LCA3OSwgMTI4LCA4OSwgODUsIDQ1LCA4OSwgNjksIDEyOCwgODksIDg1LCA0NSwgODUsIDEyOCwgODksIDg1LCA0NSwgCisgICAgNzksIDEyOCwgODksIDg1LCA0NSwgNzMsIDEyOCwgODksIDg1LCA0NSwgNjksIDc5LCAxMjgsIDg5LCA4NSwgNDUsIDY5LCAKKyAgICAxMjgsIDg5LCA4NSwgNDUsIDY1LCA2OSwgMTI4LCA4OSwgODUsIDQ1LCA2NSwgMTI4LCA4OSwgODUsIDEyOCwgODksIDIxMywgCisgICAgODksIDgyLCA4OSwgMTI4LCA4OSwgODAsIDgzLCA3MywgNzYsIDczLCAxMjgsIDg5LCA4MCwgNzksIDgyLCA4MiwgNzksIDczLCAKKyAgICAxMjgsIDg5LCA4MCwgNzksIDc1LCA4MiwgNzMsIDgzLCA3MywgODMsIDEyOCwgODksIDgwLCA3OSwgNzUsIDgyLCA3MywgODMsIAorICAgIDczLCAyMTEsIDg5LCA4MCwgNzksIDcxLCA2OSwgNzEsIDgyLCA2NSwgNzcsIDc3LCA2OSwgNzgsIDczLCAxMjgsIDg5LCA3OSwgCisgICAgODksIDEyOCwgODksIDc5LCA4OCwgMTI4LCA4OSwgNzksIDg3LCA2OCwgMTI4LCA4OSwgNzksIDg1LCA4NCwgNzIsIDcwLCAKKyAgICA4NSwgNzYsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDg5LCA3OSwgODUsIDg0LCA3MiwgNzAsIDg1LCAyMDQsIDg5LCA3OSwgODQsIAorICAgIDEyOCwgODksIDc5LCA4MiwgNzMsIDEyOCwgODksIDc5LCA4MSwgMTI4LCA4OSwgNzksIDIwOSwgODksIDc5LCA4MCwgMTI4LCAKKyAgICA4OSwgNzksIDc5LCAxMjgsIDg5LCA3OSwgNzcsIDc5LCAxMjgsIDg5LCA3OSwgNzEsIDcyLCAxMjgsIDg5LCA3OSwgNjgsIAorICAgIDcyLCAxMjgsIDg5LCA3OSwgNjgsIDEyOCwgODksIDc5LCAxOTYsIDg5LCA3OSwgNjUsIDEyOCwgODksIDc5LCA0NSwgODksIAorICAgIDY5LCA3OSwgMTI4LCA4OSwgNzksIDQ1LCA4OSwgNjUsIDY5LCAxMjgsIDg5LCA3OSwgNDUsIDg5LCA2NSwgMTI4LCA4OSwgCisgICAgNzksIDQ1LCA3OSwgMTI4LCA4OSwgNzksIDQ1LCA3MywgMTI4LCA4OSwgNzksIDQ1LCA2OSwgNzksIDEyOCwgODksIDc5LCAKKyAgICA0NSwgNjUsIDY5LCAxMjgsIDg5LCA3OSwgNDUsIDY1LCAxMjgsIDg5LCA3OSwgMTI4LCA4OSwgMjA3LCA4OSwgNzMsIDkwLCAKKyAgICA2OSwgODQsIDEyOCwgODksIDczLCA4OCwgMTI4LCA4OSwgNzMsIDg3LCA3OCwgMTI4LCA4OSwgNzMsIDg0LCAxMjgsIDg5LCAKKyAgICA3MywgODAsIDEyOCwgODksIDczLCA3OCwgNzEsIDEyOCwgODksIDczLCA3MywgMTI4LCA4OSwgNzMsIDE5OSwgODksIDczLCAKKyAgICA2OSwgODgsIDEyOCwgODksIDczLCA2OSwgODQsIDEyOCwgODksIDczLCA2OSwgODAsIDEyOCwgODksIDczLCA2OSwgNjksIAorICAgIDEyOCwgODksIDczLCA2OSwgMTI4LCA4OSwgNzMsIDY4LCA2OCwgNzMsIDgzLCAyMDAsIDg5LCA3MywgNDUsIDg1LCAxMjgsIAorICAgIDg5LCA3MywgMTI4LCA4OSwgNzIsIDY5LCAxMjgsIDg5LCA3MCwgNjksIDgzLCA3MywgODMsIDEyOCwgODksIDcwLCA2OSwgCisgICAgODMsIDczLCAyMTEsIDg5LCA3MCwgNjksIDIwNiwgODksIDY5LCA4OSwgMTI4LCA4OSwgNjksIDg3LCAxMjgsIDg5LCA2OSwgCisgICAgODUsIDg4LCAxMjgsIDg5LCA2OSwgODUsIDgyLCA2NSwgNjksIDEyOCwgODksIDY5LCA4NSwgODEsIDEyOCwgODksIDY5LCAKKyAgICA4NSwgNzcsIDEyOCwgODksIDY5LCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA4OSwgNjksIDg1LCA2NSwgNjksIDEyOCwgODksIAorICAgIDY5LCA4NCwgNzMsIDg2LCAxMjgsIDg5LCA2OSwgODMsIDg0LCA4NSwgMTI4LCA4OSwgNjksIDgzLCA3MywgNjksIDg1LCA3OCwgCisgICAgNzEsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4OSwgNjksIDgzLCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MCwgNjUsIAorICAgIDc4LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4OSwgNjksIDgzLCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA3NywgNzMsIDY5LCAKKyAgICA4NSwgNzcsIDEyOCwgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIAorICAgIDg5LCA2OSwgODMsIDczLCA2OSwgODUsIDc4LCA3MSwgMTI4LCA4OSwgNjksIDgyLCA4NSwgMTI4LCA4OSwgNjksIDgyLCAKKyAgICAyMTMsIDg5LCA2OSwgODIsIDczLCAxMjgsIDg5LCA2OSwgODIsIDY1LCAyMDAsIDg5LCA2OSwgODIsIDEyOCwgODksIDY5LCAKKyAgICA3OSwgODIsIDczLCA3OCwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDg5LCA2OSwgNzksIDQ1LCA4OSwgNjUsIDEyOCwgODksIAorICAgIDY5LCA3OSwgNDUsIDg1LCAxMjgsIDg5LCA2OSwgNzksIDQ1LCA3OSwgMTI4LCA4OSwgNjksIDc4LCA3MywgODMsIDY5LCAKKyAgICAyMDEsIDg5LCA2OSwgNzgsIDY1LCA4MCwgMTI4LCA4OSwgNjksIDc4LCAxMjgsIDg5LCA2OSwgMjA2LCA4OSwgNjksIDc2LCAKKyAgICA3NiwgNzksIDg3LCAxMjgsIDg5LCA2OSwgNzYsIDc2LCA3OSwgMjE1LCA4OSwgNjksIDczLCA3OCwgMTI4LCA4OSwgNjksIAorICAgIDcyLCAxMjgsIDg5LCA2OSwgNjksIDcxLCAxMjgsIDg5LCA2OSwgNjksIDEyOCwgODksIDY5LCA2NSwgMjEwLCA4OSwgNjksIAorICAgIDY1LCAxMjgsIDg5LCA2NSwgOTAsIDkwLCAxMjgsIDg5LCA2NSwgOTAsIDcyLCAxMjgsIDg5LCA2NSwgOTAsIDEyOCwgODksIAorICAgIDY1LCA4OSwgNjgsIDEyOCwgODksIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODksIDY1LCA4OSwgMTI4LCA4OSwgCisgICAgNjUsIDg3LCA3OCwgMTI4LCA4OSwgNjUsIDg3LCAxMjgsIDg5LCA2NSwgODYsIDEyOCwgODksIDY1LCA4NSwgMTI4LCA4OSwgCisgICAgNjUsIDg0LCA4NCwgMTI4LCA4OSwgNjUsIDg0LCA3MywgMTI4LCA4OSwgNjUsIDg0LCA3MiwgMTI4LCA4OSwgNjUsIDg0LCAKKyAgICAxMjgsIDg5LCA2NSwgODMsIDgzLCAxMjgsIDg5LCA2NSwgODMsIDcyLCAxMjgsIDg5LCA2NSwgODMsIDEyOCwgODksIDY1LCAKKyAgICA4MiwgODIsIDEyOCwgODksIDY1LCA4MiwgMTI4LCA4OSwgNjUsIDIxMCwgODksIDY1LCA4MSwgMTI4LCA4OSwgNjUsIDgwLCAKKyAgICAxMjgsIDg5LCA2NSwgNzgsIDgzLCA2NSwgODksIDY1LCAxMjgsIDg5LCA2NSwgNzgsIDcxLCAxMjgsIDg5LCA2NSwgNzgsIAorICAgIDE5OSwgODksIDY1LCA3OCwgMTI4LCA4OSwgNjUsIDc3LCA3OSwgNzUsIDEyOCwgODksIDY1LCA3NywgNjUsIDc1LCA3NSwgCisgICAgNjUsIDc4LCAxMjgsIDg5LCA2NSwgNzcsIDEyOCwgODksIDY1LCA3NiwgMTI4LCA4OSwgNjUsIDc1LCA3MiwgNzIsIDEyOCwgCisgICAgODksIDY1LCA3NSwgNzIsIDEyOCwgODksIDY1LCA3NSwgNjUsIDgzLCA3MiwgMTI4LCA4OSwgNjUsIDc1LCAxMjgsIDg5LCAKKyAgICA2NSwgNzQsIDg1LCA4MiwgODYsIDY5LCA2OCwgNzMsIDE5NSwgODksIDY1LCA3NCwgMTI4LCA4OSwgNjUsIDczLCAxMjgsIAorICAgIDg5LCA2NSwgNzIsIDcyLCAxMjgsIDg5LCA2NSwgNzIsIDEyOCwgODksIDY1LCA3MSwgNzgsIDEyOCwgODksIDY1LCA3MSwgCisgICAgNzIsIDcyLCAxMjgsIDg5LCA2NSwgNzEsIDcyLCAxMjgsIDg5LCA2NSwgNzEsIDEyOCwgODksIDY1LCA3MCwgMjEzLCA4OSwgCisgICAgNjUsIDcwLCAxMjgsIDg5LCA2NSwgNjksIDc3LCA3NywgNjUsIDY5LCAxMjgsIDg5LCA2NSwgNjgsIDcyLCAxMjgsIDg5LCAKKyAgICA2NSwgNjgsIDY4LCA3MiwgMTI4LCA4OSwgNjUsIDY4LCA2OCwgMTI4LCA4OSwgNjUsIDY4LCAxMjgsIDg5LCA2NSwgNjcsIAorICAgIDcyLCAxMjgsIDg5LCA2NSwgNjYsIDcyLCAxMjgsIDg5LCA2NSwgNjYsIDEyOCwgODksIDY1LCA2NSwgODIsIDg1LCAxMjgsIAorICAgIDg5LCA2NSwgNjUsIDczLCAxMjgsIDg5LCA2NSwgNjUsIDY4LCA3OSwgMTI4LCA4OSwgNjUsIDQ1LCA4OSwgNzksIDEyOCwgCisgICAgODksIDY1LCA0NSwgODUsIDEyOCwgODksIDY1LCA0NSwgNzksIDEyOCwgODksIDQ4LCA0OCwgNTYsIDEyOCwgODksIDQ4LCAKKyAgICA0OCwgNTUsIDEyOCwgODksIDQ4LCA0OCwgNTQsIDEyOCwgODksIDQ4LCA0OCwgNTMsIDEyOCwgODksIDQ4LCA0OCwgNTIsIAorICAgIDEyOCwgODksIDQ4LCA0OCwgNTEsIDEyOCwgODksIDQ4LCA0OCwgNTAsIDEyOCwgODksIDQ4LCA0OCwgNDksIDY1LCAxMjgsIAorICAgIDg5LCA0OCwgNDgsIDQ5LCAxMjgsIDg5LCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA4OCwgODksIDg4LCAxMjgsIDg4LCA4OSwgCisgICAgODUsIDEyOCwgODgsIDg5LCA4NCwgMTI4LCA4OCwgODksIDgyLCA4OCwgMTI4LCA4OCwgODksIDgyLCAxMjgsIDg4LCA4OSwgCisgICAgODAsIDEyOCwgODgsIDg5LCA3OSwgNzksIDc0LCAxMjgsIDg4LCA4OSwgNzksIDc5LCAxMjgsIDg4LCA4OSwgNzksIDEyOCwgCisgICAgODgsIDg5LCA3MywgMTI4LCA4OCwgODksIDY5LCA2OSwgMjA1LCA4OCwgODksIDY5LCA2OSwgMTI4LCA4OCwgODksIDY5LCAKKyAgICAxMjgsIDg4LCA4OSwgNjUsIDY1LCAxMjgsIDg4LCA4OSwgNjUsIDEyOCwgODgsIDg5LCAxMjgsIDg4LCA4NywgNzMsIDEyOCwgCisgICAgODgsIDg3LCA2OSwgNjksIDEyOCwgODgsIDg3LCA2OSwgMTI4LCA4OCwgODcsIDY1LCA2NSwgMTI4LCA4OCwgODcsIDY1LCAKKyAgICAxMjgsIDg4LCA4NywgMTI4LCA4OCwgODYsIDY5LCAxMjgsIDg4LCA4NiwgNjUsIDEyOCwgODgsIDg1LCA3OSwgODgsIDEyOCwgCisgICAgODgsIDg1LCA3OSwgMTI4LCA4OCwgODUsIDEyOCwgODgsIDgzLCA3MiwgNjUsIDY1LCA4OSwgNjUsIDg0LCA3MiwgNzMsIDg5LCAKKyAgICA2NSwgMTI4LCA4OCwgNzksIDg4LCAxMjgsIDg4LCA3OSwgODQsIDEyOCwgODgsIDc5LCA4MiwgMTI4LCA4OCwgNzksIDgwLCAKKyAgICA3MiwgMTI4LCA4OCwgNzksIDgwLCAxMjgsIDg4LCA3OSwgNjUsIDEyOCwgODgsIDc5LCAxMjgsIDg4LCA3MywgODgsIDEyOCwgCisgICAgODgsIDczLCA4NCwgMTI4LCA4OCwgNzMsIDgyLCA3OSwgMjA2LCA4OCwgNzMsIDgwLCAxMjgsIDg4LCA3MywgNjksIDg4LCAKKyAgICAxMjgsIDg4LCA3MywgNjksIDg0LCAxMjgsIDg4LCA3MywgNjksIDgwLCAxMjgsIDg4LCA3MywgNjksIDEyOCwgODgsIDczLCAKKyAgICA2NSwgNjYsIDEyOCwgODgsIDczLCAxMjgsIDg4LCA3MSwgMTI4LCA4OCwgNjksIDg5LCA3OCwgMTI4LCA4OCwgNjksIDgzLCAKKyAgICA4NCwgNjksIDIxMSwgODgsIDY5LCA3MiwgMTI4LCA4OCwgNjksIDY5LCAxMjgsIDg4LCA2OSwgMTI4LCA4OCwgNjUsIDg1LCAKKyAgICA4MywgMTI4LCA4OCwgNjUsIDg1LCAxMjgsIDg4LCA2NSwgODAsIDcyLCAxMjgsIDg4LCA2NSwgNzgsIDEyOCwgODgsIDY1LCAKKyAgICA2NSwgMTI4LCA4OCwgNjUsIDEyOCwgODgsIDQ4LCA0OCwgNTYsIDY1LCAxMjgsIDg4LCA0OCwgNDgsIDU2LCAxMjgsIDg4LCAKKyAgICA0OCwgNDgsIDU1LCAxMjgsIDg4LCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA4OCwgNDgsIDQ4LCA1NCwgMTI4LCA4OCwgNDgsIAorICAgIDQ4LCA1MywgMTI4LCA4OCwgNDgsIDQ4LCA1MiwgNjYsIDEyOCwgODgsIDQ4LCA0OCwgNTIsIDY1LCAxMjgsIDg4LCA0OCwgCisgICAgNDgsIDUyLCAxMjgsIDg4LCA0OCwgNDgsIDUxLCAxMjgsIDg4LCA0OCwgNDgsIDUwLCAxMjgsIDg4LCA0OCwgNDgsIDQ5LCAKKyAgICAxMjgsIDg4LCA0NSwgMjE2LCA4NywgOTAsIDEyOCwgODcsIDg5LCA3OCwgNzgsIDEyOCwgODcsIDg5LCA3OCwgMjA2LCA4NywgCisgICAgODYsIDczLCAxMjgsIDg3LCA4NiwgNjksIDEyOCwgODcsIDg2LCA2NSwgMTI4LCA4NywgODYsIDEyOCwgODcsIDg1LCA4MCwgCisgICAgMTI4LCA4NywgODUsIDc5LCA4OCwgMTI4LCA4NywgODUsIDc5LCA4MCwgMTI4LCA4NywgODUsIDc5LCAxMjgsIDg3LCA4NSwgCisgICAgNzgsIDc0LCAyMDcsIDg3LCA4NSwgNzgsIDEyOCwgODcsIDg1LCA3NiwgODUsIDEyOCwgODcsIDg1LCA3NiwgMjEzLCA4NywgCisgICAgODUsIDczLCAxMjgsIDg3LCA4NSwgNjksIDEyOCwgODcsIDg1LCA2NSwgNjksIDg0LCAxMjgsIDg3LCA4NSwgNjUsIDY5LCAKKyAgICA3OCwgMTI4LCA4NywgODUsIDEyOCwgODcsIDgyLCAyMTcsIDg3LCA4MiwgNzksIDc4LCA3MSwgMTI4LCA4NywgODIsIDczLCAKKyAgICA4MywgMjEyLCA4NywgODIsIDczLCA3OCwgNzUsIDc2LCA2OSwgODMsIDEyOCwgODcsIDgyLCA3MywgNzgsIDc1LCA3NiwgNjksIAorICAgIDIxMSwgODcsIDgyLCA3MywgNzgsIDc1LCA3NiwgNjksIDY4LCAxMjgsIDg3LCA4MiwgNjksIDgzLCA4NCwgNzYsIDY5LCA4MiwgCisgICAgODMsIDEyOCwgODcsIDgyLCA2OSwgNzgsIDY3LCA3MiwgMTI4LCA4NywgODIsIDY5LCA2NSwgODQsIDIwMCwgODcsIDgyLCAKKyAgICA2NSwgODAsIDgwLCA2OSwgMTk2LCA4NywgODIsIDY1LCA4MCwgMTI4LCA4NywgNzksIDg4LCAxMjgsIDg3LCA3OSwgODcsIAorICAgIDEyOCwgODcsIDc5LCA4MiwgODMsIDcyLCA3MywgODAsIDEyOCwgODcsIDc5LCA4MiwgODIsIDczLCA2OSwgMTk2LCA4NywgCisgICAgNzksIDgyLCA3NiwgMTk2LCA4NywgNzksIDgyLCA3NSwgNjksIDgyLCAxMjgsIDg3LCA3OSwgODIsIDc1LCAxMjgsIDg3LCAKKyAgICA3OSwgODIsIDIwMywgODcsIDc5LCA4MiwgNjgsIDgzLCA4MCwgNjUsIDY3LCA2OSwgMTI4LCA4NywgNzksIDgyLCAxOTYsIAorICAgIDg3LCA3OSwgODAsIDEyOCwgODcsIDc5LCA3OSwgNzgsIDEyOCwgODcsIDc5LCA3OSwgNzYsIDEyOCwgODcsIDc5LCA3OSwgCisgICAgNjgsIDgzLCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA4NywgNzksIDc5LCA2OCwgMTI4LCA4NywgNzksIDc4LCAxMjgsIDg3LCAKKyAgICA3OSwgMjA2LCA4NywgNzksIDc3LCA2OSwgNzgsIDIxMSwgODcsIDc5LCA3NywgNjksIDIwNiwgODcsIDc5LCA3NywgNjUsIAorICAgIDc4LCAyMTEsIDg3LCA3OSwgNzcsIDY1LCA3OCwgMTI4LCA4NywgNzksIDc3LCA2NSwgMjA2LCA4NywgNzksIDc2LCA3OSwgCisgICAgODMsIDc5LCAxMjgsIDg3LCA3OSwgNzYsIDE5OCwgODcsIDc5LCA2OSwgMTI4LCA4NywgNzksIDY1LCAxMjgsIDg3LCA3MywgCisgICAgODQsIDcyLCA3OSwgODUsIDIxMiwgODcsIDczLCA4NCwgNzIsIDczLCA3OCwgMTI4LCA4NywgNzMsIDg0LCA3MiwgNzMsIAorICAgIDIwNiwgODcsIDczLCA4MiwgNjksIDE5NiwgODcsIDczLCA3OCwgODQsIDY5LCA4MiwgMTI4LCA4NywgNzMsIDc4LCA3NSwgCisgICAgNzMsIDc4LCAxOTksIDg3LCA3MywgNzgsIDc1LCAxMjgsIDg3LCA3MywgNzgsIDc0LCA2NSwgMTI4LCA4NywgNzMsIDc4LCAKKyAgICA3MSwgODMsIDEyOCwgODcsIDczLCA3OCwgNjksIDEyOCwgODcsIDczLCA3OCwgMTk3LCA4NywgNzMsIDc4LCA2OCwgODUsIAorICAgIDEyOCwgODcsIDczLCA3OCwgNjgsIDc5LCA4NywgMTI4LCA4NywgNzMsIDc4LCA2OCwgMTI4LCA4NywgNzMsIDc4LCAxOTYsIAorICAgIDg3LCA3MywgNzgsIDEyOCwgODcsIDczLCA3NiwgODQsIDY5LCAxOTYsIDg3LCA3MywgNzEsIDc4LCA4OSwgNjUsIDc4LCAKKyAgICAxMjgsIDg3LCA3MywgNzEsIDcxLCA3NiwgMjE3LCA4NywgNzMsIDcxLCA3MSwgNzYsIDY5LCA4MywgMTI4LCA4NywgNzMsIAorICAgIDY4LCA4NCwgNzIsIDEyOCwgODcsIDczLCA2OCwgNjksIDc4LCA3MywgNzgsIDE5OSwgODcsIDczLCA2OCwgNjksIDQ1LCA3MiwgCisgICAgNjksIDY1LCA2OCwgNjksIDE5NiwgODcsIDczLCA2OCwgMTk3LCA4NywgNzMsIDY1LCA3OCwgNzEsIDg3LCA2NSwgNjUsIDc1LCAKKyAgICAxMjgsIDg3LCA3MywgNjUsIDc4LCA3MSwgMTI4LCA4NywgNzIsIDc5LCA3NiwgMTk3LCA4NywgNzIsIDczLCA4NCwgNjksIAorICAgIDQ1LCA3MCwgNjksIDY1LCA4NCwgNzIsIDY5LCA4MiwgNjksIDE5NiwgODcsIDcyLCA3MywgODQsIDY5LCAxMjgsIDg3LCA3MiwgCisgICAgNjksIDY5LCA3NiwgNjksIDE5NiwgODcsIDcyLCA2OSwgNjksIDc2LCA2NywgNzIsIDY1LCA3MywgMjEwLCA4NywgNzIsIDY5LCAKKyAgICA2OSwgNzYsIDEyOCwgODcsIDcyLCA2OSwgNjksIDIwNCwgODcsIDcyLCA2OSwgNjUsIDg0LCAxMjgsIDg3LCA3MiwgNjUsIAorICAgIDc2LCA2OSwgMTI4LCA4NywgNzIsIDEyOCwgODcsIDcxLCAxMjgsIDg3LCA2OSwgODgsIDEyOCwgODcsIDY5LCA4NSwgODgsIAorICAgIDEyOCwgODcsIDY5LCA4MywgODQsIDY5LCA4MiwgMjA2LCA4NywgNjksIDgzLCA4NCwgNDUsIDY3LCA4MiwgNjksIDE5NywgCisgICAgODcsIDY5LCA4MywgODQsIDEyOCwgODcsIDY5LCA4MywgMjEyLCA4NywgNjksIDgwLCAxMjgsIDg3LCA2OSwgNzksIDEyOCwgCisgICAgODcsIDY5LCA3OCwgMTI4LCA4NywgNjksIDc2LCA3NiwgMTI4LCA4NywgNjksIDczLCA3MSwgNzIsIDIxMiwgODcsIDY5LCAKKyAgICA3MywgNjksIDgyLCA4MywgODQsIDgyLCA2NSwgODMsIDIxMSwgODcsIDY5LCA3MywgMTI4LCA4NywgNjksIDY5LCA3OCwgCiAgICAgMTI4LCA4NywgNjksIDY4LCA3MSwgNjksIDQ1LCA4NCwgNjUsIDczLCA3NiwgNjksIDE5NiwgODcsIDY5LCA2OCwgNzEsIDY5LCAKICAgICAxMjgsIDg3LCA2OSwgNjgsIDY4LCA3MywgNzgsIDcxLCAxMjgsIDg3LCA2OSwgNjYsIDEyOCwgODcsIDY5LCA2NSwgODIsIAogICAgIDIxNywgODcsIDY5LCA2NSwgODAsIDc5LCA3OCwgMTI4LCA4NywgNjcsIDEyOCwgODcsIDY2LCAxMjgsIDg3LCA2NSwgODksIApAQCAtMjU3LDI1MSArMjU4LDI1MyBAQAogICAgIDEyOCwgODcsIDY1LCA4MywgODMsIDY1LCA3NiwgNzYsIDY1LCA3NywgMTI4LCA4NywgNjUsIDgzLCA3NiwgNjUsIDEyOCwgCiAgICAgODcsIDY1LCA4MywgNzYsIDE5MywgODcsIDY1LCA4MywgNjUsIDc2LCA3NiwgNjUsIDc3LCAxMjgsIDg3LCA2NSwgODMsIDY1LCAKICAgICA3NiwgNzYsIDY1LCAyMDUsIDg3LCA2NSwgODIsIDc4LCA3MywgNzgsIDE5OSwgODcsIDY1LCA4MiwgNjUsIDc4LCAxOTksIAotICAgIDg3LCA2NSwgODAsIDEyOCwgODcsIDY1LCA3OCwgNzMsIDc4LCAxOTksIDg3LCA2NSwgNzgsIDcxLCA3NSwgODUsIDc5LCA4MSwgCi0gICAgMTI4LCA4NywgNjUsIDc4LCA2OCwgNjksIDgyLCA2OSwgODIsIDEyOCwgODcsIDY1LCA3OCwgMTI4LCA4NywgNjUsIDc2LCAKLSAgICA3NiwgODAsIDc2LCA2NSwgNzgsIDE5NywgODcsIDY1LCA3NiwgNzYsIDEyOCwgODcsIDY1LCA3NiwgMjA0LCA4NywgNjUsIAotICAgIDc2LCA3NSwgMTI4LCA4NywgNjUsIDc2LCAyMDMsIDg3LCA2NSwgNzMsIDg0LCA3MywgNzgsIDcxLCAxMjgsIDg3LCA2NSwgCi0gICAgNzMsIDgzLCA4NCwgMTI4LCA4NywgNjUsIDczLCAxMjgsIDg3LCA2NSwgNjksIDc4LCAxMjgsIDg3LCA2NSwgNjksIDEyOCwgCi0gICAgODcsIDY1LCA2OCwgNjgsIDY1LCAxMjgsIDg3LCA2NSwgNjUsIDg2LCA4NSwgMTI4LCA4NywgNDgsIDUwLCA1MywgMTI4LCAKLSAgICA4NywgNDgsIDUwLCA1MiwgNjUsIDEyOCwgODcsIDQ4LCA1MCwgNTIsIDEyOCwgODcsIDQ4LCA1MCwgNTEsIDEyOCwgODcsIAotICAgIDQ4LCA1MCwgNTAsIDEyOCwgODcsIDQ4LCA1MCwgNDksIDEyOCwgODcsIDQ4LCA1MCwgNDgsIDEyOCwgODcsIDQ4LCA0OSwgCi0gICAgNTcsIDEyOCwgODcsIDQ4LCA0OSwgNTYsIDY1LCAxMjgsIDg3LCA0OCwgNDksIDU2LCAxMjgsIDg3LCA0OCwgNDksIDU1LCAKLSAgICA2NSwgMTI4LCA4NywgNDgsIDQ5LCA1NSwgMTI4LCA4NywgNDgsIDQ5LCA1NCwgMTI4LCA4NywgNDgsIDQ5LCA1MywgMTI4LCAKLSAgICA4NywgNDgsIDQ5LCA1MiwgNjUsIDEyOCwgODcsIDQ4LCA0OSwgNTIsIDEyOCwgODcsIDQ4LCA0OSwgNTEsIDEyOCwgODcsIAotICAgIDQ4LCA0OSwgNTAsIDEyOCwgODcsIDQ4LCA0OSwgNDksIDEyOCwgODcsIDQ4LCA0OSwgNDgsIDY1LCAxMjgsIDg3LCA0OCwgCi0gICAgNDksIDQ4LCAxMjgsIDg3LCA0OCwgNDgsIDU3LCA2NSwgMTI4LCA4NywgNDgsIDQ4LCA1NywgMTI4LCA4NywgNDgsIDQ4LCAKLSAgICA1NiwgMTI4LCA4NywgNDgsIDQ4LCA1NSwgMTI4LCA4NywgNDgsIDQ4LCA1NCwgMTI4LCA4NywgNDgsIDQ4LCA1MywgMTI4LCAKLSAgICA4NywgNDgsIDQ4LCA1MiwgMTI4LCA4NywgNDgsIDQ4LCA1MSwgNjUsIDEyOCwgODcsIDQ4LCA0OCwgNTEsIDEyOCwgODcsIAotICAgIDQ4LCA0OCwgNTAsIDEyOCwgODcsIDQ4LCA0OCwgNDksIDEyOCwgODYsIDkwLCA3NywgNjksIDg0LCAxMjgsIDg2LCA4OSwgCi0gICAgODgsIDEyOCwgODYsIDg5LCA4NCwgMTI4LCA4NiwgODksIDgyLCA4OCwgMTI4LCA4NiwgODksIDgyLCAxMjgsIDg2LCA4OSwgCi0gICAgODAsIDEyOCwgODYsIDg5LCAxMjgsIDg2LCA4NywgNzQsIDEyOCwgODYsIDg3LCA2NSwgMTI4LCA4NiwgODUsIDg4LCAxMjgsIAotICAgIDg2LCA4NSwgODUsIDEyOCwgODYsIDg1LCA4NCwgMTI4LCA4NiwgODUsIDgyLCA4OCwgMTI4LCA4NiwgODUsIDgyLCAxMjgsIAotICAgIDg2LCA4NSwgODAsIDEyOCwgODYsIDg1LCA3NiwgNzEsIDY1LCAyMTAsIDg2LCA4NSwgNjksIDgxLCAxMjgsIDg2LCA4NCwgCi0gICAgODMsIDEyOCwgODYsIDg0LCAxMjgsIDg2LCA4MywgNTcsIDU3LCAxMjgsIDg2LCA4MywgNTcsIDU2LCAxMjgsIDg2LCA4MywgCi0gICAgNTcsIDU1LCAxMjgsIDg2LCA4MywgNTcsIDU0LCAxMjgsIDg2LCA4MywgNTcsIDUzLCAxMjgsIDg2LCA4MywgNTcsIDUyLCAKLSAgICAxMjgsIDg2LCA4MywgNTcsIDUxLCAxMjgsIDg2LCA4MywgNTcsIDUwLCAxMjgsIDg2LCA4MywgNTcsIDQ5LCAxMjgsIDg2LCAKLSAgICA4MywgNTcsIDQ4LCAxMjgsIDg2LCA4MywgNTcsIDEyOCwgODYsIDgzLCA1NiwgNTcsIDEyOCwgODYsIDgzLCA1NiwgNTYsIAotICAgIDEyOCwgODYsIDgzLCA1NiwgNTUsIDEyOCwgODYsIDgzLCA1NiwgNTQsIDEyOCwgODYsIDgzLCA1NiwgNTMsIDEyOCwgODYsIAotICAgIDgzLCA1NiwgNTIsIDEyOCwgODYsIDgzLCA1NiwgNTEsIDEyOCwgODYsIDgzLCA1NiwgNTAsIDEyOCwgODYsIDgzLCA1NiwgCi0gICAgNDksIDEyOCwgODYsIDgzLCA1NiwgNDgsIDEyOCwgODYsIDgzLCA1NiwgMTI4LCA4NiwgODMsIDU1LCA1NywgMTI4LCA4NiwgCi0gICAgODMsIDU1LCA1NiwgMTI4LCA4NiwgODMsIDU1LCA1NSwgMTI4LCA4NiwgODMsIDU1LCA1NCwgMTI4LCA4NiwgODMsIDU1LCAKLSAgICA1MywgMTI4LCA4NiwgODMsIDU1LCA1MiwgMTI4LCA4NiwgODMsIDU1LCA1MSwgMTI4LCA4NiwgODMsIDU1LCA1MCwgMTI4LCAKLSAgICA4NiwgODMsIDU1LCA0OSwgMTI4LCA4NiwgODMsIDU1LCA0OCwgMTI4LCA4NiwgODMsIDU1LCAxMjgsIDg2LCA4MywgNTQsIAotICAgIDU3LCAxMjgsIDg2LCA4MywgNTQsIDU2LCAxMjgsIDg2LCA4MywgNTQsIDU1LCAxMjgsIDg2LCA4MywgNTQsIDU0LCAxMjgsIAotICAgIDg2LCA4MywgNTQsIDUzLCAxMjgsIDg2LCA4MywgNTQsIDUyLCAxMjgsIDg2LCA4MywgNTQsIDUxLCAxMjgsIDg2LCA4MywgCi0gICAgNTQsIDUwLCAxMjgsIDg2LCA4MywgNTQsIDQ5LCAxMjgsIDg2LCA4MywgNTQsIDQ4LCAxMjgsIDg2LCA4MywgNTQsIDEyOCwgCi0gICAgODYsIDgzLCA1MywgNTcsIDEyOCwgODYsIDgzLCA1MywgNTYsIDEyOCwgODYsIDgzLCA1MywgNTUsIDEyOCwgODYsIDgzLCAKLSAgICA1MywgNTQsIDEyOCwgODYsIDgzLCA1MywgNTMsIDEyOCwgODYsIDgzLCA1MywgNTIsIDEyOCwgODYsIDgzLCA1MywgNTEsIAotICAgIDEyOCwgODYsIDgzLCA1MywgNTAsIDEyOCwgODYsIDgzLCA1MywgNDksIDEyOCwgODYsIDgzLCA1MywgNDgsIDEyOCwgODYsIAotICAgIDgzLCA1MywgMTI4LCA4NiwgODMsIDUyLCA1NywgMTI4LCA4NiwgODMsIDUyLCA1NiwgMTI4LCA4NiwgODMsIDUyLCA1NSwgCi0gICAgMTI4LCA4NiwgODMsIDUyLCA1NCwgMTI4LCA4NiwgODMsIDUyLCA1MywgMTI4LCA4NiwgODMsIDUyLCA1MiwgMTI4LCA4NiwgCi0gICAgODMsIDUyLCA1MSwgMTI4LCA4NiwgODMsIDUyLCA1MCwgMTI4LCA4NiwgODMsIDUyLCA0OSwgMTI4LCA4NiwgODMsIDUyLCAKLSAgICA0OCwgMTI4LCA4NiwgODMsIDUyLCAxMjgsIDg2LCA4MywgNTEsIDU3LCAxMjgsIDg2LCA4MywgNTEsIDU2LCAxMjgsIDg2LCAKLSAgICA4MywgNTEsIDU1LCAxMjgsIDg2LCA4MywgNTEsIDU0LCAxMjgsIDg2LCA4MywgNTEsIDUzLCAxMjgsIDg2LCA4MywgNTEsIAotICAgIDUyLCAxMjgsIDg2LCA4MywgNTEsIDUxLCAxMjgsIDg2LCA4MywgNTEsIDUwLCAxMjgsIDg2LCA4MywgNTEsIDQ5LCAxMjgsIAotICAgIDg2LCA4MywgNTEsIDQ4LCAxMjgsIDg2LCA4MywgNTEsIDEyOCwgODYsIDgzLCA1MCwgNTcsIDEyOCwgODYsIDgzLCA1MCwgCi0gICAgNTYsIDEyOCwgODYsIDgzLCA1MCwgNTUsIDEyOCwgODYsIDgzLCA1MCwgNTQsIDEyOCwgODYsIDgzLCA1MCwgNTMsIDU0LCAKLSAgICAxMjgsIDg2LCA4MywgNTAsIDUzLCA1MywgMTI4LCA4NiwgODMsIDUwLCA1MywgNTIsIDEyOCwgODYsIDgzLCA1MCwgNTMsIAotICAgIDUxLCAxMjgsIDg2LCA4MywgNTAsIDUzLCA1MCwgMTI4LCA4NiwgODMsIDUwLCA1MywgNDksIDEyOCwgODYsIDgzLCA1MCwgCi0gICAgNTMsIDQ4LCAxMjgsIDg2LCA4MywgNTAsIDUzLCAxMjgsIDg2LCA4MywgNTAsIDUyLCA1NywgMTI4LCA4NiwgODMsIDUwLCAKLSAgICA1MiwgNTYsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDU1LCAxMjgsIDg2LCA4MywgNTAsIDUyLCA1NCwgMTI4LCA4NiwgODMsIAotICAgIDUwLCA1MiwgNTMsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDUyLCAxMjgsIDg2LCA4MywgNTAsIDUyLCA1MSwgMTI4LCA4NiwgCi0gICAgODMsIDUwLCA1MiwgNTAsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDQ5LCAxMjgsIDg2LCA4MywgNTAsIDUyLCA0OCwgMTI4LCAKLSAgICA4NiwgODMsIDUwLCA1MiwgMTI4LCA4NiwgODMsIDUwLCA1MSwgNTcsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDU2LCAxMjgsIAotICAgIDg2LCA4MywgNTAsIDUxLCA1NSwgMTI4LCA4NiwgODMsIDUwLCA1MSwgNTQsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDUzLCAKLSAgICAxMjgsIDg2LCA4MywgNTAsIDUxLCA1MiwgMTI4LCA4NiwgODMsIDUwLCA1MSwgNTEsIDEyOCwgODYsIDgzLCA1MCwgNTEsIAotICAgIDUwLCAxMjgsIDg2LCA4MywgNTAsIDUxLCA0OSwgMTI4LCA4NiwgODMsIDUwLCA1MSwgNDgsIDEyOCwgODYsIDgzLCA1MCwgCi0gICAgNTEsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDU3LCAxMjgsIDg2LCA4MywgNTAsIDUwLCA1NiwgMTI4LCA4NiwgODMsIDUwLCAKLSAgICA1MCwgNTUsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDU0LCAxMjgsIDg2LCA4MywgNTAsIDUwLCA1MywgMTI4LCA4NiwgODMsIAotICAgIDUwLCA1MCwgNTIsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDUxLCAxMjgsIDg2LCA4MywgNTAsIDUwLCA1MCwgMTI4LCA4NiwgCi0gICAgODMsIDUwLCA1MCwgNDksIDEyOCwgODYsIDgzLCA1MCwgNTAsIDQ4LCAxMjgsIDg2LCA4MywgNTAsIDUwLCAxMjgsIDg2LCAKLSAgICA4MywgNTAsIDQ5LCA1NywgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTYsIDEyOCwgODYsIDgzLCA1MCwgNDksIDU1LCAxMjgsIAotICAgIDg2LCA4MywgNTAsIDQ5LCA1NCwgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTMsIDEyOCwgODYsIDgzLCA1MCwgNDksIDUyLCAKLSAgICAxMjgsIDg2LCA4MywgNTAsIDQ5LCA1MSwgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTAsIDEyOCwgODYsIDgzLCA1MCwgNDksIAotICAgIDQ5LCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA0OCwgMTI4LCA4NiwgODMsIDUwLCA0OSwgMTI4LCA4NiwgODMsIDUwLCA0OCwgCi0gICAgNTcsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDU2LCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA1NSwgMTI4LCA4NiwgODMsIDUwLCAKLSAgICA0OCwgNTQsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDUzLCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA1MiwgMTI4LCA4NiwgODMsIAotICAgIDUwLCA0OCwgNTEsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDUwLCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA0OSwgMTI4LCA4NiwgCi0gICAgODMsIDUwLCA0OCwgNDgsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDEyOCwgODYsIDgzLCA1MCwgMTI4LCA4NiwgODMsIDQ5LCAKLSAgICA1NywgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDU2LCAxMjgsIDg2LCA4MywgNDksIDU3LCA1NSwgMTI4LCA4NiwgODMsIAotICAgIDQ5LCA1NywgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDUzLCAxMjgsIDg2LCA4MywgNDksIDU3LCA1MiwgMTI4LCA4NiwgCi0gICAgODMsIDQ5LCA1NywgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDUwLCAxMjgsIDg2LCA4MywgNDksIDU3LCA0OSwgMTI4LCAKLSAgICA4NiwgODMsIDQ5LCA1NywgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDU3LCAxMjgsIAotICAgIDg2LCA4MywgNDksIDU2LCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDU0LCAKLSAgICAxMjgsIDg2LCA4MywgNDksIDU2LCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTYsIAotICAgIDUxLCAxMjgsIDg2LCA4MywgNDksIDU2LCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNDksIDEyOCwgODYsIDgzLCA0OSwgCi0gICAgNTYsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDU2LCAxMjgsIDg2LCA4MywgNDksIDU1LCA1NywgMTI4LCA4NiwgODMsIDQ5LCAKLSAgICA1NSwgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDU1LCAxMjgsIDg2LCA4MywgNDksIDU1LCA1NCwgMTI4LCA4NiwgODMsIAotICAgIDQ5LCA1NSwgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDUyLCAxMjgsIDg2LCA4MywgNDksIDU1LCA1MSwgMTI4LCA4NiwgCi0gICAgODMsIDQ5LCA1NSwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDQ5LCAxMjgsIDg2LCA4MywgNDksIDU1LCA0OCwgMTI4LCAKLSAgICA4NiwgODMsIDQ5LCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDU2LCAxMjgsIAotICAgIDg2LCA4MywgNDksIDU0LCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDUzLCAKLSAgICAxMjgsIDg2LCA4MywgNDksIDU0LCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTQsIAotICAgIDUwLCAxMjgsIDg2LCA4MywgNDksIDU0LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNDgsIDEyOCwgODYsIDgzLCA0OSwgCi0gICAgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDU3LCAxMjgsIDg2LCA4MywgNDksIDUzLCA1NiwgMTI4LCA4NiwgODMsIDQ5LCAKLSAgICA1MywgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDU0LCAxMjgsIDg2LCA4MywgNDksIDUzLCA1MywgMTI4LCA4NiwgODMsIAotICAgIDQ5LCA1MywgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDUxLCAxMjgsIDg2LCA4MywgNDksIDUzLCA1MCwgMTI4LCA4NiwgCi0gICAgODMsIDQ5LCA1MywgNDksIDEyOCwgODYsIDgzLCA0OSwgNTMsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDUzLCAxMjgsIDg2LCAKLSAgICA4MywgNDksIDUyLCA1NywgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDU1LCAxMjgsIAotICAgIDg2LCA4MywgNDksIDUyLCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDUyLCAKLSAgICAxMjgsIDg2LCA4MywgNDksIDUyLCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTIsIAotICAgIDQ5LCAxMjgsIDg2LCA4MywgNDksIDUyLCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgCi0gICAgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDU2LCAxMjgsIDg2LCA4MywgNDksIDUxLCA1NSwgMTI4LCA4NiwgODMsIDQ5LCAKLSAgICA1MSwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDUzLCAxMjgsIDg2LCA4MywgNDksIDUxLCA1MiwgMTI4LCA4NiwgODMsIAotICAgIDQ5LCA1MSwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDUwLCAxMjgsIDg2LCA4MywgNDksIDUxLCA0OSwgMTI4LCA4NiwgCi0gICAgODMsIDQ5LCA1MSwgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDU3LCAxMjgsIDg2LCAKLSAgICA4MywgNDksIDUwLCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDU0LCAxMjgsIAotICAgIDg2LCA4MywgNDksIDUwLCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDUxLCAKLSAgICAxMjgsIDg2LCA4MywgNDksIDUwLCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNDksIDEyOCwgODYsIDgzLCA0OSwgNTAsIAotICAgIDQ4LCAxMjgsIDg2LCA4MywgNDksIDUwLCAxMjgsIDg2LCA4MywgNDksIDQ5LCA1NywgMTI4LCA4NiwgODMsIDQ5LCA0OSwgCi0gICAgNTYsIDEyOCwgODYsIDgzLCA0OSwgNDksIDU1LCAxMjgsIDg2LCA4MywgNDksIDQ5LCA1NCwgMTI4LCA4NiwgODMsIDQ5LCAKLSAgICA0OSwgNTMsIDEyOCwgODYsIDgzLCA0OSwgNDksIDUyLCAxMjgsIDg2LCA4MywgNDksIDQ5LCA1MSwgMTI4LCA4NiwgODMsIAotICAgIDQ5LCA0OSwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNDksIDQ5LCAxMjgsIDg2LCA4MywgNDksIDQ5LCA0OCwgMTI4LCA4NiwgCi0gICAgODMsIDQ5LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDU2LCAxMjgsIDg2LCAKLSAgICA4MywgNDksIDQ4LCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDUzLCAxMjgsIAotICAgIDg2LCA4MywgNDksIDQ4LCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDUwLCAKLSAgICAxMjgsIDg2LCA4MywgNDksIDQ4LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNDgsIDEyOCwgODYsIDgzLCA0OSwgNDgsIAotICAgIDEyOCwgODYsIDgzLCA0OSwgMTI4LCA4NiwgODMsIDEyOCwgODYsIDgyLCA2NSwgNjcsIDcyLCA4OSwgMTI4LCA4NiwgNzksIAotICAgIDg4LCAxMjgsIDg2LCA3OSwgODcsIDY5LCA3NiwgNDUsIDY3LCA2NSwgODIsIDgyLCA3MywgNjksIDIxMCwgODYsIDc5LCA4NywgCi0gICAgMTI4LCA4NiwgNzksIDg1LCAxMjgsIDg2LCA3OSwgODQsIDEyOCwgODYsIDc5LCAyMTEsIDg2LCA3OSwgODAsIDEyOCwgODYsIAotICAgIDc5LCA3OSwgNzMsIDEyOCwgODYsIDc5LCA3OSwgMTI4LCA4NiwgNzksIDc3LCAxMjgsIDg2LCA3OSwgNzYsIDg1LCA3NywgCi0gICAgMTk3LCA4NiwgNzksIDc2LCA4NCwgNjUsIDcxLCAxOTcsIDg2LCA3OSwgNzYsIDc2LCA2OSwgODksIDY2LCA2NSwgNzYsIDc2LCAKLSAgICAxMjgsIDg2LCA3OSwgNzYsIDY3LCA2NSwgNzgsIDc5LCAxMjgsIDg2LCA3OSwgNzYsIDY1LCA4MCwgODUsIDIwMywgODYsIAotICAgIDc5LCA3MywgMTk2LCA4NiwgNzksIDczLCA2NywgNzMsIDc4LCA3MSwgMTI4LCA4NiwgNzksIDczLCA2NywgNjksIDc2LCA2OSwgCi0gICAgODMsIDIxMSwgODYsIDc5LCA3MywgNjcsIDY5LCAxOTYsIDg2LCA3OSwgNjcsIDY1LCA3NiwgNzMsIDkwLCA2NSwgODQsIDczLCAKLSAgICA3OSwgMjA2LCA4NiwgNzksIDY3LCA2NSwgMjA0LCA4NiwgNzksIDEyOCwgODYsIDczLCA4OSwgNzksIDEyOCwgODYsIDczLCAKLSAgICA4OCwgMTI4LCA4NiwgNzMsIDg0LCA4MiwgNzMsIDc5LCA3NiwgNDUsIDUwLCAxMjgsIDg2LCA3MywgODQsIDgyLCA3MywgNzksIAotICAgIDc2LCAxMjgsIDg2LCA3MywgODQsIDY1LCA2OSwgNDUsIDUwLCAxMjgsIDg2LCA3MywgODQsIDY1LCA2OSwgMTI4LCA4NiwgCi0gICAgNzMsIDg0LCAxMjgsIDg2LCA3MywgODMsIDczLCA3MSwgNzksIDg0LCA3MiwgNzMsIDE5NSwgODYsIDczLCA4MywgNjUsIDgyLCAKLSAgICA3MSwgNjUsIDg5LCA2NSwgMTI4LCA4NiwgNzMsIDgzLCA2NSwgODIsIDcxLCA2NSwgMTI4LCA4NiwgNzMsIDgzLCA2NSwgODIsIAotICAgIDcxLCAxOTMsIDg2LCA3MywgODIsIDczLCA2NSwgNzcsIDEyOCwgODYsIDczLCA4MiwgNzEsIDc5LCAxMjgsIDg2LCA3MywgCi0gICAgODIsIDcxLCA2NSwgMTI4LCA4NiwgNzMsIDgyLCA2NSwgNzcsIDY1LCAxMjgsIDg2LCA3MywgODAsIDEyOCwgODYsIDczLCAKLSAgICA3OSwgNzYsIDczLCA3OCwgMTI4LCA4NiwgNzMsIDc4LCA2OSwgNzEsIDY1LCA4MiwgNDUsIDUxLCAxMjgsIDg2LCA3MywgNzgsIAotICAgIDY5LCA3MSwgNjUsIDgyLCA0NSwgNTAsIDEyOCwgODYsIDczLCA3OCwgNjksIDcxLCA2NSwgODIsIDEyOCwgODYsIDczLCA3OCwgCi0gICAgNjksIDcxLCA2NSwgMjEwLCA4NiwgNzMsIDc4LCA2OSwgMTI4LCA4NiwgNzMsIDc4LCAxOTcsIDg2LCA3MywgNzgsIDEyOCwgCi0gICAgODYsIDczLCA3NiwgNzYsIDY1LCA3MSwgNjksIDEyOCwgODYsIDczLCA3MywgMTI4LCA4NiwgNzMsIDY5LCA4OCwgMTI4LCAKLSAgICA4NiwgNzMsIDY5LCA4NywgNzMsIDc4LCAxOTksIDg2LCA3MywgNjksIDg3LCA2OCwgNjUsIDg0LCAxOTMsIDg2LCA3MywgNjksIAotICAgIDg0LCAxMjgsIDg2LCA3MywgNjksIDIxMiwgODYsIDczLCA2OSwgODAsIDEyOCwgODYsIDczLCA2OSwgMTI4LCA4NiwgNzMsIAotICAgIDY4LCA3NCwgNDUsIDUwLCAxMjgsIDg2LCA3MywgNjgsIDc0LCAxMjgsIDg2LCA3MywgNjgsIDY5LCA3OSwgNjcsIDY1LCA4MywgCi0gICAgODMsIDY5LCA4NCwgODQsIDY5LCAxMjgsIDg2LCA3MywgNjgsIDY5LCAyMDcsIDg2LCA3MywgNjgsIDY1LCAxMjgsIDg2LCAKLSAgICA3MywgNjcsIDg0LCA3OSwgODIsIDIxNywgODYsIDczLCA2NiwgODIsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDg2LCA3MCwgNjUsIAotICAgIDEyOCwgODYsIDY5LCA4OSwgOTAsIDEyOCwgODYsIDY5LCA4OCwgMTI4LCA4NiwgNjksIDg3LCAxMjgsIDg2LCA2OSwgMjE1LCAKLSAgICA4NiwgNjksIDg1LCA4OCwgMTI4LCA4NiwgNjksIDg1LCA3NywgMTI4LCA4NiwgNjksIDg1LCA2NSwgNjksIDgwLCA2OSwgNzgsIAotICAgIDEyOCwgODYsIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDg2LCA2OSwgODMsIDg0LCA2NSwgMTI4LCA4NiwgNjksIDgzLCA4MywgCi0gICAgNjksIDIwNCwgODYsIDY5LCA4MiwgMjE3LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDc2LCA4OSwgMTI4LCAKLSAgICA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDc2LCAyMTcsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCi0gICAgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIAotICAgIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUyLCAKLSAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIAotICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKLSAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCi0gICAgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIAotICAgIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUzLCAKLSAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIAotICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKLSAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCi0gICAgNDUsIDQ4LCA1MywgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIAotICAgIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDU0LCAKLSAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIAotICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKLSAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCi0gICAgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIAotICAgIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDQ4LCAKLSAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIAotICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKLSAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCi0gICAgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIAotICAgIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDQ5LCAKLSAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIAotICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKLSAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCi0gICAgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIAotICAgIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDUwLCAKLSAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIAotICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKLSAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCi0gICAgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIAotICAgIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUxLCAKLSAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIAotICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKLSAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCi0gICAgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIAotICAgIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUyLCAKLSAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIAotICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKLSAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCi0gICAgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDEyOCwgODYsIDY5LCAKLSAgICA4MiwgODMsIDczLCA2NywgNzYsIDY5LCAxMjgsIDg2LCA2OSwgODIsIDgzLCAxOTcsIDg2LCA2OSwgODIsIDcxLCA2OSwgCi0gICAgMTI4LCA4NiwgNjksIDgyLCA2OCwgNzMsIDcxLCA4MiwgNzMsIDgzLCAxMjgsIDg2LCA2OSwgODIsIDEyOCwgODYsIDY5LCAKLSAgICA4MCwgMTI4LCA4NiwgNjksIDc4LCA2OCwgMTI4LCA4NiwgNjksIDczLCA3NiwgMTI4LCA4NiwgNjksIDcyLCA3MywgNjcsIAotICAgIDc2LCA2OSwgMTI4LCA4NiwgNjksIDcyLCAxMjgsIDg2LCA2OSwgMjAwLCA4NiwgNjksIDY5LCAxMjgsIDg2LCA2OSwgMTk3LCAKLSAgICA4NiwgNjksIDY4LCA2OSwgMTI4LCA4NiwgNjksIDY3LCA4NCwgNzksIDIxMCwgODYsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIAotICAgIDEyOCwgODYsIDY1LCA4OCwgMTI4LCA4NiwgNjUsIDg2LCAxMjgsIDg2LCA2NSwgMjE0LCA4NiwgNjUsIDg1LCAxMjgsIDg2LCAKLSAgICA2NSwgODQsIDcyLCA4OSwgMTI4LCA4NiwgNjUsIDg0LCAxMjgsIDg2LCA2NSwgODMsIDg0LCA3OCwgNjksIDgzLCAyMTEsIAotICAgIDg2LCA2NSwgODMsIDczLCA4MywgMTI4LCA4NiwgNjUsIDgyLCA4OSwgMjExLCA4NiwgNjUsIDgyLCA3MywgNzUsIDY1LCAKLSAgICAxMjgsIDg2LCA2NSwgODIsIDczLCA2NSwgNzgsIDg0LCAxMjgsIDg2LCA2NSwgODIsIDczLCA2NSwgNzgsIDIxMiwgODYsIAotICAgIDY1LCA4MiwgNzMsIDY1LCAxMjgsIDg2LCA2NSwgODIsIDczLCAxOTMsIDg2LCA2NSwgODIsIDY5LCA3MywgNjUsIDIwMSwgCi0gICAgODYsIDY1LCA4MiwgNjksIDczLCAxOTMsIDg2LCA2NSwgODAsIDc5LCA4NSwgODIsIDgzLCAxMjgsIDg2LCA2NSwgODAsIAotICAgIDEyOCwgODYsIDY1LCA3OCwgNjksIDEyOCwgODYsIDY1LCA3NywgNjUsIDcxLCA3OSwgNzcsIDg1LCA3NSwgNzIsIDY1LCAKLSAgICAxMjgsIDg2LCA2NSwgNzcsIDY1LCA3MSwgNzksIDc3LCA4NSwgNzUsIDcyLCAxOTMsIDg2LCA2NSwgNzYsIDc2LCA2OSwgODksIAotICAgIDEyOCwgODYsIDY1LCA3NCwgMTI4LCA4NiwgNjUsIDczLCAxMjgsIDg2LCA2NSwgNzIsIDEyOCwgODYsIDY1LCAyMDAsIDg2LCAKLSAgICA2NSwgNjUsIDg2LCA4NSwgMTI4LCA4NiwgNjUsIDY1LCAxMjgsIDg2LCA0OCwgNTIsIDQ4LCA2NSwgMTI4LCA4NiwgNDgsIAotICAgIDUyLCA0OCwgMTI4LCA4NiwgNDgsIDUxLCA1NywgMTI4LCA4NiwgNDgsIDUxLCA1NiwgMTI4LCA4NiwgNDgsIDUxLCA1NSwgCi0gICAgNjUsIDEyOCwgODYsIDQ4LCA1MSwgNTUsIDEyOCwgODYsIDQ4LCA1MSwgNTQsIDEyOCwgODYsIDQ4LCA1MSwgNTMsIDEyOCwgCi0gICAgODYsIDQ4LCA1MSwgNTIsIDEyOCwgODYsIDQ4LCA1MSwgNTEsIDY1LCAxMjgsIDg2LCA0OCwgNTEsIDUxLCAxMjgsIDg2LCAKLSAgICA0OCwgNTEsIDUwLCAxMjgsIDg2LCA0OCwgNTEsIDQ5LCA2NSwgMTI4LCA4NiwgNDgsIDUxLCA0OSwgMTI4LCA4NiwgNDgsIAotICAgIDUxLCA0OCwgNjUsIDEyOCwgODYsIDQ4LCA1MSwgNDgsIDEyOCwgODYsIDQ4LCA1MCwgNTcsIDY1LCAxMjgsIDg2LCA0OCwgCi0gICAgNTAsIDU3LCAxMjgsIDg2LCA0OCwgNTAsIDU2LCA2NSwgMTI4LCA4NiwgNDgsIDUwLCA1NiwgMTI4LCA4NiwgNDgsIDUwLCAKLSAgICA1NSwgMTI4LCA4NiwgNDgsIDUwLCA1NCwgMTI4LCA4NiwgNDgsIDUwLCA1MywgMTI4LCA4NiwgNDgsIDUwLCA1MiwgMTI4LCAKLSAgICA4NiwgNDgsIDUwLCA1MSwgNjUsIDEyOCwgODYsIDQ4LCA1MCwgNTEsIDEyOCwgODYsIDQ4LCA1MCwgNTAsIDEyOCwgODYsIAotICAgIDQ4LCA1MCwgNDksIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDc2LCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA3NSwgMTI4LCA4NiwgCi0gICAgNDgsIDUwLCA0OCwgNzQsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDczLCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA3MiwgMTI4LCAKLSAgICA4NiwgNDgsIDUwLCA0OCwgNzEsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDcwLCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA2OSwgCi0gICAgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNjgsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDY3LCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCAKLSAgICA2NiwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNjUsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDEyOCwgODYsIDQ4LCA0OSwgNTcsIAotICAgIDEyOCwgODYsIDQ4LCA0OSwgNTYsIDEyOCwgODYsIDQ4LCA0OSwgNTUsIDEyOCwgODYsIDQ4LCA0OSwgNTQsIDEyOCwgODYsIAotICAgIDQ4LCA0OSwgNTMsIDEyOCwgODYsIDQ4LCA0OSwgNTIsIDEyOCwgODYsIDQ4LCA0OSwgNTEsIDEyOCwgODYsIDQ4LCA0OSwgCi0gICAgNTAsIDY2LCAxMjgsIDg2LCA0OCwgNDksIDUwLCA2NSwgMTI4LCA4NiwgNDgsIDQ5LCA1MCwgMTI4LCA4NiwgNDgsIDQ5LCAKLSAgICA0OSwgNjcsIDEyOCwgODYsIDQ4LCA0OSwgNDksIDY2LCAxMjgsIDg2LCA0OCwgNDksIDQ5LCA2NSwgMTI4LCA4NiwgNDgsIAotICAgIDQ5LCA0OSwgMTI4LCA4NiwgNDgsIDQ5LCA0OCwgMTI4LCA4NiwgNDgsIDQ4LCA1NywgMTI4LCA4NiwgNDgsIDQ4LCA1NiwgCi0gICAgMTI4LCA4NiwgNDgsIDQ4LCA1NSwgNjYsIDEyOCwgODYsIDQ4LCA0OCwgNTUsIDY1LCAxMjgsIDg2LCA0OCwgNDgsIDU1LCAKLSAgICAxMjgsIDg2LCA0OCwgNDgsIDU0LCAxMjgsIDg2LCA0OCwgNDgsIDUzLCAxMjgsIDg2LCA0OCwgNDgsIDUyLCAxMjgsIDg2LCAKLSAgICA0OCwgNDgsIDUxLCAxMjgsIDg2LCA0OCwgNDgsIDUwLCA2NSwgMTI4LCA4NiwgNDgsIDQ4LCA1MCwgMTI4LCA4NiwgNDgsIAotICAgIDQ4LCA0OSwgNzMsIDEyOCwgODYsIDQ4LCA0OCwgNDksIDcyLCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA3MSwgMTI4LCA4NiwgCi0gICAgNDgsIDQ4LCA0OSwgNzAsIDEyOCwgODYsIDQ4LCA0OCwgNDksIDY5LCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA2OCwgMTI4LCAKLSAgICA4NiwgNDgsIDQ4LCA0OSwgNjcsIDEyOCwgODYsIDQ4LCA0OCwgNDksIDY2LCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA2NSwgCi0gICAgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgMTI4LCA4NSwgOTAsIDg1LCAxMjgsIDg1LCA5MCwgNTEsIDEyOCwgODUsIDkwLCAxNzksIAotICAgIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODUsIDg5LCAxMjgsIDg1LCA4NywgODUsIDEyOCwgODUsIDg1LCA4OSwgCi0gICAgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODUsIDg1LCA4NSwgODUsIDEyOCwgODUsIDg1LCA4NSwgNTEsIDEyOCwgODUsIDg1LCAKLSAgICA4NSwgNTAsIDEyOCwgODUsIDg1LCA2OSwgMTI4LCA4NSwgODQsIDg1LCA3NSwgNzMsIDEyOCwgODUsIDgzLCA4MywgODUsIAotICAgIDUxLCAxMjgsIDg1LCA4MywgODMsIDg1LCAxMjgsIDg1LCA4MywgNzIsIDg4LCAxMjgsIDg1LCA4MywgNzIsIDg1LCA3NywgCi0gICAgODgsIDEyOCwgODUsIDgzLCA3MiwgNjksIDc4LCA3OCwgNjUsIDEyOCwgODUsIDgzLCA3MiwgNTAsIDEyOCwgODUsIDgzLCAKLSAgICA3MiwgMTI4LCA4NSwgODMsIDIwMCwgODUsIDgzLCA2OSwgMTk2LCA4NSwgODMsIDY5LCA0NSwgNTAsIDEyOCwgODUsIDgzLCAKLSAgICA2OSwgNDUsIDQ5LCAxMjgsIDg1LCA4MywgNjksIDEyOCwgODUsIDgzLCAxOTcsIDg1LCA4MiwgODUsIDIxOCwgODUsIDgyLCAKLSAgICA4NSwgODMsIDEyOCwgODUsIDgyLCA4NSwgNjgsIDY1LCAxMjgsIDg1LCA4MiwgODUsIDY4LCAxOTMsIDg1LCA4MiwgODUsIAotICAgIDEyOCwgODUsIDgyLCAyMTMsIDg1LCA4MiwgNzgsIDEyOCwgODUsIDgyLCA3MywgNzgsIDY5LCAxMjgsIDg1LCA4MiwgNzMsIAotICAgIDUxLCAxMjgsIDg1LCA4MiwgNzMsIDEyOCwgODUsIDgyLCA2NSwgNzgsIDg1LCA4MywgMTI4LCA4NSwgODIsIDY1LCAxMjgsIAotICAgIDg1LCA4MiwgNTIsIDEyOCwgODUsIDgyLCA1MCwgMTI4LCA4NSwgODIsIDE3OCwgODUsIDgwLCA4NywgNjUsIDgyLCA2OCwgCi0gICAgODMsIDEyOCwgODUsIDgwLCA4NywgNjUsIDgyLCA2OCwgMTI4LCA4NSwgODAsIDg3LCA2NSwgODIsIDE5NiwgODUsIDgwLCAKLSAgICA4NCwgODUsIDgyLCA3OCwgMTI4LCA4NSwgODAsIDgzLCA3MywgNzYsIDc5LCA3OCwgMTI4LCA4NSwgODAsIDgzLCA3MywgNzYsIAotICAgIDc5LCAyMDYsIDg1LCA4MCwgODMsIDczLCA2OCwgNjksIDQ1LCA2OCwgNzksIDg3LCAyMDYsIDg1LCA4MCwgODIsIDczLCA3MSwgCi0gICAgNzIsIDIxMiwgODUsIDgwLCA4MCwgNjksIDgyLCAxMjgsIDg1LCA4MCwgODAsIDY5LCAyMTAsIDg1LCA4MCwgNjUsIDY4LCAKLSAgICA3MiwgNzcsIDY1LCA3OCwgNzMsIDg5LCA2NSwgMTI4LCA4NSwgODAsIDQ1LCA4MCwgNzksIDczLCA3OCwgODQsIDczLCA3OCwgCi0gICAgMTk5LCA4NSwgNzksIDc4LCAxMjgsIDg1LCA3OCwgNzgsIDEyOCwgODUsIDc4LCA3NywgNjUsIDgyLCA4MiwgNzMsIDY5LCAKLSAgICAxOTYsIDg1LCA3OCwgNzUsIDc4LCA3OSwgODcsIDc4LCAxMjgsIDg1LCA3OCwgNzUsIDEyOCwgODUsIDc4LCA3MywgODYsIAotICAgIDY5LCA4MiwgODMsIDY1LCAyMDQsIDg1LCA3OCwgNzMsIDg0LCA4OSwgMTI4LCA4NSwgNzgsIDczLCA4NCwgMTI4LCA4NSwgCi0gICAgNzgsIDczLCAyMTIsIDg1LCA3OCwgNzMsIDc5LCA3OCwgMTI4LCA4NSwgNzgsIDczLCA3OSwgMjA2LCA4NSwgNzgsIDczLCAKLSAgICA3MCwgNzMsIDY5LCAxOTYsIDg1LCA3OCwgNzMsIDY3LCA3OSwgODIsIDIwNiwgODUsIDc4LCA2OCwgMjA3LCA4NSwgNzgsIAotICAgIDY4LCA2OSwgODIsIDg0LCA3MywgNjksIDEyOCwgODUsIDc4LCA2OCwgNjksIDgyLCA3NiwgNzMsIDc4LCAxOTcsIDg1LCA3OCwgCi0gICAgNjgsIDY5LCA4MiwgNjgsIDc5LCA4NCwgMTI4LCA4NSwgNzgsIDY4LCA2OSwgODIsIDY2LCA2NSwgODIsIDEyOCwgODUsIDc4LCAKLSAgICA2OCwgNjksIDgyLCAxMjgsIDg1LCA3OCwgNjgsIDY5LCAyMTAsIDg1LCA3OCwgNjcsIDczLCAxOTMsIDg1LCA3OCwgNjcsIAotICAgIDY5LCA4MiwgODQsIDY1LCA3MywgNzgsIDg0LCAyMTcsIDg1LCA3OCwgNjUsIDgzLCA4MCwgNzMsIDgyLCA2NSwgODQsIDY5LCAKLSAgICA2OCwgMTI4LCA4NSwgNzgsIDY1LCA4MCwgMTI4LCA4NSwgNzgsIDY1LCA3NywgODUsIDgzLCA2OSwgMTk2LCA4NSwgNzgsIAotICAgIDY1LCAxMjgsIDg1LCAyMDYsIDg1LCA3NywgODUsIDc3LCAxMjgsIDg1LCA3NywgODUsIDIwNSwgODUsIDc3LCA2NiwgODIsIAotICAgIDY5LCA3NiwgNzYsIDY1LCAxMjgsIDg1LCA3NywgNjYsIDgyLCA2OSwgNzYsIDc2LCAxOTMsIDg1LCA3NywgNjYsIDczLCA3OCwgCi0gICAgMTI4LCA4NSwgNzUsIDg1LCAxMjgsIDg1LCA3NSwgODIsIDY1LCA3MywgNzgsIDczLCA2NSwgMjA2LCA4NSwgNzUsIDY1LCAKLSAgICA4MiwgNjUsIDEyOCwgODUsIDc1LCA2NSwgODIsIDE5MywgODUsIDc1LCAxMjgsIDg1LCA3MywgNzYsIDc2LCA2OSwgNjUsIAotICAgIDc4LCA3OCwgMTI4LCA4NSwgNzMsIDcxLCA3MiwgODUsIDIxMCwgODUsIDcxLCA2NSwgODIsIDczLCA4NCwgNzMsIDE5NSwgCisgICAgODcsIDY1LCA4MSwgNzAsIDY1LCAxMjgsIDg3LCA2NSwgODAsIDEyOCwgODcsIDY1LCA3OCwgNzMsIDc4LCAxOTksIDg3LCAKKyAgICA2NSwgNzgsIDcxLCA3NSwgODUsIDc5LCA4MSwgMTI4LCA4NywgNjUsIDc4LCA2OCwgNjksIDgyLCA2OSwgODIsIDEyOCwgODcsIAorICAgIDY1LCA3OCwgMTI4LCA4NywgNjUsIDc2LCA3NiwgODAsIDc2LCA2NSwgNzgsIDE5NywgODcsIDY1LCA3NiwgNzYsIDEyOCwgCisgICAgODcsIDY1LCA3NiwgMjA0LCA4NywgNjUsIDc2LCA3NSwgMTI4LCA4NywgNjUsIDc2LCAyMDMsIDg3LCA2NSwgNzMsIDg0LCAKKyAgICA3MywgNzgsIDcxLCAxMjgsIDg3LCA2NSwgNzMsIDgzLCA4NCwgMTI4LCA4NywgNjUsIDczLCAxMjgsIDg3LCA2NSwgNjksIAorICAgIDc4LCAxMjgsIDg3LCA2NSwgNjksIDEyOCwgODcsIDY1LCA2OCwgNjgsIDY1LCAxMjgsIDg3LCA2NSwgNjUsIDg2LCA4NSwgCisgICAgMTI4LCA4NywgNDgsIDUwLCA1MywgMTI4LCA4NywgNDgsIDUwLCA1MiwgNjUsIDEyOCwgODcsIDQ4LCA1MCwgNTIsIDEyOCwgCisgICAgODcsIDQ4LCA1MCwgNTEsIDEyOCwgODcsIDQ4LCA1MCwgNTAsIDEyOCwgODcsIDQ4LCA1MCwgNDksIDEyOCwgODcsIDQ4LCAKKyAgICA1MCwgNDgsIDEyOCwgODcsIDQ4LCA0OSwgNTcsIDEyOCwgODcsIDQ4LCA0OSwgNTYsIDY1LCAxMjgsIDg3LCA0OCwgNDksIAorICAgIDU2LCAxMjgsIDg3LCA0OCwgNDksIDU1LCA2NSwgMTI4LCA4NywgNDgsIDQ5LCA1NSwgMTI4LCA4NywgNDgsIDQ5LCA1NCwgCisgICAgMTI4LCA4NywgNDgsIDQ5LCA1MywgMTI4LCA4NywgNDgsIDQ5LCA1MiwgNjUsIDEyOCwgODcsIDQ4LCA0OSwgNTIsIDEyOCwgCisgICAgODcsIDQ4LCA0OSwgNTEsIDEyOCwgODcsIDQ4LCA0OSwgNTAsIDEyOCwgODcsIDQ4LCA0OSwgNDksIDEyOCwgODcsIDQ4LCAKKyAgICA0OSwgNDgsIDY1LCAxMjgsIDg3LCA0OCwgNDksIDQ4LCAxMjgsIDg3LCA0OCwgNDgsIDU3LCA2NSwgMTI4LCA4NywgNDgsIAorICAgIDQ4LCA1NywgMTI4LCA4NywgNDgsIDQ4LCA1NiwgMTI4LCA4NywgNDgsIDQ4LCA1NSwgMTI4LCA4NywgNDgsIDQ4LCA1NCwgCisgICAgMTI4LCA4NywgNDgsIDQ4LCA1MywgMTI4LCA4NywgNDgsIDQ4LCA1MiwgMTI4LCA4NywgNDgsIDQ4LCA1MSwgNjUsIDEyOCwgCisgICAgODcsIDQ4LCA0OCwgNTEsIDEyOCwgODcsIDQ4LCA0OCwgNTAsIDEyOCwgODcsIDQ4LCA0OCwgNDksIDEyOCwgODYsIDkwLCAKKyAgICA3NywgNjksIDg0LCAxMjgsIDg2LCA4OSwgODgsIDEyOCwgODYsIDg5LCA4NCwgMTI4LCA4NiwgODksIDgyLCA4OCwgMTI4LCAKKyAgICA4NiwgODksIDgyLCAxMjgsIDg2LCA4OSwgODAsIDEyOCwgODYsIDg5LCAxMjgsIDg2LCA4NywgNzQsIDEyOCwgODYsIDg3LCAKKyAgICA2NSwgMTI4LCA4NiwgODUsIDg4LCAxMjgsIDg2LCA4NSwgODUsIDEyOCwgODYsIDg1LCA4NCwgMTI4LCA4NiwgODUsIDgyLCAKKyAgICA4OCwgMTI4LCA4NiwgODUsIDgyLCAxMjgsIDg2LCA4NSwgODAsIDEyOCwgODYsIDg1LCA3NiwgNzEsIDY1LCAyMTAsIDg2LCAKKyAgICA4NSwgNjksIDgxLCAxMjgsIDg2LCA4NCwgODMsIDEyOCwgODYsIDg0LCAxMjgsIDg2LCA4MywgNTcsIDU3LCAxMjgsIDg2LCAKKyAgICA4MywgNTcsIDU2LCAxMjgsIDg2LCA4MywgNTcsIDU1LCAxMjgsIDg2LCA4MywgNTcsIDU0LCAxMjgsIDg2LCA4MywgNTcsIAorICAgIDUzLCAxMjgsIDg2LCA4MywgNTcsIDUyLCAxMjgsIDg2LCA4MywgNTcsIDUxLCAxMjgsIDg2LCA4MywgNTcsIDUwLCAxMjgsIAorICAgIDg2LCA4MywgNTcsIDQ5LCAxMjgsIDg2LCA4MywgNTcsIDQ4LCAxMjgsIDg2LCA4MywgNTcsIDEyOCwgODYsIDgzLCA1NiwgCisgICAgNTcsIDEyOCwgODYsIDgzLCA1NiwgNTYsIDEyOCwgODYsIDgzLCA1NiwgNTUsIDEyOCwgODYsIDgzLCA1NiwgNTQsIDEyOCwgCisgICAgODYsIDgzLCA1NiwgNTMsIDEyOCwgODYsIDgzLCA1NiwgNTIsIDEyOCwgODYsIDgzLCA1NiwgNTEsIDEyOCwgODYsIDgzLCAKKyAgICA1NiwgNTAsIDEyOCwgODYsIDgzLCA1NiwgNDksIDEyOCwgODYsIDgzLCA1NiwgNDgsIDEyOCwgODYsIDgzLCA1NiwgMTI4LCAKKyAgICA4NiwgODMsIDU1LCA1NywgMTI4LCA4NiwgODMsIDU1LCA1NiwgMTI4LCA4NiwgODMsIDU1LCA1NSwgMTI4LCA4NiwgODMsIAorICAgIDU1LCA1NCwgMTI4LCA4NiwgODMsIDU1LCA1MywgMTI4LCA4NiwgODMsIDU1LCA1MiwgMTI4LCA4NiwgODMsIDU1LCA1MSwgCisgICAgMTI4LCA4NiwgODMsIDU1LCA1MCwgMTI4LCA4NiwgODMsIDU1LCA0OSwgMTI4LCA4NiwgODMsIDU1LCA0OCwgMTI4LCA4NiwgCisgICAgODMsIDU1LCAxMjgsIDg2LCA4MywgNTQsIDU3LCAxMjgsIDg2LCA4MywgNTQsIDU2LCAxMjgsIDg2LCA4MywgNTQsIDU1LCAKKyAgICAxMjgsIDg2LCA4MywgNTQsIDU0LCAxMjgsIDg2LCA4MywgNTQsIDUzLCAxMjgsIDg2LCA4MywgNTQsIDUyLCAxMjgsIDg2LCAKKyAgICA4MywgNTQsIDUxLCAxMjgsIDg2LCA4MywgNTQsIDUwLCAxMjgsIDg2LCA4MywgNTQsIDQ5LCAxMjgsIDg2LCA4MywgNTQsIAorICAgIDQ4LCAxMjgsIDg2LCA4MywgNTQsIDEyOCwgODYsIDgzLCA1MywgNTcsIDEyOCwgODYsIDgzLCA1MywgNTYsIDEyOCwgODYsIAorICAgIDgzLCA1MywgNTUsIDEyOCwgODYsIDgzLCA1MywgNTQsIDEyOCwgODYsIDgzLCA1MywgNTMsIDEyOCwgODYsIDgzLCA1MywgCisgICAgNTIsIDEyOCwgODYsIDgzLCA1MywgNTEsIDEyOCwgODYsIDgzLCA1MywgNTAsIDEyOCwgODYsIDgzLCA1MywgNDksIDEyOCwgCisgICAgODYsIDgzLCA1MywgNDgsIDEyOCwgODYsIDgzLCA1MywgMTI4LCA4NiwgODMsIDUyLCA1NywgMTI4LCA4NiwgODMsIDUyLCAKKyAgICA1NiwgMTI4LCA4NiwgODMsIDUyLCA1NSwgMTI4LCA4NiwgODMsIDUyLCA1NCwgMTI4LCA4NiwgODMsIDUyLCA1MywgMTI4LCAKKyAgICA4NiwgODMsIDUyLCA1MiwgMTI4LCA4NiwgODMsIDUyLCA1MSwgMTI4LCA4NiwgODMsIDUyLCA1MCwgMTI4LCA4NiwgODMsIAorICAgIDUyLCA0OSwgMTI4LCA4NiwgODMsIDUyLCA0OCwgMTI4LCA4NiwgODMsIDUyLCAxMjgsIDg2LCA4MywgNTEsIDU3LCAxMjgsIAorICAgIDg2LCA4MywgNTEsIDU2LCAxMjgsIDg2LCA4MywgNTEsIDU1LCAxMjgsIDg2LCA4MywgNTEsIDU0LCAxMjgsIDg2LCA4MywgCisgICAgNTEsIDUzLCAxMjgsIDg2LCA4MywgNTEsIDUyLCAxMjgsIDg2LCA4MywgNTEsIDUxLCAxMjgsIDg2LCA4MywgNTEsIDUwLCAKKyAgICAxMjgsIDg2LCA4MywgNTEsIDQ5LCAxMjgsIDg2LCA4MywgNTEsIDQ4LCAxMjgsIDg2LCA4MywgNTEsIDEyOCwgODYsIDgzLCAKKyAgICA1MCwgNTcsIDEyOCwgODYsIDgzLCA1MCwgNTYsIDEyOCwgODYsIDgzLCA1MCwgNTUsIDEyOCwgODYsIDgzLCA1MCwgNTQsIAorICAgIDEyOCwgODYsIDgzLCA1MCwgNTMsIDU0LCAxMjgsIDg2LCA4MywgNTAsIDUzLCA1MywgMTI4LCA4NiwgODMsIDUwLCA1MywgCisgICAgNTIsIDEyOCwgODYsIDgzLCA1MCwgNTMsIDUxLCAxMjgsIDg2LCA4MywgNTAsIDUzLCA1MCwgMTI4LCA4NiwgODMsIDUwLCAKKyAgICA1MywgNDksIDEyOCwgODYsIDgzLCA1MCwgNTMsIDQ4LCAxMjgsIDg2LCA4MywgNTAsIDUzLCAxMjgsIDg2LCA4MywgNTAsIAorICAgIDUyLCA1NywgMTI4LCA4NiwgODMsIDUwLCA1MiwgNTYsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDU1LCAxMjgsIDg2LCA4MywgCisgICAgNTAsIDUyLCA1NCwgMTI4LCA4NiwgODMsIDUwLCA1MiwgNTMsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDUyLCAxMjgsIDg2LCAKKyAgICA4MywgNTAsIDUyLCA1MSwgMTI4LCA4NiwgODMsIDUwLCA1MiwgNTAsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDQ5LCAxMjgsIAorICAgIDg2LCA4MywgNTAsIDUyLCA0OCwgMTI4LCA4NiwgODMsIDUwLCA1MiwgMTI4LCA4NiwgODMsIDUwLCA1MSwgNTcsIDEyOCwgCisgICAgODYsIDgzLCA1MCwgNTEsIDU2LCAxMjgsIDg2LCA4MywgNTAsIDUxLCA1NSwgMTI4LCA4NiwgODMsIDUwLCA1MSwgNTQsIAorICAgIDEyOCwgODYsIDgzLCA1MCwgNTEsIDUzLCAxMjgsIDg2LCA4MywgNTAsIDUxLCA1MiwgMTI4LCA4NiwgODMsIDUwLCA1MSwgCisgICAgNTEsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDUwLCAxMjgsIDg2LCA4MywgNTAsIDUxLCA0OSwgMTI4LCA4NiwgODMsIDUwLCAKKyAgICA1MSwgNDgsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDU3LCAxMjgsIDg2LCA4MywgNTAsIAorICAgIDUwLCA1NiwgMTI4LCA4NiwgODMsIDUwLCA1MCwgNTUsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDU0LCAxMjgsIDg2LCA4MywgCisgICAgNTAsIDUwLCA1MywgMTI4LCA4NiwgODMsIDUwLCA1MCwgNTIsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDUxLCAxMjgsIDg2LCAKKyAgICA4MywgNTAsIDUwLCA1MCwgMTI4LCA4NiwgODMsIDUwLCA1MCwgNDksIDEyOCwgODYsIDgzLCA1MCwgNTAsIDQ4LCAxMjgsIAorICAgIDg2LCA4MywgNTAsIDUwLCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA1NywgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTYsIDEyOCwgCisgICAgODYsIDgzLCA1MCwgNDksIDU1LCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA1NCwgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTMsIAorICAgIDEyOCwgODYsIDgzLCA1MCwgNDksIDUyLCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA1MSwgMTI4LCA4NiwgODMsIDUwLCA0OSwgCisgICAgNTAsIDEyOCwgODYsIDgzLCA1MCwgNDksIDQ5LCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA0OCwgMTI4LCA4NiwgODMsIDUwLCAKKyAgICA0OSwgMTI4LCA4NiwgODMsIDUwLCA0OCwgNTcsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDU2LCAxMjgsIDg2LCA4MywgNTAsIAorICAgIDQ4LCA1NSwgMTI4LCA4NiwgODMsIDUwLCA0OCwgNTQsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDUzLCAxMjgsIDg2LCA4MywgCisgICAgNTAsIDQ4LCA1MiwgMTI4LCA4NiwgODMsIDUwLCA0OCwgNTEsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDUwLCAxMjgsIDg2LCAKKyAgICA4MywgNTAsIDQ4LCA0OSwgMTI4LCA4NiwgODMsIDUwLCA0OCwgNDgsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDEyOCwgODYsIAorICAgIDgzLCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1NywgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDU2LCAxMjgsIDg2LCA4MywgCisgICAgNDksIDU3LCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1NywgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDUzLCAxMjgsIDg2LCAKKyAgICA4MywgNDksIDU3LCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1NywgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDUwLCAxMjgsIAorICAgIDg2LCA4MywgNDksIDU3LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA1NywgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDEyOCwgCisgICAgODYsIDgzLCA0OSwgNTYsIDU3LCAxMjgsIDg2LCA4MywgNDksIDU2LCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNTUsIAorICAgIDEyOCwgODYsIDgzLCA0OSwgNTYsIDU0LCAxMjgsIDg2LCA4MywgNDksIDU2LCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1NiwgCisgICAgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDUxLCAxMjgsIDg2LCA4MywgNDksIDU2LCA1MCwgMTI4LCA4NiwgODMsIDQ5LCAKKyAgICA1NiwgNDksIDEyOCwgODYsIDgzLCA0OSwgNTYsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDU2LCAxMjgsIDg2LCA4MywgNDksIAorICAgIDU1LCA1NywgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDU1LCAxMjgsIDg2LCA4MywgCisgICAgNDksIDU1LCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDUyLCAxMjgsIDg2LCAKKyAgICA4MywgNDksIDU1LCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDQ5LCAxMjgsIAorICAgIDg2LCA4MywgNDksIDU1LCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNTcsIDEyOCwgCisgICAgODYsIDgzLCA0OSwgNTQsIDU2LCAxMjgsIDg2LCA4MywgNDksIDU0LCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNTQsIAorICAgIDEyOCwgODYsIDgzLCA0OSwgNTQsIDUzLCAxMjgsIDg2LCA4MywgNDksIDU0LCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgCisgICAgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDUwLCAxMjgsIDg2LCA4MywgNDksIDU0LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCAKKyAgICA1NCwgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDU3LCAxMjgsIDg2LCA4MywgNDksIAorICAgIDUzLCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1MywgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDU0LCAxMjgsIDg2LCA4MywgCisgICAgNDksIDUzLCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1MywgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDUxLCAxMjgsIDg2LCAKKyAgICA4MywgNDksIDUzLCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1MywgNDksIDEyOCwgODYsIDgzLCA0OSwgNTMsIDQ4LCAxMjgsIAorICAgIDg2LCA4MywgNDksIDUzLCAxMjgsIDg2LCA4MywgNDksIDUyLCA1NywgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTYsIDEyOCwgCisgICAgODYsIDgzLCA0OSwgNTIsIDU1LCAxMjgsIDg2LCA4MywgNDksIDUyLCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTMsIAorICAgIDEyOCwgODYsIDgzLCA0OSwgNTIsIDUyLCAxMjgsIDg2LCA4MywgNDksIDUyLCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgCisgICAgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDQ5LCAxMjgsIDg2LCA4MywgNDksIDUyLCA0OCwgMTI4LCA4NiwgODMsIDQ5LCAKKyAgICA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDU2LCAxMjgsIDg2LCA4MywgNDksIAorICAgIDUxLCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDUzLCAxMjgsIDg2LCA4MywgCisgICAgNDksIDUxLCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDUwLCAxMjgsIDg2LCAKKyAgICA4MywgNDksIDUxLCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDEyOCwgODYsIAorICAgIDgzLCA0OSwgNTAsIDU3LCAxMjgsIDg2LCA4MywgNDksIDUwLCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNTUsIDEyOCwgCisgICAgODYsIDgzLCA0OSwgNTAsIDU0LCAxMjgsIDg2LCA4MywgNDksIDUwLCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNTIsIAorICAgIDEyOCwgODYsIDgzLCA0OSwgNTAsIDUxLCAxMjgsIDg2LCA4MywgNDksIDUwLCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgCisgICAgNDksIDEyOCwgODYsIDgzLCA0OSwgNTAsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDUwLCAxMjgsIDg2LCA4MywgNDksIDQ5LCAKKyAgICA1NywgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNTYsIDEyOCwgODYsIDgzLCA0OSwgNDksIDU1LCAxMjgsIDg2LCA4MywgNDksIAorICAgIDQ5LCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNTMsIDEyOCwgODYsIDgzLCA0OSwgNDksIDUyLCAxMjgsIDg2LCA4MywgCisgICAgNDksIDQ5LCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNDksIDQ5LCAxMjgsIDg2LCAKKyAgICA4MywgNDksIDQ5LCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTcsIDEyOCwgODYsIAorICAgIDgzLCA0OSwgNDgsIDU2LCAxMjgsIDg2LCA4MywgNDksIDQ4LCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTQsIDEyOCwgCisgICAgODYsIDgzLCA0OSwgNDgsIDUzLCAxMjgsIDg2LCA4MywgNDksIDQ4LCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTEsIAorICAgIDEyOCwgODYsIDgzLCA0OSwgNDgsIDUwLCAxMjgsIDg2LCA4MywgNDksIDQ4LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgCisgICAgNDgsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDEyOCwgODYsIDgzLCA0OSwgMTI4LCA4NiwgODMsIDEyOCwgODYsIDgyLCA2NSwgCisgICAgNjcsIDcyLCA4OSwgMTI4LCA4NiwgNzksIDg4LCAxMjgsIDg2LCA3OSwgODcsIDY5LCA3NiwgNDUsIDY3LCA2NSwgODIsIDgyLCAKKyAgICA3MywgNjksIDIxMCwgODYsIDc5LCA4NywgMTI4LCA4NiwgNzksIDg1LCAxMjgsIDg2LCA3OSwgODQsIDEyOCwgODYsIDc5LCAKKyAgICAyMTEsIDg2LCA3OSwgODAsIDEyOCwgODYsIDc5LCA3OSwgNzMsIDEyOCwgODYsIDc5LCA3OSwgMTI4LCA4NiwgNzksIDc3LCAKKyAgICAxMjgsIDg2LCA3OSwgNzYsIDg1LCA3NywgMTk3LCA4NiwgNzksIDc2LCA4NCwgNjUsIDcxLCAxOTcsIDg2LCA3OSwgNzYsIAorICAgIDc2LCA2OSwgODksIDY2LCA2NSwgNzYsIDc2LCAxMjgsIDg2LCA3OSwgNzYsIDY3LCA2NSwgNzgsIDc5LCAxMjgsIDg2LCA3OSwgCisgICAgNzYsIDY1LCA4MCwgODUsIDIwMywgODYsIDc5LCA3MywgMTk2LCA4NiwgNzksIDczLCA2NywgNzMsIDc4LCA3MSwgMTI4LCAKKyAgICA4NiwgNzksIDczLCA2NywgNjksIDc2LCA2OSwgODMsIDIxMSwgODYsIDc5LCA3MywgNjcsIDY5LCAxOTYsIDg2LCA3OSwgNjgsIAorICAgIDEyOCwgODYsIDc5LCA2NywgNjUsIDc2LCA3MywgOTAsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDg2LCA3OSwgNjcsIDY1LCAKKyAgICAyMDQsIDg2LCA3OSwgMTI4LCA4NiwgNzMsIDg5LCA3OSwgMTI4LCA4NiwgNzMsIDg4LCAxMjgsIDg2LCA3MywgODQsIDgyLCAKKyAgICA3MywgNzksIDc2LCA0NSwgNTAsIDEyOCwgODYsIDczLCA4NCwgODIsIDczLCA3OSwgNzYsIDEyOCwgODYsIDczLCA4NCwgNjUsIAorICAgIDY5LCA0NSwgNTAsIDEyOCwgODYsIDczLCA4NCwgNjUsIDY5LCAxMjgsIDg2LCA3MywgODQsIDEyOCwgODYsIDczLCA4MywgCisgICAgNzMsIDcxLCA3OSwgODQsIDcyLCA3MywgMTk1LCA4NiwgNzMsIDgzLCA2NSwgODIsIDcxLCA2NSwgODksIDY1LCAxMjgsIDg2LCAKKyAgICA3MywgODMsIDY1LCA4MiwgNzEsIDY1LCAxMjgsIDg2LCA3MywgODMsIDY1LCA4MiwgNzEsIDE5MywgODYsIDczLCA4MiwgNzMsIAorICAgIDY1LCA3NywgMTI4LCA4NiwgNzMsIDgyLCA3MSwgNzksIDEyOCwgODYsIDczLCA4MiwgNzEsIDY1LCAxMjgsIDg2LCA3MywgCisgICAgODIsIDY1LCA3NywgNjUsIDEyOCwgODYsIDczLCA4MCwgMTI4LCA4NiwgNzMsIDc5LCA3NiwgNzMsIDc4LCAxMjgsIDg2LCAKKyAgICA3MywgNzgsIDY5LCA3MSwgNjUsIDgyLCA0NSwgNTEsIDEyOCwgODYsIDczLCA3OCwgNjksIDcxLCA2NSwgODIsIDQ1LCA1MCwgCisgICAgMTI4LCA4NiwgNzMsIDc4LCA2OSwgNzEsIDY1LCA4MiwgMTI4LCA4NiwgNzMsIDc4LCA2OSwgNzEsIDY1LCAyMTAsIDg2LCAKKyAgICA3MywgNzgsIDY5LCAxMjgsIDg2LCA3MywgNzgsIDE5NywgODYsIDczLCA3OCwgMTI4LCA4NiwgNzMsIDc2LCA3NiwgNjUsIAorICAgIDcxLCA2OSwgMTI4LCA4NiwgNzMsIDczLCAxMjgsIDg2LCA3MywgNjksIDg4LCAxMjgsIDg2LCA3MywgNjksIDg3LCA3MywgCisgICAgNzgsIDE5OSwgODYsIDczLCA2OSwgODcsIDY4LCA2NSwgODQsIDE5MywgODYsIDczLCA2OSwgODQsIDEyOCwgODYsIDczLCAKKyAgICA2OSwgMjEyLCA4NiwgNzMsIDY5LCA4MCwgMTI4LCA4NiwgNzMsIDY5LCAxMjgsIDg2LCA3MywgNjgsIDc0LCA0NSwgNTAsIAorICAgIDEyOCwgODYsIDczLCA2OCwgNzQsIDEyOCwgODYsIDczLCA2OCwgNjksIDc5LCA2NywgNjUsIDgzLCA4MywgNjksIDg0LCA4NCwgCisgICAgNjksIDEyOCwgODYsIDczLCA2OCwgNjksIDIwNywgODYsIDczLCA2OCwgNjUsIDEyOCwgODYsIDczLCA2NywgODQsIDc5LCAKKyAgICA4MiwgMjE3LCA4NiwgNzMsIDY2LCA4MiwgNjUsIDg0LCA3MywgNzksIDIwNiwgODYsIDcwLCA2NSwgMTI4LCA4NiwgNjksIAorICAgIDg5LCA5MCwgMTI4LCA4NiwgNjksIDg4LCAxMjgsIDg2LCA2OSwgODcsIDEyOCwgODYsIDY5LCAyMTUsIDg2LCA2OSwgODUsIAorICAgIDg4LCAxMjgsIDg2LCA2OSwgODUsIDc3LCAxMjgsIDg2LCA2OSwgODUsIDY1LCA2OSwgODAsIDY5LCA3OCwgMTI4LCA4NiwgCisgICAgNjksIDg1LCA2NSwgNjksIDEyOCwgODYsIDY5LCA4MywgODQsIDY1LCAxMjgsIDg2LCA2OSwgODMsIDgzLCA2OSwgMjA0LCAKKyAgICA4NiwgNjksIDgyLCAyMTcsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNzYsIDg5LCAxMjgsIDg2LCA2OSwgODIsIAorICAgIDg0LCA3MywgNjcsIDY1LCA3NiwgNzYsIDIxNywgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCAKKyAgICA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MywgCisgICAgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCAKKyAgICA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgCisgICAgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAorICAgIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCAKKyAgICA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1NCwgCisgICAgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCAKKyAgICA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgCisgICAgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAorICAgIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCAKKyAgICA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA0OCwgCisgICAgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCAKKyAgICA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgCisgICAgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAorICAgIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCAKKyAgICA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA0OSwgCisgICAgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCAKKyAgICA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgCisgICAgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAorICAgIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCAKKyAgICA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MCwgCisgICAgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCAKKyAgICA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgCisgICAgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAorICAgIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCAKKyAgICA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MSwgCisgICAgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCAKKyAgICA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgCisgICAgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAorICAgIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCAKKyAgICA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MiwgCisgICAgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCAKKyAgICA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgCisgICAgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAorICAgIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCAKKyAgICA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MywgCisgICAgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCAKKyAgICA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgCisgICAgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAorICAgIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCAKKyAgICA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgMTI4LCA4NiwgNjksIDgyLCA4MywgNzMsIAorICAgIDY3LCA3NiwgNjksIDEyOCwgODYsIDY5LCA4MiwgODMsIDE5NywgODYsIDY5LCA4MiwgNzEsIDY5LCAxMjgsIDg2LCA2OSwgCisgICAgODIsIDY4LCA3MywgNzEsIDgyLCA3MywgODMsIDEyOCwgODYsIDY5LCA4MiwgMTI4LCA4NiwgNjksIDgwLCAxMjgsIDg2LCAKKyAgICA2OSwgNzgsIDY4LCAxMjgsIDg2LCA2OSwgNzMsIDc2LCAxMjgsIDg2LCA2OSwgNzIsIDczLCA2NywgNzYsIDY5LCAxMjgsIAorICAgIDg2LCA2OSwgNzIsIDEyOCwgODYsIDY5LCAyMDAsIDg2LCA2OSwgNjksIDEyOCwgODYsIDY5LCAxOTcsIDg2LCA2OSwgNjgsIAorICAgIDY5LCAxMjgsIDg2LCA2OSwgNjcsIDg0LCA3OSwgMjEwLCA4NiwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA4NiwgCisgICAgNjUsIDg4LCAxMjgsIDg2LCA2NSwgODYsIDEyOCwgODYsIDY1LCAyMTQsIDg2LCA2NSwgODUsIDEyOCwgODYsIDY1LCA4NCwgCisgICAgNzIsIDg5LCAxMjgsIDg2LCA2NSwgODQsIDEyOCwgODYsIDY1LCA4MywgODQsIDc4LCA2OSwgODMsIDIxMSwgODYsIDY1LCAKKyAgICA4MywgNzMsIDgzLCAxMjgsIDg2LCA2NSwgODIsIDg5LCAyMTEsIDg2LCA2NSwgODIsIDczLCA3NSwgNjUsIDEyOCwgODYsIAorICAgIDY1LCA4MiwgNzMsIDY1LCA3OCwgODQsIDEyOCwgODYsIDY1LCA4MiwgNzMsIDY1LCA3OCwgMjEyLCA4NiwgNjUsIDgyLCA3MywgCisgICAgNjUsIDEyOCwgODYsIDY1LCA4MiwgNzMsIDE5MywgODYsIDY1LCA4MiwgNjksIDczLCA2NSwgMjAxLCA4NiwgNjUsIDgyLCAKKyAgICA2OSwgNzMsIDE5MywgODYsIDY1LCA4MCwgNzksIDg1LCA4MiwgODMsIDEyOCwgODYsIDY1LCA4MCwgMTI4LCA4NiwgNjUsIAorICAgIDc4LCA2OSwgMTI4LCA4NiwgNjUsIDc3LCA2NSwgNzEsIDc5LCA3NywgODUsIDc1LCA3MiwgNjUsIDEyOCwgODYsIDY1LCA3NywgCisgICAgNjUsIDcxLCA3OSwgNzcsIDg1LCA3NSwgNzIsIDE5MywgODYsIDY1LCA3NiwgNzYsIDY5LCA4OSwgMTI4LCA4NiwgNjUsIDc0LCAKKyAgICAxMjgsIDg2LCA2NSwgNzMsIDEyOCwgODYsIDY1LCA3MiwgMTI4LCA4NiwgNjUsIDIwMCwgODYsIDY1LCA2NSwgODYsIDg1LCAKKyAgICAxMjgsIDg2LCA2NSwgNjUsIDEyOCwgODYsIDQ4LCA1MiwgNDgsIDY1LCAxMjgsIDg2LCA0OCwgNTIsIDQ4LCAxMjgsIDg2LCAKKyAgICA0OCwgNTEsIDU3LCAxMjgsIDg2LCA0OCwgNTEsIDU2LCAxMjgsIDg2LCA0OCwgNTEsIDU1LCA2NSwgMTI4LCA4NiwgNDgsIAorICAgIDUxLCA1NSwgMTI4LCA4NiwgNDgsIDUxLCA1NCwgMTI4LCA4NiwgNDgsIDUxLCA1MywgMTI4LCA4NiwgNDgsIDUxLCA1MiwgCisgICAgMTI4LCA4NiwgNDgsIDUxLCA1MSwgNjUsIDEyOCwgODYsIDQ4LCA1MSwgNTEsIDEyOCwgODYsIDQ4LCA1MSwgNTAsIDEyOCwgCisgICAgODYsIDQ4LCA1MSwgNDksIDY1LCAxMjgsIDg2LCA0OCwgNTEsIDQ5LCAxMjgsIDg2LCA0OCwgNTEsIDQ4LCA2NSwgMTI4LCAKKyAgICA4NiwgNDgsIDUxLCA0OCwgMTI4LCA4NiwgNDgsIDUwLCA1NywgNjUsIDEyOCwgODYsIDQ4LCA1MCwgNTcsIDEyOCwgODYsIAorICAgIDQ4LCA1MCwgNTYsIDY1LCAxMjgsIDg2LCA0OCwgNTAsIDU2LCAxMjgsIDg2LCA0OCwgNTAsIDU1LCAxMjgsIDg2LCA0OCwgCisgICAgNTAsIDU0LCAxMjgsIDg2LCA0OCwgNTAsIDUzLCAxMjgsIDg2LCA0OCwgNTAsIDUyLCAxMjgsIDg2LCA0OCwgNTAsIDUxLCAKKyAgICA2NSwgMTI4LCA4NiwgNDgsIDUwLCA1MSwgMTI4LCA4NiwgNDgsIDUwLCA1MCwgMTI4LCA4NiwgNDgsIDUwLCA0OSwgMTI4LCAKKyAgICA4NiwgNDgsIDUwLCA0OCwgNzYsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDc1LCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA3NCwgCisgICAgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNzMsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDcyLCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCAKKyAgICA3MSwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNzAsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDY5LCAxMjgsIDg2LCA0OCwgNTAsIAorICAgIDQ4LCA2OCwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNjcsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDY2LCAxMjgsIDg2LCA0OCwgCisgICAgNTAsIDQ4LCA2NSwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgMTI4LCA4NiwgNDgsIDQ5LCA1NywgMTI4LCA4NiwgNDgsIDQ5LCAKKyAgICA1NiwgMTI4LCA4NiwgNDgsIDQ5LCA1NSwgMTI4LCA4NiwgNDgsIDQ5LCA1NCwgMTI4LCA4NiwgNDgsIDQ5LCA1MywgMTI4LCAKKyAgICA4NiwgNDgsIDQ5LCA1MiwgMTI4LCA4NiwgNDgsIDQ5LCA1MSwgMTI4LCA4NiwgNDgsIDQ5LCA1MCwgNjYsIDEyOCwgODYsIAorICAgIDQ4LCA0OSwgNTAsIDY1LCAxMjgsIDg2LCA0OCwgNDksIDUwLCAxMjgsIDg2LCA0OCwgNDksIDQ5LCA2NywgMTI4LCA4NiwgCisgICAgNDgsIDQ5LCA0OSwgNjYsIDEyOCwgODYsIDQ4LCA0OSwgNDksIDY1LCAxMjgsIDg2LCA0OCwgNDksIDQ5LCAxMjgsIDg2LCAKKyAgICA0OCwgNDksIDQ4LCAxMjgsIDg2LCA0OCwgNDgsIDU3LCAxMjgsIDg2LCA0OCwgNDgsIDU2LCAxMjgsIDg2LCA0OCwgNDgsIAorICAgIDU1LCA2NiwgMTI4LCA4NiwgNDgsIDQ4LCA1NSwgNjUsIDEyOCwgODYsIDQ4LCA0OCwgNTUsIDEyOCwgODYsIDQ4LCA0OCwgCisgICAgNTQsIDEyOCwgODYsIDQ4LCA0OCwgNTMsIDEyOCwgODYsIDQ4LCA0OCwgNTIsIDEyOCwgODYsIDQ4LCA0OCwgNTEsIDEyOCwgCisgICAgODYsIDQ4LCA0OCwgNTAsIDY1LCAxMjgsIDg2LCA0OCwgNDgsIDUwLCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA3MywgMTI4LCAKKyAgICA4NiwgNDgsIDQ4LCA0OSwgNzIsIDEyOCwgODYsIDQ4LCA0OCwgNDksIDcxLCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA3MCwgCisgICAgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgNjksIDEyOCwgODYsIDQ4LCA0OCwgNDksIDY4LCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCAKKyAgICA2NywgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgNjYsIDEyOCwgODYsIDQ4LCA0OCwgNDksIDY1LCAxMjgsIDg2LCA0OCwgNDgsIAorICAgIDQ5LCAxMjgsIDg1LCA5MCwgODUsIDEyOCwgODUsIDkwLCA1MSwgMTI4LCA4NSwgOTAsIDE3OSwgODUsIDg5LCA2NSwgNzgsIAorICAgIDc4LCA2NSwgMTI4LCA4NSwgODksIDEyOCwgODUsIDg3LCA4NSwgMTI4LCA4NSwgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgCisgICAgMTI4LCA4NSwgODUsIDg1LCA4NSwgMTI4LCA4NSwgODUsIDg1LCA1MSwgMTI4LCA4NSwgODUsIDg1LCA1MCwgMTI4LCA4NSwgCisgICAgODUsIDY5LCAxMjgsIDg1LCA4NCwgODUsIDc1LCA3MywgMTI4LCA4NSwgODMsIDgzLCA4NSwgNTEsIDEyOCwgODUsIDgzLCAKKyAgICA4MywgODUsIDEyOCwgODUsIDgzLCA3MiwgODgsIDEyOCwgODUsIDgzLCA3MiwgODUsIDc3LCA4OCwgMTI4LCA4NSwgODMsIAorICAgIDcyLCA2OSwgNzgsIDc4LCA2NSwgMTI4LCA4NSwgODMsIDcyLCA1MCwgMTI4LCA4NSwgODMsIDcyLCAxMjgsIDg1LCA4MywgCisgICAgMjAwLCA4NSwgODMsIDY5LCAxOTYsIDg1LCA4MywgNjksIDQ1LCA1MCwgMTI4LCA4NSwgODMsIDY5LCA0NSwgNDksIDEyOCwgCisgICAgODUsIDgzLCA2OSwgMTI4LCA4NSwgODMsIDE5NywgODUsIDgyLCA4NSwgMjE4LCA4NSwgODIsIDg1LCA4MywgMTI4LCA4NSwgCisgICAgODIsIDg1LCA2OCwgNjUsIDEyOCwgODUsIDgyLCA4NSwgNjgsIDE5MywgODUsIDgyLCA4NSwgMTI4LCA4NSwgODIsIDIxMywgCisgICAgODUsIDgyLCA3OCwgMTI4LCA4NSwgODIsIDczLCA3OCwgNjksIDEyOCwgODUsIDgyLCA3MywgNTEsIDEyOCwgODUsIDgyLCAKKyAgICA3MywgMTI4LCA4NSwgODIsIDY1LCA3OCwgODUsIDgzLCAxMjgsIDg1LCA4MiwgNjUsIDEyOCwgODUsIDgyLCA1MiwgMTI4LCAKKyAgICA4NSwgODIsIDUwLCAxMjgsIDg1LCA4MiwgMTc4LCA4NSwgODAsIDg3LCA2NSwgODIsIDY4LCA4MywgMTI4LCA4NSwgODAsIAorICAgIDg3LCA2NSwgODIsIDY4LCAxMjgsIDg1LCA4MCwgODcsIDY1LCA4MiwgMTk2LCA4NSwgODAsIDg0LCA4NSwgODIsIDc4LCAKKyAgICAxMjgsIDg1LCA4MCwgODMsIDczLCA3NiwgNzksIDc4LCAxMjgsIDg1LCA4MCwgODMsIDczLCA3NiwgNzksIDIwNiwgODUsIAorICAgIDgwLCA4MywgNzMsIDY4LCA2OSwgNDUsIDY4LCA3OSwgODcsIDIwNiwgODUsIDgwLCA4MiwgNzMsIDcxLCA3MiwgMjEyLCA4NSwgCisgICAgODAsIDgwLCA2OSwgODIsIDEyOCwgODUsIDgwLCA4MCwgNjksIDIxMCwgODUsIDgwLCA2NSwgNjgsIDcyLCA3NywgNjUsIDc4LCAKKyAgICA3MywgODksIDY1LCAxMjgsIDg1LCA4MCwgNDUsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNzMsIDc4LCAxOTksIDg1LCA3OSwgNzgsIAorICAgIDEyOCwgODUsIDc4LCA3OCwgMTI4LCA4NSwgNzgsIDc3LCA2NSwgODIsIDgyLCA3MywgNjksIDE5NiwgODUsIDc4LCA3NSwgCisgICAgNzgsIDc5LCA4NywgNzgsIDEyOCwgODUsIDc4LCA3NSwgMTI4LCA4NSwgNzgsIDczLCA4NiwgNjksIDgyLCA4MywgNjUsIAorICAgIDIwNCwgODUsIDc4LCA3MywgODQsIDg5LCAxMjgsIDg1LCA3OCwgNzMsIDg0LCAxMjgsIDg1LCA3OCwgNzMsIDIxMiwgODUsIAorICAgIDc4LCA3MywgNzksIDc4LCAxMjgsIDg1LCA3OCwgNzMsIDc5LCAyMDYsIDg1LCA3OCwgNzMsIDcwLCA3OSwgODIsIDc3LCAKKyAgICAxMjgsIDg1LCA3OCwgNzMsIDcwLCA3MywgNjksIDE5NiwgODUsIDc4LCA3MywgNjcsIDc5LCA4MiwgMjA2LCA4NSwgNzgsIAorICAgIDY4LCAyMDcsIDg1LCA3OCwgNjgsIDY5LCA4MiwgODQsIDczLCA2OSwgMTI4LCA4NSwgNzgsIDY4LCA2OSwgODIsIDc2LCA3MywgCisgICAgNzgsIDE5NywgODUsIDc4LCA2OCwgNjksIDgyLCA2OCwgNzksIDg0LCAxMjgsIDg1LCA3OCwgNjgsIDY5LCA4MiwgNjYsIDY1LCAKKyAgICA4MiwgMTI4LCA4NSwgNzgsIDY4LCA2OSwgODIsIDEyOCwgODUsIDc4LCA2OCwgNjksIDIxMCwgODUsIDc4LCA2NywgNzMsIAorICAgIDE5MywgODUsIDc4LCA2NywgNjksIDgyLCA4NCwgNjUsIDczLCA3OCwgODQsIDIxNywgODUsIDc4LCA2NiwgNzYsIDY5LCA3OCwgCisgICAgNjgsIDY5LCAxOTYsIDg1LCA3OCwgNjUsIDgzLCA4MCwgNzMsIDgyLCA2NSwgODQsIDY5LCA2OCwgMTI4LCA4NSwgNzgsIDY1LCAKKyAgICA4MCwgMTI4LCA4NSwgNzgsIDY1LCA3NywgODUsIDgzLCA2OSwgMTk2LCA4NSwgNzgsIDY1LCAxMjgsIDg1LCAyMDYsIDg1LCAKKyAgICA3NywgODUsIDc3LCAxMjgsIDg1LCA3NywgODUsIDIwNSwgODUsIDc3LCA2NiwgODIsIDY5LCA3NiwgNzYsIDY1LCAxMjgsIAorICAgIDg1LCA3NywgNjYsIDgyLCA2OSwgNzYsIDc2LCAxOTMsIDg1LCA3NywgNjYsIDczLCA3OCwgMTI4LCA4NSwgNzUsIDg1LCAKKyAgICAxMjgsIDg1LCA3NSwgODIsIDY1LCA3MywgNzgsIDczLCA2NSwgMjA2LCA4NSwgNzUsIDY1LCA4MiwgNjUsIDEyOCwgODUsIAorICAgIDc1LCA2NSwgODIsIDE5MywgODUsIDc1LCAxMjgsIDg1LCA3MywgNzYsIDc2LCA2OSwgNjUsIDc4LCA3OCwgMTI4LCA4NSwgCisgICAgNzMsIDcxLCA3MiwgODUsIDIxMCwgODUsIDcyLCA2OCwgMTI4LCA4NSwgNzEsIDY1LCA4MiwgNzMsIDg0LCA3MywgMTk1LCAKICAgICA4NSwgNjksIDg5LCAxMjgsIDg1LCA2OSwgNzMsIDEyOCwgODUsIDY5LCA2OSwgMTI4LCA4NSwgNjksIDY1LCAxMjgsIDg1LCAKICAgICA2OCwgODUsIDcxLCAxMjgsIDg1LCA2OCwgNjUsIDg0LCA4NCwgNjUsIDEyOCwgODUsIDY4LCA2NSwgODQsIDg0LCAxOTMsIAogICAgIDg1LCA2OCwgNjUsIDY1LCA4NCwgMTI4LCA4NSwgNjgsIDEyOCwgODUsIDE5NiwgODUsIDY3LCAxMjgsIDg1LCA2NiwgODUsIApAQCAtNTM4LDY4ICs1NDEsNzEgQEAKICAgICA4NywgNzksIDQ1LCA2OSwgMjA1LCA4NCwgODcsIDc5LCA0NSwgNjcsIDczLCA4MiwgNjcsIDc2LCAxOTcsIDg0LCA4NywgNzMsIAogICAgIDgzLCA4NCwgNzMsIDc4LCA3MSwgMTI4LCA4NCwgODcsIDczLCA4MywgODQsIDY5LCAxOTYsIDg0LCA4NywgNzMsIDczLCAKICAgICAxMjgsIDg0LCA4NywgNzMsIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDg0LCA4NywgNzksIDEyOCwgODQsIAotICAgIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDg0LCA3MiwgODIsIDY5LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCAKLSAgICA0NSwgODMsIDczLCA4OCwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgODMsIDY5LCA4NiwgNjksIDc4LCAxMjgsIAotICAgIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA3OSwgNzgsIDY5LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCAKLSAgICA3OCwgNzMsIDc4LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgNzAsIDc5LCA4NSwgODIsIDEyOCwgODQsIAotICAgIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDcwLCA3MywgODYsIDY5LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCAKLSAgICA2OSwgNzMsIDcxLCA3MiwgODQsIDIwMCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDY5LCA3MywgNzEsIDcyLCA4NCwgCi0gICAgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgMjE3LCA4NCwgODcsIDY5LCAKLSAgICA3NiwgODYsIDY5LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA4NCwgODcsIDY5LCA3NiwgODYsIDY5LCAxMjgsIAotICAgIDg0LCA4NywgNjksIDc2LCA4NiwgMTk3LCA4NCwgODcsIDY5LCA3NiwgNzAsIDg0LCA3MiwgODMsIDEyOCwgODQsIDg3LCA2OSwgCi0gICAgNzYsIDcwLCA4NCwgNzIsIDEyOCwgODQsIDg3LCA2OSwgMTI4LCA4NCwgODcsIDY1LCA2NSwgMTI4LCA4NCwgODcsIDY1LCAKLSAgICAxMjgsIDg0LCA4NiwgODIsIDczLCA2OCwgNzksIDEyOCwgODQsIDg2LCA3MywgNzcsIDY1LCA2OCwgODUsIDIxMCwgODQsIAotICAgIDg1LCA4OCwgMTI4LCA4NCwgODUsIDg1LCA3NywgODUsIDEyOCwgODQsIDg1LCA4NSwgMTI4LCA4NCwgODUsIDg0LCA4NCwgCi0gICAgODksIDEyOCwgODQsIDg1LCA4NCwgNjksIDg5LCA2NSwgODMsIDY1LCA4NCwgMTI4LCA4NCwgODUsIDg0LCAxMjgsIDg0LCAKLSAgICA4NSwgODIsIDg4LCAxMjgsIDg0LCA4NSwgODIsIDg1LCAxMjgsIDg0LCA4NSwgODIsIDg0LCA3NiwgNjksIDEyOCwgODQsIAotICAgIDg1LCA4MiwgNzksIDUwLCAxMjgsIDg0LCA4NSwgODIsIDc4LCA4MywgODQsIDczLCA3NiwgNjksIDEyOCwgODQsIDg1LCA4MiwgCi0gICAgNzgsIDY5LCAxOTYsIDg0LCA4NSwgODIsIDIwNiwgODQsIDg1LCA4MiwgNzUsIDczLCA4MywgMjAwLCA4NCwgODUsIDgyLCAKLSAgICA3NSwgNzMsIDE5NSwgODQsIDg1LCA4MiwgNzUsIDY5LCA4OSwgMTI4LCA4NCwgODUsIDgyLCA2NiwgNjUsIDc4LCAxMjgsIAotICAgIDg0LCA4NSwgODIsIDEyOCwgODQsIDg1LCA4MCwgMTI4LCA4NCwgODUsIDc5LCA4OCwgMTI4LCA4NCwgODUsIDc5LCA4NCwgCi0gICAgMTI4LCA4NCwgODUsIDc5LCA4MCwgMTI4LCA4NCwgODUsIDc5LCAxMjgsIDg0LCA4NSwgNzgsIDc4LCA4OSwgMTI4LCA4NCwgCi0gICAgODUsIDc3LCA2OSwgODQsIDY5LCA4MywgMTI4LCA4NCwgODUsIDc3LCA2NSwgNjksIDEyOCwgODQsIDg1LCA3NywgMTI4LCAKLSAgICA4NCwgODUsIDIwNSwgODQsIDg1LCA3NiwgNzMsIDgwLCAxMjgsIDg0LCA4NSwgNzUsIDg3LCA2OSwgNzgsIDg0LCA3MywgODMsIAotICAgIDEyOCwgODQsIDg1LCA3NSwgMTI4LCA4NCwgODUsIDcxLCA4MiwgNzMsIDIwMywgODQsIDg1LCA3MSwgNTAsIDEyOCwgODQsIAotICAgIDg1LCA3MSwgMTc4LCA4NCwgODUsIDY2LCAxMjgsIDg0LCA4NSwgNjUsIDgyLCA2OSwgMTk5LCA4NCwgODUsIDY1LCA2OSwgCi0gICAgODAsIDEyOCwgODQsIDg1LCA2NSwgNjksIDEyOCwgODQsIDIxMywgODQsIDg0LCA4NSwgODUsIDEyOCwgODQsIDg0LCA4NSwgCi0gICAgNjgsIDY4LCA2NSwgNzEsIDEyOCwgODQsIDg0LCA4NSwgNjgsIDY4LCA2NSwgNjUsIDcxLCAxMjgsIDg0LCA4NCwgODUsIAotICAgIDEyOCwgODQsIDg0LCA4NCwgNzIsIDY1LCAxMjgsIDg0LCA4NCwgODQsIDY1LCAxMjgsIDg0LCA4NCwgODMsIDg1LCAxMjgsIAotICAgIDg0LCA4NCwgODMsIDc5LCAxMjgsIDg0LCA4NCwgODMsIDczLCAxMjgsIDg0LCA4NCwgODMsIDY5LCA2OSwgMTI4LCA4NCwgCi0gICAgODQsIDgzLCA2OSwgMTI4LCA4NCwgODQsIDgzLCA2NSwgMTI4LCA4NCwgODQsIDc5LCA3OSwgMTI4LCA4NCwgODQsIDczLCAKLSAgICA3MywgMTI4LCA4NCwgODQsIDczLCAxMjgsIDg0LCA4NCwgNzIsIDg3LCA2OSwgMTI4LCA4NCwgODQsIDcyLCA4NSwgMTI4LCAKLSAgICA4NCwgODQsIDcyLCA3OSwgNzksIDEyOCwgODQsIDg0LCA3MiwgNzksIDEyOCwgODQsIDg0LCA3MiwgNzMsIDEyOCwgODQsIAotICAgIDg0LCA3MiwgNjksIDY5LCAxMjgsIDg0LCA4NCwgNzIsIDY5LCAxMjgsIDg0LCA4NCwgNzIsIDY1LCA2NSwgMTI4LCA4NCwgCi0gICAgODQsIDcyLCAxMjgsIDg0LCA4NCwgNjksIDcyLCA2OSwgNzIsIDEyOCwgODQsIDg0LCA2OSwgNzIsIDY5LCAyMDAsIDg0LCAKLSAgICA4NCwgNjksIDcyLCAxMjgsIDg0LCA4NCwgNjksIDIwMCwgODQsIDg0LCA2OSwgNjksIDEyOCwgODQsIDg0LCA2NSwgODksIAotICAgIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDg0LCA4NCwgNjUsIDg1LCAxMjgsIDg0LCA4NCwgNjUsIDczLCAxMjgsIDg0LCA4NCwgCi0gICAgNjUsIDY1LCAxMjgsIDg0LCA4NCwgNTAsIDEyOCwgODQsIDgzLCA4NywgNjksIDEyOCwgODQsIDgzLCA4NywgNjYsIDEyOCwgCi0gICAgODQsIDgzLCA4NywgNjUsIDEyOCwgODQsIDgzLCA4NiwgMTI4LCA4NCwgODMsIDgzLCA2OSwgMTI4LCA4NCwgODMsIDgzLCAKLSAgICA2NSwgMTI4LCA4NCwgODMsIDc5LCAyMTQsIDg0LCA4MywgNzMsIDg1LCAxMjgsIDg0LCA4MywgNzIsIDg1LCA3MSwgODMsIAotICAgIDEyOCwgODQsIDgzLCA3MiwgNzksIDc5LCA3NSwgMTI4LCA4NCwgODMsIDcyLCA3OSwgNzksIDIwMywgODQsIDgzLCA3MiwgCi0gICAgNzksIDc5LCA3NCwgMTI4LCA4NCwgODMsIDcyLCA2OSwgODMsIDEyOCwgODQsIDgzLCA3MiwgNjksIDcxLCAxMjgsIDg0LCAKLSAgICA4MywgNzIsIDY5LCAxOTksIDg0LCA4MywgNzIsIDY5LCA2OSwgNzQsIDEyOCwgODQsIDgzLCA3MiwgNjksIDEyOCwgODQsIAotICAgIDgzLCA3MiwgNjUsIDE5NCwgODQsIDgzLCA3MiwgNjUsIDEyOCwgODQsIDgzLCA2OSwgODIsIDY5LCAxMjgsIDg0LCA4MywgCi0gICAgNjksIDY5LCA2NiwgMTI4LCA4NCwgODMsIDY1LCA2OCwgNzMsIDEyOCwgODQsIDgzLCA2NSwgNjgsIDIwMSwgODQsIDgzLCAKLSAgICA2NSwgNjYsIDEyOCwgODQsIDgzLCA2NSwgNjUsIDY4LCA3MywgODksIDEyOCwgODQsIDgzLCA2NSwgNjUsIDEyOCwgODQsIAotICAgIDgzLCAxOTMsIDg0LCA4MiwgODksIDY2LCA3NiwgNzMsIDc5LCAyMDYsIDg0LCA4MiwgODUsIDg0LCA3MiwgMTI4LCA4NCwgCi0gICAgODIsIDg1LCA3OCwgNzUsIDEyOCwgODQsIDgyLCA4NSwgNzgsIDY3LCA2NSwgODQsIDY5LCAxOTYsIDg0LCA4MiwgODUsIDc3LCAKLSAgICA4MCwgNjksIDg0LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDU3LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIAotICAgIDU2LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDU1LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDU0LCAKLSAgICAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDUzLCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDUyLCAxMjgsIAotICAgIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDUxLCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDUwLCA0OSwgMTI4LCA4NCwgCi0gICAgODIsIDg1LCA3NywgODAsIDQ1LCA1MCwgNDgsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNTAsIDEyOCwgODQsIDgyLCAKLSAgICA4NSwgNzcsIDgwLCA0NSwgNDksIDU3LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDQ5LCA1NiwgMTI4LCA4NCwgODIsIAotICAgIDg1LCA3NywgODAsIDQ1LCA0OSwgNTUsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNDksIDU0LCAxMjgsIDg0LCA4MiwgCi0gICAgODUsIDc3LCA4MCwgNDUsIDQ5LCA1MywgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA0OSwgNTIsIDEyOCwgODQsIDgyLCAKLSAgICA4NSwgNzcsIDgwLCA0NSwgNDksIDUxLCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDQ5LCA1MCwgMTI4LCA4NCwgODIsIAotICAgIDg1LCA3NywgODAsIDQ1LCA0OSwgNDksIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNDksIDQ4LCAxMjgsIDg0LCA4MiwgCi0gICAgODUsIDc3LCA4MCwgNDUsIDQ5LCAxMjgsIDg0LCA4MiwgODUsIDY5LCAxMjgsIDg0LCA4MiwgODUsIDY3LCA3NSwgMTI4LCAKLSAgICA4NCwgODIsIDc5LCA4MCwgNzMsIDY3LCA2NSwgMjA0LCA4NCwgODIsIDc5LCA4MCwgNzIsIDg5LCAxMjgsIDg0LCA4MiwgNzksIAotICAgIDc3LCA3MywgNzUsIDc5LCA4MywgODksIDc4LCA2NSwgNzEsIDc3LCA2NSwgMTI4LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCAKLSAgICA3OSwgODAsIDgzLCA3MywgNzAsIDczLCA4MywgODQsIDc5LCA3OCwgMTI4LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCA3OSwgCi0gICAgODAsIDY1LCA4MiwgNjUsIDc1LCA2NSwgNzYsIDY5LCA4MywgNzcsIDY1LCAxMjgsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIAotICAgIDc5LCA3OCwgMTI4LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCA3OSwgMjA2LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCA3OSwgCi0gICAgNzYsIDg5LCA3MSwgNzMsIDgzLCA3NywgNjUsIDEyOCwgODQsIDgyLCA3OSwgNzYsIDc2LCA2OSwgODksIDY2LCA4NSwgODMsIAorICAgIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDg0LCA4NywgMjA3LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgODQsIDcyLCAKKyAgICA4MiwgNjksIDY5LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA4MywgNzMsIDg4LCAxMjgsIDg0LCA4NywgNjksIAorICAgIDc4LCA4NCwgODksIDQ1LCA4MywgNjksIDg2LCA2OSwgNzgsIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDc5LCAKKyAgICA3OCwgNjksIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDc4LCA3MywgNzgsIDY5LCAxMjgsIDg0LCA4NywgNjksIAorICAgIDc4LCA4NCwgODksIDQ1LCA3MCwgNzksIDg1LCA4MiwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgNzAsIDczLCAKKyAgICA4NiwgNjksIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDY5LCA3MywgNzEsIDcyLCA4NCwgMjAwLCA4NCwgODcsIAorICAgIDY5LCA3OCwgODQsIDg5LCA0NSwgNjksIDczLCA3MSwgNzIsIDg0LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDEyOCwgCisgICAgODQsIDg3LCA2OSwgNzgsIDg0LCAyMTcsIDg0LCA4NywgNjksIDc4LCA4NCwgNzMsIDY5LCA4NCwgNzIsIDgzLCAxMjgsIDg0LCAKKyAgICA4NywgNjksIDc4LCA4NCwgNzMsIDY5LCA4NCwgNzIsIDEyOCwgODQsIDg3LCA2OSwgNzYsIDg2LCA2OSwgNDUsIDg0LCA3MiwgCisgICAgNzMsIDgyLCA4NCwgODksIDEyOCwgODQsIDg3LCA2OSwgNzYsIDg2LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3NiwgODYsIAorICAgIDE5NywgODQsIDg3LCA2OSwgNzYsIDcwLCA4NCwgNzIsIDgzLCAxMjgsIDg0LCA4NywgNjksIDc2LCA3MCwgODQsIDcyLCAKKyAgICAxMjgsIDg0LCA4NywgNjksIDEyOCwgODQsIDg3LCA2NSwgNjUsIDEyOCwgODQsIDg3LCA2NSwgMTI4LCA4NCwgODYsIDgyLCAKKyAgICA3MywgNjgsIDc5LCAxMjgsIDg0LCA4NiwgNzMsIDc3LCA2NSwgNjgsIDg1LCAyMTAsIDg0LCA4NSwgODgsIDY5LCA2OCwgNzksIAorICAgIDEyOCwgODQsIDg1LCA4OCwgMTI4LCA4NCwgODUsIDg1LCA3NywgODUsIDEyOCwgODQsIDg1LCA4NSwgMTI4LCA4NCwgODUsIAorICAgIDg0LCA4NCwgODksIDEyOCwgODQsIDg1LCA4NCwgNjksIDg5LCA2NSwgODMsIDY1LCA4NCwgMTI4LCA4NCwgODUsIDg0LCAKKyAgICAxMjgsIDg0LCA4NSwgODIsIDg4LCAxMjgsIDg0LCA4NSwgODIsIDg1LCAxMjgsIDg0LCA4NSwgODIsIDg0LCA3NiwgNjksIAorICAgIDEyOCwgODQsIDg1LCA4MiwgNzksIDUwLCAxMjgsIDg0LCA4NSwgODIsIDc4LCA4MywgODQsIDczLCA3NiwgNjksIDEyOCwgCisgICAgODQsIDg1LCA4MiwgNzgsIDY5LCAxOTYsIDg0LCA4NSwgODIsIDIwNiwgODQsIDg1LCA4MiwgNzUsIDczLCA4MywgMjAwLCAKKyAgICA4NCwgODUsIDgyLCA3NSwgNzMsIDE5NSwgODQsIDg1LCA4MiwgNzUsIDY5LCA4OSwgMTI4LCA4NCwgODUsIDgyLCA2NiwgNjUsIAorICAgIDc4LCAxMjgsIDg0LCA4NSwgODIsIDEyOCwgODQsIDg1LCA4MCwgMTI4LCA4NCwgODUsIDc5LCA4OCwgMTI4LCA4NCwgODUsIAorICAgIDc5LCA4NCwgMTI4LCA4NCwgODUsIDc5LCA4MCwgMTI4LCA4NCwgODUsIDc5LCAxMjgsIDg0LCA4NSwgNzgsIDc4LCA4OSwgCisgICAgMTI4LCA4NCwgODUsIDc3LCA2OSwgODQsIDY5LCA4MywgMTI4LCA4NCwgODUsIDc3LCA2NiwgNzYsIDY5LCAyMTAsIDg0LCAKKyAgICA4NSwgNzcsIDY1LCA2OSwgMTI4LCA4NCwgODUsIDc3LCAxMjgsIDg0LCA4NSwgMjA1LCA4NCwgODUsIDc2LCA3MywgODAsIAorICAgIDEyOCwgODQsIDg1LCA3NSwgODcsIDY5LCA3OCwgODQsIDczLCA4MywgMTI4LCA4NCwgODUsIDc1LCAxMjgsIDg0LCA4NSwgCisgICAgNzEsIDgyLCA3MywgMjAzLCA4NCwgODUsIDcxLCA1MCwgMTI4LCA4NCwgODUsIDcxLCAxNzgsIDg0LCA4NSwgNjYsIDEyOCwgCisgICAgODQsIDg1LCA2NSwgODIsIDY5LCAxOTksIDg0LCA4NSwgNjUsIDY5LCA4MCwgMTI4LCA4NCwgODUsIDY1LCA2OSwgMTI4LCAKKyAgICA4NCwgMjEzLCA4NCwgODQsIDg1LCA4NSwgMTI4LCA4NCwgODQsIDg1LCA2OCwgNjgsIDY1LCA3MSwgMTI4LCA4NCwgODQsIAorICAgIDg1LCA2OCwgNjgsIDY1LCA2NSwgNzEsIDEyOCwgODQsIDg0LCA4NSwgMTI4LCA4NCwgODQsIDg0LCA3MiwgNjUsIDEyOCwgCisgICAgODQsIDg0LCA4NCwgNjUsIDEyOCwgODQsIDg0LCA4MywgODUsIDEyOCwgODQsIDg0LCA4MywgNzksIDEyOCwgODQsIDg0LCAKKyAgICA4MywgNzMsIDEyOCwgODQsIDg0LCA4MywgNjksIDY5LCAxMjgsIDg0LCA4NCwgODMsIDY5LCAxMjgsIDg0LCA4NCwgODMsIAorICAgIDY1LCAxMjgsIDg0LCA4NCwgNzksIDc5LCAxMjgsIDg0LCA4NCwgNzMsIDczLCAxMjgsIDg0LCA4NCwgNzMsIDEyOCwgODQsIAorICAgIDg0LCA3MiwgODcsIDY5LCAxMjgsIDg0LCA4NCwgNzIsIDg1LCAxMjgsIDg0LCA4NCwgNzIsIDc5LCA3OSwgMTI4LCA4NCwgCisgICAgODQsIDcyLCA3OSwgMTI4LCA4NCwgODQsIDcyLCA3MywgMTI4LCA4NCwgODQsIDcyLCA2OSwgNjksIDEyOCwgODQsIDg0LCAKKyAgICA3MiwgNjksIDEyOCwgODQsIDg0LCA3MiwgNjUsIDY1LCAxMjgsIDg0LCA4NCwgNzIsIDEyOCwgODQsIDg0LCA2OSwgNzIsIAorICAgIDY5LCA3MiwgMTI4LCA4NCwgODQsIDY5LCA3MiwgNjksIDIwMCwgODQsIDg0LCA2OSwgNzIsIDEyOCwgODQsIDg0LCA2OSwgCisgICAgMjAwLCA4NCwgODQsIDY5LCA2OSwgMTI4LCA4NCwgODQsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODQsIDg0LCAKKyAgICA2NSwgODUsIDEyOCwgODQsIDg0LCA2NSwgNzMsIDEyOCwgODQsIDg0LCA2NSwgNjUsIDEyOCwgODQsIDg0LCA1MCwgMTI4LCAKKyAgICA4NCwgODMsIDg3LCA2OSwgMTI4LCA4NCwgODMsIDg3LCA2NiwgMTI4LCA4NCwgODMsIDg3LCA2NSwgMTI4LCA4NCwgODMsIAorICAgIDg2LCAxMjgsIDg0LCA4MywgODMsIDY5LCAxMjgsIDg0LCA4MywgODMsIDY1LCAxMjgsIDg0LCA4MywgNzksIDIxNCwgODQsIAorICAgIDgzLCA3MywgODUsIDEyOCwgODQsIDgzLCA3MiwgODUsIDcxLCA4MywgMTI4LCA4NCwgODMsIDcyLCA3OSwgNzksIDc1LCAKKyAgICAxMjgsIDg0LCA4MywgNzIsIDc5LCA3OSwgMjAzLCA4NCwgODMsIDcyLCA3OSwgNzksIDc0LCAxMjgsIDg0LCA4MywgNzIsIAorICAgIDY5LCA4MywgMTI4LCA4NCwgODMsIDcyLCA2OSwgNzEsIDEyOCwgODQsIDgzLCA3MiwgNjksIDE5OSwgODQsIDgzLCA3MiwgCisgICAgNjksIDY5LCA3NCwgMTI4LCA4NCwgODMsIDcyLCA2OSwgMTI4LCA4NCwgODMsIDcyLCA2NSwgMTk0LCA4NCwgODMsIDcyLCAKKyAgICA2NSwgMTI4LCA4NCwgODMsIDY5LCA4MiwgNjksIDEyOCwgODQsIDgzLCA2OSwgNjksIDY2LCAxMjgsIDg0LCA4MywgNjUsIAorICAgIDY4LCA3MywgMTI4LCA4NCwgODMsIDY1LCA2OCwgMjAxLCA4NCwgODMsIDY1LCA2NiwgMTI4LCA4NCwgODMsIDY1LCA2NSwgCisgICAgNjgsIDczLCA4OSwgMTI4LCA4NCwgODMsIDY1LCA2NSwgMTI4LCA4NCwgODMsIDE5MywgODQsIDgyLCA4OSwgNjYsIDc2LCAKKyAgICA3MywgNzksIDIwNiwgODQsIDgyLCA4NSwgODQsIDcyLCAxMjgsIDg0LCA4MiwgODUsIDc4LCA3NSwgMTI4LCA4NCwgODIsIAorICAgIDg1LCA3OCwgNjcsIDY1LCA4NCwgNjksIDE5NiwgODQsIDgyLCA4NSwgNzcsIDgwLCA2OSwgODQsIDEyOCwgODQsIDgyLCA4NSwgCisgICAgNzcsIDgwLCA0NSwgNTcsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNTYsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCAKKyAgICA0NSwgNTUsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNTQsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNTMsIAorICAgIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNTIsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNTEsIDEyOCwgCisgICAgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNTAsIDQ5LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDUwLCA0OCwgMTI4LCAKKyAgICA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1MCwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA0OSwgNTcsIDEyOCwgODQsIAorICAgIDgyLCA4NSwgNzcsIDgwLCA0NSwgNDksIDU2LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDQ5LCA1NSwgMTI4LCA4NCwgCisgICAgODIsIDg1LCA3NywgODAsIDQ1LCA0OSwgNTQsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNDksIDUzLCAxMjgsIDg0LCAKKyAgICA4MiwgODUsIDc3LCA4MCwgNDUsIDQ5LCA1MiwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA0OSwgNTEsIDEyOCwgODQsIAorICAgIDgyLCA4NSwgNzcsIDgwLCA0NSwgNDksIDUwLCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDQ5LCA0OSwgMTI4LCA4NCwgCisgICAgODIsIDg1LCA3NywgODAsIDQ1LCA0OSwgNDgsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNDksIDEyOCwgODQsIDgyLCAKKyAgICA4NSwgNjksIDEyOCwgODQsIDgyLCA4NSwgNjcsIDc1LCAxMjgsIDg0LCA4MiwgNzksIDgwLCA3MywgNjcsIDY1LCAyMDQsIAorICAgIDg0LCA4MiwgNzksIDgwLCA3MiwgODksIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIDgzLCA4OSwgNzgsIDY1LCAKKyAgICA3MSwgNzcsIDY1LCAxMjgsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCA4MCwgODMsIDczLCA3MCwgNzMsIDgzLCA4NCwgCisgICAgNzksIDc4LCAxMjgsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCA4MCwgNjUsIDgyLCA2NSwgNzUsIDY1LCA3NiwgNjksIAorICAgIDgzLCA3NywgNjUsIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIDc4LCAxMjgsIDg0LCA4MiwgNzksIDc3LCA3MywgCisgICAgNzUsIDc5LCAyMDYsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCA3NiwgODksIDcxLCA3MywgODMsIDc3LCA2NSwgMTI4LCAKKyAgICA4NCwgODIsIDc5LCA3NiwgNzYsIDY5LCA4OSwgNjYsIDg1LCA4MywgMTI4LCA4NCwgODIsIDc5LCA3NiwgNzYsIDY5LCA4OSwgCiAgICAgMTI4LCA4NCwgODIsIDc5LCA3NSwgODUsIDg0LCA2NSwgODMsIDg0LCAyMDEsIDg0LCA4MiwgNzksIDY5LCA5MCwgNjksIDc4LCAKICAgICA3MywgNjUsIDIwNiwgODQsIDgyLCA3MywgODUsIDc3LCA4MCwgNzIsIDEyOCwgODQsIDgyLCA3MywgODQsIDc5LCAyMTEsIAogICAgIDg0LCA4MiwgNzMsIDg0LCA3MywgNzcsIDc5LCA4MiwgNzMsIDc5LCA3OCwgMTI4LCA4NCwgODIsIDczLCA4MywgNzMsIDc3LCAKQEAgLTY4OCwyNDkgKzY5NCwyNTAgQEAKICAgICAyMDAsIDg0LCA3MiwgODIsIDY5LCA2OSwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgODQsIDcyLCA4MiwgNjksIAogICAgIDY5LCA0NSwgODEsIDg1LCA2NSwgODIsIDg0LCA2OSwgMjEwLCA4NCwgNzIsIDgyLCA2OSwgNjksIDQ1LCA4MCwgNjksIDgyLCAKICAgICA0NSwgNjksIDIwNSwgODQsIDcyLCA4MiwgNjksIDY5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA4NCwgNzIsIDgyLCA2OSwgNjksIAotICAgIDQ1LCA2OSwgMjA1LCA4NCwgNzIsIDgyLCA2OSwgNjksIDQ1LCAxOTYsIDg0LCA3MiwgODIsIDY5LCA2OSwgNDUsIDY3LCA3MywgCi0gICAgODIsIDY3LCA3NiwgMTk3LCA4NCwgNzIsIDgyLCA2OSwgNjUsIDY4LCAxMjgsIDg0LCA3MiwgNzksIDg1LCA4MywgNjUsIDc4LCAKLSAgICA2OCwgODMsIDEyOCwgODQsIDcyLCA3OSwgODUsIDgzLCA2NSwgNzgsIDY4LCAyMTEsIDg0LCA3MiwgNzksIDg1LCA4MywgNjUsIAotICAgIDc4LCA2OCwgMTI4LCA4NCwgNzIsIDc5LCA4NSwgODMsIDY1LCA3OCwgMTk2LCA4NCwgNzIsIDc5LCA4NSwgNzEsIDcyLCAKLSAgICAyMTIsIDg0LCA3MiwgNzksIDg1LCAxMjgsIDg0LCA3MiwgNzksIDgyLCA3OCwgMTI4LCA4NCwgNzIsIDc5LCA4MiwgMjA2LCAKLSAgICA4NCwgNzIsIDc5LCA3OCwgNzEsIDEyOCwgODQsIDcyLCA3OSwgNzcsIDEyOCwgODQsIDcyLCA3OSwgNzQsIDEyOCwgODQsIAotICAgIDcyLCA3OSwgNjUsIDEyOCwgODQsIDcyLCAyMDcsIDg0LCA3MiwgNzMsIDg1LCA4NCwgNzIsIDEyOCwgODQsIDcyLCA3MywgCi0gICAgODQsIDY1LCAxMjgsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDQ1LCA4MywgNjksIDY3LCA3OSwgNzgsIDE5NiwgODQsIDcyLCAKLSAgICA3MywgODIsIDg0LCA4OSwgNDUsIDc5LCA3OCwgNjksIDEyOCwgODQsIDcyLCA3MywgODIsIDg0LCAyMTcsIDg0LCA3MiwgNzMsIAotICAgIDgyLCA4NCwgNjksIDY5LCA3OCwgMTI4LCA4NCwgNzIsIDczLCA4MiwgODQsIDY5LCA2OSwgMjA2LCA4NCwgNzIsIDczLCA4MiwgCi0gICAgNjgsIDgzLCAxMjgsIDg0LCA3MiwgNzMsIDgyLCA2OCwgMjExLCA4NCwgNzIsIDczLCA4MiwgNjgsIDQ1LCA4MywgODQsIDY1LCAKLSAgICA3MSwgMTk3LCA4NCwgNzIsIDczLCA4MiwgNjgsIDEyOCwgODQsIDcyLCA3MywgODIsIDE5NiwgODQsIDcyLCA3MywgNzgsIAotICAgIDc1LCA3MywgNzgsIDE5OSwgODQsIDcyLCA3MywgNzMsIDEyOCwgODQsIDcyLCA3MywgNzEsIDcyLCAxMjgsIDg0LCA3MiwgCi0gICAgNzMsIDY5LCA4NSwgODQsIDIwMCwgODQsIDcyLCA3MywgNjcsIDIwMywgODQsIDcyLCA3MywgNjUsIDY2LCAxMjgsIDg0LCAKLSAgICA3MiwgNjksIDg5LCAxMjgsIDg0LCA3MiwgNjksIDg0LCA3MiwgNjksIDEyOCwgODQsIDcyLCA2OSwgODQsIDcyLCAxMjgsIAotICAgIDg0LCA3MiwgNjksIDg0LCA2NSwgMTI4LCA4NCwgNzIsIDY5LCA4NCwgMTkzLCA4NCwgNzIsIDY5LCA4MywgODAsIDczLCA2NSwgCi0gICAgMjA2LCA4NCwgNzIsIDY5LCA4MywgNjksIDc5LCA4MywgMTI4LCA4NCwgNzIsIDY5LCA4MywgNjksIDc5LCAyMTEsIDg0LCAKLSAgICA3MiwgNjksIDIxMSwgODQsIDcyLCA2OSwgODIsIDc3LCA3OSwgNzcsIDY5LCA4NCwgNjksIDgyLCAxMjgsIDg0LCA3MiwgNjksIAotICAgIDgyLCA3NywgNzksIDY4LCA4OSwgNzgsIDY1LCA3NywgNzMsIDY3LCAxMjgsIDg0LCA3MiwgNjksIDgyLCA2OSwgNzAsIDc5LCAKLSAgICA4MiwgNjksIDEyOCwgODQsIDcyLCA2OSwgODIsIDE5NywgODQsIDcyLCA2OSwgMjA2LCA4NCwgNzIsIDY5LCA3NywgNjUsIAotICAgIDg0LCA3MywgODMsIDc3LCA3OSwgMjExLCA4NCwgNzIsIDY5LCA3NywgNjUsIDEyOCwgODQsIDcyLCA2OSwgNzcsIDE5MywgCi0gICAgODQsIDcyLCA2OSwgNzIsIDEyOCwgODQsIDcyLCA2OSwgMjAwLCA4NCwgNzIsIDY5LCA2NSwgMTI4LCA4NCwgNzIsIDE5NywgCi0gICAgODQsIDcyLCA2NSwgODcsIDEyOCwgODQsIDcyLCA2NSwgNzgsIDg0LCA3MiwgNjUsIDc1LCA3MiwgNjUsIDg0LCAxMjgsIDg0LCAKLSAgICA3MiwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODQsIDcyLCA2NSwgNzgsIDEyOCwgODQsIDcyLCA2NSwgMjA2LCA4NCwgNzIsIAotICAgIDY1LCA3NywgNjksIDY4LCA3MiwgMTI4LCA4NCwgNzIsIDY1LCA3NiwgMTI4LCA4NCwgNzIsIDY1LCAyMDQsIDg0LCA3MiwgCi0gICAgNjUsIDc0LCAxMjgsIDg0LCA3MiwgNjUsIDIwMSwgODQsIDcyLCA2NSwgNzIsIDY1LCA3OCwgMTI4LCA4NCwgNzIsIDY1LCAKLSAgICA2NSwgNzgsIDE5MywgODQsIDcyLCA2NSwgNjUsIDc2LCA4NSwgMTI4LCA4NCwgNzIsIDQ1LCA2NywgODIsIDY5LCAxOTcsIAotICAgIDg0LCA2OSwgODgsIDg0LCAxMjgsIDg0LCA2OSwgODgsIDIxMiwgODQsIDY5LCA4OCwgMTI4LCA4NCwgNjksIDg2LCA3MywgCi0gICAgODIsIDEyOCwgODQsIDY5LCA4NSwgODQsIDY5LCA4NSwgODgsIDEyOCwgODQsIDY5LCA4NSwgODQsIDY5LCA4NSwgODcsIDY5LCAKLSAgICA3OCwgMTI4LCA4NCwgNjksIDg1LCA4NCwgMTI4LCA4NCwgNjksIDg1LCA3OCwgMTI4LCA4NCwgNjksIDg1LCA2NSwgNjksIAotICAgIDgxLCAxMjgsIDg0LCA2OSwgODUsIDY1LCA2OSwgNzgsIDEyOCwgODQsIDY5LCA4NSwgMTI4LCA4NCwgNjksIDg0LCA4MiwgCi0gICAgNjUsIDgzLCA3MywgNzcsIDc5LCA4NSwgMTI4LCA4NCwgNjksIDg0LCA4MiwgNjUsIDgzLCA2OSwgNzcsIDY5LCAxMjgsIDg0LCAKLSAgICA2OSwgODQsIDgyLCA2NSwgODAsIDc2LCA3MywgMTI4LCA4NCwgNjksIDg0LCA4MiwgNjUsIDcxLCA4MiwgNjUsIDIwNSwgODQsIAotICAgIDY5LCA4NCwgODIsIDY1LCA3MCwgNzksIDc4LCA3MywgNjUsIDgzLCAxMjgsIDg0LCA2OSwgODQsIDcyLCAxMjgsIDg0LCA2OSwgCi0gICAgODQsIDIwMCwgODQsIDY5LCA4NCwgNjUsIDgyLCA4NCwgNzksIDIxMSwgODQsIDY5LCA4NCwgNjUsIDgyLCA4NCwgNzMsIDc3LCAKLSAgICA3OSwgODIsIDczLCA3OSwgNzgsIDEyOCwgODQsIDY5LCA4NCwgMTI4LCA4NCwgNjksIDIxMiwgODQsIDY5LCA4MywgODMsIAotICAgIDY5LCA4MiwgNjUsIDEyOCwgODQsIDY5LCA4MywgODMsIDY5LCA4MiwgMTkzLCA4NCwgNjksIDgzLCA4MywgNjUsIDgyLCA3OSwgCi0gICAgMjA2LCA4NCwgNjksIDgzLCAyMDAsIDg0LCA2OSwgODIsIDc3LCA3MywgNzgsIDY1LCA4NCwgNzksIDgyLCAxMjgsIDg0LCAKLSAgICA2OSwgODAsIDEyOCwgODQsIDY5LCA3OCwgODUsIDg0LCA3OSwgMTI4LCA4NCwgNjksIDc4LCA4NSwgMTI4LCA4NCwgNjksIAotICAgIDc4LCAyMTMsIDg0LCA2OSwgNzgsIDg0LCA3MiwgMTI4LCA4NCwgNjksIDc4LCA4NCwgMTI4LCA4NCwgNjksIDc4LCA4MywgCi0gICAgNjksIDEyOCwgODQsIDY5LCA3OCwgODMsIDE5NywgODQsIDY5LCA3OCwgODMsIDEyOCwgODQsIDY5LCA3OCwgMjExLCA4NCwgCi0gICAgNjksIDc4LCA3OCwgNzMsIDIxMSwgODQsIDY5LCA3OCwgNzEsIDE5NywgODQsIDY5LCA3OCwgNDUsIDg0LCA3MiwgNzMsIDgyLCAKLSAgICA4NCwgODksIDEyOCwgODQsIDY5LCA3OCwgMTI4LCA4NCwgNjksIDIwNiwgODQsIDY5LCA3NywgODAsIDg1LCAyMTEsIDg0LCAKLSAgICA2OSwgNzYsIDg1LCAxMjgsIDg0LCA2OSwgNzYsIDc5LCA4NSwgMjExLCA4NCwgNjksIDc2LCA3NiwgNjksIDIxMCwgODQsIAotICAgIDY5LCA3NiwgNzMsIDgzLCA3MiwgMTkzLCA4NCwgNjksIDc2LCA2OSwgODYsIDczLCA4MywgNzMsIDc5LCA3OCwgMTI4LCA4NCwgCi0gICAgNjksIDc2LCA2OSwgODMsIDY3LCA3OSwgODAsIDY5LCAxMjgsIDg0LCA2OSwgNzYsIDY5LCA4MCwgNzIsIDc5LCA3OCwgNjksIAotICAgIDEyOCwgODQsIDY5LCA3NiwgNjksIDgwLCA3MiwgNzksIDc4LCAxOTcsIDg0LCA2OSwgNzYsIDY5LCA3MywgNjUsIDEyOCwgCi0gICAgODQsIDY5LCA3NiwgNjksIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDg0LCA2OSwgNzUsIDEyOCwgODQsIDY5LCA3MywgODcsIDgzLCAKLSAgICAxMjgsIDg0LCA2OSwgNzEsIDY5LCA3MiwgMTI4LCA4NCwgNjksIDY5LCA4NCwgNzIsIDEyOCwgODQsIDY5LCA2OSwgODQsIAotICAgIDIwMCwgODQsIDY5LCA2OSwgNzgsIDgzLCAxMjgsIDg0LCA2OSwgNjksIDY5LCA2OSwgMTI4LCA4NCwgNjksIDE5NywgODQsIAotICAgIDY5LCA2OCwgODUsIDc4LCA3MSwgMTI4LCA4NCwgNjksIDY1LCA4MiwgMjExLCA4NCwgNjksIDY1LCA4MiwgNjgsIDgyLCA3OSwgCi0gICAgODAsIDQ1LCA4MywgODAsIDc5LCA3NSwgNjksIDE5NiwgODQsIDY5LCA2NSwgODIsIDY4LCA4MiwgNzksIDgwLCA0NSwgODMsIAotICAgIDcyLCA2NSwgNzgsIDc1LCA2OSwgMTk2LCA4NCwgNjksIDY1LCA4MiwgNjgsIDgyLCA3OSwgODAsIDQ1LCA2NiwgNjUsIDgyLCAKLSAgICA2NiwgNjksIDE5NiwgODQsIDY5LCA2NSwgODIsIDQ1LCA3OSwgNzAsIDE5OCwgODQsIDY5LCA2NSwgNjcsIDg1LCAyMDgsIAotICAgIDg0LCA2OSwgNDUsIDg1LCAxMjgsIDg0LCA2OSwgNDUsIDUwLCAxMjgsIDg0LCA2NywgNzIsIDY5LCA3MiwgNjksIDcyLCAKLSAgICAxMjgsIDg0LCA2NywgNzIsIDY5LCA3MiwgNjksIDIwMCwgODQsIDY3LCA3MiwgNjksIDcyLCAxMjgsIDg0LCA2NywgNzIsIAotICAgIDY5LCAyMDAsIDg0LCA2NywgNzIsIDY5LCAxMjgsIDg0LCAxOTUsIDg0LCA2NSwgODksIDEyOCwgODQsIDY1LCA4OCwgNzMsIAotICAgIDEyOCwgODQsIDY1LCA4OCwgMTI4LCA4NCwgNjUsIDg3LCA2OSwgNzYsIDc2LCA2OSwgNzcsIDY5LCAyMTIsIDg0LCA2NSwgCi0gICAgODcsIDY1LCAxMjgsIDg0LCA2NSwgODcsIDEyOCwgODQsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDg0LCAKLSAgICA2NSwgODYsIDEyOCwgODQsIDY1LCAyMTQsIDg0LCA2NSwgODUsIDgyLCA4NSwgODMsIDEyOCwgODQsIDY1LCA4NSwgNzcsIAotICAgIDEyOCwgODQsIDY1LCAyMTMsIDg0LCA2NSwgODQsIDg3LCA2OSwgNjksIDc2LCAxMjgsIDg0LCA2NSwgODQsIDg3LCA2OSwgCi0gICAgNjksIDIwNCwgODQsIDY1LCA4NCwgODQsIDc5LCA3OSwgNjksIDE5NiwgODQsIDY1LCA4NCwgMTI4LCA4NCwgNjUsIDgzLCAKLSAgICAxMjgsIDg0LCA2NSwgODIsIDg1LCA3OCwgNzEsIDEyOCwgODQsIDY1LCA4MiwgODQsIDY1LCA4MiwgNDUsIDUwLCAxMjgsIAotICAgIDg0LCA2NSwgODIsIDg0LCA2NSwgODIsIDEyOCwgODQsIDY1LCA4MiwgNzEsIDY5LCA4NCwgMTI4LCA4NCwgNjUsIDgxLCAKLSAgICAxMjgsIDg0LCA2NSwgODAsIDY5LCA4MiwgMTI4LCA4NCwgNjUsIDgwLCAxOTcsIDg0LCA2NSwgODAsIDEyOCwgODQsIDY1LCAKLSAgICA3OSwgMTI4LCA4NCwgNjUsIDc4LCA3OCwgNjksIDE5NiwgODQsIDY1LCA3OCwgNzEsIDY5LCA4MiwgNzMsIDc4LCA2OSwgCi0gICAgMTI4LCA4NCwgNjUsIDc4LCA3MSwgNjksIDc4LCA4NCwgMTI4LCA4NCwgNjUsIDc4LCA3MSwgNjksIDc4LCAyMTIsIDg0LCAKLSAgICA2NSwgNzgsIDE5OSwgODQsIDY1LCA3OCwgNjUsIDY2LCA2NSwgODQsIDE5MywgODQsIDY1LCA3OCwgMTI4LCA4NCwgNjUsIAotICAgIDc3LCA3MywgNzgsIDcxLCAxMjgsIDg0LCA2NSwgNzcsIDEyOCwgODQsIDY1LCA3NiwgNzYsIDEyOCwgODQsIDY1LCA3NiwgCi0gICAgMjA0LCA4NCwgNjUsIDc2LCA3MywgNzgsIDcxLCAxMjgsIDg0LCA2NSwgNzYsIDczLCA3OCwgMTk5LCA4NCwgNjUsIDc2LCAKLSAgICA2OSwgNzgsIDg0LCA4MywgMTI4LCA4NCwgNjUsIDc2LCA2OSwgNzgsIDIxMiwgODQsIDY1LCA3NSwgODIsIDIwMSwgODQsIAotICAgIDY1LCA3NSwgNzIsIDY1LCA3NiwgNzYsIDg1LCA4MywgMTI4LCA4NCwgNjUsIDc1LCA2OSwgMTI4LCA4NCwgNjUsIDc1LCA1MiwgCi0gICAgMTI4LCA4NCwgNjUsIDc1LCAxODAsIDg0LCA2NSwgNzUsIDEyOCwgODQsIDY1LCA3MywgODMsIDg5LCA3OSwgODUsIDEyOCwgCi0gICAgODQsIDY1LCA3MywgNzYsIDc2LCA2OSwgODMsIDIxMSwgODQsIDY1LCA3MywgNzYsIDEyOCwgODQsIDY1LCA3MywgMjA0LCAKLSAgICA4NCwgNjUsIDcyLCAxMjgsIDg0LCA2NSwgMjAwLCA4NCwgNjUsIDcxLCA2NiwgNjUsIDc4LCA4NywgMTkzLCA4NCwgNjUsIAotICAgIDcxLCA2NSwgNzYsIDc5LCAxOTksIDg0LCA2NSwgNzEsIDEyOCwgODQsIDY1LCA2OSwgMjA2LCA4NCwgNjUsIDY3LCA3OSwgCi0gICAgMTI4LCA4NCwgNjUsIDY3LCA3NSwgMTI4LCA4NCwgNjUsIDY3LCAyMDMsIDg0LCA2NSwgNjYsIDg1LCA3NiwgNjUsIDg0LCAKLSAgICA3MywgNzksIDc4LCAxMjgsIDg0LCA2NSwgNjYsIDg1LCA3NiwgNjUsIDg0LCA3MywgNzksIDIwNiwgODQsIDY1LCA2NiwgODMsIAotICAgIDEyOCwgODQsIDY1LCA2NiwgNzYsIDY5LCAxMjgsIDg0LCA2NSwgNjYsIDc2LCAxOTcsIDg0LCA2NSwgNjYsIDEyOCwgODQsIAotICAgIDY1LCAxOTQsIDg0LCA2NSwgNjUsIDgzLCA3MiwgNjUsIDY5LCAxMjgsIDg0LCA2NSwgNjUsIDgxLCAxMjgsIDg0LCA2NSwgCi0gICAgNjUsIDc3LCAxMjgsIDg0LCA2NSwgNjUsIDc2LCA4NSwgNzQsIDE5MywgODQsIDY1LCA2NSwgNzMsIDEyOCwgODQsIDY1LCAKLSAgICA2NSwgNzAsIDEyOCwgODQsIDY1LCA1MCwgMTI4LCA4NCwgNjUsIDQ1LCA4MiwgNzksIDc2LCAxMjgsIDg0LCA2NSwgNDUsIAotICAgIDUwLCAxMjgsIDg0LCA0OCwgNTEsIDU0LCAxMjgsIDg0LCA0OCwgNTEsIDUzLCAxMjgsIDg0LCA0OCwgNTEsIDUyLCAxMjgsIAotICAgIDg0LCA0OCwgNTEsIDUxLCA2NSwgMTI4LCA4NCwgNDgsIDUxLCA1MSwgMTI4LCA4NCwgNDgsIDUxLCA1MCwgNjUsIDEyOCwgCi0gICAgODQsIDQ4LCA1MSwgNTAsIDEyOCwgODQsIDQ4LCA1MSwgNDksIDEyOCwgODQsIDQ4LCA1MSwgNDgsIDEyOCwgODQsIDQ4LCAKLSAgICA1MCwgNTcsIDEyOCwgODQsIDQ4LCA1MCwgNTYsIDEyOCwgODQsIDQ4LCA1MCwgNTUsIDEyOCwgODQsIDQ4LCA1MCwgNTQsIAotICAgIDEyOCwgODQsIDQ4LCA1MCwgNTMsIDEyOCwgODQsIDQ4LCA1MCwgNTIsIDEyOCwgODQsIDQ4LCA1MCwgNTEsIDEyOCwgODQsIAotICAgIDQ4LCA1MCwgNTAsIDEyOCwgODQsIDQ4LCA1MCwgNDksIDEyOCwgODQsIDQ4LCA1MCwgNDgsIDEyOCwgODQsIDQ4LCA0OSwgCi0gICAgNTcsIDEyOCwgODQsIDQ4LCA0OSwgNTYsIDEyOCwgODQsIDQ4LCA0OSwgNTUsIDEyOCwgODQsIDQ4LCA0OSwgNTQsIDY1LCAKLSAgICAxMjgsIDg0LCA0OCwgNDksIDU0LCAxMjgsIDg0LCA0OCwgNDksIDUzLCAxMjgsIDg0LCA0OCwgNDksIDUyLCAxMjgsIDg0LCAKLSAgICA0OCwgNDksIDUxLCAxMjgsIDg0LCA0OCwgNDksIDUwLCAxMjgsIDg0LCA0OCwgNDksIDQ5LCA2NSwgMTI4LCA4NCwgNDgsIAotICAgIDQ5LCA0OSwgMTI4LCA4NCwgNDgsIDQ5LCA0OCwgMTI4LCA4NCwgNDgsIDQ4LCA1NywgNjUsIDEyOCwgODQsIDQ4LCA0OCwgCi0gICAgNTcsIDEyOCwgODQsIDQ4LCA0OCwgNTYsIDY1LCAxMjgsIDg0LCA0OCwgNDgsIDU2LCAxMjgsIDg0LCA0OCwgNDgsIDU1LCAKLSAgICA2NSwgMTI4LCA4NCwgNDgsIDQ4LCA1NSwgMTI4LCA4NCwgNDgsIDQ4LCA1NCwgMTI4LCA4NCwgNDgsIDQ4LCA1MywgMTI4LCAKLSAgICA4NCwgNDgsIDQ4LCA1MiwgMTI4LCA4NCwgNDgsIDQ4LCA1MSwgNjUsIDEyOCwgODQsIDQ4LCA0OCwgNTEsIDEyOCwgODQsIAotICAgIDQ4LCA0OCwgNTAsIDEyOCwgODQsIDQ4LCA0OCwgNDksIDEyOCwgODQsIDQ1LCA4MywgNzIsIDczLCA4MiwgODQsIDEyOCwgCi0gICAgODMsIDkwLCA5MCwgMTI4LCA4MywgOTAsIDg3LCA3MSwgMTI4LCA4MywgOTAsIDg3LCA2NSwgMTI4LCA4MywgOTAsIDg1LCAKLSAgICAxMjgsIDgzLCA5MCwgNzksIDEyOCwgODMsIDkwLCA3MywgMTI4LCA4MywgOTAsIDY5LCA2OSwgMTI4LCA4MywgOTAsIDY5LCAKLSAgICAxMjgsIDgzLCA5MCwgNjUsIDY1LCAxMjgsIDgzLCA5MCwgNjUsIDEyOCwgODMsIDkwLCAxMjgsIDgzLCA4OSwgODgsIDEyOCwgCi0gICAgODMsIDg5LCA4NCwgMTI4LCA4MywgODksIDgzLCA4NCwgNjksIDIwNSwgODMsIDg5LCA4MiwgODgsIDEyOCwgODMsIDg5LCAKLSAgICA4MiwgNzcsIDY1LCA4NCwgNzMsIDc1LCA3MywgMTI4LCA4MywgODksIDgyLCA3NywgNjUsIDEyOCwgODMsIDg5LCA4MiwgNzMsIAotICAgIDc4LCA3MSwgNjksIDEyOCwgODMsIDg5LCA4MiwgNzMsIDY1LCAxOTUsIDgzLCA4OSwgODIsIDEyOCwgODMsIDg5LCA4MCwgCi0gICAgMTI4LCA4MywgODksIDc5LCA4NSwgODcsIDY1LCAxMjgsIDgzLCA4OSwgNzgsIDY5LCA4NiwgNzcsIDY1LCAxMjgsIDgzLCAKLSAgICA4OSwgNzgsIDY4LCA2OSwgODMsIDc3LCA3OSwgMjExLCA4MywgODksIDc4LCA2NywgNzIsIDgyLCA3OSwgNzgsIDc5LCA4NSwgCi0gICAgMjExLCA4MywgODksIDc4LCA2NSwgNzEsIDc5LCA3MSwgODUsIDY5LCAxMjgsIDgzLCA4OSwgNzgsIDY1LCA3MSwgNzcsIAotICAgIDE5MywgODMsIDg5LCA3OCwgNjUsIDcwLCA3MywgMTI4LCA4MywgODksIDc4LCAxMjgsIDgzLCA4OSwgNzcsIDc3LCA2OSwgCi0gICAgODQsIDgyLCA4OSwgMTI4LCA4MywgODksIDc3LCA3NywgNjksIDg0LCA4MiwgNzMsIDE5NSwgODMsIDg5LCA3NywgNjYsIDc5LCAKLSAgICA3NiwgODMsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDU3LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIAotICAgIDQ1LCA1NiwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTUsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgCi0gICAgNDUsIDU0LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MywgNTIsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCAKLSAgICA3NiwgNDUsIDUzLCA1MSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTMsIDUwLCAxMjgsIDgzLCA4OSwgNzcsIAotICAgIDY2LCA3OSwgNzYsIDQ1LCA1MywgNDksIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUzLCA0OCwgMTI4LCA4MywgCi0gICAgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTMsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUyLCA1NywgMTI4LCAKLSAgICA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTIsIDU2LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MiwgCi0gICAgNTUsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUyLCA1MywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCAKLSAgICA0NSwgNTIsIDUxLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MiwgNTAsIDEyOCwgODMsIDg5LCA3NywgNjYsIAotICAgIDc5LCA3NiwgNDUsIDUyLCA0OCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTIsIDEyOCwgODMsIDg5LCA3NywgCi0gICAgNjYsIDc5LCA3NiwgNDUsIDUxLCA1NywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTEsIDU2LCAxMjgsIDgzLCAKLSAgICA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MSwgNTUsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUxLCA1NCwgCi0gICAgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTEsIDUwLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCAKLSAgICA1MSwgNDgsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUxLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIAotICAgIDQ1LCA1MCwgNTcsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCA1NSwgMTI4LCA4MywgODksIDc3LCA2NiwgCi0gICAgNzksIDc2LCA0NSwgNTAsIDU0LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgNTMsIDEyOCwgODMsIDg5LCAKLSAgICA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCA1MiwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIDUxLCAxMjgsIAotICAgIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgNTAsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCAKLSAgICA0OSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIDQ4LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIAotICAgIDQ1LCA1MCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDU3LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgCi0gICAgNzYsIDQ1LCA0OSwgNTYsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1NSwgMTI4LCA4MywgODksIDc3LCAKLSAgICA2NiwgNzksIDc2LCA0NSwgNDksIDU0LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTMsIDEyOCwgODMsIAotICAgIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1MiwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDUxLCAKLSAgICAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTAsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIAotICAgIDQ5LCA0OSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDQ4LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgCi0gICAgNzYsIDQ1LCA0OSwgMTI4LCA4MywgODksIDc2LCA3OSwgODQsIDIwMSwgODMsIDg5LCAxMjgsIDgzLCA4NywgOTAsIDEyOCwgCi0gICAgODMsIDg3LCA4NSwgNzgsIDE5OSwgODMsIDg3LCA3OSwgODIsIDY4LCA4MywgMTI4LCA4MywgODcsIDc5LCA4MiwgNjgsIAotICAgIDEyOCwgODMsIDg3LCA3OSwgNzksIDEyOCwgODMsIDg3LCA3OSwgMTI4LCA4MywgODcsIDczLCA4MiwgMjA0LCA4MywgODcsIAotICAgIDczLCA3NywgNzcsIDczLCA3OCwgNzEsIDEyOCwgODMsIDg3LCA3MywgNzcsIDc3LCA2OSwgODIsIDEyOCwgODMsIDg3LCA3MywgCi0gICAgNzMsIDEyOCwgODMsIDg3LCA3MywgMTI4LCA4MywgODcsIDcxLCAxMjgsIDgzLCA4NywgNjksIDY5LCA4NCwgMTI4LCA4MywgCi0gICAgODcsIDY5LCA2OSwgMjEyLCA4MywgODcsIDY5LCA2NSwgODQsIDEyOCwgODMsIDg3LCA2OSwgNjUsIDIxMiwgODMsIDg3LCAKLSAgICA2NSwgODMsIDIwMCwgODMsIDg3LCA2NSwgODAsIDgwLCA3MywgNzgsIDcxLCAxMjgsIDgzLCA4NywgNjUsIDY1LCAxMjgsIAotICAgIDgzLCA4NywgMTI4LCA4MywgODYsIDY1LCA4MywgODQsIDIwMSwgODMsIDg2LCA2NSwgODIsIDczLCA4NCwgNjUsIDEyOCwgCi0gICAgODMsIDg2LCA2NSwgODIsIDczLCA4NCwgMTkzLCA4MywgODUsIDg4LCAxMjgsIDgzLCA4NSwgODUsIDEyOCwgODMsIDg1LCAKLSAgICA4NCwgODIsIDE5MywgODMsIDg1LCA4NCwgMTI4LCA4MywgODUsIDgzLCA4MCwgNjksIDc4LCA4MywgNzMsIDc5LCAyMDYsIAotICAgIDgzLCA4NSwgODMsIDcyLCA3MywgMTI4LCA4MywgODUsIDgyLCA4OSwgNjUsIDEyOCwgODMsIDg1LCA4MiwgODgsIDEyOCwgCi0gICAgODMsIDg1LCA4MiwgODIsIDc5LCA4NSwgNzgsIDY4LCAxMjgsIDgzLCA4NSwgODIsIDgyLCA3OSwgODUsIDc4LCAxOTYsIDgzLCAKLSAgICA4NSwgODIsIDcwLCA2OSwgODIsIDEyOCwgODMsIDg1LCA4MiwgNzAsIDY1LCA2NywgMTk3LCA4MywgODUsIDgyLCA2OSwgCi0gICAgMTI4LCA4MywgODUsIDgyLCA2NSwgNzgsIDcxLCAxMjgsIDgzLCA4NSwgODIsIDU3LCAxMjgsIDgzLCA4NSwgODIsIDEyOCwgCi0gICAgODMsIDg1LCAyMTAsIDgzLCA4NSwgODAsIDgyLCA2NSwgNzYsIDczLCA3OCwgNjksIDY1LCAyMTAsIDgzLCA4NSwgODAsIDY5LCAKLSAgICA4MiwgODYsIDczLCA4MywgNjksIDEyOCwgODMsIDg1LCA4MCwgNjksIDgyLCA4MywgNjksIDg0LCAxMjgsIDgzLCA4NSwgODAsIAotICAgIDY5LCA4MiwgODMsIDY5LCAyMTIsIDgzLCA4NSwgODAsIDY5LCA4MiwgODMsIDY3LCA4MiwgNzMsIDgwLCAyMTIsIDgzLCA4NSwgCi0gICAgODAsIDY5LCA4MiwgNzMsIDc3LCA4MCwgNzksIDgzLCA2OSwgMTk2LCA4MywgODUsIDgwLCA2OSwgODIsIDcwLCA3MywgODgsIAotICAgIDY5LCAxOTYsIDgzLCA4NSwgODAsIDY5LCAyMTAsIDgzLCA4NSwgODAsIDEyOCwgODMsIDg1LCA3OSwgODgsIDEyOCwgODMsIAotICAgIDg1LCA3OSwgODAsIDEyOCwgODMsIDg1LCA3OSwgMTI4LCA4MywgODUsIDc4LCA4MywgNjksIDIxMiwgODMsIDg1LCA3OCwgCi0gICAgODIsIDczLCA4MywgNjksIDEyOCwgODMsIDg1LCA3OCwgODIsIDczLCA4MywgMTk3LCA4MywgODUsIDc4LCA3MSwgNzYsIDY1LCAKLSAgICA4MywgODMsIDY5LCA4MywgMTI4LCA4MywgODUsIDc4LCA3MSwgMTI4LCA4MywgODUsIDc4LCA3MCwgNzYsIDc5LCA4NywgNjksIAotICAgIDgyLCAxMjgsIDgzLCA4NSwgNzgsIDY4LCA2NSwgNzgsIDY5LCA4MywgMTk3LCA4MywgODUsIDc4LCAxMjgsIDgzLCA4NSwgCi0gICAgMjA2LCA4MywgODUsIDc3LCA3NywgNjksIDgyLCAxMjgsIDgzLCA4NSwgNzcsIDc3LCA2NSwgODQsIDczLCA3OSwgNzgsIAotICAgIDEyOCwgODMsIDg1LCA3NywgNzcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDgzLCA4NSwgNzcsIDY1LCA4MywgNzIsIDEyOCwgCi0gICAgODMsIDg1LCA3NywgMTI4LCA4MywgODUsIDc2LCA3MCwgODUsIDgyLCAxMjgsIDgzLCA4NSwgNzUsIDg1LCA3OCwgMTI4LCAKLSAgICA4MywgODUsIDc1LCA4NSwgMjA2LCA4MywgODUsIDc1LCA4NSwgMTI4LCA4MywgODUsIDc1LCAyMTMsIDgzLCA4NSwgNzMsIAotICAgIDg0LCA2NSwgNjYsIDc2LCA2OSwgMTI4LCA4MywgODUsIDczLCA4NCwgMTI4LCA4MywgODUsIDczLCAyMTIsIDgzLCA4NSwgCi0gICAgNzIsIDg1LCA4MiwgMTI4LCA4MywgODUsIDY5LCAxMjgsIDgzLCA4NSwgNjgsIDUwLCAxMjgsIDgzLCA4NSwgNjgsIDEyOCwgCi0gICAgODMsIDg1LCA2NywgNzUsIDczLCA3OCwgMTk5LCA4MywgODUsIDY3LCA3NSwgNjksIDY4LCAxMjgsIDgzLCA4NSwgNjcsIAotICAgIDIwMywgODMsIDg1LCA2NywgNjcsIDY5LCA2OSwgNjgsIDgzLCAxMjgsIDgzLCA4NSwgNjcsIDY3LCA2OSwgNjksIDY4LCAKLSAgICAyMTEsIDgzLCA4NSwgNjcsIDY3LCA2OSwgNjksIDY4LCAxMjgsIDgzLCA4NSwgNjcsIDY3LCA2OSwgNjksIDE5NiwgODMsIAotICAgIDg1LCA2NiwgODUsIDc4LCA3MywgODQsIDEyOCwgODMsIDg1LCA2NiwgODMsIDg0LCA3MywgODQsIDg1LCA4NCwgNzMsIDc5LCAKLSAgICAyMDYsIDgzLCA4NSwgNjYsIDgzLCA4NCwgNzMsIDg0LCA4NSwgODQsIDY5LCAxMjgsIDgzLCA4NSwgNjYsIDgzLCA4NCwgNzMsIAotICAgIDg0LCA4NSwgODQsIDE5NywgODMsIDg1LCA2NiwgODMsIDY5LCA4NCwgMTI4LCA4MywgODUsIDY2LCA4MywgNjksIDIxMiwgCi0gICAgODMsIDg1LCA2NiwgODMsIDY3LCA4MiwgNzMsIDgwLCAyMTIsIDgzLCA4NSwgNjYsIDgwLCA4NSwgNzgsIDY3LCA4NCwgNzMsIAotICAgIDgzLCAxMjgsIDgzLCA4NSwgNjYsIDc2LCA3MywgNzgsIDY5LCA2NSwgMjEwLCA4MywgODUsIDY2LCA3NiwgNzMsIDc3LCA2NSwgCi0gICAgODQsIDczLCA3OSwgNzgsIDEyOCwgODMsIDg1LCA2NiwgNzYsIDczLCA3NywgNjUsIDg0LCA2OSwgNDUsIDUxLCAxMjgsIDgzLCAKLSAgICA4NSwgNjYsIDc2LCA3MywgNzcsIDY1LCA4NCwgNjksIDQ1LCA1MCwgMTI4LCA4MywgODUsIDY2LCA3NiwgNzMsIDc3LCA2NSwgCi0gICAgODQsIDY5LCAxMjgsIDgzLCA4NSwgNjYsIDc2LCA3MywgNzcsIDY1LCA4NCwgMTk3LCA4MywgODUsIDY2LCA3NCwgNzksIDczLCAKLSAgICA3OCwgNjksIDE5NiwgODMsIDg1LCA2NiwgNzQsIDY5LCA2NywgODQsIDEyOCwgODMsIDg1LCA2NiwgNzMsIDg0LCA3OSwgCi0gICAgMTI4LCA4MywgODUsIDY2LCA3MSwgODIsIDc5LCA4NSwgODAsIDEyOCwgODMsIDg1LCA2NiwgNzEsIDgyLCA3OSwgODUsIAotICAgIDIwOCwgODMsIDg1LCA2NiwgMTI4LCA4MywgODUsIDY1LCA3NywgMTI4LCA4MywgODUsIDY1LCA2OSwgODQsIDEyOCwgODMsIAotICAgIDg1LCA2NSwgNjksIDc4LCAxMjgsIDgzLCA4NSwgNjUsIDY5LCAxMjgsIDgzLCA4NSwgNjUsIDY2LCAxMjgsIDgzLCA4NSwgCi0gICAgNjUsIDEyOCwgODMsIDIxMywgODMsIDg0LCA4OCwgMTI4LCA4MywgODQsIDg3LCA2NSwgMTI4LCA4MywgODQsIDg1LCA2OCwgCi0gICAgODksIDEyOCwgODMsIDg0LCA4NSwgNjgsIDczLCAyMDcsIDgzLCA4NCwgODUsIDY3LCA3NSwgNDUsIDc5LCA4NSwgMjEyLCAKLSAgICA4MywgODQsIDgzLCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3OCwgMTk5LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA4MywgCi0gICAgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCAyMTEsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1NywgMTI4LCAKLSAgICA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTYsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDU1LCAxMjgsIAotICAgIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1NCwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTMsIDEyOCwgCi0gICAgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDUyLCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1MSwgMTI4LCAKLSAgICA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTAsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDQ5LCA0OSwgCi0gICAgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNDksIDQ4LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCAKLSAgICA0OSwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDE5NywgODMsIDg0LCA4MiwgNzMsIDgwLCA2OSwgMTI4LCA4MywgODQsIAotICAgIDgyLCA3MywgNzgsIDcxLCAxMjgsIDgzLCA4NCwgODIsIDczLCA3OCwgMTk5LCA4MywgODQsIDgyLCA3MywgNzUsIDY5LCA4NCwgCi0gICAgNzIsIDgyLCA3OSwgODUsIDcxLCA3MiwgMTI4LCA4MywgODQsIDgyLCA3MywgNzUsIDE5NywgODMsIDg0LCA4MiwgNzMsIDY4LCAKLSAgICA2OSwgMTI4LCA4MywgODQsIDgyLCA3MywgNjcsIDg0LCA3NiwgMjE3LCA4MywgODQsIDgyLCA2OSwgODQsIDY3LCA3MiwgNjksIAotICAgIDE5NiwgODMsIDg0LCA4MiwgNjksIDg0LCA2NywgNzIsIDEyOCwgODMsIDg0LCA4MiwgNjksIDgzLCAyMTEsIDgzLCA4NCwgCi0gICAgODIsIDY5LCA3OCwgNzEsIDg0LCA3MiwgMTI4LCA4MywgODQsIDgyLCA2OSwgNjUsIDc3LCA2OSwgODIsIDEyOCwgODMsIDg0LCAKLSAgICA4MiwgNjUsIDg3LCA2NiwgNjksIDgyLCA4MiwgODksIDEyOCwgODMsIDg0LCA4MiwgNjUsIDg0LCA4NSwgNzcsIDQ1LCA1MCwgCi0gICAgMTI4LCA4MywgODQsIDgyLCA2NSwgODQsIDg1LCA3NywgMTI4LCA4MywgODQsIDgyLCA2NSwgODQsIDg1LCAyMDUsIDgzLCAKLSAgICA4NCwgODIsIDY1LCA4NCwgNzMsIDY1LCAyMDYsIDgzLCA4NCwgODIsIDY1LCA3MywgNzgsIDY5LCA4MiwgMTI4LCA4MywgODQsIAotICAgIDgyLCA2NSwgNzMsIDcxLCA3MiwgODQsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDgzLCA4NCwgODIsIDY1LCA3MywgNzEsIDcyLCAKLSAgICA4NCwgMTI4LCA4MywgODQsIDgyLCA2NSwgNzMsIDcxLCA3MiwgMjEyLCA4MywgODQsIDgyLCA2NSwgNzMsIDcwLCAxMjgsIAotICAgIDgzLCA4NCwgODIsIDY1LCA3MSwgNzEsIDczLCA4MywgNzcsIDY1LCA4NCwgNjUsIDEyOCwgODMsIDg0LCA3OSwgODYsIDY5LCAKLSAgICAxMjgsIDgzLCA4NCwgNzksIDgyLCA2OSwgMTI4LCA4MywgODQsIDc5LCA4MCwgODcsIDY1LCA4NCwgNjcsIDcyLCAxMjgsIAotICAgIDgzLCA4NCwgNzksIDgwLCA4MCwgNzMsIDc4LCA3MSwgMTI4LCA4MywgODQsIDc5LCA4MCwgODAsIDY1LCA3MSwgNjksIDEyOCwgCi0gICAgODMsIDg0LCA3OSwgODAsIDEyOCwgODMsIDg0LCA3OSwgMjA4LCA4MywgODQsIDc5LCA3OCwgNjksIDEyOCwgODMsIDg0LCAKLSAgICA3OSwgNjcsIDc1LCAxMjgsIDgzLCA4NCwgNzksIDY3LCAyMDMsIDgzLCA4NCwgNzMsIDgyLCA4MiwgODUsIDIwOCwgODMsIAotICAgIDg0LCA3MywgNzcsIDc3LCA2OSwgMTI4LCA4MywgODQsIDczLCA3NiwgMjA0LCA4MywgODQsIDczLCA3NiwgMTk3LCA4MywgCi0gICAgODQsIDczLCA3MSwgNzcsIDY1LCAxMjgsIDgzLCA4NCwgNzMsIDY3LCA3NSwgNzMsIDc4LCAxOTksIDgzLCA4NCwgNzMsIDY3LCAKLSAgICAyMDMsIDgzLCA4NCwgNjksIDgyLCA2OSwgNzksIDEyOCwgODMsIDg0LCA2OSwgODAsIDEyOCwgODMsIDg0LCA2OSwgNzgsIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDczLCAxOTUsIDgzLCA4NCwgNjksIDc3LCAxMjgsIDgzLCA4NCwgNjksIDY1LCA3NywgCi0gICAgNzMsIDc4LCAxOTksIDgzLCA4NCwgNjksIDY1LCA3NywgMTI4LCA4MywgODQsIDY5LCA2NSwgMjA1LCA4MywgODQsIDY1LCAKLSAgICA4NiwgODIsIDc5LCA4NSwgMTI4LCA4MywgODQsIDY1LCA4NiwgODIsIDc5LCA4MywgMTI4LCA4MywgODQsIDY1LCA4NiwgODIsIAotICAgIDc5LCAyMTEsIDgzLCA4NCwgNjUsIDg1LCA4MiwgNzksIDgzLCAxMjgsIDgzLCA4NCwgNjUsIDg0LCA4NSwgMTk3LCA4MywgCi0gICAgODQsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MywgODQsIDY1LCA4NCwgNjksIDgyLCA4MywgMTI4LCA4MywgODQsIDY1LCAKLSAgICA4NCwgNjksIDEyOCwgODMsIDg0LCA2NSwgODIsIDIxMiwgODMsIDg0LCA2NSwgODIsIDgzLCAxMjgsIDgzLCA4NCwgNjUsIAotICAgIDgyLCA4MiwgNjksIDE5NiwgODMsIDg0LCA2NSwgODIsIDc1LCAxMjgsIDgzLCA4NCwgNjUsIDgyLCAxMjgsIDgzLCA4NCwgCi0gICAgNjUsIDIxMCwgODMsIDg0LCA2NSwgNzgsIDY4LCA4MywgODQsIDczLCA3NiwgNzYsIDEyOCwgODMsIDg0LCA2NSwgNzgsIDY4LCAKLSAgICA2NSwgODIsIDE5NiwgODMsIDg0LCA2NSwgNzgsIDY4LCAxMjgsIDgzLCA4NCwgNjUsIDc4LCAxMjgsIDgzLCA4NCwgNjUsIAotICAgIDc3LCA4MCwgNjksIDE5NiwgODMsIDg0LCA2NSwgNzYsIDc2LCA3MywgNzksIDc4LCAxMjgsIDgzLCA4NCwgNjUsIDcwLCA3MCwgCi0gICAgMTI4LCA4MywgODQsIDY1LCA3MCwgMTk4LCA4MywgODQsIDY1LCA2OCwgNzMsIDg1LCA3NywgMTI4LCA4MywgODQsIDY1LCAKLSAgICA2NywgNjcsIDY1LCA4NCwgNzksIDEyOCwgODMsIDg0LCA2NSwgNjcsIDY3LCA2NSwgODQsIDczLCA4MywgODMsIDczLCA3NywgCi0gICAgNzksIDEyOCwgODMsIDg0LCA1MCwgMTI4LCA4MywgODMsIDg5LCA4OCwgMTI4LCA4MywgODMsIDg5LCA4NCwgMTI4LCA4MywgCi0gICAgODMsIDg5LCA4MiwgODgsIDEyOCwgODMsIDgzLCA4OSwgODIsIDEyOCwgODMsIDgzLCA4OSwgODAsIDEyOCwgODMsIDgzLCAKLSAgICA4OSwgMTI4LCA4MywgODMsIDg1LCA4OCwgMTI4LCA4MywgODMsIDg1LCA4NSwgMTI4LCA4MywgODMsIDg1LCA4NCwgMTI4LCAKLSAgICA4MywgODMsIDg1LCA4MCwgMTI4LCA4MywgODMsIDc5LCA4OCwgMTI4LCA4MywgODMsIDc5LCA4NCwgMTI4LCA4MywgODMsIAotICAgIDc5LCA4MCwgMTI4LCA4MywgODMsIDc5LCA3OSwgMTI4LCA4MywgODMsIDc5LCAxMjgsIDgzLCA4MywgNzMsIDg4LCAxMjgsIAotICAgIDgzLCA4MywgNzMsIDg0LCAxMjgsIDgzLCA4MywgNzMsIDgwLCAxMjgsIDgzLCA4MywgNzMsIDczLCAxMjgsIDgzLCA4MywgCi0gICAgNzMsIDY5LCA4OCwgMTI4LCA4MywgODMsIDczLCA2OSwgODAsIDEyOCwgODMsIDgzLCA3MywgNjksIDEyOCwgODMsIDgzLCAKLSAgICA3MywgMTI4LCA4MywgODMsIDcyLCA3MywgNzgsIDEyOCwgODMsIDgzLCA3MiwgNjksIDEyOCwgODMsIDgzLCA2OSwgODgsIAotICAgIDEyOCwgODMsIDgzLCA2OSwgODAsIDEyOCwgODMsIDgzLCA2OSwgNjksIDEyOCwgODMsIDgzLCA2NSwgODgsIDEyOCwgODMsIAotICAgIDgzLCA2NSwgODUsIDEyOCwgODMsIDgzLCA2NSwgODQsIDEyOCwgODMsIDgzLCA2NSwgODAsIDEyOCwgODMsIDgzLCA2NSwgCi0gICAgNzgsIDcxLCA4OSwgNjksIDc5LCA4MiwgNzMsIDc4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODMsIDgzLCA2NSwgNzgsIAotICAgIDcxLCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgzLCA4MywgNjUsIDc4LCAKLSAgICA3MSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDg0LCA3MiwgNzMsIDY5LCA4NSwgCi0gICAgODQsIDcyLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIAotICAgIDg0LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgCi0gICAgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODMsIAotICAgIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgyLCA3MywgNjksIDg1LCAKLSAgICA3NiwgNDUsIDc1LCA3MiwgNzMsIDY5LCA4NSwgNzUsIDcyLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODIsIDczLCA2OSwgCi0gICAgODUsIDc2LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgzLCA4MywgNjUsIDc4LCAKLSAgICA3MSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIAotICAgIDgzLCA4MywgNjUsIDc4LCA3MSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDczLCAKLSAgICA2OSwgODUsIDc4LCA3MSwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MywgODMsIAotICAgIDY1LCA3OCwgNzEsIDY3LCA3MywgNjksIDg1LCA2NywgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MywgODMsIDY1LCAKLSAgICA3OCwgNzEsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDY1LCA4MiwgNjUsIDY5LCA2NSwgCi0gICAgMTI4LCA4MywgODMsIDY1LCA3MywgMTI4LCA4MywgODMsIDY1LCA2NSwgMTI4LCA4MywgODMsIDUxLCAxMjgsIDgzLCA4MywgCi0gICAgNTAsIDEyOCwgODMsIDgyLCAxMjgsIDgzLCA4MSwgODUsIDczLCA4MywgMjAwLCA4MywgODEsIDg1LCA3MywgODIsIDgyLCAKLSAgICA2OSwgMjA0LCA4MywgODEsIDg1LCA3MywgNzEsIDcxLCA3NiwgMTk3LCA4MywgODEsIDg1LCA2OSwgNjksIDkwLCA2OSwgNjgsIAorICAgIDQ1LCA3NiwgNjksIDcxLCA3MSwgNjksIDE5NiwgODQsIDcyLCA4MiwgNjksIDY5LCA0NSwgNjksIDIwNSwgODQsIDcyLCA4MiwgCisgICAgNjksIDY5LCA0NSwgMTk2LCA4NCwgNzIsIDgyLCA2OSwgNjksIDQ1LCA2NywgNzMsIDgyLCA2NywgNzYsIDE5NywgODQsIDcyLCAKKyAgICA4MiwgNjksIDY1LCA2OCwgMTI4LCA4NCwgNzIsIDc5LCA4NSwgODMsIDY1LCA3OCwgNjgsIDgzLCAxMjgsIDg0LCA3MiwgNzksIAorICAgIDg1LCA4MywgNjUsIDc4LCA2OCwgMjExLCA4NCwgNzIsIDc5LCA4NSwgODMsIDY1LCA3OCwgNjgsIDEyOCwgODQsIDcyLCA3OSwgCisgICAgODUsIDgzLCA2NSwgNzgsIDE5NiwgODQsIDcyLCA3OSwgODUsIDcxLCA3MiwgMjEyLCA4NCwgNzIsIDc5LCA4NSwgMTI4LCAKKyAgICA4NCwgNzIsIDc5LCA4MiwgNzgsIDEyOCwgODQsIDcyLCA3OSwgODIsIDIwNiwgODQsIDcyLCA3OSwgNzgsIDcxLCAxMjgsIAorICAgIDg0LCA3MiwgNzksIDc3LCAxMjgsIDg0LCA3MiwgNzksIDc0LCAxMjgsIDg0LCA3MiwgNzksIDY1LCAxMjgsIDg0LCA3MiwgCisgICAgMjA3LCA4NCwgNzIsIDczLCA4NSwgODQsIDcyLCAxMjgsIDg0LCA3MiwgNzMsIDg0LCA2NSwgMTI4LCA4NCwgNzIsIDczLCAKKyAgICA4MiwgODQsIDg5LCA0NSwgODMsIDY5LCA2NywgNzksIDc4LCAxOTYsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDQ1LCA3OSwgCisgICAgNzgsIDY5LCAxMjgsIDg0LCA3MiwgNzMsIDgyLCA4NCwgMjE3LCA4NCwgNzIsIDczLCA4MiwgODQsIDY5LCA2OSwgNzgsIAorICAgIDEyOCwgODQsIDcyLCA3MywgODIsIDg0LCA2OSwgNjksIDIwNiwgODQsIDcyLCA3MywgODIsIDY4LCA4MywgMTI4LCA4NCwgCisgICAgNzIsIDczLCA4MiwgNjgsIDIxMSwgODQsIDcyLCA3MywgODIsIDY4LCA0NSwgODMsIDg0LCA2NSwgNzEsIDE5NywgODQsIDcyLCAKKyAgICA3MywgODIsIDY4LCAxMjgsIDg0LCA3MiwgNzMsIDgyLCAxOTYsIDg0LCA3MiwgNzMsIDc4LCA3NSwgNzMsIDc4LCAxOTksIAorICAgIDg0LCA3MiwgNzMsIDczLCAxMjgsIDg0LCA3MiwgNzMsIDcxLCA3MiwgMTI4LCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCAKKyAgICAyMDAsIDg0LCA3MiwgNzMsIDY3LCAyMDMsIDg0LCA3MiwgNzMsIDY1LCA2NiwgMTI4LCA4NCwgNzIsIDY5LCA4OSwgMTI4LCAKKyAgICA4NCwgNzIsIDY5LCA4NCwgNzIsIDY5LCAxMjgsIDg0LCA3MiwgNjksIDg0LCA3MiwgMTI4LCA4NCwgNzIsIDY5LCA4NCwgNjUsIAorICAgIDEyOCwgODQsIDcyLCA2OSwgODQsIDE5MywgODQsIDcyLCA2OSwgODMsIDgwLCA3MywgNjUsIDIwNiwgODQsIDcyLCA2OSwgCisgICAgODMsIDY5LCA3OSwgODMsIDEyOCwgODQsIDcyLCA2OSwgODMsIDY5LCA3OSwgMjExLCA4NCwgNzIsIDY5LCAyMTEsIDg0LCAKKyAgICA3MiwgNjksIDgyLCA3NywgNzksIDc3LCA2OSwgODQsIDY5LCA4MiwgMTI4LCA4NCwgNzIsIDY5LCA4MiwgNzcsIDc5LCA2OCwgCisgICAgODksIDc4LCA2NSwgNzcsIDczLCA2NywgMTI4LCA4NCwgNzIsIDY5LCA4MiwgNjksIDcwLCA3OSwgODIsIDY5LCAxMjgsIDg0LCAKKyAgICA3MiwgNjksIDgyLCAxOTcsIDg0LCA3MiwgNjksIDIwNiwgODQsIDcyLCA2OSwgNzcsIDY1LCA4NCwgNzMsIDgzLCA3NywgNzksIAorICAgIDIxMSwgODQsIDcyLCA2OSwgNzcsIDY1LCAxMjgsIDg0LCA3MiwgNjksIDc3LCAxOTMsIDg0LCA3MiwgNjksIDcyLCAxMjgsIAorICAgIDg0LCA3MiwgNjksIDIwMCwgODQsIDcyLCA2OSwgNjUsIDEyOCwgODQsIDcyLCAxOTcsIDg0LCA3MiwgNjUsIDg3LCAxMjgsIAorICAgIDg0LCA3MiwgNjUsIDc4LCA4NCwgNzIsIDY1LCA3NSwgNzIsIDY1LCA4NCwgMTI4LCA4NCwgNzIsIDY1LCA3OCwgNzgsIDY1LCAKKyAgICAxMjgsIDg0LCA3MiwgNjUsIDc4LCAxMjgsIDg0LCA3MiwgNjUsIDIwNiwgODQsIDcyLCA2NSwgNzcsIDY5LCA2OCwgNzIsIAorICAgIDEyOCwgODQsIDcyLCA2NSwgNzYsIDEyOCwgODQsIDcyLCA2NSwgMjA0LCA4NCwgNzIsIDY1LCA3NCwgMTI4LCA4NCwgNzIsIAorICAgIDY1LCAyMDEsIDg0LCA3MiwgNjUsIDcyLCA2NSwgNzgsIDEyOCwgODQsIDcyLCA2NSwgNjUsIDc4LCAxOTMsIDg0LCA3MiwgCisgICAgNjUsIDY1LCA3NiwgODUsIDEyOCwgODQsIDcyLCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA4NCwgNjksIDg4LCA4NCwgMTI4LCAKKyAgICA4NCwgNjksIDg4LCAyMTIsIDg0LCA2OSwgODgsIDEyOCwgODQsIDY5LCA4NiwgNzMsIDgyLCAxMjgsIDg0LCA2OSwgODUsIAorICAgIDg0LCA2OSwgODUsIDg4LCAxMjgsIDg0LCA2OSwgODUsIDg0LCA2OSwgODUsIDg3LCA2OSwgNzgsIDEyOCwgODQsIDY5LCA4NSwgCisgICAgODQsIDEyOCwgODQsIDY5LCA4NSwgNzgsIDEyOCwgODQsIDY5LCA4NSwgNjUsIDY5LCA4MSwgMTI4LCA4NCwgNjksIDg1LCAKKyAgICA2NSwgNjksIDc4LCAxMjgsIDg0LCA2OSwgODUsIDEyOCwgODQsIDY5LCA4NCwgODIsIDY1LCA4MywgNzMsIDc3LCA3OSwgODUsIAorICAgIDEyOCwgODQsIDY5LCA4NCwgODIsIDY1LCA4MywgNjksIDc3LCA2OSwgMTI4LCA4NCwgNjksIDg0LCA4MiwgNjUsIDgwLCA3NiwgCisgICAgNzMsIDEyOCwgODQsIDY5LCA4NCwgODIsIDY1LCA3MSwgODIsIDY1LCAyMDUsIDg0LCA2OSwgODQsIDgyLCA2NSwgNzAsIDc5LCAKKyAgICA3OCwgNzMsIDY1LCA4MywgMTI4LCA4NCwgNjksIDg0LCA3MiwgMTI4LCA4NCwgNjksIDg0LCAyMDAsIDg0LCA2OSwgODQsIAorICAgIDY1LCA4MiwgODQsIDc5LCAyMTEsIDg0LCA2OSwgODQsIDY1LCA4MiwgODQsIDczLCA3NywgNzksIDgyLCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDg0LCA2OSwgODQsIDEyOCwgODQsIDY5LCAyMTIsIDg0LCA2OSwgODMsIDgzLCA2OSwgODIsIDY1LCAxMjgsIDg0LCAKKyAgICA2OSwgODMsIDgzLCA2OSwgODIsIDE5MywgODQsIDY5LCA4MywgODMsIDY1LCA4MiwgNzksIDIwNiwgODQsIDY5LCA4MywgCisgICAgMjAwLCA4NCwgNjksIDgyLCA3NywgNzMsIDc4LCA2NSwgODQsIDc5LCA4MiwgMTI4LCA4NCwgNjksIDgwLCAxMjgsIDg0LCAKKyAgICA2OSwgNzgsIDg1LCA4NCwgNzksIDEyOCwgODQsIDY5LCA3OCwgODUsIDEyOCwgODQsIDY5LCA3OCwgMjEzLCA4NCwgNjksIAorICAgIDc4LCA4NCwgNzIsIDEyOCwgODQsIDY5LCA3OCwgODQsIDEyOCwgODQsIDY5LCA3OCwgODMsIDY5LCAxMjgsIDg0LCA2OSwgCisgICAgNzgsIDgzLCAxOTcsIDg0LCA2OSwgNzgsIDgzLCAxMjgsIDg0LCA2OSwgNzgsIDIxMSwgODQsIDY5LCA3OCwgNzgsIDczLCAKKyAgICAyMTEsIDg0LCA2OSwgNzgsIDcxLCAxOTcsIDg0LCA2OSwgNzgsIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIAorICAgIDg0LCA2OSwgNzgsIDEyOCwgODQsIDY5LCAyMDYsIDg0LCA2OSwgNzcsIDgwLCA4NSwgMjExLCA4NCwgNjksIDc2LCA4NSwgCisgICAgMTI4LCA4NCwgNjksIDc2LCA3OSwgODUsIDIxMSwgODQsIDY5LCA3NiwgNzYsIDY5LCAyMTAsIDg0LCA2OSwgNzYsIDczLCAKKyAgICA4MywgNzIsIDE5MywgODQsIDY5LCA3NiwgNjksIDg2LCA3MywgODMsIDczLCA3OSwgNzgsIDEyOCwgODQsIDY5LCA3NiwgNjksIAorICAgIDgzLCA2NywgNzksIDgwLCA2OSwgMTI4LCA4NCwgNjksIDc2LCA2OSwgODAsIDcyLCA3OSwgNzgsIDY5LCAxMjgsIDg0LCA2OSwgCisgICAgNzYsIDY5LCA4MCwgNzIsIDc5LCA3OCwgMTk3LCA4NCwgNjksIDc2LCA2OSwgNzMsIDY1LCAxMjgsIDg0LCA2OSwgNzYsIDY5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgMjAwLCA4NCwgNjksIDc1LCAxMjgsIDg0LCA2OSwgNzMsIDg3LCA4MywgMTI4LCA4NCwgNjksIAorICAgIDcxLCA2OSwgNzIsIDEyOCwgODQsIDY5LCA2OSwgODQsIDcyLCAxMjgsIDg0LCA2OSwgNjksIDg0LCAyMDAsIDg0LCA2OSwgCisgICAgNjksIDc4LCA4MywgMTI4LCA4NCwgNjksIDY5LCA2OSwgNjksIDEyOCwgODQsIDY5LCAxOTcsIDg0LCA2OSwgNjgsIDg1LCAKKyAgICA3OCwgNzEsIDEyOCwgODQsIDY5LCA2NSwgODIsIDIxMSwgODQsIDY5LCA2NSwgODIsIDY4LCA4MiwgNzksIDgwLCA0NSwgODMsIAorICAgIDgwLCA3OSwgNzUsIDY5LCAxOTYsIDg0LCA2OSwgNjUsIDgyLCA2OCwgODIsIDc5LCA4MCwgNDUsIDgzLCA3MiwgNjUsIDc4LCAKKyAgICA3NSwgNjksIDE5NiwgODQsIDY5LCA2NSwgODIsIDY4LCA4MiwgNzksIDgwLCA0NSwgNjYsIDY1LCA4MiwgNjYsIDY5LCAxOTYsIAorICAgIDg0LCA2OSwgNjUsIDgyLCA0NSwgNzksIDcwLCAxOTgsIDg0LCA2OSwgNjUsIDY3LCA4NSwgMjA4LCA4NCwgNjksIDQ1LCA4NSwgCisgICAgMTI4LCA4NCwgNjksIDQ1LCA1MCwgMTI4LCA4NCwgNjcsIDcyLCA2OSwgNzIsIDY5LCA3MiwgMTI4LCA4NCwgNjcsIDcyLCAKKyAgICA2OSwgNzIsIDY5LCAyMDAsIDg0LCA2NywgNzIsIDY5LCA3MiwgMTI4LCA4NCwgNjcsIDcyLCA2OSwgMjAwLCA4NCwgNjcsIAorICAgIDcyLCA2OSwgMTI4LCA4NCwgMTk1LCA4NCwgNjUsIDg5LCAxMjgsIDg0LCA2NSwgODgsIDczLCAxMjgsIDg0LCA2NSwgODgsIAorICAgIDEyOCwgODQsIDY1LCA4NywgNjksIDc2LCA3NiwgNjksIDc3LCA2OSwgMjEyLCA4NCwgNjUsIDg3LCA2NSwgMTI4LCA4NCwgCisgICAgNjUsIDg3LCAxMjgsIDg0LCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA4NCwgNjUsIDg2LCAxMjgsIDg0LCAKKyAgICA2NSwgMjE0LCA4NCwgNjUsIDg1LCA4MiwgODUsIDgzLCAxMjgsIDg0LCA2NSwgODUsIDc3LCAxMjgsIDg0LCA2NSwgMjEzLCAKKyAgICA4NCwgNjUsIDg0LCA4NywgNjksIDY5LCA3NiwgMTI4LCA4NCwgNjUsIDg0LCA4NywgNjksIDY5LCAyMDQsIDg0LCA2NSwgODQsIAorICAgIDg0LCA3OSwgNzksIDY5LCAxOTYsIDg0LCA2NSwgODQsIDEyOCwgODQsIDY1LCA4MywgMTI4LCA4NCwgNjUsIDgyLCA4NSwgCisgICAgNzgsIDcxLCAxMjgsIDg0LCA2NSwgODIsIDg0LCA2NSwgODIsIDQ1LCA1MCwgMTI4LCA4NCwgNjUsIDgyLCA4NCwgNjUsIDgyLCAKKyAgICAxMjgsIDg0LCA2NSwgODIsIDcxLCA2OSwgODQsIDEyOCwgODQsIDY1LCA4MSwgMTI4LCA4NCwgNjUsIDgwLCA2OSwgODIsIAorICAgIDEyOCwgODQsIDY1LCA4MCwgMTk3LCA4NCwgNjUsIDgwLCAxMjgsIDg0LCA2NSwgNzksIDEyOCwgODQsIDY1LCA3OCwgNzgsIAorICAgIDY5LCAxOTYsIDg0LCA2NSwgNzgsIDcxLCA2OSwgODIsIDczLCA3OCwgNjksIDEyOCwgODQsIDY1LCA3OCwgNzEsIDY5LCA3OCwgCisgICAgODQsIDEyOCwgODQsIDY1LCA3OCwgNzEsIDY5LCA3OCwgMjEyLCA4NCwgNjUsIDc4LCAxOTksIDg0LCA2NSwgNzgsIDY1LCAKKyAgICA2NiwgNjUsIDg0LCAxOTMsIDg0LCA2NSwgNzgsIDEyOCwgODQsIDY1LCA3NywgNzMsIDc4LCA3MSwgMTI4LCA4NCwgNjUsIAorICAgIDc3LCAxMjgsIDg0LCA2NSwgNzYsIDc2LCAxMjgsIDg0LCA2NSwgNzYsIDIwNCwgODQsIDY1LCA3NiwgNzMsIDc4LCA3MSwgCisgICAgMTI4LCA4NCwgNjUsIDc2LCA3MywgNzgsIDE5OSwgODQsIDY1LCA3NiwgNjksIDc4LCA4NCwgODMsIDEyOCwgODQsIDY1LCAKKyAgICA3NiwgNjksIDc4LCAyMTIsIDg0LCA2NSwgNzUsIDgyLCAyMDEsIDg0LCA2NSwgNzUsIDcyLCA2NSwgNzYsIDc2LCA4NSwgODMsIAorICAgIDEyOCwgODQsIDY1LCA3NSwgNjksIDEyOCwgODQsIDY1LCA3NSwgNTIsIDEyOCwgODQsIDY1LCA3NSwgMTgwLCA4NCwgNjUsIAorICAgIDc1LCAxMjgsIDg0LCA2NSwgNzMsIDgzLCA4OSwgNzksIDg1LCAxMjgsIDg0LCA2NSwgNzMsIDc2LCA3NiwgNjksIDgzLCAKKyAgICAyMTEsIDg0LCA2NSwgNzMsIDc2LCAxMjgsIDg0LCA2NSwgNzMsIDIwNCwgODQsIDY1LCA3MiwgMTI4LCA4NCwgNjUsIDIwMCwgCisgICAgODQsIDY1LCA3MSwgNjYsIDY1LCA3OCwgODcsIDE5MywgODQsIDY1LCA3MSwgNjUsIDc2LCA3OSwgMTk5LCA4NCwgNjUsIDcxLCAKKyAgICAxMjgsIDg0LCA2NSwgNjksIDIwNiwgODQsIDY1LCA2NywgNzksIDEyOCwgODQsIDY1LCA2NywgNzUsIDEyOCwgODQsIDY1LCAKKyAgICA2NywgMjAzLCA4NCwgNjUsIDY2LCA4NSwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4NCwgNjUsIDY2LCA4NSwgNzYsIAorICAgIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDg0LCA2NSwgNjYsIDgzLCAxMjgsIDg0LCA2NSwgNjYsIDc2LCA2OSwgMTI4LCA4NCwgCisgICAgNjUsIDY2LCA3NiwgMTk3LCA4NCwgNjUsIDY2LCAxMjgsIDg0LCA2NSwgMTk0LCA4NCwgNjUsIDY1LCA4MywgNzIsIDY1LCAKKyAgICA2OSwgMTI4LCA4NCwgNjUsIDY1LCA4MSwgMTI4LCA4NCwgNjUsIDY1LCA3NywgMTI4LCA4NCwgNjUsIDY1LCA3NiwgODUsIAorICAgIDc0LCAxOTMsIDg0LCA2NSwgNjUsIDczLCAxMjgsIDg0LCA2NSwgNjUsIDcwLCAxMjgsIDg0LCA2NSwgNTAsIDEyOCwgODQsIAorICAgIDY1LCA0NSwgODIsIDc5LCA3NiwgMTI4LCA4NCwgNjUsIDQ1LCA1MCwgMTI4LCA4NCwgNDgsIDUxLCA1NCwgMTI4LCA4NCwgCisgICAgNDgsIDUxLCA1MywgMTI4LCA4NCwgNDgsIDUxLCA1MiwgMTI4LCA4NCwgNDgsIDUxLCA1MSwgNjUsIDEyOCwgODQsIDQ4LCAKKyAgICA1MSwgNTEsIDEyOCwgODQsIDQ4LCA1MSwgNTAsIDY1LCAxMjgsIDg0LCA0OCwgNTEsIDUwLCAxMjgsIDg0LCA0OCwgNTEsIAorICAgIDQ5LCAxMjgsIDg0LCA0OCwgNTEsIDQ4LCAxMjgsIDg0LCA0OCwgNTAsIDU3LCAxMjgsIDg0LCA0OCwgNTAsIDU2LCAxMjgsIAorICAgIDg0LCA0OCwgNTAsIDU1LCAxMjgsIDg0LCA0OCwgNTAsIDU0LCAxMjgsIDg0LCA0OCwgNTAsIDUzLCAxMjgsIDg0LCA0OCwgCisgICAgNTAsIDUyLCAxMjgsIDg0LCA0OCwgNTAsIDUxLCAxMjgsIDg0LCA0OCwgNTAsIDUwLCAxMjgsIDg0LCA0OCwgNTAsIDQ5LCAKKyAgICAxMjgsIDg0LCA0OCwgNTAsIDQ4LCAxMjgsIDg0LCA0OCwgNDksIDU3LCAxMjgsIDg0LCA0OCwgNDksIDU2LCAxMjgsIDg0LCAKKyAgICA0OCwgNDksIDU1LCAxMjgsIDg0LCA0OCwgNDksIDU0LCA2NSwgMTI4LCA4NCwgNDgsIDQ5LCA1NCwgMTI4LCA4NCwgNDgsIAorICAgIDQ5LCA1MywgMTI4LCA4NCwgNDgsIDQ5LCA1MiwgMTI4LCA4NCwgNDgsIDQ5LCA1MSwgMTI4LCA4NCwgNDgsIDQ5LCA1MCwgCisgICAgMTI4LCA4NCwgNDgsIDQ5LCA0OSwgNjUsIDEyOCwgODQsIDQ4LCA0OSwgNDksIDEyOCwgODQsIDQ4LCA0OSwgNDgsIDEyOCwgCisgICAgODQsIDQ4LCA0OCwgNTcsIDY1LCAxMjgsIDg0LCA0OCwgNDgsIDU3LCAxMjgsIDg0LCA0OCwgNDgsIDU2LCA2NSwgMTI4LCAKKyAgICA4NCwgNDgsIDQ4LCA1NiwgMTI4LCA4NCwgNDgsIDQ4LCA1NSwgNjUsIDEyOCwgODQsIDQ4LCA0OCwgNTUsIDEyOCwgODQsIAorICAgIDQ4LCA0OCwgNTQsIDEyOCwgODQsIDQ4LCA0OCwgNTMsIDEyOCwgODQsIDQ4LCA0OCwgNTIsIDEyOCwgODQsIDQ4LCA0OCwgCisgICAgNTEsIDY1LCAxMjgsIDg0LCA0OCwgNDgsIDUxLCAxMjgsIDg0LCA0OCwgNDgsIDUwLCAxMjgsIDg0LCA0OCwgNDgsIDQ5LCAKKyAgICAxMjgsIDg0LCA0NSwgODMsIDcyLCA3MywgODIsIDg0LCAxMjgsIDgzLCA5MCwgOTAsIDEyOCwgODMsIDkwLCA4NywgNzEsIAorICAgIDEyOCwgODMsIDkwLCA4NywgNjUsIDEyOCwgODMsIDkwLCA4NSwgMTI4LCA4MywgOTAsIDc5LCAxMjgsIDgzLCA5MCwgNzMsIAorICAgIDEyOCwgODMsIDkwLCA2OSwgNjksIDEyOCwgODMsIDkwLCA2OSwgMTI4LCA4MywgOTAsIDY1LCA2NSwgMTI4LCA4MywgOTAsIAorICAgIDY1LCAxMjgsIDgzLCA5MCwgMTI4LCA4MywgODksIDg4LCAxMjgsIDgzLCA4OSwgODQsIDEyOCwgODMsIDg5LCA4MywgODQsIAorICAgIDY5LCAyMDUsIDgzLCA4OSwgODIsIDg4LCAxMjgsIDgzLCA4OSwgODIsIDc3LCA2NSwgODQsIDczLCA3NSwgNzMsIDEyOCwgCisgICAgODMsIDg5LCA4MiwgNzcsIDY1LCAxMjgsIDgzLCA4OSwgODIsIDczLCA3OCwgNzEsIDY5LCAxMjgsIDgzLCA4OSwgODIsIDczLCAKKyAgICA2NSwgMTk1LCA4MywgODksIDgyLCAxMjgsIDgzLCA4OSwgODAsIDEyOCwgODMsIDg5LCA3OSwgODUsIDg3LCA2NSwgMTI4LCAKKyAgICA4MywgODksIDc4LCA2OSwgODYsIDc3LCA2NSwgMTI4LCA4MywgODksIDc4LCA2OCwgNjksIDgzLCA3NywgNzksIDIxMSwgODMsIAorICAgIDg5LCA3OCwgNjcsIDcyLCA4MiwgNzksIDc4LCA3OSwgODUsIDIxMSwgODMsIDg5LCA3OCwgNjUsIDcxLCA3OSwgNzEsIDg1LCAKKyAgICA2OSwgMTI4LCA4MywgODksIDc4LCA2NSwgNzEsIDc3LCAxOTMsIDgzLCA4OSwgNzgsIDY1LCA3MCwgNzMsIDEyOCwgODMsIAorICAgIDg5LCA3OCwgMTI4LCA4MywgODksIDc3LCA3NywgNjksIDg0LCA4MiwgODksIDEyOCwgODMsIDg5LCA3NywgNzcsIDY5LCA4NCwgCisgICAgODIsIDczLCAxOTUsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDgzLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCAKKyAgICA1NywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTYsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIAorICAgIDU1LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1NCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgCisgICAgNTMsIDUyLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MywgNTEsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCAKKyAgICA3NiwgNDUsIDUzLCA1MCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTMsIDQ5LCAxMjgsIDgzLCA4OSwgNzcsIAorICAgIDY2LCA3OSwgNzYsIDQ1LCA1MywgNDgsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUzLCAxMjgsIDgzLCA4OSwgCisgICAgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MiwgNTcsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUyLCA1NiwgMTI4LCAKKyAgICA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTIsIDU1LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MiwgCisgICAgNTMsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUyLCA1MSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCAKKyAgICA0NSwgNTIsIDUwLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MiwgNDgsIDEyOCwgODMsIDg5LCA3NywgNjYsIAorICAgIDc5LCA3NiwgNDUsIDUyLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MSwgNTcsIDEyOCwgODMsIDg5LCA3NywgCisgICAgNjYsIDc5LCA3NiwgNDUsIDUxLCA1NiwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTEsIDU1LCAxMjgsIDgzLCAKKyAgICA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MSwgNTQsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUxLCA1MCwgCisgICAgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTEsIDQ4LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCAKKyAgICA1MSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIDU3LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIAorICAgIDQ1LCA1MCwgNTUsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCA1NCwgMTI4LCA4MywgODksIDc3LCA2NiwgCisgICAgNzksIDc2LCA0NSwgNTAsIDUzLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgNTIsIDEyOCwgODMsIDg5LCAKKyAgICA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCA1MSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIDUwLCAxMjgsIAorICAgIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgNDksIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCAKKyAgICA0OCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIAorICAgIDQ5LCA1NywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDU2LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgCisgICAgNzYsIDQ1LCA0OSwgNTUsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1NCwgMTI4LCA4MywgODksIDc3LCAKKyAgICA2NiwgNzksIDc2LCA0NSwgNDksIDUzLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTIsIDEyOCwgODMsIAorICAgIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1MSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDUwLCAKKyAgICAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNDksIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIAorICAgIDQ5LCA0OCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDEyOCwgODMsIDg5LCA3NiwgNzksIDg0LCAKKyAgICAyMDEsIDgzLCA4OSwgMTI4LCA4MywgODcsIDkwLCAxMjgsIDgzLCA4NywgODUsIDc4LCAxOTksIDgzLCA4NywgNzksIDgyLCAKKyAgICA2OCwgODMsIDEyOCwgODMsIDg3LCA3OSwgODIsIDY4LCAxMjgsIDgzLCA4NywgNzksIDc5LCAxMjgsIDgzLCA4NywgNzksIAorICAgIDEyOCwgODMsIDg3LCA3MywgODIsIDIwNCwgODMsIDg3LCA3MywgNzcsIDc3LCA3MywgNzgsIDcxLCAxMjgsIDgzLCA4NywgCisgICAgNzMsIDc3LCA3NywgNjksIDgyLCAxMjgsIDgzLCA4NywgNzMsIDczLCAxMjgsIDgzLCA4NywgNzMsIDEyOCwgODMsIDg3LCAKKyAgICA3MSwgMTI4LCA4MywgODcsIDY5LCA2OSwgODQsIDEyOCwgODMsIDg3LCA2OSwgNjksIDIxMiwgODMsIDg3LCA2OSwgNjUsIAorICAgIDg0LCAxMjgsIDgzLCA4NywgNjksIDY1LCAyMTIsIDgzLCA4NywgNjUsIDgzLCAyMDAsIDgzLCA4NywgNjUsIDgwLCA4MCwgCisgICAgNzMsIDc4LCA3MSwgMTI4LCA4MywgODcsIDY1LCA2NSwgMTI4LCA4MywgODcsIDEyOCwgODMsIDg2LCA2NSwgODMsIDg0LCAKKyAgICAyMDEsIDgzLCA4NiwgNjUsIDgyLCA3MywgODQsIDY1LCAxMjgsIDgzLCA4NiwgNjUsIDgyLCA3MywgODQsIDE5MywgODMsIAorICAgIDg1LCA4OCwgMTI4LCA4MywgODUsIDg1LCAxMjgsIDgzLCA4NSwgODQsIDgyLCAxOTMsIDgzLCA4NSwgODQsIDEyOCwgODMsIAorICAgIDg1LCA4MywgODAsIDY5LCA3OCwgODMsIDczLCA3OSwgMjA2LCA4MywgODUsIDgzLCA3MiwgNzMsIDEyOCwgODMsIDg1LCA4MiwgCisgICAgODksIDY1LCAxMjgsIDgzLCA4NSwgODIsIDg4LCAxMjgsIDgzLCA4NSwgODIsIDgyLCA3OSwgODUsIDc4LCA2OCwgMTI4LCAKKyAgICA4MywgODUsIDgyLCA4MiwgNzksIDg1LCA3OCwgMTk2LCA4MywgODUsIDgyLCA3MCwgNjksIDgyLCAxMjgsIDgzLCA4NSwgODIsIAorICAgIDcwLCA2NSwgNjcsIDE5NywgODMsIDg1LCA4MiwgNjksIDEyOCwgODMsIDg1LCA4MiwgNjUsIDc4LCA3MSwgMTI4LCA4MywgCisgICAgODUsIDgyLCA1NywgMTI4LCA4MywgODUsIDgyLCAxMjgsIDgzLCA4NSwgMjEwLCA4MywgODUsIDgwLCA4MiwgNjUsIDc2LCAKKyAgICA3MywgNzgsIDY5LCA2NSwgMjEwLCA4MywgODUsIDgwLCA2OSwgODIsIDg2LCA3MywgODMsIDY5LCAxMjgsIDgzLCA4NSwgODAsIAorICAgIDY5LCA4MiwgODMsIDY5LCA4NCwgMTI4LCA4MywgODUsIDgwLCA2OSwgODIsIDgzLCA2OSwgMjEyLCA4MywgODUsIDgwLCA2OSwgCisgICAgODIsIDgzLCA2NywgODIsIDczLCA4MCwgMjEyLCA4MywgODUsIDgwLCA2OSwgODIsIDczLCA3NywgODAsIDc5LCA4MywgNjksIAorICAgIDE5NiwgODMsIDg1LCA4MCwgNjksIDgyLCA3MCwgNzMsIDg4LCA2OSwgMTk2LCA4MywgODUsIDgwLCA2OSwgMjEwLCA4MywgCisgICAgODUsIDgwLCAxMjgsIDgzLCA4NSwgNzksIDg4LCAxMjgsIDgzLCA4NSwgNzksIDgwLCAxMjgsIDgzLCA4NSwgNzksIDEyOCwgCisgICAgODMsIDg1LCA3OCwgODMsIDY5LCAyMTIsIDgzLCA4NSwgNzgsIDgyLCA3MywgODMsIDY5LCAxMjgsIDgzLCA4NSwgNzgsIDgyLCAKKyAgICA3MywgODMsIDE5NywgODMsIDg1LCA3OCwgNzEsIDc2LCA2NSwgODMsIDgzLCA2OSwgODMsIDEyOCwgODMsIDg1LCA3OCwgNzEsIAorICAgIDEyOCwgODMsIDg1LCA3OCwgNzAsIDc2LCA3OSwgODcsIDY5LCA4MiwgMTI4LCA4MywgODUsIDc4LCA2OCwgNjUsIDc4LCA2OSwgCisgICAgODMsIDE5NywgODMsIDg1LCA3OCwgMTI4LCA4MywgODUsIDIwNiwgODMsIDg1LCA3NywgNzcsIDY5LCA4MiwgMTI4LCA4MywgCisgICAgODUsIDc3LCA3NywgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgzLCA4NSwgNzcsIDc3LCA2NSwgODQsIDczLCA3OSwgMjA2LCAKKyAgICA4MywgODUsIDc3LCA2NSwgODMsIDcyLCAxMjgsIDgzLCA4NSwgNzcsIDEyOCwgODMsIDg1LCA3NiwgNzAsIDg1LCA4MiwgCisgICAgMTI4LCA4MywgODUsIDc1LCA4NSwgNzgsIDEyOCwgODMsIDg1LCA3NSwgODUsIDIwNiwgODMsIDg1LCA3NSwgODUsIDEyOCwgCisgICAgODMsIDg1LCA3NSwgMjEzLCA4MywgODUsIDczLCA4NCwgNjUsIDY2LCA3NiwgNjksIDEyOCwgODMsIDg1LCA3MywgODQsIAorICAgIDEyOCwgODMsIDg1LCA3MywgMjEyLCA4MywgODUsIDcyLCA4NSwgODIsIDEyOCwgODMsIDg1LCA2OSwgMTI4LCA4MywgODUsIAorICAgIDY4LCA1MCwgMTI4LCA4MywgODUsIDY4LCAxMjgsIDgzLCA4NSwgNjcsIDc1LCA3MywgNzgsIDE5OSwgODMsIDg1LCA2NywgCisgICAgNzUsIDY5LCA2OCwgMTI4LCA4MywgODUsIDY3LCAyMDMsIDgzLCA4NSwgNjcsIDY3LCA2OSwgNjksIDY4LCA4MywgMTI4LCAKKyAgICA4MywgODUsIDY3LCA2NywgNjksIDY5LCA2OCwgMjExLCA4MywgODUsIDY3LCA2NywgNjksIDY5LCA2OCwgMTI4LCA4MywgODUsIAorICAgIDY3LCA2NywgNjksIDY5LCAxOTYsIDgzLCA4NSwgNjYsIDg1LCA3OCwgNzMsIDg0LCAxMjgsIDgzLCA4NSwgNjYsIDgzLCA4NCwgCisgICAgNzMsIDg0LCA4NSwgODQsIDczLCA3OSwgMjA2LCA4MywgODUsIDY2LCA4MywgODQsIDczLCA4NCwgODUsIDg0LCA2OSwgMTI4LCAKKyAgICA4MywgODUsIDY2LCA4MywgODQsIDczLCA4NCwgODUsIDg0LCAxOTcsIDgzLCA4NSwgNjYsIDgzLCA2OSwgODQsIDEyOCwgODMsIAorICAgIDg1LCA2NiwgODMsIDY5LCAyMTIsIDgzLCA4NSwgNjYsIDgzLCA2NywgODIsIDczLCA4MCwgMjEyLCA4MywgODUsIDY2LCA4MCwgCisgICAgODUsIDc4LCA2NywgODQsIDczLCA4MywgMTI4LCA4MywgODUsIDY2LCA3NiwgNzMsIDc4LCA2OSwgNjUsIDIxMCwgODMsIDg1LCAKKyAgICA2NiwgNzYsIDczLCA3NywgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgzLCA4NSwgNjYsIDc2LCA3MywgNzcsIDY1LCA4NCwgCisgICAgNjksIDQ1LCA1MSwgMTI4LCA4MywgODUsIDY2LCA3NiwgNzMsIDc3LCA2NSwgODQsIDY5LCA0NSwgNTAsIDEyOCwgODMsIDg1LCAKKyAgICA2NiwgNzYsIDczLCA3NywgNjUsIDg0LCA2OSwgMTI4LCA4MywgODUsIDY2LCA3NiwgNzMsIDc3LCA2NSwgODQsIDE5NywgODMsIAorICAgIDg1LCA2NiwgNzQsIDc5LCA3MywgNzgsIDY5LCAxOTYsIDgzLCA4NSwgNjYsIDc0LCA2OSwgNjcsIDg0LCAxMjgsIDgzLCA4NSwgCisgICAgNjYsIDczLCA4NCwgNzksIDEyOCwgODMsIDg1LCA2NiwgNzEsIDgyLCA3OSwgODUsIDgwLCAxMjgsIDgzLCA4NSwgNjYsIDcxLCAKKyAgICA4MiwgNzksIDg1LCAyMDgsIDgzLCA4NSwgNjYsIDEyOCwgODMsIDg1LCA2NSwgNzcsIDEyOCwgODMsIDg1LCA2NSwgNjksIAorICAgIDg0LCAxMjgsIDgzLCA4NSwgNjUsIDY5LCA3OCwgMTI4LCA4MywgODUsIDY1LCA2OSwgMTI4LCA4MywgODUsIDY1LCA2NiwgCisgICAgMTI4LCA4MywgODUsIDY1LCAxMjgsIDgzLCAyMTMsIDgzLCA4NCwgODgsIDEyOCwgODMsIDg0LCA4NywgNjUsIDEyOCwgODMsIAorICAgIDg0LCA4NSwgNzAsIDcwLCA2OSwgMTk2LCA4MywgODQsIDg1LCA2OCwgODksIDEyOCwgODMsIDg0LCA4NSwgNjgsIDczLCAKKyAgICAyMDcsIDgzLCA4NCwgODUsIDY3LCA3NSwgNDUsIDc5LCA4NSwgMjEyLCA4MywgODQsIDgzLCAxMjgsIDgzLCA4NCwgODIsIAorICAgIDc5LCA3OCwgMTk5LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA4MywgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCAKKyAgICAyMTEsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1NywgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTYsIAorICAgIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDU1LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1NCwgCisgICAgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTMsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDUyLCAKKyAgICAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1MSwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTAsIAorICAgIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDQ5LCA0OSwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgCisgICAgNDksIDQ4LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA0OSwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIAorICAgIDE5NywgODMsIDg0LCA4MiwgNzMsIDgwLCA2OSwgMTI4LCA4MywgODQsIDgyLCA3MywgNzgsIDcxLCAxMjgsIDgzLCA4NCwgCisgICAgODIsIDczLCA3OCwgMTk5LCA4MywgODQsIDgyLCA3MywgNzUsIDY5LCA4NCwgNzIsIDgyLCA3OSwgODUsIDcxLCA3MiwgMTI4LCAKKyAgICA4MywgODQsIDgyLCA3MywgNzUsIDE5NywgODMsIDg0LCA4MiwgNzMsIDY4LCA2OSwgMTI4LCA4MywgODQsIDgyLCA3MywgNjcsIAorICAgIDg0LCA3NiwgMjE3LCA4MywgODQsIDgyLCA2OSwgODQsIDY3LCA3MiwgNjksIDE5NiwgODMsIDg0LCA4MiwgNjksIDg0LCA2NywgCisgICAgNzIsIDEyOCwgODMsIDg0LCA4MiwgNjksIDgzLCAyMTEsIDgzLCA4NCwgODIsIDY5LCA3OCwgNzEsIDg0LCA3MiwgMTI4LCAKKyAgICA4MywgODQsIDgyLCA2OSwgNjUsIDc3LCA2OSwgODIsIDEyOCwgODMsIDg0LCA4MiwgNjUsIDg3LCA2NiwgNjksIDgyLCA4MiwgCisgICAgODksIDEyOCwgODMsIDg0LCA4MiwgNjUsIDg0LCA4NSwgNzcsIDQ1LCA1MCwgMTI4LCA4MywgODQsIDgyLCA2NSwgODQsIDg1LCAKKyAgICA3NywgMTI4LCA4MywgODQsIDgyLCA2NSwgODQsIDg1LCAyMDUsIDgzLCA4NCwgODIsIDY1LCA4NCwgNzMsIDY1LCAyMDYsIAorICAgIDgzLCA4NCwgODIsIDY1LCA3MywgNzgsIDY5LCA4MiwgMTI4LCA4MywgODQsIDgyLCA2NSwgNzMsIDcxLCA3MiwgODQsIDc4LCAKKyAgICA2OSwgODMsIDgzLCAxMjgsIDgzLCA4NCwgODIsIDY1LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA4MywgODQsIDgyLCA2NSwgNzMsIAorICAgIDcxLCA3MiwgMjEyLCA4MywgODQsIDgyLCA2NSwgNzMsIDcwLCAxMjgsIDgzLCA4NCwgODIsIDY1LCA3MSwgNzEsIDczLCA4MywgCisgICAgNzcsIDY1LCA4NCwgNjUsIDEyOCwgODMsIDg0LCA3OSwgODYsIDY5LCAxMjgsIDgzLCA4NCwgNzksIDgyLCA2OSwgMTI4LCAKKyAgICA4MywgODQsIDc5LCA4MCwgODcsIDY1LCA4NCwgNjcsIDcyLCAxMjgsIDgzLCA4NCwgNzksIDgwLCA4MCwgNzMsIDc4LCA3MSwgCisgICAgMTI4LCA4MywgODQsIDc5LCA4MCwgODAsIDY1LCA3MSwgNjksIDEyOCwgODMsIDg0LCA3OSwgODAsIDEyOCwgODMsIDg0LCAKKyAgICA3OSwgMjA4LCA4MywgODQsIDc5LCA3OCwgNjksIDEyOCwgODMsIDg0LCA3OSwgNjcsIDc1LCAxMjgsIDgzLCA4NCwgNzksIAorICAgIDY3LCAyMDMsIDgzLCA4NCwgNzMsIDgyLCA4MiwgODUsIDIwOCwgODMsIDg0LCA3MywgNzcsIDc3LCA2OSwgMTI4LCA4MywgCisgICAgODQsIDczLCA3NiwgMjA0LCA4MywgODQsIDczLCA3NiwgMTk3LCA4MywgODQsIDczLCA3MSwgNzcsIDY1LCAxMjgsIDgzLCAKKyAgICA4NCwgNzMsIDY3LCA3NSwgNzMsIDc4LCAxOTksIDgzLCA4NCwgNzMsIDY3LCAyMDMsIDgzLCA4NCwgNjksIDgyLCA2OSwgNzksIAorICAgIDEyOCwgODMsIDg0LCA2OSwgODAsIDEyOCwgODMsIDg0LCA2OSwgNzgsIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDczLCAKKyAgICAxOTUsIDgzLCA4NCwgNjksIDc3LCAxMjgsIDgzLCA4NCwgNjksIDY1LCA3NywgNzMsIDc4LCAxOTksIDgzLCA4NCwgNjksIAorICAgIDY1LCA3NywgMTI4LCA4MywgODQsIDY5LCA2NSwgMjA1LCA4MywgODQsIDY1LCA4NiwgODIsIDc5LCA4NSwgMTI4LCA4MywgCisgICAgODQsIDY1LCA4NiwgODIsIDc5LCA4MywgMTI4LCA4MywgODQsIDY1LCA4NiwgODIsIDc5LCAyMTEsIDgzLCA4NCwgNjUsIDg1LCAKKyAgICA4MiwgNzksIDgzLCAxMjgsIDgzLCA4NCwgNjUsIDg0LCA4NSwgMTk3LCA4MywgODQsIDY1LCA4NCwgNzMsIDc5LCA3OCwgCisgICAgMTI4LCA4MywgODQsIDY1LCA4NCwgNjksIDgyLCA4MywgMTI4LCA4MywgODQsIDY1LCA4NCwgNjksIDEyOCwgODMsIDg0LCAKKyAgICA2NSwgODIsIDIxMiwgODMsIDg0LCA2NSwgODIsIDgzLCAxMjgsIDgzLCA4NCwgNjUsIDgyLCA4MiwgNjksIDE5NiwgODMsIAorICAgIDg0LCA2NSwgODIsIDc1LCAxMjgsIDgzLCA4NCwgNjUsIDgyLCAxMjgsIDgzLCA4NCwgNjUsIDIxMCwgODMsIDg0LCA2NSwgCisgICAgNzgsIDY4LCA4MywgODQsIDczLCA3NiwgNzYsIDEyOCwgODMsIDg0LCA2NSwgNzgsIDY4LCA2NSwgODIsIDE5NiwgODMsIDg0LCAKKyAgICA2NSwgNzgsIDY4LCAxMjgsIDgzLCA4NCwgNjUsIDc4LCAxMjgsIDgzLCA4NCwgNjUsIDc3LCA4MCwgNjksIDE5NiwgODMsIAorICAgIDg0LCA2NSwgNzYsIDc2LCA3MywgNzksIDc4LCAxMjgsIDgzLCA4NCwgNjUsIDcwLCA3MCwgMTI4LCA4MywgODQsIDY1LCA3MCwgCisgICAgMTk4LCA4MywgODQsIDY1LCA2OCwgNzMsIDg1LCA3NywgMTI4LCA4MywgODQsIDY1LCA2NywgNjcsIDY1LCA4NCwgNzksIAorICAgIDEyOCwgODMsIDg0LCA2NSwgNjcsIDY3LCA2NSwgODQsIDczLCA4MywgODMsIDczLCA3NywgNzksIDEyOCwgODMsIDg0LCA1MCwgCisgICAgMTI4LCA4MywgODMsIDg5LCA4OCwgMTI4LCA4MywgODMsIDg5LCA4NCwgMTI4LCA4MywgODMsIDg5LCA4MiwgODgsIDEyOCwgCisgICAgODMsIDgzLCA4OSwgODIsIDEyOCwgODMsIDgzLCA4OSwgODAsIDEyOCwgODMsIDgzLCA4OSwgMTI4LCA4MywgODMsIDg1LCAKKyAgICA4OCwgMTI4LCA4MywgODMsIDg1LCA4NSwgMTI4LCA4MywgODMsIDg1LCA4NCwgMTI4LCA4MywgODMsIDg1LCA4MCwgMTI4LCAKKyAgICA4MywgODMsIDc5LCA4OCwgMTI4LCA4MywgODMsIDc5LCA4NCwgMTI4LCA4MywgODMsIDc5LCA4MCwgMTI4LCA4MywgODMsIAorICAgIDc5LCA3OSwgMTI4LCA4MywgODMsIDc5LCAxMjgsIDgzLCA4MywgNzMsIDg4LCAxMjgsIDgzLCA4MywgNzMsIDg0LCAxMjgsIAorICAgIDgzLCA4MywgNzMsIDgwLCAxMjgsIDgzLCA4MywgNzMsIDczLCAxMjgsIDgzLCA4MywgNzMsIDY5LCA4OCwgMTI4LCA4MywgCisgICAgODMsIDczLCA2OSwgODAsIDEyOCwgODMsIDgzLCA3MywgNjksIDEyOCwgODMsIDgzLCA3MywgMTI4LCA4MywgODMsIDcyLCAKKyAgICA3MywgNzgsIDEyOCwgODMsIDgzLCA3MiwgNjksIDEyOCwgODMsIDgzLCA2OSwgODgsIDEyOCwgODMsIDgzLCA2OSwgODAsIAorICAgIDEyOCwgODMsIDgzLCA2OSwgNjksIDEyOCwgODMsIDgzLCA2NSwgODgsIDEyOCwgODMsIDgzLCA2NSwgODUsIDEyOCwgODMsIAorICAgIDgzLCA2NSwgODQsIDEyOCwgODMsIDgzLCA2NSwgODAsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4OSwgNjksIDc5LCA4MiwgCisgICAgNzMsIDc4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4NCwgNzMsIDc1LCA2OSwgODUsIAorICAgIDg0LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODQsIDczLCA3NSwgNjksIDg1LCAKKyAgICA4NCwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDgzLCA4MywgNjUsIAorICAgIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDgzLCA4MywgNjUsIDc4LCAKKyAgICA3MSwgODMsIDczLCA3OSwgODMsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgCisgICAgNzMsIDc5LCA4MywgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIAorICAgIDc5LCA4MywgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc1LCA3MiwgNzMsIDY5LCAKKyAgICA4NSwgNzUsIDcyLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDgzLCA4MywgNjUsIAorICAgIDc4LCA3MSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzgsIDczLCA2OSwgODUsIDc4LCAKKyAgICAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzUsIAorICAgIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDczLCA2OSwgODUsIDc4LCA3MSwgMTI4LCA4MywgCisgICAgODMsIDY1LCA3OCwgNzEsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDY3LCA3MywgNjksIAorICAgIDg1LCA2NywgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDY3LCA3MywgNjksIDg1LCAKKyAgICA2NywgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDY1LCA4MiwgNjUsIDY5LCA2NSwgMTI4LCA4MywgODMsIDY1LCA3MywgCisgICAgMTI4LCA4MywgODMsIDY1LCA2NSwgMTI4LCA4MywgODMsIDUxLCAxMjgsIDgzLCA4MywgNTAsIDEyOCwgODMsIDgyLCAxMjgsIAorICAgIDgzLCA4MSwgODUsIDczLCA4MywgMjAwLCA4MywgODEsIDg1LCA3MywgODIsIDgyLCA2OSwgMjA0LCA4MywgODEsIDg1LCA3MywgCisgICAgNzEsIDcxLCA3NiwgMTk3LCA4MywgODEsIDg1LCA3MywgNjgsIDEyOCwgODMsIDgxLCA4NSwgNjksIDY5LCA5MCwgNjksIDY4LCAKICAgICAxMjgsIDgzLCA4MSwgODUsIDY5LCA2OSwgOTAsIDE5NywgODMsIDgxLCA4NSwgNjUsIDIxMiwgODMsIDgxLCA4NSwgNjUsIAogICAgIDgyLCA2OSwgODMsIDEyOCwgODMsIDgxLCA4NSwgNjUsIDgyLCA2OSwgNjgsIDEyOCwgODMsIDgxLCA4NSwgNjUsIDgyLCA2OSwgCiAgICAgMTI4LCA4MywgODAsIDg5LCAxMjgsIDgzLCA4MCwgODcsIDY1LCAxMjgsIDgzLCA4MCwgODUsIDc4LCA3MSwgMjExLCA4MywgCkBAIC05NjksNzcgKzk3Niw3OSBAQAogICAgIDY1LCA3OCwgMTI4LCA4MywgNzgsIDc5LCA4NywgNzcsIDY1LCAyMDYsIDgzLCA3OCwgNzksIDg3LCA3MCwgNzYsIDY1LCA3NSwgCiAgICAgNjksIDEyOCwgODMsIDc4LCA3OSwgODcsIDY2LCA3OSwgNjUsIDgyLCA2OCwgNjksIDgyLCAxMjgsIDgzLCA3OCwgNzksIDg3LCAKICAgICAxMjgsIDgzLCA3OCwgNzksIDIxNSwgODMsIDc4LCA3OSwgODUsIDg0LCAxMjgsIDgzLCA3OCwgNzksIDg1LCAyMTIsIDgzLCAKLSAgICA3OCwgNjUsIDIwOCwgODMsIDc4LCA2NSwgNzUsIDY5LCAxMjgsIDgzLCA3OCwgNjUsIDc1LCAxOTcsIDgzLCA3OCwgNjUsIAotICAgIDczLCA3NiwgMTI4LCA4MywgNzgsIDE5MywgODMsIDc3LCA3OSwgNzUsIDczLCA3OCwgMTk5LCA4MywgNzcsIDczLCA4MiwgCi0gICAgNzUsIDczLCA3OCwgMTk5LCA4MywgNzcsIDczLCA3NiwgNzMsIDc4LCAxOTksIDgzLCA3NywgNzMsIDc2LCA2OSwgMTI4LCAKLSAgICA4MywgNzcsIDczLCA3NiwgMTk3LCA4MywgNzcsIDY5LCA2NSwgODIsIDEyOCwgODMsIDc3LCA2NSwgODMsIDIwMCwgODMsIAotICAgIDc3LCA2NSwgNzYsIDc2LCA2OSwgMjEwLCA4MywgNzcsIDY1LCA3NiwgNzYsIDEyOCwgODMsIDc2LCA4NSwgODIsIDEyOCwgCi0gICAgODMsIDc2LCA3OSwgODcsIDc2LCA4OSwgMTI4LCA4MywgNzYsIDc5LCA4NywgMTI4LCA4MywgNzYsIDc5LCAyMTUsIDgzLCAKLSAgICA3NiwgNzksIDg2LCA3OSwgMTI4LCA4MywgNzYsIDc5LCAyMTIsIDgzLCA3NiwgNzksIDgwLCA3MywgNzgsIDE5OSwgODMsIAotICAgIDc2LCA3OSwgODAsIDY5LCAxMjgsIDgzLCA3NiwgNzksIDY1LCAyMDYsIDgzLCA3NiwgNzMsIDc4LCA3MSwgMTI4LCA4MywgCi0gICAgNzYsIDczLCA3MSwgNzIsIDg0LCA3NiwgMjE3LCA4MywgNzYsIDczLCA2OCwgNzMsIDc4LCA3MSwgMTI4LCA4MywgNzYsIDczLCAKLSAgICA2OCwgNjksIDgyLCAxMjgsIDgzLCA3NiwgNzMsIDY3LCA2OSwgMTI4LCA4MywgNzYsIDczLCA2NywgMTk3LCA4MywgNzYsIAotICAgIDY5LCA4NSwgODQsIDIwMCwgODMsIDc2LCA2OSwgNjksIDgwLCAyMTcsIDgzLCA3NiwgNjksIDY5LCA4MCwgNzMsIDc4LCAKLSAgICAxOTksIDgzLCA3NiwgNjUsIDg2LCA3OSwgNzgsIDczLCAxOTUsIDgzLCA3NiwgNjUsIDg2LCA2OSwgMTI4LCA4MywgNzYsIAotICAgIDY1LCA4MywgNzIsIDEyOCwgODMsIDc2LCA2NSwgODMsIDIwMCwgODMsIDc2LCA2NSwgNzgsIDg0LCA2OSwgMTk2LCA4MywgCi0gICAgNzUsIDg3LCA2NSwgMTI4LCA4MywgNzUsIDg3LCAxMjgsIDgzLCA3NSwgODUsIDc2LCA3NiwgMTI4LCA4MywgNzUsIDg1LCAKLSAgICA3NiwgMjA0LCA4MywgNzUsIDc2LCA3MywgODIsIDc5LCAyMDYsIDgzLCA3NSwgNzMsIDc4LCAxMjgsIDgzLCA3NSwgNzMsIAotICAgIDY5LCA4MiwgMTI4LCA4MywgNzUsIDIwMSwgODMsIDc1LCA2OSwgODcsIDY5LCAxOTYsIDgzLCA3NSwgNjUsIDg0LCA2OSwgCi0gICAgMTI4LCA4MywgNzUsIDEyOCwgODMsIDc0LCA2OSwgMTI4LCA4MywgNzMsIDkwLCAxOTcsIDgzLCA3MywgODgsIDg0LCA4OSwgCi0gICAgNDUsIDcwLCA3OSwgODUsIDgyLCA4NCwgMjAwLCA4MywgNzMsIDg4LCA4NCwgODksIDEyOCwgODMsIDczLCA4OCwgODQsIAotICAgIDIxNywgODMsIDczLCA4OCwgODQsIDcyLCA4MywgMTI4LCA4MywgNzMsIDg4LCA4NCwgNzIsIDIxMSwgODMsIDczLCA4OCwgCi0gICAgODQsIDcyLCAxMjgsIDgzLCA3MywgODgsIDg0LCA2OSwgNjksIDc4LCA4NCwgNzIsIDgzLCAxMjgsIDgzLCA3MywgODgsIDg0LCAKLSAgICA2OSwgNjksIDc4LCA4NCwgNzIsIDEyOCwgODMsIDczLCA4OCwgODQsIDY5LCA2OSwgNzgsIDg0LCAyMDAsIDgzLCA3MywgODgsIAotICAgIDg0LCA2OSwgNjksIDc4LCAxMjgsIDgzLCA3MywgODgsIDg0LCA2OSwgNjksIDIwNiwgODMsIDczLCA4OCwgNDUsIDg0LCA3MiwgCi0gICAgNzMsIDgyLCA4NCwgODksIDEyOCwgODMsIDczLCA4OCwgNDUsIDgzLCA4NCwgODIsIDczLCA3OCwgMTk5LCA4MywgNzMsIDg4LCAKLSAgICA0NSwgODAsIDY5LCA4MiwgNDUsIDY5LCAyMDUsIDgzLCA3MywgODgsIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDgzLCA3MywgCi0gICAgMjE2LCA4MywgNzMsIDg0LCA2OSwgMTI4LCA4MywgNzMsIDgzLCA2NSwgMTI4LCA4MywgNzMsIDgyLCA3MywgNzgsIDcxLCAKLSAgICA4NSwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDgzLCA3MywgNzksIAotICAgIDgzLCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgyLCAKLSAgICA3MywgNjksIDg1LCA3NiwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDc1LCA3MywgCi0gICAgODksIDY5LCA3OSwgNzUsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgMTI4LCAKLSAgICA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgCi0gICAgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDgzLCAKLSAgICA3MywgNzksIDgzLCA0NSwgNzUsIDcyLCA3MywgNjksIDg1LCA3NSwgNzIsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA3NSwgCi0gICAgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIAotICAgIDczLCA2OSwgODUsIDc4LCA3MSwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MywgCi0gICAgNzMsIDc5LCA4MywgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDY3LCA3MiwgNzMsIAotICAgIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDgzLCA3MywgNzksIDIxMSwgODMsIDczLCA3OCwgODUsIDgzLCA3OSwgNzMsIDE5NiwgCi0gICAgODMsIDczLCA3OCwgNzksIDc2LCA3OSwgNzEsIDczLCA2NywgNjUsIDIwNCwgODMsIDczLCA3OCwgNzUsIDczLCA3OCwgNzEsIAotICAgIDEyOCwgODMsIDczLCA3OCwgNzEsIDc2LCA2OSwgNDUsIDgzLCA3MiwgNzMsIDcwLCA4NCwgNDUsIDUxLCAxMjgsIDgzLCA3MywgCi0gICAgNzgsIDcxLCA3NiwgNjksIDQ1LCA4MywgNzIsIDczLCA3MCwgODQsIDQ1LCA1MCwgMTI4LCA4MywgNzMsIDc4LCA3MSwgNzYsIAotICAgIDY5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA4MywgNzMsIDc4LCA3MSwgNzYsIDY5LCAxMjgsIDgzLCA3MywgNzgsIDcxLCA3NiwgCi0gICAgMTk3LCA4MywgNzMsIDc4LCA3MSwgNjUsIDY1LCA4NCwgMTI4LCA4MywgNzMsIDc4LCAxOTcsIDgzLCA3MywgNzgsIDY4LCAKLSAgICA3MiwgMjAxLCA4MywgNzMsIDIwNiwgODMsIDczLCA3NywgODUsIDc2LCA4NCwgNjUsIDc4LCA2OSwgNzksIDg1LCA4MywgCi0gICAgMTI4LCA4MywgNzMsIDc3LCA4NSwgNzYsIDg0LCA2NSwgNzgsIDY5LCA3OSwgODUsIDIxMSwgODMsIDczLCA3NywgODAsIDc2LCAKLSAgICA3MywgNzAsIDczLCA2OSwgMTk2LCA4MywgNzMsIDc3LCA3MywgNzYsIDY1LCA4MiwgMTI4LCA4MywgNzMsIDc3LCA3MywgNzYsIAotICAgIDY1LCAyMTAsIDgzLCA3MywgNzcsIDY1LCA3OCwgODMsIDczLCAyMTEsIDgzLCA3MywgNzcsIDY1LCA3NiwgODUsIDc4LCA3MSwgCi0gICAgODUsIDIwNiwgODMsIDczLCA3NywgNjUsIDEyOCwgODMsIDczLCA3NiwgODYsIDY5LCA4MiwgMTI4LCA4MywgNzMsIDc2LCAKLSAgICA3NSwgMTI4LCA4MywgNzMsIDc2LCA3MywgODEsIDg1LCAxOTMsIDgzLCA3MywgNzYsIDcyLCA3OSwgODUsIDY5LCA4NCwgODQsIAotICAgIDY5LCAxMjgsIDgzLCA3MywgNzYsIDcyLCA3OSwgODUsIDY5LCA4NCwgODQsIDE5NywgODMsIDczLCA3NiwgNjUsIDUxLCAKLSAgICAxMjgsIDgzLCA3MywgNzUsIDczLCAxMjgsIDgzLCA3MywgNzUsIDUwLCAxMjgsIDgzLCA3MywgNzUsIDE3OCwgODMsIDczLCAKLSAgICA3MSwgNzgsIDgzLCAxMjgsIDgzLCA3MywgNzEsIDc3LCA2NSwgMTI4LCA4MywgNzMsIDcxLCA3NywgMTkzLCA4MywgNzMsIAotICAgIDcxLCA2OSwgMjA0LCA4MywgNzMsIDcxLCA1MiwgMTI4LCA4MywgNzMsIDcxLCAxODAsIDgzLCA3MywgNzEsIDEyOCwgODMsIAotICAgIDczLCA2OSwgNjksIDEyOCwgODMsIDczLCA2OCwgNjksIDg3LCA2NSwgODksIDIxMSwgODMsIDczLCA2OCwgNjksIDEyOCwgCi0gICAgODMsIDczLCA2OCwgMTk3LCA4MywgNzMsIDY4LCA2OCwgNzIsIDY1LCA3NywgMTI4LCA4MywgNzMsIDY3LCA3NSwgNzgsIDY5LCAKLSAgICA4MywgODMsIDEyOCwgODMsIDczLCA2NywgNzUsIDc2LCA2OSwgMTI4LCA4MywgNzMsIDY2LCAxOTcsIDgzLCA3MywgNjUsIAotICAgIDEyOCwgODMsIDIwMSwgODMsIDcyLCA4OSwgODgsIDEyOCwgODMsIDcyLCA4OSwgODQsIDEyOCwgODMsIDcyLCA4OSwgODIsIAotICAgIDg4LCAxMjgsIDgzLCA3MiwgODksIDgyLCAxMjgsIDgzLCA3MiwgODksIDgwLCAxMjgsIDgzLCA3MiwgODksIDY5LCAxMjgsIAotICAgIDgzLCA3MiwgODksIDY1LCAxMjgsIDgzLCA3MiwgODksIDEyOCwgODMsIDcyLCA4NywgNzksIDg5LCAxMjgsIDgzLCA3MiwgCi0gICAgODcsIDc5LCA3OSwgMTI4LCA4MywgNzIsIDg3LCA3OSwgMTI4LCA4MywgNzIsIDg3LCA3MywgNzMsIDEyOCwgODMsIDcyLCAKLSAgICA4NywgNzMsIDEyOCwgODMsIDcyLCA4NywgNjksIDEyOCwgODMsIDcyLCA4NywgMTk3LCA4MywgNzIsIDg3LCA2NSwgNjUsIAotICAgIDEyOCwgODMsIDcyLCA4NywgNjUsIDEyOCwgODMsIDcyLCA4NSwgODgsIDEyOCwgODMsIDcyLCA4NSwgODUsIDEyOCwgODMsIAotICAgIDcyLCA4NSwgODQsIDg0LCA3NiwgNjksIDY3LCA3OSwgNjcsIDc1LCAxMjgsIDgzLCA3MiwgODUsIDg0LCAxMjgsIDgzLCA3MiwgCi0gICAgODUsIDgyLCA4OCwgMTI4LCA4MywgNzIsIDg1LCA4MiwgMTI4LCA4MywgNzIsIDg1LCA4MCwgMTI4LCA4MywgNzIsIDg1LCAKLSAgICA3OSwgODgsIDEyOCwgODMsIDcyLCA4NSwgNzksIDgwLCAxMjgsIDgzLCA3MiwgODUsIDc5LCAxMjgsIDgzLCA3MiwgODUsIAotICAgIDc3LCAxMjgsIDgzLCA3MiwgODUsIDc2LCAxMjgsIDgzLCA3MiwgODUsIDcwLCA3MCwgNzYsIDE5NywgODMsIDcyLCA4NSwgCi0gICAgNjksIDgxLCAxMjgsIDgzLCA3MiwgODUsIDY5LCA3OCwgODMsIDcyLCA4NSwgNjksIDg0LCAxMjgsIDgzLCA3MiwgODUsIDY2LCAKLSAgICA4NSwgODIsIDEyOCwgODMsIDcyLCA4NSwgNTAsIDEyOCwgODMsIDcyLCA4NSwgMTc4LCA4MywgNzIsIDg1LCAxMjgsIDgzLCAKLSAgICA3MiwgMjEzLCA4MywgNzIsIDg0LCA2NSwgODAsIDczLCA2NywgMTI4LCA4MywgNzIsIDg0LCA2NSwgMTI4LCA4MywgNzIsIAotICAgIDgyLCA3MywgNzgsIDY5LCAxMjgsIDgzLCA3MiwgODIsIDczLCA3NywgODAsIDEyOCwgODMsIDcyLCA4MiwgNzMsIDczLCAKLSAgICAxMjgsIDgzLCA3MiwgODIsIDczLCAxMjgsIDgzLCA3MiwgNzksIDg5LCAxMjgsIDgzLCA3MiwgNzksIDg4LCAxMjgsIDgzLCAKLSAgICA3MiwgNzksIDg3LCA2OSwgODIsIDEyOCwgODMsIDcyLCA3OSwgODUsIDc2LCA2OCwgNjksIDgyLCA2OSwgMTk2LCA4MywgNzIsIAotICAgIDc5LCA4NSwgNzYsIDY4LCA2OSwgMjEwLCA4MywgNzIsIDc5LCA4NCwgMTI4LCA4MywgNzIsIDc5LCA4MiwgODQsIDgzLCAKKyAgICA3OCwgNjksIDY5LCA5MCwgNzMsIDc4LCAxOTksIDgzLCA3OCwgNjUsIDIwOCwgODMsIDc4LCA2NSwgNzUsIDY5LCAxMjgsIAorICAgIDgzLCA3OCwgNjUsIDc1LCAxOTcsIDgzLCA3OCwgNjUsIDczLCA3NiwgMTI4LCA4MywgNzgsIDE5MywgODMsIDc3LCA3OSwgCisgICAgNzUsIDczLCA3OCwgMTk5LCA4MywgNzcsIDczLCA4MiwgNzUsIDczLCA3OCwgMTk5LCA4MywgNzcsIDczLCA3NiwgNzMsIDc4LCAKKyAgICAxOTksIDgzLCA3NywgNzMsIDc2LCA2OSwgMTI4LCA4MywgNzcsIDczLCA3NiwgMTk3LCA4MywgNzcsIDY5LCA2NSwgODIsIAorICAgIDEyOCwgODMsIDc3LCA2NSwgODMsIDIwMCwgODMsIDc3LCA2NSwgNzYsIDc2LCA2OSwgMjEwLCA4MywgNzcsIDY1LCA3NiwgCisgICAgNzYsIDEyOCwgODMsIDc2LCA4NSwgODIsIDEyOCwgODMsIDc2LCA3OSwgODcsIDc2LCA4OSwgMTI4LCA4MywgNzYsIDc5LCAKKyAgICA4NywgMTI4LCA4MywgNzYsIDc5LCAyMTUsIDgzLCA3NiwgNzksIDg2LCA3OSwgMTI4LCA4MywgNzYsIDc5LCAyMTIsIDgzLCAKKyAgICA3NiwgNzksIDgwLCA3MywgNzgsIDE5OSwgODMsIDc2LCA3OSwgODAsIDY5LCAxMjgsIDgzLCA3NiwgNzksIDY1LCAyMDYsIAorICAgIDgzLCA3NiwgNzMsIDc4LCA3MSwgMTI4LCA4MywgNzYsIDczLCA3MSwgNzIsIDg0LCA3NiwgMjE3LCA4MywgNzYsIDczLCA2OCwgCisgICAgNzMsIDc4LCA3MSwgMTI4LCA4MywgNzYsIDczLCA2OCwgNjksIDgyLCAxMjgsIDgzLCA3NiwgNzMsIDY3LCA2OSwgMTI4LCAKKyAgICA4MywgNzYsIDczLCA2NywgMTk3LCA4MywgNzYsIDY5LCA4NSwgODQsIDIwMCwgODMsIDc2LCA2OSwgNjksIDgwLCAyMTcsIAorICAgIDgzLCA3NiwgNjksIDY5LCA4MCwgNzMsIDc4LCAxOTksIDgzLCA3NiwgNjksIDY5LCAyMDgsIDgzLCA3NiwgNjUsIDg2LCA3OSwgCisgICAgNzgsIDczLCAxOTUsIDgzLCA3NiwgNjUsIDg2LCA2OSwgMTI4LCA4MywgNzYsIDY1LCA4MywgNzIsIDEyOCwgODMsIDc2LCAKKyAgICA2NSwgODMsIDIwMCwgODMsIDc2LCA2NSwgNzgsIDg0LCA2OSwgMTk2LCA4MywgNzUsIDg3LCA2NSwgMTI4LCA4MywgNzUsIAorICAgIDg3LCAxMjgsIDgzLCA3NSwgODUsIDc2LCA3NiwgMTI4LCA4MywgNzUsIDg1LCA3NiwgMjA0LCA4MywgNzUsIDc2LCA3MywgCisgICAgODIsIDc5LCAyMDYsIDgzLCA3NSwgNzMsIDc4LCAxMjgsIDgzLCA3NSwgNzMsIDY5LCA4MiwgMTI4LCA4MywgNzUsIDIwMSwgCisgICAgODMsIDc1LCA2OSwgODcsIDY5LCAxOTYsIDgzLCA3NSwgNjUsIDg0LCA2OSwgMTI4LCA4MywgNzUsIDEyOCwgODMsIDc0LCAKKyAgICA2OSwgMTI4LCA4MywgNzMsIDkwLCAxOTcsIDgzLCA3MywgODgsIDg0LCA4OSwgNDUsIDcwLCA3OSwgODUsIDgyLCA4NCwgCisgICAgMjAwLCA4MywgNzMsIDg4LCA4NCwgODksIDEyOCwgODMsIDczLCA4OCwgODQsIDIxNywgODMsIDczLCA4OCwgODQsIDcyLCAKKyAgICA4MywgMTI4LCA4MywgNzMsIDg4LCA4NCwgNzIsIDIxMSwgODMsIDczLCA4OCwgODQsIDcyLCAxMjgsIDgzLCA3MywgODgsIAorICAgIDg0LCA2OSwgNjksIDc4LCA4NCwgNzIsIDgzLCAxMjgsIDgzLCA3MywgODgsIDg0LCA2OSwgNjksIDc4LCA4NCwgNzIsIDEyOCwgCisgICAgODMsIDczLCA4OCwgODQsIDY5LCA2OSwgNzgsIDg0LCAyMDAsIDgzLCA3MywgODgsIDg0LCA2OSwgNjksIDc4LCAxMjgsIDgzLCAKKyAgICA3MywgODgsIDg0LCA2OSwgNjksIDIwNiwgODMsIDczLCA4OCwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgODMsIAorICAgIDczLCA4OCwgNDUsIDgzLCA4NCwgODIsIDczLCA3OCwgMTk5LCA4MywgNzMsIDg4LCA0NSwgODAsIDY5LCA4MiwgNDUsIDY5LCAKKyAgICAyMDUsIDgzLCA3MywgODgsIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDgzLCA3MywgMjE2LCA4MywgNzMsIDg0LCA2OSwgMTI4LCAKKyAgICA4MywgNzMsIDgzLCA2NSwgMTI4LCA4MywgNzMsIDgyLCA3MywgNzgsIDcxLCA4NSwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIAorICAgIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCAKKyAgICA4MywgNzMsIDc5LCA4MywgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA4MywgNzMsIAorICAgIDc5LCA4MywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODMsIDczLCAKKyAgICA3OSwgODMsIDQ1LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA2NSwgCisgICAgNzgsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDgzLCAKKyAgICA3MywgNzksIDgzLCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNzUsIDcyLCA3MywgCisgICAgNjksIDg1LCA3NSwgNzIsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIAorICAgIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDczLCA2OSwgODUsIDc4LCA3MSwgMTI4LCA4MywgCisgICAgNzMsIDc5LCA4MywgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDY3LCA3MywgNjksIAorICAgIDg1LCA2NywgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDgzLCA3MywgCisgICAgNzksIDIxMSwgODMsIDczLCA3OCwgODUsIDgzLCA3OSwgNzMsIDE5NiwgODMsIDczLCA3OCwgNzksIDc2LCA3OSwgNzEsIDczLCAKKyAgICA2NywgNjUsIDIwNCwgODMsIDczLCA3OCwgNzgsIDg5LCA3MywgNzMsIDg5LCA3MiwgNjksIDEyOCwgODMsIDczLCA3OCwgNzUsIAorICAgIDczLCA3OCwgNzEsIDEyOCwgODMsIDczLCA3OCwgNzEsIDc2LCA2OSwgNDUsIDgzLCA3MiwgNzMsIDcwLCA4NCwgNDUsIDUxLCAKKyAgICAxMjgsIDgzLCA3MywgNzgsIDcxLCA3NiwgNjksIDQ1LCA4MywgNzIsIDczLCA3MCwgODQsIDQ1LCA1MCwgMTI4LCA4MywgNzMsIAorICAgIDc4LCA3MSwgNzYsIDY5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA4MywgNzMsIDc4LCA3MSwgNzYsIDY5LCAxMjgsIDgzLCA3MywgCisgICAgNzgsIDcxLCA3NiwgMTk3LCA4MywgNzMsIDc4LCA3MSwgNjUsIDY1LCA4NCwgMTI4LCA4MywgNzMsIDc4LCAxOTcsIDgzLCAKKyAgICA3MywgNzgsIDY4LCA3MiwgMjAxLCA4MywgNzMsIDIwNiwgODMsIDczLCA3NywgODUsIDc2LCA4NCwgNjUsIDc4LCA2OSwgNzksIAorICAgIDg1LCA4MywgMTI4LCA4MywgNzMsIDc3LCA4NSwgNzYsIDg0LCA2NSwgNzgsIDY5LCA3OSwgODUsIDIxMSwgODMsIDczLCA3NywgCisgICAgODAsIDc2LCA3MywgNzAsIDczLCA2OSwgMTk2LCA4MywgNzMsIDc3LCA3MywgNzYsIDY1LCA4MiwgMTI4LCA4MywgNzMsIDc3LCAKKyAgICA3MywgNzYsIDY1LCAyMTAsIDgzLCA3MywgNzcsIDY1LCA3OCwgODMsIDczLCAyMTEsIDgzLCA3MywgNzcsIDY1LCA3NiwgODUsIAorICAgIDc4LCA3MSwgODUsIDIwNiwgODMsIDczLCA3NywgNjUsIDEyOCwgODMsIDczLCA3NiwgODYsIDY5LCA4MiwgMTI4LCA4MywgCisgICAgNzMsIDc2LCA3NSwgMTI4LCA4MywgNzMsIDc2LCA3MywgODEsIDg1LCAxOTMsIDgzLCA3MywgNzYsIDcyLCA3OSwgODUsIDY5LCAKKyAgICA4NCwgODQsIDY5LCAxMjgsIDgzLCA3MywgNzYsIDcyLCA3OSwgODUsIDY5LCA4NCwgODQsIDE5NywgODMsIDczLCA3NiwgNjUsIAorICAgIDUxLCAxMjgsIDgzLCA3MywgNzUsIDczLCAxMjgsIDgzLCA3MywgNzUsIDUwLCAxMjgsIDgzLCA3MywgNzUsIDE3OCwgODMsIAorICAgIDczLCA3MSwgNzgsIDgzLCAxMjgsIDgzLCA3MywgNzEsIDc3LCA2NSwgMTI4LCA4MywgNzMsIDcxLCA3NywgMTkzLCA4MywgCisgICAgNzMsIDcxLCA2OSwgMjA0LCA4MywgNzMsIDcxLCA1MiwgMTI4LCA4MywgNzMsIDcxLCAxODAsIDgzLCA3MywgNzEsIDEyOCwgCisgICAgODMsIDczLCA2OSwgNjksIDEyOCwgODMsIDczLCA2OCwgNjksIDg3LCA2NSwgODksIDIxMSwgODMsIDczLCA2OCwgNjksIAorICAgIDEyOCwgODMsIDczLCA2OCwgMTk3LCA4MywgNzMsIDY4LCA2OCwgNzIsIDczLCAxMjgsIDgzLCA3MywgNjgsIDY4LCA3MiwgCisgICAgNjUsIDc3LCAxMjgsIDgzLCA3MywgNjcsIDc1LCA3OCwgNjksIDgzLCA4MywgMTI4LCA4MywgNzMsIDY3LCA3NSwgNzYsIDY5LCAKKyAgICAxMjgsIDgzLCA3MywgNjYsIDE5NywgODMsIDczLCA2NSwgMTI4LCA4MywgMjAxLCA4MywgNzIsIDg5LCA4OCwgMTI4LCA4MywgCisgICAgNzIsIDg5LCA4NCwgMTI4LCA4MywgNzIsIDg5LCA4MiwgODgsIDEyOCwgODMsIDcyLCA4OSwgODIsIDEyOCwgODMsIDcyLCAKKyAgICA4OSwgODAsIDEyOCwgODMsIDcyLCA4OSwgNjksIDEyOCwgODMsIDcyLCA4OSwgNjUsIDEyOCwgODMsIDcyLCA4OSwgMTI4LCAKKyAgICA4MywgNzIsIDg3LCA3OSwgODksIDEyOCwgODMsIDcyLCA4NywgNzksIDc5LCAxMjgsIDgzLCA3MiwgODcsIDc5LCAxMjgsIAorICAgIDgzLCA3MiwgODcsIDczLCA3MywgMTI4LCA4MywgNzIsIDg3LCA3MywgMTI4LCA4MywgNzIsIDg3LCA2OSwgMTI4LCA4MywgCisgICAgNzIsIDg3LCAxOTcsIDgzLCA3MiwgODcsIDY1LCA2NSwgMTI4LCA4MywgNzIsIDg3LCA2NSwgMTI4LCA4MywgNzIsIDg2LCAKKyAgICAxMjgsIDgzLCA3MiwgODUsIDg4LCAxMjgsIDgzLCA3MiwgODUsIDg1LCAxMjgsIDgzLCA3MiwgODUsIDg0LCA4NCwgNzYsIAorICAgIDY5LCA2NywgNzksIDY3LCA3NSwgMTI4LCA4MywgNzIsIDg1LCA4NCwgMTI4LCA4MywgNzIsIDg1LCA4MiwgODgsIDEyOCwgCisgICAgODMsIDcyLCA4NSwgODIsIDEyOCwgODMsIDcyLCA4NSwgODAsIDEyOCwgODMsIDcyLCA4NSwgNzksIDg4LCAxMjgsIDgzLCAKKyAgICA3MiwgODUsIDc5LCA4MCwgMTI4LCA4MywgNzIsIDg1LCA3OSwgMTI4LCA4MywgNzIsIDg1LCA3NywgMTI4LCA4MywgNzIsIAorICAgIDg1LCA3NiwgMTI4LCA4MywgNzIsIDg1LCA3MCwgNzAsIDc2LCAxOTcsIDgzLCA3MiwgODUsIDY5LCA4MSwgMTI4LCA4MywgCisgICAgNzIsIDg1LCA2OSwgNzgsIDgzLCA3MiwgODUsIDY5LCA4NCwgMTI4LCA4MywgNzIsIDg1LCA2NiwgODUsIDgyLCAxMjgsIDgzLCAKKyAgICA3MiwgODUsIDUwLCAxMjgsIDgzLCA3MiwgODUsIDE3OCwgODMsIDcyLCA4NSwgMTI4LCA4MywgNzIsIDIxMywgODMsIDcyLCAKKyAgICA4NCwgNjUsIDgwLCA3MywgNjcsIDEyOCwgODMsIDcyLCA4NCwgNjUsIDEyOCwgODMsIDcyLCA4MiwgODUsIDcxLCAxMjgsIAorICAgIDgzLCA3MiwgODIsIDczLCA3OCwgNjksIDEyOCwgODMsIDcyLCA4MiwgNzMsIDc3LCA4MCwgMTI4LCA4MywgNzIsIDgyLCA3MywgCisgICAgNzMsIDEyOCwgODMsIDcyLCA4MiwgNzMsIDEyOCwgODMsIDcyLCA3OSwgODksIDEyOCwgODMsIDcyLCA3OSwgODgsIDEyOCwgCisgICAgODMsIDcyLCA3OSwgODcsIDY5LCA4MiwgMTI4LCA4MywgNzIsIDc5LCA4NSwgNzYsIDY4LCA2OSwgODIsIDY5LCAxOTYsIDgzLCAKKyAgICA3MiwgNzksIDg1LCA3NiwgNjgsIDY5LCAyMTAsIDgzLCA3MiwgNzksIDg0LCAxMjgsIDgzLCA3MiwgNzksIDgyLCA4NCwgODMsIAogICAgIDEyOCwgODMsIDcyLCA3OSwgODIsIDg0LCAyMTEsIDgzLCA3MiwgNzksIDgyLCA4NCwgNzIsIDY1LCA3OCwgMTk2LCA4MywgCiAgICAgNzIsIDc5LCA4MiwgODQsIDY5LCA3OCwgNjksIDgyLCAxMjgsIDgzLCA3MiwgNzksIDgyLCA4NCwgNjcsIDY1LCA3NSwgNjksIAogICAgIDEyOCwgODMsIDcyLCA3OSwgODIsIDg0LCA0NSwgODQsIDg3LCA3MywgNzEsIDQ1LCA4OSwgODIsIDEyOCwgODMsIDcyLCA3OSwgCkBAIC0xMDc3LDU0MyArMTA4Niw1NDggQEAKICAgICAxMjgsIDgzLCA3MiwgNjUsIDg4LCAxMjgsIDgzLCA3MiwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgODMsIAogICAgIDcyLCA2NSwgODYsIDczLCA2NSwgMjA2LCA4MywgNzIsIDY1LCA4NiwgNjksIDE5NiwgODMsIDcyLCA2NSwgODUsIDEyOCwgCiAgICAgODMsIDcyLCA2NSwgODQsIDEyOCwgODMsIDcyLCA2NSwgODIsIDg1LCAxMjgsIDgzLCA3MiwgNjUsIDgyLCAyMTMsIDgzLCAKLSAgICA3MiwgNjUsIDgyLCA4MCwgMTI4LCA4MywgNzIsIDY1LCA4MiwgMjA4LCA4MywgNzIsIDY1LCA4MiwgNjUsIDEyOCwgODMsIAotICAgIDcyLCA2NSwgODIsIDUwLCAxMjgsIDgzLCA3MiwgNjUsIDgyLCAxNzgsIDgzLCA3MiwgNjUsIDgwLCA3MywgNzgsIDcxLCAKLSAgICAxMjgsIDgzLCA3MiwgNjUsIDgwLCA2OSwgODMsIDEyOCwgODMsIDcyLCA2NSwgODAsIDE5NywgODMsIDcyLCA2NSwgODAsIAotICAgIDEyOCwgODMsIDcyLCA2NSwgNzgsIDcxLCAxMjgsIDgzLCA3MiwgNjUsIDc4LCAxMjgsIDgzLCA3MiwgNjUsIDIwNiwgODMsIAotICAgIDcyLCA2NSwgNzcsIDgyLCA3OSwgNjcsIDc1LCAxMjgsIDgzLCA3MiwgNjUsIDc2LCA4MywgNzIsIDY5LCA3NiwgNjksIDg0LCAKLSAgICAxMjgsIDgzLCA3MiwgNjUsIDc1LCA4NCwgNzMsIDEyOCwgODMsIDcyLCA2NSwgNzUsIDczLCA3OCwgNzEsIDEyOCwgODMsIAotICAgIDcyLCA2NSwgNzUsIDczLCA3OCwgMTk5LCA4MywgNzIsIDY1LCA3NSwgMTI4LCA4MywgNzIsIDY1LCA3MywgMTI4LCA4MywgCi0gICAgNzIsIDY1LCA3MCwgODQsIDEyOCwgODMsIDcyLCA2NSwgNzAsIDIxMiwgODMsIDcyLCA2NSwgNjgsIDc5LCA4NywgNjksIAotICAgIDE5NiwgODMsIDcyLCA2NSwgNjgsIDY5LCAxOTYsIDgzLCA3MiwgNjUsIDY4LCA2OSwgMTI4LCA4MywgNzIsIDY1LCA2OCwgCi0gICAgNjgsIDY1LCAxMjgsIDgzLCA3MiwgNjUsIDY4LCA2OCwgMTkzLCA4MywgNzIsIDY1LCA2OCwgMTI4LCA4MywgNzIsIDY1LCAKLSAgICAxOTYsIDgzLCA3MiwgNjUsIDY2LCA1NCwgMTI4LCA4MywgNzIsIDY1LCA2NSwgMTI4LCA4MywgNzIsIDY1LCA1NCwgMTI4LCAKLSAgICA4MywgNzIsIDY1LCAxODIsIDgzLCA3MiwgNjUsIDUxLCAxMjgsIDgzLCA3MiwgNjUsIDE3OSwgODMsIDcxLCA4MiwgMTkzLCAKLSAgICA4MywgNzEsIDc5LCAyMTAsIDgzLCA3MSwgNjcsIDEyOCwgODMsIDcxLCA2NSwgMjE1LCA4MywgNzEsIDY1LCAxOTQsIDgzLCAKLSAgICA3MSwgMTI4LCA4MywgNjksIDg5LCA3NSwgMTI4LCA4MywgNjksIDg4LCA4NCwgODUsIDc2LCAxOTMsIDgzLCA2OSwgODgsIAotICAgIDg0LCA3MywgNzYsIDY5LCAxMjgsIDgzLCA2OSwgODgsIDg0LCA2NSwgNzgsIDIxMSwgODMsIDY5LCA4NiwgNjksIDgyLCA2NSwgCi0gICAgNzgsIDY3LCA2OSwgMTI4LCA4MywgNjksIDg2LCA2OSwgNzgsIDg0LCA4OSwgMTI4LCA4MywgNjksIDg2LCA2OSwgNzgsIDg0LCAKLSAgICAyMTcsIDgzLCA2OSwgODYsIDY5LCA3OCwgODQsIDcyLCAxMjgsIDgzLCA2OSwgODYsIDY5LCA3OCwgODQsIDY5LCA2OSwgNzgsIAotICAgIDEyOCwgODMsIDY5LCA4NiwgNjksIDc4LCA4NCwgNjksIDY5LCAyMDYsIDgzLCA2OSwgODYsIDY5LCA3OCwgNDUsIDg0LCA3MiwgCi0gICAgNzMsIDgyLCA4NCwgODksIDEyOCwgODMsIDY5LCA4NiwgNjksIDIwNiwgODMsIDY5LCA4NSwgODgsIDEyOCwgODMsIDY5LCAKLSAgICA4NSwgNzgsIDg5LCA2NSwgNzcsIDEyOCwgODMsIDY5LCA4NSwgNjUsIDY5LCA4MSwgMTI4LCA4MywgNjksIDg0LCA3MCwgNzksIAotICAgIDc4LCAxMjgsIDgzLCA2OSwgODMsIDg0LCA2OSwgODIsIDg0LCA3MywgODUsIDIxMSwgODMsIDY5LCA4MywgODEsIDg1LCA3MywgCi0gICAgODEsIDg1LCA2NSwgNjgsIDgyLCA2NSwgODQsIDY5LCAxMjgsIDgzLCA2OSwgODMsIDY1LCA3NywgMTk3LCA4MywgNjksIDgyLCAKLSAgICA4NiwgNzMsIDY3LCAxOTcsIDgzLCA2OSwgODIsIDczLCA3MCwgODMsIDEyOCwgODMsIDY5LCA4MiwgNzMsIDcwLCAyMTEsIAotICAgIDgzLCA2OSwgODIsIDczLCA3MCwgMTI4LCA4MywgNjksIDgxLCA4NSwgNjksIDc4LCA4NCwgNzMsIDY1LCA3NiwgMTI4LCA4MywgCi0gICAgNjksIDgxLCA4NSwgNjksIDc4LCA2NywgMTk3LCA4MywgNjksIDgwLCA4NCwgODUsIDgwLCA3NiwgMTk3LCA4MywgNjksIDgwLCAKLSAgICA4NCwgNjksIDc3LCA2NiwgNjksIDgyLCAxMjgsIDgzLCA2OSwgODAsIDY1LCA4MiwgNjUsIDg0LCA3OSwgODIsIDEyOCwgODMsIAotICAgIDY5LCA4MCwgNjUsIDgyLCA2NSwgODQsIDc5LCAyMTAsIDgzLCA2OSwgNzgsIDg0LCA3OSwgMTI4LCA4MywgNjksIDc4LCA4NCwgCi0gICAgNzMsIDEyOCwgODMsIDY5LCA3NywgODUsIDc4LCA2NywgNzMsIDE5MywgODMsIDY5LCA3NywgNzUsIDY1LCA4NCwgNzIsIAotICAgIDEyOCwgODMsIDY5LCA3NywgNzUsIDEyOCwgODMsIDY5LCA3NywgNzMsIDg2LCA3OSwgODcsIDY5LCAyMDQsIDgzLCA2OSwgCi0gICAgNzcsIDczLCA4MywgNzksIDcwLCAyMTIsIDgzLCA2OSwgNzcsIDczLCA4MywgNjksIDg4LCA4NCwgNzMsIDc2LCA2OSwgMTI4LCAKLSAgICA4MywgNjksIDc3LCA3MywgNzcsIDczLCA3OCwgNzMsIDc3LCAxOTMsIDgzLCA2OSwgNzcsIDczLCA2OCwgNzMsIDgyLCA2OSwgCi0gICAgNjcsIDIxMiwgODMsIDY5LCA3NywgNzMsIDY3LCA3OSwgNzYsIDc5LCA3OCwgMTI4LCA4MywgNjksIDc3LCA3MywgNjcsIDc5LCAKLSAgICA3NiwgNzksIDIwNiwgODMsIDY5LCA3NywgNzMsIDY3LCA3MywgODIsIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDgzLCA2OSwgNzcsIAotICAgIDczLCA2NywgNzMsIDgyLCA2NywgNzYsIDE5NywgODMsIDY5LCA3NywgNzMsIDY2LCA4MiwgNjksIDg2LCA3MywgMjExLCA4MywgCi0gICAgNjksIDc3LCA3MywgNDUsIDg2LCA3OSwgNzMsIDY3LCA2OSwgMTk2LCA4MywgNjksIDc2LCA3MCwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTcsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA1NSwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTcsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA1MiwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTcsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA0OSwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgCi0gICAgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgCi0gICAgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgCi0gICAgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1NywgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNTUsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1NCwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNTUsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1MSwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNTUsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA0OCwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1NCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDU2LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1NCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDUzLCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1NCwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDUwLCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1NCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDUzLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTUsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDUzLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTIsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDUzLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNDksIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1NywgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTIsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1NCwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTIsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1MSwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTIsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA0OCwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCAKLSAgICA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCAKLSAgICA1MywgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA1MywgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDUwLCA1MywgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA1MCwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTAsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTcsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA1MCwgNTIsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTQsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDUwLCA1MiwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1MCwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDUwLCA1MiwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MCwgNTEsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTQsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1MCwgNTEsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgCi0gICAgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1MCwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDUwLCA1MSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNTAsIDUwLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIAotICAgIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA1MCwgNTAsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTEsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCAKLSAgICA1MCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTAsIDQ5LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDU1LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgCi0gICAgNDksIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTEsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA1MCwgNDksIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNDgsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIAotICAgIDQ4LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDU1LCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNTAsIDQ4LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDUyLCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MCwgNDgsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNDgsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTcsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA0OSwgNTcsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgCi0gICAgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1MywgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDQ5LCA1NywgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1MCwgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAotICAgIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTcsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA0OSwgNTYsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTQsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKLSAgICA1NiwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1MCwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDQ5LCA1NiwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCi0gICAgNTUsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTQsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA0OSwgNTUsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTEsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDQ5LCA1NSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNDksIDU0LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDU1LCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA0OSwgNTQsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTEsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA0OSwgNTQsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgCi0gICAgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNDksIDUzLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDU1LCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNDksIDUzLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIAotICAgIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTEsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA0OSwgNTMsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNDgsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCAKLSAgICA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNDksIDUyLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDUyLCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCi0gICAgNTIsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNDgsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDQ5LCA1MSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1NiwgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAotICAgIDUxLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDUyLCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNDksIDUxLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDQ5LCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKLSAgICA1MCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1NiwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDQ5LCA1MCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1MywgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNDksIDUwLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDQ5LCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNDksIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTcsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDQ5LCA0OSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1MywgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCAKLSAgICA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNDksIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTcsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA0OSwgNDgsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgCi0gICAgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1MywgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDQ5LCA0OCwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1MCwgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAotICAgIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgMjEwLCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA2OSwgMTk2LCA4MywgNjksIDczLCA4MywgNzcsIDY1LCAxMjgsIDgzLCA2OSwgNzMsIDgzLCA3NywgMTkzLCA4MywgNjksIAotICAgIDcyLCAxMjgsIDgzLCA2OSwgNzEsIDc5LCA3NiwgMTI4LCA4MywgNjksIDcxLCA3OCwgNzksIDEyOCwgODMsIDY5LCA3MSwgCi0gICAgNzcsIDY5LCA3OCwgODQsIDEyOCwgODMsIDY5LCA2OSwgODYsIDEyOCwgODMsIDY5LCA2OSwgNzgsIDg1LCAxMjgsIDgzLCAKLSAgICA2OSwgNjksIDc4LCAxMjgsIDgzLCA2OSwgNjksIDIwNiwgODMsIDY5LCA2OSwgNjgsIDc2LCA3MywgNzgsIDcxLCAxMjgsIAotICAgIDgzLCA2OSwgNjksIDQ1LCA3OCwgNzksIDQ1LCA2OSwgODYsIDczLCAyMDQsIDgzLCA2OSwgNjcsIDg0LCA3OSwgODIsIDEyOCwgCi0gICAgODMsIDY5LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgODMsIDY5LCA2NywgODQsIDczLCA3OSwgMjA2LCA4MywgNjksIDY3LCAKLSAgICA4MiwgNjksIDg0LCAxMjgsIDgzLCA2OSwgNjcsIDc5LCA3OCwgNjgsIDEyOCwgODMsIDY5LCA2NywgNjUsIDc4LCA4NCwgCi0gICAgMTI4LCA4MywgNjksIDY2LCA2NSwgODQsIDY2LCA2OSwgNzMsIDIxMiwgODMsIDY5LCA2NSwgODQsIDEyOCwgODMsIDY5LCAKLSAgICA2NSwgNzYsIDEyOCwgODMsIDY5LCA2NSwgNzEsIDg1LCA3NiwgMjA0LCA4MywgNjgsIDc5LCA3OCwgMTk5LCA4MywgNjgsIAotICAgIDEyOCwgODMsIDY3LCA4NywgNjUsIDEyOCwgODMsIDY3LCA4MiwgODUsIDgwLCA3NiwgNjksIDEyOCwgODMsIDY3LCA4MiwgCi0gICAgNzksIDc2LCA3NiwgMTI4LCA4MywgNjcsIDgyLCA3MywgODAsIDg0LCAxMjgsIDgzLCA2NywgODIsIDY5LCA2OSwgNzgsIAotICAgIDEyOCwgODMsIDY3LCA4MiwgNjksIDY5LCAyMDYsIDgzLCA2NywgODIsIDY5LCA2NSwgNzcsIDczLCA3OCwgMTk5LCA4MywgCi0gICAgNjcsIDc5LCA4MiwgODAsIDczLCA4NSwgODMsIDEyOCwgODMsIDY3LCA3OSwgODIsIDgwLCA3MywgNzksIDc4LCAxMjgsIDgzLCAKLSAgICA2NywgNzksIDgyLCA2OSwgMTI4LCA4MywgNjcsIDczLCA4MywgODMsIDc5LCA4MiwgODMsIDEyOCwgODMsIDY3LCA3MywgCi0gICAgMTI4LCA4MywgNjcsIDcyLCA4NywgNjUsIDEyOCwgODMsIDY3LCA3MiwgODcsIDE5MywgODMsIDY3LCA3MiwgODIsIDc5LCAKLSAgICA2OSwgNjgsIDY5LCA4MiwgMTI4LCA4MywgNjcsIDcyLCA3OSwgNzksIDc2LCAxMjgsIDgzLCA2NywgNzIsIDc5LCA3OSwgCi0gICAgMjA0LCA4MywgNjcsIDcyLCA3OSwgNzYsIDY1LCA4MiwgMTI4LCA4MywgNjcsIDcyLCA2OSwgNzcsIDE5MywgODMsIDY3LCAKLSAgICA2OSwgODAsIDg0LCA2OSwgMjEwLCA4MywgNjcsIDY1LCA3OCwgNjgsIDczLCA2NywgODUsIDgzLCAxMjgsIDgzLCA2NywgNjUsIAotICAgIDc4LCA2OCwgNzMsIDY3LCA4NSwgMjExLCA4MywgNjcsIDY1LCAyMDYsIDgzLCA2NywgNjUsIDc2LCA2OSwgODMsIDEyOCwgCi0gICAgODMsIDY2LCA4NSwgMTk0LCA4MywgNjYsIDgyLCA4NSwgMjA0LCA4MywgNjUsIDg5LCA3MywgODMsIDIwMSwgODMsIDY1LCAKLSAgICA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODMsIDY1LCA4OSwgMTI4LCA4MywgNjUsIDg4LCA3OSwgODAsIDcyLCA3OSwgNzgsIAotICAgIDY5LCAxMjgsIDgzLCA2NSwgODgsIDczLCA3NywgNjUsIDg0LCA2NSwgMTI4LCA4MywgNjUsIDg3LCA2NSwgNzgsIDEyOCwgCi0gICAgODMsIDY1LCA4NywgMTI4LCA4MywgNjUsIDg2LCA3OSwgODUsIDgyLCA3MywgNzgsIDE5OSwgODMsIDY1LCA4NSwgODIsIDY1LCAKLSAgICA4MywgNzIsIDg0LCA4MiwgMTkzLCA4MywgNjUsIDg1LCA3MywgNzYsIDEyOCwgODMsIDY1LCA4NCwgODUsIDgyLCA3OCwgCi0gICAgMTI4LCA4MywgNjUsIDg0LCA3NSwgNjUsIDY1LCA3OCwgNzUsIDg1LCA4NSwgMTI4LCA4MywgNjUsIDg0LCA3NSwgNjUsIDY1LCAKLSAgICA3OCwgMTI4LCA4MywgNjUsIDg0LCA2OSwgNzYsIDc2LCA3MywgODQsIDY5LCAxMjgsIDgzLCA2NSwgODQsIDY5LCA3NiwgNzYsIAotICAgIDczLCA4NCwgMTk3LCA4MywgNjUsIDg0LCA2NywgNzIsIDY5LCA3NiwgMTI4LCA4MywgNjUsIDg0LCA2NSwgNzgsIDcxLCA2NSwgCi0gICAgMTI4LCA4MywgNjUsIDgzLCA3MiwgMTI4LCA4MywgNjUsIDgzLCA2NSwgNzUsIDEyOCwgODMsIDY1LCA4MiwgNzMsIDEyOCwgCi0gICAgODMsIDY1LCA4MiwgMTkzLCA4MywgNjUsIDgyLCAxMjgsIDgzLCA2NSwgODEsIDEyOCwgODMsIDY1LCA4MCwgNjUsIDEyOCwgCi0gICAgODMsIDY1LCA3OCwgODksIDc5LCA3OSwgNzEsIDE5MywgODMsIDY1LCA3OCwgODksIDY1LCA3NSwgMTkzLCA4MywgNjUsIDc4LCAKLSAgICA4NCwgNzMsIDczLCA3NywgODUsIDEyOCwgODMsIDY1LCA3OCwgNzgsIDg5LCA2NSwgMTI4LCA4MywgNjUsIDc4LCA3MSwgNjUsIAotICAgIDUwLCAxMjgsIDgzLCA2NSwgNzgsIDY4LCA3MiwgMjAxLCA4MywgNjUsIDc4LCA2OCwgNjUsIDc2LCAxMjgsIDgzLCA2NSwgCi0gICAgNzgsIDY1LCA3MiwgMTI4LCA4MywgNjUsIDc4LCAxMjgsIDgzLCA2NSwgNzcsIDg5LCA3OSwgMjAzLCA4MywgNjUsIDc3LCAKLSAgICA4NiwgNjUsIDg0LCAxMjgsIDgzLCA2NSwgNzcsIDgwLCA3MywgMTI4LCA4MywgNjUsIDc3LCA4MCwgNzIsIDY1LCA3OSwgCi0gICAgMTI4LCA4MywgNjUsIDc3LCA3NSwgNjUsIDEyOCwgODMsIDY1LCA3NywgNjksIDc1LCA3MiwgMTI4LCA4MywgNjUsIDc3LCAKLSAgICA2OSwgNzUsIDIwMCwgODMsIDY1LCA3NywgNjYsIDY1LCAxMjgsIDgzLCA2NSwgNzcsIDY1LCA4MiwgNzMsIDg0LCA2NSwgCi0gICAgMjA2LCA4MywgNjUsIDc3LCAxMjgsIDgzLCA2NSwgNzYsIDg0LCA3MywgODIsIDY5LCAxMjgsIDgzLCA2NSwgNzYsIDg0LCAKLSAgICA3MywgNzYsIDc2LCA3OSwgMTI4LCA4MywgNjUsIDc2LCA4NCwgNDUsIDUwLCAxMjgsIDgzLCA2NSwgNzYsIDg0LCAxMjgsIAotICAgIDgzLCA2NSwgNzYsIDIxMiwgODMsIDY1LCA3NiwgNzYsIDY1LCA3NiwgNzYsIDY1LCA3MiwgNzksIDIxMywgODMsIDY1LCA3NiwgCi0gICAgNzYsIDE5MywgODMsIDY1LCA3NiwgNjUsIDIwNSwgODMsIDY1LCA3NiwgNjUsIDEyOCwgODMsIDY1LCA3NiwgNDUsIDY1LCAKLSAgICA3NywgNzcsIDc5LCA3OCwgNzMsIDY1LCA2NywgMTI4LCA4MywgNjUsIDc2LCAxMjgsIDgzLCA2NSwgNzUsIDc5LCA4NCwgCi0gICAgMTI4LCA4MywgNjUsIDc1LCA3MiwgMTkzLCA4MywgNjUsIDc1LCA2OSwgODUsIDY1LCA2OSwgMTI4LCA4MywgNjUsIDc1LCAKLSAgICAxOTcsIDgzLCA2NSwgNzQsIDY4LCA2NSwgNzIsIDEyOCwgODMsIDY1LCA3MywgNzYsIDY2LCA3OSwgNjUsIDg0LCAxMjgsIAotICAgIDgzLCA2NSwgNzMsIDc2LCAxMjgsIDgzLCA2NSwgNzMsIDc1LCA4NSwgODIsIDg1LCAxMjgsIDgzLCA2NSwgNzIsIDEyOCwgCi0gICAgODMsIDY1LCA3MSwgNzMsIDg0LCA4NCwgNjUsIDgyLCA3MywgODUsIDgzLCAxMjgsIDgzLCA2NSwgNzEsIDY1LCAxMjgsIDgzLCAKLSAgICA2NSwgNzEsIDEyOCwgODMsIDY1LCAxOTksIDgzLCA2NSwgNzAsIDcyLCA2NSwgMTI4LCA4MywgNjUsIDcwLCA2OSwgODQsIAotICAgIDIxNywgODMsIDY1LCA2OCwgNzIsIDY5LCAxMjgsIDgzLCA2NSwgNjgsIDY5LCAxMjgsIDgzLCA2NSwgNjgsIDEyOCwgODMsIAotICAgIDY1LCAxOTYsIDgzLCA2NSwgNjcsIDgyLCA3MywgNzAsIDczLCA2NywgNzMsIDY1LCAyMDQsIDgzLCA2NSwgNjUsIDczLCAKLSAgICAxMjgsIDgzLCA2NSwgNjUsIDY4LCA3MiwgODUsIDEyOCwgODMsIDY1LCA0NSwgNzMsIDEyOCwgODMsIDY1LCA0NSwgNTAsIAotICAgIDEyOCwgODMsIDQ4LCA1MiwgNTQsIDEyOCwgODMsIDQ4LCA1MiwgNTMsIDEyOCwgODMsIDQ4LCA1MiwgNTIsIDEyOCwgODMsIAotICAgIDQ4LCA1MiwgNTEsIDEyOCwgODMsIDQ4LCA1MiwgNTAsIDEyOCwgODMsIDQ4LCA1MiwgNDksIDEyOCwgODMsIDQ4LCA1MiwgCi0gICAgNDgsIDEyOCwgODMsIDQ4LCA1MSwgNTcsIDEyOCwgODMsIDQ4LCA1MSwgNTYsIDEyOCwgODMsIDQ4LCA1MSwgNTUsIDEyOCwgCi0gICAgODMsIDQ4LCA1MSwgNTQsIDEyOCwgODMsIDQ4LCA1MSwgNTMsIDY1LCAxMjgsIDgzLCA0OCwgNTEsIDUzLCAxMjgsIDgzLCAKLSAgICA0OCwgNTEsIDUyLCAxMjgsIDgzLCA0OCwgNTEsIDUxLCAxMjgsIDgzLCA0OCwgNTEsIDUwLCAxMjgsIDgzLCA0OCwgNTEsIAotICAgIDQ5LCAxMjgsIDgzLCA0OCwgNTEsIDQ4LCAxMjgsIDgzLCA0OCwgNTAsIDU3LCAxMjgsIDgzLCA0OCwgNTAsIDU2LCAxMjgsIAotICAgIDgzLCA0OCwgNTAsIDU1LCAxMjgsIDgzLCA0OCwgNTAsIDU0LCA2NiwgMTI4LCA4MywgNDgsIDUwLCA1NCwgNjUsIDEyOCwgCi0gICAgODMsIDQ4LCA1MCwgNTQsIDEyOCwgODMsIDQ4LCA1MCwgNTMsIDEyOCwgODMsIDQ4LCA1MCwgNTIsIDEyOCwgODMsIDQ4LCAKLSAgICA1MCwgNTEsIDEyOCwgODMsIDQ4LCA1MCwgNTAsIDEyOCwgODMsIDQ4LCA1MCwgNDksIDEyOCwgODMsIDQ4LCA1MCwgNDgsIAotICAgIDEyOCwgODMsIDQ4LCA0OSwgNTcsIDEyOCwgODMsIDQ4LCA0OSwgNTYsIDEyOCwgODMsIDQ4LCA0OSwgNTUsIDY1LCAxMjgsIAotICAgIDgzLCA0OCwgNDksIDU1LCAxMjgsIDgzLCA0OCwgNDksIDU0LCAxMjgsIDgzLCA0OCwgNDksIDUzLCAxMjgsIDgzLCA0OCwgCi0gICAgNDksIDUyLCA2NiwgMTI4LCA4MywgNDgsIDQ5LCA1MiwgNjUsIDEyOCwgODMsIDQ4LCA0OSwgNTIsIDEyOCwgODMsIDQ4LCAKLSAgICA0OSwgNTEsIDEyOCwgODMsIDQ4LCA0OSwgNTAsIDEyOCwgODMsIDQ4LCA0OSwgNDksIDEyOCwgODMsIDQ4LCA0OSwgNDgsIAotICAgIDEyOCwgODMsIDQ4LCA0OCwgNTcsIDEyOCwgODMsIDQ4LCA0OCwgNTYsIDEyOCwgODMsIDQ4LCA0OCwgNTUsIDEyOCwgODMsIAotICAgIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDgzLCA0OCwgNDgsIDU0LCAxMjgsIDgzLCA0OCwgNDgsIDUzLCAxMjgsIDgzLCA0OCwgCi0gICAgNDgsIDUyLCAxMjgsIDgzLCA0OCwgNDgsIDUxLCAxMjgsIDgzLCA0OCwgNDgsIDUwLCA2NSwgMTI4LCA4MywgNDgsIDQ4LCAKLSAgICA1MCwgMTI4LCA4MywgNDgsIDQ4LCA0OSwgMTI4LCA4MywgNDUsIDg3LCAxMjgsIDgzLCA0NSwgODMsIDcyLCA2NSwgODAsIAotICAgIDY5LCAxOTYsIDgyLCA4OSwgODksIDEyOCwgODIsIDg5LCA4OCwgMTI4LCA4MiwgODksIDg0LCAxMjgsIDgyLCA4OSwgODIsIAotICAgIDg4LCAxMjgsIDgyLCA4OSwgODIsIDEyOCwgODIsIDg5LCA4MCwgMTI4LCA4MiwgODcsIDc5LCA3OSwgMTI4LCA4MiwgODcsIAotICAgIDc5LCAxMjgsIDgyLCA4NywgNzMsIDczLCAxMjgsIDgyLCA4NywgNzMsIDEyOCwgODIsIDg3LCA2OSwgNjksIDEyOCwgODIsIAotICAgIDg3LCA2OSwgMTI4LCA4MiwgODcsIDY1LCA3MiwgNjUsIDEyOCwgODIsIDg3LCA2NSwgNjUsIDEyOCwgODIsIDg3LCA2NSwgCi0gICAgMTI4LCA4MiwgODUsIDg4LCAxMjgsIDgyLCA4NSwgODUsIDY2LCA4NSwgODIsIDg1LCAxMjgsIDgyLCA4NSwgODUsIDEyOCwgCi0gICAgODIsIDg1LCA4NCwgMTI4LCA4MiwgODUsIDgzLCA3MywgMTI4LCA4MiwgODUsIDgyLCA4OCwgMTI4LCA4MiwgODUsIDgyLCAKLSAgICAxMjgsIDgyLCA4NSwgODAsIDczLCA3MywgMTI4LCA4MiwgODUsIDgwLCA2OSwgMTk3LCA4MiwgODUsIDgwLCAxMjgsIDgyLCAKLSAgICA4NSwgNzksIDg4LCAxMjgsIDgyLCA4NSwgNzksIDgwLCAxMjgsIDgyLCA4NSwgNzksIDEyOCwgODIsIDg1LCA3OCwgNzksIAotICAgIDg1LCA4NCwgMTI4LCA4MiwgODUsIDc4LCA3OCwgNzMsIDc4LCAxOTksIDgyLCA4NSwgNzgsIDc4LCA2OSwgODIsIDEyOCwgCi0gICAgODIsIDg1LCA3OCwgMTI4LCA4MiwgODUsIDc3LCAyMDEsIDgyLCA4NSwgNzcsIDY1LCAyMDEsIDgyLCA4NSwgNzcsIDEyOCwgCi0gICAgODIsIDg1LCAyMDUsIDgyLCA4NSwgNzYsIDY5LCA4MiwgMTI4LCA4MiwgODUsIDc2LCA2OSwgNDUsIDY4LCA2OSwgNzYsIDY1LCAKLSAgICA4OSwgNjksIDY4LCAxMjgsIDgyLCA4NSwgNzYsIDY5LCAxMjgsIDgyLCA4NSwgNzYsIDY1LCA3MywgMTI4LCA4MiwgODUsIAotICAgIDc1LCA3NSwgNjUsIDc1LCA3MiwgNjUsIDEyOCwgODIsIDg1LCA3MywgODMsIDEyOCwgODIsIDg1LCA3MSwgNjYsIDIxNywgCi0gICAgODIsIDg1LCA2OCwgNzMsIDc3LCA2OSwgNzgsIDg0LCAxOTMsIDgyLCA4NSwgNjYsIDc2LCAxOTcsIDgyLCA4NSwgMTk0LCAKLSAgICA4MiwgODUsIDY1LCAxMjgsIDgyLCA4NCwgNzIsIDY1LCA3OCwgMTk5LCA4MiwgODQsIDY1LCA3MSwgODMsIDEyOCwgODIsIAotICAgIDg0LCA2NSwgNzEsIDIxMSwgODIsIDgyLCA4OSwgODgsIDEyOCwgODIsIDgyLCA4OSwgODQsIDEyOCwgODIsIDgyLCA4OSwgCi0gICAgODIsIDg4LCAxMjgsIDgyLCA4MiwgODksIDgyLCAxMjgsIDgyLCA4MiwgODksIDgwLCAxMjgsIDgyLCA4MiwgODUsIDg4LCAKLSAgICAxMjgsIDgyLCA4MiwgODUsIDg1LCAxMjgsIDgyLCA4MiwgODUsIDg0LCAxMjgsIDgyLCA4MiwgODUsIDgyLCA4OCwgMTI4LCAKLSAgICA4MiwgODIsIDg1LCA4MiwgMTI4LCA4MiwgODIsIDg1LCA4MCwgMTI4LCA4MiwgODIsIDg1LCA3OSwgODgsIDEyOCwgODIsIAotICAgIDgyLCA4NSwgNzksIDEyOCwgODIsIDgyLCA4NSwgMTI4LCA4MiwgODIsIDgyLCA2NSwgMTI4LCA4MiwgODIsIDc5LCA4OCwgCi0gICAgMTI4LCA4MiwgODIsIDc5LCA4NCwgMTI4LCA4MiwgODIsIDc5LCA4MCwgMTI4LCA4MiwgODIsIDc5LCA3OSwgMTI4LCA4MiwgCi0gICAgODIsIDc5LCAxMjgsIDgyLCA4MiwgNzMsIDczLCAxMjgsIDgyLCA4MiwgNzMsIDEyOCwgODIsIDgyLCA2OSwgODgsIDEyOCwgCi0gICAgODIsIDgyLCA2OSwgODQsIDEyOCwgODIsIDgyLCA2OSwgODAsIDEyOCwgODIsIDgyLCA2OSwgNzIsIDEyOCwgODIsIDgyLCAKLSAgICA2OSwgMjAwLCA4MiwgODIsIDY5LCA2OSwgMTI4LCA4MiwgODIsIDY5LCAxMjgsIDgyLCA4MiwgNjUsIDg4LCAxMjgsIDgyLCAKLSAgICA4MiwgNjUsIDg1LCAxMjgsIDgyLCA4MiwgNjUsIDczLCAxMjgsIDgyLCA4MiwgNjUsIDY1LCAxMjgsIDgyLCA3OSwgODcsIAotICAgIDY2LCA3OSwgNjUsIDg0LCAxMjgsIDgyLCA3OSwgODUsIDc4LCA2OCwgNjksIDE5NiwgODIsIDc5LCA4NSwgNzgsIDY4LCA0NSwgCi0gICAgODQsIDczLCA4MCwgODAsIDY5LCAxOTYsIDgyLCA3OSwgODQsIDg1LCA3OCwgNjgsIDY1LCAxMjgsIDgyLCA3OSwgODQsIDY1LCAKLSAgICA4NCwgNzMsIDc5LCA3OCwgODMsIDEyOCwgODIsIDc5LCA4NCwgNjUsIDg0LCA3MywgNzksIDc4LCA0NSwgODcsIDY1LCA3NiwgCi0gICAgNzYsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDgyLCA3OSwgODQsIDY1LCA4NCwgNzMsIDc5LCA3OCwgNDUsIDcwLCA3NiwgNzksIAotICAgIDc5LCA4MiwgODAsIDc2LCA2NSwgNzgsIDE5NywgODIsIDc5LCA4NCwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgyLCA3OSwgCi0gICAgODQsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDgyLCA3OSwgODQsIDY1LCA4NCwgNjksIDE5NiwgODIsIDc5LCA4MywgNzIsIAotICAgIDEyOCwgODIsIDc5LCA4MywgNjksIDg0LCA4NCwgNjksIDEyOCwgODIsIDc5LCA4MywgNjksIDEyOCwgODIsIDc5LCA3OSwgCi0gICAgODQsIDEyOCwgODIsIDc5LCA3OSwgODMsIDg0LCA2OSwgODIsIDEyOCwgODIsIDc5LCA3OSwgNzUsIDEyOCwgODIsIDc5LCAKLSAgICA3OSwgNzAsIDEyOCwgODIsIDc5LCA3NywgNjUsIDc4LCA3MywgNjUsIDIwNiwgODIsIDc5LCA3NywgNjUsIDIwNiwgODIsIAotICAgIDc5LCA3NywgMTI4LCA4MiwgNzksIDc2LCA3NiwgNzMsIDc4LCAxOTksIDgyLCA3OSwgNzYsIDc2LCA2OSwgMjEwLCA4MiwgCi0gICAgNzksIDc2LCA3NiwgNjksIDY4LCA0NSwgODUsIDIwOCwgODIsIDc5LCA3MiwgNzMsIDc4LCA3MSwgODksIDE5MywgODIsIDc5LCAKLSAgICA3MSwgMTI4LCA4MiwgNzksIDE5NiwgODIsIDc5LCA2NywgNzUsIDY5LCA4NCwgMTI4LCA4MiwgNzksIDY3LCAyMDMsIDgyLCAKLSAgICA3OSwgNjcsIDEyOCwgODIsIDc5LCA2NiwgNzksIDIxMiwgODIsIDc5LCA2NiwgNjUsIDg0LCAxMjgsIDgyLCA3OSwgNjUsIAotICAgIDgzLCA4NCwgNjksIDE5NiwgODIsIDc5LCA2NSwgODIsIDEyOCwgODIsIDc5LCA2NSwgMTI4LCA4MiwgNzgsIDg5LCA3MywgCi0gICAgNzgsIDE5OSwgODIsIDc4LCA3OSwgNzksIDc4LCAxMjgsIDgyLCA3OCwgNzksIDc5LCAyMDYsIDgyLCA3OCwgNjUsIDIwNSwgCi0gICAgODIsIDc3LCA4NCwgMTI4LCA4MiwgNzYsIDc5LCAxMjgsIDgyLCA3NiwgNzcsIDEyOCwgODIsIDc2LCA3MywgMTI4LCA4MiwgCi0gICAgNzYsIDY5LCAxMjgsIDgyLCA3NCwgNjksIDIxMSwgODIsIDc0LCA2OSwgMTI4LCA4MiwgNzQsIDE5NywgODIsIDczLCA4NiwgCi0gICAgNjksIDgyLCAxMjgsIDgyLCA3MywgODQsIDg1LCA2NSwgNzYsIDEyOCwgODIsIDczLCA4NCwgODQsIDc5LCA4MiwgODUsIAotICAgIDEyOCwgODIsIDczLCA4NCwgODMsIDczLCAxMjgsIDgyLCA3MywgODMsIDczLCA3OCwgMTk5LCA4MiwgNzMsIDgzLCA3MiwgCi0gICAgMTI4LCA4MiwgNzMsIDgyLCA2NSwgMTI4LCA4MiwgNzMsIDgwLCA4MCwgNzYsIDE5NywgODIsIDczLCA4MCwgMTI4LCA4MiwgCi0gICAgNzMsIDc4LCA3MSwgMjExLCA4MiwgNzMsIDc4LCA3MSwgNzMsIDc4LCAxOTksIDgyLCA3MywgNzgsIDcwLCA3OSwgODIsIDkwLCAKLSAgICA2NSwgNzgsIDY4LCA3OSwgMTI4LCA4MiwgNzMsIDIwNiwgODIsIDczLCA3NywgNzEsIDY2LCA2NSwgMTI4LCA4MiwgNzMsIAotICAgIDc3LCAxMjgsIDgyLCA3MywgNzUsIDgyLCA3MywgNzUsIDEyOCwgODIsIDczLCA3MSwgODYsIDY5LCA2OCwgNzMsIDE5NSwgCi0gICAgODIsIDczLCA3MSwgNzIsIDg0LCA4NywgNjUsIDgyLCA2OCwgODMsIDEyOCwgODIsIDczLCA3MSwgNzIsIDg0LCA3MiwgNjUsIAotICAgIDc4LCAxOTYsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDg0LCA3OSwgNDUsIDc2LCA2OSwgNzAsIDIxMiwgODIsIDczLCA3MSwgCi0gICAgNzIsIDg0LCA0NSwgODMsIDczLCA2OCwgMTk3LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA4MywgNzIsIDY1LCA2OCwgNzksIAotICAgIDg3LCA2OSwgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA4MywgNzIsIDY1LCA2OCwgNjksIDE5NiwgODIsIDczLCA3MSwgCi0gICAgNzIsIDg0LCA0NSwgODAsIDc5LCA3MywgNzgsIDg0LCA3MywgNzgsIDE5OSwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgNzYsIAotICAgIDczLCA3MSwgNzIsIDg0LCA2OSwgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA3MiwgNjUsIDc4LCA2OCwgNjksIDE5NiwgCi0gICAgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgNzIsIDY1LCA3OCwgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA3MCwgNjUsIAotICAgIDY3LCA3MywgNzgsIDE5OSwgODIsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDg5LCA2OSwgCi0gICAgODMsIDczLCA2OSwgODUsIDc4LCA3MSwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4OSwgNjksIDc5LCA4MiwgNzMsIAotICAgIDc4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCAKLSAgICA0NSwgODksIDY5LCA3OSwgODIsIDczLCA3OCwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgCi0gICAgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIAotICAgIDc2LCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4NCwgNzIsIDczLCAKLSAgICA2OSwgODUsIDg0LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDg0LCA3MywgCi0gICAgNzUsIDY5LCA4NSwgODQsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIAotICAgIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDgwLCA3MywgNjksIDg1LCAKLSAgICA4MCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDc1LCA3MywgODksIDY5LCA3OSwgCi0gICAgNzUsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCAKLSAgICA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgCi0gICAgNzYsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIAotICAgIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgMTI4LCA4MiwgNzMsIDY5LCAKLSAgICA4NSwgNzYsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgCi0gICAgODUsIDc2LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCA3MiwgNzMsIAotICAgIDY5LCA4NSwgODAsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCAKLSAgICAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIAotICAgIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCAKLSAgICA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgCi0gICAgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIAotICAgIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCAKLSAgICA3NSwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgCi0gICAgNzUsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzUsIDczLCA4OSwgNjksIAotICAgIDc5LCA3NSwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgwLCAKLSAgICA3MywgNjksIDg1LCA4MCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIAotICAgIDczLCA2OSwgODUsIDc2LCA0NSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDgyLCA3MywgNjksIDg1LCAyMDQsIDgyLCA3MywgCi0gICAgNjksIDc2LCAxMjgsIDgyLCA3MywgNjksIDY5LCAxMjgsIDgyLCA3MywgNjcsIDY5LCA3NywgMTI4LCA4MiwgNzMsIDY3LCAKLSAgICA2OSwgMTI4LCA4MiwgNzMsIDY3LCAxOTcsIDgyLCA3MywgNjYsIDY2LCA3OSwgNzgsIDEyOCwgODIsIDczLCA2NiwgNjYsIAotICAgIDc5LCAyMDYsIDgyLCA3MywgNjUsIDIwNCwgODIsIDcyLCA3OSwgODQsIDczLCAxOTUsIDgyLCA3MiwgNzksIDEyOCwgODIsIAotICAgIDcyLCAyMDcsIDgyLCA3MiwgNjUsIDEyOCwgODIsIDcyLCAxMjgsIDgyLCA3MSwgODksIDczLCA3OCwgNzEsIDgzLCAxMjgsIAotICAgIDgyLCA3MSwgODksIDY1LCA3OCwgMTI4LCA4MiwgNzEsIDg5LCAxOTMsIDgyLCA2OSwgODYsIDc5LCA3NiwgODYsIDczLCA3OCwgCi0gICAgMTk5LCA4MiwgNjksIDg2LCA3OSwgNzYsIDg1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNjksIDg2LCA3NywgNjUsIAotICAgIDEyOCwgODIsIDY5LCA4NiwgNzMsIDY1LCAxMjgsIDgyLCA2OSwgODYsIDY5LCA4MiwgODMsIDY5LCA2OCwgNDUsIDgzLCA2NywgCi0gICAgNzIsIDg3LCA2NSwgMTI4LCA4MiwgNjksIDg2LCA2OSwgODIsIDgzLCA2OSwgNjgsIDEyOCwgODIsIDY5LCA4NiwgNjksIDgyLCAKLSAgICA4MywgNjksIDE5NiwgODIsIDY5LCA4NiwgNjksIDgyLCA4MywgMTk3LCA4MiwgNjksIDg1LCA4OCwgMTI4LCA4MiwgNjksIAotICAgIDg1LCAxMjgsIDgyLCA2OSwgODQsIDg1LCA4MiwgNzgsIDEyOCwgODIsIDY5LCA4NCwgODUsIDgyLCAyMDYsIDgyLCA2OSwgCi0gICAgODQsIDgyLCA3OSwgNzAsIDc2LCA2OSwgMjE2LCA4MiwgNjksIDg0LCA4MiwgNjksIDY1LCA4NCwgMTI4LCA4MiwgNjksIDg0LCAKLSAgICA3OSwgODIsIDg0LCAxMjgsIDgyLCA2OSwgODMsIDg1LCA4MCwgNzMsIDc4LCA4NSwgODMsIDEyOCwgODIsIDY5LCA4MywgODQsIAotICAgIDgyLCA3OSwgNzksIDc3LCAxMjgsIDgyLCA2OSwgODMsIDg0LCA4MiwgNzMsIDY3LCA4NCwgNjksIDE5NiwgODIsIDY5LCA4MywgCi0gICAgODQsIDEyOCwgODIsIDY5LCA4MywgODAsIDc5LCA3OCwgODMsIDY5LCAxMjgsIDgyLCA2OSwgODMsIDc5LCA4NSwgODIsIDY3LCAKLSAgICA2OSwgMTI4LCA4MiwgNjksIDgzLCA3OSwgNzYsIDg1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNjksIDgzLCA3MywgODMsIAotICAgIDg0LCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA4MiwgNjksIDgzLCA3MywgNjgsIDY5LCA3OCwgNjcsIDY5LCAxMjgsIDgyLCA2OSwgCi0gICAgODMsIDIwMCwgODIsIDY5LCA4MiwgNjksIDc4LCA3MSwgNzEsIDY1LCA3OCwgMTI4LCA4MiwgNjksIDgyLCA2OSwgNzUsIDY1LCAKLSAgICA3OCwgMTI4LCA4MiwgNjksIDgwLCA4MiwgNjksIDgzLCA2OSwgNzgsIDg0LCAxMjgsIDgyLCA2OSwgODAsIDc2LCA2NSwgNjcsIAotICAgIDY5LCA3NywgNjksIDc4LCAyMTIsIDgyLCA2OSwgODAsIDcyLCAxMjgsIDgyLCA2OSwgODAsIDY5LCA4NCwgNzMsIDg0LCA3MywgCi0gICAgNzksIDIwNiwgODIsIDY5LCA4MCwgNjksIDY1LCA4NCwgNjksIDE5NiwgODIsIDY5LCA4MCwgNjksIDY1LCA4NCwgMTI4LCAKLSAgICA4MiwgNjksIDgwLCA2OSwgNjUsIDIxMiwgODIsIDY5LCA4MCwgNjUsIDg5LCA2NSwgMTI4LCA4MiwgNjksIDgwLCA2NSwgCi0gICAgMTI4LCA4MiwgNjksIDgwLCAxOTMsIDgyLCA2OSwgNzgsIDg0LCA3OSwgNzEsIDY5LCA3OCwgMTI4LCA4MiwgNjksIDc4LCAKLSAgICAxMjgsIDgyLCA2OSwgMjA2LCA4MiwgNjksIDc3LCA4NSwgMTI4LCA4MiwgNjksIDc3LCA3MywgNzgsIDY4LCA2OSwgMjEwLCAKLSAgICA4MiwgNjksIDc3LCA2OSwgNjgsIDg5LCAxMjgsIDgyLCA2OSwgNzYsIDczLCA3MSwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNjksIAotICAgIDc2LCA3MywgNjksIDg2LCA2OSwgMTk2LCA4MiwgNjksIDc2LCA2OSwgNjUsIDgzLCA2OSwgMTI4LCA4MiwgNjksIDc2LCA2NSwgCi0gICAgODgsIDY5LCA2OCwgMTI4LCA4MiwgNjksIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDgyLCA2OSwgNzYsIDY1LCAKLSAgICA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNjksIDc2LCA2NSwgNjUsIDEyOCwgODIsIDY5LCA3NCwgNjUsIDc4LCAxOTksIAotICAgIDgyLCA2OSwgNzMsIDE5NiwgODIsIDY5LCA3MywgMTI4LCA4MiwgNjksIDcxLCA4NSwgNzYsIDg1LCA4MywgNDUsIDUyLCAKLSAgICAxMjgsIDgyLCA2OSwgNzEsIDg1LCA3NiwgODUsIDgzLCA0NSwgNTEsIDEyOCwgODIsIDY5LCA3MSwgODUsIDc2LCA4NSwgODMsIAotICAgIDQ1LCA1MCwgMTI4LCA4MiwgNjksIDcxLCA4NSwgNzYsIDg1LCA4MywgMTI4LCA4MiwgNjksIDcxLCA4NSwgNzYsIDg1LCAKLSAgICAyMTEsIDgyLCA2OSwgNzEsIDczLCA4MywgODQsIDY5LCA4MiwgNjksIDE5NiwgODIsIDY5LCA3MSwgNzMsIDc5LCA3OCwgNjUsIAotICAgIDIwNCwgODIsIDY5LCA3MSwgNzMsIDY1LCA0NSwgNTAsIDEyOCwgODIsIDY5LCA3MSwgNzMsIDY1LCAxMjgsIDgyLCA2OSwgCi0gICAgNzAsIDc5LCA4MiwgNzcsIDY5LCAxOTYsIDgyLCA2OSwgNzAsIDY5LCA4MiwgNjksIDc4LCA2NywgMTk3LCA4MiwgNjksIDY4LCAKLSAgICA4NSwgODAsIDc2LCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNjksIDY3LCA4OSwgNjcsIDc2LCA3MywgCi0gICAgNzgsIDE5OSwgODIsIDY5LCA2NywgODksIDY3LCA3NiwgNjksIDE5NiwgODIsIDY5LCA2NywgODQsIDczLCA3NiwgNzMsIDc4LCAKLSAgICA2OSwgNjUsIDIxMCwgODIsIDY5LCA2NywgODQsIDY1LCA3OCwgNzEsIDg1LCA3NiwgNjUsIDIxMCwgODIsIDY5LCA2NywgODQsIAotICAgIDY1LCA3OCwgNzEsIDc2LCA2OSwgMTI4LCA4MiwgNjksIDY3LCA4NCwgNjUsIDc4LCA3MSwgNzYsIDE5NywgODIsIDY5LCA2NywgCi0gICAgODIsIDY5LCA2NSwgODQsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDgyLCA2OSwgNjcsIDc5LCA4MiwgNjgsIDczLCA3OCwgMTk5LCAKLSAgICA4MiwgNjksIDY3LCA3OSwgODIsIDY4LCA2OSwgODIsIDEyOCwgODIsIDY5LCA2NywgNzksIDgyLCA2OCwgMTI4LCA4MiwgNjksIAotICAgIDY3LCA3OSwgODIsIDE5NiwgODIsIDY5LCA2NywgNzMsIDg0LCA2NSwgODQsIDczLCA4NiwgMTk3LCA4MiwgNjksIDY3LCA2OSwgCi0gICAgODAsIDg0LCA3MywgODYsIDE5NywgODIsIDY5LCA2NywgNjksIDczLCA4NiwgNjksIDgyLCAxMjgsIDgyLCA2OSwgNjcsIDY5LCAKLSAgICA3MywgODYsIDY5LCAyMTAsIDgyLCA2OSwgNjUsIDc2LCA3MSwgNjUsIDgyLCA0NSwgNTAsIDEyOCwgODIsIDY5LCA2NSwgNzYsIAotICAgIDcxLCA2NSwgODIsIDEyOCwgODIsIDY5LCA2NSwgNzIsIDc3LCA4NSwgNzUsIDEyOCwgODIsIDY5LCA2NSwgNjcsIDcyLCAKLSAgICAxMjgsIDgyLCA2OCwgMjA3LCA4MiwgNjgsIDY5LCAyMDQsIDgyLCA2NiwgNjUsIDgzLCAxOTMsIDgyLCA2NSwgODksIDgzLCAKLSAgICAxMjgsIDgyLCA2NSwgODksIDIxMSwgODIsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODIsIDY1LCA4NCwgNzMsIAotICAgIDc5LCAxMjgsIDgyLCA2NSwgODQsIDcyLCA2NSwgMTI4LCA4MiwgNjUsIDg0LCA3MiwgMTkzLCA4MiwgNjUsIDg0LCA2NSwgCi0gICAgMTI4LCA4MiwgNjUsIDg0LCAxMjgsIDgyLCA2NSwgODMsIDg3LCA2NSwgNjgsIDczLCAxMjgsIDgyLCA2NSwgODMsIDc5LCAKLSAgICA4NSwgMjA0LCA4MiwgNjUsIDgzLCA3MiwgNjUsIDEyOCwgODIsIDY1LCA4MSwgMTI4LCA4MiwgNjUsIDgwLCA3MywgODMsIAotICAgIDc3LCA2NSwgMTI4LCA4MiwgNjUsIDc4LCA3MSwgMTk3LCA4MiwgNjUsIDc4LCA2NSwgMTI4LCA4MiwgNjUsIDc4LCAxMjgsIAotICAgIDgyLCA2NSwgNzcsIDIxMSwgODIsIDY1LCA3NywgNjYsIDY1LCA4NCwgMTI4LCA4MiwgNjUsIDc1LCA3MiwgNjUsIDc4LCA3MSwgCi0gICAgMTI4LCA4MiwgNjUsIDc1LCA2NSwgNjUsIDgyLCA2NSwgNjUsIDc4LCA4MywgNjUsIDg5LCA2NSwgMTI4LCA4MiwgNjUsIDczLCAKLSAgICA4MywgNzMsIDc4LCAxOTksIDgyLCA2NSwgNzMsIDgzLCA2OSwgMTk2LCA4MiwgNjUsIDczLCA3OCwgNjYsIDc5LCA4NywgCi0gICAgMTI4LCA4MiwgNjUsIDczLCA3NiwgODcsIDY1LCA4OSwgMTI4LCA4MiwgNjUsIDczLCA3NiwgODcsIDY1LCAyMTcsIDgyLCAKLSAgICA2NSwgNzMsIDc2LCAxMjgsIDgyLCA2NSwgNzMsIDY4LCAyMDcsIDgyLCA2NSwgNzMsIDY4LCA2NSwgMTI4LCA4MiwgNjUsIAotICAgIDcyLCA3NywgNjUsIDg0LCA4NSwgNzYsIDc2LCA2NSwgMjAwLCA4MiwgNjUsIDcyLCAxMjgsIDgyLCA2NSwgNzAsIDY5LCAKLSAgICAxMjgsIDgyLCA2NSwgNjksIDc3LCAxMjgsIDgyLCA2NSwgNjgsIDczLCA3OSwgNjUsIDY3LCA4NCwgNzMsIDg2LCAxOTcsIAotICAgIDgyLCA2NSwgNjgsIDczLCA3OSwgMTI4LCA4MiwgNjUsIDY4LCA3MywgMjA3LCA4MiwgNjUsIDY4LCAyMDEsIDgyLCA2NSwgCi0gICAgNjgsIDEyOCwgODIsIDY1LCAxOTYsIDgyLCA2NSwgNjcsIDgxLCA4NSwgNjksIDIxMiwgODIsIDY1LCA2NywgNzMsIDc4LCAKLSAgICA3MSwgMTI4LCA4MiwgNjUsIDY3LCA3MywgNzgsIDE5OSwgODIsIDY1LCA2NiwgNjYsIDczLCA4NCwgMTI4LCA4MiwgNjUsIAotICAgIDY2LCA2NiwgNzMsIDIxMiwgODIsIDY1LCA2NiwgMTI4LCA4MiwgNjUsIDY1LCA3MywgMTI4LCA4MiwgNjUsIDUxLCAxMjgsIAotICAgIDgyLCA2NSwgNTAsIDEyOCwgODIsIDY1LCA0NSwgNTAsIDEyOCwgODIsIDQ4LCA1MCwgNTcsIDEyOCwgODIsIDQ4LCA1MCwgCi0gICAgNTYsIDEyOCwgODIsIDQ4LCA1MCwgNTUsIDEyOCwgODIsIDQ4LCA1MCwgNTQsIDEyOCwgODIsIDQ4LCA1MCwgNTMsIDEyOCwgCi0gICAgODIsIDQ4LCA1MCwgNTIsIDEyOCwgODIsIDQ4LCA1MCwgNTEsIDEyOCwgODIsIDQ4LCA1MCwgNTAsIDEyOCwgODIsIDQ4LCAKLSAgICA1MCwgNDksIDEyOCwgODIsIDQ4LCA1MCwgNDgsIDEyOCwgODIsIDQ4LCA0OSwgNTcsIDEyOCwgODIsIDQ4LCA0OSwgNTYsIAotICAgIDEyOCwgODIsIDQ4LCA0OSwgNTUsIDEyOCwgODIsIDQ4LCA0OSwgNTQsIDY1LCAxMjgsIDgyLCA0OCwgNDksIDU0LCAxMjgsIAotICAgIDgyLCA0OCwgNDksIDUzLCAxMjgsIDgyLCA0OCwgNDksIDUyLCAxMjgsIDgyLCA0OCwgNDksIDUxLCAxMjgsIDgyLCA0OCwgCi0gICAgNDksIDUwLCAxMjgsIDgyLCA0OCwgNDksIDQ5LCAxMjgsIDgyLCA0OCwgNDksIDQ4LCA2NSwgMTI4LCA4MiwgNDgsIDQ5LCAKLSAgICA0OCwgMTI4LCA4MiwgNDgsIDQ4LCA1NywgMTI4LCA4MiwgNDgsIDQ4LCA1NiwgMTI4LCA4MiwgNDgsIDQ4LCA1NSwgMTI4LCAKLSAgICA4MiwgNDgsIDQ4LCA1NCwgMTI4LCA4MiwgNDgsIDQ4LCA1MywgMTI4LCA4MiwgNDgsIDQ4LCA1MiwgMTI4LCA4MiwgNDgsIAotICAgIDQ4LCA1MSwgNjYsIDEyOCwgODIsIDQ4LCA0OCwgNTEsIDY1LCAxMjgsIDgyLCA0OCwgNDgsIDUxLCAxMjgsIDgyLCA0OCwgCi0gICAgNDgsIDUwLCA2NSwgMTI4LCA4MiwgNDgsIDQ4LCA1MCwgMTI4LCA4MiwgNDgsIDQ4LCA0OSwgMTI4LCA4MiwgNDUsIDY3LCAKLSAgICA4MiwgNjksIDE5NywgODEsIDg5LCA4OCwgMTI4LCA4MSwgODksIDg1LCAxMjgsIDgxLCA4OSwgODQsIDEyOCwgODEsIDg5LCAKLSAgICA4MiwgODgsIDEyOCwgODEsIDg5LCA4MiwgMTI4LCA4MSwgODksIDgwLCAxMjgsIDgxLCA4OSwgNzksIDEyOCwgODEsIDg5LCAKLSAgICA3MywgMTI4LCA4MSwgODksIDY5LCA2OSwgMTI4LCA4MSwgODksIDY5LCAxMjgsIDgxLCA4OSwgNjUsIDY1LCAxMjgsIDgxLCAKLSAgICA4OSwgNjUsIDEyOCwgODEsIDg5LCAxMjgsIDgxLCA4NywgNzMsIDEyOCwgODEsIDg3LCA2OSwgNjksIDEyOCwgODEsIDg3LCAKLSAgICA2OSwgMTI4LCA4MSwgODcsIDY1LCA2NSwgMTI4LCA4MSwgODcsIDY1LCAxMjgsIDgxLCA4NSwgODgsIDEyOCwgODEsIDg1LCAKLSAgICA4NiwgMTI4LCA4MSwgODUsIDg1LCA4NiwgMTI4LCA4MSwgODUsIDg1LCAxMjgsIDgxLCA4NSwgODQsIDEyOCwgODEsIDg1LCAKLSAgICA4MywgNzIsIDgzLCA3MiwgNjUsIDg5LCA2NSwgMTI4LCA4MSwgODUsIDgyLCA4OCwgMTI4LCA4MSwgODUsIDgyLCAxMjgsIAotICAgIDgxLCA4NSwgODAsIDEyOCwgODEsIDg1LCA3OSwgODgsIDEyOCwgODEsIDg1LCA3OSwgODQsIDE5NywgODEsIDg1LCA3OSwgCi0gICAgODQsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDgxLCA4NSwgNzksIDg0LCAxMjgsIDgxLCA4NSwgNzksIDgwLCAxMjgsIDgxLCAKLSAgICA4NSwgNzksIDEyOCwgODEsIDg1LCA3NSwgMTI4LCA4MSwgODUsIDczLCA3OCwgODQsIDY5LCA4MywgODMsIDY5LCA3OCwgNjcsIAotICAgIDY5LCAxMjgsIDgxLCA4NSwgNzMsIDc4LCA2OCwgNzMsIDY3LCA2OSwgODMsIDczLCA3NywgMTkzLCA4MSwgODUsIDczLCA3OCwgCi0gICAgNjcsIDg1LCA3OCwgODgsIDEyOCwgODEsIDg1LCA3MywgNzgsIDY1LCA4MiwgNzMsIDg1LCAyMTEsIDgxLCA4NSwgNzMsIDc2LCAKLSAgICAyMTIsIDgxLCA4NSwgNzMsIDc2LCA3NiwgMTI4LCA4MSwgODUsIDczLCA2NywgMjAzLCA4MSwgODUsIDczLCAxMjgsIDgxLCAKLSAgICA4NSwgNzAsIDEyOCwgODEsIDg1LCA2OSwgODMsIDg0LCA3MywgNzksIDc4LCA2OSwgMTk2LCA4MSwgODUsIDY5LCA4MywgODQsIAotICAgIDczLCA3OSwgNzgsIDEyOCwgODEsIDg1LCA2OSwgODMsIDg0LCA3MywgNzksIDIwNiwgODEsIDg1LCA2OSwgNjksIDc4LCAKLSAgICAxMjgsIDgxLCA4NSwgNjksIDY5LCAyMDYsIDgxLCA4NSwgNjksIDEyOCwgODEsIDg1LCA2NiwgODUsIDg0LCA4MywgMTI4LCAKLSAgICA4MSwgODUsIDY1LCA4NCwgNjksIDgyLCA3OCwgNzMsIDc5LCAyMDYsIDgxLCA4NSwgNjUsIDgyLCA4NCwgNjksIDgyLCA4MywgCi0gICAgMTI4LCA4MSwgODUsIDY1LCA4MiwgODQsIDY5LCA4MiwgMjExLCA4MSwgODUsIDY1LCA4MiwgODQsIDY5LCA4MiwgMTI4LCAKLSAgICA4MSwgODUsIDY1LCA3OCwgODQsIDczLCA4NCwgMjE3LCA4MSwgODUsIDY1LCA2OCwgODIsIDg1LCA4MCwgNzYsIDE5NywgODEsIAotICAgIDg1LCA2NSwgNjgsIDgyLCA2NSwgNzgsIDg0LCAxMjgsIDgxLCA4NSwgNjUsIDY4LCA4MiwgNjUsIDc4LCAyMTIsIDgxLCA4NSwgCi0gICAgNjUsIDY4LCA2NywgNzksIDc2LCA3OSwgNzgsIDEyOCwgODEsIDg1LCA2NSwgNjgsIDEyOCwgODEsIDg1LCA2NSwgMTk2LCAKLSAgICA4MSwgODUsIDY1LCAxMjgsIDgxLCA4NSwgMTI4LCA4MSwgMjA4LCA4MSwgNzksIDg4LCAxMjgsIDgxLCA3OSwgODQsIDEyOCwgCi0gICAgODEsIDc5LCA4MCwgNzIsIDEyOCwgODEsIDc5LCA4MCwgNjUsIDEyOCwgODEsIDc5LCA4MCwgMTI4LCA4MSwgNzksIDc5LCAKLSAgICAxMjgsIDgxLCA3OSwgMjA3LCA4MSwgNzksIDcwLCAxMjgsIDgxLCA3OSwgMTk4LCA4MSwgNzksIDY1LCAxMjgsIDgxLCA3OSwgCi0gICAgMTI4LCA4MSwgNzgsIDEyOCwgODEsIDczLCA4OCwgMTI4LCA4MSwgNzMsIDg0LCA4MywgNjUsIDEyOCwgODEsIDczLCA4NCwgCi0gICAgMTI4LCA4MSwgNzMsIDgwLCAxMjgsIDgxLCA3MywgNzMsIDEyOCwgODEsIDczLCA2OSwgODgsIDEyOCwgODEsIDczLCA2OSwgCi0gICAgODQsIDEyOCwgODEsIDczLCA2OSwgODAsIDEyOCwgODEsIDczLCA2OSwgMTI4LCA4MSwgNzMsIDEyOCwgODEsIDcyLCA4NywgCi0gICAgNzMsIDEyOCwgODEsIDcyLCA4NywgNjksIDY5LCAxMjgsIDgxLCA3MiwgODcsIDY5LCAxMjgsIDgxLCA3MiwgODcsIDY1LCAKLSAgICA2NSwgMTI4LCA4MSwgNzIsIDg3LCA2NSwgMTI4LCA4MSwgNzIsIDg1LCAxMjgsIDgxLCA3MiwgNzksIDgwLCA3MiwgMTI4LCAKLSAgICA4MSwgNzIsIDc5LCAxMjgsIDgxLCA3MiwgNzMsIDEyOCwgODEsIDcyLCA2OSwgNjksIDEyOCwgODEsIDcyLCA2OSwgMTI4LCAKLSAgICA4MSwgNzIsIDY1LCA4NSwgMTI4LCA4MSwgNzIsIDY1LCA2NSwgMTI4LCA4MSwgNzIsIDY1LCAxMjgsIDgxLCA3MSwgNjUsIAotICAgIDEyOCwgODEsIDY5LCA4NCwgNjUsIDc4LCA2NSwgMTI4LCA4MSwgNjksIDY5LCAxMjgsIDgxLCA2OSwgMTI4LCA4MSwgNjUsIAotICAgIDg5LCAxMjgsIDgxLCA2NSwgODUsIDEyOCwgODEsIDY1LCA4NCwgNjUsIDc4LCAxMjgsIDgxLCA2NSwgODIsIDc4LCA2OSwgCi0gICAgMjE3LCA4MSwgNjUsIDgyLCAxMjgsIDgxLCA2NSwgODEsIDEyOCwgODEsIDY1LCA4MCwgNzIsIDEyOCwgODEsIDY1LCA3NywgCi0gICAgNjUsIDg0LCA4MywgMTI4LCA4MSwgNjUsIDc3LCA2NSwgODQsIDIxMSwgODEsIDY1LCA3NiwgMTkzLCA4MSwgNjUsIDczLCAKLSAgICA4MiwgODQsIDcyLCA4MiwgNjUsIDEyOCwgODEsIDY1LCA3MywgMTI4LCA4MSwgNjUsIDcwLCAxMjgsIDgxLCA2NSwgMTk4LCAKLSAgICA4MSwgNjUsIDY4LCA3NywgNjUsIDEyOCwgODEsIDY1LCA2NSwgNzMsIDEyOCwgODEsIDY1LCA2NSwgNzAsIDg1LCAxMjgsIAotICAgIDgxLCA2NSwgNjUsIDcwLCAxMjgsIDgxLCA0OCwgNDgsIDU1LCAxMjgsIDgxLCA0OCwgNDgsIDU0LCAxMjgsIDgxLCA0OCwgCi0gICAgNDgsIDUzLCAxMjgsIDgxLCA0OCwgNDgsIDUyLCAxMjgsIDgxLCA0OCwgNDgsIDUxLCAxMjgsIDgxLCA0OCwgNDgsIDUwLCAKLSAgICAxMjgsIDgxLCA0OCwgNDgsIDQ5LCAxMjgsIDgwLCA5MCwgMTI4LCA4MCwgODksIDg4LCAxMjgsIDgwLCA4OSwgODQsIDEyOCwgCi0gICAgODAsIDg5LCA4MiwgODgsIDEyOCwgODAsIDg5LCA4MiwgMTI4LCA4MCwgODksIDgwLCAxMjgsIDgwLCA4NywgNzksIDg5LCAKLSAgICAxMjgsIDgwLCA4NywgNzksIDc5LCAxMjgsIDgwLCA4NywgNzksIDEyOCwgODAsIDg3LCAyMDcsIDgwLCA4NywgNzMsIDczLCAKLSAgICAxMjgsIDgwLCA4NywgNzMsIDEyOCwgODAsIDg3LCA2OSwgNjksIDEyOCwgODAsIDg3LCA2OSwgMTI4LCA4MCwgODcsIDY1LCAKLSAgICA2NSwgMTI4LCA4MCwgODcsIDEyOCwgODAsIDg2LCAxMjgsIDgwLCA4NSwgODgsIDEyOCwgODAsIDg1LCA4NSwgODQsIDEyOCwgCi0gICAgODAsIDg1LCA4NSwgMTI4LCA4MCwgODUsIDg0LCA4MiwgNjksIDcwLCA2NSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCAKLSAgICA4NSwgODQsIDEyOCwgODAsIDg1LCAyMTIsIDgwLCA4NSwgODMsIDcyLCA4MCwgNzMsIDc4LCAxMjgsIDgwLCA4NSwgODMsIAotICAgIDcyLCA4MCwgNzMsIDc1LCA2NSwgMTI4LCA4MCwgODUsIDgzLCA3MiwgNzMsIDc4LCAxOTksIDgwLCA4NSwgODIsIDg4LCAKLSAgICAxMjgsIDgwLCA4NSwgODIsIDgzLCA2OSwgMTI4LCA4MCwgODUsIDgyLCA4MCwgNzYsIDE5NywgODAsIDg1LCA4MiwgNzgsIAotICAgIDY1LCA3NywgNjUsIDEyOCwgODAsIDg1LCA4MiwgNzMsIDg0LCA4OSwgMTI4LCA4MCwgODUsIDgyLCA3MywgNzAsIDg5LCAKLSAgICAxMjgsIDgwLCA4NSwgODIsIDEyOCwgODAsIDg1LCA4MSwgMTI4LCA4MCwgODUsIDgwLCAxMjgsIDgwLCA4NSwgNzksIDg4LCAKLSAgICAxMjgsIDgwLCA4NSwgNzksIDgwLCAxMjgsIDgwLCA4NSwgNzksIDEyOCwgODAsIDg1LCA3OCwgNzEsIDY1LCA2NSwgNzcsIAotICAgIDEyOCwgODAsIDg1LCA3OCwgNzEsIDEyOCwgODAsIDg1LCA3OCwgNjcsIDg0LCA4NSwgNjUsIDg0LCA3MywgNzksIDc4LCAKLSAgICAxMjgsIDgwLCA4NSwgNzgsIDY3LCA4NCwgODUsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDgwLCA4NSwgNzcsIDgwLCAxMjgsIAotICAgIDgwLCA4NSwgNzcsIDEyOCwgODAsIDg1LCA3MCwgNzAsIDY5LCA2OCwgMTI4LCA4MCwgODUsIDY5LCAxMjgsIDgwLCA4NSwgCi0gICAgNjcsIDc1LCAxMjgsIDgwLCA4NSwgNjYsIDc2LCA3MywgMTk1LCA4MCwgODUsIDE5NCwgODAsIDg1LCA2NSwgODEsIDEyOCwgCi0gICAgODAsIDg1LCA2NSwgNjksIDEyOCwgODAsIDg1LCA1MCwgMTI4LCA4MCwgODUsIDQ5LCAxMjgsIDgwLCA4NSwgMTI4LCA4MCwgCi0gICAgODQsIDcyLCA2NSwgNzIsIDE5MywgODAsIDg0LCA2OSwgMTI4LCA4MCwgODMsIDczLCA3NiwgMjAxLCA4MCwgODMsIDczLCAKLSAgICA3MCwgNzMsIDgzLCA4NCwgNzksIDgzLCA4OSwgNzgsIDY1LCA3MSwgNzcsIDY1LCAxMjgsIDgwLCA4MywgNzMsIDcwLCA3MywgCi0gICAgODMsIDg0LCA3OSwgODAsIDY1LCA4MiwgNjUsIDc1LCA2NSwgNzYsIDY5LCA4MywgNzcsIDY1LCAxMjgsIDgwLCA4MywgNzMsIAotICAgIDcwLCA3MywgODMsIDg0LCA3OSwgMjA2LCA4MCwgODMsIDczLCA3MCwgNzMsIDgzLCA4NCwgNzksIDc2LCA4OSwgNzEsIDczLCAKLSAgICA4MywgNzcsIDY1LCAxMjgsIDgwLCA4MywgNzMsIDEyOCwgODAsIDgzLCA2NSwgNzYsIDg0LCA2OSwgMjEwLCA4MCwgODMsIAotICAgIDEyOCwgODAsIDgyLCA3OSwgODYsIDY5LCAxMjgsIDgwLCA4MiwgNzksIDg0LCA3OSwgODYsIDY1LCA4MiwgODksIDIxMSwgCi0gICAgODAsIDgyLCA3OSwgODQsIDc5LCAyMTEsIDgwLCA4MiwgNzksIDg0LCA2OSwgNjcsIDg0LCA2OSwgMTk2LCA4MCwgODIsIDc5LCAKLSAgICA4MywgNzEsIDY5LCA3MSwgODIsIDY1LCA3NywgNzcsIDY5LCA3OCwgNzMsIDEyOCwgODAsIDgyLCA3OSwgODAsIDc5LCA4MiwgCi0gICAgODQsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDgwLCA4MiwgNzksIDgwLCA3OSwgODIsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCAKLSAgICA4MiwgNzksIDgwLCA2OSwgODIsIDg0LCAyMTcsIDgwLCA4MiwgNzksIDgwLCA2OSwgNzYsIDc2LCA2OSwgMjEwLCA4MCwgODIsIAotICAgIDc5LCA3OSwgNzAsIDEyOCwgODAsIDgyLCA3OSwgNzYsIDc5LCA3OCwgNzEsIDY5LCAxOTYsIDgwLCA4MiwgNzksIDc2LCA2NSwgCi0gICAgODQsIDczLCA3OSwgNzgsIDE5NywgODAsIDgyLCA3OSwgNzQsIDY5LCA2NywgODQsIDc5LCA4MiwgMTI4LCA4MCwgODIsIDc5LCAKLSAgICA3NCwgNjksIDY3LCA4NCwgNzMsIDg2LCA2OSwgMTI4LCA4MCwgODIsIDc5LCA3NCwgNjksIDY3LCA4NCwgNzMsIDc5LCA3OCwgCi0gICAgMTI4LCA4MCwgODIsIDc5LCA3MiwgNzMsIDY2LCA3MywgODQsIDY5LCAxOTYsIDgwLCA4MiwgNzksIDcxLCA4MiwgNjksIDgzLCAKLSAgICA4MywgMTI4LCA4MCwgODIsIDc5LCA3MSwgODIsIDY1LCAyMDUsIDgwLCA4MiwgNzksIDcwLCA3OSwgODUsIDc4LCA2OCwgCi0gICAgMTI4LCA4MCwgODIsIDc5LCA2OCwgODUsIDY3LCA4NCwgMTI4LCA4MCwgODIsIDc5LCA2OCwgODUsIDY3LCAyMTIsIDgwLCAKLSAgICA4MiwgNzMsIDg2LCA2NSwgODQsIDY5LCAxMjgsIDgwLCA4MiwgNzMsIDg2LCA2NSwgODQsIDE5NywgODAsIDgyLCA3MywgODYsIAotICAgIDY1LCA2NywgMjE3LCA4MCwgODIsIDczLCA4MywgNzIsIDg0LCA3MiwgNjUsIDc3LCA2NSwgODQsIDgyLCAxOTMsIDgwLCA4MiwgCi0gICAgNzMsIDc4LCA4NCwgODMsIDEyOCwgODAsIDgyLCA3MywgNzgsIDg0LCA2OSwgODIsIDEyOCwgODAsIDgyLCA3MywgNzgsIDg0LCAKLSAgICA2OSwgMjEwLCA4MCwgODIsIDczLCA3OCwgODQsIDEyOCwgODAsIDgyLCA3MywgNzgsIDIxMiwgODAsIDgyLCA3MywgNzgsIAotICAgIDY3LCA2OSwgODMsIDgzLCAxMjgsIDgwLCA4MiwgNzMsIDc3LCA2OSwgMTI4LCA4MCwgODIsIDczLCA3NywgMTk3LCA4MCwgCi0gICAgODIsIDY5LCA4NiwgNzMsIDc5LCA4NSwgMjExLCA4MCwgODIsIDY5LCA4MywgODMsIDY5LCAxOTYsIDgwLCA4MiwgNjksIDgzLCAKLSAgICA2OSwgODQsIDEyOCwgODAsIDgyLCA2OSwgODMsIDY5LCA3OCwgODQsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDgwLCA4MiwgNjksIAotICAgIDgzLCA2NywgODIsIDczLCA4MCwgODQsIDczLCA3OSwgMjA2LCA4MCwgODIsIDY5LCA4MCwgNzksIDc4LCA2OCwgNjksIDgyLCAKLSAgICA2NSwgNzgsIDY3LCA2OSwgMTI4LCA4MCwgODIsIDY5LCA3OCwgNzUsIDcyLCA2NSwgMTI4LCA4MCwgODIsIDY5LCA3MCwgNjUsIAotICAgIDY3LCAxOTcsIDgwLCA4MiwgNjksIDY3LCA3MywgODAsIDczLCA4NCwgNjUsIDg0LCA2OSwgMTI4LCA4MCwgODIsIDY5LCA2NywgCi0gICAgNjksIDY4LCA3MywgNzgsIDE5OSwgODAsIDgyLCA2OSwgNjcsIDY5LCA2OCwgNjksIDgzLCAxMjgsIDgwLCA4MiwgNjksIDY3LCAKLSAgICA2OSwgNjgsIDY5LCAyMTEsIDgwLCA4MiwgNjksIDY3LCA2OSwgNjgsIDY5LCAxOTYsIDgwLCA4MiwgNjksIDY3LCA2OSwgNjgsIAotICAgIDY5LCAxMjgsIDgwLCA4MiwgNjksIDY3LCA2OSwgNjgsIDE5NywgODAsIDgyLCA2NSwgODksIDY5LCAyMTAsIDgwLCA4MiwgCi0gICAgNjUsIDc3LCA0NSwgODAsIDczLCA3MywgMTI4LCA4MCwgODIsIDY1LCA3NywgNDUsIDgwLCA3MywgMjAxLCA4MCwgODIsIDY1LCAKLSAgICA3NywgNDUsIDc3LCA4NSwgNzksIDg5LCAxMjgsIDgwLCA4MiwgNjUsIDc3LCA0NSwgNzcsIDg1LCA3OSwgMjE3LCA4MCwgODIsIAotICAgIDY1LCA3NywgNDUsIDY2LCA4NSwgNzksIDc4LCAxMjgsIDgwLCA4MiwgNjUsIDc3LCA0NSwgNjYsIDg1LCA3OSwgMjA2LCA4MCwgCi0gICAgODIsIDY1LCA3NywgNDUsIDY2LCA2OSwgNzMsIDEyOCwgODAsIDgyLCA2NSwgNzcsIDQ1LCA2NiwgNjksIDIwMSwgODAsIDgyLCAKLSAgICA2NSwgNzcsIDEyOCwgODAsIDgyLCA2NSwgMjA1LCA4MCwgODIsIDEyOCwgODAsIDgwLCA4NiwgMTI4LCA4MCwgODAsIDc3LCAKLSAgICAxMjgsIDgwLCA4MCwgNjUsIDEyOCwgODAsIDc5LCA4OSwgMTI4LCA4MCwgNzksIDg4LCAxMjgsIDgwLCA3OSwgODcsIDY5LCAKLSAgICA4MiwgMjExLCA4MCwgNzksIDg3LCA2OSwgODIsIDEyOCwgODAsIDc5LCA4NywgNjgsIDY5LCA4MiwgNjksIDE5NiwgODAsIAotICAgIDc5LCA4NywgNjgsIDY5LCA4MiwgMTI4LCA4MCwgNzksIDg1LCA3OCwgMTk2LCA4MCwgNzksIDg1LCA3NiwgODQsIDgyLCAKLSAgICAyMTcsIDgwLCA3OSwgODUsIDY3LCA3MiwgMTI4LCA4MCwgNzksIDg0LCA2NSwgODQsIDc5LCAxMjgsIDgwLCA3OSwgODQsIAotICAgIDY1LCA2NiwgNzYsIDE5NywgODAsIDc5LCAyMTIsIDgwLCA3OSwgODMsIDg0LCA4MCwgNzksIDgzLCA3MywgODQsIDczLCA3OSwgCi0gICAgMjA2LCA4MCwgNzksIDgzLCA4NCwgNjYsIDc5LCA4OCwgMTI4LCA4MCwgNzksIDgzLCA4NCwgNjUsIDIwNCwgODAsIDc5LCAKLSAgICA4MywgODQsIDEyOCwgODAsIDc5LCA4MywgMjEyLCA4MCwgNzksIDgzLCA4MywgNjksIDgzLCA4MywgNzMsIDc5LCA3OCwgCi0gICAgMTI4LCA4MCwgNzksIDgzLCA3MywgODQsIDczLCA3OSwgNzgsIDgzLCAxMjgsIDgwLCA3OSwgODIsIDg0LCA2NSwgNjYsIDc2LCAKLSAgICAxOTcsIDgwLCA3OSwgODIsIDgyLCA2OSwgNjcsIDg0LCA4NSwgODMsIDEyOCwgODAsIDc5LCA4MiwgODIsIDY5LCA2NywgODQsIAotICAgIDg1LCAyMTEsIDgwLCA3OSwgODAsIDgwLCA3MywgNzgsIDE5OSwgODAsIDc5LCA4MCwgODAsIDY5LCA4MiwgMTI4LCA4MCwgCi0gICAgNzksIDgwLCA2NywgNzksIDgyLCA3OCwgMTI4LCA4MCwgNzksIDgwLCAxMjgsIDgwLCA3OSwgMjA4LCA4MCwgNzksIDc5LCAKLSAgICA2OCwgNzYsIDY5LCAxMjgsIDgwLCA3OSwgNzksIDEyOCwgODAsIDc5LCA3OCwgNjgsIDc5LCAxMjgsIDgwLCA3OSwgMjA2LCAKLSAgICA4MCwgNzksIDc3LCA3NywgNjksIDY5LCAxMjgsIDgwLCA3OSwgNzcsIDc3LCA2OSwgMTk3LCA4MCwgNzksIDc2LCA3MywgODMsIAorICAgIDcyLCA2NSwgODIsIDgwLCAxMjgsIDgzLCA3MiwgNjUsIDgyLCAyMDgsIDgzLCA3MiwgNjUsIDgyLCA3NSwgMTI4LCA4MywgCisgICAgNzIsIDY1LCA4MiwgNjUsIDEyOCwgODMsIDcyLCA2NSwgODIsIDUwLCAxMjgsIDgzLCA3MiwgNjUsIDgyLCAxNzgsIDgzLCAKKyAgICA3MiwgNjUsIDgwLCA3MywgNzgsIDcxLCAxMjgsIDgzLCA3MiwgNjUsIDgwLCA2OSwgODMsIDEyOCwgODMsIDcyLCA2NSwgODAsIAorICAgIDE5NywgODMsIDcyLCA2NSwgODAsIDEyOCwgODMsIDcyLCA2NSwgNzgsIDcxLCAxMjgsIDgzLCA3MiwgNjUsIDc4LCAxMjgsIAorICAgIDgzLCA3MiwgNjUsIDIwNiwgODMsIDcyLCA2NSwgNzcsIDgyLCA3OSwgNjcsIDc1LCAxMjgsIDgzLCA3MiwgNjUsIDc2LCA4MywgCisgICAgNzIsIDY5LCA3NiwgNjksIDg0LCAxMjgsIDgzLCA3MiwgNjUsIDc2LCA3NiwgNzksIDIxNSwgODMsIDcyLCA2NSwgNzUsIDg0LCAKKyAgICA3MywgMTI4LCA4MywgNzIsIDY1LCA3NSwgNzMsIDc4LCA3MSwgMTI4LCA4MywgNzIsIDY1LCA3NSwgNzMsIDc4LCAxOTksIAorICAgIDgzLCA3MiwgNjUsIDc1LCAxMjgsIDgzLCA3MiwgNjUsIDczLCAxMjgsIDgzLCA3MiwgNjUsIDcwLCA4NCwgMTI4LCA4MywgCisgICAgNzIsIDY1LCA3MCwgMjEyLCA4MywgNzIsIDY1LCA2OCwgNzksIDg3LCA2OSwgMTk2LCA4MywgNzIsIDY1LCA2OCwgNjksIAorICAgIDE5NiwgODMsIDcyLCA2NSwgNjgsIDY5LCAxMjgsIDgzLCA3MiwgNjUsIDY4LCA2OCwgNjUsIDEyOCwgODMsIDcyLCA2NSwgCisgICAgNjgsIDY4LCAxOTMsIDgzLCA3MiwgNjUsIDY4LCAxMjgsIDgzLCA3MiwgNjUsIDE5NiwgODMsIDcyLCA2NSwgNjYsIDU0LCAKKyAgICAxMjgsIDgzLCA3MiwgNjUsIDY1LCAxMjgsIDgzLCA3MiwgNjUsIDU0LCAxMjgsIDgzLCA3MiwgNjUsIDE4MiwgODMsIDcyLCAKKyAgICA2NSwgNTEsIDEyOCwgODMsIDcyLCA2NSwgMTc5LCA4MywgNzEsIDgyLCAxOTMsIDgzLCA3MSwgNzksIDIxMCwgODMsIDcxLCAKKyAgICA2NywgMTI4LCA4MywgNzEsIDY1LCAyMTUsIDgzLCA3MSwgNjUsIDE5NCwgODMsIDcxLCAxMjgsIDgzLCA2OSwgODksIDc1LCAKKyAgICAxMjgsIDgzLCA2OSwgODgsIDg0LCA4NSwgNzYsIDE5MywgODMsIDY5LCA4OCwgODQsIDczLCA3NiwgNjksIDEyOCwgODMsIAorICAgIDY5LCA4OCwgODQsIDY1LCA3OCwgMjExLCA4MywgNjksIDg2LCA2OSwgODIsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDgzLCA2OSwgCisgICAgODYsIDY5LCA3OCwgODQsIDg5LCAxMjgsIDgzLCA2OSwgODYsIDY5LCA3OCwgODQsIDIxNywgODMsIDY5LCA4NiwgNjksIDc4LCAKKyAgICA4NCwgNzIsIDEyOCwgODMsIDY5LCA4NiwgNjksIDc4LCA4NCwgNjksIDY5LCA3OCwgMTI4LCA4MywgNjksIDg2LCA2OSwgNzgsIAorICAgIDg0LCA2OSwgNjksIDIwNiwgODMsIDY5LCA4NiwgNjksIDc4LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA4MywgCisgICAgNjksIDg2LCA2OSwgMjA2LCA4MywgNjksIDg1LCA4OCwgMTI4LCA4MywgNjksIDg1LCA3OCwgODksIDY1LCA3NywgMTI4LCAKKyAgICA4MywgNjksIDg1LCA2NSwgNjksIDgxLCAxMjgsIDgzLCA2OSwgODQsIDcwLCA3OSwgNzgsIDEyOCwgODMsIDY5LCA4MywgODQsIAorICAgIDY5LCA4MiwgODQsIDczLCA4NSwgMjExLCA4MywgNjksIDgzLCA4MSwgODUsIDczLCA4MSwgODUsIDY1LCA2OCwgODIsIDY1LCAKKyAgICA4NCwgNjksIDEyOCwgODMsIDY5LCA4MywgNjUsIDc3LCAxOTcsIDgzLCA2OSwgODIsIDg2LCA3MywgNjcsIDE5NywgODMsIAorICAgIDY5LCA4MiwgNzMsIDcwLCA4MywgMTI4LCA4MywgNjksIDgyLCA3MywgNzAsIDIxMSwgODMsIDY5LCA4MiwgNzMsIDcwLCAKKyAgICAxMjgsIDgzLCA2OSwgODEsIDg1LCA2OSwgNzgsIDg0LCA3MywgNjUsIDc2LCAxMjgsIDgzLCA2OSwgODEsIDg1LCA2OSwgNzgsIAorICAgIDY3LCAxOTcsIDgzLCA2OSwgODAsIDg0LCA4NSwgODAsIDc2LCAxOTcsIDgzLCA2OSwgODAsIDg0LCA2OSwgNzcsIDY2LCA2OSwgCisgICAgODIsIDEyOCwgODMsIDY5LCA4MCwgNjUsIDgyLCA2NSwgODQsIDc5LCA4MiwgMTI4LCA4MywgNjksIDgwLCA2NSwgODIsIDY1LCAKKyAgICA4NCwgNzksIDIxMCwgODMsIDY5LCA3OCwgODQsIDc5LCAxMjgsIDgzLCA2OSwgNzgsIDg0LCA3MywgMTI4LCA4MywgNjksIAorICAgIDc3LCA4NSwgNzgsIDY3LCA3MywgMTkzLCA4MywgNjksIDc3LCA3NSwgNjUsIDg0LCA3MiwgMTI4LCA4MywgNjksIDc3LCA3NSwgCisgICAgMTI4LCA4MywgNjksIDc3LCA3MywgODYsIDc5LCA4NywgNjksIDIwNCwgODMsIDY5LCA3NywgNzMsIDgzLCA3OSwgNzAsIAorICAgIDIxMiwgODMsIDY5LCA3NywgNzMsIDgzLCA2OSwgODgsIDg0LCA3MywgNzYsIDY5LCAxMjgsIDgzLCA2OSwgNzcsIDczLCA3NywgCisgICAgNzMsIDc4LCA3MywgNzcsIDE5MywgODMsIDY5LCA3NywgNzMsIDY4LCA3MywgODIsIDY5LCA2NywgMjEyLCA4MywgNjksIDc3LCAKKyAgICA3MywgNjcsIDc5LCA3NiwgNzksIDc4LCAxMjgsIDgzLCA2OSwgNzcsIDczLCA2NywgNzksIDc2LCA3OSwgMjA2LCA4MywgNjksIAorICAgIDc3LCA3MywgNjcsIDczLCA4MiwgNjcsIDg1LCA3NiwgNjUsIDIxMCwgODMsIDY5LCA3NywgNzMsIDY3LCA3MywgODIsIDY3LCAKKyAgICA3NiwgMTk3LCA4MywgNjksIDc3LCA3MywgNjYsIDgyLCA2OSwgODYsIDczLCAyMTEsIDgzLCA2OSwgNzcsIDczLCA0NSwgODYsIAorICAgIDc5LCA3MywgNjcsIDY5LCAxOTYsIDgzLCA2OSwgNzYsIDcwLCA3MywgNjksIDEyOCwgODMsIDY5LCA3NiwgNzAsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDU3LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTUsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDU3LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTIsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDU3LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNDksIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1NywgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNTYsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1NCwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNTYsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1MSwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNTYsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA0OCwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA1NSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDU2LCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA1NSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDUzLCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA1NSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDUwLCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA1NSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDU0LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDU0LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDU0LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNDksIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIAorICAgIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIAorICAgIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIAorICAgIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTcsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDUyLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTQsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDUyLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTEsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDUyLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNDgsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTEsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1NiwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTEsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1MywgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTEsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1MCwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTEsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA1MCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDU1LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA1MCwgNTMsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNTMsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDUwLCA1MywgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA0OSwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDUwLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDU3LCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1MCwgNTIsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTMsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1MCwgNTIsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgCisgICAgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA0OSwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDUwLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDU3LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTAsIDUxLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIAorICAgIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA1MCwgNTEsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTAsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCAKKyAgICA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTAsIDUwLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDU0LCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgCisgICAgNTAsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTAsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA1MCwgNTAsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIAorICAgIDQ5LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDU0LCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNTAsIDQ5LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDUxLCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1MCwgNDksIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDUwLCA0OCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1NSwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTAsIDQ4LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDUxLCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTAsIDQ4LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIAorICAgIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIAorICAgIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTYsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA0OSwgNTcsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTMsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKKyAgICA1NywgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA0OSwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDQ5LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDU3LCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCisgICAgNTYsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTMsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA0OSwgNTYsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTAsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDQ5LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDU3LCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNDksIDU1LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDU0LCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA0OSwgNTUsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTAsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA0OSwgNTUsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNDksIDU0LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDU0LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNDksIDU0LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIAorICAgIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA0OSwgNTQsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCAKKyAgICA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNDksIDUzLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDUxLCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCisgICAgNTMsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDQ5LCA1MiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1NSwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAorICAgIDUyLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDUxLCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNDksIDUyLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDQ4LCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKKyAgICA1MSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1NSwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDQ5LCA1MSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1MiwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNDksIDUxLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDQ4LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA0OSwgNTAsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTYsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDQ5LCA1MCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1MiwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCAKKyAgICA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA0OSwgNDksIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTYsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA0OSwgNDksIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgCisgICAgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1MiwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDQ5LCA0OSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA0OSwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIAorICAgIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA0OSwgNDgsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTMsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKKyAgICA0OCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA0OSwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDQ5LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDIxMCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNjksIDE5NiwgODMsIDY5LCA3MywgODMsIDc3LCA2NSwgMTI4LCA4MywgNjksIDczLCA4MywgNzcsIAorICAgIDE5MywgODMsIDY5LCA3MiwgMTI4LCA4MywgNjksIDcxLCA3OSwgNzYsIDEyOCwgODMsIDY5LCA3MSwgNzgsIDc5LCAxMjgsIAorICAgIDgzLCA2OSwgNzEsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDgzLCA2OSwgNjksIDg2LCAxMjgsIDgzLCA2OSwgNjksIDc4LCA4NSwgCisgICAgMTI4LCA4MywgNjksIDY5LCA3OCwgMTI4LCA4MywgNjksIDY5LCAyMDYsIDgzLCA2OSwgNjksIDY4LCA3NiwgNzMsIDc4LCAKKyAgICA3MSwgMTI4LCA4MywgNjksIDY5LCA0NSwgNzgsIDc5LCA0NSwgNjksIDg2LCA3MywgMjA0LCA4MywgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCAxMjgsIDgzLCA2OSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgzLCA2OSwgNjcsIDg0LCA3MywgNzksIDIwNiwgCisgICAgODMsIDY5LCA2NywgODIsIDY5LCA4NCwgMTI4LCA4MywgNjksIDY3LCA3OSwgNzgsIDY4LCAxMjgsIDgzLCA2OSwgNjcsIDY1LCAKKyAgICA3OCwgODQsIDEyOCwgODMsIDY5LCA2NiwgNjUsIDg0LCA2NiwgNjksIDczLCAyMTIsIDgzLCA2OSwgNjUsIDg0LCAxMjgsIAorICAgIDgzLCA2OSwgNjUsIDc2LCAxMjgsIDgzLCA2OSwgNjUsIDcxLCA4NSwgNzYsIDIwNCwgODMsIDY4LCA3OSwgNzgsIDE5OSwgCisgICAgODMsIDY4LCAxMjgsIDgzLCA2NywgODcsIDY1LCAxMjgsIDgzLCA2NywgODIsIDg1LCA4MCwgNzYsIDY5LCAxMjgsIDgzLCAKKyAgICA2NywgODIsIDc5LCA3NiwgNzYsIDEyOCwgODMsIDY3LCA4MiwgNzMsIDgwLCA4NCwgMTI4LCA4MywgNjcsIDgyLCA2OSwgNjksIAorICAgIDc4LCAxMjgsIDgzLCA2NywgODIsIDY5LCA2OSwgMjA2LCA4MywgNjcsIDgyLCA2OSwgNjUsIDc3LCA3MywgNzgsIDE5OSwgCisgICAgODMsIDY3LCA3OSwgODIsIDgwLCA3MywgODUsIDgzLCAxMjgsIDgzLCA2NywgNzksIDgyLCA4MCwgNzMsIDc5LCA3OCwgMTI4LCAKKyAgICA4MywgNjcsIDc5LCA4MiwgNjksIDEyOCwgODMsIDY3LCA3OSwgNzksIDg0LCA2OSwgODIsIDEyOCwgODMsIDY3LCA3MywgODMsIAorICAgIDgzLCA3OSwgODIsIDgzLCAxMjgsIDgzLCA2NywgNzMsIDEyOCwgODMsIDY3LCA3MiwgODcsIDY1LCAxMjgsIDgzLCA2NywgCisgICAgNzIsIDg3LCAxOTMsIDgzLCA2NywgNzIsIDgyLCA3OSwgNjksIDY4LCA2OSwgODIsIDEyOCwgODMsIDY3LCA3MiwgNzksIDc5LCAKKyAgICA3NiwgMTI4LCA4MywgNjcsIDcyLCA3OSwgNzksIDIwNCwgODMsIDY3LCA3MiwgNzksIDc2LCA2NSwgODIsIDEyOCwgODMsIAorICAgIDY3LCA3MiwgNjksIDc3LCAxOTMsIDgzLCA2NywgNjksIDgwLCA4NCwgNjksIDIxMCwgODMsIDY3LCA2NSwgNzgsIDY4LCA3MywgCisgICAgNjcsIDg1LCA4MywgMTI4LCA4MywgNjcsIDY1LCA3OCwgNjgsIDczLCA2NywgODUsIDIxMSwgODMsIDY3LCA2NSwgMjA2LCAKKyAgICA4MywgNjcsIDY1LCA3NiwgNjksIDgzLCAxMjgsIDgzLCA2NiwgODUsIDE5NCwgODMsIDY2LCA4MiwgODUsIDIwNCwgODMsIAorICAgIDY1LCA4OSwgNzMsIDgzLCAyMDEsIDgzLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDgzLCA2NSwgODksIDEyOCwgCisgICAgODMsIDY1LCA4OCwgNzksIDgwLCA3MiwgNzksIDc4LCA2OSwgMTI4LCA4MywgNjUsIDg4LCA3MywgNzcsIDY1LCA4NCwgNjUsIAorICAgIDEyOCwgODMsIDY1LCA4NywgNjUsIDc4LCAxMjgsIDgzLCA2NSwgODcsIDEyOCwgODMsIDY1LCA4NiwgNzksIDg1LCA4MiwgCisgICAgNzMsIDc4LCAxOTksIDgzLCA2NSwgODUsIDgyLCA2NSwgODMsIDcyLCA4NCwgODIsIDE5MywgODMsIDY1LCA4NSwgNzMsIDc2LCAKKyAgICAxMjgsIDgzLCA2NSwgODQsIDg1LCA4MiwgNzgsIDEyOCwgODMsIDY1LCA4NCwgNzUsIDY1LCA2NSwgNzgsIDc1LCA4NSwgODUsIAorICAgIDEyOCwgODMsIDY1LCA4NCwgNzUsIDY1LCA2NSwgNzgsIDEyOCwgODMsIDY1LCA4NCwgNjksIDc2LCA3NiwgNzMsIDg0LCA2OSwgCisgICAgMTI4LCA4MywgNjUsIDg0LCA2OSwgNzYsIDc2LCA3MywgODQsIDE5NywgODMsIDY1LCA4NCwgNjcsIDcyLCA2OSwgNzYsIAorICAgIDEyOCwgODMsIDY1LCA4NCwgNjUsIDc4LCA3MSwgNjUsIDEyOCwgODMsIDY1LCA4MywgNzIsIDEyOCwgODMsIDY1LCA4MywgCisgICAgNjUsIDc1LCAxMjgsIDgzLCA2NSwgODIsIDczLCAxMjgsIDgzLCA2NSwgODIsIDE5MywgODMsIDY1LCA4MiwgMTI4LCA4MywgCisgICAgNjUsIDgxLCAxMjgsIDgzLCA2NSwgODAsIDY1LCAxMjgsIDgzLCA2NSwgNzgsIDg5LCA3OSwgNzksIDcxLCAxOTMsIDgzLCAKKyAgICA2NSwgNzgsIDg5LCA2NSwgNzUsIDE5MywgODMsIDY1LCA3OCwgODQsIDczLCA3MywgNzcsIDg1LCAxMjgsIDgzLCA2NSwgNzgsIAorICAgIDc4LCA4OSwgNjUsIDEyOCwgODMsIDY1LCA3OCwgNzEsIDY1LCA1MCwgMTI4LCA4MywgNjUsIDc4LCA2OCwgNzIsIDIwMSwgCisgICAgODMsIDY1LCA3OCwgNjgsIDY1LCA3NiwgMTI4LCA4MywgNjUsIDc4LCA2NSwgNzIsIDEyOCwgODMsIDY1LCA3OCwgMTI4LCAKKyAgICA4MywgNjUsIDc3LCA4OSwgNzksIDIwMywgODMsIDY1LCA3NywgODYsIDY1LCA4NCwgMTI4LCA4MywgNjUsIDc3LCA4MCwgNzMsIAorICAgIDEyOCwgODMsIDY1LCA3NywgODAsIDcyLCA2NSwgNzksIDEyOCwgODMsIDY1LCA3NywgNzUsIDY1LCAxMjgsIDgzLCA2NSwgCisgICAgNzcsIDY5LCA3NSwgNzIsIDEyOCwgODMsIDY1LCA3NywgNjksIDc1LCAyMDAsIDgzLCA2NSwgNzcsIDY2LCA2NSwgMTI4LCAKKyAgICA4MywgNjUsIDc3LCA2NSwgODIsIDczLCA4NCwgNjUsIDIwNiwgODMsIDY1LCA3NywgMTI4LCA4MywgNjUsIDc2LCA4NCwgNzMsIAorICAgIDgyLCA2OSwgMTI4LCA4MywgNjUsIDc2LCA4NCwgNzMsIDc2LCA3NiwgNzksIDEyOCwgODMsIDY1LCA3NiwgODQsIDQ1LCA1MCwgCisgICAgMTI4LCA4MywgNjUsIDc2LCA4NCwgMTI4LCA4MywgNjUsIDc2LCAyMTIsIDgzLCA2NSwgNzYsIDc2LCA2NSwgNzYsIDc2LCAKKyAgICA2NSwgNzIsIDc5LCAyMTMsIDgzLCA2NSwgNzYsIDc2LCAxOTMsIDgzLCA2NSwgNzYsIDY1LCAyMDUsIDgzLCA2NSwgNzYsIAorICAgIDY1LCA2OCwgMTI4LCA4MywgNjUsIDc2LCA2NSwgMTI4LCA4MywgNjUsIDc2LCA0NSwgNjUsIDc3LCA3NywgNzksIDc4LCA3MywgCisgICAgNjUsIDY3LCAxMjgsIDgzLCA2NSwgNzYsIDEyOCwgODMsIDY1LCA3NSwgODQsIDY1LCAxMjgsIDgzLCA2NSwgNzUsIDc5LCAKKyAgICA4NCwgMTI4LCA4MywgNjUsIDc1LCA3MiwgMTkzLCA4MywgNjUsIDc1LCA2OSwgODUsIDY1LCA2OSwgMTI4LCA4MywgNjUsIAorICAgIDc1LCAxOTcsIDgzLCA2NSwgNzQsIDY4LCA2NSwgNzIsIDEyOCwgODMsIDY1LCA3MywgNzYsIDY2LCA3OSwgNjUsIDg0LCAKKyAgICAxMjgsIDgzLCA2NSwgNzMsIDc2LCAxMjgsIDgzLCA2NSwgNzMsIDc1LCA4NSwgODIsIDg1LCAxMjgsIDgzLCA2NSwgNzIsIAorICAgIDEyOCwgODMsIDY1LCA3MSwgNzMsIDg0LCA4NCwgNjUsIDgyLCA3MywgODUsIDgzLCAxMjgsIDgzLCA2NSwgNzEsIDY1LCAKKyAgICAxMjgsIDgzLCA2NSwgNzEsIDEyOCwgODMsIDY1LCAxOTksIDgzLCA2NSwgNzAsIDcyLCA2NSwgMTI4LCA4MywgNjUsIDcwLCAKKyAgICA2OSwgODQsIDIxNywgODMsIDY1LCA2OCwgNzIsIDY5LCAxMjgsIDgzLCA2NSwgNjgsIDY5LCAxMjgsIDgzLCA2NSwgNjgsIAorICAgIDEyOCwgODMsIDY1LCAxOTYsIDgzLCA2NSwgNjcsIDgyLCA3MywgNzAsIDczLCA2NywgNzMsIDY1LCAyMDQsIDgzLCA2NSwgCisgICAgNjUsIDczLCAxMjgsIDgzLCA2NSwgNjUsIDY4LCA3MiwgODUsIDEyOCwgODMsIDY1LCA0NSwgNzMsIDEyOCwgODMsIDY1LCAKKyAgICA0NSwgNTAsIDEyOCwgODMsIDQ4LCA1MiwgNTQsIDEyOCwgODMsIDQ4LCA1MiwgNTMsIDEyOCwgODMsIDQ4LCA1MiwgNTIsIAorICAgIDEyOCwgODMsIDQ4LCA1MiwgNTEsIDEyOCwgODMsIDQ4LCA1MiwgNTAsIDEyOCwgODMsIDQ4LCA1MiwgNDksIDEyOCwgODMsIAorICAgIDQ4LCA1MiwgNDgsIDEyOCwgODMsIDQ4LCA1MSwgNTcsIDEyOCwgODMsIDQ4LCA1MSwgNTYsIDEyOCwgODMsIDQ4LCA1MSwgCisgICAgNTUsIDEyOCwgODMsIDQ4LCA1MSwgNTQsIDEyOCwgODMsIDQ4LCA1MSwgNTMsIDY1LCAxMjgsIDgzLCA0OCwgNTEsIDUzLCAKKyAgICAxMjgsIDgzLCA0OCwgNTEsIDUyLCAxMjgsIDgzLCA0OCwgNTEsIDUxLCAxMjgsIDgzLCA0OCwgNTEsIDUwLCAxMjgsIDgzLCAKKyAgICA0OCwgNTEsIDQ5LCAxMjgsIDgzLCA0OCwgNTEsIDQ4LCAxMjgsIDgzLCA0OCwgNTAsIDU3LCAxMjgsIDgzLCA0OCwgNTAsIAorICAgIDU2LCAxMjgsIDgzLCA0OCwgNTAsIDU1LCAxMjgsIDgzLCA0OCwgNTAsIDU0LCA2NiwgMTI4LCA4MywgNDgsIDUwLCA1NCwgCisgICAgNjUsIDEyOCwgODMsIDQ4LCA1MCwgNTQsIDEyOCwgODMsIDQ4LCA1MCwgNTMsIDEyOCwgODMsIDQ4LCA1MCwgNTIsIDEyOCwgCisgICAgODMsIDQ4LCA1MCwgNTEsIDEyOCwgODMsIDQ4LCA1MCwgNTAsIDEyOCwgODMsIDQ4LCA1MCwgNDksIDEyOCwgODMsIDQ4LCAKKyAgICA1MCwgNDgsIDEyOCwgODMsIDQ4LCA0OSwgNTcsIDEyOCwgODMsIDQ4LCA0OSwgNTYsIDEyOCwgODMsIDQ4LCA0OSwgNTUsIAorICAgIDY1LCAxMjgsIDgzLCA0OCwgNDksIDU1LCAxMjgsIDgzLCA0OCwgNDksIDU0LCAxMjgsIDgzLCA0OCwgNDksIDUzLCAxMjgsIAorICAgIDgzLCA0OCwgNDksIDUyLCA2NiwgMTI4LCA4MywgNDgsIDQ5LCA1MiwgNjUsIDEyOCwgODMsIDQ4LCA0OSwgNTIsIDEyOCwgCisgICAgODMsIDQ4LCA0OSwgNTEsIDEyOCwgODMsIDQ4LCA0OSwgNTAsIDEyOCwgODMsIDQ4LCA0OSwgNDksIDEyOCwgODMsIDQ4LCAKKyAgICA0OSwgNDgsIDEyOCwgODMsIDQ4LCA0OCwgNTcsIDEyOCwgODMsIDQ4LCA0OCwgNTYsIDEyOCwgODMsIDQ4LCA0OCwgNTUsIAorICAgIDEyOCwgODMsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDgzLCA0OCwgNDgsIDU0LCAxMjgsIDgzLCA0OCwgNDgsIDUzLCAxMjgsIAorICAgIDgzLCA0OCwgNDgsIDUyLCAxMjgsIDgzLCA0OCwgNDgsIDUxLCAxMjgsIDgzLCA0OCwgNDgsIDUwLCA2NSwgMTI4LCA4MywgCisgICAgNDgsIDQ4LCA1MCwgMTI4LCA4MywgNDgsIDQ4LCA0OSwgMTI4LCA4MywgNDUsIDg3LCAxMjgsIDgzLCA0NSwgODMsIDcyLCAKKyAgICA2NSwgODAsIDY5LCAxOTYsIDgyLCA4OSwgODksIDEyOCwgODIsIDg5LCA4OCwgMTI4LCA4MiwgODksIDg0LCAxMjgsIDgyLCAKKyAgICA4OSwgODIsIDg4LCAxMjgsIDgyLCA4OSwgODIsIDEyOCwgODIsIDg5LCA4MCwgMTI4LCA4MiwgODcsIDc5LCA3OSwgMTI4LCAKKyAgICA4MiwgODcsIDc5LCAxMjgsIDgyLCA4NywgNzMsIDczLCAxMjgsIDgyLCA4NywgNzMsIDEyOCwgODIsIDg3LCA2OSwgNjksIAorICAgIDEyOCwgODIsIDg3LCA2OSwgMTI4LCA4MiwgODcsIDY1LCA3MiwgNjUsIDEyOCwgODIsIDg3LCA2NSwgNjUsIDEyOCwgODIsIAorICAgIDg3LCA2NSwgMTI4LCA4MiwgODUsIDg4LCAxMjgsIDgyLCA4NSwgODUsIDY2LCA4NSwgODIsIDg1LCAxMjgsIDgyLCA4NSwgCisgICAgODUsIDEyOCwgODIsIDg1LCA4NCwgMTI4LCA4MiwgODUsIDgzLCA3MywgMTI4LCA4MiwgODUsIDgyLCA4OCwgMTI4LCA4MiwgCisgICAgODUsIDgyLCAxMjgsIDgyLCA4NSwgODAsIDczLCA3MywgMTI4LCA4MiwgODUsIDgwLCA2OSwgMTk3LCA4MiwgODUsIDgwLCAKKyAgICAxMjgsIDgyLCA4NSwgNzksIDg4LCAxMjgsIDgyLCA4NSwgNzksIDgwLCAxMjgsIDgyLCA4NSwgNzksIDEyOCwgODIsIDg1LCAKKyAgICA3OCwgNzksIDg1LCA4NCwgMTI4LCA4MiwgODUsIDc4LCA3OCwgNzMsIDc4LCAxOTksIDgyLCA4NSwgNzgsIDc4LCA2OSwgODIsIAorICAgIDEyOCwgODIsIDg1LCA3OCwgNzMsIDE5NSwgODIsIDg1LCA3OCwgMTI4LCA4MiwgODUsIDc3LCAyMDEsIDgyLCA4NSwgNzcsIAorICAgIDY1LCAyMDEsIDgyLCA4NSwgNzcsIDEyOCwgODIsIDg1LCAyMDUsIDgyLCA4NSwgNzYsIDY5LCA4MiwgMTI4LCA4MiwgODUsIAorICAgIDc2LCA2OSwgNDUsIDY4LCA2OSwgNzYsIDY1LCA4OSwgNjksIDY4LCAxMjgsIDgyLCA4NSwgNzYsIDY5LCAxMjgsIDgyLCA4NSwgCisgICAgNzYsIDY1LCA3MywgMTI4LCA4MiwgODUsIDc1LCA3NSwgNjUsIDc1LCA3MiwgNjUsIDEyOCwgODIsIDg1LCA3MywgODMsIAorICAgIDEyOCwgODIsIDg1LCA3MSwgNjYsIDIxNywgODIsIDg1LCA2OCwgNzMsIDc3LCA2OSwgNzgsIDg0LCAxOTMsIDgyLCA4NSwgCisgICAgNjYsIDc2LCAxOTcsIDgyLCA4NSwgMTk0LCA4MiwgODUsIDY1LCAxMjgsIDgyLCA4NCwgNzIsIDY1LCA3OCwgMTk5LCA4MiwgCisgICAgODQsIDY1LCA3MSwgODMsIDEyOCwgODIsIDg0LCA2NSwgNzEsIDIxMSwgODIsIDgyLCA4OSwgODgsIDEyOCwgODIsIDgyLCAKKyAgICA4OSwgODQsIDEyOCwgODIsIDgyLCA4OSwgODIsIDg4LCAxMjgsIDgyLCA4MiwgODksIDgyLCAxMjgsIDgyLCA4MiwgODksIAorICAgIDgwLCAxMjgsIDgyLCA4MiwgODUsIDg4LCAxMjgsIDgyLCA4MiwgODUsIDg1LCAxMjgsIDgyLCA4MiwgODUsIDg0LCAxMjgsIAorICAgIDgyLCA4MiwgODUsIDgyLCA4OCwgMTI4LCA4MiwgODIsIDg1LCA4MiwgMTI4LCA4MiwgODIsIDg1LCA4MCwgMTI4LCA4MiwgCisgICAgODIsIDg1LCA3OSwgODgsIDEyOCwgODIsIDgyLCA4NSwgNzksIDEyOCwgODIsIDgyLCA4NSwgMTI4LCA4MiwgODIsIDgyLCAKKyAgICA2NSwgMTI4LCA4MiwgODIsIDc5LCA4OCwgMTI4LCA4MiwgODIsIDc5LCA4NCwgMTI4LCA4MiwgODIsIDc5LCA4MCwgMTI4LCAKKyAgICA4MiwgODIsIDc5LCA3OSwgMTI4LCA4MiwgODIsIDc5LCAxMjgsIDgyLCA4MiwgNzMsIDczLCAxMjgsIDgyLCA4MiwgNzMsIAorICAgIDEyOCwgODIsIDgyLCA2OSwgODgsIDEyOCwgODIsIDgyLCA2OSwgODQsIDEyOCwgODIsIDgyLCA2OSwgODAsIDEyOCwgODIsIAorICAgIDgyLCA2OSwgNzIsIDEyOCwgODIsIDgyLCA2OSwgMjAwLCA4MiwgODIsIDY5LCA2OSwgMTI4LCA4MiwgODIsIDY5LCAxMjgsIAorICAgIDgyLCA4MiwgNjUsIDg4LCAxMjgsIDgyLCA4MiwgNjUsIDg1LCAxMjgsIDgyLCA4MiwgNjUsIDczLCAxMjgsIDgyLCA4MiwgCisgICAgNjUsIDY1LCAxMjgsIDgyLCA3OSwgODcsIDY2LCA3OSwgNjUsIDg0LCAxMjgsIDgyLCA3OSwgODUsIDc4LCA2OCwgNjksIAorICAgIDE5NiwgODIsIDc5LCA4NSwgNzgsIDY4LCA0NSwgODQsIDczLCA4MCwgODAsIDY5LCAxOTYsIDgyLCA3OSwgODQsIDg1LCA3OCwgCisgICAgNjgsIDY1LCAxMjgsIDgyLCA3OSwgODQsIDY1LCA4NCwgNzMsIDc5LCA3OCwgODMsIDEyOCwgODIsIDc5LCA4NCwgNjUsIDg0LCAKKyAgICA3MywgNzksIDc4LCA0NSwgODcsIDY1LCA3NiwgNzYsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDgyLCA3OSwgODQsIDY1LCA4NCwgCisgICAgNzMsIDc5LCA3OCwgNDUsIDcwLCA3NiwgNzksIDc5LCA4MiwgODAsIDc2LCA2NSwgNzgsIDE5NywgODIsIDc5LCA4NCwgNjUsIAorICAgIDg0LCA3MywgNzksIDc4LCAxMjgsIDgyLCA3OSwgODQsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDgyLCA3OSwgODQsIDY1LCA4NCwgCisgICAgNjksIDE5NiwgODIsIDc5LCA4MywgNzIsIDEyOCwgODIsIDc5LCA4MywgNjksIDg0LCA4NCwgNjksIDEyOCwgODIsIDc5LCAKKyAgICA4MywgNjksIDEyOCwgODIsIDc5LCA3OSwgODQsIDEyOCwgODIsIDc5LCA3OSwgODMsIDg0LCA2OSwgODIsIDEyOCwgODIsIAorICAgIDc5LCA3OSwgNzUsIDEyOCwgODIsIDc5LCA3OSwgNzAsIDEyOCwgODIsIDc5LCA3NywgNjUsIDc4LCA3MywgNjUsIDIwNiwgCisgICAgODIsIDc5LCA3NywgNjUsIDIwNiwgODIsIDc5LCA3NywgMTI4LCA4MiwgNzksIDc2LCA3NiwgNzMsIDc4LCAxOTksIDgyLCAKKyAgICA3OSwgNzYsIDc2LCA2OSwgMjEwLCA4MiwgNzksIDc2LCA3NiwgNjksIDY4LCA0NSwgODUsIDIwOCwgODIsIDc5LCA3MiwgNzMsIAorICAgIDc4LCA3MSwgODksIDE5MywgODIsIDc5LCA3MSwgMTI4LCA4MiwgNzksIDE5NiwgODIsIDc5LCA2NywgNzUsIDY5LCA4NCwgCisgICAgMTI4LCA4MiwgNzksIDY3LCAyMDMsIDgyLCA3OSwgNjcsIDEyOCwgODIsIDc5LCA2NiwgNzksIDIxMiwgODIsIDc5LCA2NiwgCisgICAgNjUsIDg0LCAxMjgsIDgyLCA3OSwgNjUsIDgzLCA4NCwgNjksIDE5NiwgODIsIDc5LCA2NSwgODIsIDEyOCwgODIsIDc5LCAKKyAgICA2NSwgMTI4LCA4MiwgNzgsIDg5LCA3MywgNzgsIDE5OSwgODIsIDc4LCA3OSwgNzksIDc4LCAxMjgsIDgyLCA3OCwgNzksIAorICAgIDc5LCAyMDYsIDgyLCA3OCwgNjUsIDIwNSwgODIsIDc3LCA4NCwgMTI4LCA4MiwgNzYsIDc5LCAxMjgsIDgyLCA3NiwgNzcsIAorICAgIDEyOCwgODIsIDc2LCA3MywgMTI4LCA4MiwgNzYsIDY5LCAxMjgsIDgyLCA3NCwgNjksIDIxMSwgODIsIDc0LCA2OSwgMTI4LCAKKyAgICA4MiwgNzQsIDE5NywgODIsIDczLCA4NiwgNjksIDgyLCAxMjgsIDgyLCA3MywgODQsIDg1LCA2NSwgNzYsIDEyOCwgODIsIAorICAgIDczLCA4NCwgODQsIDc5LCA4MiwgODUsIDEyOCwgODIsIDczLCA4NCwgODMsIDczLCAxMjgsIDgyLCA3MywgODMsIDczLCA3OCwgCisgICAgMTk5LCA4MiwgNzMsIDgzLCA3MiwgMTI4LCA4MiwgNzMsIDgyLCA2NSwgMTI4LCA4MiwgNzMsIDgwLCA4MCwgNzYsIDE5NywgCisgICAgODIsIDczLCA4MCwgMTI4LCA4MiwgNzMsIDc4LCA3MSwgMjExLCA4MiwgNzMsIDc4LCA3MSwgNzMsIDc4LCAxOTksIDgyLCAKKyAgICA3MywgNzgsIDcwLCA3OSwgODIsIDkwLCA2NSwgNzgsIDY4LCA3OSwgMTI4LCA4MiwgNzMsIDIwNiwgODIsIDczLCA3NywgNzEsIAorICAgIDY2LCA2NSwgMTI4LCA4MiwgNzMsIDc3LCAxMjgsIDgyLCA3MywgNzUsIDgyLCA3MywgNzUsIDEyOCwgODIsIDczLCA3MSwgCisgICAgODYsIDY5LCA2OCwgNzMsIDE5NSwgODIsIDczLCA3MSwgNzIsIDg0LCA4NywgNjUsIDgyLCA2OCwgODMsIDEyOCwgODIsIDczLCAKKyAgICA3MSwgNzIsIDg0LCA3MiwgNjUsIDc4LCAxOTYsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDg0LCA3OSwgNDUsIDc2LCA2OSwgCisgICAgNzAsIDIxMiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgODMsIDczLCA2OCwgMTk3LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCAKKyAgICA4MywgNzIsIDY1LCA2OCwgNzksIDg3LCA2OSwgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA4MywgNzIsIDY1LCA2OCwgCisgICAgNjksIDE5NiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgODAsIDc5LCA3MywgNzgsIDg0LCA3MywgNzgsIDE5OSwgODIsIDczLCAKKyAgICA3MSwgNzIsIDg0LCA0NSwgNzYsIDczLCA3MSwgNzIsIDg0LCA2OSwgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA3MiwgCisgICAgNjUsIDc4LCA2OCwgNjksIDE5NiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgNzIsIDY1LCA3OCwgMTk2LCA4MiwgNzMsIDcxLCAKKyAgICA3MiwgODQsIDQ1LCA3MCwgNjUsIDY3LCA3MywgNzgsIDE5OSwgODIsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDgyLCA3MywgNzAsIAorICAgIDc2LCA2OSwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4OSwgNjksIDgzLCA3MywgNjksIDg1LCA3OCwgNzEsIDEyOCwgCisgICAgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODksIDY5LCA3OSwgODIsIDczLCA3OCwgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgCisgICAgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDg5LCA2OSwgNzksIDgyLCA3MywgNzgsIAorICAgIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAKKyAgICA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgCisgICAgODQsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgODIsIDczLCAKKyAgICA2OSwgODUsIDc2LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDgyLCA3MywgCisgICAgNjksIDg1LCA3NiwgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIAorICAgIDc2LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCAKKyAgICA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgCisgICAgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIAorICAgIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAKKyAgICA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgCisgICAgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODAsIDczLCA2OSwgODUsIAorICAgIDgwLCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCA3MywgNjksIDg1LCAKKyAgICA4MCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgMTI4LCA4MiwgNzMsIAorICAgIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCAKKyAgICA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgCisgICAgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgNzUsIAorICAgIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCAKKyAgICA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIAorICAgIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCAKKyAgICA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAKKyAgICAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODIsIDczLCA2OSwgODUsIAorICAgIDc2LCA0NSwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODIsIDczLCAKKyAgICA2OSwgODUsIDc2LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDY3LCA3MywgCisgICAgNjksIDg1LCA2NywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgMjA0LCA4MiwgNzMsIDY5LCA3NiwgMTI4LCA4MiwgNzMsIDY5LCAKKyAgICA2OSwgMTI4LCA4MiwgNzMsIDY3LCA2OSwgNzcsIDEyOCwgODIsIDczLCA2NywgNjksIDEyOCwgODIsIDczLCA2NywgMTk3LCAKKyAgICA4MiwgNzMsIDY2LCA2NiwgNzksIDc4LCAxMjgsIDgyLCA3MywgNjYsIDY2LCA3OSwgMjA2LCA4MiwgNzMsIDY1LCAyMDQsIAorICAgIDgyLCA3MiwgNzksIDg0LCA3MywgMTk1LCA4MiwgNzIsIDc5LCAxMjgsIDgyLCA3MiwgMjA3LCA4MiwgNzIsIDczLCA3OCwgCisgICAgNzksIDY3LCA2OSwgODIsIDc5LCA4MywgMTI4LCA4MiwgNzIsIDY1LCAxMjgsIDgyLCA3MiwgMTI4LCA4MiwgNzEsIDg5LCAKKyAgICA3MywgNzgsIDcxLCA4MywgMTI4LCA4MiwgNzEsIDg5LCA2NSwgNzgsIDEyOCwgODIsIDcxLCA4OSwgMTkzLCA4MiwgNjksIAorICAgIDg2LCA3OSwgNzYsIDg2LCA3MywgNzgsIDE5OSwgODIsIDY5LCA4NiwgNzksIDc2LCA4NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgCisgICAgODIsIDY5LCA4NiwgNzcsIDY1LCAxMjgsIDgyLCA2OSwgODYsIDczLCA2NSwgMTI4LCA4MiwgNjksIDg2LCA2OSwgODIsIDgzLCAKKyAgICA2OSwgNjgsIDQ1LCA4MywgNjcsIDcyLCA4NywgNjUsIDEyOCwgODIsIDY5LCA4NiwgNjksIDgyLCA4MywgNjksIDY4LCAxMjgsIAorICAgIDgyLCA2OSwgODYsIDY5LCA4MiwgODMsIDY5LCAxOTYsIDgyLCA2OSwgODYsIDY5LCA4MiwgODMsIDE5NywgODIsIDY5LCA4NSwgCisgICAgODgsIDEyOCwgODIsIDY5LCA4NSwgMTI4LCA4MiwgNjksIDg0LCA4NSwgODIsIDc4LCAxMjgsIDgyLCA2OSwgODQsIDg1LCAKKyAgICA4MiwgMjA2LCA4MiwgNjksIDg0LCA4MiwgNzksIDcwLCA3NiwgNjksIDIxNiwgODIsIDY5LCA4NCwgODIsIDY5LCA2NSwgODQsIAorICAgIDEyOCwgODIsIDY5LCA4NCwgNzksIDgyLCA4NCwgMTI4LCA4MiwgNjksIDgzLCA4NSwgODAsIDczLCA3OCwgODUsIDgzLCAKKyAgICAxMjgsIDgyLCA2OSwgODMsIDg0LCA4MiwgNzksIDc5LCA3NywgMTI4LCA4MiwgNjksIDgzLCA4NCwgODIsIDczLCA2NywgODQsIAorICAgIDY5LCAxOTYsIDgyLCA2OSwgODMsIDg0LCAxMjgsIDgyLCA2OSwgODMsIDgwLCA3OSwgNzgsIDgzLCA2OSwgMTI4LCA4MiwgCisgICAgNjksIDgzLCA3OSwgODUsIDgyLCA2NywgNjksIDEyOCwgODIsIDY5LCA4MywgNzksIDc2LCA4NSwgODQsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgODIsIDY5LCA4MywgNzMsIDgzLCA4NCwgNjUsIDc4LCA2NywgNjksIDEyOCwgODIsIDY5LCA4MywgNzMsIDY4LCA2OSwgCisgICAgNzgsIDY3LCA2OSwgMTI4LCA4MiwgNjksIDgzLCAyMDAsIDgyLCA2OSwgODIsIDY5LCA3OCwgNzEsIDcxLCA2NSwgNzgsIAorICAgIDEyOCwgODIsIDY5LCA4MiwgNjksIDc1LCA2NSwgNzgsIDEyOCwgODIsIDY5LCA4MCwgODIsIDY5LCA4MywgNjksIDc4LCA4NCwgCisgICAgMTI4LCA4MiwgNjksIDgwLCA3NiwgNjUsIDY3LCA2OSwgNzcsIDY5LCA3OCwgMjEyLCA4MiwgNjksIDgwLCA3MiwgMTI4LCAKKyAgICA4MiwgNjksIDgwLCA2OSwgODQsIDczLCA4NCwgNzMsIDc5LCAyMDYsIDgyLCA2OSwgODAsIDY5LCA2NSwgODQsIDY5LCAxOTYsIAorICAgIDgyLCA2OSwgODAsIDY5LCA2NSwgODQsIDEyOCwgODIsIDY5LCA4MCwgNjksIDY1LCAyMTIsIDgyLCA2OSwgODAsIDY1LCA4OSwgCisgICAgNjUsIDEyOCwgODIsIDY5LCA4MCwgNjUsIDEyOCwgODIsIDY5LCA4MCwgMTkzLCA4MiwgNjksIDc4LCA4NCwgNzksIDcxLCAKKyAgICA2OSwgNzgsIDEyOCwgODIsIDY5LCA3OCwgMTI4LCA4MiwgNjksIDIwNiwgODIsIDY5LCA3NywgODUsIDEyOCwgODIsIDY5LCAKKyAgICA3NywgNzMsIDc4LCA2OCwgNjksIDIxMCwgODIsIDY5LCA3NywgNjksIDY4LCA4OSwgMTI4LCA4MiwgNjksIDc2LCA3MywgNzEsIAorICAgIDczLCA3OSwgNzgsIDEyOCwgODIsIDY5LCA3NiwgNzMsIDY5LCA4NiwgNjksIDE5NiwgODIsIDY5LCA3NiwgNjksIDY1LCA4MywgCisgICAgNjksIDEyOCwgODIsIDY5LCA3NiwgNjUsIDg4LCA2OSwgNjgsIDEyOCwgODIsIDY5LCA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCAKKyAgICA2NSwgMjA0LCA4MiwgNjksIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODIsIDY5LCA3NiwgNjUsIDY1LCAxMjgsIAorICAgIDgyLCA2OSwgNzQsIDY1LCA3OCwgMTk5LCA4MiwgNjksIDczLCAxOTYsIDgyLCA2OSwgNzMsIDEyOCwgODIsIDY5LCA3MSwgCisgICAgODUsIDc2LCA4NSwgODMsIDQ1LCA1MiwgMTI4LCA4MiwgNjksIDcxLCA4NSwgNzYsIDg1LCA4MywgNDUsIDUxLCAxMjgsIDgyLCAKKyAgICA2OSwgNzEsIDg1LCA3NiwgODUsIDgzLCA0NSwgNTAsIDEyOCwgODIsIDY5LCA3MSwgODUsIDc2LCA4NSwgODMsIDEyOCwgODIsIAorICAgIDY5LCA3MSwgODUsIDc2LCA4NSwgMjExLCA4MiwgNjksIDcxLCA3MywgODMsIDg0LCA2OSwgODIsIDY5LCAxOTYsIDgyLCA2OSwgCisgICAgNzEsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDgyLCA2OSwgNzEsIDczLCA2NSwgNDUsIDUwLCAxMjgsIDgyLCA2OSwgNzEsIDczLCAKKyAgICA2NSwgMTI4LCA4MiwgNjksIDcwLCA3OSwgODIsIDc3LCA2OSwgMTk2LCA4MiwgNjksIDcwLCA2OSwgODIsIDY5LCA3OCwgNjcsIAorICAgIDE5NywgODIsIDY5LCA2OCwgODUsIDgwLCA3NiwgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODIsIDY5LCA2NywgCisgICAgODksIDY3LCA3NiwgNzMsIDc4LCAxOTksIDgyLCA2OSwgNjcsIDg5LCA2NywgNzYsIDY5LCAxOTYsIDgyLCA2OSwgNjcsIDg0LCAKKyAgICA3MywgNzYsIDczLCA3OCwgNjksIDY1LCAyMTAsIDgyLCA2OSwgNjcsIDg0LCA2NSwgNzgsIDcxLCA4NSwgNzYsIDY1LCAyMTAsIAorICAgIDgyLCA2OSwgNjcsIDg0LCA2NSwgNzgsIDcxLCA3NiwgNjksIDEyOCwgODIsIDY5LCA2NywgODQsIDY1LCA3OCwgNzEsIDc2LCAKKyAgICAxOTcsIDgyLCA2OSwgNjcsIDgyLCA2OSwgNjUsIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCA4MiwgNjksIDY3LCA3OSwgODIsIAorICAgIDY4LCA3MywgNzgsIDE5OSwgODIsIDY5LCA2NywgNzksIDgyLCA2OCwgNjksIDgyLCAxMjgsIDgyLCA2OSwgNjcsIDc5LCA4MiwgCisgICAgNjgsIDEyOCwgODIsIDY5LCA2NywgNzksIDgyLCAxOTYsIDgyLCA2OSwgNjcsIDczLCA4NCwgNjUsIDg0LCA3MywgODYsIAorICAgIDE5NywgODIsIDY5LCA2NywgNjksIDgwLCA4NCwgNzMsIDg2LCAxOTcsIDgyLCA2OSwgNjcsIDY5LCA3MywgODYsIDY5LCA4MiwgCisgICAgMTI4LCA4MiwgNjksIDY3LCA2OSwgNzMsIDg2LCA2OSwgMjEwLCA4MiwgNjksIDY1LCA3NiwgNzEsIDY1LCA4MiwgNDUsIDUwLCAKKyAgICAxMjgsIDgyLCA2OSwgNjUsIDc2LCA3MSwgNjUsIDgyLCAxMjgsIDgyLCA2OSwgNjUsIDcyLCA3NywgODUsIDc1LCAxMjgsIAorICAgIDgyLCA2OSwgNjUsIDY3LCA3MiwgMTI4LCA4MiwgNjgsIDIwNywgODIsIDY4LCA2OSwgMjA0LCA4MiwgNjYsIDY1LCA4MywgCisgICAgMTkzLCA4MiwgNjUsIDg5LCA4MywgMTI4LCA4MiwgNjUsIDg5LCAyMTEsIDgyLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAKKyAgICAxMjgsIDgyLCA2NSwgODQsIDczLCA3OSwgMTI4LCA4MiwgNjUsIDg0LCA3MiwgNjUsIDEyOCwgODIsIDY1LCA4NCwgNzIsIAorICAgIDE5MywgODIsIDY1LCA4NCwgNjUsIDEyOCwgODIsIDY1LCA4NCwgMTI4LCA4MiwgNjUsIDgzLCA4NywgNjUsIDY4LCA3MywgCisgICAgMTI4LCA4MiwgNjUsIDgzLCA3OSwgODUsIDIwNCwgODIsIDY1LCA4MywgNzIsIDY1LCAxMjgsIDgyLCA2NSwgODEsIDEyOCwgCisgICAgODIsIDY1LCA4MCwgNzMsIDgzLCA3NywgNjUsIDEyOCwgODIsIDY1LCA3OCwgNzEsIDE5NywgODIsIDY1LCA3OCwgNjUsIAorICAgIDEyOCwgODIsIDY1LCA3OCwgMTI4LCA4MiwgNjUsIDc3LCAyMTEsIDgyLCA2NSwgNzcsIDY2LCA2NSwgODQsIDEyOCwgODIsIAorICAgIDY1LCA3NSwgNzIsIDY1LCA3OCwgNzEsIDEyOCwgODIsIDY1LCA3NSwgNjUsIDY1LCA4MiwgNjUsIDY1LCA3OCwgODMsIDY1LCAKKyAgICA4OSwgNjUsIDEyOCwgODIsIDY1LCA3MywgODMsIDczLCA3OCwgMTk5LCA4MiwgNjUsIDczLCA4MywgNjksIDE5NiwgODIsIAorICAgIDY1LCA3MywgNzgsIDY2LCA3OSwgODcsIDEyOCwgODIsIDY1LCA3MywgNzYsIDg3LCA2NSwgODksIDEyOCwgODIsIDY1LCA3MywgCisgICAgNzYsIDg3LCA2NSwgMjE3LCA4MiwgNjUsIDczLCA3NiwgMTI4LCA4MiwgNjUsIDczLCA2OCwgMjA3LCA4MiwgNjUsIDczLCAKKyAgICA2OCwgNjUsIDEyOCwgODIsIDY1LCA3MiwgNzcsIDY1LCA4NCwgODUsIDc2LCA3NiwgNjUsIDIwMCwgODIsIDY1LCA3MiwgCisgICAgMTI4LCA4MiwgNjUsIDcwLCA2OSwgMTI4LCA4MiwgNjUsIDY5LCA3NywgMTI4LCA4MiwgNjUsIDY4LCA3MywgNzksIDY1LCAKKyAgICA2NywgODQsIDczLCA4NiwgMTk3LCA4MiwgNjUsIDY4LCA3MywgNzksIDEyOCwgODIsIDY1LCA2OCwgNzMsIDIwNywgODIsIAorICAgIDY1LCA2OCwgMjAxLCA4MiwgNjUsIDY4LCAxMjgsIDgyLCA2NSwgMTk2LCA4MiwgNjUsIDY3LCA4MSwgODUsIDY5LCAyMTIsIAorICAgIDgyLCA2NSwgNjcsIDczLCA3OCwgNzEsIDEyOCwgODIsIDY1LCA2NywgNzMsIDc4LCAxOTksIDgyLCA2NSwgNjYsIDY2LCA3MywgCisgICAgODQsIDEyOCwgODIsIDY1LCA2NiwgNjYsIDczLCAyMTIsIDgyLCA2NSwgNjYsIDEyOCwgODIsIDY1LCA2NSwgNzMsIDEyOCwgCisgICAgODIsIDY1LCA1MSwgMTI4LCA4MiwgNjUsIDUwLCAxMjgsIDgyLCA2NSwgNDUsIDUwLCAxMjgsIDgyLCA0OCwgNTAsIDU3LCAKKyAgICAxMjgsIDgyLCA0OCwgNTAsIDU2LCAxMjgsIDgyLCA0OCwgNTAsIDU1LCAxMjgsIDgyLCA0OCwgNTAsIDU0LCAxMjgsIDgyLCAKKyAgICA0OCwgNTAsIDUzLCAxMjgsIDgyLCA0OCwgNTAsIDUyLCAxMjgsIDgyLCA0OCwgNTAsIDUxLCAxMjgsIDgyLCA0OCwgNTAsIAorICAgIDUwLCAxMjgsIDgyLCA0OCwgNTAsIDQ5LCAxMjgsIDgyLCA0OCwgNTAsIDQ4LCAxMjgsIDgyLCA0OCwgNDksIDU3LCAxMjgsIAorICAgIDgyLCA0OCwgNDksIDU2LCAxMjgsIDgyLCA0OCwgNDksIDU1LCAxMjgsIDgyLCA0OCwgNDksIDU0LCA2NSwgMTI4LCA4MiwgCisgICAgNDgsIDQ5LCA1NCwgMTI4LCA4MiwgNDgsIDQ5LCA1MywgMTI4LCA4MiwgNDgsIDQ5LCA1MiwgMTI4LCA4MiwgNDgsIDQ5LCAKKyAgICA1MSwgMTI4LCA4MiwgNDgsIDQ5LCA1MCwgMTI4LCA4MiwgNDgsIDQ5LCA0OSwgMTI4LCA4MiwgNDgsIDQ5LCA0OCwgNjUsIAorICAgIDEyOCwgODIsIDQ4LCA0OSwgNDgsIDEyOCwgODIsIDQ4LCA0OCwgNTcsIDEyOCwgODIsIDQ4LCA0OCwgNTYsIDEyOCwgODIsIAorICAgIDQ4LCA0OCwgNTUsIDEyOCwgODIsIDQ4LCA0OCwgNTQsIDEyOCwgODIsIDQ4LCA0OCwgNTMsIDEyOCwgODIsIDQ4LCA0OCwgCisgICAgNTIsIDEyOCwgODIsIDQ4LCA0OCwgNTEsIDY2LCAxMjgsIDgyLCA0OCwgNDgsIDUxLCA2NSwgMTI4LCA4MiwgNDgsIDQ4LCAKKyAgICA1MSwgMTI4LCA4MiwgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgODIsIDQ4LCA0OCwgNTAsIDEyOCwgODIsIDQ4LCA0OCwgNDksIAorICAgIDEyOCwgODIsIDQ1LCA2NywgODIsIDY5LCAxOTcsIDgxLCA4OSwgODgsIDEyOCwgODEsIDg5LCA4NSwgMTI4LCA4MSwgODksIAorICAgIDg0LCAxMjgsIDgxLCA4OSwgODIsIDg4LCAxMjgsIDgxLCA4OSwgODIsIDEyOCwgODEsIDg5LCA4MCwgMTI4LCA4MSwgODksIAorICAgIDc5LCAxMjgsIDgxLCA4OSwgNzMsIDEyOCwgODEsIDg5LCA2OSwgNjksIDEyOCwgODEsIDg5LCA2OSwgMTI4LCA4MSwgODksIAorICAgIDY1LCA2NSwgMTI4LCA4MSwgODksIDY1LCAxMjgsIDgxLCA4OSwgMTI4LCA4MSwgODcsIDczLCAxMjgsIDgxLCA4NywgNjksIAorICAgIDY5LCAxMjgsIDgxLCA4NywgNjksIDEyOCwgODEsIDg3LCA2NSwgNjUsIDEyOCwgODEsIDg3LCA2NSwgMTI4LCA4MSwgODUsIAorICAgIDg4LCAxMjgsIDgxLCA4NSwgODYsIDEyOCwgODEsIDg1LCA4NSwgODYsIDEyOCwgODEsIDg1LCA4NSwgMTI4LCA4MSwgODUsIAorICAgIDg0LCAxMjgsIDgxLCA4NSwgODMsIDcyLCA4MywgNzIsIDY1LCA4OSwgNjUsIDEyOCwgODEsIDg1LCA4MiwgODgsIDEyOCwgCisgICAgODEsIDg1LCA4MiwgMTI4LCA4MSwgODUsIDgwLCAxMjgsIDgxLCA4NSwgNzksIDg4LCAxMjgsIDgxLCA4NSwgNzksIDg0LCAKKyAgICAxOTcsIDgxLCA4NSwgNzksIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA4MSwgODUsIDc5LCA4NCwgMTI4LCA4MSwgODUsIAorICAgIDc5LCA4MCwgMTI4LCA4MSwgODUsIDc5LCAxMjgsIDgxLCA4NSwgNzUsIDEyOCwgODEsIDg1LCA3MywgNzgsIDg0LCA2OSwgCisgICAgODMsIDgzLCA2OSwgNzgsIDY3LCA2OSwgMTI4LCA4MSwgODUsIDczLCA3OCwgNjgsIDczLCA2NywgNjksIDgzLCA3MywgNzcsIAorICAgIDE5MywgODEsIDg1LCA3MywgNzgsIDY3LCA4NSwgNzgsIDg4LCAxMjgsIDgxLCA4NSwgNzMsIDc4LCA2NSwgODIsIDczLCA4NSwgCisgICAgMjExLCA4MSwgODUsIDczLCA3NiwgMjEyLCA4MSwgODUsIDczLCA3NiwgNzYsIDEyOCwgODEsIDg1LCA3MywgNjcsIDIwMywgCisgICAgODEsIDg1LCA3MywgMTI4LCA4MSwgODUsIDcwLCAxMjgsIDgxLCA4NSwgNjksIDgzLCA4NCwgNzMsIDc5LCA3OCwgNjksIAorICAgIDE5NiwgODEsIDg1LCA2OSwgODMsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgxLCA4NSwgNjksIDgzLCA4NCwgNzMsIDc5LCAKKyAgICAyMDYsIDgxLCA4NSwgNjksIDY5LCA3OCwgMTI4LCA4MSwgODUsIDY5LCA2OSwgMjA2LCA4MSwgODUsIDY5LCAxMjgsIDgxLCAKKyAgICA4NSwgNjYsIDg1LCA4NCwgODMsIDEyOCwgODEsIDg1LCA2NSwgODQsIDY5LCA4MiwgNzgsIDczLCA3OSwgMjA2LCA4MSwgODUsIAorICAgIDY1LCA4MiwgODQsIDY5LCA4MiwgODMsIDEyOCwgODEsIDg1LCA2NSwgODIsIDg0LCA2OSwgODIsIDIxMSwgODEsIDg1LCA2NSwgCisgICAgODIsIDg0LCA2OSwgODIsIDEyOCwgODEsIDg1LCA2NSwgNzgsIDg0LCA3MywgODQsIDIxNywgODEsIDg1LCA2NSwgNjgsIDgyLCAKKyAgICA4NSwgODAsIDc2LCAxOTcsIDgxLCA4NSwgNjUsIDY4LCA4MiwgNjUsIDc4LCA4NCwgMTI4LCA4MSwgODUsIDY1LCA2OCwgODIsIAorICAgIDY1LCA3OCwgMjEyLCA4MSwgODUsIDY1LCA2OCwgNjcsIDc5LCA3NiwgNzksIDc4LCAxMjgsIDgxLCA4NSwgNjUsIDY4LCAKKyAgICAxMjgsIDgxLCA4NSwgNjUsIDE5NiwgODEsIDg1LCA2NSwgMTI4LCA4MSwgODUsIDEyOCwgODEsIDIwOCwgODEsIDc5LCA4OCwgCisgICAgMTI4LCA4MSwgNzksIDg0LCAxMjgsIDgxLCA3OSwgODAsIDcyLCAxMjgsIDgxLCA3OSwgODAsIDY1LCAxMjgsIDgxLCA3OSwgCisgICAgODAsIDEyOCwgODEsIDc5LCA3OSwgMTI4LCA4MSwgNzksIDIwNywgODEsIDc5LCA3MCwgMTI4LCA4MSwgNzksIDE5OCwgODEsIAorICAgIDc5LCA2NSwgMTI4LCA4MSwgNzksIDEyOCwgODEsIDc4LCAxMjgsIDgxLCA3MywgODgsIDEyOCwgODEsIDczLCA4NCwgODMsIAorICAgIDY1LCAxMjgsIDgxLCA3MywgODQsIDEyOCwgODEsIDczLCA4MCwgMTI4LCA4MSwgNzMsIDczLCAxMjgsIDgxLCA3MywgNzAsIAorICAgIDEyOCwgODEsIDczLCA2OSwgODgsIDEyOCwgODEsIDczLCA2OSwgODQsIDEyOCwgODEsIDczLCA2OSwgODAsIDEyOCwgODEsIAorICAgIDczLCA2OSwgMTI4LCA4MSwgNzMsIDEyOCwgODEsIDcyLCA4NywgNzMsIDEyOCwgODEsIDcyLCA4NywgNjksIDY5LCAxMjgsIAorICAgIDgxLCA3MiwgODcsIDY5LCAxMjgsIDgxLCA3MiwgODcsIDY1LCA2NSwgMTI4LCA4MSwgNzIsIDg3LCA2NSwgMTI4LCA4MSwgCisgICAgNzIsIDg1LCAxMjgsIDgxLCA3MiwgNzksIDgwLCA3MiwgMTI4LCA4MSwgNzIsIDc5LCAxMjgsIDgxLCA3MiwgNzMsIDEyOCwgCisgICAgODEsIDcyLCA2OSwgNjksIDEyOCwgODEsIDcyLCA2OSwgMTI4LCA4MSwgNzIsIDY1LCA4NSwgMTI4LCA4MSwgNzIsIDY1LCAKKyAgICA2NSwgMTI4LCA4MSwgNzIsIDY1LCAxMjgsIDgxLCA3MSwgNjUsIDEyOCwgODEsIDY5LCA4NCwgNjUsIDc4LCA2NSwgMTI4LCAKKyAgICA4MSwgNjksIDY5LCAxMjgsIDgxLCA2OSwgMTI4LCA4MSwgNjUsIDg5LCAxMjgsIDgxLCA2NSwgODUsIDEyOCwgODEsIDY1LCAKKyAgICA4NCwgNjUsIDc4LCAxMjgsIDgxLCA2NSwgODIsIDc4LCA2OSwgMjE3LCA4MSwgNjUsIDgyLCAxMjgsIDgxLCA2NSwgODEsIAorICAgIDEyOCwgODEsIDY1LCA4MCwgNzIsIDEyOCwgODEsIDY1LCA3NywgNjUsIDg0LCA4MywgMTI4LCA4MSwgNjUsIDc3LCA2NSwgCisgICAgODQsIDIxMSwgODEsIDY1LCA3NiwgMTkzLCA4MSwgNjUsIDczLCA4MiwgODQsIDcyLCA4MiwgNjUsIDEyOCwgODEsIDY1LCAKKyAgICA3MywgMTI4LCA4MSwgNjUsIDcwLCAxMjgsIDgxLCA2NSwgMTk4LCA4MSwgNjUsIDY4LCA3NywgNjUsIDEyOCwgODEsIDY1LCAKKyAgICA2NSwgNzMsIDEyOCwgODEsIDY1LCA2NSwgNzAsIDg1LCAxMjgsIDgxLCA2NSwgNjUsIDcwLCAxMjgsIDgxLCA0OCwgNDgsIAorICAgIDU1LCAxMjgsIDgxLCA0OCwgNDgsIDU0LCAxMjgsIDgxLCA0OCwgNDgsIDUzLCAxMjgsIDgxLCA0OCwgNDgsIDUyLCAxMjgsIAorICAgIDgxLCA0OCwgNDgsIDUxLCAxMjgsIDgxLCA0OCwgNDgsIDUwLCAxMjgsIDgxLCA0OCwgNDgsIDQ5LCAxMjgsIDgwLCA5MCwgCisgICAgMTI4LCA4MCwgODksIDg4LCAxMjgsIDgwLCA4OSwgODQsIDEyOCwgODAsIDg5LCA4MiwgODgsIDEyOCwgODAsIDg5LCA4MiwgCisgICAgMTI4LCA4MCwgODksIDgwLCAxMjgsIDgwLCA4NywgNzksIDg5LCAxMjgsIDgwLCA4NywgNzksIDc5LCAxMjgsIDgwLCA4NywgCisgICAgNzksIDEyOCwgODAsIDg3LCAyMDcsIDgwLCA4NywgNzMsIDczLCAxMjgsIDgwLCA4NywgNzMsIDEyOCwgODAsIDg3LCA2OSwgCisgICAgNjksIDEyOCwgODAsIDg3LCA2OSwgMTI4LCA4MCwgODcsIDY1LCA2NSwgMTI4LCA4MCwgODcsIDEyOCwgODAsIDg2LCAxMjgsIAorICAgIDgwLCA4NSwgODgsIDEyOCwgODAsIDg1LCA4NSwgODQsIDEyOCwgODAsIDg1LCA4NSwgMTI4LCA4MCwgODUsIDg0LCA4MiwgCisgICAgNjksIDcwLCA2NSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCA4NSwgODQsIDEyOCwgODAsIDg1LCAyMTIsIDgwLCAKKyAgICA4NSwgODMsIDcyLCA4MCwgNzMsIDc4LCAxMjgsIDgwLCA4NSwgODMsIDcyLCA4MCwgNzMsIDc1LCA2NSwgMTI4LCA4MCwgODUsIAorICAgIDgzLCA3MiwgNzMsIDc4LCAxOTksIDgwLCA4NSwgODIsIDg4LCAxMjgsIDgwLCA4NSwgODIsIDgzLCA2OSwgMTI4LCA4MCwgCisgICAgODUsIDgyLCA4MCwgNzYsIDE5NywgODAsIDg1LCA4MiwgNzgsIDY1LCA3NywgNjUsIDEyOCwgODAsIDg1LCA4MiwgNzMsIDg0LCAKKyAgICA4OSwgMTI4LCA4MCwgODUsIDgyLCA3MywgNzAsIDg5LCAxMjgsIDgwLCA4NSwgODIsIDEyOCwgODAsIDg1LCA4MSwgMTI4LCAKKyAgICA4MCwgODUsIDgwLCAxMjgsIDgwLCA4NSwgNzksIDg4LCAxMjgsIDgwLCA4NSwgNzksIDgwLCAxMjgsIDgwLCA4NSwgNzksIAorICAgIDEyOCwgODAsIDg1LCA3OCwgNzEsIDY1LCA2NSwgNzcsIDEyOCwgODAsIDg1LCA3OCwgNzEsIDEyOCwgODAsIDg1LCA3OCwgCisgICAgNjcsIDg0LCA4NSwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCA4NSwgNzgsIDY3LCA4NCwgODUsIDY1LCA4NCwgNzMsIAorICAgIDc5LCAyMDYsIDgwLCA4NSwgNzcsIDgwLCAxMjgsIDgwLCA4NSwgNzcsIDEyOCwgODAsIDg1LCA3MCwgNzAsIDY5LCA2OCwgCisgICAgMTI4LCA4MCwgODUsIDY5LCAxMjgsIDgwLCA4NSwgNjcsIDc1LCAxMjgsIDgwLCA4NSwgNjYsIDc2LCA3MywgMTk1LCA4MCwgCisgICAgODUsIDE5NCwgODAsIDg1LCA2NSwgODEsIDEyOCwgODAsIDg1LCA2NSwgNjksIDEyOCwgODAsIDg1LCA1MCwgMTI4LCA4MCwgCisgICAgODUsIDQ5LCAxMjgsIDgwLCA4NSwgMTI4LCA4MCwgODQsIDcyLCA2NSwgNzIsIDE5MywgODAsIDg0LCA2OSwgMTI4LCA4MCwgCisgICAgODMsIDczLCA3NiwgMjAxLCA4MCwgODMsIDczLCA3MCwgNzMsIDgzLCA4NCwgNzksIDgzLCA4OSwgNzgsIDY1LCA3MSwgNzcsIAorICAgIDY1LCAxMjgsIDgwLCA4MywgNzMsIDcwLCA3MywgODMsIDg0LCA3OSwgODAsIDY1LCA4MiwgNjUsIDc1LCA2NSwgNzYsIDY5LCAKKyAgICA4MywgNzcsIDY1LCAxMjgsIDgwLCA4MywgNzMsIDcwLCA3MywgODMsIDg0LCA3OSwgMjA2LCA4MCwgODMsIDczLCA3MCwgNzMsIAorICAgIDgzLCA4NCwgNzksIDc2LCA4OSwgNzEsIDczLCA4MywgNzcsIDY1LCAxMjgsIDgwLCA4MywgNzMsIDEyOCwgODAsIDgzLCA2NSwgCisgICAgNzYsIDg0LCA2OSwgMjEwLCA4MCwgODMsIDEyOCwgODAsIDgyLCA3OSwgODYsIDY5LCAxMjgsIDgwLCA4MiwgNzksIDg0LCAKKyAgICA3OSwgODYsIDY1LCA4MiwgODksIDIxMSwgODAsIDgyLCA3OSwgODQsIDc5LCAyMTEsIDgwLCA4MiwgNzksIDg0LCA2OSwgNjcsIAorICAgIDg0LCA2OSwgMTk2LCA4MCwgODIsIDc5LCA4MywgNzEsIDY5LCA3MSwgODIsIDY1LCA3NywgNzcsIDY5LCA3OCwgNzMsIDEyOCwgCisgICAgODAsIDgyLCA3OSwgODAsIDc5LCA4MiwgODQsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDgwLCA4MiwgNzksIDgwLCA3OSwgODIsIAorICAgIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCA4MiwgNzksIDgwLCA2OSwgODIsIDg0LCAyMTcsIDgwLCA4MiwgNzksIDgwLCA2OSwgCisgICAgNzYsIDc2LCA2OSwgMjEwLCA4MCwgODIsIDc5LCA3OSwgNzAsIDEyOCwgODAsIDgyLCA3OSwgNzYsIDc5LCA3OCwgNzEsIDY5LCAKKyAgICAxOTYsIDgwLCA4MiwgNzksIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDE5NywgODAsIDgyLCA3OSwgNzQsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgMTI4LCA4MCwgODIsIDc5LCA3NCwgNjksIDY3LCA4NCwgNzMsIDg2LCA2OSwgMTI4LCA4MCwgODIsIDc5LCA3NCwgCisgICAgNjksIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MCwgODIsIDc5LCA3MiwgNzMsIDY2LCA3MywgODQsIDY5LCAxOTYsIDgwLCAKKyAgICA4MiwgNzksIDcxLCA4MiwgNjksIDgzLCA4MywgMTI4LCA4MCwgODIsIDc5LCA3MSwgODIsIDY1LCAyMDUsIDgwLCA4MiwgNzksIAorICAgIDcwLCA3OSwgODUsIDc4LCA2OCwgMTI4LCA4MCwgODIsIDc5LCA2OCwgODUsIDY3LCA4NCwgMTI4LCA4MCwgODIsIDc5LCA2OCwgCisgICAgODUsIDY3LCAyMTIsIDgwLCA4MiwgNzMsIDg2LCA2NSwgODQsIDY5LCAxMjgsIDgwLCA4MiwgNzMsIDg2LCA2NSwgODQsIAorICAgIDE5NywgODAsIDgyLCA3MywgODYsIDY1LCA2NywgMjE3LCA4MCwgODIsIDczLCA4MywgNzIsIDg0LCA3MiwgNjUsIDc3LCA2NSwgCisgICAgODQsIDgyLCAxOTMsIDgwLCA4MiwgNzMsIDc4LCA4NCwgODMsIDEyOCwgODAsIDgyLCA3MywgNzgsIDg0LCA2OSwgODIsIAorICAgIDEyOCwgODAsIDgyLCA3MywgNzgsIDg0LCA2OSwgMjEwLCA4MCwgODIsIDczLCA3OCwgODQsIDEyOCwgODAsIDgyLCA3MywgCisgICAgNzgsIDIxMiwgODAsIDgyLCA3MywgNzgsIDY3LCA2OSwgODMsIDgzLCAxMjgsIDgwLCA4MiwgNzMsIDc4LCA2NywgNjksIAorICAgIDEyOCwgODAsIDgyLCA3MywgNzcsIDY5LCAxMjgsIDgwLCA4MiwgNzMsIDc3LCAxOTcsIDgwLCA4MiwgNjksIDg2LCA3MywgCisgICAgNzksIDg1LCAyMTEsIDgwLCA4MiwgNjksIDgzLCA4MywgNjksIDE5NiwgODAsIDgyLCA2OSwgODMsIDY5LCA4NCwgMTI4LCAKKyAgICA4MCwgODIsIDY5LCA4MywgNjksIDc4LCA4NCwgNjUsIDg0LCA3MywgNzksIDIwNiwgODAsIDgyLCA2OSwgODMsIDY3LCA4MiwgCisgICAgNzMsIDgwLCA4NCwgNzMsIDc5LCAyMDYsIDgwLCA4MiwgNjksIDgwLCA3OSwgNzgsIDY4LCA2OSwgODIsIDY1LCA3OCwgNjcsIAorICAgIDY5LCAxMjgsIDgwLCA4MiwgNjksIDc4LCA3NSwgNzIsIDY1LCAxMjgsIDgwLCA4MiwgNjksIDcxLCA3OCwgNjUsIDc4LCAKKyAgICAyMTIsIDgwLCA4MiwgNjksIDcwLCA2NSwgNjcsIDE5NywgODAsIDgyLCA2OSwgNjcsIDczLCA4MCwgNzMsIDg0LCA2NSwgODQsIAorICAgIDY5LCAxMjgsIDgwLCA4MiwgNjksIDY3LCA2OSwgNjgsIDczLCA3OCwgMTk5LCA4MCwgODIsIDY5LCA2NywgNjksIDY4LCA2OSwgCisgICAgODMsIDEyOCwgODAsIDgyLCA2OSwgNjcsIDY5LCA2OCwgNjksIDIxMSwgODAsIDgyLCA2OSwgNjcsIDY5LCA2OCwgNjksIAorICAgIDE5NiwgODAsIDgyLCA2OSwgNjcsIDY5LCA2OCwgNjksIDEyOCwgODAsIDgyLCA2OSwgNjcsIDY5LCA2OCwgMTk3LCA4MCwgCisgICAgODIsIDY1LCA4OSwgNjksIDIxMCwgODAsIDgyLCA2NSwgNzcsIDQ1LCA4MCwgNzMsIDczLCAxMjgsIDgwLCA4MiwgNjUsIDc3LCAKKyAgICA0NSwgODAsIDczLCAyMDEsIDgwLCA4MiwgNjUsIDc3LCA0NSwgNzcsIDg1LCA3OSwgODksIDEyOCwgODAsIDgyLCA2NSwgNzcsIAorICAgIDQ1LCA3NywgODUsIDc5LCAyMTcsIDgwLCA4MiwgNjUsIDc3LCA0NSwgNjYsIDg1LCA3OSwgNzgsIDEyOCwgODAsIDgyLCA2NSwgCisgICAgNzcsIDQ1LCA2NiwgODUsIDc5LCAyMDYsIDgwLCA4MiwgNjUsIDc3LCA0NSwgNjYsIDY5LCA3MywgMTI4LCA4MCwgODIsIDY1LCAKKyAgICA3NywgNDUsIDY2LCA2OSwgMjAxLCA4MCwgODIsIDY1LCA3NywgMTI4LCA4MCwgODIsIDY1LCAyMDUsIDgwLCA4MiwgMTI4LCAKKyAgICA4MCwgODAsIDg2LCAxMjgsIDgwLCA4MCwgNzcsIDEyOCwgODAsIDgwLCA2NSwgMTI4LCA4MCwgNzksIDg5LCAxMjgsIDgwLCAKKyAgICA3OSwgODgsIDEyOCwgODAsIDc5LCA4NywgNjksIDgyLCAyMTEsIDgwLCA3OSwgODcsIDY5LCA4MiwgMTI4LCA4MCwgNzksIAorICAgIDg3LCA2OSwgMjEwLCA4MCwgNzksIDg3LCA2OCwgNjksIDgyLCA2OSwgMTk2LCA4MCwgNzksIDg3LCA2OCwgNjksIDgyLCAKKyAgICAxMjgsIDgwLCA3OSwgODUsIDc4LCAxOTYsIDgwLCA3OSwgODUsIDc2LCA4NCwgODIsIDIxNywgODAsIDc5LCA4NSwgNjcsIAorICAgIDcyLCAxMjgsIDgwLCA3OSwgODQsIDY1LCA4NCwgNzksIDEyOCwgODAsIDc5LCA4NCwgNjUsIDY2LCA3NiwgMTk3LCA4MCwgCisgICAgNzksIDIxMiwgODAsIDc5LCA4MywgODQsIDgwLCA3OSwgODMsIDczLCA4NCwgNzMsIDc5LCAyMDYsIDgwLCA3OSwgODMsIDg0LCAKKyAgICA2NiwgNzksIDg4LCAxMjgsIDgwLCA3OSwgODMsIDg0LCA2NSwgMjA0LCA4MCwgNzksIDgzLCA4NCwgMTI4LCA4MCwgNzksIAorICAgIDgzLCAyMTIsIDgwLCA3OSwgODMsIDgzLCA2OSwgODMsIDgzLCA3MywgNzksIDc4LCAxMjgsIDgwLCA3OSwgODMsIDczLCA4NCwgCisgICAgNzMsIDc5LCA3OCwgODMsIDEyOCwgODAsIDc5LCA4MiwgODQsIDY1LCA2NiwgNzYsIDE5NywgODAsIDc5LCA4MiwgODIsIDY5LCAKKyAgICA2NywgODQsIDg1LCA4MywgMTI4LCA4MCwgNzksIDgyLCA4MiwgNjksIDY3LCA4NCwgODUsIDIxMSwgODAsIDc5LCA4MCwgODAsIAorICAgIDczLCA3OCwgMTk5LCA4MCwgNzksIDgwLCA4MCwgNjksIDgyLCAxMjgsIDgwLCA3OSwgODAsIDY3LCA3OSwgODIsIDc4LCAKKyAgICAxMjgsIDgwLCA3OSwgODAsIDEyOCwgODAsIDc5LCAyMDgsIDgwLCA3OSwgNzksIDY4LCA3NiwgNjksIDEyOCwgODAsIDc5LCAKKyAgICA3OSwgMTI4LCA4MCwgNzksIDc4LCA2OCwgNzksIDEyOCwgODAsIDc5LCAyMDYsIDgwLCA3OSwgNzcsIDc3LCA2OSwgNjksIAorICAgIDEyOCwgODAsIDc5LCA3NywgNzcsIDY5LCAxOTcsIDgwLCA3OSwgNzYsIDc5LCAxMjgsIDgwLCA3OSwgNzYsIDczLCA4MywgCiAgICAgNzIsIDEyOCwgODAsIDc5LCA3NiwgNzMsIDY3LCAxOTcsIDgwLCA3OSwgNzYsIDIwMSwgODAsIDc5LCA3NiwgNjksIDEyOCwgCiAgICAgODAsIDc5LCA3NiwgMTk3LCA4MCwgNzksIDc1LCA4MiwgODksIDg0LCA3MywgNjksIDEyOCwgODAsIDc5LCA3NSwgNzksIDc0LCAKICAgICA3MywgMTI4LCA4MCwgNzksIDczLCA3OCwgODQsIDIxMSwgODAsIDc5LCA3MywgNzgsIDg0LCA3OSwgMTI4LCA4MCwgNzksIApAQCAtMTY5MSw3NiArMTcwNSw3OCBAQAogICAgIDgwLCA2OSwgODIsIDcwLCA2OSwgNjcsIDg0LCAxOTMsIDgwLCA2OSwgODIsIDY3LCA4NSwgODMsIDgzLCA3MywgODYsIDY5LCAKICAgICAxMjgsIDgwLCA2OSwgODIsIDY3LCA2OSwgNzgsIDIxMiwgODAsIDY5LCA4MCwgODAsIDY5LCA4MiwgMTI4LCA4MCwgNjksIAogICAgIDgwLCA2OSwgODQsIDEyOCwgODAsIDY5LCA4MCwgNjksIDIxMiwgODAsIDY5LCA3OSwgODIsIDg0LCAyMDAsIDgwLCA2OSwgCi0gICAgNzksIDgwLCA3NiwgNjksIDEyOCwgODAsIDY5LCA3OCwgODQsIDY1LCA4MywgNjksIDc3LCA2OSwgMTI4LCA4MCwgNjksIDc4LCAKLSAgICA4NCwgNjUsIDcxLCA4MiwgNjUsIDc3LCAxMjgsIDgwLCA2OSwgNzgsIDg0LCA2NSwgNzEsIDc5LCA3OCwgMTI4LCA4MCwgNjksIAotICAgIDc4LCA4MywgODUsIDEyOCwgODAsIDY5LCA3OCwgODMsIDczLCA4NiwgMTk3LCA4MCwgNjksIDc4LCA3OCwgMjE3LCA4MCwgCi0gICAgNjksIDc4LCA3OCwgNjUsIDc4LCA4NCwgMTI4LCA4MCwgNjksIDc4LCA3MywgNzIsIDczLCAxMjgsIDgwLCA2OSwgNzgsIDcxLCAKLSAgICA4NSwgNzMsIDc4LCAxMjgsIDgwLCA2OSwgNzgsIDcxLCA3NSwgNjUsIDc2LCAxMjgsIDgwLCA2OSwgNzgsIDY5LCA4NCwgODIsIAotICAgIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MCwgNjksIDc4LCA2NywgNzMsIDc2LCAxMjgsIDgwLCA2OSwgNzYsIDY1LCA4MywgCi0gICAgODQsIDc5LCA3OCwgMTI4LCA4MCwgNjksIDc2LCA2NSwgODMsIDg0LCA3OSwgMjA2LCA4MCwgNjksIDczLCA4NCwgNzIsIAotICAgIDEyOCwgODAsIDY5LCA3MiwgNjksIDcyLCAxMjgsIDgwLCA2OSwgNzIsIDY5LCAyMDAsIDgwLCA2OSwgNzIsIDEyOCwgODAsIAotICAgIDY5LCAyMDAsIDgwLCA2OSwgNjksIDkwLCA3MywgMTI4LCA4MCwgNjksIDY5LCA4MywgNzIsIDczLCAxMjgsIDgwLCA2OSwgCi0gICAgNjksIDgwLCAxMjgsIDgwLCA2OSwgNjksIDc3LCAxMjgsIDgwLCA2OSwgNjksIDczLCAxMjgsIDgwLCA2OSwgNjksIDEyOCwgCi0gICAgODAsIDY5LCA2OCwgNjksIDgzLCA4NCwgODIsIDczLCA2NSwgNzgsIDgzLCAxMjgsIDgwLCA2OSwgNjgsIDY5LCA4MywgODQsIAotICAgIDgyLCA3MywgNjUsIDc4LCAxMjgsIDgwLCA2OSwgNjgsIDY5LCA4MywgODQsIDY1LCA3NiwgMTI4LCA4MCwgNjksIDY4LCA2OSwgCi0gICAgODMsIDg0LCA2NSwgMjA0LCA4MCwgNjksIDY4LCA2NSwgMjA0LCA4MCwgNjksIDY1LCA3NSwgMjExLCA4MCwgNjksIDY1LCAKLSAgICA2NywgNzIsIDEyOCwgODAsIDY5LCA2NSwgNjcsIDY5LCAxMjgsIDgwLCA2OSwgNjUsIDY3LCAxOTcsIDgwLCA2OCwgNzMsIAotICAgIDEyOCwgODAsIDY4LCA3MCwgMTI4LCA4MCwgNjgsIDEyOCwgODAsIDY3LCAxMjgsIDgwLCA2NSwgOTAsIDY5LCA4MiwgMTI4LCAKLSAgICA4MCwgNjUsIDg5LCA2OSwgODIsIDc5LCA3NSwgMTI4LCA4MCwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA4MCwgNjUsIAotICAgIDg5LCAxMjgsIDgwLCA2NSwgODgsIDEyOCwgODAsIDY1LCA4NywgNzgsIDEyOCwgODAsIDY1LCAyMTUsIDgwLCA2NSwgODYsIAotICAgIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA4MCwgNjUsIDg1LCAxMjgsIDgwLCA2NSwgMjEzLCA4MCwgNjUsIDg0LCA4NCwgCi0gICAgNjksIDgyLCA3OCwgMTI4LCA4MCwgNjUsIDg0LCA3MiwgNjUsIDc3LCA2NSwgODMsIDY1LCA4NCwgMTI4LCA4MCwgNjUsIDg0LCAKLSAgICAyMDAsIDgwLCA2NSwgODQsIDY1LCA3NSwgMTI4LCA4MCwgNjUsIDg0LCA2NSwgNzIsIDEyOCwgODAsIDY1LCA4NCwgMTI4LCAKLSAgICA4MCwgNjUsIDgzLCA4NSwgODEsIDEyOCwgODAsIDY1LCA4MywgODMsIDgwLCA3OSwgODIsIDIxMiwgODAsIDY1LCA4MywgODMsIAotICAgIDczLCA4NiwgNjksIDQ1LCA4MCwgODUsIDc2LCA3NiwgNDUsIDg1LCA4MCwgNDUsIDc5LCA4NSwgODQsIDgwLCA4NSwgMjEyLCAKLSAgICA4MCwgNjUsIDgzLCA4MywgNzMsIDg2LCA2OSwgNDUsIDgwLCA4NSwgNzYsIDc2LCA0NSwgNjgsIDc5LCA4NywgNzgsIDQ1LCAKLSAgICA3OSwgODUsIDg0LCA4MCwgODUsIDIxMiwgODAsIDY1LCA4MywgODMsIDY5LCA3OCwgNzEsIDY5LCAyMTAsIDgwLCA2NSwgODMsIAotICAgIDcyLCA4NCwgNjUsIDEyOCwgODAsIDY1LCA4MywgNzIsIDY1LCA2OSwgMTI4LCA4MCwgNjUsIDgzLCA2OSwgODEsIDEyOCwgCi0gICAgODAsIDY1LCA4MywgNjUsIDc4LCA3MSwgNjUsIDIwNiwgODAsIDY1LCA4MiwgODUsIDc3LCAxMjgsIDgwLCA2NSwgODIsIDg0LCAKLSAgICAyMTcsIDgwLCA2NSwgODIsIDg0LCA3OCwgNjksIDgyLCA4MywgNzIsIDczLCAyMDgsIDgwLCA2NSwgODIsIDg0LCA3MywgNjUsIAotICAgIDc2LCA3NiwgODksIDQ1LCA4MiwgNjksIDY3LCA4OSwgNjcsIDc2LCA2OSwgMTk2LCA4MCwgNjUsIDgyLCA4NCwgNzMsIDY1LCAKLSAgICAyMDQsIDgwLCA2NSwgODIsIDg0LCA3MiwgNzMsIDY1LCAyMDYsIDgwLCA2NSwgODIsIDIxMiwgODAsIDY1LCA4MiwgNzUsIAotICAgIDEyOCwgODAsIDY1LCA4MiwgNzMsIDY3LCA3MiwgNzksIDc4LCAxMjgsIDgwLCA2NSwgODIsIDY5LCA4MywgODQsIDczLCA3MSwgCi0gICAgNzcsIDY5LCA3OCwgNzksIDIwNiwgODAsIDY1LCA4MiwgNjksIDgyLCA2OSwgNzgsIDEyOCwgODAsIDY1LCA4MiwgNjksIDc4LCAKLSAgICA4NCwgNzIsIDY5LCA4MywgNzMsIDgzLCAxMjgsIDgwLCA2NSwgODIsIDY5LCA3OCwgODQsIDcyLCA2OSwgODMsIDczLCAyMTEsIAotICAgIDgwLCA2NSwgODIsIDY5LCA3OCwgODQsIDcyLCA2OSwgODMsIDY5LCAyMTEsIDgwLCA2NSwgODIsIDY1LCA4MCwgNzIsIDgyLCAKLSAgICA2NSwgODMsIDE5NywgODAsIDY1LCA4MiwgNjUsIDc2LCA3NiwgNjksIDc2LCA3OSwgNzEsIDgyLCA2NSwgNzcsIDEyOCwgODAsIAotICAgIDY1LCA4MiwgNjUsIDc2LCA3NiwgNjksIDc2LCAxMjgsIDgwLCA2NSwgODIsIDY1LCA3NiwgNzYsIDY5LCAyMDQsIDgwLCA2NSwgCi0gICAgODIsIDY1LCA3NSwgNzYsIDczLCA4NCwgNzMsIDc1LCA3MywgMTI4LCA4MCwgNjUsIDgyLCA2NSwgNzUsIDc2LCA3MywgODQsIAotICAgIDczLCA3NSwgMjAxLCA4MCwgNjUsIDgyLCA2NSwgNzUsIDY1LCA3NiwgNjksIDgzLCA3NywgMTkzLCA4MCwgNjUsIDgyLCA2NSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA3OSwgODMsIDEyOCwgODAsIDY1LCA4MiwgNjUsIDcxLCA4MiwgNjUsIDgwLCA3MiwgMTI4LCAKLSAgICA4MCwgNjUsIDgyLCA2NSwgNzEsIDgyLCA2NSwgODAsIDIwMCwgODAsIDY1LCA4MiwgNjUsIDEyOCwgODAsIDY1LCA4MiwgCi0gICAgMTI4LCA4MCwgNjUsIDgwLCA4OSwgODIsIDg1LCA4MywgMTI4LCA4MCwgNjUsIDgwLCA2OSwgODIsIDY3LCA3NiwgNzMsIDgwLCAKLSAgICA4MywgMTI4LCA4MCwgNjUsIDgwLCA2OSwgODIsIDY3LCA3NiwgNzMsIDgwLCAxMjgsIDgwLCA2NSwgODAsIDY5LCAyMTAsIAotICAgIDgwLCA2NSwgODAsIDEyOCwgODAsIDY1LCAyMDgsIDgwLCA2NSwgMjA3LCA4MCwgNjUsIDc4LCA4OSwgODUsIDc1LCA4NSwgCi0gICAgMTI4LCA4MCwgNjUsIDc4LCA4OSwgNzMsIDc1LCA4NSwgMTI4LCA4MCwgNjUsIDc4LCA4OSwgNjksIDY3LCA2OSwgNzUsIAotICAgIDEyOCwgODAsIDY1LCA3OCwgODksIDY1LCA3OCwgNzEsIDcxLCA2NSwgMTI4LCA4MCwgNjUsIDc4LCA4OSwgNjUsIDc1LCA4MiwgCi0gICAgNjUsIDEyOCwgODAsIDY1LCA3OCwgODQsIDczLCAxMjgsIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCA0NSwgODAsIDczLCAKLSAgICA2OSwgODUsIDgwLCAxMjgsIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCA0NSwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgCi0gICAgODUsIDc4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODAsIDY1LCA3OCwgNzksIDc4LCA3MSwgNzksIDc4LCA2NSwgNzgsIAotICAgIDEyOCwgODAsIDY1LCA3OCwgNzksIDc2LCA3OSwgNzgsIDcxLCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA4NywgNzMsIDgzLCA2NSwgCi0gICAgNjgsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDgyLCA2NSwgNzgsIDcxLCA3NSwgNjksIDgwLCAxMjgsIDgwLCA2NSwgNzgsIDcxLCAKLSAgICA3OSwgNzYsIDY1LCA4NCwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgNzYsIDc5LCA3OCwgNzEsIDEyOCwgODAsIDY1LCA3OCwgNzEsIAotICAgIDc2LCA2NSwgODksIDY1LCA4MiwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgNzUsIDc5LCA3OCwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgCi0gICAgNzUsIDY1LCA4NCwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgNzIsIDg1LCA3NiwgODUsIDEyOCwgODAsIDY1LCA3OCwgNzEsIAorICAgIDc5LCA4MCwgNzYsIDY5LCAxMjgsIDgwLCA2OSwgNzgsIDg0LCA2NSwgODQsIDcyLCA3NiwgNzksIDc4LCAxMjgsIDgwLCA2OSwgCisgICAgNzgsIDg0LCA2NSwgODMsIDY5LCA3NywgNjksIDEyOCwgODAsIDY5LCA3OCwgODQsIDY1LCA3MSwgODIsIDY1LCA3NywgMTI4LCAKKyAgICA4MCwgNjksIDc4LCA4NCwgNjUsIDcxLCA3OSwgNzgsIDEyOCwgODAsIDY5LCA3OCwgODMsIDg1LCAxMjgsIDgwLCA2OSwgNzgsIAorICAgIDgzLCA3MywgODYsIDE5NywgODAsIDY5LCA3OCwgNzgsIDIxNywgODAsIDY5LCA3OCwgNzgsIDY1LCA3OCwgODQsIDEyOCwgCisgICAgODAsIDY5LCA3OCwgNzMsIDcyLCA3MywgMTI4LCA4MCwgNjksIDc4LCA3MSwgODUsIDczLCA3OCwgMTI4LCA4MCwgNjksIDc4LCAKKyAgICA3MSwgNzUsIDY1LCA3NiwgMTI4LCA4MCwgNjksIDc4LCA2OSwgODQsIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODAsIAorICAgIDY5LCA3OCwgNjcsIDczLCA3NiwgMTI4LCA4MCwgNjksIDc2LCA2NSwgODMsIDg0LCA3OSwgNzgsIDEyOCwgODAsIDY5LCA3NiwgCisgICAgNjUsIDgzLCA4NCwgNzksIDIwNiwgODAsIDY5LCA3MywgODQsIDcyLCAxMjgsIDgwLCA2OSwgNzIsIDY5LCA3MiwgMTI4LCAKKyAgICA4MCwgNjksIDcyLCA2OSwgMjAwLCA4MCwgNjksIDcyLCAxMjgsIDgwLCA2OSwgMjAwLCA4MCwgNjksIDY5LCA5MCwgNzMsIAorICAgIDEyOCwgODAsIDY5LCA2OSwgODMsIDcyLCA3MywgMTI4LCA4MCwgNjksIDY5LCA4MCwgMTI4LCA4MCwgNjksIDY5LCA3NywgCisgICAgMTI4LCA4MCwgNjksIDY5LCA3MywgMTI4LCA4MCwgNjksIDY5LCAxMjgsIDgwLCA2OSwgNjgsIDY5LCA4MywgODQsIDgyLCAKKyAgICA3MywgNjUsIDc4LCA4MywgMTI4LCA4MCwgNjksIDY4LCA2OSwgODMsIDg0LCA4MiwgNzMsIDY1LCA3OCwgMTI4LCA4MCwgNjksIAorICAgIDY4LCA2OSwgODMsIDg0LCA2NSwgNzYsIDEyOCwgODAsIDY5LCA2OCwgNjksIDgzLCA4NCwgNjUsIDIwNCwgODAsIDY5LCA2OCwgCisgICAgNjUsIDIwNCwgODAsIDY5LCA2NSwgNzgsIDg1LCA4NCwgODMsIDEyOCwgODAsIDY5LCA2NSwgNzUsIDIxMSwgODAsIDY5LCAKKyAgICA2NSwgNjcsIDcyLCAxMjgsIDgwLCA2OSwgNjUsIDY3LCA2OSwgMTI4LCA4MCwgNjksIDY1LCA2NywgMTk3LCA4MCwgNjgsIAorICAgIDczLCAxMjgsIDgwLCA2OCwgNzAsIDEyOCwgODAsIDY4LCAxMjgsIDgwLCA2NywgMTI4LCA4MCwgNjUsIDkwLCA2OSwgODIsIAorICAgIDEyOCwgODAsIDY1LCA4OSwgNjksIDgyLCA3OSwgNzUsIDEyOCwgODAsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgCisgICAgODAsIDY1LCA4OSwgMTI4LCA4MCwgNjUsIDg4LCAxMjgsIDgwLCA2NSwgODcsIDc4LCAxMjgsIDgwLCA2NSwgMjE1LCA4MCwgCisgICAgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgODAsIDY1LCA4NSwgMTI4LCA4MCwgNjUsIDIxMywgODAsIDY1LCAKKyAgICA4NCwgODQsIDY5LCA4MiwgNzgsIDEyOCwgODAsIDY1LCA4NCwgNzIsIDY1LCA3NywgNjUsIDgzLCA2NSwgODQsIDEyOCwgODAsIAorICAgIDY1LCA4NCwgMjAwLCA4MCwgNjUsIDg0LCA2NSwgNzUsIDEyOCwgODAsIDY1LCA4NCwgNjUsIDcyLCAxMjgsIDgwLCA2NSwgCisgICAgODQsIDEyOCwgODAsIDY1LCA4MywgODUsIDgxLCAxMjgsIDgwLCA2NSwgODMsIDgzLCA4MCwgNzksIDgyLCAyMTIsIDgwLCAKKyAgICA2NSwgODMsIDgzLCA3MywgODYsIDY5LCA0NSwgODAsIDg1LCA3NiwgNzYsIDQ1LCA4NSwgODAsIDQ1LCA3OSwgODUsIDg0LCAKKyAgICA4MCwgODUsIDIxMiwgODAsIDY1LCA4MywgODMsIDczLCA4NiwgNjksIDQ1LCA4MCwgODUsIDc2LCA3NiwgNDUsIDY4LCA3OSwgCisgICAgODcsIDc4LCA0NSwgNzksIDg1LCA4NCwgODAsIDg1LCAyMTIsIDgwLCA2NSwgODMsIDgzLCA2OSwgNzgsIDcxLCA2OSwgMjEwLCAKKyAgICA4MCwgNjUsIDgzLCA3MiwgODQsIDY1LCAxMjgsIDgwLCA2NSwgODMsIDcyLCA2NSwgNjksIDEyOCwgODAsIDY1LCA4MywgNjksIAorICAgIDgxLCAxMjgsIDgwLCA2NSwgODMsIDY1LCA3OCwgNzEsIDY1LCAyMDYsIDgwLCA2NSwgODIsIDg1LCA3NywgMTI4LCA4MCwgCisgICAgNjUsIDgyLCA4NCwgMjE3LCA4MCwgNjUsIDgyLCA4NCwgNzgsIDY5LCA4MiwgODMsIDcyLCA3MywgMjA4LCA4MCwgNjUsIDgyLCAKKyAgICA4NCwgNzMsIDY1LCA3NiwgNzYsIDg5LCA0NSwgODIsIDY5LCA2NywgODksIDY3LCA3NiwgNjksIDE5NiwgODAsIDY1LCA4MiwgCisgICAgODQsIDczLCA2NSwgMjA0LCA4MCwgNjUsIDgyLCA4NCwgNzIsIDczLCA2NSwgMjA2LCA4MCwgNjUsIDgyLCAyMTIsIDgwLCAKKyAgICA2NSwgODIsIDc1LCAxMjgsIDgwLCA2NSwgODIsIDczLCA2NywgNzIsIDc5LCA3OCwgMTI4LCA4MCwgNjUsIDgyLCA2OSwgODMsIAorICAgIDg0LCA3MywgNzEsIDc3LCA2OSwgNzgsIDc5LCAyMDYsIDgwLCA2NSwgODIsIDY5LCA4MiwgNjksIDc4LCAxMjgsIDgwLCA2NSwgCisgICAgODIsIDY5LCA3OCwgODQsIDcyLCA2OSwgODMsIDczLCA4MywgMTI4LCA4MCwgNjUsIDgyLCA2OSwgNzgsIDg0LCA3MiwgNjksIAorICAgIDgzLCA3MywgMjExLCA4MCwgNjUsIDgyLCA2OSwgNzgsIDg0LCA3MiwgNjksIDgzLCA2OSwgMjExLCA4MCwgNjUsIDgyLCA2NSwgCisgICAgODAsIDcyLCA4MiwgNjUsIDgzLCAxOTcsIDgwLCA2NSwgODIsIDY1LCA3NiwgNzYsIDY5LCA3NiwgNzksIDcxLCA4MiwgNjUsIAorICAgIDc3LCAxMjgsIDgwLCA2NSwgODIsIDY1LCA3NiwgNzYsIDY5LCA3NiwgMTI4LCA4MCwgNjUsIDgyLCA2NSwgNzYsIDc2LCA2OSwgCisgICAgMjA0LCA4MCwgNjUsIDgyLCA2NSwgNzUsIDc2LCA3MywgODQsIDczLCA3NSwgNzMsIDEyOCwgODAsIDY1LCA4MiwgNjUsIDc1LCAKKyAgICA3NiwgNzMsIDg0LCA3MywgNzUsIDIwMSwgODAsIDY1LCA4MiwgNjUsIDc1LCA2NSwgNzYsIDY5LCA4MywgNzcsIDE5MywgODAsIAorICAgIDY1LCA4MiwgNjUsIDcxLCA4MiwgNjUsIDgwLCA3MiwgNzksIDgzLCAxMjgsIDgwLCA2NSwgODIsIDY1LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDEyOCwgODAsIDY1LCA4MiwgNjUsIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDgwLCA2NSwgODIsIDY1LCAxMjgsIAorICAgIDgwLCA2NSwgODIsIDEyOCwgODAsIDY1LCA4MCwgODksIDgyLCA4NSwgODMsIDEyOCwgODAsIDY1LCA4MCwgNjksIDgyLCA2NywgCisgICAgNzYsIDczLCA4MCwgODMsIDEyOCwgODAsIDY1LCA4MCwgNjksIDgyLCA2NywgNzYsIDczLCA4MCwgMTI4LCA4MCwgNjUsIDgwLCAKKyAgICA2OSwgMjEwLCA4MCwgNjUsIDgwLCAxMjgsIDgwLCA2NSwgMjA4LCA4MCwgNjUsIDIwNywgODAsIDY1LCA3OCwgODksIDg1LCAKKyAgICA3NSwgODUsIDEyOCwgODAsIDY1LCA3OCwgODksIDczLCA3NSwgODUsIDEyOCwgODAsIDY1LCA3OCwgODksIDY5LCA2NywgNjksIAorICAgIDc1LCAxMjgsIDgwLCA2NSwgNzgsIDg5LCA2NSwgNzgsIDcxLCA3MSwgNjUsIDEyOCwgODAsIDY1LCA3OCwgODksIDY1LCA3NSwgCisgICAgODIsIDY1LCAxMjgsIDgwLCA2NSwgNzgsIDg0LCA3MywgMTI4LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCAKKyAgICA3MywgNjksIDg1LCA4MCwgMTI4LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgNDUsIDc1LCA2NSwgODAsIDg5LCA2OSwgCisgICAgNzksIDg1LCA3OCwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgwLCA2NSwgNzgsIDc5LCA3OCwgNzEsIDc5LCA3OCwgNjUsIAorICAgIDc4LCAxMjgsIDgwLCA2NSwgNzgsIDc5LCA3NiwgNzksIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgODcsIDczLCA4MywgCisgICAgNjUsIDY4LCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA4MiwgNjUsIDc4LCA3MSwgNzUsIDY5LCA4MCwgMTI4LCA4MCwgNjUsIDc4LCAKKyAgICA3MSwgNzksIDc2LCA2NSwgODQsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDc2LCA3OSwgNzgsIDcxLCAxMjgsIDgwLCA2NSwgNzgsIAorICAgIDcxLCA3NiwgNjUsIDg5LCA2NSwgODIsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDc1LCA3OSwgNzgsIDEyOCwgODAsIDY1LCA3OCwgCisgICAgNzEsIDc1LCA2NSwgODQsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDcyLCA4NSwgNzYsIDg1LCAxMjgsIDgwLCA2NSwgNzgsIDcxLCAKICAgICAxMjgsIDgwLCA2NSwgNzgsIDY5LCA4NSwgNzYsIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDgwLCA2NSwgNzgsIDY4LCAxOTMsIAotICAgIDgwLCA2NSwgNzgsIDY1LCA2OSwgNzYsIDY1LCA2OSwgNzgsIDcxLCAxMjgsIDgwLCA2NSwgNzgsIDEyOCwgODAsIDY1LCA3NywgCi0gICAgODUsIDc4LCA3MSwgNzUsIDY1LCA3MiwgMTI4LCA4MCwgNjUsIDc3LCA4NSwgNjgsIDgwLCA3OSwgNjgsIDEyOCwgODAsIDY1LCAKLSAgICA3NywgODMsIDcyLCA2NSwgNjksIDEyOCwgODAsIDY1LCA3NywgODAsIDcyLCA4OSwgNzYsIDczLCA2NSwgMjA2LCA4MCwgNjUsIAotICAgIDc3LCA3MywgNzgsIDcxLCA3NSwgNjUsIDc2LCAxMjgsIDgwLCA2NSwgNzcsIDY5LCA4MCwgNjksIDg0LCAxMjgsIDgwLCA2NSwgCi0gICAgNzcsIDY5LCA3OCwgNjksIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDc3LCA2NSwgNjgsIDY1LCAxMjgsIDgwLCA2NSwgNzcsIDY1LCAKLSAgICA2NSwgNjksIDcyLCAxMjgsIDgwLCA2NSwgNzYsIDg1LCA4NCwgNjUsIDEyOCwgODAsIDY1LCA3NiwgNzksIDY3LCA3MiwgNzUsIAotICAgIDY1LCAxMjgsIDgwLCA2NSwgNzYsIDc3LCA4OSwgODIsIDY5LCA3OCwgMTk3LCA4MCwgNjUsIDc2LCAyMDUsIDgwLCA2NSwgCi0gICAgNzYsIDc2LCA2NSwgODcsIDY1LCAxMjgsIDgwLCA2NSwgNzYsIDc2LCA2NSwgODMsIDEyOCwgODAsIDY1LCA3NiwgNjksIDg0LCAKLSAgICA4NCwgNjksIDEyOCwgODAsIDY1LCA3NiwgNjUsIDg1LCA3OCwgMTk5LCA4MCwgNjUsIDc2LCA2NSwgODQsIDY1LCA3NiwgNzMsIAotICAgIDkwLCA2OSwgMTk2LCA4MCwgNjUsIDc2LCA2NSwgODQsIDY1LCA3NiwgNzMsIDkwLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgCi0gICAgODAsIDY1LCA3NiwgNjUsIDg0LCA2NSwgMjA0LCA4MCwgNjUsIDc1LCA4MCwgNjUsIDIwMywgODAsIDY1LCA3MywgODksIDY1LCAKLSAgICA3OCwgNzgsIDc5LCA3MywgMTI4LCA4MCwgNjUsIDczLCA4MiwgODQsIDcyLCA4MiwgNjUsIDEyOCwgODAsIDY1LCA3MywgODIsIAotICAgIDY5LCAxOTYsIDgwLCA2NSwgNzMsIDc4LCA4NCwgNjYsIDgyLCA4NSwgODMsIDcyLCAxMjgsIDgwLCA2NSwgNzMsIDEyOCwgCi0gICAgODAsIDY1LCA3MiwgNzYsIDY1LCA4NiwgMjAxLCA4MCwgNjUsIDcyLCAxMjgsIDgwLCA2NSwgNzEsIDY5LCA4MywgMTI4LCAKLSAgICA4MCwgNjUsIDcxLCA2OSwgODIsIDEyOCwgODAsIDY1LCA3MSwgMTk3LCA4MCwgNjUsIDY4LCA3NywgMTkzLCA4MCwgNjUsIAotICAgIDY4LCA2OCwgNzYsIDE5NywgODAsIDY1LCA2OCwgNjgsIDczLCA3OCwgMTk5LCA4MCwgNjUsIDY4LCAxOTMsIDgwLCA2NSwgCi0gICAgNjgsIDEyOCwgODAsIDY1LCA2NywgNzUsIDczLCA3OCwgNzEsIDEyOCwgODAsIDY1LCA2NywgNzUsIDY1LCA3MSwgNjksIAorICAgIDgwLCA2NSwgNzgsIDY3LCA2NSwgNzUsIDY5LCA4MywgMTI4LCA4MCwgNjUsIDc4LCA2NSwgNjksIDc2LCA2NSwgNjksIDc4LCAKKyAgICA3MSwgMTI4LCA4MCwgNjUsIDc4LCAxMjgsIDgwLCA2NSwgMjA2LCA4MCwgNjUsIDc3LCA4NSwgNzgsIDcxLCA3NSwgNjUsIAorICAgIDcyLCAxMjgsIDgwLCA2NSwgNzcsIDg1LCA2OCwgODAsIDc5LCA2OCwgMTI4LCA4MCwgNjUsIDc3LCA4MywgNzIsIDY1LCA2OSwgCisgICAgMTI4LCA4MCwgNjUsIDc3LCA4MCwgNzIsIDg5LCA3NiwgNzMsIDY1LCAyMDYsIDgwLCA2NSwgNzcsIDczLCA3OCwgNzEsIDc1LCAKKyAgICA2NSwgNzYsIDEyOCwgODAsIDY1LCA3NywgNjksIDgwLCA2OSwgODQsIDEyOCwgODAsIDY1LCA3NywgNjksIDc4LCA2OSwgNzgsIAorICAgIDcxLCAxMjgsIDgwLCA2NSwgNzcsIDY1LCA2OCwgNjUsIDEyOCwgODAsIDY1LCA3NywgNjUsIDY1LCA2OSwgNzIsIDEyOCwgCisgICAgODAsIDY1LCA3NiwgODUsIDg0LCA2NSwgMTI4LCA4MCwgNjUsIDc2LCA3OSwgNjcsIDcyLCA3NSwgNjUsIDEyOCwgODAsIDY1LCAKKyAgICA3NiwgNzcsIDg5LCA4MiwgNjksIDc4LCAxOTcsIDgwLCA2NSwgNzYsIDc3LCAxMjgsIDgwLCA2NSwgNzYsIDIwNSwgODAsIAorICAgIDY1LCA3NiwgNzYsIDY1LCA4NywgNjUsIDEyOCwgODAsIDY1LCA3NiwgNzYsIDY1LCA4MywgMTI4LCA4MCwgNjUsIDc2LCA2OSwgCisgICAgODQsIDg0LCA2OSwgMTI4LCA4MCwgNjUsIDc2LCA2NSwgODUsIDc4LCAxOTksIDgwLCA2NSwgNzYsIDY1LCA4NCwgNjUsIDc2LCAKKyAgICA3MywgOTAsIDY5LCAxOTYsIDgwLCA2NSwgNzYsIDY1LCA4NCwgNjUsIDc2LCA3MywgOTAsIDY1LCA4NCwgNzMsIDc5LCA3OCwgCisgICAgMTI4LCA4MCwgNjUsIDc2LCA2NSwgODQsIDY1LCAyMDQsIDgwLCA2NSwgNzUsIDgwLCA2NSwgMjAzLCA4MCwgNjUsIDczLCAKKyAgICA4OSwgNjUsIDc4LCA3OCwgNzksIDczLCAxMjgsIDgwLCA2NSwgNzMsIDgyLCA4NCwgNzIsIDgyLCA2NSwgMTI4LCA4MCwgNjUsIAorICAgIDczLCA4MiwgNjksIDE5NiwgODAsIDY1LCA3MywgNzgsIDg0LCA2NiwgODIsIDg1LCA4MywgNzIsIDEyOCwgODAsIDY1LCA3MywgCisgICAgMTI4LCA4MCwgNjUsIDcyLCA3NiwgNjUsIDg2LCAyMDEsIDgwLCA2NSwgNzIsIDEyOCwgODAsIDY1LCA3MSwgNjksIDgzLCAKKyAgICAxMjgsIDgwLCA2NSwgNzEsIDY5LCA4MiwgMTI4LCA4MCwgNjUsIDcxLCAxOTcsIDgwLCA2NSwgNjgsIDc3LCAxOTMsIDgwLCAKKyAgICA2NSwgNjgsIDY4LCA3NiwgMTk3LCA4MCwgNjUsIDY4LCA2OCwgNzMsIDc4LCAxOTksIDgwLCA2NSwgNjgsIDE5MywgODAsIAorICAgIDY1LCA2OCwgMTI4LCA4MCwgNjUsIDY3LCA3NSwgNzMsIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDY3LCA3NSwgNjUsIDcxLCA2OSwgCiAgICAgMTI4LCA4MCwgNjUsIDY1LCA4NCwgODUsIDEyOCwgODAsIDY1LCA2NSwgODMsIDY5LCA3OCwgODQsIDc5LCAxMjgsIDgwLCAKICAgICA2NSwgNjUsIDgyLCA2NSwgNjksIDEyOCwgODAsIDY1LCA2NSwgNzcsIDEyOCwgODAsIDY1LCA2NSwgNzMsIDEyOCwgODAsIAogICAgIDY1LCA2NSwgNDUsIDgwLCA3MywgNzYsIDc2LCA2NSwgMTI4LCA4MCwgNjUsIDY1LCAxMjgsIDgwLCA1MCwgMTI4LCA4MCwgCkBAIC0xNzcwLDQ2NCArMTc4Niw0NzEgQEAKICAgICA0OCwgNDgsIDUwLCAxMjgsIDgwLCA0OCwgNDgsIDQ5LCA2NSwgMTI4LCA4MCwgNDgsIDQ4LCA0OSwgMTI4LCA3OSwgODksIAogICAgIDgyLCA2NSwgNzgsIDczLCA4MywgNzcsIDE5MywgNzksIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3OSwgODgsIDczLCA2NSwgCiAgICAgMTI4LCA3OSwgODgsIDczLCAxOTMsIDc5LCA4OCwgNjksIDczLCA2NSwgMjAxLCA3OSwgODgsIDY5LCA3MywgMTkzLCA3OSwgCi0gICAgODYsIDY5LCA4MiwgODIsIDczLCA2OCwgNjksIDEyOCwgNzksIDg2LCA2OSwgODIsIDc2LCA3OSwgNzgsIDE5OSwgNzksIDg2LCAKLSAgICA2OSwgODIsIDc2LCA3MywgNzgsIDY5LCAxMjgsIDc5LCA4NiwgNjksIDgyLCA3NiwgNjUsIDg5LCAxMjgsIDc5LCA4NiwgNjksIAotICAgIDgyLCA3NiwgNjUsIDgwLCA4MCwgNzMsIDc4LCAxOTksIDc5LCA4NiwgNjksIDgyLCA3NiwgNjUsIDgwLCAxMjgsIDc5LCA4NiwgCi0gICAgNjksIDgyLCA3NiwgNjUsIDczLCA2OCwgMTI4LCA3OSwgODYsIDY5LCA4MiwgNjYsIDY1LCA4MiwgMTI4LCA3OSwgODYsIDY1LCAKLSAgICA3NiwgMTI4LCA3OSwgODYsIDY1LCAyMDQsIDc5LCA4NSwgODQsIDc2LCA3MywgNzgsIDY5LCAxOTYsIDc5LCA4NSwgODQsIAotICAgIDc2LCA3MywgNzgsIDY5LCAxMjgsIDc5LCA4NSwgODQsIDY5LCAyMTAsIDc5LCA4NSwgODQsIDY2LCA3OSwgMjE2LCA3OSwgCi0gICAgODUsIDc4LCA3NSwgNzMsIDE5MywgNzksIDg1LCA3OCwgNjcsIDY5LCAxMjgsIDc5LCA4NSwgNzgsIDY3LCAxOTcsIDc5LCAKLSAgICA4NCwgODUsIDEyOCwgNzksIDg0LCA4NCwgNjUsIDg2LCAxOTMsIDc5LCA4NCwgODQsIDEyOCwgNzksIDg0LCA3MiwgNjksIAotICAgIDgyLCAyMTEsIDc5LCA4NCwgNzIsIDY5LCAyMTAsIDc5LCA4NCwgNzIsIDY1LCA3NiwgNjUsIDIwNiwgNzksIDg0LCA3MiwgCi0gICAgNjUsIDc2LCAxMjgsIDc5LCA4MywgNzcsIDY1LCA3OCwgODksIDE5MywgNzksIDgzLCA2NywgMTI4LCA3OSwgODIsIDg0LCAKLSAgICA3MiwgNzksIDcxLCA3OSwgNzgsIDY1LCAyMDQsIDc5LCA4MiwgODQsIDcyLCA3OSwgNjgsIDc5LCAyMTYsIDc5LCA4MiwgNzgsIAotICAgIDY1LCA4NCwgMTk3LCA3OSwgODIsIDc4LCA2NSwgNzcsIDY5LCA3OCwgODQsIDgzLCAxMjgsIDc5LCA4MiwgNzgsIDY1LCA3NywgCi0gICAgNjksIDc4LCA4NCwgMTI4LCA3OSwgODIsIDc4LCA2NSwgNzcsIDY5LCA3OCwgMjEyLCA3OSwgODIsIDc1LCA3MiwgNzksIAotICAgIDIwNiwgNzksIDgyLCA3MywgNzEsIDczLCA3OCwgNjUsIDIwNCwgNzksIDgyLCA3MywgNzEsIDczLCA3OCwgMTI4LCA3OSwgCi0gICAgODIsIDY5LCA0NSwgNTAsIDEyOCwgNzksIDgyLCA2OCwgNzMsIDc4LCA2NSwgMjA0LCA3OSwgODIsIDY4LCA2OSwgMjEwLCAKLSAgICA3OSwgODIsIDY3LCA3MiwgNzMsIDY4LCAxMjgsIDc5LCA4MiwgNjUsIDc4LCA3MSwgMTk3LCA3OSwgODAsIDg0LCA3MywgNzksIAotICAgIDIwNiwgNzksIDgwLCA4NCwgNzMsIDY3LCA2NSwgMjA0LCA3OSwgODAsIDgwLCA4MiwgNjksIDgzLCA4MywgNzMsIDc5LCA3OCwgCi0gICAgMTI4LCA3OSwgODAsIDgwLCA3OSwgODMsIDczLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3OSwgODAsIDgwLCA3OSwgODMsIDczLCAKLSAgICA3OCwgMTk5LCA3OSwgODAsIDgwLCA3OSwgODMsIDY5LCAxMjgsIDc5LCA4MCwgNzIsIDczLCA4NSwgNjcsIDcyLCA4NSwgODMsIAotICAgIDEyOCwgNzksIDgwLCA2OSwgODIsIDY1LCA4NCwgNzksIDgyLCAxMjgsIDc5LCA4MCwgNjksIDgyLCA2NSwgODQsIDc5LCAKLSAgICAyMTAsIDc5LCA4MCwgNjksIDgyLCA2NSwgODQsIDczLCA3OCwgMTk5LCA3OSwgODAsIDY5LCA3OCwgNzMsIDc4LCAxOTksIAotICAgIDc5LCA4MCwgNjksIDc4LCA0NSwgODAsIDEyOCwgNzksIDgwLCA2OSwgNzgsIDQ1LCA3OSwgODUsIDg0LCA3NiwgNzMsIDc4LCAKLSAgICA2OSwgMTk2LCA3OSwgODAsIDY5LCA3OCwgNDUsIDc5LCAxMjgsIDc5LCA4MCwgNjksIDc4LCA0NSwgMjA3LCA3OSwgODAsIAotICAgIDY5LCA3OCwgNDUsIDcyLCA2OSwgNjUsIDY4LCA2OSwgMTk2LCA3OSwgODAsIDY5LCA3OCwgNDUsIDY3LCA3MywgODIsIDY3LCAKLSAgICA4NSwgNzMsIDg0LCA0NSwgNzksIDg1LCA4NCwgODAsIDg1LCAyMTIsIDc5LCA4MCwgNjksIDc4LCAxMjgsIDc5LCA3OSwgOTAsIAotICAgIDY5LCAxMjgsIDc5LCA3OSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc5LCA3OSwgODUsIDEyOCwgNzksIDc5LCA3NywgCi0gICAgODUsIDEyOCwgNzksIDc5LCA3MiwgMTI4LCA3OSwgNzksIDY5LCAxMjgsIDc5LCA3OSwgNjYsIDc5LCA3OSwgNzAsIDczLCAKLSAgICA3NiwgNzMsIDEyOCwgNzksIDc4LCA4NSwgMTI4LCA3OSwgNzgsIDgzLCA4NSwgMTI4LCA3OSwgNzgsIDc4LCAxMjgsIDc5LCAKLSAgICA3OCwgNzUsIDY1LCA4MiwgMTI4LCA3OSwgNzgsIDY5LCA4MywgNjksIDc2LCA3MCwgMTI4LCA3OSwgNzgsIDY5LCA0NSwgODcsIAotICAgIDY1LCAyMTcsIDc5LCA3OCwgNjksIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDc5LCA3OCwgNjksIDQ1LCA3NiwgCi0gICAgNzMsIDc4LCAxOTcsIDc5LCA3OCwgNjcsIDc5LCA3NywgNzMsIDc4LCAxOTksIDc5LCA3OCwgNjUsIDgwLCAxMjgsIDc5LCAKLSAgICA3NywgNzMsIDgzLCA4MywgNzMsIDc5LCAyMDYsIDc5LCA3NywgNzMsIDY3LCA4MiwgNzksIDc4LCAxMjgsIDc5LCA3NywgNzMsIAotICAgIDY3LCA4MiwgNzksIDIwNiwgNzksIDc3LCA2OSwgNzEsIDY1LCAxMjgsIDc5LCA3NywgNjksIDcxLCAxOTMsIDc5LCA3NywgCi0gICAgNjUsIDc2LCA3OSwgNzgsIDEyOCwgNzksIDc2LCA3MywgODYsIDY5LCAxMjgsIDc5LCA3NiwgNzMsIDcxLCA3OSwgMjA2LCAKLSAgICA3OSwgNzYsIDY4LCAxMjgsIDc5LCA3NSwgODQsIDIwNywgNzksIDc1LCA2NSwgODIsIDY1LCAxMjgsIDc5LCA3NSwgNjUsIAotICAgIDgyLCAxOTMsIDc5LCA3NCwgNzMsIDY2LCA4NywgNjUsIDIxNywgNzksIDc0LCA2OSwgNzksIDc4LCAxMjgsIDc5LCA3MywgCi0gICAgNzYsIDEyOCwgNzksIDczLCAyMDQsIDc5LCA3MiwgNzcsIDEyOCwgNzksIDcyLCAyMDUsIDc5LCA3MSwgODIsIDY5LCAxMjgsIAotICAgIDc5LCA3MSwgNzksIDc4LCA2OSwgNzUsIDEyOCwgNzksIDcxLCA3OSwgNzgsIDY5LCAyMDMsIDc5LCA3MSwgNzIsIDY1LCAKLSAgICAyMDUsIDc5LCA3MCwgNzAsIDczLCA2NywgNjksIDgyLCAxMjgsIDc5LCA3MCwgNzAsIDczLCA2NywgNjksIDEyOCwgNzksIAotICAgIDcwLCA3MCwgNzMsIDY3LCAxOTcsIDc5LCA3MCwgNzAsIDEyOCwgNzksIDY5LCA4OSwgMTI4LCA3OSwgNjksIDc1LCAxMjgsIAotICAgIDc5LCA2OSwgNjksIDEyOCwgNzksIDY4LCA2OSwgNzgsIDEyOCwgNzksIDY4LCA2OCwgMTI4LCA3OSwgNjgsIDE5NiwgNzksIAotICAgIDY3LCA4NCwgNzksIDgwLCA4NSwgODMsIDEyOCwgNzksIDY3LCA4NCwgNzksIDY2LCA2OSwgODIsIDEyOCwgNzksIDY3LCA4NCwgCi0gICAgNjksIDIxMiwgNzksIDY3LCA4NCwgNjUsIDcxLCA3OSwgNzgsIDEyOCwgNzksIDY3LCAyMTAsIDc5LCA2NywgNzYsIDc5LCAKLSAgICA2NywgNzUsIDEyOCwgNzksIDY3LCA2NywgNzYsIDg1LCA4MywgNzMsIDc5LCA3OCwgMTI4LCA3OSwgNjYsIDgzLCA4NCwgODIsIAotICAgIDg1LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgNzksIDY2LCA3OSwgNzYsIDIxMSwgNzksIDY2LCA3OSwgMjA0LCA3OSwgCi0gICAgNjYsIDc5LCA3MCwgNzMsIDc2LCA3MywgMTI4LCA3OSwgNjYsIDc2LCA3MywgODEsIDg1LCAxOTcsIDc5LCA2NiwgNzQsIDY5LCAKLSAgICA2NywgMjEyLCA3OSwgNjYsIDY5LCA3NiwgODUsIDgzLCAxMjgsIDc5LCA2NiwgNjksIDc2LCA3OSwgODMsIDEyOCwgNzksIAotICAgIDY2LCAxMjgsIDc5LCA2NSwgODksIDEyOCwgNzksIDY1LCA3NSwgMTI4LCA3OSwgNjUsIDY2LCA3OSwgNjUsIDcwLCA3MywgCi0gICAgNzYsIDczLCAxMjgsIDc5LCAxOTMsIDc5LCA0OCwgNTMsIDQ5LCAxMjgsIDc5LCA0OCwgNTMsIDQ4LCA2NiwgMTI4LCA3OSwgCi0gICAgNDgsIDUzLCA0OCwgNjUsIDEyOCwgNzksIDQ4LCA1MywgNDgsIDEyOCwgNzksIDQ4LCA1MiwgNTcsIDEyOCwgNzksIDQ4LCAKLSAgICA1MiwgNTYsIDEyOCwgNzksIDQ4LCA1MiwgNTUsIDEyOCwgNzksIDQ4LCA1MiwgNTQsIDEyOCwgNzksIDQ4LCA1MiwgNTMsIAotICAgIDEyOCwgNzksIDQ4LCA1MiwgNTIsIDEyOCwgNzksIDQ4LCA1MiwgNTEsIDEyOCwgNzksIDQ4LCA1MiwgNTAsIDEyOCwgNzksIAotICAgIDQ4LCA1MiwgNDksIDEyOCwgNzksIDQ4LCA1MiwgNDgsIDEyOCwgNzksIDQ4LCA1MSwgNTcsIDEyOCwgNzksIDQ4LCA1MSwgCi0gICAgNTYsIDEyOCwgNzksIDQ4LCA1MSwgNTUsIDEyOCwgNzksIDQ4LCA1MSwgNTQsIDY4LCAxMjgsIDc5LCA0OCwgNTEsIDU0LCAKLSAgICA2NywgMTI4LCA3OSwgNDgsIDUxLCA1NCwgNjYsIDEyOCwgNzksIDQ4LCA1MSwgNTQsIDY1LCAxMjgsIDc5LCA0OCwgNTEsIAotICAgIDU0LCAxMjgsIDc5LCA0OCwgNTEsIDUzLCAxMjgsIDc5LCA0OCwgNTEsIDUyLCAxMjgsIDc5LCA0OCwgNTEsIDUxLCA2NSwgCi0gICAgMTI4LCA3OSwgNDgsIDUxLCA1MSwgMTI4LCA3OSwgNDgsIDUxLCA1MCwgMTI4LCA3OSwgNDgsIDUxLCA0OSwgMTI4LCA3OSwgCi0gICAgNDgsIDUxLCA0OCwgNjUsIDEyOCwgNzksIDQ4LCA1MSwgNDgsIDEyOCwgNzksIDQ4LCA1MCwgNTcsIDY1LCAxMjgsIDc5LCAKLSAgICA0OCwgNTAsIDU3LCAxMjgsIDc5LCA0OCwgNTAsIDU2LCAxMjgsIDc5LCA0OCwgNTAsIDU1LCAxMjgsIDc5LCA0OCwgNTAsIAotICAgIDU0LCAxMjgsIDc5LCA0OCwgNTAsIDUzLCA2NSwgMTI4LCA3OSwgNDgsIDUwLCA1MywgMTI4LCA3OSwgNDgsIDUwLCA1MiwgCi0gICAgNjUsIDEyOCwgNzksIDQ4LCA1MCwgNTIsIDEyOCwgNzksIDQ4LCA1MCwgNTEsIDEyOCwgNzksIDQ4LCA1MCwgNTAsIDEyOCwgCi0gICAgNzksIDQ4LCA1MCwgNDksIDEyOCwgNzksIDQ4LCA1MCwgNDgsIDY1LCAxMjgsIDc5LCA0OCwgNTAsIDQ4LCAxMjgsIDc5LCAKLSAgICA0OCwgNDksIDU3LCA2NSwgMTI4LCA3OSwgNDgsIDQ5LCA1NywgMTI4LCA3OSwgNDgsIDQ5LCA1NiwgMTI4LCA3OSwgNDgsIAotICAgIDQ5LCA1NSwgMTI4LCA3OSwgNDgsIDQ5LCA1NCwgMTI4LCA3OSwgNDgsIDQ5LCA1MywgMTI4LCA3OSwgNDgsIDQ5LCA1MiwgCi0gICAgMTI4LCA3OSwgNDgsIDQ5LCA1MSwgMTI4LCA3OSwgNDgsIDQ5LCA1MCwgMTI4LCA3OSwgNDgsIDQ5LCA0OSwgMTI4LCA3OSwgCi0gICAgNDgsIDQ5LCA0OCwgNjcsIDEyOCwgNzksIDQ4LCA0OSwgNDgsIDY2LCAxMjgsIDc5LCA0OCwgNDksIDQ4LCA2NSwgMTI4LCAKLSAgICA3OSwgNDgsIDQ5LCA0OCwgMTI4LCA3OSwgNDgsIDQ4LCA1NywgMTI4LCA3OSwgNDgsIDQ4LCA1NiwgMTI4LCA3OSwgNDgsIAotICAgIDQ4LCA1NSwgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgNzAsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDY5LCAxMjgsIDc5LCA0OCwgCi0gICAgNDgsIDU0LCA2OCwgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgNjcsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDY2LCAxMjgsIDc5LCAKLSAgICA0OCwgNDgsIDU0LCA2NSwgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgMTI4LCA3OSwgNDgsIDQ4LCA1MywgNjUsIDEyOCwgNzksIAotICAgIDQ4LCA0OCwgNTMsIDEyOCwgNzksIDQ4LCA0OCwgNTIsIDEyOCwgNzksIDQ4LCA0OCwgNTEsIDEyOCwgNzksIDQ4LCA0OCwgCi0gICAgNTAsIDEyOCwgNzksIDQ4LCA0OCwgNDksIDY1LCAxMjgsIDc5LCA0OCwgNDgsIDQ5LCAxMjgsIDc5LCA0NSwgODksIDY5LCAKLSAgICAxMjgsIDc5LCA0NSwgNzksIDQ1LCA3MywgMTI4LCA3OSwgNDUsIDY5LCAxMjgsIDc4LCA5MCwgODksIDg4LCAxMjgsIDc4LCAKLSAgICA5MCwgODksIDg0LCAxMjgsIDc4LCA5MCwgODksIDgyLCA4OCwgMTI4LCA3OCwgOTAsIDg5LCA4MiwgMTI4LCA3OCwgOTAsIAotICAgIDg5LCA4MCwgMTI4LCA3OCwgOTAsIDg5LCAxMjgsIDc4LCA5MCwgODUsIDg4LCAxMjgsIDc4LCA5MCwgODUsIDgyLCA4OCwgCi0gICAgMTI4LCA3OCwgOTAsIDg1LCA4MiwgMTI4LCA3OCwgOTAsIDg1LCA4MSwgMTI4LCA3OCwgOTAsIDg1LCA4MCwgMTI4LCA3OCwgCi0gICAgOTAsIDg1LCA3OSwgODgsIDEyOCwgNzgsIDkwLCA4NSwgNzksIDEyOCwgNzgsIDkwLCA4NSwgMjA2LCA3OCwgOTAsIDg1LCAKLSAgICAxMjgsIDc4LCA5MCwgNzksIDg4LCAxMjgsIDc4LCA5MCwgNzksIDgwLCAxMjgsIDc4LCA5MCwgNzMsIDg4LCAxMjgsIDc4LCAKLSAgICA5MCwgNzMsIDg0LCAxMjgsIDc4LCA5MCwgNzMsIDgwLCAxMjgsIDc4LCA5MCwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgOTAsIAotICAgIDczLCA2OSwgODAsIDEyOCwgNzgsIDkwLCA3MywgNjksIDEyOCwgNzgsIDkwLCA3MywgMTI4LCA3OCwgOTAsIDY5LCA4OCwgCi0gICAgMTI4LCA3OCwgOTAsIDY5LCA4NSwgNzcsIDEyOCwgNzgsIDkwLCA2OSwgMTI4LCA3OCwgOTAsIDY1LCA4OCwgMTI4LCA3OCwgCi0gICAgOTAsIDY1LCA4NCwgMTI4LCA3OCwgOTAsIDY1LCA4MSwgMTI4LCA3OCwgOTAsIDY1LCA4MCwgMTI4LCA3OCwgOTAsIDY1LCAKLSAgICAxMjgsIDc4LCA5MCwgMTkzLCA3OCwgODksIDg3LCA2NSwgMTI4LCA3OCwgODksIDg1LCA4OCwgMTI4LCA3OCwgODksIDg1LCAKLSAgICA4NSwgMTI4LCA3OCwgODksIDg1LCA4NCwgMTI4LCA3OCwgODksIDg1LCA4MCwgMTI4LCA3OCwgODksIDg1LCA3OSwgODgsIAotICAgIDEyOCwgNzgsIDg5LCA4NSwgNzksIDgwLCAxMjgsIDc4LCA4OSwgODUsIDc5LCAxMjgsIDc4LCA4OSwgODUsIDc4LCAxMjgsIAotICAgIDc4LCA4OSwgODUsIDY5LCAxMjgsIDc4LCA4OSwgODUsIDEyOCwgNzgsIDg5LCA3OSwgODgsIDEyOCwgNzgsIDg5LCA3OSwgCi0gICAgODQsIDEyOCwgNzgsIDg5LCA3OSwgODAsIDEyOCwgNzgsIDg5LCA3OSwgNzksIDEyOCwgNzgsIDg5LCA3OSwgNzgsIDEyOCwgCi0gICAgNzgsIDg5LCA3OSwgNjUsIDEyOCwgNzgsIDg5LCA3OSwgMTI4LCA3OCwgODksIDc0LCA2NSwgMTI4LCA3OCwgODksIDczLCAKLSAgICA4OCwgMTI4LCA3OCwgODksIDczLCA4NCwgMTI4LCA3OCwgODksIDczLCAyMTIsIDc4LCA4OSwgNzMsIDIxMSwgNzgsIDg5LCAKLSAgICA3MywgMjEwLCA3OCwgODksIDczLCA4MCwgMTI4LCA3OCwgODksIDczLCA3OCwgNDUsIDY4LCA3OSwgMTI4LCA3OCwgODksIAotICAgIDczLCA3OCwgMTI4LCA3OCwgODksIDczLCA3MywgMTI4LCA3OCwgODksIDczLCA2OSwgODgsIDEyOCwgNzgsIDg5LCA3MywgCi0gICAgNjksIDg0LCAxMjgsIDc4LCA4OSwgNzMsIDY5LCA4MCwgMTI4LCA3OCwgODksIDczLCA2OSwgMTI4LCA3OCwgODksIDczLCAKLSAgICAxMjgsIDc4LCA4OSwgMjAxLCA3OCwgODksIDcyLCA2NSwgMTI4LCA3OCwgODksIDY5LCA4NCwgMTI4LCA3OCwgODksIDY5LCAKLSAgICAyMTIsIDc4LCA4OSwgNjksIDc4LCAxMjgsIDc4LCA4OSwgNjksIDcyLCAxMjgsIDc4LCA4OSwgNjksIDIwMCwgNzgsIDg5LCAKLSAgICA2OSwgNjksIDEyOCwgNzgsIDg5LCA2OSwgMTI4LCA3OCwgODksIDE5NiwgNzgsIDg5LCA2NywgNjUsIDEyOCwgNzgsIDg5LCAKLSAgICA2NSwgODUsIDEyOCwgNzgsIDg5LCA2NSwgNzMsIDEyOCwgNzgsIDg5LCA2NSwgNzIsIDEyOCwgNzgsIDg5LCA2NSwgNjksIAotICAgIDc3LCA2NSwgNjksIDEyOCwgNzgsIDg5LCA2NSwgNjUsIDEyOCwgNzgsIDg3LCA3OSwgNzksIDEyOCwgNzgsIDg3LCA3OSwgCi0gICAgMTI4LCA3OCwgODcsIDczLCA3MywgMTI4LCA3OCwgODcsIDczLCAxMjgsIDc4LCA4NywgNjksIDEyOCwgNzgsIDg3LCA2NSwgCi0gICAgNjUsIDEyOCwgNzgsIDg3LCA2NSwgMTI4LCA3OCwgODcsIDEyOCwgNzgsIDg2LCAxMjgsIDc4LCA4NSwgODgsIDEyOCwgNzgsIAotICAgIDg1LCA4NSwgNzgsIDEyOCwgNzgsIDg1LCA4NSwgMTI4LCA3OCwgODUsIDg0LCA3MywgNzYsIDc2LCA4NSwgMTI4LCA3OCwgCi0gICAgODUsIDg0LCAxMjgsIDc4LCA4NSwgMjEyLCA3OCwgODUsIDgyLCA4OCwgMTI4LCA3OCwgODUsIDgyLCAxMjgsIDc4LCA4NSwgCi0gICAgODAsIDEyOCwgNzgsIDg1LCA3OSwgODgsIDEyOCwgNzgsIDg1LCA3OSwgODAsIDEyOCwgNzgsIDg1LCA3OSwgMTI4LCA3OCwgCi0gICAgODUsIDc4LCA4NSwgOTAsIDEyOCwgNzgsIDg1LCA3OCwgODUsIDIxOCwgNzgsIDg1LCA3OCwgNzEsIDEyOCwgNzgsIDg1LCAKLSAgICA3OCwgNjUsIDg2LCA4NSwgMjEyLCA3OCwgODUsIDc4LCA2NSwgODYsIDczLCAyMDMsIDc4LCA4NSwgNzgsIDEyOCwgNzgsIAotICAgIDg1LCAyMDYsIDc4LCA4NSwgNzcsIDY5LCA4MiwgMjA3LCA3OCwgODUsIDc3LCA2OSwgODIsIDY1LCA4NCwgNzksIDIxMCwgCi0gICAgNzgsIDg1LCA3NywgNjksIDgyLCA2NSwgMjA0LCA3OCwgODUsIDc3LCA2NiwgNjksIDgyLCA4MywgMTI4LCA3OCwgODUsIDc3LCAKLSAgICA2NiwgNjksIDgyLCAxMjgsIDc4LCA4NSwgNzcsIDEyOCwgNzgsIDg1LCA3NiwgNzYsIDEyOCwgNzgsIDg1LCA3NiwgMjA0LCAKLSAgICA3OCwgODUsIDc2LCAxMjgsIDc4LCA4NSwgNzUsIDg0LCA2NSwgMTI4LCA3OCwgODUsIDY5LCA3OCwgNzEsIDEyOCwgNzgsIAotICAgIDg1LCA2OSwgMTI4LCA3OCwgODUsIDY2LCA3MywgNjUsIDIwNiwgNzgsIDg1LCA2NSwgNjksIDEyOCwgNzgsIDg1LCA0OSwgCi0gICAgNDksIDEyOCwgNzgsIDg1LCA0OSwgMTc3LCA3OCwgODUsIDQ4LCA1MCwgNTAsIDY1LCAxMjgsIDc4LCA4NSwgNDgsIDUwLCAKLSAgICA1MCwgMTI4LCA3OCwgODUsIDQ4LCA1MCwgNDksIDEyOCwgNzgsIDg1LCA0OCwgNTAsIDQ4LCAxMjgsIDc4LCA4NSwgNDgsIAotICAgIDQ5LCA1NywgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTYsIDY1LCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1NiwgMTI4LCA3OCwgCi0gICAgODUsIDQ4LCA0OSwgNTUsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDU0LCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1MywgMTI4LCAKLSAgICA3OCwgODUsIDQ4LCA0OSwgNTIsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDUxLCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1MCwgCi0gICAgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNDksIDY1LCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA0OSwgMTI4LCA3OCwgODUsIDQ4LCAKLSAgICA0OSwgNDgsIDY1LCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA0OCwgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNTcsIDEyOCwgNzgsIAotICAgIDg1LCA0OCwgNDgsIDU2LCAxMjgsIDc4LCA4NSwgNDgsIDQ4LCA1NSwgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNTQsIDEyOCwgCi0gICAgNzgsIDg1LCA0OCwgNDgsIDUzLCAxMjgsIDc4LCA4NSwgNDgsIDQ4LCA1MiwgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNTEsIAotICAgIDEyOCwgNzgsIDg1LCA0OCwgNDgsIDUwLCAxMjgsIDc4LCA4NSwgNDgsIDQ4LCA0OSwgMTI4LCA3OCwgODQsIDg4LCA3MywgCi0gICAgODYsIDEyOCwgNzgsIDg0LCA4NSwgODUsIDEyOCwgNzgsIDg0LCA4NSwgNzcsIDEyOCwgNzgsIDg0LCA4NSwgNzQsIDEyOCwgCi0gICAgNzgsIDg0LCAyMTMsIDc4LCA4NCwgODMsIDY1LCA4NSwgMTI4LCA3OCwgODQsIDc5LCA4MSwgODAsIDY5LCA3OCwgMTI4LCAKLSAgICA3OCwgODQsIDc5LCA3MSwgMTI4LCA3OCwgODQsIDc5LCAxOTksIDc4LCA4NCwgNzMsIDY5LCAxOTcsIDc4LCA4NCwgNzIsIAotICAgIDY1LCA4NSwgMTI4LCA3OCwgODQsIDY5LCA4NSwgNzgsIDcxLCA2NiwgNjUsIDEyOCwgNzgsIDg0LCA2OSwgODUsIDc3LCAKLSAgICAxMjgsIDc4LCA4NCwgNjksIDc4LCAxMjgsIDc4LCA4NCwgNjksIDY5LCAxMjgsIDc4LCA4NCwgNjUsIDgwLCAxMjgsIDc4LCAKLSAgICA4NCwgNjUsIDIwOCwgNzgsIDg0LCA2NSwgNjUsIDEyOCwgNzgsIDgzLCA4NSwgNzksIDIxMiwgNzgsIDgzLCA4NSwgNzgsIAotICAgIDEyOCwgNzgsIDgzLCA4NSwgNzcsIDEyOCwgNzgsIDgzLCA3OSwgNzcsIDEyOCwgNzgsIDgzLCA3MywgNjksIDY5LCA4NCwgCi0gICAgMTI4LCA3OCwgODMsIDczLCA2OSwgNjksIDgwLCAxMjgsIDc4LCA4MywgNzMsIDY5LCA2OSwgMTI4LCA3OCwgODMsIDcyLCAKLSAgICA4NSwgODQsIDEyOCwgNzgsIDgzLCA3MiwgODUsIDIxMiwgNzgsIDgzLCA3MiwgODUsIDc5LCA4MCwgMTI4LCA3OCwgODMsIAotICAgIDcyLCA4NSwgNjksIDEyOCwgNzgsIDgzLCA3MiwgNzMsIDY5LCA2OSwgMTI4LCA3OCwgODMsIDcyLCA2OSwgNjksIDEyOCwgCi0gICAgNzgsIDgzLCA3MiwgNjUsIDgxLCAxMjgsIDc4LCA4MywgNzIsIDY1LCAxMjgsIDc4LCA4MywgNjksIDg1LCA2NSwgNjksIDc4LCAKLSAgICAxMjgsIDc4LCA4MywgNjksIDc4LCAxMjgsIDc4LCA4MywgNjUsIDEyOCwgNzgsIDgyLCA4OSwgODgsIDEyOCwgNzgsIDgyLCAKLSAgICA4OSwgODQsIDEyOCwgNzgsIDgyLCA4OSwgODIsIDg4LCAxMjgsIDc4LCA4MiwgODksIDgyLCAxMjgsIDc4LCA4MiwgODksIAotICAgIDgwLCAxMjgsIDc4LCA4MiwgODksIDEyOCwgNzgsIDgyLCA4NSwgODgsIDEyOCwgNzgsIDgyLCA4NSwgODQsIDEyOCwgNzgsIAotICAgIDgyLCA4NSwgODIsIDg4LCAxMjgsIDc4LCA4MiwgODUsIDgyLCAxMjgsIDc4LCA4MiwgODUsIDgwLCAxMjgsIDc4LCA4MiwgCi0gICAgODUsIDY1LCAxMjgsIDc4LCA4MiwgODUsIDEyOCwgNzgsIDgyLCA3OSwgODgsIDEyOCwgNzgsIDgyLCA3OSwgODAsIDEyOCwgCi0gICAgNzgsIDgyLCA3OSwgMTI4LCA3OCwgODIsIDY5LCA4OCwgMTI4LCA3OCwgODIsIDY5LCA4NCwgMTI4LCA3OCwgODIsIDY5LCAKLSAgICAyMTEsIDc4LCA4MiwgNjksIDgwLCAxMjgsIDc4LCA4MiwgNjksIDEyOCwgNzgsIDgyLCA2NSwgODgsIDEyOCwgNzgsIDgyLCAKLSAgICA2NSwgODQsIDEyOCwgNzgsIDgyLCA2NSwgODAsIDEyOCwgNzgsIDgyLCA2NSwgMTI4LCA3OCwgODEsIDczLCA3MSwgMTI4LCAKLSAgICA3OCwgNzksIDg5LCAxMjgsIDc4LCA3OSwgODgsIDEyOCwgNzgsIDc5LCA4NywgNjcsIDEyOCwgNzgsIDc5LCA4NiwgNjksIAotICAgIDc3LCA2NiwgNjksIDgyLCAxMjgsIDc4LCA3OSwgODQsIDg0LCA3OSwgMTI4LCA3OCwgNzksIDg0LCA2OSwgODMsIDEyOCwgCi0gICAgNzgsIDc5LCA4NCwgNjksIDcyLCA2OSwgNjUsIDY4LCAxMjgsIDc4LCA3OSwgODQsIDY5LCA3MiwgNjksIDY1LCAxOTYsIDc4LCAKLSAgICA3OSwgODQsIDY5LCA2NiwgNzksIDc5LCA3NSwgMTI4LCA3OCwgNzksIDg0LCA2OSwgNjYsIDc5LCA3OSwgMjAzLCA3OCwgNzksIAotICAgIDg0LCA2OSwgMTI4LCA3OCwgNzksIDg0LCAxOTcsIDc4LCA3OSwgODQsIDY3LCA3MiwgNjksIDE5NiwgNzgsIDc5LCA4NCwgCi0gICAgNjcsIDcyLCAxMjgsIDc4LCA3OSwgODQsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDc4LCA3OSwgODQsIDEyOCwgNzgsIDc5LCAKLSAgICAyMTIsIDc4LCA3OSwgODMsIDY5LCAxMjgsIDc4LCA3OSwgODMsIDE5NywgNzgsIDc5LCA4MiwgODQsIDcyLCA4NywgNjksIAotICAgIDgzLCAyMTIsIDc4LCA3OSwgODIsIDg0LCA3MiwgNjksIDgyLCAyMDYsIDc4LCA3OSwgODIsIDg0LCA3MiwgNjksIDY1LCA4MywgCi0gICAgODQsIDQ1LCA4MCwgNzksIDczLCA3OCwgODQsIDczLCA3OCwgMTk5LCA3OCwgNzksIDgyLCA3NywgNjUsIDIwNCwgNzgsIDc5LCAKLSAgICA4MiwgNjgsIDczLCAxOTUsIDc4LCA3OSwgMjEwLCA3OCwgNzksIDgwLCAxMjgsIDc4LCA3OSwgNzksIDc4LCA4NSwgMTI4LCAKLSAgICA3OCwgNzksIDc5LCAxMjgsIDc4LCA3OSwgNzgsIDcwLCA3OSwgODIsIDc1LCA3MywgNzgsIDcxLCAxMjgsIDc4LCA3OSwgNzgsIAotICAgIDQ1LCA4MCwgNzksIDg0LCA2NSwgNjYsIDc2LCAxOTcsIDc4LCA3OSwgNzgsIDQ1LCA3NCwgNzksIDczLCA3OCwgNjksIDgyLCAKLSAgICAxMjgsIDc4LCA3OSwgNzgsIDQ1LCA2NiwgODIsIDY5LCA2NSwgNzUsIDczLCA3OCwgMTk5LCA3OCwgNzksIDc4LCAxMjgsIAotICAgIDc4LCA3OSwgNzcsIDczLCA3OCwgNjUsIDIwNCwgNzgsIDc5LCA3NSwgNzIsIDg1LCA3NSwgMTI4LCA3OCwgNzksIDY4LCA2OSwgCi0gICAgMTI4LCA3OCwgNzksIDY1LCAxMjgsIDc4LCA3OSwgNDUsIDY2LCA4MiwgNjksIDY1LCAyMDMsIDc4LCA3OCwgODUsIDg1LCAKLSAgICAxMjgsIDc4LCA3OCwgODUsIDEyOCwgNzgsIDc4LCA3OSwgNzksIDEyOCwgNzgsIDc4LCA3OSwgMTI4LCA3OCwgNzgsIDc4LCAKLSAgICA4NSwgODUsIDEyOCwgNzgsIDc4LCA3OCwgODUsIDEyOCwgNzgsIDc4LCA3OCwgNzksIDc5LCAxMjgsIDc4LCA3OCwgNzgsIAotICAgIDc5LCAxMjgsIDc4LCA3OCwgNzgsIDczLCA3MywgMTI4LCA3OCwgNzgsIDc4LCA3MywgMTI4LCA3OCwgNzgsIDc4LCA2OSwgCi0gICAgNjksIDEyOCwgNzgsIDc4LCA3OCwgNjksIDEyOCwgNzgsIDc4LCA3OCwgNjUsIDg1LCAxMjgsIDc4LCA3OCwgNzgsIDY1LCAKLSAgICA3MywgMTI4LCA3OCwgNzgsIDc4LCA2NSwgNjUsIDEyOCwgNzgsIDc4LCA3OCwgNjUsIDEyOCwgNzgsIDc4LCA3OCwgMTI4LCAKLSAgICA3OCwgNzgsIDcyLCA2NSwgMTI4LCA3OCwgNzgsIDcxLCA3OSwgNzksIDEyOCwgNzgsIDc4LCA3MSwgNzksIDEyOCwgNzgsIAotICAgIDc4LCA3MSwgNzMsIDczLCAxMjgsIDc4LCA3OCwgNzEsIDczLCAxMjgsIDc4LCA3OCwgNzEsIDY1LCA2NSwgMTI4LCA3OCwgCi0gICAgNzgsIDcxLCA2NSwgMTI4LCA3OCwgNzgsIDcxLCAxMjgsIDc4LCA3OCwgNjYsIDgzLCA4MCwgMTI4LCA3OCwgNzcsIDEyOCwgCi0gICAgNzgsIDc2LCA2NSwgODUsIDEyOCwgNzgsIDc2LCA0OCwgNTAsIDQ4LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1NywgMTI4LCAKLSAgICA3OCwgNzYsIDQ4LCA0OSwgNTYsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDU1LCA2NSwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTUsIAotICAgIDEyOCwgNzgsIDc2LCA0OCwgNDksIDU0LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1MywgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgCi0gICAgNTIsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDUxLCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1MCwgMTI4LCA3OCwgNzYsIDQ4LCAKLSAgICA0OSwgNDksIDEyOCwgNzgsIDc2LCA0OCwgNDksIDQ4LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1NywgMTI4LCA3OCwgNzYsIAotICAgIDQ4LCA0OCwgNTYsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDU1LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1NCwgMTI4LCA3OCwgCi0gICAgNzYsIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1MywgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTIsIAotICAgIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDUxLCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1MCwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgCi0gICAgNDksIDEyOCwgNzgsIDc2LCAxMjgsIDc4LCA3NSwgNzksIDc3LCAxMjgsIDc4LCA3NSwgMjA3LCA3OCwgNzUsIDczLCA3OCwgCi0gICAgNjgsIDczLCAxMjgsIDc4LCA3NSwgNjUsIDg1LCAxMjgsIDc4LCA3NSwgNjUsIDY1LCA4MiwgNjUsIDY5LCAxMjgsIDc4LCAKLSAgICA3NCwgODksIDg4LCAxMjgsIDc4LCA3NCwgODksIDg0LCAxMjgsIDc4LCA3NCwgODksIDgyLCA4OCwgMTI4LCA3OCwgNzQsIAotICAgIDg5LCA4MiwgMTI4LCA3OCwgNzQsIDg5LCA4MCwgMTI4LCA3OCwgNzQsIDg5LCAxMjgsIDc4LCA3NCwgODUsIDg4LCAxMjgsIAotICAgIDc4LCA3NCwgODUsIDgyLCA4OCwgMTI4LCA3OCwgNzQsIDg1LCA4MiwgMTI4LCA3OCwgNzQsIDg1LCA4MSwgNjUsIDEyOCwgCi0gICAgNzgsIDc0LCA4NSwgODAsIDEyOCwgNzgsIDc0LCA4NSwgNzksIDg4LCAxMjgsIDc4LCA3NCwgODUsIDc5LCAxMjgsIDc4LCAKLSAgICA3NCwgODUsIDY5LCA4MSwgMTI4LCA3OCwgNzQsIDg1LCA2NSwgNjksIDEyOCwgNzgsIDc0LCA4NSwgMTI4LCA3OCwgNzQsIAotICAgIDc5LCA4OCwgMTI4LCA3OCwgNzQsIDc5LCA4NCwgMTI4LCA3OCwgNzQsIDc5LCA4MCwgMTI4LCA3OCwgNzQsIDc5LCA3OSwgCi0gICAgMTI4LCA3OCwgNzQsIDc5LCAxMjgsIDc4LCA3NCwgNzMsIDg4LCAxMjgsIDc4LCA3NCwgNzMsIDg0LCAxMjgsIDc4LCA3NCwgCi0gICAgNzMsIDgwLCAxMjgsIDc4LCA3NCwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgNzQsIDczLCA2OSwgODQsIDEyOCwgNzgsIDc0LCAKLSAgICA3MywgNjksIDgwLCAxMjgsIDc4LCA3NCwgNzMsIDY5LCA2OSwgMTI4LCA3OCwgNzQsIDczLCA2OSwgMTI4LCA3OCwgNzQsIAotICAgIDczLCAxMjgsIDc4LCA3NCwgMjAxLCA3OCwgNzQsIDY5LCA4NSwgODgsIDEyOCwgNzgsIDc0LCA2OSwgODUsIDg0LCAxMjgsIAotICAgIDc4LCA3NCwgNjksIDg1LCA2NSwgNjksIDc4LCA2NSwgMTI4LCA3OCwgNzQsIDY5LCA4NSwgNjUsIDY5LCA3NywgMTI4LCA3OCwgCi0gICAgNzQsIDY5LCA2OSwgNjksIDY5LCAxMjgsIDc4LCA3NCwgNjksIDY5LCAxMjgsIDc4LCA3NCwgNjksIDE5NywgNzgsIDc0LCAKLSAgICA2OSwgMTI4LCA3OCwgNzQsIDY1LCA4MSwgMTI4LCA3OCwgNzQsIDY1LCA4MCwgMTI4LCA3OCwgNzQsIDY1LCA2OSwgNzcsIAotICAgIDc2LCA3MywgMTI4LCA3OCwgNzQsIDY1LCA2OSwgNzcsIDEyOCwgNzgsIDc0LCA2NSwgNjUsIDEyOCwgNzgsIDczLCA4OCwgCi0gICAgMTI4LCA3OCwgNzMsIDg0LCA4MiwgNjksIDEyOCwgNzgsIDczLCA4MywgNjUsIDcxLCAxMjgsIDc4LCA3MywgODIsIDg1LCAKLSAgICA3MSwgODUsIDEyOCwgNzgsIDczLCA4MCwgMTI4LCA3OCwgNzMsIDc4LCA4NCwgNzIsIDEyOCwgNzgsIDczLCA3OCwgNjksIAotICAgIDg0LCA4OSwgMTI4LCA3OCwgNzMsIDc4LCA2OSwgODQsIDIxNywgNzgsIDczLCA3OCwgNjksIDg0LCA2OSwgNjksIDc4LCAKLSAgICAxMjgsIDc4LCA3MywgNzgsIDY5LCA4NCwgNjksIDY5LCAyMDYsIDc4LCA3MywgNzgsIDY5LCA0NSwgODQsIDcyLCA3MywgODIsIAotICAgIDg0LCA4OSwgMTI4LCA3OCwgNzMsIDc4LCAxOTcsIDc4LCA3MywgNzgsIDY4LCA2NSwgNTAsIDEyOCwgNzgsIDczLCA3OCwgCi0gICAgNjgsIDY1LCAxNzgsIDc4LCA3MywgNzgsIDU3LCAxMjgsIDc4LCA3MywgNzgsIDEyOCwgNzgsIDczLCA3NywgMTI4LCA3OCwgCi0gICAgNzMsIDIwNSwgNzgsIDczLCA3NSwgNzksIDc2LCA4MywgNjYsIDg1LCA4MiwgMTk5LCA3OCwgNzMsIDc1LCA3MiwgNjUsIDcyLCAKLSAgICA3MywgODQsIDEyOCwgNzgsIDczLCA3NSwgNjUsIDcyLCA3MywgODQsIDEyOCwgNzgsIDczLCA3NSwgNjUsIDEyOCwgNzgsIAotICAgIDczLCA3MiwgODMsIDcyLCA4NiwgNjUsIDgzLCA2NSwgMTI4LCA3OCwgNzMsIDcxLCA3MywgNjgsIDY1LCA3NywgNzMsIDc4LCAKLSAgICAxMjgsIDc4LCA3MywgNzEsIDczLCA2OCwgNjUsIDY5LCA4MywgNzIsIDEyOCwgNzgsIDczLCA3MSwgNzIsIDg0LCAxMjgsIAotICAgIDc4LCA3MywgNzEsIDcyLCAyMTIsIDc4LCA3MywgNzEsIDcxLCA2NSwgNzIsIDczLCA4NCwgNjUsIDEyOCwgNzgsIDczLCA2OSwgCi0gICAgODgsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA3OCwgNzMsIDY5LCAKLSAgICA4NSwgNzgsIDQ1LCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA4MywgCi0gICAgNzMsIDc5LCA4MywgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgNzgsIDczLCAKLSAgICA2OSwgODUsIDc4LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDgwLCA2NSwgCi0gICAgNzgsIDgzLCA3MywgNzksIDgzLCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIAotICAgIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgCi0gICAgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA2NywgNzIsIDczLCA2OSwgODUsIAotICAgIDY3LCA3MiwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgMjA2LCA3OCwgNzMsIDY5LCA4MCwgMTI4LCA3OCwgNzMsIDY5LCAxMjgsIAotICAgIDc4LCA3MywgNjYsIDEyOCwgNzgsIDczLCA2NSwgMTI4LCA3OCwgNzMsIDUwLCAxMjgsIDc4LCA3MiwgODUsIDY5LCAxMjgsIAotICAgIDc4LCA3MiwgNzQsIDY1LCAxMjgsIDc4LCA3MiwgMTI4LCA3OCwgNzEsIDg5LCA2OSwgMTI4LCA3OCwgNzEsIDg2LCA2OSwgCi0gICAgMTI4LCA3OCwgNzEsIDg1LCA4NSwgMTI4LCA3OCwgNzEsIDg1LCA3OSwgODgsIDEyOCwgNzgsIDcxLCA4NSwgNzksIDg0LCAKLSAgICAxMjgsIDc4LCA3MSwgODUsIDc5LCAxMjgsIDc4LCA3MSwgODUsIDY1LCA3OCwgMTI4LCA3OCwgNzEsIDg1LCA2NSwgNjksIAotICAgIDg0LCAxMjgsIDc4LCA3MSwgODUsIDY1LCA2OSwgMTI4LCA3OCwgNzEsIDc5LCA4OCwgMTI4LCA3OCwgNzEsIDc5LCA4NSwgCi0gICAgMTI4LCA3OCwgNzEsIDc5LCAyMTMsIDc4LCA3MSwgNzksIDg0LCAxMjgsIDc4LCA3MSwgNzksIDgxLCAxMjgsIDc4LCA3MSwgCi0gICAgNzksIDgwLCAxMjgsIDc4LCA3MSwgNzksIDc4LCAxMjgsIDc4LCA3MSwgNzksIDc3LCAxMjgsIDc4LCA3MSwgNzksIDY5LCAKLSAgICA3MiwgMTI4LCA3OCwgNzEsIDc5LCA2OSwgMjAwLCA3OCwgNzEsIDIwNywgNzgsIDcxLCA3NSwgODksIDY5LCA2OSwgMTI4LCAKLSAgICA3OCwgNzEsIDc1LCA4NywgNjUsIDY5LCA3OCwgMTI4LCA3OCwgNzEsIDc1LCA4NSwgODAsIDEyOCwgNzgsIDcxLCA3NSwgODUsIAotICAgIDc4LCAxMjgsIDc4LCA3MSwgNzUsIDg1LCA3NywgMTI4LCA3OCwgNzEsIDc1LCA4NSwgNjksIDc4LCA5MCwgNjksIDg1LCA3NywgCi0gICAgMTI4LCA3OCwgNzEsIDc1LCA4NSwgMTk3LCA3OCwgNzEsIDc1LCA3MywgNzgsIDY4LCAyMDEsIDc4LCA3MSwgNzUsIDczLCAKLSAgICA2OSwgNjksIDEyOCwgNzgsIDcxLCA3NSwgNjksIDg1LCA4OCwgMTI4LCA3OCwgNzEsIDc1LCA2OSwgODUsIDgyLCA3MywgCi0gICAgMTI4LCA3OCwgNzEsIDc1LCA2OSwgODUsIDY1LCA2OSwgODEsIDEyOCwgNzgsIDcxLCA3NSwgNjksIDg1LCA2NSwgNjksIDc3LCAKLSAgICAxMjgsIDc4LCA3MSwgNzUsIDY1LCA4MSwgMTI4LCA3OCwgNzEsIDc1LCA2NSwgODAsIDEyOCwgNzgsIDcxLCA3NSwgNjUsIAotICAgIDY1LCA3NywgNzMsIDEyOCwgNzgsIDcxLCA3NSwgNjUsIDEyOCwgNzgsIDcxLCA3MywgNjksIDg4LCAxMjgsIDc4LCA3MSwgCi0gICAgNzMsIDY5LCA4MCwgMTI4LCA3OCwgNzEsIDczLCA2OSwgMTI4LCA3OCwgNzEsIDcyLCA2NSwgMTI4LCA3OCwgNzEsIDcxLCAKLSAgICA4NywgNjUsIDY5LCA3OCwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgODIsIDY1LCA2OSwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgODAsIAotICAgIDEyOCwgNzgsIDcxLCA3MSwgODUsIDc5LCA4MSwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNzksIDIwOSwgNzgsIDcxLCA3MSwgCi0gICAgODUsIDc5LCA3OCwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNzksIDc3LCAxMjgsIDc4LCA3MSwgNzEsIDg1LCA3NywgMTI4LCAKLSAgICA3OCwgNzEsIDcxLCA4NSwgNjksIDY5LCA4NCwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNjUsIDY5LCA4MywgNzIsIDY1LCAxOTcsIAotICAgIDc4LCA3MSwgNzEsIDg1LCA2NSwgNjksIDIwNiwgNzgsIDcxLCA3MSwgODUsIDY1LCAxMjgsIDc4LCA3MSwgNzEsIDg1LCAKLSAgICAxMjgsIDc4LCA3MSwgNzEsIDc5LCA3OSwgMTI4LCA3OCwgNzEsIDcxLCA3OSwgMTI4LCA3OCwgNzEsIDcxLCA3MywgMTI4LCAKLSAgICA3OCwgNzEsIDcxLCA2OSwgODUsIDg4LCAxMjgsIDc4LCA3MSwgNzEsIDY5LCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA3OCwgNzEsIAotICAgIDcxLCA2OSwgODUsIDY1LCA2OSwgMTI4LCA3OCwgNzEsIDcxLCA2OSwgMjEzLCA3OCwgNzEsIDcxLCA2OSwgNzgsIDEyOCwgCi0gICAgNzgsIDcxLCA3MSwgNjksIDY5LCA4NCwgMTI4LCA3OCwgNzEsIDcxLCA2OSwgNjksIDY5LCA2OSwgMTI4LCA3OCwgNzEsIDcxLCAKLSAgICA2OSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgNjUsIDgwLCAxMjgsIDc4LCA3MSwgNzEsIAotICAgIDY1LCA2NSwgNzcsIDY1LCA2OSwgMTI4LCA3OCwgNzEsIDcxLCA2NSwgNjUsIDc3LCAxMjgsIDc4LCA3MSwgNzEsIDY1LCA2NSwgCi0gICAgMTI4LCA3OCwgNzEsIDcxLCAxMjgsIDc4LCA3MSwgNjksIDg4LCAxMjgsIDc4LCA3MSwgNjksIDg1LCA4MiwgNjksIDg1LCAKLSAgICA4NCwgMTI4LCA3OCwgNzEsIDY5LCA4MCwgMTI4LCA3OCwgNzEsIDY5LCA3OCwgMTI4LCA3OCwgNzEsIDY5LCA2OSwgMTI4LCAKLSAgICA3OCwgNzEsIDY5LCA2NSwgNjgsIDY1LCA3NiwgMTI4LCA3OCwgNzEsIDY1LCA4OCwgMTI4LCA3OCwgNzEsIDY1LCA4NSwgCi0gICAgMTI4LCA3OCwgNzEsIDY1LCA4NCwgMTI4LCA3OCwgNzEsIDY1LCAyMTEsIDc4LCA3MSwgNjUsIDgxLCAxMjgsIDc4LCA3MSwgCi0gICAgNjUsIDgwLCAxMjgsIDc4LCA3MSwgNjUsIDc4LCA3MSwgODUsIDEyOCwgNzgsIDcxLCA2NSwgNzgsIDEyOCwgNzgsIDcxLCAKLSAgICA2NSwgNzMsIDEyOCwgNzgsIDcxLCA2NSwgNzIsIDEyOCwgNzgsIDcxLCA2NSwgNjUsIDczLCAxMjgsIDc4LCA3MSwgMTkzLCAKLSAgICA3OCwgNzAsIDEyOCwgNzgsIDY5LCA4OCwgMjEyLCA3OCwgNjksIDg4LCAxMjgsIDc4LCA2OSwgODcsIDgzLCA4MCwgNjUsIAotICAgIDgwLCA2OSwgODIsIDEyOCwgNzgsIDY5LCA4NywgNzYsIDczLCA3OCwgNjksIDEyOCwgNzgsIDY5LCA4NywgNzYsIDczLCA3OCwgCi0gICAgMTk3LCA3OCwgNjksIDg3LCAxMjgsIDc4LCA2OSwgMjE1LCA3OCwgNjksIDg1LCA4NCwgODIsIDY1LCA3NiwgMTI4LCA3OCwgCi0gICAgNjksIDg1LCA4NCwgODIsIDY1LCAyMDQsIDc4LCA2OSwgODUsIDg0LCA2OSwgODIsIDEyOCwgNzgsIDY5LCA4NCwgODcsIDc5LCAKLSAgICA4MiwgNzUsIDY5LCAxOTYsIDc4LCA2OSwgODQsIDEyOCwgNzgsIDY5LCAyMTIsIDc4LCA2OSwgODMsIDg0LCA2OSwgMTk2LCAKLSAgICA3OCwgNjksIDgyLCAxOTYsIDc4LCA2OSwgODEsIDg1LCA2OCwgNjUsIDY1LCAxMjgsIDc4LCA2OSwgODAsIDg0LCA4NSwgNzgsIAotICAgIDY5LCAxMjgsIDc4LCA2OSwgODAsIDEyOCwgNzgsIDY5LCA3OSwgMTI4LCA3OCwgNjksIDIwNywgNzgsIDY5LCA3OCwgNzksIAotICAgIDY5LCAxMjgsIDc4LCA2OSwgNzgsIDY1LCA3OCwgNzksIDEyOCwgNzgsIDY5LCA3OCwgMTI4LCA3OCwgNjksIDc2LCAxMjgsIAotICAgIDc4LCA2OSwgNzMsIDg0LCA3MiwgNjksIDIxMCwgNzgsIDY5LCA3MSwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzgsIDY5LCA3MSwgCi0gICAgNjUsIDg0LCA2OSwgMTk2LCA3OCwgNjksIDY3LCA3NSwgODQsIDczLCA2OSwgMTI4LCA3OCwgNjksIDY3LCA3NSwgMTI4LCAKLSAgICA3OCwgNjksIDY2LCA2OSwgNzgsIDgzLCA4NCwgNzMsIDc3LCA3NywgNjksIDEyOCwgNzgsIDY4LCA4NSwgODgsIDEyOCwgNzgsIAotICAgIDY4LCA4NSwgODQsIDEyOCwgNzgsIDY4LCA4NSwgODIsIDg4LCAxMjgsIDc4LCA2OCwgODUsIDgyLCAxMjgsIDc4LCA2OCwgCi0gICAgODUsIDgwLCAxMjgsIDc4LCA2OCwgODUsIDc4LCAxMjgsIDc4LCA2OCwgMjEzLCA3OCwgNjgsIDc5LCA4OCwgMTI4LCA3OCwgCi0gICAgNjgsIDc5LCA4NCwgMTI4LCA3OCwgNjgsIDc5LCA4MCwgMTI4LCA3OCwgNjgsIDc5LCA3OSwgMTI4LCA3OCwgNjgsIDc5LCAKLSAgICA3OCwgMTI4LCA3OCwgNjgsIDc5LCA3NywgNjYsIDg1LCAxMjgsIDc4LCA2OCwgNzksIDc2LCAxOTcsIDc4LCA2OCwgNzMsIAotICAgIDg4LCAxMjgsIDc4LCA2OCwgNzMsIDg0LCAxMjgsIDc4LCA2OCwgNzMsIDgxLCAxMjgsIDc4LCA2OCwgNzMsIDgwLCAxMjgsIAotICAgIDc4LCA2OCwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgNjgsIDczLCA2OSwgMTI4LCA3OCwgNjgsIDczLCA2OCwgNjUsIDEyOCwgCi0gICAgNzgsIDY4LCA3MywgNjUsIDgxLCAxMjgsIDc4LCA2OCwgNjksIDg4LCAxMjgsIDc4LCA2OCwgNjksIDg1LCA4OCwgMTI4LCAKLSAgICA3OCwgNjgsIDY5LCA4NSwgODQsIDEyOCwgNzgsIDY4LCA2OSwgODUsIDY1LCA2OSwgODIsIDY5LCA2OSwgMTI4LCA3OCwgNjgsIAotICAgIDY5LCA4MCwgMTI4LCA3OCwgNjgsIDY5LCA2OSwgMTI4LCA3OCwgNjgsIDY5LCAxMjgsIDc4LCA2OCwgNjUsIDg4LCAxMjgsIAotICAgIDc4LCA2OCwgNjUsIDg0LCAxMjgsIDc4LCA2OCwgNjUsIDgwLCAxMjgsIDc4LCA2OCwgNjUsIDc3LCAxMjgsIDc4LCA2OCwgCi0gICAgNjUsIDY1LCA3OCwgNzEsIDcxLCA2OSwgODUsIDY1LCA2OSwgODQsIDEyOCwgNzgsIDY4LCA2NSwgNjUsIDEyOCwgNzgsIDY4LCAKLSAgICA2NSwgMTkzLCA3OCwgNjcsIDcyLCA2NSwgODUsIDEyOCwgNzgsIDY2LCA4OSwgODgsIDEyOCwgNzgsIDY2LCA4OSwgODQsIAotICAgIDEyOCwgNzgsIDY2LCA4OSwgODIsIDg4LCAxMjgsIDc4LCA2NiwgODksIDgyLCAxMjgsIDc4LCA2NiwgODksIDgwLCAxMjgsIAotICAgIDc4LCA2NiwgODksIDEyOCwgNzgsIDY2LCA4NSwgODgsIDEyOCwgNzgsIDY2LCA4NSwgODQsIDEyOCwgNzgsIDY2LCA4NSwgCi0gICAgODIsIDg4LCAxMjgsIDc4LCA2NiwgODUsIDgyLCAxMjgsIDc4LCA2NiwgODUsIDgwLCAxMjgsIDc4LCA2NiwgODUsIDEyOCwgCi0gICAgNzgsIDY2LCA3OSwgODgsIDEyOCwgNzgsIDY2LCA3OSwgODQsIDEyOCwgNzgsIDY2LCA3OSwgODAsIDEyOCwgNzgsIDY2LCAKLSAgICA3OSwgMTI4LCA3OCwgNjYsIDczLCA4OCwgMTI4LCA3OCwgNjYsIDczLCA4NCwgMTI4LCA3OCwgNjYsIDczLCA4MCwgMTI4LCAKLSAgICA3OCwgNjYsIDczLCA2OSwgODgsIDEyOCwgNzgsIDY2LCA3MywgNjksIDgwLCAxMjgsIDc4LCA2NiwgNzMsIDY5LCAxMjgsIAotICAgIDc4LCA2NiwgNzMsIDEyOCwgNzgsIDY2LCA3MiwgMTI4LCA3OCwgNjYsIDY1LCA4OCwgMTI4LCA3OCwgNjYsIDY1LCA4NCwgCi0gICAgMTI4LCA3OCwgNjYsIDY1LCA4MCwgMTI4LCA3OCwgNjYsIDY1LCAxMjgsIDc4LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAKLSAgICAxMjgsIDc4LCA2NSwgODksIDEyOCwgNzgsIDY1LCA4OCwgNzMsIDY1LCAyMDYsIDc4LCA2NSwgODgsIDEyOCwgNzgsIDY1LCAKLSAgICA4NSwgODQsIDcyLCA4MywgMTI4LCA3OCwgNjUsIDg1LCA2OCwgNzMsIDIxOCwgNzgsIDY1LCA4NCwgODUsIDgyLCA2NSwgCi0gICAgMjA0LCA3OCwgNjUsIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCA3OCwgNjUsIDgzLCA3NSwgNjUsIDgwLCAyMDEsIDc4LCAKLSAgICA2NSwgODMsIDcyLCA3MywgMTI4LCA3OCwgNjUsIDgzLCA2NSwgNzYsIDczLCA5MCwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIAotICAgIDc4LCA2NSwgODMsIDY1LCA3NiwgNzMsIDkwLCA2NSwgODQsIDczLCA3OSwgMjA2LCA3OCwgNjUsIDgzLCA2NSwgMjA0LCA3OCwgCi0gICAgNjUsIDgyLCA4MiwgNzksIDIxNSwgNzgsIDY1LCA4MiwgMTI4LCA3OCwgNjUsIDgxLCAxMjgsIDc4LCA2NSwgNzksIDIxMSwgCi0gICAgNzgsIDY1LCA3OCwgODMsIDY1LCA3OCwgNjUsIDgxLCAxMjgsIDc4LCA2NSwgNzgsIDcxLCA3NywgNzksIDc4LCA4NCwgNzIsIAotICAgIDc5LCAxMjgsIDc4LCA2NSwgNzgsIDY4LCAxMjgsIDc4LCA2NSwgNzgsIDY1LCAxMjgsIDc4LCA2NSwgNzcsIDY5LCAxMjgsIAotICAgIDc4LCA2NSwgNzcsIDE5NywgNzgsIDY1LCA3NywgNTAsIDEyOCwgNzgsIDY1LCA3NywgMTI4LCA3OCwgNjUsIDc1LCAxMjgsIAotICAgIDc4LCA2NSwgNzMsIDgyLCAxOTMsIDc4LCA2NSwgNzMsIDIwNCwgNzgsIDY1LCA3MSwgODIsIDIwMSwgNzgsIDY1LCA3MSwgCi0gICAgNjUsIDgyLCAxMjgsIDc4LCA2NSwgNzEsIDY1LCAxMjgsIDc4LCA2NSwgNzEsIDE5MywgNzgsIDY1LCA3MSwgMTI4LCA3OCwgCi0gICAgNjUsIDE5OSwgNzgsIDY1LCA2OSwgMTI4LCA3OCwgNjUsIDY2LCA3NiwgNjUsIDEyOCwgNzgsIDY1LCA2NiwgNjUsIDg0LCAKLSAgICA2NSwgNjksIDY1LCAyMDYsIDc4LCA2NSwgNjUsIDgzLCA3MywgNzUsIDg5LCA2NSwgODksIDY1LCAxMjgsIDc4LCA2NSwgNjUsIAotICAgIDc1LCA4MywgNzMsIDc1LCA4OSwgNjUsIDg5LCA2NSwgMTI4LCA3OCwgNjUsIDY1LCA3MywgMTI4LCA3OCwgNjUsIDE5MywgCi0gICAgNzgsIDY1LCA1MiwgMTI4LCA3OCwgNjUsIDUwLCAxMjgsIDc4LCA2NSwgNDUsIDUwLCAxMjgsIDc4LCA0OCwgNTIsIDUwLCAKLSAgICAxMjgsIDc4LCA0OCwgNTIsIDQ5LCAxMjgsIDc4LCA0OCwgNTIsIDQ4LCAxMjgsIDc4LCA0OCwgNTEsIDU3LCAxMjgsIDc4LCAKLSAgICA0OCwgNTEsIDU2LCAxMjgsIDc4LCA0OCwgNTEsIDU1LCA2NSwgMTI4LCA3OCwgNDgsIDUxLCA1NSwgMTI4LCA3OCwgNDgsIAotICAgIDUxLCA1NCwgMTI4LCA3OCwgNDgsIDUxLCA1MywgNjUsIDEyOCwgNzgsIDQ4LCA1MSwgNTMsIDEyOCwgNzgsIDQ4LCA1MSwgCi0gICAgNTIsIDY1LCAxMjgsIDc4LCA0OCwgNTEsIDUyLCAxMjgsIDc4LCA0OCwgNTEsIDUxLCA2NSwgMTI4LCA3OCwgNDgsIDUxLCAKLSAgICA1MSwgMTI4LCA3OCwgNDgsIDUxLCA1MCwgMTI4LCA3OCwgNDgsIDUxLCA0OSwgMTI4LCA3OCwgNDgsIDUxLCA0OCwgMTI4LCAKLSAgICA3OCwgNDgsIDUwLCA1NywgMTI4LCA3OCwgNDgsIDUwLCA1NiwgMTI4LCA3OCwgNDgsIDUwLCA1NSwgMTI4LCA3OCwgNDgsIAotICAgIDUwLCA1NCwgMTI4LCA3OCwgNDgsIDUwLCA1MywgNjUsIDEyOCwgNzgsIDQ4LCA1MCwgNTMsIDEyOCwgNzgsIDQ4LCA1MCwgCi0gICAgNTIsIDEyOCwgNzgsIDQ4LCA1MCwgNTEsIDEyOCwgNzgsIDQ4LCA1MCwgNTAsIDEyOCwgNzgsIDQ4LCA1MCwgNDksIDEyOCwgCi0gICAgNzgsIDQ4LCA1MCwgNDgsIDEyOCwgNzgsIDQ4LCA0OSwgNTcsIDEyOCwgNzgsIDQ4LCA0OSwgNTYsIDY2LCAxMjgsIDc4LCAKLSAgICA0OCwgNDksIDU2LCA2NSwgMTI4LCA3OCwgNDgsIDQ5LCA1NiwgMTI4LCA3OCwgNDgsIDQ5LCA1NSwgMTI4LCA3OCwgNDgsIAotICAgIDQ5LCA1NCwgMTI4LCA3OCwgNDgsIDQ5LCA1MywgMTI4LCA3OCwgNDgsIDQ5LCA1MiwgMTI4LCA3OCwgNDgsIDQ5LCA1MSwgCi0gICAgMTI4LCA3OCwgNDgsIDQ5LCA1MCwgMTI4LCA3OCwgNDgsIDQ5LCA0OSwgMTI4LCA3OCwgNDgsIDQ5LCA0OCwgMTI4LCA3OCwgCi0gICAgNDgsIDQ4LCA1NywgMTI4LCA3OCwgNDgsIDQ4LCA1NiwgMTI4LCA3OCwgNDgsIDQ4LCA1NSwgMTI4LCA3OCwgNDgsIDQ4LCAKLSAgICA1NCwgMTI4LCA3OCwgNDgsIDQ4LCA1MywgMTI4LCA3OCwgNDgsIDQ4LCA1MiwgMTI4LCA3OCwgNDgsIDQ4LCA1MSwgMTI4LCAKLSAgICA3OCwgNDgsIDQ4LCA1MCwgMTI4LCA3OCwgNDgsIDQ4LCA0OSwgMTI4LCA3OCwgNDUsIDY3LCA4MiwgNjksIDE5NywgNzgsIAotICAgIDQ1LCA2NSwgODIsIDIxNywgNzcsIDg5LCA4OCwgMTI4LCA3NywgODksIDg0LCAxMjgsIDc3LCA4OSwgODMsIDc2LCA3MywgCi0gICAgODQsIDY5LCAxMjgsIDc3LCA4OSwgODAsIDEyOCwgNzcsIDg5LCA2NSwgMTI4LCA3NywgODksIDE5MywgNzcsIDg5LCAxMjgsIAotICAgIDc3LCAyMTcsIDc3LCA4NywgNzksIDc5LCAxMjgsIDc3LCA4NywgNzksIDEyOCwgNzcsIDg3LCA3MywgNzMsIDEyOCwgNzcsIAotICAgIDg3LCA3MywgMTI4LCA3NywgODcsIDY5LCA2OSwgMTI4LCA3NywgODcsIDY5LCAxMjgsIDc3LCA4NywgNjUsIDY1LCAxMjgsIAotICAgIDc3LCA4NywgNjUsIDEyOCwgNzcsIDg3LCAxMjgsIDc3LCAyMTUsIDc3LCA4NiwgODMsIDEyOCwgNzcsIDg2LCA3OSwgODAsIAotICAgIDEyOCwgNzcsIDg2LCA3MywgMTI4LCA3NywgODYsIDY5LCA4NSwgNjUsIDY5LCA3OCwgNzEsIDY1LCA3NywgMTI4LCA3NywgCi0gICAgODYsIDEyOCwgNzcsIDIxNCwgNzcsIDg1LCA4OCwgMTI4LCA3NywgODUsIDg1LCA4MywgNzMsIDc1LCA2NSwgODQsIDc5LCAKLSAgICA2NSwgNzgsIDEyOCwgNzcsIDg1LCA4NSwgODIsIDY4LCA3MiwgNjUsIDc0LCAxOTMsIDc3LCA4NSwgODUsIDEyOCwgNzcsIAotICAgIDg1LCA4NCwgMTI4LCA3NywgODUsIDgzLCA3MywgNjcsIDEyOCwgNzcsIDg1LCA4MywgNzMsIDE5NSwgNzcsIDg1LCA4MywgCi0gICAgNzIsIDgyLCA3OSwgNzksIDc3LCAxMjgsIDc3LCA4NSwgODMsIDcyLCA1MSwgMTI4LCA3NywgODUsIDgzLCA3MiwgMTc5LCAKLSAgICA3NywgODUsIDgzLCA3MiwgMTI4LCA3NywgODUsIDgzLCAyMDAsIDc3LCA4NSwgODMsIDEyOCwgNzcsIDg1LCA4MiwgODgsIAotICAgIDEyOCwgNzcsIDg1LCA4MiwgNzEsIDg1LCA1MCwgMTI4LCA3NywgODUsIDgyLCA2OSwgMTI4LCA3NywgODUsIDgyLCA2OCwgCi0gICAgNjUsIDEyOCwgNzcsIDg1LCA4MiwgNjgsIDE5MywgNzcsIDg1LCA4MiwgMTI4LCA3NywgODUsIDgxLCA2OCwgNjUsIDc3LCAKLSAgICAxMjgsIDc3LCA4NSwgODAsIDEyOCwgNzcsIDg1LCA3OSwgODgsIDEyOCwgNzcsIDg1LCA3OSwgODQsIDEyOCwgNzcsIDg1LCAKLSAgICA3OSwgODAsIDEyOCwgNzcsIDg1LCA3OSwgNzcsIDY1LCA2OSwgMTI4LCA3NywgODUsIDc5LCAxMjgsIDc3LCA4NSwgNzgsIAotICAgIDgzLCA4NSwgNjYsIDEyOCwgNzcsIDg1LCA3OCwgNjUsIDcyLCAxMjgsIDc3LCA4NSwgNzgsIDEyOCwgNzcsIDg1LCA3NiwgCi0gICAgODQsIDczLCA4MywgNjksIDg0LCAxMjgsIDc3LCA4NSwgNzYsIDg0LCA3MywgODMsIDY5LCAyMTIsIDc3LCA4NSwgNzYsIDg0LCAKLSAgICA3MywgODAsIDc2LCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3NywgODUsIDc2LCA4NCwgNzMsIDgwLCA3NiwgCi0gICAgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3NywgODUsIDc2LCA4NCwgNzMsIDgwLCA3NiwgNjksIDEyOCwgNzcsIDg1LCAKLSAgICA3NiwgODQsIDczLCA4MCwgNzYsIDE5NywgNzcsIDg1LCA3NiwgODQsIDczLCA3OSwgNjcsIDg1LCA3NiwgNjUsIDIxMCwgNzcsIAotICAgIDg1LCA3NiwgODQsIDczLCA3NywgNjUsIDgwLCAxMjgsIDc3LCA4NSwgNzYsIDg0LCAyMDEsIDc3LCA4NSwgNzYsIDg0LCA2NSwgCi0gICAgNzgsIDIwMSwgNzcsIDg1LCA3NSwgODAsIDcyLCA4MiwgNjksIDc4LCA3MSwgMTI4LCA3NywgODUsIDczLCA3OCwgMTI4LCAKLSAgICA3NywgODUsIDcxLCA4MywgMTI4LCA3NywgODUsIDcxLCAxMjgsIDc3LCA4NSwgMTk5LCA3NywgODUsIDY5LCA3OCwgMTI4LCAKLSAgICA3NywgODUsIDY5LCAxMjgsIDc3LCA4NSwgNjcsIDcyLCAxMjgsIDc3LCA4NSwgNjcsIDIwMCwgNzcsIDg1LCA2NywgNjUsIAotICAgIDY1LCA2OCwgMTI4LCA3NywgODUsIDY1LCA4MywgMTI4LCA3NywgODUsIDY1LCA3OCwgMTI4LCA3NywgODUsIDY1LCA2OSwgCi0gICAgMTI4LCA3NywgODUsIDQ1LCA3MSwgNjUsIDY1LCA3MiwgNzYsIDY1LCAxOTMsIDc3LCAyMTMsIDc3LCA4MywgMTI4LCA3NywgCi0gICAgODIsIDIwNywgNzcsIDgwLCA2NSwgMTI4LCA3NywgNzksIDg5LCA2NSwgNzMsIDEyOCwgNzcsIDc5LCA4OCwgMTI4LCA3NywgCi0gICAgNzksIDg2LCA3MywgMTk3LCA3NywgNzksIDg2LCA2OSwgMjExLCA3NywgNzksIDg2LCA2OSwgNzcsIDY5LCA3OCwgODQsIDQ1LCAKLSAgICA4NywgNjUsIDc2LCA3NiwgODAsIDc2LCA2NSwgNzgsIDE5NywgNzcsIDc5LCA4NiwgNjksIDc3LCA2OSwgNzgsIDg0LCA0NSwgCi0gICAgNzIsIDczLCA3OCwgNzEsIDE5NywgNzcsIDc5LCA4NiwgNjksIDc3LCA2OSwgNzgsIDg0LCA0NSwgNzAsIDc2LCA3OSwgNzksIAotICAgIDgyLCA4MCwgNzYsIDY1LCA3OCwgMTk3LCA3NywgNzksIDg2LCA2OSwgNzcsIDY5LCA3OCwgODQsIDQ1LCA2OCwgNzMsIDY1LCAKLSAgICA3MSwgNzksIDc4LCA2NSwgMjA0LCA3NywgNzksIDg2LCA2OSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNzcsIDc5LCA4NiwgNjksIAotICAgIDc3LCA2OSwgNzgsIDIxMiwgNzcsIDc5LCA4NiwgNjksIDE5NiwgNzcsIDc5LCA4NiwgNjksIDEyOCwgNzcsIDc5LCA4NSwgCi0gICAgODQsIDcyLCAxMjgsIDc3LCA3OSwgODUsIDgzLCA2OSwgMTI4LCA3NywgNzksIDg1LCA4MywgMTk3LCA3NywgNzksIDg1LCAKLSAgICA3OCwgODQsIDY1LCA3MywgNzgsIDgzLCAxMjgsIDc3LCA3OSwgODUsIDc4LCA4NCwgNjUsIDczLCA3OCwgMTI4LCA3NywgNzksIAotICAgIDg1LCA3OCwgODQsIDY1LCA3MywgMjA2LCA3NywgNzksIDg1LCA3OCwgMjEyLCA3NywgNzksIDg1LCA3OCwgNjgsIDEyOCwgCi0gICAgNzcsIDc5LCA4NSwgNzgsIDE5NiwgNzcsIDc5LCA4NCwgNzksIDgyLCA4NywgNjUsIDg5LCAxMjgsIDc3LCA3OSwgODQsIDc5LCAKLSAgICA4MiwgNjcsIDg5LCA2NywgNzYsIDY5LCAxMjgsIDc3LCA3OSwgODQsIDc5LCAyMTAsIDc3LCA3OSwgODQsIDcyLCA2OSwgODIsIAotICAgIDEyOCwgNzcsIDc5LCA4NCwgMTI4LCA3NywgNzksIDgzLCA4MSwgODUsIDY5LCAxMjgsIDc3LCA3OSwgODIsIDg0LCA4NSwgCi0gICAgODUsIDc3LCAxMjgsIDc3LCA3OSwgODIsIDg0LCA2NSwgODIsIDEyOCwgNzcsIDc5LCA4MiwgODAsIDcyLCA3OSwgNzYsIDc5LCAKLSAgICA3MSwgNzMsIDY3LCA2NSwgMjA0LCA3NywgNzksIDgyLCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA3NywgNzksIDgwLCAxMjgsIAotICAgIDc3LCA3OSwgNzksIDgzLCA2OSwgNDUsIDY3LCA4MiwgNjksIDE5NywgNzcsIDc5LCA3OSwgNzgsIDEyOCwgNzcsIDc5LCA3OSwgCi0gICAgMjA2LCA3NywgNzksIDc5LCA3NywgODAsIDg1LCA4MSwgMTI4LCA3NywgNzksIDc5LCA3NywgNjksIDg1LCA4NCwgMTI4LCAKLSAgICA3NywgNzksIDc5LCA2OCwgMTI4LCA3NywgNzksIDc5LCAxOTYsIDc3LCA3OSwgNzksIDEyOCwgNzcsIDc5LCA3OCwgODQsIAotICAgIDczLCA2OSwgNjksIDc4LCAxMjgsIDc3LCA3OSwgNzgsIDg0LCA3MiwgMTI4LCA3NywgNzksIDc4LCA4NCwgMjAwLCA3NywgCi0gICAgNzksIDc4LCA4MywgODQsIDY5LCA4MiwgMTI4LCA3NywgNzksIDc4LCA3OSwgODMsIDg0LCA2NSwgNjYsIDc2LCAxOTcsIDc3LCAKLSAgICA3OSwgNzgsIDc5LCA4MywgODAsIDY1LCA2NywgMTk3LCA3NywgNzksIDc4LCA3OSwgODIsIDY1LCA3MywgNzYsIDEyOCwgNzcsIAotICAgIDc5LCA3OCwgNzksIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDc3LCA3OSwgNzgsIDc5LCA3MSwgODIsIDY1LCA3NywgNzcsIDc5LCAKLSAgICAyMTEsIDc3LCA3OSwgNzgsIDc5LCA3MSwgODIsIDY1LCAyMDUsIDc3LCA3OSwgNzgsIDc5LCA3MCwgNzksIDc4LCA3MywgNjUsIAotICAgIDgzLCAxMjgsIDc3LCA3OSwgNzgsIDc5LCA2NywgODUsIDc2LCA2NSwgMjEwLCA3NywgNzksIDc4LCA3NSwgNjksIDg5LCAKLSAgICAxMjgsIDc3LCA3OSwgNzgsIDc1LCA2OSwgMjE3LCA3NywgNzksIDc4LCA3MywgMTI4LCA3NywgNzksIDc4LCA3MSwgNzUsIAotICAgIDY5LCA4NSwgNjUsIDY5LCA4MSwgMTI4LCA3NywgNzksIDc4LCA2OSwgODksIDQ1LCA3NywgNzksIDg1LCA4NCwgMjAwLCA3NywgCi0gICAgNzksIDc4LCA2OSwgMjE3LCA3NywgNzksIDc4LCAxMjgsIDc3LCA3OSwgMjA2LCA3NywgNzksIDc2LCAxMjgsIDc3LCA3OSwgCi0gICAgNzIsIDY1LCA3NywgNzcsIDY1LCAxOTYsIDc3LCA3OSwgNjgsIDg1LCA3NiwgMjA3LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCAKLSAgICA2OSwgODIsIDQ1LCA1NywgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA1NiwgMTI4LCA3NywgNzksIAotICAgIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA1NSwgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCAKLSAgICA1NCwgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA1MywgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIAotICAgIDczLCA2OSwgODIsIDQ1LCA1MiwgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA1MSwgMTI4LCA3NywgCi0gICAgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA1MCwgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIAotICAgIDQ1LCA0OSwgNTQsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNDksIDUzLCAxMjgsIDc3LCA3OSwgCi0gICAgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDQ5LCA1MiwgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIAotICAgIDQ1LCA0OSwgNTEsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNDksIDUwLCAxMjgsIDc3LCA3OSwgCi0gICAgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDQ5LCA0OSwgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIAotICAgIDQ1LCA0OSwgNDgsIDEyOCwgNzcsIDc5LCA2OCwgMjAxLCA3NywgNzksIDY4LCA2OSwgODMsIDg0LCA4OSwgMTI4LCA3NywgCi0gICAgNzksIDY4LCA2OSwgNzcsIDEyOCwgNzcsIDc5LCA2OCwgNjksIDc2LCA4MywgMTI4LCA3NywgNzksIDY4LCA2OSwgNzYsIAotICAgIDEyOCwgNzcsIDc5LCA2OCwgNjksIDEyOCwgNzcsIDc5LCA2NiwgNzMsIDc2LCAxOTcsIDc3LCA3OSwgNjUsIDEyOCwgNzcsIAotICAgIDIwNywgNzcsIDc4LCA4OSwgNjUsIDIwNSwgNzcsIDc4LCA2NSwgODMsIDEyOCwgNzcsIDc3LCA4MywgODAsIDEyOCwgNzcsIAotICAgIDc3LCAxMjgsIDc3LCAyMDUsIDc3LCA3NiwgNjUsIDEyOCwgNzcsIDc2LCAxMjgsIDc3LCA3NSwgODAsIDY1LCA4MiwgNjUsIAotICAgIDIwOSwgNzcsIDczLCA4OCwgMTI4LCA3NywgNzMsIDg0LCAxMjgsIDc3LCA3MywgODMsIDgyLCA2NSwgMTI4LCA3NywgNzMsIAotICAgIDgyLCA3MywgNjYsIDY1LCA2NSwgODIsIDg1LCAxMjgsIDc3LCA3MywgODIsIDczLCAxMjgsIDc3LCA3MywgODIsIDY5LCA2OCwgCi0gICAgMTI4LCA3NywgNzMsIDgwLCAxMjgsIDc3LCA3MywgNzgsIDg5LCAxMjgsIDc3LCA3MywgNzgsIDg1LCA4MywgNDUsIDc5LCAKLSAgICA4MiwgNDUsIDgwLCA3NiwgODUsIDIxMSwgNzcsIDczLCA3OCwgODUsIDgzLCAxMjgsIDc3LCA3MywgNzgsIDczLCA4MywgODQsIAotICAgIDY5LCA4MiwgMTI4LCA3NywgNzMsIDc4LCA3MywgNzcsIDczLCA5MCwgNjksIDEyOCwgNzcsIDczLCA3OCwgNzMsIDc3LCA2NSwgCi0gICAgMTI4LCA3NywgNzMsIDc4LCA3MywgNjgsIDczLCA4MywgNjcsIDEyOCwgNzcsIDczLCA3OCwgNzMsIDY2LCA4NSwgODMsIAotICAgIDEyOCwgNzcsIDczLCA3NywgNjksIDEyOCwgNzcsIDczLCA3NywgMTI4LCA3NywgNzMsIDc2LCA3NiwgNzMsIDc5LCA3OCwgCi0gICAgODMsIDEyOCwgNzcsIDczLCA3NiwgNzYsIDczLCA3OSwgNzgsIDIxMSwgNzcsIDczLCA3NiwgNzYsIDY5LCA4NCwgMTI4LCAKLSAgICA3NywgNzMsIDc2LCA3NiwgMTk3LCA3NywgNzMsIDc2LCAyMDQsIDc3LCA3MywgNzYsIDc1LCAyMTcsIDc3LCA3MywgNzYsIAotICAgIDczLCA4NCwgNjUsIDgyLCAyMTcsIDc3LCA3MywgNzYsIDEyOCwgNzcsIDczLCA3NSwgODUsIDgyLCA3OSwgNzgsIDEyOCwgCi0gICAgNzcsIDczLCA3NSwgODIsIDc5LCAyMDYsIDc3LCA3MywgNzUsIDgyLCA3MywgMTI4LCA3NywgNzMsIDczLCA3OCwgMTI4LCAKLSAgICA3NywgNzMsIDczLCAxMjgsIDc3LCA3MywgMTk5LCA3NywgNzMsIDY5LCA4OCwgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIAotICAgIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDgzLCA4MywgNjUsIDc4LCAKLSAgICA3MSwgODMsIDczLCA3OSwgODMsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA3OCwgCi0gICAgNzMsIDY5LCA4NSwgNzgsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDc3LCAKLSAgICA3MywgNjksIDg1LCA3NywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDc3LCA3MywgCi0gICAgNjksIDg1LCA3NywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MCwgNjUsIAotICAgIDc4LCA4MywgNzMsIDc5LCA4MywgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgCi0gICAgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIAotICAgIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDc3LCA3MywgNjksIDg1LCAyMDUsIDc3LCA3MywgNjksIDgwLCAKLSAgICAxMjgsIDc3LCA3MywgNjksIDY5LCAxMjgsIDc3LCA3MywgNjksIDEyOCwgNzcsIDczLCA2OCwgNzYsIDczLCA3OCwgMTk3LCAKLSAgICA3NywgNzMsIDY4LCA2OCwgNzYsIDY5LCA0NSwgODcsIDY5LCA3NiwgODMsIDIwMCwgNzcsIDczLCA2OCwgNjgsIDc2LCA2OSwgCi0gICAgMTI4LCA3NywgNzMsIDY4LCA0NSwgNzYsIDY5LCA4NiwgNjksIDIwNCwgNzcsIDczLCAxOTYsIDc3LCA3MywgNjcsIDgyLCAKLSAgICA3OSwgODMsIDY3LCA3OSwgODAsIDY5LCAxMjgsIDc3LCA3MywgNjcsIDgyLCA3OSwgODAsIDcyLCA3OSwgNzgsIDY5LCAxMjgsIAotICAgIDc3LCA3MywgNjcsIDgyLCAyMDcsIDc3LCA3MywgNjcsIDIxMCwgNzcsIDcyLCA5MCwgMTI4LCA3NywgNzIsIDY1LCAxMjgsIAotICAgIDc3LCA3MiwgMTI4LCA3NywgNzEsIDg1LCA4OCwgMTI4LCA3NywgNzEsIDg1LCA4NCwgMTI4LCA3NywgNzEsIDg1LCA4MiwgCi0gICAgODgsIDEyOCwgNzcsIDcxLCA4NSwgODIsIDEyOCwgNzcsIDcxLCA4NSwgODAsIDEyOCwgNzcsIDcxLCA4NSwgNzksIDg4LCAKLSAgICAxMjgsIDc3LCA3MSwgODUsIDc5LCA4MCwgMTI4LCA3NywgNzEsIDg1LCA3OSwgMTI4LCA3NywgNzEsIDg1LCAxMjgsIDc3LCAKLSAgICA3MSwgNzksIDg4LCAxMjgsIDc3LCA3MSwgNzksIDg0LCAxMjgsIDc3LCA3MSwgNzksIDgwLCAxMjgsIDc3LCA3MSwgNzksIAotICAgIDEyOCwgNzcsIDcxLCAyMDcsIDc3LCA3MSwgNzMsIDY5LCA4OCwgMTI4LCA3NywgNzEsIDczLCA2OSwgMTI4LCA3NywgNzEsIAotICAgIDY5LCA4OCwgMTI4LCA3NywgNzEsIDY5LCA4MCwgMTI4LCA3NywgNzEsIDY5LCAxMjgsIDc3LCA3MSwgNjYsIDg1LCAxMjgsIAotICAgIDc3LCA3MSwgNjYsIDc5LCA3OSwgMTI4LCA3NywgNzEsIDY2LCA3OSwgNzAsIDg1LCA3NywgMTI4LCA3NywgNzEsIDY2LCA3OSwgCi0gICAgMTI4LCA3NywgNzEsIDY2LCA3MywgMTI4LCA3NywgNzEsIDY2LCA2OSwgODUsIDc4LCAxMjgsIDc3LCA3MSwgNjYsIDY5LCAKLSAgICA3OCwgMTI4LCA3NywgNzEsIDY2LCA2OSwgNjksIDEyOCwgNzcsIDcxLCA2NiwgNjksIDEyOCwgNzcsIDcxLCA2NiwgNjUsIAotICAgIDgzLCA2NSwgODEsIDEyOCwgNzcsIDcxLCA2NiwgNjUsIDgzLCA2NSwgMTI4LCA3NywgNzEsIDY1LCA4OCwgMTI4LCA3NywgCi0gICAgNzEsIDY1LCA4NCwgMTI4LCA3NywgNzEsIDY1LCA4MCwgMTI4LCA3NywgNzEsIDY1LCAxMjgsIDc3LCA3MSwgMTI4LCA3NywgCi0gICAgNzAsIDc5LCA3OCwgMTI4LCA3NywgNzAsIDc5LCAyMDYsIDc3LCA3MCwgNzksIDEyOCwgNzcsIDcwLCA3MywgODksIDY1LCAKLSAgICA4MSwgMTI4LCA3NywgNzAsIDczLCA2OSwgNjksIDEyOCwgNzcsIDcwLCA2OSwgODUsIDg0LCAxMjgsIDc3LCA3MCwgNjksIAotICAgIDg1LCA4MSwgMTI4LCA3NywgNzAsIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDc3LCA3MCwgNjUsIDY1LCAxMjgsIDc3LCA2OSwgCi0gICAgOTAsIDkwLCA3OSwgMTI4LCA3NywgNjksIDg4LCAxMjgsIDc3LCA2OSwgODUsIDIxMiwgNzcsIDY5LCA4NSwgODEsIDEyOCwgCi0gICAgNzcsIDY5LCA4NSwgNzgsIDc0LCA3OSwgNzcsIDc4LCA2OCwgNjksIDg1LCA4MSwgMTI4LCA3NywgNjksIDg1LCA3OCwgMTI4LCAKLSAgICA3NywgNjksIDg0LCA4MiwgNzksIDEyOCwgNzcsIDY5LCA4NCwgODIsIDczLCA2NywgNjUsIDIwNCwgNzcsIDY5LCA4NCwgODIsIAotICAgIDczLCA2NSwgMTI4LCA3NywgNjksIDg0LCA4MiwgNjksIDg0LCA2OSwgMjExLCA3NywgNjksIDg0LCA3OSwgNjYsIDY5LCA3NiwgCi0gICAgODUsIDgzLCAxMjgsIDc3LCA2OSwgODQsIDY5LCA3NSwgMTI4LCA3NywgNjksIDg0LCA2OSwgNzEsIDEyOCwgNzcsIDY5LCAKLSAgICA4NCwgNjUsIDc2LCAxMjgsIDc3LCA2OSwgODQsIDE5MywgNzcsIDY5LCA4MywgODMsIDY5LCA3OCwgNzMsIDY1LCAyMDYsIAotICAgIDc3LCA2OSwgODMsIDgzLCA2NSwgNzEsIDY5LCAxMjgsIDc3LCA2OSwgODMsIDgzLCA2NSwgNzEsIDE5NywgNzcsIDY5LCA4MywgCi0gICAgNzksIDEyOCwgNzcsIDY5LCA4MywgNzMsIDEyOCwgNzcsIDY5LCA4MywgNzIsIDEyOCwgNzcsIDY5LCA4MiwgNzUsIDcyLCAKLSAgICA2NSwgMTI4LCA3NywgNjksIDgyLCA3NSwgNzIsIDE5MywgNzcsIDY5LCA4MiwgNzMsIDY4LCA3MywgNjUsIDc4LCA4MywgCi0gICAgMTI4LCA3NywgNjksIDgyLCA3MywgMTI4LCA3NywgNjksIDgyLCA3MSwgNjksIDEyOCwgNzcsIDY5LCA4MiwgNjcsIDg1LCAKLSAgICA4MiwgODksIDEyOCwgNzcsIDY5LCA4MiwgNjcsIDg1LCA4MiwgMjE3LCA3NywgNjksIDc4LCA3OSwgODIsIDY1LCAyMDAsIAotICAgIDc3LCA2OSwgNzgsIDc5LCA2OSwgMTI4LCA3NywgNjksIDc4LCA2OCwgODUsIDg0LCAxMjgsIDc3LCA2OSwgNzgsIDEyOCwgCi0gICAgNzcsIDY5LCA3NywgNzksIDEyOCwgNzcsIDY5LCA3NywgNjYsIDY5LCA4MiwgODMsIDcyLCA3MywgODAsIDEyOCwgNzcsIDY5LCAKLSAgICA3NywgNjYsIDY5LCA4MiwgMTI4LCA3NywgNjksIDc3LCA2NiwgNjksIDIxMCwgNzcsIDY5LCA3NywgNDUsIDgxLCA3OSwgODAsIAotICAgIDcyLCAxMjgsIDc3LCA2OSwgNzcsIDEyOCwgNzcsIDY5LCAyMDUsIDc3LCA2OSwgNzYsIDc5LCA2OCwgNzMsIDE5NSwgNzcsIAotICAgIDY5LCA3NiwgNzMsIDc1LCAxMjgsIDc3LCA2OSwgNzMsIDkwLCA3MywgMTI4LCA3NywgNjksIDcxLCA2NSwgODQsIDc5LCA3OCwgCi0gICAgMTI4LCA3NywgNjksIDcxLCA2NSwgODAsIDcyLCA3OSwgNzgsIDY5LCAxMjgsIDc3LCA2OSwgNzEsIDY1LCA3NiwgNzMsIAotICAgIDEyOCwgNzcsIDY5LCA2OSwgODQsIDc5LCA4MiwgODUsIDEyOCwgNzcsIDY5LCA2OSwgODQsIDY5LCAyMDEsIDc3LCA2OSwgCi0gICAgNjksIDg0LCAxMjgsIDc3LCA2OSwgNjksIDc3LCA4NSwgMTI4LCA3NywgNjksIDY5LCA3NywgMTI4LCA3NywgNjksIDY5LCAKLSAgICAyMDIsIDc3LCA2OSwgNjksIDY5LCA2OSwgMTI4LCA3NywgNjksIDY4LCA3MywgODUsIDc3LCAxMjgsIDc3LCA2OSwgNjgsIAotICAgIDczLCA4NSwgMjA1LCA3NywgNjksIDY4LCA3MywgNjcsIDczLCA3OCwgNjksIDEyOCwgNzcsIDY5LCA2OCwgNzMsIDY3LCA2NSwgCi0gICAgMjA0LCA3NywgNjksIDY4LCA2NSwgNzYsIDEyOCwgNzcsIDY5LCA2NSwgODQsIDEyOCwgNzcsIDY5LCA2NSwgMjEyLCA3NywgCi0gICAgNjksIDY1LCA4MywgODUsIDgyLCA2OSwgMTk2LCA3NywgNjksIDY1LCA4MywgODUsIDgyLCA2OSwgMTI4LCA3NywgNjksIDY1LCAKLSAgICA4MywgODUsIDgyLCAxOTcsIDc3LCA2OCwgODUsIDIwNiwgNzcsIDE5NiwgNzcsIDY3LCA3MiwgMjEzLCA3NywgNjcsIDcyLCAKLSAgICA2NSwgMjA2LCA3NywgMTk1LCA3NywgNjYsIDg1LCA4NSwgMTI4LCA3NywgNjYsIDg1LCA3OSwgODEsIDEyOCwgNzcsIDY2LCAKLSAgICA4NSwgNzksIDEyOCwgNzcsIDY2LCA4NSwgNjksIDEyOCwgNzcsIDY2LCA4NSwgNjUsIDY5LCA3NywgMTI4LCA3NywgNjYsIAotICAgIDg1LCA2NSwgNjksIDEyOCwgNzcsIDY2LCA3OSwgNzksIDEyOCwgNzcsIDY2LCA3OSwgMTI4LCA3NywgNjYsIDczLCA4NCwgCi0gICAgMTI4LCA3NywgNjYsIDczLCAyMTIsIDc3LCA2NiwgNzMsIDgyLCA3MywgNjksIDY5LCA3OCwgMTI4LCA3NywgNjYsIDczLCAKLSAgICAxMjgsIDc3LCA2NiwgNjksIDg1LCA4OCwgMTI4LCA3NywgNjYsIDY5LCA4NSwgODIsIDczLCAxMjgsIDc3LCA2NiwgNjksIAotICAgIDg1LCA3NywgMTI4LCA3NywgNjYsIDY5LCA4MiwgNjUsIDY5LCAxMjgsIDc3LCA2NiwgNjksIDc4LCAxMjgsIDc3LCA2NiwgCi0gICAgNjksIDY5LCA3NSwgNjksIDY5LCA4NCwgMTI4LCA3NywgNjYsIDY5LCA2OSwgMTI4LCA3NywgNjYsIDY5LCAxMjgsIDc3LCAKLSAgICA2NiwgNjUsIDgxLCAxMjgsIDc3LCA2NiwgNjUsIDc4LCA4OSwgNzMsIDEyOCwgNzcsIDY2LCA2NSwgNjUsIDgyLCA2NSwgNjksIAotICAgIDEyOCwgNzcsIDY2LCA2NSwgNjUsIDc1LCA2OSwgODQsIDEyOCwgNzcsIDY2LCA2NSwgNjUsIDEyOCwgNzcsIDY2LCA2NSwgCi0gICAgMTkzLCA3NywgNjYsIDE5MywgNzcsIDY2LCA1MiwgMTI4LCA3NywgNjYsIDUxLCAxMjgsIDc3LCA2NiwgNTAsIDEyOCwgNzcsIAotICAgIDY1LCA4OSwgNjksIDIwMywgNzcsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzcsIDY1LCA4OSwgMTI4LCA3NywgCi0gICAgNjUsIDg4LCA3MywgNzcsIDczLCA5MCwgNjksIDEyOCwgNzcsIDY1LCA4OCwgNzMsIDc3LCA2NSwgMTI4LCA3NywgNjUsIDg4LCAKLSAgICAxMjgsIDc3LCA2NSwgODUsIDEyOCwgNzcsIDY1LCA4NCwgODQsIDc5LCA2NywgNzUsIDEyOCwgNzcsIDY1LCA4NCwgODIsIAotICAgIDczLCA4OCwgMTI4LCA3NywgNjUsIDg0LCA2OSwgODIsIDczLCA2NSwgNzYsIDgzLCAxMjgsIDc3LCA2NSwgODQsIDEyOCwgCi0gICAgNzcsIDY1LCA4MywgMjEzLCA3NywgNjUsIDgzLCA4MywgNzMsIDc4LCA3MSwgMTI4LCA3NywgNjUsIDgzLCA4MywgNjUsIDcxLCAKLSAgICA2OSwgMTI4LCA3NywgNjUsIDgzLCA3OSwgODIsIDE5MywgNzcsIDY1LCA4MywgNzUsIDEyOCwgNzcsIDY1LCA4MywgNzIsIAotICAgIDcwLCA2NSwgNjUsIDg0LCAxMjgsIDc3LCA2NSwgODMsIDcyLCA1MCwgMTI4LCA3NywgNjUsIDgzLCA2NywgODUsIDc2LCA3MywgCi0gICAgNzgsIDE5NywgNzcsIDY1LCA4MiwgODksIDEyOCwgNzcsIDY1LCA4MiwgODcsIDY1LCA4MiwgMjAxLCA3NywgNjUsIDgyLCAKLSAgICA4NSwgNzUsIDg1LCAxMjgsIDc3LCA2NSwgODIsIDg0LCA4OSwgODIsIDczLCAxOTMsIDc3LCA2NSwgODIsIDgyLCA4OSwgNzMsIAotICAgIDc4LCAxOTksIDc3LCA2NSwgODIsIDgyLCA3MywgNjUsIDcxLCAxOTcsIDc3LCA2NSwgODIsIDc1LCAyMTEsIDc3LCA2NSwgCi0gICAgODIsIDc1LCA2OSwgODIsIDEyOCwgNzcsIDY1LCA4MiwgNzUsIDQ1LCA1MiwgMTI4LCA3NywgNjUsIDgyLCA3NSwgNDUsIDUxLCAKLSAgICAxMjgsIDc3LCA2NSwgODIsIDc1LCA0NSwgNTAsIDEyOCwgNzcsIDY1LCA4MiwgNzUsIDQ1LCA0OSwgMTI4LCA3NywgNjUsIAotICAgIDgyLCA2OSwgMTI4LCA3NywgNjUsIDgyLCA2NywgNzIsIDEyOCwgNzcsIDY1LCA4MiwgNjcsIDY1LCA4NCwgNzksIDQ1LCA4MywgCi0gICAgODQsIDY1LCA2NywgNjcsIDY1LCA4NCwgNzksIDEyOCwgNzcsIDY1LCA4MiwgNjcsIDY1LCA4NCwgNzksIDEyOCwgNzcsIDY1LCAKLSAgICA4MiwgNjcsIDY1LCA4MywgNzMsIDg0LCA2OSwgMTI4LCA3NywgNjUsIDgyLCA2NiwgODUsIDg0LCA2NSwgMTI4LCA3NywgNjUsIAotICAgIDgyLCA2NiwgODUsIDg0LCAxOTMsIDc3LCA2NSwgODIsIDEyOCwgNzcsIDY1LCA4MSwgNjUsIDcwLCAxMjgsIDc3LCA2NSwgCi0gICAgODEsIDEyOCwgNzcsIDY1LCA4MCwgNzYsIDE5NywgNzcsIDY1LCA4MCwgNzMsIDgxLCAxMjgsIDc3LCA2NSwgMjA4LCA3NywgCi0gICAgNjUsIDc5LCAxMjgsIDc3LCA2NSwgNzgsIDg0LCA2OSwgNzYsIDgwLCA3MywgNjksIDY3LCAxOTcsIDc3LCA2NSwgNzgsIDgzLCAKLSAgICA4OSwgNzksIDc4LCAxMjgsIDc3LCA2NSwgNzgsIDgzLCA4NSwgNjUsIDY5LCAxMjgsIDc3LCA2NSwgNzgsIDc4LCA2NSwgCisgICAgODcsIDc2LCAxMjgsIDc5LCA4NiwgNjksIDgyLCA4MiwgNzMsIDY4LCA2OSwgMTI4LCA3OSwgODYsIDY5LCA4MiwgNzYsIDc5LCAKKyAgICA3OCwgMTk5LCA3OSwgODYsIDY5LCA4MiwgNzYsIDczLCA3OCwgNjksIDEyOCwgNzksIDg2LCA2OSwgODIsIDc2LCA2NSwgODksIAorICAgIDEyOCwgNzksIDg2LCA2OSwgODIsIDc2LCA2NSwgODAsIDgwLCA3MywgNzgsIDE5OSwgNzksIDg2LCA2OSwgODIsIDc2LCA2NSwgCisgICAgODAsIDEyOCwgNzksIDg2LCA2OSwgODIsIDc2LCA2NSwgNzMsIDY4LCAxMjgsIDc5LCA4NiwgNjksIDgyLCA2NiwgNjUsIDgyLCAKKyAgICAxMjgsIDc5LCA4NiwgNjUsIDc2LCAxMjgsIDc5LCA4NiwgNjUsIDIwNCwgNzksIDg1LCA4NCwgNzYsIDczLCA3OCwgNjksIAorICAgIDE5NiwgNzksIDg1LCA4NCwgNzYsIDczLCA3OCwgNjksIDEyOCwgNzksIDg1LCA4NCwgNjksIDIxMCwgNzksIDg1LCA4NCwgCisgICAgNjYsIDc5LCAyMTYsIDc5LCA4NSwgNzgsIDc1LCA3MywgMTkzLCA3OSwgODUsIDc4LCA2NywgNjksIDEyOCwgNzksIDg1LCAKKyAgICA3OCwgNjcsIDE5NywgNzksIDg0LCA4NSwgMTI4LCA3OSwgODQsIDg0LCA2NSwgODYsIDE5MywgNzksIDg0LCA4NCwgMTI4LCAKKyAgICA3OSwgODQsIDcyLCA2OSwgODIsIDIxMSwgNzksIDg0LCA3MiwgNjksIDIxMCwgNzksIDg0LCA3MiwgNjUsIDc2LCA2NSwgCisgICAgMjA2LCA3OSwgODQsIDcyLCA2NSwgNzYsIDEyOCwgNzksIDgzLCA3NywgNjUsIDc4LCA4OSwgMTkzLCA3OSwgODMsIDY3LCAKKyAgICAxMjgsIDc5LCA4MywgNjUsIDcxLCAxOTcsIDc5LCA4MiwgODQsIDcyLCA3OSwgNzEsIDc5LCA3OCwgNjUsIDIwNCwgNzksIAorICAgIDgyLCA4NCwgNzIsIDc5LCA2OCwgNzksIDIxNiwgNzksIDgyLCA3OCwgNjUsIDg0LCAxOTcsIDc5LCA4MiwgNzgsIDY1LCA3NywgCisgICAgNjksIDc4LCA4NCwgODMsIDEyOCwgNzksIDgyLCA3OCwgNjUsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDc5LCA4MiwgNzgsIDY1LCAKKyAgICA3NywgNjksIDc4LCAyMTIsIDc5LCA4MiwgNzUsIDcyLCA3OSwgMjA2LCA3OSwgODIsIDczLCA4OSwgMTkzLCA3OSwgODIsIAorICAgIDczLCA3MSwgNzMsIDc4LCA2NSwgMjA0LCA3OSwgODIsIDczLCA3MSwgNzMsIDc4LCAxMjgsIDc5LCA4MiwgNjksIDQ1LCA1MCwgCisgICAgMTI4LCA3OSwgODIsIDY4LCA3MywgNzgsIDY1LCAyMDQsIDc5LCA4MiwgNjgsIDY5LCAyMTAsIDc5LCA4MiwgNjcsIDcyLCAKKyAgICA3MywgNjgsIDEyOCwgNzksIDgyLCA2NSwgNzgsIDcxLCAxOTcsIDc5LCA4MCwgODQsIDczLCA3OSwgMjA2LCA3OSwgODAsIAorICAgIDg0LCA3MywgNjcsIDY1LCAyMDQsIDc5LCA4MCwgODAsIDgyLCA2OSwgODMsIDgzLCA3MywgNzksIDc4LCAxMjgsIDc5LCA4MCwgCisgICAgODAsIDc5LCA4MywgNzMsIDg0LCA3MywgNzksIDc4LCAxMjgsIDc5LCA4MCwgODAsIDc5LCA4MywgNzMsIDc4LCAxOTksIDc5LCAKKyAgICA4MCwgODAsIDc5LCA4MywgNjksIDEyOCwgNzksIDgwLCA3MiwgNzMsIDg1LCA2NywgNzIsIDg1LCA4MywgMTI4LCA3OSwgODAsIAorICAgIDY5LCA4MiwgNjUsIDg0LCA3OSwgODIsIDEyOCwgNzksIDgwLCA2OSwgODIsIDY1LCA4NCwgNzksIDIxMCwgNzksIDgwLCA2OSwgCisgICAgODIsIDY1LCA4NCwgNzMsIDc4LCAxOTksIDc5LCA4MCwgNjksIDc4LCA3MywgNzgsIDE5OSwgNzksIDgwLCA2OSwgNzgsIDQ1LCAKKyAgICA4MCwgMTI4LCA3OSwgODAsIDY5LCA3OCwgNDUsIDc5LCA4NSwgODQsIDc2LCA3MywgNzgsIDY5LCAxOTYsIDc5LCA4MCwgNjksIAorICAgIDc4LCA0NSwgNzksIDEyOCwgNzksIDgwLCA2OSwgNzgsIDQ1LCAyMDcsIDc5LCA4MCwgNjksIDc4LCA0NSwgNzIsIDY5LCA2NSwgCisgICAgNjgsIDY5LCAxOTYsIDc5LCA4MCwgNjksIDc4LCA0NSwgNjcsIDczLCA4MiwgNjcsIDg1LCA3MywgODQsIDQ1LCA3OSwgODUsIAorICAgIDg0LCA4MCwgODUsIDIxMiwgNzksIDgwLCA2OSwgNzgsIDEyOCwgNzksIDc5LCA5MCwgNjksIDEyOCwgNzksIDc5LCA4OSwgCisgICAgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzksIDc5LCA4NSwgMTI4LCA3OSwgNzksIDc3LCA4NSwgMTI4LCA3OSwgNzksIDcyLCAKKyAgICAxMjgsIDc5LCA3OSwgNjksIDEyOCwgNzksIDc5LCA2NiwgNzksIDc5LCA3MCwgNzMsIDc2LCA3MywgMTI4LCA3OSwgNzgsIAorICAgIDg1LCAxMjgsIDc5LCA3OCwgODMsIDg1LCAxMjgsIDc5LCA3OCwgNzgsIDEyOCwgNzksIDc4LCA3NSwgNjUsIDgyLCAxMjgsIAorICAgIDc5LCA3OCwgNjksIDgzLCA2OSwgNzYsIDcwLCAxMjgsIDc5LCA3OCwgNjksIDQ1LCA4NywgNjUsIDIxNywgNzksIDc4LCA2OSwgCisgICAgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgNzksIDc4LCA2OSwgNDUsIDc2LCA3MywgNzgsIDE5NywgNzksIDc4LCAKKyAgICA2OSwgNDUsIDcyLCA4NSwgNzgsIDY4LCA4MiwgNjksIDY4LCA0NSwgNjUsIDc4LCA2OCwgNDUsIDgzLCA3MywgODgsIDg0LCAKKyAgICA3MywgNjksIDg0LCA3MiwgMTI4LCA3OSwgNzgsIDY3LCA3OSwgNzcsIDczLCA3OCwgMTk5LCA3OSwgNzgsIDY1LCA4MCwgCisgICAgMTI4LCA3OSwgNzgsIDQ1LCA3OSwgNzAsIDE5OCwgNzksIDc3LCA3MywgODMsIDgzLCA3MywgNzksIDIwNiwgNzksIDc3LCAKKyAgICA3MywgNjcsIDgyLCA3OSwgNzgsIDEyOCwgNzksIDc3LCA3MywgNjcsIDgyLCA3OSwgMjA2LCA3OSwgNzcsIDY5LCA3MSwgNjUsIAorICAgIDEyOCwgNzksIDc3LCA2OSwgNzEsIDE5MywgNzksIDc3LCA2NSwgNzYsIDc5LCA3OCwgMTI4LCA3OSwgNzYsIDczLCA4NiwgCisgICAgNjksIDEyOCwgNzksIDc2LCA3MywgNzEsIDc5LCAyMDYsIDc5LCA3NiwgNjgsIDEyOCwgNzksIDc1LCA4NCwgMjA3LCA3OSwgCisgICAgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNzksIDc1LCA2NSwgODIsIDE5MywgNzksIDc0LCA3MywgNjYsIDg3LCA2NSwgMjE3LCAKKyAgICA3OSwgNzQsIDY5LCA3OSwgNzgsIDEyOCwgNzksIDczLCA3OCwgMTI4LCA3OSwgNzMsIDc2LCAxMjgsIDc5LCA3MywgMjA0LCAKKyAgICA3OSwgNzIsIDc3LCAxMjgsIDc5LCA3MiwgMjA1LCA3OSwgNzEsIDgyLCA2OSwgMTI4LCA3OSwgNzEsIDc5LCA3OCwgNjksIAorICAgIDc1LCAxMjgsIDc5LCA3MSwgNzksIDc4LCA2OSwgMjAzLCA3OSwgNzEsIDcyLCA2NSwgMjA1LCA3OSwgNzAsIDcwLCA3MywgCisgICAgNjcsIDY5LCA4MiwgMTI4LCA3OSwgNzAsIDcwLCA3MywgNjcsIDY5LCAxMjgsIDc5LCA3MCwgNzAsIDczLCA2NywgMTk3LCAKKyAgICA3OSwgNzAsIDcwLCAxMjgsIDc5LCA2OSwgODksIDEyOCwgNzksIDY5LCA3NSwgMTI4LCA3OSwgNjksIDY5LCAxMjgsIDc5LCAKKyAgICA2OCwgNjksIDc4LCAxMjgsIDc5LCA2OCwgNjgsIDEyOCwgNzksIDY4LCAxOTYsIDc5LCA2NywgODQsIDc5LCA4MCwgODUsIAorICAgIDgzLCAxMjgsIDc5LCA2NywgODQsIDc5LCA2NiwgNjksIDgyLCAxMjgsIDc5LCA2NywgODQsIDY5LCAyMTIsIDc5LCA2NywgCisgICAgODQsIDY1LCA3MSwgNzksIDc4LCA2NSwgMjA0LCA3OSwgNjcsIDg0LCA2NSwgNzEsIDc5LCA3OCwgMTI4LCA3OSwgNjcsIAorICAgIDIxMCwgNzksIDY3LCA3NiwgNzksIDY3LCA3NSwgMTI4LCA3OSwgNjcsIDY3LCA3NiwgODUsIDgzLCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDc5LCA2NiwgODMsIDg0LCA4MiwgODUsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3OSwgNjYsIDc5LCA3NiwgCisgICAgMjExLCA3OSwgNjYsIDc5LCAyMDQsIDc5LCA2NiwgNzksIDcwLCA3MywgNzYsIDczLCAxMjgsIDc5LCA2NiwgNzYsIDczLCAKKyAgICA4MSwgODUsIDE5NywgNzksIDY2LCA3NCwgNjksIDY3LCAyMTIsIDc5LCA2NiwgNjksIDc2LCA4NSwgODMsIDEyOCwgNzksIAorICAgIDY2LCA2OSwgNzYsIDc5LCA4MywgMTI4LCA3OSwgNjYsIDEyOCwgNzksIDY1LCA4OSwgMTI4LCA3OSwgNjUsIDc1LCAxMjgsIAorICAgIDc5LCA2NSwgNjYsIDc5LCA2NSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgNzksIDE5MywgNzksIDQ4LCA1MywgNDksIDEyOCwgCisgICAgNzksIDQ4LCA1MywgNDgsIDY2LCAxMjgsIDc5LCA0OCwgNTMsIDQ4LCA2NSwgMTI4LCA3OSwgNDgsIDUzLCA0OCwgMTI4LCAKKyAgICA3OSwgNDgsIDUyLCA1NywgMTI4LCA3OSwgNDgsIDUyLCA1NiwgMTI4LCA3OSwgNDgsIDUyLCA1NSwgMTI4LCA3OSwgNDgsIAorICAgIDUyLCA1NCwgMTI4LCA3OSwgNDgsIDUyLCA1MywgMTI4LCA3OSwgNDgsIDUyLCA1MiwgMTI4LCA3OSwgNDgsIDUyLCA1MSwgCisgICAgMTI4LCA3OSwgNDgsIDUyLCA1MCwgMTI4LCA3OSwgNDgsIDUyLCA0OSwgMTI4LCA3OSwgNDgsIDUyLCA0OCwgMTI4LCA3OSwgCisgICAgNDgsIDUxLCA1NywgMTI4LCA3OSwgNDgsIDUxLCA1NiwgMTI4LCA3OSwgNDgsIDUxLCA1NSwgMTI4LCA3OSwgNDgsIDUxLCAKKyAgICA1NCwgNjgsIDEyOCwgNzksIDQ4LCA1MSwgNTQsIDY3LCAxMjgsIDc5LCA0OCwgNTEsIDU0LCA2NiwgMTI4LCA3OSwgNDgsIAorICAgIDUxLCA1NCwgNjUsIDEyOCwgNzksIDQ4LCA1MSwgNTQsIDEyOCwgNzksIDQ4LCA1MSwgNTMsIDEyOCwgNzksIDQ4LCA1MSwgCisgICAgNTIsIDEyOCwgNzksIDQ4LCA1MSwgNTEsIDY1LCAxMjgsIDc5LCA0OCwgNTEsIDUxLCAxMjgsIDc5LCA0OCwgNTEsIDUwLCAKKyAgICAxMjgsIDc5LCA0OCwgNTEsIDQ5LCAxMjgsIDc5LCA0OCwgNTEsIDQ4LCA2NSwgMTI4LCA3OSwgNDgsIDUxLCA0OCwgMTI4LCAKKyAgICA3OSwgNDgsIDUwLCA1NywgNjUsIDEyOCwgNzksIDQ4LCA1MCwgNTcsIDEyOCwgNzksIDQ4LCA1MCwgNTYsIDEyOCwgNzksIAorICAgIDQ4LCA1MCwgNTUsIDEyOCwgNzksIDQ4LCA1MCwgNTQsIDEyOCwgNzksIDQ4LCA1MCwgNTMsIDY1LCAxMjgsIDc5LCA0OCwgCisgICAgNTAsIDUzLCAxMjgsIDc5LCA0OCwgNTAsIDUyLCA2NSwgMTI4LCA3OSwgNDgsIDUwLCA1MiwgMTI4LCA3OSwgNDgsIDUwLCAKKyAgICA1MSwgMTI4LCA3OSwgNDgsIDUwLCA1MCwgMTI4LCA3OSwgNDgsIDUwLCA0OSwgMTI4LCA3OSwgNDgsIDUwLCA0OCwgNjUsIAorICAgIDEyOCwgNzksIDQ4LCA1MCwgNDgsIDEyOCwgNzksIDQ4LCA0OSwgNTcsIDY1LCAxMjgsIDc5LCA0OCwgNDksIDU3LCAxMjgsIAorICAgIDc5LCA0OCwgNDksIDU2LCAxMjgsIDc5LCA0OCwgNDksIDU1LCAxMjgsIDc5LCA0OCwgNDksIDU0LCAxMjgsIDc5LCA0OCwgCisgICAgNDksIDUzLCAxMjgsIDc5LCA0OCwgNDksIDUyLCAxMjgsIDc5LCA0OCwgNDksIDUxLCAxMjgsIDc5LCA0OCwgNDksIDUwLCAKKyAgICAxMjgsIDc5LCA0OCwgNDksIDQ5LCAxMjgsIDc5LCA0OCwgNDksIDQ4LCA2NywgMTI4LCA3OSwgNDgsIDQ5LCA0OCwgNjYsIAorICAgIDEyOCwgNzksIDQ4LCA0OSwgNDgsIDY1LCAxMjgsIDc5LCA0OCwgNDksIDQ4LCAxMjgsIDc5LCA0OCwgNDgsIDU3LCAxMjgsIAorICAgIDc5LCA0OCwgNDgsIDU2LCAxMjgsIDc5LCA0OCwgNDgsIDU1LCAxMjgsIDc5LCA0OCwgNDgsIDU0LCA3MCwgMTI4LCA3OSwgCisgICAgNDgsIDQ4LCA1NCwgNjksIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDY4LCAxMjgsIDc5LCA0OCwgNDgsIDU0LCA2NywgMTI4LCAKKyAgICA3OSwgNDgsIDQ4LCA1NCwgNjYsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDc5LCA0OCwgNDgsIDU0LCAxMjgsIAorICAgIDc5LCA0OCwgNDgsIDUzLCA2NSwgMTI4LCA3OSwgNDgsIDQ4LCA1MywgMTI4LCA3OSwgNDgsIDQ4LCA1MiwgMTI4LCA3OSwgCisgICAgNDgsIDQ4LCA1MSwgMTI4LCA3OSwgNDgsIDQ4LCA1MCwgMTI4LCA3OSwgNDgsIDQ4LCA0OSwgNjUsIDEyOCwgNzksIDQ4LCAKKyAgICA0OCwgNDksIDEyOCwgNzksIDQ1LCA4OSwgNjksIDEyOCwgNzksIDQ1LCA3OSwgNDUsIDczLCAxMjgsIDc5LCA0NSwgNjksIAorICAgIDEyOCwgNzgsIDkwLCA4OSwgODgsIDEyOCwgNzgsIDkwLCA4OSwgODQsIDEyOCwgNzgsIDkwLCA4OSwgODIsIDg4LCAxMjgsIAorICAgIDc4LCA5MCwgODksIDgyLCAxMjgsIDc4LCA5MCwgODksIDgwLCAxMjgsIDc4LCA5MCwgODksIDEyOCwgNzgsIDkwLCA4NSwgCisgICAgODgsIDEyOCwgNzgsIDkwLCA4NSwgODIsIDg4LCAxMjgsIDc4LCA5MCwgODUsIDgyLCAxMjgsIDc4LCA5MCwgODUsIDgxLCAKKyAgICAxMjgsIDc4LCA5MCwgODUsIDgwLCAxMjgsIDc4LCA5MCwgODUsIDc5LCA4OCwgMTI4LCA3OCwgOTAsIDg1LCA3OSwgMTI4LCAKKyAgICA3OCwgOTAsIDg1LCAyMDYsIDc4LCA5MCwgODUsIDEyOCwgNzgsIDkwLCA3OSwgODgsIDEyOCwgNzgsIDkwLCA3OSwgODAsIAorICAgIDEyOCwgNzgsIDkwLCA3MywgODgsIDEyOCwgNzgsIDkwLCA3MywgODQsIDEyOCwgNzgsIDkwLCA3MywgODAsIDEyOCwgNzgsIAorICAgIDkwLCA3MywgNjksIDg4LCAxMjgsIDc4LCA5MCwgNzMsIDY5LCA4MCwgMTI4LCA3OCwgOTAsIDczLCA2OSwgMTI4LCA3OCwgCisgICAgOTAsIDczLCAxMjgsIDc4LCA5MCwgNjksIDg4LCAxMjgsIDc4LCA5MCwgNjksIDg1LCA3NywgMTI4LCA3OCwgOTAsIDY5LCAKKyAgICAxMjgsIDc4LCA5MCwgNjUsIDg4LCAxMjgsIDc4LCA5MCwgNjUsIDg0LCAxMjgsIDc4LCA5MCwgNjUsIDgxLCAxMjgsIDc4LCAKKyAgICA5MCwgNjUsIDgwLCAxMjgsIDc4LCA5MCwgNjUsIDEyOCwgNzgsIDkwLCAxOTMsIDc4LCA4OSwgODcsIDY1LCAxMjgsIDc4LCAKKyAgICA4OSwgODUsIDg4LCAxMjgsIDc4LCA4OSwgODUsIDg1LCAxMjgsIDc4LCA4OSwgODUsIDg0LCAxMjgsIDc4LCA4OSwgODUsIAorICAgIDgwLCAxMjgsIDc4LCA4OSwgODUsIDc5LCA4OCwgMTI4LCA3OCwgODksIDg1LCA3OSwgODAsIDEyOCwgNzgsIDg5LCA4NSwgCisgICAgNzksIDEyOCwgNzgsIDg5LCA4NSwgNzgsIDEyOCwgNzgsIDg5LCA4NSwgNjksIDEyOCwgNzgsIDg5LCA4NSwgMTI4LCA3OCwgCisgICAgODksIDc5LCA4OCwgMTI4LCA3OCwgODksIDc5LCA4NCwgMTI4LCA3OCwgODksIDc5LCA4MCwgMTI4LCA3OCwgODksIDc5LCAKKyAgICA3OSwgMTI4LCA3OCwgODksIDc5LCA3OCwgMTI4LCA3OCwgODksIDc5LCA2NSwgMTI4LCA3OCwgODksIDc5LCAxMjgsIDc4LCAKKyAgICA4OSwgNzQsIDY1LCAxMjgsIDc4LCA4OSwgNzMsIDg4LCAxMjgsIDc4LCA4OSwgNzMsIDg0LCAxMjgsIDc4LCA4OSwgNzMsIAorICAgIDIxMiwgNzgsIDg5LCA3MywgMjExLCA3OCwgODksIDczLCAyMTAsIDc4LCA4OSwgNzMsIDgwLCAxMjgsIDc4LCA4OSwgNzMsIAorICAgIDc4LCA0NSwgNjgsIDc5LCAxMjgsIDc4LCA4OSwgNzMsIDc4LCAxMjgsIDc4LCA4OSwgNzMsIDczLCAxMjgsIDc4LCA4OSwgCisgICAgNzMsIDY5LCA4OCwgMTI4LCA3OCwgODksIDczLCA2OSwgODQsIDEyOCwgNzgsIDg5LCA3MywgNjksIDgwLCAxMjgsIDc4LCAKKyAgICA4OSwgNzMsIDY5LCAxMjgsIDc4LCA4OSwgNzMsIDEyOCwgNzgsIDg5LCAyMDEsIDc4LCA4OSwgNzIsIDY1LCAxMjgsIDc4LCAKKyAgICA4OSwgNjksIDg0LCAxMjgsIDc4LCA4OSwgNjksIDIxMiwgNzgsIDg5LCA2OSwgNzgsIDEyOCwgNzgsIDg5LCA2OSwgNzIsIAorICAgIDEyOCwgNzgsIDg5LCA2OSwgMjAwLCA3OCwgODksIDY5LCA2OSwgMTI4LCA3OCwgODksIDY5LCAxMjgsIDc4LCA4OSwgMTk2LCAKKyAgICA3OCwgODksIDY3LCA2NSwgMTI4LCA3OCwgODksIDY1LCA4NSwgMTI4LCA3OCwgODksIDY1LCA3MywgMTI4LCA3OCwgODksIAorICAgIDY1LCA3MiwgMTI4LCA3OCwgODksIDY1LCA2OSwgNzcsIDY1LCA2OSwgMTI4LCA3OCwgODksIDY1LCA2NSwgMTI4LCA3OCwgCisgICAgODcsIDc5LCA3OSwgMTI4LCA3OCwgODcsIDc5LCAxMjgsIDc4LCA4NywgNzMsIDczLCAxMjgsIDc4LCA4NywgNzMsIDEyOCwgCisgICAgNzgsIDg3LCA2OSwgMTI4LCA3OCwgODcsIDY1LCA2NSwgMTI4LCA3OCwgODcsIDY1LCAxMjgsIDc4LCA4NywgMTI4LCA3OCwgCisgICAgODYsIDEyOCwgNzgsIDg1LCA4OCwgMTI4LCA3OCwgODUsIDg1LCA3OCwgMTI4LCA3OCwgODUsIDg1LCAxMjgsIDc4LCA4NSwgCisgICAgODQsIDczLCA3NiwgNzYsIDg1LCAxMjgsIDc4LCA4NSwgODQsIDEyOCwgNzgsIDg1LCAyMTIsIDc4LCA4NSwgODIsIDg4LCAKKyAgICAxMjgsIDc4LCA4NSwgODIsIDEyOCwgNzgsIDg1LCA4MCwgMTI4LCA3OCwgODUsIDc5LCA4OCwgMTI4LCA3OCwgODUsIDc5LCAKKyAgICA4MCwgMTI4LCA3OCwgODUsIDc5LCAxMjgsIDc4LCA4NSwgNzgsIDg1LCA5MCwgMTI4LCA3OCwgODUsIDc4LCA4NSwgMjE4LCAKKyAgICA3OCwgODUsIDc4LCA3MSwgMTI4LCA3OCwgODUsIDc4LCA2NSwgODYsIDg1LCAyMTIsIDc4LCA4NSwgNzgsIDY1LCA4NiwgNzMsIAorICAgIDIwMywgNzgsIDg1LCA3OCwgMTI4LCA3OCwgODUsIDIwNiwgNzgsIDg1LCA3NywgNjksIDgyLCAyMDcsIDc4LCA4NSwgNzcsIAorICAgIDY5LCA4MiwgNjUsIDg0LCA3OSwgMjEwLCA3OCwgODUsIDc3LCA2OSwgODIsIDY1LCAyMDQsIDc4LCA4NSwgNzcsIDY2LCA2OSwgCisgICAgODIsIDgzLCAxMjgsIDc4LCA4NSwgNzcsIDY2LCA2OSwgODIsIDEyOCwgNzgsIDg1LCA3NywgMTI4LCA3OCwgODUsIDc2LCAKKyAgICA3NiwgMTI4LCA3OCwgODUsIDc2LCAyMDQsIDc4LCA4NSwgNzYsIDEyOCwgNzgsIDg1LCA3NSwgODQsIDY1LCAxMjgsIDc4LCAKKyAgICA4NSwgNjksIDc4LCA3MSwgMTI4LCA3OCwgODUsIDY5LCAxMjgsIDc4LCA4NSwgNjYsIDczLCA2NSwgMjA2LCA3OCwgODUsIAorICAgIDY1LCA2OSwgMTI4LCA3OCwgODUsIDQ5LCA0OSwgMTI4LCA3OCwgODUsIDQ5LCAxNzcsIDc4LCA4NSwgNDgsIDUwLCA1MCwgCisgICAgNjUsIDEyOCwgNzgsIDg1LCA0OCwgNTAsIDUwLCAxMjgsIDc4LCA4NSwgNDgsIDUwLCA0OSwgMTI4LCA3OCwgODUsIDQ4LCAKKyAgICA1MCwgNDgsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDU3LCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1NiwgNjUsIDEyOCwgNzgsIAorICAgIDg1LCA0OCwgNDksIDU2LCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1NSwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTQsIDEyOCwgCisgICAgNzgsIDg1LCA0OCwgNDksIDUzLCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1MiwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTEsIAorICAgIDEyOCwgNzgsIDg1LCA0OCwgNDksIDUwLCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA0OSwgNjUsIDEyOCwgNzgsIDg1LCA0OCwgCisgICAgNDksIDQ5LCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDQ4LCAxMjgsIDc4LCAKKyAgICA4NSwgNDgsIDQ4LCA1NywgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNTYsIDEyOCwgNzgsIDg1LCA0OCwgNDgsIDU1LCAxMjgsIAorICAgIDc4LCA4NSwgNDgsIDQ4LCA1NCwgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNTMsIDEyOCwgNzgsIDg1LCA0OCwgNDgsIDUyLCAKKyAgICAxMjgsIDc4LCA4NSwgNDgsIDQ4LCA1MSwgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNTAsIDEyOCwgNzgsIDg1LCA0OCwgNDgsIAorICAgIDQ5LCAxMjgsIDc4LCA4NCwgODgsIDczLCA4NiwgMTI4LCA3OCwgODQsIDg1LCA4NSwgMTI4LCA3OCwgODQsIDg1LCA3NywgCisgICAgMTI4LCA3OCwgODQsIDg1LCA3NCwgMTI4LCA3OCwgODQsIDIxMywgNzgsIDg0LCA4MywgNjUsIDg1LCAxMjgsIDc4LCA4NCwgCisgICAgNzksIDgxLCA4MCwgNjksIDc4LCAxMjgsIDc4LCA4NCwgNzksIDcxLCAxMjgsIDc4LCA4NCwgNzksIDE5OSwgNzgsIDg0LCAKKyAgICA3MywgNjksIDE5NywgNzgsIDg0LCA3MiwgNjUsIDg1LCAxMjgsIDc4LCA4NCwgNjksIDg1LCA3OCwgNzEsIDY2LCA2NSwgCisgICAgMTI4LCA3OCwgODQsIDY5LCA4NSwgNzcsIDEyOCwgNzgsIDg0LCA2OSwgNzgsIDEyOCwgNzgsIDg0LCA2OSwgNjksIDEyOCwgCisgICAgNzgsIDg0LCA2NSwgODAsIDEyOCwgNzgsIDg0LCA2NSwgMjA4LCA3OCwgODQsIDY1LCA2NSwgMTI4LCA3OCwgODMsIDg1LCAKKyAgICA3OSwgMjEyLCA3OCwgODMsIDg1LCA3OCwgMTI4LCA3OCwgODMsIDg1LCA3NywgMTI4LCA3OCwgODMsIDc5LCA3NywgMTI4LCAKKyAgICA3OCwgODMsIDczLCA2OSwgNjksIDg0LCAxMjgsIDc4LCA4MywgNzMsIDY5LCA2OSwgODAsIDEyOCwgNzgsIDgzLCA3MywgNjksIAorICAgIDY5LCAxMjgsIDc4LCA4MywgNzIsIDg1LCA4NCwgMTI4LCA3OCwgODMsIDcyLCA4NSwgMjEyLCA3OCwgODMsIDcyLCA4NSwgCisgICAgNzksIDgwLCAxMjgsIDc4LCA4MywgNzIsIDg1LCA2OSwgMTI4LCA3OCwgODMsIDcyLCA3MywgNjksIDY5LCAxMjgsIDc4LCAKKyAgICA4MywgNzIsIDY5LCA2OSwgMTI4LCA3OCwgODMsIDcyLCA2NSwgODEsIDEyOCwgNzgsIDgzLCA3MiwgNjUsIDEyOCwgNzgsIAorICAgIDgzLCA2OSwgODUsIDY1LCA2OSwgNzgsIDEyOCwgNzgsIDgzLCA2OSwgNzgsIDEyOCwgNzgsIDgzLCA2NSwgMTI4LCA3OCwgCisgICAgODIsIDg5LCA4OCwgMTI4LCA3OCwgODIsIDg5LCA4NCwgMTI4LCA3OCwgODIsIDg5LCA4MiwgODgsIDEyOCwgNzgsIDgyLCAKKyAgICA4OSwgODIsIDEyOCwgNzgsIDgyLCA4OSwgODAsIDEyOCwgNzgsIDgyLCA4OSwgMTI4LCA3OCwgODIsIDg1LCA4OCwgMTI4LCAKKyAgICA3OCwgODIsIDg1LCA4NCwgMTI4LCA3OCwgODIsIDg1LCA4MiwgODgsIDEyOCwgNzgsIDgyLCA4NSwgODIsIDEyOCwgNzgsIAorICAgIDgyLCA4NSwgODAsIDEyOCwgNzgsIDgyLCA4NSwgNjUsIDEyOCwgNzgsIDgyLCA4NSwgMTI4LCA3OCwgODIsIDc5LCA4OCwgCisgICAgMTI4LCA3OCwgODIsIDc5LCA4MCwgMTI4LCA3OCwgODIsIDc5LCAxMjgsIDc4LCA4MiwgNjksIDg4LCAxMjgsIDc4LCA4MiwgCisgICAgNjksIDg0LCAxMjgsIDc4LCA4MiwgNjksIDIxMSwgNzgsIDgyLCA2OSwgODAsIDEyOCwgNzgsIDgyLCA2OSwgMTI4LCA3OCwgCisgICAgODIsIDY1LCA4OCwgMTI4LCA3OCwgODIsIDY1LCA4NCwgMTI4LCA3OCwgODIsIDY1LCA4MCwgMTI4LCA3OCwgODIsIDY1LCAKKyAgICAxMjgsIDc4LCA4MSwgNzMsIDcxLCAxMjgsIDc4LCA3OSwgODksIDEyOCwgNzgsIDc5LCA4OCwgMTI4LCA3OCwgNzksIDg3LCAKKyAgICA2NywgMTI4LCA3OCwgNzksIDg2LCA2OSwgNzcsIDY2LCA2OSwgODIsIDEyOCwgNzgsIDc5LCA4NCwgODQsIDc5LCAxMjgsIAorICAgIDc4LCA3OSwgODQsIDY5LCA4MywgMTI4LCA3OCwgNzksIDg0LCA2OSwgNzIsIDY5LCA2NSwgNjgsIDEyOCwgNzgsIDc5LCA4NCwgCisgICAgNjksIDcyLCA2OSwgNjUsIDE5NiwgNzgsIDc5LCA4NCwgNjksIDY2LCA3OSwgNzksIDc1LCAxMjgsIDc4LCA3OSwgODQsIDY5LCAKKyAgICA2NiwgNzksIDc5LCAyMDMsIDc4LCA3OSwgODQsIDY5LCAxMjgsIDc4LCA3OSwgODQsIDE5NywgNzgsIDc5LCA4NCwgNjcsIAorICAgIDcyLCA2OSwgMTk2LCA3OCwgNzksIDg0LCA2NywgNzIsIDEyOCwgNzgsIDc5LCA4NCwgNjUsIDg0LCA3MywgNzksIDIwNiwgCisgICAgNzgsIDc5LCA4NCwgMTI4LCA3OCwgNzksIDIxMiwgNzgsIDc5LCA4MywgNjksIDEyOCwgNzgsIDc5LCA4MywgMTk3LCA3OCwgCisgICAgNzksIDgyLCA4NCwgNzIsIDg3LCA2OSwgODMsIDIxMiwgNzgsIDc5LCA4MiwgODQsIDcyLCA2OSwgODIsIDIwNiwgNzgsIDc5LCAKKyAgICA4MiwgODQsIDcyLCA2OSwgNjUsIDgzLCA4NCwgNDUsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNzMsIDc4LCAxOTksIDc4LCA3OSwgCisgICAgODIsIDc3LCA2NSwgMjA0LCA3OCwgNzksIDgyLCA2OCwgNzMsIDE5NSwgNzgsIDc5LCAyMTAsIDc4LCA3OSwgODAsIDEyOCwgCisgICAgNzgsIDc5LCA3OSwgNzgsIDg1LCAxMjgsIDc4LCA3OSwgNzksIDEyOCwgNzgsIDc5LCA3OCwgNzAsIDc5LCA4MiwgNzUsIDczLCAKKyAgICA3OCwgNzEsIDEyOCwgNzgsIDc5LCA3OCwgNDUsIDgwLCA3OSwgODQsIDY1LCA2NiwgNzYsIDE5NywgNzgsIDc5LCA3OCwgNDUsIAorICAgIDc0LCA3OSwgNzMsIDc4LCA2OSwgODIsIDEyOCwgNzgsIDc5LCA3OCwgNDUsIDY2LCA4MiwgNjksIDY1LCA3NSwgNzMsIDc4LCAKKyAgICAxOTksIDc4LCA3OSwgNzgsIDEyOCwgNzgsIDc5LCA3NywgNzMsIDgzLCA3NywgMTkzLCA3OCwgNzksIDc3LCA3MywgNzgsIAorICAgIDY1LCAyMDQsIDc4LCA3OSwgNzUsIDcyLCA4NSwgNzUsIDEyOCwgNzgsIDc5LCA2OCwgNjksIDEyOCwgNzgsIDc5LCA2NSwgCisgICAgMTI4LCA3OCwgNzksIDQ1LCA2NiwgODIsIDY5LCA2NSwgMjAzLCA3OCwgNzgsIDg1LCA4NSwgMTI4LCA3OCwgNzgsIDg1LCAKKyAgICAxMjgsIDc4LCA3OCwgNzksIDc5LCAxMjgsIDc4LCA3OCwgNzksIDEyOCwgNzgsIDc4LCA3OCwgODUsIDg1LCAxMjgsIDc4LCAKKyAgICA3OCwgNzgsIDg1LCAxMjgsIDc4LCA3OCwgNzgsIDc5LCA3OSwgMTI4LCA3OCwgNzgsIDc4LCA3OSwgMTI4LCA3OCwgNzgsIAorICAgIDc4LCA3MywgNzMsIDEyOCwgNzgsIDc4LCA3OCwgNzMsIDEyOCwgNzgsIDc4LCA3OCwgNjksIDY5LCAxMjgsIDc4LCA3OCwgCisgICAgNzgsIDY5LCAxMjgsIDc4LCA3OCwgNzgsIDY1LCA4NSwgMTI4LCA3OCwgNzgsIDc4LCA2NSwgNzMsIDEyOCwgNzgsIDc4LCAKKyAgICA3OCwgNjUsIDY1LCAxMjgsIDc4LCA3OCwgNzgsIDY1LCAxMjgsIDc4LCA3OCwgNzgsIDEyOCwgNzgsIDc4LCA3MiwgNjUsIAorICAgIDEyOCwgNzgsIDc4LCA3MSwgNzksIDc5LCAxMjgsIDc4LCA3OCwgNzEsIDc5LCAxMjgsIDc4LCA3OCwgNzEsIDczLCA3MywgCisgICAgMTI4LCA3OCwgNzgsIDcxLCA3MywgMTI4LCA3OCwgNzgsIDcxLCA2NSwgNjUsIDEyOCwgNzgsIDc4LCA3MSwgNjUsIDEyOCwgCisgICAgNzgsIDc4LCA3MSwgMTI4LCA3OCwgNzgsIDY2LCA4MywgODAsIDEyOCwgNzgsIDc3LCAxMjgsIDc4LCA3NiwgNjUsIDg1LCAKKyAgICAxMjgsIDc4LCA3NiwgNDgsIDUwLCA0OCwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTcsIDEyOCwgNzgsIDc2LCA0OCwgNDksIAorICAgIDU2LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1NSwgNjUsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDU1LCAxMjgsIDc4LCA3NiwgCisgICAgNDgsIDQ5LCA1NCwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTMsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDUyLCAxMjgsIDc4LCAKKyAgICA3NiwgNDgsIDQ5LCA1MSwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTAsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDQ5LCAxMjgsIAorICAgIDc4LCA3NiwgNDgsIDQ5LCA0OCwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTcsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDU2LCAKKyAgICAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1NSwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTQsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIAorICAgIDUzLCA2NSwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTMsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDUyLCAxMjgsIDc4LCA3NiwgCisgICAgNDgsIDQ4LCA1MSwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTAsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDQ5LCAxMjgsIDc4LCAKKyAgICA3NiwgMTI4LCA3OCwgNzUsIDc5LCA3NywgMTI4LCA3OCwgNzUsIDIwNywgNzgsIDc1LCA3MywgNzgsIDY4LCA3MywgMTI4LCAKKyAgICA3OCwgNzUsIDY1LCA4NSwgMTI4LCA3OCwgNzUsIDY1LCA2NSwgODIsIDY1LCA2OSwgMTI4LCA3OCwgNzQsIDg5LCA4OCwgCisgICAgMTI4LCA3OCwgNzQsIDg5LCA4NCwgMTI4LCA3OCwgNzQsIDg5LCA4MiwgODgsIDEyOCwgNzgsIDc0LCA4OSwgODIsIDEyOCwgCisgICAgNzgsIDc0LCA4OSwgODAsIDEyOCwgNzgsIDc0LCA4OSwgMTI4LCA3OCwgNzQsIDg1LCA4OCwgMTI4LCA3OCwgNzQsIDg1LCAKKyAgICA4MiwgODgsIDEyOCwgNzgsIDc0LCA4NSwgODIsIDEyOCwgNzgsIDc0LCA4NSwgODEsIDY1LCAxMjgsIDc4LCA3NCwgODUsIAorICAgIDgwLCAxMjgsIDc4LCA3NCwgODUsIDc5LCA4OCwgMTI4LCA3OCwgNzQsIDg1LCA3OSwgMTI4LCA3OCwgNzQsIDg1LCA2OSwgCisgICAgODEsIDEyOCwgNzgsIDc0LCA4NSwgNjUsIDY5LCAxMjgsIDc4LCA3NCwgODUsIDEyOCwgNzgsIDc0LCA3OSwgODgsIDEyOCwgCisgICAgNzgsIDc0LCA3OSwgODQsIDEyOCwgNzgsIDc0LCA3OSwgODAsIDEyOCwgNzgsIDc0LCA3OSwgNzksIDEyOCwgNzgsIDc0LCAKKyAgICA3OSwgMTI4LCA3OCwgNzQsIDczLCA4OCwgMTI4LCA3OCwgNzQsIDczLCA4NCwgMTI4LCA3OCwgNzQsIDczLCA4MCwgMTI4LCAKKyAgICA3OCwgNzQsIDczLCA2OSwgODgsIDEyOCwgNzgsIDc0LCA3MywgNjksIDg0LCAxMjgsIDc4LCA3NCwgNzMsIDY5LCA4MCwgCisgICAgMTI4LCA3OCwgNzQsIDczLCA2OSwgNjksIDEyOCwgNzgsIDc0LCA3MywgNjksIDEyOCwgNzgsIDc0LCA3MywgMTI4LCA3OCwgCisgICAgNzQsIDIwMSwgNzgsIDc0LCA2OSwgODUsIDg4LCAxMjgsIDc4LCA3NCwgNjksIDg1LCA4NCwgMTI4LCA3OCwgNzQsIDY5LCAKKyAgICA4NSwgNjUsIDY5LCA3OCwgNjUsIDEyOCwgNzgsIDc0LCA2OSwgODUsIDY1LCA2OSwgNzcsIDEyOCwgNzgsIDc0LCA2OSwgNjksIAorICAgIDY5LCA2OSwgMTI4LCA3OCwgNzQsIDY5LCA2OSwgMTI4LCA3OCwgNzQsIDY5LCAxOTcsIDc4LCA3NCwgNjksIDEyOCwgNzgsIAorICAgIDc0LCA2NSwgODEsIDEyOCwgNzgsIDc0LCA2NSwgODAsIDEyOCwgNzgsIDc0LCA2NSwgNjksIDc3LCA3NiwgNzMsIDEyOCwgCisgICAgNzgsIDc0LCA2NSwgNjksIDc3LCAxMjgsIDc4LCA3NCwgNjUsIDY1LCAxMjgsIDc4LCA3MywgODgsIDEyOCwgNzgsIDczLCAKKyAgICA4NCwgODIsIDY5LCAxMjgsIDc4LCA3MywgODMsIDY1LCA3MSwgMTI4LCA3OCwgNzMsIDgyLCA4NSwgNzEsIDg1LCAxMjgsIAorICAgIDc4LCA3MywgODAsIDEyOCwgNzgsIDczLCA3OCwgODQsIDcyLCAxMjgsIDc4LCA3MywgNzgsIDY5LCA4NCwgODksIDEyOCwgCisgICAgNzgsIDczLCA3OCwgNjksIDg0LCAyMTcsIDc4LCA3MywgNzgsIDY5LCA4NCwgNjksIDY5LCA3OCwgMTI4LCA3OCwgNzMsIDc4LCAKKyAgICA2OSwgODQsIDY5LCA2OSwgMjA2LCA3OCwgNzMsIDc4LCA2OSwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgNzgsIAorICAgIDczLCA3OCwgMTk3LCA3OCwgNzMsIDc4LCA2OCwgNjUsIDUwLCAxMjgsIDc4LCA3MywgNzgsIDY4LCA2NSwgMTc4LCA3OCwgCisgICAgNzMsIDc4LCA1NywgMTI4LCA3OCwgNzMsIDc4LCAxMjgsIDc4LCA3MywgNzcsIDEyOCwgNzgsIDczLCAyMDUsIDc4LCA3MywgCisgICAgNzUsIDc5LCA3NiwgODMsIDY2LCA4NSwgODIsIDE5OSwgNzgsIDczLCA3NSwgNzIsIDY1LCA3MiwgNzMsIDg0LCAxMjgsIDc4LCAKKyAgICA3MywgNzUsIDY1LCA3MiwgNzMsIDg0LCAxMjgsIDc4LCA3MywgNzUsIDY1LCAxMjgsIDc4LCA3MywgNzIsIDgzLCA3MiwgODYsIAorICAgIDY1LCA4MywgNjUsIDEyOCwgNzgsIDczLCA3MSwgNzMsIDY4LCA2NSwgNzcsIDczLCA3OCwgMTI4LCA3OCwgNzMsIDcxLCA3MywgCisgICAgNjgsIDY1LCA2OSwgODMsIDcyLCAxMjgsIDc4LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA3OCwgNzMsIDcxLCA3MiwgMjEyLCAKKyAgICA3OCwgNzMsIDcxLCA3MSwgNjUsIDcyLCA3MywgODQsIDY1LCAxMjgsIDc4LCA3MywgNjksIDg4LCAxMjgsIDc4LCA3MywgNjksIAorICAgIDg1LCA3OCwgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgODQsIDcyLCAKKyAgICA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgNzgsIAorICAgIDczLCA2OSwgODUsIDc4LCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDgwLCAKKyAgICA3MywgNjksIDg1LCA4MCwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgCisgICAgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDc4LCA3MywgNjksIDg1LCAKKyAgICA3OCwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA2NywgNzMsIDY5LCA4NSwgCisgICAgNjcsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgNzgsIDczLCAKKyAgICA2OSwgODUsIDIwNiwgNzgsIDczLCA2OSwgODAsIDEyOCwgNzgsIDczLCA2OSwgMTI4LCA3OCwgNzMsIDY2LCAxMjgsIDc4LCAKKyAgICA3MywgNjUsIDEyOCwgNzgsIDczLCA1MCwgMTI4LCA3OCwgNzIsIDg1LCA2OSwgMTI4LCA3OCwgNzIsIDc0LCA2NSwgMTI4LCAKKyAgICA3OCwgNzIsIDEyOCwgNzgsIDcxLCA4OSwgNjksIDEyOCwgNzgsIDcxLCA4NiwgNjksIDEyOCwgNzgsIDcxLCA4NSwgODUsIAorICAgIDEyOCwgNzgsIDcxLCA4NSwgNzksIDg4LCAxMjgsIDc4LCA3MSwgODUsIDc5LCA4NCwgMTI4LCA3OCwgNzEsIDg1LCA3OSwgCisgICAgMTI4LCA3OCwgNzEsIDg1LCA2NSwgNzgsIDEyOCwgNzgsIDcxLCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA3OCwgNzEsIDg1LCAKKyAgICA2NSwgNjksIDEyOCwgNzgsIDcxLCA3OSwgODgsIDEyOCwgNzgsIDcxLCA3OSwgODUsIDEyOCwgNzgsIDcxLCA3OSwgMjEzLCAKKyAgICA3OCwgNzEsIDc5LCA4NCwgMTI4LCA3OCwgNzEsIDc5LCA4MSwgMTI4LCA3OCwgNzEsIDc5LCA4MCwgMTI4LCA3OCwgNzEsIAorICAgIDc5LCA3OCwgMTI4LCA3OCwgNzEsIDc5LCA3NywgMTI4LCA3OCwgNzEsIDc5LCA2OSwgNzIsIDEyOCwgNzgsIDcxLCA3OSwgCisgICAgNjksIDIwMCwgNzgsIDcxLCAyMDcsIDc4LCA3MSwgNzUsIDg5LCA2OSwgNjksIDEyOCwgNzgsIDcxLCA3NSwgODcsIDY1LCAKKyAgICA2OSwgNzgsIDEyOCwgNzgsIDcxLCA3NSwgODUsIDgwLCAxMjgsIDc4LCA3MSwgNzUsIDg1LCA3OCwgMTI4LCA3OCwgNzEsIAorICAgIDc1LCA4NSwgNzcsIDEyOCwgNzgsIDcxLCA3NSwgODUsIDY5LCA3OCwgOTAsIDY5LCA4NSwgNzcsIDEyOCwgNzgsIDcxLCA3NSwgCisgICAgODUsIDE5NywgNzgsIDcxLCA3NSwgNzMsIDc4LCA2OCwgMjAxLCA3OCwgNzEsIDc1LCA3MywgNjksIDY5LCAxMjgsIDc4LCAKKyAgICA3MSwgNzUsIDY5LCA4NSwgODgsIDEyOCwgNzgsIDcxLCA3NSwgNjksIDg1LCA4MiwgNzMsIDEyOCwgNzgsIDcxLCA3NSwgNjksIAorICAgIDg1LCA2NSwgNjksIDgxLCAxMjgsIDc4LCA3MSwgNzUsIDY5LCA4NSwgNjUsIDY5LCA3NywgMTI4LCA3OCwgNzEsIDc1LCA2NSwgCisgICAgODEsIDEyOCwgNzgsIDcxLCA3NSwgNjUsIDgwLCAxMjgsIDc4LCA3MSwgNzUsIDY1LCA2NSwgNzcsIDczLCAxMjgsIDc4LCAKKyAgICA3MSwgNzUsIDY1LCAxMjgsIDc4LCA3MSwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgNzEsIDczLCA2OSwgODAsIDEyOCwgNzgsIAorICAgIDcxLCA3MywgNjksIDEyOCwgNzgsIDcxLCA3MiwgNjUsIDEyOCwgNzgsIDcxLCA3MSwgODcsIDY1LCA2OSwgNzgsIDEyOCwgCisgICAgNzgsIDcxLCA3MSwgODUsIDgyLCA2NSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgODUsIDgwLCAxMjgsIDc4LCA3MSwgNzEsIDg1LCAKKyAgICA3OSwgODEsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDc5LCAyMDksIDc4LCA3MSwgNzEsIDg1LCA3OSwgNzgsIDEyOCwgNzgsIAorICAgIDcxLCA3MSwgODUsIDc5LCA3NywgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNzcsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDY5LCA2OSwgCisgICAgODQsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDY1LCA2OSwgODMsIDcyLCA2NSwgMTk3LCA3OCwgNzEsIDcxLCA4NSwgNjUsIDY5LCAKKyAgICAyMDYsIDc4LCA3MSwgNzEsIDg1LCA2NSwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgMTI4LCA3OCwgNzEsIDcxLCA3OSwgNzksIAorICAgIDEyOCwgNzgsIDcxLCA3MSwgNzksIDEyOCwgNzgsIDcxLCA3MSwgNzMsIDEyOCwgNzgsIDcxLCA3MSwgNjksIDg1LCA4OCwgCisgICAgMTI4LCA3OCwgNzEsIDcxLCA2OSwgODUsIDY1LCA2OSwgODQsIDEyOCwgNzgsIDcxLCA3MSwgNjksIDg1LCA2NSwgNjksIAorICAgIDEyOCwgNzgsIDcxLCA3MSwgNjksIDIxMywgNzgsIDcxLCA3MSwgNjksIDc4LCAxMjgsIDc4LCA3MSwgNzEsIDY5LCA2OSwgCisgICAgODQsIDEyOCwgNzgsIDcxLCA3MSwgNjksIDY5LCA2OSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgNjksIDY5LCAxMjgsIDc4LCAKKyAgICA3MSwgNzEsIDY5LCAxMjgsIDc4LCA3MSwgNzEsIDY1LCA4MCwgMTI4LCA3OCwgNzEsIDcxLCA2NSwgNjUsIDc3LCA2NSwgNjksIAorICAgIDEyOCwgNzgsIDcxLCA3MSwgNjUsIDY1LCA3NywgMTI4LCA3OCwgNzEsIDcxLCA2NSwgNjUsIDEyOCwgNzgsIDcxLCA3MSwgCisgICAgMTI4LCA3OCwgNzEsIDY5LCA4OCwgMTI4LCA3OCwgNzEsIDY5LCA4NSwgODIsIDY5LCA4NSwgODQsIDEyOCwgNzgsIDcxLCAKKyAgICA2OSwgODAsIDEyOCwgNzgsIDcxLCA2OSwgNzgsIDEyOCwgNzgsIDcxLCA2OSwgNjksIDEyOCwgNzgsIDcxLCA2OSwgNjUsIAorICAgIDY4LCA2NSwgNzYsIDEyOCwgNzgsIDcxLCA2NSwgODgsIDEyOCwgNzgsIDcxLCA2NSwgODUsIDEyOCwgNzgsIDcxLCA2NSwgCisgICAgODQsIDEyOCwgNzgsIDcxLCA2NSwgMjExLCA3OCwgNzEsIDY1LCA4MSwgMTI4LCA3OCwgNzEsIDY1LCA4MCwgMTI4LCA3OCwgCisgICAgNzEsIDY1LCA3OCwgNzEsIDg1LCAxMjgsIDc4LCA3MSwgNjUsIDc4LCAxMjgsIDc4LCA3MSwgNjUsIDczLCAxMjgsIDc4LCAKKyAgICA3MSwgNjUsIDcyLCAxMjgsIDc4LCA3MSwgNjUsIDY1LCA3MywgMTI4LCA3OCwgNzEsIDE5MywgNzgsIDcwLCAxMjgsIDc4LCAKKyAgICA2OSwgODgsIDIxMiwgNzgsIDY5LCA4OCwgMTI4LCA3OCwgNjksIDg3LCA4MywgODAsIDY1LCA4MCwgNjksIDgyLCAxMjgsIAorICAgIDc4LCA2OSwgODcsIDc2LCA3MywgNzgsIDY5LCAxMjgsIDc4LCA2OSwgODcsIDc2LCA3MywgNzgsIDE5NywgNzgsIDY5LCA4NywgCisgICAgMTI4LCA3OCwgNjksIDIxNSwgNzgsIDY5LCA4NSwgODQsIDgyLCA2NSwgNzYsIDEyOCwgNzgsIDY5LCA4NSwgODQsIDgyLCAKKyAgICA2NSwgMjA0LCA3OCwgNjksIDg1LCA4NCwgNjksIDgyLCAxMjgsIDc4LCA2OSwgODQsIDg3LCA3OSwgODIsIDc1LCA2OSwgCisgICAgMTk2LCA3OCwgNjksIDg0LCAxMjgsIDc4LCA2OSwgMjEyLCA3OCwgNjksIDgzLCA4NCwgNjksIDE5NiwgNzgsIDY5LCA4MiwgCisgICAgMTk2LCA3OCwgNjksIDgxLCA4NSwgNjgsIDY1LCA2NSwgMTI4LCA3OCwgNjksIDgwLCA4NCwgODUsIDc4LCA2OSwgMTI4LCAKKyAgICA3OCwgNjksIDgwLCAxMjgsIDc4LCA2OSwgNzksIDEyOCwgNzgsIDY5LCAyMDcsIDc4LCA2OSwgNzgsIDc5LCA2OSwgMTI4LCAKKyAgICA3OCwgNjksIDc4LCA2NSwgNzgsIDc5LCAxMjgsIDc4LCA2OSwgNzgsIDEyOCwgNzgsIDY5LCA3NiwgMTI4LCA3OCwgNjksIAorICAgIDczLCA4NCwgNzIsIDY5LCAyMTAsIDc4LCA2OSwgNzEsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDc4LCA2OSwgNzEsIDY1LCA4NCwgCisgICAgNjksIDE5NiwgNzgsIDY5LCA2NywgNzUsIDg0LCA3MywgNjksIDEyOCwgNzgsIDY5LCA2NywgNzUsIDEyOCwgNzgsIDY5LCAKKyAgICA2NiwgNjksIDc4LCA4MywgODQsIDczLCA3NywgNzcsIDY5LCAxMjgsIDc4LCA2OCwgODUsIDg4LCAxMjgsIDc4LCA2OCwgODUsIAorICAgIDg0LCAxMjgsIDc4LCA2OCwgODUsIDgyLCA4OCwgMTI4LCA3OCwgNjgsIDg1LCA4MiwgMTI4LCA3OCwgNjgsIDg1LCA4MCwgCisgICAgMTI4LCA3OCwgNjgsIDg1LCA3OCwgMTI4LCA3OCwgNjgsIDIxMywgNzgsIDY4LCA3OSwgODgsIDEyOCwgNzgsIDY4LCA3OSwgCisgICAgODQsIDEyOCwgNzgsIDY4LCA3OSwgODAsIDEyOCwgNzgsIDY4LCA3OSwgNzksIDEyOCwgNzgsIDY4LCA3OSwgNzgsIDEyOCwgCisgICAgNzgsIDY4LCA3OSwgNzcsIDY2LCA4NSwgMTI4LCA3OCwgNjgsIDc5LCA3NiwgMTk3LCA3OCwgNjgsIDczLCA4OCwgMTI4LCAKKyAgICA3OCwgNjgsIDczLCA4NCwgMTI4LCA3OCwgNjgsIDczLCA4MSwgMTI4LCA3OCwgNjgsIDczLCA4MCwgMTI4LCA3OCwgNjgsIAorICAgIDczLCA2OSwgODgsIDEyOCwgNzgsIDY4LCA3MywgNjksIDEyOCwgNzgsIDY4LCA3MywgNjgsIDY1LCAxMjgsIDc4LCA2OCwgCisgICAgNzMsIDY1LCA4MSwgMTI4LCA3OCwgNjgsIDY5LCA4OCwgMTI4LCA3OCwgNjgsIDY5LCA4NSwgODgsIDEyOCwgNzgsIDY4LCAKKyAgICA2OSwgODUsIDg0LCAxMjgsIDc4LCA2OCwgNjksIDg1LCA2NSwgNjksIDgyLCA2OSwgNjksIDEyOCwgNzgsIDY4LCA2OSwgODAsIAorICAgIDEyOCwgNzgsIDY4LCA2OSwgNjksIDEyOCwgNzgsIDY4LCA2OSwgMTI4LCA3OCwgNjgsIDY1LCA4OCwgMTI4LCA3OCwgNjgsIAorICAgIDY1LCA4NCwgMTI4LCA3OCwgNjgsIDY1LCA4MCwgMTI4LCA3OCwgNjgsIDY1LCA3NywgMTI4LCA3OCwgNjgsIDY1LCA2NSwgCisgICAgNzgsIDcxLCA3MSwgNjksIDg1LCA2NSwgNjksIDg0LCAxMjgsIDc4LCA2OCwgNjUsIDY1LCAxMjgsIDc4LCA2OCwgNjUsIAorICAgIDE5MywgNzgsIDY3LCA3MiwgNjUsIDg1LCAxMjgsIDc4LCA2NiwgODksIDg4LCAxMjgsIDc4LCA2NiwgODksIDg0LCAxMjgsIAorICAgIDc4LCA2NiwgODksIDgyLCA4OCwgMTI4LCA3OCwgNjYsIDg5LCA4MiwgMTI4LCA3OCwgNjYsIDg5LCA4MCwgMTI4LCA3OCwgCisgICAgNjYsIDg5LCAxMjgsIDc4LCA2NiwgODUsIDg4LCAxMjgsIDc4LCA2NiwgODUsIDg0LCAxMjgsIDc4LCA2NiwgODUsIDgyLCAKKyAgICA4OCwgMTI4LCA3OCwgNjYsIDg1LCA4MiwgMTI4LCA3OCwgNjYsIDg1LCA4MCwgMTI4LCA3OCwgNjYsIDg1LCAxMjgsIDc4LCAKKyAgICA2NiwgNzksIDg4LCAxMjgsIDc4LCA2NiwgNzksIDg0LCAxMjgsIDc4LCA2NiwgNzksIDgwLCAxMjgsIDc4LCA2NiwgNzksIAorICAgIDEyOCwgNzgsIDY2LCA3MywgODgsIDEyOCwgNzgsIDY2LCA3MywgODQsIDEyOCwgNzgsIDY2LCA3MywgODAsIDEyOCwgNzgsIAorICAgIDY2LCA3MywgNjksIDg4LCAxMjgsIDc4LCA2NiwgNzMsIDY5LCA4MCwgMTI4LCA3OCwgNjYsIDczLCA2OSwgMTI4LCA3OCwgCisgICAgNjYsIDczLCAxMjgsIDc4LCA2NiwgNzIsIDEyOCwgNzgsIDY2LCA2NSwgODgsIDEyOCwgNzgsIDY2LCA2NSwgODQsIDEyOCwgCisgICAgNzgsIDY2LCA2NSwgODAsIDEyOCwgNzgsIDY2LCA2NSwgMTI4LCA3OCwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCAKKyAgICA3OCwgNjUsIDg5LCAxMjgsIDc4LCA2NSwgODgsIDczLCA2NSwgMjA2LCA3OCwgNjUsIDg4LCAxMjgsIDc4LCA2NSwgODUsIAorICAgIDg0LCA3MiwgODMsIDEyOCwgNzgsIDY1LCA4NSwgODMsIDY5LCA2NSwgODQsIDY5LCAxOTYsIDc4LCA2NSwgODUsIDY4LCA3MywgCisgICAgMjE4LCA3OCwgNjUsIDg0LCA4NSwgODIsIDY1LCAyMDQsIDc4LCA2NSwgODQsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDc4LCAKKyAgICA2NSwgODMsIDc1LCA2NSwgODAsIDIwMSwgNzgsIDY1LCA4MywgNzIsIDczLCAxMjgsIDc4LCA2NSwgODMsIDY1LCA3NiwgNzMsIAorICAgIDkwLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNzgsIDY1LCA4MywgNjUsIDc2LCA3MywgOTAsIDY1LCA4NCwgNzMsIDc5LCAKKyAgICAyMDYsIDc4LCA2NSwgODMsIDY1LCAyMDQsIDc4LCA2NSwgODIsIDgyLCA3OSwgMjE1LCA3OCwgNjUsIDgyLCAxMjgsIDc4LCAKKyAgICA2NSwgODEsIDEyOCwgNzgsIDY1LCA3OSwgMjExLCA3OCwgNjUsIDc4LCA4MywgNjUsIDc4LCA2NSwgODEsIDEyOCwgNzgsIAorICAgIDY1LCA3OCwgNzEsIDc3LCA3OSwgNzgsIDg0LCA3MiwgNzksIDEyOCwgNzgsIDY1LCA3OCwgNjgsIDEyOCwgNzgsIDY1LCA3OCwgCisgICAgNjUsIDEyOCwgNzgsIDY1LCA3NywgNjksIDEyOCwgNzgsIDY1LCA3NywgMTk3LCA3OCwgNjUsIDc3LCA1MCwgMTI4LCA3OCwgCisgICAgNjUsIDc3LCAxMjgsIDc4LCA2NSwgNzUsIDEyOCwgNzgsIDY1LCA3MywgODIsIDE5MywgNzgsIDY1LCA3MywgMjA0LCA3OCwgCisgICAgNjUsIDcxLCA4MiwgMjAxLCA3OCwgNjUsIDcxLCA2NSwgODIsIDEyOCwgNzgsIDY1LCA3MSwgNjUsIDEyOCwgNzgsIDY1LCAKKyAgICA3MSwgMTkzLCA3OCwgNjUsIDcxLCAxMjgsIDc4LCA2NSwgMTk5LCA3OCwgNjUsIDY5LCAxMjgsIDc4LCA2NSwgNjYsIDc2LCAKKyAgICA2NSwgMTI4LCA3OCwgNjUsIDY2LCA2NSwgODQsIDY1LCA2OSwgNjUsIDIwNiwgNzgsIDY1LCA2NSwgODMsIDczLCA3NSwgODksIAorICAgIDY1LCA4OSwgNjUsIDEyOCwgNzgsIDY1LCA2NSwgNzUsIDgzLCA3MywgNzUsIDg5LCA2NSwgODksIDY1LCAxMjgsIDc4LCA2NSwgCisgICAgNjUsIDczLCAxMjgsIDc4LCA2NSwgMTkzLCA3OCwgNjUsIDUyLCAxMjgsIDc4LCA2NSwgNTAsIDEyOCwgNzgsIDY1LCA0NSwgCisgICAgNTAsIDEyOCwgNzgsIDQ4LCA1MiwgNTAsIDEyOCwgNzgsIDQ4LCA1MiwgNDksIDEyOCwgNzgsIDQ4LCA1MiwgNDgsIDEyOCwgCisgICAgNzgsIDQ4LCA1MSwgNTcsIDEyOCwgNzgsIDQ4LCA1MSwgNTYsIDEyOCwgNzgsIDQ4LCA1MSwgNTUsIDY1LCAxMjgsIDc4LCAKKyAgICA0OCwgNTEsIDU1LCAxMjgsIDc4LCA0OCwgNTEsIDU0LCAxMjgsIDc4LCA0OCwgNTEsIDUzLCA2NSwgMTI4LCA3OCwgNDgsIAorICAgIDUxLCA1MywgMTI4LCA3OCwgNDgsIDUxLCA1MiwgNjUsIDEyOCwgNzgsIDQ4LCA1MSwgNTIsIDEyOCwgNzgsIDQ4LCA1MSwgCisgICAgNTEsIDY1LCAxMjgsIDc4LCA0OCwgNTEsIDUxLCAxMjgsIDc4LCA0OCwgNTEsIDUwLCAxMjgsIDc4LCA0OCwgNTEsIDQ5LCAKKyAgICAxMjgsIDc4LCA0OCwgNTEsIDQ4LCAxMjgsIDc4LCA0OCwgNTAsIDU3LCAxMjgsIDc4LCA0OCwgNTAsIDU2LCAxMjgsIDc4LCAKKyAgICA0OCwgNTAsIDU1LCAxMjgsIDc4LCA0OCwgNTAsIDU0LCAxMjgsIDc4LCA0OCwgNTAsIDUzLCA2NSwgMTI4LCA3OCwgNDgsIAorICAgIDUwLCA1MywgMTI4LCA3OCwgNDgsIDUwLCA1MiwgMTI4LCA3OCwgNDgsIDUwLCA1MSwgMTI4LCA3OCwgNDgsIDUwLCA1MCwgCisgICAgMTI4LCA3OCwgNDgsIDUwLCA0OSwgMTI4LCA3OCwgNDgsIDUwLCA0OCwgMTI4LCA3OCwgNDgsIDQ5LCA1NywgMTI4LCA3OCwgCisgICAgNDgsIDQ5LCA1NiwgNjYsIDEyOCwgNzgsIDQ4LCA0OSwgNTYsIDY1LCAxMjgsIDc4LCA0OCwgNDksIDU2LCAxMjgsIDc4LCAKKyAgICA0OCwgNDksIDU1LCAxMjgsIDc4LCA0OCwgNDksIDU0LCAxMjgsIDc4LCA0OCwgNDksIDUzLCAxMjgsIDc4LCA0OCwgNDksIAorICAgIDUyLCAxMjgsIDc4LCA0OCwgNDksIDUxLCAxMjgsIDc4LCA0OCwgNDksIDUwLCAxMjgsIDc4LCA0OCwgNDksIDQ5LCAxMjgsIAorICAgIDc4LCA0OCwgNDksIDQ4LCAxMjgsIDc4LCA0OCwgNDgsIDU3LCAxMjgsIDc4LCA0OCwgNDgsIDU2LCAxMjgsIDc4LCA0OCwgCisgICAgNDgsIDU1LCAxMjgsIDc4LCA0OCwgNDgsIDU0LCAxMjgsIDc4LCA0OCwgNDgsIDUzLCAxMjgsIDc4LCA0OCwgNDgsIDUyLCAKKyAgICAxMjgsIDc4LCA0OCwgNDgsIDUxLCAxMjgsIDc4LCA0OCwgNDgsIDUwLCAxMjgsIDc4LCA0OCwgNDgsIDQ5LCAxMjgsIDc4LCAKKyAgICA0NSwgNjcsIDgyLCA2OSwgMTk3LCA3OCwgNDUsIDY1LCA4MiwgMjE3LCA3NywgODksIDg4LCAxMjgsIDc3LCA4OSwgODQsIAorICAgIDEyOCwgNzcsIDg5LCA4MywgNzYsIDczLCA4NCwgNjksIDEyOCwgNzcsIDg5LCA4MCwgMTI4LCA3NywgODksIDY1LCAxMjgsIAorICAgIDc3LCA4OSwgMTkzLCA3NywgODksIDEyOCwgNzcsIDIxNywgNzcsIDg3LCA3OSwgNzksIDEyOCwgNzcsIDg3LCA3OSwgMTI4LCAKKyAgICA3NywgODcsIDczLCA3MywgMTI4LCA3NywgODcsIDczLCAxMjgsIDc3LCA4NywgNjksIDY5LCAxMjgsIDc3LCA4NywgNjksIAorICAgIDEyOCwgNzcsIDg3LCA2NSwgNjUsIDEyOCwgNzcsIDg3LCA2NSwgMTI4LCA3NywgODcsIDEyOCwgNzcsIDIxNSwgNzcsIDg2LCAKKyAgICA4MywgMTI4LCA3NywgODYsIDc5LCA4MCwgMTI4LCA3NywgODYsIDczLCAxMjgsIDc3LCA4NiwgNjksIDg1LCA2NSwgNjksIAorICAgIDc4LCA3MSwgNjUsIDc3LCAxMjgsIDc3LCA4NiwgMTI4LCA3NywgMjE0LCA3NywgODUsIDg4LCAxMjgsIDc3LCA4NSwgODUsIAorICAgIDgzLCA3MywgNzUsIDY1LCA4NCwgNzksIDY1LCA3OCwgMTI4LCA3NywgODUsIDg1LCA4MiwgNjgsIDcyLCA2NSwgNzQsIDE5MywgCisgICAgNzcsIDg1LCA4NSwgMTI4LCA3NywgODUsIDg0LCAxMjgsIDc3LCA4NSwgODMsIDczLCA2NywgMTI4LCA3NywgODUsIDgzLCAKKyAgICA3MywgMTk1LCA3NywgODUsIDgzLCA3MiwgODIsIDc5LCA3OSwgNzcsIDEyOCwgNzcsIDg1LCA4MywgNzIsIDUxLCAxMjgsIAorICAgIDc3LCA4NSwgODMsIDcyLCAxNzksIDc3LCA4NSwgODMsIDcyLCAxMjgsIDc3LCA4NSwgODMsIDIwMCwgNzcsIDg1LCA4MywgCisgICAgMTI4LCA3NywgODUsIDgyLCA4OCwgMTI4LCA3NywgODUsIDgyLCA3MSwgODUsIDUwLCAxMjgsIDc3LCA4NSwgODIsIDY5LCAKKyAgICAxMjgsIDc3LCA4NSwgODIsIDY4LCA2NSwgMTI4LCA3NywgODUsIDgyLCA2OCwgMTkzLCA3NywgODUsIDgyLCAxMjgsIDc3LCAKKyAgICA4NSwgODEsIDY4LCA2NSwgNzcsIDEyOCwgNzcsIDg1LCA4MCwgMTI4LCA3NywgODUsIDc5LCA4OCwgMTI4LCA3NywgODUsIAorICAgIDc5LCA4NCwgMTI4LCA3NywgODUsIDc5LCA4MCwgMTI4LCA3NywgODUsIDc5LCA3NywgNjUsIDY5LCAxMjgsIDc3LCA4NSwgCisgICAgNzksIDEyOCwgNzcsIDg1LCA3OCwgODMsIDg1LCA2NiwgMTI4LCA3NywgODUsIDc4LCA2NSwgNzIsIDEyOCwgNzcsIDg1LCAKKyAgICA3OCwgMTI4LCA3NywgODUsIDc2LCA4NCwgNzMsIDgzLCA2OSwgODQsIDEyOCwgNzcsIDg1LCA3NiwgODQsIDczLCA4MywgNjksIAorICAgIDIxMiwgNzcsIDg1LCA3NiwgODQsIDczLCA4MCwgNzYsIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDc3LCA4NSwgCisgICAgNzYsIDg0LCA3MywgODAsIDc2LCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDc3LCA4NSwgNzYsIDg0LCA3MywgODAsIAorICAgIDc2LCA2OSwgMTI4LCA3NywgODUsIDc2LCA4NCwgNzMsIDgwLCA3NiwgMTk3LCA3NywgODUsIDc2LCA4NCwgNzMsIDc5LCA2NywgCisgICAgODUsIDc2LCA2NSwgMjEwLCA3NywgODUsIDc2LCA4NCwgNzMsIDc3LCA2NSwgODAsIDEyOCwgNzcsIDg1LCA3NiwgODQsIAorICAgIDIwMSwgNzcsIDg1LCA3NiwgODQsIDY1LCA3OCwgMjAxLCA3NywgODUsIDc1LCA4MCwgNzIsIDgyLCA2OSwgNzgsIDcxLCAKKyAgICAxMjgsIDc3LCA4NSwgNzMsIDc4LCAxMjgsIDc3LCA4NSwgNzEsIDgzLCAxMjgsIDc3LCA4NSwgNzEsIDEyOCwgNzcsIDg1LCAKKyAgICAxOTksIDc3LCA4NSwgNjksIDc4LCAxMjgsIDc3LCA4NSwgNjksIDEyOCwgNzcsIDg1LCA2NywgNzIsIDEyOCwgNzcsIDg1LCAKKyAgICA2NywgMjAwLCA3NywgODUsIDY3LCA2NSwgNjUsIDY4LCAxMjgsIDc3LCA4NSwgNjUsIDgzLCAxMjgsIDc3LCA4NSwgNjUsIAorICAgIDc4LCAxMjgsIDc3LCA4NSwgNjUsIDY5LCAxMjgsIDc3LCA4NSwgNDUsIDcxLCA2NSwgNjUsIDcyLCA3NiwgNjUsIDE5MywgCisgICAgNzcsIDIxMywgNzcsIDgzLCAxMjgsIDc3LCA4MiwgMjA3LCA3NywgODAsIDY1LCAxMjgsIDc3LCA3OSwgODksIDY1LCA3MywgCisgICAgMTI4LCA3NywgNzksIDg4LCAxMjgsIDc3LCA3OSwgODYsIDczLCAxOTcsIDc3LCA3OSwgODYsIDY5LCAyMTEsIDc3LCA3OSwgCisgICAgODYsIDY5LCA3NywgNjksIDc4LCA4NCwgNDUsIDg3LCA2NSwgNzYsIDc2LCA4MCwgNzYsIDY1LCA3OCwgMTk3LCA3NywgNzksIAorICAgIDg2LCA2OSwgNzcsIDY5LCA3OCwgODQsIDQ1LCA3MiwgNzMsIDc4LCA3MSwgMTk3LCA3NywgNzksIDg2LCA2OSwgNzcsIDY5LCAKKyAgICA3OCwgODQsIDQ1LCA3MCwgNzYsIDc5LCA3OSwgODIsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDc3LCA3OSwgODYsIDY5LCA3NywgCisgICAgNjksIDc4LCA4NCwgNDUsIDY4LCA3MywgNjUsIDcxLCA3OSwgNzgsIDY1LCAyMDQsIDc3LCA3OSwgODYsIDY5LCA3NywgNjksIAorICAgIDc4LCA4NCwgMTI4LCA3NywgNzksIDg2LCA2OSwgNzcsIDY5LCA3OCwgMjEyLCA3NywgNzksIDg2LCA2OSwgMTk2LCA3NywgCisgICAgNzksIDg2LCA2OSwgMTI4LCA3NywgNzksIDg1LCA4NCwgNzIsIDEyOCwgNzcsIDc5LCA4NSwgODMsIDY5LCAxMjgsIDc3LCAKKyAgICA3OSwgODUsIDgzLCAxOTcsIDc3LCA3OSwgODUsIDc4LCA4NCwgNjUsIDczLCA3OCwgODMsIDEyOCwgNzcsIDc5LCA4NSwgNzgsIAorICAgIDg0LCA2NSwgNzMsIDc4LCAxMjgsIDc3LCA3OSwgODUsIDc4LCA4NCwgNjUsIDczLCAyMDYsIDc3LCA3OSwgODUsIDc4LCAKKyAgICAyMTIsIDc3LCA3OSwgODUsIDc4LCA2OCwgMTI4LCA3NywgNzksIDg1LCA3OCwgMTk2LCA3NywgNzksIDg0LCA3OSwgODIsIAorICAgIDg3LCA2NSwgODksIDEyOCwgNzcsIDc5LCA4NCwgNzksIDgyLCA2NywgODksIDY3LCA3NiwgNjksIDEyOCwgNzcsIDc5LCA4NCwgCisgICAgNzksIDIxMCwgNzcsIDc5LCA4NCwgNzIsIDY5LCA4MiwgMTI4LCA3NywgNzksIDg0LCA3MiwgNjksIDIxMCwgNzcsIDc5LCAKKyAgICA4NCwgMTI4LCA3NywgNzksIDgzLCA4MSwgODUsIDY5LCAxMjgsIDc3LCA3OSwgODIsIDg0LCA4NSwgODUsIDc3LCAxMjgsIAorICAgIDc3LCA3OSwgODIsIDg0LCA2NSwgODIsIDEyOCwgNzcsIDc5LCA4MiwgODAsIDcyLCA3OSwgNzYsIDc5LCA3MSwgNzMsIDY3LCAKKyAgICA2NSwgMjA0LCA3NywgNzksIDgyLCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA3NywgNzksIDgwLCAxMjgsIDc3LCA3OSwgNzksIAorICAgIDgzLCA2OSwgNDUsIDY3LCA4MiwgNjksIDE5NywgNzcsIDc5LCA3OSwgNzgsIDEyOCwgNzcsIDc5LCA3OSwgMjA2LCA3NywgCisgICAgNzksIDc5LCA3NywgODAsIDg1LCA4MSwgMTI4LCA3NywgNzksIDc5LCA3NywgNjksIDg1LCA4NCwgMTI4LCA3NywgNzksIDc5LCAKKyAgICA2OCwgMTI4LCA3NywgNzksIDc5LCAxOTYsIDc3LCA3OSwgNzksIDEyOCwgNzcsIDc5LCA3OCwgODQsIDczLCA2OSwgNjksIAorICAgIDc4LCAxMjgsIDc3LCA3OSwgNzgsIDg0LCA3MiwgMTI4LCA3NywgNzksIDc4LCA4NCwgMjAwLCA3NywgNzksIDc4LCA4MywgCisgICAgODQsIDY5LCA4MiwgMTI4LCA3NywgNzksIDc4LCA3OSwgODMsIDg0LCA2NSwgNjYsIDc2LCAxOTcsIDc3LCA3OSwgNzgsIDc5LCAKKyAgICA4MywgODAsIDY1LCA2NywgMTk3LCA3NywgNzksIDc4LCA3OSwgODIsIDY1LCA3MywgNzYsIDEyOCwgNzcsIDc5LCA3OCwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDc3LCA3OSwgNzgsIDc5LCA3MSwgODIsIDY1LCA3NywgNzcsIDc5LCAyMTEsIDc3LCA3OSwgCisgICAgNzgsIDc5LCA3MSwgODIsIDY1LCAyMDUsIDc3LCA3OSwgNzgsIDc5LCA3MCwgNzksIDc4LCA3MywgNjUsIDgzLCAxMjgsIDc3LCAKKyAgICA3OSwgNzgsIDc5LCA2NywgODUsIDc2LCA2NSwgMjEwLCA3NywgNzksIDc4LCA3NSwgNjksIDg5LCAxMjgsIDc3LCA3OSwgNzgsIAorICAgIDc1LCA2OSwgMjE3LCA3NywgNzksIDc4LCA3MywgMTI4LCA3NywgNzksIDc4LCA3MSwgNzUsIDY5LCA4NSwgNjUsIDY5LCA4MSwgCisgICAgMTI4LCA3NywgNzksIDc4LCA2OSwgODksIDQ1LCA3NywgNzksIDg1LCA4NCwgMjAwLCA3NywgNzksIDc4LCA2OSwgMjE3LCAKKyAgICA3NywgNzksIDc4LCAxMjgsIDc3LCA3OSwgMjA2LCA3NywgNzksIDc2LCAxMjgsIDc3LCA3OSwgNzIsIDY1LCA3NywgNzcsIAorICAgIDY1LCAxOTYsIDc3LCA3OSwgNjgsIDg1LCA3NiwgMjA3LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA1NywgCisgICAgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA1NiwgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCAKKyAgICA2OSwgODIsIDQ1LCA1NSwgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA1NCwgMTI4LCA3NywgNzksIAorICAgIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA1MywgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCAKKyAgICA1MiwgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA1MSwgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIAorICAgIDczLCA2OSwgODIsIDQ1LCA1MCwgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA0OSwgNTQsIDEyOCwgCisgICAgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNDksIDUzLCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIAorICAgIDY5LCA4MiwgNDUsIDQ5LCA1MiwgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA0OSwgNTEsIDEyOCwgCisgICAgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNDksIDUwLCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIAorICAgIDY5LCA4MiwgNDUsIDQ5LCA0OSwgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA0OSwgNDgsIDEyOCwgCisgICAgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCAxMjgsIDc3LCA3OSwgNjgsIDIwMSwgNzcsIDc5LCA2OCwgNjksIDgzLCAKKyAgICA4NCwgODksIDEyOCwgNzcsIDc5LCA2OCwgNjksIDgyLCAyMDYsIDc3LCA3OSwgNjgsIDY5LCA3NywgMTI4LCA3NywgNzksIAorICAgIDY4LCA2OSwgNzYsIDgzLCAxMjgsIDc3LCA3OSwgNjgsIDY5LCA3NiwgMTI4LCA3NywgNzksIDY4LCA2OSwgMTI4LCA3NywgCisgICAgNzksIDY2LCA3MywgNzYsIDE5NywgNzcsIDc5LCA2NSwgMTI4LCA3NywgMjA3LCA3NywgNzgsIDg5LCA2NSwgMjA1LCA3NywgCisgICAgNzgsIDY1LCA4MywgMTI4LCA3NywgNzcsIDgzLCA4MCwgMTI4LCA3NywgNzcsIDEyOCwgNzcsIDIwNSwgNzcsIDc2LCA2NSwgCisgICAgMTI4LCA3NywgNzYsIDEyOCwgNzcsIDc1LCA4MCwgNjUsIDgyLCA2NSwgMjA5LCA3NywgNzMsIDg4LCAxMjgsIDc3LCA3MywgCisgICAgODQsIDEyOCwgNzcsIDczLCA4MywgODIsIDY1LCAxMjgsIDc3LCA3MywgODIsIDczLCA2NiwgNjUsIDY1LCA4MiwgODUsIAorICAgIDEyOCwgNzcsIDczLCA4MiwgNzMsIDEyOCwgNzcsIDczLCA4MiwgNjksIDY4LCAxMjgsIDc3LCA3MywgODAsIDEyOCwgNzcsIAorICAgIDczLCA3OCwgODksIDEyOCwgNzcsIDczLCA3OCwgODUsIDgzLCA0NSwgNzksIDgyLCA0NSwgODAsIDc2LCA4NSwgMjExLCA3NywgCisgICAgNzMsIDc4LCA4NSwgODMsIDEyOCwgNzcsIDczLCA3OCwgNzMsIDgzLCA4NCwgNjksIDgyLCAxMjgsIDc3LCA3MywgNzgsIDczLCAKKyAgICA3NywgNzMsIDkwLCA2OSwgMTI4LCA3NywgNzMsIDc4LCA3MywgNzcsIDY1LCAxMjgsIDc3LCA3MywgNzgsIDczLCA2OCwgNzMsIAorICAgIDgzLCA2NywgMTI4LCA3NywgNzMsIDc4LCA3MywgNjYsIDg1LCA4MywgMTI4LCA3NywgNzMsIDc3LCA2OSwgMTI4LCA3NywgCisgICAgNzMsIDc3LCAxMjgsIDc3LCA3MywgNzYsIDc2LCA3MywgNzksIDc4LCA4MywgMTI4LCA3NywgNzMsIDc2LCA3NiwgNzMsIDc5LCAKKyAgICA3OCwgMjExLCA3NywgNzMsIDc2LCA3NiwgNjksIDg0LCAxMjgsIDc3LCA3MywgNzYsIDc2LCAxOTcsIDc3LCA3MywgNzYsIAorICAgIDIwNCwgNzcsIDczLCA3NiwgNzUsIDIxNywgNzcsIDczLCA3NiwgNzUsIDEyOCwgNzcsIDczLCA3NiwgNzMsIDg0LCA2NSwgCisgICAgODIsIDIxNywgNzcsIDczLCA3NiwgMTI4LCA3NywgNzMsIDc1LCA4NSwgODIsIDc5LCA3OCwgMTI4LCA3NywgNzMsIDc1LCAKKyAgICA4MiwgNzksIDIwNiwgNzcsIDczLCA3NSwgODIsIDczLCAxMjgsIDc3LCA3MywgNzMsIDc4LCAxMjgsIDc3LCA3MywgNzMsIAorICAgIDc3LCAxMjgsIDc3LCA3MywgNzMsIDEyOCwgNzcsIDczLCAxOTksIDc3LCA3MywgNjksIDg4LCAxMjgsIDc3LCA3MywgNjksIAorICAgIDg1LCA3NywgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODMsIDgzLCAKKyAgICA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MywgODMsIDY1LCA3OCwgCisgICAgNzEsIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIAorICAgIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgCisgICAgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIAorICAgIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDc4LCA3MywgNjksIDg1LCAKKyAgICA3OCwgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgNzcsIDczLCA2OSwgODUsIAorICAgIDc3LCA0NSwgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgNzcsIDczLCA2OSwgODUsIDIwNSwgNzcsIDczLCA2OSwgCisgICAgODAsIDEyOCwgNzcsIDczLCA2OSwgNjksIDEyOCwgNzcsIDczLCA2OSwgMTI4LCA3NywgNzMsIDY4LCA3NiwgNzMsIDc4LCAKKyAgICAxOTcsIDc3LCA3MywgNjgsIDY4LCA3NiwgNjksIDQ1LCA4NywgNjksIDc2LCA4MywgMjAwLCA3NywgNzMsIDY4LCA2OCwgNzYsIAorICAgIDY5LCAxMjgsIDc3LCA3MywgNjgsIDQ1LCA3NiwgNjksIDg2LCA2OSwgMjA0LCA3NywgNzMsIDE5NiwgNzcsIDczLCA2NywgCisgICAgODIsIDc5LCA4MywgNjcsIDc5LCA4MCwgNjksIDEyOCwgNzcsIDczLCA2NywgODIsIDc5LCA4MCwgNzIsIDc5LCA3OCwgNjksIAorICAgIDEyOCwgNzcsIDczLCA2NywgODIsIDIwNywgNzcsIDczLCA2NywgMjEwLCA3NywgNzIsIDkwLCAxMjgsIDc3LCA3MiwgNjUsIAorICAgIDEyOCwgNzcsIDcyLCAxMjgsIDc3LCA3MSwgODUsIDg4LCAxMjgsIDc3LCA3MSwgODUsIDg0LCAxMjgsIDc3LCA3MSwgODUsIAorICAgIDgyLCA4OCwgMTI4LCA3NywgNzEsIDg1LCA4MiwgMTI4LCA3NywgNzEsIDg1LCA4MCwgMTI4LCA3NywgNzEsIDg1LCA3OSwgCisgICAgODgsIDEyOCwgNzcsIDcxLCA4NSwgNzksIDgwLCAxMjgsIDc3LCA3MSwgODUsIDc5LCAxMjgsIDc3LCA3MSwgODUsIDEyOCwgCisgICAgNzcsIDcxLCA3OSwgODgsIDEyOCwgNzcsIDcxLCA3OSwgODQsIDEyOCwgNzcsIDcxLCA3OSwgODAsIDEyOCwgNzcsIDcxLCAKKyAgICA3OSwgMTI4LCA3NywgNzEsIDIwNywgNzcsIDcxLCA3MywgNjksIDg4LCAxMjgsIDc3LCA3MSwgNzMsIDY5LCAxMjgsIDc3LCAKKyAgICA3MSwgNjksIDg4LCAxMjgsIDc3LCA3MSwgNjksIDgwLCAxMjgsIDc3LCA3MSwgNjksIDEyOCwgNzcsIDcxLCA2NiwgODUsIAorICAgIDEyOCwgNzcsIDcxLCA2NiwgNzksIDc5LCAxMjgsIDc3LCA3MSwgNjYsIDc5LCA3MCwgODUsIDc3LCAxMjgsIDc3LCA3MSwgCisgICAgNjYsIDc5LCAxMjgsIDc3LCA3MSwgNjYsIDczLCAxMjgsIDc3LCA3MSwgNjYsIDY5LCA4NSwgNzgsIDEyOCwgNzcsIDcxLCAKKyAgICA2NiwgNjksIDc4LCAxMjgsIDc3LCA3MSwgNjYsIDY5LCA2OSwgMTI4LCA3NywgNzEsIDY2LCA2OSwgMTI4LCA3NywgNzEsIAorICAgIDY2LCA2NSwgODMsIDY1LCA4MSwgMTI4LCA3NywgNzEsIDY2LCA2NSwgODMsIDY1LCAxMjgsIDc3LCA3MSwgNjUsIDg4LCAKKyAgICAxMjgsIDc3LCA3MSwgNjUsIDg0LCAxMjgsIDc3LCA3MSwgNjUsIDgwLCAxMjgsIDc3LCA3MSwgNjUsIDEyOCwgNzcsIDcxLCAKKyAgICAxMjgsIDc3LCA3MCwgNzksIDc4LCAxMjgsIDc3LCA3MCwgNzksIDIwNiwgNzcsIDcwLCA3OSwgMTI4LCA3NywgNzAsIDczLCAKKyAgICA4OSwgNjUsIDgxLCAxMjgsIDc3LCA3MCwgNzMsIDY5LCA2OSwgMTI4LCA3NywgNzAsIDY5LCA4NSwgODQsIDEyOCwgNzcsIAorICAgIDcwLCA2OSwgODUsIDgxLCAxMjgsIDc3LCA3MCwgNjksIDg1LCA2NSwgNjksIDEyOCwgNzcsIDcwLCA2NSwgNjUsIDEyOCwgCisgICAgNzcsIDY5LCA5MCwgOTAsIDc5LCAxMjgsIDc3LCA2OSwgODgsIDEyOCwgNzcsIDY5LCA4NSwgMjEyLCA3NywgNjksIDg1LCAKKyAgICA4MSwgMTI4LCA3NywgNjksIDg1LCA3OCwgNzQsIDc5LCA3NywgNzgsIDY4LCA2OSwgODUsIDgxLCAxMjgsIDc3LCA2OSwgODUsIAorICAgIDc4LCAxMjgsIDc3LCA2OSwgODQsIDgyLCA3OSwgMTI4LCA3NywgNjksIDg0LCA4MiwgNzMsIDY3LCA2NSwgMjA0LCA3NywgCisgICAgNjksIDg0LCA4MiwgNzMsIDY1LCAxMjgsIDc3LCA2OSwgODQsIDgyLCA2OSwgODQsIDY5LCAyMTEsIDc3LCA2OSwgODQsIDc5LCAKKyAgICA2NiwgNjksIDc2LCA4NSwgODMsIDEyOCwgNzcsIDY5LCA4NCwgNjksIDc1LCAxMjgsIDc3LCA2OSwgODQsIDY5LCA3MSwgCisgICAgMTI4LCA3NywgNjksIDg0LCA2NSwgNzYsIDEyOCwgNzcsIDY5LCA4NCwgMTkzLCA3NywgNjksIDgzLCA4MywgNjksIDc4LCAKKyAgICA3MywgNjUsIDIwNiwgNzcsIDY5LCA4MywgODMsIDY1LCA3MSwgNjksIDEyOCwgNzcsIDY5LCA4MywgODMsIDY1LCA3MSwgCisgICAgMTk3LCA3NywgNjksIDgzLCA3OSwgMTI4LCA3NywgNjksIDgzLCA3MywgMTI4LCA3NywgNjksIDgzLCA3MiwgMTI4LCA3NywgCisgICAgNjksIDgyLCA3NSwgNzIsIDY1LCAxMjgsIDc3LCA2OSwgODIsIDc1LCA3MiwgMTkzLCA3NywgNjksIDgyLCA3MywgNjgsIDczLCAKKyAgICA2NSwgNzgsIDgzLCAxMjgsIDc3LCA2OSwgODIsIDczLCAxMjgsIDc3LCA2OSwgODIsIDcxLCA2OSwgMTI4LCA3NywgNjksIAorICAgIDgyLCA2NywgODUsIDgyLCA4OSwgMTI4LCA3NywgNjksIDgyLCA2NywgODUsIDgyLCAyMTcsIDc3LCA2OSwgNzgsIDc5LCA4MiwgCisgICAgNjUsIDIwMCwgNzcsIDY5LCA3OCwgNzksIDY5LCAxMjgsIDc3LCA2OSwgNzgsIDY4LCA4NSwgODQsIDEyOCwgNzcsIDY5LCAKKyAgICA3OCwgMTI4LCA3NywgNjksIDc3LCA3OSwgMTI4LCA3NywgNjksIDc3LCA2NiwgNjksIDgyLCA4MywgNzIsIDczLCA4MCwgCisgICAgMTI4LCA3NywgNjksIDc3LCA2NiwgNjksIDgyLCAxMjgsIDc3LCA2OSwgNzcsIDY2LCA2OSwgMjEwLCA3NywgNjksIDc3LCAKKyAgICA0NSwgODEsIDc5LCA4MCwgNzIsIDEyOCwgNzcsIDY5LCA3NywgMTI4LCA3NywgNjksIDIwNSwgNzcsIDY5LCA3NiwgNzksIAorICAgIDY4LCA3MywgMTk1LCA3NywgNjksIDc2LCA3MywgNzUsIDEyOCwgNzcsIDY5LCA3MywgOTAsIDczLCAxMjgsIDc3LCA2OSwgCisgICAgNzEsIDY1LCA4NCwgNzksIDc4LCAxMjgsIDc3LCA2OSwgNzEsIDY1LCA4MCwgNzIsIDc5LCA3OCwgNjksIDEyOCwgNzcsIDY5LCAKKyAgICA3MSwgNjUsIDc2LCA3MywgMTI4LCA3NywgNjksIDY5LCA4NCwgNzksIDgyLCA4NSwgMTI4LCA3NywgNjksIDY5LCA4NCwgNjksIAorICAgIDIwMSwgNzcsIDY5LCA2OSwgODQsIDEyOCwgNzcsIDY5LCA2OSwgNzcsIDg1LCAxMjgsIDc3LCA2OSwgNjksIDc3LCAxMjgsIAorICAgIDc3LCA2OSwgNjksIDIwMiwgNzcsIDY5LCA2OSwgNjksIDY5LCAxMjgsIDc3LCA2OSwgNjgsIDczLCA4NSwgNzcsIDEyOCwgCisgICAgNzcsIDY5LCA2OCwgNzMsIDg1LCAyMDUsIDc3LCA2OSwgNjgsIDczLCA2NywgNzMsIDc4LCA2OSwgMTI4LCA3NywgNjksIDY4LCAKKyAgICA3MywgNjcsIDY1LCAyMDQsIDc3LCA2OSwgNjgsIDY1LCA3NiwgMTI4LCA3NywgNjksIDY1LCA4NCwgMTI4LCA3NywgNjksIAorICAgIDY1LCAyMTIsIDc3LCA2OSwgNjUsIDgzLCA4NSwgODIsIDY5LCAxOTYsIDc3LCA2OSwgNjUsIDgzLCA4NSwgODIsIDY5LCAKKyAgICAxMjgsIDc3LCA2OSwgNjUsIDgzLCA4NSwgODIsIDE5NywgNzcsIDY4LCA4NSwgMjA2LCA3NywgMTk2LCA3NywgNjcsIDcyLCAKKyAgICAyMTMsIDc3LCA2NywgNzIsIDY1LCAyMDYsIDc3LCAxOTUsIDc3LCA2NiwgODUsIDg1LCAxMjgsIDc3LCA2NiwgODUsIDc5LCAKKyAgICA4MSwgMTI4LCA3NywgNjYsIDg1LCA3OSwgMTI4LCA3NywgNjYsIDg1LCA2OSwgMTI4LCA3NywgNjYsIDg1LCA2NSwgNjksIAorICAgIDc3LCAxMjgsIDc3LCA2NiwgODUsIDY1LCA2OSwgMTI4LCA3NywgNjYsIDc5LCA3OSwgMTI4LCA3NywgNjYsIDc5LCAxMjgsIAorICAgIDc3LCA2NiwgNzMsIDg0LCAxMjgsIDc3LCA2NiwgNzMsIDIxMiwgNzcsIDY2LCA3MywgODIsIDczLCA2OSwgNjksIDc4LCAKKyAgICAxMjgsIDc3LCA2NiwgNzMsIDEyOCwgNzcsIDY2LCA2OSwgODUsIDg4LCAxMjgsIDc3LCA2NiwgNjksIDg1LCA4MiwgNzMsIAorICAgIDEyOCwgNzcsIDY2LCA2OSwgODUsIDc3LCAxMjgsIDc3LCA2NiwgNjksIDgyLCA2NSwgNjksIDEyOCwgNzcsIDY2LCA2OSwgCisgICAgNzgsIDEyOCwgNzcsIDY2LCA2OSwgNjksIDc1LCA2OSwgNjksIDg0LCAxMjgsIDc3LCA2NiwgNjksIDY5LCAxMjgsIDc3LCAKKyAgICA2NiwgNjksIDEyOCwgNzcsIDY2LCA2NSwgODEsIDEyOCwgNzcsIDY2LCA2NSwgNzgsIDg5LCA3MywgMTI4LCA3NywgNjYsIAorICAgIDY1LCA2NSwgODIsIDY1LCA2OSwgMTI4LCA3NywgNjYsIDY1LCA2NSwgNzUsIDY5LCA4NCwgMTI4LCA3NywgNjYsIDY1LCA2NSwgCisgICAgMTI4LCA3NywgNjYsIDY1LCAxOTMsIDc3LCA2NiwgMTkzLCA3NywgNjYsIDUyLCAxMjgsIDc3LCA2NiwgNTEsIDEyOCwgNzcsIAorICAgIDY2LCA1MCwgMTI4LCA3NywgNjUsIDg5LCA2OSwgMjAzLCA3NywgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3NywgCisgICAgNjUsIDg5LCAxMjgsIDc3LCA2NSwgODgsIDczLCA3NywgNzMsIDkwLCA2OSwgMTI4LCA3NywgNjUsIDg4LCA3MywgNzcsIDY1LCAKKyAgICAxMjgsIDc3LCA2NSwgODgsIDEyOCwgNzcsIDY1LCA4NSwgMTI4LCA3NywgNjUsIDg0LCA4NCwgNzksIDY3LCA3NSwgMTI4LCAKKyAgICA3NywgNjUsIDg0LCA4MiwgNzMsIDg4LCAxMjgsIDc3LCA2NSwgODQsIDY5LCA4MiwgNzMsIDY1LCA3NiwgODMsIDEyOCwgNzcsIAorICAgIDY1LCA4NCwgMTI4LCA3NywgNjUsIDgzLCAyMTMsIDc3LCA2NSwgODMsIDgzLCA3MywgNzgsIDcxLCAxMjgsIDc3LCA2NSwgCisgICAgODMsIDgzLCA2NSwgNzEsIDY5LCAxMjgsIDc3LCA2NSwgODMsIDc5LCA4MiwgMTkzLCA3NywgNjUsIDgzLCA3NSwgMTI4LCAKKyAgICA3NywgNjUsIDgzLCA3MiwgNzAsIDY1LCA2NSwgODQsIDEyOCwgNzcsIDY1LCA4MywgNzIsIDUwLCAxMjgsIDc3LCA2NSwgODMsIAorICAgIDY3LCA4NSwgNzYsIDczLCA3OCwgMTk3LCA3NywgNjUsIDgyLCA4OSwgMTI4LCA3NywgNjUsIDgyLCA4NywgNjUsIDgyLCAKKyAgICAyMDEsIDc3LCA2NSwgODIsIDg1LCA3NSwgODUsIDEyOCwgNzcsIDY1LCA4MiwgODQsIDg5LCA4MiwgNzMsIDE5MywgNzcsIAorICAgIDY1LCA4MiwgODQsIDczLCA2NSwgMjA0LCA3NywgNjUsIDgyLCA4MiwgODksIDczLCA3OCwgMTk5LCA3NywgNjUsIDgyLCA4MiwgCisgICAgNzMsIDY1LCA3MSwgMTk3LCA3NywgNjUsIDgyLCA3NSwgMjExLCA3NywgNjUsIDgyLCA3NSwgNjksIDgyLCAxMjgsIDc3LCAKKyAgICA2NSwgODIsIDc1LCA0NSwgNTIsIDEyOCwgNzcsIDY1LCA4MiwgNzUsIDQ1LCA1MSwgMTI4LCA3NywgNjUsIDgyLCA3NSwgNDUsIAorICAgIDUwLCAxMjgsIDc3LCA2NSwgODIsIDc1LCA0NSwgNDksIDEyOCwgNzcsIDY1LCA4MiwgNjksIDEyOCwgNzcsIDY1LCA4MiwgCisgICAgNjcsIDcyLCA2OSwgMjA2LCA3NywgNjUsIDgyLCA2NywgNzIsIDEyOCwgNzcsIDY1LCA4MiwgNjcsIDY1LCA4NCwgNzksIDQ1LCAKKyAgICA4MywgODQsIDY1LCA2NywgNjcsIDY1LCA4NCwgNzksIDEyOCwgNzcsIDY1LCA4MiwgNjcsIDY1LCA4NCwgNzksIDEyOCwgNzcsIAorICAgIDY1LCA4MiwgNjcsIDY1LCA4MywgNzMsIDg0LCA2OSwgMTI4LCA3NywgNjUsIDgyLCA2NiwgODUsIDg0LCA2NSwgMTI4LCA3NywgCisgICAgNjUsIDgyLCA2NiwgODUsIDg0LCAxOTMsIDc3LCA2NSwgODIsIDEyOCwgNzcsIDY1LCA4MSwgNjUsIDcwLCAxMjgsIDc3LCAKKyAgICA2NSwgODEsIDEyOCwgNzcsIDY1LCA4MCwgNzYsIDE5NywgNzcsIDY1LCA4MCwgNzMsIDgxLCAxMjgsIDc3LCA2NSwgMjA4LCAKKyAgICA3NywgNjUsIDc5LCAxMjgsIDc3LCA2NSwgNzgsIDg0LCA2OSwgNzYsIDgwLCA3MywgNjksIDY3LCAxOTcsIDc3LCA2NSwgNzgsIAorICAgIDgzLCA4OSwgNzksIDc4LCAxMjgsIDc3LCA2NSwgNzgsIDgzLCA4NSwgNjUsIDY5LCAxMjgsIDc3LCA2NSwgNzgsIDc4LCA2NSwgCiAgICAgMjE4LCA3NywgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzcsIDY1LCA3OCwgNzMsIDY3LCA3MiwgNjUsIDY5LCA2NSwgMjA2LCAKICAgICA3NywgNjUsIDc4LCA3MSwgNjUsIDc2LCA2NSwgNzcsIDEyOCwgNzcsIDY1LCA3OCwgNjgsIDY1LCA3MywgNzYsIDczLCA3OCwgCiAgICAgMTk5LCA3NywgNjUsIDc4LCA2OCwgNjUsIDczLCAxOTUsIDc3LCA2NSwgNzgsIDY3LCA3MiwgMjEzLCA3NywgNjUsIDc4LCAKQEAgLTIzMjIsMTQyMCArMjM0NSwxNDI2IEBACiAgICAgNDgsIDQ4LCAxNzgsIDc3LCA0OCwgNDgsIDQ5LCA2NiwgMTI4LCA3NywgNDgsIDQ4LCA0OSwgNjUsIDEyOCwgNzcsIDQ4LCAKICAgICA0OCwgNDksIDEyOCwgNzcsIDQ4LCA0OCwgMTc3LCA3NiwgMjE4LCA3NiwgODksIDg5LCAxMjgsIDc2LCA4OSwgODgsIDEyOCwgCiAgICAgNzYsIDg5LCA4NCwgMTI4LCA3NiwgODksIDgyLCA4OCwgMTI4LCA3NiwgODksIDgyLCAxMjgsIDc2LCA4OSwgODAsIDEyOCwgCi0gICAgNzYsIDg5LCA3MywgODQsIDEyOCwgNzYsIDg5LCA2OCwgNzMsIDY1LCAyMDYsIDc2LCA4OSwgNjcsIDczLCA2NSwgMjA2LCAKLSAgICA3NiwgODgsIDEyOCwgNzYsIDg3LCA3OSwgNzksIDEyOCwgNzYsIDg3LCA3OSwgMTI4LCA3NiwgODcsIDczLCA3MywgMTI4LCAKLSAgICA3NiwgODcsIDczLCAxMjgsIDc2LCA4NywgNjksIDEyOCwgNzYsIDg3LCA2NSwgNjUsIDEyOCwgNzYsIDg3LCA2NSwgMTI4LCAKLSAgICA3NiwgODUsIDg4LCAxMjgsIDc2LCA4NSwgODUsIDEyOCwgNzYsIDg1LCA4NCwgMTI4LCA3NiwgODUsIDgyLCA4OCwgMTI4LCAKLSAgICA3NiwgODUsIDgwLCAxMjgsIDc2LCA4NSwgNzksIDg4LCAxMjgsIDc2LCA4NSwgNzksIDg0LCAxMjgsIDc2LCA4NSwgNzksIAotICAgIDgwLCAxMjgsIDc2LCA4NSwgNzksIDEyOCwgNzYsIDg1LCA3OCwgNzEsIDgzLCA3MywgMTI4LCA3NiwgODUsIDc4LCA2NSwgCi0gICAgODQsIDE5NywgNzYsIDg1LCAyMDUsIDc2LCA4NSwgNzYsIDEyOCwgNzYsIDg1LCA3MywgODMsIDEyOCwgNzYsIDg1LCA3MiwgCi0gICAgODUsIDgyLCAxMjgsIDc2LCA4NSwgNzIsIDEyOCwgNzYsIDg1LCAyMDAsIDc2LCA4NSwgNzEsIDcxLCA2NSwgNzEsIDY5LCAKLSAgICAxMjgsIDc2LCA4NSwgNzEsIDY1LCA3NiwgMTI4LCA3NiwgODUsIDcxLCA2NSwgMjA0LCA3NiwgODUsIDY5LCAxMjgsIDc2LCAKLSAgICA4NSwgMTk3LCA3NiwgODUsIDY2LCAxMjgsIDc2LCA4NSwgNjUsIDY5LCA4MCwgMTI4LCA3NiwgODUsIDUxLCAxMjgsIDc2LCAKLSAgICA4NSwgNTAsIDEyOCwgNzYsIDg1LCAxNzgsIDc2LCA4MiwgNzksIDEyOCwgNzYsIDgyLCA3NywgMTI4LCA3NiwgODIsIDczLCAKLSAgICAxMjgsIDc2LCA4MiwgNjksIDEyOCwgNzYsIDc5LCA5MCwgNjksIDc4LCA3MSwgNjksIDEyOCwgNzYsIDc5LCA5MCwgNjksIAotICAgIDc4LCA3MSwgMTk3LCA3NiwgNzksIDg4LCAxMjgsIDc2LCA3OSwgODcsIDY5LCA4MiwgNjksIDE5NiwgNzYsIDc5LCA4NywgCi0gICAgNjksIDIxMCwgNzYsIDc5LCA4NywgNDUsIDgyLCA2OSwgODYsIDY5LCA4MiwgODMsIDY5LCA2OCwgNDUsIDE4NSwgNzYsIDc5LCAKLSAgICA4NywgNDUsIDc3LCA3MywgMTk2LCA3NiwgNzksIDg3LCA0NSwgNzAsIDY1LCA3NiwgNzYsIDczLCA3OCwgMTk5LCA3NiwgNzksIAotICAgIDg3LCA0NSwgMTg1LCA3NiwgNzksIDg2LCAxOTcsIDc2LCA3OSwgODUsIDgyLCA2OSwgMTI4LCA3NiwgNzksIDg1LCA2OCwgCi0gICAgODMsIDgwLCA2OSwgNjUsIDc1LCA2OSwgODIsIDEyOCwgNzYsIDc5LCA4NSwgNjgsIDc2LCAyMTcsIDc2LCA3OSwgODQsIDg1LCAKLSAgICA4MywgMTI4LCA3NiwgNzksIDg0LCAxMjgsIDc2LCA3OSwgODIsIDgyLCA4OSwgMTI4LCA3NiwgNzksIDgyLCA4MiwgNjUsIAotICAgIDczLCA3OCwgNjksIDEyOCwgNzYsIDc5LCA4MSwgMTI4LCA3NiwgNzksIDgwLCAxMjgsIDc2LCA3OSwgNzksIDg0LCAxMjgsIAotICAgIDc2LCA3OSwgNzksIDgwLCA2OSwgMTk2LCA3NiwgNzksIDc5LCA4MCwgMTI4LCA3NiwgNzksIDc5LCAyMDgsIDc2LCA3OSwgCi0gICAgNzksIDc4LCAxMjgsIDc2LCA3OSwgNzksIDIwMywgNzYsIDc5LCA3OSwgMTI4LCA3NiwgNzksIDc4LCA4MywgODUsIDc3LCAKLSAgICAxMjgsIDc2LCA3OSwgNzgsIDcxLCA2NSwgMTI4LCA3NiwgNzksIDc4LCA3MSwgMTkzLCA3NiwgNzksIDc4LCA3MSwgNDUsIAotICAgIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCA4OSwgODIsIDEyOCwgNzYsIDc5LCA3OCwgNzEsIDQ1LCA2NiwgODIsIDY1LCAKLSAgICA3OCwgNjcsIDcyLCA0NSwgODMsIDc5LCAyMDQsIDc2LCA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgCi0gICAgNDUsIDc5LCA4MywgMjExLCA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCA3NywgNjUsIAotICAgIDY4LCAyMTAsIDc2LCA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNDUsIDcyLCA2NSwgNzEsIDY1LCAKLSAgICA3NiwgMjA0LCA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCA2NSwgMjEwLCA3NiwgNzksIAotICAgIDc3LCA3NywgNjUsIDY5LCAxMjgsIDc2LCA3OSwgNzcsIDEyOCwgNzYsIDc5LCAyMDUsIDc2LCA3OSwgNzYsIDc2LCA3MywgCi0gICAgODAsIDc5LCA4MCwgMTI4LCA3NiwgNzksIDc2LCA3NiwgMTI4LCA3NiwgNzksIDcxLCAyMTAsIDc2LCA3OSwgNzEsIDc5LCAKLSAgICA4NCwgODksIDgwLCAxOTcsIDc2LCA3OSwgNzEsIDc5LCA3MSwgODIsIDY1LCAyMDUsIDc2LCA3OSwgNzEsIDEyOCwgNzYsIAotICAgIDc5LCA2OCwgNjksIDgzLCA4NCwgNzksIDc4LCA2OSwgMTI4LCA3NiwgNzksIDY3LCA3OSwgNzcsIDc5LCA4NCwgNzMsIDg2LCAKLSAgICA2OSwgMTI4LCA3NiwgNzksIDY3LCA3NSwgNzMsIDc4LCA3MSwgNDUsIDgzLCA3MiwgNzMsIDcwLCAyMTIsIDc2LCA3OSwgNjcsIAotICAgIDIwMywgNzYsIDc5LCA2NywgNjUsIDg0LCA3MywgODYsIDY5LCAxMjgsIDc2LCA3OSwgNjcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgCi0gICAgNDUsIDg3LCA2NSwgNzYsIDc2LCA4MCwgNzYsIDY1LCA3OCwgMTk3LCA3NiwgNzksIDY3LCA2NSwgODQsIDczLCA3OSwgNzgsIAotICAgIDQ1LCA3MCwgNzYsIDc5LCA3OSwgODIsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDc2LCA3OSwgNjcsIDY1LCA4NCwgNzMsIDc5LCAKLSAgICAyMDYsIDc2LCA3OSwgNjUsIDEyOCwgNzYsIDc4LCAxMjgsIDc2LCA3NiwgODUsIDg1LCAxMjgsIDc2LCA3NiwgNzksIDc5LCAKLSAgICAxMjgsIDc2LCA3NiwgNzYsIDg1LCA4NSwgMTI4LCA3NiwgNzYsIDc2LCA4NSwgMTI4LCA3NiwgNzYsIDc2LCA3OSwgNzksIAotICAgIDEyOCwgNzYsIDc2LCA3NiwgNzksIDEyOCwgNzYsIDc2LCA3NiwgNzMsIDczLCAxMjgsIDc2LCA3NiwgNzYsIDczLCAxMjgsIAotICAgIDc2LCA3NiwgNzYsIDY5LCA2OSwgMTI4LCA3NiwgNzYsIDc2LCA2OSwgMTI4LCA3NiwgNzYsIDc2LCA2NSwgODUsIDEyOCwgCi0gICAgNzYsIDc2LCA3NiwgNjUsIDczLCAxMjgsIDc2LCA3NiwgNzYsIDY1LCA2NSwgMTI4LCA3NiwgNzYsIDc2LCA2NSwgMTI4LCAKLSAgICA3NiwgNzYsIDc2LCAxMjgsIDc2LCA3NCwgODUsIDY4LCA3MywgNzQsIDY5LCAxMjgsIDc2LCA3NCwgNjksIDEyOCwgNzYsIAotICAgIDc0LCAxMjgsIDc2LCA3MywgODgsIDEyOCwgNzYsIDczLCA4NywgNzgsIDEyOCwgNzYsIDczLCA4NiwgODIsIDE5NywgNzYsIAotICAgIDczLCA4NCwgODQsIDc2LCA2OSwgMTI4LCA3NiwgNzMsIDg0LCA4NCwgNzYsIDE5NywgNzYsIDczLCA4NCwgODQsIDY5LCAKLSAgICAyMTAsIDc2LCA3MywgODQsIDgyLCAxOTMsIDc2LCA3MywgODQsIDIwMCwgNzYsIDczLCA4MywgMjEzLCA3NiwgNzMsIDgzLCAKLSAgICAxMjgsIDc2LCA3MywgODIsIDE5MywgNzYsIDczLCA4MSwgODUsIDczLCAxOTYsIDc2LCA3MywgODEsIDEyOCwgNzYsIDczLCAKLSAgICA4MCwgODMsIDg0LCA3MywgNjcsIDc1LCAxMjgsIDc2LCA3MywgODAsIDIxMSwgNzYsIDczLCAyMDgsIDc2LCA3MywgNzgsIAotICAgIDc1LCA3MywgNzgsIDE5OSwgNzYsIDczLCA3OCwgNzUsIDY5LCAxOTYsIDc2LCA3MywgNzgsIDIwMywgNzYsIDczLCA3OCwgCi0gICAgNzEsIDgzLCA2NSwgMTI4LCA3NiwgNzMsIDc4LCA2OSwgODMsIDEyOCwgNzYsIDczLCA3OCwgNjksIDIxMSwgNzYsIDczLCAKLSAgICA3OCwgNjksIDQ1LCA1NywgMTI4LCA3NiwgNzMsIDc4LCA2OSwgNDUsIDU1LCAxMjgsIDc2LCA3MywgNzgsIDY5LCA0NSwgNTEsIAotICAgIDEyOCwgNzYsIDczLCA3OCwgNjksIDQ1LCA0OSwgMTI4LCA3NiwgNzMsIDc3LCA3NywgODUsIDUyLCAxMjgsIDc2LCA3MywgCi0gICAgNzcsIDc3LCA4NSwgNTAsIDEyOCwgNzYsIDczLCA3NywgNzcsIDg1LCAxMjgsIDc2LCA3MywgNzcsIDc3LCAyMTMsIDc2LCAKLSAgICA3MywgNzcsIDczLCA4NCwgNjksIDE5NiwgNzYsIDczLCA3NywgNzMsIDg0LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNzYsIAotICAgIDczLCA3NywgNzMsIDg0LCAxMjgsIDc2LCA3MywgNzcsIDY5LCAxMjgsIDc2LCA3MywgNzcsIDY2LCAyMTMsIDc2LCA3MywgCi0gICAgNzcsIDY2LCAyMTEsIDc2LCA3MywgNzcsIDE5NCwgNzYsIDczLCA3NiwgODksIDEyOCwgNzYsIDczLCA3NiwgNzMsIDg0LCAKLSAgICA3MiwgMTI4LCA3NiwgNzMsIDc2LCAxMjgsIDc2LCA3MywgNzEsIDcyLCA4NCwgNzgsIDczLCA3OCwgNzEsIDEyOCwgNzYsIAotICAgIDczLCA3MSwgNzIsIDg0LCA3OCwgNzMsIDc4LCAxOTksIDc2LCA3MywgNzEsIDcyLCA4NCwgNzIsIDc5LCA4NSwgODMsIDY5LCAKLSAgICAxMjgsIDc2LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA3NiwgNzMsIDcxLCA2NSwgODQsIDczLCA3OCwgMTk5LCA3NiwgNzMsIAotICAgIDcwLCA4NCwgNjksIDgyLCAxMjgsIDc2LCA3MywgNzAsIDY5LCAxMjgsIDc2LCA3MywgNjksIDg4LCAxMjgsIDc2LCA3MywgCi0gICAgNjksIDg0LCAxMjgsIDc2LCA3MywgNjksIDgwLCAxMjgsIDc2LCA3MywgNjksIDY5LCAxMjgsIDc2LCA3MywgNjksIDEyOCwgCi0gICAgNzYsIDczLCA2OCwgMTI4LCA3NiwgNzMsIDY3LCA3NSwgNzMsIDc4LCAxOTksIDc2LCA3MywgNjYsIDgyLCA2NSwgMTI4LCAKLSAgICA3NiwgNzMsIDY2LCA2OSwgODIsIDg0LCA4OSwgMTI4LCA3NiwgNzMsIDY1LCA2NiwgNzMsIDc2LCA3MywgODQsIDIxNywgNzYsIAotICAgIDcyLCA3MywgNzMsIDEyOCwgNzYsIDcyLCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA3NiwgNzIsIDY1LCAKLSAgICAxOTksIDc2LCA3MiwgNjUsIDY1LCAxMjgsIDc2LCA3MiwgMTI4LCA3NiwgNjksIDkwLCA3MiwgMTI4LCA3NiwgNjksIDg4LCAKLSAgICAxMjgsIDc2LCA2OSwgODYsIDczLCA4NCwgNjUsIDg0LCA3MywgNzgsIDcxLCAxMjgsIDc2LCA2OSwgODUsIDc3LCAxMjgsIAotICAgIDc2LCA2OSwgODUsIDY1LCA2OSwgODAsIDEyOCwgNzYsIDY5LCA4NSwgNjUsIDY5LCA3NywgMTI4LCA3NiwgNjksIDg1LCAKLSAgICAxMjgsIDc2LCA2OSwgMjEzLCA3NiwgNjksIDg0LCA4NCwgNjksIDgyLCA4MywgMTI4LCA3NiwgNjksIDg0LCA4NCwgNjksIAotICAgIDgyLCAxMjgsIDc2LCA2OSwgMjEyLCA3NiwgNjksIDgzLCA4MywgNjksIDIxMCwgNzYsIDY5LCA4MywgODMsIDQ1LCA4NCwgCi0gICAgNzIsIDY1LCA3OCwgMTI4LCA3NiwgNjksIDgzLCA4MywgNDUsIDg0LCA3MiwgNjUsIDIwNiwgNzYsIDY5LCA4MCwgNjcsIDcyLCAKLSAgICAxOTMsIDc2LCA2OSwgODAsIDEyOCwgNzYsIDY5LCA3OSwgODAsIDY1LCA4MiwgNjgsIDEyOCwgNzYsIDY5LCA3OSwgMTI4LCAKLSAgICA3NiwgNjksIDc4LCA4NCwgNzMsIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDc2LCA2OSwgNzgsIDczLCA4MywgMTI4LCA3NiwgNjksIAotICAgIDc4LCA3MywgMjExLCA3NiwgNjksIDc4LCA3MSwgODQsIDcyLCA2OSwgNzgsIDY5LCA4MiwgMTI4LCA3NiwgNjksIDc4LCA3MSwgCi0gICAgODQsIDcyLCA0NSwgNTUsIDEyOCwgNzYsIDY5LCA3OCwgNzEsIDg0LCA3MiwgNDUsIDU0LCAxMjgsIDc2LCA2OSwgNzgsIDcxLCAKLSAgICA4NCwgNzIsIDQ1LCA1MywgMTI4LCA3NiwgNjksIDc4LCA3MSwgODQsIDcyLCA0NSwgNTIsIDEyOCwgNzYsIDY5LCA3OCwgNzEsIAotICAgIDg0LCA3MiwgNDUsIDUxLCAxMjgsIDc2LCA2OSwgNzgsIDcxLCA4NCwgNzIsIDQ1LCA1MCwgMTI4LCA3NiwgNjksIDc4LCA3MSwgCi0gICAgODQsIDcyLCA0NSwgNDksIDEyOCwgNzYsIDY5LCA3OCwgNzEsIDg0LCAyMDAsIDc2LCA2OSwgNzgsIDcxLCA2NSwgMTI4LCAKLSAgICA3NiwgNjksIDc4LCA3MSwgMTkzLCA3NiwgNjksIDc3LCA3OSwgNzgsIDEyOCwgNzYsIDY5LCA3NywgNzksIDczLCAxMjgsIAotICAgIDc2LCA2OSwgNzYsIDY5LCA4NCwgMTI4LCA3NiwgNjksIDc2LCA2OSwgMjEyLCA3NiwgNjksIDIwMywgNzYsIDY5LCA3MywgCi0gICAgNzcsIDc3LCA2NSwgMTI4LCA3NiwgNjksIDczLCA3NywgNzcsIDE5MywgNzYsIDY5LCA3MywgMTI4LCA3NiwgNjksIDcxLCAKLSAgICA4MywgMTI4LCA3NiwgNjksIDcxLCA3MywgNzksIDc4LCAxMjgsIDc2LCA2OSwgNzEsIDY5LCA4NCwgNzksIDIxMSwgNzYsIAotICAgIDY5LCA3MSwgMTI4LCA3NiwgNjksIDE5OSwgNzYsIDY5LCA3MCwgODQsIDg3LCA2NSwgODIsIDY4LCA4MywgMTI4LCA3NiwgCi0gICAgNjksIDcwLCA4NCwgNDUsIDg0LCA3OSwgNDUsIDgyLCA3MywgNzEsIDcyLCAyMTIsIDc2LCA2OSwgNzAsIDg0LCA0NSwgODMsIAotICAgIDg0LCA2OSwgMjA1LCA3NiwgNjksIDcwLCA4NCwgNDUsIDgzLCA3MywgNjgsIDE5NywgNzYsIDY5LCA3MCwgODQsIDQ1LCA4MywgCi0gICAgNzIsIDY1LCA2OCwgNjksIDE5NiwgNzYsIDY5LCA3MCwgODQsIDQ1LCA4MCwgNzksIDczLCA3OCwgODQsIDczLCA3OCwgMTk5LCAKLSAgICA3NiwgNjksIDcwLCA4NCwgNDUsIDc2LCA3MywgNzEsIDcyLCA4NCwgNjksIDE5NiwgNzYsIDY5LCA3MCwgODQsIDQ1LCA3MiwgCi0gICAgNjUsIDc4LCA2OCwgNjksIDE5NiwgNzYsIDY5LCA3MCwgODQsIDQ1LCA3MiwgNjUsIDc4LCAxOTYsIDc2LCA2OSwgNzAsIDg0LCAKLSAgICA0NSwgNzAsIDY1LCA2NywgNzMsIDc4LCAxOTksIDc2LCA2OSwgNzAsIDg0LCAxMjgsIDc2LCA2OSwgNjksIDgyLCA2NSwgNjksIAotICAgIDg3LCA2NSwgMTI4LCA3NiwgNjksIDY5LCA3NSwgMTI4LCA3NiwgNjksIDY5LCA2OSwgNjksIDEyOCwgNzYsIDY5LCA2OCwgCi0gICAgNzEsIDY5LCA4MiwgMTI4LCA3NiwgNjksIDY1LCA4NCwgNzIsIDY5LCA4MiwgMTI4LCA3NiwgNjksIDY1LCA3MCwgMTI4LCAKLSAgICA3NiwgNjksIDY1LCAxOTgsIDc2LCA2OSwgNjUsIDY4LCA3MywgNzgsIDE5OSwgNzYsIDY5LCA2NSwgNjgsIDY5LCA4MiwgCi0gICAgMTI4LCA3NiwgNjksIDY1LCAxOTYsIDc2LCA2OCwgNjUsIDc4LCAxMjgsIDc2LCA2OCwgNTAsIDEyOCwgNzYsIDY3LCAyMDEsIAotICAgIDc2LCA2NywgMTk3LCA3NiwgNjUsIDkwLCAyMTcsIDc2LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc2LCA2NSwgCi0gICAgODgsIDEyOCwgNzYsIDY1LCA4NywgMTI4LCA3NiwgNjUsIDIxNSwgNzYsIDY1LCA4NSwgNzYsIDY1LCAxMjgsIDc2LCA2NSwgCi0gICAgODUsIDc1LCA2NSwgMjE4LCA3NiwgNjUsIDg1LCA3NCwgMTI4LCA3NiwgNjUsIDg0LCA3MywgNzgsIDY1LCA4NCwgMTk3LCAKLSAgICA3NiwgNjUsIDg0LCA3MywgNzUsIDEyOCwgNzYsIDY1LCA4NCwgNjksIDgyLCA2NSwgMjA0LCA3NiwgNjUsIDg0LCAxOTcsIAotICAgIDc2LCA2NSwgODMsIDIxMiwgNzYsIDY1LCA4MiwgODksIDc4LCA3MSwgNjksIDY1LCAyMDQsIDc2LCA2NSwgODIsIDIwMSwgCi0gICAgNzYsIDY1LCA4MiwgNzEsIDY5LCA4MywgODQsIDEyOCwgNzYsIDY1LCA4MiwgNzEsIDY5LCAyMTAsIDc2LCA2NSwgODIsIDcxLCAKLSAgICA2OSwgMTI4LCA3NiwgNjUsIDgyLCA3MSwgMTk3LCA3NiwgNjUsIDgxLCAxMjgsIDc2LCA2NSwgODAsIDY1LCA4MSwgMTI4LCAKLSAgICA3NiwgNjUsIDIwNywgNzYsIDY1LCA3OCwgODQsIDY5LCA4MiwgNzgsIDEyOCwgNzYsIDY1LCA3OCwgNzEsIDg1LCA2NSwgNzEsIAotICAgIDE5NywgNzYsIDY1LCA3OCwgNjksIDgzLCAxMjgsIDc2LCA2NSwgNzgsIDEyOCwgNzYsIDY1LCA3NywgODAsIDEyOCwgNzYsIAotICAgIDY1LCA3NywgNjksIDY4LCA3MiwgMTI4LCA3NiwgNjUsIDc3LCA2OSwgNjgsIDEyOCwgNzYsIDY1LCA3NywgNjksIDE5NiwgCi0gICAgNzYsIDY1LCA3NywgNjksIDEyOCwgNzYsIDY1LCA3NywgMTk3LCA3NiwgNjUsIDc3LCA2OCwgNjUsIDEyOCwgNzYsIDY1LCAKLSAgICA3NywgNjgsIDEyOCwgNzYsIDY1LCA3NywgNjYsIDY4LCAxOTMsIDc2LCA2NSwgNzcsIDY1LCA2OCwgNzIsIDEyOCwgNzYsIAotICAgIDY1LCA3NiwgMTI4LCA3NiwgNjUsIDIwNCwgNzYsIDY1LCA3NSwgNzUsIDcyLCA2NSwgNzgsIDcxLCA4OSwgNjUsIDc5LCAKLSAgICAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1NSwgNTIsIDU3LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1NSwgNTAsIDUyLCAxMjgsIAotICAgIDc2LCA2NSwgNzUsIDQ1LCA1NCwgNTQsIDU2LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1NCwgNTIsIDU2LCAxMjgsIDc2LCA2NSwgCi0gICAgNzUsIDQ1LCA1NCwgNTIsIDE4NCwgNzYsIDY1LCA3NSwgNDUsIDU0LCA1MSwgNTQsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDU0LCAKLSAgICA0OSwgNTUsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDU0LCA0OSwgMTgzLCA3NiwgNjUsIDc1LCA0NSwgNTQsIDQ4LCA1NiwgCi0gICAgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTMsIDUzLCA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTIsIDU3LCA1MywgMTI4LCAKLSAgICA3NiwgNjUsIDc1LCA0NSwgNTIsIDU3LCA1MSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTIsIDU3LCA1MCwgMTI4LCA3NiwgNjUsIAotICAgIDc1LCA0NSwgNTIsIDU3LCA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTIsIDU2LCA1MSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgCi0gICAgNTIsIDU1LCA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTIsIDUzLCA1NSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTIsIDUzLCAKLSAgICA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTIsIDUyLCA1NywgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTIsIDUyLCAxODUsIAotICAgIDc2LCA2NSwgNzUsIDQ1LCA1MiwgNTIsIDQ5LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MSwgNTcsIDQ4LCAxMjgsIDc2LCA2NSwgCi0gICAgNzUsIDQ1LCA1MSwgNTYsIDUyLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MSwgNTYsIDUxLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCAKLSAgICA1MSwgNTIsIDU2LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MSwgNTIsIDU1LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MSwgNTIsIAotICAgIDUxLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MCwgNTQsIDU0LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MCwgNTQsIDUzLCAKLSAgICAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MCwgNTEsIDU2LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MCwgNTAsIDU2LCAxMjgsIAotICAgIDc2LCA2NSwgNzUsIDQ1LCA1MCwgNTAsIDUzLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MCwgNTAsIDQ4LCAxMjgsIDc2LCA2NSwgCi0gICAgNzUsIDQ1LCA1MCwgNDksIDU3LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MCwgNDksIDQ4LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCAKLSAgICA0OSwgNTIsIDUwLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA0OSwgNTEsIDQ4LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNTcsIAotICAgIDUwLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNTYsIDQ5LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNTYsIDE3NywgCi0gICAgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1NiwgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1NSwgMTg1LCA3NiwgNjUsIDc1LCAKLSAgICA0NSwgNDgsIDU0LCA1MCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDUzLCA0OSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIAotICAgIDUzLCA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDUxLCA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDUwLCA1MywgCi0gICAgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDUwLCA0OSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDUwLCA0OCwgMTI4LCAKLSAgICA3NiwgNjUsIDc1LCA0NSwgNDgsIDQ4LCA1MSwgMTI4LCA3NiwgNjUsIDc0LCA2NSwgNzgsIDg5LCA2NSwgNzYsIDY1LCA3OCwgCi0gICAgMTI4LCA3NiwgNjUsIDczLCA3OCwgMTk5LCA3NiwgNjUsIDIwMSwgNzYsIDY1LCA3MiwgODMsIDcyLCA4NSwgMTI4LCA3NiwgCi0gICAgNjUsIDcyLCAxMjgsIDc2LCA2NSwgNzEsIDg1LCA4MywgMTI4LCA3NiwgNjUsIDcxLCAyMTMsIDc2LCA2NSwgNzEsIDY1LCAKLSAgICA4MiwgMTI4LCA3NiwgNjUsIDcxLCA2NSwgMjEwLCA3NiwgNjUsIDcxLCA2NSwgNjYsIDEyOCwgNzYsIDY1LCA3MSwgNjUsIAotICAgIDE5NCwgNzYsIDY1LCA2OSwgODYsIDEyOCwgNzYsIDY1LCA2OSwgMTI4LCA3NiwgNjUsIDY4LCAyMTcsIDc2LCA2NSwgNjcsIAotICAgIDc1LCAxMjgsIDc2LCA2NSwgNjcsIDY1LCAxMjgsIDc2LCA2NSwgNjYsIDc5LCA4NSwgODIsIDczLCA3OCwgNzEsIDEyOCwgCi0gICAgNzYsIDY1LCA2NiwgNzksIDgyLCAxMjgsIDc2LCA2NSwgNjYsIDczLCA2NSwgNzYsIDczLCA5MCwgNjUsIDg0LCA3MywgNzksIAotICAgIDIwNiwgNzYsIDY1LCA2NiwgNzMsIDY1LCAyMDQsIDc2LCA2NSwgNjYsIDY5LCA3NiwgMTI4LCA3NiwgNjUsIDY2LCA2NSwgCi0gICAgODQsIDEyOCwgNzYsIDY1LCA2NSwgNzgsIDY1LCA2OSwgMTI4LCA3NiwgNjUsIDY1LCA3OCwgMTI4LCA3NiwgNjUsIDY1LCAKLSAgICA3NywgODUsIDEyOCwgNzYsIDY1LCA2NSwgNzcsIDEyOCwgNzYsIDY1LCA2NSwgNzMsIDEyOCwgNzYsIDU0LCAxMjgsIDc2LCAKLSAgICA1MiwgMTI4LCA3NiwgNTEsIDEyOCwgNzYsIDUwLCAxMjgsIDc2LCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA3NiwgNDgsIDQ4LCAKLSAgICA1MCwgNjUsIDEyOCwgNzYsIDQ1LCA4NCwgODksIDgwLCAxOTcsIDc2LCA0NSwgODMsIDcyLCA2NSwgODAsIDY5LCAxOTYsIAotICAgIDc1LCA4OSwgODUsIDgyLCA3MywgNzMsIDEyOCwgNzUsIDg5LCA4NSwgMTI4LCA3NSwgODksIDc5LCAxMjgsIDc1LCA4OSwgCi0gICAgNzYsIDczLCA4MywgNzcsIDY1LCAxMjgsIDc1LCA4OSwgNzMsIDEyOCwgNzUsIDg5LCA2OSwgMTI4LCA3NSwgODksIDY1LCAKLSAgICA4NCwgNzIsIDc5LCAyMTEsIDc1LCA4OSwgNjUsIDY1LCAxMjgsIDc1LCA4OSwgNjUsIDEyOCwgNzUsIDg4LCA4NywgNzMsIAotICAgIDEyOCwgNzUsIDg4LCA4NywgNjksIDY5LCAxMjgsIDc1LCA4OCwgODcsIDY5LCAxMjgsIDc1LCA4OCwgODcsIDY1LCA2NSwgCi0gICAgMTI4LCA3NSwgODgsIDg3LCA2NSwgMTI4LCA3NSwgODgsIDg1LCAxMjgsIDc1LCA4OCwgNzksIDEyOCwgNzUsIDg4LCA3MywgCi0gICAgMTI4LCA3NSwgODgsIDY5LCA2OSwgMTI4LCA3NSwgODgsIDY5LCAxMjgsIDc1LCA4OCwgNjUsIDY1LCAxMjgsIDc1LCA4OCwgCi0gICAgNjUsIDEyOCwgNzUsIDg3LCA4NiwgMTI4LCA3NSwgODcsIDg1LCA1MSwgNDksIDU2LCAxMjgsIDc1LCA4NywgNzksIDc5LCAKLSAgICAxMjgsIDc1LCA4NywgNzksIDEyOCwgNzUsIDg3LCA3NywgMTI4LCA3NSwgODcsIDczLCA3MywgMTI4LCA3NSwgODcsIDczLCAKLSAgICAxMjgsIDc1LCA4NywgNjksIDY5LCAxMjgsIDc1LCA4NywgNjksIDEyOCwgNzUsIDg3LCA2NiwgMTI4LCA3NSwgODcsIDY1LCAKLSAgICA4OSwgMTI4LCA3NSwgODcsIDY1LCA2OSwgODQsIDEyOCwgNzUsIDg3LCA2NSwgNjUsIDEyOCwgNzUsIDg2LCA2NSwgMTI4LCAKLSAgICA3NSwgODYsIDEyOCwgNzUsIDg1LCA4OCwgMTI4LCA3NSwgODUsIDg2LCAxMjgsIDc1LCA4NSwgODUsIDcyLCAxMjgsIDc1LCAKLSAgICA4NSwgODQsIDEyOCwgNzUsIDg1LCA4MywgNzcsIDY1LCAxMjgsIDc1LCA4NSwgODMsIDcyLCA4NSwgNTAsIDEyOCwgNzUsIAotICAgIDg1LCA4MywgNzIsIDg1LCAxNzgsIDc1LCA4NSwgODIsIDg4LCAxMjgsIDc1LCA4NSwgODIsIDg1LCA5MCwgNjksIDczLCA4MiwgCi0gICAgNzksIDEyOCwgNzUsIDg1LCA4MiwgODQsIDEyOCwgNzUsIDg1LCA4MiwgNzksIDc5LCA3OCwgNjksIDEyOCwgNzUsIDg1LCAKLSAgICA4MiwgMTI4LCA3NSwgODUsIDIxMCwgNzUsIDg1LCA4MSwgMTI4LCA3NSwgODUsIDc5LCA4OCwgMTI4LCA3NSwgODUsIDc5LCAKLSAgICA4MCwgMTI4LCA3NSwgODUsIDc5LCAyMDgsIDc1LCA4NSwgNzksIDc3LCAxMjgsIDc1LCA4NSwgNzksIDEyOCwgNzUsIDg1LCAKLSAgICA3OCwgNzEsIDEyOCwgNzUsIDg1LCA3OCwgNjgsIDY4LCA2NSwgNzYsIDczLCA4OSwgNjUsIDEyOCwgNzUsIDg1LCA3NiwgCi0gICAgMTI4LCA3NSwgODUsIDIwNCwgNzUsIDg1LCA3MSwgMTI4LCA3NSwgODUsIDY5LCA4NCwgMTI4LCA3NSwgODUsIDY2LCAxMjgsIAotICAgIDc1LCA4NSwgNjUsIDg2LCAxMjgsIDc1LCA4NSwgNjUsIDY2LCAxMjgsIDc1LCA4NSwgNjUsIDEyOCwgNzUsIDg1LCA1NSwgCi0gICAgMTI4LCA3NSwgODUsIDUyLCAxMjgsIDc1LCA4NSwgMTgwLCA3NSwgODUsIDUxLCAxMjgsIDc1LCA4NSwgMTc5LCA3NSwgODQsIAotICAgIDEyOCwgNzUsIDgzLCA4MywgODUsIDg1LCAxMjgsIDc1LCA4MywgODMsIDg1LCAxMjgsIDc1LCA4MywgODMsIDc5LCA3OSwgCi0gICAgMTI4LCA3NSwgODMsIDgzLCA3OSwgMTI4LCA3NSwgODMsIDgzLCA3MywgNzMsIDEyOCwgNzUsIDgzLCA4MywgNzMsIDEyOCwgCi0gICAgNzUsIDgzLCA4MywgNjksIDY5LCAxMjgsIDc1LCA4MywgODMsIDY5LCAxMjgsIDc1LCA4MywgODMsIDY1LCA4NSwgMTI4LCAKLSAgICA3NSwgODMsIDgzLCA2NSwgNzMsIDEyOCwgNzUsIDgzLCA4MywgNjUsIDY1LCAxMjgsIDc1LCA4MywgODMsIDY1LCAxMjgsIAotICAgIDc1LCA4MywgODMsIDEyOCwgNzUsIDgzLCA3MywgMTI4LCA3NSwgODIsIDY5LCA3NywgNjUsIDgzLCA4NCwgNzMsIDEyOCwgCi0gICAgNzUsIDgyLCA2NSwgODQsIDczLCA3NywgNzksIDg5LCA4MCwgNzksIDgyLCA4MiwgNzksIDc5LCA3OCwgMTI4LCA3NSwgODIsIAotICAgIDY1LCA4NCwgNzMsIDc3LCA3OSwgNzUsIDc5LCA4NSwgNzAsIDczLCA4MywgNzcsIDY1LCAxMjgsIDc1LCA4MiwgNjUsIDg0LCAKLSAgICA3MywgNzcsIDY1LCA4NCwgNjUsIDEyOCwgNzUsIDgyLCA2NSwgODQsIDczLCA3NywgMTkzLCA3NSwgODAsIDg1LCAxMjgsIAotICAgIDc1LCA4MCwgNzksIDgxLCAxMjgsIDc1LCA4MCwgNzksIDc5LCAxMjgsIDc1LCA4MCwgNzksIDEyOCwgNzUsIDgwLCA3MywgCi0gICAgMTI4LCA3NSwgODAsIDY5LCA4NSwgODgsIDEyOCwgNzUsIDgwLCA2OSwgNjksIDEyOCwgNzUsIDgwLCA2OSwgMTI4LCA3NSwgCi0gICAgODAsIDY1LCA4MiwgNjUsIDgxLCAxMjgsIDc1LCA4MCwgNjUsIDc4LCAxMjgsIDc1LCA4MCwgNjUsIDcyLCAxMjgsIDc1LCAKLSAgICA4MCwgNjUsIDEyOCwgNzUsIDc5LCA4OCwgMTI4LCA3NSwgNzksIDg2LCA4NSwgODUsIDEyOCwgNzUsIDc5LCA4NiwgMTI4LCAKLSAgICA3NSwgNzksIDg0LCA3OSwgMTI4LCA3NSwgNzksIDgyLCA4NSwgNzgsIDY1LCAxMjgsIDc1LCA3OSwgODIsIDc5LCA3OCwgNzMsIAotICAgIDgzLCAxMjgsIDc1LCA3OSwgODIsIDY5LCA2NSwgMjA2LCA3NSwgNzksIDgyLCA2NSwgNzgsIDczLCAxOTUsIDc1LCA3OSwgCi0gICAgODEsIDc4LCA2OCwgNzksIDc4LCAxMjgsIDc1LCA3OSwgODAsIDgwLCA2NSwgMTI4LCA3NSwgNzksIDgwLCAxMjgsIDc1LCAKLSAgICA3OSwgNzksIDg2LCAxMjgsIDc1LCA3OSwgNzksIDgwLCA3OSwgMTI4LCA3NSwgNzksIDc5LCA3NywgODUsIDg1LCA4NCwgCi0gICAgMTI4LCA3NSwgNzksIDc5LCA2NiwgMTI4LCA3NSwgNzksIDc5LCAxMjgsIDc1LCA3OSwgNzgsIDg0LCA2OSwgODYsIDc3LCAKLSAgICA2NSwgMTI4LCA3NSwgNzksIDc4LCA4NCwgNjksIDg2LCA3NywgMTkzLCA3NSwgNzksIDc3LCAyMDEsIDc1LCA3OSwgNzcsIAotICAgIDY2LCA4NSwgODYsIDY1LCAxMjgsIDc1LCA3OSwgNzcsIDY2LCA4NSwgODYsIDE5MywgNzUsIDc5LCA3NywgNjYsIDIxMywgCi0gICAgNzUsIDc5LCA3NSwgNzksIDEyOCwgNzUsIDc5LCA3NSwgNjksIDEyOCwgNzUsIDc5LCA3NSwgMTI4LCA3NSwgNzksIDIwMywgCi0gICAgNzUsIDc5LCA3MywgMTI4LCA3NSwgNzksIDIwMSwgNzUsIDc5LCA3MiwgMTI4LCA3NSwgNzksIDcxLCA3MiwgNzksIDc3LCAKLSAgICAxMjgsIDc1LCA3OSwgNjksIDg0LCAxMjgsIDc1LCA3OSwgNjYsIDEyOCwgNzUsIDc5LCA2NSwgNzYsIDY1LCAxMjgsIDc1LCAKLSAgICA3OSwgNjUsIDEyOCwgNzUsIDc4LCA4NSwgNjcsIDc1LCA3NiwgNjksIDgzLCAxMjgsIDc1LCA3OCwgODUsIDY3LCA3NSwgNzYsIAotICAgIDY5LCAxMjgsIDc1LCA3OCwgNzksIDY2LCA4MywgMTI4LCA3NSwgNzgsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDc1LCA3OCwgCi0gICAgNzMsIDcxLCA3MiwgMjEyLCA3NSwgNzgsIDczLCA3MCwgNjksIDEyOCwgNzUsIDc4LCA3MywgNzAsIDE5NywgNzUsIDc3LCAKLSAgICAxMjgsIDc1LCAyMDUsIDc1LCA3NiwgNzMsIDg0LCA3OSwgNzgsIDEyOCwgNzUsIDc2LCA2NSwgODMsIDc3LCA2NSwgMTI4LCAKLSAgICA3NSwgNzYsIDY1LCA4MywgNzcsIDE5MywgNzUsIDc2LCA2NSwgMTI4LCA3NSwgNzYsIDEyOCwgNzUsIDc1LCA4NSwgMTI4LCAKLSAgICA3NSwgNzUsIDc5LCAxMjgsIDc1LCA3NSwgNzMsIDEyOCwgNzUsIDc1LCA2OSwgNjksIDEyOCwgNzUsIDc1LCA2OSwgMTI4LCAKLSAgICA3NSwgNzUsIDY1LCAxMjgsIDc1LCA3NSwgMTI4LCA3NSwgNzQsIDY5LCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIAotICAgIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA4MywgNzMsIDc5LCAKLSAgICA4MywgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDgyLCA3MywgCi0gICAgNjksIDg1LCA3NiwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDc1LCAKLSAgICA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgCi0gICAgNDUsIDc1LCA3MiwgNzMsIDY5LCA4NSwgNzUsIDcyLCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA2NywgNzIsIAotICAgIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDIwMywgNzUsIDczLCA4OCwgMTI4LCA3NSwgCi0gICAgNzMsIDg3LCAxMjgsIDc1LCA3MywgODYsIDEyOCwgNzUsIDczLCA4NCwgMTI4LCA3NSwgNzMsIDgzLCA4MywgNzMsIDc4LCAKLSAgICAxOTksIDc1LCA3MywgODMsIDgzLCAxMjgsIDc1LCA3MywgODMsIDIxMSwgNzUsIDczLCA4MywgNzMsIDc3LCA1MywgMTI4LCAKLSAgICA3NSwgNzMsIDgzLCA3MywgNzcsIDE4MSwgNzUsIDczLCA4MywgNzIsIDEyOCwgNzUsIDczLCA4MywgNjUsIDc2LCAxMjgsIAotICAgIDc1LCA3MywgODIsIDc5LCA4NywgNjUsIDg0LCA4NCwgNzksIDEyOCwgNzUsIDczLCA4MiwgNzksIDc3LCA2OSwgNjksIDg0LCAKLSAgICA3OSwgODIsIDg1LCAxMjgsIDc1LCA3MywgODIsIDc5LCA3MSwgODUsIDgyLCA2NSwgNzcsIDg1LCAxMjgsIDc1LCA3MywgODIsIAotICAgIDc5LCAxMjgsIDc1LCA3MywgODIsIDcxLCA3MiwgNzMsIDIxOCwgNzUsIDczLCA4MSwgMTI4LCA3NSwgNzMsIDgwLCAxMjgsIAotICAgIDc1LCA3MywgMjA4LCA3NSwgNzMsIDc4LCA4MywgNzIsIDczLCA4MCwgMTI4LCA3NSwgNzMsIDc4LCA2OCwgNjksIDgyLCA3MSwgCi0gICAgNjUsIDgyLCA4NCwgNjksIDc4LCAxMjgsIDc1LCA3MywgNzcsIDc5LCA3OCwgNzksIDEyOCwgNzUsIDczLCA3NiwgNzYsIDY5LCAKLSAgICA4MiwgMTI4LCA3NSwgNzMsIDczLCAxMjgsIDc1LCA3MywgNzIsIDEyOCwgNzUsIDczLCA2OSwgODgsIDEyOCwgNzUsIDczLCAKLSAgICA2OSwgODYsIDY1LCAyMDYsIDc1LCA3MywgNjksIDgwLCAxMjgsIDc1LCA3MywgNjksIDY5LCA3NywgMTI4LCA3NSwgNzMsIAotICAgIDY5LCAxMjgsIDc1LCA3MywgNjgsIDEyOCwgNzUsIDczLCAxOTYsIDc1LCA3MywgNjcsIDc1LCAxMjgsIDc1LCA3MywgNjYsIAotICAgIDEyOCwgNzUsIDczLCA2NSwgODYsIDEyOCwgNzUsIDczLCA2NSwgNjYsIDEyOCwgNzUsIDcyLCA5MCwgMTI4LCA3NSwgNzIsIAotICAgIDg3LCA2NSwgNzMsIDEyOCwgNzUsIDcyLCA4NSwgNjksIDc4LCA0NSwgNzYsIDg1LCAxOTcsIDc1LCA3MiwgODUsIDY5LCAKLSAgICAyMDYsIDc1LCA3MiwgODUsIDY4LCA2NSwgODcsIDY1LCA2OCwgMjAxLCA3NSwgNzIsIDg1LCA2OCwgNjUsIDc3LCAxMjgsIAotICAgIDc1LCA3MiwgODUsIDY1LCA4NCwgMTI4LCA3NSwgNzIsIDc5LCA4NSwgMTI4LCA3NSwgNzIsIDc5LCAyMTIsIDc1LCA3MiwgCi0gICAgNzksIDc4LCAxMjgsIDc1LCA3MiwgNzksIDc3LCA4NSwgODQsIDEyOCwgNzUsIDcyLCA3OSwgNzQsIDc1LCAyMDEsIDc1LCAKLSAgICA3MiwgNzksIDEyOCwgNzUsIDcyLCAyMDcsIDc1LCA3MiwgNzcsIDIxMywgNzUsIDcyLCA3MywgODQsIDEyOCwgNzUsIDcyLCAKLSAgICA3MywgNzgsIDg5LCA2NSwgMTI4LCA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCAyMDAsIDc1LCA3MiwgNzMsIDEyOCwgNzUsIAotICAgIDcyLCAyMDEsIDc1LCA3MiwgNzIsIDc5LCAxMjgsIDc1LCA3MiwgNzIsIDY1LCAxMjgsIDc1LCA3MiwgNjksIDg0LCA3MiwgCi0gICAgMTI4LCA3NSwgNzIsIDY5LCA3MywgMTI4LCA3NSwgNzIsIDY5LCA2OSwgMTI4LCA3NSwgNzIsIDY5LCAxMjgsIDc1LCA3MiwgCi0gICAgNjUsIDg2LCAxMjgsIDc1LCA3MiwgNjUsIDgyLCA3OSwgODMsIDcyLCA4NCwgNzIsIDIwMSwgNzUsIDcyLCA2NSwgODIsIAotICAgIDEyOCwgNzUsIDcyLCA2NSwgODAsIDcyLCAxMjgsIDc1LCA3MiwgNjUsIDc4LCAxOTksIDc1LCA3MiwgNjUsIDc4LCA2OCwgCi0gICAgMTkzLCA3NSwgNzIsIDY1LCA3OCwgMTI4LCA3NSwgNzIsIDY1LCA3NywgODQsIDIwMSwgNzUsIDcyLCA2NSwgNzUsIDY1LCAKLSAgICA4MywgODMsIDczLCA2NSwgMjA2LCA3NSwgNzIsIDY1LCA3MywgMTI4LCA3NSwgNzIsIDY1LCA3MiwgMTI4LCA3NSwgNzIsIAotICAgIDY1LCAyMDAsIDc1LCA3MiwgNjUsIDY2LCAxMjgsIDc1LCA3MiwgNjUsIDY1LCAxMjgsIDc1LCA3MSwgMTI4LCA3NSwgNjksIAotICAgIDg5LCA2NywgNjUsIDgwLCAxMjgsIDc1LCA2OSwgODksIDY3LCA2NSwgMjA4LCA3NSwgNjksIDg5LCA2NiwgNzksIDY1LCA4MiwgCi0gICAgNjgsIDEyOCwgNzUsIDY5LCA4OSwgNjYsIDc5LCA2NSwgODIsIDE5NiwgNzUsIDY5LCA4OCwgMTI4LCA3NSwgNjksIDg2LCAKLSAgICAxMjgsIDc1LCA2OSwgODUsIDg5LCA2OSwgODUsIDg4LCAxMjgsIDc1LCA2OSwgODUsIDgzLCA3MiwgNjksIDg1LCA2NSwgNjksIAotICAgIDgwLCAxMjgsIDc1LCA2OSwgODUsIDgzLCA2OSwgODUsIDg4LCAxMjgsIDc1LCA2OSwgODUsIDgwLCA4NSwgODEsIDEyOCwgCi0gICAgNzUsIDY5LCA4NSwgNzksIDIxMiwgNzUsIDY5LCA4NSwgNzcsIDEyOCwgNzUsIDY5LCA4NSwgNzUsIDY5LCA4NSwgODQsIDc4LCAKLSAgICA2OCwgNjUsIDEyOCwgNzUsIDY5LCA4NSwgNzUsIDY1LCA4MSwgMTI4LCA3NSwgNjksIDg1LCA2NSwgNjksIDg0LCA3NywgNjksIAotICAgIDg1LCA3OCwgMTI4LCA3NSwgNjksIDg1LCA2NSwgNjksIDgyLCA3MywgMTI4LCA3NSwgNjksIDg0LCA4NCwgMjAxLCA3NSwgCi0gICAgNjksIDgzLCA3MiwgNTAsIDEyOCwgNzUsIDY5LCA4MiwgNjksIDg0LCAxMjgsIDc1LCA2OSwgNzksIDg3LCAxMjgsIDc1LCAKLSAgICA2OSwgNzgsIDg0LCA3MywgNzcsIDY1LCA4NCwgNjUsIDEyOCwgNzUsIDY5LCA3OCwgODQsIDczLCA3NywgNjUsIDg0LCAxOTMsIAotICAgIDc1LCA2OSwgNzgsIDg0LCA3MywgNzcsIDE5MywgNzUsIDY5LCA3OCwgNjUsIDg0LCAxMjgsIDc1LCA2OSwgNzgsIDEyOCwgCi0gICAgNzUsIDY5LCAyMDYsIDc1LCA2OSwgNzcsIDgwLCA4NSwgNzYsIDEyOCwgNzUsIDY5LCA3NywgODAsIDg1LCAyMDQsIDc1LCAKLSAgICA2OSwgNzcsIDgwLCA3NiwgNzMsIDEyOCwgNzUsIDY5LCA3NywgODAsIDc2LCAyMDEsIDc1LCA2OSwgNzcsIDgwLCA3MiwgODIsIAotICAgIDY5LCA3OCwgNzEsIDEyOCwgNzUsIDY5LCA3NywgNjYsIDY1LCA3OCwgNzEsIDEyOCwgNzUsIDY5LCA3NiwgODYsIDczLCAKLSAgICAyMDYsIDc1LCA2OSwgNzIsIDY5LCA3MiwgMTI4LCA3NSwgNjksIDcyLCA2OSwgMjAwLCA3NSwgNjksIDcyLCAxMjgsIDc1LCAKLSAgICA2OSwgNzAsIDg1LCA3NiwgNjUsIDEyOCwgNzUsIDY5LCA2OSwgODYsIDEyOCwgNzUsIDY5LCA2OSwgODMsIDg1LCAxMjgsIAotICAgIDc1LCA2OSwgNjksIDgwLCA3MywgNzgsIDE5OSwgNzUsIDY5LCA2OSwgNzgsIDcxLCAxMjgsIDc1LCA2OSwgNjksIDY2LCAKLSAgICAxMjgsIDc1LCA2OSwgNjYsIDEyOCwgNzUsIDY5LCA2NSwgNjUsIDY5LCAxMjgsIDc1LCA2NywgNjUsIDc2LCAxMjgsIDc1LCAKLSAgICA2NiwgMTI4LCA3NSwgNjUsIDkwLCA2NSwgNzUsIDIwMCwgNzUsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzUsIAotICAgIDY1LCA4OSwgNjUsIDIwMCwgNzUsIDY1LCA4OCwgMTI4LCA3NSwgNjUsIDg3LCA4NiwgMTI4LCA3NSwgNjUsIDg3LCA3MywgCi0gICAgMTI4LCA3NSwgNjUsIDg3LCA2NiwgMTI4LCA3NSwgNjUsIDg2LCA4OSwgNzUsIDY1LCAxMjgsIDc1LCA2NSwgODYsIDEyOCwgCi0gICAgNzUsIDY1LCA4NSwgODYsIDEyOCwgNzUsIDY1LCA4NSwgNzgsIDY1LCAxMjgsIDc1LCA2NSwgODUsIDIwNiwgNzUsIDY1LCAKLSAgICA4NSwgNjYsIDEyOCwgNzUsIDY1LCA4NCwgNzksIDEyOCwgNzUsIDY1LCA4NCwgNzIsIDczLCA4MywgODQsIDczLCAxMjgsIAotICAgIDc1LCA2NSwgODQsIDcyLCA2NSwgNzUsIDE5MywgNzUsIDY1LCA4NCwgNjUsIDg2LCA2NSwgODMsIDc3LCA2NSwgMTI4LCA3NSwgCi0gICAgNjUsIDg0LCA2NSwgODYsIDE5MywgNzUsIDY1LCA4NCwgNjUsIDc1LCA2NSwgNzgsIDY1LCA0NSwgNzIsIDczLCA4MiwgNjUsIAotICAgIDcxLCA2NSwgNzgsIDE5MywgNzUsIDY1LCA4MywgODIsIDY1LCA4NCwgNjUsIDc4LCAxMjgsIDc1LCA2NSwgODMsIDgyLCA2NSwgCi0gICAgODQsIDY1LCAyMDYsIDc1LCA2NSwgODMsIDgyLCA2NSwgMTI4LCA3NSwgNjUsIDgzLCA4MiwgMTkzLCA3NSwgNjUsIDgzLCAKLSAgICA3NSwgNjUsIDc2LCAxMjgsIDc1LCA2NSwgODMsIDc1LCA2NSwgMjA0LCA3NSwgNjUsIDgzLCA3MiwgNzcsIDczLCA4MiwgCi0gICAgMjAxLCA3NSwgNjUsIDgyLCA4MywgNzIsIDY1LCA3OCwgNjUsIDEyOCwgNzUsIDY1LCA4MiwgNzksIDgyLCA3MywgNzMsIAotICAgIDEyOCwgNzUsIDY1LCA4MiwgMjA3LCA3NSwgNjUsIDgyLCA2OSwgMjA2LCA3NSwgNjUsIDgyLCA2NSwgODQsIDg0LCA3OSwgCi0gICAgMTI4LCA3NSwgNjUsIDgyLCA2NSwgNzgsIDEyOCwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MywgODMsIDY1LCAKLSAgICA3OCwgNzEsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgyLCA3MywgCi0gICAgNjksIDg1LCA3NiwgMTI4LCA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIAotICAgIDcyLCAxMjgsIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDc1LCA2NSwgCi0gICAgODAsIDgwLCA2NSwgMTI4LCA3NSwgNjUsIDgwLCA4MCwgMTkzLCA3NSwgNjUsIDgwLCA3OSwgMTI4LCA3NSwgNjUsIDgwLCAKLSAgICA3MiwgMTI4LCA3NSwgNjUsIDgwLCA2NSwgNzYsIDEyOCwgNzUsIDY1LCA4MCwgNjUsIDEyOCwgNzUsIDY1LCAyMDgsIDc1LCAKLSAgICA2NSwgNzgsIDg0LCA2NSwgNzQsIDE5MywgNzUsIDY1LCA3OCwgNzEsIDEyOCwgNzUsIDY1LCA3OCwgMTk5LCA3NSwgNjUsIAotICAgIDc4LCA2NSwgNzUsIDc5LCAxMjgsIDc1LCA2NSwgNzcsIDUyLCAxMjgsIDc1LCA2NSwgNzcsIDUwLCAxMjgsIDc1LCA2NSwgCi0gICAgNzcsIDEyOCwgNzUsIDY1LCA3NSwgNzksIDEyOCwgNzUsIDY1LCA3NSwgNjUsIDY2LCA2NSwgODQsIDEyOCwgNzUsIDY1LCAKLSAgICA3NSwgMTI4LCA3NSwgNjUsIDIwMywgNzUsIDY1LCA3MywgODYsIDEyOCwgNzUsIDY1LCA3MywgODQsIDcyLCAyMDEsIDc1LCAKLSAgICA2NSwgNzMsIDgyLCA3MywgMTI4LCA3NSwgNjUsIDczLCA2NiwgMTI4LCA3NSwgNjUsIDczLCAxMjgsIDc1LCA2NSwgMjAxLCAKLSAgICA3NSwgNjUsIDcwLCA2NSwgMTI4LCA3NSwgNjUsIDcwLCAxMjgsIDc1LCA2NSwgMTk4LCA3NSwgNjUsIDY4LCA1MywgMTI4LCAKLSAgICA3NSwgNjUsIDY4LCAxODEsIDc1LCA2NSwgNjgsIDUyLCAxMjgsIDc1LCA2NSwgNjgsIDUxLCAxMjgsIDc1LCA2NSwgNjgsIAotICAgIDE3OSwgNzUsIDY1LCA2OCwgNTAsIDEyOCwgNzUsIDY1LCA2OCwgMTI4LCA3NSwgNjUsIDY2LCAxOTMsIDc1LCA2NSwgNjYsIAotICAgIDEyOCwgNzUsIDY1LCA2NSwgODYsIDEyOCwgNzUsIDY1LCA2NSwgNzMsIDEyOCwgNzUsIDY1LCA2NSwgNzAsIDg1LCAxMjgsIAotICAgIDc1LCA2NSwgNjUsIDcwLCAxMjgsIDc1LCA2NSwgNjUsIDY2LCA2NSwgMTI4LCA3NSwgNjUsIDY1LCA2NiwgMTI4LCA3NSwgCi0gICAgNjUsIDUwLCAxMjgsIDc1LCA2NSwgMTc4LCA3NSwgNDgsIDQ4LCA1NiwgMTI4LCA3NSwgNDgsIDQ4LCA1NSwgMTI4LCA3NSwgCi0gICAgNDgsIDQ4LCA1NCwgMTI4LCA3NSwgNDgsIDQ4LCA1MywgMTI4LCA3NSwgNDgsIDQ4LCA1MiwgMTI4LCA3NSwgNDgsIDQ4LCAKLSAgICA1MSwgMTI4LCA3NSwgNDgsIDQ4LCA1MCwgMTI4LCA3NSwgNDgsIDQ4LCA0OSwgMTI4LCA3NCwgODcsIDY1LCAxMjgsIDc0LCAKLSAgICA4NSwgODUsIDEyOCwgNzQsIDg1LCA4NCwgMTI4LCA3NCwgODUsIDgzLCA4NCwgNzMsIDcwLCA3MywgNjcsIDY1LCA4NCwgNzMsIAotICAgIDc5LCA3OCwgMTI4LCA3NCwgODUsIDgwLCA3MywgODQsIDY5LCA4MiwgMTI4LCA3NCwgODUsIDc5LCA4NCwgMTI4LCA3NCwgCi0gICAgODUsIDc5LCA4MCwgMTI4LCA3NCwgODUsIDc4LCA3OSwgMTI4LCA3NCwgODUsIDc4LCA2OSwgMTI4LCA3NCwgODUsIDc2LCAKLSAgICA4OSwgMTI4LCA3NCwgODUsIDY5LCA4NSwgNzMsIDEyOCwgNzQsIDg1LCA2OCwgODUsIDc2LCAxMjgsIDc0LCA4NSwgNjgsIAotICAgIDcxLCA2OSwgMTI4LCA3NCwgODUsIDY4LCA2OSwgNzksIDQ1LCA4MywgODAsIDY1LCA3OCwgNzMsIDgzLCAyMDAsIDc0LCA3OSwgCi0gICAgODksIDgzLCA4NCwgNzMsIDY3LCA3NSwgMTI4LCA3NCwgNzksIDg5LCA3OSwgODUsIDIxMSwgNzQsIDc5LCA4OSwgMTI4LCAKLSAgICA3NCwgNzksIDg2LCA2OSwgMTI4LCA3NCwgNzksIDIxMiwgNzQsIDc5LCA3OCwgNzEsIDEyOCwgNzQsIDc5LCA3OCwgMTkzLCAKLSAgICA3NCwgNzksIDc1LCA2OSwgODIsIDEyOCwgNzQsIDc5LCA3MywgNzgsIDg0LCA4MywgMTI4LCA3NCwgNzksIDczLCA3OCwgNjksIAotICAgIDY4LCAxMjgsIDc0LCA3OSwgNzMsIDc4LCAxMjgsIDc0LCA3OSwgNjUsIDEyOCwgNzQsIDc0LCA4OSwgODgsIDEyOCwgNzQsIAotICAgIDc0LCA4OSwgODQsIDEyOCwgNzQsIDc0LCA4OSwgODAsIDEyOCwgNzQsIDc0LCA4OSwgMTI4LCA3NCwgNzQsIDg1LCA4OCwgCi0gICAgMTI4LCA3NCwgNzQsIDg1LCA4NCwgMTI4LCA3NCwgNzQsIDg1LCA4MiwgODgsIDEyOCwgNzQsIDc0LCA4NSwgODIsIDEyOCwgCi0gICAgNzQsIDc0LCA4NSwgODAsIDEyOCwgNzQsIDc0LCA4NSwgNzksIDg4LCAxMjgsIDc0LCA3NCwgODUsIDc5LCA4MCwgMTI4LCAKLSAgICA3NCwgNzQsIDg1LCA3OSwgMTI4LCA3NCwgNzQsIDg1LCAxMjgsIDc0LCA3NCwgNzksIDg4LCAxMjgsIDc0LCA3NCwgNzksIAotICAgIDg0LCAxMjgsIDc0LCA3NCwgNzksIDgwLCAxMjgsIDc0LCA3NCwgNzksIDEyOCwgNzQsIDc0LCA3MywgODgsIDEyOCwgNzQsIAotICAgIDc0LCA3MywgODQsIDEyOCwgNzQsIDc0LCA3MywgODAsIDEyOCwgNzQsIDc0LCA3MywgNjksIDg4LCAxMjgsIDc0LCA3NCwgCi0gICAgNzMsIDY5LCA4NCwgMTI4LCA3NCwgNzQsIDczLCA2OSwgODAsIDEyOCwgNzQsIDc0LCA3MywgNjksIDEyOCwgNzQsIDc0LCAKLSAgICA3MywgMTI4LCA3NCwgNzQsIDY5LCA2OSwgMTI4LCA3NCwgNzQsIDY5LCAxMjgsIDc0LCA3NCwgNjUsIDEyOCwgNzQsIDczLCAKLSAgICA3NiwgMTI4LCA3NCwgNzMsIDczLCAxMjgsIDc0LCA3MywgNzIsIDg2LCA2NSwgNzcsIDg1LCA3NiwgNzMsIDg5LCA2NSwgCi0gICAgMTI4LCA3NCwgNzMsIDY1LCAxMjgsIDc0LCA3MiwgNzksIDg4LCAxMjgsIDc0LCA3MiwgNzksIDEyOCwgNzQsIDcyLCA2OSwgCi0gICAgNzIsIDEyOCwgNzQsIDcyLCA2NSwgODksIDczLCA3OCwgMTI4LCA3NCwgNzIsIDY1LCA3OCwgMTI4LCA3NCwgNzIsIDY1LCAKLSAgICA3NywgMTI4LCA3NCwgNzIsIDY1LCA2NSwgMTI4LCA3NCwgNzIsIDY1LCAxMjgsIDc0LCA2OSwgODUsIDEyOCwgNzQsIDY5LCAKLSAgICA4MiwgODUsIDgzLCA2NSwgNzYsIDY5LCA3NywgMTI4LCA3NCwgNjksIDgyLCA2NSwgMjA2LCA3NCwgNjksIDgyLCA2NSwgCi0gICAgMTI4LCA3NCwgNjksIDgyLCAxMjgsIDc0LCA2OSwgNzIsIDEyOCwgNzQsIDY5LCAyMDAsIDc0LCA2OSwgNzEsIDc5LCA3MSwgCi0gICAgNjUsIDc4LCAxMjgsIDc0LCA2OSwgNjksIDc3LCAxMjgsIDc0LCA2OSwgNjUsIDc4LCA4MywgMTI4LCA3NCwgNjUsIDg5LCAKLSAgICA3OCwgMTI4LCA3NCwgNjUsIDg5LCA3MywgNzgsIDEyOCwgNzQsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzQsIAotICAgIDY1LCA4NywgMTI4LCA3NCwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgNzQsIDY1LCA4NSwgMTI4LCA3NCwgCi0gICAgNjUsIDgyLCAxMjgsIDc0LCA2NSwgODAsIDY1LCA3OCwgNjksIDgzLCAxOTcsIDc0LCA2NSwgODAsIDY1LCA3OCwgMTI4LCAKLSAgICA3NCwgNjUsIDc4LCA4NSwgNjUsIDgyLCA4OSwgMTI4LCA3NCwgNjUsIDc2LCA3NiwgNjUsIDc0LCA2NSwgNzYsIDY1LCA3NiwgCi0gICAgNzksIDg1LCA3MiwgNzksIDg1LCAxMjgsIDc0LCA2NSwgNzMsIDIwNiwgNzQsIDY1LCA3MywgMTI4LCA3NCwgNjUsIDcyLCAKLSAgICAxMjgsIDc0LCA2NSwgNjgsIDY5LCAxMjgsIDc0LCA2NSwgNjcsIDc1LCA4MywgMTI4LCA3NCwgNjUsIDY3LCA3NSwgNDUsIAotICAgIDc5LCA0NSwgNzYsIDY1LCA3OCwgODQsIDY5LCA4MiwgNzgsIDEyOCwgNzQsIDY1LCA2NywgMjAzLCA3NCwgNDUsIDgzLCA3MywgCi0gICAgNzcsIDgwLCA3NiwgNzMsIDcwLCA3MywgNjksIDE5NiwgNzMsIDkwLCA3MiwgNzMsIDg0LCA4MywgNjUsIDEyOCwgNzMsIDkwLCAKLSAgICA3MiwgNzMsIDg0LCA4MywgMTkzLCA3MywgOTAsIDcyLCA2OSwgMTI4LCA3MywgOTAsIDY1LCA3NSwgNjUsIDg5LCAxOTMsIAotICAgIDczLCA4OSwgNjksIDc1LCAxMjgsIDczLCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzMsIDg1LCA3NCwgNjUsIDEyOCwgCi0gICAgNzMsIDg0LCAyMTEsIDczLCA4NCwgNjksIDgyLCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MywgODQsIDY5LCA3NywgMTI4LCAKLSAgICA3MywgODMsIDgzLCA3MiwgNjUsIDgyLCAxMjgsIDczLCA4MywgNzksIDgzLCA2NywgNjksIDc2LCA2OSwgMjExLCA3MywgODMsIAotICAgIDc5LCA3OCwgMTI4LCA3MywgODMsIDc5LCAyMDYsIDczLCA4MywgNzksIDc2LCA2NSwgODQsIDY5LCAxMjgsIDczLCA4MywgCi0gICAgNzYsIDY1LCA3OCwgNjgsIDEyOCwgNzMsIDgzLCA2OSwgNzgsIDQ1LCA3MywgODMsIDY5LCA3OCwgMTI4LCA3MywgODMsIDY1LCAKLSAgICA3NSwgNzMsIDE5MywgNzMsIDgzLCA0NSwgODAsIDczLCA3NiwgNzYsIDY1LCAxMjgsIDczLCA4MiwgODUsIDg5LCA2NSwgNzgsIAotICAgIDc4LCA2NSwgMTI4LCA3MywgODIsIDg1LCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDczLCA4MiwgNzksIDc4LCA0NSwgCi0gICAgNjcsIDc5LCA4MCwgODAsIDY5LCAyMTAsIDczLCA4MiwgNzksIDc4LCAxMjgsIDczLCA4MiwgNjYsIDEyOCwgNzMsIDc5LCAKLSAgICA4NCwgNzMsIDcwLCA3MywgNjksIDE5NiwgNzMsIDc5LCA4NCwgNjUsIDg0LCA2OSwgMTk2LCA3MywgNzksIDg0LCA2NSwgCi0gICAgMTI4LCA3MywgNzksIDg0LCAxOTMsIDczLCA3OSwgODIsIDEyOCwgNzMsIDc5LCA2OCwgNzIsIDY1LCA2OCwgNzIsIDEyOCwgCi0gICAgNzMsIDc4LCA4NiwgNzMsIDgzLCA3MywgNjYsIDc2LCAxOTcsIDczLCA3OCwgODYsIDY5LCA4MiwgODQsIDY5LCA2OCwgMTI4LCAKLSAgICA3MywgNzgsIDg2LCA2OSwgODIsIDg0LCA2OSwgMTk2LCA3MywgNzgsIDg2LCA2OSwgODIsIDgzLCAxOTcsIDczLCA3OCwgODQsIAotICAgIDgyLCA3OSwgNjgsIDg1LCA2NywgNjksIDgyLCAxMjgsIDczLCA3OCwgODQsIDczLCAxMjgsIDczLCA3OCwgODQsIDY5LCA4MiwgCi0gICAgODMsIDg5LCA3NiwgNzYsIDY1LCA2NiwgNzMsIDE5NSwgNzMsIDc4LCA4NCwgNjksIDgyLCA4MywgNjksIDY3LCA4NCwgNzMsIAotICAgIDc5LCA3OCwgMTI4LCA3MywgNzgsIDg0LCA2OSwgODIsIDgzLCA2OSwgNjcsIDg0LCA3MywgNzksIDIwNiwgNzMsIDc4LCA4NCwgCi0gICAgNjksIDgyLCA4MywgNjksIDY3LCA4NCwgNzMsIDc4LCAxOTksIDczLCA3OCwgODQsIDY5LCA4MiwgODIsIDc5LCA2NiwgNjUsIAotICAgIDc4LCA3MSwgMTI4LCA3MywgNzgsIDg0LCA2OSwgODIsIDgyLCA3OSwgNjYsIDY1LCA3OCwgMTk5LCA3MywgNzgsIDg0LCA2OSwgCi0gICAgODIsIDgwLCA3OSwgNzYsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDczLCA3OCwgODQsIDY5LCA4MiwgNzYsIDc5LCA2NywgNzUsIAotICAgIDY5LCAxOTYsIDczLCA3OCwgODQsIDY5LCA4MiwgNzYsIDczLCA3OCwgNjksIDY1LCAyMTAsIDczLCA3OCwgODQsIDY5LCA4MiwgCi0gICAgNzYsIDY1LCA2NywgNjksIDE5NiwgNzMsIDc4LCA4NCwgNjksIDgyLCA3MywgNzksIDIxMCwgNzMsIDc4LCA4NCwgNjksIDgyLCAKLSAgICA2OSwgODMsIDIxMiwgNzMsIDc4LCA4NCwgNjksIDgyLCA2NywgNjUsIDc2LCA2NSwgODQsIDY5LCAxMjgsIDczLCA3OCwgODQsIAotICAgIDY5LCA3MSwgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3MywgNzgsIDg0LCA2OSwgNzEsIDgyLCA2NSwgODQsIDczLCAKLSAgICA3OSwgMjA2LCA3MywgNzgsIDg0LCA2OSwgNzEsIDgyLCA2NSwgNzYsIDEyOCwgNzMsIDc4LCA4NCwgNjksIDcxLCA4MiwgNjUsIAotICAgIDIwNCwgNzMsIDc4LCA4MywgODUsIDc2LCA2NSwgMjEwLCA3MywgNzgsIDgzLCA4NCwgODIsIDg1LCA3NywgNjksIDc4LCA4NCwgCi0gICAgNjUsIDIwNCwgNzMsIDc4LCA4MywgNzMsIDY4LCA2OSwgMTI4LCA3MywgNzgsIDgzLCA3MywgNjgsIDE5NywgNzMsIDc4LCAKLSAgICA4MywgNjksIDgyLCA4NCwgNzMsIDc5LCAyMDYsIDczLCA3OCwgODMsIDY5LCA2NywgODQsIDEyOCwgNzMsIDc4LCA4MywgNjcsIAotICAgIDgyLCA3MywgODAsIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCA3MywgNzgsIDgwLCA4NSwgMjEyLCA3MywgNzgsIDc4LCA3OSwgCi0gICAgNjcsIDY5LCA3OCwgNjcsIDY5LCAxMjgsIDczLCA3OCwgNzgsIDc4LCAxMjgsIDczLCA3OCwgNzgsIDY5LCA4MiwgMTI4LCAKLSAgICA3MywgNzgsIDc4LCA2OSwgMjEwLCA3MywgNzgsIDc4LCAxMjgsIDczLCA3OCwgNzMsIDc4LCA3MSwgODUsIDEyOCwgNzMsIAotICAgIDc4LCA3MywgMTI4LCA3MywgNzgsIDcyLCA3MywgNjYsIDczLCAyMTIsIDczLCA3OCwgNzIsIDY5LCA4MiwgNjksIDc4LCAKLSAgICAyMTIsIDczLCA3OCwgNzIsIDY1LCA3NiwgNjksIDEyOCwgNzMsIDc4LCA3MSwgODcsIDY1LCA5MCwgMTI4LCA3MywgNzgsIAotICAgIDcwLCA3OSwgODIsIDc3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MywgNzgsIDcwLCA3NiwgODUsIDY5LCA3OCwgNjcsIDY5LCAKLSAgICAxMjgsIDczLCA3OCwgNzAsIDczLCA3OCwgNzMsIDg0LCA4OSwgMTI4LCA3MywgNzgsIDcwLCA3MywgNzgsIDczLCA4NCwgCi0gICAgMjE3LCA3MywgNzgsIDY4LCA4NSwgODMsIDg0LCA4MiwgNzMsIDY1LCAyMDQsIDczLCA3OCwgNjgsIDczLCA4MiwgNjksIDY3LCAKLSAgICAyMTIsIDczLCA3OCwgNjgsIDczLCA2NywgNjUsIDg0LCA3OSwgODIsIDEyOCwgNzMsIDc4LCA2OCwgNzMsIDY3LCA2NSwgODQsIAotICAgIDc5LCAyMTAsIDczLCA3OCwgNjgsIDczLCAxOTUsIDczLCA3OCwgNjgsIDczLCA2NSwgMjA2LCA3MywgNzgsIDY4LCA2OSwgCi0gICAgODgsIDEyOCwgNzMsIDc4LCA2OCwgNjksIDgwLCA2OSwgNzgsIDY4LCA2OSwgNzgsIDIxMiwgNzMsIDc4LCA2NywgODIsIDY5LCAKLSAgICA3NywgNjksIDc4LCA4NCwgMTI4LCA3MywgNzgsIDY3LCA4MiwgNjksIDY1LCA4MywgNjksIDIxMSwgNzMsIDc4LCA2NywgODIsIAotICAgIDY5LCA2NSwgODMsIDY5LCAxMjgsIDczLCA3OCwgNjcsIDgyLCA2OSwgNjUsIDgzLCAxOTcsIDczLCA3OCwgNjcsIDc5LCA3NywgCi0gICAgODAsIDc2LCA2OSwgODQsIDE5NywgNzMsIDc4LCA2NywgNzksIDc3LCA3MywgNzgsIDE5OSwgNzMsIDc4LCA2NywgNzYsIDg1LCAKLSAgICA2OCwgNzMsIDc4LCAxOTksIDczLCA3OCwgNjcsIDcyLCAxMjgsIDczLCA3OCwgNjYsIDc5LCAyMTYsIDczLCA3OCwgNjUsIAotICAgIDgwLCAxMjgsIDczLCA3OCwgNDUsIDY1LCA3NiwgNjUsIDcwLCAxMjgsIDczLCA3NywgODAsIDY5LCA4MiwgNzMsIDY1LCAKLSAgICAyMDQsIDczLCA3NywgODAsIDY5LCA4MiwgNzAsIDY5LCA2NywgODQsIDg1LCAyMDUsIDczLCA3NywgODAsIDY5LCA4MiwgNzAsIAotICAgIDY5LCA2NywgODQsIDY1LCAxMjgsIDczLCA3NywgODAsIDY5LCA4MiwgNzAsIDY5LCA2NywgODQsIDE5MywgNzMsIDc3LCA3OCwgCi0gICAgMTI4LCA3MywgNzcsIDczLCA4MywgNjksIDc5LCAyMTEsIDczLCA3NywgNzMsIDc4LCA1MSwgMTI4LCA3MywgNzcsIDczLCAKLSAgICA3OCwgMTI4LCA3MywgNzcsIDczLCAyMDYsIDczLCA3NywgNzMsIDcwLCA4NCwgNzIsIDc5LCA4MiwgNzksIDc4LCAxMjgsIAotICAgIDczLCA3NywgNzMsIDcwLCA4NCwgNzIsIDc5LCA4MiwgNjUsIDEyOCwgNzMsIDc3LCA3MywgNzAsIDc5LCA3OCwgNzksIDc4LCAKLSAgICAxMjgsIDczLCA3NywgNzMsIDY4LCA3MywgNjUsIDgyLCA3MSwgNzksIDc4LCAxMjgsIDczLCA3NywgNjUsIDcxLCAxOTcsIAotICAgIDczLCA3NiwgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgNzYsIDg1LCA4OSwgMTI4LCA3MywgNzYsIDg1LCA4NSwgCi0gICAgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDczLCA3NiwgODUsIDg0LCAxMjgsIDczLCA3NiwgNzMsIDc3LCA3NywgODUsIDUyLCAKLSAgICAxMjgsIDczLCA3NiwgNzMsIDc3LCA3NywgODUsIDUxLCAxMjgsIDczLCA3NiwgNzMsIDc3LCA3NywgODUsIDEyOCwgNzMsIAotICAgIDc2LCA3MywgNzcsIDc3LCAyMTMsIDczLCA3NiwgNTAsIDEyOCwgNzMsIDc1LCA2NSwgODIsIDY1LCAxMjgsIDczLCA3NSwgCi0gICAgNjUsIDgyLCAxOTMsIDczLCA3NCwgMTI4LCA3MywgNzMsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgNzEsIDczLCAKLSAgICAxMjgsIDczLCA3MSwgMjAxLCA3MywgNzEsIDcxLCA4NywgODMsIDEyOCwgNzMsIDcwLCA3MywgNzgsIDEyOCwgNzMsIDY5LCAKLSAgICA4NSwgNzgsIDcxLCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4NCwgCi0gICAgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIAotICAgIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAKLSAgICAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIAotICAgIDQ1LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA3NSwgNzMsIDg5LCAKLSAgICA2OSwgNzksIDc1LCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDc1LCA3MiwgNzMsIDY5LCA4NSwgNzUsIDcyLCAxMjgsIAotICAgIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCAKLSAgICA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA3MywgNjksIDg1LCA3OCwgMTk5LCA3MywgNjgsIDc2LCA2OSwgCi0gICAgMTI4LCA3MywgNjgsIDczLCA3NywgMTI4LCA3MywgNjgsIDczLCAyMDUsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA2OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA2OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA2NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIAotICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA2NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIAotICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA2NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIAotICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA2NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA2NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA2NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIAotICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA2NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA2NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIAotICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIAotICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIAotICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIAotICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1NCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1NCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1MywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIAotICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1MywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1MywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1MiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIAotICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1MiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIAotICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1MiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIAotICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1MSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1MSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIAotICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA1MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA0OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIAotICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA0OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIAotICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA0OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIAotICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA0OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDY1LCA0OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA3MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIAotICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA3MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA3MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA2OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIAotICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA2OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIAotICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA2OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIAotICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA2OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA2OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA2NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIAotICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA2NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA2NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA2NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIAotICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA2NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIAotICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA2NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIAotICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA2NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA2NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIAotICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIAotICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIAotICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIAotICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1NCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIAotICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1NCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1NCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1MywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIAotICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1MywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIAotICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1MywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIAotICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1MiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1MiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1MSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIAotICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1MSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1MSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIAotICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIAotICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA1MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIAotICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA0OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA0OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIAotICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNzAsIDU3LCA0OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTcsIDQ4LCA1MiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU2LCA2OCwgNTUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1NiwgNjcsIDY1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTYsIDU3LCA2OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA2OCwgNTIsIAotICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNjUsIDU1LCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDU3LCA1NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA1NCwgNjgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1NSwgNTMsIDUxLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTUsIDUzLCA0OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA0OSwgNTAsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNDgsIDY2LCA1NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDcwLCA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA2OSwgNTYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1NCwgNTUsIDUwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTQsIDU1LCA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1NSwgNDgsIAotICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTQsIDUwLCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUzLCA2NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MywgNTcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1NCwgNTMsIDUzLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTQsIDUxLCA1MywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MSwgNDgsIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTAsIDU3LCA1MywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUwLCA1MywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MCwgNTIsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MywgNzAsIDU2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTMsIDY4LCA2OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA2NiwgNTYsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNjYsIDUzLCA1NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDU3LCA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1NywgNDksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MywgNTYsIDcwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTMsIDUzLCA2NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MiwgNTEsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTIsIDQ4LCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUxLCA3MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MSwgNjcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MywgNTAsIDY4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTMsIDUwLCA1NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MCwgNTIsIAotICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTAsIDQ5LCA2OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDQ5LCA1NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUyLCA2OSwgNjUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MiwgNjksIDU2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCi0gICAgNTIsIDY5LCA1MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUyLCA2OSwgNDgsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MiwgNjksIDQ4LCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDY4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNjUsIDQ5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgCi0gICAgNDksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTQsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1MywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNjUsIDQ4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgCi0gICAgNDgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNjgsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDY2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNjUsIDQ4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgCi0gICAgNDgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTIsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1MSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDUwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDcwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNzAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNjYsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDU3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDcwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNzAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTAsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA0OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDY5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNjksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTcsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDU1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDY5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNjksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNDgsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA3MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDY5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDY4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNjgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTUsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDUzLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDY4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNjcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNjksIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA2OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDY3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDY3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNjcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTMsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDUxLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDY2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNjYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNjcsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA2NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDY1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDY2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNjYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTEsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDY1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNjUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNjUsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDU2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDY1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNjUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNDksIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDcwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDU3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTYsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDU0LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDU3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNzAsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDY4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDU2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTQsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1MywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDUyLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDU1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNjgsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDY2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDU1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTIsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1MSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDUwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDU0LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTQsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNjYsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDU3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDU0LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTQsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTAsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA0OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDQ4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1MywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDUzLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTMsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTcsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDU1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDUzLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTMsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNDgsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA3MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDY5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDUyLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTIsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTUsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDUzLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDUyLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTEsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNjksIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA2OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDY3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDUxLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTEsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTMsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDUxLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDUwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNjcsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA2NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDY1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDUwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNTAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTEsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDQ5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNDksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNjUsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDU2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDQ5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNDksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNDksIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDcwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDQ4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTYsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDU0LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTcsIDQ4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCi0gICAgNDgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNzAsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDY4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDcwLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNzAsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTQsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1MywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDUyLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDY5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNjksIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNjgsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDY2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDY5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNjksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTIsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1MSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDUwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDY4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNjgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNjYsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDU3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDY4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNjgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTAsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA0OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA2NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDY3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNjcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTcsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDU1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDY3LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNjcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNDgsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA3MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDY5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDY2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNjYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTUsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDUzLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDY2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNjUsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNjksIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA2OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDY3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDY1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNjUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTMsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDUxLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDU3LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTcsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNjcsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA2NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDY1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDU3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTEsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDU2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTYsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNjUsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDU2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDU2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNDksIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA0OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDcwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDU1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTUsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTYsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDU0LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDU1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNzAsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA2OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDY4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDU0LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTQsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTQsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1MywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDUyLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDUzLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTMsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNjgsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA2NywgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDY2LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDUzLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTMsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTIsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1MSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDUwLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDUyLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTIsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNjYsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA2NSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDU3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDUyLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTIsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTAsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA0OSwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDQ4LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDUxLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTEsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTcsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDU1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDUxLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTEsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNDgsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA3MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDY5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDUwLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNTAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTUsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1NCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDUzLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDUwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNDksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNjksIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA2OCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDY3LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDQ5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNDksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTMsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1MiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDQ4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNDgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNjcsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA2NiwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDY1LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKLSAgICA3MCwgNTYsIDQ4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCi0gICAgNDgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTEsIAotICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1MCwgMTI4LCA3MywgCi0gICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIAotICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzgsIDg0LCAKLSAgICA3MywgNzAsIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDczLCA2OCwgNjksIDc4LCA4NCwgNzMsIDY3LCA2NSwgCi0gICAgMjA0LCA3MywgNjcsIDc5LCA3OCwgMTI4LCA3MywgNjcsIDcyLCA3OSwgODUsIDEyOCwgNzMsIDY3LCA3MiwgNzksIDgzLCAKLSAgICAxMjgsIDczLCA2NywgNzIsIDczLCA3NywgNjUsIDg0LCA3OSwgODMsIDEyOCwgNzMsIDY3LCA3MiwgNjUsIDY4LCA3MywgNzgsIAotICAgIDEyOCwgNzMsIDY3LCA2OSwgNzYsIDY1LCA3OCwgNjgsIDczLCA2NywgNDUsIDg5LCA4MiwgMTI4LCA3MywgNjYsIDczLCA3MCwgCi0gICAgNzMsIDc2LCA3MywgMTI4LCA3MywgNjUsIDg1LCA2OCwgNjUsIDEyOCwgNzMsIDQ4LCA0OSwgNTMsIDEyOCwgNzMsIDQ4LCAKLSAgICA0OSwgNTIsIDEyOCwgNzMsIDQ4LCA0OSwgNTEsIDEyOCwgNzMsIDQ4LCA0OSwgNTAsIDEyOCwgNzMsIDQ4LCA0OSwgNDksIAotICAgIDY1LCAxMjgsIDczLCA0OCwgNDksIDQ5LCAxMjgsIDczLCA0OCwgNDksIDQ4LCA2NSwgMTI4LCA3MywgNDgsIDQ5LCA0OCwgCi0gICAgMTI4LCA3MywgNDgsIDQ4LCA1NywgNjUsIDEyOCwgNzMsIDQ4LCA0OCwgNTcsIDEyOCwgNzMsIDQ4LCA0OCwgNTYsIDEyOCwgCi0gICAgNzMsIDQ4LCA0OCwgNTUsIDEyOCwgNzMsIDQ4LCA0OCwgNTQsIDEyOCwgNzMsIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDczLCAKLSAgICA0OCwgNDgsIDUzLCAxMjgsIDczLCA0OCwgNDgsIDUyLCAxMjgsIDczLCA0OCwgNDgsIDUxLCAxMjgsIDczLCA0OCwgNDgsIAotICAgIDUwLCAxMjgsIDczLCA0OCwgNDgsIDQ5LCAxMjgsIDczLCA0NSwgODksIDg1LCAxMjgsIDczLCA0NSwgODksIDc5LCAxMjgsIAotICAgIDczLCA0NSwgODksIDY5LCA3OSwgMTI4LCA3MywgNDUsIDg5LCA2OSwgMTI4LCA3MywgNDUsIDg5LCA2NSwgNjksIDEyOCwgCi0gICAgNzMsIDQ1LCA4OSwgNjUsIDQ1LCA3OSwgMTI4LCA3MywgNDUsIDg5LCA2NSwgMTI4LCA3MywgNDUsIDc5LCA0NSwgNzMsIAotICAgIDEyOCwgNzMsIDQ1LCA3OSwgMTI4LCA3MywgNDUsIDY5LCA4NSwgMTI4LCA3MywgNDUsIDY2LCA2OSwgNjUsIDc3LCAxMjgsIAotICAgIDczLCA0NSwgNjUsIDgyLCA2NSwgNjksIDY1LCAxMjgsIDczLCA0NSwgNjUsIDEyOCwgNzIsIDkwLCA5MCwgOTAsIDcxLCAKLSAgICAxMjgsIDcyLCA5MCwgOTAsIDkwLCAxMjgsIDcyLCA5MCwgOTAsIDgwLCAxMjgsIDcyLCA5MCwgOTAsIDEyOCwgNzIsIDkwLCAKLSAgICA4NywgNzEsIDEyOCwgNzIsIDkwLCA4NywgMTI4LCA3MiwgOTAsIDg0LCAxMjgsIDcyLCA5MCwgNzEsIDEyOCwgNzIsIDg5LCAKLSAgICA4MywgODQsIDY5LCA4MiwgNjksIDgzLCA3MywgMjExLCA3MiwgODksIDgwLCA3OSwgNjgsIDczLCA2NSwgODMsIDg0LCA3OSwgCi0gICAgNzYsIDY5LCAxMjgsIDcyLCA4OSwgODAsIDcyLCA2OSwgNzgsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDcyLCA4OSwgODAsIDcyLCAKLSAgICA2OSwgNzgsIDQ1LCA3NywgNzMsIDc4LCA4NSwgODMsIDEyOCwgNzIsIDg5LCA4MCwgNzIsIDY5LCA3OCwgMTI4LCA3MiwgODksIAotICAgIDgwLCA3MiwgNjksIDIwNiwgNzIsIDg5LCA3MSwgNzMsIDY5LCA3MywgNjUsIDEyOCwgNzIsIDg4LCA4NywgNzEsIDEyOCwgCi0gICAgNzIsIDg4LCA4NSwgNzksIDg4LCAxMjgsIDcyLCA4OCwgODUsIDc5LCA4NCwgMTI4LCA3MiwgODgsIDg1LCA3OSwgODAsIAotICAgIDEyOCwgNzIsIDg4LCA4NSwgNzksIDEyOCwgNzIsIDg4LCA3OSwgODgsIDEyOCwgNzIsIDg4LCA3OSwgODQsIDEyOCwgNzIsIAotICAgIDg4LCA3OSwgODAsIDEyOCwgNzIsIDg4LCA3OSwgMTI4LCA3MiwgODgsIDczLCA4OCwgMTI4LCA3MiwgODgsIDczLCA4NCwgCi0gICAgMTI4LCA3MiwgODgsIDczLCA4MCwgMTI4LCA3MiwgODgsIDczLCA2OSwgODgsIDEyOCwgNzIsIDg4LCA3MywgNjksIDg0LCAKLSAgICAxMjgsIDcyLCA4OCwgNzMsIDY5LCA4MCwgMTI4LCA3MiwgODgsIDczLCA2OSwgMTI4LCA3MiwgODgsIDczLCAxMjgsIDcyLCAKLSAgICA4OCwgNjksIDg4LCAxMjgsIDcyLCA4OCwgNjksIDgwLCAxMjgsIDcyLCA4OCwgNjksIDEyOCwgNzIsIDg4LCA2NSwgODgsIAotICAgIDEyOCwgNzIsIDg4LCA2NSwgODQsIDEyOCwgNzIsIDg4LCA2NSwgODAsIDEyOCwgNzIsIDg4LCA2NSwgMTI4LCA3MiwgODcsIAotICAgIDg1LCAxMjgsIDcyLCA4NywgNjUsIDczLCA4MiwgMTI4LCA3MiwgODcsIDY1LCA3MiwgMTI4LCA3MiwgODYsIDEyOCwgNzIsIAotICAgIDg1LCA4NiwgNjUsIDEyOCwgNzIsIDg1LCA4MywgNzIsIDY5LCAxOTYsIDcyLCA4NSwgODMsIDcyLCAxMjgsIDcyLCA4NSwgCi0gICAgODIsIDY1LCA3OCwgMTI4LCA3MiwgODUsIDc5LCA4NCwgMTI4LCA3MiwgODUsIDc4LCA2OCwgODIsIDY5LCA2OCwgODMsIAotICAgIDEyOCwgNzIsIDg1LCA3OCwgNjgsIDgyLCA2OSwgNjgsIDEyOCwgNzIsIDg1LCA3OCwgNjgsIDgyLCA2OSwgMTk2LCA3MiwgCi0gICAgODUsIDc4LCAxMjgsIDcyLCA4NSwgNzcsIDIwOCwgNzIsIDg1LCA3NywgNjUsIDc4LCAxMjgsIDcyLCA4NSwgNzcsIDY1LCAKLSAgICAyMDYsIDcyLCA4NSwgNzYsIDUwLCAxMjgsIDcyLCA4NSwgNzMsIDczLCA4NCwgNzksIDEyOCwgNzIsIDg1LCA3MSwgNzEsIAotICAgIDczLCA3OCwgMTk5LCA3MiwgODUsIDY2LCA1MCwgMTI4LCA3MiwgODUsIDY2LCAxNzgsIDcyLCA4NSwgNjYsIDEyOCwgNzIsIAotICAgIDg1LCA2NSwgODIsIDY1LCA2OCwgNjgsIDc5LCAxMjgsIDcyLCA4NSwgNjUsIDc4LCAxMjgsIDcyLCA4NCwgODMsIDEyOCwgCi0gICAgNzIsIDg0LCA3NCwgMTI4LCA3MiwgODIsIDg5LCA4NiwgNzgsIDczLCAxOTMsIDcyLCA4MCwgODcsIDcxLCAxMjgsIDcyLCAKLSAgICA4MCwgNjUsIDEyOCwgNzIsIDgwLCAxMjgsIDcyLCA3OSwgODUsIDgzLCAxOTcsIDcyLCA3OSwgODUsIDgyLCA3MSwgNzYsIAotICAgIDY1LCA4MywgODMsIDEyOCwgNzIsIDc5LCA4NSwgODIsIDcxLCA3NiwgNjUsIDgzLCAyMTEsIDcyLCA3OSwgODUsIDgyLCAKLSAgICAxMjgsIDcyLCA3OSwgODUsIDIxMCwgNzIsIDc5LCA4NCwgNjksIDc2LCAxMjgsIDcyLCA3OSwgODQsIDY1LCAxMjgsIDcyLCAKLSAgICA3OSwgODMsIDgwLCA3MywgODQsIDY1LCA3NiwgMTI4LCA3MiwgNzksIDgyLCA4MywgNjksIDEyOCwgNzIsIDc5LCA4MiwgODMsIAotICAgIDE5NywgNzIsIDc5LCA4MiwgODIsIDEyOCwgNzIsIDc5LCA4MiwgNzgsIDgzLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgCi0gICAgNzksIDc4LCA4NCwgNjUsIDc2LCA3NiwgMjE3LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIAotICAgIDQ4LCA1NCwgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCAKLSAgICA1NCwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgCi0gICAgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIAotICAgIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCAKLSAgICA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA0OSwgCi0gICAgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA0OCwgMTI4LCAKLSAgICA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgCi0gICAgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIAotICAgIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCAKLSAgICA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgCi0gICAgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIAotICAgIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCAKLSAgICA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgCi0gICAgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIAotICAgIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCAKLSAgICA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgCi0gICAgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIAotICAgIDQ4LCA1MiwgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCAKLSAgICA1MiwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgCi0gICAgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIAotICAgIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCAKLSAgICA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MiwgCi0gICAgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MSwgMTI4LCAKLSAgICA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgCi0gICAgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIAotICAgIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCAKLSAgICA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgCi0gICAgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIAotICAgIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCAKLSAgICA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgCi0gICAgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIAotICAgIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCAKLSAgICA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgCi0gICAgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIAotICAgIDQ4LCA0OSwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCAKLSAgICA0OSwgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgCi0gICAgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIAotICAgIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCAKLSAgICA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA0OCwgCi0gICAgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1NCwgMTI4LCAKLSAgICA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgCi0gICAgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIAotICAgIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCAKLSAgICA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgCi0gICAgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIAotICAgIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCAKLSAgICA3OCwgODQsIDY1LCA3NiwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCAyMDQsIDcyLCA3OSwgODIsIAotICAgIDczLCAxMjgsIDcyLCA3OSwgODIsIDE5MywgNzIsIDc5LCA3OSwgODUsIDEyOCwgNzIsIDc5LCA3OSwgODIsIDg1LCAxMjgsIAotICAgIDcyLCA3OSwgNzksIDgwLCAxMjgsIDcyLCA3OSwgNzksIDc4LCAxMjgsIDcyLCA3OSwgNzksIDc1LCA2OSwgNjgsIDEyOCwgCi0gICAgNzIsIDc5LCA3OSwgNzUsIDY5LCAxOTYsIDcyLCA3OSwgNzgsIDY5LCA4OSwgNjYsIDY5LCA2OSwgMTI4LCA3MiwgNzksIDc4LCAKLSAgICA2OSwgMjE3LCA3MiwgNzksIDc3LCA3OSwgODQsIDcyLCA2OSwgODQsIDczLCA2NywgMTI4LCA3MiwgNzksIDc3LCA3OSwgODQsIAotICAgIDcyLCA2OSwgODQsIDczLCAxOTUsIDcyLCA3OSwgNzYsIDc5LCAxMjgsIDcyLCA3OSwgNzYsIDc2LCA3OSwgMjE1LCA3MiwgCi0gICAgNzksIDc2LCA2OSwgMTI4LCA3MiwgNzksIDc2LCA2OCwgNzMsIDc4LCAxOTksIDcyLCA3OSwgNzYsIDY1LCA3NywgMTI4LCAKLSAgICA3MiwgNzksIDc2LCA2NSwgMjA1LCA3MiwgNzksIDc1LCA2NSwgMTI4LCA3MiwgNzksIDY3LCA3NSwgNjksIDIxNywgNzIsIAotICAgIDc5LCA2NywgNzIsIDc5LCAxMjgsIDcyLCA3OCwgODUsIDg0LCAxMjgsIDcyLCA3OCwgODUsIDc5LCA4OCwgMTI4LCA3MiwgCi0gICAgNzgsIDg1LCA3OSwgMTI4LCA3MiwgNzgsIDg1LCA2NiwgMTI4LCA3MiwgNzgsIDc5LCA4OCwgMTI4LCA3MiwgNzgsIDc5LCAKLSAgICA4NCwgMTI4LCA3MiwgNzgsIDc5LCA4MCwgMTI4LCA3MiwgNzgsIDczLCA4OCwgMTI4LCA3MiwgNzgsIDczLCA4NCwgMTI4LCAKLSAgICA3MiwgNzgsIDczLCA4MCwgMTI4LCA3MiwgNzgsIDczLCA2OSwgODgsIDEyOCwgNzIsIDc4LCA3MywgNjksIDg0LCAxMjgsIAotICAgIDcyLCA3OCwgNzMsIDY5LCA4MCwgMTI4LCA3MiwgNzgsIDczLCA2OSwgMTI4LCA3MiwgNzgsIDczLCAxMjgsIDcyLCA3OCwgCi0gICAgNjksIDg4LCAxMjgsIDcyLCA3OCwgNjksIDgwLCAxMjgsIDcyLCA3OCwgNjksIDEyOCwgNzIsIDc4LCA2NSwgODgsIDEyOCwgCi0gICAgNzIsIDc4LCA2NSwgODUsIDEyOCwgNzIsIDc4LCA2NSwgODQsIDEyOCwgNzIsIDc4LCA2NSwgODAsIDEyOCwgNzIsIDc4LCAKLSAgICA2NSwgMTI4LCA3MiwgNzcsIDg5LCA4OCwgMTI4LCA3MiwgNzcsIDg5LCA4MiwgODgsIDEyOCwgNzIsIDc3LCA4OSwgODIsIAotICAgIDEyOCwgNzIsIDc3LCA4OSwgODAsIDEyOCwgNzIsIDc3LCA4OSwgMTI4LCA3MiwgNzcsIDg1LCA4OCwgMTI4LCA3MiwgNzcsIAotICAgIDg1LCA4NCwgMTI4LCA3MiwgNzcsIDg1LCA4MiwgODgsIDEyOCwgNzIsIDc3LCA4NSwgODIsIDEyOCwgNzIsIDc3LCA4NSwgCi0gICAgODAsIDEyOCwgNzIsIDc3LCA4NSwgNzksIDg4LCAxMjgsIDcyLCA3NywgODUsIDc5LCA4MCwgMTI4LCA3MiwgNzcsIDg1LCAKLSAgICA3OSwgMTI4LCA3MiwgNzcsIDg1LCAxMjgsIDcyLCA3NywgNzksIDg4LCAxMjgsIDcyLCA3NywgNzksIDg0LCAxMjgsIDcyLCAKLSAgICA3NywgNzksIDgwLCAxMjgsIDcyLCA3NywgNzksIDEyOCwgNzIsIDc3LCA3MywgODgsIDEyOCwgNzIsIDc3LCA3MywgODQsIAotICAgIDEyOCwgNzIsIDc3LCA3MywgODAsIDEyOCwgNzIsIDc3LCA3MywgNjksIDg4LCAxMjgsIDcyLCA3NywgNzMsIDY5LCA4MCwgCi0gICAgMTI4LCA3MiwgNzcsIDczLCA2OSwgMTI4LCA3MiwgNzcsIDczLCAxMjgsIDcyLCA3NywgNjksIDEyOCwgNzIsIDc3LCA2NSwgCi0gICAgODgsIDEyOCwgNzIsIDc3LCA2NSwgODQsIDEyOCwgNzIsIDc3LCA2NSwgODAsIDEyOCwgNzIsIDc3LCA2NSwgMTI4LCA3MiwgCi0gICAgNzYsIDg5LCA4OCwgMTI4LCA3MiwgNzYsIDg5LCA4NCwgMTI4LCA3MiwgNzYsIDg5LCA4MiwgODgsIDEyOCwgNzIsIDc2LCAKLSAgICA4OSwgODIsIDEyOCwgNzIsIDc2LCA4OSwgODAsIDEyOCwgNzIsIDc2LCA4OSwgMTI4LCA3MiwgNzYsIDg1LCA4OCwgMTI4LCAKLSAgICA3MiwgNzYsIDg1LCA4NCwgMTI4LCA3MiwgNzYsIDg1LCA4MiwgODgsIDEyOCwgNzIsIDc2LCA4NSwgODIsIDEyOCwgNzIsIAotICAgIDc2LCA4NSwgODAsIDEyOCwgNzIsIDc2LCA4NSwgNzksIDg4LCAxMjgsIDcyLCA3NiwgODUsIDc5LCA4MCwgMTI4LCA3MiwgCi0gICAgNzYsIDg1LCA3OSwgMTI4LCA3MiwgNzYsIDg1LCAxMjgsIDcyLCA3NiwgNzksIDg4LCAxMjgsIDcyLCA3NiwgNzksIDgwLCAKLSAgICAxMjgsIDcyLCA3NiwgNzksIDEyOCwgNzIsIDc2LCA3MywgODgsIDEyOCwgNzIsIDc2LCA3MywgODQsIDEyOCwgNzIsIDc2LCAKLSAgICA3MywgODAsIDEyOCwgNzIsIDc2LCA3MywgNjksIDg4LCAxMjgsIDcyLCA3NiwgNzMsIDY5LCA4MCwgMTI4LCA3MiwgNzYsIAotICAgIDczLCA2OSwgMTI4LCA3MiwgNzYsIDczLCAxMjgsIDcyLCA3NiwgNjksIDg4LCAxMjgsIDcyLCA3NiwgNjksIDgwLCAxMjgsIAotICAgIDcyLCA3NiwgNjksIDEyOCwgNzIsIDc2LCA2NSwgODgsIDEyOCwgNzIsIDc2LCA2NSwgODUsIDEyOCwgNzIsIDc2LCA2NSwgCi0gICAgODQsIDEyOCwgNzIsIDc2LCA2NSwgODAsIDEyOCwgNzIsIDc2LCA2NSwgMTI4LCA3MiwgNzYsIDEyOCwgNzIsIDc1LCAxMjgsIAotICAgIDcyLCA3MywgOTAsIDY2LCAxMjgsIDcyLCA3MywgODksIDc5LCAxMjgsIDcyLCA3MywgODQsIDg0LCA3MywgNzgsIDE5OSwgCi0gICAgNzIsIDczLCA4MywgODQsIDc5LCA4MiwgNzMsIDE5NSwgNzIsIDczLCA4MiwgNzMsIDgxLCAxMjgsIDcyLCA3MywgNzgsIDcxLCAKLSAgICA2OSwgNjgsIDEyOCwgNzIsIDczLCA3OCwgNzEsIDY5LCAxOTYsIDcyLCA3MywgNzgsIDcxLCA2OSwgMTI4LCA3MiwgNzMsIAotICAgIDcxLCA3MiwgNDUsIDgzLCA4MCwgNjksIDY5LCAxOTYsIDcyLCA3MywgNzEsIDcyLCA0NSwgODIsIDY5LCA4NiwgNjksIDgyLCAKLSAgICA4MywgNjksIDY4LCA0NSwgMTg1LCA3MiwgNzMsIDcxLCA3MiwgNDUsIDc2LCA3OSwgMjE1LCA3MiwgNzMsIDcxLCA3MiwgNDUsIAotICAgIDcyLCA2OSwgNjksIDc2LCA2OSwgMTk2LCA3MiwgNzMsIDY5LCA4OCwgMTI4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA4MywgCi0gICAgNzMsIDc5LCA4MywgMTI4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgNzIsIDczLCAKLSAgICA2OSwgODUsIDcyLCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIDc4LCA3MywgCi0gICAgNjksIDg1LCA3OCwgMTI4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgNzIsIDczLCAKLSAgICA2OSwgODUsIDIwMCwgNzIsIDczLCA2OSwgODIsIDc5LCA3MSwgNzYsIDg5LCA4MCwgNzIsIDczLCAxOTUsIDcyLCA3MywgNjksIAotICAgIDEyOCwgNzIsIDczLCA2OCwgNzMsIDc4LCAxOTksIDcyLCA3MywgNjgsIDY5LCA4NCwgMTI4LCA3MiwgNzMsIDY4LCA2OSwgCi0gICAgMTI4LCA3MiwgNzMsIDY2LCA3MywgODMsIDY3LCA4NSwgODMsIDEyOCwgNzIsIDcyLCA4NywgNjUsIDEyOCwgNzIsIDcyLCAKLSAgICA4NSwgMTI4LCA3MiwgNzIsIDczLCAxMjgsIDcyLCA3MiwgNjksIDY5LCAxMjgsIDcyLCA3MiwgNjksIDEyOCwgNzIsIDcyLCAKLSAgICA2NSwgNjUsIDEyOCwgNzIsIDcxLCAxMjgsIDcyLCA2OSwgODksIDg0LCAxMjgsIDcyLCA2OSwgODgsIDczLCA3MCwgNzksIAotICAgIDgyLCAyMDUsIDcyLCA2OSwgODgsIDY1LCA3MSwgODIsIDY1LCAyMDUsIDcyLCA2OSwgODgsIDY1LCA3MSwgNzksIDc4LCAKKyAgICA3NiwgODksIDczLCA4NCwgMTI4LCA3NiwgODksIDczLCA3OCwgMTk5LCA3NiwgODksIDY4LCA3MywgNjUsIDIwNiwgNzYsIAorICAgIDg5LCA2NywgNzMsIDY1LCAyMDYsIDc2LCA4OCwgMTI4LCA3NiwgODcsIDc5LCA3OSwgMTI4LCA3NiwgODcsIDc5LCAxMjgsIAorICAgIDc2LCA4NywgNzMsIDczLCAxMjgsIDc2LCA4NywgNzMsIDEyOCwgNzYsIDg3LCA2OSwgMTI4LCA3NiwgODcsIDY1LCA2NSwgCisgICAgMTI4LCA3NiwgODcsIDY1LCAxMjgsIDc2LCA4NSwgODgsIDEyOCwgNzYsIDg1LCA4NSwgMTI4LCA3NiwgODUsIDg0LCAxMjgsIAorICAgIDc2LCA4NSwgODIsIDg4LCAxMjgsIDc2LCA4NSwgODAsIDEyOCwgNzYsIDg1LCA3OSwgODgsIDEyOCwgNzYsIDg1LCA3OSwgCisgICAgODQsIDEyOCwgNzYsIDg1LCA3OSwgODAsIDEyOCwgNzYsIDg1LCA3OSwgMTI4LCA3NiwgODUsIDc4LCA3MSwgODMsIDczLCAKKyAgICAxMjgsIDc2LCA4NSwgNzgsIDY1LCA4NCwgMTk3LCA3NiwgODUsIDIwNSwgNzYsIDg1LCA3NiwgMTI4LCA3NiwgODUsIDczLCAKKyAgICA4MywgMTI4LCA3NiwgODUsIDcyLCA4NSwgODIsIDEyOCwgNzYsIDg1LCA3MiwgMTI4LCA3NiwgODUsIDIwMCwgNzYsIDg1LCAKKyAgICA3MSwgNzEsIDY1LCA3MSwgNjksIDEyOCwgNzYsIDg1LCA3MSwgNjUsIDc2LCAxMjgsIDc2LCA4NSwgNzEsIDY1LCAyMDQsIAorICAgIDc2LCA4NSwgNjksIDEyOCwgNzYsIDg1LCAxOTcsIDc2LCA4NSwgNjYsIDEyOCwgNzYsIDg1LCA2NSwgNjksIDgwLCAxMjgsIAorICAgIDc2LCA4NSwgNTEsIDEyOCwgNzYsIDg1LCA1MCwgMTI4LCA3NiwgODUsIDE3OCwgNzYsIDgyLCA3OSwgMTI4LCA3NiwgODIsIAorICAgIDc3LCAxMjgsIDc2LCA4MiwgNzMsIDEyOCwgNzYsIDgyLCA2OSwgMTI4LCA3NiwgNzksIDkwLCA2OSwgNzgsIDcxLCA2OSwgCisgICAgMTI4LCA3NiwgNzksIDkwLCA2OSwgNzgsIDcxLCAxOTcsIDc2LCA3OSwgODgsIDEyOCwgNzYsIDc5LCA4NywgNjksIDgyLCAKKyAgICA2OSwgMTk2LCA3NiwgNzksIDg3LCA2OSwgMjEwLCA3NiwgNzksIDg3LCA0NSwgODIsIDY5LCA4NiwgNjksIDgyLCA4MywgNjksIAorICAgIDY4LCA0NSwgMTg1LCA3NiwgNzksIDg3LCA0NSwgNzcsIDczLCAxOTYsIDc2LCA3OSwgODcsIDQ1LCA3MCwgNjUsIDc2LCA3NiwgCisgICAgNzMsIDc4LCAxOTksIDc2LCA3OSwgODcsIDQ1LCAxODUsIDc2LCA3OSwgODYsIDE5NywgNzYsIDc5LCA4NSwgODIsIDY5LCAKKyAgICAxMjgsIDc2LCA3OSwgODUsIDY4LCA4MywgODAsIDY5LCA2NSwgNzUsIDY5LCA4MiwgMTI4LCA3NiwgNzksIDg1LCA2OCwgNzYsIAorICAgIDIxNywgNzYsIDc5LCA4NCwgODUsIDgzLCAxMjgsIDc2LCA3OSwgODQsIDEyOCwgNzYsIDc5LCA4MywgODMsIDc2LCA2OSwgCisgICAgODMsIDgzLCAxMjgsIDc2LCA3OSwgODIsIDgyLCA4OSwgMTI4LCA3NiwgNzksIDgyLCA4MiwgNjUsIDczLCA3OCwgNjksIAorICAgIDEyOCwgNzYsIDc5LCA4MSwgMTI4LCA3NiwgNzksIDgwLCAxMjgsIDc2LCA3OSwgNzksIDg0LCAxMjgsIDc2LCA3OSwgNzksIAorICAgIDgwLCA2OSwgMTk2LCA3NiwgNzksIDc5LCA4MCwgMTI4LCA3NiwgNzksIDc5LCAyMDgsIDc2LCA3OSwgNzksIDc4LCAxMjgsIAorICAgIDc2LCA3OSwgNzksIDIwMywgNzYsIDc5LCA3OSwgMTI4LCA3NiwgNzksIDc4LCA4MywgODUsIDc3LCAxMjgsIDc2LCA3OSwgCisgICAgNzgsIDcxLCA2NSwgMTI4LCA3NiwgNzksIDc4LCA3MSwgMTkzLCA3NiwgNzksIDc4LCA3MSwgNDUsIDc2LCA2OSwgNzEsIDcxLCAKKyAgICA2OSwgMTk2LCA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCA4OSwgODIsIDEyOCwgNzYsIAorICAgIDc5LCA3OCwgNzEsIDQ1LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCA0NSwgODMsIDc5LCAyMDQsIDc2LCA3OSwgNzgsIDcxLCAKKyAgICA0NSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNDUsIDc5LCA4MywgMjExLCA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgCisgICAgNjUsIDc4LCA2NywgNzIsIDQ1LCA3NywgNjUsIDY4LCAyMTAsIDc2LCA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCA2NSwgNzgsIAorICAgIDY3LCA3MiwgNDUsIDcyLCA2NSwgNzEsIDY1LCA3NiwgMjA0LCA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgNjUsIDc4LCAKKyAgICA2NywgNzIsIDQ1LCA2NSwgMjEwLCA3NiwgNzksIDc3LCA3NywgNjUsIDY5LCAxMjgsIDc2LCA3OSwgNzcsIDEyOCwgNzYsIAorICAgIDc5LCAyMDUsIDc2LCA3OSwgNzYsIDc2LCA3MywgODAsIDc5LCA4MCwgMTI4LCA3NiwgNzksIDc2LCA3NiwgMTI4LCA3NiwgCisgICAgNzksIDcxLCAyMTAsIDc2LCA3OSwgNzEsIDc5LCA4NCwgODksIDgwLCAxOTcsIDc2LCA3OSwgNzEsIDc5LCA3MSwgODIsIDY1LCAKKyAgICAyMDUsIDc2LCA3OSwgNzEsIDEyOCwgNzYsIDc5LCA2OCwgNjksIDgzLCA4NCwgNzksIDc4LCA2OSwgMTI4LCA3NiwgNzksIAorICAgIDY3LCA3OSwgNzcsIDc5LCA4NCwgNzMsIDg2LCA2OSwgMTI4LCA3NiwgNzksIDY3LCA3NSwgNzMsIDc4LCA3MSwgNDUsIDgzLCAKKyAgICA3MiwgNzMsIDcwLCAyMTIsIDc2LCA3OSwgNjcsIDIwMywgNzYsIDc5LCA2NywgNjUsIDg0LCA3MywgODYsIDY5LCAxMjgsIAorICAgIDc2LCA3OSwgNjcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgNDUsIDg3LCA2NSwgNzYsIDc2LCA4MCwgNzYsIDY1LCA3OCwgMTk3LCAKKyAgICA3NiwgNzksIDY3LCA2NSwgODQsIDczLCA3OSwgNzgsIDQ1LCA3MCwgNzYsIDc5LCA3OSwgODIsIDgwLCA3NiwgNjUsIDc4LCAKKyAgICAxOTcsIDc2LCA3OSwgNjcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDc2LCA3OSwgNjUsIDEyOCwgNzYsIDc4LCAxMjgsIDc2LCAKKyAgICA3NiwgODUsIDg1LCAxMjgsIDc2LCA3NiwgNzksIDc5LCAxMjgsIDc2LCA3NiwgNzYsIDg1LCA4NSwgMTI4LCA3NiwgNzYsIAorICAgIDc2LCA4NSwgMTI4LCA3NiwgNzYsIDc2LCA3OSwgNzksIDEyOCwgNzYsIDc2LCA3NiwgNzksIDEyOCwgNzYsIDc2LCA3NiwgCisgICAgNzMsIDczLCAxMjgsIDc2LCA3NiwgNzYsIDczLCAxMjgsIDc2LCA3NiwgNzYsIDY5LCA2OSwgMTI4LCA3NiwgNzYsIDc2LCAKKyAgICA2OSwgMTI4LCA3NiwgNzYsIDc2LCA2NSwgODUsIDEyOCwgNzYsIDc2LCA3NiwgNjUsIDczLCAxMjgsIDc2LCA3NiwgNzYsIAorICAgIDY1LCA2NSwgMTI4LCA3NiwgNzYsIDc2LCA2NSwgMTI4LCA3NiwgNzYsIDc2LCAxMjgsIDc2LCA3NCwgODUsIDY4LCA3MywgCisgICAgNzQsIDY5LCAxMjgsIDc2LCA3NCwgNjksIDEyOCwgNzYsIDc0LCAxMjgsIDc2LCA3MywgOTAsIDY1LCA4MiwgNjgsIDEyOCwgCisgICAgNzYsIDczLCA4OCwgMTI4LCA3NiwgNzMsIDg3LCA3OCwgMTI4LCA3NiwgNzMsIDg2LCA4MiwgMTk3LCA3NiwgNzMsIDg0LCAKKyAgICA4NCwgNzYsIDY5LCAxMjgsIDc2LCA3MywgODQsIDg0LCA3NiwgMTk3LCA3NiwgNzMsIDg0LCA4NCwgNjksIDIxMCwgNzYsIAorICAgIDczLCA4NCwgODIsIDE5MywgNzYsIDczLCA4NCwgMjAwLCA3NiwgNzMsIDgzLCAyMTMsIDc2LCA3MywgODMsIDEyOCwgNzYsIAorICAgIDczLCA4MiwgMTkzLCA3NiwgNzMsIDgxLCA4NSwgNzMsIDE5NiwgNzYsIDczLCA4MSwgMTI4LCA3NiwgNzMsIDgwLCA4MywgCisgICAgODQsIDczLCA2NywgNzUsIDEyOCwgNzYsIDczLCA4MCwgMjExLCA3NiwgNzMsIDIwOCwgNzYsIDczLCA3OCwgNzUsIDczLCAKKyAgICA3OCwgMTk5LCA3NiwgNzMsIDc4LCA3NSwgNjksIDE5NiwgNzYsIDczLCA3OCwgMjAzLCA3NiwgNzMsIDc4LCA3MSwgODMsIAorICAgIDY1LCAxMjgsIDc2LCA3MywgNzgsIDY5LCA4MywgMTI4LCA3NiwgNzMsIDc4LCA2OSwgMjExLCA3NiwgNzMsIDc4LCA2OSwgCisgICAgNDUsIDU3LCAxMjgsIDc2LCA3MywgNzgsIDY5LCA0NSwgNTUsIDEyOCwgNzYsIDczLCA3OCwgNjksIDQ1LCA1MSwgMTI4LCAKKyAgICA3NiwgNzMsIDc4LCA2OSwgNDUsIDQ5LCAxMjgsIDc2LCA3MywgNzcsIDc3LCA4NSwgNTIsIDEyOCwgNzYsIDczLCA3NywgNzcsIAorICAgIDg1LCA1MCwgMTI4LCA3NiwgNzMsIDc3LCA3NywgODUsIDEyOCwgNzYsIDczLCA3NywgNzcsIDIxMywgNzYsIDczLCA3NywgCisgICAgNzMsIDg0LCA2OSwgMTk2LCA3NiwgNzMsIDc3LCA3MywgODQsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3NiwgNzMsIDc3LCAKKyAgICA3MywgODQsIDEyOCwgNzYsIDczLCA3NywgNjksIDEyOCwgNzYsIDczLCA3NywgNjYsIDIxMywgNzYsIDczLCA3NywgNjYsIAorICAgIDIxMSwgNzYsIDczLCA3NywgMTk0LCA3NiwgNzMsIDc2LCA4OSwgMTI4LCA3NiwgNzMsIDc2LCA3MywgODQsIDcyLCAxMjgsIAorICAgIDc2LCA3MywgNzYsIDEyOCwgNzYsIDczLCA3MSwgNzIsIDg0LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA3NiwgNzMsIDcxLCA3MiwgCisgICAgODQsIDc4LCA3MywgNzgsIDE5OSwgNzYsIDczLCA3MSwgNzIsIDg0LCA3MiwgNzksIDg1LCA4MywgNjksIDEyOCwgNzYsIDczLCAKKyAgICA3MSwgNzIsIDg0LCAxMjgsIDc2LCA3MywgNzEsIDY1LCA4NCwgNzMsIDc4LCAxOTksIDc2LCA3MywgNzAsIDg0LCA2OSwgODIsIAorICAgIDEyOCwgNzYsIDczLCA3MCwgNjksIDEyOCwgNzYsIDczLCA2OSwgODgsIDEyOCwgNzYsIDczLCA2OSwgODQsIDEyOCwgNzYsIAorICAgIDczLCA2OSwgODAsIDEyOCwgNzYsIDczLCA2OSwgNjksIDEyOCwgNzYsIDczLCA2OSwgMTI4LCA3NiwgNzMsIDY4LCAxMjgsIAorICAgIDc2LCA3MywgNjcsIDc1LCA3MywgNzgsIDE5OSwgNzYsIDczLCA2NiwgODIsIDY1LCAxMjgsIDc2LCA3MywgNjYsIDY5LCA4MiwgCisgICAgODQsIDg5LCAxMjgsIDc2LCA3MywgNjUsIDY2LCA3MywgNzYsIDczLCA4NCwgMjE3LCA3NiwgNzIsIDczLCA3MywgMTI4LCAKKyAgICA3NiwgNzIsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDc2LCA3MiwgNjUsIDE5OSwgNzYsIDcyLCA2NSwgNjUsIAorICAgIDEyOCwgNzYsIDcyLCAxMjgsIDc2LCA2OSwgOTAsIDcyLCAxMjgsIDc2LCA2OSwgODgsIDEyOCwgNzYsIDY5LCA4NiwgNzMsIAorICAgIDg0LCA2NSwgODQsIDczLCA3OCwgNzEsIDEyOCwgNzYsIDY5LCA4NSwgNzcsIDEyOCwgNzYsIDY5LCA4NSwgNjUsIDY5LCA4MCwgCisgICAgMTI4LCA3NiwgNjksIDg1LCA2NSwgNjksIDc3LCAxMjgsIDc2LCA2OSwgODUsIDEyOCwgNzYsIDY5LCAyMTMsIDc2LCA2OSwgCisgICAgODQsIDg0LCA2OSwgODIsIDgzLCAxMjgsIDc2LCA2OSwgODQsIDg0LCA2OSwgODIsIDEyOCwgNzYsIDY5LCAyMTIsIDc2LCAKKyAgICA2OSwgODMsIDgzLCA2OSwgMjEwLCA3NiwgNjksIDgzLCA4MywgNDUsIDg0LCA3MiwgNjUsIDc4LCAxMjgsIDc2LCA2OSwgODMsIAorICAgIDgzLCA0NSwgODQsIDcyLCA2NSwgMjA2LCA3NiwgNjksIDgwLCA2NywgNzIsIDE5MywgNzYsIDY5LCA4MCwgMTI4LCA3NiwgCisgICAgNjksIDc5LCA4MCwgNjUsIDgyLCA2OCwgMTI4LCA3NiwgNjksIDc5LCAxMjgsIDc2LCA2OSwgNzgsIDg0LCA3MywgNjcsIDg1LCAKKyAgICA3NiwgNjUsIDIxMCwgNzYsIDY5LCA3OCwgNzMsIDgzLCAxMjgsIDc2LCA2OSwgNzgsIDczLCAyMTEsIDc2LCA2OSwgNzgsIAorICAgIDcxLCA4NCwgNzIsIDY5LCA3OCwgNjksIDgyLCAxMjgsIDc2LCA2OSwgNzgsIDcxLCA4NCwgNzIsIDQ1LCA1NSwgMTI4LCA3NiwgCisgICAgNjksIDc4LCA3MSwgODQsIDcyLCA0NSwgNTQsIDEyOCwgNzYsIDY5LCA3OCwgNzEsIDg0LCA3MiwgNDUsIDUzLCAxMjgsIDc2LCAKKyAgICA2OSwgNzgsIDcxLCA4NCwgNzIsIDQ1LCA1MiwgMTI4LCA3NiwgNjksIDc4LCA3MSwgODQsIDcyLCA0NSwgNTEsIDEyOCwgNzYsIAorICAgIDY5LCA3OCwgNzEsIDg0LCA3MiwgNDUsIDUwLCAxMjgsIDc2LCA2OSwgNzgsIDcxLCA4NCwgNzIsIDQ1LCA0OSwgMTI4LCA3NiwgCisgICAgNjksIDc4LCA3MSwgODQsIDIwMCwgNzYsIDY5LCA3OCwgNzEsIDY1LCAxMjgsIDc2LCA2OSwgNzgsIDcxLCAxOTMsIDc2LCAKKyAgICA2OSwgNzcsIDc5LCA3OCwgMTI4LCA3NiwgNjksIDc3LCA3OSwgNzMsIDEyOCwgNzYsIDY5LCA3NiwgNjksIDg0LCAxMjgsIAorICAgIDc2LCA2OSwgNzYsIDY5LCAyMTIsIDc2LCA2OSwgMjAzLCA3NiwgNjksIDczLCA3NywgNzcsIDY1LCAxMjgsIDc2LCA2OSwgCisgICAgNzMsIDc3LCA3NywgMTkzLCA3NiwgNjksIDczLCAxMjgsIDc2LCA2OSwgNzEsIDgzLCAxMjgsIDc2LCA2OSwgNzEsIDczLCAKKyAgICA3OSwgNzgsIDEyOCwgNzYsIDY5LCA3MSwgNjksIDg0LCA3OSwgMjExLCA3NiwgNjksIDcxLCAxMjgsIDc2LCA2OSwgMTk5LCAKKyAgICA3NiwgNjksIDcwLCA4NCwgODcsIDY1LCA4MiwgNjgsIDgzLCAxMjgsIDc2LCA2OSwgNzAsIDg0LCA0NSwgODQsIDc5LCA0NSwgCisgICAgODIsIDczLCA3MSwgNzIsIDIxMiwgNzYsIDY5LCA3MCwgODQsIDQ1LCA4MywgODQsIDY5LCAyMDUsIDc2LCA2OSwgNzAsIDg0LCAKKyAgICA0NSwgODMsIDczLCA2OCwgMTk3LCA3NiwgNjksIDcwLCA4NCwgNDUsIDgzLCA3MiwgNjUsIDY4LCA2OSwgMTk2LCA3NiwgNjksIAorICAgIDcwLCA4NCwgNDUsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNzMsIDc4LCAxOTksIDc2LCA2OSwgNzAsIDg0LCA0NSwgNzYsIDczLCAKKyAgICA3MSwgNzIsIDg0LCA2OSwgMTk2LCA3NiwgNjksIDcwLCA4NCwgNDUsIDcyLCA2NSwgNzgsIDY4LCA2OSwgMTk2LCA3NiwgNjksIAorICAgIDcwLCA4NCwgNDUsIDcyLCA2NSwgNzgsIDE5NiwgNzYsIDY5LCA3MCwgODQsIDQ1LCA3MCwgNjUsIDY3LCA3MywgNzgsIDE5OSwgCisgICAgNzYsIDY5LCA3MCwgODQsIDEyOCwgNzYsIDY5LCA2OSwgODIsIDY1LCA2OSwgODcsIDY1LCAxMjgsIDc2LCA2OSwgNjksIDc1LCAKKyAgICAxMjgsIDc2LCA2OSwgNjksIDY5LCA2OSwgMTI4LCA3NiwgNjksIDY4LCA3MSwgNjksIDgyLCAxMjgsIDc2LCA2OSwgNjUsIAorICAgIDg0LCA3MiwgNjksIDgyLCAxMjgsIDc2LCA2OSwgNjUsIDcwLCAxMjgsIDc2LCA2OSwgNjUsIDE5OCwgNzYsIDY5LCA2NSwgCisgICAgNjgsIDczLCA3OCwgMTk5LCA3NiwgNjksIDY1LCA2OCwgNjksIDgyLCAxMjgsIDc2LCA2OSwgNjUsIDE5NiwgNzYsIDY4LCAKKyAgICA2NSwgNzgsIDEyOCwgNzYsIDY4LCA1MCwgMTI4LCA3NiwgNjcsIDIwMSwgNzYsIDY3LCAxOTcsIDc2LCA2NSwgOTAsIDIxNywgCisgICAgNzYsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzYsIDY1LCA4OCwgMTI4LCA3NiwgNjUsIDg3LCAxMjgsIDc2LCAKKyAgICA2NSwgMjE1LCA3NiwgNjUsIDg1LCA3NiwgNjUsIDEyOCwgNzYsIDY1LCA4NSwgNzUsIDY1LCAyMTgsIDc2LCA2NSwgODUsIAorICAgIDc0LCAxMjgsIDc2LCA2NSwgODUsIDcxLCA3MiwgNzMsIDc4LCA3MSwgMTI4LCA3NiwgNjUsIDg0LCA3MywgNzgsIDY1LCA4NCwgCisgICAgMTk3LCA3NiwgNjUsIDg0LCA3MywgNzUsIDEyOCwgNzYsIDY1LCA4NCwgNjksIDgyLCA2NSwgMjA0LCA3NiwgNjUsIDg0LCAKKyAgICAxOTcsIDc2LCA2NSwgODMsIDIxMiwgNzYsIDY1LCA4MiwgODksIDc4LCA3MSwgNjksIDY1LCAyMDQsIDc2LCA2NSwgODIsIAorICAgIDIwMSwgNzYsIDY1LCA4MiwgNzEsIDY5LCA4MywgODQsIDEyOCwgNzYsIDY1LCA4MiwgNzEsIDY5LCAyMTAsIDc2LCA2NSwgCisgICAgODIsIDcxLCA2OSwgMTI4LCA3NiwgNjUsIDgyLCA3MSwgMTk3LCA3NiwgNjUsIDgxLCAxMjgsIDc2LCA2NSwgODAsIDY1LCAKKyAgICA4MSwgMTI4LCA3NiwgNjUsIDIwNywgNzYsIDY1LCA3OCwgODQsIDY5LCA4MiwgNzgsIDEyOCwgNzYsIDY1LCA3OCwgNzEsIAorICAgIDg1LCA2NSwgNzEsIDE5NywgNzYsIDY1LCA3OCwgNjksIDgzLCAxMjgsIDc2LCA2NSwgNzgsIDEyOCwgNzYsIDY1LCA3NywgCisgICAgODAsIDEyOCwgNzYsIDY1LCA3NywgNjksIDY4LCA3MiwgMTI4LCA3NiwgNjUsIDc3LCA2OSwgNjgsIDEyOCwgNzYsIDY1LCAKKyAgICA3NywgNjksIDE5NiwgNzYsIDY1LCA3NywgNjksIDEyOCwgNzYsIDY1LCA3NywgMTk3LCA3NiwgNjUsIDc3LCA2OCwgNjUsIAorICAgIDEyOCwgNzYsIDY1LCA3NywgNjgsIDEyOCwgNzYsIDY1LCA3NywgNjYsIDY4LCAxOTMsIDc2LCA2NSwgNzcsIDY1LCA2OCwgCisgICAgNzIsIDEyOCwgNzYsIDY1LCA3NiwgMTI4LCA3NiwgNjUsIDIwNCwgNzYsIDY1LCA3NSwgNzUsIDcyLCA2NSwgNzgsIDcxLCAKKyAgICA4OSwgNjUsIDc5LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1NSwgNTIsIDU3LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1NSwgNTAsIAorICAgIDUyLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1NCwgNTQsIDU2LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1NCwgNTIsIDU2LCAKKyAgICAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1NCwgNTIsIDE4NCwgNzYsIDY1LCA3NSwgNDUsIDU0LCA1MSwgNTQsIDEyOCwgNzYsIAorICAgIDY1LCA3NSwgNDUsIDU0LCA0OSwgNTUsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDU0LCA0OSwgMTgzLCA3NiwgNjUsIDc1LCA0NSwgCisgICAgNTQsIDQ4LCA1NiwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTMsIDUzLCA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTIsIDU3LCAKKyAgICA1MywgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTIsIDU3LCA1MSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTIsIDU3LCA1MCwgCisgICAgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTIsIDU3LCA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTIsIDU2LCA1MSwgMTI4LCAKKyAgICA3NiwgNjUsIDc1LCA0NSwgNTIsIDU1LCA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTIsIDUzLCA1NSwgMTI4LCA3NiwgNjUsIAorICAgIDc1LCA0NSwgNTIsIDUzLCA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTIsIDUyLCA1NywgMTI4LCA3NiwgNjUsIDc1LCA0NSwgCisgICAgNTIsIDUyLCAxODUsIDc2LCA2NSwgNzUsIDQ1LCA1MiwgNTIsIDQ5LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MSwgNTcsIDQ4LCAKKyAgICAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MSwgNTYsIDUyLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MSwgNTYsIDUxLCAxMjgsIAorICAgIDc2LCA2NSwgNzUsIDQ1LCA1MSwgNTIsIDU2LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MSwgNTIsIDU1LCAxMjgsIDc2LCA2NSwgCisgICAgNzUsIDQ1LCA1MSwgNTIsIDUxLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MCwgNTQsIDU0LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCAKKyAgICA1MCwgNTQsIDUzLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MCwgNTEsIDU2LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MCwgNTAsIAorICAgIDU2LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MCwgNTAsIDUzLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MCwgNTAsIDQ4LCAKKyAgICAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MCwgNDksIDU3LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MCwgNDksIDQ4LCAxMjgsIAorICAgIDc2LCA2NSwgNzUsIDQ1LCA0OSwgNTIsIDUwLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA0OSwgNTEsIDQ4LCAxMjgsIDc2LCA2NSwgCisgICAgNzUsIDQ1LCA0OCwgNTcsIDUwLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNTYsIDQ5LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCAKKyAgICA0OCwgNTYsIDE3NywgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1NiwgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1NSwgCisgICAgMTg1LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDU0LCA1MCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDUzLCA0OSwgMTI4LCAKKyAgICA3NiwgNjUsIDc1LCA0NSwgNDgsIDUzLCA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDUxLCA0OCwgMTI4LCA3NiwgNjUsIAorICAgIDc1LCA0NSwgNDgsIDUwLCA1MywgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDUwLCA0OSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgCisgICAgNDgsIDUwLCA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDQ4LCA1MSwgMTI4LCA3NiwgNjUsIDc0LCA2NSwgNzgsIDg5LCAKKyAgICA2NSwgNzYsIDY1LCA3OCwgMTI4LCA3NiwgNjUsIDczLCA3OCwgMTk5LCA3NiwgNjUsIDIwMSwgNzYsIDY1LCA3MiwgODMsIAorICAgIDcyLCA4NSwgMTI4LCA3NiwgNjUsIDcyLCAxMjgsIDc2LCA2NSwgNzEsIDg1LCA4MywgMTI4LCA3NiwgNjUsIDcxLCAyMTMsIAorICAgIDc2LCA2NSwgNzEsIDY1LCA4MiwgMTI4LCA3NiwgNjUsIDcxLCA2NSwgMjEwLCA3NiwgNjUsIDcxLCA2NSwgNjYsIDEyOCwgCisgICAgNzYsIDY1LCA3MSwgNjUsIDE5NCwgNzYsIDY1LCA2OSwgODYsIDEyOCwgNzYsIDY1LCA2OSwgMTI4LCA3NiwgNjUsIDY4LCAKKyAgICAyMTcsIDc2LCA2NSwgNjcsIDc1LCAxMjgsIDc2LCA2NSwgNjcsIDY1LCAxMjgsIDc2LCA2NSwgNjYsIDc5LCA4NSwgODIsIAorICAgIDczLCA3OCwgNzEsIDEyOCwgNzYsIDY1LCA2NiwgNzksIDgyLCAxMjgsIDc2LCA2NSwgNjYsIDczLCA2NSwgNzYsIDczLCA5MCwgCisgICAgNjUsIDg0LCA3MywgNzksIDIwNiwgNzYsIDY1LCA2NiwgNzMsIDY1LCAyMDQsIDc2LCA2NSwgNjYsIDY5LCA3NiwgMTI4LCAKKyAgICA3NiwgNjUsIDY2LCA2NSwgODQsIDEyOCwgNzYsIDY1LCA2NSwgNzgsIDY1LCA2OSwgMTI4LCA3NiwgNjUsIDY1LCA3OCwgCisgICAgMTI4LCA3NiwgNjUsIDY1LCA3NywgODUsIDEyOCwgNzYsIDY1LCA2NSwgNzcsIDEyOCwgNzYsIDY1LCA2NSwgNzMsIDEyOCwgCisgICAgNzYsIDU0LCAxMjgsIDc2LCA1MiwgMTI4LCA3NiwgNTEsIDEyOCwgNzYsIDUwLCAxMjgsIDc2LCA0OCwgNDgsIDU0LCA2NSwgCisgICAgMTI4LCA3NiwgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgNzYsIDQ1LCA4NCwgODksIDgwLCAxOTcsIDc2LCA0NSwgODMsIDcyLCAKKyAgICA2NSwgODAsIDY5LCAxOTYsIDc1LCA4OSwgODUsIDgyLCA3MywgNzMsIDEyOCwgNzUsIDg5LCA4NSwgMTI4LCA3NSwgODksIAorICAgIDc5LCAxMjgsIDc1LCA4OSwgNzYsIDczLCA4MywgNzcsIDY1LCAxMjgsIDc1LCA4OSwgNzMsIDEyOCwgNzUsIDg5LCA2OSwgCisgICAgMTI4LCA3NSwgODksIDY1LCA4NCwgNzIsIDc5LCAyMTEsIDc1LCA4OSwgNjUsIDY1LCAxMjgsIDc1LCA4OSwgNjUsIDEyOCwgCisgICAgNzUsIDg4LCA4NywgNzMsIDEyOCwgNzUsIDg4LCA4NywgNjksIDY5LCAxMjgsIDc1LCA4OCwgODcsIDY5LCAxMjgsIDc1LCAKKyAgICA4OCwgODcsIDY1LCA2NSwgMTI4LCA3NSwgODgsIDg3LCA2NSwgMTI4LCA3NSwgODgsIDg1LCAxMjgsIDc1LCA4OCwgNzksIAorICAgIDEyOCwgNzUsIDg4LCA3MywgMTI4LCA3NSwgODgsIDY5LCA2OSwgMTI4LCA3NSwgODgsIDY5LCAxMjgsIDc1LCA4OCwgNjUsIAorICAgIDY1LCAxMjgsIDc1LCA4OCwgNjUsIDEyOCwgNzUsIDg3LCA4NiwgMTI4LCA3NSwgODcsIDg1LCA1MSwgNDksIDU2LCAxMjgsIAorICAgIDc1LCA4NywgNzksIDc5LCAxMjgsIDc1LCA4NywgNzksIDEyOCwgNzUsIDg3LCA3NywgMTI4LCA3NSwgODcsIDczLCA3MywgCisgICAgMTI4LCA3NSwgODcsIDczLCAxMjgsIDc1LCA4NywgNjksIDY5LCAxMjgsIDc1LCA4NywgNjksIDEyOCwgNzUsIDg3LCA2NiwgCisgICAgMTI4LCA3NSwgODcsIDY1LCA4OSwgMTI4LCA3NSwgODcsIDY1LCA2OSwgODQsIDEyOCwgNzUsIDg3LCA2NSwgNjUsIDEyOCwgCisgICAgNzUsIDg2LCA2NSwgMTI4LCA3NSwgODYsIDEyOCwgNzUsIDg1LCA4OCwgMTI4LCA3NSwgODUsIDg2LCAxMjgsIDc1LCA4NSwgCisgICAgODUsIDcyLCAxMjgsIDc1LCA4NSwgODQsIDEyOCwgNzUsIDg1LCA4MywgNzcsIDY1LCAxMjgsIDc1LCA4NSwgODMsIDcyLCAKKyAgICA4NSwgNTAsIDEyOCwgNzUsIDg1LCA4MywgNzIsIDg1LCAxNzgsIDc1LCA4NSwgODIsIDg4LCAxMjgsIDc1LCA4NSwgODIsIAorICAgIDg1LCA5MCwgNjksIDczLCA4MiwgNzksIDEyOCwgNzUsIDg1LCA4MiwgODQsIDEyOCwgNzUsIDg1LCA4MiwgNzksIDc5LCA3OCwgCisgICAgNjksIDEyOCwgNzUsIDg1LCA4MiwgMTI4LCA3NSwgODUsIDIxMCwgNzUsIDg1LCA4MSwgMTI4LCA3NSwgODUsIDc5LCA4OCwgCisgICAgMTI4LCA3NSwgODUsIDc5LCA4MCwgMTI4LCA3NSwgODUsIDc5LCAyMDgsIDc1LCA4NSwgNzksIDc3LCAxMjgsIDc1LCA4NSwgCisgICAgNzksIDEyOCwgNzUsIDg1LCA3OCwgNzEsIDEyOCwgNzUsIDg1LCA3OCwgNjgsIDY4LCA2NSwgNzYsIDczLCA4OSwgNjUsIAorICAgIDEyOCwgNzUsIDg1LCA3NiwgMTI4LCA3NSwgODUsIDIwNCwgNzUsIDg1LCA3MSwgMTI4LCA3NSwgODUsIDY5LCA4NCwgMTI4LCAKKyAgICA3NSwgODUsIDY2LCAxMjgsIDc1LCA4NSwgNjUsIDg2LCAxMjgsIDc1LCA4NSwgNjUsIDY2LCAxMjgsIDc1LCA4NSwgNjUsIAorICAgIDEyOCwgNzUsIDg1LCA1NSwgMTI4LCA3NSwgODUsIDUyLCAxMjgsIDc1LCA4NSwgMTgwLCA3NSwgODUsIDUxLCAxMjgsIDc1LCAKKyAgICA4NSwgMTc5LCA3NSwgODQsIDEyOCwgNzUsIDgzLCA4MywgODUsIDg1LCAxMjgsIDc1LCA4MywgODMsIDg1LCAxMjgsIDc1LCAKKyAgICA4MywgODMsIDc5LCA3OSwgMTI4LCA3NSwgODMsIDgzLCA3OSwgMTI4LCA3NSwgODMsIDgzLCA3MywgNzMsIDEyOCwgNzUsIAorICAgIDgzLCA4MywgNzMsIDEyOCwgNzUsIDgzLCA4MywgNjksIDY5LCAxMjgsIDc1LCA4MywgODMsIDY5LCAxMjgsIDc1LCA4MywgCisgICAgODMsIDY1LCA4NSwgMTI4LCA3NSwgODMsIDgzLCA2NSwgNzMsIDEyOCwgNzUsIDgzLCA4MywgNjUsIDY1LCAxMjgsIDc1LCAKKyAgICA4MywgODMsIDY1LCAxMjgsIDc1LCA4MywgODMsIDEyOCwgNzUsIDgzLCA3MywgMTI4LCA3NSwgODIsIDY5LCA3NywgNjUsIAorICAgIDgzLCA4NCwgNzMsIDEyOCwgNzUsIDgyLCA2NSwgODQsIDczLCA3NywgNzksIDg5LCA4MCwgNzksIDgyLCA4MiwgNzksIDc5LCAKKyAgICA3OCwgMTI4LCA3NSwgODIsIDY1LCA4NCwgNzMsIDc3LCA3OSwgNzUsIDc5LCA4NSwgNzAsIDczLCA4MywgNzcsIDY1LCAxMjgsIAorICAgIDc1LCA4MiwgNjUsIDg0LCA3MywgNzcsIDY1LCA4NCwgNjUsIDEyOCwgNzUsIDgyLCA2NSwgODQsIDczLCA3NywgMTkzLCA3NSwgCisgICAgODAsIDg1LCAxMjgsIDc1LCA4MCwgNzksIDgxLCAxMjgsIDc1LCA4MCwgNzksIDc5LCAxMjgsIDc1LCA4MCwgNzksIDEyOCwgCisgICAgNzUsIDgwLCA3MywgMTI4LCA3NSwgODAsIDY5LCA4NSwgODgsIDEyOCwgNzUsIDgwLCA2OSwgNjksIDEyOCwgNzUsIDgwLCAKKyAgICA2OSwgMTI4LCA3NSwgODAsIDY1LCA4MiwgNjUsIDgxLCAxMjgsIDc1LCA4MCwgNjUsIDc4LCAxMjgsIDc1LCA4MCwgNjUsIAorICAgIDcyLCAxMjgsIDc1LCA4MCwgNjUsIDEyOCwgNzUsIDc5LCA4OCwgMTI4LCA3NSwgNzksIDg2LCA4NSwgODUsIDEyOCwgNzUsIAorICAgIDc5LCA4NiwgMTI4LCA3NSwgNzksIDg0LCA3OSwgMTI4LCA3NSwgNzksIDgyLCA4NSwgNzgsIDY1LCAxMjgsIDc1LCA3OSwgCisgICAgODIsIDc5LCA3OCwgNzMsIDgzLCAxMjgsIDc1LCA3OSwgODIsIDY5LCA2NSwgMjA2LCA3NSwgNzksIDgyLCA2NSwgNzgsIDczLCAKKyAgICAxOTUsIDc1LCA3OSwgODEsIDc4LCA2OCwgNzksIDc4LCAxMjgsIDc1LCA3OSwgODAsIDgwLCA2NSwgMTI4LCA3NSwgNzksIAorICAgIDgwLCAxMjgsIDc1LCA3OSwgNzksIDg2LCAxMjgsIDc1LCA3OSwgNzksIDgwLCA3OSwgMTI4LCA3NSwgNzksIDc5LCA3NywgCisgICAgODUsIDg1LCA4NCwgMTI4LCA3NSwgNzksIDc5LCA2NiwgMTI4LCA3NSwgNzksIDc5LCAxMjgsIDc1LCA3OSwgNzgsIDg0LCAKKyAgICA2OSwgODYsIDc3LCA2NSwgMTI4LCA3NSwgNzksIDc4LCA4NCwgNjksIDg2LCA3NywgMTkzLCA3NSwgNzksIDc3LCAyMDEsIAorICAgIDc1LCA3OSwgNzcsIDY2LCA4NSwgODYsIDY1LCAxMjgsIDc1LCA3OSwgNzcsIDY2LCA4NSwgODYsIDE5MywgNzUsIDc5LCA3NywgCisgICAgNjYsIDIxMywgNzUsIDc5LCA3NSwgNzksIDEyOCwgNzUsIDc5LCA3NSwgNjksIDEyOCwgNzUsIDc5LCA3NSwgMTI4LCA3NSwgCisgICAgNzksIDIwMywgNzUsIDc5LCA3MywgMTI4LCA3NSwgNzksIDIwMSwgNzUsIDc5LCA3MiwgMTI4LCA3NSwgNzksIDcxLCA3MiwgCisgICAgNzksIDc3LCAxMjgsIDc1LCA3OSwgNjksIDg0LCAxMjgsIDc1LCA3OSwgNjYsIDEyOCwgNzUsIDc5LCA2NSwgNzYsIDY1LCAKKyAgICAxMjgsIDc1LCA3OSwgNjUsIDEyOCwgNzUsIDc4LCA4NSwgNjcsIDc1LCA3NiwgNjksIDgzLCAxMjgsIDc1LCA3OCwgODUsIAorICAgIDY3LCA3NSwgNzYsIDY5LCAxMjgsIDc1LCA3OCwgNzksIDY2LCA4MywgMTI4LCA3NSwgNzgsIDczLCA3MSwgNzIsIDg0LCAKKyAgICAxMjgsIDc1LCA3OCwgNzMsIDcxLCA3MiwgMjEyLCA3NSwgNzgsIDczLCA3MCwgNjksIDEyOCwgNzUsIDc4LCA3MywgNzAsIAorICAgIDE5NywgNzUsIDc3LCAxMjgsIDc1LCAyMDUsIDc1LCA3NiwgNzMsIDg0LCA3OSwgNzgsIDEyOCwgNzUsIDc2LCA2NSwgODMsIAorICAgIDc3LCA2NSwgMTI4LCA3NSwgNzYsIDY1LCA4MywgNzcsIDE5MywgNzUsIDc2LCA2NSwgMTI4LCA3NSwgNzYsIDEyOCwgNzUsIAorICAgIDc1LCA4NSwgMTI4LCA3NSwgNzUsIDc5LCAxMjgsIDc1LCA3NSwgNzMsIDEyOCwgNzUsIDc1LCA2OSwgNjksIDEyOCwgNzUsIAorICAgIDc1LCA2OSwgMTI4LCA3NSwgNzUsIDY1LCAxMjgsIDc1LCA3NSwgMTI4LCA3NSwgNzQsIDY5LCAxMjgsIDc1LCA3MywgODksIAorICAgIDY5LCA3OSwgNzUsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCAKKyAgICA4MywgNzMsIDc5LCA4MywgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgCisgICAgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgODAsIDczLCA2OSwgODUsIAorICAgIDgwLCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgNzUsIDczLCA4OSwgCisgICAgNjksIDc5LCA3NSwgNDUsIDc1LCA3MiwgNzMsIDY5LCA4NSwgNzUsIDcyLCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIAorICAgIDQ1LCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDIwMywgNzUsIDczLCA4OCwgCisgICAgMTI4LCA3NSwgNzMsIDg3LCA3MywgNzAsIDgyLCA4NSwgNzMsIDg0LCAxMjgsIDc1LCA3MywgODcsIDEyOCwgNzUsIDczLCAKKyAgICA4NiwgMTI4LCA3NSwgNzMsIDg0LCAxMjgsIDc1LCA3MywgODMsIDgzLCA3MywgNzgsIDE5OSwgNzUsIDczLCA4MywgODMsIAorICAgIDEyOCwgNzUsIDczLCA4MywgMjExLCA3NSwgNzMsIDgzLCA3MywgNzcsIDUzLCAxMjgsIDc1LCA3MywgODMsIDczLCA3NywgCisgICAgMTgxLCA3NSwgNzMsIDgzLCA3MiwgMTI4LCA3NSwgNzMsIDgzLCA2NSwgNzYsIDEyOCwgNzUsIDczLCA4MiwgNzksIDg3LCAKKyAgICA2NSwgODQsIDg0LCA3OSwgMTI4LCA3NSwgNzMsIDgyLCA3OSwgNzcsIDY5LCA2OSwgODQsIDc5LCA4MiwgODUsIDEyOCwgNzUsIAorICAgIDczLCA4MiwgNzksIDcxLCA4NSwgODIsIDY1LCA3NywgODUsIDEyOCwgNzUsIDczLCA4MiwgNzksIDEyOCwgNzUsIDczLCA4MiwgCisgICAgNzEsIDcyLCA3MywgMjE4LCA3NSwgNzMsIDgxLCAxMjgsIDc1LCA3MywgODAsIDEyOCwgNzUsIDczLCAyMDgsIDc1LCA3MywgCisgICAgNzgsIDgzLCA3MiwgNzMsIDgwLCAxMjgsIDc1LCA3MywgNzgsIDY4LCA2OSwgODIsIDcxLCA2NSwgODIsIDg0LCA2OSwgNzgsIAorICAgIDEyOCwgNzUsIDczLCA3NywgNzksIDc4LCA3OSwgMTI4LCA3NSwgNzMsIDc2LCA3NiwgNjksIDgyLCAxMjgsIDc1LCA3MywgCisgICAgNzMsIDEyOCwgNzUsIDczLCA3MiwgMTI4LCA3NSwgNzMsIDY5LCA4OCwgMTI4LCA3NSwgNzMsIDY5LCA4NiwgNjUsIDIwNiwgCisgICAgNzUsIDczLCA2OSwgODAsIDEyOCwgNzUsIDczLCA2OSwgNjksIDc3LCAxMjgsIDc1LCA3MywgNjksIDEyOCwgNzUsIDczLCAKKyAgICA2OCwgMTI4LCA3NSwgNzMsIDE5NiwgNzUsIDczLCA2NywgNzUsIDEyOCwgNzUsIDczLCA2NiwgMTI4LCA3NSwgNzMsIDY1LCAKKyAgICA4NiwgMTI4LCA3NSwgNzMsIDY1LCA2NiwgMTI4LCA3NSwgNzIsIDkwLCAxMjgsIDc1LCA3MiwgODcsIDY1LCA3MywgMTI4LCAKKyAgICA3NSwgNzIsIDg1LCA2OSwgNzgsIDQ1LCA3NiwgODUsIDE5NywgNzUsIDcyLCA4NSwgNjksIDIwNiwgNzUsIDcyLCA4NSwgNjgsIAorICAgIDY1LCA4NywgNjUsIDY4LCAyMDEsIDc1LCA3MiwgODUsIDY4LCA2NSwgNzcsIDEyOCwgNzUsIDcyLCA4NSwgNjUsIDg0LCAKKyAgICAxMjgsIDc1LCA3MiwgNzksIDg1LCAxMjgsIDc1LCA3MiwgNzksIDIxMiwgNzUsIDcyLCA3OSwgNzgsIDEyOCwgNzUsIDcyLCAKKyAgICA3OSwgNzcsIDg1LCA4NCwgMTI4LCA3NSwgNzIsIDc5LCA3NCwgNzUsIDIwMSwgNzUsIDcyLCA3OSwgMTI4LCA3NSwgNzIsIAorICAgIDIwNywgNzUsIDcyLCA3NywgMjEzLCA3NSwgNzIsIDczLCA4NCwgMTI4LCA3NSwgNzIsIDczLCA3OCwgODksIDY1LCAxMjgsIAorICAgIDc1LCA3MiwgNzMsIDY5LCA4NSwgNzUsIDIwMCwgNzUsIDcyLCA3MywgMTI4LCA3NSwgNzIsIDIwMSwgNzUsIDcyLCA3MiwgCisgICAgNzksIDEyOCwgNzUsIDcyLCA3MiwgNjUsIDEyOCwgNzUsIDcyLCA2OSwgODQsIDcyLCAxMjgsIDc1LCA3MiwgNjksIDczLCAKKyAgICAxMjgsIDc1LCA3MiwgNjksIDY5LCAxMjgsIDc1LCA3MiwgNjksIDEyOCwgNzUsIDcyLCA2NSwgODYsIDEyOCwgNzUsIDcyLCAKKyAgICA2NSwgODIsIDc5LCA4MywgNzIsIDg0LCA3MiwgMjAxLCA3NSwgNzIsIDY1LCA4MiwgMTI4LCA3NSwgNzIsIDY1LCA4MCwgNzIsIAorICAgIDEyOCwgNzUsIDcyLCA2NSwgNzgsIDE5OSwgNzUsIDcyLCA2NSwgNzgsIDY4LCAxOTMsIDc1LCA3MiwgNjUsIDc4LCAxMjgsIAorICAgIDc1LCA3MiwgNjUsIDc3LCA4NCwgMjAxLCA3NSwgNzIsIDY1LCA3NSwgNjUsIDgzLCA4MywgNzMsIDY1LCAyMDYsIDc1LCA3MiwgCisgICAgNjUsIDczLCAxMjgsIDc1LCA3MiwgNjUsIDcyLCAxMjgsIDc1LCA3MiwgNjUsIDIwMCwgNzUsIDcyLCA2NSwgNjYsIDEyOCwgCisgICAgNzUsIDcyLCA2NSwgNjUsIDEyOCwgNzUsIDcxLCAxMjgsIDc1LCA2OSwgODksIDY3LCA2NSwgODAsIDEyOCwgNzUsIDY5LCAKKyAgICA4OSwgNjcsIDY1LCAyMDgsIDc1LCA2OSwgODksIDY2LCA3OSwgNjUsIDgyLCA2OCwgMTI4LCA3NSwgNjksIDg5LCA2NiwgNzksIAorICAgIDY1LCA4MiwgMTk2LCA3NSwgNjksIDg4LCAxMjgsIDc1LCA2OSwgODYsIDEyOCwgNzUsIDY5LCA4NSwgODksIDY5LCA4NSwgCisgICAgODgsIDEyOCwgNzUsIDY5LCA4NSwgODMsIDcyLCA2OSwgODUsIDY1LCA2OSwgODAsIDEyOCwgNzUsIDY5LCA4NSwgODMsIDY5LCAKKyAgICA4NSwgODgsIDEyOCwgNzUsIDY5LCA4NSwgODAsIDg1LCA4MSwgMTI4LCA3NSwgNjksIDg1LCA3OSwgMjEyLCA3NSwgNjksIAorICAgIDg1LCA3NywgMTI4LCA3NSwgNjksIDg1LCA3NSwgNjksIDg1LCA4NCwgNzgsIDY4LCA2NSwgMTI4LCA3NSwgNjksIDg1LCA3NSwgCisgICAgNjUsIDgxLCAxMjgsIDc1LCA2OSwgODUsIDY1LCA2OSwgODQsIDc3LCA2OSwgODUsIDc4LCAxMjgsIDc1LCA2OSwgODUsIDY1LCAKKyAgICA2OSwgODIsIDczLCAxMjgsIDc1LCA2OSwgODQsIDg0LCAyMDEsIDc1LCA2OSwgODMsIDcyLCA1MCwgMTI4LCA3NSwgNjksIAorICAgIDgyLCA2OSwgODQsIDEyOCwgNzUsIDY5LCA3OSwgODcsIDEyOCwgNzUsIDY5LCA3OCwgODQsIDczLCA3NywgNjUsIDg0LCA2NSwgCisgICAgMTI4LCA3NSwgNjksIDc4LCA4NCwgNzMsIDc3LCA2NSwgODQsIDE5MywgNzUsIDY5LCA3OCwgODQsIDczLCA3NywgMTkzLCAKKyAgICA3NSwgNjksIDc4LCA2NSwgODQsIDEyOCwgNzUsIDY5LCA3OCwgMTI4LCA3NSwgNjksIDIwNiwgNzUsIDY5LCA3NywgODAsIAorICAgIDg1LCA3NiwgMTI4LCA3NSwgNjksIDc3LCA4MCwgODUsIDIwNCwgNzUsIDY5LCA3NywgODAsIDc2LCA3MywgMTI4LCA3NSwgCisgICAgNjksIDc3LCA4MCwgNzYsIDIwMSwgNzUsIDY5LCA3NywgODAsIDcyLCA4MiwgNjksIDc4LCA3MSwgMTI4LCA3NSwgNjksIDc3LCAKKyAgICA2NiwgNjUsIDc4LCA3MSwgMTI4LCA3NSwgNjksIDc2LCA4NiwgNzMsIDIwNiwgNzUsIDY5LCA3MiwgNjksIDcyLCAxMjgsIAorICAgIDc1LCA2OSwgNzIsIDY5LCAyMDAsIDc1LCA2OSwgNzIsIDEyOCwgNzUsIDY5LCA3MCwgODUsIDc2LCA2NSwgMTI4LCA3NSwgCisgICAgNjksIDY5LCA4NiwgMTI4LCA3NSwgNjksIDY5LCA4MywgODUsIDEyOCwgNzUsIDY5LCA2OSwgODAsIDczLCA3OCwgMTk5LCAKKyAgICA3NSwgNjksIDY5LCA3OCwgNzEsIDEyOCwgNzUsIDY5LCA2OSwgNjYsIDEyOCwgNzUsIDY5LCA2NiwgMTI4LCA3NSwgNjksIAorICAgIDY1LCA2NSwgNjksIDEyOCwgNzUsIDY3LCA2NSwgNzYsIDEyOCwgNzUsIDY2LCAxMjgsIDc1LCA2NSwgOTAsIDY1LCA3NSwgCisgICAgMjAwLCA3NSwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3NSwgNjUsIDg5LCA2NSwgMjAwLCA3NSwgNjUsIDg4LCAKKyAgICAxMjgsIDc1LCA2NSwgODcsIDg2LCAxMjgsIDc1LCA2NSwgODcsIDczLCAxMjgsIDc1LCA2NSwgODcsIDY2LCAxMjgsIDc1LCAKKyAgICA2NSwgODYsIDg5LCA3NSwgNjUsIDEyOCwgNzUsIDY1LCA4NiwgMTI4LCA3NSwgNjUsIDg1LCA4NiwgMTI4LCA3NSwgNjUsIAorICAgIDg1LCA3OCwgNjUsIDEyOCwgNzUsIDY1LCA4NSwgMjA2LCA3NSwgNjUsIDg1LCA2NiwgMTI4LCA3NSwgNjUsIDg0LCA3OSwgCisgICAgMTI4LCA3NSwgNjUsIDg0LCA3MiwgNzMsIDgzLCA4NCwgNzMsIDEyOCwgNzUsIDY1LCA4NCwgNzIsIDY1LCA3NSwgMTkzLCAKKyAgICA3NSwgNjUsIDg0LCA2NSwgODYsIDY1LCA4MywgNzcsIDY1LCAxMjgsIDc1LCA2NSwgODQsIDY1LCA4NiwgMTkzLCA3NSwgNjUsIAorICAgIDg0LCA2NSwgNzUsIDY1LCA3OCwgNjUsIDQ1LCA3MiwgNzMsIDgyLCA2NSwgNzEsIDY1LCA3OCwgMTkzLCA3NSwgNjUsIDgzLCAKKyAgICA4MiwgNjUsIDg0LCA2NSwgNzgsIDEyOCwgNzUsIDY1LCA4MywgODIsIDY1LCA4NCwgNjUsIDIwNiwgNzUsIDY1LCA4MywgODIsIAorICAgIDY1LCAxMjgsIDc1LCA2NSwgODMsIDgyLCAxOTMsIDc1LCA2NSwgODMsIDc1LCA2NSwgNzYsIDEyOCwgNzUsIDY1LCA4MywgCisgICAgNzUsIDY1LCAyMDQsIDc1LCA2NSwgODMsIDcyLCA3NywgNzMsIDgyLCAyMDEsIDc1LCA2NSwgODIsIDgzLCA3MiwgNjUsIDc4LCAKKyAgICA2NSwgMTI4LCA3NSwgNjUsIDgyLCA3OSwgODIsIDczLCA3MywgMTI4LCA3NSwgNjUsIDgyLCAyMDcsIDc1LCA2NSwgODIsIAorICAgIDY5LCAyMDYsIDc1LCA2NSwgODIsIDY1LCA4NCwgODQsIDc5LCAxMjgsIDc1LCA2NSwgODIsIDY1LCA3OCwgMTI4LCA3NSwgCisgICAgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIAorICAgIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDc1LCA2NSwgODAsIDg5LCAKKyAgICA2OSwgNzksIDg1LCA3OCwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDEyOCwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgCisgICAgODUsIDc4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgNzUsIDY1LCA4MCwgODAsIDY1LCAxMjgsIDc1LCA2NSwgODAsIDgwLCAKKyAgICAxOTMsIDc1LCA2NSwgODAsIDc5LCAxMjgsIDc1LCA2NSwgODAsIDcyLCAxMjgsIDc1LCA2NSwgODAsIDY1LCA3NiwgMTI4LCAKKyAgICA3NSwgNjUsIDgwLCA2NSwgMTI4LCA3NSwgNjUsIDIwOCwgNzUsIDY1LCA3OCwgODQsIDY1LCA3NCwgMTkzLCA3NSwgNjUsIAorICAgIDc4LCA3OCwgNjUsIDY4LCAxOTMsIDc1LCA2NSwgNzgsIDcxLCAxMjgsIDc1LCA2NSwgNzgsIDE5OSwgNzUsIDY1LCA3OCwgCisgICAgNjUsIDc1LCA3OSwgMTI4LCA3NSwgNjUsIDc3LCA1MiwgMTI4LCA3NSwgNjUsIDc3LCA1MCwgMTI4LCA3NSwgNjUsIDc3LCAKKyAgICAxMjgsIDc1LCA2NSwgNzUsIDc5LCAxMjgsIDc1LCA2NSwgNzUsIDY1LCA2NiwgNjUsIDg0LCAxMjgsIDc1LCA2NSwgNzUsIAorICAgIDEyOCwgNzUsIDY1LCAyMDMsIDc1LCA2NSwgNzMsIDg2LCAxMjgsIDc1LCA2NSwgNzMsIDg0LCA3MiwgMjAxLCA3NSwgNjUsIAorICAgIDczLCA4MiwgNzMsIDEyOCwgNzUsIDY1LCA3MywgNjYsIDEyOCwgNzUsIDY1LCA3MywgMTI4LCA3NSwgNjUsIDIwMSwgNzUsIAorICAgIDY1LCA3MCwgNjUsIDEyOCwgNzUsIDY1LCA3MCwgMTI4LCA3NSwgNjUsIDE5OCwgNzUsIDY1LCA2OCwgNTMsIDEyOCwgNzUsIAorICAgIDY1LCA2OCwgMTgxLCA3NSwgNjUsIDY4LCA1MiwgMTI4LCA3NSwgNjUsIDY4LCA1MSwgMTI4LCA3NSwgNjUsIDY4LCAxNzksIAorICAgIDc1LCA2NSwgNjgsIDUwLCAxMjgsIDc1LCA2NSwgNjgsIDEyOCwgNzUsIDY1LCA2NiwgMTkzLCA3NSwgNjUsIDY2LCAxMjgsIAorICAgIDc1LCA2NSwgNjUsIDg2LCAxMjgsIDc1LCA2NSwgNjUsIDczLCAxMjgsIDc1LCA2NSwgNjUsIDcwLCA4NSwgMTI4LCA3NSwgCisgICAgNjUsIDY1LCA3MCwgMTI4LCA3NSwgNjUsIDY1LCA2NiwgNjUsIDEyOCwgNzUsIDY1LCA2NSwgNjYsIDEyOCwgNzUsIDY1LCAKKyAgICA1MCwgMTI4LCA3NSwgNjUsIDE3OCwgNzUsIDQ4LCA0OCwgNTYsIDEyOCwgNzUsIDQ4LCA0OCwgNTUsIDEyOCwgNzUsIDQ4LCAKKyAgICA0OCwgNTQsIDEyOCwgNzUsIDQ4LCA0OCwgNTMsIDEyOCwgNzUsIDQ4LCA0OCwgNTIsIDEyOCwgNzUsIDQ4LCA0OCwgNTEsIAorICAgIDEyOCwgNzUsIDQ4LCA0OCwgNTAsIDEyOCwgNzUsIDQ4LCA0OCwgNDksIDEyOCwgNzQsIDg3LCA2NSwgMTI4LCA3NCwgODUsIAorICAgIDg1LCAxMjgsIDc0LCA4NSwgODQsIDEyOCwgNzQsIDg1LCA4MywgODQsIDczLCA3MCwgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgCisgICAgNzgsIDEyOCwgNzQsIDg1LCA4MCwgNzMsIDg0LCA2OSwgODIsIDEyOCwgNzQsIDg1LCA3OSwgODQsIDEyOCwgNzQsIDg1LCAKKyAgICA3OSwgODAsIDEyOCwgNzQsIDg1LCA3OCwgNzksIDEyOCwgNzQsIDg1LCA3OCwgNjksIDEyOCwgNzQsIDg1LCA3NiwgODksIAorICAgIDEyOCwgNzQsIDg1LCA3MSwgNzEsIDc2LCA3MywgNzgsIDcxLCAxMjgsIDc0LCA4NSwgNjksIDg1LCA3MywgMTI4LCA3NCwgCisgICAgODUsIDY4LCA4NSwgNzYsIDEyOCwgNzQsIDg1LCA2OCwgNzEsIDY5LCAxMjgsIDc0LCA4NSwgNjgsIDY5LCA3OSwgNDUsIDgzLCAKKyAgICA4MCwgNjUsIDc4LCA3MywgODMsIDIwMCwgNzQsIDc5LCA4OSwgODMsIDg0LCA3MywgNjcsIDc1LCAxMjgsIDc0LCA3OSwgODksIAorICAgIDc5LCA4NSwgMjExLCA3NCwgNzksIDg5LCAxMjgsIDc0LCA3OSwgODYsIDY5LCAxMjgsIDc0LCA3OSwgMjEyLCA3NCwgNzksIAorICAgIDc4LCA3MSwgMTI4LCA3NCwgNzksIDc4LCAxOTMsIDc0LCA3OSwgNzUsIDY5LCA4MiwgMTI4LCA3NCwgNzksIDczLCA3OCwgCisgICAgODQsIDgzLCAxMjgsIDc0LCA3OSwgNzMsIDc4LCA2OSwgNjgsIDEyOCwgNzQsIDc5LCA3MywgNzgsIDEyOCwgNzQsIDc5LCAKKyAgICA2NSwgMTI4LCA3NCwgNzQsIDg5LCA4OCwgMTI4LCA3NCwgNzQsIDg5LCA4NCwgMTI4LCA3NCwgNzQsIDg5LCA4MCwgMTI4LCAKKyAgICA3NCwgNzQsIDg5LCAxMjgsIDc0LCA3NCwgODUsIDg4LCAxMjgsIDc0LCA3NCwgODUsIDg0LCAxMjgsIDc0LCA3NCwgODUsIAorICAgIDgyLCA4OCwgMTI4LCA3NCwgNzQsIDg1LCA4MiwgMTI4LCA3NCwgNzQsIDg1LCA4MCwgMTI4LCA3NCwgNzQsIDg1LCA3OSwgCisgICAgODgsIDEyOCwgNzQsIDc0LCA4NSwgNzksIDgwLCAxMjgsIDc0LCA3NCwgODUsIDc5LCAxMjgsIDc0LCA3NCwgODUsIDEyOCwgCisgICAgNzQsIDc0LCA3OSwgODgsIDEyOCwgNzQsIDc0LCA3OSwgODQsIDEyOCwgNzQsIDc0LCA3OSwgODAsIDEyOCwgNzQsIDc0LCAKKyAgICA3OSwgMTI4LCA3NCwgNzQsIDczLCA4OCwgMTI4LCA3NCwgNzQsIDczLCA4NCwgMTI4LCA3NCwgNzQsIDczLCA4MCwgMTI4LCAKKyAgICA3NCwgNzQsIDczLCA2OSwgODgsIDEyOCwgNzQsIDc0LCA3MywgNjksIDg0LCAxMjgsIDc0LCA3NCwgNzMsIDY5LCA4MCwgCisgICAgMTI4LCA3NCwgNzQsIDczLCA2OSwgMTI4LCA3NCwgNzQsIDczLCAxMjgsIDc0LCA3NCwgNjksIDY5LCAxMjgsIDc0LCA3NCwgCisgICAgNjksIDEyOCwgNzQsIDc0LCA2NSwgMTI4LCA3NCwgNzMsIDc2LCAxMjgsIDc0LCA3MywgNzMsIDc3LCAxMjgsIDc0LCA3MywgCisgICAgNzMsIDEyOCwgNzQsIDczLCA3MiwgODYsIDY1LCA3NywgODUsIDc2LCA3MywgODksIDY1LCAxMjgsIDc0LCA3MywgNjUsIAorICAgIDEyOCwgNzQsIDcyLCA3OSwgODgsIDEyOCwgNzQsIDcyLCA3OSwgMTI4LCA3NCwgNzIsIDY5LCA3MiwgMTI4LCA3NCwgNzIsIAorICAgIDY1LCA4OSwgNzMsIDc4LCAxMjgsIDc0LCA3MiwgNjUsIDc4LCAxMjgsIDc0LCA3MiwgNjUsIDc3LCAxMjgsIDc0LCA3MiwgCisgICAgNjUsIDY1LCAxMjgsIDc0LCA3MiwgNjUsIDEyOCwgNzQsIDY5LCA4NSwgMTI4LCA3NCwgNjksIDgyLCA4NSwgODMsIDY1LCAKKyAgICA3NiwgNjksIDc3LCAxMjgsIDc0LCA2OSwgODIsIDY1LCAyMDYsIDc0LCA2OSwgODIsIDY1LCAxMjgsIDc0LCA2OSwgODIsIAorICAgIDEyOCwgNzQsIDY5LCA3MiwgMTI4LCA3NCwgNjksIDIwMCwgNzQsIDY5LCA3MSwgNzksIDcxLCA2NSwgNzgsIDEyOCwgNzQsIAorICAgIDY5LCA2OSwgNzcsIDEyOCwgNzQsIDY5LCA2NSwgNzgsIDgzLCAxMjgsIDc0LCA2NSwgODksIDc4LCAxMjgsIDc0LCA2NSwgCisgICAgODksIDczLCA3OCwgMTI4LCA3NCwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3NCwgNjUsIDg3LCAxMjgsIDc0LCAKKyAgICA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA3NCwgNjUsIDg2LCA2NSwgNzgsIDY5LCA4MywgMTk3LCA3NCwgNjUsIAorICAgIDg1LCAxMjgsIDc0LCA2NSwgODIsIDEyOCwgNzQsIDY1LCA4MCwgNjUsIDc4LCA2OSwgODMsIDE5NywgNzQsIDY1LCA4MCwgCisgICAgNjUsIDc4LCAxMjgsIDc0LCA2NSwgNzgsIDg1LCA2NSwgODIsIDg5LCAxMjgsIDc0LCA2NSwgNzYsIDc2LCA2NSwgNzQsIDY1LCAKKyAgICA3NiwgNjUsIDc2LCA3OSwgODUsIDcyLCA3OSwgODUsIDEyOCwgNzQsIDY1LCA3MywgMjA2LCA3NCwgNjUsIDczLCAxMjgsIAorICAgIDc0LCA2NSwgNzIsIDEyOCwgNzQsIDY1LCA2OCwgNjksIDEyOCwgNzQsIDY1LCA2NywgNzUsIDgzLCAxMjgsIDc0LCA2NSwgCisgICAgNjcsIDc1LCA0NSwgNzksIDQ1LCA3NiwgNjUsIDc4LCA4NCwgNjksIDgyLCA3OCwgMTI4LCA3NCwgNjUsIDY3LCAyMDMsIDc0LCAKKyAgICA0NSwgODMsIDczLCA3NywgODAsIDc2LCA3MywgNzAsIDczLCA2OSwgMTk2LCA3MywgOTAsIDcyLCA3MywgODQsIDgzLCA2NSwgCisgICAgMTI4LCA3MywgOTAsIDcyLCA3MywgODQsIDgzLCAxOTMsIDczLCA5MCwgNzIsIDY5LCAxMjgsIDczLCA5MCwgNjUsIDc1LCAKKyAgICA2NSwgODksIDE5MywgNzMsIDg5LCA2OSwgNzUsIDEyOCwgNzMsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgODUsIAorICAgIDc0LCA2NSwgMTI4LCA3MywgODQsIDIxMSwgNzMsIDg0LCA2OSwgODIsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDczLCA4NCwgCisgICAgNjksIDc3LCAxMjgsIDczLCA4MywgODMsIDcyLCA2NSwgODIsIDEyOCwgNzMsIDgzLCA3OSwgODMsIDY3LCA2OSwgNzYsIDY5LCAKKyAgICAyMTEsIDczLCA4MywgNzksIDc4LCAxMjgsIDczLCA4MywgNzksIDIwNiwgNzMsIDgzLCA3OSwgNzYsIDY1LCA4NCwgNjksIAorICAgIDEyOCwgNzMsIDgzLCA3NiwgNjUsIDc4LCA2OCwgMTI4LCA3MywgODMsIDY5LCA3OCwgNDUsIDczLCA4MywgNjksIDc4LCAKKyAgICAxMjgsIDczLCA4MywgNjUsIDc1LCA3MywgMTkzLCA3MywgODMsIDQ1LCA4MCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgNzMsIAorICAgIDgyLCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDczLCA4MiwgODUsIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgCisgICAgNzMsIDgyLCA3OSwgNzgsIDQ1LCA2NywgNzksIDgwLCA4MCwgNjksIDIxMCwgNzMsIDgyLCA3OSwgNzgsIDEyOCwgNzMsIDgyLCAKKyAgICA2NiwgMTI4LCA3MywgNzksIDg0LCA3MywgNzAsIDczLCA2OSwgMTk2LCA3MywgNzksIDg0LCA2NSwgODQsIDY5LCAxOTYsIAorICAgIDczLCA3OSwgODQsIDY1LCAxMjgsIDczLCA3OSwgODQsIDE5MywgNzMsIDc5LCA4MiwgMTI4LCA3MywgNzksIDY4LCA3MiwgCisgICAgNjUsIDY4LCA3MiwgMTI4LCA3MywgNzgsIDg2LCA3MywgODMsIDczLCA2NiwgNzYsIDE5NywgNzMsIDc4LCA4NiwgNjksIDgyLCAKKyAgICA4NCwgNjksIDY4LCAxMjgsIDczLCA3OCwgODYsIDY5LCA4MiwgODQsIDY5LCAxOTYsIDczLCA3OCwgODYsIDY5LCA4MiwgODMsIAorICAgIDE5NywgNzMsIDc4LCA4NCwgODIsIDc5LCA2OCwgODUsIDY3LCA2OSwgODIsIDEyOCwgNzMsIDc4LCA4NCwgNzMsIDEyOCwgCisgICAgNzMsIDc4LCA4NCwgNjksIDgyLCA4MywgODksIDc2LCA3NiwgNjUsIDY2LCA3MywgMTk1LCA3MywgNzgsIDg0LCA2OSwgODIsIAorICAgIDgzLCA2OSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDczLCA3OCwgODQsIDY5LCA4MiwgODMsIDY5LCA2NywgODQsIDczLCAKKyAgICA3OSwgMjA2LCA3MywgNzgsIDg0LCA2OSwgODIsIDgzLCA2OSwgNjcsIDg0LCA3MywgNzgsIDE5OSwgNzMsIDc4LCA4NCwgNjksIAorICAgIDgyLCA4MiwgNzksIDY2LCA2NSwgNzgsIDcxLCAxMjgsIDczLCA3OCwgODQsIDY5LCA4MiwgODIsIDc5LCA2NiwgNjUsIDc4LCAKKyAgICAxOTksIDczLCA3OCwgODQsIDY5LCA4MiwgODAsIDc5LCA3NiwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzMsIDc4LCA4NCwgNjksIAorICAgIDgyLCA3NiwgNzksIDY3LCA3NSwgNjksIDE5NiwgNzMsIDc4LCA4NCwgNjksIDgyLCA3NiwgNzMsIDc4LCA2OSwgNjUsIDIxMCwgCisgICAgNzMsIDc4LCA4NCwgNjksIDgyLCA3NiwgNjUsIDY3LCA2OSwgMTk2LCA3MywgNzgsIDg0LCA2OSwgODIsIDczLCA3OSwgMjEwLCAKKyAgICA3MywgNzgsIDg0LCA2OSwgODIsIDY5LCA4MywgMjEyLCA3MywgNzgsIDg0LCA2OSwgODIsIDY3LCA2NSwgNzYsIDY1LCA4NCwgCisgICAgNjksIDEyOCwgNzMsIDc4LCA4NCwgNjksIDcxLCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDczLCA3OCwgODQsIDY5LCAKKyAgICA3MSwgODIsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDczLCA3OCwgODQsIDY5LCA3MSwgODIsIDY1LCA3NiwgMTI4LCA3MywgNzgsIAorICAgIDg0LCA2OSwgNzEsIDgyLCA2NSwgMjA0LCA3MywgNzgsIDgzLCA4NSwgNzYsIDY1LCAyMTAsIDczLCA3OCwgODMsIDg0LCA4MiwgCisgICAgODUsIDc3LCA2OSwgNzgsIDg0LCA2NSwgMjA0LCA3MywgNzgsIDgzLCA3MywgNjgsIDY5LCAxMjgsIDczLCA3OCwgODMsIDczLCAKKyAgICA2OCwgMTk3LCA3MywgNzgsIDgzLCA2OSwgODIsIDg0LCA3MywgNzksIDIwNiwgNzMsIDc4LCA4MywgNjksIDY3LCA4NCwgCisgICAgMTI4LCA3MywgNzgsIDgzLCA2NywgODIsIDczLCA4MCwgODQsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDczLCA3OCwgODAsIDg1LCAKKyAgICAyMTIsIDczLCA3OCwgNzgsIDc5LCA2NywgNjksIDc4LCA2NywgNjksIDEyOCwgNzMsIDc4LCA3OCwgNzgsIDEyOCwgNzMsIAorICAgIDc4LCA3OCwgNjksIDgyLCAxMjgsIDczLCA3OCwgNzgsIDY5LCAyMTAsIDczLCA3OCwgNzgsIDEyOCwgNzMsIDc4LCA3MywgCisgICAgNzgsIDcxLCA4NSwgMTI4LCA3MywgNzgsIDczLCAxMjgsIDczLCA3OCwgNzIsIDczLCA2NiwgNzMsIDIxMiwgNzMsIDc4LCAKKyAgICA3MiwgNjksIDgyLCA2OSwgNzgsIDIxMiwgNzMsIDc4LCA3MiwgNjUsIDc2LCA2OSwgMTI4LCA3MywgNzgsIDcxLCA4NywgNjUsIAorICAgIDkwLCAxMjgsIDczLCA3OCwgNzAsIDc5LCA4MiwgNzcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDczLCA3OCwgNzAsIDc2LCA4NSwgCisgICAgNjksIDc4LCA2NywgNjksIDEyOCwgNzMsIDc4LCA3MCwgNzMsIDc4LCA3MywgODQsIDg5LCAxMjgsIDczLCA3OCwgNzAsIDczLCAKKyAgICA3OCwgNzMsIDg0LCAyMTcsIDczLCA3OCwgNjgsIDg1LCA4MywgODQsIDgyLCA3MywgNjUsIDIwNCwgNzMsIDc4LCA2OCwgNzMsIAorICAgIDgyLCA2OSwgNjcsIDIxMiwgNzMsIDc4LCA2OCwgNzMsIDY3LCA4NCwgNzMsIDc5LCAyMDYsIDczLCA3OCwgNjgsIDczLCA2NywgCisgICAgNjUsIDg0LCA3OSwgODIsIDEyOCwgNzMsIDc4LCA2OCwgNzMsIDY3LCA2NSwgODQsIDc5LCAyMTAsIDczLCA3OCwgNjgsIDczLCAKKyAgICAxOTUsIDczLCA3OCwgNjgsIDczLCA2NSwgMjA2LCA3MywgNzgsIDY4LCA2OSwgODgsIDEyOCwgNzMsIDc4LCA2OCwgNjksIAorICAgIDgwLCA2OSwgNzgsIDY4LCA2OSwgNzgsIDIxMiwgNzMsIDc4LCA2NywgODIsIDY5LCA3NywgNjksIDc4LCA4NCwgMTI4LCA3MywgCisgICAgNzgsIDY3LCA4MiwgNjksIDY1LCA4MywgNjksIDIxMSwgNzMsIDc4LCA2NywgODIsIDY5LCA2NSwgODMsIDY5LCAxMjgsIDczLCAKKyAgICA3OCwgNjcsIDgyLCA2OSwgNjUsIDgzLCAxOTcsIDczLCA3OCwgNjcsIDc5LCA3NywgODAsIDc2LCA2OSwgODQsIDE5NywgNzMsIAorICAgIDc4LCA2NywgNzksIDc3LCA3MywgNzgsIDE5OSwgNzMsIDc4LCA2NywgNzYsIDg1LCA2OCwgNzMsIDc4LCAxOTksIDczLCA3OCwgCisgICAgNjcsIDcyLCAxMjgsIDczLCA3OCwgNjYsIDc5LCAyMTYsIDczLCA3OCwgNjUsIDgwLCAxMjgsIDczLCA3OCwgNDUsIDY1LCAKKyAgICA3NiwgNjUsIDcwLCAxMjgsIDczLCA3NywgODAsIDY5LCA4MiwgNzMsIDY1LCAyMDQsIDczLCA3NywgODAsIDY5LCA4MiwgNzAsIAorICAgIDY5LCA2NywgODQsIDg1LCAyMDUsIDczLCA3NywgODAsIDY5LCA4MiwgNzAsIDY5LCA2NywgODQsIDY1LCAxMjgsIDczLCA3NywgCisgICAgODAsIDY5LCA4MiwgNzAsIDY5LCA2NywgODQsIDE5MywgNzMsIDc3LCA3OCwgMTI4LCA3MywgNzcsIDczLCA4MywgNjksIDc5LCAKKyAgICAyMTEsIDczLCA3NywgNzMsIDc4LCA1MSwgMTI4LCA3MywgNzcsIDczLCA3OCwgMTI4LCA3MywgNzcsIDczLCAyMDYsIDczLCAKKyAgICA3NywgNzMsIDcwLCA4NCwgNzIsIDc5LCA4MiwgNzksIDc4LCAxMjgsIDczLCA3NywgNzMsIDcwLCA4NCwgNzIsIDc5LCA4MiwgCisgICAgNjUsIDEyOCwgNzMsIDc3LCA3MywgNzAsIDc5LCA3OCwgNzksIDc4LCAxMjgsIDczLCA3NywgNzMsIDY4LCA3MywgNjUsIDgyLCAKKyAgICA3MSwgNzksIDc4LCAxMjgsIDczLCA3NywgNjUsIDcxLCAxOTcsIDczLCA3NiwgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgCisgICAgMTI4LCA3MywgNzYsIDg1LCA4OSwgMTI4LCA3MywgNzYsIDg1LCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDczLCAKKyAgICA3NiwgODUsIDg0LCAxMjgsIDczLCA3NiwgNzMsIDc3LCA3NywgODUsIDUyLCAxMjgsIDczLCA3NiwgNzMsIDc3LCA3NywgODUsIAorICAgIDUxLCAxMjgsIDczLCA3NiwgNzMsIDc3LCA3NywgODUsIDEyOCwgNzMsIDc2LCA3MywgNzcsIDc3LCAyMTMsIDczLCA3NiwgCisgICAgNTAsIDEyOCwgNzMsIDc1LCA2NSwgODIsIDY1LCAxMjgsIDczLCA3NSwgNjUsIDgyLCAxOTMsIDczLCA3NCwgMTI4LCA3MywgCisgICAgNzMsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgNzEsIDczLCAxMjgsIDczLCA3MSwgMjAxLCA3MywgNzEsIDcxLCAKKyAgICA4NywgODMsIDEyOCwgNzMsIDcwLCA3MywgNzgsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODQsIDczLCA3NSwgNjksIAorICAgIDg1LCA4NCwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA3MywgCisgICAgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgNzMsIAorICAgIDY5LCA4NSwgNzgsIDcxLCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDgwLCAKKyAgICA3MywgNjksIDg1LCA4MCwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgCisgICAgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDczLCA2OSwgODUsIDc4LCAKKyAgICA3MSwgNDUsIDc1LCA3MiwgNzMsIDY5LCA4NSwgNzUsIDcyLCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDY3LCA3MywgCisgICAgNjksIDg1LCA2NywgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCAKKyAgICA3MywgNjksIDg1LCA3OCwgMTk5LCA3MywgNjgsIDc2LCA2OSwgMTI4LCA3MywgNjgsIDczLCA3NywgMTI4LCA3MywgNjgsIAorICAgIDczLCAyMDUsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA2NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1NCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA1MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA0OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA0OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA0OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA0OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA0OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDY1LCA0OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA3MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA3MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA2NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1NCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIAorICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIAorICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA1MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIAorICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIAorICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA0OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIAorICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA0OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA0OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNzAsIDU3LCA0OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTcsIDQ5LCA1MiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU3LCA0OCwgNTIsIAorICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NiwgNjgsIDU1LCA0OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTYsIDY3LCA2NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU2LCA1NywgNjksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1NSwgNjgsIDUyLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTUsIDY1LCA1NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA1NywgNTYsIAorICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNTQsIDY4LCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDUzLCA1MSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA1MywgNDksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1NSwgNDksIDUwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTUsIDQ4LCA2NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA3MCwgNDksIAorICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNjksIDU2LCA0OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDU1LCA1MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1NSwgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1NCwgNTUsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTQsIDU0LCA1MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MywgNjYsIAorICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTMsIDU3LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUzLCA1MywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MSwgNTMsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1NCwgNTEsIDQ4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTQsIDUwLCA1NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MCwgNTMsIAorICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTAsIDUyLCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDcwLCA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA2OCwgNjksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MywgNjYsIDU2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTMsIDY2LCA1MywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1NywgNTAsIAorICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTcsIDQ5LCA2NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDU2LCA3MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MywgNjYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MywgNTIsIDUxLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTMsIDUyLCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MSwgNzAsIAorICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTEsIDY3LCA2NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUwLCA2OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MCwgNTUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MywgNTAsIDUyLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTMsIDUwLCA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA0OSwgNTYsIAorICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MiwgNjksIDY1LCA1MiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTIsIDY5LCA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUyLCA2OSwgNTAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MiwgNjksIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgCisgICAgNTIsIDY5LCA0OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIAorICAgIDQ5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDY3LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA2NSwgNDksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDY1LCA0OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIAorICAgIDQ5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDUxLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA2NSwgNDgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDY1LCA0OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIAorICAgIDQ4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDY1LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA2NSwgNDgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDY1LCA0OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIAorICAgIDQ4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDQ5LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNDgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNzAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA3MCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDcwLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDU2LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNzAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA3MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDcwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDcwLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNjksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNjksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA2OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDY5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDU0LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNjksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA2OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDY4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDY4LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNjcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNjgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA2OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDY4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDUyLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNjcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA2NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDY3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDY2LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNjUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1NywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNjcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA2NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDY3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDUwLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNjYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA2NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDY2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDU3LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNjYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA2NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDY2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDQ4LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNjUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA2NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDY1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDU1LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTQsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1MywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNjUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA2NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDU3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDY5LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA2NywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDU3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDUzLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTIsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDU2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDY3LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDU2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDUxLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDU1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDY1LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDU1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDQ5LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNDgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTQsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1NCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDU0LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDU2LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1NCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTQsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1NCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDU0LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDcwLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNjksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTMsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1MywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDUzLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDU0LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1MiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTMsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1MiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDUyLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDY4LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNjcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTIsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1MiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDUyLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDUyLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1MCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTEsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1MSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDUxLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDY2LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNjUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1NywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTEsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1MSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDUxLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDUwLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA0OCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDUwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDU3LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNTAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA1MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDUwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDQ4LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNDksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA0OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDQ5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDU1LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTQsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1MywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNDksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA0OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDQ4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDY5LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA2NywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NywgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU3LCA0OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAorICAgIDQ4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDUzLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTIsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNzAsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA3MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDcwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDY3LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNzAsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA3MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDcwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDUxLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNjksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA2OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDY5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDY1LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNjksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA2OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDY5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDQ5LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNDgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNjgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA2OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDY4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDU2LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNjgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA2OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDY4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDcwLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNjksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNjcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA2NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDY3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDU0LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNjcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA2NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDY2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDY4LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNjcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNjYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA2NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDY2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDUyLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNjUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA2NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDY1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDY2LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNjUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1NywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNjUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA2NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDY1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDUwLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDU3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDU3LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDU3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDQ4LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDU2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDU1LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTQsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1MywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDU1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDY5LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA2NywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDU1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDUzLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTIsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTQsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1NCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDU0LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDY3LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA2NSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTQsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1NCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDU0LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDUxLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTMsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1MywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDUzLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDY1LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1NiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTMsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1MywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDUzLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDQ5LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNDgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTIsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1MiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDUyLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDU2LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1NCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTIsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1MiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDUyLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDcwLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNjksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTEsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1MSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDUxLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDU0LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1MiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTEsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDUwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDY4LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNjcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNTAsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA1MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDUwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDUyLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNDksIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDQ5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDY2LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNjUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1NywgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNDksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDQ5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDUwLCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNDgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA0OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDQ4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDU3LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKKyAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCisgICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA0NSwgNTAsIDcwLCA1NiwgNDgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCisgICAgNzAsIDU2LCA0OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAorICAgIDQ4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDQ4LCAKKyAgICAxMjgsIDczLCA2OCwgNjksIDc4LCA4NCwgNzMsIDcwLCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3MywgNjgsIAorICAgIDY5LCA3OCwgODQsIDczLCA2NywgNjUsIDIwNCwgNzMsIDY3LCA3OSwgNzgsIDEyOCwgNzMsIDY3LCA3MiwgNzksIDg1LCAKKyAgICAxMjgsIDczLCA2NywgNzIsIDc5LCA4MywgMTI4LCA3MywgNjcsIDcyLCA3MywgNzcsIDY1LCA4NCwgNzksIDgzLCAxMjgsIAorICAgIDczLCA2NywgNzIsIDY1LCA2OCwgNzMsIDc4LCAxMjgsIDczLCA2NywgNjksIDc2LCA2NSwgNzgsIDY4LCA3MywgNjcsIDQ1LCAKKyAgICA4OSwgODIsIDEyOCwgNzMsIDY2LCA3MywgNzAsIDczLCA3NiwgNzMsIDEyOCwgNzMsIDY1LCA4NSwgNjgsIDY1LCAxMjgsIAorICAgIDczLCA0OCwgNDksIDUzLCAxMjgsIDczLCA0OCwgNDksIDUyLCAxMjgsIDczLCA0OCwgNDksIDUxLCAxMjgsIDczLCA0OCwgCisgICAgNDksIDUwLCAxMjgsIDczLCA0OCwgNDksIDQ5LCA2NSwgMTI4LCA3MywgNDgsIDQ5LCA0OSwgMTI4LCA3MywgNDgsIDQ5LCAKKyAgICA0OCwgNjUsIDEyOCwgNzMsIDQ4LCA0OSwgNDgsIDEyOCwgNzMsIDQ4LCA0OCwgNTcsIDY1LCAxMjgsIDczLCA0OCwgNDgsIAorICAgIDU3LCAxMjgsIDczLCA0OCwgNDgsIDU2LCAxMjgsIDczLCA0OCwgNDgsIDU1LCAxMjgsIDczLCA0OCwgNDgsIDU0LCAxMjgsIAorICAgIDczLCA0OCwgNDgsIDUzLCA2NSwgMTI4LCA3MywgNDgsIDQ4LCA1MywgMTI4LCA3MywgNDgsIDQ4LCA1MiwgMTI4LCA3MywgCisgICAgNDgsIDQ4LCA1MSwgMTI4LCA3MywgNDgsIDQ4LCA1MCwgMTI4LCA3MywgNDgsIDQ4LCA0OSwgMTI4LCA3MywgNDUsIDg5LCAKKyAgICA4NSwgMTI4LCA3MywgNDUsIDg5LCA3OSwgMTI4LCA3MywgNDUsIDg5LCA2OSwgNzksIDEyOCwgNzMsIDQ1LCA4OSwgNjksIAorICAgIDEyOCwgNzMsIDQ1LCA4OSwgNjUsIDY5LCAxMjgsIDczLCA0NSwgODksIDY1LCA0NSwgNzksIDEyOCwgNzMsIDQ1LCA4OSwgCisgICAgNjUsIDEyOCwgNzMsIDQ1LCA3OSwgNDUsIDczLCAxMjgsIDczLCA0NSwgNzksIDEyOCwgNzMsIDQ1LCA2OSwgODUsIDEyOCwgCisgICAgNzMsIDQ1LCA2NiwgNjksIDY1LCA3NywgMTI4LCA3MywgNDUsIDY1LCA4MiwgNjUsIDY5LCA2NSwgMTI4LCA3MywgNDUsIDY1LCAKKyAgICAxMjgsIDcyLCA5MCwgOTAsIDkwLCA3MSwgMTI4LCA3MiwgOTAsIDkwLCA5MCwgMTI4LCA3MiwgOTAsIDkwLCA4MCwgMTI4LCAKKyAgICA3MiwgOTAsIDkwLCAxMjgsIDcyLCA5MCwgODcsIDcxLCAxMjgsIDcyLCA5MCwgODcsIDEyOCwgNzIsIDkwLCA4NCwgMTI4LCAKKyAgICA3MiwgOTAsIDcxLCAxMjgsIDcyLCA4OSwgODMsIDg0LCA2OSwgODIsIDY5LCA4MywgNzMsIDIxMSwgNzIsIDg5LCA4MCwgNzksIAorICAgIDY4LCA3MywgNjUsIDgzLCA4NCwgNzksIDc2LCA2OSwgMTI4LCA3MiwgODksIDgwLCA3MiwgNjksIDc4LCA2NSwgODQsIDczLCAKKyAgICA3OSwgMjA2LCA3MiwgODksIDgwLCA3MiwgNjksIDc4LCA0NSwgNzcsIDczLCA3OCwgODUsIDgzLCAxMjgsIDcyLCA4OSwgODAsIAorICAgIDcyLCA2OSwgNzgsIDEyOCwgNzIsIDg5LCA4MCwgNzIsIDY5LCAyMDYsIDcyLCA4OSwgNzEsIDczLCA2OSwgNzMsIDY1LCAKKyAgICAxMjgsIDcyLCA4OCwgODcsIDcxLCAxMjgsIDcyLCA4OCwgODUsIDc5LCA4OCwgMTI4LCA3MiwgODgsIDg1LCA3OSwgODQsIAorICAgIDEyOCwgNzIsIDg4LCA4NSwgNzksIDgwLCAxMjgsIDcyLCA4OCwgODUsIDc5LCAxMjgsIDcyLCA4OCwgNzksIDg4LCAxMjgsIAorICAgIDcyLCA4OCwgNzksIDg0LCAxMjgsIDcyLCA4OCwgNzksIDgwLCAxMjgsIDcyLCA4OCwgNzksIDEyOCwgNzIsIDg4LCA3MywgCisgICAgODgsIDEyOCwgNzIsIDg4LCA3MywgODQsIDEyOCwgNzIsIDg4LCA3MywgODAsIDEyOCwgNzIsIDg4LCA3MywgNjksIDg4LCAKKyAgICAxMjgsIDcyLCA4OCwgNzMsIDY5LCA4NCwgMTI4LCA3MiwgODgsIDczLCA2OSwgODAsIDEyOCwgNzIsIDg4LCA3MywgNjksIAorICAgIDEyOCwgNzIsIDg4LCA3MywgMTI4LCA3MiwgODgsIDY5LCA4OCwgMTI4LCA3MiwgODgsIDY5LCA4MCwgMTI4LCA3MiwgODgsIAorICAgIDY5LCAxMjgsIDcyLCA4OCwgNjUsIDg4LCAxMjgsIDcyLCA4OCwgNjUsIDg0LCAxMjgsIDcyLCA4OCwgNjUsIDgwLCAxMjgsIAorICAgIDcyLCA4OCwgNjUsIDEyOCwgNzIsIDg3LCA4NSwgMTI4LCA3MiwgODcsIDY1LCA3MywgODIsIDEyOCwgNzIsIDg3LCA2NSwgCisgICAgNzIsIDEyOCwgNzIsIDg1LCA4NiwgNjUsIDEyOCwgNzIsIDg1LCA4MywgNzIsIDY5LCAxOTYsIDcyLCA4NSwgODMsIDcyLCAKKyAgICAxMjgsIDcyLCA4NSwgODIsIDY1LCA3OCwgMTI4LCA3MiwgODUsIDc5LCA4NCwgMTI4LCA3MiwgODUsIDc4LCA2OCwgODIsIAorICAgIDY5LCA2OCwgODMsIDEyOCwgNzIsIDg1LCA3OCwgNjgsIDgyLCA2OSwgNjgsIDIxMSwgNzIsIDg1LCA3OCwgNjgsIDgyLCA2OSwgCisgICAgNjgsIDEyOCwgNzIsIDg1LCA3OCwgNjgsIDgyLCA2OSwgMTk2LCA3MiwgODUsIDc4LCAxMjgsIDcyLCA4NSwgNzcsIDIwOCwgCisgICAgNzIsIDg1LCA3NywgNjUsIDc4LCAxMjgsIDcyLCA4NSwgNzcsIDY1LCAyMDYsIDcyLCA4NSwgNzYsIDUwLCAxMjgsIDcyLCAKKyAgICA4NSwgNzMsIDczLCA4NCwgNzksIDEyOCwgNzIsIDg1LCA3MSwgNzEsIDczLCA3OCwgMTk5LCA3MiwgODUsIDY2LCA1MCwgCisgICAgMTI4LCA3MiwgODUsIDY2LCAxNzgsIDcyLCA4NSwgNjYsIDEyOCwgNzIsIDg1LCA2NSwgODIsIDY1LCA2OCwgNjgsIDc5LCAKKyAgICAxMjgsIDcyLCA4NSwgNjUsIDc4LCAxMjgsIDcyLCA4NCwgODMsIDEyOCwgNzIsIDg0LCA3NCwgMTI4LCA3MiwgODIsIDg5LCAKKyAgICA4NiwgNzgsIDczLCAxOTMsIDcyLCA4MCwgODcsIDcxLCAxMjgsIDcyLCA4MCwgNjUsIDEyOCwgNzIsIDgwLCAxMjgsIDcyLCAKKyAgICA3OSwgODUsIDgzLCAxOTcsIDcyLCA3OSwgODUsIDgyLCA3MSwgNzYsIDY1LCA4MywgODMsIDEyOCwgNzIsIDc5LCA4NSwgODIsIAorICAgIDcxLCA3NiwgNjUsIDgzLCAyMTEsIDcyLCA3OSwgODUsIDgyLCAxMjgsIDcyLCA3OSwgODUsIDIxMCwgNzIsIDc5LCA4NCwgCisgICAgNjksIDc2LCAxMjgsIDcyLCA3OSwgODQsIDY1LCAxMjgsIDcyLCA3OSwgODMsIDgwLCA3MywgODQsIDY1LCA3NiwgMTI4LCAKKyAgICA3MiwgNzksIDgyLCA4MywgNjksIDEyOCwgNzIsIDc5LCA4MiwgODMsIDE5NywgNzIsIDc5LCA4MiwgODIsIDEyOCwgNzIsIAorICAgIDc5LCA4MiwgNzgsIDgzLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA3NiwgMjE3LCA3MiwgCisgICAgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgNzksIAorICAgIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIDgyLCAKKyAgICA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCA3MywgCisgICAgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIAorICAgIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCAKKyAgICA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgCisgICAgODQsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIAorICAgIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCAKKyAgICA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgCisgICAgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIAorICAgIDQ4LCA1MywgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCAKKyAgICA1MywgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgCisgICAgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIAorICAgIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCAKKyAgICA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MywgCisgICAgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MiwgMTI4LCAKKyAgICA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgCisgICAgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIAorICAgIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCAKKyAgICA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgCisgICAgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIAorICAgIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCAKKyAgICA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgCisgICAgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIAorICAgIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCAKKyAgICA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgCisgICAgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIAorICAgIDQ4LCA1MCwgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCAKKyAgICA1MCwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgCisgICAgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIAorICAgIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCAKKyAgICA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA0OSwgCisgICAgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA0OCwgMTI4LCAKKyAgICA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgCisgICAgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIAorICAgIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCAKKyAgICA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgCisgICAgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIAorICAgIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCAKKyAgICA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgCisgICAgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1NCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIAorICAgIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCAKKyAgICA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MiwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgCisgICAgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIAorICAgIDQ4LCA0OCwgNDUsIDQ4LCA1MCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCAKKyAgICA0OCwgNDUsIDQ4LCA0OSwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgCisgICAgNDUsIDQ4LCA0OCwgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgMTI4LCA3MiwgNzksIDgyLCAKKyAgICA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCAyMDQsIDcyLCA3OSwgODIsIDczLCAxMjgsIDcyLCA3OSwgODIsIDE5MywgNzIsIAorICAgIDc5LCA3OSwgODUsIDEyOCwgNzIsIDc5LCA3OSwgODIsIDg1LCAxMjgsIDcyLCA3OSwgNzksIDgwLCAxMjgsIDcyLCA3OSwgCisgICAgNzksIDc4LCAxMjgsIDcyLCA3OSwgNzksIDc1LCA2OSwgNjgsIDEyOCwgNzIsIDc5LCA3OSwgNzUsIDY5LCAxOTYsIDcyLCAKKyAgICA3OSwgNzgsIDY5LCA4OSwgNjYsIDY5LCA2OSwgMTI4LCA3MiwgNzksIDc4LCA2OSwgMjE3LCA3MiwgNzksIDc3LCA3OSwgODQsIAorICAgIDcyLCA2OSwgODQsIDczLCA2NywgMTI4LCA3MiwgNzksIDc3LCA3OSwgODQsIDcyLCA2OSwgODQsIDczLCAxOTUsIDcyLCA3OSwgCisgICAgNzYsIDc5LCAxMjgsIDcyLCA3OSwgNzYsIDc2LCA3OSwgMjE1LCA3MiwgNzksIDc2LCA2OSwgMTI4LCA3MiwgNzksIDc2LCAKKyAgICA2OCwgNzMsIDc4LCAxOTksIDcyLCA3OSwgNzYsIDY1LCA3NywgMTI4LCA3MiwgNzksIDc2LCA2NSwgMjA1LCA3MiwgNzksIAorICAgIDc1LCA2NSwgMTI4LCA3MiwgNzksIDY3LCA3NSwgNjksIDIxNywgNzIsIDc5LCA2NywgNzIsIDc5LCAxMjgsIDcyLCA3OCwgCisgICAgODUsIDg0LCAxMjgsIDcyLCA3OCwgODUsIDc5LCA4OCwgMTI4LCA3MiwgNzgsIDg1LCA3OSwgMTI4LCA3MiwgNzgsIDg1LCAKKyAgICA2NiwgMTI4LCA3MiwgNzgsIDc5LCA4OCwgMTI4LCA3MiwgNzgsIDc5LCA4NCwgMTI4LCA3MiwgNzgsIDc5LCA4MCwgMTI4LCAKKyAgICA3MiwgNzgsIDczLCA4OCwgMTI4LCA3MiwgNzgsIDczLCA4NCwgMTI4LCA3MiwgNzgsIDczLCA4MCwgMTI4LCA3MiwgNzgsIAorICAgIDczLCA2OSwgODgsIDEyOCwgNzIsIDc4LCA3MywgNjksIDg0LCAxMjgsIDcyLCA3OCwgNzMsIDY5LCA4MCwgMTI4LCA3MiwgCisgICAgNzgsIDczLCA2OSwgMTI4LCA3MiwgNzgsIDczLCAxMjgsIDcyLCA3OCwgNjksIDg4LCAxMjgsIDcyLCA3OCwgNjksIDgwLCAKKyAgICAxMjgsIDcyLCA3OCwgNjksIDEyOCwgNzIsIDc4LCA2NSwgODgsIDEyOCwgNzIsIDc4LCA2NSwgODUsIDEyOCwgNzIsIDc4LCAKKyAgICA2NSwgODQsIDEyOCwgNzIsIDc4LCA2NSwgODAsIDEyOCwgNzIsIDc4LCA2NSwgMTI4LCA3MiwgNzcsIDg5LCA4OCwgMTI4LCAKKyAgICA3MiwgNzcsIDg5LCA4MiwgODgsIDEyOCwgNzIsIDc3LCA4OSwgODIsIDEyOCwgNzIsIDc3LCA4OSwgODAsIDEyOCwgNzIsIAorICAgIDc3LCA4OSwgMTI4LCA3MiwgNzcsIDg1LCA4OCwgMTI4LCA3MiwgNzcsIDg1LCA4NCwgMTI4LCA3MiwgNzcsIDg1LCA4MiwgCisgICAgODgsIDEyOCwgNzIsIDc3LCA4NSwgODIsIDEyOCwgNzIsIDc3LCA4NSwgODAsIDEyOCwgNzIsIDc3LCA4NSwgNzksIDg4LCAKKyAgICAxMjgsIDcyLCA3NywgODUsIDc5LCA4MCwgMTI4LCA3MiwgNzcsIDg1LCA3OSwgMTI4LCA3MiwgNzcsIDg1LCAxMjgsIDcyLCAKKyAgICA3NywgNzksIDg4LCAxMjgsIDcyLCA3NywgNzksIDg0LCAxMjgsIDcyLCA3NywgNzksIDgwLCAxMjgsIDcyLCA3NywgNzksIAorICAgIDEyOCwgNzIsIDc3LCA3MywgODgsIDEyOCwgNzIsIDc3LCA3MywgODQsIDEyOCwgNzIsIDc3LCA3MywgODAsIDEyOCwgNzIsIAorICAgIDc3LCA3MywgNjksIDg4LCAxMjgsIDcyLCA3NywgNzMsIDY5LCA4MCwgMTI4LCA3MiwgNzcsIDczLCA2OSwgMTI4LCA3MiwgCisgICAgNzcsIDczLCAxMjgsIDcyLCA3NywgNjksIDEyOCwgNzIsIDc3LCA2NSwgODgsIDEyOCwgNzIsIDc3LCA2NSwgODQsIDEyOCwgCisgICAgNzIsIDc3LCA2NSwgODAsIDEyOCwgNzIsIDc3LCA2NSwgMTI4LCA3MiwgNzYsIDg5LCA4OCwgMTI4LCA3MiwgNzYsIDg5LCAKKyAgICA4NCwgMTI4LCA3MiwgNzYsIDg5LCA4MiwgODgsIDEyOCwgNzIsIDc2LCA4OSwgODIsIDEyOCwgNzIsIDc2LCA4OSwgODAsIAorICAgIDEyOCwgNzIsIDc2LCA4OSwgMTI4LCA3MiwgNzYsIDg1LCA4OCwgMTI4LCA3MiwgNzYsIDg1LCA4NCwgMTI4LCA3MiwgNzYsIAorICAgIDg1LCA4MiwgODgsIDEyOCwgNzIsIDc2LCA4NSwgODIsIDEyOCwgNzIsIDc2LCA4NSwgODAsIDEyOCwgNzIsIDc2LCA4NSwgCisgICAgNzksIDg4LCAxMjgsIDcyLCA3NiwgODUsIDc5LCA4MCwgMTI4LCA3MiwgNzYsIDg1LCA3OSwgMTI4LCA3MiwgNzYsIDg1LCAKKyAgICAxMjgsIDcyLCA3NiwgNzksIDg4LCAxMjgsIDcyLCA3NiwgNzksIDgwLCAxMjgsIDcyLCA3NiwgNzksIDEyOCwgNzIsIDc2LCAKKyAgICA3MywgODgsIDEyOCwgNzIsIDc2LCA3MywgODQsIDEyOCwgNzIsIDc2LCA3MywgODAsIDEyOCwgNzIsIDc2LCA3MywgNjksIAorICAgIDg4LCAxMjgsIDcyLCA3NiwgNzMsIDY5LCA4MCwgMTI4LCA3MiwgNzYsIDczLCA2OSwgMTI4LCA3MiwgNzYsIDczLCAxMjgsIAorICAgIDcyLCA3NiwgNjksIDg4LCAxMjgsIDcyLCA3NiwgNjksIDgwLCAxMjgsIDcyLCA3NiwgNjksIDEyOCwgNzIsIDc2LCA2NSwgCisgICAgODgsIDEyOCwgNzIsIDc2LCA2NSwgODUsIDEyOCwgNzIsIDc2LCA2NSwgODQsIDEyOCwgNzIsIDc2LCA2NSwgODAsIDEyOCwgCisgICAgNzIsIDc2LCA2NSwgMTI4LCA3MiwgNzYsIDEyOCwgNzIsIDc1LCAxMjgsIDcyLCA3MywgOTAsIDY2LCAxMjgsIDcyLCA3MywgCisgICAgODksIDc5LCAxMjgsIDcyLCA3MywgODQsIDg0LCA3MywgNzgsIDE5OSwgNzIsIDczLCA4MywgODQsIDc5LCA4MiwgNzMsIAorICAgIDE5NSwgNzIsIDczLCA4MiwgNzMsIDgxLCAxMjgsIDcyLCA3MywgNzgsIDcxLCA2OSwgNjgsIDEyOCwgNzIsIDczLCA3OCwgCisgICAgNzEsIDY5LCAxOTYsIDcyLCA3MywgNzgsIDcxLCA2OSwgMTI4LCA3MiwgNzMsIDcxLCA3MiwgNDUsIDgzLCA4MCwgNjksIDY5LCAKKyAgICAxOTYsIDcyLCA3MywgNzEsIDcyLCA0NSwgODIsIDY5LCA4NiwgNjksIDgyLCA4MywgNjksIDY4LCA0NSwgMTg1LCA3MiwgNzMsIAorICAgIDcxLCA3MiwgNDUsIDc2LCA3OSwgMjE1LCA3MiwgNzMsIDcxLCA3MiwgNDUsIDcyLCA2OSwgNjksIDc2LCA2OSwgMTk2LCA3MiwgCisgICAgNzMsIDY5LCA4OCwgMTI4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA3MiwgNzMsIDY5LCAKKyAgICA4NSwgNzIsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgODAsIDczLCA2OSwgCisgICAgODUsIDgwLCAxMjgsIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCA3MiwgNzMsIDY5LCAKKyAgICA4NSwgNzIsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgNzIsIDczLCA2OSwgODUsIDIwMCwgNzIsIDczLCA2OSwgODIsIAorICAgIDc5LCA3MSwgNzYsIDg5LCA4MCwgNzIsIDczLCAxOTUsIDcyLCA3MywgNjksIDEyOCwgNzIsIDczLCA2OCwgNzMsIDc4LCAKKyAgICAxOTksIDcyLCA3MywgNjgsIDY5LCA4NCwgMTI4LCA3MiwgNzMsIDY4LCA2OSwgMTI4LCA3MiwgNzMsIDY2LCA3MywgODMsIAorICAgIDY3LCA4NSwgODMsIDEyOCwgNzIsIDczLCA0NSwgODIsIDY5LCA4MywgMTI4LCA3MiwgNzIsIDg3LCA2NSwgMTI4LCA3MiwgCisgICAgNzIsIDg1LCAxMjgsIDcyLCA3MiwgNzMsIDEyOCwgNzIsIDcyLCA2OSwgNjksIDEyOCwgNzIsIDcyLCA2OSwgMTI4LCA3MiwgCisgICAgNzIsIDY1LCA2NSwgMTI4LCA3MiwgNzEsIDEyOCwgNzIsIDY5LCA4OSwgODQsIDEyOCwgNzIsIDY5LCA4OCwgNzMsIDcwLCAKKyAgICA3OSwgODIsIDIwNSwgNzIsIDY5LCA4OCwgNjUsIDcxLCA4MiwgNjUsIDIwNSwgNzIsIDY5LCA4OCwgNjUsIDcxLCA3OSwgNzgsIAogICAgIDEyOCwgNzIsIDY5LCA4MiwgODUsIDg0LCA4NSwgMTI4LCA3MiwgNjksIDgyLCA4NSwgMTI4LCA3MiwgNjksIDgyLCA3NywgCiAgICAgNzMsIDg0LCA3MywgNjUsIDIwNiwgNzIsIDY5LCA4MiwgNzcsIDczLCA3OSwgNzgsIDczLCA2NSwgMjA2LCA3MiwgNjksIDgyLCAKICAgICA3NywgNjksIDgzLCAxMjgsIDcyLCA2OSwgODIsIDY5LCAxMjgsIDcyLCA2OSwgODIsIDY2LCAxMjgsIDcyLCA2OSwgODIsIApAQCAtMzc1MCw0MjkgKzM3NzksNDM4IEBACiAgICAgNDUsIDY5LCA4NiwgNzMsIDIwNCwgNzIsIDY5LCA2NSwgNjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDEyOCwgNzIsIDY5LCAKICAgICA2NSwgNjgsIDgzLCA4NCwgNzksIDc4LCAxOTcsIDcyLCA2OSwgNjUsIDY4LCA4MCwgNzIsIDc5LCA3OCwgNjksIDEyOCwgNzIsIAogICAgIDY5LCA2NSwgNjgsIDczLCA3OCwgNzEsIDEyOCwgNzIsIDY5LCA2NSwgNjgsIDQ1LCA2NiwgNjUsIDc4LCA2OCwgNjUsIDcxLCAKLSAgICA2OSwgMTI4LCA3MiwgNjYsIDY1LCA4MywgNjUsIDQ1LCA2OSwgODMsIDY1LCA4MywgMTkzLCA3MiwgNjYsIDY1LCA4MywgCi0gICAgMTkzLCA3MiwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MiwgNjUsIDg3LCA3NCwgMTI4LCA3MiwgNjUsIDg2LCAKLSAgICA2OSwgMTI4LCA3MiwgNjUsIDg1LCA4MCwgODQsIDgzLCA4NCwgNzMsIDc3LCA3NywgNjksIDEyOCwgNzIsIDY1LCAyMTMsIAotICAgIDcyLCA2NSwgODQsIDgyLCA2NSwgMjA2LCA3MiwgNjUsIDg0LCA3MiwgNzMsIDEyOCwgNzIsIDY1LCA4NCwgNjksIDEyOCwgCi0gICAgNzIsIDY1LCA4NCwgNjcsIDcyLCA3MywgNzgsIDE5OSwgNzIsIDY1LCA4NCwgNjUsIDE5OCwgNzIsIDY1LCA4MywgNjksIAotICAgIDIxMCwgNzIsIDY1LCA4MywgNjUsIDc4LCA4NCwgNjUsIDEyOCwgNzIsIDY1LCA4MiwgODAsIDc5LCA3OSwgNzgsIDEyOCwgCi0gICAgNzIsIDY1LCA4MiwgODAsIDc5LCA3OSwgMjA2LCA3MiwgNjUsIDgyLCA3NywgNzksIDc4LCA3MywgNjcsIDEyOCwgNzIsIDY1LCAKLSAgICA4MiwgNzUsIDc2LCA2OSwgNjUsIDIwNiwgNzIsIDY1LCA4MiwgNjgsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDcyLCA2NSwgODIsIAotICAgIDE5NiwgNzIsIDY1LCA4MCwgODAsIDIxNywgNzIsIDY1LCA3OCwgODUsIDc4LCA3OSwgMjA3LCA3MiwgNjUsIDc4LCA3MSwgCi0gICAgOTAsIDcyLCA3OSwgMjEzLCA3MiwgNjUsIDc4LCA2OCwgODMsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDIxMSwgNzIsIDY1LCAKLSAgICA3OCwgNjgsIDc2LCA2OSwgODMsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDc2LCA2OSwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNjYsIAotICAgIDY1LCA3MSwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDc5LCA4NiwgNjUsIDc2LCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgCi0gICAgNzksIDg2LCA2NSwgMjA0LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDcyLCA3OSwgNzksIDc1LCAxMjgsIDcyLCA2NSwgNzgsIDY4LCAKLSAgICA0NSwgNzIsIDc5LCA3OSwgMjAzLCA3MiwgNjUsIDc4LCA2OCwgNDUsIDcyLCA3MywgNzgsIDcxLCA2OSwgMTI4LCA3MiwgNjUsIAotICAgIDc4LCA2OCwgNDUsIDcyLCA3MywgNzgsIDcxLCAxOTcsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNzAsIDc2LCA2NSwgODQsIDEyOCwgCi0gICAgNzIsIDY1LCA3OCwgNjgsIDQ1LCA3MCwgNzYsIDY1LCAyMTIsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNzAsIDczLCA4MywgODQsIAotICAgIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA2NywgODUsIDgyLCA3NiwgNzMsIDY3LCA4NSwgNjksIDEyOCwgNzIsIDY1LCA3OCwgCi0gICAgNjgsIDQ1LCA2NywgODUsIDgyLCA3NiwgNzMsIDY3LCA4NSwgMTk3LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDY3LCA4NSwgODAsIAotICAgIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA2NywgODUsIDIwOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA2NywgNzYsIDY1LCA4NywgCi0gICAgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDY3LCA3NiwgNjUsIDIxNSwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA2NywgNzMsIDgyLCAKLSAgICA2NywgNzYsIDY5LCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNjcsIDczLCA4MiwgNjcsIDc2LCAxOTcsIDcyLCA2NSwgNzgsIAotICAgIDY4LCA0NSwgNjUsIDc4LCA3MSwgNzYsIDY5LCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNjUsIDc4LCA3MSwgNzYsIDE5NywgCi0gICAgNzIsIDY1LCA3OCwgNjgsIDEyOCwgNzIsIDY1LCA3OCwgNDUsIDY1LCA3NSwgNjUsIDg0LCAxMjgsIDcyLCA2NSwgNzcsIDkwLCAKLSAgICA2NSwgMTI4LCA3MiwgNjUsIDc3LCA5MCwgMTkzLCA3MiwgNjUsIDc3LCA4MywgODQsIDY5LCAyMTAsIDcyLCA2NSwgNzcsIAotICAgIDc3LCA2OSwgODIsIDEyOCwgNzIsIDY1LCA3NywgNzcsIDY5LCAyMTAsIDcyLCA2NSwgNzcsIDY2LCA4NSwgODIsIDcxLCA2OSwgCi0gICAgODIsIDEyOCwgNzIsIDY1LCA3NiwgODEsIDY1LCAxMjgsIDcyLCA2NSwgNzYsIDc5LCAxMjgsIDcyLCA2NSwgNzYsIDcwLCAKLSAgICA0NSwgNjcsIDczLCA4MiwgNjcsIDc2LCAxOTcsIDcyLCA2NSwgNzYsIDcwLCAxMjgsIDcyLCA2NSwgNzYsIDY2LCA2OSwgODIsIAotICAgIDY4LCAxMjgsIDcyLCA2NSwgNzYsIDY1LCA3OCwgODQsIDY1LCAxMjgsIDcyLCA2NSwgNzMsIDg0LCA4NSwgMTI4LCA3MiwgCi0gICAgNjUsIDczLCAyMTEsIDcyLCA2NSwgNzMsIDgyLCA2NywgODUsIDg0LCAxMjgsIDcyLCA2NSwgNzMsIDgyLCAxMjgsIDcyLCAKLSAgICA2NSwgNzEsIDc2LCA2NSwgMjE4LCA3MiwgNjUsIDcxLCA3NiwgMTI4LCA3MiwgNjUsIDcwLCA4NSwgNzUsIDcyLCA2NSwgCi0gICAgMTI4LCA3MiwgNjUsIDcwLCA4NSwgNzUsIDcyLCAxMjgsIDcyLCA2NSwgNjksIDcxLCAyMDQsIDcyLCA2NSwgNjUsIDgyLCAKLSAgICA4NSwgMTI4LCA3MiwgNjUsIDY1LCA3NywgMTI4LCA3MiwgNjUsIDE5MywgNzIsIDY1LCA0NSwgNzIsIDY1LCAxMjgsIDcyLCAKLSAgICA0OCwgNDgsIDU2LCAxMjgsIDcyLCA0OCwgNDgsIDU1LCAxMjgsIDcyLCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA3MiwgNDgsIAotICAgIDQ4LCA1NCwgMTI4LCA3MiwgNDgsIDQ4LCA1MywgMTI4LCA3MiwgNDgsIDQ4LCA1MiwgMTI4LCA3MiwgNDgsIDQ4LCA1MSwgCi0gICAgMTI4LCA3MiwgNDgsIDQ4LCA1MCwgMTI4LCA3MiwgNDgsIDQ4LCA0OSwgMTI4LCA3MiwgNDUsIDg0LCA4OSwgODAsIDE5NywgCi0gICAgNzEsIDg5LCA4NSwgMTI4LCA3MSwgODksIDc5LCA3OCwgMTI4LCA3MSwgODksIDc5LCAxMjgsIDcxLCA4OSwgNzMsIDEyOCwgCi0gICAgNzEsIDg5LCA3MCwgMjEzLCA3MSwgODksIDY5LCA2OSwgMTI4LCA3MSwgODksIDY1LCA4MywgMTI4LCA3MSwgODksIDY1LCAKLSAgICA2NSwgMTI4LCA3MSwgODksIDY1LCAxMjgsIDcxLCA4OSwgMTI4LCA3MSwgODcsIDg1LCAxMjgsIDcxLCA4NywgNzMsIDEyOCwgCi0gICAgNzEsIDg3LCA2OSwgNjksIDEyOCwgNzEsIDg3LCA2OSwgMTI4LCA3MSwgODcsIDY1LCA2NSwgMTI4LCA3MSwgODcsIDY1LCAKLSAgICAxMjgsIDcxLCA4NiwgNjUsIDc4LCA3MSwgMTI4LCA3MSwgODYsIDEyOCwgNzEsIDg1LCA4MiwgODUsIDgzLCA3MiwgMTI4LCAKLSAgICA3MSwgODUsIDgyLCA4NSwgNzgsIDEyOCwgNzEsIDg1LCA4MiwgNzcsIDg1LCA3NSwgNzIsIDIwMSwgNzEsIDg1LCA4MiwgNjUsIAotICAgIDc3LCA4NSwgODQsIDc5LCA3OCwgMTI4LCA3MSwgODUsIDgyLCA1NSwgMTI4LCA3MSwgODUsIDc4LCA4NSwgMTI4LCA3MSwgCi0gICAgODUsIDc4LCAyMTMsIDcxLCA4NSwgMjA1LCA3MSwgODUsIDc2LCAxMjgsIDcxLCA4NSwgNzQsIDY1LCA4MiwgNjUsIDg0LCAKLSAgICAyMDEsIDcxLCA4NSwgNzMsIDg0LCA2NSwgODIsIDEyOCwgNzEsIDg1LCAxOTksIDcxLCA4NSwgNjksIDczLCAxMjgsIDcxLCAKLSAgICA4NSwgNjksIDcyLCAxMjgsIDcxLCA4NSwgNjksIDIwMCwgNzEsIDg1LCA2OCwgMTI4LCA3MSwgODUsIDE5NiwgNzEsIDg1LCAKLSAgICA2NSwgODIsIDY4LCA4MywgNzcsIDY1LCA3OCwgMTI4LCA3MSwgODUsIDY1LCA4MiwgNjgsIDY5LCA2OCwgNzgsIDY5LCA4MywgCi0gICAgODMsIDEyOCwgNzEsIDg1LCA2NSwgODIsIDY4LCA2OSwgMTk2LCA3MSwgODUsIDY1LCA4MiwgNjgsIDEyOCwgNzEsIDg1LCAKLSAgICA2NSwgODIsIDY1LCA3OCwgMjAxLCA3MSwgODUsIDE5MywgNzEsIDg1LCAxNzgsIDcxLCA4NCwgNjksIDIxMCwgNzEsIDgzLCAKLSAgICA4NSwgNzcsIDEyOCwgNzEsIDgzLCA4NSwgMjA1LCA3MSwgODIsIDIxMywgNzEsIDgyLCA3OSwgODcsIDczLCA3OCwgMTk5LCAKLSAgICA3MSwgODIsIDc5LCA4NSwgNzgsIDY4LCAxMjgsIDcxLCA4MiwgNzksIDc4LCA4NCwgNzIsIDczLCA4MywgNzcsIDY1LCA4NCwgCi0gICAgNjUsIDEyOCwgNzEsIDgyLCA3MywgNzgsIDc4LCA3MywgNzgsIDE5OSwgNzEsIDgyLCA3MywgNzcsIDY1LCA2NywgNzMsIDc4LCAKLSAgICAxOTksIDcxLCA4MiwgNjksIDcxLCA3OSwgODIsIDczLCA2NSwgMjA2LCA3MSwgODIsIDY5LCA2OSwgMjA2LCA3MSwgODIsIAotICAgIDY5LCA2NSwgODQsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDcxLCA4MiwgNjksIDY1LCA4NCwgNjksIDgyLCA0NSwgODQsIDcyLCAKLSAgICA2NSwgNzgsIDEyOCwgNzEsIDgyLCA2OSwgNjUsIDg0LCA2OSwgODIsIDQ1LCA4NCwgNzIsIDY1LCAyMDYsIDcxLCA4MiwgNjksIAotICAgIDY1LCA4NCwgNjksIDIxMCwgNzEsIDgyLCA2OSwgNjUsIDIxMiwgNzEsIDgyLCA2NSwgODYsIDY5LCA4OSwgNjUsIDgyLCAKLSAgICAxOTYsIDcxLCA4MiwgNjUsIDg2LCA2OSwgNDUsIDc3LCA2NSwgNjcsIDgyLCA3OSwgNzgsIDEyOCwgNzEsIDgyLCA2NSwgODYsIAotICAgIDY5LCA0NSwgNjUsIDY3LCA4NSwgODQsIDY5LCA0NSwgNzEsIDgyLCA2NSwgODYsIDY5LCAxMjgsIDcxLCA4MiwgNjUsIDg2LCAKLSAgICAxOTcsIDcxLCA4MiwgNjUsIDg0LCA2OSwgODIsIDEyOCwgNzEsIDgyLCA2NSwgODMsIDgzLCAxMjgsIDcxLCA4MiwgNjUsIAotICAgIDgzLCAyMTEsIDcxLCA4MiwgNjUsIDgzLCAyMDgsIDcxLCA4MiwgNjUsIDgwLCA3MiwgNjksIDc3LCAxOTcsIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA2OSwgODMsIDEyOCwgNzEsIDgyLCA2NSwgNzgsIDg0LCA3MiwgMTkzLCA3MSwgODIsIDY1LCA3NywgNzcsIAotICAgIDE5MywgNzEsIDgyLCA2NSwgNzMsIDc4LCAxMjgsIDcxLCA4MiwgNjUsIDY4LCA4NSwgNjUsIDg0LCA3MywgNzksIDIwNiwgCi0gICAgNzEsIDgyLCA2NSwgNjgsIDg1LCA2NSwgNzYsIDEyOCwgNzEsIDgyLCA2NSwgNjcsIDY5LCAxMjgsIDcxLCA4MiwgNjUsIDY3LCAKLSAgICAxOTcsIDcxLCA4MCwgNjUsIDEyOCwgNzEsIDc5LCA4MiwgODQsIDcyLCA3NywgNzMsIDc1LCA3OSwgMjA2LCA3MSwgNzksIAotICAgIDgyLCA4NCwgMTI4LCA3MSwgNzksIDgyLCA3MSwgNzksIDg0LCA2OSwgODIsIDczLCAxMjgsIDcxLCA3OSwgODIsIDcxLCA3OSwgCi0gICAgODMsIDg5LCA3OCwgODQsIDcyLCA2OSwgODQsIDc5LCA3OCwgMTI4LCA3MSwgNzksIDgyLCA3MSwgNzksIDIwNiwgNzEsIDc5LCAKLSAgICA4MiwgNzEsIDczLCAxMjgsIDcxLCA3OSwgODIsIDY1LCAxMjgsIDcxLCA3OSwgNzksIDE5NiwgNzEsIDc5LCA3OCwgNzEsIAotICAgIDEyOCwgNzEsIDc5LCA3NiwgNzAsIDY5LCA4MiwgMTI4LCA3MSwgNzksIDc2LCA2OCwgMTI4LCA3MSwgNzksIDc1LCAxMjgsIAotICAgIDcxLCA3OSwgNzMsIDc4LCAxOTksIDcxLCA3OSwgNjYsIDc2LCA3MywgNzgsIDEyOCwgNzEsIDc5LCA2NSwgNzYsIDEyOCwgCi0gICAgNzEsIDc5LCA2NSwgMjA0LCA3MSwgNzksIDY1LCAxMjgsIDcxLCA3OCwgODksIDczLCA4MywgMTI4LCA3MSwgNzgsIDY1LCAKLSAgICA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDcxLCA3NiwgNzksIDg3LCA3MywgNzgsIDE5OSwgNzEsIDc2LCA3OSwgODQsIAotICAgIDg0LCA2NSwgMjA0LCA3MSwgNzYsIDc5LCA2NiwgMTk3LCA3MSwgNzYsIDczLCA4MywgODMsIDY1LCA3OCwgNjgsIDIwNywgCi0gICAgNzEsIDc2LCA2OSwgNzMsIDY3LCAyMDAsIDcxLCA3NiwgNjUsIDcxLCA3OSwgNzYsIDczLCAxMjgsIDcxLCA3NiwgNjUsIAotICAgIDEyOCwgNzEsIDc0LCA2OSwgMTI4LCA3MSwgNzMsIDg4LCAxMjgsIDcxLCA3MywgODQsIDEyOCwgNzEsIDczLCA4MywgNzIsIAotICAgIDEyOCwgNzEsIDczLCA4MywgMjAwLCA3MSwgNzMsIDgzLCA2NSwgNzYsIDEyOCwgNzEsIDczLCA4MiwgODUsIDY4LCA2NSwgCi0gICAgNjUsIDEyOCwgNzEsIDczLCA4MiwgNzYsIDIxMSwgNzEsIDczLCA4MiwgNzYsIDEyOCwgNzEsIDczLCA4MiwgNTEsIDEyOCwgCi0gICAgNzEsIDczLCA4MiwgMTc5LCA3MSwgNzMsIDgyLCA1MCwgMTI4LCA3MSwgNzMsIDgyLCAxNzgsIDcxLCA3MywgODAsIDEyOCwgCi0gICAgNzEsIDczLCA3OCwgNzMsIDczLCAxMjgsIDcxLCA3MywgNzcsIDY5LCA3NiwgMTI4LCA3MSwgNzMsIDc3LCA2OSwgMjA0LCAKLSAgICA3MSwgNzMsIDc3LCAxMjgsIDcxLCA3MywgNzEsIDY1LCAxMjgsIDcxLCA3MywgNzEsIDEyOCwgNzEsIDczLCA2OSwgODQsIAotICAgIDEyOCwgNzEsIDczLCA2OCwgNzMsIDc3LCAxMjgsIDcxLCA3MywgNjYsIDY2LCA3OSwgODUsIDIxMSwgNzEsIDczLCA2NiwgCi0gICAgNjUsIDEyOCwgNzEsIDczLCA1MiwgMTI4LCA3MSwgNzMsIDE4MCwgNzEsIDcyLCA5MCwgMTI4LCA3MSwgNzIsIDg3LCA2NSwgCi0gICAgMTI4LCA3MSwgNzIsIDg1LCA3OCwgNzgsIDY1LCAxMjgsIDcxLCA3MiwgODUsIDc4LCA3OCwgMTkzLCA3MSwgNzIsIDg1LCAKLSAgICAxMjgsIDcxLCA3MiwgNzksIDg1LCAxMjgsIDcxLCA3MiwgNzksIDgzLCA4NCwgMTI4LCA3MSwgNzIsIDc5LCAxMjgsIDcxLCAKLSAgICA3MiwgNzMsIDc3LCA2OSwgNzYsIDEyOCwgNzEsIDcyLCA3MywgMTI4LCA3MSwgNzIsIDcyLCA2NSwgMTI4LCA3MSwgNzIsIAotICAgIDY5LCA4OSwgODMsIDEyOCwgNzEsIDcyLCA2OSwgODUsIDg4LCAxMjgsIDcxLCA3MiwgNjksIDg1LCA3OCwgMTI4LCA3MSwgCi0gICAgNzIsIDY5LCA4NSwgNzEsIDcyLCA2OSwgODUsIDY1LCA2OSwgNzcsIDEyOCwgNzEsIDcyLCA2OSwgODUsIDcxLCA3MiwgNjksIAotICAgIDc4LCAxMjgsIDcxLCA3MiwgNjksIDg1LCA2NSwgNjksIDgyLCA2NSwgNjksIDEyOCwgNzEsIDcyLCA2OSwgODUsIDY1LCA2OSwgCi0gICAgNzEsIDcyLCA2OSwgODUsIDY1LCA2OSwgMTI4LCA3MSwgNzIsIDY5LCA4NCwgMTI4LCA3MSwgNzIsIDY5LCA2OSwgMTI4LCAKLSAgICA3MSwgNzIsIDY5LCAxMjgsIDcxLCA3MiwgMTk3LCA3MSwgNzIsIDY1LCA4OSwgNzgsIDEyOCwgNzEsIDcyLCA2NSwgODIsIAotICAgIDY1LCA2OSwgMTI4LCA3MSwgNzIsIDY1LCA4MCwgMTI4LCA3MSwgNzIsIDY1LCA3OCwgMTI4LCA3MSwgNzIsIDY1LCA3NywgCi0gICAgNzcsIDY1LCAxMjgsIDcxLCA3MiwgNjUsIDc3LCA2NSwgNzYsIDEyOCwgNzEsIDcyLCA2NSwgNzMsIDc4LCA4NSwgMTI4LCAKLSAgICA3MSwgNzIsIDY1LCA3MywgNzgsIDEyOCwgNzEsIDcyLCA2NSwgNzMsIDIwNiwgNzEsIDcyLCA2NSwgNjgsIDEyOCwgNzEsIAotICAgIDcyLCA2NSwgNjUsIDc3LCA2NSwgNjksIDEyOCwgNzEsIDcyLCA2NSwgNjUsIDEyOCwgNzEsIDcxLCA4NywgNzMsIDEyOCwgCi0gICAgNzEsIDcxLCA4NywgNjksIDY5LCAxMjgsIDcxLCA3MSwgODcsIDY5LCAxMjgsIDcxLCA3MSwgODcsIDY1LCA2NSwgMTI4LCAKLSAgICA3MSwgNzEsIDg3LCA2NSwgMTI4LCA3MSwgNzEsIDg1LCA4OCwgMTI4LCA3MSwgNzEsIDg1LCA4NCwgMTI4LCA3MSwgNzEsIAotICAgIDg1LCA4MiwgODgsIDEyOCwgNzEsIDcxLCA4NSwgODIsIDEyOCwgNzEsIDcxLCA4NSwgNzksIDg4LCAxMjgsIDcxLCA3MSwgCi0gICAgODUsIDc5LCA4NCwgMTI4LCA3MSwgNzEsIDg1LCA3OSwgODAsIDEyOCwgNzEsIDcxLCA4NSwgNzksIDEyOCwgNzEsIDcxLCAKLSAgICA3OSwgODgsIDEyOCwgNzEsIDcxLCA3OSwgODQsIDEyOCwgNzEsIDcxLCA3OSwgODAsIDEyOCwgNzEsIDcxLCA3MywgODgsIAotICAgIDEyOCwgNzEsIDcxLCA3MywgODQsIDEyOCwgNzEsIDcxLCA3MywgNjksIDg4LCAxMjgsIDcxLCA3MSwgNzMsIDY5LCA4MCwgCi0gICAgMTI4LCA3MSwgNzEsIDczLCA2OSwgMTI4LCA3MSwgNzEsIDY5LCA4OCwgMTI4LCA3MSwgNzEsIDY5LCA4NCwgMTI4LCA3MSwgCi0gICAgNzEsIDY5LCA4MCwgMTI4LCA3MSwgNzEsIDY1LCA4OCwgMTI4LCA3MSwgNzEsIDY1LCA4NCwgMTI4LCA3MSwgNjksIDg0LCAKLSAgICAxOTMsIDcxLCA2OSwgODMsIDg0LCA4NSwgODIsIDY5LCAxMjgsIDcxLCA2OSwgODMsIDcyLCA4NSwgMTI4LCA3MSwgNjksIAotICAgIDgzLCA3MiwgODQsIDczLCA3OCwgMTI4LCA3MSwgNjksIDgzLCA3MiwgODQsIDczLCAyMDYsIDcxLCA2OSwgODMsIDcyLCA1MCwgCi0gICAgMTI4LCA3MSwgNjksIDgyLCA4MywgNzIsIDY1LCA4OSwgNzMsIDc3LCAxMjgsIDcxLCA2OSwgODIsIDc3LCA2NSwgMjA2LCAKLSAgICA3MSwgNjksIDgyLCA2OSwgODMsIDcyLCAxMjgsIDcxLCA2OSwgODIsIDY5LCA4MywgMjAwLCA3MSwgNjksIDc5LCA3NywgNjksIAotICAgIDg0LCA4MiwgNzMsIDY3LCA2NSwgNzYsIDc2LCAyMTcsIDcxLCA2OSwgNzksIDc3LCA2OSwgODQsIDgyLCA3MywgMTk1LCA3MSwgCi0gICAgNjksIDc4LCA4NCwgNzYsIDE5NywgNzEsIDY5LCA3OCwgNzMsIDg0LCA3MywgODYsIDY5LCAxMjgsIDcxLCA2OSwgNzgsIDczLCAKLSAgICA3NSwgMjAxLCA3MSwgNjksIDc4LCA2OSwgODIsIDczLCAxOTUsIDcxLCA2OSwgNzcsIDczLCA3OCwgNzMsIDEyOCwgNzEsIAotICAgIDY5LCA3NywgNzMsIDc4LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MSwgNjksIDIwNSwgNzEsIDY5LCA2OSwgNzcsIDEyOCwgCi0gICAgNzEsIDY5LCA2OCwgNzksIDc2LCA2NSwgMTI4LCA3MSwgNjksIDY4LCA2OSwgMTI4LCA3MSwgNjksIDY2LCAyMDcsIDcxLCAKLSAgICA2OSwgNjYsIDE5MywgNzEsIDY5LCA2NSwgODIsIDEyOCwgNzEsIDY5LCA2NSwgMjEwLCA3MSwgNjksIDUwLCA1MCwgMTI4LCAKLSAgICA3MSwgNjgsIDY1LCA3OCwgMTI4LCA3MSwgNjcsIDczLCA3MSwgMTI4LCA3MSwgNjcsIDY1LCAyMDYsIDcxLCA2NiwgNzksIAotICAgIDc4LCAxMjgsIDcxLCA2NiwgNzMsIDY5LCAxOTcsIDcxLCA2NiwgNjksIDg1LCA4OCwgMTI4LCA3MSwgNjYsIDY5LCA4NCwgCi0gICAgMTI4LCA3MSwgNjYsIDY1LCA4OSwgNzMsIDEyOCwgNzEsIDY2LCA2NSwgNzUsIDg1LCA4MiwgODUsIDc4LCA2OSwgNzgsIAotICAgIDEyOCwgNzEsIDY2LCAxMjgsIDcxLCA2NSwgODksIDY1LCA3OCwgODUsIDc1LCA3MywgODQsIDg0LCA2NSwgMTI4LCA3MSwgCi0gICAgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MSwgNjUsIDg5LCAxMjgsIDcxLCA2NSwgODUsIDc4LCA4NCwgNzYsIDY5LCAKLSAgICA4NCwgMTI4LCA3MSwgNjUsIDg0LCA3MiwgNjksIDgyLCA3MywgNzgsIDcxLCAxMjgsIDcxLCA2NSwgODQsIDcyLCA2OSwgODIsIAotICAgIDczLCA3OCwgMTk5LCA3MSwgNjUsIDg0LCA2OSwgMTI4LCA3MSwgNjUsIDgzLCA3MiwgNjUsIDc4LCAxMjgsIDcxLCA2NSwgCi0gICAgODIsIDgzLCA3MiwgODUsIDc4LCA3MywgMTI4LCA3MSwgNjUsIDgyLCA3OSwgNzgsIDEyOCwgNzEsIDY1LCA4MiwgNzcsIDY5LCAKLSAgICA3OCwgODQsIDEyOCwgNzEsIDY1LCA4MiwgNjgsIDY5LCA3OCwgMTI4LCA3MSwgNjUsIDgyLCA1MSwgMTI4LCA3MSwgNjUsIAotICAgIDgwLCA4MCwgNjksIDE5NiwgNzEsIDY1LCAyMDgsIDcxLCA2NSwgNzgsIDc3LCA2NSwgMTI4LCA3MSwgNjUsIDc4LCA3MSwgCi0gICAgNzMsIDY1LCAxMjgsIDcxLCA2NSwgNzgsIDY4LCAxOTMsIDcxLCA2NSwgNzgsIDUwLCAxMjgsIDcxLCA2NSwgNzgsIDE3OCwgCi0gICAgNzEsIDY1LCA3NywgNzcsIDY1LCAxMjgsIDcxLCA2NSwgNzcsIDc2LCA2NSwgMTI4LCA3MSwgNjUsIDc3LCA3NiwgMTI4LCAKLSAgICA3MSwgNjUsIDc3LCA2OSwgMTI4LCA3MSwgNjUsIDc3LCAxOTcsIDcxLCA2NSwgNzcsIDY1LCA3OCwgMTI4LCA3MSwgNjUsIAotICAgIDc3LCA2NSwgNzYsIDEyOCwgNzEsIDY1LCA3NywgNjUsIDIwNCwgNzEsIDY1LCA3MSwgMTI4LCA3MSwgNjUsIDcwLCAxMjgsIAotICAgIDcxLCA2NSwgMTk4LCA3MSwgNjUsIDY5LCA4NCwgODQsIDY1LCA0NSwgODAsIDczLCA3NiwgNzYsIDY1LCAxMjgsIDcxLCA2NSwgCi0gICAgNjgsIDc5LCA3NiwgMTI4LCA3MSwgNjUsIDY4LCAxMjgsIDcxLCA2NSwgMTk2LCA3MSwgNjUsIDY2LCA2NSwgMTI4LCA3MSwgCi0gICAgNjUsIDY2LCAxOTMsIDcxLCA2NSwgNjUsIDcwLCA4NSwgMTI4LCA3MSwgNjUsIDE3OCwgNzEsIDQ4LCA1MywgNTIsIDEyOCwgCi0gICAgNzEsIDQ4LCA1MywgNTEsIDEyOCwgNzEsIDQ4LCA1MywgNTAsIDEyOCwgNzEsIDQ4LCA1MywgNDksIDEyOCwgNzEsIDQ4LCAKLSAgICA1MywgNDgsIDEyOCwgNzEsIDQ4LCA1MiwgNTcsIDEyOCwgNzEsIDQ4LCA1MiwgNTYsIDEyOCwgNzEsIDQ4LCA1MiwgNTUsIAotICAgIDEyOCwgNzEsIDQ4LCA1MiwgNTQsIDEyOCwgNzEsIDQ4LCA1MiwgNTMsIDY1LCAxMjgsIDcxLCA0OCwgNTIsIDUzLCAxMjgsIAotICAgIDcxLCA0OCwgNTIsIDUyLCAxMjgsIDcxLCA0OCwgNTIsIDUxLCA2NSwgMTI4LCA3MSwgNDgsIDUyLCA1MSwgMTI4LCA3MSwgCi0gICAgNDgsIDUyLCA1MCwgMTI4LCA3MSwgNDgsIDUyLCA0OSwgMTI4LCA3MSwgNDgsIDUyLCA0OCwgMTI4LCA3MSwgNDgsIDUxLCAKLSAgICA1NywgMTI4LCA3MSwgNDgsIDUxLCA1NiwgMTI4LCA3MSwgNDgsIDUxLCA1NSwgNjUsIDEyOCwgNzEsIDQ4LCA1MSwgNTUsIAotICAgIDEyOCwgNzEsIDQ4LCA1MSwgNTQsIDY1LCAxMjgsIDcxLCA0OCwgNTEsIDU0LCAxMjgsIDcxLCA0OCwgNTEsIDUzLCAxMjgsIAotICAgIDcxLCA0OCwgNTEsIDUyLCAxMjgsIDcxLCA0OCwgNTEsIDUxLCAxMjgsIDcxLCA0OCwgNTEsIDUwLCAxMjgsIDcxLCA0OCwgCi0gICAgNTEsIDQ5LCAxMjgsIDcxLCA0OCwgNTEsIDQ4LCAxMjgsIDcxLCA0OCwgNTAsIDU3LCAxMjgsIDcxLCA0OCwgNTAsIDU2LCAKLSAgICAxMjgsIDcxLCA0OCwgNTAsIDU1LCAxMjgsIDcxLCA0OCwgNTAsIDU0LCA2NSwgMTI4LCA3MSwgNDgsIDUwLCA1NCwgMTI4LCAKLSAgICA3MSwgNDgsIDUwLCA1MywgMTI4LCA3MSwgNDgsIDUwLCA1MiwgMTI4LCA3MSwgNDgsIDUwLCA1MSwgMTI4LCA3MSwgNDgsIAotICAgIDUwLCA1MCwgMTI4LCA3MSwgNDgsIDUwLCA0OSwgMTI4LCA3MSwgNDgsIDUwLCA0OCwgNjUsIDEyOCwgNzEsIDQ4LCA1MCwgCi0gICAgNDgsIDEyOCwgNzEsIDQ4LCA0OSwgNTcsIDEyOCwgNzEsIDQ4LCA0OSwgNTYsIDEyOCwgNzEsIDQ4LCA0OSwgNTUsIDEyOCwgCi0gICAgNzEsIDQ4LCA0OSwgNTQsIDEyOCwgNzEsIDQ4LCA0OSwgNTMsIDEyOCwgNzEsIDQ4LCA0OSwgNTIsIDEyOCwgNzEsIDQ4LCAKLSAgICA0OSwgNTEsIDEyOCwgNzEsIDQ4LCA0OSwgNTAsIDEyOCwgNzEsIDQ4LCA0OSwgNDksIDY1LCAxMjgsIDcxLCA0OCwgNDksIAotICAgIDQ5LCAxMjgsIDcxLCA0OCwgNDksIDQ4LCAxMjgsIDcxLCA0OCwgNDgsIDU3LCAxMjgsIDcxLCA0OCwgNDgsIDU2LCAxMjgsIAotICAgIDcxLCA0OCwgNDgsIDU1LCA2NiwgMTI4LCA3MSwgNDgsIDQ4LCA1NSwgNjUsIDEyOCwgNzEsIDQ4LCA0OCwgNTUsIDEyOCwgCi0gICAgNzEsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDcxLCA0OCwgNDgsIDU0LCAxMjgsIDcxLCA0OCwgNDgsIDUzLCAxMjgsIDcxLCAKLSAgICA0OCwgNDgsIDUyLCAxMjgsIDcxLCA0OCwgNDgsIDUxLCAxMjgsIDcxLCA0OCwgNDgsIDUwLCAxMjgsIDcxLCA0OCwgNDgsIAotICAgIDQ5LCAxMjgsIDcwLCA4OSwgODgsIDEyOCwgNzAsIDg5LCA4NCwgMTI4LCA3MCwgODksIDgwLCAxMjgsIDcwLCA4OSwgNjUsIAotICAgIDEyOCwgNzAsIDg3LCA3MywgMTI4LCA3MCwgODcsIDY5LCA2OSwgMTI4LCA3MCwgODcsIDY5LCAxMjgsIDcwLCA4NywgNjUsIAotICAgIDY1LCAxMjgsIDcwLCA4NywgNjUsIDEyOCwgNzAsIDg2LCA4MywgNTEsIDEyOCwgNzAsIDg2LCA4MywgNTAsIDEyOCwgNzAsIAotICAgIDg2LCA4MywgNDksIDEyOCwgNzAsIDg1LCA4OCwgMTI4LCA3MCwgODUsIDg0LCAxMjgsIDcwLCA4NSwgODMsIDY5LCAxMjgsIAotICAgIDcwLCA4NSwgODMsIDE5MywgNzAsIDg1LCA4MiwgODgsIDEyOCwgNzAsIDg1LCA4MCwgMTI4LCA3MCwgODUsIDc4LCA2OSwgCi0gICAgODIsIDY1LCAyMDQsIDcwLCA4NSwgNzgsIDY3LCA4NCwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgNzAsIDg1LCA3OCwgNjcsIDg0LCAKLSAgICA3MywgNzksIDc4LCAxMjgsIDcwLCA4NSwgNzYsIDc2LCA3OCwgNjksIDgzLCA4MywgMTI4LCA3MCwgODUsIDc2LCAyMDQsIAotICAgIDcwLCA4NSwgNzQsIDczLCAxMjgsIDcwLCA4NSwgNjksIDg0LCAxMjgsIDcwLCA4NSwgNjksIDIwNCwgNzAsIDg1LCA2OSwgCi0gICAgMTI4LCA3MCwgODUsIDY1LCAxMjgsIDcwLCA4NCwgNzIsIDc5LCA4MiwgMTkzLCA3MCwgODMsIDczLCAxMjgsIDcwLCA4MiwgCi0gICAgNzksIDg3LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA3MCwgODIsIDc5LCA4NywgNzgsIDczLCA3OCwgMTk5LCA3MCwgODIsIDc5LCAKLSAgICA4NywgNzgsIDEyOCwgNzAsIDgyLCA3OSwgODcsIDIwNiwgNzAsIDgyLCA3OSwgNzgsIDg0LCA0NSwgODQsIDczLCA3NiwgODQsIAotICAgIDY5LCAxOTYsIDcwLCA4MiwgNzksIDc4LCA4NCwgNDUsIDcwLCA2NSwgNjcsIDczLCA3OCwgMTk5LCA3MCwgODIsIDc5LCA3OCwgCi0gICAgMjEyLCA3MCwgODIsIDc5LCAyMDUsIDcwLCA4MiwgNzksIDcxLCAxMjgsIDcwLCA4MiwgNzksIDE5OSwgNzAsIDgyLCA3MywgCi0gICAgODQsIDg1LCAxMjgsIDcwLCA4MiwgNzMsIDY5LCA4MywgMTI4LCA3MCwgODIsIDczLCA2OSwgMTk2LCA3MCwgODIsIDczLCAKLSAgICA2NywgNjUsIDg0LCA3MywgODYsIDY5LCAxMjgsIDcwLCA4MiwgNjksIDg0LCA2NiwgNzksIDY1LCA4MiwgNjgsIDEyOCwgNzAsIAotICAgIDgyLCA2OSwgNzgsIDY3LCAyMDAsIDcwLCA4MiwgNjksIDY5LCAxMjgsIDcwLCA4MiwgNjksIDE5NywgNzAsIDgyLCA2NSwgCi0gICAgNzgsIDc1LCAyMTEsIDcwLCA4MiwgNjUsIDc4LCAxOTUsIDcwLCA4MiwgNjUsIDc3LCA2OSwgODMsIDEyOCwgNzAsIDgyLCAKLSAgICA2NSwgNzcsIDY5LCAxMjgsIDcwLCA4MiwgNjUsIDc3LCAxOTcsIDcwLCA4MiwgNjUsIDcxLCA4MiwgNjUsIDc4LCA4NCwgCi0gICAgMTI4LCA3MCwgODIsIDY1LCA3MSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNzAsIDgyLCA2NSwgNjcsIDg0LCA3MywgNzksIAotICAgIDIwNiwgNzAsIDc5LCA4OCwgMTI4LCA3MCwgNzksIDg1LCA4MiwgODQsIDY5LCA2OSwgNzgsIDEyOCwgNzAsIDc5LCA4NSwgCi0gICAgODIsIDg0LCA2OSwgNjksIDIwNiwgNzAsIDc5LCA4NSwgODIsIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDcwLCAKLSAgICA3OSwgODUsIDgyLCA0NSwgODMsIDg0LCA4MiwgNzMsIDc4LCAxOTksIDcwLCA3OSwgODUsIDgyLCA0NSwgODAsIDY5LCA4MiwgCi0gICAgNDUsIDY5LCAyMDUsIDcwLCA3OSwgODUsIDgyLCA0NSwgNzYsIDczLCA3OCwgMTk3LCA3MCwgNzksIDg1LCAyMTAsIDcwLCAKLSAgICA3OSwgODUsIDc4LCA4NCwgNjUsIDczLCA3OCwgMTI4LCA3MCwgNzksIDg1LCA3OCwgODQsIDY1LCA3MywgMjA2LCA3MCwgNzksIAotICAgIDgzLCA4NCwgNjksIDgyLCA3MywgNzgsIDcxLCAxMjgsIDcwLCA3OSwgODIsIDg3LCA2NSwgODIsIDY4LCAxMjgsIDcwLCA3OSwgCi0gICAgODIsIDg3LCA2NSwgODIsIDE5NiwgNzAsIDc5LCA4MiwgODQsIDg5LCAxMjgsIDcwLCA3OSwgODIsIDg0LCAyMTcsIDcwLCAKLSAgICA3OSwgODIsIDg0LCA2OSwgMTI4LCA3MCwgNzksIDgyLCA3NywgMjExLCA3MCwgNzksIDgyLCA3NywgNjUsIDg0LCA4NCwgNzMsIAotICAgIDc4LCA3MSwgMTI4LCA3MCwgNzksIDgyLCA3NywgNjUsIDIxMiwgNzAsIDc5LCA4MiwgNzUsIDY5LCAxOTYsIDcwLCA3OSwgCi0gICAgODIsIDY5LCA3MiwgNjksIDY1LCAxOTYsIDcwLCA3OSwgODIsIDY3LCA2OSwgODMsIDEyOCwgNzAsIDc5LCA4MiwgNjcsIDY5LCAKLSAgICAxMjgsIDcwLCA3OSwgODAsIDEyOCwgNzAsIDc5LCA3OSwgODQsIDgzLCA4NCwgNzksIDc5LCA3NiwgMTI4LCA3MCwgNzksIAotICAgIDc5LCA4NCwgODAsIDgyLCA3MywgNzgsIDg0LCA4MywgMTI4LCA3MCwgNzksIDc5LCA4NCwgNzgsIDc5LCA4NCwgMTk3LCA3MCwgCi0gICAgNzksIDc5LCA4NCwgNjYsIDY1LCA3NiwgNzYsIDEyOCwgNzAsIDc5LCA3OSwgODQsIDEyOCwgNzAsIDc5LCA3OSwgNzYsIAotICAgIDEyOCwgNzAsIDc5LCA3OSwgNjgsIDEyOCwgNzAsIDc5LCA3OSwgMTI4LCA3MCwgNzksIDc4LCAyMTIsIDcwLCA3OSwgNzgsIAotICAgIDcxLCA3NywgNjUsIDc4LCAxMjgsIDcwLCA3OSwgNzcsIDEyOCwgNzAsIDc5LCA3NiwgNzYsIDg5LCAxMjgsIDcwLCA3OSwgCi0gICAgNzYsIDc2LCA3OSwgODcsIDczLCA3OCwgNzEsIDEyOCwgNzAsIDc5LCA3NiwgNjgsIDY5LCA4MiwgMTI4LCA3MCwgNzksIDc2LCAKLSAgICA2OCwgNjksIDE5NiwgNzAsIDc5LCA3MSwgNzEsIDg5LCAxMjgsIDcwLCA3OSwgNzEsIDEyOCwgNzAsIDIwNywgNzAsIDc3LCAKLSAgICAxMjgsIDcwLCA3NiwgODksIDczLCA3OCwgMTk5LCA3MCwgNzYsIDg5LCAxMjgsIDcwLCA3NiwgODUsIDg0LCA4NCwgNjksIAotICAgIDgyLCA3MywgNzgsIDcxLCAxMjgsIDcwLCA3NiwgODUsIDg0LCA4NCwgNjksIDgyLCA3MywgNzgsIDE5OSwgNzAsIDc2LCA4NSwgCi0gICAgODQsIDY5LCAxMjgsIDcwLCA3NiwgODUsIDgzLCA3MiwgNjksIDE5NiwgNzAsIDc2LCA3OSwgODcsIDczLCA3OCwgMTk5LCAKLSAgICA3MCwgNzYsIDc5LCA4NywgNjksIDgyLCA4MywgMTI4LCA3MCwgNzYsIDc5LCA4NywgNjksIDIxMCwgNzAsIDc2LCA3OSwgODUsIAotICAgIDgyLCA3MywgODMsIDcyLCAxMjgsIDcwLCA3NiwgNzksIDgyLCA2OSwgODQsIDg0LCA2OSwgMTI4LCA3MCwgNzYsIDc5LCA4MiwgCi0gICAgNjUsIDIwNCwgNzAsIDc2LCA3OSwgODAsIDgwLCAyMTcsIDcwLCA3NiwgNzksIDc5LCA4MiwgMTI4LCA3MCwgNzYsIDc5LCAKLSAgICA3OSwgMjEwLCA3MCwgNzYsIDczLCA4MCwgMTI4LCA3MCwgNzYsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDcwLCA3NiwgNzMsIAotICAgIDY3LCAyMDMsIDcwLCA3NiwgNjksIDg4LCA4NSwgODMsIDEyOCwgNzAsIDc2LCA2OSwgODgsIDY5LCAxOTYsIDcwLCA3NiwgCi0gICAgNjksIDg4LCAxMjgsIDcwLCA3NiwgNjksIDg1LCA4MiwgNzksIDc4LCAxMjgsIDcwLCA3NiwgNjksIDg1LCA4MiwgNDUsIDY4LCAKLSAgICA2OSwgNDUsIDc2LCA3MywgODMsIDEyOCwgNzAsIDc2LCA2NSwgODQsIDg0LCA2OSwgNzgsIDY5LCAxOTYsIDcwLCA3NiwgNjUsIAotICAgIDg0LCA3OCwgNjksIDgzLCA4MywgMTI4LCA3MCwgNzYsIDY1LCA4MywgNzIsIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDgzLCAKLSAgICAxMjgsIDcwLCA3NiwgNjUsIDcxLCA0NSwgNTMsIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDQ1LCA1MiwgMTI4LCA3MCwgNzYsIAotICAgIDY1LCA3MSwgNDUsIDUxLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCA0NSwgNTAsIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDQ1LCA0OSwgCi0gICAgMTI4LCA3MCwgNzYsIDY1LCA3MSwgMTI4LCA3MCwgNzYsIDY1LCAxOTksIDcwLCA3NiwgNjUsIDEyOCwgNzAsIDc2LCAxMjgsIAotICAgIDcwLCA3MywgODgsIDY5LCA2OCwgNDUsIDcwLCA3OSwgODIsIDIwNSwgNzAsIDczLCA4OCwgMTI4LCA3MCwgNzMsIDg2LCA2OSwgCi0gICAgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgNzAsIDczLCA4NiwgNjksIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDcwLCAKLSAgICA3MywgODYsIDE5NywgNzAsIDczLCA4NCwgOTAsIDgwLCA2NSwgODQsIDgyLCA3MywgNjcsIDIwMywgNzAsIDczLCA4NCwgNjUsIAotICAgIDEyOCwgNzAsIDczLCA4NCwgMTI4LCA3MCwgNzMsIDgzLCA4NCwgNjksIDE5NiwgNzAsIDczLCA4MywgNzIsIDczLCA3OCwgCi0gICAgMTk5LCA3MCwgNzMsIDgzLCA3MiwgNzIsIDc5LCA3OSwgNzUsIDEyOCwgNzAsIDczLCA4MywgNzIsIDcyLCA3OSwgNzksIAotICAgIDIwMywgNzAsIDczLCA4MywgNzIsIDY5LCA4OSwgNjksIDEyOCwgNzAsIDczLCA4MywgNzIsIDEyOCwgNzAsIDczLCA4MywgCi0gICAgMjAwLCA3MCwgNzMsIDgyLCA4MywgMjEyLCA3MCwgNzMsIDgyLCA3MywgMTI4LCA3MCwgNzMsIDgyLCA2OSwgODcsIDc5LCAKLSAgICA4MiwgNzUsIDgzLCAxMjgsIDcwLCA3MywgODIsIDY5LCA4NywgNzksIDgyLCAyMDMsIDcwLCA3MywgODIsIDY5LCAxMjgsIAotICAgIDcwLCA3MywgODIsIDE5NywgNzAsIDczLCA4MCwgMTI4LCA3MCwgNzMsIDc4LCA3MywgODQsIDE5NywgNzAsIDczLCA3OCwgCi0gICAgNzEsIDY5LCA4MiwgODMsIDEyOCwgNzAsIDczLCA3OCwgNzEsIDY5LCA4MiwgMjExLCA3MCwgNzMsIDc4LCA3MSwgNjksIDgyLCAKLSAgICA3OCwgNjUsIDczLCA3NiwgODMsIDEyOCwgNzAsIDczLCA3OCwgNzEsIDY5LCA4MiwgNjksIDE5NiwgNzAsIDczLCA3OCwgNzEsIAotICAgIDY5LCA4MiwgNDUsIDgwLCA3OSwgODMsIDIxMiwgNzAsIDczLCA3OCwgNzEsIDY5LCA4MiwgMTI4LCA3MCwgNzMsIDc4LCA3MSwgCi0gICAgNjksIDIxMCwgNzAsIDczLCA3OCwgNjUsIDc4LCA2NywgNzMsIDY1LCA3NiwgMTI4LCA3MCwgNzMsIDc4LCA2NSwgNzYsIAotICAgIDEyOCwgNzAsIDczLCA3NiwgMjA1LCA3MCwgNzMsIDc2LCA3NiwgNjksIDgyLCAxMjgsIDcwLCA3MywgNzYsIDc2LCA2OSwgCi0gICAgMTk2LCA3MCwgNzMsIDc2LCA3NiwgMTI4LCA3MCwgNzMsIDc2LCAyMDQsIDcwLCA3MywgNzYsIDE5NywgNzAsIDczLCA3MywgCi0gICAgMTI4LCA3MCwgNzMsIDcxLCA4NSwgODIsIDY5LCA0NSwgNTEsIDEyOCwgNzAsIDczLCA3MSwgODUsIDgyLCA2OSwgNDUsIDUwLCAKLSAgICAxMjgsIDcwLCA3MywgNzEsIDg1LCA4MiwgNjksIDQ1LCA0OSwgMTI4LCA3MCwgNzMsIDcxLCA4NSwgODIsIDE5NywgNzAsIAotICAgIDczLCA3MSwgNzIsIDg0LCAxMjgsIDcwLCA3MywgNzAsIDg0LCA4OSwgMTI4LCA3MCwgNzMsIDcwLCA4NCwgMjE3LCA3MCwgCi0gICAgNzMsIDcwLCA4NCwgNzIsIDgzLCAxMjgsIDcwLCA3MywgNzAsIDg0LCA3MiwgMTI4LCA3MCwgNzMsIDcwLCA4NCwgNjksIDY5LCAKLSAgICA3OCwgMTI4LCA3MCwgNzMsIDcwLCA4NCwgNjksIDY5LCAyMDYsIDcwLCA3MywgNjksIDc2LCA2OCwgMTI4LCA3MCwgNzMsIAotICAgIDY5LCA3NiwgMTk2LCA3MCwgNzIsIDg0LCA3OSwgODIsIDE5MywgNzAsIDcwLCA3NiwgMTI4LCA3MCwgNzAsIDczLCAxMjgsIAotICAgIDcwLCA2OSwgODUsIDg4LCAxMjgsIDcwLCA2OSwgODUsIDcwLCA2OSwgODUsIDY1LCA2OSwgODQsIDEyOCwgNzAsIDY5LCA4MywgCi0gICAgODQsIDczLCA4NiwgNjUsIDc2LCAxMjgsIDcwLCA2OSwgODIsIDgyLCA4OSwgMTI4LCA3MCwgNjksIDgyLCA4MiwgNzMsIAotICAgIDIxMSwgNzAsIDY5LCA4MiwgNzcsIDY1LCA4NCwgNjUsIDEyOCwgNzAsIDY5LCA4MiwgNzcsIDY1LCA4NCwgMTkzLCA3MCwgCi0gICAgNjksIDc5LCAyMDAsIDcwLCA2OSwgNzgsIDE5OSwgNzAsIDY5LCA3OCwgNjcsIDY5LCAxMjgsIDcwLCA2OSwgNzcsIDczLCAKLSAgICA3OCwgNzMsIDc4LCAxOTcsIDcwLCA2OSwgNzcsIDY1LCA3NiwgNjksIDEyOCwgNzAsIDY5LCA3NywgNjUsIDc2LCAxOTcsIAotICAgIDcwLCA2OSwgNzYsIDc2LCA3OSwgODcsIDgzLCA3MiwgNzMsIDgwLCAxMjgsIDcwLCA2OSwgNzMsIDEyOCwgNzAsIDY5LCA3MiwgCi0gICAgMjEzLCA3MCwgNjksIDcyLCAxMjgsIDcwLCA2OSwgMjAwLCA3MCwgNjksIDY5LCA3OCwgNzEsIDEyOCwgNzAsIDY5LCA2OSwgCi0gICAgNzcsIDEyOCwgNzAsIDY5LCA2OSwgNjgsIDEyOCwgNzAsIDY5LCA2OSwgMTk2LCA3MCwgNjksIDY5LCAxMjgsIDcwLCA2OSwgCi0gICAgNjYsIDgyLCA4NSwgNjUsIDgyLCA4OSwgMTI4LCA3MCwgNjksIDY1LCA4NCwgNzIsIDY5LCA4MiwgMTI4LCA3MCwgNjksIDY1LCAKLSAgICA4NCwgNzIsIDY5LCAyMTAsIDcwLCA2OSwgNjUsIDgyLCA3OCwgMTI4LCA3MCwgNjksIDY1LCA4MiwgNzAsIDg1LCAyMDQsIAotICAgIDcwLCA2OSwgNjUsIDgyLCAxMjgsIDcwLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDcwLCA2NSwgODksIDEyOCwgCi0gICAgNzAsIDY1LCA4OCwgMTI4LCA3MCwgNjUsIDIxNiwgNzAsIDY1LCA4NCwgNzMsIDcxLCA4NSwgNjksIDEyOCwgNzAsIDY1LCAKLSAgICA4NCwgNzIsIDY5LCA4MiwgMTI4LCA3MCwgNjUsIDg0LCA3MiwgNjksIDIxMCwgNzAsIDY1LCA4NCwgNzIsIDY1LCA4NCwgNjUsIAotICAgIDc4LCAxMjgsIDcwLCA2NSwgODQsIDcyLCA2NSwgODQsIDY1LCAyMDYsIDcwLCA2NSwgODQsIDcyLCA2NSwgMTI4LCA3MCwgCi0gICAgNjUsIDg0LCA3MiwgMTkzLCA3MCwgNjUsIDg0LCAxMjgsIDcwLCA2NSwgODMsIDg0LCAxMjgsIDcwLCA2NSwgODIsIDgzLCAKLSAgICAyMDEsIDcwLCA2NSwgODIsIDEyOCwgNzAsIDY1LCA4MSwgMTI4LCA3MCwgNjUsIDgwLCAxMjgsIDcwLCA2NSwgNzgsIDcxLCAKLSAgICAxMjgsIDcwLCA2NSwgNzgsIDY5LCA4MiwgNzksIDgzLCA3MywgMjExLCA3MCwgNjUsIDc4LCAxMjgsIDcwLCA2NSwgNzcsIAotICAgIDczLCA3NiwgODksIDEyOCwgNzAsIDY1LCA3NywgMTI4LCA3MCwgNjUsIDc2LCA3NiwgNjksIDIwNiwgNzAsIDY1LCA3NCwgCi0gICAgMTI4LCA3MCwgNjUsIDczLCA3NiwgODUsIDgyLCA2OSwgMTI4LCA3MCwgNjUsIDczLCA3MiwgODUsIDEyOCwgNzAsIDY1LCAKLSAgICA3MywgNjYsIDEyOCwgNzAsIDY1LCA3MiwgODIsIDY5LCA3OCwgNzIsIDY5LCA3MywgODQsIDEyOCwgNzAsIDY1LCA2NywgODQsIAotICAgIDc5LCA4MiwgODksIDEyOCwgNzAsIDY1LCA2NywgODQsIDc5LCAyMTAsIDcwLCA2NSwgNjcsIDgzLCA3MywgNzcsIDczLCA3NiwgCi0gICAgMTk3LCA3MCwgNjUsIDY3LCA3MywgNzgsIDcxLCA4MywgMTI4LCA3MCwgNjUsIDY3LCA2OSwgNDUsIDU0LCAxMjgsIDcwLCAKLSAgICA2NSwgNjcsIDY5LCA0NSwgNTMsIDEyOCwgNzAsIDY1LCA2NywgNjksIDQ1LCA1MiwgMTI4LCA3MCwgNjUsIDY3LCA2OSwgNDUsIAotICAgIDUxLCAxMjgsIDcwLCA2NSwgNjcsIDY5LCA0NSwgNTAsIDEyOCwgNzAsIDY1LCA2NywgNjksIDQ1LCA0OSwgMTI4LCA3MCwgCi0gICAgNjUsIDY1LCA3NywgNjUsIDY5LCAxMjgsIDcwLCA2NSwgNjUsIDczLCAxMjgsIDcwLCA2NSwgNjUsIDcwLCA4NSwgMTI4LCAKLSAgICA3MCwgNDgsIDUzLCA1MSwgMTI4LCA3MCwgNDgsIDUzLCA1MCwgMTI4LCA3MCwgNDgsIDUzLCA0OSwgNjcsIDEyOCwgNzAsIAotICAgIDQ4LCA1MywgNDksIDY2LCAxMjgsIDcwLCA0OCwgNTMsIDQ5LCA2NSwgMTI4LCA3MCwgNDgsIDUzLCA0OSwgMTI4LCA3MCwgCi0gICAgNDgsIDUzLCA0OCwgMTI4LCA3MCwgNDgsIDUyLCA1NywgMTI4LCA3MCwgNDgsIDUyLCA1NiwgMTI4LCA3MCwgNDgsIDUyLCAKLSAgICA1NSwgNjUsIDEyOCwgNzAsIDQ4LCA1MiwgNTUsIDEyOCwgNzAsIDQ4LCA1MiwgNTQsIDY1LCAxMjgsIDcwLCA0OCwgNTIsIAotICAgIDU0LCAxMjgsIDcwLCA0OCwgNTIsIDUzLCA2NSwgMTI4LCA3MCwgNDgsIDUyLCA1MywgMTI4LCA3MCwgNDgsIDUyLCA1MiwgCi0gICAgMTI4LCA3MCwgNDgsIDUyLCA1MSwgMTI4LCA3MCwgNDgsIDUyLCA1MCwgMTI4LCA3MCwgNDgsIDUyLCA0OSwgMTI4LCA3MCwgCi0gICAgNDgsIDUyLCA0OCwgMTI4LCA3MCwgNDgsIDUxLCA1NywgMTI4LCA3MCwgNDgsIDUxLCA1NiwgNjUsIDEyOCwgNzAsIDQ4LCAKLSAgICA1MSwgNTYsIDEyOCwgNzAsIDQ4LCA1MSwgNTUsIDY1LCAxMjgsIDcwLCA0OCwgNTEsIDU1LCAxMjgsIDcwLCA0OCwgNTEsIAotICAgIDU0LCAxMjgsIDcwLCA0OCwgNTEsIDUzLCAxMjgsIDcwLCA0OCwgNTEsIDUyLCAxMjgsIDcwLCA0OCwgNTEsIDUxLCAxMjgsIAotICAgIDcwLCA0OCwgNTEsIDUwLCAxMjgsIDcwLCA0OCwgNTEsIDQ5LCA2NSwgMTI4LCA3MCwgNDgsIDUxLCA0OSwgMTI4LCA3MCwgCi0gICAgNDgsIDUxLCA0OCwgMTI4LCA3MCwgNDgsIDUwLCA1NywgMTI4LCA3MCwgNDgsIDUwLCA1NiwgMTI4LCA3MCwgNDgsIDUwLCAKLSAgICA1NSwgMTI4LCA3MCwgNDgsIDUwLCA1NCwgMTI4LCA3MCwgNDgsIDUwLCA1MywgMTI4LCA3MCwgNDgsIDUwLCA1MiwgMTI4LCAKLSAgICA3MCwgNDgsIDUwLCA1MSwgMTI4LCA3MCwgNDgsIDUwLCA1MCwgMTI4LCA3MCwgNDgsIDUwLCA0OSwgNjUsIDEyOCwgNzAsIAotICAgIDQ4LCA1MCwgNDksIDEyOCwgNzAsIDQ4LCA1MCwgNDgsIDEyOCwgNzAsIDQ4LCA0OSwgNTcsIDEyOCwgNzAsIDQ4LCA0OSwgCi0gICAgNTYsIDEyOCwgNzAsIDQ4LCA0OSwgNTUsIDEyOCwgNzAsIDQ4LCA0OSwgNTQsIDEyOCwgNzAsIDQ4LCA0OSwgNTMsIDEyOCwgCi0gICAgNzAsIDQ4LCA0OSwgNTIsIDEyOCwgNzAsIDQ4LCA0OSwgNTEsIDY1LCAxMjgsIDcwLCA0OCwgNDksIDUxLCAxMjgsIDcwLCAKLSAgICA0OCwgNDksIDUwLCAxMjgsIDcwLCA0OCwgNDksIDQ5LCAxMjgsIDcwLCA0OCwgNDksIDQ4LCAxMjgsIDcwLCA0OCwgNDgsIAotICAgIDU3LCAxMjgsIDcwLCA0OCwgNDgsIDU2LCAxMjgsIDcwLCA0OCwgNDgsIDU1LCAxMjgsIDcwLCA0OCwgNDgsIDU0LCAxMjgsIAotICAgIDcwLCA0OCwgNDgsIDUzLCAxMjgsIDcwLCA0OCwgNDgsIDUyLCAxMjgsIDcwLCA0OCwgNDgsIDUxLCAxMjgsIDcwLCA0OCwgCi0gICAgNDgsIDUwLCAxMjgsIDcwLCA0OCwgNDgsIDQ5LCA2NSwgMTI4LCA3MCwgNDgsIDQ4LCA0OSwgMTI4LCA2OSwgOTAsIDgzLCAKLSAgICAxMjgsIDY5LCA5MCwgMjAwLCA2OSwgOTAsIDY5LCA3OCwgMTI4LCA2OSwgOTAsIDY5LCAyMDYsIDY5LCA5MCwgMTI4LCA2OSwgCi0gICAgODksIDg5LCA4OSwgMTI4LCA2OSwgODksIDY5LCA4MywgMTI4LCA2OSwgODksIDY5LCAyMTEsIDY5LCA4OSwgNjksIDc2LCAKLSAgICA2NSwgODMsIDcyLCA2OSwgMjExLCA2OSwgODksIDY5LCA3MSwgNzYsIDY1LCA4MywgODMsIDY5LCA4MywgMTI4LCA2OSwgODksIAotICAgIDY5LCA3MSwgNjUsIDkwLCA2OSwgNDUsIDg3LCA2NSwgNzYsIDc2LCA4MCwgNzYsIDY1LCA3OCwgMTk3LCA2OSwgODksIDY5LCAKLSAgICA3MSwgNjUsIDkwLCA2OSwgNDUsIDcwLCA3NiwgNzksIDc5LCA4MiwgODAsIDc2LCA2NSwgNzgsIDE5NywgNjksIDg5LCA2OSwgCi0gICAgNjYsIDgyLCA3OSwgODcsIDIxMSwgNjksIDg5LCAxOTcsIDY5LCA4OSwgNjYsIDY5LCA4OSwgNzAsIDczLCA3NiwgNzMsIAotICAgIDEyOCwgNjksIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2OSwgODgsIDg0LCA4MiwgNjksIDc3LCA2OSwgNzYsIDIxNywgCi0gICAgNjksIDg4LCA4NCwgODIsIDY1LCA4NCwgNjksIDgyLCA4MiwgNjksIDgzLCA4NCwgODIsIDczLCA2NSwgMjA0LCA2OSwgODgsIAotICAgIDg0LCA4MiwgNjUsIDQ1LCA3NiwgNzksIDIxNSwgNjksIDg4LCA4NCwgODIsIDY1LCA0NSwgNzIsIDczLCA3MSwgMjAwLCA2OSwgCi0gICAgODgsIDg0LCA4MiwgMTkzLCA2OSwgODgsIDg0LCA2OSwgNzgsIDgzLCA3MywgNzksIDc4LCAxMjgsIDY5LCA4OCwgODQsIDY5LCAKLSAgICA3OCwgNjgsIDY5LCA2OCwgMTI4LCA2OSwgODgsIDg0LCA2OSwgNzgsIDY4LCA2OSwgMTk2LCA2OSwgODgsIDgwLCA4MiwgNjksIAotICAgIDgzLCA4MywgNzMsIDc5LCA3OCwgNzYsIDY5LCA4MywgMjExLCA2OSwgODgsIDgwLCA3OSwgNzgsIDY5LCA3OCwgMjEyLCA2OSwgCi0gICAgODgsIDc5LCAxMjgsIDY5LCA4OCwgMjA3LCA2OSwgODgsIDczLCA4MywgODQsIDgzLCAxMjgsIDY5LCA4OCwgNzMsIDgzLCAKLSAgICA4NCwgMTI4LCA2OSwgODgsIDcyLCA2NSwgODUsIDgzLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2OSwgODgsIDcyLCA2NSwgNzYsIAotICAgIDY5LCAxMjgsIDY5LCA4OCwgNjcsIDc2LCA2NSwgNzcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2OSwgODgsIDY3LCA3NiwgCi0gICAgNjUsIDc3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2OSwgODgsIDY3LCA3MywgODQsIDY5LCA3NywgNjksIDc4LCA4NCwgMTI4LCAKLSAgICA2OSwgODgsIDY3LCA3MiwgNjUsIDc4LCA3MSwgNjksIDEyOCwgNjksIDg4LCA2NywgNjksIDgzLCA4MywgMTI4LCA2OSwgODgsIAotICAgIDY3LCA2OSwgNzYsIDc2LCA2OSwgNzgsIDg0LCAxMjgsIDY5LCA4NywgNjksIDEyOCwgNjksIDg2LCA2OSwgODIsIDIxNywgCi0gICAgNjksIDg2LCA2OSwgODIsIDcxLCA4MiwgNjksIDY5LCAyMDYsIDY5LCA4NiwgNjksIDc4LCA3MywgNzgsIDcxLCAxMjgsIDY5LCAKLSAgICA4NSwgODIsIDc5LCA4MCwgNjksIDY1LCAyMDYsIDY5LCA4NSwgODIsIDc5LCA4MCwgNjksIDQ1LCA2NSwgNzAsIDgyLCA3MywgCi0gICAgNjcsIDY1LCAxMjgsIDY5LCA4NSwgODIsIDc5LCA0NSwgNjcsIDg1LCA4MiwgODIsIDY5LCA3OCwgNjcsIDIxNywgNjksIDg1LCAKLSAgICA4MiwgMjA3LCA2OSwgODUsIDc2LCA2OSwgMjEwLCA2OSwgODUsIDQ1LCA4NSwgMTI4LCA2OSwgODUsIDQ1LCA3OSwgMTI4LCAKLSAgICA2OSwgODUsIDQ1LCA2OSwgODUsIDEyOCwgNjksIDg1LCA0NSwgNjksIDc5LCAxMjgsIDY5LCA4NSwgNDUsIDY5LCAxMjgsIAotICAgIDY5LCA4NSwgNDUsIDY1LCAxMjgsIDY5LCA4NCwgODgsIDEyOCwgNjksIDg0LCA3OCwgNjUsIDcyLCA4NCwgNjUsIDEyOCwgCi0gICAgNjksIDg0LCA3MiwgNjksIDIwNCwgNjksIDg0LCA2OSwgODIsIDc5LCAyMDYsIDY5LCA4NCwgNjksIDgyLCA3OCwgNzMsIDg0LCAKLSAgICA4OSwgMTI4LCA2OSwgODQsIDY5LCA4MiwgNzgsIDczLCA4NCwgMjE3LCA2OSwgODQsIDY2LCAxMjgsIDY5LCA4MywgOTAsIAotICAgIDEyOCwgNjksIDgzLCA4NSwgNzUsIDg1LCA4NSwgNjgsIDc5LCAxMjgsIDY5LCA4MywgODQsIDczLCA3NywgNjUsIDg0LCA2OSwgCi0gICAgODMsIDEyOCwgNjksIDgzLCA4NCwgNzMsIDc3LCA2NSwgODQsIDY5LCAxOTYsIDY5LCA4MywgNzIsIDY5LCA1MSwgMTI4LCAKLSAgICA2OSwgODMsIDcyLCA1MCwgNDksIDEyOCwgNjksIDgzLCA3MiwgNDksIDU0LCAxMjgsIDY5LCA4MywgNjcsIDY1LCA4MCwgNjksIAotICAgIDEyOCwgNjksIDgzLCA2NywgMTI4LCA2OSwgODMsIDY1LCAxMjgsIDY5LCA4MywgNDUsIDg0LCA2OSwgMTI4LCA2OSwgODMsIAotICAgIDQ1LCA1MSwgMTI4LCA2OSwgODMsIDQ1LCA1MCwgMTI4LCA2OSwgODMsIDQ1LCA0OSwgMTI4LCA2OSwgODIsIDgyLCA3OSwgCi0gICAgODIsIDQ1LCA2NiwgNjUsIDgyLCA4MiwgNjksIDE5NiwgNjksIDgyLCA4MiwgMTI4LCA2OSwgODIsIDczLCA3OCwgNTAsIAotICAgIDEyOCwgNjksIDgyLCA3MywgNzgsIDE3OCwgNjksIDgyLCA3MSwgMTI4LCA2OSwgODIsIDY1LCA4MywgMTk3LCA2OSwgODEsIAotICAgIDg1LCA3MywgODYsIDY1LCA3NiwgNjksIDc4LCAyMTIsIDY5LCA4MSwgODUsIDczLCA3NiwgNjUsIDg0LCA2OSwgODIsIDY1LCAKLSAgICAyMDQsIDY5LCA4MSwgODUsIDczLCA2OCwgMTI4LCA2OSwgODEsIDg1LCA3MywgNjUsIDc4LCA3MSwgODUsIDc2LCA2NSwgCi0gICAgMjEwLCA2OSwgODEsIDg1LCA2NSwgNzYsIDgzLCAxMjgsIDY5LCA4MSwgODUsIDY1LCA3NiwgMjExLCA2OSwgODEsIDg1LCAKLSAgICA2NSwgNzYsIDEyOCwgNjksIDgwLCA4MywgNzMsIDc2LCA3OSwgNzgsIDEyOCwgNjksIDgwLCA4MywgNzMsIDc2LCA3OSwgCi0gICAgMjA2LCA2OSwgODAsIDc5LCA2NywgNzIsIDEyOCwgNjksIDgwLCA3MywgNzEsIDgyLCA2NSwgODAsIDcyLCA3MywgMTk1LCAKLSAgICA2OSwgODAsIDczLCA2OCwgNjUsIDg1LCA4MiwgNjksIDY1LCAyMDYsIDY5LCA4MCwgNjksIDc4LCA4NCwgNzIsIDY5LCA4NCwgCi0gICAgNzMsIDE5NSwgNjksIDgwLCA2OSwgNzEsIDY5LCA4MiwgNzcsIDY1LCAxMjgsIDY5LCA4MCwgNjUsIDY3LCAyMTIsIDY5LCAKLSAgICA3OSwgODQsIDEyOCwgNjksIDc5LCA3NywgMTI4LCA2OSwgNzksIDc2LCA3MiwgODgsIDEyOCwgNjksIDc5LCA3NiwgMTI4LCAKLSAgICA2OSwgNzksIDcyLCAxMjgsIDY5LCA3OCwgODksIDEyOCwgNjksIDc4LCA4NiwgNjksIDc2LCA3OSwgODAsIDY5LCAxMjgsIAotICAgIDY5LCA3OCwgODYsIDY5LCA3NiwgNzksIDgwLCAxOTcsIDY5LCA3OCwgODUsIDc3LCA2OSwgODIsIDY1LCA4NCwgNzMsIDc5LCAKLSAgICAyMDYsIDY5LCA3OCwgODQsIDgyLCA4OSwgNDUsIDUwLCAxMjgsIDY5LCA3OCwgODQsIDgyLCA4OSwgNDUsIDQ5LCAxMjgsIAotICAgIDY5LCA3OCwgODQsIDgyLCA4OSwgMTI4LCA2OSwgNzgsIDg0LCA4MiwgMjE3LCA2OSwgNzgsIDg0LCA3MiwgODUsIDgzLCA3MywgCi0gICAgNjUsIDgzLCA3NywgMTI4LCA2OSwgNzgsIDg0LCA2OSwgODIsIDgwLCA4MiwgNzMsIDgzLCA2OSwgMTI4LCA2OSwgNzgsIDg0LCAKLSAgICA2OSwgODIsIDczLCA3OCwgMTk5LCA2OSwgNzgsIDg0LCA2OSwgODIsIDEyOCwgNjksIDc4LCA4NCwgNjksIDIxMCwgNjksIAotICAgIDc4LCA4NCwgNDUsIDgzLCA3MiwgNjUsIDgwLCA2OSwgMTk2LCA2OSwgNzgsIDgxLCA4NSwgNzMsIDgyLCA4OSwgMTI4LCA2OSwgCi0gICAgNzgsIDgxLCAxMjgsIDY5LCA3OCwgNzksIDIxMSwgNjksIDc4LCA3OCwgNzMsIDEyOCwgNjksIDc4LCA3OCwgMTI4LCA2OSwgCi0gICAgNzgsIDc2LCA2NSwgODIsIDcxLCA2OSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNjksIDc4LCA3MSwgNzMsIDc4LCA2OSwgMTI4LCAKLSAgICA2OSwgNzgsIDY4LCA3OSwgNzAsIDc5LCA3OCwgNzksIDc4LCAxMjgsIDY5LCA3OCwgNjgsIDczLCA3OCwgMTk5LCA2OSwgNzgsIAotICAgIDY4LCA2OSwgODAsIDEyOCwgNjksIDc4LCA2OCwgNjksIDY1LCA4NiwgNzksIDg1LCA4MiwgMTI4LCA2OSwgNzgsIDY3LCA3OSwgCi0gICAgODUsIDc4LCA4NCwgNjksIDgyLCA4MywgMTI4LCA2OSwgNzgsIDY3LCA3NiwgNzksIDgzLCA4NSwgODIsIDY5LCA4MywgMTI4LCAKLSAgICA2OSwgNzgsIDY3LCA3NiwgNzksIDgzLCA4NSwgODIsIDY5LCAxMjgsIDY5LCA3OCwgNjcsIDc2LCA3OSwgODMsIDczLCA3OCwgCi0gICAgMTk5LCA2OSwgNzgsIDY3LCAxMjgsIDY5LCA3OCwgNjUsIDgyLCA4OCwgNzMsIDIxMSwgNjksIDc4LCA2NSwgODIsIDc3LCAKLSAgICA3OSwgNzgsIDczLCA3OSwgMjExLCA2OSwgNzcsIDgwLCA4NCwgMjE3LCA2OSwgNzcsIDgwLCA3MiwgNjUsIDg0LCA3MywgCi0gICAgMTk1LCA2OSwgNzcsIDgwLCA3MiwgNjUsIDgzLCA3MywgMjExLCA2OSwgNzcsIDc5LCA3NCwgMjAxLCA2OSwgNzcsIDY2LCAKLSAgICA4MiwgNzksIDczLCA2OCwgNjksIDgyLCA4OSwgMTI4LCA2OSwgNzcsIDY2LCA3NiwgNjksIDc3LCAxMjgsIDY5LCA3NywgNjYsIAotICAgIDY5LCA3NiwgNzYsIDczLCA4MywgNzIsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY5LCA3NywgNjYsIDY5LCA2OCwgNjgsIDczLCAKLSAgICA3OCwgNzEsIDEyOCwgNjksIDc2LCA4OSwgMTI4LCA2OSwgNzYsIDg0LCAxMjgsIDY5LCA3NiwgNzYsIDczLCA4MCwgODQsIAotICAgIDczLCAxOTUsIDY5LCA3NiwgNzYsIDczLCA4MCwgODMsIDczLCA4MywgMTI4LCA2OSwgNzYsIDc2LCA3MywgODAsIDgzLCA2OSwgCi0gICAgMTI4LCA2OSwgNzYsIDczLCA3MCwgNzMsIDEyOCwgNjksIDc2LCA2OSwgODYsIDY5LCA3OCwgNDUsIDg0LCA3MiwgNzMsIDgyLCAKLSAgICA4NCwgODksIDEyOCwgNjksIDc2LCA2OSwgODYsIDY5LCA3OCwgMTI4LCA2OSwgNzYsIDY5LCA4NiwgNjksIDIwNiwgNjksIAotICAgIDc2LCA2OSwgODAsIDcyLCA2NSwgNzgsIDg0LCAxMjgsIDY5LCA3NiwgNjksIDc3LCA2OSwgNzgsIDIxMiwgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA4MiwgNzMsIDY3LCA2NSwgMjA0LCA2OSwgNzYsIDY5LCA2NywgODQsIDgyLCA3MywgMTk1LCA2OSwgNzYsIDY2LCAKLSAgICA2NSwgODMsIDY1LCAyMDYsIDY5LCA3NiwgNjUsIDc3LCA3MywgODQsIDY5LCAxMjgsIDY5LCA3NiwgNjUsIDc3LCA3MywgODQsIAotICAgIDE5NywgNjksIDc2LCA2NSwgNzAsIDgyLCA3OSwgNzgsIDEyOCwgNjksIDc1LCA4MywgODQsIDgyLCA2OSwgODAsIDg0LCA3OSwgCi0gICAgNzgsIDEyOCwgNjksIDc1LCA4MywgMTI4LCA2OSwgNzUsIDcwLCA3OSwgNzgsIDczLCA4NCwgNzMsIDc1LCA3OSwgNzgsIAotICAgIDEyOCwgNjksIDc1LCA2NSwgODIsIDY1LCAxMjgsIDY5LCA3NSwgNjUsIDc3LCAxMjgsIDY5LCA3NCwgNjksIDY3LCAyMTIsIAotICAgIDY5LCA3MywgODMsIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCA4OSwgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIDIxNywgCi0gICAgNjksIDczLCA3MSwgNzIsIDg0LCA3MiwgODMsIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCA3MiwgMjExLCA2OSwgNzMsIDcxLCAKLSAgICA3MiwgODQsIDcyLCAxMjgsIDY5LCA3MywgNzEsIDcyLCA4NCwgNjksIDY5LCA3OCwgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIAotICAgIDY5LCA2OSwgMjA2LCA2OSwgNzMsIDcxLCA3MiwgODQsIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDY5LCA3MywgCi0gICAgNjksIDEyOCwgNjksIDcyLCA4NywgNjUsIDIxOCwgNjksIDcxLCA4OSwgODAsIDg0LCA3OSwgNzYsIDc5LCA3MSwgNzMsIDY3LCAKLSAgICA2NSwgMjA0LCA2OSwgNzEsIDg5LCAxMjgsIDY5LCA3MSwgNzMsIDgyLCAxMjgsIDY5LCA3MSwgNzEsIDEyOCwgNjksIDY5LCAKLSAgICA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjksIDY5LCA3NSwgNjUsIDY1LCAxMjgsIDY5LCA2OSwgNzIsIDEyOCwgNjksIAotICAgIDY5LCA2NiwgNjksIDY5LCA3MCwgNzMsIDc2LCA3MywgMTI4LCA2OSwgNjgsIDczLCA4NCwgNzksIDgyLCA3MywgNjUsIDIwNCwgCi0gICAgNjksIDY4LCA3MywgNzgsIDEyOCwgNjksIDY4LCA2OCwgMTI4LCA2OSwgNjcsIDgzLCAxMjgsIDY5LCA2NiwgNjksIDcwLCAKLSAgICA3MywgNzYsIDczLCAxMjgsIDY5LCA2NSwgODMsIDg0LCA2OSwgODIsIDIwNiwgNjksIDY1LCA4MywgODQsIDEyOCwgNjksIAotICAgIDY1LCA4MywgMjEyLCA2OSwgNjUsIDgyLCA4NCwgNzIsIDc2LCAyMTcsIDY5LCA2NSwgODIsIDg0LCA3MiwgMTI4LCA2OSwgCi0gICAgNjUsIDgyLCA4NCwgMjAwLCA2OSwgNjUsIDgyLCA4MywgMTI4LCA2OSwgNjUsIDgyLCA3NiwgMjE3LCA2OSwgNjUsIDc3LCAKLSAgICA3MiwgNjUsIDc4LCA2NywgNzIsIDc5LCA3NiwgNzYsIDEyOCwgNjksIDY1LCA3MSwgNzYsIDY5LCAxMjgsIDY5LCA2NSwgNjgsIAotICAgIDcyLCA2NSwgNjgsIDcyLCAxMjgsIDY5LCA2NSwgNjYsIDcyLCA2NSwgNjgsIDcyLCAxMjgsIDY5LCAxNzgsIDY5LCA0OCwgCi0gICAgNTEsIDU2LCAxMjgsIDY5LCA0OCwgNTEsIDU1LCAxMjgsIDY5LCA0OCwgNTEsIDU0LCAxMjgsIDY5LCA0OCwgNTEsIDUyLCAKLSAgICA2NSwgMTI4LCA2OSwgNDgsIDUxLCA1MiwgMTI4LCA2OSwgNDgsIDUxLCA1MSwgMTI4LCA2OSwgNDgsIDUxLCA1MCwgMTI4LCAKLSAgICA2OSwgNDgsIDUxLCA0OSwgMTI4LCA2OSwgNDgsIDUxLCA0OCwgMTI4LCA2OSwgNDgsIDUwLCA1NywgMTI4LCA2OSwgNDgsIAotICAgIDUwLCA1NiwgNjUsIDEyOCwgNjksIDQ4LCA1MCwgNTYsIDEyOCwgNjksIDQ4LCA1MCwgNTUsIDEyOCwgNjksIDQ4LCA1MCwgCi0gICAgNTQsIDEyOCwgNjksIDQ4LCA1MCwgNTMsIDEyOCwgNjksIDQ4LCA1MCwgNTIsIDEyOCwgNjksIDQ4LCA1MCwgNTEsIDEyOCwgCi0gICAgNjksIDQ4LCA1MCwgNTAsIDEyOCwgNjksIDQ4LCA1MCwgNDksIDEyOCwgNjksIDQ4LCA1MCwgNDgsIDY1LCAxMjgsIDY5LCAKLSAgICA0OCwgNTAsIDQ4LCAxMjgsIDY5LCA0OCwgNDksIDU3LCAxMjgsIDY5LCA0OCwgNDksIDU2LCAxMjgsIDY5LCA0OCwgNDksIAotICAgIDU1LCA2NSwgMTI4LCA2OSwgNDgsIDQ5LCA1NSwgMTI4LCA2OSwgNDgsIDQ5LCA1NCwgNjUsIDEyOCwgNjksIDQ4LCA0OSwgCi0gICAgNTQsIDEyOCwgNjksIDQ4LCA0OSwgNTMsIDEyOCwgNjksIDQ4LCA0OSwgNTIsIDEyOCwgNjksIDQ4LCA0OSwgNTEsIDEyOCwgCi0gICAgNjksIDQ4LCA0OSwgNTAsIDEyOCwgNjksIDQ4LCA0OSwgNDksIDEyOCwgNjksIDQ4LCA0OSwgNDgsIDEyOCwgNjksIDQ4LCAKLSAgICA0OCwgNTcsIDY1LCAxMjgsIDY5LCA0OCwgNDgsIDU3LCAxMjgsIDY5LCA0OCwgNDgsIDU2LCA2NSwgMTI4LCA2OSwgNDgsIAotICAgIDQ4LCA1NiwgMTI4LCA2OSwgNDgsIDQ4LCA1NSwgMTI4LCA2OSwgNDgsIDQ4LCA1NCwgMTI4LCA2OSwgNDgsIDQ4LCA1MywgCi0gICAgMTI4LCA2OSwgNDgsIDQ4LCA1MiwgMTI4LCA2OSwgNDgsIDQ4LCA1MSwgMTI4LCA2OSwgNDgsIDQ4LCA1MCwgMTI4LCA2OSwgCi0gICAgNDgsIDQ4LCA0OSwgMTI4LCA2OSwgNDUsIDc3LCA2NSwgNzMsIDIwNCwgNjgsIDkwLCA5MCwgNzIsIDY5LCAxMjgsIDY4LCAKLSAgICA5MCwgOTAsIDY5LCAxMjgsIDY4LCA5MCwgOTAsIDY1LCAxMjgsIDY4LCA5MCwgODksIDY1LCA4OSwgMTI4LCA2OCwgOTAsIAotICAgIDg3LCA2OSwgMTI4LCA2OCwgOTAsIDg1LCAxMjgsIDY4LCA5MCwgNzksIDEyOCwgNjgsIDkwLCA3NCwgNjksIDEyOCwgNjgsIAotICAgIDkwLCA3MywgODQsIDY1LCAxMjgsIDY4LCA5MCwgNzMsIDEyOCwgNjgsIDkwLCA3MiwgNzksIDczLCAxMjgsIDY4LCA5MCwgCi0gICAgNzIsIDY5LCAxMjgsIDY4LCA5MCwgNzIsIDY1LCAxMjgsIDY4LCA5MCwgNjksIDc2LCA3OSwgMTI4LCA2OCwgOTAsIDY5LCAKLSAgICA2OSwgMTI4LCA2OCwgOTAsIDY5LCAxMjgsIDY4LCA5MCwgNjUsIDg5LCAxMjgsIDY4LCA5MCwgNjUsIDY1LCAxMjgsIDY4LCAKLSAgICA5MCwgNjUsIDEyOCwgNjgsIDkwLCAxMjgsIDY4LCAyMTgsIDY4LCA4OSwgNzksIDEyOCwgNjgsIDg5LCAyMDcsIDY4LCA4OSwgCi0gICAgNzgsIDY1LCA3NywgNzMsIDE5NSwgNjgsIDg5LCA2OSwgNzIsIDEyOCwgNjgsIDg5LCA2OSwgMjAwLCA2OCwgODksIDY1LCAKLSAgICA3OCwgMTI4LCA2OCwgODcsIDc5LCAxMjgsIDY4LCA4NywgNjksIDEyOCwgNjgsIDg3LCA2NSwgMTI4LCA2OCwgODYsIDczLCAKLSAgICA4MywgODYsIDY1LCA4MiwgNjUsIDEyOCwgNjgsIDg2LCA2OCwgMTI4LCA2OCwgODYsIDEyOCwgNjgsIDg1LCA4NCwgNzMsIAotICAgIDY5LCA4MywgMTI4LCA2OCwgODUsIDgzLCA3NSwgMTI4LCA2OCwgODUsIDgzLCA3MiwgNjksIDc4LCA3OCwgNjUsIDEyOCwgCi0gICAgNjgsIDg1LCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY4LCA4NSwgODIsIDUwLCAxMjgsIDY4LCA4NSwgODAsIDc5LCAKLSAgICA3OCwgNjgsIDczLCA4NSwgMjExLCA2OCwgODUsIDc5LCA4OCwgMTI4LCA2OCwgODUsIDc5LCAxMjgsIDY4LCA4NSwgNzgsIAotICAgIDUyLCAxMjgsIDY4LCA4NSwgNzgsIDUxLCAxMjgsIDY4LCA4NSwgNzgsIDE3OSwgNjgsIDg1LCA3NywgMTI4LCA2OCwgODUsIAotICAgIDIwNCwgNjgsIDg1LCA3MiwgMTI4LCA2OCwgODUsIDcxLCA4NSwgNjgsIDEyOCwgNjgsIDg1LCAxOTksIDY4LCA4NSwgNjYsIAotICAgIDUwLCAxMjgsIDY4LCA4NSwgNjYsIDEyOCwgNjgsIDg1LCAxOTQsIDY4LCA4MiwgODksIDEyOCwgNjgsIDgyLCAyMTcsIDY4LCAKLSAgICA4MiwgODUsIDc3LCAxMjgsIDY4LCA4MiwgODUsIDIwNSwgNjgsIDgyLCA3OSwgODAsIDgzLCAxMjgsIDY4LCA4MiwgNzksIAotICAgIDgwLCA3NiwgNjksIDg0LCAxMjgsIDY4LCA4MiwgNzksIDgwLCA0NSwgODMsIDcyLCA2NSwgNjgsIDc5LCA4NywgNjksIDE5NiwgCi0gICAgNjgsIDgyLCA3OSwgNzcsIDY5LCA2OCwgNjUsIDgyLCAyMTcsIDY4LCA4MiwgNzMsIDg2LCA2OSwgMTI4LCA2OCwgODIsIDczLCAKLSAgICA4NiwgMTk3LCA2OCwgODIsIDczLCA3OCwgNzUsIDEyOCwgNjgsIDgyLCA3MywgMjA0LCA2OCwgODIsIDY5LCA4MywgODMsIAotICAgIDEyOCwgNjgsIDgyLCA2OSwgNjUsIDc3LCAyMTcsIDY4LCA4MiwgNjUsIDg1LCA3MSwgNzIsIDg0LCAyMTEsIDY4LCA4MiwgCi0gICAgNjUsIDc3LCAxMjgsIDY4LCA4MiwgNjUsIDIwNSwgNjgsIDgyLCA2NSwgNzEsIDc5LCA3OCwgMTI4LCA2OCwgODIsIDY1LCAKLSAgICA3MSwgNzksIDIwNiwgNjgsIDgyLCA2NSwgNzAsIDg0LCA3MywgNzgsIDE5OSwgNjgsIDgyLCA2NSwgNjcsIDcyLCA3NywgNjUsIAotICAgIDgzLCAxMjgsIDY4LCA4MiwgNjUsIDY3LCA3MiwgNzcsIDY1LCAxMjgsIDY4LCA4MiwgNjUsIDY3LCA3MiwgNzcsIDE5MywgCi0gICAgNjgsIDc5LCA4NywgNzgsIDg3LCA2NSwgODIsIDY4LCA4MywgMTI4LCA2OCwgNzksIDg3LCA3OCwgNDUsIDgwLCA3OSwgNzMsIAotICAgIDc4LCA4NCwgNzMsIDc4LCAxOTksIDY4LCA3OSwgODcsIDc4LCAxMjgsIDY4LCA3OSwgODYsIDY5LCAxMjgsIDY4LCA3OSwgCi0gICAgODYsIDE5NywgNjgsIDc5LCA4NSwgNzEsIDcyLCA3OCwgODUsIDg0LCAxMjgsIDY4LCA3OSwgODUsIDY2LCA4NCwgMTI4LCAKLSAgICA2OCwgNzksIDg1LCA2NiwgNzYsIDY5LCAxOTYsIDY4LCA3OSwgODUsIDY2LCA3NiwgNjksIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIAotICAgIDY4LCA3OSwgODUsIDY2LCA3NiwgNjksIDQ1LCA2OSwgNzgsIDY4LCA2OSwgMTk2LCA2OCwgNzksIDg1LCA2NiwgNzYsIDY5LCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDg0LCA2OSwgNjgsIDQ1LCA4MCwgMTI4LCA2OCwgNzksIDg0LCA4NCwgNjksIDY4LCA0NSwgNzgsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODQsIDY5LCA2OCwgNDUsIDc2LCAxMjgsIDY4LCA3OSwgODQsIDg0LCA2OSwgNjgsIDEyOCwgCi0gICAgNjgsIDc5LCA4NCwgODQsIDY5LCAxOTYsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKLSAgICA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDU0LCA1NiwgCi0gICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NCwgNTUsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NiwgMTI4LCA2OCwgCi0gICAgNzksIDg0LCA4MywgNDUsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTUsIDEyOCwgNjgsIDc5LCAKLSAgICA4NCwgODMsIDQ1LCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIAotICAgIDc5LCA4NCwgODMsIDQ1LCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgCi0gICAgODQsIDgzLCA0NSwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKLSAgICA1MiwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIAotICAgIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCi0gICAgNTIsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCAKLSAgICA1MywgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAotICAgIDUyLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgCi0gICAgNDUsIDUyLCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTQsIDU1LCAxMjgsIDY4LCAKLSAgICA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgMTI4LCA2OCwgNzksIAotICAgIDg0LCA4MywgNDUsIDUyLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCi0gICAgNTEsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCAKLSAgICA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAotICAgIDUxLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgCi0gICAgNTMsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKLSAgICA1MSwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAotICAgIDQ1LCA1MSwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgCi0gICAgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDEyOCwgNjgsIDc5LCAKLSAgICA4NCwgODMsIDQ1LCA1MSwgNTIsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1NSwgNTYsIDEyOCwgNjgsIAotICAgIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1NCwgNTYsIDEyOCwgCi0gICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIAotICAgIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgCi0gICAgNTIsIDUzLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCAKLSAgICA4MywgNDUsIDUxLCA1MiwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgNTQsIDU2LCAxMjgsIAotICAgIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCAKLSAgICA1MiwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIAotICAgIDgzLCA0NSwgNTEsIDUyLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgMTI4LCA2OCwgNzksIDg0LCA4MywgCi0gICAgNDUsIDUxLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU1LCAKLSAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NCwgNTYsIAorICAgIDY5LCAxMjgsIDcyLCA2OCwgODIsIDEyOCwgNzIsIDY3LCAxMjgsIDcyLCA2NiwgNjUsIDgzLCA2NSwgNDUsIDY5LCA4MywgCisgICAgNjUsIDgzLCAxOTMsIDcyLCA2NiwgNjUsIDgzLCAxOTMsIDcyLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDcyLCAKKyAgICA2NSwgODcsIDc0LCAxMjgsIDcyLCA2NSwgODYsIDY5LCAxMjgsIDcyLCA2NSwgODUsIDgwLCA4NCwgODMsIDg0LCA3MywgNzcsIAorICAgIDc3LCA2OSwgMTI4LCA3MiwgNjUsIDIxMywgNzIsIDY1LCA4NCwgODIsIDY1LCAyMDYsIDcyLCA2NSwgODQsIDcyLCA3MywgCisgICAgMTI4LCA3MiwgNjUsIDg0LCA2OSwgMTI4LCA3MiwgNjUsIDg0LCA2NywgNzIsIDczLCA3OCwgMTk5LCA3MiwgNjUsIDg0LCAKKyAgICA2NSwgMTk4LCA3MiwgNjUsIDgzLCA2OSwgMjEwLCA3MiwgNjUsIDgzLCA2NSwgNzgsIDg0LCA2NSwgMTI4LCA3MiwgNjUsIAorICAgIDgyLCA4MCwgNzksIDc5LCA3OCwgMTI4LCA3MiwgNjUsIDgyLCA4MCwgNzksIDc5LCAyMDYsIDcyLCA2NSwgODIsIDc3LCA3OSwgCisgICAgNzgsIDczLCA2NywgMTI4LCA3MiwgNjUsIDgyLCA3NSwgNzYsIDY5LCA2NSwgMjA2LCA3MiwgNjUsIDgyLCA2OCwgNzgsIDY5LCAKKyAgICA4MywgODMsIDEyOCwgNzIsIDY1LCA4MiwgMTk2LCA3MiwgNjUsIDgwLCA4MCwgMjE3LCA3MiwgNjUsIDc4LCA4NSwgNzgsIAorICAgIDc5LCAyMDcsIDcyLCA2NSwgNzgsIDcxLCA5MCwgNzIsIDc5LCAyMTMsIDcyLCA2NSwgNzgsIDY4LCA4MywgNzIsIDY1LCA3NSwgCisgICAgNjksIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDgzLCAxMjgsIDcyLCA2NSwgNzgsIDY4LCAyMTEsIDcyLCA2NSwgNzgsIDY4LCAKKyAgICA3NiwgNjksIDgzLCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA3NiwgNjksIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDY2LCA2NSwgNzYsIAorICAgIDc2LCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA2NiwgNjUsIDcxLCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNzksIDg2LCA2NSwgCisgICAgNzYsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA3OSwgODYsIDY1LCAyMDQsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNzIsIDc5LCAKKyAgICA3OSwgNzUsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA3MiwgNzksIDc5LCAyMDMsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNzIsIAorICAgIDczLCA3OCwgNzEsIDY5LCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNzIsIDczLCA3OCwgNzEsIDE5NywgNzIsIDY1LCA3OCwgCisgICAgNjgsIDQ1LCA3MCwgNzYsIDY1LCA4NCwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDcwLCA3NiwgNjUsIDIxMiwgNzIsIDY1LCAKKyAgICA3OCwgNjgsIDQ1LCA3MCwgNzMsIDgzLCA4NCwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDY3LCA4NSwgODIsIDc2LCA3MywgCisgICAgNjcsIDg1LCA2OSwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDY3LCA4NSwgODIsIDc2LCA3MywgNjcsIDg1LCAxOTcsIDcyLCAKKyAgICA2NSwgNzgsIDY4LCA0NSwgNjcsIDg1LCA4MCwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDY3LCA4NSwgMjA4LCA3MiwgNjUsIAorICAgIDc4LCA2OCwgNDUsIDY3LCA3NiwgNjUsIDg3LCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNjcsIDc2LCA2NSwgMjE1LCA3MiwgCisgICAgNjUsIDc4LCA2OCwgNDUsIDY3LCA3MywgODIsIDY3LCA3NiwgNjksIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA2NywgNzMsIAorICAgIDgyLCA2NywgNzYsIDE5NywgNzIsIDY1LCA3OCwgNjgsIDQ1LCA2NSwgNzgsIDcxLCA3NiwgNjksIDEyOCwgNzIsIDY1LCA3OCwgCisgICAgNjgsIDQ1LCA2NSwgNzgsIDcxLCA3NiwgMTk3LCA3MiwgNjUsIDc4LCA2OCwgMTI4LCA3MiwgNjUsIDc4LCA0NSwgNjUsIDc1LCAKKyAgICA2NSwgODQsIDEyOCwgNzIsIDY1LCA3NywgOTAsIDY1LCAxMjgsIDcyLCA2NSwgNzcsIDkwLCAxOTMsIDcyLCA2NSwgNzcsIAorICAgIDgzLCA4NCwgNjksIDIxMCwgNzIsIDY1LCA3NywgNzcsIDY5LCA4MiwgMTI4LCA3MiwgNjUsIDc3LCA3NywgNjksIDIxMCwgCisgICAgNzIsIDY1LCA3NywgNjYsIDg1LCA4MiwgNzEsIDY5LCA4MiwgMTI4LCA3MiwgNjUsIDc2LCA4MSwgNjUsIDEyOCwgNzIsIDY1LCAKKyAgICA3NiwgNzksIDEyOCwgNzIsIDY1LCA3NiwgNzAsIDQ1LCA2NywgNzMsIDgyLCA2NywgNzYsIDE5NywgNzIsIDY1LCA3NiwgNzAsIAorICAgIDEyOCwgNzIsIDY1LCA3NiwgNjYsIDY5LCA4MiwgNjgsIDEyOCwgNzIsIDY1LCA3NiwgNjUsIDc4LCA4NCwgNjUsIDEyOCwgCisgICAgNzIsIDY1LCA3MywgODQsIDg1LCAxMjgsIDcyLCA2NSwgNzMsIDIxMSwgNzIsIDY1LCA3MywgODIsIDY3LCA4NSwgODQsIAorICAgIDEyOCwgNzIsIDY1LCA3MywgODIsIDEyOCwgNzIsIDY1LCA3MSwgNzYsIDY1LCAyMTgsIDcyLCA2NSwgNzEsIDc2LCAxMjgsIAorICAgIDcyLCA2NSwgNzAsIDg1LCA3NSwgNzIsIDY1LCAxMjgsIDcyLCA2NSwgNzAsIDg1LCA3NSwgNzIsIDEyOCwgNzIsIDY1LCA2OSwgCisgICAgNzEsIDIwNCwgNzIsIDY1LCA2NSwgODIsIDg1LCAxMjgsIDcyLCA2NSwgNjUsIDc3LCAxMjgsIDcyLCA2NSwgMTkzLCA3MiwgCisgICAgNjUsIDQ1LCA3MiwgNjUsIDEyOCwgNzIsIDQ4LCA0OCwgNTYsIDEyOCwgNzIsIDQ4LCA0OCwgNTUsIDEyOCwgNzIsIDQ4LCAKKyAgICA0OCwgNTQsIDY1LCAxMjgsIDcyLCA0OCwgNDgsIDU0LCAxMjgsIDcyLCA0OCwgNDgsIDUzLCAxMjgsIDcyLCA0OCwgNDgsIAorICAgIDUyLCAxMjgsIDcyLCA0OCwgNDgsIDUxLCAxMjgsIDcyLCA0OCwgNDgsIDUwLCAxMjgsIDcyLCA0OCwgNDgsIDQ5LCAxMjgsIAorICAgIDcyLCA0NSwgODQsIDg5LCA4MCwgMTk3LCA3MSwgODksIDg1LCAxMjgsIDcxLCA4OSwgNzksIDc4LCAxMjgsIDcxLCA4OSwgCisgICAgNzksIDEyOCwgNzEsIDg5LCA3MywgMTI4LCA3MSwgODksIDcwLCAyMTMsIDcxLCA4OSwgNjksIDY5LCAxMjgsIDcxLCA4OSwgCisgICAgNjUsIDgzLCAxMjgsIDcxLCA4OSwgNjUsIDY1LCAxMjgsIDcxLCA4OSwgNjUsIDEyOCwgNzEsIDg5LCAxMjgsIDcxLCA4NywgCisgICAgODUsIDEyOCwgNzEsIDg3LCA3MywgMTI4LCA3MSwgODcsIDY5LCA2OSwgMTI4LCA3MSwgODcsIDY5LCAxMjgsIDcxLCA4NywgCisgICAgNjUsIDY1LCAxMjgsIDcxLCA4NywgNjUsIDEyOCwgNzEsIDg2LCA2NSwgNzgsIDcxLCAxMjgsIDcxLCA4NiwgMTI4LCA3MSwgCisgICAgODUsIDgyLCA4NSwgODMsIDcyLCAxMjgsIDcxLCA4NSwgODIsIDg1LCA3OCwgMTI4LCA3MSwgODUsIDgyLCA3NywgODUsIDc1LCAKKyAgICA3MiwgMjAxLCA3MSwgODUsIDgyLCA2NSwgNzcsIDg1LCA4NCwgNzksIDc4LCAxMjgsIDcxLCA4NSwgODIsIDU1LCAxMjgsIAorICAgIDcxLCA4NSwgNzgsIDg1LCAxMjgsIDcxLCA4NSwgNzgsIDIxMywgNzEsIDg1LCAyMDUsIDcxLCA4NSwgNzYsIDEyOCwgNzEsIAorICAgIDg1LCA3NCwgNjUsIDgyLCA2NSwgODQsIDIwMSwgNzEsIDg1LCA3MywgODQsIDY1LCA4MiwgMTI4LCA3MSwgODUsIDE5OSwgCisgICAgNzEsIDg1LCA2OSwgNzMsIDEyOCwgNzEsIDg1LCA2OSwgNzIsIDEyOCwgNzEsIDg1LCA2OSwgMjAwLCA3MSwgODUsIDY4LCAKKyAgICAxMjgsIDcxLCA4NSwgMTk2LCA3MSwgODUsIDY1LCA4MiwgNjgsIDgzLCA3NywgNjUsIDc4LCAxMjgsIDcxLCA4NSwgNjUsIAorICAgIDgyLCA2OCwgNjksIDY4LCA3OCwgNjksIDgzLCA4MywgMTI4LCA3MSwgODUsIDY1LCA4MiwgNjgsIDY5LCAxOTYsIDcxLCA4NSwgCisgICAgNjUsIDgyLCA2OCwgMTI4LCA3MSwgODUsIDY1LCA4MiwgNjUsIDc4LCAyMDEsIDcxLCA4NSwgMTkzLCA3MSwgODUsIDE3OCwgCisgICAgNzEsIDg0LCA2OSwgMjEwLCA3MSwgODMsIDg1LCA3NywgMTI4LCA3MSwgODMsIDg1LCAyMDUsIDcxLCA4MiwgMjEzLCA3MSwgCisgICAgODIsIDc5LCA4NywgNzMsIDc4LCAxOTksIDcxLCA4MiwgNzksIDg1LCA3OCwgNjgsIDEyOCwgNzEsIDgyLCA3OSwgNzgsIDg0LCAKKyAgICA3MiwgNzMsIDgzLCA3NywgNjUsIDg0LCA2NSwgMTI4LCA3MSwgODIsIDczLCA3OCwgNzgsIDczLCA3OCwgMTk5LCA3MSwgODIsIAorICAgIDczLCA3NywgNjUsIDY3LCA3MywgNzgsIDE5OSwgNzEsIDgyLCA2OSwgNzEsIDc5LCA4MiwgNzMsIDY1LCAyMDYsIDcxLCA4MiwgCisgICAgNjksIDY5LCAyMDYsIDcxLCA4MiwgNjksIDY1LCA4NCwgNzgsIDY5LCA4MywgODMsIDEyOCwgNzEsIDgyLCA2OSwgNjUsIDg0LCAKKyAgICA2OSwgODIsIDQ1LCA4NCwgNzIsIDY1LCA3OCwgMTI4LCA3MSwgODIsIDY5LCA2NSwgODQsIDY5LCA4MiwgNDUsIDg0LCA3MiwgCisgICAgNjUsIDIwNiwgNzEsIDgyLCA2OSwgNjUsIDg0LCA2OSwgMjEwLCA3MSwgODIsIDY5LCA2NSwgMjEyLCA3MSwgODIsIDY1LCAKKyAgICA4NiwgNjksIDg5LCA2NSwgODIsIDE5NiwgNzEsIDgyLCA2NSwgODYsIDY5LCA0NSwgNzcsIDY1LCA2NywgODIsIDc5LCA3OCwgCisgICAgMTI4LCA3MSwgODIsIDY1LCA4NiwgNjksIDQ1LCA2NSwgNjcsIDg1LCA4NCwgNjksIDQ1LCA3MSwgODIsIDY1LCA4NiwgNjksIAorICAgIDEyOCwgNzEsIDgyLCA2NSwgODYsIDE5NywgNzEsIDgyLCA2NSwgODQsIDY5LCA4MiwgMTI4LCA3MSwgODIsIDY1LCA4MywgCisgICAgODMsIDEyOCwgNzEsIDgyLCA2NSwgODMsIDIxMSwgNzEsIDgyLCA2NSwgODMsIDIwOCwgNzEsIDgyLCA2NSwgODAsIDcyLCAKKyAgICA2OSwgNzcsIDE5NywgNzEsIDgyLCA2NSwgODAsIDY5LCA4MywgMTI4LCA3MSwgODIsIDY1LCA3OCwgODQsIDcyLCAxOTMsIAorICAgIDcxLCA4MiwgNjUsIDc3LCA3NywgMTkzLCA3MSwgODIsIDY1LCA3MywgNzgsIDEyOCwgNzEsIDgyLCA2NSwgNjgsIDg1LCA2NSwgCisgICAgODQsIDczLCA3OSwgMjA2LCA3MSwgODIsIDY1LCA2OCwgODUsIDY1LCA3NiwgMTI4LCA3MSwgODIsIDY1LCA2NywgNjksIAorICAgIDEyOCwgNzEsIDgyLCA2NSwgNjcsIDE5NywgNzEsIDgwLCA2NSwgMTI4LCA3MSwgNzksIDgyLCA4NCwgNzIsIDc3LCA3MywgCisgICAgNzUsIDc5LCAyMDYsIDcxLCA3OSwgODIsIDg0LCAxMjgsIDcxLCA3OSwgODIsIDczLCA3NiwgNzYsIDY1LCAxMjgsIDcxLCAKKyAgICA3OSwgODIsIDcxLCA3OSwgODQsIDY5LCA4MiwgNzMsIDEyOCwgNzEsIDc5LCA4MiwgNzEsIDc5LCA4MywgODksIDc4LCA4NCwgCisgICAgNzIsIDY5LCA4NCwgNzksIDc4LCAxMjgsIDcxLCA3OSwgODIsIDcxLCA3OSwgMjA2LCA3MSwgNzksIDgyLCA3MSwgNzMsIAorICAgIDEyOCwgNzEsIDc5LCA4MiwgNjUsIDEyOCwgNzEsIDc5LCA3OSwgMTk2LCA3MSwgNzksIDc4LCA3MSwgMTI4LCA3MSwgNzksIAorICAgIDc2LCA3MCwgNjksIDgyLCAxMjgsIDcxLCA3OSwgNzYsIDY4LCAxMjgsIDcxLCA3OSwgNzUsIDEyOCwgNzEsIDc5LCA3MywgCisgICAgNzgsIDE5OSwgNzEsIDc5LCA2NiwgNzYsIDczLCA3OCwgMTI4LCA3MSwgNzksIDY1LCA3NiwgMTI4LCA3MSwgNzksIDY1LCAKKyAgICAyMDQsIDcxLCA3OSwgNjUsIDEyOCwgNzEsIDc4LCA4OSwgNzMsIDgzLCAxMjgsIDcxLCA3OCwgNjUsIDg2LCA3MywgODksIAorICAgIDY1LCA3OCwgNzMsIDEyOCwgNzEsIDc2LCA3OSwgODcsIDczLCA3OCwgMTk5LCA3MSwgNzYsIDc5LCA4NiwgNjksIDEyOCwgCisgICAgNzEsIDc2LCA3OSwgODQsIDg0LCA2NSwgMjA0LCA3MSwgNzYsIDc5LCA2NiwgMTk3LCA3MSwgNzYsIDczLCA4MywgODMsIDY1LCAKKyAgICA3OCwgNjgsIDIwNywgNzEsIDc2LCA2OSwgNzMsIDY3LCAyMDAsIDcxLCA3NiwgNjUsIDcxLCA3OSwgNzYsIDczLCAxMjgsIAorICAgIDcxLCA3NiwgNjUsIDEyOCwgNzEsIDc0LCA2OSwgMTI4LCA3MSwgNzMsIDg4LCAxMjgsIDcxLCA3MywgODQsIDEyOCwgNzEsIAorICAgIDczLCA4MywgNzIsIDEyOCwgNzEsIDczLCA4MywgMjAwLCA3MSwgNzMsIDgzLCA2NSwgNzYsIDEyOCwgNzEsIDczLCA4MiwgCisgICAgODUsIDY4LCA2NSwgNjUsIDEyOCwgNzEsIDczLCA4MiwgNzYsIDIxMSwgNzEsIDczLCA4MiwgNzYsIDEyOCwgNzEsIDczLCAKKyAgICA4MiwgNTEsIDEyOCwgNzEsIDczLCA4MiwgMTc5LCA3MSwgNzMsIDgyLCA1MCwgMTI4LCA3MSwgNzMsIDgyLCAxNzgsIDcxLCAKKyAgICA3MywgODAsIDEyOCwgNzEsIDczLCA3OCwgNzMsIDczLCAxMjgsIDcxLCA3MywgNzcsIDY5LCA3NiwgMTI4LCA3MSwgNzMsIAorICAgIDc3LCA2OSwgMjA0LCA3MSwgNzMsIDc3LCAxMjgsIDcxLCA3MywgNzEsIDY1LCAxMjgsIDcxLCA3MywgNzEsIDEyOCwgNzEsIAorICAgIDczLCA2OSwgODQsIDEyOCwgNzEsIDczLCA2OCwgNzMsIDc3LCAxMjgsIDcxLCA3MywgNjYsIDY2LCA3OSwgODUsIDIxMSwgCisgICAgNzEsIDczLCA2NiwgNjUsIDEyOCwgNzEsIDczLCA1MiwgMTI4LCA3MSwgNzMsIDE4MCwgNzEsIDcyLCA5MCwgMTI4LCA3MSwgCisgICAgNzIsIDg3LCA2NSwgMTI4LCA3MSwgNzIsIDg1LCA3OCwgNzgsIDY1LCAxMjgsIDcxLCA3MiwgODUsIDc4LCA3OCwgMTkzLCAKKyAgICA3MSwgNzIsIDg1LCAxMjgsIDcxLCA3MiwgNzksIDg1LCAxMjgsIDcxLCA3MiwgNzksIDgzLCA4NCwgMTI4LCA3MSwgNzIsIAorICAgIDc5LCAxMjgsIDcxLCA3MiwgNzMsIDc3LCA2OSwgNzYsIDEyOCwgNzEsIDcyLCA3MywgMTI4LCA3MSwgNzIsIDcyLCA2NSwgCisgICAgMTI4LCA3MSwgNzIsIDY5LCA4OSwgODMsIDEyOCwgNzEsIDcyLCA2OSwgODUsIDg4LCAxMjgsIDcxLCA3MiwgNjksIDg1LCAKKyAgICA3OCwgMTI4LCA3MSwgNzIsIDY5LCA4NSwgNzEsIDcyLCA2OSwgODUsIDY1LCA2OSwgNzcsIDEyOCwgNzEsIDcyLCA2OSwgODUsIAorICAgIDcxLCA3MiwgNjksIDc4LCAxMjgsIDcxLCA3MiwgNjksIDg1LCA2NSwgNjksIDgyLCA2NSwgNjksIDEyOCwgNzEsIDcyLCA2OSwgCisgICAgODUsIDY1LCA2OSwgNzEsIDcyLCA2OSwgODUsIDY1LCA2OSwgMTI4LCA3MSwgNzIsIDY5LCA4NCwgMTI4LCA3MSwgNzIsIDY5LCAKKyAgICA2OSwgMTI4LCA3MSwgNzIsIDY5LCAxMjgsIDcxLCA3MiwgMTk3LCA3MSwgNzIsIDY1LCA4OSwgNzgsIDEyOCwgNzEsIDcyLCAKKyAgICA2NSwgODIsIDY1LCA2OSwgMTI4LCA3MSwgNzIsIDY1LCA4MCwgMTI4LCA3MSwgNzIsIDY1LCA3OCwgMTI4LCA3MSwgNzIsIAorICAgIDY1LCA3NywgNzcsIDY1LCAxMjgsIDcxLCA3MiwgNjUsIDc3LCA2NSwgNzYsIDEyOCwgNzEsIDcyLCA2NSwgNzMsIDc4LCA4NSwgCisgICAgMTI4LCA3MSwgNzIsIDY1LCA3MywgNzgsIDEyOCwgNzEsIDcyLCA2NSwgNzMsIDIwNiwgNzEsIDcyLCA2NSwgNjgsIDEyOCwgCisgICAgNzEsIDcyLCA2NSwgNjUsIDc3LCA2NSwgNjksIDEyOCwgNzEsIDcyLCA2NSwgNjUsIDEyOCwgNzEsIDcxLCA4NywgNzMsIAorICAgIDEyOCwgNzEsIDcxLCA4NywgNjksIDY5LCAxMjgsIDcxLCA3MSwgODcsIDY5LCAxMjgsIDcxLCA3MSwgODcsIDY1LCA2NSwgCisgICAgMTI4LCA3MSwgNzEsIDg3LCA2NSwgMTI4LCA3MSwgNzEsIDg1LCA4OCwgMTI4LCA3MSwgNzEsIDg1LCA4NCwgMTI4LCA3MSwgCisgICAgNzEsIDg1LCA4MiwgODgsIDEyOCwgNzEsIDcxLCA4NSwgODIsIDEyOCwgNzEsIDcxLCA4NSwgNzksIDg4LCAxMjgsIDcxLCAKKyAgICA3MSwgODUsIDc5LCA4NCwgMTI4LCA3MSwgNzEsIDg1LCA3OSwgODAsIDEyOCwgNzEsIDcxLCA4NSwgNzksIDEyOCwgNzEsIAorICAgIDcxLCA3OSwgODgsIDEyOCwgNzEsIDcxLCA3OSwgODQsIDEyOCwgNzEsIDcxLCA3OSwgODAsIDEyOCwgNzEsIDcxLCA3MywgCisgICAgODgsIDEyOCwgNzEsIDcxLCA3MywgODQsIDEyOCwgNzEsIDcxLCA3MywgNjksIDg4LCAxMjgsIDcxLCA3MSwgNzMsIDY5LCAKKyAgICA4MCwgMTI4LCA3MSwgNzEsIDczLCA2OSwgMTI4LCA3MSwgNzEsIDY5LCA4OCwgMTI4LCA3MSwgNzEsIDY5LCA4NCwgMTI4LCAKKyAgICA3MSwgNzEsIDY5LCA4MCwgMTI4LCA3MSwgNzEsIDY1LCA4OCwgMTI4LCA3MSwgNzEsIDY1LCA4NCwgMTI4LCA3MSwgNjksIAorICAgIDg0LCAxOTMsIDcxLCA2OSwgODMsIDg0LCA4NSwgODIsIDY5LCAxMjgsIDcxLCA2OSwgODMsIDcyLCA4NSwgMTI4LCA3MSwgCisgICAgNjksIDgzLCA3MiwgODQsIDczLCA3OCwgMTI4LCA3MSwgNjksIDgzLCA3MiwgODQsIDczLCAyMDYsIDcxLCA2OSwgODMsIDcyLCAKKyAgICA1MCwgMTI4LCA3MSwgNjksIDgyLCA4MywgNzIsIDY1LCA4OSwgNzMsIDc3LCAxMjgsIDcxLCA2OSwgODIsIDc3LCA2NSwgCisgICAgMjA2LCA3MSwgNjksIDgyLCA2OSwgODMsIDcyLCAxMjgsIDcxLCA2OSwgODIsIDY5LCA4MywgMjAwLCA3MSwgNjksIDc5LCAKKyAgICA3NywgNjksIDg0LCA4MiwgNzMsIDY3LCA2NSwgNzYsIDc2LCAyMTcsIDcxLCA2OSwgNzksIDc3LCA2OSwgODQsIDgyLCA3MywgCisgICAgMTk1LCA3MSwgNjksIDc4LCA4NCwgNzYsIDE5NywgNzEsIDY5LCA3OCwgNzMsIDg0LCA3MywgODYsIDY5LCAxMjgsIDcxLCAKKyAgICA2OSwgNzgsIDczLCA3NSwgMjAxLCA3MSwgNjksIDc4LCA2OSwgODIsIDczLCAxOTUsIDcxLCA2OSwgNzcsIDczLCA3OCwgNzMsIAorICAgIDEyOCwgNzEsIDY5LCA3NywgNzMsIDc4LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MSwgNjksIDc3LCA3MywgNzgsIDY1LCA4NCwgCisgICAgMTk3LCA3MSwgNjksIDIwNSwgNzEsIDY5LCA2OSwgNzcsIDEyOCwgNzEsIDY5LCA2OCwgNzksIDc2LCA2NSwgMTI4LCA3MSwgCisgICAgNjksIDY4LCA2OSwgMTI4LCA3MSwgNjksIDY2LCAyMDcsIDcxLCA2OSwgNjYsIDE5MywgNzEsIDY5LCA2NSwgODIsIDEyOCwgCisgICAgNzEsIDY5LCA2NSwgMjEwLCA3MSwgNjksIDUwLCA1MCwgMTI4LCA3MSwgNjgsIDY1LCA3OCwgMTI4LCA3MSwgNjcsIDczLCAKKyAgICA3MSwgMTI4LCA3MSwgNjcsIDY1LCAyMDYsIDcxLCA2NiwgNzksIDc4LCAxMjgsIDcxLCA2NiwgNzMsIDY5LCAxOTcsIDcxLCAKKyAgICA2NiwgNjksIDg1LCA4OCwgMTI4LCA3MSwgNjYsIDY5LCA4NCwgMTI4LCA3MSwgNjYsIDY1LCA4OSwgNzMsIDEyOCwgNzEsIAorICAgIDY2LCA2NSwgNzUsIDg1LCA4MiwgODUsIDc4LCA2OSwgNzgsIDEyOCwgNzEsIDY2LCAxMjgsIDcxLCA2NSwgODksIDY1LCA3OCwgCisgICAgODUsIDc1LCA3MywgODQsIDg0LCA2NSwgMTI4LCA3MSwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MSwgNjUsIDg5LCAKKyAgICAxMjgsIDcxLCA2NSwgODUsIDc4LCA4NCwgNzYsIDY5LCA4NCwgMTI4LCA3MSwgNjUsIDg0LCA3MiwgNjksIDgyLCA3MywgNzgsIAorICAgIDcxLCAxMjgsIDcxLCA2NSwgODQsIDcyLCA2OSwgODIsIDczLCA3OCwgMTk5LCA3MSwgNjUsIDg0LCA2OSwgMTI4LCA3MSwgCisgICAgNjUsIDgzLCA3MiwgNjUsIDc4LCAxMjgsIDcxLCA2NSwgODIsIDgzLCA3MiwgODUsIDc4LCA3MywgMTI4LCA3MSwgNjUsIDgyLCAKKyAgICA3OSwgNzgsIDEyOCwgNzEsIDY1LCA4MiwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNzEsIDY1LCA4MiwgNjgsIDY5LCA3OCwgCisgICAgMTI4LCA3MSwgNjUsIDgyLCA1MSwgMTI4LCA3MSwgNjUsIDgwLCA4MCwgNjksIDE5NiwgNzEsIDY1LCAyMDgsIDcxLCA2NSwgCisgICAgNzgsIDc3LCA2NSwgMTI4LCA3MSwgNjUsIDc4LCA3MSwgNzMsIDY1LCAxMjgsIDcxLCA2NSwgNzgsIDY4LCAxOTMsIDcxLCAKKyAgICA2NSwgNzgsIDUwLCAxMjgsIDcxLCA2NSwgNzgsIDE3OCwgNzEsIDY1LCA3NywgNzcsIDY1LCAxMjgsIDcxLCA2NSwgNzcsIAorICAgIDc2LCA2NSwgMTI4LCA3MSwgNjUsIDc3LCA3NiwgMTI4LCA3MSwgNjUsIDc3LCA2OSwgMTI4LCA3MSwgNjUsIDc3LCAxOTcsIAorICAgIDcxLCA2NSwgNzcsIDY1LCA3OCwgMTI4LCA3MSwgNjUsIDc3LCA2NSwgNzYsIDEyOCwgNzEsIDY1LCA3NywgNjUsIDIwNCwgCisgICAgNzEsIDY1LCA3MSwgMTI4LCA3MSwgNjUsIDcwLCAxMjgsIDcxLCA2NSwgMTk4LCA3MSwgNjUsIDY5LCA4NCwgODQsIDY1LCAKKyAgICA0NSwgODAsIDczLCA3NiwgNzYsIDY1LCAxMjgsIDcxLCA2NSwgNjgsIDc5LCA3NiwgMTI4LCA3MSwgNjUsIDY4LCAxMjgsIAorICAgIDcxLCA2NSwgMTk2LCA3MSwgNjUsIDY2LCA2NSwgMTI4LCA3MSwgNjUsIDY2LCAxOTMsIDcxLCA2NSwgNjUsIDcwLCA4NSwgCisgICAgMTI4LCA3MSwgNjUsIDE3OCwgNzEsIDQ4LCA1MywgNTIsIDEyOCwgNzEsIDQ4LCA1MywgNTEsIDEyOCwgNzEsIDQ4LCA1MywgCisgICAgNTAsIDEyOCwgNzEsIDQ4LCA1MywgNDksIDEyOCwgNzEsIDQ4LCA1MywgNDgsIDEyOCwgNzEsIDQ4LCA1MiwgNTcsIDEyOCwgCisgICAgNzEsIDQ4LCA1MiwgNTYsIDEyOCwgNzEsIDQ4LCA1MiwgNTUsIDEyOCwgNzEsIDQ4LCA1MiwgNTQsIDEyOCwgNzEsIDQ4LCAKKyAgICA1MiwgNTMsIDY1LCAxMjgsIDcxLCA0OCwgNTIsIDUzLCAxMjgsIDcxLCA0OCwgNTIsIDUyLCAxMjgsIDcxLCA0OCwgNTIsIAorICAgIDUxLCA2NSwgMTI4LCA3MSwgNDgsIDUyLCA1MSwgMTI4LCA3MSwgNDgsIDUyLCA1MCwgMTI4LCA3MSwgNDgsIDUyLCA0OSwgCisgICAgMTI4LCA3MSwgNDgsIDUyLCA0OCwgMTI4LCA3MSwgNDgsIDUxLCA1NywgMTI4LCA3MSwgNDgsIDUxLCA1NiwgMTI4LCA3MSwgCisgICAgNDgsIDUxLCA1NSwgNjUsIDEyOCwgNzEsIDQ4LCA1MSwgNTUsIDEyOCwgNzEsIDQ4LCA1MSwgNTQsIDY1LCAxMjgsIDcxLCAKKyAgICA0OCwgNTEsIDU0LCAxMjgsIDcxLCA0OCwgNTEsIDUzLCAxMjgsIDcxLCA0OCwgNTEsIDUyLCAxMjgsIDcxLCA0OCwgNTEsIAorICAgIDUxLCAxMjgsIDcxLCA0OCwgNTEsIDUwLCAxMjgsIDcxLCA0OCwgNTEsIDQ5LCAxMjgsIDcxLCA0OCwgNTEsIDQ4LCAxMjgsIAorICAgIDcxLCA0OCwgNTAsIDU3LCAxMjgsIDcxLCA0OCwgNTAsIDU2LCAxMjgsIDcxLCA0OCwgNTAsIDU1LCAxMjgsIDcxLCA0OCwgCisgICAgNTAsIDU0LCA2NSwgMTI4LCA3MSwgNDgsIDUwLCA1NCwgMTI4LCA3MSwgNDgsIDUwLCA1MywgMTI4LCA3MSwgNDgsIDUwLCAKKyAgICA1MiwgMTI4LCA3MSwgNDgsIDUwLCA1MSwgMTI4LCA3MSwgNDgsIDUwLCA1MCwgMTI4LCA3MSwgNDgsIDUwLCA0OSwgMTI4LCAKKyAgICA3MSwgNDgsIDUwLCA0OCwgNjUsIDEyOCwgNzEsIDQ4LCA1MCwgNDgsIDEyOCwgNzEsIDQ4LCA0OSwgNTcsIDEyOCwgNzEsIAorICAgIDQ4LCA0OSwgNTYsIDEyOCwgNzEsIDQ4LCA0OSwgNTUsIDEyOCwgNzEsIDQ4LCA0OSwgNTQsIDEyOCwgNzEsIDQ4LCA0OSwgCisgICAgNTMsIDEyOCwgNzEsIDQ4LCA0OSwgNTIsIDEyOCwgNzEsIDQ4LCA0OSwgNTEsIDEyOCwgNzEsIDQ4LCA0OSwgNTAsIDEyOCwgCisgICAgNzEsIDQ4LCA0OSwgNDksIDY1LCAxMjgsIDcxLCA0OCwgNDksIDQ5LCAxMjgsIDcxLCA0OCwgNDksIDQ4LCAxMjgsIDcxLCAKKyAgICA0OCwgNDgsIDU3LCAxMjgsIDcxLCA0OCwgNDgsIDU2LCAxMjgsIDcxLCA0OCwgNDgsIDU1LCA2NiwgMTI4LCA3MSwgNDgsIAorICAgIDQ4LCA1NSwgNjUsIDEyOCwgNzEsIDQ4LCA0OCwgNTUsIDEyOCwgNzEsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDcxLCA0OCwgCisgICAgNDgsIDU0LCAxMjgsIDcxLCA0OCwgNDgsIDUzLCAxMjgsIDcxLCA0OCwgNDgsIDUyLCAxMjgsIDcxLCA0OCwgNDgsIDUxLCAKKyAgICAxMjgsIDcxLCA0OCwgNDgsIDUwLCAxMjgsIDcxLCA0OCwgNDgsIDQ5LCAxMjgsIDcwLCA4OSwgODgsIDEyOCwgNzAsIDg5LCAKKyAgICA4NCwgMTI4LCA3MCwgODksIDgwLCAxMjgsIDcwLCA4OSwgNjUsIDEyOCwgNzAsIDg3LCA3MywgMTI4LCA3MCwgODcsIDY5LCAKKyAgICA2OSwgMTI4LCA3MCwgODcsIDY5LCAxMjgsIDcwLCA4NywgNjUsIDY1LCAxMjgsIDcwLCA4NywgNjUsIDEyOCwgNzAsIDg2LCAKKyAgICA4MywgNTEsIDEyOCwgNzAsIDg2LCA4MywgNTAsIDEyOCwgNzAsIDg2LCA4MywgNDksIDEyOCwgNzAsIDg1LCA4OCwgMTI4LCAKKyAgICA3MCwgODUsIDg0LCAxMjgsIDcwLCA4NSwgODMsIDY5LCAxMjgsIDcwLCA4NSwgODMsIDE5MywgNzAsIDg1LCA4MiwgODgsIAorICAgIDEyOCwgNzAsIDg1LCA4MCwgMTI4LCA3MCwgODUsIDc4LCA2OSwgODIsIDY1LCAyMDQsIDcwLCA4NSwgNzgsIDY3LCA4NCwgCisgICAgNzMsIDc5LCA3OCwgNjUsIDIwNCwgNzAsIDg1LCA3OCwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDcwLCA4NSwgNzYsIDc2LCAKKyAgICA3OCwgNjksIDgzLCA4MywgMTI4LCA3MCwgODUsIDc2LCAyMDQsIDcwLCA4NSwgNzQsIDczLCAxMjgsIDcwLCA4NSwgNjksIAorICAgIDg0LCAxMjgsIDcwLCA4NSwgNjksIDIwNCwgNzAsIDg1LCA2OSwgMTI4LCA3MCwgODUsIDY1LCAxMjgsIDcwLCA4NCwgNzIsIAorICAgIDc5LCA4MiwgMTkzLCA3MCwgODMsIDczLCAxMjgsIDcwLCA4MiwgNzksIDg3LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA3MCwgCisgICAgODIsIDc5LCA4NywgNzgsIDczLCA3OCwgMTk5LCA3MCwgODIsIDc5LCA4NywgNzgsIDEyOCwgNzAsIDgyLCA3OSwgODcsIAorICAgIDIwNiwgNzAsIDgyLCA3OSwgNzgsIDg0LCA0NSwgODQsIDczLCA3NiwgODQsIDY5LCAxOTYsIDcwLCA4MiwgNzksIDc4LCA4NCwgCisgICAgNDUsIDcwLCA2NSwgNjcsIDczLCA3OCwgMTk5LCA3MCwgODIsIDc5LCA3OCwgMjEyLCA3MCwgODIsIDc5LCAyMDUsIDcwLCAKKyAgICA4MiwgNzksIDcxLCAxMjgsIDcwLCA4MiwgNzksIDE5OSwgNzAsIDgyLCA3MywgODQsIDg1LCAxMjgsIDcwLCA4MiwgNzMsIAorICAgIDY5LCA4MywgMTI4LCA3MCwgODIsIDczLCA2OSwgMTk2LCA3MCwgODIsIDczLCA2NywgNjUsIDg0LCA3MywgODYsIDY5LCAKKyAgICAxMjgsIDcwLCA4MiwgNjksIDg0LCA2NiwgNzksIDY1LCA4MiwgNjgsIDEyOCwgNzAsIDgyLCA2OSwgNzgsIDY3LCAyMDAsIAorICAgIDcwLCA4MiwgNjksIDY5LCAxMjgsIDcwLCA4MiwgNjksIDE5NywgNzAsIDgyLCA2NSwgNzgsIDc1LCAyMTEsIDcwLCA4MiwgCisgICAgNjUsIDc4LCAxOTUsIDcwLCA4MiwgNjUsIDc3LCA2OSwgODMsIDEyOCwgNzAsIDgyLCA2NSwgNzcsIDY5LCAxMjgsIDcwLCAKKyAgICA4MiwgNjUsIDc3LCAxOTcsIDcwLCA4MiwgNjUsIDcxLCA4MiwgNjUsIDc4LCA4NCwgMTI4LCA3MCwgODIsIDY1LCA3MSwgNzcsIAorICAgIDY5LCA3OCwgODQsIDEyOCwgNzAsIDgyLCA2NSwgNjcsIDg0LCA3MywgNzksIDIwNiwgNzAsIDc5LCA4OCwgMTI4LCA3MCwgCisgICAgNzksIDIxNiwgNzAsIDc5LCA4NSwgODIsIDg0LCA2OSwgNjksIDc4LCAxMjgsIDcwLCA3OSwgODUsIDgyLCA4NCwgNjksIDY5LCAKKyAgICAyMDYsIDcwLCA3OSwgODUsIDgyLCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA3MCwgNzksIDg1LCA4MiwgNDUsIAorICAgIDgzLCA4NCwgODIsIDczLCA3OCwgMTk5LCA3MCwgNzksIDg1LCA4MiwgNDUsIDgwLCA2OSwgODIsIDQ1LCA2OSwgMjA1LCA3MCwgCisgICAgNzksIDg1LCA4MiwgNDUsIDc2LCA3MywgNzgsIDE5NywgNzAsIDc5LCA4NSwgMjEwLCA3MCwgNzksIDg1LCA3OCwgODQsIDY1LCAKKyAgICA3MywgNzgsIDEyOCwgNzAsIDc5LCA4NSwgNzgsIDg0LCA2NSwgNzMsIDIwNiwgNzAsIDc5LCA4MywgODQsIDY5LCA4MiwgNzMsIAorICAgIDc4LCA3MSwgMTI4LCA3MCwgNzksIDgyLCA4NywgNjUsIDgyLCA2OCwgMTI4LCA3MCwgNzksIDgyLCA4NywgNjUsIDgyLCAKKyAgICAxOTYsIDcwLCA3OSwgODIsIDg0LCA4OSwgMTI4LCA3MCwgNzksIDgyLCA4NCwgMjE3LCA3MCwgNzksIDgyLCA4NCwgNzMsIAorICAgIDY5LCA4NCwgNzIsIDEyOCwgNzAsIDc5LCA4MiwgODQsIDY5LCAxMjgsIDcwLCA3OSwgODIsIDc3LCAyMTEsIDcwLCA3OSwgCisgICAgODIsIDc3LCA2NSwgODQsIDg0LCA3MywgNzgsIDcxLCAxMjgsIDcwLCA3OSwgODIsIDc3LCA2NSwgMjEyLCA3MCwgNzksIDgyLCAKKyAgICA3NSwgNjksIDE5NiwgNzAsIDc5LCA4MiwgNjksIDcyLCA2OSwgNjUsIDE5NiwgNzAsIDc5LCA4MiwgNjcsIDY5LCA4MywgCisgICAgMTI4LCA3MCwgNzksIDgyLCA2NywgNjksIDEyOCwgNzAsIDc5LCA4MCwgMTI4LCA3MCwgNzksIDc5LCA4NCwgODMsIDg0LCAKKyAgICA3OSwgNzksIDc2LCAxMjgsIDcwLCA3OSwgNzksIDg0LCA4MCwgODIsIDczLCA3OCwgODQsIDgzLCAxMjgsIDcwLCA3OSwgNzksIAorICAgIDg0LCA3OCwgNzksIDg0LCAxOTcsIDcwLCA3OSwgNzksIDg0LCA2NiwgNjUsIDc2LCA3NiwgMTI4LCA3MCwgNzksIDc5LCA4NCwgCisgICAgMTI4LCA3MCwgNzksIDc5LCA3NiwgMTI4LCA3MCwgNzksIDc5LCA2OCwgMTI4LCA3MCwgNzksIDc5LCAxMjgsIDcwLCA3OSwgCisgICAgNzgsIDIxMiwgNzAsIDc5LCA3OCwgNzEsIDc3LCA2NSwgNzgsIDEyOCwgNzAsIDc5LCA3NywgMTI4LCA3MCwgNzksIDc2LCAKKyAgICA3NiwgODksIDEyOCwgNzAsIDc5LCA3NiwgNzYsIDc5LCA4NywgNzMsIDc4LCA3MSwgMTI4LCA3MCwgNzksIDc2LCA2OCwgNjksIAorICAgIDgyLCAxMjgsIDcwLCA3OSwgNzYsIDY4LCA2OSwgMTk2LCA3MCwgNzksIDcxLCA3MSwgODksIDEyOCwgNzAsIDc5LCA3MSwgCisgICAgMTI4LCA3MCwgMjA3LCA3MCwgNzcsIDEyOCwgNzAsIDc2LCA4OSwgNzMsIDc4LCAxOTksIDcwLCA3NiwgODksIDEyOCwgNzAsIAorICAgIDc2LCA4NSwgODQsIDg0LCA2OSwgODIsIDczLCA3OCwgNzEsIDEyOCwgNzAsIDc2LCA4NSwgODQsIDg0LCA2OSwgODIsIDczLCAKKyAgICA3OCwgMTk5LCA3MCwgNzYsIDg1LCA4NCwgNjksIDEyOCwgNzAsIDc2LCA4NSwgODMsIDcyLCA2OSwgMTk2LCA3MCwgNzYsIAorICAgIDc5LCA4NywgNzMsIDc4LCAxOTksIDcwLCA3NiwgNzksIDg3LCA2OSwgODIsIDgzLCAxMjgsIDcwLCA3NiwgNzksIDg3LCA2OSwgCisgICAgMjEwLCA3MCwgNzYsIDc5LCA4NSwgODIsIDczLCA4MywgNzIsIDEyOCwgNzAsIDc2LCA3OSwgODIsIDY5LCA4NCwgODQsIDY5LCAKKyAgICAxMjgsIDcwLCA3NiwgNzksIDgyLCA2NSwgMjA0LCA3MCwgNzYsIDc5LCA4MCwgODAsIDIxNywgNzAsIDc2LCA3OSwgNzksIAorICAgIDgyLCAxMjgsIDcwLCA3NiwgNzksIDc5LCAyMTAsIDcwLCA3NiwgNzMsIDgwLCAxMjgsIDcwLCA3NiwgNzMsIDcxLCA3MiwgCisgICAgODQsIDEyOCwgNzAsIDc2LCA3MywgNjcsIDIwMywgNzAsIDc2LCA2OSwgODgsIDg1LCA4MywgMTI4LCA3MCwgNzYsIDY5LCAKKyAgICA4OCwgNjksIDE5NiwgNzAsIDc2LCA2OSwgODgsIDEyOCwgNzAsIDc2LCA2OSwgODUsIDgyLCA3OSwgNzgsIDEyOCwgNzAsIAorICAgIDc2LCA2OSwgODUsIDgyLCA0NSwgNjgsIDY5LCA0NSwgNzYsIDczLCA4MywgMTI4LCA3MCwgNzYsIDY1LCA4NCwgODQsIDY5LCAKKyAgICA3OCwgNjksIDE5NiwgNzAsIDc2LCA2NSwgODQsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDcwLCA3NiwgNjUsIDg0LCA2NiwgODIsIAorICAgIDY5LCA2NSwgNjgsIDEyOCwgNzAsIDc2LCA2NSwgODMsIDcyLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCA4MywgMTI4LCA3MCwgCisgICAgNzYsIDY1LCA3MSwgNDUsIDUzLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCA0NSwgNTIsIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDQ1LCAKKyAgICA1MSwgMTI4LCA3MCwgNzYsIDY1LCA3MSwgNDUsIDUwLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCA0NSwgNDksIDEyOCwgNzAsIAorICAgIDc2LCA2NSwgNzEsIDEyOCwgNzAsIDc2LCA2NSwgMTk5LCA3MCwgNzYsIDY1LCAxMjgsIDcwLCA3NiwgMTI4LCA3MCwgNzMsIAorICAgIDg4LCA2OSwgNjgsIDQ1LCA3MCwgNzksIDgyLCAyMDUsIDcwLCA3MywgODgsIDEyOCwgNzAsIDczLCA4NiwgNjksIDQ1LCA4NCwgCisgICAgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDcwLCA3MywgODYsIDY5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA3MCwgNzMsIDg2LCAKKyAgICAxOTcsIDcwLCA3MywgODQsIDkwLCA4MCwgNjUsIDg0LCA4MiwgNzMsIDY3LCAyMDMsIDcwLCA3MywgODQsIDY1LCAxMjgsIAorICAgIDcwLCA3MywgODQsIDEyOCwgNzAsIDczLCA4MywgODQsIDY5LCAxOTYsIDcwLCA3MywgODMsIDcyLCA3MywgNzgsIDE5OSwgCisgICAgNzAsIDczLCA4MywgNzIsIDcyLCA3OSwgNzksIDc1LCAxMjgsIDcwLCA3MywgODMsIDcyLCA3MiwgNzksIDc5LCAyMDMsIDcwLCAKKyAgICA3MywgODMsIDcyLCA2OSwgODksIDY5LCAxMjgsIDcwLCA3MywgODMsIDcyLCAxMjgsIDcwLCA3MywgODMsIDIwMCwgNzAsIAorICAgIDczLCA4MiwgODMsIDIxMiwgNzAsIDczLCA4MiwgNzMsIDEyOCwgNzAsIDczLCA4MiwgNjksIDg3LCA3OSwgODIsIDc1LCA4MywgCisgICAgMTI4LCA3MCwgNzMsIDgyLCA2OSwgODcsIDc5LCA4MiwgMjAzLCA3MCwgNzMsIDgyLCA2OSwgMTI4LCA3MCwgNzMsIDgyLCAKKyAgICAxOTcsIDcwLCA3MywgODAsIDEyOCwgNzAsIDczLCA3OCwgNzMsIDg0LCAxOTcsIDcwLCA3MywgNzgsIDcxLCA2OSwgODIsIAorICAgIDgzLCAxMjgsIDcwLCA3MywgNzgsIDcxLCA2OSwgODIsIDIxMSwgNzAsIDczLCA3OCwgNzEsIDY5LCA4MiwgNzgsIDY1LCA3MywgCisgICAgNzYsIDgzLCAxMjgsIDcwLCA3MywgNzgsIDcxLCA2OSwgODIsIDY5LCAxOTYsIDcwLCA3MywgNzgsIDcxLCA2OSwgODIsIDQ1LCAKKyAgICA4MCwgNzksIDgzLCAyMTIsIDcwLCA3MywgNzgsIDcxLCA2OSwgODIsIDEyOCwgNzAsIDczLCA3OCwgNzEsIDY5LCAyMTAsIAorICAgIDcwLCA3MywgNzgsIDY1LCA3OCwgNjcsIDczLCA2NSwgNzYsIDEyOCwgNzAsIDczLCA3OCwgNjUsIDc2LCAxMjgsIDcwLCA3MywgCisgICAgNzYsIDIwNSwgNzAsIDczLCA3NiwgNzYsIDY5LCA4MiwgNDUsIDUwLCAxMjgsIDcwLCA3MywgNzYsIDc2LCA2OSwgODIsIDQ1LCAKKyAgICA0OSwgMTI4LCA3MCwgNzMsIDc2LCA3NiwgNjksIDgyLCAxMjgsIDcwLCA3MywgNzYsIDc2LCA2OSwgMTk2LCA3MCwgNzMsIAorICAgIDc2LCA3NiwgMTI4LCA3MCwgNzMsIDc2LCAyMDQsIDcwLCA3MywgNzYsIDE5NywgNzAsIDczLCA3MywgMTI4LCA3MCwgNzMsIAorICAgIDcxLCA4NSwgODIsIDY5LCA0NSwgNTEsIDEyOCwgNzAsIDczLCA3MSwgODUsIDgyLCA2OSwgNDUsIDUwLCAxMjgsIDcwLCA3MywgCisgICAgNzEsIDg1LCA4MiwgNjksIDQ1LCA0OSwgMTI4LCA3MCwgNzMsIDcxLCA4NSwgODIsIDE5NywgNzAsIDczLCA3MSwgNzIsIDg0LCAKKyAgICAxMjgsIDcwLCA3MywgNzAsIDg0LCA4OSwgMTI4LCA3MCwgNzMsIDcwLCA4NCwgMjE3LCA3MCwgNzMsIDcwLCA4NCwgNzIsIAorICAgIDgzLCAxMjgsIDcwLCA3MywgNzAsIDg0LCA3MiwgMTI4LCA3MCwgNzMsIDcwLCA4NCwgNjksIDY5LCA3OCwgMTI4LCA3MCwgCisgICAgNzMsIDcwLCA4NCwgNjksIDY5LCAyMDYsIDcwLCA3MywgNjksIDc2LCA2OCwgMTI4LCA3MCwgNzMsIDY5LCA3NiwgMTk2LCAKKyAgICA3MCwgNzIsIDg0LCA3OSwgODIsIDE5MywgNzAsIDcwLCA3NiwgMTI4LCA3MCwgNzAsIDczLCAxMjgsIDcwLCA2OSwgODUsIAorICAgIDg4LCAxMjgsIDcwLCA2OSwgODUsIDcwLCA2OSwgODUsIDY1LCA2OSwgODQsIDEyOCwgNzAsIDY5LCA4MywgODQsIDczLCA4NiwgCisgICAgNjUsIDc2LCAxMjgsIDcwLCA2OSwgODIsIDgyLCA4OSwgMTI4LCA3MCwgNjksIDgyLCA4MiwgNzMsIDIxMSwgNzAsIDY5LCAKKyAgICA4MiwgNzcsIDY1LCA4NCwgNjUsIDEyOCwgNzAsIDY5LCA4MiwgNzcsIDY1LCA4NCwgMTkzLCA3MCwgNjksIDc5LCAyMDAsIAorICAgIDcwLCA2OSwgNzgsIDE5OSwgNzAsIDY5LCA3OCwgNjcsIDY5LCA4MiwgMTI4LCA3MCwgNjksIDc4LCA2NywgNjksIDEyOCwgCisgICAgNzAsIDY5LCA3NywgNzMsIDc4LCA3MywgNzgsIDE5NywgNzAsIDY5LCA3NywgNjUsIDc2LCA2OSwgMTI4LCA3MCwgNjksIDc3LCAKKyAgICA2NSwgNzYsIDE5NywgNzAsIDY5LCA3NiwgNzYsIDc5LCA4NywgODMsIDcyLCA3MywgODAsIDEyOCwgNzAsIDY5LCA3MywgCisgICAgMTI4LCA3MCwgNjksIDcyLCAyMTMsIDcwLCA2OSwgNzIsIDEyOCwgNzAsIDY5LCAyMDAsIDcwLCA2OSwgNjksIDc4LCA3MSwgCisgICAgMTI4LCA3MCwgNjksIDY5LCA3NywgMTI4LCA3MCwgNjksIDY5LCA2OCwgMTI4LCA3MCwgNjksIDY5LCAxOTYsIDcwLCA2OSwgCisgICAgNjksIDEyOCwgNzAsIDY5LCA2NiwgODIsIDg1LCA2NSwgODIsIDg5LCAxMjgsIDcwLCA2OSwgNjUsIDg0LCA3MiwgNjksIDgyLCAKKyAgICAxMjgsIDcwLCA2OSwgNjUsIDg0LCA3MiwgNjksIDIxMCwgNzAsIDY5LCA2NSwgODIsIDc4LCAxMjgsIDcwLCA2OSwgNjUsIAorICAgIDgyLCA3MCwgODUsIDIwNCwgNzAsIDY5LCA2NSwgODIsIDEyOCwgNzAsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgCisgICAgNzAsIDY1LCA4OSwgMTI4LCA3MCwgNjUsIDg4LCAxMjgsIDcwLCA2NSwgMjE2LCA3MCwgNjUsIDg0LCA3MywgNzEsIDg1LCAKKyAgICA2OSwgMTI4LCA3MCwgNjUsIDg0LCA3MiwgNjksIDgyLCAxMjgsIDcwLCA2NSwgODQsIDcyLCA2OSwgMjEwLCA3MCwgNjUsIAorICAgIDg0LCA3MiwgNjUsIDg0LCA2NSwgNzgsIDEyOCwgNzAsIDY1LCA4NCwgNzIsIDY1LCA4NCwgNjUsIDIwNiwgNzAsIDY1LCA4NCwgCisgICAgNzIsIDY1LCAxMjgsIDcwLCA2NSwgODQsIDcyLCAxOTMsIDcwLCA2NSwgODQsIDEyOCwgNzAsIDY1LCA4MywgODQsIDEyOCwgCisgICAgNzAsIDY1LCA4MiwgODMsIDIwMSwgNzAsIDY1LCA4MiwgMTI4LCA3MCwgNjUsIDgxLCAxMjgsIDcwLCA2NSwgODAsIDEyOCwgCisgICAgNzAsIDY1LCA3OCwgNzEsIDEyOCwgNzAsIDY1LCA3OCwgNjksIDgyLCA3OSwgODMsIDczLCAyMTEsIDcwLCA2NSwgNzgsIAorICAgIDEyOCwgNzAsIDY1LCA3NywgNzMsIDc2LCA4OSwgMTI4LCA3MCwgNjUsIDc3LCAxMjgsIDcwLCA2NSwgNzYsIDc2LCA2OSwgCisgICAgMjA2LCA3MCwgNjUsIDc0LCAxMjgsIDcwLCA2NSwgNzMsIDc2LCA4NSwgODIsIDY5LCAxMjgsIDcwLCA2NSwgNzMsIDcyLCAKKyAgICA4NSwgMTI4LCA3MCwgNjUsIDczLCA2NiwgMTI4LCA3MCwgNjUsIDcyLCA4MiwgNjksIDc4LCA3MiwgNjksIDczLCA4NCwgCisgICAgMTI4LCA3MCwgNjUsIDY3LCA4NCwgNzksIDgyLCA4OSwgMTI4LCA3MCwgNjUsIDY3LCA4NCwgNzksIDIxMCwgNzAsIDY1LCAKKyAgICA2NywgODMsIDczLCA3NywgNzMsIDc2LCAxOTcsIDcwLCA2NSwgNjcsIDczLCA3OCwgNzEsIDgzLCAxMjgsIDcwLCA2NSwgNjcsIAorICAgIDY5LCA0NSwgNTQsIDEyOCwgNzAsIDY1LCA2NywgNjksIDQ1LCA1MywgMTI4LCA3MCwgNjUsIDY3LCA2OSwgNDUsIDUyLCAKKyAgICAxMjgsIDcwLCA2NSwgNjcsIDY5LCA0NSwgNTEsIDEyOCwgNzAsIDY1LCA2NywgNjksIDQ1LCA1MCwgMTI4LCA3MCwgNjUsIAorICAgIDY3LCA2OSwgNDUsIDQ5LCAxMjgsIDcwLCA2NSwgNjUsIDc3LCA2NSwgNjksIDEyOCwgNzAsIDY1LCA2NSwgNzMsIDEyOCwgCisgICAgNzAsIDY1LCA2NSwgNzAsIDg1LCAxMjgsIDcwLCA0OCwgNTMsIDUxLCAxMjgsIDcwLCA0OCwgNTMsIDUwLCAxMjgsIDcwLCAKKyAgICA0OCwgNTMsIDQ5LCA2NywgMTI4LCA3MCwgNDgsIDUzLCA0OSwgNjYsIDEyOCwgNzAsIDQ4LCA1MywgNDksIDY1LCAxMjgsIAorICAgIDcwLCA0OCwgNTMsIDQ5LCAxMjgsIDcwLCA0OCwgNTMsIDQ4LCAxMjgsIDcwLCA0OCwgNTIsIDU3LCAxMjgsIDcwLCA0OCwgCisgICAgNTIsIDU2LCAxMjgsIDcwLCA0OCwgNTIsIDU1LCA2NSwgMTI4LCA3MCwgNDgsIDUyLCA1NSwgMTI4LCA3MCwgNDgsIDUyLCAKKyAgICA1NCwgNjUsIDEyOCwgNzAsIDQ4LCA1MiwgNTQsIDEyOCwgNzAsIDQ4LCA1MiwgNTMsIDY1LCAxMjgsIDcwLCA0OCwgNTIsIAorICAgIDUzLCAxMjgsIDcwLCA0OCwgNTIsIDUyLCAxMjgsIDcwLCA0OCwgNTIsIDUxLCAxMjgsIDcwLCA0OCwgNTIsIDUwLCAxMjgsIAorICAgIDcwLCA0OCwgNTIsIDQ5LCAxMjgsIDcwLCA0OCwgNTIsIDQ4LCAxMjgsIDcwLCA0OCwgNTEsIDU3LCAxMjgsIDcwLCA0OCwgCisgICAgNTEsIDU2LCA2NSwgMTI4LCA3MCwgNDgsIDUxLCA1NiwgMTI4LCA3MCwgNDgsIDUxLCA1NSwgNjUsIDEyOCwgNzAsIDQ4LCAKKyAgICA1MSwgNTUsIDEyOCwgNzAsIDQ4LCA1MSwgNTQsIDEyOCwgNzAsIDQ4LCA1MSwgNTMsIDEyOCwgNzAsIDQ4LCA1MSwgNTIsIAorICAgIDEyOCwgNzAsIDQ4LCA1MSwgNTEsIDEyOCwgNzAsIDQ4LCA1MSwgNTAsIDEyOCwgNzAsIDQ4LCA1MSwgNDksIDY1LCAxMjgsIAorICAgIDcwLCA0OCwgNTEsIDQ5LCAxMjgsIDcwLCA0OCwgNTEsIDQ4LCAxMjgsIDcwLCA0OCwgNTAsIDU3LCAxMjgsIDcwLCA0OCwgCisgICAgNTAsIDU2LCAxMjgsIDcwLCA0OCwgNTAsIDU1LCAxMjgsIDcwLCA0OCwgNTAsIDU0LCAxMjgsIDcwLCA0OCwgNTAsIDUzLCAKKyAgICAxMjgsIDcwLCA0OCwgNTAsIDUyLCAxMjgsIDcwLCA0OCwgNTAsIDUxLCAxMjgsIDcwLCA0OCwgNTAsIDUwLCAxMjgsIDcwLCAKKyAgICA0OCwgNTAsIDQ5LCA2NSwgMTI4LCA3MCwgNDgsIDUwLCA0OSwgMTI4LCA3MCwgNDgsIDUwLCA0OCwgMTI4LCA3MCwgNDgsIAorICAgIDQ5LCA1NywgMTI4LCA3MCwgNDgsIDQ5LCA1NiwgMTI4LCA3MCwgNDgsIDQ5LCA1NSwgMTI4LCA3MCwgNDgsIDQ5LCA1NCwgCisgICAgMTI4LCA3MCwgNDgsIDQ5LCA1MywgMTI4LCA3MCwgNDgsIDQ5LCA1MiwgMTI4LCA3MCwgNDgsIDQ5LCA1MSwgNjUsIDEyOCwgCisgICAgNzAsIDQ4LCA0OSwgNTEsIDEyOCwgNzAsIDQ4LCA0OSwgNTAsIDEyOCwgNzAsIDQ4LCA0OSwgNDksIDEyOCwgNzAsIDQ4LCAKKyAgICA0OSwgNDgsIDEyOCwgNzAsIDQ4LCA0OCwgNTcsIDEyOCwgNzAsIDQ4LCA0OCwgNTYsIDEyOCwgNzAsIDQ4LCA0OCwgNTUsIAorICAgIDEyOCwgNzAsIDQ4LCA0OCwgNTQsIDEyOCwgNzAsIDQ4LCA0OCwgNTMsIDEyOCwgNzAsIDQ4LCA0OCwgNTIsIDEyOCwgNzAsIAorICAgIDQ4LCA0OCwgNTEsIDEyOCwgNzAsIDQ4LCA0OCwgNTAsIDEyOCwgNzAsIDQ4LCA0OCwgNDksIDY1LCAxMjgsIDcwLCA0OCwgCisgICAgNDgsIDQ5LCAxMjgsIDY5LCA5MCwgODMsIDEyOCwgNjksIDkwLCAyMDAsIDY5LCA5MCwgNjksIDc4LCAxMjgsIDY5LCA5MCwgCisgICAgNjksIDIwNiwgNjksIDkwLCAxMjgsIDY5LCA4OSwgODksIDg5LCAxMjgsIDY5LCA4OSwgNjksIDgzLCAxMjgsIDY5LCA4OSwgCisgICAgNjksIDIxMSwgNjksIDg5LCA2OSwgNzYsIDY1LCA4MywgNzIsIDY5LCAyMTEsIDY5LCA4OSwgNjksIDcxLCA3NiwgNjUsIDgzLCAKKyAgICA4MywgNjksIDgzLCAxMjgsIDY5LCA4OSwgNjksIDcxLCA2NSwgOTAsIDY5LCA0NSwgODcsIDY1LCA3NiwgNzYsIDgwLCA3NiwgCisgICAgNjUsIDc4LCAxOTcsIDY5LCA4OSwgNjksIDcxLCA2NSwgOTAsIDY5LCA0NSwgNzAsIDc2LCA3OSwgNzksIDgyLCA4MCwgNzYsIAorICAgIDY1LCA3OCwgMTk3LCA2OSwgODksIDY5LCA2NiwgODIsIDc5LCA4NywgMjExLCA2OSwgODksIDE5NywgNjksIDg5LCA2NiwgCisgICAgNjksIDg5LCA3MCwgNzMsIDc2LCA3MywgMTI4LCA2OSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY5LCA4OCwgODQsIDgyLCAKKyAgICA2OSwgNzcsIDY5LCA3NiwgMjE3LCA2OSwgODgsIDg0LCA4MiwgNjUsIDg0LCA2OSwgODIsIDgyLCA2OSwgODMsIDg0LCA4MiwgCisgICAgNzMsIDY1LCAyMDQsIDY5LCA4OCwgODQsIDgyLCA2NSwgNDUsIDc2LCA3OSwgMjE1LCA2OSwgODgsIDg0LCA4MiwgNjUsIDQ1LCAKKyAgICA3MiwgNzMsIDcxLCAyMDAsIDY5LCA4OCwgODQsIDgyLCAxOTMsIDY5LCA4OCwgODQsIDY5LCA3OCwgODMsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgNjksIDg4LCA4NCwgNjksIDc4LCA2OCwgNjksIDY4LCAxMjgsIDY5LCA4OCwgODQsIDY5LCA3OCwgNjgsIDY5LCAKKyAgICAxOTYsIDY5LCA4OCwgODAsIDgyLCA2OSwgODMsIDgzLCA3MywgNzksIDc4LCA3NiwgNjksIDgzLCAyMTEsIDY5LCA4OCwgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCAyMTIsIDY5LCA4OCwgNzksIDEyOCwgNjksIDg4LCAyMDcsIDY5LCA4OCwgNzMsIDgzLCA4NCwgCisgICAgODMsIDEyOCwgNjksIDg4LCA3MywgODMsIDg0LCAxMjgsIDY5LCA4OCwgNzIsIDY1LCA4NSwgODMsIDg0LCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDY5LCA4OCwgNzIsIDY1LCA3NiwgNjksIDEyOCwgNjksIDg4LCA2NywgNzYsIDY1LCA3NywgNjUsIDg0LCA3MywgNzksIAorICAgIDc4LCAxMjgsIDY5LCA4OCwgNjcsIDc2LCA2NSwgNzcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY5LCA4OCwgNjcsIDczLCA4NCwgCisgICAgNjksIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY5LCA4OCwgNjcsIDcyLCA2NSwgNzgsIDcxLCA2OSwgMTI4LCA2OSwgODgsIDY3LCAKKyAgICA2OSwgODMsIDgzLCAxMjgsIDY5LCA4OCwgNjcsIDY5LCA3NiwgNzYsIDY5LCA3OCwgODQsIDEyOCwgNjksIDg3LCA2OSwgCisgICAgMTI4LCA2OSwgODYsIDY5LCA4MiwgMjE3LCA2OSwgODYsIDY5LCA4MiwgNzEsIDgyLCA2OSwgNjksIDIwNiwgNjksIDg2LCAKKyAgICA2OSwgNzgsIDczLCA3OCwgNzEsIDEyOCwgNjksIDg1LCA4MiwgNzksIDgwLCA2OSwgNjUsIDIwNiwgNjksIDg1LCA4MiwgNzksIAorICAgIDgwLCA2OSwgNDUsIDY1LCA3MCwgODIsIDczLCA2NywgNjUsIDEyOCwgNjksIDg1LCA4MiwgNzksIDQ1LCA2NywgODUsIDgyLCAKKyAgICA4MiwgNjksIDc4LCA2NywgMjE3LCA2OSwgODUsIDgyLCAyMDcsIDY5LCA4NSwgNzYsIDY5LCAyMTAsIDY5LCA4NSwgNDUsIAorICAgIDg1LCAxMjgsIDY5LCA4NSwgNDUsIDc5LCAxMjgsIDY5LCA4NSwgNDUsIDY5LCA4NSwgMTI4LCA2OSwgODUsIDQ1LCA2OSwgCisgICAgNzksIDEyOCwgNjksIDg1LCA0NSwgNjksIDEyOCwgNjksIDg1LCA0NSwgNjUsIDEyOCwgNjksIDg0LCA4OCwgMTI4LCA2OSwgCisgICAgODQsIDc4LCA2NSwgNzIsIDg0LCA2NSwgMTI4LCA2OSwgODQsIDcyLCA2OSwgMjA0LCA2OSwgODQsIDY5LCA4MiwgNzksIAorICAgIDIwNiwgNjksIDg0LCA2OSwgODIsIDc4LCA3MywgODQsIDg5LCAxMjgsIDY5LCA4NCwgNjksIDgyLCA3OCwgNzMsIDg0LCAKKyAgICAyMTcsIDY5LCA4NCwgNjYsIDEyOCwgNjksIDgzLCA5MCwgMTI4LCA2OSwgODMsIDg1LCA3NSwgODUsIDg1LCA2OCwgNzksIAorICAgIDEyOCwgNjksIDgzLCA4NCwgNzMsIDc3LCA2NSwgODQsIDY5LCA4MywgMTI4LCA2OSwgODMsIDg0LCA3MywgNzcsIDY1LCA4NCwgCisgICAgNjksIDE5NiwgNjksIDgzLCA3MiwgNjksIDUxLCAxMjgsIDY5LCA4MywgNzIsIDUwLCA0OSwgMTI4LCA2OSwgODMsIDcyLCAKKyAgICA0OSwgNTQsIDEyOCwgNjksIDgzLCA2NywgNjUsIDgwLCA2OSwgMTI4LCA2OSwgODMsIDY3LCAxMjgsIDY5LCA4MywgNjUsIAorICAgIDEyOCwgNjksIDgzLCA0NSwgODQsIDY5LCAxMjgsIDY5LCA4MywgNDUsIDUxLCAxMjgsIDY5LCA4MywgNDUsIDUwLCAxMjgsIAorICAgIDY5LCA4MywgNDUsIDQ5LCAxMjgsIDY5LCA4MiwgODIsIDc5LCA4MiwgNDUsIDY2LCA2NSwgODIsIDgyLCA2OSwgMTk2LCA2OSwgCisgICAgODIsIDgyLCAxMjgsIDY5LCA4MiwgNzMsIDc4LCA1MCwgMTI4LCA2OSwgODIsIDczLCA3OCwgMTc4LCA2OSwgODIsIDcxLCAKKyAgICAxMjgsIDY5LCA4MiwgNjUsIDgzLCAxOTcsIDY5LCA4MSwgODUsIDczLCA4NiwgNjUsIDc2LCA2OSwgNzgsIDIxMiwgNjksIAorICAgIDgxLCA4NSwgNzMsIDc2LCA2NSwgODQsIDY5LCA4MiwgNjUsIDIwNCwgNjksIDgxLCA4NSwgNzMsIDY4LCAxMjgsIDY5LCA4MSwgCisgICAgODUsIDczLCA2NSwgNzgsIDcxLCA4NSwgNzYsIDY1LCAyMTAsIDY5LCA4MSwgODUsIDY1LCA3NiwgODMsIDEyOCwgNjksIDgxLCAKKyAgICA4NSwgNjUsIDc2LCAyMTEsIDY5LCA4MSwgODUsIDY1LCA3NiwgMTI4LCA2OSwgODAsIDgzLCA3MywgNzYsIDc5LCA3OCwgCisgICAgMTI4LCA2OSwgODAsIDgzLCA3MywgNzYsIDc5LCAyMDYsIDY5LCA4MCwgNzksIDY3LCA3MiwgMTI4LCA2OSwgODAsIDczLCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDczLCAxOTUsIDY5LCA4MCwgNzMsIDY4LCA2NSwgODUsIDgyLCA2OSwgNjUsIDIwNiwgNjksIAorICAgIDgwLCA2OSwgNzgsIDg0LCA3MiwgNjksIDg0LCA3MywgMTk1LCA2OSwgODAsIDY5LCA3MSwgNjksIDgyLCA3NywgNjUsIDEyOCwgCisgICAgNjksIDgwLCA2NSwgNjcsIDIxMiwgNjksIDc5LCA4NCwgMTI4LCA2OSwgNzksIDc3LCAxMjgsIDY5LCA3OSwgNzYsIDcyLCAKKyAgICA4OCwgMTI4LCA2OSwgNzksIDc2LCAxMjgsIDY5LCA3OSwgNzIsIDEyOCwgNjksIDc4LCA4OSwgMTI4LCA2OSwgNzgsIDg2LCAKKyAgICA2OSwgNzYsIDc5LCA4MCwgNjksIDEyOCwgNjksIDc4LCA4NiwgNjksIDc2LCA3OSwgODAsIDE5NywgNjksIDc4LCA4NSwgNzcsIAorICAgIDY5LCA4MiwgNjUsIDg0LCA3MywgNzksIDIwNiwgNjksIDc4LCA4NCwgODIsIDg5LCA0NSwgNTAsIDEyOCwgNjksIDc4LCA4NCwgCisgICAgODIsIDg5LCA0NSwgNDksIDEyOCwgNjksIDc4LCA4NCwgODIsIDg5LCAxMjgsIDY5LCA3OCwgODQsIDgyLCAyMTcsIDY5LCAKKyAgICA3OCwgODQsIDcyLCA4NSwgODMsIDczLCA2NSwgODMsIDc3LCAxMjgsIDY5LCA3OCwgODQsIDY5LCA4MiwgODAsIDgyLCA3MywgCisgICAgODMsIDY5LCAxMjgsIDY5LCA3OCwgODQsIDY5LCA4MiwgNzMsIDc4LCAxOTksIDY5LCA3OCwgODQsIDY5LCA4MiwgMTI4LCAKKyAgICA2OSwgNzgsIDg0LCA2OSwgMjEwLCA2OSwgNzgsIDg0LCA0NSwgODMsIDcyLCA2NSwgODAsIDY5LCAxOTYsIDY5LCA3OCwgODEsIAorICAgIDg1LCA3MywgODIsIDg5LCAxMjgsIDY5LCA3OCwgODEsIDEyOCwgNjksIDc4LCA3OSwgMjExLCA2OSwgNzgsIDc4LCA3MywgCisgICAgMTI4LCA2OSwgNzgsIDc4LCAxMjgsIDY5LCA3OCwgNzYsIDY1LCA4MiwgNzEsIDY5LCA3NywgNjksIDc4LCA4NCwgMTI4LCAKKyAgICA2OSwgNzgsIDcxLCA3MywgNzgsIDY5LCAxMjgsIDY5LCA3OCwgNjgsIDc5LCA3MCwgNzksIDc4LCA3OSwgNzgsIDEyOCwgNjksIAorICAgIDc4LCA2OCwgNzMsIDc4LCAxOTksIDY5LCA3OCwgNjgsIDY5LCA4MCwgMTI4LCA2OSwgNzgsIDY4LCA2OSwgNjUsIDg2LCA3OSwgCisgICAgODUsIDgyLCAxMjgsIDY5LCA3OCwgNjcsIDc5LCA4NSwgNzgsIDg0LCA2OSwgODIsIDgzLCAxMjgsIDY5LCA3OCwgNjcsIDc2LCAKKyAgICA3OSwgODMsIDg1LCA4MiwgNjksIDgzLCAxMjgsIDY5LCA3OCwgNjcsIDc2LCA3OSwgODMsIDg1LCA4MiwgNjksIDEyOCwgNjksIAorICAgIDc4LCA2NywgNzYsIDc5LCA4MywgNzMsIDc4LCAxOTksIDY5LCA3OCwgNjcsIDEyOCwgNjksIDc4LCA2NSwgODIsIDg4LCA3MywgCisgICAgMjExLCA2OSwgNzgsIDY1LCA4MiwgNzcsIDc5LCA3OCwgNzMsIDc5LCAyMTEsIDY5LCA3NywgODAsIDg0LCAyMTcsIDY5LCAKKyAgICA3NywgODAsIDcyLCA2NSwgODQsIDczLCAxOTUsIDY5LCA3NywgODAsIDcyLCA2NSwgODMsIDczLCAyMTEsIDY5LCA3NywgNzksIAorICAgIDc0LCAyMDEsIDY5LCA3NywgNjYsIDgyLCA3OSwgNzMsIDY4LCA2OSwgODIsIDg5LCAxMjgsIDY5LCA3NywgNjYsIDc2LCA2OSwgCisgICAgNzcsIDEyOCwgNjksIDc3LCA2NiwgNjksIDc2LCA3NiwgNzMsIDgzLCA3MiwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNjksIDc3LCAKKyAgICA2NiwgNjksIDY4LCA2OCwgNzMsIDc4LCA3MSwgMTI4LCA2OSwgNzYsIDg5LCAxMjgsIDY5LCA3NiwgODQsIDEyOCwgNjksIAorICAgIDc2LCA3NiwgNzMsIDgwLCA4NCwgNzMsIDE5NSwgNjksIDc2LCA3NiwgNzMsIDgwLCA4MywgNzMsIDgzLCAxMjgsIDY5LCA3NiwgCisgICAgNzYsIDczLCA4MCwgODMsIDY5LCAxMjgsIDY5LCA3NiwgNzMsIDcwLCA3MywgMTI4LCA2OSwgNzYsIDY5LCA4NiwgNjksIDc4LCAKKyAgICA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA2OSwgNzYsIDY5LCA4NiwgNjksIDc4LCAxMjgsIDY5LCA3NiwgNjksIAorICAgIDg2LCA2OSwgMjA2LCA2OSwgNzYsIDY5LCA4MCwgNzIsIDY1LCA3OCwgODQsIDEyOCwgNjksIDc2LCA2OSwgNzcsIDY5LCA3OCwgCisgICAgMjEyLCA2OSwgNzYsIDY5LCA2NywgODQsIDgyLCA3MywgNjcsIDY1LCAyMDQsIDY5LCA3NiwgNjksIDY3LCA4NCwgODIsIDczLCAKKyAgICAxOTUsIDY5LCA3NiwgNjYsIDY1LCA4MywgNjUsIDIwNiwgNjksIDc2LCA2NSwgNzcsIDczLCA4NCwgNjksIDEyOCwgNjksIAorICAgIDc2LCA2NSwgNzcsIDczLCA4NCwgMTk3LCA2OSwgNzYsIDY1LCA3MCwgODIsIDc5LCA3OCwgMTI4LCA2OSwgNzUsIDgzLCA4NCwgCisgICAgODIsIDY5LCA4MCwgODQsIDc5LCA3OCwgMTI4LCA2OSwgNzUsIDgzLCAxMjgsIDY5LCA3NSwgNzAsIDc5LCA3OCwgNzMsIDg0LCAKKyAgICA3MywgNzUsIDc5LCA3OCwgMTI4LCA2OSwgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNjksIDc1LCA2NSwgNzcsIDEyOCwgNjksIAorICAgIDc0LCA2OSwgNjcsIDIxMiwgNjksIDczLCA4MywgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIDg5LCAxMjgsIDY5LCA3MywgCisgICAgNzEsIDcyLCA4NCwgMjE3LCA2OSwgNzMsIDcxLCA3MiwgODQsIDczLCA2OSwgODQsIDcyLCA4MywgMTI4LCA2OSwgNzMsIDcxLCAKKyAgICA3MiwgODQsIDcyLCA4MywgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIDcyLCAyMTEsIDY5LCA3MywgNzEsIDcyLCA4NCwgNzIsIAorICAgIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCA2OSwgNjksIDc4LCAxMjgsIDY5LCA3MywgNzEsIDcyLCA4NCwgNjksIDY5LCAKKyAgICAyMDYsIDY5LCA3MywgNzEsIDcyLCA4NCwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgNjksIDczLCA2OSwgCisgICAgMTI4LCA2OSwgNzIsIDg3LCA2NSwgMjE4LCA2OSwgNzIsIDg0LCA4MywgNjUsIDEyOCwgNjksIDcyLCA4NCwgNjUsIDEyOCwgCisgICAgNjksIDcyLCA4MCwgNjUsIDEyOCwgNjksIDcyLCA3NSwgNjUsIDEyOCwgNjksIDcyLCA2NywgNzIsIDY1LCAxMjgsIDY5LCAKKyAgICA3MSwgODksIDgwLCA4NCwgNzksIDc2LCA3OSwgNzEsIDczLCA2NywgNjUsIDIwNCwgNjksIDcxLCA4OSwgMTI4LCA2OSwgNzEsIAorICAgIDczLCA4MiwgMTI4LCA2OSwgNzEsIDcxLCAxMjgsIDY5LCA2OSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY5LCA2OSwgCisgICAgNzUsIDY1LCA2NSwgMTI4LCA2OSwgNjksIDcyLCAxMjgsIDY5LCA2OSwgNjYsIDY5LCA2OSwgNzAsIDczLCA3NiwgNzMsIAorICAgIDEyOCwgNjksIDY4LCA3MywgODQsIDc5LCA4MiwgNzMsIDY1LCAyMDQsIDY5LCA2OCwgNzMsIDc4LCAxMjgsIDY5LCA2OCwgCisgICAgNjgsIDEyOCwgNjksIDY3LCA4MywgMTI4LCA2OSwgNjYsIDY5LCA3MCwgNzMsIDc2LCA3MywgMTI4LCA2OSwgNjUsIDgzLCAKKyAgICA4NCwgNjksIDgyLCAyMDYsIDY5LCA2NSwgODMsIDg0LCAxMjgsIDY5LCA2NSwgODMsIDIxMiwgNjksIDY1LCA4MiwgODQsIAorICAgIDcyLCA3NiwgMjE3LCA2OSwgNjUsIDgyLCA4NCwgNzIsIDEyOCwgNjksIDY1LCA4MiwgODQsIDIwMCwgNjksIDY1LCA4MiwgCisgICAgODMsIDEyOCwgNjksIDY1LCA4MiwgNzYsIDIxNywgNjksIDY1LCA3NywgNzIsIDY1LCA3OCwgNjcsIDcyLCA3OSwgNzYsIDc2LCAKKyAgICAxMjgsIDY5LCA2NSwgNzEsIDc2LCA2OSwgMTI4LCA2OSwgNjUsIDY4LCA3MiwgNjUsIDY4LCA3MiwgMTI4LCA2OSwgNjUsIAorICAgIDY2LCA3MiwgNjUsIDY4LCA3MiwgMTI4LCA2OSwgMTc4LCA2OSwgNDgsIDUxLCA1NiwgMTI4LCA2OSwgNDgsIDUxLCA1NSwgCisgICAgMTI4LCA2OSwgNDgsIDUxLCA1NCwgMTI4LCA2OSwgNDgsIDUxLCA1MiwgNjUsIDEyOCwgNjksIDQ4LCA1MSwgNTIsIDEyOCwgCisgICAgNjksIDQ4LCA1MSwgNTEsIDEyOCwgNjksIDQ4LCA1MSwgNTAsIDEyOCwgNjksIDQ4LCA1MSwgNDksIDEyOCwgNjksIDQ4LCAKKyAgICA1MSwgNDgsIDEyOCwgNjksIDQ4LCA1MCwgNTcsIDEyOCwgNjksIDQ4LCA1MCwgNTYsIDY1LCAxMjgsIDY5LCA0OCwgNTAsIAorICAgIDU2LCAxMjgsIDY5LCA0OCwgNTAsIDU1LCAxMjgsIDY5LCA0OCwgNTAsIDU0LCAxMjgsIDY5LCA0OCwgNTAsIDUzLCAxMjgsIAorICAgIDY5LCA0OCwgNTAsIDUyLCAxMjgsIDY5LCA0OCwgNTAsIDUxLCAxMjgsIDY5LCA0OCwgNTAsIDUwLCAxMjgsIDY5LCA0OCwgCisgICAgNTAsIDQ5LCAxMjgsIDY5LCA0OCwgNTAsIDQ4LCA2NSwgMTI4LCA2OSwgNDgsIDUwLCA0OCwgMTI4LCA2OSwgNDgsIDQ5LCAKKyAgICA1NywgMTI4LCA2OSwgNDgsIDQ5LCA1NiwgMTI4LCA2OSwgNDgsIDQ5LCA1NSwgNjUsIDEyOCwgNjksIDQ4LCA0OSwgNTUsIAorICAgIDEyOCwgNjksIDQ4LCA0OSwgNTQsIDY1LCAxMjgsIDY5LCA0OCwgNDksIDU0LCAxMjgsIDY5LCA0OCwgNDksIDUzLCAxMjgsIAorICAgIDY5LCA0OCwgNDksIDUyLCAxMjgsIDY5LCA0OCwgNDksIDUxLCAxMjgsIDY5LCA0OCwgNDksIDUwLCAxMjgsIDY5LCA0OCwgCisgICAgNDksIDQ5LCAxMjgsIDY5LCA0OCwgNDksIDQ4LCAxMjgsIDY5LCA0OCwgNDgsIDU3LCA2NSwgMTI4LCA2OSwgNDgsIDQ4LCAKKyAgICA1NywgMTI4LCA2OSwgNDgsIDQ4LCA1NiwgNjUsIDEyOCwgNjksIDQ4LCA0OCwgNTYsIDEyOCwgNjksIDQ4LCA0OCwgNTUsIAorICAgIDEyOCwgNjksIDQ4LCA0OCwgNTQsIDEyOCwgNjksIDQ4LCA0OCwgNTMsIDEyOCwgNjksIDQ4LCA0OCwgNTIsIDEyOCwgNjksIAorICAgIDQ4LCA0OCwgNTEsIDEyOCwgNjksIDQ4LCA0OCwgNTAsIDEyOCwgNjksIDQ4LCA0OCwgNDksIDEyOCwgNjksIDQ1LCA3NywgCisgICAgNjUsIDczLCAyMDQsIDY4LCA5MCwgOTAsIDcyLCA2OSwgMTI4LCA2OCwgOTAsIDkwLCA2OSwgMTI4LCA2OCwgOTAsIDkwLCAKKyAgICA2NSwgMTI4LCA2OCwgOTAsIDg5LCA2NSwgODksIDEyOCwgNjgsIDkwLCA4NywgNjksIDEyOCwgNjgsIDkwLCA4NSwgMTI4LCAKKyAgICA2OCwgOTAsIDc5LCAxMjgsIDY4LCA5MCwgNzQsIDY5LCAxMjgsIDY4LCA5MCwgNzMsIDg0LCA2NSwgMTI4LCA2OCwgOTAsIAorICAgIDczLCAxMjgsIDY4LCA5MCwgNzIsIDc5LCA3MywgMTI4LCA2OCwgOTAsIDcyLCA2OSwgMTI4LCA2OCwgOTAsIDcyLCA2NSwgCisgICAgMTI4LCA2OCwgOTAsIDY5LCA3NiwgNzksIDEyOCwgNjgsIDkwLCA2OSwgNjksIDEyOCwgNjgsIDkwLCA2OSwgMTI4LCA2OCwgCisgICAgOTAsIDY1LCA4OSwgMTI4LCA2OCwgOTAsIDY1LCA2NSwgMTI4LCA2OCwgOTAsIDY1LCAxMjgsIDY4LCA5MCwgMTI4LCA2OCwgCisgICAgMjE4LCA2OCwgODksIDc5LCAxMjgsIDY4LCA4OSwgMjA3LCA2OCwgODksIDc4LCA2NSwgNzcsIDczLCAxOTUsIDY4LCA4OSwgCisgICAgNjksIDcyLCAxMjgsIDY4LCA4OSwgNjksIDIwMCwgNjgsIDg5LCA2NSwgNzgsIDEyOCwgNjgsIDg3LCA3OSwgMTI4LCA2OCwgCisgICAgODcsIDY5LCAxMjgsIDY4LCA4NywgNjUsIDEyOCwgNjgsIDg2LCA3MywgODMsIDg2LCA2NSwgODIsIDY1LCAxMjgsIDY4LCAKKyAgICA4NiwgNjgsIDEyOCwgNjgsIDg2LCAxMjgsIDY4LCA4NSwgODQsIDczLCA2OSwgODMsIDEyOCwgNjgsIDg1LCA4MywgNzUsIAorICAgIDEyOCwgNjgsIDg1LCA4MywgNzIsIDY5LCA3OCwgNzgsIDY1LCAxMjgsIDY4LCA4NSwgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgCisgICAgMTI4LCA2OCwgODUsIDgyLCA1MCwgMTI4LCA2OCwgODUsIDgwLCA3OSwgNzgsIDY4LCA3MywgODUsIDIxMSwgNjgsIDg1LCAKKyAgICA3OSwgODgsIDEyOCwgNjgsIDg1LCA3OSwgMTI4LCA2OCwgODUsIDc4LCA1MiwgMTI4LCA2OCwgODUsIDc4LCA1MSwgMTI4LCAKKyAgICA2OCwgODUsIDc4LCAxNzksIDY4LCA4NSwgNzcsIDEyOCwgNjgsIDg1LCAyMDQsIDY4LCA4NSwgNzIsIDEyOCwgNjgsIDg1LCAKKyAgICA3MSwgODUsIDY4LCAxMjgsIDY4LCA4NSwgMTk5LCA2OCwgODUsIDY3LCA3NSwgMTI4LCA2OCwgODUsIDY2LCA1MCwgMTI4LCAKKyAgICA2OCwgODUsIDY2LCAxMjgsIDY4LCA4NSwgMTk0LCA2OCwgODIsIDg5LCAxMjgsIDY4LCA4MiwgMjE3LCA2OCwgODIsIDg1LCAKKyAgICA3NywgODMsIDg0LCA3MywgNjcsIDc1LCA4MywgMTI4LCA2OCwgODIsIDg1LCA3NywgMTI4LCA2OCwgODIsIDg1LCAyMDUsIAorICAgIDY4LCA4MiwgNzksIDgwLCA4MywgMTI4LCA2OCwgODIsIDc5LCA4MCwgNzYsIDY5LCA4NCwgMTI4LCA2OCwgODIsIDc5LCA4MCwgCisgICAgNDUsIDgzLCA3MiwgNjUsIDY4LCA3OSwgODcsIDY5LCAxOTYsIDY4LCA4MiwgNzksIDc5LCA3NiwgNzMsIDc4LCAxOTksIDY4LCAKKyAgICA4MiwgNzksIDc3LCA2OSwgNjgsIDY1LCA4MiwgMjE3LCA2OCwgODIsIDczLCA4NiwgNjksIDEyOCwgNjgsIDgyLCA3MywgODYsIAorICAgIDE5NywgNjgsIDgyLCA3MywgNzgsIDc1LCAxMjgsIDY4LCA4MiwgNzMsIDIwNCwgNjgsIDgyLCA2OSwgODMsIDgzLCAxMjgsIAorICAgIDY4LCA4MiwgNjksIDY1LCA3NywgMjE3LCA2OCwgODIsIDY1LCA4NSwgNzEsIDcyLCA4NCwgMjExLCA2OCwgODIsIDY1LCA3NywgCisgICAgMTI4LCA2OCwgODIsIDY1LCAyMDUsIDY4LCA4MiwgNjUsIDcxLCA3OSwgNzgsIDEyOCwgNjgsIDgyLCA2NSwgNzEsIDc5LCAKKyAgICAyMDYsIDY4LCA4MiwgNjUsIDcwLCA4NCwgNzMsIDc4LCAxOTksIDY4LCA4MiwgNjUsIDY3LCA3MiwgNzcsIDY1LCA4MywgCisgICAgMTI4LCA2OCwgODIsIDY1LCA2NywgNzIsIDc3LCA2NSwgMTI4LCA2OCwgODIsIDY1LCA2NywgNzIsIDc3LCAxOTMsIDY4LCAKKyAgICA3OSwgODcsIDc4LCA4NywgNjUsIDgyLCA2OCwgODMsIDEyOCwgNjgsIDc5LCA4NywgNzgsIDQ1LCA4MCwgNzksIDczLCA3OCwgCisgICAgODQsIDczLCA3OCwgMTk5LCA2OCwgNzksIDg3LCA3OCwgMTI4LCA2OCwgNzksIDg2LCA2OSwgMTI4LCA2OCwgNzksIDg2LCAKKyAgICAxOTcsIDY4LCA3OSwgODUsIDcxLCA3MiwgNzgsIDg1LCA4NCwgMTI4LCA2OCwgNzksIDg1LCA2NiwgODQsIDEyOCwgNjgsIAorICAgIDc5LCA4NSwgNjYsIDc2LCA2OSwgMTk2LCA2OCwgNzksIDg1LCA2NiwgNzYsIDY5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA2OCwgCisgICAgNzksIDg1LCA2NiwgNzYsIDY5LCA0NSwgNjksIDc4LCA2OCwgNjksIDE5NiwgNjgsIDc5LCA4NSwgNjYsIDc2LCA2OSwgMTI4LCAKKyAgICA2OCwgNzksIDg0LCA4NCwgNjksIDY4LCA0NSwgODAsIDEyOCwgNjgsIDc5LCA4NCwgODQsIDY5LCA2OCwgNDUsIDc4LCAxMjgsIAorICAgIDY4LCA3OSwgODQsIDg0LCA2OSwgNjgsIDQ1LCA3NiwgMTI4LCA2OCwgNzksIDg0LCA4NCwgNjksIDY4LCAxMjgsIDY4LCA3OSwgCisgICAgODQsIDg0LCA2OSwgMTk2LCA2OCwgNzksIDg0LCA4MywgNDUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTUsIDU2LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NCwgNTYsIDEyOCwgNjgsIAorICAgIDc5LCA4NCwgODMsIDQ1LCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTQsIDU1LCAxMjgsIDY4LCA3OSwgCisgICAgODQsIDgzLCA0NSwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKKyAgICA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIAorICAgIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCisgICAgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDU1LCA1NiwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NCwgNTYsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NCwgCisgICAgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDU2LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIAorICAgIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgCisgICAgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCAKKyAgICA4MywgNDUsIDUyLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAorICAgIDQ1LCA1MiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NSwgCisgICAgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTQsIDU2LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTQsIAorICAgIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCA1NiwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCAKKyAgICA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIAorICAgIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgCisgICAgODMsIDQ1LCA1MSwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCAKKyAgICA0NSwgNTEsIDUyLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIAorICAgIDgzLCA0NSwgNTEsIDUyLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTQsIDU2LCAxMjgsIDY4LCA3OSwgCisgICAgODQsIDgzLCA0NSwgNTEsIDUyLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1NCwgNTUsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgCisgICAgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKKyAgICA1MSwgNTIsIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIAorICAgIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCAKKyAgICA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAorICAgIDUxLCA1MiwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NSwgNTYsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTQsIDU2LCAKICAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTQsIAogICAgIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUzLCA1NiwgCiAgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUzLCAKQEAgLTQyODYsMjYzICs0MzI0LDg1NCBAQAogICAgIDcxLCAxMjgsIDY4LCA3OSwgNzgsIDcxLCAxMjgsIDY4LCA3OSwgNzcsIDY1LCA3MywgMjA2LCA2OCwgNzksIDc2LCA4MCwgCiAgICAgNzIsIDczLCA3OCwgMTI4LCA2OCwgNzksIDc2LCA3NiwgODMsIDEyOCwgNjgsIDc5LCA3NiwgNzYsIDY1LCAyMTAsIDY4LCAKICAgICA3OSwgNzYsIDczLCA4NSwgNzcsIDEyOCwgNjgsIDc5LCA3NSwgNzcsIDY1LCA3MywgMTI4LCA2OCwgNzksIDczLCA4NCwgCi0gICAgMTI4LCA2OCwgNzksIDczLCAxMjgsIDY4LCA3OSwgNzEsIDEyOCwgNjgsIDc5LCAxOTksIDY4LCA3OSwgNjksIDIxMSwgNjgsIAotICAgIDc5LCA2OCwgNjksIDc1LCA2NSwgODQsIDY1LCAxMjgsIDY4LCA3OSwgNjcsIDg1LCA3NywgNjksIDc4LCA4NCwgMTI4LCA2OCwgCi0gICAgNzksIDY3LCA4NSwgNzcsIDY5LCA3OCwgMjEyLCA2OCwgNzksIDY2LCA4MiwgNzksIDEyOCwgNjgsIDc5LCA2NSwgNjcsIDcyLCAKLSAgICA2NSwgODMsIDcyLCA3NywgNjksIDY5LCAxMjgsIDY4LCA3OSwgNjUsIDY3LCA3MiwgNjUsIDgzLCA3MiwgNzcsIDY5LCAxOTcsIAotICAgIDY4LCA3OSwgNjUsIDEyOCwgNjgsIDc5LCA0NSwgNzksIDEyOCwgNjgsIDc3LCAxMjgsIDY4LCAyMDUsIDY4LCA3NiwgODUsIAotICAgIDEyOCwgNjgsIDc2LCA3OSwgMTI4LCA2OCwgNzYsIDczLCAxMjgsIDY4LCA3NiwgNzIsIDg5LCA2NSwgMTI4LCA2OCwgNzYsIAotICAgIDcyLCA2NSwgMTI4LCA2OCwgNzYsIDY5LCA2OSwgMTI4LCA2OCwgNzYsIDY1LCAxMjgsIDY4LCA3NiwgMTI4LCA2OCwgNzUsIAotICAgIDY1LCA4MiwgMTI4LCA2OCwgNzUsIDY1LCAyMTAsIDY4LCA3NCwgNjksIDgyLCA4NiwgNzMsIDEyOCwgNjgsIDc0LCA2OSwgCi0gICAgODIsIDg2LCAxMjgsIDY4LCA3NCwgNjksIDEyOCwgNjgsIDc0LCA2NSwgMTI4LCA2OCwgNzMsIDkwLCA5MCwgMjE3LCA2OCwgCi0gICAgNzMsIDg2LCA3OSwgODIsIDY3LCAxOTcsIDY4LCA3MywgODYsIDczLCA4MywgNzMsIDc5LCA3OCwgMTI4LCA2OCwgNzMsIDg2LCAKLSAgICA3MywgODMsIDczLCA3OSwgMjA2LCA2OCwgNzMsIDg2LCA3MywgNzgsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2OCwgNzMsIAotICAgIDg2LCA3MywgNjgsIDY5LCA4MywgMTI4LCA2OCwgNzMsIDg2LCA3MywgNjgsIDY5LCA4MiwgODMsIDEyOCwgNjgsIDczLCA4NiwgCi0gICAgNzMsIDY4LCA2OSwgODIsIDEyOCwgNjgsIDczLCA4NiwgNzMsIDY4LCA2OSwgMTk2LCA2OCwgNzMsIDg2LCA3MywgNjgsIDY5LCAKLSAgICAxMjgsIDY4LCA3MywgODYsIDczLCA2OCwgMTk3LCA2OCwgNzMsIDg2LCA2OSwgODIsIDcxLCA2OSwgNzgsIDY3LCA2OSwgCi0gICAgMTI4LCA2OCwgNzMsIDg0LCA4NCwgMjA3LCA2OCwgNzMsIDgzLCA4NCwgNzksIDgyLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCAKLSAgICA2OCwgNzMsIDgzLCA4NCwgNzMsIDc4LCA3MSwgODUsIDczLCA4MywgNzIsIDEyOCwgNjgsIDczLCA4MywgODQsIDczLCA3NiwgCi0gICAgNzYsIDEyOCwgNjgsIDczLCA4MywgODMsIDc5LCA3NiwgODYsIDY5LCA0NSwgNTAsIDEyOCwgNjgsIDczLCA4MywgODMsIDc5LCAKLSAgICA3NiwgODYsIDY5LCAxMjgsIDY4LCA3MywgODMsIDgwLCA2OSwgODIsIDgzLCA3MywgNzksIDc4LCAxMjgsIDY4LCA3MywgODMsIAotICAgIDc1LCAxMjgsIDY4LCA3MywgODMsIDczLCA3NywgNzksIDg1LCAxMjgsIDY4LCA3MywgODMsIDcyLCAxMjgsIDY4LCA3MywgCi0gICAgODMsIDY3LCA3OSwgNzgsIDg0LCA3MywgNzgsIDg1LCA3OSwgODUsIDIxMSwgNjgsIDczLCA4MywgMTk1LCA2OCwgNzMsIDgzLCAKLSAgICA2NSwgODAsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNjksIDE5NiwgNjgsIDczLCA4MywgNjUsIDY2LCA3NiwgNjksIDE5NiwgNjgsIAotICAgIDczLCA4MiwgNzEsIDE5MywgNjgsIDczLCA4MiwgNjksIDY3LCA4NCwgNzYsIDIxNywgNjgsIDczLCA4MiwgNjksIDY3LCA4NCwgCi0gICAgNzMsIDc5LCA3OCwgNjUsIDIwNCwgNjgsIDczLCA4MiwgNjksIDY3LCA4NCwgNzMsIDc5LCAyMDYsIDY4LCA3MywgODAsIDg0LCAKLSAgICA2OSwgMTI4LCA2OCwgNzMsIDgwLCA4MCwgNjksIDgyLCAxMjgsIDY4LCA3MywgODAsIDc2LCA3OSwgODUsIDc4LCAxMjgsIAotICAgIDY4LCA3MywgODAsIDc2LCA3MywgMTI4LCA2OCwgNzMsIDgwLCA3NiwgMjAxLCA2OCwgNzMsIDc4LCA3MSwgNjYsIDY1LCAKLSAgICAyMTIsIDY4LCA3MywgMjA2LCA2OCwgNzMsIDc3LCA3NywgNzMsIDc4LCA3MSwgMTI4LCA2OCwgNzMsIDc3LCA3MywgNzgsIAotICAgIDg1LCA4NCwgNzMsIDc5LCA3OCwgNDUsIDUxLCAxMjgsIDY4LCA3MywgNzcsIDczLCA3OCwgODUsIDg0LCA3MywgNzksIDc4LCAKLSAgICA0NSwgNTAsIDEyOCwgNjgsIDczLCA3NywgNzMsIDc4LCA4NSwgODQsIDczLCA3OSwgNzgsIDQ1LCA0OSwgMTI4LCA2OCwgNzMsIAotICAgIDc3LCA3MywgNzgsIDczLCA4MywgNzIsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY4LCA3MywgNzcsIDczLCA2OCwgNzMsIDE5MywgCi0gICAgNjgsIDczLCA3NywgNjksIDc4LCA4MywgNzMsIDc5LCA3OCwgNjUsIDIwNCwgNjgsIDczLCA3NywgNjksIDc4LCA4MywgNzMsIAotICAgIDc5LCAyMDYsIDY4LCA3MywgNzcsIDUwLCAxMjgsIDY4LCA3MywgNzcsIDE3OCwgNjgsIDczLCA3NiwgMTI4LCA2OCwgNzMsIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgMTI4LCA2OCwgNzMsIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDY4LCA3MywgNzEsIDgyLCA2NSwgCi0gICAgNzcsIDc3LCA3OSwgMjExLCA2OCwgNzMsIDcxLCA4MiwgNjUsIDc3LCA3NywgMTkzLCA2OCwgNzMsIDcxLCA4MiwgNjUsIAotICAgIDIwNSwgNjgsIDczLCA3MSwgNzksIDgyLCA3MSwgNzksIDc4LCAxMjgsIDY4LCA3MywgNzEsIDc5LCA4MiwgNzEsIDc5LCAKLSAgICAyMDYsIDY4LCA3MywgNzEsIDczLCA4NCwgODMsIDEyOCwgNjgsIDczLCA3MSwgNjUsIDc3LCA3NywgNjUsIDEyOCwgNjgsIAotICAgIDczLCA3MSwgMTkzLCA2OCwgNzMsIDcwLCA4NCwgNzksIDcxLCA3MSwgNzksIDIxMSwgNjgsIDczLCA3MCwgNzksIDc4LCA3MywgCi0gICAgNjUsIDgzLCAxMjgsIDY4LCA3MywgNzAsIDcwLCA3MywgNjcsIDg1LCA3NiwgODQsIDIxNywgNjgsIDczLCA3MCwgNzAsIDczLCAKLSAgICA2NywgODUsIDc2LCA4NCwgNzMsIDY5LCA4MywgMTI4LCA2OCwgNzMsIDcwLCA3MCwgNjksIDgyLCA2OSwgNzgsIDg0LCA3MywgCi0gICAgNjUsIDc2LCAxMjgsIDY4LCA3MywgNzAsIDcwLCA2OSwgODIsIDY5LCA3OCwgNjcsIDE5NywgNjgsIDczLCA3MCwgNjUsIDg0LCAKLSAgICAxMjgsIDY4LCA3MywgNjksIDgzLCA3MywgODMsIDEyOCwgNjgsIDczLCA2OSwgODMsIDczLCAyMTEsIDY4LCA3MywgNjksIAotICAgIDgzLCA2OSwgMjA0LCA2OCwgNzMsIDY5LCA4MCwgMTI4LCA2OCwgNzMsIDE5NywgNjgsIDczLCA2NiwgMTI4LCA2OCwgNzMsIAotICAgIDY1LCA4NCwgNzksIDc4LCA3OSwgMjA2LCA2OCwgNzMsIDY1LCA4NCwgNzksIDc4LCA3MywgNzUsIDIwMSwgNjgsIDczLCA2NSwgCi0gICAgODMsIDg0LCA3OSwgNzYsIDIwMSwgNjgsIDczLCA2NSwgNzcsIDc5LCA3OCwgNjgsIDgzLCAxMjgsIDY4LCA3MywgNjUsIDc3LCAKLSAgICA3OSwgNzgsIDY4LCAxMjgsIDY4LCA3MywgNjUsIDc3LCA3OSwgNzgsIDE5NiwgNjgsIDczLCA2NSwgNzcsIDY5LCA4NCwgNjksIAotICAgIDIxMCwgNjgsIDczLCA2NSwgNzYsIDg5LCA4NCwgNzMsIDc1LCA2NSwgMTI4LCA2OCwgNzMsIDY1LCA3NiwgODksIDg0LCA3MywgCi0gICAgNzUsIDE5MywgNjgsIDczLCA2NSwgNzYsIDY5LCA2NywgODQsIDQ1LCAyMDgsIDY4LCA3MywgNjUsIDcxLCA3OSwgNzgsIDY1LCAKLSAgICA3NiwgMTI4LCA2OCwgNzMsIDY1LCA2OSwgODIsIDY5LCA4MywgNzMsIDkwLCA2OSwgMTk2LCA2OCwgNzMsIDY1LCA2OSwgODIsIAotICAgIDY5LCA4MywgNzMsIDgzLCA0NSwgODIsIDczLCA3OCwgNzEsIDEyOCwgNjgsIDczLCA2NSwgNjksIDgyLCA2OSwgODMsIDczLCAKLSAgICA4MywgMTI4LCA2OCwgNzMsIDY1LCA2OSwgODIsIDY5LCA4MywgNzMsIDIxMSwgNjgsIDcyLCA3OSwgODUsIDEyOCwgNjgsIAotICAgIDcyLCA3OSwgNzksIDEyOCwgNjgsIDcyLCA3OSwgMTI4LCA2OCwgNzIsIDczLCA3MywgMTI4LCA2OCwgNzIsIDczLCAxMjgsIAotICAgIDY4LCA3MiwgNzIsIDg1LCAxMjgsIDY4LCA3MiwgNzIsIDc5LCA3OSwgMTI4LCA2OCwgNzIsIDcyLCA3OSwgMTI4LCA2OCwgCi0gICAgNzIsIDcyLCA3MywgMTI4LCA2OCwgNzIsIDcyLCA2OSwgNjksIDEyOCwgNjgsIDcyLCA3MiwgNjksIDEyOCwgNjgsIDcyLCAKLSAgICA3MiwgNjUsIDEyOCwgNjgsIDcyLCA2OSwgNjksIDEyOCwgNjgsIDcyLCA2NSwgODIsIDc3LCA2NSwgMTI4LCA2OCwgNzIsIAotICAgIDY1LCA3NywgNjksIDY4LCA3MiwgMTI4LCA2OCwgNzIsIDY1LCA3NiwgNjksIDg0LCA3MiwgMTI4LCA2OCwgNzIsIDY1LCA3NiwgCi0gICAgNjUsIDg0LCA3MiwgMTI4LCA2OCwgNzIsIDY1LCA3NiwgMTI4LCA2OCwgNzIsIDY1LCA2OCwgNzIsIDY5LCAxMjgsIDY4LCAKLSAgICA3MiwgNjUsIDY1LCA3NiwgODUsIDEyOCwgNjgsIDcyLCA2NSwgNjUsIDEyOCwgNjgsIDcyLCA2NSwgMTI4LCA2OCwgNjksIAotICAgIDkwLCAyMDAsIDY4LCA2OSwgODksIDg0LCA2OSwgODIsIDc5LCAyMTMsIDY4LCA2OSwgODksIDg0LCA2OSwgODIsIDc5LCAKLSAgICAyMTEsIDY4LCA2OSwgODgsIDczLCA2NSwgMTI4LCA2OCwgNjksIDg2LCA3MywgNjcsIDE5NywgNjgsIDY5LCA4NiwgNjksIAotICAgIDc2LCA3OSwgODAsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY4LCA2OSwgODUsIDc4LCA3MSwgMTI4LCA2OCwgNjksIDgzLCA3NSwgCi0gICAgODQsIDc5LCAyMDgsIDY4LCA2OSwgODMsIDIwMywgNjgsIDY5LCA4MywgNzMsIDcxLCA3OCwgMTI4LCA2OCwgNjksIDgzLCAKLSAgICA3MywgMTI4LCA2OCwgNjksIDgzLCA2OSwgODIsIDg0LCAxMjgsIDY4LCA2OSwgODMsIDY5LCA4MiwgMjEyLCA2OCwgNjksIAotICAgIDgzLCA2OSwgODIsIDY5LCAyMTIsIDY4LCA2OSwgODMsIDY3LCA4MiwgNzMsIDgwLCA4NCwgNzMsIDc5LCAyMDYsIDY4LCA2OSwgCi0gICAgODMsIDY3LCA2OSwgNzgsIDY4LCA3MywgNzgsIDE5OSwgNjgsIDY5LCA4MywgNjcsIDY5LCA3OCwgNjgsIDY5LCA4MiwgMTI4LCAKLSAgICA2OCwgNjksIDgyLCA2OSwgODQsIDQ1LCA3MiwgNzMsIDY4LCA2OSwgODQsIDEyOCwgNjgsIDY5LCA4MiwgNjksIDg0LCAxMjgsIAotICAgIDY4LCA2OSwgODIsIDY5LCA3NiwgNzMsIDY3LCAyMTIsIDY4LCA2OSwgODAsIDg0LCA3MiwgMTI4LCA2OCwgNjksIDgwLCA2NSwgCi0gICAgODIsIDg0LCA4NSwgODIsIDY5LCAxMjgsIDY4LCA2OSwgODAsIDY1LCA4MiwgODQsIDc3LCA2OSwgNzgsIDIxMiwgNjgsIDY5LCAKLSAgICA4MCwgNjUsIDgyLCA4NCwgNzMsIDc4LCAxOTksIDY4LCA2OSwgNzgsIDg0LCA3MywgODMsIDg0LCA4MiwgMjE3LCA2OCwgNjksIAotICAgIDc4LCA4NCwgNjUsIDIwNCwgNjgsIDY5LCA3OCwgNzksIDc3LCA3MywgNzgsIDY1LCA4NCwgNzksIDgyLCAxMjgsIDY4LCA2OSwgCi0gICAgNzgsIDc5LCA3NywgNzMsIDc4LCA2NSwgODQsIDc5LCAyMTAsIDY4LCA2OSwgNzgsIDc4LCA2OSwgNzgsIDEyOCwgNjgsIDY5LCAKLSAgICA3OCwgNzEsIDEyOCwgNjgsIDY5LCA3OCwgMTk3LCA2OCwgNjksIDc4LCA2NSwgODIsIDczLCA4NSwgMjExLCA2OCwgNjksIAotICAgIDc2LCA4NCwgNjUsIDEyOCwgNjgsIDY5LCA3NiwgODQsIDE5MywgNjgsIDY5LCA3NiwgODQsIDEyOCwgNjgsIDY5LCA3NiwgCi0gICAgODAsIDcyLCA3MywgMTk1LCA2OCwgNjksIDc2LCA3MywgODYsIDY5LCA4MiwgMjE3LCA2OCwgNjksIDc2LCA3MywgODYsIDY5LCAKLSAgICA4MiwgNjUsIDc4LCA2NywgNjksIDEyOCwgNjgsIDY5LCA3NiwgNzMsIDc3LCA3MywgODQsIDY5LCA4MiwgMTI4LCA2OCwgNjksIAotICAgIDc2LCA3MywgNzcsIDczLCA4NCwgNjksIDIxMCwgNjgsIDY5LCA3NiwgNzMsIDY3LCA3MywgNzksIDg1LCAyMTEsIDY4LCA2OSwgCi0gICAgNzYsIDY5LCA4NCwgNjksIDEyOCwgNjgsIDY5LCA3NiwgNjksIDg0LCAxOTcsIDY4LCA2OSwgNzUsIDY1LCAxMjgsIDY4LCAKLSAgICA2OSwgNzUsIDEyOCwgNjgsIDY5LCA3MywgMTI4LCA2OCwgNjksIDcyLCA3MywgMTI4LCA2OCwgNjksIDcxLCA4MiwgNjksIAotICAgIDY5LCA4MywgMTI4LCA2OCwgNjksIDcxLCA4MiwgNjksIDE5NywgNjgsIDY5LCA3MCwgNzMsIDc4LCA3MywgODQsIDczLCA3OSwgCi0gICAgNzgsIDEyOCwgNjgsIDY5LCA3MCwgNjksIDY3LCA4NCwgNzMsIDg2LCA2OSwgNzgsIDY5LCA4MywgMjExLCA2OCwgNjksIDY5LCAKLSAgICA4MiwgMTI4LCA2OCwgNjksIDY5LCA4MCwgNzYsIDg5LCAxMjgsIDY4LCA2OSwgNjksIDc2LCAxMjgsIDY4LCA2OSwgNjcsIAotICAgIDgyLCA2OSwgODMsIDY3LCA2OSwgNzgsIDY4LCA3OSwgMTI4LCA2OCwgNjksIDY3LCA4MiwgNjksIDY1LCA4MywgNjksIDEyOCwgCi0gICAgNjgsIDY5LCA2NywgODIsIDY5LCA2NSwgODMsIDE5NywgNjgsIDY5LCA2NywgNzksIDgyLCA2NSwgODQsIDczLCA4NiwgMTk3LCAKLSAgICA2OCwgNjksIDY3LCA3OSwgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2OCwgNjksIDY3LCA3MywgODMsIDczLCA4NiwgCi0gICAgNjksIDc4LCA2OSwgODMsIDgzLCAxMjgsIDY4LCA2OSwgNjcsIDczLCA3NywgNjUsIDIwNCwgNjgsIDY5LCA2NywgNzMsIDY4LCAKLSAgICA4NSwgNzksIDg1LCAyMTEsIDY4LCA2OSwgNjcsIDY5LCA3NywgNjYsIDY5LCA4MiwgMTI4LCA2OCwgNjksIDY3LCA2NSwgODksIAotICAgIDY5LCA2OCwgMTI4LCA2OCwgNjksIDY2LCA3MywgMjEyLCA2OCwgNjksIDY1LCA4NCwgNzIsIDEyOCwgNjgsIDY5LCA2NSwgCi0gICAgNjgsIDEyOCwgNjgsIDY4LCA4NywgNjUsIDEyOCwgNjgsIDY4LCA4NSwgODgsIDEyOCwgNjgsIDY4LCA4NSwgODQsIDEyOCwgCi0gICAgNjgsIDY4LCA4NSwgODIsIDg4LCAxMjgsIDY4LCA2OCwgODUsIDgyLCAxMjgsIDY4LCA2OCwgODUsIDgwLCAxMjgsIDY4LCAKLSAgICA2OCwgODUsIDc5LCA4OCwgMTI4LCA2OCwgNjgsIDg1LCA3OSwgODAsIDEyOCwgNjgsIDY4LCA4NSwgNzksIDEyOCwgNjgsIAotICAgIDY4LCA4NSwgMTI4LCA2OCwgNjgsIDc5LCA4OCwgMTI4LCA2OCwgNjgsIDc5LCA4NCwgMTI4LCA2OCwgNjgsIDc5LCA4MCwgCi0gICAgMTI4LCA2OCwgNjgsIDc5LCA2NSwgMTI4LCA2OCwgNjgsIDczLCA4OCwgMTI4LCA2OCwgNjgsIDczLCA4NCwgMTI4LCA2OCwgCi0gICAgNjgsIDczLCA4MCwgMTI4LCA2OCwgNjgsIDczLCA2OSwgODgsIDEyOCwgNjgsIDY4LCA3MywgNjksIDgwLCAxMjgsIDY4LCAKLSAgICA2OCwgNzMsIDY5LCAxMjgsIDY4LCA2OCwgNzMsIDEyOCwgNjgsIDY4LCA3MiwgODUsIDEyOCwgNjgsIDY4LCA3MiwgNzksIAotICAgIDEyOCwgNjgsIDY4LCA3MiwgNzMsIDEyOCwgNjgsIDY4LCA3MiwgNjksIDY5LCAxMjgsIDY4LCA2OCwgNzIsIDY5LCAxMjgsIAotICAgIDY4LCA2OCwgNzIsIDY1LCA2NSwgMTI4LCA2OCwgNjgsIDcyLCA2NSwgMTI4LCA2OCwgNjgsIDY5LCA4OCwgMTI4LCA2OCwgCi0gICAgNjgsIDY5LCA4MCwgMTI4LCA2OCwgNjgsIDY5LCA2OSwgMTI4LCA2OCwgNjgsIDY5LCAxMjgsIDY4LCA2OCwgNjgsIDcyLCAKLSAgICA2NSwgMTI4LCA2OCwgNjgsIDY4LCA2NSwgMTI4LCA2OCwgNjgsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjgsIAotICAgIDY4LCA2NSwgODgsIDEyOCwgNjgsIDY4LCA2NSwgODQsIDEyOCwgNjgsIDY4LCA2NSwgODAsIDEyOCwgNjgsIDY4LCA2NSwgCi0gICAgNzYsIDEyOCwgNjgsIDY4LCA2NSwgMjA0LCA2OCwgNjgsIDY1LCA3MiwgNjUsIDc2LCAxMjgsIDY4LCA2OCwgNjUsIDcyLCAKLSAgICA2NSwgMjA0LCA2OCwgNjgsIDY1LCA2NSwgMTI4LCA2OCwgNjcsIDgzLCAxMjgsIDY4LCA2NywgNzIsIDY5LCAxMjgsIDY4LCAKLSAgICA2NywgNTIsIDEyOCwgNjgsIDY3LCA1MSwgMTI4LCA2OCwgNjcsIDUwLCAxMjgsIDY4LCA2NywgNDksIDEyOCwgNjgsIDE5NCwgCi0gICAgNjgsIDY1LCA4OSwgNDUsIDc4LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA2OCwgNjUsIDIxNywgNjgsIDY1LCA4NywgNjYsIAotICAgIDEyOCwgNjgsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDY4LCA2NSwgODYsIDczLCA2OCwgMTI4LCA2OCwgCi0gICAgNjUsIDg0LCAxOTcsIDY4LCA2NSwgODMsIDczLCA2NSwgMTI4LCA2OCwgNjUsIDgzLCA3MywgMTkzLCA2OCwgNjUsIDgzLCAKLSAgICA3MiwgNjksIDE5NiwgNjgsIDY1LCA4MywgNzIsIDEyOCwgNjgsIDY1LCA4MywgMjAwLCA2OCwgNjUsIDgzLCA2OSwgNzMsIAotICAgIDY1LCAxMjgsIDY4LCA2NSwgODIsIDg0LCAxMjgsIDY4LCA2NSwgODIsIDc1LCA2OSwgNzgsIDczLCA3OCwgNzEsIDEyOCwgCi0gICAgNjgsIDY1LCA4MiwgNzUsIDY5LCA3OCwgNzMsIDc4LCAxOTksIDY4LCA2NSwgODIsIDIwMywgNjgsIDY1LCA4MiwgNzEsIDY1LCAKLSAgICAxMjgsIDY4LCA2NSwgODIsIDY1LCA1MiwgMTI4LCA2OCwgNjUsIDgyLCA2NSwgNTEsIDEyOCwgNjgsIDY1LCA4MiwgMTI4LCAKLSAgICA2OCwgNjUsIDgwLCA0NSwgODAsIDgyLCA2NSwgMjA1LCA2OCwgNjUsIDgwLCA0NSwgODAsIDczLCAyMDEsIDY4LCA2NSwgODAsIAotICAgIDQ1LCA3NywgODUsIDc5LCAyMTcsIDY4LCA2NSwgODAsIDQ1LCA2NiwgODUsIDc5LCAyMDYsIDY4LCA2NSwgODAsIDQ1LCA2NiwgCi0gICAgNjksIDIwMSwgNjgsIDY1LCAyMDgsIDY4LCA2NSwgNzgsIDg0LCA2NSwgNzQsIDE5MywgNjgsIDY1LCA3OCwgNzEsIDc5LCAKLSAgICAxMjgsIDY4LCA2NSwgNzgsIDcxLCAxMjgsIDY4LCA2NSwgNzgsIDE5OSwgNjgsIDY1LCA3OCwgNjgsIDY1LCAxMjgsIDY4LCAKLSAgICA2NSwgNzgsIDY3LCA2OSwgODIsIDEyOCwgNjgsIDY1LCA3NywgODAsIDEyOCwgNjgsIDY1LCA3NywgMjA4LCA2OCwgNjUsIAotICAgIDc3LCA3NywgNjUsIDg0LCA2NSwgNzgsIDEyOCwgNjgsIDY1LCA3NywgNzcsIDY1LCA4NCwgNjUsIDIwNiwgNjgsIDY1LCA3NywgCi0gICAgNzcsIDY1LCAxMjgsIDY4LCA2NSwgNzcsIDc3LCAxOTMsIDY4LCA2NSwgNzcsIDY1LCA4MiwgODUsIDEyOCwgNjgsIDY1LCAKLSAgICA3NiwgNjksIDg0LCA3MiwgNDUsIDgyLCA2OSwgODMsIDcyLCAxMjgsIDY4LCA2NSwgNzYsIDY5LCA4NCwgNzIsIDEyOCwgNjgsIAotICAgIDY1LCA3NiwgNjksIDg0LCAxMjgsIDY4LCA2NSwgNzYsIDY5LCAyMTIsIDY4LCA2NSwgNzYsIDY4LCA2NSwgMTI4LCA2OCwgCi0gICAgNjUsIDc2LCA2NSwgODQsIDcyLCAxMjgsIDY4LCA2NSwgNzYsIDY1LCA4NCwgMjAwLCA2OCwgNjUsIDc2LCA2NSwgODQsIAotICAgIDEyOCwgNjgsIDY1LCA3MywgODIsIDEyOCwgNjgsIDY1LCA3MywgNzgsIDcxLCAxMjgsIDY4LCA2NSwgNzMsIDEyOCwgNjgsIAotICAgIDY1LCA3MiwgODksIDY1LCA2NSwgODUsIDgzLCA3MiwgNDUsIDUwLCAxMjgsIDY4LCA2NSwgNzIsIDg5LCA2NSwgNjUsIDg1LCAKLSAgICA4MywgNzIsIDEyOCwgNjgsIDY1LCA3MSwgODMsIDEyOCwgNjgsIDY1LCA3MSwgNzEsIDY5LCA4MiwgMTI4LCA2OCwgNjUsIAotICAgIDcxLCA3MSwgNjksIDIxMCwgNjgsIDY1LCA3MSwgNjksIDgzLCA3MiwgMTI4LCA2OCwgNjUsIDcxLCA2OSwgODMsIDIwMCwgCi0gICAgNjgsIDY1LCA3MSwgNjYsIDY1LCA4MywgNzMsIDc4LCA3OCwgNjUsIDEyOCwgNjgsIDY1LCA3MSwgNjUsIDIxOCwgNjgsIDY1LCAKLSAgICA3MSwgNjUsIDc2LCA3MSwgNjUsIDEyOCwgNjgsIDY1LCA3MSwgNTEsIDEyOCwgNjgsIDY1LCAxOTksIDY4LCA2NSwgNjksIAotICAgIDc4LCA3MSwgMTI4LCA2OCwgNjUsIDY5LCAxOTksIDY4LCA2NSwgNjgsIDEyOCwgNjgsIDY1LCAxOTYsIDY4LCA2NSwgNjUsIAotICAgIDgzLCA4NSwgMTI4LCA2OCwgNjUsIDY1LCA2OCwgNzIsIDg1LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA3MiwgMTI4LCA2OCwgCi0gICAgNDgsIDU0LCA1NSwgNzEsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDcwLCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA2OSwgMTI4LCAKLSAgICA2OCwgNDgsIDU0LCA1NSwgNjgsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDY3LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA2NiwgCi0gICAgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNjUsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDEyOCwgNjgsIDQ4LCA1NCwgNTQsIDEyOCwgCi0gICAgNjgsIDQ4LCA1NCwgNTMsIDEyOCwgNjgsIDQ4LCA1NCwgNTIsIDEyOCwgNjgsIDQ4LCA1NCwgNTEsIDEyOCwgNjgsIDQ4LCAKLSAgICA1NCwgNTAsIDEyOCwgNjgsIDQ4LCA1NCwgNDksIDEyOCwgNjgsIDQ4LCA1NCwgNDgsIDEyOCwgNjgsIDQ4LCA1MywgNTcsIAotICAgIDEyOCwgNjgsIDQ4LCA1MywgNTYsIDEyOCwgNjgsIDQ4LCA1MywgNTUsIDEyOCwgNjgsIDQ4LCA1MywgNTQsIDEyOCwgNjgsIAotICAgIDQ4LCA1MywgNTMsIDEyOCwgNjgsIDQ4LCA1MywgNTIsIDY1LCAxMjgsIDY4LCA0OCwgNTMsIDUyLCAxMjgsIDY4LCA0OCwgCi0gICAgNTMsIDUxLCAxMjgsIDY4LCA0OCwgNTMsIDUwLCA2NSwgMTI4LCA2OCwgNDgsIDUzLCA1MCwgMTI4LCA2OCwgNDgsIDUzLCAKLSAgICA0OSwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNzMsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDcyLCAxMjgsIDY4LCA0OCwgNTMsIAotICAgIDQ4LCA3MSwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNzAsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDY5LCAxMjgsIDY4LCA0OCwgCi0gICAgNTMsIDQ4LCA2OCwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNjcsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDY2LCAxMjgsIDY4LCAKLSAgICA0OCwgNTMsIDQ4LCA2NSwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgMTI4LCA2OCwgNDgsIDUyLCA1NywgMTI4LCA2OCwgNDgsIAotICAgIDUyLCA1NiwgNjUsIDEyOCwgNjgsIDQ4LCA1MiwgNTYsIDEyOCwgNjgsIDQ4LCA1MiwgNTUsIDEyOCwgNjgsIDQ4LCA1MiwgCi0gICAgNTQsIDY1LCAxMjgsIDY4LCA0OCwgNTIsIDU0LCAxMjgsIDY4LCA0OCwgNTIsIDUzLCAxMjgsIDY4LCA0OCwgNTIsIDUyLCAKLSAgICAxMjgsIDY4LCA0OCwgNTIsIDUxLCAxMjgsIDY4LCA0OCwgNTIsIDUwLCAxMjgsIDY4LCA0OCwgNTIsIDQ5LCAxMjgsIDY4LCAKLSAgICA0OCwgNTIsIDQ4LCAxMjgsIDY4LCA0OCwgNTEsIDU3LCAxMjgsIDY4LCA0OCwgNTEsIDU2LCAxMjgsIDY4LCA0OCwgNTEsIAotICAgIDU1LCAxMjgsIDY4LCA0OCwgNTEsIDU0LCAxMjgsIDY4LCA0OCwgNTEsIDUzLCAxMjgsIDY4LCA0OCwgNTEsIDUyLCA2NSwgCi0gICAgMTI4LCA2OCwgNDgsIDUxLCA1MiwgMTI4LCA2OCwgNDgsIDUxLCA1MSwgMTI4LCA2OCwgNDgsIDUxLCA1MCwgMTI4LCA2OCwgCi0gICAgNDgsIDUxLCA0OSwgNjUsIDEyOCwgNjgsIDQ4LCA1MSwgNDksIDEyOCwgNjgsIDQ4LCA1MSwgNDgsIDEyOCwgNjgsIDQ4LCAKLSAgICA1MCwgNTcsIDEyOCwgNjgsIDQ4LCA1MCwgNTYsIDEyOCwgNjgsIDQ4LCA1MCwgNTUsIDY1LCAxMjgsIDY4LCA0OCwgNTAsIAotICAgIDU1LCAxMjgsIDY4LCA0OCwgNTAsIDU0LCAxMjgsIDY4LCA0OCwgNTAsIDUzLCAxMjgsIDY4LCA0OCwgNTAsIDUyLCAxMjgsIAotICAgIDY4LCA0OCwgNTAsIDUxLCAxMjgsIDY4LCA0OCwgNTAsIDUwLCAxMjgsIDY4LCA0OCwgNTAsIDQ5LCAxMjgsIDY4LCA0OCwgCi0gICAgNTAsIDQ4LCAxMjgsIDY4LCA0OCwgNDksIDU3LCAxMjgsIDY4LCA0OCwgNDksIDU2LCAxMjgsIDY4LCA0OCwgNDksIDU1LCAKLSAgICAxMjgsIDY4LCA0OCwgNDksIDU0LCAxMjgsIDY4LCA0OCwgNDksIDUzLCAxMjgsIDY4LCA0OCwgNDksIDUyLCAxMjgsIDY4LCAKLSAgICA0OCwgNDksIDUxLCAxMjgsIDY4LCA0OCwgNDksIDUwLCAxMjgsIDY4LCA0OCwgNDksIDQ5LCAxMjgsIDY4LCA0OCwgNDksIAotICAgIDQ4LCAxMjgsIDY4LCA0OCwgNDgsIDU3LCAxMjgsIDY4LCA0OCwgNDgsIDU2LCA2NSwgMTI4LCA2OCwgNDgsIDQ4LCA1NiwgCi0gICAgMTI4LCA2OCwgNDgsIDQ4LCA1NSwgMTI4LCA2OCwgNDgsIDQ4LCA1NCwgMTI4LCA2OCwgNDgsIDQ4LCA1MywgMTI4LCA2OCwgCi0gICAgNDgsIDQ4LCA1MiwgMTI4LCA2OCwgNDgsIDQ4LCA1MSwgMTI4LCA2OCwgNDgsIDQ4LCA1MCwgMTI4LCA2OCwgNDgsIDQ4LCAKLSAgICA0OSwgMTI4LCA2NywgODksIDg4LCAxMjgsIDY3LCA4OSwgODQsIDEyOCwgNjcsIDg5LCA4MiwgODgsIDEyOCwgNjcsIDg5LCAKLSAgICA4MiwgNjksIDc4LCA2NSwgNzMsIDE5NSwgNjcsIDg5LCA4MiwgMTI4LCA2NywgODksIDgwLCA4MiwgNzMsIDc5LCAyMTIsIAotICAgIDY3LCA4OSwgODAsIDY5LCA4MiwgODUsIDgzLCAxMjgsIDY3LCA4OSwgODAsIDEyOCwgNjcsIDg5LCA3NiwgNzMsIDc4LCA2OCwgCi0gICAgODIsIDczLCA2NywgNzMsIDg0LCA4OSwgMTI4LCA2NywgODksIDY3LCA3NiwgNzksIDc4LCA2OSwgMTI4LCA2NywgODksIDY1LCAKLSAgICA4OSwgMTI4LCA2NywgODksIDY1LCA4NywgMTI4LCA2NywgODksIDY1LCAxMjgsIDY3LCA4NywgNzksIDc5LCAxMjgsIDY3LCAKLSAgICA4NywgNzksIDEyOCwgNjcsIDg3LCA3MywgNzMsIDEyOCwgNjcsIDg3LCA3MywgMTI4LCA2NywgODcsIDY5LCA3OSwgODIsIAotICAgIDg0LCA3MiwgMTI4LCA2NywgODcsIDY5LCAxMjgsIDY3LCA4NywgNjUsIDY1LCAxMjgsIDY3LCA4NSwgODgsIDEyOCwgNjcsIAotICAgIDg1LCA4NSwgMTI4LCA2NywgODUsIDIxMiwgNjcsIDg1LCA4MywgODQsIDc5LCA3NywgODMsIDEyOCwgNjcsIDg1LCA4MywgCi0gICAgODQsIDc5LCA3NywgNjksIDIxMCwgNjcsIDg1LCA4MywgODQsIDY1LCA4MiwgNjgsIDEyOCwgNjcsIDg1LCA4MywgODAsIAotICAgIDEyOCwgNjcsIDg1LCA4MiwgODgsIDEyOCwgNjcsIDg1LCA4MiwgODYsIDczLCA3OCwgMTk5LCA2NywgODUsIDgyLCA4NiwgCi0gICAgNjksIDY4LCAxMjgsIDY3LCA4NSwgODIsIDg2LCA2OSwgMTk2LCA2NywgODUsIDgyLCA4NiwgNjksIDEyOCwgNjcsIDg1LCAKLSAgICA4MiwgODYsIDE5NywgNjcsIDg1LCA4MiwgODIsIDIxNywgNjcsIDg1LCA4MiwgODIsIDY5LCA3OCwgODQsIDEyOCwgNjcsIAotICAgIDg1LCA4MiwgODIsIDY5LCA3OCwgMjEyLCA2NywgODUsIDgyLCA3NiwgMjE3LCA2NywgODUsIDgyLCA3NiwgMTI4LCA2NywgCi0gICAgODUsIDgyLCAxMjgsIDY3LCA4NSwgODAsIDgwLCA2OSwgNjgsIDEyOCwgNjcsIDg1LCA4MCwgODAsIDY5LCAxOTYsIDY3LCAKLSAgICA4NSwgNzksIDg4LCAxMjgsIDY3LCA4NSwgNzksIDgwLCAxMjgsIDY3LCA4NSwgNzksIDEyOCwgNjcsIDg1LCAyMDUsIDY3LCAKLSAgICA4NSwgNjYsIDY5LCA2OCwgMTI4LCA2NywgODUsIDY2LCAxOTcsIDY3LCA4NSwgNjUsIDg0LCA4MiwgNzMsIDc2LCA3NiwgNzksIAotICAgIDEyOCwgNjcsIDg1LCA2NSwgODQsIDgyLCA3MywgNzYsIDc2LCAyMDcsIDY3LCA4NSwgNjUsIDIwNSwgNjcsIDg1LCAxMjgsIAotICAgIDY3LCA4MywgNzMsIDEyOCwgNjcsIDgyLCA4OSwgODMsIDg0LCA2NSwgMjA0LCA2NywgODIsIDg5LCA4MCwgODQsIDc5LCA3MSwgCi0gICAgODIsIDY1LCA3NywgNzcsIDczLCAxOTUsIDY3LCA4MiwgODksIDczLCA3OCwgMTk5LCA2NywgODIsIDg1LCA5MCwgNjksIDczLCAKLSAgICA4MiwgMjA3LCA2NywgODIsIDg1LCA2NywgNzMsIDcwLCA3OSwgODIsIDIwNSwgNjcsIDgyLCA4NSwgNjcsIDczLCA2NiwgNzYsIAotICAgIDY5LCA0NSwgNTMsIDEyOCwgNjcsIDgyLCA4NSwgNjcsIDczLCA2NiwgNzYsIDY5LCA0NSwgNTIsIDEyOCwgNjcsIDgyLCA4NSwgCi0gICAgNjcsIDczLCA2NiwgNzYsIDY5LCA0NSwgNTEsIDEyOCwgNjcsIDgyLCA4NSwgNjcsIDczLCA2NiwgNzYsIDY5LCA0NSwgNTAsIAotICAgIDEyOCwgNjcsIDgyLCA4NSwgNjcsIDczLCA2NiwgNzYsIDY5LCAxMjgsIDY3LCA4MiwgNzksIDg3LCA3OCwgMTI4LCA2NywgCi0gICAgODIsIDc5LCA4MywgODMsIDczLCA3OCwgNzEsIDEyOCwgNjcsIDgyLCA3OSwgODMsIDgzLCA3MywgNzgsIDE5OSwgNjcsIDgyLCAKLSAgICA3OSwgODMsIDgzLCA3MiwgNjUsIDg0LCA2NywgMjAwLCA2NywgODIsIDc5LCA4MywgODMsIDY5LCA2OCwgNDUsIDg0LCA2NSwgCi0gICAgNzMsIDc2LCAxMjgsIDY3LCA4MiwgNzksIDgzLCA4MywgNjksIDY4LCAxMjgsIDY3LCA4MiwgNzksIDgzLCA4MywgNjksIAotICAgIDE5NiwgNjcsIDgyLCA3OSwgODMsIDgzLCA2NiwgNzksIDc4LCA2OSwgODMsIDEyOCwgNjcsIDgyLCA3OSwgODMsIDgzLCAKLSAgICAxMjgsIDY3LCA4MiwgNzksIDgzLCAyMTEsIDY3LCA4MiwgNzksIDgwLCAxMjgsIDY3LCA4MiwgNzksIDczLCA4OCwgMTI4LCAKLSAgICA2NywgODIsIDc5LCA2NywgODUsIDIxMSwgNjcsIDgyLCA3OSwgNjcsIDc5LCA2OCwgNzMsIDc2LCA2OSwgMTI4LCA2NywgODIsIAotICAgIDczLCA2NywgNzUsIDY5LCAyMTIsIDY3LCA4MiwgNjksIDgzLCA2NywgNjksIDc4LCA4NCwgODMsIDEyOCwgNjcsIDgyLCA2OSwgCi0gICAgODMsIDY3LCA2OSwgNzgsIDg0LCAxMjgsIDY3LCA4MiwgNjksIDgzLCA2NywgNjksIDc4LCAyMTIsIDY3LCA4MiwgNjksIDY4LCAKLSAgICA3MywgMjEyLCA2NywgODIsIDY5LCA2NSwgODQsIDczLCA4NiwgMTk3LCA2NywgODIsIDY5LCA2NSwgNzcsIDEyOCwgNjcsIAotICAgIDgyLCA2NSwgODksIDc5LCA3OCwgMTI4LCA2NywgODIsIDY1LCA2NywgNzUsIDY5LCA4MiwgMTI4LCA2NywgODIsIDY1LCA2NiwgCi0gICAgMTI4LCA2NywgODIsIDEyOCwgNjcsIDc5LCA4OCwgMTI4LCA2NywgNzksIDg3LCAxMjgsIDY3LCA3OSwgMjE1LCA2NywgNzksIAotICAgIDg2LCA2OSwgODIsIDEyOCwgNjcsIDc5LCA4NSwgODAsIDc2LCAxOTcsIDY3LCA3OSwgODUsIDc4LCA4NCwgNzMsIDc4LCAKLSAgICAxOTksIDY3LCA3OSwgODUsIDc4LCA4NCwgNjksIDgyLCA4MywgNzMsIDc4LCA3NSwgMTI4LCA2NywgNzksIDg1LCA3OCwgODQsIAotICAgIDY5LCA4MiwgNjYsIDc5LCA4MiwgNjksIDEyOCwgNjcsIDc5LCA4NSwgNzgsIDY3LCA3MywgMjA0LCA2NywgNzksIDg1LCA2NywgCi0gICAgMjAwLCA2NywgNzksIDg0LCAxMjgsIDY3LCA3OSwgODIsIDgyLCA2OSwgODMsIDgwLCA3OSwgNzgsIDY4LCAyMTEsIDY3LCAKLSAgICA3OSwgODIsIDgyLCA2OSwgNjcsIDg0LCAxMjgsIDY3LCA3OSwgODIsIDgwLCA4MywgNjksIDEyOCwgNjcsIDc5LCA4MiwgODAsIAotICAgIDc5LCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgODIsIDc5LCA3OCwgNzMsIDgzLCAxMjgsIDY3LCA3OSwgCi0gICAgODIsIDc4LCA2OSwgODIsIDgzLCAxMjgsIDY3LCA3OSwgODIsIDc4LCA2OSwgODIsIDEyOCwgNjcsIDc5LCA4MiwgNzgsIDY5LCAKLSAgICAyMTAsIDY3LCA3OSwgODIsIDc1LCAxMjgsIDY3LCA3OSwgODAsIDg5LCA4MiwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNjcsIAotICAgIDc5LCA4MCwgODksIDgyLCA3MywgNzEsIDcyLCAyMTIsIDY3LCA3OSwgODAsIDg5LCAxMjgsIDY3LCA3OSwgODAsIDgyLCA3OSwgCi0gICAgNjgsIDg1LCA2NywgODQsIDEyOCwgNjcsIDc5LCA4MCwgODAsIDY5LCA4MiwgNDUsIDUwLCAxMjgsIDY3LCA3OSwgODAsIDgwLCAKLSAgICA2OSwgODIsIDEyOCwgNjcsIDc5LCA4MCwgMTI4LCA2NywgNzksIDc5LCA3NiwgMTI4LCA2NywgNzksIDc5LCA3NSwgNzMsIAotICAgIDc4LCA3MSwgMTI4LCA2NywgNzksIDc5LCA3NSwgNzMsIDY5LCAxMjgsIDY3LCA3OSwgNzksIDc1LCA2OSwgMTk2LCA2NywgCi0gICAgNzksIDc5LCAxMjgsIDY3LCA3OSwgNzgsIDg2LCA2OSwgODIsIDcxLCA3MywgNzgsIDE5OSwgNjcsIDc5LCA3OCwgODYsIDY5LCAKLSAgICA3OCwgNzMsIDY5LCA3OCwgNjcsIDE5NywgNjcsIDc5LCA3OCwgODQsIDgyLCA3OSwgNzYsIDEyOCwgNjcsIDc5LCA3OCwgODQsIAotICAgIDgyLCA3OSwgMjA0LCA2NywgNzksIDc4LCA4NCwgODIsIDY1LCA4MiwgNzMsIDY5LCA4NCwgODksIDEyOCwgNjcsIDc5LCA3OCwgCi0gICAgODQsIDgyLCA2NSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzgsIDg0LCA3OSwgODUsIDgyLCA2OSwgMTk2LCAKLSAgICA2NywgNzksIDc4LCA4NCwgNzksIDg1LCAyMTAsIDY3LCA3OSwgNzgsIDg0LCA3MywgNzgsIDg1LCA3MywgNzgsIDE5OSwgNjcsIAotICAgIDc5LCA3OCwgODQsIDczLCA3OCwgODUsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA3OSwgNzgsIDg0LCA2OSwgNzgsIDg0LCAKLSAgICA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzgsIDg0LCA2OSwgNzcsIDgwLCA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIAotICAgIDY3LCA3OSwgNzgsIDg0LCA2NSwgNzMsIDc4LCAyMTEsIDY3LCA3OSwgNzgsIDg0LCA2NSwgNzMsIDc4LCA3MywgNzgsIDE5OSwgCi0gICAgNjcsIDc5LCA3OCwgODQsIDY1LCA3MywgMjA2LCA2NywgNzksIDc4LCA4NCwgNjUsIDY3LCA4NCwgMTI4LCA2NywgNzksIDc4LCAKLSAgICA4MywgODQsIDgyLCA4NSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzgsIDgzLCA4NCwgODIsIDg1LCA2NywgCi0gICAgODQsIDczLCA3OSwgMjA2LCA2NywgNzksIDc4LCA4MywgODQsIDY1LCA3OCwgODQsIDEyOCwgNjcsIDc5LCA3OCwgODMsIDg0LCAKLSAgICA2NSwgNzgsIDIxMiwgNjcsIDc5LCA3OCwgODMsIDg0LCA2NSwgNzgsIDY3LCA4OSwgMTI4LCA2NywgNzksIDc4LCA4MywgNjksIAotICAgIDY3LCA4NSwgODQsIDczLCA4NiwgMTk3LCA2NywgNzksIDc4LCA3NCwgODUsIDc4LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgCi0gICAgNjcsIDc5LCA3OCwgNzQsIDg1LCA3MSwgNjUsIDg0LCAxOTcsIDY3LCA3OSwgNzgsIDc0LCA3OSwgNzMsIDc4LCA3MywgNzgsIAotICAgIDE5OSwgNjcsIDc5LCA3OCwgNzQsIDc5LCA3MywgNzgsIDY5LCA2OCwgMTI4LCA2NywgNzksIDc4LCA3NCwgNzksIDczLCA3OCwgCi0gICAgNjksIDE5NiwgNjcsIDc5LCA3OCwgNzMsIDY3LCA2NSwgMjA0LCA2NywgNzksIDc4LCA3MSwgODIsIDg1LCA2OSwgNzgsIAotICAgIDIxMiwgNjcsIDc5LCA3OCwgNzEsIDgyLCA2NSwgODQsIDg1LCA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgCi0gICAgNzgsIDcwLCA4NSwgODMsIDY5LCAxOTYsIDY3LCA3OSwgNzgsIDcwLCA3OSwgODUsIDc4LCA2OCwgNjksIDE5NiwgNjcsIDc5LCAKLSAgICA3OCwgNzAsIDc2LCA3MywgNjcsIDg0LCAxMjgsIDY3LCA3OSwgNzgsIDcwLCA2OSwgODQsIDg0LCAyMDEsIDY3LCA3OSwgNzgsIAotICAgIDY3LCA2NSwgODYsIDY5LCA0NSwgODMsIDczLCA2OCwgNjksIDE5NiwgNjcsIDc5LCA3OCwgNjcsIDY1LCA4NiwgNjksIDQ1LCAKLSAgICA4MCwgNzksIDczLCA3OCwgODQsIDY5LCAxOTYsIDY3LCA3OSwgNzcsIDgwLCA4NSwgODQsIDY5LCA4MiwgODMsIDEyOCwgNjcsIAotICAgIDc5LCA3NywgODAsIDg1LCA4NCwgNjksIDgyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA4MiwgNjksIDgzLCA4MywgNzMsIDc5LCAKLSAgICA3OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgODIsIDY5LCA4MywgODMsIDY5LCAxOTYsIDY3LCA3OSwgNzcsIDgwLCA3OSwgODMsIAotICAgIDczLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDgzLCA3MywgODQsIDczLCA3OSwgMjA2LCA2NywgCi0gICAgNzksIDc3LCA4MCwgNzYsIDczLCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzYsIDY5LCA4NCwgNzMsIAotICAgIDc5LCA3OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzYsIDY5LCA4NCwgNjksIDY4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3NiwgCi0gICAgNjksIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA2NSwgODIsIDY5LCAxMjgsIDY3LCA3OSwgNzcsIDc3LCAKLSAgICA3OSwgMjA2LCA2NywgNzksIDc3LCA3NywgNjksIDgyLCA2NywgNzMsIDY1LCAyMDQsIDY3LCA3OSwgNzcsIDc3LCA2NSwgNzgsIAotICAgIDY4LCAxMjgsIDY3LCA3OSwgNzcsIDc3LCA2NSwgMTI4LCA2NywgNzksIDc3LCA3NywgMTkzLCA2NywgNzksIDc3LCA2OSwgCi0gICAgODQsIDEyOCwgNjcsIDc5LCA3NywgNjYsIDczLCA3OCwgNjksIDY4LCAxMjgsIDY3LCA3OSwgNzcsIDY2LCA3MywgNzgsIDY1LCAKLSAgICA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc3LCA2NiwgMTI4LCA2NywgNzksIDc2LCA4NSwgNzcsIDc4LCAxMjgsIAotICAgIDY3LCA3OSwgNzYsIDc5LCA4MiwgMTI4LCA2NywgNzksIDc2LCA3NiwgNzMsIDgzLCA3MywgNzksIDIwNiwgNjcsIDc5LCA3NiwgCi0gICAgNzYsIDEyOCwgNjcsIDc5LCA3NiwgMTk2LCA2NywgNzksIDcwLCA3MCwgNzMsIDc4LCAxMjgsIDY3LCA3OSwgNjksIDc4LCAKLSAgICA3MSwgMTI4LCA2NywgNzksIDY5LCA3OCwgMTk5LCA2NywgNzksIDY4LCA2NSwgMTI4LCA2NywgNzksIDY3LCA3NSwgODQsIAotICAgIDY1LCA3MywgMjA0LCA2NywgNzksIDY1LCA4MywgODQsIDY5LCA4MiwgMTI4LCA2NywgNzksIDY1LCAxMjgsIDY3LCA3NywgCi0gICAgMTI4LCA2NywgMjA1LCA2NywgNzYsIDg1LCA4MywgODQsIDY5LCAyMTAsIDY3LCA3NiwgODUsIDY2LCA4MywgMTI4LCA2NywgCi0gICAgNzYsIDg1LCA2NiwgNDUsIDgzLCA4MCwgNzksIDc1LCA2OSwgMTk2LCA2NywgNzYsIDg1LCA2NiwgMTI4LCA2NywgNzYsIDg1LCAKLSAgICAxOTQsIDY3LCA3NiwgNzksIDg2LCA2OSwgODIsIDEyOCwgNjcsIDc2LCA3OSwgODUsIDY4LCAxMjgsIDY3LCA3NiwgNzksIAotICAgIDg1LCAxOTYsIDY3LCA3NiwgNzksIDg0LCA3MiwgNjksIDgzLCAxMjgsIDY3LCA3NiwgNzksIDg0LCA3MiwgMTI4LCA2NywgCi0gICAgNzYsIDc5LCA4MywgNjksIDg0LCAxMjgsIDY3LCA3NiwgNzksIDgzLCA2OSwgNzgsIDY5LCA4MywgODMsIDEyOCwgNjcsIDc2LCAKLSAgICA3OSwgODMsIDY5LCA2OCwgMTI4LCA2NywgNzYsIDc5LCA4MywgMTk3LCA2NywgNzYsIDc5LCA2NywgNzUsIDg3LCA3MywgODMsIAotICAgIDE5NywgNjcsIDc2LCA3OSwgNjcsIDIwMywgNjcsIDc2LCA3MywgODYsIDczLCA4MywgMTI4LCA2NywgNzYsIDczLCA4MCwgCi0gICAgNjYsIDc5LCA2NSwgODIsIDY4LCAxMjgsIDY3LCA3NiwgNzMsIDc4LCA3NSwgNzMsIDc4LCAxOTksIDY3LCA3NiwgNzMsIDc4LCAKLSAgICA3MSwgNzMsIDc4LCAxOTksIDY3LCA3NiwgNzMsIDc3LCA2NSwgNjcsIDg1LCA4MywgMTI4LCA2NywgNzYsIDczLCA3MCwgNzAsIAotICAgIDEyOCwgNjcsIDc2LCA3MywgNjcsIDc1LCAxMjgsIDY3LCA3NiwgNjksIDcwLCA0NSwgNTAsIDEyOCwgNjcsIDc2LCA2OSwgCi0gICAgNzAsIDQ1LCA0OSwgMTI4LCA2NywgNzYsIDY5LCA3MCwgMTI4LCA2NywgNzYsIDY5LCAxOTgsIDY3LCA3NiwgNjksIDY1LCAKLSAgICA4NiwgNjksIDgyLCAxMjgsIDY3LCA3NiwgNjksIDY1LCAyMTAsIDY3LCA3NiwgNjUsIDgzLCA4MywgNzMsIDY3LCA2NSwgCi0gICAgMjA0LCA2NywgNzYsIDY1LCA4MCwgODAsIDczLCA3OCwgMTk5LCA2NywgNzYsIDY1LCA4MCwgODAsIDY5LCAyMTAsIDY3LCAKLSAgICA3NiwgNjUsIDc4LCAxMjgsIDY3LCA3NiwgNjUsIDIwNiwgNjcsIDc2LCA2NSwgNzcsIDgzLCA3MiwgNjksIDc2LCAyMDQsIAotICAgIDY3LCA3NiwgNjUsIDczLCA3NywgMTI4LCA2NywgNzYsIDEyOCwgNjcsIDczLCA4OCwgMTI4LCA2NywgNzMsIDg2LCA3MywgCi0gICAgNzYsIDczLCA2NSwgNzgsIDEyOCwgNjcsIDczLCA4NCwgODksIDgzLCA2NywgNjUsIDgwLCA2OSwgMTI4LCA2NywgNzMsIDg0LCAKLSAgICA4OSwgODMsIDY3LCA2NSwgODAsIDE5NywgNjcsIDczLCA4NCwgMjAxLCA2NywgNzMsIDg0LCA2NSwgODQsIDczLCA3OSwgCi0gICAgMjA2LCA2NywgNzMsIDg0LCAxMjgsIDY3LCA3MywgODIsIDY3LCA4NSwgMjExLCA2NywgNzMsIDgyLCA2NywgODUsIDc3LCAKLSAgICA3MCwgNzYsIDY5LCA4OCwgMTI4LCA2NywgNzMsIDgyLCA2NywgODUsIDc3LCA3MCwgNzYsIDY5LCAyMTYsIDY3LCA3MywgODIsIAotICAgIDY3LCA4NSwgNzYsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA3MywgODIsIDY3LCA3NiwgNzMsIDc4LCA3MSwgMTI4LCA2NywgCi0gICAgNzMsIDgyLCA2NywgNzYsIDczLCA3OCwgMTk5LCA2NywgNzMsIDgyLCA2NywgNzYsIDY5LCA4MywgMTI4LCA2NywgNzMsIDgyLCAKLSAgICA2NywgNzYsIDY5LCAyMTEsIDY3LCA3MywgODIsIDY3LCA3NiwgNjksIDY4LCAxMjgsIDY3LCA3MywgODAsIDEyOCwgNjcsIAotICAgIDczLCA3OCwgNzgsIDY1LCA2NiwgNjUsIDgyLCAxMjgsIDY3LCA3MywgNzgsIDY5LCA3NywgNjUsIDEyOCwgNjcsIDczLCAKKyAgICAxMjgsIDY4LCA3OSwgNzMsIDc4LCAxOTksIDY4LCA3OSwgNzMsIDEyOCwgNjgsIDc5LCA3MSwgMTI4LCA2OCwgNzksIDE5OSwgCisgICAgNjgsIDc5LCA2OSwgMjExLCA2OCwgNzksIDY4LCA2OSwgNzUsIDY1LCA4NCwgNjUsIDEyOCwgNjgsIDc5LCA2NywgODUsIDc3LCAKKyAgICA2OSwgNzgsIDg0LCAxMjgsIDY4LCA3OSwgNjcsIDg1LCA3NywgNjksIDc4LCAyMTIsIDY4LCA3OSwgNjYsIDgyLCA3OSwgCisgICAgMTI4LCA2OCwgNzksIDY1LCA2NywgNzIsIDY1LCA4MywgNzIsIDc3LCA2OSwgNjksIDEyOCwgNjgsIDc5LCA2NSwgNjcsIDcyLCAKKyAgICA2NSwgODMsIDcyLCA3NywgNjksIDE5NywgNjgsIDc5LCA2NSwgMTI4LCA2OCwgNzksIDQ1LCA3OSwgMTI4LCA2OCwgNzcsIAorICAgIDEyOCwgNjgsIDIwNSwgNjgsIDc2LCA4NSwgMTI4LCA2OCwgNzYsIDc5LCAxMjgsIDY4LCA3NiwgNzMsIDEyOCwgNjgsIDc2LCAKKyAgICA3MiwgODksIDY1LCAxMjgsIDY4LCA3NiwgNzIsIDY1LCAxMjgsIDY4LCA3NiwgNjksIDY5LCAxMjgsIDY4LCA3NiwgNjUsIAorICAgIDEyOCwgNjgsIDc2LCAxMjgsIDY4LCA3NSwgNjUsIDgyLCAxMjgsIDY4LCA3NSwgNjUsIDIxMCwgNjgsIDc0LCA2OSwgODIsIAorICAgIDg2LCA3MywgMTI4LCA2OCwgNzQsIDY5LCA4MiwgODYsIDEyOCwgNjgsIDc0LCA2OSwgMTI4LCA2OCwgNzQsIDY1LCAxMjgsIAorICAgIDY4LCA3MywgOTAsIDkwLCAyMTcsIDY4LCA3MywgODYsIDc5LCA4MiwgNjcsIDE5NywgNjgsIDczLCA4NiwgNzMsIDgzLCA3MywgCisgICAgNzksIDc4LCAxMjgsIDY4LCA3MywgODYsIDczLCA4MywgNzMsIDc5LCAyMDYsIDY4LCA3MywgODYsIDczLCA3OCwgNjUsIDg0LCAKKyAgICA3MywgNzksIDc4LCAxMjgsIDY4LCA3MywgODYsIDczLCA2OCwgNjksIDgzLCAxMjgsIDY4LCA3MywgODYsIDczLCA2OCwgNjksIAorICAgIDgyLCA4MywgMTI4LCA2OCwgNzMsIDg2LCA3MywgNjgsIDY5LCA4MiwgMTI4LCA2OCwgNzMsIDg2LCA3MywgNjgsIDY5LCAKKyAgICAxOTYsIDY4LCA3MywgODYsIDczLCA2OCwgNjksIDEyOCwgNjgsIDczLCA4NiwgNzMsIDY4LCAxOTcsIDY4LCA3MywgODYsIAorICAgIDY5LCA4MiwgNzEsIDY5LCA3OCwgNjcsIDY5LCAxMjgsIDY4LCA3MywgODQsIDg0LCAyMDcsIDY4LCA3MywgODMsIDg0LCA3OSwgCisgICAgODIsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY4LCA3MywgODMsIDg0LCA3MywgNzgsIDcxLCA4NSwgNzMsIDgzLCA3MiwgMTI4LCAKKyAgICA2OCwgNzMsIDgzLCA4NCwgNzMsIDc2LCA3NiwgMTI4LCA2OCwgNzMsIDgzLCA4MywgNzksIDc2LCA4NiwgNjksIDQ1LCA1MCwgCisgICAgMTI4LCA2OCwgNzMsIDgzLCA4MywgNzksIDc2LCA4NiwgNjksIDEyOCwgNjgsIDczLCA4MywgODAsIDg1LCA4NCwgNjksIAorICAgIDE5NiwgNjgsIDczLCA4MywgODAsIDY5LCA4MiwgODMsIDczLCA3OSwgNzgsIDEyOCwgNjgsIDczLCA4MywgNzUsIDEyOCwgCisgICAgNjgsIDczLCA4MywgNzMsIDc3LCA3OSwgODUsIDEyOCwgNjgsIDczLCA4MywgNzIsIDEyOCwgNjgsIDczLCA4MywgNjcsIDc5LCAKKyAgICA3OCwgODQsIDczLCA3OCwgODUsIDc5LCA4NSwgMjExLCA2OCwgNzMsIDgzLCAxOTUsIDY4LCA3MywgODMsIDY1LCA4MCwgODAsIAorICAgIDc5LCA3MywgNzgsIDg0LCA2OSwgMTk2LCA2OCwgNzMsIDgzLCA2NSwgNjYsIDc2LCA2OSwgMTk2LCA2OCwgNzMsIDgyLCA3MSwgCisgICAgMTkzLCA2OCwgNzMsIDgyLCA2OSwgNjcsIDg0LCA3NiwgMjE3LCA2OCwgNzMsIDgyLCA2OSwgNjcsIDg0LCA3MywgNzksIDc4LCAKKyAgICA2NSwgMjA0LCA2OCwgNzMsIDgyLCA2OSwgNjcsIDg0LCA3MywgNzksIDIwNiwgNjgsIDczLCA4MCwgODQsIDY5LCAxMjgsIAorICAgIDY4LCA3MywgODAsIDgwLCA2OSwgODIsIDEyOCwgNjgsIDczLCA4MCwgNzYsIDc5LCA4NSwgNzgsIDEyOCwgNjgsIDczLCA4MCwgCisgICAgNzYsIDczLCAxMjgsIDY4LCA3MywgODAsIDc2LCAyMDEsIDY4LCA3MywgNzgsIDcxLCA2NiwgNjUsIDIxMiwgNjgsIDczLCAKKyAgICAyMDYsIDY4LCA3MywgNzcsIDc3LCA3MywgNzgsIDcxLCAxMjgsIDY4LCA3MywgNzcsIDczLCA3OCwgODUsIDg0LCA3MywgNzksIAorICAgIDc4LCA0NSwgNTEsIDEyOCwgNjgsIDczLCA3NywgNzMsIDc4LCA4NSwgODQsIDczLCA3OSwgNzgsIDQ1LCA1MCwgMTI4LCA2OCwgCisgICAgNzMsIDc3LCA3MywgNzgsIDg1LCA4NCwgNzMsIDc5LCA3OCwgNDUsIDQ5LCAxMjgsIDY4LCA3MywgNzcsIDczLCA3OCwgNzMsIAorICAgIDgzLCA3MiwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNjgsIDczLCA3NywgNzMsIDY4LCA3MywgMTkzLCA2OCwgNzMsIDc3LCA2OSwgCisgICAgNzgsIDgzLCA3MywgNzksIDc4LCA2NSwgMjA0LCA2OCwgNzMsIDc3LCA2OSwgNzgsIDgzLCA3MywgNzksIDIwNiwgNjgsIDczLCAKKyAgICA3NywgNTAsIDEyOCwgNjgsIDczLCA3NywgMTc4LCA2OCwgNzMsIDc2LCAxMjgsIDY4LCA3MywgNzEsIDgyLCA2NSwgODAsIAorICAgIDcyLCAxMjgsIDY4LCA3MywgNzEsIDgyLCA2NSwgODAsIDIwMCwgNjgsIDczLCA3MSwgODIsIDY1LCA3NywgNzcsIDc5LCAKKyAgICAyMTEsIDY4LCA3MywgNzEsIDgyLCA2NSwgNzcsIDc3LCAxOTMsIDY4LCA3MywgNzEsIDgyLCA2NSwgMjA1LCA2OCwgNzMsIAorICAgIDcxLCA3OSwgODIsIDcxLCA3OSwgNzgsIDEyOCwgNjgsIDczLCA3MSwgNzksIDgyLCA3MSwgNzksIDIwNiwgNjgsIDczLCA3MSwgCisgICAgNzMsIDg0LCA4MywgMTI4LCA2OCwgNzMsIDcxLCA2NSwgNzcsIDc3LCA2NSwgMTI4LCA2OCwgNzMsIDcxLCAxOTMsIDY4LCAKKyAgICA3MywgNzAsIDg0LCA3OSwgNzEsIDcxLCA3OSwgMjExLCA2OCwgNzMsIDcwLCA3OSwgNzgsIDczLCA2NSwgODMsIDEyOCwgNjgsIAorICAgIDczLCA3MCwgNzAsIDczLCA2NywgODUsIDc2LCA4NCwgMjE3LCA2OCwgNzMsIDcwLCA3MCwgNzMsIDY3LCA4NSwgNzYsIDg0LCAKKyAgICA3MywgNjksIDgzLCAxMjgsIDY4LCA3MywgNzAsIDcwLCA2OSwgODIsIDY5LCA3OCwgODQsIDczLCA2NSwgNzYsIDEyOCwgNjgsIAorICAgIDczLCA3MCwgNzAsIDY5LCA4MiwgNjksIDc4LCA2NywgMTk3LCA2OCwgNzMsIDcwLCA2NSwgODQsIDEyOCwgNjgsIDczLCA2OSwgCisgICAgODMsIDczLCA4MywgMTI4LCA2OCwgNzMsIDY5LCA4MywgNzMsIDIxMSwgNjgsIDczLCA2OSwgODMsIDY5LCAyMDQsIDY4LCAKKyAgICA3MywgNjksIDgwLCAxMjgsIDY4LCA3MywgMTk3LCA2OCwgNzMsIDY2LCAxMjgsIDY4LCA3MywgNjUsIDg0LCA3OSwgNzgsIAorICAgIDc5LCAyMDYsIDY4LCA3MywgNjUsIDg0LCA3OSwgNzgsIDczLCA3NSwgMjAxLCA2OCwgNzMsIDY1LCA4MywgODQsIDc5LCA3NiwgCisgICAgMjAxLCA2OCwgNzMsIDY1LCA3NywgNzksIDc4LCA2OCwgODMsIDEyOCwgNjgsIDczLCA2NSwgNzcsIDc5LCA3OCwgNjgsIAorICAgIDEyOCwgNjgsIDczLCA2NSwgNzcsIDc5LCA3OCwgMTk2LCA2OCwgNzMsIDY1LCA3NywgNjksIDg0LCA2OSwgMjEwLCA2OCwgCisgICAgNzMsIDY1LCA3NiwgODksIDg0LCA3MywgNzUsIDY1LCAxMjgsIDY4LCA3MywgNjUsIDc2LCA4OSwgODQsIDczLCA3NSwgMTkzLCAKKyAgICA2OCwgNzMsIDY1LCA3NiwgNjksIDY3LCA4NCwgNDUsIDIwOCwgNjgsIDczLCA2NSwgNzEsIDc5LCA3OCwgNjUsIDc2LCAxMjgsIAorICAgIDY4LCA3MywgNjUsIDY5LCA4MiwgNjksIDgzLCA3MywgOTAsIDY5LCAxOTYsIDY4LCA3MywgNjUsIDY5LCA4MiwgNjksIDgzLCAKKyAgICA3MywgODMsIDQ1LCA4MiwgNzMsIDc4LCA3MSwgMTI4LCA2OCwgNzMsIDY1LCA2OSwgODIsIDY5LCA4MywgNzMsIDgzLCAxMjgsIAorICAgIDY4LCA3MywgNjUsIDY5LCA4MiwgNjksIDgzLCA3MywgMjExLCA2OCwgNzIsIDc5LCA4NSwgMTI4LCA2OCwgNzIsIDc5LCA3OSwgCisgICAgMTI4LCA2OCwgNzIsIDc5LCAxMjgsIDY4LCA3MiwgNzMsIDczLCAxMjgsIDY4LCA3MiwgNzIsIDg1LCAxMjgsIDY4LCA3MiwgCisgICAgNzIsIDc5LCA3OSwgMTI4LCA2OCwgNzIsIDcyLCA3OSwgMTI4LCA2OCwgNzIsIDcyLCA3MywgMTI4LCA2OCwgNzIsIDcyLCAKKyAgICA2OSwgNjksIDEyOCwgNjgsIDcyLCA3MiwgNjksIDEyOCwgNjgsIDcyLCA3MiwgNjUsIDEyOCwgNjgsIDcyLCA2OSwgNjksIAorICAgIDEyOCwgNjgsIDcyLCA2NSwgODIsIDc3LCA2NSwgMTI4LCA2OCwgNzIsIDY1LCA3NywgNjksIDY4LCA3MiwgMTI4LCA2OCwgCisgICAgNzIsIDY1LCA3NiwgNjksIDg0LCA3MiwgMTI4LCA2OCwgNzIsIDY1LCA3NiwgNjUsIDg0LCA3MiwgMTI4LCA2OCwgNzIsIDY1LCAKKyAgICA3NiwgMTI4LCA2OCwgNzIsIDY1LCA2OCwgNzIsIDY5LCAxMjgsIDY4LCA3MiwgNjUsIDY1LCA3NiwgODUsIDEyOCwgNjgsIAorICAgIDcyLCA2NSwgNjUsIDEyOCwgNjgsIDcyLCA2NSwgMTI4LCA2OCwgNjksIDkwLCAyMDAsIDY4LCA2OSwgODksIDg0LCA2OSwgCisgICAgODIsIDc5LCAyMTMsIDY4LCA2OSwgODksIDg0LCA2OSwgODIsIDc5LCAyMTEsIDY4LCA2OSwgODgsIDczLCA2NSwgMTI4LCAKKyAgICA2OCwgNjksIDg2LCA3MywgNjcsIDE5NywgNjgsIDY5LCA4NiwgNjksIDc2LCA3OSwgODAsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIAorICAgIDY4LCA2OSwgODUsIDc4LCA3MSwgMTI4LCA2OCwgNjksIDgzLCA3NSwgODQsIDc5LCAyMDgsIDY4LCA2OSwgODMsIDIwMywgCisgICAgNjgsIDY5LCA4MywgNzMsIDcxLCA3OCwgMTI4LCA2OCwgNjksIDgzLCA3MywgMTI4LCA2OCwgNjksIDgzLCA2OSwgODIsIDg0LCAKKyAgICAxMjgsIDY4LCA2OSwgODMsIDY5LCA4MiwgMjEyLCA2OCwgNjksIDgzLCA2OSwgODIsIDY5LCAyMTIsIDY4LCA2OSwgODMsIAorICAgIDY3LCA4MiwgNzMsIDgwLCA4NCwgNzMsIDc5LCAyMDYsIDY4LCA2OSwgODMsIDY3LCA2OSwgNzgsIDY4LCA3MywgNzgsIDE5OSwgCisgICAgNjgsIDY5LCA4MywgNjcsIDY5LCA3OCwgNjgsIDY5LCA4MiwgMTI4LCA2OCwgNjksIDgyLCA2OSwgODQsIDQ1LCA3MiwgNzMsIAorICAgIDY4LCA2OSwgODQsIDEyOCwgNjgsIDY5LCA4MiwgNjksIDg0LCAxMjgsIDY4LCA2OSwgODIsIDY5LCA3NiwgNzMsIDY3LCAKKyAgICAyMTIsIDY4LCA2OSwgODAsIDg0LCA3MiwgMTI4LCA2OCwgNjksIDgwLCA2NSwgODIsIDg0LCA4NSwgODIsIDY5LCAxMjgsIAorICAgIDY4LCA2OSwgODAsIDY1LCA4MiwgODQsIDc3LCA2OSwgNzgsIDIxMiwgNjgsIDY5LCA4MCwgNjUsIDgyLCA4NCwgNzMsIDc4LCAKKyAgICAxOTksIDY4LCA2OSwgNzgsIDg0LCA3MywgODMsIDg0LCA4MiwgMjE3LCA2OCwgNjksIDc4LCA4NCwgNjUsIDIwNCwgNjgsIAorICAgIDY5LCA3OCwgNzksIDc3LCA3MywgNzgsIDY1LCA4NCwgNzksIDgyLCAxMjgsIDY4LCA2OSwgNzgsIDc5LCA3NywgNzMsIDc4LCAKKyAgICA2NSwgODQsIDc5LCAyMTAsIDY4LCA2OSwgNzgsIDc4LCA2OSwgNzgsIDEyOCwgNjgsIDY5LCA3OCwgNzEsIDEyOCwgNjgsIAorICAgIDY5LCA3OCwgMTk3LCA2OCwgNjksIDc4LCA2NSwgODIsIDczLCA4NSwgMjExLCA2OCwgNjksIDc2LCA4NCwgNjUsIDEyOCwgCisgICAgNjgsIDY5LCA3NiwgODQsIDE5MywgNjgsIDY5LCA3NiwgODQsIDEyOCwgNjgsIDY5LCA3NiwgODAsIDcyLCA3MywgMTk1LCAKKyAgICA2OCwgNjksIDc2LCA3MywgODYsIDY5LCA4MiwgMjE3LCA2OCwgNjksIDc2LCA3MywgODYsIDY5LCA4MiwgNjUsIDc4LCA2NywgCisgICAgNjksIDEyOCwgNjgsIDY5LCA3NiwgNzMsIDc3LCA3MywgODQsIDY5LCA4MiwgMTI4LCA2OCwgNjksIDc2LCA3MywgNzcsIDczLCAKKyAgICA4NCwgNjksIDIxMCwgNjgsIDY5LCA3NiwgNzMsIDY3LCA3MywgNzksIDg1LCAyMTEsIDY4LCA2OSwgNzYsIDY5LCA4NCwgNzMsIAorICAgIDc5LCAyMDYsIDY4LCA2OSwgNzYsIDY5LCA4NCwgNjksIDEyOCwgNjgsIDY5LCA3NiwgNjksIDg0LCAxOTcsIDY4LCA2OSwgCisgICAgNzUsIDY1LCAxMjgsIDY4LCA2OSwgNzUsIDEyOCwgNjgsIDY5LCA3MywgMTI4LCA2OCwgNjksIDcyLCA3MywgMTI4LCA2OCwgCisgICAgNjksIDcxLCA4MiwgNjksIDY5LCA4MywgMTI4LCA2OCwgNjksIDcxLCA4MiwgNjksIDE5NywgNjgsIDY5LCA3MCwgNzMsIDc4LCAKKyAgICA3MywgODQsIDczLCA3OSwgNzgsIDEyOCwgNjgsIDY5LCA3MCwgNjksIDY3LCA4NCwgNzMsIDg2LCA2OSwgNzgsIDY5LCA4MywgCisgICAgMjExLCA2OCwgNjksIDY5LCA4MiwgMTI4LCA2OCwgNjksIDY5LCA4MCwgNzYsIDg5LCAxMjgsIDY4LCA2OSwgNjksIDc2LCAKKyAgICAxMjgsIDY4LCA2OSwgNjcsIDgyLCA2OSwgODMsIDY3LCA2OSwgNzgsIDY4LCA3OSwgMTI4LCA2OCwgNjksIDY3LCA4MiwgNjksIAorICAgIDY1LCA4MywgNjksIDEyOCwgNjgsIDY5LCA2NywgODIsIDY5LCA2NSwgODMsIDE5NywgNjgsIDY5LCA2NywgNzksIDgyLCA2NSwgCisgICAgODQsIDczLCA4NiwgMTk3LCA2OCwgNjksIDY3LCA3OSwgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2OCwgNjksIDY3LCAKKyAgICA3MywgODMsIDczLCA4NiwgNjksIDc4LCA2OSwgODMsIDgzLCAxMjgsIDY4LCA2OSwgNjcsIDczLCA3NywgNjUsIDIwNCwgNjgsIAorICAgIDY5LCA2NywgNzMsIDY4LCA4NSwgNzksIDg1LCAyMTEsIDY4LCA2OSwgNjcsIDY5LCA3NywgNjYsIDY5LCA4MiwgMTI4LCA2OCwgCisgICAgNjksIDY3LCA2NSwgODksIDY5LCA2OCwgMTI4LCA2OCwgNjksIDY2LCA3MywgMjEyLCA2OCwgNjksIDY1LCA4NCwgNzIsIAorICAgIDEyOCwgNjgsIDY5LCA2NSwgNjgsIDEyOCwgNjgsIDY4LCA4NywgNjUsIDEyOCwgNjgsIDY4LCA4NSwgODgsIDEyOCwgNjgsIAorICAgIDY4LCA4NSwgODQsIDEyOCwgNjgsIDY4LCA4NSwgODIsIDg4LCAxMjgsIDY4LCA2OCwgODUsIDgyLCAxMjgsIDY4LCA2OCwgCisgICAgODUsIDgwLCAxMjgsIDY4LCA2OCwgODUsIDc5LCA4OCwgMTI4LCA2OCwgNjgsIDg1LCA3OSwgODAsIDEyOCwgNjgsIDY4LCAKKyAgICA4NSwgNzksIDEyOCwgNjgsIDY4LCA4NSwgMTI4LCA2OCwgNjgsIDc5LCA4OCwgMTI4LCA2OCwgNjgsIDc5LCA4NCwgMTI4LCAKKyAgICA2OCwgNjgsIDc5LCA4MCwgMTI4LCA2OCwgNjgsIDc5LCA2NSwgMTI4LCA2OCwgNjgsIDczLCA4OCwgMTI4LCA2OCwgNjgsIAorICAgIDczLCA4NCwgMTI4LCA2OCwgNjgsIDczLCA4MCwgMTI4LCA2OCwgNjgsIDczLCA2OSwgODgsIDEyOCwgNjgsIDY4LCA3MywgCisgICAgNjksIDgwLCAxMjgsIDY4LCA2OCwgNzMsIDY5LCAxMjgsIDY4LCA2OCwgNzMsIDEyOCwgNjgsIDY4LCA3MiwgODUsIDEyOCwgCisgICAgNjgsIDY4LCA3MiwgNzksIDEyOCwgNjgsIDY4LCA3MiwgNjksIDY5LCAxMjgsIDY4LCA2OCwgNzIsIDY5LCAxMjgsIDY4LCAKKyAgICA2OCwgNzIsIDY1LCA2NSwgMTI4LCA2OCwgNjgsIDcyLCA2NSwgMTI4LCA2OCwgNjgsIDY5LCA4OCwgMTI4LCA2OCwgNjgsIAorICAgIDY5LCA4MCwgMTI4LCA2OCwgNjgsIDY5LCA2OSwgMTI4LCA2OCwgNjgsIDY5LCAxMjgsIDY4LCA2OCwgNjgsIDcyLCA2NSwgCisgICAgMTI4LCA2OCwgNjgsIDY4LCA2NSwgMTI4LCA2OCwgNjgsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjgsIDY4LCAKKyAgICA2NSwgODgsIDEyOCwgNjgsIDY4LCA2NSwgODQsIDEyOCwgNjgsIDY4LCA2NSwgODAsIDEyOCwgNjgsIDY4LCA2NSwgNzYsIAorICAgIDEyOCwgNjgsIDY4LCA2NSwgMjA0LCA2OCwgNjgsIDY1LCA3MiwgNjUsIDc2LCAxMjgsIDY4LCA2OCwgNjUsIDcyLCA2NSwgCisgICAgMjA0LCA2OCwgNjgsIDY1LCA2NSwgMTI4LCA2OCwgNjcsIDgzLCAxMjgsIDY4LCA2NywgNzIsIDY5LCAxMjgsIDY4LCA2NywgCisgICAgNTIsIDEyOCwgNjgsIDY3LCA1MSwgMTI4LCA2OCwgNjcsIDUwLCAxMjgsIDY4LCA2NywgNDksIDEyOCwgNjgsIDE5NCwgNjgsIAorICAgIDY1LCA4OSwgNDUsIDc4LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA2OCwgNjUsIDIxNywgNjgsIDY1LCA4NywgNjYsIDEyOCwgCisgICAgNjgsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDY4LCA2NSwgODYsIDczLCA2OCwgMTI4LCA2OCwgNjUsIDg0LCAKKyAgICAxOTcsIDY4LCA2NSwgODMsIDczLCA2NSwgMTI4LCA2OCwgNjUsIDgzLCA3MywgMTkzLCA2OCwgNjUsIDgzLCA3MiwgNjksIAorICAgIDE5NiwgNjgsIDY1LCA4MywgNzIsIDEyOCwgNjgsIDY1LCA4MywgMjAwLCA2OCwgNjUsIDgzLCA2OSwgNzMsIDY1LCAxMjgsIAorICAgIDY4LCA2NSwgODIsIDg0LCAxMjgsIDY4LCA2NSwgODIsIDc1LCA2OSwgNzgsIDczLCA3OCwgNzEsIDEyOCwgNjgsIDY1LCA4MiwgCisgICAgNzUsIDY5LCA3OCwgNzMsIDc4LCAxOTksIDY4LCA2NSwgODIsIDIwMywgNjgsIDY1LCA4MiwgNzEsIDY1LCAxMjgsIDY4LCAKKyAgICA2NSwgODIsIDY1LCA1MiwgMTI4LCA2OCwgNjUsIDgyLCA2NSwgNTEsIDEyOCwgNjgsIDY1LCA4MiwgMTI4LCA2OCwgNjUsIAorICAgIDgwLCA0NSwgODAsIDgyLCA2NSwgMjA1LCA2OCwgNjUsIDgwLCA0NSwgODAsIDczLCAyMDEsIDY4LCA2NSwgODAsIDQ1LCA3NywgCisgICAgODUsIDc5LCAyMTcsIDY4LCA2NSwgODAsIDQ1LCA2NiwgODUsIDc5LCAyMDYsIDY4LCA2NSwgODAsIDQ1LCA2NiwgNjksIAorICAgIDIwMSwgNjgsIDY1LCAyMDgsIDY4LCA2NSwgNzgsIDg0LCA2NSwgNzQsIDE5MywgNjgsIDY1LCA3OCwgNzEsIDc5LCAxMjgsIAorICAgIDY4LCA2NSwgNzgsIDcxLCAxMjgsIDY4LCA2NSwgNzgsIDE5OSwgNjgsIDY1LCA3OCwgNjgsIDY1LCAxMjgsIDY4LCA2NSwgCisgICAgNzgsIDY3LCA3MywgNzgsIDcxLCAxMjgsIDY4LCA2NSwgNzgsIDY3LCA2OSwgODIsIDEyOCwgNjgsIDY1LCA3NywgODAsIAorICAgIDEyOCwgNjgsIDY1LCA3NywgMjA4LCA2OCwgNjUsIDc3LCA3NywgNjUsIDg0LCA2NSwgNzgsIDEyOCwgNjgsIDY1LCA3NywgCisgICAgNzcsIDY1LCA4NCwgNjUsIDIwNiwgNjgsIDY1LCA3NywgNzcsIDY1LCAxMjgsIDY4LCA2NSwgNzcsIDc3LCAxOTMsIDY4LCAKKyAgICA2NSwgNzcsIDY1LCA4MiwgODUsIDEyOCwgNjgsIDY1LCA3NiwgNjksIDg0LCA3MiwgNDUsIDgyLCA2OSwgODMsIDcyLCAxMjgsIAorICAgIDY4LCA2NSwgNzYsIDY5LCA4NCwgNzIsIDEyOCwgNjgsIDY1LCA3NiwgNjksIDg0LCAxMjgsIDY4LCA2NSwgNzYsIDY5LCAKKyAgICAyMTIsIDY4LCA2NSwgNzYsIDY4LCA2NSwgMTI4LCA2OCwgNjUsIDc2LCA2NSwgODQsIDcyLCAxMjgsIDY4LCA2NSwgNzYsIAorICAgIDY1LCA4NCwgMjAwLCA2OCwgNjUsIDc2LCA2NSwgODQsIDEyOCwgNjgsIDY1LCA3MywgODIsIDEyOCwgNjgsIDY1LCA3MywgCisgICAgNzgsIDcxLCAxMjgsIDY4LCA2NSwgNzMsIDEyOCwgNjgsIDY1LCA3MiwgODksIDY1LCA2NSwgODUsIDgzLCA3MiwgNDUsIDUwLCAKKyAgICAxMjgsIDY4LCA2NSwgNzIsIDg5LCA2NSwgNjUsIDg1LCA4MywgNzIsIDEyOCwgNjgsIDY1LCA3MSwgODMsIDEyOCwgNjgsIAorICAgIDY1LCA3MSwgNzEsIDY5LCA4MiwgMTI4LCA2OCwgNjUsIDcxLCA3MSwgNjksIDIxMCwgNjgsIDY1LCA3MSwgNjksIDgzLCA3MiwgCisgICAgMTI4LCA2OCwgNjUsIDcxLCA2OSwgODMsIDIwMCwgNjgsIDY1LCA3MSwgNjYsIDY1LCA4MywgNzMsIDc4LCA3OCwgNjUsIAorICAgIDEyOCwgNjgsIDY1LCA3MSwgNjUsIDIxOCwgNjgsIDY1LCA3MSwgNjUsIDc2LCA3MSwgNjUsIDEyOCwgNjgsIDY1LCA3MSwgCisgICAgNTEsIDEyOCwgNjgsIDY1LCAxOTksIDY4LCA2NSwgNjksIDc4LCA3MSwgMTI4LCA2OCwgNjUsIDY5LCAxOTksIDY4LCA2NSwgCisgICAgNjgsIDEyOCwgNjgsIDY1LCAxOTYsIDY4LCA2NSwgNjUsIDgzLCA4NSwgMTI4LCA2OCwgNjUsIDY1LCA3NiwgNzMsIDEyOCwgCisgICAgNjgsIDY1LCA2NSwgNjgsIDcyLCA4NSwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNzIsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDcxLCAKKyAgICAxMjgsIDY4LCA0OCwgNTQsIDU1LCA3MCwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNjksIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIAorICAgIDY4LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA2NywgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNjYsIDEyOCwgNjgsIDQ4LCA1NCwgCisgICAgNTUsIDY1LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCAxMjgsIDY4LCA0OCwgNTQsIDU0LCAxMjgsIDY4LCA0OCwgNTQsIDUzLCAKKyAgICAxMjgsIDY4LCA0OCwgNTQsIDUyLCAxMjgsIDY4LCA0OCwgNTQsIDUxLCAxMjgsIDY4LCA0OCwgNTQsIDUwLCAxMjgsIDY4LCAKKyAgICA0OCwgNTQsIDQ5LCAxMjgsIDY4LCA0OCwgNTQsIDQ4LCAxMjgsIDY4LCA0OCwgNTMsIDU3LCAxMjgsIDY4LCA0OCwgNTMsIAorICAgIDU2LCAxMjgsIDY4LCA0OCwgNTMsIDU1LCAxMjgsIDY4LCA0OCwgNTMsIDU0LCAxMjgsIDY4LCA0OCwgNTMsIDUzLCAxMjgsIAorICAgIDY4LCA0OCwgNTMsIDUyLCA2NSwgMTI4LCA2OCwgNDgsIDUzLCA1MiwgMTI4LCA2OCwgNDgsIDUzLCA1MSwgMTI4LCA2OCwgCisgICAgNDgsIDUzLCA1MCwgNjUsIDEyOCwgNjgsIDQ4LCA1MywgNTAsIDEyOCwgNjgsIDQ4LCA1MywgNDksIDEyOCwgNjgsIDQ4LCAKKyAgICA1MywgNDgsIDczLCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA3MiwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNzEsIDEyOCwgNjgsIAorICAgIDQ4LCA1MywgNDgsIDcwLCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA2OSwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNjgsIDEyOCwgCisgICAgNjgsIDQ4LCA1MywgNDgsIDY3LCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA2NiwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNjUsIAorICAgIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDEyOCwgNjgsIDQ4LCA1MiwgNTcsIDEyOCwgNjgsIDQ4LCA1MiwgNTYsIDY1LCAxMjgsIAorICAgIDY4LCA0OCwgNTIsIDU2LCAxMjgsIDY4LCA0OCwgNTIsIDU1LCAxMjgsIDY4LCA0OCwgNTIsIDU0LCA2NSwgMTI4LCA2OCwgCisgICAgNDgsIDUyLCA1NCwgMTI4LCA2OCwgNDgsIDUyLCA1MywgMTI4LCA2OCwgNDgsIDUyLCA1MiwgMTI4LCA2OCwgNDgsIDUyLCAKKyAgICA1MSwgMTI4LCA2OCwgNDgsIDUyLCA1MCwgMTI4LCA2OCwgNDgsIDUyLCA0OSwgMTI4LCA2OCwgNDgsIDUyLCA0OCwgMTI4LCAKKyAgICA2OCwgNDgsIDUxLCA1NywgMTI4LCA2OCwgNDgsIDUxLCA1NiwgMTI4LCA2OCwgNDgsIDUxLCA1NSwgMTI4LCA2OCwgNDgsIAorICAgIDUxLCA1NCwgMTI4LCA2OCwgNDgsIDUxLCA1MywgMTI4LCA2OCwgNDgsIDUxLCA1MiwgNjUsIDEyOCwgNjgsIDQ4LCA1MSwgCisgICAgNTIsIDEyOCwgNjgsIDQ4LCA1MSwgNTEsIDEyOCwgNjgsIDQ4LCA1MSwgNTAsIDEyOCwgNjgsIDQ4LCA1MSwgNDksIDY1LCAKKyAgICAxMjgsIDY4LCA0OCwgNTEsIDQ5LCAxMjgsIDY4LCA0OCwgNTEsIDQ4LCAxMjgsIDY4LCA0OCwgNTAsIDU3LCAxMjgsIDY4LCAKKyAgICA0OCwgNTAsIDU2LCAxMjgsIDY4LCA0OCwgNTAsIDU1LCA2NSwgMTI4LCA2OCwgNDgsIDUwLCA1NSwgMTI4LCA2OCwgNDgsIAorICAgIDUwLCA1NCwgMTI4LCA2OCwgNDgsIDUwLCA1MywgMTI4LCA2OCwgNDgsIDUwLCA1MiwgMTI4LCA2OCwgNDgsIDUwLCA1MSwgCisgICAgMTI4LCA2OCwgNDgsIDUwLCA1MCwgMTI4LCA2OCwgNDgsIDUwLCA0OSwgMTI4LCA2OCwgNDgsIDUwLCA0OCwgMTI4LCA2OCwgCisgICAgNDgsIDQ5LCA1NywgMTI4LCA2OCwgNDgsIDQ5LCA1NiwgMTI4LCA2OCwgNDgsIDQ5LCA1NSwgMTI4LCA2OCwgNDgsIDQ5LCAKKyAgICA1NCwgMTI4LCA2OCwgNDgsIDQ5LCA1MywgMTI4LCA2OCwgNDgsIDQ5LCA1MiwgMTI4LCA2OCwgNDgsIDQ5LCA1MSwgMTI4LCAKKyAgICA2OCwgNDgsIDQ5LCA1MCwgMTI4LCA2OCwgNDgsIDQ5LCA0OSwgMTI4LCA2OCwgNDgsIDQ5LCA0OCwgMTI4LCA2OCwgNDgsIAorICAgIDQ4LCA1NywgMTI4LCA2OCwgNDgsIDQ4LCA1NiwgNjUsIDEyOCwgNjgsIDQ4LCA0OCwgNTYsIDEyOCwgNjgsIDQ4LCA0OCwgCisgICAgNTUsIDEyOCwgNjgsIDQ4LCA0OCwgNTQsIDEyOCwgNjgsIDQ4LCA0OCwgNTMsIDEyOCwgNjgsIDQ4LCA0OCwgNTIsIDEyOCwgCisgICAgNjgsIDQ4LCA0OCwgNTEsIDEyOCwgNjgsIDQ4LCA0OCwgNTAsIDEyOCwgNjgsIDQ4LCA0OCwgNDksIDEyOCwgNjcsIDg5LCAKKyAgICA4OCwgMTI4LCA2NywgODksIDg0LCAxMjgsIDY3LCA4OSwgODIsIDg4LCAxMjgsIDY3LCA4OSwgODIsIDY5LCA3OCwgNjUsIAorICAgIDczLCAxOTUsIDY3LCA4OSwgODIsIDEyOCwgNjcsIDg5LCA4MCwgODIsIDczLCA3OSwgMjEyLCA2NywgODksIDgwLCA2OSwgCisgICAgODIsIDg1LCA4MywgMTI4LCA2NywgODksIDgwLCAxMjgsIDY3LCA4OSwgNzYsIDczLCA3OCwgNjgsIDgyLCA3MywgNjcsIDczLCAKKyAgICA4NCwgODksIDEyOCwgNjcsIDg5LCA2NywgNzYsIDc5LCA3OCwgNjksIDEyOCwgNjcsIDg5LCA2NSwgODksIDEyOCwgNjcsIAorICAgIDg5LCA2NSwgODcsIDEyOCwgNjcsIDg5LCA2NSwgMTI4LCA2NywgODcsIDc5LCA3OSwgMTI4LCA2NywgODcsIDc5LCAxMjgsIAorICAgIDY3LCA4NywgNzMsIDczLCAxMjgsIDY3LCA4NywgNzMsIDEyOCwgNjcsIDg3LCA2OSwgNzksIDgyLCA4NCwgNzIsIDEyOCwgCisgICAgNjcsIDg3LCA2OSwgMTI4LCA2NywgODcsIDY1LCA2NSwgMTI4LCA2NywgODUsIDg4LCAxMjgsIDY3LCA4NSwgODUsIDEyOCwgCisgICAgNjcsIDg1LCAyMTIsIDY3LCA4NSwgODMsIDg0LCA3OSwgNzcsIDgzLCAxMjgsIDY3LCA4NSwgODMsIDg0LCA3OSwgNzcsIDY5LCAKKyAgICAyMTAsIDY3LCA4NSwgODMsIDg0LCA2NSwgODIsIDY4LCAxMjgsIDY3LCA4NSwgODMsIDgwLCAxMjgsIDY3LCA4NSwgODIsIAorICAgIDg4LCAxMjgsIDY3LCA4NSwgODIsIDg2LCA3MywgNzgsIDE5OSwgNjcsIDg1LCA4MiwgODYsIDY5LCA2OCwgMTI4LCA2NywgCisgICAgODUsIDgyLCA4NiwgNjksIDE5NiwgNjcsIDg1LCA4MiwgODYsIDY5LCAxMjgsIDY3LCA4NSwgODIsIDg2LCAxOTcsIDY3LCAKKyAgICA4NSwgODIsIDgzLCA3MywgODYsIDE5NywgNjcsIDg1LCA4MiwgODIsIDIxNywgNjcsIDg1LCA4MiwgODIsIDY5LCA3OCwgODQsIAorICAgIDEyOCwgNjcsIDg1LCA4MiwgODIsIDY5LCA3OCwgMjEyLCA2NywgODUsIDgyLCA3NiwgMjE3LCA2NywgODUsIDgyLCA3NiwgCisgICAgMTI4LCA2NywgODUsIDgyLCAxMjgsIDY3LCA4NSwgODAsIDgwLCA2OSwgNjgsIDEyOCwgNjcsIDg1LCA4MCwgODAsIDY5LCAKKyAgICAxOTYsIDY3LCA4NSwgNzksIDg4LCAxMjgsIDY3LCA4NSwgNzksIDgwLCAxMjgsIDY3LCA4NSwgNzksIDEyOCwgNjcsIDg1LCAKKyAgICAyMDUsIDY3LCA4NSwgNjcsIDg1LCA3NywgNjYsIDY5LCA4MiwgMTI4LCA2NywgODUsIDY2LCA2OSwgNjgsIDEyOCwgNjcsIAorICAgIDg1LCA2NiwgMTk3LCA2NywgODUsIDY1LCA4NCwgODIsIDczLCA3NiwgNzYsIDc5LCAxMjgsIDY3LCA4NSwgNjUsIDg0LCA4MiwgCisgICAgNzMsIDc2LCA3NiwgMjA3LCA2NywgODUsIDY1LCAyMDUsIDY3LCA4NSwgMTI4LCA2NywgODMsIDczLCAxMjgsIDY3LCA4MiwgCisgICAgODksIDgzLCA4NCwgNjUsIDIwNCwgNjcsIDgyLCA4OSwgODAsIDg0LCA3OSwgNzEsIDgyLCA2NSwgNzcsIDc3LCA3MywgMTk1LCAKKyAgICA2NywgODIsIDg5LCA3MywgNzgsIDE5OSwgNjcsIDgyLCA4NSwgOTAsIDY5LCA3MywgODIsIDIwNywgNjcsIDgyLCA4NSwgNjcsIAorICAgIDczLCA3MCwgNzksIDgyLCAyMDUsIDY3LCA4MiwgODUsIDY3LCA3MywgNjYsIDc2LCA2OSwgNDUsIDUzLCAxMjgsIDY3LCA4MiwgCisgICAgODUsIDY3LCA3MywgNjYsIDc2LCA2OSwgNDUsIDUyLCAxMjgsIDY3LCA4MiwgODUsIDY3LCA3MywgNjYsIDc2LCA2OSwgNDUsIAorICAgIDUxLCAxMjgsIDY3LCA4MiwgODUsIDY3LCA3MywgNjYsIDc2LCA2OSwgNDUsIDUwLCAxMjgsIDY3LCA4MiwgODUsIDY3LCA3MywgCisgICAgNjYsIDc2LCA2OSwgMTI4LCA2NywgODIsIDc5LCA4NywgNzgsIDEyOCwgNjcsIDgyLCA3OSwgODMsIDgzLCA3MywgNzgsIDcxLCAKKyAgICAxMjgsIDY3LCA4MiwgNzksIDgzLCA4MywgNzMsIDc4LCAxOTksIDY3LCA4MiwgNzksIDgzLCA4MywgNzIsIDY1LCA4NCwgNjcsIAorICAgIDIwMCwgNjcsIDgyLCA3OSwgODMsIDgzLCA2OSwgNjgsIDQ1LCA4NCwgNjUsIDczLCA3NiwgMTI4LCA2NywgODIsIDc5LCA4MywgCisgICAgODMsIDY5LCA2OCwgMTI4LCA2NywgODIsIDc5LCA4MywgODMsIDY5LCAxOTYsIDY3LCA4MiwgNzksIDgzLCA4MywgNjYsIDc5LCAKKyAgICA3OCwgNjksIDgzLCAxMjgsIDY3LCA4MiwgNzksIDgzLCA4MywgMTI4LCA2NywgODIsIDc5LCA4MywgMjExLCA2NywgODIsIAorICAgIDc5LCA4MCwgMTI4LCA2NywgODIsIDc5LCA3MywgODgsIDEyOCwgNjcsIDgyLCA3OSwgNzMsIDgzLCA4MywgNjUsIDc4LCA4NCwgCisgICAgMTI4LCA2NywgODIsIDc5LCA2NywgODUsIDIxMSwgNjcsIDgyLCA3OSwgNjcsIDc5LCA2OCwgNzMsIDc2LCA2OSwgMTI4LCAKKyAgICA2NywgODIsIDczLCA2NywgNzUsIDY5LCAyMTIsIDY3LCA4MiwgNjksIDgzLCA2NywgNjksIDc4LCA4NCwgODMsIDEyOCwgNjcsIAorICAgIDgyLCA2OSwgODMsIDY3LCA2OSwgNzgsIDg0LCAxMjgsIDY3LCA4MiwgNjksIDgzLCA2NywgNjksIDc4LCAyMTIsIDY3LCA4MiwgCisgICAgNjksIDY4LCA3MywgMjEyLCA2NywgODIsIDY5LCA2NSwgODQsIDczLCA4NiwgMTk3LCA2NywgODIsIDY5LCA2NSwgNzcsIAorICAgIDEyOCwgNjcsIDgyLCA2NSwgODksIDc5LCA3OCwgMTI4LCA2NywgODIsIDY1LCA2NywgNzUsIDY5LCA4MiwgMTI4LCA2NywgCisgICAgODIsIDY1LCA2NiwgMTI4LCA2NywgODIsIDEyOCwgNjcsIDc5LCA4OCwgMTI4LCA2NywgNzksIDg3LCA2NiwgNzksIDIxNywgCisgICAgNjcsIDc5LCA4NywgMTI4LCA2NywgNzksIDIxNSwgNjcsIDc5LCA4NiwgNjksIDgyLCAxMjgsIDY3LCA3OSwgODUsIDgwLCAKKyAgICA3NiwgMTk3LCA2NywgNzksIDg1LCA3OCwgODQsIDczLCA3OCwgMTk5LCA2NywgNzksIDg1LCA3OCwgODQsIDY5LCA4MiwgODMsIAorICAgIDczLCA3OCwgNzUsIDEyOCwgNjcsIDc5LCA4NSwgNzgsIDg0LCA2OSwgODIsIDY2LCA3OSwgODIsIDY5LCAxMjgsIDY3LCA3OSwgCisgICAgODUsIDc4LCA2NywgNzMsIDIwNCwgNjcsIDc5LCA4NSwgNjcsIDIwMCwgNjcsIDc5LCA4NCwgMTI4LCA2NywgNzksIDgyLCAKKyAgICA4MiwgNjksIDgzLCA4MCwgNzksIDc4LCA2OCwgMjExLCA2NywgNzksIDgyLCA4MiwgNjksIDY3LCA4NCwgMTI4LCA2NywgNzksIAorICAgIDgyLCA4MCwgODMsIDY5LCAxMjgsIDY3LCA3OSwgODIsIDgwLCA3OSwgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgCisgICAgNzksIDgyLCA3OSwgNzgsIDczLCA4MywgMTI4LCA2NywgNzksIDgyLCA3OCwgNjksIDgyLCA4MywgMTI4LCA2NywgNzksIDgyLCAKKyAgICA3OCwgNjksIDgyLCAxMjgsIDY3LCA3OSwgODIsIDc4LCA2OSwgMjEwLCA2NywgNzksIDgyLCA3NSwgMTI4LCA2NywgNzksIAorICAgIDgwLCA4OSwgODIsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDY3LCA3OSwgODAsIDg5LCA4MiwgNzMsIDcxLCA3MiwgMjEyLCA2NywgCisgICAgNzksIDgwLCA4OSwgMTI4LCA2NywgNzksIDgwLCA4MiwgNzksIDY4LCA4NSwgNjcsIDg0LCAxMjgsIDY3LCA3OSwgODAsIDgwLCAKKyAgICA2OSwgODIsIDQ1LCA1MCwgMTI4LCA2NywgNzksIDgwLCA4MCwgNjksIDgyLCAxMjgsIDY3LCA3OSwgODAsIDEyOCwgNjcsIAorICAgIDc5LCA3OSwgNzYsIDEyOCwgNjcsIDc5LCA3OSwgNzUsIDczLCA3OCwgNzEsIDEyOCwgNjcsIDc5LCA3OSwgNzUsIDczLCA2OSwgCisgICAgMTI4LCA2NywgNzksIDc5LCA3NSwgNjksIDE5NiwgNjcsIDc5LCA3OSwgMTI4LCA2NywgNzksIDc4LCA4NiwgNjksIDgyLCAKKyAgICA3MSwgNzMsIDc4LCAxOTksIDY3LCA3OSwgNzgsIDg2LCA2OSwgNzgsIDczLCA2OSwgNzgsIDY3LCAxOTcsIDY3LCA3OSwgNzgsIAorICAgIDg0LCA4MiwgNzksIDc2LCAxMjgsIDY3LCA3OSwgNzgsIDg0LCA4MiwgNzksIDIwNCwgNjcsIDc5LCA3OCwgODQsIDgyLCA2NSwgCisgICAgODIsIDczLCA2OSwgODQsIDg5LCAxMjgsIDY3LCA3OSwgNzgsIDg0LCA4MiwgNjUsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCAKKyAgICA2NywgNzksIDc4LCA4NCwgNzksIDg1LCA4MiwgNjksIDE5NiwgNjcsIDc5LCA3OCwgODQsIDc5LCA4NSwgMjEwLCA2NywgNzksIAorICAgIDc4LCA4NCwgNzMsIDc4LCA4NSwgNzMsIDc4LCAxOTksIDY3LCA3OSwgNzgsIDg0LCA3MywgNzgsIDg1LCA2NSwgODQsIDczLCAKKyAgICA3OSwgMjA2LCA2NywgNzksIDc4LCA4NCwgNjksIDc4LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc4LCA4NCwgNjksIAorICAgIDc3LCA4MCwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc4LCA4NCwgNjUsIDczLCA3OCwgMjExLCA2NywgCisgICAgNzksIDc4LCA4NCwgNjUsIDczLCA3OCwgNzMsIDc4LCAxOTksIDY3LCA3OSwgNzgsIDg0LCA2NSwgNzMsIDIwNiwgNjcsIDc5LCAKKyAgICA3OCwgODQsIDY1LCA2NywgODQsIDEyOCwgNjcsIDc5LCA3OCwgODMsIDg0LCA4MiwgODUsIDY3LCA4NCwgNzMsIDc5LCA3OCwgCisgICAgMTI4LCA2NywgNzksIDc4LCA4MywgODQsIDgyLCA4NSwgNjcsIDg0LCA3MywgNzksIDIwNiwgNjcsIDc5LCA3OCwgODMsIDg0LCAKKyAgICA2NSwgNzgsIDg0LCAxMjgsIDY3LCA3OSwgNzgsIDgzLCA4NCwgNjUsIDc4LCAyMTIsIDY3LCA3OSwgNzgsIDgzLCA4NCwgNjUsIAorICAgIDc4LCA2NywgODksIDEyOCwgNjcsIDc5LCA3OCwgODMsIDY5LCA2NywgODUsIDg0LCA3MywgODYsIDE5NywgNjcsIDc5LCA3OCwgCisgICAgNzQsIDg1LCA3OCwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzgsIDc0LCA4NSwgNzEsIDY1LCA4NCwgMTk3LCAKKyAgICA2NywgNzksIDc4LCA3NCwgNzksIDczLCA3OCwgNzMsIDc4LCAxOTksIDY3LCA3OSwgNzgsIDc0LCA3OSwgNzMsIDc4LCA2OSwgCisgICAgNjgsIDEyOCwgNjcsIDc5LCA3OCwgNzQsIDc5LCA3MywgNzgsIDY5LCAxOTYsIDY3LCA3OSwgNzgsIDczLCA2NywgNjUsIAorICAgIDIwNCwgNjcsIDc5LCA3OCwgNzEsIDgyLCA4NSwgNjksIDc4LCAyMTIsIDY3LCA3OSwgNzgsIDcxLCA4MiwgNjUsIDg0LCA4NSwgCisgICAgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc4LCA3MCwgODUsIDgzLCA2OSwgMTk2LCA2NywgNzksIDc4LCAKKyAgICA3MCwgNzksIDg1LCA3OCwgNjgsIDY5LCAxOTYsIDY3LCA3OSwgNzgsIDcwLCA3NiwgNzMsIDY3LCA4NCwgMTI4LCA2NywgNzksIAorICAgIDc4LCA3MCwgNjksIDg0LCA4NCwgMjAxLCA2NywgNzksIDc4LCA2NywgNjUsIDg2LCA2OSwgNDUsIDgzLCA3MywgNjgsIDY5LCAKKyAgICAxOTYsIDY3LCA3OSwgNzgsIDY3LCA2NSwgODYsIDY5LCA0NSwgODAsIDc5LCA3MywgNzgsIDg0LCA2OSwgMTk2LCA2NywgNzksIAorICAgIDc3LCA4MCwgODUsIDg0LCA2OSwgODIsIDgzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA4NSwgODQsIDY5LCA4MiwgMTI4LCA2NywgCisgICAgNzksIDc3LCA4MCwgODIsIDY5LCA4MywgODMsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDgyLCA2OSwgODMsIAorICAgIDgzLCA2OSwgMTk2LCA2NywgNzksIDc3LCA4MCwgNzksIDgzLCA3MywgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3NywgCisgICAgODAsIDc5LCA4MywgNzMsIDg0LCA3MywgNzksIDIwNiwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU1LCA1MywgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MywgNTIsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MywgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MywgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDU1LCA1MywgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MywgCisgICAgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MiwgNTcsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MiwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDU1LCA1MiwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU1LCA1MiwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MiwgNTMsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MiwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MiwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDU1LCA1MiwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MiwgCisgICAgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MiwgNDgsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MSwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDU1LCA1MSwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU1LCA1MSwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MSwgNTQsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MSwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MSwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDU1LCA1MSwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MSwgCisgICAgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MSwgNDksIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MSwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDU1LCA1MCwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU1LCA1MCwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MCwgNTUsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MCwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MCwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDU1LCA1MCwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MCwgCisgICAgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MCwgNTAsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA1MCwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDU1LCA1MCwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU1LCA0OSwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA0OSwgNTYsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA0OSwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA0OSwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDU1LCA0OSwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA0OSwgCisgICAgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA0OSwgNTEsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA0OSwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDU1LCA0OSwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU1LCA0OSwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA0OCwgNTcsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA0OCwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA0OCwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDU1LCA0OCwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA0OCwgCisgICAgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA0OCwgNTIsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA0OCwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDU1LCA0OCwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU1LCA0OCwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU1LCA0OCwgNDgsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NywgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NywgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDU0LCA1NywgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NywgCisgICAgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NywgNTMsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NywgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDU0LCA1NywgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU0LCA1NywgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NywgNDksIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NywgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NiwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDU0LCA1NiwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NiwgCisgICAgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NiwgNTQsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NiwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDU0LCA1NiwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU0LCA1NiwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NiwgNTAsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NiwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NiwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDU0LCA1NSwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NSwgCisgICAgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NSwgNTUsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NSwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDU0LCA1NSwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU0LCA1NSwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NSwgNTEsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NSwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NSwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDU0LCA1NSwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NCwgCisgICAgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NCwgNTYsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NCwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDU0LCA1NCwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU0LCA1NCwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NCwgNTIsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NCwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NCwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDU0LCA1NCwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1NCwgCisgICAgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MywgNTcsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MywgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDU0LCA1MywgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU0LCA1MywgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MywgNTMsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MywgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MywgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDU0LCA1MywgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MywgCisgICAgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MywgNDgsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MiwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDU0LCA1MiwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU0LCA1MiwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MiwgNTQsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MiwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MiwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDU0LCA1MiwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MiwgCisgICAgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MiwgNDksIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MiwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDU0LCA1MSwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU0LCA1MSwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MSwgNTUsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MSwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MSwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDU0LCA1MSwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MSwgCisgICAgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MSwgNTAsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MSwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDU0LCA1MSwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU0LCA1MCwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MCwgNTYsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MCwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MCwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDU0LCA1MCwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MCwgCisgICAgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MCwgNTEsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA1MCwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDU0LCA1MCwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU0LCA1MCwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA0OSwgNTcsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA0OSwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA0OSwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDU0LCA0OSwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA0OSwgCisgICAgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA0OSwgNTIsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA0OSwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDU0LCA0OSwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU0LCA0OSwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA0OSwgNDgsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA0OCwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA0OCwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDU0LCA0OCwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA0OCwgCisgICAgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA0OCwgNTMsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA0OCwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDU0LCA0OCwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDU0LCA0OCwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA0OCwgNDksIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDU0LCA0OCwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NywgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUzLCA1NywgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NywgCisgICAgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NywgNTQsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NywgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUzLCA1NywgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUzLCA1NywgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NywgNTAsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NywgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NywgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUzLCA1NiwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NiwgCisgICAgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NiwgNTUsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NiwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUzLCA1NiwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUzLCA1NiwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NiwgNTEsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NiwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NiwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUzLCA1NiwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NSwgCisgICAgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NSwgNTYsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NSwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUzLCA1NSwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUzLCA1NSwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NSwgNTIsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NSwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NSwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUzLCA1NSwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NSwgCisgICAgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NCwgNTcsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NCwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUzLCA1NCwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUzLCA1NCwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NCwgNTMsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NCwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NCwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUzLCA1NCwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NCwgCisgICAgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1NCwgNDgsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MywgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUzLCA1MywgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUzLCA1MywgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MywgNTQsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MywgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MywgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUzLCA1MywgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MywgCisgICAgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MywgNDksIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MywgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUzLCA1MiwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUzLCA1MiwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MiwgNTUsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MiwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MiwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUzLCA1MiwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MiwgCisgICAgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MiwgNTAsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MiwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUzLCA1MiwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUzLCA1MSwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MSwgNTYsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MSwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MSwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUzLCA1MSwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MSwgCisgICAgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MSwgNTEsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MSwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUzLCA1MSwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUzLCA1MSwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MCwgNTcsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MCwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MCwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUzLCA1MCwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MCwgCisgICAgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MCwgNTIsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MCwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUzLCA1MCwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUzLCA1MCwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA1MCwgNDgsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA0OSwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA0OSwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUzLCA0OSwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA0OSwgCisgICAgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA0OSwgNTMsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA0OSwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUzLCA0OSwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUzLCA0OSwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA0OSwgNDksIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA0OSwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA0OCwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUzLCA0OCwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA0OCwgCisgICAgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA0OCwgNTQsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA0OCwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUzLCA0OCwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUzLCA0OCwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA0OCwgNTAsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA0OCwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUzLCA0OCwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUyLCA1NywgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NywgCisgICAgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NywgNTUsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NywgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUyLCA1NywgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUyLCA1NywgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NywgNTEsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NywgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NywgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUyLCA1NywgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NiwgCisgICAgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NiwgNTYsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NiwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUyLCA1NiwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUyLCA1NiwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NiwgNTIsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NiwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NiwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUyLCA1NiwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NiwgCisgICAgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NSwgNTcsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NSwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUyLCA1NSwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUyLCA1NSwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NSwgNTMsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NSwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NSwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUyLCA1NSwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NSwgCisgICAgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NSwgNDgsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NCwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUyLCA1NCwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUyLCA1NCwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NCwgNTQsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NCwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NCwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUyLCA1NCwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NCwgCisgICAgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NCwgNDksIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1NCwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUyLCA1MywgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUyLCA1MywgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MywgNTUsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MywgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MywgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUyLCA1MywgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MywgCisgICAgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MywgNTAsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MywgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUyLCA1MywgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUyLCA1MiwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MiwgNTYsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MiwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MiwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUyLCA1MiwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MiwgCisgICAgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MiwgNTEsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MiwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUyLCA1MiwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUyLCA1MiwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MSwgNTcsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MSwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MSwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUyLCA1MSwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MSwgCisgICAgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MSwgNTIsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MSwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUyLCA1MSwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUyLCA1MSwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MSwgNDgsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MCwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MCwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUyLCA1MCwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MCwgCisgICAgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MCwgNTMsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MCwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUyLCA1MCwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUyLCA1MCwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MCwgNDksIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA1MCwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA0OSwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUyLCA0OSwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA0OSwgCisgICAgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA0OSwgNTQsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA0OSwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUyLCA0OSwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUyLCA0OSwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA0OSwgNTAsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA0OSwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA0OSwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUyLCA0OCwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA0OCwgCisgICAgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA0OCwgNTUsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA0OCwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUyLCA0OCwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUyLCA0OCwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA0OCwgNTEsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA0OCwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUyLCA0OCwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUyLCA0OCwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NywgCisgICAgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NywgNTYsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NywgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUxLCA1NywgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUxLCA1NywgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NywgNTIsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NywgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NywgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUxLCA1NywgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NywgCisgICAgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NiwgNTcsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NiwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUxLCA1NiwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUxLCA1NiwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NiwgNTMsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NiwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NiwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUxLCA1NiwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NiwgCisgICAgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NiwgNDgsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NSwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUxLCA1NSwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUxLCA1NSwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NSwgNTQsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NSwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NSwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUxLCA1NSwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NSwgCisgICAgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NSwgNDksIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NSwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUxLCA1NCwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUxLCA1NCwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NCwgNTUsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NCwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NCwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUxLCA1NCwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NCwgCisgICAgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NCwgNTAsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1NCwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUxLCA1NCwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUxLCA1MywgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MywgNTYsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MywgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MywgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUxLCA1MywgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MywgCisgICAgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MywgNTEsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MywgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUxLCA1MywgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUxLCA1MywgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MiwgNTcsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MiwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MiwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUxLCA1MiwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MiwgCisgICAgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MiwgNTIsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MiwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUxLCA1MiwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUxLCA1MiwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MiwgNDgsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MSwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MSwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUxLCA1MSwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MSwgCisgICAgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MSwgNTMsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MSwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUxLCA1MSwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUxLCA1MSwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MSwgNDksIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MSwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MCwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUxLCA1MCwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MCwgCisgICAgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MCwgNTQsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MCwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUxLCA1MCwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUxLCA1MCwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MCwgNTAsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MCwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA1MCwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUxLCA0OSwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA0OSwgCisgICAgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA0OSwgNTUsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA0OSwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUxLCA0OSwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUxLCA0OSwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA0OSwgNTEsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA0OSwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA0OSwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUxLCA0OSwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA0OCwgCisgICAgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA0OCwgNTYsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA0OCwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUxLCA0OCwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUxLCA0OCwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA0OCwgNTIsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA0OCwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA0OCwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUxLCA0OCwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUxLCA0OCwgCisgICAgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NywgNTcsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NywgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUwLCA1NywgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUwLCA1NywgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NywgNTMsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NywgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NywgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUwLCA1NywgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NywgCisgICAgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NywgNDgsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NiwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUwLCA1NiwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUwLCA1NiwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NiwgNTQsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NiwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NiwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUwLCA1NiwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NiwgCisgICAgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NiwgNDksIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NiwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUwLCA1NSwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUwLCA1NSwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NSwgNTUsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NSwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NSwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUwLCA1NSwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NSwgCisgICAgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NSwgNTAsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NSwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUwLCA1NSwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUwLCA1NCwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NCwgNTYsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NCwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NCwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUwLCA1NCwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NCwgCisgICAgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NCwgNTEsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1NCwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUwLCA1NCwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUwLCA1NCwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MywgNTcsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MywgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MywgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUwLCA1MywgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MywgCisgICAgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MywgNTIsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MywgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUwLCA1MywgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUwLCA1MywgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MywgNDgsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MiwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MiwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUwLCA1MiwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MiwgCisgICAgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MiwgNTMsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MiwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUwLCA1MiwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUwLCA1MiwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MiwgNDksIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MiwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MSwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUwLCA1MSwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MSwgCisgICAgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MSwgNTQsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MSwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUwLCA1MSwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUwLCA1MSwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MSwgNTAsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MSwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MSwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUwLCA1MCwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MCwgCisgICAgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MCwgNTUsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MCwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUwLCA1MCwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUwLCA1MCwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MCwgNTEsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MCwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA1MCwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUwLCA1MCwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA0OSwgCisgICAgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA0OSwgNTYsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA0OSwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUwLCA0OSwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUwLCA0OSwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA0OSwgNTIsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA0OSwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA0OSwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUwLCA0OSwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA0OSwgCisgICAgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA0OCwgNTcsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA0OCwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDUwLCA0OCwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDUwLCA0OCwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA0OCwgNTMsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA0OCwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA0OCwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDUwLCA0OCwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA0OCwgCisgICAgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDUwLCA0OCwgNDgsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NywgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NywgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ5LCA1NywgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NywgNTQsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NywgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NywgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ5LCA1NywgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NywgCisgICAgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NywgNDksIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NywgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NiwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ5LCA1NiwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NiwgNTUsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NiwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NiwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ5LCA1NiwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NiwgCisgICAgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NiwgNTAsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NiwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NiwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ5LCA1NSwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NSwgNTYsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NSwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NSwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ5LCA1NSwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NSwgCisgICAgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NSwgNTEsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NSwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NSwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ5LCA1NSwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NCwgNTcsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NCwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NCwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ5LCA1NCwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NCwgCisgICAgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NCwgNTIsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NCwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NCwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ5LCA1NCwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1NCwgNDgsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MywgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MywgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ5LCA1MywgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MywgCisgICAgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MywgNTMsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MywgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MywgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ5LCA1MywgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MywgNDksIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MywgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MiwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ5LCA1MiwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MiwgCisgICAgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MiwgNTQsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MiwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MiwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ5LCA1MiwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MiwgNTAsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MiwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MiwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ5LCA1MSwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MSwgCisgICAgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MSwgNTUsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MSwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MSwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ5LCA1MSwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MSwgNTEsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MSwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MSwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ5LCA1MSwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MCwgCisgICAgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MCwgNTYsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MCwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MCwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ5LCA1MCwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MCwgNTIsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MCwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MCwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ5LCA1MCwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA1MCwgCisgICAgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA0OSwgNTcsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA0OSwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ5LCA0OSwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ5LCA0OSwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA0OSwgNTMsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA0OSwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA0OSwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ5LCA0OSwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA0OSwgCisgICAgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA0OSwgNDgsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA0OCwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ5LCA0OCwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ5LCA0OCwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA0OCwgNTQsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA0OCwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA0OCwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ5LCA0OCwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA0OCwgCisgICAgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA0OCwgNDksIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ5LCA0OCwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NywgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ4LCA1NywgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NywgNTUsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NywgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NywgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ4LCA1NywgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NywgCisgICAgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NywgNTAsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NywgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NywgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ4LCA1NiwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NiwgNTYsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NiwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NiwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ4LCA1NiwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NiwgCisgICAgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NiwgNTEsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NiwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NiwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ4LCA1NiwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NSwgNTcsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NSwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NSwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ4LCA1NSwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NSwgCisgICAgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NSwgNTIsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NSwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NSwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ4LCA1NSwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NSwgNDgsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NCwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NCwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ4LCA1NCwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NCwgCisgICAgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NCwgNTMsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NCwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NCwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ4LCA1NCwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NCwgNDksIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1NCwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MywgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ4LCA1MywgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MywgCisgICAgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MywgNTQsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MywgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MywgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ4LCA1MywgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MywgNTAsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MywgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MywgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ4LCA1MiwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MiwgCisgICAgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MiwgNTUsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MiwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MiwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ4LCA1MiwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MiwgNTEsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MiwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MiwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ4LCA1MiwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MSwgCisgICAgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MSwgNTYsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MSwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MSwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ4LCA1MSwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MSwgNTIsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MSwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MSwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ4LCA1MSwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MSwgCisgICAgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MCwgNTcsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MCwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MCwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ4LCA1MCwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MCwgNTMsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MCwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MCwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ4LCA1MCwgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MCwgCisgICAgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA1MCwgNDgsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA0OSwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ4LCA0OSwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ4LCA0OSwgNTUsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA0OSwgNTQsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA0OSwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA0OSwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ4LCA0OSwgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA0OSwgCisgICAgNTAsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA0OSwgNDksIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA0OSwgNDgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgCisgICAgNjksIDc4LCA4NCwgNDUsIDQ4LCA0OCwgNTcsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIAorICAgIDQ4LCA0OCwgNTYsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA0OCwgNTUsIDEyOCwgCisgICAgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA0OCwgNTQsIDEyOCwgNjcsIDc5LCA3NywgODAsIAorICAgIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA0OCwgNTMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCAKKyAgICA4NCwgNDUsIDQ4LCA0OCwgNTIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA0OCwgCisgICAgNTEsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA0OCwgNTAsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc5LCA3OCwgNjksIDc4LCA4NCwgNDUsIDQ4LCA0OCwgNDksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc2LCA3MywgCisgICAgNjUsIDc4LCA2NywgNjksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc2LCA2OSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgODAsIDc2LCA2OSwgODQsIDY5LCA2OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzYsIDY5LCA3NywgNjksIDc4LCA4NCwgCisgICAgMTI4LCA2NywgNzksIDc3LCA4MCwgNjUsIDgyLCA2OSwgMTI4LCA2NywgNzksIDc3LCA3NywgNzksIDIwNiwgNjcsIDc5LCAKKyAgICA3NywgNzcsIDY5LCA4MiwgNjcsIDczLCA2NSwgMjA0LCA2NywgNzksIDc3LCA3NywgNjUsIDc4LCA2OCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA3NywgNjUsIDEyOCwgNjcsIDc5LCA3NywgNzcsIDE5MywgNjcsIDc5LCA3NywgNjksIDg0LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDY2LCA3MywgNzgsIDY5LCA2OCwgMTI4LCA2NywgNzksIDc3LCA2NiwgNzMsIDc4LCA2NSwgODQsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgNjcsIDc5LCA3NywgNjYsIDEyOCwgNjcsIDc5LCA3NiwgODUsIDc3LCA3OCwgMTI4LCA2NywgNzksIDc2LCA3OSwgCisgICAgODIsIDEyOCwgNjcsIDc5LCA3NiwgNzYsIDczLCA4MywgNzMsIDc5LCAyMDYsIDY3LCA3OSwgNzYsIDc2LCAxMjgsIDY3LCAKKyAgICA3OSwgNzYsIDE5NiwgNjcsIDc5LCA3MCwgNzAsIDczLCA3OCwgMTI4LCA2NywgNzksIDY5LCA3OCwgNzEsIDEyOCwgNjcsIAorICAgIDc5LCA2OSwgNzgsIDE5OSwgNjcsIDc5LCA2OCwgNjUsIDEyOCwgNjcsIDc5LCA2NywgNzUsIDg0LCA2NSwgNzMsIDIwNCwgCisgICAgNjcsIDc5LCA2NSwgODMsIDg0LCA2OSwgODIsIDEyOCwgNjcsIDc5LCA2NSwgMTI4LCA2NywgNzcsIDEyOCwgNjcsIDIwNSwgCisgICAgNjcsIDc2LCA4NSwgODMsIDg0LCA2OSwgMjEwLCA2NywgNzYsIDg1LCA2NiwgODMsIDEyOCwgNjcsIDc2LCA4NSwgNjYsIDQ1LCAKKyAgICA4MywgODAsIDc5LCA3NSwgNjksIDE5NiwgNjcsIDc2LCA4NSwgNjYsIDEyOCwgNjcsIDc2LCA4NSwgMTk0LCA2NywgNzYsIAorICAgIDc5LCA4NywgMjA2LCA2NywgNzYsIDc5LCA4NiwgNjksIDgyLCAxMjgsIDY3LCA3NiwgNzksIDg1LCA2OCwgMTI4LCA2NywgCisgICAgNzYsIDc5LCA4NSwgMTk2LCA2NywgNzYsIDc5LCA4NCwgNzIsIDY5LCA4MywgMTI4LCA2NywgNzYsIDc5LCA4NCwgNzIsIAorICAgIDEyOCwgNjcsIDc2LCA3OSwgODMsIDY5LCA4NCwgMTI4LCA2NywgNzYsIDc5LCA4MywgNjksIDc4LCA2OSwgODMsIDgzLCAKKyAgICAxMjgsIDY3LCA3NiwgNzksIDgzLCA2OSwgNjgsIDEyOCwgNjcsIDc2LCA3OSwgODMsIDE5NywgNjcsIDc2LCA3OSwgNjcsIAorICAgIDc1LCA4NywgNzMsIDgzLCAxOTcsIDY3LCA3NiwgNzksIDY3LCAyMDMsIDY3LCA3NiwgNzMsIDg2LCA3MywgODMsIDEyOCwgCisgICAgNjcsIDc2LCA3MywgODAsIDY2LCA3OSwgNjUsIDgyLCA2OCwgMTI4LCA2NywgNzYsIDczLCA3OCwgNzUsIDczLCA3OCwgMTk5LCAKKyAgICA2NywgNzYsIDczLCA3OCwgNzEsIDczLCA3OCwgMTk5LCA2NywgNzYsIDczLCA3NywgNjUsIDY3LCA4NSwgODMsIDEyOCwgNjcsIAorICAgIDc2LCA3MywgNzAsIDcwLCAxMjgsIDY3LCA3NiwgNzMsIDY3LCA3NSwgMTI4LCA2NywgNzYsIDY5LCA3MCwgNDUsIDUwLCAKKyAgICAxMjgsIDY3LCA3NiwgNjksIDcwLCA0NSwgNDksIDEyOCwgNjcsIDc2LCA2OSwgNzAsIDEyOCwgNjcsIDc2LCA2OSwgMTk4LCAKKyAgICA2NywgNzYsIDY5LCA2NSwgODYsIDY5LCA4MiwgMTI4LCA2NywgNzYsIDY5LCA2NSwgMjEwLCA2NywgNzYsIDY1LCA4MywgODMsIAorICAgIDczLCA2NywgNjUsIDIwNCwgNjcsIDc2LCA2NSwgODAsIDgwLCA3MywgNzgsIDE5OSwgNjcsIDc2LCA2NSwgODAsIDgwLCA2OSwgCisgICAgMjEwLCA2NywgNzYsIDY1LCA3OCwgMTI4LCA2NywgNzYsIDY1LCAyMDYsIDY3LCA3NiwgNjUsIDc3LCA4MywgNzIsIDY5LCAKKyAgICA3NiwgMjA0LCA2NywgNzYsIDY1LCA3MywgNzcsIDEyOCwgNjcsIDc2LCAxMjgsIDY3LCA3MywgODgsIDEyOCwgNjcsIDczLCAKKyAgICA4NiwgNzMsIDc2LCA3MywgNjUsIDc4LCAxMjgsIDY3LCA3MywgODQsIDg5LCA4MywgNjcsIDY1LCA4MCwgNjksIDEyOCwgNjcsIAorICAgIDczLCA4NCwgODksIDgzLCA2NywgNjUsIDgwLCAxOTcsIDY3LCA3MywgODQsIDIwMSwgNjcsIDczLCA4NCwgNjUsIDg0LCA3MywgCisgICAgNzksIDIwNiwgNjcsIDczLCA4NCwgMTI4LCA2NywgNzMsIDgyLCA2NywgODUsIDIxMSwgNjcsIDczLCA4MiwgNjcsIDg1LCAKKyAgICA3NywgNzAsIDc2LCA2OSwgODgsIDEyOCwgNjcsIDczLCA4MiwgNjcsIDg1LCA3NywgNzAsIDc2LCA2OSwgMjE2LCA2NywgNzMsIAorICAgIDgyLCA2NywgODUsIDc2LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NywgNzMsIDgyLCA2NywgNzYsIDczLCA3OCwgNzEsIDEyOCwgCisgICAgNjcsIDczLCA4MiwgNjcsIDc2LCA3MywgNzgsIDE5OSwgNjcsIDczLCA4MiwgNjcsIDc2LCA2OSwgODMsIDEyOCwgNjcsIDczLCAKKyAgICA4MiwgNjcsIDc2LCA2OSwgMjExLCA2NywgNzMsIDgyLCA2NywgNzYsIDY5LCA2OCwgMTI4LCA2NywgNzMsIDgwLCAxMjgsIAorICAgIDY3LCA3MywgNzgsIDc4LCA2NSwgNjYsIDY1LCA4MiwgMTI4LCA2NywgNzMsIDc4LCA2OSwgNzcsIDY1LCAxMjgsIDY3LCA3MywgCiAgICAgMjA2LCA2NywgNzMsIDIwNSwgNjcsIDczLCA3MywgMTI4LCA2NywgNzMsIDY5LCA4OCwgMTI4LCA2NywgNzMsIDY5LCA4NSwgCiAgICAgNjcsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA2NywgNzMsIDY5LCA4NSwgNjcsIAogICAgIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNjcsIDczLCA2OSwgODUsIDY3LCA0NSwgNzMsIDY5LCA4NSwgNzgsIDcxLCAKQEAgLTQ1NzYsMzAwICs1MjA1LDMwNCBAQAogICAgIDg2LCA4MiwgNzksIDIwNiwgNjcsIDcyLCA2OSwgODQsIDEyOCwgNjcsIDcyLCA2OSwgODMsIDg0LCA3OCwgODUsIDg0LCAKICAgICAxMjgsIDY3LCA3MiwgNjksIDgzLCA4NCwgMTI4LCA2NywgNzIsIDY5LCA4MywgMjExLCA2NywgNzIsIDY5LCA4MiwgODksIAogICAgIDEyOCwgNjcsIDcyLCA2OSwgODIsIDgyLCAyMTcsIDY3LCA3MiwgNjksIDgyLCA4MiwgNzMsIDY5LCA4MywgMTI4LCA2NywgCi0gICAgNzIsIDY5LCA4MSwgODUsIDY5LCA4MiwgNjksIDE5NiwgNjcsIDcyLCA2OSwgODAsIDEyOCwgNjcsIDcyLCA2OSwgMjA2LCAKLSAgICA2NywgNzIsIDY5LCA3MywgNzgsIDY1LCA4MCwgMTI4LCA2NywgNzIsIDY5LCA3MywgNzUsIDcyLCA2OSwgNzMsIDEyOCwgNjcsIAotICAgIDcyLCA2OSwgNzMsIDc1LCA3MiwgNjUsIDc4LCAxMjgsIDY3LCA3MiwgNjksIDY5LCA4MywgMTk3LCA2NywgNzIsIDY5LCA2OSwgCi0gICAgODIsIDczLCA3OCwgMTk5LCA2NywgNzIsIDY5LCA2OSwgNzcsIDEyOCwgNjcsIDcyLCA2OSwgNjksIDc1LCAyMTEsIDY3LCAKLSAgICA3MiwgNjksIDY5LCA3NSwgMTI4LCA2NywgNzIsIDY5LCA2OSwgMTI4LCA2NywgNzIsIDY5LCA2NywgNzUsIDY5LCAyMTAsIAotICAgIDY3LCA3MiwgNjksIDY3LCA3NSwgMTI4LCA2NywgNzIsIDY5LCA2NywgMjAzLCA2NywgNzIsIDE5NywgNjcsIDcyLCA2NSwgCi0gICAgODgsIDEyOCwgNjcsIDcyLCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA2NywgNzIsIDY1LCA4NCwgODQsIDY1LCAKLSAgICA4NywgNjUsIDEyOCwgNjcsIDcyLCA2NSwgODQsIDEyOCwgNjcsIDcyLCA2NSwgODIsIDg0LCAxMjgsIDY3LCA3MiwgNjUsIAotICAgIDgyLCAyMTIsIDY3LCA3MiwgNjUsIDgyLCA3MywgNzksIDg0LCAxMjgsIDY3LCA3MiwgNjUsIDgyLCA3MywgNzksIDIxMiwgCi0gICAgNjcsIDcyLCA2NSwgODIsIDY1LCA2NywgODQsIDY5LCA4MiwgODMsIDEyOCwgNjcsIDcyLCA2NSwgODIsIDY1LCA2NywgODQsIAotICAgIDY5LCA4MiwgMTI4LCA2NywgNzIsIDY1LCA4MiwgMTI4LCA2NywgNzIsIDY1LCA4MCwgODQsIDY5LCA4MiwgMTI4LCA2NywgCi0gICAgNzIsIDY1LCA4MCwgMTI4LCA2NywgNzIsIDY1LCA3OCwgNzEsIDEyOCwgNjcsIDcyLCA2NSwgNzgsIDEyOCwgNjcsIDcyLCAKLSAgICA2NSwgNzcsIDc1LCA3OSwgMTI4LCA2NywgNzIsIDY1LCA3NywgNzMsIDc2LCA3OSwgNzgsIDEyOCwgNjcsIDcyLCA2NSwgNzcsIAotICAgIDczLCA3NiwgNzMsIDEyOCwgNjcsIDcyLCA2NSwgMjA1LCA2NywgNzIsIDY1LCA3NSwgNzcsIDE5MywgNjcsIDcyLCA2NSwgCi0gICAgNzMsIDgyLCAxMjgsIDY3LCA3MiwgNjUsIDczLCA3OCwgODMsIDEyOCwgNjcsIDcyLCA2NSwgNjgsIDY1LCAxMjgsIDY3LCAKLSAgICA3MiwgNjUsIDE5NiwgNjcsIDcyLCA2NSwgNjUsIDEyOCwgNjcsIDcxLCA3NCwgMTI4LCA2NywgNjksIDg4LCAxMjgsIDY3LCAKLSAgICA2OSwgODIsIDY5LCA4MywgMTI4LCA2NywgNjksIDgyLCA2OSwgNzcsIDc5LCA3OCwgODksIDEyOCwgNjcsIDY5LCA4MiwgNjksIAotICAgIDc1LCAxMjgsIDY3LCA2OSwgODIsIDQ1LCA4NywgNjUsIDEyOCwgNjcsIDY5LCA4MCwgMTI4LCA2NywgNjksIDc5LCA3OCwgCi0gICAgNzEsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNzcsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDEyOCwgNjcsIAotICAgIDY5LCA3OSwgNzgsIDcxLCA2NywgNzIsIDczLCA2OSwgODUsIDc3LCA4MywgODMsIDY1LCA3OCwgNzEsIDY3LCA3MywgNjksIAotICAgIDg1LCA2NywgMTI4LCA2NywgNjksIDc5LCA3OCwgNzEsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNzcsIDgzLCA3MywgNzksIDgzLCAKLSAgICAxMjgsIDY3LCA2OSwgNzksIDc4LCA3MSwgNjcsIDcyLCA3MywgNjksIDg1LCA3NywgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIAotICAgIDY3LCA2OSwgNzksIDc4LCA3MSwgNjcsIDcyLCA3MywgNjksIDg1LCA3NywgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIAotICAgIDEyOCwgNjcsIDY5LCA3OCwgODQsIDg1LCA4MiwgNzMsIDY1LCAyMDQsIDY3LCA2OSwgNzgsIDg0LCA4MiwgNjksIDc2LCA3MywgCi0gICAgNzgsIDE5NywgNjcsIDY5LCA3OCwgODQsIDgyLCA2OSwgNjgsIDEyOCwgNjcsIDY5LCA3OCwgODQsIDgyLCA2OSwgMTk2LCAKLSAgICA2NywgNjksIDc4LCA4NCwgODIsIDY5LCAxMjgsIDY3LCA2OSwgNzgsIDg0LCA4MiwgMTk3LCA2NywgNjksIDc4LCA4NCwgODIsIAotICAgIDY1LCA3NiwgNzMsIDkwLCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NywgNjksIDc4LCAxMjgsIDY3LCA2OSwgNzYsIDg0LCA3MywgCi0gICAgMTk1LCA2NywgNjksIDc2LCA4MywgNzMsIDg1LCA4MywgMTI4LCA2NywgNjksIDc2LCA2OSwgNjYsIDgyLCA2NSwgODQsIDczLCAKLSAgICA3OSwgNzgsIDEyOCwgNjcsIDY5LCA3MywgODIsIDg0LCAxMjgsIDY3LCA2OSwgNzMsIDc2LCA3MywgNzgsIDcxLCAxMjgsIAotICAgIDY3LCA2OSwgNzMsIDc2LCA3MywgNzgsIDE5OSwgNjcsIDY5LCA2OSwgODYsIDEyOCwgNjcsIDY5LCA2OSwgNjYsIDEyOCwgCi0gICAgNjcsIDY5LCA2OSwgMTI4LCA2NywgNjksIDY4LCA3MywgNzYsIDc2LCA2NSwgMTI4LCA2NywgNjksIDY4LCA3MywgNzYsIDc2LCAKLSAgICAxOTMsIDY3LCA2OSwgNjgsIDIwMSwgNjcsIDY5LCA2NywgNjksIDc1LCAxMjgsIDY3LCA2OSwgNjcsIDY1LCA3NSwgMTI4LCAKLSAgICA2NywgNjksIDY3LCA2NSwgMjAzLCA2NywgNjksIDY1LCA3NiwgNjcsIDEyOCwgNjcsIDY3LCA4NSwgMTI4LCA2NywgNjcsIAotICAgIDc5LCAxMjgsIDY3LCA2NywgNzMsIDEyOCwgNjcsIDY3LCA3MiwgODUsIDEyOCwgNjcsIDY3LCA3MiwgNzksIDEyOCwgNjcsIAotICAgIDY3LCA3MiwgNzMsIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDg1LCAxMjgsIDY3LCA2NywgNzIsIDcyLCA3OSwgMTI4LCA2NywgCi0gICAgNjcsIDcyLCA3MiwgNzMsIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDY5LCA2OSwgMTI4LCA2NywgNjcsIDcyLCA3MiwgNjksIAotICAgIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDY1LCA2NSwgMTI4LCA2NywgNjcsIDcyLCA3MiwgNjUsIDEyOCwgNjcsIDY3LCA3MiwgCi0gICAgNjksIDY5LCAxMjgsIDY3LCA2NywgNzIsIDY5LCAxMjgsIDY3LCA2NywgNzIsIDY1LCA2NSwgMTI4LCA2NywgNjcsIDcyLCAKLSAgICA2NSwgMTI4LCA2NywgNjcsIDcyLCAxMjgsIDY3LCA2NywgNjksIDY5LCAxMjgsIDY3LCA2NywgNjksIDEyOCwgNjcsIDY3LCAKLSAgICA2NSwgNjUsIDEyOCwgNjcsIDY3LCA2NSwgMTI4LCA2NywgNjUsIDg5LCA3OCwgMTI4LCA2NywgNjUsIDg5LCA2NSwgNzgsIAotICAgIDc4LCA2NSwgMTI4LCA2NywgNjUsIDg4LCAxMjgsIDY3LCA2NSwgODYsIDY5LCAxMjgsIDY3LCA2NSwgODUsIDg0LCA3MywgCi0gICAgNzksIDIwNiwgNjcsIDY1LCA4NSwgNzYsIDY4LCA4MiwgNzksIDc4LCAxMjgsIDY3LCA2NSwgODUsIDY4LCA2NSwgMTI4LCAKLSAgICA2NywgNjUsIDg1LCA2NywgNjUsIDgzLCA3MywgNjUsIDIwNiwgNjcsIDY1LCA4NSwgMTI4LCA2NywgNjUsIDg0LCA2NSwgODcsIAotICAgIDY1LCAxMjgsIDY3LCA2NSwgODQsIDEyOCwgNjcsIDY1LCAyMTIsIDY3LCA2NSwgODMsIDg0LCA3NiwgNjksIDEyOCwgNjcsIAotICAgIDY1LCA4MywgNzUsIDY5LCAyMTIsIDY3LCA2NSwgODIsIDg5LCA4MywgODQsIDczLCA2NSwgMjA2LCA2NywgNjUsIDgyLCA4NCwgCi0gICAgODIsIDczLCA2OCwgNzEsIDY5LCAxMjgsIDY3LCA2NSwgODIsIDg0LCAxMjgsIDY3LCA2NSwgODIsIDIxMSwgNjcsIDY1LCAKLSAgICA4MiwgODIsIDczLCA2NSwgNzEsIDE5NywgNjcsIDY1LCA4MiwgODAsIDY5LCA3OCwgODQsIDgyLCAyMTcsIDY3LCA2NSwgODIsIAotICAgIDIwOCwgNjcsIDY1LCA4MiwgNzksIDg1LCA4MywgNjksIDIwNCwgNjcsIDY1LCA4MiwgNzksIDc4LCAxMjgsIDY3LCA2NSwgCi0gICAgODIsIDc5LCAyMDYsIDY3LCA2NSwgODIsIDczLCAyMDMsIDY3LCA2NSwgODIsIDczLCA2NSwgMjA2LCA2NywgNjUsIDgyLCAKLSAgICA2OSwgODQsIDEyOCwgNjcsIDY1LCA4MiwgNjksIDIxMiwgNjcsIDY1LCA4MiwgMTk3LCA2NywgNjUsIDgyLCA2OCwgODMsIAotICAgIDEyOCwgNjcsIDY1LCA4MiwgNjgsIDEyOCwgNjcsIDY1LCA4MiwgMTk2LCA2NywgNjUsIDgyLCAxMjgsIDY3LCA2NSwgMjEwLCAKLSAgICA2NywgNjUsIDgwLCA4NSwgMjEyLCA2NywgNjUsIDgwLCA4NCwgNzMsIDg2LCA2OSwgMTI4LCA2NywgNjUsIDgwLCA4MiwgNzMsIAotICAgIDY3LCA3OSwgODIsIDc4LCAxMjgsIDY3LCA2NSwgODAsIDgwLCA2OSwgMTk2LCA2NywgNjUsIDgwLCA3OSwgMTI4LCA2NywgCi0gICAgNjUsIDgwLCA3MywgODQsIDg1LCA3NiwgODUsIDc3LCAxMjgsIDY3LCA2NSwgODAsIDczLCA4NCwgNjUsIDc2LCAxMjgsIDY3LCAKLSAgICA2NSwgNzgsIDg0LCA3MywgNzYsIDc2LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NywgNjUsIDc4LCAxOTksIDY3LCA2NSwgNzgsIAotICAgIDY4LCA4OSwgMTI4LCA2NywgNjUsIDc4LCA2OCwgODIsIDY1LCA2NiwgNzMsIDc4LCA2OCwgODUsIDEyOCwgNjcsIDY1LCA3OCwgCi0gICAgNjgsIDgyLCA2NSwgNjYsIDczLCA3OCwgNjgsIDIxMywgNjcsIDY1LCA3OCwgNjgsIDgyLCA2NSwgMTI4LCA2NywgNjUsIDc4LCAKLSAgICA2OCwgODIsIDE5MywgNjcsIDY1LCA3OCwgNjgsIDc2LCA2OSwgMTI4LCA2NywgNjUsIDc4LCA2NywgNjksIDgyLCAxMjgsIAotICAgIDY3LCA2NSwgNzgsIDY3LCA2OSwgNzYsIDc2LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NywgNjUsIDc4LCA2NywgNjksIDc2LCAKLSAgICAxMjgsIDY3LCA2NSwgNzgsIDY3LCA2OSwgMjA0LCA2NywgNjUsIDc4LCAxMjgsIDY3LCA2NSwgNzcsIDgwLCA3MywgNzgsIAotICAgIDcxLCAxMjgsIDY3LCA2NSwgNzcsIDc4LCA4NSwgMTk1LCA2NywgNjUsIDc3LCA2OSwgODIsIDY1LCAxMjgsIDY3LCA2NSwgCi0gICAgNzcsIDY5LCA4MiwgMTkzLCA2NywgNjUsIDc3LCA2OSwgNzYsIDEyOCwgNjcsIDY1LCA3NiwgODksIDY1LCAxMjgsIDY3LCAKLSAgICA2NSwgNzYsIDg5LCAxOTMsIDY3LCA2NSwgNzYsIDg4LCAxMjgsIDY3LCA2NSwgNzYsIDc2LCAxMjgsIDY3LCA2NSwgNzYsIAotICAgIDY5LCA3OCwgNjgsIDY1LCA4MiwgMTI4LCA2NywgNjUsIDc2LCA2OSwgNzgsIDY4LCA2NSwgMjEwLCA2NywgNjUsIDc2LCA2NywgCi0gICAgODUsIDc2LCA2NSwgODQsIDc5LCA4MiwgMTI4LCA2NywgNjUsIDc2LCA2NywgMTI4LCA2NywgNjUsIDc1LCA4MiwgNjUsIAotICAgIDEyOCwgNjcsIDY1LCA3NSwgMTk3LCA2NywgNjUsIDczLCAxMjgsIDY3LCA2NSwgNzIsIDEyOCwgNjcsIDY1LCA2OSwgODMsIAotICAgIDg1LCA4MiwgNjUsIDEyOCwgNjcsIDY1LCA2OCwgODUsIDY3LCA2OSwgODUsIDgzLCAxMjgsIDY3LCA2NSwgNjgsIDE5MywgCi0gICAgNjcsIDY1LCA2NywgODQsIDg1LCA4MywgMTI4LCA2NywgNjUsIDY2LCA3NiwgNjksIDg3LCA2NSwgODksIDEyOCwgNjcsIDY1LCAKLSAgICA2NiwgNzMsIDc4LCA2OSwgODQsIDEyOCwgNjcsIDY1LCA2NiwgNjYsIDY1LCA3MSwgNjksIDQ1LCA4NCwgODIsIDY5LCA2OSwgCi0gICAgMTI4LCA2NywgNjUsIDY1LCA3OCwgNzEsIDEyOCwgNjcsIDY1LCA2NSwgNzMsIDEyOCwgNjcsIDE5MywgNjcsIDQ4LCA1MCwgCi0gICAgNTIsIDEyOCwgNjcsIDQ4LCA1MCwgNTEsIDEyOCwgNjcsIDQ4LCA1MCwgNTAsIDEyOCwgNjcsIDQ4LCA1MCwgNDksIDEyOCwgCi0gICAgNjcsIDQ4LCA1MCwgNDgsIDEyOCwgNjcsIDQ4LCA0OSwgNTcsIDEyOCwgNjcsIDQ4LCA0OSwgNTYsIDEyOCwgNjcsIDQ4LCAKLSAgICA0OSwgNTUsIDEyOCwgNjcsIDQ4LCA0OSwgNTQsIDEyOCwgNjcsIDQ4LCA0OSwgNTMsIDEyOCwgNjcsIDQ4LCA0OSwgNTIsIAotICAgIDEyOCwgNjcsIDQ4LCA0OSwgNTEsIDEyOCwgNjcsIDQ4LCA0OSwgNTAsIDEyOCwgNjcsIDQ4LCA0OSwgNDksIDEyOCwgNjcsIAotICAgIDQ4LCA0OSwgNDgsIDY1LCAxMjgsIDY3LCA0OCwgNDksIDQ4LCAxMjgsIDY3LCA0OCwgNDgsIDU3LCAxMjgsIDY3LCA0OCwgCi0gICAgNDgsIDU2LCAxMjgsIDY3LCA0OCwgNDgsIDU1LCAxMjgsIDY3LCA0OCwgNDgsIDU0LCAxMjgsIDY3LCA0OCwgNDgsIDUzLCAKLSAgICAxMjgsIDY3LCA0OCwgNDgsIDUyLCAxMjgsIDY3LCA0OCwgNDgsIDUxLCAxMjgsIDY3LCA0OCwgNDgsIDUwLCA2NywgMTI4LCAKLSAgICA2NywgNDgsIDQ4LCA1MCwgNjYsIDEyOCwgNjcsIDQ4LCA0OCwgNTAsIDY1LCAxMjgsIDY3LCA0OCwgNDgsIDUwLCAxMjgsIAotICAgIDY3LCA0OCwgNDgsIDQ5LCAxMjgsIDY3LCA0NSwgODMsIDczLCA3NywgODAsIDc2LCA3MywgNzAsIDczLCA2OSwgMTk2LCA2NywgCi0gICAgNDUsIDUxLCA1NywgMTI4LCA2NywgNDUsIDQ5LCA1NiwgMTI4LCA2NiwgOTAsIDg1LCA3OCwgMTk5LCA2NiwgOTAsIDcyLCAKLSAgICAyMDEsIDY2LCA4OSwgODQsIDE5NywgNjYsIDg5LCA2OSwgNzYsIDc5LCA4MiwgODUsIDgzLCA4MywgNzMsIDY1LCA3OCwgNDUsIAotICAgIDg1LCA3NSwgODIsIDY1LCA3MywgNzgsIDczLCA2NSwgMjA2LCA2NiwgODgsIDcxLCAxMjgsIDY2LCA4NywgNzMsIDEyOCwgCi0gICAgNjYsIDg3LCA2OSwgNjksIDEyOCwgNjYsIDg3LCA2OSwgMTI4LCA2NiwgODcsIDY1LCAxMjgsIDY2LCA4NSwgODUsIDc3LCAKLSAgICA3MywgODMsIDcyLCAxMjgsIDY2LCA4NSwgODQsIDg0LCA3OSwgNzgsIDEyOCwgNjYsIDg1LCA4NCwgODQsIDc5LCAyMDYsIAotICAgIDY2LCA4NSwgMjEyLCA2NiwgODUsIDgzLCA4NCwgMjExLCA2NiwgODUsIDgzLCAyMTIsIDY2LCA4NSwgODMsIDgzLCA4OSwgCi0gICAgNjksIDgyLCA4NSwgMTI4LCA2NiwgODUsIDgzLCA3MywgNzgsIDY5LCA4MywgMjExLCA2NiwgODUsIDIxMSwgNjYsIDg1LCAKLSAgICA4MiwgMjEzLCA2NiwgODUsIDgyLCA4MiwgNzMsIDg0LCA3OSwgMTI4LCA2NiwgODUsIDgyLCA1MCwgMTI4LCA2NiwgODUsIAotICAgIDIxMCwgNjYsIDg1LCA3OSwgODgsIDEyOCwgNjYsIDg1LCA3OSwgODAsIDEyOCwgNjYsIDg1LCA3OCwgNzgsIDIxNywgNjYsIAotICAgIDg1LCA3OCwgNzEsIDEyOCwgNjYsIDg1LCA3NywgODAsIDIxNywgNjYsIDg1LCA3NiwgODUsIDcxLCAxMjgsIDY2LCA4NSwgCi0gICAgNzYsIDg1LCAxOTksIDY2LCA4NSwgNzYsIDc2LCA4MywgNjksIDg5LCA2OSwgMTI4LCA2NiwgODUsIDc2LCA3NiwgMjExLCAKLSAgICA2NiwgODUsIDc2LCA3NiwgNzIsIDc5LCA4MiwgNzgsIDEyOCwgNjYsIDg1LCA3NiwgNzYsIDcyLCA3OSwgODIsIDIwNiwgNjYsIAotICAgIDg1LCA3NiwgNzYsIDY5LCA4NCwgMTI4LCA2NiwgODUsIDc2LCA3NiwgNjksIDIxMiwgNjYsIDg1LCA3NiwgNzYsIDEyOCwgCi0gICAgNjYsIDg1LCA3NiwgNjYsIDEyOCwgNjYsIDg1LCA3NSwgODksIDEyOCwgNjYsIDg1LCA3MywgNzYsIDY4LCA3MywgNzgsIDcxLCAKLSAgICA4MywgMTI4LCA2NiwgODUsIDczLCA3NiwgNjgsIDczLCA3OCwgNzEsIDEyOCwgNjYsIDg1LCA3MywgNzYsIDY4LCA3MywgNzgsIAotICAgIDE5OSwgNjYsIDg1LCA3MiwgNzMsIDE5NiwgNjYsIDg1LCA3MSwgNzMsIDc4LCA2OSwgODMsIDE5NywgNjYsIDg1LCA3MSwgCi0gICAgMTI4LCA2NiwgODUsIDcwLCA3MCwgNjUsIDc2LCA3OSwgMTI4LCA2NiwgODUsIDY4LCAxMjgsIDY2LCA4NSwgNjcsIDc1LCAKLSAgICA3NiwgNjksIDEyOCwgNjYsIDg1LCA2NiwgNjYsIDc2LCA2OSwgODMsIDEyOCwgNjYsIDg1LCA2NiwgNjYsIDc2LCA2OSwgCi0gICAgMTI4LCA2NiwgODMsIDg0LCA2NSwgODIsIDEyOCwgNjYsIDgzLCA3NSwgODUsIDIxMCwgNjYsIDgzLCA3NSwgNjUsIDE3MywgCi0gICAgNjYsIDgzLCA2OCwgODUsIDIxMSwgNjYsIDgyLCA4NSwgODMsIDIwMCwgNjYsIDgyLCA3OSwgNzgsIDkwLCA2OSwgMTI4LCAKLSAgICA2NiwgODIsIDc5LCA3NSwgNjksIDIwNiwgNjYsIDgyLCA3OSwgNjUsIDE5NiwgNjYsIDgyLCA3MywgODMsIDg0LCA3NiwgNjksIAotICAgIDEyOCwgNjYsIDgyLCA3MywgNzEsIDcyLCA4NCwgNzgsIDY5LCA4MywgMjExLCA2NiwgODIsIDczLCA2OSwgNzAsIDY3LCA2NSwgCi0gICAgODMsIDY5LCAxMjgsIDY2LCA4MiwgNzMsIDY4LCA3MSwgMTk3LCA2NiwgODIsIDczLCA2OCwgMTk3LCA2NiwgODIsIDczLCAKLSAgICA2NywgNzUsIDEyOCwgNjYsIDgyLCA2OSwgODYsIDczLCA4MywgMTI4LCA2NiwgODIsIDY5LCA4NiwgNjksIDQ1LCA3NywgNjUsIAotICAgIDY3LCA4MiwgNzksIDc4LCAxMjgsIDY2LCA4MiwgNjksIDg2LCAxOTcsIDY2LCA4MiwgNjksIDY1LCA4NCwgMjAwLCA2NiwgCi0gICAgODIsIDY5LCA2NSwgNzUsIDg0LCA3MiwgODIsIDc5LCA4NSwgNzEsIDcyLCAxMjgsIDY2LCA4MiwgNjksIDY1LCA2OCwgMTI4LCAKLSAgICA2NiwgODIsIDY4LCAxOTMsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDczLCA3OCwgMTk5LCA2NiwgODIsIDY1LCA3OCwgNjcsIAotICAgIDcyLCA2OSwgODMsIDEyOCwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgMTI4LCA2NiwgODIsIDY1LCA3OCwgNjcsIDIwMCwgCi0gICAgNjYsIDgyLCA2NSwgNzUsIDY3LCA2OSwgODQsIDEyOCwgNjYsIDgyLCA2NSwgNjcsIDc1LCA2OSwgODQsIDY5LCAxOTYsIDY2LCAKLSAgICA4MiwgNjUsIDY3LCA3NSwgNjksIDIxMiwgNjYsIDgyLCA2NSwgNjcsIDY5LCAxMjgsIDY2LCA4MSwgMTI4LCA2NiwgODAsIAotICAgIDcyLCAxMjgsIDY2LCA3OSwgODksIDIxMSwgNjYsIDc5LCA4OSwgMTI4LCA2NiwgNzksIDg3LCA4NCwgNzMsIDY5LCAxMjgsIAotICAgIDY2LCA3OSwgODcsIDg0LCA3MywgMTk3LCA2NiwgNzksIDg3LCA3NiwgNzMsIDc4LCA3MSwgMTI4LCA2NiwgNzksIDg3LCA3NiwgCi0gICAgMTI4LCA2NiwgNzksIDg3LCAyMDQsIDY2LCA3OSwgODcsIDczLCA3OCwgMTk5LCA2NiwgNzksIDIxNSwgNjYsIDc5LCA4NSwgCi0gICAgODEsIDg1LCA2OSwgODQsIDEyOCwgNjYsIDc5LCA4NSwgODEsIDg1LCA2OSwgMjEyLCA2NiwgNzksIDg1LCA3OCwgNjgsIDY1LCAKLSAgICA4MiwgMjE3LCA2NiwgNzksIDg0LCA4NCwgNzksIDc3LCA0NSwgODMsIDcyLCA2NSwgNjgsIDY5LCAxOTYsIDY2LCA3OSwgODQsIAotICAgIDg0LCA3OSwgNzcsIDQ1LCA3NiwgNzMsIDcxLCA3MiwgODQsIDY5LCAxOTYsIDY2LCA3OSwgODQsIDg0LCA3OSwgNzcsIDEyOCwgCi0gICAgNjYsIDc5LCA4NCwgODQsIDc5LCAyMDUsIDY2LCA3OSwgODQsIDg0LCA3NiwgNjksIDEyOCwgNjYsIDc5LCA4NCwgODQsIDc2LCAKLSAgICAxOTcsIDY2LCA3OSwgODQsIDIwMCwgNjYsIDc5LCA4MiwgODUsIDg0LCA3OSwgMTI4LCA2NiwgNzksIDgyLCA2NSwgODgsIAotICAgIDQ1LCA1MSwgMTI4LCA2NiwgNzksIDgyLCA2NSwgODgsIDQ1LCA1MCwgMTI4LCA2NiwgNzksIDgyLCA2NSwgODgsIDEyOCwgCi0gICAgNjYsIDc5LCA4MCwgNzksIDc3LCA3OSwgNzAsIDIwNywgNjYsIDc5LCA3OSwgODQsIDgzLCAxMjgsIDY2LCA3OSwgNzksIDg0LCAKLSAgICAxMjgsIDY2LCA3OSwgNzksIDc3LCA2OSwgODIsIDY1LCA3OCwgNzEsIDEyOCwgNjYsIDc5LCA3OSwgNzUsIDgzLCAxMjgsIAotICAgIDY2LCA3OSwgNzksIDc1LCA3NywgNjUsIDgyLCA3NSwgMTI4LCA2NiwgNzksIDc5LCA3NSwgNzcsIDY1LCA4MiwgMjAzLCA2NiwgCi0gICAgNzksIDc4LCA2OSwgMTI4LCA2NiwgNzksIDc3LCA2NiwgMTI4LCA2NiwgNzksIDc3LCAxMjgsIDY2LCA3OSwgNzYsIDg0LCAKLSAgICAxMjgsIDY2LCA3OSwgNzYsIDIxMiwgNjYsIDc5LCA3MiwgNjUsIDczLCA4MiwgNzMsIDE5NSwgNjYsIDc5LCA2OCwgODksIAotICAgIDEyOCwgNjYsIDc5LCA2OCwgMjE3LCA2NiwgNzksIDY1LCA4MiwgMTI4LCA2NiwgNzksIDY1LCAxMjgsIDY2LCA3NiwgODUsIAotICAgIDY5LCAxMjgsIDY2LCA3NiwgODUsIDE5NywgNjYsIDc2LCA3OSwgODcsIDczLCA3OCwgMTk5LCA2NiwgNzYsIDc5LCA4NywgCi0gICAgNzAsIDczLCA4MywgNzIsIDEyOCwgNjYsIDc2LCA3OSwgMjE1LCA2NiwgNzYsIDc5LCA4MywgODMsIDc5LCA3NywgMTI4LCAKLSAgICA2NiwgNzYsIDc5LCA3OSwgNjgsIDEyOCwgNjYsIDc2LCA3OSwgNzgsIDE5NiwgNjYsIDc2LCA3OSwgNjcsIDc1LCAxMjgsIAotICAgIDY2LCA3NiwgNzMsIDc4LCAyMDMsIDY2LCA3NiwgNjksIDc4LCA2OCwgNjksIDE5NiwgNjYsIDc2LCA2NSwgNzgsIDc1LCAKLSAgICAxMjgsIDY2LCA3NiwgNjUsIDc4LCAyMDMsIDY2LCA3NiwgNjUsIDY4LCAxOTcsIDY2LCA3NiwgNjUsIDY3LCA3NSwgNzYsIAotICAgIDY5LCA4NCwgODQsIDY5LCAyMTAsIDY2LCA3NiwgNjUsIDY3LCA3NSwgNzAsIDc5LCA3OSwgMjEyLCA2NiwgNzYsIDY1LCA2NywgCi0gICAgNzUsIDQ1LCA3NiwgNjksIDg0LCA4NCwgNjksIDIxMCwgNjYsIDc2LCA2NSwgNjcsIDc1LCA0NSwgNzAsIDY5LCA2NSwgODQsIAotICAgIDcyLCA2OSwgODIsIDY5LCAxOTYsIDY2LCA3NiwgNjUsIDY3LCA3NSwgMTI4LCA2NiwgNzUsIDY1LCAxNzMsIDY2LCA3MywgCi0gICAgODQsIDg0LCA2OSwgODIsIDEyOCwgNjYsIDczLCA4NCwgNzMsIDc4LCAxOTksIDY2LCA3MywgODQsIDE5NywgNjYsIDczLCAKLSAgICA4MywgNzcsIDg1LCA4NCwgMjAwLCA2NiwgNzMsIDgzLCA3NywgNzMsIDc2LCA3NiwgNjUsIDIwMCwgNjYsIDczLCA4MywgNzIsIAotICAgIDc5LCA4MCwgMTI4LCA2NiwgNzMsIDgzLCA2OSwgNjcsIDg0LCA3MywgNzgsIDE5OSwgNjYsIDczLCA4MywgNjUsIDcyLCAKLSAgICAxMjgsIDY2LCA3MywgODIsIDg1LCAxMjgsIDY2LCA3MywgODIsIDg0LCA3MiwgNjgsIDY1LCAyMTcsIDY2LCA3MywgODIsIAotICAgIDcxLCA2NSwgMTI4LCA2NiwgNzMsIDgyLCA2OCwgMTI4LCA2NiwgNzMsIDc5LCA3MiwgNjUsIDkwLCA2NSwgODIsIDE5NiwgCi0gICAgNjYsIDczLCA3OCwgNzksIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDY2LCA3MywgNzgsIDY4LCA3MywgNzgsIDE5OSwgNjYsIDczLCAKLSAgICA3OCwgNjgsIDczLCAxMjgsIDY2LCA3MywgNzgsIDY1LCA4MiwgMjE3LCA2NiwgNzMsIDc2LCA3NiwgNzMsIDc5LCA3OCwgODMsIAotICAgIDEyOCwgNjYsIDczLCA3NiwgNzYsIDczLCA2NSwgODIsIDY4LCA4MywgMTI4LCA2NiwgNzMsIDc2LCA2NSwgNjYsIDczLCA2NSwgCi0gICAgMjA0LCA2NiwgNzMsIDc1LCA3MywgNzgsIDczLCAxMjgsIDY2LCA3MywgNzEsIDEyOCwgNjYsIDczLCAxOTksIDY2LCA3MywgCi0gICAgNjksIDg0LCAxMjgsIDY2LCA3MywgNjgsIDY5LCA3OCwgODQsIDY1LCAyMDQsIDY2LCA3MywgNjgsIDY1LCA3NSwgODUsIDc5LCAKLSAgICAyMDYsIDY2LCA3MywgNjcsIDg5LCA2NywgNzYsIDczLCA4MywgODQsIDEyOCwgNjYsIDczLCA2NywgODksIDY3LCA3NiwgNjksIAotICAgIDgzLCAxMjgsIDY2LCA3MywgNjcsIDg5LCA2NywgNzYsIDY5LCAxMjgsIDY2LCA3MywgNjcsIDY5LCA4MCwgODMsIDEyOCwgCi0gICAgNjYsIDczLCA2NiwgNzYsIDY5LCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA2NiwgNzMsIDY2LCAxMjgsIDY2LCAyMDEsIDY2LCAKLSAgICA3MiwgODUsIDEyOCwgNjYsIDcyLCA3OSwgNzksIDEyOCwgNjYsIDcyLCA3OSwgMTI4LCA2NiwgNzIsIDczLCAxMjgsIDY2LCAKLSAgICA3MiwgNjksIDg0LCA3MiwgMTI4LCA2NiwgNzIsIDY5LCA2OSwgMTI4LCA2NiwgNzIsIDY5LCAxMjgsIDY2LCA3MiwgNjUsIAotICAgIDg0LCA4NCwgNzMsIDgwLCA4MiwgNzksIDc2LCAyMTMsIDY2LCA3MiwgNjUsIDc3LCAxMjgsIDY2LCA3MiwgNjUsIDY1LCAKLSAgICAxMjgsIDY2LCA3MiwgNjUsIDEyOCwgNjYsIDY5LCA4OSwgODksIDY1LCA3NiwgMTI4LCA2NiwgNjksIDg4LCAxMjgsIDY2LCAKLSAgICA2OSwgODYsIDY5LCA4MiwgNjUsIDcxLCA2OSwgMTI4LCA2NiwgNjksIDg0LCA4NywgNjksIDY5LCA3OCwgMTI4LCA2NiwgNjksIAotICAgIDg0LCA4NywgNjksIDY5LCAyMDYsIDY2LCA2OSwgODQsIDcyLCAxMjgsIDY2LCA2OSwgODQsIDY1LCAxMjgsIDY2LCA2OSwgCi0gICAgODQsIDE5MywgNjYsIDY5LCAyMTIsIDY2LCA2OSwgODMsIDczLCA2OCwgMTk3LCA2NiwgNjksIDgyLCA3NSwgNjUsIDc4LCAKLSAgICA2NSwgMjA2LCA2NiwgNjksIDgyLCA2NiwgNjksIDIxMCwgNjYsIDY5LCA4MCwgMTI4LCA2NiwgNjksIDc5LCA4MiwgMTk1LCAKLSAgICA2NiwgNjksIDc4LCA5MCwgNjksIDc4LCAxOTcsIDY2LCA2OSwgNzgsIDg0LCAyMDcsIDY2LCA2OSwgNzgsIDg0LCAxMjgsIAotICAgIDY2LCA2OSwgNzgsIDIxMiwgNjYsIDY5LCA3OCwgNjgsIDY5LCAxMjgsIDY2LCA2OSwgNzgsIDY4LCAxMjgsIDY2LCA2OSwgCi0gICAgNzgsIDE5NiwgNjYsIDY5LCAyMDYsIDY2LCA2OSwgNzYsIDg0LCAxMjgsIDY2LCA2OSwgNzYsIDIxMiwgNjYsIDY5LCA3NiwgCi0gICAgNzksIDIxNSwgNjYsIDY5LCA3NiwgNzYsIDcyLCA3OSwgMjA4LCA2NiwgNjksIDc2LCA3NiwgMTI4LCA2NiwgNjksIDc2LCAKLSAgICAyMDQsIDY2LCA2OSwgNzYsIDcxLCA4NCwgNzIsIDc5LCAyMTAsIDY2LCA2OSwgNzMsIDg0LCA3MiwgMTI4LCA2NiwgNjksIAotICAgIDcyLCA3MywgNzgsIDE5NiwgNjYsIDY5LCA3MiwgNjksIDcyLCAxMjgsIDY2LCA2OSwgNzIsIDY5LCAyMDAsIDY2LCA2OSwgCi0gICAgNzIsIDEyOCwgNjYsIDY5LCAyMDAsIDY2LCA2OSwgNzEsIDczLCA3OCwgNzgsIDczLCA3OCwgNzEsIDEyOCwgNjYsIDY5LCAKLSAgICA3MSwgNzMsIDc4LCA3OCwgNjksIDgyLCAxMjgsIDY2LCA2OSwgNzEsIDczLCAyMDYsIDY2LCA2OSwgNzAsIDc5LCA4MiwgCi0gICAgMTk3LCA2NiwgNjksIDY5LCA4NCwgNzYsIDY5LCAxMjgsIDY2LCA2OSwgNjksIDg0LCA2NSwgMTI4LCA2NiwgNjksIDY5LCAKLSAgICAyMTAsIDY2LCA2OSwgNjksIDcyLCA3MywgODYsIDY5LCAxMjgsIDY2LCA2OSwgNjksIDcyLCAxMjgsIDY2LCA2OSwgNjksIAotICAgIDIwMCwgNjYsIDY5LCA2NywgNjUsIDg1LCA4MywgNjksIDEyOCwgNjYsIDY5LCA2NSwgODYsIDY5LCAyMTAsIDY2LCA2OSwgCi0gICAgNjUsIDg0LCA3MywgNzgsIDE5OSwgNjYsIDY5LCA2NSwgODQsIDEyOCwgNjYsIDY5LCA2NSwgMjEwLCA2NiwgNjksIDY1LCAKLSAgICA3OCwgMTI4LCA2NiwgNjksIDY1LCA3NywgNjksIDE5NiwgNjYsIDY5LCA2NSwgNjgsIDgzLCAxMjgsIDY2LCA2OSwgNjUsIAotICAgIDY3LCAyMDAsIDY2LCA2NywgNjUsIDY4LCAxMjgsIDY2LCA2NywgNjUsIDE5NiwgNjYsIDY2LCA4OSwgODgsIDEyOCwgNjYsIAotICAgIDY2LCA4OSwgODQsIDEyOCwgNjYsIDY2LCA4OSwgODAsIDEyOCwgNjYsIDY2LCA4OSwgMTI4LCA2NiwgNjYsIDg1LCA4OCwgCi0gICAgMTI4LCA2NiwgNjYsIDg1LCA4NCwgMTI4LCA2NiwgNjYsIDg1LCA4MiwgODgsIDEyOCwgNjYsIDY2LCA4NSwgODIsIDEyOCwgCi0gICAgNjYsIDY2LCA4NSwgODAsIDEyOCwgNjYsIDY2LCA4NSwgNzksIDg4LCAxMjgsIDY2LCA2NiwgODUsIDc5LCA4MCwgMTI4LCAKLSAgICA2NiwgNjYsIDg1LCA3OSwgMTI4LCA2NiwgNjYsIDg1LCAxMjgsIDY2LCA2NiwgNzksIDg4LCAxMjgsIDY2LCA2NiwgNzksIAotICAgIDg0LCAxMjgsIDY2LCA2NiwgNzksIDgwLCAxMjgsIDY2LCA2NiwgNzksIDEyOCwgNjYsIDY2LCA3MywgODgsIDEyOCwgNjYsIAotICAgIDY2LCA3MywgODAsIDEyOCwgNjYsIDY2LCA3MywgNjksIDg4LCAxMjgsIDY2LCA2NiwgNzMsIDY5LCA4NCwgMTI4LCA2NiwgCi0gICAgNjYsIDczLCA2OSwgODAsIDEyOCwgNjYsIDY2LCA3MywgNjksIDEyOCwgNjYsIDY2LCA3MywgMTI4LCA2NiwgNjYsIDY5LCAKLSAgICA4OCwgMTI4LCA2NiwgNjYsIDY5LCA4MCwgMTI4LCA2NiwgNjYsIDY5LCA2OSwgMTI4LCA2NiwgNjYsIDY5LCAxMjgsIDY2LCAKLSAgICA2NiwgNjUsIDg4LCAxMjgsIDY2LCA2NiwgNjUsIDg0LCAxMjgsIDY2LCA2NiwgNjUsIDgwLCAxMjgsIDY2LCA2NiwgNjUsIAotICAgIDY1LCAxMjgsIDY2LCA2NiwgNjUsIDEyOCwgNjYsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjYsIDY1LCA4NSwgCi0gICAgMTI4LCA2NiwgNjUsIDg0LCA4NCwgNjksIDgyLCA4OSwgMTI4LCA2NiwgNjUsIDg0LCA3MiwgODQsIDg1LCA2NiwgMTI4LCAKLSAgICA2NiwgNjUsIDg0LCA3MiwgNjUsIDc3LCA2NSwgODMsIDY1LCA4NCwgMTI4LCA2NiwgNjUsIDg0LCA3MiwgMTI4LCA2NiwgNjUsIAotICAgIDg0LCAyMDAsIDY2LCA2NSwgODQsIDY1LCAyMDMsIDY2LCA2NSwgODMsIDgzLCA2NSwgMTI4LCA2NiwgNjUsIDgzLCA4MywgCi0gICAgMTkzLCA2NiwgNjUsIDgzLCA3NSwgNjksIDg0LCA2NiwgNjUsIDc2LCAyMDQsIDY2LCA2NSwgODMsIDcyLCA3NSwgNzMsIAotICAgIDIxMCwgNjYsIDY1LCA4MywgNzIsIDEyOCwgNjYsIDY1LCA4MywgNjksIDc2LCA3MywgNzgsIDE5NywgNjYsIDY1LCA4MywgCi0gICAgNjksIDY2LCA2NSwgNzYsIDc2LCAxMjgsIDY2LCA2NSwgODMsIDY5LCAxMjgsIDY2LCA2NSwgODMsIDE5NywgNjYsIDY1LCAKLSAgICA4MiwgODMsIDEyOCwgNjYsIDY1LCA4MiwgODIsIDczLCA2OSwgODIsIDEyOCwgNjYsIDY1LCA4MiwgODIsIDY5LCA3NSwgNzIsIAotICAgIDEyOCwgNjYsIDY1LCA4MiwgODIsIDY5LCA2OSwgMTI4LCA2NiwgNjUsIDgyLCA4MiwgNjksIDE5NywgNjYsIDY1LCA4MiwgCi0gICAgNzYsIDczLCA3OCwgNjksIDEyOCwgNjYsIDY1LCA4MiwgNzYsIDY5LCA4OSwgMTI4LCA2NiwgNjUsIDgyLCA3MywgODksIDc5LCAKLSAgICA3OSwgODMsIDY1LCA3OCwgMTI4LCA2NiwgNjUsIDgyLCA2NiwgNjksIDIxMCwgNjYsIDY1LCA4MiwgNjUsIDUwLCAxMjgsIAotICAgIDY2LCA2NSwgMjEwLCA2NiwgNjUsIDc4LCA4NCwgNzksIDY3LCAxMjgsIDY2LCA2NSwgNzgsIDc1LCA3OCwgNzksIDg0LCAKLSAgICAxOTcsIDY2LCA2NSwgNzgsIDc1LCAxMjgsIDY2LCA2NSwgNzgsIDIwMywgNjYsIDY1LCA3OCwgNjgsIDEyOCwgNjYsIDY1LCAKLSAgICA3OCwgNjUsIDc4LCA2NSwgMTI4LCA2NiwgNjUsIDc4LCA1MCwgMTI4LCA2NiwgNjUsIDc4LCAxNzgsIDY2LCA2NSwgNzcsIAotICAgIDY2LCA3OSwgNzksIDgzLCAxMjgsIDY2LCA2NSwgNzcsIDY2LCA3OSwgNzksIDEyOCwgNjYsIDY1LCA3NiwgODUsIDY4LCA2NSwgCi0gICAgMTI4LCA2NiwgNjUsIDc2LCA3NiwgODAsIDc5LCA3MywgNzgsIDIxMiwgNjYsIDY1LCA3NiwgNzYsIDc5LCA4NCwgMTI4LCAKLSAgICA2NiwgNjUsIDc2LCA3NiwgNzksIDIxMiwgNjYsIDY1LCA3NiwgNzYsIDc5LCA3OSwgNzgsIDQ1LCA4MywgODAsIDc5LCA3NSwgCi0gICAgNjksIDE5NiwgNjYsIDY1LCA3NiwgNzYsIDc5LCA3OSwgNzgsIDEyOCwgNjYsIDY1LCA3NiwgNjUsIDcxLCAxMjgsIDY2LCAKLSAgICA2NSwgNzYsIDEyOCwgNjYsIDY1LCAyMDQsIDY2LCA2NSwgNzMsIDgyLCA3NSwgNjUsIDc4LCAxMjgsIDY2LCA2NSwgNzMsIAotICAgIDc3LCA2NSwgNzMsIDEyOCwgNjYsIDY1LCA3MiwgODQsIDEyOCwgNjYsIDY1LCA3MiwgNzMsIDgyLCA3MSwgNzksIDc3LCA4NSwgCi0gICAgNzUsIDcyLCA2NSwgMTI4LCA2NiwgNjUsIDcyLCA2NSwgODIsIDUwLCAxMjgsIDY2LCA2NSwgNzIsIDY1LCA4MiwgMTc4LCAKLSAgICA2NiwgNjUsIDcyLCAxMjgsIDY2LCA2NSwgNzEsIDgzLCAxMjgsIDY2LCA2NSwgNzEsIDcxLCA2NSwgNzEsIDE5NywgNjYsIAotICAgIDY1LCA3MSwgNjUsIDEyOCwgNjYsIDY1LCA3MSwgNTEsIDEyOCwgNjYsIDY1LCAxOTksIDY2LCA2NSwgNjgsIDc3LCA3MywgCi0gICAgNzgsIDg0LCA3OSwgMjA2LCA2NiwgNjUsIDY4LCA3MSwgNjksIDgyLCAxMjgsIDY2LCA2NSwgNjgsIDcxLCA2OSwgMTI4LCAKLSAgICA2NiwgNjUsIDY4LCAxMjgsIDY2LCA2NSwgMTk2LCA2NiwgNjUsIDY3LCA4NCwgODIsIDczLCA2NSwgMjA2LCA2NiwgNjUsIAotICAgIDY3LCA3NSwgODcsIDY1LCA4MiwgNjgsIDEyOCwgNjYsIDY1LCA2NywgNzUsIDgzLCA4MCwgNjUsIDY3LCA2OSwgMTI4LCA2NiwgCi0gICAgNjUsIDY3LCA3NSwgODMsIDc2LCA2NSwgODMsIDcyLCAxMjgsIDY2LCA2NSwgNjcsIDc1LCA4MywgNzYsIDY1LCA4MywgMjAwLCAKLSAgICA2NiwgNjUsIDY3LCA3NSwgODMsIDc2LCA2NSwgNzgsIDg0LCA2OSwgMTk2LCA2NiwgNjUsIDY3LCA3NSwgNzIsIDY1LCA3OCwgCi0gICAgMTk2LCA2NiwgNjUsIDY3LCA3NSwgNDUsIDg0LCA3MywgNzYsIDg0LCA2OSwgMTk2LCA2NiwgNjUsIDY3LCA3NSwgMTI4LCAKLSAgICA2NiwgNjUsIDY3LCAyMDMsIDY2LCA2NSwgNjYsIDg5LCAxMjgsIDY2LCA2NSwgNjYsIDIxNywgNjYsIDY1LCA2NSwgODIsIAotICAgIDY5LCA4MiwgODUsIDEyOCwgNjYsIDY1LCA0NSwgNTAsIDEyOCwgNjYsIDUxLCA0OCwgNTMsIDEyOCwgNjYsIDUwLCA1MywgCi0gICAgNTcsIDEyOCwgNjYsIDUwLCA1MywgNTYsIDEyOCwgNjYsIDUwLCA1MywgNTUsIDEyOCwgNjYsIDUwLCA1MywgNTQsIDEyOCwgCi0gICAgNjYsIDUwLCA1MywgNTMsIDEyOCwgNjYsIDUwLCA1MywgMTgwLCA2NiwgNTAsIDUzLCA1MSwgMTI4LCA2NiwgNTAsIDUzLCAKLSAgICA1MCwgMTI4LCA2NiwgNTAsIDUzLCA0OSwgMTI4LCA2NiwgNTAsIDUzLCA0OCwgMTI4LCA2NiwgNTAsIDUyLCA1NywgMTI4LCAKLSAgICA2NiwgNTAsIDUyLCA1NiwgMTI4LCA2NiwgNTAsIDUyLCAxODMsIDY2LCA1MCwgNTIsIDU0LCAxMjgsIDY2LCA1MCwgNTIsIAotICAgIDUzLCAxMjgsIDY2LCA1MCwgNTIsIDE3OSwgNjYsIDUwLCA1MiwgMTc4LCA2NiwgNTAsIDUyLCAxNzcsIDY2LCA1MCwgNTIsIAotICAgIDE3NiwgNjYsIDUwLCA1MSwgNTQsIDEyOCwgNjYsIDUwLCA1MSwgNTIsIDEyOCwgNjYsIDUwLCA1MSwgMTc5LCA2NiwgNTAsIAotICAgIDUxLCA1MCwgMTI4LCA2NiwgNTAsIDUxLCAxNzcsIDY2LCA1MCwgNTEsIDE3NiwgNjYsIDUwLCA1MCwgNTcsIDEyOCwgNjYsIAotICAgIDUwLCA1MCwgNTYsIDEyOCwgNjYsIDUwLCA1MCwgNTUsIDEyOCwgNjYsIDUwLCA1MCwgNTQsIDEyOCwgNjYsIDUwLCA1MCwgCi0gICAgMTgxLCA2NiwgNTAsIDUwLCA1MCwgMTI4LCA2NiwgNTAsIDUwLCA0OSwgMTI4LCA2NiwgNTAsIDUwLCAxNzYsIDY2LCA1MCwgCi0gICAgNDksIDU3LCAxMjgsIDY2LCA1MCwgNDksIDU2LCAxMjgsIDY2LCA1MCwgNDksIDU1LCAxMjgsIDY2LCA1MCwgNDksIDU0LCAKLSAgICAxMjgsIDY2LCA1MCwgNDksIDUzLCAxMjgsIDY2LCA1MCwgNDksIDUyLCAxMjgsIDY2LCA1MCwgNDksIDUxLCAxMjgsIDY2LCAKLSAgICA1MCwgNDksIDUwLCAxMjgsIDY2LCA1MCwgNDksIDQ5LCAxMjgsIDY2LCA1MCwgNDksIDQ4LCAxMjgsIDY2LCA1MCwgNDgsIAotICAgIDU3LCAxMjgsIDY2LCA1MCwgNDgsIDU2LCAxMjgsIDY2LCA1MCwgNDgsIDU1LCAxMjgsIDY2LCA1MCwgNDgsIDU0LCAxMjgsIAotICAgIDY2LCA1MCwgNDgsIDUzLCAxMjgsIDY2LCA1MCwgNDgsIDUyLCAxMjgsIDY2LCA1MCwgNDgsIDUxLCAxMjgsIDY2LCA1MCwgCi0gICAgNDgsIDUwLCAxMjgsIDY2LCA1MCwgNDgsIDQ5LCAxMjgsIDY2LCA1MCwgNDgsIDQ4LCAxMjgsIDY2LCA0OSwgNTcsIDE3NywgCi0gICAgNjYsIDQ5LCA1NywgNDgsIDEyOCwgNjYsIDQ5LCA1NiwgNTcsIDEyOCwgNjYsIDQ5LCA1NiwgNTMsIDEyOCwgNjYsIDQ5LCAKLSAgICA1NiwgNTIsIDEyOCwgNjYsIDQ5LCA1NiwgNTEsIDEyOCwgNjYsIDQ5LCA1NiwgNTAsIDEyOCwgNjYsIDQ5LCA1NiwgNDksIAotICAgIDEyOCwgNjYsIDQ5LCA1NiwgNDgsIDEyOCwgNjYsIDQ5LCA1NSwgNTcsIDEyOCwgNjYsIDQ5LCA1NSwgNTYsIDEyOCwgNjYsIAotICAgIDQ5LCA1NSwgNTUsIDEyOCwgNjYsIDQ5LCA1NSwgMTgyLCA2NiwgNDksIDU1LCA1MiwgMTI4LCA2NiwgNDksIDU1LCAxNzksIAotICAgIDY2LCA0OSwgNTUsIDUwLCAxMjgsIDY2LCA0OSwgNTUsIDQ5LCAxMjgsIDY2LCA0OSwgNTUsIDQ4LCAxMjgsIDY2LCA0OSwgCi0gICAgNTQsIDU3LCAxMjgsIDY2LCA0OSwgNTQsIDU2LCAxMjgsIDY2LCA0OSwgNTQsIDU1LCAxMjgsIDY2LCA0OSwgNTQsIDU0LCAKLSAgICAxMjgsIDY2LCA0OSwgNTQsIDUzLCAxMjgsIDY2LCA0OSwgNTQsIDUyLCAxMjgsIDY2LCA0OSwgNTQsIDE3OSwgNjYsIDQ5LCAKLSAgICA1NCwgMTc4LCA2NiwgNDksIDU0LCA0OSwgMTI4LCA2NiwgNDksIDU0LCA0OCwgMTI4LCA2NiwgNDksIDUzLCAxODUsIDY2LCAKLSAgICA0OSwgNTMsIDU2LCAxMjgsIDY2LCA0OSwgNTMsIDU1LCAxMjgsIDY2LCA0OSwgNTMsIDE4MiwgNjYsIDQ5LCA1MywgNTMsIAotICAgIDEyOCwgNjYsIDQ5LCA1MywgNTIsIDEyOCwgNjYsIDQ5LCA1MywgNTEsIDEyOCwgNjYsIDQ5LCA1MywgNTAsIDEyOCwgNjYsIAotICAgIDQ5LCA1MywgMTc3LCA2NiwgNDksIDUzLCA0OCwgMTI4LCA2NiwgNDksIDUyLCA1NCwgMTI4LCA2NiwgNDksIDUyLCAxODEsIAotICAgIDY2LCA0OSwgNTIsIDUwLCAxMjgsIDY2LCA0OSwgNTIsIDE3NywgNjYsIDQ5LCA1MiwgMTc2LCA2NiwgNDksIDUxLCAxODEsIAotICAgIDY2LCA0OSwgNTEsIDE3OSwgNjYsIDQ5LCA1MSwgNTAsIDEyOCwgNjYsIDQ5LCA1MSwgMTc3LCA2NiwgNDksIDUxLCAxNzYsIAotICAgIDY2LCA0OSwgNTAsIDE4NCwgNjYsIDQ5LCA1MCwgMTgzLCA2NiwgNDksIDUwLCAxODEsIDY2LCA0OSwgNTAsIDE3OSwgNjYsIAotICAgIDQ5LCA1MCwgMTc4LCA2NiwgNDksIDUwLCAxNzcsIDY2LCA0OSwgNTAsIDE3NiwgNjYsIDQ5LCA0OCwgNTcsIDIwNSwgNjYsIAotICAgIDQ5LCA0OCwgNTcsIDE5OCwgNjYsIDQ5LCA0OCwgNTYsIDIwNSwgNjYsIDQ5LCA0OCwgNTYsIDE5OCwgNjYsIDQ5LCA0OCwgCi0gICAgNTUsIDIwNSwgNjYsIDQ5LCA0OCwgNTUsIDE5OCwgNjYsIDQ5LCA0OCwgNTQsIDIwNSwgNjYsIDQ5LCA0OCwgNTQsIDE5OCwgCi0gICAgNjYsIDQ5LCA0OCwgNTMsIDIwNSwgNjYsIDQ5LCA0OCwgNTMsIDE5OCwgNjYsIDQ5LCA0OCwgMTgxLCA2NiwgNDksIDQ4LCAKLSAgICAxODAsIDY2LCA0OSwgNDgsIDE3OCwgNjYsIDQ5LCA0OCwgMTc2LCA2NiwgNDgsIDU3LCAxNzcsIDY2LCA0OCwgNTcsIDE3NiwgCi0gICAgNjYsIDQ4LCA1NiwgNTcsIDEyOCwgNjYsIDQ4LCA1NiwgMTgzLCA2NiwgNDgsIDU2LCA1NCwgMTI4LCA2NiwgNDgsIDU2LCAKLSAgICAxODEsIDY2LCA0OCwgNTYsIDUxLCAxMjgsIDY2LCA0OCwgNTYsIDUwLCAxMjgsIDY2LCA0OCwgNTYsIDE3NywgNjYsIDQ4LCAKLSAgICA1NiwgMTc2LCA2NiwgNDgsIDU1LCA1NywgMTI4LCA2NiwgNDgsIDU1LCAxODQsIDY2LCA0OCwgNTUsIDE4MywgNjYsIDQ4LCAKLSAgICA1NSwgMTgyLCA2NiwgNDgsIDU1LCAxODEsIDY2LCA0OCwgNTUsIDE4MCwgNjYsIDQ4LCA1NSwgMTc5LCA2NiwgNDgsIDU1LCAKLSAgICAxNzgsIDY2LCA0OCwgNTUsIDE3NywgNjYsIDQ4LCA1NSwgMTc2LCA2NiwgNDgsIDU0LCAxODUsIDY2LCA0OCwgNTQsIDE4NCwgCi0gICAgNjYsIDQ4LCA1NCwgMTgzLCA2NiwgNDgsIDU0LCAxODIsIDY2LCA0OCwgNTQsIDE4MSwgNjYsIDQ4LCA1NCwgNTIsIDEyOCwgCi0gICAgNjYsIDQ4LCA1NCwgNTEsIDEyOCwgNjYsIDQ4LCA1NCwgMTc4LCA2NiwgNDgsIDU0LCAxNzcsIDY2LCA0OCwgNTQsIDE3NiwgCi0gICAgNjYsIDQ4LCA1MywgMTg1LCA2NiwgNDgsIDUzLCAxODQsIDY2LCA0OCwgNTMsIDE4MywgNjYsIDQ4LCA1MywgNTQsIDEyOCwgCi0gICAgNjYsIDQ4LCA1MywgMTgxLCA2NiwgNDgsIDUzLCAxODAsIDY2LCA0OCwgNTMsIDE3OSwgNjYsIDQ4LCA1MywgMTc4LCA2NiwgCi0gICAgNDgsIDUzLCAxNzcsIDY2LCA0OCwgNTMsIDE3NiwgNjYsIDQ4LCA1MiwgNTcsIDEyOCwgNjYsIDQ4LCA1MiwgMTg0LCA2NiwgCi0gICAgNDgsIDUyLCA1NSwgMTI4LCA2NiwgNDgsIDUyLCAxODIsIDY2LCA0OCwgNTIsIDE4MSwgNjYsIDQ4LCA1MiwgMTgwLCA2NiwgCi0gICAgNDgsIDUyLCAxNzksIDY2LCA0OCwgNTIsIDE3OCwgNjYsIDQ4LCA1MiwgMTc3LCA2NiwgNDgsIDUyLCAxNzYsIDY2LCA0OCwgCi0gICAgNTEsIDE4NSwgNjYsIDQ4LCA1MSwgMTg0LCA2NiwgNDgsIDUxLCAxODMsIDY2LCA0OCwgNTEsIDE4MiwgNjYsIDQ4LCA1MSwgCi0gICAgNTIsIDEyOCwgNjYsIDQ4LCA1MSwgMTc5LCA2NiwgNDgsIDUxLCAxNzgsIDY2LCA0OCwgNTEsIDE3NywgNjYsIDQ4LCA1MSwgCi0gICAgMTc2LCA2NiwgNDgsIDUwLCAxODUsIDY2LCA0OCwgNTAsIDE4NCwgNjYsIDQ4LCA1MCwgMTgzLCA2NiwgNDgsIDUwLCAxODIsIAotICAgIDY2LCA0OCwgNTAsIDE4MSwgNjYsIDQ4LCA1MCwgMTgwLCA2NiwgNDgsIDUwLCAxNzksIDY2LCA0OCwgNTAsIDUwLCAxMjgsIAotICAgIDY2LCA0OCwgNTAsIDE3NywgNjYsIDQ4LCA1MCwgMTc2LCA2NiwgNDgsIDQ5LCA1NywgMTI4LCA2NiwgNDgsIDQ5LCA1NiwgCi0gICAgMTI4LCA2NiwgNDgsIDQ5LCAxODMsIDY2LCA0OCwgNDksIDE4MiwgNjYsIDQ4LCA0OSwgMTgxLCA2NiwgNDgsIDQ5LCAxODAsIAotICAgIDY2LCA0OCwgNDksIDE3OSwgNjYsIDQ4LCA0OSwgMTc4LCA2NiwgNDgsIDQ5LCAxNzcsIDY2LCA0OCwgNDksIDE3NiwgNjYsIAotICAgIDQ4LCA0OCwgNTcsIDEyOCwgNjYsIDQ4LCA0OCwgMTg1LCA2NiwgNDgsIDQ4LCA1NiwgMTI4LCA2NiwgNDgsIDQ4LCAxODQsIAotICAgIDY2LCA0OCwgNDgsIDU1LCAxMjgsIDY2LCA0OCwgNDgsIDE4MywgNjYsIDQ4LCA0OCwgNTQsIDEyOCwgNjYsIDQ4LCA0OCwgCi0gICAgMTgyLCA2NiwgNDgsIDQ4LCA1MywgNjUsIDEyOCwgNjYsIDQ4LCA0OCwgNTMsIDEyOCwgNjYsIDQ4LCA0OCwgMTgxLCA2NiwgCi0gICAgNDgsIDQ4LCA1MiwgMTI4LCA2NiwgNDgsIDQ4LCAxODAsIDY2LCA0OCwgNDgsIDUxLCAxMjgsIDY2LCA0OCwgNDgsIDE3OSwgCi0gICAgNjYsIDQ4LCA0OCwgNTAsIDEyOCwgNjYsIDQ4LCA0OCwgMTc4LCA2NiwgNDgsIDQ4LCA0OSwgMTI4LCA2NiwgNDgsIDQ4LCAKLSAgICAxNzcsIDY1LCA5MCwgODUsIDEyOCwgNjUsIDg5LCA2NiwgMTI4LCA2NSwgODksIDY1LCA3MiwgMTI4LCA2NSwgODgsIDY5LCAKLSAgICAxMjgsIDY1LCA4NywgNjksIDEyOCwgNjUsIDg3LCA2NSwgMjE3LCA2NSwgODYsIDY5LCA4MywgODQsIDY1LCAyMDYsIDY1LCAKLSAgICA4NiwgNjksIDgyLCA2NSwgNzEsIDE5NywgNjUsIDg2LCA2NSwgNzUsIDgyLCA2NSwgNzIsIDY1LCA4MywgNjUsIDc4LCA4OSwgCi0gICAgNjUsIDEyOCwgNjUsIDg2LCA2NSwgNzEsIDgyLCA2NSwgNzIsIDY1LCAxMjgsIDY1LCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAKLSAgICAxMjgsIDY1LCA4NSwgODQsIDg1LCA3NywgNzgsIDEyOCwgNjUsIDg1LCA4NCwgNzksIDc3LCA3OSwgNjYsIDczLCA3NiwgNjksIAotICAgIDEyOCwgNjUsIDg1LCA4NCwgNzksIDc3LCA2NSwgODQsIDY5LCAxOTYsIDY1LCA4NSwgODMsIDg0LCA4MiwgNjUsIDIwNCwgCi0gICAgNjUsIDg1LCA4MiwgNzMsIDgwLCA3MywgNzEsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY1LCA4NSwgODIsIDY1LCA3NywgNjUsIAotICAgIDkwLCA2OCwgNjUsIDY1LCA3MiwgNjUsIDEyOCwgNjUsIDg1LCA4MiwgNjUsIDc3LCA2NSwgOTAsIDY4LCA2NSwgNjUsIDQ1LCAKLSAgICA1MCwgMTI4LCA2NSwgODUsIDgyLCA2NSwgNzcsIDY1LCA5MCwgNjgsIDY1LCA2NSwgMTI4LCA2NSwgODUsIDc4LCA3OCwgCi0gICAgMTI4LCA2NSwgODUsIDcxLCA4NSwgODMsIDg0LCAxMjgsIDY1LCA4NSwgNzEsIDc3LCA2OSwgNzgsIDg0LCA2NSwgODQsIDczLCAKLSAgICA3OSwgMjA2LCA2NSwgODUsIDY5LCAxMjgsIDY1LCA4NSwgNjYsIDY5LCA4MiwgNzEsIDczLCA3OCwgNjksIDEyOCwgNjUsIAotICAgIDg0LCA4NCwgNzMsIDE5NSwgNjUsIDg0LCA4NCwgNzIsIDY1LCA2NywgNjUsIDc4LCAxMjgsIDY1LCA4NCwgODQsIDY5LCA3OCwgCi0gICAgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDg0LCA4NCwgNjUsIDIwMywgNjUsIDg0LCA4NCwgNjUsIDY3LCA3MiwgNjksIAotICAgIDE5NiwgNjUsIDg0LCA3OSwgMjA1LCA2NSwgODQsIDc4LCA2NSwgMjAwLCA2NSwgODQsIDc3LCA2NSwgNjUsIDg1LCAxMjgsIAotICAgIDY1LCA4NCwgNzMsIDg5LCA2NSwgMTI4LCA2NSwgODQsIDcyLCA3NiwgNjksIDg0LCA3MywgMTk1LCA2NSwgODQsIDcyLCA2NSwgCi0gICAgODIsIDg2LCA2NSwgODYsIDY5LCA2OCwgNzMsIDE5NSwgNjUsIDg0LCA3MiwgNjUsIDgwLCA2NSwgODMsIDY3LCA2NSwgMjA2LCAKLSAgICA2NSwgODMsIDkwLCAxMjgsIDY1LCA4MywgODksIDg1LCA4MiwgMTkzLCA2NSwgODMsIDg5LCA3NywgODAsIDg0LCA3OSwgODQsIAotICAgIDczLCA2NywgNjUsIDc2LCA3NiwgMjE3LCA2NSwgODMsIDg0LCA4MiwgNzksIDc4LCA3OSwgNzcsIDczLCA2NywgNjUsIDIwNCwgCi0gICAgNjUsIDgzLCA4NCwgODIsIDc5LCA3NiwgNzksIDcxLCA3MywgNjcsIDY1LCAyMDQsIDY1LCA4MywgODQsIDc5LCA3OCwgNzMsIAotICAgIDgzLCA3MiwgNjksIDE5NiwgNjUsIDgzLCA4NCwgNjksIDgyLCA3MywgODMsIDc3LCAxMjgsIDY1LCA4MywgODQsIDY5LCA4MiwgCi0gICAgNzMsIDgzLCA3NSwgMjExLCA2NSwgODMsIDg0LCA2OSwgODIsIDczLCA4MywgNzUsIDEyOCwgNjUsIDgzLCA4NCwgNjksIDgyLCAKLSAgICA3MywgODMsIDIwMywgNjUsIDgzLCA4NCwgNjksIDgyLCA3MywgODMsIDY3LCA4NSwgODMsIDEyOCwgNjUsIDgzLCA4MywgODksIAotICAgIDgyLCA3MywgNjUsIDIwNiwgNjUsIDgzLCA4MywgNjksIDgyLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgODMsIDgwLCA3MywgCi0gICAgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgODMsIDgwLCA3MywgODIsIDY1LCA4NCwgNjksIDE5NiwgNjUsIDgzLCAKLSAgICA4MCwgNjksIDgyLCAxMjgsIDY1LCA4MywgNzMsIDY1LCA0NSwgNjUsIDg1LCA4MywgODQsIDgyLCA2NSwgNzYsIDczLCA2NSwgCi0gICAgMTI4LCA2NSwgODMsIDcyLCA3MSwgNjUsIDY2LCAxMjgsIDY1LCA4MywgNzIsIDY5LCA4MywgMTI4LCA2NSwgODMsIDcyLCAKLSAgICA1NywgMTI4LCA2NSwgODMsIDcyLCA1MSwgMTI4LCA2NSwgODMsIDcyLCAxNzgsIDY1LCA4MywgNjcsIDY5LCA3OCwgODQsIAotICAgIDEyOCwgNjUsIDgzLCA2NywgNjksIDc4LCA2OCwgNzMsIDc4LCAxOTksIDY1LCA4MywgNjUsIDc2LCA1MCwgMTI4LCA2NSwgCi0gICAgODIsIDg1LCA3MiwgODUsIDY1LCAxMjgsIDY1LCA4MiwgODQsIDczLCA4MywgMjEyLCA2NSwgODIsIDg0LCA3MywgNjcsIDg1LCAKKyAgICA3MiwgNjksIDgxLCA4NSwgNjksIDgyLCA2OSwgMTk2LCA2NywgNzIsIDY5LCA4MCwgMTI4LCA2NywgNzIsIDY5LCA3MywgNzgsIAorICAgIDY1LCA4MCwgMTI4LCA2NywgNzIsIDY5LCA3MywgNzUsIDcyLCA2OSwgNzMsIDEyOCwgNjcsIDcyLCA2OSwgNzMsIDc1LCA3MiwgCisgICAgNjUsIDc4LCAxMjgsIDY3LCA3MiwgNjksIDY5LCA4MywgMTk3LCA2NywgNzIsIDY5LCA2OSwgODIsIDczLCA3OCwgMTk5LCAKKyAgICA2NywgNzIsIDY5LCA2OSwgNzcsIDEyOCwgNjcsIDcyLCA2OSwgNjksIDc1LCAyMTEsIDY3LCA3MiwgNjksIDY5LCA3NSwgCisgICAgMTI4LCA2NywgNzIsIDY5LCA2OSwgMTI4LCA2NywgNzIsIDY5LCA2NywgNzUsIDY5LCAyMTAsIDY3LCA3MiwgNjksIDY3LCAKKyAgICA3NSwgMTI4LCA2NywgNzIsIDY5LCA2NywgMjAzLCA2NywgNzIsIDE5NywgNjcsIDcyLCA2NSwgODgsIDEyOCwgNjcsIDcyLCAKKyAgICA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA2NywgNzIsIDY1LCA4NCwgODQsIDY1LCA4NywgNjUsIDEyOCwgNjcsIAorICAgIDcyLCA2NSwgODQsIDEyOCwgNjcsIDcyLCA2NSwgODIsIDg0LCAxMjgsIDY3LCA3MiwgNjUsIDgyLCAyMTIsIDY3LCA3MiwgCisgICAgNjUsIDgyLCA3MywgNzksIDg0LCAxMjgsIDY3LCA3MiwgNjUsIDgyLCA3MywgNzksIDIxMiwgNjcsIDcyLCA2NSwgODIsIDY1LCAKKyAgICA2NywgODQsIDY5LCA4MiwgODMsIDEyOCwgNjcsIDcyLCA2NSwgODIsIDY1LCA2NywgODQsIDY5LCA4MiwgMTI4LCA2NywgNzIsIAorICAgIDY1LCA4MiwgMTI4LCA2NywgNzIsIDY1LCA4MCwgODQsIDY5LCA4MiwgMTI4LCA2NywgNzIsIDY1LCA4MCwgMTI4LCA2NywgCisgICAgNzIsIDY1LCA3OCwgNzEsIDEyOCwgNjcsIDcyLCA2NSwgNzgsIDEyOCwgNjcsIDcyLCA2NSwgNzcsIDc1LCA3OSwgMTI4LCAKKyAgICA2NywgNzIsIDY1LCA3NywgNzMsIDc2LCA3OSwgNzgsIDEyOCwgNjcsIDcyLCA2NSwgNzcsIDczLCA3NiwgNzMsIDEyOCwgNjcsIAorICAgIDcyLCA2NSwgMjA1LCA2NywgNzIsIDY1LCA3NSwgNzcsIDE5MywgNjcsIDcyLCA2NSwgNzMsIDgyLCAxMjgsIDY3LCA3MiwgCisgICAgNjUsIDczLCA3OCwgODMsIDEyOCwgNjcsIDcyLCA2NSwgNjgsIDY1LCAxMjgsIDY3LCA3MiwgNjUsIDE5NiwgNjcsIDcyLCAKKyAgICA2NSwgNjUsIDEyOCwgNjcsIDcxLCA3NCwgMTI4LCA2NywgNjksIDg4LCAxMjgsIDY3LCA2OSwgODIsIDY5LCA4MywgMTI4LCAKKyAgICA2NywgNjksIDgyLCA2OSwgNzcsIDc5LCA3OCwgODksIDEyOCwgNjcsIDY5LCA4MiwgNjksIDc1LCAxMjgsIDY3LCA2OSwgODIsIAorICAgIDQ1LCA4NywgNjUsIDEyOCwgNjcsIDY5LCA4MCwgMTI4LCA2NywgNjksIDc5LCA3OCwgNzEsIDY3LCA3MiwgNzMsIDY5LCA4NSwgCisgICAgNzcsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDEyOCwgNjcsIDY5LCA3OSwgNzgsIDcxLCA2NywgNzIsIAorICAgIDczLCA2OSwgODUsIDc3LCA4MywgODMsIDY1LCA3OCwgNzEsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA2NywgNjksIDc5LCAKKyAgICA3OCwgNzEsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNzcsIDgzLCA3MywgNzksIDgzLCAxMjgsIDY3LCA2OSwgNzksIDc4LCA3MSwgCisgICAgNjcsIDcyLCA3MywgNjksIDg1LCA3NywgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDY3LCA2OSwgNzksIDc4LCA3MSwgNjcsIAorICAgIDcyLCA3MywgNjksIDg1LCA3NywgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgNjcsIDY5LCA3OCwgODQsIDg1LCAKKyAgICA4MiwgNzMsIDY1LCAyMDQsIDY3LCA2OSwgNzgsIDg0LCA4MiwgNjksIDc2LCA3MywgNzgsIDE5NywgNjcsIDY5LCA3OCwgODQsIAorICAgIDgyLCA2OSwgNjgsIDEyOCwgNjcsIDY5LCA3OCwgODQsIDgyLCA2OSwgMTk2LCA2NywgNjksIDc4LCA4NCwgODIsIDY5LCAKKyAgICAxMjgsIDY3LCA2OSwgNzgsIDg0LCA4MiwgMTk3LCA2NywgNjksIDc4LCA4NCwgODIsIDY1LCA3NiwgNzMsIDkwLCA2NSwgODQsIAorICAgIDczLCA3OSwgMjA2LCA2NywgNjksIDc4LCAxMjgsIDY3LCA2OSwgNzYsIDg0LCA3MywgMTk1LCA2NywgNjksIDc2LCA4MywgCisgICAgNzMsIDg1LCA4MywgMTI4LCA2NywgNjksIDc2LCA2OSwgNjYsIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDY5LCAKKyAgICA3MywgODIsIDg0LCAxMjgsIDY3LCA2OSwgNzMsIDc2LCA3MywgNzgsIDcxLCAxMjgsIDY3LCA2OSwgNzMsIDc2LCA3MywgNzgsIAorICAgIDE5OSwgNjcsIDY5LCA2OSwgODYsIDEyOCwgNjcsIDY5LCA2OSwgNjYsIDEyOCwgNjcsIDY5LCA2OSwgMTI4LCA2NywgNjksIAorICAgIDY4LCA3MywgNzYsIDc2LCA2NSwgMTI4LCA2NywgNjksIDY4LCA3MywgNzYsIDc2LCAxOTMsIDY3LCA2OSwgNjgsIDIwMSwgCisgICAgNjcsIDY5LCA2NywgNjksIDc1LCAxMjgsIDY3LCA2OSwgNjcsIDY1LCA3NSwgMTI4LCA2NywgNjksIDY3LCA2NSwgMjAzLCAKKyAgICA2NywgNjksIDY1LCA3NiwgNjcsIDEyOCwgNjcsIDY3LCA4NSwgMTI4LCA2NywgNjcsIDc5LCAxMjgsIDY3LCA2NywgNzMsIAorICAgIDEyOCwgNjcsIDY3LCA3MiwgODUsIDEyOCwgNjcsIDY3LCA3MiwgNzksIDEyOCwgNjcsIDY3LCA3MiwgNzMsIDEyOCwgNjcsIAorICAgIDY3LCA3MiwgNzIsIDg1LCAxMjgsIDY3LCA2NywgNzIsIDcyLCA3OSwgMTI4LCA2NywgNjcsIDcyLCA3MiwgNzMsIDEyOCwgCisgICAgNjcsIDY3LCA3MiwgNzIsIDY5LCA2OSwgMTI4LCA2NywgNjcsIDcyLCA3MiwgNjksIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDY1LCAKKyAgICA2NSwgMTI4LCA2NywgNjcsIDcyLCA3MiwgNjUsIDEyOCwgNjcsIDY3LCA3MiwgNjksIDY5LCAxMjgsIDY3LCA2NywgNzIsIAorICAgIDY5LCAxMjgsIDY3LCA2NywgNzIsIDY1LCA2NSwgMTI4LCA2NywgNjcsIDcyLCA2NSwgMTI4LCA2NywgNjcsIDcyLCAxMjgsIAorICAgIDY3LCA2NywgNjksIDY5LCAxMjgsIDY3LCA2NywgNjksIDEyOCwgNjcsIDY3LCA2NSwgNjUsIDEyOCwgNjcsIDY3LCA2NSwgCisgICAgMTI4LCA2NywgNjUsIDg5LCA3OCwgMTI4LCA2NywgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2NywgNjUsIDg4LCAKKyAgICAxMjgsIDY3LCA2NSwgODYsIDY5LCAxMjgsIDY3LCA2NSwgODUsIDg0LCA3MywgNzksIDIwNiwgNjcsIDY1LCA4NSwgNzYsIAorICAgIDY4LCA4MiwgNzksIDc4LCAxMjgsIDY3LCA2NSwgODUsIDY4LCA2NSwgMTI4LCA2NywgNjUsIDg1LCA2NywgNjUsIDgzLCA3MywgCisgICAgNjUsIDIwNiwgNjcsIDY1LCA4NSwgMTI4LCA2NywgNjUsIDg0LCA2NSwgODcsIDY1LCAxMjgsIDY3LCA2NSwgODQsIDEyOCwgCisgICAgNjcsIDY1LCAyMTIsIDY3LCA2NSwgODMsIDg0LCA3NiwgNjksIDEyOCwgNjcsIDY1LCA4MywgNzUsIDY5LCAyMTIsIDY3LCAKKyAgICA2NSwgODIsIDg5LCA4MywgODQsIDczLCA2NSwgMjA2LCA2NywgNjUsIDgyLCA4NCwgODcsIDcyLCA2OSwgNjksIDc2LCAxMjgsIAorICAgIDY3LCA2NSwgODIsIDg0LCA4MiwgNzMsIDY4LCA3MSwgNjksIDEyOCwgNjcsIDY1LCA4MiwgODQsIDEyOCwgNjcsIDY1LCA4MiwgCisgICAgMjExLCA2NywgNjUsIDgyLCA4MiwgNzksIDg0LCAxMjgsIDY3LCA2NSwgODIsIDgyLCA3MywgNjUsIDcxLCAxOTcsIDY3LCAKKyAgICA2NSwgODIsIDgwLCA2OSwgNzgsIDg0LCA4MiwgMjE3LCA2NywgNjUsIDgyLCAyMDgsIDY3LCA2NSwgODIsIDc5LCA4NSwgODMsIAorICAgIDY5LCAyMDQsIDY3LCA2NSwgODIsIDc5LCA3OCwgMTI4LCA2NywgNjUsIDgyLCA3OSwgMjA2LCA2NywgNjUsIDgyLCA3MywgCisgICAgMjAzLCA2NywgNjUsIDgyLCA3MywgNjUsIDIwNiwgNjcsIDY1LCA4MiwgNjksIDg0LCAxMjgsIDY3LCA2NSwgODIsIDY5LCAKKyAgICAyMTIsIDY3LCA2NSwgODIsIDE5NywgNjcsIDY1LCA4MiwgNjgsIDgzLCAxMjgsIDY3LCA2NSwgODIsIDY4LCAxMjgsIDY3LCAKKyAgICA2NSwgODIsIDE5NiwgNjcsIDY1LCA4MiwgMTI4LCA2NywgNjUsIDIxMCwgNjcsIDY1LCA4MCwgODUsIDIxMiwgNjcsIDY1LCAKKyAgICA4MCwgODQsIDczLCA4NiwgNjksIDEyOCwgNjcsIDY1LCA4MCwgODIsIDczLCA2NywgNzksIDgyLCA3OCwgMTI4LCA2NywgNjUsIAorICAgIDgwLCA4MCwgNjksIDE5NiwgNjcsIDY1LCA4MCwgNzksIDEyOCwgNjcsIDY1LCA4MCwgNzMsIDg0LCA4NSwgNzYsIDg1LCA3NywgCisgICAgMTI4LCA2NywgNjUsIDgwLCA3MywgODQsIDY1LCA3NiwgMTI4LCA2NywgNjUsIDc4LCA4NCwgNzMsIDc2LCA3NiwgNjUsIDg0LCAKKyAgICA3MywgNzksIDIwNiwgNjcsIDY1LCA3OCwgNzksIDY5LCAxMjgsIDY3LCA2NSwgNzgsIDE5OSwgNjcsIDY1LCA3OCwgNjgsIAorICAgIDg5LCAxMjgsIDY3LCA2NSwgNzgsIDY4LCA4MiwgNjUsIDY2LCA3MywgNzgsIDY4LCA4NSwgMTI4LCA2NywgNjUsIDc4LCA2OCwgCisgICAgODIsIDY1LCA2NiwgNzMsIDc4LCA2OCwgMjEzLCA2NywgNjUsIDc4LCA2OCwgODIsIDY1LCAxMjgsIDY3LCA2NSwgNzgsIDY4LCAKKyAgICA4MiwgMTkzLCA2NywgNjUsIDc4LCA2OCwgNzYsIDY5LCAxMjgsIDY3LCA2NSwgNzgsIDY3LCA2OSwgODIsIDEyOCwgNjcsIAorICAgIDY1LCA3OCwgNjcsIDY5LCA3NiwgNzYsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA2NSwgNzgsIDY3LCA2OSwgNzYsIDEyOCwgCisgICAgNjcsIDY1LCA3OCwgNjcsIDY5LCAyMDQsIDY3LCA2NSwgNzgsIDEyOCwgNjcsIDY1LCA3NywgODAsIDczLCA3OCwgNzEsIAorICAgIDEyOCwgNjcsIDY1LCA3NywgNzgsIDg1LCAxOTUsIDY3LCA2NSwgNzcsIDY5LCA4MiwgNjUsIDEyOCwgNjcsIDY1LCA3NywgCisgICAgNjksIDgyLCAxOTMsIDY3LCA2NSwgNzcsIDY5LCA3NiwgMTI4LCA2NywgNjUsIDc2LCA4OSwgNjUsIDEyOCwgNjcsIDY1LCAKKyAgICA3NiwgODksIDE5MywgNjcsIDY1LCA3NiwgODgsIDEyOCwgNjcsIDY1LCA3NiwgNzYsIDEyOCwgNjcsIDY1LCA3NiwgMjA0LCAKKyAgICA2NywgNjUsIDc2LCA2OSwgNzgsIDY4LCA2NSwgODIsIDEyOCwgNjcsIDY1LCA3NiwgNjksIDc4LCA2OCwgNjUsIDIxMCwgNjcsIAorICAgIDY1LCA3NiwgNjcsIDg1LCA3NiwgNjUsIDg0LCA3OSwgODIsIDEyOCwgNjcsIDY1LCA3NiwgNjcsIDEyOCwgNjcsIDY1LCA3NSwgCisgICAgODIsIDY1LCAxMjgsIDY3LCA2NSwgNzUsIDE5NywgNjcsIDY1LCA3MywgMTI4LCA2NywgNjUsIDcyLCAxMjgsIDY3LCA2NSwgCisgICAgNjksIDgzLCA4NSwgODIsIDY1LCAxMjgsIDY3LCA2NSwgNjgsIDg1LCA2NywgNjksIDg1LCA4MywgMTI4LCA2NywgNjUsIDY4LCAKKyAgICAxOTMsIDY3LCA2NSwgNjcsIDg0LCA4NSwgODMsIDEyOCwgNjcsIDY1LCA2NiwgNzYsIDY5LCA4NywgNjUsIDg5LCAxMjgsIAorICAgIDY3LCA2NSwgNjYsIDczLCA3OCwgNjksIDg0LCAxMjgsIDY3LCA2NSwgNjYsIDY2LCA2NSwgNzEsIDY5LCA0NSwgODQsIDgyLCAKKyAgICA2OSwgNjksIDEyOCwgNjcsIDY1LCA2NSwgNzgsIDcxLCAxMjgsIDY3LCA2NSwgNjUsIDczLCAxMjgsIDY3LCAxOTMsIDY3LCAKKyAgICA0OCwgNTAsIDUyLCAxMjgsIDY3LCA0OCwgNTAsIDUxLCAxMjgsIDY3LCA0OCwgNTAsIDUwLCAxMjgsIDY3LCA0OCwgNTAsIAorICAgIDQ5LCAxMjgsIDY3LCA0OCwgNTAsIDQ4LCAxMjgsIDY3LCA0OCwgNDksIDU3LCAxMjgsIDY3LCA0OCwgNDksIDU2LCAxMjgsIAorICAgIDY3LCA0OCwgNDksIDU1LCAxMjgsIDY3LCA0OCwgNDksIDU0LCAxMjgsIDY3LCA0OCwgNDksIDUzLCAxMjgsIDY3LCA0OCwgCisgICAgNDksIDUyLCAxMjgsIDY3LCA0OCwgNDksIDUxLCAxMjgsIDY3LCA0OCwgNDksIDUwLCAxMjgsIDY3LCA0OCwgNDksIDQ5LCAKKyAgICAxMjgsIDY3LCA0OCwgNDksIDQ4LCA2NSwgMTI4LCA2NywgNDgsIDQ5LCA0OCwgMTI4LCA2NywgNDgsIDQ4LCA1NywgMTI4LCAKKyAgICA2NywgNDgsIDQ4LCA1NiwgMTI4LCA2NywgNDgsIDQ4LCA1NSwgMTI4LCA2NywgNDgsIDQ4LCA1NCwgMTI4LCA2NywgNDgsIAorICAgIDQ4LCA1MywgMTI4LCA2NywgNDgsIDQ4LCA1MiwgMTI4LCA2NywgNDgsIDQ4LCA1MSwgMTI4LCA2NywgNDgsIDQ4LCA1MCwgCisgICAgNjcsIDEyOCwgNjcsIDQ4LCA0OCwgNTAsIDY2LCAxMjgsIDY3LCA0OCwgNDgsIDUwLCA2NSwgMTI4LCA2NywgNDgsIDQ4LCAKKyAgICA1MCwgMTI4LCA2NywgNDgsIDQ4LCA0OSwgMTI4LCA2NywgNDUsIDgzLCA3MywgNzcsIDgwLCA3NiwgNzMsIDcwLCA3MywgNjksIAorICAgIDE5NiwgNjcsIDQ1LCA1MSwgNTcsIDEyOCwgNjcsIDQ1LCA0OSwgNTYsIDEyOCwgNjYsIDkwLCA4NSwgNzgsIDE5OSwgNjYsIAorICAgIDkwLCA3MiwgMjAxLCA2NiwgODksIDg0LCAxOTcsIDY2LCA4OSwgNjksIDc2LCA3OSwgODIsIDg1LCA4MywgODMsIDczLCA2NSwgCisgICAgNzgsIDQ1LCA4NSwgNzUsIDgyLCA2NSwgNzMsIDc4LCA3MywgNjUsIDIwNiwgNjYsIDg4LCA3MSwgMTI4LCA2NiwgODcsIDczLCAKKyAgICAxMjgsIDY2LCA4NywgNjksIDY5LCAxMjgsIDY2LCA4NywgNjksIDEyOCwgNjYsIDg3LCA2NSwgMTI4LCA2NiwgODUsIDg1LCAKKyAgICA3NywgNzMsIDgzLCA3MiwgMTI4LCA2NiwgODUsIDg0LCA4NCwgNzksIDc4LCAxMjgsIDY2LCA4NSwgODQsIDg0LCA3OSwgCisgICAgMjA2LCA2NiwgODUsIDg0LCA4NCwgNjksIDgyLCA3MCwgNzYsIDg5LCAxMjgsIDY2LCA4NSwgMjEyLCA2NiwgODUsIDgzLCAKKyAgICA4NCwgMjExLCA2NiwgODUsIDgzLCAyMTIsIDY2LCA4NSwgODMsIDgzLCA4OSwgNjksIDgyLCA4NSwgMTI4LCA2NiwgODUsIAorICAgIDgzLCA3MywgNzgsIDY5LCA4MywgMjExLCA2NiwgODUsIDIxMSwgNjYsIDg1LCA4MiwgMjEzLCA2NiwgODUsIDgyLCA4MiwgCisgICAgNzMsIDg0LCA3OSwgMTI4LCA2NiwgODUsIDgyLCA1MCwgMTI4LCA2NiwgODUsIDIxMCwgNjYsIDg1LCA3OSwgODgsIDEyOCwgCisgICAgNjYsIDg1LCA3OSwgODAsIDEyOCwgNjYsIDg1LCA3OCwgNzgsIDIxNywgNjYsIDg1LCA3OCwgNzEsIDEyOCwgNjYsIDg1LCAKKyAgICA3NywgODAsIDIxNywgNjYsIDg1LCA3NiwgODUsIDcxLCAxMjgsIDY2LCA4NSwgNzYsIDg1LCAxOTksIDY2LCA4NSwgNzYsIAorICAgIDc2LCA4MywgNjksIDg5LCA2OSwgMTI4LCA2NiwgODUsIDc2LCA3NiwgMjExLCA2NiwgODUsIDc2LCA3NiwgNzIsIDc5LCA4MiwgCisgICAgNzgsIDEyOCwgNjYsIDg1LCA3NiwgNzYsIDcyLCA3OSwgODIsIDIwNiwgNjYsIDg1LCA3NiwgNzYsIDY5LCA4NCwgMTI4LCAKKyAgICA2NiwgODUsIDc2LCA3NiwgNjksIDIxMiwgNjYsIDg1LCA3NiwgNzYsIDEyOCwgNjYsIDg1LCA3NiwgNjYsIDEyOCwgNjYsIAorICAgIDg1LCA3NSwgODksIDEyOCwgNjYsIDg1LCA3MywgNzYsIDY4LCA3MywgNzgsIDcxLCA4MywgMTI4LCA2NiwgODUsIDczLCA3NiwgCisgICAgNjgsIDczLCA3OCwgNzEsIDEyOCwgNjYsIDg1LCA3MywgNzYsIDY4LCA3MywgNzgsIDE5OSwgNjYsIDg1LCA3MiwgNzMsIAorICAgIDE5NiwgNjYsIDg1LCA3MSwgNzMsIDc4LCA2OSwgODMsIDE5NywgNjYsIDg1LCA3MSwgMTI4LCA2NiwgODUsIDcwLCA3MCwgCisgICAgNjUsIDc2LCA3OSwgMTI4LCA2NiwgODUsIDY4LCAxMjgsIDY2LCA4NSwgNjcsIDc1LCA3NiwgNjksIDEyOCwgNjYsIDg1LCAKKyAgICA2NiwgNjYsIDc2LCA2OSwgODMsIDEyOCwgNjYsIDg1LCA2NiwgNjYsIDc2LCA2OSwgMTI4LCA2NiwgODMsIDg0LCA2NSwgODIsIAorICAgIDEyOCwgNjYsIDgzLCA3NSwgODUsIDIxMCwgNjYsIDgzLCA3NSwgNjUsIDE3MywgNjYsIDgzLCA2OCwgODUsIDIxMSwgNjYsIAorICAgIDgyLCA4NSwgODMsIDIwMCwgNjYsIDgyLCA3OSwgNzgsIDkwLCA2OSwgMTI4LCA2NiwgODIsIDc5LCA3NSwgNjksIDIwNiwgCisgICAgNjYsIDgyLCA3OSwgNjUsIDE5NiwgNjYsIDgyLCA3MywgODMsIDg0LCA3NiwgNjksIDEyOCwgNjYsIDgyLCA3MywgNzEsIDcyLCAKKyAgICA4NCwgNzgsIDY5LCA4MywgMjExLCA2NiwgODIsIDczLCA2OSwgNzAsIDY3LCA2NSwgODMsIDY5LCAxMjgsIDY2LCA4MiwgNzMsIAorICAgIDY4LCA3MSwgMTk3LCA2NiwgODIsIDczLCA2OCwgMTk3LCA2NiwgODIsIDczLCA2NywgNzUsIDEyOCwgNjYsIDgyLCA2OSwgCisgICAgODYsIDczLCA4MywgMTI4LCA2NiwgODIsIDY5LCA4NiwgNjksIDQ1LCA3NywgNjUsIDY3LCA4MiwgNzksIDc4LCAxMjgsIDY2LCAKKyAgICA4MiwgNjksIDg2LCAxOTcsIDY2LCA4MiwgNjksIDY1LCA4NCwgMjAwLCA2NiwgODIsIDY5LCA2NSwgNzUsIDg0LCA3MiwgODIsIAorICAgIDc5LCA4NSwgNzEsIDcyLCAxMjgsIDY2LCA4MiwgNjgsIDE5MywgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNzMsIDc4LCAKKyAgICAxOTksIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDY5LCA4MywgMTI4LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCAxMjgsIAorICAgIDY2LCA4MiwgNjUsIDc4LCA2NywgMjAwLCA2NiwgODIsIDY1LCA3NSwgNjcsIDY5LCA4NCwgMTI4LCA2NiwgODIsIDY1LCA2NywgCisgICAgNzUsIDY5LCA4NCwgNjksIDE5NiwgNjYsIDgyLCA2NSwgNjcsIDc1LCA2OSwgMjEyLCA2NiwgODIsIDY1LCA2NywgNjksIAorICAgIDEyOCwgNjYsIDgxLCAxMjgsIDY2LCA4MCwgNzIsIDEyOCwgNjYsIDc5LCA4OSwgMjExLCA2NiwgNzksIDg5LCAxMjgsIDY2LCAKKyAgICA3OSwgODgsIDczLCA3OCwgMTk5LCA2NiwgNzksIDg3LCA4NCwgNzMsIDY5LCAxMjgsIDY2LCA3OSwgODcsIDg0LCA3MywgCisgICAgMTk3LCA2NiwgNzksIDg3LCA3NiwgNzMsIDc4LCA3MSwgMTI4LCA2NiwgNzksIDg3LCA3NiwgMTI4LCA2NiwgNzksIDg3LCAKKyAgICAyMDQsIDY2LCA3OSwgODcsIDczLCA3OCwgMTk5LCA2NiwgNzksIDIxNSwgNjYsIDc5LCA4NSwgODEsIDg1LCA2OSwgODQsIAorICAgIDEyOCwgNjYsIDc5LCA4NSwgODEsIDg1LCA2OSwgMjEyLCA2NiwgNzksIDg1LCA3OCwgNjgsIDY1LCA4MiwgMjE3LCA2NiwgCisgICAgNzksIDg0LCA4NCwgNzksIDc3LCA0NSwgODMsIDcyLCA2NSwgNjgsIDY5LCAxOTYsIDY2LCA3OSwgODQsIDg0LCA3OSwgNzcsIAorICAgIDQ1LCA3NiwgNzMsIDcxLCA3MiwgODQsIDY5LCAxOTYsIDY2LCA3OSwgODQsIDg0LCA3OSwgNzcsIDEyOCwgNjYsIDc5LCA4NCwgCisgICAgODQsIDc5LCAyMDUsIDY2LCA3OSwgODQsIDg0LCA3NiwgNjksIDEyOCwgNjYsIDc5LCA4NCwgODQsIDc2LCAxOTcsIDY2LCAKKyAgICA3OSwgODQsIDIwMCwgNjYsIDc5LCA4MiwgODUsIDg0LCA3OSwgMTI4LCA2NiwgNzksIDgyLCA2NSwgODgsIDQ1LCA1MSwgCisgICAgMTI4LCA2NiwgNzksIDgyLCA2NSwgODgsIDQ1LCA1MCwgMTI4LCA2NiwgNzksIDgyLCA2NSwgODgsIDEyOCwgNjYsIDc5LCAKKyAgICA4MCwgNzksIDc3LCA3OSwgNzAsIDIwNywgNjYsIDc5LCA3OSwgODQsIDgzLCAxMjgsIDY2LCA3OSwgNzksIDg0LCAxMjgsIAorICAgIDY2LCA3OSwgNzksIDc3LCA2OSwgODIsIDY1LCA3OCwgNzEsIDEyOCwgNjYsIDc5LCA3OSwgNzUsIDgzLCAxMjgsIDY2LCA3OSwgCisgICAgNzksIDc1LCA3NywgNjUsIDgyLCA3NSwgMTI4LCA2NiwgNzksIDc5LCA3NSwgNzcsIDY1LCA4MiwgMjAzLCA2NiwgNzksIDc4LCAKKyAgICA2OSwgMTI4LCA2NiwgNzksIDc3LCA2NiwgMTI4LCA2NiwgNzksIDc3LCAxMjgsIDY2LCA3OSwgNzYsIDg0LCAxMjgsIDY2LCAKKyAgICA3OSwgNzYsIDIxMiwgNjYsIDc5LCA3MiwgNjUsIDczLCA4MiwgNzMsIDE5NSwgNjYsIDc5LCA2OCwgODksIDEyOCwgNjYsIAorICAgIDc5LCA2OCwgMjE3LCA2NiwgNzksIDY1LCA4MiwgMTI4LCA2NiwgNzksIDY1LCAxMjgsIDY2LCA3NiwgODUsIDY5LCAxMjgsIAorICAgIDY2LCA3NiwgODUsIDE5NywgNjYsIDc2LCA3OSwgODcsIDczLCA3OCwgMTk5LCA2NiwgNzYsIDc5LCA4NywgNzAsIDczLCA4MywgCisgICAgNzIsIDEyOCwgNjYsIDc2LCA3OSwgMjE1LCA2NiwgNzYsIDc5LCA4MywgODMsIDc5LCA3NywgMTI4LCA2NiwgNzYsIDc5LCAKKyAgICA3OSwgNjgsIDEyOCwgNjYsIDc2LCA3OSwgNzgsIDE5NiwgNjYsIDc2LCA3OSwgNjcsIDc1LCAxMjgsIDY2LCA3NiwgNzMsIAorICAgIDc4LCAyMDMsIDY2LCA3NiwgNjUsIDc4LCA3NSwgMTI4LCA2NiwgNzYsIDY1LCA3OCwgMjAzLCA2NiwgNzYsIDY1LCA2OCwgCisgICAgMTk3LCA2NiwgNzYsIDY1LCA2NywgNzUsIDc2LCA2OSwgODQsIDg0LCA2OSwgMjEwLCA2NiwgNzYsIDY1LCA2NywgNzUsIDcwLCAKKyAgICA3OSwgNzksIDIxMiwgNjYsIDc2LCA2NSwgNjcsIDc1LCA0NSwgNzYsIDY5LCA4NCwgODQsIDY5LCAyMTAsIDY2LCA3NiwgNjUsIAorICAgIDY3LCA3NSwgNDUsIDcwLCA2OSwgNjUsIDg0LCA3MiwgNjksIDgyLCA2OSwgMTk2LCA2NiwgNzYsIDY1LCA2NywgNzUsIDEyOCwgCisgICAgNjYsIDc1LCA2NSwgMTczLCA2NiwgNzMsIDg0LCA4NCwgNjksIDgyLCAxMjgsIDY2LCA3MywgODQsIDczLCA3OCwgMTk5LCAKKyAgICA2NiwgNzMsIDg0LCAxOTcsIDY2LCA3MywgODMsIDc3LCA4NSwgODQsIDIwMCwgNjYsIDczLCA4MywgNzcsIDczLCA3NiwgNzYsIAorICAgIDY1LCAyMDAsIDY2LCA3MywgODMsIDcyLCA3OSwgODAsIDEyOCwgNjYsIDczLCA4MywgNjksIDY3LCA4NCwgNzMsIDc4LCAKKyAgICAxOTksIDY2LCA3MywgODMsIDY1LCA3MiwgMTI4LCA2NiwgNzMsIDgyLCA4NSwgMTI4LCA2NiwgNzMsIDgyLCA4NCwgNzIsIAorICAgIDY4LCA2NSwgMjE3LCA2NiwgNzMsIDgyLCA3MSwgNjUsIDEyOCwgNjYsIDczLCA4MiwgNzEsIDE5MywgNjYsIDczLCA4MiwgCisgICAgNjgsIDEyOCwgNjYsIDczLCA3OSwgNzIsIDY1LCA5MCwgNjUsIDgyLCAxOTYsIDY2LCA3MywgNzgsIDc5LCA2NywgODUsIDc2LCAKKyAgICA2NSwgMjEwLCA2NiwgNzMsIDc4LCA2OCwgNzMsIDc4LCAxOTksIDY2LCA3MywgNzgsIDY4LCA3MywgMTI4LCA2NiwgNzMsIAorICAgIDc4LCA2NSwgODIsIDIxNywgNjYsIDczLCA3NiwgNzYsIDczLCA3OSwgNzgsIDgzLCAxMjgsIDY2LCA3MywgNzYsIDc2LCA3MywgCisgICAgNjUsIDgyLCA2OCwgODMsIDEyOCwgNjYsIDczLCA3NiwgNjUsIDY2LCA3MywgNjUsIDIwNCwgNjYsIDczLCA3NSwgNzMsIDc4LCAKKyAgICA3MywgMTI4LCA2NiwgNzMsIDcxLCAxMjgsIDY2LCA3MywgMTk5LCA2NiwgNzMsIDY5LCA4NCwgMTI4LCA2NiwgNzMsIDY4LCAKKyAgICA2OSwgNzgsIDg0LCA2NSwgMjA0LCA2NiwgNzMsIDY4LCA2NSwgNzUsIDg1LCA3OSwgMjA2LCA2NiwgNzMsIDY3LCA4OSwgNjcsIAorICAgIDc2LCA3MywgODMsIDg0LCAxMjgsIDY2LCA3MywgNjcsIDg5LCA2NywgNzYsIDY5LCA4MywgMTI4LCA2NiwgNzMsIDY3LCA4OSwgCisgICAgNjcsIDc2LCA2OSwgMTI4LCA2NiwgNzMsIDY3LCA2OSwgODAsIDgzLCAxMjgsIDY2LCA3MywgNjYsIDc2LCA2OSwgNDUsIDY3LCAKKyAgICA4MiwgNjksIDE5NywgNjYsIDczLCA2NiwgMTI4LCA2NiwgMjAxLCA2NiwgNzIsIDg1LCAxMjgsIDY2LCA3MiwgNzksIDc5LCAKKyAgICAxMjgsIDY2LCA3MiwgNzksIDEyOCwgNjYsIDcyLCA3MywgMTI4LCA2NiwgNzIsIDY5LCA4NCwgNzIsIDEyOCwgNjYsIDcyLCAKKyAgICA2OSwgNjksIDEyOCwgNjYsIDcyLCA2OSwgMTI4LCA2NiwgNzIsIDY1LCA4NCwgODQsIDczLCA4MCwgODIsIDc5LCA3NiwgCisgICAgMjEzLCA2NiwgNzIsIDY1LCA3NywgMTI4LCA2NiwgNzIsIDY1LCA2NSwgMTI4LCA2NiwgNzIsIDY1LCAxMjgsIDY2LCA2OSwgCisgICAgODksIDg5LCA2NSwgNzYsIDEyOCwgNjYsIDY5LCA4OCwgMTI4LCA2NiwgNjksIDg2LCA2OSwgODIsIDY1LCA3MSwgNjksIAorICAgIDEyOCwgNjYsIDY5LCA4NCwgODcsIDY5LCA2OSwgNzgsIDEyOCwgNjYsIDY5LCA4NCwgODcsIDY5LCA2OSwgMjA2LCA2NiwgCisgICAgNjksIDg0LCA3MiwgMTI4LCA2NiwgNjksIDg0LCA2NSwgMTI4LCA2NiwgNjksIDg0LCAxOTMsIDY2LCA2OSwgMjEyLCA2NiwgCisgICAgNjksIDgzLCA3MywgNjgsIDE5NywgNjYsIDY5LCA4MiwgNzUsIDY1LCA3OCwgNjUsIDIwNiwgNjYsIDY5LCA4MiwgNjYsIDY5LCAKKyAgICAyMTAsIDY2LCA2OSwgODAsIDEyOCwgNjYsIDY5LCA3OSwgODIsIDE5NSwgNjYsIDY5LCA3OCwgOTAsIDY5LCA3OCwgMTk3LCAKKyAgICA2NiwgNjksIDc4LCA4NCwgMjA3LCA2NiwgNjksIDc4LCA4NCwgMTI4LCA2NiwgNjksIDc4LCAyMTIsIDY2LCA2OSwgNzgsIAorICAgIDY4LCA2OSwgMTI4LCA2NiwgNjksIDc4LCA2OCwgMTI4LCA2NiwgNjksIDc4LCAxOTYsIDY2LCA2OSwgMjA2LCA2NiwgNjksIAorICAgIDc2LCA4NCwgMTI4LCA2NiwgNjksIDc2LCAyMTIsIDY2LCA2OSwgNzYsIDc5LCAyMTUsIDY2LCA2OSwgNzYsIDc2LCA3MiwgCisgICAgNzksIDIwOCwgNjYsIDY5LCA3NiwgNzYsIDEyOCwgNjYsIDY5LCA3NiwgMjA0LCA2NiwgNjksIDc2LCA3MSwgODQsIDcyLCAKKyAgICA3OSwgMjEwLCA2NiwgNjksIDczLCA4NCwgNzIsIDEyOCwgNjYsIDY5LCA3MiwgNzMsIDc4LCAxOTYsIDY2LCA2OSwgNzIsIAorICAgIDY5LCA3MiwgMTI4LCA2NiwgNjksIDcyLCA2OSwgMjAwLCA2NiwgNjksIDcyLCAxMjgsIDY2LCA2OSwgMjAwLCA2NiwgNjksIAorICAgIDcxLCA3MywgNzgsIDc4LCA3MywgNzgsIDcxLCAxMjgsIDY2LCA2OSwgNzEsIDczLCA3OCwgNzgsIDY5LCA4MiwgMTI4LCA2NiwgCisgICAgNjksIDcxLCA3MywgMjA2LCA2NiwgNjksIDcwLCA3OSwgODIsIDE5NywgNjYsIDY5LCA2OSwgODQsIDc2LCA2OSwgMTI4LCAKKyAgICA2NiwgNjksIDY5LCA4NCwgNjUsIDEyOCwgNjYsIDY5LCA2OSwgMjEwLCA2NiwgNjksIDY5LCA3MiwgNzMsIDg2LCA2OSwgCisgICAgMTI4LCA2NiwgNjksIDY5LCA3MiwgMTI4LCA2NiwgNjksIDY5LCAyMDAsIDY2LCA2OSwgNjcsIDY1LCA4NSwgODMsIDY5LCAKKyAgICAxMjgsIDY2LCA2OSwgNjUsIDg2LCA2OSwgMjEwLCA2NiwgNjksIDY1LCA4NCwgNzMsIDc4LCAxOTksIDY2LCA2OSwgNjUsIAorICAgIDg0LCAxMjgsIDY2LCA2OSwgNjUsIDIxMCwgNjYsIDY5LCA2NSwgNzgsIDEyOCwgNjYsIDY5LCA2NSwgNzcsIDY5LCAxOTYsIAorICAgIDY2LCA2OSwgNjUsIDY4LCA4MywgMTI4LCA2NiwgNjksIDY1LCA2NywgMjAwLCA2NiwgNjcsIDY1LCA2OCwgMTI4LCA2NiwgCisgICAgNjcsIDY1LCAxOTYsIDY2LCA2NiwgODksIDg4LCAxMjgsIDY2LCA2NiwgODksIDg0LCAxMjgsIDY2LCA2NiwgODksIDgwLCAKKyAgICAxMjgsIDY2LCA2NiwgODksIDEyOCwgNjYsIDY2LCA4NSwgODgsIDEyOCwgNjYsIDY2LCA4NSwgODQsIDEyOCwgNjYsIDY2LCAKKyAgICA4NSwgODIsIDg4LCAxMjgsIDY2LCA2NiwgODUsIDgyLCAxMjgsIDY2LCA2NiwgODUsIDgwLCAxMjgsIDY2LCA2NiwgODUsIAorICAgIDc5LCA4OCwgMTI4LCA2NiwgNjYsIDg1LCA3OSwgODAsIDEyOCwgNjYsIDY2LCA4NSwgNzksIDEyOCwgNjYsIDY2LCA4NSwgCisgICAgMTI4LCA2NiwgNjYsIDc5LCA4OCwgMTI4LCA2NiwgNjYsIDc5LCA4NCwgMTI4LCA2NiwgNjYsIDc5LCA4MCwgMTI4LCA2NiwgCisgICAgNjYsIDc5LCAxMjgsIDY2LCA2NiwgNzMsIDg4LCAxMjgsIDY2LCA2NiwgNzMsIDgwLCAxMjgsIDY2LCA2NiwgNzMsIDY5LCAKKyAgICA4OCwgMTI4LCA2NiwgNjYsIDczLCA2OSwgODQsIDEyOCwgNjYsIDY2LCA3MywgNjksIDgwLCAxMjgsIDY2LCA2NiwgNzMsIAorICAgIDY5LCAxMjgsIDY2LCA2NiwgNzMsIDEyOCwgNjYsIDY2LCA2OSwgODgsIDEyOCwgNjYsIDY2LCA2OSwgODAsIDEyOCwgNjYsIAorICAgIDY2LCA2OSwgNjksIDEyOCwgNjYsIDY2LCA2OSwgMTI4LCA2NiwgNjYsIDY1LCA4OCwgMTI4LCA2NiwgNjYsIDY1LCA4NCwgCisgICAgMTI4LCA2NiwgNjYsIDY1LCA4MCwgMTI4LCA2NiwgNjYsIDY1LCA2NSwgMTI4LCA2NiwgNjYsIDY1LCAxMjgsIDY2LCA2NSwgCisgICAgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY2LCA2NSwgODUsIDEyOCwgNjYsIDY1LCA4NCwgODQsIDY5LCA4MiwgODksIAorICAgIDEyOCwgNjYsIDY1LCA4NCwgNzIsIDg0LCA4NSwgNjYsIDEyOCwgNjYsIDY1LCA4NCwgNzIsIDY1LCA3NywgNjUsIDgzLCA2NSwgCisgICAgODQsIDEyOCwgNjYsIDY1LCA4NCwgNzIsIDEyOCwgNjYsIDY1LCA4NCwgMjAwLCA2NiwgNjUsIDg0LCA2NSwgMjAzLCA2NiwgCisgICAgNjUsIDgzLCA4MywgNjUsIDEyOCwgNjYsIDY1LCA4MywgODMsIDE5MywgNjYsIDY1LCA4MywgNzUsIDY5LCA4NCwgNjYsIDY1LCAKKyAgICA3NiwgMjA0LCA2NiwgNjUsIDgzLCA3MiwgNzUsIDczLCAyMTAsIDY2LCA2NSwgODMsIDcyLCAxMjgsIDY2LCA2NSwgODMsIAorICAgIDY5LCA3NiwgNzMsIDc4LCAxOTcsIDY2LCA2NSwgODMsIDY5LCA2NiwgNjUsIDc2LCA3NiwgMTI4LCA2NiwgNjUsIDgzLCA2OSwgCisgICAgMTI4LCA2NiwgNjUsIDgzLCAxOTcsIDY2LCA2NSwgODIsIDgzLCAxMjgsIDY2LCA2NSwgODIsIDgyLCA3MywgNjksIDgyLCAKKyAgICAxMjgsIDY2LCA2NSwgODIsIDgyLCA2OSwgNzUsIDcyLCAxMjgsIDY2LCA2NSwgODIsIDgyLCA2OSwgNjksIDEyOCwgNjYsIAorICAgIDY1LCA4MiwgODIsIDY5LCAxOTcsIDY2LCA2NSwgODIsIDc2LCA3MywgNzgsIDY5LCAxMjgsIDY2LCA2NSwgODIsIDc2LCA2OSwgCisgICAgODksIDEyOCwgNjYsIDY1LCA4MiwgNzMsIDg5LCA3OSwgNzksIDgzLCA2NSwgNzgsIDEyOCwgNjYsIDY1LCA4MiwgNjYsIDY5LCAKKyAgICAyMTAsIDY2LCA2NSwgODIsIDY1LCA1MCwgMTI4LCA2NiwgNjUsIDIxMCwgNjYsIDY1LCA3OCwgODQsIDc5LCA2NywgMTI4LCAKKyAgICA2NiwgNjUsIDc4LCA3NSwgNzgsIDc5LCA4NCwgMTk3LCA2NiwgNjUsIDc4LCA3NSwgMTI4LCA2NiwgNjUsIDc4LCAyMDMsIAorICAgIDY2LCA2NSwgNzgsIDY4LCAxMjgsIDY2LCA2NSwgNzgsIDY1LCA3OCwgNjUsIDEyOCwgNjYsIDY1LCA3OCwgNTAsIDEyOCwgCisgICAgNjYsIDY1LCA3OCwgMTc4LCA2NiwgNjUsIDc3LCA2NiwgNzksIDc5LCA4MywgMTI4LCA2NiwgNjUsIDc3LCA2NiwgNzksIDc5LCAKKyAgICAxMjgsIDY2LCA2NSwgNzYsIDg1LCA2OCwgNjUsIDEyOCwgNjYsIDY1LCA3NiwgNzYsIDgwLCA3OSwgNzMsIDc4LCAyMTIsIAorICAgIDY2LCA2NSwgNzYsIDc2LCA3OSwgODQsIDEyOCwgNjYsIDY1LCA3NiwgNzYsIDc5LCAyMTIsIDY2LCA2NSwgNzYsIDc2LCA3OSwgCisgICAgNzksIDc4LCA0NSwgODMsIDgwLCA3OSwgNzUsIDY5LCAxOTYsIDY2LCA2NSwgNzYsIDc2LCA3OSwgNzksIDc4LCAxMjgsIDY2LCAKKyAgICA2NSwgNzYsIDY1LCA3MSwgMTI4LCA2NiwgNjUsIDc2LCAxMjgsIDY2LCA2NSwgMjA0LCA2NiwgNjUsIDczLCA4MiwgNzUsIAorICAgIDY1LCA3OCwgMTI4LCA2NiwgNjUsIDczLCA3NywgNjUsIDczLCAxMjgsIDY2LCA2NSwgNzIsIDg0LCAxMjgsIDY2LCA2NSwgCisgICAgNzIsIDczLCA4MiwgNzEsIDc5LCA3NywgODUsIDc1LCA3MiwgNjUsIDEyOCwgNjYsIDY1LCA3MiwgNjUsIDgyLCA1MCwgMTI4LCAKKyAgICA2NiwgNjUsIDcyLCA2NSwgODIsIDE3OCwgNjYsIDY1LCA3MiwgMTI4LCA2NiwgNjUsIDcxLCA4NSwgNjksIDg0LCA4NCwgCisgICAgMTk3LCA2NiwgNjUsIDcxLCA4MywgMTI4LCA2NiwgNjUsIDcxLCA3MSwgNjUsIDcxLCAxOTcsIDY2LCA2NSwgNzEsIDY1LCAKKyAgICAxMjgsIDY2LCA2NSwgNzEsIDUxLCAxMjgsIDY2LCA2NSwgMTk5LCA2NiwgNjUsIDY4LCA3NywgNzMsIDc4LCA4NCwgNzksIAorICAgIDIwNiwgNjYsIDY1LCA2OCwgNzEsIDY5LCA4MiwgMTI4LCA2NiwgNjUsIDY4LCA3MSwgNjksIDEyOCwgNjYsIDY1LCA2OCwgCisgICAgMTI4LCA2NiwgNjUsIDE5NiwgNjYsIDY1LCA2NywgODQsIDgyLCA3MywgNjUsIDIwNiwgNjYsIDY1LCA2NywgNzksIDc4LCAKKyAgICAxMjgsIDY2LCA2NSwgNjcsIDc1LCA4NywgNjUsIDgyLCA2OCwgMTI4LCA2NiwgNjUsIDY3LCA3NSwgODMsIDgwLCA2NSwgNjcsIAorICAgIDY5LCAxMjgsIDY2LCA2NSwgNjcsIDc1LCA4MywgNzYsIDY1LCA4MywgNzIsIDEyOCwgNjYsIDY1LCA2NywgNzUsIDgzLCA3NiwgCisgICAgNjUsIDgzLCAyMDAsIDY2LCA2NSwgNjcsIDc1LCA4MywgNzYsIDY1LCA3OCwgODQsIDY5LCAxOTYsIDY2LCA2NSwgNjcsIDc1LCAKKyAgICA3MiwgNjUsIDc4LCAxOTYsIDY2LCA2NSwgNjcsIDc1LCA0NSwgODQsIDczLCA3NiwgODQsIDY5LCAxOTYsIDY2LCA2NSwgNjcsIAorICAgIDc1LCAxMjgsIDY2LCA2NSwgNjcsIDIwMywgNjYsIDY1LCA2NiwgODksIDEyOCwgNjYsIDY1LCA2NiwgMjE3LCA2NiwgNjUsIAorICAgIDY1LCA4MiwgNjksIDgyLCA4NSwgMTI4LCA2NiwgNjUsIDQ1LCA1MCwgMTI4LCA2NiwgNTEsIDQ4LCA1MywgMTI4LCA2NiwgCisgICAgNTAsIDUzLCA1NywgMTI4LCA2NiwgNTAsIDUzLCA1NiwgMTI4LCA2NiwgNTAsIDUzLCA1NSwgMTI4LCA2NiwgNTAsIDUzLCAKKyAgICA1NCwgMTI4LCA2NiwgNTAsIDUzLCA1MywgMTI4LCA2NiwgNTAsIDUzLCAxODAsIDY2LCA1MCwgNTMsIDUxLCAxMjgsIDY2LCAKKyAgICA1MCwgNTMsIDUwLCAxMjgsIDY2LCA1MCwgNTMsIDQ5LCAxMjgsIDY2LCA1MCwgNTMsIDQ4LCAxMjgsIDY2LCA1MCwgNTIsIAorICAgIDU3LCAxMjgsIDY2LCA1MCwgNTIsIDU2LCAxMjgsIDY2LCA1MCwgNTIsIDE4MywgNjYsIDUwLCA1MiwgNTQsIDEyOCwgNjYsIAorICAgIDUwLCA1MiwgNTMsIDEyOCwgNjYsIDUwLCA1MiwgMTc5LCA2NiwgNTAsIDUyLCAxNzgsIDY2LCA1MCwgNTIsIDE3NywgNjYsIAorICAgIDUwLCA1MiwgMTc2LCA2NiwgNTAsIDUxLCA1NCwgMTI4LCA2NiwgNTAsIDUxLCA1MiwgMTI4LCA2NiwgNTAsIDUxLCAxNzksIAorICAgIDY2LCA1MCwgNTEsIDUwLCAxMjgsIDY2LCA1MCwgNTEsIDE3NywgNjYsIDUwLCA1MSwgMTc2LCA2NiwgNTAsIDUwLCA1NywgCisgICAgMTI4LCA2NiwgNTAsIDUwLCA1NiwgMTI4LCA2NiwgNTAsIDUwLCA1NSwgMTI4LCA2NiwgNTAsIDUwLCA1NCwgMTI4LCA2NiwgCisgICAgNTAsIDUwLCAxODEsIDY2LCA1MCwgNTAsIDUwLCAxMjgsIDY2LCA1MCwgNTAsIDQ5LCAxMjgsIDY2LCA1MCwgNTAsIDE3NiwgCisgICAgNjYsIDUwLCA0OSwgNTcsIDEyOCwgNjYsIDUwLCA0OSwgNTYsIDEyOCwgNjYsIDUwLCA0OSwgNTUsIDEyOCwgNjYsIDUwLCAKKyAgICA0OSwgNTQsIDEyOCwgNjYsIDUwLCA0OSwgNTMsIDEyOCwgNjYsIDUwLCA0OSwgNTIsIDEyOCwgNjYsIDUwLCA0OSwgNTEsIAorICAgIDEyOCwgNjYsIDUwLCA0OSwgNTAsIDEyOCwgNjYsIDUwLCA0OSwgNDksIDEyOCwgNjYsIDUwLCA0OSwgNDgsIDEyOCwgNjYsIAorICAgIDUwLCA0OCwgNTcsIDEyOCwgNjYsIDUwLCA0OCwgNTYsIDEyOCwgNjYsIDUwLCA0OCwgNTUsIDEyOCwgNjYsIDUwLCA0OCwgCisgICAgNTQsIDEyOCwgNjYsIDUwLCA0OCwgNTMsIDEyOCwgNjYsIDUwLCA0OCwgNTIsIDEyOCwgNjYsIDUwLCA0OCwgNTEsIDEyOCwgCisgICAgNjYsIDUwLCA0OCwgNTAsIDEyOCwgNjYsIDUwLCA0OCwgNDksIDEyOCwgNjYsIDUwLCA0OCwgNDgsIDEyOCwgNjYsIDQ5LCAKKyAgICA1NywgMTc3LCA2NiwgNDksIDU3LCA0OCwgMTI4LCA2NiwgNDksIDU2LCA1NywgMTI4LCA2NiwgNDksIDU2LCA1MywgMTI4LCAKKyAgICA2NiwgNDksIDU2LCA1MiwgMTI4LCA2NiwgNDksIDU2LCA1MSwgMTI4LCA2NiwgNDksIDU2LCA1MCwgMTI4LCA2NiwgNDksIAorICAgIDU2LCA0OSwgMTI4LCA2NiwgNDksIDU2LCA0OCwgMTI4LCA2NiwgNDksIDU1LCA1NywgMTI4LCA2NiwgNDksIDU1LCA1NiwgCisgICAgMTI4LCA2NiwgNDksIDU1LCA1NSwgMTI4LCA2NiwgNDksIDU1LCAxODIsIDY2LCA0OSwgNTUsIDUyLCAxMjgsIDY2LCA0OSwgCisgICAgNTUsIDE3OSwgNjYsIDQ5LCA1NSwgNTAsIDEyOCwgNjYsIDQ5LCA1NSwgNDksIDEyOCwgNjYsIDQ5LCA1NSwgNDgsIDEyOCwgCisgICAgNjYsIDQ5LCA1NCwgNTcsIDEyOCwgNjYsIDQ5LCA1NCwgNTYsIDEyOCwgNjYsIDQ5LCA1NCwgNTUsIDEyOCwgNjYsIDQ5LCAKKyAgICA1NCwgNTQsIDEyOCwgNjYsIDQ5LCA1NCwgNTMsIDEyOCwgNjYsIDQ5LCA1NCwgNTIsIDEyOCwgNjYsIDQ5LCA1NCwgMTc5LCAKKyAgICA2NiwgNDksIDU0LCAxNzgsIDY2LCA0OSwgNTQsIDQ5LCAxMjgsIDY2LCA0OSwgNTQsIDQ4LCAxMjgsIDY2LCA0OSwgNTMsIAorICAgIDE4NSwgNjYsIDQ5LCA1MywgNTYsIDEyOCwgNjYsIDQ5LCA1MywgNTUsIDEyOCwgNjYsIDQ5LCA1MywgMTgyLCA2NiwgNDksIAorICAgIDUzLCA1MywgMTI4LCA2NiwgNDksIDUzLCA1MiwgMTI4LCA2NiwgNDksIDUzLCA1MSwgMTI4LCA2NiwgNDksIDUzLCA1MCwgCisgICAgMTI4LCA2NiwgNDksIDUzLCAxNzcsIDY2LCA0OSwgNTMsIDQ4LCAxMjgsIDY2LCA0OSwgNTIsIDU0LCAxMjgsIDY2LCA0OSwgCisgICAgNTIsIDE4MSwgNjYsIDQ5LCA1MiwgNTAsIDEyOCwgNjYsIDQ5LCA1MiwgMTc3LCA2NiwgNDksIDUyLCAxNzYsIDY2LCA0OSwgCisgICAgNTEsIDE4MSwgNjYsIDQ5LCA1MSwgMTc5LCA2NiwgNDksIDUxLCA1MCwgMTI4LCA2NiwgNDksIDUxLCAxNzcsIDY2LCA0OSwgCisgICAgNTEsIDE3NiwgNjYsIDQ5LCA1MCwgMTg0LCA2NiwgNDksIDUwLCAxODMsIDY2LCA0OSwgNTAsIDE4MSwgNjYsIDQ5LCA1MCwgCisgICAgMTc5LCA2NiwgNDksIDUwLCAxNzgsIDY2LCA0OSwgNTAsIDE3NywgNjYsIDQ5LCA1MCwgMTc2LCA2NiwgNDksIDQ4LCA1NywgCisgICAgMjA1LCA2NiwgNDksIDQ4LCA1NywgMTk4LCA2NiwgNDksIDQ4LCA1NiwgMjA1LCA2NiwgNDksIDQ4LCA1NiwgMTk4LCA2NiwgCisgICAgNDksIDQ4LCA1NSwgMjA1LCA2NiwgNDksIDQ4LCA1NSwgMTk4LCA2NiwgNDksIDQ4LCA1NCwgMjA1LCA2NiwgNDksIDQ4LCAKKyAgICA1NCwgMTk4LCA2NiwgNDksIDQ4LCA1MywgMjA1LCA2NiwgNDksIDQ4LCA1MywgMTk4LCA2NiwgNDksIDQ4LCAxODEsIDY2LCAKKyAgICA0OSwgNDgsIDE4MCwgNjYsIDQ5LCA0OCwgMTc4LCA2NiwgNDksIDQ4LCAxNzYsIDY2LCA0OCwgNTcsIDE3NywgNjYsIDQ4LCAKKyAgICA1NywgMTc2LCA2NiwgNDgsIDU2LCA1NywgMTI4LCA2NiwgNDgsIDU2LCAxODMsIDY2LCA0OCwgNTYsIDU0LCAxMjgsIDY2LCAKKyAgICA0OCwgNTYsIDE4MSwgNjYsIDQ4LCA1NiwgNTEsIDEyOCwgNjYsIDQ4LCA1NiwgNTAsIDEyOCwgNjYsIDQ4LCA1NiwgMTc3LCAKKyAgICA2NiwgNDgsIDU2LCAxNzYsIDY2LCA0OCwgNTUsIDU3LCAxMjgsIDY2LCA0OCwgNTUsIDE4NCwgNjYsIDQ4LCA1NSwgMTgzLCAKKyAgICA2NiwgNDgsIDU1LCAxODIsIDY2LCA0OCwgNTUsIDE4MSwgNjYsIDQ4LCA1NSwgMTgwLCA2NiwgNDgsIDU1LCAxNzksIDY2LCAKKyAgICA0OCwgNTUsIDE3OCwgNjYsIDQ4LCA1NSwgMTc3LCA2NiwgNDgsIDU1LCAxNzYsIDY2LCA0OCwgNTQsIDE4NSwgNjYsIDQ4LCAKKyAgICA1NCwgMTg0LCA2NiwgNDgsIDU0LCAxODMsIDY2LCA0OCwgNTQsIDE4MiwgNjYsIDQ4LCA1NCwgMTgxLCA2NiwgNDgsIDU0LCAKKyAgICA1MiwgMTI4LCA2NiwgNDgsIDU0LCA1MSwgMTI4LCA2NiwgNDgsIDU0LCAxNzgsIDY2LCA0OCwgNTQsIDE3NywgNjYsIDQ4LCAKKyAgICA1NCwgMTc2LCA2NiwgNDgsIDUzLCAxODUsIDY2LCA0OCwgNTMsIDE4NCwgNjYsIDQ4LCA1MywgMTgzLCA2NiwgNDgsIDUzLCAKKyAgICA1NCwgMTI4LCA2NiwgNDgsIDUzLCAxODEsIDY2LCA0OCwgNTMsIDE4MCwgNjYsIDQ4LCA1MywgMTc5LCA2NiwgNDgsIDUzLCAKKyAgICAxNzgsIDY2LCA0OCwgNTMsIDE3NywgNjYsIDQ4LCA1MywgMTc2LCA2NiwgNDgsIDUyLCA1NywgMTI4LCA2NiwgNDgsIDUyLCAKKyAgICAxODQsIDY2LCA0OCwgNTIsIDU1LCAxMjgsIDY2LCA0OCwgNTIsIDE4MiwgNjYsIDQ4LCA1MiwgMTgxLCA2NiwgNDgsIDUyLCAKKyAgICAxODAsIDY2LCA0OCwgNTIsIDE3OSwgNjYsIDQ4LCA1MiwgMTc4LCA2NiwgNDgsIDUyLCAxNzcsIDY2LCA0OCwgNTIsIDE3NiwgCisgICAgNjYsIDQ4LCA1MSwgMTg1LCA2NiwgNDgsIDUxLCAxODQsIDY2LCA0OCwgNTEsIDE4MywgNjYsIDQ4LCA1MSwgMTgyLCA2NiwgCisgICAgNDgsIDUxLCA1MiwgMTI4LCA2NiwgNDgsIDUxLCAxNzksIDY2LCA0OCwgNTEsIDE3OCwgNjYsIDQ4LCA1MSwgMTc3LCA2NiwgCisgICAgNDgsIDUxLCAxNzYsIDY2LCA0OCwgNTAsIDE4NSwgNjYsIDQ4LCA1MCwgMTg0LCA2NiwgNDgsIDUwLCAxODMsIDY2LCA0OCwgCisgICAgNTAsIDE4MiwgNjYsIDQ4LCA1MCwgMTgxLCA2NiwgNDgsIDUwLCAxODAsIDY2LCA0OCwgNTAsIDE3OSwgNjYsIDQ4LCA1MCwgCisgICAgNTAsIDEyOCwgNjYsIDQ4LCA1MCwgMTc3LCA2NiwgNDgsIDUwLCAxNzYsIDY2LCA0OCwgNDksIDU3LCAxMjgsIDY2LCA0OCwgCisgICAgNDksIDU2LCAxMjgsIDY2LCA0OCwgNDksIDE4MywgNjYsIDQ4LCA0OSwgMTgyLCA2NiwgNDgsIDQ5LCAxODEsIDY2LCA0OCwgCisgICAgNDksIDE4MCwgNjYsIDQ4LCA0OSwgMTc5LCA2NiwgNDgsIDQ5LCAxNzgsIDY2LCA0OCwgNDksIDE3NywgNjYsIDQ4LCA0OSwgCisgICAgMTc2LCA2NiwgNDgsIDQ4LCA1NywgMTI4LCA2NiwgNDgsIDQ4LCAxODUsIDY2LCA0OCwgNDgsIDU2LCAxMjgsIDY2LCA0OCwgCisgICAgNDgsIDE4NCwgNjYsIDQ4LCA0OCwgNTUsIDEyOCwgNjYsIDQ4LCA0OCwgMTgzLCA2NiwgNDgsIDQ4LCA1NCwgMTI4LCA2NiwgCisgICAgNDgsIDQ4LCAxODIsIDY2LCA0OCwgNDgsIDUzLCA2NSwgMTI4LCA2NiwgNDgsIDQ4LCA1MywgMTI4LCA2NiwgNDgsIDQ4LCAKKyAgICAxODEsIDY2LCA0OCwgNDgsIDUyLCAxMjgsIDY2LCA0OCwgNDgsIDE4MCwgNjYsIDQ4LCA0OCwgNTEsIDEyOCwgNjYsIDQ4LCAKKyAgICA0OCwgMTc5LCA2NiwgNDgsIDQ4LCA1MCwgMTI4LCA2NiwgNDgsIDQ4LCAxNzgsIDY2LCA0OCwgNDgsIDQ5LCAxMjgsIDY2LCAKKyAgICA0OCwgNDgsIDE3NywgNjUsIDkwLCA4NSwgMTI4LCA2NSwgODksIDY2LCAxMjgsIDY1LCA4OSwgNjUsIDcyLCAxMjgsIDY1LCAKKyAgICA4OCwgNjksIDEyOCwgNjUsIDg3LCA2OSwgMTI4LCA2NSwgODcsIDY1LCAyMTcsIDY1LCA4NiwgNzksIDY3LCA2NSwgNjgsIAorICAgIDc5LCAxMjgsIDY1LCA4NiwgNjksIDgzLCA4NCwgNjUsIDIwNiwgNjUsIDg2LCA2OSwgODIsIDY1LCA3MSwgMTk3LCA2NSwgCisgICAgODYsIDY1LCA3NSwgODIsIDY1LCA3MiwgNjUsIDgzLCA2NSwgNzgsIDg5LCA2NSwgMTI4LCA2NSwgODYsIDY1LCA3MSwgODIsIAorICAgIDY1LCA3MiwgNjUsIDEyOCwgNjUsIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjUsIDg1LCA4NCwgODUsIDc3LCA3OCwgCisgICAgMTI4LCA2NSwgODUsIDg0LCA3OSwgNzcsIDc5LCA2NiwgNzMsIDc2LCA2OSwgMTI4LCA2NSwgODUsIDg0LCA3OSwgNzcsIDY1LCAKKyAgICA4NCwgNjksIDE5NiwgNjUsIDg1LCA4MywgODQsIDgyLCA2NSwgMjA0LCA2NSwgODUsIDgyLCA3MywgODAsIDczLCA3MSwgNzcsIAorICAgIDY5LCA3OCwgODQsIDEyOCwgNjUsIDg1LCA4MiwgNjUsIDc3LCA2NSwgOTAsIDY4LCA2NSwgNjUsIDcyLCA2NSwgMTI4LCA2NSwgCisgICAgODUsIDgyLCA2NSwgNzcsIDY1LCA5MCwgNjgsIDY1LCA2NSwgNDUsIDUwLCAxMjgsIDY1LCA4NSwgODIsIDY1LCA3NywgNjUsIAorICAgIDkwLCA2OCwgNjUsIDY1LCAxMjgsIDY1LCA4NSwgNzgsIDc4LCAxMjgsIDY1LCA4NSwgNzEsIDg1LCA4MywgODQsIDEyOCwgCisgICAgNjUsIDg1LCA3MSwgNzcsIDY5LCA3OCwgODQsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA4NSwgNjksIDEyOCwgNjUsIDg1LCAKKyAgICA2NiwgNjksIDgyLCA3MSwgNzMsIDc4LCA2OSwgMTI4LCA2NSwgODQsIDg0LCA3MywgMTk1LCA2NSwgODQsIDg0LCA3MiwgNjUsIAorICAgIDY3LCA2NSwgNzgsIDEyOCwgNjUsIDg0LCA4NCwgNjksIDc4LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgODQsIDg0LCA2NSwgCisgICAgMjAzLCA2NSwgODQsIDg0LCA2NSwgNjcsIDcyLCA2OSwgMTk2LCA2NSwgODQsIDc5LCAyMDUsIDY1LCA4NCwgNzgsIDY1LCAKKyAgICAyMDAsIDY1LCA4NCwgNzcsIDY1LCA2NSwgODUsIDEyOCwgNjUsIDg0LCA3MywgODksIDY1LCAxMjgsIDY1LCA4NCwgNzIsIAorICAgIDc2LCA2OSwgODQsIDczLCAxOTUsIDY1LCA4NCwgNzIsIDY1LCA4MiwgODYsIDY1LCA4NiwgNjksIDY4LCA3MywgMTk1LCA2NSwgCisgICAgODQsIDcyLCA2NSwgODAsIDY1LCA4MywgNjcsIDY1LCAyMDYsIDY1LCA4NCwgNzIsIDQ1LCA4NCwgNzIsIDY1LCA3NiwgNjUsIAorICAgIDg0LCA3MiwgNjUsIDEyOCwgNjUsIDgzLCA5MCwgMTI4LCA2NSwgODMsIDg5LCA4NSwgODIsIDE5MywgNjUsIDgzLCA4OSwgCisgICAgNzcsIDgwLCA4NCwgNzksIDg0LCA3MywgNjcsIDY1LCA3NiwgNzYsIDIxNywgNjUsIDgzLCA4NCwgODIsIDc5LCA3OCwgNzksIAorICAgIDc3LCA3MywgNjcsIDY1LCAyMDQsIDY1LCA4MywgODQsIDgyLCA3OSwgNzYsIDc5LCA3MSwgNzMsIDY3LCA2NSwgMjA0LCA2NSwgCisgICAgODMsIDg0LCA3OSwgNzgsIDczLCA4MywgNzIsIDY5LCAxOTYsIDY1LCA4MywgODQsIDY5LCA4MiwgNzMsIDgzLCA3NywgMTI4LCAKKyAgICA2NSwgODMsIDg0LCA2OSwgODIsIDczLCA4MywgNzUsIDIxMSwgNjUsIDgzLCA4NCwgNjksIDgyLCA3MywgODMsIDc1LCAxMjgsIAorICAgIDY1LCA4MywgODQsIDY5LCA4MiwgNzMsIDgzLCAyMDMsIDY1LCA4MywgODQsIDY5LCA4MiwgNzMsIDgzLCA2NywgODUsIDgzLCAKKyAgICAxMjgsIDY1LCA4MywgODMsIDg5LCA4MiwgNzMsIDY1LCAyMDYsIDY1LCA4MywgODMsIDY5LCA4MiwgODQsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgNjUsIDgzLCA4MCwgNzMsIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDgzLCA4MCwgNzMsIDgyLCA2NSwgCisgICAgODQsIDY5LCAxOTYsIDY1LCA4MywgODAsIDY5LCA4MiwgMTI4LCA2NSwgODMsIDczLCA2NSwgNDUsIDY1LCA4NSwgODMsIDg0LCAKKyAgICA4MiwgNjUsIDc2LCA3MywgNjUsIDEyOCwgNjUsIDgzLCA3MiwgNzEsIDY1LCA2NiwgMTI4LCA2NSwgODMsIDcyLCA2OSwgODMsIAorICAgIDEyOCwgNjUsIDgzLCA3MiwgNTcsIDEyOCwgNjUsIDgzLCA3MiwgNTEsIDEyOCwgNjUsIDgzLCA3MiwgMTc4LCA2NSwgODMsIAorICAgIDY3LCA2OSwgNzgsIDg0LCAxMjgsIDY1LCA4MywgNjcsIDY5LCA3OCwgNjgsIDczLCA3OCwgMTk5LCA2NSwgODMsIDY1LCA3NiwgCisgICAgNTAsIDEyOCwgNjUsIDgzLCA0NSwgODMsIDY1LCA3NCwgNjgsIDY1LCAxMjgsIDY1LCA4MiwgODUsIDcyLCA4NSwgNjUsIAorICAgIDEyOCwgNjUsIDgyLCA4NCwgMjExLCA2NSwgODIsIDg0LCA3MywgODMsIDIxMiwgNjUsIDgyLCA4NCwgNzMsIDY3LCA4NSwgCiAgICAgNzYsIDY1LCA4NCwgNjksIDE5NiwgNjUsIDgyLCA4NCwgNjUsIDY2LCAxOTcsIDY1LCA4MiwgODMsIDY5LCA3OSwgODMsIAogICAgIDEyOCwgNjUsIDgyLCA4MywgNjksIDc5LCAyMTEsIDY1LCA4MiwgODMsIDY5LCA3OCwgNzMsIDY3LCAxMjgsIDY1LCA4MiwgCiAgICAgODIsIDc5LCA4NywgODMsIDEyOCwgNjUsIDgyLCA4MiwgNzksIDg3LCAyMTEsIDY1LCA4MiwgODIsIDc5LCA4NywgNzIsIDY5LCAKQEAgLTQ4OTIsNDIgKzU1MjUsNDMgQEAKICAgICA2NSwgNDUsIDg1LCAxMjgsIDY1LCA4MiwgNjUsIDY5LCA2NSwgNDUsIDczLCAxMjgsIDY1LCA4MiwgNjUsIDY5LCA2NSwgNDUsIAogICAgIDY5LCA3OSwgMTI4LCA2NSwgODIsIDY1LCA2OSwgNjUsIDQ1LCA2OSwgMTI4LCA2NSwgODIsIDY1LCA2OSwgNjUsIDQ1LCA2NSwgCiAgICAgMTI4LCA2NSwgODIsIDY1LCA2OCwgMTI4LCA2NSwgODIsIDY1LCAxOTYsIDY1LCA4MiwgNjUsIDY2LCA3MywgNjcsIDQ1LCAKLSAgICA3MywgNzgsIDY4LCA3MywgMTk1LCA2NSwgODIsIDY1LCA2NiwgNzMsIDY1LCAyMDYsIDY1LCA4MiwgNDUsIDgyLCA2NSwgNzIsIAotICAgIDc3LCA2NSwgMjA2LCA2NSwgODIsIDQ1LCA4MiwgNjUsIDcyLCA2OSwgNjksIDc3LCAxMjgsIDY1LCA4MSwgODUsIDY1LCA4MiwgCi0gICAgNzMsIDg1LCA4MywgMTI4LCA2NSwgODEsIDg1LCA2NSwgNzAsIDc5LCA4MiwgODQsIDczLCA4MywgMTI4LCA2NSwgODEsIDg1LCAKLSAgICAxOTMsIDY1LCA4MCwgODUsIDIwNiwgNjUsIDgwLCA4MiwgNzMsIDc2LCAxMjgsIDY1LCA4MCwgODAsIDgyLCA3OSwgODgsIAotICAgIDczLCA3NywgNjUsIDg0LCA2OSwgNzYsIDIxNywgNjUsIDgwLCA4MCwgODIsIDc5LCA4OCwgNzMsIDc3LCA2NSwgODQsIDY5LCAKLSAgICAxMjgsIDY1LCA4MCwgODAsIDgyLCA3OSwgNjUsIDY3LCA3MiwgNjksIDIxMSwgNjUsIDgwLCA4MCwgODIsIDc5LCA2NSwgNjcsIAotICAgIDcyLCAxMjgsIDY1LCA4MCwgODAsIDc2LCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgODAsIDgwLCA3NiwgCi0gICAgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NSwgODAsIDc5LCA4NCwgNzIsIDY5LCA4MywgMTI4LCA2NSwgODAsIDc5LCAKLSAgICA4NCwgNzIsIDY5LCA3NywgNjUsIDEyOCwgNjUsIDgwLCA3OSwgODMsIDg0LCA4MiwgNzksIDgwLCA3MiwgNjksIDEyOCwgNjUsIAotICAgIDgwLCA3OSwgODMsIDg0LCA4MiwgNzksIDcwLCA3OSwgODMsIDEyOCwgNjUsIDgwLCA3OSwgODMsIDg0LCA4MiwgNzksIDcwLCAKLSAgICA3OSwgMjExLCA2NSwgODAsIDc5LCA4MywgODQsIDgyLCA3OSwgNzAsIDc5LCAyMDEsIDY1LCA4MCwgNzksIDY4LCA2OSwgODgsIAotICAgIDczLCA2NSwgMTI4LCA2NSwgODAsIDc5LCA2OCwgNjksIDgyLCA3NywgMTkzLCA2NSwgODAsIDc2LCA3OSwgODUsIDc4LCAKLSAgICAxMjgsIDY1LCA4MCwgNzYsIDIwMSwgNjUsIDgwLCAyMDQsIDY1LCA4MCwgNzMsIDc4LCAxMjgsIDY1LCA4MCwgNjksIDgzLCAKLSAgICAyMDcsIDY1LCA4MCwgNjcsIDEyOCwgNjUsIDgwLCA2NSwgODIsIDg0LCAxMjgsIDY1LCA4MCwgNjUsIDY1LCA4NCwgNzksIAotICAgIDEyOCwgNjUsIDc5LCA4NSwgMTI4LCA2NSwgNzksIDgyLCAxMjgsIDY1LCA3OCwgODUsIDgzLCA4NiwgNjUsIDgyLCA2NSwgCi0gICAgODksIDY1LCAxMjgsIDY1LCA3OCwgODUsIDgzLCA4NiwgNjUsIDgyLCA2NSwgMTI4LCA2NSwgNzgsIDg1LCA4MywgODYsIDY1LCAKLSAgICA4MiwgMTkzLCA2NSwgNzgsIDg1LCA2OCwgNjUsIDg0LCA4NCwgNjUsIDEyOCwgNjUsIDc4LCA4NSwgNjgsIDY1LCA4NCwgODQsIAotICAgIDE5MywgNjUsIDc4LCA4NCwgNzMsIDgyLCA2OSwgODMsIDg0LCA4MiwgNzMsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgCi0gICAgNzgsIDg0LCA3MywgNzcsIDc5LCA3OCwgODksIDQ1LCA1MCwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNzcsIDc5LCA3OCwgODksIAotICAgIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDc3LCA3OSwgNzgsIDIxNywgNjUsIDc4LCA4NCwgNzMsIDc3LCA3OSwgNzgsIDczLCA2NSwgCi0gICAgODQsIDY5LCAxMjgsIDY1LCA3OCwgODQsIDczLCA3NSwgNjksIDc4LCA3OSwgNzcsIDY1LCAxMjgsIDY1LCA3OCwgODQsIDczLCAKLSAgICA3NSwgNjksIDc4LCA3OSwgNzUsIDg5LCA3NiwgNzMsIDgzLCA3NywgNjUsIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDcwLCA3OSwgCi0gICAgNzgsIDczLCA2NSwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNjcsIDc2LCA3OSwgNjcsIDc1LCA4NywgNzMsIDgzLCA2OSwgNDUsIAotICAgIDgyLCA3OSwgODQsIDY1LCA4NCwgNjksIDE5NiwgNjUsIDc4LCA4NCwgNzMsIDY3LCA3NiwgNzksIDY3LCA3NSwgODcsIDczLCAKLSAgICA4MywgNjksIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDY3LCA3NiwgNzksIDY3LCA3NSwgODcsIDczLCA4MywgMTk3LCA2NSwgNzgsIAotICAgIDg0LCA2OSwgNzgsIDc4LCA2NSwgMTI4LCA2NSwgNzgsIDg0LCA2OSwgNzgsIDc4LCAxOTMsIDY1LCA3OCwgODQsIDY1LCA4MiwgCi0gICAgNzEsIDc5LCA3NywgODUsIDc1LCA3MiwgNjUsIDEyOCwgNjUsIDc4LCA4MywgODUsIDIxOCwgNjUsIDc4LCA4MywgNzIsIDY5LCAKLSAgICAxMjgsIDY1LCA3OCwgODAsIDY5LCA2NSwgMTI4LCA2NSwgNzgsIDIwNywgNjUsIDc4LCA3OCwgODUsIDczLCA4NCwgMjE3LCAKLSAgICA2NSwgNzgsIDc4LCA3OSwgODQsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA3OCwgNzgsIDY1LCA2NSwgODUsIDEyOCwgNjUsIAotICAgIDc4LCA3NSwgNzIsIDEyOCwgNjUsIDc4LCA3NCwgNzMsIDEyOCwgNjUsIDc4LCA3MiwgODUsIDEyOCwgNjUsIDc4LCA3MSwgCi0gICAgODUsIDc2LCA2NSwgODIsIDEyOCwgNjUsIDc4LCA3MSwgODUsIDczLCA4MywgNzIsIDY5LCAxOTYsIDY1LCA3OCwgNzEsIDgzLCAKLSAgICA4NCwgODIsIDc5LCAyMDUsIDY1LCA3OCwgNzEsIDgyLCAyMTcsIDY1LCA3OCwgNzEsIDc2LCA2OSwgNjgsIDEyOCwgNjUsIAotICAgIDc4LCA3MSwgNzYsIDY5LCAxOTYsIDY1LCA3OCwgNzEsIDc1LCA3MiwgNjUsIDc4LCA3NSwgNzIsIDg1LCAxMjgsIDY1LCA3OCwgCi0gICAgNzEsIDY5LCAyMTAsIDY1LCA3OCwgNzEsIDY5LCA3NiwgMTI4LCA2NSwgNzgsIDcxLCA2OSwgNjgsIDEyOCwgNjUsIDc4LCAKLSAgICA2OCwgNjUsIDgwLCAxMjgsIDY1LCA3OCwgNjcsIDc5LCA4MiwgNjUsIDEyOCwgNjUsIDc4LCA2NywgNzIsIDc5LCA4MiwgCi0gICAgMTI4LCA2NSwgNzgsIDY1LCA4NCwgODIsIDczLCA2NywgNzIsIDczLCA4MywgNzcsIDY1LCAxMjgsIDY1LCA3OCwgNjUsIDgwLCAKKyAgICA3MywgNzgsIDY4LCA3MywgMTk1LCA2NSwgODIsIDY1LCA2NiwgNzMsIDY1LCAyMDYsIDY1LCA4MiwgNDUsIDgyLCA4NSwgNjYsIAorICAgIDEyOCwgNjUsIDgyLCA0NSwgODIsIDY1LCA3MiwgNzcsIDY1LCAyMDYsIDY1LCA4MiwgNDUsIDgyLCA2NSwgNzIsIDY5LCA2OSwgCisgICAgNzcsIDEyOCwgNjUsIDgxLCA4NSwgNjUsIDgyLCA3MywgODUsIDgzLCAxMjgsIDY1LCA4MSwgODUsIDY1LCA3MCwgNzksIDgyLCAKKyAgICA4NCwgNzMsIDgzLCAxMjgsIDY1LCA4MSwgODUsIDE5MywgNjUsIDgwLCA4NSwgMjA2LCA2NSwgODAsIDgyLCA3MywgNzYsIAorICAgIDEyOCwgNjUsIDgwLCA4MCwgODIsIDc5LCA4OCwgNzMsIDc3LCA2NSwgODQsIDY5LCA3NiwgMjE3LCA2NSwgODAsIDgwLCA4MiwgCisgICAgNzksIDg4LCA3MywgNzcsIDY1LCA4NCwgNjksIDEyOCwgNjUsIDgwLCA4MCwgODIsIDc5LCA2NSwgNjcsIDcyLCA2OSwgMjExLCAKKyAgICA2NSwgODAsIDgwLCA4MiwgNzksIDY1LCA2NywgNzIsIDEyOCwgNjUsIDgwLCA4MCwgNzYsIDczLCA2NywgNjUsIDg0LCA3MywgCisgICAgNzksIDc4LCAxMjgsIDY1LCA4MCwgODAsIDc2LCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA4MCwgNzksIDg0LCAKKyAgICA3MiwgNjksIDgzLCAxMjgsIDY1LCA4MCwgNzksIDg0LCA3MiwgNjksIDc3LCA2NSwgMTI4LCA2NSwgODAsIDc5LCA4MywgODQsIAorICAgIDgyLCA3OSwgODAsIDcyLCA2OSwgMTI4LCA2NSwgODAsIDc5LCA4MywgODQsIDgyLCA3OSwgNzAsIDc5LCA4MywgMTI4LCA2NSwgCisgICAgODAsIDc5LCA4MywgODQsIDgyLCA3OSwgNzAsIDc5LCAyMTEsIDY1LCA4MCwgNzksIDgzLCA4NCwgODIsIDc5LCA3MCwgNzksIAorICAgIDIwMSwgNjUsIDgwLCA3OSwgNjgsIDY5LCA4OCwgNzMsIDY1LCAxMjgsIDY1LCA4MCwgNzksIDY4LCA2OSwgODIsIDc3LCAKKyAgICAxOTMsIDY1LCA4MCwgNzYsIDc5LCA4NSwgNzgsIDEyOCwgNjUsIDgwLCA3NiwgMjAxLCA2NSwgODAsIDIwNCwgNjUsIDgwLCAKKyAgICA3MywgNzgsIDEyOCwgNjUsIDgwLCA2OSwgODMsIDIwNywgNjUsIDgwLCA2NywgMTI4LCA2NSwgODAsIDY1LCA4MiwgODQsIAorICAgIDEyOCwgNjUsIDgwLCA2NSwgNjUsIDg0LCA3OSwgMTI4LCA2NSwgNzksIDg1LCAxMjgsIDY1LCA3OSwgODIsIDEyOCwgNjUsIAorICAgIDc4LCA4NSwgODMsIDg2LCA2NSwgODIsIDY1LCA4OSwgNjUsIDEyOCwgNjUsIDc4LCA4NSwgODMsIDg2LCA2NSwgODIsIDY1LCAKKyAgICAxMjgsIDY1LCA3OCwgODUsIDgzLCA4NiwgNjUsIDgyLCAxOTMsIDY1LCA3OCwgODUsIDY4LCA2NSwgODQsIDg0LCA2NSwgCisgICAgMTI4LCA2NSwgNzgsIDg1LCA2OCwgNjUsIDg0LCA4NCwgMTkzLCA2NSwgNzgsIDg0LCA3MywgODIsIDY5LCA4MywgODQsIDgyLCAKKyAgICA3MywgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCA3OCwgODQsIDczLCA3NywgNzksIDc4LCA4OSwgNDUsIDUwLCAxMjgsIAorICAgIDY1LCA3OCwgODQsIDczLCA3NywgNzksIDc4LCA4OSwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNzcsIDc5LCA3OCwgMjE3LCA2NSwgCisgICAgNzgsIDg0LCA3MywgNzcsIDc5LCA3OCwgNzMsIDY1LCA4NCwgNjksIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDc1LCA2OSwgNzgsIAorICAgIDc5LCA3NywgNjUsIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDc1LCA2OSwgNzgsIDc5LCA3NSwgODksIDc2LCA3MywgODMsIDc3LCAKKyAgICA2NSwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNzAsIDc5LCA3OCwgNzMsIDY1LCAxMjgsIDY1LCA3OCwgODQsIDczLCA2NywgNzYsIAorICAgIDc5LCA2NywgNzUsIDg3LCA3MywgODMsIDY5LCA0NSwgODIsIDc5LCA4NCwgNjUsIDg0LCA2OSwgMTk2LCA2NSwgNzgsIDg0LCAKKyAgICA3MywgNjcsIDc2LCA3OSwgNjcsIDc1LCA4NywgNzMsIDgzLCA2OSwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNjcsIDc2LCA3OSwgCisgICAgNjcsIDc1LCA4NywgNzMsIDgzLCAxOTcsIDY1LCA3OCwgODQsIDY5LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCA3OCwgODQsIDY5LCAKKyAgICA3OCwgNzgsIDE5MywgNjUsIDc4LCA4NCwgNjUsIDgyLCA3MSwgNzksIDc3LCA4NSwgNzUsIDcyLCA2NSwgMTI4LCA2NSwgNzgsIAorICAgIDgzLCA4NSwgMjE4LCA2NSwgNzgsIDgzLCA3MiwgNjksIDEyOCwgNjUsIDc4LCA4MCwgNjksIDY1LCAxMjgsIDY1LCA3OCwgCisgICAgMjA3LCA2NSwgNzgsIDc4LCA4NSwgNzMsIDg0LCAyMTcsIDY1LCA3OCwgNzgsIDc5LCA4NCwgNjUsIDg0LCA3MywgNzksIAorICAgIDIwNiwgNjUsIDc4LCA3OCwgNjUsIDY1LCA4NSwgMTI4LCA2NSwgNzgsIDc1LCA3MiwgMTI4LCA2NSwgNzgsIDc0LCA3MywgCisgICAgMTI4LCA2NSwgNzgsIDcyLCA4NSwgMTI4LCA2NSwgNzgsIDcxLCA4NSwgNzYsIDY1LCA4MiwgMTI4LCA2NSwgNzgsIDcxLCAKKyAgICA4NSwgNzMsIDgzLCA3MiwgNjksIDE5NiwgNjUsIDc4LCA3MSwgODMsIDg0LCA4MiwgNzksIDIwNSwgNjUsIDc4LCA3MSwgODIsIAorICAgIDIxNywgNjUsIDc4LCA3MSwgNzYsIDY5LCA2OCwgMTI4LCA2NSwgNzgsIDcxLCA3NiwgNjksIDE5NiwgNjUsIDc4LCA3MSwgCisgICAgNzUsIDcyLCA2NSwgNzgsIDc1LCA3MiwgODUsIDEyOCwgNjUsIDc4LCA3MSwgNjksIDIxMCwgNjUsIDc4LCA3MSwgNjksIDc2LCAKKyAgICAxMjgsIDY1LCA3OCwgNzEsIDY5LCA2OCwgMTI4LCA2NSwgNzgsIDY4LCA2NSwgODAsIDEyOCwgNjUsIDc4LCA2NywgNzksIAorICAgIDgyLCA2NSwgMTI4LCA2NSwgNzgsIDY3LCA3MiwgNzksIDgyLCAxMjgsIDY1LCA3OCwgNjUsIDg0LCA4MiwgNzMsIDY3LCA3MiwgCisgICAgNzMsIDgzLCA3NywgNjUsIDEyOCwgNjUsIDc4LCA2NSwgODAsIDEyOCwgNjUsIDc4LCA0NSwgNzgsIDczLCA4MywgNzAsIAogICAgIDEyOCwgNjUsIDc3LCA4MCwgODMsIDEyOCwgNjUsIDc3LCA4MCwgNzIsIDc5LCA4MiwgNjUsIDEyOCwgNjUsIDc3LCA4MCwgCiAgICAgNjksIDgyLCA4MywgNjUsIDc4LCA2OCwgMTI4LCA2NSwgNzcsIDgwLCA2OSwgODIsIDgzLCA2NSwgNzgsIDE5NiwgNjUsIDc3LCAKICAgICA3OSwgODUsIDc4LCAyMTIsIDY1LCA3NywgNjksIDgyLCA3MywgNjcsIDY1LCA4MywgMTI4LCA2NSwgNzcsIDY5LCA4MiwgNzMsIApAQCAtNDk0MSwxMTU4MCArNTU3NSwxMjA2MiBAQAogICAgIDY1LCA4NCwgMTk3LCA2NSwgNzYsIDg0LCA2NSwgMTI4LCA2NSwgNzYsIDgwLCA3MiwgNjUsIDEyOCwgNjUsIDc2LCA4MCwgCiAgICAgNzIsIDE5MywgNjUsIDc2LCA4MCwgNjUsIDgwLCA4MiwgNjUsIDc4LCA2NSwgMTI4LCA2NSwgNzYsIDgwLCA2NSwgODAsIDgyLCAKICAgICA2NSwgNjUsIDc4LCAxOTMsIDY1LCA3NiwgODAsIDY1LCAxMjgsIDY1LCA3NiwgNzcsIDc5LCA4MywgMjEyLCA2NSwgNzYsIAotICAgIDc3LCAxMjgsIDY1LCA3NiwgNzYsIDc5LCAxMjgsIDY1LCA3NiwgNzYsIDczLCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2NSwgCi0gICAgNzYsIDc2LCAyMDEsIDY1LCA3NiwgNzYsIDY1LCAyMDAsIDY1LCA3NiwgNzUsIDY1LCA3NiwgNzMsIDQ1LCA1MCwgMTI4LCAKLSAgICA2NSwgNzYsIDc1LCA2NSwgNzYsIDczLCAxMjgsIDY1LCA3NiwgNzMsIDcxLCA3OCwgNjksIDE5NiwgNjUsIDc2LCA3MywgNzAsIAotICAgIDg1LCAxMjgsIDY1LCA3NiwgNzMsIDY5LCA3OCwgMTI4LCA2NSwgNzYsIDczLCA2OSwgMjA2LCA2NSwgNzYsIDcxLCA3MywgCi0gICAgMjE4LCA2NSwgNzYsIDcwLCA2NSwgMTI4LCA2NSwgNzYsIDY5LCA4NSwgMjEyLCA2NSwgNzYsIDY5LCA4MiwgODQsIDEyOCwgCi0gICAgNjUsIDc2LCA2OSwgODAsIDcyLCAxMjgsIDY1LCA3NiwgNjksIDc3LCA2NiwgNzMsIDY3LCAxMjgsIDY1LCA3NiwgNjksIDcwLCAKLSAgICAxMjgsIDY1LCA3NiwgNjYsIDY1LCA3OCwgNzMsIDY1LCAyMDYsIDY1LCA3NiwgNjUsIDg5LCA3MiwgNjksIDEyOCwgNjUsIAotICAgIDc2LCA2NSwgODksIDcyLCAxOTcsIDY1LCA3NiwgNjUsIDgyLCAyMDUsIDY1LCA3NiwgNjUsIDgwLCA3MiwgMTI4LCA2NSwgCi0gICAgNzYsIDQ1LCA3NiwgNjUsIDc1LCA4NSwgNzgsIDY1LCAxMjgsIDY1LCA3NSwgODQsIDczLCA2OSwgODMsIDY5LCA3NiwgODMsIAotICAgIDc1LCA2NSwgNjYsIDEyOCwgNjUsIDc1LCA4MywgNjUsIDEyOCwgNjUsIDc1LCA3MiwgNzcsIDczLCA3NywgNzMsIDE5NSwgCi0gICAgNjUsIDc1LCA2NiwgNjUsIDIxMCwgNjUsIDc1LCA2NSwgODIsIDY1LCAxMjgsIDY1LCA3NSwgNjUsIDgyLCAxOTMsIDY1LCAKLSAgICA3MywgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCA3MywgODYsIDczLCA3NiwgNzMsIDIwMywgNjUsIDczLCA4NCwgNzksIAotICAgIDIwNiwgNjUsIDczLCA4MiwgODAsIDc2LCA2NSwgNzgsIDY5LCAxMjgsIDY1LCA3MywgODIsIDgwLCA3NiwgNjUsIDc4LCAKLSAgICAxOTcsIDY1LCA3MywgNzgsIDIxMywgNjUsIDczLCA3OCwgNzgsIDEyOCwgNjUsIDczLCA3NiwgNzcsIDEyOCwgNjUsIDczLCAKLSAgICA3NSwgNjUsIDgyLCA2NSwgMTI4LCA2NSwgNzMsIDcyLCA4NiwgODUsIDgzLCAxMjgsIDY1LCA3MiwgODMsIDY4LCA2NSwgCi0gICAgMTI4LCA2NSwgNzIsIDgzLCA2NSwgMTI4LCA2NSwgNzIsIDc5LCAyMDUsIDY1LCA3MiwgNjUsIDc4LCAxOTksIDY1LCA3MiwgCi0gICAgNjUsIDcxLCA3MSwgNjUsIDIxMCwgNjUsIDcyLCA2NSwgNjgsIDEyOCwgNjUsIDcxLCA4NSwgNzgsIDcxLCAxMjgsIDY1LCAKLSAgICA3MSwgNzksIDcxLCAyMDEsIDY1LCA3MSwgNzEsIDgyLCA2NSwgODYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgNzEsIAotICAgIDcxLCA4MiwgNjUsIDg2LCA2NSwgODQsIDY5LCAxOTYsIDY1LCA3MSwgNjUsIDczLCA3OCwgODMsIDIxMiwgNjUsIDcxLCA2NSwgCi0gICAgNzMsIDc4LCAxMjgsIDY1LCA3MCwgODQsIDY5LCAyMTAsIDY1LCA3MCwgODMsIDY1LCA2NSwgODEsIDEyOCwgNjUsIDcwLCAKLSAgICA4MiwgNzMsIDY3LCA2NSwgMjA2LCA2NSwgNzAsIDc5LCA4MiwgNjksIDc3LCA2OSwgNzgsIDg0LCA3MywgNzksIDc4LCA2OSwgCi0gICAgNjgsIDEyOCwgNjUsIDcwLCA3MSwgNzIsIDY1LCA3OCwgMjAxLCA2NSwgNzAsIDcwLCA4MiwgNzMsIDY3LCA2NSwgODQsIDczLCAKLSAgICA3OSwgMjA2LCA2NSwgNzAsIDcwLCA3MywgMjE2LCA2NSwgNjksIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2NSwgNjksIAotICAgIDg5LCAxMjgsIDY1LCA2OSwgODMsIDY3LCA4NSwgNzYsIDY1LCA4MCwgNzMsIDg1LCA4MywgMTI4LCA2NSwgNjksIDgzLCA2NywgCi0gICAgMTI4LCA2NSwgNjksIDgzLCAxMjgsIDY1LCA2OSwgODIsIDczLCA2NSwgMjA0LCA2NSwgNjksIDgyLCAxMjgsIDY1LCA2OSwgCi0gICAgNzYsIDY1LCA0NSwgODAsIDczLCA3NiwgNzYsIDY1LCAxMjgsIDY1LCA2OSwgNzYsIDEyOCwgNjUsIDY5LCA3NSwgMTI4LCAKLSAgICA2NSwgNjksIDcxLCA2OSwgNjUsIDIwNiwgNjUsIDY5LCA3MSwgMTI4LCA2NSwgNjksIDY5LCA4OSwgNjUsIDc4LCA3OCwgNjUsIAotICAgIDEyOCwgNjUsIDY5LCA2OSwgMTI4LCA2NSwgNjksIDY4LCA2NSwgNDUsIDgwLCA3MywgNzYsIDc2LCA2NSwgMTI4LCA2NSwgCi0gICAgNjksIDY4LCAxMjgsIDY1LCA2OSwgNjYsIDEyOCwgNjUsIDY4LCA4NiwgNjUsIDc4LCA4NCwgNjUsIDcxLCA2OSwgMTI4LCAKLSAgICA2NSwgNjgsIDg2LCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2NSwgNjgsIDc3LCA3MywgODMsIDgzLCA3MywgNzksIDIwNiwgNjUsIAotICAgIDY4LCA2OSwgNzEsIDEyOCwgNjUsIDY4LCA2OSwgMTk5LCA2NSwgNjgsIDY4LCA4MiwgNjksIDgzLCA4MywgNjksIDE5NiwgCi0gICAgNjUsIDY4LCA2OCwgODIsIDY5LCA4MywgMjExLCA2NSwgNjgsIDY4LCA2NSwgNzUsIDEyOCwgNjUsIDY4LCA2NSwgMjAzLCAKLSAgICA2NSwgNjcsIDg1LCA4NCwgNjksIDQ1LCA3NywgNjUsIDY3LCA4MiwgNzksIDc4LCAxMjgsIDY1LCA2NywgODUsIDg0LCA2OSwgCi0gICAgNDUsIDcxLCA4MiwgNjUsIDg2LCA2OSwgNDUsIDY1LCA2NywgODUsIDg0LCA2OSwgMTI4LCA2NSwgNjcsIDg1LCA4NCwgMTk3LCAKLSAgICA2NSwgNjcsIDg0LCA4NSwgNjUsIDc2LCA3NiwgMjE3LCA2NSwgNjcsIDg0LCA3MywgODYsIDY1LCA4NCwgMTk3LCA2NSwgNjcsIAotICAgIDgyLCA3OSwgODAsIDcyLCA3OSwgNzgsIDczLCAxOTUsIDY1LCA2NywgNzUsIDc4LCA3OSwgODcsIDc2LCA2OSwgNjgsIDcxLCAKLSAgICA2OSwgMTI4LCA2NSwgNjcsIDY3LCA4NSwgNzcsIDg1LCA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCA2NywgNjcsIAotICAgIDc5LCA4NSwgNzgsIDIxMiwgNjUsIDY3LCA2NywgNzksIDc3LCA3NywgNzksIDY4LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgCi0gICAgNjUsIDY3LCA2NywgNjksIDgwLCA4NCwgMTI4LCA2NSwgNjcsIDY3LCA2OSwgNzgsIDg0LCA0NSwgODMsIDg0LCA2NSwgNjcsIAotICAgIDY3LCA2NSwgODQsIDc5LCAxMjgsIDY1LCA2NywgNjcsIDY5LCA3OCwgODQsIDEyOCwgNjUsIDY3LCA2NywgNjksIDc4LCAKLSAgICAyMTIsIDY1LCA2NywgNjUsIDY4LCA2OSwgNzcsIDIxNywgNjUsIDY2LCA4OSwgODMsIDc3LCA2NSwgMjA0LCA2NSwgNjYsIAotICAgIDg1LCA3OCwgNjgsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDY1LCA2NiwgNzUsIDcyLCA2NSwgODMsIDczLCA2NSwgMjA2LCA2NSwgCi0gICAgNjYsIDY2LCA4MiwgNjksIDg2LCA3MywgNjUsIDg0LCA3MywgNzksIDIwNiwgNjUsIDY2LCA2NSwgNzAsIDczLCA3NiwgNzMsIAotICAgIDEyOCwgNjUsIDY2LCAxNzgsIDY1LCA2NiwgNDksIDU3LCA0OSwgMTI4LCA2NSwgNjYsIDQ5LCA1NiwgNTYsIDEyOCwgNjUsIAotICAgIDY2LCA0OSwgNTYsIDQ4LCAxMjgsIDY1LCA2NiwgNDksIDU1LCA0OSwgMTI4LCA2NSwgNjYsIDQ5LCA1NCwgNTIsIDEyOCwgCi0gICAgNjUsIDY2LCA0OSwgNTEsIDQ5LCA2NiwgMTI4LCA2NSwgNjYsIDQ5LCA1MSwgNDksIDY1LCAxMjgsIDY1LCA2NiwgNDksIDUwLCAKLSAgICA1MSwgMTI4LCA2NSwgNjYsIDQ5LCA1MCwgNTAsIDEyOCwgNjUsIDY2LCA0OSwgNTAsIDQ4LCAxMjgsIDY1LCA2NiwgNDksIAotICAgIDQ5LCA1NiwgMTI4LCA2NSwgNjYsIDQ4LCA1NiwgNTUsIDEyOCwgNjUsIDY2LCA0OCwgNTYsIDU0LCAxMjgsIDY1LCA2NiwgCi0gICAgNDgsIDU2LCA1MywgMTI4LCA2NSwgNjYsIDQ4LCA1NiwgNTAsIDEyOCwgNjUsIDY2LCA0OCwgNTYsIDQ5LCAxMjgsIDY1LCAKLSAgICA2NiwgNDgsIDU2LCA0OCwgMTI4LCA2NSwgNjYsIDQ4LCA1NSwgNTcsIDEyOCwgNjUsIDY2LCA0OCwgNTUsIDU2LCAxMjgsIAotICAgIDY1LCA2NiwgNDgsIDU1LCA1NSwgMTI4LCA2NSwgNjYsIDQ4LCA1NSwgNTQsIDEyOCwgNjUsIDY2LCA0OCwgNTUsIDUyLCAKLSAgICAxMjgsIDY1LCA2NiwgNDgsIDU1LCA1MSwgMTI4LCA2NSwgNjYsIDQ4LCA1NSwgNDgsIDEyOCwgNjUsIDY2LCA0OCwgNTQsIAotICAgIDU3LCAxMjgsIDY1LCA2NiwgNDgsIDU0LCA1NSwgMTI4LCA2NSwgNjYsIDQ4LCA1NCwgNTQsIDEyOCwgNjUsIDY2LCA0OCwgCi0gICAgNTQsIDUzLCAxMjgsIDY1LCA2NiwgNDgsIDU0LCA0OSwgMTI4LCA2NSwgNjYsIDQ4LCA1NCwgNDgsIDEyOCwgNjUsIDY2LCAKLSAgICA0OCwgNTMsIDU3LCAxMjgsIDY1LCA2NiwgNDgsIDUzLCA1NiwgMTI4LCA2NSwgNjYsIDQ4LCA1MywgNTUsIDEyOCwgNjUsIAotICAgIDY2LCA0OCwgNTMsIDU0LCAxMjgsIDY1LCA2NiwgNDgsIDUzLCA1MywgMTI4LCA2NSwgNjYsIDQ4LCA1MywgNTIsIDEyOCwgCi0gICAgNjUsIDY2LCA0OCwgNTMsIDUxLCAxMjgsIDY1LCA2NiwgNDgsIDUzLCA0OSwgMTI4LCA2NSwgNjYsIDQ4LCA1MywgNDgsIAotICAgIDEyOCwgNjUsIDY2LCA0OCwgNTIsIDU3LCAxMjgsIDY1LCA2NiwgNDgsIDUyLCA1NiwgMTI4LCA2NSwgNjYsIDQ4LCA1MiwgCi0gICAgNTUsIDEyOCwgNjUsIDY2LCA0OCwgNTIsIDU0LCAxMjgsIDY1LCA2NiwgNDgsIDUyLCA1MywgMTI4LCA2NSwgNjYsIDQ4LCAKLSAgICA1MiwgNTIsIDEyOCwgNjUsIDY2LCA0OCwgNTIsIDQ5LCAxMjgsIDY1LCA2NiwgNDgsIDUyLCA0OCwgMTI4LCA2NSwgNjYsIAotICAgIDQ4LCA1MSwgNTcsIDEyOCwgNjUsIDY2LCA0OCwgNTEsIDU2LCAxMjgsIDY1LCA2NiwgNDgsIDUxLCA1NSwgMTI4LCA2NSwgCi0gICAgNjYsIDQ4LCA1MSwgNTIsIDEyOCwgNjUsIDY2LCA0OCwgNTEsIDQ5LCAxMjgsIDY1LCA2NiwgNDgsIDUxLCA0OCwgMTI4LCAKLSAgICA2NSwgNjYsIDQ4LCA1MCwgNTcsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDU2LCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA1NSwgCi0gICAgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNTQsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDUyLCAxMjgsIDY1LCA2NiwgNDgsIDUwLCAKLSAgICA1MSwgNzcsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDUxLCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA1MCwgNzcsIDEyOCwgNjUsIAotICAgIDY2LCA0OCwgNTAsIDUwLCA3MCwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNTAsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDQ5LCA3NywgCi0gICAgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNDksIDcwLCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA0OSwgMTI4LCA2NSwgNjYsIDQ4LCAKLSAgICA1MCwgNDgsIDEyOCwgNjUsIDY2LCA0OCwgNDksIDU1LCAxMjgsIDY1LCA2NiwgNDgsIDQ5LCA1NCwgMTI4LCA2NSwgNjYsIAotICAgIDQ4LCA0OSwgNTEsIDEyOCwgNjUsIDY2LCA0OCwgNDksIDQ5LCAxMjgsIDY1LCA2NiwgNDgsIDQ5LCA0OCwgMTI4LCA2NSwgCi0gICAgNjYsIDQ4LCA0OCwgNTcsIDEyOCwgNjUsIDY2LCA0OCwgNDgsIDU2LCAxMjgsIDY1LCA2NiwgNDgsIDQ4LCA1NSwgMTI4LCAKLSAgICA2NSwgNjYsIDQ4LCA0OCwgNTQsIDEyOCwgNjUsIDY2LCA0OCwgNDgsIDUzLCAxMjgsIDY1LCA2NiwgNDgsIDQ4LCA1MiwgCi0gICAgMTI4LCA2NSwgNjYsIDQ4LCA0OCwgNTEsIDEyOCwgNjUsIDY2LCA0OCwgNDgsIDUwLCAxMjgsIDY1LCA2NiwgNDgsIDQ4LCAKLSAgICA0OSwgMTI4LCA2NSwgNjUsIDg5LCA3MywgNzgsIDEyOCwgNjUsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjUsIAotICAgIDY1LCA4OSwgMTI4LCA2NSwgNjUsIDg3LCAxMjgsIDY1LCA2NSwgNzksIDEyOCwgNjUsIDY1LCA3NCwgMTI4LCA2NSwgNjUsIAotICAgIDY2LCA2NSwgNjUsIDcwLCA3MywgNzYsIDczLCAxMjgsIDY1LCA2NSwgNDgsIDUxLCA1MCwgMTI4LCA2NSwgNjUsIDQ4LCA1MSwgCi0gICAgNDksIDEyOCwgNjUsIDY1LCA0OCwgNTEsIDQ4LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1NywgMTI4LCA2NSwgNjUsIDQ4LCAKLSAgICA1MCwgNTYsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDU1LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1NCwgMTI4LCA2NSwgNjUsIAotICAgIDQ4LCA1MCwgNTMsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDUyLCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1MSwgMTI4LCA2NSwgCi0gICAgNjUsIDQ4LCA1MCwgNTAsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDQ5LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA0OCwgMTI4LCAKLSAgICA2NSwgNjUsIDQ4LCA0OSwgNTcsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDU2LCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1NSwgCi0gICAgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTQsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDUzLCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCAKLSAgICA1MiwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTEsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDUwLCAxMjgsIDY1LCA2NSwgNDgsIAotICAgIDQ5LCA0OSwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNDgsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU3LCAxMjgsIDY1LCA2NSwgCi0gICAgNDgsIDQ4LCA1NiwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTUsIDY2LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NSwgNjUsIAotICAgIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU1LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NCwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgCi0gICAgNTMsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDUyLCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1MSwgMTI4LCA2NSwgNjUsIDQ4LCAKLSAgICA0OCwgNTAsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDQ5LCAxMjgsIDY1LCA1NiwgNDgsIDU1LCAxMjgsIDY1LCA1NiwgNDgsIAotICAgIDU0LCAxMjgsIDY1LCA1NiwgNDgsIDUzLCAxMjgsIDY1LCA1NiwgNDgsIDUyLCAxMjgsIDY1LCA1NiwgNDgsIDUxLCAxMjgsIAotICAgIDY1LCA1NiwgNDgsIDUwLCAxMjgsIDY1LCA1NiwgNDgsIDQ5LCAxMjgsIDY1LCA1NiwgNDgsIDQ4LCAxMjgsIDY1LCA1NSwgCi0gICAgNTEsIDE3OCwgNjUsIDU1LCA1MCwgMTgyLCA2NSwgNTUsIDQ5LCAxODMsIDY1LCA1NSwgNDksIDE4MSwgNjUsIDU1LCA0OSwgCi0gICAgMTgwLCA2NSwgNTUsIDQ5LCAxNzksIDY1LCA1NSwgNDksIDE3OCwgNjUsIDU1LCA0OSwgMTc3LCA2NSwgNTUsIDQ5LCAxNzYsIAotICAgIDY1LCA1NSwgNDgsIDU3LCA0NSwgMTgyLCA2NSwgNTUsIDQ4LCA1NywgNDUsIDE4MCwgNjUsIDU1LCA0OCwgNTcsIDQ1LCAKLSAgICAxNzksIDY1LCA1NSwgNDgsIDU3LCA0NSwgMTc4LCA2NSwgNTUsIDQ4LCAxODUsIDY1LCA1NSwgNDgsIDE4NCwgNjUsIDU1LCAKLSAgICA0OCwgMTgzLCA2NSwgNTUsIDQ4LCAxODIsIDY1LCA1NSwgNDgsIDE4MSwgNjUsIDU1LCA0OCwgMTgwLCA2NSwgNTUsIDQ4LCAKLSAgICAxNzksIDY1LCA1NSwgNDgsIDE3OCwgNjUsIDU1LCA0OCwgMTc3LCA2NSwgNTQsIDU0LCA1MiwgMTI4LCA2NSwgNTQsIDU0LCAKLSAgICA1MSwgMTI4LCA2NSwgNTQsIDU0LCA1MCwgMTI4LCA2NSwgNTQsIDU0LCA0OSwgMTI4LCA2NSwgNTQsIDU0LCA0OCwgMTI4LCAKLSAgICA2NSwgNTQsIDUzLCA1NywgMTI4LCA2NSwgNTQsIDUzLCA1NiwgMTI4LCA2NSwgNTQsIDUzLCA1NSwgMTI4LCA2NSwgNTQsIAotICAgIDUzLCA1NCwgMTI4LCA2NSwgNTQsIDUzLCA1MywgMTI4LCA2NSwgNTQsIDUzLCA1MiwgMTI4LCA2NSwgNTQsIDUzLCA1MSwgCi0gICAgMTI4LCA2NSwgNTQsIDUzLCA1MCwgMTI4LCA2NSwgNTQsIDUzLCA0OSwgMTI4LCA2NSwgNTQsIDUyLCA1NywgMTI4LCA2NSwgCi0gICAgNTQsIDUyLCA1NiwgMTI4LCA2NSwgNTQsIDUyLCA1NCwgMTI4LCA2NSwgNTQsIDUyLCA1MywgMTI4LCA2NSwgNTQsIDUyLCAKLSAgICA1MiwgMTI4LCA2NSwgNTQsIDUyLCA1MSwgMTI4LCA2NSwgNTQsIDUyLCA1MCwgMTI4LCA2NSwgNTQsIDUyLCA0OCwgMTI4LCAKLSAgICA2NSwgNTQsIDUxLCA1NiwgMTI4LCA2NSwgNTQsIDUxLCA1NSwgMTI4LCA2NSwgNTQsIDUxLCA1MiwgMTI4LCA2NSwgNTQsIAotICAgIDUwLCA1NywgMTI4LCA2NSwgNTQsIDUwLCA1NiwgMTI4LCA2NSwgNTQsIDUwLCA1NSwgMTI4LCA2NSwgNTQsIDUwLCA1NCwgCi0gICAgMTI4LCA2NSwgNTQsIDUwLCA1MiwgMTI4LCA2NSwgNTQsIDUwLCA1MSwgMTI4LCA2NSwgNTQsIDUwLCA1MCwgMTI4LCA2NSwgCi0gICAgNTQsIDUwLCA0OSwgMTI4LCA2NSwgNTQsIDUwLCA0OCwgMTI4LCA2NSwgNTQsIDQ5LCA1NywgMTI4LCA2NSwgNTQsIDQ5LCAKLSAgICA1NiwgMTI4LCA2NSwgNTQsIDQ5LCA1NSwgMTI4LCA2NSwgNTQsIDQ5LCA1NCwgMTI4LCA2NSwgNTQsIDQ5LCA1MywgMTI4LCAKLSAgICA2NSwgNTQsIDQ5LCA1MiwgMTI4LCA2NSwgNTQsIDQ5LCA1MSwgMTI4LCA2NSwgNTQsIDQ5LCA1MCwgMTI4LCA2NSwgNTQsIAotICAgIDQ5LCA0OSwgMTI4LCA2NSwgNTQsIDQ5LCA0OCwgMTI4LCA2NSwgNTQsIDQ4LCA1NywgMTI4LCA2NSwgNTQsIDQ4LCA1NiwgCi0gICAgMTI4LCA2NSwgNTQsIDQ4LCA1NCwgMTI4LCA2NSwgNTQsIDQ4LCA1MiwgMTI4LCA2NSwgNTQsIDQ4LCA1MSwgMTI4LCA2NSwgCi0gICAgNTQsIDQ4LCA1MCwgMTI4LCA2NSwgNTQsIDQ4LCA0OSwgMTI4LCA2NSwgNTQsIDQ4LCA0OCwgMTI4LCA2NSwgNTMsIDU3LCAKLSAgICA1NiwgMTI4LCA2NSwgNTMsIDU3LCA1NCwgMTI4LCA2NSwgNTMsIDU3LCA1MywgMTI4LCA2NSwgNTMsIDU3LCA1MiwgMTI4LCAKLSAgICA2NSwgNTMsIDU3LCA1MCwgMTI4LCA2NSwgNTMsIDU3LCA0OSwgMTI4LCA2NSwgNTMsIDU2LCA1NywgMTI4LCA2NSwgNTMsIAotICAgIDU2LCA1NiwgMTI4LCA2NSwgNTMsIDU2LCA1NSwgMTI4LCA2NSwgNTMsIDU2LCA1NCwgMTI4LCA2NSwgNTMsIDU2LCA1MywgCi0gICAgMTI4LCA2NSwgNTMsIDU2LCA1MiwgMTI4LCA2NSwgNTMsIDU2LCA1MSwgMTI4LCA2NSwgNTMsIDU2LCA1MCwgMTI4LCA2NSwgCi0gICAgNTMsIDU2LCA0OSwgMTI4LCA2NSwgNTMsIDU2LCA0OCwgMTI4LCA2NSwgNTMsIDU1LCA1NywgMTI4LCA2NSwgNTMsIDU1LCAKLSAgICA1NiwgMTI4LCA2NSwgNTMsIDU1LCA1NSwgMTI4LCA2NSwgNTMsIDU1LCA1NCwgMTI4LCA2NSwgNTMsIDU1LCA1MywgMTI4LCAKLSAgICA2NSwgNTMsIDU1LCA1MiwgMTI4LCA2NSwgNTMsIDU1LCA1MSwgMTI4LCA2NSwgNTMsIDU1LCA1MCwgMTI4LCA2NSwgNTMsIAotICAgIDU1LCA0OSwgMTI4LCA2NSwgNTMsIDU1LCA0OCwgMTI4LCA2NSwgNTMsIDU0LCA1NywgMTI4LCA2NSwgNTMsIDU0LCA1NiwgCi0gICAgMTI4LCA2NSwgNTMsIDU0LCA1NCwgMTI4LCA2NSwgNTMsIDU0LCA1MywgMTI4LCA2NSwgNTMsIDU0LCA1MiwgMTI4LCA2NSwgCi0gICAgNTMsIDU0LCA1MSwgMTI4LCA2NSwgNTMsIDUzLCA1NywgMTI4LCA2NSwgNTMsIDUzLCA1NSwgMTI4LCA2NSwgNTMsIDUzLCAKLSAgICA1NCwgMTI4LCA2NSwgNTMsIDUzLCA1MywgMTI4LCA2NSwgNTMsIDUzLCA1MiwgMTI4LCA2NSwgNTMsIDUzLCA1MSwgMTI4LCAKLSAgICA2NSwgNTMsIDUzLCA1MCwgMTI4LCA2NSwgNTMsIDUzLCA0OSwgMTI4LCA2NSwgNTMsIDUzLCA0OCwgMTI4LCA2NSwgNTMsIAotICAgIDUyLCA1NywgMTI4LCA2NSwgNTMsIDUyLCA1NiwgMTI4LCA2NSwgNTMsIDUyLCA1NSwgMTI4LCA2NSwgNTMsIDUyLCA1MywgCi0gICAgMTI4LCA2NSwgNTMsIDUyLCA1MCwgMTI4LCA2NSwgNTMsIDUyLCA0OSwgMTI4LCA2NSwgNTMsIDUyLCA0OCwgMTI4LCA2NSwgCi0gICAgNTMsIDUxLCA1NywgMTI4LCA2NSwgNTMsIDUxLCA1NiwgMTI4LCA2NSwgNTMsIDUxLCA1NSwgMTI4LCA2NSwgNTMsIDUxLCAKLSAgICA1NCwgMTI4LCA2NSwgNTMsIDUxLCA1MywgMTI4LCA2NSwgNTMsIDUxLCA1MiwgMTI4LCA2NSwgNTMsIDUxLCA1MCwgMTI4LCAKLSAgICA2NSwgNTMsIDUxLCA0OSwgMTI4LCA2NSwgNTMsIDUxLCA0OCwgMTI4LCA2NSwgNTMsIDUwLCA1NywgMTI4LCA2NSwgNTMsIAotICAgIDUwLCA1NiwgMTI4LCA2NSwgNTMsIDUwLCA1NSwgMTI4LCA2NSwgNTMsIDUwLCA1NCwgMTI4LCA2NSwgNTMsIDUwLCA1MywgCi0gICAgMTI4LCA2NSwgNTMsIDUwLCA1MiwgMTI4LCA2NSwgNTMsIDUwLCA1MSwgMTI4LCA2NSwgNTMsIDUwLCA1MCwgMTI4LCA2NSwgCi0gICAgNTMsIDUwLCA0OSwgMTI4LCA2NSwgNTMsIDUwLCA0OCwgMTI4LCA2NSwgNTMsIDQ5LCA1NywgMTI4LCA2NSwgNTMsIDQ5LCAKLSAgICA1NiwgMTI4LCA2NSwgNTMsIDQ5LCA1NSwgMTI4LCA2NSwgNTMsIDQ5LCA1NCwgMTI4LCA2NSwgNTMsIDQ5LCA1MywgMTI4LCAKLSAgICA2NSwgNTMsIDQ5LCA1MiwgMTI4LCA2NSwgNTMsIDQ5LCA1MSwgMTI4LCA2NSwgNTMsIDQ5LCA1MCwgMTI4LCA2NSwgNTMsIAotICAgIDQ5LCA0OSwgMTI4LCA2NSwgNTMsIDQ5LCA0OCwgMTI4LCA2NSwgNTMsIDQ4LCA1NywgMTI4LCA2NSwgNTMsIDQ4LCA1NiwgCi0gICAgMTI4LCA2NSwgNTMsIDQ4LCA1NSwgMTI4LCA2NSwgNTMsIDQ4LCA1NCwgMTI4LCA2NSwgNTMsIDQ4LCA1MywgMTI4LCA2NSwgCi0gICAgNTMsIDQ4LCA1MiwgMTI4LCA2NSwgNTMsIDQ4LCA1MSwgMTI4LCA2NSwgNTMsIDQ4LCA1MCwgMTI4LCA2NSwgNTMsIDQ4LCAKLSAgICA0OSwgMTI4LCA2NSwgNTIsIDU3LCA1NSwgMTI4LCA2NSwgNTIsIDU3LCA1NCwgMTI4LCA2NSwgNTIsIDU3LCA1MywgMTI4LCAKLSAgICA2NSwgNTIsIDU3LCA1MiwgMTI4LCA2NSwgNTIsIDU3LCA1MSwgMTI4LCA2NSwgNTIsIDU3LCA1MCwgMTI4LCA2NSwgNTIsIAotICAgIDU3LCA0OSwgMTI4LCA2NSwgNTIsIDU3LCA0OCwgMTI4LCA2NSwgNTIsIDU2LCA1NywgMTI4LCA2NSwgNTIsIDU2LCA1NiwgCi0gICAgMTI4LCA2NSwgNTIsIDU2LCA1NSwgMTI4LCA2NSwgNTIsIDU2LCA1NCwgMTI4LCA2NSwgNTIsIDU2LCA1MywgMTI4LCA2NSwgCi0gICAgNTIsIDU2LCA1MiwgMTI4LCA2NSwgNTIsIDU2LCA1MSwgMTI4LCA2NSwgNTIsIDU2LCA1MCwgMTI4LCA2NSwgNTIsIDU2LCAKLSAgICA0OSwgMTI4LCA2NSwgNTIsIDU2LCA0OCwgMTI4LCA2NSwgNTIsIDU1LCA1NywgMTI4LCA2NSwgNTIsIDU1LCA1NiwgMTI4LCAKLSAgICA2NSwgNTIsIDU1LCA1NSwgMTI4LCA2NSwgNTIsIDU1LCA1NCwgMTI4LCA2NSwgNTIsIDU1LCA1MywgMTI4LCA2NSwgNTIsIAotICAgIDU1LCA1MiwgMTI4LCA2NSwgNTIsIDU1LCA1MSwgMTI4LCA2NSwgNTIsIDU1LCA1MCwgMTI4LCA2NSwgNTIsIDU1LCA0OSwgCi0gICAgMTI4LCA2NSwgNTIsIDU1LCA0OCwgMTI4LCA2NSwgNTIsIDU0LCA1NywgMTI4LCA2NSwgNTIsIDU0LCA1NiwgMTI4LCA2NSwgCi0gICAgNTIsIDU0LCA1NSwgMTI4LCA2NSwgNTIsIDU0LCA1NCwgMTI4LCA2NSwgNTIsIDU0LCA1MywgMTI4LCA2NSwgNTIsIDU0LCAKLSAgICA1MiwgMTI4LCA2NSwgNTIsIDU0LCA1MSwgMTI4LCA2NSwgNTIsIDU0LCA1MCwgMTI4LCA2NSwgNTIsIDU0LCA0OSwgMTI4LCAKLSAgICA2NSwgNTIsIDU0LCA0OCwgMTI4LCA2NSwgNTIsIDUzLCA1NywgMTI4LCA2NSwgNTIsIDUzLCA1NiwgMTI4LCA2NSwgNTIsIAotICAgIDUzLCA1NSwgNjUsIDEyOCwgNjUsIDUyLCA1MywgNTUsIDEyOCwgNjUsIDUyLCA1MywgNTQsIDEyOCwgNjUsIDUyLCA1MywgCi0gICAgNTMsIDEyOCwgNjUsIDUyLCA1MywgNTIsIDEyOCwgNjUsIDUyLCA1MywgNTEsIDEyOCwgNjUsIDUyLCA1MywgNTAsIDEyOCwgCi0gICAgNjUsIDUyLCA1MywgNDksIDEyOCwgNjUsIDUyLCA1MywgNDgsIDY1LCAxMjgsIDY1LCA1MiwgNTMsIDQ4LCAxMjgsIDY1LCAKLSAgICA1MiwgNTIsIDU3LCAxMjgsIDY1LCA1MiwgNTIsIDU2LCAxMjgsIDY1LCA1MiwgNTIsIDU1LCAxMjgsIDY1LCA1MiwgNTIsIAotICAgIDU0LCAxMjgsIDY1LCA1MiwgNTIsIDUzLCAxMjgsIDY1LCA1MiwgNTIsIDUyLCAxMjgsIDY1LCA1MiwgNTIsIDUxLCAxMjgsIAotICAgIDY1LCA1MiwgNTIsIDUwLCAxMjgsIDY1LCA1MiwgNTIsIDQ5LCAxMjgsIDY1LCA1MiwgNTIsIDQ4LCAxMjgsIDY1LCA1MiwgCi0gICAgNTEsIDU3LCAxMjgsIDY1LCA1MiwgNTEsIDU2LCAxMjgsIDY1LCA1MiwgNTEsIDU1LCAxMjgsIDY1LCA1MiwgNTEsIDU0LCAKLSAgICAxMjgsIDY1LCA1MiwgNTEsIDUzLCAxMjgsIDY1LCA1MiwgNTEsIDUyLCAxMjgsIDY1LCA1MiwgNTEsIDUxLCAxMjgsIDY1LCAKLSAgICA1MiwgNTEsIDUwLCAxMjgsIDY1LCA1MiwgNTEsIDQ5LCAxMjgsIDY1LCA1MiwgNTEsIDQ4LCAxMjgsIDY1LCA1MiwgNTAsIAotICAgIDU3LCAxMjgsIDY1LCA1MiwgNTAsIDU2LCAxMjgsIDY1LCA1MiwgNTAsIDU1LCAxMjgsIDY1LCA1MiwgNTAsIDU0LCAxMjgsIAotICAgIDY1LCA1MiwgNTAsIDUzLCAxMjgsIDY1LCA1MiwgNTAsIDUyLCAxMjgsIDY1LCA1MiwgNTAsIDUxLCAxMjgsIDY1LCA1MiwgCi0gICAgNTAsIDUwLCAxMjgsIDY1LCA1MiwgNTAsIDQ5LCAxMjgsIDY1LCA1MiwgNTAsIDQ4LCAxMjgsIDY1LCA1MiwgNDksIDU3LCAKLSAgICAxMjgsIDY1LCA1MiwgNDksIDU2LCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ5LCA1NiwgMTI4LCA2NSwgNTIsIAotICAgIDQ5LCA1NSwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OSwgNTUsIDEyOCwgNjUsIDUyLCA0OSwgNTQsIDQ1LCA4NiwgCi0gICAgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDksIDU0LCAxMjgsIDY1LCA1MiwgNDksIDUzLCA0NSwgODYsIDY1LCA4MywgMTI4LCAKLSAgICA2NSwgNTIsIDQ5LCA1MywgMTI4LCA2NSwgNTIsIDQ5LCA1MiwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OSwgNTIsIAotICAgIDEyOCwgNjUsIDUyLCA0OSwgNTEsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDksIDUxLCAxMjgsIDY1LCA1MiwgCi0gICAgNDksIDUwLCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ5LCA1MCwgMTI4LCA2NSwgNTIsIDQ5LCA0OSwgNDUsIDg2LCAKLSAgICA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OSwgNDksIDEyOCwgNjUsIDUyLCA0OSwgNDgsIDE5MywgNjUsIDUyLCA0OSwgNDgsIAotICAgIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDksIDE3NiwgNjUsIDUyLCA0OCwgNTcsIDQ1LCA4NiwgNjUsIDgzLCAKLSAgICAxMjgsIDY1LCA1MiwgNDgsIDU3LCAxMjgsIDY1LCA1MiwgNDgsIDU2LCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIAotICAgIDQ4LCA1NiwgMTI4LCA2NSwgNTIsIDQ4LCA1NSwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OCwgNTUsIDEyOCwgCi0gICAgNjUsIDUyLCA0OCwgNTQsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDgsIDU0LCAxMjgsIDY1LCA1MiwgNDgsIDUzLCAKLSAgICA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ4LCA1MywgMTI4LCA2NSwgNTIsIDQ4LCA1MiwgNDUsIDg2LCA2NSwgODMsIAotICAgIDEyOCwgNjUsIDUyLCA0OCwgNTIsIDEyOCwgNjUsIDUyLCA0OCwgNTEsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgCi0gICAgNDgsIDUxLCAxMjgsIDY1LCA1MiwgNDgsIDUwLCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ4LCA1MCwgMTI4LCAKLSAgICA2NSwgNTIsIDQ4LCA0OSwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OCwgNDksIDEyOCwgNjUsIDUyLCA0OCwgNDgsIAotICAgIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDgsIDQ4LCAxMjgsIDY1LCA1MSwgNTcsIDU3LCAxMjgsIDY1LCA1MSwgCi0gICAgNTcsIDU2LCAxMjgsIDY1LCA1MSwgNTcsIDU1LCAxMjgsIDY1LCA1MSwgNTcsIDU0LCAxMjgsIDY1LCA1MSwgNTcsIDUzLCAKLSAgICAxMjgsIDY1LCA1MSwgNTcsIDUyLCAxMjgsIDY1LCA1MSwgNTcsIDE3OSwgNjUsIDUxLCA1NywgNTAsIDEyOCwgNjUsIDUxLCAKLSAgICA1NywgNDksIDEyOCwgNjUsIDUxLCA1NywgNDgsIDEyOCwgNjUsIDUxLCA1NiwgNTcsIDEyOCwgNjUsIDUxLCA1NiwgNTYsIAotICAgIDEyOCwgNjUsIDUxLCA1NiwgNTUsIDEyOCwgNjUsIDUxLCA1NiwgNTQsIDY1LCAxMjgsIDY1LCA1MSwgNTYsIDU0LCAxMjgsIAotICAgIDY1LCA1MSwgNTYsIDUzLCAxMjgsIDY1LCA1MSwgNTYsIDUyLCAxMjgsIDY1LCA1MSwgNTYsIDUxLCA2NSwgMTI4LCA2NSwgCi0gICAgNTEsIDU2LCAxNzksIDY1LCA1MSwgNTYsIDUwLCAxMjgsIDY1LCA1MSwgNTYsIDQ5LCA2NSwgMTI4LCA2NSwgNTEsIDU2LCAKLSAgICA0OSwgMTI4LCA2NSwgNTEsIDU2LCA0OCwgMTI4LCA2NSwgNTEsIDU1LCA1NywgMTI4LCA2NSwgNTEsIDU1LCA1NiwgMTI4LCAKLSAgICA2NSwgNTEsIDU1LCA1NSwgMTI4LCA2NSwgNTEsIDU1LCA1NCwgMTI4LCA2NSwgNTEsIDU1LCA1MywgMTI4LCA2NSwgNTEsIAotICAgIDU1LCA1MiwgMTI4LCA2NSwgNTEsIDU1LCA1MSwgMTI4LCA2NSwgNTEsIDU1LCA1MCwgMTI4LCA2NSwgNTEsIDU1LCA0OSwgCi0gICAgNjUsIDEyOCwgNjUsIDUxLCA1NSwgNDksIDEyOCwgNjUsIDUxLCA1NSwgNDgsIDEyOCwgNjUsIDUxLCA1NCwgNTcsIDEyOCwgCi0gICAgNjUsIDUxLCA1NCwgNTYsIDY1LCAxMjgsIDY1LCA1MSwgNTQsIDU2LCAxMjgsIDY1LCA1MSwgNTQsIDU1LCAxMjgsIDY1LCAKLSAgICA1MSwgNTQsIDU0LCAxMjgsIDY1LCA1MSwgNTQsIDUzLCAxMjgsIDY1LCA1MSwgNTQsIDUyLCA2NSwgMTI4LCA2NSwgNTEsIAotICAgIDU0LCA1MiwgMTI4LCA2NSwgNTEsIDU0LCA1MSwgMTI4LCA2NSwgNTEsIDU0LCA1MCwgMTI4LCA2NSwgNTEsIDU0LCA0OSwgCi0gICAgMTI4LCA2NSwgNTEsIDU0LCA0OCwgMTI4LCA2NSwgNTEsIDUzLCA1NywgNjUsIDEyOCwgNjUsIDUxLCA1MywgNTcsIDEyOCwgCi0gICAgNjUsIDUxLCA1MywgNTYsIDEyOCwgNjUsIDUxLCA1MywgNTUsIDEyOCwgNjUsIDUxLCA1MywgNTQsIDEyOCwgNjUsIDUxLCAKLSAgICA1MywgNTMsIDEyOCwgNjUsIDUxLCA1MywgNTIsIDEyOCwgNjUsIDUxLCA1MywgNTEsIDEyOCwgNjUsIDUxLCA1MywgNTAsIAotICAgIDEyOCwgNjUsIDUxLCA1MywgNDksIDEyOCwgNjUsIDUxLCA1MywgNDgsIDEyOCwgNjUsIDUxLCA1MiwgNTcsIDEyOCwgNjUsIAotICAgIDUxLCA1MiwgNTYsIDEyOCwgNjUsIDUxLCA1MiwgNTUsIDEyOCwgNjUsIDUxLCA1MiwgNTQsIDEyOCwgNjUsIDUxLCA1MiwgCi0gICAgNTMsIDEyOCwgNjUsIDUxLCA1MiwgNTIsIDEyOCwgNjUsIDUxLCA1MiwgNTEsIDEyOCwgNjUsIDUxLCA1MiwgNTAsIDEyOCwgCi0gICAgNjUsIDUxLCA1MiwgNDksIDEyOCwgNjUsIDUxLCA1MiwgNDgsIDEyOCwgNjUsIDUxLCA1MSwgNTcsIDEyOCwgNjUsIDUxLCAKLSAgICA1MSwgNTYsIDEyOCwgNjUsIDUxLCA1MSwgNTUsIDEyOCwgNjUsIDUxLCA1MSwgNTQsIDY3LCAxMjgsIDY1LCA1MSwgNTEsIAotICAgIDU0LCA2NiwgMTI4LCA2NSwgNTEsIDUxLCA1NCwgNjUsIDEyOCwgNjUsIDUxLCA1MSwgNTQsIDEyOCwgNjUsIDUxLCA1MSwgCi0gICAgNTMsIDEyOCwgNjUsIDUxLCA1MSwgNTIsIDEyOCwgNjUsIDUxLCA1MSwgNTEsIDEyOCwgNjUsIDUxLCA1MSwgNTAsIDY3LCAKLSAgICAxMjgsIDY1LCA1MSwgNTEsIDUwLCA2NiwgMTI4LCA2NSwgNTEsIDUxLCA1MCwgNjUsIDEyOCwgNjUsIDUxLCA1MSwgNTAsIAotICAgIDEyOCwgNjUsIDUxLCA1MSwgNDksIDEyOCwgNjUsIDUxLCA1MSwgNDgsIDEyOCwgNjUsIDUxLCA1MCwgNTcsIDY1LCAxMjgsIAotICAgIDY1LCA1MSwgNTAsIDU3LCAxMjgsIDY1LCA1MSwgNTAsIDU2LCAxMjgsIDY1LCA1MSwgNTAsIDU1LCAxMjgsIDY1LCA1MSwgCi0gICAgNTAsIDU0LCAxMjgsIDY1LCA1MSwgNTAsIDUzLCAxMjgsIDY1LCA1MSwgNTAsIDUyLCAxMjgsIDY1LCA1MSwgNTAsIDUxLCAKLSAgICAxMjgsIDY1LCA1MSwgNTAsIDUwLCAxMjgsIDY1LCA1MSwgNTAsIDQ5LCAxMjgsIDY1LCA1MSwgNTAsIDQ4LCAxMjgsIDY1LCAKLSAgICA1MSwgNDksIDU3LCAxMjgsIDY1LCA1MSwgNDksIDU2LCAxMjgsIDY1LCA1MSwgNDksIDU1LCAxMjgsIDY1LCA1MSwgNDksIAotICAgIDU0LCAxMjgsIDY1LCA1MSwgNDksIDUzLCAxMjgsIDY1LCA1MSwgNDksIDUyLCAxMjgsIDY1LCA1MSwgNDksIDUxLCA2NywgCi0gICAgMTI4LCA2NSwgNTEsIDQ5LCA1MSwgNjYsIDEyOCwgNjUsIDUxLCA0OSwgNTEsIDY1LCAxMjgsIDY1LCA1MSwgNDksIDUxLCAKLSAgICAxMjgsIDY1LCA1MSwgNDksIDUwLCAxMjgsIDY1LCA1MSwgNDksIDQ5LCAxMjgsIDY1LCA1MSwgNDksIDQ4LCAxMjgsIDY1LCAKLSAgICA1MSwgNDgsIDU3LCA2NywgMTI4LCA2NSwgNTEsIDQ4LCA1NywgNjYsIDEyOCwgNjUsIDUxLCA0OCwgNTcsIDY1LCAxMjgsIAotICAgIDY1LCA1MSwgNDgsIDU3LCAxMjgsIDY1LCA1MSwgNDgsIDU2LCAxMjgsIDY1LCA1MSwgNDgsIDU1LCAxMjgsIDY1LCA1MSwgCi0gICAgNDgsIDU0LCAxMjgsIDY1LCA1MSwgNDgsIDUzLCAxMjgsIDY1LCA1MSwgNDgsIDUyLCAxMjgsIDY1LCA1MSwgNDgsIDUxLCAKLSAgICAxMjgsIDY1LCA1MSwgNDgsIDUwLCAxMjgsIDY1LCA1MSwgNDgsIDQ5LCAxMjgsIDY1LCA1MSwgNDgsIDQ4LCAxMjgsIDY1LCAKLSAgICA1MCwgNTcsIDU3LCA2NSwgMTI4LCA2NSwgNTAsIDU3LCA1NywgMTI4LCA2NSwgNTAsIDU3LCA1NiwgMTI4LCA2NSwgNTAsIAotICAgIDU3LCA1NSwgMTI4LCA2NSwgNTAsIDU3LCA1NCwgMTI4LCA2NSwgNTAsIDU3LCA1MywgMTI4LCA2NSwgNTAsIDU3LCA1MiwgCi0gICAgNjUsIDEyOCwgNjUsIDUwLCA1NywgNTIsIDEyOCwgNjUsIDUwLCA1NywgNTEsIDEyOCwgNjUsIDUwLCA1NywgNTAsIDEyOCwgCi0gICAgNjUsIDUwLCA1NywgNDksIDEyOCwgNjUsIDUwLCA1NywgNDgsIDEyOCwgNjUsIDUwLCA1NiwgNTcsIDY1LCAxMjgsIDY1LCAKLSAgICA1MCwgNTYsIDU3LCAxMjgsIDY1LCA1MCwgNTYsIDU2LCAxMjgsIDY1LCA1MCwgNTYsIDU1LCAxMjgsIDY1LCA1MCwgNTYsIAotICAgIDU0LCAxMjgsIDY1LCA1MCwgNTYsIDUzLCAxMjgsIDY1LCA1MCwgNTYsIDUyLCAxMjgsIDY1LCA1MCwgNTYsIDUxLCAxMjgsIAotICAgIDY1LCA1MCwgNTYsIDUwLCAxMjgsIDY1LCA1MCwgNTYsIDQ5LCAxMjgsIDY1LCA1MCwgNTYsIDQ4LCAxMjgsIDY1LCA1MCwgCi0gICAgNTUsIDU3LCAxMjgsIDY1LCA1MCwgNTUsIDU2LCAxMjgsIDY1LCA1MCwgNTUsIDU1LCAxMjgsIDY1LCA1MCwgNTUsIDU0LCAKLSAgICAxMjgsIDY1LCA1MCwgNTUsIDUzLCAxMjgsIDY1LCA1MCwgNTUsIDUyLCAxMjgsIDY1LCA1MCwgNTUsIDUxLCAxMjgsIDY1LCAKLSAgICA1MCwgNTUsIDUwLCAxMjgsIDY1LCA1MCwgNTUsIDQ5LCAxMjgsIDY1LCA1MCwgNTUsIDQ4LCAxMjgsIDY1LCA1MCwgNTQsIAotICAgIDU3LCAxMjgsIDY1LCA1MCwgNTQsIDU2LCAxMjgsIDY1LCA1MCwgNTQsIDU1LCA2NSwgMTI4LCA2NSwgNTAsIDU0LCA1NSwgCi0gICAgMTI4LCA2NSwgNTAsIDU0LCA1NCwgMTI4LCA2NSwgNTAsIDU0LCA1MywgMTI4LCA2NSwgNTAsIDU0LCA1MiwgMTI4LCA2NSwgCi0gICAgNTAsIDU0LCA1MSwgMTI4LCA2NSwgNTAsIDU0LCA1MCwgMTI4LCA2NSwgNTAsIDU0LCA0OSwgMTI4LCA2NSwgNTAsIDU0LCAKLSAgICA0OCwgMTI4LCA2NSwgNTAsIDUzLCA1NywgMTI4LCA2NSwgNTAsIDUzLCA1NiwgMTI4LCA2NSwgNTAsIDUzLCA1NSwgMTI4LCAKLSAgICA2NSwgNTAsIDUzLCA1NCwgMTI4LCA2NSwgNTAsIDUzLCA1MywgMTI4LCA2NSwgNTAsIDUzLCA1MiwgMTI4LCA2NSwgNTAsIAotICAgIDUzLCA1MSwgMTI4LCA2NSwgNTAsIDUzLCA1MCwgMTI4LCA2NSwgNTAsIDUzLCA0OSwgMTI4LCA2NSwgNTAsIDUzLCA0OCwgCi0gICAgMTI4LCA2NSwgNTAsIDUyLCA1NywgMTI4LCA2NSwgNTAsIDUyLCA1NiwgMTI4LCA2NSwgNTAsIDUyLCA1NSwgMTI4LCA2NSwgCi0gICAgNTAsIDUyLCA1NCwgMTI4LCA2NSwgNTAsIDUyLCA1MywgMTI4LCA2NSwgNTAsIDUyLCA1MiwgMTI4LCA2NSwgNTAsIDUyLCAKLSAgICA1MSwgMTI4LCA2NSwgNTAsIDUyLCA1MCwgMTI4LCA2NSwgNTAsIDUyLCA0OSwgMTI4LCA2NSwgNTAsIDUyLCA0OCwgMTI4LCAKLSAgICA2NSwgNTAsIDUxLCA1NywgMTI4LCA2NSwgNTAsIDUxLCA1NiwgMTI4LCA2NSwgNTAsIDUxLCA1NSwgMTI4LCA2NSwgNTAsIAotICAgIDUxLCA1NCwgMTI4LCA2NSwgNTAsIDUxLCA1MywgMTI4LCA2NSwgNTAsIDUxLCA1MiwgMTI4LCA2NSwgNTAsIDUxLCA1MSwgCi0gICAgMTI4LCA2NSwgNTAsIDUxLCA1MCwgMTI4LCA2NSwgNTAsIDUxLCA0OSwgMTI4LCA2NSwgNTAsIDUxLCA0OCwgMTI4LCA2NSwgCi0gICAgNTAsIDUwLCA1NywgMTI4LCA2NSwgNTAsIDUwLCA1NiwgMTI4LCA2NSwgNTAsIDUwLCA1NSwgNjUsIDEyOCwgNjUsIDUwLCAKLSAgICA1MCwgNTUsIDEyOCwgNjUsIDUwLCA1MCwgNTQsIDEyOCwgNjUsIDUwLCA1MCwgNTMsIDEyOCwgNjUsIDUwLCA1MCwgNTIsIAotICAgIDEyOCwgNjUsIDUwLCA1MCwgNTEsIDEyOCwgNjUsIDUwLCA1MCwgNTAsIDEyOCwgNjUsIDUwLCA1MCwgNDksIDEyOCwgNjUsIAotICAgIDUwLCA1MCwgNDgsIDEyOCwgNjUsIDUwLCA0OSwgNTcsIDEyOCwgNjUsIDUwLCA0OSwgNTYsIDEyOCwgNjUsIDUwLCA0OSwgCi0gICAgNTUsIDEyOCwgNjUsIDUwLCA0OSwgNTQsIDY1LCAxMjgsIDY1LCA1MCwgNDksIDU0LCAxMjgsIDY1LCA1MCwgNDksIDUzLCAKLSAgICA2NSwgMTI4LCA2NSwgNTAsIDQ5LCA1MywgMTI4LCA2NSwgNTAsIDQ5LCA1MiwgMTI4LCA2NSwgNTAsIDQ5LCA1MSwgMTI4LCAKLSAgICA2NSwgNTAsIDQ5LCA1MCwgMTI4LCA2NSwgNTAsIDQ5LCA0OSwgMTI4LCA2NSwgNTAsIDQ5LCA0OCwgMTI4LCA2NSwgNTAsIAotICAgIDQ4LCA1NywgNjUsIDEyOCwgNjUsIDUwLCA0OCwgNTcsIDEyOCwgNjUsIDUwLCA0OCwgNTYsIDEyOCwgNjUsIDUwLCA0OCwgCi0gICAgNTUsIDY1LCAxMjgsIDY1LCA1MCwgNDgsIDU1LCAxMjgsIDY1LCA1MCwgNDgsIDU0LCAxMjgsIDY1LCA1MCwgNDgsIDUzLCAKLSAgICAxMjgsIDY1LCA1MCwgNDgsIDUyLCAxMjgsIDY1LCA1MCwgNDgsIDUxLCAxMjgsIDY1LCA1MCwgNDgsIDUwLCA2NiwgMTI4LCAKLSAgICA2NSwgNTAsIDQ4LCA1MCwgNjUsIDEyOCwgNjUsIDUwLCA0OCwgNTAsIDEyOCwgNjUsIDUwLCA0OCwgNDksIDEyOCwgNjUsIAotICAgIDUwLCA0OCwgNDgsIDEyOCwgNjUsIDQ5LCA1NywgNTcsIDEyOCwgNjUsIDQ5LCA1NywgNTYsIDEyOCwgNjUsIDQ5LCA1NywgCi0gICAgNTUsIDEyOCwgNjUsIDQ5LCA1NywgNTQsIDEyOCwgNjUsIDQ5LCA1NywgNTMsIDEyOCwgNjUsIDQ5LCA1NywgNTIsIDEyOCwgCi0gICAgNjUsIDQ5LCA1NywgNTEsIDEyOCwgNjUsIDQ5LCA1NywgNTAsIDEyOCwgNjUsIDQ5LCA1NywgNDksIDEyOCwgNjUsIDQ5LCAKLSAgICA1NywgNDgsIDEyOCwgNjUsIDQ5LCA1NiwgNTcsIDEyOCwgNjUsIDQ5LCA1NiwgNTYsIDEyOCwgNjUsIDQ5LCA1NiwgNTUsIAotICAgIDEyOCwgNjUsIDQ5LCA1NiwgNTQsIDEyOCwgNjUsIDQ5LCA1NiwgNTMsIDEyOCwgNjUsIDQ5LCA1NiwgNTIsIDEyOCwgNjUsIAotICAgIDQ5LCA1NiwgNTEsIDEyOCwgNjUsIDQ5LCA1NiwgNTAsIDEyOCwgNjUsIDQ5LCA1NiwgNDksIDEyOCwgNjUsIDQ5LCA1NiwgCi0gICAgNDgsIDEyOCwgNjUsIDQ5LCA1NSwgNTcsIDEyOCwgNjUsIDQ5LCA1NSwgNTYsIDEyOCwgNjUsIDQ5LCA1NSwgNTUsIDEyOCwgCi0gICAgNjUsIDQ5LCA1NSwgNTQsIDEyOCwgNjUsIDQ5LCA1NSwgNTMsIDEyOCwgNjUsIDQ5LCA1NSwgNTIsIDEyOCwgNjUsIDQ5LCAKLSAgICA1NSwgNTEsIDEyOCwgNjUsIDQ5LCA1NSwgNTAsIDEyOCwgNjUsIDQ5LCA1NSwgNDksIDEyOCwgNjUsIDQ5LCA1NSwgNDgsIAotICAgIDEyOCwgNjUsIDQ5LCA1NCwgNTcsIDEyOCwgNjUsIDQ5LCA1NCwgNTYsIDEyOCwgNjUsIDQ5LCA1NCwgNTUsIDEyOCwgNjUsIAotICAgIDQ5LCA1NCwgNTQsIDEyOCwgNjUsIDQ5LCA1NCwgNTMsIDEyOCwgNjUsIDQ5LCA1NCwgNTIsIDEyOCwgNjUsIDQ5LCA1NCwgCi0gICAgNTEsIDEyOCwgNjUsIDQ5LCA1NCwgNTAsIDEyOCwgNjUsIDQ5LCA1NCwgNDksIDEyOCwgNjUsIDQ5LCA1NCwgNDgsIDEyOCwgCi0gICAgNjUsIDQ5LCA1MywgNTcsIDEyOCwgNjUsIDQ5LCA1MywgNTYsIDEyOCwgNjUsIDQ5LCA1MywgNTUsIDEyOCwgNjUsIDQ5LCAKLSAgICA1MywgNTQsIDEyOCwgNjUsIDQ5LCA1MywgNTMsIDEyOCwgNjUsIDQ5LCA1MywgNTIsIDEyOCwgNjUsIDQ5LCA1MywgNTEsIAotICAgIDEyOCwgNjUsIDQ5LCA1MywgNTAsIDEyOCwgNjUsIDQ5LCA1MywgNDksIDEyOCwgNjUsIDQ5LCA1MywgNDgsIDEyOCwgNjUsIAotICAgIDQ5LCA1MiwgNTcsIDEyOCwgNjUsIDQ5LCA1MiwgNTYsIDEyOCwgNjUsIDQ5LCA1MiwgNTUsIDEyOCwgNjUsIDQ5LCA1MiwgCi0gICAgNTQsIDEyOCwgNjUsIDQ5LCA1MiwgNTMsIDEyOCwgNjUsIDQ5LCA1MiwgNTIsIDEyOCwgNjUsIDQ5LCA1MiwgNTEsIDEyOCwgCi0gICAgNjUsIDQ5LCA1MiwgNTAsIDEyOCwgNjUsIDQ5LCA1MiwgNDksIDEyOCwgNjUsIDQ5LCA1MiwgNDgsIDEyOCwgNjUsIDQ5LCAKLSAgICA1MSwgNTcsIDEyOCwgNjUsIDQ5LCA1MSwgNTYsIDEyOCwgNjUsIDQ5LCA1MSwgNTUsIDEyOCwgNjUsIDQ5LCA1MSwgNTQsIAotICAgIDEyOCwgNjUsIDQ5LCA1MSwgNTMsIDY1LCAxMjgsIDY1LCA0OSwgNTEsIDUzLCAxMjgsIDY1LCA0OSwgNTEsIDUyLCAxMjgsIAotICAgIDY1LCA0OSwgNTEsIDUxLCAxMjgsIDY1LCA0OSwgNTEsIDUwLCAxMjgsIDY1LCA0OSwgNTEsIDQ5LCA2NywgMTI4LCA2NSwgCi0gICAgNDksIDUxLCA0OSwgMTI4LCA2NSwgNDksIDUxLCA0OCwgMTI4LCA2NSwgNDksIDUwLCA1NywgMTI4LCA2NSwgNDksIDUwLCAKLSAgICA1NiwgMTI4LCA2NSwgNDksIDUwLCA1NSwgMTI4LCA2NSwgNDksIDUwLCA1NCwgMTI4LCA2NSwgNDksIDUwLCA1MywgNjUsIAotICAgIDEyOCwgNjUsIDQ5LCA1MCwgNTMsIDEyOCwgNjUsIDQ5LCA1MCwgNTIsIDEyOCwgNjUsIDQ5LCA1MCwgNTEsIDEyOCwgNjUsIAotICAgIDQ5LCA1MCwgNTAsIDEyOCwgNjUsIDQ5LCA1MCwgNDksIDEyOCwgNjUsIDQ5LCA1MCwgNDgsIDY2LCAxMjgsIDY1LCA0OSwgCi0gICAgNTAsIDQ4LCAxMjgsIDY1LCA0OSwgNDksIDU3LCAxMjgsIDY1LCA0OSwgNDksIDU2LCAxMjgsIDY1LCA0OSwgNDksIDU1LCAKLSAgICAxMjgsIDY1LCA0OSwgNDksIDU0LCAxMjgsIDY1LCA0OSwgNDksIDUzLCA2NSwgMTI4LCA2NSwgNDksIDQ5LCA1MywgMTI4LCAKLSAgICA2NSwgNDksIDQ5LCA1MiwgMTI4LCA2NSwgNDksIDQ5LCA1MSwgMTI4LCA2NSwgNDksIDQ5LCA1MCwgMTI4LCA2NSwgNDksIAotICAgIDQ5LCA0OSwgMTI4LCA2NSwgNDksIDQ5LCA0OCwgNjYsIDEyOCwgNjUsIDQ5LCA0OSwgNDgsIDY1LCAxMjgsIDY1LCA0OSwgCi0gICAgNDksIDQ4LCAxMjgsIDY1LCA0OSwgNDgsIDU3LCAxMjgsIDY1LCA0OSwgNDgsIDU2LCAxMjgsIDY1LCA0OSwgNDgsIDU1LCAKLSAgICA2NywgMTI4LCA2NSwgNDksIDQ4LCA1NSwgNjYsIDEyOCwgNjUsIDQ5LCA0OCwgNTUsIDY1LCAxMjgsIDY1LCA0OSwgNDgsIAotICAgIDU1LCAxMjgsIDY1LCA0OSwgNDgsIDU0LCAxMjgsIDY1LCA0OSwgNDgsIDUzLCA2NiwgMTI4LCA2NSwgNDksIDQ4LCA1MywgCi0gICAgNjUsIDEyOCwgNjUsIDQ5LCA0OCwgNTMsIDEyOCwgNjUsIDQ5LCA0OCwgNTIsIDY3LCAxMjgsIDY1LCA0OSwgNDgsIDUyLCAKLSAgICA2NiwgMTI4LCA2NSwgNDksIDQ4LCA1MiwgNjUsIDEyOCwgNjUsIDQ5LCA0OCwgNTIsIDEyOCwgNjUsIDQ5LCA0OCwgNTEsIAotICAgIDEyOCwgNjUsIDQ5LCA0OCwgNTAsIDY1LCAxMjgsIDY1LCA0OSwgNDgsIDUwLCAxMjgsIDY1LCA0OSwgNDgsIDQ5LCA2NSwgCi0gICAgMTI4LCA2NSwgNDksIDQ4LCA0OSwgMTI4LCA2NSwgNDksIDQ4LCA0OCwgNjUsIDEyOCwgNjUsIDQ5LCA0OCwgNDgsIDQ1LCAKLSAgICA0OSwgNDgsIDUwLCAxMjgsIDY1LCA0OSwgNDgsIDQ4LCAxMjgsIDY1LCA0OCwgNTcsIDU3LCAxMjgsIDY1LCA0OCwgNTcsIAotICAgIDU2LCA2NSwgMTI4LCA2NSwgNDgsIDU3LCA1NiwgMTI4LCA2NSwgNDgsIDU3LCA1NSwgNjUsIDEyOCwgNjUsIDQ4LCA1NywgCi0gICAgNTUsIDEyOCwgNjUsIDQ4LCA1NywgNTQsIDEyOCwgNjUsIDQ4LCA1NywgNTMsIDEyOCwgNjUsIDQ4LCA1NywgNTIsIDEyOCwgCi0gICAgNjUsIDQ4LCA1NywgNTEsIDEyOCwgNjUsIDQ4LCA1NywgNTAsIDEyOCwgNjUsIDQ4LCA1NywgNDksIDEyOCwgNjUsIDQ4LCAKLSAgICA1NywgNDgsIDEyOCwgNjUsIDQ4LCA1NiwgNTcsIDEyOCwgNjUsIDQ4LCA1NiwgNTYsIDEyOCwgNjUsIDQ4LCA1NiwgNTUsIAotICAgIDEyOCwgNjUsIDQ4LCA1NiwgNTQsIDEyOCwgNjUsIDQ4LCA1NiwgNTMsIDEyOCwgNjUsIDQ4LCA1NiwgNTIsIDEyOCwgNjUsIAotICAgIDQ4LCA1NiwgNTEsIDEyOCwgNjUsIDQ4LCA1NiwgNTAsIDEyOCwgNjUsIDQ4LCA1NiwgNDksIDEyOCwgNjUsIDQ4LCA1NiwgCi0gICAgNDgsIDEyOCwgNjUsIDQ4LCA1NSwgNTcsIDEyOCwgNjUsIDQ4LCA1NSwgNTYsIDEyOCwgNjUsIDQ4LCA1NSwgNTUsIDEyOCwgCi0gICAgNjUsIDQ4LCA1NSwgNTQsIDEyOCwgNjUsIDQ4LCA1NSwgNTMsIDEyOCwgNjUsIDQ4LCA1NSwgNTIsIDEyOCwgNjUsIDQ4LCAKLSAgICA1NSwgNTEsIDEyOCwgNjUsIDQ4LCA1NSwgNTAsIDEyOCwgNjUsIDQ4LCA1NSwgNDksIDEyOCwgNjUsIDQ4LCA1NSwgNDgsIAotICAgIDEyOCwgNjUsIDQ4LCA1NCwgNTcsIDEyOCwgNjUsIDQ4LCA1NCwgNTYsIDEyOCwgNjUsIDQ4LCA1NCwgNTUsIDEyOCwgNjUsIAotICAgIDQ4LCA1NCwgNTQsIDY3LCAxMjgsIDY1LCA0OCwgNTQsIDU0LCA2NiwgMTI4LCA2NSwgNDgsIDU0LCA1NCwgNjUsIDEyOCwgCi0gICAgNjUsIDQ4LCA1NCwgNTQsIDEyOCwgNjUsIDQ4LCA1NCwgNTMsIDEyOCwgNjUsIDQ4LCA1NCwgNTIsIDEyOCwgNjUsIDQ4LCAKLSAgICA1NCwgNTEsIDEyOCwgNjUsIDQ4LCA1NCwgNTAsIDEyOCwgNjUsIDQ4LCA1NCwgNDksIDEyOCwgNjUsIDQ4LCA1NCwgNDgsIAotICAgIDEyOCwgNjUsIDQ4LCA1MywgNTcsIDEyOCwgNjUsIDQ4LCA1MywgNTYsIDEyOCwgNjUsIDQ4LCA1MywgNTUsIDEyOCwgNjUsIAotICAgIDQ4LCA1MywgNTQsIDEyOCwgNjUsIDQ4LCA1MywgNTMsIDEyOCwgNjUsIDQ4LCA1MywgNTIsIDEyOCwgNjUsIDQ4LCA1MywgCi0gICAgNTEsIDEyOCwgNjUsIDQ4LCA1MywgNTAsIDEyOCwgNjUsIDQ4LCA1MywgNDksIDEyOCwgNjUsIDQ4LCA1MywgNDgsIDEyOCwgCi0gICAgNjUsIDQ4LCA1MiwgNTcsIDEyOCwgNjUsIDQ4LCA1MiwgNTYsIDEyOCwgNjUsIDQ4LCA1MiwgNTUsIDEyOCwgNjUsIDQ4LCAKLSAgICA1MiwgNTQsIDY2LCAxMjgsIDY1LCA0OCwgNTIsIDU0LCA2NSwgMTI4LCA2NSwgNDgsIDUyLCA1NCwgMTI4LCA2NSwgNDgsIAotICAgIDUyLCA1MywgNjUsIDEyOCwgNjUsIDQ4LCA1MiwgNTMsIDEyOCwgNjUsIDQ4LCA1MiwgNTIsIDEyOCwgNjUsIDQ4LCA1MiwgCi0gICAgNTEsIDY1LCAxMjgsIDY1LCA0OCwgNTIsIDUxLCAxMjgsIDY1LCA0OCwgNTIsIDUwLCA2NSwgMTI4LCA2NSwgNDgsIDUyLCAKLSAgICA1MCwgMTI4LCA2NSwgNDgsIDUyLCA0OSwgNjUsIDEyOCwgNjUsIDQ4LCA1MiwgNDksIDEyOCwgNjUsIDQ4LCA1MiwgNDgsIAotICAgIDY1LCAxMjgsIDY1LCA0OCwgNTIsIDQ4LCAxMjgsIDY1LCA0OCwgNTEsIDU3LCA2NSwgMTI4LCA2NSwgNDgsIDUxLCA1NywgCi0gICAgMTI4LCA2NSwgNDgsIDUxLCA1NiwgMTI4LCA2NSwgNDgsIDUxLCA1NSwgMTI4LCA2NSwgNDgsIDUxLCA1NCwgMTI4LCA2NSwgCi0gICAgNDgsIDUxLCA1MywgMTI4LCA2NSwgNDgsIDUxLCA1MiwgMTI4LCA2NSwgNDgsIDUxLCA1MSwgMTI4LCA2NSwgNDgsIDUxLCAKLSAgICA1MCwgNjUsIDEyOCwgNjUsIDQ4LCA1MCwgNTYsIDY2LCAxMjgsIDY1LCA0OCwgNTAsIDU0LCA2NSwgMTI4LCA2NSwgNDgsIAotICAgIDQ5LCA1NSwgNjUsIDEyOCwgNjUsIDQ4LCA0OSwgNTIsIDY1LCAxMjgsIDY1LCA0OCwgNDksIDQ4LCA2NSwgMTI4LCA2NSwgCi0gICAgNDgsIDQ4LCA1NCwgNjYsIDEyOCwgNjUsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDY1LCA0OCwgNDgsIDUzLCA2NSwgMTI4LCAKLSAgICA2NSwgNDUsIDY5LCA4NSwgMTI4LCA0NSwgODUsIDIwNSwgNDUsIDgwLCA3MiwgODIsIDg1LCAxMjgsIDQ1LCA3NSwgNzIsIAotICAgIDg5LCA4NSwgMTk2LCA0NSwgNzUsIDcyLCA4OSwgNzMsIDc2LCAxMjgsIDQ1LCA2OCwgOTAsIDg1LCAxOTYsIDQ1LCA2NywgCi0gICAgNzIsIDY1LCAyMTAsIDQ1LCA2NywgNzIsIDY1LCA3NiwgMTI4LCAKKyAgICA3NiwgNzksIDEyOCwgNjUsIDc2LCA3NiwgNzMsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDY1LCA3NiwgNzYsIDIwMSwgNjUsIAorICAgIDc2LCA3NiwgNjUsIDIwMCwgNjUsIDc2LCA3NSwgNjUsIDc2LCA3MywgNDUsIDUwLCAxMjgsIDY1LCA3NiwgNzUsIDY1LCA3NiwgCisgICAgNzMsIDEyOCwgNjUsIDc2LCA3MywgNzEsIDc4LCA2OSwgMTk2LCA2NSwgNzYsIDczLCA3MCwgODUsIDEyOCwgNjUsIDc2LCAKKyAgICA3MywgNzAsIDEyOCwgNjUsIDc2LCA3MywgMTk4LCA2NSwgNzYsIDczLCA2OSwgNzgsIDEyOCwgNjUsIDc2LCA3MywgNjksIAorICAgIDIwNiwgNjUsIDc2LCA3MSwgNzMsIDIxOCwgNjUsIDc2LCA3MCwgNjUsIDEyOCwgNjUsIDc2LCA2OSwgODUsIDIxMiwgNjUsIAorICAgIDc2LCA2OSwgODIsIDg0LCAxMjgsIDY1LCA3NiwgNjksIDgwLCA3MiwgMTI4LCA2NSwgNzYsIDY5LCA3NywgNjYsIDczLCA2NywgCisgICAgMTI4LCA2NSwgNzYsIDY5LCA3MCwgMTI4LCA2NSwgNzYsIDY2LCA2NSwgNzgsIDczLCA2NSwgMjA2LCA2NSwgNzYsIDY1LCAKKyAgICA4OSwgNzIsIDY5LCAxMjgsIDY1LCA3NiwgNjUsIDg5LCA3MiwgMTk3LCA2NSwgNzYsIDY1LCA4MiwgMjA1LCA2NSwgNzYsIAorICAgIDY1LCA4MCwgNzIsIDEyOCwgNjUsIDc2LCA0NSwgNzYsIDY1LCA3NSwgODUsIDc4LCA2NSwgMTI4LCA2NSwgNzUsIDg0LCA3MywgCisgICAgNjksIDgzLCA2OSwgNzYsIDgzLCA3NSwgNjUsIDY2LCAxMjgsIDY1LCA3NSwgODMsIDY1LCAxMjgsIDY1LCA3NSwgNzIsIDc3LCAKKyAgICA3MywgNzcsIDczLCAxOTUsIDY1LCA3NSwgNjYsIDY1LCAyMTAsIDY1LCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA2NSwgNzUsIAorICAgIDY1LCA4MiwgMTkzLCA2NSwgNzMsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2NSwgNzMsIDg2LCA3MywgNzYsIDczLCAKKyAgICAyMDMsIDY1LCA3MywgODQsIDc5LCAyMDYsIDY1LCA3MywgODIsIDgwLCA3NiwgNjUsIDc4LCA2OSwgMTI4LCA2NSwgNzMsIAorICAgIDgyLCA4MCwgNzYsIDY1LCA3OCwgMTk3LCA2NSwgNzMsIDc4LCAyMTMsIDY1LCA3MywgNzgsIDc4LCAxMjgsIDY1LCA3MywgCisgICAgNzYsIDc3LCAxMjgsIDY1LCA3MywgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNjUsIDczLCA3MiwgODYsIDg1LCA4MywgMTI4LCAKKyAgICA2NSwgNzIsIDgzLCA2OCwgNjUsIDEyOCwgNjUsIDcyLCA4MywgNjUsIDEyOCwgNjUsIDcyLCA3OSwgMjA1LCA2NSwgNzIsIAorICAgIDY1LCA3OCwgMTk5LCA2NSwgNzIsIDY1LCA3MSwgNzEsIDY1LCAyMTAsIDY1LCA3MiwgNjUsIDY4LCAxMjgsIDY1LCA3MSwgCisgICAgODUsIDc4LCA3MSwgMTI4LCA2NSwgNzEsIDc5LCA3MSwgMjAxLCA2NSwgNzEsIDcxLCA4MiwgNjUsIDg2LCA2NSwgODQsIDczLCAKKyAgICA3OSwgNzgsIDEyOCwgNjUsIDcxLCA3MSwgODIsIDY1LCA4NiwgNjUsIDg0LCA2OSwgMTk2LCA2NSwgNzEsIDY1LCA3MywgNzgsIAorICAgIDgzLCAyMTIsIDY1LCA3MSwgNjUsIDczLCA3OCwgMTI4LCA2NSwgNzAsIDg0LCA2OSwgMjEwLCA2NSwgNzAsIDgzLCA2NSwgCisgICAgNjUsIDgxLCAxMjgsIDY1LCA3MCwgODIsIDczLCA2NywgNjUsIDIwNiwgNjUsIDcwLCA3OSwgODIsIDY5LCA3NywgNjksIDc4LCAKKyAgICA4NCwgNzMsIDc5LCA3OCwgNjksIDY4LCAxMjgsIDY1LCA3MCwgNzEsIDcyLCA2NSwgNzgsIDIwMSwgNjUsIDcwLCA3MCwgODIsIAorICAgIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDIwNiwgNjUsIDcwLCA3MCwgNzMsIDIxNiwgNjUsIDY5LCA4OSwgNjUsIDc4LCA3OCwgCisgICAgNjUsIDEyOCwgNjUsIDY5LCA4OSwgMTI4LCA2NSwgNjksIDgzLCA2NywgODUsIDc2LCA2NSwgODAsIDczLCA4NSwgODMsIAorICAgIDEyOCwgNjUsIDY5LCA4MywgNjcsIDEyOCwgNjUsIDY5LCA4MywgMTI4LCA2NSwgNjksIDgyLCA3MywgNjUsIDIwNCwgNjUsIAorICAgIDY5LCA4MiwgMTI4LCA2NSwgNjksIDc2LCA2NSwgNDUsIDgwLCA3MywgNzYsIDc2LCA2NSwgMTI4LCA2NSwgNjksIDc2LCAKKyAgICAxMjgsIDY1LCA2OSwgNzUsIDEyOCwgNjUsIDY5LCA3MSwgNjksIDY1LCAyMDYsIDY1LCA2OSwgNzEsIDEyOCwgNjUsIDY5LCAKKyAgICA2OSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCA2OSwgNjksIDEyOCwgNjUsIDY5LCA2OCwgNjUsIDQ1LCA4MCwgNzMsIAorICAgIDc2LCA3NiwgNjUsIDEyOCwgNjUsIDY5LCA2OCwgMTI4LCA2NSwgNjksIDY2LCAxMjgsIDY1LCA2OCwgODYsIDY1LCA3OCwgCisgICAgODQsIDY1LCA3MSwgNjksIDEyOCwgNjUsIDY4LCA4NiwgNjUsIDc4LCA2NywgNjksIDEyOCwgNjUsIDY4LCA3NywgNzMsIDgzLCAKKyAgICA4MywgNzMsIDc5LCAyMDYsIDY1LCA2OCwgNzYsIDY1LCAyMDUsIDY1LCA2OCwgNjksIDcxLCAxMjgsIDY1LCA2OCwgNjksIAorICAgIDE5OSwgNjUsIDY4LCA2OCwgODIsIDY5LCA4MywgODMsIDY5LCAxOTYsIDY1LCA2OCwgNjgsIDgyLCA2OSwgODMsIDIxMSwgCisgICAgNjUsIDY4LCA2OCwgNjUsIDc1LCAxMjgsIDY1LCA2OCwgNjUsIDIwMywgNjUsIDY3LCA4NSwgODQsIDY5LCA0NSwgNzcsIDY1LCAKKyAgICA2NywgODIsIDc5LCA3OCwgMTI4LCA2NSwgNjcsIDg1LCA4NCwgNjksIDQ1LCA3MSwgODIsIDY1LCA4NiwgNjksIDQ1LCA2NSwgCisgICAgNjcsIDg1LCA4NCwgNjksIDEyOCwgNjUsIDY3LCA4NSwgODQsIDE5NywgNjUsIDY3LCA4NCwgODUsIDY1LCA3NiwgNzYsIAorICAgIDIxNywgNjUsIDY3LCA4NCwgNzMsIDg2LCA2NSwgODQsIDE5NywgNjUsIDY3LCA4MiwgNzksIDgwLCA3MiwgNzksIDc4LCA3MywgCisgICAgMTk1LCA2NSwgNjcsIDc1LCA3OCwgNzksIDg3LCA3NiwgNjksIDY4LCA3MSwgNjksIDEyOCwgNjUsIDY3LCA2NywgODUsIDc3LCAKKyAgICA4NSwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgNjcsIDY3LCA3OSwgODUsIDc4LCAyMTIsIDY1LCA2NywgNjcsIAorICAgIDc5LCA3NywgNzcsIDc5LCA2OCwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCA2NywgNjcsIDY5LCA4MCwgODQsIDEyOCwgCisgICAgNjUsIDY3LCA2NywgNjksIDc4LCA4NCwgNDUsIDgzLCA4NCwgNjUsIDY3LCA2NywgNjUsIDg0LCA3OSwgMTI4LCA2NSwgNjcsIAorICAgIDY3LCA2OSwgNzgsIDg0LCAxMjgsIDY1LCA2NywgNjcsIDY5LCA3OCwgMjEyLCA2NSwgNjcsIDY1LCA2OCwgNjksIDc3LCAKKyAgICAyMTcsIDY1LCA2NiwgODksIDgzLCA3NywgNjUsIDIwNCwgNjUsIDY2LCA4NSwgNzgsIDY4LCA2NSwgNzgsIDY3LCA2OSwgCisgICAgMTI4LCA2NSwgNjYsIDc1LCA3MiwgNjUsIDgzLCA3MywgNjUsIDIwNiwgNjUsIDY2LCA2NiwgODIsIDY5LCA4NiwgNzMsIDY1LCAKKyAgICA4NCwgNzMsIDc5LCAyMDYsIDY1LCA2NiwgNjUsIDcwLCA3MywgNzYsIDczLCAxMjgsIDY1LCA2NiwgMTc4LCA2NSwgNjYsIAorICAgIDQ5LCA1NywgNDksIDEyOCwgNjUsIDY2LCA0OSwgNTYsIDU2LCAxMjgsIDY1LCA2NiwgNDksIDU2LCA0OCwgMTI4LCA2NSwgCisgICAgNjYsIDQ5LCA1NSwgNDksIDEyOCwgNjUsIDY2LCA0OSwgNTQsIDUyLCAxMjgsIDY1LCA2NiwgNDksIDUxLCA0OSwgNjYsIAorICAgIDEyOCwgNjUsIDY2LCA0OSwgNTEsIDQ5LCA2NSwgMTI4LCA2NSwgNjYsIDQ5LCA1MCwgNTEsIDEyOCwgNjUsIDY2LCA0OSwgCisgICAgNTAsIDUwLCAxMjgsIDY1LCA2NiwgNDksIDUwLCA0OCwgMTI4LCA2NSwgNjYsIDQ5LCA0OSwgNTYsIDEyOCwgNjUsIDY2LCAKKyAgICA0OCwgNTYsIDU1LCAxMjgsIDY1LCA2NiwgNDgsIDU2LCA1NCwgMTI4LCA2NSwgNjYsIDQ4LCA1NiwgNTMsIDEyOCwgNjUsIAorICAgIDY2LCA0OCwgNTYsIDUwLCAxMjgsIDY1LCA2NiwgNDgsIDU2LCA0OSwgMTI4LCA2NSwgNjYsIDQ4LCA1NiwgNDgsIDEyOCwgCisgICAgNjUsIDY2LCA0OCwgNTUsIDU3LCAxMjgsIDY1LCA2NiwgNDgsIDU1LCA1NiwgMTI4LCA2NSwgNjYsIDQ4LCA1NSwgNTUsIAorICAgIDEyOCwgNjUsIDY2LCA0OCwgNTUsIDU0LCAxMjgsIDY1LCA2NiwgNDgsIDU1LCA1MiwgMTI4LCA2NSwgNjYsIDQ4LCA1NSwgCisgICAgNTEsIDEyOCwgNjUsIDY2LCA0OCwgNTUsIDQ4LCAxMjgsIDY1LCA2NiwgNDgsIDU0LCA1NywgMTI4LCA2NSwgNjYsIDQ4LCAKKyAgICA1NCwgNTUsIDEyOCwgNjUsIDY2LCA0OCwgNTQsIDU0LCAxMjgsIDY1LCA2NiwgNDgsIDU0LCA1MywgMTI4LCA2NSwgNjYsIAorICAgIDQ4LCA1NCwgNDksIDEyOCwgNjUsIDY2LCA0OCwgNTQsIDQ4LCAxMjgsIDY1LCA2NiwgNDgsIDUzLCA1NywgMTI4LCA2NSwgCisgICAgNjYsIDQ4LCA1MywgNTYsIDEyOCwgNjUsIDY2LCA0OCwgNTMsIDU1LCAxMjgsIDY1LCA2NiwgNDgsIDUzLCA1NCwgMTI4LCAKKyAgICA2NSwgNjYsIDQ4LCA1MywgNTMsIDEyOCwgNjUsIDY2LCA0OCwgNTMsIDUyLCAxMjgsIDY1LCA2NiwgNDgsIDUzLCA1MSwgCisgICAgMTI4LCA2NSwgNjYsIDQ4LCA1MywgNDksIDEyOCwgNjUsIDY2LCA0OCwgNTMsIDQ4LCAxMjgsIDY1LCA2NiwgNDgsIDUyLCAKKyAgICA1NywgMTI4LCA2NSwgNjYsIDQ4LCA1MiwgNTYsIDEyOCwgNjUsIDY2LCA0OCwgNTIsIDU1LCAxMjgsIDY1LCA2NiwgNDgsIAorICAgIDUyLCA1NCwgMTI4LCA2NSwgNjYsIDQ4LCA1MiwgNTMsIDEyOCwgNjUsIDY2LCA0OCwgNTIsIDUyLCAxMjgsIDY1LCA2NiwgCisgICAgNDgsIDUyLCA0OSwgMTI4LCA2NSwgNjYsIDQ4LCA1MiwgNDgsIDEyOCwgNjUsIDY2LCA0OCwgNTEsIDU3LCAxMjgsIDY1LCAKKyAgICA2NiwgNDgsIDUxLCA1NiwgMTI4LCA2NSwgNjYsIDQ4LCA1MSwgNTUsIDEyOCwgNjUsIDY2LCA0OCwgNTEsIDUyLCAxMjgsIAorICAgIDY1LCA2NiwgNDgsIDUxLCA0OSwgMTI4LCA2NSwgNjYsIDQ4LCA1MSwgNDgsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDU3LCAKKyAgICAxMjgsIDY1LCA2NiwgNDgsIDUwLCA1NiwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNTUsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIAorICAgIDU0LCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA1MiwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNTEsIDc3LCAxMjgsIDY1LCA2NiwgCisgICAgNDgsIDUwLCA1MSwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNTAsIDc3LCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA1MCwgNzAsIAorICAgIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDUwLCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA0OSwgNzcsIDEyOCwgNjUsIDY2LCA0OCwgCisgICAgNTAsIDQ5LCA3MCwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNDksIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDQ4LCAxMjgsIDY1LCAKKyAgICA2NiwgNDgsIDQ5LCA1NSwgMTI4LCA2NSwgNjYsIDQ4LCA0OSwgNTQsIDEyOCwgNjUsIDY2LCA0OCwgNDksIDUxLCAxMjgsIAorICAgIDY1LCA2NiwgNDgsIDQ5LCA0OSwgMTI4LCA2NSwgNjYsIDQ4LCA0OSwgNDgsIDEyOCwgNjUsIDY2LCA0OCwgNDgsIDU3LCAKKyAgICAxMjgsIDY1LCA2NiwgNDgsIDQ4LCA1NiwgMTI4LCA2NSwgNjYsIDQ4LCA0OCwgNTUsIDEyOCwgNjUsIDY2LCA0OCwgNDgsIAorICAgIDU0LCAxMjgsIDY1LCA2NiwgNDgsIDQ4LCA1MywgMTI4LCA2NSwgNjYsIDQ4LCA0OCwgNTIsIDEyOCwgNjUsIDY2LCA0OCwgCisgICAgNDgsIDUxLCAxMjgsIDY1LCA2NiwgNDgsIDQ4LCA1MCwgMTI4LCA2NSwgNjYsIDQ4LCA0OCwgNDksIDEyOCwgNjUsIDY1LCAKKyAgICA4OSwgNzMsIDc4LCAxMjgsIDY1LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCA2NSwgODksIDEyOCwgNjUsIAorICAgIDY1LCA4NywgMTI4LCA2NSwgNjUsIDc5LCAxMjgsIDY1LCA2NSwgNzQsIDEyOCwgNjUsIDY1LCA2NiwgNjUsIDY1LCA3MCwgCisgICAgNzMsIDc2LCA3MywgMTI4LCA2NSwgNjUsIDQ4LCA1MSwgNTAsIDEyOCwgNjUsIDY1LCA0OCwgNTEsIDQ5LCAxMjgsIDY1LCAKKyAgICA2NSwgNDgsIDUxLCA0OCwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTcsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDU2LCAxMjgsIAorICAgIDY1LCA2NSwgNDgsIDUwLCA1NSwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTQsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDUzLCAKKyAgICAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1MiwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTEsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIAorICAgIDUwLCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA0OSwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNDgsIDEyOCwgNjUsIDY1LCA0OCwgCisgICAgNDksIDU3LCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1NiwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTUsIDEyOCwgNjUsIDY1LCAKKyAgICA0OCwgNDksIDU0LCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1MywgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTIsIDEyOCwgNjUsIAorICAgIDY1LCA0OCwgNDksIDUxLCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1MCwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNDksIDEyOCwgCisgICAgNjUsIDY1LCA0OCwgNDksIDQ4LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NywgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTYsIAorICAgIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU1LCA2NiwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTUsIDY1LCAxMjgsIDY1LCA2NSwgCisgICAgNDgsIDQ4LCA1NSwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTQsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDUzLCAxMjgsIDY1LCAKKyAgICA2NSwgNDgsIDQ4LCA1MiwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTEsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDUwLCAxMjgsIAorICAgIDY1LCA2NSwgNDgsIDQ4LCA0OSwgMTI4LCA2NSwgNTYsIDQ4LCA1NSwgMTI4LCA2NSwgNTYsIDQ4LCA1NCwgMTI4LCA2NSwgCisgICAgNTYsIDQ4LCA1MywgMTI4LCA2NSwgNTYsIDQ4LCA1MiwgMTI4LCA2NSwgNTYsIDQ4LCA1MSwgMTI4LCA2NSwgNTYsIDQ4LCAKKyAgICA1MCwgMTI4LCA2NSwgNTYsIDQ4LCA0OSwgMTI4LCA2NSwgNTYsIDQ4LCA0OCwgMTI4LCA2NSwgNTUsIDUxLCAxNzgsIDY1LCAKKyAgICA1NSwgNTAsIDE4MiwgNjUsIDU1LCA0OSwgMTgzLCA2NSwgNTUsIDQ5LCAxODEsIDY1LCA1NSwgNDksIDE4MCwgNjUsIDU1LCAKKyAgICA0OSwgMTc5LCA2NSwgNTUsIDQ5LCAxNzgsIDY1LCA1NSwgNDksIDE3NywgNjUsIDU1LCA0OSwgMTc2LCA2NSwgNTUsIDQ4LCAKKyAgICA1NywgNDUsIDE4MiwgNjUsIDU1LCA0OCwgNTcsIDQ1LCAxODAsIDY1LCA1NSwgNDgsIDU3LCA0NSwgMTc5LCA2NSwgNTUsIAorICAgIDQ4LCA1NywgNDUsIDE3OCwgNjUsIDU1LCA0OCwgMTg1LCA2NSwgNTUsIDQ4LCAxODQsIDY1LCA1NSwgNDgsIDE4MywgNjUsIAorICAgIDU1LCA0OCwgMTgyLCA2NSwgNTUsIDQ4LCAxODEsIDY1LCA1NSwgNDgsIDE4MCwgNjUsIDU1LCA0OCwgMTc5LCA2NSwgNTUsIAorICAgIDQ4LCAxNzgsIDY1LCA1NSwgNDgsIDE3NywgNjUsIDU0LCA1NCwgNTIsIDEyOCwgNjUsIDU0LCA1NCwgNTEsIDEyOCwgNjUsIAorICAgIDU0LCA1NCwgNTAsIDEyOCwgNjUsIDU0LCA1NCwgNDksIDEyOCwgNjUsIDU0LCA1NCwgNDgsIDEyOCwgNjUsIDU0LCA1MywgCisgICAgNTcsIDEyOCwgNjUsIDU0LCA1MywgNTYsIDEyOCwgNjUsIDU0LCA1MywgNTUsIDEyOCwgNjUsIDU0LCA1MywgNTQsIDEyOCwgCisgICAgNjUsIDU0LCA1MywgNTMsIDEyOCwgNjUsIDU0LCA1MywgNTIsIDEyOCwgNjUsIDU0LCA1MywgNTEsIDEyOCwgNjUsIDU0LCAKKyAgICA1MywgNTAsIDEyOCwgNjUsIDU0LCA1MywgNDksIDEyOCwgNjUsIDU0LCA1MiwgNTcsIDEyOCwgNjUsIDU0LCA1MiwgNTYsIAorICAgIDEyOCwgNjUsIDU0LCA1MiwgNTQsIDEyOCwgNjUsIDU0LCA1MiwgNTMsIDEyOCwgNjUsIDU0LCA1MiwgNTIsIDEyOCwgNjUsIAorICAgIDU0LCA1MiwgNTEsIDEyOCwgNjUsIDU0LCA1MiwgNTAsIDEyOCwgNjUsIDU0LCA1MiwgNDgsIDEyOCwgNjUsIDU0LCA1MSwgCisgICAgNTYsIDEyOCwgNjUsIDU0LCA1MSwgNTUsIDEyOCwgNjUsIDU0LCA1MSwgNTIsIDEyOCwgNjUsIDU0LCA1MCwgNTcsIDEyOCwgCisgICAgNjUsIDU0LCA1MCwgNTYsIDEyOCwgNjUsIDU0LCA1MCwgNTUsIDEyOCwgNjUsIDU0LCA1MCwgNTQsIDEyOCwgNjUsIDU0LCAKKyAgICA1MCwgNTIsIDEyOCwgNjUsIDU0LCA1MCwgNTEsIDEyOCwgNjUsIDU0LCA1MCwgNTAsIDEyOCwgNjUsIDU0LCA1MCwgNDksIAorICAgIDEyOCwgNjUsIDU0LCA1MCwgNDgsIDEyOCwgNjUsIDU0LCA0OSwgNTcsIDEyOCwgNjUsIDU0LCA0OSwgNTYsIDEyOCwgNjUsIAorICAgIDU0LCA0OSwgNTUsIDEyOCwgNjUsIDU0LCA0OSwgNTQsIDEyOCwgNjUsIDU0LCA0OSwgNTMsIDEyOCwgNjUsIDU0LCA0OSwgCisgICAgNTIsIDEyOCwgNjUsIDU0LCA0OSwgNTEsIDEyOCwgNjUsIDU0LCA0OSwgNTAsIDEyOCwgNjUsIDU0LCA0OSwgNDksIDEyOCwgCisgICAgNjUsIDU0LCA0OSwgNDgsIDEyOCwgNjUsIDU0LCA0OCwgNTcsIDEyOCwgNjUsIDU0LCA0OCwgNTYsIDEyOCwgNjUsIDU0LCAKKyAgICA0OCwgNTQsIDEyOCwgNjUsIDU0LCA0OCwgNTIsIDEyOCwgNjUsIDU0LCA0OCwgNTEsIDEyOCwgNjUsIDU0LCA0OCwgNTAsIAorICAgIDEyOCwgNjUsIDU0LCA0OCwgNDksIDEyOCwgNjUsIDU0LCA0OCwgNDgsIDEyOCwgNjUsIDUzLCA1NywgNTYsIDEyOCwgNjUsIAorICAgIDUzLCA1NywgNTQsIDEyOCwgNjUsIDUzLCA1NywgNTMsIDEyOCwgNjUsIDUzLCA1NywgNTIsIDEyOCwgNjUsIDUzLCA1NywgCisgICAgNTAsIDEyOCwgNjUsIDUzLCA1NywgNDksIDEyOCwgNjUsIDUzLCA1NiwgNTcsIDEyOCwgNjUsIDUzLCA1NiwgNTYsIDEyOCwgCisgICAgNjUsIDUzLCA1NiwgNTUsIDEyOCwgNjUsIDUzLCA1NiwgNTQsIDEyOCwgNjUsIDUzLCA1NiwgNTMsIDEyOCwgNjUsIDUzLCAKKyAgICA1NiwgNTIsIDEyOCwgNjUsIDUzLCA1NiwgNTEsIDEyOCwgNjUsIDUzLCA1NiwgNTAsIDEyOCwgNjUsIDUzLCA1NiwgNDksIAorICAgIDEyOCwgNjUsIDUzLCA1NiwgNDgsIDEyOCwgNjUsIDUzLCA1NSwgNTcsIDEyOCwgNjUsIDUzLCA1NSwgNTYsIDEyOCwgNjUsIAorICAgIDUzLCA1NSwgNTUsIDEyOCwgNjUsIDUzLCA1NSwgNTQsIDEyOCwgNjUsIDUzLCA1NSwgNTMsIDEyOCwgNjUsIDUzLCA1NSwgCisgICAgNTIsIDEyOCwgNjUsIDUzLCA1NSwgNTEsIDEyOCwgNjUsIDUzLCA1NSwgNTAsIDEyOCwgNjUsIDUzLCA1NSwgNDksIDEyOCwgCisgICAgNjUsIDUzLCA1NSwgNDgsIDEyOCwgNjUsIDUzLCA1NCwgNTcsIDEyOCwgNjUsIDUzLCA1NCwgNTYsIDEyOCwgNjUsIDUzLCAKKyAgICA1NCwgNTQsIDEyOCwgNjUsIDUzLCA1NCwgNTMsIDEyOCwgNjUsIDUzLCA1NCwgNTIsIDEyOCwgNjUsIDUzLCA1NCwgNTEsIAorICAgIDEyOCwgNjUsIDUzLCA1MywgNTcsIDEyOCwgNjUsIDUzLCA1MywgNTUsIDEyOCwgNjUsIDUzLCA1MywgNTQsIDEyOCwgNjUsIAorICAgIDUzLCA1MywgNTMsIDEyOCwgNjUsIDUzLCA1MywgNTIsIDEyOCwgNjUsIDUzLCA1MywgNTEsIDEyOCwgNjUsIDUzLCA1MywgCisgICAgNTAsIDEyOCwgNjUsIDUzLCA1MywgNDksIDEyOCwgNjUsIDUzLCA1MywgNDgsIDEyOCwgNjUsIDUzLCA1MiwgNTcsIDEyOCwgCisgICAgNjUsIDUzLCA1MiwgNTYsIDEyOCwgNjUsIDUzLCA1MiwgNTUsIDEyOCwgNjUsIDUzLCA1MiwgNTMsIDEyOCwgNjUsIDUzLCAKKyAgICA1MiwgNTAsIDEyOCwgNjUsIDUzLCA1MiwgNDksIDEyOCwgNjUsIDUzLCA1MiwgNDgsIDEyOCwgNjUsIDUzLCA1MSwgNTcsIAorICAgIDEyOCwgNjUsIDUzLCA1MSwgNTYsIDEyOCwgNjUsIDUzLCA1MSwgNTUsIDEyOCwgNjUsIDUzLCA1MSwgNTQsIDEyOCwgNjUsIAorICAgIDUzLCA1MSwgNTMsIDEyOCwgNjUsIDUzLCA1MSwgNTIsIDEyOCwgNjUsIDUzLCA1MSwgNTAsIDEyOCwgNjUsIDUzLCA1MSwgCisgICAgNDksIDEyOCwgNjUsIDUzLCA1MSwgNDgsIDEyOCwgNjUsIDUzLCA1MCwgNTcsIDEyOCwgNjUsIDUzLCA1MCwgNTYsIDEyOCwgCisgICAgNjUsIDUzLCA1MCwgNTUsIDEyOCwgNjUsIDUzLCA1MCwgNTQsIDEyOCwgNjUsIDUzLCA1MCwgNTMsIDEyOCwgNjUsIDUzLCAKKyAgICA1MCwgNTIsIDEyOCwgNjUsIDUzLCA1MCwgNTEsIDEyOCwgNjUsIDUzLCA1MCwgNTAsIDEyOCwgNjUsIDUzLCA1MCwgNDksIAorICAgIDEyOCwgNjUsIDUzLCA1MCwgNDgsIDEyOCwgNjUsIDUzLCA0OSwgNTcsIDEyOCwgNjUsIDUzLCA0OSwgNTYsIDEyOCwgNjUsIAorICAgIDUzLCA0OSwgNTUsIDEyOCwgNjUsIDUzLCA0OSwgNTQsIDEyOCwgNjUsIDUzLCA0OSwgNTMsIDEyOCwgNjUsIDUzLCA0OSwgCisgICAgNTIsIDEyOCwgNjUsIDUzLCA0OSwgNTEsIDEyOCwgNjUsIDUzLCA0OSwgNTAsIDEyOCwgNjUsIDUzLCA0OSwgNDksIDEyOCwgCisgICAgNjUsIDUzLCA0OSwgNDgsIDEyOCwgNjUsIDUzLCA0OCwgNTcsIDEyOCwgNjUsIDUzLCA0OCwgNTYsIDEyOCwgNjUsIDUzLCAKKyAgICA0OCwgNTUsIDEyOCwgNjUsIDUzLCA0OCwgNTQsIDEyOCwgNjUsIDUzLCA0OCwgNTMsIDEyOCwgNjUsIDUzLCA0OCwgNTIsIAorICAgIDEyOCwgNjUsIDUzLCA0OCwgNTEsIDEyOCwgNjUsIDUzLCA0OCwgNTAsIDEyOCwgNjUsIDUzLCA0OCwgNDksIDEyOCwgNjUsIAorICAgIDUyLCA1NywgNTUsIDEyOCwgNjUsIDUyLCA1NywgNTQsIDEyOCwgNjUsIDUyLCA1NywgNTMsIDEyOCwgNjUsIDUyLCA1NywgCisgICAgNTIsIDEyOCwgNjUsIDUyLCA1NywgNTEsIDEyOCwgNjUsIDUyLCA1NywgNTAsIDEyOCwgNjUsIDUyLCA1NywgNDksIDEyOCwgCisgICAgNjUsIDUyLCA1NywgNDgsIDEyOCwgNjUsIDUyLCA1NiwgNTcsIDEyOCwgNjUsIDUyLCA1NiwgNTYsIDEyOCwgNjUsIDUyLCAKKyAgICA1NiwgNTUsIDEyOCwgNjUsIDUyLCA1NiwgNTQsIDEyOCwgNjUsIDUyLCA1NiwgNTMsIDEyOCwgNjUsIDUyLCA1NiwgNTIsIAorICAgIDEyOCwgNjUsIDUyLCA1NiwgNTEsIDEyOCwgNjUsIDUyLCA1NiwgNTAsIDEyOCwgNjUsIDUyLCA1NiwgNDksIDEyOCwgNjUsIAorICAgIDUyLCA1NiwgNDgsIDEyOCwgNjUsIDUyLCA1NSwgNTcsIDEyOCwgNjUsIDUyLCA1NSwgNTYsIDEyOCwgNjUsIDUyLCA1NSwgCisgICAgNTUsIDEyOCwgNjUsIDUyLCA1NSwgNTQsIDEyOCwgNjUsIDUyLCA1NSwgNTMsIDEyOCwgNjUsIDUyLCA1NSwgNTIsIDEyOCwgCisgICAgNjUsIDUyLCA1NSwgNTEsIDEyOCwgNjUsIDUyLCA1NSwgNTAsIDEyOCwgNjUsIDUyLCA1NSwgNDksIDEyOCwgNjUsIDUyLCAKKyAgICA1NSwgNDgsIDEyOCwgNjUsIDUyLCA1NCwgNTcsIDEyOCwgNjUsIDUyLCA1NCwgNTYsIDEyOCwgNjUsIDUyLCA1NCwgNTUsIAorICAgIDEyOCwgNjUsIDUyLCA1NCwgNTQsIDEyOCwgNjUsIDUyLCA1NCwgNTMsIDEyOCwgNjUsIDUyLCA1NCwgNTIsIDEyOCwgNjUsIAorICAgIDUyLCA1NCwgNTEsIDEyOCwgNjUsIDUyLCA1NCwgNTAsIDEyOCwgNjUsIDUyLCA1NCwgNDksIDEyOCwgNjUsIDUyLCA1NCwgCisgICAgNDgsIDEyOCwgNjUsIDUyLCA1MywgNTcsIDEyOCwgNjUsIDUyLCA1MywgNTYsIDEyOCwgNjUsIDUyLCA1MywgNTUsIDY1LCAKKyAgICAxMjgsIDY1LCA1MiwgNTMsIDU1LCAxMjgsIDY1LCA1MiwgNTMsIDU0LCAxMjgsIDY1LCA1MiwgNTMsIDUzLCAxMjgsIDY1LCAKKyAgICA1MiwgNTMsIDUyLCAxMjgsIDY1LCA1MiwgNTMsIDUxLCAxMjgsIDY1LCA1MiwgNTMsIDUwLCAxMjgsIDY1LCA1MiwgNTMsIAorICAgIDQ5LCAxMjgsIDY1LCA1MiwgNTMsIDQ4LCA2NSwgMTI4LCA2NSwgNTIsIDUzLCA0OCwgMTI4LCA2NSwgNTIsIDUyLCA1NywgCisgICAgMTI4LCA2NSwgNTIsIDUyLCA1NiwgMTI4LCA2NSwgNTIsIDUyLCA1NSwgMTI4LCA2NSwgNTIsIDUyLCA1NCwgMTI4LCA2NSwgCisgICAgNTIsIDUyLCA1MywgMTI4LCA2NSwgNTIsIDUyLCA1MiwgMTI4LCA2NSwgNTIsIDUyLCA1MSwgMTI4LCA2NSwgNTIsIDUyLCAKKyAgICA1MCwgMTI4LCA2NSwgNTIsIDUyLCA0OSwgMTI4LCA2NSwgNTIsIDUyLCA0OCwgMTI4LCA2NSwgNTIsIDUxLCA1NywgMTI4LCAKKyAgICA2NSwgNTIsIDUxLCA1NiwgMTI4LCA2NSwgNTIsIDUxLCA1NSwgMTI4LCA2NSwgNTIsIDUxLCA1NCwgMTI4LCA2NSwgNTIsIAorICAgIDUxLCA1MywgMTI4LCA2NSwgNTIsIDUxLCA1MiwgMTI4LCA2NSwgNTIsIDUxLCA1MSwgMTI4LCA2NSwgNTIsIDUxLCA1MCwgCisgICAgMTI4LCA2NSwgNTIsIDUxLCA0OSwgMTI4LCA2NSwgNTIsIDUxLCA0OCwgMTI4LCA2NSwgNTIsIDUwLCA1NywgMTI4LCA2NSwgCisgICAgNTIsIDUwLCA1NiwgMTI4LCA2NSwgNTIsIDUwLCA1NSwgMTI4LCA2NSwgNTIsIDUwLCA1NCwgMTI4LCA2NSwgNTIsIDUwLCAKKyAgICA1MywgMTI4LCA2NSwgNTIsIDUwLCA1MiwgMTI4LCA2NSwgNTIsIDUwLCA1MSwgMTI4LCA2NSwgNTIsIDUwLCA1MCwgMTI4LCAKKyAgICA2NSwgNTIsIDUwLCA0OSwgMTI4LCA2NSwgNTIsIDUwLCA0OCwgMTI4LCA2NSwgNTIsIDQ5LCA1NywgMTI4LCA2NSwgNTIsIAorICAgIDQ5LCA1NiwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OSwgNTYsIDEyOCwgNjUsIDUyLCA0OSwgNTUsIDQ1LCA4NiwgCisgICAgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDksIDU1LCAxMjgsIDY1LCA1MiwgNDksIDU0LCA0NSwgODYsIDY1LCA4MywgMTI4LCAKKyAgICA2NSwgNTIsIDQ5LCA1NCwgMTI4LCA2NSwgNTIsIDQ5LCA1MywgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OSwgNTMsIAorICAgIDEyOCwgNjUsIDUyLCA0OSwgNTIsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDksIDUyLCAxMjgsIDY1LCA1MiwgCisgICAgNDksIDUxLCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ5LCA1MSwgMTI4LCA2NSwgNTIsIDQ5LCA1MCwgNDUsIDg2LCAKKyAgICA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OSwgNTAsIDEyOCwgNjUsIDUyLCA0OSwgNDksIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIAorICAgIDY1LCA1MiwgNDksIDQ5LCAxMjgsIDY1LCA1MiwgNDksIDQ4LCAxOTMsIDY1LCA1MiwgNDksIDQ4LCA0NSwgODYsIDY1LCA4MywgCisgICAgMTI4LCA2NSwgNTIsIDQ5LCAxNzYsIDY1LCA1MiwgNDgsIDU3LCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ4LCAKKyAgICA1NywgMTI4LCA2NSwgNTIsIDQ4LCA1NiwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OCwgNTYsIDEyOCwgNjUsIAorICAgIDUyLCA0OCwgNTUsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDgsIDU1LCAxMjgsIDY1LCA1MiwgNDgsIDU0LCA0NSwgCisgICAgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ4LCA1NCwgMTI4LCA2NSwgNTIsIDQ4LCA1MywgNDUsIDg2LCA2NSwgODMsIAorICAgIDEyOCwgNjUsIDUyLCA0OCwgNTMsIDEyOCwgNjUsIDUyLCA0OCwgNTIsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgCisgICAgNDgsIDUyLCAxMjgsIDY1LCA1MiwgNDgsIDUxLCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ4LCA1MSwgMTI4LCAKKyAgICA2NSwgNTIsIDQ4LCA1MCwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OCwgNTAsIDEyOCwgNjUsIDUyLCA0OCwgNDksIAorICAgIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDgsIDQ5LCAxMjgsIDY1LCA1MiwgNDgsIDQ4LCA0NSwgODYsIDY1LCA4MywgCisgICAgMTI4LCA2NSwgNTIsIDQ4LCA0OCwgMTI4LCA2NSwgNTEsIDU3LCA1NywgMTI4LCA2NSwgNTEsIDU3LCA1NiwgMTI4LCA2NSwgCisgICAgNTEsIDU3LCA1NSwgMTI4LCA2NSwgNTEsIDU3LCA1NCwgMTI4LCA2NSwgNTEsIDU3LCA1MywgMTI4LCA2NSwgNTEsIDU3LCAKKyAgICA1MiwgMTI4LCA2NSwgNTEsIDU3LCAxNzksIDY1LCA1MSwgNTcsIDUwLCAxMjgsIDY1LCA1MSwgNTcsIDQ5LCAxMjgsIDY1LCAKKyAgICA1MSwgNTcsIDQ4LCAxMjgsIDY1LCA1MSwgNTYsIDU3LCAxMjgsIDY1LCA1MSwgNTYsIDU2LCAxMjgsIDY1LCA1MSwgNTYsIAorICAgIDU1LCAxMjgsIDY1LCA1MSwgNTYsIDU0LCA2NSwgMTI4LCA2NSwgNTEsIDU2LCA1NCwgMTI4LCA2NSwgNTEsIDU2LCA1MywgCisgICAgMTI4LCA2NSwgNTEsIDU2LCA1MiwgMTI4LCA2NSwgNTEsIDU2LCA1MSwgNjUsIDEyOCwgNjUsIDUxLCA1NiwgMTc5LCA2NSwgCisgICAgNTEsIDU2LCA1MCwgMTI4LCA2NSwgNTEsIDU2LCA0OSwgNjUsIDEyOCwgNjUsIDUxLCA1NiwgNDksIDEyOCwgNjUsIDUxLCAKKyAgICA1NiwgNDgsIDEyOCwgNjUsIDUxLCA1NSwgNTcsIDEyOCwgNjUsIDUxLCA1NSwgNTYsIDEyOCwgNjUsIDUxLCA1NSwgNTUsIAorICAgIDEyOCwgNjUsIDUxLCA1NSwgNTQsIDEyOCwgNjUsIDUxLCA1NSwgNTMsIDEyOCwgNjUsIDUxLCA1NSwgNTIsIDEyOCwgNjUsIAorICAgIDUxLCA1NSwgNTEsIDEyOCwgNjUsIDUxLCA1NSwgNTAsIDEyOCwgNjUsIDUxLCA1NSwgNDksIDY1LCAxMjgsIDY1LCA1MSwgCisgICAgNTUsIDQ5LCAxMjgsIDY1LCA1MSwgNTUsIDQ4LCAxMjgsIDY1LCA1MSwgNTQsIDU3LCAxMjgsIDY1LCA1MSwgNTQsIDU2LCAKKyAgICA2NSwgMTI4LCA2NSwgNTEsIDU0LCA1NiwgMTI4LCA2NSwgNTEsIDU0LCA1NSwgMTI4LCA2NSwgNTEsIDU0LCA1NCwgMTI4LCAKKyAgICA2NSwgNTEsIDU0LCA1MywgMTI4LCA2NSwgNTEsIDU0LCA1MiwgNjUsIDEyOCwgNjUsIDUxLCA1NCwgNTIsIDEyOCwgNjUsIAorICAgIDUxLCA1NCwgNTEsIDEyOCwgNjUsIDUxLCA1NCwgNTAsIDEyOCwgNjUsIDUxLCA1NCwgNDksIDEyOCwgNjUsIDUxLCA1NCwgCisgICAgNDgsIDEyOCwgNjUsIDUxLCA1MywgNTcsIDY1LCAxMjgsIDY1LCA1MSwgNTMsIDU3LCAxMjgsIDY1LCA1MSwgNTMsIDU2LCAKKyAgICAxMjgsIDY1LCA1MSwgNTMsIDU1LCAxMjgsIDY1LCA1MSwgNTMsIDU0LCAxMjgsIDY1LCA1MSwgNTMsIDUzLCAxMjgsIDY1LCAKKyAgICA1MSwgNTMsIDUyLCAxMjgsIDY1LCA1MSwgNTMsIDUxLCAxMjgsIDY1LCA1MSwgNTMsIDUwLCAxMjgsIDY1LCA1MSwgNTMsIAorICAgIDQ5LCAxMjgsIDY1LCA1MSwgNTMsIDQ4LCAxMjgsIDY1LCA1MSwgNTIsIDU3LCAxMjgsIDY1LCA1MSwgNTIsIDU2LCAxMjgsIAorICAgIDY1LCA1MSwgNTIsIDU1LCAxMjgsIDY1LCA1MSwgNTIsIDU0LCAxMjgsIDY1LCA1MSwgNTIsIDUzLCAxMjgsIDY1LCA1MSwgCisgICAgNTIsIDUyLCAxMjgsIDY1LCA1MSwgNTIsIDUxLCAxMjgsIDY1LCA1MSwgNTIsIDUwLCAxMjgsIDY1LCA1MSwgNTIsIDQ5LCAKKyAgICAxMjgsIDY1LCA1MSwgNTIsIDQ4LCAxMjgsIDY1LCA1MSwgNTEsIDU3LCAxMjgsIDY1LCA1MSwgNTEsIDU2LCAxMjgsIDY1LCAKKyAgICA1MSwgNTEsIDU1LCAxMjgsIDY1LCA1MSwgNTEsIDU0LCA2NywgMTI4LCA2NSwgNTEsIDUxLCA1NCwgNjYsIDEyOCwgNjUsIAorICAgIDUxLCA1MSwgNTQsIDY1LCAxMjgsIDY1LCA1MSwgNTEsIDU0LCAxMjgsIDY1LCA1MSwgNTEsIDUzLCAxMjgsIDY1LCA1MSwgCisgICAgNTEsIDUyLCAxMjgsIDY1LCA1MSwgNTEsIDUxLCAxMjgsIDY1LCA1MSwgNTEsIDUwLCA2NywgMTI4LCA2NSwgNTEsIDUxLCAKKyAgICA1MCwgNjYsIDEyOCwgNjUsIDUxLCA1MSwgNTAsIDY1LCAxMjgsIDY1LCA1MSwgNTEsIDUwLCAxMjgsIDY1LCA1MSwgNTEsIAorICAgIDQ5LCAxMjgsIDY1LCA1MSwgNTEsIDQ4LCAxMjgsIDY1LCA1MSwgNTAsIDU3LCA2NSwgMTI4LCA2NSwgNTEsIDUwLCA1NywgCisgICAgMTI4LCA2NSwgNTEsIDUwLCA1NiwgMTI4LCA2NSwgNTEsIDUwLCA1NSwgMTI4LCA2NSwgNTEsIDUwLCA1NCwgMTI4LCA2NSwgCisgICAgNTEsIDUwLCA1MywgMTI4LCA2NSwgNTEsIDUwLCA1MiwgMTI4LCA2NSwgNTEsIDUwLCA1MSwgMTI4LCA2NSwgNTEsIDUwLCAKKyAgICA1MCwgMTI4LCA2NSwgNTEsIDUwLCA0OSwgMTI4LCA2NSwgNTEsIDUwLCA0OCwgMTI4LCA2NSwgNTEsIDQ5LCA1NywgMTI4LCAKKyAgICA2NSwgNTEsIDQ5LCA1NiwgMTI4LCA2NSwgNTEsIDQ5LCA1NSwgMTI4LCA2NSwgNTEsIDQ5LCA1NCwgMTI4LCA2NSwgNTEsIAorICAgIDQ5LCA1MywgMTI4LCA2NSwgNTEsIDQ5LCA1MiwgMTI4LCA2NSwgNTEsIDQ5LCA1MSwgNjcsIDEyOCwgNjUsIDUxLCA0OSwgCisgICAgNTEsIDY2LCAxMjgsIDY1LCA1MSwgNDksIDUxLCA2NSwgMTI4LCA2NSwgNTEsIDQ5LCA1MSwgMTI4LCA2NSwgNTEsIDQ5LCAKKyAgICA1MCwgMTI4LCA2NSwgNTEsIDQ5LCA0OSwgMTI4LCA2NSwgNTEsIDQ5LCA0OCwgMTI4LCA2NSwgNTEsIDQ4LCA1NywgNjcsIAorICAgIDEyOCwgNjUsIDUxLCA0OCwgNTcsIDY2LCAxMjgsIDY1LCA1MSwgNDgsIDU3LCA2NSwgMTI4LCA2NSwgNTEsIDQ4LCA1NywgCisgICAgMTI4LCA2NSwgNTEsIDQ4LCA1NiwgMTI4LCA2NSwgNTEsIDQ4LCA1NSwgMTI4LCA2NSwgNTEsIDQ4LCA1NCwgMTI4LCA2NSwgCisgICAgNTEsIDQ4LCA1MywgMTI4LCA2NSwgNTEsIDQ4LCA1MiwgMTI4LCA2NSwgNTEsIDQ4LCA1MSwgMTI4LCA2NSwgNTEsIDQ4LCAKKyAgICA1MCwgMTI4LCA2NSwgNTEsIDQ4LCA0OSwgMTI4LCA2NSwgNTEsIDQ4LCA0OCwgMTI4LCA2NSwgNTAsIDU3LCA1NywgNjUsIAorICAgIDEyOCwgNjUsIDUwLCA1NywgNTcsIDEyOCwgNjUsIDUwLCA1NywgNTYsIDEyOCwgNjUsIDUwLCA1NywgNTUsIDEyOCwgNjUsIAorICAgIDUwLCA1NywgNTQsIDEyOCwgNjUsIDUwLCA1NywgNTMsIDEyOCwgNjUsIDUwLCA1NywgNTIsIDY1LCAxMjgsIDY1LCA1MCwgCisgICAgNTcsIDUyLCAxMjgsIDY1LCA1MCwgNTcsIDUxLCAxMjgsIDY1LCA1MCwgNTcsIDUwLCAxMjgsIDY1LCA1MCwgNTcsIDQ5LCAKKyAgICAxMjgsIDY1LCA1MCwgNTcsIDQ4LCAxMjgsIDY1LCA1MCwgNTYsIDU3LCA2NSwgMTI4LCA2NSwgNTAsIDU2LCA1NywgMTI4LCAKKyAgICA2NSwgNTAsIDU2LCA1NiwgMTI4LCA2NSwgNTAsIDU2LCA1NSwgMTI4LCA2NSwgNTAsIDU2LCA1NCwgMTI4LCA2NSwgNTAsIAorICAgIDU2LCA1MywgMTI4LCA2NSwgNTAsIDU2LCA1MiwgMTI4LCA2NSwgNTAsIDU2LCA1MSwgMTI4LCA2NSwgNTAsIDU2LCA1MCwgCisgICAgMTI4LCA2NSwgNTAsIDU2LCA0OSwgMTI4LCA2NSwgNTAsIDU2LCA0OCwgMTI4LCA2NSwgNTAsIDU1LCA1NywgMTI4LCA2NSwgCisgICAgNTAsIDU1LCA1NiwgMTI4LCA2NSwgNTAsIDU1LCA1NSwgMTI4LCA2NSwgNTAsIDU1LCA1NCwgMTI4LCA2NSwgNTAsIDU1LCAKKyAgICA1MywgMTI4LCA2NSwgNTAsIDU1LCA1MiwgMTI4LCA2NSwgNTAsIDU1LCA1MSwgMTI4LCA2NSwgNTAsIDU1LCA1MCwgMTI4LCAKKyAgICA2NSwgNTAsIDU1LCA0OSwgMTI4LCA2NSwgNTAsIDU1LCA0OCwgMTI4LCA2NSwgNTAsIDU0LCA1NywgMTI4LCA2NSwgNTAsIAorICAgIDU0LCA1NiwgMTI4LCA2NSwgNTAsIDU0LCA1NSwgNjUsIDEyOCwgNjUsIDUwLCA1NCwgNTUsIDEyOCwgNjUsIDUwLCA1NCwgCisgICAgNTQsIDEyOCwgNjUsIDUwLCA1NCwgNTMsIDEyOCwgNjUsIDUwLCA1NCwgNTIsIDEyOCwgNjUsIDUwLCA1NCwgNTEsIDEyOCwgCisgICAgNjUsIDUwLCA1NCwgNTAsIDEyOCwgNjUsIDUwLCA1NCwgNDksIDEyOCwgNjUsIDUwLCA1NCwgNDgsIDEyOCwgNjUsIDUwLCAKKyAgICA1MywgNTcsIDEyOCwgNjUsIDUwLCA1MywgNTYsIDEyOCwgNjUsIDUwLCA1MywgNTUsIDEyOCwgNjUsIDUwLCA1MywgNTQsIAorICAgIDEyOCwgNjUsIDUwLCA1MywgNTMsIDEyOCwgNjUsIDUwLCA1MywgNTIsIDEyOCwgNjUsIDUwLCA1MywgNTEsIDEyOCwgNjUsIAorICAgIDUwLCA1MywgNTAsIDEyOCwgNjUsIDUwLCA1MywgNDksIDEyOCwgNjUsIDUwLCA1MywgNDgsIDEyOCwgNjUsIDUwLCA1MiwgCisgICAgNTcsIDEyOCwgNjUsIDUwLCA1MiwgNTYsIDEyOCwgNjUsIDUwLCA1MiwgNTUsIDEyOCwgNjUsIDUwLCA1MiwgNTQsIDEyOCwgCisgICAgNjUsIDUwLCA1MiwgNTMsIDEyOCwgNjUsIDUwLCA1MiwgNTIsIDEyOCwgNjUsIDUwLCA1MiwgNTEsIDEyOCwgNjUsIDUwLCAKKyAgICA1MiwgNTAsIDEyOCwgNjUsIDUwLCA1MiwgNDksIDEyOCwgNjUsIDUwLCA1MiwgNDgsIDEyOCwgNjUsIDUwLCA1MSwgNTcsIAorICAgIDEyOCwgNjUsIDUwLCA1MSwgNTYsIDEyOCwgNjUsIDUwLCA1MSwgNTUsIDEyOCwgNjUsIDUwLCA1MSwgNTQsIDEyOCwgNjUsIAorICAgIDUwLCA1MSwgNTMsIDEyOCwgNjUsIDUwLCA1MSwgNTIsIDEyOCwgNjUsIDUwLCA1MSwgNTEsIDEyOCwgNjUsIDUwLCA1MSwgCisgICAgNTAsIDEyOCwgNjUsIDUwLCA1MSwgNDksIDEyOCwgNjUsIDUwLCA1MSwgNDgsIDEyOCwgNjUsIDUwLCA1MCwgNTcsIDEyOCwgCisgICAgNjUsIDUwLCA1MCwgNTYsIDEyOCwgNjUsIDUwLCA1MCwgNTUsIDY1LCAxMjgsIDY1LCA1MCwgNTAsIDU1LCAxMjgsIDY1LCAKKyAgICA1MCwgNTAsIDU0LCAxMjgsIDY1LCA1MCwgNTAsIDUzLCAxMjgsIDY1LCA1MCwgNTAsIDUyLCAxMjgsIDY1LCA1MCwgNTAsIAorICAgIDUxLCAxMjgsIDY1LCA1MCwgNTAsIDUwLCAxMjgsIDY1LCA1MCwgNTAsIDQ5LCAxMjgsIDY1LCA1MCwgNTAsIDQ4LCAxMjgsIAorICAgIDY1LCA1MCwgNDksIDU3LCAxMjgsIDY1LCA1MCwgNDksIDU2LCAxMjgsIDY1LCA1MCwgNDksIDU1LCAxMjgsIDY1LCA1MCwgCisgICAgNDksIDU0LCA2NSwgMTI4LCA2NSwgNTAsIDQ5LCA1NCwgMTI4LCA2NSwgNTAsIDQ5LCA1MywgNjUsIDEyOCwgNjUsIDUwLCAKKyAgICA0OSwgNTMsIDEyOCwgNjUsIDUwLCA0OSwgNTIsIDEyOCwgNjUsIDUwLCA0OSwgNTEsIDEyOCwgNjUsIDUwLCA0OSwgNTAsIAorICAgIDEyOCwgNjUsIDUwLCA0OSwgNDksIDEyOCwgNjUsIDUwLCA0OSwgNDgsIDEyOCwgNjUsIDUwLCA0OCwgNTcsIDY1LCAxMjgsIAorICAgIDY1LCA1MCwgNDgsIDU3LCAxMjgsIDY1LCA1MCwgNDgsIDU2LCAxMjgsIDY1LCA1MCwgNDgsIDU1LCA2NSwgMTI4LCA2NSwgCisgICAgNTAsIDQ4LCA1NSwgMTI4LCA2NSwgNTAsIDQ4LCA1NCwgMTI4LCA2NSwgNTAsIDQ4LCA1MywgMTI4LCA2NSwgNTAsIDQ4LCAKKyAgICA1MiwgMTI4LCA2NSwgNTAsIDQ4LCA1MSwgMTI4LCA2NSwgNTAsIDQ4LCA1MCwgNjYsIDEyOCwgNjUsIDUwLCA0OCwgNTAsIAorICAgIDY1LCAxMjgsIDY1LCA1MCwgNDgsIDUwLCAxMjgsIDY1LCA1MCwgNDgsIDQ5LCAxMjgsIDY1LCA1MCwgNDgsIDQ4LCAxMjgsIAorICAgIDY1LCA0OSwgNTcsIDU3LCAxMjgsIDY1LCA0OSwgNTcsIDU2LCAxMjgsIDY1LCA0OSwgNTcsIDU1LCAxMjgsIDY1LCA0OSwgCisgICAgNTcsIDU0LCAxMjgsIDY1LCA0OSwgNTcsIDUzLCAxMjgsIDY1LCA0OSwgNTcsIDUyLCAxMjgsIDY1LCA0OSwgNTcsIDUxLCAKKyAgICAxMjgsIDY1LCA0OSwgNTcsIDUwLCAxMjgsIDY1LCA0OSwgNTcsIDQ5LCAxMjgsIDY1LCA0OSwgNTcsIDQ4LCAxMjgsIDY1LCAKKyAgICA0OSwgNTYsIDU3LCAxMjgsIDY1LCA0OSwgNTYsIDU2LCAxMjgsIDY1LCA0OSwgNTYsIDU1LCAxMjgsIDY1LCA0OSwgNTYsIAorICAgIDU0LCAxMjgsIDY1LCA0OSwgNTYsIDUzLCAxMjgsIDY1LCA0OSwgNTYsIDUyLCAxMjgsIDY1LCA0OSwgNTYsIDUxLCAxMjgsIAorICAgIDY1LCA0OSwgNTYsIDUwLCAxMjgsIDY1LCA0OSwgNTYsIDQ5LCAxMjgsIDY1LCA0OSwgNTYsIDQ4LCAxMjgsIDY1LCA0OSwgCisgICAgNTUsIDU3LCAxMjgsIDY1LCA0OSwgNTUsIDU2LCAxMjgsIDY1LCA0OSwgNTUsIDU1LCAxMjgsIDY1LCA0OSwgNTUsIDU0LCAKKyAgICAxMjgsIDY1LCA0OSwgNTUsIDUzLCAxMjgsIDY1LCA0OSwgNTUsIDUyLCAxMjgsIDY1LCA0OSwgNTUsIDUxLCAxMjgsIDY1LCAKKyAgICA0OSwgNTUsIDUwLCAxMjgsIDY1LCA0OSwgNTUsIDQ5LCAxMjgsIDY1LCA0OSwgNTUsIDQ4LCAxMjgsIDY1LCA0OSwgNTQsIAorICAgIDU3LCAxMjgsIDY1LCA0OSwgNTQsIDU2LCAxMjgsIDY1LCA0OSwgNTQsIDU1LCAxMjgsIDY1LCA0OSwgNTQsIDU0LCAxMjgsIAorICAgIDY1LCA0OSwgNTQsIDUzLCAxMjgsIDY1LCA0OSwgNTQsIDUyLCAxMjgsIDY1LCA0OSwgNTQsIDUxLCAxMjgsIDY1LCA0OSwgCisgICAgNTQsIDUwLCAxMjgsIDY1LCA0OSwgNTQsIDQ5LCAxMjgsIDY1LCA0OSwgNTQsIDQ4LCAxMjgsIDY1LCA0OSwgNTMsIDU3LCAKKyAgICAxMjgsIDY1LCA0OSwgNTMsIDU2LCAxMjgsIDY1LCA0OSwgNTMsIDU1LCAxMjgsIDY1LCA0OSwgNTMsIDU0LCAxMjgsIDY1LCAKKyAgICA0OSwgNTMsIDUzLCAxMjgsIDY1LCA0OSwgNTMsIDUyLCAxMjgsIDY1LCA0OSwgNTMsIDUxLCAxMjgsIDY1LCA0OSwgNTMsIAorICAgIDUwLCAxMjgsIDY1LCA0OSwgNTMsIDQ5LCAxMjgsIDY1LCA0OSwgNTMsIDQ4LCAxMjgsIDY1LCA0OSwgNTIsIDU3LCAxMjgsIAorICAgIDY1LCA0OSwgNTIsIDU2LCAxMjgsIDY1LCA0OSwgNTIsIDU1LCAxMjgsIDY1LCA0OSwgNTIsIDU0LCAxMjgsIDY1LCA0OSwgCisgICAgNTIsIDUzLCAxMjgsIDY1LCA0OSwgNTIsIDUyLCAxMjgsIDY1LCA0OSwgNTIsIDUxLCAxMjgsIDY1LCA0OSwgNTIsIDUwLCAKKyAgICAxMjgsIDY1LCA0OSwgNTIsIDQ5LCAxMjgsIDY1LCA0OSwgNTIsIDQ4LCAxMjgsIDY1LCA0OSwgNTEsIDU3LCAxMjgsIDY1LCAKKyAgICA0OSwgNTEsIDU2LCAxMjgsIDY1LCA0OSwgNTEsIDU1LCAxMjgsIDY1LCA0OSwgNTEsIDU0LCAxMjgsIDY1LCA0OSwgNTEsIAorICAgIDUzLCA2NSwgMTI4LCA2NSwgNDksIDUxLCA1MywgMTI4LCA2NSwgNDksIDUxLCA1MiwgMTI4LCA2NSwgNDksIDUxLCA1MSwgCisgICAgMTI4LCA2NSwgNDksIDUxLCA1MCwgMTI4LCA2NSwgNDksIDUxLCA0OSwgNjcsIDEyOCwgNjUsIDQ5LCA1MSwgNDksIDEyOCwgCisgICAgNjUsIDQ5LCA1MSwgNDgsIDEyOCwgNjUsIDQ5LCA1MCwgNTcsIDEyOCwgNjUsIDQ5LCA1MCwgNTYsIDEyOCwgNjUsIDQ5LCAKKyAgICA1MCwgNTUsIDEyOCwgNjUsIDQ5LCA1MCwgNTQsIDEyOCwgNjUsIDQ5LCA1MCwgNTMsIDY1LCAxMjgsIDY1LCA0OSwgNTAsIAorICAgIDUzLCAxMjgsIDY1LCA0OSwgNTAsIDUyLCAxMjgsIDY1LCA0OSwgNTAsIDUxLCAxMjgsIDY1LCA0OSwgNTAsIDUwLCAxMjgsIAorICAgIDY1LCA0OSwgNTAsIDQ5LCAxMjgsIDY1LCA0OSwgNTAsIDQ4LCA2NiwgMTI4LCA2NSwgNDksIDUwLCA0OCwgMTI4LCA2NSwgCisgICAgNDksIDQ5LCA1NywgMTI4LCA2NSwgNDksIDQ5LCA1NiwgMTI4LCA2NSwgNDksIDQ5LCA1NSwgMTI4LCA2NSwgNDksIDQ5LCAKKyAgICA1NCwgMTI4LCA2NSwgNDksIDQ5LCA1MywgNjUsIDEyOCwgNjUsIDQ5LCA0OSwgNTMsIDEyOCwgNjUsIDQ5LCA0OSwgNTIsIAorICAgIDEyOCwgNjUsIDQ5LCA0OSwgNTEsIDEyOCwgNjUsIDQ5LCA0OSwgNTAsIDEyOCwgNjUsIDQ5LCA0OSwgNDksIDEyOCwgNjUsIAorICAgIDQ5LCA0OSwgNDgsIDY2LCAxMjgsIDY1LCA0OSwgNDksIDQ4LCA2NSwgMTI4LCA2NSwgNDksIDQ5LCA0OCwgMTI4LCA2NSwgCisgICAgNDksIDQ4LCA1NywgMTI4LCA2NSwgNDksIDQ4LCA1NiwgMTI4LCA2NSwgNDksIDQ4LCA1NSwgNjcsIDEyOCwgNjUsIDQ5LCAKKyAgICA0OCwgNTUsIDY2LCAxMjgsIDY1LCA0OSwgNDgsIDU1LCA2NSwgMTI4LCA2NSwgNDksIDQ4LCA1NSwgMTI4LCA2NSwgNDksIAorICAgIDQ4LCA1NCwgMTI4LCA2NSwgNDksIDQ4LCA1MywgNjYsIDEyOCwgNjUsIDQ5LCA0OCwgNTMsIDY1LCAxMjgsIDY1LCA0OSwgCisgICAgNDgsIDUzLCAxMjgsIDY1LCA0OSwgNDgsIDUyLCA2NywgMTI4LCA2NSwgNDksIDQ4LCA1MiwgNjYsIDEyOCwgNjUsIDQ5LCAKKyAgICA0OCwgNTIsIDY1LCAxMjgsIDY1LCA0OSwgNDgsIDUyLCAxMjgsIDY1LCA0OSwgNDgsIDUxLCAxMjgsIDY1LCA0OSwgNDgsIAorICAgIDUwLCA2NSwgMTI4LCA2NSwgNDksIDQ4LCA1MCwgMTI4LCA2NSwgNDksIDQ4LCA0OSwgNjUsIDEyOCwgNjUsIDQ5LCA0OCwgCisgICAgNDksIDEyOCwgNjUsIDQ5LCA0OCwgNDgsIDY1LCAxMjgsIDY1LCA0OSwgNDgsIDQ4LCA0NSwgNDksIDQ4LCA1MCwgMTI4LCAKKyAgICA2NSwgNDksIDQ4LCA0OCwgMTI4LCA2NSwgNDgsIDU3LCA1NywgMTI4LCA2NSwgNDgsIDU3LCA1NiwgNjUsIDEyOCwgNjUsIAorICAgIDQ4LCA1NywgNTYsIDEyOCwgNjUsIDQ4LCA1NywgNTUsIDY1LCAxMjgsIDY1LCA0OCwgNTcsIDU1LCAxMjgsIDY1LCA0OCwgCisgICAgNTcsIDU0LCAxMjgsIDY1LCA0OCwgNTcsIDUzLCAxMjgsIDY1LCA0OCwgNTcsIDUyLCAxMjgsIDY1LCA0OCwgNTcsIDUxLCAKKyAgICAxMjgsIDY1LCA0OCwgNTcsIDUwLCAxMjgsIDY1LCA0OCwgNTcsIDQ5LCAxMjgsIDY1LCA0OCwgNTcsIDQ4LCAxMjgsIDY1LCAKKyAgICA0OCwgNTYsIDU3LCAxMjgsIDY1LCA0OCwgNTYsIDU2LCAxMjgsIDY1LCA0OCwgNTYsIDU1LCAxMjgsIDY1LCA0OCwgNTYsIAorICAgIDU0LCAxMjgsIDY1LCA0OCwgNTYsIDUzLCAxMjgsIDY1LCA0OCwgNTYsIDUyLCAxMjgsIDY1LCA0OCwgNTYsIDUxLCAxMjgsIAorICAgIDY1LCA0OCwgNTYsIDUwLCAxMjgsIDY1LCA0OCwgNTYsIDQ5LCAxMjgsIDY1LCA0OCwgNTYsIDQ4LCAxMjgsIDY1LCA0OCwgCisgICAgNTUsIDU3LCAxMjgsIDY1LCA0OCwgNTUsIDU2LCAxMjgsIDY1LCA0OCwgNTUsIDU1LCAxMjgsIDY1LCA0OCwgNTUsIDU0LCAKKyAgICAxMjgsIDY1LCA0OCwgNTUsIDUzLCAxMjgsIDY1LCA0OCwgNTUsIDUyLCAxMjgsIDY1LCA0OCwgNTUsIDUxLCAxMjgsIDY1LCAKKyAgICA0OCwgNTUsIDUwLCAxMjgsIDY1LCA0OCwgNTUsIDQ5LCAxMjgsIDY1LCA0OCwgNTUsIDQ4LCAxMjgsIDY1LCA0OCwgNTQsIAorICAgIDU3LCAxMjgsIDY1LCA0OCwgNTQsIDU2LCAxMjgsIDY1LCA0OCwgNTQsIDU1LCAxMjgsIDY1LCA0OCwgNTQsIDU0LCA2NywgCisgICAgMTI4LCA2NSwgNDgsIDU0LCA1NCwgNjYsIDEyOCwgNjUsIDQ4LCA1NCwgNTQsIDY1LCAxMjgsIDY1LCA0OCwgNTQsIDU0LCAKKyAgICAxMjgsIDY1LCA0OCwgNTQsIDUzLCAxMjgsIDY1LCA0OCwgNTQsIDUyLCAxMjgsIDY1LCA0OCwgNTQsIDUxLCAxMjgsIDY1LCAKKyAgICA0OCwgNTQsIDUwLCAxMjgsIDY1LCA0OCwgNTQsIDQ5LCAxMjgsIDY1LCA0OCwgNTQsIDQ4LCAxMjgsIDY1LCA0OCwgNTMsIAorICAgIDU3LCAxMjgsIDY1LCA0OCwgNTMsIDU2LCAxMjgsIDY1LCA0OCwgNTMsIDU1LCAxMjgsIDY1LCA0OCwgNTMsIDU0LCAxMjgsIAorICAgIDY1LCA0OCwgNTMsIDUzLCAxMjgsIDY1LCA0OCwgNTMsIDUyLCAxMjgsIDY1LCA0OCwgNTMsIDUxLCAxMjgsIDY1LCA0OCwgCisgICAgNTMsIDUwLCAxMjgsIDY1LCA0OCwgNTMsIDQ5LCAxMjgsIDY1LCA0OCwgNTMsIDQ4LCAxMjgsIDY1LCA0OCwgNTIsIDU3LCAKKyAgICAxMjgsIDY1LCA0OCwgNTIsIDU2LCAxMjgsIDY1LCA0OCwgNTIsIDU1LCAxMjgsIDY1LCA0OCwgNTIsIDU0LCA2NiwgMTI4LCAKKyAgICA2NSwgNDgsIDUyLCA1NCwgNjUsIDEyOCwgNjUsIDQ4LCA1MiwgNTQsIDEyOCwgNjUsIDQ4LCA1MiwgNTMsIDY1LCAxMjgsIAorICAgIDY1LCA0OCwgNTIsIDUzLCAxMjgsIDY1LCA0OCwgNTIsIDUyLCAxMjgsIDY1LCA0OCwgNTIsIDUxLCA2NSwgMTI4LCA2NSwgCisgICAgNDgsIDUyLCA1MSwgMTI4LCA2NSwgNDgsIDUyLCA1MCwgNjUsIDEyOCwgNjUsIDQ4LCA1MiwgNTAsIDEyOCwgNjUsIDQ4LCAKKyAgICA1MiwgNDksIDY1LCAxMjgsIDY1LCA0OCwgNTIsIDQ5LCAxMjgsIDY1LCA0OCwgNTIsIDQ4LCA2NSwgMTI4LCA2NSwgNDgsIAorICAgIDUyLCA0OCwgMTI4LCA2NSwgNDgsIDUxLCA1NywgNjUsIDEyOCwgNjUsIDQ4LCA1MSwgNTcsIDEyOCwgNjUsIDQ4LCA1MSwgCisgICAgNTYsIDEyOCwgNjUsIDQ4LCA1MSwgNTUsIDEyOCwgNjUsIDQ4LCA1MSwgNTQsIDEyOCwgNjUsIDQ4LCA1MSwgNTMsIDEyOCwgCisgICAgNjUsIDQ4LCA1MSwgNTIsIDEyOCwgNjUsIDQ4LCA1MSwgNTEsIDEyOCwgNjUsIDQ4LCA1MSwgNTAsIDY1LCAxMjgsIDY1LCAKKyAgICA0OCwgNTAsIDU2LCA2NiwgMTI4LCA2NSwgNDgsIDUwLCA1NCwgNjUsIDEyOCwgNjUsIDQ4LCA0OSwgNTUsIDY1LCAxMjgsIAorICAgIDY1LCA0OCwgNDksIDUyLCA2NSwgMTI4LCA2NSwgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgNjUsIDQ4LCA0OCwgNTQsIDY2LCAKKyAgICAxMjgsIDY1LCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA2NSwgNDgsIDQ4LCA1MywgNjUsIDEyOCwgNjUsIDQ1LCA2OSwgODUsIAorICAgIDEyOCwgNDUsIDg1LCAyMDUsIDQ1LCA4MCwgNzIsIDgyLCA4NSwgMTI4LCA0NSwgNzUsIDcyLCA4OSwgODUsIDE5NiwgNDUsIAorICAgIDc1LCA3MiwgODksIDczLCA3NiwgMTI4LCA0NSwgNjgsIDkwLCA4NSwgMTk2LCA0NSwgNjcsIDcyLCA2NSwgMjEwLCA0NSwgCisgICAgNjcsIDcyLCA2NSwgNzYsIDEyOCwgCiB9OwogCiBzdGF0aWMgdW5zaWduZWQgaW50IGxleGljb25fb2Zmc2V0W10gPSB7Ci0gICAgMCwgMCwgNiwgMTAsIDE0LCAyMiwgMjcsIDM0LCA0NCwgNDksIDU4LCA2NCwgNjYsIDY5LCA4MSwgODksIDEwMiwgMTA4LCAKLSAgICAxMTMsIDExOCwgMTI2LCAxMzUsIDE0NiwgMTUxLCAxNTYsIDE2MSwgMTY0LCAxNjgsIDE3NywgMTgzLCAxODksIDE5NCwgCi0gICAgMjAxLCAyMDksIDIxNywgMjE4LCAyMjEsIDIyOSwgMTY1LCAyMzUsIDI0NCwgMjUxLCAyNjEsIDI2NywgMjc0LCAyNzksIAotICAgIDI4MiwgMjg3LCAyOTMsIDI5NiwgMzAwLCAzMDUsIDMxMSwgMzE3LCAzMjIsIDMyNywgMzMzLCAzMzksIDM0OCwgMzU1LCAKLSAgICAzNjIsIDM3MSwgMzc2LCAzODEsIDM4MywgMzkxLCAzOTksIDQwMCwgNDA4LCA0MTAsIDQxNywgNDIwLCA0MjYsIDQzMywgCi0gICAgMzMxLCA0MzgsIDQ0MCwgNDQyLCA0NDksIDQ1MSwgNDU2LCA0NjQsIDQ3MSwgNDc2LCA0ODAsIDQ4NiwgNDkxLCA1MDEsIAotICAgIDUwNiwgNTEzLCA1MTYsIDUyNCwgNTI4LCA1MzgsIDU0NSwgNTU0LCA1NjEsIDU3MCwgNTc3LCA1ODAsIDU4NCwgNTkyLCAKLSAgICA1OTgsIDYxMSwgNjE4LCA2MjIsIDYyNiwgNjI3LCA2MzYsIDY0MCwgNjQ5LCA2NTUsIDY1OSwgNjYxLCA2NjYsIDY3NCwgCi0gICAgNjc4LCA2ODYsIDY5MSwgNjk0LCA3MDAsIDcwMywgNzA3LCA3MTIsIDcyMCwgNzIzLCA3MzAsIDczNSwgNzQ0LCA3NTMsIAotICAgIDc2MSwgNzY5LCA3NzMsIDc3OSwgNzg3LCA3OTQsIDc5NywgODA3LCA4MTEsIDgxNSwgODI2LCA4MzMsIDg0MCwgODQ0LCAKLSAgICA4NDgsIDg1NCwgODQyLCA4NjMsIDg2OSwgODc0LCA4NzksIDg4MywgODg2LCA4ODksIDg5NCwgOTAzLCA5MTEsIDkxNiwgCi0gICAgNjU4LCA1NzUsIDkyMSwgOTI0LCA5MzAsIDkzNCwgOTM4LCA5NDcsIDk1MywgOTYwLCA5NjksIDk3NiwgOTg5LCA5OTQsIAotICAgIDk5OCwgMTAwNiwgMTAwOSwgMTAxNSwgMTAyMSwgMTAzMCwgMTAzNywgMTA0NSwgMTA1MiwgMTA2MiwgMTA2OSwgMTA3NywgCi0gICAgMTA4NiwgMTA5MCwgMTA5MywgMTEwMCwgMjEsIDExMDQsIDExMTMsIDExMjEsIDExMjgsIDExMzEsIDExMzYsIDExMzgsIAotICAgIDExNDIsIDExNTEsIDExNTYsIDExNTksIDExNjUsIDExNzIsIDExNzUsIDExODAsIDExODUsIDExOTEsIDExOTYsIDEyMDEsIAotICAgIDEyMDYsIDEyMTAsIDEyMTUsIDEyMjEsIDEyMjYsIDEyMzEsIDEyMzUsIDEyNDEsIDEyNDYsIDEyNTEsIDEyNTYsIDEyNjAsIAotICAgIDEyNjUsIDEyNzAsIDEyNzUsIDEyODEsIDEyODcsIDEyOTMsIDEyOTgsIDEzMDIsIDEzMDcsIDEzMTIsIDEzMTcsIDEzMjEsIAotICAgIDEzMjYsIDEzMzEsIDEzMzYsIDEzNDEsIDExNzYsIDExODEsIDExODYsIDExOTIsIDExOTcsIDEzNDUsIDEyMDcsIDEzNTEsIAotICAgIDEzNTYsIDEzNjEsIDEzNjgsIDEzNzIsIDEzNzUsIDEzODQsIDEyMTEsIDEzODgsIDEyMTYsIDEyMjIsIDEyMjcsIDEzOTIsIAotICAgIDEzOTcsIDE0MDIsIDE0MDYsIDE0MTAsIDE0MTYsIDE0MjAsIDEyMzIsIDE0MjMsIDE0MjUsIDEyNDIsIDE0MzAsIDE0MzQsIAotICAgIDEyNDcsIDE0NDAsIDEyNTIsIDE0NDQsIDE0NDgsIDEyNTcsIDE0NTIsIDE0NTcsIDE0NjEsIDE0NjQsIDE0NjgsIDEyNjEsIAotICAgIDEyNjYsIDE0NzMsIDE0NzksIDEyNzEsIDE0OTEsIDE0OTcsIDE1MDMsIDE1MDksIDEyNzYsIDEyODgsIDEyOTQsIDE1MTMsIAotICAgIDE1MTcsIDE1MjEsIDE1MjQsIDEyOTksIDE1MjgsIDE1MzAsIDE1MzUsIDE1NDAsIDE1NDYsIDE1NTEsIDE1NTYsIDE1NjAsIAotICAgIDE1NjUsIDE1NzAsIDE1NzUsIDE1ODAsIDE1ODYsIDE1OTEsIDE1OTYsIDE2MDIsIDE2MDgsIDE2MTMsIDE2MTcsIDE2MjIsIAotICAgIDE2MjcsIDE2MzIsIDE2MzcsIDE2NDIsIDE2NDYsIDE2NTQsIDE2NTksIDE2NjMsIDE2NjgsIDE2NzMsIDE2NzgsIDE2ODMsIAotICAgIDE2ODcsIDE2OTAsIDE2OTcsIDE3MDIsIDE3MDcsIDE3MTIsIDE3MTcsIDE3MjMsIDE3MjgsIDE3MzIsIDEzMDMsIDE3MzUsIAotICAgIDE3NDAsIDE3NDUsIDEzMDgsIDE3NDksIDE3NTMsIDE3NjAsIDEzMTMsIDE3NjcsIDEzMTgsIDE3NzEsIDE3NzMsIDE3NzgsIAotICAgIDE3ODQsIDEzMjIsIDE3ODksIDE3OTgsIDEzMjcsIDE4MDMsIDE4MDksIDE4MTQsIDEzMzIsIDE4MTksIDE4MjQsIDE4MjcsIAotICAgIDE4MzIsIDE4MzYsIDE4NDAsIDE4NDQsIDE4NDcsIDE4NTEsIDEzMzcsIDE4NTYsIDEzNDIsIDE4NjAsIDE4NjIsIDE4NjgsIAotICAgIDE4NzQsIDE4ODAsIDE4ODYsIDE4OTIsIDE4OTgsIDE5MDQsIDE5MTAsIDE5MTUsIDE5MjEsIDE5MjcsIDE5MzMsIDE5MzksIAotICAgIDE5NDUsIDE5NTEsIDE5NTcsIDE5NjMsIDE5NjksIDE5NzQsIDE5NzksIDE5ODQsIDE5ODksIDE5OTQsIDE5OTksIDIwMDQsIAotICAgIDIwMDksIDIwMTQsIDIwMTksIDIwMjUsIDIwMzAsIDIwMzYsIDIwNDEsIDIwNDcsIDIwNTMsIDIwNTgsIDIwNjQsIDIwNzAsIAotICAgIDIwNzYsIDIwODIsIDIwODcsIDIwOTIsIDIwOTQsIDIwOTUsIDIwOTksIDIxMDMsIDIxMDgsIDIxMTIsIDIxMTYsIDIxMjAsIAotICAgIDIxMjUsIDIxMjksIDIxMzIsIDIxMzcsIDIxNDEsIDIxNDYsIDIxNTAsIDIxNTQsIDIxNTksIDIxNjMsIDIxNjYsIDIxNzAsIAotICAgIDIxNzYsIDIxOTAsIDIxOTQsIDIxOTgsIDIyMDIsIDIyMDUsIDIyMTAsIDIyMTQsIDIyMTgsIDIyMjEsIDIyMjUsIDIyMzAsIAotICAgIDIyMzUsIDIyNDAsIDIyNDUsIDIyNDksIDIyNTMsIDIyNTcsIDIyNjEsIDIyNjYsIDIyNzAsIDIyNzUsIDIyNzksIDIyODQsIAotICAgIDIyOTAsIDIyOTcsIDIzMDMsIDIzMDgsIDIzMTMsIDIzMTgsIDIzMjQsIDIzMjksIDIzMzUsIDIzNDAsIDIzNDMsIDIzNDUsIAotICAgIDExOTMsIDIzNDksIDIzNTYsIDIzNjQsIDIzNzQsIDIzODMsIDIzOTcsIDI0MDEsIDI0MDUsIDI0MTAsIDI0MjMsIDI0MzEsIAotICAgIDI0MzUsIDI0NDAsIDI0NDQsIDI0NDcsIDI0NTEsIDI0NTUsIDI0NjAsIDI0NjUsIDI0NzAsIDI0NzQsIDI0NzcsIDI0ODEsIAotICAgIDI0ODgsIDI0OTUsIDI1MDEsIDI1MDYsIDI1MTEsIDI1MTcsIDI1MjMsIDI1MjgsIDI1MzEsIDE3NzUsIDI1MzMsIDI1MzksIAotICAgIDI1NDMsIDI1NDgsIDI1NTIsIDI1NTYsIDE2OTMsIDE3ODYsIDI1NjEsIDI1NjUsIDI1NjgsIDI1NzMsIDI1NzgsIDI1ODMsIAotICAgIDI1ODgsIDI1OTIsIDI1OTksIDI2MDQsIDI2MDcsIDI2MTQsIDI2MjAsIDI2MjQsIDI2MjgsIDI2MzIsIDI2MzcsIDI2NDQsIAotICAgIDI2NDksIDI2NTQsIDI2NjEsIDI2NjcsIDI2NzMsIDI2NzksIDI2OTMsIDI3MTAsIDI3MjUsIDI3NDAsIDI3NDksIDI3NTQsIAotICAgIDI3NTgsIDI3NjMsIDI3NjgsIDI3NzIsIDI3ODQsIDI3OTEsIDI3OTcsIDIyOTMsIDI4MDMsIDI4MTAsIDI4MTYsIDI4MjAsIAotICAgIDI4MjMsIDI4MzAsIDI4MzYsIDI4NDEsIDI4NDUsIDI4NTAsIDI4NTQsIDI4NTgsIDIxMTcsIDI4NjIsIDI4NjcsIDI4NzIsIAotICAgIDI4NzYsIDI4ODEsIDI4ODksIDI4OTMsIDI4OTgsIDI5MDIsIDI5MDYsIDI5MTAsIDI5MTUsIDI5MjAsIDI5MjUsIDI5MjksIAotICAgIDI5MzQsIDI5MzksIDI5NDMsIDI5NDgsIDI5NTIsIDI5NTUsIDI5NTksIDI5NjMsIDI5NzEsIDI5NzYsIDI5ODAsIDI5ODQsIAotICAgIDI5OTAsIDI5OTksIDMwMDMsIDMwMDcsIDMwMTMsIDMwMTgsIDMwMjUsIDMwMjksIDMwMzksIDMwNDMsIDMwNDcsIDMwNTIsIAotICAgIDMwNTYsIDMwNjEsIDMwNjcsIDMwNzIsIDMwNzYsIDMwODAsIDMwODQsIDI0OTEsIDMwOTIsIDMwOTcsIDMxMDMsIDMxMDgsIAotICAgIDMxMTIsIDMxMTcsIDMxMjIsIDMxMjYsIDMxMzIsIDMxMzcsIDIxMjEsIDMxNDMsIDMxNDksIDMxNTQsIDMxNTksIDMxNjQsIAotICAgIDMxNjksIDMxNzQsIDMxNzksIDMxODQsIDMxODksIDMxOTQsIDMyMDAsIDMyMDUsIDEyMDgsIDEwMSwgMzIxMSwgMzIxNSwgCi0gICAgMzIxOSwgMzIyMywgMzIyOCwgMzIzMiwgMzIzNiwgMzI0MiwgMzI0NywgMzI1MSwgMzI1NSwgMzI2MCwgMzI2NSwgMzI2OSwgCi0gICAgMzI3NCwgMzI3OCwgMzI4MSwgMzI4NSwgMzI5MCwgMzI5NCwgMzI5OSwgMzMwMywgMzMwNiwgMzMxMCwgMzMxNCwgMzMxOSwgCi0gICAgMzMyMywgMzMyNiwgMzMzOSwgMzM0MywgMzM0NywgMzM1MSwgMzM1NiwgMzM2MCwgMzM2NCwgMzM2NywgMzM3MSwgMzM3NSwgCi0gICAgMzM4MCwgMzM4NCwgMzM4OSwgMzM5NCwgMzM5OSwgMzQwMywgMzQwOCwgMzQxMSwgMzQxNCwgMzQxOSwgMzQyNSwgMzQyOSwgCi0gICAgMzQzMywgMzQzNiwgMzQ0MSwgMzQ0NSwgMzQ1MCwgMzQ1NCwgMzQ1OCwgMzQ2MSwgMzQ2NywgMzQ3MiwgMzQ3NywgMzQ4MywgCi0gICAgMzQ4OCwgMzQ5MywgMzQ5OSwgMzUwNSwgMzUxMCwgMzUxNSwgMzUyMCwgMzUyNSwgMTE0MCwgNTc5LCAzNTI4LCAzNTMxLCAKLSAgICAzNTM2LCAzNTQwLCAzNTQ0LCAzNTQ4LCAzNTUyLCAzNTU1LCAzNTU5LCAzNTY0LCAzNTY5LCAzNTczLCAzNTc4LCAzNTgyLCAKLSAgICAzNTg3LCAzNTkxLCAzNTk1LCAzNTk5LCAzNjA1LCAzNjExLCAzNjE0LCAzNjE3LCAxMzksIDM2MjMsIDM2MjgsIDM2MzcsIAotICAgIDM2NDUsIDM2NTQsIDM2NjEsIDM2NjcsIDM2NzQsIDM2NzksIDM2ODMsIDM2ODcsIDM2OTUsIDM3MDIsIDM3MDcsIDM3MTQsIAotICAgIDM3MTksIDM3MjMsIDM3MzMsIDM3MzcsIDM3NDEsIDM3NDYsIDM3NTEsIDM3NjEsIDIxMzMsIDM3NjYsIDM3NzAsIDM3NzMsIAotICAgIDM3NzksIDM3ODQsIDM3OTAsIDM3OTYsIDM4MDEsIDM4MDgsIDM4MTIsIDM4MTYsIDYzNywgNzAxLCAxMzY5LCAzODIwLCAKLSAgICAzODI3LCAzODM0LCAzODQwLCAzODQ1LCAzODUyLCAzODU5LCAzODY0LCAzODcwLCAzODc2LCAzODgxLCAzODg1LCAzODkxLCAKLSAgICAzODk4LCAzOTAzLCAzOTA3LCAyMTQyLCAzOTExLCAzOTE5LCAzOTI1LCAzOTMzLCA3MzksIDM5MzksIDM5NDcsIDM5NTgsIAotICAgIDM5NjIsIDM5NzIsIDIxNDcsIDM5NzgsIDM5ODMsIDM5OTgsIDQwMDQsIDQwMTEsIDQwMjEsIDQwMjcsIDQwMzIsIDQwMzgsIAotICAgIDQwNDQsIDQwNDcsIDQwNTAsIDQwNTQsIDQwNTksIDQwNjYsIDQwNzEsIDQwNzUsIDQwNzksIDQwODMsIDQwODcsIDQwOTIsIAotICAgIDQwOTgsIDQxMDksIDQxMTMsIDMyODYsIDQxMTgsIDQxMzAsIDQxMzYsIDQxNDQsIDQxNDgsIDQxNTMsIDE1NjIsIDQxNjAsIAotICAgIDQxNjMsIDQxNjYsIDQxNzAsIDQxNzMsIDQxNzksIDQxODMsIDQxOTcsIDQyMDEsIDQyMDQsIDQyMDgsIDQyMTQsIDQyMjAsIAotICAgIDQyMjUsIDQyMjksIDQyMzMsIDQyMzksIDQyNTAsIDQyNTYsIDQyNjEsIDQyNjcsIDQyNzEsIDQyNzksIDQyOTEsIDQzMDEsIAotICAgIDQzMDcsIDQzMTIsIDQzMjEsIDQzMjksIDQzMzYsIDQzNDIsIDQzNDYsIDQzNTIsIDQzNjEsIDQzNzAsIDQzNzQsIDQzODMsIAotICAgIDQzODgsIDQzOTIsIDQzOTcsIDQ0MDEsIDQ0MDksIDQ0MTUsIDQ0MTksIDQ0MjQsIDQ0MjgsIDQ0MzQsIDIxNTUsIDEzODUsIAotICAgIDQ0NDAsIDQ0NDUsIDQ0NTEsIDQ0NTYsIDQ0NjEsIDQ0NjYsIDQ0NzEsIDQ0NzYsIDQ0ODEsIDQ0ODcsIDQ0OTIsIDQ0OTgsIAotICAgIDQ1MDMsIDQ1MDgsIDQ1MTMsIDQ1MTksIDQ1MjQsIDQ1MjksIDQ1MzQsIDQ1MzksIDQ1NDUsIDQ1NTAsIDQ1NTYsIDQ1NjEsIAotICAgIDQ1NjYsIDQ1NzEsIDQ1NzYsIDQ1ODEsIDQ1ODYsIDQ1OTIsIDQ1OTcsIDQ2MDIsIDI5MSwgMzIxLCA0NjA3LCA0NjEzLCAKLSAgICA0NjE3LCA0NjIxLCA0NjI2LCA0NjMwLCA0NjM0LCA0NjM3LCA0NjQxLCA0NjQ1LCA0NjQ5LCA0NjUzLCA0NjU3LCA0NjYyLCAKLSAgICA0NjY2LCA0NjcwLCA0Njc2LCA0NDM3LCA0NjgxLCA0Njg1LCA0Njg4LCA0NjkzLCA0Njk4LCA0NzAzLCA0NzA4LCA0NzEzLCAKLSAgICA0NzE4LCA0NzIzLCA0NzI4LCA0NzMzLCA0NzM4LCA0NzQyLCA0NzQ3LCA0NzUyLCA0NzU3LCA0NzYyLCA0NzY3LCA0NzcyLCAKLSAgICA0Nzc3LCA0NzgyLCA0Nzg3LCA0NzkyLCA0Nzk2LCA0ODAxLCA0ODA2LCA0ODExLCA0ODE2LCA0ODIxLCA0ODI2LCA0ODMxLCAKLSAgICA0ODM2LCA0ODQxLCA0ODQ2LCA0ODUwLCA0ODU1LCA0ODYwLCA0ODY1LCA0ODcwLCA0ODc1LCA0ODgwLCA0ODg1LCA0ODkwLCAKLSAgICA0ODk1LCA0OTAwLCA0OTA0LCA0OTA5LCA0OTE0LCA0OTE5LCA0OTI0LCA0OTI5LCA0OTM0LCA0OTM5LCA0OTQ0LCA0OTQ5LCAKLSAgICA0OTU0LCA0OTU4LCA0OTYzLCA0OTY4LCA0OTczLCA0OTc4LCA0OTgzLCA0OTg4LCA0OTkzLCA0OTk4LCA1MDAzLCA1MDA4LCAKLSAgICA1MDEyLCA1MDE3LCA1MDIyLCA1MDI3LCA1MDMyLCA1MDM3LCA1MDQyLCA1MDQ3LCA1MDUyLCA1MDU3LCA1MDYyLCA1MDY2LCAKLSAgICA1MDcxLCA1MDc2LCA1MDgxLCA1MDg2LCA1MDkyLCA1MDk4LCA1MTA0LCA1MTEwLCA1MTE2LCA1MTIyLCA1MTI4LCA1MTMzLCAKLSAgICA1MTM5LCA1MTQ1LCA1MTUxLCA1MTU3LCA1MTYzLCA1MTY5LCA1MTc1LCA1MTgxLCA1MTg3LCA1MTkzLCA1MTk4LCA1MjA0LCAKLSAgICA1MjEwLCA1MjE2LCA1MjIyLCA1MjI4LCA1MjM0LCA1MjQwLCA1MjQ2LCA1MjUyLCA1MjU4LCA1MjYzLCA1MjY5LCA1Mjc1LCAKLSAgICA1MjgxLCA1Mjg3LCA1MjkzLCA1Mjk5LCA1MzA1LCA1MzExLCA1MzE3LCA1MzIzLCA1MzI4LCA1MzM0LCA1MzQwLCA1MzQ2LCAKLSAgICA1MzUyLCA1MzU4LCA1MzY0LCA1MzcwLCA1Mzc2LCA1MzgyLCA1Mzg4LCA1MzkzLCA1Mzk5LCA1NDA1LCA1NDExLCA1NDE3LCAKLSAgICA1NDIzLCA1NDI5LCA1NDM1LCA1NDQxLCA1NDQ3LCA1NDUzLCA1NDU4LCA1NDYyLCA1NDY4LCA1NDc0LCA1NDgwLCA1NDg2LCAKLSAgICA1NDkyLCA1NDk4LCA1NTA0LCA1NTEwLCA1NTE2LCA1NTIyLCA1NTI3LCA1NTMzLCA1NTM5LCA1NTQ1LCA1NTUxLCA1NTU3LCAKLSAgICA1NTYzLCA1NTY5LCA1NTc1LCA1NTgxLCA1NTg3LCA1NTkyLCA1NTk4LCA1NjA0LCA1NjEwLCA1NjE2LCA1NjIyLCA1NjI4LCAKLSAgICA1NjM0LCA1NjQwLCA1NjQ2LCA1NjUyLCA1NjU3LCA1NjYzLCA1NjY5LCA1Njc1LCA1NjgxLCA1Njg3LCA1NjkzLCA1Njk5LCAKLSAgICA1NzA1LCA1NzExLCA1NzE3LCA1NzIyLCA1NzI4LCA1NzM0LCA1NzQwLCA1NzQ2LCA1NzUyLCA1NzU4LCA1NzY0LCA1NzcwLCAKLSAgICA1Nzc2LCA1NzgyLCA1Nzg3LCA1NzkzLCA1Nzk5LCA1ODA1LCA1ODExLCA1ODE3LCA1ODIzLCA1ODI5LCA1ODM1LCA1ODQxLCAKLSAgICA1ODQ3LCA1ODUyLCA1ODU4LCA1ODY0LCA1ODcwLCA1ODc2LCA1ODgyLCA1ODg4LCA1ODk0LCA1OTAwLCA1OTA2LCA1OTEyLCAKLSAgICA1OTE3LCA1OTIzLCA1OTI5LCA1OTM1LCA1OTQxLCA1OTQ3LCA1OTUzLCA1OTU5LCA1OTY1LCA1OTcxLCA1OTc3LCA1OTgyLCAKLSAgICA1OTg4LCA1OTk0LCA2MDAwLCA2MDA2LCA2MDEyLCA2MDE4LCA2MDI0LCA2MDMwLCA2MDM2LCA2MDQyLCA2MDQ3LCA2MDUzLCAKLSAgICA2MDU5LCA2MDY1LCA2MDcxLCA2MDc3LCA2MDgzLCA2MDg5LCA2MDk1LCA2MTAxLCA2MTA3LCA2MTEyLCA2MTE2LCA2MTE5LCAKLSAgICA2MTI2LCA2MTMwLCA2MTQzLCA2MTQ3LCA2MTUxLCA2MTU1LCA2MTU4LCA2MTYyLCA2MTY3LCA2MTcxLCA2MTc1LCA2MTgxLCAKLSAgICA2MTg4LCA2MTk5LCA2MjA3LCA2MjE0LCA2MjE4LCA2MjI2LCA2MjM1LCA2MjQxLCA2MjUzLCA2MjU4LCA2MjYxLCA2MjY2LCAKLSAgICA2MjcwLCA2MjgwLCA2Mjg4LCA2Mjk2LCA2MzAyLCA2MzA2LCA2MzE2LCA2MzI2LCA2MzM0LCA2MzQxLCA2MzQ4LCA2MzU0LCAKLSAgICA2MzYwLCA2MzY3LCA2MzcxLCA2Mzc4LCA2Mzg4LCA2Mzk4LCA2NDA2LCA2NDEzLCA2NDE4LCA2NDIyLCA2NDI2LCA2NDM0LCAKLSAgICA2NDM4LCA2NDQzLCA2NDUwLCA2NDU4LCA2NDYzLCA2NDY3LCA2NDcyLCA2NDc2LCA2NDgzLCA2NDg4LCA2NTAyLCA2NTA3LCAKLSAgICA2NTEyLCA2NTE5LCAzNTQxLCA2NTI4LCA2NTMyLCA2NTM3LCA2NTQxLCA2NTQ1LCA2NTQ4LCA2NTUzLCA2NTU4LCA2NTY3LCAKLSAgICA2NTczLCA2NTc5LCA2NTg1LCA2NTg5LCA2NjAwLCA2NjEwLCA2NjI1LCA2NjQwLCA2NjU1LCA2NjcwLCA2Njg1LCA2NzAwLCAKLSAgICA2NzE1LCA2NzMwLCA2NzQ1LCA2NzYwLCA2Nzc1LCA2NzkwLCA2ODA1LCA2ODIwLCA2ODM1LCA2ODUwLCA2ODY1LCA2ODgwLCAKLSAgICA2ODk1LCA2OTEwLCA2OTI1LCA2OTQwLCA2OTU1LCA2OTcwLCA2OTg1LCA3MDAwLCA3MDE1LCA3MDMwLCA3MDQ1LCA3MDYwLCAKLSAgICA3MDc1LCA3MDkwLCA3MTA1LCA3MTIwLCA3MTM1LCA3MTUwLCA3MTY1LCA3MTgwLCA3MTk1LCA3MjEwLCA3MjI1LCA3MjQwLCAKLSAgICA3MjU1LCA3MjcwLCA3Mjg1LCA3MzAwLCA3MzE1LCA3MzMwLCA3MzQ1LCA3MzU0LCA3MzYzLCA3MzY4LCA3Mzc0LCA3Mzg0LCAKLSAgICA3Mzg4LCA3MzkyLCA3Mzk3LCA3NDAyLCA3NDEwLCA3NDE0LCA3NDE3LCA3NDIxLCAzMDM0LCA3NDI0LCA3NDI5LCAzMzAsIAotICAgIDUwNCwgNzQzNSwgNzQ0MywgNzQ0NywgNzQ1MSwgNzQ1NCwgNzQ1OCwgNzQ2NCwgNzQ2OCwgNzQ3NiwgNzQ4MiwgNzQ4NywgCi0gICAgNzQ5NCwgNzUwMiwgNzUwOSwgNzUxNSwgNzUyMCwgNzUyNywgNzUzMywgNzU0MSwgNzU0NSwgNzU1MCwgNzU2MiwgNzU3MywgCi0gICAgNzU4MCwgNzU4NCwgNzU4OCwgNzU5MiwgNzU5NSwgNzYwMSwgMzMxMSwgNzYwNSwgNzYxMSwgNzYxNiwgNzYyMSwgNzYyNiwgCi0gICAgNzYzMiwgNzYzNywgNzY0MiwgNzY0NywgNzY1MiwgNzY1OCwgNzY2MywgNzY2OCwgNzY3NCwgNzY3OSwgNzY4NSwgNzY5MCwgCi0gICAgNzY5NiwgNzcwMSwgNzcwNywgNzcxMiwgNzcxNywgNzcyMiwgNzcyNywgNzczMiwgNzczOCwgNzc0MywgNzc0OCwgNzc1MywgCi0gICAgNzc1OSwgNzc2NSwgNzc3MSwgNzc3NywgNzc4MywgNzc4OSwgNzc5NSwgNzgwMSwgNzgwNywgNzgxMywgNzgxOSwgNzgyNSwgCi0gICAgNzgzMCwgNzgzNSwgNzg0MCwgNzg0NSwgNzg1MCwgNzg1NSwgNzg2MCwgNzg2NSwgNzg3MSwgNzg3NywgNzg4MiwgNzg4OCwgCi0gICAgNzg5NCwgNzkwMCwgNzkwNSwgNzkxMCwgNzkxNSwgNzkyMCwgNzkyNiwgNzkzMiwgNzkzNywgNzk0MiwgNzk0NywgNzk1MiwgCi0gICAgNzk1NywgNzk2MywgNzk2OCwgNzk3NCwgNzk4MCwgNzk4NiwgNzk5MiwgNzk5OCwgODAwNCwgODAxMCwgODAxNiwgODAyMiwgCi0gICAgMjE2NCwgNzQ1MywgODAyNywgODAzMSwgODAzNSwgODAzOCwgODA0NSwgODA0OCwgODA1MiwgODA2MCwgODA2NSwgODA3MCwgCi0gICAgODA2MSwgODA3NSwgMjE5MSwgODA3OSwgODA4NSwgODA5MSwgODA5NiwgODEwMSwgODEwOCwgODExNiwgODEyMSwgODEyNSwgCi0gICAgODEyOCwgODEzMiwgODEzOCwgODE0NCwgODE0OCwgMjE5OSwgNTI2LCA4MTUxLCA4MTU1LCA4MTYwLCA4MTY2LCA4MTcxLCAKLSAgICA4MTc1LCA4MTc4LCA4MTgyLCA4MTg4LCA4MTkzLCA4MTk3LCA4MjA0LCA4MjA4LCA4MjEyLCA4MjE2LCA4NzYsIDk1OCwgCi0gICAgODIxOSwgODIyNywgODIzNCwgODI0MCwgODI0NywgODI1NSwgODI2MiwgODI3MywgODI4MCwgODI4NiwgODI5MSwgODMwMywgCi0gICAgMTIyOCwgMTM5MywgMTM5OCwgODMxNCwgMTQwMywgODMxOCwgODMyMiwgODMzMSwgODMzOSwgODM0MywgODM1MiwgODM1OCwgCi0gICAgODM2MywgODM2NywgODM3MywgODM3OCwgODM4NSwgMjc0NSwgODM5MiwgODM5NiwgODQwNSwgODQxNCwgODQyMywgODQzMiwgCi0gICAgODQzOCwgODQ0MywgODQ0OCwgODQ1OSwgODQ3MSwgODQ3NiwgODQ4NCwgMjI1MCwgODQ4OCwgODQ5MCwgODQ5NSwgODQ5OSwgCi0gICAgODUwOCwgODUxNiwgMTQwNywgMTU5LCAzNTgzLCAzNTg4LCA4NTIyLCA4NTI2LCA4NTM1LCA4NTQxLCA4NTQ2LCA4NTQ5LCAKLSAgICA4NTU4LCAzNTkyLCAyNzM3LCA4NTY0LCA4NTcyLCA4NTc2LCA4NTgwLCA4NTg0LCAyMjY3LCA4NTg4LCA4NTkzLCA4NjAwLCAKLSAgICA4NjA2LCA4NjEyLCA4NjE1LCA4NjE3LCA4NjIwLCA4NjI4LCA4NjM2LCA4NjQ0LCA4NjQ3LCA4NjUyLCAyMjgwLCA4NjU3LCAKLSAgICA4MDcyLCA4NjYwLCA4NjYyLCA4NjY3LCA4NjcyLCA4Njc3LCA4NjgyLCA4Njg3LCA4NjkyLCA4Njk3LCA4NzAyLCA4NzA3LCAKLSAgICA4NzEyLCA4NzE4LCA4NzIzLCA4NzI4LCA4NzMzLCA4NzM5LCA4NzQ0LCA4NzQ5LCA4NzU0LCA4NzU5LCA4NzY0LCA4NzY5LCAKLSAgICA4Nzc1LCA4NzgwLCA4Nzg1LCA4NzkwLCA4Nzk1LCA4ODAwLCA4ODA1LCA4ODEwLCA4ODE1LCA4ODIwLCA4ODI1LCA4ODMwLCAKLSAgICA4ODM1LCA4ODQwLCA4ODQ1LCA4ODUwLCA4ODU1LCA4ODYwLCA4ODY2LCA4ODcyLCA4ODc3LCA4ODgyLCA4ODg3LCA4ODkyLCAKLSAgICA4ODk3LCAyMjkxLCAyMjk4LCAyMzA0LCA4OTAyLCA4OTEwLCA4OTE2LCA4OTI0LCAyMzMwLCAyMzM2LCA4OTMyLCA4OTM2LCAKLSAgICA4OTQxLCA4OTQ1LCA4OTQ5LCA4OTUzLCA4OTU4LCA4OTYyLCA4OTY3LCA4OTcxLCA4OTc0LCA4OTc3LCA4OTgzLCA4OTkwLCAKLSAgICA4OTk2LCA5MDAzLCA5MDA5LCA5MDE2LCA5MDIyLCA5MDI5LCA5MDM1LCA5MDQxLCA5MDUwLCA5MDU2LCA5MDYwLCA5MDY0LCAKLSAgICA5MDY4LCA5MDcyLCA5MDc3LCA5MDgxLCA5MDg2LCA5MDkwLCA5MDk2LCA5MTAxLCA5MTA4LCA5MTE5LCA5MTI3LCA5MTM3LCAKLSAgICA5MTQzLCA5MTUzLCA5MTYyLCA5MTY5LCA5MTc0LCA5MTc4LCA5MTg5LCA5MjAyLCA5MjEzLCA5MjI2LCA5MjM3LCA5MjQ5LCAKLSAgICA5MjYxLCA5MjczLCA5Mjg2LCA5Mjk5LCA5MzA2LCA5MzEyLCA5MzI2LCA5MzMzLCA5MzM5LCA5MzQ4LCA5MzU2LCA5MzYwLCAKLSAgICA5MzY1LCA5MzY5LCA5Mzc2LCA5Mzg0LCA5Mzg4LCA5Mzk0LCA5Mzk4LCA5NDA0LCA5NDE0LCA5NDE4LCA5NDIzLCA5NDI4LCAKLSAgICA5NDM1LCA5NDQxLCA5NDUxLCA4MjQyLCA5NDU3LCA5NDYxLCA5NDY4LCA5NDc0LCA5NDgxLCA5NDg4LCA5NTcsIDk0OTIsIAotICAgIDk0OTYsIDk1MDEsIDk1MDYsIDk1MTEsIDk1MTUsIDk1MjEsIDk1MjksIDk1MzUsIDk1MzksIDk1NDIsIDk1NDgsIDk1NTgsIAotICAgIDk1NjIsIDk1NjgsIDk1NzMsIDk1NzcsIDk1ODEsIDk1ODcsIDk1OTMsIDIxODcsIDk1OTgsIDk2MDAsIDk2MDUsIDk2MTMsIAotICAgIDk2MjIsIDk2MjYsIDk2MzIsIDk2MzcsIDk2NDIsIDk2NDcsIDk2NTIsIDk2NTgsIDk2NjMsIDk2NjgsIDQyMzUsIDk2NzMsIAotICAgIDk2NzgsIDk2ODIsIDk2ODgsIDk2OTMsIDk2OTksIDk3MDQsIDk3MDksIDk3MTUsIDk3MjAsIDk2MjcsIDk3MjYsIDk3MzAsIAotICAgIDk3MzcsIDk3NDMsIDk3NDgsIDk3NTIsIDY0OTgsIDk3NTcsIDk3NjYsIDk3NzEsIDk3NzYsIDg1OTYsIDg2MDMsIDk3ODEsIAotICAgIDI5MTIsIDk3ODUsIDk3OTAsIDk3OTUsIDk4MDAsIDk2MzgsIDk4MDQsIDk4MDksIDk4MTQsIDk2NDMsIDk4MTgsIDk2NDgsIAotICAgIDk4MjMsIDk4MzAsIDk4MzcsIDk4NDMsIDk4NTAsIDk4NTYsIDk4NjIsIDk4NjcsIDk4NzQsIDk4NzksIDk4ODQsIDk4ODksIAotICAgIDk4OTUsIDk2NTMsIDk2NTksIDk5MDEsIDk5MDcsIDk5MTIsIDk5MTcsIDk5MjUsIDk2NjQsIDk5MzAsIDExMDIsIDk5MzMsIAotICAgIDk5NDEsIDk5NDcsIDk5NTMsIDk5NjIsIDk5NzAsIDk5NzgsIDk5ODYsIDk5OTQsIDEwMDAyLCAxMDAxMCwgMTAwMTgsIAotICAgIDEwMDI2LCAxMDAzNSwgMTAwNDQsIDEwMDUyLCAxMDA2MSwgMTAwNzAsIDEwMDc5LCAxMDA4OCwgMTAwOTcsIDEwMTA2LCAKLSAgICAxMDExNSwgMTAxMjQsIDEwMTMzLCAxMDE0MiwgMTAxNTAsIDEwMTU1LCAxMDE2MSwgMTAxNjksIDEwMTc2LCAxMDE5MSwgCi0gICAgMTAyMDgsIDEwMjI3LCAxMDIzNiwgMTAyNDQsIDEwMjU5LCAxMDI3MCwgMTAyODAsIDEwMjkwLCAxMDI5OCwgMTAzMDQsIAotICAgIDEwMzE2LCAxMDMyNSwgMTAzMzMsIDEwMzQwLCAxMDM0NywgMTAzNTQsIDEwMzYwLCAxMDM2NSwgMTAzNzUsIDEwMzgzLCAKLSAgICAxMDM5MywgMTA0MDAsIDEwNDEwLCAxMDQyMCwgMTA0MzAsIDEwNDM4LCAxMDQ0NSwgMTA0NTQsIDEwNDY0LCAxMDQ3OCwgCi0gICAgMTA0OTMsIDEwNTAyLCAxMDUxMCwgMTA1MTUsIDEwNTE5LCAxMDUyOCwgMTA1MzQsIDEwNTM5LCAxMDU0OSwgMTA1NTksIAotICAgIDEwNTY5LCAxMDU3NCwgMTA1NzgsIDEwNTg3LCAxMDU5MiwgMTA2MDgsIDEwNjI1LCAxMDYzNSwgMTA2NDYsIDEwNjU5LCAKLSAgICAxMDY2NywgMTA2ODAsIDEwNjkyLCAxMDcwMCwgMTA3MDUsIDEwNzA5LCAxMDcxNSwgMTA3MjAsIDEwNzI4LCAxMDczNiwgCi0gICAgMTA3NDMsIDEwNzQ4LCAxMDc1NiwgMTA3NjYsIDEwNzcyLCAxMDc3NiwgMTA3NzksIDEwNzgzLCAxMDc4OSwgMTA3OTYsIAotICAgIDEwODAwLCAxMDgwOCwgMTA4MTcsIDEwODI1LCAxMDgzMiwgMTA4MzcsIDEwODQyLCAxMDg0NiwgMTA4NTAsIDEwODU4LCAKLSAgICAxMDg3MywgMTA4ODksIDEwODk1LCAxMDkwMywgMTA5MTIsIDEwOTIwLCAxMDkyNiwgMTA5MzAsIDEwOTM3LCAxMDk0OCwgCi0gICAgMTA5NTIsIDEwOTU1LCAxMDk2MSwgOTY2OSwgMTA5NjYsIDEwOTcyLCAxMDk3OSwgMTA5ODUsIDEwOTkwLCAxMDk5NywgCi0gICAgMTEwMDQsIDExMDExLCAxMTAxOCwgMTEwMjUsIDExMDMyLCAxMTAzOSwgMTEwNDYsIDExMDUxLCAxMDIwNCwgMTEwNTYsIAotICAgIDExMDYyLCAxMTA2OSwgMTEwNzYsIDExMDgxLCAxMTA4OCwgMTEwOTcsIDExMTAxLCAxMTExMywgODYzNCwgMTExMTcsIAotICAgIDExMTIwLCAxMTEyNCwgMTExMjgsIDExMTMyLCAxMTEzNiwgMTExNDIsIDExMTQ4LCAxMTE1MywgMTExNTksIDExMTY0LCAKLSAgICAxMTE2OSwgMTExNzUsIDExMTgwLCAxMTE4NSwgOTQzMSwgMTExOTAsIDExMTk0LCAxMTE5OCwgMTEyMDIsIDExMjA3LCAKLSAgICAxMTIxMiwgMTEyMTcsIDExMjI1LCAxMTIzMSwgMTEyMzYsIDExMjQwLCAxMTI0NCwgMTEyNTEsIDExMjU2LCAxMTI2NCwgCi0gICAgMTEyNzEsIDExMjc2LCAxMTI4MCwgMTEyODMsIDExMjg5LCAxMTI5NiwgMTEzMDAsIDExMzAzLCAxMTMwOCwgMTEzMTIsIAotICAgIDQyNzQsIDExMzE4LCAxMTMyNywgNDYsIDExMzM1LCAxMTM0MSwgMTEzNDYsIDExMzUxLCAxMTM1OSwgMTEzNjYsIDExMzcxLCAKLSAgICA5NDQ2LCAxMTM3NywgMTEzODMsIDExMzg4LCAxMTM5MiwgMTEzOTUsIDExNDEwLCAxMTQyOSwgMTE0NDEsIDExNDU0LCAKLSAgICAxMTQ2NywgMTE0ODAsIDExNDk0LCAxMTUwNywgMTE1MjIsIDExNTI5LCA5Njc0LCAxMTUzNSwgMTE1NDksIDExNTU0LCAKLSAgICAxMTU2MCwgMTE1NjUsIDExNTczLCAxMTU3OCwgODQwMSwgMTE1ODMsIDExNTg2LCAxMTU5NCwgMTE2MDEsIDExNjA2LCAKLSAgICAxMTYxMCwgMTE2MTYsIDI5MTcsIDEwMjc4LCAxMTYyMCwgMTE2MjQsIDExNjMwLCAxMTYzNiwgMTE2NDEsIDExNjQ3LCAKLSAgICAxMTY1MiwgOTY4MywgMTE2NTgsIDExNjY0LCAxMTY2OSwgMTE2NzQsIDExNjgyLCAxMTY4OCwgMTE3MDEsIDExNzA5LCAKLSAgICAxMTcxNiwgMTE3MjIsIDk2ODksIDExNzI4LCAxMTczNiwgMTE3NDQsIDExNzUxLCAxMTc2NCwgMTE3NzcsIDExNzg5LCAKLSAgICAxMTc5OSwgMTE4MDcsIDExODE0LCAxMTgyNiwgMTE4MzMsIDExODQzLCAxMTg1MiwgMTE4NjEsIDExODY5LCAxMTg3NiwgCi0gICAgMTE4ODEsIDExODg3LCA5Njk0LCAxMTg5MiwgMTE4OTgsIDExOTAzLCAxMTkwOCwgOTcwMCwgMTE5MTMsIDExOTE2LCAKLSAgICAxMTkyMywgMTE5MjksIDExOTQyLCA5MTEyLCAxMTk1MywgMTE5NTksIDExOTY4LCAxMTk3NiwgMTE5ODMsIDExOTg5LCAKLSAgICAxMjAwMCwgMTIwMDYsIDEyMDExLCAzODM2LCAxMjAxOSwgMTIwMjQsIDExNDAyLCAxMjAzMCwgMTIwMzcsIDEyMDQyLCAKLSAgICA5NzA1LCAxMjA0OCwgMTIwNTMsIDEyMDYwLCAxMjA2NiwgMTIwNzIsIDEyMDc3LCAxMjA4NSwgMTIwOTMsIDEyMTAwLCAKLSAgICAxMjEwNCwgMTIxMTYsIDEyMTMwLCAxMjE0MCwgMTIxNDUsIDEyMTQ5LCAxMjE2MCwgMTIxNjYsIDEyMTcxLCAxMjE3NiwgCi0gICAgOTcxMCwgMTIxODAsIDk3MTYsIDEyMTg1LCAxMjE4OCwgMTIxOTMsIDEyMjA1LCAxMjIxMiwgMTIyMTcsIDEyMjIxLCAKLSAgICAxMjIyOSwgMTIyMzQsIDEyMjM4LCAxMjI0MywgMTIyNDcsIDEyMjU0LCAxMjI2MCwgOTcyMSwgOTYyOCwgMTIyNjcsIDI5MjIsIAotICAgIDEyLCAxMjI3NCwgMTIyNzksIDEyMjgzLCAxMjI4NywgMTIyOTMsIDEyMzAxLCAxMjMxMSwgMTIzMTYsIDEyMzIxLCAxMjMyOCwgCi0gICAgMTIzMzUsIDEyMzM5LCAxMjM1MCwgMTIzNjAsIDEyMzY5LCAxMjM3OCwgMTIzOTAsIDEyMzk1LCAxMjM5OSwgMTI0MDcsIAotICAgIDEyNDIxLCAxMjQyNSwgMTI0MjgsIDEyNDM2LCAxMjQ0MywgMTI0NTEsIDEyNDU1LCAxMjQ2NiwgMTI0NzAsIDEyNDc3LCAKLSAgICAxMjQ4MiwgMTI0ODYsIDEyNDkyLCAxMjQ5NywgMTI1MDMsIDEyNTA4LCAxMjUxMywgMTI1MTcsIDEyNTIzLCAxMjUyOCwgCi0gICAgMTI1MzksIDEyNTQzLCAxMjU0NiwgMTI1NTIsIDEyNTU3LCAxMjU2MywgMTI1NjksIDEyNTc2LCAxMjU4NywgMTI1OTcsIAotICAgIDEyNjA3LCAxMjYxNiwgMTI2MjMsIDEyNjMyLCAxMjYzNiwgOTczMSwgOTczOCwgOTc0NCwgOTc0OSwgMTI2NDIsIDEyNjQ4LCAKLSAgICAxMjY1NCwgMTI2NTksIDEyNjY1LCA5NzUzLCAxMjY3MSwgMTI2NzQsIDEyNjgxLCAxMjY4NiwgMTI3MDEsIDEyNzE3LCAKLSAgICAxMjczMiwgMTI3NDAsIDEyNzQ2LCAxMjc1MSwgOTUwLCAzNzQsIDEyNzU2LCAxMjc2NCwgMTI3NzEsIDEyNzc3LCAxMjc4MiwgCi0gICAgMTI3ODcsIDk3NTgsIDEyNzg5LCAxMjc5MywgMTI3OTgsIDEyODAyLCAxMjgxMiwgMTI4MTcsIDEyODIxLCAxMjgzMCwgCi0gICAgMTI4MzQsIDEyODM3LCAxMjg0NCwgOTc2NywgMTI4NDksIDEyODUyLCAxMjg2MCwgMTI4NjcsIDEyODc1LCAxMjg3OSwgCi0gICAgMTI4ODMsIDEyODkwLCAxMjg5OSwgMTI5MDYsIDEyOTAyLCAxMjkxMywgMTI5MTcsIDEyOTIzLCAxMjkyNywgMTI5MzEsIAotICAgIDEyOTM1LCAxMjk0MSwgMTI5NTEsIDEyOTU5LCAxMjk2NiwgMTI5NzAsIDEyOTc4LCAxMjk4MiwgMTI5ODksIDEyOTkzLCAKLSAgICAxMjk5OCwgMTMwMDIsIDEzMDA5LCAxMzAxNSwgMTMwMjMsIDEzMDI5LCAxMzAzNCwgMTMwNDQsIDEzMDQ5LCAxMzA1NCwgCi0gICAgMTMwNTgsIDEzMDYyLCAxMzA3MCwgNDEyNCwgMTMwNzgsIDEzMDgzLCA5NzcyLCAxMzA4NywgMTMwOTEsIDEzMDk0LCAKLSAgICAxMzEwMiwgMTMxMDksIDEzMTEzLCA2Mjk4LCAxMzExNywgMTMxMjIsIDEzMTI3LCAxMzEzMSwgMTMxNDIsIDEzMTUyLCAKLSAgICAxMzE1NywgMTMxNjMsIDEzMTY4LCAxMzE3MiwgMTMxNzUsIDEzMTgzLCAxMzE4OCwgMTMxOTMsIDEzMjAwLCAxMzIwNSwgCi0gICAgOTc3NywgMTMyMTAsIDEzMjE0LCAxMzIyMSwgMTczNywgNjQ1NiwgMTMyMjYsIDEzMjMxLCAxMzIzNiwgMTMyNDEsIDEzMjQ3LCAKLSAgICAxMzI1MiwgMTMyNTgsIDEzMjYzLCAxMzI2OCwgMTMyNzMsIDEzMjc4LCAxMzI4MywgMTMyODgsIDEzMjkzLCAxMzI5OCwgCi0gICAgMTMzMDMsIDEzMzA4LCAxMzMxMywgMTMzMTgsIDEzMzIzLCAxMzMyOCwgMTMzMzMsIDEzMzM4LCAxMzM0NCwgMTMzNDksIAotICAgIDEzMzU0LCAxMzM1OSwgMTMzNjQsIDEzMzY5LCAxMzM3NSwgMTMzODAsIDEzMzg1LCAxMzM5MSwgMTMzOTYsIDEzNDAyLCAKLSAgICAxMzQwNywgMTM0MTMsIDEzNDE4LCAxMzQyMywgMTM0MjgsIDEzNDMzLCAxMzQzOSwgMTM0NDQsIDEzNDQ5LCAxMzQ1NCwgCi0gICAgOTA5LCAxMTIsIDEzNDYyLCAxMzQ2NiwgMTM0NzEsIDEzNDc2LCAxMzQ4MCwgMTM0ODQsIDEzNDg4LCAxMzQ5MywgMTM0OTcsIAotICAgIDEzNTAyLCAxMzUwNiwgMTM1MDksIDEzNTEzLCAxMzUxNywgMTM1MjMsIDEzNTI4LCAxMzUzOCwgMTM1NDQsIDEzNTUyLCAKLSAgICAxMzU1OCwgMTM1NjIsIDEzNTY2LCAxMzU3MywgMTM1ODEsIDEzNTkwLCAxMzYwMSwgMTM2MTEsIDEzNjE4LCAxMzYyNSwgCi0gICAgMTM2MjksIDEzNjM4LCAxMzY0NywgMTM2NTUsIDEzNjY0LCAxMzY3MywgMTM2ODIsIDEzNjkxLCAxMzcwMSwgMTM3MTEsIAotICAgIDEzNzIxLCAxMzczMSwgMTM3NDEsIDEzNzUwLCAxMzc2MCwgMTM3NzAsIDEzNzgwLCAxMzc5MCwgMTM4MDAsIDEzODEwLCAKLSAgICAxMzgyMCwgMTM4MjksIDEzODM5LCAxMzg0OSwgMTM4NTksIDEzODY5LCAxMzg3OSwgMTM4ODksIDEzODk4LCAxMzkwOCwgCi0gICAgMTM5MTgsIDEzOTI4LCAxMzkzOCwgMTM5NDgsIDEzOTU4LCAxMzk2OCwgMTM5NzgsIDEzOTg4LCAxMzk5NywgMTQwMDcsIAotICAgIDE0MDE3LCAxNDAyNywgMTQwMzcsIDE0MDQ3LCAxNDA1NywgMTQwNjcsIDE0MDc3LCAxNDA4NywgMTQwOTcsIDE0MTA2LCAKLSAgICAxMjM3LCAxNDExMiwgMTQxMTUsIDE0MTE5LCAxNDEyNCwgMTQxMzEsIDE0MTM3LCAxNDE0MiwgMTQxNDYsIDE0MTUxLCAKLSAgICAxNDE2MCwgMTQxNjgsIDE0MTczLCAxNDE3NywgMTQxODEsIDE0MTg3LCAxNDE5MiwgMTQxOTgsIDk3ODYsIDE0MjAzLCAKLSAgICAxNDIwOCwgMTQyMTcsIDk3OTYsIDE0MjIyLCAxNDIyNSwgMTQyMzEsIDE0MjM5LCA5ODAxLCAxNDI0NiwgMTQyNTAsIAotICAgIDE0MjU0LCAxNDI1OSwgMTQyNjMsIDE0MjczLCAxNDI3OSwgMTQyODUsIDE0MjkwLCAxNDI5OSwgMTQzMDcsIDE0MzE0LCAKLSAgICAxNDMyMSwgMTQzMjYsIDE0MzMzLCAxNDMzOCwgMTQzNDIsIDE0MzQ1LCAxNDM1NiwgMTQzNjYsIDE0Mzc1LCAxNDM4MywgCi0gICAgMTQzOTQsIDE0NDA2LCAxNDQxNiwgMTQ0MjEsIDE0NDI1LCAxNDQzMCwgMTQ0MzUsIDE0NDM5LCAxNDQ0NSwgMTQ0NTMsIAotICAgIDE0NDYwLCAxNDQ3MSwgMTQ0NzYsIDE0NDg2LCAxNDQ5NSwgMTQ0OTksIDE0NTAyLCAxNDUwOSwgMTQ1MTksIDE0NTI4LCAKLSAgICAxNDUzNSwgMTQ1MzksIDE0NTQ2LCAxNDU1MiwgMTQ1NTcsIDE0NTYyLCAxNDU2NiwgMTQ1NzUsIDE0NTgwLCAxNDU4NCwgCi0gICAgMTQ1OTAsIDE0NTk0LCAxNDU5OSwgMTQ2MDMsIDE0NjEwLCAxNDYxNywgMTQ2MjEsIDE0NjMwLCAxNDYzOCwgMTQ2NDYsIAotICAgIDE0NjUzLCAxNDY2MSwgMTQ2NzMsIDE0Njg0LCAxNDY5NCwgMTQ3MDEsIDE0NzA3LCAxNDcxNiwgMTQ3MjcsIDE0NzM2LCAKLSAgICAxNDc0OCwgMTQ3NjAsIDE0NzcyLCAxNDc4MiwgMTQ3OTEsIDE0ODAwLCAxNDgwOCwgMTQ4MTUsIDE0ODI0LCAxNDgzMiwgCi0gICAgMTQ4MzYsIDE0ODQxLCAxNDg0NywgMTQ4NTMsIDE0ODU4LCAxNDg2MywgODA5MywgMTQ4NjcsIDE0ODY5LCAxNDg3MywgCi0gICAgMTQ4NzgsIDE0ODg0LCAxNDg5MCwgMTQ4OTksIDE0OTAzLCAxNDkwOSwgMTQ5MTcsIDE0OTI0LCAxNDkzMywgMTQ5NDIsIAotICAgIDE0OTUxLCAxNDk2MCwgMTQ5NjksIDE0OTc4LCAxNDk4NywgMTQ5OTYsIDE1MDA2LCAxNTAxNiwgMTUwMjUsIDE1MDMxLCAKLSAgICAxNTAzOCwgMTUwNDUsIDE1MDUxLCAxNTA2NSwgMTUwNzEsIDE1MDc4LCAxNTA4NiwgMTUwOTUsIDE1MTAzLCAxNTEwOSwgCi0gICAgMTUxMTgsIDE1MTI3LCAxNTEzOCwgMTUxNDgsIDE1MTU2LCAxNTE2MywgMTUxNzEsIDE1MTgwLCAxNTE5MywgMTUyMDIsIAotICAgIDE1MjEwLCAxNTIxNywgMTUyMzAsIDE1MjM2LCAxNTI0MiwgMTUyNTIsIDE1MjYxLCAxNTI3MCwgMTUyNzUsIDE1Mjc5LCAKLSAgICAxNTI4NSwgMTUyOTEsIDE1Mjk2LCAxNTMwMywgMTUzMTAsIDk0NDUsIDE1MzE1LCAxNTMyMCwgMTUzMjcsIDE1MzM1LCAKLSAgICAxNTM0MCwgMTUzNDcsIDE1MzUyLCAxNTM2NCwgMTM1MTksIDE1MzY5LCAxNTM3NywgMTUzODMsIDE1Mzg4LCAxNTM5NiwgCi0gICAgMTU0MDQsIDE1NDExLCAxNTQxOSwgMTU0MjUsIDE1NDMzLCAxNTQ0MSwgMTU0NDcsIDE1NDUyLCAxNTQ1OCwgMTU0NjUsIAotICAgIDE1NDcxLCAxNTQ3NiwgMTU0ODAsIDE1NDkxLCAxNTQ5OSwgMTU1MDUsIDE1NTEwLCAxNTUxNywgMTU1MjYsIDE1NTMyLCAKLSAgICAxNTUzNywgMTU1NDUsIDE1NTU0LCAxNTU2OCwgNDA2OCwgMTU1NzIsIDE1NTc3LCAxNTU4MiwgMTU1ODgsIDE1NTkzLCAKLSAgICAxNTU5OCwgMTU2MDIsIDE1NjA3LCAxNTYxMiwgMTU2MTcsIDgwOTIsIDE1NjIyLCAxNTYyNywgMTU2MzIsIDE1NjM3LCAKLSAgICAxNTY0MiwgMTU2NDYsIDE1NjUxLCAxNTY1NiwgMTU2NjEsIDE1NjY2LCAxNTY3MiwgMTU2NzgsIDE1NjgzLCAxNTY4NywgCi0gICAgMTU2OTMsIDE1Njk4LCAxNTcwMywgMTU3MDgsIDk4MDUsIDE1NzEzLCAxNTcxOCwgMTU3MjMsIDE1NzI4LCAxNTczMywgCi0gICAgMTU3NTAsIDE1NzY4LCAxNTc4MCwgMTU3OTMsIDE1ODEwLCAxNTgyNiwgMTU4NDMsIDE1ODUzLCAxNTg3MiwgMTU4ODMsIAotICAgIDE1ODk0LCAxNTkwNSwgMTU5MTYsIDE1OTI4LCAxNTkzOSwgMTU5NTAsIDE1OTY3LCAxNTk3OCwgMTU5ODksIDE1OTk0LCAKLSAgICA5ODEwLCAxNTk5OSwgMTYwMDMsIDI0MjAsIDE2MDA3LCAxNjAxMCwgMTYwMTYsIDE2MDI0LCAxNjAzMiwgMTYwNDEsIAotICAgIDE2MDQ4LCAxNjA1MywgMTYwNjEsIDE2MDY5LCAxNjA3NiwgMTYwODAsIDE2MDg1LCAxNjA5MSwgMTYwOTgsIDE2MTA2LCAKLSAgICAxNjExMywgMTYxMjUsIDE2MTMyLCAxNjEzOCwgMTYxNDYsIDE2MTUxLCAxNjE1NywgMTI2OTUsIDE2MTYzLCAxNjE3MiwgCi0gICAgMTYxNzgsIDE2MTgzLCAxNjE5MSwgMTYyMDAsIDE2MjA4LCAxNjIxNSwgMTYyMjEsIDE2MjI5LCAxNjIzNiwgMTYyNDIsIAotICAgIDE2MjQ4LCAxNjI1NSwgMTYyNjIsIDE2MjY4LCAxNjI3NCwgMTYyODMsIDE2MjkxLCAxNjMwMSwgMTYzMDgsIDE2MzE0LCAKLSAgICAxNjMyMiwgMTYzMjgsIDE2MzM2LCAxNjM0NCwgMTYzNTEsIDE2MzY0LCAxNjM3MSwgMTYzODAsIDE2Mzg5LCAxNjM5OCwgCi0gICAgMTY0MDYsIDE2NDE2LCAxNjQyMywgMTY0MjgsIDM3MjcsIDE2NDM1LCAxNjQ0MCwgMTM1MywgMTY0NDQsIDE1NjIzLCAKLSAgICAxNjQ0OCwgMTY0NTQsIDE2NDU4LCAxNjQ2NiwgMTY0NzgsIDE2NDgzLCAxNjQ5MCwgMTY0OTYsIDE2NTAxLCAxNjUwOCwgCi0gICAgMTU2MjgsIDE2NTEyLCAxNjUxNiwgMTY1MjAsIDE1NjMzLCAxNjUyNCwgMTU2MzgsIDE2NTI4LCAxNjUzNSwgMTY1NDAsIAotICAgIDE2NTQ0LCAxNjU1MSwgMTY1NTUsIDE2NTYzLCAxNjU3MCwgMTY1NzUsIDE2NTc5LCAxNjU4NiwgMTY2MDMsIDE2NjEyLCAKLSAgICAxNjYxNiwgMTY2MTksIDE2NjI3LCAxNjYzMywgMTY2MzgsIDM4MDUsIDE2NjQyLCAxNjY0NCwgMTY2NTIsIDE2NjU5LCAKLSAgICAxNjY2OSwgMTY2ODEsIDE2Njg2LCAxNjY5MCwgMTY2OTYsIDE2NzAxLCAxNjcwNSwgMTY3MTEsIDE2NzE2LCAxNjcyMiwgCi0gICAgMTY3MjUsIDE2NzMyLCAxNjc0MCwgMTY3NDcsIDE2NzUzLCAxNjc1OCwgMTY3NjQsIDE2NzY5LCAxNjc3NiwgMTY3ODIsIAotICAgIDE2Nzg3LCAxNjc5NCwgMTY3OTksIDE2ODAzLCAxNjgwOSwgMTY4MTMsIDE2ODIwLCAxNjgyNiwgMTY4MzEsIDE2ODM3LCAKLSAgICAxNjg0NSwgMTY4NTMsIDE2ODYwLCAxNjg2NiwgMTY4NzEsIDE2ODc3LCAxNjg4MywgMTY4OTEsIDE2ODk5LCAxNjkwNSwgCi0gICAgMTY5MTEsIDE2OTE2LCAxNjkyMywgMTY5MjgsIDE2OTMyLCAxNjkzOCwgMTY5NDMsIDE2OTUwLCAxNjk1NSwgMTY5NjEsIAotICAgIDE2OTY0LCAxNjk3MCwgMTY5NzYsIDE2OTc5LCAxNjk4MywgMTY5ODcsIDE2OTk5LCAxNzAwNSwgMTcwMTAsIDE3MDE3LCAKLSAgICAxNzAyMywgMTcwMjksIDE3MDQwLCAxNzA1MCwgMTcwNTksIDE3MDY3LCAxNzA3NCwgMTcwODUsIDE3MDk1LCAxNzEwNSwgCi0gICAgMTcxMTMsIDE3MTE2LCAxNTY1MiwgMTcxMjEsIDE3MTI2LCAxNTY1NywgMTU3OTgsIDE3MTM0LCAxNzE0NywgMTcxNjIsIAotICAgIDE3MTczLCAxNTgxNSwgMTcxOTEsIDE3MjA0LCAxNzIxNywgMTcyMjgsIDExNDE3LCAxNzIzOSwgMTcyNTIsIDE3MjcxLCAKLSAgICAxNzI4MiwgMTcyOTMsIDE3MzA0LCAyNjg4LCAxNzMxNywgMTczMjEsIDE3MzI5LCAxNzM0MCwgMTczNDgsIDE3MzYzLCAKLSAgICAxNzM3OCwgMTczODksIDE3Mzk2LCAxNzQwMiwgMTc0MTAsIDE3NDE0LCAxNzQyMCwgMTc0MjMsIDE3NDM2LCAxNzQ0OCwgCi0gICAgMTc0NTgsIDE3NDY2LCAxNzQ3MywgMTc0ODEsIDE3NDkxLCAxNzQ5NiwgMTc1MDMsIDE3NTA4LCAxNzUxNSwgMTc1MjYsIAotICAgIDE3NTM2LCAxNzU0MiwgMTc1NDcsIDE3NTUyLCAxNTY2MiwgMTc1NTYsIDE3NTYyLCAxNzU2OCwgMTc1NzMsIDE3NTc4LCAKLSAgICAxNzU4MywgMTc1ODcsIDE1NjY3LCAxNTY3MywgMTc1OTEsIDE1Njc5LCAxNzU5NiwgMTc2MDQsIDE3NjA5LCAxNzYxMywgCi0gICAgMTc2MjEsIDE3NjMwLCAxNzYzNywgMTc2NDEsIDk2NDksIDE3NjQ1LCAxNzY0NywgMTc2NTIsIDE3NjU3LCAxNzY2MywgCi0gICAgMTc2NjgsIDE3NjczLCAxNzY3OCwgMTc2ODMsIDE3Njg3LCAxNzY5MywgMTc2OTksIDE3NzA0LCAxNzcxMCwgMTc3MTUsIAotICAgIDE3NzIwLCAxNzcyNCwgMTc3MzAsIDE3NzM1LCAxNzc0MCwgMTc3NDUsIDE3NzU3LCAxNzc2MiwgMTc3NjgsIDE3NzczLCAKLSAgICAxNzc3OCwgMTc3ODQsIDE3NzkwLCAxNzc5NSwgMTc4MDAsIDE3ODA1LCAxNzgxMiwgMTc4MTgsIDE3ODI5LCAxNzgzNiwgCi0gICAgMTc4NDEsIDE3ODQ1LCAxNzg0OSwgMTc4NTIsIDE3ODYwLCAxNzg2NSwgMTc4NzIsIDE3ODc5LCAxNzg4NSwgMTc4OTAsIAotICAgIDE3ODk1LCAxNzkwMCwgMTc5MDcsIDE3OTE3LCAxNzkyNSwgMTc5MzAsIDE3OTM3LCAxNzk0MywgMTc5NTIsIDE3OTYyLCAKLSAgICAxNzk3MiwgMTc5ODYsIDE4MDAwLCAxODAxNCwgMTgwMjgsIDE4MDQzLCAxODA1OCwgMTgwNzUsIDE4MDkzLCAxODEwNiwgCi0gICAgMTgxMTIsIDE4MTE3LCAxODEyMiwgMTgxMjYsIDE4MTM0LCAxODEzOSwgMTgxNDcsIDE4MTUzLCAxODE1OSwgMTgxNjQsIAotICAgIDE4MTY5LCAxODE3MywgMTgxNzgsIDE4MTgyLCAxODE4NywgMTgxOTEsIDE4MjAyLCAxODIwOCwgMTgyMTMsIDE4MjE4LCAKLSAgICAxODIyNSwgMTgyMzAsIDE4MjM0LCAzNjkwLCAxODIzOSwgMTgyNDUsIDE4MjUyLCAxNTY4OCwgMTgyNTgsIDE4MjYyLCAKLSAgICAxODI2OCwgMTgyNzMsIDE4Mjc4LCAxODI4MiwgMTgyODgsIDE4MjkzLCAxODI5OCwgMTgzMDUsIDE4MzEwLCAxNDI3NSwgCi0gICAgMTgzMTQsIDE4MzE5LCAxODMyMywgMTgzMjgsIDE4MzM0LCAxODM0MCwgMTgzNDcsIDE4MzU3LCAxODM2NSwgMTgzNzIsIAotICAgIDE4Mzc3LCAxODM4MSwgMTgzOTAsIDE4Mzk4LCAxODQwNSwgMTg0MTIsIDE4NDE4LCAxODQyMywgMTg0MjksIDE4NDM0LCAKLSAgICAxODQzOSwgMTg0NDUsIDE4NDUwLCAxODQ1NiwgMTg0NjEsIDE4NDY3LCAxODQ3MywgMTg0ODAsIDE4NDg2LCAxODQ5MSwgCi0gICAgMTg0OTYsIDk4NzUsIDE4NTA1LCAxODUwOCwgMTg1MTYsIDE4NTIyLCAxODUyNywgMTg1MzIsIDE4NTQyLCAxODU0OSwgCi0gICAgMTg1NTUsIDE4NTYwLCAxODU2NSwgMTg1NzEsIDE4NTc2LCAxODU4MiwgMTg1ODcsIDE4NTkzLCAxODU5OSwgMTg2MDQsIAotICAgIDE4NjEyLCAxODYxOSwgMTg2MjQsIDE4NjI5LCAxODYzNSwgMTg2NDAsIDE4NjQ0LCAxODY1MywgMTg2NjQsIDE4NjcxLCAKLSAgICAxODY3OSwgMTg2ODYsIDE4NjkxLCAxODY5NiwgMTg3MDIsIDE4NzA3LCAxODcxNSwgMTg3MjEsIDE4NzI3LCAxODczNCwgCi0gICAgMTg3NDAsIDE4NzQ1LCAxODc0OSwgMTg3NTUsIDE4NzYwLCAxODc2NSwgMTg3NjksIDE4Nzc0LCAxNDI2LCA4MTE3LCAyOTM2LCAKLSAgICAxODc3OCwgMTg3ODIsIDE4Nzg2LCAxODc5MCwgMTg3OTQsIDE4Nzk4LCAxODgwMSwgMTg4MDYsIDE4ODEzLCAxODgyMSwgCi0gICAgMTU2OTksIDE4ODI4LCAxODgzOCwgMTg4NDYsIDE4ODUzLCAxODg2MSwgMTg4NzEsIDE4ODgwLCA5MjIwLCAxODg5MywgCi0gICAgMTg4OTgsIDE4OTAzLCAxODkxMSwgMTg5MTgsIDE0MzcxLCAxNDM4MCwgMTg5MjUsIDE4OTM1LCAxODk1MCwgMTg5NTYsIAotICAgIDE4OTYzLCAxODk3MCwgMTg5NzYsIDE4OTgyLCAxODk5MywgMTkwMDEsIDE5MDA5LCAxOTAxOSwgMTkwMjksIDE1NzA0LCAKLSAgICAxOTAzOCwgMTkwNDQsIDE5MDUwLCAxOTA1OCwgMTkwNjYsIDE5MDcxLCAxOTA4MCwgMTkwODgsIDE5MTAwLCAxOTExMCwgCi0gICAgMTkxMjAsIDE5MTMwLCAxOTEzOSwgMTkxNTEsIDE5MTYxLCAxOTE3MSwgMTkxODIsIDE5MTg3LCAxOTE5OSwgMTkyMTEsIAotICAgIDE5MjIzLCAxOTIzNSwgMTkyNDcsIDE5MjU5LCAxOTI3MSwgMTkyODMsIDE5Mjk1LCAxOTMwNywgMTkzMTgsIDE5MzMwLCAKLSAgICAxOTM0MiwgMTkzNTQsIDE5MzY2LCAxOTM3OCwgMTkzOTAsIDE5NDAyLCAxOTQxNCwgMTk0MjYsIDE5NDM4LCAxOTQ0OSwgCi0gICAgMTk0NjEsIDE5NDczLCAxOTQ4NSwgMTk0OTcsIDE5NTA5LCAxOTUyMSwgMTk1MzMsIDE5NTQ1LCAxOTU1NywgMTk1NjksIAotICAgIDE5NTgwLCAxOTU5MiwgMTk2MDQsIDE5NjE2LCAxOTYyOCwgMTk2NDAsIDE5NjUyLCAxOTY2NCwgMTk2NzYsIDE5Njg4LCAKLSAgICAxOTcwMCwgMTk3MTEsIDE5NzIzLCAxOTczNSwgMTk3NDcsIDE5NzU5LCAxOTc3MSwgMTk3ODMsIDE5Nzk1LCAxOTgwNywgCi0gICAgMTk4MTksIDE5ODMxLCAxOTg0MiwgMTk4NTQsIDE5ODY2LCAxOTg3OCwgMTk4OTAsIDE5OTAyLCAxOTkxNCwgMTk5MjYsIAotICAgIDE5OTM4LCAxOTk1MCwgMTk5NjIsIDE5OTczLCAxOTk4NSwgMTk5OTcsIDIwMDA5LCAyMDAyMSwgMjAwMzMsIDIwMDQ1LCAKLSAgICAyMDA1NywgMjAwNjksIDIwMDgxLCAyMDA5MywgMjAxMDQsIDIwMTE2LCAyMDEyOCwgMjAxNDAsIDIwMTUyLCAyMDE2NSwgCi0gICAgMjAxNzgsIDIwMTkxLCAyMDIwNCwgMjAyMTcsIDIwMjMwLCAyMDI0MywgMjAyNTUsIDIwMjY4LCAyMDI4MSwgMjAyOTQsIAotICAgIDIwMzA3LCAyMDMyMCwgMjAzMzMsIDIwMzQ2LCAyMDM1OSwgMjAzNzIsIDIwMzg1LCAyMDM5NywgMjA0MTAsIDIwNDIzLCAKLSAgICAyMDQzNiwgMjA0NDksIDIwNDYyLCAyMDQ3NSwgMjA0ODgsIDIwNTAxLCAyMDUxNCwgMjA1MjcsIDIwNTM5LCAyMDU1MiwgCi0gICAgMjA1NjUsIDIwNTc4LCAyMDU5MSwgMjA2MDQsIDIwNjE3LCAyMDYzMCwgMjA2NDMsIDIwNjU2LCAyMDY2OSwgMjA2ODEsIAotICAgIDIwNjk0LCAyMDcwNywgMjA3MjAsIDIwNzMzLCAyMDc0NiwgMjA3NTksIDIwNzcyLCAyMDc4NSwgMjA3OTgsIDIwODExLCAKLSAgICAyMDgyMywgMjA4MzYsIDIwODQ5LCAyMDg2MiwgMjA4NzUsIDIwODg4LCAyMDkwMSwgMjA5MTQsIDIwOTI3LCAyMDk0MCwgCi0gICAgMjA5NTMsIDIwOTY1LCAyMDk3NiwgMjA5ODksIDIxMDAyLCAyMTAxNSwgMjEwMjgsIDIxMDQxLCAyMTA1NCwgMjEwNjcsIAotICAgIDIxMDgwLCAyMTA5MywgMjExMDYsIDIxMTE4LCAyMTEzMSwgMjExNDQsIDIxMTU3LCAyMTE3MCwgMjExODMsIDIxMTk2LCAKLSAgICAyMTIwOSwgMjEyMjIsIDIxMjM1LCAyMTI0OCwgMjEyNjAsIDIxMjczLCAyMTI4NiwgMjEyOTksIDIxMzEyLCAyMTMyNSwgCi0gICAgMjEzMzgsIDIxMzUxLCAyMTM2NCwgMjEzNzcsIDIxMzkwLCAyMTQwMiwgMjE0MTUsIDIxNDI4LCAyMTQ0MSwgMjE0NTQsIAotICAgIDIxNDY3LCAyMTQ4MCwgMjE0OTMsIDIxNTA2LCAyMTUxOSwgMjE1MzIsIDIxNTQ0LCAyMTU1NywgMjE1NzAsIDIxNTgzLCAKLSAgICAyMTU5NiwgMjE2MDksIDIxNjIyLCAyMTYzNSwgMjE2NDgsIDIxNjYxLCAyMTY3NCwgMjE2ODYsIDIxNjk5LCAyMTcxMiwgCi0gICAgMjE3MjUsIDIxNzM4LCAyMTc1MSwgMjE3NjQsIDIxNzc3LCAyMTc5MCwgMjE4MDMsIDIxODE2LCAyMTgyOCwgMjE4NDEsIAotICAgIDIxODU0LCAyMTg2NywgMjE4ODAsIDIxODkzLCAyMTkwNiwgMjE5MTksIDIxOTMyLCAyMTk0NSwgMjE5NTgsIDIxOTcwLCAKLSAgICAyMTk4MywgMjE5OTYsIDIyMDA5LCAyMjAyMiwgMjIwMzUsIDIyMDQ4LCAyMjA2MSwgMjIwNzQsIDIyMDg3LCAyMjEwMCwgCi0gICAgMjIxMTIsIDIyMTI1LCAyMjEzOCwgMjIxNTEsIDIyMTY0LCAyMjE3NywgMjIxOTAsIDIyMjAzLCAyMjIxNiwgMjIyMjksIAotICAgIDIyMjQyLCAyMjI1NCwgMjIyNjcsIDIyMjgwLCAyMjI5MywgMjIzMDYsIDIyMzE5LCAyMjMzMiwgMjIzNDUsIDIyMzU4LCAKLSAgICAyMjM3MSwgMjIzODQsIDIyMzk2LCAyMjQwNywgMjI0MTYsIDIyNDI0LCAyMjQzMiwgMjI0MzksIDIyNDQ1LCAyMjQ0OSwgCi0gICAgMjI0NTUsIDIyNDYxLCAyMjQ2OSwgMjI0NzQsIDIyNDgwLCAyMjQ4NSwgMjI0ODksIDIyNDk4LCA5NjU0LCAyMjUwOSwgCi0gICAgMjI1MTYsIDIyNTI0LCAyMjUzMSwgMjI1MzgsIDExOTM2LCAyMjU0NSwgMjI1NTIsIDIyNTYxLCAyMjU2NiwgMjI1NzEsIAotICAgIDgxNDUsIDIyNTc4LCAyMjU4MywgMjI1ODYsIDIyNTkxLCAyMjU5OSwgMjI2MDYsIDIyNjEzLCAyMjYyMCwgMjI2MjYsIAotICAgIDIyNjM1LCAyMjY0NCwgMjI2NTMsIDIyNjU5LCAyMjY2OCwgMjI2NzIsIDIyNjc4LCAyMjY4MywgMjI2OTMsIDIyNzAwLCAKLSAgICAyMjcwNiwgMjI3MTQsIDIyNzIwLCAyMjcyNywgMjI3MzcsIDIyNzQ2LCAyMjc1MCwgMjI3NTcsIDIyNzYxLCAyMjc2NiwgCi0gICAgMjI3NzIsIDIyNzgwLCAyMjc4NCwgMjI3OTQsIDE1NzE0LCAyMjgwMywgMjI4MDksIDIyODEzLCAyMjgyMiwgMjI4MzIsIAotICAgIDE1NzE5LCAyMjgzOCwgMjI4NDUsIDIyODU2LCAyMjg2NCwgMjI4NzQsIDIyODgzLCAyMjg5MSwgOTQxMCwgMjI4OTksIAotICAgIDIyOTA0LCAyMjkxMCwgMjI5MTUsIDIyOTE5LCAyMjkyMywgMjI5MjcsIDEwMzc5LCAyMjkzMiwgMjI5NDAsIDIyOTQ3LCAKLSAgICAyMjk1NiwgMjI5NjMsIDIyOTcwLCAyMjk3NiwgMTE4NTYsIDIyOTgzLCAyMjk4OSwgMjI5OTMsIDIyOTk5LCAyMzAwNiwgCi0gICAgMjMwMTIsIDIzMDIwLCAyMzAyNiwgMjMwMzMsIDIzMDM5LCAyMzA0NSwgMjMwNTQsIDIzMDU4LCAyMzA2NiwgMjMwNzUsIAotICAgIDIzMDgyLCAyMzA4NywgMjMwOTEsIDIzMTAyLCAyMzEwNywgMjMxMTIsIDIzMTE3LCAyMzEzMCwgODM0OSwgMjMxMzQsIAotICAgIDIzMTQwLCAyMzE0NSwgMjMxNTMsIDIzMTU3LCAyMzE2NCwgMjMxNzMsIDIzMTc4LCAxNTk5MCwgMjMxODYsIDIzMTkwLCAKLSAgICAyMzIwMiwgMjMyMDcsIDIzMjExLCAyMzIxNCwgMjMyMjAsIDIzMjI2LCAyMzIzMiwgMjMyMzcsIDIzMjQxLCAyMzI0NCwgCi0gICAgMjMyNTUsIDIzMjYwLCA5OTI2LCAyMzI2NywgMjMyNzIsIDEyNDMsIDk5MzEsIDIzMjc3LCAyMzI4MiwgMjMyODcsIDIzMjkyLCAKLSAgICAyMzI5NywgMjMzMDIsIDIzMzA3LCAyMzMxMiwgMjMzMTcsIDIzMzIyLCAyMzMyNywgMjMzMzIsIDIzMzM4LCAyMzM0MywgCi0gICAgMjMzNDgsIDIzMzUzLCAyMzM1OCwgMjMzNjMsIDIzMzY4LCAyMzM3MywgMjMzNzgsIDIzMzgzLCAyMzM4OSwgMjMzOTUsIAotICAgIDIzNDAwLCAyMzQwNSwgMjM0MTAsIDIzNDE1LCAyMzQyMCwgMjM0MjUsIDIzNDMwLCAyMzQzNSwgMjM0NDAsIDIzNDQ2LCAKLSAgICAyMzQ1MSwgMjM0NTYsIDIzNDYxLCAyMzQ2NywgMjM0NzMsIDIzNDc4LCAyMzQ4MywgMjM0ODgsIDIzNDkzLCAyMzQ5OCwgCi0gICAgMjM1MDMsIDIzNTA4LCAyMzUxMywgMjM1MTksIDIzNTI0LCAyMzUyOSwgMjM1MzQsIDIzNTM5LCAyMzU0NSwgMjM1NTAsIAotICAgIDIzNTU1LCAyMzU1OSwgMTM0LCAyMzU2NywgMjM1NzEsIDIzNTc1LCAyMzU3OSwgMjM1ODQsIDIzNTg4LCAxNDI4MSwgMjM0NiwgCi0gICAgMjM1OTIsIDIzNTk3LCAyMzYwMSwgMjM2MDYsIDIzNjEwLCAyMzYxNSwgMjM2MTksIDIzNjI1LCAyMzYzMCwgMjM2MzQsIAotICAgIDIzNjM4LCAyMzY0NiwgMjM2NTAsIDIzNjU0LCAyMzY1OSwgMjM2NjQsIDIzNjY4LCAyMzY3NCwgMjM2NzksIDIzNjgzLCAKLSAgICAyMzY4OCwgMjM2OTMsIDIzNjk3LCAyMzcwNCwgMjM3MTEsIDIzNzE4LCAyMzcyMiwgMjM3MjYsIDIzNzMxLCAyMzczNSwgCi0gICAgMjM3MzgsIDIzNzQ0LCAyMzc1NywgMjM3NjIsIDIzNzY4LCAyMzc3NywgMjM3ODIsIDEwMTUxLCAyMzc4NywgMjM3OTYsIAotICAgIDIzODAxLCAyMzgwNCwgMjc1MSwgMjc1NiwgMjM4MDgsIDIzODE0LCAyMzgyMCwgNzUzOCwgMjM4MjUsIDIzODMwLCAyMzgzNSwgCi0gICAgMjM4NDEsIDIzODQ2LCAxNTEzNCwgMjM4NTEsIDIzODU2LCAyMzg2MSwgMjM4NjYsIDIzODcyLCAyMzg3NywgMjM4ODIsIAotICAgIDIzODg4LCAyMzg5MywgMjM4OTcsIDIzOTAyLCAyMzkwNywgMjM5MTIsIDIzOTE3LCAyMzkyMiwgMjM5MjYsIDIzOTMxLCAKLSAgICAyMzkzNSwgMjM5NDAsIDIzOTQ1LCAyMzk1MCwgMjM5NTUsIDIzOTU5LCAyMzk2NCwgMjM5NjgsIDIzOTczLCAyMzk3OCwgCi0gICAgMjM5ODMsIDIzODk4LCAyOTQ1LCAyMzkwMywgMjM5ODgsIDIzOTk2LCAyNDAwMywgMTA0NzMsIDI0MDE1LCAyNDAyMywgCi0gICAgMjQwMzMsIDI0MDUxLCAyNDA3MCwgMjQwNzksIDI0MDg3LCAyMzkwOCwgMjQwOTQsIDI0MDk5LCAyNDEwNywgMjM5MTMsIAotICAgIDI0MTEyLCAyNDExNywgMjQxMjUsIDI0MTMwLCAyMzkxOCwgMjQxMzUsIDI0MTQzLCAyNDE0OCwgMjQxNTIsIDI0MTU5LCAKLSAgICAyNDE2NSwgMjQxNzQsIDI0MTgyLCAyNDE4NiwgMjQxODksIDI0MTk2LCAyNDIwMCwgMjQyMDQsIDI0MjA5LCAyNDIxNSwgCi0gICAgMjQyMjIsIDI0MjI3LCA5NDM3LCAxNzQyLCAxNzQ3LCAyNDIzMSwgMjQyMzcsIDI0MjQzLCAyNDI0OCwgMjQyNTIsIDI0MjU2LCAKLSAgICAyNDI2MCwgMjQyNjQsIDI0MjY4LCAyNDI3MiwgMjQyNzYsIDI0MjgwLCAyNDI4MywgMjQyODksIDI0Mjk2LCAyNDMwNCwgCi0gICAgMjQzMTAsIDI0MzE2LCAyNDMyMSwgMjQzMjYsIDI0MzMyLCAyNDMzNiwgMjQzNDEsIDE1MDQwLCAxNTA0NywgMjQzNDgsIAotICAgIDI0MzYwLCAyNDM2MywgMjQzNzAsIDI0Mzc0LCAxNzg4MSwgMjQzODEsIDI0Mzg5LCAyNDQwMCwgMjQ0MDksIDI0NDIyLCAKLSAgICAyNDQzMiwgMjQ0NDYsIDI0NDU4LCAyNDQ3MiwgMjQ0ODUsIDI0NDk3LCAyNDUwNywgMjQ1MTksIDI0NTI1LCAyNDU0MCwgCi0gICAgMjQ1NjQsIDI0NTgyLCAyNDYwMSwgMjQ2MTQsIDI0NjI4LCAyNDY0NiwgMjQ2NjIsIDI0Njc5LCAyNDY5NywgMjQ3MDgsIAotICAgIDI0NzI3LCAyNDc0NCwgMjQ3NjQsIDI0NzgyLCAyNDc5NCwgMjQ4MDgsIDI0ODIyLCAyNDgzNCwgMjQ4NTEsIDI0ODcwLCAKLSAgICAyNDg4OCwgMjQ5MDAsIDI0OTE4LCAyNDkzNywgMTU4NTgsIDI0OTUwLCAyNDk3MCwgMjQ5ODIsIDExNDQ4LCAyNDk5NCwgCi0gICAgMjQ5OTksIDI1MDA0LCAyNTAwOSwgMjUwMTUsIDI1MDIwLCAyNTAyNCwgMjUwMzEsIDI1MDM3LCAyNDM3LCAyNTA0MSwgCi0gICAgMjUwNDcsIDI1MDUxLCAyNTA1NCwgMjUwNTgsIDI1MDYxLCAyNTA2OSwgMjUwNzUsIDIzOTM2LCAyNTA3OSwgMjUwODgsIAotICAgIDI1MDk5LCAyNTEwNSwgMjUxMTEsIDI1MTI2LCAyNTEzNSwgMjUxNDMsIDI1MTUwLCAyNTE1NSwgMjUxNTksIDI1MTY2LCAKLSAgICAyNTE3MiwgMjUxODEsIDI1MTg5LCAyNTE5NiwgMjUyMDYsIDI1MjE1LCAyNTIyNSwgMjUyMzAsIDI1MjM5LCAyNTI0OCwgCi0gICAgMjUyNTksIDI1MjcwLCA0MTkyLCAyNTI4MCwgMjUyODQsIDI1Mjk0LCAyNTMwMiwgMjUzMTIsIDI1MzIzLCAyNTMyOCwgCi0gICAgMjUzMzgsIDI1MzQ2LCAyNTM1MywgMjUzNTksIDI1MzY2LCAyNTM3MSwgMjM5NDYsIDI1Mzc1LCAyNTM4NCwgMjUzODgsIAotICAgIDI1MzkxLCAyNTM5NiwgMjU0MDQsIDI1NDExLCAyNTQyMCwgMjU0MjgsIDI1NDM2LCAyNTQ0NCwgMjU0NTQsIDI1NDYzLCAKLSAgICAyNTQ2OSwgMjU0NzUsIDI1NDc5LCAyMzk1MSwgMjM5NTYsIDI1NDgzLCAyNTQ5MywgMjU1MDMsIDI1NTEzLCAyNTUyMSwgCi0gICAgMjU1MjgsIDI1NTM4LCAyNTU0NiwgMjU1NTQsIDI1NTYwLCAyNTU2OCwgODY1LCAyNTU3NywgMTYwNjUsIDYxNSwgMjU1OTEsIAotICAgIDI1NjAwLCAyNTYwOCwgMjU2MTksIDI1NjMwLCAyNTY0MCwgMjU2NDksIDI1NjYxLCAyNTY3MCwgMjU2NzksIDI1Njg2LCAKLSAgICAyNTY5MiwgMjU3MDIsIDI1NzExLCAyNTcyMCwgMjU3MjgsIDI1NzM4LCAyNTc0NiwgMjU3NTQsIDk4OTIsIDI1NzYwLCAKLSAgICAyNTc2MywgMjU3NjcsIDI1NzcyLCAyNTc3NywgMjU3ODEsIDEwNTg4LCAyMzk2OSwgMjM5NzQsIDI1Nzg5LCAyNTc5NSwgCi0gICAgMjU4MDEsIDI1ODA2LCAyNTgxMSwgMjU4MTUsIDI1ODIzLCAyNTgyOSwgMjU4MzUsIDI1ODM5LCAzNjc1LCAyNTg0NywgCi0gICAgMjU4NTIsIDI1ODU3LCAyNTg2MSwgMjU4NjUsIDEwNzAxLCAyNTg3MiwgMjU4ODAsIDI1ODk0LCAyNTkwMSwgMjU5MDcsIAotICAgIDEwNzEwLCAxMDcxNiwgMjU5MTUsIDI1OTIzLCAyNTkzMCwgMjU5MzUsIDI1OTQwLCAyMzk3OSwgMjU5NDYsIDI1OTU3LCAKLSAgICAyNTk2MSwgMjU5NjYsIDI2NDAsIDI1OTcxLCAyNTk4MiwgMjU5ODgsIDI1OTkzLCAyNTk5NywgMjYwMDEsIDI2MDA0LCAKLSAgICAyNjAxMSwgMjYwMTgsIDI2MDI0LCAyNjAzMSwgMjYwMzcsIDI2MDQxLCAyMzk4NCwgMjYwNDYsIDI2MDUwLCAyNjA1NCwgCi0gICAgMTQzMSwgODU0NCwgMjYwNTksIDI2MDY0LCAyNjA2OSwgMjYwNzQsIDI2MDc5LCAyNjA4NCwgMjYwODksIDI2MDk0LCAKLSAgICAyNjA5OSwgMjYxMDQsIDI2MTA5LCAyNjExNCwgMjYxMTksIDI2MTI0LCAyNjEzMCwgMjYxMzUsIDI2MTQwLCAyNjE0NSwgCi0gICAgMjYxNTAsIDI2MTU1LCAyNjE2MCwgMjYxNjYsIDI2MTcxLCAyNjE3NiwgMjYxODEsIDI2MTg2LCAyNjE5MSwgMjYxOTYsIAotICAgIDI2MjAxLCAyNjIwNywgMjYyMTMsIDI2MjE4LCAyNjIyNCwgMjYyMjksIDI2MjM0LCA1LCAyNjI0MCwgMjYyNDQsIDI2MjQ4LCAKLSAgICAyNjI1MiwgMjYyNTcsIDI2MjYxLCAyNjI2NSwgMjYyNjksIDI2MjczLCAyNjI3OCwgMjYyODIsIDI2Mjg3LCAyNjI5MSwgCi0gICAgMjYyOTQsIDI2Mjk4LCAyNjMwMywgMjYzMDcsIDI2MzEyLCAyNjMxNiwgMjYzMjAsIDI2MzI0LCAyNjMyOSwgMjYzMzMsIAotICAgIDI2MzM3LCAyNjM0NywgMjYzNTIsIDI2MzU2LCAyNjM2MCwgMjYzNjUsIDI2MzcwLCAyNjM3OSwgMjYzODQsIDI2Mzg5LCAKLSAgICAyNjM5MywgMjYzOTcsIDI2NDEwLCAyNjQyMiwgMjY0MzEsIDI2NDQwLCAyNjQ0NSwgMjY0NTEsIDI2NDU2LCAyNjQ2MCwgCi0gICAgMjY0NjQsIDI2NDc0LCAyNjQ4MywgMjY0OTEsIDI2NDk3LCAyNjUwMiwgMjY1MDYsIDI2NTEzLCAyNjUyMywgMjY1MzIsIAotICAgIDI2NTQwLCAxMTc3MCwgMjY1NDgsIDI2NTU2LCAyNjU2NSwgMjY1NzQsIDI2NTgyLCAyNjU5MiwgMjY1OTcsIDI2NjAxLCAKLSAgICAyNjYwNSwgMjY2MDgsIDI2NjEwLCAyNjYxNCwgMjY2MTgsIDI2NjIzLCAyNjYyOCwgMjY2MzIsIDI2NjM2LCAyNjYzOSwgCi0gICAgMjY2NDMsIDI2NjQ2LCAyNjY1MCwgMjY2NTMsIDI2NjU2LCAyNjY2MCwgMjY2NjYsIDI2NjcwLCAyNjY3NCwgMjY2NzgsIAotICAgIDI2NjgzLCAyNjY4OCwgMjY2OTMsIDI2Njk3LCAyNjcwMCwgMjY3MDUsIDI2NzExLCAyNjcxNiwgMjY3MjIsIDI2NzI3LCAKLSAgICAyNjczMSwgMjY3MzcsIDI2NzQxLCAyNjc0NSwgMjY3NTAsIDI2NzU0LCAyNjc1OSwgMjY3NjQsIDI2NzY4LCAyNjc3MiwgCi0gICAgMjY3NzksIDI2NzgzLCAyNjc4NiwgMjY3OTAsIDI2Nzk0LCAyNjgwMCwgMjY4MDYsIDI2ODEwLCAyNjgxNCwgMjY4MTksIAotICAgIDI2ODI2LCAyNjgzMiwgMjY4MzYsIDI2ODQ1LCAyNjg0OSwgMjY4NTMsIDI2ODU2LCAyNjg2MiwgMjY4NjcsIDI2ODczLCAKLSAgICAxNDc1LCAxODA2LCAyNjg3OCwgMjY4ODMsIDI2ODg4LCAyNjg5MywgMjY4OTgsIDI2OTAzLCAyNjkwOCwgMjE3NCwgMjIyMCwgCi0gICAgMjY5MTMsIDI2OTE2LCAyNjkyMCwgMjY5MjQsIDI2OTI5LCAyNjkzMywgMTYwNzcsIDI2OTM3LCAyNjk0MiwgMjY5NDcsIAotICAgIDI2OTUxLCAyNjk1NCwgMjY5NTksIDI2OTYzLCAyNjk2OCwgMjY5NzIsIDE2MDgxLCAyNjk3NywgMjY5ODAsIDI2OTgzLCAKLSAgICAyNjk4NywgMjY5OTIsIDI2OTk2LCAyNzAwOSwgMjcwMTMsIDI3MDE2LCAyNzAyNCwgMjcwMzMsIDI3MDQwLCAyNzA0NSwgCi0gICAgMjcwNTEsIDI3MDU3LCAyNzA2NSwgMjcwNzIsIDI3MDc5LCAyNzA4MywgMjcwODcsIDI3MDkxLCAyNzA5NiwgMjcxMDEsIAotICAgIDI3MTA1LCAyNzExMywgMjcxMTgsIDI3MTMwLCAyNzE0MSwgMjcxNDYsIDI3MTUwLCAyNzE1NywgMjcxNjEsIDI3MTY2LCAKLSAgICAyNzE3MiwgMjcxNzUsIDI3MTgwLCAyNzE4NSwgMjcxODksIDI3MTkzLCAyNzE5NiwgMjcyMDIsIDgyNDgsIDIzNTAsIAotICAgIDI3MjA2LCAyNzIxMSwgMjcyMjcsIDEwMTk4LCAyNzI0NywgMjcyNTYsIDI3MjcyLCAyNzI3NiwgMjcyODMsIDI3Mjg2LCAKLSAgICAyNzI5MiwgMjczMDIsIDI3MzA4LCAyNzMxNywgMjczMzIsIDI3MzQ0LCAyNzM1NSwgMjczNjMsIDI3MzcyLCAyNzM3OCwgCi0gICAgMjczODcsIDI3Mzk3LCAyNzQwNywgMjc0MTgsIDI3NDI5LCAyNzQzOSwgMjc0NDgsIDI3NDU1LCAyNzQ2NCwgMjc0NzIsIAotICAgIDI3NDc5LCAyNzQ4NywgMjc0OTQsIDI3NTAxLCAyNzUxNCwgMjc1MjEsIDI3NTI5LCAyNzUzNiwgMjc1NDIsIDI3NTQ3LCAKLSAgICAyNzU1NiwgMjc1NjIsIDI3NTY3LCAyNzU3NSwgMjc1ODIsIDI3NTg5LCAyNTMwNCwgMjc2MDEsIDI3NjEzLCAyNzYyNywgCi0gICAgMjc2MzUsIDI3NjQyLCAyNzY1NCwgMjc2NjMsIDI3NjcyLCAyNzY4MCwgMjc2ODgsIDI3Njk2LCAyNzcwMywgMjc3MDksIAotICAgIDI3NzE4LCAyNzcyNiwgMjc3MzYsIDI3NzQ1LCAyNzc1NSwgMjc3NjQsIDI3NzczLCAyNzc4MSwgMjc3ODYsIDI3NzkwLCAKLSAgICAyNzc5MywgMjc3OTcsIDI3ODAxLCAyNzgwNSwgMjc4MDksIDI3ODEzLCAyNzgxOSwgMjc4MjUsIDI3ODMzLCAxNjEzOSwgCi0gICAgMjc4NDAsIDI3ODQ1LCAyNzg1MiwgMjc4NTgsIDI3ODY1LCAxNjE0NywgMjc4NzIsIDI3ODc1LCAyNzg4NywgMjc4OTUsIAotICAgIDI3OTAxLCAyNzkwNiwgMjc5MTAsIDI3OTIxLCAxMDY1MSwgMjc5MzEsIDI3OTM5LCAyNzk0OSwgMjc5NTgsIDI3OTY1LCAKLSAgICAyNzk3MiwgMjc5ODAsIDI3OTg0LCAxNjE1OCwgMjc5ODcsIDI3OTk0LCAyNzk5OCwgMjgwMDQsIDI4MDA3LCAyODAxNCwgCi0gICAgMjgwMjAsIDI4MDI3LCAyODAzMywgMjgwMzcsIDI4MDQyLCAyODA0NiwgMjgwNTUsIDI4MDYyLCAyODA2OCwgODMwNiwgCi0gICAgMjgwNzUsIDI4MDgzLCAyODA5MCwgMjgwOTYsIDI4MTAxLCAyODEwNywgMjgxMTMsIDI4MTIxLCAyODEyNywgMjgxMzEsIAotICAgIDI4MTM0LCAyODEzNiwgMjc3OTgsIDI4MTQ1LCAyODE1MSwgMjgxNTcsIDI4MTY3LCAyODE3MiwgMjgxNzksIDI4MTg1LCAKLSAgICAyODE5MCwgMjgxOTUsIDI4MjAwLCAyODIwNCwgMjgyMDksIDI4MjE2LCAyODIyMiwgMjgyMzEsIDI4MjM1LCAyODI0MiwgCi0gICAgMjgyNDgsIDI4MjU3LCA0Mzc4LCAyODI2MywgMjgyNjksIDI4Mjc0LCAyODI4MSwgMjgyOTIsIDI4Mjk3LCAyODMwMSwgCi0gICAgMjgzMTEsIDI4MzE3LCAyODMyMSwgMjgzMjYsIDI4MzM2LCAyODM0NSwgMjgzNDksIDI4MzU2LCAyODM2NCwgMjgzNzEsIAotICAgIDI4Mzc3LCAyODM4MiwgMjgzOTAsIDI4Mzk3LCAyODQwMiwgMjg0MDksIDI4NDIxLCAyODQzMCwgMjg0MzQsIDE0MjEyLCAKLSAgICAyODQ0MiwgMjg0NTIsIDI4NDU2LCAyNzAyMCwgMjg0NjcsIDI4NDcyLCAyODQ3NiwgMjg0ODMsIDI4NDkwLCAyMzY3MCwgCi0gICAgMjc3MjMsIDI4NDk1LCAyODQ5OSwgMjg1MDIsIDI0NzE0LCAyODUwNywgMjg1MjEsIDI4NTM3LCAyODU1NSwgMjg1NzQsIAotICAgIDI4NTkxLCAyODYwOSwgMjQ3MzMsIDI4NjI2LCAyODY0NiwgMjQ3NTAsIDI4NjU4LCAyODY3MCwgMTcxNzgsIDI4NjgyLCAKLSAgICAyNDc3MCwgMjg2OTYsIDI4NzA4LCAxMTQ2MSwgMjg3MjIsIDI4NzI3LCAyODczMiwgMjg3MzcsIDI4NzQzLCAyODc0OSwgCi0gICAgMjg3NTUsIDI4NzU5LCAyODc2NywgMjg3NzQsIDI4Nzc5LCAyODc4OSwgMjg3OTUsIDExMDU5LCAyODgwMSwgMjg4MDMsIAotICAgIDI4ODA4LCAyODgxNiwgMjg4MjAsIDI4MjEyLCAyODgyNiwgMjg4MzMsIDEyNjAxLCAxMjYxMSwgMjg4NDAsIDI4ODUwLCAKLSAgICAyODg1NSwgMjg4NTksIDI4ODYyLCAyODg2OCwgMjg4NzYsIDI4ODg4LCAyODg5OCwgMjg5MTQsIDI4OTI3LCAyODk0MSwgCi0gICAgMTcxOTYsIDI4OTU1LCAyODk2MiwgMjg5NjYsIDI4OTY5LCAyODk3NCwgMjg5NzgsIDI4OTg1LCAyODk5MiwgMjg5OTksIAotICAgIDI5MDA5LCAyOTAxNCwgMjkwMTksIDI5MDI0LCAyOTAzMiwgMjkwNDAsIDI5MDQ1LCAyOTA1NCwgMjkwNTksIDMzNTMsIAotICAgIDI5MDYzLCAyOTA2NiwgMjkwNjksIDI5MDc0LCAyOTA4MSwgMjkwODYsIDI5MTAyLCAyOTExMCwgMjkxMTgsIDk5NjYsIAotICAgIDI5MTI2LCAyOTEzMSwgMjkxMzUsIDI5MTQxLCAyOTE0NiwgMjkxNTIsIDI5MTU1LCAyOTE2MSwgMjkxNzMsIDI5MTgxLCAKLSAgICAyOTE4OCwgMjkxOTQsIDI5MjAxLCAyOTIxMiwgMjkyMjYsIDI5MjM5LCAyOTI0NSwgMjkyNTQsIDI5MjYwLCAyOTI2OSwgCi0gICAgMjkyODEsIDI5MjkyLCAyOTMwMiwgMjkzMTEsIDI5MzIwLCAyOTMyOCwgMjkzMzksIDgyODgsIDI5MzQ2LCAyOTM1MywgCi0gICAgMjkzNTksIDI5MzY0LCAyOTM3MCwgMjkzNzcsIDI5Mzg3LCAyOTM5NywgMjk0MDYsIDI5NDEyLCAyOTQxOSwgMjk0MjQsIAotICAgIDI5NDMyLCAyOTQzOSwgMjk0NDcsIDI5NDU1LCAyOTQ2NywgNjU2MywgOTk1LCAyOTQ3NCwgMjk0ODMsIDI5NDkxLCAyOTQ5NywgCi0gICAgMjk1MDMsIDI5NTA4LCAyOTUxMiwgMjk1MTUsIDI5NTIxLCAyOTUyOCwgMjk1MzMsIDI5NTM4LCAyOTU0MywgMjk1NDcsIAotICAgIDI5NTU5LCAyOTU3MCwgMjk1NzksIDI5NTg3LCAxNjMyMywgMjk1OTIsIDI5NTk3LCAyOTYwMywgMjk2MDksIDEyNTk0LCAKLSAgICA5MDU4LCAyOTYxNCwgMjk2MTgsIDI5NjIyLCAyOTYyNSwgMjk2MjgsIDI5NjM0LCAyOTY0MiwgMjk2NTAsIDI5NjU0LCAKLSAgICAyOTY1OCwgMjk2NjMsIDI5NjY2LCAyOTY3NSwgMjk2NzksIDI5NjgyLCAyOTY5MCwgMjk3MDEsIDI5NzA1LCAyOTcxMSwgCi0gICAgMjk3MTcsIDI5NzIxLCAyOTcyNywgMjk3MzUsIDI5NzU3LCAyOTc4MSwgMjk3OTAsIDI5Nzk3LCAyOTgwNCwgMjk4MTAsIAotICAgIDI5ODE4LCAyOTgyNCwgMjk4MjksIDI5ODQwLCAyOTg1OCwgMjk4NjUsIDI5ODczLCAyOTg3NywgMjk4ODIsIDI5ODkxLCAKLSAgICAyOTkwNCwgMjk5MTIsIDI5OTI0LCAyOTkzNSwgMjk5NDYsIDI5OTU2LCAyOTk3MCwgMjk5NzksIDI5OTg3LCAyOTk5OSwgCi0gICAgMTAyMTUsIDMwMDEwLCAzMDAyMSwgMzAwMzMsIDMwMDQzLCAzMDA1MiwgMzAwNTcsIDMwMDYxLCAzMDA2OSwgMzAwODAsIAotICAgIDMwMDkwLCAzMDA5NSwgMzAwOTksIDMwMTAyLCAzMDEwNSwgMzAxMTMsIDMwMTIxLCAzMDEzMCwgMzAxNDAsIDMwMTQ5LCAKLSAgICAzMDE1NSwgMzAxNjksIDI3MDIsIDMwMTkxLCAzMDIwMiwgMzAyMTEsIDMwMjIxLCAzMDIzMywgMzAyNDIsIDMwMjUxLCAKLSAgICAzMDI2MSwgMzAyNjksIDMwMjc3LCAzMDI4NiwgMzAyOTEsIDMwMzAyLCAzMDMwNywgMzAzMTgsIDMwMzIyLCAzMDMzMiwgCi0gICAgMzAzNDEsIDMwMzQ5LCAzMDM1OSwgMzAzNjksIDMwMzc3LCAzMDM4NiwgMzAzOTMsIDMwNDAxLCAzMDQwOCwgMzA0MTcsIAotICAgIDMwNDI2LCAzMDQzMCwgMzA0MzgsIDMwNDQ1LCAzMDQ1MywgMzA0NjAsIDMwNDcxLCAzMDQ4NiwgMzA0OTMsIDMwNDk5LCAKLSAgICAzMDUwOSwgMzA1MTgsIDMwNTI0LCAzMDUzNSwgMzA1MzksIDMwNTQ2LCAzMDU1MCwgMzA1NTYsIDE1MjY1LCAzMDU2MiwgCi0gICAgMzA1NjYsIDMwNTcxLCAzMDU3NywgMzA1ODQsIDMwNTg4LCAzMDU5MiwgMzA2MDAsIDMwNjA4LCAzMDYxNCwgMzA2MjMsIAotICAgIDMwNjMwLCAzMDYzNSwgMzA2NDAsIDMwNjUwLCAyNTM3MywgMzA2NTQsIDMwNjU3LCAzMDY2MiwgMzA2NjcsIDMwNjcyLCAKLSAgICAzMDY3NywgMzA2ODIsIDMwNjg3LCAzMDY5MiwgMzA2OTcsIDMwNzAzLCAzMDcwOCwgMzA3MTMsIDMwNzE5LCAxMTk5LCA2NjAsIAotICAgIDMwNzI0LCAzMDczMywgMjM5OCwgMzA3NDAsIDMwNzQ1LCAzMDc0OSwgMzA3NTUsIDEyNDgsIDU3OCwgMjkwLCAzMDc2MCwgCi0gICAgMzA3NjksIDMwNzc3LCAzMDc4NiwgMzA3OTQsIDMwODA1LCAzMDgxMywgMzA4MjIsIDMwODMwLCAzMDgzNSwgMTA3OTcsIAotICAgIDMwODM5LCAzMDg0NywgMzA4NTUsIDMwODYwLCAxNjA5NCwgMzgyNCwgMzA4NjYsIDMwODcyLCAzMDg3OCwgNjE0OCwgCi0gICAgMzA4ODMsIDMwODg3LCAzMDg5MywgMzA4OTcsIDMwOTAzLCAzMDkwOCwgMzA5MTUsIDE0NDEsIDMwOTIxLCAzMDkyOCwgCi0gICAgMTM0OCwgNjE1NiwgMzA5MzIsIDMwOTQyLCAzMDk1MCwgMzA5NTYsIDMwOTY2LCAzMDk3NSwgMzA5ODMsIDMwOTg5LCAKLSAgICAzMDk5NywgMzEwMDQsIDEyMTM2LCAzMTAxMCwgMzEwMTcsIDMxMDIyLCAzMTAyOSwgMTQ5NCwgMjE5LCAyMTczLCAzMTAzNSwgCi0gICAgMzEwNDEsIDMxMDQ4LCAzMTA1OSwgMzEwNzAsIDMxMDc4LCAzMTA4NSwgMzEwOTUsIDMxMTA0LCAzMTExMiwgMzExMjEsIAotICAgIDMxMTI4LCAzMTEzNSwgMzExNDgsIDMxMTU1LCAzMTE2MSwgMzExNzIsIDMxMTkxLCAxMjUzLCAzMTE5NiwgMzEyMDEsIAotICAgIDMxMjA5LCAzNzQyLCAzMTIxMywgMzEyMTgsIDMxMjIyLCAzMTIyNiwgMTQ0NSwgMjY2MzcsIDMxMjM2LCAzMTI0MCwgCi0gICAgMzEyNDUsIDMxMjQ5LCAzNjE5LCAzMTI1NSwgMzEyNjMsIDMxMjcwLCAzMTI4MSwgMzEyODksIDMxMjk3LCAzNzQzLCAzNDYsIAotICAgIDMxMzAyLCAzMTMxMCwgMzEzMTgsIDMxMzI1LCAzMTMzMSwgMzEzMzYsIDIyNDIsIDExNjI4LCAzMTM0MywgMzEzNDksIAotICAgIDI4MDM4LCAyODI4NywgMzEzNTUsIDU3NCwgMTA2LCAzMTM1OSwgMzEzNjMsIDMxMzY5LCA2NjMsIDk4NDEsIDMxMzc0LCAKLSAgICAzMTM4MSwgMzEzODcsIDMxMzkxLCAxNjM5LCAzMTM5NCwgMzEzOTgsIDE2NTc2LCAzMTQwMSwgMzE0MDYsIDMxNDEzLCAKLSAgICAzMTQxOSwgMzE0MjQsIDMxNDMyLCAzMTQzOSwgMzE0NDUsIDI0MTMyLCAzMTQ0OSwgMzE0NTMsIDMxNDU3LCAzODEzLCAKLSAgICAxODE4MCwgMzE0NjEsIDMxNDY2LCAzMTQ3MCwgMzE0NzMsIDMxNDgxLCAzMTQ4OSwgMzE0OTQsIDMxNTAyLCAzMTUwNSwgCi0gICAgMzE1MTIsIDMxNTIyLCAzMTUzNCwgMzE1MzksIDMxNTQzLCAzMTU1MSwgMzE1NTgsIDMxNTY0LCAzMTU3MSwgMzE1NzgsIAotICAgIDMxNTgxLCAzMTU4NSwgMzE1ODksIDE0NDksIDMxNTk5LCAzMTYwMSwgMzE2MDYsIDMxNjEyLCAzMTYxOCwgMzE2MjMsIAotICAgIDMxNjI4LCAzMTYzMywgMzE2MzgsIDMxNjQzLCAzMTY0OCwgMzE2NTMsIDMxNjU4LCAzMTY2MywgMzE2NjgsIDMxNjczLCAKLSAgICAzMTY3OCwgMzE2ODMsIDMxNjg4LCAzMTY5NCwgMzE3MDAsIDMxNzA2LCAzMTcxMiwgMzE3MTcsIDMxNzIyLCAzMTcyNywgCi0gICAgMzE3MzMsIDMxNzM4LCAzMTc0MywgMzE3NDgsIDMxNzU0LCAzMTc1OSwgMzE3NjUsIDMxNzcwLCAzMTc3NSwgMzE3ODAsIAotICAgIDMxNzg1LCAzMTc5MSwgMzE3OTYsIDMxODAyLCAzMTgwNywgMzE4MTIsIDMxODE3LCAzMTgyMiwgMzE4MjgsIDMxODMzLCAKLSAgICAzMTgzOSwgMzE4NDQsIDMxODQ5LCAzMTg1NCwgMzE4NTksIDMxODY0LCAzMTg2OSwgMzE4NzQsIDMxODc5LCAzMTg4NCwgCi0gICAgMzE4OTAsIDMxODk2LCAzMTkwMiwgMzE5MDcsIDMxOTEyLCAzMTkxNywgMzE5MjIsIDMxOTI4LCAzMTkzNCwgMzE5NDAsIAotICAgIDMxOTQ2LCAzMTk1MiwgMzE5NTgsIDMxOTYzLCAzMTk2OSwgMzE5NzQsIDMxOTc5LCAzMTk4NCwgMzE5ODksIDMxOTk1LCAKLSAgICAyNDgyLCAzMjAwMCwgMjQ4OSwgMjQ5NiwgMjc5MywgMzIwMDUsIDI1MDIsIDI1MTIsIDMyMDExLCAzMjAxNSwgMzIwMjAsIAotICAgIDMyMDI1LCAzMjAzMSwgMzIwMzYsIDMyMDQxLCAzMjA0NSwgMzIwNTAsIDMyMDU2LCAzMjA2MSwgMzIwNjYsIDMyMDcxLCAKLSAgICAzMjA3NywgMzIwODIsIDMyMDg2LCAzMjA5MCwgMzIwOTUsIDMyMTAwLCAzMjEwNSwgMzIxMTAsIDMyMTE1LCAzMjEyMSwgCi0gICAgMzIxMjcsIDMyMTMyLCAzMjEzNiwgMzIxNDEsIDMyMTQ3LCAzMjE1MSwgMzIxNTYsIDMyMTYxLCAzMjE2NiwgMzIxNzEsIAotICAgIDMyMTc1LCAzMjE3OCwgMzIxODMsIDMyMTg4LCAzMjE5MywgMzIxOTgsIDMyMjAzLCAzMjIwOSwgMzIyMTUsIDMyMjIwLCAKLSAgICAzMjIyNSwgMzIyMzAsIDMyMjM0LCAzMjIzOSwgMzIyNDQsIDMyMjQ5LCAzMjI1NCwgMzIyNTksIDMyMjY0LCAzMjI2OCwgCi0gICAgMzIyNzMsIDMyMjc4LCAzMjI4MywgMzIyODcsIDMyMjkxLCAzMjI5NSwgMzIzMDAsIDMyMzA4LCAzMjMxMywgMzIzMTgsIAotICAgIDMyMzI0LCAzMjMzMCwgMzIzMzYsIDMyMzQxLCAzMjM0NSwgMzIzNDgsIDMyMzUzLCAzMjM1OCwgMzIzNjIsIDMyMzY3LCAKLSAgICAzMjM3MiwgMzIzNzYsIDMyMzgxLCAzMjM4NSwgMzIzODgsIDMyMzkzLCAzOTE0LCAxODkwNiwgMzIzOTgsIDMyNDAzLCAKLSAgICAzMjQwOCwgMzI0MTYsIDIyOTU5LCAzMDkyNSwgOTUxOCwgMzI0MjEsIDMyNDI2LCAzMjQzMCwgMzI0MzUsIDMyNDM5LCAKLSAgICAzMjQ0MywgMzI0NDgsIDMyNDUyLCAzMjQ1NSwgMzI0NTgsIDMyNDYyLCAzMjQ2NywgMzI0NzEsIDMyNDc5LCAzMjQ4MywgCi0gICAgMzI0ODYsIDMyNDkxLCAzMjQ5NSwgMzI0OTksIDMyNTA0LCAzMjUwOSwgMzI1MTMsIDMyNTE5LCAzMjUyNCwgMzI1MjksIAotICAgIDMyNTM2LCAzMjU0MywgMzI1NDcsIDMyNTUwLCAzMjU1NiwgMzI1NjUsIDMyNTcyLCAzMjU4MCwgMzI1ODcsIDMyNTkxLCAKLSAgICAzMjU5NiwgMzI2MDAsIDMyNjA0LCAzMjYxMCwgMzI2MTYsIDMyNjIwLCAzMjYyNiwgMzI2MzEsIDMyNjM2LCAzMjY0MCwgCi0gICAgMzI2NDcsIDMyNjUzLCAzMjY1OSwgMzI2NjUsIDMyNjcxLCAzMjY3OCwgMzI2ODQsIDMyNjkwLCAzMjY5NiwgMzI3MDIsIAotICAgIDMyNzA4LCAzMjcxNCwgMzI3MjAsIDMyNzI3LCAzMjczMywgMzI3NDAsIDMyNzQ2LCAzMjc1MiwgMzI3NTgsIDMyNzY0LCAKLSAgICAzMjc3MCwgMzI3NzYsIDMyNzgyLCAzMjc4OCwgMzI3OTQsIDEyNDc5LCAzMjgwMCwgMzI4MDYsIDMyODExLCAzMjgxNiwgCi0gICAgMzI4MjEsIDMyODI0LCAzMjgzMCwgMzI4MzgsIDMyODQzLCAzMjg0NywgMzI4NTIsIDMyODU4LCAzMjg2NywgMzI4NzMsIAotICAgIDMyODc4LCAzMjg4MywgMzI4ODgsIDMyODkyLCAzMjg5NywgMzI5MDIsIDMyOTA3LCAzMjkxMiwgMzI5MTcsIDMyOTI0LCAKLSAgICAzMjkzMSwgMzI5MzcsIDMyOTQzLCAzMjk0OCwgMTc4MjIsIDMyOTU1LCAzMjk2MSwgMzI5NjgsIDMyOTc0LCAzMjk4MCwgCi0gICAgMzI5ODUsIDMyOTkzLCAzMjk5OCwgMTAzNzIsIDMzMDAyLCAzMzAwNywgMzMwMTIsIDMzMDE4LCAzMzAyMywgMzMwMjgsIAotICAgIDMzMDMyLCAzMzAzNywgMzMwNDIsIDMzMDQ4LCAzMzA1MywgMzMwNTgsIDMzMDYzLCAzMzA2NywgMzMwNzIsIDMzMDc3LCAKLSAgICAzMzA4MSwgMzMwODYsIDMzMDkxLCAzMzA5NSwgMzMxMDAsIDMzMTA0LCAzMzEwOSwgMzMxMTQsIDMzMTE5LCAzMzEyMywgCi0gICAgMzMxMjgsIDMzMTMyLCAzMzEzNiwgMTY2ODIsIDMzMTQxLCAzMzE1MCwgMzMxNTYsIDMzMTYyLCAzMzE3MSwgMzMxNzksIAotICAgIDMzMTg4LCAzMzE5NiwgMzMyMDEsIDMzMjA1LCAzMzIxMiwgMzMyMTgsIDMzMjI2LCAzMzIzMCwgMzMyMzMsIDMzMjM4LCAKLSAgICAzMzI0MiwgMzMyNTEsIDMzMjU5LCAzMzI3NywgMzMyODMsIDE0OTMsIDMzMjg5LCAzMzI5MiwgMzMyOTYsIDI0MjM4LCAKLSAgICAyNDI0NCwgMzMzMDIsIDMzMzA2LCAzMzMxNywgMzMzMjgsIDMzMzM5LCAzMzM1MSwgMzMzNTUsIDMzMzYyLCAzMzM2OSwgCi0gICAgMzMzNzQsIDMzMzc4LCA2MjA0LCA5MjgsIDIyOTU4LCAzMzM4NiwgMzMzOTEsIDMzMzk1LCAzMzQwMCwgMzM0MDQsIDMzNDEwLCAKLSAgICAzMzQxNSwgMzM0MjEsIDMzNDI2LCAzMzQzMiwgMzM0MzcsIDMzNDQzLCAzMzQ0OCwgMzM0NTQsIDMzNDYwLCAzMzQ2NiwgCi0gICAgMzM0NzEsIDMzNDI3LCAzMzQzMywgMzM0NzUsIDMzNDgwLCAzMzQ4NiwgMzM0OTEsIDMzNDk3LCAzMzUwMiwgMzM1MDgsIAotICAgIDMzNTEzLCAzMzQzOCwgMTEzMTQsIDMzNTE3LCAzMzQ0OSwgMzM0NTUsIDMzNDYxLCAyODg1LCAzNTMzLCAzMzUyMywgCi0gICAgMzM1MjYsIDMzNTMxLCAzMzUzNywgMzM1NDMsIDMzNTQ5LCAzMzU1NiwgMzM1NjIsIDMzNTY4LCAzMzU3NCwgMzM1ODAsIAotICAgIDMzNTg2LCAzMzU5MiwgMzM1OTgsIDMzNjA0LCAzMzYxMCwgMzM2MTYsIDMzNjIyLCAzMzYyOCwgMzM2MzUsIDMzNjQxLCAKLSAgICAzMzY0NywgMzM2NTMsIDMzNjU5LCAzMzY2NSwgMzM2NjgsIDMzNjczLCAzMzY3NiwgMzM2ODMsIDMzNjg4LCAzMzY5NiwgCi0gICAgMzM3MDEsIDMzNzA2LCAzMzcxMiwgMzM3MTcsIDMzNzIyLCAzMzcyNiwgMzM3MzEsIDMzNzM3LCAzMzc0MiwgMzM3NDgsIAotICAgIDMzNzUzLCAzMzc1OSwgMzM3NjQsIDMzNzcwLCAzMzc3NiwgMzM3ODAsIDMzNzg1LCAzMzc5MCwgMzM3OTUsIDMzODAwLCAKLSAgICAzMzgwNCwgMzM4MDksIDMzODE0LCAzMzgxOSwgMzM4MjUsIDMzODMxLCAzMzgzNywgMzM4NDMsIDMzODQ4LCAzMzg1MiwgCi0gICAgMzM4NTUsIDMzODYxLCAzMzg2NywgMzM4NzYsIDMzODg0LCAzMzg5MSwgMzM4OTYsIDMzOTAwLCAzMzkwNCwgMzM5MDksIAotICAgIDE2NTMwLCAzMzkxNCwgMzM5MjIsIDMzOTI4LCAzODY2LCAxMzU4LCAzMzkzMywgMzM5MzcsIDgzNTksIDMzOTQzLCAzMzk0OSwgCi0gICAgMzM5NTYsIDgzNjgsIDMzOTYwLCAzMzk2NiwgMzM5NzMsIDMzOTc5LCAzMzk4OCwgMzM5OTYsIDkyNDQsIDM0MDA4LCAKLSAgICAzNDAxMiwgMzQwMTksIDM0MDI1LCAzNDAzMCwgMzQwMzQsIDM0MDM4LCAzNDA0MSwgMzQwNTEsIDM0MDYwLCAzNDA2OCwgCi0gICAgMzM0MjgsIDM0MDczLCAzNDA4MywgMzQwOTMsIDM0MTAzLCAzNDEwOSwgMzQxMTQsIDM0MTI0LCAzNDEyOSwgMzQxNDIsIAotICAgIDM0MTU2LCAzNDE2NywgMzQxNzksIDM0MTkxLCAzNDIwNSwgMzQyMTgsIDM0MjMwLCAzNDI0MiwgMTU4OTksIDM0MjU2LCAKLSAgICAzNDI2MSwgMzQyNjYsIDM0MjcwLCAzNDI3NCwgMzQyNzgsIDE3OTUsIDI5MjkwLCAzNDI4MiwgMzQyODcsIDMzNDc2LCAKLSAgICAzNDI5MiwgMzQyOTUsIDM0MzAwLCAzNDMwNSwgMzQzMTAsIDM0MzE2LCAzNDMyMiwgMTA5NzQsIDM0MzI3LCAzNDMzMywgCi0gICAgMzQzNDAsIDE3MTMwLCAzNDM0NiwgMzQzNTEsIDM0MzU2LCAzNDM2MCwgMzQzNjUsIDM0MzcwLCAzMzQ4MSwgMzQzNzUsIAotICAgIDM0MzgwLCAzNDM4NSwgMzQzOTEsIDMzNDg3LCAzNDM5NiwgMzQzOTksIDM0NDA2LCAzNDQxNCwgMzQ0MjAsIDM0NDI2LCAKLSAgICAzNDQzMiwgMzQ0NDMsIDM0NDQ4LCAzNDQ1NSwgMzQ0NjIsIDM0NDY5LCAzNDQ3NywgMzQ0ODYsIDM0NDk1LCAzNDUwMSwgCi0gICAgMzQ1MDcsIDM0NTE1LCAzMzQ5MiwgMzQ1MjAsIDM0NTI2LCAzNDUzMiwgMzM0OTgsIDM0NTM3LCAzNDU0MiwgMzQ1NTAsIAotICAgIDM0NTU4LCAzNDU2NCwgMzQ1NzEsIDM0NTc3LCAzNDU4NCwgMzQ1OTEsIDM0NTk3LCAzNDYwNSwgMzQ2MTUsIDM0NjIyLCAKLSAgICAzNDYyOCwgMzQ2MzMsIDM0NjM5LCAzNDY0NCwgMzQ2NDksIDM0NjU2LCAzNDY2NSwgMzQ2NzMsIDM0Njc4LCAzNDY4NCwgCi0gICAgMzQ2OTEsIDM0Njk5LCAzNDcwNSwgMzQ3MTAsIDM0NzE2LCAzNDcyNSwgMzQ3MzIsIDMwMTM1LCAzNDczOCwgMzQ3NDIsIAotICAgIDM0NzQ3LCAzNDc1NiwgMzQ3NjEsIDM0NzY2LCAzNDc3MSwgMTM1NDgsIDM0Nzc5LCAzNDc4NCwgMzQ3ODksIDM0Nzk0LCAKLSAgICAzNDc5OCwgMzQ4MDMsIDM0ODA4LCAzNDgxNSwgMzQ4MjAsIDM0ODI1LCAzNDgzMCwgMzM1MDMsIDIyODk1LCAzNDgzNiwgCi0gICAgMjU1OCwgMTQ0LCAzNDgzOSwgMzQ4NDIsIDM0ODQ2LCAzNDg1MCwgMzQ4NjAsIDM0ODY4LCAzNDg3NSwgMzQ4NzksIDM0ODgyLCAKLSAgICAzNDg5MCwgMzQ4OTcsIDM0OTA0LCAzNDkxMywgMzQ5MTcsIDM0OTIwLCAzNDkyNiwgMzQ5MzAsIDM0OTM4LCAzNDk0NiwgCi0gICAgMzQ5NTAsIDM0OTU0LCAzNDk1NywgMzQ5NjMsIDM0OTcwLCAzNDk3NCwgMzQ5NzgsIDM0OTg1LCAzNDk5MywgMzM0MzksIAotICAgIDM1MDAwLCAzNTAwOCwgMzUwMTMsIDExMDM0LCA2MjMsIDM2OSwgMzUwMjUsIDM1MDMwLCAzNTAzNSwgMzUwNDEsIDM1MDQ2LCAKLSAgICAzNTA1MSwgMzg4NywgMzUwNTYsIDM1MDU5LCAzNTA2NCwgMzUwNjksIDM1MDc0LCAzNTA3OSwgMzUwODQsIDM1MDkxLCAKLSAgICAyNDM1NiwgMzUwOTYsIDM1MTAxLCAzNTEwNiwgMzUxMTEsIDM1MTE2LCAzNTEyMiwgMzUxMjcsIDM1MTMzLCAzMzY3OSwgCi0gICAgMzUxMzksIDM1MTQ0LCAzNTE1MCwgMzUxNTYsIDM1MTY2LCAzNTE3MSwgMzUxNzYsIDM1MTgwLCAzNTE4NSwgMzUxOTAsIAotICAgIDM1MTk1LCAzNTIwMCwgMzUyMTMsIDM1MjE4LCAyNDAxOSwgMTgyNTUsIDM5MDAsIDM1MjIyLCAzNTIyOCwgMzUyMzMsIAotICAgIDM1MjM4LCAzNTI0NCwgMzUyNDksIDM1MjU0LCAzNTI1OCwgMzUyNjMsIDM1MjY4LCAzNTI3NCwgMzUyNzksIDM1Mjg0LCAKLSAgICAxMzYzLCAzNTI4OCwgMzUyOTMsIDM1Mjk4LCAzNTMwMywgMzUzMDcsIDM1MzEyLCAzNTMxNywgMzUzMjIsIDM1MzI4LCAKLSAgICAzNTMzNCwgMzUzMzksIDM1MzQzLCAzNTM0NywgMzUzNTIsIDM1MzU3LCAzNTM2MiwgMzUzNjYsIDM1Mzc0LCAzNTM3OCwgCi0gICAgMzUzODQsIDM1Mzg4LCAzNTM5NSwgMTgwMzksIDMzNDUwLCAzNTQwMSwgMzU0MDgsIDM1NDE2LCAzNTQyMywgMzU0MjksIAotICAgIDM1NDQyLCAzNTQ1NCwgMzU0NTksIDM1NDY1LCAzNTQ2OSwgMjgxMiwgMzU0NzMsIDM1NDc3LCAzNDk2NSwgMzU0ODYsIAotICAgIDM1NDk3LCAzNTUwMiwgMzAxOTgsIDM1NTA3LCAzNTUxMiwgMzU1MTYsIDM1NTIxLCAyNDI0OSwgMzU1MjUsIDM1NTI5LCAKLSAgICAzNTUzNCwgMzM0NTYsIDIyOTg1LCAzNTUzOCwgMzU1NDMsIDM1NTQ5LCAzNTU1NCwgMzU1NTgsIDM1NTYyLCAzNTU2NSwgCi0gICAgMzU1NjksIDM1NTc1LCAzNTU4NCwgMzU1OTUsIDM1NjA3LCAzMzQ2MiwgMzU2MTIsIDM1NjE1LCAzNTYxOSwgMzU2MjMsIAotICAgIDQwNiwgMzU2MjgsIDM1NjMzLCAzNTYzOCwgMzU2NDMsIDM1NjQ4LCAzNTY1MywgMzU2NTksIDM1NjY0LCAzNTY2OSwgCi0gICAgMzU2NzUsIDM1NjgwLCAzNTY4NiwgMzU2OTEsIDM1Njk3LCAzNTcwMiwgMzU3MDcsIDM1NzEyLCAzNTcxNywgMzU3MjIsIAotICAgIDM1NzI3LCAzNTczMiwgMzU3MzcsIDM1NzQzLCAzNTc0OCwgMzU3NTMsIDM1NzU4LCAzNTc2MywgMzU3NjgsIDM1NzczLCAKLSAgICAzNTc3OCwgMzU3ODQsIDM1NzkwLCAzNTc5NSwgMzU4MDAsIDM1ODA1LCAzNTgxMCwgMzU4MTUsIDM1ODIwLCAzNTgyNSwgCi0gICAgMzU4MzAsIDM1ODM1LCAzNTg0MCwgMzU4NDUsIDM1ODUwLCAzNTg1NSwgMzU4NjAsIDM1ODY1LCAzNTg3MCwgMzU4NzUsIAotICAgIDM1ODgwLCAzNTg4NiwgMzI1LCA5LCAzNTg5MSwgMzU4OTUsIDM1ODk5LCAzNTkwNywgMzU5MTEsIDM1OTE1LCAzNTkxOCwgCi0gICAgMzU5MjEsIDM1OTIzLCAzNTkyOCwgMzU5MzIsIDM1OTM3LCAzNTk0MSwgMzU5NDYsIDM1OTUwLCAzNTk1NSwgMzU5NTksIAotICAgIDM1OTYyLCAzNTk2NCwgMzU5NjgsIDM1OTczLCAzNTk3NywgMzU5ODgsIDM1OTkxLCAzNTk5MywgMzU5OTcsIDM2MDA5LCAKLSAgICAzNjAxOCwgMzYwMjIsIDM2MDI2LCAzNjAzMiwgMzYwMzcsIDM2MDQ2LCAzNjA1MiwgMzYwNTcsIDM2MDYyLCAzNjA2NiwgCi0gICAgMzYwNzAsIDM2MDc1LCAzNjA4MiwgMzYwODcsIDM2MDkzLCAzNjA5OCwgMzYxMDIsIDM2MTA5LCAyNzczMSwgMjc3NDEsIAotICAgIDM2MTEzLCAzNjExOCwgMzYxMjMsIDM2MTI4LCAzNjEzNSwgMzYxMzksIDM2MTQ2LCAzNjE1MiwgODQ5MSwgMzYxNTYsIAotICAgIDM2MTY1LCAzNjE3MywgMzYxODgsIDM2MjAyLCAzNjIxMSwgMzYyMTksIDM2MjMwLCAzNjIzOSwgMzYyNDQsIDM2MjUxLCAKLSAgICA3NTU2LCAzNjI2MSwgMzYyNjYsIDM2MjcxLCAzNjI3NSwgMzYyNzgsIDM2MjgzLCAzNjI4NywgMzYyOTIsIDM2Mjk2LCAKLSAgICAzNjMwMywgMzYzMDgsIDM2MzEzLCAzNjMxOCwgOTM5MSwgMzYzMjgsIDM2MzMwLCAzNjMzMywgMzYzMzYsIDM2MzQwLCAKLSAgICAzNjM0NiwgMzYzNTAsIDM2MzU1LCAzNjM2MCwgMzYzNzgsIDM2MzkyLCAzNjQxMSwgMzY0MjgsIDM2NDM3LCAzNjQ0NSwgCi0gICAgMzY0NTAsIDM2NDU1LCAxNDg2LCAzNjQ2MSwgMzY0NjcsIDM2NDcyLCAzNjQ4MiwgMzY0OTEsIDM2NDk5LCAzNjUwNCwgCi0gICAgMzY1MTAsIDM2NTE1LCAzNjUyNCwgMzY1MzUsIDM2NTQwLCAzNjU0NywgMzY1NTEsIDM2NTU4LCAzNjU2NiwgMzY1NzMsIAotICAgIDM2NTg2LCAzNjU5NCwgMzY1OTgsIDM2NjA4LCAzNjYxMywgMzY2MTcsIDM2NjI1LCAzNjYzMywgMzY2MzgsIDM2NjQyLCAKLSAgICAzNjY0NiwgMzY2NTUsIDM2NjYxLCAzNjY2NiwgMzY2NzQsIDM2Njg0LCAzNjY5MywgMzY3MDIsIDM2NzExLCAzNjcyMiwgCi0gICAgMzY3MzAsIDM2NzQxLCAzNjc1MCwgMzY3NTcsIDM2NzYzLCAzNjc2OCwgMzY3NzksIDM2NzkwLCAzNjc5NSwgMzY3OTksIAotICAgIDM2ODAyLCAzNjgwNiwgMzY4MTQsIDM2ODIwLCAzNjgzMSwgMzY4NDIsIDM2ODUzLCAzNjg2NCwgMzY4NzUsIDM2ODg2LCAKLSAgICAzNjg5NywgMzY5MDgsIDM2OTIwLCAzNjkzMiwgMzY5NDQsIDM2OTU2LCAzNjk2OCwgMzY5ODAsIDM2OTkyLCAzNjk5NiwgCi0gICAgMzcwMDQsIDM3MDEwLCAzNzAxNywgMzcwMjMsIDM3MDI4LCAzNzAzNCwgMjQ1NywgMzcwMzgsIDM3MDQwLCAzNzA0NSwgCi0gICAgMzcwNTAsIDM3MDU1LCAzNzA1OCwgMzcwNjAsIDM3MDY0LCAzNzA2NywgMzcwNzQsIDM3MDc4LCAxMDY2NCwgMzcwODIsIAotICAgIDM3MDg4LCAzNzA5OCwgMzcxMDMsIDM3MTA5LCAzNzExMywgMzcxMTgsIDM3MTMxLCAyODE2MiwgMzcxMzcsIDM3MTQ2LCAKLSAgICAzNzE1NSwgMTkxMDQsIDM3MTYyLCAzNzE3MSwgMzQwODksIDM3MTc5LCAzNzE4NCwgMzcxODgsIDM3MTk3LCAzNzIwNSwgCi0gICAgMzcyMTIsIDM3MjE3LCAzNzIyMSwgMzcyMjYsIDM3MjM0LCAzNzIzOCwgMzcyNDYsIDM3MjUyLCAzNzI1OCwgMzcyNjMsIAotICAgIDM3MjY3LCAzNzI3MCwgMzcyNzUsIDM3Mjg4LCAzNzMwNCwgMjQ4NDAsIDM3MzIxLCAzNzMzMywgMzczNTAsIDM3MzYyLCAKLSAgICAzNzM3NiwgMjQ4NTcsIDI0ODc2LCAzNzM4OCwgMzc0MDAsIDI3MTksIDM3NDE0LCAzNzQxOSwgMzc0MjQsIDM3NDI5LCAKLSAgICAzNzQzMywgMzc0NDAsIDM3NDUyLCAzNzQ1OSwgMzc0NjgsIDM3NDcxLCAzNzQ4MiwgMzc0OTMsIDM3NDk4LCAzNDUxMiwgCi0gICAgODUyLCAzNzUwMiwgMzc1MDYsIDM3NTEwLCAzNzUxMywgMzc1MTgsIDM3NTIzLCAzNzUyOSwgMzc1MzQsIDM3NTM5LCAKLSAgICAzNzU0NSwgMzc1NTEsIDM3NTU2LCAzNzU2MCwgMzc1NjUsIDM3NTcwLCAzNzU3NSwgMzc1NzksIDM3NTgyLCAzNzU4OCwgCi0gICAgMzc1OTMsIDM3NTk4LCAzNzYwMywgMzc2MDcsIDM3NjEyLCAzNzYxOCwgMzc2MjYsIDI4NDE0LCAzNzYzMSwgMzc2MzYsIAotICAgIDM3NjQzLCAzNzY0OSwgMzc2NTUsIDM3NjYwLCAzNzY2OCwgMjQzNjUsIDM3Njc1LCAzNzY4MCwgMzc2ODUsIDM3NjkwLCAKLSAgICAzNzY5NCwgMzc2OTcsIDM3NzAyLCAzNzcwNiwgMzc3MTAsIDM3NzE3LCAzNzcyMywgMzc3MjksIDM3NzM1LCAzNzc0MiwgCi0gICAgMzc3NDcsIDM3NzUzLCAzNjYyOCwgMzc3NTcsIDM3NzYxLCAzNzc2NiwgMzc3NzksIDM3Nzg0LCAzNzc5MCwgMzc3OTgsIAotICAgIDM3ODA1LCAzNzgxMywgMzc4MjMsIDM3ODI5LCAzNzgzNSwgMzc4NDEsIDM3ODQ1LCAzNzg1NCwgMzc4NjIsIDM3ODY5LCAKLSAgICAzNzg3NCwgMzc4NzksIDExMzM3LCAzNzg4NCwgMzc4OTEsIDM3ODk3LCAzNzkwNywgMzc5MTIsIDM3OTE4LCAzNzkyNiwgCi0gICAgMzc3NSwgMzc5MzMsIDM3OTQwLCAzNzk0NiwgMzc5NTMsIDM3ODEsIDM3OTU3LCAzNzk2MiwgMzc5NzMsIDM3OTgwLCAKLSAgICAzNzk4NiwgMzc5OTUsIDM3OTk5LCA0MjQ0LCAzODAwMiwgMzgwMDksIDM4MDE1LCAzODAyMSwgMzgwMjksIDM4MDM5LCAKLSAgICAzMTMyNiwgMzgwNDYsIDM4MDU0LCAzODA2MCwgMzgwNjUsIDM4MDcxLCAzODA3NiwgMzgwODAsIDI4MDEwLCAzODA4NiwgCi0gICAgMzgwOTMsIDM4MDk5LCAzODEwOCwgMzgxMTUsIDI1NTY1LCAzODEyMSwgMzgxMjYsIDM4MTMwLCAzODEzOCwgMzgxNDYsIAotICAgIDEwMzMwLCA2MTc5LCAzODE1MywgMzgxNTcsIDM4MTU5LCAzODE2MywgMzgxNjgsIDM4MTcwLCAzODE3NSwgMzgxODEsIAotICAgIDM4MTg2LCAzODE5MSwgMzgxOTgsIDM1MDg3LCAzODIwNCwgMzgyMDksIDM4MjEzLCAzODIxOCwgMzgyMjIsIDM4MjMxLCAKLSAgICAzODIzNSwgMzgyNDEsIDM4MjQ4LCAzODI1NCwgMzgyNjEsIDM4MjY2LCAzODI3NSwgMzgyODAsIDM4Mjg0LCAzODI4OSwgCi0gICAgMzgyOTYsIDM4MzA0LCAzODMxMiwgMzgzMTcsIDIzMDQxLCAzODMyMSwgMzgzMjQsIDM4MzI4LCAzODMzMiwgMTE3MjUsIAotICAgIDg3MiwgMzgzMzYsIDM4MzQxLCAzODM0OSwgMzgzNTMsIDM4MzYyLCAzODM2OSwgMzgzNzMsIDM4Mzc3LCAzODM4NSwgCi0gICAgMzgzOTIsIDM4NDAyLCAzODQwNiwgMzg0MTAsIDM4NDE4LCAzODQyNiwgMzg0MzIsIDM4NDM3LCAzODQ0NiwgMTQ1MzAsIAotICAgIDM4NDUyLCAzODQ2MSwgMzg0NjYsIDM4NDczLCAzODQ4MCwgMzg0ODgsIDM4NDk2LCAzODUwNCwgMzg1MDksIDM4NTE2LCAKLSAgICAzODUyMywgMzg1MzAsIDM4NTM3LCAzODU0NCwgMzg1NDksIDM4NTU1LCAzODU3MiwgMzg1ODAsIDM4NTkwLCAzODU5OCwgCi0gICAgMzg2MDUsIDQxNCwgMzg2MDksIDM4NjE1LCAzODYxOSwgMzg2MjQsIDM2MjM1LCAzODYzMCwgMzg2MzMsIDM4NjM3LCAKLSAgICAzODY0OCwgMzg2NTYsIDM3ODYsIDM4NjY0LCAzODY3MCwgMzg2NzYsIDM4Njg2LCAzODY5NSwgMzg3MDUsIDM4NzEyLCAKLSAgICAzODcxOCwgMzg3MjMsIDM3OTIsIDM3OTgsIDM4NzMyLCAzODczOSwgMzg3NDcsIDM4NzUyLCAzODc1NiwgMzg3NjMsIAotICAgIDM4NzcxLCAzODc3OCwgMzg3ODQsIDM4NzkzLCAzODgwMywgMzg4MDksIDM4ODE3LCAzODgyNiwgMzg4MzMsIDM4ODQxLCAKLSAgICAzODg0OCwgMjM3MjgsIDM4ODUyLCAzODg1OSwgMzg4NjUsIDM4ODc1LCAzODg4NCwgMzg4OTIsIDM4OTAzLCAzODkwNywgCi0gICAgMzg5MTcsIDM4OTIzLCAzODkzMCwgMzg5MzgsIDM4OTQ3LCAzODk1NiwgMzg5NjYsIDM4OTc3LCAzODk4NCwgMzg5ODksIAotICAgIDM4OTk2LCAzMDg4LCAzOTAwNCwgMzkwMTAsIDM5MDE1LCAzOTAyMSwgMzkwMjcsIDM5MDMyLCAzOTA0NSwgMzkwNTgsIAotICAgIDM5MDcxLCAzOTA3OCwgMzkwODQsIDM5MDkyLCAzOTEwMCwgMzkxMDUsIDM5MTA5LCAxNDU1LCAzOTExMywgMzkxMTcsIAotICAgIDM5MTIxLCAzOTEyNSwgMzkxMjksIDM5MTMzLCAzOTEzNywgMzkxNDEsIDM5MTQ1LCAzOTE0OSwgMzkxNTMsIDM5MTU3LCAKLSAgICAzOTE2MSwgMzkxNjUsIDM5MTY5LCAzOTE3MywgMzkxNzcsIDM5MTgxLCAzOTE4NSwgMzkxODksIDM5MTkzLCAzOTE5NywgCi0gICAgMzkyMDEsIDM5MjA1LCAzOTIwOSwgMzkyMTMsIDM5MjE3LCAzOTIyMSwgMzkyMjUsIDM5MjI5LCAzOTIzMywgMzkyMzcsIAotICAgIDM5MjQxLCAzOTI0NSwgMzkyNDksIDM5MjUzLCAzOTI1NywgMzkyNjEsIDM5MjY1LCAzOTI2OSwgMzkyNzMsIDM5Mjc3LCAKLSAgICAzOTI4MSwgMzkyODUsIDM5Mjg5LCAzOTI5MywgMzkyOTcsIDM5MzAxLCAzOTMwNSwgMzkzMDksIDM5MzEzLCAzOTMxNywgCi0gICAgMzkzMjEsIDM5MzI1LCAzOTMyOSwgMzkzMzMsIDM5MzM3LCAzOTM0MSwgMzkzNDUsIDM5MzQ5LCAzOTM1MywgMzkzNTcsIAotICAgIDM5MzYxLCAzOTM2NSwgMzkzNjksIDM5MzczLCAzOTM3NywgMzkzODEsIDM5Mzg1LCAzOTM4OSwgMzkzOTMsIDM5Mzk3LCAKLSAgICAzOTQwMSwgMzk0MDUsIDM5NDA5LCAzOTQxMywgMzk0MTcsIDM5NDIxLCAzOTQyNSwgMzk0MjksIDM5NDMzLCAzOTQzNywgCi0gICAgMzk0NDEsIDM5NDQ1LCAzOTQ0OSwgMzk0NTMsIDM5NDU3LCAzOTQ2MSwgMzk0NjUsIDM5NDY5LCAzOTQ3MywgMzk0NzcsIAotICAgIDM5NDgxLCAzOTQ4NSwgMzk0ODksIDM5NDkzLCAzOTQ5NywgMzk1MDEsIDM5NTA1LCAzOTUwOSwgMzk1MTMsIDM5NTE3LCAKLSAgICAzOTUyMSwgMzk1MjUsIDM5NTI5LCAzOTUzMywgMzk1MzcsIDM5NTQxLCAzOTU0NSwgMzk1NDksIDM5NTUzLCAzOTU1NywgCi0gICAgMzk1NjEsIDM5NTY1LCAzOTU2OSwgMzk1NzMsIDM5NTc3LCAzOTU4MSwgMzk1ODUsIDM5NTg5LCAzOTU5MywgMzk1OTcsIAotICAgIDM5NjAxLCAzOTYwNSwgMzk2MDksIDM5NjEzLCAzOTYxNywgMzk2MjEsIDM5NjI1LCAzOTYyOSwgMzk2MzMsIDM5NjM3LCAKLSAgICAzOTY0MSwgMzk2NDUsIDM5NjQ5LCAzOTY1MywgMzk2NTcsIDM5NjYxLCAzOTY2NSwgMzk2NjksIDM5NjczLCAzOTY3NywgCi0gICAgMzk2ODEsIDM5Njg1LCAzOTY4OSwgMzk2OTMsIDM5Njk3LCAzOTcwMSwgMzk3MDUsIDM5NzA5LCAzOTcxMywgMzk3MTcsIAotICAgIDM5NzIxLCAzOTcyNSwgMzk3MzAsIDM5NzM0LCAzOTczOSwgMzk3NDMsIDM5NzQ4LCAzOTc1MiwgMzk3NTcsIDM5NzYxLCAKLSAgICAzOTc2NywgMzk3NzIsIDM5Nzc2LCAzOTc4MSwgMzk3ODUsIDM5NzkwLCAzOTc5NCwgMzk3OTksIDM5ODAzLCAzOTgwOCwgCi0gICAgMzk4MTIsIDM5ODE3LCAzOTgyMSwgMzk4MjYsIDM5ODMwLCAzOTgzNiwgMzk4NDIsIDM5ODQ3LCAzOTg1MSwgMzk4NTYsIAotICAgIDM5ODYwLCAzOTg2NiwgMzk4NzEsIDM5ODc1LCAzOTg4MCwgMzk4ODQsIDM5ODg5LCAzOTg5MywgMzk4OTksIDM5OTA0LCAKLSAgICAzOTkwOCwgMzk5MTMsIDM5OTE3LCAzOTkyMiwgMzk5MjYsIDM5OTMxLCAzOTkzNSwgMzk5NDEsIDM5OTQ2LCAzOTk1MCwgCi0gICAgMzk5NTUsIDM5OTU5LCAzOTk2NSwgMzk5NzAsIDM5OTc0LCAzOTk3OSwgMzk5ODMsIDM5OTg4LCAzOTk5MiwgMzk5OTcsIAotICAgIDQwMDAxLCA0MDAwNiwgNDAwMTAsIDQwMDE2LCA0MDAyMSwgNDAwMjUsIDQwMDMxLCA0MDAzNiwgNDAwNDAsIDQwMDQ2LCAKLSAgICA0MDA1MSwgNDAwNTUsIDQwMDYwLCA0MDA2NCwgNDAwNjksIDQwMDczLCA0MDA3OSwgNDAwODUsIDQwMDkxLCA0MDA5NywgCi0gICAgNDAxMDMsIDQwMTA5LCA0MDExNSwgNDAxMjEsIDQwMTI2LCA0MDEzMCwgNDAxMzUsIDQwMTM5LCA0MDE0NSwgNDAxNTAsIAotICAgIDQwMTU0LCA0MDE1OSwgNDAxNjMsIDQwMTY4LCA0MDE3MiwgNDAxNzcsIDQwMTgxLCA0MDE4NiwgNDAxOTAsIDQwMTk1LCAKLSAgICA0MDE5OSwgNDAyMDQsIDQwMjA4LCA0MDIxNCwgNDAyMTksIDQwMjIzLCA0MDIyOCwgNDAyMzIsIDQwMjM4LCA0MDI0NCwgCi0gICAgNDAyNDksIDExNiwgNTcsIDQwMjUzLCA0MDI1NSwgNDAyNTksIDQwMjYzLCA0MDI2NywgNDAyNzIsIDQwMjc2LCA0MDI4MCwgCi0gICAgMTAyNTEsIDQwMjg1LCA0MDI5MSwgMTc1NiwgNjU5NywgNDAyOTcsIDQwMzAwLCA0MDMwNSwgNDAzMDksIDQwMzE0LCAKLSAgICA0MDMxOCwgNDAzMjIsIDQwMzI3LCAxMTEyMSwgNDAzMzEsIDQwMzM1LCA0MDMzOSwgNTI1LCA0MDM0MywgMTY3ODMsIAotICAgIDQwMzQ4LCA0MDM1MiwgNDAzNTcsIDQwMzYyLCA0MDM2NywgNDAzNzEsIDQwMzc4LCAyODE4NiwgNDAzODQsIDQwMzg3LCAKLSAgICA0MDM5MSwgNDAzOTYsIDQwNDAyLCA0MDQwNiwgNDA0MDksIDQwNDE3LCA0MDQyMywgNDA0MjgsIDQwNDMyLCA0MDQzNSwgCi0gICAgNDA0MzksIDQwNDQ1LCA0MDQ0OSwgNDA0NTMsIDM1ODQsIDM1ODksIDMxNTM3LCA0MDQ1NiwgNDA0NjAsIDQwNDY0LCAKLSAgICA0MDQ2OCwgNDA0NzIsIDQwNDgwLCA0MDQ4NywgNDA0OTEsIDE0NDgwLCA0MDQ5OCwgNDA1MDMsIDQwNTE3LCA0MDUyNCwgCi0gICAgNDA1MzUsIDMzNSwgNDA1NDAsIDQwNTQ0LCA0MDU1MCwgNDA1NjIsIDQwNTY4LCA0MDU3NCwgMzE1NzQsIDQwNTc4LCAKLSAgICA0MDU4NCwgNDA1OTMsIDQwNTk3LCA0MDYwMSwgNDA2MDYsIDQwNjEyLCA0MDYxNywgNDA2MjEsIDQwNjI2LCA0MDYzMCwgCi0gICAgNDA2MzQsIDQwNjQxLCA0MDY0NywgNDA2NTIsIDQwNjY3LCA0MDY4MiwgNDA2OTcsIDQwNzEzLCA0MDczMSwgMTEwNzEsIAotICAgIDQwNzQ1LCA0MDc1MiwgNDA3NTYsIDQwNzU5LCA0MDc2OCwgNDA3NzMsIDQwNzc3LCA0MDc4NSwgMTczMzMsIDQwNzkzLCAKLSAgICA0MDc5NywgNDA4MDcsIDQwODE4LCAzMTUwNywgNDA4MzEsIDQwODM1LCA0MDg0NCwgNDA4NjIsIDQwODgxLCA0MDg4OSwgCi0gICAgMTA1MjUsIDExMjM0LCA0MDg5MywgMjQyNjEsIDQwODk2LCAzMjQ3NSwgNDA5MDEsIDEwNTI0LCA0MDkwNiwgNDA5MTIsIAotICAgIDQwOTE3LCA0MDkyMywgNDA5MjgsIDQwOTM0LCA0MDkzOSwgNDA5NDUsIDQwOTUwLCA0MDk1NiwgNDA5NjIsIDQwOTY4LCAKLSAgICA0MDk3MywgNDA5MjksIDQwOTM1LCA0MDk0MCwgNDA5NDYsIDQwOTUxLCA0MDk1NywgNDA5NjMsIDg1MDQsIDQwODksIAotICAgIDQwOTc3LCA0MDk4NSwgNDA5ODksIDQwOTkyLCA0MDk5NiwgNDEwMDEsIDQxMDA2LCA0MTAxMywgNDEwMTksIDQxMDI1LCAKLSAgICA0MTAzMCwgMTYxNzQsIDQxMDM0LCAyODAyMiwgNDEwMzgsIDQxMDQyLCA0MTA0NiwgNDEwNTIsIDQxMDU2LCAzMDA3NSwgCi0gICAgNDEwNjUsIDk1NDQsIDQxMDY5LCA5OTM3LCA0MTA3MiwgNDEwNzksIDQxMDg1LCA0MTA4OSwgMTMwMDQsIDQxMDk2LCAKLSAgICA0MTEwMiwgNDExMDcsIDQxMTE0LCA0MTEyMSwgNDExMjgsIDMwNzgxLCA4NDEwLCA0MTEzNSwgNDExNDIsIDQxMTQ5LCAKLSAgICA0MTE1NSwgNDExNjAsIDQxMTY3LCA0MTE3OCwgNDExODQsIDQxMTg5LCA0MTE5NCwgNDExOTksIDQxMjAzLCA0MTIwOCwgCi0gICAgNDEyMTUsIDQwOTMwLCA0MTIxOSwgNDEyMjksIDQxMjM4LCA0MTI0OSwgNDEyNTUsIDQxMjYzLCA0MTI3MCwgNDEyNzUsIAotICAgIDQxMjgwLCA0MTI4NSwgNDEyOTAsIDQxMjk1LCA0MTI5OSwgNDEzMDMsIDQxMzEwLCA0MTMxNiwgNDEzMjQsIDIzNTMsIAotICAgIDEwNTAsIDExMTM3LCAxMTE0OSwgMTExNTQsIDExMTYwLCA0MTMzMywgMTExNjUsIDExMTcwLCAxMTE3NiwgNDEzMzgsIAotICAgIDQxMzQ4LCA0MTM1MiwgMTExODEsIDQxMzU3LCAxODQ1MywgNDEzNjAsIDQxMzY1LCA0MTM2OSwgMzc0NjMsIDQxMzgwLCAKLSAgICA0MTM4NSwgNDEzOTIsIDQxMzk5LCA0MTQwMywgNDE0MDYsIDQxNDE0LCAxMTA4NCwgNDE0MjEsIDQxNDI0LCA0MTQzMCwgCi0gICAgNDE0NDAsIDYyMzEsIDQxNDQ5LCA0MTQ1NSwgNDE0NTksIDQxNDY3LCA0MTQ3MSwgNDE0ODEsIDQxNDg3LCA0MTQ5MiwgCi0gICAgNDE1MDMsIDQxNTEyLCA0MTUyMSwgNDE1MzAsIDQxNTM5LCA0MTU0OCwgNDE1NTcsIDQxNTY2LCA0MTU3MiwgNDE1NzgsIAotICAgIDQxNTgzLCA0MTU4OSwgNDE1OTUsIDQxNjAxLCA0MTYwNiwgNDE2MDksIDQxNjE2LCA0MTYyMiwgNDE2MjYsIDQxNjMxLCAKLSAgICA0MTYzOCwgNDE2NDUsIDQxNjQ5LCA0MTY1MiwgNDE2NjIsIDQxNjc1LCA0MTY4NCwgNDE2OTMsIDQxNzA0LCA0MTcxNywgCi0gICAgNDE3MjksIDQxNzQwLCA0MTc0OSwgNDE3NjAsIDQxNzY1LCA0MTc3NCwgNDE3NzksIDExMTg2LCA0MTc4NSwgNDE3OTIsIAotICAgIDQxODAwLCA0MTgwNSwgNDE4MDksIDQxODE2LCA0MTgyMywgNDA0MSwgMjAsIDQxODI3LCA0MTgzMiwgMTgzMDIsIDQxODM2LCAKLSAgICA0MTgzOSwgNDE4NDIsIDMwMjU1LCA0MTg0NiwgMzA3OTAsIDQxODU0LCA0MTg1OCwgNDE4NjIsIDQxODY1LCA0MTg3MSwgCi0gICAgNDE4NzcsIDMzNTI3LCA0MTg4MiwgNDE4OTAsIDQxODk2LCA0MTkwMywgMzAyMzgsIDQxOTA3LCAzMDQ0MSwgNDE5MTEsIAotICAgIDQxOTIwLCA0MTkyNCwgNDE5MzIsIDQxOTM4LCA0MTk0NCwgNDE5NDksIDQxOTUzLCAzMDgwOSwgNDE5NTksIDQxOTYyLCAKLSAgICA0MTk3MCwgNDE5NzgsIDQzNzksIDQxOTg0LCA0MTk4OCwgNDE5OTMsIDQyMDAwLCA0MjAwNiwgNDIwMTEsIDQyMDE2LCAKLSAgICA0MjAyMCwgNDIwMjYsIDQyMDMxLCA0MjAzNywgNDI5NywgOTQ0LCA0MjA0NCwgNDIwNDgsIDQyMDUxLCAxNjY2NCwgNDIwNjMsIAotICAgIDQyMDcxLCA0MjA3OSwgNDIwODcsIDQyMDk1LCA0MjEwMiwgNDIxMTAsIDQyMTE4LCA0MjEyNSwgNDIxMzMsIDQyMTQxLCAKLSAgICA0MjE0OSwgNDIxNTcsIDQyMTY1LCA0MjE3MywgNDIxODEsIDQyMTg5LCA0MjE5NywgNDIyMDUsIDQyMjEzLCA0MjIyMCwgCi0gICAgNDIyMjgsIDQyMjM2LCA0MjI0NCwgNDIyNTIsIDQyMjYwLCA0MjI2OCwgNDIyNzYsIDQyMjg0LCA0MjI5MiwgNDIzMDAsIAotICAgIDQyMzA4LCA0MjMxNiwgNDIzMjQsIDQyMzMyLCA0MjM0MCwgNDIzNDgsIDQyMzU2LCA0MjM2NCwgNDIzNzIsIDQyMzc5LCAKLSAgICA0MjM4NywgNDIzOTQsIDQyNDAyLCA0MjQxMCwgNDI0MTgsIDQyNDI2LCA0MjQzNCwgNDI0NDIsIDQyNDUwLCA0MjQ1OCwgCi0gICAgNDI0NjksIDIzNzY0LCA0MjQ3NCwgNDI0NzcsIDQyNDg0LCA0MjQ4OCwgNDI0OTQsIDQyNDk4LCA0MjUwNCwgNDI1MDksIAotICAgIDQyNTE1LCA0MjUyMCwgNDI1MjUsIDQyNTI5LCA0MjUzMywgNDI1MzgsIDQyNTQzLCA0MjU1MywgNDI1NTksIDQyNTcyLCAKLSAgICA0MjU3OCwgNDI1ODQsIDQyNTkwLCA0MjU5NywgNDI2MDIsIDQyNjA4LCA0MjYxMywgMTgxOTgsIDE0NTgsIDgzMSwgNDI2MTgsIAotICAgIDQyNjIxLCA0MjYyNCwgNDI2MjcsIDMzNjExLCAzMzYxNywgNDI2MzAsIDMzNjIzLCAzMzYzNiwgMzM2NDIsIDMzNjQ4LCAKLSAgICA0MjYzNiwgMzM2NTQsIDMzNjYwLCA0MjY0MiwgNDI2NDgsIDI2LCA0MjY1NiwgNDI2NjMsIDQyNjY3LCA0MjY3MSwgNDI2NzksIAotICAgIDM0NDAxLCA0MjY4MywgNDI2ODcsIDQyNjk0LCA0MjY5OSwgNDI3MDMsIDQyNzA4LCA0MjcxNCwgNDI3MTksIDQyNzI1LCAKLSAgICA0MjczMCwgNDI3MzQsIDQyNzM4LCA0Mjc0MiwgNDI3NDcsIDQyNzUxLCA0Mjc1NiwgNDI3NjAsIDQyNzY0LCA0Mjc3MSwgCi0gICAgNDI3NzYsIDQyNzgwLCA0Mjc4NCwgNDI3ODksIDQyNzkzLCA0Mjc5OCwgNDI4MDIsIDQyODA2LCA0MjgxMSwgNDI4MTcsIAotICAgIDE2OTI0LCAxNjkyOSwgNDI4MjIsIDQyODI2LCA0MjgyOSwgNDI4MzMsIDQyODM3LCAyMjg1MiwgNDI4NDIsIDQyODQ2LCAKLSAgICA0Mjg1MiwgNDI4NTksIDQyODY1LCA0Mjg3MCwgNDI4ODAsIDQyODg1LCA0Mjg5MywgNDI4OTcsIDQyOTAwLCAzNDQxNiwgCi0gICAgNDI5MDQsIDQzNTYsIDQyOTA5LCA0MjkxNCwgNDI5MTgsIDQyOTIzLCA0MjkyNywgNDI5MzIsIDE0NTQ4LCA0Mjk0MywgCi0gICAgNDI5NDcsIDQyOTUwLCA0Mjk1NCwgNDI5NTksIDQyOTYzLCA0Mjk2OCwgNDI5NzMsIDQyOTc3LCA0Mjk4MSwgNDI5ODUsIAotICAgIDQyOTg4LCA0Mjk5MiwgODUyMywgMTQ1NjQsIDQyOTk1LCA0Mjk5OCwgNDMwMDQsIDQzMDA5LCA0MzAxNSwgNDMwMjAsIAotICAgIDQzMDI2LCA0MzAzMSwgNDMwMzcsIDQzMDQyLCA0MzA0OCwgNDMwNTQsIDQzMDYwLCA0MzA2NSwgNDMwNjksIDQzMDczLCAKLSAgICA0MzA4MiwgNDMwOTgsIDQzMTE0LCA0MzEyNCwgMzAxNDUsIDQzMTMxLCA0MzEzNSwgNDMxNDAsIDQzMTQ1LCA0MzE0OSwgCi0gICAgNDMxNTMsIDM4OTUxLCA0MzE1OSwgNDMxNjQsIDQzMTY4LCA0MzE3NSwgNDMxODAsIDQzMTg1LCA0MzE4OSwgNDMxOTMsIAotICAgIDQzMTk5LCAyOTA5MywgNDMyMDMsIDIzMTM2LCA0MzIwOCwgNDMyMTUsIDQzMjIzLCA0MzIyOSwgNDMyMzYsIDQzMjQ0LCAKLSAgICA0MzI1MCwgNDMyNTQsIDQzMjU5LCA0MzI2NSwgNDMyNzMsIDQzMjc4LCA0MzI4MiwgNDMyOTEsIDEwMjMyLCA0MzI5OSwgCi0gICAgNDMzMDMsIDQzMzExLCA0MzMxOCwgNDMzMjMsIDQzMzI4LCA0MzMzMywgNDMzMzcsIDQzMzQwLCA0MzM0NCwgNDMzNDcsIAotICAgIDQzMzUxLCA0MzM1OCwgNDMzNjMsIDQzMzY3LCA0MzM3MywgMjg0OTIsIDMzNjc0LCA0MzM3NywgNDMzODYsIDQzMzk0LCAKLSAgICA0MzQwMCwgNDM0MDcsIDQzNDEzLCA0MzQxOSwgNDM0MjQsIDQzNDI3LCA0MzQyOSwgNDM0MzYsIDQzNDQzLCA0MzQ0OSwgCi0gICAgNDM0NTMsIDQzNDU2LCA0MzQ2MCwgNDM0NjQsIDQzNDY4LCA0MzQ3MywgNDM0NzcsIDQzNDgxLCA0MzQ4NCwgNDM0ODgsIAotICAgIDQzNTAyLCAyNDkwNiwgNDM1MjEsIDQzNTM0LCA0MzU0NywgNDM1NjAsIDI0OTI0LCA0MzU3NSwgMTE0MjIsIDQzNTkwLCAKLSAgICA0MzU5NiwgNDM2MDAsIDQzNjA0LCA0MzYwOCwgNDM2MTIsIDQzNjE5LCA0MzYyNCwgNDM2MjgsIDQzNjM1LCA0MzY0MSwgCi0gICAgNDM2NDYsIDQzNjUyLCA0MzY2MiwgNDM2NzQsIDQzNjg1LCA0MzY5MCwgNDM2OTcsIDQzNzAxLCA0MzcwNSwgNDM3MDgsIAotICAgIDE3MzQzLCAzODU1LCA0MzcxNiwgMTY5NTEsIDQzNzI5LCA0MzczNiwgNDM3NDMsIDQzNzQ3LCA0Mzc1MSwgNDM3NTYsIAotICAgIDQzNzYyLCA0Mzc2NywgNDM3NzMsIDQzNzc3LCA0Mzc4MSwgNDM3ODQsIDQzNzg5LCA0Mzc5MywgNDM3OTgsIDgwODIsIAotICAgIDE2OTYyLCA0MzgwMywgNDM4MDcsIDQzODEzLCA0MzgyMiwgNDM4MjcsIDQzODM2LCA0Mzg0MywgMzg3OTksIDQzODQ5LCAKLSAgICA0Mzg1NCwgNDM4NTgsIDQzODYzLCA0Mzg3MCwgNDM4NzYsIDQzODgwLCA0Mzg4MywgNDM4ODcsIDQzODkyLCAxNTg2NCwgCi0gICAgNDM4OTksIDQzOTA2LCA0MzkxMCwgNDM5MTMsIDQzOTE4LCA0MzkyMywgNDM5MjksIDQzOTM0LCA0MzkzOSwgNDM5NDMsIAotICAgIDQzOTQ4LCA0Mzk1OCwgNDM5NjMsIDQzOTY5LCA0Mzk3NCwgNDM5ODAsIDQzOTg1LCA0Mzk5MSwgNDQwMDEsIDQ0MDA2LCAKLSAgICA0NDAxMSwgNDQwMTUsIDQ0MDIwLCA3NTU4LCA3NTcwLCA0NDAyNSwgNDQwMjgsIDQ0MDM1LCA0NDA0MSwgNDQwNTAsIDk0NzcsIAotICAgIDM2NzYwLCA0NDA1OCwgNDQwNjIsIDQ0MDY2LCAzNDQ2NCwgNDQwNzQsIDQ0MDg1LCA0NDA5MywgMzg5OTksIDQ0MTAwLCAKLSAgICA0NDEwNSwgNDQxMTAsIDQ0MTIxLCA0NDEyOCwgNDQxMzksIDM0NDg4LCAyMzE0NywgNDQxNDcsIDkwNywgNDQxNTIsIAotICAgIDE0OTEzLCA0NDE1OCwgMzAyMjksIDQ0MTY0LCA0NDE2OSwgNDQxNzksIDQ0MTg4LCA0NDE5NSwgNDQyMDEsIDQ0MjA1LCAKLSAgICA0NDIwOCwgNDQyMTUsIDQ0MjIxLCA0NDIyOCwgNDQyMzQsIDQ0MjQ0LCA0NDI1MiwgNDQyNTgsIDQ0MjY0LCA0NDI2OSwgCi0gICAgNDQyNzMsIDQ0MjgwLCA0NDI4NSwgNDQyOTEsIDQ0Mjk4LCA0NDMwNCwgNDM0NjksIDQ0MzA5LCA0NDMxMywgNTU4LCAKLSAgICAxNTAyOSwgNDQzMTksIDQ0MzI0LCA0NDMyNywgNDQzMzMsIDQ0MzQxLCAxMzgwLCA0NDM0NiwgNDQzNTAsIDQ0MzU1LCAKLSAgICA0NDM2MCwgNDQzNjUsIDQ0MzcyLCA0NDM3NiwgNDQzODEsIDQ0Mzg3LCA0NDM5MSwgMzM2ODQsIDQ0Mzk2LCA0NDQwMSwgCi0gICAgNDQ0MTAsIDQ0NDE3LCA0NDQyNywgNDQ0MzMsIDMwMjczLCA0NDQ1MCwgNDQ0NTksIDQ0NDY3LCA0NDQ3MywgNDQ0NzgsIAotICAgIDQ0NDg1LCA0NDQ5MSwgNDQ0OTksIDQ0NTA4LCA0NDUxNiwgNDQ1MjAsIDQ0NTI1LCA0NDUzMywgMzEyNTEsIDM0NDk3LCAKLSAgICA0NDUzOSwgNDQ1NTgsIDE3MjU3LCA0NDU3MiwgNDQ1ODgsIDQ0NjAyLCA0NDYwOCwgNDQ2MTMsIDQ0NjE4LCA0NDYyMywgCi0gICAgNDQ2MjksIDM0NTAzLCA0NDYzNCwgNDQ2MzcsIDQ0NjQ0LCA0NDY0OSwgNDQ2NTMsIDQwNCwgMjk5NSwgNDQ2NjAsIDQ0NjY1LCAKLSAgICA0NDY3MCwgMjk0NTEsIDQ0NDg4LCA0NDY3NCwgNDQ2NzksIDQ0Njg3LCA0NDY5MSwgNDQ2OTQsIDQ0Njk5LCA0NDcwNSwgCi0gICAgNDQ3MTEsIDQ0NzE2LCA0NDcyMCwgMzAzMjgsIDQ0NzIzLCA0NDcyOCwgNDQ3MzIsIDQ0NzM1LCA0NDc0MCwgNDQ3NDQsIAotICAgIDQ0NzQ5LCA0NDc1NCwgNDQ3NTgsIDQ0NzYzLCA0NDc2NywgNDQ3NzEsIDQ0Nzc1LCAyMjg0OCwgMjI4NTksIDQ0NzgwLCAKLSAgICA0NDc4NSwgNDQ3OTEsIDQ0Nzk2LCA0NDgwMiwgMjkwNTAsIDQ0ODA3LCA0NDgxMSwgMjI5NDUsIDE3NTQ5LCA0NDgxNCwgCi0gICAgNDQ4MTksIDQ0ODI0LCA0NDgyOSwgNDQ4MzQsIDQ0ODM5LCA0NDg0NCwgNDQ4NDksIDQ3NCwgNjgsIDMzNjk3LCAzMzcwMiwgCi0gICAgMzM3MDcsIDMzNzEzLCAzMzcxOCwgMzM3MjMsIDQ0ODU0LCAzMzcyNywgNDQ4NTgsIDQ0ODYyLCA0NDg2NiwgMzM3MzIsIAotICAgIDMzNzM4LCA0NDg4MCwgMzM3NDksIDMzNzU0LCA0NDg4OCwgNDQ4OTMsIDMzNzYwLCA0NDg5OCwgNDQ5MDMsIDQ0OTA4LCAKLSAgICA0NDkxMywgNDQ5MTksIDQ0OTI1LCA0NDkzMSwgMzM3NzcsIDQ0OTQ0LCA0NDk1MywgNDQ5NTksIDMzNzgxLCA0NDk2MywgCi0gICAgMzM3ODYsIDQ0OTY4LCAzMzc5MSwgMzM3OTYsIDQ0OTcxLCA0NDk3NiwgNDQ5ODAsIDQ0OTg2LCAzMzMzMiwgNDQ5OTMsIAotICAgIDE0Nzk0LCA0NTAwMCwgNDUwMDUsIDMzODAxLCA0NTAwOSwgNDUwMTQsIDQ1MDE5LCA0NTAyNCwgNDUwMjgsIDQ1MDMzLCAKLSAgICA0NTAzOCwgNDUwNDQsIDQ1MDQ5LCA0NTA1NCwgNDUwNjAsIDQ1MDY2LCA0NTA3MSwgNDUwNzUsIDQ1MDgwLCA0NTA4NSwgCi0gICAgNDUwOTAsIDQ1MDk0LCA0NTA5OSwgNDUxMDQsIDQ1MTA5LCA0NTExNSwgNDUxMjEsIDQ1MTI3LCA0NTEzMiwgNDUxMzYsIAotICAgIDQ1MTQxLCA0NTE0NSwgMzM4MDUsIDMzODEwLCAzMzgxNSwgNDUxNDksIDQ1MTUzLCA0NTE1NywgMzM4MjAsIDMzODI2LCAKLSAgICAzMzgzMiwgMzM4NDQsIDQ1MTY5LCAyODA1OSwgNDUxNzMsIDQ1MTc4LCA0NTE4MiwgNDUxODcsIDQ1MTk0LCA0NTE5OSwgCi0gICAgNDUyMDQsIDQ1MjA5LCA0NTIxMywgNDUyMTcsIDQ1MjI3LCA0NTIzMiwgNDUyMzcsIDQ1MjQxLCA0NTI0NSwgNDUyNDgsIAotICAgIDQ1MjU2LCAzMzg5MiwgNDUyNjEsIDE0NjUsIDQ1MjY3LCA0NTI3MiwgNDUyNzgsIDQ1Mjg2LCA0NTI5MCwgNDUyOTksIAotICAgIDQ1MzAzLCA0NTMwNywgNDUzMTUsIDQ1MzIxLCA0NTMyOSwgNDUzNDUsIDQ1MzQ5LCA0NTM1MywgNDUzNTcsIDQ1MzYyLCAKLSAgICA0NTM2OCwgNDUzODMsIDMzOTI5LCAxNzY0LCAxMzE5OCwgNDUzODcsIDEzNTksIDEzNzQsIDQ1Mzk5LCA0NTQwNywgNDU0MTQsIAotICAgIDQ1NDE5LCA0NTQyNiwgNDU0MzEsIDk5MjIsIDExMzksIDI1NDQsIDExMjEzLCA0NTQzOCwgOTgyMCwgNDU0NDMsIDQ1NDQ2LCAKLSAgICA0NTQ1NSwgMTI2NywgNDU0NjAsIDQzNjI1LCA0NTQ2NywgNDU0NzYsIDQ1NDgxLCA0NTQ4NSwgNDU0OTMsIDI0MzE3LCAKLSAgICAyNTk2LCA0NTUwMCwgMTE2NzgsIDQ1NTEwLCA0NTUxNiwgMjM3MSwgMjM4MSwgNDU1MjUsIDQ1NTM0LCA0NTU0NCwgNDU1NTUsIAotICAgIDMzNzYsIDM3MDk5LCA0NTU2MCwgMTEyNzcsIDQwMTksIDE4MjM2LCAxMjcyLCA0NTU2NCwgNDU1NzIsIDQ1NTc5LCA0NTU4NCwgCi0gICAgNDU1ODgsIDQ1NTkyLCAyNTc5MiwgNDM4OTQsIDExMzA0LCA0NTYwMCwgNDU2MDksIDQ1NjE4LCA0NTYyNiwgNDU2MzMsIAotICAgIDQ1NjQ0LCA0NTY0OSwgNDU2NjIsIDQ1Njc1LCA0NTY4NywgNDU2OTksIDQ1NzExLCA0NTcyMiwgNDU3MzUsIDQ1NzQ2LCAKLSAgICA0NTc1NywgNDU3NjcsIDQ1Nzc1LCA0NTc4MywgNDU3OTUsIDQ1ODA3LCA0NTgxOCwgNDU4MjcsIDQ1ODM1LCA0NTg0MiwgCi0gICAgNDU4NTQsIDQ1ODYxLCA0NTg2NywgNDU4NzYsIDQ1ODgzLCA0NTg5NiwgNDU5MDEsIDQ1OTExLCA0NTkxNiwgNDU5MjIsIAotICAgIDQ1OTI3LCA0MTA4NiwgNDU5MzEsIDQ1OTM4LCA0NTk0MiwgNDU5NDksIDQ1OTU3LCA0NTk2NCwgMjU1NywgNDU5NzEsIAotICAgIDQ1OTgyLCA0NTk5MiwgNDYwMDEsIDQ2MDA5LCA0NjAxOSwgNDYwMjcsIDQ2MDM3LCA0NjA0NiwgNDYwNTEsIDQ2MDU3LCAKLSAgICA0NjA2MywgMzg5OSwgNDYwNzQsIDQ2MDg0LCA0NjA5MywgNDYxMDIsIDQ2MTEwLCA0NjEyMCwgNDYxMjgsIDQ2MTM3LCAKLSAgICA0NjE0MiwgNDYxNDcsIDQ2MTUyLCAxNjk0LCA0NywgNDYxNjAsIDQ2MTY4LCA0NjE3OSwgNDYxOTAsIDE3ODc1LCA0NjIwMCwgCi0gICAgNDYyMDQsIDQ2MjExLCA0NjIxNywgNDYyMjIsIDQ2MjI2LCA0NjIzNywgNDYyNDcsIDQ2MjU2LCA0NjI2NywgMTgyNzUsIAotICAgIDE4MjgwLCA0NjI3MiwgNDYyODEsIDQ2Mjg2LCA0NjI5NiwgNDYzMDEsIDQ2MzA5LCA0NjMxNywgNDYzMjQsIDQ2MzMwLCAKLSAgICAxNjU2LCAyNzcsIDQ2MzM0LCA0NjM0MCwgNDYzNDUsIDQ2MzQ4LCAyMTQzLCA0Mzc0OCwgNDYzNTYsIDQ2MzYwLCA0NjM2MywgCi0gICAgMTUxMCwgNDYzNjksIDE1MjE0LCAxMjc3LCA0NjM3NCwgNDYzODcsIDQ2NDAxLCAyNjgyLCA0NjQxOSwgNDY0MzEsIDQ2NDQzLCAKLSAgICAyNjk2LCAyNzEzLCA0NjQ1NywgNDY0NzAsIDI3MjgsIDQ2NDg0LCA0NjQ5NiwgMjc0MywgNDY1MTAsIDEyODMsIDEyODksIAotICAgIDEyOTUsIDExNTg0LCA0NjUxNSwgNDY1MjAsIDQ2NTI1LCA0NjUyOSwgNDY1NDQsIDQ2NTU5LCA0NjU3NCwgNDY1ODksIAotICAgIDQ2NjA0LCA0NjYxOSwgNDY2MzQsIDQ2NjQ5LCA0NjY2NCwgNDY2NzksIDQ2Njk0LCA0NjcwOSwgNDY3MjQsIDQ2NzM5LCAKLSAgICA0Njc1NCwgNDY3NjksIDQ2Nzg0LCA0Njc5OSwgNDY4MTQsIDQ2ODI5LCA0Njg0NCwgNDY4NTksIDQ2ODc0LCA0Njg4OSwgCi0gICAgNDY5MDQsIDQ2OTE5LCA0NjkzNCwgNDY5NDksIDQ2OTY0LCA0Njk3OSwgNDY5OTQsIDQ3MDA5LCA0NzAyNCwgNDcwMzksIAotICAgIDQ3MDU0LCA0NzA2OSwgNDcwODQsIDQ3MDk5LCA0NzExNCwgNDcxMjksIDQ3MTQ0LCA0NzE1OSwgNDcxNzQsIDQ3MTg5LCAKLSAgICA0NzIwNCwgNDcyMTksIDQ3MjM0LCA0NzI0OSwgNDcyNjQsIDQ3Mjc5LCA0NzI5NCwgNDczMDksIDQ3MzI0LCA0NzMzOSwgCi0gICAgNDczNTQsIDQ3MzY5LCA0NzM4NCwgNDczOTksIDQ3NDE0LCA0NzQyOSwgNDc0NDQsIDQ3NDU5LCA0NzQ3NCwgNDc0ODksIAotICAgIDQ3NTA0LCA0NzUxOSwgNDc1MzQsIDQ3NTQ5LCA0NzU2NCwgNDc1NzksIDQ3NTk0LCA0NzYwOSwgNDc2MjQsIDQ3NjM5LCAKLSAgICA0NzY1NCwgNDc2NjksIDQ3Njg0LCA0NzY5OSwgNDc3MTQsIDQ3NzI5LCA0Nzc0NCwgNDc3NTksIDQ3Nzc0LCA0Nzc4OSwgCi0gICAgNDc4MDQsIDQ3ODE5LCA0NzgzNCwgNDc4NDksIDQ3ODY0LCA0Nzg3OSwgNDc4OTQsIDQ3OTA5LCA0NzkyNCwgNDc5MzksIAotICAgIDQ3OTU0LCA0Nzk2OSwgNDc5ODQsIDQ3OTk5LCA0ODAxNCwgNDgwMjksIDQ4MDQ0LCA0ODA1OSwgNDgwNzQsIDQ4MDg5LCAKLSAgICA0ODEwNCwgNDgxMTksIDQ4MTM0LCA0ODE0OSwgNDgxNjQsIDQ4MTc5LCA0ODE5NCwgNDgyMDksIDQ4MjI0LCA0ODIzOSwgCi0gICAgNDgyNTQsIDQ4MjY5LCA0ODI4NCwgNDgyOTksIDQ4MzE0LCA0ODMyOSwgNDgzNDQsIDQ4MzU5LCA0ODM3NCwgNDgzODksIAotICAgIDQ4NDA0LCA0ODQxOSwgNDg0MzQsIDQ4NDQ5LCA0ODQ2NCwgNDg0NzksIDQ4NDk0LCA0ODUwOSwgNDg1MjQsIDQ4NTM5LCAKLSAgICA0ODU1NCwgNDg1NjksIDQ4NTg0LCA0ODU5OSwgNDg2MTQsIDQ4NjI5LCA0ODY0NCwgNDg2NTksIDQ4Njc0LCA0ODY4OSwgCi0gICAgNDg3MDQsIDQ4NzE5LCA0ODczNCwgNDg3NDksIDQ4NzY0LCA0ODc3OSwgNDg3OTQsIDQ4ODA5LCA0ODgyNCwgNDg4MzksIAotICAgIDQ4ODU0LCA0ODg2OSwgNDg4ODQsIDQ4ODk5LCA0ODkxNCwgNDg5MjksIDQ4OTQ0LCA0ODk1OSwgNDg5NzQsIDQ4OTg5LCAKLSAgICA0OTAwNCwgNDkwMTksIDQ5MDM0LCA0OTA0OSwgNDkwNjQsIDQ5MDc5LCA0OTA5NCwgNDkxMDksIDQ5MTI0LCA0OTEzOSwgCi0gICAgNDkxNTQsIDQ5MTY5LCA0OTE4NCwgNDkxOTksIDQ5MjE0LCA0OTIyOSwgNDkyNDQsIDQ5MjU5LCA0OTI3NCwgNDkyODksIAotICAgIDQ5MzA0LCA0OTMxOSwgNDkzMzQsIDQ5MzQ5LCA0OTM2NCwgNDkzNzksIDQ5Mzk0LCA0OTQwOSwgNDk0MjQsIDQ5NDM5LCAKLSAgICA0OTQ1NCwgNDk0NjksIDQ5NDg0LCA0OTQ5OSwgNDk1MTQsIDQ5NTI5LCA0OTU0NCwgNDk1NTksIDQ5NTc0LCA0OTU4OSwgCi0gICAgNDk2MDQsIDQ5NjE5LCA0OTYzNCwgNDk2NDksIDQ5NjY0LCA0OTY3OSwgNDk2OTQsIDQ5NzA5LCA0OTcyNCwgNDk3MzksIAotICAgIDQ5NzU0LCA0OTc2OSwgNDk3ODQsIDQ5Nzk5LCA0OTgxNCwgNDk4MjksIDQ5ODQ0LCA0OTg1OSwgNDk4NzQsIDQ5ODg5LCAKLSAgICA0OTkwNCwgNDk5MTksIDQ5OTM0LCA0OTk0OSwgNDk5NjQsIDQ5OTc5LCA0OTk5NCwgNTAwMDksIDUwMDI0LCA1MDAzOSwgCi0gICAgNTAwNTQsIDUwMDY5LCA1MDA4NCwgNTAwOTksIDUwMTE0LCA1MDEyOSwgNTAxNDQsIDUwMTU5LCA1MDE3NCwgNTAxODksIAotICAgIDUwMjA0LCA1MDIxOSwgNTAyMzQsIDUwMjQ5LCA1MDI2NCwgNTAyNzksIDUwMjk0LCA1MDMwOSwgNTAzMjQsIDUwMzM5LCAKLSAgICA1MDM1NCwgNTAzNjksIDUwMzg0LCA1MDM5OSwgNTA0MTQsIDUwNDI5LCA1MDQ0NCwgNTA0NTksIDUwNDc0LCA1MDQ4OSwgCi0gICAgNTA1MDQsIDUwNTE5LCA1MDUzNCwgNTA1NDksIDUwNTY0LCA1MDU3OSwgNTA1OTQsIDUwNjA5LCA1MDYyNCwgNTA2MzksIAotICAgIDUwNjU0LCA1MDY2OSwgNTA2ODQsIDUwNjk5LCA1MDcxNCwgNTA3MjksIDUwNzQ0LCA1MDc1OSwgNTA3NzQsIDUwNzg5LCAKLSAgICA1MDgwNCwgNTA4MTksIDUwODM0LCA1MDg0OSwgNTA4NjQsIDUwODc5LCA1MDg5NCwgNTA5MDksIDUwOTI0LCA1MDkzOSwgCi0gICAgNTA5NTQsIDUwOTY5LCA1MDk4NCwgNTA5OTksIDUxMDE0LCA1MTAyOSwgNTEwNDQsIDUxMDU5LCA1MTA3NCwgNTEwODksIAotICAgIDUxMTA0LCA1MTExOSwgNTExMzQsIDUxMTQ5LCA1MTE2NCwgNTExNzksIDUxMTk0LCA1MTIwOSwgNTEyMjQsIDUxMjM5LCAKLSAgICA1MTI1NCwgNTEyNjksIDUxMjg0LCA1MTI5OSwgNTEzMTQsIDUxMzI5LCA1MTM0NCwgNTEzNTksIDUxMzc0LCA1MTM4OSwgCi0gICAgNTE0MDQsIDUxNDE5LCA1MTQzNCwgNTE0NDksIDUxNDY0LCA1MTQ3OSwgNTE0OTQsIDUxNTA5LCA1MTUyNCwgNTE1MzksIAotICAgIDUxNTU0LCA1MTU2OSwgNTE1ODQsIDUxNTk5LCA1MTYxNCwgNTE2MjksIDUxNjQ0LCA1MTY1OSwgNTE2NzQsIDUxNjg5LCAKLSAgICA1MTcwNCwgNTE3MTksIDUxNzM0LCA1MTc0OSwgNTE3NjQsIDUxNzc5LCA1MTc5NCwgNTE4MDksIDUxODI0LCA1MTgzOSwgCi0gICAgNTE4NTQsIDUxODY5LCA1MTg4NCwgNTE4OTksIDUxOTE0LCA1MTkyOSwgNTE5NDQsIDUxOTU5LCA1MTk3NCwgNTE5ODksIAotICAgIDUyMDA0LCA1MjAxOSwgNTIwMzQsIDUyMDQ5LCA1MjA2NCwgNTIwNzksIDUyMDk0LCA1MjEwOSwgNTIxMjQsIDUyMTM5LCAKLSAgICA1MjE1NCwgNTIxNjksIDUyMTg0LCA1MjE5OSwgNTIyMTQsIDUyMjI5LCA1MjI0NCwgNTIyNTksIDUyMjc0LCA1MjI4OSwgCi0gICAgNTIzMDQsIDUyMzE5LCA1MjMzNCwgNTIzNDksIDUyMzY0LCA1MjM3OSwgNTIzOTQsIDUyNDA5LCA1MjQyNCwgNTI0MzksIAotICAgIDUyNDU0LCA1MjQ2OSwgNTI0ODQsIDUyNDk5LCA1MjUxNCwgNTI1MjksIDUyNTQ0LCA1MjU1OSwgNTI1NzQsIDUyNTg5LCAKLSAgICA1MjYwNCwgNTI2MTksIDUyNjM0LCA1MjY0OSwgNTI2NjQsIDUyNjc5LCA1MjY5NCwgNTI3MDksIDUyNzI0LCA1MjczOSwgCi0gICAgNTI3NTQsIDUyNzY5LCA1Mjc4NCwgNTI3OTksIDUyODE0LCA1MjgyOSwgNTI4NDQsIDUyODU5LCA1Mjg3NCwgNTI4ODksIAotICAgIDUyOTA0LCA1MjkxOSwgNTI5MzQsIDUyOTQ5LCA1Mjk2NCwgNTI5NzksIDUyOTk0LCA1MzAwOSwgNTMwMjQsIDUzMDM5LCAKLSAgICA1MzA1NCwgNTMwNjksIDUzMDg0LCA1MzA5OSwgNTMxMTQsIDUzMTI5LCA1MzE0NCwgNTMxNTksIDUzMTc0LCA1MzE4OSwgCi0gICAgNTMyMDQsIDUzMjE5LCA1MzIzNCwgNTMyNDksIDUzMjY0LCA1MzI3OSwgNTMyOTQsIDUzMzA5LCA1MzMyNCwgNTMzMzksIAotICAgIDUzMzU0LCA1MzM2OSwgNTMzODQsIDUzMzk5LCA1MzQxNCwgNTM0MjksIDUzNDQ0LCA1MzQ1OSwgNTM0NzQsIDUzNDg5LCAKLSAgICA1MzUwNCwgNTM1MTksIDUzNTM0LCA1MzU0OSwgNTM1NjQsIDUzNTc5LCA1MzU5NCwgNTM2MDksIDUzNjI0LCA1MzYzOSwgCi0gICAgNTM2NTQsIDUzNjY5LCA1MzY4NCwgNTM2OTksIDUzNzE0LCA1MzcyOSwgNTM3NDQsIDUzNzU5LCA1Mzc3NCwgNTM3ODksIAotICAgIDUzODA0LCA1MzgxOSwgNTM4MzQsIDUzODQ5LCA1Mzg2NCwgNTM4NzksIDUzODk0LCA1MzkwOSwgNTM5MjQsIDUzOTM5LCAKLSAgICA1Mzk1NCwgNTM5NjksIDUzOTg0LCA1Mzk5OSwgNTQwMTQsIDU0MDI5LCA1NDA0NCwgNTQwNTksIDU0MDc0LCA1NDA4OSwgCi0gICAgNTQxMDQsIDU0MTE5LCA1NDEzNCwgNTQxNDksIDU0MTY0LCA1NDE3OSwgNTQxOTQsIDU0MjA5LCA1NDIyNCwgNTQyMzksIAotICAgIDU0MjU0LCA1NDI2OSwgNTQyODQsIDU0Mjk5LCA1NDMxNCwgNTQzMjksIDU0MzQ1LCA1NDM2MSwgNTQzNzcsIDU0MzkzLCAKLSAgICA1NDQwOSwgNTQ0MjUsIDU0NDQxLCA1NDQ1NywgNTQ0NzMsIDU0NDg5LCA1NDUwNSwgNTQ1MjEsIDU0NTM3LCA1NDU1MywgCi0gICAgNTQ1NjksIDU0NTg1LCA1NDYwMSwgNTQ2MTcsIDU0NjMzLCA1NDY0OSwgNTQ2NjUsIDU0NjgxLCA1NDY5NywgNTQ3MTMsIAotICAgIDU0NzI5LCA1NDc0NSwgNTQ3NjEsIDU0Nzc3LCA1NDc5MywgNTQ4MDksIDU0ODI1LCA1NDg0MSwgNTQ4NTcsIDU0ODczLCAKLSAgICA1NDg4OSwgNTQ5MDUsIDU0OTIxLCA1NDkzNywgNTQ5NTMsIDU0OTY5LCA1NDk4NSwgNTUwMDEsIDU1MDE3LCA1NTAzMywgCi0gICAgNTUwNDksIDU1MDY1LCA1NTA4MSwgNTUwOTcsIDU1MTEzLCA1NTEyOSwgNTUxNDUsIDU1MTYxLCA1NTE3NywgNTUxOTMsIAotICAgIDU1MjA5LCA1NTIyNSwgNTUyNDEsIDU1MjU3LCA1NTI3MywgNTUyODksIDU1MzA1LCA1NTMyMSwgNTUzMzcsIDU1MzUzLCAKLSAgICA1NTM2OSwgNTUzODUsIDU1NDAxLCA1NTQxNywgNTU0MzMsIDU1NDQ5LCA1NTQ2NSwgNTU0ODEsIDU1NDk3LCA1NTUxMywgCi0gICAgNTU1MjksIDU1NTQ1LCA1NTU2MSwgNTU1NzcsIDU1NTkzLCA1NTYwOSwgNTU2MjUsIDU1NjQxLCA1NTY1NywgNTU2NzMsIAotICAgIDU1Njg5LCA1NTcwNSwgNTU3MjEsIDU1NzM3LCA1NTc1MywgNTU3NjksIDU1Nzg1LCA1NTgwMSwgNTU4MTcsIDU1ODMzLCAKLSAgICA1NTg0OSwgNTU4NjUsIDU1ODgxLCA1NTg5NywgNTU5MTMsIDU1OTI5LCA1NTk0NSwgNTU5NjEsIDU1OTc3LCA1NTk5MywgCi0gICAgNTYwMDksIDU2MDI1LCA1NjA0MSwgNTYwNTcsIDU2MDczLCA1NjA4OSwgNTYxMDUsIDU2MTIxLCA1NjEzNywgNTYxNTMsIAotICAgIDU2MTY5LCA1NjE4NSwgNTYyMDEsIDU2MjE3LCA1NjIzMywgNTYyNDksIDU2MjY1LCA1NjI4MSwgNTYyOTcsIDU2MzEzLCAKLSAgICA1NjMyOSwgNTYzNDUsIDU2MzYxLCA1NjM3NywgNTYzOTMsIDU2NDA5LCA1NjQyNSwgNTY0NDEsIDU2NDU3LCA1NjQ3MywgCi0gICAgNTY0ODksIDU2NTA1LCA1NjUyMSwgNTY1MzcsIDU2NTUzLCA1NjU2OSwgNTY1ODUsIDU2NjAxLCA1NjYxNywgNTY2MzMsIAotICAgIDU2NjQ5LCA1NjY2NSwgNTY2ODEsIDU2Njk3LCA1NjcxMywgNTY3MjksIDU2NzQ1LCA1Njc2MSwgNTY3NzcsIDU2NzkzLCAKLSAgICA1NjgwOSwgNTY4MjUsIDU2ODQxLCA1Njg1NywgNTY4NzMsIDU2ODg5LCA1NjkwNSwgNTY5MjEsIDU2OTM3LCA1Njk1MywgCi0gICAgNTY5NjksIDU2OTg1LCA1NzAwMSwgNTcwMTcsIDU3MDMzLCA1NzA0OSwgNTcwNjUsIDU3MDgxLCA1NzA5NywgNTcxMTMsIAotICAgIDU3MTI5LCA1NzE0NSwgNTcxNjEsIDU3MTc3LCA1NzE5MywgNTcyMDksIDU3MjI1LCA1NzI0MSwgNTcyNTcsIDU3MjczLCAKLSAgICA1NzI4OSwgNTczMDUsIDU3MzIxLCA1NzMzNywgNTczNTMsIDU3MzY5LCA1NzM4NSwgNTc0MDEsIDU3NDE3LCA1NzQzMywgCi0gICAgNTc0NDksIDU3NDY1LCA1NzQ4MSwgNTc0OTcsIDU3NTEzLCA1NzUyOSwgNTc1NDUsIDU3NTYxLCA1NzU3NywgNTc1OTMsIAotICAgIDU3NjA5LCA1NzYyNSwgNTc2NDEsIDU3NjU3LCA1NzY3MywgNTc2ODksIDU3NzA1LCA1NzcyMSwgNTc3MzcsIDU3NzUzLCAKLSAgICA1Nzc2OSwgNTc3ODUsIDU3ODAxLCA1NzgxNywgNTc4MzMsIDU3ODQ5LCA1Nzg2NSwgNTc4ODEsIDU3ODk3LCA1NzkxMywgCi0gICAgNTc5MjksIDU3OTQ1LCA1Nzk2MSwgNTc5NzcsIDU3OTkzLCA1ODAwOSwgNTgwMjUsIDU4MDQxLCA1ODA1NywgNTgwNzMsIAotICAgIDU4MDg5LCA1ODEwNSwgNTgxMjEsIDU4MTM3LCA1ODE1MywgNTgxNjksIDU4MTg1LCA1ODIwMSwgNTgyMTcsIDU4MjMzLCAKLSAgICA1ODI0OSwgNTgyNjUsIDU4MjgxLCA1ODI5NywgNTgzMTMsIDU4MzI5LCA1ODM0NSwgNTgzNjEsIDU4Mzc3LCA1ODM5MywgCi0gICAgNTg0MDksIDU4NDI1LCA1ODQ0MSwgNTg0NTcsIDU4NDczLCA1ODQ4OSwgNTg1MDUsIDU4NTIxLCA1ODUzNywgNTg1NTMsIAotICAgIDU4NTY5LCA1ODU4NSwgNTg2MDEsIDU4NjE3LCA1ODYzMywgNTg2NDksIDU4NjY1LCA1ODY4MSwgNTg2OTcsIDU4NzEzLCAKLSAgICA1ODcyOSwgNTg3NDUsIDU4NzYxLCA1ODc3NywgNTg3OTMsIDU4ODA5LCA1ODgyNSwgNTg4NDEsIDU4ODU3LCA1ODg3MywgCi0gICAgNTg4ODksIDU4OTA1LCA1ODkyMSwgNTg5MzcsIDU4OTUzLCA1ODk2OSwgNTg5ODUsIDU5MDAxLCA1OTAxNywgNTkwMzMsIAotICAgIDU5MDQ5LCA1OTA2NSwgNTkwODEsIDU5MDk3LCA1OTExMywgNTkxMjksIDU5MTQ1LCA1OTE2MSwgNTkxNzcsIDU5MTkzLCAKLSAgICA1OTIwOSwgNTkyMjUsIDU5MjQxLCA1OTI1NywgNTkyNzMsIDU5Mjg5LCA1OTMwNSwgNTkzMjEsIDU5MzM3LCA1OTM1MywgCi0gICAgNTkzNjksIDU5Mzg1LCA1OTQwMSwgNTk0MTcsIDU5NDMzLCA1OTQ0OSwgNTk0NjUsIDU5NDgxLCA1OTQ5NywgNTk1MTMsIAotICAgIDU5NTI5LCA1OTU0NSwgNTk1NjEsIDU5NTc3LCA1OTU5MywgNTk2MDksIDU5NjI1LCA1OTY0MSwgNTk2NTcsIDU5NjczLCAKLSAgICA1OTY4OSwgNTk3MDUsIDU5NzIxLCA1OTczNywgNTk3NTMsIDU5NzY5LCA1OTc4NSwgNTk4MDEsIDU5ODE3LCA1OTgzMywgCi0gICAgNTk4NDksIDU5ODY1LCA1OTg4MSwgNTk4OTcsIDU5OTEzLCA1OTkyOSwgNTk5NDUsIDU5OTYxLCA1OTk3NywgNTk5OTMsIAotICAgIDYwMDA5LCA2MDAyNSwgNjAwNDEsIDYwMDU3LCA2MDA3MywgNjAwODksIDYwMTA1LCA2MDEyMSwgNjAxMzcsIDYwMTUzLCAKLSAgICA2MDE2OSwgNjAxODUsIDYwMjAxLCA2MDIxNywgNjAyMzMsIDYwMjQ5LCA2MDI2NSwgNjAyODEsIDYwMjk3LCA2MDMxMywgCi0gICAgNjAzMjksIDYwMzQ1LCA2MDM2MSwgNjAzNzcsIDYwMzkzLCA2MDQwOSwgNjA0MjUsIDYwNDQxLCA2MDQ1NywgNjA0NzMsIAotICAgIDYwNDg5LCA2MDUwNSwgNjA1MjEsIDYwNTM3LCA2MDU1MywgNjA1NjksIDYwNTg1LCA2MDYwMSwgNjA2MTcsIDYwNjMzLCAKLSAgICA2MDY0OSwgNjA2NjUsIDYwNjgxLCA2MDY5NywgNjA3MTMsIDYwNzI5LCA2MDc0NSwgNjA3NjEsIDYwNzc3LCA2MDc5MywgCi0gICAgNjA4MDksIDYwODI1LCA2MDg0MSwgNjA4NTcsIDYwODczLCA2MDg4OSwgNjA5MDUsIDYwOTIxLCA2MDkzNywgNjA5NTMsIAotICAgIDYwOTY5LCA2MDk4NSwgNjEwMDEsIDYxMDE3LCA2MTAzMywgNjEwNDksIDYxMDY1LCA2MTA4MSwgNjEwOTcsIDYxMTEzLCAKLSAgICA2MTEyOSwgNjExNDUsIDYxMTYxLCA2MTE3NywgNjExOTMsIDYxMjA5LCA2MTIyNSwgNjEyNDEsIDYxMjU3LCA2MTI3MywgCi0gICAgNjEyODksIDYxMzA1LCA2MTMyMSwgNjEzMzcsIDYxMzUzLCA2MTM2OSwgNjEzODUsIDYxNDAxLCA2MTQxNywgNjE0MzMsIAotICAgIDYxNDQ5LCA2MTQ2NSwgNjE0ODEsIDYxNDk3LCA2MTUxMywgNjE1MjksIDYxNTQ1LCA2MTU2MSwgNjE1NzcsIDYxNTkzLCAKLSAgICA2MTYwOSwgNjE2MjUsIDYxNjQxLCA2MTY1NywgNjE2NzMsIDYxNjg5LCA2MTcwNSwgNjE3MjEsIDYxNzM3LCA2MTc1MywgCi0gICAgNjE3NjksIDYxNzg1LCA2MTgwMSwgNjE4MTcsIDYxODMzLCA2MTg0OSwgNjE4NjUsIDYxODgxLCA2MTg5NywgNjE5MTMsIAotICAgIDYxOTI5LCA2MTk0NSwgNjE5NjEsIDYxOTc3LCA2MTk5MywgNjIwMDksIDYyMDI1LCA2MjA0MSwgNjIwNTcsIDYyMDczLCAKLSAgICA2MjA4OSwgNjIxMDUsIDYyMTIxLCA2MjEzNywgNjIxNTMsIDYyMTY5LCA2MjE4NSwgNjIyMDEsIDYyMjE3LCA2MjIzMywgCi0gICAgNjIyNDksIDYyMjY1LCA2MjI4MSwgNjIyOTcsIDYyMzEzLCA2MjMyOSwgNjIzNDUsIDYyMzYxLCA2MjM3NywgNjIzOTMsIAotICAgIDYyNDA5LCA2MjQyNSwgNjI0NDEsIDYyNDU3LCA2MjQ3MywgNjI0ODksIDYyNTA1LCA2MjUyMSwgNjI1MzcsIDYyNTUzLCAKLSAgICA2MjU2OSwgNjI1ODUsIDYyNjAxLCA2MjYxNywgNjI2MzMsIDYyNjQ5LCA2MjY2NSwgNjI2ODEsIDYyNjk3LCA2MjcxMywgCi0gICAgNjI3MjksIDYyNzQ1LCA2Mjc2MSwgNjI3NzcsIDYyNzkzLCA2MjgwOSwgNjI4MjUsIDYyODQxLCA2Mjg1NywgNjI4NzMsIAotICAgIDYyODg5LCA2MjkwNSwgNjI5MjEsIDYyOTM3LCA2Mjk1MywgNjI5NjksIDYyOTg1LCA2MzAwMSwgNjMwMTYsIDE4MzA3LCAKLSAgICA2MzAyNSwgNjMwMzAsIDYzMDM2LCA2MzA0MiwgNjMwNTIsIDYzMDYwLCAxNjI3MCwgMTY4NjgsIDEwNzMzLCA2MzA3MywgCi0gICAgMTUxOCwgMTUyMiwgNjMwODEsIDM5NzMsIDI5NTY2LCA3NTEyLCA2MzA4NywgNjMwOTIsIDYzMDk3LCA2MzEwMiwgNjMxMDcsIAotICAgIDYzMTEzLCA2MzExOCwgNjMxMjQsIDYzMTI5LCA2MzEzNSwgNjMxNDAsIDYzMTQ1LCA2MzE1MCwgNjMxNTUsIDYzMTYxLCAKLSAgICA2MzE2NiwgNjMxNzEsIDYzMTc2LCA2MzE4MSwgNjMxODYsIDYzMTkxLCA2MzE5NiwgNjMyMDIsIDYzMjA3LCA2MzIxMywgCi0gICAgNjMyMjAsIDI2MDAsIDYzMjI1LCA2MzIzMSwgODkxMiwgNjMyMzUsIDYzMjQwLCA2MzI0NywgNjMyNTUsIDY1LCA2MzI1OSwgCi0gICAgNjMyNjUsIDYzMjcwLCA2MzI3NSwgNjMyNzksIDYzMjg0LCA2MzI4OCwgNjMyOTIsIDExNjIxLCA2MzI5NiwgNjMzMDYsIAotICAgIDYzMzE5LCA2MzMzMCwgNjMzNDMsIDYzMzUwLCA2MzM1NiwgNjMzNjQsIDYzMzY5LCA2MzM3NSwgNjMzODEsIDYzMzg3LCAKLSAgICA2MzM5MiwgNjMzOTcsIDYzNDAyLCA2MzQwNywgNjM0MTEsIDYzNDE2LCA2MzQyMSwgNjM0MjYsIDYzNDMyLCA2MzQzOCwgCi0gICAgNjM0NDQsIDYzNDQ5LCA2MzQ1MywgNjM0NTgsIDYzNDYzLCA2MzQ2NywgNjM0NzIsIDYzNDc3LCA2MzQ4MiwgNjM0ODYsIAotICAgIDExNjM3LCAxMTY0OCwgMTE2NTMsIDE1NjEsIDYzNDkwLCA2MzQ5NiwgMTU2NiwgNjM1MDEsIDYzNTA0LCAxNzc0MSwgCi0gICAgNjM1MDksIDYzNTE1LCA2MzUyMCwgMTU5NywgNjM1MjYsIDE2MDMsIDE2MDksIDExNjgzLCA2MzUzMSwgNjM1NDAsIDYzNTQ4LCAKLSAgICA2MzU1NSwgNjM1NTksIDYzNTYzLCA2MzU2OSwgNjM1NzQsIDMzMzY1LCA2MzU3OSwgNjM1ODYsIDYzNTkzLCA2MzU5OCwgCi0gICAgNjM2MDIsIDYzNjA2LCA2MzYxNSwgMTYxNCwgMTc4NTAsIDYzNjIwLCA2MzYyNCwgMTc4NjEsIDExNjIsIDYzNjI4LCAKLSAgICA2MzYzNSwgNjM2NDAsIDYzNjQ0LCAxNzg5MSwgMTYxOCwgNDEyNDMsIDYzNjQ3LCA2MzY1MiwgNjM2NjIsIDYzNjcxLCAKLSAgICA2MzY3NiwgNjM2ODAsIDYzNjg2LCAxNjIzLCA0Mzg1NSwgNjM2OTEsIDYzNzAwLCA2MzcwNiwgNjM3MTEsIDYzNzE2LCAKLSAgICAxMTg4MiwgMTE4ODgsIDYzNzIyLCA2MzczNCwgNjM3NTEsIDYzNzY4LCA2Mzc4NSwgNjM4MDIsIDYzODE5LCA2MzgzNiwgCi0gICAgNjM4NTMsIDYzODcwLCA2Mzg4NywgNjM5MDQsIDYzOTIxLCA2MzkzOCwgNjM5NTUsIDYzOTcyLCA2Mzk4OSwgNjQwMDYsIAotICAgIDY0MDIzLCA2NDA0MCwgNjQwNTcsIDY0MDc0LCA2NDA5MSwgNjQxMDgsIDY0MTI1LCA2NDE0MiwgNjQxNTksIDY0MTc2LCAKLSAgICA2NDE5MywgNjQyMTAsIDY0MjI3LCA2NDI0NCwgNjQyNjEsIDY0Mjc4LCA2NDI5NSwgNjQzMTIsIDY0MzI5LCA2NDM0NiwgCi0gICAgNjQzNjMsIDY0MzgwLCA2NDM5NywgNjQ0MTQsIDY0NDMxLCA2NDQ0OCwgNjQ0NjUsIDY0NDgyLCA2NDQ5OSwgNjQ1MTYsIAotICAgIDY0NTMzLCA2NDU1MCwgNjQ1NjcsIDY0NTc4LCA2NDU4OCwgNjQ1OTMsIDE2MjgsIDY0NTk3LCA2NDYwMiwgNjQ2MDgsIAotICAgIDY0NjEzLCA2NDYxOCwgNjQ2MjUsIDk4MzksIDE2MzMsIDY0NjMxLCA2NDY0MCwgMjk4ODcsIDY0NjQ1LCA2NDY1NiwgCi0gICAgMTE4OTksIDY0NjY2LCA2NDY3MSwgNjQ2NzcsIDY0NjgyLCA2NDY4OSwgNjQ2OTUsIDY0NzAwLCAxNjM4LCAxODE3NCwgCi0gICAgNjQ3MDUsIDY0NzExLCAxMTkwOSwgMTY0MywgMTE5MTQsIDY0NzE3LCA2NDcyMiwgNjQ3MjgsIDY0NzMzLCA2NDczOCwgCi0gICAgNjQ3NDMsIDY0NzQ4LCA2NDc1MywgNjQ3NTgsIDY0NzYzLCA2NDc2OCwgNjQ3NzQsIDY0NzgwLCA2NDc4NiwgNjQ3OTEsIAotICAgIDY0Nzk1LCA2NDgwMCwgNjQ4MDUsIDY0ODA5LCA2NDgxNCwgNjQ4MTksIDY0ODI0LCA2NDgyOSwgNjQ4MzMsIDY0ODM4LCAKLSAgICA2NDg0NCwgNjQ4NDksIDY0ODU0LCA2NDg1OCwgNjQ4NjMsIDY0ODY4LCA2NDg3NCwgNjQ4NzksIDY0ODg0LCA2NDg5MCwgCi0gICAgNjQ4OTYsIDY0OTAxLCA2NDkwNSwgNjQ5MTAsIDY0OTE1LCA2NDkyMCwgNjQ5MjQsIDY0OTI5LCA2NDkzNCwgNjQ5MzksIAotICAgIDY0OTQ1LCA2NDk1MSwgNjQ5NTYsIDY0OTYwLCA2NDk2NCwgNjQ5NjksIDY0OTc0LCA2NDk3OSwgMzEzOTUsIDY0OTgzLCAKLSAgICA2NDk4OCwgNjQ5OTMsIDY0OTk5LCA2NTAwNCwgNjUwMDksIDY1MDEzLCA2NTAxOCwgNjUwMjMsIDY1MDI5LCA2NTAzNCwgCi0gICAgNjUwMzksIDY1MDQ1LCA2NTA1MSwgNjUwNTYsIDY1MDYwLCA2NTA2NSwgNjUwNzAsIDY1MDc0LCA2NTA3OSwgNjUwODQsIAotICAgIDY1MDg5LCA2NTA5NSwgNjUxMDEsIDY1MTA2LCA2NTExMCwgNjUxMTUsIDY1MTIwLCA2NTEyNCwgNjUxMjksIDY1MTM0LCAKLSAgICA2NTEzOSwgNjUxNDQsIDY1MTQ4LCA2NTE1MSwgNjUxNTQsIDY1MTU5LCA2NTE2NCwgMzQwNTYsIDY1MTcxLCA2NTE3OSwgCi0gICAgMzY5MSwgMjk4MzcsIDY1MTg1LCA2NTE5MiwgNjUxOTgsIDM4MzAsIDEyMDIwLCA2NTIwNCwgNjUyMTQsIDY1MjI5LCAKLSAgICA2NTIzNywgMTIwMjUsIDY1MjQ4LCA2NTI1MywgNjUyNjQsIDY1Mjc2LCA2NTI4OCwgNjUzMDAsIDI3MzQsIDY1MzEyLCAKLSAgICA2NTMxNywgNjUzMjksIDY1MzMzLCA2NTMzOSwgNjUzNDUsIDY1MzUwLCAxNjYwLCAxNzQxOCwgNjUzNTksIDY1MzY0LCAKLSAgICA0MzkxNCwgNjUzNjgsIDY1MzcyLCA2NTM3NywgNjUzODEsIDE4MzE1LCA2NTM4NiwgNjUzODksIDY1Mzk0LCA2NTQwMiwgCi0gICAgNjU0MTAsIDE2NjQsIDEyMDYxLCAxMjA2NywgMTY2OSwgNjU0MTgsIDY1NDI1LCA2NTQzMCwgNjU0MzksIDY1NDQ5LCAKLSAgICA2NTQ1NiwgNjU0NjEsIDY1NDY2LCAxNjc0LCA2NTQ3MywgNjU0NzgsIDE4NDM1LCA2NTQ4MiwgNjU0ODcsIDY1NDk0LCAKLSAgICA2NTUwMCwgNjU1MDQsIDY1NTE1LCA2NTUyNSwgNjU1MzIsIDE4NDU3LCA5NzMzLCA5NzQwLCA0MDIyLCA0MDI4LCA2NTUzOSwgCi0gICAgMTY3OSwgNjU1NDQsIDY1NTUwLCA2NTU1OCwgNjU1NjUsIDY1NTcxLCA2NTU3OCwgNjU1OTAsIDY1NTk2LCA2NTYwMSwgCi0gICAgNjU2MTMsIDY1NjI0LCA2NTYzMywgNjU2NDMsIDM5NTIsIDY1NjUxLCAzMzE2NiwgMzMxNzUsIDE4NDk3LCAxNjg0LCAxNjg4LCAKLSAgICA2NTY2NCwgNjU2NzUsIDY1NjgwLCAxNjk4LCA2NTY4OCwgNjU2OTMsIDY1Njk4LCAxODU1NiwgNjU3MTAsIDY1NzEzLCAKLSAgICA2NTcxOSwgNjU3MjUsIDY1NzMwLCA2NTczOCwgMTcwMywgNjU3NDMsIDY1NzQ4LCA2NTc1NiwgNjU3NjQsIDY1NzcxLCAKLSAgICA2NTc4MCwgNjU3ODgsIDY1Nzk3LCAxNzA4LCA2NTgwMSwgMTcxMywgMjMwMTYsIDY1ODA2LCA2NTgxMywgMTg2MzAsIAotICAgIDY1ODIxLCA2NTgyNywgNjU4MzIsIDY1ODQwLCA2NTg0NywgNjU4NTUsIDY1ODY1LCA2NTg3NCwgNjU4ODQsIDY1ODkzLCAKLSAgICA2NTkwNCwgNjU5MTQsIDY1OTI0LCA2NTkzMywgNjU5NDMsIDY1OTU3LCA2NTk3MCwgNjU5NzksIDY1OTg3LCA2NTk5NywgCi0gICAgNjYwMDYsIDY2MDE4LCA2NjAyOSwgNjYwNDAsIDY2MDUwLCAxNzk0OCwgNjYwNTUsIDEyMjEzLCA2NjA2NCwgNjYwNzAsIAotICAgIDY2MDc1LCA2NjA4MiwgNjYwODksIDY2MDk1LCAxNzYxNywgNjYxMDUsIDY2MTExLCA2NjExNiwgNjYxMjcsIDY2MTMyLCAKLSAgICA2NjE0MCwgMTIyMzAsIDEyMjM1LCA2NjE0OCwgNjYxNTQsIDY2MTU4LCA2NjE2NiwgNDAxNywgMTg2OTIsIDQ0MDA3LCAKLSAgICA2NjE3MSwgNjYxNzcsIDY2MTgyLCA2NjE5MCwgNjYxOTcsIDEzMTc5LCA2NjIwMiwgNjYyMDgsIDE3MjQsIDY2MjEzLCAKLSAgICA2NjIxNiwgMTQzOCwgNjYyMjIsIDY2MjI3LCA2NjIzMiwgNjYyMzgsIDY2MjQzLCA2NjI0OCwgNjYyNTMsIDY2MjU4LCAKLSAgICA2NjI2MywgNjYyNjgsIDE3MzMsIDEzLCA2NjI3NCwgNjYyNzgsIDY2MjgzLCA2NjI4NywgNjYyOTEsIDY2Mjk1LCAzNDI5NiwgCi0gICAgNjYzMDAsIDI1MDcwLCA2NjMwNSwgNjYzMTAsIDY2MzE0LCA2NjMxNywgNjYzMjEsIDY2MzI1LCA2NjMzMCwgNjYzMzQsIAotICAgIDY2MzM5LCA2NjM0MywgNjYzNDksIDM3NTE0LCAzNzUxOSwgMzc1MjQsIDY2MzUyLCA2NjM1OSwgNjYzNjUsIDY2MzczLCAKLSAgICA0MzY3OCwgNjYzODMsIDM3NTMwLCAzNDU2MCwgMzQzMTEsIDM0MzE3LCAzNzU0NiwgMzQzMjMsIDY2Mzg4LCA2NjM5MywgCi0gICAgMzQ1OTMsIDY2Mzk3LCA2NjQwMCwgNjY0MDQsIDY2NDEyLCA2NjQxOSwgNjY0MjIsIDY2NDI3LCA2NjQzMiwgNjY0MzYsIAotICAgIDY2NDQwLCA2NjQ0MywgNjY0NTMsIDY2NDY1LCA2NjQ3MiwgNjY0NzgsIDM0MzI4LCA2NjQ4NSwgMzYwNzgsIDY2NDg4LCAKLSAgICA4OTI5LCAxMDE5LCA2NjQ5MSwgNjY0OTUsIDY2NTAwLCAzODczLCA2NjUwNCwgNjY1MDcsIDE0ODI3LCA2NjUxNCwgNjY1MjEsIAotICAgIDY2NTM0LCA2NjU0MiwgNjY1NTEsIDY2NTYwLCA2NjU2NSwgNjY1NzUsIDY2NTg4LCA2NjYwMCwgNjY2MDcsIDY2NjEyLCAKLSAgICA2NjYyMSwgNjY2MzQsIDM5MDM5LCA2NjY1MiwgNjY2NTcsIDY2NjY0LCA2NjY3MCwgNjY2NzUsIDgxOSwgNjY2ODAsIAotICAgIDY2Njg4LCA2NjY5NSwgNjY3MDIsIDI5MzkyLCA3ODMsIDY2NzA4LCA2NjcxNCwgNjY3MjQsIDY2NzMyLCA2NjczOCwgCi0gICAgNjY3NDMsIDM0MzQ3LCA2MzEwLCAzNDM2MSwgNjY3NDcsIDY2NzU3LCA2Njc2MiwgNjY3NzIsIDY2Nzg3LCA2Njc5MywgCi0gICAgNjY3OTksIDM0MzcxLCA2NjgwNCwgMzM0ODIsIDY2ODA4LCA2NjgxMywgNjY4MjAsIDY2ODI1LCA2NjgyOSwgNjY4MzQsIAotICAgIDE4NTAwLCA2Njg0MSwgNjY4NDYsIDY2ODUwLCA2MzUxLCAzNDM5NywgNjY4NTQsIDY2ODYwLCAzMjQsIDY2ODcwLCA2Njg3NywgCi0gICAgNjY4ODQsIDY2ODg5LCA2Njg5OCwgNjM2NTYsIDY2OTA0LCA2NjkxMiwgNjY5MTYsIDY2OTIwLCA2NjkyNCwgNjY5MjgsIAotICAgIDY2OTMzLCA2NjkzNywgNjY5NDMsIDY2OTUxLCA2Njk1NiwgNjY5NjEsIDY2OTY2LCA2Njk3MCwgNjY5NzUsIDY2OTc5LCAKLSAgICA2Njk4MywgNjY5ODksIDY2OTk1LCA2NzAwMCwgNjcwMDQsIDY3MDA5LCAzNDUyMSwgNjcwMTMsIDM0NTI3LCAzNDUzMywgCi0gICAgNjcwMTgsIDY3MDI0LCA2NzAzMSwgNjcwMzYsIDY3MDQwLCAzMzQ5OSwgMTgxNjcsIDY3MDQzLCA2NzA0NywgNjcwNTIsIAotICAgIDY3MDU5LCA2NzA2NSwgNjcwNjksIDY3MDc0LCA0MzM1MywgNjcwODAsIDY3MDg0LCA2NzA5MSwgNjcwOTUsIDY3MTAwLCAKLSAgICA2NzEwNiwgNjcxMTIsIDY3MTE4LCA2NzEzMCwgNjcxMzksIDY3MTQ5LCA2NzE1NSwgNjcxNjIsIDY3MTY3LCA2NzE3MiwgCi0gICAgNjcxNzYsIDY3MTc5LCA2NzE4NSwgNjcxOTIsIDY3MTk3LCA2NzIwMiwgNjcyMDksIDY3MjE2LCA2NzIyMywgNjcyMjksIAotICAgIDY3MjM0LCA2NzIzOSwgNjcyNDcsIDM0NTM4LCAyNDYyLCA2NzI1MiwgNjcyNTcsIDY3MjYzLCA2NzI2OCwgNjcyNzQsIAotICAgIDY3Mjc5LCA2NzI4NCwgNjcyODksIDY3Mjk1LCAzNDU1OSwgNjczMDAsIDY3MzA2LCA2NzMxMiwgNjczMTgsIDM0NjI5LCAKLSAgICA2NzMyMywgNjczMjgsIDY3MzMzLCAzNDY0MCwgNjczMzgsIDY3MzQzLCA2NzM0OCwgNjczNTQsIDY3MzYwLCAzNDY0NSwgCi0gICAgNjczNjUsIDY3MzcwLCA2NzM3NSwgMzQ3MDAsIDM0NzA2LCA2NzM4MCwgNjczODUsIDM0NzExLCAzNDczMywgMzAxMzYsIAotICAgIDM0NzM5LCAzNDc0MywgNjczOTAsIDEyOTA5LCA2NzM5NCwgNjc0MDIsIDY3NDA4LCA2NzQxNiwgNjc0MjMsIDY3NDI5LCAKLSAgICA2NzQzOSwgNjc0NDUsIDY3NDUyLCAxMTU1NiwgMzQ3NTcsIDY3NDU4LCA2NzQ3MSwgNjc0ODAsIDY3NDg2LCA2NzQ5NSwgCi0gICAgNjc1MDEsIDI1MzgwLCA2NzUwOCwgNjc1MTUsIDY3NTI1LCA2NzUyOCwgMzQ3MDEsIDY3NTMzLCA2NzU0MCwgNjc1NDUsIAotICAgIDY3NTQ5LCA2NzU1MywgNjc1NTgsIDY3NTYyLCA0MTMzLCA2NzU2NywgNjc1NzIsIDY3NTc3LCAzNzYwOCwgMzc2MTMsIAotICAgIDY3NTgxLCAzNzYyNywgNjc1ODYsIDM3NjMyLCA2NzU5MSwgNjc1OTcsIDM3NjQ0LCAzNzY1MCwgMzc2NTYsIDY3NjAyLCAKLSAgICA2NzYwOCwgMjQzNjYsIDY3NjE5LCA2NzYyMiwgNjc2MzQsIDY3NjQyLCAzNDc4MCwgNjc2NDYsIDY3NjU1LCA2NzY2NSwgCi0gICAgNjc2NzQsIDM0NzkwLCA2NzY3OSwgNjc2ODYsIDY3Njk1LCA2NzcwMSwgNjc3MDksIDY3NzE2LCA2NDAyLCA0NjczLCAKLSAgICA2NzcyMSwgMzQ3MTIsIDY3NzI3LCA2NzczMCwgNjc3MzYsIDY3NzQzLCA2Nzc0OCwgNjc3NTMsIDI1MjkwLCA2Nzc1NywgCi0gICAgNjc3NjMsIDY3NzY5LCA2Nzc3NCwgNjc3NzksIDY3NzgzLCA2Nzc4OSwgNjc3OTUsIDM1OTg0LCAxMDQ4LCAzODY4OSwgCi0gICAgNDA0MTksIDQwNDI1LCAzNDgyMSwgMzQ4MjYsIDY3ODAwLCA2NzgwNCwgNjc4MDgsIDY3ODExLCA2NzgyNCwgNjc4MzAsIAotICAgIDY3ODM0LCA2NzgzNywgNjc4NDIsIDM2MzIxLCA2Nzg0NiwgMzM1MDQsIDIyOTY2LCA2Nzg1MiwgNjMzMSwgNjMzOSwgOTU3MCwgCi0gICAgNjc4NTUsIDY3ODYwLCA2Nzg2NSwgNjc4NzAsIDY3ODc1LCA2Nzg4MCwgNjc4ODUsIDY3ODkwLCA2Nzg5NSwgNjc5MDAsIAotICAgIDY3OTA2LCA2NzkxMSwgNjc5MTYsIDY3OTIyLCA2NzkyNywgNjc5MzIsIDY3OTM3LCA2Nzk0MiwgNjc5NDcsIDY3OTUyLCAKLSAgICA2Nzk1OCwgNjc5NjMsIDY3OTY5LCA2Nzk3NCwgNjc5NzksIDY3OTg0LCA2Nzk4OSwgNjc5OTQsIDY3OTk5LCA2ODAwNCwgCi0gICAgNjgwMDksIDY4MDE0LCA2ODAxOSwgNjgwMjUsIDY4MDMwLCA2ODAzNSwgNjgwNDAsIDY4MDQ1LCA2ODA1MCwgNjgwNTUsIAotICAgIDY4MDYxLCA2ODA2NiwgNjgwNzEsIDY4MDc2LCA2ODA4MSwgNjgwODYsIDY4MDkxLCA2ODA5NiwgNjgxMDEsIDY4MTA2LCAKLSAgICA2ODExMiwgNjgxMTcsIDY4MTIyLCA2ODEyNywgNjgxMzIsIDY4MTM4LCA2ODE0NCwgNjgxNDksIDY4MTU1LCA2ODE2MCwgCi0gICAgNjgxNjUsIDY4MTcwLCA2ODE3NSwgNjgxODAsIDE1MTEsIDE0NSwgNjgxODUsIDY4MTg5LCA2ODE5MywgNjgxOTcsIDI3MDc2LCAKLSAgICA2ODIwMSwgNjgyMDUsIDY4MjEwLCA2ODIxNCwgNjgyMTksIDY4MjIzLCA2ODIyOCwgNjgyMzMsIDY4MjM4LCA2ODI0MiwgCi0gICAgNjgyNDYsIDY4MjUxLCA2ODI1NSwgMTQ1NDIsIDY4MjYwLCA2ODI2NCwgNjgyNzEsIDY4MjgxLCAxNjU5NSwgNjgyOTAsIAotICAgIDY4Mjk5LCA2ODMwMywgNjgzMDgsIDY4MzEzLCA2ODMxNywgNjgzMjEsIDI2ODcwLCAzMDc4LCA2ODMyNSwgNjgzMzEsIAotICAgIDE4OTY3LCA2ODMzNSwgNjgzNDQsIDY4MzUyLCA2ODM1OCwgNjgzNjMsIDY4Mzc1LCA2ODM4NywgNjgzOTIsIDY4Mzk2LCAKLSAgICA2ODQwMSwgNjg0MDUsIDY4NDExLCA2ODQxNywgNjg0MjIsIDY4NDMyLCA2ODQ0MiwgNjg0NDgsIDY4NDUzLCA2ODQ1NywgCi0gICAgNjg0NjMsIDY4NDY4LCA2ODQ3NSwgNjg0ODEsIDY4NDg2LCA2ODQ5NSwgNjg1MDQsIDY4NTEyLCAxNjk5MywgNjg1MTYsIAotICAgIDY4NTI1LCA2ODUzMywgNjg1NDUsIDY4NTU2LCA2ODU2NywgNjg1NzYsIDY4NTgwLCA2ODU4OSwgNjg1OTcsIDY4NjA3LCAKLSAgICA2ODYxNSwgNjg2MjIsIDY4NjI4LCA2ODYzMywgNjg2MzksIDY4NjQ0LCA2ODY1NSwgNTQsIDMzMzA5LCA2ODY2MSwgMjgzMzEsIAotICAgIDI4MzQxLCA2ODY2NywgNjg2NzUsIDY4NjgyLCA2ODY4OCwgNjg2OTIsIDY4NzAyLCA2ODcxMywgNjg3MjEsIDY4NzMwLCAKLSAgICA2ODczNSwgNjg3NDAsIDY4NzQ1LCA2ODc0OSwgNjg3NTMsIDE4OTIxLCA2ODc2MSwgNjg3NjUsIDY4NzcxLCA2ODc4MSwgCi0gICAgNjg3ODgsIDY4Nzk0LCA2ODgwMCwgMzc3MDcsIDY4ODA0LCA2ODgwNiwgNjg4MDksIDY4ODE1LCA2ODgxOSwgNjg4MzAsIAotICAgIDY4ODQwLCA2ODg0NiwgNjg4NTMsIDY4ODYwLCAxNDQ3OSwgNjg4NjgsIDY4ODc0LCA2ODg4MywgNjg4OTIsIDY4ODk4LCAKLSAgICAxMDYxNSwgNjg5MDQsIDY4OTEwLCA2ODkxNSwgNjg5MjAsIDY4OTI3LCA2ODkzMiwgNjg5MzksIDY4OTQ1LCA2ODk1MCwgCi0gICAgNjg5NTgsIDY4OTcxLCA2ODk4MCwgNjU5MTksIDY1OTI5LCA2ODk4OSwgNjg5OTUsIDY5MDAxLCA2OTAwOCwgNjkwMTUsIAotICAgIDY5MDIyLCA2OTAyOSwgNjkwMzYsIDY5MDQxLCA2OTA0NSwgNjkwNDksIDY5MDUyLCA2OTA2MiwgNjkwNjYsIDY5MDc4LCAKLSAgICA2OTA4NywgNjkwOTEsIDY5MTAyLCA2OTEwNywgNjkxMTEsIDY1OTM4LCA2OTExNywgNjkxMjQsIDY5MTMzLCA2OTE0MSwgCi0gICAgNjkxNDksIDY5MTU0LCA2OTE1OCwgNjkxNjMsIDY5MTY4LCA2OTE3OCwgNjkxODYsIDY5MTkxLCA2OTE5NSwgNjkxOTksIAotICAgIDY5MjA1LCA2OTIxMywgNjkyMjAsIDY5MjMyLCA2OTI0MCwgNjkyNTEsIDY5MjU4LCA2OTI2NCwgNjkyNzQsIDY5MjgwLCAKLSAgICA2OTI4NCwgNjkyOTEsIDY5Mjk3LCA2OTMwMiwgNjkzMDYsIDY5MzEwLCA2OTMxNCwgNjkzMjMsIDY5MzMyLCA2OTM0MSwgCi0gICAgNjkzNDcsIDY5MzUzLCA2OTM1OSwgNjkzNjQsIDY5MzcxLCA2OTM3NywgNjkzODUsIDY5MzkyLCA2OTM5OCwgMTM2MjIsIAotICAgIDY5NDAzLCA2OTQwOSwgNjk0MTMsIDE1NTI5LCA2OTQxNywgNjk0MjIsIDY5NDMyLCA2OTQ0MSwgNjk0NDcsIDY5NDUzLCAKLSAgICA2OTQ2MSwgNjk0NjgsIDY5NDcyLCA2OTQ3NiwgNjk0ODIsIDY5NDkwLCA2OTQ5NywgNjk1MDMsIDY5NTE0LCA2OTUxOCwgCi0gICAgNjk1MjIsIDY5NTI2LCA2OTUyOSwgNjk1MzUsIDY5NTQwLCA2OTU0NSwgNjk1NDksIDY5NTUzLCA2OTU2MiwgNjk1NzAsIAotICAgIDY5NTc3LCA2OTU4MywgNjk1OTAsIDI1OTYzLCA0MzQyMiwgNjk1OTUsIDY5NjAzLCA2OTYwNywgNjk2MTEsIDY5NjE0LCAKLSAgICA2OTYyMiwgNjk2MjksIDY5NjM1LCA2OTY0NCwgNjk2NTIsIDY5NjU4LCA2OTY2MywgNjk2NjcsIDY5NjcyLCA2OTY3NywgCi0gICAgNjk2ODEsIDY5Njg1LCA2OTY4OSwgNjk2OTQsIDY5NzAzLCA2OTcwNywgNjk3MTQsIDQwNTI4LCA2OTcxOCwgNjk3MjQsIAotICAgIDY5NzI4LCA2OTczNiwgNjk3NDIsIDY5NzQ3LCA2OTc1OCwgNjk3NjYsIDY5NzcyLCA2OTc4MSwgMjQ1MTMsIDY5Nzg5LCAKLSAgICA2OTc5NiwgNjk4MDMsIDY5ODEwLCA2OTgxNywgNjk4MjQsIDQ2NzA0LCAxNDMxNywgNjk4MzEsIDY5ODM4LCA2OTg0MywgCi0gICAgMzc3NDMsIDY1MjksIDY5ODQ5LCA2OTg1NCwgNjk4NTksIDY5ODY1LCA2OTg3MSwgNjk4NzcsIDY5ODgyLCA2OTg4NywgCi0gICAgNjk4OTIsIDY5ODk3LCA2OTkwMywgNjk5MDgsIDY5OTE0LCA2OTkxOSwgNjk5MjUsIDY5OTMwLCA2OTkzNSwgNjk5NDAsIAotICAgIDY5OTQ1LCA2OTk1MCwgNjk5NTUsIDY5OTYwLCA2OTk2NiwgNjk5NzEsIDY5OTc3LCA2OTk4MiwgNjk5ODcsIDY5OTkyLCAKLSAgICA2OTk5NywgNzAwMDIsIDcwMDA3LCA3MDAxMywgNzAwMTgsIDcwMDIzLCA3MDAyOCwgNzAwMzMsIDcwMDM4LCA3MDA0MywgCi0gICAgNzAwNDgsIDcwMDUzLCA3MDA1OCwgNzAwNjMsIDcwMDY5LCA3MDA3NCwgNzAwNzksIDcwMDg0LCA3MDA4OSwgNzAwOTQsIAotICAgIDcwMDk5LCA3MDEwNCwgNzAxMDksIDcwMTE1LCA3MDEyMCwgNzAxMjUsIDcwMTMwLCA3MDEzNSwgNzAxNDAsIDcwMTQ1LCAKLSAgICA3MDE1MCwgNzAxNTUsIDcwMTYwLCA3MDE2NSwgNzAxNzAsIDcwMTc1LCA3MDE4MSwgMTg1NCwgMjYwLCA3MDE4NiwgNDEzNjEsIAotICAgIDcwMTkwLCA3MDE5MywgNzAxOTgsIDcwMjAyLCA3MDIwNSwgMzQxNSwgNzAyMTAsIDcwMjE1LCA3MDIxOSwgNzAyMjgsIAotICAgIDcwMjM5LCA3MDI1NiwgNzAyNzQsIDY5MTQ1LCA3MDI4MiwgNzAyODUsIDcwMjk1LCA3MDMwMiwgNzAzMTEsIDcwMzI3LCAKLSAgICA3MDMzNiwgNzAzNDYsIDcwMzUxLCA3MDM2MSwgNzAzNzAsIDcwMzc4LCA3MDM5MiwgNzA0MDAsIDcwNDA0LCA3MDQwNywgCi0gICAgNzA0MTQsIDcwNDIwLCA3MDQzMSwgNzA0MzgsIDcwNDUwLCA3MDQ2MSwgNzA0NzIsIDcwNDgxLCA3MDQ4OCwgMTI3OCwgNzEwLCAKLSAgICA3MDQ5OCwgMjYyOSwgNzA1MDIsIDcwNTA3LCA3MDUxNiwgOTIyMSwgMTg4OTQsIDIyNDcxLCA3MDUyNCwgNzA1MzIsIAotICAgIDcwNTQ2LCA3MDU1OSwgNzA1NjMsIDcwNTY4LCA3MDU3MywgNzA1NzgsIDcwNTg0LCA3MDU5MCwgNzA1OTUsIDg5MjEsIAotICAgIDE2NjIzLCA3MDYwMCwgNzA2MDQsIDcwNjEyLCAxMjA2MiwgNzA2MTcsIDcwNjIzLCA3MDYzMiwgNzA2NDAsIDE3MzYsIAotICAgIDEyMDc0LCA5MDgsIDY0NjUsIDcwNjQ0LCA3MDY0OCwgNzA2NTcsIDcwNjY3LCAyNDE5LCAyOTEyNywgNzA2NzYsIDcwNjgyLCAKLSAgICAxODQwNywgMjkxNDIsIDcwNjg4LCA0MTkzLCAxMjQ1MiwgNzA2OTQsIDcwNzAxLCA2NTY3MCwgNzA3MDUsIDcwNzA5LCAKLSAgICA3MDcxNSwgNzA3MjAsIDcwNzI1LCAzNjM0LCAxNTQsIDE1NDM3LCA3MDczMCwgNzA3NDIsIDcwNzQ2LCA3MDc1MiwgNzA3NTcsIAotICAgIDI5OTA3LCA3MDc2MSwgMTI0NDAsIDI3NjksIDQsIDcwNzY2LCA3MDc3NiwgNzA3ODcsIDcwNzkzLCA3MDgwNCwgNzA4MTEsIAotICAgIDcwODE3LCA3MDgyMywgNzA4MzEsIDcwODM4LCA3MDg0NCwgNzA4NTQsIDcwODY0LCA3MDg3NCwgNzA4ODMsIDI1MzY3LCAKLSAgICAxMjkwLCA3MDg4OCwgNzA4OTIsIDcwODk2LCA3MDkwMiwgNzA5MDYsIDI3OTIsIDI3OTgsIDg5MTgsIDIyOTQsIDcwOTEwLCAKLSAgICA3MDkxNCwgNzA5MjMsIDcwOTMxLCA3MDk0MiwgNzA5NTAsIDcwOTU4LCA3MDk2NCwgNzA5NjksIDcwOTgwLCA3MDk5MSwgCi0gICAgNzA5OTksIDcxMDA1LCA3MTAxMCwgMTA0MzQsIDcxMDIwLCA3MTAyOCwgNzEwMzIsIDcxMDM2LCA3MTA0MSwgNzEwNDUsIAotICAgIDcxMDU3LCAzMDMxNCwgMTY1NDgsIDcxMDY0LCA3MTA3NCwgNzEwODAsIDcxMDg2LCAxMDUzNiwgNzEwOTYsIDcxMTA3LCAKLSAgICA3MTExOCwgNzExMjgsIDcxMTM3LCA3MTE0MSwgNzExNDgsIDE3NTAsIDk5NiwgNzExNTgsIDcxMTYzLCA3MTE3MSwgNjU0ODMsIAotICAgIDcxMTc5LCA3MTE4NCwgNzExOTUsIDcxMjAyLCA3MTIxNiwgMTUzNjYsIDQ3OCwgNzEyMjYsIDcxMjMwLCA3MTIzNCwgCi0gICAgNzEyNDIsIDcxMjUxLCA3MTI1OSwgNzEyNjUsIDcxMjc5LCA3MTI4NiwgNzEyOTIsIDcxMzAxLCA3MTMwOCwgNzEzMTgsIAotICAgIDcxMzI2LCA3MTMzMywgNzEzNDEsIDcxMzQ4LCA0MDI0LCAxNDksIDcxMzU2LCA3MTM2NywgNzEzNzEsIDcxMzgzLCA3MTM4OSwgCi0gICAgMTI2MzMsIDE5MiwgNzEzOTQsIDk4NzEsIDcxMzk5LCA3MTQwMywgNzE0MTAsIDcxNDE2LCA3MTQyNCwgNzE0MzEsIDkyODAsIAotICAgIDcxNDM4LCA3MTQ0NywgNzE0NTUsIDQwOTMsIDcxNDY4LCA0MTEwLCA3MTQ3MiwgMjg0MiwgNTE0LCA3MTQ3NywgNzE0OTAsIAotICAgIDcxNDk0LCA3MTQ5OSwgMjg0NywgMTg1MywgODA5LCA3MTUwMywgNDExNCwgNzE1MTEsIDcxNTE3LCA3MTUyMSwgODY2LCAKLSAgICA3MTUzMSwgNzE1NDAsIDcxNTQ1LCAzNjUxLCA3MTU0OSwgMTYzMDQsIDE2MzExLCA1MDA2NiwgNzE1NTMsIDQxNDUsIDQwMzQsIAotICAgIDE0MjAwLCA3MTU2MSwgNzE1NjgsIDcxNTczLCAyNTQzMSwgNzE1NzcsIDcxNTg0LCA3MTU5MCwgNzE1OTUsIDcxNjAwLCAKLSAgICAxNjMyNCwgMTg2LCA3MTYwNSwgNzE2MTcsIDcxNjIzLCA3MTYzMSwgMjg1OSwgMTc2OCwgNzE2MzksIDcxNjQxLCA3MTY0NiwgCi0gICAgNzE2NTEsIDcxNjU2LCA3MTY2MiwgNzE2NjcsIDcxNjcyLCA3MTY3NywgNzE2ODIsIDcxNjg3LCA3MTY5MiwgNzE2OTgsIAotICAgIDcxNzAzLCA3MTcwOCwgNzE3MTMsIDcxNzE4LCA3MTcyMywgNzE3MjgsIDcxNzMzLCA3MTczOCwgNzE3NDQsIDcxNzQ5LCAKLSAgICA3MTc1NCwgNzE3NTksIDcxNzY1LCA3MTc3MCwgNzE3NzYsIDcxNzgxLCA3MTc4NiwgNzE3OTEsIDcxNzk2LCA3MTgwMSwgCi0gICAgNzE4MDYsIDcxODExLCA3MTgxNywgNzE4MjIsIDcxODI4LCA3MTgzMywgNzE4MzgsIDcxODQzLCA3MTg0OCwgNzE4NTMsIAotICAgIDcxODU4LCA3MTg2MywgNzE4NjgsIDcxODc0LCA3MTg4MCwgNzE4ODUsIDcxODkwLCA3MTg5NiwgNzE5MDEsIDcxOTA1LCAKLSAgICA3MTkwOSwgNzE5MTQsIDcxOTIwLCA3MTkyNCwgNzE5MzAsIDcxOTM1LCA3MTk0MCwgNzE5NDYsIDcxOTUxLCA3MTk1NSwgCi0gICAgNzE5NjAsIDcxOTY1LCA3MTk2OSwgNzE5NzIsIDcxOTc0LCA3MTk3OCwgNzE5ODEsIDcxOTg4LCA3MTk5MywgNzE5OTcsIAotICAgIDcyMDAyLCA3MjAwNiwgNzIwMTAsIDcyMDE0LCA3MjAyMywgNzIwMjcsIDM1MDI2LCA3MjAzMCwgMzUwMzEsIDcyMDM3LCAKLSAgICA3MjA0MiwgMzUwMzYsIDcyMDUxLCA3MjA2MCwgMzUwNDIsIDcyMDY1LCAzNTA0NywgNzIwNzQsIDcyMDc5LCAxMjY3NiwgCi0gICAgNzIwODMsIDcyMDg4LCA3MjA5MywgMzUwNTIsIDcyMDk3LCA0NDkyMSwgNzIxMDEsIDcyMTA0LCA3MjEwOCwgODU4OSwgCi0gICAgNzIxMTQsIDcyMTE3LCA3MjEyMiwgNzIxMjYsIDM4ODgsIDM1MDU3LCA3MjEyOSwgNzIxMzMsIDcyMTM2LCA3MjE0MSwgCi0gICAgNzIxNDUsIDcyMTUxLCA3MjE1OSwgNzIxNzIsIDcyMTgxLCA3MjE4NywgNzIxOTIsIDcyMTk4LCA3MjIwMiwgNzIyMDgsIAotICAgIDcyMjE0LCA3MjIyMiwgNzIyMjcsIDcyMjMxLCA3MjIzOCwgNzIyNDQsIDcyMjUyLCA3MjI2MSwgNzIyNjksIDM1MDYwLCAKLSAgICA3MjI3NiwgNzIyODYsIDcyMjk5LCA3MjMwNCwgNzIzMDksIDcyMzEzLCA3MjMyMiwgNzIzMjgsIDcyMzM1LCA3MjM0NiwgCi0gICAgNzIzNTgsIDcyMzY1LCA3MjM3NCwgNzIzODMsIDcyMzkyLCA3MjM5OSwgNzI0MDUsIDcyNDEyLCA3MjQyMCwgNzI0MjcsIAotICAgIDcyNDM1LCA3MjQ0NCwgNzI0NTIsIDcyNDU5LCA3MjQ2NywgNzI0NzYsIDcyNDg0LCA3MjQ5MywgNzI1MDMsIDcyNTEyLCAKLSAgICA3MjUyMCwgNzI1MjcsIDcyNTM1LCA3MjU0NCwgNzI1NTIsIDcyNTYxLCA3MjU3MSwgNzI1ODAsIDcyNTg4LCA3MjU5NywgCi0gICAgNzI2MDcsIDcyNjE2LCA3MjYyNiwgNzI2MzcsIDcyNjQ3LCA3MjY1NiwgNzI2NjQsIDcyNjcxLCA3MjY3OSwgNzI2ODgsIAotICAgIDcyNjk2LCA3MjcwNSwgNzI3MTUsIDcyNzI0LCA3MjczMiwgNzI3NDEsIDcyNzUxLCA3Mjc2MCwgNzI3NzAsIDcyNzgxLCAKLSAgICA3Mjc5MSwgNzI4MDAsIDcyODA4LCA3MjgxNywgNzI4MjcsIDcyODM2LCA3Mjg0NiwgNzI4NTcsIDcyODY3LCA3Mjg3NiwgCi0gICAgNzI4ODYsIDcyODk3LCA3MjkwNywgNzI5MTgsIDcyOTMwLCA3Mjk0MSwgNzI5NTEsIDcyOTYwLCA3Mjk2OCwgNzI5NzUsIAotICAgIDcyOTgzLCA3Mjk5MiwgNzMwMDAsIDczMDA5LCA3MzAxOSwgNzMwMjgsIDczMDM2LCA3MzA0NSwgNzMwNTUsIDczMDY0LCAKLSAgICA3MzA3NCwgNzMwODUsIDczMDk1LCA3MzEwNCwgNzMxMTIsIDczMTIxLCA3MzEzMSwgNzMxNDAsIDczMTUwLCA3MzE2MSwgCi0gICAgNzMxNzEsIDczMTgwLCA3MzE5MCwgNzMyMDEsIDczMjExLCA3MzIyMiwgNzMyMzQsIDczMjQ1LCA3MzI1NSwgNzMyNjQsIAotICAgIDczMjcyLCA3MzI4MSwgNzMyOTEsIDczMzAwLCA3MzMxMCwgNzMzMjEsIDczMzMxLCA3MzM0MCwgNzMzNTAsIDczMzYxLCAKLSAgICA3MzM3MSwgNzMzODIsIDczMzk0LCA3MzQwNSwgNzM0MTUsIDczNDI0LCA3MzQzNCwgNzM0NDUsIDczNDU1LCA3MzQ2NiwgCi0gICAgNzM0NzgsIDczNDg5LCA3MzQ5OSwgNzM1MTAsIDczNTIyLCA3MzUzMywgNzM1NDUsIDczNTU4LCA3MzU3MCwgNzM1ODEsIAotICAgIDczNTkxLCA3MzYwMCwgNzM2MDgsIDczNjE1LCA3MzYyMywgNzM2MzIsIDczNjQwLCA3MzY0OSwgNzM2NTksIDczNjY4LCAKLSAgICA3MzY3NiwgNzM2ODUsIDczNjk1LCA3MzcwNCwgNzM3MTQsIDczNzI1LCA3MzczNSwgNzM3NDQsIDczNzUyLCA3Mzc2MSwgCi0gICAgNzM3NzEsIDczNzgwLCA3Mzc5MCwgNzM4MDEsIDczODExLCA3MzgyMCwgNzM4MzAsIDczODQxLCA3Mzg1MSwgNzM4NjIsIAotICAgIDczODc0LCA3Mzg4NSwgNzM4OTUsIDczOTA0LCA3MzkxMiwgNzM5MjEsIDczOTMxLCA3Mzk0MCwgNzM5NTAsIDczOTYxLCAKLSAgICA3Mzk3MSwgNzM5ODAsIDczOTkwLCA3NDAwMSwgNzQwMTEsIDc0MDIyLCA3NDAzNCwgNzQwNDUsIDc0MDU1LCA3NDA2NCwgCi0gICAgNzQwNzQsIDc0MDg1LCA3NDA5NSwgNzQxMDYsIDc0MTE4LCA3NDEyOSwgNzQxMzksIDc0MTUwLCA3NDE2MiwgNzQxNzMsIAotICAgIDc0MTg1LCA3NDE5OCwgNzQyMTAsIDc0MjIxLCA3NDIzMSwgNzQyNDAsIDc0MjQ4LCA3NDI1NywgNzQyNjcsIDc0Mjc2LCAKLSAgICA3NDI4NiwgNzQyOTcsIDc0MzA3LCA3NDMxNiwgNzQzMjYsIDc0MzM3LCA3NDM0NywgNzQzNTgsIDc0MzcwLCA3NDM4MSwgCi0gICAgNzQzOTEsIDc0NDAwLCA3NDQxMCwgNzQ0MjEsIDc0NDMxLCA3NDQ0MiwgNzQ0NTQsIDc0NDY1LCA3NDQ3NSwgNzQ0ODYsIAotICAgIDc0NDk4LCA3NDUwOSwgNzQ1MjEsIDc0NTM0LCA3NDU0NiwgNzQ1NTcsIDc0NTY3LCA3NDU3NiwgNzQ1ODYsIDc0NTk3LCAKLSAgICA3NDYwNywgNzQ2MTgsIDc0NjMwLCA3NDY0MSwgNzQ2NTEsIDc0NjYyLCA3NDY3NCwgNzQ2ODUsIDc0Njk3LCA3NDcxMCwgCi0gICAgNzQ3MjIsIDc0NzMzLCA3NDc0MywgNzQ3NTQsIDc0NzY2LCA3NDc3NywgNzQ3ODksIDc0ODAyLCA3NDgxNCwgNzQ4MjUsIAotICAgIDc0ODM3LCA3NDg1MCwgNzQ4NjIsIDc0ODc1LCA3NDg4OSwgNzQ5MDIsIDc0OTE0LCA3NDkyNSwgNzQ5MzUsIDc0OTQ0LCAKLSAgICA3NDk1MiwgNzQ5NTksIDc0OTY0LCA4NDE5LCA3NDk3MSwgMzUwNzAsIDc0OTc2LCA3NDk4MSwgMzUwNzUsIDc0OTg3LCAKLSAgICAyMjU3OSwgMzUwODAsIDc0OTkyLCA3NDk5OCwgNzUwMDYsIDc1MDEyLCA3NTAxOCwgNzUwMjUsIDc1MDMyLCA3NTAzNywgCi0gICAgNzUwNDEsIDc1MDQ1LCA3NTA0OCwgNzUwNTIsIDc1MDYxLCA3NTA3MCwgNzUwNzgsIDc1MDg0LCA3NTA5NiwgNzUxMDcsIAotICAgIDc1MTExLCAzMTQwLCA4Mzk0LCA3NTExNiwgNzUxMTksIDc1MTIxLCA3NTEyNSwgNzUxMjksIDc1MTMzLCA3NTEzOSwgCi0gICAgNzUxNDQsIDI3OTkwLCA3NTE0OSwgNzUxNTMsIDc1MTU2LCA3NTE2MSwgNzUxNjUsIDc1MTcyLCA3NTE3OCwgNzUxODIsIAotICAgIDY0ODUsIDc1MTg2LCAzNTA5NywgNzUxOTEsIDc1MTk4LCA3NTIwNywgNzUyMTUsIDc1MjI2LCA3NTIzNCwgNzUyNDMsIAotICAgIDc1MjUxLCA3NTI1OCwgNzUyNjUsIDc1MjcxLCA3NTI4MiwgMzUxMDIsIDc1Mjg3LCA3NTI5OCwgNzUzMTAsIDc1MzE4LCAKLSAgICA3NTMyOSwgNzUzMzgsIDc1MzQ5LCA3NTM1NCwgNzUzNjIsIDI1OTUsIDc1MzY3LCAzNzE2NiwgNzUzODAsIDc1Mzg0LCAKLSAgICA3NTM5NiwgNzU0MDQsIDc1NDA5LCA3NTQxNywgNzU0MjgsIDE5MTE0LCA3NTQzNywgNzU0NDMsIDc1NDUwLCA3NTQ1OCwgCi0gICAgNzU0NjQsIDM1MTEyLCA3NTQ2OSwgNDEzOSwgNjMwNTYsIDc1NDc2LCA3NTQ3OSwgNzU0ODcsIDc1NTAwLCA3NTUxMywgCi0gICAgNzU1MjYsIDc1NTM5LCA3NTU0NiwgNzU1NTcsIDc1NTY2LCA3NTU3MSwgNDY1MjEsIDQ2NTI2LCA3NTU3NSwgNzU1NzksIAotICAgIDc1NTg3LCA3NTU5NCwgNzU2MDMsIDc1NjExLCA3NTYxNywgNzU2MjYsIDc1NjM0LCA3NTY0MSwgNzU2NDksIDc1NjUzLCAKLSAgICA3NTY2MiwgNzU2NzEsIDc1NjgxLCA3NTY5NCwgNzU3MDcsIDc1NzE3LCAzNTExNywgNzU3MjMsIDc1NzMwLCA3NTczNiwgCi0gICAgNzU3NDIsIDM1MTIzLCA3NTc0NywgNzU3NTAsIDc1NzU0LCA3NTc2MiwgNzU3NzEsIDQ2MjU5LCA3NTc3OSwgNzU3ODgsIAotICAgIDc1Nzk2LCA3NTgwMywgNzU4MTEsIDc1ODIxLCA3NTgzMCwgNzU4MzksIDM2NDIwLCA3NTg0OCwgNzU4NTksIDc1ODc0LCAKLSAgICA3NTg4NCwgOTkwNCwgMjMyNjMsIDc1ODkzLCA3NTg5OCwgNzU5MDMsIDc1OTA3LCA3NTkxMiwgNzU5MTYsIDc1OTIxLCAKLSAgICA3NTkyNywgNzU5MzIsIDc1OTM3LCA3NTk0MywgNzU5NDgsIDc1OTUzLCAyMzIyOCwgNzU5NTgsIDc1OTY1LCA3NTk3MywgCi0gICAgNzU5ODEsIDc1OTg5LCA3NTk5NCwgNzYwMDEsIDc2MDA4LCA3NjAxMywgMjI3MiwgNzYwMTcsIDc2MDIxLCA3NjAyOSwgCi0gICAgNzYwMzcsIDM1MTQwLCA3NjA0MywgNzYwNDksIDc2MDYxLCA3NjA2NywgNzYwNzQsIDc2MDc4LCA3NjA4NSwgNzYwOTAsIAotICAgIDc2MDk3LCA3NjEwMywgNzYxMTAsIDc2MTIxLCA3NjEzMSwgNzYxNDEsIDc2MTUzLCA3NjE1OSwgNzYxNjcsIDc2MTczLCAKLSAgICA3NjE4MywgNzYxOTMsIDM1MTY3LCA3NjIwMiwgNzYyMTEsIDc2MjE3LCA3NjIyOSwgNzYyNDAsIDc2MjQ3LCA3NjI1MiwgCi0gICAgNzYyNTYsIDc2MjY0LCA3NjI3MCwgNzYyNzUsIDc2MjgwLCA3NjI4NywgNzYyOTUsIDc2MzA3LCA3NjMxNywgNzYzMjYsIAotICAgIDc2MzM1LCA3NjM0MiwgMzcwMTksIDI1NzY0LCA3NjM0OCwgNzYzNTMsIDc2MzU3LCA3NjM2MSwgNzYzNjYsIDc2Mzc0LCAKLSAgICA3NjM4MCwgNzYzOTEsIDc2NDA0LCA3NjQwOSwgNzY0MTYsIDM1MTcyLCA3NjQyMSwgNzY0MzMsIDc2NDQyLCA3NjQ1MCwgCi0gICAgNzY0NjAsIDc2NDcxLCA3NjQ4NCwgNzY0OTEsIDc2NTAwLCA3NjUwOSwgNzY1MTcsIDc2NTIyLCA3NjUyOCwgMTUwMCwgCi0gICAgNzY1MzMsIDc2NTM4LCA3NjU0MywgNzY1NDgsIDc2NTU0LCA3NjU1OSwgNzY1NjQsIDc2NTcwLCA3NjU3NiwgNzY1ODEsIAotICAgIDc2NTg1LCA3NjU5MCwgNzY1OTUsIDc2NjAwLCA2MzYxMSwgNzY2MDUsIDc2NjEwLCA3NjYxNSwgNzY2MjAsIDc2NjI2LCAKLSAgICA3NjYzMiwgNzY2MzcsIDc2NjQxLCA3NjY0NiwgNzY2NTEsIDc2NjU2LCA3NjY2MiwgNzY2NjcsIDc2NjczLCA3NjY3OCwgCi0gICAgNzY2ODMsIDc2Njg4LCA3NjY5MywgNzY2OTcsIDc2NzAzLCA3NjcwOCwgNzY3MTcsIDc2NzIyLCA3NjcyNywgNzY3MzIsIAotICAgIDc2NzM3LCA3Njc0MSwgNzY3NDgsIDc2NzU0LCA0NDMwLCAxODczNywgMzEwNSwgNzY3NTksIDc2NzYzLCA3Njc2OCwgCi0gICAgNzY3NzIsIDc2Nzc2LCA3Njc4MCwgNTAzMjEsIDc2Nzg0LCA3NjcwOSwgNzY3ODYsIDc2Nzk2LCAzNTE4MSwgNzY3OTksIAotICAgIDc2ODA0LCA3NjgxMywgNzY4MTksIDY0NTQsIDM1MTg2LCA3NjgyMywgNzY4MjksIDc2ODM0LCA3Njg0MCwgNzY4NDUsIAotICAgIDc2ODQ5LCA3Njg1NiwgNzY4NjEsIDc2ODcxLCA3Njg4MCwgNzY4ODQsIDc2ODkwLCA3Njg5NiwgNzY5MDIsIDc2OTA2LCAKLSAgICA3NjkxNCwgNzY5MjEsIDc2OTI5LCA3NjkzNywgMzUxOTEsIDc2OTQ0LCA3Njk0NywgNzY5NTQsIDc2OTYwLCA3Njk2NSwgCi0gICAgNzY5NjksIDc2OTc1LCA3Njk4MiwgNzY5ODcsIDc2OTkxLCA3NzAwMCwgNzcwMDgsIDc3MDE0LCA3NzAxOSwgMzUxOTYsIAotICAgIDc3MDI2LCA3NzAzOCwgNzcwNDUsIDc3MDUxLCA3NzA1NiwgNzcwNjIsIDc3MDY5LCA3NzA3NSwgMjI5NzksIDI5NTg5LCAKLSAgICA3NzA4MSwgNzcwODYsIDc3MDkyLCA3NzA5NiwgNzcxMDgsIDc2NzQyLCA3Njc0OSwgMjMxNjAsIDc3MTE4LCA3NzEyMywgCi0gICAgNzcxMzAsIDc3MTM2LCA3NzE0MywgNzcxNDksIDc3MTYwLCA3NzE2NSwgNzcxNzMsIDk2MDksIDc3MTc4LCA3NzE4MSwgCi0gICAgNzcxODcsIDc3MTkxLCA3NzE5NSwgNzcxOTgsIDc3MjA0LCAzNDkzNCwgNDQzMSwgMTA2NywgMTQ1OTYsIDc3MjExLCAKLSAgICA3NzIxNywgNzcyMjMsIDc3MjI5LCA3NzIzNSwgNzcyNDEsIDc3MjQ3LCA3NzI1MywgNzcyNTksIDc3MjY0LCA3NzI2OSwgCi0gICAgNzcyNzQsIDc3Mjc5LCA3NzI4NCwgNzcyODksIDc3Mjk0LCA3NzI5OSwgNzczMDQsIDc3MzA5LCA3NzMxNCwgNzczMTksIAotICAgIDc3MzI0LCA3NzMzMCwgNzczMzUsIDc3MzQwLCA3NzM0NiwgNzczNTEsIDc3MzU2LCA3NzM2MiwgNzczNjgsIDc3Mzc0LCAKLSAgICA3NzM4MCwgNzczODYsIDc3MzkyLCA3NzM5OCwgNzc0MDQsIDc3NDEwLCA3NzQxNSwgNzc0MjAsIDc3NDI2LCA3NzQzMSwgCi0gICAgNzc0MzYsIDc3NDQyLCA3NzQ0NywgNzc0NTIsIDc3NDU3LCA3NzQ2MiwgNzc0NjcsIDc3NDcyLCA3NzQ3NywgNzc0ODIsIAotICAgIDc3NDg3LCA3NzQ5MiwgNzc0OTcsIDc3NTAyLCA3NzUwOCwgNzc1MTMsIDc3NTE4LCA3NzUyMywgNzc1MjksIDc3NTM0LCAKLSAgICA3NzUzOSwgNzc1NDQsIDc3NTQ5LCA3NzU1NSwgNzc1NjAsIDc3NTY1LCA3NzU3MCwgNzc1NzUsIDc3NTgwLCA3NzU4NSwgCi0gICAgNzc1OTAsIDc3NTk1LCA3NzYwMCwgNzc2MDUsIDc3NjEwLCA3NzYxNSwgNzc2MjAsIDc3NjI1LCA3NzYzMCwgNzc2MzUsIAotICAgIDc3NjQwLCA3NzY0NSwgNzc2NTAsIDc3NjU2LCA3NzY2MSwgNzc2NjYsIDc3NjcxLCA3NzY3NiwgNzc2ODEsIDc3Njg2LCAKLSAgICA3NzY5MSwgMTg5MCwgMTYzLCA3NzY5NiwgNzc3MDAsIDc3NzA0LCA3NzcwOSwgNzc3MTcsIDc3NzIxLCA3NzcyOCwgNzc3MzYsIAotICAgIDc3NzQwLCA3Nzc1MywgNzc3NjEsIDc3NzY2LCA3Nzc3MSwgMjgzOTQsIDc3Nzc1LCA3Nzc4MCwgNzc3ODQsIDc3Nzg5LCAKLSAgICA3Nzc5MywgNzc4MDEsIDc3ODA1LCAyMjU4NywgNzc4MTAsIDc3ODE0LCA2NjE2MiwgNzc4MTgsIDc3ODIxLCA3NzgyOSwgCi0gICAgNzc4MzcsIDc3ODQ1LCA3Nzg1MCwgNzc4NTUsIDc3ODYyLCA3Nzg2OSwgNzc4NzUsIDc3ODgxLCA3Nzg4NiwgNzc4OTEsIAotICAgIDc3ODk5LCA3MDU1MSwgNzc5MDYsIDY1OTQ4LCA3NzkxMSwgNzc5MTYsIDc3OTIwLCA3NzkyNywgNjU5NzUsIDEyNzQzLCAKLSAgICA3NzkzMywgNzc5MzgsIDc3OTQzLCA3Nzk0NywgNzc5NTAsIDc3OTU2LCA3Nzk2MCwgNzc5NzAsIDc3OTc5LCA3Nzk4MywgCi0gICAgNzc5ODYsIDc3OTkwLCA3Nzk5NywgNzgwMTAsIDc4MDE2LCA3ODAyNCwgNzgwMzMsIDc4MDQ0LCA3ODA1NSwgNzgwNjYsIAotICAgIDc4MDc3LCA3ODA4NiwgNzgwOTIsIDc4MTAxLCA3ODEwOSwgNzgxMTksIDc4MTMyLCA3ODE0MCwgNzgxNDcsIDc4MTU4LCAKLSAgICA3ODE2NCwgNzgxNjksIDc4MTc0LCA3ODE4MCwgNzgxODYsIDc4MTk2LCA3ODIwMywgNzgyMTMsIDc4MjIyLCA3NjQyMywgCi0gICAgNzgyMzAsIDc4MjM2LCA3ODI0NCwgNzgyNTAsIDc4MjU3LCA3ODI2NSwgNzgyNzAsIDc4MjczLCA3ODI3NywgNzgyODEsIAotICAgIDc4Mjg0LCA3ODI5MCwgNzgyOTYsIDc4MzA0LCA3ODMxNiwgNzgzMjgsIDc4MzM1LCA3ODM0MCwgNzgzNDQsIDc4MzU1LCAKLSAgICA3ODM2MywgNzgzNzAsIDc4MzgyLCA3ODM5MCwgNzgzOTgsIDc4NDA1LCA3ODQxMSwgNzg0MTYsIDc4NDI2LCA3ODQzNSwgCi0gICAgNzg0NDAsIDc4NDUwLCA3ODQ1OSwgNDU1NDksIDc4NDY2LCA3ODQ3MCwgNzg0NzUsIDc4NDgzLCA3ODQ5MCwgNzg0OTYsIAotICAgIDc4NTAwLCA3ODUxMCwgNzg1MjEsIDc4NTI5LCA3ODUzNiwgNzg1NDgsIDc4NTYwLCA3ODU2OSwgNzUzNzAsIDc4NTc2LCAKLSAgICA3ODU4NiwgNzg1OTgsIDc4NjA5LCA3ODYyMywgNzg2MzEsIDc4NjQxLCA3ODY0OCwgNzg2NTYsIDc4NjY5LCA3ODY4MSwgCi0gICAgNzg2OTAsIDc4Njk4LCA3ODcwOCwgNzg3MTksIDc4NzMxLCA3ODc0MCwgNzg3NTAsIDc4NzYwLCA3ODc2OSwgNzg3NzYsIAotICAgIDc4Nzg1LCA3ODgwMCwgNzg4MDgsIDc4ODE4LCA3ODgyNywgNzg4MzUsIDc4ODQ4LCA2MzAyNiwgNzg4NjMsIDc4ODczLCAKLSAgICA3ODg4MiwgNzg4OTQsIDc4OTA0LCA3ODkxNiwgNzg5MjcsIDc4OTM4LCA3ODk0OSwgNzg5NTksIDc4OTcwLCA3ODk3OCwgCi0gICAgNzg5ODQsIDc4OTk0LCA3OTAwMiwgNzkwMDgsIDMxMjkxLCA3OTAxMywgNzkwMTksIDc5MDI4LCA3OTA0MCwgNzkwNDUsIAotICAgIDc5MDUyLCAxMDQ0OCwgMTkxMzQsIDc5MDU4LCA3OTA2NywgNzkwNzIsIDc5MDc2LCA3OTA4MywgNzkwODksIDc5MDk0LCAKLSAgICA3OTA5OSwgNzkxMDcsIDc5MTE1LCAxMzExOSwgNzkxMTksIDc5MTIyLCA3OTEyNCwgNzkxMzEsIDc5MTM3LCA3OTE0OCwgCi0gICAgNzkxNTMsIDc5MTU3LCA3OTE2NCwgNzkxNzAsIDc5MTc1LCA3OTE4MywgNzExMjAsIDcxMTMwLCA3OTE4OSwgNzkxOTYsIAotICAgIDc5MjA2LCAxMTU0MywgNzkyMTMsIDc5MjE4LCAzMTUwNiwgNzkyMjcsIDc5MjMyLCA3OTIzOSwgNzkyNDksIDc5MjU3LCAKLSAgICA3OTI2NSwgNzkyNzQsIDc5MjgwLCA3OTI4NiwgNzkyOTMsIDc5MzAwLCA3OTMwNSwgNzkzMDksIDc5MzE3LCA2NTk5MiwgCi0gICAgNzkzMjIsIDc5MzMxLCA3OTMzOSwgNzkzNDYsIDc5MzUxLCA3OTM1NSwgNzkzNjQsIDc5MzcwLCA3OTM3MywgNzkzNzcsIAotICAgIDc5Mzg2LCA3OTM5NiwgNzc3NDgsIDc5NDA1LCA3OTQwOSwgNzk0MTcsIDc5NDIxLCA3OTQyNywgNzk0MzgsIDc5NDQ4LCAKLSAgICAxOTE0MywgNzk0NTksIDc5NDY4LCA3OTQ3NiwgNzk0ODQsIDc5NDkxLCA2NjAxMSwgOTE0NywgNzk0OTksIDc5NTAzLCAKLSAgICA3OTUxMiwgNzk1MTksIDc5NTIyLCAyOTQ3MCwgNzk1MjUsIDc5NTI5LCA3OTUzNCwgNzk1NTEsIDc5NTYzLCAxMTUwMSwgCi0gICAgNzk1NzUsIDc5NTgwLCA3OTU4NSwgNzk1OTAsIDIyNjY5LCA3OTU5NCwgNzk1OTksIDc5NjA0LCA3OTYxMCwgNzk2MTUsIAotICAgIDYxMjIsIDc5NjIwLCAyMjY3MywgNzk2MjUsIDc5NjMwLCA3OTYzNiwgNzk2NDMsIDc5NjQ4LCA3OTY1MywgNzk2NTksIAotICAgIDc5NjY1LCA3OTY3MSwgNzk2NzYsIDc5NjgyLCA3OTY4NiwgNzk3MDAsIDc5NzA4LCA3OTcxNiwgNzk3MjIsIDc5NzI3LCAKLSAgICA3OTczNCwgNzk3NDQsIDc5NzUzLCA3OTc1OCwgNzk3NjMsIDc5NzY4LCA3OTc3NiwgNzk3ODEsIDc5Nzg3LCA3OTc5MiwgCi0gICAgNzk4MDEsIDY0NzEzLCA3OTgwNiwgNzk4MDksIDc5ODI3LCA3OTg0NiwgNzk4NTksIDc5ODczLCA3OTg4OSwgNzk4OTYsIAotICAgIDc5OTAzLCA3OTkxMiwgNzk5MTksIDc5OTI1LCA3OTkzMiwgNzk5MzcsIDc5OTQzLCA3OTk0OSwgNzk5NTcsIDc5OTYzLCAKLSAgICA3OTk2OCwgNzk5NzMsIDc5OTg5LCAxMTUxNCwgODAwMDMsIDgwMDEwLCA4MDAxOCwgODAwMjQsIDgwMDI4LCA4MDAzMSwgCi0gICAgODAwMzYsIDgwMDQxLCA4MDA0OCwgODAwNTMsIDgwMDYyLCA4MDA2OCwgODAwNzMsIDgwMDc5LCA4MDA4NSwgODAwOTQsIAotICAgIDgwMTAzLCA4MDEwOCwgODAxMTIsIDgwMTIwLCA4MDEyOSwgMTI3NzIsIDgwMTM4LCA4MDE0NCwgODAxNTIsIDgwMTU4LCAKLSAgICA4MDE2NCwgODAxNzAsIDgwMTc1LCA4MDE4MiwgODAxODgsIDEyNzgzLCA4MDE5MywgODAxOTYsIDgwMjAxLCAzNTIyMywgCi0gICAgODAyMTEsIDgwMjIwLCA4MDIyNSwgODAyMzEsIDgwMjM2LCA4MDI0NCwgODAyNTEsIDgwMjYyLCA4MDI3MiwgODAyNzcsIAotICAgIDgwMjg1LCA3MDQ3NCwgODAyOTAsIDgwMjk2LCA4MDMwMSwgODAzMDgsIDgwMzE3LCA4MDMyNSwgODAzMjksIDgwMzM1LCAKLSAgICA4MDM0MSwgODAzNDgsIDgwMzU0LCA4MDM1OCwgMTg1MTgsIDMxMTQsIDgwMzYzLCA4MDM2NywgODAzNzEsIDgwMzc3LCAKLSAgICA4MDM4NiwgODAzOTIsIDgwMzk5LCA4MDQwMywgODA0MjQsIDgwNDQ2LCA4MDQ2MiwgODA0NzksIDgwNDk4LCA4MDUwNywgCi0gICAgODA1MTcsIDgwNTI1LCA4MDUzMiwgODA1MzksIDgwNTQ1LCAyOTM0MiwgODA1NTksIDgwNTYzLCA4MDU2OSwgODA1NzcsIAotICAgIDgwNTg5LCA4MDU5NSwgODA2MDMsIDgwNjEwLCA4MDYxNSwgODA2MjAsIDgwNjI0LCA4MDYzMiwgODA2MzksIDgwNjQzLCAKLSAgICA4MDY0OSwgODA2NTUsIDgwNjYwLCAzNzMwLCA0NjcyMSwgODA2NjYsIDgwNjcwLCA4MDY3NCwgODA2NzgsIDgwNjgzLCAKLSAgICA4MDY4OCwgODA2OTMsIDgwNjk5LCA4MDcwNSwgODA3MTEsIDgwNzE4LCA4MDcyNCwgODA3MzEsIDgwNzM3LCA4MDc0MywgCi0gICAgODA3NDgsIDgwNzU0LCA4MDc1OSwgODA3NjMsIDgwNzY4LCA4MDc3MiwgODA3NzcsIDQ2NzM2LCA4MDc4MSwgODA3ODYsIAotICAgIDgwNzk0LCA4MDc5OCwgODA4MDMsIDgwODEwLCA4MDgxOSwgODA4MjUsIDgwODM0LCA4MDgzOCwgODA4NDUsIDgwODQ5LCAKLSAgICA4MDg1MiwgODA4NTksIDgwODY1LCA4MDg3NCwgODA4ODQsIDgwODg5LCA4MDg5MywgODA5MDEsIDgwOTEwLCA4MDkxNCwgCi0gICAgODA5MjIsIDgwOTI4LCA4MDkzMywgODA5MzgsIDgwOTQ0LCA4MDk1MCwgODA5NTUsIDgwOTU5LCA4MDk2NSwgODA5NzAsIAotICAgIDgwOTc0LCA4MDk3OCwgODA5ODEsIDgwOTg2LCA4MDk5NCwgODEwMDQsIDgxMDEwLCA4MTAxNSwgODEwMjUsIDQ0MDMxLCAKLSAgICA4MTAzMywgODEwNDUsIDgxMDQ5LCA4MTA1NSwgODEwNjcsIDgxMDc4LCA4MTA4NSwgODEwOTEsIDgxMDk4LCA4MTEwNSwgCi0gICAgODExMTcsIDgxMTI0LCA4MTEzMCwgMjI3NDcsIDgxMTM0LCA4MTE0MiwgODExNDgsIDgxMTU1LCA4MTE2MSwgODExNjcsIAotICAgIDgxMTczLCA4MTE3OCwgODExODMsIDgxMTg4LCA4MTE5NywgODEyMDUsIDgxMjE2LCA3MzUwLCA4MTIyMSwgMTc5NjcsIAotICAgIDgxMjI3LCA4MTIzMSwgODEyMzUsIDgxMjM5LCA4MTI0NywgODEyNTYsIDgxMjYwLCA4MTI2NywgODEyNzYsIDgxMjg0LCAKLSAgICA4MTI5NywgODEzMDMsIDgwNzczLCAzMjM5MCwgODEzMDgsIDgxMzEwLCA4MTMxNSwgODEzMjAsIDgxMzI1LCA4MTMzMCwgCi0gICAgODEzMzUsIDgxMzQwLCA4MTM0NSwgODEzNTAsIDgxMzU1LCA4MTM2MCwgODEzNjUsIDgxMzcwLCA4MTM3NSwgODEzODAsIAotICAgIDgxMzg2LCA4MTM5MSwgODEzOTYsIDgxNDAxLCA4MTQwNiwgODE0MTEsIDgxNDE2LCA4MTQyMSwgODE0MjYsIDgxNDMyLCAKLSAgICA4MTQzOCwgODE0NDQsIDgxNDQ5LCA4MTQ1NCwgODE0NjYsIDgxNDcxLCAxODk2LCA2MywgODE0NzYsIDgxNDgxLCAzNTIyOSwgCi0gICAgODE0ODUsIDM1MjM0LCAzNTIzOSwgMzUyNDUsIDM1MjUwLCA4MTQ4OSwgMzUyNTUsIDIzNzg1LCA4MTUxMSwgODE1MTUsIAotICAgIDgxNTE5LCA4MTUyNCwgODE1MjgsIDM1MjU5LCA4MTUzMiwgODE1NDAsIDgxNTQ3LCAzNTI2NCwgODE1NTMsIDgxNTU2LCAKLSAgICA4MTU2MSwgODE1NjUsIDgxNTc0LCAxMDI2NiwgODE1ODIsIDM1MjY5LCAyMzY0MSwgODE1ODUsIDgxNTg5LCA4MTU5NywgCi0gICAgMTQxMiwgODE2MDIsIDM1MjgwLCA4MTYwNSwgODE2MTAsIDI3NzUwLCAyNzc2MCwgMzgxODIsIDgxNjE1LCA4MTYyMCwgCi0gICAgODE2MjUsIDgxNjMwLCA4MTYzNiwgODE2NDEsIDgxNjUwLCA4MTY1NSwgODE2NjQsIDgxNjcyLCA4MTY3OSwgODE2ODUsIAotICAgIDgxNjkwLCA4MTY5NSwgODE3MDAsIDgxNzEwLCA4MTcxOSwgODE3MjcsIDgxNzMyLCA4MTc0MCwgODE3NDQsIDgxNzUyLCAKLSAgICA4MTc1NiwgODE3NjMsIDgxNzcxLCAzNTA4OCwgNDExOTIsIDgxNzc4LCA4MTc4NCwgODE3ODksIDgxNzk0LCAxMzE1NCwgCi0gICAgMzA1MjksIDgxNzk5LCA4MTgwNCwgODE4MTEsIDgxODE3LCA4MTgyMiwgODE4MzAsIDgxODQwLCA4MTg1MCwgODE4NTYsIAotICAgIDgxODYxLCA4MTg2NywgMTkxNjUsIDgxODc0LCAzOTA1MiwgODE4ODcsIDgxODkyLCA4MTg5OCwgMzMzODEsIDgxOTExLCAKLSAgICA4MTkxNywgODE5MjEsIDgxOTMwLCA4MTkzOSwgODE5NDYsIDgxOTUyLCA4MTk2MCwgODE5NjksIDgxOTc2LCA4MTk4MiwgCi0gICAgODE5ODUsIDgxOTg5LCA4MTk5MywgMjc4OTEsIDgxOTk3LCA4MjAwNCwgODIwMTAsIDgyMDE4LCA4MjAyMywgODIwMjcsIAotICAgIDI1OTExLCA4MjAzMywgODIwMzYsIDgyMDQ0LCA4MjA1MSwgODIwNTksIDgyMDcyLCA4MjA4NiwgODIwOTMsIDgyMDk5LCAKLSAgICA4MjEwNiwgODIxMTIsIDM1Mjk0LCA4MjExNiwgODIxMjMsIDgyMTMxLCA4MjEzOSwgODIxNDUsIDM1Mjk5LCA4MjE1MywgCi0gICAgODIxNTksIDgyMTY0LCA4MjE3NCwgODIxODAsIDgyMTg5LCAzMzE4MywgMzc2MTQsIDgyMTk3LCA4MjIwMiwgODIyMDcsIAotICAgIDgyMjExLCA4MjIxNiwgODIyMjAsIDgyMjI4LCA4MjIzMywgMTYyOTYsIDQ0MDQ0LCA4MjIzNywgODIyNDIsIDM1MzA0LCAKLSAgICA2NzU0NywgODIyNDYsIDgyMjUxLCA4MjI1NSwgODIyNjIsIDgyMjcxLCA4MjI3NSwgODIyODMsIDgyMjg5LCA4MjI5NCwgCi0gICAgODIzMDAsIDgyMzA1LCA4MjMxMiwgODIzMTgsIDgyMzIzLCA4MjMyOCwgODIzMzksIDgyMzQ4LCA4MjM2MCwgODIzNzUsIAotICAgIDM1NTcxLCA4MjM4MSwgMTgwODYsIDM1MzA4LCA4MjM4NSwgODIzOTIsIDgyMzk4LCAyNjAyNywgODI0MDIsIDgyNDA5LCAKLSAgICA4MjQxOCwgODI0MjUsIDgyNDM0LCA4MjQ0MCwgODI0NDUsIDgyNDUzLCA4MjQ1OSwgMzUzMTgsIDgyNDY0LCA4MjQ3MywgCi0gICAgODEwNzMsIDgyNDgyLCA4MjQ4OSwgODI0OTUsIDgyNTAxLCA4MjUxMCwgODI1MjAsIDgyNTI4LCA4MjUzNSwgODI1MzksIAotICAgIDM1MzIzLCA4MjU0MiwgMzUzMjksIDM1MzM1LCA4MjU0NywgODI1NTUsIDgyNTYzLCA4MjU3MywgODI1ODIsIDgyNTkwLCAKLSAgICA4MjU5NywgODI2MDcsIDM1MzQwLCA4MjYxMSwgODI2MTMsIDgyNjE3LCA4MjYyMiwgODI2MjYsIDgyNjMwLCA4MjYzNiwgCi0gICAgODI2NDEsIDgyNjQ1LCA4MjY1NiwgODI2NjEsIDgyNjY2LCAzMTE5LCA4MjY3MCwgODI2NzcsIDgyNjgxLCA4MjY5MCwgCi0gICAgODI2OTgsIDgyNzA1LCA4MjcxMCwgODI3MTUsIDY3NTk4LCA4MjcxOSwgODI3MjIsIDgyNzI4LCA4MjczNiwgODI3NDIsIAotICAgIDgyNzQ2LCA4Mjc1MSwgODI3NTgsIDgyNzYzLCA4Mjc2OCwgODI3NzIsIDgyNzc4LCA4Mjc4MywgMzc2NDUsIDgyNzg3LCAKLSAgICA4Mjc5MCwgODI3OTUsIDgyNzk5LCA4MjgwNCwgODI4MTEsIDgyODE2LCA4MjgyMCwgNDI1ODAsIDgyODI4LCAyNzc2OSwgCi0gICAgMjc3NzgsIDgyODM0LCA4Mjg0MCwgODI4NDYsIDgyODUxLCA4Mjg1NSwgODI4NTgsIDgyODY4LCA4Mjg3NywgODI4ODIsIAotICAgIDgyODg4LCA4Mjg5NSwgODI5MDEsIDgyOTA1LCA4MjkxMywgODI5MTgsIDM3NjUxLCA3Nzk1MiwgODI5MjIsIDgyOTMwLCAKLSAgICA4MjkzNiwgODI5NDMsIDgyOTQ4LCA4Mjk1MiwgODI5NTcsIDYzMjQyLCA4Mjk2MywgODI5NjksIDM3NjU3LCA4Mjk3NCwgCi0gICAgODI5NzksIDgyOTgzLCA4Mjk4OCwgODI5OTMsIDgyOTk4LCA4MzAwMiwgODMwMDcsIDgzMDEyLCA4MzAxOCwgODMwMjMsIAotICAgIDgzMDI4LCA4MzAzNCwgODMwNDAsIDgzMDQ1LCA4MzA0OSwgODMwNTQsIDgzMDU5LCA4MzA2NCwgODMwNjgsIDI2MDI2LCAKLSAgICA4MzA3MywgODMwNzgsIDgzMDg0LCA4MzA5MCwgODMwOTYsIDgzMTAxLCA4MzEwNSwgODMxMTAsIDgzMTE1LCA4MzEyMCwgCi0gICAgODMxMjQsIDgzMTI5LCA4MzEzNCwgODMxMzksIDgzMTQ0LCA0Njk5MSwgODMxNDgsIDM1MzQ4LCA4MzE1NiwgODMxNjAsIAotICAgIDgzMTY4LCA4MzE3NiwgODMxODcsIDgzMTkyLCA4MzE5NiwgMjQyMTEsIDc1NDczLCA4MzIwMSwgODMyMDcsIDgzMjEyLCAKLSAgICA4MzIyMiwgODMyMjksIDgzMjM0LCA4MzI0MiwgODMyNTEsIDgzMjU2LCA4MzI2MCwgODMyNjUsIDgzMjczLCA4MzI4MSwgCi0gICAgODMyODgsIDcwNzM2LCA4MzI5NCwgODMzMDIsIDgzMzA5LCA4MzMyMCwgODMzMjYsIDgzMzMyLCAzNTM1OCwgODMzMzUsIAotICAgIDgzMzQyLCA4MzM1MCwgODMzNTUsIDQ0MjQ3LCA4MzM1OSwgODMzNjQsIDgzMzcxLCA4MzM3NiwgOTQ4NCwgODMzODAsIAotICAgIDgzMzg4LCA4MzM5NSwgODM0MDIsIDgzNDExLCA4MzQxOCwgODM0MjQsIDgzNDM4LCA2MTk0LCA4MzQ0NiwgODM0NTIsIAotICAgIDgzNDU2LCA4MzQ1OSwgODM0NjcsIDgzNDc0LCA4MzQ3OSwgODM0OTIsIDgzNDk5LCA4MzUwNSwgODM1MDksIDgzNTE0LCAKLSAgICA4MzUyMSwgODM1MjYsIDY1ODUxLCA4MzUzMSwgODM1MzQsIDgzNTQzLCA4MzU1MCwgODM1NTYsIDgzNTYwLCA4MzU2MywgCi0gICAgODM1NzEsIDgzNTgwLCA4MzU5MCwgODM2MDAsIDgzNjA5LCA4MzYyMCwgODM2MjgsIDgzNjM5LCA4MzY0NCwgODM2NDgsIAotICAgIDgzNjUzLCA4MzY1NywgMzgzMTMsIDgzNjY1LCAyMzA0MiwgMzgzMjIsIDgzNjcwLCA4MzY3NSwgODM2ODAsIDgzNjg1LCAKLSAgICA4MzY5MCwgODM2OTUsIDgzNzAwLCA4MzcwNCwgODM3MDksIDgzNzE0LCA4MzcxOSwgODM3MjQsIDgzNzI5LCA4MzczNCwgCi0gICAgODM3MzgsIDgzNzQzLCA4Mzc0OCwgODM3NTIsIDgzNzU2LCA4Mzc2MCwgODM3NjQsIDgzNzY5LCA4Mzc3NCwgODM3NzgsIAotICAgIDgzNzgzLCA4Mzc4NywgODM3OTEsIDgzNzk2LCA4MzgwMSwgODM4MDYsIDgzODExLCA4MzgxNSwgODM4MjAsIDgzODI1LCAKLSAgICA4MzgyOSwgODM4MzQsIDgzODM5LCA4Mzg0NCwgODM4NDksIDgzODU0LCA4Mzg1OSwgODM4NjQsIDgzODY5LCA4Mzg3NCwgCi0gICAgODM4NzksIDgzODg0LCA4Mzg4OSwgODM4OTQsIDgzODk5LCA4MzkwNCwgODM5MDksIDgzOTE0LCA4MzkxOSwgODM5MjQsIAotICAgIDgzOTI5LCA4MzkzMywgODM5MzgsIDgzOTQzLCA4Mzk0OCwgODM5NTMsIDgzOTU4LCA4Mzk2MywgODM5NjgsIDgzOTczLCAKLSAgICA4Mzk3OCwgODM5ODMsIDgzOTg4LCA4Mzk5MiwgODM5OTcsIDg0MDAxLCA4NDAwNiwgODQwMTEsIDg0MDE2LCA4NDAyMSwgCi0gICAgODQwMjYsIDg0MDMxLCA4NDAzNiwgODQwNDEsIDg0MDQ2LCA4NDA1MCwgODQwNTQsIDg0MDU5LCA4NDA2NCwgODQwNjgsIAotICAgIDg0MDczLCA4NDA3OCwgODQwODIsIDg0MDg3LCA4NDA5MiwgODQwOTcsIDg0MTAyLCA4NDEwNiwgODQxMTEsIDg0MTE2LCAKLSAgICA4NDEyMCwgODQxMjUsIDg0MTI5LCA4NDEzMywgODQxMzcsIDg0MTQxLCA4NDE0NiwgODQxNTAsIDg0MTU0LCA4NDE1OCwgCi0gICAgODQxNjIsIDg0MTY2LCA4NDE3MCwgODQxNzQsIDg0MTc4LCA4NDE4MiwgODQxODcsIDg0MTkyLCA4NDE5NywgODQyMDIsIAotICAgIDg0MjA3LCA4NDIxMiwgODQyMTcsIDg0MjIyLCA4NDIyNywgODQyMzIsIDg0MjM2LCA4NDI0MCwgODQyNDQsIDg0MjQ4LCAKLSAgICA4NDI1MiwgODQyNTYsIDg0MjYxLCA4NDI2NSwgODQyNzAsIDg0Mjc0LCA4NDI3OSwgODQyODQsIDg0Mjg4LCA4NDI5MiwgCi0gICAgODQyOTcsIDg0MzAxLCA4NDMwNSwgODQzMDksIDg0MzEzLCA4NDMxNywgODQzMjEsIDg0MzI1LCA4NDMyOSwgODQzMzMsIAotICAgIDg0MzM3LCA4NDM0MSwgODQzNDUsIDg0MzQ5LCA4NDM1MywgODQzNTgsIDg0MzYzLCA4NDM2NywgODQzNzEsIDg0Mzc1LCAKLSAgICA4NDM3OSwgODQzODMsIDg0Mzg3LCA4NDM5MiwgODQzOTYsIDg0NDAwLCA4NDQwNCwgODQ0MDgsIDg0NDEyLCA4NDQxNiwgCi0gICAgODQ0MjEsIDg0NDI1LCA4NDQzMCwgODQ0MzQsIDg0NDM4LCA4NDQ0MiwgODQ0NDYsIDg0NDUwLCA4NDQ1NCwgODQ0NTgsIAotICAgIDg0NDYyLCA4NDQ2NiwgODQ0NzAsIDg0NDc0LCA4NDQ3OSwgODQ0ODMsIDg0NDg3LCA4NDQ5MSwgODQ0OTUsIDg0NDk5LCAKLSAgICA4NDUwMywgODQ1MDcsIDg0NTExLCA4NDUxNSwgODQ1MTksIDg0NTIzLCA4NDUyOCwgODQ1MzIsIDg0NTM2LCA4NDU0MSwgCi0gICAgODQ1NDYsIDg0NTUwLCA4NDU1NCwgODQ1NTgsIDg0NTYyLCA4NDU2NiwgODQ1NzAsIDg0NTc0LCA4NDU3OCwgODQ1ODMsIAotICAgIDg0NTg3LCA4NDU5MiwgODQ1OTYsIDg0NjAxLCA4NDYwNSwgODQ2MTAsIDg0NjE0LCA4NDYyMCwgODQ2MjUsIDg0NjI5LCAKLSAgICA4NDYzNCwgODQ2MzgsIDg0NjQzLCA4NDY0NywgODQ2NTIsIDg0NjU2LCA4NDY2MSwgMTUxOSwgODQ2NjUsIDI4NzMsIDE3NzQsIAotICAgIDE2OTIsIDI3NzA1LCA4NDY2OSwgMjg4MiwgODQ2NzMsIDEzODEsIDg0Njc4LCAxMzIzLCA4NDY4MiwgODQ2ODYsIDI4OTksIAotICAgIDg0NjkwLCA4NDY5NywgODQ3MDQsIDg0NzE4LCAyOTAzLCA3NDUyLCA4NDcyNywgODQ3MzUsIDg0NzQyLCA4NDc1MywgCi0gICAgODQ3NjIsIDg0NzY5LCA4NDc4MSwgODQ3OTQsIDg0ODA3LCA4NDgxOCwgODQ4MjMsIDg0ODMwLCA4NDg0MiwgODQ4NDYsIAotICAgIDI5MDcsIDEyODUwLCA4NDg1NiwgODQ4NjEsIDg0ODcwLCA4NDg4MCwgODQ4ODUsIDI5MTEsIDg0ODkzLCA4NDg5NywgCi0gICAgODQ5MDIsIDg0OTA5LCA4NDkxNSwgODQ5MjMsIDg0OTM1LCAxMzI4LCAxNDIwMSwgODQ5NDUsIDg0OTQ5LCA4NDk1NSwgCi0gICAgODQ5NjksIDg0OTgxLCA4NDk5MywgODUwMDMsIDg1MDEyLCA4NTAyMSwgODUwMzAsIDg1MDM4LCA4NTA0OSwgODUwNTcsIAotICAgIDQyOTIsIDg1MDY3LCA4NTA3OCwgODUwODcsIDg1MDkzLCA4NTEwOCwgODUxMTUsIDg1MTIxLCA4NTEyNiwgMzg0NDcsIAotICAgIDg1MTMxLCAyOTM1LCAxNDIwNSwgODUxMzUsIDg1MTQyLCA5NDA5LCA4NTE1MSwgMjk0MCwgMzQ3OTYsIDg1MTU3LCA2NTU3MywgCi0gICAgODUxNjQsIDg1MTcwLCA4NTE4MSwgODUxODcsIDg1MTk0LCA4NTIwMCwgODUyMDgsIDg1MjE1LCA4NTIyMSwgODUyMzIsIAotICAgIDg1MjQyLCA4NTI1MSwgODUyNjIsIDg1MjcxLCA4NTI3OCwgODUyODQsIDg1Mjk0LCA4NTMwMiwgODUzMDgsIDg1MzIzLCAKLSAgICA4NTMyOSwgODUzMzQsIDg1MzQxLCA4NTM0NCwgODUzNTAsIDg1MzU3LCA4NTM2MywgODUzNzEsIDg1MzgwLCA4NTM4OCwgCi0gICAgODUzOTQsIDg1NDAzLCA0NjI2MSwgODU0MTcsIDg1NDIyLCA4NTQyOCwgMTYwNzIsIDg1NDMzLCA4NTQ0NiwgODU0NTgsIAotICAgIDg1NDY3LCA4NTQ3NSwgODU0ODIsIDg1NDg2LCA4NTQ5MCwgODU0OTMsIDg1NTAwLCA4NTUwNywgODU1MTUsIDg1NTIzLCAKLSAgICA4NTUzMiwgODU1NDAsIDE1OTgzLCA4NTU0OCwgODU1NTMsIDg1NTU3LCA4NTU2OSwgODU1NzYsIDg1NTg1LCA4NDEsIAotICAgIDg1NTk1LCA4NTYwNCwgODU2MTUsIDI5NTYsIDg1NjE5LCA4NTYyMywgODU2MjksIDg1NjQyLCA4NTY1NCwgODU2NjQsIAotICAgIDg1NjczLCA4NTY4NSwgMjg0NDYsIDg1Njk2LCA4NTcwNCwgODU3MTMsIDg1NzI0LCA4NTczNSwgODU3NDUsIDg1NzU1LCAKLSAgICA4NTc2NCwgODU3NzIsIDEyMzY0LCA4NTc3OSwgODU3ODMsIDg1Nzg2LCA4NTc5MSwgODU3OTYsIDg1ODAwLCA4NTgwNiwgCi0gICAgMTMzMywgODU4MTMsIDg1ODE3LCAxMjkzMiwgODU4MjEsIDg1ODMyLCA4NTg0MSwgODU4NDksIDg1ODU4LCA4NTg2NiwgCi0gICAgODU4ODIsIDg1ODkzLCA4NTkwMiwgODU5MTAsIDg1OTIyLCA4NTkzMywgODU5NDksIDg1OTU5LCA4NTk4MCwgODU5OTQsIAotICAgIDg2MDA3LCA4NjAxNSwgODYwMjIsIDc0OTgsIDg2MDM1LCA4NjA0MCwgODYwNDYsIDYyMDMsIDg2MDUyLCA4NjA1NSwgCi0gICAgODYwNjIsIDg2MDcyLCA4NTU0LCA4NjA3OSwgODYwODQsIDg2MDg5LCA4NjA5NCwgODYxMDIsIDg2MTExLCA4NjExOSwgCi0gICAgODYxMjQsIDg2MTMxLCAxMDQ5NiwgMTA1MDUsIDg2MTM3LCA4NjE0OCwgODYxNTMsIDg2MTU5LCAyOTcyLCAyOTc3LCAKLSAgICA4NjE2NSwgMTE4NTcsIDg2MTcxLCA4NjE3OCwgODYxODUsIDg2MTk4LCAyMjgxLCA4NywgODYyMDMsIDg2MjA4LCA4NjIxNiwgCi0gICAgODYyMjYsIDg2MjM1LCA4NjI0MSwgODYyNTAsIDg2MjU4LCA4NjI2OCwgODYyNzIsIDg2Mjc2LCA4NjI4MSwgODYyODUsIAotICAgIDg2Mjk3LCAzMDAwLCA4NjMwNSwgODYzMTMsIDg2MzE4LCA4NjMyOSwgODYzNDAsIDg2MzUyLCA4NjM2MywgODYzNzMsIAotICAgIDg2MzgyLCAyMzA4MywgODYzODcsIDg2MzkzLCA4NjM5OCwgODY0MDgsIDg2NDE4LCA4NjQyMywgODY0MjksIDg2NDMzLCAKLSAgICA4NjQzOCwgODY0NDcsIDIzMDk1LCA4NjQ1MSwgNDM4NCwgMjQsIDg2NDU2LCA4NjQ2NSwgODY0NzIsIDg2NDc5LCA4NjQ4NSwgCi0gICAgODY0OTEsIDEwNDksIDg2NDk2LCA4NjUwMSwgNjYxMjgsIDg2NTA2LCA4NjUxMSwgODY1MTcsIDg2NTIzLCA4NjUzMSwgCi0gICAgODY1MzYsIDg2NTQ0LCA4NjU1MSwgODY1NTcsIDg2NTYyLCA0MjQ2NCwgNDYxNTUsIDg2NTY4LCAzMDA0LCAzMiwgODY1NzgsIAotICAgIDg2NTkxLCA4NjU5NiwgODY2MDQsIDg2NjA5LCA4NjYxNSwgMzAyNiwgMzA0OTcsIDg2NjIwLCA4NjYyOCwgODY2MzUsIAotICAgIDg2NjQwLCA4NjY0OSwgNjM0OTIsIDQwMTgsIDY3MjE4LCA4NjY1NywgODY2NjEsIDE3MTksIDE4MzMsIDg2NjY2LCA4NjY3MSwgCi0gICAgODY2NzgsIDE4MzcsIDI4MCwgODY2ODUsIDg2NjkxLCA4NjY5NiwgMzA0OCwgODY3MDAsIDg2NzA1LCA4NjcxMiwgMTg0MSwgCi0gICAgODY3MTcsIDg2NzIzLCA4NjcyOCwgODY3NDAsIDY0MzAsIDg2NzUwLCA4Njc1NywgMTg0OCwgODY3NjMsIDg2NzY4LCAKLSAgICA4Njc3NSwgODY3ODIsIDg2Nzk3LCA4NjgwNCwgODY4MTUsIDg2ODIwLCA4NjgyOCwgMjY1NywgODY4MzIsIDg2ODQ0LCAKLSAgICA4Njg0OSwgODY4NTMsIDg2ODU5LCAzMDMxMywgMjI4NiwgODY4NjMsIDg2ODc0LCA4Njg3OCwgODY4ODIsIDg2ODg4LCAKLSAgICA4Njg5MiwgODY5MDEsIDg2OTA1LCA4NjkxNiwgODY5MjAsIDIzMzIsIDM0NjEzLCA4NjkyNCwgODY5MzQsIDMxMzksIAotICAgIDg2OTQyLCA5OTA5LCA4Njk1MSwgODY5NTYsIDg2OTYwLCA4Njk2OSwgODY5NzYsIDg2OTgyLCAzMTA5LCAxNjEzNiwgCi0gICAgODY5ODYsIDg2OTk5LCA4NzAxNywgODcwMjIsIDg3MDMwLCA4NzAzOCwgODcwNDgsIDEwNzY4LCAxNDMxOCwgODcwNjAsIAotICAgIDg3MDczLCA4NzA4MCwgODcwOTQsIDg3MTAxLCA4NzExNywgODcxMjQsIDg3MTMwLCAyMzEyNywgMTM1NTYsIDg3MTM3LCAKLSAgICA4NzE0NCwgODcxNTQsIDg3MTYzLCA0Njk5MCwgODcxNzUsIDQ3MTI1LCA4NzE4MywgODcxODYsIDg3MTkyLCA4NzE5OCwgCi0gICAgODcyMDQsIDg3MjEwLCA4NzIxNiwgODcyMjMsIDg3MjMwLCA4NzIzNiwgODcyNDIsIDg3MjQ4LCA4NzI1NCwgODcyNjAsIAotICAgIDg3MjY2LCA4NzI3MiwgODcyNzgsIDg3Mjg0LCA4NzI5MCwgODcyOTYsIDg3MzAyLCA4NzMwOCwgODczMTQsIDg3MzIwLCAKLSAgICA4NzMyNiwgODczMzIsIDg3MzM4LCA4NzM0NCwgODczNTAsIDg3MzU2LCA4NzM2MiwgODczNjgsIDg3Mzc0LCA4NzM4MCwgCi0gICAgODczODYsIDg3MzkyLCA4NzM5OCwgODc0MDQsIDg3NDEwLCA4NzQxNiwgODc0MjIsIDg3NDI4LCA4NzQzNCwgODc0NDAsIAotICAgIDg3NDQ2LCA4NzQ1MiwgODc0NTgsIDg3NDY0LCA4NzQ3MCwgODc0NzYsIDg3NDgyLCA4NzQ4OCwgODc0OTQsIDg3NTAwLCAKLSAgICA4NzUwNiwgODc1MTIsIDg3NTE4LCA4NzUyNCwgODc1MzAsIDg3NTM2LCA4NzU0MywgODc1NDksIDg3NTU2LCA4NzU2MywgCi0gICAgODc1NjksIDg3NTc2LCA4NzU4MywgODc1ODksIDg3NTk1LCA4NzYwMSwgODc2MDcsIDg3NjEzLCA4NzYxOSwgODc2MjUsIAotICAgIDg3NjMxLCA4NzYzNywgODc2NDMsIDg3NjQ5LCA4NzY1NSwgODc2NjEsIDg3NjY3LCA4NzY3MywgMzEyMywgOTg4MiwgCi0gICAgODc2NzksIDg3Njg1LCA4NzY5MywgODc2OTcsIDg0OTA1LCAzMTI3LCA4NzcwMSwgMjI4NjAsIDEzMTg5LCAzOTY4LCAKLSAgICA4NzcwNSwgMzEzMywgODc3MDksIDg3NzE5LCA4NzcyNSwgODc3MzEsIDg3NzM3LCA4Nzc0MywgODc3NDksIDg3NzU1LCAKLSAgICA4Nzc2MSwgODc3NjcsIDg3NzczLCA4Nzc3OSwgODc3ODUsIDg3NzkxLCA4Nzc5NywgODc4MDMsIDg3ODA5LCA4NzgxNSwgCi0gICAgODc4MjEsIDg3ODI3LCA4NzgzMywgODc4MzksIDg3ODQ1LCA4Nzg1MSwgODc4NTcsIDg3ODYzLCA4Nzg2OSwgODc4NzYsIAotICAgIDg3ODgzLCA4Nzg4OSwgODc4OTUsIDg3OTAxLCA4NzkwNywgODc5MTMsIDg3OTE5LCAxMzM4LCA4NzkyNSwgODc5MzAsIAotICAgIDg3OTM1LCA4Nzk0MCwgODc5NDUsIDg3OTUwLCA4Nzk1NSwgODc5NjAsIDg3OTY1LCA4Nzk2OSwgODc5NzMsIDg3OTc3LCAKLSAgICA4Nzk4MSwgODc5ODUsIDg3OTg5LCA4Nzk5MywgODc5OTcsIDg4MDAxLCA4ODAwNywgODgwMTMsIDg4MDE5LCA4ODAyNSwgCi0gICAgODgwMjksIDg4MDMzLCA4ODAzNywgODgwNDEsIDg4MDQ1LCA4ODA0OSwgODgwNTMsIDg4MDU3LCA4ODA2MSwgODgwNjYsIAotICAgIDg4MDcxLCA4ODA3NiwgODgwODEsIDg4MDg2LCA4ODA5MSwgODgwOTYsIDg4MTAxLCA4ODEwNiwgODgxMTEsIDg4MTE2LCAKLSAgICA4ODEyMSwgODgxMjYsIDg4MTMxLCA4ODEzNiwgODgxNDEsIDg4MTQ2LCA4ODE1MSwgODgxNTYsIDg4MTYxLCA4ODE2NiwgCi0gICAgODgxNzEsIDg4MTc2LCA4ODE4MSwgODgxODYsIDg4MTkxLCA4ODE5NiwgODgyMDEsIDg4MjA2LCA4ODIxMSwgODgyMTYsIAotICAgIDg4MjIxLCA4ODIyNiwgODgyMzEsIDg4MjM2LCA4ODI0MSwgODgyNDYsIDg4MjUxLCA4ODI1NiwgODgyNjEsIDg4MjY2LCAKLSAgICA4ODI3MSwgODgyNzYsIDg4MjgxLCA4ODI4NiwgODgyOTEsIDg4Mjk2LCA4ODMwMSwgODgzMDYsIDg4MzExLCA4ODMxNiwgCi0gICAgODgzMjEsIDg4MzI2LCA4ODMzMSwgODgzMzYsIDg4MzQxLCA4ODM0NiwgODgzNTEsIDg4MzU2LCA4ODM2MSwgODgzNjYsIAotICAgIDg4MzcxLCA4ODM3NiwgODgzODEsIDg4Mzg2LCA4ODM5MSwgODgzOTYsIDg4NDAxLCA4ODQwNiwgODg0MTEsIDg4NDE2LCAKLSAgICA4ODQyMSwgODg0MjYsIDg4NDMxLCA4ODQzNiwgODg0NDEsIDg4NDQ2LCA4ODQ1MSwgODg0NTYsIDg4NDYxLCA4ODQ2NiwgCi0gICAgODg0NzEsIDg4NDc2LCA4ODQ4MSwgODg0ODYsIDg4NDkxLCA4ODQ5NiwgODg1MDEsIDg4NTA2LCA4ODUxMSwgODg1MTYsIAotICAgIDg4NTIxLCA4ODUyNiwgODg1MzEsIDg4NTM2LCA4ODU0MSwgODg1NDYsIDg4NTUxLCA4ODU1NiwgODg1NjEsIDg4NTY2LCAKLSAgICA4ODU3MSwgODg1NzYsIDg4NTgxLCA4ODU4NiwgODg1OTEsIDg4NTk2LCA4ODYwMSwgODg2MDYsIDg4NjExLCA4ODYxNiwgCi0gICAgODg2MjEsIDg4NjI2LCA4ODYzMSwgODg2MzYsIDg4NjQxLCA4ODY0NiwgODg2NTEsIDg4NjU2LCA4ODY2MSwgODg2NjYsIAotICAgIDg4NjcxLCA4ODY3NiwgODg2ODEsIDg4Njg2LCA4ODY5MSwgODg2OTYsIDg4NzAxLCA4ODcwNiwgODg3MTEsIDg4NzE2LCAKLSAgICA4ODcyMSwgODg3MjYsIDg4NzMxLCA4ODczNiwgODg3NDEsIDg4NzQ2LCA4ODc1MSwgODg3NTYsIDg4NzYxLCA4ODc2NiwgCi0gICAgODg3NzEsIDg4Nzc2LCA4ODc4MSwgODg3ODYsIDg4NzkxLCA4ODc5NiwgODg4MDEsIDg4ODA2LCA4ODgxMSwgODg4MTYsIAotICAgIDg4ODIxLCA4ODgyNiwgODg4MzEsIDg4ODM2LCA4ODg0MSwgODg4NDYsIDg4ODUxLCA4ODg1NiwgODg4NjEsIDg4ODY2LCAKLSAgICA4ODg3MSwgODg4NzYsIDg4ODgxLCA4ODg4NiwgODg4OTEsIDg4ODk2LCA4ODkwMSwgODg5MDYsIDg4OTExLCA4ODkxNiwgCi0gICAgODg5MjEsIDg4OTI2LCA4ODkzMSwgODg5MzYsIDg4OTQxLCA4ODk0NiwgODg5NTEsIDg4OTU3LCA4ODk2MiwgODg5NjcsIAotICAgIDg4OTcyLCA4ODk3NywgODg5ODIsIDg4OTg3LCA4ODk5MiwgODg5OTgsIDg5MDAzLCA4OTAwOCwgODkwMTMsIDg5MDE4LCAKLSAgICA4OTAyMywgODkwMjgsIDg5MDMzLCA4OTAzOCwgODkwNDMsIDg5MDQ4LCA4OTA1MywgODkwNTgsIDg5MDYzLCA4OTA2OCwgCi0gICAgODkwNzMsIDg5MDc4LCA4OTA4MywgODkwODgsIDg5MDkzLCA4OTA5OCwgODkxMDMsIDg5MTA4LCA4OTExMywgODkxMTgsIAotICAgIDg5MTIzLCA4OTEyOCwgODkxMzMsIDg5MTM4LCA4OTE0MywgODkxNDgsIDg5MTUzLCA4OTE1OCwgODkxNjcsIDg5MTcyLCAKLSAgICA4OTE4MSwgODkxODYsIDg5MTk1LCA4OTIwMCwgODkyMDksIDg5MjE0LCA4OTIyMywgODkyMjgsIDg5MjM3LCA4OTI0MiwgCi0gICAgODkyNTEsIDg5MjU2LCA4OTI2NSwgODkyNzAsIDg5Mjc1LCA4OTI4NCwgODkyODgsIDg5Mjk3LCA4OTMwMiwgODkzMTEsIAotICAgIDg5MzE2LCA4OTMyNSwgODkzMzAsIDg5MzM5LCA4OTM0NCwgODkzNTMsIDg5MzU4LCA4OTM2NywgODkzNzIsIDg5MzgxLCAKLSAgICA4OTM4NiwgODkzOTUsIDg5NDAwLCA4OTQwOSwgODk0MTQsIDg5NDIzLCA4OTQyOCwgODk0MzMsIDg5NDM4LCA4OTQ0MywgCi0gICAgODk0NDgsIDg5NDUzLCA4OTQ1OCwgODk0NjIsIDg5NDY3LCA4OTQ3MiwgODk0NzcsIDg5NDgyLCA4OTQ4NywgODk0OTIsIAotICAgIDg5NDk4LCA4OTUwMywgODk1MDgsIDg5NTEzLCA4OTUxOSwgODk1MjMsIDg5NTI4LCA4OTUzNCwgODk1MzksIDg5NTQ0LCAKLSAgICA4OTU0OSwgODk1NTQsIDg5NTU5LCA4OTU2NCwgODk1NjksIDg5NTc0LCA4OTU3OSwgODk1ODQsIDg5NTkwLCA4OTU5NSwgCi0gICAgODk2MDAsIDg5NjA1LCA4OTYxMSwgODk2MTYsIDg5NjIxLCA4OTYyNiwgODk2MzEsIDg5NjM3LCA4OTY0MiwgODk2NDcsIAotICAgIDg5NjUyLCA4OTY1NywgODk2NjIsIDg5NjY4LCA4OTY3MywgODk2NzgsIDg5NjgzLCA4OTY4OCwgODk2OTMsIDg5Njk4LCAKLSAgICA4OTcwMywgODk3MDgsIDg5NzEzLCA4OTcxOCwgODk3MjMsIDg5NzI4LCA4OTczMywgODk3MzgsIDg5NzQzLCA4OTc0OCwgCi0gICAgODk3NTMsIDg5NzU4LCA4OTc2MywgODk3NjgsIDg5NzczLCA4OTc3OCwgODk3ODMsIDg5Nzg5LCA4OTc5NSwgODk4MDEsIAotICAgIDg5ODA2LCA4OTgxMSwgODk4MTYsIDg5ODIxLCA4OTgyNywgODk4MzMsIDg5ODM5LCA4OTg0NCwgODk4NDksIDg5ODU0LCAKLSAgICA4OTg2MCwgODk4NjUsIDg5ODcwLCA4OTg3NSwgODk4ODAsIDg5ODg1LCA4OTg5MCwgODk4OTUsIDg5OTAwLCA4OTkwNSwgCi0gICAgODk5MTAsIDg5OTE1LCA4OTkyMCwgODk5MjUsIDg5OTMwLCA4OTkzNSwgODk5NDAsIDg5OTQ2LCA4OTk1MiwgODk5NTgsIAotICAgIDg5OTYzLCA4OTk2OCwgODk5NzMsIDg5OTc4LCA4OTk4NCwgODk5OTAsIDg5OTk2LCA5MDAwMSwgOTAwMDYsIDkwMDExLCAKLSAgICA5MDAxNiwgOTAwMjEsIDkwMDI2LCA5MDAzMSwgOTAwMzYsIDkwMDQxLCAxNzUzOSwgOTAwNDYsIDkwMDUyLCA5MDA1NywgCi0gICAgOTAwNjIsIDkwMDY3LCA5MDA3MiwgOTAwNzcsIDkwMDgzLCA5MDA4OCwgOTAwOTMsIDkwMDk4LCA5MDEwMywgOTAxMDgsIAotICAgIDkwMTE0LCA5MDExOSwgOTAxMjQsIDkwMTI5LCA5MDEzNCwgOTAxMzksIDkwMTQ0LCA5MDE0OSwgOTAxNTQsIDkwMTU5LCAKLSAgICA5MDE2NCwgOTAxNjksIDkwMTc0LCA5MDE3OSwgOTAxODQsIDkwMTg5LCA5MDE5NCwgOTAxOTksIDkwMjA0LCA5MDIwOSwgCi0gICAgOTAyMTQsIDkwMjE5LCA5MDIyNCwgOTAyMzAsIDkwMjM1LCA5MDI0MCwgOTAyNDUsIDkwMjUwLCA5MDI1NSwgOTAyNjAsIAotICAgIDkwMjY1LCA5MDI3MCwgOTAyNzUsIDkwMjgwLCA5MDI4NSwgOTAyOTAsIDkwMjk1LCA5MDMwMCwgOTAzMDUsIDkwMzEwLCAKLSAgICA5MDMxNSwgOTAzMjAsIDkwMzI1LCA5MDMzMCwgOTAzMzUsIDkwMzQwLCA5MDM0NSwgOTAzNTAsIDkwMzU1LCA5MDM2MCwgCi0gICAgOTAzNjUsIDkwMzcwLCA5MDM3NSwgOTAzODAsIDkwMzg1LCA5MDM5MCwgOTAzOTUsIDkwNDAwLCA5MDQwNSwgOTA0MTAsIAotICAgIDkwNDE1LCA5MDQyMCwgOTA0MjUsIDkwNDMwLCA5MDQzNiwgOTA0NDEsIDkwNDQ2LCA5MDQ1MSwgOTA0NTYsIDkwNDYxLCAKLSAgICA5MDQ2NiwgOTA0NzEsIDkwNDc2LCA5MDQ4MSwgOTA0ODYsIDkwNDkxLCA5MDQ5NywgOTA1MDIsIDkwNTA4LCA5MDUxMywgCi0gICAgOTA1MTgsIDkwNTIzLCA5MDUyOCwgOTA1MzMsIDkwNTM4LCA5MDU0NCwgOTA1NDksIDkwNTU0LCA5MDU2MCwgOTA1NjUsIAotICAgIDkwNTcwLCA5MDU3NSwgOTA1ODAsIDkwNTg1LCA5MDU5MSwgOTA1OTcsIDkwNjAyLCA5MDYwNywgMTMyMTEsIDkwNjEyLCAKLSAgICA5MDYxNywgOTA2MjIsIDkwNjI3LCA5MDYzMiwgOTA2MzcsIDkwNjQyLCA5MDY0NywgOTA2NTIsIDkwNjU3LCA5MDY2MiwgCi0gICAgOTA2NjcsIDkwNjcyLCA5MDY3NywgOTA2ODIsIDkwNjg3LCA5MDY5MiwgOTA2OTcsIDkwNzAyLCA5MDcwNywgOTA3MTIsIAotICAgIDkwNzE3LCA5MDcyMiwgOTA3MjcsIDkwNzMyLCA5MDczNywgOTA3NDIsIDkwNzQ3LCA5MDc1MiwgOTA3NTcsIDkwNzYyLCAKLSAgICA5MDc2NywgOTA3NzIsIDkwNzc3LCA5MDc4MiwgOTA3ODcsIDkwNzkyLCA5MDc5NywgOTA4MDIsIDkwODA3LCA5MDgxMiwgCi0gICAgOTA4MTcsIDkwODIyLCA5MDgyNywgOTA4MzIsIDkwODM3LCA5MDg0MiwgOTA4NDcsIDkwODUyLCA5MDg1NywgOTA4NjIsIAotICAgIDkwODY3LCA5MDg3MiwgOTA4NzcsIDkwODgyLCA5MDg4NywgOTA4OTIsIDkwODk3LCA5MDkwMiwgOTA5MDcsIDkwOTEyLCAKLSAgICA5MDkxNywgOTA5MjIsIDkwOTI3LCA5MDkzMiwgOTA5MzgsIDkwOTQzLCA5MDk0OCwgOTA5NTMsIDkwOTU4LCA5MDk2NCwgCi0gICAgOTA5NjksIDkwOTc0LCA5MDk3OSwgOTA5ODQsIDkwOTg5LCA5MDk5NCwgOTEwMDAsIDkxMDA1LCA5MTAxMCwgOTEwMTUsIAotICAgIDkxMDIwLCA5MTAyNSwgOTEwMzEsIDkxMDM2LCA5MTA0MSwgOTEwNDYsIDkxMDUxLCA5MTA1NiwgOTEwNjIsIDkxMDY3LCAKLSAgICA5MTA3MiwgOTEwNzcsIDkxMDgyLCA5MTA4NywgOTEwOTMsIDkxMDk5LCA5MTEwNCwgOTExMDksIDkxMTE0LCA5MTEyMCwgCi0gICAgOTExMjYsIDkxMTMyLCA5MTEzNywgOTExNDIsIDkxMTQ4LCA5MTE1NCwgOTExNTksIDkxMTY1LCA5MTE3MSwgOTExNzcsIAotICAgIDkxMTgyLCA5MTE4NywgOTExOTMsIDkxMTk4LCA5MTIwNCwgOTEyMDksIDkxMjE1LCA5MTIyNCwgOTEyMjksIDkxMjM0LCAKLSAgICA5MTI0MCwgOTEyNDUsIDkxMjUxLCA5MTI1NiwgOTEyNjEsIDkxMjY2LCA5MTI3MSwgOTEyNzYsIDkxMjgxLCA5MTI4NiwgCi0gICAgOTEyOTEsIDkxMjk2LCA5MTMwMSwgOTEzMDYsIDkxMzExLCA5MTMxNiwgOTEzMjEsIDkxMzI2LCA5MTMzMSwgOTEzMzYsIAotICAgIDkxMzQxLCA5MTM0NiwgOTEzNTEsIDkxMzU2LCA5MTM2MSwgOTEzNjYsIDkxMzcxLCA5MTM3NiwgOTEzODEsIDkxMzg2LCAKLSAgICA5MTM5MSwgOTEzOTYsIDkxNDAxLCA5MTQwNiwgOTE0MTIsIDkxNDE4LCA5MTQyNCwgOTE0MjksIDkxNDM0LCA5MTQzOSwgCi0gICAgOTE0NDQsIDkxNDQ5LCA5MTQ1NCwgOTE0NTksIDkxNDY0LCA5MTQ2OSwgOTE0NzQsIDkxNDc5LCA5MTQ4NCwgOTE0ODksIAotICAgIDkxNDk0LCA5MTQ5OSwgOTE1MDQsIDkxNTA5LCA5MTUxNCwgOTE1MTksIDkxNTI0LCA5MTUzMCwgOTE1MzYsIDkxNTQxLCAKLSAgICA5MTU0NywgOTE1NTIsIDkxNTU3LCA5MTU2MywgOTE1NjgsIDkxNTc0LCA5MTU3OSwgOTE1ODUsIDkxNTkwLCA5MTU5NiwgCi0gICAgOTE2MDEsIDkxNjA3LCA5MTYxMiwgOTE2MTcsIDkxNjIyLCA5MTYyNywgOTE2MzIsIDkxNjM3LCA5MTY0MiwgODc3MjAsIAotICAgIDg3NzI2LCA4NzczMiwgODc3MzgsIDkxNjQ4LCA4Nzc0NCwgODc3NTAsIDkxNjU0LCA4Nzc1NiwgODc3NjIsIDg3NzY4LCAKLSAgICA4Nzc3NCwgODc3ODAsIDg3Nzg2LCA4Nzc5MiwgODc3OTgsIDg3ODA0LCA5MTY2MCwgODc4MTAsIDg3ODE2LCA4NzgyMiwgCi0gICAgOTE2NjYsIDg3ODI4LCA4NzgzNCwgODc4NDAsIDg3ODQ2LCA5MTY3MiwgODc4NTIsIDg3ODU4LCA4Nzg2NCwgODc4ODQsIAotICAgIDkxNjc4LCA5MTY4NCwgODc4OTAsIDkxNjkwLCA4Nzg5NiwgODc5MDIsIDg3OTA4LCA4NzkxNCwgODc5MjAsIDMxNTAsIAotICAgIDMxNTUsIDkxNjk2LCA5MTcwMSwgOTE3MDQsIDkxNzEwLCA5MTcxNiwgOTE3MjMsIDkxNzI4LCA5MTczMywgMjMzNywgCisgICAgMCwgMCwgNiwgMTAsIDE0LCAxOSwgMjcsIDM0LCA0NCwgNDksIDU1LCA2NCwgNjYsIDY5LCA4MSwgODksIDEwMiwgMTA4LCAKKyAgICAxMTMsIDExOSwgMTI0LCAxMzIsIDE0MSwgMTQ2LCAxNTcsIDE2MiwgMTY3LCAxNzAsIDE3NCwgMTgzLCAxODksIDE5NSwgCisgICAgMjAwLCAyMDcsIDIxNSwgMjIzLCAyMjQsIDIyNywgMjM1LCAyNDQsIDE3MSwgMjUwLCAyNTYsIDI2MywgMjczLCAyODAsIAorICAgIDI4NSwgMjg4LCAyOTMsIDI5OSwgMzAzLCAzMDYsIDMxMSwgMzE3LCAzMjMsIDMyOCwgMzMzLCAzMzksIDM0NSwgMzU0LCAKKyAgICAzNjEsIDM2OCwgMzc3LCAzNzksIDM4NCwgMzg5LCAzOTcsIDM5OSwgNDA3LCA0MDgsIDQxNiwgNDE4LCAzMzcsIDQyNSwgCisgICAgNDI4LCA0MzAsIDQzNiwgNDM4LCA0NDUsIDQ1MCwgNDU3LCA0NjIsIDQ2NywgNDc0LCA0ODIsIDQ4NiwgNDkyLCA0OTcsIAorICAgIDUwNywgNTEyLCA1MTksIDUyMiwgNTMwLCA1MzksIDU0MywgNTUzLCA1NjAsIDU2NywgNTc0LCA1ODMsIDU5MCwgNTkzLCAKKyAgICA1OTksIDYwMywgNjA3LCA2MTUsIDYxOSwgNjMyLCA2MzYsIDYzNywgNjQ0LCA2NTMsIDY2MiwgNjY1LCA2NzEsIDY3NSwgCisgICAgNjc3LCA2ODcsIDY5MiwgNzAwLCA3MDQsIDcwNywgNzE1LCA3MTksIDcyNCwgNzI5LCA3MzUsIDc0MCwgNzQ0LCA3NDcsIAorICAgIDc1NSwgNzY0LCA3NzMsIDc4MSwgNzg5LCA3OTMsIDc5OSwgODA3LCA4MTQsIDgxNywgODI3LCA4MzEsIDg0MiwgODUxLCAKKyAgICA4NTgsIDg2MSwgODY4LCA4NzAsIDg3NiwgODgwLCA4ODUsIDg4OSwgODk1LCA5MDQsIDkwOSwgOTEzLCA1ODgsIDkxNiwgCisgICAgOTIxLCA5MzAsIDkzOCwgOTQzLCA5NDYsIDY3NCwgOTUxLCA5NTYsIDk1OSwgOTY1LCA5NjksIDk3MywgOTc5LCA5ODYsIAorICAgIDk5NSwgOTk4LCAxMDA1LCAxMDE0LCAxMDI3LCAxMDMxLCAxMDM5LCAxMDQyLCAxMDQ4LCAxMDU0LCAxMDYzLCAxMDcwLCAKKyAgICAxMDczLCAxMDgxLCAxMDg4LCAxMDk1LCAxMDk5LCAxMTAyLCAxMTEwLCAxMTE0LCAxMTIzLCAxMTI5LCAxMTMzLCAxMTM2LCAKKyAgICAxMTQwLCAyNiwgMTE0NywgMTE1NiwgMTE2MSwgMTE2NiwgMTE3MiwgMTE3NywgMTE4MiwgMTE4NywgMTE5MSwgMTE5NiwgCisgICAgMTIwMiwgMTIwNywgMTIxMiwgMTIxNiwgMTIyMiwgMTIyNywgMTIzMiwgMTIzNywgMTI0MSwgMTI0NiwgMTI1MSwgMTI1NiwgCisgICAgMTI2MiwgMTI2OCwgMTI3NCwgMTI3OSwgMTI4MywgMTI4OCwgMTI5MywgMTI5OCwgMTMwMiwgMTMwNywgMTMxMiwgMTMxNywgCisgICAgMTMyMiwgMTE1NywgMTE2MiwgMTE2NywgMTE3MywgMTE3OCwgMTMyNiwgMTE4OCwgMTMzMiwgMTMzNywgMTM0MiwgMTM0OSwgCisgICAgMTM1MywgMTM1NiwgMTM2NSwgMTE5MiwgMTM2OSwgMTE5NywgMTIwMywgMTIwOCwgMTM3MywgMTM3OCwgMTM4MywgMTM4NywgCisgICAgMTM5MSwgMTM5NywgMTQwMSwgMTIxMywgMTQwNCwgMTQwNiwgMTIyMywgMTQxMSwgMTQxNSwgMTIyOCwgMTQyMSwgMTIzMywgCisgICAgMTQyNSwgMTQyOSwgMTIzOCwgMTQzMywgMTQzOCwgMTQ0MiwgMTQ0NSwgMTQ0OSwgMTI0MiwgMTI0NywgMTQ1NCwgMTQ2MCwgCisgICAgMTI1MiwgMTQ3MiwgMTQ3OCwgMTQ4NCwgMTQ5MCwgMTI1NywgMTI2OSwgMTI3NSwgMTQ5NCwgMTQ5OCwgMTUwMiwgMTUwNSwgCisgICAgMTI4MCwgMTUwOSwgMTUxMSwgMTUxNiwgMTUyMSwgMTUyNywgMTUzMiwgMTUzNywgMTU0MSwgMTU0NiwgMTU1MSwgMTU1NiwgCisgICAgMTU2MSwgMTU2NywgMTU3MiwgMTU3NywgMTU4MywgMTU4OSwgMTU5NCwgMTU5OCwgMTYwMywgMTYwOCwgMTYxMywgMTYxOCwgCisgICAgMTYyMywgMTYyNywgMTYzNSwgMTY0MCwgMTY0NCwgMTY0OSwgMTY1NCwgMTY1OSwgMTY2NCwgMTY2OCwgMTY3MSwgMTY3OCwgCisgICAgMTY4MywgMTY4OCwgMTY5MywgMTY5OCwgMTcwNCwgMTcwOSwgMTcxMywgMTI4NCwgMTcxNiwgMTcyMSwgMTcyNiwgMTI4OSwgCisgICAgMTczMCwgMTczNCwgMTc0MSwgMTI5NCwgMTc0OCwgMTI5OSwgMTc1MiwgMTc1NCwgMTc1OSwgMTc2NSwgMTMwMywgMTc3MCwgCisgICAgMTc3OSwgMTMwOCwgMTc4NCwgMTc5MCwgMTc5NSwgMTMxMywgMTgwMCwgMTgwNSwgMTgwOSwgMTgxMiwgMTgxNywgMTgyMSwgCisgICAgMTgyNSwgMTgyOSwgMTgzMiwgMTgzNiwgMTMxOCwgMTg0MSwgMTMyMywgMTg0NSwgMTg0NywgMTg1MywgMTg1OSwgMTg2NSwgCisgICAgMTg3MSwgMTg3NywgMTg4MywgMTg4OSwgMTg5NSwgMTkwMCwgMTkwNiwgMTkxMiwgMTkxOCwgMTkyNCwgMTkzMCwgMTkzNiwgCisgICAgMTk0MiwgMTk0OCwgMTk1NCwgMTk1OSwgMTk2NCwgMTk2OSwgMTk3NCwgMTk3OSwgMTk4NCwgMTk4OSwgMTk5NCwgMTk5OSwgCisgICAgMjAwNCwgMjAxMCwgMjAxNSwgMjAyMSwgMjAyNiwgMjAzMiwgMjAzOCwgMjA0MywgMjA0OSwgMjA1NSwgMjA2MSwgMjA2NywgCisgICAgMjA3MiwgMjA3NywgMjA3OSwgMjA4MCwgMjA4NCwgMjA4OCwgMjA5MywgMjA5NywgMjEwMSwgMjEwNSwgMjExMCwgMjExNCwgCisgICAgMjExNywgMjEyMiwgMjEyNiwgMjEzMSwgMjEzNSwgMjEzOSwgMjE0NCwgMjE0OCwgMjE1MSwgMjE1NSwgMjE2MSwgMjE3NSwgCisgICAgMjE3OSwgMjE4MywgMjE4NywgMjE5MCwgMjE5NSwgMjE5OSwgMjIwMywgMjIwNiwgMjIxMCwgMjIxNSwgMjIyMCwgMjIyNSwgCisgICAgMjIzMCwgMjIzNCwgMjIzOCwgMjI0MiwgMjI0NiwgMjI1MSwgMjI1NSwgMjI2MCwgMjI2NCwgMjI2OSwgMjI3NSwgMjI4MiwgCisgICAgMjI4OCwgMjI5MywgMjI5OCwgMjMwMywgMjMwOSwgMjMxNCwgMjMyMCwgMjMyNSwgMjMyOCwgMjMzMCwgMTE3NCwgMjMzNCwgCisgICAgMjM0MSwgMjM0OSwgMjM1OSwgMjM2OCwgMjM4MiwgMjM4NiwgMjM5MCwgMjM5NSwgMjQwOCwgMjQxNiwgMjQyMCwgMjQyNSwgCisgICAgMjQyOSwgMjQzMiwgMjQzNiwgMjQ0MCwgMjQ0NSwgMjQ1MCwgMjQ1NSwgMjQ1OSwgMjQ2MiwgMjQ2NiwgMjQ3MywgMjQ4MCwgCisgICAgMjQ4NiwgMjQ5MSwgMjQ5NiwgMjUwMiwgMjUwOCwgMjUxMywgMjUxNiwgMTc1NiwgMjUxOCwgMjUyNCwgMjUyOCwgMjUzMywgCisgICAgMjUzNywgMjU0MSwgMTY3NCwgMTc2NywgMjU0NiwgMjU1MCwgMjU1MywgMjU1OCwgMjU2MywgMjU2OCwgMjU3MywgMjU3NywgCisgICAgMjU4NCwgMjU4OSwgMjU5MiwgMjU5NiwgMjYwMywgMjYwOSwgMjYxMywgMjYxNywgMjYyMSwgMjYyNiwgMjYzMywgMjYzOCwgCisgICAgMjY0MywgMjY1MCwgMjY1NiwgMjY2MiwgMjY2OCwgMjY4MiwgMjY5OSwgMjcxNCwgMjcyOSwgMjczOCwgMjc0MywgMjc0NywgCisgICAgMjc1MiwgMjc1NywgMjc2MSwgMjc3MywgMjc4MCwgMjc4NiwgMjI3OCwgMjc5MiwgMjc5OSwgMjgwNSwgMjgwOSwgMjgxMiwgCisgICAgMjgxOSwgMjgyNSwgMjgzMCwgMjgzNCwgMjgzOSwgMjg0MywgMjg0NywgMjEwMiwgMjg1MSwgMjg1NiwgMjg2MSwgMjg2NSwgCisgICAgMjg3MCwgMjg3OCwgMjg4MiwgMjg4NywgMjg5MSwgMjg5NSwgMjg5OSwgMjkwNCwgMjkwOSwgMjkxNCwgMjkxOCwgMjkyMywgCisgICAgMjkyOCwgMjkzMiwgMjkzNywgMjk0MSwgMjk0NCwgMjk0OCwgMjk1MiwgMjk2MCwgMjk2NSwgMjk2OSwgMjk3MywgMjk3OSwgCisgICAgMjk4OCwgMjk5MiwgMjk5NiwgMzAwMiwgMzAwNywgMzAxNCwgMzAxOCwgMzAyOCwgMzAzMiwgMzAzNiwgMzA0MSwgMzA0NSwgCisgICAgMzA1MCwgMzA1NiwgMzA2MSwgMzA2NSwgMzA2OSwgMzA3MywgMjQ3NiwgMzA4MSwgMzA4NiwgMzA5MiwgMzA5NywgMzEwMSwgCisgICAgMzEwNiwgMzExMSwgMzExNSwgMzEyMSwgMzEyNiwgMjEwNiwgMzEzMiwgMzEzOCwgMzE0MywgMzE0OCwgMzE1MywgMzE1OCwgCisgICAgMzE2MywgMzE2OCwgMzE3MywgMzE3OCwgMzE4MywgMzE4OSwgMzE5NCwgMTE4OSwgMTAxLCAzMjAwLCAzMjA0LCAzMjA4LCAKKyAgICAzMjEyLCAzMjE3LCAzMjIxLCAzMjI1LCAzMjMxLCAzMjM2LCAzMjQwLCAzMjQ0LCAzMjQ5LCAzMjU0LCAzMjU4LCAzMjYzLCAKKyAgICAzMjY3LCAzMjcwLCAzMjc0LCAzMjc5LCAzMjgzLCAzMjg4LCAzMjkyLCAzMjk1LCAzMjk5LCAzMzAzLCAzMzA4LCAzMzEyLCAKKyAgICAzMzE1LCAzMzI4LCAzMzMyLCAzMzM2LCAzMzQwLCAzMzQ1LCAzMzQ5LCAzMzUzLCAzMzU2LCAzMzYwLCAzMzY0LCAzMzY5LCAKKyAgICAzMzczLCAzMzc4LCAzMzgzLCAzMzg4LCAzMzkyLCAzMzk3LCAzNDAwLCAzNDAzLCAzNDA4LCAzNDE0LCAzNDE4LCAzNDIyLCAKKyAgICAzNDI1LCAzNDMwLCAzNDM0LCAzNDM5LCAzNDQzLCAzNDQ3LCAzNDUwLCAzNDU2LCAzNDYxLCAzNDY2LCAzNDcyLCAzNDc3LCAKKyAgICAzNDgyLCAzNDg4LCAzNDk0LCAzNDk5LCAzNTA0LCAzNTA5LCAzNTE0LCAxMDk3LCA1OTIsIDM1MTcsIDM1MjAsIDM1MjUsIAorICAgIDM1MjksIDM1MzMsIDM1MzcsIDM1NDEsIDM1NDQsIDM1NDgsIDM1NTMsIDM1NTgsIDM1NjIsIDM1NjcsIDM1NzEsIDM1NzYsIAorICAgIDM1ODAsIDM1ODQsIDM1ODgsIDM1OTQsIDM2MDAsIDM2MDMsIDM2MDYsIDE1MCwgMzYxMiwgMzYxNywgMzYyNiwgMzYzNCwgCisgICAgMzY0MywgMzY1MywgMzY2MCwgMzY2NiwgMzY3MywgMzY3OCwgMzY4MiwgMzY4NiwgMzY5NCwgMzcwMSwgMzcwNiwgMzcxMywgCisgICAgMzcxOCwgMzcyMiwgMzczMiwgMzczNiwgMzc0MCwgMzc0NSwgMzc1MCwgMzc2MCwgMjExOCwgMzc2NSwgMzc2OSwgMzc3MiwgCisgICAgMzc3OCwgMzc4MywgMzc4OSwgMzc5NSwgMzgwMCwgMzgwNywgMzgxMSwgMzgxNSwgNjE2LCA3MDUsIDEzNTAsIDM4MTksIAorICAgIDM4MjYsIDM4MzMsIDM4MzksIDM4NDQsIDM4NTEsIDM4NTgsIDM4NjMsIDM4NjksIDM4NzUsIDM4ODAsIDM4ODQsIDM4OTAsIAorICAgIDM4OTcsIDM5MDIsIDM5MDYsIDM5MTAsIDIxMjcsIDM5MTYsIDM5MjQsIDM5MzAsIDM5MzgsIDc1OSwgMzk0NCwgMzk1MiwgCisgICAgMzk2MywgMzk2NywgMzk3NywgMjEzMiwgMzk4MywgMzk4OCwgNDAwMywgNDAwOSwgNDAxNiwgNDAyNiwgNDAzMiwgNDAzNywgCisgICAgNDA0MywgNDA0OSwgNDA1MiwgNDA1NSwgNDA1OSwgNDA2NCwgNDA3MSwgNDA4MCwgNDA4NSwgNDA4OSwgNDA5MywgNDA5NywgCisgICAgNDEwMSwgNDEwNiwgNDExMiwgNDEyMywgNDEyNywgMzI3NSwgNDEzMiwgNDE0NCwgNDE1MCwgNDE1OCwgNDE2MiwgNDE2NywgCisgICAgMTU0MywgNDE3NCwgNDE3NywgNDE4MCwgNDE4NCwgNDE4NywgNDE5MywgNDE5NywgNDIxMSwgNDIxNSwgNDIxOCwgNDIyMiwgCisgICAgNDIyOCwgNDIzNCwgNDIzOSwgNDI0MywgNDI0NywgNDI1MywgNDI2NCwgNDI3MCwgNDI3NSwgNDI4MSwgNDI4NSwgNDI5MywgCisgICAgNDMwNSwgNDMxNSwgNDMyMSwgNDMyNiwgNDMzNSwgNDM0MywgNDM1MCwgNDM1NiwgNDM2MiwgNDM2NiwgNDM3MiwgNDM4MSwgCisgICAgNDM5MCwgNDM5NCwgNDQwMywgNDQwOCwgNDQxMiwgNDQxNywgNDQyMSwgNDQyOSwgNDQzNSwgNDQzOSwgNDQ0NCwgNDQ0OCwgCisgICAgNDQ1NCwgMjE0MCwgMTM2NiwgNDQ2MCwgNDQ2NSwgNDQ3MSwgNDQ3NiwgNDQ4MSwgNDQ4NiwgNDQ5MSwgNDQ5NiwgNDUwMSwgCisgICAgNDUwNywgNDUxMiwgNDUxOCwgNDUyMywgNDUyOCwgNDUzMywgNDUzOSwgNDU0NCwgNDU0OSwgNDU1NCwgNDU1OSwgNDU2NSwgCisgICAgNDU3MCwgNDU3NiwgNDU4MSwgNDU4NiwgNDU5MSwgNDU5NiwgNDYwMSwgNDYwNiwgNDYxMiwgNDYxNywgNDYyMiwgMjk3LCAKKyAgICAzMzIsIDQ2MjcsIDQ2MzMsIDQ2MzcsIDQ2NDEsIDQ2NDYsIDQ2NTAsIDQ2NTQsIDQ2NTcsIDQ2NjEsIDQ2NjUsIDQ2NjksIAorICAgIDQ2NzMsIDQ2NzcsIDQ2ODIsIDQ2ODYsIDQ2OTAsIDQ2OTYsIDQ0NTcsIDQ3MDEsIDQ3MDUsIDQ3MDgsIDQ3MTMsIDQ3MTgsIAorICAgIDQ3MjMsIDQ3MjgsIDQ3MzMsIDQ3MzgsIDQ3NDMsIDQ3NDgsIDQ3NTMsIDQ3NTgsIDQ3NjIsIDQ3NjcsIDQ3NzIsIDQ3NzcsIAorICAgIDQ3ODIsIDQ3ODcsIDQ3OTIsIDQ3OTcsIDQ4MDIsIDQ4MDcsIDQ4MTIsIDQ4MTYsIDQ4MjEsIDQ4MjYsIDQ4MzEsIDQ4MzYsIAorICAgIDQ4NDEsIDQ4NDYsIDQ4NTEsIDQ4NTYsIDQ4NjEsIDQ4NjYsIDQ4NzAsIDQ4NzUsIDQ4ODAsIDQ4ODUsIDQ4OTAsIDQ4OTUsIAorICAgIDQ5MDAsIDQ5MDUsIDQ5MTAsIDQ5MTUsIDQ5MjAsIDQ5MjQsIDQ5MjksIDQ5MzQsIDQ5MzksIDQ5NDQsIDQ5NDksIDQ5NTQsIAorICAgIDQ5NTksIDQ5NjQsIDQ5NjksIDQ5NzQsIDQ5NzgsIDQ5ODMsIDQ5ODgsIDQ5OTMsIDQ5OTgsIDUwMDMsIDUwMDgsIDUwMTMsIAorICAgIDUwMTgsIDUwMjMsIDUwMjgsIDUwMzIsIDUwMzcsIDUwNDIsIDUwNDcsIDUwNTIsIDUwNTcsIDUwNjIsIDUwNjcsIDUwNzIsIAorICAgIDUwNzcsIDUwODIsIDUwODYsIDUwOTEsIDUwOTYsIDUxMDEsIDUxMDYsIDUxMTIsIDUxMTgsIDUxMjQsIDUxMzAsIDUxMzYsIAorICAgIDUxNDIsIDUxNDgsIDUxNTMsIDUxNTksIDUxNjUsIDUxNzEsIDUxNzcsIDUxODMsIDUxODksIDUxOTUsIDUyMDEsIDUyMDcsIAorICAgIDUyMTMsIDUyMTgsIDUyMjQsIDUyMzAsIDUyMzYsIDUyNDIsIDUyNDgsIDUyNTQsIDUyNjAsIDUyNjYsIDUyNzIsIDUyNzgsIAorICAgIDUyODMsIDUyODksIDUyOTUsIDUzMDEsIDUzMDcsIDUzMTMsIDUzMTksIDUzMjUsIDUzMzEsIDUzMzcsIDUzNDMsIDUzNDgsIAorICAgIDUzNTQsIDUzNjAsIDUzNjYsIDUzNzIsIDUzNzgsIDUzODQsIDUzOTAsIDUzOTYsIDU0MDIsIDU0MDgsIDU0MTMsIDU0MTksIAorICAgIDU0MjUsIDU0MzEsIDU0MzcsIDU0NDMsIDU0NDksIDU0NTUsIDU0NjEsIDU0NjcsIDU0NzMsIDU0NzgsIDU0ODIsIDU0ODgsIAorICAgIDU0OTQsIDU1MDAsIDU1MDYsIDU1MTIsIDU1MTgsIDU1MjQsIDU1MzAsIDU1MzYsIDU1NDIsIDU1NDcsIDU1NTMsIDU1NTksIAorICAgIDU1NjUsIDU1NzEsIDU1NzcsIDU1ODMsIDU1ODksIDU1OTUsIDU2MDEsIDU2MDcsIDU2MTIsIDU2MTgsIDU2MjQsIDU2MzAsIAorICAgIDU2MzYsIDU2NDIsIDU2NDgsIDU2NTQsIDU2NjAsIDU2NjYsIDU2NzIsIDU2NzcsIDU2ODMsIDU2ODksIDU2OTUsIDU3MDEsIAorICAgIDU3MDcsIDU3MTMsIDU3MTksIDU3MjUsIDU3MzEsIDU3MzcsIDU3NDIsIDU3NDgsIDU3NTQsIDU3NjAsIDU3NjYsIDU3NzIsIAorICAgIDU3NzgsIDU3ODQsIDU3OTAsIDU3OTYsIDU4MDIsIDU4MDcsIDU4MTMsIDU4MTksIDU4MjUsIDU4MzEsIDU4MzcsIDU4NDMsIAorICAgIDU4NDksIDU4NTUsIDU4NjEsIDU4NjcsIDU4NzIsIDU4NzgsIDU4ODQsIDU4OTAsIDU4OTYsIDU5MDIsIDU5MDgsIDU5MTQsIAorICAgIDU5MjAsIDU5MjYsIDU5MzIsIDU5MzcsIDU5NDMsIDU5NDksIDU5NTUsIDU5NjEsIDU5NjcsIDU5NzMsIDU5NzksIDU5ODUsIAorICAgIDU5OTEsIDU5OTcsIDYwMDIsIDYwMDgsIDYwMTQsIDYwMjAsIDYwMjYsIDYwMzIsIDYwMzgsIDYwNDQsIDYwNTAsIDYwNTYsIAorICAgIDYwNjIsIDYwNjcsIDYwNzMsIDYwNzksIDYwODUsIDYwOTEsIDYwOTcsIDYxMDMsIDYxMDksIDYxMTUsIDYxMjEsIDYxMjcsIAorICAgIDYxMzIsIDYxMzYsIDYxMzksIDYxNDYsIDYxNTAsIDYxNjMsIDYxNjcsIDYxNzEsIDYxNzUsIDYxNzgsIDYxODIsIDYxODcsIAorICAgIDYxOTEsIDYxOTUsIDYyMDEsIDYyMDgsIDYyMTksIDYyMjcsIDYyMzQsIDYyMzgsIDYyNDYsIDYyNTUsIDYyNjEsIDYyNjUsIAorICAgIDYyNzcsIDYyODIsIDYyODUsIDYyOTAsIDYyOTQsIDYzMDQsIDYzMTIsIDYzMjAsIDYzMjYsIDYzMzAsIDYzNDAsIDYzNTAsIAorICAgIDYzNTgsIDYzNjUsIDYzNzIsIDYzNzgsIDYzODQsIDYzOTEsIDYzOTUsIDY0MDIsIDY0MTIsIDY0MjIsIDY0MzAsIDY0MzcsIAorICAgIDY0NDIsIDY0NDYsIDY0NTAsIDY0NTgsIDY0NjIsIDY0NjcsIDY0NzQsIDY0ODIsIDY0ODcsIDY0OTEsIDY0OTYsIDY1MDAsIAorICAgIDY1MDcsIDY1MTIsIDY1MjYsIDY1MzEsIDY1MzYsIDY1NDMsIDM1MzAsIDY1NTIsIDY1NTYsIDY1NjEsIDY1NjUsIDY1NjksIAorICAgIDY1NzIsIDY1NzcsIDY1ODIsIDY1OTEsIDY1OTcsIDY2MDMsIDY2MDksIDY2MTMsIDY2MjQsIDY2MzQsIDY2NDksIDY2NjQsIAorICAgIDY2NzksIDY2OTQsIDY3MDksIDY3MjQsIDY3MzksIDY3NTQsIDY3NjksIDY3ODQsIDY3OTksIDY4MTQsIDY4MjksIDY4NDQsIAorICAgIDY4NTksIDY4NzQsIDY4ODksIDY5MDQsIDY5MTksIDY5MzQsIDY5NDksIDY5NjQsIDY5NzksIDY5OTQsIDcwMDksIDcwMjQsIAorICAgIDcwMzksIDcwNTQsIDcwNjksIDcwODQsIDcwOTksIDcxMTQsIDcxMjksIDcxNDQsIDcxNTksIDcxNzQsIDcxODksIDcyMDQsIAorICAgIDcyMTksIDcyMzQsIDcyNDksIDcyNjQsIDcyNzksIDcyOTQsIDczMDksIDczMjQsIDczMzksIDczNTQsIDczNjksIDczNzgsIAorICAgIDczODcsIDczOTIsIDczOTgsIDc0MDgsIDc0MTIsIDc0MTYsIDc0MjEsIDc0MjYsIDc0MzQsIDc0MzgsIDc0NDEsIDc0NDUsIAorICAgIDMwMjMsIDc0NDgsIDc0NTMsIDMzNiwgNTEwLCA3NDU5LCA3NDY3LCA3NDcxLCA3NDc1LCA3NDc4LCA3NDgyLCA3NDg4LCAKKyAgICA3NDkyLCA3NTAwLCA3NTA2LCA3NTExLCA3NTE4LCA3NTI2LCA3NTMzLCA3NTM5LCA3NTQ0LCA3NTUxLCA3NTU3LCA3NTY1LCAKKyAgICA3NTY5LCA3NTc0LCA3NTg2LCA3NTk3LCA3NjA0LCA3NjA4LCA3NjEyLCA3NjE2LCA3NjE5LCA3NjI1LCAzMzAwLCA3NjI5LCAKKyAgICA3NjM1LCA3NjQwLCA3NjQ1LCA3NjUwLCA3NjU2LCA3NjYxLCA3NjY2LCA3NjcxLCA3Njc2LCA3NjgyLCA3Njg3LCA3NjkyLCAKKyAgICA3Njk4LCA3NzAzLCA3NzA5LCA3NzE0LCA3NzIwLCA3NzI1LCA3NzMxLCA3NzM2LCA3NzQxLCA3NzQ2LCA3NzUxLCA3NzU2LCAKKyAgICA3NzYyLCA3NzY3LCA3NzcyLCA3Nzc3LCA3NzgzLCA3Nzg5LCA3Nzk1LCA3ODAxLCA3ODA3LCA3ODEzLCA3ODE5LCA3ODI1LCAKKyAgICA3ODMxLCA3ODM3LCA3ODQzLCA3ODQ5LCA3ODU0LCA3ODU5LCA3ODY0LCA3ODY5LCA3ODc0LCA3ODc5LCA3ODg0LCA3ODg5LCAKKyAgICA3ODk1LCA3OTAxLCA3OTA2LCA3OTEyLCA3OTE4LCA3OTI0LCA3OTI5LCA3OTM0LCA3OTM5LCA3OTQ0LCA3OTUwLCA3OTU2LCAKKyAgICA3OTYxLCA3OTY2LCA3OTcxLCA3OTc2LCA3OTgxLCA3OTg3LCA3OTkyLCA3OTk4LCA4MDA0LCA4MDEwLCA4MDE2LCA4MDIyLCAKKyAgICA4MDI4LCA4MDM0LCA4MDQwLCA4MDQ2LCAyMTQ5LCA3NDc3LCA4MDUxLCA4MDU1LCA4MDU5LCA4MDYyLCA4MDY5LCA4MDcyLCAKKyAgICA4MDc2LCA4MDg0LCA4MDg5LCA4MDk0LCA4MDg1LCA4MDk5LCAyMTc2LCA4MTAzLCA4MTA5LCA4MTE1LCA4MTIwLCA4MTI1LCAKKyAgICA4MTMyLCA4MTQwLCA4MTQ1LCA4MTQ5LCA4MTUyLCA4MTU2LCA4MTYyLCA4MTY4LCA4MTcyLCAyMTg0LCA1NDEsIDgxNzUsIAorICAgIDgxNzksIDgxODQsIDgxOTAsIDgxOTUsIDgxOTksIDgyMDIsIDgyMDYsIDgyMTIsIDgyMTcsIDgyMjEsIDgyMjgsIDgyMzIsIAorICAgIDgyMzYsIDgyNDAsIDg4MiwgOTg0LCA4MjQzLCA4MjUxLCA4MjU4LCA4MjY0LCA4MjcxLCA4Mjc5LCA4Mjg2LCA4Mjk3LCAKKyAgICA4MzA0LCA4MzEwLCA4MzE1LCA4MzI3LCAxMjA5LCAxMzc0LCAxMzc5LCA4MzM4LCAxMzg0LCA4MzQyLCA4MzQ2LCA4MzU1LCAKKyAgICA4MzYzLCA4MzY3LCA4Mzc2LCA4MzgyLCA4Mzg3LCA4MzkxLCA4Mzk3LCA4NDAyLCA4NDEwLCA4NDE3LCAyNzM0LCA4NDI0LCAKKyAgICA4NDI4LCA4NDM3LCA4NDQ2LCA4NDU1LCA4NDY0LCA4NDcwLCA4NDc1LCA4NDgwLCA4NDkxLCA4NTAwLCA4NTEyLCA4NTE3LCAKKyAgICA4NTI1LCAyMjM1LCA4NTI5LCA4NTMxLCA4NTM2LCA4NTQwLCA4NTQ5LCA4NTU3LCAxMzg4LCAxNjUsIDM1NzIsIDM1NzcsIAorICAgIDg1NjMsIDg1NjcsIDg1NzYsIDg1ODIsIDg1ODcsIDg1OTAsIDg1OTksIDM1ODEsIDg2MDUsIDI3MjYsIDg2MDksIDg2MTcsIAorICAgIDg2MjEsIDg2MjUsIDg2MjksIDIyNTIsIDg2MzMsIDg2MzgsIDg2NDUsIDg2NTEsIDg2NTcsIDg2NjAsIDg2NjIsIDg2NjUsIAorICAgIDg2NzMsIDg2ODEsIDg2ODksIDg2OTIsIDg2OTcsIDIyNjUsIDg3MDIsIDgwOTYsIDg3MDUsIDg3MDcsIDg3MTIsIDg3MTcsIAorICAgIDg3MjIsIDg3MjcsIDg3MzIsIDg3MzcsIDg3NDIsIDg3NDcsIDg3NTIsIDg3NTcsIDg3NjMsIDg3NjgsIDg3NzMsIDg3NzgsIAorICAgIDg3ODQsIDg3ODksIDg3OTQsIDg3OTksIDg4MDQsIDg4MDksIDg4MTQsIDg4MjAsIDg4MjUsIDg4MzAsIDg4MzUsIDg4NDAsIAorICAgIDg4NDUsIDg4NTAsIDg4NTUsIDg4NjAsIDg4NjUsIDg4NzAsIDg4NzUsIDg4ODAsIDg4ODUsIDg4OTAsIDg4OTUsIDg5MDAsIAorICAgIDg5MDUsIDg5MTEsIDg5MTcsIDg5MjIsIDg5MjcsIDg5MzIsIDg5MzcsIDg5NDIsIDIyNzYsIDIyODMsIDIyODksIDg5NDcsIAorICAgIDg5NTUsIDg5NjEsIDg5NjksIDIzMTUsIDIzMjEsIDg5NzcsIDg5ODEsIDg5ODYsIDg5OTAsIDg5OTQsIDg5OTgsIDkwMDMsIAorICAgIDkwMDcsIDkwMTIsIDkwMTYsIDkwMTksIDkwMjIsIDkwMjgsIDkwMzUsIDkwNDEsIDkwNDgsIDkwNTQsIDkwNjEsIDkwNjcsIAorICAgIDkwNzQsIDkwODAsIDkwODYsIDkwOTUsIDkxMDEsIDkxMDUsIDkxMDksIDkxMTMsIDkxMTcsIDkxMjIsIDkxMjYsIDkxMzEsIAorICAgIDkxMzUsIDkxNDEsIDkxNDYsIDkxNTMsIDkxNjQsIDkxNzIsIDkxODIsIDkxODgsIDkxOTgsIDkyMDcsIDkyMTQsIDkyMTksIAorICAgIDkyMjMsIDkyMzQsIDkyNDQsIDkyNTcsIDkyNjgsIDkyODEsIDkyOTIsIDkzMDQsIDkzMTYsIDkzMjgsIDkzNDEsIDkzNTQsIAorICAgIDkzNjEsIDkzNjcsIDkzNzgsIDkzODgsIDk0MDIsIDk0MDksIDk0MTUsIDk0MjQsIDk0MzIsIDk0MzYsIDk0NDEsIDk0NDUsIAorICAgIDk0NTIsIDk0NjAsIDk0NjcsIDk0NzEsIDk0NzcsIDk0ODEsIDk0ODcsIDk0OTcsIDk1MDEsIDk1MDYsIDk1MTEsIDk1MTgsIAorICAgIDk1MjQsIDk1MzQsIDgyNjYsIDk1NDAsIDk1NDQsIDk1NTEsIDk1NTcsIDk1NjQsIDk1NzEsIDk4MywgOTU3NSwgOTU3OSwgCisgICAgOTU4NCwgOTU4OSwgOTU5NCwgOTU5OCwgOTYwNCwgOTYxMiwgOTYxOSwgOTYyNSwgOTYyOSwgOTYzMiwgOTYzOCwgOTY0OCwgCisgICAgOTY1MiwgOTY1OCwgOTY2MywgOTY2NywgOTY3MSwgOTY3NywgOTY4MywgMjE3MiwgOTY4OCwgOTY5MCwgOTY5NSwgOTcwMywgCisgICAgOTcxMiwgOTcxNiwgOTcyMiwgOTcyNywgOTczMiwgOTczNywgOTc0MiwgOTc0OCwgOTc1MywgOTc1OCwgNDI0OSwgOTc2MywgCisgICAgOTc2OCwgOTc3MiwgOTc3OCwgOTc4MywgOTc4OSwgOTc5NCwgOTc5OSwgOTgwNSwgOTgxMCwgOTcxNywgOTgxNiwgOTgyMCwgCisgICAgOTgyNywgOTgzMywgOTgzOCwgOTg0MiwgNjUyMiwgOTg0NywgOTg1NiwgOTg2MSwgOTg2NiwgODY0MSwgODY0OCwgOTg3MSwgCisgICAgMjkwMSwgOTg3NSwgOTg4MCwgOTg4NSwgOTg5MCwgOTcyOCwgOTg5NCwgOTg5OSwgOTkwNCwgOTczMywgOTkwOCwgOTczOCwgCisgICAgOTkxMywgOTkyMCwgOTkyNywgOTkzMywgOTk0MCwgOTk0NiwgOTk1MiwgOTk1NywgOTk2NCwgOTk2OSwgOTk3NCwgOTk3OSwgCisgICAgOTk4NSwgOTc0MywgOTc0OSwgOTk5MSwgOTk5NywgMTAwMDIsIDEwMDA3LCAxMDAxNSwgOTc1NCwgMTAwMjAsIDExMTIsIAorICAgIDEwMDIzLCAxMDAzMSwgMTAwMzcsIDEwMDQzLCAxMDA1MiwgMTAwNjAsIDEwMDY4LCAxMDA3NiwgMTAwODQsIDEwMDkyLCAKKyAgICAxMDEwMCwgMTAxMDgsIDEwMTE2LCAxMDEyNSwgMTAxMzQsIDEwMTQyLCAxMDE1MSwgMTAxNjAsIDEwMTY5LCAxMDE3OCwgCisgICAgMTAxODcsIDEwMTk2LCAxMDIwNSwgMTAyMTQsIDEwMjIzLCAxMDIzMiwgMTAyNDAsIDEwMjQ1LCAxMDI1MSwgMTAyNTksIAorICAgIDEwMjY2LCAxMDI4MSwgMTAyOTgsIDEwMzE3LCAxMDMyNiwgMTAzMzQsIDEwMzQ5LCAxMDM2MCwgMTAzNjgsIDEwMzc4LCAKKyAgICAxMDM4OCwgMTAzOTYsIDEwNDAyLCAxMDQxNCwgMTA0MjMsIDEwNDMxLCAxMDQzOCwgMTA0NDUsIDEwNDUyLCAxMDQ1OCwgCisgICAgMTA0NjMsIDEwNDczLCAxMDQ4MSwgMTA0OTEsIDEwNDk4LCAxMDUwOCwgMTA1MTgsIDEwNTI4LCAxMDUzNiwgMTA1NDMsIAorICAgIDEwNTUyLCAxMDU2MiwgMTA1NzYsIDEwNTkxLCAxMDYwMCwgMTA2MDgsIDEwNjEzLCAxMDYxNywgMTA2MjYsIDEwNjMyLCAKKyAgICAxMDYzNywgMTA2NDcsIDEwNjU3LCAxMDY2NywgMTA2NzIsIDEwNjc2LCAxMDY4NSwgMTA2OTAsIDEwNzA2LCAxMDcyMywgCisgICAgMTA3MzMsIDEwNzQ0LCAxMDc1NywgMTA3NjUsIDEwNzc4LCAxMDc5MCwgMTA3OTgsIDEwODAzLCAxMDgwNywgMTA4MTMsIAorICAgIDEwODE4LCAxMDgyNiwgMTA4MzQsIDEwODQxLCAxMDg0NiwgMTA4NTQsIDEwODY0LCAxMDg3MCwgMTA4NzQsIDEwODc3LCAKKyAgICAxMDg4MSwgMTA4ODcsIDEwODk0LCAxMDg5OCwgMTA5MDYsIDEwOTE1LCAxMDkyMywgMTA5MzAsIDEwOTM1LCAxMDk0MCwgCisgICAgMTA5NDQsIDEwOTQ4LCAxMDk1NiwgMTA5NzEsIDEwOTg3LCAxMDk5MywgMTEwMDEsIDExMDEwLCAxMTAxOCwgMTEwMjQsIAorICAgIDExMDI4LCAxMTAzNSwgMTEwNDYsIDExMDUwLCAxMTA1MywgMTEwNTksIDk3NTksIDExMDY0LCAxMTA3MCwgMTEwNzcsIAorICAgIDExMDgzLCAxMTA4OCwgMTEwOTUsIDExMTAyLCAxMTEwOSwgMTExMTYsIDExMTIzLCAxMTEzMCwgMTExMzcsIDExMTQ0LCAKKyAgICAxMTE0OSwgMTAyOTQsIDExMTU0LCAxMTE2MCwgMTExNjcsIDExMTc0LCAxMTE3OSwgMTExODYsIDExMTk1LCAxMTE5OSwgCisgICAgMTEyMTEsIDg2NzksIDExMjE1LCAxMTIxOCwgMTEyMjIsIDExMjI2LCAxMTIzMCwgMTEyMzQsIDExMjQwLCAxMTI0NiwgCisgICAgMTEyNTEsIDExMjU3LCAxMTI2MiwgMTEyNjcsIDExMjczLCAxMTI3OCwgMTEyODMsIDk1MTQsIDExMjg4LCAxMTI5MiwgCisgICAgMTEyOTYsIDExMzAwLCAxMTMwNSwgMTEzMTAsIDExMzE1LCAxMTMyMywgMTEzMjksIDExMzM0LCAxMTMzOCwgMTEzNDIsIAorICAgIDExMzQ5LCAxMTM1NCwgMTEzNjIsIDExMzY5LCAxMTM3NCwgMTEzNzgsIDExMzgxLCAxMTM4NywgMTEzOTQsIDExMzk4LCAKKyAgICAxMTQwMSwgMTE0MDYsIDExNDEwLCA0Mjg4LCAxMTQxNiwgMTE0MjUsIDQ2LCAxMTQzMywgMTE0MzksIDExNDQ0LCAxMTQ0OSwgCisgICAgMTE0NTcsIDExNDY0LCAxMTQ2OSwgOTUyOSwgMTE0NzUsIDExNDgxLCAxMTQ4NiwgMTE0OTAsIDExNDkzLCAxMTUwOCwgCisgICAgMTE1MjcsIDExNTM5LCAxMTU1MiwgMTE1NjUsIDExNTc4LCAxMTU5MiwgMTE2MDUsIDExNjIwLCAxMTYyNywgOTc2NCwgCisgICAgMTE2MzMsIDExNjQ3LCAxMTY1MiwgMTE2NTgsIDExNjYzLCAxMTY3MSwgMTE2NzYsIDg0MzMsIDExNjgxLCAxMTY4NCwgCisgICAgMTE2OTIsIDExNjk5LCAxMTcwNCwgMTE3MDgsIDExNzE0LCAyOTA2LCAxMDM3NiwgMTE3MTgsIDExNzIyLCAxMTcyOCwgCisgICAgMTE3MzQsIDExNzM5LCAxMTc0NSwgMTE3NTAsIDk3NzMsIDExNzU2LCAxMTc2MiwgMTE3NjcsIDExNzcyLCAxMTc4MCwgCisgICAgMTE3ODYsIDExNzk5LCAxMTgwNywgMTE4MTQsIDExODIwLCA5Nzc5LCAxMTgyNiwgMTE4MzQsIDExODQyLCAxMTg0OSwgCisgICAgMTE4NjIsIDExODc1LCAxMTg4NywgMTE4OTcsIDExOTA5LCAxMTkxNywgMTE5MjQsIDExOTM2LCAxMTk0MywgMTE5NTMsIAorICAgIDExOTYyLCAxMTk3MSwgMTE5NzksIDExOTg2LCAxMTk5MSwgMTE5OTcsIDk3ODQsIDEyMDAyLCAxMjAwOCwgMTIwMTMsIAorICAgIDEyMDE4LCA5NzkwLCAxMjAyMywgMTIwMjYsIDEyMDMzLCAxMjAzOSwgMTIwNTIsIDkxNTcsIDEyMDYzLCAxMjA2OSwgCisgICAgMTIwNzgsIDEyMDg2LCAxMjA5MywgMTIwOTksIDEyMTEwLCAxMjExNiwgMTIxMjEsIDM4MzUsIDEyMTI5LCAxMjEzNCwgCisgICAgMTE1MDAsIDEyMTQwLCAxMjE0NywgMTIxNTIsIDk3OTUsIDEyMTU4LCAxMjE2MywgMTIxNzAsIDEyMTc2LCAxMjE4MiwgCisgICAgMTIxODcsIDEyMTk1LCAxMjIwMywgMTIyMTAsIDEyMjE0LCAxMjIyNiwgMTIyNDAsIDEyMjUwLCAxMjI1NSwgMTIyNTksIAorICAgIDEyMjcwLCAxMjI3NiwgMTIyODEsIDEyMjg2LCA5ODAwLCAxMjI5MCwgOTgwNiwgMTIyOTUsIDEyMjk4LCAxMjMwMywgCisgICAgMTIzMTUsIDEyMzIyLCAxMjMyNywgMTIzMzEsIDEyMzM5LCAxMjM0NCwgMTIzNDgsIDEyMzUzLCAxMjM1NywgMTIzNjQsIAorICAgIDEyMzcwLCA5ODExLCA5NzE4LCAxMjM3NywgMjkxMSwgMTIsIDEyMzg0LCAxMjM4OSwgMTIzOTMsIDEyMzk3LCAxMjQwMywgCisgICAgMTI0MTEsIDEyNDIxLCAxMjQyNiwgMTI0MzEsIDEyNDM4LCAxMjQ0NSwgMTI0NDksIDEyNDYwLCAxMjQ3MCwgMTI0NzksIAorICAgIDEyNDg4LCAxMjUwMCwgMTI1MDUsIDEyNTA5LCAxMjUxNywgMTI1MzEsIDEyNTM1LCAxMjUzOCwgMTI1NDYsIDEyNTUzLCAKKyAgICAxMjU2MSwgMTI1NjUsIDEyNTc2LCAxMjU4MCwgMTI1ODcsIDEyNTkyLCAxMjU5NiwgMTI2MDIsIDEyNjA3LCAxMjYxMywgCisgICAgMTI2MTgsIDEyNjIzLCAxMjYyNywgMTI2MzMsIDEyNjM4LCAxMjY0OSwgMTI2NTMsIDEyNjU2LCAxMjY2MiwgMTI2NjcsIAorICAgIDEyNjczLCAxMjY3OSwgMTI2ODYsIDEyNjk3LCAxMjcwNywgMTI3MTcsIDEyNzI2LCAxMjczMywgMTI3NDIsIDEyNzQ2LCAKKyAgICA5ODIxLCA5ODI4LCA5ODM0LCA5ODM5LCAxMjc1MiwgMTI3NTgsIDEyNzY0LCAxMjc2OSwgMTI3NzUsIDk4NDMsIDEyNzgxLCAKKyAgICAxMjc4NCwgMTI3OTEsIDEyNzk2LCAxMjgxMSwgMTI4MjcsIDEyODQyLCAxMjg1MCwgMTI4NTYsIDEyODYxLCA5NzYsIDM4NywgCisgICAgMTI4NjYsIDEyODc0LCAxMjg4MSwgMTI4ODcsIDEyODkyLCAxMjg5NywgOTg0OCwgMTI4OTksIDEyOTAzLCAxMjkwOCwgCisgICAgMTI5MTIsIDEyOTIyLCAxMjkyNywgMTI5MzEsIDEyOTQwLCAxMjk0NCwgMTI5NDcsIDEyOTU0LCA5ODU3LCAxMjk1OSwgCisgICAgMTI5NjIsIDEyOTcwLCAxMjk3NywgMTI5ODUsIDEyOTg5LCAxMjk5MywgMTMwMDAsIDEzMDA5LCAxMzAxNiwgMTMwMTIsIAorICAgIDEzMDIzLCAxMzAyNywgMTMwMzMsIDEzMDM3LCAxMzA0MSwgMTMwNDUsIDEzMDUxLCAxMzA2MSwgMTMwNjksIDEzMDc2LCAKKyAgICAxMzA4MCwgMTMwODgsIDEzMDkyLCAxMzA5OSwgMTMxMDMsIDEzMTA4LCAxMzExMiwgMTMxMTksIDEzMTI1LCAxMzEzMywgCisgICAgMTMxMzksIDEzMTQ0LCAxMzE1NCwgMTMxNTksIDEzMTY0LCAxMzE2OCwgMTMxNzIsIDEzMTgwLCA0MTM4LCAxMzE4OCwgCisgICAgMTMxOTMsIDk4NjIsIDEzMTk3LCAxMzIwMSwgMTMyMDQsIDEzMjEyLCAxMzIxOSwgMTMyMjMsIDYzMjIsIDEzMjI3LCAKKyAgICAxMzIzMiwgMTMyMzcsIDEzMjQxLCAxMzI1MiwgMTMyNjIsIDEzMjY3LCAxMzI3MywgMTMyNzgsIDEzMjgyLCAxMzI4NSwgCisgICAgMTMyOTMsIDEzMjk4LCAxMzMwMywgMTMzMTAsIDEzMzE1LCA5ODY3LCAxMzMyMCwgMTMzMjQsIDEzMzMxLCAxNzE4LCA2NDgwLCAKKyAgICAxMzMzNiwgMTMzNDEsIDEzMzQ2LCAxMzM1MSwgMTMzNTcsIDEzMzYyLCAxMzM2OCwgMTMzNzMsIDEzMzc4LCAxMzM4MywgCisgICAgMTMzODgsIDEzMzkzLCAxMzM5OCwgMTM0MDMsIDEzNDA4LCAxMzQxMywgMTM0MTgsIDEzNDIzLCAxMzQyOCwgMTM0MzMsIAorICAgIDEzNDM4LCAxMzQ0MywgMTM0NDgsIDEzNDU0LCAxMzQ1OSwgMTM0NjQsIDEzNDY5LCAxMzQ3NCwgMTM0NzksIDEzNDg1LCAKKyAgICAxMzQ5MCwgMTM0OTUsIDEzNTAxLCAxMzUwNiwgMTM1MTIsIDEzNTE3LCAxMzUyMywgMTM1MjgsIDEzNTMzLCAxMzUzOCwgCisgICAgMTM1NDMsIDEzNTQ5LCAxMzU1NCwgMTM1NTksIDEzNTY0LCA5MzYsIDExMiwgMTM1NzIsIDEzNTc2LCAxMzU4MSwgMTM1ODYsIAorICAgIDEzNTkwLCAxMzU5NCwgMTM1OTgsIDEzNjAzLCAxMzYwNywgMTM2MTIsIDEzNjE2LCAxMzYxOSwgMTM2MjMsIDEzNjI3LCAKKyAgICAxMzYzMywgMTM2MzgsIDEzNjQ4LCAxMzY1NCwgMTM2NjIsIDEzNjY4LCAxMzY3MiwgMTM2NzYsIDEzNjgzLCAxMzY5MSwgCisgICAgMTM3MDAsIDEzNzExLCAxMzcyMSwgMTM3MjgsIDEzNzM1LCAxMzczOSwgMTM3NDgsIDEzNzU3LCAxMzc2NSwgMTM3NzQsIAorICAgIDEzNzgzLCAxMzc5MiwgMTM4MDEsIDEzODExLCAxMzgyMSwgMTM4MzEsIDEzODQxLCAxMzg1MSwgMTM4NjAsIDEzODcwLCAKKyAgICAxMzg4MCwgMTM4OTAsIDEzOTAwLCAxMzkxMCwgMTM5MjAsIDEzOTMwLCAxMzkzOSwgMTM5NDksIDEzOTU5LCAxMzk2OSwgCisgICAgMTM5NzksIDEzOTg5LCAxMzk5OSwgMTQwMDgsIDE0MDE4LCAxNDAyOCwgMTQwMzgsIDE0MDQ4LCAxNDA1OCwgMTQwNjgsIAorICAgIDE0MDc4LCAxNDA4OCwgMTQwOTgsIDE0MTA3LCAxNDExNywgMTQxMjcsIDE0MTM3LCAxNDE0NywgMTQxNTcsIDE0MTY3LCAKKyAgICAxNDE3NywgMTQxODcsIDE0MTk3LCAxNDIwNywgMTQyMTYsIDEyMTgsIDE0MjIyLCAxNDIyNSwgMTQyMjksIDE0MjM0LCAKKyAgICAxNDI0MSwgMTQyNDcsIDE0MjUyLCAxNDI1NiwgMTQyNjEsIDE0MjcwLCAxNDI3OCwgMTQyODMsIDE0Mjg3LCAxNDI5MSwgCisgICAgMTQyOTcsIDE0MzAyLCAxNDMwOCwgOTg3NiwgMTQzMTMsIDE0MzE4LCAxNDMyNywgOTg4NiwgMTQzMzIsIDE0MzM1LCAKKyAgICAxNDM0MSwgMTQzNDksIDk4OTEsIDE0MzU2LCAxNDM2MCwgMTQzNjQsIDE0MzY5LCAxNDM3MywgMTQzODMsIDE0Mzg5LCAKKyAgICAxNDM5NSwgMTQ0MDAsIDE0NDA5LCAxNDQxNywgMTQ0MjQsIDE0NDMxLCAxNDQzNiwgMTQ0NDMsIDE0NDQ4LCAxNDQ1MiwgCisgICAgMTQ0NTUsIDE0NDY2LCAxNDQ3NiwgMTQ0ODUsIDE0NDkzLCAxNDUwNCwgMTQ1MTYsIDE0NTI2LCAxNDUzMSwgMTQ1MzUsIAorICAgIDE0NTQwLCAxNDU0NSwgMTQ1NDksIDE0NTU1LCAxNDU2MywgMTQ1NzAsIDE0NTgxLCAxNDU4NiwgMTQ1OTYsIDE0NjA1LCAKKyAgICAxNDYwOSwgMTQ2MTIsIDE0NjE5LCAxNDYyOSwgMTQ2MzgsIDE0NjQ1LCAxNDY0OSwgMTQ2NTYsIDE0NjYyLCAxNDY2NywgCisgICAgMTQ2NzIsIDE0Njc2LCAxNDY4NSwgMTQ2OTAsIDE0Njk0LCAxNDcwMCwgMTQ3MDQsIDE0NzA5LCAxNDcxMywgMTQ3MjAsIAorICAgIDE0NzI3LCAxNDczMSwgMTQ3NDAsIDE0NzQ4LCAxNDc1NiwgMTQ3NjMsIDE0NzcxLCAxNDc4MywgMTQ3OTQsIDE0ODA0LCAKKyAgICAxNDgxMSwgMTQ4MTcsIDE0ODI2LCAxNDgzNywgMTQ4NDYsIDE0ODU4LCAxNDg3MCwgMTQ4ODIsIDE0ODkyLCAxNDkwMSwgCisgICAgMTQ5MTAsIDE0OTE4LCAxNDkyNSwgMTQ5MzQsIDE0OTQyLCAxNDk0NiwgMTQ5NTEsIDE0OTU3LCAxNDk2MywgMTQ5NjgsIAorICAgIDE0OTczLCA4MTE3LCAxNDk3NywgMTQ5NzksIDE0OTgzLCAxNDk4OCwgMTQ5OTUsIDE1MDAxLCAxNTAwNywgMTUwMTYsIAorICAgIDE1MDIwLCAxNTAyNiwgMTUwMzQsIDE1MDQxLCAxNTA1MCwgMTUwNTksIDE1MDY4LCAxNTA3NywgMTUwODYsIDE1MDk1LCAKKyAgICAxNTEwNCwgMTUxMTMsIDE1MTIzLCAxNTEzMywgMTUxNDIsIDE1MTQ4LCAxNTE1NSwgMTUxNjIsIDE1MTY4LCAxNTE4MiwgCisgICAgMTUxODgsIDE1MTk1LCAxNTIwMywgMTUyMTIsIDE1MjIwLCAxNTIyNiwgMTUyMzUsIDE1MjQ0LCAxNTI1NSwgMTUyNjUsIAorICAgIDE1MjczLCAxNTI4MCwgMTUyODgsIDE1Mjk3LCAxNTMxMCwgMTUzMTksIDE1MzI3LCAxNTMzNCwgMTUzNDcsIDE1MzUzLCAKKyAgICAxNTM1OSwgMTUzNjksIDE1Mzc4LCAxNTM4NywgMTUzOTIsIDE1Mzk2LCAxNTQwMiwgMTU0MDgsIDE1NDEzLCAxNTQyMCwgCisgICAgMTU0MjcsIDk1MjgsIDE1NDMyLCAxNTQzNywgMTU0NDQsIDE1NDUyLCAxNTQ1NywgMTU0NjQsIDE1NDY5LCAxNTQ4MSwgCisgICAgMTM2MjksIDE1NDg2LCAxNTQ5NCwgMTU1MDAsIDE1NTA1LCAxNTUxMywgMTU1MjEsIDE1NTI4LCAxNTUzNiwgMTU1NDIsIAorICAgIDE1NTUwLCAxNTU1OCwgMTU1NjQsIDE1NTY5LCAxNTU3NSwgMTU1ODIsIDE1NTg4LCAxNTU5MywgMTU1OTcsIDE1NjA4LCAKKyAgICAxNTYxNiwgMTU2MjIsIDE1NjI3LCAxNTYzNCwgMTU2NDMsIDE1NjQ5LCAxNTY1NCwgMTU2NjIsIDE1NjcxLCAxNTY4NSwgCisgICAgNDA4MiwgMTU2ODksIDE1Njk0LCAxNTY5OSwgMTU3MDUsIDE1NzEwLCAxNTcxNSwgMTU3MTksIDE1NzI0LCAxNTcyOSwgCisgICAgMTU3MzQsIDgxMTYsIDE1NzM5LCAxNTc0NCwgMTU3NDksIDE1NzU0LCAxNTc1OSwgMTU3NjMsIDE1NzY4LCAxNTc3MywgCisgICAgMTU3NzgsIDE1NzgzLCAxNTc4OSwgMTU3OTUsIDE1ODAwLCAxNTgwNCwgMTU4MTAsIDE1ODE1LCAxNTgyMCwgMTU4MjUsIAorICAgIDk4OTUsIDE1ODMwLCAxNTgzNSwgMTU4NDAsIDE1ODQ1LCAxNTg1MCwgMTU4NjcsIDE1ODg1LCAxNTg5NywgMTU5MTAsIAorICAgIDE1OTI3LCAxNTk0MywgMTU5NjAsIDE1OTcwLCAxNTk4OSwgMTYwMDAsIDE2MDExLCAxNjAyMiwgMTYwMzMsIDE2MDQ1LCAKKyAgICAxNjA1NiwgMTYwNjcsIDE2MDg0LCAxNjA5NSwgMTYxMDYsIDE2MTExLCA5OTAwLCAxNjExNiwgMTYxMjAsIDI0MDUsIAorICAgIDE2MTI0LCAxNjEyNywgMTYxMzMsIDE2MTQxLCAxNjE0OSwgMTYxNTUsIDE2MTY0LCAxNjE3MSwgMTYxNzYsIDE2MTg0LCAKKyAgICAxNjE5MiwgMTYxOTksIDE2MjAzLCAxNjIwOCwgMTYyMTQsIDE2MjIxLCAxNjIyOSwgMTYyMzYsIDE2MjQ4LCAxNjI1NSwgCisgICAgMTYyNjEsIDE2MjY5LCAxNjI3NCwgMTYyODAsIDEyODA1LCAxNjI4NiwgMTYyOTUsIDE2MzAxLCAxNjMwNiwgMTYzMTQsIAorICAgIDE2MzIzLCAxNjMzMSwgMTYzMzgsIDE2MzQ0LCAxNjM1MiwgMTYzNTksIDE2MzY1LCAxNjM3MSwgMTYzNzgsIDE2Mzg1LCAKKyAgICAxNjM5MSwgMTYzOTcsIDE2NDA2LCAxNjQxNCwgMTY0MjQsIDE2NDMxLCAxNjQzNywgMTY0NDUsIDE2NDUxLCAxNjQ1OSwgCisgICAgMTY0NjcsIDE2NDc0LCAxNjQ4NywgMTY0OTQsIDE2NTAzLCAxNjUxMiwgMTY1MjEsIDE2NTI5LCAxNjUzOSwgMTY1NDYsIAorICAgIDE2NTUxLCAzNzI2LCAxNjU1OCwgMTY1NjMsIDEzMzQsIDE2NTY3LCAxNTc0MCwgMTY1NzEsIDE2NTc3LCAxNjU4MSwgCisgICAgMTY1ODksIDE2NjAxLCAxNjYwNiwgMTY2MTMsIDE2NjE5LCAxNjYyNCwgMTY2MzEsIDE1NzQ1LCAxNjYzNSwgMTY2MzksIAorICAgIDE2NjQzLCAxNTc1MCwgMTY2NDcsIDE1NzU1LCAxNjY1MSwgMTY2NTgsIDE2NjYzLCAxNjY2NywgMTY2NzQsIDE2Njc4LCAKKyAgICAxNjY4NiwgMTY2OTMsIDE2Njk4LCAxNjcwMiwgMTY3MDksIDE2NzI2LCAxNjczNSwgMTY3MzksIDE2NzQyLCAxNjc1MCwgCisgICAgMTY3NTYsIDE2NzYxLCAzODA0LCAxNjc2NSwgMTY3NjcsIDE2Nzc1LCAxNjc4MiwgMTY3OTIsIDE2ODA0LCAxNjgwOSwgCisgICAgMTY4MTMsIDE2ODE5LCAxNjgyNCwgMTY4MzIsIDE2ODM2LCAxNjg0MiwgMTY4NDcsIDE2ODUzLCAxNjg1NiwgMTY4NjMsIAorICAgIDE2ODcxLCAxNjg3OCwgMTY4ODQsIDE2ODg5LCAxNjg5NSwgMTY5MDAsIDE2OTA3LCAxNjkxMywgMTY5MTgsIDE2OTI1LCAKKyAgICAxNjkzMCwgMTY5MzQsIDE2OTQwLCAxNjk0NCwgMTY5NTEsIDE2OTU3LCAxNjk2MiwgMTY5NjgsIDE2OTc2LCAxNjk4NCwgCisgICAgMTY5OTEsIDE2OTk3LCAxNzAwMiwgMTcwMDgsIDE3MDE0LCAxNzAyMiwgMTcwMjcsIDE3MDM1LCAxNzA0MSwgMTcwNDcsIAorICAgIDE3MDUyLCAxNzA1OSwgMTcwNjQsIDE3MDY4LCAxNzA3NCwgMTcwNzksIDE3MDg2LCAxNzA5MSwgMTcwOTcsIDE3MTAwLCAKKyAgICAxNzEwNiwgMTcxMTIsIDE3MTE1LCAxNzExOSwgMTcxMjMsIDE3MTM1LCAxNzE0MSwgMTcxNDYsIDE3MTUzLCAxNzE1OSwgCisgICAgMTcxNjUsIDE3MTc2LCAxNzE4NiwgMTcxOTUsIDE3MjAzLCAxNzIxMCwgMTcyMjEsIDE3MjMxLCAxNzI0MSwgMTcyNDksIAorICAgIDE3MjUyLCAxNTc2OSwgMTcyNTcsIDE3MjYyLCAxNTc3NCwgMTU5MTUsIDE3MjcwLCAxNzI4MywgMTcyOTgsIDE3MzA5LCAKKyAgICAxNTkzMiwgMTczMjcsIDE3MzQwLCAxNzM1MywgMTczNjQsIDExNTE1LCAxNzM3NSwgMTczODgsIDE3NDA3LCAxNzQxOCwgCisgICAgMTc0MjksIDE3NDQwLCAyNjc3LCAxNzQ1MywgMTc0NTcsIDE3NDY1LCAxNzQ3NiwgMTc0ODcsIDE3NDk1LCAxNzUxMCwgCisgICAgMTc1MjUsIDE3NTM2LCAxNzU0MywgMTc1NDksIDE3NTU3LCAxNzU2MSwgMTc1NjcsIDE3NTcwLCAxNzU4MywgMTc1OTUsIAorICAgIDE3NjA1LCAxNzYxMywgMTc2MjAsIDE3NjI4LCAxNzYzOCwgMTc2NDMsIDE3NjUwLCAxNzY1NSwgMTc2NjIsIDE3NjczLCAKKyAgICAxNzY4MywgMTc2ODksIDE3Njk0LCAxNzY5OSwgMTU3NzksIDE3NzAzLCAxNzcwOSwgMTc3MTUsIDE3NzIwLCAxNzcyNSwgCisgICAgMTc3MzAsIDE3NzM0LCAxNTc4NCwgMTU3OTAsIDE3NzM4LCAxNTc5NiwgMTc3NDMsIDE3NzUxLCAxNzc1NiwgMTc3NjAsIAorICAgIDE3NzY3LCAxNzc3NSwgMTc3ODQsIDE3NzkxLCAxNzc5NSwgOTczOSwgMTc3OTksIDE3ODAxLCAxNzgwNiwgMTc4MTEsIAorICAgIDE3ODE3LCAxNzgyMiwgMTc4MjcsIDE3ODMyLCAxNzgzNywgMTc4NDEsIDE3ODQ3LCAxNzg1MywgMTc4NTgsIDE3ODY0LCAKKyAgICAxNzg2OSwgMTc4NzQsIDE3ODc4LCAxNzg4NCwgMTc4ODksIDE3ODkzLCAxNzg5OCwgMTc5MDMsIDE3OTE1LCAxNzkyMCwgCisgICAgMTc5MjYsIDE3OTMxLCAxNzkzNiwgMTc5NDIsIDE3OTQ4LCAxNzk1MywgMTc5NTgsIDE3OTYzLCAxNzk3MCwgMTc5NzYsIAorICAgIDE3OTg3LCAxNzk5NCwgMTc5OTksIDE4MDAzLCAxODAwNywgMTgwMTAsIDE4MDE4LCAxODAyMywgMTgwMjksIDE4MDM2LCAKKyAgICAxODA0MywgMTgwNDksIDE4MDU0LCAxODA1OSwgMTgwNjQsIDE4MDcxLCAxODA4MSwgMTgwODksIDE4MDk0LCAxODEwMSwgCisgICAgMTgxMDcsIDE4MTE2LCAxODEyNiwgMTgxMzYsIDE4MTUwLCAxODE2NCwgMTgxNzgsIDE4MTkyLCAxODIwNywgMTgyMjIsIAorICAgIDE4MjM5LCAxODI1NywgMTgyNzAsIDE4Mjc2LCAxODI4MSwgMTgyODYsIDE4MjkwLCAxODI5OCwgMTgzMDMsIDE4MzExLCAKKyAgICAxODMxNywgMTgzMjMsIDE4MzI4LCAxODMzMywgMTgzMzcsIDE4MzQyLCAxODM0NiwgMTgzNTEsIDE4MzU1LCAxODM2NiwgCisgICAgMTgzNzIsIDE4Mzc3LCAxODM4MiwgMTgzODksIDE4Mzk0LCAxODM5OCwgMzY4OSwgMTg0MDMsIDE4NDA5LCAxODQxNiwgCisgICAgMTU4MDUsIDE4NDIyLCAxODQyNiwgMTg0MzIsIDE4NDM3LCAxODQ0MiwgMTg0NDYsIDE4NDUyLCAxODQ1NywgMTg0NjIsIAorICAgIDE4NDY5LCAxODQ3NCwgMTQzODUsIDE4NDc4LCAxODQ4MywgMTg0ODcsIDE4NDkyLCAxODQ5OCwgMTg1MDQsIDE4NTExLCAKKyAgICAxODUyMSwgMTg1MjksIDE4NTM2LCAxODU0MSwgMTg1NDUsIDE4NTU0LCAxODU2MiwgMTg1NjksIDE4NTc2LCAxODU4MiwgCisgICAgMTg1ODcsIDE4NTkzLCAxODU5OCwgMTg2MDMsIDE4NjA5LCAxODYxNCwgMTg2MjAsIDE4NjI1LCAxODYzMSwgMTg2MzcsIAorICAgIDE4NjQ0LCAxODY1MCwgMTg2NTUsIDE4NjYwLCA5OTY1LCAxODY2OSwgMTg2NzIsIDE4NjgwLCAxODY4NiwgMTg2OTEsIAorICAgIDE4Njk2LCAxODcwNiwgMTg3MTMsIDE4NzE5LCAxODcyNCwgMTg3MjksIDE4NzM1LCAxODc0MCwgMTg3NDYsIDE4NzUxLCAKKyAgICAxODc1NywgMTg3NjMsIDE4NzY5LCAxODc3NCwgMTg3ODIsIDE4Nzg5LCAxODc5NCwgMTg3OTksIDE4ODA1LCAxODgxMCwgCisgICAgMTg4MTQsIDE4ODIzLCAxODgzNCwgMTg4NDEsIDE4ODQ4LCAxODg1NiwgMTg4NjMsIDE4ODY4LCAxODg3MywgMTg4NzksIAorICAgIDE4ODg0LCAxODg5MiwgMTg4OTgsIDE4OTA0LCAxODkxMSwgMTg5MTcsIDE4OTIyLCAxODkyNiwgMTg5MzIsIDE4OTM3LCAKKyAgICAxODk0MiwgMTg5NDYsIDE4OTUxLCAxNDA3LCA4MTQxLCAyOTI1LCAxODk1NSwgMTg5NTksIDE4OTYzLCAxODk2NywgMTg5NzEsIAorICAgIDE4OTc1LCAxODk3OCwgMTg5ODMsIDE4OTkwLCAxODk5OCwgMTU4MTYsIDE5MDA1LCAxOTAxNSwgMTkwMjMsIDE5MDMwLCAKKyAgICAxOTAzOCwgMTkwNDgsIDE5MDU3LCA5Mjc1LCAxOTA3MCwgMTkwNzUsIDE5MDgwLCAxOTA4OCwgMTkwOTUsIDE0NDgxLCAKKyAgICAxNDQ5MCwgMTkxMDIsIDE5MTEyLCAxOTEyNywgMTkxMzMsIDE5MTQwLCAxOTE0NywgMTkxNTMsIDE5MTU5LCAxOTE3MCwgCisgICAgMTkxNzgsIDE5MTg2LCAxOTE5NiwgMTkyMDYsIDE1ODIxLCAxOTIxNSwgMTkyMjEsIDE5MjI3LCAxOTIzNSwgMTkyNDMsIAorICAgIDE5MjQ4LCAxOTI1NywgMTkyNjUsIDE5Mjc3LCAxOTI4NywgMTkyOTcsIDE5MzA3LCAxOTMxNiwgMTkzMjgsIDE5MzM4LCAKKyAgICAxOTM0OCwgMTkzNTksIDE5MzY2LCAxOTM3MSwgMTkzODMsIDE5Mzk1LCAxOTQwNywgMTk0MTksIDE5NDMxLCAxOTQ0MywgCisgICAgMTk0NTUsIDE5NDY3LCAxOTQ3OSwgMTk0OTEsIDE5NTAyLCAxOTUxNCwgMTk1MjYsIDE5NTM4LCAxOTU1MCwgMTk1NjIsIAorICAgIDE5NTc0LCAxOTU4NiwgMTk1OTgsIDE5NjEwLCAxOTYyMiwgMTk2MzMsIDE5NjQ1LCAxOTY1NywgMTk2NjksIDE5NjgxLCAKKyAgICAxOTY5MywgMTk3MDUsIDE5NzE3LCAxOTcyOSwgMTk3NDEsIDE5NzUzLCAxOTc2NCwgMTk3NzYsIDE5Nzg4LCAxOTgwMCwgCisgICAgMTk4MTIsIDE5ODI0LCAxOTgzNiwgMTk4NDgsIDE5ODYwLCAxOTg3MiwgMTk4ODQsIDE5ODk1LCAxOTkwNywgMTk5MTksIAorICAgIDE5OTMxLCAxOTk0MywgMTk5NTUsIDE5OTY3LCAxOTk3OSwgMTk5OTEsIDIwMDAzLCAyMDAxNSwgMjAwMjYsIDIwMDM4LCAKKyAgICAyMDA1MCwgMjAwNjIsIDIwMDc0LCAyMDA4NiwgMjAwOTgsIDIwMTEwLCAyMDEyMiwgMjAxMzQsIDIwMTQ2LCAyMDE1NywgCisgICAgMjAxNjksIDIwMTgxLCAyMDE5MywgMjAyMDUsIDIwMjE3LCAyMDIyOSwgMjAyNDEsIDIwMjUzLCAyMDI2NSwgMjAyNzcsIAorICAgIDIwMjg4LCAyMDMwMCwgMjAzMTIsIDIwMzI0LCAyMDMzNiwgMjAzNDksIDIwMzYyLCAyMDM3NSwgMjAzODgsIDIwNDAxLCAKKyAgICAyMDQxNCwgMjA0MjcsIDIwNDM5LCAyMDQ1MiwgMjA0NjUsIDIwNDc4LCAyMDQ5MSwgMjA1MDQsIDIwNTE3LCAyMDUzMCwgCisgICAgMjA1NDMsIDIwNTU2LCAyMDU2OSwgMjA1ODEsIDIwNTk0LCAyMDYwNywgMjA2MjAsIDIwNjMzLCAyMDY0NiwgMjA2NTksIAorICAgIDIwNjcyLCAyMDY4NSwgMjA2OTgsIDIwNzExLCAyMDcyMywgMjA3MzYsIDIwNzQ5LCAyMDc2MiwgMjA3NzUsIDIwNzg4LCAKKyAgICAyMDgwMSwgMjA4MTQsIDIwODI3LCAyMDg0MCwgMjA4NTMsIDIwODY1LCAyMDg3OCwgMjA4OTEsIDIwOTA0LCAyMDkxNywgCisgICAgMjA5MzAsIDIwOTQzLCAyMDk1NiwgMjA5NjksIDIwOTgyLCAyMDk5NSwgMjEwMDcsIDIxMDIwLCAyMTAzMywgMjEwNDYsIAorICAgIDIxMDU5LCAyMTA3MiwgMjEwODUsIDIxMDk4LCAyMTExMSwgMjExMjQsIDIxMTM3LCAyMTE0OSwgMjExNjAsIDIxMTczLCAKKyAgICAyMTE4NiwgMjExOTksIDIxMjEyLCAyMTIyNSwgMjEyMzgsIDIxMjUxLCAyMTI2NCwgMjEyNzcsIDIxMjkwLCAyMTMwMiwgCisgICAgMjEzMTUsIDIxMzI4LCAyMTM0MSwgMjEzNTQsIDIxMzY3LCAyMTM4MCwgMjEzOTMsIDIxNDA2LCAyMTQxOSwgMjE0MzIsIAorICAgIDIxNDQ0LCAyMTQ1NywgMjE0NzAsIDIxNDgzLCAyMTQ5NiwgMjE1MDksIDIxNTIyLCAyMTUzNSwgMjE1NDgsIDIxNTYxLCAKKyAgICAyMTU3NCwgMjE1ODYsIDIxNTk5LCAyMTYxMiwgMjE2MjUsIDIxNjM4LCAyMTY1MSwgMjE2NjQsIDIxNjc3LCAyMTY5MCwgCisgICAgMjE3MDMsIDIxNzE2LCAyMTcyOCwgMjE3NDEsIDIxNzU0LCAyMTc2NywgMjE3ODAsIDIxNzkzLCAyMTgwNiwgMjE4MTksIAorICAgIDIxODMyLCAyMTg0NSwgMjE4NTgsIDIxODcwLCAyMTg4MywgMjE4OTYsIDIxOTA5LCAyMTkyMiwgMjE5MzUsIDIxOTQ4LCAKKyAgICAyMTk2MSwgMjE5NzQsIDIxOTg3LCAyMjAwMCwgMjIwMTIsIDIyMDI1LCAyMjAzOCwgMjIwNTEsIDIyMDY0LCAyMjA3NywgCisgICAgMjIwOTAsIDIyMTAzLCAyMjExNiwgMjIxMjksIDIyMTQyLCAyMjE1NCwgMjIxNjcsIDIyMTgwLCAyMjE5MywgMjIyMDYsIAorICAgIDIyMjE5LCAyMjIzMiwgMjIyNDUsIDIyMjU4LCAyMjI3MSwgMjIyODQsIDIyMjk2LCAyMjMwOSwgMjIzMjIsIDIyMzM1LCAKKyAgICAyMjM0OCwgMjIzNjEsIDIyMzc0LCAyMjM4NywgMjI0MDAsIDIyNDEzLCAyMjQyNiwgMjI0MzgsIDIyNDUxLCAyMjQ2NCwgCisgICAgMjI0NzcsIDIyNDkwLCAyMjUwMywgMjI1MTYsIDIyNTI5LCAyMjU0MiwgMjI1NTUsIDIyNTY4LCAyMjU4MCwgMjI1OTEsIAorICAgIDIyNjAwLCAyMjYwOCwgMjI2MTYsIDIyNjIzLCAyMjYyOSwgMjI2MzMsIDIyNjM5LCAyMjY0NSwgMjI2NTMsIDIyNjU4LCAKKyAgICAyMjY2NCwgMjI2NjksIDIyNjczLCAyMjY4MiwgOTc0NCwgMjI2OTMsIDIyNzAwLCAyMjcwOCwgMjI3MTUsIDIyNzIyLCAKKyAgICAxMjA0NiwgMjI3MjksIDIyNzM2LCAyMjc0NSwgMjI3NTAsIDIyNzU1LCA4MTY5LCAyMjc2MiwgMjI3NjcsIDIyNzcwLCAKKyAgICAyMjc3NSwgMjI3ODMsIDIyNzkwLCAyMjc5NywgMjI4MDQsIDIyODEwLCAyMjgxOSwgMjI4MjgsIDIyODM3LCAyMjg0MywgCisgICAgMjI4NTEsIDIyODYwLCAyMjg2NCwgMjI4NzAsIDIyODc1LCAyMjg4NSwgMjI4OTIsIDIyODk4LCAyMjkwNiwgMjI5MTIsIAorICAgIDIyOTE5LCAyMjkyOSwgMjI5MzgsIDIyOTQyLCAyMjk0OSwgMjI5NTMsIDIyOTU4LCAyMjk2NCwgMjI5NzIsIDIyOTc2LCAKKyAgICAyMjk4NiwgMTU4MzEsIDIyOTk1LCAyMzAwMSwgMjMwMDUsIDIzMDE0LCAyMzAyNCwgMTU4MzYsIDIzMDMwLCAyMzAzNywgCisgICAgMjMwNDgsIDIzMDU2LCAyMzA2NiwgMjMwNzUsIDIzMDgzLCA5NDkzLCAyMzA5MSwgMjMwOTYsIDIzMTAyLCAyMzEwNywgCisgICAgMjMxMTEsIDIzMTE1LCAyMzExOSwgMTA0NzcsIDIzMTI0LCAyMzEzMiwgMjMxMzksIDIzMTQ4LCAyMzE1NSwgMjMxNjIsIAorICAgIDIzMTY4LCAxMTk2NiwgMjMxNzUsIDIzMTgxLCAyMzE4NSwgMjMxOTEsIDIzMTk4LCAyMzIwNCwgMjMyMTIsIDIzMjE4LCAKKyAgICAyMzIyNSwgMjMyMzEsIDIzMjM3LCAyMzI0NiwgMjMyNTAsIDIzMjU4LCAyMzI2NywgMjMyNzQsIDIzMjc5LCAyMzI4MywgCisgICAgMjMyOTQsIDIzMjk5LCAyMzMwNCwgMjMzMTAsIDIzMzE1LCAyMzMyOCwgODM3MywgMjMzMzIsIDIzMzM4LCAyMzM0NCwgCisgICAgMjMzNDksIDIzMzU3LCAyMzM2MSwgMjMzNjgsIDIzMzc3LCAyMzM4MiwgMTYxMDcsIDIzMzkwLCAyMzM5NCwgMjM0MDYsIAorICAgIDIzNDExLCAyMzQxNSwgMjM0MTgsIDIzNDI0LCAyMzQzMCwgMjM0MzYsIDIzNDQxLCAyMzQ0NSwgMjM0NDgsIDIzNDU5LCAKKyAgICAyMzQ2NCwgMTAwMTYsIDIzNDcxLCAyMzQ3NiwgMTIyNCwgMTAwMjEsIDIzNDgxLCAyMzQ4NiwgMjM0OTEsIDIzNDk2LCAKKyAgICAyMzUwMSwgMjM1MDYsIDIzNTExLCAyMzUxNiwgMjM1MjEsIDIzNTI2LCAyMzUzMSwgMjM1MzYsIDIzNTQyLCAyMzU0NywgCisgICAgMjM1NTIsIDIzNTU3LCAyMzU2MiwgMjM1NjcsIDIzNTcyLCAyMzU3NywgMjM1ODIsIDIzNTg3LCAyMzU5MywgMjM1OTksIAorICAgIDIzNjA0LCAyMzYwOSwgMjM2MTQsIDIzNjE5LCAyMzYyNCwgMjM2MjksIDIzNjM0LCAyMzYzOSwgMjM2NDQsIDIzNjUwLCAKKyAgICAyMzY1NSwgMjM2NjAsIDIzNjY1LCAyMzY3MSwgMjM2NzcsIDIzNjgyLCAyMzY4NywgMjM2OTIsIDIzNjk3LCAyMzcwMiwgCisgICAgMjM3MDcsIDIzNzEyLCAyMzcxNywgMjM3MjMsIDIzNzI4LCAyMzczMywgMjM3MzgsIDIzNzQzLCAyMzc0OSwgMjM3NTQsIAorICAgIDIzNzU5LCAyMzc2MywgMTMzMCwgMTQwLCAyMzc3MSwgMjM3NzUsIDIzNzc5LCAyMzc4MywgMjM3ODgsIDIzNzkyLCAxNDM5MSwgCisgICAgMjMzMSwgMjM3OTYsIDIzODAxLCAyMzgwNSwgMjM4MTAsIDIzODE0LCAyMzgxOSwgMjM4MjMsIDIzODI5LCAyMzgzNCwgCisgICAgMjM4MzgsIDIzODQyLCAyMzg1MCwgMjM4NTQsIDIzODU4LCAyMzg2MywgMjM4NjgsIDIzODcyLCAyMzg3OCwgMjM4ODMsIAorICAgIDIzODg3LCAyMzg5MiwgMjM4OTcsIDIzOTAxLCAyMzkwOCwgMjM5MTUsIDIzOTIyLCAyMzkyNywgMjM5MzEsIDIzOTM1LCAKKyAgICAyMzk0MCwgMjM5NDQsIDIzOTQ3LCAyMzk1MywgMjM5NjYsIDIzOTcxLCAyMzk3NywgMjM5ODYsIDIzOTkxLCAxMDI0MSwgCisgICAgMjM5OTYsIDI0MDA1LCAyNDAxMCwgMjQwMTMsIDI3NDAsIDI3NDUsIDI0MDE3LCAyNDAyMywgMjQwMjksIDM2NTAsIDI0MDM0LCAKKyAgICAyNDAzOSwgMjQwNDQsIDI0MDUwLCAyNDA1NSwgMTUyNTEsIDI0MDYwLCAyNDA2NSwgMjQwNzAsIDI0MDc1LCAyNDA4MSwgCisgICAgMjQwODYsIDI0MDkxLCAyNDA5NywgMjQxMDIsIDI0MTA2LCAyNDExMSwgMjQxMTYsIDI0MTIxLCAyNDEyNiwgMjQxMzEsIAorICAgIDI0MTM1LCAyNDE0MCwgMjQxNDQsIDI0MTQ5LCAyNDE1NCwgMjQxNTksIDI0MTY0LCAyNDE2OCwgMjQxNzMsIDI0MTc3LCAKKyAgICAyNDE4MiwgMjQxODcsIDI0MTkyLCAyNDEwNywgMjkzNCwgMjQxMTIsIDI0MTk3LCAyNDIwNSwgMjQyMTIsIDEwNTcxLCAKKyAgICAyNDIyNCwgMjQyMzIsIDI0MjQyLCAyNDI2MCwgMjQyNzksIDI0Mjg4LCAyNDI5NiwgMjQxMTcsIDI0MzAzLCAyNDMwOCwgCisgICAgMjQzMTYsIDI0MTIyLCAyNDMyMSwgMjQzMjYsIDI0MzM0LCAyNDMzOSwgMjQxMjcsIDI0MzQ0LCAyNDM1MiwgMjQzNTcsIAorICAgIDI0MzYxLCAyNDM2OCwgMjQzNzQsIDI0MzgzLCAyNDM5MSwgMjQzOTUsIDI0Mzk4LCAyNDQwNSwgMjQ0MDksIDI0NDEzLCAKKyAgICAyNDQxOCwgMjQ0MjQsIDI0NDMxLCAyNDQzNiwgOTUyMCwgMTcyMywgMTcyOCwgMjQ0NDAsIDI0NDQ2LCAyNDQ1MiwgMjQ0NTcsIAorICAgIDI0NDYxLCAyNDQ2NSwgMjQ0NjksIDI0NDczLCAyNDQ3NywgMjQ0ODEsIDI0NDg1LCAyNDQ4OSwgMjQ0OTIsIDI0NDk4LCAKKyAgICAyNDUwNSwgMjQ1MTMsIDI0NTE5LCAyNDUyNSwgMjQ1MzAsIDI0NTM1LCAyNDU0MSwgMjQ1NDUsIDI0NTUwLCAxNTE1NywgCisgICAgMTUxNjQsIDI0NTU3LCAyNDU2OSwgMjQ1NzIsIDI0NTc5LCAyNDU4MywgMTgwNDUsIDI0NTkwLCAyNDU5OCwgMjQ2MDksIAorICAgIDI0NjE4LCAyNDYzMSwgMjQ2NDEsIDI0NjU1LCAyNDY2NywgMjQ2ODEsIDI0Njk0LCAyNDcwNiwgMjQ3MTYsIDI0NzI4LCAKKyAgICAyNDczNCwgMjQ3NDAsIDI0NzU1LCAyNDc3OSwgMjQ3OTcsIDI0ODE2LCAyNDgyOSwgMjQ4NDMsIDI0ODYxLCAyNDg3NywgCisgICAgMjQ4OTQsIDI0OTEyLCAyNDkyMywgMjQ5NDIsIDI0OTU5LCAyNDk3OSwgMjQ5OTcsIDI1MDA5LCAyNTAyMywgMjUwMzcsIAorICAgIDI1MDQ5LCAyNTA2NiwgMjUwODUsIDI1MTAzLCAyNTExNSwgMjUxMzMsIDI1MTUyLCAxNTk3NSwgMjUxNjUsIDI1MTg1LCAKKyAgICAyNTE5NywgMTE1NDYsIDI1MjA5LCAyNTIxNCwgMjUyMTksIDI1MjI0LCAyNTIzMCwgMjUyMzUsIDI1MjM5LCAyNTI0NiwgCisgICAgMjUyNTIsIDI0MjIsIDI1MjU2LCAyNTI2MiwgMjUyNjYsIDI1MjY5LCAyNTI4MCwgMjUyODQsIDI1Mjg3LCAyNTI5NSwgCisgICAgMjUzMDEsIDI0MTQ1LCAyNTMwNSwgMjUzMTQsIDI1MzI1LCAyNTMzMSwgMjUzMzcsIDI1MzUyLCAyNTM2MSwgMjUzNjksIAorICAgIDI1Mzc2LCAyNTM4MSwgMjUzODUsIDI1MzkyLCAyNTM5OCwgMjU0MDcsIDI1NDE1LCAyNTQyMiwgMjU0MzIsIDI1NDQxLCAKKyAgICAyNTQ1MSwgMjU0NTYsIDI1NDY1LCAyNTQ3NCwgMjU0ODUsIDI1NDk2LCA0MjA2LCAyNTUwNiwgMjU1MTAsIDI1NTIwLCAKKyAgICAyNTUyOCwgMjU1MzgsIDI1NTQ5LCAyNTU1NCwgMjU1NjQsIDI1NTcyLCAyNTU3OSwgMjU1ODUsIDI1NTkyLCAyNTU5NywgCisgICAgMjQxNTUsIDI1NjAxLCAyNTYxMCwgMjU2MTQsIDI1NjE3LCAyNTYyMiwgMjU2MzAsIDI1NjM3LCAyNTY0NiwgMjU2NTQsIAorICAgIDI1NjYyLCAyNTY3MCwgMjU2ODAsIDI1Njg5LCAyNTY5NSwgMjU3MDEsIDI1NzA1LCAyNDE2MCwgMjQxNjUsIDI1NzA5LCAKKyAgICAyNTcxOSwgMjU3MjksIDI1NzM5LCAyNTc0NywgMjU3NTQsIDI1NzY0LCAyNTc3MiwgMjU3ODAsIDI1Nzg2LCAyNTc5NCwgCisgICAgODcyLCAyNTgwMywgMTYxODgsIDU1NywgMjU4MTcsIDI1ODI2LCAyNTgzNCwgMjU4NDUsIDI1ODU2LCAyNTg2NiwgMjU4NzUsIAorICAgIDI1ODg3LCAyNTg5NiwgMjU5MDUsIDI1OTEyLCAyNTkxOCwgMjU5MjgsIDI1OTM3LCAyNTk0NiwgMjU5NTQsIDI1OTY0LCAKKyAgICAyNTk3MiwgMjU5ODAsIDk5ODIsIDI1OTg2LCAyNTk4OSwgMjU5OTMsIDI1OTk4LCAyNjAwMywgMjYwMDcsIDEwNjg2LCAKKyAgICAyNDE3OCwgMjQxODMsIDI2MDE1LCAyNjAyMSwgMjYwMjcsIDI2MDMyLCAyNjAzNywgMjYwNDEsIDI2MDQ5LCAyNjA1NSwgCisgICAgMjYwNjEsIDI2MDY1LCAzNjc0LCAyNjA3MywgMjYwNzgsIDI2MDgzLCAyNjA4NywgMjYwOTEsIDEwNzk5LCAyNjA5OCwgCisgICAgMjYxMDYsIDI2MTIwLCAyNjEyNywgMjYxMzMsIDEwODA4LCAxMDgxNCwgMjYxNDEsIDI2MTQ5LCAyNjE1NiwgMjYxNjEsIAorICAgIDI2MTY2LCAyNDE4OCwgMjYxNzIsIDI2MTgzLCAyNjE4NywgMjYxOTIsIDI2MjksIDI2MTk3LCAyNjIwOCwgMjYyMTQsIAorICAgIDI2MjE5LCAyNjIyMywgMjYyMjcsIDI2MjMwLCAyNjIzNywgMjYyNDQsIDI2MjUwLCAyNjI1NywgMjYyNjMsIDI2MjY3LCAKKyAgICAyNDE5MywgMjYyNzIsIDI2Mjc2LCAyNjI4MCwgMTQxMiwgODU4NSwgMjYyODUsIDI2MjkwLCAyNjI5NSwgMjYzMDAsIAorICAgIDI2MzA1LCAyNjMxMCwgMjYzMTUsIDI2MzIwLCAyNjMyNSwgMjYzMzAsIDI2MzM1LCAyNjM0MCwgMjYzNDUsIDI2MzUwLCAKKyAgICAyNjM1NiwgMjYzNjEsIDI2MzY2LCAyNjM3MSwgMjYzNzYsIDI2MzgxLCAyNjM4NiwgMjYzOTIsIDI2Mzk3LCAyNjQwMiwgCisgICAgMjY0MDcsIDI2NDEyLCAyNjQxNywgMjY0MjIsIDI2NDI3LCAyNjQzMywgMjY0MzksIDI2NDQ0LCAyNjQ1MCwgMjY0NTUsIAorICAgIDI2NDYwLCA1LCAyNjQ2NiwgMjY0NzAsIDI2NDc0LCAyNjQ3OCwgMjY0ODMsIDI2NDg3LCAyNjQ5MSwgMjY0OTUsIDI2NDk5LCAKKyAgICAyNjUwNCwgMjY1MDgsIDI2NTEzLCAyNjUxNywgMjY1MjAsIDI2NTI0LCAyNjUyOSwgMjY1MzMsIDI2NTM4LCAyNjU0MiwgCisgICAgMjY1NDYsIDI2NTUwLCAyNjU1NSwgMjY1NTksIDI2NTYzLCAyNjU3MywgMjY1NzgsIDI2NTgyLCAyNjU4NiwgMjY1OTEsIAorICAgIDI2NTk2LCAyNjYwNSwgMjY2MTAsIDI2NjE1LCAyNjYxOSwgMjY2MjMsIDI2NjM2LCAyNjY0OCwgMjY2NTcsIDI2NjY2LCAKKyAgICAyNjY3MSwgMjY2NzcsIDI2NjgyLCAyNjY4NiwgMjY2OTAsIDI2NzAwLCAyNjcwOSwgMjY3MTcsIDI2NzIzLCAyNjcyOCwgCisgICAgMjY3MzIsIDI2NzM5LCAyNjc0OSwgMjY3NTgsIDI2NzY2LCAxMTg2OCwgMjY3NzQsIDI2NzgyLCAyNjc5MSwgMjY4MDAsIAorICAgIDI2ODA4LCAyNjgxOCwgMjY4MjMsIDI2ODI3LCAyNjgzMSwgMjY4MzQsIDI2ODM2LCAyNjg0MCwgMjY4NDQsIDI2ODQ5LCAKKyAgICAyNjg1NCwgMjY4NTgsIDI2ODYyLCAyNjg2NSwgMjY4NjksIDI2ODcyLCAyNjg3NiwgMjY4NzksIDI2ODgyLCAyNjg4NiwgCisgICAgMjY4OTIsIDI2ODk2LCAyNjkwMCwgMjY5MDQsIDI2OTA4LCAyNjkxMywgMjY5MTgsIDI2OTIzLCAyNjkyNywgMjY5MzAsIAorICAgIDI2OTM1LCAyNjk0MSwgMjY5NDYsIDI2OTUyLCAyNjk1NywgMjY5NjEsIDI2OTY3LCAyNjk3MSwgMjY5NzUsIDI2OTgwLCAKKyAgICAyNjk4NCwgMjY5ODksIDI2OTk0LCAyNjk5OCwgMjcwMDIsIDI3MDA5LCAyNzAxMywgMjcwMTYsIDI3MDIwLCAyNzAyNCwgCisgICAgMjcwMzAsIDI3MDM2LCAyNzA0MCwgMjcwNDQsIDI3MDQ5LCAyNzA1NiwgMjcwNjIsIDI3MDY2LCAyNzA3NSwgMjcwNzksIAorICAgIDI3MDgzLCAyNzA4NiwgMjcwOTIsIDI3MDk3LCAyNzEwMywgMTQ1NiwgMTc4NywgMjcxMDgsIDI3MTEzLCAyNzExOCwgCisgICAgMjcxMjMsIDI3MTI4LCAyNzEzMywgMjcxMzgsIDIxNTksIDIyMDUsIDI3MTQzLCAyNzE0NiwgMjcxNTAsIDI3MTU0LCAKKyAgICAyNzE1OSwgMjcxNjMsIDE2MjAwLCAyNzE2NywgMjcxNzIsIDI3MTc3LCAyNzE4MSwgMjcxODQsIDI3MTg5LCAyNzE5MywgCisgICAgMjcxOTgsIDI3MjAyLCAxNjIwNCwgMjcyMDcsIDI3MjEwLCAyNzIxMywgMjcyMTcsIDI3MjIyLCAyNzIyNiwgMjcyMzksIAorICAgIDI3MjQzLCAyNzI0NiwgMjcyNTQsIDI3MjYzLCAyNzI3MCwgMjcyNzUsIDI3MjgxLCAyNzI4NywgMjcyOTUsIDI3MzAyLCAKKyAgICAyNzMwOSwgMjczMTMsIDI3MzE3LCAyNzMyMSwgMjczMjYsIDI3MzMxLCAyNzMzNSwgMjczNDMsIDI3MzQ4LCAyNzM2MCwgCisgICAgMjczNzEsIDI3Mzc2LCAyNzM4MCwgMjczODcsIDI3MzkxLCAyNzM5NiwgMjc0MDIsIDI3NDA1LCAyNzQxMCwgMjc0MTUsIAorICAgIDI3NDE5LCAyNzQyMywgMjc0MjYsIDI3NDMyLCA4MjcyLCAyMzM1LCAyNzQzNiwgMjc0NDEsIDI3NDU3LCAxMDI4OCwgCisgICAgMjc0NzcsIDI3NDg2LCAyNzUwMiwgMjc1MDYsIDI3NTEzLCAyNzUxNiwgMjc1MjIsIDI3NTMyLCAyNzUzOCwgMjc1NDcsIAorICAgIDI3NTYyLCAyNzU3NCwgMjc1ODUsIDI3NTkzLCAyNzYwMiwgMjc2MDgsIDI3NjE3LCAyNzYyNywgMjc2MzcsIDI3NjQ4LCAKKyAgICAyNzY1OSwgMjc2NjksIDI3Njc4LCAyNzY4NSwgMjc2OTQsIDI3NzAyLCAyNzcwOSwgMjc3MTcsIDI3NzI0LCAyNzczMSwgCisgICAgMjc3NDQsIDI3NzUxLCAyNzc1OSwgMjc3NjYsIDI3NzcyLCAyNzc3NywgMjc3ODYsIDI3NzkzLCAyNzc5OSwgMjc4MDQsIAorICAgIDI3ODEyLCAyNzgxOSwgMjc4MjYsIDI1NTMwLCAyNzgzOCwgMjc4NTAsIDI3ODY0LCAyNzg3MiwgMjc4ODAsIDI3ODg3LCAKKyAgICAyNzg5OSwgMjc5MDgsIDI3OTE3LCAyNzkyNSwgMjc5MzMsIDI3OTQxLCAyNzk0OCwgMjc5NTQsIDI3OTYzLCAyNzk3MSwgCisgICAgMjc5ODEsIDI3OTkwLCAyODAwMCwgMjgwMDksIDI4MDE4LCAyODAyNiwgMjgwMzEsIDI4MDM1LCAyODAzOCwgMjgwNDIsIAorICAgIDI4MDQ2LCAyODA1MCwgMjgwNTQsIDI4MDU4LCAyODA2NCwgMjgwNzAsIDI4MDc1LCAyODA4MywgMTYyNjIsIDI4MDkwLCAKKyAgICAyODA5NSwgMjgxMDIsIDI4MTA4LCAyODExNSwgMTYyNzAsIDI4MTIyLCAyODEyNSwgMjgxMzcsIDI4MTQ1LCAyODE1MSwgCisgICAgMjgxNTYsIDI4MTYwLCAyODE3MSwgMTA3NDksIDI4MTgxLCAyODE4OSwgMjgxOTksIDI4MjA4LCAyODIxNSwgMjgyMjIsIAorICAgIDI4MjMwLCAyODIzNCwgMTYyODEsIDI4MjM3LCAyODI0NCwgMjgyNDgsIDI4MjU0LCAyODI1NywgMjgyNjQsIDI4MjcwLCAKKyAgICAyODI3NSwgMjgyODIsIDI4Mjg4LCAyODI5MiwgMjgyOTcsIDI4MzAxLCAyODMxMCwgMjgzMTcsIDI4MzIzLCA4MzMwLCAKKyAgICAyODMzMCwgMjgzMzgsIDI4MzQ1LCAyODM1MSwgMjgzNTYsIDI4MzYyLCAyODM2OCwgMjgzNzYsIDI4MzgyLCAyODM4NiwgCisgICAgMjgzODksIDI4MzkxLCAyODA0MywgMjg0MDAsIDI4NDA2LCAyODQxMiwgMjg0MjIsIDI4NDI3LCAyODQzNCwgMjg0NDAsIAorICAgIDI4NDQ1LCAyODQ1MCwgMjg0NTUsIDI4NDU5LCAyODQ2NCwgMjg0NzEsIDI4NDc3LCAyODQ4NiwgMjg0OTAsIDI4NDk3LCAKKyAgICAyODUwMywgMjg1MTIsIDQzOTgsIDI4NTE4LCAyODUyNCwgMjg1MjksIDI4NTM2LCAyODU0NywgMjg1NTIsIDI4NTU2LCAKKyAgICAyODU2NiwgMjg1NzIsIDI4NTc2LCAyODU4MSwgMjg1OTEsIDI4NjAwLCAyODYwNCwgMjg2MTEsIDI4NjE5LCAyODYyNiwgCisgICAgMjg2MzIsIDI4NjM3LCAyODY0NSwgMjg2NTIsIDI4NjU3LCAyODY2NCwgMjg2NzYsIDI4Njg1LCAyODY4OSwgMTQzMjIsIAorICAgIDI4Njk3LCAyODcwNywgMjg3MTEsIDI3MjUwLCAyODcyMiwgMjg3MjcsIDI4NzMxLCAyODczOCwgMjg3NDUsIDIzODc0LCAKKyAgICAyNzk2OCwgMjg3NTAsIDI4NzU0LCAyODc1NywgMjQ5MjksIDI4NzYyLCAyODc3NiwgMjg3OTIsIDI4ODEwLCAyODgyOSwgCisgICAgMjg4NDYsIDI4ODY0LCAyNDk0OCwgMjg4ODEsIDI4OTAxLCAyNDk2NSwgMjg5MTMsIDI4OTI1LCAxNzMxNCwgMjg5MzcsIAorICAgIDI0OTg1LCAyODk1MSwgMjg5NjMsIDExNTU5LCAyODk3NywgMjg5ODIsIDI4OTg3LCAyODk5MiwgMjg5OTgsIDI5MDA0LCAKKyAgICAyOTAxMCwgMjkwMTQsIDI5MDIyLCAyOTAyOSwgMjkwMzQsIDI5MDQ0LCAyOTA1MCwgMTExNTcsIDI5MDU2LCAyOTA1OCwgCisgICAgMjkwNjMsIDI5MDcxLCAyOTA3NSwgMjg0NjcsIDI5MDgxLCAyOTA4OCwgMTI3MTEsIDEyNzIxLCAyOTA5NSwgMjkxMDUsIAorICAgIDI5MTEwLCAyOTExNCwgMjkxMTcsIDI5MTIzLCAyOTEzMSwgMjkxNDMsIDI5MTUzLCAyOTE2OSwgMjkxODIsIDI5MTk2LCAKKyAgICAxNzMzMiwgMjkyMTAsIDI5MjE3LCAyOTIyMSwgMjkyMjQsIDI5MjI5LCAyOTIzMywgMjkyNDAsIDI5MjQ3LCAyOTI1NCwgCisgICAgMjkyNjQsIDI5MjY5LCAyOTI3NCwgMjkyNzksIDI5Mjg3LCAyOTI5NSwgMjkzMDAsIDI5MzA5LCAyOTMxNCwgMzM0MiwgCisgICAgMjkzMTgsIDI5MzIxLCAyOTMyNCwgMjkzMjksIDI5MzM2LCAyOTM0MSwgMjkzNTcsIDI5MzY1LCAyOTM3MywgMTAwNTYsIAorICAgIDI5MzgxLCAyOTM4NiwgMjkzOTAsIDI5Mzk2LCAyOTQwMSwgMjk0MDcsIDI5NDEwLCAyOTQxNiwgMjk0MjgsIDI5NDM2LCAKKyAgICAyOTQ0MywgMjk0NDksIDI5NDU2LCAyOTQ2NywgMjk0ODEsIDI5NDk0LCAyOTUwMCwgMjk1MDksIDI5NTE1LCAyOTUyNCwgCisgICAgMjk1MzYsIDI5NTQ3LCAyOTU1NywgMjk1NjYsIDI5NTc1LCAyOTU4MywgMjk1OTQsIDgzMTIsIDI5NjAxLCAyOTYwOCwgCisgICAgMjk2MTQsIDI5NjE5LCAyOTYyNSwgMjk2MzIsIDI5NjQzLCAyOTY1MywgMjk2NjMsIDI5NjcyLCAyOTY3OCwgMjk2ODUsIAorICAgIDI5NjkwLCAyOTY5OCwgMjk3MDUsIDI5NzEzLCAyOTcyMSwgMjk3MzMsIDY1ODcsIDEwMjgsIDI5NzQwLCAyOTc0OSwgCisgICAgMjk3NTcsIDI5NzYzLCAyOTc2OSwgMjk3NzQsIDI5Nzc4LCAyOTc4MSwgMjk3ODcsIDI5Nzk0LCAyOTc5OSwgMjk4MDQsIAorICAgIDI5ODA5LCAyOTgxMywgMjk4MjUsIDI5ODM2LCAyOTg0NSwgMjk4NTMsIDE2NDQ2LCAyOTg1OCwgMjk4NjYsIDI5ODcxLCAKKyAgICAyOTg3NywgMjk4ODMsIDEyNzA0LCA5MTAzLCAyOTg4OCwgMjk4OTIsIDI5ODk2LCAyOTg5OSwgMjk5MDIsIDI5OTA4LCAKKyAgICAyOTkxNiwgMjk5MjQsIDI5OTI4LCAyOTkzMiwgMjk5MzcsIDI5OTQwLCAyOTk0OSwgMjk5NTMsIDI5OTU2LCAyOTk2NCwgCisgICAgMjk5NzUsIDI5OTc5LCAyOTk4NSwgMjk5OTEsIDI5OTk1LCAzMDAwMSwgMzAwMDksIDMwMDMxLCAzMDA1NSwgMzAwNjQsIAorICAgIDMwMDcxLCAzMDA3OCwgMzAwODQsIDMwMDkyLCAzMDA5OCwgMzAxMDMsIDMwMTE0LCAzMDEzMiwgMzAxMzksIDMwMTQ3LCAKKyAgICAzMDE1MSwgMzAxNTYsIDMwMTY1LCAzMDE3OCwgMzAxODYsIDMwMTk4LCAzMDIwOSwgMzAyMjAsIDMwMjMwLCAzMDI0NCwgCisgICAgMzAyNTMsIDMwMjYxLCAzMDI3MywgMTAzMDUsIDMwMjg0LCAzMDI5NSwgMzAzMDcsIDMwMzE3LCAzMDMyNiwgMzAzMzEsIAorICAgIDMwMzM1LCAzMDM0MywgMzAzNTQsIDMwMzY0LCAzMDM2OSwgMzAzNzMsIDMwMzc2LCAzMDM3OSwgMzAzODcsIDMwMzk1LCAKKyAgICAzMDQwNCwgMzA0MTQsIDMwNDIzLCAzMDQyOSwgMzA0NDMsIDI2OTEsIDMwNDY1LCAzMDQ3NiwgMzA0ODUsIDMwNDk1LCAKKyAgICAzMDUwNywgMzA1MTYsIDMwNTI1LCAzMDUzNSwgMzA1NDMsIDMwNTUxLCAzMDU2MCwgMzA1NjUsIDMwNTc2LCAzMDU4MSwgCisgICAgMzA1OTAsIDMwNjAxLCAzMDYwNSwgMzA2MDgsIDMwNjE4LCAzMDYyNywgMzA2MzUsIDMwNjQ1LCAzMDY1NSwgMzA2NjMsIAorICAgIDMwNjcyLCAzMDY3OSwgMzA2ODcsIDMwNjk0LCAzMDcwMywgMzA3MTIsIDMwNzE3LCAzMDcyMSwgMzA3MjksIDMwNzM2LCAKKyAgICAzMDc0NCwgMzA3NTEsIDMwNzYyLCAzMDc3NywgMzA3ODQsIDMwNzkwLCAzMDgwMCwgMzA4MDksIDMwODE1LCAzMDgyNiwgCisgICAgMzA4MzAsIDMwODM3LCAzMDg0MSwgMzA4NDcsIDE1MzgyLCAzMDg1MywgMzA4NTcsIDMwODYyLCAzMDg2OCwgMzA4NzUsIAorICAgIDMwODc5LCAzMDg4MywgMzA4OTEsIDMwODk5LCAzMDkwNSwgMzA5MTQsIDMwOTIxLCAzMDkyNiwgMzA5MzEsIDMwOTQxLCAKKyAgICAyNTU5OSwgMzA5NDUsIDMwOTQ4LCAzMDk1MywgMzA5NTgsIDMwOTYzLCAzMDk2OCwgMzA5NzMsIDMwOTc4LCAzMDk4MywgCisgICAgMzA5ODgsIDMwOTk0LCAzMDk5OSwgMzEwMDQsIDMxMDEwLCAxMTgwLCA2NzYsIDMxMDE1LCAzMTAyNCwgMjM4MywgMzEwMzEsIAorICAgIDMxMDM2LCAzMTA0MCwgMzEwNDYsIDEyMjksIDU5MSwgMzEwNTEsIDI5NiwgMzEwNTUsIDMxMDY0LCAzMTA3MiwgMzEwODEsIAorICAgIDMxMDg5LCAzMTEwMCwgMzExMDgsIDMxMTE3LCAzMTEyNSwgMzExMzAsIDEwODk1LCAzMTEzNCwgMzExNDIsIDMxMTUwLCAKKyAgICAzMTE1NSwgMTYyMTcsIDM4MjMsIDMxMTYxLCAzMTE2NywgMzExNzMsIDYxNjgsIDMxMTc4LCAzMTE4MiwgMzExODgsIAorICAgIDMxMTkyLCAzMTE5OCwgMzEyMDMsIDMxMjEwLCAxNDIyLCAzMTIxNiwgMzEyMjMsIDMxMjI3LCAxMzI5LCA2MTc2LCAzMTIzMiwgCisgICAgMzEyNDIsIDMxMjUwLCAzMTI1NiwgMzEyNjYsIDMxMjc1LCAzMTI4MywgMzEyODksIDMxMjk0LCAzMTMwMiwgMzEzMDksIAorICAgIDEyMjQ2LCAzMTMxNSwgMzEzMjIsIDMxMzI3LCAzMTMzNCwgMTQ3NSwgMjI1LCAyMTU4LCAzMTM0MCwgMzEzNDYsIDMxMzUzLCAKKyAgICAzMTM2NCwgMzEzNzUsIDMxMzgzLCAzMTM5MCwgMzE0MDAsIDMxNDA5LCAzMTQxNywgMzE0MjYsIDMxNDMzLCAzMTQ0MCwgCisgICAgMzE0NTMsIDMxNDYwLCAzMTQ2NiwgMzE0NzcsIDMxNDk2LCAxMjM0LCAzMTUwMSwgMzE1MDYsIDMxNTE0LCAzNzQxLCAKKyAgICAzMTUxOCwgMzE1MjMsIDMxNTI3LCAzMTUzMSwgMTQyNiwgMjY4NjMsIDMxNTQxLCAzMTU0NSwgMzE1NTAsIDMxNTU0LCAKKyAgICAzNjA4LCAzMTU2MCwgMzE1NjgsIDMxNTc1LCAzMTU4NiwgMzE1OTQsIDMxNjE5LCAzMTYyNywgMzE2MzIsIDM3NDIsIDM1MiwgCisgICAgMzE2MzgsIDMxNjQ2LCAzMTY1NCwgMzE2NjEsIDMxNjY3LCAzMTY3MiwgMjIyNywgMTE3MjYsIDMxNjc5LCAzMTY4NSwgCisgICAgMjgyOTMsIDI4NTQyLCAzMTY5MSwgNTg3LCAxMDYsIDMxNjk1LCAzMTY5OSwgMzE3MDUsIDY4OSwgOTkzMSwgMzE3MTAsIAorICAgIDMxNzE3LCAzMTcyMywgMzE3MjcsIDMxNzMxLCAxNjIwLCAzMTczNCwgMzE3MzgsIDE2Njk5LCAzMTc0MSwgMzE3NDYsIAorICAgIDMxNzUzLCAzMTc1OSwgMzE3NjQsIDMxNzcyLCAzMTc3OSwgMzE3ODUsIDI0MzQxLCAzMTc4OSwgMzE3OTMsIDMxNzk3LCAKKyAgICAzODEyLCAxODM0NCwgMzE4MDEsIDMxODA2LCAzMTgxMCwgMzE4MTMsIDMxODIxLCAzMTgyOSwgMzE4MzQsIDMxODQzLCAKKyAgICAzMTg1MSwgMzE4NTQsIDMxODYxLCAzMTg3MSwgMzE4ODMsIDMxODg4LCAzMTg5MiwgMzE5MDAsIDMxOTA3LCAzMTkxMywgCisgICAgMzE5MjAsIDMxOTI3LCAzMTkzMCwgMzE5MzQsIDMxOTM4LCAxNDMwLCAzMTk0OCwgMzE5NTAsIDMxOTU1LCAzMTk2MSwgCisgICAgMzE5NjcsIDMxOTcyLCAzMTk3NywgMzE5ODIsIDMxOTg3LCAzMTk5MiwgMzE5OTcsIDMyMDAyLCAzMjAwNywgMzIwMTIsIAorICAgIDMyMDE3LCAzMjAyMiwgMzIwMjcsIDMyMDMyLCAzMjAzNywgMzIwNDMsIDMyMDQ5LCAzMjA1NSwgMzIwNjEsIDMyMDY2LCAKKyAgICAzMjA3MSwgMzIwNzYsIDMyMDgyLCAzMjA4NywgMzIwOTIsIDMyMDk3LCAzMjEwMywgMzIxMDgsIDMyMTE0LCAzMjExOSwgCisgICAgMzIxMjQsIDMyMTI5LCAzMjEzNCwgMzIxNDAsIDMyMTQ1LCAzMjE1MSwgMzIxNTYsIDMyMTYxLCAzMjE2NiwgMzIxNzEsIAorICAgIDMyMTc3LCAzMjE4MiwgMzIxODgsIDMyMTkzLCAzMjE5OCwgMzIyMDMsIDMyMjA4LCAzMjIxMywgMzIyMTgsIDMyMjIzLCAKKyAgICAzMjIyOCwgMzIyMzMsIDMyMjM5LCAzMjI0NSwgMzIyNTEsIDMyMjU2LCAzMjI2MSwgMzIyNjYsIDMyMjcxLCAzMjI3NywgCisgICAgMzIyODMsIDMyMjg5LCAzMjI5NSwgMzIzMDEsIDMyMzA3LCAzMjMxMiwgMzIzMTgsIDMyMzIzLCAzMjMyOCwgMzIzMzMsIAorICAgIDMyMzM4LCAzMjM0NCwgMjQ2NywgMzIzNDksIDI0NzQsIDI0ODEsIDI3ODIsIDMyMzU0LCAyNDg3LCAyNDk3LCAzMjM2MCwgCisgICAgMzIzNjQsIDMyMzY5LCAzMjM3NCwgMzIzODAsIDMyMzg1LCAzMjM5MCwgMzIzOTQsIDMyMzk5LCAzMjQwNSwgMzI0MTAsIAorICAgIDMyNDE1LCAzMjQyMCwgMzI0MjYsIDMyNDMxLCAzMjQzNSwgMzI0MzksIDMyNDQ0LCAzMjQ0OSwgMzI0NTQsIDMyNDU5LCAKKyAgICAzMjQ2NCwgMzI0NzAsIDMyNDc2LCAzMjQ4MSwgMzI0ODUsIDMyNDkwLCAzMjQ5NiwgMzI1MDAsIDMyNTA1LCAzMjUxMCwgCisgICAgMzI1MTUsIDMyNTIwLCAzMjUyNCwgMzI1MjcsIDMyNTMyLCAzMjUzNywgMzI1NDIsIDMyNTQ3LCAzMjU1MiwgMzI1NTgsIAorICAgIDMyNTY0LCAzMjU2OSwgMzI1NzQsIDMyNTc5LCAzMjU4MywgMzI1ODgsIDMyNTkzLCAzMjU5OCwgMzI2MDMsIDMyNjA4LCAKKyAgICAzMjYxMywgMzI2MTcsIDMyNjIyLCAzMjYyNywgMzI2MzIsIDMyNjM2LCAzMjY0MCwgMzI2NDQsIDMyNjQ5LCAzMjY1NywgCisgICAgMzI2NjIsIDMyNjY3LCAzMjY3MywgMzI2NzksIDMyNjg1LCAzMjY5MCwgMzI2OTQsIDMyNjk3LCAzMjcwMiwgMzI3MDcsIAorICAgIDMyNzExLCAzMjcxNiwgMzI3MjEsIDMyNzI1LCAzMjczMCwgMzI3MzQsIDMyNzM3LCAzMjc0MiwgMzkxOSwgMTkwODMsIAorICAgIDMyNzQ3LCAzMjc1MiwgMzI3NTcsIDMyNzY1LCAyMzE1MSwgMzEyMjAsIDk2MDEsIDMyNzcwLCAzMjc3NSwgMzI3NzksIAorICAgIDMyNzg0LCAzMjc4OCwgMzI3OTIsIDMyNzk3LCAzMjgwMSwgMzI4MDQsIDMyODA3LCAzMjgxMSwgMzI4MTYsIDMyODIwLCAKKyAgICAzMjgyOCwgMzI4MzIsIDMyODM1LCAzMjg0MCwgMzI4NDQsIDMyODQ4LCAzMjg1MywgMzI4NTgsIDMyODYyLCAzMjg2OCwgCisgICAgMzI4NzMsIDMyODc4LCAzMjg4NSwgMzI4OTIsIDMyODk2LCAzMjg5OSwgMzI5MDUsIDMyOTE0LCAzMjkyMSwgMzI5MjksIAorICAgIDMyOTM2LCAzMjk0MCwgMzI5NDUsIDMyOTQ5LCAzMjk1MywgMzI5NTksIDMyOTY1LCAzMjk2OSwgMzI5NzUsIDMyOTgwLCAKKyAgICAzMjk4NSwgMzI5ODksIDMyOTk2LCAzMzAwMiwgMzMwMDgsIDMzMDE0LCAzMzAyMCwgMzMwMjcsIDMzMDMzLCAzMzAzOSwgCisgICAgMzMwNDUsIDMzMDUxLCAzMzA1NywgMzMwNjMsIDMzMDY5LCAzMzA3NiwgMzMwODIsIDMzMDg5LCAzMzA5NSwgMzMxMDEsIAorICAgIDMzMTA3LCAzMzExMywgMzMxMTksIDMzMTI1LCAzMzEzMSwgMzMxMzcsIDMzMTQzLCAxMjU4OSwgMzMxNDksIDMzMTU1LCAKKyAgICAzMzE2MCwgMzMxNjUsIDMzMTcwLCAzMzE3MywgMzMxNzksIDMzMTg3LCAzMzE5MiwgMzMxOTYsIDMzMjAxLCAzMzIwNywgCisgICAgMzMyMTYsIDMzMjIyLCAzMzIyNywgMzMyMzIsIDMzMjM3LCAzMzI0MSwgMzMyNDYsIDMzMjUxLCAzMzI1NiwgMzMyNjEsIAorICAgIDMzMjY2LCAzMzI3MywgMzMyODAsIDMzMjg2LCAzMzI5MiwgMzMyOTcsIDE3OTgwLCAzMzMwNCwgMzMzMTAsIDMzMzE3LCAKKyAgICAzMzMyMywgMzMzMjksIDMzMzM0LCAzMzM0MiwgMzMzNDcsIDEwNDcwLCAzMzM1MSwgMzMzNTYsIDMzMzYxLCAzMzM2NywgCisgICAgMzMzNzIsIDMzMzc3LCAzMzM4MSwgMzMzODYsIDMzMzkxLCAzMzM5NywgMzM0MDIsIDMzNDA3LCAzMzQxMiwgMzM0MTYsIAorICAgIDMzNDIxLCAzMzQyNiwgMzM0MzAsIDMzNDM1LCAzMzQ0MCwgMzM0NDQsIDMzNDQ5LCAzMzQ1MywgMzM0NTgsIDMzNDYzLCAKKyAgICAzMzQ2OCwgMzM0NzIsIDMzNDc3LCAzMzQ4MSwgMzM0ODUsIDE2ODA1LCAzMzQ5MCwgMzM0OTksIDMzNTA1LCAzMzUxMSwgCisgICAgMzM1MjAsIDMzNTI4LCAzMzUzNywgMzM1NDUsIDMzNTUwLCAzMzU1NCwgMzM1NjEsIDMzNTY3LCAzMzU3NSwgMzM1NzksIAorICAgIDMzNTgyLCAzMzU4NywgMzM1OTEsIDMzNjAwLCAzMzYwOCwgMzM2MjYsIDMzNjMyLCAxNDc0LCAzMzYzOCwgMzM2NDEsIAorICAgIDMzNjQ1LCAyNDQ0NywgMjQ0NTMsIDMzNjUxLCAzMzY1NSwgMzM2NjYsIDMzNjc3LCAzMzY4OCwgMzM3MDAsIDMzNzA0LCAKKyAgICAzMzcxMSwgMzM3MTgsIDMzNzI1LCAzMzczMCwgMzM3MzQsIDYyMjQsIDk2MywgMjMxNTAsIDMzNzQyLCAzMzc0NywgMzM3NTEsIAorICAgIDMzNzU2LCAzMzc2MCwgMzM3NjYsIDMzNzcxLCAzMzc3NywgMzM3ODIsIDMzNzg4LCAzMzc5MywgMzM3OTksIDMzODA0LCAKKyAgICAzMzgxMCwgMzM4MTYsIDMzODIyLCAzMzgyNywgMzM3ODMsIDMzNzg5LCAzMzgzMSwgMzM4MzYsIDMzODQyLCAzMzg0NywgCisgICAgMzM4NTMsIDMzODU4LCAzMzg2NCwgMzM4NjksIDMzNzk0LCAxMTQxMiwgMzM4NzMsIDMzODA1LCAzMzgxMSwgMzM4MTcsIAorICAgIDI4NzQsIDM1MjIsIDMzODc5LCAzMzg4MiwgMzM4ODcsIDMzODkzLCAzMzg5OSwgMzM5MDUsIDMzOTEyLCAzMzkxOCwgCisgICAgMzM5MjQsIDMzOTMwLCAzMzkzNiwgMzM5NDIsIDMzOTQ4LCAzMzk1NCwgMzM5NjAsIDMzOTY2LCAzMzk3MiwgMzM5NzgsIAorICAgIDMzOTg0LCAzMzk5MSwgMzM5OTcsIDM0MDAzLCAzNDAwOSwgMzQwMTUsIDM0MDIxLCAzNDAyNCwgMzQwMjksIDM0MDMyLCAKKyAgICAzNDAzOSwgMzQwNDQsIDM0MDUyLCAzNDA1NywgMzQwNjIsIDM0MDY4LCAzNDA3MywgMzQwNzgsIDM0MDgyLCAzNDA4NywgCisgICAgMzQwOTMsIDM0MDk4LCAzNDEwNCwgMzQxMDksIDM0MTE1LCAzNDEyMCwgMzQxMjYsIDM0MTMyLCAzNDEzNiwgMzQxNDEsIAorICAgIDM0MTQ2LCAzNDE1MSwgMzQxNTYsIDM0MTYwLCAzNDE2NSwgMzQxNzAsIDM0MTc1LCAzNDE4MSwgMzQxODcsIDM0MTkzLCAKKyAgICAzNDE5OSwgMzQyMDQsIDM0MjA4LCAzNDIxMSwgMzQyMTcsIDM0MjIzLCAzNDIzMiwgMzQyNDAsIDM0MjQ3LCAzNDI1MiwgCisgICAgMzQyNTYsIDM0MjYwLCAzNDI2NSwgMTY2NTMsIDM0MjcwLCAzNDI3OCwgMzQyODQsIDM4NjUsIDEzMzksIDM0Mjg5LCAKKyAgICAzNDI5MywgODM4MywgMzQyOTksIDM0MzA1LCAzNDMxMiwgODM5MiwgMzQzMTYsIDM0MzIyLCAzNDMyOSwgMzQzMzUsIAorICAgIDM0MzQ0LCAzNDM1MiwgOTI5OSwgMzQzNjQsIDM0MzY4LCAzNDM3NSwgMzQzODEsIDM0Mzg2LCAzNDM5MCwgMzQzOTQsIAorICAgIDM0Mzk3LCAzNDQwNywgMzQ0MTYsIDM0NDI0LCAzMzc4NCwgMzQ0MjksIDM0NDM5LCAzNDQ0OSwgMzQ0NTksIDM0NDY1LCAKKyAgICAzNDQ3MCwgMzQ0ODAsIDM0NDg1LCAzNDQ5OCwgMzQ1MTIsIDM0NTIzLCAzNDUzNSwgMzQ1NDcsIDM0NTYxLCAzNDU3NCwgCisgICAgMzQ1ODYsIDM0NTk4LCAxNjAxNiwgMzQ2MTIsIDM0NjE3LCAzNDYyMiwgMzQ2MjYsIDM0NjMwLCAzNDYzNCwgMTc3NiwgCisgICAgMjk1NDUsIDM0NjM4LCAzNDY0MywgMzM4MzIsIDM0NjQ4LCAzNDY1MSwgMzQ2NTYsIDM0NjYxLCAzNDY2NiwgMzQ2NzIsIAorICAgIDM0Njc4LCAxMTA3MiwgMzQ2ODMsIDM0Njg5LCAzNDY5NiwgMTcyNjYsIDM0NzAyLCAzNDcwNywgMzQ3MTIsIDM0NzE2LCAKKyAgICAzNDcyMSwgMzQ3MjYsIDMzODM3LCAzNDczMSwgMzQ3MzYsIDM0NzQxLCAzNDc0NywgMzM4NDMsIDM0NzUyLCAzNDc1NSwgCisgICAgMzQ3NjIsIDM0NzcwLCAzNDc3NiwgMzQ3ODIsIDM0Nzg4LCAzNDc5OSwgMzQ4MDQsIDM0ODExLCAzNDgxOCwgMzQ4MjUsIAorICAgIDM0ODMzLCAzNDg0MiwgMzQ4NTEsIDM0ODU3LCAzNDg2MywgMzQ4NzEsIDMzODQ4LCAzNDg3NiwgMzQ4ODIsIDM0ODg4LCAKKyAgICAzMzg1NCwgMzQ4OTMsIDM0ODk4LCAzNDkwNiwgMzQ5MTQsIDM0OTIwLCAzNDkyNywgMzQ5MzMsIDM0OTQwLCAzNDk0NywgCisgICAgMzQ5NTMsIDM0OTYxLCAzNDk3MSwgMzQ5NzgsIDM0OTg0LCAzNDk4OSwgMzQ5OTUsIDM1MDAwLCAzNTAwNSwgMzUwMTIsIAorICAgIDM1MDIxLCAzNTAyOSwgMzUwMzQsIDM1MDQwLCAzNTA0NywgMzUwNTUsIDM1MDYxLCAzNTA2NiwgMzUwNzIsIDM1MDgxLCAKKyAgICAzNTA4OCwgMzA0MDksIDM1MDk0LCAzNTA5OCwgMzUxMDMsIDM1MTEyLCAzNTExNywgMzUxMjIsIDM1MTI3LCAxMzY1OCwgCisgICAgMzUxMzUsIDM1MTQwLCAzNTE0NSwgMzUxNTAsIDM1MTU0LCAzNTE1OSwgMzUxNjQsIDM1MTcxLCAzNTE3NiwgMzUxODEsIAorICAgIDM1MTg2LCAzMzg1OSwgMjMwODcsIDM1MTkyLCAyNTQzLCAxNTUsIDM1MTk1LCAzNTE5OCwgMzUyMDIsIDM1MjA2LCAzNTIxNiwgCisgICAgMzUyMjQsIDM1MjMxLCAzNTIzNSwgMzUyMzgsIDM1MjQ2LCAzNTI1MywgMzUyNjAsIDM1MjY5LCAzNTI3MywgMzUyNzYsIAorICAgIDM1MjgyLCAzNTI4NiwgMzUyOTQsIDM1MzAyLCAzNTMwNiwgMzUzMTAsIDM1MzEzLCAzNTMxOSwgMzUzMjYsIDM1MzMwLCAKKyAgICAzNTMzNCwgMzUzNDEsIDM1MzQ5LCAzMzc5NSwgMzUzNTYsIDM1MzY0LCAzNTM2OSwgMTExMzIsIDYwMCwgMzc1LCAzNTM4MSwgCisgICAgMzUzODYsIDM1MzkxLCAzNTM5NywgMzU0MDIsIDM1NDA3LCAzODg2LCAzNTQxMiwgMzU0MTUsIDM1NDIwLCAzNTQyNSwgCisgICAgMzU0MzAsIDM1NDM1LCAzNTQ0MCwgMzU0NDcsIDI0NTY1LCAzNTQ1MiwgMzU0NTcsIDM1NDYyLCAzNTQ2NywgMzU0NzIsIAorICAgIDM1NDc4LCAzNTQ4MywgMzU0ODksIDM0MDM1LCAzNTQ5NSwgMzU1MDAsIDM1NTA2LCAzNTUxMiwgMzU1MjIsIDM1NTI3LCAKKyAgICAzNTUzMiwgMzU1MzYsIDM1NTQxLCAzNTU0NiwgMzU1NTEsIDM1NTU2LCAzNTU2OSwgMzU1NzQsIDI0MjI4LCAxODQxOSwgCisgICAgMzg5OSwgMzU1NzgsIDM1NTg0LCAzNTU4OSwgMzU1OTQsIDM1NjAwLCAzNTYwNSwgMzU2MTAsIDM1NjE0LCAzNTYxOSwgCisgICAgMzU2MjQsIDM1NjMwLCAzNTYzNSwgMzU2NDAsIDEzNDQsIDM1NjQ0LCAzNTY0OSwgMzU2NTQsIDM1NjU5LCAzNTY2MywgCisgICAgMzU2NjgsIDM1NjczLCAzNTY3OCwgMzU2ODQsIDM1NjkwLCAzNTY5NSwgMzU2OTksIDM1NzAzLCAzNTcwOCwgMzU3MTMsIAorICAgIDM1NzE4LCAzNTcyMiwgMzU3MzAsIDM1NzM0LCAzNTc0MCwgMzU3NDQsIDM1NzUxLCAzNTc2MCwgMTgyMDMsIDMzODA2LCAKKyAgICAzNTc2NiwgMzU3NzMsIDM1NzgxLCAzNTc4OCwgMzU3OTQsIDM1ODA3LCAzNTgxOSwgMzU4MjQsIDM1ODMwLCAzNTgzNCwgCisgICAgMjgwMSwgMzU4MzgsIDM1ODQyLCAzNTMyMSwgMzU4NTEsIDM1ODYyLCAzNTg2NywgMzA0NzIsIDM1ODcyLCAzNTg3NywgCisgICAgMzU4ODEsIDM1ODg2LCAyNDQ1OCwgMzU4OTAsIDM1ODk0LCAzNTg5OSwgMzM4MTIsIDIzMTc3LCAzNTkwMywgMzU5MDgsIAorICAgIDM1OTE0LCAzNTkxOSwgMzU5MjMsIDM1OTI3LCAzNTkzMCwgMzU5MzQsIDM1OTQwLCAzNTk0OSwgMzU5NjAsIDM1OTcyLCAKKyAgICAzMzgxOCwgMzU5NzcsIDM1OTgwLCAzNTk4NCwgMzU5ODgsIDQxNCwgMzU5OTMsIDM1OTk4LCAzNjAwMywgMzYwMDgsIAorICAgIDM2MDEzLCAzNjAxOCwgMzYwMjQsIDM2MDI5LCAzNjAzNCwgMzYwNDAsIDM2MDQ1LCAzNjA1MSwgMzYwNTYsIDM2MDYyLCAKKyAgICAzNjA2NywgMzYwNzIsIDM2MDc3LCAzNjA4MiwgMzYwODcsIDM2MDkyLCAzNjA5NywgMzYxMDIsIDM2MTA4LCAzNjExMywgCisgICAgMzYxMTgsIDM2MTIzLCAzNjEyOCwgMzYxMzMsIDM2MTM4LCAzNjE0MywgMzYxNDksIDM2MTU1LCAzNjE2MCwgMzYxNjUsIAorICAgIDM2MTcwLCAzNjE3NSwgMzYxODAsIDM2MTg1LCAzNjE5MCwgMzYxOTUsIDM2MjAwLCAzNjIwNSwgMzYyMTAsIDM2MjE1LCAKKyAgICAzNjIyMCwgMzYyMjUsIDM2MjMwLCAzNjIzNSwgMzYyNDAsIDM2MjQ1LCAzNjI1MSwgMzI2LCA5LCAzNjI1NiwgMzYyNjAsIAorICAgIDM2MjY0LCAzNjI3MiwgMzYyNzYsIDM2MjgwLCAzNjI4MywgMzYyODYsIDM2Mjg4LCAzNjI5MywgMzYyOTcsIDM2MzAyLCAKKyAgICAzNjMwNiwgMzYzMTEsIDM2MzE1LCAzNjMyMCwgMzYzMjQsIDM2MzI3LCAzNjMyOSwgMzYzMzMsIDM2MzM4LCAzNjM0MiwgCisgICAgMzYzNTMsIDM2MzU2LCAzNjM1OCwgMzYzNjIsIDM2Mzc0LCAzNjM4MywgMzYzODcsIDM2MzkxLCAzNjM5NywgMzY0MDIsIAorICAgIDM2NDExLCAzNjQxNywgMzY0MjIsIDM2NDI3LCAzNjQzMSwgMzY0MzUsIDM2NDQwLCAzNjQ0NywgMzY0NTIsIDM2NDU4LCAKKyAgICAzNjQ2MywgMzY0NjcsIDM2NDc0LCAyNzk3NiwgMjc5ODYsIDM2NDc4LCAzNjQ4MywgMzY0ODgsIDM2NDkzLCAzNjUwMCwgCisgICAgMzY1MDQsIDM2NTExLCAzNjUxNywgODUzMiwgMzY1MjEsIDM2NTMwLCAzNjUzOCwgMzY1NTMsIDM2NTY3LCAzNjU3NiwgCisgICAgMzY1ODQsIDM2NTk1LCAzNjYwNCwgMzY2MDksIDM2NjE2LCA3NTgwLCAzNjYyNiwgMzY2MzEsIDM2NjM2LCAzNjY0MCwgCisgICAgMzY2NDMsIDM2NjQ4LCAzNjY1MiwgMzY2NTcsIDM2NjYxLCAzNjY2OCwgMzY2NzMsIDM2Njc4LCAzNjY4MywgOTQ3NCwgCisgICAgMzY2OTMsIDM2Njk1LCAzNjY5OCwgMzY3MDEsIDM2NzA1LCAzNjcxMSwgMzY3MTUsIDM2NzIwLCAzNjcyNSwgMzY3NDMsIAorICAgIDM2NzU3LCAzNjc3NiwgMzY3OTMsIDM2ODAyLCAzNjgxMCwgMzY4MTUsIDM2ODIwLCAxNDY3LCAzNjgyNiwgMzY4MzIsIAorICAgIDM2ODM3LCAzNjg0NywgMzY4NTYsIDM2ODY0LCAzNjg2OSwgMzY4NzUsIDM2ODgwLCAzNjg4OSwgMzY5MDAsIDM2OTA1LCAKKyAgICAzNjkxMiwgMzY5MTgsIDM2OTIyLCAzNjkyOSwgMzY5MzcsIDM2OTQ0LCAzNjk1NywgMzY5NjUsIDM2OTY5LCAzNjk3OSwgCisgICAgMzY5ODQsIDM2OTg4LCAzNjk5NiwgMzcwMDQsIDM3MDA5LCAzNzAxMywgMzcwMTcsIDM3MDI2LCAzNzAzMiwgMzcwMzcsIAorICAgIDM3MDQ1LCAzNzA1NSwgMzcwNjQsIDM3MDczLCAzNzA4MiwgMzcwOTMsIDM3MTAxLCAzNzExMiwgMzcxMjEsIDM3MTI4LCAKKyAgICAzNzEzNCwgMzcxMzksIDM3MTUwLCAzNzE2MSwgMzcxNjYsIDM3MTcwLCAzNzE3MywgMzcxNzcsIDM3MTg1LCAzNzE5MSwgCisgICAgMzcyMDIsIDM3MjEzLCAzNzIyNCwgMzcyMzUsIDM3MjQ2LCAzNzI1NywgMzcyNjgsIDM3Mjc5LCAzNzI5MSwgMzczMDMsIAorICAgIDM3MzE1LCAzNzMyNywgMzczMzksIDM3MzUxLCAzNzM2MywgMzczNzIsIDM3Mzc2LCAzNzM4NCwgMzczOTAsIDM3Mzk2LCAKKyAgICAzNzQwMywgMzc0MDksIDM3NDE0LCAzNzQyMCwgMjQ0MiwgMzc0MjQsIDM3NDI2LCAzNzQzMSwgMzc0MzYsIDM3NDQxLCAKKyAgICAzNzQ0NCwgMzc0NDYsIDM3NDUwLCAzNzQ1MywgMzc0NjAsIDM3NDY0LCAxMDc2MiwgMzc0NjgsIDM3NDc0LCAzNzQ4NCwgCisgICAgMzc0ODksIDM3NDk1LCAzNzQ5OSwgMzc1MDQsIDM3NTE3LCAyODQxNywgMzc1MjMsIDM3NTMyLCAzNzU0MSwgMTkyODEsIAorICAgIDM3NTQ4LCAzNzU1NywgMzQ0NDUsIDM3NTY1LCAzNzU3MCwgMzc1NzQsIDM3NTgzLCAzNzU5MSwgMzc1OTgsIDM3NjAzLCAKKyAgICAzNzYwNywgMzc2MTIsIDM3NjE3LCAzNzYyNSwgMzc2MjksIDM3NjM3LCAzNzY0MywgMzc2NDksIDM3NjU0LCAzNzY1OSwgCisgICAgMzc2NjMsIDM3NjY2LCAzNzY3MSwgMzc2ODQsIDM3NzAwLCAyNTA1NSwgMzc3MTcsIDM3NzI5LCAzNzc0NiwgMzc3NTgsIAorICAgIDM3NzcyLCAyNTA3MiwgMjUwOTEsIDM3Nzg0LCAzNzc5NiwgMjcwOCwgMzc4MTAsIDM3ODE1LCAzNzgyMCwgMzc4MjUsIAorICAgIDM3ODI5LCAzNzgzNiwgMzc4NDgsIDM3ODU1LCAzNzg2NCwgMzc4NjcsIDM3ODc4LCAzNzg4OSwgMzc4OTQsIDM0ODY4LCAKKyAgICA4OTMsIDM3ODk4LCAzNzkwMiwgMzc5MDYsIDM3OTA5LCAzNzkxNCwgMzc5MTksIDM3OTI1LCAzNzkzMCwgMzc5MzUsIAorICAgIDM3OTQxLCAzNzk0NywgMzc5NTIsIDM3OTU2LCAzNzk2MSwgMzc5NjYsIDM3OTcxLCAzNzk3NSwgMzc5NzgsIDM3OTg0LCAKKyAgICAzNzk4OSwgMzc5OTQsIDM3OTk5LCAzODAwMywgMzgwMDgsIDM4MDE0LCAzODAyMiwgMjg2NjksIDM4MDI3LCAzODAzMiwgCisgICAgMzgwMzksIDM4MDQ1LCAzODA1MSwgMzgwNTYsIDM4MDY0LCAyNDU3NCwgMzgwNzEsIDM4MDc2LCAzODA4MSwgMzgwODYsIAorICAgIDM4MDkwLCAzODA5MywgMzgwOTgsIDM4MTAyLCAzODEwNiwgMzgxMTMsIDM4MTE5LCAzODEyNSwgMzgxMzEsIDM4MTM4LCAKKyAgICAzODE0MywgMzgxNDksIDM2OTk5LCAzODE1MywgMzgxNTcsIDM4MTYyLCAzODE3NSwgMzgxODAsIDM4MTg2LCAzODE5NCwgCisgICAgMzgyMDEsIDM4MjA5LCAzODIxOSwgMzgyMjUsIDM4MjMxLCAzODIzNywgMzgyNDEsIDM4MjUwLCAzODI1OCwgMzgyNjUsIAorICAgIDM4MjcwLCAzODI3NSwgMTE0MzUsIDM4MjgwLCAzODI4NywgMzgyOTMsIDM4MzAzLCAzODMwOCwgMzgzMTQsIDM4MzIyLCAKKyAgICAzNzc0LCAzODMyOSwgMzgzMzYsIDM4MzQyLCAzODM0OSwgMzc4MCwgMzgzNTMsIDM4MzU4LCAzODM2OSwgMzgzNzYsIAorICAgIDM4MzgyLCAzODM5MSwgMzgzOTUsIDQyNTgsIDM4Mzk4LCAzODQwNSwgMzg0MTEsIDM4NDE3LCAzODQyNSwgMzg0MzUsIAorICAgIDMxNjYyLCAzODQ0MiwgMzg0NTAsIDM4NDU2LCAzODQ2MSwgMzg0NjcsIDM4NDcyLCAzODQ3NiwgMjgyNjAsIDM4NDgyLCAKKyAgICAzODQ4OSwgMzg0OTUsIDM4NTA0LCAzODUxMSwgMjU3OTEsIDM4NTE3LCAzODUyMiwgMzg1MjYsIDM4NTM0LCAzODU0MiwgCisgICAgMTA0MjgsIDYxOTksIDM4NTQ5LCAzODU1MywgMzg1NTUsIDM4NTU5LCAzODU2NCwgMzg1NjYsIDM4NTcxLCAzODU3NywgCisgICAgMzg1ODIsIDM4NTg3LCAzODU5NCwgMzU0NDMsIDM4NjAwLCAzODYwNSwgMzg2MDksIDM4NjE0LCAzODYxOCwgMzg2MjcsIAorICAgIDM4NjMxLCAzODYzNywgMzg2NDQsIDM4NjUwLCAzODY1NywgMzg2NjIsIDM4NjcxLCAzODY3NiwgMzg2ODAsIDM4Njg1LCAKKyAgICAzODY5MiwgMzg3MDAsIDM4NzA4LCAzODcxMywgMjMyMzMsIDM4NzE3LCAzODcyMCwgMzg3MjQsIDM4NzI4LCAxMTgyMywgCisgICAgOTA3LCAzODczMiwgMzg3MzcsIDM4NzQ1LCAzODc0OSwgMzg3NTgsIDM4NzY1LCAzODc2OSwgMzg3NzMsIDM4NzgxLCAKKyAgICAzODc4OCwgMzg3OTgsIDM4ODAyLCAzODgwNiwgMzg4MTQsIDM4ODIyLCAzODgyOCwgMzg4MzMsIDM4ODQyLCAxNDY0MCwgCisgICAgMzg4NDgsIDM4ODU3LCAzODg2MiwgMzg4NjksIDM4ODc2LCAzODg4NCwgMzg4OTEsIDM4ODk5LCAzODkwNywgMzg5MTIsIAorICAgIDM4OTE5LCAzODkyNiwgMzg5MzMsIDM4OTQwLCAzODk0NywgMzg5NTIsIDM4OTU5LCAzODk2NSwgMzg5ODIsIDM4OTkwLCAKKyAgICAzOTAwMCwgMzkwMDgsIDM5MDE1LCA0MjIsIDM5MDE5LCAzOTAyNSwgMzkwMjksIDM5MDM0LCAzNjYwMCwgMzkwNDAsIAorICAgIDM5MDQzLCAzOTA0NywgMzkwNTgsIDM5MDY2LCAzNzg1LCAzOTA3NCwgMzkwODAsIDM5MDg2LCAzOTA5NiwgMzkxMDUsIAorICAgIDM5MTE1LCAzOTEyMiwgMzkxMjgsIDM5MTMzLCAzNzkxLCAzNzk3LCAzOTE0MiwgMzkxNDksIDM5MTU3LCAzOTE2MiwgCisgICAgMzkxNjYsIDM5MTczLCAzOTE4MSwgMzkxODgsIDM5MTk0LCAzOTIwMywgMzkyMTMsIDM5MjE5LCAzOTIyNywgMzkyMzYsIAorICAgIDM5MjQzLCAzOTI1MSwgMzkyNTgsIDIzOTM3LCAzOTI2MiwgMzkyNjksIDM5Mjc1LCAzOTI4NSwgMzkyOTQsIDM5MzAyLCAKKyAgICAzOTMxMywgMzkzMTcsIDM5MzI3LCAzOTMzMywgMzkzNDAsIDM5MzQ4LCAzOTM1NywgMzkzNjYsIDM5Mzc2LCAzOTM4NywgCisgICAgMzkzOTQsIDM5Mzk5LCAzOTQwNiwgMzA3NywgMzk0MTQsIDM5NDIwLCAzOTQyNSwgMzk0MzEsIDM5NDM3LCAzOTQ0MiwgCisgICAgMzk0NTUsIDM5NDY4LCAzOTQ4MSwgMzk0ODgsIDM5NDk0LCAzOTUwMiwgMzk1MTAsIDM5NTE1LCAzOTUxOSwgMTQzNiwgCisgICAgMzk1MjMsIDM5NTI3LCAzOTUzMSwgMzk1MzUsIDM5NTM5LCAzOTU0MywgMzk1NDcsIDM5NTUxLCAzOTU1NSwgMzk1NTksIAorICAgIDM5NTYzLCAzOTU2NywgMzk1NzEsIDM5NTc1LCAzOTU3OSwgMzk1ODMsIDM5NTg3LCAzOTU5MSwgMzk1OTUsIDM5NTk5LCAKKyAgICAzOTYwMywgMzk2MDcsIDM5NjExLCAzOTYxNSwgMzk2MTksIDM5NjIzLCAzOTYyNywgMzk2MzEsIDM5NjM1LCAzOTYzOSwgCisgICAgMzk2NDMsIDM5NjQ3LCAzOTY1MSwgMzk2NTUsIDM5NjU5LCAzOTY2MywgMzk2NjcsIDM5NjcxLCAzOTY3NSwgMzk2NzksIAorICAgIDM5NjgzLCAzOTY4NywgMzk2OTEsIDM5Njk1LCAzOTY5OSwgMzk3MDMsIDM5NzA3LCAzOTcxMSwgMzk3MTUsIDM5NzE5LCAKKyAgICAzOTcyMywgMzk3MjcsIDM5NzMxLCAzOTczNSwgMzk3MzksIDM5NzQzLCAzOTc0NywgMzk3NTEsIDM5NzU1LCAzOTc1OSwgCisgICAgMzk3NjMsIDM5NzY3LCAzOTc3MSwgMzk3NzUsIDM5Nzc5LCAzOTc4MywgMzk3ODcsIDM5NzkxLCAzOTc5NSwgMzk3OTksIAorICAgIDM5ODAzLCAzOTgwNywgMzk4MTEsIDM5ODE1LCAzOTgxOSwgMzk4MjMsIDM5ODI3LCAzOTgzMSwgMzk4MzUsIDM5ODM5LCAKKyAgICAzOTg0MywgMzk4NDcsIDM5ODUxLCAzOTg1NSwgMzk4NTksIDM5ODYzLCAzOTg2NywgMzk4NzEsIDM5ODc1LCAzOTg3OSwgCisgICAgMzk4ODMsIDM5ODg3LCAzOTg5MSwgMzk4OTUsIDM5ODk5LCAzOTkwMywgMzk5MDcsIDM5OTExLCAzOTkxNSwgMzk5MTksIAorICAgIDM5OTIzLCAzOTkyNywgMzk5MzEsIDM5OTM1LCAzOTkzOSwgMzk5NDMsIDM5OTQ3LCAzOTk1MSwgMzk5NTUsIDM5OTU5LCAKKyAgICAzOTk2MywgMzk5NjcsIDM5OTcxLCAzOTk3NSwgMzk5NzksIDM5OTgzLCAzOTk4NywgMzk5OTEsIDM5OTk1LCAzOTk5OSwgCisgICAgNDAwMDMsIDQwMDA3LCA0MDAxMSwgNDAwMTUsIDQwMDE5LCA0MDAyMywgNDAwMjcsIDQwMDMxLCA0MDAzNSwgNDAwMzksIAorICAgIDQwMDQzLCA0MDA0NywgNDAwNTEsIDQwMDU1LCA0MDA1OSwgNDAwNjMsIDQwMDY3LCA0MDA3MSwgNDAwNzUsIDQwMDc5LCAKKyAgICA0MDA4MywgNDAwODcsIDQwMDkxLCA0MDA5NSwgNDAwOTksIDQwMTAzLCA0MDEwNywgNDAxMTEsIDQwMTE1LCA0MDExOSwgCisgICAgNDAxMjMsIDQwMTI3LCA0MDEzMSwgNDAxMzUsIDQwMTQwLCA0MDE0NCwgNDAxNDksIDQwMTUzLCA0MDE1OCwgNDAxNjIsIAorICAgIDQwMTY3LCA0MDE3MSwgNDAxNzcsIDQwMTgyLCA0MDE4NiwgNDAxOTEsIDQwMTk1LCA0MDIwMCwgNDAyMDQsIDQwMjA5LCAKKyAgICA0MDIxMywgNDAyMTgsIDQwMjIyLCA0MDIyNywgNDAyMzEsIDQwMjM2LCA0MDI0MCwgNDAyNDYsIDQwMjUyLCA0MDI1NywgCisgICAgNDAyNjEsIDQwMjY2LCA0MDI3MCwgNDAyNzYsIDQwMjgxLCA0MDI4NSwgNDAyOTAsIDQwMjk0LCA0MDI5OSwgNDAzMDMsIAorICAgIDQwMzA5LCA0MDMxNCwgNDAzMTgsIDQwMzIzLCA0MDMyNywgNDAzMzIsIDQwMzM2LCA0MDM0MSwgNDAzNDUsIDQwMzUxLCAKKyAgICA0MDM1NiwgNDAzNjAsIDQwMzY1LCA0MDM2OSwgNDAzNzUsIDQwMzgwLCA0MDM4NCwgNDAzODksIDQwMzkzLCA0MDM5OCwgCisgICAgNDA0MDIsIDQwNDA3LCA0MDQxMSwgNDA0MTYsIDQwNDIwLCA0MDQyNiwgNDA0MzEsIDQwNDM1LCA0MDQ0MSwgNDA0NDYsIAorICAgIDQwNDUwLCA0MDQ1NiwgNDA0NjEsIDQwNDY1LCA0MDQ3MCwgNDA0NzQsIDQwNDc5LCA0MDQ4MywgNDA0ODksIDQwNDk1LCAKKyAgICA0MDUwMSwgNDA1MDcsIDQwNTEzLCA0MDUxOSwgNDA1MjUsIDQwNTMxLCA0MDUzNiwgNDA1NDAsIDQwNTQ1LCA0MDU0OSwgCisgICAgNDA1NTUsIDQwNTYwLCA0MDU2NCwgNDA1NjksIDQwNTczLCA0MDU3OCwgNDA1ODIsIDQwNTg3LCA0MDU5MSwgNDA1OTYsIAorICAgIDQwNjAwLCA0MDYwNSwgNDA2MDksIDQwNjE0LCA0MDYxOCwgNDA2MjQsIDQwNjI5LCA0MDYzMywgNDA2MzgsIDQwNjQyLCAKKyAgICA0MDY0OCwgNDA2NTQsIDQwNjU5LCAxMjIsIDYzLCA0MDY2MywgNDA2NjUsIDQwNjY5LCA0MDY3MywgNDA2NzcsIDQwNjgyLCAKKyAgICA0MDY4NiwgNDA2OTAsIDQwNjk1LCAxMDM0MSwgNDA3MDAsIDQwNzA2LCAxNzM3LCA2NjIxLCA0MDcxMiwgNDA3MTUsIAorICAgIDQwNzIwLCA0MDcyNCwgNDA3MjksIDQwNzMzLCA0MDczNywgNDA3NDIsIDExMjE5LCA0MDc0NiwgNDA3NTAsIDQwNzU0LCAKKyAgICA1NDAsIDQwNzU4LCAxNjkxNCwgNDA3NjMsIDQwNzY3LCA0MDc3MiwgNDA3NzcsIDQwNzgyLCA0MDc4NiwgNDA3OTMsIAorICAgIDI4NDQxLCA0MDc5OSwgNDA4MDIsIDQwODA2LCA0MDgxMSwgNDA4MTcsIDQwODIxLCA0MDgyNCwgNDA4MzIsIDQwODM4LCAKKyAgICA0MDg0MywgNDA4NDcsIDQwODUwLCA0MDg1NCwgNDA4NjAsIDQwODY0LCA0MDg2OCwgMzU3MywgMzU3OCwgMzE4ODYsIAorICAgIDQwODcxLCA0MDg3NSwgNDA4NzksIDQwODgzLCA0MDg4NywgNDA4OTUsIDQwOTAyLCA0MDkwNiwgMTQ1OTAsIDQwOTEzLCAKKyAgICA0MDkxOCwgNDA5MzIsIDQwOTM5LCA0MDk1MCwgMzQxLCA0MDk1NSwgNDA5NTksIDQwOTY1LCA0MDk3NywgNDA5ODMsIAorICAgIDQwOTg5LCA0MDk5MywgMzE5MjMsIDQxMDAyLCA0MTAwOCwgNDEwMTcsIDQxMDIxLCA0MTAyNSwgNDEwMzAsIDQxMDM2LCAKKyAgICA0MTA0MSwgNDEwNDUsIDQxMDUwLCA0MTA1NCwgNDEwNTgsIDQxMDY1LCA0MTA3MSwgNDEwNzYsIDQxMDg3LCA0MTEwMiwgCisgICAgNDExMTcsIDQxMTMyLCA0MTE0OCwgNDExNjYsIDExMTY5LCA0MTE4MCwgNDExODcsIDQxMTkxLCA0MTE5NCwgNDEyMDMsIAorICAgIDQxMjA4LCA0MTIxMiwgNDEyMjAsIDE3NDY5LCA0MTIyOCwgNDEyMzIsIDQxMjQyLCA0MTI1MywgMzE4NTYsIDQxMjY2LCAKKyAgICA0MTI3MCwgNDEyNzksIDQxMjk3LCA0MTMxNiwgNDEzMjQsIDEwNjIzLCAxMTMzMiwgNDEzMjgsIDI0NDcwLCA0MTMzMSwgCisgICAgMzI4MjQsIDQxMzM2LCAxMDYyMiwgNDEzNDEsIDQxMzQ3LCA0MTM1MiwgNDEzNTgsIDQxMzYzLCA0MTM2OSwgNDEzNzQsIAorICAgIDQxMzgwLCA0MTM4NSwgNDEzOTEsIDQxMzk3LCA0MTQwMywgNDE0MDgsIDQxMzY0LCA0MTM3MCwgNDEzNzUsIDQxMzgxLCAKKyAgICA0MTM4NiwgNDEzOTIsIDQxMzk4LCA4NTQ1LCA0MTAzLCA0MTQxMiwgNDE0MjAsIDQxNDI0LCA0MTQyNywgNDE0MzQsIAorICAgIDQxNDM4LCA0MTQ0MywgNDE0NDgsIDQxNDU1LCA0MTQ2MSwgNDE0NjcsIDQxNDcyLCAxNjI5NywgNDE0NzYsIDI4Mjc3LCAKKyAgICA0MTQ4MCwgNDE0ODQsIDQxNDg4LCA0MTQ5NCwgNDE0OTgsIDMwMzQ5LCA0MTUwNywgOTYzNCwgNDE1MTEsIDEwMDI3LCAKKyAgICA0MTUxNCwgNDE1MjEsIDQxNTI3LCA0MTUzMSwgMTMxMTQsIDQxNTM4LCA0MTU0NCwgNDE1NDksIDQxNTU2LCA0MTU2MywgCisgICAgNDE1NzAsIDMxMDc2LCA4NDQyLCA0MTU3NywgNDE1ODQsIDQxNTkxLCA0MTU5NywgNDE2MDIsIDQxNjA5LCA0MTYyMCwgCisgICAgNDE2MjYsIDQxNjMxLCA0MTYzNiwgNDE2NDEsIDQxNjQ1LCA0MTY1MCwgNDE2NTcsIDQxMzY1LCA0MTY2MSwgNDE2NzEsIAorICAgIDQxNjgwLCA0MTY5MSwgNDE2OTcsIDQxNzA1LCA0MTcxMiwgNDE3MTcsIDQxNzIyLCA0MTcyNywgNDE3MzIsIDQxNzM3LCAKKyAgICA0MTc0MSwgNDE3NDUsIDQxNzUyLCA0MTc1OCwgNDE3NjYsIDIzMzgsIDEwODYsIDExMjM1LCAxMTI0NywgMTEyNTIsIAorICAgIDExMjU4LCA0MTc3NSwgMTEyNjMsIDExMjY4LCAxMTI3NCwgNDE3ODAsIDQxNzkwLCA0MTc5NCwgMTEyNzksIDQxNzk5LCAKKyAgICAxODYxNywgNDE4MDIsIDQxODA3LCA0MTgxMSwgMzc4NTksIDQxODIyLCA0MTgyNywgNDE4MzQsIDQxODQxLCA0MTg0NSwgCisgICAgNDE4NDgsIDQxODU2LCAxMTE4MiwgNDE4NjMsIDQxODY2LCA0MTg3MiwgNDE4ODIsIDYyNTEsIDQxODkxLCA0MTg5NywgCisgICAgNDE5MDEsIDQxOTA5LCA0MTkxMywgNDE5MjMsIDQxOTI5LCA0MTkzNCwgNDE5NDUsIDQxOTU0LCA0MTk2MywgNDE5NzIsIAorICAgIDQxOTgxLCA0MTk5MCwgNDE5OTksIDQyMDA4LCA0MjAxNCwgNDIwMjAsIDQyMDI1LCA0MjAzMSwgNDIwMzcsIDQyMDQzLCAKKyAgICA0MjA0OCwgNDIwNTEsIDQyMDU4LCA0MjA2NCwgNDIwNjgsIDQyMDczLCA0MjA4MCwgNDIwODcsIDQyMDkxLCA0MjA5NCwgCisgICAgNDIxMDQsIDQyMTE3LCA0MjEyNiwgNDIxMzUsIDQyMTQ2LCA0MjE1OSwgNDIxNzEsIDQyMTgyLCA0MjE5MSwgNDIyMDIsIAorICAgIDQyMjA3LCA0MjIxNiwgNDIyMjEsIDExMjg0LCA0MjIyNywgNDIyMzQsIDQyMjQyLCA0MjI0NywgNDIyNTEsIDQyMjU4LCAKKyAgICA0MjI2NSwgNDA0NiwgMjUsIDQyMjY5LCA0MjI3NCwgMTg0NjYsIDQyMjc4LCA0MjI4MSwgNDIyODQsIDMwNTI5LCA0MjI4OCwgCisgICAgMzEwODUsIDQyMjk2LCA0MjMwMCwgNDIzMDQsIDQyMzA3LCA0MjMxMywgNDIzMTksIDQyMzI0LCAzMzg4MywgNDIzMzMsIAorICAgIDQyMzQxLCA0MjM0NywgNDIzNTQsIDMwNTEyLCA0MjM1OCwgMzA3MzIsIDQyMzYyLCA0MjM3MSwgNDIzNzUsIDQyMzgzLCAKKyAgICA0MjM4OSwgNDIzOTUsIDQyNDAwLCA0MjQwNCwgMzExMDQsIDQyNDEwLCA0MjQxMywgNDI0MjEsIDQyNDI5LCA0Mzk5LCAKKyAgICA0MjQzNSwgNDI0MzksIDQyNDQ0LCA0MjQ1MSwgNDI0NTcsIDQyNDYyLCA0MjQ2NywgNDI0NzEsIDQyNDc3LCA0MjQ4MiwgCisgICAgNDI0ODgsIDQzMTEsIDg0OCwgNDI0OTUsIDQyNDk5LCA0MjUwMiwgMTY3ODcsIDQyNTE0LCA0MjUyMiwgNDI1MzAsIDQyNTM4LCAKKyAgICA0MjU0NiwgNDI1NTMsIDQyNTYxLCA0MjU2OSwgNDI1NzYsIDQyNTg0LCA0MjU5MiwgNDI2MDAsIDQyNjA4LCA0MjYxNiwgCisgICAgNDI2MjQsIDQyNjMyLCA0MjY0MCwgNDI2NDgsIDQyNjU2LCA0MjY2NCwgNDI2NzEsIDQyNjc5LCA0MjY4NywgNDI2OTUsIAorICAgIDQyNzAzLCA0MjcxMSwgNDI3MTksIDQyNzI3LCA0MjczNSwgNDI3NDMsIDQyNzUxLCA0Mjc1OSwgNDI3NjcsIDQyNzc1LCAKKyAgICA0Mjc4MywgNDI3OTEsIDQyNzk5LCA0MjgwNywgNDI4MTUsIDQyODIzLCA0MjgzMCwgNDI4MzgsIDQyODQ1LCA0Mjg1MywgCisgICAgNDI4NjEsIDQyODY5LCA0Mjg3NywgNDI4ODUsIDQyODkzLCA0MjkwMSwgNDI5MDksIDQyOTIwLCAyMzk3MywgNDI5MjUsIAorICAgIDQyOTI4LCA0MjkzNSwgNDI5MzksIDQyOTQ1LCA0Mjk0OSwgNDI5NTUsIDQyOTYwLCA0Mjk2NiwgNDI5NzEsIDQyOTc2LCAKKyAgICA0Mjk4MCwgNDI5ODQsIDQyOTg5LCA0Mjk5NCwgNDMwMDQsIDQzMDEwLCA0MzAyMywgNDMwMjksIDQzMDM1LCA0MzA0MSwgCisgICAgNDMwNDgsIDQzMDUzLCA0MzA1OSwgNDMwNjQsIDE4MzYyLCA4NTYsIDQzMDY5LCA0MzA3MiwgNDMwNzUsIDQzMDc4LCAKKyAgICAzMzk2NywgMzM5NzMsIDQzMDgxLCAzMzk3OSwgMzM5OTIsIDMzOTk4LCAzNDAwNCwgNDMwODcsIDM0MDEwLCAzNDAxNiwgCisgICAgNDMwOTMsIDQzMDk5LCAxOCwgNDMxMDcsIDQzMTE0LCA0MzExOCwgNDMxMjIsIDQzMTMwLCAzNDc1NywgNDMxMzQsIDQzMTM4LCAKKyAgICA0MzE0NSwgNDMxNTAsIDQzMTU0LCA0MzE1OSwgNDMxNjUsIDQzMTcwLCA0MzE3NiwgNDMxODEsIDQzMTg1LCA0MzE4OSwgCisgICAgNDMxOTMsIDQzMTk4LCA0MzIwMiwgNDMyMDcsIDQzMjExLCA0MzIxNSwgNDMyMjIsIDQzMjI3LCA0MzIzMSwgNDMyMzUsIAorICAgIDQzMjQwLCA0MzI0NCwgNDMyNDksIDQzMjUzLCA0MzI1NywgNDMyNjIsIDQzMjY4LCAxNzA2MCwgMTcwNjUsIDQzMjczLCAKKyAgICA0MzI3NywgNDMyODAsIDQzMjg0LCA0MzI4OCwgMjMwNDQsIDQzMjkzLCA0MzI5NywgNDMzMDMsIDQzMzEwLCA0MzMxNiwgCisgICAgNDMzMjEsIDQzMzMxLCA0MzMzNiwgNDMzNDQsIDQzMzQ4LCA0MzM1MSwgMzQ3NzIsIDQzMzU1LCA0Mzc2LCA0MzM2MCwgCisgICAgNDMzNjUsIDQzMzY5LCA0MzM3NCwgNDMzNzgsIDQzMzgzLCAxNDY1OCwgNDMzOTQsIDQzMzk4LCA0MzQwMSwgNDM0MDUsIAorICAgIDQzNDEwLCA0MzQxNCwgNDM0MTksIDQzNDI0LCA0MzQyOCwgNDM0MzIsIDQzNDM2LCA0MzQzOSwgNDM0NDMsIDg1NjQsIAorICAgIDE0Njc0LCA0MzQ0NiwgNDM0NDksIDQzNDU1LCA0MzQ2MCwgNDM0NjYsIDQzNDcxLCA0MzQ3NywgNDM0ODIsIDQzNDg4LCAKKyAgICA0MzQ5MywgNDM0OTksIDQzNTA1LCA0MzUxMSwgNDM1MTYsIDQzNTIwLCA0MzUyNCwgNDM1MzMsIDQzNTQ5LCA0MzU2NSwgCisgICAgNDM1NzUsIDMwNDE5LCA0MzU4MiwgNDM1ODYsIDQzNTkxLCA0MzU5NiwgNDM2MDAsIDQzNjA0LCAzOTM2MSwgNDM2MTAsIAorICAgIDQzNjE1LCA0MzYxOSwgNDM2MjYsIDQzNjMxLCA0MzYzNiwgNDM2NDAsIDQzNjQ0LCA0MzY1MCwgMjkzNDgsIDQzNjU0LCAKKyAgICAyMzM0MCwgNDM2NTksIDQzNjY2LCA0MzY3NCwgNDM2ODAsIDQzNjg3LCA0MzY5NSwgNDM3MDEsIDQzNzA1LCA0MzcxMCwgCisgICAgNDM3MTYsIDQzNzI0LCA0MzcyOSwgNDM3MzMsIDQzNzQyLCAxMDMyMiwgNDM3NTAsIDQzNzU0LCA0Mzc2MiwgNDM3NjksIAorICAgIDQzNzc0LCA0Mzc3OSwgNDM3ODQsIDQzNzg4LCA0Mzc5MSwgNDM3OTUsIDQzNzk4LCA0MzgwMiwgNDM4MDksIDQzODE0LCAKKyAgICA0MzgxOCwgNDM4MjQsIDI4NzQ3LCAzNDAzMCwgNDM4MjgsIDQzODM3LCA0Mzg0NSwgNDM4NTEsIDQzODU4LCA0Mzg2NCwgCisgICAgNDM4NzAsIDQzODc1LCA0Mzg3OCwgNDM4ODAsIDQzODg3LCA0Mzg5NCwgNDM5MDAsIDQzOTA0LCA0MzkwNywgNDM5MTEsIAorICAgIDQzOTE1LCA0MzkxOSwgNDM5MjQsIDQzOTI4LCA0MzkzMiwgNDM5MzUsIDQzOTM5LCA0Mzk1MywgMjUxMjEsIDQzOTcyLCAKKyAgICA0Mzk4NSwgNDM5OTgsIDQ0MDExLCAyNTEzOSwgNDQwMjYsIDExNTIwLCA0NDA0MSwgNDQwNDcsIDQ0MDUxLCA0NDA2MSwgCisgICAgNDQwNjUsIDQ0MDY5LCA0NDA3MywgNDQwODAsIDQ0MDg1LCA0NDA4OSwgNDQwOTYsIDQ0MTAyLCA0NDEwNywgNDQxMTMsIAorICAgIDQ0MTIzLCA0NDEzNSwgNDQxNDYsIDQ0MTUxLCA0NDE1OCwgNDQxNjIsIDQ0MTY2LCA0NDE2OSwgMTc0OTAsIDM4NTQsIAorICAgIDQ0MTc3LCAxNzA4NywgNDQxOTAsIDQ0MTk3LCA0NDIwNCwgNDQyMDgsIDQ0MjEyLCA0NDIxNywgNDQyMjMsIDQ0MjI4LCAKKyAgICA0NDIzNCwgNDQyMzgsIDQ0MjQyLCA0NDI0NSwgNDQyNTAsIDQ0MjU0LCA0NDI1OSwgODEwNiwgMTAxMiwgNDQyNjQsIAorICAgIDQ0MjY4LCA0NDI3NCwgNDQyODMsIDQ0Mjg4LCA0NDI5NywgNDQzMDQsIDM5MjA5LCA0NDMxMCwgNDQzMTUsIDQ0MzE5LCAKKyAgICA0NDMyNCwgNDQzMzEsIDQ0MzM3LCA0NDM0MSwgNDQzNDQsIDQ0MzQ4LCA0NDM1MywgMTU5ODEsIDQ0MzYwLCA0NDM2NywgCisgICAgNDQzNzEsIDQ0Mzc0LCA0NDM3OSwgNDQzODQsIDQ0MzkwLCA0NDM5NSwgNDQ0MDAsIDQ0NDA0LCA0NDQwOSwgNDQ0MTksIAorICAgIDQ0NDI0LCA0NDQzMCwgNDQ0MzUsIDQ0NDQxLCA0NDQ0NiwgNDQ0NTIsIDQ0NDYyLCA0NDQ2NywgNDQ0NzIsIDQ0NDc2LCAKKyAgICA0NDQ4MSwgNzU4MiwgNzU5NCwgNDQ0ODYsIDQ0NDg5LCA0NDQ5NiwgNDQ1MDIsIDQ0NTExLCA5NTYwLCAzNzEzMSwgNDQ1MTksIAorICAgIDQ0NTIzLCA0NDUyNywgMzQ4MjAsIDQ0NTM1LCA0NDU0NiwgNDQ1NTQsIDM5NDA5LCA0NDU2MSwgNDQ1NjYsIDQ0NTcxLCAKKyAgICA0NDU4MiwgNDQ1ODksIDQ0NjAwLCAzNDg0NCwgMjMzNTEsIDQ0NjA4LCA5MzQsIDQ0NjEzLCAxNTAzMCwgNDQ2MTksIAorICAgIDMwNTAzLCA0NDYyNSwgNDQ2MzAsIDQ0NjQwLCA0NDY0OSwgNDQ2NTYsIDQ0NjYyLCA0NDY2NiwgNDQ2NjksIDQ0Njc2LCAKKyAgICA0NDY4MiwgNDQ2ODksIDQ0Njk1LCA0NDcwNSwgNDQ3MTMsIDQ0NzE5LCA0NDcyNSwgNDQ3MzAsIDQ0NzM0LCA0NDc0MSwgCisgICAgNDQ3NDYsIDQ0NzUyLCA0NDc1OSwgNDQ3NjUsIDQzOTIwLCA0NDc3MCwgNDQ3NzQsIDU3MSwgMTUxNDYsIDQ0NzgwLCAKKyAgICA0NDc4NSwgNDQ3ODgsIDQ0Nzk0LCA0NDgwMiwgMTM2MSwgNDQ4MDcsIDQ0ODExLCA0NDgxNiwgNDQ4MjEsIDQ0ODI2LCAKKyAgICA0NDgzMywgNDQ4MzcsIDQ0ODQyLCA0NDg0OCwgNDQ4NTIsIDM0MDQwLCA0NDg1NywgNDQ4NjIsIDQ0ODcxLCA0NDg3OCwgCisgICAgNDQ4ODgsIDQ0ODk0LCAzMDU0NywgNDQ5MTEsIDQ0OTIwLCA0NDkyOCwgNDQ5MzQsIDQ0OTM5LCA0NDk0NiwgNDQ5NTIsIAorICAgIDQ0OTYwLCA0NDk2OSwgNDQ5NzcsIDQ0OTgxLCA0NDk4NiwgNDQ5OTQsIDMxNTU2LCAzNDg1MywgNDUwMDAsIDQ1MDE5LCAKKyAgICAxNzM5MywgNDUwMzMsIDQ1MDQ5LCA0NTA2MywgNDUwNjksIDQ1MDc0LCA0NTA3OSwgNDUwODQsIDQ1MDkwLCAzNDg1OSwgCisgICAgNDUwOTUsIDQ1MDk4LCA0NTEwNSwgNDUxMTIsIDQ1MTE3LCA0NTEyMSwgNDEyLCAyOTg0LCA0NTEyOCwgNDUxMzMsIDQ1MTM4LCAKKyAgICAyOTcxNywgNDQ5NDksIDQ1MTQyLCA0NTE0NywgNDUxNTUsIDQ1MTU5LCA0NTE2MiwgNDUxNjcsIDQ1MTczLCA0NTE3OSwgCisgICAgNDUxODQsIDQ1MTg4LCAzMDYxNCwgNDUxOTEsIDQ1MTk2LCA0NTIwMCwgNDUyMDMsIDQ1MjA4LCA0NTIxMiwgNDUyMTcsIAorICAgIDQ1MjIyLCA0NTIyNiwgNDUyMzEsIDQ1MjM1LCA0NTIzOSwgNDUyNDMsIDIzMDQwLCAyMzA1MSwgNDUyNDgsIDQ1MjUzLCAKKyAgICA0NTI1OSwgNDUyNjQsIDQ1MjcwLCAyOTMwNSwgNDUyNzUsIDQ1Mjc5LCAyMzEzNywgMTc2OTYsIDQ1MjgyLCA0NTI4NywgCisgICAgNDUyOTIsIDQ1Mjk3LCA0NTMwMiwgNDUzMDcsIDQ1MzEyLCA0NTMxNywgNDY1LCA2OCwgMzQwNTMsIDM0MDU4LCAzNDA2MywgCisgICAgMzQwNjksIDM0MDc0LCAzNDA3OSwgNDUzMjIsIDM0MDgzLCA0NTMyNiwgNDUzMzAsIDQ1MzM0LCAzNDA4OCwgMzQwOTQsIAorICAgIDQ1MzQ4LCAzNDEwNSwgMzQxMTAsIDQ1MzU2LCA0NTM2MSwgMzQxMTYsIDQ1MzY2LCA0NTM3MSwgNDUzNzYsIDQ1MzgxLCAKKyAgICA0NTM5MCwgNDUzOTYsIDQ1NDAyLCA0NTQwOCwgMzQxMzMsIDQ1NDIxLCA0NTQzMCwgNDU0MzYsIDM0MTM3LCA0NTQ0MCwgCisgICAgMzQxNDIsIDQ1NDQ1LCAzNDE0NywgMzQxNTIsIDQ1NDQ4LCA0NTQ1MywgNDU0NTcsIDQ1NDYzLCAzMzY4MSwgNDU0NzAsIAorICAgIDE0OTA0LCA0NTQ3NywgNDU0ODIsIDM0MTU3LCA0NTQ4NiwgNDU0OTEsIDQ1NDk2LCA0NTUwMSwgNDU1MDUsIDQ1NTEwLCAKKyAgICA0NTUxNSwgNDU1MjEsIDQ1NTI2LCA0NTUzMSwgNDU1MzcsIDQ1NTQzLCA0NTU0OCwgNDU1NTIsIDQ1NTU3LCA0NTU2MiwgCisgICAgNDU1NjcsIDQ1NTcxLCA0NTU3NiwgNDU1ODEsIDQ1NTg2LCA0NTU5MiwgNDU1OTgsIDQ1NjA0LCA0NTYwOSwgNDU2MTMsIAorICAgIDQ1NjE4LCA0NTYyMiwgMzQxNjEsIDM0MTY2LCAzNDE3MSwgNDU2MjYsIDQ1NjMwLCA0NTYzNSwgNDU2MzksIDM0MTc2LCAKKyAgICAzNDE4MiwgMzQxODgsIDM0MjAwLCA0NTY1MSwgMjgzMTQsIDQ1NjU1LCA0NTY2MCwgNDU2NjQsIDQ1NjY5LCA0NTY3NiwgCisgICAgNDU2ODEsIDQ1Njg2LCA0NTY5MSwgNDU2OTUsIDQ1Njk5LCA0NTcwOSwgNDU3MTQsIDQ1NzE5LCA0NTcyMywgNDU3MjcsIAorICAgIDQ1NzMwLCA0NTczOCwgMzQyNDgsIDQ1NzQzLCAxNDQ2LCA0NTc0OSwgNDU3NTQsIDQ1NzYwLCA0NTc2OCwgNDU3NzIsIAorICAgIDQ1NzgxLCA0NTc4OSwgNDU3OTMsIDQ1Nzk3LCA0NTgwNSwgNDU4MTEsIDQ1ODE5LCA0NTgzNSwgNDU4MzksIDQ1ODQzLCAKKyAgICA0NTg0NywgNDU4NTIsIDQ1ODU4LCA0NTg3MywgMzQyODUsIDE3NDUsIDEzMzA4LCA0NTg3NywgMTM0MCwgMTM1NSwgNDU4ODksIAorICAgIDQ1ODk3LCA0NTkwNCwgNDU5MDksIDQ1OTE2LCA0NTkyMSwgMTAwMTIsIDEwOTYsIDI1MjksIDExMzExLCA0NTkyOCwgOTkxMCwgCisgICAgNDU5MzMsIDQ1OTM2LCA0NTk0NSwgMTI0OCwgNDU5NTAsIDQ0MDg2LCA0NTk1NywgNDU5NjYsIDQ1OTcxLCA0NTk3NSwgCisgICAgNDU5ODMsIDI0NTI2LCAyNTgxLCA0NTk5MCwgMTE3NzYsIDQ2MDAwLCA0NjAwNiwgMjM1NiwgMjM2NiwgNDYwMTUsIDQ2MDI0LCAKKyAgICA0NjAzNCwgNDYwNDUsIDMzNjUsIDM3NDg1LCA0NjA1MCwgMTEzNzUsIDQwMjQsIDE4NDAwLCAxMjUzLCA0NjA1NCwgNDYwNjIsIAorICAgIDQ2MDY5LCA0NjA3NCwgNDYwNzgsIDQ2MDgyLCAyNjAxOCwgNDQzNTUsIDExNDAyLCA0NjA5MCwgNDYwOTksIDQ2MTA4LCAKKyAgICA0NjExNiwgNDYxMjMsIDQ2MTM0LCA0NjEzOSwgNDYxNTIsIDQ2MTY1LCA0NjE3NywgNDYxODksIDQ2MjAxLCA0NjIxMiwgCisgICAgNDYyMjUsIDQ2MjM2LCA0NjI0NywgNDYyNTcsIDQ2MjY1LCA0NjI3MywgNDYyODUsIDQ2Mjk3LCA0NjMwOCwgNDYzMTcsIAorICAgIDQ2MzI1LCA0NjMzMiwgNDYzNDQsIDQ2MzUxLCA0NjM1NywgNDYzNjYsIDQ2MzczLCA0NjM4NiwgNDYzOTEsIDQ2NDAxLCAKKyAgICA0NjQwNiwgNDY0MTIsIDQ2NDE3LCA0MTUyOCwgNDY0MjEsIDQ2NDI4LCA0NjQzMiwgNDY0MzksIDQ2NDQ3LCA0NjQ1NCwgCisgICAgMjU0MiwgNDY0NjEsIDQ2NDcyLCA0NjQ4MiwgNDY0OTEsIDQ2NDk5LCA0NjUwOSwgNDY1MTcsIDQ2NTI2LCA0NjUzNiwgCisgICAgNDY1NDUsIDQ2NTUwLCA0NjU1NiwgNDY1NjIsIDM4OTgsIDQ2NTczLCA0NjU4MywgNDY1OTIsIDQ2NjAxLCA0NjYwOSwgCisgICAgNDY2MTksIDQ2NjI3LCA0NjYzNiwgNDY2NDEsIDQ2NjQ2LCA0NjY1MSwgMTY3NSwgNDcsIDQ2NjU5LCA0NjY2NywgNDY2NzgsIAorICAgIDQ2Njg5LCAxODAzOSwgNDY2OTksIDQ2NzAzLCA0NjcxMCwgNDY3MTYsIDQ2NzIxLCA0NjcyNSwgNDY3MzYsIDQ2NzQ2LCAKKyAgICA0Njc1NSwgNDY3NjYsIDE4NDM5LCAxODQ0NCwgNDY3NzEsIDQ2NzgwLCA0Njc4NSwgNDY3OTUsIDQ2ODAwLCA0NjgwOCwgCisgICAgNDY4MTYsIDQ2ODIzLCA0NjgyOSwgMTYzNywgMjgzLCA0NjgzMywgNDY4MzksIDQ2ODQ0LCA0Njg0NywgMjEyOCwgNDQyMDksIAorICAgIDQ2ODU1LCA0Njg1OSwgNDY4NjIsIDE0OTEsIDQ2ODY4LCAxNTMzMSwgMTI1OCwgNDY4NzMsIDQ2ODg2LCA0NjkwMCwgMjY3MSwgCisgICAgNDY5MTgsIDQ2OTMwLCA0Njk0MiwgMjY4NSwgMjcwMiwgNDY5NTYsIDQ2OTY5LCAyNzE3LCA0Njk4MywgNDY5OTUsIDI3MzIsIAorICAgIDQ3MDA5LCAxMjY0LCAxMjcwLCAxMjc2LCAxMTY4MiwgNDcwMTQsIDQ3MDE5LCA0NzAyNCwgNDcwMjgsIDQ3MDQzLCA0NzA1OCwgCisgICAgNDcwNzMsIDQ3MDg4LCA0NzEwMywgNDcxMTgsIDQ3MTMzLCA0NzE0OCwgNDcxNjMsIDQ3MTc4LCA0NzE5MywgNDcyMDgsIAorICAgIDQ3MjIzLCA0NzIzOCwgNDcyNTMsIDQ3MjY4LCA0NzI4MywgNDcyOTgsIDQ3MzEzLCA0NzMyOCwgNDczNDMsIDQ3MzU4LCAKKyAgICA0NzM3MywgNDczODgsIDQ3NDAzLCA0NzQxOCwgNDc0MzMsIDQ3NDQ4LCA0NzQ2MywgNDc0NzgsIDQ3NDkzLCA0NzUwOCwgCisgICAgNDc1MjMsIDQ3NTM4LCA0NzU1MywgNDc1NjgsIDQ3NTgzLCA0NzU5OCwgNDc2MTMsIDQ3NjI4LCA0NzY0MywgNDc2NTgsIAorICAgIDQ3NjczLCA0NzY4OCwgNDc3MDMsIDQ3NzE4LCA0NzczMywgNDc3NDgsIDQ3NzYzLCA0Nzc3OCwgNDc3OTMsIDQ3ODA4LCAKKyAgICA0NzgyMywgNDc4MzgsIDQ3ODUzLCA0Nzg2OCwgNDc4ODMsIDQ3ODk4LCA0NzkxMywgNDc5MjgsIDQ3OTQzLCA0Nzk1OCwgCisgICAgNDc5NzMsIDQ3OTg4LCA0ODAwMywgNDgwMTgsIDQ4MDMzLCA0ODA0OCwgNDgwNjMsIDQ4MDc4LCA0ODA5MywgNDgxMDgsIAorICAgIDQ4MTIzLCA0ODEzOCwgNDgxNTMsIDQ4MTY4LCA0ODE4MywgNDgxOTgsIDQ4MjEzLCA0ODIyOCwgNDgyNDMsIDQ4MjU4LCAKKyAgICA0ODI3MywgNDgyODgsIDQ4MzAzLCA0ODMxOCwgNDgzMzMsIDQ4MzQ4LCA0ODM2MywgNDgzNzgsIDQ4MzkzLCA0ODQwOCwgCisgICAgNDg0MjMsIDQ4NDM4LCA0ODQ1MywgNDg0NjgsIDQ4NDgzLCA0ODQ5OCwgNDg1MTMsIDQ4NTI4LCA0ODU0MywgNDg1NTgsIAorICAgIDQ4NTczLCA0ODU4OCwgNDg2MDMsIDQ4NjE4LCA0ODYzMywgNDg2NDgsIDQ4NjYzLCA0ODY3OCwgNDg2OTMsIDQ4NzA4LCAKKyAgICA0ODcyMywgNDg3MzgsIDQ4NzUzLCA0ODc2OCwgNDg3ODMsIDQ4Nzk4LCA0ODgxMywgNDg4MjgsIDQ4ODQzLCA0ODg1OCwgCisgICAgNDg4NzMsIDQ4ODg4LCA0ODkwMywgNDg5MTgsIDQ4OTMzLCA0ODk0OCwgNDg5NjMsIDQ4OTc4LCA0ODk5MywgNDkwMDgsIAorICAgIDQ5MDIzLCA0OTAzOCwgNDkwNTMsIDQ5MDY4LCA0OTA4MywgNDkwOTgsIDQ5MTEzLCA0OTEyOCwgNDkxNDMsIDQ5MTU4LCAKKyAgICA0OTE3MywgNDkxODgsIDQ5MjAzLCA0OTIxOCwgNDkyMzMsIDQ5MjQ4LCA0OTI2MywgNDkyNzgsIDQ5MjkzLCA0OTMwOCwgCisgICAgNDkzMjMsIDQ5MzM4LCA0OTM1MywgNDkzNjgsIDQ5MzgzLCA0OTM5OCwgNDk0MTMsIDQ5NDI4LCA0OTQ0MywgNDk0NTgsIAorICAgIDQ5NDczLCA0OTQ4OCwgNDk1MDMsIDQ5NTE4LCA0OTUzMywgNDk1NDgsIDQ5NTYzLCA0OTU3OCwgNDk1OTMsIDQ5NjA4LCAKKyAgICA0OTYyMywgNDk2MzgsIDQ5NjUzLCA0OTY2OCwgNDk2ODMsIDQ5Njk4LCA0OTcxMywgNDk3MjgsIDQ5NzQzLCA0OTc1OCwgCisgICAgNDk3NzMsIDQ5Nzg4LCA0OTgwMywgNDk4MTgsIDQ5ODMzLCA0OTg0OCwgNDk4NjMsIDQ5ODc4LCA0OTg5MywgNDk5MDgsIAorICAgIDQ5OTIzLCA0OTkzOCwgNDk5NTMsIDQ5OTY4LCA0OTk4MywgNDk5OTgsIDUwMDEzLCA1MDAyOCwgNTAwNDMsIDUwMDU4LCAKKyAgICA1MDA3MywgNTAwODgsIDUwMTAzLCA1MDExOCwgNTAxMzMsIDUwMTQ4LCA1MDE2MywgNTAxNzgsIDUwMTkzLCA1MDIwOCwgCisgICAgNTAyMjMsIDUwMjM4LCA1MDI1MywgNTAyNjgsIDUwMjgzLCA1MDI5OCwgNTAzMTMsIDUwMzI4LCA1MDM0MywgNTAzNTgsIAorICAgIDUwMzczLCA1MDM4OCwgNTA0MDMsIDUwNDE4LCA1MDQzMywgNTA0NDgsIDUwNDYzLCA1MDQ3OCwgNTA0OTMsIDUwNTA4LCAKKyAgICA1MDUyMywgNTA1MzgsIDUwNTUzLCA1MDU2OCwgNTA1ODMsIDUwNTk4LCA1MDYxMywgNTA2MjgsIDUwNjQzLCA1MDY1OCwgCisgICAgNTA2NzMsIDUwNjg4LCA1MDcwMywgNTA3MTgsIDUwNzMzLCA1MDc0OCwgNTA3NjMsIDUwNzc4LCA1MDc5MywgNTA4MDgsIAorICAgIDUwODIzLCA1MDgzOCwgNTA4NTMsIDUwODY4LCA1MDg4MywgNTA4OTgsIDUwOTEzLCA1MDkyOCwgNTA5NDMsIDUwOTU4LCAKKyAgICA1MDk3MywgNTA5ODgsIDUxMDAzLCA1MTAxOCwgNTEwMzMsIDUxMDQ4LCA1MTA2MywgNTEwNzgsIDUxMDkzLCA1MTEwOCwgCisgICAgNTExMjMsIDUxMTM4LCA1MTE1MywgNTExNjgsIDUxMTgzLCA1MTE5OCwgNTEyMTMsIDUxMjI4LCA1MTI0MywgNTEyNTgsIAorICAgIDUxMjczLCA1MTI4OCwgNTEzMDMsIDUxMzE4LCA1MTMzMywgNTEzNDgsIDUxMzYzLCA1MTM3OCwgNTEzOTMsIDUxNDA4LCAKKyAgICA1MTQyMywgNTE0MzgsIDUxNDUzLCA1MTQ2OCwgNTE0ODMsIDUxNDk4LCA1MTUxMywgNTE1MjgsIDUxNTQzLCA1MTU1OCwgCisgICAgNTE1NzMsIDUxNTg4LCA1MTYwMywgNTE2MTgsIDUxNjMzLCA1MTY0OCwgNTE2NjMsIDUxNjc4LCA1MTY5MywgNTE3MDgsIAorICAgIDUxNzIzLCA1MTczOCwgNTE3NTMsIDUxNzY4LCA1MTc4MywgNTE3OTgsIDUxODEzLCA1MTgyOCwgNTE4NDMsIDUxODU4LCAKKyAgICA1MTg3MywgNTE4ODgsIDUxOTAzLCA1MTkxOCwgNTE5MzMsIDUxOTQ4LCA1MTk2MywgNTE5NzgsIDUxOTkzLCA1MjAwOCwgCisgICAgNTIwMjMsIDUyMDM4LCA1MjA1MywgNTIwNjgsIDUyMDgzLCA1MjA5OCwgNTIxMTMsIDUyMTI4LCA1MjE0MywgNTIxNTgsIAorICAgIDUyMTczLCA1MjE4OCwgNTIyMDMsIDUyMjE4LCA1MjIzMywgNTIyNDgsIDUyMjYzLCA1MjI3OCwgNTIyOTMsIDUyMzA4LCAKKyAgICA1MjMyMywgNTIzMzgsIDUyMzUzLCA1MjM2OCwgNTIzODMsIDUyMzk4LCA1MjQxMywgNTI0MjgsIDUyNDQzLCA1MjQ1OCwgCisgICAgNTI0NzMsIDUyNDg4LCA1MjUwMywgNTI1MTgsIDUyNTMzLCA1MjU0OCwgNTI1NjMsIDUyNTc4LCA1MjU5MywgNTI2MDgsIAorICAgIDUyNjIzLCA1MjYzOCwgNTI2NTMsIDUyNjY4LCA1MjY4MywgNTI2OTgsIDUyNzEzLCA1MjcyOCwgNTI3NDMsIDUyNzU4LCAKKyAgICA1Mjc3MywgNTI3ODgsIDUyODAzLCA1MjgxOCwgNTI4MzMsIDUyODQ4LCA1Mjg2MywgNTI4NzgsIDUyODkzLCA1MjkwOCwgCisgICAgNTI5MjMsIDUyOTM4LCA1Mjk1MywgNTI5NjgsIDUyOTgzLCA1Mjk5OCwgNTMwMTMsIDUzMDI4LCA1MzA0MywgNTMwNTgsIAorICAgIDUzMDczLCA1MzA4OCwgNTMxMDMsIDUzMTE4LCA1MzEzMywgNTMxNDgsIDUzMTYzLCA1MzE3OCwgNTMxOTMsIDUzMjA4LCAKKyAgICA1MzIyMywgNTMyMzgsIDUzMjUzLCA1MzI2OCwgNTMyODMsIDUzMjk4LCA1MzMxMywgNTMzMjgsIDUzMzQzLCA1MzM1OCwgCisgICAgNTMzNzMsIDUzMzg4LCA1MzQwMywgNTM0MTgsIDUzNDMzLCA1MzQ0OCwgNTM0NjMsIDUzNDc4LCA1MzQ5MywgNTM1MDgsIAorICAgIDUzNTIzLCA1MzUzOCwgNTM1NTMsIDUzNTY4LCA1MzU4MywgNTM1OTgsIDUzNjEzLCA1MzYyOCwgNTM2NDMsIDUzNjU4LCAKKyAgICA1MzY3MywgNTM2ODgsIDUzNzAzLCA1MzcxOCwgNTM3MzMsIDUzNzQ4LCA1Mzc2MywgNTM3NzgsIDUzNzkzLCA1MzgwOCwgCisgICAgNTM4MjMsIDUzODM4LCA1Mzg1MywgNTM4NjgsIDUzODgzLCA1Mzg5OCwgNTM5MTMsIDUzOTI4LCA1Mzk0MywgNTM5NTgsIAorICAgIDUzOTczLCA1Mzk4OCwgNTQwMDMsIDU0MDE4LCA1NDAzMywgNTQwNDgsIDU0MDYzLCA1NDA3OCwgNTQwOTMsIDU0MTA4LCAKKyAgICA1NDEyMywgNTQxMzgsIDU0MTUzLCA1NDE2OCwgNTQxODMsIDU0MTk4LCA1NDIxMywgNTQyMjgsIDU0MjQzLCA1NDI1OCwgCisgICAgNTQyNzMsIDU0Mjg4LCA1NDMwMywgNTQzMTgsIDU0MzMzLCA1NDM0OCwgNTQzNjMsIDU0Mzc4LCA1NDM5MywgNTQ0MDgsIAorICAgIDU0NDIzLCA1NDQzOCwgNTQ0NTMsIDU0NDY4LCA1NDQ4MywgNTQ0OTgsIDU0NTEzLCA1NDUyOCwgNTQ1NDMsIDU0NTU4LCAKKyAgICA1NDU3MywgNTQ1ODgsIDU0NjAzLCA1NDYxOCwgNTQ2MzMsIDU0NjQ4LCA1NDY2MywgNTQ2NzgsIDU0NjkzLCA1NDcwOCwgCisgICAgNTQ3MjMsIDU0NzM4LCA1NDc1MywgNTQ3NjgsIDU0NzgzLCA1NDc5OCwgNTQ4MTMsIDU0ODI4LCA1NDg0MywgNTQ4NTksIAorICAgIDU0ODc1LCA1NDg5MSwgNTQ5MDcsIDU0OTIzLCA1NDkzOSwgNTQ5NTUsIDU0OTcxLCA1NDk4NywgNTUwMDMsIDU1MDE5LCAKKyAgICA1NTAzNSwgNTUwNTEsIDU1MDY3LCA1NTA4MywgNTUwOTksIDU1MTE1LCA1NTEzMSwgNTUxNDcsIDU1MTYzLCA1NTE3OSwgCisgICAgNTUxOTUsIDU1MjExLCA1NTIyNywgNTUyNDMsIDU1MjU5LCA1NTI3NSwgNTUyOTEsIDU1MzA3LCA1NTMyMywgNTUzMzksIAorICAgIDU1MzU1LCA1NTM3MSwgNTUzODcsIDU1NDAzLCA1NTQxOSwgNTU0MzUsIDU1NDUxLCA1NTQ2NywgNTU0ODMsIDU1NDk5LCAKKyAgICA1NTUxNSwgNTU1MzEsIDU1NTQ3LCA1NTU2MywgNTU1NzksIDU1NTk1LCA1NTYxMSwgNTU2MjcsIDU1NjQzLCA1NTY1OSwgCisgICAgNTU2NzUsIDU1NjkxLCA1NTcwNywgNTU3MjMsIDU1NzM5LCA1NTc1NSwgNTU3NzEsIDU1Nzg3LCA1NTgwMywgNTU4MTksIAorICAgIDU1ODM1LCA1NTg1MSwgNTU4NjcsIDU1ODgzLCA1NTg5OSwgNTU5MTUsIDU1OTMxLCA1NTk0NywgNTU5NjMsIDU1OTc5LCAKKyAgICA1NTk5NSwgNTYwMTEsIDU2MDI3LCA1NjA0MywgNTYwNTksIDU2MDc1LCA1NjA5MSwgNTYxMDcsIDU2MTIzLCA1NjEzOSwgCisgICAgNTYxNTUsIDU2MTcxLCA1NjE4NywgNTYyMDMsIDU2MjE5LCA1NjIzNSwgNTYyNTEsIDU2MjY3LCA1NjI4MywgNTYyOTksIAorICAgIDU2MzE1LCA1NjMzMSwgNTYzNDcsIDU2MzYzLCA1NjM3OSwgNTYzOTUsIDU2NDExLCA1NjQyNywgNTY0NDMsIDU2NDU5LCAKKyAgICA1NjQ3NSwgNTY0OTEsIDU2NTA3LCA1NjUyMywgNTY1MzksIDU2NTU1LCA1NjU3MSwgNTY1ODcsIDU2NjAzLCA1NjYxOSwgCisgICAgNTY2MzUsIDU2NjUxLCA1NjY2NywgNTY2ODMsIDU2Njk5LCA1NjcxNSwgNTY3MzEsIDU2NzQ3LCA1Njc2MywgNTY3NzksIAorICAgIDU2Nzk1LCA1NjgxMSwgNTY4MjcsIDU2ODQzLCA1Njg1OSwgNTY4NzUsIDU2ODkxLCA1NjkwNywgNTY5MjMsIDU2OTM5LCAKKyAgICA1Njk1NSwgNTY5NzEsIDU2OTg3LCA1NzAwMywgNTcwMTksIDU3MDM1LCA1NzA1MSwgNTcwNjcsIDU3MDgzLCA1NzA5OSwgCisgICAgNTcxMTUsIDU3MTMxLCA1NzE0NywgNTcxNjMsIDU3MTc5LCA1NzE5NSwgNTcyMTEsIDU3MjI3LCA1NzI0MywgNTcyNTksIAorICAgIDU3Mjc1LCA1NzI5MSwgNTczMDcsIDU3MzIzLCA1NzMzOSwgNTczNTUsIDU3MzcxLCA1NzM4NywgNTc0MDMsIDU3NDE5LCAKKyAgICA1NzQzNSwgNTc0NTEsIDU3NDY3LCA1NzQ4MywgNTc0OTksIDU3NTE1LCA1NzUzMSwgNTc1NDcsIDU3NTYzLCA1NzU3OSwgCisgICAgNTc1OTUsIDU3NjExLCA1NzYyNywgNTc2NDMsIDU3NjU5LCA1NzY3NSwgNTc2OTEsIDU3NzA3LCA1NzcyMywgNTc3MzksIAorICAgIDU3NzU1LCA1Nzc3MSwgNTc3ODcsIDU3ODAzLCA1NzgxOSwgNTc4MzUsIDU3ODUxLCA1Nzg2NywgNTc4ODMsIDU3ODk5LCAKKyAgICA1NzkxNSwgNTc5MzEsIDU3OTQ3LCA1Nzk2MywgNTc5NzksIDU3OTk1LCA1ODAxMSwgNTgwMjcsIDU4MDQzLCA1ODA1OSwgCisgICAgNTgwNzUsIDU4MDkxLCA1ODEwNywgNTgxMjMsIDU4MTM5LCA1ODE1NSwgNTgxNzEsIDU4MTg3LCA1ODIwMywgNTgyMTksIAorICAgIDU4MjM1LCA1ODI1MSwgNTgyNjcsIDU4MjgzLCA1ODI5OSwgNTgzMTUsIDU4MzMxLCA1ODM0NywgNTgzNjMsIDU4Mzc5LCAKKyAgICA1ODM5NSwgNTg0MTEsIDU4NDI3LCA1ODQ0MywgNTg0NTksIDU4NDc1LCA1ODQ5MSwgNTg1MDcsIDU4NTIzLCA1ODUzOSwgCisgICAgNTg1NTUsIDU4NTcxLCA1ODU4NywgNTg2MDMsIDU4NjE5LCA1ODYzNSwgNTg2NTEsIDU4NjY3LCA1ODY4MywgNTg2OTksIAorICAgIDU4NzE1LCA1ODczMSwgNTg3NDcsIDU4NzYzLCA1ODc3OSwgNTg3OTUsIDU4ODExLCA1ODgyNywgNTg4NDMsIDU4ODU5LCAKKyAgICA1ODg3NSwgNTg4OTEsIDU4OTA3LCA1ODkyMywgNTg5MzksIDU4OTU1LCA1ODk3MSwgNTg5ODcsIDU5MDAzLCA1OTAxOSwgCisgICAgNTkwMzUsIDU5MDUxLCA1OTA2NywgNTkwODMsIDU5MDk5LCA1OTExNSwgNTkxMzEsIDU5MTQ3LCA1OTE2MywgNTkxNzksIAorICAgIDU5MTk1LCA1OTIxMSwgNTkyMjcsIDU5MjQzLCA1OTI1OSwgNTkyNzUsIDU5MjkxLCA1OTMwNywgNTkzMjMsIDU5MzM5LCAKKyAgICA1OTM1NSwgNTkzNzEsIDU5Mzg3LCA1OTQwMywgNTk0MTksIDU5NDM1LCA1OTQ1MSwgNTk0NjcsIDU5NDgzLCA1OTQ5OSwgCisgICAgNTk1MTUsIDU5NTMxLCA1OTU0NywgNTk1NjMsIDU5NTc5LCA1OTU5NSwgNTk2MTEsIDU5NjI3LCA1OTY0MywgNTk2NTksIAorICAgIDU5Njc1LCA1OTY5MSwgNTk3MDcsIDU5NzIzLCA1OTczOSwgNTk3NTUsIDU5NzcxLCA1OTc4NywgNTk4MDMsIDU5ODE5LCAKKyAgICA1OTgzNSwgNTk4NTEsIDU5ODY3LCA1OTg4MywgNTk4OTksIDU5OTE1LCA1OTkzMSwgNTk5NDcsIDU5OTYzLCA1OTk3OSwgCisgICAgNTk5OTUsIDYwMDExLCA2MDAyNywgNjAwNDMsIDYwMDU5LCA2MDA3NSwgNjAwOTEsIDYwMTA3LCA2MDEyMywgNjAxMzksIAorICAgIDYwMTU1LCA2MDE3MSwgNjAxODcsIDYwMjAzLCA2MDIxOSwgNjAyMzUsIDYwMjUxLCA2MDI2NywgNjAyODMsIDYwMjk5LCAKKyAgICA2MDMxNSwgNjAzMzEsIDYwMzQ3LCA2MDM2MywgNjAzNzksIDYwMzk1LCA2MDQxMSwgNjA0MjcsIDYwNDQzLCA2MDQ1OSwgCisgICAgNjA0NzUsIDYwNDkxLCA2MDUwNywgNjA1MjMsIDYwNTM5LCA2MDU1NSwgNjA1NzEsIDYwNTg3LCA2MDYwMywgNjA2MTksIAorICAgIDYwNjM1LCA2MDY1MSwgNjA2NjcsIDYwNjgzLCA2MDY5OSwgNjA3MTUsIDYwNzMxLCA2MDc0NywgNjA3NjMsIDYwNzc5LCAKKyAgICA2MDc5NSwgNjA4MTEsIDYwODI3LCA2MDg0MywgNjA4NTksIDYwODc1LCA2MDg5MSwgNjA5MDcsIDYwOTIzLCA2MDkzOSwgCisgICAgNjA5NTUsIDYwOTcxLCA2MDk4NywgNjEwMDMsIDYxMDE5LCA2MTAzNSwgNjEwNTEsIDYxMDY3LCA2MTA4MywgNjEwOTksIAorICAgIDYxMTE1LCA2MTEzMSwgNjExNDcsIDYxMTYzLCA2MTE3OSwgNjExOTUsIDYxMjExLCA2MTIyNywgNjEyNDMsIDYxMjU5LCAKKyAgICA2MTI3NSwgNjEyOTEsIDYxMzA3LCA2MTMyMywgNjEzMzksIDYxMzU1LCA2MTM3MSwgNjEzODcsIDYxNDAzLCA2MTQxOSwgCisgICAgNjE0MzUsIDYxNDUxLCA2MTQ2NywgNjE0ODMsIDYxNDk5LCA2MTUxNSwgNjE1MzEsIDYxNTQ3LCA2MTU2MywgNjE1NzksIAorICAgIDYxNTk1LCA2MTYxMSwgNjE2MjcsIDYxNjQzLCA2MTY1OSwgNjE2NzUsIDYxNjkxLCA2MTcwNywgNjE3MjMsIDYxNzM5LCAKKyAgICA2MTc1NSwgNjE3NzEsIDYxNzg3LCA2MTgwMywgNjE4MTksIDYxODM1LCA2MTg1MSwgNjE4NjcsIDYxODgzLCA2MTg5OSwgCisgICAgNjE5MTUsIDYxOTMxLCA2MTk0NywgNjE5NjMsIDYxOTc5LCA2MTk5NSwgNjIwMTEsIDYyMDI3LCA2MjA0MywgNjIwNTksIAorICAgIDYyMDc1LCA2MjA5MSwgNjIxMDcsIDYyMTIzLCA2MjEzOSwgNjIxNTUsIDYyMTcxLCA2MjE4NywgNjIyMDMsIDYyMjE5LCAKKyAgICA2MjIzNSwgNjIyNTEsIDYyMjY3LCA2MjI4MywgNjIyOTksIDYyMzE1LCA2MjMzMSwgNjIzNDcsIDYyMzYzLCA2MjM3OSwgCisgICAgNjIzOTUsIDYyNDExLCA2MjQyNywgNjI0NDMsIDYyNDU5LCA2MjQ3NSwgNjI0OTEsIDYyNTA3LCA2MjUyMywgNjI1MzksIAorICAgIDYyNTU1LCA2MjU3MSwgNjI1ODcsIDYyNjAzLCA2MjYxOSwgNjI2MzUsIDYyNjUxLCA2MjY2NywgNjI2ODMsIDYyNjk5LCAKKyAgICA2MjcxNSwgNjI3MzEsIDYyNzQ3LCA2Mjc2MywgNjI3NzksIDYyNzk1LCA2MjgxMSwgNjI4MjcsIDYyODQzLCA2Mjg1OSwgCisgICAgNjI4NzUsIDYyODkxLCA2MjkwNywgNjI5MjMsIDYyOTM5LCA2Mjk1NSwgNjI5NzEsIDYyOTg3LCA2MzAwMywgNjMwMTksIAorICAgIDYzMDM1LCA2MzA1MSwgNjMwNjcsIDYzMDgzLCA2MzA5OSwgNjMxMTUsIDYzMTMxLCA2MzE0NywgNjMxNjMsIDYzMTc5LCAKKyAgICA2MzE5NSwgNjMyMTEsIDYzMjI3LCA2MzI0MywgNjMyNTksIDYzMjc1LCA2MzI5MSwgNjMzMDcsIDYzMzIzLCA2MzMzOSwgCisgICAgNjMzNTUsIDYzMzcxLCA2MzM4NywgNjM0MDMsIDYzNDE5LCA2MzQzNSwgNjM0NTEsIDYzNDY3LCA2MzQ4MywgNjM0OTksIAorICAgIDYzNTE1LCA2MzUzMCwgMTYxNTIsIDYzNTM5LCA2MzU0NCwgNjM1NTAsIDYzNTU2LCA2MzU2NiwgNjM1NzQsIDE2MzkzLCAKKyAgICAxNjk5OSwgMTA4MzEsIDYzNTg3LCAxNDk5LCAxNTAzLCA2MzU5NSwgMzk3OCwgMjk4MzIsIDc1MzYsIDYzNjAxLCA2MzYwNiwgCisgICAgNjM2MTEsIDYzNjE2LCA2MzYyMSwgNjM2MjcsIDYzNjMyLCA2MzYzOCwgNjM2NDMsIDYzNjQ5LCA2MzY1NCwgNjM2NTksIAorICAgIDYzNjY0LCA2MzY2OSwgNjM2NzUsIDYzNjgwLCA2MzY4NSwgNjM2OTAsIDYzNjk1LCA2MzcwMCwgNjM3MDUsIDYzNzEwLCAKKyAgICA2MzcxNiwgNjM3MjEsIDYzNzI3LCA2MzczNCwgMjU4NSwgNjM3MzksIDYzNzQ1LCA4OTU3LCA2Mzc0OSwgNjM3NTQsIAorICAgIDYzNzYxLCA2Mzc2OSwgNjUsIDYzNzczLCA2Mzc3OSwgNjM3ODQsIDYzNzg5LCA2Mzc5MywgNjM3OTgsIDYzODAyLCA2MzgwNiwgCisgICAgMTE3MTksIDYzODEwLCA2MzgyMCwgNjM4MzMsIDYzODQ0LCA2Mzg1NywgNjM4NjQsIDYzODcwLCAxMTIzNiwgNjM4NzgsIAorICAgIDYzODgzLCA2Mzg4OSwgNjM4OTUsIDYzOTAxLCA2MzkwNiwgNjM5MTEsIDYzOTE2LCA2MzkyMSwgNjM5MjUsIDYzOTMwLCAKKyAgICA2MzkzNSwgNjM5NDAsIDYzOTQ2LCA2Mzk1MiwgNjM5NTgsIDYzOTYzLCA2Mzk2NywgNjM5NzIsIDYzOTc3LCA2Mzk4MSwgCisgICAgNjM5ODYsIDYzOTkxLCA2Mzk5NiwgNjQwMDAsIDExNzM1LCAxMTc0NiwgMTE3NTEsIDE1NDIsIDY0MDA0LCA2NDAxMCwgCisgICAgMTU0NywgMTc4OTAsIDY0MDE1LCAxNzg5OSwgNjQwMjAsIDY0MDI2LCA2NDAzMSwgMTU3OCwgNjQwMzcsIDE1ODQsIDE1OTAsIAorICAgIDExNzgxLCA2NDA0MiwgNjQwNTEsIDY0MDU5LCA2NDA2NywgNjQwNzQsIDY0MDc4LCA2NDA4MiwgNjQwODgsIDY0MDkzLCAKKyAgICAzMzcyMSwgNjQwOTgsIDY0MTA1LCA2NDExMiwgNjQxMTcsIDY0MTIxLCA2NDEyNSwgNjQxMzQsIDE1OTUsIDE4MDA4LCAKKyAgICA2NDEzOSwgNjQxNDMsIDE4MDE5LCAxMTI2LCA2NDE0NywgNjQxNTQsIDY0MTU5LCA2NDE2MywgMTgwNTUsIDE1OTksIAorICAgIDQxNjg1LCA2NDE2NiwgNjQxNzEsIDY0MTgxLCA2NDE5MCwgNjQxOTUsIDY0MTk5LCA2NDIwNSwgMTYwNCwgNDQzMTYsIAorICAgIDY0MjEwLCA2NDIxOSwgNjQyMjUsIDY0MjMwLCA2NDIzNSwgMTE5OTIsIDExOTk4LCA2NDI0MSwgNjQyNTMsIDY0MjcwLCAKKyAgICA2NDI4NywgNjQzMDQsIDY0MzIxLCA2NDMzOCwgNjQzNTUsIDY0MzcyLCA2NDM4OSwgNjQ0MDYsIDY0NDIzLCA2NDQ0MCwgCisgICAgNjQ0NTcsIDY0NDc0LCA2NDQ5MSwgNjQ1MDgsIDY0NTI1LCA2NDU0MiwgNjQ1NTksIDY0NTc2LCA2NDU5MywgNjQ2MTAsIAorICAgIDY0NjI3LCA2NDY0NCwgNjQ2NjEsIDY0Njc4LCA2NDY5NSwgNjQ3MTIsIDY0NzI5LCA2NDc0NiwgNjQ3NjMsIDY0NzgwLCAKKyAgICA2NDc5NywgNjQ4MTQsIDY0ODMxLCA2NDg0OCwgNjQ4NjUsIDY0ODgyLCA2NDg5OSwgNjQ5MTYsIDY0OTMzLCA2NDk1MCwgCisgICAgNjQ5NjcsIDY0OTg0LCA2NTAwMSwgNjUwMTgsIDY1MDM1LCA2NTA1MiwgNjUwNjksIDY1MDg2LCA2NTA5NywgNjUxMDcsIAorICAgIDY1MTEyLCAxNjA5LCA2NTExNiwgNjUxMjEsIDY1MTI3LCA2NTEzMiwgNjUxMzcsIDY1MTQ0LCA5OTI5LCAxNjE0LCA2NTE1MCwgCisgICAgNjUxNTksIDMwMTYxLCA2NTE2NCwgNjUxNzUsIDEyMDA5LCA2NTE4NSwgNjUxOTAsIDY1MTk2LCA2NTIwMSwgNjUyMDgsIAorICAgIDY1MjE0LCA2NTIxOSwgMTYxOSwgMTgzMzgsIDY1MjI0LCA2NTIzMCwgMTIwMTksIDE2MjQsIDEyMDI0LCA2NTIzNiwgCisgICAgNjUyNDEsIDY1MjQ3LCA2NTI1MiwgNjUyNTcsIDY1MjYyLCA2NTI2NywgNjUyNzIsIDY1Mjc3LCA2NTI4MiwgNjUyODcsIAorICAgIDY1MjkzLCA2NTI5OSwgNjUzMDUsIDY1MzEwLCA2NTMxNCwgNjUzMTksIDY1MzI0LCA2NTMyOCwgNjUzMzMsIDY1MzM4LCAKKyAgICA2NTM0MywgNjUzNDgsIDY1MzUyLCA2NTM1NywgNjUzNjMsIDY1MzY4LCA2NTM3MywgNjUzNzcsIDY1MzgyLCA2NTM4NywgCisgICAgNjUzOTMsIDY1Mzk4LCA2NTQwMywgNjU0MDksIDY1NDE1LCA2NTQyMCwgNjU0MjQsIDY1NDI5LCA2NTQzNCwgNjU0MzksIAorICAgIDY1NDQzLCA2NTQ0OCwgNjU0NTMsIDY1NDU4LCA2NTQ2NCwgNjU0NzAsIDY1NDc1LCA2NTQ3OSwgNjU0ODMsIDY1NDg4LCAKKyAgICA2NTQ5MywgNjU0OTgsIDMxNzM1LCA2NTUwMiwgNjU1MDcsIDY1NTEyLCA2NTUxOCwgNjU1MjMsIDY1NTI4LCA2NTUzMiwgCisgICAgNjU1MzcsIDY1NTQyLCA2NTU0OCwgNjU1NTMsIDY1NTU4LCA2NTU2NCwgNjU1NzAsIDY1NTc1LCA2NTU3OSwgNjU1ODQsIAorICAgIDY1NTg5LCA2NTU5MywgNjU1OTgsIDY1NjAzLCA2NTYwOCwgNjU2MTQsIDY1NjIwLCA2NTYyNSwgNjU2MjksIDY1NjM0LCAKKyAgICA2NTYzOSwgNjU2NDMsIDY1NjQ4LCA2NTY1MywgNjU2NTgsIDY1NjYzLCA2NTY2NywgNjU2NzAsIDY1NjczLCA2NTY3OCwgCisgICAgNjU2ODMsIDM0NDEyLCA2NTY5MCwgNjU2OTgsIDM2OTAsIDMwMTExLCA2NTcwNCwgNjU3MTEsIDY1NzE3LCAzODI5LCAKKyAgICAxMjEzMCwgNjU3MjMsIDY1NzMzLCA2NTc0OCwgNjU3NTYsIDEyMTM1LCA2NTc2NywgNjU3NzIsIDY1NzgzLCA2NTc5NSwgCisgICAgNjU4MDcsIDY1ODE5LCAyNzIzLCA2NTgzMSwgNjU4MzYsIDY1ODQ4LCA2NTg1MiwgNjU4NTgsIDY1ODY0LCA2NTg2OSwgCisgICAgNjU4NzgsIDE2NDEsIDE3NTY1LCA2NTg4NSwgNjU4OTAsIDQ0Mzc1LCA2NTg5NCwgNjU4OTgsIDY1OTAzLCA2NTkwNywgCisgICAgMTg0NzksIDY1OTEyLCA2NTkxNSwgNjU5MjAsIDY1OTI4LCA2NTkzNiwgMTY0NSwgMTIxNzEsIDEyMTc3LCAxNjUwLCAKKyAgICA2NTk0NCwgNjU5NTEsIDY1OTU2LCA2NTk2NSwgNjU5NzUsIDY1OTgyLCA2NTk4NywgNjU5OTIsIDE2NTUsIDY1OTk5LCAKKyAgICA2NjAwNCwgMTg1OTksIDY2MDA4LCA2NjAxMywgNjYwMjAsIDY2MDI2LCA2NjAzMCwgNjYwNDEsIDY2MDUxLCA2NjA1OCwgCisgICAgMTg2MjEsIDk4MjMsIDk4MzAsIDQwMjcsIDQwMzMsIDY2MDY1LCAxNjYwLCA2NjA3MCwgNjYwNzYsIDY2MDg0LCA2NjA5MSwgCisgICAgNjYwOTcsIDY2MTA0LCA2NjExNiwgNjYxMjIsIDY2MTI3LCA2NjEzOSwgNjYxNTAsIDY2MTU5LCA2NjE2OSwgMzk1NywgCisgICAgNjYxNzcsIDMzNTE1LCAzMzUyNCwgMTg2NjEsIDE2NjUsIDE2NjksIDY2MTkwLCA2NjE5NCwgNjYxOTcsIDY2MjA4LCAKKyAgICA2NjIxMywgMTY3OSwgNjYyMjEsIDY2MjI2LCA2NjIzMSwgMTg3MjAsIDY2MjQzLCA2NjI0NiwgNjYyNTIsIDY2MjU4LCAKKyAgICA2NjI2MywgNjYyNzEsIDE2ODQsIDY2Mjc2LCA2NjI4MSwgNjYyODksIDY2Mjk3LCA2NjMwNCwgNjYzMTMsIDY2MzIxLCAKKyAgICA2NjMzMCwgMTY4OSwgNjYzMzQsIDE2OTQsIDIzMjA4LCA2NjMzOSwgNjYzNDYsIDE4ODAwLCA2NjM1NCwgNjYzNjQsIAorICAgIDY2MzcwLCA2NjM3NSwgNjYzODMsIDY2MzkwLCA2NjM5OSwgNjY0MDcsIDY2NDE3LCA2NjQyNiwgNjY0MzYsIDY2NDQ1LCAKKyAgICA2NjQ1NiwgNjY0NjYsIDY2NDc2LCA2NjQ4NSwgNjY0OTUsIDY2NTA5LCA2NjUyMiwgNjY1MzEsIDY2NTM5LCA2NjU0OSwgCisgICAgNjY1NTgsIDY2NTcwLCA2NjU4MSwgNjY1OTIsIDY2NjAyLCAxODExMiwgNjY2MDcsIDEyMzIzLCA2NjYxNiwgNjY2MjIsIAorICAgIDY2NjI3LCA2NjYzNCwgNjY2NDEsIDY2NjQ3LCAxNzc3MSwgNjY2NTcsIDY2NjYzLCA2NjY2OCwgNjY2NzksIDY2Njg0LCAKKyAgICA2NjY5MiwgMTIzNDAsIDEyMzQ1LCA2NjcwMCwgNjY3MDYsIDY2NzEwLCA2NjcxOCwgNDAyMiwgMTg4NjksIDQ0NDY4LCAKKyAgICA2NjcyMywgNjY3MjksIDY2NzM0LCA2Njc0MiwgNjY3NDksIDEzMjg5LCA2Njc1NCwgNjY3NjAsIDE3MDUsIDY2NzY1LCAKKyAgICA2Njc2OCwgMTQxOSwgNjY3NzQsIDY2Nzc5LCA2Njc4NCwgNjY3OTAsIDY2Nzk1LCA2NjgwMCwgNjY4MDUsIDY2ODEwLCAKKyAgICA2NjgxNSwgNjY4MjAsIDE3MTQsIDEzLCA2NjgyNiwgNjY4MzAsIDY2ODM1LCA2NjgzOSwgNjY4NDMsIDY2ODQ3LCAzNDY1MiwgCisgICAgNjY4NTIsIDI1Mjk2LCA2Njg1NywgNjY4NjIsIDY2ODY2LCA2Njg2OSwgNjY4NzMsIDY2ODc3LCA2Njg4MiwgNjY4ODYsIAorICAgIDY2ODkxLCA2Njg5NSwgNjY5MDEsIDM3OTEwLCAzNzkxNSwgMzc5MjAsIDY2OTA0LCA2NjkxMSwgNjY5MTcsIDY2OTI1LCAKKyAgICA0NDEzOSwgNjY5MzUsIDM3OTI2LCAzNDkxNiwgMzQ2NjcsIDM0NjczLCAzNzk0MiwgMzQ2NzksIDY2OTQwLCA2Njk0NSwgCisgICAgMzQ5NDksIDY2OTQ5LCA2Njk1MiwgNjY5NTYsIDY2OTY0LCA2Njk3MSwgNjY5NzQsIDY2OTc5LCA2Njk4NCwgNjY5ODgsIAorICAgIDY2OTkyLCA2Njk5NSwgNjcwMDUsIDY3MDE3LCA2NzAyNCwgNjcwMzAsIDM0Njg0LCA2NzAzNywgMzY0NDMsIDY3MDQwLCAKKyAgICA4OTc0LCAxMDUyLCA2NzA0MywgNjcwNDcsIDY3MDUyLCAzODcyLCA2NzA1NiwgNjcwNTksIDE0OTM3LCA2NzA2NiwgNjcwNzMsIAorICAgIDY3MDg2LCA2NzA5NCwgNjcxMDMsIDY3MTEyLCA2NzExNywgNjcxMjcsIDY3MTQwLCA2NzE1MiwgNjcxNTksIDY3MTY0LCAKKyAgICA2NzE3MywgNjcxODYsIDM5NDQ5LCA2NzIwNCwgNjcyMDksIDY3MjE2LCA2NzIyMiwgNjcyMjcsIDgzNSwgNjcyMzIsIAorICAgIDY3MjQwLCA2NzI0NywgNjcyNTQsIDI5NjU4LCA4MDMsIDY3MjYwLCA2NzI2NiwgNjcyNzYsIDY3Mjg0LCA2NzI5MCwgCisgICAgNjcyOTUsIDM0NzAzLCA2MzM0LCAzNDcxNywgNjcyOTksIDY3MzA5LCA2NzMxNCwgNjczMjIsIDY3MzMyLCA2NzM0NywgCisgICAgNjczNTMsIDY3MzU5LCAzNDcyNywgNjczNjQsIDMzODM4LCA2NzM2OCwgNjczNzMsIDY3MzgwLCA2NzM4NSwgNjczODksIAorICAgIDY3Mzk0LCAxODY2NCwgNjc0MDEsIDY3NDA2LCA2NzQxMCwgNjM3NSwgMzQ3NTMsIDY3NDE0LCA2NzQyMCwgMzI1LCA2NzQzMCwgCisgICAgNjc0MzcsIDY3NDQzLCA2NzQ1MCwgNjc0NTUsIDY3NDY0LCAxNDU3MywgNjQxNzUsIDY0MTg1LCA2NzQ3MCwgNjc0NzgsIAorICAgIDY3NDgyLCA2NzQ4NiwgNjc0OTAsIDY3NDk0LCA2NzQ5OSwgNjc1MDMsIDY3NTA5LCA2NzUxNywgNjc1MjIsIDY3NTI3LCAKKyAgICA2NzUzMiwgNjc1MzYsIDY3NTQxLCA2NzU0NSwgNjc1NDksIDY3NTU1LCA2NzU2MSwgNjc1NjYsIDY3NTcwLCA2NzU3NSwgCisgICAgMzQ4NzcsIDY3NTc5LCAzNDg4MywgMzQ4ODksIDY3NTg0LCA2NzU5MCwgNjc1OTcsIDY3NjAyLCA2NzYwNiwgMzM4NTUsIAorICAgIDE4MzMxLCA2NzYwOSwgNjc2MTMsIDY3NjE4LCA2NzYyNSwgNjc2MzEsIDY3NjM1LCA2NzY0MCwgNDM4MDQsIDY3NjQ2LCAKKyAgICA2NzY1MCwgNjc2NTcsIDY3NjYxLCA2NzY2NiwgNjc2NzIsIDY3Njc4LCA2NzY4NCwgNjc2OTYsIDY3NzA1LCA2NzcxNSwgCisgICAgNjc3MjEsIDY3NzI4LCA2NzczMywgNjc3MzgsIDY3NzQyLCA2Nzc0NSwgNjc3NTEsIDY3NzU4LCA2Nzc2MywgNjc3NjgsIAorICAgIDY3Nzc1LCA2Nzc4MiwgNjc3ODksIDY3Nzk1LCA2NzgwMCwgNjc4MDUsIDY3ODEzLCAzNDg5NCwgMjQ0NywgNjc4MTgsIAorICAgIDY3ODIzLCA2NzgyOSwgNjc4MzQsIDY3ODQwLCA2Nzg0NSwgNjc4NTAsIDY3ODU1LCA2Nzg2MSwgMzQ5MTUsIDY3ODY2LCAKKyAgICA2Nzg3MiwgNjc4NzgsIDY3ODg0LCAzNDk4NSwgNjc4ODksIDY3ODk0LCA2Nzg5OSwgMzQ5OTYsIDY3OTA0LCA2NzkwOSwgCisgICAgNjc5MTQsIDY3OTIwLCA2NzkyNiwgMzUwMDEsIDY3OTMxLCA2NzkzNiwgNjc5NDEsIDM1MDU2LCAzNTA2MiwgNjc5NDYsIAorICAgIDY3OTUxLCAzNTA2NywgMzUwODksIDMwNDEwLCAzNTA5NSwgMzUwOTksIDY3OTU2LCAxMzAxOSwgNjc5NjAsIDY3OTY4LCAKKyAgICA2Nzk3NCwgNjc5ODIsIDY3OTg5LCA2Nzk5NSwgNjgwMDUsIDY4MDExLCA2ODAxOCwgMTE2NTQsIDM1MTEzLCA2ODAyNCwgCisgICAgNjgwMzcsIDY4MDQ2LCA2ODA1MiwgNjgwNjEsIDY4MDY3LCAyNTYwNiwgNjgwNzQsIDY4MDgxLCA2ODA5MSwgNjgwOTksIAorICAgIDY4MTAyLCAzNTA1NywgNjgxMDcsIDY4MTE0LCA2ODExOSwgNjgxMjMsIDY4MTI3LCA2ODEzMiwgNjgxMzYsIDQxNDcsIAorICAgIDY4MTQxLCA2ODE0NiwgNjgxNTEsIDM4MDA0LCAzODAwOSwgNjgxNTUsIDM4MDIzLCA2ODE2MCwgMzgwMjgsIDY4MTY1LCAKKyAgICA2ODE3MSwgMzgwNDAsIDM4MDQ2LCAzODA1MiwgNjgxNzYsIDY4MTgyLCAyNDU3NSwgNjgxOTMsIDY4MTk2LCA2ODIwOCwgCisgICAgNjgyMTYsIDM1MTM2LCA2ODIyMCwgNjgyMjksIDY4MjM5LCA2ODI0OCwgMzUxNDYsIDY4MjUzLCA2ODI2MCwgNjgyNjksIAorICAgIDY4Mjc1LCA2ODI4MywgNjgyOTAsIDY0MjYsIDQ2OTMsIDY4Mjk1LCAzNTA2OCwgNjgzMDEsIDY4MzA0LCA2ODMxMCwgCisgICAgNjgzMTcsIDY4MzIyLCA2ODMyNywgMjU1MTYsIDY4MzMxLCA2ODMzNywgNjgzNDMsIDY4MzQ4LCA2ODM1MywgNjgzNTcsIAorICAgIDY4MzYzLCA2ODM2OSwgMzYzNDksIDEwODQsIDM5MDk5LCA0MDgzNCwgNDA4NDAsIDM1MTc3LCAzNTE4MiwgNjgzNzQsIAorICAgIDY4Mzc4LCA2ODM4MiwgNjgzODUsIDY4Mzk4LCA2ODQwNCwgNjg0MDgsIDY4NDExLCA2ODQxNiwgMzY2ODYsIDY4NDIwLCAKKyAgICAzMzg2MCwgMjMxNTgsIDY4NDI2LCA2MzU1LCA2MzYzLCA5NjYwLCA2ODQyOSwgNjg0MzQsIDY4NDM5LCA2ODQ0NCwgNjg0NDksIAorICAgIDY4NDU0LCA2ODQ1OSwgNjg0NjQsIDY4NDY5LCA2ODQ3NCwgNjg0ODAsIDY4NDg1LCA2ODQ5MCwgNjg0OTYsIDY4NTAxLCAKKyAgICA2ODUwNiwgNjg1MTEsIDY4NTE2LCA2ODUyMSwgNjg1MjYsIDY4NTMyLCA2ODUzNywgNjg1NDMsIDY4NTQ4LCA2ODU1MywgCisgICAgNjg1NTgsIDY4NTYzLCA2ODU2OCwgNjg1NzMsIDY4NTc4LCA2ODU4MywgNjg1ODgsIDY4NTkzLCA2ODU5OSwgNjg2MDQsIAorICAgIDY4NjA5LCA2ODYxNCwgNjg2MTksIDY4NjI0LCA2ODYyOSwgNjg2MzUsIDY4NjQwLCA2ODY0NSwgNjg2NTAsIDY4NjU1LCAKKyAgICA2ODY2MCwgNjg2NjUsIDY4NjcwLCA2ODY3NSwgNjg2ODAsIDY4Njg2LCA2ODY5MSwgNjg2OTYsIDY4NzAxLCA2ODcwNiwgCisgICAgNjg3MTIsIDY4NzE4LCA2ODcyMywgNjg3MjksIDY4NzM0LCA2ODczOSwgNjg3NDQsIDY4NzQ5LCA2ODc1NCwgMTQ5MiwgMTU2LCAKKyAgICA2ODc1OSwgNjg3NjMsIDY4NzY3LCA2ODc3MSwgMjczMDYsIDY4Nzc1LCA2ODc3OSwgNjg3ODQsIDY4Nzg4LCA2ODc5MywgCisgICAgNjg3OTcsIDY4ODAyLCA2ODgwNywgNjg4MTIsIDY4ODE2LCA2ODgyMCwgNjg4MjUsIDY4ODI5LCAxNDY1MiwgNjg4MzQsIAorICAgIDY4ODM4LCA2ODg0NSwgNjg4NTUsIDE2NzE4LCA2ODg2NCwgNjg4NzMsIDY4ODc3LCA2ODg4MiwgNjg4ODcsIDY4ODkxLCAKKyAgICA2ODg5NSwgMjcxMDAsIDMwNjcsIDY4ODk5LCA2ODkwNSwgMTkxNDQsIDY4OTA5LCA2ODkxOCwgNjg5MjYsIDY4OTMyLCAKKyAgICA2ODkzNywgNjg5NDksIDY4OTYxLCA2ODk2NiwgNjg5NzAsIDY4OTc1LCA2ODk3OSwgNjg5ODUsIDY4OTkxLCA2ODk5NiwgCisgICAgNjkwMDYsIDY5MDE2LCA2OTAyMiwgNjkwMjcsIDY5MDMxLCA2OTAzNywgNjkwNDIsIDY5MDQ5LCA2OTA1NSwgNjkwNjAsIAorICAgIDY5MDY5LCA2OTA3OCwgNjkwODYsIDY5MDkwLCAxNzEyOSwgNjkwOTMsIDY5MTAyLCA2OTExMCwgNjkxMjIsIDY5MTMzLCAKKyAgICA2OTE0NCwgNjkxNTMsIDY5MTU3LCA2OTE2NiwgNjkxNzQsIDY5MTg0LCA2OTE5MiwgNjkxOTksIDY5MjA1LCA2OTIxMCwgCisgICAgNjkyMTksIDY5MjI1LCA2OTIzMCwgNjkyNDEsIDYwLCAzMzY1OCwgNjkyNDcsIDI4NTg2LCAyODU5NiwgNjkyNTMsIDY5MjYxLCAKKyAgICA2OTI2OCwgNjkyNzQsIDY5Mjc4LCA2OTI4OCwgNjkyOTksIDY5MzA3LCA2OTMxNiwgNjkzMjEsIDY5MzI2LCA2OTMzMSwgCisgICAgNjkzMzUsIDY5MzM5LCAxOTA5OCwgNjkzNDcsIDY5MzUxLCA2OTM1NywgNjkzNjcsIDY5Mzc0LCA2OTM4MCwgNjkzODYsIAorICAgIDM4MTAzLCA2OTM5MCwgNjkzOTIsIDY5Mzk1LCA2OTQwMSwgNjk0MDUsIDY5NDE2LCA2OTQyNiwgNjk0MzIsIDY5NDM5LCAKKyAgICA2OTQ0NiwgMTQ1ODksIDY5NDU0LCA2OTQ2MCwgNjk0NjksIDY5NDc4LCA2OTQ4NCwgMTA3MTMsIDY5NDkwLCA2OTQ5NiwgCisgICAgNjk1MDEsIDY5NTA2LCA2OTUxMywgNjk1MTgsIDY5NTI1LCA2OTUzMSwgNjk1MzYsIDY5NTQ0LCA2OTU1NywgNjk1NjYsIAorICAgIDY5NTc1LCA2NjQ3MSwgNjY0ODEsIDY5NTg1LCA2OTU5MSwgNjk1OTcsIDY5NjA0LCA2OTYxMSwgNjk2MTgsIDY5NjI1LCAKKyAgICA2OTYzMiwgNjk2MzcsIDY5NjQxLCA2OTY0NSwgNjk2NDgsIDY5NjU4LCA2OTY2MiwgNjk2NzQsIDY5NjgzLCA2OTY4NywgCisgICAgNjk2OTgsIDY5NzAzLCA2OTcwNywgNjY0OTAsIDY5NzEzLCA2OTcyMCwgNjk3MjksIDY5NzM3LCA2OTc0NSwgNjk3NTAsIAorICAgIDY5NzU0LCA2OTc1OSwgNjk3NjQsIDY5Nzc0LCA2OTc4MiwgNjk3ODcsIDY5NzkxLCA2OTc5NSwgNjk4MDEsIDY5ODA5LCAKKyAgICA2OTgxNiwgNjk4MjgsIDY5ODM2LCA2OTg0NywgNjk4NTQsIDY5ODYwLCA2OTg3MCwgNjk4NzYsIDY5ODgwLCA2OTg4OSwgCisgICAgNjk4OTgsIDY5OTA1LCA2OTkxMSwgNjk5MTYsIDY5OTIwLCA2OTkyNCwgNjk5MjgsIDY5OTM3LCA2OTk0NiwgNjk5NTUsIAorICAgIDY5OTYxLCA2OTk2NywgNjk5NzMsIDY5OTc4LCA2OTk4NSwgNjk5OTEsIDY5OTk5LCA3MDAwNiwgNzAwMTIsIDEzNzMyLCAKKyAgICA3MDAxNywgNzAwMjMsIDcwMDI3LCAxNTY0NiwgNzAwMzEsIDcwMDM2LCA3MDA0NiwgNzAwNTUsIDcwMDYxLCA3MDA2NywgCisgICAgNzAwNzUsIDcwMDgyLCA3MDA4NiwgNzAwOTAsIDcwMDk3LCA3MDEwMywgNzAxMTEsIDcwMTE4LCA3MDEyNCwgNzAxMzUsIAorICAgIDcwMTM5LCA3MDE0MywgNzAxNDcsIDcwMTUwLCA3MDE1NiwgNzAxNjEsIDcwMTY2LCA3MDE3MCwgNzAxNzQsIDcwMTgzLCAKKyAgICA3MDE5MSwgNzAxOTgsIDcwMjA0LCA3MDIxMSwgMjYxODksIDQzODczLCA3MDIxNiwgNzAyMjQsIDcwMjI4LCA3MDIzMiwgCisgICAgNzAyMzUsIDcwMjQzLCA3MDI1MCwgNzAyNTYsIDcwMjY1LCA3MDI3MywgNzAyNzksIDcwMjg0LCA3MDI4OCwgNzAyOTMsIAorICAgIDcwMjk4LCA3MDMwMiwgNzAzMDYsIDcwMzEwLCA3MDMxNSwgNzAzMjQsIDcwMzI4LCA3MDMzNSwgNDA5NDMsIDcwMzM5LCAKKyAgICA3MDM0NSwgNzAzNDksIDcwMzU3LCA3MDM2MywgNzAzNjgsIDcwMzc5LCA3MDM4NywgNzAzOTMsIDcwNDAyLCAyNDcyMiwgCisgICAgNzA0MTAsIDcwNDE3LCA3MDQyNCwgNzA0MzEsIDcwNDM4LCA3MDQ0NSwgNDcyMDMsIDE0NDI3LCA3MDQ1MiwgNzA0NTksIAorICAgIDcwNDY0LCAzODEzOSwgNDM1OSwgNzA0NzAsIDcwNDc1LCA3MDQ4MCwgNzA0ODYsIDcwNDkyLCA3MDQ5OCwgNzA1MDMsIAorICAgIDcwNTA4LCA3MDUxMywgNzA1MTgsIDcwNTI0LCA3MDUyOSwgNzA1MzUsIDcwNTQwLCA3MDU0NiwgNzA1NTEsIDcwNTU2LCAKKyAgICA3MDU2MSwgNzA1NjYsIDcwNTcxLCA3MDU3NiwgNzA1ODEsIDcwNTg3LCA3MDU5MiwgNzA1OTgsIDcwNjAzLCA3MDYwOCwgCisgICAgNzA2MTMsIDcwNjE4LCA3MDYyMywgNzA2MjgsIDcwNjM0LCA3MDYzOSwgNzA2NDQsIDcwNjQ5LCA3MDY1NCwgNzA2NTksIAorICAgIDcwNjY0LCA3MDY2OSwgNzA2NzQsIDcwNjc5LCA3MDY4NCwgNzA2OTAsIDcwNjk1LCA3MDcwMCwgNzA3MDUsIDcwNzEwLCAKKyAgICA3MDcxNSwgNzA3MjAsIDcwNzI1LCA3MDczMCwgNzA3MzYsIDcwNzQxLCA3MDc0NiwgNzA3NTEsIDcwNzU2LCA3MDc2MSwgCisgICAgNzA3NjYsIDcwNzcxLCA3MDc3NiwgNzA3ODEsIDcwNzg2LCA3MDc5MSwgNzA3OTYsIDcwODAyLCAxODM5LCAyNzIsIDcwODA3LCAKKyAgICA0MTgwMywgNzA4MTEsIDcwODE0LCA3MDgxOSwgNzA4MjMsIDcwODI2LCAzNDA0LCA3MDgzMSwgNzA4MzYsIDcwODQwLCAKKyAgICA3MDg0OSwgNzA4NjAsIDcwODc3LCA3MDg5NSwgNjk3NDEsIDcwOTAzLCA3MDkwNiwgNzA5MTYsIDcwOTIzLCA3MDkzMiwgCisgICAgNzA5NDgsIDcwOTU3LCA3MDk2NywgNzA5NzIsIDcwOTgyLCA3MDk5MSwgNzA5OTksIDcxMDEzLCA3MTAyMSwgNzEwMjUsIAorICAgIDcxMDI4LCA3MTAzNSwgNzEwNDEsIDcxMDUyLCA3MTA1OSwgNzEwNzEsIDcxMDgyLCA3MTA5MywgNzExMDIsIDcxMTA5LCAKKyAgICAxMjU5LCA3MjcsIDcxMTE5LCAyNjE4LCA3MTEyMywgNzExMjgsIDcxMTM3LCA5Mjc2LCAxOTA3MSwgMjI2NTUsIDcxMTQ1LCAKKyAgICA3MTE1MywgNzExNjcsIDcxMTgwLCA3MTE4NCwgNzExODksIDcxMTk0LCA3MTE5OSwgNzEyMDUsIDcxMjExLCA3MTIxNiwgCisgICAgODk2NiwgMTY3NDYsIDcxMjIxLCA3MTIyNSwgNzEyMzMsIDkzODQsIDcxMjM4LCA3MTI0NCwgNzEyNTMsIDcxMjYxLCAxNzE3LCAKKyAgICAxMjE4NCwgOTM1LCA2NDg5LCA3MTI2NSwgNzEyNjksIDcxMjc4LCA3MTI4OCwgMjQwNCwgMjkzODIsIDcxMjk3LCA3MTMwMywgCisgICAgMTg1NzEsIDI5Mzk3LCA3MTMwOSwgNDIwNywgMTI1NjIsIDcxMzE1LCA3MTMyMiwgNjYyMDMsIDcxMzI2LCA3MTMzMCwgCisgICAgNzEzMzYsIDcxMzQxLCA3MTM0NiwgMzYyMywgMTYwLCAzNjQ5LCA3MTM1MSwgNzEzNjMsIDcxMzY3LCA3MTM3MywgNzEzNzgsIAorICAgIDMwMTgxLCA3MTM4MiwgMTI1NTAsIDI3NTgsIDQsIDcxMzg3LCA3MTM5NywgNzE0MDgsIDcxNDE0LCA3MTQyNSwgNzE0MzIsIAorICAgIDcxNDM4LCA3MTQ0NCwgNzE0NTIsIDcxNDU5LCA3MTQ2NSwgNzE0NzUsIDcxNDg1LCA3MTQ5NSwgNzE1MDQsIDI1NTkzLCAKKyAgICAxMjcxLCA3MTUwOSwgNzE1MTMsIDcxNTE3LCA3MTUyMywgNzE1MjcsIDI3ODEsIDI3ODcsIDg5NjMsIDIyNzksIDcxNTMxLCAKKyAgICA3MTUzNSwgNzE1NDQsIDcxNTUyLCA3MTU2MywgNzE1NzEsIDcxNTc5LCA3MTU4NSwgNzE1OTAsIDcxNjAxLCA3MTYxMiwgCisgICAgNzE2MjAsIDcxNjI2LCA3MTYzMSwgMTA1MzIsIDcxNjQxLCA3MTY0OSwgNzE2NTMsIDcxNjU3LCA3MTY2MiwgNzE2NjYsIAorICAgIDcxNjc4LCAzMDU5NywgMTY2NzEsIDcxNjg1LCA3MTY5NSwgNzE3MDEsIDcxNzA3LCAxMDYzNCwgNzE3MTcsIDcxNzI4LCAKKyAgICA3MTczOSwgNzE3NDksIDcxNzU4LCA3MTc2MiwgNzE3NjksIDE3MzEsIDEwMjksIDcxNzc5LCA3MTc4NCwgNzE3OTIsIAorICAgIDY2MDA5LCA3MTgwMCwgNzE4MDUsIDcxODE2LCA3MTgyMywgNzE4MzcsIDE1NDgzLCA0ODQsIDcxODQ3LCA3MTg1MSwgCisgICAgNzE4NTUsIDcxODYzLCA3MTg3MiwgNzE4ODAsIDcxODg2LCA3MTkwMCwgNzE5MDcsIDcxOTEzLCA3MTkyMiwgNzE5MjksIAorICAgIDcxOTM5LCA3MTk0NywgNzE5NTQsIDcxOTYyLCA3MTk2OSwgNDAyOSwgMTQ0LCA3MTk3NywgNzE5ODgsIDcxOTkyLCA3MjAwNCwgCisgICAgNzIwMTAsIDEyNzQzLCAxOTgsIDcyMDE1LCA5OTYxLCA3MjAyMCwgMjgyNiwgNzIwMjQsIDcyMDMxLCA3MjAzNywgNzIwNDgsIAorICAgIDcyMDU2LCA3MjA2MywgOTMzNSwgNzIwNzAsIDcyMDc5LCA3MjA4NywgNDEwNywgNzIxMDAsIDQxMjQsIDcyMTA0LCA3MjEwOSwgCisgICAgNzIxMTUsIDcyMTIwLCA3MjEyNSwgNzIxMzAsIDI4MzEsIDUyMCwgNzIxMzYsIDcyMTQ5LCA3MjE1MywgNzIxNTgsIDI4MzYsIAorICAgIDE4MzgsIDgyOSwgNzIxNjIsIDQxMjgsIDcyMTcwLCA3MjE3NiwgNzIxODAsIDg3MywgNzIxOTAsIDcyMTk5LCA3MjIwNCwgCisgICAgMzY0MCwgNzIyMDgsIDE2NDI3LCAxNjQzNCwgNTA1NjUsIDcyMjEyLCA0MTU5LCA0MDM5LCAxNDMxMCwgNzIyMjAsIDcyMjI3LCAKKyAgICA3MjIzMiwgMjU2NTcsIDcyMjM2LCA3MjI0MywgNzIyNDksIDcyMjU0LCA3MjI1OSwgMTY0NDcsIDE5MiwgNzIyNjQsIAorICAgIDcyMjc2LCA3MjI4MiwgNzIyOTAsIDI4NDgsIDE3NDksIDcyMjk4LCA3MjMwMCwgNzIzMDUsIDcyMzEwLCA3MjMxNSwgCisgICAgNzIzMjEsIDcyMzI2LCA3MjMzMSwgNzIzMzYsIDcyMzQxLCA3MjM0NiwgNzIzNTEsIDcyMzU3LCA3MjM2MiwgNzIzNjcsIAorICAgIDcyMzcyLCA3MjM3NywgNzIzODIsIDcyMzg3LCA3MjM5MiwgNzIzOTcsIDcyNDAzLCA3MjQwOCwgNzI0MTMsIDcyNDE4LCAKKyAgICA3MjQyNCwgNzI0MjksIDcyNDM1LCA3MjQ0MCwgNzI0NDUsIDcyNDUwLCA3MjQ1NSwgNzI0NjAsIDcyNDY1LCA3MjQ3MCwgCisgICAgNzI0NzYsIDcyNDgxLCA3MjQ4NywgNzI0OTIsIDcyNDk3LCA3MjUwMiwgNzI1MDcsIDcyNTEyLCA3MjUxNywgNzI1MjIsIAorICAgIDcyNTI3LCA3MjUzMywgNzI1MzksIDcyNTQ0LCA3MjU0OSwgNzI1NTUsIDcyNTYwLCA3MjU2NCwgNzI1NjgsIDcyNTczLCAKKyAgICA3MjU3OSwgNzI1ODMsIDcyNTg5LCA3MjU5NCwgNzI1OTksIDcyNjA1LCA3MjYxMCwgNzI2MTQsIDcyNjE5LCA3MjYyNCwgCisgICAgNzI2MjgsIDcyNjMxLCA3MjYzMywgNzI2MzcsIDcyNjQwLCA3MjY0NywgNzI2NTIsIDcyNjU2LCA3MjY2MSwgNzI2NjUsIAorICAgIDcyNjY5LCA3MjY3MywgNzI2ODIsIDcyNjg2LCAzNTM4MiwgNzI2ODksIDM1Mzg3LCA3MjY5NiwgNzI3MDEsIDM1MzkyLCAKKyAgICA3MjcxMCwgNzI3MTksIDM1Mzk4LCA3MjcyNCwgMzU0MDMsIDcyNzMzLCA3MjczOCwgMTI3ODYsIDcyNzQyLCA3Mjc0NywgCisgICAgNzI3NTIsIDM1NDA4LCA3Mjc1NiwgNDUzOTgsIDcyNzYwLCA3Mjc2MywgNzI3NjcsIDg2MzQsIDcyNzczLCA3Mjc3NiwgCisgICAgNzI3ODEsIDcyNzg2LCA3Mjc5MCwgMzg4NywgMzU0MTMsIDcyNzkzLCA3Mjc5NywgNzI4MDAsIDcyODExLCA3MjgxNiwgCisgICAgNzI4MjAsIDcyODI2LCA3MjgzNCwgNzI4NDcsIDcyODU1LCA3Mjg2NCwgNzI4NzAsIDcyODc1LCA3Mjg4MSwgNzI4ODUsIAorICAgIDcyODkxLCA3Mjg5NywgNzI5MDUsIDcyOTEwLCA3MjkxNCwgNzI5MjEsIDcyOTI3LCA3MjkzNSwgNzI5NDQsIDcyOTUyLCAKKyAgICAzNTQxNiwgNzI5NTksIDcyOTY5LCA3Mjk4MiwgNzI5ODcsIDcyOTkyLCA3Mjk5NiwgNzMwMDUsIDczMDExLCA3MzAxOCwgCisgICAgNzMwMjksIDczMDQxLCA3MzA0OCwgNzMwNTcsIDczMDY2LCA3MzA3NSwgNzMwODIsIDczMDg4LCA3MzA5NSwgNzMxMDMsIAorICAgIDczMTEwLCA3MzExOCwgNzMxMjcsIDczMTM1LCA3MzE0MiwgNzMxNTAsIDczMTU5LCA3MzE2NywgNzMxNzYsIDczMTg2LCAKKyAgICA3MzE5NSwgNzMyMDMsIDczMjEwLCA3MzIxOCwgNzMyMjcsIDczMjM1LCA3MzI0NCwgNzMyNTQsIDczMjYzLCA3MzI3MSwgCisgICAgNzMyODAsIDczMjkwLCA3MzI5OSwgNzMzMDksIDczMzIwLCA3MzMzMCwgNzMzMzksIDczMzQ3LCA3MzM1NCwgNzMzNjIsIAorICAgIDczMzcxLCA3MzM3OSwgNzMzODgsIDczMzk4LCA3MzQwNywgNzM0MTUsIDczNDI0LCA3MzQzNCwgNzM0NDMsIDczNDUzLCAKKyAgICA3MzQ2NCwgNzM0NzQsIDczNDgzLCA3MzQ5MSwgNzM1MDAsIDczNTEwLCA3MzUxOSwgNzM1MjksIDczNTQwLCA3MzU1MCwgCisgICAgNzM1NTksIDczNTY5LCA3MzU4MCwgNzM1OTAsIDczNjAxLCA3MzYxMywgNzM2MjQsIDczNjM0LCA3MzY0MywgNzM2NTEsIAorICAgIDczNjU4LCA3MzY2NiwgNzM2NzUsIDczNjgzLCA3MzY5MiwgNzM3MDIsIDczNzExLCA3MzcxOSwgNzM3MjgsIDczNzM4LCAKKyAgICA3Mzc0NywgNzM3NTcsIDczNzY4LCA3Mzc3OCwgNzM3ODcsIDczNzk1LCA3MzgwNCwgNzM4MTQsIDczODIzLCA3MzgzMywgCisgICAgNzM4NDQsIDczODU0LCA3Mzg2MywgNzM4NzMsIDczODg0LCA3Mzg5NCwgNzM5MDUsIDczOTE3LCA3MzkyOCwgNzM5MzgsIAorICAgIDczOTQ3LCA3Mzk1NSwgNzM5NjQsIDczOTc0LCA3Mzk4MywgNzM5OTMsIDc0MDA0LCA3NDAxNCwgNzQwMjMsIDc0MDMzLCAKKyAgICA3NDA0NCwgNzQwNTQsIDc0MDY1LCA3NDA3NywgNzQwODgsIDc0MDk4LCA3NDEwNywgNzQxMTcsIDc0MTI4LCA3NDEzOCwgCisgICAgNzQxNDksIDc0MTYxLCA3NDE3MiwgNzQxODIsIDc0MTkzLCA3NDIwNSwgNzQyMTYsIDc0MjI4LCA3NDI0MSwgNzQyNTMsIAorICAgIDc0MjY0LCA3NDI3NCwgNzQyODMsIDc0MjkxLCA3NDI5OCwgNzQzMDYsIDc0MzE1LCA3NDMyMywgNzQzMzIsIDc0MzQyLCAKKyAgICA3NDM1MSwgNzQzNTksIDc0MzY4LCA3NDM3OCwgNzQzODcsIDc0Mzk3LCA3NDQwOCwgNzQ0MTgsIDc0NDI3LCA3NDQzNSwgCisgICAgNzQ0NDQsIDc0NDU0LCA3NDQ2MywgNzQ0NzMsIDc0NDg0LCA3NDQ5NCwgNzQ1MDMsIDc0NTEzLCA3NDUyNCwgNzQ1MzQsIAorICAgIDc0NTQ1LCA3NDU1NywgNzQ1NjgsIDc0NTc4LCA3NDU4NywgNzQ1OTUsIDc0NjA0LCA3NDYxNCwgNzQ2MjMsIDc0NjMzLCAKKyAgICA3NDY0NCwgNzQ2NTQsIDc0NjYzLCA3NDY3MywgNzQ2ODQsIDc0Njk0LCA3NDcwNSwgNzQ3MTcsIDc0NzI4LCA3NDczOCwgCisgICAgNzQ3NDcsIDc0NzU3LCA3NDc2OCwgNzQ3NzgsIDc0Nzg5LCA3NDgwMSwgNzQ4MTIsIDc0ODIyLCA3NDgzMywgNzQ4NDUsIAorICAgIDc0ODU2LCA3NDg2OCwgNzQ4ODEsIDc0ODkzLCA3NDkwNCwgNzQ5MTQsIDc0OTIzLCA3NDkzMSwgNzQ5NDAsIDc0OTUwLCAKKyAgICA3NDk1OSwgNzQ5NjksIDc0OTgwLCA3NDk5MCwgNzQ5OTksIDc1MDA5LCA3NTAyMCwgNzUwMzAsIDc1MDQxLCA3NTA1MywgCisgICAgNzUwNjQsIDc1MDc0LCA3NTA4MywgNzUwOTMsIDc1MTA0LCA3NTExNCwgNzUxMjUsIDc1MTM3LCA3NTE0OCwgNzUxNTgsIAorICAgIDc1MTY5LCA3NTE4MSwgNzUxOTIsIDc1MjA0LCA3NTIxNywgNzUyMjksIDc1MjQwLCA3NTI1MCwgNzUyNTksIDc1MjY5LCAKKyAgICA3NTI4MCwgNzUyOTAsIDc1MzAxLCA3NTMxMywgNzUzMjQsIDc1MzM0LCA3NTM0NSwgNzUzNTcsIDc1MzY4LCA3NTM4MCwgCisgICAgNzUzOTMsIDc1NDA1LCA3NTQxNiwgNzU0MjYsIDc1NDM3LCA3NTQ0OSwgNzU0NjAsIDc1NDcyLCA3NTQ4NSwgNzU0OTcsIAorICAgIDc1NTA4LCA3NTUyMCwgNzU1MzMsIDc1NTQ1LCA3NTU1OCwgNzU1NzIsIDc1NTg1LCA3NTU5NywgNzU2MDgsIDc1NjE4LCAKKyAgICA3NTYyNywgNzU2MzUsIDc1NjQyLCA3NTY0NywgODQ1MSwgNzU2NTQsIDM1NDI2LCA3NTY1OSwgNzU2NjQsIDM1NDMxLCAKKyAgICA3NTY3MCwgMjI3NjMsIDM1NDM2LCA3NTY3NSwgNzU2ODEsIDc1Njg5LCA3NTY5NSwgNzU3MDEsIDc1NzA4LCA3NTcxNSwgCisgICAgNzU3MjAsIDc1NzI1LCA3NTcyOSwgNzU3MzMsIDc1NzM2LCA3NTc0MCwgNzU3NDksIDc1NzU4LCA3NTc2NiwgNzU3NzIsIAorICAgIDc1Nzg0LCA3NTc5NSwgNzU3OTksIDMxMjksIDg0MjYsIDc1ODA0LCA3NTgwNywgNzU4MDksIDc1ODEzLCA3NTgxNywgCisgICAgNzU4MjEsIDc1ODI3LCA3NTgzMiwgMjgyNDAsIDc1ODM3LCA3NTg0MSwgNzU4NDQsIDc1ODQ5LCA3NTg1MywgNzU4NjAsIAorICAgIDc1ODY2LCA3NTg3MCwgNjUwOSwgNzU4NzQsIDM1NDUzLCA3NTg3OSwgNzU4ODYsIDc1ODk1LCA3NTkwMywgNzU5MTQsIAorICAgIDc1OTIyLCA3NTkzMSwgNzU5MzksIDc1OTQ2LCA3NTk1MywgNzU5NTksIDc1OTcwLCAzNTQ1OCwgNzU5NzUsIDc1OTg2LCAKKyAgICA3NTk5OCwgNzYwMDYsIDc2MDE3LCA3NjAyNiwgNzYwMzQsIDc2MDQ1LCA3NjA1MCwgNzYwNTgsIDI1ODAsIDc2MDYzLCAKKyAgICAzNzU1MiwgNzYwNzYsIDc2MDgwLCA3NjA5MiwgNzYxMDAsIDc2MTA1LCA3NjExMywgNzYxMjQsIDE5MjkxLCA3NjEzMywgCisgICAgNzYxMzksIDc2MTQ2LCA3NjE1NCwgNzYxNjAsIDM1NDY4LCA3NjE2NSwgNDE1MywgNjM1NzAsIDc2MTcyLCA3NjE3NSwgCisgICAgNzYxODMsIDc2MTk2LCA3NjIwOSwgNzYyMjIsIDc2MjM1LCA3NjI0MiwgNzYyNTMsIDc2MjYyLCA3NjI2NywgNDcwMjAsIAorICAgIDQ3MDI1LCA3NjI3MSwgNzYyNzUsIDc2MjgzLCA3NjI5MCwgNzYyOTksIDc2MzA3LCA3NjMxMywgNzYzMjIsIDc2MzMwLCAKKyAgICA3NjMzNywgNzYzNDUsIDc2MzQ5LCA3NjM1OCwgNzYzNjcsIDc2Mzc3LCA3NjM5MCwgNzY0MDMsIDc2NDEzLCAzNTQ3MywgCisgICAgNzY0MTksIDc2NDI2LCA3NjQzMiwgNzY0MzgsIDM1NDc5LCA3NjQ0MywgNzY0NDYsIDc2NDUwLCA3NjQ1OCwgNzY0NjcsIAorICAgIDQ2NzU4LCA3NjQ3NSwgNzY0ODQsIDc2NDkyLCA3NjQ5OSwgNzY1MDcsIDc2NTE3LCA3NjUyNiwgNzY1MzUsIDM2Nzg1LCAKKyAgICA3NjU0NCwgNzY1NTUsIDc2NTcwLCA3NjU4MCwgOTk5NCwgMjM0NjcsIDc2NTg5LCA3NjU5NCwgNzY1OTksIDc2NjAzLCAKKyAgICAxNzc2MywgNzY2MDgsIDc2NjEzLCA3NjYxOSwgNzY2MjQsIDc2NjI5LCA3NjYzNSwgNzY2NDAsIDc2NjQ1LCAyMzQzMiwgCisgICAgNzY2NTAsIDc2NjU3LCA3NjY2NSwgNzY2NzMsIDc2NjgxLCA3NjY4NiwgNzY2OTMsIDc2NzAwLCA3NjcwNSwgMjI1NywgCisgICAgNzY3MDksIDc2NzEzLCA3NjcyMSwgNzY3MjksIDM1NDk2LCA3NjczNSwgNzY3NDEsIDc2NzUzLCA3Njc1OSwgNzY3NjYsIAorICAgIDc2NzcwLCA3Njc3NywgNzY3ODIsIDc2Nzg5LCA3Njc5NSwgNzY4MDIsIDc2ODEzLCA3NjgyMywgNzY4MzMsIDc2ODQ1LCAKKyAgICA3Njg1MSwgNzY4NTksIDc2ODY1LCA3Njg3NSwgNzY4ODUsIDM1NTIzLCA3Njg5NCwgNzY5MDMsIDc2OTA5LCA3NjkyMSwgCisgICAgNzY5MzIsIDc2OTM5LCA3Njk0NCwgNzY5NDgsIDc2OTU2LCA3Njk2MiwgNzY5NjcsIDc2OTcyLCA3Njk3OSwgNzY5ODcsIAorICAgIDc2OTk5LCA3NzAwOSwgNzcwMTgsIDc3MDI3LCA3NzAzNSwgNzcwNDIsIDM3NDA1LCAyNTk5MCwgNzcwNDgsIDc3MDUzLCAKKyAgICA3NzA1NywgNzcwNjEsIDc3MDY2LCA3NzA3NCwgNzcwODAsIDc3MDkxLCA3NzEwNCwgNzcxMDksIDc3MTE2LCAzNTUyOCwgCisgICAgNzcxMjEsIDc3MTMzLCA3NzE0MiwgNzcxNTAsIDc3MTYwLCA3NzE3MSwgNzcxODQsIDc3MTkxLCA3NzIwMCwgNzcyMDksIAorICAgIDc3MjE3LCA3NzIyMiwgNzcyMjgsIDE0ODEsIDc3MjMzLCA3NzIzOCwgNzcyNDMsIDc3MjQ4LCA3NzI1NCwgNzcyNTksIAorICAgIDc3MjY0LCA3NzI3MCwgNzcyNzYsIDc3MjgxLCA3NzI4NSwgNzcyOTAsIDc3Mjk1LCA3NzMwMCwgNjQxMzAsIDc3MzA1LCAKKyAgICA3NzMxMCwgNzczMTUsIDc3MzIwLCA3NzMyNiwgNzczMzIsIDc3MzM3LCA3NzM0MSwgNzczNDYsIDE3NzYyLCA3NzM1MSwgCisgICAgNzczNTcsIDc3MzYyLCA3NzM2OCwgNzczNzMsIDc3Mzc4LCA3NzM4MywgNzczODgsIDc3MzkyLCA3NzM5OCwgNzc0MDMsIAorICAgIDc3NDEyLCA3NzQxNywgNzc0MjIsIDc3NDI3LCA3NzQzMiwgNzc0MzYsIDc3NDQzLCA3NzQ0OSwgNDQ1MCwgMTg5MTQsIAorICAgIDMwOTQsIDc3NDU0LCA3NzQ1OCwgNzc0NjMsIDc3NDY3LCA3NzQ3MSwgNzc0NzUsIDUwODIwLCA3NzQ3OSwgNzc0MDQsIAorICAgIDc3NDgxLCA3NzQ5MSwgMzU1MzcsIDc3NDk0LCA3NzQ5OSwgNzc1MDgsIDc3NTE0LCA2NDc4LCAzNTU0MiwgNzc1MTgsIAorICAgIDc3NTI0LCA3NzUyOSwgNzc1MzUsIDc3NTQwLCA3NzU0NCwgNzc1NTEsIDc3NTU2LCA3NzU2NiwgNzc1NzUsIDc3NTc5LCAKKyAgICA3NzU4NSwgNzc1OTEsIDc3NTk3LCA3NzYwMSwgNzc2MDksIDc3NjE2LCA3NzYyNCwgNzc2MzIsIDM1NTQ3LCA3NzYzOSwgCisgICAgNzc2NDIsIDc3NjQ5LCA3NzY1NSwgNzc2NjAsIDc3NjY0LCA3NzY3MCwgNzc2NzgsIDc3Njg1LCA3NzY5MCwgNzc2OTQsIAorICAgIDc3NzAzLCA3NzcxMSwgNzc3MTcsIDc3NzIyLCAzNTU1MiwgNzc3MjksIDc3NzQxLCA3Nzc0OCwgNzc3NTQsIDc3NzU5LCAKKyAgICA3Nzc2NSwgNzc3NzIsIDc3Nzc4LCAyMzE3MSwgMjk4NTUsIDc3Nzg0LCA3Nzc4OSwgNzc3OTUsIDc3Nzk5LCA3NzgxMSwgCisgICAgNzc0MzcsIDc3NDQ0LCAyMzM2NCwgNzc4MjEsIDc3ODI2LCA3NzgzMywgNzc4MzksIDc3ODQ2LCA3Nzg1MiwgNzc4NjMsIAorICAgIDc3ODY4LCA3Nzg3NiwgOTY5OSwgNzc4ODEsIDc3ODg0LCA3Nzg5MCwgNzc4OTQsIDc3ODk4LCA3NzkwMSwgNzc5MDcsIAorICAgIDc3OTEzLCAzNTI5MCwgNDQ1MSwgMTA5MywgMTQ3MDYsIDc3OTIwLCA3NzkyNiwgNzc5MzIsIDc3OTM4LCA3Nzk0NCwgCisgICAgNzc5NTAsIDc3OTU2LCA3Nzk2MiwgNzc5NjgsIDc3OTczLCA3Nzk3OCwgNzc5ODMsIDc3OTg4LCA3Nzk5MywgNzc5OTgsIAorICAgIDc4MDAzLCA3ODAwOCwgNzgwMTMsIDc4MDE4LCA3ODAyMywgNzgwMjgsIDc4MDMzLCA3ODAzOSwgNzgwNDQsIDc4MDQ5LCAKKyAgICA3ODA1NSwgNzgwNjAsIDc4MDY1LCA3ODA3MSwgNzgwNzcsIDc4MDgzLCA3ODA4OSwgNzgwOTUsIDc4MTAxLCA3ODEwNywgCisgICAgNzgxMTMsIDc4MTE5LCA3ODEyNCwgNzgxMjksIDc4MTM1LCA3ODE0MCwgNzgxNDUsIDc4MTUxLCA3ODE1NiwgNzgxNjEsIAorICAgIDc4MTY2LCA3ODE3MSwgNzgxNzYsIDc4MTgxLCA3ODE4NiwgNzgxOTEsIDc4MTk2LCA3ODIwMSwgNzgyMDYsIDc4MjExLCAKKyAgICA3ODIxNywgNzgyMjIsIDc4MjI3LCA3ODIzMiwgNzgyMzgsIDc4MjQzLCA3ODI0OCwgNzgyNTMsIDc4MjU4LCA3ODI2NCwgCisgICAgNzgyNjksIDc4Mjc0LCA3ODI3OSwgNzgyODQsIDc4Mjg5LCA3ODI5NCwgNzgyOTksIDc4MzA0LCA3ODMwOSwgNzgzMTQsIAorICAgIDc4MzE5LCA3ODMyNCwgNzgzMjksIDc4MzM0LCA3ODMzOSwgNzgzNDQsIDc4MzQ5LCA3ODM1NCwgNzgzNTksIDc4MzY1LCAKKyAgICA3ODM3MCwgNzgzNzUsIDc4MzgwLCA3ODM4NSwgNzgzOTAsIDc4Mzk1LCA3ODQwMCwgMTg3NSwgMTY5LCA3ODQwNSwgNzg0MDksIAorICAgIDc4NDEzLCA3ODQxOCwgNzg0MjYsIDc4NDMwLCA3ODQzNywgNzg0NDUsIDc4NDQ5LCA3ODQ2MiwgNzg0NzAsIDc4NDc1LCAKKyAgICA3ODQ4MCwgMjg2NDksIDc4NDg0LCA3ODQ4OSwgNzg0OTMsIDc4NDk4LCA3ODUwMiwgNzg1MTAsIDc4NTE0LCAyMjc3MSwgCisgICAgNzg1MTksIDc4NTIzLCA2NjcxNCwgNzg1MjcsIDc4NTMwLCA3ODUzOCwgNzg1NDYsIDc4NTU0LCA3ODU1OSwgNzg1NjQsIAorICAgIDc4NTcxLCA3ODU3OCwgNzg1ODQsIDc4NTkwLCA3ODU5NSwgNzg2MDIsIDc4NjA3LCA3ODYxNSwgNzExNzIsIDc4NjIyLCAKKyAgICA2NjUwMCwgNzg2MjcsIDc4NjMyLCA3ODYzNiwgNzg2NDMsIDY2NTI3LCAxMjg1MywgNzg2NDksIDc4NjU0LCA3ODY1OSwgCisgICAgNzg2NjMsIDc4NjY2LCA3ODY3NSwgNzg2ODEsIDc4Njg1LCA3ODY5NSwgNzg3MDQsIDc4NzA4LCA3ODcxMSwgNzg3MTUsIAorICAgIDc4NzIyLCA3ODczNSwgNzg3NDEsIDc4NzQ5LCA3ODc1OCwgNzg3NjksIDc4NzgwLCA3ODc5MSwgNzg4MDIsIDc4ODExLCAKKyAgICA3ODgxNywgNzg4MjYsIDc4ODM0LCA3ODg0NCwgNzg4NTcsIDc4ODY1LCA3ODg3MiwgNzg4ODMsIDc4ODg5LCA3ODg5NCwgCisgICAgNzg4OTksIDc4OTA1LCA3ODkxNSwgNzg5MjEsIDc4OTMxLCA3ODkzOCwgNzg5NDgsIDc4OTU3LCA3NzEyMywgNzg5NjUsIAorICAgIDc4OTcxLCA3ODk3OSwgNzg5ODUsIDc4OTkyLCA3OTAwMCwgNzkwMDUsIDc5MDA4LCA3OTAxMiwgNzkwMTgsIDc5MDIyLCAKKyAgICA3OTAyNSwgNzkwMzEsIDc5MDM3LCA3OTA0NSwgNzkwNTcsIDc5MDY5LCA3OTA3NiwgNzkwODEsIDc5MDg1LCA3OTA5NiwgCisgICAgNzkxMDQsIDc5MTExLCA3OTEyMywgNzkxMzEsIDc5MTM5LCA3OTE0NiwgNzkxNTIsIDc5MTU3LCA3OTE2NywgNzkxNzYsIAorICAgIDc5MTgxLCA3OTE5MSwgNzkyMDAsIDQ2MDM5LCA3OTIwNywgNzkyMTEsIDc5MjE2LCA3OTIyNCwgNzkyMzEsIDc5MjM3LCAKKyAgICA3OTI0MSwgNzkyNTEsIDc5MjYyLCA3OTI3MCwgNzkyNzcsIDc5Mjg5LCA3OTMwMSwgNzkzMTAsIDc2MDY2LCA3OTMxNywgCisgICAgNzkzMjcsIDc5MzM5LCA3OTM1MCwgNzkzNjQsIDc5MzcyLCA3OTM4MiwgNzkzODksIDc5Mzk3LCA3OTQxMCwgNzk0MjIsIAorICAgIDc5NDMxLCA3OTQzOSwgNzk0NDksIDc5NDYwLCA3OTQ3MiwgNzk0ODEsIDc5NDkxLCA3OTUwMSwgNzk1MTAsIDc5NTE3LCAKKyAgICA3OTUyNiwgNzk1NDEsIDc5NTQ5LCA3OTU1OSwgNzk1NjgsIDc5NTc2LCA3OTU4OSwgNjM1NDAsIDc5NjA0LCA3OTYxNCwgCisgICAgNzk2MjMsIDc5NjM1LCA3OTY0NSwgNzk2NTcsIDc5NjY4LCA3OTY4MiwgNzk2OTYsIDc5NzEwLCA3OTcyNCwgNzk3MzgsIAorICAgIDc5NzUyLCA3OTc2NiwgNzk3ODAsIDc5Nzk0LCA3OTgwOCwgNzk4MjIsIDc5ODM2LCA3OTg1MCwgNzk4NjQsIDc5ODc4LCAKKyAgICA3OTg5MiwgNzk5MDYsIDc5OTIwLCA3OTkzNCwgNzk5NDgsIDc5OTYyLCA3OTk3NiwgNzk5OTAsIDgwMDA0LCA4MDAxOCwgCisgICAgODAwMzIsIDgwMDQ2LCA4MDA2MCwgODAwNzQsIDgwMDg4LCA4MDEwMiwgODAxMTYsIDgwMTMwLCA4MDE0NCwgODAxNTgsIAorICAgIDgwMTcyLCA4MDE4NiwgODAyMDAsIDgwMjE0LCA4MDIyOCwgODAyNDIsIDgwMjU2LCA4MDI3MCwgODAyODQsIDgwMjk4LCAKKyAgICA4MDMxMiwgODAzMjYsIDgwMzQwLCA4MDM1NCwgODAzNjgsIDgwMzgyLCA4MDM5NiwgODA0MTAsIDgwNDI0LCA4MDQzOCwgCisgICAgODA0NTIsIDgwNDY2LCA4MDQ4MCwgODA0OTQsIDgwNTA4LCA4MDUyMiwgODA1MzYsIDgwNTUwLCA4MDU2NCwgODA1NzgsIAorICAgIDgwNTkyLCA4MDYwNiwgODA2MjAsIDgwNjM0LCA4MDY0OCwgODA2NjIsIDgwNjc2LCA4MDY5MCwgODA3MDQsIDgwNzE4LCAKKyAgICA4MDczMiwgODA3NDYsIDgwNzYwLCA4MDc3NCwgODA3ODgsIDgwODAyLCA4MDgxNiwgODA4MzAsIDgwODQ0LCA4MDg1OCwgCisgICAgODA4NzIsIDgwODg2LCA4MDkwMCwgODA5MTQsIDgwOTI4LCA4MDk0MiwgODA5NTYsIDgwOTcwLCA4MDk4NCwgODA5OTgsIAorICAgIDgxMDEyLCA4MTAyNiwgODEwNDAsIDgxMDU0LCA4MTA2OCwgODEwODIsIDgxMDk2LCA4MTExMCwgODExMjQsIDgxMTM4LCAKKyAgICA4MTE1MiwgODExNjYsIDgxMTgwLCA4MTE5NCwgODEyMDgsIDgxMjIyLCA4MTIzNiwgODEyNTAsIDgxMjY0LCA4MTI3OCwgCisgICAgODEyOTIsIDgxMzA2LCA4MTMyMCwgODEzMzQsIDgxMzQ4LCA4MTM2MiwgODEzNzYsIDgxMzkwLCA4MTQwNCwgODE0MTgsIAorICAgIDgxNDMyLCA4MTQ0NiwgODE0NjAsIDgxNDc0LCA4MTQ4OCwgODE1MDIsIDgxNTE2LCA4MTUzMCwgODE1NDQsIDgxNTU4LCAKKyAgICA4MTU3MiwgODE1ODYsIDgxNjAwLCA4MTYxNCwgODE2MjgsIDgxNjQyLCA4MTY1NiwgODE2NzAsIDgxNjg0LCA4MTY5OCwgCisgICAgODE3MTIsIDgxNzI2LCA4MTc0MCwgODE3NTQsIDgxNzY4LCA4MTc4MiwgODE3OTYsIDgxODEwLCA4MTgyNCwgODE4MzgsIAorICAgIDgxODUyLCA4MTg2NiwgODE4ODAsIDgxODk0LCA4MTkwOCwgODE5MjIsIDgxOTM2LCA4MTk1MCwgODE5NjQsIDgxOTc4LCAKKyAgICA4MTk5MiwgODIwMDYsIDgyMDIwLCA4MjAzNCwgODIwNDgsIDgyMDYyLCA4MjA3NiwgODIwOTAsIDgyMTA0LCA4MjExOCwgCisgICAgODIxMzIsIDgyMTQ2LCA4MjE2MCwgODIxNzQsIDgyMTg4LCA4MjIwMiwgODIyMTYsIDgyMjMwLCA4MjI0NCwgODIyNTgsIAorICAgIDgyMjcyLCA4MjI4NiwgODIzMDAsIDgyMzE0LCA4MjMyOCwgODIzNDIsIDgyMzU2LCA4MjM3MCwgODIzODQsIDgyMzk4LCAKKyAgICA4MjQxMiwgODI0MjYsIDgyNDQwLCA4MjQ1NCwgODI0NjgsIDgyNDgyLCA4MjQ5NiwgODI1MTAsIDgyNTI0LCA4MjUzOCwgCisgICAgODI1NTIsIDgyNTY2LCA4MjU4MCwgODI1OTQsIDgyNjA4LCA4MjYyMiwgODI2MzYsIDgyNjUwLCA4MjY2NCwgODI2NzgsIAorICAgIDgyNjkyLCA4MjcwNiwgODI3MjAsIDgyNzM0LCA4Mjc0OCwgODI3NjIsIDgyNzc2LCA4Mjc5MCwgODI4MDQsIDgyODE4LCAKKyAgICA4MjgzMiwgODI4NDYsIDgyODYwLCA4Mjg3NCwgODI4ODgsIDgyOTAyLCA4MjkxNiwgODI5MzAsIDgyOTQ0LCA4Mjk1OCwgCisgICAgODI5NzIsIDgyOTg2LCA4MzAwMCwgODMwMTQsIDgzMDI4LCA4MzA0MiwgODMwNTYsIDgzMDcwLCA4MzA4NCwgODMwOTgsIAorICAgIDgzMTEyLCA4MzEyNiwgODMxNDAsIDgzMTU0LCA4MzE2OCwgODMxODIsIDgzMTk2LCA4MzIxMCwgODMyMjQsIDgzMjM4LCAKKyAgICA4MzI1MiwgODMyNjYsIDgzMjgwLCA4MzI5NCwgODMzMDgsIDgzMzIyLCA4MzMzNiwgODMzNTAsIDgzMzY0LCA4MzM3OCwgCisgICAgODMzOTIsIDgzNDA2LCA4MzQyMCwgODM0MzQsIDgzNDQ4LCA4MzQ2MiwgODM0NzYsIDgzNDkwLCA4MzUwNCwgODM1MTgsIAorICAgIDgzNTMyLCA4MzU0NiwgODM1NjAsIDgzNTc0LCA4MzU4OCwgODM2MDIsIDgzNjE2LCA4MzYzMCwgODM2NDQsIDgzNjU4LCAKKyAgICA4MzY3MiwgODM2ODYsIDgzNzAwLCA4MzcxNCwgODM3MjgsIDgzNzQyLCA4Mzc1NiwgODM3NzAsIDgzNzg0LCA4Mzc5OCwgCisgICAgODM4MTIsIDgzODI2LCA4Mzg0MCwgODM4NTQsIDgzODY4LCA4Mzg4MiwgODM4OTYsIDgzOTEwLCA4MzkyNCwgODM5MzgsIAorICAgIDgzOTUyLCA4Mzk2NiwgODM5ODAsIDgzOTk0LCA4NDAwOCwgODQwMjIsIDg0MDM2LCA4NDA1MCwgODQwNjQsIDg0MDc4LCAKKyAgICA4NDA5MiwgODQxMDYsIDg0MTIwLCA4NDEzNCwgODQxNDgsIDg0MTYyLCA4NDE3NiwgODQxOTAsIDg0MjA0LCA4NDIxOCwgCisgICAgODQyMzIsIDg0MjQ2LCA4NDI2MCwgODQyNzQsIDg0Mjg4LCA4NDMwMiwgODQzMTYsIDg0MzMwLCA4NDM0NCwgODQzNTgsIAorICAgIDg0MzcyLCA4NDM4NiwgODQ0MDAsIDg0NDE0LCA4NDQyOCwgODQ0NDIsIDg0NDU2LCA4NDQ3MCwgODQ0ODQsIDg0NDk4LCAKKyAgICA4NDUxMiwgODQ1MjYsIDg0NTQwLCA4NDU1NCwgODQ1NjgsIDg0NTgyLCA4NDU5NiwgODQ2MTAsIDg0NjI0LCA4NDYzOCwgCisgICAgODQ2NTIsIDg0NjY2LCA4NDY4MCwgODQ2OTQsIDg0NzA4LCA4NDcyMiwgODQ3MzYsIDg0NzUwLCA4NDc2NCwgODQ3NzgsIAorICAgIDg0NzkyLCA4NDgwNiwgODQ4MjAsIDg0ODM0LCA4NDg0OCwgODQ4NjIsIDg0ODc2LCA4NDg5MCwgODQ5MDQsIDg0OTE4LCAKKyAgICA4NDkzMiwgODQ5NDYsIDg0OTYwLCA4NDk3NCwgODQ5ODgsIDg1MDAyLCA4NTAxNiwgODUwMzAsIDg1MDQ0LCA4NTA1OCwgCisgICAgODUwNzIsIDg1MDg2LCA4NTEwMCwgODUxMTQsIDg1MTI4LCA4NTE0MiwgODUxNTYsIDg1MTcwLCA4NTE4NCwgODUxOTgsIAorICAgIDg1MjEyLCA4NTIyNiwgODUyNDAsIDg1MjU0LCA4NTI2OCwgODUyODIsIDg1Mjk2LCA4NTMxMCwgODUzMjQsIDg1MzM4LCAKKyAgICA4NTM1MiwgODUzNjYsIDg1MzgwLCA4NTM5NCwgODU0MDgsIDg1NDIyLCA4NTQzNiwgODU0NTAsIDg1NDY0LCA4NTQ3OCwgCisgICAgODU0OTIsIDg1NTA2LCA4NTUyMCwgODU1MzQsIDg1NTQ4LCA4NTU2MiwgODU1NzYsIDg1NTkwLCA4NTYwNCwgODU2MTgsIAorICAgIDg1NjMyLCA4NTY0NiwgODU2NjAsIDg1Njc0LCA4NTY4OCwgODU3MDIsIDg1NzE2LCA4NTczMCwgODU3NDQsIDg1NzU4LCAKKyAgICA4NTc3MiwgODU3ODYsIDg1ODAwLCA4NTgxNCwgODU4MjgsIDg1ODQyLCA4NTg1NiwgODU4NzAsIDg1ODg0LCA4NTg5OCwgCisgICAgODU5MTIsIDg1OTI2LCA4NTk0MCwgODU5NTQsIDg1OTY4LCA4NTk4MiwgODU5OTYsIDg2MDEwLCA4NjAyNCwgODYwMzgsIAorICAgIDg2MDUyLCA4NjA2NiwgODYwODAsIDg2MDk0LCA4NjEwOCwgODYxMjIsIDg2MTM2LCA4NjE1MCwgODYxNjQsIDg2MTc4LCAKKyAgICA4NjE5MiwgODYyMDYsIDg2MjIwLCA4NjIzNCwgODYyNDgsIDg2MjYyLCA4NjI3NiwgODYyOTAsIDg2MzA0LCA4NjMxOCwgCisgICAgODYzMzIsIDg2MzQ2LCA4NjM2MCwgODYzNzQsIDg2Mzg4LCA4NjQwMiwgODY0MTYsIDg2NDMwLCA4NjQ0NCwgODY0NTgsIAorICAgIDg2NDcyLCA4NjQ4NiwgODY1MDAsIDg2NTE0LCA4NjUyOCwgODY1NDIsIDg2NTU2LCA4NjU3MCwgODY1ODQsIDg2NTk4LCAKKyAgICA4NjYxMiwgODY2MjYsIDg2NjQwLCA4NjY1NCwgODY2NjgsIDg2NjgyLCA4NjY5NiwgODY3MTAsIDg2NzI0LCA4NjczOCwgCisgICAgODY3NTIsIDg2NzY2LCA4Njc4MCwgODY3OTQsIDg2ODA4LCA4NjgyMiwgODY4MzYsIDg2ODUwLCA4Njg2NCwgODY4NzgsIAorICAgIDg2ODkyLCA4NjkwNiwgODY5MjAsIDg2OTM0LCA4Njk0OCwgODY5NjIsIDg2OTc2LCA4Njk5MCwgODcwMDQsIDg3MDE4LCAKKyAgICA4NzAzMiwgODcwNDYsIDg3MDYwLCA4NzA3NCwgODcwODgsIDg3MTAyLCA4NzExNiwgODcxMzAsIDg3MTQ0LCA4NzE1OCwgCisgICAgODcxNzIsIDg3MTg2LCA4NzIwMCwgODcyMTQsIDg3MjI4LCA4NzI0MiwgODcyNTYsIDg3MjcwLCA4NzI4NCwgODcyOTgsIAorICAgIDg3MzEyLCA4NzMyNiwgODczNDAsIDg3MzU0LCA4NzM2OCwgODczODIsIDg3Mzk2LCA4NzQxMCwgODc0MjQsIDg3NDM4LCAKKyAgICA4NzQ1MiwgODc0NjYsIDg3NDgwLCA4NzQ5NCwgODc1MDgsIDg3NTIyLCA4NzUzNiwgODc1NTAsIDg3NTY0LCA4NzU3OCwgCisgICAgODc1OTIsIDg3NjA2LCA4NzYyMCwgODc2MzQsIDg3NjQ4LCA4NzY2MiwgODc2NzYsIDg3NjkwLCA4NzcwNCwgODc3MTgsIAorICAgIDg3NzMyLCA4Nzc0NiwgODc3NjAsIDg3Nzc0LCA4Nzc4OCwgODc4MDIsIDg3ODE2LCA4NzgzMCwgODc4NDQsIDg3ODU4LCAKKyAgICA4Nzg3MiwgODc4ODYsIDg3OTAwLCA4NzkxNCwgODc5MjgsIDg3OTQyLCA4Nzk1NiwgODc5NzAsIDg3OTg0LCA4Nzk5OCwgCisgICAgODgwMTIsIDg4MDI2LCA4ODA0MCwgODgwNTQsIDg4MDY4LCA4ODA4MiwgODgwOTYsIDg4MTEwLCA4ODEyNCwgODgxMzgsIAorICAgIDg4MTUyLCA4ODE2NiwgODgxODAsIDg4MTk0LCA4ODIwOCwgODgyMjIsIDg4MjM2LCA4ODI1MCwgODgyNjQsIDg4Mjc4LCAKKyAgICA4ODI5MiwgODgzMDYsIDg4MzIwLCA4ODMzNCwgODgzNDgsIDg4MzYyLCA4ODM3NiwgODgzOTAsIDg4NDA0LCA4ODQxOCwgCisgICAgODg0MzIsIDg4NDQ2LCA4ODQ2MCwgODg0NzQsIDg4NDg4LCA4ODUwMiwgODg1MTYsIDg4NTMwLCA4ODU0NCwgODg1NTgsIAorICAgIDg4NTcyLCA4ODU4NiwgODg2MDAsIDg4NjE0LCA4ODYyOCwgODg2NDIsIDg4NjU2LCA4ODY3MCwgODg2ODQsIDg4Njk4LCAKKyAgICA4ODcxMiwgODg3MjYsIDg4NzQwLCA4ODc1NCwgODg3NjgsIDg4NzgyLCA4ODc5NiwgODg4MTAsIDg4ODI0LCA4ODgzOCwgCisgICAgODg4NTIsIDg4ODY2LCA4ODg4MCwgODg4OTQsIDg4OTA4LCA4ODkyMiwgODg5MzYsIDg4OTUwLCA4ODk2NCwgODg5NzgsIAorICAgIDg4OTkyLCA4OTAwNiwgODkwMjAsIDg5MDM0LCA4OTA0OCwgODkwNjIsIDg5MDc2LCA4OTA5MCwgODkxMDQsIDg5MTE4LCAKKyAgICA4OTEzMiwgODkxNDYsIDg5MTYwLCA4OTE3NCwgODkxODgsIDg5MjAyLCA4OTIxNiwgODkyMzAsIDg5MjQ0LCA4OTI1OCwgCisgICAgODkyNzIsIDg5Mjg2LCA4OTMwMCwgODkzMTQsIDg5MzI4LCA4OTM0MiwgODkzNTYsIDg5MzcwLCA4OTM4NCwgODkzOTgsIAorICAgIDg5NDEyLCA4OTQyNiwgODk0NDAsIDg5NDU0LCA4OTQ2OCwgODk0ODIsIDg5NDk2LCA4OTUxMCwgODk1MjQsIDg5NTM4LCAKKyAgICA4OTU1MiwgODk1NjYsIDg5NTgwLCA4OTU5NCwgODk2MDgsIDg5NjIyLCA4OTYzNiwgODk2NTAsIDg5NjY0LCA4OTY3OCwgCisgICAgODk2OTIsIDg5NzA2LCA4OTcyMCwgODk3MzQsIDg5NzQ4LCA4OTc2MiwgODk3NzYsIDg5NzkwLCA4OTgwNCwgODk4MTgsIAorICAgIDg5ODMyLCA4OTg0NiwgODk4NjAsIDg5ODc0LCA4OTg4OCwgODk5MDIsIDg5OTE2LCA4OTkzMCwgODk5NDQsIDg5OTU4LCAKKyAgICA4OTk3MiwgODk5ODYsIDkwMDAwLCA5MDAxNCwgOTAwMjgsIDkwMDQyLCA5MDA1NiwgOTAwNzAsIDkwMDg0LCA5MDA5OCwgCisgICAgOTAxMTIsIDkwMTI2LCA5MDE0MCwgOTAxNTQsIDkwMTY4LCA5MDE4MiwgOTAxOTYsIDkwMjEwLCA5MDIyNCwgOTAyMzgsIAorICAgIDkwMjQ5LCA5MDI2MCwgOTAyNzAsIDkwMjgxLCA5MDI4OSwgOTAyOTUsIDkwMzA1LCA5MDMxMywgOTAzMTksIDMxNjIxLCAKKyAgICA5MDMyNCwgOTAzMzAsIDkwMzM5LCA5MDM1MSwgOTAzNTYsIDkwMzYzLCAxMDU0NiwgMTkzMTEsIDkwMzY5LCA5MDM3OCwgCisgICAgOTAzODMsIDkwMzg3LCA5MDM5NCwgOTA0MDAsIDkwNDA1LCA5MDQxMCwgOTA0MTgsIDkwNDI2LCAxMzIyOSwgOTA0MzAsIAorICAgIDkwNDMzLCA5MDQzNSwgOTA0NDIsIDkwNDQ4LCA5MDQ1OSwgOTA0NjQsIDkwNDY4LCA5MDQ3MywgOTA0ODAsIDkwNDg2LCAKKyAgICA5MDQ5MSwgOTA0OTksIDcxNzQxLCA3MTc1MSwgOTA1MDUsIDkwNTEyLCA5MDUyMiwgMTE2NDEsIDkwNTI5LCA5MDUzNCwgCisgICAgMzE4NTUsIDkwNTQzLCA5MDU0OCwgOTA1NTUsIDkwNTY1LCA5MDU3MywgOTA1ODEsIDkwNTkwLCA5MDU5NiwgOTA2MDIsIAorICAgIDkwNjA5LCA5MDYxNiwgOTA2MjEsIDkwNjI1LCA5MDYzMywgNjY1NDQsIDkwNjM4LCA5MDY0NywgOTA2NTUsIDkwNjYyLCAKKyAgICA5MDY2NywgOTA2NzEsIDkwNjgwLCA5MDY4NiwgOTA2ODksIDkwNjkzLCA5MDcwMiwgOTA3MTIsIDc4NDU3LCA5MDcyMSwgCisgICAgOTA3MjUsIDkwNzMzLCA5MDczNywgOTA3NDMsIDkwNzU0LCA5MDc2NCwgMTkzMjAsIDkwNzc1LCA5MDc4NCwgOTA3OTIsIAorICAgIDkwODAwLCA5MDgwNywgNjY1NjMsIDkxOTIsIDkwODE1LCA5MDgxOSwgOTA4MjgsIDkwODM1LCA5MDgzOCwgMjk3MzYsIAorICAgIDkwODQxLCA5MDg0NSwgOTA4NTAsIDkwODY3LCA5MDg3OSwgMTE1OTksIDkwODkxLCA5MDg5NiwgOTA5MDEsIDkwOTA2LCAKKyAgICAyMjg2MSwgOTA5MTAsIDkwOTE1LCA5MDkyMCwgOTA5MjYsIDkwOTMxLCA2MTQyLCA5MDkzNiwgMjI4NjUsIDkwOTQxLCAKKyAgICA5MDk0NiwgOTA5NTIsIDkwOTU5LCA5MDk2NCwgOTA5NjksIDkwOTc1LCA5MDk4MSwgOTA5ODcsIDkwOTkyLCA5MDk5OCwgCisgICAgOTEwMDIsIDkxMDE2LCA5MTAyNCwgOTEwMzIsIDkxMDM4LCA5MTA0MywgOTEwNTAsIDkxMDYwLCA5MTA2OSwgOTEwNzQsIAorICAgIDkxMDc5LCA5MTA4NCwgOTEwOTIsIDkxMDk3LCA5MTEwMywgOTExMDgsIDkxMTE3LCA2NTIzMiwgOTExMjIsIDkxMTI1LCAKKyAgICA5MTE0MywgOTExNjIsIDkxMTc1LCA5MTE4OSwgOTEyMDUsIDkxMjEyLCA5MTIxOSwgOTEyMjgsIDkxMjM1LCA5MTI0MSwgCisgICAgOTEyNDgsIDkxMjUzLCA5MTI1OSwgOTEyNjUsIDkxMjczLCA5MTI3OSwgOTEyODQsIDkxMjg5LCA5MTMwNSwgMTE2MTIsIAorICAgIDkxMzE5LCA5MTMyNiwgOTEzMzQsIDkxMzQwLCA5MTM0NCwgOTEzNDcsIDkxMzUyLCA5MTM1NywgOTEzNjQsIDkxMzY5LCAKKyAgICA5MTM3OCwgOTEzODQsIDkxMzg5LCA5MTM5NSwgOTE0MDEsIDkxNDEwLCA5MTQxOSwgMzg5NTUsIDkxNDI0LCA5MTQzMiwgCisgICAgOTE0NDEsIDEyODgyLCA5MTQ1MCwgOTE0NTYsIDkxNDY0LCA5MTQ3MCwgOTE0NzYsIDkxNDgyLCA5MTQ4NywgOTE0OTQsIAorICAgIDkxNTAwLCAxMjg5MywgOTE1MDUsIDkxNTA4LCA5MTUxMywgMzU1NzksIDkxNTIzLCA5MTUzMiwgOTE1MzcsIDkxNTQzLCAKKyAgICA5MTU0OCwgOTE1NTYsIDkxNTYzLCA5MTU3NCwgOTE1ODQsIDkxNTg5LCA5MTU5NywgNzEwOTUsIDkxNjAyLCA5MTYwOCwgCisgICAgOTE2MTMsIDkxNjIwLCA5MTYyOSwgOTE2MzcsIDkxNjQxLCA5MTY0NywgOTE2NTMsIDkxNjYwLCA5MTY2NiwgOTE2NzAsIAorICAgIDE4NjgyLCAzMTAzLCA5MTY3NSwgOTE2NzksIDkxNjgzLCA5MTY4OSwgOTE2OTgsIDkxNzA0LCA5MTcxMSwgOTE3MTUsIAorICAgIDkxNzM2LCA5MTc1OCwgOTE3NzQsIDkxNzkxLCA5MTgxMCwgOTE4MTksIDkxODI5LCA5MTgzNywgOTE4NDQsIDkxODUxLCAKKyAgICA5MTg1NywgMjk1OTcsIDkxODcxLCA5MTg3NSwgOTE4ODEsIDkxODg5LCA5MTkwMSwgOTE5MDcsIDkxOTE1LCA5MTkyMiwgCisgICAgOTE5MjcsIDkxOTMyLCA5MTkzNiwgOTE5NDQsIDkxOTUxLCA5MTk1NSwgOTE5NjEsIDkxOTY3LCA5MTk3MiwgMzcyOSwgCisgICAgNDcyMjAsIDkxOTc4LCA5MTk4MiwgOTE5ODYsIDkxOTkwLCA5MTk5NSwgOTIwMDAsIDkyMDA1LCA5MjAxMSwgOTIwMTcsIAorICAgIDkyMDIzLCA5MjAzMCwgOTIwMzYsIDkyMDQzLCA5MjA0OSwgOTIwNTUsIDkyMDYwLCA5MjA2NiwgOTIwNzEsIDkyMDc1LCAKKyAgICA5MjA4MCwgOTIwODQsIDkyMDg5LCA0NzIzNSwgOTIwOTMsIDkyMDk4LCA5MjEwNiwgOTIxMTAsIDkyMTE1LCA5MjEyMiwgCisgICAgOTIxMzEsIDkyMTM3LCA5MjE0NiwgOTIxNTAsIDkyMTU3LCA5MjE2MSwgOTIxNjQsIDkyMTcxLCA5MjE3NywgOTIxODYsIAorICAgIDkyMTk2LCA5MjIwNiwgOTIyMTEsIDkyMjE1LCA5MjIyMiwgOTIyMzAsIDkyMjM5LCA5MjI0MywgOTIyNTEsIDkyMjU3LCAKKyAgICA5MjI2MiwgOTIyNjcsIDkyMjczLCA5MjI3OSwgOTIyODQsIDkyMjg4LCA5MjI5NCwgOTIyOTksIDkyMzAzLCA5MjMwNywgCisgICAgOTIzMTAsIDkyMzE1LCA5MjMyMywgOTIzMzMsIDkyMzM5LCA5MjM0NCwgOTIzNTQsIDQ0NDkyLCA5MjM2MiwgOTIzNzQsIAorICAgIDkyMzgwLCA5MjM4NCwgOTIzOTAsIDkyNDAyLCA5MjQxMywgOTI0MjAsIDkyNDI2LCA5MjQzMywgOTI0NDAsIDkyNDUyLCAKKyAgICA5MjQ1OSwgOTI0NjUsIDIyOTM5LCA5MjQ2OSwgOTI0NzcsIDkyNDgzLCA5MjQ5MCwgOTI0OTYsIDkyNTAyLCA5MjUwOCwgCisgICAgOTI1MTMsIDkyNTE4LCA5MjUyMywgOTI1MjcsIDkyNTM2LCA5MjU0NCwgOTI1NTUsIDczNzQsIDkyNTYwLCAxODEzMSwgCisgICAgOTI1NjYsIDkyNTcwLCA5MjU3NCwgOTI1NzgsIDkyNTg2LCA5MjU5NSwgOTI1OTksIDkyNjA2LCA5MjYxNSwgOTI2MjMsIAorICAgIDkyNjM2LCA5MjY0MiwgOTIwODUsIDMyNzM5LCA5MjY0NywgOTI2NDksIDkyNjU0LCA5MjY1OSwgOTI2NjQsIDkyNjY5LCAKKyAgICA5MjY3NCwgOTI2NzksIDkyNjg0LCA5MjY4OSwgOTI2OTQsIDkyNjk5LCA5MjcwNCwgOTI3MDksIDkyNzE0LCA5MjcxOSwgCisgICAgOTI3MjUsIDkyNzMwLCA5MjczNSwgOTI3NDAsIDkyNzQ1LCA5Mjc1MCwgOTI3NTUsIDkyNzYwLCA5Mjc2NSwgOTI3NzEsIAorICAgIDkyNzc3LCA5Mjc4MywgOTI3ODgsIDkyNzkzLCA5MjgwNSwgOTI4MTAsIDE4ODEsIDU0LCA5MjgxNSwgOTI4MjAsIDM1NTg1LCAKKyAgICA5MjgyNCwgMzU1OTAsIDM1NTk1LCAzNTYwMSwgMzU2MDYsIDkyODI4LCAzNTYxMSwgMjM5OTQsIDkyODUwLCA5Mjg1NCwgCisgICAgOTI4NTgsIDkyODYzLCA5Mjg2NywgMzU2MTUsIDkyODcxLCA5Mjg3OSwgOTI4ODYsIDkyODkyLCAzNTYyMCwgOTI5MDIsIAorICAgIDkyOTA1LCA5MjkxMCwgOTI5MTQsIDkyOTIzLCAxMDM1NiwgOTI5MzEsIDM1NjI1LCAyMzg0NSwgOTI5MzQsIDkyOTM4LCAKKyAgICA5Mjk0NiwgMTM5MywgOTI5NTEsIDM1NjM2LCA5Mjk1NCwgOTI5NTksIDI3OTk1LCAyODAwNSwgMzg1NzgsIDkyOTY0LCAKKyAgICA5Mjk2OSwgOTI5NzQsIDkyOTc5LCA5Mjk4NSwgOTI5OTAsIDkyOTk5LCA5MzAwNCwgOTMwMTMsIDkzMDIxLCA5MzAyOCwgCisgICAgOTMwMzQsIDkzMDM5LCA5MzA0NCwgOTMwNDksIDkzMDU5LCA5MzA2OCwgOTMwNzYsIDkzMDgxLCA5MzA4OSwgOTMwOTMsIAorICAgIDkzMTAxLCA5MzEwNSwgOTMxMTIsIDkzMTIwLCAzNTQ0NCwgNDE2MzQsIDkzMTI3LCA5MzEzMywgOTMxMzgsIDkzMTQzLCAKKyAgICAxMzI2NCwgMzA4MjAsIDkzMTQ4LCA5MzE1MywgOTMxNjAsIDkzMTY2LCA5MzE3MSwgOTMxNzksIDkzMTg5LCA5MzE5OSwgCisgICAgOTMyMDUsIDkzMjEwLCA5MzIxNiwgMTkzNDIsIDkzMjIzLCAzOTQ2MiwgOTMyMzYsIDkzMjQxLCA5MzI0NywgMzM3MzcsIAorICAgIDY5NTc5LCA5MzI2MCwgOTMyNjQsIDkzMjczLCA5MzI4MiwgOTMyODksIDkzMjk1LCA5MzMwMywgOTMzMTIsIDkzMzE5LCAKKyAgICA0MTc1NCwgOTMzMjUsIDkzMzI4LCA5MzMzMiwgOTMzMzYsIDkzMzQwLCAyODE0MSwgOTMzNDYsIDkzMzUzLCA5MzM1OSwgCisgICAgOTMzNjcsIDkzMzcyLCA5MzM3NiwgMjYxMzcsIDkzMzgyLCA5MzM4NSwgOTMzOTMsIDkzNDAwLCA5MzQwOCwgOTM0MjEsIAorICAgIDkzNDM1LCA5MzQ0MiwgOTM0NDgsIDkzNDU1LCA5MzQ2MSwgMzU2NTAsIDkzNDY1LCA5MzQ3MiwgOTM0ODAsIDkzNDg4LCAKKyAgICA5MzQ5NCwgMzU2NTUsIDkzNTAyLCA5MzUwOCwgOTM1MTMsIDkzNTIzLCA5MzUyOSwgOTM1MzgsIDMzNTMyLCAzODAxMCwgCisgICAgOTM1NDYsIDkzNTUxLCA5MzU1NiwgOTM1NjAsIDkzNTY1LCA5MzU2OSwgOTM1NzcsIDkzNTgyLCAxNjQxOSwgNDQ1MDUsIAorICAgIDkzNTg2LCA5MzU5MSwgMzU2NjAsIDY4MTIxLCA5MzU5NSwgOTM2MDAsIDkzNjA0LCA5MzYxMSwgOTM2MjAsIDkzNjI0LCAKKyAgICA5MzYzMiwgOTM2MzgsIDkzNjQzLCA5MzY0OSwgODQ5MywgOTM2NTQsIDkzNjYwLCA5MzY2NSwgOTM2NzAsIDkzNjgxLCAKKyAgICA5MzY5MCwgOTM3MDIsIDkzNzE3LCAzNTkzNiwgOTM3MjMsIDE4MjUwLCAzNTY2NCwgOTM3MjcsIDkzNzM0LCA5Mzc0MCwgCisgICAgMjYyNTMsIDkzNzQ0LCA5Mzc1MSwgOTM3NjAsIDkzNzY3LCA5Mzc3NiwgOTM3ODIsIDkzNzg3LCA5Mzc5NSwgOTM4MDEsIAorICAgIDkzODA2LCAzNTY3NCwgOTM4MTEsIDkzODIwLCA5MjQwOCwgOTM4MjksIDkzODM2LCA5Mzg0MiwgOTM4NDgsIDkzODU3LCAKKyAgICA5Mzg2NywgOTM4NzUsIDkzODgyLCA5Mzg4NiwgMzU2NzksIDkzODg5LCAzNTY4NSwgMzU2OTEsIDkzODk0LCA5MzkwMiwgCisgICAgOTM5MTAsIDkzOTIwLCA5MzkyOSwgOTM5MzcsIDkzOTQ0LCA5Mzk1NCwgMzU2OTYsIDkzOTU4LCA5Mzk2MCwgOTM5NjQsIAorICAgIDkzOTY5LCA5Mzk3MywgOTM5NzcsIDkzOTgzLCA5Mzk4OCwgOTM5OTIsIDk0MDAzLCA5NDAwOCwgOTQwMTMsIDMxMDgsIAorICAgIDk0MDE3LCA5NDAyNCwgOTQwMjgsIDk0MDM3LCA5NDA0NSwgOTQwNTIsIDk0MDU3LCA5NDA2MiwgNjgxNzIsIDk0MDY2LCAKKyAgICA5NDA2OSwgOTQwNzUsIDk0MDgzLCA5NDA4OSwgOTQwOTMsIDk0MDk4LCA5NDEwNSwgOTQxMTAsIDk0MTE1LCA5NDExOSwgCisgICAgOTQxMjUsIDk0MTMwLCAzODA0MSwgOTQxMzQsIDk0MTM3LCA5NDE0MiwgOTQxNDYsIDk0MTUxLCA5NDE1OCwgOTQxNjMsIAorICAgIDk0MTY3LCA0MzAzMSwgOTQxNzUsIDI4MDE0LCAyODAyMywgOTQxODEsIDk0MTg3LCA5NDE5MywgOTQxOTgsIDk0MjAyLCAKKyAgICA5NDIwNSwgOTQyMTUsIDk0MjI0LCA5NDIyOSwgOTQyMzUsIDk0MjQyLCA5NDI0OCwgOTQyNTIsIDk0MjYwLCA5NDI2NSwgCisgICAgMzgwNDcsIDc4Njc3LCA5NDI2OSwgOTQyNzcsIDk0MjgzLCA5NDI5MCwgOTQyOTUsIDk0Mjk5LCA5NDMwNCwgNjM3NTYsIAorICAgIDk0MzEwLCA5NDMxNiwgMzgwNTMsIDk0MzIxLCA5NDMyNiwgOTQzMzAsIDk0MzM1LCA5NDM0MCwgOTQzNDUsIDk0MzQ5LCAKKyAgICA5NDM1NCwgOTQzNTksIDk0MzY1LCA5NDM3MCwgOTQzNzUsIDk0MzgxLCA5NDM4NywgOTQzOTIsIDk0Mzk2LCA5NDQwMSwgCisgICAgOTQ0MDYsIDk0NDExLCA5NDQxNSwgMjYyNTIsIDk0NDIwLCA5NDQyNSwgOTQ0MzEsIDk0NDM3LCA5NDQ0MywgOTQ0NDgsIAorICAgIDk0NDUyLCA5NDQ1NywgOTQ0NjIsIDk0NDY3LCA5NDQ3MSwgOTQ0NzYsIDk0NDgxLCA5NDQ4NiwgOTQ0OTEsIDQ3NDkwLCAKKyAgICA5NDQ5NSwgMzU3MDQsIDk0NTAzLCA5NDUwNywgOTQ1MTUsIDk0NTIzLCA5NDUzNCwgOTQ1MzksIDk0NTQzLCAyNDQyMCwgCisgICAgNzYxNjksIDk0NTQ4LCA5NDU1NCwgOTQ1NTksIDk0NTY5LCA5NDU3NiwgOTQ1ODEsIDk0NTg5LCA5NDU5OCwgOTQ2MDMsIAorICAgIDk0NjA3LCA5NDYxMiwgOTQ2MjAsIDk0NjI4LCA5NDYzNSwgNzEzNTcsIDk0NjQxLCA5NDY0OSwgOTQ2NTYsIDk0NjY3LCAKKyAgICA5NDY3MywgOTQ2NzksIDM1NzE0LCA5NDY4MiwgOTQ2ODksIDk0Njk3LCA5NDcwMiwgNDQ3MDgsIDk0NzA2LCA5NDcxMSwgCisgICAgOTQ3MTgsIDk0NzIzLCA5NTY3LCA5NDcyNywgOTQ3MzUsIDk0NzQyLCA5NDc0OSwgOTQ3NTgsIDk0NzY1LCA5NDc3MSwgCisgICAgOTQ3ODUsIDYyMTQsIDk0NzkzLCA5NDc5OSwgOTQ4MDMsIDk0ODA2LCA5NDgxNCwgOTQ4MjEsIDk0ODI2LCA5NDgzOSwgCisgICAgOTQ4NDYsIDk0ODUyLCA5NDg1NiwgOTQ4NjQsIDk0ODY5LCA5NDg3NiwgOTQ4ODEsIDY2NDAzLCA5NDg4NiwgOTQ4ODksIAorICAgIDk0ODk4LCA5NDkwNSwgOTQ5MTEsIDk0OTE1LCA5NDkxOCwgOTQ5MjYsIDk0OTMyLCA5NDk0MSwgOTQ5NTEsIDk0OTYxLCAKKyAgICA5NDk3MCwgOTQ5ODEsIDk0OTg5LCA5NTAwMCwgOTUwMDUsIDk1MDA5LCA5NTAxNCwgOTUwMTgsIDM4NzA5LCA5NTAyNiwgCisgICAgMjMyMzQsIDM4NzE4LCA5NTAzMSwgOTUwMzYsIDk1MDQxLCA5NTA0NiwgOTUwNTEsIDk1MDU2LCA5NTA2MSwgOTUwNjUsIAorICAgIDk1MDcwLCA5NTA3NSwgOTUwODAsIDk1MDg1LCA5NTA5MCwgOTUwOTUsIDk1MDk5LCA5NTEwNCwgOTUxMDksIDk1MTEzLCAKKyAgICA5NTExNywgOTUxMjEsIDk1MTI1LCA5NTEzMCwgOTUxMzUsIDk1MTM5LCA5NTE0NCwgOTUxNDgsIDk1MTUyLCA5NTE1NywgCisgICAgOTUxNjIsIDk1MTY3LCA5NTE3MiwgOTUxNzYsIDk1MTgxLCA5NTE4NiwgOTUxOTAsIDk1MTk1LCA5NTIwMCwgOTUyMDUsIAorICAgIDk1MjEwLCA5NTIxNSwgOTUyMjAsIDk1MjI1LCA5NTIzMCwgOTUyMzUsIDk1MjQwLCA5NTI0NSwgOTUyNTAsIDk1MjU1LCAKKyAgICA5NTI2MCwgOTUyNjUsIDk1MjcwLCA5NTI3NSwgOTUyODAsIDk1Mjg1LCA5NTI5MCwgOTUyOTQsIDk1Mjk5LCA5NTMwNCwgCisgICAgOTUzMDksIDk1MzE0LCA5NTMxOSwgOTUzMjQsIDk1MzI5LCA5NTMzNCwgOTUzMzksIDk1MzQ0LCA5NTM0OSwgOTUzNTMsIAorICAgIDk1MzU4LCA5NTM2MiwgOTUzNjcsIDk1MzcyLCA5NTM3NywgOTUzODIsIDk1Mzg3LCA5NTM5MiwgOTUzOTcsIDk1NDAyLCAKKyAgICA5NTQwNywgOTU0MTEsIDk1NDE1LCA5NTQyMCwgOTU0MjUsIDk1NDI5LCA5NTQzNCwgOTU0MzksIDk1NDQzLCA5NTQ0OCwgCisgICAgOTU0NTMsIDk1NDU4LCA5NTQ2MywgOTU0NjcsIDk1NDcyLCA5NTQ3NywgOTU0ODEsIDk1NDg2LCA5NTQ5MCwgOTU0OTQsIAorICAgIDk1NDk4LCA5NTUwMiwgOTU1MDcsIDk1NTExLCA5NTUxNSwgOTU1MTksIDk1NTIzLCA5NTUyNywgOTU1MzEsIDk1NTM1LCAKKyAgICA5NTUzOSwgOTU1NDMsIDk1NTQ4LCA5NTU1MywgOTU1NTgsIDk1NTYzLCA5NTU2OCwgOTU1NzMsIDk1NTc4LCA5NTU4MywgCisgICAgOTU1ODgsIDk1NTkzLCA5NTU5NywgOTU2MDEsIDk1NjA1LCA5NTYwOSwgOTU2MTMsIDk1NjE3LCA5NTYyMiwgOTU2MjYsIAorICAgIDk1NjMxLCA5NTYzNSwgOTU2NDAsIDk1NjQ1LCA5NTY0OSwgOTU2NTMsIDk1NjU4LCA5NTY2MiwgOTU2NjYsIDk1NjcwLCAKKyAgICA5NTY3NCwgOTU2NzgsIDk1NjgyLCA5NTY4NiwgOTU2OTAsIDk1Njk0LCA5NTY5OCwgOTU3MDIsIDk1NzA2LCA5NTcxMCwgCisgICAgOTU3MTQsIDk1NzE5LCA5NTcyNCwgOTU3MjgsIDk1NzMyLCA5NTczNiwgOTU3NDAsIDk1NzQ0LCA5NTc0OCwgOTU3NTMsIAorICAgIDk1NzU3LCA5NTc2MSwgOTU3NjUsIDk1NzY5LCA5NTc3MywgOTU3NzcsIDk1NzgyLCA5NTc4NiwgOTU3OTEsIDk1Nzk1LCAKKyAgICA5NTc5OSwgOTU4MDMsIDk1ODA3LCA5NTgxMSwgOTU4MTUsIDk1ODE5LCA5NTgyMywgOTU4MjcsIDk1ODMxLCA5NTgzNSwgCisgICAgOTU4NDAsIDk1ODQ0LCA5NTg0OCwgOTU4NTIsIDk1ODU2LCA5NTg2MCwgOTU4NjQsIDk1ODY4LCA5NTg3MiwgOTU4NzYsIAorICAgIDk1ODgwLCA5NTg4NCwgOTU4ODksIDk1ODkzLCA5NTg5NywgOTU5MDIsIDk1OTA3LCA5NTkxMSwgOTU5MTUsIDk1OTE5LCAKKyAgICA5NTkyMywgOTU5MjcsIDk1OTMxLCA5NTkzNSwgOTU5MzksIDk1OTQ0LCA5NTk0OCwgOTU5NTMsIDk1OTU3LCA5NTk2MiwgCisgICAgOTU5NjYsIDk1OTcxLCA5NTk3NSwgOTU5ODEsIDk1OTg2LCA5NTk5MCwgOTU5OTUsIDk1OTk5LCA5NjAwNCwgOTYwMDgsIAorICAgIDk2MDEzLCA5NjAxNywgOTYwMjIsIDE1MDAsIDk2MDI2LCAyODYyLCAxNzU1LCAxNjczLCAyNzk1MCwgOTYwMzAsIDI4NzEsIAorICAgIDk2MDM0LCAxMzYyLCA5NjAzOSwgMTMwNCwgOTYwNDMsIDk2MDQ3LCAyODg4LCA5NjA1MSwgOTYwNTksIDk2MDY2LCA5NjA3MywgCisgICAgOTYwODcsIDI4OTIsIDc0NzYsIDk2MDk2LCA5NjEwNCwgOTYxMTEsIDk2MTIyLCA5NjEzMSwgOTYxMzgsIDk2MTUwLCAKKyAgICA5NjE2MywgOTYxNzYsIDk2MTg3LCA5NjE5MiwgOTYxOTksIDk2MjExLCA5NjIxNSwgMjg5NiwgMTI5NjAsIDk2MjI1LCAKKyAgICA5NjIzMCwgOTYyMzksIDk2MjQ5LCA5NjI1NCwgMjkwMCwgOTYyNjIsIDk2MjY2LCA5NjI3MSwgOTYyNzgsIDk2Mjg0LCAKKyAgICA5NjI5MiwgOTYzMDQsIDk2MzE0LCAxMzA5LCAxNDMxMSwgOTYzMjcsIDk2MzMxLCA5NjMzNywgOTYzNTEsIDk2MzYzLCAKKyAgICA5NjM3NSwgOTYzODUsIDk2Mzk0LCA5NjQwMywgOTY0MTIsIDk2NDIwLCA5NjQzMSwgOTY0MzksIDQzMDYsIDk2NDQ5LCAKKyAgICA5NjQ2MCwgOTY0NjksIDk2NDc1LCA5NjQ5MCwgOTY0OTcsIDk2NTAzLCA5NjUwOCwgMzg4NDMsIDk2NTEzLCAyOTI0LCAKKyAgICAxNDMxNSwgOTY1MTcsIDk2NTI0LCA5NDkyLCA5NjUzMywgOTY1MzksIDI5MjksIDM1MTUyLCA5NjU0OCwgNjYwOTksIAorICAgIDk2NTU1LCA5NjU1OSwgOTY1NjUsIDk2NTc2LCA5NjU4MiwgOTY1ODksIDk2NTk1LCA5NjYwMywgOTY2MTAsIDk2NjE2LCAKKyAgICA5NjYyNywgOTY2MzcsIDk2NjQ2LCA5NjY1NywgOTY2NjYsIDk2NjczLCA5NjY3OSwgOTY2ODksIDk2Njk3LCA5NjcwMywgCisgICAgOTY3MTgsIDk2NzI0LCA5NjcyOSwgOTY3MzYsIDk2NzM5LCA5Njc0NSwgOTY3NTIsIDk2NzU4LCA5Njc2NiwgOTY3NzUsIAorICAgIDk2NzgzLCA5Njc4OSwgOTY3OTgsIDQ2NzYwLCA5NjgxMiwgOTY4MTcsIDk2ODIzLCAxNjE5NSwgOTY4MjgsIDk2ODQxLCAKKyAgICA5Njg1MywgOTY4NjIsIDk2ODcwLCA5Njg3NywgOTY4ODEsIDk2ODg1LCA5Njg4OCwgOTY4OTUsIDk2OTAyLCA5NjkxMCwgCisgICAgOTY5MTgsIDk2OTI3LCA5NjkzNSwgMTYxMDAsIDk2OTQzLCA5Njk0OCwgOTY5NTIsIDk2OTY0LCA5Njk3MSwgOTY5NzgsIAorICAgIDk2OTg3LCA4NzcsIDk2OTk3LCA5NzAwNiwgOTcwMTcsIDI5NDUsIDk3MDIxLCA5NzAyNSwgOTcwMzEsIDk3MDQ0LCA5NzA1NiwgCisgICAgOTcwNjYsIDk3MDc1LCA5NzA4NywgMjg3MDEsIDk3MDk4LCA5NzEwNiwgOTcxMTUsIDk3MTI2LCA5NzEzNywgOTcxNDcsIAorICAgIDk3MTU3LCA5NzE2NiwgOTcxNzQsIDEyNDc0LCA5NzE4MSwgOTcxODUsIDk3MTg4LCA5NzE5MywgOTcxOTgsIDk3MjAyLCAKKyAgICA5NzIwOCwgMTMxNCwgOTcyMTUsIDk3MjE5LCAxMzA0MiwgOTcyMjMsIDk3MjM0LCA5NzI0MywgOTcyNTEsIDk3MjYwLCAKKyAgICA5NzI2OCwgOTcyODQsIDk3Mjk1LCA5NzMwNCwgOTczMTIsIDk3MzI0LCA5NzMzNSwgOTczNTEsIDk3MzYxLCA5NzM4MiwgCisgICAgOTczOTYsIDk3NDA5LCA5NzQxNywgOTc0MjQsIDc1MjIsIDk3NDM3LCA5NzQ0MiwgOTc0NDgsIDYyMjMsIDk3NDU0LCAKKyAgICA5NzQ1NywgOTc0NjQsIDk3NDc0LCA4NTk1LCA5NzQ4MSwgOTc0ODYsIDk3NDkxLCA5NzQ5NiwgOTc1MDQsIDk3NTEzLCAKKyAgICA5NzUyMSwgOTc1MjYsIDk3NTMzLCAxMDU5NCwgMTA2MDMsIDk3NTM5LCA5NzU1MCwgOTc1NTUsIDk3NTYxLCAyOTYxLCAKKyAgICAyOTY2LCA5NzU2NywgMTE5NjcsIDk3NTczLCA5NzU4MCwgOTc1ODcsIDk3NjAwLCA5NzYwNSwgMjI2NiwgODcsIDk3NjEzLCAKKyAgICA5NzYxOCwgOTc2MjYsIDk3NjM2LCA5NzY0NSwgOTc2NTEsIDk3NjYwLCA5NzY2OCwgOTc2NzgsIDk3NjgyLCA5NzY4NiwgCisgICAgOTc2OTEsIDk3Njk1LCA5NzcwNywgMjk4OSwgOTc3MTUsIDk3NzIzLCA5NzcyOCwgOTc3MzksIDk3NzUwLCA5Nzc2MiwgCisgICAgOTc3NzMsIDk3NzgzLCA5Nzc5MiwgMjMyNzUsIDk3Nzk3LCA5NzgwMywgOTc4MDgsIDk3ODE4LCA5NzgyOCwgOTc4MzMsIAorICAgIDMwNzEzLCA5NzgzOSwgOTc4NDQsIDk3ODUzLCAyMzI4NywgOTc4NTcsIDQ0MDQsIDE2LCA5Nzg2MiwgOTc4NzEsIDk3ODc4LCAKKyAgICA5Nzg4NSwgOTc4OTEsIDk3ODk2LCA5NzkwMCwgOTc5MDYsIDEwODUsIDk3OTExLCA5NzkxNiwgNjY2ODAsIDk3OTIxLCAKKyAgICA5NzkyNiwgOTc5MzIsIDk3OTM4LCA5Nzk0NiwgOTc5NTEsIDk3OTU5LCA5Nzk2NiwgOTc5NzIsIDk3OTc3LCA0MjkxNSwgCisgICAgNDY2NTQsIDk3OTgzLCAxODA2LCAzMiwgOTc5OTMsIDk4MDA2LCA5ODAxMSwgOTgwMTksIDk4MDI0LCA5ODAzMCwgMzAxNSwgCisgICAgMzA3ODgsIDk4MDM1LCA5ODA0MywgOTgwNTAsIDk4MDU1LCA5ODA2NCwgNjQwMDYsIDQwMjMsIDY3Nzg0LCA5ODA3MiwgCisgICAgOTgwNzYsIDE3MDAsIDE4MTgsIDk4MDgxLCA5ODA4NiwgOTgwOTMsIDE4MjIsIDI4NiwgOTgxMDAsIDk4MTA2LCA5ODExMSwgCisgICAgMzAzNywgOTgxMTUsIDk4MTIwLCA5ODEyNywgMTgyNiwgOTgxMzIsIDk4MTM4LCA5ODE0MywgOTgxNTUsIDY0NTQsIDk4MTY1LCAKKyAgICA5ODE3MiwgMTgzMywgOTgxNzgsIDk4MTgzLCA5ODE5MCwgOTgxOTcsIDk4MjEyLCA5ODIxOSwgOTgyMzAsIDk4MjM1LCAKKyAgICA5ODI0MywgMjY0NiwgOTgyNDcsIDk4MjU5LCA5ODI2NCwgOTgyNjgsIDk4Mjc0LCAzMDU5NiwgMjI3MSwgOTgyNzgsIAorICAgIDk4Mjg5LCA5ODI5MywgOTgyOTcsIDk4MzAzLCA5ODMwNywgOTgzMTYsIDk4MzIwLCA5ODMzMSwgOTgzMzUsIDIzMTcsIAorICAgIDM0OTY5LCA5ODMzOSwgOTgzNDksIDMxMjgsIDk4MzU3LCA5ODM2NiwgOTk5OSwgOTgzNzEsIDk4Mzc2LCA5ODM4MCwgCisgICAgOTgzODksIDk4Mzk2LCA5ODQwMiwgMzA5OCwgMTYyNTksIDk4NDA2LCA5ODQxOSwgOTg0MzcsIDk4NDQyLCA5ODQ1MCwgCisgICAgOTg0NTgsIDk4NDY4LCAxMDg2NiwgMTQ0MjgsIDk4NDgwLCA5ODQ5MywgOTg1MDAsIDk4NTE0LCA5ODUyMSwgOTg1MzcsIAorICAgIDk4NTQ0LCA5ODU1MCwgMjMzMjUsIDEzNjY2LCA5ODU1NywgOTg1NjQsIDk4NTc0LCA5ODU4MywgNDc0ODksIDk4NTk1LCAKKyAgICA0NzYyNCwgOTg2MDMsIDk4NjA2LCA5ODYxMiwgOTg2MTgsIDk4NjI0LCA5ODYzMCwgOTg2MzYsIDk4NjQzLCA5ODY1MCwgCisgICAgOTg2NTYsIDk4NjYyLCA5ODY2OCwgOTg2NzQsIDk4NjgwLCA5ODY4NiwgOTg2OTIsIDk4Njk4LCA5ODcwNCwgOTg3MTAsIAorICAgIDk4NzE2LCA5ODcyMiwgOTg3MjgsIDk4NzM0LCA5ODc0MCwgOTg3NDYsIDk4NzUyLCA5ODc1OCwgOTg3NjQsIDk4NzcwLCAKKyAgICA5ODc3NiwgOTg3ODIsIDk4Nzg4LCA5ODc5NCwgOTg4MDAsIDk4ODA2LCA5ODgxMiwgOTg4MTgsIDk4ODI0LCA5ODgzMCwgCisgICAgOTg4MzYsIDk4ODQyLCA5ODg0OCwgOTg4NTQsIDk4ODYwLCA5ODg2NiwgOTg4NzIsIDk4ODc4LCA5ODg4NCwgOTg4OTAsIAorICAgIDk4ODk2LCA5ODkwMiwgOTg5MDgsIDk4OTE0LCA5ODkyMCwgOTg5MjYsIDk4OTMyLCA5ODkzOCwgOTg5NDQsIDk4OTUwLCAKKyAgICA5ODk1NiwgOTg5NjMsIDk4OTY5LCA5ODk3NiwgOTg5ODMsIDk4OTg5LCA5ODk5NiwgOTkwMDMsIDk5MDA5LCA5OTAxNSwgCisgICAgOTkwMjEsIDk5MDI3LCA5OTAzMywgOTkwMzksIDk5MDQ1LCA5OTA1MSwgOTkwNTcsIDk5MDYzLCA5OTA2OSwgOTkwNzUsIAorICAgIDk5MDgxLCA5OTA4NywgOTkwOTMsIDMxMTIsIDk5NzIsIDk5MDk5LCA5OTEwNSwgOTkxMTMsIDk5MTE3LCA5NjI3NCwgMzExNiwgCisgICAgOTkxMjEsIDIzMDUyLCAxMzI5OSwgMzk3MywgOTkxMjUsIDMxMjIsIDk5MTI5LCA5OTEzOSwgOTkxNDUsIDk5MTUxLCAKKyAgICA5OTE1NywgOTkxNjMsIDk5MTY5LCA5OTE3NSwgOTkxODEsIDk5MTg3LCA5OTE5MywgOTkxOTksIDk5MjA1LCA5OTIxMSwgCisgICAgOTkyMTcsIDk5MjIzLCA5OTIyOSwgOTkyMzUsIDk5MjQxLCA5OTI0NywgOTkyNTMsIDk5MjU5LCA5OTI2NSwgOTkyNzEsIAorICAgIDk5Mjc3LCA5OTI4MywgOTkyODksIDk5Mjk2LCA5OTMwMywgOTkzMDksIDk5MzE1LCA5OTMyMSwgOTkzMjcsIDk5MzMzLCAKKyAgICA5OTMzOSwgMTMxOSwgOTkzNDUsIDk5MzUwLCA5OTM1NSwgOTkzNjAsIDk5MzY1LCA5OTM3MCwgOTkzNzUsIDk5MzgwLCAKKyAgICA5OTM4NSwgOTkzODksIDk5MzkzLCA5OTM5NywgOTk0MDEsIDk5NDA1LCA5OTQwOSwgOTk0MTMsIDk5NDE3LCA5OTQyMSwgCisgICAgOTk0MjcsIDk5NDMzLCA5OTQzOSwgOTk0NDUsIDk5NDQ5LCA5OTQ1MywgOTk0NTcsIDk5NDYxLCA5OTQ2NSwgOTk0NjksIAorICAgIDk5NDczLCA5OTQ3NywgOTk0ODEsIDk5NDg2LCA5OTQ5MSwgOTk0OTYsIDk5NTAxLCA5OTUwNiwgOTk1MTEsIDk5NTE2LCAKKyAgICA5OTUyMSwgOTk1MjYsIDk5NTMxLCA5OTUzNiwgOTk1NDEsIDk5NTQ2LCA5OTU1MSwgOTk1NTYsIDk5NTYxLCA5OTU2NiwgCisgICAgOTk1NzEsIDk5NTc2LCA5OTU4MSwgOTk1ODYsIDk5NTkxLCA5OTU5NiwgOTk2MDEsIDk5NjA2LCA5OTYxMSwgOTk2MTYsIAorICAgIDk5NjIxLCA5OTYyNiwgOTk2MzEsIDk5NjM2LCA5OTY0MSwgOTk2NDYsIDk5NjUxLCA5OTY1NiwgOTk2NjEsIDk5NjY2LCAKKyAgICA5OTY3MSwgOTk2NzYsIDk5NjgxLCA5OTY4NiwgOTk2OTEsIDk5Njk2LCA5OTcwMSwgOTk3MDYsIDk5NzExLCA5OTcxNiwgCisgICAgOTk3MjEsIDk5NzI2LCA5OTczMSwgOTk3MzYsIDk5NzQxLCA5OTc0NiwgOTk3NTEsIDk5NzU2LCA5OTc2MSwgOTk3NjYsIAorICAgIDk5NzcxLCA5OTc3NiwgOTk3ODEsIDk5Nzg2LCA5OTc5MSwgOTk3OTYsIDk5ODAxLCA5OTgwNiwgOTk4MTEsIDk5ODE2LCAKKyAgICA5OTgyMSwgOTk4MjYsIDk5ODMxLCA5OTgzNiwgOTk4NDEsIDk5ODQ2LCA5OTg1MSwgOTk4NTYsIDk5ODYxLCA5OTg2NiwgCisgICAgOTk4NzEsIDk5ODc2LCA5OTg4MSwgOTk4ODYsIDk5ODkxLCA5OTg5NiwgOTk5MDEsIDk5OTA2LCA5OTkxMSwgOTk5MTYsIAorICAgIDk5OTIxLCA5OTkyNiwgOTk5MzEsIDk5OTM2LCA5OTk0MSwgOTk5NDYsIDk5OTUxLCA5OTk1NiwgOTk5NjEsIDk5OTY2LCAKKyAgICA5OTk3MSwgOTk5NzYsIDk5OTgxLCA5OTk4NiwgOTk5OTEsIDk5OTk2LCAxMDAwMDEsIDEwMDAwNiwgMTAwMDExLCAxMDAwMTYsIAorICAgIDEwMDAyMSwgMTAwMDI2LCAxMDAwMzEsIDEwMDAzNiwgMTAwMDQxLCAxMDAwNDYsIDEwMDA1MSwgMTAwMDU2LCAxMDAwNjEsIAorICAgIDEwMDA2NiwgMTAwMDcxLCAxMDAwNzYsIDEwMDA4MSwgMTAwMDg2LCAxMDAwOTEsIDEwMDA5NiwgMTAwMTAxLCAxMDAxMDYsIAorICAgIDEwMDExMSwgMTAwMTE2LCAxMDAxMjEsIDEwMDEyNiwgMTAwMTMxLCAxMDAxMzYsIDEwMDE0MSwgMTAwMTQ2LCAxMDAxNTEsIAorICAgIDEwMDE1NiwgMTAwMTYxLCAxMDAxNjYsIDEwMDE3MSwgMTAwMTc2LCAxMDAxODEsIDEwMDE4NiwgMTAwMTkxLCAxMDAxOTYsIAorICAgIDEwMDIwMSwgMTAwMjA2LCAxMDAyMTEsIDEwMDIxNiwgMTAwMjIxLCAxMDAyMjYsIDEwMDIzMSwgMTAwMjM2LCAxMDAyNDEsIAorICAgIDEwMDI0NiwgMTAwMjUxLCAxMDAyNTYsIDEwMDI2MSwgMTAwMjY2LCAxMDAyNzEsIDEwMDI3NiwgMTAwMjgxLCAxMDAyODYsIAorICAgIDEwMDI5MSwgMTAwMjk2LCAxMDAzMDEsIDEwMDMwNiwgMTAwMzExLCAxMDAzMTYsIDEwMDMyMSwgMTAwMzI2LCAxMDAzMzEsIAorICAgIDEwMDMzNiwgMTAwMzQxLCAxMDAzNDYsIDEwMDM1MSwgMTAwMzU2LCAxMDAzNjEsIDEwMDM2NiwgMTAwMzcxLCAxMDAzNzcsIAorICAgIDEwMDM4MiwgMTAwMzg3LCAxMDAzOTIsIDEwMDM5NywgMTAwNDAyLCAxMDA0MDcsIDEwMDQxMiwgMTAwNDE4LCAxMDA0MjMsIAorICAgIDEwMDQyOCwgMTAwNDMzLCAxMDA0MzgsIDEwMDQ0MywgMTAwNDQ4LCAxMDA0NTMsIDEwMDQ1OCwgMTAwNDYzLCAxMDA0NjgsIAorICAgIDEwMDQ3MywgMTAwNDc4LCAxMDA0ODMsIDEwMDQ4OCwgMTAwNDkzLCAxMDA0OTgsIDEwMDUwMywgMTAwNTA4LCAxMDA1MTMsIAorICAgIDEwMDUxOCwgMTAwNTIzLCAxMDA1MjgsIDEwMDUzMywgMTAwNTM4LCAxMDA1NDMsIDEwMDU0OCwgMTAwNTUzLCAxMDA1NTgsIAorICAgIDEwMDU2MywgMTAwNTY4LCAxMDA1NzMsIDEwMDU3OCwgMTAwNTg3LCAxMDA1OTIsIDEwMDYwMSwgMTAwNjA2LCAxMDA2MTUsIAorICAgIDEwMDYyMCwgMTAwNjI5LCAxMDA2MzQsIDEwMDY0MywgMTAwNjQ4LCAxMDA2NTcsIDEwMDY2MiwgMTAwNjcxLCAxMDA2NzYsIAorICAgIDEwMDY4NSwgMTAwNjkwLCAxMDA2OTUsIDEwMDcwNCwgMTAwNzA4LCAxMDA3MTcsIDEwMDcyMiwgMTAwNzMxLCAxMDA3MzYsIAorICAgIDEwMDc0NSwgMTAwNzUwLCAxMDA3NTksIDEwMDc2NCwgMTAwNzczLCAxMDA3NzgsIDEwMDc4NywgMTAwNzkyLCAxMDA4MDEsIAorICAgIDEwMDgwNiwgMTAwODE1LCAxMDA4MjAsIDEwMDgyOSwgMTAwODM0LCAxMDA4NDMsIDEwMDg0OCwgMTAwODUzLCAxMDA4NTgsIAorICAgIDEwMDg2MywgMTAwODY4LCAxMDA4NzMsIDEwMDg3OCwgMTAwODgyLCAxMDA4ODcsIDEwMDg5MiwgMTAwODk3LCAxMDA5MDIsIAorICAgIDEwMDkwNywgMTAwOTEyLCAxMDA5MTgsIDEwMDkyMywgMTAwOTI4LCAxMDA5MzMsIDEwMDkzOSwgMTAwOTQzLCAxMDA5NDgsIAorICAgIDEwMDk1NCwgMTAwOTU5LCAxMDA5NjQsIDEwMDk2OSwgMTAwOTc0LCAxMDA5NzksIDEwMDk4NCwgMTAwOTg5LCAxMDA5OTQsIAorICAgIDEwMDk5OSwgMTAxMDA0LCAxMDEwMTAsIDEwMTAxNSwgMTAxMDIwLCAxMDEwMjUsIDEwMTAzMSwgMTAxMDM2LCAxMDEwNDEsIAorICAgIDEwMTA0NiwgMTAxMDUxLCAxMDEwNTcsIDEwMTA2MiwgMTAxMDY3LCAxMDEwNzIsIDEwMTA3NywgMTAxMDgyLCAxMDEwODgsIAorICAgIDEwMTA5MywgMTAxMDk4LCAxMDExMDMsIDEwMTEwOCwgMTAxMTEzLCAxMDExMTgsIDEwMTEyMywgMTAxMTI4LCAxMDExMzMsIAorICAgIDEwMTEzOCwgMTAxMTQzLCAxMDExNDgsIDEwMTE1MywgMTAxMTU4LCAxMDExNjMsIDEwMTE2OCwgMTAxMTczLCAxMDExNzgsIAorICAgIDEwMTE4MywgMTAxMTg4LCAxMDExOTMsIDEwMTE5OCwgMTAxMjAzLCAxMDEyMDksIDEwMTIxNSwgMTAxMjIxLCAxMDEyMjYsIAorICAgIDEwMTIzMSwgMTAxMjM2LCAxMDEyNDEsIDEwMTI0NywgMTAxMjUzLCAxMDEyNTksIDEwMTI2NCwgMTAxMjY5LCAxMDEyNzQsIAorICAgIDEwMTI4MCwgMTAxMjg1LCAxMDEyOTAsIDEwMTI5NSwgMTAxMzAwLCAxMDEzMDUsIDEwMTMxMCwgMTAxMzE1LCAxMDEzMjAsIAorICAgIDEwMTMyNSwgMTAxMzMwLCAxMDEzMzUsIDEwMTM0MCwgMTAxMzQ1LCAxMDEzNTAsIDEwMTM1NSwgMTAxMzYwLCAxMDEzNjYsIAorICAgIDEwMTM3MiwgMTAxMzc4LCAxMDEzODMsIDEwMTM4OCwgMTAxMzkzLCAxMDEzOTgsIDEwMTQwNCwgMTAxNDEwLCAxMDE0MTYsIAorICAgIDEwMTQyMSwgMTAxNDI2LCAxMDE0MzEsIDEwMTQzNiwgMTAxNDQxLCAxMDE0NDYsIDEwMTQ1MSwgMTAxNDU2LCAxMDE0NjEsIAorICAgIDE3Njg2LCAxMDE0NjYsIDEwMTQ3MiwgMTAxNDc3LCAxMDE0ODIsIDEwMTQ4NywgMTAxNDkyLCAxMDE0OTcsIDEwMTUwMywgCisgICAgMTAxNTA4LCAxMDE1MTMsIDEwMTUxOCwgMTAxNTIzLCAxMDE1MjgsIDEwMTUzNCwgMTAxNTM5LCAxMDE1NDQsIDEwMTU0OSwgCisgICAgMTAxNTU0LCAxMDE1NTksIDEwMTU2NCwgMTAxNTY5LCAxMDE1NzQsIDEwMTU3OSwgMTAxNTg0LCAxMDE1ODksIDEwMTU5NCwgCisgICAgMTAxNTk5LCAxMDE2MDQsIDEwMTYwOSwgMTAxNjE0LCAxMDE2MTksIDEwMTYyNCwgMTAxNjI5LCAxMDE2MzQsIDEwMTYzOSwgCisgICAgMTAxNjQ0LCAxMDE2NTAsIDEwMTY1NSwgMTAxNjYwLCAxMDE2NjUsIDEwMTY3MCwgMTAxNjc1LCAxMDE2ODAsIDEwMTY4NSwgCisgICAgMTAxNjkwLCAxMDE2OTUsIDEwMTcwMCwgMTAxNzA1LCAxMDE3MTAsIDEwMTcxNSwgMTAxNzIwLCAxMDE3MjUsIDEwMTczMCwgCisgICAgMTAxNzM1LCAxMDE3NDAsIDEwMTc0NSwgMTAxNzUwLCAxMDE3NTUsIDEwMTc2MCwgMTAxNzY1LCAxMDE3NzAsIDEwMTc3NSwgCisgICAgMTAxNzgwLCAxMDE3ODUsIDEwMTc5MCwgMTAxNzk1LCAxMDE4MDAsIDEwMTgwNSwgMTAxODEwLCAxMDE4MTUsIDEwMTgyMCwgCisgICAgMTAxODI1LCAxMDE4MzAsIDEwMTgzNSwgMTAxODQwLCAxMDE4NDUsIDEwMTg1MCwgMTAxODU2LCAxMDE4NjEsIDEwMTg2NiwgCisgICAgMTAxODcxLCAxMDE4NzYsIDEwMTg4MSwgMTAxODg2LCAxMDE4OTEsIDEwMTg5NiwgMTAxOTAxLCAxMDE5MDYsIDEwMTkxMSwgCisgICAgMTAxOTE3LCAxMDE5MjIsIDEwMTkyOCwgMTAxOTMzLCAxMDE5MzgsIDEwMTk0MywgMTAxOTQ4LCAxMDE5NTMsIDEwMTk1OCwgCisgICAgMTAxOTY0LCAxMDE5NjksIDEwMTk3NCwgMTAxOTgwLCAxMDE5ODUsIDEwMTk5MCwgMTAxOTk1LCAxMDIwMDAsIDEwMjAwNSwgCisgICAgMTAyMDExLCAxMDIwMTcsIDEwMjAyMiwgMTAyMDI3LCAxMzMyMSwgMTAyMDMyLCAxMDIwMzcsIDEwMjA0MiwgMTAyMDQ3LCAKKyAgICAxMDIwNTIsIDEwMjA1NywgMTAyMDYyLCAxMDIwNjcsIDEwMjA3MiwgMTAyMDc3LCAxMDIwODIsIDEwMjA4NywgMTAyMDkyLCAKKyAgICAxMDIwOTcsIDEwMjEwMiwgMTAyMTA3LCAxMDIxMTIsIDEwMjExNywgMTAyMTIyLCAxMDIxMjcsIDEwMjEzMiwgMTAyMTM3LCAKKyAgICAxMDIxNDIsIDEwMjE0NywgMTAyMTUyLCAxMDIxNTcsIDEwMjE2MiwgMTAyMTY3LCAxMDIxNzIsIDEwMjE3NywgMTAyMTgyLCAKKyAgICAxMDIxODcsIDEwMjE5MiwgMTAyMTk3LCAxMDIyMDIsIDEwMjIwNywgMTAyMjEyLCAxMDIyMTcsIDEwMjIyMiwgMTAyMjI3LCAKKyAgICAxMDIyMzIsIDEwMjIzNywgMTAyMjQyLCAxMDIyNDcsIDEwMjI1MiwgMTAyMjU3LCAxMDIyNjIsIDEwMjI2NywgMTAyMjcyLCAKKyAgICAxMDIyNzcsIDEwMjI4MiwgMTAyMjg3LCAxMDIyOTIsIDEwMjI5NywgMTAyMzAyLCAxMDIzMDcsIDEwMjMxMiwgMTAyMzE3LCAKKyAgICAxMDIzMjIsIDEwMjMyNywgMTAyMzMyLCAxMDIzMzcsIDEwMjM0MiwgMTAyMzQ3LCAxMDIzNTIsIDEwMjM1OCwgMTAyMzYzLCAKKyAgICAxMDIzNjgsIDEwMjM3MywgMTAyMzc4LCAxMDIzODQsIDEwMjM4OSwgMTAyMzk0LCAxMDIzOTksIDEwMjQwNCwgMTAyNDA5LCAKKyAgICAxMDI0MTQsIDEwMjQyMCwgMTAyNDI1LCAxMDI0MzAsIDEwMjQzNSwgMTAyNDQwLCAxMDI0NDUsIDEwMjQ1MSwgMTAyNDU2LCAKKyAgICAxMDI0NjEsIDEwMjQ2NiwgMTAyNDcxLCAxMDI0NzYsIDEwMjQ4MiwgMTAyNDg3LCAxMDI0OTIsIDEwMjQ5NywgMTAyNTAyLCAKKyAgICAxMDI1MDcsIDEwMjUxMywgMTAyNTE5LCAxMDI1MjQsIDEwMjUyOSwgMTAyNTM0LCAxMDI1NDAsIDEwMjU0NiwgMTAyNTUyLCAKKyAgICAxMDI1NTcsIDEwMjU2MiwgMTAyNTY4LCAxMDI1NzQsIDEwMjU3OSwgMTAyNTg1LCAxMDI1OTEsIDEwMjU5NywgMTAyNjAyLCAKKyAgICAxMDI2MDcsIDEwMjYxMywgMTAyNjE4LCAxMDI2MjQsIDEwMjYyOSwgMTAyNjM1LCAxMDI2NDQsIDEwMjY0OSwgMTAyNjU0LCAKKyAgICAxMDI2NjAsIDEwMjY2NSwgMTAyNjcxLCAxMDI2NzYsIDEwMjY4MSwgMTAyNjg2LCAxMDI2OTEsIDEwMjY5NiwgMTAyNzAxLCAKKyAgICAxMDI3MDYsIDEwMjcxMSwgMTAyNzE2LCAxMDI3MjEsIDEwMjcyNiwgMTAyNzMxLCAxMDI3MzYsIDEwMjc0MSwgMTAyNzQ2LCAKKyAgICAxMDI3NTEsIDEwMjc1NiwgMTAyNzYxLCAxMDI3NjYsIDEwMjc3MSwgMTAyNzc2LCAxMDI3ODEsIDEwMjc4NiwgMTAyNzkxLCAKKyAgICAxMDI3OTYsIDEwMjgwMSwgMTAyODA2LCAxMDI4MTEsIDEwMjgxNiwgMTAyODIxLCAxMDI4MjYsIDEwMjgzMiwgMTAyODM4LCAKKyAgICAxMDI4NDQsIDEwMjg0OSwgMTAyODU0LCAxMDI4NTksIDEwMjg2NCwgMTAyODY5LCAxMDI4NzQsIDEwMjg3OSwgMTAyODg0LCAKKyAgICAxMDI4ODksIDEwMjg5NCwgMTAyODk5LCAxMDI5MDQsIDEwMjkwOSwgMTAyOTE0LCAxMDI5MTksIDEwMjkyNCwgMTAyOTI5LCAKKyAgICAxMDI5MzQsIDEwMjkzOSwgMTAyOTQ0LCAxMDI5NTAsIDEwMjk1NiwgMTAyOTYxLCAxMDI5NjcsIDEwMjk3MiwgMTAyOTc3LCAKKyAgICAxMDI5ODMsIDEwMjk4OCwgMTAyOTk0LCAxMDI5OTksIDEwMzAwNSwgMTAzMDEwLCAxMDMwMTYsIDEwMzAyMSwgMTAzMDI3LCAKKyAgICAxMDMwMzIsIDEwMzAzNywgMTAzMDQyLCAxMDMwNDcsIDEwMzA1MiwgMTAzMDU3LCAxMDMwNjIsIDk5MTQwLCA5OTE0NiwgCisgICAgOTkxNTIsIDk5MTU4LCAxMDMwNjgsIDk5MTY0LCA5OTE3MCwgMTAzMDc0LCA5OTE3NiwgOTkxODIsIDk5MTg4LCA5OTE5NCwgCisgICAgOTkyMDAsIDk5MjA2LCA5OTIxMiwgOTkyMTgsIDk5MjI0LCAxMDMwODAsIDk5MjMwLCA5OTIzNiwgOTkyNDIsIDEwMzA4NiwgCisgICAgOTkyNDgsIDk5MjU0LCA5OTI2MCwgOTkyNjYsIDEwMzA5MiwgOTkyNzIsIDk5Mjc4LCA5OTI4NCwgOTkzMDQsIDEwMzA5OCwgCisgICAgMTAzMTA0LCA5OTMxMCwgMTAzMTEwLCA5OTMxNiwgOTkzMjIsIDk5MzI4LCA5OTMzNCwgOTkzNDAsIDMxMzksIDMxNDQsIAorICAgIDEwMzExNiwgMTAzMTIxLCAxMDMxMjQsIDEwMzEzMCwgMTAzMTM2LCAxMDMxNDMsIDEwMzE0OCwgMTAzMTUzLCAyMzIyLCAKIH07CiAKIC8qIGNvZGUtPm5hbWUgcGhyYXNlYm9vayAqLwogI2RlZmluZSBwaHJhc2Vib29rX3NoaWZ0IDgKLSNkZWZpbmUgcGhyYXNlYm9va19zaG9ydCAyMDEKKyNkZWZpbmUgcGhyYXNlYm9va19zaG9ydCAxOTgKIHN0YXRpYyB1bnNpZ25lZCBjaGFyIHBocmFzZWJvb2tbXSA9IHsKLSAgICAwLCAyMTEsIDIyOCwgMjQwLCAyMTIsIDgyLCAyMTcsIDMxLCA4MiwgNDIsIDU0LCAyNDMsIDk3LCA1NCwgMjE4LCAyNDYsIAotICAgIDU0LCAyNTAsIDIzNSwgMjUwLCAxNjAsIDQ5LCAyMTksIDc2LCA1MCwgMjE5LCA3NiwgMjUwLCA1OSwgOTEsIDU0LCAyNDUsIAotICAgIDIzMywgMjM1LCAyMTksIDIzOSwgMTAyLCAyMTEsIDYxLCAyMTIsIDAsIDE3LCAyMDIsIDg0LCAxNywgMTA1LCAxNywgMTA4LCAKLSAgICAxNywgMTQ3LCAxNywgMTQ5LCAxNywgMTcwLCAxNywgMTk1LCAxNywgMjEzLCAxMTEsIDE3LCAxOTksIDE3LCAyMjIsIDYzLCAKLSAgICAyNDUsIDI0MiwgMjEzLCAxNDMsIDIyNywgMTc5LCA1NCwgMjQxLCAzNSwgNTQsIDIzNywgMjQ3LCA1NCwgMjE3LCA0NywgODIsIAotICAgIDI0NSwgMjMxLCAyNTAsIDQ5LCA4LCA2LCAxLCA2MywgOCwgNiwgMSwgMjQ5LCAyNTUsIDgsIDYsIDEsIDI0NywgMTI1LCA4LCAKLSAgICA2LCAxLCAyNDUsIDUxLCA4LCA2LCAxLCA3NCwgOCwgNiwgMSwgMjQwLCAxNzQsIDgsIDYsIDEsIDIzOSwgNzUsIDgsIDYsIDEsIAotICAgIDIzNywgMTcxLCA4LCA2LCAxLCA3NSwgOCwgNiwgMSwgMjMwLCAxODQsIDgsIDYsIDEsIDIzMCwgNTQsIDgsIDYsIDEsIDE1OSwgCi0gICAgOCwgNiwgMSwgMjI2LCAxODUsIDgsIDYsIDEsIDIyMywgMTYzLCA4LCA2LCAxLCA3OCwgOCwgNiwgMSwgMjE5LCAxODQsIDgsIAotICAgIDYsIDEsIDIxNywgMTM0LCA4LCA2LCAxLCAxNDYsIDgsIDYsIDEsIDE5NCwgOCwgNiwgMSwgMjEwLCA2OSwgOCwgNiwgMSwgCi0gICAgNjgsIDgsIDYsIDEsIDIwNiwgMTY0LCA4LCA2LCAxLCAyMDQsIDE0NCwgOCwgNiwgMSwgMjAzLCAxOTYsIDgsIDYsIDEsIAotICAgIDIwMywgMTI0LCA4LCA2LCAxLCAyMDIsIDE1OSwgNDksIDUxLCAxNTUsIDIxNiwgNzQsIDIxMiwgMCwgNTAsIDUxLCAxNTUsIAotICAgIDI0NiwgNTMsIDI1MSwgMTM4LCAxMjQsIDIyNywgMTE0LCAyMzcsIDI1NCwgMjUxLCAxMzgsIDgsIDUsIDEsIDYzLCA4LCA1LCAKLSAgICAxLCAyNDksIDI1NSwgOCwgNSwgMSwgMjQ3LCAxMjUsIDgsIDUsIDEsIDI0NSwgNTEsIDgsIDUsIDEsIDc0LCA4LCA1LCAxLCAKLSAgICAyNDAsIDE3NCwgOCwgNSwgMSwgMjM5LCA3NSwgOCwgNSwgMSwgMjM3LCAxNzEsIDgsIDUsIDEsIDc1LCA4LCA1LCAxLCAyMzAsIAotICAgIDE4NCwgOCwgNSwgMSwgMjMwLCA1NCwgOCwgNSwgMSwgMTU5LCA4LCA1LCAxLCAyMjYsIDE4NSwgOCwgNSwgMSwgMjIzLCAKLSAgICAxNjMsIDgsIDUsIDEsIDc4LCA4LCA1LCAxLCAyMTksIDE4NCwgOCwgNSwgMSwgMjE3LCAxMzQsIDgsIDUsIDEsIDE0NiwgOCwgCi0gICAgNSwgMSwgMTk0LCA4LCA1LCAxLCAyMTAsIDY5LCA4LCA1LCAxLCA2OCwgOCwgNSwgMSwgMjA2LCAxNjQsIDgsIDUsIDEsIAotICAgIDIwNCwgMTQ0LCA4LCA1LCAxLCAyMDMsIDE5NiwgOCwgNSwgMSwgMjAzLCAxMjQsIDgsIDUsIDEsIDIwMiwgMTU5LCA0OSwgCi0gICAgMjQ1LCA5MywgMTU1LCA4MCwgMjI3LCAxMTQsIDUwLCAyNDUsIDkzLCAxNTUsIDIwOCwgMjI3LCAyMjEsIDE5MCwgMjExLCAKLSAgICAyMjgsIDIzMCwgMjM5LCAyNDAsIDIxMiwgODIsIDI0NiwgMjIwLCA1NCwgMjE4LCAyMCwgNTQsIDI0NSwgOTIsIDU0LCAyMDMsIAotICAgIDQzLCA1NCwgMjQ3LCAyMDMsIDE0MiwgMjE0LCAxNjgsIDU0LCAyNDMsIDIzMSwgMjQ1LCAxNjksIDU0LCAyNDAsIDQxLCAKLSAgICAyMTksIDI0MCwgMjMxLCAzMSwgMjI3LCAyMTcsIDUyLCAyNTAsIDIxOCwgMjE3LCAzMSwgODIsIDIyMSwgMTY2LCA1NCwgCi0gICAgMjEyLCA3LCAyMzUsIDIyMCwgMjE2LCAxMjksIDU0LCAyMjUsIDE3MCwgMjQ0LCA1NSwgNTQsIDIxOCwgNzUsIDU0LCAyMTAsIAotICAgIDE5OSwgMTA4LCAyMTAsIDE5OSwgMTQ3LCAyNTEsIDEyNiwgMjUxLCAxMzgsIDIyNCwgMTUzLCA1NCwgMjE4LCAxMjYsIDU0LCAKLSAgICAxMDEsIDI0MywgODUsIDI0NiwgMjMxLCAyMTAsIDE5OSwgMTA1LCAyMjUsIDgwLCAyMTksIDI0MCwgMjMxLCAzMSwgMjE2LCAKLSAgICAxMSwgNTIsIDI1MCwgMjE4LCAyMTcsIDMxLCA4MiwgMjA0LCAxNjEsIDIzOSwgMTM4LCAxMTgsIDIxNywgNTUsIDIwNCwgCi0gICAgMTYxLCAyMzksIDEzOCwgMTE4LCAyMzcsIDEzNywgMjA0LCAxNjEsIDIzOSwgMTM4LCAxMjYsIDIxNywgNTMsIDIzMCwgMjM5LCAKLSAgICAyMTcsIDQ3LCA4MiwgOCwgNiwgMSwgMzQsIDMsIDIzNywgMjUzLCA4LCA2LCAxLCAzNCwgMywgMTY1LCA4LCA2LCAxLCAzNCwgCi0gICAgMywgMjQ2LCA1MiwgOCwgNiwgMSwgMzQsIDMsIDIwOCwgMjI3LCA4LCA2LCAxLCAzNCwgMywgMjQzLCAyMzEsIDgsIDYsIDEsIAotICAgIDM0LCAzLCAyMTUsIDI1MywgNTUsIDgsIDYsIDEsIDI1MSwgMTA5LCA4LCA2LCAxLCAyNDcsIDEyNiwgMywgMjQ2LCAyMzEsIAotICAgIDgsIDYsIDEsIDE4OCwgMywgMjM3LCAyNTMsIDgsIDYsIDEsIDE4OCwgMywgMTY1LCA4LCA2LCAxLCAxODgsIDMsIDI0NiwgCi0gICAgNTIsIDgsIDYsIDEsIDE4OCwgMywgMjQzLCAyMzEsIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCAyMzcsIDI1MywgOCwgNiwgMSwgCi0gICAgMjM1LCAyMDYsIDMsIDE2NSwgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIDI0NiwgNTIsIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCAKLSAgICAyNDMsIDIzMSwgOCwgNiwgMSwgMjQwLCAyNDMsIDgsIDYsIDEsIDIyMywgMTY0LCAzLCAyMDgsIDIyNywgOCwgNiwgMSwgCi0gICAgMTU4LCAzLCAyMzcsIDI1MywgOCwgNiwgMSwgMTU4LCAzLCAxNjUsIDgsIDYsIDEsIDE1OCwgMywgMjQ2LCA1MiwgOCwgNiwgCi0gICAgMSwgMTU4LCAzLCAyMDgsIDIyNywgOCwgNiwgMSwgMTU4LCAzLCAyNDMsIDIzMSwgMjIzLCAyMjQsIDU0LCA4LCA2LCAxLCAKLSAgICAxNTgsIDMsIDk1LCA4LCA2LCAxLCAxMDYsIDMsIDIzNywgMjUzLCA4LCA2LCAxLCAxMDYsIDMsIDE2NSwgOCwgNiwgMSwgCi0gICAgMTA2LCAzLCAyNDYsIDUyLCA4LCA2LCAxLCAxMDYsIDMsIDI0MywgMjMxLCA4LCA2LCAxLCAyMDMsIDEyNSwgMywgMTY1LCA4LCAKLSAgICA2LCAxLCAyMDksIDQwLCA4LCA1LCAxLCAyMTMsIDU3LCAxOTQsIDgsIDUsIDEsIDM0LCAzLCAyMzcsIDI1MywgOCwgNSwgMSwgCi0gICAgMzQsIDMsIDE2NSwgOCwgNSwgMSwgMzQsIDMsIDI0NiwgNTIsIDgsIDUsIDEsIDM0LCAzLCAyMDgsIDIyNywgOCwgNSwgMSwgCi0gICAgMzQsIDMsIDI0MywgMjMxLCA4LCA1LCAxLCAzNCwgMywgMjE1LCAyNTMsIDU1LCA4LCA1LCAxLCAyNTEsIDEwOSwgOCwgNSwgCi0gICAgMSwgMjQ3LCAxMjYsIDMsIDI0NiwgMjMxLCA4LCA1LCAxLCAxODgsIDMsIDIzNywgMjUzLCA4LCA1LCAxLCAxODgsIDMsIAotICAgIDE2NSwgOCwgNSwgMSwgMTg4LCAzLCAyNDYsIDUyLCA4LCA1LCAxLCAxODgsIDMsIDI0MywgMjMxLCA4LCA1LCAxLCAyMzUsIAotICAgIDIwNiwgMywgMjM3LCAyNTMsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCAxNjUsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCAyNDYsIAotICAgIDUyLCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgMjQzLCAyMzEsIDgsIDUsIDEsIDI0MCwgMjQzLCA4LCA1LCAxLCAyMjMsIDE2NCwgCi0gICAgMywgMjA4LCAyMjcsIDgsIDUsIDEsIDE1OCwgMywgMjM3LCAyNTMsIDgsIDUsIDEsIDE1OCwgMywgMTY1LCA4LCA1LCAxLCAKLSAgICAxNTgsIDMsIDI0NiwgNTIsIDgsIDUsIDEsIDE1OCwgMywgMjA4LCAyMjcsIDgsIDUsIDEsIDE1OCwgMywgMjQzLCAyMzEsIAotICAgIDI0MywgMTM3LCA1NCwgOCwgNSwgMSwgMTU4LCAzLCA5NSwgOCwgNSwgMSwgMTA2LCAzLCAyMzcsIDI1MywgOCwgNSwgMSwgCi0gICAgMTA2LCAzLCAxNjUsIDgsIDUsIDEsIDEwNiwgMywgMjQ2LCA1MiwgOCwgNSwgMSwgMTA2LCAzLCAyNDMsIDIzMSwgOCwgNSwgCi0gICAgMSwgMjAzLCAxMjUsIDMsIDE2NSwgOCwgNSwgMSwgMjA5LCA0MCwgOCwgNSwgMSwgMjAzLCAxMjUsIDMsIDI0MywgMjMxLCA4LCAKLSAgICA2LCAxLCAzNCwgMywgMjI1LCAxNzAsIDgsIDUsIDEsIDM0LCAzLCAyMjUsIDE3MCwgOCwgNiwgMSwgMzQsIDMsIDI0NywgCi0gICAgMjE0LCA4LCA1LCAxLCAzNCwgMywgMjQ3LCAyMTQsIDgsIDYsIDEsIDM0LCAzLCAyMjAsIDYyLCA4LCA1LCAxLCAzNCwgMywgCi0gICAgMjIwLCA2MiwgOCwgNiwgMSwgMjQ3LCAxMjYsIDMsIDE2NSwgOCwgNSwgMSwgMjQ3LCAxMjYsIDMsIDE2NSwgOCwgNiwgMSwgCi0gICAgMjQ3LCAxMjYsIDMsIDI0NiwgNTIsIDgsIDUsIDEsIDI0NywgMTI2LCAzLCAyNDYsIDUyLCA4LCA2LCAxLCAyNDcsIDEyNiwgCi0gICAgMywgNzAsIDU1LCA4LCA1LCAxLCAyNDcsIDEyNiwgMywgNzAsIDU1LCA4LCA2LCAxLCAyNDcsIDEyNiwgMywgMjQ3LCAyOSwgCi0gICAgOCwgNSwgMSwgMjQ3LCAxMjYsIDMsIDI0NywgMjksIDgsIDYsIDEsIDI0NSwgNTIsIDMsIDI0NywgMjksIDgsIDUsIDEsIAotICAgIDI0NSwgNTIsIDMsIDI0NywgMjksIDgsIDYsIDEsIDI0NSwgNTIsIDMsIDk1LCA4LCA1LCAxLCAyNDUsIDUyLCAzLCA5NSwgOCwgCi0gICAgNiwgMSwgMTg4LCAzLCAyMjUsIDE3MCwgOCwgNSwgMSwgMTg4LCAzLCAyMjUsIDE3MCwgOCwgNiwgMSwgMTg4LCAzLCAyNDcsIAotICAgIDIxNCwgOCwgNSwgMSwgMTg4LCAzLCAyNDcsIDIxNCwgOCwgNiwgMSwgMTg4LCAzLCA3MCwgNTUsIDgsIDUsIDEsIDE4OCwgMywgCi0gICAgNzAsIDU1LCA4LCA2LCAxLCAxODgsIDMsIDIyMCwgNjIsIDgsIDUsIDEsIDE4OCwgMywgMjIwLCA2MiwgOCwgNiwgMSwgMTg4LCAKLSAgICAzLCAyNDcsIDI5LCA4LCA1LCAxLCAxODgsIDMsIDI0NywgMjksIDgsIDYsIDEsIDIzOSwgNzYsIDMsIDI0NiwgNTIsIDgsIDUsIAotICAgIDEsIDIzOSwgNzYsIDMsIDI0NiwgNTIsIDgsIDYsIDEsIDIzOSwgNzYsIDMsIDI0NywgMjE0LCA4LCA1LCAxLCAyMzksIDc2LCAKLSAgICAzLCAyNDcsIDIxNCwgOCwgNiwgMSwgMjM5LCA3NiwgMywgNzAsIDU1LCA4LCA1LCAxLCAyMzksIDc2LCAzLCA3MCwgNTUsIDgsIAotICAgIDYsIDEsIDIzOSwgNzYsIDMsIDI0NiwgMjMxLCA4LCA1LCAxLCAyMzksIDc2LCAzLCAyNDYsIDIzMSwgOCwgNiwgMSwgMjM3LCAKLSAgICAxNzIsIDMsIDI0NiwgNTIsIDgsIDUsIDEsIDIzNywgMTcyLCAzLCAyNDYsIDUyLCA4LCA2LCAxLCAyMzcsIDE3MiwgMywgOTUsIAotICAgIDgsIDUsIDEsIDIzNywgMTcyLCAzLCA5NSwgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIDIwOCwgMjI3LCA4LCA1LCAxLCAyMzUsIAotICAgIDIwNiwgMywgMjA4LCAyMjcsIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCAyMjUsIDE3MCwgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIAotICAgIDIyNSwgMTcwLCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgMjQ3LCAyMTQsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCAyNDcsIDIxNCwgCi0gICAgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIDIyMCwgNjIsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCAyMjAsIDYyLCA4LCA2LCAxLCAKLSAgICAyMzUsIDIwNiwgMywgNzAsIDU1LCA4LCA1LCAxLCAyNDMsIDg0LCA3NSwgOCwgNiwgMzIsIDIzMSwgODEsIDgsIDUsIDMyLCAKLSAgICAyMzEsIDgxLCA4LCA2LCAxLCAyMzAsIDE4NSwgMywgMjQ2LCA1MiwgOCwgNSwgMSwgMjMwLCAxODUsIDMsIDI0NiwgNTIsIDgsIAotICAgIDYsIDEsIDIzMCwgNTUsIDMsIDI0NiwgMjMxLCA4LCA1LCAxLCAyMzAsIDU1LCAzLCAyNDYsIDIzMSwgOCwgNSwgMSwgMjI4LCAKLSAgICAyMzEsIDgsIDYsIDEsIDIyOCwgMTMxLCAzLCAxNjUsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAxNjUsIDgsIDYsIDEsIDIyOCwgCi0gICAgMTMxLCAzLCAyNDYsIDIzMSwgOCwgNSwgMSwgMjI4LCAxMzEsIDMsIDI0NiwgMjMxLCA4LCA2LCAxLCAyMjgsIDEzMSwgMywgCi0gICAgMjQ3LCAyOSwgOCwgNSwgMSwgMjI4LCAxMzEsIDMsIDI0NywgMjksIDgsIDYsIDEsIDIyOCwgMTMxLCAzLCAxMDEsIDI0MywgCi0gICAgODUsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAxMDEsIDI0MywgODUsIDgsIDYsIDEsIDIyOCwgMTMxLCAzLCA5NSwgOCwgNSwgCi0gICAgMSwgMjI4LCAxMzEsIDMsIDk1LCA4LCA2LCAxLCAyMjMsIDE2NCwgMywgMTY1LCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgMTY1LCAKLSAgICA4LCA2LCAxLCAyMjMsIDE2NCwgMywgMjQ2LCAyMzEsIDgsIDUsIDEsIDIyMywgMTY0LCAzLCAyNDYsIDIzMSwgOCwgNiwgMSwgCi0gICAgMjIzLCAxNjQsIDMsIDI0NywgMjksIDgsIDUsIDEsIDIyMywgMTY0LCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAyMjMsIDE2NCwgCi0gICAgMjE3LCAyNTEsIDI0NywgMTM3LCAyNTAsIDE2MCwgOCwgNiwgMSwgMjQxLCA3OCwgOCwgNSwgMSwgMjQxLCA3OCwgOCwgNiwgCi0gICAgMSwgMTU4LCAzLCAyMjUsIDE3MCwgOCwgNSwgMSwgMTU4LCAzLCAyMjUsIDE3MCwgOCwgNiwgMSwgMTU4LCAzLCAyNDcsIAotICAgIDIxNCwgOCwgNSwgMSwgMTU4LCAzLCAyNDcsIDIxNCwgOCwgNiwgMSwgMTU4LCAzLCA1MiwgMTY1LCA4LCA1LCAxLCAxNTgsIAotICAgIDMsIDUyLCAxNjUsIDgsIDYsIDMyLCAyMjAsIDczLCA4LCA1LCAzMiwgMjIwLCA3MywgOCwgNiwgMSwgMjE3LCAxLCAzLCAKLSAgICAxNjUsIDgsIDUsIDEsIDIxNywgMSwgMywgMTY1LCA4LCA2LCAxLCAyMTcsIDEsIDMsIDI0NiwgMjMxLCA4LCA1LCAxLCAyMTcsIAotICAgIDEsIDMsIDI0NiwgMjMxLCA4LCA2LCAxLCAyMTcsIDEsIDMsIDI0NywgMjksIDgsIDUsIDEsIDIxNywgMSwgMywgMjQ3LCAyOSwgCi0gICAgOCwgNiwgMSwgMjE1LCA5NCwgMywgMTY1LCA4LCA1LCAxLCAyMTUsIDk0LCAzLCAxNjUsIDgsIDYsIDEsIDIxNSwgOTQsIDMsIAotICAgIDI0NiwgNTIsIDgsIDUsIDEsIDIxNSwgOTQsIDMsIDI0NiwgNTIsIDgsIDYsIDEsIDIxNSwgOTQsIDMsIDI0NiwgMjMxLCA4LCAKLSAgICA1LCAxLCAyMTUsIDk0LCAzLCAyNDYsIDIzMSwgOCwgNiwgMSwgMjE1LCA5NCwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMjE1LCAKLSAgICA5NCwgMywgMjQ3LCAyOSwgOCwgNiwgMSwgMjEwLCA3MCwgMywgMjQ2LCAyMzEsIDgsIDUsIDEsIDIxMCwgNzAsIDMsIDI0NiwgCi0gICAgMjMxLCA4LCA2LCAxLCAyMTAsIDcwLCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAyMTAsIDcwLCAzLCAyNDcsIDI5LCA4LCA2LCAxLCAKLSAgICAyMTAsIDcwLCAzLCA5NSwgOCwgNSwgMSwgMjEwLCA3MCwgMywgOTUsIDgsIDYsIDEsIDEwNiwgMywgMjA4LCAyMjcsIDgsIDUsIAotICAgIDEsIDEwNiwgMywgMjA4LCAyMjcsIDgsIDYsIDEsIDEwNiwgMywgMjI1LCAxNzAsIDgsIDUsIDEsIDEwNiwgMywgMjI1LCAKLSAgICAxNzAsIDgsIDYsIDEsIDEwNiwgMywgMjQ3LCAyMTQsIDgsIDUsIDEsIDEwNiwgMywgMjQ3LCAyMTQsIDgsIDYsIDEsIDEwNiwgCi0gICAgMywgMjE1LCAyNTMsIDU1LCA4LCA1LCAxLCAxMDYsIDMsIDIxNSwgMjUzLCA1NSwgOCwgNiwgMSwgMTA2LCAzLCA1MiwgMTY1LCAKLSAgICA4LCA1LCAxLCAxMDYsIDMsIDUyLCAxNjUsIDgsIDYsIDEsIDEwNiwgMywgMjIwLCA2MiwgOCwgNSwgMSwgMTA2LCAzLCAyMjAsIAotICAgIDYyLCA4LCA2LCAxLCAyMDQsIDE0NSwgMywgMjQ2LCA1MiwgOCwgNSwgMSwgMjA0LCAxNDUsIDMsIDI0NiwgNTIsIDgsIDYsIAotICAgIDEsIDIwMywgMTI1LCAzLCAyNDYsIDUyLCA4LCA1LCAxLCAyMDMsIDEyNSwgMywgMjQ2LCA1MiwgOCwgNiwgMSwgMjAzLCAKLSAgICAxMjUsIDMsIDI0MywgMjMxLCA4LCA2LCAxLCAyMDIsIDE2MCwgMywgMTY1LCA4LCA1LCAxLCAyMDIsIDE2MCwgMywgMTY1LCAKLSAgICA4LCA2LCAxLCAyMDIsIDE2MCwgMywgNzAsIDU1LCA4LCA1LCAxLCAyMDIsIDE2MCwgMywgNzAsIDU1LCA4LCA2LCAxLCAyMDIsIAotICAgIDE2MCwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMjAyLCAxNjAsIDMsIDI0NywgMjksIDgsIDUsIDEsIDE2MywgMTk0LCA4LCA1LCAKLSAgICAxLCA2NiwgMywgOTUsIDgsIDYsIDEsIDY2LCAzLCAxMTMsIDgsIDYsIDEsIDY2LCAzLCAyMDgsIDE0MiwgOCwgNSwgMSwgNjYsIAotICAgIDMsIDIwOCwgMTQyLCA4LCA2LCAxLCAxNDMsIDE5NSwgOCwgNSwgMSwgMTQzLCAxOTUsIDgsIDYsIDEsIDE3MSwgNzgsIDgsIAotICAgIDYsIDEsIDI0NywgMTI2LCAzLCAxMTMsIDgsIDUsIDEsIDI0NywgMTI2LCAzLCAxMTMsIDgsIDYsIDEsIDI1MSwgODQsIDI0NSwgCi0gICAgNTEsIDgsIDYsIDEsIDI0NSwgNTIsIDMsIDExMywgOCwgNiwgMSwgMjQ1LCA1MiwgMywgMjA4LCAxNDIsIDgsIDUsIDEsIAotICAgIDI0NSwgNTIsIDMsIDIwOCwgMTQyLCA4LCA1LCAxLCAyMDcsIDE3NCwgMjQ0LCAzNywgOCwgNiwgMSwgMjE2LCA3MywgNzQsIAotICAgIDgsIDYsIDEsIDIxNCwgMTkyLCA4LCA2LCAxLCAxNzEsIDc0LCA4LCA2LCAxLCAyNDAsIDE3NSwgMywgMTEzLCA4LCA1LCAxLCAKLSAgICAyNDAsIDE3NSwgMywgMTEzLCA4LCA2LCAxLCAyMzksIDc2LCAzLCAxMTMsIDgsIDYsIDEsIDIzOCwgMjM1LCA4LCA1LCAxLCAKLSAgICAyMzUsIDI1NSwgOCwgNiwgMSwgMjMwLCAyMzAsIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCA5NSwgOCwgNiwgMSwgMjMwLCA1NSwgCi0gICAgMywgMTEzLCA4LCA1LCAxLCAyMzAsIDU1LCAzLCAxMTMsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAxNDIsIDgsIDUsIDEsIAotICAgIDIyOCwgMjYsIDMsIDk1LCA4LCA2LCAxLCAyMDcsIDE3NCwgMjI2LCAxODUsIDgsIDYsIDEsIDIyMywgMTY0LCAzLCA0OSwgCi0gICAgMTEzLCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgMTYzLCA1MCwgMjI3LCAyMTAsIDgsIDYsIDEsIDE1OCwgMywgMTAxLCAyMDgsIAotICAgIDIyNywgOCwgNiwgMSwgMTU4LCAzLCAyMzYsIDUzLCA4LCA1LCAxLCAxNTgsIDMsIDIzNiwgNTMsIDgsIDYsIDEsIDIyMCwgCi0gICAgNTcsIDgsIDUsIDEsIDIyMCwgNTcsIDgsIDYsIDEsIDIxOSwgMTg1LCAzLCAxMTMsIDgsIDUsIDEsIDIxOSwgMTg1LCAzLCAKLSAgICAxMTMsIDgsIDEsIDIwMiwgMjE2LCA4LCA2LCAxLCAxNDMsIDEwOCwgOCwgNSwgMSwgMTQzLCAxMDgsIDgsIDYsIDEsIDI0MSwgCi0gICAgNywgOCwgMSwgMjE2LCA3MywgMjQxLCA4LCAyMjcsIDE0LCA4LCA1LCAxLCAyMTAsIDcwLCAzLCAyMTksIDE0MiwgMTEzLCA4LCAKLSAgICA2LCAxLCAyMTAsIDcwLCAzLCAxMTMsIDgsIDUsIDEsIDIxMCwgNzAsIDMsIDExMywgOCwgNiwgMSwgMjEwLCA3MCwgMywgCi0gICAgMjE2LCA3OSwgMTEzLCA4LCA2LCAxLCAxMDYsIDMsIDIzNiwgNTMsIDgsIDUsIDEsIDEwNiwgMywgMjM2LCA1MywgOCwgNiwgCi0gICAgMSwgMjA2LCAyMTYsIDgsIDYsIDEsIDIwNiwgMTY1LCAzLCAxMTMsIDgsIDYsIDEsIDIwMywgMTI1LCAzLCAxMTMsIDgsIDUsIAotICAgIDEsIDIwMywgMTI1LCAzLCAxMTMsIDgsIDYsIDEsIDIwMiwgMTYwLCAzLCA5NSwgOCwgNSwgMSwgMjAyLCAxNjAsIDMsIDk1LCAKLSAgICA4LCA2LCAxLCAyNDAsIDE3NywgOCwgNiwgMSwgMjQwLCAxNzgsIDIxNiwgNzIsIDgsIDUsIDEsIDI0MCwgMTc4LCAyMTYsIAotICAgIDcyLCA4LCA1LCAxLCAyNDAsIDE3OCwgMywgMjA5LCAyNDgsIDgsIDEsIDEyMCwgMywgOTUsIDgsIDYsIDEsIDE0MywgMTcwLCAKLSAgICA4LCA1LCAxLCAxNDMsIDE3MCwgOCwgMSwgMjMwLCAyMzksIDIzOCwgNDUsIDIxMSwgNjIsIDMsIDk1LCA4LCAxLCAyMDMsIAotICAgIDE5OSwgOCwgMSwgMjQ0LCAzMCwgMjQ2LCAyNywgOCwgMSwgMjI3LCAyNTQsIDI0NiwgMjcsIDgsIDEsIDI1MCwgMjQ4LCAKLSAgICAyNDYsIDI3LCA4LCAxLCAyMTYsIDc5LCAyNDYsIDI3LCA4LCA2LCAxLCAyNDIsIDEsIDMsIDI0NywgMjksIDgsIDYsIDEsIAotICAgIDI0NSwgNTIsIDMsIDUsIDEsIDIwMiwgMTYwLCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAyNDIsIDEsIDMsIDI0NywgMjksIDgsIAotICAgIDYsIDEsIDIyNywgODEsIDgsIDYsIDEsIDIyOCwgMTMxLCAzLCA1LCAxLCAyMzAsIDE4NCwgOCwgNSwgMSwgMjI3LCA4MSwgOCwgCi0gICAgNiwgMSwgMjIyLCA0OSwgOCwgNiwgMSwgMjIzLCAxNjQsIDMsIDUsIDEsIDIzMCwgMTg0LCA4LCA1LCAxLCAyMjIsIDQ5LCA4LCAKLSAgICA2LCAxLCAzNCwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMzQsIDMsIDI0NywgMjksIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCAyNDcsIAotICAgIDI5LCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgMjQ3LCAyOSwgOCwgNiwgMSwgMTU4LCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAKLSAgICAxNTgsIDMsIDI0NywgMjksIDgsIDYsIDEsIDEwNiwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMTA2LCAzLCAyNDcsIDI5LCA4LCAKLSAgICA2LCAxLCAxMDYsIDMsIDI0MywgMjMyLCAyNSwgMjI1LCAxNzAsIDgsIDUsIDEsIDEwNiwgMywgMjQzLCAyMzIsIDI1LCAyMjUsIAotICAgIDE3MCwgOCwgNiwgMSwgMTA2LCAzLCAyNDMsIDIzMiwgMjUsIDE2NSwgOCwgNSwgMSwgMTA2LCAzLCAyNDMsIDIzMiwgMjUsIAotICAgIDE2NSwgOCwgNiwgMSwgMTA2LCAzLCAyNDMsIDIzMiwgMjUsIDI0NywgMjksIDgsIDUsIDEsIDEwNiwgMywgMjQzLCAyMzIsIAotICAgIDI1LCAyNDcsIDI5LCA4LCA2LCAxLCAxMDYsIDMsIDI0MywgMjMyLCAyNSwgMjM3LCAyNTMsIDgsIDUsIDEsIDEwNiwgMywgCi0gICAgMjQzLCAyMzIsIDI1LCAyMzcsIDI1MywgOCwgNSwgMSwgMjA3LCAxNzQsIDc0LCA4LCA2LCAxLCAzNCwgMywgMjQzLCAyMzIsIAotICAgIDI1LCAyMjUsIDE3MCwgOCwgNSwgMSwgMzQsIDMsIDI0MywgMjMyLCAyNSwgMjI1LCAxNzAsIDgsIDYsIDEsIDM0LCAzLCA3MCwgCi0gICAgODcsIDI1LCAyMjUsIDE3MCwgOCwgNSwgMSwgMzQsIDMsIDcwLCA4NywgMjUsIDIyNSwgMTcwLCA4LCA2LCAxLCAyNTEsIAotICAgIDExMCwgMywgMjI1LCAxNzAsIDgsIDUsIDEsIDI1MSwgMTEwLCAzLCAyMjUsIDE3MCwgOCwgNiwgMSwgMjM5LCA3NiwgMywgCi0gICAgOTUsIDgsIDUsIDEsIDIzOSwgNzYsIDMsIDk1LCA4LCA2LCAxLCAyMzksIDc2LCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAyMzksIAotICAgIDc2LCAzLCAyNDcsIDI5LCA4LCA2LCAxLCAyMzAsIDU1LCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAyMzAsIDU1LCAzLCAyNDcsIAotICAgIDI5LCA4LCA2LCAxLCAxNTgsIDMsIDIyMCwgNjIsIDgsIDUsIDEsIDE1OCwgMywgMjIwLCA2MiwgOCwgNiwgMSwgMTU4LCAzLCAKLSAgICAyMjAsIDYzLCAyNSwgMjI1LCAxNzAsIDgsIDUsIDEsIDE1OCwgMywgMjIwLCA2MywgMjUsIDIyNSwgMTcwLCA4LCA2LCAxLCAKLSAgICAyNDAsIDE3OCwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMjQwLCAxNzgsIDMsIDI0NywgMjksIDgsIDUsIDEsIDIzMCwgMTg1LCAKLSAgICAzLCAyNDcsIDI5LCA4LCA2LCAxLCAyNDIsIDAsIDgsIDYsIDEsIDI0NSwgNTIsIDMsIDUsIDEsIDIwMiwgMTU5LCA4LCA1LCAKLSAgICAxLCAyNDIsIDAsIDgsIDYsIDEsIDIzOSwgNzYsIDMsIDE2NSwgOCwgNSwgMSwgMjM5LCA3NiwgMywgMTY1LCA4LCA2LCAxLCAKLSAgICAyMzUsIDI1MiwgOCwgNiwgMSwgMjAzLCAxOTksIDgsIDYsIDEsIDIyMywgMTY0LCAzLCAyMzcsIDI1MywgOCwgNSwgMSwgCi0gICAgMjIzLCAxNjQsIDMsIDIzNywgMjUzLCA4LCA2LCAxLCAzNCwgMywgMjE1LCAyNTMsIDg3LCAyNSwgMTY1LCA4LCA1LCAxLCAKLSAgICAzNCwgMywgMjE1LCAyNTMsIDg3LCAyNSwgMTY1LCA4LCA2LCAxLCAyNTEsIDExMCwgMywgMTY1LCA4LCA1LCAxLCAyNTEsIAotICAgIDExMCwgMywgMTY1LCA4LCA2LCAxLCAxNTgsIDMsIDIxMSwgMzIsIDI1LCAxNjUsIDgsIDUsIDEsIDE1OCwgMywgMjExLCAzMiwgCi0gICAgMjUsIDE2NSwgOCwgNiwgMSwgMzQsIDMsIDUyLCAyMzcsIDI1MywgOCwgNSwgMSwgMzQsIDMsIDUyLCAyMzcsIDI1MywgOCwgCi0gICAgNiwgMSwgMzQsIDMsIDIzMCwgMjM5LCAyNDcsIDIxNCwgOCwgNSwgMSwgMzQsIDMsIDIzMCwgMjM5LCAyNDcsIDIxNCwgOCwgCi0gICAgNiwgMSwgMTg4LCAzLCA1MiwgMjM3LCAyNTMsIDgsIDUsIDEsIDE4OCwgMywgNTIsIDIzNywgMjUzLCA4LCA2LCAxLCAxODgsIAotICAgIDMsIDIzMCwgMjM5LCAyNDcsIDIxNCwgOCwgNSwgMSwgMTg4LCAzLCAyMzAsIDIzOSwgMjQ3LCAyMTQsIDgsIDYsIDEsIDIzNSwgCi0gICAgMjA2LCAzLCA1MiwgMjM3LCAyNTMsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCA1MiwgMjM3LCAyNTMsIDgsIDYsIDEsIDIzNSwgCi0gICAgMjA2LCAzLCAyMzAsIDIzOSwgMjQ3LCAyMTQsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCAyMzAsIDIzOSwgMjQ3LCAyMTQsIDgsIAotICAgIDYsIDEsIDE1OCwgMywgNTIsIDIzNywgMjUzLCA4LCA1LCAxLCAxNTgsIDMsIDUyLCAyMzcsIDI1MywgOCwgNiwgMSwgMTU4LCAKLSAgICAzLCAyMzAsIDIzOSwgMjQ3LCAyMTQsIDgsIDUsIDEsIDE1OCwgMywgMjMwLCAyMzksIDI0NywgMjE0LCA4LCA2LCAxLCAyMTcsIAotICAgIDEsIDMsIDUyLCAyMzcsIDI1MywgOCwgNSwgMSwgMjE3LCAxLCAzLCA1MiwgMjM3LCAyNTMsIDgsIDYsIDEsIDIxNywgMSwgMywgCi0gICAgMjMwLCAyMzksIDI0NywgMjE0LCA4LCA1LCAxLCAyMTcsIDEsIDMsIDIzMCwgMjM5LCAyNDcsIDIxNCwgOCwgNiwgMSwgMTA2LCAKLSAgICAzLCA1MiwgMjM3LCAyNTMsIDgsIDUsIDEsIDEwNiwgMywgNTIsIDIzNywgMjUzLCA4LCA2LCAxLCAxMDYsIDMsIDIzMCwgCi0gICAgMjM5LCAyNDcsIDIxNCwgOCwgNSwgMSwgMTA2LCAzLCAyMzAsIDIzOSwgMjQ3LCAyMTQsIDgsIDYsIDEsIDIxNSwgOTQsIDMsIAotICAgIDI0NSwgMjM0LCA1NiwgOCwgNSwgMSwgMjE1LCA5NCwgMywgMjQ1LCAyMzQsIDU2LCA4LCA2LCAxLCAyMTAsIDcwLCAzLCAKLSAgICAyNDUsIDIzNCwgNTYsIDgsIDUsIDEsIDIxMCwgNzAsIDMsIDI0NSwgMjM0LCA1NiwgOCwgNiwgMSwgMjAyLCAyMzQsIDgsIDUsIAotICAgIDEsIDIwMiwgMjM0LCA4LCA2LCAxLCAyMzcsIDE3MiwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMjM3LCAxNzIsIDMsIDI0NywgCi0gICAgMjksIDgsIDYsIDEsIDIyMywgMTY0LCAzLCAxNjMsIDUwLCAyMjcsIDIxMCwgOCwgNSwgMSwgMjQ1LCA1MiwgMywgMjQ1LCAKLSAgICA5NSwgOCwgNiwgMSwgMjE5LCAyMTYsIDgsIDUsIDEsIDIxOSwgMjE2LCA4LCA2LCAxLCAyMDIsIDE2MCwgMywgMTEzLCA4LCAKLSAgICA1LCAxLCAyMDIsIDE2MCwgMywgMTEzLCA4LCA2LCAxLCAzNCwgMywgNzAsIDU1LCA4LCA1LCAxLCAzNCwgMywgNzAsIDU1LCAKLSAgICA4LCA2LCAxLCAxODgsIDMsIDI0NiwgMjMxLCA4LCA1LCAxLCAxODgsIDMsIDI0NiwgMjMxLCA4LCA2LCAxLCAxNTgsIDMsIAotICAgIDI0MywgMjMyLCAyNSwgMjI1LCAxNzAsIDgsIDUsIDEsIDE1OCwgMywgMjQzLCAyMzIsIDI1LCAyMjUsIDE3MCwgOCwgNiwgMSwgCi0gICAgMTU4LCAzLCAyMDgsIDIyOCwgMjUsIDIyNSwgMTcwLCA4LCA1LCAxLCAxNTgsIDMsIDIwOCwgMjI4LCAyNSwgMjI1LCAxNzAsIAotICAgIDgsIDYsIDEsIDE1OCwgMywgNzAsIDU1LCA4LCA1LCAxLCAxNTgsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMTU4LCAzLCA3MCwgCi0gICAgODcsIDI1LCAyMjUsIDE3MCwgOCwgNSwgMSwgMTU4LCAzLCA3MCwgODcsIDI1LCAyMjUsIDE3MCwgOCwgNiwgMSwgMjAzLCAKLSAgICAxMjUsIDMsIDIyNSwgMTcwLCA4LCA1LCAxLCAyMDMsIDEyNSwgMywgMjI1LCAxNzAsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAKLSAgICAyNDUsIDk1LCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgMjQ1LCA5NSwgOCwgNSwgMSwgMjEwLCA3MCwgMywgMjQ1LCA5NSwgOCwgCi0gICAgNSwgMSwgMjQzLCA4NCwgMjMwLCAxODQsIDgsIDUsIDEsIDI0NCwgMTMwLCAyNDMsIDE5MSwgOCwgNSwgMSwgMjE3LCA2NiwgCi0gICAgMjQzLCAxOTEsIDgsIDYsIDEsIDM0LCAzLCA5NSwgOCwgNiwgMSwgMjQ3LCAxMjYsIDMsIDk1LCA4LCA1LCAxLCAyNDcsIAotICAgIDEyNiwgMywgOTUsIDgsIDYsIDEsIDIyOCwgMTMxLCAzLCAxNDIsIDgsIDYsIDEsIDIxMCwgNzAsIDMsIDI0MywgMjI4LCA5NSwgCi0gICAgOCwgNSwgMSwgMjE1LCA5NCwgMywgMjEwLCAxNjksIDIwOSwgMjQ4LCA4LCA1LCAxLCAyMDIsIDE2MCwgMywgMjEwLCAxNjksIAotICAgIDIwOSwgMjQ4LCA4LCA2LCAxLCAyMzgsIDQ1LCAyMTEsIDYxLCA4LCA1LCAxLCAyMzgsIDQ1LCAyMTEsIDYxLCA4LCA2LCAxLCAKLSAgICA2NiwgMywgOTUsIDgsIDYsIDEsIDEwNiwgMTQyLCA4LCA2LCAxLCAyMDcsIDE3NCwgMjA2LCAxNjQsIDgsIDYsIDEsIDE4OCwgCi0gICAgMywgOTUsIDgsIDUsIDEsIDE4OCwgMywgOTUsIDgsIDYsIDEsIDIzMCwgMTg1LCAzLCA5NSwgOCwgNSwgMSwgMjMwLCAxODUsIAotICAgIDMsIDk1LCA4LCA2LCAxLCA1LCAyMTcsIDEzNSwgMywgMjM2LCAxMTYsIDIwOSwgMjQ4LCA4LCA1LCAxLCAyMTcsIDEzNSwgMywgCi0gICAgMjM2LCAxMTYsIDIwOSwgMjQ4LCA4LCA2LCAxLCAyMTcsIDEsIDMsIDk1LCA4LCA1LCAxLCAyMTcsIDEsIDMsIDk1LCA4LCA2LCAKLSAgICAxLCAyMDMsIDEyNSwgMywgOTUsIDgsIDUsIDEsIDIwMywgMTI1LCAzLCA5NSwgOCwgNSwgMSwgMjA3LCAxNzQsIDYzLCA4LCAKLSAgICA1LCAxLCAyNTEsIDIsIDgsIDUsIDEsIDIwNywgMTc0LCAyNTEsIDIsIDgsIDUsIDEsIDY2LCAzLCAxMTMsIDgsIDUsIDEsIAotICAgIDE3MSwgNzgsIDgsIDUsIDEsIDI0NywgMTI2LCAzLCAyNDUsIDk1LCA4LCA1LCAxLCAyNDUsIDUyLCAzLCAyMDksIDI0OCwgOCwgCi0gICAgNSwgMSwgMjQ1LCA1MiwgMywgMTEzLCA4LCA1LCAxLCAyMTYsIDczLCA3NCwgOCwgNSwgMSwgMjE0LCAxOTIsIDgsIDUsIDEsIAotICAgIDIxNCwgMTkzLCAzLCAxMTMsIDgsIDUsIDEsIDE3MSwgNzQsIDgsIDUsIDEsIDIxNiwgNzMsIDE3MSwgNzQsIDgsIDUsIDEsIAotICAgIDIxNiwgNzMsIDE3MSwgMTg4LCAzLCAxMTMsIDgsIDUsIDEsIDI0NiwgMTYsIDIxNiwgNzMsIDE3MSwgNzQsIDgsIDUsIDEsIAotICAgIDI0MywgODQsIDIzMCwgMTg1LCAzLCA5NSwgOCwgNSwgMSwgMjM5LCA3NiwgMywgMTEzLCA4LCA1LCAxLCAxMzIsIDIzOSwgCi0gICAgNzUsIDgsIDEsIDUsIDYsIDIzOSwgNzUsIDgsIDUsIDEsIDIzOCwgMjM1LCA4LCA1LCAxLCAyMTYsIDE4MiwgMjM2LCA1MywgCi0gICAgOCwgNSwgMSwgMjA3LCAxNzQsIDIzNywgMTcxLCA4LCA1LCAxLCAyMzcsIDE3MiwgMywgMTEzLCA4LCA1LCAxLCAyMzcsIDMyLCAKLSAgICAzLCAxMTMsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCA5NSwgOCwgNSwgMSwgMjMwLCAyMzAsIDgsIDEsIDUsIDYsIDc1LCA4LCAKLSAgICA1LCAxLCAyMjgsIDEzMSwgMywgMTAxLCAyMDgsIDIyNywgOCwgNSwgMSwgMjI4LCAxMzEsIDMsIDI0OCwgMTI0LCA4LCA1LCAKLSAgICAxLCAyMjgsIDEzMSwgMywgMjE2LCA3OSwgMTEzLCA4LCA1LCAxLCAyMjcsIDE2NCwgOCwgNSwgMSwgMjA3LCAxNzQsIDIyNiwgCi0gICAgMTg1LCA4LCA1LCAxLCAyMDcsIDE3NCwgMjI2LCAxODYsIDMsIDE2MywgMjI3LCAyMTAsIDgsIDUsIDEsIDIyNiwgMTg2LCAzLCAKLSAgICAxMTMsIDgsIDUsIDEsIDIyMywgMTY0LCAzLCA0OSwgMTEzLCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgMjE2LCA3OSwgMTEzLCAKLSAgICA4LCAxLCA1LCA2LCAyMjMsIDE2MywgOCwgNSwgMSwgMjQ4LCAyMjUsIDc4LCA4LCAxLCA1LCA2LCAyMjAsIDczLCA4LCA1LCAKLSAgICAxLCAyNDYsIDE2LCAyMjAsIDM2LCA4LCA1LCAxLCAyMTgsIDE5MiwgOCwgNSwgMSwgMjA3LCAxNzQsIDE0NiwgOCwgNSwgMSwgCi0gICAgMjA3LCAxNzQsIDIxNywgMSwgMywgMTYzLCAyMjcsIDIxMCwgOCwgNSwgMSwgMjA3LCAxNzQsIDIxNywgMSwgMywgMTEzLCA4LCAKLSAgICA1LCAxLCAyMTcsIDEsIDMsIDE2MywgMjI3LCAyMTAsIDgsIDUsIDEsIDIxNywgMSwgMywgMjA5LCAyNDgsIDgsIDUsIDEsIAotICAgIDIxNywgMSwgMywgMjM5LCAyNDAsIDgsIDUsIDEsIDIxNiwgNzMsIDIxNywgMSwgMywgMjM5LCAyNDAsIDgsIDEsIDUsIDYsIAotICAgIDE0NiwgOCwgMSwgNSwgNiwgMjMwLCAyMzksIDE0NiwgOCwgNSwgMSwgMjE1LCA5NCwgMywgMTEzLCA4LCA1LCAxLCAyNDEsIAotICAgIDcsIDgsIDUsIDEsIDI0MywgODQsIDIzMCwgMTg1LCAzLCAyMTEsIDMyLCAyNSwgMTEzLCA4LCA1LCAxLCAyMTEsIDE3NCwgCi0gICAgMjE2LCA3MywgMjQxLCA3LCA4LCA1LCAxLCAyNDEsIDgsIDMsIDI0NSwgOTUsIDgsIDUsIDEsIDIwNywgMTc0LCAyMTAsIDY5LCAKLSAgICA4LCA1LCAxLCAyMTAsIDcwLCAzLCAyMTYsIDc5LCAxMTMsIDgsIDUsIDEsIDEwNiwgMTQyLCA4LCA1LCAxLCAyMDYsIDIxNiwgCi0gICAgOCwgNSwgMSwgMjA2LCAxNjUsIDMsIDExMywgOCwgNSwgMSwgMjA3LCAxNzQsIDIwNiwgMTY0LCA4LCA1LCAxLCAyMDcsIAotICAgIDE3NCwgMjA0LCAxNDQsIDgsIDUsIDEsIDIwNywgMTc0LCAyMDMsIDEyNCwgOCwgMSwgNSwgNiwgMjAzLCAxMjQsIDgsIDUsIAotICAgIDEsIDIwMiwgMTYwLCAzLCAyMTYsIDc5LCAxMTMsIDgsIDUsIDEsIDIwMiwgMTYwLCAzLCAyNDUsIDk1LCA4LCA1LCAxLCAKLSAgICAyNDAsIDE3NywgOCwgNSwgMSwgMjQwLCAxNzgsIDMsIDI0NSwgOTUsIDgsIDEsIDIzOCwgNDUsIDIxMSwgNjEsIDgsIDEsIAotICAgIDIxOCwgMTk5LCAyMDUsIDE4NiwgMjM5LCAxMjYsIDgsIDEsIDIzMCwgMjM5LCAyMzgsIDQ1LCAyMTEsIDYxLCA4LCAxLCAKLSAgICAyMTEsIDQwLCAyNDcsIDEyNSwgOCwgMSwgMjQ4LCA3MCwgMjQ2LCAyNywgOCwgMSwgNSwgNiwgMjQ5LCAyNTUsIDgsIDUsIDEsIAotICAgIDI0NiwgMTYsIDE3MSwgNzQsIDgsIDEsIDUsIDYsIDIzOSwgNzYsIDMsIDExMywgOCwgMSwgNSwgNiwgMjM3LCAxNzEsIDgsIAotICAgIDUsIDEsIDIzMCwgMTg1LCAzLCAyNDUsIDEyNiwgOCwgNSwgMSwgMjA3LCAxNzQsIDIzMCwgNTQsIDgsIDEsIDUsIDYsIDE1OSwgCi0gICAgOCwgNSwgMSwgMjE3LCAxMzUsIDMsIDExMywgOCwgMSwgMjM4LCA0NSwgMjExLCA2MiwgMywgOTUsIDgsIDEsIDIxNiwgNzMsIAotICAgIDIzOCwgNDUsIDIxMSwgNjIsIDMsIDk1LCA4LCA1LCAxLCAyNDIsIDEsIDI0MywgMTkxLCA4LCA1LCAxLCAyNDQsIDMsIDI0MywgCi0gICAgMTkxLCA4LCA1LCAxLCAyNDIsIDEsIDI0MywgMTkyLCAzLCAyNDUsIDk1LCA4LCA1LCAxLCAyMDgsIDIyLCAyNDMsIDE5MSwgCi0gICAgOCwgNSwgMSwgMjA5LCAxMzcsIDI0MywgMTkxLCA4LCA1LCAxLCAyMDksIDE5NCwgMjQzLCAxOTIsIDMsIDI0NSwgOTUsIDgsIAotICAgIDUsIDEsIDI0MCwgMzksIDI0MywgMTkxLCA4LCA1LCAxLCAyMjYsIDI0MSwgMjQzLCAxOTEsIDgsIDUsIDEsIDIyNiwgMTg3LCAKLSAgICAyNDMsIDE5MSwgOCwgMSwgMjQ4LCA3MCwgMjE4LCAyNDUsIDgsIDEsIDI0OCwgNzgsIDIxOCwgMjQ1LCA4LCA1LCAxLCAyMDcsIAotICAgIDE3NCwgMjM3LCAxNzIsIDMsIDIzOSwgMjQwLCA4LCA1LCAxLCAyMDcsIDE3NCwgMjM3LCAxNzIsIDMsIDIzOSwgMjQxLCAyNSwgCi0gICAgMjA5LCAyNDgsIDY1LCAxLCA1LCAyMzcsIDE3MSwgNjUsIDEsIDUsIDIzNywgMTcyLCAzLCAxMTMsIDY1LCAxLCA1LCAyMzAsIAotICAgIDE4NCwgNjUsIDEsIDUsIDE0NiwgNjUsIDEsIDUsIDIwNywgMTc0LCAxNDYsIDY1LCAxLCA1LCAyMDcsIDE3NCwgMjE3LCAxLCAKLSAgICAzLCAxMTMsIDY1LCAxLCA1LCA2LCAyMzAsIDIzOSwgMTQ2LCA2NSwgMSwgNSwgMjA0LCAxNDQsIDY1LCAxLCA1LCAyMDMsIAotICAgIDEyNCwgNjUsIDEsIDIxNywgMjM2LCA2NSwgMSwgNTIsIDIxNywgMjM2LCA2NSwgMSwgMjA3LCAxNzQsIDI0NSwgMjMzLCA2NSwgCi0gICAgMSwgMjUwLCAxNjAsIDY1LCAxLCAyMTYsIDczLCAyNDUsIDIzMywgNjUsIDEsIDUwLCAxNjIsIDIxNSwgMjUyLCA2NSwgMSwgCi0gICAgNDksIDE2MiwgMjE1LCAyNTIsIDY1LCAxLCAyMzgsIDQ1LCAyMTEsIDYxLCA2NSwgMSwgMjE2LCA3MywgMjM4LCA0NSwgMjExLCAKLSAgICA2MSwgNjUsIDEsIDQ5LCAyNTAsIDk0LCA2NSwgMSwgNTAsIDI1MCwgOTQsIDY1LCAxLCAxMTIsIDI1MCwgOTQsIDY1LCAxLCAKLSAgICAxMjEsIDI1MCwgOTQsIDY1LCAxLCAyNDYsIDUzLCAyNTEsIDEzOCwgMjQ3LCAyOSwgNjUsIDEsIDgwLCAyMjcsIDExNCwgNjUsIAotICAgIDEsIDIyNSwgMTcwLCA2NSwgMSwgMjUxLCAxMjYsIDI1MSwgMTM4LCA2NSwgMSwgMjM3LCAyNTQsIDI1MSwgMTM4LCA2NSwgMSwgCi0gICAgMTI0LCA4MCwgMjI3LCAxMTQsIDY1LCAxLCAxMjQsIDIyNSwgMTcwLCA2NSwgMSwgMTI0LCAyMzcsIDI1NCwgMjUxLCAxMzgsIAotICAgIDY1LCAxLCAxMjQsIDI1MSwgMTI2LCAyNTEsIDEzOCwgNjUsIDEsIDIwOCwgODIsIDI0NSwgMjQyLCA2NSwgMSwgMTYyLCAKLSAgICAyMDgsIDgyLCAyNDUsIDI0MiwgNjUsIDEsIDI0NiwgMjE2LCA1MCwgMTYyLCAyMTUsIDI1MiwgNjUsIDEsIDI0NiwgMjE2LCAKLSAgICA0OSwgMTYyLCAyMTUsIDI1MiwgNjUsIDEsIDExMiwgMjEwLCAzLCA2NSwgMSwgMTIxLCAyMTAsIDMsIDY1LCAxLCA5MSwgNTQsIAotICAgIDY1LCAxLCAyMjQsIDEwMywgNTQsIDI0NywgMjE0LCA3MCwgNTUsIDIxNSwgMjUzLCA1NSwgMjIwLCA2MiwgNSwgMjA4LCAKLSAgICAyMjcsIDUyLCAyNTEsIDEyNiwgMjUxLCAxMzgsIDY1LCAxLCAyMTYsIDU4LCAxMTMsIDY1LCAxLCAyNDUsIDEzMSwgMjUxLCAKLSAgICAxMzgsIDY1LCAxLCA1LCAyMzgsIDIzNSwgNjUsIDEsIDUsIDE1OSwgNjUsIDEsIDUsIDE5NCwgNjUsIDEsIDUsIDIwMywgCi0gICAgMTk2LCA2NSwgMSwgNSwgMjE2LCA3MywgMjM4LCA0NSwgMjExLCA2MSwgNjUsIDEsIDI0MCwgMTk4LCAxNDMsIDE0MiwgNjUsIAotICAgIDEsIDEzOCwgMTQzLCAxNDIsIDY1LCAxLCAyMjQsIDE1MCwgMTQzLCAxNDIsIDY1LCAxLCAxMjQsIDE0MywgMTQyLCA2NSwgMSwgCi0gICAgMjQwLCAxOTcsIDE0MywgMTQyLCA2NSwgMSwgMjAzLCAxLCAyNDQsIDI3LCAxNDMsIDgyLCA2NSwgMSwgMjAzLCA3NywgMjQ0LCAKLSAgICAyNywgMTQzLCA4MiwgNjUsIDEsIDIwNSwgMTg0LCA2NSwgMSwgMjA2LCAyNTEsIDY1LCAxLCA1MiwgMjUwLCAxNjAsIDY1LCAKLSAgICAxLCAxMjQsIDEyMSwgMjUwLCA5NCwgNjUsIDEsIDEyNCwgMTEyLCAyNTAsIDk0LCA2NSwgMSwgMTI0LCA0OSwgMjUwLCA5NCwgCi0gICAgNjUsIDEsIDEyNCwgNTAsIDI1MCwgOTQsIDY1LCAxLCAxMjQsIDIxNSwgMjUyLCA2NSwgMSwgMTAxLCAyMzcsIDI1NCwgMjUxLCAKLSAgICAxMzgsIDY1LCAxLCAxMDEsIDUyLCAyMzcsIDI1NCwgMjUxLCAxMzgsIDY1LCAxLCAxMDEsIDUyLCAyNTEsIDEyNiwgMjUxLCAKLSAgICAxMzgsIDY1LCAxLCAxMjQsIDIwOCwgMjI3LCA2NSwgMSwgMjE2LCAxODgsIDI0NSwgMjQyLCA2NSwgMSwgMjQ4LCAxNDIsIAotICAgIDEzOCwgMjA4LCAxNjEsIDY1LCAxLCAyNDEsIDg0LCAxMzgsIDIwOCwgMTYxLCA2NSwgMSwgMjQ4LCAxNDIsIDEyNCwgMjA4LCAKLSAgICAxNjEsIDY1LCAxLCAyNDEsIDg0LCAxMjQsIDIwOCwgMTYxLCA2NSwgMSwgMjEzLCAzNCwgNjUsIDEsIDE3MSwgMjEzLCAzNCwgCi0gICAgNjUsIDEsIDEyNCwgNDksIDQ3LCAzOSwgMjM3LCAyNTQsIDI1MSwgMTM4LCAzOSwgMjUxLCAxMjYsIDI1MSwgMTM4LCAzOSwgCi0gICAgMjQ2LCA1MywgMjUxLCAxMzgsIDM5LCAyMDgsIDIyNywgMzksIDIyNSwgMTcwLCAzOSwgMjE5LCAxOTgsIDM5LCAyNDcsIAotICAgIDIxNCwgMzksIDcwLCA1NSwgMzksIDI0MywgMjMxLCAzOSwgMjM2LCAxMTYsIDU1LCAzOSwgMjE1LCAyNTMsIDU1LCAzOSwgCi0gICAgNTIsIDI1MSwgMTI2LCAyNTEsIDEzOCwgMzksIDI0NywgMjksIDM5LCA4MCwgMjI3LCAxMTUsIDU1LCAzOSwgNTIsIDgwLCAKLSAgICAyMjcsIDExNSwgNTUsIDM5LCA1MiwgMjM3LCAyNTQsIDI1MSwgMTM4LCAzOSwgMjQ3LCA1MiwgMzksIDIzMCwgMjM5LCAyNDcsIAotICAgIDIxNCwgMzksIDIwNywgMTc0LCAyNDUsIDIzNCwgNTUsIDM5LCAyNDUsIDIzNCwgNTUsIDM5LCAyMTYsIDczLCAyNDUsIDIzNCwgCi0gICAgNTUsIDM5LCAyNDUsIDIzNCwgODcsIDIxNiwgMTYsIDM5LCAyMzcsIDI1NCwgMjUxLCAxMzksIDU2LCAzOSwgMjUxLCAxMjYsIAotICAgIDI1MSwgMTM5LCA1NiwgMzksIDQ5LCAyMTAsIDQsIDU2LCAzOSwgNTAsIDIxMCwgNCwgNTYsIDM5LCA0OSwgMjUwLCAyMTgsIAotICAgIDU1LCAzOSwgMjM2LCA1MywgMzksIDQ5LCAxNjIsIDIxNSwgMjUzLCA1NiwgMzksIDExMiwgMjEwLCA0LCA1NiwgMzksIDEyMSwgCi0gICAgMjEwLCA0LCA1NiwgMzksIDkxLCAyLCA1NiwgMzksIDIyNCwgMTAzLCAyLCA1NiwgMzksIDIxOSwgMTQwLCAyMzYsIDExNiwgCi0gICAgNTYsIDM5LCAyMTYsIDc5LCAyMzYsIDExNiwgNTYsIDM5LCA3MCwgNTYsIDM5LCAyNDMsIDIzMiwgNTYsIDM5LCAyMTUsIAotICAgIDI1MywgNTYsIDM5LCAyNDUsIDIzNCwgNTYsIDM5LCAyNDYsIDIzMSwgMzksIDIyMCwgNjIsIDM5LCA4MCwgMjI3LCAxMTUsIAotICAgIDU2LCAzOSwgMjQ3LCAyMDgsIDU2LCAzOSwgMjMwLCAyMzksIDUyLCAyNTAsIDEyNywgNTYsIDM5LCAyNDcsIDMwLCA1NiwgCi0gICAgMzksIDI0NiwgNTMsIDI1MSwgMTM5LCA1NiwgMzksIDI0NywgMjE1LCA1NiwgMzksIDIzMCwgMjM5LCAyNDcsIDIxNSwgNTYsIAotICAgIDM5LCAyMDgsIDIyOCwgNTYsIDM5LCAyMjUsIDE3MSwgNTYsIDM5LCAxMjQsIDIyNywgMTE0LCAzOSwgNTIsIDEyNCwgMjI3LCAKLSAgICAxMTQsIDM5LCAyMDgsIDIyOCwgMjE5LCAxOTksIDM5LCAyMTIsIDIyOCwgMjExLCAzMiwgMjE5LCAxOTksIDM5LCAxNjMsIAotICAgIDIxMSwgMzIsIDIxOSwgMTk5LCAzOSwgMjEyLCAyMjgsIDIxMiwgMSwgMjE5LCAxOTksIDM5LCAxNjMsIDIxMiwgMSwgMjE5LCAKLSAgICAxOTksIDM5LCA1MCwgMTYyLCAyMTUsIDI1MywgNTYsIDM5LCAyMzAsIDIzOSwgMjQ3LCAyMDgsIDU2LCAzOSwgNTEsIDU2LCAKLSAgICAzOSwgMjE0LCAxNzYsIDU2LCAzOSwgMjAzLCAxOTcsIDU1LCAzOSwgODAsIDIwOCwgMjI3LCAzOSwgNTIsIDIxOSwgMTk4LCAKLSAgICAzOSwgMjM3LCAyNTQsIDE0MywgODIsIDM5LCAyNTEsIDEyNiwgMTQzLCA4MiwgMzksIDMwLCAyMTgsIDIzOSwgMzksIDMwLCAKLSAgICAyMjgsIDI1MiwgMzksIDMwLCAyNDMsIDIyNSwgMjA4LCAxNDksIDM5LCAzMCwgMjAyLCAyMjEsIDM5LCAyNDcsIDIwOCwgNTUsIAotICAgIDM5LCAyNDEsIDM1LCAyLCA1NiwgMzksIDUyLCA4MCwgMjI3LCAxMTUsIDU2LCAzOSwgNDksIDI1MCwgMjE4LCA1NiwgMzksIAotICAgIDIyMSwgMTY2LCAyMDgsIDIyOCwgNTUsIDM5LCAyMzYsIDEyMiwgNTUsIDM5LCAyNTEsIDcsIDE1NiwgMjA4LCAxNzMsIDU1LCAKLSAgICAzOSwgNDksIDUwLCA1MywgNTYsIDM5LCAxNzcsIDUzLCA1NiwgMzksIDIzOCwgNCwgMjMwLCA5NiwgMzksIDUwLCAyNTAsIAotICAgIDk1LCA1NSwgMzksIDQ5LCAxNjIsIDIxNSwgMjUzLCA1NSwgMzksIDI0MCwgMzYsIDM5LCAyMDMsIDE5NywgNTYsIDM5LCA0OSwgCi0gICAgMjUwLCA5NSwgNTYsIDM5LCA1MCwgMjUwLCA5NSwgNTYsIDM5LCA1MCwgMjUwLCA5NSwgMjUsIDExMiwgMjUwLCA5NSwgNTYsIAotICAgIDM5LCA1MCwgMTYyLCAyMTUsIDI1MywgNTUsIDM5LCA3MCwgODcsIDIxNiwgMTYsIDM5LCAyNTAsIDYwLCA1NiwgMzksIDUyLCAKLSAgICAyMTUsIDI1MywgNTYsIDM5LCAyMDIsIDMwLCA1NSwgMzksIDUyLCAyNDcsIDIxNSwgNTYsIDM5LCA1MiwgMjQ3LCAyMTQsIAotICAgIDM5LCA1MiwgMjI1LCAxNzAsIDM5LCA1MiwgMjI1LCAxNzEsIDU2LCAzOSwgNTIsIDIwOCwgMjI3LCAzOSwgNTIsIDIzMCwgCi0gICAgMjM5LCAyNDcsIDIxNCwgMzksIDUyLCA4NiwgNTMsIDU2LCAzOSwgOCwgNSwgMSwgNjMsIDM5LCA4LCA1LCAxLCA3NCwgMzksIAotICAgIDgsIDUsIDEsIDc1LCAzOSwgOCwgNSwgMSwgNzgsIDM5LCA4LCA1LCAxLCA2OCwgMzksIDgsIDUsIDEsIDI0NywgMTI1LCAzOSwgCi0gICAgOCwgNSwgMSwgMjQ1LCA1MSwgMzksIDgsIDUsIDEsIDIzNywgMTcxLCAzOSwgOCwgNSwgMSwgMjI2LCAxODUsIDM5LCA4LCA1LCAKLSAgICAxLCAxNDYsIDM5LCA4LCA1LCAxLCAyMTAsIDY5LCAzOSwgOCwgNSwgMSwgMjA2LCAxNjQsIDM5LCA4LCA1LCAxLCAyMDMsIAotICAgIDE5NiwgMzAsIDYsIDEsIDIzNywgMjAsIDMwLCA1LCAxLCAyMzcsIDIwLCAzMCwgNiwgMSwgMjUwLCAxMjYsIDIxNCwgMjQ2LCAKLSAgICAzMCwgNSwgMSwgMjUwLCAxMjYsIDIxNCwgMjQ2LCAzMCwgMjIxLCA0NCwgNTQsIDMwLCAyMjYsIDI1MSwgMjIxLCA0NCwgNTQsIAotICAgIDMwLCA2LCAxLCAyMTksIDEyNiwgMjQzLCAxOTksIDMwLCA1LCAxLCAyMTksIDEyNiwgMjQzLCAxOTksIDMwLCAyMDIsIDIyMSwgCi0gICAgMzAsIDUsIDIxNiwgNzMsIDIyNiwgMjIxLCAyMTIsIDE0NSwgOTcsIDMwLCA1LCAyNDIsIDgzLCAyMjYsIDIyMSwgMjEyLCAKLSAgICAxNDUsIDk3LCAzMCwgNSwgMjE2LCA3MywgMjQyLCA4MywgMjI2LCAyMjEsIDIxMiwgMTQ1LCA5NywgMzAsIDIxNywgNDcsIAotICAgIDgyLCAzMCwgNiwgMSwgMjAyLCAyMjcsIDMwLCAyMDgsIDE0OSwgMzAsIDI0MywgMjI1LCAyMDgsIDE0OSwgMzAsIDYsIDEsIAotICAgIDI1MSwgMywgMywgMjA4LCAxNDksIDMwLCAyNTAsIDIwMywgMjA5LCAxNjMsIDMwLCA2LCAxLCAyNDEsIDM4LCAzLCAyMDgsIAotICAgIDE0OSwgMzAsIDYsIDEsIDI0MCwgMjQ5LCAzLCAyMDgsIDE0OSwgMzAsIDYsIDEsIDIzMCwgMjMxLCAzLCAyMDgsIDE0OSwgCi0gICAgMzAsIDYsIDEsIDIyMCwgMzUsIDMsIDIwOCwgMTQ5LCAzMCwgNiwgMSwgMjA2LCAyMTcsIDMsIDIwOCwgMTQ5LCAzMCwgNiwgCi0gICAgMSwgMjIwLCAzNywgMywgMjA4LCAxNDksIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjQzLCAyMjUsIDI1LCAyMDgsIDE0OSwgCi0gICAgMzAsIDYsIDEsIDI1MSwgMiwgMzAsIDYsIDEsIDI0OCwgMTA2LCAzMCwgNiwgMSwgMjM4LCAyMzUsIDMwLCA2LCAxLCAyNDQsIAotICAgIDM3LCAzMCwgNiwgMSwgMjQxLCAzNywgMzAsIDYsIDEsIDIwMiwgODMsIDMwLCA2LCAxLCAyNDAsIDI0OCwgMzAsIDYsIDEsIAotICAgIDIwOSwgNzQsIDMwLCA2LCAxLCAyMzAsIDIzMCwgMzAsIDYsIDEsIDIyOSwgMjQ3LCAzMCwgNiwgMSwgMjI4LCAyNCwgMzAsIAotICAgIDYsIDEsIDIyMywgMjQ2LCAzMCwgNiwgMSwgMjIxLCA4NCwgMzAsIDYsIDEsIDIwMywgMTcwLCAzMCwgNiwgMSwgMjIwLCAzNCwgCi0gICAgMzAsIDYsIDEsIDIxOCwgMTY3LCAzMCwgNiwgMSwgMjE2LCA1OSwgMzAsIDYsIDEsIDIxMiwgMTQ0LCAzMCwgNiwgMSwgMjA5LCAKLSAgICAyMDcsIDMwLCA2LCAxLCAyMDYsIDIxNiwgMzAsIDYsIDEsIDIxOCwgMTkyLCAzMCwgNiwgMSwgMjQ2LCAxNDIsIDMwLCA2LCAKLSAgICAxLCAyMTcsIDIwMiwgMzAsIDYsIDEsIDIyMCwgMzYsIDMwLCA2LCAxLCAyMzAsIDIzMSwgMywgMjQzLCAyMjQsIDMwLCA2LCAKLSAgICAxLCAyMDYsIDIxNywgMywgMjQzLCAyMjQsIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDIwOCwgMTQ5LCAzMCwgNSwgMSwgMjQxLCAKLSAgICAzOCwgMywgMjA4LCAxNDksIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjA4LCAxNDksIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgCi0gICAgMjA4LCAxNDksIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgMjQzLCAyMjUsIDI1LCAyMDgsIDE0OSwgMzAsIDUsIDEsIDI1MSwgCi0gICAgMiwgMzAsIDUsIDEsIDI0OCwgMTA2LCAzMCwgNSwgMSwgMjM4LCAyMzUsIDMwLCA1LCAxLCAyNDQsIDM3LCAzMCwgNSwgMSwgCi0gICAgMjQxLCAzNywgMzAsIDUsIDEsIDIwMiwgODMsIDMwLCA1LCAxLCAyNDAsIDI0OCwgMzAsIDUsIDEsIDIwOSwgNzQsIDMwLCA1LCAKLSAgICAxLCAyMzAsIDIzMCwgMzAsIDUsIDEsIDIyOSwgMjQ3LCAzMCwgNSwgMSwgMjI4LCAyNCwgMzAsIDUsIDEsIDIyMywgMjQ2LCAKLSAgICAzMCwgNSwgMSwgMjIxLCA4NCwgMzAsIDUsIDEsIDIwMywgMTcwLCAzMCwgNSwgMSwgMjIwLCAzNCwgMzAsIDUsIDEsIDIxOCwgCi0gICAgMTY3LCAzMCwgNSwgMSwgMjE2LCA1OSwgMzAsIDUsIDEsIDQ2LCAyMTIsIDE0NCwgMzAsIDUsIDEsIDIxMiwgMTQ0LCAzMCwgCi0gICAgNSwgMSwgMjA5LCAyMDcsIDMwLCA1LCAxLCAyMDYsIDIxNiwgMzAsIDUsIDEsIDIxOCwgMTkyLCAzMCwgNSwgMSwgMjQ2LCAKLSAgICAxNDIsIDMwLCA1LCAxLCAyMTcsIDIwMiwgMzAsIDUsIDEsIDIyMCwgMzYsIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjQzLCAKLSAgICAyMjQsIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgMjQzLCAyMjQsIDMwLCA1LCAxLCAyMjAsIDM1LCAzLCAyMDgsIDE0OSwgMzAsIAotICAgIDUsIDEsIDIwNiwgMjE3LCAzLCAyMDgsIDE0OSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDIwOCwgMTQ5LCAzMCwgNiwgMjMwLCAKLSAgICAxOSwgOTcsIDMwLCAyNDgsIDEwNywgOTcsIDMwLCAyMDksIDc1LCA5NywgMzAsIDIwNiwgMjE3LCAzLCAyMzYsIDExNiwgOTcsIAotICAgIDMwLCAyMDYsIDIxNywgMywgMjUxLCAxMjYsIDI1LCAyMzYsIDExNiwgOTcsIDMwLCAyMDYsIDIxNywgMywgMjQzLCAyMzIsIAotICAgIDI1LCAyMzYsIDExNiwgOTcsIDMwLCAyMTgsIDE5MywgOTcsIDMwLCAyMTgsIDE2OCwgOTcsIDMwLCAyMzAsIDE5LCA5NywgCi0gICAgMzAsIDEsIDI1MCwgMTI2LCAyMjksIDAsIDMwLCA1LCAxLCAyNTAsIDEyNiwgMjI5LCAwLCAzMCwgMSwgMjExLCA3MSwgMzAsIAotICAgIDUsIDEsIDIxMSwgNzEsIDMwLCAxLCAyNDMsIDE5OSwgMzAsIDUsIDEsIDI0MywgMTk5LCAzMCwgMSwgMjI5LCAwLCAzMCwgNSwgCi0gICAgMSwgMjI5LCAwLCAzMCwgMSwgMjE0LCAyNDYsIDMwLCA1LCAxLCAyMTQsIDI0NiwgODQsIDYsIDEsIDIxMywgMzUsIDg0LCA1LCAKLSAgICAxLCAyMTMsIDM1LCA4NCwgNiwgMSwgMjQwLCA0NSwgODQsIDUsIDEsIDI0MCwgNDUsIDg0LCA2LCAxLCAyMjksIDEyNywgODQsIAotICAgIDUsIDEsIDIyOSwgMTI3LCA4NCwgNiwgMSwgMjM2LCAxMDcsIDg0LCA1LCAxLCAyMzYsIDEwNywgODQsIDYsIDEsIDIzOCwgCi0gICAgMjMwLCA4NCwgNSwgMSwgMjM4LCAyMzAsIDg0LCA2LCAxLCAyMTMsIDEsIDg0LCA1LCAxLCAyMTMsIDEsIDg0LCA2LCAxLCAKLSAgICAyNDQsIDUyLCA4NCwgNSwgMSwgMjQ0LCA1MiwgMzAsIDIyOSwgMjQ4LCA5NywgMzAsIDIxNiwgNjAsIDk3LCAzMCwgMjI2LCAKLSAgICAyMjEsIDIxMiwgMTQ1LCA5NywgMzAsIDEsIDIwMiwgMjI3LCAzMCwgNiwgMjA5LCA3NSwgOTcsIDMwLCAyMjYsIDIyMSwgCi0gICAgMjQxLCAzOCwgOTcsIDMwLCAyMTYsIDczLCAyMjYsIDIyMSwgMjQxLCAzOCwgOTcsIDMwLCA2LCAxLCAyMTIsIDI0MiwgMzAsIAotICAgIDUsIDEsIDIxMiwgMjQyLCAzMCwgNiwgMjI2LCAyMjEsIDIxMiwgMTQ1LCA5NywgMzAsIDYsIDEsIDIxNCwgMjQzLCAzMCwgNSwgCi0gICAgMSwgMjE0LCAyNDMsIDMwLCAyMTYsIDYwLCAzLCAyMTEsIDMyLCA5NywgMzAsIDYsIDIxNiwgNzMsIDIyNiwgMjIxLCAyMTIsIAotICAgIDE0NSwgOTcsIDMwLCA2LCAyNDIsIDgzLCAyMjYsIDIyMSwgMjEyLCAxNDUsIDk3LCAzMCwgNiwgMjE2LCA3MywgMjQyLCA4MywgCi0gICAgMjI2LCAyMjEsIDIxMiwgMTQ1LCA5NywgMzYsIDYsIDEsIDIzMSwgMTExLCAzLCAyMzcsIDI1MywgMzYsIDYsIDEsIDIzMCwgCi0gICAgMjM0LCAzNiwgNiwgMSwgMjQzLCAxMzAsIDM2LCA2LCAxLCAyMzgsIDUyLCAzNiwgNiwgMSwgMjA3LCAxMSwgMjMxLCAxMTAsIAotICAgIDM2LCA2LCAxLCAyNDEsIDI1MiwgMzYsIDYsIDEsIDI0NywgMTM1LCA3NSwgMzYsIDYsIDEsIDIwMywgMTEsIDM2LCA2LCAxLCAKLSAgICAyMzAsIDE2MSwgMzYsIDYsIDEsIDIyNywgODAsIDM2LCA2LCAxLCAyMjIsIDQxLCAzNiwgNiwgMSwgMjA4LCA4LCAzNiwgNiwgCi0gICAgMSwgMjI5LCA0OSwgMzYsIDYsIDEsIDIzNSwgMjA2LCAzLCAyMzcsIDI1MywgMzYsIDYsIDEsIDIxMiwgMjI4LCA2OCwgMzYsIAotICAgIDYsIDEsIDI0MSwgMjQ4LCAzNiwgNiwgMSwgNjMsIDM2LCA2LCAxLCAyNDgsIDE2MiwgMzYsIDYsIDEsIDIwNiwgNTUsIDM2LCAKLSAgICA2LCAxLCAyMzgsIDEwNSwgMzYsIDYsIDEsIDI0NCwgNzUsIDM2LCA2LCAxLCAyMzEsIDExMCwgMzYsIDYsIDEsIDIwMiwgNzEsIAotICAgIDM2LCA2LCAxLCAyMDIsIDkyLCAzNiwgNiwgMSwgNzUsIDM2LCA2LCAxLCAyMTIsIDIyOCwgNzUsIDM2LCA2LCAxLCAxNzMsIAotICAgIDM2LCA2LCAxLCAyNDEsIDEyMiwgMzYsIDYsIDEsIDI0MSwgMTAzLCAzNiwgNiwgMSwgMjQxLCA5MiwgMzYsIDYsIDEsIDc4LCAKLSAgICAzNiwgNiwgMSwgMjE5LCAzNCwgMzYsIDYsIDEsIDI0MSwgMjgsIDM2LCA2LCAxLCAyNDEsIDE3LCAzNiwgNiwgMSwgMjA5LCAKLSAgICAxODcsIDM2LCA2LCAxLCA2OCwgMzYsIDYsIDEsIDI0MSwgMTU0LCAzNiwgNiwgMSwgMTUyLCAzNiwgNiwgMSwgMjA4LCAxNCwgCi0gICAgMzYsIDYsIDEsIDI0NiwgMTcwLCAzNiwgNiwgMSwgMjEzLCA5MCwgMzYsIDYsIDEsIDIxMywgNDYsIDM2LCA2LCAxLCAyMzcsIAotICAgIDkxLCA1NCwgMzYsIDYsIDEsIDIwMywgMzAsIDM2LCA2LCAxLCAyMTIsIDcsIDU0LCAzNiwgNiwgMSwgNzQsIDM2LCA2LCAxLCAKLSAgICAyMDIsIDIxMywgMzYsIDYsIDEsIDE5OCwgMzYsIDUsIDEsIDYzLCAzNiwgNSwgMSwgMjQ4LCAxNjIsIDM2LCA1LCAxLCAyMDYsIAotICAgIDU1LCAzNiwgNSwgMSwgMjM4LCAxMDUsIDM2LCA1LCAxLCAyNDQsIDc1LCAzNiwgNSwgMSwgMjMxLCAxMTAsIDM2LCA1LCAxLCAKLSAgICAyMDIsIDcxLCAzNiwgNSwgMSwgMjAyLCA5MiwgMzYsIDUsIDEsIDc1LCAzNiwgNSwgMSwgMjEyLCAyMjgsIDc1LCAzNiwgNSwgCi0gICAgMSwgMTczLCAzNiwgNSwgMSwgMjQxLCAxMjIsIDM2LCA1LCAxLCAyNDEsIDEwMywgMzYsIDUsIDEsIDI0MSwgOTIsIDM2LCA1LCAKLSAgICAxLCA3OCwgMzYsIDUsIDEsIDIxOSwgMzQsIDM2LCA1LCAxLCAyNDEsIDI4LCAzNiwgNSwgMSwgMjQxLCAxNywgMzYsIDUsIDEsIAotICAgIDIwOSwgMTg3LCAzNiwgNSwgMSwgNjgsIDM2LCA1LCAxLCAyNDEsIDE1NCwgMzYsIDUsIDEsIDE1MiwgMzYsIDUsIDEsIDIwOCwgCi0gICAgMTQsIDM2LCA1LCAxLCAyNDYsIDE3MCwgMzYsIDUsIDEsIDIxMywgOTAsIDM2LCA1LCAxLCAyMTMsIDQ2LCAzNiwgNSwgMSwgCi0gICAgMjM3LCA5MSwgNTQsIDM2LCA1LCAxLCAyMDMsIDMwLCAzNiwgNSwgMSwgMjEyLCA3LCA1NCwgMzYsIDUsIDEsIDc0LCAzNiwgCi0gICAgNSwgMSwgMjAyLCAyMTMsIDM2LCA1LCAxLCAxOTgsIDM2LCA1LCAxLCAyMzEsIDExMSwgMywgMjM3LCAyNTMsIDM2LCA1LCAxLCAKLSAgICAyMzAsIDIzNCwgMzYsIDUsIDEsIDI0MywgMTMwLCAzNiwgNSwgMSwgMjM4LCA1MiwgMzYsIDUsIDEsIDIwNywgMTEsIDIzMSwgCi0gICAgMTEwLCAzNiwgNSwgMSwgMjQxLCAyNTIsIDM2LCA1LCAxLCAyNDcsIDEzNSwgNzUsIDM2LCA1LCAxLCAyMDMsIDExLCAzNiwgCi0gICAgNSwgMSwgMjMwLCAxNjEsIDM2LCA1LCAxLCAyMjcsIDgwLCAzNiwgNSwgMSwgMjIyLCA0MSwgMzYsIDUsIDEsIDIwOCwgOCwgCi0gICAgMzYsIDUsIDEsIDIyOSwgNDksIDM2LCA1LCAxLCAyMzUsIDIwNiwgMywgMjM3LCAyNTMsIDM2LCA1LCAxLCAyMTIsIDIyOCwgCi0gICAgNjgsIDM2LCA1LCAxLCAyNDEsIDI0OCwgMzYsIDYsIDEsIDIyMCwgMzYsIDM2LCA1LCAxLCAyMjAsIDM2LCAzNiwgNiwgMSwgCi0gICAgMjAzLCA2NiwgMzYsIDUsIDEsIDIwMywgNjYsIDM2LCA2LCAxLCAyMzAsIDIyOCwgNzQsIDM2LCA1LCAxLCAyMzAsIDIyOCwgCi0gICAgNzQsIDM2LCA2LCAxLCAyMjcsIDg2LCAyMDIsIDE4MywgMzYsIDUsIDEsIDIyNywgODYsIDIwMiwgMTgzLCAzNiwgNiwgMSwgCi0gICAgMjMwLCAyMjgsIDIyNywgODYsIDIwMiwgMTgzLCAzNiwgNSwgMSwgMjMwLCAyMjgsIDIyNywgODYsIDIwMiwgMTgzLCAzNiwgCi0gICAgNiwgMSwgMjQ4LCA3MywgMjAyLCAxODMsIDM2LCA1LCAxLCAyNDgsIDczLCAyMDIsIDE4MywgMzYsIDYsIDEsIDIzMCwgMjI4LCAKLSAgICAyNDgsIDczLCAyMDIsIDE4MywgMzYsIDUsIDEsIDIzMCwgMjI4LCAyNDgsIDczLCAyMDIsIDE4MywgMzYsIDYsIDEsIDIyOCwgCi0gICAgMjI1LCAzNiwgNSwgMSwgMjI4LCAyMjUsIDM2LCA2LCAxLCAyMTcsIDIwMiwgMzYsIDUsIDEsIDIxNywgMjAyLCAzNiwgNiwgCi0gICAgMSwgMjM5LCAyMzUsIDM2LCA1LCAxLCAyMzksIDIzNSwgMzYsIDYsIDEsIDIzMCwgMTg2LCAzNiwgNSwgMSwgMjMwLCAxODYsIAotICAgIDM2LCA2LCAxLCAyMzAsIDE4NywgMywgNTIsIDIzNywgMjU0LCAyNTEsIDEzOCwgMzYsIDUsIDEsIDIzMCwgMTg3LCAzLCA1MiwgCi0gICAgMjM3LCAyNTQsIDI1MSwgMTM4LCAzNiwgNiwgMSwgMjA3LCAxNCwgMzYsIDUsIDEsIDIwNywgMTQsIDM2LCA2LCAxLCAyMTUsIAotICAgIDE5MSwgMjIwLCAzNiwgMzYsIDUsIDEsIDIxNSwgMTkxLCAyMjAsIDM2LCAzNiwgNiwgMSwgMjIwLCAzNywgMywgMjA4LCAKLSAgICAxOTcsIDM2LCA1LCAxLCAyMjAsIDM3LCAzLCAyMDgsIDE5NywgMzYsIDYsIDEsIDIxOSwgMjI0LCAzNiwgNSwgMSwgMjE5LCAKLSAgICAyMjQsIDM2LCA2LCAxLCAyMjksIDAsIDM2LCA1LCAxLCAyMjksIDAsIDM2LCAyMDksIDM1LCA1NCwgMzksIDM2LCAyMDgsIAotICAgIDE5NywgMzksIDM2LCAyMTksIDE0MSwgMzksIDM2LCAyNDQsIDE0MiwgMjE4LCA3MSwgMzksIDM2LCAyMTcsIDE5NiwgMjE4LCAKLSAgICA3MSwgMzksIDM2LCAyMTgsIDU1LCAzOSwgMzYsIDIzNiwgMTIsIDIwOSwgMzUsIDU0LCAzOSwgMzYsIDIyNCwgMTE0LCA1NCwgCi0gICAgMzYsIDYsIDEsIDIxMiwgMjI4LCAyMzUsIDIwNiwgMywgMjA5LCAyNDgsIDM2LCA1LCAxLCAyMTIsIDIyOCwgMjM1LCAyMDYsIAotICAgIDMsIDIwOSwgMjQ4LCAzNiwgNiwgMSwgMjEzLCAxMzksIDU0LCAzNiwgNSwgMSwgMjEzLCAxMzksIDU0LCAzNiwgNiwgMSwgCi0gICAgMjQxLCAyOSwgMywgMjA4LCAyNTQsIDM2LCA1LCAxLCAyNDEsIDI5LCAzLCAyMDgsIDI1NCwgMzYsIDYsIDEsIDIzOCwgMTA2LCAKLSAgICAzLCAyMDYsIDIxNSwgMzYsIDUsIDEsIDIzOCwgMTA2LCAzLCAyMDYsIDIxNSwgMzYsIDYsIDEsIDIzOCwgMTA2LCAzLCA5NSwgCi0gICAgMzYsIDUsIDEsIDIzOCwgMTA2LCAzLCA5NSwgMzYsIDYsIDEsIDIzOCwgMTA2LCAzLCAxMDEsIDExMywgMzYsIDUsIDEsIAotICAgIDIzOCwgMTA2LCAzLCAxMDEsIDExMywgMzYsIDYsIDEsIDIwMiwgNzIsIDMsIDI0NCwgMjAsIDM2LCA1LCAxLCAyMDIsIDcyLCAKLSAgICAzLCAyNDQsIDIwLCAzNiwgNiwgMSwgMjAyLCA5MywgMywgMjQ0LCAyMCwgMzYsIDUsIDEsIDIwMiwgOTMsIDMsIDI0NCwgMjAsIAotICAgIDM2LCA2LCAxLCAyMzAsIDQ0LCAzLCAyNDQsIDIwLCAzNiwgNSwgMSwgMjMwLCA0NCwgMywgMjQ0LCAyMCwgMzYsIDYsIDEsIAotICAgIDIzMCwgNDQsIDMsIDgwLCA5NSwgMzYsIDUsIDEsIDIzMCwgNDQsIDMsIDgwLCA5NSwgMzYsIDYsIDEsIDIzMCwgNDQsIDMsIAotICAgIDk1LCAzNiwgNSwgMSwgMjMwLCA0NCwgMywgOTUsIDM2LCA2LCAxLCAyNDgsIDIxNCwgMTczLCAzNiwgNSwgMSwgMjQ4LCAKLSAgICAyMTQsIDE3MywgMzYsIDYsIDEsIDI0MSwgOTMsIDMsIDI0NCwgMjAsIDM2LCA1LCAxLCAyNDEsIDkzLCAzLCAyNDQsIDIwLCAKLSAgICAzNiwgNiwgMzIsIDI0MSwgOTMsIDIzOCwgMTA1LCAzNiwgNSwgMzIsIDI0MSwgOTMsIDIzOCwgMTA1LCAzNiwgNiwgMSwgCi0gICAgMjE5LCAzNSwgMywgMTAxLCAxMTMsIDM2LCA1LCAxLCAyMTksIDM1LCAzLCAxMDEsIDExMywgMzYsIDYsIDEsIDI1MSwgMTQ1LCAKLSAgICAxNTIsIDM2LCA1LCAxLCAyNTEsIDE0NSwgMTUyLCAzNiwgNiwgMSwgMjQxLCAxOCwgMywgMjQ0LCAyMCwgMzYsIDUsIDEsIAotICAgIDI0MSwgMTgsIDMsIDI0NCwgMjAsIDM2LCA2LCAxLCAyMDksIDE4OCwgMywgMjQ0LCAyMCwgMzYsIDUsIDEsIDIwOSwgMTg4LCAKLSAgICAzLCAyNDQsIDIwLCAzNiwgNiwgMSwgMjExLCA1MywgNjgsIDM2LCA1LCAxLCAyMTEsIDUzLCA2OCwgMzYsIDYsIDEsIDIxMSwgCi0gICAgNTMsIDEwNiwgMywgOTUsIDM2LCA1LCAxLCAyMTEsIDUzLCAxMDYsIDMsIDk1LCAzNiwgNiwgMSwgMjM3LCAxNjAsIDMsIAotICAgIDI0NCwgMjAsIDM2LCA1LCAxLCAyMzcsIDE2MCwgMywgMjQ0LCAyMCwgMzYsIDYsIDMyLCAyMDksIDE4OCwgMjA4LCAxNCwgCi0gICAgMzYsIDUsIDMyLCAyMDksIDE4OCwgMjA4LCAxNCwgMzYsIDYsIDEsIDI0NiwgMTcxLCAzLCAyNDQsIDIwLCAzNiwgNSwgMSwgCi0gICAgMjQ2LCAxNzEsIDMsIDI0NCwgMjAsIDM2LCA2LCAxLCAyNDYsIDE3MSwgMywgODAsIDk1LCAzNiwgNSwgMSwgMjQ2LCAxNzEsIAotICAgIDMsIDgwLCA5NSwgMzYsIDYsIDEsIDIxMywgMTIsIDM2LCA1LCAxLCAyMTMsIDEyLCAzNiwgNiwgMSwgMjUxLCAxNDUsIDI0NiwgCi0gICAgMTcwLCAzNiwgNSwgMSwgMjUxLCAxNDUsIDI0NiwgMTcwLCAzNiwgNiwgMSwgMjUxLCAxNDUsIDI0NiwgMTcxLCAzLCAyNDQsIAotICAgIDIwLCAzNiwgNSwgMSwgMjUxLCAxNDUsIDI0NiwgMTcxLCAzLCAyNDQsIDIwLCAzNiwgMSwgMjE5LCAxMzMsIDM2LCA2LCAxLCAKLSAgICAyMDIsIDcyLCAzLCAyNDcsIDIxNCwgMzYsIDUsIDEsIDIwMiwgNzIsIDMsIDI0NywgMjE0LCAzNiwgNiwgMSwgMjMwLCA0NCwgCi0gICAgMywgMTEzLCAzNiwgNSwgMSwgMjMwLCA0NCwgMywgMTEzLCAzNiwgNiwgMSwgMjQxLCAxMjMsIDMsIDIwOSwgMjQ4LCAzNiwgCi0gICAgNSwgMSwgMjQxLCAxMjMsIDMsIDIwOSwgMjQ4LCAzNiwgNiwgMSwgMjQxLCA5MywgMywgMTEzLCAzNiwgNSwgMSwgMjQxLCAKLSAgICA5MywgMywgMTEzLCAzNiwgNiwgMSwgMjQxLCA5MywgMywgMjA5LCAyNDgsIDM2LCA1LCAxLCAyNDEsIDkzLCAzLCAyMDksIAotICAgIDI0OCwgMzYsIDYsIDEsIDIyOSwgMTM4LCAyNDYsIDE3MCwgMzYsIDUsIDEsIDIyOSwgMTM4LCAyNDYsIDE3MCwgMzYsIDYsIAotICAgIDEsIDI0MSwgMTA0LCAzLCAyMDksIDI0OCwgMzYsIDUsIDEsIDI0MSwgMTA0LCAzLCAyMDksIDI0OCwgMzYsIDUsIDEsIDIxOSwgCi0gICAgMTMzLCAzNiwgNiwgMSwgMzQsIDMsIDI0NywgMjE0LCAzNiwgNSwgMSwgMzQsIDMsIDI0NywgMjE0LCAzNiwgNiwgMSwgMzQsIAotICAgIDMsIDI0MywgMjMxLCAzNiwgNSwgMSwgMzQsIDMsIDI0MywgMjMxLCAzNiwgNiwgMzIsIDM0LCAyMzEsIDExMCwgMzYsIDUsIAotICAgIDMyLCAzNCwgMjMxLCAxMTAsIDM2LCA2LCAxLCAyMzEsIDExMSwgMywgMjQ3LCAyMTQsIDM2LCA1LCAxLCAyMzEsIDExMSwgMywgCi0gICAgMjQ3LCAyMTQsIDM2LCA2LCAxLCAyMTQsIDE5MiwgMzYsIDUsIDEsIDIxNCwgMTkyLCAzNiwgNiwgMSwgMjE0LCAxOTMsIDMsIAotICAgIDI0MywgMjMxLCAzNiwgNSwgMSwgMjE0LCAxOTMsIDMsIDI0MywgMjMxLCAzNiwgNiwgMSwgMjAyLCA3MiwgMywgMjQzLCAKLSAgICAyMzEsIDM2LCA1LCAxLCAyMDIsIDcyLCAzLCAyNDMsIDIzMSwgMzYsIDYsIDEsIDIwMiwgOTMsIDMsIDI0MywgMjMxLCAzNiwgCi0gICAgNSwgMSwgMjAyLCA5MywgMywgMjQzLCAyMzEsIDM2LCA2LCAxLCAyNTEsIDE0NSwgMjQxLCAyNTIsIDM2LCA1LCAxLCAyNTEsIAotICAgIDE0NSwgMjQxLCAyNTIsIDM2LCA2LCAxLCAyMzUsIDIwNiwgMywgMjI1LCAxNzAsIDM2LCA1LCAxLCAyMzUsIDIwNiwgMywgCi0gICAgMjI1LCAxNzAsIDM2LCA2LCAxLCAyMzUsIDIwNiwgMywgMjQzLCAyMzEsIDM2LCA1LCAxLCAyMzUsIDIwNiwgMywgMjQzLCAKLSAgICAyMzEsIDM2LCA2LCAxLCAxNTgsIDMsIDI0MywgMjMxLCAzNiwgNSwgMSwgMTU4LCAzLCAyNDMsIDIzMSwgMzYsIDYsIDEsIAotICAgIDI0OCwgMjI1LCA3OCwgMzYsIDUsIDEsIDI0OCwgMjI1LCA3OCwgMzYsIDYsIDEsIDI0OCwgMjI1LCAxNTgsIDMsIDI0MywgCi0gICAgMjMxLCAzNiwgNSwgMSwgMjQ4LCAyMjUsIDE1OCwgMywgMjQzLCAyMzEsIDM2LCA2LCAxLCAxODgsIDMsIDI0MywgMjMxLCAKLSAgICAzNiwgNSwgMSwgMTg4LCAzLCAyNDMsIDIzMSwgMzYsIDYsIDEsIDEwNiwgMywgMjI1LCAxNzAsIDM2LCA1LCAxLCAxMDYsIDMsIAotICAgIDIyNSwgMTcwLCAzNiwgNiwgMSwgMTA2LCAzLCAyNDMsIDIzMSwgMzYsIDUsIDEsIDEwNiwgMywgMjQzLCAyMzEsIDM2LCA2LCAKLSAgICAxLCAxMDYsIDMsIDUyLCAxNjUsIDM2LCA1LCAxLCAxMDYsIDMsIDUyLCAxNjUsIDM2LCA2LCAxLCAyNDYsIDE3MSwgMywgCi0gICAgMjQzLCAyMzEsIDM2LCA1LCAxLCAyNDYsIDE3MSwgMywgMjQzLCAyMzEsIDM2LCA2LCAxLCAyMzgsIDEwNiwgMywgMjQ0LCAKLSAgICAyMCwgMzYsIDUsIDEsIDIzOCwgMTA2LCAzLCAyNDQsIDIwLCAzNiwgNiwgMSwgMjAzLCAzMSwgMywgMjQzLCAyMzEsIDM2LCAKLSAgICA1LCAxLCAyMDMsIDMxLCAzLCAyNDMsIDIzMSwgMzYsIDYsIDEsIDIzOCwgMTA2LCAzLCAyMTEsIDMyLCAyNSwgMTEzLCAzNiwgCi0gICAgNSwgMSwgMjM4LCAxMDYsIDMsIDIxMSwgMzIsIDI1LCAxMTMsIDM2LCA2LCAxLCAyMzcsIDE2MCwgMywgMTEzLCAzNiwgNSwgCi0gICAgMSwgMjM3LCAxNjAsIDMsIDExMywgMzYsIDYsIDEsIDIzNywgMTYwLCAzLCA5NSwgMzYsIDUsIDEsIDIzNywgMTYwLCAzLCAKLSAgICA5NSwgMzYsIDYsIDEsIDIyOSwgMTAsIDI0NCwgNzUsIDM2LCA1LCAxLCAyMjksIDEwLCAyNDQsIDc1LCAzNiwgNiwgMSwgCi0gICAgMjI5LCAxMCwgMjQzLCAxMzAsIDM2LCA1LCAxLCAyMjksIDEwLCAyNDMsIDEzMCwgMzYsIDYsIDEsIDIyOSwgMTAsIDIwMiwgCi0gICAgMjEsIDM2LCA1LCAxLCAyMjksIDEwLCAyMDIsIDIxLCAzNiwgNiwgMSwgMjI5LCAxMCwgMjQxLCAyNDQsIDM2LCA1LCAxLCAKLSAgICAyMjksIDEwLCAyNDEsIDI0NCwgMzYsIDYsIDEsIDIyOSwgMTAsIDIyNywgODAsIDM2LCA1LCAxLCAyMjksIDEwLCAyMjcsIAotICAgIDgwLCAzNiwgNiwgMSwgMjI5LCAxMCwgMjIyLCA0MSwgMzYsIDUsIDEsIDIyOSwgMTAsIDIyMiwgNDEsIDM2LCA2LCAxLCAKLSAgICAyMjksIDEwLCAyMTIsIDcxLCAzNiwgNSwgMSwgMjI5LCAxMCwgMjEyLCA3MSwgMzYsIDYsIDEsIDIyOSwgMTAsIDIwOCwgCi0gICAgMTkxLCAzNiwgNSwgMSwgMjI5LCAxMCwgMjA4LCAxOTEsIDM2LCA2LCAxLCAyMTYsIDczLCAyMDIsIDkyLCAzNiwgNSwgMSwgCi0gICAgMjE2LCA3MywgMjAyLCA5MiwgMzYsIDYsIDEsIDI0MSwgMTIzLCAzLCAxMTMsIDM2LCA1LCAxLCAyNDEsIDEyMywgMywgMTEzLCAKLSAgICAzNiwgNiwgMSwgMjI3LCAxNjEsIDM2LCA1LCAxLCAyMjcsIDE2MSwgMzYsIDYsIDEsIDIxNiwgNjEsIDM2LCA1LCAxLCAyMTYsIAotICAgIDYxLCAzNiwgNiwgMSwgMjAzLCA5OSwgMzYsIDUsIDEsIDIwMywgOTksIDM2LCA2LCAxLCAyMTcsIDEyNiwgMzYsIDUsIDEsIAotICAgIDIxNywgMTI2LCAzNiwgNiwgMSwgMjA0LCA2MiwgMzYsIDUsIDEsIDIwNCwgNjIsIDM2LCA2LCAxLCAyNTEsIDI2LCAxNzMsIAotICAgIDM2LCA1LCAxLCAyNTEsIDI2LCAxNzMsIDM2LCA2LCAxLCAyNDEsIDEyMywgMywgMTAxLCAxMTMsIDM2LCA1LCAxLCAyNDEsIAotICAgIDEyMywgMywgMTAxLCAxMTMsIDM2LCA2LCAxLCAyNDEsIDkzLCAzLCAxMDEsIDExMywgMzYsIDUsIDEsIDI0MSwgOTMsIDMsIAotICAgIDEwMSwgMTEzLCAzNiwgNiwgMSwgMjE5LCAzNSwgMywgMjQ0LCAyMCwgMzYsIDUsIDEsIDIxOSwgMzUsIDMsIDI0NCwgMjAsIAotICAgIDM2LCA2LCAxLCAyMTMsIDEzLCAzLCAyNDQsIDIwLCAzNiwgNSwgMSwgMjEzLCAxMywgMywgMjQ0LCAyMCwgMzYsIDYsIDEsIAotICAgIDI0MSwgOTMsIDMsIDQ5LCAxMTMsIDM2LCA1LCAxLCAyNDEsIDkzLCAzLCA0OSwgMTEzLCAzNiwgNiwgMSwgMjQxLCAyMzcsIAotICAgIDM2LCA1LCAxLCAyNDEsIDIzNywgMzYsIDYsIDEsIDI0NCwgMTI0LCAzNiwgNSwgMSwgMjQ0LCAxMjQsIDM2LCA2LCAxLCAKLSAgICAyNDEsIDEyMywgMywgMjQ0LCAyMCwgMzYsIDUsIDEsIDI0MSwgMTIzLCAzLCAyNDQsIDIwLCAxNzgsIDYsIDEsIDI1MCwgNSwgCi0gICAgMTc4LCA2LCAxLCAyNDgsIDEyMiwgMTc4LCA2LCAxLCAyMzgsIDY5LCAxNzgsIDYsIDEsIDI0NCwgMjEyLCAxNzgsIDYsIDEsIAotICAgIDI0MSwgMTY3LCAxNzgsIDYsIDEsIDIwMiwgMTE2LCAxNzgsIDYsIDEsIDI0MSwgMTQ3LCAxNzgsIDYsIDEsIDI0MCwgMjUwLCAKLSAgICAxNzgsIDYsIDEsIDEzNSwgMTc4LCA2LCAxLCAyMDIsIDcxLCAxNzgsIDYsIDEsIDIzMSwgMTksIDE3OCwgNiwgMSwgMjI3LCAKLSAgICA4MywgMTc4LCA2LCAxLCAyMDMsIDE3NCwgMTc4LCA2LCAxLCAyNDcsIDkyLCAxNzgsIDYsIDEsIDIyOSwgMTgwLCAxNzgsIDYsIAotICAgIDEsIDIzNiwgMTM2LCAxNzgsIDYsIDEsIDIzMCwgMTgxLCAxNzgsIDYsIDEsIDIzOCwgMTE2LCAxNzgsIDYsIDEsIDI0NiwgCi0gICAgMTYwLCAxNzgsIDYsIDEsIDIyNCwgMjQwLCAxNzgsIDYsIDEsIDIwMywgMTEsIDE3OCwgNiwgMSwgMjIxLCAxNTIsIDE3OCwgCi0gICAgNiwgMSwgMjEzLCA5MCwgMTc4LCA2LCAxLCAyMDUsIDE4OSwgMTc4LCA2LCAxLCAyNDYsIDE5OSwgMTc4LCA2LCAxLCAyMTksIAotICAgIDE2LCAxNzgsIDYsIDEsIDIzMCwgMTQ0LCAxNzgsIDYsIDEsIDIxNiwgMjIwLCAxNzgsIDYsIDEsIDIxNCwgMTU1LCAxNzgsIAotICAgIDYsIDEsIDIwNSwgMjM0LCAxNzgsIDYsIDEsIDIwOCwgMTk0LCAxNzgsIDYsIDEsIDIxNiwgMTIyLCAxNzgsIDYsIDEsIDI0NSwgCi0gICAgMjU0LCAxNzgsIDYsIDEsIDIwMiwgMjUyLCAxNzgsIDYsIDEsIDIxOCwgMTAyLCAxNzgsIDYsIDEsIDIyOSwgMTkxLCAxNzgsIAotICAgIDYsIDEsIDIyMCwgNjAsIDE3OCwgNiwgMSwgMjQwLCA0NywgMTc4LCA2NSwgMSwgNDksIDE2MiwgMjE1LCAyNTIsIDE3OCwgCi0gICAgMjUwLCAxNjAsIDE3OCwgMjQxLCA5NiwgODIsIDE3OCwgMjQwLCAyMTIsIDgyLCAxNzgsIDI0NSwgMjMzLCAxNzgsIDIxNywgCi0gICAgNDcsIDgyLCAxNzgsIDI1MSwgMTQ2LCA4MiwgMTc4LCA1LCAxLCAyNTAsIDUsIDE3OCwgNSwgMSwgMjQ4LCAxMjIsIDE3OCwgCi0gICAgNSwgMSwgMjM4LCA2OSwgMTc4LCA1LCAxLCAyNDQsIDIxMiwgMTc4LCA1LCAxLCAyNDEsIDE2NywgMTc4LCA1LCAxLCAyMDIsIAotICAgIDExNiwgMTc4LCA1LCAxLCAyNDEsIDE0NywgMTc4LCA1LCAxLCAyNDAsIDI1MCwgMTc4LCA1LCAxLCAxMzUsIDE3OCwgNSwgMSwgCi0gICAgMjAyLCA3MSwgMTc4LCA1LCAxLCAyMzEsIDE5LCAxNzgsIDUsIDEsIDIyNywgODMsIDE3OCwgNSwgMSwgMjAzLCAxNzQsIAotICAgIDE3OCwgNSwgMSwgMjQ3LCA5MiwgMTc4LCA1LCAxLCAyMjksIDE4MCwgMTc4LCA1LCAxLCAyMzYsIDEzNiwgMTc4LCA1LCAxLCAKLSAgICAyMzAsIDE4MSwgMTc4LCA1LCAxLCAyMzgsIDExNiwgMTc4LCA1LCAxLCAyNDYsIDE2MCwgMTc4LCA1LCAxLCAyMjQsIDI0MCwgCi0gICAgMTc4LCA1LCAxLCAyMDMsIDExLCAxNzgsIDUsIDEsIDIyMSwgMTUyLCAxNzgsIDUsIDEsIDIxMywgOTAsIDE3OCwgNSwgMSwgCi0gICAgMjA1LCAxODksIDE3OCwgNSwgMSwgMjQ2LCAxOTksIDE3OCwgNSwgMSwgMjE5LCAxNiwgMTc4LCA1LCAxLCAyMzAsIDE0NCwgCi0gICAgMTc4LCA1LCAxLCAyMTYsIDIyMCwgMTc4LCA1LCAxLCAyMTQsIDE1NSwgMTc4LCA1LCAxLCAyMDUsIDIzNCwgMTc4LCA1LCAxLCAKLSAgICAyMDgsIDE5NCwgMTc4LCA1LCAxLCAyMTYsIDEyMiwgMTc4LCA1LCAxLCAyNDUsIDI1NCwgMTc4LCA1LCAxLCAyMDIsIDI1MiwgCi0gICAgMTc4LCA1LCAxLCAyMTgsIDEwMiwgMTc4LCA1LCAxLCAyMjksIDE5MSwgMTc4LCA1LCAxLCAyMjAsIDYwLCAxNzgsIDUsIDEsIAotICAgIDI0MCwgNDcsIDE3OCwgNSwgMzIsIDI0MSwgMTY4LCAyMDIsIDI1MiwgMTc4LCAyMzksIDEwMiwgMjExLCA2MSwgMTc4LCAKLSAgICAyMzUsIDIyMCwgMjE2LCAxNSwgMTc4LCAyNDAsIDI0NiwgNTQsIDIyNywgMjIxLCAxNzgsIDI0MCwgMjQ2LCA1NCwgMTc4LCAKLSAgICAyNDIsIDYwLCA1NCwgMTEwLCAyNTEsIDEzOSwgMjQwLCAyNDEsIDExMCwgMjUxLCAxMzksIDIxNCwgMTU2LCAxMTAsIDI1MSwgCi0gICAgMTM5LCAyMTMsIDY5LCAxMTAsIDI1MSwgMTM5LCAyMDIsIDEwMywgMjE3LCAxMDksIDExMCwgMjUxLCAxMzksIDIwMiwgMTAzLCAKLSAgICAyMzgsIDI1NCwgMTEwLCAyNTEsIDEzOSwgMjA4LCAyMDksIDExMCwgMjUxLCAxMzksIDIxNiwgNzAsIDExMCwgMjUxLCAxMzksIAotICAgIDIwMiwgMTAxLCAxMTAsIDI1MSwgMTM5LCAyMTksIDYxLCAxMTAsIDI1MSwgMTM5LCAyMDMsIDIzLCAxMTAsIDI1MSwgMTM5LCAKLSAgICAyMDksIDExNSwgMTEwLCAyNTEsIDEzOSwgMjM4LCAxNjcsIDExMCwgMjUxLCAxMzksIDIzOCwgMTY4LCAyMjMsIDIwOCwgCi0gICAgMTEwLCAyNTEsIDEzOSwgMjM4LCAxNjUsIDExMCwgMjUxLCAxMzksIDIxNywgMTEwLCAyMTksIDkwLCAxMTAsIDI1MSwgMTM5LCAKLSAgICAyMDksIDE1OCwgMjM4LCAxODMsIDExMCwgMjUxLCAxMzksIDIxOSwgNDAsIDExMCwgMjUxLCAxMzksIDI1MCwgNDMsIDIzNywgCi0gICAgMTUyLCAxMTAsIDI1MSwgMTM5LCAyMjMsIDIxOCwgMTEwLCAyNTEsIDEzOSwgMjI1LCAxNDUsIDExMCwgMjUxLCAxMzksIAotICAgIDIyNCwgMjI5LCAxMTAsIDI1MSwgMTM5LCAyMjQsIDIzMCwgMjI5LCAxOTIsIDExMCwgMjUxLCAxMzksIDI0NCwgMTUxLCAKLSAgICAxMTAsIDI1MSwgMTM5LCAyMTcsIDEyMSwgMTEwLCAyNTEsIDEzOSwgMjA5LCAxNTgsIDIxNywgMTA0LCAxMTAsIDI1MSwgCi0gICAgMTM5LCAyMDMsIDMzLCAyNDgsIDEyMywgMjAyLCAyMzMsIDExMCwgMjUxLCAxMzksIDIyMCwgNDMsIDExMCwgMjUxLCAxMzksIAotICAgIDIzMSwgNjksIDExMCwgMjUxLCAxMzksIDI0NCwgNTMsIDExMCwgMjUxLCAxMzksIDIwMiwgMjgsIDExMCwgMTMxLCAyMjUsIAotICAgIDc1LCAyNDYsIDYxLCAxMTAsIDIxOCwgNjMsIDIxMywgMTUsIDExMCwgMjE4LCA2MywgMjM3LCA4MiwgMjE0LCAxNTYsIDExMCwgCi0gICAgMjE4LCA2MywgMjM3LCA4MiwgMjE5LCA1NCwgMTEwLCAyMTgsIDYzLCAyMzcsIDgyLCAyMTcsIDExNCwgMTEwLCAyMTgsIDYzLCAKLSAgICAyMzYsIDIzMiwgMTEwLCAyMTgsIDYzLCAyMDgsIDExLCAxMTAsIDIxOCwgNjMsIDIxNCwgMTU2LCAxMTAsIDIxOCwgNjMsIAotICAgIDIxOSwgNTQsIDExMCwgMjE4LCA2MywgMjE3LCAxMTQsIDExMCwgMjE4LCA2MywgMjM2LCAxMjgsIDExMCwgMjE4LCA2MywgCi0gICAgMjM2LCAxMjksIDIzNywgODQsIDM1LCAyMDYsIDU5LCAxMTAsIDIxOCwgNjMsIDIxNywgNTEsIDExMCwgMjE4LCA2MywgMjQ0LCAKLSAgICAxOTgsIDIxOSwgMjQ1LCAyMjUsIDEwNSwgMTEwLCAyMTgsIDYzLCAyMjQsIDIxOSwgMTEwLCAyMTcsIDE3OSwgMjI1LCAxMDIsIAotICAgIDExMCwgMjE4LCA2MywgMjE2LCAyMDAsIDExMCwgMjE3LCAxNzksIDIxOSwgNjMsIDExMCwgMjE4LCA2MywgMjEzLCAwLCAKLSAgICAyNDMsIDg1LCAxMTAsIDIxOCwgNjMsIDIxMiwgMTI0LCAyNDMsIDg1LCAxMTAsIDIxNywgMTc5LCAyMTIsIDgsIDIxOSwgNTYsIAotICAgIDExMCwgMTMxLCAyMDYsIDIyMSwgMjQzLCA4NSwgMTEwLCAxMzEsIDIyNiwgMjUxLCAyNDMsIDg1LCAxMTAsIDIxNywgMTc5LCAKLSAgICAyMjEsIDQxLCAyMzcsIDE1MSwgMTEwLCAyMTgsIDYzLCAyMTcsIDExNSwgMjE3LCAxMDksIDExMCwgMSwgMjUxLCAzMCwgCi0gICAgMTEwLCAxLCAyNDgsIDEwOCwgMTEwLCAxLCAyMzgsIDY3LCAxMTAsIDEsIDI0NCwgMTc4LCAxMTAsIDEsIDIzNywgNjcsIAotICAgIDExMCwgMSwgMjA2LCA1OSwgMTEwLCAxLCAyMDIsIDk1LCAxMTAsIDEsIDIzNywgMjEsIDExMCwgMSwgMjA5LCAxMzIsIDExMCwgCi0gICAgMSwgMjAyLCAyMzYsIDExMCwgMSwgNDYsIDIzMCwgMjIsIDExMCwgMSwgMjMwLCAyMiwgMTEwLCAxLCAyMjgsIDIwLCAxMTAsIAotICAgIDEsIDQ2LCAyMjQsIDI0NywgMTEwLCAxLCAyMjQsIDI0NywgMTEwLCAxLCA0NiwgMjIxLCA0MCwgMTEwLCAxLCAyMjEsIDQwLCAKLSAgICAxMTAsIDEsIDIxNCwgMjQ5LCAxMTAsIDEsIDI1MCwgMywgMTEwLCAxLCA0NiwgMjE5LCAzNCwgMTEwLCAxLCAyMTksIDM0LCAKLSAgICAxMTAsIDEsIDQ2LCAyMDgsIDE1LCAxMTAsIDEsIDIwOCwgMTUsIDExMCwgMSwgMjE3LCA3NCwgMTEwLCAxLCAyMTYsIDkxLCAKLSAgICAxMTAsIDEsIDIxMiwgMjU1LCAxMTAsIDEsIDIwOSwgMjAzLCAxMTAsIDMyLCAyMDMsIDksIDUyLCAyMDYsIDU5LCAxMTAsIAotICAgIDMyLCAyMDMsIDksIDIwNiwgNjAsIDIwMiwgMjM2LCAxMTAsIDMyLCAyMDMsIDksIDUyLCAyMDIsIDIzNiwgMTEwLCAyMTcsIAotICAgIDE3OSwgMjM4LCAxNjcsIDExMCwgMjE3LCAxNzksIDIzOCwgMTY1LCAxMCwgNDIsIDU0LCAxMCwgMiwgMjE0LCAyNDIsIDEwLCAKLSAgICAyMzksIDE3MCwgMjI1LCA4OCwgMTAsIDIsIDIxNSwgMjQsIDEwLCAyLCAyMTQsIDI0NSwgMTAsIDQyLCAxMzEsIDU1LCAyNTAsIAotICAgIDE0MCwgMjQ1LCAxMDYsIDIxNSwgMjA0LCAyNTAsIDE0MCwgMjM5LCAxNDAsIDIxNSwgMjA0LCAxMCwgMjE2LCAxNjUsIDI1MCwgCi0gICAgMTQwLCAyMTgsIDI0NywgMjI0LCAxMTYsIDU0LCAyNTAsIDE0MCwgMjE4LCAyNDcsIDIwOSwgMTUzLCAyMDksIDM3LCA1NCwgCi0gICAgMjUxLCA4NiwgNTQsIDEwLCAyNDUsIDIzMywgMTAsIDI0NCwgMTM4LCAyMTMsIDEzMCwgMTAsIDIxOCwgNjUsIDIwNiwgNDAsIAotICAgIDU0LCAxMCwgMiwgMjI0LCA5NSwgMTAsIDIsIDIxNSwgMywgMjUxLCAzMywgMjA0LCA4NiwgMTAsIDIsIDI1MSwgMzMsIDI1MCwgCi0gICAgNjQsIDEwLCAyLCAyMTYsIDE5OCwgMjUxLCAzMiwgMTAsIDIsIDIxNiwgMjA2LCAyNTEsIDEyLCAyNTAsIDIxMCwgMTAsIDIsIAotICAgIDIwOSwgMjQwLCAxMCwgNSwgMTM4LCAyMDksIDI1MSwgMTAsIDUsIDEzOCwgMzIsIDEzNywgMywgMjI4LCAyOSwgMywgMjAzLCAKLSAgICA0NywgMTAsIDUsIDEzOCwgMjAyLCAxMDcsIDEwLCA1LCAyNDAsIDcxLCAxMCwgNSwgMjQ0LCAxNzIsIDEwLCA1LCAyMjksIAotICAgIDIyOSwgMTAsIDIxMywgMTQzLCAxMCwgMSwgODIsIDEwLCAyMDgsIDcwLCA3MCwgMjE3LCAxNzksIDgyLCAxMCwgMjE3LCA0NywgCi0gICAgODIsIDEwLCAxLCAyMjksIDIzMywgMjAzLCA0NywgMTAsIDEsIDIzNywgMTI3LCAxMCwgMSwgMTM3LCAzLCAyMjUsIDE2NiwgCi0gICAgNTUsIDEwLCAxLCAxMzcsIDMsIDIzNywgMTI4LCA1NSwgMTAsIDEsIDIwNCwgNzEsIDMsIDIzNywgMTI4LCA1NSwgMTAsIDEsIAotICAgIDEzNywgMywgMjM3LCAxMjgsIDU2LCAxMCwgMSwgODksIDMsIDIzNywgMTI4LCA1NSwgMTAsIDEsIDI1MSwgMzAsIDEwLCAxLCAKLSAgICAyNDgsIDEzOCwgMTAsIDEsIDIwOSwgMTcwLCAyMjUsIDk4LCAxMCwgMSwgMjA5LCAxNjksIDEwLCAxLCAyMDksIDg4LCAxMCwgCi0gICAgMSwgMjMwLCAxNTgsIDEwLCAxLCAyMzcsIDE0OCwgMTAsIDEsIDIyOSwgMTQwLCAxMCwgMSwgMjQ0LCAxODQsIDEwLCAxLCAKLSAgICAyMDksIDEwMCwgMTAsIDEsIDIxNiwgMTIyLCAxMCwgMSwgMjAyLCAxMDcsIDEwLCAxLCAyMTQsIDE2MSwgMTAsIDEsIDIxMywgCi0gICAgMzksIDEwLCAxLCAyMTUsIDI4LCAxMCwgMSwgMjQ0LCAyMDcsIDEwLCAxLCAyMDksIDI1MSwgMTAsIDEsIDIwMiwgMTEwLCAKLSAgICAxMCwgMSwgMjUxLCA1OSwgMTAsIDEsIDIzOCwgMTE0LCAxMCwgMSwgMjI5LCAxOTAsIDMsIDEyMCwgMTg3LCA1NSwgMTAsIDEsIAotICAgIDIyOSwgMTkwLCAzLCAxMjYsIDE4NywgNTYsIDEwLCAxLCAyNDAsIDc1LCA4OSwgMywgMjMwLCAyMzksIDIwNiwgMTY0LCAxMCwgCi0gICAgMSwgMjQwLCA3NSwgODksIDMsIDEyMCwgMTg3LCA1NSwgMTAsIDEsIDI0MCwgNzUsIDg5LCAzLCAxMjYsIDE4NywgNTUsIDEwLCAKLSAgICAyMDksIDIwOSwgMTAsIDEsIDI0MCwgNDcsIDEwLCAxLCAyMTcsIDExOSwgMTAsIDEsIDIzMCwgMjIsIDEwLCAxLCAyMjgsIAotICAgIDI4LCAxMCwgMSwgMjI1LCA1LCAxMCwgMSwgMjIxLCAxNzgsIDEwLCAxLCAyMzcsIDQzLCAxMCwgMSwgMjA0LCA3MCwgMTAsIAotICAgIDEsIDEzNywgMjI1LCAxMjksIDEwLCAxLCAyMDMsIDQ3LCAxMCwgMjQwLCA2OSwgMTAsIDI0NCwgMTcwLCAxMCwgMjI5LCAKLSAgICAyMjcsIDEwLCAyNDAsIDcxLCAxMCwgMjQ0LCAxNzIsIDEwLCAyMjksIDIyOSwgMTAsIDIxMywgODAsIDEwLCAyMTAsIDIyMiwgCi0gICAgMTAsIDIyNSwgMTY0LCA1NSwgMTAsIDIzNywgMTI4LCA1NSwgMTAsIDIzNywgMTI4LCA1NiwgMTAsIDIxMCwgMjQ2LCAyNTEsIAotICAgIDMwLCAxMCwgMjMwLCAyMzksIDI0NCwgMTcyLCAxMCwgMTMxLCAyMjEsIDE3OSwgMjM4LCA4NSwgMTAsIDIwMSwgMjQ4LCAxMCwgCi0gICAgMjIsIDIsIDUsIDIwNiwgMTY1LCA1NSwgMTAsIDIyLCAyLCAyMzAsIDIzOSwgNSwgMjA2LCAxNjUsIDU1LCAxMCwgMjIsIDIsIAotICAgIDcwLCA1NiwgMTAsIDIxNiwgNzMsIDI0NCwgMTcyLCAxMCwgMjQwLCA3MiwgMywgMTIwLCAyNDMsIDgzLCAxMCwgMjA0LCA3MiwgCi0gICAgMjM3LCAxMjgsIDU2LCAyNTAsIDE0MCwgMTcsIDIwMiwgODQsIDI1MCwgMTQwLCAxNywgMTA1LCAyNTAsIDE0MCwgMTcsIAotICAgIDEwOCwgMjUwLCAxNDAsIDE3LCAxNDcsIDI1MCwgMTQwLCAxNywgMTQ5LCAyNTAsIDE0MCwgMTcsIDE3MCwgMjUwLCAxNDAsIAotICAgIDE3LCAxOTUsIDI1MCwgMTQwLCAxNywgMjEzLCAxMTEsIDI1MCwgMTQwLCAxNywgMTk5LCAyNTAsIDE0MCwgMTcsIDIyMiwgCi0gICAgNjMsIDEwLCAyMTgsIDI0NiwgNTQsIDEwLCAyNDQsIDY4LCAyMTMsIDEzMCwgMTAsIDIwOSwgMzUsIDIxMywgMTMwLCAxMCwgCi0gICAgMjM5LCAyMzMsIDIxOCwgNjEsIDIxMSwgOTQsIDEwLCAxLCAyNDMsIDg0LCAyNDgsIDEzOCwgMTAsIDEsIDI0MywgODQsIAotICAgIDIxNywgMTE5LCAxMCwgMSwgMjEwLCAxOTksIDI1MSwgMzAsIDEwLCAxLCAxMzcsIDIwNCwgODcsIDEwLCAxLCAxMzcsIDMsIAotICAgIDIwNCwgNzIsIDIzNywgMTI4LCA1NSwgMTAsIDEsIDEzNywgMywgMjA0LCA3MiwgMjM3LCAxMjgsIDU2LCAxMCwgMSwgMTM4LCAKLSAgICAyMzcsIDEyNywgMTAsIDEsIDEzOCwgMjM3LCAxMjgsIDI1MSwgMzAsIDEwLCAxLCAxMzgsIDIzNywgMTI4LCAyMDQsIDcwLCAKLSAgICAxMCwgMSwgMTA2LCAzLCAyMzcsIDEyOCwgNTUsIDEwLCAxLCAxMzgsIDIzNywgMTI4LCAyMDMsIDQ3LCAxMCwgMSwgMjA3LCAKLSAgICAyMzMsIDEwLCAxLCAyMDcsIDIzMSwgMTAsIDEsIDI0OCwgMTQ4LCAxMCwgMSwgMjA5LCAxNzAsIDMsIDIxNSwgMjUyLCAxMCwgCi0gICAgMSwgMjA5LCAxNzAsIDMsIDEyNiwgMTg3LCA4NywgMjQyLCA2OCwgMTAsIDEsIDIxOSwgMTYsIDEwLCAxLCAyMDksIDE2NywgCi0gICAgMTAsIDEsIDI0OCwgMTM2LCAxMCwgMSwgMTUxLCAzLCAyMzcsIDEyOCwgNTUsIDEwLCAxLCAxNTEsIDMsIDEyMCwgMTg3LCAKLSAgICA4MCwgNTUsIDEwLCAxLCAyMjAsIDI1NCwgMTAsIDEsIDI0MiwgNSwgMTAsIDEsIDE1MSwgMywgMTI2LCAxODcsIDU1LCAxMCwgCi0gICAgMSwgMjA5LCAxOTEsIDEwLCAxLCAyMDksIDE4OSwgMTAsIDEsIDI0NCwgMTE1LCAxMCwgMSwgMjQ0LCAxODUsIDMsIDIxNSwgCi0gICAgMjUyLCAxMCwgMSwgMjQ0LCAxODUsIDMsIDcwLCA1NiwgMTAsIDEsIDI0NCwgMTg1LCAzLCA3MCwgMjQ4LCAxMjYsIDI1LCA1LCAKLSAgICAyMDksIDI1MSwgMTAsIDEsIDI0NCwgMTkxLCAxMCwgMSwgMjQ0LCAxMTcsIDEwLCAxLCAyNDIsIDMzLCAxMCwgMSwgMjQ0LCAKLSAgICAxODUsIDMsIDEyNiwgMTg3LCA4NywgMjQyLCA2OCwgMTAsIDEsIDI0NCwgMTg1LCAzLCAyMzksIDE0NywgMTg3LCA1NSwgMTAsIAotICAgIDEsIDIxNSwgMTc3LCAxMCwgMSwgMjE2LCAxMjMsIDMsIDUsIDIwNiwgMTY0LCAxMCwgMSwgMjE2LCAxMjMsIDMsIDIxNSwgCi0gICAgMjUyLCAxMCwgMSwgMjE2LCAxMjMsIDMsIDcwLCA1NiwgMTAsIDEsIDIxNiwgMTIzLCAzLCA1LCAyMDYsIDE2NSwgNTYsIDEwLCAKLSAgICAxLCAyMTYsIDEyMywgMywgNzAsIDI0OCwgMTI2LCAyNSwgNzAsIDU1LCAxMCwgMSwgMjE2LCAxMjMsIDMsIDEyMCwgMTg3LCAKLSAgICA1NSwgMTAsIDEsIDIzMCwgMTU1LCAxMCwgMSwgMjE2LCAxMjMsIDMsIDIzOSwgMTQ3LCAxODcsIDU1LCAxMCwgMSwgMjE0LCAKLSAgICAxNjIsIDMsIDcwLCAyNDgsIDEyNiwgMjUsIDcwLCA1NSwgMTAsIDEsIDIxNCwgMTYyLCAzLCAxMjYsIDE4NywgNTYsIDEwLCAKLSAgICAxLCAyMTQsIDE2MiwgMywgMTI2LCAxODcsIDI0OCwgMTI2LCAyNSwgMTI2LCAxODcsIDU1LCAxMCwgMSwgMjE1LCAyOSwgMywgCi0gICAgMTIwLCAxODcsIDU2LCAxMCwgMSwgMjE1LCAyOSwgMywgMTI2LCAxODcsIDU1LCAxMCwgMSwgMjA5LCAyNTIsIDMsIDEyNiwgCi0gICAgMTg3LCA1NSwgMTAsIDEsIDI1MSwgNjAsIDMsIDEyNiwgMTg3LCA1NSwgMTAsIDEsIDI0MywgODQsIDI0MCwgNDcsIDEwLCAxLCAKLSAgICAyNDAsIDQ4LCAzLCA3MCwgMjI0LCA1LCA1NiwgMTAsIDEsIDI0MCwgNDgsIDMsIDcwLCA1NiwgMTAsIDEsIDIwNiwgNDgsIAotICAgIDEwLCAxLCAyNDAsIDQ4LCAzLCAxMjYsIDE4NywgNTYsIDEwLCAxLCAyMTksIDE0LCAxMCwgMSwgMjE3LCAxMjAsIDMsIDcwLCAKLSAgICA1NSwgMTAsIDEsIDIxNywgMTIwLCAzLCAxMjYsIDE4NywgNTUsIDEwLCAxLCAyMjksIDE4OSwgMTAsIDEsIDIxMCwgMTY5LCAKLSAgICAyMzAsIDIyLCAxMCwgMSwgMjMwLCAyMywgMywgMjE1LCAyNTIsIDEwLCAxLCAyMzAsIDIzLCAzLCA3MCwgNTUsIDEwLCAxLCAKLSAgICAyMjIsIDIwNSwgMTAsIDEsIDIzMCwgMjMsIDMsIDEyNiwgMTg3LCA1NiwgMTAsIDEsIDIzOCwgMjUxLCAxMCwgMSwgMjM4LCAKLSAgICAyNTIsIDMsIDIxNSwgMjUyLCAxMCwgMSwgMjIyLCAxMjYsIDEwLCAxLCAyMzgsIDI1MiwgMywgMTIwLCAxODcsIDU2LCAxMCwgCi0gICAgMSwgMjM3LCAyMTcsIDEwLCAxLCAyMzgsIDI1MiwgMywgMTI2LCAxODcsIDU1LCAxMCwgMSwgMjI4LCAyOSwgMywgNSwgMjA2LCAKLSAgICAxNjQsIDEwLCAxLCAyMjgsIDI5LCAzLCA3MCwgNTUsIDEwLCAxLCAyMjgsIDI5LCAzLCAxMjYsIDE4NywgNTUsIDEwLCAxLCAKLSAgICAyMjgsIDI5LCAzLCAxMjYsIDE4NywgNTYsIDEwLCAxLCAyMjEsIDE3OSwgMywgNzAsIDU2LCAxMCwgMSwgMjIxLCAxNzksIAotICAgIDIzOCwgODUsIDEwLCAxLCAyMTUsIDIzMCwgMTAsIDEsIDIyMSwgMTc5LCAzLCAyMTUsIDI1MiwgMTAsIDEsIDIyMSwgMTc5LCAKLSAgICAzLCAxMjYsIDE4NywgNTUsIDEwLCAxLCAyMzcsIDQ0LCAyNDMsIDEwOSwgMTAsIDEsIDIwOSwgMTkyLCAzLCA3MCwgNTUsIAotICAgIDEwLCAxLCAyMzcsIDQ0LCAzLCA4OSwgNTUsIDEwLCAxLCAyMzcsIDQ0LCAyMzgsIDM2LCAxMCwgMSwgMjM3LCA0NCwgMjM4LCAKLSAgICAzNywgMywgMjM3LCAxMjgsIDU1LCAxMCwgMSwgMjA5LCAxNzAsIDIyNSwgOTksIDIzOCwgMzYsIDEwLCAxLCAyMDQsIDcxLCAKLSAgICAzLCAyMTUsIDI1MiwgMTAsIDEsIDIyOSwgNzYsIDIyMCwgNzMsIDEwLCAxLCAyMjAsIDczLCAxMCwgMSwgNjgsIDEwLCAxLCAKLSAgICAyMDIsIDIxMywgMTAsIDEsIDIyOSwgNzYsIDIwMiwgMjEzLCAxMCwgMSwgMjA0LCA3MSwgMywgMTIwLCAxODcsIDU1LCAxMCwgCi0gICAgMSwgMjA2LCA1NSwgMTAsIDEsIDI0MCwgNzUsIDIwMywgNDcsIDEwLCAxLCA4OSwgMywgMjA5LCAyNDgsIDEwLCAxLCA4OSwgCi0gICAgMywgNSwgMjA2LCAxNjQsIDEwLCAxLCAyMDQsIDcxLCAzLCA3MCwgNTUsIDEwLCAxLCA3NCwgMTAsIDEsIDg5LCAzLCAxMjYsIAotICAgIDE4NywgNTYsIDEwLCAxLCA4OSwgMjQ4LCAyMjMsIDEwLCAxLCA4OSwgMjQ4LCAyMjQsIDMsIDIzNywgMTI4LCA1NSwgMTAsIAotICAgIDIzOSwgMTAyLCAyMTEsIDYxLCAxMCwgMSwgMjUxLCAxMDksIDEwLCA1LCAxMzgsIDMyLCAyMTUsIDI5LCAzLCAyMjgsIDI5LCAKLSAgICAzLCAxMzcsIDIyNSwgMTI5LCAxMCwgNSwgMTM4LCAzMiwgMjE3LCAxMjAsIDMsIDIyOCwgMjksIDMsIDEzNywgMjI1LCAxMjksIAotICAgIDEwLCA1LCAxMzgsIDgzLCA4MSwgMTgsIDEwLCA1LCAxMzgsIDIyOCwgMjksIDI1MSwgMzAsIDEwLCA1LCAxMzgsIDIzMCwgCi0gICAgMTU4LCAxMCwgNSwgMTM4LCAxMjYsIDI0MywgODMsIDEwLCA1LCAxMzgsIDIxNCwgMTYxLCAxMCwgMjQxLCA4NCwgNzYsIAotICAgIDI1MCwgNywgMTAsIDIxMSwgOTAsIDc2LCAyMTUsIDE0MywgMjQxLCAxMjMsIDIzNiwgMjI3LCAxMCwgNSwgMTM4LCAyMTUsIAotICAgIDE4OSwgMjAyLCA4NCwgMTAsIDUsIDEzOCwgMjA2LCAyMTksIDIxNiwgMTQyLCAyMDIsIDg0LCAxMCwgNSwgMTM4LCAyNDMsIAotICAgIDg0LCAyMzcsIDY1LCA3NiwgMjI5LCAxNDAsIDEwLCA1LCAxMzgsIDgzLCA2NCwgMTgsIDEwLCA1LCAxMjQsIDIxNCwgMTYxLCAKLSAgICAxMCwgNSwgMTM4LCAyMjUsIDE2NSwgMTAsIDUsIDIwNCwgNzAsIDEwLCA1LCAyMDMsIDQ3LCAxMCwgNSwgMTM4LCAyMDMsIAotICAgIDQ3LCAxMCwgNSwgMTM4LCAyMjEsIDE3OCwgMTAsIDIxOCwgOTcsIDc2LCAyMTUsIDE0LCAxMCwgMjQxLCA5NCwgMjQ2LCAKLSAgICAyMTgsIDEyNCwgMjExLCA2MSwgMTAsIDI0MSwgOTQsIDI0NiwgMjE4LCAxMzgsIDIxMSwgNjEsIDEwLCAyMTUsIDE4OSwgCi0gICAgMTM4LCAyMTEsIDYyLCAzLCAyNDAsIDgsIDI0NiwgMjE3LCAxMCwgNSwgMTI0LCAyMjUsIDUsIDEwLCAxLCAyNDQsIDE4NSwgCi0gICAgMywgMjMwLCAyMzksIDIwNiwgMTY0LCAxMCwgMSwgMjE2LCAxMjMsIDMsIDIzMCwgMjM5LCAyMDYsIDE2NCwgMjQwLCAyMDIsIAotICAgIDI1MCwgMTQwLCAxNywgMjAyLCA4NCwgMjQwLCAyMDIsIDI1MCwgMTQwLCAxNywgMTA1LCAyNDAsIDIwMiwgMjUwLCAxNDAsIAotICAgIDE3LCAxMDgsIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDE0NywgMjQwLCAyMDIsIDI1MCwgMTQwLCAxNywgMTQ5LCAyNDAsIAotICAgIDIwMiwgMjUwLCAxNDAsIDE3LCAxNzAsIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDE5NSwgMjQwLCAyMDIsIDI1MCwgMTQwLCAKLSAgICAxNywgMjEzLCAxMTEsIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDE5OSwgMjQwLCAyMDIsIDI1MCwgMTQwLCAxNywgMjIyLCAKLSAgICA2MywgMTAsIDEsIDIxMywgNDAsIDMsIDcwLCA1NiwgMTAsIDEsIDI0NCwgMjA4LCAzLCA3MCwgNTYsIDEwLCAxLCAyMzgsIAotICAgIDExNSwgMywgNzAsIDU2LCAxMCwgMiwgMjEyLCAxMjMsIDI1MCwgMjM1LCAxMCwgMiwgMjEyLCAxMjMsIDIxOCwgMjcsIDIyNCwgCi0gICAgMjQwLCAxMCwgMSwgMjM3LCA0NCwgMywgMjMwLCAyMzksIDIwNiwgMTY0LCAyMTAsIDg5LCAyNDEsIDg0LCA3NiwgMjE5LCAKLSAgICA4OCwgMjEwLCA4OSwgMjEwLCAxOTUsIDIzOSwgMTAyLCAyMTEsIDYxLCAyMTAsIDg5LCAyMTAsIDI0OCwgMjM5LCAxMDIsIAotICAgIDIxMSwgNjEsIDIxMCwgODksIDIxMCwgMTk1LCAyNDUsIDI0MiwgMjEwLCA4OSwgMjEwLCAyNDgsIDI0NSwgMjQyLCAyMTAsIAotICAgIDg5LCAyMzYsIDEwNiwgMjQ1LCAyNDIsIDIxMCwgODksIDI0NSwgMjQzLCAyMTIsIDY4LCAyMjcsIDIyMiwgMjEwLCA4OSwgCi0gICAgMjQ1LCAyNDMsIDIxMiwgNjgsIDIxNiwgMTYsIDIxMCwgODksIDIxMCwgMTk1LCAyNDUsIDI0MywgMjEyLCA2OCwgMjI3LCAKLSAgICAyMjIsIDIxMCwgODksIDIxMCwgMjQ4LCAyNDUsIDI0MywgMjEyLCA2OCwgMjE2LCAxNiwgMjEwLCA4OSwgMjQ1LCAxODYsIAotICAgIDIxMCwgODksIDIzNywgODksIDIyMCwgOTEsIDIxMCwgODksIDIzNywgODksIDIyNCwgMjE3LCAyMTAsIDg5LCAyMzcsIDg5LCAKLSAgICAyNTAsIDYxLCAyMTAsIDg5LCAyNTEsIDE0NiwgODIsIDIxMCwgODksIDEsIDI1MSwgMzUsIDIxMCwgODksIDEsIDIxMCwgCi0gICAgMTk5LCAyNTEsIDM1LCAyMTAsIDg5LCAxLCAyNDgsIDEwNSwgMjEwLCA4OSwgMSwgMjM4LCAyNDEsIDIxMCwgODksIDEsIAotICAgIDIzOCwgMjQyLCAyMzgsIDIxOSwgMjEwLCA4OSwgMSwgMjQ0LCAxODEsIDIxMCwgODksIDEsIDI0MywgODQsIDI0NCwgMTgyLCAKLSAgICAyMTUsIDI0NiwgMjEwLCA4OSwgMSwgMjM3LCA2NywgMjEwLCA4OSwgMSwgMjA0LCA3MCwgMjEwLCA4OSwgMSwgMjAyLCAxMDcsIAotICAgIDIxMCwgODksIDEsIDIzNywgMTksIDIxMCwgODksIDEsIDIwOSwgMTI4LCAyMTAsIDg5LCAxLCAyMDksIDEyOSwgMjM4LCAKLSAgICAyMTksIDIxMCwgODksIDEsIDIwMiwgMjAwLCAyMTAsIDg5LCAxLCAyMDIsIDIwMSwgMjM3LCA2NywgMjEwLCA4OSwgMSwgCi0gICAgMjI5LCAyNTAsIDIxMCwgODksIDEsIDIyOCwgMjcsIDIxMCwgODksIDEsIDIyNCwgMTEyLCAyMTAsIDg5LCAxLCAyMjEsIDQwLCAKLSAgICAyMTAsIDg5LCAxLCAyMTMsIDEzNiwgMjEwLCA4OSwgMSwgNDYsIDIxMywgMTM2LCAyMTAsIDg5LCAxLCA3NCwgMjEwLCA4OSwgCi0gICAgMSwgMjE5LCAzNCwgMjEwLCA4OSwgMSwgMjE2LCA3MywgMjE5LCAzNCwgMjEwLCA4OSwgMSwgMjE1LCAyNiwgMjEwLCA4OSwgCi0gICAgMSwgMjE3LCAxMTMsIDIxMCwgODksIDEsIDIxNSwgMjQ2LCAyMTAsIDg5LCAxLCAyMTIsIDI1NSwgMjEwLCA4OSwgMSwgMjA5LCAKLSAgICAyMDEsIDIxMCwgODksIDEsIDIxOCwgMjMxLCAyNDgsIDkyLCAyMTAsIDg5LCAxLCAyMTgsIDIzMSwgMjM4LCAxMTIsIDIxMCwgCi0gICAgODksIDEsIDIxOCwgMjMxLCAyNDMsIDI1MiwgMjEwLCA4OSwgMjE3LCAxOTIsIDU1LCAyMTAsIDg5LCAyMTcsIDE5MiwgNTYsIAotICAgIDIxMCwgODksIDIxNywgMTkyLCAyNDIsIDgyLCAyMTAsIDg5LCAyMDIsIDExLCA1NSwgMjEwLCA4OSwgMjAyLCAxMSwgNTYsIAotICAgIDIxMCwgODksIDIwMiwgMTEsIDI0MiwgODIsIDIxMCwgODksIDIxNiwgMTYxLCA1NSwgMjEwLCA4OSwgMjE2LCAxNjEsIDU2LCAKLSAgICAyMTAsIDg5LCAyNDIsIDgzLCAyMDIsIDE4LCAyMzYsIDEwNSwgMjEwLCA4OSwgMjQyLCA4MywgMjAyLCAxOCwgMjUwLCAyMTEsIAotICAgIDIxMCwgODksIDIzNywgNzAsIDU1LCAyMTAsIDg5LCAyMzcsIDcwLCA1NiwgMjEwLCA4OSwgMjM3LCA2OSwgMjQyLCA4MiwgCi0gICAgMjEwLCA4OSwgMjQxLCAxMSwgNTUsIDIxMCwgODksIDI0MSwgMTEsIDU2LCAyMTAsIDg5LCAyMTUsIDEwOSwgMjEwLCA4OSwgCi0gICAgMjQwLCA0MSwgMjQzLCA4NSwgMjEwLCA4OSwgMjE3LCAyNSwgMjEwLCA4OSwgMjE1LCAxMzcsIDIxMCwgODksIDEyMCwgODAsIAotICAgIDE4NywgNTUsIDIxMCwgODksIDEyMCwgODAsIDE4NywgNTYsIDIxMCwgODksIDEyNiwgMTg3LCA1NSwgMjEwLCA4OSwgMTI2LCAKLSAgICAxODcsIDU2LCAyMTAsIDg5LCAyMjAsIDg5LCAyMjcsIDExNSwgNTUsIDIxMCwgODksIDIyMCwgODksIDIyNywgMTE1LCA1NiwgCi0gICAgMjEwLCA4OSwgMjIzLCAxOTQsIDIxMCwgODksIDI0OCwgMjIyLCAyMTAsIDg5LCAxLCAyMTIsIDQsIDIwMiwgNzgsIDIxMCwgCi0gICAgODksIDEsIDIxMiwgNCwgMjI5LCAxMzMsIDIxMCwgODksIDEsIDIxMiwgNCwgMjQwLCA2MCwgMTAsIDEsIDI0OCwgMTM5LCAzLCAKLSAgICAxMjYsIDE4NywgMjM2LCA1NSwgNTYsIDEwLCAxLCAyNDgsIDEzOSwgMywgNzAsIDI0OCwgMTI2LCAyNSwgMTI2LCAxODcsIAotICAgIDU1LCAxMCwgMSwgMjQ4LCAxMzksIDMsIDEyNiwgMTg3LCAyMTgsIDU5LCAxNzcsIDU2LCAxMCwgMSwgMjQ4LCAxMzksIDMsIAotICAgIDEyNiwgMTg3LCAyMTgsIDU5LCAxNzcsIDI0OCwgMTI2LCAyNSwgMTIwLCAxODcsIDU1LCAxMCwgMSwgMjQ4LCAxMzksIDMsIAotICAgIDEyMCwgMTg3LCAyNDgsIDEyNiwgMjUsIDcwLCA1NSwgMTAsIDEsIDI0OCwgMTM5LCAzLCAyMzAsIDIzOSwgNSwgMjA2LCAKLSAgICAxNjUsIDU2LCAxMCwgMSwgMjQ4LCAxMzksIDMsIDUsIDIwNiwgMTY0LCAxMCwgMSwgMTUxLCAzLCAxMjAsIDE4NywgNTUsIAotICAgIDEwLCAxLCAxNTEsIDMsIDEyNiwgMTg3LCAyMTgsIDU5LCAxNzcsIDU2LCAxMCwgMSwgMjQ0LCAxODUsIDMsIDEyMCwgMTg3LCAKLSAgICAyMDUsIDI0NCwgMjQ4LCAxMjYsIDI1LCA1LCAyMDksIDI1MSwgMTAsIDEsIDI0NCwgMTg1LCAzLCAyMzAsIDIzOSwgNSwgCi0gICAgMjA2LCAxNjUsIDU2LCAxMCwgMSwgMjE2LCAxMjMsIDMsIDk1LCAxMCwgMSwgMjE0LCAxNjIsIDMsIDIzOSwgMTQ3LCAxODcsIAotICAgIDU1LCAxMCwgMSwgMjUxLCA2MCwgMywgMTIwLCAxODcsIDU1LCAxMCwgMSwgMjUxLCA2MCwgMywgMTI2LCAxODcsIDIxOCwgCi0gICAgNTksIDE4MywgNTUsIDEwLCAxLCAyNTEsIDYwLCAzLCAxMjAsIDE4NywgMjA1LCAyNDQsIDU1LCAxMCwgMSwgMjQwLCA0OCwgCi0gICAgMywgMTIwLCAxODcsIDU2LCAxMCwgMSwgMjQwLCA0OCwgMywgMTI2LCAxODcsIDIxOCwgNTksIDE3NywgNTYsIDEwLCAxLCAKLSAgICAyMjksIDE5MCwgMywgNzAsIDU1LCAxMCwgMSwgMjI5LCAxOTAsIDMsIDEyNiwgMTg3LCA1NSwgMTAsIDEsIDIyOSwgMTkwLCAKLSAgICAzLCAxMjYsIDE4NywgMjE4LCA1OSwgMTc3LCA1NiwgMTAsIDEsIDgzLCAzLCA3MCwgNTUsIDEwLCAxLCA4MywgMywgNzAsIAotICAgIDU2LCAxMCwgMSwgMjIxLCAxNzksIDMsIDEyMCwgMTg3LCA1NiwgMTAsIDEsIDIyMSwgMTc5LCAzLCA1LCAyMDksIDI1MSwgCi0gICAgMTAsIDEsIDIyMSwgMTc5LCAzLCA1LCAyMDYsIDE2NCwgMTAsIDEsIDIyOCwgMjksIDMsIDE0MiwgMTAsIDEsIDIxNiwgMTIzLCAKLSAgICAzLCAxMjAsIDE4NywgMjA1LCAyNDQsIDU1LCAxMCwgMSwgMjE2LCAxMjMsIDMsIDIzNywgMTI4LCA1NSwgMTAsIDEsIDIxNCwgCi0gICAgMTYyLCAzLCAxMjAsIDE4NywgMjA1LCAyNDQsIDU1LCAxMCwgMSwgMTUxLCAzLCA1LCAxMCwgMSwgMjA5LCAyNTIsIDU2LCAKLSAgICAxMCwgMSwgMTUxLCAzLCA1LCAxMCwgMSwgMjA5LCAyNTIsIDI1LCAxMjAsIDI0MywgODMsIDEwLCAxLCAyMTQsIDE2MiwgMywgCi0gICAgNSwgMTAsIDEsIDIwOSwgMjUyLCAyNSwgMTIwLCAyNDMsIDgzLCAxMCwgMSwgMjE2LCAxMjMsIDMsIDUsIDEwLCAxLCAyMDksIAotICAgIDI1MiwgMjUsIDEyMCwgMjQzLCA4MywgMTAsIDEsIDE1MSwgMywgNSwgMTAsIDEsIDIwOSwgMjUyLCA1NSwgMTAsIDEsIDEzNywgCi0gICAgMywgMjQwLCAyMDIsIDI1MCwgMTQwLCAxNywgMTIwLCA1NSwgMTAsIDEsIDEzNywgMywgMjQwLCAyMDIsIDI1MCwgMTQwLCAKLSAgICAxNywgMTI2LCA1NSwgMTAsIDEsIDI0MCwgNzUsIDg5LCAzLCAyNDAsIDIwMiwgMjUwLCAxNDAsIDE3LCAxMjAsIDU1LCAxMCwgCi0gICAgMSwgMjQwLCA3NSwgODksIDMsIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDEyNiwgNTUsIDEwLCAxLCAyNDAsIDc1LCA4OSwgCi0gICAgMywgMjQwLCAyMDIsIDI1MCwgMTQwLCAxNywgMjM5LCAxNDcsIDU2LCAxMCwgMSwgMjA0LCA3MSwgMywgMjQwLCAyMDIsIAotICAgIDI1MCwgMTQwLCAxNywgMTIwLCA1NSwgMTAsIDEsIDIwNCwgNzEsIDMsIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDEyNiwgCi0gICAgNTUsIDEwLCAxLCA4OSwgMjQ4LCAyMjQsIDMsIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDEyMCwgNTUsIDEwLCAxLCA4OSwgCi0gICAgMjQ4LCAyMjQsIDMsIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDEyNiwgNTUsIDEwLCAxLCAxNTEsIDMsIDI0MCwgMjAyLCAKLSAgICAyNTAsIDE0MCwgMTcsIDIzOSwgMTQ3LCA1NiwgMTAsIDEsIDIxNCwgMTYyLCAzLCAyNDAsIDIwMiwgMjUwLCAxNDAsIDE3LCAKLSAgICAyMzksIDE0NywgNTUsIDEwLCAxLCAyMTQsIDE2MiwgMywgMjMwLCAyMzksIDIwNiwgMTY0LCAxMCwgMSwgMjMwLCAyMywgMywgCi0gICAgMTIwLCAxODcsIDU1LCAyMDksIDEwNSwgMSwgMjM3LCAxNTcsIDIwOSwgMTA1LCAxLCAyMTMsIDQ5LCAyMDksIDEwNSwgMSwgCi0gICAgMjIxLCAxNzcsIDIwOSwgMTA1LCAxLCAyMTYsIDIxNiwgMjA5LCAxMDUsIDEsIDI0OSwgMzAsIDIwOSwgMTA1LCAxLCAyMjcsIAotICAgIDE1OCwgMjA5LCAxMDUsIDEsIDIzMCwgMzcsIDIwOSwgMTA1LCAxLCAyNTEsIDE5LCAyMDksIDEwNSwgMSwgMjA2LCA4NCwgCi0gICAgMjA5LCAxMDUsIDEsIDIyNSwgNCwgMjA5LCAxMDUsIDEsIDI0MCwgMTA2LCAyMDksIDEwNSwgMSwgMjQzLCAyNTUsIDIwOSwgCi0gICAgMTA1LCAxLCAyMDksIDEwNywgMjA5LCAxMDUsIDEsIDIyOCwgMTA5LCAyMDksIDEwNSwgMSwgMjM5LCA0LCAyMDksIDEwNSwgCi0gICAgMSwgMjM4LCA0MiwgMjA5LCAxMDUsIDEsIDIxNCwgMTYwLCAyMDksIDEwNSwgMSwgMjQ0LCAxMzYsIDIwOSwgMTA1LCAxLCAKLSAgICAyMDIsIDk4LCAyMDksIDEwNSwgMSwgMjA5LCAyMDIsIDIwOSwgMTA1LCAxLCAyMDMsIDExMCwgMjA5LCAxMDUsIDEsIDIxOSwgCi0gICAgNDcsIDIwOSwgMTA1LCAxLCAyMzAsIDE2NiwgMjA5LCAxMDUsIDEsIDI0NiwgMTczLCAyMDksIDEwNSwgMSwgMjA3LCAyNDAsIAotICAgIDIwOSwgMTA1LCAxLCAyMzcsIDExLCAyMDksIDEwNSwgMSwgMjI5LCAxNDMsIDIwOSwgMTA1LCAxLCAyMDksIDEwNiwgMjA5LCAKLSAgICAxMDUsIDEsIDIwMiwgMTE0LCAyMDksIDEwNSwgMSwgMjEzLCAzOCwgMjA5LCAxMDUsIDEsIDIxNSwgMzIsIDIwOSwgMTA1LCAKLSAgICAxLCAyNDQsIDIxMCwgMjA5LCAxMDUsIDEsIDEzNSwgMjA5LCAxMDUsIDEsIDIwMiwgMTcsIDIwOSwgMTA1LCAxLCAyNTEsIAotICAgIDU2LCAyMDksIDEwNSwgMSwgMjM4LCAxMTMsIDIwOSwgMTA1LCAxLCAyMTcsIDEyMywgMjA5LCAxMDUsIDEsIDIwNCwgMTA5LCAKLSAgICAyMDksIDEwNSwgMjUxLCAxNDgsIDIwOSwgMTA1LCAyNTEsIDI0NiwgMjA5LCAxMDUsIDIzNSwgMTY1LCAyMDksIDEwNSwgCi0gICAgMjQxLCAxNjAsIDIwOSwgMTA1LCAyMDcsIDMyLCAyMDksIDEwNSwgMjIwLCAxNywgMjA5LCAxMDUsIDI0MSwgMTcwLCAyMDksIAotICAgIDEwNSwgMjQwLCAxOTMsIDIwOSwgMTA1LCAyMjAsIDg4LCAyMDksIDEwNSwgMjIwLCA5NiwgMjA5LCAxMDUsIDIxMCwgMjIyLCAKLSAgICAyMDksIDEwNSwgMSwgMjIzLCAxMDYsIDIyMSwgMjU1LCAxNywgMjAyLCA4NCwgMjIxLCAyNTUsIDE3LCAxMDUsIDIyMSwgCi0gICAgMjU1LCAxNywgMTA4LCAyMjEsIDI1NSwgMTcsIDE0NywgMjIxLCAyNTUsIDE3LCAxNDksIDIyMSwgMjU1LCAxNywgMTcwLCAKLSAgICAyMjEsIDI1NSwgMTcsIDE5NSwgMjIxLCAyNTUsIDE3LCAyMTMsIDExMSwgMjIxLCAyNTUsIDE3LCAxOTksIDIyMSwgMjU1LCAKLSAgICAxNywgMjIyLCA2MywgMjIxLCAyNTUsIDEsIDYzLCAyMjEsIDI1NSwgMSwgMjQxLCAxNjEsIDIyMSwgMjU1LCAxLCA3NSwgCi0gICAgMjIxLCAyNTUsIDEsIDc0LCAyMjEsIDI1NSwgMSwgNjgsIDIyMSwgMjU1LCAxLCAyMjAsIDE4LCAyMjEsIDI1NSwgMSwgNzgsIAotICAgIDIyMSwgMjU1LCAxLCAyNDQsIDE5OSwgMjIxLCAyNTUsIDEsIDIyMywgMTYzLCAyMjEsIDI1NSwgMSwgMjQ5LCAzMiwgMjIxLCAKLSAgICAyNTUsIDEsIDE4NSwgMjIxLCAyNTUsIDEsIDIxMCwgMjIsIDIyMSwgMjU1LCAxLCAyMzAsIDE4MSwgMjIxLCAyNTUsIDEsIAotICAgIDI0NiwgMTk5LCAyMjEsIDI1NSwgMSwgMjQ0LCAyMTIsIDIyMSwgMjU1LCAxLCAyMTYsIDIyMCwgMjIxLCAyNTUsIDEsIDIxNSwgCi0gICAgMTg1LCAyMjEsIDI1NSwgMSwgMjE1LCAzNiwgMjIxLCAyNTUsIDEsIDIzOCwgMjA3LCAyMjEsIDI1NSwgMSwgMjQwLCAxMDgsIAotICAgIDIyMSwgMjU1LCAxLCAxNzMsIDIyMSwgMjU1LCAxLCAyMjgsIDExMywgMjIxLCAyNTUsIDEsIDIyMywgMTExLCAyMDMsIDI1MiwgCi0gICAgMjIxLCAyNTUsIDEsIDE5MiwgMjIxLCAyNTUsIDEsIDIyMSwgMTEsIDIyMSwgMjU1LCAxLCAyMDEsIDIwMSwgMjIxLCAyNTUsIAotICAgIDEsIDE1MiwgMjIxLCAyNTUsIDEsIDIwNCwgMTExLCAyMjEsIDI1NSwgMSwgMTk4LCAyMjEsIDI1NSwgMSwgMjIxLCAxMiwgCi0gICAgMjAzLCAyNTIsIDIyMSwgMjU1LCAxLCAyMzAsIDkzLCAyMzAsIDE4MSwgMjIxLCAyNTUsIDEsIDIzMCwgOTMsIDI0NiwgMTk5LCAKLSAgICAyMjEsIDI1NSwgMSwgMjMwLCA5MywgMjE2LCAyMjAsIDIyMSwgMjU1LCAzOSwgMjEyLCAyMjgsIDEzOCwgMjA4LCAxNjEsIAotICAgIDIyMSwgMjU1LCAzOSwgMjEyLCAyMjgsIDEyNCwgMjA4LCAxNjEsIDIyMSwgMjU1LCAzOSwgMjEyLCAyMjgsIDIxNSwgMjQ1LCAKLSAgICAyMDgsIDE2MSwgMjIxLCAyNTUsIDM5LCAxNjMsIDI0NCwgMTksIDIwOCwgMTYxLCAyMjEsIDI1NSwgMzksIDE2MywgMTM4LCAKLSAgICAyMDgsIDE2MSwgMjIxLCAyNTUsIDM5LCAxNjMsIDEyNCwgMjA4LCAxNjEsIDIyMSwgMjU1LCAzOSwgMTYzLCAyMTUsIDI0NSwgCi0gICAgMjA4LCAxNjEsIDIyMSwgMjU1LCAzOSwgMjIzLCA3MSwgODIsIDIyMSwgMjU1LCAzOSwgNTIsIDcwLCA1NSwgMjIxLCAyNTUsIAotICAgIDEzOCwgMTQzLCAyNTAsIDE2MCwgMjIxLCAyNTUsIDEyNCwgMTQzLCAyNTAsIDE2MCwgMjIxLCAyNTUsIDE2LCAyMjAsIDE5LCAKLSAgICAyNDQsIDMzLCAyMjEsIDI1NSwgMTYsIDIzOCwgMjA2LCAyMjEsIDI1NSwgMjQ1LCAyMzMsIDIyMSwgMjU1LCAyNDAsIDIxMiwgCi0gICAgODIsIDIyMSwgMjU1LCAyMjgsIDg0LCAyMTQsIDI1MiwgMSwgMjUxLCAzNywgMjE0LCAyNTIsIDEsIDI0OCwgNTEsIDIxNCwgCi0gICAgMjUyLCAxLCAyMzgsIDI0MCwgMjE0LCAyNTIsIDEsIDI0NCwgMTgzLCAyMTQsIDI1MiwgMSwgMjMwLCAxOTIsIDIxNCwgMjUyLCAKLSAgICAxLCAyNDksIDMwLCAyMTQsIDI1MiwgMSwgMjAyLCA4NywgMjE0LCAyNTIsIDEsIDIzMCwgMjAxLCAyMTQsIDI1MiwgMSwgCi0gICAgMjA4LCAyMDAsIDIxNCwgMjUyLCAxLCAyMDIsIDE4MiwgMjE0LCAyNTIsIDEsIDIzMCwgMzgsIDIxNCwgMjUyLCAxLCAyMjgsIAotICAgIDEwNiwgMjE0LCAyNTIsIDEsIDIyNCwgMTEyLCAyMTQsIDI1MiwgMSwgMjIxLCA0MCwgMjE0LCAyNTIsIDEsIDIxMiwgMTIxLCAKLSAgICAyMTQsIDI1MiwgMSwgMjMxLCA0OSwgMjE0LCAyNTIsIDEsIDI0MCwgMjYsIDIxNCwgMjUyLCAxLCAyMDgsIDE4LCAyMTQsIAotICAgIDI1MiwgMSwgMjE3LCA0NCwgMjE0LCAyNTIsIDEsIDIxNSwgMjQ2LCAyMTQsIDI1MiwgMSwgMjEzLCA2NiwgMjE0LCAyNTIsIAotICAgIDEsIDIxMCwgMTcsIDIxNCwgMjUyLCAxMzEsIDIzMSwgNDksIDIxNCwgMjUyLCAxMzEsIDIzMSwgNDgsIDIxNCwgMjUyLCAKLSAgICAxMzEsIDIyMCwgODQsIDIxNCwgMjUyLCAxMzEsIDI0NCwgMTk3LCAyMTQsIDI1MiwgNjUsIDEsIDI0MSwgNDIsIDIwMiwgCi0gICAgMTgyLCAyMTQsIDI1MiwgMTMxLCAyNDEsIDQyLCAyMDIsIDE4MiwgMjE0LCAyNTIsIDIyLCAyLCAxNjMsIDc0LCAyMTQsIAotICAgIDI1MiwgMjIsIDIsIDc0LCAyMTQsIDI1MiwgMjIsIDIsIDIxOSwgMTk3LCAyNTIsIDI1LCAyMTQsIDI1MiwgMjIsIDIsIDE2MywgCi0gICAgMjUyLCAyNSwgMjE0LCAyNTIsIDIyLCAyLCAyNTIsIDI1LCAyMTQsIDI1MiwgMjIsIDIsIDIxOSwgMTk3LCA2MywgMjE0LCAKLSAgICAyNTIsIDIyLCAyLCAxNjMsIDYzLCAyMTQsIDI1MiwgMjIsIDIsIDYzLCAyMTQsIDI1MiwgNjUsIDEsIDIxMiwgMjI4LCA2MywgCi0gICAgMjE0LCAyNTIsIDIyLCAyLCAyMTIsIDIyOCwgNjMsIDIxNCwgMjUyLCAyMiwgMiwgMTYzLCA2OCwgMjE0LCAyNTIsIDIyLCAyLCAKLSAgICA2OCwgMjE0LCAyNTIsIDY1LCAxLCA3NSwgMjE0LCAyNTIsIDIyLCAyLCAxNjMsIDc1LCAyMTQsIDI1MiwgMjIsIDIsIDc1LCAKLSAgICAyMTQsIDI1MiwgMjIsIDIsIDc4LCAyMTQsIDI1MiwgMjIsIDIsIDIxMCwgMjIyLCAyMTQsIDI1MiwgMTMxLCAyMjIsIDIyMywgCi0gICAgMjE0LCAyNTIsIDIxNywgMTc5LCAyMjIsIDIyMywgMjE0LCAyNTIsIDIxNywgMTc5LCAyNTEsIDgzLCAyMTQsIDI1MiwgMjE3LCAKLSAgICAxNzksIDI1MCwgMjIyLCAyMTQsIDI1MiwgMjE3LCAxNzksIDI0OCwgMjAyLCAyMTQsIDI1MiwgMjE3LCAxNzksIDI1MCwgNDQsIAotICAgIDIxNCwgMjUyLCAyMTcsIDE3OSwgMjEyLCAyNDMsIDIxNCwgMjUyLCAyNTEsIDE0NiwgODIsIDIxNCwgMjUyLCAyMTcsIDE3OSwgCi0gICAgMjI0LCAyNTAsIDIxNywgODAsIDIxNCwgMjUyLCAyMTcsIDE3OSwgMjAyLCAyNSwgMjE0LCAyNTIsIDIxNywgMTc5LCAyMTcsIAotICAgIDgwLCAyMTQsIDI1MiwgMjE3LCAxNzksIDIwMiwgMTEzLCAyMTQsIDI1MiwgMjE3LCAxNzksIDIwNywgMTcwLCAyMTQsIDI1MiwgCi0gICAgMjE3LCAxNzksIDI1MCwgMTExLCAyMTQsIDI1MiwgMjE3LCAxNzksIDIxMiwgOCwgMjI1LCA3NywgMjE0LCAyNTIsIDIxNywgCi0gICAgMTc5LCAyNTAsIDIwNiwgMjI1LCAxMTgsIDEsIDIzNywgMTM0LCAyMjUsIDExOCwgMSwgMjUxLCAyMzIsIDIyNSwgMTE4LCAxLCAKLSAgICAyNTEsIDgxLCAyMjUsIDExOCwgMSwgMjUxLCAxMjIsIDIyNSwgMTE4LCAxLCAyNTEsIDczLCAyMjUsIDExOCwgMSwgMjA2LCAKLSAgICAxODQsIDIyNSwgMTE4LCAxLCAyNTAsIDEsIDIyNSwgMTE4LCAxLCAyMzAsIDIwMSwgMjI1LCAxMTgsIDEsIDI1MCwgNDEsIAotICAgIDIyNSwgMTE4LCAxLCAyNTEsIDQyLCAyMjUsIDExOCwgMSwgMjUxLCA0NywgMjI1LCAxMTgsIDEsIDI1MSwgMzksIDIyNSwgCi0gICAgMTE4LCAxLCAyNTAsIDI0NywgMjI1LCAxMTgsIDEsIDI1MCwgMjMxLCAyMjUsIDExOCwgMSwgMjUwLCA4MSwgMjI1LCAxMTgsIAotICAgIDEsIDIzMSwgNDksIDIyNSwgMTE4LCAxLCAyNTAsIDE3NSwgMjI1LCAxMTgsIDEsIDI1MCwgNTEsIDIyNSwgMTE4LCAxLCAKLSAgICAyNTAsIDE0OCwgMjI1LCAxMTgsIDEsIDI1MCwgMTQ0LCAyMjUsIDExOCwgMSwgMjUwLCA3NSwgMjI1LCAxMTgsIDEsIDI1MCwgCi0gICAgNDksIDIyNSwgMTE4LCAxLCAyNDIsIDE4LCAyMjUsIDExOCwgMSwgMjMwLCAzMCwgMjI1LCAxMTgsIDEsIDI1MSwgNTksIAotICAgIDIyNSwgMTE4LCAyNTEsIDg3LCA4MiwgMjI1LCAxMTgsIDIwNSwgMTg3LCA4MiwgMjI1LCAxMTgsIDIzOCwgMTc5LCA4MiwgCi0gICAgMjI1LCAxMTgsIDIxNywgMTc4LCAxMCwgMSwgMjQ4LCAxMzksIDMsIDUsIDIwNiwgMTY1LCA1NiwgMTAsIDEsIDI0OCwgMTM5LCAKLSAgICAzLCAyMzcsIDEyOCwgNTUsIDEwLCAxLCAxODQsIDMsIDEyMCwgMTg3LCA1NSwgMTAsIDEsIDIwOSwgMjUyLCAzLCAxMjAsIAotICAgIDE4NywgNTUsIDEwLCAxLCAyNDAsIDQ4LCAzLCA3MCwgMjQ4LCAxMjYsIDI1LCAxMjYsIDE4NywgNTUsIDEwLCAxLCAyMTcsIAotICAgIDEyMCwgMywgNzAsIDU2LCAxMCwgMSwgMjI4LCAyOSwgMywgNTIsIDE0MiwgMTAsIDEsIDgzLCAzLCAxMjYsIDE4NywgNTUsIAotICAgIDEwLCAxLCA4OSwgMywgMTIwLCAxODcsIDI0OCwgMTI2LCAyNSwgMjM3LCAxMjgsIDU1LCAxMCwgMSwgODksIDMsIDEyMCwgCi0gICAgMTg3LCAyNDgsIDEyNiwgMjUsIDcwLCA1NSwgMTAsIDEsIDIxNiwgMTIzLCAzLCAyMjcsIDE0LCAxMCwgMSwgMjA0LCA3MSwgCi0gICAgMywgNzAsIDIwNCwgNCwgMTAsIDEsIDIxNSwgMjE1LCAyMDMsIDQ3LCAxMCwgMSwgMTI0LCAyNTEsIDMwLCAxMCwgMSwgMjQ0LCAKLSAgICAxODUsIDMsIDEyNiwgMTg3LCA1NiwgMTAsIDEsIDIxNSwgMjksIDMsIDEyNiwgMTg3LCA1NiwgMTAsIDEsIDIzOCwgMjUyLCAKLSAgICAzLCAyMzAsIDIzOSwgOTUsIDEwLCAxLCAyMTEsIDUzLCAyMDQsIDcwLCAxMCwgMSwgMjAyLCAxMDgsIDMsIDIzMCwgMjM5LCAKLSAgICAyMDYsIDE2NSwgNTUsIDEwLCAxLCAyNTEsIDYwLCAzLCAxMjYsIDE4NywgNTYsIDEwLCAxLCAyMzAsIDIzLCAzLCA3MCwgNTYsIAotICAgIDEwLCAyMDcsIDE3NCwgMjQ0LCAxNzMsIDU2LCAxMCwgMjQ1LCA5MywgMjQwLCA3MSwgMTAsIDI0NSwgOTMsIDI0NCwgMTcyLCAKLSAgICAxMCwgMjQ1LCA5MywgMjI5LCAyMjksIDEwLCAyNDUsIDkzLCAyNDAsIDY5LCAxMCwgMjQ1LCA5MywgMjQ0LCAxNzAsIDEwLCAKLSAgICAyNDUsIDkzLCAyMjksIDIyNywgMTAsIDE0MywgMTE4LCA3MCwgNTUsIDEwLCAxNDMsIDEyMCwgMTg3LCA1NSwgMTAsIDE0MywgCi0gICAgMjI3LCAxNSwgNTUsIDEwLCAxNDMsIDExOCwgNzAsIDU2LCAxMCwgMTQzLCAxMjAsIDE4NywgNTYsIDEwLCAxNDMsIDIyNywgCi0gICAgMTUsIDU2LCAxMCwgMTcxLCAyNDAsIDY5LCAxMCwgMTcxLCAyNDQsIDE3MCwgMTAsIDE3MSwgMjI5LCAyMjcsIDEwLCA1LCAKLSAgICAxMzgsIDIwNCwgNzAsIDEwLCAyNDAsIDcyLCAzLCAyMTUsIDI1MiwgMTAsIDI0MCwgNzIsIDMsIDcwLCA1NSwgMTAsIDIyOSwgCi0gICAgMjMwLCAzLCA3MCwgNTYsIDEwLCA0OSwgMjUwLCA5NSwgNTUsIDEwLCA1MCwgMjUwLCA5NSwgNTUsIDEwLCA0OSwgMjUwLCAKLSAgICA5NSwgNTYsIDEwLCA1MCwgMjUwLCA5NSwgNTYsIDEwLCA1MiwgNTAsIDI1MCwgOTUsIDU1LCAxMCwgNTIsIDUwLCAyNTAsIAotICAgIDk1LCA4NywgMywgMjQzLCA4NSwgMTAsIDUwLCAyNTAsIDk1LCA4NywgMywgMjQzLCA4NSwgMTAsIDI0NCwgMTczLCAzLCAKLSAgICAyNDMsIDg1LCAxMCwgMTMxLCAyMTIsIDE1NCwgMjIxLCAxNzksIDIzOCwgODUsIDkyLCAyLCAyMzAsIDIzOSwgMjQ3LCA1MiwgCi0gICAgOTIsIDIsIDI0NywgNTIsIDkyLCAyLCAyNTAsIDE4MCwgOTIsIDIsIDIwNSwgMTk5LCA5MiwgMSwgMjEyLCAyMjgsIDYzLCAKLSAgICA5MiwgMSwgNjMsIDkyLCAxLCAyNTIsIDI1LCA5MiwgMSwgNzUsIDkyLCAxLCAyMzEsIDgzLCA5MiwgMSwgNjgsIDkyLCAxLCAKLSAgICAyMDYsIDE3OCwgOTIsIDEsIDEyNSwgMTQ2LCA5MiwgMSwgMTI1LCAxNTksIDkyLCAxLCAyNDcsIDU1LCA3NCwgOTIsIDEsIAotICAgIDIxMiwgMjI4LCA3NCwgOTIsIDEsIDc0LCA5MiwgMSwgMjUxLCA2NCwgOTIsIDEsIDI0NywgNTUsIDc4LCA5MiwgMSwgMjEyLCAKLSAgICAyMjgsIDc4LCA5MiwgMSwgNzgsIDkyLCAxLCAyNTAsIDM0LCA5MiwgMSwgMTczLCA5MiwgMSwgMjI5LCAxNDQsIDkyLCAxLCAKLSAgICAyMzksIDgsIDkyLCAxLCAyMzgsIDExOSwgOTIsIDEsIDIyMiwgMjAzLCA5MiwgMSwgMjQ3LCA5MiwgOTIsIDEsIDI0NiwgCi0gICAgMTk5LCA5MiwgMSwgMjMwLCAxODEsIDkyLCAxLCAyMzAsIDE0OSwgOTIsIDEsIDIyMSwgMTEsIDkyLCAxLCAyMDcsIDI0MSwgCi0gICAgOTIsIDEsIDIwNywgMjI5LCA5MiwgMSwgMjQ0LCAxMjAsIDkyLCAxLCAyNDQsIDEwNCwgOTIsIDEsIDIyMSwgMjI3LCA5MiwgCi0gICAgMSwgMjEwLCAyMiwgOTIsIDEsIDIwOSwgMTA4LCA5MiwgMSwgMjQ0LCAyMTIsIDkyLCAxLCAyNDQsIDEsIDkyLCAxLCAyMDEsIAotICAgIDIwMSwgOTIsIDEsIDIyMSwgMjA5LCA5MiwgMSwgMTg1LCA5MiwgMSwgMjE4LCAyMDgsIDkyLCAxLCAyNDksIDMyLCA5MiwgMSwgCi0gICAgMjQ4LCA5OCwgOTIsIDEsIDE5MiwgOTIsIDEsIDE5OCwgOTIsIDEsIDIxNiwgMjIwLCA5MiwgMSwgMjE1LCAxODUsIDkyLCAxLCAKLSAgICAyMjgsIDExMywgOTIsIDEsIDIyNywgNzcsIDkyLCAxLCAyMjcsIDY4LCA5MiwgMSwgMjA2LCA4NiwgOTIsIDEsIDIxMywgOTAsIAotICAgIDkyLCAxLCAyMTEsIDE2NCwgOTIsIDEsIDIxNSwgMzYsIDkyLCAxLCAxNTIsIDkyLCAyMiwgMiwgMjIwLCA3MywgOTIsIDIyLCAKLSAgICAyLCAyMjAsIDE2LCA5MiwgMiwgMjIxLCA1MSwgOTIsIDIsIDI1MCwgMTcsIDkyLCAyMiwgMiwgMjUyLCAyNSwgOTIsIDIyLCAKLSAgICAyLCA3NSwgOTIsIDIyLCAyLCAyMzEsIDgzLCA5MiwgMjIsIDIsIDY4LCA5MiwgMjIsIDIsIDIwNiwgMTc4LCA5MiwgMjIsIDIsIAotICAgIDEyNSwgMTQ2LCA5MiwgMjIsIDIsIDEyNSwgMjE1LCAxODYsIDkyLCAyMiwgMiwgMjQ3LCA1NSwgNzQsIDkyLCAyMiwgMiwgCi0gICAgMjEyLCAyMjgsIDc0LCA5MiwgMjIsIDIsIDc0LCA5MiwgMjIsIDIsIDI1MSwgNjQsIDkyLCAyMiwgMiwgMjQ3LCA1NSwgNzgsIAotICAgIDkyLCAyMiwgMiwgMjEyLCAyMjgsIDc4LCA5MiwgMjIsIDIsIDc4LCA5MiwgMjIsIDIsIDI1MCwgMzQsIDkyLCAyLCAyMDUsIAotICAgIDIwNCwgOTIsIDIyLCAyLCAyMTcsIDIyOSwgNzQsIDkyLCAyMiwgMiwgMjUwLCAxMywgOTIsIDIyMCwgMzksIDkyLCAyMTEsIAotICAgIDQyLCAyLCAyMDcsIDI2LCA5MiwgMjExLCA0MiwgMiwgMjUwLCAxODIsIDkyLCAyMzcsIDI1NCwgMjUxLCAxMzgsIDkyLCAKLSAgICAyNTEsIDEyNiwgMjUxLCAxMzgsIDkyLCAyMiwgMiwgMjQ3LCA1NSwgMTYzLCA3NCwgOTIsIDIyLCAyLCAyMDcsIDI0LCA5MiwgCi0gICAgMjIsIDIsIDIwNiwgMTc3LCA5MiwgMSwgMjE3LCAxMjYsIDkyLCAxLCAyMjksIDEyNSwgOTIsIDEsIDIzOCwgOTQsIDkyLCAxLCAKLSAgICAyMDIsIDExNiwgOTIsIDEsIDI0NCwgMTA5LCA5MiwgMSwgMjE2LCA2MSwgOTIsIDEsIDI0MCwgMTA4LCA5MiwgMSwgMjAyLCAKLSAgICAxNjgsIDkyLCAxLCAxMjUsIDIxNSwgMTg2LCA5MiwgMSwgMTI1LCAyMjcsIDc4LCA5MiwgMjIsIDIsIDEyNSwgMTU5LCA5MiwgCi0gICAgMjIsIDIsIDEyNSwgMjI3LCA3OCwgOTIsIDI0NCwgMTY2LCA5MiwgNTIsIDI0NCwgMTY2LCA5MiwgMTcsIDIwMiwgODQsIDkyLCAKLSAgICAxNywgMTA1LCA5MiwgMTcsIDEwOCwgOTIsIDE3LCAxNDcsIDkyLCAxNywgMTQ5LCA5MiwgMTcsIDE3MCwgOTIsIDE3LCAxOTUsIAotICAgIDkyLCAxNywgMjEzLCAxMTEsIDkyLCAxNywgMTk5LCA5MiwgMTcsIDIyMiwgNjMsIDkyLCAyNTEsIDE0NiwgNTQsIDkyLCAyLCAKLSAgICAxMzgsIDIxMSwgMjI3LCAyNDMsIDg1LCA5MiwgMSwgMjQ3LCA1NSwgNjMsIDkyLCAxLCAyMjAsIDczLCA5MiwgMSwgMjIwLCAKLSAgICAxNiwgOTIsIDEsIDI1MCwgMTMsIDkyLCAxLCAyMDcsIDI0LCA5MiwgMSwgMjA2LCAxNzcsIDkyLCAxLCAyMjUsIDgyLCAyNDQsIAotICAgIDEyMCwgOTIsIDEsIDIwMiwgODAsIDkyLCAxLCA3OSwgMTk4LCA5MiwgMSwgMjM4LCAxNTUsIDkyLCAxLCAyMzAsIDEyOSwgCi0gICAgOTIsIDEsIDIzOCwgNDUsIDIxMSwgNjEsIDkyLCAxLCAyNDQsIDExMCwgOTIsIDEsIDI0OCwgMTk4LCAxNzksIDI1MCwgMjA5LCAKLSAgICAxNzksIDIsIDI0NywgNTIsIDE3OSwgMiwgMjUwLCAxODAsIDE3OSwgMiwgMjA1LCAxOTksIDE3OSwgMSwgNjMsIDE3OSwgMSwgCi0gICAgMjUyLCAyNSwgMTc5LCAxLCA3NSwgMTc5LCAxLCAyMzEsIDgzLCAxNzksIDEsIDY4LCAxNzksIDEsIDIwNiwgMTc4LCAxNzksIAotICAgIDEsIDEyNSwgMTQ2LCAxNzksIDEsIDEyNSwgMTU5LCAxNzksIDEsIDc0LCAxNzksIDEsIDI1MSwgNjQsIDE3OSwgMSwgNzgsIAotICAgIDE3OSwgMSwgMjUwLCAzNCwgMTc5LCAxLCAxNzMsIDE3OSwgMSwgMjI5LCAxNDQsIDE3OSwgMSwgMjM5LCA4LCAxNzksIDEsIAotICAgIDIzOCwgMTE5LCAxNzksIDEsIDIyMiwgMjAzLCAxNzksIDEsIDI0NywgOTIsIDE3OSwgMSwgMjQ2LCAxOTksIDE3OSwgMSwgCi0gICAgMjMwLCAxODEsIDE3OSwgMSwgMjMwLCAxNDksIDE3OSwgMSwgMjIxLCAxMSwgMTc5LCAxLCAyMDcsIDI0MSwgMTc5LCAxLCAKLSAgICAyMDcsIDIyOSwgMTc5LCAxLCAyNDQsIDEyMCwgMTc5LCAxLCAyNDQsIDEwNCwgMTc5LCAxLCAyMjEsIDIyNywgMTc5LCAxLCAKLSAgICAyMTAsIDIyLCAxNzksIDEsIDIwOSwgMTA4LCAxNzksIDEsIDI0NCwgMjEyLCAxNzksIDEsIDI0NCwgMSwgMTc5LCAxLCAyMDEsIAotICAgIDIwMSwgMTc5LCAxLCAxODUsIDE3OSwgMSwgMjE4LCAyMDgsIDE3OSwgMSwgMjQ5LCAzMiwgMTc5LCAxLCAyNDgsIDk4LCAKLSAgICAxNzksIDEsIDE5MiwgMTc5LCAxLCAxOTgsIDE3OSwgMSwgMjE2LCAyMjAsIDE3OSwgMSwgMjI4LCAxMTMsIDE3OSwgMSwgCi0gICAgMjEzLCA5MCwgMTc5LCAxLCAyMTEsIDE2NCwgMTc5LCAxLCAyMTUsIDM2LCAxNzksIDEsIDE1MiwgMTc5LCAyLCAyMjEsIDUxLCAKLSAgICAxNzksIDIsIDI1MCwgMTcsIDE3OSwgMjIsIDIsIDI1MiwgMjUsIDE3OSwgMjIsIDIsIDc1LCAxNzksIDIyLCAyLCAyMzEsIAotICAgIDgzLCAxNzksIDIyLCAyLCA2OCwgMTc5LCAyMiwgMiwgMjA2LCAxNzgsIDE3OSwgMjIsIDIsIDEyNSwgMTQ2LCAxNzksIDIyLCAKLSAgICAyLCAxMjUsIDIxNSwgMTg2LCAxNzksIDIyLCAyLCA3NCwgMTc5LCAyMiwgMiwgMjUxLCA2NCwgMTc5LCAyMiwgMiwgNzgsIAotICAgIDE3OSwgMjIsIDIsIDI1MCwgMzQsIDE3OSwgMiwgMjA1LCAyMDQsIDE3OSwgMSwgMjI5LCAxMzUsIDIxMCwgMjIsIDE3OSwgCi0gICAgMjUwLCAzNSwgMjI3LCAxOTYsIDgyLCAxNzksIDEsIDIxNSwgMTg1LCAxNzksIDEsIDIxNiwgNjEsIDE3OSwgMSwgMjAyLCAKLSAgICAxNjgsIDE3OSwgMSwgMTI1LCAyMTUsIDE4NiwgMTc5LCAxLCAxMjUsIDIyNywgNzgsIDE3OSwgMjIsIDIsIDEyNSwgMTU5LCAKLSAgICAxNzksIDIyLCAyLCAxMjUsIDIyNywgNzgsIDE3OSwgMTcsIDIwMiwgODQsIDE3OSwgMTcsIDEwNSwgMTc5LCAxNywgMTA4LCAKLSAgICAxNzksIDE3LCAxNDcsIDE3OSwgMTcsIDE0OSwgMTc5LCAxNywgMTcwLCAxNzksIDE3LCAxOTUsIDE3OSwgMTcsIDIxMywgCi0gICAgMTExLCAxNzksIDE3LCAxOTksIDE3OSwgMTcsIDIyMiwgNjMsIDE3OSwgMSwgMjE2LCAyMjEsIDMsIDEwMSwgMjQzLCAyMjcsIAotICAgIDE3OSwgMSwgMjE2LCAyMjEsIDMsIDIyNiwgMjUxLCAyNDMsIDIyNywgMTc5LCAyMTUsIDEyMCwgODIsIDE3OSwgMjE1LCAKLSAgICAxMjAsIDU0LCAxNzksIDI0NSwgOTIsIDIyMSwgNDMsIDEwNSwgMTc5LCAyNDUsIDkyLCAyMjEsIDQzLCAxMDgsIDE3OSwgCi0gICAgMjQ1LCA5MiwgMjIxLCA0MywgMTQ3LCAxNzksIDI0NSwgOTIsIDIyMSwgNDMsIDE0OSwgMTc5LCAyNDUsIDkyLCAyMjEsIDQzLCAKLSAgICAxMTgsIDIyNywgMTgwLCAyMDksIDk4LCAyMDksIDkzLCAyNDQsIDMxLCAxNzksIDI0NSwgOTIsIDI0NCwgMzIsIDIxMiwgODIsIAotICAgIDE3OSwgMjMwLCAyMDIsIDE3OSwgMjM4LCAyMzEsIDgyLCAyMzcsIDE5OCwgMiwgMjUxLCAxMjEsIDI0OCwgNjYsIDIzNywgCi0gICAgMTk4LCAyLCAyNDgsIDY2LCAyMzcsIDE5OCwgMiwgMjA1LCAxOTksIDIzNywgMTk4LCAxLCA2MywgMjM3LCAxOTgsIDEsIAotICAgIDI1MiwgMjUsIDIzNywgMTk4LCAxLCA3NSwgMjM3LCAxOTgsIDEsIDIzMSwgODMsIDIzNywgMTk4LCAxLCA2OCwgMjM3LCAKLSAgICAxOTgsIDEsIDIwNiwgMTc4LCAyMzcsIDE5OCwgMSwgMjQxLCAxNjEsIDIzNywgMTk4LCAxLCAyNTEsIDY0LCAyMzcsIDE5OCwgCi0gICAgMSwgMjIwLCAxOCwgMjM3LCAxOTgsIDEsIDI1MCwgMzQsIDIzNywgMTk4LCAxLCAxNzMsIDIzNywgMTk4LCAxLCAyMjksIAotICAgIDE0NCwgMjM3LCAxOTgsIDEsIDIzOSwgOCwgMjM3LCAxOTgsIDEsIDIzOCwgMTE5LCAyMzcsIDE5OCwgMSwgMjIyLCAyMDMsIAotICAgIDIzNywgMTk4LCAxLCAyNDcsIDkyLCAyMzcsIDE5OCwgMSwgMjQ2LCAxOTksIDIzNywgMTk4LCAxLCAyMzAsIDE4MSwgMjM3LCAKLSAgICAxOTgsIDEsIDIzMCwgMTQ5LCAyMzcsIDE5OCwgMSwgMjIxLCAxMSwgMjM3LCAxOTgsIDEsIDIwNywgMjQxLCAyMzcsIDE5OCwgCi0gICAgMSwgMjA3LCAyMjksIDIzNywgMTk4LCAxLCAyNDQsIDEyMCwgMjM3LCAxOTgsIDEsIDI0NCwgMTA0LCAyMzcsIDE5OCwgMSwgCi0gICAgMjIxLCAyMjcsIDIzNywgMTk4LCAxLCAyMTAsIDIyLCAyMzcsIDE5OCwgMSwgMjA5LCAxMDgsIDIzNywgMTk4LCAxLCAyNDQsIAotICAgIDIxMiwgMjM3LCAxOTgsIDEsIDI0NCwgMSwgMjM3LCAxOTgsIDEsIDIwMSwgMjAxLCAyMzcsIDE5OCwgMSwgMTg1LCAyMzcsIAotICAgIDE5OCwgMSwgMjE4LCAyMDgsIDIzNywgMTk4LCAxLCAyNDksIDMyLCAyMzcsIDE5OCwgMSwgMjQ4LCA5OCwgMjM3LCAxOTgsIAotICAgIDEsIDE5MiwgMjM3LCAxOTgsIDEsIDE5OCwgMjM3LCAxOTgsIDEsIDIxNiwgMjIwLCAyMzcsIDE5OCwgMSwgMjI4LCAxMTMsIAotICAgIDIzNywgMTk4LCAxLCAyMjcsIDc3LCAyMzcsIDE5OCwgMSwgMjA2LCA4NiwgMjM3LCAxOTgsIDEsIDIxMywgOTAsIDIzNywgCi0gICAgMTk4LCAxLCAyMTUsIDM2LCAyMzcsIDE5OCwgMSwgMTUyLCAyMzcsIDE5OCwgMiwgMjIxLCA1MSwgMjM3LCAxOTgsIDIyLCAyLCAKLSAgICAyNTIsIDI1LCAyMzcsIDE5OCwgMjIsIDIsIDc1LCAyMzcsIDE5OCwgMjIsIDIsIDIzMSwgODMsIDIzNywgMTk4LCAyMiwgMiwgCi0gICAgNjgsIDIzNywgMTk4LCAyMiwgMiwgMjA2LCAxNzgsIDIzNywgMTk4LCAyMiwgMiwgMjQxLCAxNjEsIDIzNywgMTk4LCAyMiwgCi0gICAgMiwgMjUxLCA2NCwgMjM3LCAxOTgsIDIyLCAyLCAyMjAsIDE4LCAyMzcsIDE5OCwgMjIsIDIsIDI1MCwgMzQsIDIzNywgMTk4LCAKLSAgICAyLCAyMDUsIDIwNCwgMjM3LCAxOTgsIDIsIDIwNywgMjgsIDIzNywgMTk4LCAxLCAyMjksIDEyNSwgMjM3LCAxOTgsIDEsIAotICAgIDIzOCwgOTQsIDIzNywgMTk4LCAxLCAyMDIsIDExNiwgMjM3LCAxOTgsIDEsIDIxNSwgMTg1LCAyMzcsIDE5OCwgMSwgMjQwLCAKLSAgICAxMDgsIDIzNywgMTk4LCAxNywgMjAyLCA4NCwgMjM3LCAxOTgsIDE3LCAxMDUsIDIzNywgMTk4LCAxNywgMTA4LCAyMzcsIAotICAgIDE5OCwgMTcsIDE0NywgMjM3LCAxOTgsIDE3LCAxNDksIDIzNywgMTk4LCAxNywgMTcwLCAyMzcsIDE5OCwgMTcsIDE5NSwgCi0gICAgMjM3LCAxOTgsIDE3LCAyMTMsIDExMSwgMjM3LCAxOTgsIDE3LCAxOTksIDIzNywgMTk4LCAxNywgMjIyLCA2MywgMjM3LCAKLSAgICAxOTgsIDIwOCwgMjA4LCAyMzcsIDE5OCwgMjUxLCAxMjAsIDIzNywgMTk4LCAyMzAsIDIyMiwgMjM3LCAxOTgsIDIwNiwgCi0gICAgMjA2LCAyMzcsIDE5OCwgMjQxLCAxMzAsIDIyMCwgMjMsIDIzNywgMTk4LCAyLCAyMDMsIDg1LCAyMzcsIDIxMywgMiwgMjQ3LCAKLSAgICA1MiwgMjM3LCAyMTMsIDIsIDI1MCwgMTgwLCAyMzcsIDIxMywgMiwgMjA1LCAxOTksIDIzNywgMjEzLCAxLCA2MywgMjM3LCAKLSAgICAyMTMsIDEsIDI1MiwgMjUsIDIzNywgMjEzLCAxLCA3NSwgMjM3LCAyMTMsIDEsIDIzMSwgODMsIDIzNywgMjEzLCAxLCA2OCwgCi0gICAgMjM3LCAyMTMsIDEsIDIwNiwgMTc4LCAyMzcsIDIxMywgMSwgMTI1LCAxNDYsIDIzNywgMjEzLCAxLCAxMjUsIDE1OSwgMjM3LCAKLSAgICAyMTMsIDIyLCAyNDcsIDU1LCA3NCwgMjM3LCAyMTMsIDEsIDc0LCAyMzcsIDIxMywgMSwgMjUxLCA2NCwgMjM3LCAyMTMsIAotICAgIDIyLCAyNDcsIDU1LCA3OCwgMjM3LCAyMTMsIDEsIDc4LCAyMzcsIDIxMywgMSwgMjUwLCAzNCwgMjM3LCAyMTMsIDEsIDE3MywgCi0gICAgMjM3LCAyMTMsIDEsIDIyOSwgMTQ0LCAyMzcsIDIxMywgMSwgMjM5LCA4LCAyMzcsIDIxMywgMSwgMjM4LCAxMTksIDIzNywgCi0gICAgMjEzLCAxLCAyMjIsIDIwMywgMjM3LCAyMTMsIDEsIDI0NywgOTIsIDIzNywgMjEzLCAxLCAyNDYsIDE5OSwgMjM3LCAyMTMsIAotICAgIDEsIDIzMCwgMTgxLCAyMzcsIDIxMywgMSwgMjMwLCAxNDksIDIzNywgMjEzLCAxLCAyMjEsIDExLCAyMzcsIDIxMywgMSwgCi0gICAgMjA3LCAyNDEsIDIzNywgMjEzLCAxLCAyMDcsIDIyOSwgMjM3LCAyMTMsIDEsIDI0NCwgMTIwLCAyMzcsIDIxMywgMSwgMjQ0LCAKLSAgICAxMDQsIDIzNywgMjEzLCAxLCAyMjEsIDIyNywgMjM3LCAyMTMsIDEsIDIxMCwgMjIsIDIzNywgMjEzLCAxLCAyMDksIDEwOCwgCi0gICAgMjM3LCAyMTMsIDEsIDI0NCwgMjEyLCAyMzcsIDIxMywgMSwgMjQ0LCAxLCAyMzcsIDIxMywgMSwgMjAxLCAyMDEsIDIzNywgCi0gICAgMjEzLCAxLCAxODUsIDIzNywgMjEzLCAxLCAyMTgsIDIwOCwgMjM3LCAyMTMsIDEsIDI0OSwgMzIsIDIzNywgMjEzLCAxLCAKLSAgICAyNDgsIDk4LCAyMzcsIDIxMywgMSwgMTkyLCAyMzcsIDIxMywgMSwgMTk4LCAyMzcsIDIxMywgMSwgMjE2LCAyMjAsIDIzNywgCi0gICAgMjEzLCAxLCAyMjgsIDExMywgMjM3LCAyMTMsIDEsIDIyNywgNzcsIDIzNywgMjEzLCAxLCAyMDYsIDg2LCAyMzcsIDIxMywgCi0gICAgMSwgMjEzLCA5MCwgMjM3LCAyMTMsIDEsIDIxMSwgMTY0LCAyMzcsIDIxMywgMSwgMjE1LCAzNiwgMjM3LCAyMTMsIDEsIAotICAgIDE1MiwgMjM3LCAyMTMsIDIsIDIyMSwgNTEsIDIzNywgMjEzLCAyLCAyNTAsIDE3LCAyMzcsIDIxMywgMjIsIDIsIDI1MiwgCi0gICAgMjUsIDIzNywgMjEzLCAyMiwgMiwgNzUsIDIzNywgMjEzLCAyMiwgMiwgMjMxLCA4MywgMjM3LCAyMTMsIDIyLCAyLCA2OCwgCi0gICAgMjM3LCAyMTMsIDIyLCAyLCAyMDYsIDE3OCwgMjM3LCAyMTMsIDIyLCAyLCAxMjUsIDE0NiwgMjM3LCAyMTMsIDIyLCAyLCAKLSAgICAxMjUsIDIxNSwgMTg2LCAyMzcsIDIxMywgMjIsIDIsIDI0NywgNTUsIDc0LCAyMzcsIDIxMywgMjIsIDIsIDc0LCAyMzcsIAotICAgIDIxMywgMjIsIDIsIDI1MSwgNjQsIDIzNywgMjEzLCAyMiwgMiwgMjQ3LCA1NSwgNzgsIDIzNywgMjEzLCAyMiwgMiwgNzgsIAotICAgIDIzNywgMjEzLCAyMiwgMiwgMjUwLCAzNCwgMjM3LCAyMTMsIDIsIDIwNSwgMjA0LCAyMzcsIDIxMywgMjIwLCAzOSwgMjM3LCAKLSAgICAyMTMsIDEsIDEyNSwgMjE1LCAxODYsIDIzNywgMjEzLCAxLCAxMjUsIDIyNywgNzgsIDIzNywgMjEzLCAyMiwgMiwgMTI1LCAKLSAgICAxNTksIDIzNywgMjEzLCAyMiwgMiwgMTI1LCAyMjcsIDc4LCAyMzcsIDIxMywgMTcsIDIwMiwgODQsIDIzNywgMjEzLCAxNywgCi0gICAgMTA1LCAyMzcsIDIxMywgMTcsIDEwOCwgMjM3LCAyMTMsIDE3LCAxNDcsIDIzNywgMjEzLCAxNywgMTQ5LCAyMzcsIDIxMywgCi0gICAgMTcsIDE3MCwgMjM3LCAyMTMsIDE3LCAxOTUsIDIzNywgMjEzLCAxNywgMjEzLCAxMTEsIDIzNywgMjEzLCAxNywgMTk5LCAKLSAgICAyMzcsIDIxMywgMTcsIDIyMiwgNjMsIDIzNywgMjEzLCAyNTEsIDE0NiwgNTQsIDIzNywgMjEzLCAyMTUsIDEyMCwgNTQsIAotICAgIDIzNywgMjEzLCAxLCAyMDIsIDgwLCAxOTMsIDIsIDI0NywgNTIsIDE5MywgMiwgMjUwLCAxODAsIDE5MywgMiwgMjA1LCAKLSAgICAxOTksIDE5MywgMSwgNjMsIDE5MywgMSwgMjUyLCAyNSwgMTkzLCAxLCA3NSwgMTkzLCAxLCAyMzEsIDgzLCAxOTMsIDEsIAotICAgIDY4LCAxOTMsIDEsIDIwNiwgMTc4LCAxOTMsIDEsIDEyNSwgMTQ2LCAxOTMsIDEsIDEyNSwgMTU5LCAxOTMsIDEsIDc0LCAKLSAgICAxOTMsIDEsIDI1MSwgNjQsIDE5MywgMSwgNzgsIDE5MywgMSwgMjUwLCAzNCwgMTkzLCAxLCAxNzMsIDE5MywgMSwgMjI5LCAKLSAgICAxNDQsIDE5MywgMSwgMjM5LCA4LCAxOTMsIDEsIDIzOCwgMTE5LCAxOTMsIDEsIDIyMiwgMjAzLCAxOTMsIDEsIDI0NywgOTIsIAotICAgIDE5MywgMSwgMjQ2LCAxOTksIDE5MywgMSwgMjMwLCAxODEsIDE5MywgMSwgMjMwLCAxNDksIDE5MywgMSwgMjIxLCAxMSwgCi0gICAgMTkzLCAxLCAyMDcsIDI0MSwgMTkzLCAxLCAyMDcsIDIyOSwgMTkzLCAxLCAyNDQsIDEyMCwgMTkzLCAxLCAyNDQsIDEwNCwgCi0gICAgMTkzLCAxLCAyMjEsIDIyNywgMTkzLCAxLCAyMTAsIDIyLCAxOTMsIDEsIDIwOSwgMTA4LCAxOTMsIDEsIDI0NCwgMjEyLCAKLSAgICAxOTMsIDEsIDI0NCwgMSwgMTkzLCAxLCAyMDEsIDIwMSwgMTkzLCAxLCAxODUsIDE5MywgMSwgMjE4LCAyMDgsIDE5MywgMSwgCi0gICAgMjQ5LCAzMiwgMTkzLCAxLCAyNDgsIDk4LCAxOTMsIDEsIDE5MiwgMTkzLCAxLCAxOTgsIDE5MywgMSwgMjE2LCAyMjAsIAotICAgIDE5MywgMSwgMjI4LCAxMTMsIDE5MywgMSwgMjI3LCA3NywgMTkzLCAxLCAyMDYsIDg2LCAxOTMsIDEsIDIxMywgOTAsIDE5MywgCi0gICAgMSwgMjExLCAxNjQsIDE5MywgMSwgMjE1LCAzNiwgMTkzLCAxLCAxNTIsIDE5MywgMiwgMjIxLCA1MSwgMTkzLCAyLCAyNTAsIAotICAgIDE3LCAxOTMsIDIyLCAyLCAyNTIsIDI1LCAxOTMsIDIyLCAyLCA3NSwgMTkzLCAyMiwgMiwgMjMxLCA4MywgMTkzLCAyMiwgMiwgCi0gICAgNjgsIDE5MywgMjIsIDIsIDIwNiwgMTc4LCAxOTMsIDIyLCAyLCAxMjUsIDE0NiwgMTkzLCAyMiwgMiwgMTI1LCAyMTUsIAotICAgIDE4NiwgMTkzLCAyMiwgMiwgNzQsIDE5MywgMjIsIDIsIDI1MSwgNjQsIDE5MywgMjIsIDIsIDc4LCAxOTMsIDIyLCAyLCAKLSAgICAyNTAsIDM0LCAxOTMsIDIsIDIwNSwgMjA0LCAxOTMsIDI1MSwgNjUsIDIyNywgMTk2LCA4MiwgMTkzLCAyNTAsIDM1LCAyMjcsIAotICAgIDE5NiwgODIsIDE5MywgMSwgMjE1LCAxODUsIDE5MywgMSwgMjE2LCA2MSwgMTkzLCAxLCAyMDIsIDE2OCwgMTkzLCAxLCAKLSAgICAxMjUsIDIxNSwgMTg2LCAxOTMsIDEsIDEyNSwgMjI3LCA3OCwgMTkzLCAyMiwgMiwgMTI1LCAxNTksIDE5MywgMjIsIDIsIAotICAgIDEyNSwgMjI3LCA3OCwgMTkzLCAxNywgMjAyLCA4NCwgMTkzLCAxNywgMTA1LCAxOTMsIDE3LCAxMDgsIDE5MywgMTcsIDE0NywgCi0gICAgMTkzLCAxNywgMTQ5LCAxOTMsIDE3LCAxNzAsIDE5MywgMTcsIDE5NSwgMTkzLCAxNywgMjEzLCAxMTEsIDE5MywgMTcsIAotICAgIDE5OSwgMTkzLCAxNywgMjIyLCA2MywgMTkzLCAyMzAsIDIwMiwgMTkzLCAxLCAyMDQsIDExMSwgMTkzLCAyMzksIDEzOCwgCi0gICAgMTE4LCAyMTcsIDU1LCAxOTMsIDIzOSwgMTM4LCAxMTgsIDIzNywgMTM3LCAxOTMsIDIzOSwgMTM4LCAxMjYsIDIxNywgNTMsIAotICAgIDE5MywgMjM5LCAxMzgsIDExOCwgMjEyLCA4MCwgMTkzLCAyMzksIDEzOCwgMTE4LCAyNDEsIDEzOCwgMTkzLCAyMzksIDEzOCwgCi0gICAgMTI2LCAyMTIsIDc5LCA0NCwgMiwgMjUwLCAxODAsIDQ0LCAyLCAyMDUsIDE5OSwgNDQsIDEsIDYzLCA0NCwgMSwgMjUyLCAKLSAgICAyNSwgNDQsIDEsIDc1LCA0NCwgMSwgMjMxLCA4MywgNDQsIDEsIDY4LCA0NCwgMSwgMjA2LCAxNzgsIDQ0LCAxLCA3NCwgNDQsIAotICAgIDEsIDI0MSwgMTYxLCA0NCwgMSwgMjUxLCA2NCwgNDQsIDEsIDc4LCA0NCwgMSwgMjIwLCAxOCwgNDQsIDEsIDI1MCwgMzQsIAotICAgIDQ0LCAxLCAxNzMsIDQ0LCAxLCAyMjIsIDIwMywgNDQsIDEsIDI0NywgOTIsIDQ0LCAxLCAyMzAsIDE4MSwgNDQsIDEsIDIyMSwgCi0gICAgMTEsIDQ0LCAxLCAyMDcsIDI0MSwgNDQsIDEsIDIyMSwgMjI3LCA0NCwgMSwgMjEwLCAyMiwgNDQsIDEsIDIwMSwgMjAxLCAKLSAgICA0NCwgMSwgMjIxLCAyMDksIDQ0LCAxLCAxODUsIDQ0LCAxLCAxOTIsIDQ0LCAxLCAxOTgsIDQ0LCAxLCAyMTYsIDIyMCwgNDQsIAotICAgIDEsIDIxNSwgMTg1LCA0NCwgMSwgMjI4LCAxMTMsIDQ0LCAxLCAyMjcsIDc3LCA0NCwgMSwgMjI3LCA2OCwgNDQsIDEsIDIwNiwgCi0gICAgODYsIDQ0LCAxLCAyMTMsIDkwLCA0NCwgMSwgMjExLCAxNjQsIDQ0LCAxLCAyMTUsIDM2LCA0NCwgMSwgMTUyLCA0NCwgMjIsIAotICAgIDIsIDI1MiwgMjUsIDQ0LCAyMiwgMiwgNzUsIDQ0LCAyMiwgMiwgMjMxLCA4MywgNDQsIDIyLCAyLCA2OCwgNDQsIDIyLCAyLCAKLSAgICAyMDYsIDE3OCwgNDQsIDIyLCAyLCA3NCwgNDQsIDIyLCAyLCAyNDEsIDE2MSwgNDQsIDIyLCAyLCAyNTEsIDY0LCA0NCwgMjIsIAotICAgIDIsIDc4LCA0NCwgMjIsIDIsIDIyMCwgMTgsIDQ0LCAyMiwgMiwgMjUwLCAzNCwgNDQsIDIsIDIwNSwgMjA0LCA0NCwgMjIwLCAKLSAgICAzOSwgNDQsIDI1MCwgMzUsIDIyNywgMTk2LCA4MiwgNDQsIDE3LCAyMDIsIDg0LCA0NCwgMTcsIDEwNSwgNDQsIDE3LCAxMDgsIAotICAgIDQ0LCAxNywgMTQ3LCA0NCwgMTcsIDE0OSwgNDQsIDE3LCAxNzAsIDQ0LCAxNywgMTk1LCA0NCwgMTcsIDIxMywgMTExLCA0NCwgCi0gICAgMTcsIDE5OSwgNDQsIDE3LCAyMjIsIDYzLCA0NCwgNDIsIDIwOSwgMTUyLCA0NCwgNDIsIDExOCwgMjM2LCAxMSwgNDQsIDQyLCAKLSAgICAxMTgsIDIwOSwgMzYsIDQ0LCAyNDQsIDEzMywgNTQsIDQ0LCAyMjQsIDM4LCA1NCwgNDQsIDIwMywgNTAsIDU0LCA0NCwgCi0gICAgMjQ0LCA3MiwgNTQsIDQ0LCAyNDUsIDE0MSwgNTQsIDQ0LCAyNTAsIDgyLCA4NywgNTQsIDQ0LCAyMTUsIDEyMCwgNTQsIDQ0LCAKLSAgICA0MiwgNTQsIDE3NSwgMiwgMzksIDI0NywgNTMsIDU1LCAxNzUsIDIsIDI0NywgNTIsIDE3NSwgMiwgMjUwLCAxODAsIDE3NSwgCi0gICAgMiwgMjA1LCAxOTksIDE3NSwgMSwgNjMsIDE3NSwgMSwgMjUyLCAyNSwgMTc1LCAxLCA3NSwgMTc1LCAxLCAyMzEsIDgzLCAKLSAgICAxNzUsIDEsIDY4LCAxNzUsIDEsIDIwNiwgMTc4LCAxNzUsIDEsIDEyNSwgMTQ2LCAxNzUsIDEsIDEyNSwgMTU5LCAxNzUsIDEsIAotICAgIDc0LCAxNzUsIDEsIDI0MSwgMTYxLCAxNzUsIDEsIDI1MSwgNjQsIDE3NSwgMSwgNzgsIDE3NSwgMSwgMjIwLCAxOCwgMTc1LCAKLSAgICAxLCAyNTAsIDM0LCAxNzUsIDEsIDE3MywgMTc1LCAxLCAyMjksIDE0NCwgMTc1LCAxLCAyMzksIDgsIDE3NSwgMSwgMjM4LCAKLSAgICAxMTksIDE3NSwgMSwgMjIyLCAyMDMsIDE3NSwgMSwgMjQ3LCA5MiwgMTc1LCAxLCAyNDYsIDE5OSwgMTc1LCAxLCAyMzAsIAotICAgIDE4MSwgMTc1LCAxLCAyMzAsIDE0OSwgMTc1LCAxLCAyMjEsIDExLCAxNzUsIDEsIDIwNywgMjQxLCAxNzUsIDEsIDIwNywgCi0gICAgMjI5LCAxNzUsIDEsIDI0NCwgMTIwLCAxNzUsIDEsIDI0NCwgMTA0LCAxNzUsIDEsIDIyMSwgMjI3LCAxNzUsIDEsIDIxMCwgCi0gICAgMjIsIDE3NSwgMSwgMjA5LCAxMDgsIDE3NSwgMSwgMjQ0LCAyMTIsIDE3NSwgMSwgMjQ0LCAxLCAxNzUsIDEsIDIwMSwgMjAxLCAKLSAgICAxNzUsIDEsIDE4NSwgMTc1LCAxLCAyMTgsIDIwOCwgMTc1LCAxLCAyNDksIDMyLCAxNzUsIDEsIDI0OCwgOTgsIDE3NSwgMSwgCi0gICAgMTkyLCAxNzUsIDEsIDE5OCwgMTc1LCAxLCAyMTYsIDIyMCwgMTc1LCAxLCAyMTUsIDE4NSwgMTc1LCAxLCAyMjgsIDExMywgCi0gICAgMTc1LCAxLCAyMjcsIDc3LCAxNzUsIDEsIDIyNywgNjgsIDE3NSwgMSwgMjA2LCA4NiwgMTc1LCAxLCAyMTMsIDkwLCAxNzUsIAotICAgIDEsIDIxMSwgMTY0LCAxNzUsIDEsIDIxNSwgMzYsIDE3NSwgMSwgMTUyLCAxNzUsIDIsIDI1MCwgMTcsIDE3NSwgMjIsIDIsIAotICAgIDI1MiwgMjUsIDE3NSwgMjIsIDIsIDc1LCAxNzUsIDIyLCAyLCAyMzEsIDgzLCAxNzUsIDIyLCAyLCA2OCwgMTc1LCAyMiwgMiwgCi0gICAgMjA2LCAxNzgsIDE3NSwgMjIsIDIsIDEyNSwgMTQ2LCAxNzUsIDIyLCAyLCAxMjUsIDIxNSwgMTg2LCAxNzUsIDIyLCAyLCAKLSAgICA3NCwgMTc1LCAyMiwgMiwgMjQxLCAxNjEsIDE3NSwgMjIsIDIsIDI1MSwgNjQsIDE3NSwgMjIsIDIsIDc4LCAxNzUsIDIyLCAKLSAgICAyLCAyMjAsIDE4LCAxNzUsIDIyLCAyLCAyNTAsIDM0LCAxNzUsIDIsIDIwNSwgMjA0LCAxNzUsIDIyNywgMTk2LCA4MiwgCi0gICAgMTc1LCAyNTEsIDY1LCAyMjcsIDE5NiwgODIsIDE3NSwgMSwgMjA4LCAyMCwgMTc1LCAxLCAyNDEsIDI1NSwgMTc1LCAxLCAKLSAgICAyMTUsIDE2NiwgMTc1LCAxLCAxMjUsIDIxNSwgMTg2LCAxNzUsIDEsIDEyNSwgMjI3LCA3OCwgMTc1LCAyMiwgMiwgMTI1LCAKLSAgICAxNTksIDE3NSwgMjIsIDIsIDEyNSwgMjI3LCA3OCwgMTc1LCAxNywgMjAyLCA4NCwgMTc1LCAxNywgMTA1LCAxNzUsIDE3LCAKLSAgICAxMDgsIDE3NSwgMTcsIDE0NywgMTc1LCAxNywgMTQ5LCAxNzUsIDE3LCAxNzAsIDE3NSwgMTcsIDE5NSwgMTc1LCAxNywgCi0gICAgMjEzLCAxMTEsIDE3NSwgMTcsIDE5OSwgMTc1LCAxNywgMjIyLCA2MywgMTc1LCAyMzksIDEzOCwgMTcsIDIwMiwgODUsIDM1LCAKLSAgICAyMjAsIDc3LCAyMTgsIDE1LCA3NiwgMTQ5LCAxNzUsIDIzOSwgMTM4LCAxNywgMTE4LCAzNSwgMjIwLCA3NywgMjE4LCAxNSwgCi0gICAgNzYsIDE0OSwgMTc1LCAyMzksIDEzOCwgMTcsIDEyMCwgMzUsIDIyMCwgNzcsIDIxOCwgMTUsIDc2LCAxNDksIDE3NSwgMjM5LCAKLSAgICAxMzgsIDE3LCAxMjYsIDM1LCAyMjAsIDc3LCAyMTgsIDE1LCA3NiwgMTQ5LCAxNzUsIDIzOSwgMTM4LCAxNywgMTE4LCAzNSwgCi0gICAgMjQwLCAyMjUsIDIxOCwgMTUsIDc2LCAxNDksIDE3NSwgMjM5LCAxMzgsIDE3LCAxMjAsIDM1LCAyNDAsIDIyNSwgMjE4LCAKLSAgICAxNSwgNzYsIDE0OSwgMTc1LCAyMzksIDEzOCwgMTcsIDEyNiwgMzUsIDI0MCwgMjI1LCAyMTgsIDE1LCA3NiwgMTQ5LCAxNzUsIAotICAgIDIsIDIwNywgMTY0LCAyMDAsIDIsIDI0NywgNTIsIDIwMCwgMiwgMjUwLCAxODAsIDIwMCwgMiwgMjA1LCAxOTksIDIwMCwgMSwgCi0gICAgNjMsIDIwMCwgMSwgMjUyLCAyNSwgMjAwLCAxLCA3NSwgMjAwLCAxLCAyMzEsIDgzLCAyMDAsIDEsIDY4LCAyMDAsIDEsIAotICAgIDIwNiwgMTc4LCAyMDAsIDEsIDEyNSwgMTQ2LCAyMDAsIDEsIDEyNSwgMTU5LCAyMDAsIDEsIDc0LCAyMDAsIDEsIDI0MSwgCi0gICAgMTYxLCAyMDAsIDEsIDI1MSwgNjQsIDIwMCwgMSwgNzgsIDIwMCwgMSwgMjIwLCAxOCwgMjAwLCAxLCAyNTAsIDM0LCAyMDAsIAotICAgIDEsIDE3MywgMjAwLCAxLCAyMjksIDE0NCwgMjAwLCAxLCAyMzksIDgsIDIwMCwgMSwgMjM4LCAxMTksIDIwMCwgMSwgMjIyLCAKLSAgICAyMDMsIDIwMCwgMSwgMjQ3LCA5MiwgMjAwLCAxLCAyNDYsIDE5OSwgMjAwLCAxLCAyMzAsIDE4MSwgMjAwLCAxLCAyMzAsIAotICAgIDE0OSwgMjAwLCAxLCAyMjEsIDExLCAyMDAsIDEsIDIwNywgMjQxLCAyMDAsIDEsIDIwNywgMjI5LCAyMDAsIDEsIDI0NCwgCi0gICAgMTIwLCAyMDAsIDEsIDI0NCwgMTA0LCAyMDAsIDEsIDIyMSwgMjI3LCAyMDAsIDEsIDIxMCwgMjIsIDIwMCwgMSwgMjA5LCAKLSAgICAxMDgsIDIwMCwgMSwgMjQ0LCAyMTIsIDIwMCwgMSwgMjQ0LCAxLCAyMDAsIDEsIDIwMSwgMjAxLCAyMDAsIDEsIDE4NSwgCi0gICAgMjAwLCAxLCAyMTgsIDIwOCwgMjAwLCAxLCAyNDksIDMyLCAyMDAsIDEsIDI0OCwgOTgsIDIwMCwgMSwgMTkyLCAyMDAsIDEsIAotICAgIDE5OCwgMjAwLCAxLCAyMTYsIDIyMCwgMjAwLCAxLCAyMTUsIDE4NSwgMjAwLCAxLCAyMjgsIDExMywgMjAwLCAxLCAyMjcsIAotICAgIDc3LCAyMDAsIDEsIDIwNiwgODYsIDIwMCwgMSwgMjEzLCA5MCwgMjAwLCAxLCAyMTEsIDE2NCwgMjAwLCAxLCAyMTUsIDM2LCAKLSAgICAyMDAsIDEsIDE1MiwgMjAwLCAyLCAyMjEsIDUxLCAyMDAsIDIsIDI1MCwgMTcsIDIwMCwgMjIsIDIsIDI1MiwgMjUsIDIwMCwgCi0gICAgMjIsIDIsIDc1LCAyMDAsIDIyLCAyLCAyMzEsIDgzLCAyMDAsIDIyLCAyLCA2OCwgMjAwLCAyMiwgMiwgMjA2LCAxNzgsIAotICAgIDIwMCwgMjIsIDIsIDEyNSwgMTQ2LCAyMDAsIDIyLCAyLCAxMjUsIDIxNSwgMTg2LCAyMDAsIDIyLCAyLCA3NCwgMjAwLCAyMiwgCi0gICAgMiwgMjQxLCAxNjEsIDIwMCwgMjIsIDIsIDI1MSwgNjQsIDIwMCwgMjIsIDIsIDc4LCAyMDAsIDIyLCAyLCAyMjAsIDE4LCAKLSAgICAyMDAsIDIyLCAyLCAyNTAsIDM0LCAyMDAsIDIsIDIwNSwgMjA0LCAyMDAsIDIyNywgMTk2LCA4MiwgMjAwLCAyNTEsIDY1LCAKLSAgICAyMjcsIDE5NiwgODIsIDIwMCwgMSwgMjQwLCAxMDgsIDIwMCwgMSwgMTI1LCAyMTUsIDE4NiwgMjAwLCAxLCAxMjUsIDIyNywgCi0gICAgNzgsIDIwMCwgMjIsIDIsIDEyNSwgMTU5LCAyMDAsIDIyLCAyLCAxMjUsIDIyNywgNzgsIDIwMCwgMTcsIDIwMiwgODQsIAotICAgIDIwMCwgMTcsIDEwNSwgMjAwLCAxNywgMTA4LCAyMDAsIDE3LCAxNDcsIDIwMCwgMTcsIDE0OSwgMjAwLCAxNywgMTcwLCAKLSAgICAyMDAsIDE3LCAxOTUsIDIwMCwgMTcsIDIxMywgMTExLCAyMDAsIDE3LCAxOTksIDIwMCwgMTcsIDIyMiwgNjMsIDIwMCwgMiwgCi0gICAgMjMwLCAxMzUsIDIwMCwgMiwgMjA2LCAyMjIsIDE2NCwgMiwgMjQ3LCA1MiwgMTY0LCAyLCAyNTAsIDE4MCwgMTY0LCAyLCAKLSAgICAyMDUsIDE5OSwgMTY0LCAxLCA2MywgMTY0LCAxLCAyNTIsIDI1LCAxNjQsIDEsIDc1LCAxNjQsIDEsIDIzMSwgODMsIDE2NCwgCi0gICAgMSwgNjgsIDE2NCwgMSwgMjA2LCAxNzgsIDE2NCwgMSwgMTI1LCAxNDYsIDE2NCwgMSwgMTI1LCAxNTksIDE2NCwgMSwgNzQsIAotICAgIDE2NCwgMSwgMjQxLCAxNjEsIDE2NCwgMSwgMjUxLCA2NCwgMTY0LCAxLCA3OCwgMTY0LCAxLCAyMjAsIDE4LCAxNjQsIDEsIAotICAgIDI1MCwgMzQsIDE2NCwgMSwgMTczLCAxNjQsIDEsIDIyOSwgMTQ0LCAxNjQsIDEsIDIzOSwgOCwgMTY0LCAxLCAyMzgsIDExOSwgCi0gICAgMTY0LCAxLCAyMjIsIDIwMywgMTY0LCAxLCAyNDcsIDkyLCAxNjQsIDEsIDI0NiwgMTk5LCAxNjQsIDEsIDIzMCwgMTgxLCAKLSAgICAxNjQsIDEsIDIzMCwgMTQ5LCAxNjQsIDEsIDIyMSwgMTEsIDE2NCwgMSwgMjA3LCAyNDEsIDE2NCwgMSwgMjA3LCAyMjksIAotICAgIDE2NCwgMSwgMjQ0LCAxMjAsIDE2NCwgMSwgMjQ0LCAxMDQsIDE2NCwgMSwgMjIxLCAyMjcsIDE2NCwgMSwgMjEwLCAyMiwgCi0gICAgMTY0LCAxLCAyMDksIDEwOCwgMTY0LCAxLCAyNDQsIDIxMiwgMTY0LCAxLCAyNDQsIDEsIDE2NCwgMSwgMjAxLCAyMDEsIAotICAgIDE2NCwgMSwgMjIxLCAyMDksIDE2NCwgMSwgMTg1LCAxNjQsIDEsIDIxOCwgMjA4LCAxNjQsIDEsIDI0OSwgMzIsIDE2NCwgMSwgCi0gICAgMjQ4LCA5OCwgMTY0LCAxLCAxOTIsIDE2NCwgMSwgMTk4LCAxNjQsIDEsIDIxNiwgMjIwLCAxNjQsIDEsIDIxNSwgMTg1LCAKLSAgICAxNjQsIDEsIDIyOCwgMTEzLCAxNjQsIDEsIDIyNywgNzcsIDE2NCwgMSwgMjI3LCA2OCwgMTY0LCAxLCAyMDYsIDg2LCAxNjQsIAotICAgIDEsIDIxMywgOTAsIDE2NCwgMSwgMjExLCAxNjQsIDE2NCwgMSwgMjE1LCAzNiwgMTY0LCAxLCAxNTIsIDE2NCwgMSwgMjA3LCAKLSAgICAyMTAsIDE2NCwgMiwgMjUwLCAxNywgMTY0LCAyMiwgMiwgMjUyLCAyNSwgMTY0LCAyMiwgMiwgNzUsIDE2NCwgMjIsIDIsIAotICAgIDIzMSwgODMsIDE2NCwgMjIsIDIsIDY4LCAxNjQsIDIyLCAyLCAyMDYsIDE3OCwgMTY0LCAyMiwgMiwgMTI1LCAxNDYsIDE2NCwgCi0gICAgMjIsIDIsIDEyNSwgMjE1LCAxODYsIDE2NCwgMjIsIDIsIDc0LCAxNjQsIDIyLCAyLCAyNDEsIDE2MSwgMTY0LCAyMiwgMiwgCi0gICAgMjUxLCA2NCwgMTY0LCAyMiwgMiwgNzgsIDE2NCwgMjIsIDIsIDIyMCwgMTgsIDE2NCwgMjIsIDIsIDI1MCwgMzQsIDE2NCwgCi0gICAgMiwgMjA1LCAyMDQsIDE2NCwgMSwgNzAsIDIxNiwgOTcsIDE2NCwgMjUwLCAzNSwgMjI3LCAxOTYsIDgyLCAxNjQsIDEsIAotICAgIDI1MCwgMTI2LCAyMzEsIDgzLCAxNjQsIDEsIDEyNSwgMjE1LCAxODYsIDE2NCwgMSwgMTI1LCAyMjcsIDc4LCAxNjQsIDIyLCAKLSAgICAyLCAxMjUsIDE1OSwgMTY0LCAyMiwgMiwgMTI1LCAyMjcsIDc4LCAxNjQsIDE3LCAyMDIsIDg0LCAxNjQsIDE3LCAxMDUsIAotICAgIDE2NCwgMTcsIDEwOCwgMTY0LCAxNywgMTQ3LCAxNjQsIDE3LCAxNDksIDE2NCwgMTcsIDE3MCwgMTY0LCAxNywgMTk1LCAKLSAgICAxNjQsIDE3LCAyMTMsIDExMSwgMTY0LCAxNywgMTk5LCAxNjQsIDE3LCAyMjIsIDYzLCAxNjQsIDQyLCAyMDksIDE1MiwgCi0gICAgMTY0LCA0MiwgMTE4LCAyMzYsIDExLCAxNjQsIDQyLCAxMTgsIDIwOSwgMzYsIDE2NCwgMjM5LCAxMzgsIDExOCwgMjE3LCAKLSAgICA1NSwgMTY0LCAyMzksIDEzOCwgMTE4LCAyMzcsIDEzNywgMTY0LCAyMzksIDEzOCwgMTI2LCAyMTcsIDUzLCAxNjQsIDI0NCwgCi0gICAgMTM4LCA4MiwgMTY0LCAxLCAyNDYsIDEzMSwgMjIxLCAyMjgsIDE2NCwgMSwgMjQ2LCAxMzEsIDIyMywgMTYzLCAxNjQsIDEsIAotICAgIDI0NiwgMTMxLCAyMTUsIDE4NiwgMTY0LCAxLCAyNDYsIDEzMSwgMTU5LCAxNjQsIDEsIDI0NiwgMTMxLCAyMjcsIDc4LCAKLSAgICAxNjQsIDEsIDI0NiwgMTMxLCAyMzAsIDU0LCAxNDAsIDIsIDI1MCwgMTc5LCAxNDAsIDIsIDIwNSwgMTk4LCAxNDAsIDEsIAotICAgIDI1MCwgNiwgMTQwLCAxLCAyNTEsIDIzNSwgMTQwLCAxLCAyNTEsIDg5LCAxNDAsIDEsIDI1MSwgMTA0LCAxNDAsIDEsIDIzMCwgCi0gICAgMTkxLCAxNDAsIDEsIDIzMSwgODIsIDE0MCwgMSwgMjA2LCAxNjksIDE0MCwgMSwgMjA2LCAxNzIsIDE0MCwgMSwgMjMwLCAKLSAgICAyMTcsIDE0MCwgMSwgMjMwLCAyMTgsIDE0MCwgMSwgMjMxLCA2OCwgMTQwLCAxLCAyMzEsIDcwLCAxNDAsIDEsIDI0MCwgCi0gICAgMTk0LCAxNDAsIDEsIDI0MSwgMTU2LCAxNDAsIDEsIDI1MSwgNDksIDE0MCwgMSwgMjE5LCAxODcsIDE0MCwgMSwgMjIwLCAKLSAgICAxMSwgMTQwLCAxLCAyNTAsIDIwLCAxNDAsIDEsIDI1MSwgNSwgMjI5LCAyMDYsIDE0MCwgMSwgMjI1LCAxNDcsIDIyOSwgCi0gICAgMjA2LCAxNDAsIDEsIDI1MSwgNSwgMjM4LCAyMTAsIDE0MCwgMSwgMjI1LCAxNDcsIDIzOCwgMjEwLCAxNDAsIDEsIDIyOSwgCi0gICAgMjU1LCAyMjMsIDEwMywgMTQwLCAxLCAyMTQsIDIzNSwgMjM4LCAyMTAsIDE0MCwgMSwgMjUxLCA1LCAyNDcsIDgsIDE0MCwgCi0gICAgMSwgMjI1LCAxNDcsIDI0NywgOCwgMTQwLCAxLCAyNTEsIDUsIDIzMCwgMTY0LCAxNDAsIDEsIDIyNSwgMTQ3LCAyMzAsIAotICAgIDE2NCwgMTQwLCAxLCAyMTAsIDE1LCAyMjMsIDEwMywgMTQwLCAxLCAyMTAsIDE1LCAyMTQsIDIzNCwgMjIzLCAxMDQsIDE0MCwgCi0gICAgMSwgMjE0LCAyMzUsIDIzMCwgMTY0LCAxNDAsIDEsIDI1MSwgNSwgMjA3LCAyMzcsIDE0MCwgMSwgMjI1LCAxNDcsIDIwNywgCi0gICAgMjM3LCAxNDAsIDEsIDI1MSwgNSwgMjQ0LCAxMTEsIDE0MCwgMSwgMjI1LCAxNDcsIDI0NCwgMTExLCAxNDAsIDEsIDIyMywgCi0gICAgMTkxLCAyMjMsIDU4LCAxNDAsIDEsIDIxNCwgMjM1LCAyNDQsIDExMSwgMTQwLCAxLCAyNTEsIDUsIDIwOSwgMTk1LCAxNDAsIAotICAgIDEsIDIyNSwgMTQ3LCAyMDksIDE5NSwgMTQwLCAxLCAyNTEsIDUsIDI0NCwgMTMxLCAxNDAsIDEsIDIyNSwgMTQ3LCAyNDQsIAotICAgIDEzMSwgMTQwLCAxLCAyNDQsIDE2MiwgMjIzLCA1OCwgMTQwLCAxLCAyMTQsIDIzNSwgMjQ0LCAxMzEsIDE0MCwgMSwgMjUxLCAKLSAgICA1LCAyMTksIDQyLCAxNDAsIDEsIDIyNSwgMTQ3LCAyMTksIDQyLCAxNDAsIDEsIDI1MSwgNSwgMjQ4LCAyMDAsIDE0MCwgMSwgCi0gICAgMjI1LCAxNDcsIDI0OCwgMjAwLCAxNDAsIDEsIDIyNSwgNjIsIDE0MCwgMSwgMjUwLCAyNDEsIDI0OCwgMjAwLCAxNDAsIDEsIAotICAgIDIwMywgNTcsIDE0MCwgMSwgMjE2LCAxNjQsIDE0MCwgMSwgMjQ0LCAxNjIsIDIyNywgMjQzLCAxNDAsIDEsIDIwNiwgNTcsIAotICAgIDE0MCwgMSwgMjEwLCAxNSwgMjE0LCAyMDcsIDE0MCwgMSwgMjIzLCAxOTEsIDIxNCwgMjA3LCAxNDAsIDEsIDI0NCwgMTYyLCAKLSAgICAyMTQsIDIwNywgMTQwLCAxLCAyMzcsIDcxLCAxNDAsIDEsIDIyMywgMTkxLCAyMjcsIDI0MywgMTQwLCAxLCAyNDAsIDYyLCAKLSAgICAxNDAsIDIsIDI1MSwgMzgsIDE0MCwgMjIsIDIsIDI1MSwgOTksIDE0MCwgMjIsIDIsIDIyOSwgMTY5LCAyNTEsIDEwNiwgCi0gICAgMTQwLCAyMiwgMiwgMjQzLCAyMDAsIDI1MSwgMTA2LCAxNDAsIDIyLCAyLCAyMjksIDE2OSwgMjMwLCAyMTQsIDE0MCwgMjIsIAotICAgIDIsIDI0MywgMjAwLCAyMzAsIDIxNCwgMTQwLCAyMiwgMiwgMjI5LCAxNjksIDIxOSwgMTY3LCAxNDAsIDIyLCAyLCAyNDMsIAotICAgIDIwMCwgMjE5LCAxNjcsIDE0MCwgMjIsIDIsIDIzOCwgMjUzLCAxNDAsIDIyLCAyLCAyMjksIDExLCAxNDAsIDIyLCAyLCAKLSAgICAyNDMsIDIwMCwgMjI5LCAxMSwgMTQwLCAyMiwgMiwgMjI5LCAxMywgMjQ0LCA1MCwgMTQwLCAyMiwgMiwgMjI5LCAxMiwgCi0gICAgMjM3LCAxNTgsIDI1MSwgOTksIDE0MCwgMjIsIDIsIDIyOSwgMTIsIDIzNywgMTU4LCAyNDMsIDIwMCwgMjUxLCA5OSwgMTQwLCAKLSAgICAyMiwgMiwgMjI5LCAxMiwgMjM3LCAxNTgsIDIzOCwgMjA5LCAxNDAsIDIyLCAyLCAyMzgsIDIwOSwgMTQwLCAyMjcsIDg5LCAKLSAgICAxNywgMjAyLCA4NCwgMTQwLCAyMjcsIDg5LCAxNywgMTA1LCAxNDAsIDIyNywgODksIDE3LCAxMDgsIDE0MCwgMjI3LCA4OSwgCi0gICAgMTcsIDE0NywgMTQwLCAyMjcsIDg5LCAxNywgMTQ5LCAxNDAsIDIyNywgODksIDE3LCAxNzAsIDE0MCwgMjI3LCA4OSwgMTcsIAotICAgIDE5NSwgMTQwLCAyMjcsIDg5LCAxNywgMjEzLCAxMTEsIDE0MCwgMjI3LCA4OSwgMTcsIDE5OSwgMTQwLCAyMjcsIDg5LCAxNywgCi0gICAgMjIyLCA2MywgMTQwLCAyMiwgMiwgMjQzLCAyMDAsIDIzOCwgMjUzLCAxNDAsIDIyLCAyLCAyNDMsIDIwMCwgMjM4LCAyMDksIAotICAgIDE0MCwgMjE3LCAxNzksIDIyOCwgMTk0LCAyMDksIDEwMywgMTY3LCAyMjksIDI3LCAyMzAsIDE4LCAyMDksIDEwMywgMTY3LCAKLSAgICAyMjksIDExNiwgMjI5LCAxMzksIDIwOSwgMTAzLCAxNjcsIDIyOSwgMTE2LCAyMjksIDEwOCwgMjA5LCAxMDMsIDE2NywgCi0gICAgMjI5LCAxMTYsIDIyOSwgMTAzLCAyMDksIDEwMywgMTY3LCAyMjksIDExNiwgMjI5LCAxMTIsIDIwOSwgMTAzLCAxNjcsIAotICAgIDIyOSwgMTE2LCAyMTYsIDE4NSwgMjA5LCAxMDMsIDE2NywgMjIyLCAxMjksIDIyMiwgMTE2LCAyMDksIDEwMywgMTY3LCAKLSAgICAyNDYsIDExNywgMjQ2LCAxODgsIDIwOSwgMTAzLCAxNjcsIDI0NiwgMTE3LCAyNDYsIDEyNywgMjA5LCAxMDMsIDE2NywgCi0gICAgMjQ2LCAxMTcsIDI0NiwgMTg3LCAyMDksIDEwMywgMTY3LCAyMTIsIDE0LCAyMTIsIDEzLCAyMDksIDEwMywgMTY3LCAyNDYsIAotICAgIDExNywgMjQ2LCAxMTMsIDIwOSwgMTAzLCAxNjcsIDIwMiwgMjQ4LCAyMDIsIDI1NSwgMjA5LCAxMDMsIDE2NywgMjQzLCAKLSAgICAxMTQsIDI0NiwgMTk2LCAyMDksIDEwMywgMTY3LCAyMDgsIDE3MywgMjE5LCA1MywgMjA5LCAxMDMsIDE2NywgMjA5LCA0OCwgCi0gICAgMjA5LCA5NywgMjA5LCAxMDMsIDE2NywgMjA5LCA0OCwgMjIzLCA4MCwgMjA5LCAxMDMsIDE2NywgMjA5LCA0OCwgMjE4LCAKLSAgICAxNzAsIDIwOSwgMTAzLCAxNjcsIDIyMSwgMTkyLCAyMjIsIDIzMCwgMjA5LCAxMDMsIDE2NywgMjQzLCAxMTQsIDI0NCwgNTEsIAotICAgIDIwOSwgMTAzLCAxNjcsIDIwOCwgMTczLCAyMDksIDIyMywgMjA5LCAxMDMsIDE2NywgMjA5LCA0OCwgMjA5LCAxNiwgMjA5LCAKLSAgICAxMDMsIDE2NywgMjA5LCA0OCwgMjA5LCAxMDQsIDIwOSwgMTAzLCAxNjcsIDIwOSwgNDgsIDIwOSwgNDMsIDIwOSwgMTAzLCAKLSAgICAxNjcsIDIyMSwgMTkyLCAyMjEsIDg0LCAyMDksIDEwMywgMTY3LCAyNDgsIDI0LCAyNDksIDAsIDIwOSwgMTAzLCAxNjcsIAotICAgIDIxOCwgNzAsIDIxOCwgOTgsIDIwOSwgMTAzLCAxNjcsIDIxOCwgMTgxLCAyMTgsIDE3MiwgMjA5LCAxMDMsIDE2NywgMjM5LCAKLSAgICAxODcsIDI0MCwgMTA4LCAyMDksIDEwMywgMTY3LCAyMTgsIDE4MSwgMjE4LCAyMDEsIDIwOSwgMTAzLCAxNjcsIDIzOSwgCi0gICAgMTg3LCAyNDAsIDgxLCAyMDksIDEwMywgMTY3LCAyMTgsIDE4MSwgMjE0LCAyNDcsIDIwOSwgMTAzLCAxNjcsIDIyNCwgODMsIAotICAgIDE5MiwgMjA5LCAxMDMsIDE2NywgMjAyLCAyNDgsIDIwMywgODYsIDIwOSwgMTAzLCAxNjcsIDIxNSwgMjI4LCAyMTUsIDE0NCwgCi0gICAgMjA5LCAxMDMsIDE2NywgMjE1LCAxNDUsIDIwOSwgMTAzLCAxNjcsIDIyNywgNTAsIDIyNywgMTA3LCAyMDksIDEwMywgMTY3LCAKLSAgICAyMjYsIDIzOSwgMjA5LCAxMDMsIDE2NywgMjA0LCAxLCAyMDQsIDEwNiwgMjA5LCAxMDMsIDE2NywgMjEyLCAxNCwgMjE1LCAKLSAgICA2LCAyMDksIDEwMywgMTY3LCAyMTIsIDE0LCAyMTUsIDExNiwgMjA5LCAxMDMsIDE2NywgMjEyLCAxNCwgMjExLCA5LCAyMDksIAotICAgIDEwMywgMTY3LCAyMzYsIDEzNywgMjM2LCAyMzMsIDIwOSwgMTAzLCAxNjcsIDIyNywgNTAsIDI0NiwgOTcsIDIwOSwgMTAzLCAKLSAgICAxNjcsIDE1OCwgMjUwLCAyMjMsIDIwOSwgMTAzLCAxNjcsIDIzNiwgMTM3LCAyMjEsIDE4NywgMjA5LCAxMDMsIDE2NywgCi0gICAgMjE5LCAxNDQsIDIwOSwgMTAzLCAxNjcsIDIxNCwgMjI5LCA2MywgMjA5LCAxMDMsIDE2NywgMjI1LCAxNDEsIDIzNywgMTI1LCAKLSAgICAyMDksIDEwMywgMTY3LCAyMTQsIDIyOSwgMjUyLCAyNSwgMjA5LCAxMDMsIDE2NywgMjE0LCAyMjksIDI1MCwgMjQ3LCAyMDksIAotICAgIDEwMywgMTY3LCAyMTQsIDIyOSwgNzUsIDIwOSwgMTAzLCAxNjcsIDIxNCwgMjI5LCAyMzEsIDgzLCAyMDksIDEwMywgMTY3LCAKLSAgICAyMTQsIDIyOSwgMjA3LCAyNCwgMjA5LCAxMDMsIDE2NywgMjE0LCAyMjksIDIwNywgMjIsIDIwOSwgMTAzLCAxNjcsIDIxNCwgCi0gICAgMjI5LCA2OCwgMjA5LCAxMDMsIDE2NywgMjE0LCAyMjksIDIwNiwgMTc4LCAyMDksIDEwMywgMTY3LCAyMTgsIDE4MywgMjA5LCAKLSAgICAxMDMsIDI0NSwgOTIsIDE2LCAyNDksIDEsIDIwOSwgMTAzLCAxNjcsIDIxNCwgMjI5LCA3NCwgMjA5LCAxMDMsIDE2NywgCi0gICAgMjE0LCAyMjksIDI1MSwgMTA5LCAyMDksIDEwMywgMTY3LCAyMTQsIDIyOSwgNzgsIDIwOSwgMTAzLCAxNjcsIDIxNCwgMjI5LCAKLSAgICAyNTEsIDY1LCAyMjUsIDEzNSwgMjA5LCAxMDMsIDE2NywgMjE0LCAyMjksIDI1MSwgNjUsIDIyNSwgMTM2LCAyMDksIDEwMywgCi0gICAgMTY3LCAyMjgsIDMyLCAyMDksIDEwMywgMTY3LCAyMjUsIDEzMiwgMjA5LCAxMDMsIDE2NywgMjI1LCAxMzMsIDIwOSwgMTAzLCAKLSAgICAxNjcsIDIyNSwgMTQxLCAyNDEsIDEyOSwgMjA5LCAxMDMsIDE2NywgMjI1LCAxNDEsIDIwOSwgNDcsIDIwOSwgMTAzLCAxNjcsIAotICAgIDIyNSwgMTQxLCAyMDgsIDg4LCAyMDksIDEwMywgMTY3LCAyMjUsIDE0MSwgMjQ2LCAxNzUsIDIwOSwgMTAzLCAxNjcsIDIwOSwgCi0gICAgOTUsIDIwOSwgMTAzLCAxNjcsIDIyMiwgNzIsIDIwOSwgMTAzLCAxNjcsIDIwMywgODAsIDIwOSwgMTAzLCAxNjcsIDIzOSwgCi0gICAgMTc3LCAyMDksIDEwMywgMTcsIDIwMiwgODQsIDIwOSwgMTAzLCAxNywgMTA1LCAyMDksIDEwMywgMTcsIDEwOCwgMjA5LCAKLSAgICAxMDMsIDE3LCAxNDcsIDIwOSwgMTAzLCAxNywgMTQ5LCAyMDksIDEwMywgMTcsIDE3MCwgMjA5LCAxMDMsIDE3LCAxOTUsIAotICAgIDIwOSwgMTAzLCAxNywgMjEzLCAxMTEsIDIwOSwgMTAzLCAxNywgMTk5LCAyMDksIDEwMywgMTcsIDIyMiwgNjMsIDIwOSwgCi0gICAgMTAzLCAxNjcsIDI1MCwgMjE5LCAyMDksIDEwMywgMTY3LCAyMjksIDExMywgMjI4LCAxMiwgMSwgMjI5LCAyNiwgMjI4LCAKLSAgICAxMiwgMSwgMjI5LCAxMTYsIDIxMCwgMjExLCAyMjgsIDEyLCAxLCAyMjksIDExNiwgMjA5LCAyMzIsIDIyOCwgMTIsIDEsIAotICAgIDIyMiwgMTI4LCAyMjgsIDEyLCAxLCAyNDUsIDI1NCwgMjI4LCAxMiwgMSwgMjEyLCAxNCwgMjA5LCAyMzIsIDIyOCwgMTIsIAotICAgIDEsIDIyMCwgMjMzLCAyMjgsIDEyLCAxLCAyNDMsIDExMywgMjI4LCAxMiwgMSwgMTM1LCAyMjgsIDEyLCAxLCAyMDksIDQ4LCAKLSAgICAyMTAsIDIxMSwgMjI4LCAxMiwgMSwgMjA5LCA0OCwgMjA5LCAyMzIsIDIyOCwgMTIsIDEsIDIyMSwgMTkxLCAyMjgsIDEyLCAKLSAgICAxLCAyNDgsIDIzLCAyMjgsIDEyLCAxLCAyMTgsIDY5LCAyMjgsIDEyLCAxLCAyMTgsIDE4MSwgMjEwLCAyMTEsIDIyOCwgMTIsIAotICAgIDEsIDIzOSwgMTg3LCAyMDksIDIzMiwgMjI4LCAxMiwgMSwgMjE4LCAxODEsIDIwOSwgMjMyLCAyMjgsIDEyLCAxLCAyMzksIAotICAgIDE4NywgMjEwLCAyMTEsIDIyOCwgMTIsIDEsIDIyNCwgODIsIDIyOCwgMTIsIDEsIDIwMiwgMjQ3LCAyMjgsIDEyLCAxLCAKLSAgICAyMjcsIDUwLCAyMjcsIDEwNywgMjI4LCAxMiwgMSwgMjI3LCA1MCwgMjI3LCAxMiwgMjI4LCAxMiwgMSwgMjA0LCAwLCAyMjgsIAotICAgIDEyLCAxLCAyMTIsIDE0LCAyMTAsIDIxMSwgMjI4LCAxMiwgMSwgMjM2LCAxMzcsIDIxMCwgMjExLCAyMjgsIDEyLCAxLCA3OCwgCi0gICAgMjI4LCAxMiwgMSwgMjM2LCAxMzcsIDIwOSwgMjMyLCAyMjgsIDEyLCAyNDEsIDEwOCwgMjI4LCAxMiwgMjIsIDIsIDYzLCAKLSAgICAyMjgsIDEyLCAyMiwgMiwgMjI1LCAxNDEsIDIzMCwgNCwgMjI4LCAxMiwgMjIsIDIsIDI1MiwgMjUsIDIyOCwgMTIsIDIyLCAKLSAgICAyLCAyNTAsIDI0NywgMjI4LCAxMiwgMjIsIDIsIDc1LCAyMjgsIDEyLCAyMiwgMiwgMjMxLCA4MywgMjI4LCAxMiwgMjIsIDIsIAotICAgIDIwMywgMTI0LCAyMjgsIDEyLCAyMiwgMiwgMjAyLCAxNjksIDIyOCwgMTIsIDIyLCAyLCA2OCwgMjI4LCAxMiwgMjIsIDIsIAotICAgIDIwNiwgMTc4LCAyMjgsIDEyLCAyMiwgMiwgMjI1LCAxNDEsIDIyOSwgOSwgMjI4LCAxMiwgMjEzLCAxMzgsIDIsIDIyNywgCi0gICAgNDksIDIyOCwgMTIsIDIxMywgMTM4LCAyLCAyMjAsIDIzMywgMjI4LCAxMiwgMjIsIDIsIDc0LCAyMjgsIDEyLCAyMiwgMiwgCi0gICAgMjQxLCAxNDUsIDIyOCwgMTIsIDIyLCAyLCA3OCwgMjI4LCAxMiwgMjIsIDIsIDI1MCwgOCwgMjI4LCAxMiwgMjIsIDIsIAotICAgIDI1MSwgNjQsIDIyOCwgMTIsIDIyOSwgMjcsIDIyOCwgMTEzLCAyMjgsIDEyLCAxNDMsIDIyNSwgMTQxLCAyNDEsIDEyOSwgCi0gICAgMjI4LCAxMiwgMTQzLCAyMjUsIDE0MSwgMjA5LCA0NywgMjI4LCAxMiwgMTQzLCAyMjUsIDE0MSwgMjA5LCAyLCAyMjgsIDEyLCAKLSAgICAxNDMsIDIyNSwgMTQxLCAyNDcsIDE2LCAyMjgsIDEyLCAyNDcsIDU4LCA4MiwgMjI4LCAxMiwgMjIyLCA4MSwgMjI4LCAxMiwgCi0gICAgMTcsIDIwMiwgODQsIDIyOCwgMTIsIDE3LCAxMDUsIDIyOCwgMTIsIDE3LCAxMDgsIDIyOCwgMTIsIDE3LCAxNDcsIDIyOCwgCi0gICAgMTIsIDE3LCAxNDksIDIyOCwgMTIsIDE3LCAxNzAsIDIyOCwgMTIsIDE3LCAxOTUsIDIyOCwgMTIsIDE3LCAyMTMsIDExMSwgCi0gICAgMjI4LCAxMiwgMTcsIDE5OSwgMjI4LCAxMiwgMTcsIDIyMiwgNjMsIDIyOCwgMTIsIDIzNiwgMTM3LCAyMjEsIDE5MSwgMjI4LCAKLSAgICAxMiwgMjM2LCAxMzcsIDIyNCwgODIsIDIyOCwgMTIsIDEsIDIyOSwgMTE3LCAyMzgsIDM5LCAyMjgsIDEyLCAxLCAyMjksIAotICAgIDExNywgMjIwLCAyMzMsIDc3LCA0LCAyMjAsIDM5LCA3NywgMTMxLCAyMzcsIDIzMiwgMjAzLCAzLCAyMjQsIDE3MywgMjA4LCAKLSAgICAyNiwgNjMsIDc3LCAxMzEsIDIzNywgMjMyLCAyMDMsIDMsIDIyNCwgMTczLCAyNTUsIDIyLCAyMTUsIDIzMiwgMjQ4LCAxNjQsIAotICAgIDE5MiwgNzcsIDEzMSwgMjM3LCAyMzIsIDIwMywgMywgMjI0LCAxNzMsIDI1NSwgMjIsIDIzNywgMjMyLCAyMDgsIDYsIDE5MiwgCi0gICAgNzcsIDEzMSwgODEsIDIwMywgMywgMjI0LCAxNzMsIDIyNSwgMjIsIDE5MiwgNzcsIDEzMSwgMjQ2LCAxMiwgMjAzLCAzLCAKLSAgICAyMjQsIDE3MywgMjEzLCA5NywgMTkyLCA3NywgMTMxLCAyNDcsIDM0LCAyMDMsIDMsIDIyNCwgMTczLCAyMTgsIDE3MSwgCi0gICAgMjEzLCA4MywgMTkyLCA3NywgMTMxLCAyMDMsIDMsIDIyNCwgMTczLCAyMDgsIDYsIDIxMywgODMsIDE5MiwgNzcsIDEzMSwgCi0gICAgMjE0LCAyMDUsIDIxMywgODIsIDc3LCAxMzEsIDI0NywgMTk2LCAyMDMsIDMsIDIyNCwgMTcyLCA3NywgMTMxLCAyNDgsIDQ1LCAKLSAgICAyMTIsIDIzOCwgMjAzLCAzLCAyMjQsIDE3MiwgNzcsIDEzMSwgMjMwLCAyNDMsIDIwOCwgNSwgNzcsIDEzMSwgMjQ0LCA0NCwgCi0gICAgMjA4LCA2LCAyNDcsIDE5NSwgNzcsIDEzMSwgMjEzLCA4MiwgNzcsIDEzMSwgMjIwLCAyMzgsIDIxMywgODIsIDc3LCAxMzEsIAotICAgIDIwOCwgNiwgMjEzLCA4MiwgNzcsIDEzMSwgMjIwLCAyMzgsIDIwOCwgNiwgMjEzLCA4MiwgNzcsIDEzMSwgMjE1LCAyNTUsIAotICAgIDI0NiwgMTU2LCAyMTEsIDE4MCwgMjEzLCA4MiwgNzcsIDEzMSwgMjE2LCA2NSwgMjM4LCA5LCAyMTMsIDgyLCA3NywgMTMxLCAKLSAgICAyNDcsIDM0LCAyNTUsIDI2LCAyMTUsIDE0OSwgMjI1LCAyMSwgMTYzLCAyNDcsIDYxLCA3NywgMTMxLCAyMzcsIDIzMiwgCi0gICAgMjA4LCA1LCA3NywgMjI3LCAzNSwgMiwgMjQ2LCAxOTcsIDIxNSwgMTQ4LCA3NywgMjI3LCAzNSwgMiwgMjI3LCAxNTksIAotICAgIDIxNSwgMTQ4LCA3NywgMjUwLCA1NSwgMiwgMjEzLCA5MywgMjM4LCAxOTMsIDI1NSwgMjcsIDIxNSwgMTQ4LCA3NywgMjUwLCAKLSAgICA1NSwgMiwgMjU1LCAyNCwgMTg1LCA3NywgMjUwLCA1NSwgMiwgMjE0LCAxNzgsIDIwOCwgMCwgNzcsIDIsIDIxNiwgMTYwLCAKLSAgICAyNDMsIDEyNywgMjM4LCAxOTIsIDc3LCAyLCAyMTYsIDE2MCwgMjQzLCAxMjcsIDIzOCwgNDEsIDc3LCAyLCAyMTYsIDE2MCwgCi0gICAgMjQzLCAxMjcsIDIzNywgMjMzLCA3NywgMiwgMjE2LCAxNjAsIDIyMywgOTksIDIzOCwgMTkyLCA3NywgMiwgMjE2LCAxNjAsIAotICAgIDIyMywgOTksIDIzOCwgNDEsIDc3LCAyLCAyMTYsIDE2MCwgMjQzLCAxMjcsIDIxNiwgMTYwLCAyMjMsIDk4LCA3NywgMTcsIAotICAgIDIwMiwgODQsIDc3LCAxNywgMTA1LCA3NywgMTcsIDEwOCwgNzcsIDE3LCAxNDcsIDc3LCAxNywgMTQ5LCA3NywgMTcsIDE3MCwgCi0gICAgNzcsIDE3LCAxOTUsIDc3LCAxNywgMjEzLCAxMTEsIDc3LCAxNywgMTk5LCA3NywgMTcsIDIyMiwgNjMsIDc3LCAxNywgMTYyLCAKLSAgICAxMDUsIDc3LCAxNywgMTYyLCAxMDgsIDc3LCAxNywgMTYyLCAxNDcsIDc3LCAxNywgMTYyLCAxNDksIDc3LCAxNywgMTYyLCAKLSAgICAxNzAsIDc3LCAxNywgMTYyLCAxOTUsIDc3LCAxNywgMTYyLCAyMTMsIDExMSwgNzcsIDE3LCAxNjIsIDE5OSwgNzcsIDE3LCAKLSAgICAxNjIsIDIyMiwgNjMsIDc3LCAxNywgMTYyLCAyMDIsIDg0LCA3NywgMTMxLCAyNDcsIDE5OCwgMjE1LCAxNDgsIDc3LCAxMzEsIAotICAgIDIyMiwgMTk0LCAyNDcsIDEyNywgMjIwLCAyNDksIDIwMiwgMTksIDc3LCAxMzEsIDI0NywgMzQsIDI1NSwgMjYsIDIxNSwgCi0gICAgMTQ5LCAyNDcsIDEyOCwgMjI0LCAxMjYsIDI0NywgNjEsIDc3LCAxMzEsIDIyMiwgMTk0LCAyNDcsIDEyNywgMjEzLCA5NCwgCi0gICAgMjE1LCAxNDgsIDc3LCAxMzEsIDI0NiwgMTcxLCAyMjQsIDE3MiwgNzcsIDEzMSwgMjA4LCAyMSwgMjU1LCAyMywgNzcsIAotICAgIDEzMSwgMjM3LCAyMTUsIDIxNSwgMTQ5LCAyMzcsIDE3NCwgNzcsIDEzMSwgMjM3LCAyMTUsIDIxNSwgMTQ5LCAyMzcsIDE4MCwgCi0gICAgNzcsIDEzMSwgMjUwLCAyMjQsIDIyOSwgMTM0LCAyMzcsIDE3NCwgNzcsIDEzMSwgMjUwLCAyMjQsIDIyOSwgMTM0LCAyMzcsIAotICAgIDE4MCwgNzcsIDIsIDIwMywgNzIsIDIwOCwgNCwgNzcsIDIsIDIyNSwgMTAxLCAyMDgsIDQsIDc3LCAxLCAxNzMsIDc3LCAxLCAKLSAgICAyMjksIDE0NCwgNzcsIDEsIDIzOSwgOCwgNzcsIDEsIDIzOCwgMTE5LCA3NywgMSwgMjIyLCAyMDMsIDc3LCAxLCAyNDcsIAotICAgIDkyLCA3NywgMSwgMjQ2LCAxOTksIDc3LCAxLCAyMzAsIDE4MSwgNzcsIDEsIDIyMSwgMTEsIDc3LCAxLCAyMDcsIDI0MSwgCi0gICAgNzcsIDEsIDIwNywgMjI5LCA3NywgMSwgMjQ0LCAxMjAsIDc3LCAxLCAyNDQsIDEwNCwgNzcsIDEsIDIyMSwgMjI3LCA3NywgCi0gICAgMSwgMjEwLCAyMiwgNzcsIDEsIDIwOSwgMTA4LCA3NywgMSwgMjQ0LCAyMTIsIDc3LCAxLCAyNDQsIDEsIDc3LCAxLCAyMDEsIAotICAgIDIwMSwgNzcsIDEsIDE4NSwgNzcsIDEsIDIxOCwgMjA4LCA3NywgMSwgMjQ5LCAzMiwgNzcsIDEsIDI0OCwgOTgsIDc3LCAxLCAKLSAgICAxOTIsIDc3LCAxLCAyMDgsIDIwLCA3NywgMSwgMjA4LCAxMCwgNzcsIDEsIDI0MSwgMjU1LCA3NywgMSwgMjQxLCAyNDksIAotICAgIDc3LCAxLCAyMDQsIDExMSwgNzcsIDEsIDIwMiwgODAsIDc3LCAxLCAyMDIsIDExNiwgNzcsIDEsIDI1NSwgMjksIDc3LCAxLCAKLSAgICAxOTgsIDc3LCAxLCAyMTYsIDIyMCwgNzcsIDEsIDIyOCwgMTEzLCA3NywgMSwgMjEzLCA5MCwgNzcsIDEsIDIxMSwgMTY0LCAKLSAgICA3NywgMSwgMjE1LCAzNiwgNzcsIDEsIDE1MiwgNzcsIDEsIDYzLCA3NywgMSwgMjI4LCAyMjMsIDc3LCAxLCAyMzksIDIyOSwgCi0gICAgMjE2LCAyMjAsIDc3LCAxLCAyMjksIDQ3LCA3NywgMSwgMjE1LCAxODUsIDc3LCAyMiwgMiwgMjUyLCAyNSwgNzcsIDIyLCAyLCAKLSAgICA3NSwgNzcsIDIyLCAyLCAyMzEsIDgzLCA3NywgMjIsIDIsIDY4LCA3NywgMjIsIDIsIDIwNiwgMTc4LCA3NywgMjIsIDIsIAotICAgIDEyNSwgMTQ2LCA3NywgMjIsIDIsIDEyNSwgMjE1LCAxODYsIDc3LCAyMiwgMiwgMTI1LCAxNTksIDc3LCAyMiwgMiwgMTI1LCAKLSAgICAyMjcsIDc4LCA3NywgMjIsIDIsIDc0LCA3NywgMjIsIDIsIDI0MSwgMTYxLCA3NywgMjIsIDIsIDc4LCA3NywgMjIsIDIsIAotICAgIDIyMCwgMTgsIDc3LCAyLCAyMTUsIDIzOCwgMjExLCAxMSwgMjIyLCAyMDQsIDIxNSwgMjI3LCA3NywgMiwgMjE1LCAyMzIsIAotICAgIDI0OCwgMTYzLCA3NywgMjIsIDIsIDIxNiwgNzMsIDc1LCA3NywgMjIsIDIsIDIxNiwgNzMsIDIzMSwgODMsIDc3LCAyLCAKLSAgICAyMjAsIDI0OSwgMjAyLCAyMCwgMjIzLCAxMDcsIDI0NCwgMjEyLCA3NywgMiwgMjEyLCAyNywgMjI3LCAyMzYsIDc3LCAxMzEsIAotICAgIDIzNywgMTM5LCA3NywgMTMxLCAyMTksIDEzMiwgNzcsIDIsIDIyNywgMjM5LCAyMTUsIDE0OCwgNzcsIDIsIDIwMywgNzcsIAotICAgIDIxNSwgMTQ4LCA3NywgMiwgMjI3LCAyNDAsIDIwOCwgMjEsIDI0NywgNjEsIDc3LCAyLCAyMjUsIDI0LCAyNDcsIDYxLCA3NywgCi0gICAgMiwgMjM3LCAyMzYsIDI0NywgNjIsIDIxNiwgNjMsIDc3LCAyLCAyMzcsIDIzNiwgMjI1LCAxNCwgMjE2LCA2MywgNzcsIDIsIAotICAgIDIzMCwgMjM5LCAyMjUsIDI0LCAyNDcsIDYxLCA3NywgMjEwLCAyNTQsIDIsIDIyNywgMjQwLCAyMDgsIDIxLCAyNDcsIDYxLCAKLSAgICA3NywgMjEwLCAyNTQsIDIsIDIyNSwgMjQsIDI0NywgNjEsIDc3LCAyMTAsIDI1NCwgMiwgMjMwLCAyMzksIDIyNSwgMjQsIAotICAgIDI0NywgNjEsIDc3LCAyMTAsIDI1NCwgMSwgMTczLCA3NywgMjEwLCAyNTQsIDEsIDIyOSwgMTQ0LCA3NywgMjEwLCAyNTQsIAotICAgIDEsIDIzOSwgOCwgNzcsIDIxMCwgMjU0LCAxLCAyMzgsIDExOSwgNzcsIDIxMCwgMjU0LCAxLCAyMjIsIDIwMywgNzcsIDIxMCwgCi0gICAgMjU0LCAxLCAyNDcsIDkyLCA3NywgMjEwLCAyNTQsIDEsIDI0NiwgMTk5LCA3NywgMjEwLCAyNTQsIDEsIDIzMCwgMTgxLCAKLSAgICA3NywgMjEwLCAyNTQsIDEsIDIyMSwgMTEsIDc3LCAyMTAsIDI1NCwgMSwgMjA3LCAyNDEsIDc3LCAyMTAsIDI1NCwgMSwgCi0gICAgMjA3LCAyMjksIDc3LCAyMTAsIDI1NCwgMSwgMjQ0LCAxMjAsIDc3LCAyMTAsIDI1NCwgMSwgMjQ0LCAxMDQsIDc3LCAyMTAsIAotICAgIDI1NCwgMSwgMjIxLCAyMjcsIDc3LCAyMTAsIDI1NCwgMSwgMjEwLCAyMiwgNzcsIDIxMCwgMjU0LCAxLCAyMDksIDEwOCwgCi0gICAgNzcsIDIxMCwgMjU0LCAxLCAyNDQsIDIxMiwgNzcsIDIxMCwgMjU0LCAxLCAyNDQsIDEsIDc3LCAyMTAsIDI1NCwgMSwgMjAxLCAKLSAgICAyMDEsIDc3LCAyMTAsIDI1NCwgMSwgMTg1LCA3NywgMjEwLCAyNTQsIDEsIDIxOCwgMjA4LCA3NywgMjEwLCAyNTQsIDEsIAotICAgIDI0OSwgMzIsIDc3LCAyMTAsIDI1NCwgMSwgMjQ4LCA5OCwgNzcsIDIxMCwgMjU0LCAxLCAxOTIsIDc3LCAyMTAsIDI1NCwgMSwgCi0gICAgMjA4LCAyMCwgNzcsIDIxMCwgMjU0LCAxLCAyMDgsIDEwLCA3NywgMjEwLCAyNTQsIDEsIDI0MSwgMjU1LCA3NywgMjEwLCAKLSAgICAyNTQsIDEsIDI0MSwgMjQ5LCA3NywgMjEwLCAyNTQsIDEsIDIwNCwgMTExLCA3NywgMjEwLCAyNTQsIDEsIDIwMiwgODAsIAotICAgIDc3LCAyMTAsIDI1NCwgMSwgMjAyLCAxMTYsIDc3LCAyMTAsIDI1NCwgMSwgMjU1LCAyOSwgNzcsIDIxMCwgMjU0LCAxLCAKLSAgICAxOTgsIDc3LCAyMTAsIDI1NCwgMSwgMjE2LCAyMjAsIDc3LCAyMTAsIDI1NCwgMSwgMjI4LCAxMTMsIDc3LCAyMTAsIDI1NCwgCi0gICAgMSwgMjEzLCA5MCwgNzcsIDIxMCwgMjU0LCAxLCAyMTEsIDE2NCwgNzcsIDIxMCwgMjU0LCAxLCAyMTUsIDM2LCA3NywgMjEwLCAKLSAgICAyNTQsIDEsIDE1MiwgNzcsIDIxMCwgMjU0LCAxLCA2MywgNzcsIDIxMCwgMjU0LCAxLCAyMjgsIDIyMywgNzcsIDIxMCwgCi0gICAgMjU0LCAxLCAyMzksIDIyOSwgMjA0LCAxMTEsIDc3LCAyMTAsIDI1NCwgMSwgMjM5LCAyMjksIDE5OCwgNzcsIDIxMCwgMjU0LCAKLSAgICAxLCAyMzksIDIyOSwgMjE2LCAyMjAsIDc3LCAyMjgsIDIxMCwgMjE1LCAxNDYsIDIyOSwgMTQ0LCA3NywgMjI4LCAyMTAsIAotICAgIDIxNSwgMTQ2LCAyMjksIDE0NSwgMjQ3LCAxMjgsIDIyNCwgMTI2LCAyNDcsIDYxLCA3NywgMjQ3LCA0OSwgMiwgNzksIDI0OCwgCi0gICAgMTU1LCA3NywgMjQ3LCA0OSwgMiwgMTU3LCAyNDgsIDE1NSwgNzcsIDI0NywgNDksIDIsIDI0NywgNTAsIDIwOSwgMTg1LCAKLSAgICA3NywgMjQ3LCA0OSwgMiwgMjE0LCAyMDQsIDI1NSwgMjgsIDc3LCAxNiwgMjQyLCA1NSwgMjQ3LCAxOTMsIDc3LCAxNiwgCi0gICAgMjE2LCAxNTksIDIxNSwgMjM5LCA3NywgMTYsIDIxOSwgMTU1LCAyMzgsIDE5MSwgNzcsIDE2LCAyMTYsIDE1OSwgMjE1LCAKLSAgICAyNDAsIDIxNiwgNjUsIDIzOCwgOCwgNzcsIDE2LCAyMTgsIDE3MSwgMTg1LCA3NywgMTYsIDIyMSwgMTc1LCAyNDcsIDE5MywgCi0gICAgNzcsIDE2LCAyMjEsIDE3NSwgMjQ3LCAxOTQsIDIyMCwgMjM4LCAyNTUsIDI1LCA3NywgMTYsIDIyMSwgMTc1LCAyNDcsIAotICAgIDE5NCwgMjM3LCAyMzQsIDI1NSwgMjUsIDc3LCAxNiwgMjIxLCAxNzUsIDI0NywgMTk0LCAyNDcsIDEyOCwgMjU1LCAyNSwgCi0gICAgNzcsIDIsIDIxNiwgMTYwLCAyMjMsIDk5LCAyMTYsIDE2MCwgMjQzLCAxMjYsIDc3LCAyLCAyMTYsIDE2MCwgMjIzLCA5OSwgCi0gICAgMjM3LCAyMzMsIDc3LCAxMzEsIDI0NywgMTk3LCAyMTIsIDIzOCwgMjM4LCA4MiwgMjI0LCAxNzMsIDIxNiwgNjQsIDc3LCAKLSAgICAxMzEsIDIyNCwgODQsIDIwMywgMywgMjM4LCA4MiwgMjI0LCAxNzMsIDIxNiwgNjQsIDc3LCAxMzEsIDIyMCwgMjM4LCAyMDgsIAotICAgIDUsIDc3LCAxMzEsIDgxLCAyNDcsIDIyMCwgMjE1LCAyMjksIDIwMywgMywgMjI0LCAxNzMsIDIyNSwgMjIsIDE5MiwgNzcsIAotICAgIDEzMSwgMjQ2LCAxMiwgMjQ3LCAyMjAsIDIxNSwgMjI5LCAyMDMsIDMsIDIyNCwgMTczLCAyMTMsIDk3LCAxOTIsIDIxNiwgCi0gICAgMTUsIDIxMCwgMTc0LCA1NCwgMjI3LCAyMjEsIDIxMCwgMTc0LCA1NCwgMjE2LCAxNSwgMjEwLCAxNzQsIDIsIDMsIDI0MywgCi0gICAgODMsIDIyNywgMjIxLCAyMTAsIDE3NCwgMiwgMywgMjQzLCA4MywgNzcsIDEzMSwgMjI3LCAyMzEsIDIyNSwgMjUsIDIxNSwgCi0gICAgMTQ4LCA3NywgMTMxLCAyMDgsIDExMiwgMjI1LCAyNSwgMjE1LCAxNDgsIDY5LCAxLCAxNzMsIDY5LCAxLCAyMjksIDE0NCwgCi0gICAgNjksIDEsIDIzOSwgOCwgNjksIDEsIDIzOCwgMTE5LCA2OSwgMSwgMjIyLCAyMDMsIDY5LCAxLCAyNDcsIDkyLCA2OSwgMSwgCi0gICAgMjQ2LCAxOTksIDY5LCAxLCAyMzAsIDE4MSwgNjksIDEsIDIzMCwgMTQ5LCA2OSwgMSwgMjIxLCAxMSwgNjksIDEsIDIyMSwgCi0gICAgMTkzLCA2OSwgMSwgMjA3LCAyNDEsIDY5LCAxLCAyMDcsIDIyOSwgNjksIDEsIDI0NCwgMTIwLCA2OSwgMSwgMjQ0LCAxMDQsIAotICAgIDY5LCAxLCAyMjEsIDIyNywgNjksIDEsIDIxMCwgMjIsIDY5LCAxLCAyMDksIDEwOCwgNjksIDEsIDI0NCwgMjEyLCA2OSwgMSwgCi0gICAgMjQ0LCAxLCA2OSwgMSwgMjAxLCAyMDEsIDY5LCAxLCAxODUsIDY5LCAxLCAyMTgsIDIwOCwgNjksIDEsIDI0OSwgMzIsIDY5LCAKLSAgICAxLCAyNDgsIDk4LCA2OSwgMSwgMTkyLCA2OSwgMSwgMTk4LCA2OSwgMSwgMjE2LCAyMjAsIDY5LCAxLCAyMjgsIDExMywgNjksIAotICAgIDEsIDIwNCwgMTExLCA2OSwgMSwgMjE1LCAzNiwgNjksIDEsIDE1MiwgNjksIDEsIDIyNywgNzcsIDY5LCAxLCA2MywgNjksIAotICAgIDEsIDIxMywgNjcsIDYzLCA2OSwgMSwgNzUsIDY5LCAxLCAyMzEsIDgzLCA2OSwgMSwgNjgsIDY5LCAxLCAyMDYsIDE3OCwgCi0gICAgNjksIDEsIDc0LCA2OSwgMSwgMjI0LCA1NSwgNzQsIDY5LCAxLCA3OCwgNjksIDEsIDI1MCwgMzQsIDY5LCAyMiwgMiwgMjA5LCAKLSAgICAyMzQsIDI1MiwgMjUsIDY5LCAyMiwgMiwgMjUyLCAyNSwgNjksIDIyLCAyLCA3NSwgNjksIDIyLCAyLCAyMzEsIDgzLCA2OSwgCi0gICAgMjIsIDIsIDY4LCA2OSwgMjIsIDIsIDIwNiwgMTc4LCA2OSwgMjIsIDIsIDc0LCA2OSwgMjIsIDIsIDI1MSwgNjQsIDY5LCAKLSAgICAyMiwgMiwgMjI0LCA1NSwgMjMxLCA4MywgNjksIDIyLCAyLCAyMjQsIDU1LCA3OCwgNjksIDIyLCAyLCAxODgsIDU1LCA2OSwgCi0gICAgMiwgMjUwLCAxODAsIDY5LCAyLCA3MCwgNTYsIDY5LCAyLCAyMDUsIDE5OSwgNjksIDIsIDIwNSwgMjA0LCA2OSwgMiwgMjUwLCAKLSAgICA3OSwgNjksIDEwOSwgMiwgMTc0LCAxOTgsIDY5LCAxMDksIDIsIDE3NCwgMjE2LCAyMjAsIDY5LCAxMDksIDIsIDE3NCwgCi0gICAgMjA0LCAxMTEsIDY5LCAxMDksIDIsIDE3NCwgMTUyLCA2OSwgMSwgMjM3LCAyNDksIDIxNSwgMzYsIDY5LCAxNywgMjAyLCAKLSAgICA4NCwgNjksIDE3LCAxMDUsIDY5LCAxNywgMTA4LCA2OSwgMTcsIDE0NywgNjksIDE3LCAxNDksIDY5LCAxNywgMTcwLCA2OSwgCi0gICAgMTcsIDE5NSwgNjksIDE3LCAyMTMsIDExMSwgNjksIDE3LCAxOTksIDY5LCAxNywgMjIyLCA2MywgNjksIDIsIDIyNywgODYsIAotICAgIDIxNCwgMTY3LCA2OSwgMiwgMjE0LCAxNjcsIDY5LCAxNiwgMjI3LCA0NCwgNjksIDE2LCAyNDUsIDIyNywgNjksIDE2LCAKLSAgICAyNTEsIDg1LCA2OSwgMTYsIDIzOCwgMTc0LCA2OSwgMSwgMjEzLCA5MCwgNjksIDEsIDIxMSwgMTY0LCA2OSwgMSwgMTI1LCAKLSAgICAxNDYsIDY5LCAxLCAxMjUsIDIxNSwgMTg2LCA2OSwgMSwgMTI1LCAxNTksIDY5LCAxLCAxMjUsIDIyNywgNzgsIDY5LCAyMiwgCi0gICAgMiwgMTI1LCAxNDYsIDY5LCAyMiwgMiwgMTI1LCAyMTUsIDE4NiwgNjksIDIyLCAyLCAxMjUsIDE1OSwgNjksIDIyLCAyLCAKLSAgICAxMjUsIDIyNywgNzgsIDY5LCAxLCAyMjQsIDU1LCAyMjIsIDIwMywgNjksIDEsIDIyNCwgNTUsIDIzMCwgMTQ5LCA2OSwgMSwgCi0gICAgMjI0LCA1NSwgMjQ4LCAxOTgsIDY5LCAxLCAyMjQsIDU1LCAyNDgsIDE5MywgNjksIDEwOSwgMiwgMjI0LCA1NSwgMTc0LCAKLSAgICAyMDEsIDIwMSwgNjksIDEwOSwgMiwgMjI0LCA1NSwgMTc0LCAxOTIsIDY5LCAxMDksIDIsIDIyNCwgNTUsIDE3NCwgMjI4LCAKLSAgICAxMTMsIDY5LCAxLCAyMTMsIDk2LCAyMjksIDIzNywgMjEzLCA5MCwgNjksIDIyLCAyLCAyMTMsIDk2LCAyMjksIDIzNywgCi0gICAgMjQwLCAyMzgsIDY5LCAxNDMsIDEzMSwgMjEzLCA5NiwgMjI5LCAyMzcsIDIzNywgNzksIDY5LCAxNDMsIDEzMSwgMjEzLCAKLSAgICA5NiwgMjI5LCAyMzcsIDIyOSwgMjAyLCAyMTgsIDE4MCwgNjksIDEsIDIwNCwgNDQsIDIxNywgMTQ2LCAyMjksIDIzNywgCi0gICAgMjA5LCAxMDgsIDY5LCAxLCAyMDQsIDQ0LCAyMTcsIDE0NiwgMjI5LCAyMzcsIDIxNywgMTUyLCA2OSwgMjIsIDIsIDIwNCwgCi0gICAgNDQsIDIxNywgMTQ2LCAyMjksIDIzNywgMjQwLCAyMzgsIDY5LCAyMiwgMiwgMjA0LCA0NCwgMjE3LCAxNDYsIDIyOSwgMjM3LCAKLSAgICAyMDcsIDI0LCA2OSwgMiwgMjA0LCA0NCwgMjE3LCAxNDYsIDIyOSwgMjM3LCAyMDgsIDE2MCwgNjksIDIsIDIwNCwgNDQsIAotICAgIDIxNywgMTQ2LCAyMjksIDIzNywgMjA4LCAxNTksIDY5LCAyLCAyMDQsIDQ0LCAyMTcsIDE0NiwgMjI5LCAyMzcsIDIwOCwgCi0gICAgMTU4LCA2OSwgMiwgMjA0LCA0NCwgMjE3LCAxNDYsIDIyOSwgMjM3LCAyMDgsIDE1NywgNjksIDIsIDIwNCwgNDQsIDIxNywgCi0gICAgMTQ2LCAyMjksIDIzNywgMjA4LCAxNTYsIDY5LCAxLCAyNDEsIDE3NCwgMjE3LCAxNDYsIDIyOSwgMjM3LCAyMjEsIDIyNywgCi0gICAgNjksIDEsIDI0MSwgMTc0LCAyMTcsIDE0NiwgMjI5LCAyMzcsIDIwMiwgMTc2LCA2OSwgMSwgMjQxLCAxNzQsIDIxNywgMTQ2LCAKLSAgICAyMjksIDIzNywgMjM4LCA4NCwgNjksIDIyLCAyLCAyMzgsIDE4NiwgMjI5LCAyMzcsIDc1LCA2OSwgMjIsIDIsIDIyOSwgCi0gICAgMjA3LCAyMjAsIDczLCA2OSwgMjIsIDIsIDIyOSwgMjA3LCA2OCwgNjksIDIyLCAyLCAyMjksIDIwNywgMjQxLCAxNjEsIDY5LCAKLSAgICAxLCAyMTMsIDY3LCAxNzMsIDY5LCAxLCAyMTMsIDY3LCAyMjksIDE0NCwgNjksIDEsIDIxMywgNjcsIDIzOSwgOCwgNjksIDEsIAotICAgIDIxMywgNjcsIDI0NywgOTIsIDY5LCAxLCAyMTMsIDY3LCAyMDIsIDExNiwgNjksIDEsIDIxMywgNjcsIDIyMSwgMTEsIDY5LCAKLSAgICAxLCAyMTMsIDY3LCAyNDQsIDIxMiwgNjksIDEsIDIxMywgNjcsIDIwMSwgMjAxLCA2OSwgMSwgMjEzLCA2NywgMjE4LCAyMDgsIAotICAgIDY5LCAxLCAyMTMsIDY3LCAyNDAsIDEwOCwgNjksIDEsIDIxMywgNjcsIDI0OSwgMzIsIDY5LCAxLCAyMTMsIDY3LCAyMDksIAotICAgIDEwOCwgNjksIDEsIDIxMywgNjcsIDE1MiwgNjksIDEwOSwgMiwgMjEzLCA2NywgMTc0LCAyMDQsIDExMSwgNjksIDIyLCAyLCAKLSAgICAyMTMsIDY3LCAyNTIsIDI1LCA2OSwgMjIsIDIsIDIxMywgNjcsIDc0LCA2OSwgMjIsIDIsIDIxMywgNjcsIDE4OCwgNTUsIAotICAgIDY5LCAyMiwgMiwgMjEzLCA2NywgNDYsIDIwMywgMTI0LCA2OSwgMiwgMjEzLCA2NywgMjA4LCAxNTksIDY5LCAyLCAyMTMsIAotICAgIDY3LCAyMDgsIDE1OCwgNjksIDIsIDIxMywgNjcsIDIwOCwgMTU2LCA2OSwgMiwgMjEzLCA2NywgMjA4LCAxNTUsIDY5LCAyLCAKLSAgICAyMTMsIDY3LCAyNDUsIDE1NiwgMjA4LCAxNTksIDY5LCAyLCAyMTMsIDY3LCAyNDUsIDE1NiwgMjA4LCAxNTgsIDY5LCAyLCAKLSAgICAyMTMsIDY3LCAyNDUsIDE1NiwgMjQxLCA5NSwgMjA4LCAxNjEsIDY5LCAxLCAyMTUsIDEzMCwgMjE5LCAxMzksIDI0MCwgCi0gICAgMTA4LCA2OSwgMiwgMjE1LCAxMzAsIDIxOSwgMTM5LCAyMDgsIDE1NiwgNjksIDIxMywgNjcsIDE3LCAyMDIsIDg0LCA2OSwgCi0gICAgMjEzLCA2NywgMTcsIDEwNSwgNjksIDIxMywgNjcsIDE3LCAxMDgsIDY5LCAyMTMsIDY3LCAxNywgMTQ3LCA2OSwgMjEzLCAKLSAgICA2NywgMTcsIDE0OSwgNjksIDIxMywgNjcsIDE3LCAxNzAsIDY5LCAyMTMsIDY3LCAxNywgMTk1LCA2OSwgMjEzLCA2NywgMTcsIAotICAgIDIxMywgMTExLCA2OSwgMjEzLCA2NywgMTcsIDE5OSwgNjksIDIxMywgNjcsIDE3LCAyMjIsIDYzLCA2OSwgMiwgMjI5LCAKLSAgICAxMzcsIDIwOCwgMTYwLCA2OSwgMiwgMjI5LCAxMzcsIDIwOCwgMTU4LCA2OSwgMjIsIDIsIDI1MSwgNTEsIDYzLCA2OSwgMjIsIAotICAgIDIsIDI1MSwgNTEsIDI1MSwgNjQsIDY5LCAxNiwgMjEzLCA2NywgMTA1LCA2OSwgMTYsIDIxMywgNjcsIDI0MCwgMjExLCAKLSAgICAxMTQsIDYsIDEsIDI1MCwgMjMxLCAxMTQsIDYsIDEsIDI0OCwgMjQyLCAxMTQsIDYsIDEsIDIzOCwgMjM0LCAxMTQsIDYsIDEsIAotICAgIDI0MywgOTMsIDExNCwgNiwgMSwgMjQxLCA5MiwgMTE0LCA2LCAxLCAyMDUsIDIxMywgMTE0LCA2LCAxLCAyMDIsIDg3LCAKLSAgICAxMTQsIDYsIDEsIDIwOSwgMjMwLCAxMTQsIDYsIDEsIDIzMSwgNDksIDExNCwgNiwgMSwgMjMwLCA0LCAxMTQsIDYsIDEsIAotICAgIDIyOCwgMiwgMTE0LCA2LCAxLCAyMjUsIDEyMiwgMTE0LCA2LCAxLCAyMjMsIDc0LCAxMTQsIDYsIDEsIDIyMCwgMzEsIDExNCwgCi0gICAgNiwgMSwgMjE5LCA5MSwgMTE0LCA2LCAxLCAyMDIsIDc2LCAxMTQsIDYsIDEsIDIxNiwgMjAyLCAxMTQsIDYsIDEsIDIxNCwgCi0gICAgMjQzLCAxMTQsIDYsIDEsIDIwOSwgMjE4LCAxMTQsIDYsIDEsIDIwNiwgMjU1LCAxMTQsIDYsIDEsIDIxOCwgMjAwLCAxMTQsIAotICAgIDYsIDEsIDIyOSwgMTMyLCAxMTQsIDYsIDEsIDIzOCwgMTEwLCAxMTQsIDYsIDEsIDIxNywgMTExLCAxMTQsIDYsIDEsIDIxMiwgCi0gICAgMjU1LCAxMTQsIDYsIDEsIDI0NiwgMTI5LCAxMTQsIDYsIDEsIDI0NywgNjEsIDExNCwgNiwgMSwgMjMwLCAxMzMsIDExNCwgCi0gICAgNiwgMSwgMjQ2LCA2OCwgMTE0LCA2LCAxLCAyNDYsIDE4MywgMTE0LCA2LCAxLCAyMDMsIDE4MCwgMTE0LCA2LCAxLCAyMzAsIAotICAgIDE0NiwgMTE0LCA2LCAxLCAyMzcsIDE1NCwgMTE0LCA2LCAxLCAyMzcsIDY3LCAxMTQsIDYsIDEsIDIzNiwgMjU0LCAxMTQsIAotICAgIDYsIDEsIDIwNCwgNjIsIDExNCwgNiwgMSwgMjM3LCA5MiwgMTE0LCA2LCAxLCAyMzYsIDEzMiwgMTE0LCA2LCAxLCAyMDIsIAotICAgIDI0OSwgMTE0LCA2LCAxLCAyNTEsIDk4LCAxMTQsIDEsIDI1MCwgMjMxLCAxMTQsIDEsIDI0OCwgMjQyLCAxMTQsIDEsIDIzOCwgCi0gICAgMjM0LCAxMTQsIDEsIDI0MywgOTMsIDExNCwgMSwgMjQxLCA5MiwgMTE0LCAxLCAyMDUsIDIxMywgMTE0LCAxLCAyMDIsIDg3LCAKLSAgICAxMTQsIDEsIDIwOSwgMjMwLCAxMTQsIDEsIDIzMSwgNDksIDExNCwgMSwgMjMwLCA0LCAxMTQsIDEsIDIyOCwgMiwgMTE0LCAKLSAgICAxLCAyMjUsIDEyMiwgMTE0LCAxLCAyMjMsIDc0LCAxMTQsIDEsIDIyMCwgMzEsIDExNCwgMSwgMjE5LCA5MSwgMTE0LCAxLCAKLSAgICAyMDIsIDc2LCAxMTQsIDEsIDIxNiwgMjAyLCAxMTQsIDEsIDIxNCwgMjQzLCAxMTQsIDEsIDIwOSwgMjE4LCAxMTQsIDEsIAotICAgIDIwNiwgMjU1LCAxMTQsIDEsIDIxOCwgMjAwLCAxMTQsIDEsIDIyOSwgMTMyLCAxMTQsIDEsIDIzOCwgMTEwLCAxMTQsIDEsIAotICAgIDIxNywgMTExLCAxMTQsIDEsIDIxMiwgMjU1LCAxMTQsIDEsIDI0NiwgMTI5LCAxMTQsIDEsIDI0NywgNjEsIDExNCwgMSwgCi0gICAgMjMwLCAxMzMsIDExNCwgMSwgMjQ2LCA2OCwgMTE0LCAxLCAyNDYsIDE4MywgMTE0LCAxLCAyMDMsIDE4MCwgMTE0LCAxLCAKLSAgICAyMzAsIDE0NiwgMTE0LCAxLCAyMzcsIDE1NCwgMTE0LCAxLCAyMzcsIDY3LCAxMTQsIDEsIDIzNiwgMjU0LCAxMTQsIDEsIAotICAgIDIwNCwgNjIsIDExNCwgMSwgMjM3LCA5MiwgMTE0LCAxLCAyMzYsIDEzMiwgMTE0LCAxLCAyNDAsIDI2LCAxMTQsIDEsIDIwMiwgCi0gICAgMjQ5LCAxMTQsIDEsIDI0MSwgMTEwLCAxMTQsIDEsIDIwNywgMTc0LCAyMzgsIDIzNCwgMTE0LCAxLCAyNTEsIDU5LCAxMTQsIAotICAgIDIxOSwgODksIDIxMywgMTMwLCA2NSwgMSwgMTE0LCAyMjMsIDc0LCAxMTQsIDEsIDI1MSwgOTgsIDExNCwgMSwgMjM3LCA5MSwgCi0gICAgNTQsIDExNCwgMSwgMjI4LCAxMDQsIDU0LCAyOCwgMTIzLCAyMjksIDU5LCAyOCwgMTIzLCAyMTEsIDE1NiwgMjgsIDEyMywgCi0gICAgMjIyLCA5MywgMjgsIDEyMywgMjA4LCAyNDAsIDI4LCAxMjMsIDIxMSwgMTQ1LCAyOCwgMTIzLCAyMTYsIDQ3LCAyOCwgMTIzLCAKLSAgICAyMjQsIDE0MSwgMjgsIDEyMywgMjE4LCAxNTMsIDI4LCAxMjMsIDIxMSwgMTUzLCAyOCwgMTIzLCAyMTIsIDExMSwgMjgsIAotICAgIDEyMywgMjExLCAxNTAsIDI4LCAxMjMsIDIzMSwgMTA2LCAyOCwgMTIzLCAyNDYsIDc0LCAyOCwgMTIzLCAyMTEsIDE2MCwgCi0gICAgMjgsIDEyMywgMjQ2LCAxMzgsIDI4LCAxMjMsIDIyOSwgMTIwLCAyOCwgMTIzLCAyMDksIDY2LCAyOCwgMTIzLCAyMTgsIAotICAgIDE5MCwgMjgsIDEyMywgMjM2LCAyNTEsIDI4LCAxMjMsIDIyMiwgODksIDI4LCAxMjMsIDIxMSwgMTU0LCAyOCwgMTIzLCAKLSAgICAyMjIsIDgzLCAyOCwgMTIzLCAyMjIsIDg3LCAyOCwgMTIzLCAyMDgsIDIzNywgMjgsIDEyMywgMjE2LCAzNSwgMjgsIDEyMywgCi0gICAgMjExLCAxNTIsIDI4LCAxMjMsIDIxNiwgNDUsIDI4LCAxMjMsIDIyOSwgMjQzLCAyOCwgMTIzLCAyMjQsIDEzNCwgMjgsIAotICAgIDEyMywgMjI5LCAyNDYsIDI4LCAxMjMsIDIxOCwgMTQ4LCAyOCwgMTIzLCAyMTgsIDE0NiwgMjgsIDEyMywgMjE4LCAxMzQsIAotICAgIDI4LCAxMjMsIDIxOCwgMTQyLCAyOCwgMTIzLCAyMTgsIDE0MCwgMjgsIDEyMywgMjE4LCAxMzcsIDI4LCAxMjMsIDIxOCwgCi0gICAgMTM5LCAyOCwgMTIzLCAyMTgsIDEzNiwgMjgsIDEyMywgMjE4LCAxNDEsIDI4LCAxMjMsIDIxOCwgMTUxLCAyOCwgMTIzLCAKLSAgICAyMTgsIDE1MiwgMjgsIDEyMywgMjE4LCAxMzUsIDI4LCAxMjMsIDIxOCwgMTQ1LCAyOCwgMTIzLCAyMjksIDI0NCwgMjgsIAotICAgIDEyMywgMjI5LCAyNDIsIDI4LCAxMjMsIDIxMiwgMTA0LCAyOCwgMTIzLCAyMTIsIDEwMiwgMjgsIDEyMywgMjEyLCA5NCwgCi0gICAgMjgsIDEyMywgMjEyLCA5NywgMjgsIDEyMywgMjEyLCAxMDMsIDI4LCAxMjMsIDIxMiwgOTksIDI4LCAxMjMsIDIxMiwgOTgsIAotICAgIDI4LCAxMjMsIDIxMiwgOTYsIDI4LCAxMjMsIDIxMiwgMTA3LCAyOCwgMTIzLCAyMTIsIDEwOSwgMjgsIDEyMywgMjEyLCAKLSAgICAxMTAsIDI4LCAxMjMsIDIxMiwgMTA1LCAyOCwgMTIzLCAyMTIsIDk1LCAyOCwgMTIzLCAyMTIsIDEwMCwgMjgsIDEyMywgCi0gICAgMjEyLCAxMDgsIDI4LCAxMjMsIDI0NiwgMTIwLCAyOCwgMTIzLCAyNDYsIDExOCwgMjgsIDEyMywgMjQ2LCAyMTAsIDI4LCAKLSAgICAxMjMsIDI0NiwgMjA4LCAyOCwgMTIzLCAyMTksIDEwNywgMjgsIDEyMywgMjMxLCAxMDEsIDI4LCAxMjMsIDIzMSwgOTIsIAotICAgIDI4LCAxMjMsIDIzMSwgMTAwLCAyOCwgMTIzLCAyMzEsIDk3LCAyOCwgMTIzLCAyMzEsIDk1LCAyOCwgMTIzLCAyMzEsIDk5LCAKLSAgICAyOCwgMTIzLCAyMTEsIDE1NywgMjgsIDEyMywgMjMxLCAxMDQsIDI4LCAxMjMsIDIzMSwgMTA1LCAyOCwgMTIzLCAyMzEsIAotICAgIDkzLCAyOCwgMTIzLCAyMzEsIDk4LCAyOCwgMTIzLCAyMDMsIDI5LCAyOCwgMTIzLCAyNDYsIDczLCAyOCwgMTIzLCAyNDYsIAotICAgIDEyMSwgMjgsIDEyMywgMjQ2LCAxMTksIDI4LCAxMjMsIDI0NiwgMjExLCAyOCwgMTIzLCAyNDYsIDIwOSwgMjgsIDEyMywgCi0gICAgMjQ2LCAxMzYsIDI4LCAxMjMsIDI0NiwgMTM3LCAyOCwgMTIzLCAyNDYsIDEyMiwgMjgsIDEyMywgMjQ2LCAyMTIsIDI4LCAKLSAgICAxMjMsIDIxOCwgMTg4LCAyOCwgMTIzLCAyMjksIDI0NSwgMjgsIDEyMywgMjExLCAxNTgsIDI4LCAxMjMsIDIwMywgMzUsIAotICAgIDI4LCAxMjMsIDIyOSwgNTAsIDI4LCAxMjMsIDIyMiwgODUsIDI4LCAxMjMsIDIyMiwgOTEsIDI4LCAxMjMsIDIyMiwgOTAsIAotICAgIDI4LCAxMjMsIDIwOCwgMjM0LCAyOCwgMTIzLCAyNDAsIDcsIDI4LCAxNzYsIDI0MCwgNywgMjgsIDE3NiwgNjMsIDI4LCAKLSAgICAxNzYsIDI1MSwgMTA5LCAyOCwgMTc2LCAxOTgsIDI4LCAxNzYsIDIwMywgOTksIDI4LCAxNzYsIDI0MSwgNTUsIDI4LCAxNzYsIAotICAgIDc0LCAyOCwgMTc2LCAyMDMsIDM5LCAyOCwgMTc2LCAyMDMsIDUyLCAyOCwgMTc2LCA3OCwgMjgsIDE3NiwgMjA0LCAxMTEsIAotICAgIDI4LCAxNzYsIDIwNCwgMTA3LCAyOCwgMTc2LCAyMjAsIDczLCAyOCwgMTc2LCAyMDIsIDI0NywgMjgsIDE3NiwgNjgsIDI4LCAKLSAgICAxNzYsIDIwNCwgNDgsIDI4LCAxNzYsIDIwNCwgNjIsIDI4LCAxNzYsIDIwNCwgMzAsIDI4LCAxNzYsIDIwMiwgMjEzLCAyOCwgCi0gICAgMTc2LCAyNDAsIDIzOCwgMjgsIDE3NiwgMjAzLCAxMSwgMjgsIDE3NiwgNzUsIDI4LCAxNzYsIDI1NSwgMjAsIDI4LCAxNzYsIAotICAgIDI1NSwgMTksIDI4LCAxNzYsIDIwMywgMTEzLCAyOCwgMTc2LCAyMDMsIDExMSwgMjgsIDE3NiwgMjQxLCA1MywgMjgsIDE3NiwgCi0gICAgMjQxLCA1MiwgMjgsIDE3NiwgMjQxLCA1NCwgMjgsIDE3NiwgMjAzLCAzOCwgMjgsIDE3NiwgMjAzLCAzNywgMjgsIDE3NiwgCi0gICAgMjIwLCAxODEsIDI4LCAxNzYsIDIyMCwgMTgyLCAyOCwgMTc2LCAyMjAsIDE3NSwgMjgsIDE3NiwgMjIwLCAxODAsIDI4LCAKLSAgICAxNzYsIDIyMCwgMTc4LCAyOCwgMTc2LCAyMDIsIDI0MSwgMjgsIDE3NiwgMjAyLCAyNDAsIDI4LCAxNzYsIDIwMiwgMjM5LCAKLSAgICAyOCwgMTc2LCAyMDIsIDI0MiwgMjgsIDE3NiwgMjAyLCAyNDMsIDI4LCAxNzYsIDIwNywgOTcsIDI4LCAxNzYsIDIwNywgOTYsIAotICAgIDI4LCAxNzYsIDIwNywgOTQsIDI4LCAxNzYsIDIwNywgOTAsIDI4LCAxNzYsIDIwNywgOTEsIDI4LCAxNzYsIDIwMiwgMjEyLCAKLSAgICAyOCwgMTc2LCAyMDIsIDIwOSwgMjgsIDE3NiwgMjAyLCAyMTAsIDI4LCAxNzYsIDIwMiwgMjA0LCAyOCwgMTc2LCAyMDIsIAotICAgIDIwNSwgMjgsIDE3NiwgMjAyLCAyMDYsIDI4LCAxNzYsIDIwMiwgMjA4LCAyOCwgMTc2LCAyNDAsIDIzMiwgMjgsIDE3NiwgCi0gICAgMjQwLCAyMzQsIDI4LCAxNzYsIDIwMywgMTAsIDI4LCAxNzYsIDIzNSwgMjA1LCAyOCwgMTc2LCAyMzUsIDE5NywgMjgsIAotICAgIDE3NiwgMjM1LCAyMDAsIDI4LCAxNzYsIDIzNSwgMTk4LCAyOCwgMTc2LCAyMzUsIDIwMiwgMjgsIDE3NiwgMjM1LCAyMDQsIAotICAgIDI4LCAxNzYsIDI1MCwgMTM3LCAyOCwgMTc2LCAyNTAsIDEzNCwgMjgsIDE3NiwgMjUwLCAxMzIsIDI4LCAxNzYsIDI1MCwgCi0gICAgMTMzLCAyOCwgMTc2LCAyMTEsIDE2MSwgMjgsIDE3NiwgMjU1LCAyMSwgMjgsIDE3NiwgMjAzLCAxMTIsIDI4LCAxNzYsIAotICAgIDIwMywgMzYsIDI4LCAxNzYsIDIyMCwgMTc3LCAyOCwgMTc2LCAyMjAsIDE3NiwgMjgsIDEwNywgMjI5LCA1OSwgMjgsIDEwNywgCi0gICAgMjExLCAxNTYsIDI4LCAxMDcsIDIyOSwgNTIsIDI4LCAxMDcsIDIyMiwgOTMsIDI4LCAxMDcsIDIyMiwgOTEsIDI4LCAxMDcsIAotICAgIDIyMiwgOTAsIDI4LCAxMDcsIDIwOCwgMjQwLCAyOCwgMTA3LCAyMTYsIDQ3LCAyOCwgMTA3LCAyMTYsIDQyLCAyOCwgMTA3LCAKLSAgICAyMTYsIDM5LCAyOCwgMTA3LCAyMTYsIDMyLCAyOCwgMTA3LCAyMTYsIDI3LCAyOCwgMTA3LCAyMTYsIDIyLCAyOCwgMTA3LCAKLSAgICAyMTYsIDMzLCAyOCwgMTA3LCAyMTYsIDQ1LCAyOCwgMTA3LCAyMjQsIDE0MSwgMjgsIDEwNywgMjE4LCAxNTMsIDI4LCAxMDcsIAotICAgIDIxOCwgMTQyLCAyOCwgMTA3LCAyMTIsIDExMSwgMjgsIDEwNywgMjExLCAxNTAsIDI4LCAxMDcsIDIzMSwgMTA2LCAyOCwgCi0gICAgMTA3LCAyNDYsIDc0LCAyOCwgMTA3LCAyNDYsIDEzOCwgMjgsIDEwNywgMjI5LCAxMjAsIDI4LCAxMDcsIDIwOSwgNjYsIDI4LCAKLSAgICAxMDcsIDIxOCwgMTkwLCAyOCwgMTA3LCAyMzYsIDI1MSwgMjgsIDEwNywgMjI5LCA1MywgMjgsIDEwNywgMjI5LCA1MSwgMjgsIAotICAgIDEwNywgMjIyLCA4OSwgMjgsIDEwNywgMjIyLCA4MywgMjgsIDEwNywgMjIyLCA4NSwgMjgsIDEwNywgMjIyLCA4OCwgMjgsIAotICAgIDEwNywgMjIyLCA4NCwgMjgsIDEwNywgMjA4LCAyMzcsIDI4LCAxMDcsIDIwOCwgMjM0LCAyOCwgMTA3LCAyMTYsIDQwLCAyOCwgCi0gICAgMTA3LCAyMTYsIDM1LCAyOCwgMTA3LCAyMTYsIDIxLCAyOCwgMTA3LCAyMTYsIDIwLCAyOCwgMTA3LCAyMTEsIDE1MiwgMjgsIAotICAgIDEwNywgMjE2LCAzNywgMjgsIDEwNywgMjE2LCAzNiwgMjgsIDEwNywgMjE2LCAyOSwgMjgsIDEwNywgMjE2LCAzMSwgMjgsIAotICAgIDEwNywgMjE2LCA0NCwgMjgsIDEwNywgMjE2LCAyNCwgMjgsIDEwNywgMjE2LCAzNCwgMjgsIDEwNywgMjE2LCA0MywgMjgsIAotICAgIDEwNywgMjE2LCAxOSwgMjgsIDEwNywgMjI0LCAxMzcsIDI4LCAxMDcsIDIyNCwgMTMyLCAyOCwgMTA3LCAyMjQsIDEzNCwgCi0gICAgMjgsIDEwNywgMjI0LCAxMzEsIDI4LCAxMDcsIDIyNCwgMTI5LCAyOCwgMTA3LCAyMjQsIDEzNSwgMjgsIDEwNywgMjI0LCAKLSAgICAxNDAsIDI4LCAxMDcsIDIyNCwgMTM4LCAyOCwgMTA3LCAyMjksIDI0NiwgMjgsIDEwNywgMjE4LCAxNDQsIDI4LCAxMDcsIAotICAgIDIxOCwgMTQ1LCAyOCwgMTA3LCAyMTgsIDE1MCwgMjgsIDEwNywgMjI5LCAyNDQsIDI4LCAxMDcsIDIxMiwgMTA0LCAyOCwgCi0gICAgMTA3LCAyMTIsIDk0LCAyOCwgMTA3LCAyMTIsIDk3LCAyOCwgMTA3LCAyMTIsIDk5LCAyOCwgMTA3LCAyMTksIDEwNywgMjgsIAotICAgIDEwNywgMjMxLCAxMDEsIDI4LCAxMDcsIDIzMSwgOTQsIDI4LCAxMDcsIDIxMSwgMTU3LCAyOCwgMTA3LCAyMzEsIDEwMiwgCi0gICAgMjgsIDEwNywgMjAzLCAyOSwgMjgsIDEwNywgMjAzLCAyNSwgMjgsIDEwNywgMjAzLCAyNiwgMjgsIDEwNywgMjE4LCAxODgsIAotICAgIDI4LCAxMDcsIDIyOSwgMjQ1LCAyOCwgMTA3LCAyMzYsIDI0OSwgMjgsIDEwNywgMjM2LCAyNDcsIDI4LCAxMDcsIDIzNiwgCi0gICAgMjUwLCAyOCwgMTA3LCAyMzYsIDI0OCwgMjgsIDEwNywgMjAzLCAzNSwgMjgsIDEwNywgMjI5LCA1NSwgMjgsIDEwNywgMjI5LCAKLSAgICA1NCwgMjgsIDEwNywgMjI5LCA1OCwgMjgsIDEwNywgMjI5LCA1NiwgMjgsIDEwNywgMjI5LCA1NywgMjgsIDEwNywgMjExLCAKLSAgICAxNTQsIDMzLCA0LCAxNTIsIDMzLCA0LCAyMzYsIDI2LCAzMywgNCwgMjM3LCAzLCAzMywgNCwgMjM3LCAxNTcsIDMzLCA0LCAKLSAgICAyMzcsIDQ4LCAzMywgNCwgMjM3LCA2NywgMzMsIDQsIDIzNiwgMTM2LCAzMywgNCwgMjM2LCAxMzUsIDMzLCA0LCAyMjgsIAotICAgIDExMywgMzMsIDQsIDIyNiwgMjM5LCAzMywgNCwgMjI3LCAxNDgsIDMzLCA0LCAyMjgsIDExMiwgMzMsIDQsIDIyNywgMjI2LCAKLSAgICAzMywgNCwgMjI3LCAyMzQsIDMzLCA0LCAyMjcsIDQ5LCAzMywgNCwgMjI2LCAyMDcsIDMzLCA0LCAyMzcsIDEyLCAzMywgNCwgCi0gICAgMjM3LCA2LCAzMywgNCwgMjM3LCA4LCAzMywgNCwgMjM3LCAxMSwgMzMsIDQsIDIzNywgOSwgMzMsIDQsIDIzNywgMTAsIDMzLCAKLSAgICA0LCAyMzcsIDcsIDMzLCA0LCAyMzcsIDUsIDMzLCA0LCAxOTIsIDMzLCA0LCAyMjMsIDI0NiwgMzMsIDQsIDIyNCwgMTU1LCAKLSAgICAzMywgNCwgMjI1LCAxNzUsIDMzLCA0LCAyMjUsIDgsIDMzLCA0LCAyMjUsIDIwLCAzMywgNCwgMjI0LCA4MiwgMzMsIDQsIAotICAgIDIyMywgMTgwLCAzMywgNCwgMjEwLCA4MCwgMzMsIDQsIDIxMCwgNzQsIDMzLCA0LCAyMTAsIDc2LCAzMywgNCwgMjEwLCA3OSwgCi0gICAgMzMsIDQsIDIxMCwgNzcsIDMzLCA0LCAyMTAsIDc4LCAzMywgNCwgMjEwLCA3NSwgMzMsIDQsIDIxMCwgNzMsIDMzLCA0LCAKLSAgICAyMTYsIDIyMCwgMzMsIDQsIDIxNSwgMTQ1LCAzMywgNCwgMjE2LCA1NywgMzMsIDQsIDIxNiwgMjE2LCAzMywgNCwgMjE2LCAKLSAgICAxMzUsIDMzLCA0LCAyMTYsIDE1OCwgMzMsIDQsIDIxNSwgMjI3LCAzMywgNCwgMjE1LCAxMTEsIDMzLCA0LCAyMTUsIDM2LCAKLSAgICAzMywgNCwgMjExLCAxMCwgMzMsIDQsIDIxMiwgMTYyLCAzMywgNCwgMjE1LCAzMywgMzMsIDQsIDIxNCwgMTY1LCAzMywgNCwgCi0gICAgMjE0LCAxNzcsIDMzLCA0LCAyMTIsIDEzLCAzMywgNCwgMjEwLCAxNzIsIDMzLCA0LCAyMTMsIDkwLCAzMywgNCwgMjEyLCAKLSAgICAxOTksIDMzLCA0LCAyMTMsIDExLCAzMywgNCwgMjEzLCA4NSwgMzMsIDQsIDIxMywgNDEsIDMzLCA0LCAyMTMsIDQzLCAzMywgCi0gICAgNCwgMjEyLCAyNDIsIDMzLCA0LCAyMTIsIDE4MCwgMzMsIDQsIDIxNywgMTI2LCAzMywgNCwgMjE3LCA2NSwgMzMsIDQsIAotICAgIDIxNywgODgsIDMzLCA0LCAyMTcsIDEyNSwgMzMsIDQsIDIxNywgMTA1LCAzMywgNCwgMjE3LCAxMDYsIDMzLCA0LCAyMTcsIAotICAgIDc3LCAzMywgNCwgMjE3LCA3NiwgMzMsIDQsIDIxNywgMTksIDMzLCA0LCAyMTcsIDE1LCAzMywgNCwgMjE3LCAxOCwgMzMsIAotICAgIDQsIDIxNywgMTYsIDMzLCA0LCAyMTcsIDE3LCAzMywgNCwgMjE3LCAxMDIsIDMzLCA0LCAyMTcsIDk0LCAzMywgNCwgMjE3LCAKLSAgICA5NywgMzMsIDQsIDIxNywgMTAxLCAzMywgNCwgMjE3LCA5OCwgMzMsIDQsIDIxNywgOTksIDMzLCA0LCAyMTcsIDk2LCAzMywgCi0gICAgNCwgMjE3LCA5MywgMzMsIDQsIDIxNywgODksIDMzLCA0LCAyMTcsIDkyLCAzMywgNCwgMjE3LCA5MCwgMzMsIDQsIDIxNywgCi0gICAgOTEsIDMzLCA0LCAyNDksIDMyLCAzMywgNCwgMjQ3LCAxOTMsIDMzLCA0LCAyNDgsIDg2LCAzMywgNCwgMjQ5LCAzMCwgMzMsIAotICAgIDQsIDI0OCwgMTUwLCAzMywgNCwgMjQ4LCAxNjIsIDMzLCA0LCAyNDgsIDIzLCAzMywgNCwgMjQ3LCAxNDIsIDMzLCA0LCAKLSAgICAyMDYsIDg2LCAzMywgNCwgMjA0LCAxNjMsIDMzLCA0LCAyMDUsIDIzMCwgMzMsIDQsIDIwNiwgODUsIDMzLCA0LCAyMDYsIAotICAgIDUwLCAzMywgNCwgMjA2LCA1NSwgMzMsIDQsIDIwNSwgMTg5LCAzMywgNCwgMjA0LCAxNTQsIDMzLCA0LCAyMTAsIDIyLCAzMywgCi0gICAgNCwgMjA3LCAyMDMsIDMzLCA0LCAyMDksIDIsIDMzLCA0LCAyMTAsIDE4LCAzMywgNCwgMjA5LCAxNzYsIDMzLCA0LCAyMDksIAotICAgIDE4NywgMzMsIDQsIDEzNSwgMzMsIDQsIDIwNywgMTYwLCAzMywgNCwgMjQ3LCA5MiwgMzMsIDQsIDI0NSwgMTEwLCAzMywgNCwgCi0gICAgMjQ2LCA3OSwgMzMsIDQsIDI0NywgOTEsIDMzLCA0LCAyNDYsIDIzMCwgMzMsIDQsIDI0NiwgMjM4LCAzMywgNCwgMjQ1LCAKLSAgICAyNTQsIDMzLCA0LCAyNDUsIDc0LCAzMywgNCwgMjAzLCAxODIsIDMzLCA0LCAyMDMsIDE1MiwgMzMsIDQsIDIwMywgMTcwLCAKLSAgICAzMywgNCwgMjAzLCAxODEsIDMzLCA0LCAyMDMsIDE3NSwgMzMsIDQsIDIwMywgMTc2LCAzMywgNCwgMjAzLCAxNjAsIDMzLCAKLSAgICA0LCAyMDMsIDE1OSwgMzMsIDQsIDIwMywgMTQ2LCAzMywgNCwgMjAzLCAxNDIsIDMzLCA0LCAyMDMsIDE0NSwgMzMsIDQsIAotICAgIDIwMywgMTQzLCAzMywgNCwgMjAzLCAxNDQsIDMzLCA0LCAyMDEsIDIwMSwgMzMsIDQsIDIyMSwgODQsIDMzLCA0LCAyMjIsIAotICAgIDEwMCwgMzMsIDQsIDIyMywgMTA2LCAzMywgNCwgMjIyLCAyMzUsIDMzLCA0LCAyMjIsIDI0MCwgMzMsIDQsIDIyMSwgMTkxLCAKLSAgICAzMywgNCwgMjIxLCAyMCwgMzMsIDQsIDIyMSwgMTEsIDMzLCA0LCAyMjAsIDIyNiwgMzMsIDQsIDIyMCwgMjQ4LCAzMywgNCwgCi0gICAgMjIxLCAxMCwgMzMsIDQsIDIyMSwgMCwgMzMsIDQsIDIyMSwgMSwgMzMsIDQsIDIyMCwgMjMzLCAzMywgNCwgMjIwLCAyMTYsIAotICAgIDMzLCA0LCAyMzgsIDQ1LCA2MywgMzMsIDQsIDIzOCwgNDUsIDY4LCAzMywgNCwgMjM4LCA0NSwgNzUsIDMzLCA0LCAyMzgsIAotICAgIDQ1LCAyNTIsIDI1LCAzMywgNCwgMjM4LCA0NSwgMjQxLCAxNjEsIDMzLCA0LCAyMzgsIDQ1LCA3NCwgMzMsIDQsIDIzOCwgCi0gICAgNDUsIDc4LCAzMywgNCwgMjM4LCA0NSwgMjA0LCAxMTEsIDMzLCA0LCAxNzMsIDMzLCA0LCAyMjgsIDIwOSwgMzMsIDQsIAotICAgIDIyOSwgMTAwLCAzMywgNCwgMjMwLCA0MSwgMzMsIDQsIDIyOSwgMTk4LCAzMywgNCwgMjI5LCAyMDEsIDMzLCA0LCAyMjksIAotICAgIDI2LCAzMywgNCwgMjI5LCAyNSwgMzMsIDQsIDIyOCwgMTY3LCAzMywgNCwgMjI4LCAxNjAsIDMzLCA0LCAyMjgsIDE2NiwgCi0gICAgMzMsIDQsIDIyOCwgMTYxLCAzMywgNCwgMjI4LCAxNjIsIDMzLCA0LCAyMjgsIDE1MywgMzMsIDQsIDIyOCwgMTQ3LCAzMywgCi0gICAgNCwgMjI4LCAxNDksIDMzLCA0LCAyMjgsIDE1MiwgMzMsIDQsIDIyOCwgMTUwLCAzMywgNCwgMjI4LCAxNTEsIDMzLCA0LCAKLSAgICAyMjgsIDE0OCwgMzMsIDQsIDIyOCwgMTQ2LCAzMywgNCwgMjI4LCAxNDIsIDMzLCA0LCAyMjgsIDE0NSwgMzMsIDQsIDIyOCwgCi0gICAgMTQzLCAzMywgNCwgMjI4LCAxNDQsIDMzLCA0LCAyMDQsIDExMSwgMzMsIDQsIDIwMywgMjE3LCAzMywgNCwgMjA0LCAzMCwgCi0gICAgMzMsIDQsIDIwNCwgMTEwLCAzMywgNCwgMjA0LCA1NSwgMzMsIDQsIDIwNCwgNjIsIDMzLCA0LCAyMDQsIDAsIDMzLCA0LCAKLSAgICAyMDMsIDI1NSwgMzMsIDQsIDIxOCwgMTk5LCA2MywgMzMsIDQsIDIxOCwgMTk5LCA2OCwgMzMsIDQsIDIxOCwgMTk5LCA3NSwgCi0gICAgMzMsIDQsIDIxOCwgMTk5LCAyNTIsIDI1LCAzMywgNCwgMjE4LCAxOTksIDI0MSwgMTYxLCAzMywgNCwgMjE4LCAxOTksIDc0LCAKLSAgICAzMywgNCwgMjE4LCAxOTksIDc4LCAzMywgNCwgMjAyLCAxMTYsIDMzLCA0LCAyMDIsIDYsIDMzLCA0LCAyMDIsIDM5LCAzMywgCi0gICAgNCwgMjAyLCAxMTQsIDMzLCA0LCAyMDIsIDkwLCAzMywgNCwgMjAyLCA5MiwgMzMsIDQsIDIwMiwgMTcsIDMzLCA0LCAyMDEsIAotICAgIDI0OSwgMzMsIDQsIDIwMiwgODAsIDMzLCA0LCAyMDIsIDU3LCAzMywgNCwgMjAyLCA2NiwgMzMsIDQsIDIwMiwgNzksIDMzLCAKLSAgICA0LCAyMDIsIDcwLCAzMywgNCwgMjAyLCA3MSwgMzMsIDQsIDIwMiwgNjMsIDMzLCA0LCAyMDIsIDQ4LCAzMywgNCwgMTk4LCAKLSAgICAzMywgNCwgMjAyLCAyMTMsIDMzLCA0LCAyMDMsIDExLCAzMywgNCwgMjAzLCAxMTAsIDMzLCA0LCAyMDMsIDQ5LCAzMywgNCwgCi0gICAgMjAzLCA1MiwgMzMsIDQsIDIwMiwgMjQ3LCAzMywgNCwgMjAyLCAyMzgsIDMzLCA0LCAyNDQsIDIxMiwgMzMsIDQsIDI0MiwgCi0gICAgNDIsIDMzLCA0LCAyNDMsIDIzMywgMzMsIDQsIDI0NCwgMjExLCAzMywgNCwgMjQ0LCA2MSwgMzMsIDQsIDI0NCwgNzUsIDMzLCAKLSAgICA0LCAyNDMsIDExMywgMzMsIDQsIDI0MiwgMTAsIDMzLCA0LCAyNDQsIDEyMCwgMzMsIDQsIDI0NCwgODUsIDMzLCA0LCAyNDQsIAotICAgIDk3LCAzMywgNCwgMjQ0LCAxMTksIDMzLCA0LCAyNDQsIDEwNywgMzMsIDQsIDI0NCwgMTA4LCAzMywgNCwgMjQ0LCA5MCwgCi0gICAgMzMsIDQsIDI0NCwgNzYsIDMzLCA0LCAyMzAsIDE4MSwgMzMsIDQsIDIzMCwgODIsIDMzLCA0LCAyMzAsIDE0MSwgMzMsIDQsIAotICAgIDIzMCwgMTgwLCAzMywgNCwgMjMwLCAxNTksIDMzLCA0LCAyMzAsIDE2MSwgMzMsIDQsIDIzMCwgMTAxLCAzMywgNCwgMjMwLCAKLSAgICA2MiwgMzMsIDQsIDIzOSwgOCwgMzMsIDQsIDIzNywgMjMwLCAzMywgNCwgMjM4LCA4MSwgMzMsIDQsIDIzOSwgNSwgMzMsIDQsIAotICAgIDIzOCwgMTgyLCAzMywgNCwgMjM4LCAxOTAsIDMzLCA0LCAyMzgsIDM5LCAzMywgNCwgMjM4LCAzOCwgMzMsIDQsIDIzNywgCi0gICAgMTkwLCAzMywgNCwgMjM3LCAxODYsIDMzLCA0LCAyMzcsIDE4OSwgMzMsIDQsIDIzNywgMTg3LCAzMywgNCwgMjM3LCAxODgsIAotICAgIDMzLCA0LCAyMzgsIDE1NSwgMzMsIDQsIDIzOCwgMTM1LCAzMywgNCwgMjM4LCAxNDUsIDMzLCA0LCAyMzgsIDE1NCwgMzMsIAotICAgIDQsIDIzOCwgMTQ5LCAzMywgNCwgMjM4LCAxNTAsIDMzLCA0LCAyMzgsIDEzOSwgMzMsIDQsIDIzOCwgMTI0LCAzMywgNCwgCi0gICAgMjA5LCAxMDgsIDMzLCA0LCAyMDksIDIyLCAzMywgNCwgMjA5LCA3MCwgMzMsIDQsIDIwOSwgMTA3LCAzMywgNCwgMjA5LCAKLSAgICA5MCwgMzMsIDQsIDIwOSwgOTIsIDMzLCA0LCAyMDksIDQ3LCAzMywgNCwgMjA5LCAxMywgMzMsIDQsIDI0NiwgMTk5LCAzMywgCi0gICAgNCwgMjQ2LCA5OCwgMzMsIDQsIDI0NiwgMTQyLCAzMywgNCwgMjQ2LCAxOTgsIDMzLCA0LCAyNDYsIDE2NiwgMzMsIDQsIAotICAgIDI0NiwgMTcwLCAzMywgNCwgMjQ2LCAxMTYsIDMzLCA0LCAyNDYsIDg3LCAzMywgNCwgMjE4LCAyMDgsIDMzLCA0LCAyMTgsIAotICAgIDE3MywgMzMsIDQsIDIxOCwgMTkyLCAzMywgNCwgMjE4LCAyMDcsIDMzLCA0LCAyMTgsIDE5NCwgMzMsIDQsIDIxOCwgMTk1LCAKLSAgICAzMywgNCwgMjE4LCAxODAsIDMzLCA0LCAyMTgsIDE2OSwgMzMsIDQsIDIwOCwgMjAsIDMzLCA0LCAyMDcsIDI0OSwgMzMsIDQsIAotICAgIDIwNywgMjU1LCAzMywgNCwgMjA4LCAxOSwgMzMsIDQsIDIwOCwgMTMsIDMzLCA0LCAyMDgsIDE0LCAzMywgNCwgMjA3LCAKLSAgICAyNTMsIDMzLCA0LCAyMDcsIDI0NywgMzMsIDQsIDIwNywgMTA2LCAzMywgNCwgMjA3LCA5OCwgMzMsIDQsIDIwNywgMTAyLCAKLSAgICAzMywgNCwgMjA3LCAxMDUsIDMzLCA0LCAyMDcsIDEwMywgMzMsIDQsIDIwNywgMTA0LCAzMywgNCwgMjA3LCAxMDAsIDMzLCAKLSAgICA0LCAyMDcsIDk5LCAzMywgNCwgMjQwLCAxMDgsIDMzLCA0LCAyMzksIDEwOCwgMzMsIDQsIDI0MCwgMjYsIDMzLCA0LCAyNDAsIAotICAgIDEwNywgMzMsIDQsIDI0MCwgNTMsIDMzLCA0LCAyNDAsIDYwLCAzMywgNCwgMjM5LCAxODYsIDMzLCA0LCAyMzksIDg2LCAzMywgCi0gICAgNCwgMTg1LCAzMywgNCwgMjE3LCAxOTEsIDMzLCA0LCAyMTgsIDE2NywgMzMsIDQsIDIxOSwgMTY4LCAzMywgNCwgMjE5LCAKLSAgICAyMywgMzMsIDQsIDIxOSwgMzQsIDMzLCA0LCAyMTgsIDY5LCAzMywgNCwgMjE3LCAxNTIsIDMzLCA0LCAyMTUsIDEwMSwgMzMsIAotICAgIDQsIDIyMywgMTY5LCAzMywgNCwgMjM5LCA4MCwgMzMsIDM5LCAyMzgsIDE3OSwgMjUsIDIyLCAyMjcsIDE5NiwgODIsIDMzLCAKLSAgICAzOSwgMjIsIDIyNywgMTk2LCA4MiwgMzMsIDM5LCAyMzgsIDE3OSwgODIsIDMzLCAyMTQsIDE2OCwgODIsIDMzLCAyMDMsIAotICAgIDIzNywgMzMsIDIzOSwgMTAyLCAyMTEsIDYxLCAzMywgMjQ1LCAyMzMsIDMzLCAyMTMsIDE0MywgMzMsIDI0NSwgMjQyLCAzMywgCi0gICAgMjE3LCAyNDYsIDI0NSwgMjQyLCAzMywgMjE3LCA0NywgODIsIDMzLCAyMTksIDg5LCAyMTMsIDEzMCwgMzMsIDE3LCAxMDUsIAotICAgIDMzLCAxNywgMTA4LCAzMywgMTcsIDE0NywgMzMsIDE3LCAxNDksIDMzLCAxNywgMTcwLCAzMywgMTcsIDE5NSwgMzMsIDE3LCAKLSAgICAyMTMsIDExMSwgMzMsIDE3LCAxOTksIDMzLCAxNywgMjIyLCA2MywgMzMsIDQyLCAyMDksIDE1MiwgMzMsIDQyLCAyMDcsIAotICAgIDE1MSwgMzMsIDQyLCAyMDksIDUzLCAzMywgNDIsIDIzOSwgMTUzLCAzMywgNDIsIDI0MCwgMTgsIDMzLCA0MiwgMjEyLCA3NCwgCi0gICAgMzMsIDQyLCAyMTMsIDEwNSwgMzMsIDQyLCAyNDEsIDEzNCwgMzMsIDQyLCAyMjIsIDU4LCAzMywgNDIsIDIzNiwgMTEsIDMzLCAKLSAgICA0MiwgMjA5LCAxNTMsIDIwOSwgMzYsIDMzLCA0LCAyMTQsIDE3MywgMjIzLCAxODAsIDMzLCA0LCAyMjMsIDE3NiwgMzMsIDQsIAotICAgIDIyMywgMTc3LCAzMywgNCwgMjIzLCAxNzgsIDMzLCA0LCAyMTQsIDE3MywgMjQ3LCAxNDIsIDMzLCA0LCAyNDcsIDEzOSwgCi0gICAgMzMsIDQsIDI0NywgMTQwLCAzMywgNCwgMjQ3LCAxNDEsIDMzLCA0LCAyMTQsIDE3MywgMjM5LCA4NiwgMzMsIDQsIDIzOSwgCi0gICAgODIsIDMzLCA0LCAyMzksIDgzLCAzMywgNCwgMjM5LCA4NCwgMzMsIDQsIDIxNCwgMTczLCAyMTcsIDE1MiwgMzMsIDQsIAotICAgIDIxNywgMTQ4LCAzMywgNCwgMjE3LCAxNDksIDMzLCA0LCAyMTcsIDE1MCwgMzMsIDIwOCwgMTYyLCAxMzEsIDIwMiwgMjUwLCAKLSAgICAzMywgMjA4LCAxNjIsIDEzMSwgMjQ0LCAyMiwgMzMsIDIwOCwgMTYyLCAxMzEsIDIxNiwgMiwgMzMsIDIwOCwgMTYyLCAxMzEsIAotICAgIDIxMiwgMjI4LCAyMTYsIDIsIDMzLCAyMDgsIDE2MiwgMTMxLCAyNDMsIDIwNywgMzMsIDIwOCwgMTYyLCAxMzEsIDIyOSwgCi0gICAgMTc5LCAzMywgMjA4LCAxNjIsIDEzMSwgMjQ2LCAxMjQsIDMzLCAyMDgsIDE2MiwgMTMxLCAyMzcsIDAsIDMzLCAyMDgsIAotICAgIDE2MiwgMTMxLCAyNDQsIDIxLCAzMywgMjA4LCAxNjIsIDEzMSwgMjI4LCAxODEsIDkwLCAxLCA2MywgOTAsIDEsIDc0LCA5MCwgCi0gICAgMSwgNzUsIDkwLCAxLCA3OCwgOTAsIDEsIDY4LCA5MCwgMSwgMjA2LCAxNjQsIDkwLCAxLCAyMzksIDgsIDkwLCAxLCAxNzMsIAotICAgIDkwLCAxLCAyMzgsIDE5MCwgOTAsIDEsIDIzOCwgODEsIDkwLCAxLCAyMzgsIDM5LCA5MCwgMSwgMjM3LCAyMzAsIDkwLCAxLCAKLSAgICAyMzcsIDE5MiwgOTAsIDEsIDE1MiwgOTAsIDEsIDIzNywgNjcsIDkwLCAxLCAyMzcsIDMsIDkwLCAxLCAyMzYsIDEzNiwgOTAsIAotICAgIDEsIDIzNiwgMjYsIDkwLCAxLCAyMzUsIDI1NSwgOTAsIDEsIDIyOCwgMTEzLCA5MCwgMSwgMjI3LCAyMzQsIDkwLCAxLCAKLSAgICAyMjcsIDE0OCwgOTAsIDEsIDIyNywgNDksIDkwLCAxLCAyMjYsIDIzOSwgOTAsIDEsIDIyNiwgMjA4LCA5MCwgMSwgMTkyLCAKLSAgICA5MCwgMSwgMjI1LCAyMCwgOTAsIDEsIDIyNCwgMTU1LCA5MCwgMSwgMjI0LCA4MiwgOTAsIDEsIDIyMywgMjQ2LCA5MCwgMSwgCi0gICAgMjAxLCAyMDEsIDkwLCAxLCAyMzYsIDE2MCwgOTAsIDEsIDIyMywgOTMsIDkwLCAxLCAyMjIsIDI0MCwgOTAsIDEsIDIyMiwgCi0gICAgMTAwLCA5MCwgMSwgMjIxLCAxOTEsIDkwLCAxLCAyMjEsIDg0LCA5MCwgMSwgMjIxLCAyMiwgOTAsIDEsIDIxNywgNjQsIDkwLCAKLSAgICAxLCAyMTcsIDUwLCA5MCwgMSwgMjE3LCA0MywgOTAsIDEsIDIxNywgMzQsIDkwLCAxLCAyMTcsIDIzLCA5MCwgMSwgMjE3LCAKLSAgICAyMSwgOTAsIDEsIDIxNSwgMzYsIDkwLCAxLCAxOTQsIDkwLCAxLCAyMTQsIDE3NywgOTAsIDEsIDIxMiwgMTYyLCA5MCwgMSwgCi0gICAgMjEyLCAxMywgOTAsIDEsIDIxMSwgMTAsIDkwLCAxLCAyMTAsIDE3NywgOTAsIDEsIDI0NCwgMjEyLCA5MCwgMSwgMjEwLCAKLSAgICAyMiwgOTAsIDEsIDI0NCwgNzUsIDkwLCAxLCAyMDksIDE4NywgOTAsIDEsIDI0MywgMjMzLCA5MCwgMSwgMjA5LCAyLCA5MCwgCi0gICAgMSwgMjQzLCAxMTMsIDkwLCAxLCAyNDIsIDQyLCA5MCwgMSwgMjQyLCAxMywgOTAsIDEsIDI0MywgMTI0LCA5MCwgMSwgMjA4LCAKLSAgICAxOTAsIDkwLCAxLCAyMDgsIDE4OSwgOTAsIDEsIDIwOCwgMTc4LCA5MCwgMSwgMjA4LCAxNzcsIDkwLCAxLCAyMDgsIDE3NiwgCi0gICAgOTAsIDEsIDIwOCwgMTc1LCA5MCwgMSwgMjA4LCAyMCwgOTAsIDEsIDIwOCwgMTQsIDkwLCAxLCAyMDcsIDI1NSwgOTAsIDEsIAotICAgIDIwNywgMjUzLCA5MCwgMSwgMjA3LCAyNDksIDkwLCAxLCAyMDcsIDI0OCwgOTAsIDEsIDIwNCwgMTExLCA5MCwgMSwgMjA0LCAKLSAgICA2MiwgOTAsIDEsIDIwNCwgMzAsIDkwLCAxLCAyMDQsIDAsIDkwLCAxLCAyMDMsIDIxNywgOTAsIDEsIDIwMywgMjA0LCA5MCwgCi0gICAgMSwgMTk4LCA5MCwgMSwgMjAzLCA1MiwgOTAsIDEsIDIwMywgMTEsIDkwLCAxLCAyMDIsIDI0NywgOTAsIDEsIDIwMiwgMjEzLCAKLSAgICA5MCwgMSwgMjAyLCAxNzcsIDkwLCAxLCAyMjMsIDE4NywgOTAsIDUsIDEsIDIwMywgNTIsIDkwLCA1LCAxLCAyMDMsIDExLCAKLSAgICA5MCwgNSwgMSwgMjAyLCAyNDcsIDkwLCA1LCAxLCAyMDIsIDIxMywgOTAsIDUsIDEsIDIwMiwgMTc3LCA5MCwgNSwgMSwgCi0gICAgMjIzLCAxODcsIDE5LCAyMCwgMjM1LCAyMjAsIDE5LCAyMCwgNzQsIDE5LCAyMCwgMjUxLCAyNDUsIDE5LCAyMCwgNzUsIDE5LCAKLSAgICAyMCwgMjMxLCA4MywgMTksIDIwLCA3OCwgMTksIDIwLCAyMjAsIDE4LCAxOSwgMjAsIDIwMywgMTIzLCAyMjAsIDE4LCAxOSwgCi0gICAgMjAsIDg4LCAyNDEsIDE2MSwgMTksIDIwLCA4OCwgNzUsIDE5LCAyMCwgNjMsIDE5LCAyMCwgMjUyLCAyNSwgMTksIDIwLCAKLSAgICAyMDQsIDYyLCAxOSwgMjAsIDE5NiwgMjA0LCA2MiwgMTksIDIwLCAyMDQsIDMwLCAxOSwgMjAsIDE5NiwgMjA0LCAzMCwgMTksIAotICAgIDIwLCAyMDQsIDE5LCAxOSwgMjAsIDE5NiwgMjA0LCAxOSwgMTksIDIwLCAyMDQsIDAsIDE5LCAyMCwgMTk2LCAyMDQsIDAsIAotICAgIDE5LCAyMCwgMjAzLCAyNDQsIDE5LCAyMCwgMTk2LCAyMDMsIDI0NCwgMTksIDIwLCAyMjMsIDY4LCAyMDMsIDI0NCwgMTksIAotICAgIDIwLCAyMDQsIDExMSwgMTksIDIwLCAxOTYsIDIwNCwgMTExLCAxOSwgMjAsIDIwNCwgMTEwLCAxOSwgMjAsIDE5NiwgMjA0LCAKLSAgICAxMTAsIDE5LCAyMCwgMjIzLCA2OCwgMjA0LCAxMTAsIDE5LCAyMCwgMjUxLCA2NCwgMTksIDIwLCAyMDMsIDEyMywgMjA0LCAKLSAgICAxNDQsIDE5LCAyMCwgMjM4LCA0NSwgMjExLCA2MSwgMTksIDIwLCA0NiwgMTY1LCAxOSwgMjAsIDQ2LCAyMzcsIDI1MywgMTksIAotICAgIDIwLCA0NiwgMjQ3LCAyNDgsIDE2MiwgMjE1LCAyNTIsIDE5LCAyMCwgNDYsIDIwOCwgMTQ1LCAxNjIsIDIxNSwgMjUyLCAxOSwgCi0gICAgMjAsIDQ2LCA1MCwgMTYyLCAyMTUsIDI1MiwgMTksIDIwLCA0NiwgMjE1LCAyNTIsIDE5LCAyMCwgNDYsIDUyLCAxNjUsIDE5LCAKLSAgICAyMCwgNDYsIDUyLCAyMTIsIDIyOCwgODAsIDIxMSwgMTksIDE5LCAyMCwgNDYsIDEwMSwgMjQzLCA4NSwgMTksIDIwLCA0NiwgCi0gICAgMjEyLCAyMjgsIDIzNiwgMTA2LCA5NSwgMTksIDIwLCA0NiwgMjE4LCA3NiwgMTksIDIwLCA0NiwgMTIxLCAyMTAsIDMsIDE5LCAKLSAgICAyMCwgMjQxLCA5MiwgMTksIDIwLCAyMzEsIDQ5LCAxOSwgMjAsIDIyMCwgMzEsIDE5LCAyMCwgMjUwLCAyMzEsIDE5LCAyMCwgCi0gICAgMjE5LCAzNCwgMTksIDIwLCAyMTksIDE2NiwgMTksIDIwLCAyMTgsIDE2NywgMTksIDIwLCAyMTgsIDEyOSwgMTksIDIwLCAKLSAgICAyMTgsIDY5LCAxOSwgMjAsIDIxOCwgNDUsIDE5LCAyMCwgMjAzLCAxMjMsIDIxOCwgNDUsIDE5LCAyMCwgODgsIDIzNywgNDgsIAotICAgIDE5LCAyMCwgODgsIDIzNywgMywgMTksIDIwLCAxODUsIDE5LCAyMCwgMjE5LCAxNjgsIDE5LCAyMCwgMjE3LCAxNTAsIDE5LCAKLSAgICAyMCwgMTk2LCAyMTcsIDE1MCwgMTksIDIwLCAyMTcsIDE0OCwgMTksIDIwLCAxOTYsIDIxNywgMTQ4LCAxOSwgMjAsIDIxNywgCi0gICAgMTQ3LCAxOSwgMjAsIDE5NiwgMjE3LCAxNDcsIDE5LCAyMCwgMjE3LCAxNDUsIDE5LCAyMCwgMTk2LCAyMTcsIDE0NSwgMTksIAotICAgIDIwLCAyMTcsIDE0NCwgMTksIDIwLCAxOTYsIDIxNywgMTQ0LCAxOSwgMjAsIDIxNywgMTUyLCAxOSwgMjAsIDE5NiwgMjE3LCAKLSAgICAxNTIsIDE5LCAyMCwgMjE3LCAxNTEsIDE5LCAyMCwgMTk2LCAyMTcsIDE1MSwgMTksIDIwLCAyMDMsIDEyMywgMjE3LCAxNTEsIAotICAgIDE5LCAyMCwgMjE5LCAxODQsIDE5LCAyMCwgMTk2LCAyMTksIDE4NCwgMTksIDIwLCA4OCwgMjM3LCAxNzEsIDE5LCAyMCwgCi0gICAgMjA5LCAxODcsIDE5LCAyMCwgMjEwLCAxNiwgMTksIDIwLCAyMDksIDIsIDE5LCAyMCwgMjA4LCAyNDIsIDE5LCAyMCwgMTM1LCAKLSAgICAxOSwgMjAsIDIwOCwgMTQ4LCAxOSwgMjAsIDIwMywgMTIzLCAyMDgsIDE0OCwgMTksIDIwLCA4OCwgMjQ0LCA2MSwgMTksIAotICAgIDIwLCA4OCwgMjQzLCAyMzMsIDE5LCAyMCwgMjEwLCAyMiwgMTksIDIwLCAyMTAsIDE4LCAxOSwgMjAsIDIwNywgMTU4LCAxOSwgCi0gICAgMjAsIDE5NiwgMjA3LCAxNTgsIDE5LCAyMCwgMjA3LCAxNDAsIDE5LCAyMCwgMTk2LCAyMDcsIDE0MCwgMTksIDIwLCAyMDcsIAotICAgIDEzOSwgMTksIDIwLCAxOTYsIDIwNywgMTM5LCAxOSwgMjAsIDEwOCwgMTksIDIwLCAxOTYsIDEwOCwgMTksIDIwLCAyMDcsIAotICAgIDEzMCwgMTksIDIwLCAxOTYsIDIwNywgMTMwLCAxOSwgMjAsIDIwNywgMTYwLCAxOSwgMjAsIDE5NiwgMjA3LCAxNjAsIDE5LCAKLSAgICAyMCwgMjA3LCAxNTksIDE5LCAyMCwgMTk2LCAyMDcsIDE1OSwgMTksIDIwLCAyMjMsIDY4LCAyMDcsIDE1OSwgMTksIDIwLCAKLSAgICAyMTAsIDY5LCAxOSwgMjAsIDIwNywgMjM2LCAxOSwgMjAsIDIwNywgMjIwLCAxOSwgMjAsIDIwNywgMjE4LCAxOSwgMjAsIAotICAgIDIwNywgMjQxLCAxOSwgMjAsIDIyOSwgMjAxLCAxOSwgMjAsIDIzMCwgMzYsIDE5LCAyMCwgMjI5LCAxMDAsIDE5LCAyMCwgCi0gICAgMjI5LCA4NywgMTksIDIwLCAyMjksIDI2LCAxOSwgMjAsIDIyOSwgNiwgMTksIDIwLCAyMDMsIDEyMywgMjI5LCA2LCAxOSwgCi0gICAgMjAsIDE3MywgMTksIDIwLCAyMzAsIDQxLCAxOSwgMjAsIDIyOCwgMTYyLCAxOSwgMjAsIDE5NiwgMjI4LCAxNjIsIDE5LCAKLSAgICAyMCwgMjI4LCAxNjAsIDE5LCAyMCwgMTk2LCAyMjgsIDE2MCwgMTksIDIwLCAyMjgsIDE1OSwgMTksIDIwLCAxOTYsIDIyOCwgCi0gICAgMTU5LCAxOSwgMjAsIDIyOCwgMTU3LCAxOSwgMjAsIDE5NiwgMjI4LCAxNTcsIDE5LCAyMCwgMjI4LCAxNTYsIDE5LCAyMCwgCi0gICAgMTk2LCAyMjgsIDE1NiwgMTksIDIwLCAyMjgsIDE2NywgMTksIDIwLCAxOTYsIDIyOCwgMTY3LCAxOSwgMjAsIDIyOCwgMTY2LCAKLSAgICAxOSwgMjAsIDE5NiwgMjI4LCAxNjYsIDE5LCAyMCwgMjIzLCA2OCwgMjI4LCAxNjYsIDE5LCAyMCwgMjMwLCA1NCwgMTksIAotICAgIDIwLCAyMjgsIDE2OCwgMTksIDIwLCAyMTEsIDIzNywgMjI5LCAxOTEsIDE5LCAyMCwgMjExLCAyMzcsIDIyOSwgODgsIDE5LCAKLSAgICAyMCwgMjExLCAyMzcsIDIyOSwgMjAsIDE5LCAyMCwgMjExLCAyMzcsIDIzMCwgMjAsIDE5LCAyMCwgMjQ2LCAyMzgsIDE5LCAKLSAgICAyMCwgMjQ3LCA5MCwgMTksIDIwLCAyNDYsIDc5LCAxOSwgMjAsIDI0NiwgNjksIDE5LCAyMCwgMjQ1LCAyNTQsIDE5LCAyMCwgCi0gICAgMjQ1LCAxODAsIDE5LCAyMCwgMjAzLCAxMjMsIDI0NSwgMTgwLCAxOSwgMjAsIDI0NywgOTIsIDE5LCAyMCwgMjQ3LCA5MSwgCi0gICAgMTksIDIwLCAyNDUsIDcyLCAxOSwgMjAsIDE5NiwgMjQ1LCA3MiwgMTksIDIwLCAyNDUsIDcwLCAxOSwgMjAsIDE5NiwgMjQ1LCAKLSAgICA3MCwgMTksIDIwLCAyNDUsIDY5LCAxOSwgMjAsIDE5NiwgMjQ1LCA2OSwgMTksIDIwLCAyNDUsIDY4LCAxOSwgMjAsIDE5NiwgCi0gICAgMjQ1LCA2OCwgMTksIDIwLCAyNDUsIDY3LCAxOSwgMjAsIDE5NiwgMjQ1LCA2NywgMTksIDIwLCAyNDUsIDc0LCAxOSwgMjAsIAotICAgIDE5NiwgMjQ1LCA3NCwgMTksIDIwLCAyNDUsIDczLCAxOSwgMjAsIDE5NiwgMjQ1LCA3MywgMTksIDIwLCAyMjMsIDY4LCAKLSAgICAyNDUsIDczLCAxOSwgMjAsIDI0NywgMTI1LCAxOSwgMjAsIDIxNCwgMjA2LCAyMDksIDExMCwgMTksIDIwLCAyMjUsIDIwLCAKLSAgICAxOSwgMjAsIDIyNSwgMTc0LCAxOSwgMjAsIDIyNCwgMTU1LCAxOSwgMjAsIDIyNCwgMTI1LCAxOSwgMjAsIDIyNCwgODIsIAotICAgIDE5LCAyMCwgMjI0LCAzNSwgMTksIDIwLCAyMDMsIDEyMywgMjI0LCAzNSwgMTksIDIwLCAxOTIsIDE5LCAyMCwgMjI1LCAKLSAgICAxNzUsIDE5LCAyMCwgMjIzLCAxNzgsIDE5LCAyMCwgMTk2LCAyMjMsIDE3OCwgMTksIDIwLCAyMjMsIDE3NiwgMTksIDIwLCAKLSAgICAxOTYsIDIyMywgMTc2LCAxOSwgMjAsIDIyMywgMTc1LCAxOSwgMjAsIDE5NiwgMjIzLCAxNzUsIDE5LCAyMCwgMjIzLCAxNzQsIAotICAgIDE5LCAyMCwgMTk2LCAyMjMsIDE3NCwgMTksIDIwLCAyMjMsIDE3MywgMTksIDIwLCAxOTYsIDIyMywgMTczLCAxOSwgMjAsIAotICAgIDIyMywgMTgwLCAxOSwgMjAsIDE5NiwgMjIzLCAxODAsIDE5LCAyMCwgMjIzLCAxNzksIDE5LCAyMCwgMTk2LCAyMjMsIDE3OSwgCi0gICAgMTksIDIwLCAyMjMsIDY4LCAyMjMsIDE3OSwgMTksIDIwLCAyMjYsIDE4NSwgMTksIDIwLCAxOTYsIDIyNiwgMTg1LCAxOSwgCi0gICAgMjAsIDIyNCwgMTU5LCAxOSwgMjAsIDI1MCwgNDgsIDIyNiwgMTg1LCAxOSwgMjAsIDIxNCwgMjA2LCAyMjYsIDE4NSwgMTksIAotICAgIDIwLCAyMjIsIDI0MCwgMTksIDIwLCAyMjMsIDEwNSwgMTksIDIwLCAyMjIsIDEwMCwgMTksIDIwLCAyMjIsIDc1LCAxOSwgCi0gICAgMjAsIDIyMSwgMTkxLCAxOSwgMjAsIDIyMSwgMTgwLCAxOSwgMjAsIDIwMywgMTIzLCAyMjEsIDE4MCwgMTksIDIwLCAyMDEsIAotICAgIDIwMSwgMTksIDIwLCAyMjMsIDEwNiwgMTksIDIwLCAyMjEsIDE4LCAxOSwgMjAsIDE5NiwgMjIxLCAxOCwgMTksIDIwLCAKLSAgICAyMjEsIDIwLCAxOSwgMjAsIDE5NiwgMjIxLCAyMCwgMTksIDIwLCAyMjEsIDE5LCAxOSwgMjAsIDE5NiwgMjIxLCAxOSwgMTksIAotICAgIDIwLCAyMjMsIDY4LCAyMjEsIDE5LCAxOSwgMjAsIDIyMywgMTYzLCAxOSwgMjAsIDg4LCAyMjIsIDIwNSwgMTksIDIwLCAKLSAgICAyMjIsIDEwNSwgMTksIDIwLCAyMjcsIDIzNCwgMTksIDIwLCAyMjgsIDExMSwgMTksIDIwLCAyMjcsIDE0OCwgMTksIDIwLCAKLSAgICAyMjcsIDEzMCwgMTksIDIwLCAyMjcsIDQ5LCAxOSwgMjAsIDIyNywgMTgsIDE5LCAyMCwgMjAzLCAxMjMsIDIyNywgMTgsIAotICAgIDE5LCAyMCwgMjI4LCAxMTMsIDE5LCAyMCwgMjI4LCAxMTIsIDE5LCAyMCwgMjI2LCAyMDUsIDE5LCAyMCwgMTk2LCAyMjYsIAotICAgIDIwNSwgMTksIDIwLCAyMjYsIDIwNCwgMTksIDIwLCAxOTYsIDIyNiwgMjA0LCAxOSwgMjAsIDIyNiwgMjAzLCAxOSwgMjAsIAotICAgIDE5NiwgMjI2LCAyMDMsIDE5LCAyMCwgMjI2LCAyMDIsIDE5LCAyMCwgMTk2LCAyMjYsIDIwMiwgMTksIDIwLCAyMjYsIDIwMSwgCi0gICAgMTksIDIwLCAxOTYsIDIyNiwgMjAxLCAxOSwgMjAsIDIyNiwgMjA3LCAxOSwgMjAsIDE5NiwgMjI2LCAyMDcsIDE5LCAyMCwgCi0gICAgMjI2LCAyMDYsIDE5LCAyMCwgMTk2LCAyMjYsIDIwNiwgMTksIDIwLCAxNTksIDE5LCAyMCwgMTk2LCAxNTksIDE5LCAyMCwgCi0gICAgMTc0LCAxNTksIDE5LCAyMCwgMjE0LCAxNzcsIDE5LCAyMCwgMjE1LCAzMSwgMTksIDIwLCAyMTIsIDE2MiwgMTksIDIwLCAKLSAgICAyMTIsIDE0MiwgMTksIDIwLCAyMTIsIDEzLCAxOSwgMjAsIDIxMSwgMjUwLCAxOSwgMjAsIDIwMywgMTIzLCAyMTEsIDI1MCwgCi0gICAgMTksIDIwLCAyMTUsIDM2LCAxOSwgMjAsIDIxNSwgMzMsIDE5LCAyMCwgMjEwLCAxNjgsIDE5LCAyMCwgMTk2LCAyMTAsIAotICAgIDE2OCwgMTksIDIwLCAyMTAsIDE2MiwgMTksIDIwLCAxOTYsIDIxMCwgMTYyLCAxOSwgMjAsIDIxMCwgMTYxLCAxOSwgMjAsIAotICAgIDE5NiwgMjEwLCAxNjEsIDE5LCAyMCwgMjEwLCAxNTcsIDE5LCAyMCwgMTk2LCAyMTAsIDE1NywgMTksIDIwLCAyMTAsIDE1NiwgCi0gICAgMTksIDIwLCAxOTYsIDIxMCwgMTU2LCAxOSwgMjAsIDIxMCwgMTcyLCAxOSwgMjAsIDE5NiwgMjEwLCAxNzIsIDE5LCAyMCwgCi0gICAgMjEwLCAxNzEsIDE5LCAyMCwgMTk2LCAyMTAsIDE3MSwgMTksIDIwLCAyMjMsIDY4LCAyMTAsIDE3MSwgMTksIDIwLCAxOTQsIAotICAgIDE5LCAyMCwgMjUwLCA0OCwgMTk0LCAxOSwgMjAsIDIxMCwgMTczLCAxOSwgMjAsIDI0OCwgNDAsIDE5NCwgMTksIDIwLCAKLSAgICAyMjQsIDI4LCAyMTIsIDcwLCAxOSwgMjAsIDIyMywgNjgsIDIxMiwgNjEsIDE5LCAyMCwgMjIzLCA2OCwgMjE1LCA5MiwgMTksIAotICAgIDIwLCAyMjMsIDY4LCAyMTEsIDE3OSwgMTksIDIwLCAyMjMsIDY4LCAyMTEsIDEzLCAxOSwgMjAsIDIyMywgNjgsIDIxMiwgCi0gICAgNjAsIDE5LCAyMCwgMjIzLCA2OCwgMjE0LCAxODAsIDE5LCAyMCwgMjEzLCA0MywgMTksIDIwLCAyMTMsIDExLCAxOSwgMjAsIAotICAgIDIxMywgNiwgMTksIDIwLCAyMTIsIDI0MiwgMTksIDIwLCAyMTIsIDIzNiwgMTksIDIwLCAyMTMsIDkwLCAxOSwgMjAsIDIxMywgCi0gICAgODUsIDE5LCAyMCwgMjEyLCAxNzcsIDE5LCAyMCwgMTk2LCAyMTIsIDE3NywgMTksIDIwLCAyMTIsIDE3NiwgMTksIDIwLCAKLSAgICAxOTYsIDIxMiwgMTc2LCAxOSwgMjAsIDIxMiwgMTc1LCAxOSwgMjAsIDE5NiwgMjEyLCAxNzUsIDE5LCAyMCwgMjEyLCAxNzQsIAotICAgIDE5LCAyMCwgMTk2LCAyMTIsIDE3NCwgMTksIDIwLCAyMTIsIDE3MywgMTksIDIwLCAxOTYsIDIxMiwgMTczLCAxOSwgMjAsIAotICAgIDIxMiwgMTgwLCAxOSwgMjAsIDE5NiwgMjEyLCAxODAsIDE5LCAyMCwgMjEyLCAxNzksIDE5LCAyMCwgMTk2LCAyMTIsIDE3OSwgCi0gICAgMTksIDIwLCAyMTMsIDkyLCAxOSwgMjAsIDIwMywgNTIsIDE5LCAyMCwgMjAzLCAxMDgsIDE5LCAyMCwgMjAzLCAxMSwgMTksIAotICAgIDIwLCAyMDMsIDIsIDE5LCAyMCwgMjAyLCAyNDcsIDE5LCAyMCwgMjAyLCAyMzIsIDE5LCAyMCwgMjAzLCAxMjMsIDIwMiwgCi0gICAgMjMyLCAxOSwgMjAsIDE5OCwgMTksIDIwLCAyMDMsIDExMCwgMTksIDIwLCAyMDIsIDE3NCwgMTksIDIwLCAxOTYsIDIwMiwgCi0gICAgMTc0LCAxOSwgMjAsIDIwMiwgMTczLCAxOSwgMjAsIDE5NiwgMjAyLCAxNzMsIDE5LCAyMCwgMjAyLCAxNzIsIDE5LCAyMCwgCi0gICAgMTk2LCAyMDIsIDE3MiwgMTksIDIwLCAyMDIsIDE3MSwgMTksIDIwLCAxOTYsIDIwMiwgMTcxLCAxOSwgMjAsIDIwMiwgMTcwLCAKLSAgICAxOSwgMjAsIDE5NiwgMjAyLCAxNzAsIDE5LCAyMCwgMjAyLCAxNzYsIDE5LCAyMCwgMTk2LCAyMDIsIDE3NiwgMTksIDIwLCAKLSAgICAyMDIsIDE3NSwgMTksIDIwLCAxOTYsIDIwMiwgMTc1LCAxOSwgMjAsIDIyMywgNjgsIDIwMiwgMTc1LCAxOSwgMjAsIDIwMywgCi0gICAgMTI0LCAxOSwgMjAsIDI0OCwgODQsIDIwMywgMTI0LCAxOSwgMjAsIDE5NiwgMjAzLCAxMjQsIDE5LCAyMCwgMjE0LCAyMDYsIAotICAgIDIwMywgMTEsIDE5LCAyMCwgMjE2LCAxNTgsIDE5LCAyMCwgMjE3LCAwLCAyMTYsIDE1OCwgMTksIDIwLCAxOTYsIDIyNywgCi0gICAgMjM0LCAxOSwgMjAsIDIxNiwgMjE1LCAxOSwgMjAsIDIxNiwgNTcsIDE5LCAyMCwgMjE2LCAzLCAxOSwgMjAsIDIxNSwgMjI3LCAKLSAgICAxOSwgMjAsIDIxNSwgMjA4LCAxOSwgMjAsIDE5NiwgMjI3LCA0OSwgMTksIDIwLCAyMTYsIDIyMCwgMTksIDIwLCAyMTYsIAotICAgIDIxNiwgMTksIDIwLCAxOTYsIDIyOCwgMTEzLCAxOSwgMjAsIDIxNSwgMTEwLCAxOSwgMjAsIDE5NiwgMjE1LCAxMTAsIDE5LCAKLSAgICAyMCwgMTQ2LCAxOSwgMjAsIDE5NiwgMTQ2LCAxOSwgMjAsIDE3NCwgMTQ2LCAxOSwgMjAsIDI0MCwgNjAsIDE5LCAyMCwgCi0gICAgMjQwLCAxMDUsIDE5LCAyMCwgMjQwLCAyNiwgMTksIDIwLCAyNDAsIDEyLCAxOSwgMjAsIDIzOSwgMTg2LCAxOSwgMjAsIAotICAgIDIzOSwgMTc1LCAxOSwgMjAsIDI0MCwgMTA4LCAxOSwgMjAsIDI0MCwgMTA3LCAxOSwgMjAsIDIzOSwgODUsIDE5LCAyMCwgCi0gICAgMTk2LCAyMzksIDg1LCAxOSwgMjAsIDI0MCwgMTc0LCAxOSwgMjAsIDIwOSwgOTIsIDE5LCAyMCwgMjIzLCAxNjEsIDIwOSwgCi0gICAgOTIsIDE5LCAyMCwgMjA5LCA3MCwgMTksIDIwLCAyMjMsIDE2MSwgMjA5LCA3MCwgMTksIDIwLCAyMDksIDY0LCAxOSwgMjAsIAotICAgIDIyMywgMTYxLCAyMDksIDY0LCAxOSwgMjAsIDIwOSwgNDcsIDE5LCAyMCwgMjA5LCA0MiwgMTksIDIwLCAyMDksIDEwOCwgCi0gICAgMTksIDIwLCAyMDksIDEwNywgMTksIDIwLCAyMDksIDEyLCAxOSwgMjAsIDE5NiwgMjA5LCAxMiwgMTksIDIwLCAyMDksIAotICAgIDExMCwgMTksIDIwLCAyMDcsIDIyNywgMTksIDIwLCAyMDcsIDIyNSwgMTksIDIwLCAyMDcsIDIyNCwgMTksIDIwLCAyMDcsIAotICAgIDIyOSwgMTksIDIwLCAyMDcsIDIzMCwgMTksIDIwLCAyMDcsIDEyNCwgMTksIDIwLCAyMDcsIDEyMywgMTksIDIwLCAyMDcsIAotICAgIDEyMiwgMTksIDIwLCAyMDcsIDEyNiwgMTksIDIwLCAyMjEsIDM5LCAyMzcsIDY3LCAxOSwgMjAsIDIyMSwgMzksIDIzNywgMywgCi0gICAgMTksIDIwLCAyMjEsIDM5LCAyMzYsIDIzOSwgMTksIDIwLCAyMjEsIDM5LCAyMzYsIDEzNiwgMTksIDIwLCAyMjEsIDM5LCAKLSAgICAyMzYsIDExNywgMTksIDIwLCAyMjEsIDM5LCAxNTIsIDE5LCAyMCwgMjIxLCAzOSwgMjM3LCAxNTcsIDE5LCAyMCwgMjIxLCAKLSAgICAzOSwgMjM3LCAxNzEsIDE5LCAyMCwgMjIxLCAzOCwgMjM3LCAxNzEsIDE5LCAyMCwgMjM2LCAyMjYsIDE5LCAyMCwgMjE3LCAKLSAgICAxMjIsIDE5LCAyMCwgMjE3LCA4OCwgMTksIDIwLCAyMTcsIDgzLCAxOSwgMjAsIDIxNywgNzcsIDE5LCAyMCwgMjE3LCA3MiwgCi0gICAgMTksIDIwLCAyMTcsIDEyNiwgMTksIDIwLCAyMTcsIDEyNSwgMTksIDIwLCAyMTcsIDEzNCwgMTksIDIwLCAyMDgsIDE4NiwgCi0gICAgMTksIDIwLCAyMDgsIDE4NCwgMTksIDIwLCAyMDgsIDE4MywgMTksIDIwLCAyMDgsIDE4NywgMTksIDIwLCAxOTYsIDIxNiwgCi0gICAgMTU4LCAxOSwgMjAsIDE5NiwgMjE2LCA1NywgMTksIDIwLCAxOTYsIDIxNSwgMjI3LCAxOSwgMjAsIDE5NiwgMjE2LCAyMjAsIAotICAgIDE5LCAyMCwgMjIyLCAyMDEsIDE5LCAyMCwgMjIyLCAxNTEsIDE5LCAyMCwgMjIyLCAxNDcsIDE5LCAyMCwgMjIyLCAxMjgsIAotICAgIDE5LCAyMCwgMjIyLCAxMjMsIDE5LCAyMCwgMjIyLCAyMDMsIDE5LCAyMCwgMjIyLCAyMDIsIDE5LCAyMCwgMjIyLCAyMDUsIAotICAgIDE5LCAyMCwgMjIxLCAyMjAsIDE5LCAyMCwgMjE0LCAyMDYsIDIxMywgNDMsIDE5LCAyMCwgMjE0LCAyMDYsIDIxMywgMTEsIAotICAgIDE5LCAyMCwgMjE0LCAyMDYsIDIxMiwgMjQyLCAxOSwgMjAsIDIxNCwgMjA2LCAyMTMsIDkwLCAxOSwgMjAsIDIwMywgMjQyLCAKLSAgICAyMDksIDkyLCAxOSwgMjAsIDIwMywgMjQyLCAyMDksIDcwLCAxOSwgMjAsIDIwMywgMjQyLCAyMDksIDQ3LCAxOSwgMjAsIAotICAgIDIwMywgMjQyLCAyMDksIDEwOCwgMTksIDIwLCAyMDMsIDI0MiwgMjA5LCAxMTAsIDE5LCAyMCwgMjI3LCAxNTUsIDE5LCAyMCwgCi0gICAgMjI3LCAxNTQsIDE5LCAyMCwgMjI3LCAxNTMsIDE5LCAyMCwgMjI3LCAxNTIsIDE5LCAyMCwgMjI3LCAxNjEsIDE5LCAyMCwgCi0gICAgMjI3LCAxNjAsIDE5LCAyMCwgMjI3LCAxNjIsIDE5LCAyMCwgMjA5LCAxMDksIDIwOSwgOTIsIDE5LCAyMCwgMjA5LCAxMDksIAotICAgIDIwOSwgNzAsIDE5LCAyMCwgMjA5LCAxMDksIDIwOSwgNjQsIDE5LCAyMCwgMjA5LCAxMDksIDIwOSwgNDcsIDE5LCAyMCwgCi0gICAgMjA5LCAxMDksIDIwOSwgNDIsIDE5LCAyMCwgMjA5LCAxMDksIDIwOSwgMTA4LCAxOSwgMjAsIDIwOSwgMTA5LCAyMDksIAotICAgIDEwNywgMTksIDIwLCAyMDksIDEwOSwgMjA5LCAxMTAsIDE5LCAyMCwgMjUxLCA1MCwgMjQ5LCAyNTUsIDE5LCAyMCwgMjQ4LCAKLSAgICA0MCwgNzQsIDE5LCAyMCwgMjQ4LCA0MCwgNzUsIDE5LCAyMCwgMjQ4LCA0MCwgNzgsIDE5LCAyMCwgMjQ4LCA0MCwgNjMsIAotICAgIDE5LCAyMCwgMjQ4LCA0MCwgMjA0LCA2MiwgMTksIDIwLCAyNDgsIDQwLCAyMDQsIDMwLCAxOSwgMjAsIDI0OCwgNDAsIDIwNCwgCi0gICAgMCwgMTksIDIwLCAyNDgsIDQwLCAyMDQsIDExMSwgMTksIDIwLCAyNDgsIDQwLCAyMjIsIDI0MCwgMTksIDIwLCAyNDgsIDQwLCAKLSAgICAyMjIsIDEwMCwgMTksIDIwLCAyNDgsIDQwLCAyMjEsIDE5MSwgMTksIDIwLCAyNDgsIDQwLCAyMDEsIDIwMSwgMTksIDIwLCAKLSAgICAyNDgsIDQwLCAyMjksIDIwMSwgMTksIDIwLCAyNDgsIDQwLCAyMjksIDEwMCwgMTksIDIwLCAyNDgsIDQwLCAyMjksIDI2LCAKLSAgICAxOSwgMjAsIDI0OCwgNDAsIDE3MywgMTksIDIwLCAyMTQsIDIwNiwgMjM3LCA2NywgMTksIDIwLCAyMTQsIDIwNiwgMjM3LCAKLSAgICAzLCAxOSwgMjAsIDIxNCwgMjA2LCAyMzYsIDEzNiwgMTksIDIwLCAyMTQsIDIwNiwgMTUyLCAxOSwgMjAsIDg4LCAyMzgsIAotICAgIDg3LCAxOSwgMjAsIDg4LCAyMzgsIDkxLCAxOSwgMjAsIDg4LCAyMzgsIDEwNSwgMTksIDIwLCA4OCwgMjM4LCAxMDQsIDE5LCAKLSAgICAyMCwgODgsIDIzOCwgOTMsIDE5LCAyMCwgODgsIDIzOCwgMTE5LCAxOSwgMjAsIDg4LCAyMTUsIDE0NSwgMTksIDIwLCA4OCwgCi0gICAgMjE1LCAyMjcsIDE5LCAyMCwgODgsIDIxNiwgMTU4LCAxOSwgMjAsIDg4LCAyMTYsIDEzNSwgMTksIDIwLCA4OCwgMjE2LCAKLSAgICA1NywgMTksIDIwLCA4OCwgMjE2LCAyMjAsIDE5LCAyMCwgODgsIDIwMywgMjE3LCAxOSwgMjAsIDg4LCAyMDQsIDAsIDE5LCAKLSAgICAyMCwgODgsIDIwNCwgNjIsIDE5LCAyMCwgODgsIDIwNCwgNTUsIDE5LCAyMCwgODgsIDIwNCwgMzAsIDE5LCAyMCwgODgsIAotICAgIDIwNCwgMTExLCAxOSwgMjAsIDg4LCAyMzUsIDI0NywgMTksIDIwLCA4OCwgMjM1LCAyNDgsIDE5LCAyMCwgODgsIDIzNSwgCi0gICAgMjUxLCAxOSwgMjAsIDg4LCAyMzUsIDI1MCwgMTksIDIwLCA4OCwgMjM1LCAyNDksIDE5LCAyMCwgODgsIDIzNSwgMjU0LCAKLSAgICAxOSwgMjAsIDg4LCAyMDksIDIyLCAxOSwgMjAsIDg4LCAyMDksIDQ3LCAxOSwgMjAsIDg4LCAyMDksIDkyLCAxOSwgMjAsIAotICAgIDg4LCAyMDksIDkwLCAxOSwgMjAsIDg4LCAyMDksIDcwLCAxOSwgMjAsIDg4LCAyMDksIDEwOCwgMTksIDIwLCA4OCwgMjA3LCAKLSAgICAyMDgsIDE5LCAyMCwgODgsIDIwNywgMjE4LCAxOSwgMjAsIDg4LCAyMDcsIDIzNiwgMTksIDIwLCA4OCwgMjA3LCAyMzUsIAotICAgIDE5LCAyMCwgODgsIDIwNywgMjIwLCAxOSwgMjAsIDg4LCAyMDcsIDI0MSwgMTksIDIwLCA4OCwgMjE3LCAxOTEsIDE5LCAyMCwgCi0gICAgODgsIDIxOCwgNjksIDE5LCAyMCwgODgsIDIxOSwgMzQsIDE5LCAyMCwgODgsIDIxOSwgMjMsIDE5LCAyMCwgODgsIDIxOCwgCi0gICAgMTY3LCAxOSwgMjAsIDg4LCAxODUsIDE5LCAyMCwgODgsIDIxOSwgMTg0LCAxOSwgMjAsIDg4LCAyMzcsIDIzMCwgMTksIDIwLCAKLSAgICA4OCwgMjM4LCAzOSwgMTksIDIwLCA4OCwgMjM4LCAxOTAsIDE5LCAyMCwgODgsIDIzOCwgMTgyLCAxOSwgMjAsIDg4LCAyMzgsIAotICAgIDgxLCAxOSwgMjAsIDg4LCAyMzksIDgsIDE5LCAyMCwgODgsIDIyOSwgMTA5LCAxOSwgMjAsIDg4LCAyMjksIDExNSwgMTksIAotICAgIDIwLCA4OCwgMjI5LCAxMjksIDE5LCAyMCwgODgsIDIyOSwgMTI4LCAxOSwgMjAsIDg4LCAyMjksIDEyMiwgMTksIDIwLCA4OCwgCi0gICAgMjI5LCAxNDQsIDE5LCAyMCwgODgsIDIyOSwgNDIsIDE5LCAyMCwgODgsIDIyOSwgNDMsIDE5LCAyMCwgODgsIDIyOSwgNDYsIAotICAgIDE5LCAyMCwgODgsIDIyOSwgNDUsIDE5LCAyMCwgODgsIDIyOSwgNDQsIDE5LCAyMCwgODgsIDIyOSwgNDcsIDE5LCAyMCwgCi0gICAgODgsIDIyOSwgNDgsIDE5LCAyMCwgODgsIDIyMSwgODQsIDE5LCAyMCwgODgsIDIyMSwgMTkxLCAxOSwgMjAsIDg4LCAyMjIsIAotICAgIDI0MCwgMTksIDIwLCA4OCwgMjIyLCAyMzUsIDE5LCAyMCwgODgsIDIyMiwgMTAwLCAxOSwgMjAsIDg4LCAyMDEsIDIwMSwgCi0gICAgMTksIDIwLCA4OCwgMjIzLCAyNDYsIDE5LCAyMCwgODgsIDIyNCwgODIsIDE5LCAyMCwgODgsIDIyNSwgMjAsIDE5LCAyMCwgCi0gICAgODgsIDIyNSwgOCwgMTksIDIwLCA4OCwgMjI0LCAxNTUsIDE5LCAyMCwgODgsIDE5MiwgMTksIDIwLCA4OCwgMjAyLCAyMTMsIAotICAgIDE5LCAyMCwgODgsIDIwMiwgMjQ3LCAxOSwgMjAsIDg4LCAyMDMsIDUyLCAxOSwgMjAsIDg4LCAyMDMsIDQ5LCAxOSwgMjAsIAotICAgIDg4LCAyMDMsIDExLCAxOSwgMjAsIDg4LCAxOTgsIDE5LCAyMCwgODgsIDIzMCwgODIsIDE5LCAyMCwgMjE0LCAyMDYsIDIzMCwgCi0gICAgODIsIDE5LCAyMCwgODgsIDIzMCwgMTAxLCAxOSwgMjAsIDg4LCAyMzAsIDE2MSwgMTksIDIwLCA4OCwgMjMwLCAxNTksIDE5LCAKLSAgICAyMCwgODgsIDIzMCwgMTQxLCAxOSwgMjAsIDIxNCwgMjA2LCAyMzAsIDE0MSwgMTksIDIwLCA4OCwgMjMwLCAxODEsIDE5LCAKLSAgICAyMCwgODgsIDIzMCwgMTE0LCAxOSwgMjAsIDg4LCAyMzAsIDExOCwgMTksIDIwLCA4OCwgMjMwLCAxMjgsIDE5LCAyMCwgODgsIAotICAgIDIzMCwgMTI3LCAxOSwgMjAsIDg4LCAyMzAsIDEyNiwgMTksIDIwLCA4OCwgMjMwLCAxMjksIDE5LCAyMCwgODgsIDIyNiwgCi0gICAgMjM5LCAxOSwgMjAsIDg4LCAyMjcsIDQ5LCAxOSwgMjAsIDg4LCAyMjcsIDIzNCwgMTksIDIwLCA4OCwgMjI3LCAyMjYsIDE5LCAKLSAgICAyMCwgODgsIDIyNywgMTQ4LCAxOSwgMjAsIDg4LCAyMjgsIDExMywgMTksIDIwLCA4OCwgMjQzLCAxMTcsIDE5LCAyMCwgODgsIAotICAgIDI0MywgMTE4LCAxOSwgMjAsIDg4LCAyNDMsIDEyMywgMTksIDIwLCA4OCwgMjQzLCAxMjIsIDE5LCAyMCwgODgsIDI0MywgCi0gICAgMTE5LCAxOSwgMjAsIDg4LCAyNDMsIDEyNCwgMTksIDIwLCA4OCwgMjI3LCAxNTEsIDE5LCAyMCwgODgsIDIyNywgMTUzLCAKLSAgICAxOSwgMjAsIDg4LCAyMjcsIDE1NywgMTksIDIwLCA4OCwgMjI3LCAxNTYsIDE5LCAyMCwgODgsIDIyNywgMTU1LCAxOSwgMjAsIAotICAgIDg4LCAyMjcsIDE2MSwgMTksIDIwLCA4OCwgMjA4LCAxODEsIDE5LCAyMCwgODgsIDIwOCwgMTgzLCAxOSwgMjAsIDg4LCAKLSAgICAyMDgsIDE4NiwgMTksIDIwLCA4OCwgMjA4LCAxODUsIDE5LCAyMCwgODgsIDIwOCwgMTg0LCAxOSwgMjAsIDg4LCAyMDgsIAotICAgIDE4NywgMTksIDIwLCA4OCwgMjA4LCAxNzYsIDE5LCAyMCwgODgsIDIwOCwgMTc3LCAxOSwgMjAsIDg4LCAyMDgsIDE4OSwgCi0gICAgMTksIDIwLCA4OCwgMjA4LCAxODgsIDE5LCAyMCwgODgsIDIwOCwgMTc4LCAxOSwgMjAsIDg4LCAyMDgsIDE5MCwgMTksIDIwLCAKLSAgICA4OCwgMjAyLCA2LCAxOSwgMjAsIDg4LCAyMDIsIDE3LCAxOSwgMjAsIDg4LCAyMDIsIDkyLCAxOSwgMjAsIDg4LCAyMDIsIAotICAgIDkwLCAxOSwgMjAsIDg4LCAyMDIsIDM5LCAxOSwgMjAsIDg4LCAyMDIsIDExNiwgMTksIDIwLCA4OCwgMjAyLCAxNTksIDE5LCAKLSAgICAyMCwgODgsIDgxLCAyMDIsIDE1OSwgMTksIDIwLCA4OCwgMjQxLCAyNDIsIDE5LCAyMCwgODgsIDI0MSwgMjQzLCAxOSwgMjAsIAotICAgIDg4LCAyNDEsIDI1MiwgMTksIDIwLCA4OCwgMjQxLCAyNTEsIDE5LCAyMCwgODgsIDI0MSwgMjQ2LCAxOSwgMjAsIDg4LCAKLSAgICAyNDEsIDI1NSwgMTksIDIwLCA4OCwgMjExLCAxMCwgMTksIDIwLCA4OCwgMjEyLCAxMywgMTksIDIwLCA4OCwgMjE0LCAxNzcsIAotICAgIDE5LCAyMCwgODgsIDIxNCwgMTY1LCAxOSwgMjAsIDg4LCAyMTIsIDE2MiwgMTksIDIwLCA4OCwgMjE1LCAzNiwgMTksIDIwLCAKLSAgICA4OCwgMjEyLCAxOTksIDE5LCAyMCwgODgsIDIxMiwgMjQyLCAxOSwgMjAsIDg4LCAyMTMsIDQzLCAxOSwgMjAsIDg4LCAyMTMsIAotICAgIDQxLCAxOSwgMjAsIDg4LCAyMTMsIDExLCAxOSwgMjAsIDg4LCAyMTMsIDkwLCAxOSwgMjAsIDg4LCAyMTMsIDkyLCAxOSwgCi0gICAgMjAsIDg4LCAyMDcsIDI0OSwgMTksIDIwLCA4OCwgMjA3LCAyNTMsIDE5LCAyMCwgODgsIDIwOCwgMTQsIDE5LCAyMCwgODgsIAotICAgIDIwOCwgMTMsIDE5LCAyMCwgODgsIDIwNywgMjU1LCAxOSwgMjAsIDg4LCAyMDgsIDIwLCAxOSwgMjAsIDg4LCAyNDYsIDk4LCAKLSAgICAxOSwgMjAsIDg4LCAyNDYsIDExNiwgMTksIDIwLCA4OCwgMjQ2LCAxNzAsIDE5LCAyMCwgODgsIDI0NiwgMTY2LCAxOSwgMjAsIAotICAgIDg4LCAyNDYsIDE0MiwgMTksIDIwLCA4OCwgMjQ2LCAxOTksIDE5LCAyMCwgODgsIDIwNywgMjExLCAxOSwgMjAsIDg4LCAKLSAgICAyMDcsIDIxMiwgMTksIDIwLCA4OCwgMjA3LCAyMTUsIDE5LCAyMCwgODgsIDIwNywgMjE0LCAxOSwgMjAsIDg4LCAyMDcsIAotICAgIDIxMywgMTksIDIwLCA4OCwgMjA3LCAyMTYsIDE5LCAyMCwgMjQ2LCAxNDMsIDU0LCAxOSwgMjAsIDIzOSwgMTAyLCAyMTEsIAotICAgIDYxLCAxOSwgMjAsIDIxNywgMTE4LCAxOSwgMjAsIDIyMiwgMTk5LCAxOSwgMjAsIDIyMSwgMjE3LCAxOSwgMjAsIDIyMSwgCi0gICAgMjE2LCAxOSwgMjAsIDIyMSwgMjE1LCAxOSwgMjAsIDIyMSwgMjE0LCAxOSwgMjAsIDIyMSwgMjE5LCAxOSwgMjAsIDIyMSwgCi0gICAgMjE4LCAxOSwgMjAsIDIwMywgMjQyLCAyMDksIDEwLCAxOSwgMjAsIDIwMywgMjQyLCAyMDksIDksIDE5LCAyMCwgMjAzLCAKLSAgICAyNDIsIDIwOSwgOCwgMTksIDIwLCAyMDMsIDI0MiwgMjA5LCA3LCAxOSwgMjAsIDIwMywgMjQyLCAyMDksIDYsIDE5LCAyMCwgCi0gICAgMjAzLCAyNDIsIDIwOSwgMTMsIDE5LCAyMCwgMjAzLCAyNDIsIDIwOSwgMTIsIDE5LCAyMCwgMjAzLCAyNDIsIDQ2LCAyMDksIAotICAgIDExMCwgMTksIDIwLCAyNDgsIDQwLCAyMDQsIDE0NCwgMjIwLCA2NCwgMjExLCAyMjksIDgyLCAyMjAsIDY0LCAxLCAyNDgsIAotICAgIDEzMiwgMjIwLCA2NCwgMSwgMjI2LCAyMjUsIDIyMCwgNjQsIDEsIDI0MCwgNTcsIDIyMCwgNjQsIDEsIDIxNSwgMTYsIDIyMCwgCi0gICAgNjQsIDEsIDIyMiwgNTYsIDIyMCwgNjQsIDEsIDIwNywgMzYsIDIyMCwgNjQsIDEsIDI0NCwgMTg2LCAyMjAsIDY0LCAxLCAKLSAgICAyMDgsIDIxNCwgMjIwLCA2NCwgMSwgMjQ1LCAyNDUsIDIyMCwgNjQsIDEsIDI0NiwgMjI1LCAyMjAsIDY0LCAxLCAyMjMsIAotICAgIDIzMywgMjIwLCA2NCwgMSwgMjM4LCAyMCwgMjIwLCA2NCwgMSwgMjIyLCAxODksIDIyMCwgNjQsIDEsIDIxMSwgNTQsIDIyMCwgCi0gICAgNjQsIDEsIDIxNSwgMTM4LCAyMjAsIDY0LCAxLCAyNTEsIDYxLCAyMjAsIDY0LCAxLCAyMjAsIDIyLCAyMjAsIDY0LCAxLCAKLSAgICAyMDYsIDIxMCwgMjIwLCA2NCwgMSwgMjQxLCAxODcsIDIyMCwgNjQsIDEsIDIzMCwgMjMzLCAyMjAsIDY0LCAxLCAyNDEsIAotICAgIDE4OCwgMjIwLCA2NCwgMSwgMjE5LCAyNDQsIDIyMCwgNjQsIDEsIDIwNywgMTUsIDIyMCwgNjQsIDEsIDIzMSwgODksIDIyMCwgCi0gICAgNjQsIDEsIDI0MSwgMTg1LCAyMjAsIDY0LCAxLCAyMTksIDEzLCAyMjAsIDY0LCAyNDAsIDU2LCA4MiwgMjIwLCA2NCwgMjE2LCAKLSAgICA3MywgMjQwLCA1NiwgODIsIDE5NywgMSwgMjQwLCA0NiwgMjQwLCAzOCwgMjQwLCA2MSwgMjQwLCAxNzQsIDE5NywgMSwgCi0gICAgMjA2LCAxNjQsIDE5NywgMSwgMjA2LCAxOTUsIDIwNiwgMjExLCA2OCwgMTk3LCAxLCAyMDIsIDIxNiwgMTk3LCAxLCAyMDMsIAotICAgIDEyNCwgMTk3LCAxLCAyMDQsIDE0NCwgMTk3LCAxLCAyMDksIDE1LCAyMDksIDE0LCAyMDksIDQwLCAxOTcsIDEsIDI0MCwgCi0gICAgMjQzLCAxOTcsIDEsIDI1MCwgMTk5LCA2MywgMTk3LCAxLCAyMTksIDIyOCwgNzgsIDE5NywgMSwgMjUxLCAxNDIsIDYzLCAKLSAgICAxOTcsIDEsIDI1MSwgOTMsIDE5NywgMSwgMjI3LCAyNCwgNzgsIDE5NywgMSwgMjEyLCAyMjEsIDc4LCAxOTcsIDEsIDc4LCAKLSAgICAxOTcsIDEsIDIyMCwgNzMsIDE5NywgMSwgMjIwLCAzMSwgMTk3LCAxLCAyMTYsIDE5NSwgMjE2LCAyMDgsIDIxNiwgMTIwLCAKLSAgICAxNDYsIDE5NywgMSwgMjI5LCAyMTYsIDE5NywgMSwgMjQ2LCAyMjEsIDE5NywgMSwgMjI5LCAyMTcsIDIzMCwgNTQsIDE5NywgCi0gICAgMSwgMjM5LCA3NSwgMTk3LCAxLCAyNDEsIDc4LCAxOTcsIDEsIDIzOCwgMTg1LCAyMzcsIDE3NywgMjM5LCA3NSwgMTk3LCAxLCAKLSAgICAyMzgsIDIyNCwgMTk3LCAxLCAyMDMsIDIwOSwgMjAzLCAyMDAsIDIwNCwgMTQ0LCAxOTcsIDEsIDIzNywgMTQ5LCAyMzcsIAotICAgIDE3MSwgMTk3LCAxLCAyMzcsIDE1MywgMjM3LCAxNzEsIDE5NywgMSwgMjI3LCAyNiwgMjM3LCAxNzEsIDE5NywgMSwgMjEyLCAKLSAgICAyMjQsIDIzNywgMTcxLCAxOTcsIDEsIDIyMywgNjMsIDIyMSwgMiwgMjIzLCA2NCwgMjIzLCAxNjMsIDE5NywgMSwgMjEyLCAKLSAgICAyMjIsIDIyMywgMTYzLCAxOTcsIDEsIDI0MiwgODAsIDE5NywgMSwgMjMwLCAyMTIsIDIzMCwgMjE2LCAyMzAsIDIwMywgNzUsIAotICAgIDE5NywgMSwgNzQsIDE5NywgMSwgMjMwLCAxNTIsIDIzMCwgMTg0LCAxOTcsIDEsIDIzOCwgMTY5LCAxOTcsIDEsIDIyNywgCi0gICAgMjcsIDI1MSwgMTA5LCAxOTcsIDEsIDIxMiwgMjI2LCA2MywgMTk3LCAxLCAyMzAsIDE5NSwgMjQxLCA1MSwgMTk3LCAxLCAKLSAgICAyMTgsIDIyNiwgMjE4LCAyNTEsIDIxOSwgMTg0LCAxOTcsIDEsIDI1MSwgMjMsIDI0MSwgNDksIDE5NywgMSwgMjExLCAyMzQsIAotICAgIDE5NCwgMTk3LCAxLCAyMTIsIDE0NiwgMjI3LCAyMywgMTk0LCAxOTcsIDEsIDIxMiwgMjIwLCAxOTQsIDE5NywgMSwgMjQ3LCAKLSAgICAxMjUsIDE5NywgMSwgMjAyLCAxNTksIDE5NywgMSwgMjA4LCAxOTUsIDIwOCwgMjA3LCAyMDcsIDEwOCwgMjEwLCA2OSwgCi0gICAgMTk3LCAxLCAyMTIsIDIxOSwgMjEwLCA2OSwgMTk3LCAxLCAyNDUsIDUxLCAxOTcsIDEsIDI0OCwgMTExLCAyNDgsIDExNCwgCi0gICAgMjQ4LCA0NiwgMjQ5LCAyNTUsIDE5NywgMSwgMjEyLCAyMjUsIDI0OSwgMjU1LCAxOTcsIDEsIDI0MiwgNzksIDE5NywgMSwgCi0gICAgMjIwLCAyLCAxOTcsIDEsIDI0MSwgMTQ2LCAyNDEsIDE0OCwgNzQsIDE5NywgMSwgMjI1LCAxMTMsIDIyNSwgMTIzLCAyMjYsIAotICAgIDE4NSwgMTk3LCAxLCAyMjcsIDI1LCAyMjYsIDE4NSwgMTk3LCAxLCAyMTIsIDIyMywgMjI2LCAxODUsIDE5NywgMSwgMjI3LCAKLSAgICAyNDksIDIyOCwgOTEsIDIyNywgMzQsIDE1OSwgMTk3LCAxLCAyNDIsIDgxLCAxOTcsIDEsIDIzMSwgMjMsIDE5NywgMSwgCi0gICAgMjMxLCAyNCwgMTk3LCAxLCAyNDQsIDIwMCwgMjQ0LCAyMDYsIDI0NSwgNTEsIDE5NywgMSwgMjE5LCAyMjIsIDI0MCwgMjQyLCAKLSAgICA3OCwgMTk3LCAxLCAyNDEsIDE4MywgMTk3LCAxLCAyMzAsIDIzMiwgMTk3LCAxLCAyNDUsIDcxLCAxOTcsIDEsIDI0NywgNzUsIAotICAgIDE5NywgMSwgMjQ2LCAyMzcsIDE5NywgMSwgMjExLCA5OSwgMTk3LCAxLCAyMjcsIDIyLCAxOTcsIDEsIDIxMiwgMjE4LCAKLSAgICAxOTcsIDEsIDIzNSwgMTYxLCAxOTcsIDEsIDIxNywgMTM0LCAxOTcsIDEsIDIwMywgMTk2LCAxOTcsIDIxMiwgMTIwLCAyMTcsIAotICAgIDE3OCwgMTk3LCAyMjMsIDIyNiwgMjE3LCAxNzgsIDE5NywgMjQ1LCAxMzEsIDIxNywgMTc4LCAxOTcsIDI1MCwgMTA4LCA5NywgCi0gICAgMTk3LCAyMDcsIDE2MiwgOTcsIDE5NywgMjQ4LCAxMzAsIDk3LCAxOTcsIDEsIDIzMCwgNTQsIDE5NywgMSwgMjEzLCA5MiwgCi0gICAgMTk3LCAxLCAyMjAsIDE4LCAxOTcsIDEsIDIzOSwgMTMxLCAyNDcsIDIwLCAyMTksIDIyNywgMTk3LCAxLCAyMzksIDEzMSwgCi0gICAgMjQ3LCAyMCwgMjMwLCAyMTUsIDE5NywgMSwgMjM5LCAxMzEsIDI0NywgMjAsIDI0MSwgMTQ3LCAxOTcsIDEsIDIzOSwgMTMxLCAKLSAgICAyNDcsIDIwLCAyNTEsIDE0MSwgMTk3LCAxLCAyMzksIDEzMSwgMjQ3LCAyMCwgMjUxLCA5MywgMjA5LCAyNTQsIDEsIDYzLCAKLSAgICAyMDksIDI1NCwgMSwgNzUsIDIwOSwgMjU0LCAxLCA2OCwgMjA5LCAyNTQsIDEsIDE3MywgMjA5LCAyNTQsIDEsIDIzOSwgOCwgCi0gICAgMjA5LCAyNTQsIDEsIDIyMiwgMjAzLCAyMDksIDI1NCwgMSwgMjEwLCAyMiwgMjA5LCAyNTQsIDEsIDI0NCwgMjEyLCAyMDksIAotICAgIDI1NCwgMSwgMjAxLCAyMDEsIDIwOSwgMjU0LCAxLCAxODUsIDIwOSwgMjU0LCAxLCAyNDksIDMyLCAyMDksIDI1NCwgMSwgCi0gICAgMTkyLCAyMDksIDI1NCwgMSwgMTk4LCAyMDksIDI1NCwgMSwgMjI4LCAxMTMsIDIwOSwgMjU0LCAxLCAyMDQsIDExMSwgMjA5LCAKLSAgICAyNTQsIDEsIDIxNSwgMzYsIDIwOSwgMjU0LCAxLCAxNTIsIDIwOSwgMjU0LCAyMiwgMiwgNzUsIDIwOSwgMjU0LCAyMiwgMiwgCi0gICAgNjgsIDIwOSwgMjU0LCAyLCAyMDUsIDIwNCwgMjM3LCA5NiwgMSwgNjMsIDIzNywgOTYsIDEsIDc1LCAyMzcsIDk2LCAxLCAKLSAgICA2OCwgMjM3LCA5NiwgMSwgMTczLCAyMzcsIDk2LCAxLCAyMzksIDgsIDIzNywgOTYsIDEsIDIyMiwgMjAzLCAyMzcsIDk2LCAKLSAgICAxLCAyMTAsIDIyLCAyMzcsIDk2LCAxLCAyNDQsIDIxMiwgMjM3LCA5NiwgMSwgMjAxLCAyMDEsIDIzNywgOTYsIDEsIDE4NSwgCi0gICAgMjM3LCA5NiwgMSwgMjQ5LCAzMiwgMjM3LCA5NiwgMSwgMTkyLCAyMzcsIDk2LCAxLCAxOTgsIDIzNywgOTYsIDEsIDIxNiwgCi0gICAgMjIwLCAyMzcsIDk2LCAxLCAyMjgsIDExMywgMjM3LCA5NiwgMSwgMjA0LCAxMTEsIDIzNywgOTYsIDEsIDIxNSwgMzYsIAotICAgIDIzNywgOTYsIDEsIDE1MiwgMjM3LCA5NiwgMjIsIDIsIDc1LCAyMzcsIDk2LCAyMiwgMiwgNjgsIDIzNywgOTYsIDIsIDIxOSwgCi0gICAgMTI0LCAyMTgsIDE4NSwgMjEyLCAxMjAsIDIxNywgMTc4LCAyMTgsIDE4NSwgNTIsIDIxNywgMTc4LCAyNDcsIDE4NSwgMSwgCi0gICAgNjMsIDI0NywgMTg1LCAxLCA3NSwgMjQ3LCAxODUsIDEsIDY4LCAyNDcsIDE4NSwgMSwgMTczLCAyNDcsIDE4NSwgMSwgMjM5LCAKLSAgICA4LCAyNDcsIDE4NSwgMSwgMjIyLCAyMDMsIDI0NywgMTg1LCAxLCAyMTAsIDIyLCAyNDcsIDE4NSwgMSwgMjQ0LCAyMTIsIAotICAgIDI0NywgMTg1LCAxLCAyMDEsIDIwMSwgMjQ3LCAxODUsIDEsIDE4NSwgMjQ3LCAxODUsIDEsIDI0OSwgMzIsIDI0NywgMTg1LCAKLSAgICAxLCAxOTIsIDI0NywgMTg1LCAxLCAxOTgsIDI0NywgMTg1LCAxLCAyMTYsIDIyMCwgMjQ3LCAxODUsIDEsIDIyOCwgMTEzLCAKLSAgICAyNDcsIDE4NSwgMSwgMjA0LCAxMTEsIDI0NywgMTg1LCAxLCAyMTUsIDM2LCAyNDcsIDE4NSwgMSwgMTUyLCAyNDcsIDE4NSwgCi0gICAgMjIsIDIsIDc1LCAyNDcsIDE4NSwgMjIsIDIsIDY4LCAyMDksIDI1MywgMSwgNjMsIDIwOSwgMjUzLCAxLCA3NSwgMjA5LCAKLSAgICAyNTMsIDEsIDY4LCAyMDksIDI1MywgMSwgMTczLCAyMDksIDI1MywgMSwgMjM5LCA4LCAyMDksIDI1MywgMSwgMjIyLCAyMDMsIAotICAgIDIwOSwgMjUzLCAxLCAyMTAsIDIyLCAyMDksIDI1MywgMSwgMjQ0LCAyMTIsIDIwOSwgMjUzLCAxLCAyMDEsIDIwMSwgMjA5LCAKLSAgICAyNTMsIDEsIDE4NSwgMjA5LCAyNTMsIDEsIDI0OSwgMzIsIDIwOSwgMjUzLCAxLCAxOTIsIDIwOSwgMjUzLCAxLCAxOTgsIAotICAgIDIwOSwgMjUzLCAxLCAyMjgsIDExMywgMjA5LCAyNTMsIDEsIDIwNCwgMTExLCAyMDksIDI1MywgMSwgMjE1LCAzNiwgMjA5LCAKLSAgICAyNTMsIDIyLCAyLCA3NSwgMjA5LCAyNTMsIDIyLCAyLCA2OCwgODUsIDEsIDE3MywgODUsIDEsIDIyOSwgMTQ0LCA4NSwgMSwgCi0gICAgMjI5LCAyNiwgODUsIDEsIDIyOSwgMTE1LCA4NSwgMSwgMjIyLCAxMjgsIDg1LCAxLCAyNDcsIDkyLCA4NSwgMSwgMjQ2LCAKLSAgICAxOTksIDg1LCAxLCAyNDUsIDI1NCwgODUsIDEsIDI0NiwgMTE2LCA4NSwgMSwgMjIwLCAyMzMsIDg1LCAxLCAyNDQsIDIxMiwgCi0gICAgODUsIDEsIDIwNywgMjI5LCA4NSwgMSwgMjQzLCAxMTMsIDg1LCAxLCAyMDcsIDIyNCwgODUsIDEsIDIyMSwgMTk3LCA4NSwgCi0gICAgMSwgMjEwLCAyMiwgODUsIDEsIDIwOSwgMTA4LCA4NSwgMSwgMTM1LCA4NSwgMSwgMjA5LCA0NywgODUsIDEsIDIyMSwgMTkxLCAKLSAgICA4NSwgMSwgMjQ5LCAzMiwgODUsIDEsIDIxOCwgMjA4LCA4NSwgMSwgMjE4LCA2OSwgODUsIDEsIDIxOCwgMTgwLCA4NSwgMSwgCi0gICAgMjI0LCA4MiwgODUsIDEsIDIwMiwgMjQ3LCA4NSwgMSwgMjE1LCAyMjcsIDg1LCAxLCAyMjcsIDQ5LCA4NSwgMSwgMjA1LCAKLSAgICAxODksIDg1LCAxLCAyMTMsIDkwLCA4NSwgMSwgMjExLCAxMjQsIDg1LCAxLCAyMTUsIDM2LCA4NSwgMSwgMTUyLCA4NSwgMSwgCi0gICAgMjI4LCAxMTMsIDg1LCAxLCAyMTcsIDEyNiwgODUsIDIzMSwgMzYsIDIyLCAyMTcsIDExMiwgODUsIDIzMSwgMzYsIDIyLCAKLSAgICAyMTcsIDEyNSwgODUsIDIzMSwgMzYsIDIyLCAyMTcsIDg4LCA4NSwgMjMxLCAzNiwgMjIsIDIxNywgODMsIDg1LCAyMzEsIAotICAgIDM2LCAyMiwgMjE3LCA2NSwgODUsIDIzMSwgMzYsIDIyLCAyMTcsIDM1LCA4NSwgMjMxLCAzNiwgMjIsIDIxNywgMjMsIDg1LCAKLSAgICAyMzEsIDM2LCAyMiwgMjE3LCAyMiwgODUsIDIzMSwgMzYsIDIyLCAyMTUsIDEwMiwgODUsIDIzMSwgMzYsIDIyLCAyMTUsIAotICAgIDk1LCA4NSwgMjMxLCAzNiwgMjIsIDIyNiwgMTk5LCA4NSwgMjMxLCAzNiwgMjIsIDIyNiwgMTg4LCA4NSwgMjMxLCAzNiwgCi0gICAgMjIsIDIxNywgMTA2LCA4NSwgMjMxLCAzNiwgMjIsIDIxNywgMTE4LCA4NSwgMjMxLCAzNiwgMjIsIDIxNywgNzMsIDIwNywgCi0gICAgMTIxLCAxMDUsIDg1LCAyMzEsIDM2LCAyMiwgMjE3LCA3MywgMjA3LCAxMjEsIDEwOCwgODUsIDIzMSwgMzYsIDIyLCAyMTcsIAotICAgIDEwOCwgODUsIDIyLCAyMzEsIDIxLCAyNTAsIDE0OCwgODUsIDIyLCAyMzEsIDIxLCAyNTIsIDI1LCA4NSwgMjIsIDIsIDI1MiwgCi0gICAgMjUsIDg1LCAyMiwgMiwgNzUsIDg1LCAyMiwgMiwgMjMxLCA4MywgODUsIDIyLCAyLCAyMDMsIDEyNCwgODUsIDIyLCAyLCAKLSAgICAyMDIsIDE2OSwgODUsIDIyLCAyLCA2OCwgODUsIDIyLCAyLCAyMDYsIDE3OCwgODUsIDIyLCAyLCAyMDcsIDM5LCA4NSwgMjIsIAotICAgIDIsIDIyMCwgNzMsIDg1LCAyMiwgMiwgMTk4LCA4NSwgMjIsIDIsIDIzMSwgMTEwLCA4NSwgMjIsIDIsIDc0LCA4NSwgMjIsIAotICAgIDIsIDI1MSwgMTA5LCA4NSwgMjIsIDIsIDI1MSwgNjQsIDg1LCAyMiwgMiwgMjIwLCAxOCwgODUsIDIyLCAyLCAyNTAsIDM0LCAKLSAgICA4NSwgMiwgMjIyLCA3MywgODUsIDIsIDIxNiwgMTU2LCA4NSwgMiwgMjAyLCAxODAsIDg1LCAyLCAyMjMsIDE5MCwgODUsIDIsIAotICAgIDIwOCwgNzMsIDg1LCAyLCAyNDgsIDIzMywgODUsIDIsIDIxNSwgMjIyLCA4NSwgMiwgMjA4LCAxNzEsIDg1LCAyLCAyMzAsIAotICAgIDExLCA4NSwgMiwgMjUxLCA2NiwgODUsIDIsIDIxNCwgMjQ0LCAyMTQsIDIzNywgODUsIDIsIDIwNSwgMjAxLCA4NSwgMiwgCi0gICAgMjQ1LCAyNDgsIDg1LCAyLCAyNDgsIDIwNSwgODUsIDIsIDIyOSwgMTM2LCA4NSwgMiwgMjQ4LCAyMjgsIDg1LCAyLCAyNDcsIAotICAgIDY0LCAyMTgsIDEzMCwgMjI4LCAxNzMsIDg1LCAyLCAyMjcsIDIwMywgMjA4LCAxNDgsIDg1LCAyLCAyNDgsIDEwMCwgODUsIAotICAgIDIsIDIxOCwgMTgyLCAyMjMsIDI0MywgODUsIDIsIDIyOSwgNCwgODUsIDI0NSwgOTIsIDE2LCAyMTYsIDQ5LCA4NSwgMiwgCi0gICAgMjUwLCAxNiwgODUsIDIsIDI1MCwgMzcsIDg1LCAxNywgMjAyLCA4NCwgODUsIDE3LCAxMDUsIDg1LCAxNywgMTA4LCA4NSwgCi0gICAgMTcsIDE0NywgODUsIDE3LCAxNDksIDg1LCAxNywgMTcwLCA4NSwgMTcsIDE5NSwgODUsIDE3LCAyMTMsIDExMSwgODUsIDE3LCAKLSAgICAxOTksIDg1LCAxNywgMjIyLCA2MywgODUsIDE2LCAyMjcsIDIwMywgMjUwLCAzOSwgMjExLCAyNTMsIDg1LCAxNiwgMjI3LCAKLSAgICAyMDMsIDI1MCwgMzksIDIyMywgMjEwLCA4NSwgMTYsIDIyNywgMjAzLCAyNTAsIDM5LCAyMTgsIDEyOSwgODUsIDE2LCAyMjcsIAotICAgIDIwMywgMjUwLCAzOSwgMjQ4LCAxMzMsIDg1LCAxNiwgMjI3LCAyMDMsIDI1MCwgMzksIDI0NywgMTY1LCA4NSwgMTYsIDIyNywgCi0gICAgMjAzLCAyNTAsIDM5LCAyMTgsIDcsIDg1LCAxNiwgMjI3LCAyMDMsIDI1MCwgMzksIDIxOCwgMSwgODUsIDE2LCAyMjcsIAotICAgIDIwMywgMjUwLCAzOSwgMjE3LCAyNTUsIDg1LCAxNiwgMjI3LCAyMDMsIDI1MCwgMzksIDIxOCwgNSwgODUsIDE2LCAyMjcsIAotICAgIDIwMywgMjUwLCAzOSwgMjE4LCAzLCA5NCwgMjQ4LCA1OSwgOTQsIDI0MSwgMTA4LCA5NCwgMjQ1LCAyMzMsIDk0LCAyMzksIAotICAgIDEwMiwgMjExLCA2MSwgOTQsIDI0NSwgMjQyLCA5NCwgMjM5LCAxNDcsIDI0MywgODMsIDk0LCAyMDgsIDE3MCwgMjEyLCA3LCAKLSAgICAyMzUsIDIyMCwgOTQsIDIxMiwgMTYwLCA0LCAyNDcsIDI0NCwgMjI1LCA4OCwgOTQsIDIyNSwgMTE5LCAyNDUsIDIzMywgOTQsIAotICAgIDIyNSwgMTE5LCAyMzksIDEwMiwgMjExLCA2MSwgOTQsIDIyMiwgNTQsIDk0LCAyMzksIDEzMCwgNTcsIDIxNCwgMTUxLCAKLSAgICAxMDUsIDk0LCAyMzksIDEzMCwgNTcsIDIxNCwgMTUxLCAxMDgsIDk0LCAyMzksIDEzMCwgNTcsIDIxNCwgMTUxLCAxNDcsIAotICAgIDk0LCAyMiwgMjEzLCAxMzAsIDk0LCAxNywgMjAyLCA4NCwgOTQsIDE3LCAxMDUsIDk0LCAxNywgMTA4LCA5NCwgMTcsIDE0NywgCi0gICAgOTQsIDE3LCAxNDksIDk0LCAxNywgMTcwLCA5NCwgMTcsIDE5NSwgOTQsIDE3LCAyMTMsIDExMSwgOTQsIDE3LCAxOTksIDk0LCAKLSAgICAxNywgMjIyLCA2MywgOTQsIDEsIDYzLCA5NCwgMSwgNzQsIDk0LCAxLCA3NSwgOTQsIDEsIDc4LCA5NCwgMSwgNjgsIDk0LCAKLSAgICAxLCAyMjAsIDczLCA5NCwgMSwgMjA3LCAyNCwgOTQsIDEsIDI0MSwgMTYxLCA5NCwgMSwgMjAxLCAyMDEsIDk0LCAxLCAyNTAsIAotICAgIDIyMywgOTQsIDEsIDI0OSwgMzIsIDk0LCAxLCAxODUsIDk0LCAxLCAyMTcsIDEyNiwgOTQsIDEsIDIzOSwgOCwgOTQsIDEsIAotICAgIDE5MiwgOTQsIDEsIDIyOCwgMTEzLCA5NCwgMSwgMjE1LCAzNiwgOTQsIDEsIDIxMywgOTAsIDk0LCAxLCAyMTAsIDIyLCA5NCwgCi0gICAgMSwgMjQ0LCAyMTIsIDk0LCAxLCAyNDYsIDE5OSwgOTQsIDEsIDIzMCwgMTgxLCA5NCwgMSwgMTk4LCA5NCwgMSwgMjE2LCAKLSAgICAyMjAsIDk0LCAxLCAyMDQsIDExMSwgOTQsIDEsIDI0MCwgMTA4LCA5NCwgMSwgMTczLCA5NCwgMSwgMjI5LCAxNDQsIDk0LCAKLSAgICAxLCAyMDgsIDIwLCA5NCwgMSwgMjAyLCAxMTYsIDk0LCAxLCAyMzcsIDE1NywgOTQsIDEsIDIwMiwgMTAsIDk0LCAxLCAyMjcsIAotICAgIDE2MSwgOTQsIDEsIDIwMiwgNjYsIDk0LCAxLCAyNDYsIDE0MiwgOTQsIDEsIDIwOCwgMTcwLCAxNjMsIDIyLCA1NCwgOTQsIAotICAgIDEsIDIwOCwgMTcwLCA3NCwgOTQsIDEsIDIwOCwgMTcwLCA3NSwgOTQsIDEsIDIwOCwgMTcwLCA3OCwgOTQsIDEsIDIwOCwgCi0gICAgMTcwLCA2OCwgOTQsIDEsIDIwOCwgMTcwLCAyMjAsIDczLCA5NCwgMSwgMjA4LCAxNzAsIDIwNywgMjQsIDk0LCAxLCAyMDgsIAotICAgIDE3MCwgMjUwLCAyMjMsIDk0LCAxLCAyMDgsIDE3MCwgMjQ5LCAzMiwgOTQsIDEsIDIwOCwgMTcwLCAxODUsIDk0LCAxLCAKLSAgICAyMDgsIDE3MCwgMjE3LCAxMjYsIDk0LCAxLCAyMDgsIDE3MCwgMjM5LCA4LCA5NCwgMSwgMjA4LCAxNzAsIDE5MiwgOTQsIDEsIAotICAgIDIwOCwgMTcwLCAyMTAsIDIyLCA5NCwgMSwgMjA4LCAxNzAsIDI0NCwgMjEyLCA5NCwgMSwgMjA4LCAxNzAsIDI0NiwgMTk5LCAKLSAgICA5NCwgMSwgMjA4LCAxNzAsIDIzMCwgMTgxLCA5NCwgMSwgMjA4LCAxNzAsIDIwOCwgMjAsIDk0LCAxLCAyMDgsIDE3MCwgCi0gICAgMTk4LCA5NCwgMSwgMjA4LCAxNzAsIDIwNCwgMTExLCA5NCwgMSwgMjA4LCAxNzAsIDE3MywgOTQsIDEsIDIwOCwgMTcwLCAKLSAgICAyMzksIDUsIDk0LCAxLCAyMDgsIDE3MCwgMjM3LCAxNTcsIDk0LCAxLCAyMDgsIDE3MCwgMjMwLCAxNDAsIDk0LCAxLCAyMDgsIAotICAgIDE3MCwgMjIyLCA5OCwgOTQsIDEsIDIwOCwgMTcwLCAyNDEsIDI1NSwgOTQsIDEsIDIxMiwgMTYwLCA3NCwgOTQsIDEsIDIxMiwgCi0gICAgMTYwLCA3NSwgOTQsIDEsIDIxMiwgMTYwLCAyMzAsIDE5MiwgOTQsIDEsIDIxMiwgMTYwLCAyMDcsIDI0LCA5NCwgMSwgMjEyLCAKLSAgICAxNjAsIDY4LCA5NCwgMSwgMjEyLCAxNjAsIDI1MCwgMjIzLCA5NCwgMSwgMjEyLCAxNjAsIDE3MywgOTQsIDEsIDIxMiwgCi0gICAgMTYwLCAyMzksIDgsIDk0LCAxLCAyMTIsIDE2MCwgMTUyLCA5NCwgMSwgMjEyLCAxNjAsIDE4NSwgOTQsIDEsIDIxMiwgMTYwLCAKLSAgICAyMTMsIDkwLCA5NCwgMSwgMjEyLCAxNjAsIDIxMCwgMjIsIDk0LCAxLCAyMTIsIDE2MCwgMjQ0LCAyMTIsIDk0LCAxLCAyMTIsIAotICAgIDE2MCwgMjMwLCAxODEsIDk0LCAxLCAyMTIsIDE2MCwgMjQwLCAxMDgsIDk0LCAxLCAyMTIsIDE2MCwgMjM5LCA1LCA5NCwgMSwgCi0gICAgMjEyLCAxNjAsIDIzNywgMTU3LCA5NCwgMSwgMjEyLCAxNjAsIDIwOCwgMjAsIDk0LCAxLCAyMTIsIDE2MCwgMjAyLCAxMTYsIAotICAgIDk0LCAxLCAyMTIsIDE2MCwgMjE2LCAyMTYsIDk0LCAxLCAyMTIsIDE2MCwgMjQ2LCAxOTksIDk0LCAxLCAyMTIsIDE2MCwgCi0gICAgMjAyLCA4MCwgOTQsIDEsIDIyNSwgMTE5LCA3NSwgOTQsIDEsIDIyNSwgMTE5LCAxNzMsIDk0LCAxLCAyMjUsIDExOSwgMjE2LCAKLSAgICAyMjAsIDk0LCAxLCAyMjUsIDExOSwgMjQwLCAxMDgsIDk0LCAxLCAyMjUsIDExOSwgMjAyLCA4MCwgOTQsIDEsIDI1MSwgMjIsIAotICAgIDIzOCwgMjQ0LCAyNTAsIDE4MSwgMTA1LCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDIwNSwgMjAwLCAxMDUsIDk0LCAxLCAKLSAgICAyNTEsIDIyLCAyMzgsIDI0NCwgMjQ0LCAxNzQsIDk0LCAxLCAyNTEsIDIyLCAyMzgsIDI0NCwgMjA3LCAzNCwgOTQsIDEsIAotICAgIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMzAsIDIzOSwgMjA3LCAzNCwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAyNDgsIDI0NSwgCi0gICAgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAxMjYsIDI0OCwgMjQ1LCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDYzLCAKLSAgICA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDc1LCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDE3MywgOTQsIDEsIDI1MSwgCi0gICAgMjIsIDIzOCwgMjQ0LCAyMjIsIDIwMywgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAyNDcsIDkyLCA5NCwgMSwgMjUxLCAKLSAgICAyMiwgMjM4LCAyNDQsIDIwNywgMjQxLCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDIwNywgMjI5LCA5NCwgMSwgMjUxLCAKLSAgICAyMiwgMjM4LCAyNDQsIDI0NCwgMTIwLCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDIyMSwgMjI3LCA5NCwgMSwgMjUxLCAKLSAgICAyMiwgMjM4LCAyNDQsIDIxMCwgMjIsIDk0LCAxLCAyNTEsIDIyLCAyMzgsIDI0NCwgMjQ0LCAyMTIsIDk0LCAxLCAyNTEsIAotICAgIDIyLCAyMzgsIDI0NCwgMTg1LCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDIxOCwgMjA4LCA5NCwgMSwgMjUxLCAyMiwgCi0gICAgMjM4LCAyNDQsIDIxMSwgMTY0LCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDIwMiwgODAsIDk0LCAxLCAyNTEsIDIyLCAKLSAgICAyMzgsIDI0NCwgMjAyLCAxMTYsIDk0LCAxLCAyNTEsIDIyLCAyMzgsIDI0NCwgMjUxLCA3MywgOTQsIDEsIDIwOCwgMTcwLCAKLSAgICAyNTEsIDIyLCAyMzgsIDI0NCwgMjEwLCAyMiwgOTQsIDEsIDIwOCwgMTcwLCAyNTEsIDIyLCAyMzgsIDI0NCwgMjAyLCA4MCwgCi0gICAgOTQsIDEsIDIyNSwgMTE5LCAyNTEsIDIyLCAyMzgsIDI0NCwgMjM4LCAxMTksIDk0LCAxLCAyMjUsIDExOSwgMjUxLCAyMiwgCi0gICAgMjM4LCAyNDQsIDIyMiwgMjAzLCA5NCwgMSwgMjI1LCAxMTksIDI1MSwgMjIsIDIzOCwgMjQ0LCAyNDcsIDkyLCA5NCwgMSwgCi0gICAgMjI1LCAxMTksIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMzAsIDE0OSwgOTQsIDEsIDIyNSwgMTE5LCAyNTEsIDIyLCAyMzgsIAotICAgIDI0NCwgMjA3LCAyNDEsIDk0LCAxLCAyMjUsIDExOSwgMjUxLCAyMiwgMjM4LCAyNDQsIDI0NCwgMTA0LCA5NCwgMSwgMjI1LCAKLSAgICAxMTksIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMTAsIDIyLCA5NCwgMSwgMjI1LCAxMTksIDI1MSwgMjIsIDIzOCwgMjQ0LCAyNDQsIAotICAgIDEsIDk0LCAxLCAyMjUsIDExOSwgMjUxLCAyMiwgMjM4LCAyNDQsIDIxMSwgMTY0LCA5NCwgMSwgMjI1LCAxMTksIDI1MSwgCi0gICAgMjIsIDIzOCwgMjQ0LCAyNDUsIDY1LCA5NCwgMSwgMjI1LCAxMTksIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMDIsIDgwLCA5NCwgCi0gICAgMSwgMjI1LCAxMTksIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMDIsIDExNiwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAxNjIsIAotICAgIDY4LCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDE2MiwgMTk4LCA5NCwgMSwgMjI1LCAxMTksIDI1MSwgMjIsIDIzOCwgCi0gICAgMjQ0LCAyNDgsIDk4LCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDI0NCwgMjAxLCA5NCwgMSwgMjI1LCAxMTksIDI1MSwgCi0gICAgMjIsIDIzOCwgMjQ0LCAyMjcsIDE2MSwgMTksIDIwLCAyMTksIDE4OCwgMTksIDIwLCAyNTAsIDgsIDE5LCAyMCwgMjUxLCAKLSAgICAyMzYsIDE5LCAyMCwgMjA0LCA2NSwgMTksIDIwLCAyMTgsIDEzLCAxOSwgMjAsIDIxOSwgNDMsIDE5LCAyMCwgMjE3LCAxNDMsIAotICAgIDE5LCAyMCwgMjA5LCAxOTYsIDE5LCAyMCwgMjI5LCAyMDgsIDE5LCAyMCwgMjI4LCAxNjQsIDE5LCAyMCwgMjI1LCA2MywgCi0gICAgMTksIDIwLCAyMjEsIDE0OSwgMTksIDIwLCAyMjMsIDU5LCAxOSwgMjAsIDIyNywgMjQ0LCAxOSwgMjAsIDIxMSwgMjMyLCAKLSAgICAxOSwgMjAsIDIxNCwgMjA4LCAxOSwgMjAsIDIxMiwgMjA3LCAxOSwgMjAsIDIxMywgNDcsIDE5LCAyMCwgMjEyLCAxNzIsIAotICAgIDE5LCAyMCwgMjAyLCAyMjIsIDE5LCAyMCwgMjAzLCA1OCwgMTksIDIwLCAyMTYsIDE2NSwgMTksIDIwLCAyMjEsIDE3LCAxOSwgCi0gICAgMjAsIDIyMCwgNTMsIDIyMSwgMTcsIDE5LCAyMCwgMjIxLCAxNiwgMTksIDIwLCAyMjAsIDUzLCAyMjEsIDE2LCAxOSwgMjAsIAotICAgIDIyMSwgMTUsIDE5LCAyMCwgMjIwLCA1MywgMjIxLCAxNSwgMTksIDIwLCAyMjEsIDE0LCAxOSwgMjAsIDIyMCwgNTMsIDIyMSwgCi0gICAgMTQsIDE5LCAyMCwgMjE1LCAxMDcsIDE5LCAyMCwgMjE1LCAxMDYsIDE5LCAyMCwgMjE1LCAxMDUsIDE5LCAyMCwgMjE1LCAKLSAgICAxMDQsIDE5LCAyMCwgMjE1LCAxMDMsIDE5LCAyMCwgMjE1LCAxMTEsIDE5LCAyMCwgMjIwLCA1MywgMjE5LCAxODQsIDE5LCAKLSAgICAyMCwgMjIwLCA1MywgMjEwLCA2OSwgMTksIDIwLCAyMjAsIDUzLCAyMzAsIDU0LCAxOSwgMjAsIDIyMCwgNTMsIDI0NywgCi0gICAgMTI1LCAxOSwgMjAsIDIyMCwgNTMsIDIyNiwgMTg1LCAxOSwgMjAsIDIyMCwgNTMsIDIyMywgMTYzLCAxOSwgMjAsIDIyMCwgCi0gICAgNTMsIDE5NCwgMTksIDIwLCAyMjAsIDUzLCAyMTMsIDkyLCAxOSwgMjAsIDI0MSwgMTc0LCAyMDQsIDE0NCwgMTksIDIwLCAKLSAgICAyMDQsIDQ0LCAyMDQsIDE0NCwgMTksIDIwLCA0NiwgNSwgMjE1LCAyNTIsIDE5LCAyMCwgNDYsIDIxNiwgMTg4LCAyNDMsIAotICAgIDg1LCAxOSwgMjAsIDIxNywgMCwgMjE1LCAxMDgsIDE5LCAyMCwgMTk2LCAyMjcsIDE4LCAxOSwgMjAsIDE5NiwgMjI4LCAKLSAgICAxMTIsIDE5LCAyMCwgMjA5LCAxMSwgMTksIDIwLCAyMDksIDEzLCAxOSwgMjAsIDIwNywgMjIxLCAxOSwgMjAsIDIwNywgCi0gICAgMjIzLCAxOSwgMjAsIDIwNywgMjI4LCAxOSwgMjAsIDIwOCwgMTgwLCAxOSwgMjAsIDIwOCwgMTgyLCAxOSwgMjAsIDIxNCwgCi0gICAgMjA2LCAyMTIsIDE3NywgMTksIDIwLCAyMTQsIDIwNiwgMjEyLCAyMzYsIDE5LCAyMCwgMjE0LCAyMDYsIDIzNiwgMTE3LCAKLSAgICAxOSwgMjAsIDg4LCAyMzcsIDE4NSwgMTksIDIwLCA4OCwgMjQ0LCAzNSwgMjM4LCAxODIsIDE5LCAyMCwgODgsIDIzOSwgNSwgCi0gICAgMTksIDIwLCA4OCwgMjM3LCAxOTAsIDE5LCAyMCwgMjE0LCAyMDYsIDIzMCwgNjQsIDE5LCAyMCwgODgsIDIzMCwgNjIsIDE5LCAKLSAgICAyMCwgMjQ4LCAxNTMsIDI0NCwgMzUsIDE1OSwgMTksIDIwLCAyNDgsIDE1MywgMjQ0LCAzNSwgMTQ2LCAxOSwgMjAsIDg4LCAKLSAgICAyNDQsIDMwLCAxOTQsIDIyNywgMTI0LCAyMDUsIDE2OSwgMjI3LCAxNzQsIDIyNywgMTI0LCAxLCAxNzMsIDIyNywgMTI0LCAKLSAgICAxLCAyMjksIDE0NCwgMjI3LCAxMjQsIDEsIDIzOSwgOCwgMjI3LCAxMjQsIDEsIDIzOCwgMTE5LCAyMjcsIDEyNCwgMSwgCi0gICAgMjIyLCAyMDMsIDIyNywgMTI0LCAxLCAyNDcsIDkyLCAyMjcsIDEyNCwgMSwgMjQ2LCAxOTksIDIyNywgMTI0LCAxLCAyMzAsIAotICAgIDE4MSwgMjI3LCAxMjQsIDEsIDIzMCwgMTQ5LCAyMjcsIDEyNCwgMSwgMjAzLCA3OCwgMjI3LCAxMjQsIDEsIDIxMCwgMjIsIAotICAgIDIyNywgMTI0LCAxLCAyMDksIDEwOCwgMjI3LCAxMjQsIDEsIDI0NCwgMjEyLCAyMjcsIDEyNCwgMSwgMjQ0LCAxLCAyMjcsIAotICAgIDEyNCwgMSwgMjAxLCAyMDEsIDIyNywgMTI0LCAxLCAxODUsIDIyNywgMTI0LCAxLCAyMTgsIDIwOCwgMjI3LCAxMjQsIDEsIAotICAgIDI0OSwgMzIsIDIyNywgMTI0LCAxLCAyNDgsIDk4LCAyMjcsIDEyNCwgMSwgMTkyLCAyMjcsIDEyNCwgMSwgMTk4LCAyMjcsIAotICAgIDEyNCwgMSwgMjE2LCAyMjAsIDIyNywgMTI0LCAxLCAyMjgsIDExMywgMjI3LCAxMjQsIDEsIDIwNCwgMTExLCAyMjcsIDEyNCwgCi0gICAgMSwgMjEzLCA5MCwgMjI3LCAxMjQsIDEsIDIxMSwgMTY0LCAyMjcsIDEyNCwgMSwgMjE1LCAzNiwgMjI3LCAxMjQsIDEsIAotICAgIDE1MiwgMjI3LCAxMjQsIDEsIDIzNywgMTgxLCAyMjcsIDEyNCwgMSwgMjA4LCAxMTksIDIyNywgMTI0LCAyMiwgMiwgNjMsIAotICAgIDIyNywgMTI0LCAyMiwgMiwgNzUsIDIyNywgMTI0LCAyMiwgMiwgNjgsIDIyNywgMTI0LCAyMiwgMiwgMjQxLCAxNjEsIDIyNywgCi0gICAgMTI0LCAyMiwgMiwgMjUxLCA2NCwgMjI3LCAxMjQsIDIyLCAyLCAyMjAsIDE4LCAyMjcsIDEyNCwgMjIsIDIsIDI1MCwgMzQsIAotICAgIDIyNywgMTI0LCAyMiwgMiwgNzQsIDIyNywgMTI0LCAyMiwgMiwgNzgsIDIyNywgMTI0LCAyMTAsIDI1NCwgMSwgMTk4LCAKLSAgICAyMjcsIDEyNCwgMjEwLCAyNTQsIDEsIDIxNiwgMjIwLCAyMjcsIDEyNCwgMjEwLCAyNTQsIDEsIDIwNCwgMTExLCAyMjcsIAotICAgIDEyNCwgNSwgMSwgMTczLCAyMjcsIDEyNCwgNSwgMSwgMjIyLCAyMDMsIDIyNywgMTI0LCA1LCAxLCAyNTAsIDE4MCwgMjI3LCAKLSAgICAxMjQsIDUsIDEsIDIxMCwgMjIsIDIyNywgMTI0LCA1LCAxLCAyMDEsIDIwMSwgMjI3LCAxMjQsIDUsIDEsIDE4NSwgMjI3LCAKLSAgICAxMjQsIDUsIDEsIDE5MiwgMjI3LCAxMjQsIDUsIDEsIDIxNiwgMjIwLCAyMjcsIDEyNCwgNSwgMSwgMjI4LCAxMTMsIDIyNywgCi0gICAgMTI0LCAyLCAyMjMsIDIzMSwgMjI3LCAxMjQsIDIsIDIyOSwgMTg2LCAyMjcsIDEyNCwgMiwgMjE1LCAzNCwgMjI3LCAxMjQsIAotICAgIDIsIDIyNywgMTgsIDIyNywgMTI0LCAyNDAsIDIxMiwgODIsIDIyNywgMTI0LCAyMTcsIDQ3LCA4MiwgMjI3LCAxMjQsIDE3LCAKLSAgICAyMDIsIDg0LCAyMjcsIDEyNCwgMTcsIDEwNSwgMjI3LCAxMjQsIDE3LCAxMDgsIDIyNywgMTI0LCAxNywgMTQ3LCAyMjcsIAotICAgIDEyNCwgMTcsIDE0OSwgMjI3LCAxMjQsIDE3LCAxNzAsIDIyNywgMTI0LCAxNywgMTk1LCAyMjcsIDEyNCwgMTcsIDIxMywgCi0gICAgMTExLCAyMjcsIDEyNCwgMTcsIDE5OSwgMjI3LCAxMjQsIDE3LCAyMjIsIDYzLCA0NSwgMjI3LCAyMzUsIDEsIDE3MywgNDUsIAotICAgIDIyNywgMjM1LCAxLCAyMDMsIDE4MiwgNDUsIDIyNywgMjM1LCAxLCAyMjIsIDIwMywgNDUsIDIyNywgMjM1LCAxLCAyMDgsIAotICAgIDIwLCA0NSwgMjI3LCAyMzUsIDEsIDIxNSwgMzYsIDQ1LCAyMjcsIDIzNSwgMSwgMTk4LCA0NSwgMjI3LCAyMzUsIDEsIDIxMCwgCi0gICAgMjIsIDQ1LCAyMjcsIDIzNSwgMSwgMjA5LCAxMDgsIDQ1LCAyMjcsIDIzNSwgMSwgMjI4LCAxMTMsIDQ1LCAyMjcsIDIzNSwgCi0gICAgMSwgMTg1LCA0NSwgMjI3LCAyMzUsIDEsIDIxOCwgMjA4LCA0NSwgMjI3LCAyMzUsIDEsIDE5MiwgNDUsIDIyNywgMjM1LCAxLCAKLSAgICAyNDAsIDEwOCwgNDUsIDIyNywgMjM1LCAxLCAyMDYsIDg2LCA0NSwgMjI3LCAyMzUsIDEsIDE1MiwgNDUsIDIyNywgMjM1LCAKLSAgICAxLCAyMTcsIDEyNiwgNDUsIDIyNywgMjM1LCAxLCAyMjksIDE0NCwgNDUsIDIyNywgMjM1LCAxLCAyMDgsIDEwLCA0NSwgCi0gICAgMjI3LCAyMzUsIDEsIDIwMSwgMjAxLCA0NSwgMjI3LCAyMzUsIDEsIDYzLCA0NSwgMjI3LCAyMzUsIDEsIDc1LCA0NSwgMjI3LCAKLSAgICAyMzUsIDEsIDI0MSwgMTYxLCA0NSwgMjI3LCAyMzUsIDEsIDI0MSwgMTQ3LCA0NSwgMjI3LCAyMzUsIDEsIDY4LCA0NSwgCi0gICAgMjI3LCAyMzUsIDEsIDIyMCwgMTgsIDQ1LCAyMjcsIDIzNSwgMSwgNzgsIDQ1LCAyMjcsIDIzNSwgMSwgMjA3LCAyNCwgNDUsIAotICAgIDIyNywgMjM1LCAxLCA3NCwgNDUsIDIyNywgMjM1LCAxLCAyNTAsIDMyLCA0NSwgMjI3LCAyMzUsIDEsIDI1MSwgNjQsIDQ1LCAKLSAgICAyMjcsIDIzNSwgMSwgMjA4LCAxNTksIDQ1LCAyMjcsIDIzNSwgMSwgMjA4LCAxNTgsIDQ1LCAyMjcsIDIzNSwgMSwgMjA4LCAKLSAgICAxNTcsIDQ1LCAyMjcsIDIzNSwgMSwgMjA4LCAxNTYsIDQ1LCAyMjcsIDIzNSwgMSwgMjA4LCAxNTUsIDIyMiwgMjE0LCA0NSwgCi0gICAgMjI2LCAyMzMsIDEsIDEzOCwgMjE3LCAxMjYsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgMjE3LCAxMjYsIAotICAgIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMTczLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDIwMywgCi0gICAgMTgyLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDIyMiwgMjAzLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAKLSAgICAxMjQsIDE3MywgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAyMDMsIDE4MiwgMjIyLCAyMTQsIDQ1LCAyMjYsIAotICAgIDIzMywgMSwgMTI0LCAyMjIsIDIwMywgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAyMDgsIDIwLCAyMjIsIDIxNCwgCi0gICAgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDIxNSwgMzYsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMTk4LCAyMjIsIAotICAgIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDIwOCwgMjAsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgMjE1LCAKLSAgICAzNiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAxOTgsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgCi0gICAgMjEwLCAyMiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAyMDksIDEwOCwgMjIyLCAyMTQsIDQ1LCAyMjYsIAotICAgIDIzMywgMSwgMTM4LCAyMDEsIDIwMSwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAyMTAsIDIyLCAyMjIsIDIxNCwgCi0gICAgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDIwOSwgMTA4LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDIwMSwgMjAxLCAKLSAgICAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDE4NSwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAyMTgsIAotICAgIDIwOCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAxOTIsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgCi0gICAgMTg1LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDIxOCwgMjA4LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAKLSAgICAxMjQsIDE5MiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAyNDAsIDEwOCwgMjIyLCAyMTQsIDQ1LCAyMjYsIAotICAgIDIzMywgMSwgMTM4LCAyMDYsIDg2LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDIyOCwgMTEzLCAyMjIsIDIxNCwgCi0gICAgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDI0MCwgMTA4LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDIwNiwgODYsIAotICAgIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgMjI4LCAxMTMsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgCi0gICAgMTUyLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDI0NCwgMjEyLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAKLSAgICAxMzgsIDI0OSwgMzIsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgMTUyLCAyMjIsIDIxNCwgNDUsIDIyNiwgCi0gICAgMjMzLCAxLCAxMjQsIDI0NCwgMjEyLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDI0OSwgMzIsIDIyMiwgMjE0LCAKLSAgICA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMjI4LCAxNjksIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMjAzLCAxNDksIAotICAgIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgMjI4LCAxNjksIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgCi0gICAgMjAzLCAxNDksIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMjExLCA5LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAKLSAgICAxLCAxMjQsIDIxMSwgOSwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMjIsIDIsIDIyLCAyMTIsIDIxNiwgMjIyLCAyMTQsIAotICAgIDQ1LCAyMjYsIDIzMywgMjIsIDIsIDI1MiwgMjUsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIyLCAyLCAyMzEsIDgzLCAKLSAgICAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyMiwgMiwgNjgsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIyLCAyLCAyMDYsIAotICAgIDE3OCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMjIsIDIsIDc0LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyMiwgMiwgCi0gICAgMjUxLCAxMDksIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIyLCAyLCA3OCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMjIsIAotICAgIDIsIDIyMCwgOTcsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIyLCAyLCAyMDcsIDI0LCAyMjIsIDIxNCwgNDUsIDIyNiwgCi0gICAgMjMzLCAyMiwgMiwgMjUwLCA4LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyMiwgMiwgMjUxLCAyMzYsIDIyMiwgMjE0LCAKLSAgICA0NSwgMjI2LCAyMzMsIDIyLCAyLCAyMDYsIDE3MCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMjIsIDIsIDIxOSwgMTg4LCAKLSAgICAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyMiwgMiwgMjIwLCA5NCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMjIsIDIsIAotICAgIDIwNywgMjAsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIyLCAyLCAyMzAsIDE5MiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgCi0gICAgMSwgNDYsIDIwNiwgMTY0LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCA0NiwgMjIyLCAyMDUsIDIyMiwgMjE0LCA0NSwgCi0gICAgMjI2LCAyMzMsIDEsIDQ2LCAyMjMsIDE2MywgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgNDYsIDIyNiwgMTg1LCAyMjIsIAotICAgIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCA0NiwgMjMwLCA1NCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgNDYsIDI0NSwgCi0gICAgNTEsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDQ2LCAyNDksIDI1NSwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMTQzLCAKLSAgICAyMjUsIDkyLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxNDMsIDIyNSwgOTEsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIAotICAgIDE3LCAyMDIsIDg0LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxNywgMTA1LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxNywgCi0gICAgMTA4LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxNywgMTQ3LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxNywgMTQ5LCAKLSAgICAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxNywgMTcwLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxNywgMTk1LCAyMjIsIAotICAgIDIxNCwgNDUsIDIyNiwgMjMzLCAxNywgMjEzLCAxMTEsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDE3LCAxOTksIDIyMiwgCi0gICAgMjE0LCA0NSwgMjI2LCAyMzMsIDE3LCAyMjIsIDYzLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxMDQsIDE3LCAxMDUsIAotICAgIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIsIDIyOCwgOTcsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIsIDIyOCwgOTYsIAotICAgIDg1LCAxNiwgMjE5LCA1MSwgODUsIDE2LCAyMjMsIDIxMSwgMjI5LCAyMiwgODUsIDE2LCAyMTgsIDEzMCwgMjI5LCAyMiwgCi0gICAgODUsIDE2LCAyNDgsIDEzNCwgMjI5LCAyMiwgODUsIDE2LCAyNDcsIDE2NiwgMjI5LCAyMiwgODUsIDE2LCAyMTgsIDgsIAotICAgIDIyOSwgMjIsIDg1LCAxNiwgMjE4LCAyLCAyMjksIDIyLCA4NSwgMTYsIDIxOCwgMCwgMjI5LCAyMiwgODUsIDE2LCAyMTgsIAotICAgIDYsIDIyOSwgMjIsIDg1LCAxNiwgMjE4LCA0LCAyMjksIDIyLCA4NSwgMTYsIDI0NCwgMTYxLCAyMjksIDIyLCA4NSwgMTYsIAotICAgIDI0NCwgMTU3LCAyMjksIDIyLCA4NSwgMTYsIDI0NCwgMTU2LCAyMjksIDIyLCA4NSwgMTYsIDI0NCwgMTU5LCAyMjksIDIyLCAKLSAgICA4NSwgMTYsIDI0NCwgMTU4LCAyMjksIDIyLCA4NSwgMTYsIDI0NCwgMTU1LCAyMjksIDIyLCA4NSwgMTYsIDIwNywgMTY3LCAKLSAgICA4NSwgMTYsIDIyMywgMjExLCAyMTUsIDIyMCwgODUsIDE2LCAyMTgsIDEzMCwgMjE1LCAyMjAsIDg1LCAxNiwgMjQ4LCAxMzQsIAotICAgIDIxNSwgMjIwLCA4NSwgMTYsIDI0NywgMTY2LCAyMTUsIDIyMCwgODUsIDE2LCAyMTgsIDgsIDIxNSwgMjIwLCA4NSwgMTYsIAotICAgIDIxOCwgMiwgMjE1LCAyMjAsIDg1LCAxNiwgMjE4LCAwLCAyMTUsIDIyMCwgODUsIDE2LCAyMTgsIDYsIDIxNSwgMjIwLCA4NSwgCi0gICAgMTYsIDIxOCwgNCwgMjE1LCAyMjAsIDg1LCAxNiwgMjQ0LCAxNjEsIDIxNSwgMjIwLCA4NSwgMTYsIDI0NCwgMTU3LCAyMTUsIAotICAgIDIyMCwgODUsIDE2LCAyNDQsIDE1NiwgMjE1LCAyMjAsIDg1LCAxNiwgMjQ0LCAxNTksIDIxNSwgMjIwLCA4NSwgMTYsIDI0NCwgCi0gICAgMTU4LCAyMTUsIDIyMCwgODUsIDE2LCAyNDQsIDE1NSwgMjE1LCAyMjAsIDI0NywgMTg2LCAxLCAxNzMsIDI0NywgMTg2LCAxLCAKLSAgICAyMzksIDgsIDI0NywgMTg2LCAxLCAyMjIsIDIwMywgMjQ3LCAxODYsIDEsIDIyMiwgMTQ2LCAyNDcsIDE4NiwgMSwgMTg1LCAKLSAgICAyNDcsIDE4NiwgMSwgMjQ5LCAzMiwgMjQ3LCAxODYsIDEsIDE5MiwgMjQ3LCAxODYsIDEsIDIyMywgMjUwLCAyNDcsIDE4NiwgCi0gICAgMSwgMjEwLCAyMiwgMjQ3LCAxODYsIDEsIDI0NCwgMjEyLCAyNDcsIDE4NiwgMSwgMjAxLCAyMDEsIDI0NywgMTg2LCAxLCAKLSAgICAyMjEsIDE0NywgMjQ3LCAxODYsIDEsIDI0NywgOTIsIDI0NywgMTg2LCAxLCAyMzAsIDE4MSwgMjQ3LCAxODYsIDEsIDIyMSwgCi0gICAgMTEsIDI0NywgMTg2LCAxLCAyMjEsIDMsIDI0NywgMTg2LCAxLCAxOTgsIDI0NywgMTg2LCAxLCAyMTYsIDIyMCwgMjQ3LCAKLSAgICAxODYsIDEsIDIyOCwgMTEzLCAyNDcsIDE4NiwgMSwgMjA2LCA4NiwgMjQ3LCAxODYsIDEsIDIxNSwgMzYsIDI0NywgMTg2LCAKLSAgICAxLCA2MywgMjQ3LCAxODYsIDEsIDE1MiwgMjQ3LCAxODYsIDIyLCAyLCA3NSwgMjQ3LCAxODYsIDIyLCAyLCA2OCwgMjQ3LCAKLSAgICAxODYsIDIyLCAyLCA3NCwgMjQ3LCAxODYsIDIyLCAyLCA3OCwgMjQ3LCAxODYsIDIyLCAyLCAyNTEsIDEwOSwgMjQ3LCAxODYsIAotICAgIDIxOSwgMTM2LCAyNDcsIDE4NiwgMjQxLCA4NCwgNzYsIDIxNCwgMTY3LCA0NSwgMTA0LCAxLCAxMzgsIDE3MywgNDUsIDEwNCwgCi0gICAgMSwgMTM4LCAyMjksIDE0NCwgNDUsIDEwNCwgMSwgMTM4LCAyMjgsIDE1MywgNDUsIDEwNCwgMSwgMTI0LCAxNzMsIDQ1LCAKLSAgICAxMDQsIDEsIDEyNCwgMjI4LCAxNTMsIDQ1LCAxMDQsIDEsIDEyNCwgMjI5LCAxNDQsIDQ1LCAxMDQsIDEsIDIyMiwgMjAzLCAKLSAgICA0NSwgMTA0LCAxLCAxMzgsIDI0NywgOTIsIDQ1LCAxMDQsIDEsIDEzOCwgMjQ2LCAxOTksIDQ1LCAxMDQsIDEsIDEyNCwgCi0gICAgMjQ3LCA5MiwgNDUsIDEwNCwgMSwgMTI0LCAyMTUsIDM2LCA0NSwgMTA0LCAxLCAxMjQsIDI0NiwgMTk5LCA0NSwgMTA0LCAxLCAKLSAgICAyMjEsIDExLCA0NSwgMTA0LCAxLCAyMTYsIDE3MSwgNDUsIDEwNCwgMSwgMTM4LCAyMTYsIDE2OSwgNDUsIDEwNCwgMSwgCi0gICAgMjQ0LCAyMTIsIDQ1LCAxMDQsIDEsIDEyNCwgMjE2LCAxNjksIDQ1LCAxMDQsIDEsIDIxNiwgMTgwLCA0NSwgMTA0LCAxLCAKLSAgICAxMzgsIDIxMCwgMjIsIDQ1LCAxMDQsIDEsIDEzOCwgMjA5LCAxMDgsIDQ1LCAxMDQsIDEsIDEyNCwgMjEwLCAyMiwgNDUsIAotICAgIDEwNCwgMSwgMTI0LCAyMDksIDEwOCwgNDUsIDEwNCwgMSwgMjAxLCAyMDEsIDQ1LCAxMDQsIDEsIDI0OSwgMzIsIDQ1LCAKLSAgICAxMDQsIDEsIDEzOCwgMTg1LCA0NSwgMTA0LCAxLCAxMzgsIDIxOCwgMjA4LCA0NSwgMTA0LCAxLCAxMzgsIDI0MCwgMTA4LCAKLSAgICA0NSwgMTA0LCAxLCAxMjQsIDE4NSwgNDUsIDEwNCwgMSwgMTI0LCAyNDAsIDEwOCwgNDUsIDEwNCwgMSwgMTI0LCAyMTgsIAotICAgIDIwOCwgNDUsIDEwNCwgMSwgMTkyLCA0NSwgMTA0LCAxLCAxMjQsIDE5OCwgNDUsIDEwNCwgMSwgMTM4LCAxOTgsIDQ1LCAKLSAgICAxMDQsIDEsIDIxNiwgMjIwLCA0NSwgMTA0LCAxLCAyMTUsIDE0MCwgNDUsIDEwNCwgMSwgMjI4LCAxMTMsIDQ1LCAxMDQsIDEsIAotICAgIDIyNiwgMjMyLCA0NSwgMTA0LCAxLCAyMDQsIDExMSwgNDUsIDEwNCwgMSwgMTM4LCAyMTMsIDkwLCA0NSwgMTA0LCAxLCAKLSAgICAxMzgsIDIxMSwgMTY0LCA0NSwgMTA0LCAxLCAxMzgsIDIxNSwgMzYsIDQ1LCAxMDQsIDEsIDEzOCwgMTUyLCA0NSwgMTA0LCAKLSAgICAxLCAyMjcsIDc3LCA0NSwgMTA0LCAxLCA2MywgNDUsIDEwNCwgMSwgMTI0LCAxNTIsIDQ1LCAxMDQsIDEsIDc1LCA0NSwgCi0gICAgMTA0LCAxLCAyMzEsIDgzLCA0NSwgMTA0LCAxLCA2OCwgNDUsIDEwNCwgMSwgMjA2LCAxNzgsIDQ1LCAxMDQsIDEsIDI0MSwgCi0gICAgMTYxLCA0NSwgMTA0LCAxLCAyMjAsIDE4LCA0NSwgMTA0LCAxLCAyMjgsIDk3LCA0NSwgMTA0LCAxLCAyMzcsIDI0OSwgMjE1LCAKLSAgICAzNiwgNDUsIDEwNCwgMTA5LCAyLCAxNzQsIDIxNiwgMjIwLCA0NSwgMTA0LCAxMDksIDIsIDE3NCwgMjI4LCAxMTMsIDQ1LCAKLSAgICAxMDQsIDEwOSwgMiwgMjI4LCAxMTQsIDIwOSwgMjI4LCAyMjgsIDg2LCA0NSwgMTA0LCAyLCAyMjUsIDE0MSwgMjMwLCAxLCAKLSAgICAyMjgsIDg2LCA0NSwgMTA0LCAxMDksIDIsIDQ2LCAyMjIsIDIwMywgNDUsIDEwNCwgMTA5LCAyLCAxMjQsIDE4NSwgNDUsIAotICAgIDEwNCwgMTA5LCAyLCAxMzgsIDIxNiwgMTcwLCAyMTksIDI0NSwgMTI0LCAxODUsIDQ1LCAxMDQsIDEwOSwgMiwgMTkyLCA0NSwgCi0gICAgMTA0LCAxMDksIDIsIDI0OSwgMzIsIDQ1LCAxMDQsIDEwOSwgMiwgMjE1LCAzNiwgNDUsIDEwNCwgMiwgMjE1LCAxMCwgNDUsIAotICAgIDEwNCwgMjIsIDIsIDYzLCA0NSwgMTA0LCAyMiwgMiwgMjI1LCAxNDEsIDIxNCwgMjI1LCA0NSwgMTA0LCAyMiwgMiwgMjUyLCAKLSAgICAyNSwgNDUsIDEwNCwgMjIsIDIsIDIwOSwgMjM0LCAyNTIsIDI1LCA0NSwgMTA0LCAyMiwgMiwgNzUsIDQ1LCAxMDQsIDIyLCAKLSAgICAyLCAyMzEsIDgzLCA0NSwgMTA0LCAyMiwgMiwgMjA3LCAyNCwgNDUsIDEwNCwgMjIsIDIsIDIwNiwgMTc3LCA0NSwgMTA0LCAKLSAgICAyMiwgMiwgNjgsIDQ1LCAxMDQsIDIyLCAyLCAyMDYsIDE3OCwgNDUsIDEwNCwgMjIsIDIsIDc4LCA0NSwgMTA0LCAyMiwgMiwgCi0gICAgMjIwLCA5OCwgNTYsIDQ1LCAxMDQsIDIyLCAyLCAyMTksIDE4OCwgNDUsIDEwNCwgMjIsIDIsIDc0LCA0NSwgMTA0LCAyMiwgCi0gICAgMiwgMjUxLCAxMDksIDQ1LCAxMDQsIDIyLCAyLCAyMjAsIDE4LCA0NSwgMTA0LCAyMiwgMiwgMjUxLCA2NCwgNDUsIDEwNCwgCi0gICAgMjIsIDIsIDEwNCwgMjUxLCA2NCwgNDUsIDEwNCwgMjIsIDIsIDIyMCwgOTgsIDU1LCA0NSwgMTA0LCAyLCAyMjUsIDE0MSwgCi0gICAgMjMwLCAwLCA0NSwgMTA0LCAyLCAyMDgsIDE2MCwgNDUsIDEwNCwgMiwgMjA4LCAxNTksIDQ1LCAxMDQsIDIsIDIyOSwgMTA1LCAKLSAgICAyMDgsIDE1OCwgNDUsIDEwNCwgMiwgMjI5LCAxMDUsIDIwOCwgMTU3LCA0NSwgMTA0LCAyLCAyMjksIDEwNSwgMjA4LCAxNTYsIAotICAgIDQ1LCAxMDQsIDIsIDIxNiwgMjIxLCAyMzcsIDE1NiwgNDUsIDEwNCwgMiwgMjI1LCAxNDEsIDIxNCwgMjUzLCA0NSwgMTA0LCAKLSAgICAyLCAyMjksIDEwNCwgMjI5LCAyMzksIDQ1LCAxMDQsIDM5LCAyNDUsIDExMywgMjQzLCA4NSwgNDUsIDEwNCwgMjM2LCAxMDgsIAotICAgIDE3LCAyMDIsIDg0LCA0NSwgMTA0LCAyMzYsIDEwOCwgMTcsIDEwNSwgNDUsIDEwNCwgMjM2LCAxMDgsIDE3LCAxMDgsIDQ1LCAKLSAgICAxMDQsIDIzNiwgMTA4LCAxNywgMTQ3LCA0NSwgMTA0LCAyMzYsIDEwOCwgMTcsIDE0OSwgNDUsIDEwNCwgMjM2LCAxMDgsIAotICAgIDE3LCAxNzAsIDQ1LCAxMDQsIDIzNiwgMTA4LCAxNywgMTk1LCA0NSwgMTA0LCAyMzYsIDEwOCwgMTcsIDIxMywgMTExLCA0NSwgCi0gICAgMTA0LCAyMzYsIDEwOCwgMTcsIDE5OSwgNDUsIDEwNCwgMjM2LCAxMDgsIDE3LCAyMjIsIDYzLCA0NSwgMTA0LCAxMDQsIDE3LCAKLSAgICAyMDIsIDg0LCA0NSwgMTA0LCAxMDQsIDE3LCAxMDUsIDQ1LCAxMDQsIDEwNCwgMTcsIDEwOCwgNDUsIDEwNCwgMTA0LCAxNywgCi0gICAgMTQ3LCA0NSwgMTA0LCAxMDQsIDE3LCAxNDksIDQ1LCAxMDQsIDEwNCwgMTcsIDE3MCwgNDUsIDEwNCwgMTA0LCAxNywgMTk1LCAKLSAgICA0NSwgMTA0LCAxMDQsIDE3LCAyMTMsIDExMSwgNDUsIDEwNCwgMTA0LCAxNywgMTk5LCA0NSwgMTA0LCAxMDQsIDE3LCAyMjIsIAotICAgIDYzLCA0NSwgMTA0LCAyLCAyMDQsIDI5LCA0NSwgMTA0LCAyLCAyMDQsIDI4LCA0NSwgMTA0LCAyLCAyMTQsIDIxMiwgNDUsIAotICAgIDEwNCwgMiwgMjI5LCAxNzUsIDQ1LCAxMDQsIDIsIDIzNiwgMzYsIDQ1LCAxMDQsIDIsIDI0MywgOTksIDQ1LCAxMDQsIDIsIAotICAgIDIxNiwgNzMsIDIxNSwgMTk4LCAyMTYsIDE4MCwgNDUsIDEwNCwgMiwgMjI1LCAxNDEsIDIwMywgNzksIDQ1LCAxMDQsIDIsIAotICAgIDIzMCwgMzUsIDQ1LCAxMDQsIDIsIDIzMCwgMzQsIDQ1LCAxMDQsIDIsIDIxNCwgMjIwLCA0NSwgMTA0LCAyLCAyMTQsIDIxOSwgCi0gICAgNDUsIDEwNCwgMiwgMjM3LCA5OCwgNDUsIDEwNCwgMiwgMjQ3LCA4OSwgMzksIDI0MiwgNzUsIDI0NiwgNTMsIDI1MSwgMTM4LCAKLSAgICAzOSwgMjQzLCAyMzAsIDM5LCAyMzEsIDI3LCAzOSwgMTgzLCA0NywgMzksIDIwOCwgNzAsIDI0MywgODUsIDM5LCAyMDMsIAotICAgIDE5NSwgNTYsIDM5LCAyMDQsIDIxLCAyMjcsIDExNSwgNTYsIDM5LCAxNzEsIDEzMSwgNTYsIDM5LCA1MiwgMTcxLCAxMzEsIAotICAgIDU2LCAzOSwgMTU3LCAyNDYsIDIxOSwgMjExLCAzMiwgNTYsIDM5LCAyMTEsIDE4LCAyNDYsIDIxOSwgMjExLCAzMiwgNTYsIAotICAgIDM5LCAyMTksIDc4LCA1NSwgMzksIDUyLCAyMTksIDc4LCA1NSwgMzksIDIxOSwgNzgsIDU2LCAzOSwgMjE5LCA3OCwgMjE5LCAKLSAgICAxOTksIDEzMCwgMiwgMjA3LCA5LCAyMTYsIDUxLCAxMzAsIDIsIDIwNywgOSwgMjQ3LCA1NCwgMTMwLCAyLCAyNDYsIDIzNCwgCi0gICAgMTMwLCAyLCAyMTAsIDE5MSwgMTMwLCAyLCAyNDgsIDU2LCAxMzAsIDEsIDI1MSwgNDUsIDEzMCwgMSwgMjUxLCA0NiwgMjA5LCAKLSAgICAxNzgsIDEzMCwgMSwgMjMxLCA3OSwgMTMwLCAxLCAyMzEsIDgwLCAyMDksIDE3OCwgMTMwLCAxLCAyMDcsIDEyLCAxMzAsIDEsIAotICAgIDIwNywgMTMsIDIwOSwgMTc4LCAxMzAsIDEsIDIxNiwgMjIxLCAyMTYsIDEwMywgMTMwLCAxLCAyMTYsIDIyMSwgMjE2LCAKLSAgICAxMDQsIDIwOSwgMTc4LCAxMzAsIDEsIDIyOCwgMTE0LCAyMjcsIDE5NywgMTMwLCAxLCAyMjgsIDExNCwgMjI3LCAxOTgsIAotICAgIDIwOSwgMTc4LCAxMzAsIDEsIDI0MSwgMTI3LCAxMzAsIDEsIDI1MSwgNjIsIDEzMCwgMSwgMjIwLCA0OSwgMTMwLCAxLCAKLSAgICAyMjAsIDUwLCAyMDksIDE3OCwgMTMwLCAxLCAxNzMsIDEzMCwgMSwgMjMwLCA0NCwgMjI1LCAxNDQsIDEzMCwgMSwgMjM5LCAKLSAgICA4LCAxMzAsIDEsIDIzOSwgOSwgMjM4LCAyNSwgMTMwLCAxLCAyMjIsIDIwMywgMTMwLCAxLCAyNDcsIDkyLCAxMzAsIDEsIAotICAgIDI0NywgOTMsIDIyOCwgMTAwLCAxMzAsIDEsIDIzMCwgMTgxLCAxMzAsIDEsIDIzMCwgMTgyLCAyMzAsIDE1MywgMTMwLCAxLCAKLSAgICAyMjEsIDExLCAxMzAsIDEsIDIxMCwgMjMsIDIyNywgMjUzLCAxMzAsIDEsIDIxMCwgMjMsIDIyMywgMjA2LCAyMjUsIDE0NCwgCi0gICAgMTMwLCAxLCAyNDQsIDIxMywgMjIzLCAyMDYsIDI1MSwgNCwgMTMwLCAxLCAyNDQsIDIxMywgMjIzLCAyMDYsIDIyNSwgMTQ0LCAKLSAgICAxMzAsIDEsIDIyMywgMTExLCAyMTYsIDE4MywgMTMwLCAxLCAyMTAsIDIyLCAxMzAsIDEsIDIxMCwgMjMsIDIwOSwgMjAwLCAKLSAgICAxMzAsIDEsIDI0NCwgMjEyLCAxMzAsIDEsIDI0NCwgMjEzLCAyMjUsIDE2MywgMTMwLCAxLCAyMDEsIDIwMSwgMTMwLCAxLCAKLSAgICAxODUsIDEzMCwgMSwgMjE5LCAxNjksIDIyOSwgMjUxLCAxMzAsIDEsIDI0OSwgMzIsIDEzMCwgMSwgMjQ5LCAzMywgMjI5LCAKLSAgICAxODcsIDEzMCwgMSwgMTkyLCAxMzAsIDEsIDE5OCwgMTMwLCAxLCAyMTYsIDIyMCwgMTMwLCAxLCAyMjgsIDExMywgMTMwLCAKLSAgICAxLCAyMDQsIDExMSwgMTMwLCAxLCAyMTUsIDM3LCAyMTUsIDIxLCAxMzAsIDEsIDIxNSwgMzcsIDIxNCwgMjMyLCAxMzAsIDEsIAotICAgIDIxNSwgMzYsIDEzMCwgMSwgMTUyLCAxMzAsIDIsIDIxNiwgOTQsIDEzMCwgMjIsIDIsIDIwOSwgMTc4LCAxMzAsIDIyLCAyLCAKLSAgICAyMDcsIDgsIDEzMCwgMjIsIDIsIDIwNywgOSwgMjE0LCAyMjgsIDEzMCwgMjIsIDIsIDIxMCwgMjI0LCAxMzAsIDIyLCAyLCAKLSAgICAyMTAsIDIyNSwgMjMxLCA3MSwgMTMwLCAyMiwgMiwgMjE2LCAyMjEsIDIxNiwgMTAzLCAxMzAsIDIyLCAyLCAyMTYsIDIyMSwgCi0gICAgMjE2LCAxMDQsIDIwOSwgMTc4LCAxMzAsIDIyLCAyLCAyMjgsIDExNCwgMjI3LCAxOTcsIDEzMCwgMjIsIDIsIDIyOCwgMTE0LCAKLSAgICAyMjcsIDE5OCwgMjA5LCAxNzgsIDEzMCwgMjIsIDIsIDIwOSwgMjM1LCAxMzAsIDIyLCAyLCAyMDksIDIzNiwgMjE2LCAxMDMsIAotICAgIDEzMCwgMjIsIDIsIDIwOSwgMjM2LCAyMDksIDE3OCwgMTMwLCAyMiwgMiwgMjA5LCAyMzYsIDIxNiwgMTA0LCAyMDksIDE3OCwgCi0gICAgMTMwLCAyMiwgMiwgMjE4LCAyNDksIDEzMCwgMjIsIDIsIDIxOCwgMjUwLCAyMDksIDE3OCwgMTMwLCAyNTEsIDExNywgMjUxLCAKLSAgICAxMTYsIDEzMCwgMSwgMjMwLCAyMywgMjE0LCAyMjcsIDEzMCwgMSwgMjI5LCAxMTEsIDIxNCwgMjI3LCAxMzAsIDEsIDIwNywgCi0gICAgMTAxLCAyMTQsIDIyNywgMTMwLCAxLCAyNDEsIDE1NSwgMjE0LCAyMjcsIDEzMCwgMSwgMjA2LCA1NiwgMjE0LCAyMjcsIAotICAgIDEzMCwgMSwgMjAyLCAxMDYsIDIxNCwgMjI3LCAxMzAsIDEsIDI1MCwgNTIsIDIxNCwgMjI3LCAxMzAsIDE3LCAyMDIsIDg0LCAKLSAgICAxMzAsIDE3LCAxMDUsIDEzMCwgMTcsIDEwOCwgMTMwLCAxNywgMTQ3LCAxMzAsIDE3LCAxNDksIDEzMCwgMTcsIDE3MCwgCi0gICAgMTMwLCAxNywgMTk1LCAxMzAsIDE3LCAyMTMsIDExMSwgMTMwLCAxNywgMTk5LCAxMzAsIDE3LCAyMjIsIDYzLCAxMzAsIAotICAgIDIxOSwgMTA0LCAxMzAsIDIxOSwgMTMwLCAxMzAsIDIwNCwgMTQsIDEzMCwgMjQ3LCAzMSwgMjE5LCAxMjMsIDEzMCwgMjQ3LCAKLSAgICAzMSwgMjEyLCAxMzksIDEzMCwgMjQ3LCAzMSwgMjE5LCA3NSwgMTMwLCAyMTksIDEyOSwgMTMwLCAzMSwgMTYsIDI0MywgOTEsIAotICAgIDEzMCwgMzEsIDE2LCAyNDQsIDM0LCAxMzAsIDMxLCAxNiwgMjQyLCAyNywgMTMwLCAzMSwgMTYsIDI0NCwgMTY0LCAxMzAsIAotICAgIDMxLCAxNiwgMjQ0LCAxNjUsIDIxMCwgMTkxLCAxMzAsIDMxLCAxNiwgMjQzLCAxNzUsIDEzMCwgMzEsIDE2LCAyNDQsIDIwNSwgCi0gICAgMTMwLCAzMSwgMTYsIDI0NCwgMTAsIDEzMCwgMzEsIDE2LCAyNDQsIDE4NywgMTMwLCAzMSwgMTYsIDI0NCwgMTY1LCAyMzgsIAotICAgIDE4NCwgMTMwLCAzMSwgMTYsIDM5LCAyMDksIDE3MSwgMTMwLCAzMSwgMTYsIDM5LCAyNDEsIDgyLCAxMzAsIDMxLCAxNiwgCi0gICAgMzksIDIyOSwgMTgyLCAxMzAsIDMxLCAxNiwgMzksIDIyOSwgMTg0LCAxMzAsIDMxLCAxNiwgMzksIDIzMCwgMTU3LCAxMzAsIAotICAgIDMxLCAxNiwgMzksIDIyOSwgMTgzLCAzLCAyMzAsIDE1NywgMTMwLCAzMSwgMTYsIDM5LCAyMjksIDE4NSwgMywgMjMwLCAKLSAgICAxNTcsIDEzMCwgMzEsIDE2LCAzOSwgMjQ4LCAxMTksIDEzMCwgMzEsIDE2LCAzOSwgMjM4LCAyOSwgMTMwLCAzMSwgMTYsIAotICAgIDIxNiwgMTQsIDE3MSwgMjQyLCAzNywgMTMwLCAzMSwgMTYsIDIxNiwgMTQsIDE3MSwgMjQ0LCAyMDMsIDEzMCwgMzEsIDE2LCAKLSAgICAyMTYsIDE0LCAyNDYsIDE2LCAyMDcsIDE5NSwgMTMwLCAzMSwgMTYsIDIxNiwgMTQsIDI0NiwgMTYsIDIwOSwgMjQ0LCAxMzAsIAotICAgIDMxLCAxNiwgMjI3LCAyMjAsIDE3MSwgMjE5LCAxMTgsIDEzMCwgMzEsIDE2LCAyMjcsIDIyMCwgMTcxLCAyMTcsIDE3NywgCi0gICAgMTMwLCAzMSwgMTYsIDIyNywgMjIwLCAyNDYsIDE2LCAyMTgsIDk0LCAxMzAsIDMxLCAxNiwgMjI3LCAyMjAsIDI0NiwgMTYsIAotICAgIDIxOCwgODAsIDEzMCwgMzEsIDE2LCAyMjcsIDIyMCwgMTcxLCAyMTgsIDExOSwgMjEwLCAyMTMsIDIsIDIxOSwgMTAxLCAKLSAgICAyMTAsIDIxMywgMiwgMjE5LCAxMTQsIDIxMCwgMjEzLCAyLCAyMTksIDExMCwgMjEwLCAyMTMsIDEsIDYzLCAyMTAsIDIxMywgCi0gICAgMSwgNzUsIDIxMCwgMjEzLCAxLCA2OCwgMjEwLCAyMTMsIDEsIDI1MSwgMTA5LCAyMTAsIDIxMywgMSwgNzgsIDIxMCwgMjEzLCAKLSAgICAxLCA3NCwgMjEwLCAyMTMsIDEsIDI0MCwgMjM4LCAyMTAsIDIxMywgMSwgMTczLCAyMTAsIDIxMywgMSwgMjE3LCAxMjYsIAotICAgIDIxMCwgMjEzLCAxLCAyMzksIDgsIDIxMCwgMjEzLCAxLCAyMjIsIDIwMywgMjEwLCAyMTMsIDEsIDI0NywgOTIsIDIxMCwgCi0gICAgMjEzLCAxLCAyMzAsIDE4MSwgMjEwLCAyMTMsIDEsIDIwMiwgMTE2LCAyMTAsIDIxMywgMSwgMjIxLCAxMSwgMjEwLCAyMTMsIAotICAgIDEsIDIxMCwgMjIsIDIxMCwgMjEzLCAxLCAyNDQsIDIxMiwgMjEwLCAyMTMsIDEsIDIwMSwgMjAxLCAyMTAsIDIxMywgMSwgCi0gICAgMTg1LCAyMTAsIDIxMywgMSwgMjQwLCAxMDgsIDIxMCwgMjEzLCAxLCAyMDYsIDg2LCAyMTAsIDIxMywgMSwgMjQ5LCAzMiwgCi0gICAgMjEwLCAyMTMsIDEsIDE5MiwgMjEwLCAyMTMsIDEsIDE5OCwgMjEwLCAyMTMsIDEsIDIxNiwgMjIwLCAyMTAsIDIxMywgMSwgCi0gICAgMjI4LCAxMTMsIDIxMCwgMjEzLCAxLCAyMDQsIDExMSwgMjEwLCAyMTMsIDEsIDIxNSwgMzYsIDIxMCwgMjEzLCAxLCAyMDMsIAotICAgIDE4MiwgMjEwLCAyMTMsIDEsIDE1MiwgMjEwLCAyMTMsIDEwOSwgMiwgMjE5LCAxMjcsIDIxMCwgMjEzLCAxMDksIDIsIDIxOSwgCi0gICAgMTAzLCAyMTAsIDIxMywgMTA5LCAyLCAyMTksIDEwMCwgMjEwLCAyMTMsIDIyLCAyLCAyMTksIDExNywgMjEwLCAyMTMsIDIyLCAKLSAgICAyLCAyMTksIDk5LCAyMTAsIDIxMywgMjIsIDIsIDIxOSwgMTIxLCAyMTAsIDIxMywgMjIsIDIsIDIxOSwgMTA5LCAyMTAsIAotICAgIDIxMywgMjIsIDIsIDIxOSwgMTI4LCAyMTAsIDIxMywgMjIsIDIsIDIxOSwgMTE5LCAyMTAsIDIxMywgMiwgMjE5LCAxMzEsIAotICAgIDIxMCwgMjEzLCAyLCAyMDUsIDIwNCwgMjEwLCAyMTMsIDEwOSwgMiwgMjE5LCA2NCwgMTkyLCAyMTAsIDIxMywgMTA5LCAyLCAKLSAgICAyMTksIDY0LCAyMDQsIDExMSwgMjEwLCAyMTMsIDEsIDIyOSwgMTQ0LCAyMTAsIDIxMywgMSwgMjEwLCAxNTAsIDIxMCwgCi0gICAgMjEzLCAxNywgMjAyLCA4NCwgMjEwLCAyMTMsIDE3LCAxMDUsIDIxMCwgMjEzLCAxNywgMTA4LCAyMTAsIDIxMywgMTcsIAotICAgIDE0NywgMjEwLCAyMTMsIDE3LCAxNDksIDIxMCwgMjEzLCAxNywgMTcwLCAyMTAsIDIxMywgMTcsIDE5NSwgMjEwLCAyMTMsIAotICAgIDE3LCAyMTMsIDExMSwgMjEwLCAyMTMsIDE3LCAxOTksIDIxMCwgMjEzLCAxNywgMjIyLCA2MywgMjEwLCAyMTMsIDI1MCwgCi0gICAgMTcsIDIxMCwgMjEzLCAxLCAyMTYsIDc2LCAyMTAsIDIxMywgMSwgMjI3LCAxNzEsIDIxMCwgMjEzLCAxLCAyNDgsIDk4LCAKLSAgICAyMTAsIDIxMywgMSwgNDYsIDIzMCwgNTQsIDIxMCwgMjEzLCAxLCA0NiwgMjI2LCAxODUsIDI0OCwgMjA4LCAxLCA2MywgCi0gICAgMjQ4LCAyMDgsIDEsIDIxMiwgMTMxLCA2MywgMjQ4LCAyMDgsIDEsIDE1MiwgMjQ4LCAyMDgsIDEsIDIxMiwgMTMxLCAxNTIsIAotICAgIDI0OCwgMjA4LCAxLCAyMjUsIDExNywgMTUyLCAyNDgsIDIwOCwgMSwgMjQ5LCAzMiwgMjQ4LCAyMDgsIDEsIDIyOSwgMjM2LCAKLSAgICAyNDksIDMyLCAyNDgsIDIwOCwgMSwgMTg1LCAyNDgsIDIwOCwgMSwgMjEyLCAxMzEsIDE4NSwgMjQ4LCAyMDgsIDEsIDIwMSwgCi0gICAgMjAxLCAyNDgsIDIwOCwgMSwgMjI1LCAxMTcsIDIwMSwgMjAxLCAyNDgsIDIwOCwgMSwgMjA0LCAxMTEsIDI0OCwgMjA4LCAxLCAKLSAgICAyMTIsIDEzMSwgMjA0LCAxMTEsIDI0OCwgMjA4LCAxLCAyMTksIDE0MywgMjA0LCAxMTEsIDI0OCwgMjA4LCAxLCAyMzksIDgsIAotICAgIDI0OCwgMjA4LCAxLCAyMTIsIDEzMSwgMjM5LCA4LCAyNDgsIDIwOCwgMSwgMjMwLCAxODEsIDI0OCwgMjA4LCAxLCAyNDQsIAotICAgIDIxMiwgMjQ4LCAyMDgsIDEsIDIxNiwgMjIwLCAyNDgsIDIwOCwgMSwgMjEyLCAxMzEsIDIxNiwgMjIwLCAyNDgsIDIwOCwgMSwgCi0gICAgMTkyLCAyNDgsIDIwOCwgMSwgMjEyLCAxMzEsIDE5MiwgMjQ4LCAyMDgsIDEsIDIxMSwgMjM2LCAyMTAsIDIyLCAyNDgsIAotICAgIDIwOCwgMSwgMjIxLCAxNzAsIDIxMCwgMjIsIDI0OCwgMjA4LCAxLCAyMTUsIDM2LCAyNDgsIDIwOCwgMSwgMjEyLCAxMzEsIAotICAgIDIxNSwgMzYsIDI0OCwgMjA4LCAxLCAyMjUsIDExNywgMjE1LCAzNiwgMjQ4LCAyMDgsIDEsIDE5OCwgMjQ4LCAyMDgsIDEsIAotICAgIDIxMiwgMTMxLCAxOTgsIDI0OCwgMjA4LCAxLCAyMjIsIDIwMywgMjQ4LCAyMDgsIDEsIDIyOCwgMTEzLCAyNDgsIDIwOCwgMSwgCi0gICAgMjEyLCAxMzEsIDIyOCwgMTEzLCAyNDgsIDIwOCwgMSwgMjIxLCAxMSwgMjQ4LCAyMDgsIDEsIDI0NywgOTIsIDI0OCwgMjA4LCAKLSAgICAxLCAyMjMsIDI1LCAyNDgsIDIwOCwgMSwgMjI1LCA1NCwgMjQ4LCAyMDgsIDEsIDc1LCAyNDgsIDIwOCwgMSwgNjgsIDI0OCwgCi0gICAgMjA4LCAyLCAyMDgsIDE2NCwgMjQ4LCAyMDgsIDIyLCAyLCA3NCwgMjQ4LCAyMDgsIDIyLCAyLCAyMTksIDE0MywgNzQsIAotICAgIDI0OCwgMjA4LCAyMiwgMiwgMjQxLCAxNjEsIDI0OCwgMjA4LCAyMiwgMiwgNzUsIDI0OCwgMjA4LCAyMiwgMiwgMjI5LCAKLSAgICAyMzYsIDc1LCAyNDgsIDIwOCwgMjIsIDIsIDc4LCAyNDgsIDIwOCwgMjIsIDIsIDIyOSwgMjM2LCA3OCwgMjQ4LCAyMDgsIAotICAgIDIyLCAyLCA2OCwgMjQ4LCAyMDgsIDIyLCAyLCAxMDYsIDM1LCAyMTIsIDEzMSwgMjE1LCAzNiwgMjQ4LCAyMDgsIDEwOSwgMiwgCi0gICAgMjIyLCAyMDUsIDI0OCwgMjA4LCAxMDksIDIsIDIzNywgMTcxLCAyNDgsIDIwOCwgMjE5LCAxMTIsIDI0OCwgMjA4LCAyMTksIAotICAgIDEwOCwgMjQ4LCAyMDgsIDE2LCAyNDgsIDY0LCAyMjMsIDExMSwgMjI0LCAyMTgsIDI0OCwgMjA4LCAxNiwgMjQ4LCA2NCwgCi0gICAgMjE4LCAxMjIsIDI0OCwgMjA4LCAxNiwgMjQ4LCA2NCwgMjMwLCA3OSwgMjQ4LCAyMDgsIDE2LCAyNDgsIDY0LCAyMTksIAotICAgIDExMiwgMjI3LCAxODEsIDEsIDE3MywgMjI3LCAxODEsIDEsIDIyOSwgNDAsIDIyNywgMTgxLCAxLCAyMjksIDE0NCwgMjI3LCAKLSAgICAxODEsIDEsIDIzOSwgOCwgMjI3LCAxODEsIDEsIDIzOCwgNTEsIDIyNywgMTgxLCAxLCAyMjIsIDIwMywgMjI3LCAxODEsIDEsIAotICAgIDI0NywgOTIsIDIyNywgMTgxLCAxLCAyNDYsIDE5OSwgMjI3LCAxODEsIDEsIDIzMCwgMTgxLCAyMjcsIDE4MSwgMSwgMjIxLCAKLSAgICAxMSwgMjI3LCAxODEsIDEsIDIxMCwgMjIsIDIyNywgMTgxLCAxLCAyMDksIDEwOCwgMjI3LCAxODEsIDEsIDI0NCwgMjEyLCAKLSAgICAyMjcsIDE4MSwgMSwgMjAxLCAyMDEsIDIyNywgMTgxLCAxLCAxODUsIDIyNywgMTgxLCAxLCAyMTgsIDk4LCAyMjcsIDE4MSwgCi0gICAgMSwgMjE4LCAyMDgsIDIyNywgMTgxLCAxLCAyNDAsIDEwOCwgMjI3LCAxODEsIDEsIDIzOSwgMjI3LCAyMjcsIDE4MSwgMSwgCi0gICAgMjQ5LCAzMiwgMjI3LCAxODEsIDEsIDI0OCwgNDQsIDIyNywgMTgxLCAxLCAxOTIsIDIyNywgMTgxLCAxLCAyMjQsIDg5LCAKLSAgICAyMjcsIDE4MSwgMSwgMjA4LCAyMCwgMjI3LCAxODEsIDEsIDIwOCwgMTAsIDIyNywgMTgxLCAxLCAyNDEsIDI1NSwgMjI3LCAKLSAgICAxODEsIDEsIDE5OCwgMjI3LCAxODEsIDEsIDIxNiwgMjIwLCAyMjcsIDE4MSwgMSwgMjI4LCAxMTMsIDIyNywgMTgxLCAxLCAKLSAgICAxNTIsIDIyNywgMTgxLCAxLCAyMzYsIDIyNCwgMjI3LCAxODEsIDEsIDIwNiwgODYsIDIyNywgMTgxLCAxLCAyMTUsIDM2LCAKLSAgICAyMjcsIDE4MSwgMSwgMjEzLCA5MCwgMjI3LCAxODEsIDEsIDIwNCwgMTExLCAyMjcsIDE4MSwgMSwgNjMsIDIyNywgMTgxLCAKLSAgICAyMTAsIDI1NCwgMSwgMTk4LCAyMjcsIDE4MSwgMjEwLCAyNTQsIDEsIDIxNiwgMjIwLCAyMjcsIDE4MSwgMjIsIDIsIDI1MiwgCi0gICAgMjUsIDIyNywgMTgxLCAyMiwgMiwgNzUsIDIyNywgMTgxLCAyMiwgMiwgNzgsIDIyNywgMTgxLCAyMiwgMiwgMjIwLCAxOCwgCi0gICAgMjI3LCAxODEsIDIyLCAyLCA2OCwgMjI3LCAxODEsIDIyLCAyLCAyMDYsIDE3OCwgMjI3LCAxODEsIDIyLCAyLCA3NCwgMjI3LCAKLSAgICAxODEsIDEwOSwgMiwgMjMwLCA1NCwgMjI3LCAxODEsIDEwOSwgMiwgMjI2LCAxODUsIDIyNywgMTgxLCAxMDksIDIsIDE1OSwgCi0gICAgMjI3LCAxODEsIDEwOSwgMiwgMjIzLCAxNjMsIDIyNywgMTgxLCAxMDksIDIsIDIxOSwgMTg0LCAyMjcsIDE4MSwgMTA5LCAyLCAKLSAgICAxNDYsIDIyNywgMTgxLCAxMDksIDIsIDIxMCwgNjksIDIyNywgMTgxLCAxMDksIDIsIDIyMCwgMjQxLCAyMjcsIDE4MSwgCi0gICAgMTA5LCAyLCAyMzAsIDAsIDIyNywgMTgxLCAyLCAyMTYsIDE4MSwgMjI3LCAxODEsIDIsIDIyMSwgNTEsIDIyNywgMTgxLCAKLSAgICAyMTcsIDE3OSwgMjEwLCAyMCwgMjI3LCAxODEsIDIxNywgMTc5LCAyMjAsIDI1MiwgMjA5LCA1LCAyMTAsIDIwLCAyMjcsIAotICAgIDE4MSwgMjE3LCAxNzksIDI0NiwgMjA2LCAyMjcsIDE4MSwgMjE3LCAxNzksIDIwOCwgMiwgMjQ2LCAyMDYsIDIyNywgMTgxLCAKLSAgICAyMTcsIDE3OSwgMjA4LCAxLCAyMjcsIDE4MSwgMTcsIDIwMiwgODQsIDIyNywgMTgxLCAxNywgMTA1LCAyMjcsIDE4MSwgMTcsIAotICAgIDEwOCwgMjI3LCAxODEsIDE3LCAxNDcsIDIyNywgMTgxLCAxNywgMTQ5LCAyMjcsIDE4MSwgMTcsIDE3MCwgMjI3LCAxODEsIAotICAgIDE3LCAxOTUsIDIyNywgMTgxLCAxNywgMjEzLCAxMTEsIDIyNywgMTgxLCAxNywgMTk5LCAyMjcsIDE4MSwgMTcsIDIyMiwgCi0gICAgNjMsIDIyNywgMTgxLCAxLCAyMDcsIDI0MSwgMjI3LCAxODEsIDEsIDIwNywgMjI5LCAyMjcsIDE4MSwgMSwgMjQ0LCAxMjAsIAotICAgIDIyMCwgNDcsIDI0NiwgMTM1LCAxNywgMjAyLCA4NCwgMjIwLCA0NywgMjQ2LCAxMzUsIDE3LCAxMDUsIDIyMCwgNDcsIDI0NiwgCi0gICAgMTM1LCAxNywgMTA4LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMTcsIDE0NywgMjIwLCA0NywgMjQ2LCAxMzUsIDE3LCAxNDksIAotICAgIDIyMCwgNDcsIDI0NiwgMTM1LCAxNywgMTcwLCAyMjAsIDQ3LCAyNDYsIDEzNSwgMTcsIDE5NSwgMjIwLCA0NywgMjQ2LCAKLSAgICAxMzUsIDE3LCAyMTMsIDExMSwgMjIwLCA0NywgMjQ2LCAxMzUsIDE3LCAxOTksIDIyMCwgNDcsIDI0NiwgMTM1LCAxNywgCi0gICAgMjIyLCA2MywgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDIyOCwgMTEzLCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjUwLCA0OSwgCi0gICAgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDI1MSwgODEsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyNTAsIDIyMywgMjIwLCA0NywgCi0gICAgMjQ2LCAxMzUsIDEsIDI1MSwgMzksIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyMjgsIDExMiwgMjIwLCA0NywgMjQ2LCAxMzUsIAotICAgIDEsIDI1MSwgMjQzLCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjUxLCAyNDQsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyNTEsIAotICAgIDI0MiwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDI1MSwgMjM3LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjI3LCAxNDgsIDIyMCwgCi0gICAgNDcsIDI0NiwgMTM1LCAxLCAyMzAsIDIxNSwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDIzMSwgODQsIDIyMCwgNDcsIDI0NiwgCi0gICAgMTM1LCAxLCAyMzAsIDIzNiwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDIzMCwgMjI0LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgCi0gICAgMjI2LCAyMzksIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyMDcsIDMxLCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjA3LCAyOSwgCi0gICAgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDIwNiwgMjI5LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjA2LCAxNzAsIDIyMCwgNDcsIAotICAgIDI0NiwgMTM1LCAxLCAyMjcsIDIzNCwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDI0MSwgNDYsIDIyMCwgNDcsIDI0NiwgMTM1LCAKLSAgICAxLCAyNDEsIDE2NCwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDI0MSwgOTIsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyNDEsIAotICAgIDIxLCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjI3LCA0OSwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDIxOSwgMjE5LCAyMjAsIAotICAgIDQ3LCAyNDYsIDEzNSwgMSwgMjIwLCA5MywgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDIxOSwgMjA2LCAyMjAsIDQ3LCAyNDYsIAotICAgIDEzNSwgMSwgMjIwLCA2MCwgMjIwLCA0NywgMjQ2LCAxMzUsIDIyMywgMjQ3LCAyMDcsIDIwNiwgMjIwLCA0NywgMjQ2LCAKLSAgICAxMzUsIDIzOSwgMywgMjA3LCAyMDcsIDIyMCwgNDcsIDI0NiwgMTM1LCAyMjMsIDI0NSwgMjA3LCAyMDcsIDIyMCwgNDcsIAotICAgIDI0NiwgMTM1LCAyMTYsIDExOCwgMjIwLCA0NywgMjQ2LCAxMzUsIDIxOCwgMjA2LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMjUxLCAKLSAgICA3MiwgMjIwLCA0NywgMjQ2LCAxMzUsIDIxNywgMTc5LCAyMjMsIDI0MSwgMjIwLCA0NywgMjQ2LCAxMzUsIDIxNywgMTc5LCAKLSAgICA1MiwgMjIzLCAyNDEsIDIxMCwgMjEzLCAyMTcsIDE3OSwgMjQ4LCA2NCwgMjEwLCAxODQsIDIxMCwgMjEzLCAyMTcsIDE3OSwgCi0gICAgMjQ4LCA2NCwgMjE5LCAxMTMsIDIxMCwgMjEzLCAyMTcsIDE3OSwgMjQ4LCA2NCwgMjE3LCAxNjcsIDIxMCwgMjEzLCAyMTcsIAotICAgIDE3OSwgMjQ4LCA2NCwgMjQ3LCA3NywgMjEwLCAyMTMsIDIxNywgMTc5LCAyNDgsIDY0LCAyMjcsIDE3MiwgMjE0LCAyMjQsIAotICAgIDIxMCwgMjEzLCAyMTcsIDE3OSwgMjQ4LCA2NCwgMjMwLCA0NCwgMjE0LCAyMjQsIDIxMCwgMjEzLCAyMTcsIDE3OSwgMjQ4LCAKLSAgICA2NCwgMjQ0LCAyMTMsIDIxNCwgMjI0LCAyMTAsIDIxMywgMjE3LCAxNzksIDI0OCwgNjQsIDI0OSwgMzMsIDIxNCwgMjI0LCAKLSAgICAyMDYsIDUyLCAxNDMsIDIyOSwgMjM0LCAyMDYsIDUyLCAxNDMsIDIxMywgNTgsIDIwNiwgNTIsIDE0MywgMjE3LCAyNDUsIAotICAgIDIwNiwgNTIsIDIsIDIyMiwgNzYsIDIwNiwgNTIsIDIsIDIwMywgODcsIDIyNCwgMTQ2LCAyMTAsIDE3NSwgMjA2LCA1MiwgCi0gICAgMTQzLCAyMDMsIDg3LCAyNTEsIDc3LCAyMzEsIDM2LCAyMTAsIDE3NSwgMjA2LCA1MiwgMTQzLCAyMDMsIDg3LCAyMzEsIDM2LCAKLSAgICAyMTAsIDE3NSwgMjA2LCA1MiwgMTQzLCAyMDMsIDg3LCAyMjksIDIyMiwgMjMxLCAzNiwgMjEwLCAxNzUsIDIwNiwgNTIsIAotICAgIDE0MywgMjQ3LCA1NSwgNTYsIDIwNiwgNTIsIDE0MywgMjAzLCA4NywgMjI5LCAyMjIsIDIzMSwgMzYsIDIxMCwgMTc2LCAKLSAgICAyMTQsIDE5NCwgMjA2LCA1MiwgMTQzLCA1MiwgMjEwLCAxNzUsIDIwNiwgNTIsIDE0MywgMjA4LCA3MCwgMjEwLCAxNzUsIAotICAgIDIwNiwgNTIsIDE0MywgMjI5LCAyMjIsIDI1MCwgMTgyLCAyMDYsIDUyLCAxNDMsIDcwLCA1NiwgMjA2LCA1MiwgMTQzLCAKLSAgICAxMjAsIDE4NywgNTYsIDIwNiwgNTIsIDE0MywgMTI2LCAxODcsIDU2LCAyMDYsIDUyLCAxNDMsIDIxNiwgNCwgMjI5LCAyMzMsIAotICAgIDIzMSwgMzYsIDIxMCwgMTc1LCAyMDYsIDUyLCAxNDMsIDI1MCwgNDcsIDIzMSwgMzYsIDIxMCwgMTc1LCAyMDYsIDUyLCAyLCAKLSAgICAyMDUsIDIwMCwgMjEwLCAxNzUsIDIwNiwgNTIsIDIsIDIwNSwgMjAwLCAyMDcsIDI2LCAyMDYsIDUyLCAyLCAyMTYsIDczLCAKLSAgICAyMDUsIDIwMCwgMjA3LCAyNiwgMjA2LCA1MiwgMiwgMjA1LCAyMDAsIDI1MCwgMTgyLCAyMDYsIDUyLCAyLCAyMTYsIDczLCAKLSAgICAyMDUsIDIwMCwgMjUwLCAxODIsIDIwNiwgNTIsIDIsIDIwNSwgMjAwLCAyMDcsIDI3LCAzLCAyMDksIDI0OCwgMjA2LCA1MiwgCi0gICAgMiwgMjA1LCAyMDAsIDI1MCwgMTgzLCAzLCAyMDksIDI0OCwgMjA2LCA1MiwgMiwgMjUwLCAxODEsIDI1MCwgMTk3LCAyMDYsIAotICAgIDUyLCAyLCAyNTAsIDE4MSwgMjQ5LCAyLCAyMDYsIDUyLCAyLCAyNTAsIDE4MSwgMjA2LCA3NywgMjA2LCA1MiwgMiwgMjUwLCAKLSAgICAxODEsIDIwNiwgNzgsIDMsIDIwOSwgMjQ4LCAyMDYsIDUyLCAyLCAyMDgsIDIwMSwgMjA2LCA1MiwgMiwgMjM3LCAxNSwgCi0gICAgMTYzLCAyNTAsIDE4MCwgMjA2LCA1MiwgMiwgMTYzLCAyNTAsIDE4MCwgMjA2LCA1MiwgMiwgMjE1LCAxNDcsIDE2MywgMjUwLCAKLSAgICAxODAsIDIwNiwgNTIsIDIsIDI1MCwgMTgxLCAyMDcsIDMzLCAyMjMsIDIzMiwgMjA2LCA1MiwgMiwgMjUwLCAxMjIsIDIwNiwgCi0gICAgNTIsIDIsIDIxNSwgMTk4LCAyNTAsIDEyMiwgMjA2LCA1MiwgMTQzLCAyNDcsIDU1LCA1NSwgMjA2LCA1MiwgMiwgMjMwLCAKLSAgICAxMzUsIDIwNiwgNTIsIDIsIDIwNiwgMjIyLCAyMDYsIDUyLCAxNDMsIDIxNSwgMjUzLCA1NSwgMjA2LCA1MiwgMTQzLCA1MiwgCi0gICAgMjE1LCAyNTMsIDU1LCA4LCAxLCA1LCA2LCA2MywgOCwgMSwgNSwgNiwgMjUxLCAxMDksIDgsIDUsIDEsIDIwNywgMTc0LCAKLSAgICAyNTEsIDEwOSwgOCwgMSwgNSwgNiwgMjQ4LCAyMjUsIDI0OSwgMjU1LCA4LCAxLCA1LCA2LCAyNDcsIDEyNSwgOCwgMSwgNSwgCi0gICAgNiwgMjQ1LCA1MSwgOCwgMSwgNSwgNiwgMjQwLCAyNDMsIDgsIDEsIDUsIDYsIDc0LCA4LCA1LCAxLCAyMDcsIDE3NCwgMTcxLCAKLSAgICA3NCwgOCwgNSwgMSwgMjA3LCAxNzQsIDc1LCA4LCAxLCA1LCA2LCAyMzAsIDE4NCwgOCwgMSwgNSwgNiwgMjMwLCA1NCwgOCwgCi0gICAgMSwgNSwgNiwgMjI4LCAxMzEsIDMsIDk1LCA4LCAxLCA1LCA2LCAyMjYsIDE4NSwgOCwgMSwgNSwgNiwgMjE2LCA3MywgMjIzLCAKLSAgICAxNjMsIDgsIDEsIDUsIDYsIDc4LCA4LCAxLCA1LCA2LCAxNzEsIDc4LCA4LCA1LCAxLCAyMTIsIDE1NCwgNzgsIDgsIDUsIDEsIAotICAgIDIxMiwgMTU0LCAxNzEsIDc4LCA4LCA1LCAxLCAyMTIsIDE1NCwgMTU4LCAzLCA5NSwgOCwgNSwgMSwgMjA3LCAxNzQsIDIyMCwgCi0gICAgNzMsIDgsIDEsIDUsIDYsIDIxOSwgMjE2LCA4LCA1LCAxLCAyMDgsIDE0NSwgMTYyLCA3OCwgOCwgNSwgMSwgMjQ3LCAyNDgsIAotICAgIDE2MiwgNzgsIDgsIDEsIDUsIDYsIDIxOSwgMTg0LCA4LCAxLCA1LCA2LCAyMTYsIDczLCAxNDYsIDgsIDEsIDUsIDYsIDIwNywgCi0gICAgMTc0LCAxNDYsIDgsIDEsIDUsIDYsIDIxMCwgNjksIDgsIDEsIDUsIDYsIDY4LCA4LCA1LCAxLCAyMTIsIDE1NCwgNjgsIDgsIAotICAgIDUsIDEsIDIxMiwgMTU0LCAyNDMsIDIyOSwgNjgsIDgsIDUsIDEsIDIxMiwgMTU0LCAyMDcsIDE3NCwgMjI2LCAxODUsIDgsIAotICAgIDEsIDUsIDYsIDIwNiwgMTY0LCA4LCAxLCA1LCA2LCAyMDQsIDE0NCwgOCwgMSwgNSwgNiwgMjAyLCAxNTksIDgsIDEsIDUsIAotICAgIDYsIDI0MCwgMTc3LCA4LCAxLCAyMDUsIDE4NiwgMjI4LCAzLCAyMTEsIDIwMCwgOCwgMSwgMjUxLCA1OSwgMzAsIDEsIDUsIAotICAgIDYsIDIzOCwgMjM1LCAzMCwgMSwgNSwgNiwgMjI4LCAyNCwgMzAsIDEsIDUsIDYsIDIxOCwgMTY3LCAzMCwgMSwgNSwgNiwgCi0gICAgMjE2LCA1OSwgMzAsIDEsIDUsIDYsIDIxNywgMjAyLCAzNiwgMSwgNSwgNiwgMjQxLCAxMjIsIDY1LCAxLCA2LCA2MywgNjUsIAotICAgIDEsIDYsIDI1MSwgMTA5LCA2NSwgMSwgNiwgMjQ5LCAyNTUsIDY1LCAxLCA2LCAyNDgsIDIyNSwgMjQ5LCAyNTUsIDY1LCAxLCAKLSAgICA2LCAyNDUsIDUxLCA2NSwgMSwgNiwgNzQsIDY1LCAxLCA2LCAyMTYsIDczLCA3NCwgNjUsIDEsIDYsIDIzOSwgNzUsIDY1LCAKLSAgICAxLCA2LCAyMzcsIDE3MSwgNjUsIDEsIDYsIDc1LCA2NSwgMSwgNiwgMjMwLCAxODQsIDY1LCAxLCA2LCAyMzAsIDU0LCA2NSwgCi0gICAgMSwgNiwgMTU5LCA2NSwgMSwgNiwgMjI2LCAxODUsIDY1LCAxLCA2LCAyMjMsIDE2MywgNjUsIDEsIDYsIDIxNiwgNzMsIAotICAgIDIyMywgMTYzLCA2NSwgMSwgNiwgNzgsIDY1LCAxLCA2LCAyMTksIDIxNiwgNjUsIDEsIDYsIDIxOSwgMTg0LCA2NSwgMSwgNiwgCi0gICAgMTQ2LCA2NSwgMSwgNiwgMjEwLCA2OSwgNjUsIDEsIDYsIDY4LCA2NSwgMSwgNiwgMjA0LCAxNDQsIDY1LCAxLCA1LCA2MywgCi0gICAgNjUsIDEsIDUsIDIwNywgMTc0LCA2MywgNjUsIDEsIDUsIDI1MSwgMiwgNjUsIDEsIDUsIDIwNywgMTc0LCAyNTEsIDEwOSwgCi0gICAgNjUsIDEsIDUsIDI0OSwgMjU1LCA2NSwgMSwgNSwgMjQ1LCA1MSwgNjUsIDEsIDUsIDc0LCA2NSwgMSwgNSwgMjE0LCAxOTIsIAotICAgIDY1LCAxLCA1LCAxNzEsIDc0LCA2NSwgMSwgNSwgMjA3LCAxNzQsIDE3MSwgNzQsIDY1LCAxLCA1LCAyMzksIDc1LCA2NSwgMSwgCi0gICAgNSwgMjA3LCAxNzQsIDc1LCA2NSwgMSwgNSwgMjMwLCA1NCwgNjUsIDEsIDUsIDIyNiwgMTg1LCA2NSwgMSwgNSwgMjQxLCAKLSAgICA3OCwgNjUsIDEsIDUsIDc4LCA2NSwgMSwgNSwgMTcxLCA3OCwgNjUsIDEsIDUsIDIwOCwgMTQ1LCAxNjIsIDc4LCA2NSwgMSwgCi0gICAgNSwgMjQ3LCAyNDgsIDE2MiwgNzgsIDY1LCAxLCA1LCAyMTksIDE4NCwgNjUsIDEsIDUsIDIxMCwgNjksIDY1LCAxLCA1LCAKLSAgICA2OCwgNjUsIDEsIDUsIDIxMiwgMTU0LCA2OCwgNjUsIDEsIDUsIDIwNywgMTc0LCAyMjYsIDE4NSwgNjUsIDEsIDUsIDIwNiwgCi0gICAgMTY0LCA2NSwgMSwgNSwgMjUxLCA1OSwgNjUsIDEsIDUsIDI0OCwgMTA2LCA2NSwgMSwgNSwgMzAsIDIzOCwgMjM1LCA2NSwgCi0gICAgMSwgNSwgMjQ0LCAzNywgNjUsIDEsIDUsIDMwLCAyMTgsIDE5MiwgNjUsIDEsIDUsIDI0NiwgMTQyLCA4LCAyMTAsIDI0NiwgCi0gICAgNSwgMSwgNzUsIDgsIDIxMCwgMjQ2LCA1LCAxLCAxNDYsIDgsIDIxMCwgMjQ2LCA1LCAxLCA2OCwgOCwgMjEwLCAyNDYsIDUsIAotICAgIDEsIDIwNiwgMTY0LCAzMCwgMjEwLCAyNDYsIDUsIDEsIDI0OCwgMTA2LCAzMCwgMjEwLCAyNDYsIDUsIDEsIDIzOCwgMjM1LCAKLSAgICAzMCwgMjEwLCAyNDYsIDUsIDEsIDIxNiwgNTksIDMwLCAyMTAsIDI0NiwgNSwgMSwgMjE4LCAxOTIsIDMwLCAyMTAsIDI0NiwgCi0gICAgNSwgMSwgMjQ2LCAxNDIsIDgsIDUsIDEsIDIwNywgMjQsIDgsIDUsIDEsIDY2LCAzLCAxMDEsIDIwOCwgMjI3LCA4LCA1LCAxLCAKLSAgICAyNDUsIDUyLCAzLCAxMDEsIDIwOCwgMjI3LCA4LCA1LCAxLCAyNDAsIDE3NSwgMywgMTAxLCAyMDgsIDIyNywgOCwgNSwgMSwgCi0gICAgMjI2LCAxODYsIDMsIDEwMSwgMjA4LCAyMjcsIDgsIDUsIDEsIDIyMywgMTY0LCAzLCAxMDEsIDIwOCwgMjI3LCA4LCA1LCAxLCAKLSAgICAyMTksIDE4NSwgMywgMTAxLCAyMDgsIDIyNywgOCwgNSwgMSwgMjE3LCAxLCAzLCAxMDEsIDIwOCwgMjI3LCA4LCA1LCAxLCAKLSAgICAyMTcsIDEsIDMsIDIzOSwgMjQxLCAyNSwgMTAxLCAyMDgsIDIyNywgOCwgNSwgMSwgMjE1LCA5NCwgMywgMTAxLCAyMDgsIAotICAgIDIyNywgOCwgNSwgMSwgMjEwLCA3MCwgMywgMTAxLCAyMDgsIDIyNywgOCwgNSwgMSwgMjAyLCAxNjAsIDMsIDEwMSwgMjA4LCAKLSAgICAyMjcsIDgsIDUsIDEsIDIwNywgMTc0LCAyMzksIDc1LCA2NSwgMSwgMzYsIDI0MSwgOTIsIDgsIDUsIDEsIDIzMSwgNCwgCi0gICAgMjM5LCA3NSwgOCwgNSwgMSwgMjA5LCAxMTEsIDMsIDIxMSwgMzYsIDgsIDUsIDYsIDEsIDIzNSwgMjA2LCAzLCA5NSwgOCwgCi0gICAgNSwgMSwgMjMwLCAyMzEsIDMsIDk1LCA4LCA1LCAxLCAyMTksIDE4NSwgMywgOTUsIDgsIDUsIDYsIDEsIDEwNiwgMywgOTUsIAotICAgIDgsIDUsIDEsIDIwNiwgMjE3LCAzLCA5NSwgOCwgNSwgMSwgNjYsIDMsIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDI0NSwgCi0gICAgNTIsIDMsIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDI0MCwgMTc1LCAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyMzksIAotICAgIDc2LCAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyMzAsIDU1LCAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyMjgsIAotICAgIDEzMSwgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjI2LCAxODYsIDMsIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDIyMywgCi0gICAgMTY0LCAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyMTksIDE4NSwgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjE3LCAKLSAgICAxLCAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyMTUsIDk0LCAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyNDEsIDgsIAotICAgIDMsIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDIwNiwgMTY1LCAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyMDMsIDE5NywgCi0gICAgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjAyLCAxNjAsIDMsIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDM0LCAzLCAKLSAgICAyMTYsIDc5LCAxMTMsIDgsIDUsIDEsIDI1MSwgMywgMywgMjE2LCA3OSwgMTEzLCA4LCA1LCAxLCAyNDUsIDUyLCAzLCAyMzYsIAotICAgIDExNiwgMjUsIDIwOSwgMjQ4LCA4LCA1LCAxLCAxODgsIDMsIDIxNiwgNzksIDExMywgOCwgNSwgMSwgMTcxLCAxODgsIDMsIAotICAgIDIxNiwgNzksIDExMywgOCwgNSwgMSwgMjE2LCA3MywgMTcxLCAxODgsIDMsIDIxNiwgNzksIDExMywgOCwgNSwgMSwgMjE0LCAKLSAgICAxOTMsIDMsIDIxNiwgNzksIDExMywgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIDIxNiwgNzksIDExMywgOCwgNSwgMSwgMTcxLCAKLSAgICAxNTgsIDMsIDIxNiwgNzksIDExMywgOCwgNSwgMSwgMjQxLCA4LCAzLCAyMTYsIDc5LCAxMTMsIDgsIDUsIDEsIDEwNiwgMywgCi0gICAgMjE2LCA3OSwgMTEzLCA4LCA1LCAxLCAyNDAsIDE3OCwgMywgMjE2LCA3OSwgMTEzLCA2NSwgMSwgNSwgMjA3LCAxNzQsIAotICAgIDI1MSwgMiwgNjUsIDEsIDUsIDI0NywgMTI1LCA2NSwgMSwgNSwgMjQ3LCAxMjYsIDMsIDI0NSwgOTUsIDY1LCAxLCA1LCAKLSAgICAyNDAsIDI0MywgNjUsIDEsIDUsIDIxNiwgNzMsIDE3MSwgNzQsIDY1LCAxLCA1LCAyNDAsIDE3NCwgNjUsIDEsIDUsIDI0MywgCi0gICAgODQsIDIzMCwgMTg1LCAzLCA5NSwgNjUsIDEsIDUsIDEzMiwgMjM5LCA3NSwgNjUsIDEsIDUsIDIwNywgMTc0LCAyMzcsIAotICAgIDE3MSwgNjUsIDEsIDUsIDIzNSwgMjA2LCAzLCA5NSwgNjUsIDEsIDUsIDIzMCwgMjMwLCA2NSwgMSwgNSwgNiwgNzUsIDY1LCAKLSAgICAxLCA1LCA2LCAyMzUsIDIwNiwgMywgOTUsIDY1LCAxLCA1LCAyMzAsIDE4NSwgMywgMjQ1LCAxMjYsIDY1LCAxLCA1LCAyMjgsIAotICAgIDEzMSwgMywgMjE2LCA3OSwgMTEzLCA2NSwgMSwgNSwgMjI4LCAxMzEsIDMsIDIxOSwgMTQyLCAxMTMsIDY1LCAxLCA1LCA2LCAKLSAgICAxNTksIDY1LCAxLCA1LCAyMjYsIDE4NiwgMywgMTEzLCA2NSwgMSwgNSwgMjA3LCAxNzQsIDIyNiwgMTg2LCAzLCAxNjMsIAotICAgIDIyNywgMjEwLCA2NSwgMSwgNSwgMjIzLCAxNjQsIDMsIDQ5LCAxMTMsIDY1LCAxLCA1LCAyMjMsIDE2NCwgMywgMjE2LCA3OSwgCi0gICAgMTEzLCA2NSwgMSwgNSwgNiwgMjIzLCAxNjMsIDY1LCAxLCA1LCAyNDgsIDIyNSwgNzgsIDY1LCAxLCA1LCAyMTgsIDE5MiwgCi0gICAgNjUsIDEsIDUsIDIxNSwgOTQsIDMsIDExMywgNjUsIDEsIDUsIDI0MSwgNywgNjUsIDEsIDUsIDIxMCwgNzAsIDMsIDIxOSwgCi0gICAgMTQyLCAxMTMsIDY1LCAxLCA1LCAxMDYsIDE0MiwgNjUsIDEsIDUsIDIwNiwgMjE2LCA2NSwgMSwgNSwgNiwgNjgsIDY1LCAxLCAKLSAgICA1LCAyMDYsIDE2NSwgMywgMTEzLCA2NSwgMSwgNSwgMjA3LCAxNzQsIDIwNiwgMTY0LCA2NSwgMSwgNSwgMjAyLCAxNTksIAotICAgIDY1LCAxLCA1LCAyMDIsIDE2MCwgMywgMjE2LCA3OSwgMTEzLCA2NSwgMSwgNSwgMjAyLCAxNjAsIDMsIDI0NSwgOTUsIDY1LCAKLSAgICAxLCA1LCAyNDAsIDE3NywgNjUsIDEsIDUsIDIwOSwgNzQsIDM5LCAyNDIsIDgzLCAyMzcsIDI1NCwgMjUxLCAxMzgsIDM5LCAKLSAgICAyNDIsIDgzLCAyNTEsIDEyNiwgMjUxLCAxMzgsIDM5LCAyMTIsIDI1LCA1NiwgMzksIDIxMCwgMTgyLCA4MiwgMzksIDIyNSwgCi0gICAgMTY5LCAzOSwgMjM3LCAyNTEsIDM5LCAyMjUsIDE2NywgMzksIDI1MSwgMTI0LCAzOSwgMjM3LCAyNTIsIDM5LCAyNTEsIAotICAgIDEyNSwgMzksIDgsIDUsIDEsIDIxNywgMSwgNTYsIDM5LCAyNDcsIDIxMywgMzksIDIyNSwgMTY4LCAzOSwgNTIsIDI0NiwgCi0gICAgNTMsIDU1LCAzOSwgMjIwLCA2MywgNTUsIDM5LCAyMDIsIDMwLCA1NiwgMzksIDIzMCwgMjE2LCA1NiwgMzksIDIwNiwgMjExLCAKLSAgICA1NSwgMzksIDIwNiwgMTk0LCA1NSwgMzksIDgsIDUsIDEsIDIzOSwgMjE0LCAxNzEsIDM0LCA1NSwgMzksIDgsIDUsIDEsIAotICAgIDI1MSwgMTA5LCAzOSwgOCwgNSwgMSwgMjUwLCAxNzgsIDM5LCA4LCA1LCAxLCAyNTAsIDE4LCAzOSwgOCwgNSwgMSwgMjQ3LCAKLSAgICAxMjYsIDI0NiwgMjMxLCAzOSwgOCwgNSwgMSwgMjMxLCA0LCAyNDUsIDUxLCAzOSwgOCwgNSwgMSwgMjQwLCAyNDMsIDM5LCAKLSAgICA4LCA1LCAxLCAyMzksIDc1LCAzOSwgOCwgMSwgNSwgNiwgMjM5LCA3NSwgMzksIDgsIDUsIDEsIDIzMCwgNTQsIDM5LCA4LCAKLSAgICA1LCAxLCAxNTksIDM5LCA4LCAxLCA1LCA2LCAxNTksIDM5LCA4LCAxLCA1LCA2LCAyMjYsIDE4NSwgMzksIDgsIDUsIDEsIAotICAgIDIyMywgMTYzLCAzOSwgOCwgMSwgNSwgNiwgMjIzLCAxNjMsIDM5LCA4LCAxLCA1LCA2LCAxNDYsIDM5LCA4LCA1LCAxLCAKLSAgICAyMTcsIDEsIDIxNSwgMTkyLCAzOSwgOCwgNSwgMSwgMTk0LCAzOSwgOCwgNSwgMSwgMTYzLCAxOTQsIDM5LCA4LCA1LCAxLCAKLSAgICAyMDIsIDE1OSwgMzksIDgsIDUsIDEsIDI1MSwgMiwgMzksIDgsIDUsIDEsIDI0OSwgMjU1LCAzOSwgOCwgNSwgMSwgMjQ4LCAKLSAgICAxMDYsIDM5LCA4LCA1LCAxLCAyMTQsIDE5MiwgMzksIDgsIDUsIDEsIDI0MCwgMTc0LCAzOSwgOCwgNSwgMSwgMjI4LCAxMzEsIAotICAgIDMsIDUyLCAxMDEsIDIwOCwgMjI3LCAzOSwgOCwgNSwgMSwgMTU4LCAzLCAxNTcsIDI0NiwgMjE5LCA5NSwgMzksIDgsIDUsIAotICAgIDEsIDIxOSwgMTg0LCAzOSwgOCwgNSwgMSwgMjQxLCA3LCAzOSwgOCwgNSwgMSwgMTA2LCAzLCAxNTcsIDI0NiwgMjE5LCA5NSwgCi0gICAgMzksIDgsIDUsIDEsIDIwNCwgMTQ0LCAzOSwgOCwgNSwgMSwgMzQsIDMsIDI0MywgMjMxLCAzOSwgOCwgNSwgMSwgMTU4LCAzLCAKLSAgICAyNDMsIDIzMSwgMzksIDgsIDUsIDEsIDEwNiwgMywgMjQzLCAyMzEsIDM5LCAxMTIsIDIxMCwgNCwgNTUsIDM5LCA1MiwgCi0gICAgMjMwLCAyMzksIDI0NywgMjE1LCA1NiwgMzksIDI1MSwgNywgMTU2LCAyMDgsIDE3MywgNTYsIDM5LCA0OSwgMjUwLCA5NSwgCi0gICAgNTUsIDM5LCA1MCwgMjUwLCA5NSwgMjUsIDEyMSwgMjUwLCA5NSwgNTYsIDgsIDYsIDEsIDM0LCAzLCAyMTUsIDI1MywgNTYsIAotICAgIDgsIDUsIDEsIDM0LCAzLCAyMTUsIDI1MywgNTYsIDgsIDYsIDEsIDY2LCAzLCA3MCwgNTUsIDgsIDUsIDEsIDY2LCAzLCA3MCwgCi0gICAgNTUsIDgsIDYsIDEsIDY2LCAzLCA3MCwgNTYsIDgsIDUsIDEsIDY2LCAzLCA3MCwgNTYsIDgsIDYsIDEsIDY2LCAzLCAyMjcsIAotICAgIDExNSwgNTYsIDgsIDUsIDEsIDY2LCAzLCAyMjcsIDExNSwgNTYsIDgsIDYsIDEsIDI0NywgMTI2LCAzLCAyNDYsIDIzMiwgCi0gICAgMjUsIDE2NSwgOCwgNSwgMSwgMjQ3LCAxMjYsIDMsIDI0NiwgMjMyLCAyNSwgMTY1LCA4LCA2LCAxLCAyNDUsIDUyLCAzLCAKLSAgICA3MCwgNTUsIDgsIDUsIDEsIDI0NSwgNTIsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMjQ1LCA1MiwgMywgNzAsIDU2LCA4LCA1LCAKLSAgICAxLCAyNDUsIDUyLCAzLCA3MCwgNTYsIDgsIDYsIDEsIDI0NSwgNTIsIDMsIDIyNywgMTE1LCA1NiwgOCwgNSwgMSwgMjQ1LCAKLSAgICA1MiwgMywgMjI3LCAxMTUsIDU2LCA4LCA2LCAxLCAyNDUsIDUyLCAzLCAyNDYsIDIzMSwgOCwgNSwgMSwgMjQ1LCA1MiwgMywgCi0gICAgMjQ2LCAyMzEsIDgsIDYsIDEsIDI0NSwgNTIsIDMsIDI0NiwgNTMsIDU2LCA4LCA1LCAxLCAyNDUsIDUyLCAzLCAyNDYsIDUzLCAKLSAgICA1NiwgOCwgNiwgMSwgMTg4LCAzLCAyMjUsIDE3MSwgMjUsIDIzNywgMjUzLCA4LCA1LCAxLCAxODgsIDMsIDIyNSwgMTcxLCAKLSAgICAyNSwgMjM3LCAyNTMsIDgsIDYsIDEsIDE4OCwgMywgMjI1LCAxNzEsIDI1LCAxNjUsIDgsIDUsIDEsIDE4OCwgMywgMjI1LCAKLSAgICAxNzEsIDI1LCAxNjUsIDgsIDYsIDEsIDE4OCwgMywgMjQ2LCA1MywgNTYsIDgsIDUsIDEsIDE4OCwgMywgMjQ2LCA1MywgNTYsIAotICAgIDgsIDYsIDEsIDE4OCwgMywgMjA4LCAyMjgsIDU2LCA4LCA1LCAxLCAxODgsIDMsIDIwOCwgMjI4LCA1NiwgOCwgNiwgMSwgCi0gICAgMTg4LCAzLCAyNDYsIDIzMiwgMjUsIDI0NywgMjE0LCA4LCA1LCAxLCAxODgsIDMsIDI0NiwgMjMyLCAyNSwgMjQ3LCAyMTQsIAotICAgIDgsIDYsIDEsIDI0MCwgMTc1LCAzLCA3MCwgNTUsIDgsIDUsIDEsIDI0MCwgMTc1LCAzLCA3MCwgNTUsIDgsIDYsIDEsIDIzOSwgCi0gICAgNzYsIDMsIDIyNSwgMTcwLCA4LCA1LCAxLCAyMzksIDc2LCAzLCAyMjUsIDE3MCwgOCwgNiwgMSwgMjM3LCAxNzIsIDMsIDcwLCAKLSAgICA1NSwgOCwgNSwgMSwgMjM3LCAxNzIsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMjM3LCAxNzIsIDMsIDcwLCA1NiwgOCwgNSwgMSwgCi0gICAgMjM3LCAxNzIsIDMsIDcwLCA1NiwgOCwgNiwgMSwgMjM3LCAxNzIsIDMsIDI0MywgMjMxLCA4LCA1LCAxLCAyMzcsIDE3MiwgCi0gICAgMywgMjQzLCAyMzEsIDgsIDYsIDEsIDIzNywgMTcyLCAzLCAyNDYsIDIzMSwgOCwgNSwgMSwgMjM3LCAxNzIsIDMsIDI0NiwgCi0gICAgMjMxLCA4LCA2LCAxLCAyMzcsIDE3MiwgMywgMjQ3LCAyMTUsIDU2LCA4LCA1LCAxLCAyMzcsIDE3MiwgMywgMjQ3LCAyMTUsIAotICAgIDU2LCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgMjA4LCAyMjgsIDU2LCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgMjA4LCAyMjgsIAotICAgIDU2LCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgMjQzLCAyMzIsIDI1LCAxNjUsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCAyNDMsIAotICAgIDIzMiwgMjUsIDE2NSwgOCwgNiwgMSwgMjMwLCA1NSwgMywgMTY1LCA4LCA1LCAxLCAyMzAsIDU1LCAzLCAxNjUsIDgsIDYsIAotICAgIDEsIDIzMCwgNTUsIDMsIDcwLCA1NiwgOCwgNSwgMSwgMjMwLCA1NSwgMywgNzAsIDU2LCA4LCA2LCAxLCAyMzAsIDU1LCAzLCAKLSAgICAyMjcsIDExNSwgNTYsIDgsIDUsIDEsIDIzMCwgNTUsIDMsIDIyNywgMTE1LCA1NiwgOCwgNiwgMSwgMjI4LCAxMzEsIDMsIAotICAgIDcwLCA1NiwgOCwgNSwgMSwgMjI4LCAxMzEsIDMsIDcwLCA1NiwgOCwgNiwgMSwgMjI4LCAxMzEsIDMsIDcwLCAyNDgsIDEyNiwgCi0gICAgMjUsIDIyNSwgMTcwLCA4LCA1LCAxLCAyMjgsIDEzMSwgMywgNzAsIDI0OCwgMTI2LCAyNSwgMjI1LCAxNzAsIDgsIDYsIDEsIAotICAgIDIyOCwgMTMxLCAzLCAyMjcsIDExNSwgNTYsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAyMjcsIDExNSwgNTYsIDgsIDYsIDEsIAotICAgIDIyOCwgMTMxLCAzLCAyNDYsIDUzLCA1NiwgOCwgNSwgMSwgMjI4LCAxMzEsIDMsIDI0NiwgNTMsIDU2LCA4LCA2LCAxLCAKLSAgICAyMjYsIDE4NiwgMywgMTY1LCA4LCA1LCAxLCAyMjYsIDE4NiwgMywgMTY1LCA4LCA2LCAxLCAyMjYsIDE4NiwgMywgNzAsIAotICAgIDU1LCA4LCA1LCAxLCAyMjYsIDE4NiwgMywgNzAsIDU1LCA4LCA2LCAxLCAyMjYsIDE4NiwgMywgNzAsIDU2LCA4LCA1LCAxLCAKLSAgICAyMjYsIDE4NiwgMywgNzAsIDU2LCA4LCA2LCAxLCAyMjMsIDE2NCwgMywgNzAsIDU1LCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgCi0gICAgNzAsIDU1LCA4LCA2LCAxLCAyMjMsIDE2NCwgMywgNzAsIDU2LCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgNzAsIDU2LCA4LCA2LCAKLSAgICAxLCAyMjMsIDE2NCwgMywgMjI3LCAxMTUsIDU2LCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgMjI3LCAxMTUsIDU2LCA4LCA2LCAKLSAgICAxLCAyMjMsIDE2NCwgMywgMjQ2LCA1MywgNTYsIDgsIDUsIDEsIDIyMywgMTY0LCAzLCAyNDYsIDUzLCA1NiwgOCwgNiwgMSwgCi0gICAgMTU4LCAzLCAyMDgsIDIyOCwgMjUsIDE2NSwgOCwgNSwgMSwgMTU4LCAzLCAyMDgsIDIyOCwgMjUsIDE2NSwgOCwgNiwgMSwgCi0gICAgMTU4LCAzLCAyMDgsIDIyOCwgMjUsIDI0MywgMjMxLCA4LCA1LCAxLCAxNTgsIDMsIDIwOCwgMjI4LCAyNSwgMjQzLCAyMzEsIAotICAgIDgsIDYsIDEsIDE1OCwgMywgMjI1LCAxNzEsIDI1LCAyMzcsIDI1MywgOCwgNSwgMSwgMTU4LCAzLCAyMjUsIDE3MSwgMjUsIAotICAgIDIzNywgMjUzLCA4LCA2LCAxLCAxNTgsIDMsIDIyNSwgMTcxLCAyNSwgMTY1LCA4LCA1LCAxLCAxNTgsIDMsIDIyNSwgMTcxLCAKLSAgICAyNSwgMTY1LCA4LCA2LCAxLCAyMTksIDE4NSwgMywgMTY1LCA4LCA1LCAxLCAyMTksIDE4NSwgMywgMTY1LCA4LCA2LCAxLCAKLSAgICAyMTksIDE4NSwgMywgNzAsIDU1LCA4LCA1LCAxLCAyMTksIDE4NSwgMywgNzAsIDU1LCA4LCA2LCAxLCAyMTcsIDEsIDMsIAotICAgIDcwLCA1NSwgOCwgNSwgMSwgMjE3LCAxLCAzLCA3MCwgNTUsIDgsIDYsIDEsIDIxNywgMSwgMywgNzAsIDU2LCA4LCA1LCAxLCAKLSAgICAyMTcsIDEsIDMsIDcwLCA1NiwgOCwgNiwgMSwgMjE3LCAxLCAzLCA3MCwgMjQ4LCAxMjYsIDI1LCAyMjUsIDE3MCwgOCwgNSwgCi0gICAgMSwgMjE3LCAxLCAzLCA3MCwgMjQ4LCAxMjYsIDI1LCAyMjUsIDE3MCwgOCwgNiwgMSwgMjE3LCAxLCAzLCAyMjcsIDExNSwgCi0gICAgNTYsIDgsIDUsIDEsIDIxNywgMSwgMywgMjI3LCAxMTUsIDU2LCA4LCA2LCAxLCAyMTUsIDk0LCAzLCA3MCwgNTUsIDgsIDUsIAotICAgIDEsIDIxNSwgOTQsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMjE1LCA5NCwgMywgNzAsIDU2LCA4LCA1LCAxLCAyMTUsIDk0LCAzLCAKLSAgICA3MCwgNTYsIDgsIDYsIDEsIDIxNSwgOTQsIDMsIDI1MSwgMTI2LCAyNSwgNzAsIDU1LCA4LCA1LCAxLCAyMTUsIDk0LCAzLCAKLSAgICAyNTEsIDEyNiwgMjUsIDcwLCA1NSwgOCwgNiwgMSwgMjE1LCA5NCwgMywgMjQ3LCAzMCwgMjUsIDcwLCA1NSwgOCwgNSwgMSwgCi0gICAgMjE1LCA5NCwgMywgMjQ3LCAzMCwgMjUsIDcwLCA1NSwgOCwgNiwgMSwgMjE1LCA5NCwgMywgNzAsIDI0OCwgMTI2LCAyNSwgCi0gICAgNzAsIDU1LCA4LCA1LCAxLCAyMTUsIDk0LCAzLCA3MCwgMjQ4LCAxMjYsIDI1LCA3MCwgNTUsIDgsIDYsIDEsIDIxMCwgNzAsIAotICAgIDMsIDcwLCA1NSwgOCwgNSwgMSwgMjEwLCA3MCwgMywgNzAsIDU1LCA4LCA2LCAxLCAyMTAsIDcwLCAzLCA3MCwgNTYsIDgsIAotICAgIDUsIDEsIDIxMCwgNzAsIDMsIDcwLCA1NiwgOCwgNiwgMSwgMjEwLCA3MCwgMywgMjI3LCAxMTUsIDU2LCA4LCA1LCAxLCAKLSAgICAyMTAsIDcwLCAzLCAyMjcsIDExNSwgNTYsIDgsIDYsIDEsIDIxMCwgNzAsIDMsIDI0NiwgNTMsIDU2LCA4LCA1LCAxLCAyMTAsIAotICAgIDcwLCAzLCAyNDYsIDUzLCA1NiwgOCwgNiwgMSwgMTA2LCAzLCAyNDMsIDIzMiwgNTYsIDgsIDUsIDEsIDEwNiwgMywgMjQzLCAKLSAgICAyMzIsIDU2LCA4LCA2LCAxLCAxMDYsIDMsIDIwOCwgMjI4LCA1NiwgOCwgNSwgMSwgMTA2LCAzLCAyMDgsIDIyOCwgNTYsIDgsIAotICAgIDYsIDEsIDEwNiwgMywgMjQ2LCA1MywgNTYsIDgsIDUsIDEsIDEwNiwgMywgMjQ2LCA1MywgNTYsIDgsIDYsIDEsIDEwNiwgMywgCi0gICAgMjA4LCAyMjgsIDI1LCAxNjUsIDgsIDUsIDEsIDEwNiwgMywgMjA4LCAyMjgsIDI1LCAxNjUsIDgsIDYsIDEsIDEwNiwgMywgCi0gICAgMjI1LCAxNzEsIDI1LCAyNDMsIDIzMSwgOCwgNSwgMSwgMTA2LCAzLCAyMjUsIDE3MSwgMjUsIDI0MywgMjMxLCA4LCA2LCAxLCAKLSAgICAyMDYsIDE2NSwgMywgMjA4LCAyMjcsIDgsIDUsIDEsIDIwNiwgMTY1LCAzLCAyMDgsIDIyNywgOCwgNiwgMSwgMjA2LCAxNjUsIAotICAgIDMsIDcwLCA1NiwgOCwgNSwgMSwgMjA2LCAxNjUsIDMsIDcwLCA1NiwgOCwgNiwgMSwgMjA0LCAxNDUsIDMsIDIzNywgMjUzLCAKLSAgICA4LCA1LCAxLCAyMDQsIDE0NSwgMywgMjM3LCAyNTMsIDgsIDYsIDEsIDIwNCwgMTQ1LCAzLCAxNjUsIDgsIDUsIDEsIDIwNCwgCi0gICAgMTQ1LCAzLCAxNjUsIDgsIDYsIDEsIDIwNCwgMTQ1LCAzLCAyNDMsIDIzMSwgOCwgNSwgMSwgMjA0LCAxNDUsIDMsIDI0MywgCi0gICAgMjMxLCA4LCA2LCAxLCAyMDQsIDE0NSwgMywgNzAsIDU1LCA4LCA1LCAxLCAyMDQsIDE0NSwgMywgNzAsIDU1LCA4LCA2LCAxLCAKLSAgICAyMDQsIDE0NSwgMywgNzAsIDU2LCA4LCA1LCAxLCAyMDQsIDE0NSwgMywgNzAsIDU2LCA4LCA2LCAxLCAyMDMsIDE5NywgMywgCi0gICAgNzAsIDU1LCA4LCA1LCAxLCAyMDMsIDE5NywgMywgNzAsIDU1LCA4LCA2LCAxLCAyMDMsIDE5NywgMywgMjQzLCAyMzEsIDgsIAotICAgIDUsIDEsIDIwMywgMTk3LCAzLCAyNDMsIDIzMSwgOCwgNiwgMSwgMjAzLCAxMjUsIDMsIDcwLCA1NSwgOCwgNSwgMSwgMjAzLCAKLSAgICAxMjUsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMjAyLCAxNjAsIDMsIDI0NiwgNTIsIDgsIDUsIDEsIDIwMiwgMTYwLCAzLCAyNDYsIAotICAgIDUyLCA4LCA2LCAxLCAyMDIsIDE2MCwgMywgNzAsIDU2LCA4LCA1LCAxLCAyMDIsIDE2MCwgMywgNzAsIDU2LCA4LCA2LCAxLCAKLSAgICAyMDIsIDE2MCwgMywgMjI3LCAxMTUsIDU2LCA4LCA1LCAxLCAyMDIsIDE2MCwgMywgMjI3LCAxMTUsIDU2LCA4LCA1LCAxLCAKLSAgICAyMzcsIDE3MiwgMywgMjI3LCAxMTUsIDU2LCA4LCA1LCAxLCAyMTAsIDcwLCAzLCAyNDMsIDIzMSwgOCwgNSwgMSwgMjA0LCAKLSAgICAxNDUsIDMsIDIxNSwgMjUzLCA1NSwgOCwgNSwgMSwgMjAzLCAxMjUsIDMsIDIxNSwgMjUzLCA1NSwgOCwgNSwgMSwgMzQsIDMsIAotICAgIDUwLCAxNjIsIDIxNSwgMjUyLCA4LCA1LCAxLCAxNjMsIDIxNSwgOTQsIDMsIDcwLCA1NSwgOCwgNSwgMSwgMTYzLCAyMTUsIAotICAgIDk0LCAzLCAyNDMsIDIyOCwgOTUsIDgsIDUsIDEsIDE2MywgMjE1LCA5NCwgMywgMTM4LCA5NSwgOCwgNiwgMSwgMjEzLCA1NywgCi0gICAgMTk0LCA4LCA1LCAxLCAyNDQsIDM3LCA4LCA2LCAxLCAzNCwgMywgNzAsIDU2LCA4LCA1LCAxLCAzNCwgMywgNzAsIDU2LCA4LCAKLSAgICA2LCAxLCAzNCwgMywgMjM2LCAxMTYsIDU1LCA4LCA1LCAxLCAzNCwgMywgMjM2LCAxMTYsIDU1LCA4LCA2LCAxLCAzNCwgMywgCi0gICAgMjQ2LCA1MywgMjUsIDE2NSwgOCwgNSwgMSwgMzQsIDMsIDI0NiwgNTMsIDI1LCAxNjUsIDgsIDYsIDEsIDM0LCAzLCAyNDYsIAotICAgIDUzLCAyNSwgMjM3LCAyNTMsIDgsIDUsIDEsIDM0LCAzLCAyNDYsIDUzLCAyNSwgMjM3LCAyNTMsIDgsIDYsIDEsIDM0LCAzLCAKLSAgICAyNDYsIDUzLCAyNSwgMjM2LCAxMTYsIDU1LCA4LCA1LCAxLCAzNCwgMywgMjQ2LCA1MywgMjUsIDIzNiwgMTE2LCA1NSwgOCwgCi0gICAgNiwgMSwgMzQsIDMsIDI0NiwgNTMsIDI1LCAyMDgsIDIyNywgOCwgNSwgMSwgMzQsIDMsIDI0NiwgNTMsIDI1LCAyMDgsIAotICAgIDIyNywgOCwgNiwgMSwgMzQsIDMsIDI0NiwgNTMsIDI1LCA3MCwgNTYsIDgsIDUsIDEsIDM0LCAzLCAyNDYsIDUzLCAyNSwgCi0gICAgNzAsIDU2LCA4LCA2LCAxLCAzNCwgMywgMjQ3LCAyMTUsIDI1LCAxNjUsIDgsIDUsIDEsIDM0LCAzLCAyNDcsIDIxNSwgMjUsIAotICAgIDE2NSwgOCwgNiwgMSwgMzQsIDMsIDI0NywgMjE1LCAyNSwgMjM3LCAyNTMsIDgsIDUsIDEsIDM0LCAzLCAyNDcsIDIxNSwgCi0gICAgMjUsIDIzNywgMjUzLCA4LCA2LCAxLCAzNCwgMywgMjQ3LCAyMTUsIDI1LCAyMzYsIDExNiwgNTUsIDgsIDUsIDEsIDM0LCAzLCAKLSAgICAyNDcsIDIxNSwgMjUsIDIzNiwgMTE2LCA1NSwgOCwgNiwgMSwgMzQsIDMsIDI0NywgMjE1LCAyNSwgMjA4LCAyMjcsIDgsIDUsIAotICAgIDEsIDM0LCAzLCAyNDcsIDIxNSwgMjUsIDIwOCwgMjI3LCA4LCA2LCAxLCAzNCwgMywgMjQ3LCAyMTUsIDI1LCA3MCwgNTYsIAotICAgIDgsIDUsIDEsIDM0LCAzLCAyNDcsIDIxNSwgMjUsIDcwLCA1NiwgOCwgNiwgMSwgMTg4LCAzLCA3MCwgNTYsIDgsIDUsIDEsIAotICAgIDE4OCwgMywgNzAsIDU2LCA4LCA2LCAxLCAxODgsIDMsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMTg4LCAzLCAyMzYsIDExNiwgCi0gICAgNTUsIDgsIDYsIDEsIDE4OCwgMywgMjA4LCAyMjcsIDgsIDUsIDEsIDE4OCwgMywgMjA4LCAyMjcsIDgsIDYsIDEsIDE4OCwgCi0gICAgMywgMjQ2LCA1MywgMjUsIDE2NSwgOCwgNSwgMSwgMTg4LCAzLCAyNDYsIDUzLCAyNSwgMTY1LCA4LCA2LCAxLCAxODgsIDMsIAotICAgIDI0NiwgNTMsIDI1LCAyMzcsIDI1MywgOCwgNSwgMSwgMTg4LCAzLCAyNDYsIDUzLCAyNSwgMjM3LCAyNTMsIDgsIDYsIDEsIAotICAgIDE4OCwgMywgMjQ2LCA1MywgMjUsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMTg4LCAzLCAyNDYsIDUzLCAyNSwgMjM2LCAKLSAgICAxMTYsIDU1LCA4LCA2LCAxLCAxODgsIDMsIDI0NiwgNTMsIDI1LCAyMDgsIDIyNywgOCwgNSwgMSwgMTg4LCAzLCAyNDYsIAotICAgIDUzLCAyNSwgMjA4LCAyMjcsIDgsIDYsIDEsIDE4OCwgMywgMjQ2LCA1MywgMjUsIDcwLCA1NiwgOCwgNSwgMSwgMTg4LCAzLCAKLSAgICAyNDYsIDUzLCAyNSwgNzAsIDU2LCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgMjM2LCAxMTYsIDU1LCA4LCA1LCAxLCAyMzUsIAotICAgIDIwNiwgMywgMjM2LCAxMTYsIDU1LCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgNzAsIDU2LCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgCi0gICAgNzAsIDU2LCA4LCA2LCAxLCAxNTgsIDMsIDcwLCA1NiwgOCwgNSwgMSwgMTU4LCAzLCA3MCwgNTYsIDgsIDYsIDEsIDE1OCwgCi0gICAgMywgMjM2LCAxMTYsIDU1LCA4LCA1LCAxLCAxNTgsIDMsIDIzNiwgMTE2LCA1NSwgOCwgNiwgMSwgMTU4LCAzLCAyNDYsIDUzLCAKLSAgICAyNSwgMTY1LCA4LCA1LCAxLCAxNTgsIDMsIDI0NiwgNTMsIDI1LCAxNjUsIDgsIDYsIDEsIDE1OCwgMywgMjQ2LCA1MywgMjUsIAotICAgIDIzNywgMjUzLCA4LCA1LCAxLCAxNTgsIDMsIDI0NiwgNTMsIDI1LCAyMzcsIDI1MywgOCwgNiwgMSwgMTU4LCAzLCAyNDYsIAotICAgIDUzLCAyNSwgMjM2LCAxMTYsIDU1LCA4LCA1LCAxLCAxNTgsIDMsIDI0NiwgNTMsIDI1LCAyMzYsIDExNiwgNTUsIDgsIDYsIAotICAgIDEsIDE1OCwgMywgMjQ2LCA1MywgMjUsIDIwOCwgMjI3LCA4LCA1LCAxLCAxNTgsIDMsIDI0NiwgNTMsIDI1LCAyMDgsIDIyNywgCi0gICAgOCwgNiwgMSwgMTU4LCAzLCAyNDYsIDUzLCAyNSwgNzAsIDU2LCA4LCA1LCAxLCAxNTgsIDMsIDI0NiwgNTMsIDI1LCA3MCwgCi0gICAgNTYsIDgsIDYsIDEsIDE1OCwgMywgMjM2LCA1NCwgMjUsIDE2NSwgOCwgNSwgMSwgMTU4LCAzLCAyMzYsIDU0LCAyNSwgMTY1LCAKLSAgICA4LCA2LCAxLCAxNTgsIDMsIDIzNiwgNTQsIDI1LCAyMzcsIDI1MywgOCwgNSwgMSwgMTU4LCAzLCAyMzYsIDU0LCAyNSwgCi0gICAgMjM3LCAyNTMsIDgsIDYsIDEsIDE1OCwgMywgMjM2LCA1NCwgMjUsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMTU4LCAzLCAKLSAgICAyMzYsIDU0LCAyNSwgMjM2LCAxMTYsIDU1LCA4LCA2LCAxLCAxNTgsIDMsIDIzNiwgNTQsIDI1LCAyMDgsIDIyNywgOCwgNSwgCi0gICAgMSwgMTU4LCAzLCAyMzYsIDU0LCAyNSwgMjA4LCAyMjcsIDgsIDYsIDEsIDE1OCwgMywgMjM2LCA1NCwgMjUsIDcwLCA1NiwgCi0gICAgOCwgNSwgMSwgMTU4LCAzLCAyMzYsIDU0LCAyNSwgNzAsIDU2LCA4LCA2LCAxLCAxMDYsIDMsIDcwLCA1NiwgOCwgNSwgMSwgCi0gICAgMTA2LCAzLCA3MCwgNTYsIDgsIDYsIDEsIDEwNiwgMywgMjM2LCAxMTYsIDU1LCA4LCA1LCAxLCAxMDYsIDMsIDIzNiwgMTE2LCAKLSAgICA1NSwgOCwgNiwgMSwgMTA2LCAzLCAyMzYsIDU0LCAyNSwgMTY1LCA4LCA1LCAxLCAxMDYsIDMsIDIzNiwgNTQsIDI1LCAxNjUsIAotICAgIDgsIDYsIDEsIDEwNiwgMywgMjM2LCA1NCwgMjUsIDIzNywgMjUzLCA4LCA1LCAxLCAxMDYsIDMsIDIzNiwgNTQsIDI1LCAKLSAgICAyMzcsIDI1MywgOCwgNiwgMSwgMTA2LCAzLCAyMzYsIDU0LCAyNSwgMjM2LCAxMTYsIDU1LCA4LCA1LCAxLCAxMDYsIDMsIAotICAgIDIzNiwgNTQsIDI1LCAyMzYsIDExNiwgNTUsIDgsIDYsIDEsIDEwNiwgMywgMjM2LCA1NCwgMjUsIDIwOCwgMjI3LCA4LCA1LCAKLSAgICAxLCAxMDYsIDMsIDIzNiwgNTQsIDI1LCAyMDgsIDIyNywgOCwgNiwgMSwgMTA2LCAzLCAyMzYsIDU0LCAyNSwgNzAsIDU2LCAKLSAgICA4LCA1LCAxLCAxMDYsIDMsIDIzNiwgNTQsIDI1LCA3MCwgNTYsIDgsIDYsIDEsIDIwMywgMTI1LCAzLCAyMzcsIDI1MywgOCwgCi0gICAgNSwgMSwgMjAzLCAxMjUsIDMsIDIzNywgMjUzLCA4LCA2LCAxLCAyMDMsIDEyNSwgMywgNzAsIDU2LCA4LCA1LCAxLCAyMDMsIAotICAgIDEyNSwgMywgNzAsIDU2LCA4LCA2LCAxLCAyMDMsIDEyNSwgMywgMjM2LCAxMTYsIDU1LCA4LCA1LCAxLCAyMDMsIDEyNSwgMywgCi0gICAgMjM2LCAxMTYsIDU1LCA4LCA2LCAxLCAyMDMsIDEyNSwgMywgMjA4LCAyMjcsIDgsIDUsIDEsIDIwMywgMTI1LCAzLCAyMDgsIAotICAgIDIyNywgOCwgNiwgMSwgMjI0LCAxNDcsIDIyNywgNzgsIDgsIDUsIDEsIDIyNCwgMTQ3LCAyMjcsIDc4LCA4LCA2LCAxLCAKLSAgICAyMjQsIDE0NywgMjA2LCAxNjQsIDgsIDUsIDEsIDIyNCwgMTQ3LCAyMDYsIDE2NCwgOCwgNiwgMSwgMjAzLCAxMjUsIDMsIAotICAgIDIyNywgMTQsIDgsIDUsIDEsIDIwMywgMTI1LCAzLCAyMjcsIDE0LCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyMTcsIDE5NSwgCi0gICAgMzAsIDUsIDEsIDI1MSwgMywgMywgMjQ0LCAxNDEsIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDIxNywgMTk2LCAyNSwgMjA2LCAKLSAgICA3MCwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjQ0LCAxNDIsIDI1LCAyMDYsIDcwLCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyMTcsIAotICAgIDE5NiwgMjUsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTg5LCAzMCwgNSwgMSwgCi0gICAgMjUxLCAzLCAzLCAyMTcsIDE5NiwgMjUsIDIxOCwgMjM5LCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyNDQsIDE0MiwgMjUsIAotICAgIDIxOCwgMjM5LCAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyMTcsIDE5NSwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjQ0LCAxNDEsIAotICAgIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDIxNywgMTk2LCAyNSwgMjA2LCA3MCwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjQ0LCAKLSAgICAxNDIsIDI1LCAyMDYsIDcwLCAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTg5LCAzMCwgNiwgMSwgCi0gICAgMjUxLCAzLCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTg5LCAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyMTcsIDE5NiwgMjUsIAotICAgIDIxOCwgMjM5LCAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyNDQsIDE0MiwgMjUsIDIxOCwgMjM5LCAzMCwgNSwgMSwgMjQxLCAzOCwgCi0gICAgMywgMjE3LCAxOTUsIDMwLCA1LCAxLCAyNDEsIDM4LCAzLCAyNDQsIDE0MSwgMzAsIDUsIDEsIDI0MSwgMzgsIDMsIDIxNywgCi0gICAgMTk2LCAyNSwgMjA2LCA3MCwgMzAsIDUsIDEsIDI0MSwgMzgsIDMsIDI0NCwgMTQyLCAyNSwgMjA2LCA3MCwgMzAsIDUsIDEsIAotICAgIDI0MSwgMzgsIDMsIDIxNywgMTk2LCAyNSwgMjE5LCAxODksIDMwLCA1LCAxLCAyNDEsIDM4LCAzLCAyNDQsIDE0MiwgMjUsIAotICAgIDIxOSwgMTg5LCAzMCwgNiwgMSwgMjQxLCAzOCwgMywgMjE3LCAxOTUsIDMwLCA2LCAxLCAyNDEsIDM4LCAzLCAyNDQsIDE0MSwgCi0gICAgMzAsIDYsIDEsIDI0MSwgMzgsIDMsIDIxNywgMTk2LCAyNSwgMjA2LCA3MCwgMzAsIDYsIDEsIDI0MSwgMzgsIDMsIDI0NCwgCi0gICAgMTQyLCAyNSwgMjA2LCA3MCwgMzAsIDYsIDEsIDI0MSwgMzgsIDMsIDIxNywgMTk2LCAyNSwgMjE5LCAxODksIDMwLCA2LCAxLCAKLSAgICAyNDEsIDM4LCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDIxNywgMTk1LCAzMCwgCi0gICAgNSwgMSwgMjQwLCAyNDksIDMsIDI0NCwgMTQxLCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDIxNywgMTk2LCAyNSwgMjA2LCAKLSAgICA3MCwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzAsIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgCi0gICAgMjE3LCAxOTYsIDI1LCAyMTksIDE4OSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTg5LCAKLSAgICAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDIxNywgMTk2LCAyNSwgMjE4LCAyMzksIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgCi0gICAgMjQ0LCAxNDIsIDI1LCAyMTgsIDIzOSwgMzAsIDYsIDEsIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NSwgMzAsIDYsIDEsIDI0MCwgCi0gICAgMjQ5LCAzLCAyNDQsIDE0MSwgMzAsIDYsIDEsIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzAsIDMwLCA2LCAxLCAKLSAgICAyNDAsIDI0OSwgMywgMjQ0LCAxNDIsIDI1LCAyMDYsIDcwLCAzMCwgNiwgMSwgMjQwLCAyNDksIDMsIDIxNywgMTk2LCAyNSwgCi0gICAgMjE5LCAxODksIDMwLCA2LCAxLCAyNDAsIDI0OSwgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgMzAsIDYsIDEsIDI0MCwgCi0gICAgMjQ5LCAzLCAyMTcsIDE5NiwgMjUsIDIxOCwgMjM5LCAzMCwgNiwgMSwgMjQwLCAyNDksIDMsIDI0NCwgMTQyLCAyNSwgMjE4LCAKLSAgICAyMzksIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjE3LCAxOTUsIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjQ0LCAxNDEsIAotICAgIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjE3LCAxOTYsIDI1LCAyMDYsIDcwLCAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIDI0NCwgCi0gICAgMTQyLCAyNSwgMjA2LCA3MCwgMzAsIDUsIDEsIDIzMCwgMjMxLCAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTg5LCAzMCwgNSwgCi0gICAgMSwgMjMwLCAyMzEsIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxODksIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjE3LCAxOTYsIAotICAgIDI1LCAyMTgsIDIzOSwgMzAsIDUsIDEsIDIzMCwgMjMxLCAzLCAyNDQsIDE0MiwgMjUsIDIxOCwgMjM5LCAzMCwgNiwgMSwgCi0gICAgMjMwLCAyMzEsIDMsIDIxNywgMTk1LCAzMCwgNiwgMSwgMjMwLCAyMzEsIDMsIDI0NCwgMTQxLCAzMCwgNiwgMSwgMjMwLCAKLSAgICAyMzEsIDMsIDIxNywgMTk2LCAyNSwgMjA2LCA3MCwgMzAsIDYsIDEsIDIzMCwgMjMxLCAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgCi0gICAgNzAsIDMwLCA2LCAxLCAyMzAsIDIzMSwgMywgMjE3LCAxOTYsIDI1LCAyMTksIDE4OSwgMzAsIDYsIDEsIDIzMCwgMjMxLCAzLCAKLSAgICAyNDQsIDE0MiwgMjUsIDIxOSwgMTg5LCAzMCwgNiwgMSwgMjMwLCAyMzEsIDMsIDIxNywgMTk2LCAyNSwgMjE4LCAyMzksIAotICAgIDMwLCA2LCAxLCAyMzAsIDIzMSwgMywgMjQ0LCAxNDIsIDI1LCAyMTgsIDIzOSwgMzAsIDUsIDEsIDIyMCwgMzUsIDMsIDIxNywgCi0gICAgMTk1LCAzMCwgNSwgMSwgMjIwLCAzNSwgMywgMjQ0LCAxNDEsIDMwLCA1LCAxLCAyMjAsIDM1LCAzLCAyMTcsIDE5NiwgMjUsIAotICAgIDIwNiwgNzAsIDMwLCA1LCAxLCAyMjAsIDM1LCAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzAsIDMwLCA1LCAxLCAyMjAsIDM1LCAKLSAgICAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjIwLCAzNSwgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgCi0gICAgMzAsIDYsIDEsIDIyMCwgMzUsIDMsIDIxNywgMTk1LCAzMCwgNiwgMSwgMjIwLCAzNSwgMywgMjQ0LCAxNDEsIDMwLCA2LCAxLCAKLSAgICAyMjAsIDM1LCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzAsIDMwLCA2LCAxLCAyMjAsIDM1LCAzLCAyNDQsIDE0MiwgMjUsIAotICAgIDIwNiwgNzAsIDMwLCA2LCAxLCAyMjAsIDM1LCAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTg5LCAzMCwgNiwgMSwgMjIwLCAzNSwgCi0gICAgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgMzAsIDUsIDEsIDIwNiwgMjE3LCAzLCAyMTcsIDE5NSwgMzAsIDUsIDEsIAotICAgIDIwNiwgMjE3LCAzLCAyNDQsIDE0MSwgMzAsIDUsIDEsIDIwNiwgMjE3LCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzAsIDMwLCAKLSAgICA1LCAxLCAyMDYsIDIxNywgMywgMjQ0LCAxNDIsIDI1LCAyMDYsIDcwLCAzMCwgNSwgMSwgMjA2LCAyMTcsIDMsIDIxNywgCi0gICAgMTk2LCAyNSwgMjE5LCAxODksIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgMzAsIDUsIAotICAgIDEsIDIwNiwgMjE3LCAzLCAyMTcsIDE5NiwgMjUsIDIxOCwgMjM5LCAzMCwgNSwgMSwgMjA2LCAyMTcsIDMsIDI0NCwgMTQyLCAKLSAgICAyNSwgMjE4LCAyMzksIDMwLCA2LCAxLCAyMDYsIDIxNywgMywgMjQ0LCAxNDEsIDMwLCA2LCAxLCAyMDYsIDIxNywgMywgCi0gICAgMjQ0LCAxNDIsIDI1LCAyMDYsIDcwLCAzMCwgNiwgMSwgMjA2LCAyMTcsIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxODksIDMwLCAKLSAgICA2LCAxLCAyMDYsIDIxNywgMywgMjQ0LCAxNDIsIDI1LCAyMTgsIDIzOSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDIxNywgCi0gICAgMTk1LCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjQ0LCAxNDEsIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyMTcsIDE5NiwgMjUsIAotICAgIDIwNiwgNzAsIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzAsIDMwLCA1LCAxLCAyMjAsIDM3LCAKLSAgICAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgCi0gICAgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDIxNywgMTk2LCAyNSwgMjE4LCAyMzksIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyNDQsIAotICAgIDE0MiwgMjUsIDIxOCwgMjM5LCAzMCwgNiwgMSwgMjIwLCAzNywgMywgMjE3LCAxOTUsIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAKLSAgICAyNDQsIDE0MSwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIDIxNywgMTk2LCAyNSwgMjA2LCA3MCwgMzAsIDYsIDEsIDIyMCwgMzcsIAotICAgIDMsIDI0NCwgMTQyLCAyNSwgMjA2LCA3MCwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIDIxNywgMTk2LCAyNSwgMjE5LCAxODksIAotICAgIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTg5LCAzMCwgNiwgMSwgMjIwLCAzNywgMywgMjE3LCAKLSAgICAxOTYsIDI1LCAyMTgsIDIzOSwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIDI0NCwgMTQyLCAyNSwgMjE4LCAyMzksIDMwLCA1LCAKLSAgICAxLCAyNTEsIDMsIDMsIDIwNiwgNzAsIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjQxLCAzOCwgCi0gICAgMywgMjA2LCA3MCwgMzAsIDUsIDEsIDI0MSwgMzgsIDMsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDIwNiwgCi0gICAgNzAsIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjE5LCAxODksIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjA2LCA3MCwgMzAsIAotICAgIDUsIDEsIDIzMCwgMjMxLCAzLCAyMTksIDE4OSwgMzAsIDUsIDEsIDIyMCwgMzUsIDMsIDIwNiwgNzAsIDMwLCA1LCAxLCAKLSAgICAyMjAsIDM1LCAzLCAyMTksIDE4OSwgMzAsIDUsIDEsIDIwNiwgMjE3LCAzLCAyMDYsIDcwLCAzMCwgNSwgMSwgMjA2LCAyMTcsIAotICAgIDMsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjA2LCA3MCwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDIxOSwgCi0gICAgMTg5LCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyMTcsIDE5NiwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAKLSAgICAyNDQsIDE0MiwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzEsIDI1LCAKLSAgICAyMDIsIDIyMSwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjQ0LCAxNDIsIDI1LCAyMDYsIDcxLCAyNSwgMjAyLCAyMjEsIDMwLCAKLSAgICA1LCAxLCAyNTEsIDMsIDMsIDIxNywgMTk2LCAyNSwgMjE5LCAxOTAsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDI1MSwgMywgCi0gICAgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE5MCwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyMTcsIDE5NiwgCi0gICAgMjUsIDIxOCwgMjQwLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDI0NCwgMTQyLCAyNSwgMjE4LCAyNDAsIAotICAgIDI1LCAyMDIsIDIyMSwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjE3LCAxOTYsIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDI1MSwgCi0gICAgMywgMywgMjQ0LCAxNDIsIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjE3LCAxOTYsIDI1LCAyMDYsIDcxLCAKLSAgICAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDI0NCwgMTQyLCAyNSwgMjA2LCA3MSwgMjUsIDIxNywgMjA5LCAKLSAgICAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTkwLCAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyNTEsIAotICAgIDMsIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxOTAsIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjE3LCAKLSAgICAxOTYsIDI1LCAyMTgsIDI0MCwgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyNDQsIDE0MiwgMjUsIDIxOCwgCi0gICAgMjQwLCAyNSwgMjE3LCAyMDksIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjE3LCAxOTYsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIAotICAgIDEsIDI0MCwgMjQ5LCAzLCAyNDQsIDE0MiwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDIxNywgMTk2LCAKLSAgICAyNSwgMjA2LCA3MSwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDI0NCwgMTQyLCAyNSwgMjA2LCA3MSwgCi0gICAgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDIxNywgMTk2LCAyNSwgMjE5LCAxOTAsIDI1LCAyMDIsIAotICAgIDIyMSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTkwLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAKLSAgICAxLCAyNDAsIDI0OSwgMywgMjE3LCAxOTYsIDI1LCAyMTgsIDI0MCwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjQwLCAyNDksIAotICAgIDMsIDI0NCwgMTQyLCAyNSwgMjE4LCAyNDAsIDI1LCAyMDIsIDIyMSwgMzAsIDYsIDEsIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NiwgCi0gICAgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjQwLCAyNDksIDMsIDI0NCwgMTQyLCAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAKLSAgICAyNDAsIDI0OSwgMywgMjE3LCAxOTYsIDI1LCAyMDYsIDcxLCAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyNDAsIDI0OSwgMywgCi0gICAgMjQ0LCAxNDIsIDI1LCAyMDYsIDcxLCAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyNDAsIDI0OSwgMywgMjE3LCAxOTYsIDI1LCAKLSAgICAyMTksIDE5MCwgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjQwLCAyNDksIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxOTAsIAotICAgIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NiwgMjUsIDIxOCwgMjQwLCAyNSwgMjE3LCAKLSAgICAyMDksIDMwLCA2LCAxLCAyNDAsIDI0OSwgMywgMjQ0LCAxNDIsIDI1LCAyMTgsIDI0MCwgMjUsIDIxNywgMjA5LCAzMCwgNSwgCi0gICAgMSwgMjIwLCAzNywgMywgMjE3LCAxOTYsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDI0NCwgMTQyLCAKLSAgICAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzEsIDI1LCAyMDIsIDIyMSwgCi0gICAgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDI0NCwgMTQyLCAyNSwgMjA2LCA3MSwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjIwLCAKLSAgICAzNywgMywgMjE3LCAxOTYsIDI1LCAyMTksIDE5MCwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjQ0LCAKLSAgICAxNDIsIDI1LCAyMTksIDE5MCwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjE3LCAxOTYsIDI1LCAyMTgsIAotICAgIDI0MCwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjQ0LCAxNDIsIDI1LCAyMTgsIDI0MCwgMjUsIDIwMiwgCi0gICAgMjIxLCAzMCwgNiwgMSwgMjIwLCAzNywgMywgMjE3LCAxOTYsIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIAotICAgIDI0NCwgMTQyLCAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzEsIDI1LCAKLSAgICAyMTcsIDIwOSwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIDI0NCwgMTQyLCAyNSwgMjA2LCA3MSwgMjUsIDIxNywgMjA5LCAzMCwgCi0gICAgNiwgMSwgMjIwLCAzNywgMywgMjE3LCAxOTYsIDI1LCAyMTksIDE5MCwgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjIwLCAKLSAgICAzNywgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE5MCwgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjIwLCAzNywgMywgMjE3LCAKLSAgICAxOTYsIDI1LCAyMTgsIDI0MCwgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjIwLCAzNywgMywgMjQ0LCAxNDIsIDI1LCAyMTgsIAotICAgIDI0MCwgMjUsIDIxNywgMjA5LCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyMDUsIDE2NywgMzAsIDUsIDEsIDI1MSwgMywgMywgCi0gICAgMjI1LCAxNzAsIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDIwNiwgNzEsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDI1MSwgMywgCi0gICAgMywgMjAyLCAyMjEsIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDIxOSwgMTkwLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyNTEsIAotICAgIDMsIDMsIDIxOCwgMjM5LCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyMTgsIDI0MCwgMjUsIDIwMiwgMjIxLCAzMCwgNiwgMSwgCi0gICAgMjUxLCAzLCAzLCAyMDUsIDE2NywgMzAsIDYsIDEsIDI1MSwgMywgMywgMjI1LCAxNzAsIDMwLCA2LCAxLCAyNTEsIDMsIDMsIAotICAgIDIwNiwgNzAsIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDIxOSwgMTg5LCAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyMTcsIDIwOSwgCi0gICAgMzAsIDIyOCwgMjUyLCAzMCwgMjE3LCAyMDksIDMwLCAyMTcsIDE5NSwgMzAsIDIxOCwgMjM5LCAzMCwgMjQzLCAyMjUsIDI1LCAKLSAgICAyMTgsIDIzOSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyMDYsIDcxLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyNDAsIAotICAgIDI0OSwgMywgMjAyLCAyMjEsIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjE5LCAxOTAsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIAotICAgIDEsIDI0MCwgMjQ5LCAzLCAyMTgsIDIzOSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyMTgsIDI0MCwgMjUsIDIwMiwgMjIxLCAKLSAgICAzMCwgNiwgMSwgMjQxLCAzOCwgMywgMjA2LCA3MCwgMzAsIDYsIDEsIDI0MSwgMzgsIDMsIDIxOSwgMTg5LCAzMCwgNiwgMSwgCi0gICAgMjQwLCAyNDksIDMsIDIwNiwgNzAsIDMwLCA2LCAxLCAyNDAsIDI0OSwgMywgMjE5LCAxODksIDMwLCA2LCAxLCAyNDAsIAotICAgIDI0OSwgMywgMjE3LCAyMDksIDMwLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzAsIDMwLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTg5LCAKLSAgICAzMCwgMjE3LCAxOTYsIDI1LCAyMTgsIDIzOSwgMzAsIDUsIDEsIDIzMCwgMjMxLCAzLCAyMDUsIDE2NywgMzAsIDUsIDEsIAotICAgIDIzMCwgMjMxLCAzLCAyMjUsIDE3MCwgMzAsIDUsIDEsIDIzMCwgMjMxLCAzLCAyNDMsIDIyNSwgMjUsIDIwNiwgNzAsIDMwLCAKLSAgICA1LCAxLCAyMzAsIDIzMSwgMywgMjQzLCAyMjUsIDI1LCAyMTksIDE4OSwgMzAsIDUsIDEsIDIzMCwgMjMxLCAzLCAyMTgsIAotICAgIDIzOSwgMzAsIDUsIDEsIDIzMCwgMjMxLCAzLCAyNDMsIDIyNSwgMjUsIDIxOCwgMjM5LCAzMCwgNiwgMSwgMjMwLCAyMzEsIAotICAgIDMsIDIwNSwgMTY3LCAzMCwgNiwgMSwgMjMwLCAyMzEsIDMsIDIyNSwgMTcwLCAzMCwgNiwgMSwgMjMwLCAyMzEsIDMsIDIwNiwgCi0gICAgNzAsIDMwLCA2LCAxLCAyMzAsIDIzMSwgMywgMjE5LCAxODksIDMwLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzAsIDMwLCAyNDQsIAotICAgIDE0MiwgMjUsIDIxOSwgMTg5LCAzMCwgMjQ0LCAxNDIsIDI1LCAyMTgsIDIzOSwgMzAsIDUsIDEsIDIwNiwgMjE3LCAzLCAKLSAgICAyMDUsIDE2NywgMzAsIDUsIDEsIDIwNiwgMjE3LCAzLCAyMjUsIDE3MCwgMzAsIDUsIDEsIDIwNiwgMjE3LCAzLCAyNDMsIAotICAgIDIyNSwgMjUsIDIwNiwgNzAsIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgMjQzLCAyMjUsIDI1LCAyMTksIDE4OSwgMzAsIDUsIAotICAgIDEsIDIxNiwgNjAsIDMsIDIxNywgMTk1LCAzMCwgNSwgMSwgMjE2LCA2MCwgMywgMjQ0LCAxNDEsIDMwLCA1LCAxLCAyMDYsIAotICAgIDIxNywgMywgMjE4LCAyMzksIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgMjQzLCAyMjUsIDI1LCAyMTgsIDIzOSwgMzAsIDYsIAotICAgIDEsIDIwNiwgMjE3LCAzLCAyMDUsIDE2NywgMzAsIDYsIDEsIDIwNiwgMjE3LCAzLCAyMjUsIDE3MCwgMzAsIDYsIDEsIDIwNiwgCi0gICAgMjE3LCAzLCAyMDYsIDcwLCAzMCwgNiwgMSwgMjA2LCAyMTcsIDMsIDIxOSwgMTg5LCAzMCwgNiwgMSwgMjE2LCA2MCwgMywgCi0gICAgMjQ0LCAxNDEsIDMwLCAyNDMsIDIyNSwgMjUsIDIwNiwgNzAsIDMwLCAyNDMsIDIyNSwgMjUsIDIxOSwgMTg5LCAzMCwgMjA2LCAKLSAgICA3MCwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDIwNiwgNzEsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIAotICAgIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjE5LCAxOTAsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDIyMCwgCi0gICAgMzcsIDMsIDIxOCwgMjM5LCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjE4LCAyNDAsIDI1LCAyMDIsIDIyMSwgMzAsIDYsIDEsIAotICAgIDIyMCwgMzUsIDMsIDIwNiwgNzAsIDMwLCA2LCAxLCAyMjAsIDM1LCAzLCAyMTksIDE4OSwgMzAsIDYsIDEsIDIyMCwgMzcsIAotICAgIDMsIDIwNiwgNzAsIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAyMTksIDE4OSwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIDIxNywgCi0gICAgMjA5LCAzMCwgMjE5LCAxODksIDMwLCAyNDQsIDE0MSwgMjQxLCA5MywgMjE3LCA2MiwgMjQxLCAxMDQsIDIxNywgNjIsIAotICAgIDI0MSwgOTMsIDIxMSwgMjI4LCAyNDEsIDEwNCwgMjExLCAyMjgsIDIwOSwgMjgsIDIxMSwgMjI4LCAyMzksIDE0NSwgMjExLCAKLSAgICAyMjgsIDIxMiwgODYsIDIxMSwgMjI4LCAyNDAsIDE2LCAyMTEsIDIyOCwgMjE3LCAxNzksIDIxMSwgMjI4LCAyMDksIDYzLCAKLSAgICAyMTEsIDIyOCwgMjM3LCAxNDYsIDIxMSwgMjI4LCAyMDIsIDg1LCAyMDQsIDI0LCAyMTEsIDIyOCwgMjAyLCA4NSwgMjA0LCAKLSAgICAyNCwgMjIxLCAxODMsIDIwMiwgODUsIDIwNCwgMjQsIDIzMCwgOTYsIDIyNywgMjEzLCA4MiwgMjE2LCA3LCA4MiwgMjM1LCAKLSAgICAyMjAsIDIyMSwgMTg0LCAyMzUsIDIyMCwgMjQwLCAxNiwgMjQ0LCAxNDQsIDI0MSwgOTMsIDI0NCwgMTQ0LCAyNDEsIDEwNCwgCi0gICAgMjQ0LCAxNDQsIDIzNiwgMTA2LCAxNDIsIDUyLCA4MCwgMjI3LCAxMTQsIDUyLCAxMjQsIDIyNywgMTE0LCA0OSwgMjEyLCAKLSAgICAxMjAsIDIxNywgMzEsIDgyLCA1MCwgMjEyLCAxMjAsIDIxNywgMzEsIDgyLCAyMTIsIDEyMCwgMjI2LCAyNTUsIDIxNywgMzEsIAotICAgIDgyLCAyMTIsIDEyMCwgMjM2LCAyNDEsIDIxNywgMzEsIDgyLCA0OSwgNTIsIDIxNywgMzEsIDgyLCA1MCwgNTIsIDIxNywgCi0gICAgMzEsIDgyLCA1MiwgMjI2LCAyNTUsIDIxNywgMzEsIDgyLCA1MiwgMjM2LCAyNDEsIDIxNywgMzEsIDgyLCAyNDQsIDE5NSwgCi0gICAgNTIsIDI0NCwgMTk1LCAyNDcsIDE3NywgMjA4LCA4MiwgMjQ3LCAxNzcsIDExOCwgNzAsIDIyNywgMjMyLCAxMjAsIDcwLCAKLSAgICAyMjcsIDIzMiwgMjM2LCAxMDYsIDI0MSwgMTA4LCAyMzUsIDIxOCwgMjE4LCA2MiwgMjI3LCAxMTUsIDIxMywgMTMwLCAyMTksIAotICAgIDg5LCAyMTMsIDEzMCwgMjI3LCAyMTMsIDI0MSwgMTAyLCAyMTYsIDcsIDI0MSwgMTAyLCAyMTgsIDQyLCAyNDMsIDE2NSwgCi0gICAgMjM5LCAxNTcsIDIyNywgMjEzLCAyMTksIDE5NiwgMjE2LCA3LCAyMTksIDE5NiwgMjIzLCA3MywgMjIxLCAxOTAsIDIxMSwgCi0gICAgMjI4LCAyMTgsIDI0NywgMjI0LCAxMTYsIDU0LCAyMTgsIDI0NywgMjA5LCAxNTMsIDIwOSwgMzcsIDU0LCAyMTcsIDIzNiwgCi0gICAgNTIsIDIxNywgMjM2LCAyMDgsIDcwLCAyMTcsIDIzNiwgMjE2LCA3MywgMjE3LCAyMzYsIDIxNiwgNzMsIDUyLCAyMTcsIAotICAgIDIzNiwgMjE2LCA3MywgMjA4LCA3MCwgMjE3LCAyMzYsIDI0NywgMzMsIDIxMiwgMTIwLCAyMjcsIDIxNywgMjUwLCAyMTgsIAotICAgIDIxNywgMzEsIDgyLCAyMTIsIDEyMCwgMjE2LCAxMSwgMjUwLCAyMTgsIDIxNywgMzEsIDgyLCAyMTYsIDEzNCwgODIsIDUyLCAKLSAgICAyNDAsIDIxMiwgODIsIDIzMCwgMjQ3LCAyMTksIDE5OCwgMjA2LCAyNDMsIDE2NywgMjA4LCAyNTAsIDI0NywgMzQsIDIzMSwgCi0gICAgOCwgMjE4LCA2MiwgMjUwLCA1NywgMjM1LCAyMjEsIDI0NywgMTc3LCAyMzksIDEzOCwgMjEyLCA1NywgNDksIDUxLCAyNDcsIAotICAgIDIyNywgMywgMjE3LCA0MSwgNTAsIDUxLCAyNDcsIDIyNywgMywgMjE3LCA0MSwgNTIsIDIxNywgNDcsIDgyLCAyMTcsIDQ3LCAKLSAgICAyNDAsIDIxMiwgODIsIDI0MCwgMjEyLCAyMTcsIDQ3LCA4MiwgMjA4LCAyMDMsIDIsIDI0MCwgMjUwLCAyMTYsIDczLCAyMTgsIAotICAgIDEyNiwgNTQsIDYyLCA5NiwgMjQ3LCAxNzcsIDYyLCA4NiwgMjQ3LCAxNzcsIDEyNCwgMjUwLCA1OSwgMjE2LCA3MywgMjEzLCAKLSAgICAxNDMsIDI0NiwgMTcsIDIwNiwgMjI0LCAxMjAsIDI1MCwgNTgsIDI1MSwgMTgsIDIwNSwgMjQzLCAyNDUsIDIzMSwgMjI0LCAKLSAgICAxMDMsIDU0LCAyMTAsIDE1MywgMjQ0LCAxNDQsIDIzMCwgMjM5LCAyMDYsIDI0MywgMjM5LCAxOTgsIDIxNywgMTc5LCA4MiwgCi0gICAgMTI2LCA3MCwgMjE3LCAxNzgsIDIxNywgNTgsIDIxNywgMjM2LCAyMzksIDE0NywgNzAsIDIxNywgMTc4LCAyMzksIDIzMywgCi0gICAgNzAsIDIxNywgMTc4LCAxMjAsIDcwLCAyMTcsIDE3OCwgMjM5LCAxNDcsIDcwLCA4MiwgMjQyLCA4MywgMjQ1LCAxMzAsIAotICAgIDIwOCwgODEsIDgwLCAyMzksIDE0NywgMjQzLCA4MywgMjI1LCAxMCwgMTMsIDIxMSwgMjI4LCAyMDMsIDIzOCwgMjMwLCA5NiwgCi0gICAgMjM5LCAxMDAsIDI1MCwgMTU1LCAyMzAsIDIzNywgMjA4LCAyMTksIDIzMCwgMjM3LCAyMTMsIDEzMCwgMjMwLCAyMzcsIAotICAgIDIxOCwgNzYsIDIyNywgMjEzLCAyMzAsIDIwNywgMjE2LCA3LCAyMzAsIDIwNywgMjM5LCAyNDUsIDIxMSwgMTgsIDIzMCwgCi0gICAgMjA3LCAyMTgsIDQyLCAyNDMsIDE2NSwgMjMwLCAyMDcsIDIzMSwgMjAsIDIxMCwgMTAxLCAyMTAsIDE3MCwgMjUxLCAxMjgsIAotICAgIDIxMCwgMTAxLCAyMTAsIDE3MCwgMjMxLCAyMCwgMTAsIDIzOSwgMTU5LCAyMTMsIDYxLCAyNTEsIDEyOCwgMTAsIDIzOSwgCi0gICAgMTU5LCAyMTMsIDYxLCAyMjMsIDY3LCAxNywgMjEzLCA2MiwgMjIxLCAxODYsIDE3LCAyMTMsIDYyLCAyMTAsIDE5OSwgMjAyLCAKLSAgICA4NCwgMjEwLCAxOTksIDgsIDUsIDEsIDc1LCAyMTAsIDE5OSwgMTQ5LCAyMTAsIDE5OSwgMTcwLCAyMTAsIDE5OSwgMTk1LCAKLSAgICAyMTAsIDE5OSwgMjEzLCAxMTEsIDIxMCwgMTk5LCAxOTksIDIxMCwgMTk5LCAyMjIsIDYzLCAyMTAsIDE5OSwgOTEsIDU0LCAKLSAgICAyMTAsIDE5OSwgMjI0LCAxMDIsIDIxMCwgMTk5LCAyNDEsIDM1LCA1NCwgMjEwLCAxOTksIDQ5LCAyMTksIDc2LCAyMTAsIAotICAgIDE5OSwgNTAsIDIxOSwgNzYsIDIxMCwgMTk5LCA4LCA1LCAxLCAyMjMsIDE2MywgMjEwLCAyNDYsIDIwMiwgODQsIDIxMCwgCi0gICAgMjQ2LCAxMDUsIDIxMCwgMjQ2LCAxMDgsIDIxMCwgMjQ2LCAxNDcsIDIxMCwgMjQ2LCAxNDksIDIxMCwgMjQ2LCAxNzAsIAotICAgIDIxMCwgMjQ2LCAxOTUsIDIxMCwgMjQ2LCAyMTMsIDExMSwgMjEwLCAyNDYsIDE5OSwgMjEwLCAyNDYsIDIyMiwgNjMsIDIxMCwgCi0gICAgMjQ2LCA5MSwgNTQsIDIxMCwgMjQ2LCAyMjQsIDEwMiwgMjEwLCAyNDYsIDI0MSwgMzUsIDU0LCAyMTAsIDI0NiwgNDksIAotICAgIDIxOSwgNzYsIDIxMCwgMjQ2LCA1MCwgMjE5LCA3NiwgOCwgMjEwLCAyNDYsIDUsIDEsIDYzLCA4LCAyMTAsIDI0NiwgNSwgMSwgCi0gICAgNzQsIDgsIDIxMCwgMjQ2LCA1LCAxLCA3OCwgOCwgMjEwLCAyNDYsIDUsIDEsIDIwMywgMTk2LCA4LCAyMTAsIDI0NiwgNSwgCi0gICAgMSwgMjE0LCAxOTIsIDgsIDIxMCwgMjQ2LCA1LCAxLCAyMzcsIDE3MSwgOCwgMjEwLCAyNDYsIDUsIDEsIDIzMCwgNTQsIDgsIAotICAgIDIxMCwgMjQ2LCA1LCAxLCAxNTksIDgsIDIxMCwgMjQ2LCA1LCAxLCAyMjYsIDE4NSwgOCwgMjEwLCAyNDYsIDUsIDEsIDIyMywgCi0gICAgMTYzLCA4LCAyMTAsIDI0NiwgNSwgMSwgMjE5LCAxODQsIDgsIDIxMCwgMjQ2LCA1LCAxLCAxOTQsIDgsIDIxMCwgMjQ2LCA1LCAKLSAgICAxLCAyMTAsIDY5LCAyNDAsIDIyOSwgNTQsIDI0NSwgMjQzLCA1NCwgMjQ1LCAxMTUsIDU0LCAyMzksIDEyOCwgMjM5LCAxMzIsIAotICAgIDU0LCAyMjcsIDk0LCA1NCwgMjI0LCAxMTcsIDU0LCAyMjMsIDkwLCA1NCwgMjE4LCAyMjQsIDU0LCAyMTUsIDEyMCwgNTQsIAotICAgIDIwMywgMjQ2LCA1NCwgMjIyLCAyMTQsIDIxMywgMjksIDU0LCAyNDMsIDkyLCA1NCwgMjQwLCAyMzAsIDU0LCAyMjksIDc5LCAKLSAgICA1NCwgMjA3LCAxOTYsIDU0LCAyNDIsIDY2LCA1NCwgMjM4LCAxNjYsIDIxOSwgMiwgNTQsIDIxOCwgMjIxLCA1NCwgMjM3LCAKLSAgICAyMjUsIDU0LCAyNTAsIDI0LCA1NCwgMjM2LCAzMiwgNTQsIDI0NiwgMjMzLCA1NCwgMjI3LCA4NCwgMjA4LCAxMjUsIDU0LCAKLSAgICAyMTEsIDIwOSwgNTQsIDIwOSwgMTUwLCA1NCwgMjMxLCAzNCwgMjE1LCAxMjAsIDU0LCAyMDcsIDE3NywgMjI3LCA5NCwgNTQsIAotICAgIDIyMSwgMTczLCAxMzEsIDU0LCAyMjUsIDEyMCwgNTQsIDIxNSwgMTQyLCA1NCwgMjI4LCA0LCA1NCwgMzksIDQ5LCAyMzcsIAotICAgIDg3LCA1NSwgMzksIDUwLCAyMzcsIDg3LCA1NSwgMzksIDE2MywgODAsIDIyNywgMTE1LCAyMTksIDE5OSwgMzksIDIxMiwgCi0gICAgMjI4LCA4MCwgMjI3LCAxMTUsIDIxOSwgMTk5LCAzOSwgMjUwLCAxOTQsIDUzLCA1NSwgMzksIDI0NiwgMTgsIDUzLCA1NSwgCi0gICAgMzksIDQ5LCA1MywgNTUsIDM5LCA1MCwgNTMsIDU1LCAzOSwgMjE1LCAyNTMsIDIxOSwgMTk5LCAzOSwgMjQ2LCAxOCwgMjE1LCAKLSAgICAyNTMsIDIxOSwgMTk5LCAzOSwgMjUwLCAxOTQsIDIxNSwgMjUzLCAyMTksIDE5OSwgMzksIDEyNiwgMTg3LCA1NSwgMzksIAotICAgIDIzOSwgMTQ3LCAxODcsIDU1LCAzOSwgMjQxLCA4OCwgMjQ2LCA2MSwgMzksIDI0MSwgODgsIDIxMSwgMTc3LCAzOSwgMjQxLCAKLSAgICA4OCwgMjQzLCAyMjEsIDM5LCAyNDEsIDg4LCAyNDYsIDYyLCAyNDksIDIwLCAzOSwgNDksIDUwLCA1MywgNTUsIDM5LCAyNDEsIAotICAgIDg4LCAyMTQsIDE4NCwgMzksIDI0MSwgODgsIDIyOSwgMTQ3LCAzOSwgMjQxLCA4OCwgMjA2LCAyMTQsIDIxOCwgNTksIDIwOCwgCi0gICAgODUsIDM5LCAyMTYsIDc0LCAyMTIsIDEsIDIxOSwgMTk5LCAzOSwgNTIsIDgwLCAyMTEsIDMyLCAyMTksIDE5OSwgMzksIAotICAgIDI1MCwgMjA0LCA5NywgMzksIDIwOCwgNzAsIDIwNiwgMjQ1LCAzOSwgMjA0LCAyNywgMjQ3LCAyMDgsIDU1LCAzOSwgOTYsIAotICAgIDUzLCAyMTksIDE5OSwgMzksIDE2MywgNTIsIDIxMiwgMSwgMjE5LCAxOTksIDM5LCA4NiwgMjM3LCA4NywgMywgMTUwLCAKLSAgICAyNDIsIDY4LCAzOSwgOTYsIDIzNywgODcsIDMsIDE1MCwgMjQyLCA2OCwgMzksIDQ5LCA1MywgNTYsIDM5LCA1MCwgNTMsIAotICAgIDU2LCAzOSwgMjUwLCA2MCwgNTUsIDI1MSwgMTM0LCAyMjAsIDY5LCAyNTEsIDExOCwgMjA4LCAxNzMsIDIwOSwgOTMsIDIxMCwgCi0gICAgMjU1LCAxNjksIDYsIDI0NywgMTI1LCAyNDQsIDU1LCAyNDYsIDIyMywgMjQ2LCAyMTgsIDIyNywgMTE1LCA5NywgMjQ3LCAKLSAgICAzNSwgMjIwLCA2OSwgMjQ3LCA4NCwgMjA2LCAyNTQsIDI0MCwgMjMxLCAyNDUsIDIwMCwgMjE0LCAxODEsIDI0NCwgNTUsIAotICAgIDI0MCwgOTAsIDEzMiwgNSwgMjM5LCA3NSwgMTMyLCA2LCAyMzcsIDE3MSwgMjQ4LCA0MSwgNiwgMjM3LCAxNzEsIDE2OSwgNiwgCi0gICAgMjM3LCAxNzEsIDIxOCwgOTMsIDI0NSwgMjAwLCAyMTgsIDkzLCAyNDUsIDIwMSwgMTE1LCAxMjAsIDIxOCwgMTY3LCAxMzIsIAotICAgIDYsIDc1LCAyNDgsIDQxLCA2LCA3NSwgMTMyLCA2LCAxNTksIDEzMiwgNSwgMTU5LCAyMjgsIDEzMSwgNjYsIDI0OCwgMjMxLCAKLSAgICA5NywgMTY5LCA2LCAyMjMsIDE2MywgMjIxLCA0MiwgNTQsIDIxMSwgMjQxLCAyMTYsIDE0NiwgMjQ1LCAxNjgsIDEzMiwgNiwgCi0gICAgMjE5LCAxODQsIDE2OSwgNiwgMjE5LCAxODQsIDE2OSwgNiwgMjE3LCAxMzQsIDEzMiwgNiwgMTQ2LCAyNDgsIDQxLCA2LCAKLSAgICAxNDYsIDE2OSwgNiwgMTQ2LCAyMTcsIDI0MywgMjA5LCAyNDEsIDIxNiwgODYsIDIxMywgMTIyLCA4MiwgMjA5LCAxNjIsIAotICAgIDU0LCAyMDgsIDExNSwgMTMxLCA1NCwgMjA2LCAzOSwgMTY5LCA2LCAyMDIsIDE1OSwgMjE5LCAyMTUsIDU0LCAyMjAsIDU5LCAKLSAgICA1NCwgMjMwLCAyMzksIDIyMCwgNTksIDU0LCAyNDgsIDQxLCA2LCAyMDIsIDE1OSwgMjA3LCAxNzQsIDMwLCA1LCAxLCAyMzAsIAotICAgIDIzMCwgMjI5LCAxODgsIDU0LCAyNTAsIDIxMywgNTQsIDEzMiwgNiwgMjQ5LCAyNTUsIDI0OCwgNDEsIDYsIDI0NywgMTI1LCAKLSAgICAyNDAsIDI1NSwgOTcsIDEzMiwgNSwgNzQsIDEzMiwgNiwgNzQsIDEzMiwgNiwgMjQwLCAxNzQsIDIwNywgMTc0LCA2LCAyNDAsIAotICAgIDE3NCwgMTMyLCA2LCAyMjYsIDE4NSwgMTMyLCA1LCA3OCwgMTM3LCA5NywgMjQ4LCAxMDksIDk3LCAyMzgsIDY4LCA5NywgCi0gICAgMjQ0LCAxNzksIDk3LCAyMzEsIDI1LCAyMTEsIDIzOSwgMjE1LCAxOTgsIDYsIDIxNywgMTM0LCAyNDAsIDkzLCA1NCwgMTY5LCAKLSAgICA1LCAyMTgsIDE2NywgMTY5LCA1LCAyMzgsIDIzNSwgMTY5LCA2LCAyMzgsIDIzNSwgMTY5LCA2LCAyMTgsIDE2NywgMTY5LCAKLSAgICAyMjMsIDE2MiwgMjEwLCAyMTcsIDIwNywgMTc0LCA0MSwgNiwgMjM5LCA3NSwgMjA3LCAxNzQsIDQxLCA2LCAxNTksIDIxNiwgCi0gICAgNzMsIDQxLCA2LCAxNTksIDIwNywgMTc0LCA0MSwgNiwgMjAzLCAxMjQsIDE2OSwgMzcsIDYsIDI0NSwgNTEsIDE2OSwgMzcsIAotICAgIDUsIDI0NSwgNTEsIDE2OSwgMzcsIDUsIDc0LCAxNjksIDM3LCA1LCA3NSwgMTY5LCAzNywgNSwgMjMwLCAxODQsIDIxNywgCi0gICAgMjEyLCAyMjcsIDExNCwgMjA3LCAxNzQsIDI1MCwgMjM1LCAyMTgsIDI0NywgNTQsIDI1MSwgNDEsIDIwNywgMTc0LCA1LCAKLSAgICAyNDAsIDE3NCwgMTYsIDM1LCAyMTQsIDI1MiwgMjExLCAyMzksIDIwNCwgMTYxLCAyMzksIDEzOCwgMTE4LCAyMTMsIDEwNywgCi0gICAgMjA0LCAxNjEsIDIzOSwgMTM4LCAxMTgsIDIyMiwgNTcsIDIwNCwgMTYxLCAyMzksIDEzOCwgMTE4LCAyMDksIDE0MywgMjA0LCAKLSAgICAxNjEsIDIzOSwgMTM4LCAxMTgsIDIwOSwgNjAsIDIwNCwgMTYxLCAyMzksIDEzOCwgMTIwLCAyMDksIDU3LCAyMDQsIDE2MSwgCi0gICAgMjM5LCAxMzgsIDExOCwgMjQwLCAyMSwgMjA0LCAxNjEsIDIzOSwgMTM4LCAxMjAsIDI0MCwgMjAsIDIwNCwgMTYxLCAyMzksIAotICAgIDEzOCwgMTI2LCAyNDAsIDIwLCAyMDQsIDE2MSwgMjM5LCAxMzgsIDIzOSwgMTQ3LCAyNDAsIDIwLCAyMDQsIDE2MSwgMjM5LCAKLSAgICAxMzgsIDExOCwgMjEyLCA3OCwgMjA0LCAxNjEsIDIzOSwgMTM4LCAyMzksIDIzMywgMjEyLCA3NiwgMjA0LCAxNjEsIDIzOSwgCi0gICAgMTM4LCAxMTgsIDI0MSwgMTM4LCAyMDQsIDE2MSwgMjM5LCAxMzgsIDEyNiwgMjQxLCAxMzYsIDIwNCwgMTYxLCAyMzksIAotICAgIDEzOCwgMjM5LCAyMzMsIDI0MSwgMTM2LCAyMDQsIDE2MSwgMjM5LCAxMzgsIDIxMywgMTEyLCAyNDEsIDEzNiwgMjM5LCAKLSAgICAxMzgsIDIyMSwgNDMsIDEwNSwgMjE1LCAyMTAsIDIyMSwgNDQsIDEwNSwgMjE1LCAyMTAsIDIyMSwgNDQsIDEwOCwgMjE1LCAKLSAgICAyMTAsIDIyMSwgNDQsIDE0NywgMjE1LCAyMTAsIDIyMSwgNDQsIDE0OSwgMjE1LCAyMTAsIDIyMSwgNDQsIDE3MCwgMjE1LCAKLSAgICAyMTAsIDIyMSwgNDQsIDE5NSwgMjE1LCAyMTAsIDIyMSwgNDQsIDIxMywgMTExLCAyMTUsIDIxMCwgMjIxLCA0NCwgMTk5LCAKLSAgICAyMTUsIDIxMCwgMjIxLCA0NCwgMjIyLCA2MywgMjE1LCAyMTAsIDIyMSwgNDQsIDIwOSwgMTUyLCAyMTUsIDIxMCwgMjIxLCAKLSAgICA0NCwgMjQxLCAxMTIsIDIxNSwgMjEwLCAyMjEsIDQ0LCAyMDcsIDE1NCwgMjE1LCAyMTAsIDIyMSwgNDQsIDI0MCwgMTgsIAotICAgIDIxNSwgMjEwLCAyMjEsIDQ0LCAxMTgsIDIzNiwgMTEsIDIxNSwgMjEwLCAyMjEsIDQ0LCAyMzksIDIzMywgMjM2LCAxMSwgCi0gICAgMjE1LCAyMTAsIDIyMSwgNDQsIDExOCwgMjA5LCAzNiwgNSwgMjE1LCAyMTAsIDIyMSwgNDQsIDEwNSwgNSwgMjE1LCAyMTAsIAotICAgIDIyMSwgNDQsIDEwOCwgNSwgMjE1LCAyMTAsIDIyMSwgNDQsIDE0NywgNSwgMjE1LCAyMTAsIDIyMSwgNDQsIDE0OSwgNSwgCi0gICAgMjE1LCAyMTAsIDIyMSwgNDQsIDE3MCwgNSwgMjE1LCAyMTAsIDIyMSwgNDQsIDE5NSwgNSwgMjE1LCAyMTAsIDIyMSwgNDQsIAotICAgIDIxMywgMTExLCA1LCAyMTUsIDIxMCwgMjIxLCA0NCwgMTk5LCA1LCAyMTUsIDIxMCwgMjIxLCA0NCwgMjIyLCA2MywgNSwgCi0gICAgMjE1LCAyMTAsIDIyMSwgNDQsIDIwOSwgMTUyLCA1LCAyMTUsIDIxMCwgMjIxLCA0NCwgMjQxLCAxMTIsIDUsIDIxNSwgMjEwLCAKLSAgICAyMjEsIDQ0LCAyMDcsIDE1NCwgNSwgMjE1LCAyMTAsIDIyMSwgNDQsIDI0MCwgMTgsIDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAKLSAgICAxMTgsIDIzNiwgMTEsIDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAyMzksIDIzMywgMjM2LCAxMSwgNSwgMjE1LCAyMTAsIDIyMSwgCi0gICAgNDQsIDExOCwgMjA5LCAzNiwgMjE1LCAyMTAsIDIyMSwgNDQsIDExOCwgMjA5LCAzNywgMjQ3LCAxMjYsIDI0NSwgNTEsIAotICAgIDIxNSwgMjEwLCAyMjEsIDQ0LCAyMzksIDIzMywgMjA5LCAzNiwgMjE1LCAyMTAsIDIyMSwgNDQsIDIwOSwgMTUzLCAyMDksIAotICAgIDM2LCAyMTUsIDIxMCwgMjIxLCA0NCwgMjE2LCA3MywgMTE4LCAyMzYsIDExLCA4LCA1LCAxLCAyMTYsIDczLCAyNDcsIDEyNSwgCi0gICAgMjE1LCAyMTAsIDIyMSwgNDQsIDIxMiwgODgsIDIyNywgMjU1LCAxOCwgMjE1LCAyMTAsIDIyMSwgNDQsIDI0MCwgMTksIAotICAgIDI0MSwgMTgyLCAxOCwgMjE1LCAyMTAsIDIyMSwgNDQsIDI0MCwgMTksIDIwOSwgMzYsIDIxNSwgMjEwLCAyMjEsIDQ0LCAKLSAgICAxMTgsIDIzNiwgMTIsIDIwOSwgMzYsIDIwNCwgMTYxLCAyMzksIDEzOCwgMjAyLCA4NSwgMjA5LCA1NywgMjA3LCAxNzQsIAotICAgIDE3LCAxMDgsIDIwNywgMTc0LCAxNywgMTQ3LCA5NiwgNDcsIDE3NywgNDcsIDg2LCA0NywgMTgzLCA0NywgNDksIDUwLCA0NywgCi0gICAgMTEyLCAxMjEsIDQ3LCAxNTMsIDIwNCwgNDYsIDQ3LCAxNTMsIDI0MSwgMTc2LCA0NywgMjExLCAyMzgsIDI0MSwgMTc2LCAKLSAgICA0NywgMjExLCAyMzgsIDIwNCwgNDYsIDQ3LCA5NiwgNTMsIDMsIDk1LCA4NiwgNTMsIDMsIDk1LCA5NiwgMjA0LCA3NiwgNDcsIAotICAgIDg2LCAyMDQsIDc2LCA0NywgOTYsIDEyMCwgMjM3LCA2MiwgNDcsIDE3NywgMTIwLCAyMzcsIDYyLCA0NywgODYsIDEyMCwgCi0gICAgMjM3LCA2MiwgNDcsIDE4MywgMTIwLCAyMzcsIDYyLCA0NywgOTYsIDUzLCAzLCAyMDksIDI0OCwgODYsIDUzLCAzLCAyMDksIAotICAgIDI0OCwgOTYsIDUzLCAyMzksIDEyMCwgMTQyLCAxNzcsIDUzLCAyMzksIDEyMCwgMTQyLCA4NiwgNTMsIDIzOSwgMTIwLCAKLSAgICAxNDIsIDE4MywgNTMsIDIzOSwgMTIwLCAxNDIsIDExMiwgMTIxLCA1MywgMywgMjQ4LCAyMTgsIDk2LCA1MywgMywgMTEzLCAKLSAgICA4NiwgNTMsIDMsIDExMywgOTYsIDUzLCAzLCAyMjcsIDE0LCA4NiwgNTMsIDMsIDIyNywgMTQsIDQ5LCA1MCwgMjA0LCA3NiwgCi0gICAgNDcsIDQ5LCA1MCwgNTMsIDMsIDk1LCAxODMsIDIwMiwgMzAsIDQ3LCAxNzcsIDUzLCAzLCAyMDgsIDIxMSwgMjI3LCAyMTIsIAotICAgIDE3NywgNTMsIDMsIDIwOCwgMjExLCAyMTYsIDUsIDE4MywgNTMsIDMsIDIwOCwgMjExLCAyMjcsIDIxMiwgMTgzLCA1MywgMywgCi0gICAgMjA4LCAyMTEsIDIxNiwgNSwgODYsIDUzLCAzLCAyNDUsIDE2NiwgMjQyLCA2OCwgMTgzLCA1MywgMywgMjQ1LCAxNjYsIAotICAgIDIyNywgMjEyLCAyNTAsIDE5NCwgMjA4LCAxNDUsIDIxMywgMTQ2LCA0NywgMjQ2LCAxOCwgMjA4LCAxNDUsIDIxMywgMTQ2LCAKLSAgICA0NywgMTUzLCAyMDQsIDQ2LCA1MywgMjA4LCAxNzMsIDE2MywgMTQyLCA5NiwgNTMsIDIwOCwgMTczLCAyNDgsIDIzMSwgCi0gICAgMTE1LCA4NiwgNTMsIDIwOCwgMTczLCAxNDIsIDI1MCwgMTk0LCAxNzEsIDI0NiwgNjIsIDQ3LCAyNDYsIDE4LCAxNzEsIAotICAgIDI0NiwgNjIsIDQ3LCA5NiwgMjM3LCA4NywgMywgMTUwLCAyMDYsIDIxMiwgOTYsIDIzNywgODcsIDMsIDE1MCwgMjQyLCA2OCwgCi0gICAgMTc3LCAyMzcsIDg3LCAzLCAxNTAsIDIxNiwgNSwgMTc3LCAyMzcsIDg3LCAzLCAxNTAsIDIyNywgMjEyLCA4NiwgMjM3LCAKLSAgICA4NywgMywgMTUwLCAyMDYsIDIxMiwgODYsIDIzNywgODcsIDMsIDE1MCwgMjQyLCA2OCwgMTgzLCAyMzcsIDg3LCAzLCAxNTAsIAotICAgIDIxNiwgNSwgMTgzLCAyMzcsIDg3LCAzLCAxNTAsIDIyNywgMjEyLCA4NiwgNTMsIDExNSwgOTYsIDQ3LCAxNzcsIDUzLCA5NiwgCi0gICAgNzYsIDE4MywgNDcsIDk2LCA1MywgMTE1LCA4NiwgNDcsIDk2LCAyMTksIDE0NiwgMjUwLCA5MSwgMTc3LCAyMTksIDE0NiwgCi0gICAgMjUwLCA5MSwgODYsIDIxOSwgMTQ2LCAyNTAsIDkxLCAxODMsIDIxOSwgMTQ2LCAyNTAsIDkxLCA5NiwgMjM3LCA4NywgMTE1LCAKLSAgICA4NiwgMjM3LCA4NiwgODYsIDIzNywgODcsIDExNSwgOTYsIDIzNywgODYsIDk2LCA1MiwgNTMsIDMsIDk1LCA0OSwgNTAsIAotICAgIDUyLCA1MywgMywgOTUsIDg2LCA1MiwgNTMsIDMsIDk1LCA5NiwgNTIsIDQ3LCAxNzcsIDUyLCA0NywgODYsIDUyLCA0NywgCi0gICAgMTgzLCA1MiwgNDcsIDQ5LCA1MCwgNTIsIDQ3LCAxMTIsIDEyMSwgNTIsIDQ3LCAxNTMsIDIwNCwgNDYsIDUyLCA0NywgMTUzLCAKLSAgICAyNDEsIDE3NiwgNTIsIDQ3LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDUyLCA0NywgMjExLCAyMzgsIDIwNCwgNDYsIDUyLCA0NywgCi0gICAgOTYsIDIwOCwgNzAsIDQ3LCA4NiwgMjA4LCA3MCwgNDcsIDk2LCAyMTEsIDE3MSwgNDcsIDg2LCAyMTEsIDE3MSwgNDcsIAotICAgIDE3NywgNTMsIDMsIDUyLCA5NSwgMTgzLCA1MywgMywgNTIsIDk1LCA5NiwgMjQ0LCAxNDMsIDQ3LCAxNzcsIDI0NCwgMTQzLCAKLSAgICA0NywgODYsIDI0NCwgMTQzLCA0NywgMTgzLCAyNDQsIDE0MywgNDcsIDk2LCA1MywgMjA4LCAxNzMsIDE0MiwgODYsIDUzLCAKLSAgICAyMDgsIDE3MywgMTQyLCA5NiwgNjEsIDQ3LCAxNzcsIDYxLCA0NywgODYsIDYxLCA0NywgMTgzLCA2MSwgNDcsIDE3NywgNjEsIAotICAgIDUzLCAyMzksIDEyMCwgMTQyLCAxNzcsIDYxLCA1MywgMjIwLCAzMiwgMjE5LCAyNiwgMTc3LCA2MSwgNTMsIDIyMCwgMzIsIAotICAgIDIxOSwgMjcsIDMsIDIzNiwgMTA2LCAxNDIsIDE3NywgNjEsIDUzLCAyMjAsIDMyLCAyMTksIDI3LCAzLCA4MCwgMTQyLCAKLSAgICAxNzcsIDYxLCA1MiwgNDcsIDE3NywgNjEsIDUyLCA1MywgMjIwLCAzMiwgMjE5LCAyNiwgODYsIDYxLCA1MywgMjM5LCAxMjAsIAotICAgIDIwNCwgOTksIDE1MywgMjA0LCA0NiwgNTMsIDIwOCwgMTczLCAyNDUsIDE2NSwgMjExLCAyMzgsIDI0MSwgMTc2LCA1MywgCi0gICAgMjA4LCAxNzMsIDI0NSwgMTY1LCAxMTIsIDEyMSwgNjEsIDQ3LCA1MCwgNTMsIDMsIDUsIDI0NiwgNjEsIDE4MywgNTMsIDk2LCAKLSAgICA3NiwgMTc3LCA0NywgMTI2LCA4NiwgMjUwLCA5MSwgOTYsIDUzLCAzLCA4MCwgOTUsIDg2LCA1MywgMywgODAsIDk1LCA0OSwgCi0gICAgNTAsIDUzLCAzLCA4MCwgOTUsIDk2LCA1MywgMywgNTIsIDgwLCA5NSwgODYsIDUzLCAzLCA1MiwgODAsIDk1LCA0OSwgNTAsIAotICAgIDUzLCAzLCA1MiwgODAsIDk1LCA5NiwgMjIwLCA2LCA0NywgODYsIDIyMCwgNiwgNDcsIDQ5LCA1MCwgMjIwLCA2LCA0NywgCi0gICAgMzUsIDI1MSwgMTQsIDI0NSwgMjI4LCAyMTksIDY5LCAyNDMsIDIwNSwgMjA5LCA4MywgMjQwLCAyMDcsIDIwOSwgODMsIAotICAgIDI0MywgMTA0LCAyMjEsIDE2NiwgMjQwLCAyMDgsIDI0MSwgOTQsIDIxMywgMTE3LCAyMzEsIDM4LCAyMjMsIDEwMSwgMjQxLCAKLSAgICAxMTUsIDIyMCwgNjksIDIyMSwgMTY2LCAyNTAsIDIzMiwgMjQxLCAxMTUsIDIyMCwgNjksIDUsIDI0MSwgMTE1LCAyMjAsIAotICAgIDY5LCAyNDUsIDE5NCwgMjUwLCA4MiwgMjI0LCAyNDQsIDI0MywgMTA0LCAyMjEsIDE2NiwgMjQ1LCAxOTYsIDI1MCwgODIsIAotICAgIDIyNCwgMjQ0LCA1LCAyNDUsIDE5NCwgMjUwLCA4MiwgMjI0LCAyNDQsIDI0MSwgODQsIDc2LCAyMTcsIDIxNCwgMjIzLCAKLSAgICAxNjIsIDIxNywgMjI0LCAyMjMsIDE2MiwgMjQ1LCAxNzEsIDIyMywgMTYyLCAyMTAsIDIxNywgMjI0LCAxMDMsIDU0LCAyMjQsIAotICAgIDEwMSwgNTQsIDcwLCAyMTgsIDc2LCAyNDMsIDEzNywgMjEyLCA1NywgMjEzLCAxMTgsIDIyNCwgMTAyLCAyNTAsIDYwLCAKLSAgICAyMTksIDI1NCwgMjE1LCAyNTMsIDIxOSwgMjU0LCAyNDcsIDE3OCwgMjE5LCAyNTQsIDUxLCAyMTUsIDIwNCwgMjQ1LCAxMDYsIAotICAgIDIxNSwgMjA0LCAyMzksIDE0MCwgMjE1LCAyMDQsIDIxNywgMjEwLCAxMzUsIDIzMSwgMjcsIDUwLCAyNTAsIDIxNywgMjUwLCAKLSAgICAyMTcsIDIyNSwgMTcsIDI1MCwgMjE3LCAyMTEsIDIwOCwgMjUwLCAyMTcsIDI0MywgMTM5LCAyNDMsIDEwNCwgMjIxLCAxNjYsIAotICAgIDI0MywgMTQzLCAyMTksIDgyLCAxMzUsIDIyMSwgMTY2LCAyMTksIDgyLCAxMzUsIDIyNywgMzcsIDI1MCwgMjI2LCAyMjcsIAotICAgIDM3LCAyMTksIDI0NCwgMjMwLCAyNDQsIDIwNiwgMjM3LCAyMzEsIDIsIDUyLCAyMzEsIDIsIDIwOCwgNzAsIDIzMSwgMiwgCi0gICAgMjQ1LCAxODgsIDIzMSwgMiwgMjEwLCAxODksIDIzMSwgMiwgMjA1LCAxNzgsIDIzMSwgMiwgMjQ2LCAxOCwgMjMxLCAyLCAKLSAgICAyNDYsIDE4LCAyNDUsIDE4OCwgMjMxLCAyLCAyNTAsIDE5NCwgMjQ1LCAxODgsIDIzMSwgMiwgMjA5LCA4MiwgMjQ4LCAxNTIsIAotICAgIDIxNiwgMTY4LCAyMTcsIDIxMSwgNzAsIDIyNCwgMTAyLCAyNDAsIDIxNSwgMjM4LCAxNzIsIDIxNywgMjExLCAyMzYsIDEyMSwgCi0gICAgMjA4LCAyMjgsIDIxOSwgMjU0LCAyMTYsIDczLCAyMDgsIDIyNywgMjMwLCAyMzksIDIyNywgMjQxLCAxOTQsIDIxMiwgMTIyLCAKLSAgICAyMDQsIDc1LCAyMDMsIDIyNiwgMjE3LCAyMjQsIDIyMSwgMTY2LCAyMDgsIDIyNywgMjI0LCAxMDMsIDIwOCwgMjI3LCAyNTAsIAotICAgIDUzLCAxNTYsIDEzNSwgMjIxLCAxNjYsIDI1MCwgNTMsIDE1NiwgMTM1LCAyNTAsIDE1MSwgMTU2LCAxMzUsIDI1MCwgMTUxLCAKLSAgICAyNDcsIDE0OCwgMjIxLCAxNjYsIDI1MSwgMTI3LCAxNTYsIDEzNSwgMjIyLCAyMzIsIDI1MCwgMTUxLCAyMjEsIDE3NSwgCi0gICAgMjUxLCAxMjcsIDE1NiwgMTM1LCAyNTEsIDcsIDE1NiwgMTM1LCAyMjEsIDE2NiwgMjUxLCA3LCAxNTYsIDEzNSwgMjUxLCA3LCAKLSAgICAxNTYsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjA4LCA3MCwgMjA4LCAyMjcsIDI1MSwgMTUsIDE1NiwgMTM1LCAyNDEsIDMwLCAKLSAgICAxMzUsIDIzOCwgMTcxLCAyNDEsIDMwLCAxMzUsIDI0MywgMjA2LCAyNDgsIDEwMywgMjUwLCAxNTMsIDIwOSwgOTMsIDIyNywgCi0gICAgMTIyLCAyMzgsIDE3MSwgMTU2LCAxMzUsIDI1MCwgMTUxLCAxNTYsIDIwOCwgMTczLCAyMTksIDI0NSwgMjA5LCA5MywgMjMxLCAKLSAgICA2NSwgMjIwLCA2OSwgMjMxLCA2NSwgNzYsIDIxOSwgMjQ1LCAyNTAsIDE1MSwgMTU2LCAxMzUsIDI0NSwgMjQzLCAyNDEsIAotICAgIDM0LCAyNDEsIDM1LCAyNDUsIDI0MiwgMjE1LCAyNTMsIDIzMSwgNTAsIDE1NiwgMTM1LCAyMTUsIDI1MywgMTU2LCAxMzUsIAotICAgIDI0NSwgMTU5LCAxMzUsIDI0MCwgMjU0LCAyNDEsIDMzLCAxMzUsIDIxMSwgOTUsIDI0MSwgMzQsIDI0NCwgMzgsIDE1NiwgCi0gICAgMTM1LCAxNTYsIDIwOCwgMTczLCAyNDcsIDEzNywgMjQ0LCA1NiwgMjI1LCAxNywgMjQ3LCAxMzYsIDIxNywgNDUsIDE1NiwgCi0gICAgMTM1LCAyMjEsIDE2NiwgMTU2LCAxMzUsIDIzNSwgMTU0LCAxMzUsIDIyMSwgMTY2LCAyMzUsIDE1NCwgMTM1LCAyMTEsIDM5LCAKLSAgICAyNDEsIDMwLCAxMzUsIDIyNywgMTc5LCAyMTksIDI0NSwgMTU2LCAxMzUsIDIzNywgMjQ3LCAyMTksIDI0NSwgMTU2LCAxMzUsIAotICAgIDIyNywgMTc5LCAxMTUsIDE1NiwgMTM1LCAyMzcsIDI0NywgMTE1LCAxNTYsIDEzNSwgMjI3LCAxNzksIDI0NywgMTQ4LCAKLSAgICAyMjEsIDE2NiwgMTU2LCAxMzUsIDIzNywgMjQ3LCAyNDcsIDE0OCwgMjIxLCAxNjYsIDE1NiwgMTM1LCAyMjMsIDI0MCwgCi0gICAgMjI3LCAxNzgsIDIyMywgMjQwLCAyMzcsIDI0NiwgMjQ4LCAxMDMsIDIyMSwgMTY2LCAyNDEsIDMwLCAxMzUsIDIyMSwgMTY2LCAKLSAgICAyMjcsIDE3OCwgMjIxLCAxNjYsIDIzNywgMjQ2LCAyMjIsIDIzMiwgMjI3LCAxNzksIDIyMSwgMTc1LCAxNTYsIDEzNSwgCi0gICAgMjIyLCAyMzIsIDIzNywgMjQ3LCAyMjEsIDE3NSwgMTU2LCAxMzUsIDIyNywgMTc5LCAyMTksIDI0NSwgMjQxLCAzMCwgMTM1LCAKLSAgICAyMzcsIDI0NywgMjE5LCAyNDUsIDI0MSwgMzAsIDEzNSwgMjIyLCAyMzIsIDIyNywgMTc5LCAyMjEsIDE3NSwgMjQxLCAzMCwgCi0gICAgMTM1LCAyMjIsIDIzMiwgMjM3LCAyNDcsIDIyMSwgMTc1LCAyNDEsIDMwLCAxMzUsIDIyNywgMTc5LCAyMTksIDI0NSwgMjM3LCAKLSAgICAyNDYsIDIzNywgMjQ3LCAyMTksIDI0NSwgMjI3LCAxNzgsIDIyMiwgMjMyLCAyMjcsIDE3OSwgMjIxLCAxNzUsIDIzNywgCi0gICAgMjQ2LCAyMjIsIDIzMiwgMjM3LCAyNDcsIDIyMSwgMTc1LCAyMjcsIDE3OCwgMjE3LCAyNDksIDIxMCwgMjM2LCAyMTcsIAotICAgIDI1MCwgMjE5LCAyNDUsIDE1NiwgMTM1LCAyMTAsIDIzNywgMjE5LCAyNDUsIDE1NiwgMTM1LCAyMTcsIDI1MCwgMjE5LCAKLSAgICAyNDUsIDI0MSwgMzAsIDEzNSwgMjEwLCAyMzcsIDIxOSwgMjQ1LCAyNDEsIDMwLCAxMzUsIDI0MywgMTA0LCAyMjEsIDE2NiwgCi0gICAgMjE3LCAyNTIsIDI0MywgMTA0LCAyMjEsIDE2NiwgMjEwLCAyMzgsIDIxMCwgMjQ1LCAyMjAsIDY5LCAyMTAsIDE5OCwgMjIwLCAKLSAgICA2OSwgMjIxLCAxNjYsIDM0LCAyMTAsIDI0NSwgMjIwLCA2OSwgMjIxLCAxNjYsIDM0LCAyMTAsIDE5OCwgMjIwLCA2OSwgCi0gICAgMjEwLCAyNDUsIDc2LCAyMTksIDI0NSwgMTU2LCAxMzUsIDIxMCwgMTk4LCA3NiwgMjE5LCAyNDUsIDE1NiwgMTM1LCAyMjIsIAotICAgIDIzMiwgMzQsIDIxMCwgMjQ1LCA3NiwgMjIxLCAxNzUsIDE1NiwgMTM1LCAyMjIsIDIzMiwgMzQsIDIxMCwgMTk4LCA3NiwgCi0gICAgMjIxLCAxNzUsIDE1NiwgMTM1LCAyMTAsIDI0NSwgNzYsIDMsIDIyMSwgMTY2LCAxNTYsIDEzNSwgMjEwLCAxOTgsIDc2LCAzLCAKLSAgICAyMjEsIDE2NiwgMTU2LCAxMzUsIDIyMywgMjIxLCAyMjMsIDIyMiwgMjIzLCAyMjMsIDIyMywgMjIyLCAyMDYsIDIzNywgNTEsIAotICAgIDIzMSwgNjUsIDIyMCwgNjksIDUxLCAyMTksIDIzNiwgMjIwLCA2OSwgNTEsIDIzMSwgNjUsIDc2LCAyMTksIDI0NSwgMTU2LCAKLSAgICAxMzUsIDUxLCAyMTksIDIzNiwgNzYsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgNTEsIDI0NywgNDgsIDUxLCAyNDUsIDk5LCA0MywgCi0gICAgMjE4LCA3NiwgNDMsIDIyNCwgMTAyLCA0MywgMjA4LCAyMTksIDQzLCAyNDMsIDEzNywgMjEyLCA1NywgNDMsIDcwLCAyMTksIAotICAgIDI1NCwgNDMsIDIxNSwgMjUzLCAyMTksIDI1NCwgNDMsIDI1MCwgNjAsIDIxOSwgMjU0LCA0MywgMjQxLCAzNCwgNDMsIDI0NCwgCi0gICAgMTQ0LCAxMDMsIDIxOCwgNzYsIDEwMywgMjI0LCAxMDIsIDEwMywgMjA4LCAyMTksIDEwMywgNzAsIDIxOSwgMjU0LCA1MCwgCi0gICAgMjEwLCAzLCA0OSwgMjEwLCAzLCAxMjEsIDIxMCwgMywgMTEyLCAyMTAsIDMsIDI1MCwgNjMsIDIyNCwgNzcsIDIwOCwgNDksIAotICAgIDIzOSwgMTY1LCAyMDgsIDcwLCA4MCwgMjQ4LCAyMzEsIDUwLCAyMDcsIDE3MywgNTIsIDgwLCAyNDgsIDIzMSwgNTIsIDUwLCAKLSAgICAyMDcsIDE3MywgMjQzLCAxMDQsIDIyMSwgMTY2LCAyMTcsIDIwNSwgMjIxLCAxNjYsIDIwOCwgNDksIDI0MywgMTA0LCAyMjEsIAotICAgIDE2NiwgMjM5LCAxNjYsIDIyMiwgMjM0LCA1MiwgODAsIDI0OCwgMjMxLCA1MiwgNTAsIDIwNywgMTczLCAyMTcsIDI1MCwgCi0gICAgMjA2LCAyNDgsIDIxNiwgMTE3LCAyMTAsIDIzNywgMjA2LCAyNDgsIDIxNiwgMTE3LCAyMjEsIDE3MiwgMjExLCAyLCAyMjAsIAotICAgIDY5LCAyNDUsIDE5NCwgMjUwLCA4MiwgMjIxLCAxNzIsIDIxMSwgMSwgMjIxLCAxNzIsIDIxMSwgMiwgNzYsIDIxOSwgMjQ1LCAKLSAgICAxNTYsIDEzNSwgMjQ1LCAxOTQsIDI1MCwgODIsIDIyMSwgMTcyLCAyMTEsIDIsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjE5LCAKLSAgICAyMzYsIDIyMCwgNjksIDIzMSwgNjUsIDIyMCwgNjksIDIyMywgMjI4LCAyMzcsIDI0LCAyNDUsIDIwNSwgMjI1LCA2OSwgCi0gICAgMjMwLCAyNTUsIDIwMywgMTU2LCAyMjMsIDgxLCAyMjEsIDE3NCwgNTAsIDI1MCwgMjE4LCAzLCAyNTAsIDEyOCwgNTAsIAotICAgIDIwOCwgODUsIDIyMywgMTYyLCAyMjcsIDM3LCAyNTAsIDIyNiwgMjIzLCAxNjIsIDIyNywgMzcsIDIxOSwgMjQ0LCAyMjMsIAotICAgIDE2MiwgMjMwLCAyNDQsIDIyMywgMTYyLCAyMDYsIDIzNywgMjQzLCAyMjIsIDIxOSwgMjU0LCA3MCwgMjE5LCAyNTQsIDIxMSwgCi0gICAgOTUsIDIxOSwgMjU0LCAyNDMsIDEzNywgMjA4LCAyMTksIDI0NywgMjM0LCA0OSwgMjIxLCAxNzIsIDI0MCwgOTIsIDIxMywgCi0gICAgMTQyLCAyMTcsIDIyNCwgNTAsIDIyMSwgMTcyLCAyNDAsIDkyLCAyMTMsIDE0MiwgMjE3LCAyMjQsIDQ5LCAyMTMsIDE0MiwgCi0gICAgMjE3LCAyMjQsIDUwLCAyMTMsIDE0MiwgMjE3LCAyMjQsIDIxNiwgNzMsIDIwOCwgMjI4LCAyNDEsIDM0LCAyNDUsIDkzLCAKLSAgICAyMjcsIDM3LCAyMTksIDI0NCwgMjQ1LCA5MywgMjI3LCAzNywgMjUwLCAyMjYsIDUyLCAyMTAsIDI0NCwgNTIsIDIxMCwgCi0gICAgMTk3LCA1MiwgMjMwLCAyNDQsIDUyLCAyMDYsIDIzNywgMjE4LCAxMDMsIDE1NiwgMjUsIDIxOSwgODIsIDEzNSwgMjI3LCAKLSAgICAxNzksIDMsIDI0MywgODUsIDIzNywgMjQ3LCAzLCAyNDMsIDg1LCAyMDUsIDI0MiwgMjIzLCAyNDAsIDIyNywgMTc4LCAyMDUsIAotICAgIDI0MiwgMjIzLCAyNDAsIDIzNywgMjQ2LCAyMjcsIDE3OSwgMTU2LCAyMDgsIDE3MywgMjE5LCAyNDUsIDIzNywgMjQ2LCAKLSAgICAyMzcsIDI0NywgMTU2LCAyMDgsIDE3MywgMjE5LCAyNDUsIDIyNywgMTc4LCAxNTYsIDIwOCwgMTczLCAyMTksIDI0NSwgCi0gICAgMjI3LCAxNzgsIDE1NiwgMjA4LCAxNzMsIDIxOSwgMjQ1LCAyMzcsIDI0NiwgMTU2LCAyMDgsIDE3MywgMjE5LCAyNDUsIAotICAgIDIxNywgMjQ5LCAxNTYsIDIwOCwgMTczLCAyMTksIDI0NSwgMjEwLCAyMzYsIDI0MywgMTA0LCAyMjEsIDE2NiwgMjE3LCAKLSAgICAyNTMsIDIxOSwgMjQ1LCAyNDEsIDM2LCAyNDMsIDEwNCwgMjIxLCAxNjYsIDIxMCwgMjM5LCAyMTksIDI0NSwgMjQxLCAzNiwgCi0gICAgMjIxLCAxNjYsIDUxLCAyMzEsIDY1LCA3NiwgMjE5LCAyNDUsIDE1NiwgMTM1LCAyMjEsIDE2NiwgNTEsIDIxOSwgMjM2LCAKLSAgICA3NiwgMjE5LCAyNDUsIDE1NiwgMTM1LCA1MSwgMjMxLCA2NSwgNzYsIDIxOSwgMjQ1LCAyMjEsIDE2NiwgMTU2LCAxMzUsIAotICAgIDUxLCAyMTksIDIzNiwgNzYsIDIxOSwgMjQ1LCAyMjEsIDE2NiwgMTU2LCAxMzUsIDIyNywgMTc5LCAyNDcsIDE0OCwgMjIxLCAKLSAgICAxNjYsIDI0MSwgMzAsIDEzNSwgMjM3LCAyNDcsIDI0NywgMTQ4LCAyMjEsIDE2NiwgMjQxLCAzMCwgMTM1LCAyMTcsIDI1MCwgCi0gICAgMjQ3LCAxNDgsIDIyMSwgMTY2LCAyNDEsIDMwLCAxMzUsIDIxMCwgMjM3LCAyNDcsIDE0OCwgMjIxLCAxNjYsIDI0MSwgMzAsIAotICAgIDEzNSwgMjIxLCAxNjYsIDIyMSwgMTcyLCAyMTEsIDIsIDIyMCwgNjksIDI0MywgMTA0LCAyMjEsIDE2NiwgMjQ1LCAxOTYsIAotICAgIDI1MCwgODIsIDIyMSwgMTcyLCAyMTEsIDEsIDIyMSwgMTY2LCAyMjEsIDE3MiwgMjExLCAyLCA3NiwgMjE5LCAyNDUsIDE1NiwgCi0gICAgMTM1LCAyNDMsIDEwNCwgMjIxLCAxNjYsIDI0NSwgMTk2LCAyNTAsIDgyLCAyMjEsIDE3MiwgMjExLCAyLCAyMTksIDI0NSwgCi0gICAgMjQxLCAzNiwgODAsIDI0MSwgMTA4LCAyMjQsIDE0NiwgMjM2LCAxMDYsIDI0MSwgMTA4LCAxMTIsIDUwLCAyNDMsIDIyOCwgCi0gICAgMjQxLCAxMDgsIDEyMSwgNTAsIDI0MywgMjI4LCAyNDEsIDEwOCwgMjQxLCAxMTUsIDc2LCAzLCAxNjMsIDIzNiwgMTA2LCAKLSAgICA5NSwgMjQxLCAxMTUsIDc2LCAzLCA4MCwgMjQ4LCAyMzEsIDI1MCwgNTAsIDI0MSwgODQsIDc2LCAyMzYsIDEwNiwgOTUsIDUsIAotICAgIDI0MSwgMTE1LCA3NiwgMywgODAsIDI0OCwgMjMxLCAyNTAsIDUwLCAyNDEsIDg0LCA3NiwgMjM2LCAxMDYsIDk1LCAyNDEsIAotICAgIDExNSwgNzYsIDMsIDcwLCA1NSwgMjQxLCAxMTUsIDc2LCAzLCAyMTksIDIwMywgNSwgMjQxLCAxMTUsIDc2LCAzLCAyMTksIAotICAgIDIwMywgMjQxLCAxMTUsIDc2LCAzLCAyMDYsIDI0NiwgMjQxLCAxMTUsIDc2LCAzLCAxMjAsIDIzNiwgMTA2LCAyMTEsIDE5LCAKLSAgICAyNDUsIDE5NCwgMywgMTYzLCAyMzYsIDEwNiwgOTUsIDI0NSwgMTk0LCAzLCA4MCwgMjQ4LCAyMzEsIDI1MCwgNTAsIDI0MSwgCi0gICAgODQsIDc2LCAyMzYsIDEwNiwgOTUsIDUsIDI0NSwgMTk0LCAzLCA4MCwgMjQ4LCAyMzEsIDI1MCwgNTAsIDI0MSwgODQsIDc2LCAKLSAgICAyMzYsIDEwNiwgOTUsIDI0NSwgMTk0LCAzLCAyMTksIDIwMywgNSwgMjQ1LCAxOTQsIDMsIDIxOSwgMjAzLCAyMDIsIDE2MCwgCi0gICAgMjIxLCAxNjQsIDI0OSwgMTEsIDIyNCwgMjQzLCAyNDMsIDIyMywgNTQsIDI0MSwgMTE3LCA0NywgMjM2LCAzOCwgMTEyLCAKLSAgICAyNTAsIDk0LCAxMjEsIDI1MCwgOTQsIDIxNywgMjE4LCAyMTgsIDIyNywgMjA0LCA3MiwgMjI3LCAxMTQsIDQ5LCAyNDYsIAotICAgIDIyNiwgNTAsIDI0NiwgMjI2LCA0OSwgMjM5LCAyMDQsIDUwLCAyMzksIDIwNCwgMjQ3LCAyNDgsIDUwLCAyNDUsIDEzMiwgCi0gICAgMjQ3LCAyNDgsIDQ5LCAyNDUsIDEzMiwgMjA4LCAxNDUsIDUwLCAyNDUsIDEzMiwgMjA4LCAxNDUsIDQ5LCAyNDUsIDEzMiwgCi0gICAgMjE2LCA3MywgMjIxLCAxNjYsIDU0LCA1MSwgMjI2LCAyNDYsIDI1MCwgMTI4LCAyMTQsIDE1OCwgMjE0LCAxNjYsIDIwOSwgCi0gICAgMTYyLCAyMTYsIDE0NywgMjE4LCAzNCwgMjMxLCAzMSwgMjA1LCAyMTgsIDIxMSwgMTc3LCAyMTgsIDk3LCA3NiwgMjMwLCAKLSAgICAyNTQsIDU0LCAyMDcsIDE3NCwgMjIxLCAxNjYsIDU0LCAyMDQsIDgyLCAyMzYsIDQwLCAyMDgsIDE0NSwgNDksIDI0NSwgCi0gICAgMTY1LCAyMDgsIDE0NSwgNTAsIDI0NSwgMTY1LCAyNDcsIDI0OCwgNDksIDI0NSwgMTY1LCAyNDcsIDI0OCwgNTAsIDI0NSwgCi0gICAgMTY1LCAyMDgsIDE0NSwgMTYyLCAyMzEsIDIsIDI0NywgMjQ4LCAxNjIsIDIzMSwgMiwgMjM5LCAxMTUsIDIxMiwgMzEsIAotICAgIDExMiwgMjUwLCA5NSwgMjQ4LCAxMDQsIDEyMCwgMjM2LCAxMDYsIDI0OCwgMjIwLCAyMTksIDI0NywgMjI5LCAxNTEsIDI0MSwgCi0gICAgMjYsIDIwOCwgMTczLCAyMDksIDkzLCAyMTYsIDE2LCAyMDMsIDE5NywgMjMxLCA1MCwgMzQsIDIxNiwgMTQ0LCAyNDcsIAotICAgIDIzMywgMjI5LCAxNDksIDIyNywgMjE3LCAyNTAsIDIxOCwgMTU1LCAyMTYsIDExLCAyNTAsIDIxOCwgMTU1LCAyNDEsIDI2LCAKLSAgICAyMDgsIDE3MywgMjA5LCA5MywgMjI3LCAyMjIsIDI0OCwgMTE1LCAyMTUsIDI1MiwgMjQ1LCA2MSwgMjUxLCAxNSwgMjUwLCAKLSAgICAxMDMsIDIxMCwgMTAwLCAyMDgsIDEzMCwgMjE1LCAxMjUsIDI0MywgMTg1LCAyMTksIDIzNywgMjQ1LCAyMDksIDIwOSwgCi0gICAgMjIwLCAyMTIsIDQ0LCAyNDUsIDE1NSwgMjQ1LCAxNTQsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjM1LCAyMDMsIDI1MCwgCi0gICAgMTY5LCAyMzksIDk4LCAxNiwgMjExLCAxNjksIDIxNywgNjIsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgMjQxLCAKLSAgICAzNiwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDYzLCAyNDMsIDE0MywgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIAotICAgIDYzLCAyNDMsIDIyMSwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDYzLCAyMzAsIDg4LCAyNTAsIDE2OSwgMjM5LCA5OCwgCi0gICAgMTYsIDIxNywgNjMsIDI0NiwgNjEsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjQ2LCA2MiwgMjExLCA2OSwgMjUwLCAxNjksIAotICAgIDIzOSwgOTgsIDE2LCAyNDYsIDYyLCAyMzAsIDg4LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxMiwgNTgsIDE0MiwgMjUwLCAKLSAgICAxNjksIDIzOSwgOTgsIDE2LCAyNDksIDIxLCAxNDIsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgMjEyLCA1NywgCi0gICAgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDYzLCAyNDksIDIwLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjMsIAotICAgIDIyNywgMTc4LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjMsIDIzNywgMjQ2LCAyNTAsIDE2OSwgMjM5LCA5OCwgCi0gICAgMTYsIDk2LCAyMDYsIDc2LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDg2LCAyMDYsIDc2LCAyNTAsIDE2OSwgMjM5LCA5OCwgCi0gICAgMTYsIDIxNywgNjMsIDk2LCA0NywgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDYzLCA4NiwgNDcsIDI1MCwgMTY5LCAKLSAgICAyMzksIDk4LCAxNiwgMjQ2LCA2MiwgMjQ5LCAyMCwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAxMjEsIDIxMCwgNCwgMjA2LCAKLSAgICAyNDYsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjQ0LCAzOCwgMjExLCA2OSwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIAotICAgIDYzLCAxMjEsIDI0NywgMzMsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgMjQ0LCAzNywgMjUwLCAxNjksIDIzOSwgCi0gICAgOTgsIDE2LCAxMjEsIDIxMCwgNCwgMjMwLCA4OCwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAxNzcsIDIwNiwgNzYsIDI1MCwgCi0gICAgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgMTc3LCA0NywgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAxMTIsIDIxMCwgNCwgCi0gICAgMjE5LCAyMDMsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjQ0LCA0OSwgMjExLCA2OSwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAKLSAgICAyMTcsIDYzLCAxMTIsIDI0NywgMzMsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgMjQ0LCA0OCwgMjUwLCAxNjksIAotICAgIDIzOSwgOTgsIDE2LCAxMTIsIDIxMCwgNCwgMjMwLCA4OCwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAxODMsIDIwNiwgNzYsIAotICAgIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgMTgzLCA0NywgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDMwLCAKLSAgICAyMDYsIDI0NiwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyNDQsIDM4LCAyMDYsIDI0NiwgMjUwLCAxNjksIDIzOSwgOTgsIAotICAgIDE2LCAyNDMsIDIyMiwgMjA2LCAyNDYsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjMwLCA4OSwgMjA2LCAyNDYsIDI1MCwgCi0gICAgMTY5LCAyMzksIDk4LCAxNiwgMjQ2LCA2MiwgMjA2LCAyNDYsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMTEyLCAyMTIsIAotICAgIDI0MCwgMjMwLCA4OCwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDMwLCAyMTcsIDYyLCAyNTAsIDE2OSwgMjM5LCA5OCwgCi0gICAgMTYsIDI0NiwgNjIsIDIxMSwgOTQsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgMjQ1LCAyNDIsIDI1MCwgMTY5LCAKLSAgICAyMzksIDk4LCAxNiwgMTEyLCAyMTAsIDQsIDI0MywgMjMxLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDI0NCwgNDksIDI0MywgCi0gICAgMjMxLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxMSwgOTUsIDI0MywgMjMxLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIAotICAgIDIzMCwgODksIDI0MywgMjMxLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDI0NiwgNjIsIDI0MywgMjMxLCAyNTAsIDE2OSwgCi0gICAgMjM5LCA5OCwgMTYsIDEyMSwgMjEyLCAyNDAsIDIxMSwgNjksIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgNDksIDIxMiwgMjQwLCAKLSAgICAyMTEsIDY5LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIwOCwgMjI4LCAyNDMsIDIzMSwgMjUwLCAxNjksIDIzOSwgOTgsIAotICAgIDE2LCAyMzcsIDI0NywgMjQzLCAyMzEsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjQ1LCAyMzQsIDE0MiwgMjUwLCAxNjksIAotICAgIDIzOSwgOTgsIDE2LCAyNDQsIDQ5LCAyMDgsIDIyNywgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMDIsIDI5LCAyNTAsIDE2OSwgCi0gICAgMjM5LCA5OCwgMTYsIDIxMSwgNzAsIDIwOCwgMjI3LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxMywgMTQ0LCAyMDYsIAotICAgIDI0NiwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDYzLCAyMjEsIDE2NiwgMjQxLCAzNiwgMjUwLCAxNjksIDIzOSwgCi0gICAgOTgsIDE2LCAyMTcsIDYzLCAyMTcsIDQ2LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDEyMSwgMjQ3LCAzNCwgMjA4LCAyMjcsIAotICAgIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMTEyLCAyNDcsIDM0LCAyMDgsIDIyNywgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAKLSAgICAyMzAsIDIzMCwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTYsIDU5LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIyMCwgMzYsIAotICAgIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjUxLCAzLCAyMDYsIDI0NiwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyNDEsIDM4LCAKLSAgICAyMDYsIDI0NiwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMzAsIDIzMSwgMjA2LCAyNDYsIDI1MCwgMTY5LCAyMzksIDk4LCAKLSAgICAxNiwgMjIwLCAzNywgMjA2LCAyNDYsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjUxLCAyLCAyMjEsIDE2NiwgMjQ2LCAxNjksIAotICAgIDgyLCA1MCwgMjUwLCAyMTgsIDMsIDE4MywgMjAyLCAzMCwgNDcsIDIxMiwgMjEwLCAxNzEsIDI0NywgMjMzLCAyNDgsIDEyOSwgCi0gICAgOTcsIDgwLCAyMjcsIDExNSwgMywgMTAxLCAyNDMsIDg1LCAyMzEsIDgsIDk3LCAyNDUsIDE4OSwgMjA2LCAyNDQsIDk3LCAKLSAgICAyNDMsIDE1OCwgMjA2LCAyNDQsIDk3LCAyNDEsIDk2LCA5NywgMjQ1LCAyMjQsIDk3LCA2MSwgNTEsIDMsIDI0NiwgMjE4LCAKLSAgICA4MCwgMjI3LCAxMTQsIDI0MSwgNjgsIDk3LCAyNTAsIDI1MCwgMjI5LCAxNTIsIDk3LCAyMzcsIDM3LCA5NywgNDMsIDIzNiwgCi0gICAgMTA2LCAyNDgsIDIzMSwgMywgMjIxLCAxNjMsIDQzLCAyMDgsIDg2LCAyNDIsIDcwLCAyNDcsIDIwMywgMjQ2LCA2MiwgMywgCi0gICAgMjIxLCAxNjksIDQ3LCAyMDYsIDI0MiwgOTcsIDIyNCwgNDAsIDk3LCAyMzUsIDIxNiwgOTcsIDIyMCwgNywgMjM3LCAxNzAsIAotICAgIDk3LCAyMjAsIDcsIDIyOCwgMTI5LCA5NywgMjE5LCA1OSwgOTcsIDIxOSwgNTgsIDk3LCAyNDMsIDE2NywgMjQ1LCA5MSwgCi0gICAgMTYsIDIzOSwgMTU5LCAxMDgsIDIxMiwgNSwgOTcsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MiwgMjQ0LCA2OCwgCi0gICAgMjEzLCAxMzEsIDIyOSwgMTUyLCA5NywgMjE3LCAyMzgsIDIxOSwgMTUzLCAyMjIsIDIwOCwgMjE5LCAxNTMsIDIxNywgMjM0LCAKLSAgICAyMTQsIDE4NSwgOTcsIDI0NiwgMzMsIDIxNCwgMTg1LCA5NywgNDksIDIxOSwgNzcsIDIwNiwgMjIxLCAxMTMsIDQ5LCAyMTksIAotICAgIDc3LCAyNDAsIDIwMCwgNDksIDIxOSwgNzcsIDIyNiwgMjUxLCAxMTMsIDUwLCAyMTksIDc3LCAyMDYsIDIyMSwgMTEzLCA1MCwgCi0gICAgMjE5LCA3NywgMjQwLCAyMDAsIDUwLCAyMTksIDc3LCAyMjYsIDI1MSwgMTEzLCA0OSwgNTEsIDI0NywgMjI3LCAyMDYsIAotICAgIDIyMSwgMjQ1LCAxNjUsIDQ5LCA1MSwgMjQ3LCAyMjcsIDI0MCwgMjAwLCA0OSwgNTEsIDI0NywgMjI3LCAyMjYsIDI1MSwgCi0gICAgMjQ1LCAxNjUsIDUwLCA1MSwgMjQ3LCAyMjcsIDIwNiwgMjIxLCAyNDUsIDE2NSwgNTAsIDUxLCAyNDcsIDIyNywgMjQwLCAKLSAgICAyMDAsIDUwLCA1MSwgMjQ3LCAyMjcsIDIyNiwgMjUxLCAyNDUsIDE2NSwgNDksIDI0NSwgOTMsIDI0NywgMjI3LCAyMDYsIAotICAgIDIyMSwgMTEzLCA0OSwgMjQ1LCA5MywgMjQ3LCAyMjcsIDEwMSwgMjE4LCAxNTksIDQ5LCAyNDUsIDkzLCAyNDcsIDIyNywgCi0gICAgMjI2LCAyNTEsIDExMywgMjQ1LCA5MywgMjQ3LCAyMjcsIDI0MCwgMjAwLCA1MCwgMjQ1LCA5MywgMjQ3LCAyMjcsIDIwNiwgCi0gICAgMjIxLCAxMTMsIDUwLCAyNDUsIDkzLCAyNDcsIDIyNywgMTAxLCAyMTgsIDE1OSwgNTAsIDI0NSwgOTMsIDI0NywgMjI3LCAKLSAgICAyMjYsIDI1MSwgMTEzLCAyMzEsIDMsIDI0MCwgMjAwLCAyMzYsIDEwNiwgMjI3LCAxMTUsIDI0MCwgMjAwLCAyMDYsIDIyMSwgCi0gICAgNDksIDIxOSwgMjQ1LCAyMjYsIDI1MSwgNTAsIDI0NSwgOTMsIDI0NywgMjI3LCAyMTQsIDE2NywgMjA2LCAyMjEsIDUwLCAKLSAgICAyMTksIDI0NSwgMjI2LCAyNTEsIDQ5LCAyNDUsIDkzLCAyNDcsIDIyNywgMjE0LCAxNjcsIDIxMCwgMjE4LCAyMDgsIDE0NCwgCi0gICAgMjEwLCAyMTgsIDI0NywgMjQ3LCAyMDgsIDE0NSwgNTEsIDE1NSwgMjQ3LCAyNDgsIDUxLCAxNTUsIDI0NywgMjQ4LCA1MSwgCi0gICAgMjQ3LCAyMjcsIDExNSwgMjA4LCAxNDUsIDUxLCAxNTUsIDQwLCAxNiwgMjQ3LCAyNDcsIDQ5LCA4MCwgOTgsIDIyNywgMTE0LCAKLSAgICA1MCwgODAsIDk4LCAyMjcsIDExNCwgMjM2LCAxMDYsIDIxNCwgMjAyLCAyMjcsIDExMywgMjM2LCAxMDYsIDIxNCwgMjAyLCAKLSAgICAyMjcsIDExMiwgMjM2LCAxMDYsIDIxNCwgMjAyLCAyMjcsIDExMSwgMjM2LCAxMDYsIDIxNCwgMjAyLCAyMjcsIDExMCwgCi0gICAgMjQ0LCAyOSwgMTYsIDE1NywgODAsIDI1LCAyMDgsIDE0NSwgMjE2LCAxNiwgMjQ0LCAyOSwgMTYsIDE1NywgODAsIDI1LCAKLSAgICAyNDcsIDI0OCwgMjE2LCAxNiwgMjQ0LCAyOSwgMTYsIDE1NywgODAsIDMsIDI0NiwgNjEsIDI0NCwgMjksIDE2LCAxNTcsIAotICAgIDEyMSwgMjUsIDIzNiwgMTA2LCAzLCAyNDYsIDYxLCAyNDQsIDI5LCAxNiwgMTU3LCAxMTIsIDI1LCAyMzYsIDEwNiwgMywgCi0gICAgMjQ2LCA2MSwgMjQ0LCAyOSwgMTYsIDE1NywgODAsIDMsIDIwOCwgODUsIDI0NCwgMjksIDE2LCAxNTcsIDEyMSwgMjUsIAotICAgIDIzNiwgMTA2LCAzLCAyMDgsIDg1LCAyNDQsIDI5LCAxNiwgMTU3LCAxMTIsIDI1LCAyMzYsIDEwNiwgMywgMjA4LCA4NSwgCi0gICAgMjQ0LCAyOSwgMTYsIDE1NywgODAsIDI1LCAyMDQsIDc1LCAyNDQsIDI5LCAxNiwgMTU3LCAxMjEsIDI1LCAyMzYsIDEwNiwgCi0gICAgMywgMjA0LCA3NSwgMjQ0LCAyOSwgMTYsIDE1NywgMTEyLCAyNSwgMjM2LCAxMDYsIDMsIDIwNCwgNzUsIDI0NCwgMjksIDE2LCAKLSAgICAxNTcsIDEyMSwgMjUsIDIzNiwgMTA1LCAyNDQsIDI5LCAxNiwgMTU3LCAxMTIsIDI1LCAyMzYsIDEwNSwgMjQ0LCAyOSwgMTYsIAotICAgIDE1NywgODAsIDI1LCAyMDgsIDE0NSwgMjI3LCAyMjIsIDI0NCwgMjksIDE2LCAxNTcsIDgwLCAyNSwgMjQ3LCAyNDgsIDIyNywgCi0gICAgMjIyLCA1MSwgMjM5LCAxNzIsIDIxNiwgNzgsIDk3LCAyNDEsIDEzMSwgOTcsIDgwLCAyMjcsIDExNSwgMjQwLCAyMDAsIAotICAgIDIyNCwgMjE0LCAyNDcsIDIxNCwgMjI0LCAyMTQsIDE2MywgMTE1LCAyMTIsIDIyNywgMjI0LCAyMTQsIDIxMiwgMjI4LCAKLSAgICAxMTUsIDIyNywgMjgsIDIyNCwgMjE0LCAxNjMsIDExNSwgMTIwLCAyMTIsIDIxMywgMjI0LCAyMTQsIDEyMCwgMjEyLCAyMTQsIAotICAgIDExNSwgMjI3LCAyOCwgMjI0LCAyMTQsIDEyMCwgMjEyLCAyMTQsIDIzMCwgOTcsIDIyNCwgMjE0LCAyMDgsIDY2LCAyMjQsIAotICAgIDIxNCwgMjA5LCAxMjQsIDIyNCwgMjE0LCAyMTgsIDI1MywgMjQxLCAxODAsIDIzNywgMjM5LCAyMzksIDkyLCAyMDgsIDE0NSwgCi0gICAgMjE5LCA3NiwgMjQ3LCAyNDgsIDIxOSwgNzYsIDIwOCwgMTQ1LCAyNDUsIDkzLCAxNTUsIDI0NywgMjQ4LCAyNDUsIDkzLCAKLSAgICAxNTUsIDIwOCwgMTQ1LCAyMDgsIDEzMywgMjEzLCAzMywgMTU1LCAyNDcsIDI0OCwgMjA4LCAxMzMsIDIxMywgMzMsIDE1NSwgCi0gICAgNjEsIDIwOCwgMTAxLCAyNDgsIDExNSwgMjE1LCAyNTMsIDMsIDI0NiwgNjEsIDIxMSwgNTEsIDIzOSwgMjE1LCAyNTEsIAotICAgIDE0MiwgMjQ1LCA5MCwgMjQxLCAxMTYsIDIzMCwgMjQ0LCAyNDQsIDY4LCAyNDAsIDIwNCwgOTcsIDYyLCAyMTYsIDExLCA1MiwgCi0gICAgMjA4LCA4NSwgNjIsIDIyNywgMjE3LCA1MiwgMjA4LCA4NSwgNjIsIDIwNiwgMjIzLCA1MiwgMjA4LCA4NSwgNjIsIDI0MiwgCi0gICAgNjksIDUyLCAyMDgsIDg1LCA2MiwgMjE2LCAxMSwgNTIsIDIwOCwgODYsIDMsIDgwLCAxNDIsIDYyLCAyMjcsIDIxNywgNTIsIAotICAgIDIwOCwgODYsIDMsIDgwLCAxNDIsIDYyLCAyMTYsIDExLCAyMDgsIDg2LCAzLCA1MiwgODAsIDE0MiwgMjUxLCAzNCwgMjQ2LCAKLSAgICAxOSwgMjExLCA1OCwgMjA4LCAyMjAsIDI0NiwgMTksIDIzNiwgNDEsIDMsIDIzOSwgMTk1LCAyMTQsIDI0MSwgNjIsIDIyNSwgCi0gICAgMTAsIDIyNywgMjE3LCAyMDgsIDg1LCA2MiwgMjI1LCAxMCwgMjE2LCAxMSwgMjA4LCA4NSwgNjIsIDIyNSwgMTAsIDIwNiwgCi0gICAgMjIzLCAyMDgsIDg1LCA2MiwgMjI1LCAxMCwgMjQyLCA2OSwgMjA4LCA4NSwgNTIsIDgwLCAxNDIsIDYyLCA1MSwgMzUsIAotICAgIDIxMSwgNjEsIDYyLCAyNDYsIDYyLCAzNSwgMjE2LCAxNDgsIDE2LCAzNSwgMjIxLCA0OCwgMTYsIDM1LCAyMTEsIDkwLCA3NiwgCi0gICAgMjM3LCA2MSwgMTYsIDM1LCAyMTEsIDkwLCA3NiwgMjA5LCAxMTIsIDE2LCAzNSwgMjQxLCA4NCwgNzYsIDIwOSwgMTEyLCAKLSAgICAxNiwgMzUsIDI0MSwgODQsIDc2LCAyMDgsIDEwNSwgMTYsIDM1LCAyNDEsIDcxLCAxNiwgMzUsIDI1MSwgMTMwLCAxNiwgMzUsIAotICAgIDI0OCwgMTI4LCAxNiwgMzUsIDI0OSwgMTksIDE2LCAzNSwgMjM2LCAxMDYsIDIxMCwgNSwgMTYsIDM1LCAyMjcsIDExNSwgCi0gICAgMjQwLCA1MSwgMTYsIDM1LCA4MCwgMjEwLCA1LCAxNiwgMzUsIDIzOSwgMTU5LCAyNDAsIDUxLCAxNiwgMzUsIDI0NywgMjUsIAotICAgIDIxNiwgNzcsIDE2LCAzNSwgMjEzLCA3LCAyMTksIDIxMSwgMTYsIDM1LCAyMTMsIDcsIDIzMSwgNDksIDE2LCAzNSwgMjQ0LCAKLSAgICAxMzksIDIyNywgMTA1LCAyNDEsIDksIDE2LCAzNSwgMjQ0LCA4LCAyNDUsIDE4NCwgMTA1LCAxNiwgMzUsIDI0NCwgOCwgCi0gICAgMjQ1LCAxODQsIDEwOCwgMTYsIDM1LCAyNDQsIDgsIDI0NSwgMTg0LCAxNDcsIDE2LCAzNSwgMjQ0LCA4LCAyNDUsIDE4NCwgCi0gICAgMTQ5LCAxNiwgMzUsIDE4MiwgMjUxLCAxMzAsIDE2LCAzNSwgMjEwLCA5NSwgMjMxLCAxMTIsIDE2LCAzNSwgMjQxLCA4NCwgCi0gICAgNzYsIDIwOCwgMTA2LCAyNDgsIDMzLCAxNiwgMzUsIDI0NywgNTksIDE2LCAzNSwgMjQxLCA4NCwgNzYsIDIyNSwgOSwgMTYsIAotICAgIDM1LCAyMTAsIDI0MiwgMTYsIDM1LCAyNDEsIDksIDE2LCAzNSwgMjQwLCAxMSwgMjEzLCAxMzAsIDE2LCAzNSwgMjM3LCAKLSAgICAyMzgsIDIxMywgMTMwLCAxNiwgMzUsIDIxNiwgMTQ5LCAyMTMsIDEzMCwgMTYsIDM1LCAyMDYsIDIzNiwgMjEzLCAxMzAsIAotICAgIDE2LCAzNSwgMjExLCAyMjgsIDE2LCAzNSwgMjQ0LCA0NiwgMjQ4LCAzNywgOTcsIDE3MSwgMjQ3LCAyMzMsIDE2LCAzNSwgCi0gICAgMjIyLCAyMTEsIDE2LCAzNSwgMjQ0LCA0NywgMjM5LCAxNTksIDEwOCwgMTYsIDM1LCAyMTAsIDI0MywgMjM5LCAxNTksIAotICAgIDEwOCwgMjIwLCA4MiwgMTEzLCAyMjAsIDgyLCAyNDYsIDE5NCwgMjIwLCA4MiwgMjM5LCAxNjIsIDIyMCwgODIsIDIzMCwgCi0gICAgMjM5LCAyMzksIDE2MiwgMjIwLCA4MiwgMjQ4LCAxMjUsIDI0NywgMTkwLCAyMjAsIDgyLCAyNDcsIDI0MSwgMjA4LCAyNTAsIAotICAgIDIyMCwgODIsIDI0NywgMjI0LCAyNDgsIDIzNiwgMjM1LCAxNTMsIDIyMCwgODIsIDI1MCwgMjM3LCA3NiwgMjQ2LCAxNjgsIAotICAgIDIyMCwgODIsIDI0NCwgMTQ0LCAyMjAsIDgyLCAyNDUsIDgwLCAyNTEsIDEzNCwgMjIxLCA0NiwgMjIwLCA4MiwgNTIsIDI0OSwgCi0gICAgMjAsIDQzLCAxNywgMTA1LCA0MywgMTcsIDEwOCwgNDMsIDE3LCAxNDcsIDQzLCAxNywgMTQ5LCA0MywgMTcsIDE3MCwgNDMsIAotICAgIDE3LCAxOTUsIDQzLCAxNywgMjEzLCAxMTEsIDQzLCAxNywgMTk5LCA0MywgMTcsIDIyMiwgNjMsIDQzLCA0MiwgMjA5LCAKLSAgICAxNTIsIDQzLCA0MiwgMjQxLCAxMTIsIDQzLCA0MiwgMjA3LCAxNTQsIDQzLCA0MiwgMjA5LCA1NSwgNDMsIDQyLCAyMzksIAotICAgIDE0MSwgNDMsIDQyLCAyNDAsIDIyLCA0MywgNDIsIDIxMiwgODIsIDQzLCA0MiwgMjEzLCAxMDgsIDQzLCA0MiwgMjQxLCAKLSAgICAxNDAsIDQzLCA0MiwgMjIyLCA2MCwgNDMsIDQyLCAyMDcsIDE1MSwgMTAyLCAxNywgMTA1LCAxMDIsIDE3LCAxMDgsIDEwMiwgCi0gICAgMTcsIDE0NywgMTAyLCAxNywgMTQ5LCAxMDIsIDE3LCAxNzAsIDEwMiwgMTcsIDE5NSwgMTAyLCAxNywgMjEzLCAxMTEsIAotICAgIDEwMiwgMTcsIDE5OSwgMTAyLCAxNywgMjIyLCA2MywgMTAyLCA0MiwgMjA5LCAxNTIsIDEwMiwgNDIsIDI0MSwgMTEyLCAKLSAgICAxMDIsIDQyLCAyMDcsIDE1NCwgMTAyLCA0MiwgMjA5LCA1NSwgMTAyLCA0MiwgMjM5LCAxNDEsIDEwMiwgNDIsIDI0MCwgMjIsIAotICAgIDEwMiwgNDIsIDIxMiwgODIsIDEwMiwgNDIsIDIxMywgMTA4LCAxMDIsIDQyLCAyNDEsIDE0MCwgMTAyLCA0MiwgMjIyLCA2MCwgCi0gICAgMTAyLCA0MiwgMjA3LCAxNTEsIDE3LCAxMTgsIDIzOSwgMTAyLCAyMTEsIDYxLCAxNywgMTIwLCAyMzksIDEwMiwgMjExLCAKLSAgICA2MSwgMTcsIDEyNiwgMjM5LCAxMDIsIDIxMSwgNjEsIDE3LCAyMzksIDE0NywgMjM5LCAxMDIsIDIxMSwgNjEsIDE3LCAyMzksIAotICAgIDIzMywgMjM5LCAxMDIsIDIxMSwgNjEsIDE3LCAyMTIsIDg4LCAyMzksIDEwMiwgMjExLCA2MSwgMTcsIDIxMywgMTEyLCAKLSAgICAyMzksIDEwMiwgMjExLCA2MSwgMTcsIDI0MSwgMTQzLCAyMzksIDEwMiwgMjExLCA2MSwgMTcsIDIyMiwgNjQsIDIzOSwgCi0gICAgMTAyLCAyMTEsIDYxLCA0MiwgMjA5LCAxNTMsIDIzOSwgMTAyLCAyMTEsIDYxLCA0MiwgMjQxLCAxMTMsIDIzOSwgMTAyLCAKLSAgICAyMTEsIDYxLCA0MiwgMjA3LCAxNTUsIDIzOSwgMTAyLCAyMTEsIDYxLCA0MiwgMjA5LCA1NiwgMjM5LCAxMDIsIDIxMSwgNjEsIAotICAgIDQyLCAyMzksIDE0MiwgMjM5LCAxMDIsIDIxMSwgNjEsIDQyLCAyNDAsIDIzLCAyMzksIDEwMiwgMjExLCA2MSwgNDIsIDIxMiwgCi0gICAgODMsIDIzOSwgMTAyLCAyMTEsIDYxLCA0MiwgMjEzLCAxMDksIDIzOSwgMTAyLCAyMTEsIDYxLCA0MiwgMjQxLCAxNDEsIAotICAgIDIzOSwgMTAyLCAyMTEsIDYxLCA0MiwgMjIyLCA2MSwgMjM5LCAxMDIsIDIxMSwgNjEsIDQyLCAyMDcsIDE1MiwgMjM5LCAKLSAgICAxMDIsIDIxMSwgNjEsIDEwMiwgOCwgNSwgMSwgNjMsIDEwMiwgOCwgNSwgMSwgMjQ5LCAyNTUsIDEwMiwgOCwgNSwgMSwgCi0gICAgMjQ3LCAxMjUsIDEwMiwgOCwgNSwgMSwgMjQ1LCA1MSwgMTAyLCA4LCA1LCAxLCA3NCwgMTAyLCA4LCA1LCAxLCAyNDAsIAotICAgIDE3NCwgMTAyLCA4LCA1LCAxLCAyMzksIDc1LCAxMDIsIDgsIDUsIDEsIDIzNywgMTcxLCAxMDIsIDgsIDUsIDEsIDc1LCAKLSAgICAxMDIsIDgsIDUsIDEsIDIzMCwgMTg0LCAxMDIsIDgsIDUsIDEsIDIzMCwgNTQsIDEwMiwgOCwgNSwgMSwgMTU5LCAxMDIsIDgsIAotICAgIDUsIDEsIDIyNiwgMTg1LCAxMDIsIDgsIDUsIDEsIDIyMywgMTYzLCAxMDIsIDgsIDUsIDEsIDc4LCAxMDIsIDgsIDUsIDEsIAotICAgIDIxOSwgMTg0LCAxMDIsIDgsIDUsIDEsIDIxNywgMTM0LCAxMDIsIDgsIDUsIDEsIDE0NiwgMTAyLCA4LCA1LCAxLCAxOTQsIAotICAgIDEwMiwgOCwgNSwgMSwgMjEwLCA2OSwgMTAyLCA4LCA1LCAxLCA2OCwgMTAyLCA4LCA1LCAxLCAyMDYsIDE2NCwgMTAyLCA4LCAKLSAgICA1LCAxLCAyMDQsIDE0NCwgMTAyLCA4LCA1LCAxLCAyMDMsIDE5NiwgMTAyLCA4LCA1LCAxLCAyMDMsIDEyNCwgMTAyLCA4LCAKLSAgICA1LCAxLCAyMDIsIDE1OSwgNDMsIDgsIDYsIDEsIDYzLCA0MywgOCwgNiwgMSwgMjQ5LCAyNTUsIDQzLCA4LCA2LCAxLCAyNDcsIAotICAgIDEyNSwgNDMsIDgsIDYsIDEsIDI0NSwgNTEsIDQzLCA4LCA2LCAxLCA3NCwgNDMsIDgsIDYsIDEsIDI0MCwgMTc0LCA0MywgOCwgCi0gICAgNiwgMSwgMjM5LCA3NSwgNDMsIDgsIDYsIDEsIDIzNywgMTcxLCA0MywgOCwgNiwgMSwgNzUsIDQzLCA4LCA2LCAxLCAyMzAsIAotICAgIDE4NCwgNDMsIDgsIDYsIDEsIDIzMCwgNTQsIDQzLCA4LCA2LCAxLCAxNTksIDQzLCA4LCA2LCAxLCAyMjYsIDE4NSwgNDMsIAotICAgIDgsIDYsIDEsIDIyMywgMTYzLCA0MywgOCwgNiwgMSwgNzgsIDQzLCA4LCA2LCAxLCAyMTksIDE4NCwgNDMsIDgsIDYsIDEsIAotICAgIDIxNywgMTM0LCA0MywgOCwgNiwgMSwgMTQ2LCA0MywgOCwgNiwgMSwgMTk0LCA0MywgOCwgNiwgMSwgMjEwLCA2OSwgNDMsIAotICAgIDgsIDYsIDEsIDY4LCA0MywgOCwgNiwgMSwgMjA2LCAxNjQsIDQzLCA4LCA2LCAxLCAyMDQsIDE0NCwgNDMsIDgsIDYsIDEsIAotICAgIDIwMywgMTk2LCA0MywgOCwgNiwgMSwgMjAzLCAxMjQsIDQzLCA4LCA2LCAxLCAyMDIsIDE1OSwgNDMsIDgsIDUsIDEsIDYzLCAKLSAgICA0MywgOCwgNSwgMSwgMjQ5LCAyNTUsIDQzLCA4LCA1LCAxLCAyNDcsIDEyNSwgNDMsIDgsIDUsIDEsIDI0NSwgNTEsIDQzLCAKLSAgICA4LCA1LCAxLCA3NCwgNDMsIDgsIDUsIDEsIDI0MCwgMTc0LCA0MywgOCwgNSwgMSwgMjM5LCA3NSwgNDMsIDgsIDUsIDEsIAotICAgIDIzNywgMTcxLCA0MywgOCwgNSwgMSwgNzUsIDQzLCA4LCA1LCAxLCAyMzAsIDE4NCwgNDMsIDgsIDUsIDEsIDIzMCwgNTQsIAotICAgIDQzLCA4LCA1LCAxLCAxNTksIDQzLCA4LCA1LCAxLCAyMjYsIDE4NSwgNDMsIDgsIDUsIDEsIDIyMywgMTYzLCA0MywgOCwgNSwgCi0gICAgMSwgNzgsIDQzLCA4LCA1LCAxLCAyMTksIDE4NCwgNDMsIDgsIDUsIDEsIDIxNywgMTM0LCA0MywgOCwgNSwgMSwgMTQ2LCAKLSAgICA0MywgOCwgNSwgMSwgMTk0LCA0MywgOCwgNSwgMSwgMjEwLCA2OSwgNDMsIDgsIDUsIDEsIDY4LCA0MywgOCwgNSwgMSwgCi0gICAgMjA2LCAxNjQsIDQzLCA4LCA1LCAxLCAyMDQsIDE0NCwgNDMsIDgsIDUsIDEsIDIwMywgMTk2LCA0MywgOCwgNSwgMSwgMjAzLCAKLSAgICAxMjQsIDQzLCA4LCA1LCAxLCAyMDIsIDE1OSwgNDMsIDE3LCAyMDIsIDg0LCAxODIsIDQzLCA0MiwgMjQxLCAxMTIsIDE4MiwgCi0gICAgNDMsIDQyLCAyMDcsIDE1NCwgMTgyLCA0MywgNDIsIDIwOSwgNTUsIDE4MiwgNDMsIDQyLCAyMzksIDE0MSwgMTgyLCA0MywgCi0gICAgNDIsIDI0MCwgMjIsIDE4MiwgNDMsIDQyLCAyMTIsIDgyLCAxODIsIDQzLCA0MiwgMjEzLCAxMDgsIDE4MiwgNDMsIDQyLCAKLSAgICAyNDEsIDE0MCwgMTgyLCA0MywgNDIsIDIyMiwgNjAsIDE4MiwgNDMsIDQyLCAyMDcsIDE1MSwgNTIsIDQzLCAxNywgMTA1LCAKLSAgICA1MiwgNDMsIDE3LCAxMDgsIDUyLCA0MywgMTcsIDE0NywgNTIsIDQzLCAxNywgMTQ5LCA1MiwgNDMsIDE3LCAxNzAsIDUyLCAKLSAgICA0MywgMTcsIDE5NSwgNTIsIDQzLCAxNywgMjEzLCAxMTEsIDUyLCA0MywgMTcsIDE5OSwgNTIsIDQzLCAxNywgMjIyLCA2MywgCi0gICAgNTIsIDQzLCA0MiwgMjA5LCAxNTIsIDE4MiwgNDMsIDE3LCAyMDIsIDg0LCA5OCwgMTE2LCAxNTcsIDIzNiwgMTA1LCA5OCwgCi0gICAgMTE2LCA3OSwgMjM2LCAxMDUsIDk4LCAxMTYsIDE1NywgMjA2LCAzOCwgOTgsIDExNiwgNzksIDIwNiwgMzgsIDk4LCAxMTYsIAotICAgIDE1NywgMjA4LCA3MCwgMjQ0LCAxNDUsIDIzNiwgMTA1LCA5OCwgMTE2LCA3OSwgMjA4LCA3MCwgMjQ0LCAxNDUsIDIzNiwgCi0gICAgMTA1LCA5OCwgMTE2LCAxNTcsIDIwOCwgNzAsIDI0NCwgMTQ1LCAyMDYsIDM4LCA5OCwgMTE2LCA3OSwgMjA4LCA3MCwgMjQ0LCAKLSAgICAxNDUsIDIwNiwgMzgsIDk4LCAxMTYsIDE1NywgMjE3LCA1OCwgMjQ0LCAxNDUsIDIzNiwgMTA1LCA5OCwgMTE2LCA3OSwgCi0gICAgMjE3LCA1OCwgMjQ0LCAxNDUsIDIzNiwgMTA1LCA5OCwgMTE2LCAxNTcsIDIxNywgNTgsIDI0NCwgMTQ1LCAyMDYsIDM4LCAKLSAgICA5OCwgMTE2LCA3OSwgMjE3LCA1OCwgMjQ0LCAxNDUsIDIwNiwgMzgsIDk4LCAxMTYsIDE1NywgMTIxLCAyNSwgMjE2LCAxNiwgCi0gICAgOTgsIDExNiwgMTIxLCAxNTcsIDI1LCA1MCwgMjM3LCA0OSwgOTgsIDExNiwgMTIxLCA3OSwgMjUsIDUwLCAyMjcsIDEzNCwgCi0gICAgOTgsIDExNiwgNzksIDEyMSwgMjUsIDIxNiwgMTYsIDk4LCAxMTYsIDE1NywgMTIxLCAyNSwgMjI3LCAyMjIsIDk4LCAxMTYsIAotICAgIDEyMSwgMTU3LCAyNSwgNDksIDIzNywgNDksIDk4LCAxMTYsIDEyMSwgNzksIDI1LCA0OSwgMjI3LCAxMzQsIDk4LCAxMTYsIAotICAgIDc5LCAxMjEsIDI1LCAyMjcsIDIyMiwgOTgsIDExNiwgMTU3LCAxMTIsIDI1LCAyMTYsIDE2LCA5OCwgMTE2LCAxMTIsIDE1NywgCi0gICAgMjUsIDUwLCAyMzcsIDQ5LCA5OCwgMTE2LCAxMTIsIDc5LCAyNSwgNTAsIDIyNywgMTM0LCA5OCwgMTE2LCA3OSwgMTEyLCAKLSAgICAyNSwgMjE2LCAxNiwgOTgsIDExNiwgMTU3LCAxMTIsIDI1LCAyMjcsIDIyMiwgOTgsIDExNiwgMTEyLCAxNTcsIDI1LCA0OSwgCi0gICAgMjM3LCA0OSwgOTgsIDExNiwgMTEyLCA3OSwgMjUsIDQ5LCAyMjcsIDEzNCwgOTgsIDExNiwgNzksIDExMiwgMjUsIDIyNywgCi0gICAgMjIyLCA5OCwgMTE2LCAxNTcsIDgwLCAyNSwgMjE2LCAxNiwgOTgsIDExNiwgODAsIDE1NywgMjUsIDUwLCAyMzcsIDQ5LCAKLSAgICA5OCwgMTE2LCAxMTIsIDc5LCAyNSwgNTAsIDEyMSwgMjI3LCAxMzQsIDk4LCAxMTYsIDEyMSwgNzksIDI1LCA1MCwgMTEyLCAKLSAgICAyMjcsIDEzNCwgOTgsIDExNiwgODAsIDc5LCAyNSwgNTAsIDIyNywgMTM0LCA5OCwgMTE2LCAxMjEsIDE1NywgMjUsIDUwLCAKLSAgICAxMTIsIDIzNywgNDksIDk4LCAxMTYsIDExMiwgMTU3LCAyNSwgNTAsIDEyMSwgMjM3LCA0OSwgOTgsIDExNiwgNzksIDgwLCAKLSAgICAyNSwgMjE2LCAxNiwgOTgsIDExNiwgMTU3LCA4MCwgMjUsIDIyNywgMjIyLCA5OCwgMTE2LCA4MCwgMTU3LCAyNSwgNDksIAotICAgIDIzNywgNDksIDk4LCAxMTYsIDExMiwgNzksIDI1LCA0OSwgMTIxLCAyMjcsIDEzNCwgOTgsIDExNiwgMTIxLCA3OSwgMjUsIAotICAgIDQ5LCAxMTIsIDIyNywgMTM0LCA5OCwgMTE2LCA4MCwgNzksIDI1LCA0OSwgMjI3LCAxMzQsIDk4LCAxMTYsIDEyMSwgMTU3LCAKLSAgICAyNSwgNDksIDExMiwgMjM3LCA0OSwgOTgsIDExNiwgMTEyLCAxNTcsIDI1LCA0OSwgMTIxLCAyMzcsIDQ5LCA5OCwgMTE2LCAKLSAgICA3OSwgODAsIDI1LCAyMjcsIDIyMiwgOTgsIDExNiwgMTU3LCAxMjEsIDI1LCAyMzYsIDEwNSwgOTgsIDExNiwgNDksIDc5LCAKLSAgICAyNSwgNTAsIDEyMSwgMjI3LCAxMzQsIDk4LCAxMTYsIDUwLCA3OSwgMjUsIDQ5LCAxMjEsIDIyNywgMTM0LCA5OCwgMTE2LCAKLSAgICAxMjEsIDE1NywgMjUsIDIzNiwgMTA2LCAyMzcsIDQ5LCA5OCwgMTE2LCAxMjEsIDc5LCAyNSwgMjM2LCAxMDYsIDIyNywgCi0gICAgMTM0LCA5OCwgMTE2LCA1MCwgMTU3LCAyNSwgNDksIDEyMSwgMjM3LCA0OSwgOTgsIDExNiwgNDksIDE1NywgMjUsIDUwLCAKLSAgICAxMjEsIDIzNywgNDksIDk4LCAxMTYsIDc5LCAxMjEsIDI1LCAyMzYsIDEwNSwgOTgsIDExNiwgMTU3LCAxMTIsIDI1LCAyMzYsIAotICAgIDEwNSwgOTgsIDExNiwgNDksIDc5LCAyNSwgNTAsIDExMiwgMjI3LCAxMzQsIDk4LCAxMTYsIDUwLCA3OSwgMjUsIDQ5LCAKLSAgICAxMTIsIDIyNywgMTM0LCA5OCwgMTE2LCAxMTIsIDE1NywgMjUsIDIzNiwgMTA2LCAyMzcsIDQ5LCA5OCwgMTE2LCAxMTIsIAotICAgIDc5LCAyNSwgMjM2LCAxMDYsIDIyNywgMTM0LCA5OCwgMTE2LCA1MCwgMTU3LCAyNSwgNDksIDExMiwgMjM3LCA0OSwgOTgsIAotICAgIDExNiwgNDksIDE1NywgMjUsIDUwLCAxMTIsIDIzNywgNDksIDk4LCAxMTYsIDc5LCAxMTIsIDI1LCAyMzYsIDEwNSwgOTgsIAotICAgIDExNiwgMTU3LCA4MCwgMjUsIDIzNiwgMTA1LCA5OCwgMTE2LCA0OSwgNzksIDI1LCA1MCwgODAsIDIyNywgMTM0LCA5OCwgCi0gICAgMTE2LCA1MCwgNzksIDI1LCA0OSwgODAsIDIyNywgMTM0LCA5OCwgMTE2LCA4MCwgMTU3LCAyNSwgMjM2LCAxMDYsIDIzNywgCi0gICAgNDksIDk4LCAxMTYsIDExMiwgNzksIDI1LCAxMjEsIDIzNiwgMTA2LCAyMjcsIDEzNCwgOTgsIDExNiwgMTIxLCA3OSwgMjUsIAotICAgIDExMiwgMjM2LCAxMDYsIDIyNywgMTM0LCA5OCwgMTE2LCA4MCwgNzksIDI1LCAyMzYsIDEwNiwgMjI3LCAxMzQsIDk4LCAKLSAgICAxMTYsIDQ5LCAxMTIsIDc5LCAyNSwgNTAsIDEyMSwgMjI3LCAxMzQsIDk4LCAxMTYsIDUwLCAxMTIsIDc5LCAyNSwgNDksIAotICAgIDEyMSwgMjI3LCAxMzQsIDk4LCAxMTYsIDQ5LCAxMjEsIDc5LCAyNSwgNTAsIDExMiwgMjI3LCAxMzQsIDk4LCAxMTYsIDUwLCAKLSAgICAxMjEsIDc5LCAyNSwgNDksIDExMiwgMjI3LCAxMzQsIDk4LCAxMTYsIDEyMSwgMTU3LCAyNSwgMTEyLCAyMzYsIDEwNiwgCi0gICAgMjM3LCA0OSwgOTgsIDExNiwgMTEyLCAxNTcsIDI1LCAxMjEsIDIzNiwgMTA2LCAyMzcsIDQ5LCA5OCwgMTE2LCA1MCwgMTU3LCAKLSAgICAyNSwgNDksIDgwLCAyMzcsIDQ5LCA5OCwgMTE2LCA0OSwgMTU3LCAyNSwgNTAsIDgwLCAyMzcsIDQ5LCA5OCwgMTE2LCA3OSwgCi0gICAgODAsIDI1LCAyMzYsIDEwNSwgOTgsIDExNiwgMTU3LCA1MiwgMjQ0LCAxNDUsIDIzNiwgMTA1LCA5OCwgMTE2LCA3OSwgNTIsIAotICAgIDI0NCwgMTQ1LCAyMzYsIDEwNSwgOTgsIDExNiwgMTU3LCA1MiwgMjQ0LCAxNDUsIDIwNiwgMzgsIDk4LCAxMTYsIDc5LCA1MiwgCi0gICAgMjQ0LCAxNDUsIDIwNiwgMzgsIDk4LCAxMTYsIDUyLCAyMzYsIDEwNSwgOTgsIDExNiwgNTIsIDIwNiwgMzgsIDk4LCAxMTYsIAotICAgIDEyMSwgMjEyLCAxMjAsIDI1LCA1MCwgMjQyLCA3OCwgOTgsIDExNiwgMTIxLCA1MiwgMjUsIDUwLCAyMTIsIDExOSwgOTgsIAotICAgIDExNiwgNTIsIDEyMSwgMjUsIDIxNiwgMTYsIDk4LCAxMTYsIDEyMSwgMjEyLCAxMjAsIDI1LCA0OSwgMjQyLCA3OCwgOTgsIAotICAgIDExNiwgMTIxLCA1MiwgMjUsIDQ5LCAyMTIsIDExOSwgOTgsIDExNiwgNTIsIDEyMSwgMjUsIDIyNywgMjIyLCA5OCwgMTE2LCAKLSAgICAxMTIsIDIxMiwgMTIwLCAyNSwgNTAsIDI0MiwgNzgsIDk4LCAxMTYsIDExMiwgNTIsIDI1LCA1MCwgMjEyLCAxMTksIDk4LCAKLSAgICAxMTYsIDUyLCAxMTIsIDI1LCAyMTYsIDE2LCA5OCwgMTE2LCAxMTIsIDIxMiwgMTIwLCAyNSwgNDksIDI0MiwgNzgsIDk4LCAKLSAgICAxMTYsIDExMiwgNTIsIDI1LCA0OSwgMjEyLCAxMTksIDk4LCAxMTYsIDUyLCAxMTIsIDI1LCAyMjcsIDIyMiwgOTgsIDExNiwgCi0gICAgODAsIDIxMiwgMTIwLCAyNSwgNTAsIDI0MiwgNzgsIDk4LCAxMTYsIDgwLCA1MiwgMjUsIDUwLCAyMTIsIDExOSwgOTgsIAotICAgIDExNiwgNTIsIDgwLCAyNSwgMjE2LCAxNiwgOTgsIDExNiwgODAsIDIxMiwgMTIwLCAyNSwgNDksIDI0MiwgNzgsIDk4LCAKLSAgICAxMTYsIDgwLCA1MiwgMjUsIDQ5LCAyMTIsIDExOSwgOTgsIDExNiwgNTIsIDgwLCAyNSwgMjI3LCAyMjIsIDk4LCAxMTYsIAotICAgIDEyMSwgMjEyLCAxMjAsIDI1LCAyMzYsIDEwNiwgMjQyLCA3OCwgOTgsIDExNiwgMTIxLCA1MiwgMjUsIDIzNiwgMTA2LCAKLSAgICAyMTIsIDExOSwgOTgsIDExNiwgNTIsIDEyMSwgMjUsIDIzNiwgMTA1LCA5OCwgMTE2LCAxMTIsIDIxMiwgMTIwLCAyNSwgCi0gICAgMjM2LCAxMDYsIDI0MiwgNzgsIDk4LCAxMTYsIDExMiwgNTIsIDI1LCAyMzYsIDEwNiwgMjEyLCAxMTksIDk4LCAxMTYsIDUyLCAKLSAgICAxMTIsIDI1LCAyMzYsIDEwNSwgOTgsIDExNiwgODAsIDIxMiwgMTIwLCAyNSwgMjM2LCAxMDYsIDI0MiwgNzgsIDk4LCAxMTYsIAotICAgIDgwLCA1MiwgMjUsIDIzNiwgMTA2LCAyMTIsIDExOSwgOTgsIDExNiwgNTIsIDgwLCAyNSwgMjM2LCAxMDUsIDk4LCAxMTYsIAotICAgIDE1NywgMjUwLCAxMjksIDEyMSwgMjUsIDIxNiwgMTYsIDk4LCAxMTYsIDE1NywgMjUwLCAxMjksIDEyMSwgMjUsIDIyNywgCi0gICAgMjIyLCA5OCwgMTE2LCAxNTcsIDI1MCwgMTI5LCAxMTIsIDI1LCAyMjcsIDIyMiwgOTgsIDExNiwgMTU3LCAyNTAsIDEyOSwgCi0gICAgMTEyLCAyNSwgMjE2LCAxNiwgOTgsIDExNiwgMTU3LCAyNDMsIDIyOCwgMjA2LCAyMjEsIDUwLCAyMDgsIDE3MywgMjI2LCAKLSAgICAyNTEsIDIyNywgMjIyLCA5OCwgMTE2LCAxNTcsIDI0MywgMjI4LCAyMDYsIDIyMSwgNDksIDIwOCwgMTczLCAyMjYsIDI1MSwgCi0gICAgMjE2LCAxNiwgOTgsIDExNiwgMTU3LCAyNDMsIDIyOCwgMjQ1LCAxMzAsIDk4LCAxMTYsIDE1NywgMjI3LCAyMjIsIDk4LCAKLSAgICAxMTYsIDE1NywgMjA2LCAyMjQsIDk4LCAxMTYsIDE1NywgMjE2LCAxNiwgOTgsIDExNiwgMTU3LCAyNDIsIDcwLCA5OCwgCi0gICAgMTE2LCA3OSwgMjI3LCAyMjIsIDk4LCAxMTYsIDc5LCAyMDYsIDIyNCwgOTgsIDExNiwgNzksIDIxNiwgMTYsIDk4LCAxMTYsIAotICAgIDc5LCAyNDIsIDcwLCA5OCwgMTE2LCAxNTcsIDQ5LCAyNSwgNzksIDIxNiwgMTYsIDk4LCAxMTYsIDE1NywgMTEyLCAyNSwgCi0gICAgNzksIDI0MiwgNzAsIDk4LCAxMTYsIDc5LCA0OSwgMjUsIDE1NywgMjE2LCAxNiwgOTgsIDExNiwgNzksIDExMiwgMjUsIAotICAgIDE1NywgMjQyLCA3MCwgMjA2LCAyMjEsIDE2MiwgMjQ4LCAzMywgMjI2LCAyNTEsIDExOCwgMjQxLCAxMzksIDI0OCwgMzMsIAotICAgIDIyNiwgMjUxLCAxMTgsIDIxNywgNTYsIDI0OCwgMzMsIDIyNiwgMjUxLCAxMjYsIDI0MSwgMTM3LCAyNDgsIDMzLCAyMjYsIAotICAgIDI1MSwgMTYyLCAyNDgsIDMzLCAyMjYsIDI1MSwgMjM5LCAyMzMsIDI0MSwgMTM3LCAyNDgsIDMzLCAyMjYsIDI1MSwgMTI2LCAKLSAgICAyMTcsIDU0LCAyNDgsIDMzLCAyMjYsIDI1MSwgMjEzLCAxMTIsIDI0MSwgMTM3LCAyNDgsIDMzLCAyMzksIDEwMiwgMjQ4LCAKLSAgICAzMywgNDksIDIxMywgMTEyLCAyNDEsIDEzNywgMjQ4LCAzMywgNDksIDEyNiwgMjE3LCA1NCwgMjQ4LCAzMywgNDksIDIzOSwgCi0gICAgMjMzLCAyNDEsIDEzNywgMjQ4LCAzMywgNDksIDE2MiwgMjQ4LCAzMywgNDksIDEyNiwgMjQxLCAxMzcsIDI0OCwgMzMsIDQ5LCAKLSAgICAxMTgsIDIxNywgNTYsIDI0OCwgMzMsIDQ5LCAxMTgsIDI0MSwgMTM5LCAyNDgsIDMzLCA1MCwgMTYyLCAyNDgsIDMzLCAxNTcsIAotICAgIDIxMywgNzksIDIyNSwgMTAsIDIxMywgNzksIDI0NCwgMTUwLCAyMTMsIDc5LCAyMDYsIDIyMSwgMTE4LCAyNDEsIDEzOSwgCi0gICAgMjQ4LCAzMywgNTAsIDExOCwgMjQxLCAxMzksIDI0OCwgMzMsIDIxNywgNjAsIDIyNiwgMjUxLCAyMjcsIDIyMiwgMjE3LCAKLSAgICA2MCwgMjI2LCAyNTEsIDIxNiwgMTYsIDIxNywgNjAsIDIwNiwgMjIxLCAyMjcsIDIyMiwgMjE3LCA2MCwgMjA2LCAyMjEsIAotICAgIDQ5LCAyNSwgMjI2LCAyNTEsIDQ5LCAyNSwgMjI2LCAyNTEsIDIxNiwgMTYsIDIxNywgNjAsIDIwNiwgMjIxLCA0OSwgMjUsIAotICAgIDIyNiwgMjUxLCAyMTYsIDE2LCAyMTcsIDYwLCAyMDYsIDIyMSwgNDksIDI1LCAyMDYsIDIyMSwgNTAsIDI1LCAyMjYsIDI1MSwgCi0gICAgMjI3LCAyMjIsIDIxNywgNjAsIDIwNiwgMjIxLCA0OSwgMjUsIDIwNiwgMjIxLCA1MCwgMjUsIDIyNiwgMjUxLCAyMTYsIDE2LCAKLSAgICAyMTcsIDYwLCAyMDYsIDIyMSwgMjE2LCAxNiwgMjE3LCA2MCwgMjA2LCAyMjEsIDUwLCAyNSwgMjI2LCAyNTEsIDIyNywgCi0gICAgMjIyLCAyMTcsIDYwLCAyMDYsIDIyMSwgNTAsIDI1LCAyMjYsIDI1MSwgNDksIDI1LCAyMjYsIDI1MSwgMjE2LCAxNiwgNjIsIAotICAgIDIxMSwgMTc3LCA2MSwgMjExLCAxNzcsIDYxLCA1MSwgMywgMjE1LCAxODksIDI0NSwgMTY0LCA2MSwgNTEsIDI0NSwgMTk1LCAKLSAgICA2MiwgNSwgMjExLCAxNzcsIDUxLCAzLCAyMzYsIDEwNiwgMjQwLCA5LCA1MSwgMywgODAsIDI0MCwgOSwgNTEsIDMsIDIxOSwgCi0gICAgMjI5LCAyNDUsIDEyNSwgMjQwLCA5LCA1MSwgMywgMjA2LCAyMjEsIDQ5LCAyMDgsIDE3MywgMjI2LCAyNTEsIDUwLCAyNDAsIAotICAgIDksIDUxLCAzLCAyMDYsIDIyMSwgNTAsIDIwOCwgMTczLCAyMjYsIDI1MSwgNDksIDI0MCwgOSwgNTEsIDMsIDI0MywgMjI4LCAKLSAgICAyNDUsIDEyNSwgMjQwLCA5LCA2MiwgNSwgMjExLCAxNzcsIDYxLCA1LCAyMTEsIDE3NywgNjIsIDIxNiwgMTQzLCA2MSwgCi0gICAgMjE2LCAxNDMsIDYyLCA4MCwgMjE2LCAxNDMsIDYxLCA4MCwgMjE2LCAxNDMsIDYyLCAyMTksIDgwLCA2MSwgMjE5LCA4MCwgCi0gICAgNjIsIDIwNiwgMjIzLCAyMDgsIDg1LCA2MSwgMjA2LCAyMjMsIDIwOCwgODUsIDYyLCAyMDYsIDIyMywgNSwgMjA4LCA4NSwgCi0gICAgNjEsIDIwNiwgMjIzLCA1LCAyMDgsIDg1LCA2MiwgMjE2LCAxMSwgMjA4LCA4NSwgNjEsIDIxNiwgMTEsIDIwOCwgODUsIDYyLCAKLSAgICAyMTYsIDExLCA1LCAyMDgsIDg1LCA2MSwgMjE2LCAxMSwgNSwgMjA4LCA4NSwgNjIsIDIxNiwgMTEsIDIxOCwgNjAsIDYxLCAKLSAgICAyMTYsIDExLCAyMTgsIDYwLCA2MiwgMjQyLCA2OSwgMjA4LCA4NSwgNjEsIDI0MiwgNjksIDIwOCwgODUsIDYyLCAyNDIsIAotICAgIDY5LCA1LCAyMDgsIDg1LCA2MSwgMjQyLCA2OSwgNSwgMjA4LCA4NSwgNjIsIDIyNywgMjE3LCAyMDgsIDg1LCA2MSwgMjI3LCAKLSAgICAyMTcsIDIwOCwgODUsIDYyLCAyMjcsIDIxNywgNSwgMjA4LCA4NSwgNjEsIDIyNywgMjE3LCA1LCAyMDgsIDg1LCA2MiwgCi0gICAgMjI3LCAyMTcsIDIxOCwgNjAsIDYxLCAyMjcsIDIxNywgMjE4LCA2MCwgNjIsIDI0MywgMjIxLCA2MSwgMjQzLCAyMjEsIDYxLCAKLSAgICAyNDMsIDIyMiwgMjQ1LCAxOTUsIDYyLCA1LCAyNDMsIDIyMSwgMjM5LCAyNDIsIDIyNiwgMjQ2LCA2MSwgMjQ2LCA2MSwgCi0gICAgMjQyLCA4MywgMjQ2LCA2MSwgMjQ2LCA2MiwgMywgODAsIDI0MCwgOSwgMjQ3LCAxNzMsIDYyLCAyNDYsIDYxLCAyNDYsIDYyLCAKLSAgICAzLCA0OSwgMTYyLCAyNDgsIDQzLCAyNDYsIDYyLCAzLCA1MCwgMTYyLCAyNDgsIDQzLCAyNDYsIDYyLCAzLCAyMjYsIDI1MSwgCi0gICAgMTYyLCAyNDgsIDQzLCAyNDYsIDYyLCAzLCAyMDYsIDIyMSwgMTYyLCAyNDgsIDQzLCAyNDYsIDYyLCAzLCAyMDYsIDIyMSwgCi0gICAgNTAsIDIxNywgNjAsIDI0OCwgNDMsIDI0NiwgNjIsIDMsIDI1MSwgMTUsIDI0NywgMTQ4LCAyMDYsIDIyMSwgNDksIDIxNywgCi0gICAgNjAsIDI0OCwgNDMsIDQ5LCAxNjIsIDYyLCAyNDYsIDYxLCA1MCwgMTYyLCA2MiwgMjQ2LCA2MSwgMjMwLCAyNDAsIDI0NywgCi0gICAgMTc3LCAyMzAsIDI0MCwgNjEsIDI0NiwgNjEsIDIwNiwgMjIxLCAxNjIsIDIzMCwgMjQwLCA2MSwgMjQ2LCA2MSwgMjI2LCAKLSAgICAyNTEsIDE2MiwgMjMwLCAyNDAsIDYxLCAyNDYsIDYxLCAyMDYsIDIyMSwgNDksIDIxNywgNjAsIDI0NiwgNTUsIDI1MCwgCi0gICAgMTI4LCAyMDYsIDIyMSwgNTAsIDIxNywgNjAsIDI0NiwgNTUsIDI1MCwgMTI4LCAyMjYsIDI1MSwgNTAsIDIxNywgNjAsIAotICAgIDI0NiwgNTUsIDI1MCwgMTI4LCAyMjYsIDI1MSwgNDksIDIxNywgNjAsIDI0NiwgNTUsIDI1MCwgMTI4LCAyMDYsIDIyMSwgCi0gICAgMTYyLCAyNDYsIDYxLCAyMjYsIDI1MSwgMTYyLCAyNDYsIDYxLCA2MiwgMjI2LCAyNTEsIDUwLCAyMDgsIDg1LCA2MiwgMjI2LCAKLSAgICAyNTEsIDQ5LCAyMDgsIDg1LCA2MiwgMjA2LCAyMjEsIDQ5LCAyMDgsIDg1LCA2MiwgMjA2LCAyMjEsIDUwLCAyMDgsIDg1LCAKLSAgICA2MSwgMjQ3LCAxNzcsIDUxLCAzLCA0OSwgMTYyLCAyNDgsIDQzLCA1MSwgMywgNTAsIDE2MiwgMjQ4LCA0MywgNTEsIDMsIAotICAgIDIwNiwgMjIxLCA0OSwgMjQzLCAyMjgsIDE2MiwgMjQ4LCA0MywgNTEsIDMsIDIyNiwgMjUxLCA1MCwgMjQzLCAyMjgsIDE2MiwgCi0gICAgMjQ4LCA0MywgNjEsIDUxLCAzLCA4MCwgMjQ4LCA1NSwgMjI3LCAxMTQsIDYxLCAyMDYsIDIyMywgMjA4LCA4NiwgMywgMjQzLCAKLSAgICA4NSwgMjA2LCAyMjMsIDIwOCwgODYsIDMsIDQ5LCAxNjIsIDI0OCwgNDMsIDIwNiwgMjIzLCAyMDgsIDg2LCAzLCA1MCwgCi0gICAgMTYyLCAyNDgsIDQzLCAyMjgsIDgsIDI0NiwgNjEsIDYxLCA1MSwgMywgMjA2LCAyMjEsIDQ5LCAyMTcsIDU5LCA2MSwgNTEsIAotICAgIDMsIDIyNiwgMjUxLCA0OSwgMjE3LCA1OSwgNjEsIDUxLCAzLCAyMjYsIDI1MSwgNTAsIDIxNywgNTksIDYxLCA1MSwgMywgCi0gICAgMjA2LCAyMjEsIDUwLCAyMTcsIDU5LCA2MSwgMjQ2LCA2MiwgMywgMjA2LCAyMjEsIDQ5LCAyMTcsIDU5LCA2MSwgMjQ2LCAKLSAgICA2MiwgMywgMjI2LCAyNTEsIDQ5LCAyMTcsIDU5LCA2MSwgMjQ2LCA2MiwgMywgMjI2LCAyNTEsIDUwLCAyMTcsIDU5LCA2MSwgCi0gICAgMjQ2LCA2MiwgMywgMjA2LCAyMjEsIDUwLCAyMTcsIDU5LCAyMDYsIDIyMSwgNDksIDIwOCwgODUsIDIwNiwgMjIxLCA1MCwgCi0gICAgMjA4LCA4NSwgMjI2LCAyNTEsIDQ5LCAyMDgsIDg1LCA2MSwgMjI1LCAxMCwgMjExLCAxNzcsIDYyLCAyMjUsIDEwLCAyMTEsIAotICAgIDE3NywgNjEsIDIyNSwgMTAsIDUsIDIxMSwgMTc3LCA2MiwgMjI1LCAxMCwgNSwgMjExLCAxNzcsIDIyNiwgMjUxLCA1MCwgCi0gICAgMjA4LCA4NSwgNjIsIDIxMCwgMjE1LCAzLCAyMTYsIDE2MiwgMjQ2LCA3LCAyMDcsIDMsIDIxMiwgMTUsIDI0NSwgMjM2LCAKLSAgICA2MiwgMjExLCA5NCwgNjEsIDIxMSwgOTQsIDIyNywgMTMxLCAyMDksIDE3LCAyMTAsIDIxNCwgMjUwLCA3OCwgMjIxLCAxODgsIAotICAgIDI0NCwgMTksIDIyMSwgMTg4LCAyNDUsIDIwNCwgMjE5LCAyNTAsIDYyLCAyMDksIDE2MSwgNjEsIDIwOSwgMTYxLCAyNDgsIAotICAgIDI0OCwgMjQ3LCAyMzMsIDI0OCwgMjQ4LCA5OCwgMywgMjQ2LCAxNjgsIDI0OCwgMjQ4LCA5OCwgMywgMjAzLCAxOTYsIDIxNCwgCi0gICAgMjU0LCAyMDcsIDQsIDMsIDIxNiwgMTkxLCAyNDIsIDQ4LCAyMzYsIDQ3LCAyNDgsIDEwMiwgNjEsIDIxMiwgMjM3LCAyMTgsIAotICAgIDE1OSwgNjIsIDIxMiwgMjM3LCAyMTgsIDE1OSwgMjEzLCA2OCwgMjE2LCA3MywgMjE1LCAxOTgsIDIzOSwgMjAxLCAyMzcsIAotICAgIDU2LCAyNDcsIDE3NywgNjIsIDQ5LCAyMTgsIDU5LCAyMzEsIDM1LCA2MiwgNTAsIDIxOCwgNTksIDIzMSwgMzUsIDYxLCA0OSwgCi0gICAgMjE4LCA1OSwgMjMxLCAzNSwgNjEsIDExMiwgMjE4LCA1OSwgMjMxLCAzNSwgNjEsIDUwLCAyMTgsIDU5LCAyMzEsIDM1LCAKLSAgICA2MSwgMTIxLCAyMTgsIDU5LCAyMzEsIDM1LCAyMTIsIDYzLCAyNSwgMjQ1LCAxMjksIDI0NywgMTEsIDU0LCAyMTYsIDIwMywgCi0gICAgNTQsIDI0OCwgNjIsIDU0LCAyNDcsIDgzLCAyNTAsIDIwOCwgMjE5LCAyMzAsIDI0NSwgMTMwLCAyNDYsIDE0MywgMjE2LCAKLSAgICA1OSwgMjQ1LCAxMzEsIDc2LCAyMjcsIDksIDI0NSwgMTMxLCA3NiwgMjMwLCAxNTEsIDIxMSwgOTUsIDI1LCAyNDUsIDEzOCwgCi0gICAgMjQwLCA3NSwgOTcsIDI1MSwgMTE1LCAyMTMsIDcwLCAyMzcsIDEzMSwgMjUsIDIxMiwgMTU5LCAyMTksIDMzLCA5NywgMjAzLCAKLSAgICAxLCAyMDMsIDc2LCAyMDgsIDc1LCAzNSwgMjM3LCA1MSwgMjA4LCA3NSwgMzUsIDIyOCwgMzMsIDIwOCwgNzUsIDM1LCAyMzksIAotICAgIDI0OSwgMjA4LCA3NSwgMzUsIDIwOSwgMTgsIDIwOCwgNzUsIDM1LCAyMDQsIDE2LCAyMDgsIDc1LCAzNSwgMjA0LCA4MCwgCi0gICAgMjA4LCA3NSwgMzUsIDIyNCwgMTIsIDIwOCwgNzUsIDM1LCAyNDEsIDE3OSwgMjA0LCAzNywgNzYsIDI0MywgMjQ5LCA2MSwgCi0gICAgMjM5LCAxMTQsIDI0MCwgMTAyLCA2MSwgMjEyLCAzMCwgMjQwLCAxMDIsIDYyLCAyMTIsIDMwLCAyNDAsIDEwMiwgNjEsIAotICAgIDIxMCwgMjE1LCAzLCAyMTYsIDE2MiwgMjM5LCAyNDUsIDIxNywgNTYsIDIyNCwgMjksIDIyOCwgMSwgMjE3LCA1NiwgMjI0LCAKLSAgICAyOSwgMjI0LCAyMzQsIDI0MCwgNDMsIDU0LCAyNDEsIDE3OSwgMjI1LCAxMjcsIDU0LCAyMzAsIDY5LCAyMTQsIDIxOCwgCi0gICAgMjA2LCAyMDUsIDIyMiwgMjI0LCAyMTgsIDczLCAyNTAsIDExNCwgMjA5LCAyMDUsIDIzOCwgMTc4LCAyNDcsIDU3LCAyMjcsIAotICAgIDE4NCwgMjA1LCAyMDIsIDIyNywgMTQ1LCAyMTQsIDE4NywgMjE1LCAyMCwgMjQ3LCA0MywgMjUwLCAxNDUsIDIxOCwgMTA4LCAKLSAgICA2MSwgMjQ2LCAxNTAsIDIyOSwgODEsIDYxLCAyNDYsIDE1MCwgMjE3LCA0OCwgNjEsIDI0NiwgMTUwLCAyMTUsIDIwNiwgNjEsIAotICAgIDI0NiwgMTUwLCAyNDgsIDU0LCA2MSwgMjQ2LCAxNTAsIDIyOSwgMzEsIDYxLCAyNDYsIDE1MCwgMjE5LCA0NSwgNjIsIDI0NiwgCi0gICAgMTUwLCAyMjksIDgxLCA2MiwgMjQ2LCAxNTAsIDIxNywgNDgsIDYyLCAyNDYsIDE1MCwgMjE1LCAyMDYsIDYyLCAyNDYsIAotICAgIDE1MCwgMjQ4LCA1NCwgNjIsIDI0NiwgMTUwLCAyMjksIDMxLCA2MiwgMjQ2LCAxNTAsIDIxOSwgNDUsIDYyLCAyMTEsIDIyNiwgCi0gICAgMjEwLCAyMjcsIDYxLCAyMzcsIDU2LCAyMTAsIDIyNywgNjEsIDI0MywgMjIyLCAyMTAsIDIyNywgNjIsIDI0NiwgNSwgMjEwLCAKLSAgICAyMjcsIDYxLCAyMTEsIDIyNiwgMjEwLCAyMjcsIDYyLCAyMzcsIDU2LCAyMTAsIDIyNywgNjIsIDI0MywgMjIyLCAyMTAsIAotICAgIDIyNywgNjEsIDI0NiwgNSwgMjEwLCAyMjcsIDIzNiwgNDcsIDIxMSwgMTgyLCAyMTcsIDU2LCAyMjEsIDE2MCwgMjQxLCAKLSAgICAxMzksIDIyMSwgMTYwLCAyNDgsIDE1OCwgMjQxLCAxMzksIDIyMSwgMTU1LCAyNDgsIDE1OCwgMjEyLCA4MSwgMjIxLCAxNTUsIAotICAgIDIyMywgMTk1LCAyMzksIDIxNywgNTQsIDIyMywgMTk1LCAyMjMsIDY2LCA1NCwgMjIzLCAxOTUsIDIxMywgNTcsIDU0LCAKLSAgICAyMDQsIDQ2LCAyMTAsIDg5LCAyNDUsIDEzMCwgMjQxLCAxNzYsIDIxMCwgODksIDI0NSwgMTMwLCAyMDYsIDIzMywgMjE2LCAKLSAgICAxMzksIDk3LCAyMTYsIDEzOSwgMTYsIDM1LCAyMDcsIDEyMCwgMjE4LCA5MCwgMjE2LCAxMzksIDE2LCAzNSwgMjA3LCAxMTgsIAotICAgIDIxOCwgOTAsIDIxNiwgMTM5LCAxNiwgMzUsIDIwNywgMTE3LCAyMTgsIDkwLCAyMTYsIDEzOSwgMTYsIDM1LCAyMDcsIDExNSwgCi0gICAgMjE4LCA5MCwgMjE2LCAxMzksIDE2LCAzNSwgMjA3LCAxMTMsIDIxOCwgOTAsIDIxNiwgMTM5LCAxNiwgMzUsIDIwNywgMTExLCAKLSAgICAyMTgsIDkwLCAyMTYsIDEzOSwgMTYsIDM1LCAyMDcsIDEwOSwgMjE4LCA5MCwgMjE2LCAxMzksIDE2LCAzNSwgMjM4LCAxNzYsIAotICAgIDIyNSwgNzAsIDYyLCAyMDYsIDIzMywgMjE2LCAxMzksIDk3LCAyMTYsIDE0MCwgMjE5LCA5NSwgOTcsIDIxOSwgNjgsIDIxOSwgCi0gICAgOTUsIDk3LCAyMTgsIDIzOCwgMjE5LCA5NSwgNTQsIDIwNCwgMzUsIDk3LCAyNDMsIDIxNCwgMjQwLCAxMDEsIDI0MywgMjE0LCAKLSAgICAyNDAsIDEwMCwgMjQzLCAyMTQsIDI0MCwgOTksIDI0MywgMjE0LCAyNDAsIDk4LCAyNDMsIDIxNCwgMjQwLCA5NywgMjQzLCAKLSAgICAyMTQsIDI0MCwgOTYsIDYxLCAyNDYsIDYyLCAzLCA3MCwgMjE2LCAxNiwgNjEsIDI0NiwgNjIsIDMsIDEyMCwgMjQzLCA4MywgCi0gICAgNjIsIDI0NiwgNjIsIDMsIDYxLCA3MCwgMjE2LCAxNiwgNjIsIDI0NiwgNjIsIDMsIDEyMCwgNjEsIDI0MywgODMsIDIyNCwgCi0gICAgNDUsIDM1LCAyMDMsIDc2LCAyMjQsIDQ1LCAzNSwgMjAzLCAwLCAyNDMsIDE5NSwgMzUsIDIzNywgMjQ4LCAyMDMsIDc2LCAKLSAgICAyNDMsIDE5NSwgMzUsIDIyNywgMTc3LCAyMDMsIDAsIDI0MywgMTk1LCAzNSwgMjI3LCAxNzcsIDIwMywgNzYsIDI0MywgCi0gICAgMTk1LCAzNSwgMjM3LCAyNDgsIDIwMywgMCwgNjEsIDIzOSwgMjI1LCA2MiwgMjM5LCAyMjUsIDIzNywgMTMxLCAyNSwgMjE4LCAKLSAgICAxNjMsIDI1MCwgMjI4LCAyNDUsIDEyOCwgMjEwLCAxNTQsIDIxMSwgMTAzLCA3NiwgMjUxLCA5MiwgMjE0LCAyMDMsIDI1MSwgCi0gICAgMjksIDIzOSwgMTk3LCAyMzgsIDE4NywgMjExLCAxMDMsIDc2LCAyMzcsIDI2LCAyNTAsIDQyLCA5NywgMjM5LCAyMTMsIAotICAgIDIxOSwgMjA3LCA2MSwgMjExLCA5NCwgMTI2LCAyMjcsIDEwOSwgMjQ1LCAxODEsIDIxNiwgMTYsIDEyNiwgMjI3LCAxMDksIAotICAgIDI0NSwgMTgxLCAyMjcsIDIyMiwgMjA0LCA5MSwgNTQsIDEzOCwgMjA1LCAxNzksIDU0LCAyNDIsIDc1LCAyNDAsIDQzLCA1NCwgCi0gICAgMjQyLCA3NSwgMjI1LCAxMjcsIDU0LCAyMzAsIDI1MCwgMjQwLCA0MywgMjUsIDIyNSwgMTI3LCA1NCwgMjI1LCAxMjcsIDI1LCAKLSAgICAyNDAsIDQzLCA1NCwgMjI1LCAxMjcsIDMsIDIxMSwgMzIsIDU0LCAyMjUsIDEyNywgMywgMjExLCAzMiwgMjUsIDIyNSwgCi0gICAgMTI3LCAyNSwgMjQwLCA0MywgNTQsIDgwLCAyMjUsIDEyNywgMywgMjExLCAzMiwgNTQsIDIzNiwgMTA2LCAyMjUsIDEyNywgCi0gICAgMywgMjExLCAzMiwgNTQsIDIyNSwgMTAsIDYxLCAyNDYsIDYxLCAyMjUsIDEwLCA2MiwgMjQ2LCA2MSwgMjI1LCAxMCwgNSwgCi0gICAgNjEsIDI0NiwgNjEsIDIyNSwgODYsIDk3LCAyNDMsIDEzNSwgOTcsIDIwNiwgMjMwLCAyMTksIDY3LCA5NywgMjQ1LCAyNDcsIAotICAgIDIzOSwgOTcsIDIwNiwgMjAxLCAyMjIsIDIxNywgMjQ2LCAyMDMsIDIxOSwgMTM3LCAyMzAsIDc1LCAyMDUsIDI0MCwgMjQ2LCAKLSAgICAxMjMsIDYyLCAyMjQsIDMwLCAyMjcsIDEyOCwgMjEzLCAxMDEsIDIxMywgMTQwLCAyMTcsIDM4LCAyMTMsIDEyMCwgMjEyLCAKLSAgICAxMCwgMjQ4LCAyNTEsIDI0OCwgMjE3LCAxMDMsIDIyOSwgMTUxLCA2MSwgMjQyLCA1OCwgMjI1LCAxMjIsIDYxLCAyNDIsIAotICAgIDU4LCAyMjksIDgxLCA2MiwgMjQyLCA1OCwgMjI1LCAxMjIsIDYyLCAyNDIsIDU4LCAyMjksIDgxLCAyMTIsIDE2LCAyMDQsIAotICAgIDMsIDIxMiwgMTksIDIxMCwgMjE1LCAyNDgsIDEzNSwgMjQ2LCA3LCAyMTYsIDE5MCwgNjIsIDIxMiwgMTUsIDIwOSwgMTksIAotICAgIDI0NiwgOCwgMjUsIDIxNiwgMTkwLCAyMDcsIDE3NCwgNjEsIDIxMiwgMjM3LCAyMTgsIDE1OSwgMjA3LCAxNzQsIDYyLCAKLSAgICAyMTIsIDIzNywgMjE4LCAxNTksIDYxLCAyNDMsIDIyMiwgMjMxLCA1MCwgMjExLCAxNzcsIDI0NSwgMTI0LCAyMjgsIDE1LCAKLSAgICAyNDMsIDE2MiwgMjQ3LCAzOSwgMjE5LCAyNTMsIDIxOCwgMTYzLCAyNDcsIDQwLCAyMTIsIDQ4LCAyMzcsIDM2LCAzLCA2MSwgCi0gICAgMjQ1LCAxMzAsIDQzLCAyNDUsIDEyNCwgMjI4LCAxNSwgMjQ2LCAxOTUsIDIyMSwgMTkyLCAyNDEsIDYyLCAyNTAsIDI1NSwgCi0gICAgMjIwLCAyNiwgNDksIDIwNCwgNjYsIDIwOCwgMTEzLCA2MiwgMjA3LCAxMzEsIDQ5LCAyMDQsIDY2LCAyMDgsIDExMywgNjEsIAotICAgIDIwNywgMTMxLCA0OSwgMjA0LCA2NiwgMjA4LCAxMTMsIDYyLCA0OSwgMjI4LCAxNiwgMjI0LCAyMzMsIDYxLCA0OSwgMjI4LCAKLSAgICAxNiwgMjI0LCAyMzMsIDI0MiwgNTMsIDIxMiwgNDAsIDU0LCA3OSwgNjEsIDI0MiwgNjksIDIwOCwgODUsIDQ5LCAyNDYsIAotICAgIDE2LCAyNDEsIDYyLCAxMDMsIDIxNCwgMjU0LCAyNDAsIDg0LCAyNDMsIDIyOCwgMjMxLCA1MCwgNjEsIDI0NiwgNjIsIDIzMSwgCi0gICAgNTAsIDYyLCAyMTEsIDE3NywgNjIsIDIwOCwgNTAsIDIxNiwgODQsIDQ5LCAyNDEsIDYxLCAyMTYsIDg0LCA0OSwgMjQxLCAKLSAgICA2MCwgMjUwLCA1NCwgMTYsIDM1LCAyMDYsIDIwNSwgNzksIDI0NiwgNjIsIDMsIDIxMSwgMzIsIDI1LCAxMjAsIDE4NywgNTUsIAotICAgIDIxOCwgMjU0LCAyMTYsIDEzLCAyMzAsIDI1MiwgMjE4LCAyNTQsIDIyNywgMjE5LCAyMzAsIDI1MiwgMjE4LCAyNTQsIDIzMCwgCi0gICAgMjM5LCAyMTgsIDI1NCwgNjIsIDI0NSwgMTMxLCAyMjAsIDMyLCAyMTMsIDgsIDIxMiwgMjUyLCAyMTIsIDIwMywgMjQ2LCAKLSAgICA5MCwgMjQ3LCAxOSwgMjM2LCAyMzEsIDIxMiwgODksIDIzOCwgMTg4LCAyMDQsIDMsIDIzNiwgMjMsIDIzOCwgMTg4LCAzLCAKLSAgICAyMzcsIDEwMSwgMjI1LCAxMDcsIDE2LCAzNSwgMjI3LCAxMzMsIDIyNCwgMTIsIDIwNywgNCwgMjIwLCAzMiwgMjM3LCAyMzksIAotICAgIDIzOSwgMTQ4LCAyMzksIDIyNiwgMjMxLCA1MCwgMjM2LCAxMjYsIDI0MCwgMzQsIDIxNSwgMTUsIDUxLCAyMzksIDE0NywgCi0gICAgMjQ1LCAxNjQsIDIxMiwgNjYsIDIzNSwgMTYzLCAyMTIsIDY5LCAyMTgsIDIzMCwgMywgMjQ4LCAyNTEsIDIwOSwgMTQ0LCAKLSAgICAyMzAsIDE2OSwgMjQ4LCAyMzYsIDk3LCAyMzcsIDU5LCAyMzcsIDI1MCwgOTcsIDIzOSwgMTA1LCAyMTcsIDE4MCwgMjQ1LCAKLSAgICAxMDAsIDIyMCwgMzIsIDYyLCAyMTEsIDE3NywgNjEsIDIzOSwgMjI2LCAzLCAyMzYsIDEwNiwgMTAxLCA2MiwgMjExLCAzMywgCi0gICAgNjIsIDIxNSwgMjUsIDIxNCwgMTkwLCAyMDYsIDIyMSwgMjQ4LCAzOCwgMjE0LCAxOTAsIDYyLCAyMTQsIDE5MCwgMjI2LCAKLSAgICAyNTEsIDI0OCwgMzgsIDIxNCwgMTkwLCA2MSwgMjE0LCAxOTAsIDYxLCA3OSwgMjQ2LCAxNjksIDgyLCAyMDksIDE2MiwgCi0gICAgMjI3LCA0NywgNTQsIDIwOSwgMjIxLCAyNDIsIDUyLCAyNTEsIDUyLCAyNDEsIDU3LCAyMTYsIDE4OCwgMjM5LCAyMzgsIAotICAgIDIxNiwgMTg4LCAyMzcsIDEyMywgMjA1LCAyMjgsIDIzNywgMTIzLCAyMDMsIDIyMCwgMjM3LCAxMjMsIDIyNiwgMjUxLCA1MCwgCi0gICAgMjE5LCA4LCAyMTksIDgsIDIwNiwgMjIxLCA1MCwgMjE5LCA4LCA2MSwgMjIyLCA5NywgNjIsIDIyMiwgOTcsIDI0NiwgMTY5LCAKLSAgICA4MiwgNzksIDI0NiwgMTY5LCA4MiwgMjIzLCAyMjQsIDIwMywgMTk2LCA3OSwgMjIzLCAyMjQsIDIwMywgMTk2LCAyNDgsIAotICAgIDI0OCwgMjAzLCAxOTYsIDc5LCAyNDgsIDI0OCwgMjAzLCAxOTYsIDIxOSwgMjA3LCAzMCwgMjQ1LCAxMzAsIDc5LCAzMCwgCi0gICAgMjQ1LCAxMzAsIDE3MSwgMjQ2LCAyMTgsIDI0NSwgMTMwLCA3OSwgMTcxLCAyNDYsIDIxOCwgMjQ1LCAxMzAsIDgsIDI0NSwgCi0gICAgMTMwLCAyMTMsIDc3LCA2MSwgOCwgMjQ1LCAxMzAsIDIxOSwgMjA3LCA4LCAyNDUsIDEzMCwgMjI1LCAxMjQsIDI0NSwgMTMwLCAKLSAgICAyMTEsIDk1LCA3NiwgMjQ0LCAxMzcsIDIzOSwgMTQ3LCAyMDksIDE4MCwgMjUwLCA1OSwgMjM5LCAxNDcsIDI0OCwgMjQ5LCAKLSAgICAyNTAsIDU5LCA3OSwgMjM5LCAxNDcsIDI0OCwgMjQ5LCAyNTAsIDU5LCAyMzksIDE0NywgMjQ2LCAzLCAyNTAsIDU5LCA2MiwgCi0gICAgMjM5LCAxNDcsIDIxOCwgNjEsIDIxMSwgOTQsIDYxLCAyMzksIDE0NywgMjE4LCA2MSwgMjExLCA5NCwgMjExLCAyMjEsIAotICAgIDIxMSwgNDIsIDIxOSwgMjA3LCA2MSwgMjExLCA5NCwgNDMsIDYxLCAyMTEsIDk0LCAxNzEsIDI0NiwgMjE4LCA2MiwgMjExLCAKLSAgICA5NCwgNjIsIDI0NiwgMjE4LCA2MSwgMjExLCA5NCwgMjE5LCAyMDcsIDYyLCAyMTEsIDk0LCA3OSwgMjE5LCAyMDcsIDYyLCAKLSAgICAyMTEsIDk0LCAyMTgsIDExOCwgMjExLCA5NCwgMjEzLCA3NywgNjEsIDIxMSwgOTQsIDc5LCAyNTAsIDU5LCAxNzEsIDI0NiwgCi0gICAgMjE4LCAyNTAsIDU5LCAyNDEsIDE0MywgMjExLCAxOTEsIDI1MCwgNTksIDI0MSwgMTQzLCAyMTgsIDYxLCA2MiwgMjExLCAKLSAgICA5NCwgMjQxLCAxNDMsIDIxOCwgNjEsIDIxOCwgMTE4LCAyMTEsIDk0LCAyMTIsIDg4LCAyMTgsIDYxLCA2MiwgMjExLCA5NCwgCi0gICAgMjQxLCAxNDMsIDIxOCwgNjEsIDIxNiwgMTQxLCA2MiwgMjExLCA5NCwgNzksIDI0MSwgMTQzLCAyMTgsIDYxLCAyMTYsIAotICAgIDE0MSwgNjIsIDIxMSwgOTQsIDIwNywgMTU1LCAyMTgsIDYxLCA2MiwgMjExLCA5NCwgMjEyLCA4MywgMjE4LCA2MSwgMjUwLCAKLSAgICA1OSwgMjA5LCAxODAsIDI1MCwgNTksIDE3MSwgMjQ2LCAyMTgsIDIwOSwgMTgwLCAyNTAsIDU5LCA3OSwgMjA5LCAxODAsIAotICAgIDI1MCwgNTksIDIxMiwgODgsIDIxOCwgMjE4LCA2MiwgMjUsIDYxLCAyMzksIDIwMCwgNjIsIDIzOSwgMjAwLCA2MSwgMjM5LCAKLSAgICAyMDAsIDI0MSwgMTQzLCAyMTgsIDIxOCwgMjE5LCAyMDcsIDYyLCAyMzksIDIwMCwgNDMsIDE3MSwgMjQ2LCAyMTgsIDI0MSwgCi0gICAgMTQzLCAyMTgsIDYxLCAyMTEsIDk0LCA3OSwgMjA5LCAxODAsIDIxOCwgMTE4LCAyNTAsIDU5LCAyMTIsIDE3LCAyMDgsIAotICAgIDI0NCwgMjA4LCA3OCwgMjEyLCAxNywgNzksIDI0NiwgMTQ2LCAyMTIsIDE3LCAyMTEsIDIyMywgNzksIDIxMSwgMjIzLCAKLSAgICAyNDgsIDI0OSwgMjUwLCA1OSwgMjQxLCAxNDMsIDIwOSwgMTgwLCAyMTcsIDIxMywgMjUwLCA1OSwgNzksIDI0MSwgMTQzLCAKLSAgICAyMDksIDE4MCwgMjE3LCAyMTMsIDI1MCwgNTksIDI0NSwgMTMxLCA4MiwgMjEzLCA3NywgNjEsIDI0NiwgNjEsIDE4MiwgCi0gICAgMTAzLCAyNDUsIDEzMSwgODIsIDIyNiwgMjUxLCA1MCwgMjQyLCA1MCwgNjEsIDIxMSwgMTc3LCAyMDYsIDIyMSwgNTAsIAotICAgIDI0MiwgNTAsIDYxLCAyMTEsIDE3NywgMjI2LCAyNTEsIDUwLCAyMTMsIDc3LCA2MSwgMjExLCAxNzcsIDIwNiwgMjIxLCA1MCwgCi0gICAgMjEzLCA3NywgNjEsIDIxMSwgMTc3LCA2MiwgMjE3LCA0NywgMTMxLCAyMTksIDIzMywgNjEsIDIxNywgNDcsIDEzMSwgMjE5LCAKLSAgICAyMzMsIDYxLCAyNDAsIDIxMiwgMTMxLCAyMTksIDIzMywgNjIsIDI0MywgMjIyLCAyMjQsIDEwMywgNjEsIDIwMywgMTk2LCAKLSAgICA3OSwgMjQwLCAyMTIsIDEzMSwgOTcsIDE1NywgODAsIDE0MiwgMjI1LCAxMCwgODAsIDE0MiwgNzksIDgwLCAxNDIsIDc5LCAKLSAgICAyMTIsIDEyMCwgMjA3LCAxNzQsIDI0NSwgMjM0LCAyMTcsIDMxLCAxMzEsIDIxOSwgMjMzLCA3OSwgMjEyLCAxMjAsIDI0NSwgCi0gICAgMjM0LCAyMTcsIDMxLCAxMzEsIDIxOSwgMjMzLCA3OSwgNTIsIDIwNywgMTc0LCAyNDUsIDIzNCwgMjE3LCAzMSwgMTMxLCAKLSAgICAyMTksIDIzMywgNzksIDUyLCAyNDUsIDIzNCwgMjE3LCAzMSwgMTMxLCAyMTksIDIzMywgNzksIDEyNCwgMjEyLCAxMjAsIAotICAgIDI0NSwgMjM0LCAyMTcsIDMxLCAxMzEsIDIxOSwgMjMzLCA3OSwgMTI0LCA1MiwgMjQ1LCAyMzQsIDIxNywgMzEsIDEzMSwgCi0gICAgMjE5LCAyMzMsIDI0NSwgODYsIDIxMSwgNzgsIDIxOSwgODksIDIsIDIxOSwgMjMzLCA3OSwgMjQwLCAyMTIsIDEzMSwgMjE5LCAKLSAgICAyMzMsIDc5LCAyMzcsIDU2LCAyNDAsIDIxMiwgMTMxLCAyMTksIDIzMywgNzksIDYyLCAyMzcsIDU1LCAyMTUsIDE5OCwgNzksIAotICAgIDYyLCAyMzcsIDU2LCAyNDcsIDE3NywgMjM5LCAyMDEsIDIzNywgNTUsIDIxNSwgMTk4LCAyMzksIDIwMSwgMjM3LCA1NiwgCi0gICAgMjQ3LCAxNzcsIDIyNSwgMTAsIDQ5LCAyMTksIDc3LCAyMTksIDIzMywgMjI1LCAxMCwgNTAsIDIxOSwgNzcsIDIxOSwgMjMzLCAKLSAgICAyMjUsIDEwLCAyMzksIDIxNCwgNDksIDIxOSwgNzcsIDIxOSwgMjMzLCAyMjUsIDEwLCAyMzksIDIxNCwgNTAsIDIxOSwgNzcsIAotICAgIDIxOSwgMjMzLCAyMjUsIDEwLCAyMjcsIDIxNywgMjUwLCAyMTgsIDI0NywgMjI3LCAyMTksIDIzMywgMjI1LCAxMCwgMjE2LCAKLSAgICAxMSwgMjUwLCAyMTgsIDI0NywgMjI3LCAyMTksIDIzMywgNzksIDIyNywgMjE3LCAyNTAsIDIxOCwgMjE3LCAzMSwgMTMxLCAKLSAgICAyMTksIDIzMywgNzksIDIxNiwgMTEsIDI1MCwgMjE4LCAyMTcsIDMxLCAxMzEsIDIxOSwgMjMzLCA3OSwgMjI3LCAyMTcsIAotICAgIDI1MCwgMjE4LCAyNDcsIDIyNywgMjE5LCAyMzMsIDc5LCAyMTYsIDExLCAyNTAsIDIxOCwgMjQ3LCAyMjcsIDIxOSwgMjMzLCAKLSAgICAxNTcsIDQ5LCAyMDgsIDEzMywgMjEzLCAzMywgMjQ3LCAyMjcsIDIxOSwgMjMzLCAxNTcsIDUwLCAyMDgsIDEzMywgMjEzLCAKLSAgICAzMywgMjQ3LCAyMjcsIDIxOSwgMjMzLCAyMjUsIDEwLCA0OSwgMjQ1LCA5MywgMjQ3LCAyMjcsIDIxOSwgMjMzLCAyMjUsIAotICAgIDEwLCA1MCwgMjQ1LCA5MywgMjQ3LCAyMjcsIDIxOSwgMjMzLCAyNDMsIDE3NCwgMTgyLCA0MywgMTcsIDEwNSwgMjQzLCAKLSAgICAxNzQsIDE4MiwgNDMsIDE3LCAxMDgsIDI0MywgMTc0LCAxODIsIDQzLCAxNywgMTQ3LCAyNDMsIDE3NCwgMTgyLCA0MywgMTcsIAotICAgIDE0OSwgMjQzLCAxNzQsIDE4MiwgNDMsIDE3LCAxNzAsIDI0MywgMTc0LCAxODIsIDQzLCAxNywgMTk1LCAyNDMsIDE3NCwgCi0gICAgMTgyLCA0MywgMTcsIDIxMywgMTExLCAyNDMsIDE3NCwgMTgyLCA0MywgMTcsIDE5OSwgMjQzLCAxNzQsIDE4MiwgNDMsIDE3LCAKLSAgICAyMjIsIDYzLCAyNDMsIDE3NCwgMTgyLCA0MywgNDIsIDIwOSwgMTUyLCAyNDMsIDE3NCwgNDMsIDQxLCAxNywgMTA1LCAyNDMsIAotICAgIDE3NCwgNDMsIDQxLCAxNywgMTA4LCAyNDMsIDE3NCwgNDMsIDQxLCAxNywgMTQ3LCAyNDMsIDE3NCwgNDMsIDQxLCAxNywgCi0gICAgMTQ5LCAyNDMsIDE3NCwgNDMsIDQxLCAxNywgMTcwLCAyNDMsIDE3NCwgNDMsIDQxLCAxNywgMTk1LCAyNDMsIDE3NCwgNDMsIAotICAgIDQxLCAxNywgMjEzLCAxMTEsIDI0MywgMTc0LCA0MywgNDEsIDE3LCAxOTksIDI0MywgMTc0LCA0MywgNDEsIDE3LCAyMjIsIAotICAgIDYzLCAyNDMsIDE3NCwgNDMsIDQxLCA0MiwgMjA5LCAxNTIsIDI0MywgMTc0LCAxODIsIDQzLCA0MSwgMTcsIDEwNSwgMjQzLCAKLSAgICAxNzQsIDE4MiwgNDMsIDQxLCAxNywgMTA4LCAyNDMsIDE3NCwgMTgyLCA0MywgNDEsIDE3LCAxNDcsIDI0MywgMTc0LCAxODIsIAotICAgIDQzLCA0MSwgMTcsIDE0OSwgMjQzLCAxNzQsIDE4MiwgNDMsIDQxLCAxNywgMTcwLCAyNDMsIDE3NCwgMTgyLCA0MywgNDEsIAotICAgIDE3LCAxOTUsIDI0MywgMTc0LCAxODIsIDQzLCA0MSwgMTcsIDIxMywgMTExLCAyNDMsIDE3NCwgMTgyLCA0MywgNDEsIDE3LCAKLSAgICAxOTksIDI0MywgMTc0LCAxODIsIDQzLCA0MSwgMTcsIDIyMiwgNjMsIDI0MywgMTc0LCAxODIsIDQzLCA0MSwgNDIsIDIwOSwgCi0gICAgMTUyLCA3OSwgMjA0LCAyNiwgODYsIDQ3LCA3OSwgOTEsIDU0LCA3OSwgMjI0LCAxMDMsIDU0LCA3OSwgMjQzLCAxMzcsIDU0LCAKLSAgICA3OSwgMjExLCAyMzgsIDI0MSwgMTc2LCA0NywgNzksIDg2LCA0NywgNzksIDE1MywgMjQxLCAxNzYsIDQ3LCAyNDIsIDYzLCAKLSAgICAyMTgsIDYzLCA4NiwgNDcsIDc5LCAyMTUsIDE5MCwgODYsIDQ3LCAyMDgsIDg0LCA4NiwgNDcsIDc5LCAyMDgsIDg0LCA4NiwgCi0gICAgNDcsIDI0NCwgMTQzLCAyMDgsIDg0LCA4NiwgNDcsIDc5LCAyNDQsIDE0MywgMjA4LCA4NCwgODYsIDQ3LCA2MiwgODYsIDQ3LCAKLSAgICAyMDksIDMxLCAyMDgsIDE0MywgODYsIDI1MCwgOTQsIDIwOSwgMzEsIDI0NywgMjQ2LCA4NiwgMjUwLCA5NCwgNjIsIDg2LCAKLSAgICAyNTAsIDk0LCA3OSwgNjIsIDI0NSwgODYsIDE4MywgMjUsIDg2LCA0NywgNzksIDYyLCAyNDUsIDg2LCAxNzcsIDI1LCA4NiwgCi0gICAgNDcsIDIxMSwgMTc0LCA2MiwgODYsIDQ3LCA3OSwgMjQ1LCAyMTcsIDYyLCA4NiwgNDcsIDIxNiwgMTAsIDYxLCA4NiwgNDcsIAotICAgIDIyNywgMjE2LCA2MSwgODYsIDQ3LCAyNDksIDI0LCAyMTMsIDc3LCA2MSwgODYsIDQ3LCAyMzksIDExNywgMjEzLCA3NywgCi0gICAgNjEsIDg2LCA0NywgNzksIDIyNiwgMjUxLCAyMTYsIDksIDYxLCA4NiwgNDcsIDc5LCAyMDYsIDIyMSwgMjE2LCA5LCA2MSwgCi0gICAgODYsIDQ3LCAyMjEsIDE2MiwgMjI2LCAyNTEsIDIxNiwgOSwgNjEsIDg2LCA0NywgMjQ1LCA5MywgMjI3LCAxNCwgMjIxLCAKLSAgICAxNjIsIDIwNiwgMjIxLCAyMTYsIDksIDYxLCA4NiwgNDcsIDQzLCA3OSwgNjEsIDg2LCA0NywgMjA0LCAzMiwgODYsIDQ3LCAKLSAgICAyNDgsIDQyLCAyMTEsIDIzOCwgMjQxLCAxNzYsIDQ3LCAyNDgsIDQyLCA4NiwgNDcsIDI0OCwgNDIsIDE1MywgMjQxLCAxNzYsIAotICAgIDQ3LCA3OSwgMjQ4LCA0MiwgMjExLCAyMzgsIDI0MSwgMTc2LCA0NywgNzksIDI0OCwgNDIsIDg2LCA0NywgNzksIDI0OCwgCi0gICAgNDIsIDE1MywgMjQxLCAxNzYsIDQ3LCAyMDksIDE4MiwgODYsIDQ3LCA3OSwgMjA5LCAxODEsIDg2LCA0NywgMjA0LCA1NiwgCi0gICAgODYsIDQ3LCA3OSwgMjA0LCA1NiwgODYsIDQ3LCAyMjAsIDMsIDg2LCA0NywgNTIsIDI0NSwgOTMsIDIyNywgMTQsIDEyNiwgCi0gICAgMjQzLCAxODQsIDI1MCwgMjE3LCA2MSwgMjA4LCA4NiwgMjQ1LCAxOTUsIDUsIDYxLCAyMDgsIDg1LCAyMTgsIDIzMywgMTcxLCAKLSAgICAyMTAsIDI0NCwgMTcxLCAyMTAsIDE5NywgNDksIDIxNSwgOTMsIDI0OSwgMTEsIDI0NCwgNDMsIDUwLCAyMTUsIDkzLCAyNDksIAotICAgIDExLCAyNDQsIDQzLCAyMTksIDI0NSwgMywgNzAsIDIzMSwgNiwgMjE2LCA3NCwgMjEyLCAxLCAyMTcsIDI0OCwgMjEwLCAKLSAgICAyNDQsIDIxMCwgMTk4LCAyMTcsIDI0OCwgMjEyLCAwLCA4MCwgMjQ4LCAyMzEsIDMsIDIzNiwgMTA2LCA5NSwgMTMsIDIxNSwgCi0gICAgMjQ1LCAyNDMsIDIyNywgMTYzLCAyNDMsIDEzNiwgMTMsIDI0MCwgODQsIDI0MywgMjI3LCAxMDMsIDIyNywgMzcsIDI1MCwgCi0gICAgMjI2LCAxMDMsIDIyNywgMzcsIDIxOSwgMjQ0LCA2MSwgMjQzLCAyMjIsIDMsIDI0NiwgMjE2LCAyNDMsIDg1LCAyNSwgMywgCi0gICAgMjQzLCA4NSwgMjQxLCAxMTUsIDc2LCAyMjAsIDEsIDIwNiwgMjEyLCAyMjYsIDI1MSwgNTAsIDI0NSwgMTY2LCAzLCAyNDMsIAotICAgIDg1LCAyMDYsIDIyMSwgNDksIDI0NSwgMTY2LCAzLCAyNDMsIDg1LCA0OSwgMjE5LCAyMDksIDIzMCwgOTksIDUwLCAyMTksIAotICAgIDIwOSwgMjMwLCA5OSwgMjM5LCAxMDIsIDIxOSwgMjA5LCAyMzAsIDk5LCAyMjgsIDgsIDExMiwgMjEwLCAzLCAyMjgsIDgsIAotICAgIDEyMSwgMjEwLCAzLCA0OSwgMjUsIDUwLCA1MiwgMjA3LCAxNzMsIDQ5LCAyNSwgNTAsIDIxMCwgMywgNDksIDIyMywgMjI4LCAKLSAgICAxNjMsIDUwLCAyMTAsIDMsIDE2MywgNDksIDIxMCwgMywgMTEyLCAyMTAsIDQsIDMsIDI0NiwgNjIsIDU1LCAyMjYsIDI0NywgCi0gICAgMjQzLCAxNDIsIDI0NywgMTM3LCAyMzYsIDEwNiwgMjE1LCAxMzUsIDYxLCAyNDUsIDIxNiwgMjQzLCAyMjEsIDYxLCAyNDUsIAotICAgIDIxNiwgMjQzLCAyMjIsIDMsIDk2LCAyMDgsIDI1NCwgNjEsIDI0NSwgMjE2LCAyNDMsIDIyMiwgMywgODYsIDIwOCwgMjU0LCAKLSAgICA2MSwgNTEsIDMsIDk2LCAyMDgsIDI1NCwgNjEsIDUxLCAzLCA4NiwgMjA4LCAyNTQsIDEzLCA0OSwgNjEsIDUxLCAxNTUsIAotICAgIDEzLCA1MCwgNjEsIDUxLCAxNTUsIDEzLCA0OSwgMjUwLCAyMTgsIDE1NSwgMTMsIDUwLCAyNTAsIDIxOCwgMTU1LCAxMywgCi0gICAgNDksIDUyLCAyNTAsIDIxOCwgMTU1LCAxMywgNTAsIDUyLCAyNTAsIDIxOCwgMTU1LCAxMywgNDksIDYxLCAyMDgsIDEzMywgCi0gICAgMjEzLCAzMywgMTU1LCAxMywgNTAsIDYxLCAyMDgsIDEzMywgMjEzLCAzMywgMTU1LCAxMywgNDksIDIzOSwgMjE0LCAyMTksIAotICAgIDc2LCAxMywgNTAsIDIzOSwgMjE0LCAyMTksIDc2LCAxNzcsIDIxNywgNTgsIDQ3LCAxODMsIDIxNywgNTgsIDQ3LCAyNTAsIAotICAgIDE5NCwgMjM4LCAyMjYsIDI0NiwgNjIsIDQ3LCAyNDYsIDE4LCAyMzgsIDIyNiwgMjQ2LCA2MiwgNDcsIDUwLCA1MywgMywgCi0gICAgNDMsIDIxOCwgNzYsIDE2MywgOTYsIDQ3LCAxNjMsIDg2LCA0NywgMTYzLCA0OSwgNTAsIDQ3LCAxNjMsIDk2LCA1MiwgNDcsIAotICAgIDE2MywgODYsIDUyLCA0NywgMTYzLCA0OSwgNTAsIDUyLCA0NywgMTYzLCA5NiwgNTMsIDIzOSwgMTIwLCAxNDIsIDE2MywgCi0gICAgODYsIDUzLCAyMzksIDEyMCwgMTQyLCAxNjMsIDk2LCA1MiwgNTMsIDIzOSwgMTIwLCAxNDIsIDE2MywgODYsIDUyLCA1MywgCi0gICAgMjM5LCAxMjAsIDE0MiwgMTYzLCA4NiwgMjExLCAxNzEsIDQ3LCA1OCwgNTksIDI0OCwgMzYsIDU4LCA1OSwgMjQzLCA4MiwgCi0gICAgNTgsIDU5LCAyNDIsIDIxMCwgNTgsIDU5LCAyNDMsIDgxLCA1OCwgNTksIDI0MiwgMTQ2LCA1OCwgNTksIDI0MywgMTcsIDU4LCAKLSAgICA1OSwgMjQyLCAyMDksIDU4LCA1OSwgMjQzLCA4MCwgNTgsIDU5LCAyNDIsIDExNCwgNTgsIDU5LCAyNDIsIDI0MSwgNTgsIAotICAgIDU5LCAyNDIsIDE3NywgNTgsIDU5LCAyNDMsIDQ4LCA1OCwgNTksIDI0MiwgMTQ1LCA1OCwgNTksIDI0MywgMTYsIDU4LCA1OSwgCi0gICAgMjQyLCAyMDgsIDU4LCA1OSwgMjQzLCA3OSwgNTgsIDU5LCAyNDIsIDk4LCA1OCwgNTksIDI0MiwgMjI1LCA1OCwgNTksIAotICAgIDI0MiwgMTYxLCA1OCwgNTksIDI0MywgMzIsIDU4LCA1OSwgMjQyLCAxMjksIDU4LCA1OSwgMjQzLCAwLCA1OCwgNTksIDI0MiwgCi0gICAgMTkyLCA1OCwgNTksIDI0MywgNjMsIDU4LCA1OSwgMjQyLCAxMTMsIDU4LCA1OSwgMjQyLCAyNDAsIDU4LCA1OSwgMjQyLCAKLSAgICAxNzYsIDU4LCA1OSwgMjQzLCA0NywgNTgsIDU5LCAyNDIsIDE0NCwgNTgsIDU5LCAyNDMsIDE1LCA1OCwgNTksIDI0MiwgCi0gICAgMjA3LCA1OCwgNTksIDI0MywgNzgsIDU4LCA1OSwgMjQyLCA5MCwgNTgsIDU5LCAyNDIsIDIxNywgNTgsIDU5LCAyNDIsIAotICAgIDE1MywgNTgsIDU5LCAyNDMsIDI0LCA1OCwgNTksIDI0MiwgMTIxLCA1OCwgNTksIDI0MiwgMjQ4LCA1OCwgNTksIDI0MiwgCi0gICAgMTg0LCA1OCwgNTksIDI0MywgNTUsIDU4LCA1OSwgMjQyLCAxMDUsIDU4LCA1OSwgMjQyLCAyMzIsIDU4LCA1OSwgMjQyLCAKLSAgICAxNjgsIDU4LCA1OSwgMjQzLCAzOSwgNTgsIDU5LCAyNDIsIDEzNiwgNTgsIDU5LCAyNDMsIDcsIDU4LCA1OSwgMjQyLCAxOTksIAotICAgIDU4LCA1OSwgMjQzLCA3MCwgNTgsIDU5LCAyNDIsIDk3LCA1OCwgNTksIDI0MiwgMjI0LCA1OCwgNTksIDI0MiwgMTYwLCA1OCwgCi0gICAgNTksIDI0MywgMzEsIDU4LCA1OSwgMjQyLCAxMjgsIDU4LCA1OSwgMjQyLCAyNTUsIDU4LCA1OSwgMjQyLCAxOTEsIDU4LCAKLSAgICA1OSwgMjQzLCA2MiwgNTgsIDU5LCAyNDIsIDExMiwgNTgsIDU5LCAyNDIsIDIzOSwgNTgsIDU5LCAyNDIsIDE3NSwgNTgsIAotICAgIDU5LCAyNDMsIDQ2LCA1OCwgNTksIDI0MiwgMTQzLCA1OCwgNTksIDI0MywgMTQsIDU4LCA1OSwgMjQyLCAyMDYsIDU4LCA1OSwgCi0gICAgMjQzLCA3NywgNTgsIDU5LCAyNDIsIDg2LCA1OCwgNTksIDI0MiwgMjEzLCA1OCwgNTksIDI0MiwgMTQ5LCA1OCwgNTksIAotICAgIDI0MywgMjAsIDU4LCA1OSwgMjQyLCAxMTcsIDU4LCA1OSwgMjQyLCAyNDQsIDU4LCA1OSwgMjQyLCAxODAsIDU4LCA1OSwgCi0gICAgMjQzLCA1MSwgNTgsIDU5LCAyNDIsIDEwMSwgNTgsIDU5LCAyNDIsIDIyOCwgNTgsIDU5LCAyNDIsIDE2NCwgNTgsIDU5LCAKLSAgICAyNDMsIDM1LCA1OCwgNTksIDI0MiwgMTMyLCA1OCwgNTksIDI0MywgMywgNTgsIDU5LCAyNDIsIDE5NSwgNTgsIDU5LCAyNDMsIAotICAgIDY2LCA1OCwgNTksIDI0MiwgOTMsIDU4LCA1OSwgMjQyLCAyMjAsIDU4LCA1OSwgMjQyLCAxNTYsIDU4LCA1OSwgMjQzLCAyNywgCi0gICAgNTgsIDU5LCAyNDIsIDEyNCwgNTgsIDU5LCAyNDIsIDI1MSwgNTgsIDU5LCAyNDIsIDE4NywgNTgsIDU5LCAyNDMsIDU4LCAKLSAgICA1OCwgNTksIDI0MiwgMTA4LCA1OCwgNTksIDI0MiwgMjM1LCA1OCwgNTksIDI0MiwgMTcxLCA1OCwgNTksIDI0MywgNDIsIAotICAgIDU4LCA1OSwgMjQyLCAxMzksIDU4LCA1OSwgMjQzLCAxMCwgNTgsIDU5LCAyNDIsIDIwMiwgNTgsIDU5LCAyNDMsIDczLCA1OCwgCi0gICAgNTksIDI0MiwgODksIDU4LCA1OSwgMjQyLCAyMTYsIDU4LCA1OSwgMjQyLCAxNTIsIDU4LCA1OSwgMjQzLCAyMywgNTgsIDU5LCAKLSAgICAyNDIsIDEyMCwgNTgsIDU5LCAyNDIsIDI0NywgNTgsIDU5LCAyNDIsIDE4MywgNTgsIDU5LCAyNDMsIDU0LCA1OCwgNTksIAotICAgIDI0MiwgMTA0LCA1OCwgNTksIDI0MiwgMjMxLCA1OCwgNTksIDI0MiwgMTY3LCA1OCwgNTksIDI0MywgMzgsIDU4LCA1OSwgCi0gICAgMjQyLCAxMzUsIDU4LCA1OSwgMjQzLCA2LCA1OCwgNTksIDI0MiwgMTk4LCA1OCwgNTksIDI0MywgNjksIDU4LCA1OSwgMjQyLCAKLSAgICA5NiwgNTgsIDU5LCAyNDIsIDIyMywgNTgsIDU5LCAyNDIsIDE1OSwgNTgsIDU5LCAyNDMsIDMwLCA1OCwgNTksIDI0MiwgCi0gICAgMTI3LCA1OCwgNTksIDI0MiwgMjU0LCA1OCwgNTksIDI0MiwgMTkwLCA1OCwgNTksIDI0MywgNjEsIDU4LCA1OSwgMjQyLCAKLSAgICAxMTEsIDU4LCA1OSwgMjQyLCAyMzgsIDU4LCA1OSwgMjQyLCAxNzQsIDU4LCA1OSwgMjQzLCA0NSwgNTgsIDU5LCAyNDIsIAotICAgIDE0MiwgNTgsIDU5LCAyNDMsIDEzLCA1OCwgNTksIDI0MiwgMjA1LCA1OCwgNTksIDI0MywgNzYsIDU4LCA1OSwgMjQyLCA4NCwgCi0gICAgNTgsIDU5LCAyNDIsIDIxMSwgNTgsIDU5LCAyNDIsIDE0NywgNTgsIDU5LCAyNDMsIDE4LCA1OCwgNTksIDI0MiwgMTE1LCAKLSAgICA1OCwgNTksIDI0MiwgMjQyLCA1OCwgNTksIDI0MiwgMTc4LCA1OCwgNTksIDI0MywgNDksIDU4LCA1OSwgMjQyLCA5OSwgNTgsIAotICAgIDU5LCAyNDIsIDIyNiwgNTgsIDU5LCAyNDIsIDE2MiwgNTgsIDU5LCAyNDMsIDMzLCA1OCwgNTksIDI0MiwgMTMwLCA1OCwgCi0gICAgNTksIDI0MywgMSwgNTgsIDU5LCAyNDIsIDE5MywgNTgsIDU5LCAyNDMsIDY0LCA1OCwgNTksIDI0MiwgOTEsIDU4LCA1OSwgCi0gICAgMjQyLCAyMTgsIDU4LCA1OSwgMjQyLCAxNTQsIDU4LCA1OSwgMjQzLCAyNSwgNTgsIDU5LCAyNDIsIDEyMiwgNTgsIDU5LCAKLSAgICAyNDIsIDI0OSwgNTgsIDU5LCAyNDIsIDE4NSwgNTgsIDU5LCAyNDMsIDU2LCA1OCwgNTksIDI0MiwgMTA2LCA1OCwgNTksIAotICAgIDI0MiwgMjMzLCA1OCwgNTksIDI0MiwgMTY5LCA1OCwgNTksIDI0MywgNDAsIDU4LCA1OSwgMjQyLCAxMzcsIDU4LCA1OSwgCi0gICAgMjQzLCA4LCA1OCwgNTksIDI0MiwgMjAwLCA1OCwgNTksIDI0MywgNzEsIDU4LCA1OSwgMjQyLCA4NywgNTgsIDU5LCAyNDIsIAotICAgIDIxNCwgNTgsIDU5LCAyNDIsIDE1MCwgNTgsIDU5LCAyNDMsIDIxLCA1OCwgNTksIDI0MiwgMTE4LCA1OCwgNTksIDI0MiwgCi0gICAgMjQ1LCA1OCwgNTksIDI0MiwgMTgxLCA1OCwgNTksIDI0MywgNTIsIDU4LCA1OSwgMjQyLCAxMDIsIDU4LCA1OSwgMjQyLCAKLSAgICAyMjksIDU4LCA1OSwgMjQyLCAxNjUsIDU4LCA1OSwgMjQzLCAzNiwgNTgsIDU5LCAyNDIsIDEzMywgNTgsIDU5LCAyNDMsIDQsIAotICAgIDU4LCA1OSwgMjQyLCAxOTYsIDU4LCA1OSwgMjQzLCA2NywgNTgsIDU5LCAyNDIsIDk0LCA1OCwgNTksIDI0MiwgMjIxLCA1OCwgCi0gICAgNTksIDI0MiwgMTU3LCA1OCwgNTksIDI0MywgMjgsIDU4LCA1OSwgMjQyLCAxMjUsIDU4LCA1OSwgMjQyLCAyNTIsIDU4LCAKLSAgICA1OSwgMjQyLCAxODgsIDU4LCA1OSwgMjQzLCA1OSwgNTgsIDU5LCAyNDIsIDEwOSwgNTgsIDU5LCAyNDIsIDIzNiwgNTgsIAotICAgIDU5LCAyNDIsIDE3MiwgNTgsIDU5LCAyNDMsIDQzLCA1OCwgNTksIDI0MiwgMTQwLCA1OCwgNTksIDI0MywgMTEsIDU4LCA1OSwgCi0gICAgMjQyLCAyMDMsIDU4LCA1OSwgMjQzLCA3NCwgNTgsIDU5LCAyNDIsIDg1LCA1OCwgNTksIDI0MiwgMjEyLCA1OCwgNTksIAotICAgIDI0MiwgMTQ4LCA1OCwgNTksIDI0MywgMTksIDU4LCA1OSwgMjQyLCAxMTYsIDU4LCA1OSwgMjQyLCAyNDMsIDU4LCA1OSwgCi0gICAgMjQyLCAxNzksIDU4LCA1OSwgMjQzLCA1MCwgNTgsIDU5LCAyNDIsIDEwMCwgNTgsIDU5LCAyNDIsIDIyNywgNTgsIDU5LCAKLSAgICAyNDIsIDE2MywgNTgsIDU5LCAyNDMsIDM0LCA1OCwgNTksIDI0MiwgMTMxLCA1OCwgNTksIDI0MywgMiwgNTgsIDU5LCAyNDIsIAotICAgIDE5NCwgNTgsIDU5LCAyNDMsIDY1LCA1OCwgNTksIDI0MiwgOTIsIDU4LCA1OSwgMjQyLCAyMTksIDU4LCA1OSwgMjQyLCAKLSAgICAxNTUsIDU4LCA1OSwgMjQzLCAyNiwgNTgsIDU5LCAyNDIsIDEyMywgNTgsIDU5LCAyNDIsIDI1MCwgNTgsIDU5LCAyNDIsIAotICAgIDE4NiwgNTgsIDU5LCAyNDMsIDU3LCA1OCwgNTksIDI0MiwgMTA3LCA1OCwgNTksIDI0MiwgMjM0LCA1OCwgNTksIDI0MiwgCi0gICAgMTcwLCA1OCwgNTksIDI0MywgNDEsIDU4LCA1OSwgMjQyLCAxMzgsIDU4LCA1OSwgMjQzLCA5LCA1OCwgNTksIDI0MiwgMjAxLCAKLSAgICA1OCwgNTksIDI0MywgNzIsIDU4LCA1OSwgMjQyLCA4OCwgNTgsIDU5LCAyNDIsIDIxNSwgNTgsIDU5LCAyNDIsIDE1MSwgNTgsIAotICAgIDU5LCAyNDMsIDIyLCA1OCwgNTksIDI0MiwgMTE5LCA1OCwgNTksIDI0MiwgMjQ2LCA1OCwgNTksIDI0MiwgMTgyLCA1OCwgCi0gICAgNTksIDI0MywgNTMsIDU4LCA1OSwgMjQyLCAxMDMsIDU4LCA1OSwgMjQyLCAyMzAsIDU4LCA1OSwgMjQyLCAxNjYsIDU4LCAKLSAgICA1OSwgMjQzLCAzNywgNTgsIDU5LCAyNDIsIDEzNCwgNTgsIDU5LCAyNDMsIDUsIDU4LCA1OSwgMjQyLCAxOTcsIDU4LCA1OSwgCi0gICAgMjQzLCA2OCwgNTgsIDU5LCAyNDIsIDk1LCA1OCwgNTksIDI0MiwgMjIyLCA1OCwgNTksIDI0MiwgMTU4LCA1OCwgNTksIAotICAgIDI0MywgMjksIDU4LCA1OSwgMjQyLCAxMjYsIDU4LCA1OSwgMjQyLCAyNTMsIDU4LCA1OSwgMjQyLCAxODksIDU4LCA1OSwgCi0gICAgMjQzLCA2MCwgNTgsIDU5LCAyNDIsIDExMCwgNTgsIDU5LCAyNDIsIDIzNywgNTgsIDU5LCAyNDIsIDE3MywgNTgsIDU5LCAKLSAgICAyNDMsIDQ0LCA1OCwgNTksIDI0MiwgMTQxLCA1OCwgNTksIDI0MywgMTIsIDU4LCA1OSwgMjQyLCAyMDQsIDU4LCA1OSwgCi0gICAgMjQzLCA3NSwgODYsIDIwNywgMTM0LCA1MywgMywgODAsIDk1LCA4NiwgMjA3LCAxMzQsIDUzLCAzLCA1MiwgODAsIDk1LCAKLSAgICA5NiwgNTIsIDUzLCAzLCA4MCwgOTUsIDg2LCA1MiwgNTMsIDMsIDgwLCA5NSwgNDksIDUwLCA1MiwgNTMsIDMsIDgwLCA5NSwgCi0gICAgODYsIDIwNywgMTM0LCA1MywgMjM5LCAxMjAsIDE0MiwgOTYsIDUyLCA1MywgMjM5LCAxMjAsIDE0MiwgODYsIDUyLCA1MywgCi0gICAgMjM5LCAxMjAsIDE0MiwgMTgzLCA1MywgMywgMjM2LCAxMDYsIDk1LCAxNzcsIDUzLCAzLCAyMzYsIDEwNiwgOTUsIDE3NywgCi0gICAgMjA4LCA3MCwgNDcsIDE4MywgMjA4LCA3MCwgNDcsIDk2LCA1MiwgMjQ0LCAxNDUsIDQ3LCA4NiwgNTIsIDI0NCwgMTQ1LCAKLSAgICA0NywgOTYsIDIwOCwgNzAsIDI0NCwgMTQ1LCA0NywgODYsIDIwOCwgNzAsIDI0NCwgMTQ1LCA0NywgODYsIDIwNywgMTM0LCAKLSAgICAyMDgsIDcwLCAyNDQsIDE0NSwgNDcsIDg2LCA1MywgMywgMjQyLCA4MywgMjExLCA3NywgMTc3LCA1MywgMjA4LCAxNzMsIAotICAgIDE0MiwgMTgzLCA1MywgMjA4LCAxNzMsIDE0MiwgODYsIDUzLCAzLCAyMDksIDI0OSwgMywgODAsIDk1LCA4NiwgNTMsIDMsIAotICAgIDIwOSwgMjQ5LCAzLCA1MiwgODAsIDk1LCA4NiwgMjA3LCAxMzQsIDUzLCAzLCAyMDksIDI0OCwgODYsIDIwNywgMTM0LCA1MywgCi0gICAgMywgMjA5LCAyNDksIDMsIDgwLCA5NSwgODYsIDIwNywgMTM0LCA1MywgMywgMjA5LCAyNDksIDMsIDUyLCA4MCwgOTUsIDk2LCAKLSAgICAyNTAsIDk2LCA4NiwgMjUwLCA5NiwgOTYsIDUyLCAyNTAsIDk2LCA4NiwgNTIsIDI1MCwgOTYsIDk2LCA1MywgMjA4LCAxNzMsIAotICAgIDYyLCAyNDMsIDIyMSwgODYsIDUzLCAyMDgsIDE3MywgNjIsIDI0MywgMjIxLCA5NiwgNTMsIDIzOSwgMTIwLCAyNDgsIDIzMSwgCi0gICAgMjA4LCAxNzMsIDYyLCAyNDMsIDIyMSwgODYsIDUzLCAyMzksIDEyMCwgMjQ4LCAyMzEsIDIwOCwgMTczLCA2MiwgMjQzLCAKLSAgICAyMjEsIDE1MywgMjA0LCA0NiwgMjUsIDIxMSwgMjM4LCAyNDEsIDE3NiwgNDcsIDE1MywgMjQxLCAxNzYsIDI1LCAyMTEsIAotICAgIDIzOCwgMjA0LCA0NiwgNDcsIDE1MywgMjA0LCA0NiwgNTMsIDMsIDExMywgMTUzLCAyNDEsIDE3NiwgNTMsIDMsIDExMywgCi0gICAgMjExLCAyMzgsIDI0MSwgMTc2LCA1MywgMywgMTEzLCAyMTEsIDIzOCwgMjA0LCA0NiwgNTMsIDMsIDExMywgMTUzLCAyMDQsIAotICAgIDQ2LCA1MywgMjUsIDE1MywgMjQxLCAxNzYsIDQ3LCAxNTMsIDI0MSwgMTc2LCA1MywgMjUsIDIxMSwgMjM4LCAyNDEsIDE3NiwgCi0gICAgNDcsIDIxMSwgMjM4LCAyNDEsIDE3NiwgNTMsIDI1LCAyMTEsIDIzOCwgMjA0LCA0NiwgNDcsIDIxMSwgMjM4LCAyMDQsIDQ2LCAKLSAgICA1MywgMjUsIDE1MywgMjA0LCA0NiwgNDcsIDIxNSwgMjQ1LCAyNDMsIDIyOCwgMjQ1LCAxMjQsIDI0MCwgODQsIDI0MywgCi0gICAgMjI3LCAyNDAsIDg0LCAyNDMsIDIyOCwgMjQ1LCAxMjQsIDIxNSwgMjQ1LCAyNDMsIDIyNywgMjExLCAyMzgsIDI0MSwgMTc2LCAKLSAgICA1MywgMjQ1LCAxMjQsIDE1MywgMjQxLCAxNzYsIDQ3LCAxNTMsIDI0MSwgMTc2LCA1MywgMjQ1LCAxMjQsIDIxMSwgMjM4LCAKLSAgICAyNDEsIDE3NiwgNDcsIDI0MCwgODQsIDI0MywgMjI4LCAyNDUsIDEyNCwgMTUzLCAyNDEsIDE3NiwgNDcsIDIxNSwgMjQ1LCAKLSAgICAyNDMsIDIyOCwgMjQ1LCAxMjQsIDIxMSwgMjM4LCAyNDEsIDE3NiwgNDcsIDE1MywgMjQxLCAxNzYsIDUzLCAyNDUsIDEyNCwgCi0gICAgMTUzLCAyMDQsIDQ2LCA0NywgMTUzLCAyMDQsIDQ2LCA1MywgMjQ1LCAxMjQsIDE1MywgMjQxLCAxNzYsIDQ3LCAyMDQsIDc2LCAKLSAgICA1MywgMjE4LCA1OSwgMjQzLCAxNjQsIDIxNiwgMTYsIDUzLCAyMTgsIDU5LCA4NiwgMjA5LCA4NCwgMjQ1LCA4NCwgMjA2LCAKLSAgICAyMTIsIDUzLCAyMTgsIDU5LCA4NiwgMjA5LCA4NCwgMjQ1LCA4NCwgMjQyLCA2OCwgNTMsIDIxOCwgNTksIDE4MywgMjA5LCAKLSAgICA4NCwgMjQ1LCA4NCwgMjI3LCAyMTIsIDUzLCAyMTgsIDU5LCAxODMsIDIwOSwgODQsIDI0NSwgODQsIDIxNiwgNSwgMjE2LCAKLSAgICA4LCAyNTAsIDEyOSwgMjQ2LCAxOCwgNDcsIDIyNywgMjE1LCAyNTAsIDEyOSwgMjUwLCAxOTQsIDQ3LCAyMDgsIDE0NSwgCi0gICAgMjUwLCAxMjksIDI1MCwgMTk0LCA0NywgMjQ3LCAyNDgsIDI1MCwgMTI5LCAyNTAsIDE5NCwgNDcsIDIwOCwgMTQ1LCAyNTAsIAotICAgIDEyOSwgMjQ2LCAxOCwgNTMsIDMsIDIyNCwgMTAyLCAyMDgsIDE0NSwgMjUwLCAxMjksIDI1MCwgMTk0LCA1MywgMywgMjE4LCAKLSAgICA3NiwgMjI2LCAyNTEsIDUwLCAyMTMsIDE0NSwgMjQ2LCAxOCwgNDcsIDIyNiwgMjUxLCA0OSwgMjEzLCAxNDUsIDI1MCwgCi0gICAgMTk0LCA0NywgMjUwLCAxOTQsIDI0NiwgMTYsIDI0NiwgNjIsIDQ3LCAyNDYsIDE4LCAyNDYsIDE2LCAyNDYsIDYyLCA0NywgCi0gICAgODYsIDUzLCA4NywgMjEyLCAyMjgsIDk2LCA0NywgOTYsIDUzLCA4NywgMjEyLCAyMjgsIDg2LCA0NywgMjEyLCAyMjgsIDg2LCAKLSAgICA1MywgODcsIDk2LCA0NywgODYsIDUzLCAzLCA5MSwgNTYsIDk2LCA1MywgMywgOTEsIDU2LCA4NiwgNTMsIDIwOSwgMjUsIAotICAgIDIwMywgMTk2LCA0OSwgNTAsIDUzLCAyMDksIDI1LCA1LCAyNDYsIDYxLCAxNzcsIDIwNywgMTM0LCA1MywgMjM5LCAxMjAsIAotICAgIDUsIDI0NiwgNjEsIDQ5LCAxNTAsIDExMiwgNTAsIDE1MCwgMTIxLCAyMzcsIDg2LCA0OSwgMTUwLCAxMjEsIDUwLCAxNTAsIAotICAgIDExMiwgMjM3LCA4NiwgMTEyLCAxNTAsIDUwLCAxMjEsIDE1MCwgNDksIDIzNywgODYsIDExMiwgMTUwLCA0OSwgMTIxLCAKLSAgICAxNTAsIDUwLCAyMzcsIDg2LCA0OSwgMTUwLCAxMTIsIDUwLCAxNTAsIDExMiwgMjM3LCA4NiwgMTEyLCAxNTAsIDUwLCAxMjEsIAotICAgIDE1MCwgNTAsIDIzNywgODYsIDQ5LCAxNTAsIDEyMSwgNTAsIDE1MCwgMTIxLCAyMzcsIDg2LCAxMTIsIDE1MCwgNDksIDEyMSwgCi0gICAgMTUwLCA0OSwgMjM3LCA4NiwgOTYsIDIzNywgODcsIDMsIDE1MCwgMTEyLCAyMDgsIDE3MywgMTQyLCA4NiwgMjM3LCA4NywgCi0gICAgMywgMTUwLCAxMTIsIDIwOCwgMTczLCAxNDIsIDE3NywgMjM3LCA4NywgMywgMTUwLCA1MCwgMjA4LCAxNzMsIDE0MiwgMTgzLCAKLSAgICAyMzcsIDg3LCAzLCAxNTAsIDUwLCAyMDgsIDE3MywgMTQyLCA5NiwgMjM3LCA4NywgMywgMTUwLCAxMjEsIDIwOCwgMTczLCAKLSAgICAxNDIsIDg2LCAyMzcsIDg3LCAzLCAxNTAsIDEyMSwgMjA4LCAxNzMsIDE0MiwgMTc3LCAyMzcsIDg3LCAzLCAxNTAsIDQ5LCAKLSAgICAyMDgsIDE3MywgMTQyLCAxODMsIDIzNywgODcsIDMsIDE1MCwgNDksIDIwOCwgMTczLCAxNDIsIDk2LCAyMzcsIDg3LCAzLCAKLSAgICAxNTAsIDExMiwgMjM5LCAxMjAsIDE0MiwgODYsIDIzNywgODcsIDMsIDE1MCwgMTEyLCAyMzksIDEyMCwgMTQyLCAxNzcsIAotICAgIDIzNywgODcsIDMsIDE1MCwgNTAsIDIzOSwgMTIwLCAxNDIsIDE4MywgMjM3LCA4NywgMywgMTUwLCA1MCwgMjM5LCAxMjAsIAotICAgIDE0MiwgOTYsIDIzNywgODcsIDMsIDE1MCwgMTIxLCAyMzksIDEyMCwgMTQyLCA4NiwgMjM3LCA4NywgMywgMTUwLCAxMjEsIAotICAgIDIzOSwgMTIwLCAxNDIsIDE3NywgMjM3LCA4NywgMywgMTUwLCA0OSwgMjM5LCAxMjAsIDE0MiwgMTgzLCAyMzcsIDg3LCAzLCAKLSAgICAxNTAsIDQ5LCAyMzksIDEyMCwgMTQyLCA5NiwgMjM3LCA4NywgMywgMTUwLCAxMTIsIDg3LCA5NiwgMjM3LCA4NywgMywgCi0gICAgMTUwLCAyNDIsIDcwLCAxNzcsIDIzNywgODcsIDMsIDE1MCwgNDksIDI0OCwgMTEwLCAxNzcsIDIzNywgODcsIDMsIDE1MCwgCi0gICAgMjE2LCAxNiwgODYsIDIzNywgODcsIDMsIDE1MCwgMTEyLCA4NywgODYsIDIzNywgODcsIDMsIDE1MCwgMjQyLCA3MCwgMTgzLCAKLSAgICAyMzcsIDg3LCAzLCAxNTAsIDQ5LCAyNDgsIDExMCwgMTgzLCAyMzcsIDg3LCAzLCAxNTAsIDIxNiwgMTYsIDk2LCAyMzcsIAotICAgIDg3LCAzLCAxNTAsIDExMiwgODcsIDg2LCAyMzcsIDg3LCAzLCAxNTAsIDIwNiwgMjI0LCA5NiwgMjM3LCA4NywgMywgMTUwLCAKLSAgICAxMjEsIDg3LCA4NiwgMjM3LCA4NywgMywgMTUwLCAyNDIsIDcwLCA4NiwgMjM3LCA4NywgMywgMTUwLCAxMTIsIDg3LCA5NiwgCi0gICAgMjM3LCA4NywgMywgMTUwLCAyMDYsIDIyNCwgODYsIDIzNywgODcsIDMsIDE1MCwgMTIxLCA4NywgOTYsIDIzNywgODcsIDMsIAotICAgIDE1MCwgMjQyLCA3MCwgOTYsIDIzNywgODcsIDMsIDE1MCwgMTEyLCA4NywgMTYzLCAyNDQsIDE0NCwgOTYsIDIzNywgODcsIAotICAgIDMsIDE1MCwgMTIxLCAyNDgsIDEyNiwgMTYzLCAyNDQsIDE0NCwgODYsIDIzNywgODcsIDMsIDE1MCwgMTEyLCA4NywgMTYzLCAKLSAgICAyNDQsIDE0NCwgODYsIDIzNywgODcsIDMsIDE1MCwgMTIxLCAyNDgsIDEyNiwgMTYzLCAyNDQsIDE0NCwgMTc3LCAyMzcsIAotICAgIDg3LCAzLCAxNTAsIDQ5LCAyNDgsIDExMCwgMTgzLCAyMzcsIDg3LCAzLCAxNTAsIDIxNiwgMTYsIDE4MywgMjM3LCA4NywgMywgCi0gICAgMTUwLCA0OSwgMjQ4LCAxMTAsIDE3NywgMjM3LCA4NywgMywgMTUwLCAyMTYsIDE2LCA1MCwgNTIsIDUzLCAzLCAyMTUsIAotICAgIDE4OSwgMjM3LCA2NCwgMjQxLCAzNSwgMiwgODcsIDg2LCA0NywgMjA4LCAyMjgsIDIxOSwgMjU1LCA4NywgODYsIDQ3LCA5NiwgCi0gICAgNTMsIDg3LCAyMDgsIDIyOCwgMjE5LCAyNTQsIDg2LCA1MywgODcsIDIwOCwgMjI4LCAyMTksIDI1NCwgODYsIDUzLCA4NywgCi0gICAgMjUxLCA3LCAxNTYsIDEzNSwgMjI3LCAxNzksIDg3LCA5NiwgNDcsIDk2LCA1MywgMjA5LCAyNSwgMjI3LCAxNzgsIDIzNywgCi0gICAgMjQ3LCA4NywgODYsIDQ3LCAyMTAsIDI0NSwgODcsIDg2LCA0NywgOTYsIDUzLCAyMDksIDI1LCAyMTAsIDI0NCwgMjEwLCAKLSAgICAxOTgsIDg3LCA5NiwgNDcsIDQ5LCAyMzksIDI0NCwgMjA5LCAyNDgsIDUwLCAyMzksIDI0NCwgMjA5LCAyNDgsIDExMiwgCi0gICAgMjM5LCAyNDQsIDIwOSwgMjQ4LCAxMjEsIDIzOSwgMjQ0LCAyMDksIDI0OCwgMjA4LCA3MCwgODAsIDI0OCwgMjMxLCAyNDQsIAotICAgIDQzLCAyMDIsIDE2MCwgMjIxLCAxNjQsIDIxMSwgMTg4LCAyMDIsIDE2MCwgMjIxLCAxNjQsIDIwNywgMTIxLCAyNDUsIDI0MiwgCi0gICAgNDksIDYxLCAyNDUsIDkzLCAxNTUsIDUwLCA2MSwgMjQ1LCA5MywgMTU1LCA0OSwgNjEsIDIxOSwgNzYsIDUwLCA2MSwgMjE5LCAKLSAgICA3NiwgMjAyLCAxNjAsIDIyMSwgMTY0LCA0OSwgMjMxLCA2NSwgMTU1LCAyMDIsIDE2MCwgMjIxLCAxNjQsIDUwLCAyMzEsIAotICAgIDY1LCAxNTUsIDIwMiwgMTYwLCAyMjEsIDE2NCwgNDksIDI0OCwgNjUsIDE1NSwgMjAyLCAxNjAsIDIyMSwgMTY0LCA1MCwgCi0gICAgMjQ4LCA2NSwgMTU1LCA0OSwgNTEsIDI0NywgMjI3LCAzLCAyMDYsIDI0NiwgNTAsIDUxLCAyNDcsIDIyNywgMywgMjA2LCAKLSAgICAyNDYsIDQ5LCA1MSwgMjQ3LCAyMjcsIDMsIDIwOCwgMjU1LCAyMzEsIDUwLCAyMDgsIDE0NSwgMjQ1LCAxNjUsIDUwLCA1MSwgCi0gICAgMjQ3LCAyMjcsIDMsIDIwOCwgMjU1LCAyMzEsIDUwLCAyNDcsIDI0OCwgMjQ1LCAxNjUsIDQ5LCA1MSwgMjQ3LCAyMjcsIDMsIAotICAgIDIwOCwgMjU1LCAyMzEsIDUwLCAyNDcsIDI0OCwgMjQ1LCAxNjUsIDUwLCA1MSwgMjQ3LCAyMjcsIDMsIDIwOCwgMjU1LCAKLSAgICAyMzEsIDUwLCAyMDgsIDE0NSwgMjQ1LCAxNjUsIDQ5LCAyNTAsIDIxOCwgMjQ3LCAyMjcsIDMsIDI0MywgODUsIDUwLCAyNTAsIAotICAgIDIxOCwgMjQ3LCAyMjcsIDMsIDI0MywgODUsIDQ5LCAyNTAsIDEyOSwgMjI3LCAxNzksIDE1NSwgNTAsIDI1MCwgMTI5LCAKLSAgICAyMzcsIDI0NywgMTU1LCA1MiwgNDksIDI1MCwgMTI5LCAyMzcsIDI0NywgMTU1LCA1MiwgNTAsIDI1MCwgMTI5LCAyMjcsIAotICAgIDE3OSwgMTU1LCA0OSwgNjIsIDIwOCwgMTMzLCAyMTMsIDMzLCAxNTUsIDUwLCA2MiwgMjA4LCAxMzMsIDIxMywgMzMsIDE1NSwgCi0gICAgMjQyLCA4MywgMjQwLCA0MCwgODAsIDIwMiwgMzAsIDIyNywgMTE0LCAyMjUsIDE3LCAyNTAsIDIxOCwgMjIwLCAxLCAyMjcsIAotICAgIDIyMiwgNTAsIDI1MCwgMjE4LCAyMDYsIDY5LCAzLCAyMTEsIDE3NywgMjI1LCAxNywgNTAsIDI1MCwgMjE4LCAzLCAyNDMsIAotICAgIDg1LCAyNTAsIDIxOCwgMywgMjE1LCA5NCwgMjMxLCA2LCAyNTEsIDEyNiwgMjUwLCAyMTcsIDIxMSwgMjA4LCAyNTAsIDIxOCwgCi0gICAgMjIwLCAxLCAyMjcsIDIyMiwgMjExLCAyMDgsIDI1MCwgMjE4LCAyMjAsIDEsIDIwNiwgMjI0LCAyMDcsIDE3NCwgMjUwLCAKLSAgICAyMTcsIDIxNiwgNzMsIDI1MCwgMjE3LCAyNTAsIDIxOCwgMywgMjA2LCAyNDYsIDIxNiwgNzMsIDI1MCwgMjE4LCAzLCAyMDYsIAotICAgIDI0NiwgMjIwLCA4OSwgMjUwLCAyMTgsIDIyMCwgMSwgMjA2LCAyMjQsIDIyMCwgODksIDI1MCwgMjE4LCAyMjAsIDEsIDI0MiwgCi0gICAgNzAsIDIyNSwgMTcsIDI1MCwgMjE4LCAzLCAxNzEsIDI1MCwgMTA3LCAyNDEsIDgxLCAyMzEsIDUwLCA1MywgMjE4LCA1OSwgCi0gICAgMTEyLCAyNSwgMjE2LCAxNiwgMjI1LCAxNywgMjUwLCAyMTgsIDMsIDE3MSwgMjUwLCAxMDcsIDI0MSwgODEsIDIzMSwgNTAsIAotICAgIDUzLCAyMTgsIDU5LCAxMTIsIDI1LCAyMjcsIDIyMiwgMjI1LCAxNywgMjUwLCAyMTgsIDMsIDE3MSwgMjUwLCAxMDcsIDI0MSwgCi0gICAgODEsIDIzMSwgNTAsIDUzLCAyMTgsIDU5LCAxMjEsIDI1LCAyMTYsIDE2LCAyMjUsIDE3LCAyNTAsIDIxOCwgMywgMTcxLCAKLSAgICAyNTAsIDEwNywgMjQxLCA4MSwgMjMxLCA1MCwgNTMsIDIxOCwgNTksIDEyMSwgMjUsIDIyNywgMjIyLCAyMjUsIDE3LCAyNTAsIAotICAgIDIxOCwgMywgMTcxLCAyNTAsIDEwNywgMjQxLCA4MSwgMjMxLCA1MCwgNTMsIDIxOCwgNTksIDUwLCAyNSwgMjA2LCAyMjQsIAotICAgIDIyNSwgMTcsIDI1MCwgMjE4LCAzLCAxNzEsIDI1MCwgMTA3LCAyNDEsIDgxLCAyMzEsIDUwLCA1MywgMjE4LCA1OSwgNDksIAotICAgIDI1LCAyMDYsIDIyNCwgMjI1LCAxNywgMjUwLCAyMTgsIDMsIDE3MSwgMjUwLCAxMDcsIDI0MSwgODEsIDIzMSwgNTAsIDUzLCAKLSAgICAyMTgsIDU5LCA1MCwgMjUsIDI0MiwgNzAsIDIyNSwgMTcsIDI1MCwgMjE4LCAzLCAxNzEsIDI1MCwgMTA3LCAyNDEsIDgxLCAKLSAgICAyMzEsIDUwLCA1MywgMjE4LCA1OSwgNDksIDI1LCAyNDIsIDcwLCAyMTYsIDczLCAyNDEsIDk0LCAyMTMsIDExNywgMjQxLCAKLSAgICA5NCwgMjEzLCAxMTgsIDMsIDIxOSwgMjAzLCAyNDEsIDk0LCAyMTMsIDExOCwgMywgNSwgMjQ2LCA2MiwgNTUsIDI0MSwgOTQsIAotICAgIDIxMywgMTE4LCAzLCA1MCwgNTMsIDU1LCAyNDEsIDk0LCAyMTMsIDExOCwgMywgNDksIDUzLCA1NSwgMjQ2LCA2MiwgMywgCi0gICAgMjM2LCAxMDYsIDE0MiwgNDMsIDgwLCAxNDIsIDQzLCAyMTksIDgxLCA0MywgMjE2LCA3NCwgMjEyLCAwLCA0MywgMjE4LCAKLSAgICAyMzMsIDI0NiwgNjIsIDI0MywgMTQyLCAyNDcsIDEzNywgMjM2LCAxMDYsIDI0OCwgMjMxLCAyNSwgMjA4LCAxNDUsIDE2MiwgCi0gICAgMjQzLCAxNDIsIDI0NywgMTM3LCA4MCwgMTQyLCAyNDYsIDYyLCAzLCAyMTAsIDIwMCwgMjAzLCAxOTYsIDQzLCAyNTAsIAotICAgIDE5MiwgMjQzLCAxMzcsIDU0LCAxMTIsIDUzLCAyMDksIDI1LCAyNDYsIDYxLCA0MywgNjEsIDI0NywgMTc3LCA0MywgMjQ3LCAKLSAgICAxNzcsIDQzLCAyMjcsIDE3OCwgNDMsIDIzNywgMjQ2LCAyNDYsIDYyLCAzLCA1LCAyNDYsIDYyLCAyMDgsIDE3MywgMjA5LCAKLSAgICA5MywgMjE2LCAxNiwgMjQ2LCA2MiwgMywgMTIwLCAyMzYsIDEwNiwgMjExLCAyMCwgMjA4LCAxNzMsIDIwOSwgOTMsIDIxNiwgCi0gICAgMTYsIDEwMywgMjE1LCAyNDUsIDI0MywgMjI4LCAyMTIsIDU3LCAxMDMsIDI0MCwgODQsIDI0MywgMjI4LCAyMTIsIDU3LCAKLSAgICAxMDMsIDI1MCwgNTksIDEwMywgNSwgMjQ2LCA2MSwgMTAzLCAyMTEsIDE3NywgMTIwLCAyMzAsIDk4LCAyMTEsIDE3NSwgCi0gICAgMjA4LCA4NiwgMywgNzAsIDU1LCAyMDgsIDg2LCAzLCAyMDYsIDI0NiwgMjE1LCA5NCwgMjMxLCA1MCwgMjA4LCA4NSwgMjA4LCAKLSAgICA4NiwgMywgMjEzLCAxMjQsIDI1MCwgNTAsIDI0NywgMjQ3LCA1MCwgMjA4LCA4NiwgODcsIDQ5LCAyMDgsIDg1LCA0OSwgCi0gICAgMjA4LCA4NiwgMjQ4LCAxMTAsIDgwLCAxNDIsIDgwLCAyNDgsIDIzMSwgMjQ4LCAxMTAsIDUwLCAyMDgsIDg1LCAyNDcsIAotICAgIDIzNSwgMywgNDksIDE2MiwgMjQ4LCA0MywgMjQ3LCAyMzUsIDMsIDUwLCAxNjIsIDI0OCwgNDMsIDYyLCAyNDcsIDIzNCwgCi0gICAgMjMsIDMsIDQ5LCAxNjIsIDI0OCwgNDMsIDIzLCAzLCA1MCwgMTYyLCAyNDgsIDQzLCA2MSwgMjM2LCA0MCwgNjIsIDIzNiwgCi0gICAgNDAsIDQ5LCAyMDQsIDIxLCAyNDAsIDQwLCA1MCwgMjA0LCAyMSwgMjQwLCA0MCwgNDksIDUyLCAyMDQsIDIxLCAyNDAsIDQwLCAKLSAgICA1MCwgNTIsIDIwNCwgMjEsIDI0MCwgNDAsIDIzMSwgNDIsIDIzMSwgMjcsIDIwOCwgMjUxLCAxMTUsIDIzMSwgMjcsIDIzMSwgCi0gICAgMjgsIDIyMiwgMjM0LCAzLCA4MCwgMTQyLCAyNDIsIDc3LCAyMjMsIDIyOCwgNTEsIDMsIDI0NSwgMTg3LCAyMTksIDIwOCwgCi0gICAgMjMxLCAzOSwgMjUwLCA4MSwgMjEyLCAxOTMsIDIxNywgMjI0LCAyNDEsIDM1LCAyLCAyNSwgMjEyLCA1OSwgMjE5LCA4MSwgCi0gICAgMjQxLCAzNSwgMiwgMjUsIDIxMiwgNTksIDIxOSwgODIsIDMsIDIwOCwgMjI4LCA1NSwgMjM1LCAxNTQsIDIwOCwgMTczLCAKLSAgICAyNSwgMjEyLCA1OSwgMjE5LCA4MSwgMjM4LCA0OCwgMjExLCA5MywgMjA5LCA4MSwgMjQyLCA2OSwgMjA4LCA4NiwgMywgNDksIAotICAgIDE2MiwgMjQ4LCA0MywgMjQyLCA2OSwgMjA4LCA4NiwgMywgNTAsIDE2MiwgMjQ4LCA0MywgNjIsIDI0MywgMjIyLCAzLCAKLSAgICAxMjEsIDQ3LCA2MiwgMjI2LCAyNDYsIDYxLCAyNDYsIDYyLCAzLCAxMjEsIDQ3LCA2MiwgMjQ2LCA2MiwgMywgMTIxLCA0NywgCi0gICAgMjQxLCAyMCwgNjEsIDIxMSwgMTc3LCAyNDEsIDIwLCA2MiwgMjExLCAxNzcsIDI0MSwgMjAsIDYxLCAyNDMsIDIyMSwgMjQxLCAKLSAgICAyMCwgNjIsIDI0MywgMjIxLCAyNDEsIDIwLCA2MSwgMjQ2LCA2MSwgMjQxLCAyMCwgNjIsIDI0NiwgNjEsIDIxNSwgMTM0LCAKLSAgICAyMTYsIDc0LCAyMTIsIDEsIDIxOSwgMjU0LCAyMTIsIDEsIDMsIDIxOSwgMjAzLCAyMTYsIDc0LCAyMTIsIDEsIDMsIDIzNiwgCi0gICAgMTA2LCA5NSwgMjQ4LCA3MywgMjEyLCAwLCAyNDgsIDczLCAyMTYsIDc0LCAyMTIsIDAsIDUyLCAyMTgsIDc2LCAyMDgsIDcwLCAKLSAgICAyMTgsIDc2LCAyMjcsIDIxNywgMjQ1LCA4NiwgMjUwLCAyMTgsIDE1NSwgMjE2LCAxMSwgMjQ1LCA4NiwgMjUwLCAyMTgsIAotICAgIDE1NSwgMjA4LCAyMTIsIDIyNCwgMTAwLCAyMjMsIDE2MiwgNDMsIDcwLCAyMTksIDI1NCwgMjIzLCAxNjIsIDQzLCA5MSwgCi0gICAgMjE5LCAyNTQsIDIyMywgMTYyLCA0MywgMjMsIDIxOSwgMjU0LCAyMjMsIDE2MiwgMjA2LCAyMzgsIDIxOSwgMjU1LCAzLCAKLSAgICAyNDMsIDg1LCAyMjMsIDE2MiwgMjA2LCAyMzgsIDIxOSwgMjU1LCAzLCAyMTgsIDc2LCAyMjMsIDE2MiwgNTEsIDIzMCwgCi0gICAgMjQ1LCAyMTksIDI1NCwgMjIzLCAxNjIsIDUxLCAyMDYsIDIzOCwgMjE5LCAyNTQsIDEyMCwgMjI3LCAzNywgMjUsIDIxOSwgCi0gICAgMjU0LCAxMjAsIDIyNywgMzcsIDIxOSwgMjQ1LCAyMTksIDI1NCwgMjIzLCAxNjIsIDIzLCAyMTksIDI1NCwgMjI0LCA1OCwgCi0gICAgMTIwLCAyMTAsIDIyMCwgMjEwLCAyMTgsIDMsIDIzMSwgMiwgMjE3LCA1OCwgMjMxLCAzLCAyMTksIDI1NCwgMjM5LCAyNTIsIAotICAgIDIxOSwgNzEsIDIzMSwgMiwgMjMxLCAzLCAzLCA1MiwgOTUsIDIzMSwgMywgMjUwLCAxNSwgMywgMjEyLCA1NywgMjQ2LCA1NCwgCi0gICAgMjM5LCA5OSwgMjUwLCAxOTQsIDIzMSwgMCwgMjI3LCAxMTUsIDIzMSwgMSwgMywgMjE2LCAxNDIsIDIxOSwgNTIsIDI1MCwgCi0gICAgMTA0LCAyMTgsIDUzLCAyMjcsIDExNSwgMjMxLCAxLCAzLCAyMTMsIDE0NSwgMjE5LCA1MiwgMjUwLCAxMDQsIDIxOCwgNTMsIAotICAgIDIyNywgMTE1LCAyMzEsIDEsIDIyMSwgMTY2LCAyMzEsIDQ0LCAyMDksIDkzLCAyMTgsIDUzLCAyMzEsIDMsIDI1MCwgMTA0LCAKLSAgICAzNCwgMjE4LCA2MywgMjE5LCAyNTQsIDIxNywgNTIsIDIzMSwgMywgMjE5LCAyNTQsIDIzMSwgMywgMywgOTYsIDUzLCAzLCAKLSAgICAxMTMsIDIzMSwgMywgMywgMjMsIDU0LCAyMzEsIDMsIDMsIDIzMCwgMjQ0LCAyMzEsIDMsIDMsIDIwNiwgMjM3LCAyMzEsIDMsIAotICAgIDMsIDIxOSwgMjAzLCAyMzEsIDMsIDMsIDIwNiwgMjQ2LCAyMzAsIDk5LCAyMjgsIDgsIDQ5LCAyMDgsIDg2LCAyMTksIDI1NCwgCi0gICAgMjAyLCAxNjAsIDIyMSwgMTY0LCAyMTQsIDE5OCwgMjQ1LCAyMjMsIDIwMiwgMTYwLCAyMjEsIDE2NCwgMjE0LCAxOTgsIAotICAgIDIxOCwgMTE0LCAyMDIsIDE2MCwgMjIxLCAxNjQsIDIxNCwgMTk4LCAyMTcsIDIxOSwgOTEsIDIsIDMsIDUsIDI0NiwgNjIsIAotICAgIDU1LCA5MSwgMiwgMywgMjQ2LCA1MywgMjUxLCAxMzksIDU1LCA5MSwgMiwgMywgMjA4LCAyMjgsIDU1LCA5MSwgMiwgMywgCi0gICAgNzAsIDU2LCA5MSwgMiwgMywgMjA4LCAyMjgsIDU2LCA5MSwgMiwgMywgMjEwLCAyNDYsIDEwOCwgOTEsIDIsIDMsIDYyLCAKLSAgICAyMDgsIDg1LCAyMjQsIDEwMywgMiwgMywgMjQ1LCAyMzQsIDU1LCAyMjQsIDEwMywgMiwgMywgNzAsIDU2LCAyMjQsIDEwMywgCi0gICAgMiwgMywgMjQwLCA4NCwgMjQzLCA4MywgMjI0LCAxMDMsIDIsIDMsIDIxNSwgMjQ1LCAyNDMsIDgzLCA5MSwgMiwgMjMxLCAKLSAgICA1MCwgNDksIDE2MiwgMjQ2LCA2MSwgOTEsIDIsIDIzMSwgNTAsIDUwLCAxNjIsIDI0NiwgNjEsIDIwNiwgNTQsIDIxOSwgCi0gICAgMjQ1LCAyNDUsIDEzMSwgMjE3LCAyMjQsIDIyMywgMjI0LCAyLCAzLCA3MCwgNTUsIDIyMywgMjI0LCAyLCAzLCAyMDYsIAotICAgIDI0NiwgMjEzLCAxNDIsIDIxNywgMjI1LCAzLCAyNDcsIDI0OCwgMjQ2LCAxNSwgMjEyLCAzNCwgMjE3LCAyMjQsIDIyMywgCi0gICAgMjI0LCAyLCAyMzEsIDUwLCA0OSwgMTYyLCAyNDYsIDYxLCAyMjMsIDIyNCwgMiwgMjMxLCA1MCwgNTAsIDE2MiwgMjQ2LCAKLSAgICA2MSwgNDMsIDIyMywgMjI0LCAyLCAzLCAyNDYsIDUzLCAyNTEsIDEzOCwgMjIzLCAyMjQsIDIsIDIzMSwgNTAsIDUyLCAyNDYsIAotICAgIDYxLCA0MywgMjQzLCAxMzcsIDU0LCA5MSwgMiwgMjMxLCA1MCwgMjA4LCA4NSwgMjI0LCAxMDMsIDIsIDIzMSwgNTAsIDIwOCwgCi0gICAgODUsIDIyMywgMjI0LCAyLCAyMzEsIDUwLCAyMDgsIDg1LCAyMzAsIDI1MywgMjE3LCAyMjQsIDIxNiwgNiwgMjMwLCAyNTMsIAotICAgIDIxNywgMjI0LCAyMDIsIDE2MCwgMjIxLCAxNjQsIDIxNiwgMTE2LCAyNDUsIDIyMywgMjUwLCAyNDUsIDIxOSwgMjQ1LCAKLSAgICAyNDUsIDE3MSwgMjMwLCAyNDUsIDMsIDI0MywgODUsIDIwNiwgMjM4LCAzLCAyMjQsIDEwMywgNTQsIDIwNiwgMjM4LCAzLCAKLSAgICAyMTksIDIwMywgMjMwLCAyNDUsIDMsIDIxOSwgMjAzLCAyMzAsIDI0NSwgMywgMjI3LCAzNywgMjUwLCAyMjYsIDIwNiwgCi0gICAgMjM4LCAzLCAyMjcsIDM3LCAyMTksIDI0NCwgMjA2LCAyMzgsIDg3LCAyMzAsIDI0NCwgMjMwLCAyNDUsIDg3LCAyMDYsIAotICAgIDIzNywgMjA2LCAyMzgsIDg3LCAyNDgsIDIzMSwgODcsIDIzMCwgMjQ0LCAyMzAsIDI0NSwgODcsIDI0OCwgMjMxLCA4NywgCi0gICAgMjA2LCAyMzcsIDIwNiwgMjM4LCAyNDgsIDExMCwgMjUsIDIzMCwgOTgsIDMsIDIwNiwgMjM3LCAyMzAsIDI0NSwgMjQ4LCAKLSAgICAxMTAsIDI1LCAyMzAsIDk4LCAzLCAyMzAsIDI0NCwgMjQ2LCAxNiwgMjA2LCAyMzgsIDMsIDIxMywgMTIzLCAyNDYsIDE2LCAKLSAgICAyMzAsIDI0NSwgMywgMjEzLCAxMjMsIDUyLCA1MSwgMjMwLCAyNDQsIDUyLCA1MSwgMjA2LCAyMzcsIDI0NiwgMTYsIDIwNiwgCi0gICAgMjM4LCAzLCAyMTMsIDEyNCwgMjUsIDIxMiwgMzQsIDIxNywgMjI0LCAyMjcsIDM3LCAyNSwgMywgNzAsIDU1LCAyMjcsIDM3LCAKLSAgICAyMTksIDI0NSwgMywgNzAsIDU1LCA1MiwgMjI3LCAzNywgMjUwLCAyMjYsIDUyLCAyMjcsIDM3LCAyMTksIDI0NCwgMTIwLCAKLSAgICAyMzAsIDI0NiwgMjI3LCAzNywgMjUwLCAyMjYsIDEyMCwgMjMwLCAyNDYsIDIyNywgMzcsIDIxOSwgMjQ0LCAyMTIsIDQzLCAKLSAgICAyMjgsIDgsIDIxOSwgMjQ0LCAyMTIsIDQzLCAyMjgsIDgsIDI1MCwgMjI2LCAyMjcsIDM3LCAyMTksIDI0NSwgMjE5LCAyMDAsIAotICAgIDIyNywgMzcsIDI1MCwgMjI2LCAyMjcsIDM3LCAyNSwgMywgMTAxLCAyMTEsIDc3LCAyMjcsIDM3LCAyMTksIDI0NSwgMywgCi0gICAgMTAxLCAyMTEsIDc3LCAyMjcsIDM3LCAyNSwgMywgMjM2LCAxMDYsIDI0NCwgMTQ0LCAyMjcsIDM3LCAyMTksIDI0NSwgMywgCi0gICAgMjM2LCAxMDYsIDI0NCwgMTQ0LCAyMjcsIDM3LCAyNSwgMywgNTIsIDIxOSwgMjAzLCAyMjcsIDM3LCAyNSwgMywgMjA2LCAKLSAgICAyNDYsIDIyNywgMzcsIDI1LCAzLCA1MiwgMjA2LCAyNDYsIDUsIDIwNiwgNTEsIDMsIDIwNiwgMjQ2LCAyMjcsIDM3LCAyMTksIAotICAgIDI0NSwgMywgNTIsIDIxOSwgMjAzLCAyMjcsIDM3LCAyMTksIDI0NSwgMywgNTIsIDIwNiwgMjQ2LCAyMDIsIDE2MCwgMjIxLCAKLSAgICAxNjQsIDI0MywgOTQsIDI1MCwgMTg0LCAyMDIsIDE2MCwgMjIxLCAxNjQsIDIxNiwgMTc5LCAyNTAsIDE4NCwgMjQxLCAzNSwgCi0gICAgMiwgMywgNzAsIDU2LCAyMzUsIDE1NCwgMywgNzAsIDU1LCAyMDgsIDcwLCAyMzYsIDEwNiwgMjQ4LCAyMzEsIDMsIDUyLCAKLSAgICA4MCwgOTUsIDIwOCwgNzAsIDIzNiwgMTA2LCAyNDgsIDIzMSwgMywgMjA4LCA3MCwgODAsIDk1LCAyMDgsIDIyOCwgMjE5LCAKLSAgICAyNTUsIDMsIDcwLCA1NSwgMjA4LCAyMjgsIDIxOSwgMjU1LCAzLCAyMTUsIDI0NSwgMjQzLCA4MywgMjEyLCAxMjksIDIyNCwgCi0gICAgMTAzLCAyMTIsIDEyOCwgMjQ1LCAyMTAsIDMsIDcwLCA1NSwgMjQxLCAzNSwgMywgMjUwLCA1OSwgMjUxLCA3LCAxNTYsIAotICAgIDIwOCwgMTczLCAzLCAyNDYsIDUzLCAyNTEsIDEzOCwgMjUwLCAxNTEsIDE1NiwgMjE5LCAyNDUsIDE1NiwgMTM1LCAyNDEsIAotICAgIDM1LCAyLCA4NywgOTEsIDU0LCA5MSwgMiwgODcsIDI0MSwgMzUsIDU0LCAyNDEsIDM1LCAyLCA4NywgMjA4LCAyMjgsIDIxOSwgCi0gICAgMjU0LCA1MiwgMjQ1LCAyNDMsIDI0MSwgMzYsIDEyMCwgMjQ1LCAyMDMsIDI0MSwgMzUsIDIxMiwgMTQzLCAxMjYsIDI0NSwgCi0gICAgMjAzLCAyNDEsIDM1LCAyMTIsIDE0MywgMjQxLCAzNSwgMiwgMywgMTIwLCAxODcsIDg3LCAyNSwgMTIwLCAxODcsIDU2LCAKLSAgICAyNDEsIDMwLCAzLCAyMzksIDE0NywgMTg3LCA1NSwgMjI3LCAxNzksIDMsIDI0NiwgNjIsIDIzMSwgNiwgMjM3LCAyNDcsIDMsIAotICAgIDI0NiwgNjIsIDIzMSwgNiwgMjI3LCAxNzksIDMsIDIxNywgNDcsIDEzMSwgNTUsIDIzNywgMjQ3LCAzLCAyMTcsIDQ3LCAKLSAgICAxMzEsIDU1LCAyMjcsIDE3OSwgMjE5LCAyNDUsIDIxMiwgNTksIDE1NiwgMTM1LCAyMzcsIDI0NywgMjE5LCAyNDUsIDIxMiwgCi0gICAgNTksIDE1NiwgMTM1LCAyMjcsIDE3OSwgMjE5LCAyNDUsIDIxMiwgNTksIDE1NiwgMjA4LCAxNzMsIDMsIDcwLCAyMzEsIDYsIAotICAgIDIzNywgMjQ3LCAyMTksIDI0NSwgMjEyLCA1OSwgMTU2LCAyMDgsIDE3MywgMywgNzAsIDIzMSwgNiwgMjI3LCAxNzksIDIxOSwgCi0gICAgMjQ1LCAyMTIsIDU5LCAxNTYsIDIwOCwgMTczLCAzLCA3MCwgNTUsIDIzNywgMjQ3LCAyMTksIDI0NSwgMjEyLCA1OSwgMTU2LCAKLSAgICAyMDgsIDE3MywgMywgNzAsIDU1LCAyMjcsIDE3OSwgMjE5LCAyNDUsIDIxMiwgNTksIDE1NiwgMjA4LCAxNzMsIDMsIDcwLCAKLSAgICA4NywgMjE2LCAxNiwgMjM3LCAyNDcsIDIxOSwgMjQ1LCAyMTIsIDU5LCAxNTYsIDIwOCwgMTczLCAzLCA3MCwgODcsIDIyNywgCi0gICAgMjIyLCAyMjcsIDE3OSwgMjE5LCAyNDUsIDI1MCwgMTUyLCAyMzcsIDI0NywgMjE5LCAyNDUsIDI1MCwgMTUyLCAyMjcsIAotICAgIDE3OSwgMjUsIDIxMiwgMTE4LCAyMjEsIDE2NiwgMTU2LCAxMzUsIDIzNywgMjQ3LCAyNSwgMjEyLCAxMTgsIDIyMSwgMTY2LCAKLSAgICAxNTYsIDEzNSwgMjI3LCAxNzksIDI1LCAyMjEsIDE2NiwgMjUwLCAxNTIsIDIzNywgMjQ3LCAyNSwgMjIxLCAxNjYsIDI1MCwgCi0gICAgMTUyLCAyMjcsIDE3OSwgODcsIDI0MiwgNzYsIDE1NiwgODcsIDIzNywgMjQ2LCAyMzcsIDI0NywgODcsIDI0MiwgNzYsIAotICAgIDE1NiwgODcsIDIyNywgMTc4LCAyMjcsIDE3OSwgODcsIDIxMiwgMTI5LCAyMTksIDI0NSwgMjQxLCAzNiwgMjM3LCAyNDcsIAotICAgIDg3LCAyMTIsIDEyOSwgMjE5LCAyNDUsIDI0MSwgMzYsIDIyNywgMTc5LCA4NywgMjEyLCAxMjksIDg3LCAyMzcsIDI0NiwgCi0gICAgMjM3LCAyNDcsIDg3LCAyMTIsIDEyOSwgODcsIDIyNywgMTc4LCAyMjcsIDE3OSwgODcsIDIzNywgMjQ3LCA4NywgMjQyLCAKLSAgICA3NiwgMjQxLCAzNiwgMjM3LCAyNDcsIDg3LCAyMjcsIDE3OSwgODcsIDI0MiwgNzYsIDI0MSwgMzYsIDIyNywgMTc5LCA4NywgCi0gICAgMjEyLCA1OSwgMTU2LCA4NywgMjM3LCAyNDcsIDg3LCAyMTIsIDU5LCAyNDEsIDM2LCAyMzcsIDI0NywgODcsIDIxMiwgNTksIAotICAgIDE1NiwgODcsIDIyNywgMTc5LCA4NywgMjEyLCA1OSwgMjQxLCAzNiwgMjEyLCA1OSwgMTU2LCAyMDgsIDE3MywgMjE5LCAKLSAgICAyNDUsIDIyNywgMTc4LCAyMTIsIDU5LCAxNTYsIDIwOCwgMTczLCAyMTksIDI0NSwgMjM3LCAyNDYsIDIxMiwgNTksIDE1NiwgCi0gICAgMjA4LCAxNzMsIDIxOSwgMjQ1LCAyMjcsIDE3OSwgMywgNzAsIDIzMSwgNiwgMjEyLCA1OSwgMTU2LCAyMDgsIDE3MywgMjE5LCAKLSAgICAyNDUsIDIzNywgMjQ3LCAzLCA3MCwgMjMxLCA2LCAyNDIsIDc2LCAxNTYsIDIwOCwgMTczLCAyMTksIDI0NSwgMjI3LCAxNzgsIAotICAgIDI0MiwgNzYsIDE1NiwgMjA4LCAxNzMsIDIxOSwgMjQ1LCAyMzcsIDI0NiwgMjQyLCA3NiwgMjEyLCA1OSwgMTU2LCAyMDgsIAotICAgIDE3MywgMjE5LCAyNDUsIDIyNywgMTc4LCAyNDIsIDc2LCAyMTIsIDU5LCAxNTYsIDIwOCwgMTczLCAyMTksIDI0NSwgMjM3LCAKLSAgICAyNDYsIDIxMiwgMTI5LCAyMTksIDI0NSwgMjI3LCAxNzgsIDIxMiwgMTI5LCAyMTksIDI0NSwgMjM3LCAyNDYsIDIxMiwgCi0gICAgMTI5LCA4NywgMjI3LCAxNzksIDg3LCAyNDEsIDM1LCA1NCwgMjEyLCAxMjksIDg3LCAyMzcsIDI0NywgODcsIDI0MSwgMzUsIAotICAgIDU0LCA1MiwgMjIyLCAyMjEsIDIyNywgMTc4LCA1MiwgMjIyLCAyMjEsIDIzNywgMjQ2LCA1MiwgMjIyLCAyMjEsIDIyNywgCi0gICAgMTc5LCAzLCAyMDYsIDI0NiwgMjM3LCAyNDcsIDIxOSwgMjAwLCAyMjcsIDE3OCwgMjM3LCAyNDcsIDI0OCwgMTEwLCAyMjcsIAotICAgIDE3OCwgMjI3LCAxNzksIDI0NiwgMTYsIDI0NywgMTM3LCAyNDUsIDg3LCAyMzcsIDI0NywgMjQ2LCAxNiwgMjQ3LCAxMzcsIAotICAgIDI0NSwgODcsIDIyNywgMTc5LCAyNDYsIDE2LCAyNDcsIDEzNywgMjQ1LCA4OCwgODcsIDIxMiwgNTksIDI0MSwgMzYsIDIzNywgCi0gICAgMjQ3LCAyNDYsIDE2LCAyNDcsIDEzNywgMjQ1LCA4OCwgODcsIDIxMiwgNTksIDI0MSwgMzYsIDIxMiwgMzUsIDIwOSwgOTcsIAotICAgIDIyOCwgNiwgMjA5LCA5NywgMjEyLCAzNSwgMjA5LCA5OCwgMjE5LCAyNDUsIDE1NiwgMTM1LCAyMjgsIDYsIDIwOSwgOTgsIAotICAgIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjQxLCAzNSwgMiwgMywgMjQ3LCAxNzAsIDU1LCAyMTcsIDI1MCwgODcsIDIxMiwgMTE4LCAKLSAgICAyNDEsIDM1LCA1NCwgMjEwLCAyMzcsIDg3LCAyMTIsIDExOCwgMjQxLCAzNSwgNTQsIDIxNywgMjUwLCA4NywgMjEyLCAxMTgsIAotICAgIDIyMSwgMTY2LCAxNTYsIDEzNSwgMjEwLCAyMzcsIDg3LCAyMTIsIDExOCwgMjIxLCAxNjYsIDE1NiwgMTM1LCAyMTcsIDI1MCwgCi0gICAgODcsIDI0MSwgMzUsIDU0LCAyMTAsIDIzNywgODcsIDI0MSwgMzUsIDU0LCAyMTcsIDI1MCwgODcsIDIyMSwgMTY2LCAxNTYsIAotICAgIDEzNSwgMjEwLCAyMzcsIDg3LCAyMjEsIDE2NiwgMTU2LCAxMzUsIDIxNywgMjUwLCA4NywgMjUxLCA3LCAxNTYsIDEzNSwgCi0gICAgMjEwLCAyMzcsIDg3LCAyNTEsIDcsIDE1NiwgMTM1LCAyMTcsIDI1MCwgODcsIDIyMSwgMTY2LCAyNTEsIDcsIDE1NiwgMTM1LCAKLSAgICAyMTAsIDIzNywgODcsIDIyMSwgMTY2LCAyNTEsIDcsIDE1NiwgMTM1LCA1MiwgMjE3LCAyNDksIDUyLCAyMTAsIDIzNiwgCi0gICAgMjEwLCAyNDUsIDMsIDI0MywgODUsIDIxMCwgMTk4LCAzLCAyNDMsIDg1LCAyMTAsIDI0NSwgMywgOTEsIDIsIDU2LCAyMTAsIAotICAgIDE5OCwgMywgOTEsIDIsIDU2LCAyMTAsIDI0NSwgMywgMjIzLCAyMjQsIDIsIDU2LCAyMTAsIDE5OCwgMywgMjIzLCAyMjQsIAotICAgIDIsIDU2LCAyMTAsIDI0NSwgNzYsIDIxOSwgMjQ1LCAxNTYsIDIwOCwgMTczLCAzLCA3MCwgNTUsIDIxMCwgMTk4LCA3NiwgCi0gICAgMjE5LCAyNDUsIDE1NiwgMjA4LCAxNzMsIDMsIDcwLCA1NSwgMjEwLCAyNDUsIDc2LCA4NywgMjQxLCAzNSwgNTQsIDIxMCwgCi0gICAgMTk4LCA3NiwgODcsIDI0MSwgMzUsIDU0LCAyMTAsIDI0NSwgNzYsIDg3LCAyMDgsIDIyOCwgMjE5LCAyNTQsIDIxMCwgMTk4LCAKLSAgICA3NiwgODcsIDIwOCwgMjI4LCAyMTksIDI1NCwgMjEwLCAyNDUsIDc2LCA4NywgMjUxLCA3LCAxNTYsIDEzNSwgMjEwLCAxOTgsIAotICAgIDc2LCA4NywgMjUxLCA3LCAxNTYsIDEzNSwgMjEwLCAyNDUsIDc2LCA4NywgMjIxLCAxNjYsIDE1NiwgMTM1LCAyMTAsIDE5OCwgCi0gICAgNzYsIDg3LCAyMjEsIDE2NiwgMTU2LCAxMzUsIDUxLCA0OSwgMTcxLCA5OCwgMjE5LCAyNTQsIDUxLCA1MCwgMTcxLCA5OCwgCi0gICAgMjE5LCAyNTQsIDI0NiwgMTYsIDIxMCwgMjQ0LCAyNDYsIDE2LCAyMTAsIDE5NywgMjQ2LCAxNiwgMjEwLCAyNDUsIDIxOSwgCi0gICAgMjQ1LCAxNTYsIDEzNSwgMjQ2LCAxNiwgMjEwLCAxOTgsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjEwLCAyNDUsIDg3LCAyMTAsIAotICAgIDE5NywgMjEwLCAxOTgsIDg3LCAyMTAsIDI0NCwgMjEwLCAyNDUsIDg3LCAyMTAsIDI0NCwgMjEwLCAxOTgsIDg3LCAyMTAsIAotICAgIDE5NywgMjEwLCAxOTgsIDI0OCwgMTEwLCAyMTAsIDI0NCwgMjEwLCAxOTgsIDI0OCwgMTEwLCAyNSwgMjMwLCA5OCwgMjQ3LCAKLSAgICAxMzcsIDI0NCwgMTQ1LCAzLCAyMTAsIDI0NCwgMjQxLCAxMTUsIDc2LCAyMjAsIDEsIDI0MiwgNjgsIDIxOCwgMTA0LCAzLCAKLSAgICAyMDksIDE3NywgMjA4LCAxNDQsIDIwOCwgMTAyLCAyMzAsIDI0NCwgMjM5LCAxNjAsIDIyMSwgMTgxLCAyMTIsIDIyOCwgNDksIAotICAgIDIxMCwgMywgMjEyLCAyMjgsIDEyMSwgMjEwLCAzLCAyMTIsIDIyOCwgMTEyLCAyMTAsIDMsIDIxOCwgMjM0LCAzLCAxOTQsIAotICAgIDgwLCAyNDgsIDIzMSwgMjA4LCA3MCwgNTAsIDIwNywgMTczLCA1MiwgODAsIDI0OCwgMjMxLCA0OSwgMjA3LCAxNzMsIDgwLCAKLSAgICAyNDgsIDIzMSwgNTIsIDQ5LCAyMDcsIDE3MywgNTIsIDgwLCAyNDgsIDIzMSwgNTIsIDQ5LCAyMDcsIDE3MywgMTYzLCAyNDQsIAotICAgIDE0NSwgMjM5LCAxMjAsIDQ5LCAyMjQsIDI0NSwgNzYsIDUyLCAyMDYsIDM4LCAyMTIsIDIyOCwgMTIxLCAyMTAsIDQsIDMsIAotICAgIDIxOSwgMjAzLCAyMTIsIDIyOCwgMTEyLCAyMTAsIDQsIDMsIDIwNiwgMjQ2LCAyMTIsIDIyOCwgMTEyLCAyMTAsIDQsIDg3LCAKLSAgICAyMTIsIDIyOCwgMTIxLCAyMTAsIDMsIDUyLCAxMjEsIDIxMCwgMywgNTIsIDExMiwgMjEwLCAzLCA1MiwgMjExLCAzMiwgCi0gICAgMjIxLCAxNjYsIDU0LCAyMTYsIDczLCA1MiwgMjExLCAzMiwgMjIxLCAxNjYsIDU0LCAyNDMsIDEwNCwgMjIxLCAxNjYsIAotICAgIDI0MywgMTQ0LCAzLCAyMTYsIDczLCAyMjIsIDIzMywgMjEyLCA1NywgODAsIDIyNywgMTE1LCAzLCAyNDYsIDYyLCA1NSwgCi0gICAgODAsIDIyNywgMTE1LCAzLCAyNDYsIDYyLCA1NiwgMTIxLCAyMTAsIDQsIDMsIDI0NiwgNjIsIDU2LCAyMTksIDgyLCAzLCAKLSAgICAyMzYsIDEwNiwgOTUsIDIxOSwgODIsIDMsIDIwOCwgMjI4LCAyMTksIDI1NCwgMjA4LCA3MCwgODAsIDI0OCwgMjMxLCAyNDgsIAotICAgIDY3LCAyMTYsIDExNywgMjA4LCA3MCwgODAsIDI0OCwgMjMxLCAzLCAyMzYsIDEwNiwgOTUsIDIwOCwgNzAsIDI0NSwgMjQzLCAKLSAgICAyMTksIDI1NCwgMjA4LCA3MCwgMjIyLCAyMjEsIDIyNywgMTc4LCAyMDgsIDcwLCAyMjIsIDIyMSwgMjM3LCAyNDYsIDI0MiwgCi0gICAgNzYsIDIxMiwgNTksIDIyNywgMTc5LCAyMTksIDI0NSwgMTU2LCAxMzUsIDI0MiwgNzYsIDIxMiwgNTksIDIzNywgMjQ3LCAKLSAgICAyMTksIDI0NSwgMTU2LCAxMzUsIDIwOCwgNzAsIDIxMiwgMSwgMjQ4LCA2NywgMjE2LCAxMTcsIDIyOCwgOCwgMjA4LCA3MCwgCi0gICAgODAsIDI0OCwgMjMxLCAyMTksIDI1NCwgNTIsIDIxMiwgMSwgMjE5LCAyNTQsIDYxLCA4MCwgMTQyLCAyMjMsIDE2MiwgNjEsIAotICAgIDgwLCAxNDIsIDE1MywgMjQxLCAxNzYsIDYxLCA0NywgMTUzLCAyMDQsIDQ2LCA2MSwgNDcsIDIxMSwgMjM4LCAyNDEsIDE3NiwgCi0gICAgNjEsIDQ3LCAyMTEsIDIzOCwgMjA0LCA0NiwgNjEsIDQ3LCA0OSwgNTAsIDYxLCA0NywgOTYsIDYyLCA0NywgMTc3LCA2MiwgCi0gICAgNDcsIDE4MywgNjIsIDQ3LCAxNTMsIDI0MSwgMTc2LCA2MiwgNDcsIDE1MywgMjA0LCA0NiwgNjIsIDQ3LCAyMTEsIDIzOCwgCi0gICAgMjQxLCAxNzYsIDYyLCA0NywgMjExLCAyMzgsIDIwNCwgNDYsIDYyLCA0NywgNDksIDUwLCA2MiwgNDcsIDExMiwgMTIxLCAKLSAgICA2MiwgNDcsIDg2LCA1MywgMywgMjA4LCAyMTEsIDI0MiwgNjgsIDg2LCA1MywgMywgMjA4LCAyMTEsIDIwNiwgMjEyLCA5NiwgCi0gICAgNTMsIDMsIDIwOCwgMjExLCAyNDIsIDY4LCA5NiwgNTMsIDMsIDIwOCwgMjExLCAyMDYsIDIxMiwgNTEsIDMsIDIwOCwgMTQ1LCAKLSAgICAxNjIsIDI0OCwgNDMsIDUxLCAzLCAyNDcsIDI0OCwgMTYyLCAyNDgsIDQzLCA1MSwgMywgMjA2LCAyMjEsIDUwLCAyNDMsIAotICAgIDIyOCwgMTYyLCAyNDgsIDQzLCA1MSwgMywgMjI2LCAyNTEsIDQ5LCAyNDMsIDIyOCwgMTYyLCAyNDgsIDQzLCAyNDMsIDIyMiwgCi0gICAgMywgNDksIDE2MiwgMjQ4LCA0MywgMjQzLCAyMjIsIDMsIDUwLCAxNjIsIDI0OCwgNDMsIDI0MywgMjIyLCAzLCAyMDgsIAotICAgIDE0NSwgMTYyLCAyNDgsIDQzLCAyNDMsIDIyMiwgMywgMjQ3LCAyNDgsIDE2MiwgMjQ4LCA0MywgMjQyLCA4MywgMjExLCAKLSAgICAxNzcsIDYyLCAyMjgsIDgsIDIxMSwgMTc3LCA2MSwgMjI4LCA4LCAyMTEsIDE3NywgNjIsIDIwNSwgMjQyLCA1LCAyMTEsIAotICAgIDE3NywgNjEsIDIwNSwgMjQyLCA1LCAyMTEsIDE3NywgNjIsIDIxOCwgMjU1LCA2MSwgMjE4LCAyNTUsIDYxLCAyMzcsIDE3LCAKLSAgICA2MiwgMjM3LCAxNywgMjM2LCAxMDYsIDYyLCAyMzcsIDE3LCA2MiwgMjI4LCA4LCAyNDYsIDYxLCA2MiwgMjI1LCAxMCwgCi0gICAgMjQzLCAyMjEsIDYxLCAyMjUsIDEwLCAyNDMsIDIyMSwgNjIsIDIyNSwgMTAsIDIyNiwgMjQ2LCA2MSwgMjI1LCAxMCwgMjI2LCAKLSAgICAyNDYsIDYyLCA1LCAyNDMsIDIyMSwgNjIsIDUsIDIyNiwgMjQ2LCA2MSwgNSwgMjI2LCAyNDYsIDYyLCAyMzYsIDEwNiwgCi0gICAgMjQxLCAxMDksIDYxLCAyMzYsIDEwNiwgMjQxLCAxMDksIDYyLCA4MCwgMjQxLCAxMDksIDYxLCA4MCwgMjQxLCAxMDksIDQ5LCAKLSAgICA1MywgMywgNSwgMjQ2LCA2MSwgMTI2LCA5NiwgMjUwLCA5MSwgNDksIDUzLCAzLCA0MywgMjE4LCA3NiwgMTYzLCA5NiwgCi0gICAgMjExLCAxNzEsIDQ3LCA5NiwgMjA3LCAxMzQsIDUzLCAzLCA4MCwgOTUsIDk2LCAyMDcsIDEzNCwgNTMsIDMsIDUyLCA4MCwgCi0gICAgOTUsIDk2LCAyMDcsIDEzNCwgNTMsIDIzOSwgMTIwLCAxNDIsIDk2LCAyMDcsIDEzNCwgMjA4LCA3MCwgMjQ0LCAxNDUsIDQ3LCAKLSAgICA5NiwgNTMsIDMsIDI0MiwgODMsIDIxMSwgNzcsIDk2LCA1MywgMywgMjA5LCAyNDksIDMsIDgwLCA5NSwgOTYsIDUzLCAzLCAKLSAgICAyMDksIDI0OSwgMywgNTIsIDgwLCA5NSwgOTYsIDIwNywgMTM0LCA1MywgMywgMjA5LCAyNDgsIDk2LCAyMDcsIDEzNCwgNTMsIAotICAgIDMsIDIwOSwgMjQ5LCAzLCA4MCwgOTUsIDk2LCAyMDcsIDEzNCwgNTMsIDMsIDIwOSwgMjQ5LCAzLCA1MiwgODAsIDk1LCA5NiwgCi0gICAgNTMsIDIwOSwgMjUsIDIwMywgMTk2LCAyMDQsIDc2LCA1MywgMjE4LCA1OSwgMjQzLCAxNjQsIDIyNywgMjIyLCAyNDEsIDM1LCAKLSAgICAyLCA4NywgOTYsIDQ3LCAyMTYsIDc0LCAyMDgsIDIyOCwgMjE5LCAyNTUsIDg3LCA5NiwgNDcsIDk2LCA1MywgODcsIDIxNiwgCi0gICAgNzQsIDI1MSwgNywgMTU2LCAxMzUsIDg2LCA1MywgMjA5LCAyNSwgMjM3LCAyNDYsIDg2LCA1MywgMjA5LCAyNSwgMjEwLCAKLSAgICAxOTcsIDk2LCAyMTcsIDU4LCA0NywgODYsIDIxNywgNTgsIDQ3LCAyMTYsIDc0LCAyMDgsIDIyOCwgMjE5LCAyNTUsIDg3LCAKLSAgICA4NiwgNDcsIDg2LCA1MywgODcsIDIxNiwgNzQsIDI1MSwgNywgMTU2LCAxMzUsIDIwOCwgMjI4LCAyMTksIDI1NSwgODcsIAotICAgIDk2LCA0NywgOTYsIDUzLCA4NywgMjUxLCA3LCAxNTYsIDEzNSwgOTYsIDUzLCA4NywgMjE2LCA3NCwgMjA4LCAyMjgsIDIxOSwgCi0gICAgMjU0LCA4NiwgNTMsIDg3LCAyMTYsIDc0LCAyMDgsIDIyOCwgMjE5LCAyNTQsIDE4MywgMjA4LCA4NCwgMjAyLCAzMCwgNDcsIAotICAgIDIxMiwgMjI4LCAyMTIsIDU5LCAxNTMsIDQ3LCAyMTIsIDIyOCwgMjQ5LCAyMiwgMjExLCAyMzgsIDQ3LCA2MSwgMjI1LCAxMCwgCi0gICAgMjExLCA5NCwgNjIsIDUsIDIxMSwgOTQsIDYxLCA1LCAyMTEsIDk0LCA2MiwgMjE2LCAxMSwgMjE4LCAyNTUsIDYxLCAyMTYsIAotICAgIDExLCAyMTgsIDI1NSwgNzksIDIyOCwgOCwgMjQ2LCA2MSwgNzksIDIxOSwgMjA1LCAzLCAyMTksIDIwNSwgMjMxLCA2LCA3OSwgCi0gICAgMjQ2LCA2MiwgMywgMjQ2LCA2MiwgMjMxLCA2LCA3OSwgMjQ2LCA2MSwgNzksIDQzLCAyMTQsIDI1NCwgMjEyLCA1OSwgMTUzLCAKLSAgICA1MywgMywgMjM2LCAxMTUsIDIzNywgNjQsIDI0OSwgMjIsIDIxMSwgMjM4LCA1MywgMywgMjM2LCAxMTUsIDIwOSwgMjQ4LCAKLSAgICAyMTIsIDU5LCAxNTMsIDUzLCAzLCAyMzYsIDEwNiwgMjA5LCAyNDgsIDI0OSwgMjIsIDIxMSwgMjM4LCA1MywgMywgMjM2LCAKLSAgICAxMDYsIDIwOSwgMjQ4LCAyNDgsIDExOCwgNTMsIDIxOCwgNTksIDE4MywgMjA5LCA4NCwgMTUzLCAyNDEsIDE3NSwgMjEyLCAKLSAgICAyMjgsIDI0OCwgMTE4LCA1MywgMjE4LCA1OSwgMTgzLCAyMDksIDg0LCAxNTMsIDI0MSwgMTc1LCA5NiwgMjA4LCA4NCwgNDcsIAotICAgIDE3NywgMjA4LCA4NCwgNDcsIDg2LCAyMDgsIDg0LCA0NywgMTgzLCAyMDgsIDg0LCA0NywgNDksIDUwLCAyMDgsIDg0LCA0NywgCi0gICAgMTEyLCAxMjEsIDIwOCwgODQsIDQ3LCAxNTMsIDIwNCwgNDYsIDIwOCwgODQsIDQ3LCAxNTMsIDI0MSwgMTc2LCAyMDgsIDg0LCAKLSAgICA0NywgMjExLCAyMzgsIDI0MSwgMTc2LCAyMDgsIDg0LCA0NywgMjExLCAyMzgsIDIwNCwgNDYsIDIwOCwgODQsIDQ3LCA5NiwgCi0gICAgMjA4LCA4NCwgMjQ0LCAxNDMsIDQ3LCAxNzcsIDIwOCwgODQsIDI0NCwgMTQzLCA0NywgODYsIDIwOCwgODQsIDI0NCwgMTQzLCAKLSAgICA0NywgMTgzLCAyMDgsIDg0LCAyNDQsIDE0MywgNDcsIDI0NiwgMTgsIDIwOCwgODQsIDE3MSwgMjQ2LCA2MiwgNDcsIDI1MCwgCi0gICAgMTk0LCAyMDgsIDg0LCAxNzEsIDI0NiwgNjIsIDQ3LCA5NiwgMjA4LCA4NCwgNTMsIDIwOCwgMTczLCAxNDIsIDE3NywgMjA4LCAKLSAgICA4NCwgNTMsIDIwOCwgMTczLCAxNDIsIDg2LCAyMDgsIDg0LCA1MywgMjA4LCAxNzMsIDE0MiwgMTgzLCAyMDgsIDg0LCA1MywgCi0gICAgMjA4LCAxNzMsIDE0MiwgMTUzLCAyMDQsIDQ2LCAyMDgsIDg0LCA1MywgMjA4LCAxNzMsIDE0MiwgMTUzLCAyNDEsIDE3NiwgCi0gICAgMjA4LCA4NCwgNTMsIDIwOCwgMTczLCAxNDIsIDIxMSwgMjM4LCAyNDEsIDE3NiwgMjA4LCA4NCwgNTMsIDIwOCwgMTczLCAKLSAgICAxNDIsIDIxMSwgMjM4LCAyMDQsIDQ2LCAyMDgsIDg0LCA1MywgMjA4LCAxNzMsIDE0MiwgOTYsIDIwOCwgODQsIDUzLCAzLCAKLSAgICA1MiwgMjM2LCAxMDYsIDk1LCAxNzcsIDIwOCwgODQsIDUzLCAzLCA1MiwgMjM2LCAxMDYsIDk1LCA4NiwgMjA4LCA4NCwgNTMsIAotICAgIDMsIDUyLCAyMzYsIDEwNiwgOTUsIDE4MywgMjA4LCA4NCwgNTMsIDMsIDUyLCAyMzYsIDEwNiwgOTUsIDIzNiwgMTA2LCAKLSAgICAyMTAsIDExLCAyMjksIDE1MSwgODAsIDIxMCwgMTEsIDIyOSwgMTUxLCA5NiwgMjA4LCA4NCwgNTMsIDExNSwgODYsIDIwOCwgCi0gICAgODQsIDQ3LCAxNzcsIDIwOCwgODQsIDUzLCA5NiwgNzYsIDE4MywgMjA4LCA4NCwgNDcsIDg2LCAyMDgsIDg0LCA1MywgMTE1LCAKLSAgICA5NiwgMjA4LCA4NCwgNDcsIDE4MywgMjA4LCA4NCwgNTMsIDk2LCA3NiwgMTc3LCAyMDgsIDg0LCA0NywgOTYsIDIwOCwgODQsIAotICAgIDIxOSwgMTQ2LCAyNTAsIDkxLCAxNzcsIDIwOCwgODQsIDIxOSwgMTQ2LCAyNTAsIDkxLCA4NiwgMjA4LCA4NCwgMjE5LCAKLSAgICAxNDYsIDI1MCwgOTEsIDE4MywgMjA4LCA4NCwgMjE5LCAxNDYsIDI1MCwgOTEsIDk2LCA2MiwgNDMsIDYxLCA0NywgMTc3LCAKLSAgICA2MiwgNDMsIDYxLCA0NywgODYsIDYyLCA0MywgNjEsIDQ3LCAxODMsIDYyLCA0MywgNjEsIDQ3LCAyNTAsIDE5NCwgMjA4LCAKLSAgICA4NCwgNTAsIDIwNywgOTIsIDQ3LCAyNTAsIDE5NCwgMjA4LCA4NCwgMjQ3LCAyNDgsIDIwNywgOTIsIDQ3LCAyNTAsIDE5NCwgCi0gICAgMjA4LCA4NCwgNDksIDIwNywgOTIsIDQ3LCAyNTAsIDE5NCwgMjA4LCA4NCwgMjA4LCAxNDUsIDIwNywgOTIsIDQ3LCAyMTYsIAotICAgIDc4LCAyMjcsIDIyMiwgMjE2LCA3OCwgMjE2LCAxNiwgMjIyLCAyMTIsIDIyNywgMjIyLCAyMjIsIDIxMiwgMjE2LCAxNiwgCi0gICAgMjM5LCAxNDcsIDI0NSwgMTY2LCAyNTAsIDkyLCAyNDYsIDU3LCAyNTAsIDE5MywgODYsIDYyLCA0NywgMjA5LCAzMSwgMjA4LCAKLSAgICAxNDMsIDk2LCAyNDEsIDMxLCAyNTAsIDk0LCAyMDksIDMxLCAyMTYsIDEyLCAxNzcsIDI0MSwgMzEsIDI1MCwgOTQsIDIwOSwgCi0gICAgMzEsIDIwOCwgMTQzLCA4NiwgMjQxLCAzMSwgMjUwLCA5NCwgMjA5LCAzMSwgMjI3LCAyMTgsIDE4MywgMjQxLCAzMSwgMjUwLCAKLSAgICA5NCwgNjIsIDk2LCAyNDEsIDMxLCAyNTAsIDk0LCA2MiwgMTc3LCAyNDEsIDMxLCAyNTAsIDk0LCA2MiwgODYsIDI0MSwgMzEsIAotICAgIDI1MCwgOTQsIDYyLCAxODMsIDI0MSwgMzEsIDI1MCwgOTQsIDE4MywgMjA4LCA4NCwgNTMsIDMsIDE2MywgMjA4LCAyMTEsIAotICAgIDIyNywgMjEyLCAxODMsIDIwOCwgODQsIDUzLCAzLCAxNjMsIDIwOCwgMjExLCAyMTYsIDUsIDE3NywgMjA4LCA4NCwgNTMsIAotICAgIDMsIDE2MywgMjA4LCAyMTEsIDIyNywgMjEyLCAxNzcsIDIwOCwgODQsIDUzLCAzLCAxNjMsIDIwOCwgMjExLCAyMTYsIDUsIAotICAgIDk2LCAyMDgsIDg0LCA1MywgMywgMTYzLCAyMDgsIDIxMSwgMjA2LCAyMTIsIDg2LCAyMDgsIDg0LCA1MywgMywgMTYzLCAKLSAgICAyMDgsIDIxMSwgMjA2LCAyMTIsIDk2LCAyMDgsIDg0LCA1MywgMywgMTYzLCAyMDgsIDIxMSwgMjQyLCA2OCwgODYsIDIwOCwgCi0gICAgODQsIDUzLCAzLCAxNjMsIDIwOCwgMjExLCAyNDIsIDY4LCA2MiwgMjQ1LCA4NiwgMTgzLCAyNSwgOTYsIDQ3LCA2MiwgMjQ1LCAKLSAgICA4NiwgMTgzLCAyNSwgODYsIDQ3LCA2MiwgMjQ1LCA4NiwgMTc3LCAyNSwgOTYsIDQ3LCA2MiwgMjQ1LCA4NiwgMTc3LCAyNSwgCi0gICAgODYsIDQ3LCA2MiwgMjQ1LCA4NiwgOTYsIDI1LCAxNzcsIDQ3LCA2MiwgMjQ1LCA4NiwgODYsIDI1LCAxNzcsIDQ3LCA2MiwgCi0gICAgMjQ1LCA4NiwgOTYsIDI1LCAxODMsIDQ3LCA2MiwgMjQ1LCA4NiwgODYsIDI1LCAxODMsIDQ3LCAyMTYsIDU1LCA1MywgMTIxLCAKLSAgICAyMjcsIDIyMiwgMjE2LCA1NSwgNTMsIDEyMSwgMjE2LCAxNiwgMjE2LCA1NSwgNTMsIDExMiwgMjI3LCAyMjIsIDIxNiwgNTUsIAotICAgIDUzLCAxMTIsIDIxNiwgMTYsIDIxNiwgNTUsIDUzLCA0OSwgMjA2LCAyMjQsIDIxNiwgNTUsIDUzLCA1MCwgMjA2LCAyMjQsIAotICAgIDIxNiwgNTUsIDUzLCA0OSwgMjQyLCA3MCwgMjE2LCA1NSwgNTMsIDUwLCAyNDIsIDcwLCAxNzcsIDYxLCA1MywgMjM5LCAKLSAgICAxMjAsIDI0OCwgMjMxLCAzLCAyMzYsIDEwNiwgMTQyLCAxMTIsIDI1MCwgOTUsIDIzMSwgNTAsIDM0LCAyMTYsIDE0NCwgCi0gICAgMjQ3LCAyMzMsIDI0OCwgMjQ4LCA5OCwgMywgMTU3LCAyMDMsIDE5NiwgNDMsIDIwMywgMTk2LCA0MywgMjYsIDIwMywgMTk2LCAKLSAgICA2MiwgNTEsIDI0NiwgMjE1LCA2MiwgMjQzLCAyMjIsIDI0NiwgMjE1LCAyMDcsIDE3NCwgNjIsIDIxOCwgMjU1LCAyMzYsIAotICAgIDEwNiwgNjIsIDIyMCwgODEsIDYyLCAyMjAsIDgxLCA2MiwgMjI1LCAxMCwgMjA2LCAyMjMsIDIwOCwgODYsIDI0NiwgMjE1LCAKLSAgICA2MiwgMjI1LCAxMCwgMjQyLCA2OSwgMjA4LCA4NiwgMjQ2LCAyMTUsIDYyLCAyMjUsIDEwLCAyMjcsIDIxNywgMjA4LCA4NiwgCi0gICAgMjQ2LCAyMTUsIDYyLCAyMjUsIDEwLCAyMTYsIDExLCAyMDgsIDg2LCAyNDYsIDIxNSwgMjA4LCAxNDUsIDE2MiwgNjIsIAotICAgIDI0NiwgNjEsIDI0NywgMjQ4LCAxNjIsIDYyLCAyNDYsIDYxLCAxNTcsIDIzOSwgMTQ3LCAyMTgsIDYxLCA2MiwgMjQ1LCA4MiwgCi0gICAgMjE1LCAxOTgsIDE1NywgMjM5LCAxNDcsIDIxOCwgNjEsIDYyLCAyNDUsIDgyLCA2MSwgMjM5LCAxNDcsIDIxOCwgNjEsIAotICAgIDI0NSwgODIsIDIxNSwgMTk4LCA2MSwgMjM5LCAxNDcsIDIxOCwgNjEsIDI0NSwgODIsIDUxLCAyMTgsIDM0LCAyMzEsIDMxLCAKLSAgICAyMDYsIDI1MCwgNTQsIDk2LCAyMDcsIDEzNCwgNTMsIDMsIDIwOCwgODYsIDI1MCwgOTMsIDE3NywgMjA3LCAxMzQsIDUzLCAKLSAgICAzLCAyMDgsIDg2LCAyNTAsIDkzLCA4NiwgMjA3LCAxMzQsIDUzLCAzLCAyMDgsIDg2LCAyNTAsIDkzLCAxODMsIDIwNywgCi0gICAgMTM0LCA1MywgMywgMjA4LCA4NiwgMjUwLCA5MywgMTgwLCA2LCAxLCAyNTAsIDAsIDE4MCwgNiwgMSwgMjQ3LCAxODEsIAotICAgIDE4MCwgNiwgMSwgMjA2LCA1MywgMTgwLCA2LCAxLCAyMzgsIDUwLCAxODAsIDYsIDEsIDI0MywgMTA4LCAxODAsIDYsIDEsIAotICAgIDIwMywgMjQsIDE4MCwgNiwgMSwgMjAyLCA2NCwgMTgwLCA2LCAxLCAyNDEsIDI1MCwgMTgwLCA2LCAxLCAyMDIsIDg5LCAKLSAgICAxODAsIDYsIDEsIDIzMCwgMTg4LCAxODAsIDYsIDEsIDgxLCAyMzAsIDE4OCwgMTgwLCA2LCAxLCA3NSwgMTgwLCA2LCAxLCAKLSAgICAyNDMsIDEyOCwgMTgwLCA2LCAxLCAyMzAsIDEwLCAxODAsIDYsIDEsIDIyNywgNzksIDE4MCwgNiwgMSwgMjIzLCAxNjcsIAotICAgIDE4MCwgNiwgMSwgMjIzLCA2OSwgMTgwLCA2LCAxLCAyMjAsIDIwLCAxODAsIDYsIDEsIDIxOCwgNTYsIDE4MCwgNiwgMSwgCi0gICAgMjE1LCAyNDQsIDE4MCwgNiwgMSwgMjEyLCA0MSwgMTgwLCA2LCAxLCAyMDcsIDE2MSwgMTgwLCA2LCAxLCAyMDcsIDEwLCAKLSAgICAxODAsIDYsIDEsIDIzOSwgMTIzLCAxODAsIDYsIDEsIDIzNywgMjMsIDE4MCwgNiwgMSwgMjE5LCAyMTcsIDE4MCwgNiwgMSwgCi0gICAgMjE5LCAzNCwgMTgwLCA2LCAxLCAyMTIsIDIwMiwgMTgwLCA2LCAxLCAyMDcsIDI1NSwgMTgwLCA2LCAxLCAyNDYsIDEwNCwgCi0gICAgMTgwLCA2LCAxLCAyMTMsIDkwLCAxODAsIDYsIDEsIDIwMywgMzAsIDE4MCwgNiwgMSwgMjAzLCAzMiwgMTgwLCA2LCAxLCAKLSAgICAyMDMsIDY0LCAxODAsIDYsIDEsIDIxMSwgMjA0LCAxNTIsIDE4MCwgNiwgMSwgMjAyLCAyMTMsIDE4MCwgNiwgMSwgNSwgCi0gICAgMjAyLCAxODMsIDE4MCwgNiwgMSwgNSwgMjAyLCAxODQsIDMsIDIwOSwgMjQ4LCAxODAsIDYsIDEsIDIwMiwgMjQ3LCAxODAsIAotICAgIDYsIDEsIDIzMCwgMjI5LCA1LCAyMDIsIDE4MywgMTgwLCA2LCAxLCAyNDgsIDczLCAyMDIsIDE4MywgMTgwLCA2LCAxLCAKLSAgICAyMzAsIDIyOSwgMjQ4LCA3MywgMjAyLCAxODMsIDE4MCwgNiwgMSwgMjM5LCAyMzUsIDE4MCwgNiwgMSwgMjMwLCAxODYsIAotICAgIDE4MCwgNiwgMSwgMjEyLCAyMDEsIDE4MCwgNiwgMSwgMjA4LCA2MCwgNjMsIDE4MCwgNiwgMSwgMjI3LCAyNTIsIDIyMywgCi0gICAgMTY3LCAxODAsIDUsIDEsIDI1MCwgMCwgMTgwLCA1LCAxLCAyNDcsIDE4MSwgMTgwLCA1LCAxLCAyMDYsIDUzLCAxODAsIDUsIAotICAgIDEsIDIzOCwgNTAsIDE4MCwgNSwgMSwgMjQzLCAxMDgsIDE4MCwgNSwgMSwgMjAzLCAyNCwgMTgwLCA1LCAxLCAyMDIsIDY0LCAKLSAgICAxODAsIDUsIDEsIDI0MSwgMjUwLCAxODAsIDUsIDEsIDIwMiwgODksIDE4MCwgNSwgMSwgMjMwLCAxODgsIDE4MCwgNSwgMSwgCi0gICAgODEsIDIzMCwgMTg4LCAxODAsIDUsIDEsIDc1LCAxODAsIDUsIDEsIDI0MywgMTI4LCAxODAsIDUsIDEsIDIzMCwgMTAsIAotICAgIDE4MCwgNSwgMSwgMjI3LCA3OSwgMTgwLCA1LCAxLCAyMjMsIDE2NywgMTgwLCA1LCAxLCAyMjMsIDY5LCAxODAsIDUsIDEsIAotICAgIDIyMCwgMjAsIDE4MCwgNSwgMSwgMjE4LCA1NiwgMTgwLCA1LCAxLCAyMTUsIDI0NCwgMTgwLCA1LCAxLCAyMTIsIDQxLCAKLSAgICAxODAsIDUsIDEsIDIwNywgMTYxLCAxODAsIDUsIDEsIDIwNywgMTAsIDE4MCwgNSwgMSwgMjM5LCAxMjMsIDE4MCwgNSwgMSwgCi0gICAgMjM3LCAyMywgMTgwLCA1LCAxLCAyMTksIDIxNywgMTgwLCA1LCAxLCAyMTksIDM0LCAxODAsIDUsIDEsIDIxMiwgMjAyLCAKLSAgICAxODAsIDUsIDEsIDIwNywgMjU1LCAxODAsIDUsIDEsIDI0NiwgMTA0LCAxODAsIDUsIDEsIDIxMywgOTAsIDE4MCwgNSwgMSwgCi0gICAgMjAzLCAzMCwgMTgwLCA1LCAxLCAyMDMsIDMyLCAxODAsIDUsIDEsIDIwMywgNjQsIDE4MCwgNSwgMSwgMjExLCAyMDQsIAotICAgIDE1MiwgMTgwLCA1LCAxLCAyMDIsIDIxMywgMTgwLCA1LCAxLCA1LCAyMDIsIDE4MywgMTgwLCA1LCAxLCA1LCAyMDIsIDE4NCwgCi0gICAgMywgMjA5LCAyNDgsIDE4MCwgNSwgMSwgMjAyLCAyNDcsIDE4MCwgNSwgMSwgMjMwLCAyMjksIDUsIDIwMiwgMTgzLCAxODAsIAotICAgIDUsIDEsIDI0OCwgNzMsIDIwMiwgMTgzLCAxODAsIDUsIDEsIDIzMCwgMjI5LCAyNDgsIDczLCAyMDIsIDE4MywgMTgwLCA1LCAKLSAgICAxLCAyMzksIDIzNSwgMTgwLCA1LCAxLCAyMzAsIDE4NiwgMTgwLCA1LCAxLCAyMTIsIDIwMSwgMTgwLCA1LCAxLCAyMDgsIAotICAgIDYwLCA2MywgMTgwLCA1LCAxLCAyMjcsIDI1MiwgMjIzLCAxNjcsIDgsIDYsIDEsIDIyOCwgMTMxLCAzLCA1MiwgMTQyLCA4LCAKLSAgICA1LCAxLCAyMjgsIDEzMSwgMywgNTIsIDE0MiwgOCwgNiwgMSwgMjI4LCAxMzEsIDMsIDEwMSwgMjA4LCAyMjcsIDgsIDYsIDEsIAotICAgIDIxOSwgMTg1LCAzLCA5NSwgOCwgNiwgMSwgMjE3LCAxLCAzLCAyMDksIDI0OCwgOCwgNSwgMSwgMzQsIDMsIDk1LCA4LCA1LCAKLSAgICAxLCAyMTAsIDcwLCAzLCAyNDMsIDIyOCwgOTUsIDgsIDYsIDEsIDIzNywgMTcyLCAzLCAyNDQsIDIwLCA4LCA1LCAxLCAyMzcsIAotICAgIDE3MiwgMywgMjQ0LCAyMCwgOCwgNiwgMSwgMjMwLCA1NSwgMywgMjQ0LCAyMCwgOCwgNSwgMSwgMjMwLCA1NSwgMywgMjQ0LCAKLSAgICAyMCwgOCwgNiwgMSwgMjAyLCAxNjAsIDMsIDI0NCwgMjAsIDgsIDUsIDEsIDIwMiwgMTYwLCAzLCAyNDQsIDIwLCA4LCA2LCAKLSAgICAxLCAyNTEsIDIsIDgsIDYsIDEsIDIyNiwgMTg2LCAzLCAxMTMsIDgsIDYsIDEsIDIwNywgMTc0LCA2MywgOCwgNiwgMSwgCi0gICAgMjA3LCAxNzQsIDI1MSwgMiwgOCwgNSwgMSwgMjA2LCAxNjUsIDMsIDUwLCAxMTMsIDgsIDYsIDEsIDIwNCwgMTQ1LCAzLCAKLSAgICAxMTMsIDgsIDUsIDEsIDIwNCwgMTQ1LCAzLCAxMTMsIDgsIDUsIDEsIDIwNiwgMTY1LCAzLCAyNDUsIDk1LCA4LCA2LCAxLCAKLSAgICAxNjIsIDIzNywgMTcxLCA4LCA1LCAxLCAxNjIsIDIzNywgMTcxLCA4LCA1LCAxLCAyMDksIDI0NiwgMjE4LCAxOTIsIDgsIDUsIAotICAgIDEsIDE4OCwgMywgMjIxLCAxNjMsIDgsIDUsIDEsIDIwNywgMTc0LCAyMTcsIDEsIDMsIDIwOSwgMjQ4LCA4LCA1LCAxLCAKLSAgICAxNTgsIDMsIDEyNCwgMjE1LCAyNTMsIDIzMSwgNiwgOCwgMSwgNSwgNiwgMjA3LCAxNzQsIDc0LCA4LCAyMTAsIDI0NiwgNSwgCi0gICAgMSwgMjMwLCAxODQsIDY1LCAxLCA2LCAyMDYsIDE2NCwgOCwgNiwgMSwgMjE1LCA5NCwgMywgMjEwLCAxNjksIDIwOSwgMjQ4LCAKLSAgICA4LCA2LCAxLCAyMDIsIDE2MCwgMywgMjEwLCAxNjksIDIwOSwgMjQ4LCA4NCwgNiwgMSwgMjUxLCAyNCwgODQsIDUsIDEsIAotICAgIDI1MSwgMjQsIDg0LCA2LCAxLCAyMDUsIDIyNywgODQsIDUsIDEsIDIwNSwgMjI3LCA4NCwgNiwgMSwgMjM4LCAyMzUsIDg0LCAKLSAgICA1LCAxLCAyMzgsIDIzNSwgODQsIDYsIDEsIDI0NCwgMTgwLCA4NCwgNSwgMSwgMjQ0LCAxODAsIDg0LCA2LCAxLCAyNDEsIAotICAgIDE0NCwgODQsIDUsIDEsIDI0MSwgMTQ0LCA4NCwgNiwgMSwgMjExLCAyNDMsIDg0LCA1LCAxLCAyMTEsIDI0MywgODQsIDYsIAotICAgIDEsIDIwMiwgOTksIDg0LCA1LCAxLCAyMDIsIDk5LCA4NCwgNiwgMSwgMjM3LCA4MCwgODQsIDUsIDEsIDIzNywgODAsIDg0LCAKLSAgICA2LCAxLCAyMDksIDcyLCA4NCwgNSwgMSwgMjA5LCA3MiwgODQsIDYsIDEsIDIzNSwgMTY4LCA4NCwgNSwgMSwgMjM1LCAxNjgsIAotICAgIDg0LCA2LCAxLCAyMjksIDI1MiwgODQsIDUsIDEsIDIyOSwgMjUyLCA4NCwgNiwgMSwgMjI3LCAyNDgsIDg0LCA1LCAxLCAKLSAgICAyMjcsIDI0OCwgODQsIDYsIDEsIDIyNCwgMTU1LCA4NCwgNSwgMSwgMjI0LCAxNTUsIDg0LCA2LCAxLCAyMjIsIDEwMCwgODQsIAotICAgIDUsIDEsIDIyMiwgMTAwLCA4NCwgNiwgMSwgMjI4LCAyMjUsIDg0LCA1LCAxLCAyMjgsIDIyNSwgODQsIDYsIDEsIDc4LCA4NCwgCi0gICAgNSwgMSwgNzgsIDg0LCA2LCAxLCAyMTgsIDE2NywgODQsIDUsIDEsIDIxOCwgMTY3LCA4NCwgNiwgMSwgMjE1LCAyMjcsIDg0LCAKLSAgICA1LCAxLCAyMTUsIDIyNywgODQsIDYsIDEsIDIxMiwgMTMyLCA4NCwgNSwgMSwgMjEyLCAxMzIsIDg0LCA2LCAxLCAyMDksIAotICAgIDIwNywgODQsIDUsIDEsIDIwOSwgMjA3LCA4NCwgNiwgMSwgMjA3LCAzOSwgODQsIDUsIDEsIDIwNywgMzksIDg0LCA2LCAxLCAKLSAgICAyNDAsIDI2LCA4NCwgNSwgMSwgMjQwLCAyNiwgODQsIDYsIDEsIDIyOSwgMTIyLCA4NCwgNSwgMSwgMjI5LCAxMjIsIDg0LCAKLSAgICA2LCAxLCAyMTcsIDIwMiwgODQsIDUsIDEsIDIxNywgMjAyLCA4NCwgNiwgMSwgMjIwLCAxMiwgODQsIDUsIDEsIDIyMCwgMTIsIAotICAgIDg0LCA2LCAxLCAyNDMsIDIyNiwgMjUxLCAzMCwgODQsIDUsIDEsIDI0MywgMjI2LCAyNTEsIDMwLCA4NCwgNiwgMSwgMzgsIAotICAgIDg0LCAyNTEsIDU5LCA4NCwgNSwgMSwgMzgsIDg0LCAyNTEsIDU5LCA4NCwgNiwgMSwgMjQ1LCAxMTMsIDI0MSwgMTQ0LCA4NCwgCi0gICAgNSwgMSwgMjQ1LCAxMTMsIDI0MSwgMTQ0LCA4NCwgNiwgMSwgMjQzLCAyMjYsIDIyOSwgMjUyLCA4NCwgNSwgMSwgMjQzLCAKLSAgICAyMjYsIDIyOSwgMjUyLCA4NCwgNiwgMSwgMjQzLCAyMjYsIDIyMiwgMTAwLCA4NCwgNSwgMSwgMjQzLCAyMjYsIDIyMiwgCi0gICAgMTAwLCA4NCwgNiwgMSwgMjQ1LCAxMTMsIDIyMiwgMTAwLCA4NCwgNSwgMSwgMjQ1LCAxMTMsIDIyMiwgMTAwLCA4NCwgNiwgCi0gICAgMSwgMzgsIDg0LCAyMjAsIDEyLCA4NCwgNSwgMSwgMzgsIDg0LCAyMjAsIDEyLCA4NCwgNiwgMSwgMjE0LCAyNDYsIDg0LCA1LCAKLSAgICAxLCAyMTQsIDI0NiwgODQsIDYsIDEsIDI0NSwgMTI4LCAyMTMsIDM1LCA4NCwgNSwgMSwgMjQ1LCAxMjgsIDIxMywgMzUsIAotICAgIDg0LCA2LCAxLCAzOCwgODQsIDIxMywgMzUsIDg0LCA1LCAxLCAzOCwgODQsIDIxMywgMzUsIDg0LCA2LCAxLCAzOCwgODQsIAotICAgIDI0MSwgNywgODQsIDUsIDEsIDM4LCA4NCwgMjQxLCA3LCA4NCwgNiwgMSwgMjUxLCA0MywgMjI5LCAxMjcsIDg0LCA1LCAxLCAKLSAgICAyNTEsIDQzLCAyMjksIDEyNywgODQsIDYsIDEsIDI0MywgMjI2LCAyMzYsIDEwNywgODQsIDUsIDEsIDI0MywgMjI2LCAyMzYsIAotICAgIDEwNywgODQsIDYsIDEsIDM4LCA4NCwgMjM2LCAxMDcsIDg0LCA1LCAxLCAzOCwgODQsIDIzNiwgMTA3LCA4NCwgNiwgMSwgCi0gICAgMzgsIDg0LCAxNTIsIDg0LCA1LCAxLCAzOCwgODQsIDE1MiwgODQsIDYsIDEsIDIyOCwgMTMwLCAxNTIsIDg0LCA1LCAxLCAKLSAgICAyMjgsIDEzMCwgMTUyLCA4NCwgNiwgMSwgMzgsIDg0LCAyMzcsIDQyLCA4NCwgNSwgMSwgMzgsIDg0LCAyMzcsIDQyLCA4NCwgCi0gICAgNiwgMSwgMzgsIDg0LCAyMzcsIDgzLCA4NCwgNSwgMSwgMzgsIDg0LCAyMzcsIDgzLCA4NCwgNiwgMSwgMzgsIDg0LCAyMzgsIAotICAgIDIzMCwgODQsIDUsIDEsIDM4LCA4NCwgMjM4LCAyMzAsIDg0LCA2LCAxLCAzOCwgODQsIDI0MywgMTMxLCA4NCwgNSwgMSwgCi0gICAgMzgsIDg0LCAyNDMsIDEzMSwgODQsIDYsIDEsIDM4LCA4NCwgMjEzLCAxLCA4NCwgNSwgMSwgMzgsIDg0LCAyMTMsIDEsIDg0LCAKLSAgICA2LCAxLCAzOCwgMjIxLCA1NCwgMjEzLCAxLCA4NCwgNSwgMSwgMzgsIDIyMSwgNTQsIDIxMywgMSwgODQsIDYsIDEsIDM4LCAKLSAgICAyMjEsIDU0LCAyMjIsIDE1MSwgODQsIDUsIDEsIDM4LCAyMjEsIDU0LCAyMjIsIDE1MSwgODQsIDYsIDEsIDM4LCAyMjEsIAotICAgIDU0LCAyMjAsIDI0OCwgODQsIDUsIDEsIDM4LCAyMjEsIDU0LCAyMjAsIDI0OCwgODQsIDYsIDEsIDM4LCAyMjEsIDU0LCAKLSAgICAyMDQsIDc3LCA4NCwgNSwgMSwgMzgsIDIyMSwgNTQsIDIwNCwgNzcsIDg0LCAxNiwgMjMwLCAxOCwgODQsIDE2LCAyMjQsIAotICAgIDE1NiwgMjE1LCAyMjcsIDg0LCAxNiwgMjE4LCAxNjgsIDIxNSwgMjI3LCA4NCwgMTYsIDIxMSwgODUsIDg0LCAxNiwgMjA5LCAKLSAgICAyMDgsIDIxNSwgMjI3LCA4NCwgMTYsIDIyOSwgMTIzLCAyMTUsIDIyNywgODQsIDE2LCAyMTMsIDIsIDIxMiwgMTMyLCA4NCwgCi0gICAgNiwgMSwgMjQ1LCAxMTMsIDIxMywgMzUsIDg0LCA1LCAxLCAyNDUsIDExMywgMjEzLCAzNSwgODQsIDYsIDEsIDI0NSwgMTEzLCAKLSAgICAyMzgsIDIzMCwgODQsIDUsIDEsIDI0NSwgMTEzLCAyMzgsIDIzMCwgODQsIDM5LCAyMjIsIDEwMSwgNTUsIDg0LCAzOSwgCi0gICAgMjExLCAxOTcsIDI1MCwgNjcsIDg0LCAzOSwgMjExLCAxOTcsIDIyNywgMTg2LCA4NCwgNiwgMSwgMjQ4LCAxNiwgMjI5LCAKLSAgICAxMjcsIDg0LCA1LCAxLCAyNDgsIDE2LCAyMjksIDEyNywgODQsIDM4LCAyMjEsIDU0LCAyMzksIDEwMiwgMjExLCA2MSwgODQsIAotICAgIDM4LCAyMjEsIDU0LCAyNDMsIDE2NywgMjE3LCA0NywgODIsIDg0LCAzOCwgMjIxLCA1NCwgMjMxLCAzMCwgMjE3LCA0NywgCi0gICAgODIsIDg0LCAzOCwgMjIxLCA1NCwgMjA2LCA0MCwgMjQzLCAxNDEsIDg0LCAyMzksIDEzOCwgMTE4LCAyMzcsIDEzNywgODQsIAotICAgIDIzOSwgMTAyLCAyMTEsIDYxLCA4NCwgMjI0LCAyNSwgMjQzLCAxNDEsIDExNCwgNSwgMSwgMjUwLCAyMzEsIDExNCwgNSwgMSwgCi0gICAgMjQ4LCAyNDIsIDExNCwgNSwgMSwgMjM4LCAyMzQsIDExNCwgNSwgMSwgMjQzLCA5MywgMTE0LCA1LCAxLCAyNDEsIDkyLCAKLSAgICAxMTQsIDUsIDEsIDIwNSwgMjEzLCAxMTQsIDUsIDEsIDIwMiwgODcsIDExNCwgNSwgMSwgMjA5LCAyMzAsIDExNCwgNSwgMSwgCi0gICAgMjMxLCA0OSwgMTE0LCA1LCAxLCAyMzAsIDQsIDExNCwgNSwgMSwgMjI4LCAyLCAxMTQsIDUsIDEsIDIyNSwgMTIyLCAxMTQsIAotICAgIDUsIDEsIDIyMywgNzQsIDExNCwgNSwgMSwgMjIwLCAzMSwgMTE0LCA1LCAxLCAyMTksIDkxLCAxMTQsIDUsIDEsIDIwMiwgCi0gICAgNzYsIDExNCwgNSwgMSwgMjE2LCAyMDIsIDExNCwgNSwgMSwgMjE0LCAyNDMsIDExNCwgNSwgMSwgMjA5LCAyMTgsIDExNCwgCi0gICAgNSwgMSwgMjA2LCAyNTUsIDExNCwgNSwgMSwgMjE4LCAyMDAsIDExNCwgNSwgMSwgMjI5LCAxMzIsIDExNCwgNSwgMSwgMjM4LCAKLSAgICAxMTAsIDExNCwgNSwgMSwgMjE3LCAxMTEsIDExNCwgNSwgMSwgMjEyLCAyNTUsIDExNCwgNSwgMSwgMjQ2LCAxMjksIDExNCwgCi0gICAgNSwgMSwgMjQ3LCA2MSwgMTE0LCA1LCAxLCAyMzAsIDEzMywgMTE0LCA1LCAxLCAyNDYsIDY4LCAxMTQsIDUsIDEsIDI0NiwgCi0gICAgMTgzLCAxMTQsIDUsIDEsIDIwMywgMTgwLCAxMTQsIDUsIDEsIDIzMCwgMTQ2LCAxMTQsIDUsIDEsIDIzNywgMTU0LCAxMTQsIAotICAgIDUsIDEsIDIzNywgNjcsIDExNCwgNSwgMSwgMjM2LCAyNTQsIDExNCwgNSwgMSwgMjA0LCA2MiwgMTE0LCA1LCAxLCAyMzcsIAotICAgIDkyLCAxMTQsIDUsIDEsIDIzNiwgMTMyLCAxMTQsIDUsIDEsIDIwMiwgMjQ5LCAxMTQsIDUsIDEsIDI1MSwgOTgsIDIwOCwgCi0gICAgMjQ3LCAxLCAxOTgsIDIwOCwgMjQ3LCAxLCAyMDMsIDEwNiwgMjA4LCAyNDcsIDEsIDIwMywgMTA1LCAyMDgsIDI0NywgMSwgCi0gICAgMjAzLCA5NSwgMjA4LCAyNDcsIDEsIDIwMywgOTMsIDIwOCwgMjQ3LCAxLCAyNDgsIDExMiwgMjUxLCAxNDAsIDIwMywgODgsIAotICAgIDIwOCwgMjQ3LCAxLCAyMDMsIDg4LCAyMDgsIDI0NywgMSwgMjAzLCAxMDMsIDIwOCwgMjQ3LCAxLCAyMDMsIDEwMCwgMjA4LCAKLSAgICAyNDcsIDEsIDIwMywgMTAyLCAyMDgsIDI0NywgMSwgMjAzLCAxMDEsIDIwOCwgMjQ3LCAxLCAyMDMsIDE1LCAyMDgsIDI0NywgCi0gICAgMSwgMjAzLCA5NywgMjA4LCAyNDcsIDEsIDIwMywgODYsIDIwOCwgMjQ3LCAxLCAyMDcsIDIwMCwgMjAzLCA4NiwgMjA4LCAKLSAgICAyNDcsIDEsIDIwMywgODMsIDIwOCwgMjQ3LCAxLCAyMDMsIDkxLCAyMDgsIDI0NywgMSwgMjQ4LCAxMTIsIDI1MSwgMTQwLCAKLSAgICAyMDMsIDkxLCAyMDgsIDI0NywgMSwgMjA3LCAyMDAsIDIwMywgOTEsIDIwOCwgMjQ3LCAxLCAyMDMsIDkwLCAyMDgsIDI0NywgCi0gICAgMSwgMjAzLCAxMTAsIDIwOCwgMjQ3LCAxLCAyMDMsIDg0LCAyMDgsIDI0NywgMSwgMjA3LCAyMDAsIDIwMywgODQsIDIwOCwgCi0gICAgMjQ3LCAxLCAyMDMsIDczLCAyMDgsIDI0NywgMSwgMjA3LCAyMDAsIDIwMywgNzMsIDIwOCwgMjQ3LCAxLCAyMDMsIDExLCAKLSAgICAyMDgsIDI0NywgMSwgMjAzLCA1NCwgMjA4LCAyNDcsIDEsIDI1MSwgNzEsIDIwMywgNTQsIDIwOCwgMjQ3LCAxLCAyMDcsIAotICAgIDIwMCwgMjAzLCA1NCwgMjA4LCAyNDcsIDEsIDIwMywgODIsIDIwOCwgMjQ3LCAxLCAyMDMsIDgxLCAyMDgsIDI0NywgMSwgCi0gICAgMjAzLCA3OCwgMjA4LCAyNDcsIDEsIDIwNywgMjAwLCAyMDMsIDkyLCAyMDgsIDI0NywgMSwgMjA3LCAyMDAsIDIwMywgNzYsIAotICAgIDIwOCwgMjQ3LCAxLCAyMDMsIDc0LCAyMDgsIDI0NywgMSwgMjAyLCAyMTMsIDIwOCwgMjQ3LCAxLCAyMDMsIDcxLCAyMDgsIAotICAgIDI0NywgMSwgMjAzLCA3MCwgMjA4LCAyNDcsIDEsIDIwMywgOTQsIDIwOCwgMjQ3LCAxLCAyMDcsIDIwMCwgMjAzLCA5NCwgCi0gICAgMjA4LCAyNDcsIDEsIDI1MCwgNCwgMjAzLCA5NCwgMjA4LCAyNDcsIDEsIDIwMywgNjksIDIwOCwgMjQ3LCAxLCAyMDMsIDY3LCAKLSAgICAyMDgsIDI0NywgMSwgMjAzLCA2OCwgMjA4LCAyNDcsIDEsIDIwMywgNjYsIDIwOCwgMjQ3LCAxLCAyMDMsIDY1LCAyMDgsIAotICAgIDI0NywgMSwgMjAzLCAxMDQsIDIwOCwgMjQ3LCAxLCAyMDMsIDYzLCAyMDgsIDI0NywgMSwgMjAzLCA2MSwgMjA4LCAyNDcsIAotICAgIDEsIDIwMywgNjAsIDIwOCwgMjQ3LCAxLCAyMDMsIDU4LCAyMDgsIDI0NywgMSwgMjAzLCA1NSwgMjA4LCAyNDcsIDEsIDIwOSwgCi0gICAgMTk5LCAyMDMsIDU1LCAyMDgsIDI0NywgMSwgMjAzLCA1MywgMjA4LCAyNDcsIDEsIDIwMywgNTIsIDIwOCwgMjQ3LCAxLCAKLSAgICAyMDIsIDI0NywgMjA4LCAyNDcsIDY1LCAxLCAyMjgsIDEwMywgODIsIDIwOCwgMjQ3LCAyMTMsIDEzMSwgODIsIDIwOCwgCi0gICAgMjQ3LCAxMDksIDIzMCwgOTYsIDMzLCA0LCAyMjcsIDQ4LCAzMywgNCwgMjI0LCA4MSwgMzMsIDQsIDIxNSwgMjI1LCAzMywgCi0gICAgNCwgMjEyLCAxMiwgMzMsIDQsIDIxMiwgMjQxLCAzMywgNCwgMjQ4LCAyMiwgMzMsIDQsIDIwOCwgMTcyLCAzMywgNCwgMjQ1LCAKLSAgICAyNTMsIDMzLCA0LCAyMjEsIDE4OSwgMzMsIDQsIDIyMCwgMjMyLCAzMywgNCwgMjM4LCA0NSwgMjIwLCA5NywgMzMsIDQsIAotICAgIDIwMiwgMTYsIDMzLCA0LCAyNDMsIDExMSwgMzMsIDQsIDI0NCwgODksIDMzLCA0LCAyMzAsIDEwMCwgMzMsIDQsIDIwOSwgCi0gICAgNDYsIDMzLCA0LCAyNDYsIDExNSwgMzMsIDQsIDIxOCwgMTc5LCAzMywgNCwgMjE4LCA2OCwgMzMsIDQsIDIzOCwgMTI1LCAKLSAgICAzMywgNCwgMjM4LCAxMjEsIDMzLCA0LCAyMzgsIDEyMiwgMzMsIDQsIDIzOCwgMTIzLCAzMywgNCwgMjExLCAxNjQsIDMzLCAKLSAgICA0LCAyMTEsIDExOSwgMzMsIDQsIDIxMSwgMTMyLCAzMywgNCwgMjExLCAxNjMsIDMzLCA0LCAyMTEsIDEzNywgMzMsIDQsIAotICAgIDIxMSwgMTM4LCAzMywgNCwgMjExLCAxMjQsIDMzLCA0LCAyNDcsIDUsIDMzLCA0LCAyNDYsIDI0MCwgMzMsIDQsIDI0NiwgCi0gICAgMjQyLCAzMywgNCwgMjQ3LCA0LCAzMywgNCwgMjQ3LCAyLCAzMywgNCwgMjQ3LCAzLCAzMywgNCwgMjQ2LCAyNDEsIDMzLCA0LCAKLSAgICAyMDEsIDIzNSwgMzMsIDQsIDIwMSwgMjEzLCAzMywgNCwgMjAxLCAyMjYsIDMzLCA0LCAyMDEsIDIzNCwgMzMsIDQsIDIwMSwgCi0gICAgMjI5LCAzMywgNCwgMjAxLCAyMzAsIDMzLCA0LCAyMDEsIDIxOCwgMzMsIDQsIDI0NywgMCwgMzMsIDQsIDI0NiwgMjQzLCAKLSAgICAzMywgNCwgMjQ2LCAyNDUsIDMzLCA0LCAyNDYsIDI1NSwgMzMsIDQsIDI0NiwgMjUzLCAzMywgNCwgMjQ2LCAyNTQsIDMzLCAKLSAgICA0LCAyNDYsIDI0NCwgMzMsIDQsIDIxNywgMTMsIDMzLCA0LCAyMTcsIDMsIDMzLCA0LCAyMTcsIDksIDMzLCA0LCAyMTcsIAotICAgIDEyLCAzMywgNCwgMjE3LCAxMCwgMzMsIDQsIDIxNywgMTEsIDMzLCA0LCAyMTcsIDgsIDMzLCA0LCAyMjgsIDE0MSwgMzMsIAotICAgIDQsIDIyOCwgMTMzLCAzMywgNCwgMjI4LCAxMzYsIDMzLCA0LCAyMjgsIDE0MCwgMzMsIDQsIDIyOCwgMTM3LCAzMywgNCwgCi0gICAgMjI4LCAxMzgsIDMzLCA0LCAyMjgsIDEzNCwgMzMsIDQsIDIwMywgMTQwLCAzMywgNCwgMjAzLCAxMjcsIDMzLCA0LCAyMDMsIAotICAgIDEzNSwgMzMsIDQsIDIwMywgMTM5LCAzMywgNCwgMjAzLCAxMzcsIDMzLCA0LCAyMDMsIDEzOCwgMzMsIDQsIDIwMywgMTM0LCAKLSAgICAzMywgNCwgMjM3LCAxODMsIDMzLCA0LCAyMzcsIDE3MywgMzMsIDQsIDIzNywgMTc2LCAzMywgNCwgMjM3LCAxODIsIDMzLCAKLSAgICA0LCAyMzcsIDE3OCwgMzMsIDQsIDIzNywgMTc5LCAzMywgNCwgMjM3LCAxNzUsIDM5LCAzNiwgMSwgMjQ4LCAxNjIsIDM5LCAKLSAgICAzNiwgMSwgMjA2LCA1NSwgMzksIDM2LCAxLCAyMzgsIDEwNSwgMzksIDM2LCAxLCAyNDQsIDc1LCAzOSwgMzYsIDEsIDIwMiwgCi0gICAgNzEsIDM5LCAzNiwgMSwgMjAyLCA5MiwgMzksIDM2LCAxLCAxNzMsIDM5LCAzNiwgMSwgMjQxLCAxMjIsIDM5LCAzNiwgMSwgCi0gICAgMjQxLCAxMDMsIDM5LCAzNiwgMSwgMjQxLCA5MiwgMzksIDM2LCAxLCA3OCwgMzksIDM2LCAxLCAyMTksIDM0LCAzOSwgMzYsIAotICAgIDEsIDI0MSwgMjgsIDM5LCAzNiwgMSwgMjQxLCAxNywgMzksIDM2LCAxLCAyMDksIDE4NywgMzksIDM2LCAxLCAxNTIsIDM5LCAKLSAgICAzNiwgMSwgMjA4LCAxNCwgMzksIDM2LCAxLCAyNDYsIDE3MCwgMzksIDM2LCAxLCAyMTMsIDkwLCAzOSwgMzYsIDEsIDIxMywgCi0gICAgNDYsIDM5LCAzNiwgMSwgMjM5LCAyMzUsIDM5LCAzNiwgMSwgMjQxLCAxMywgMzksIDM2LCAxLCA2MywgMzksIDM2LCAxLCAKLSAgICAyMzEsIDExMCwgMzksIDM2LCAxLCAyNDMsIDEyOSwgMzksIDM2LCAxLCAyMjQsIDQzLCAyMDcsIDE0LCAzOSwgMzYsIDEsIAotICAgIDIwMywgNjYsIDM5LCAzNiwgMSwgMjAyLCAyMTMsIDM5LCAzNiwgMSwgMjMwLCAyMjgsIDYzLCAzOSwgMzYsIDEsIDIyNywgCi0gICAgODYsIDIwMiwgMTgzLCAzOSwgMzYsIDEsIDI0OCwgNzMsIDIwMiwgMTgzLCAzOSwgMzYsIDEsIDIzMCwgMjI4LCAyNDgsIDczLCAKLSAgICAyMDIsIDE4MywgNTAsIDI1MCwgMjE4LCAyMTAsIDI0MSwgMjI1LCA4OCwgNTAsIDI1MCwgMjE4LCAyNDIsIDgzLCAyMTAsIAotICAgIDI0MSwgMjI1LCA4OCwgNDksIDIxMCwgMjQxLCAxNTUsIDUwLCAyMTAsIDI0MSwgMTU1LCA0OSwgMjQyLCA4MywgMjEwLCAKLSAgICAyNDEsIDE1NSwgNTAsIDI0MiwgODMsIDIxMCwgMjQxLCAxNTUsIDIxNiwgMTg4LCAyMzAsIDI0OSwgMjI1LCA4OCwgMjE2LCAKLSAgICAxODgsIDI0MiwgODMsIDIzMCwgMjQ5LCAyMjUsIDg4LCAyNDIsIDgzLCAyMDgsIDEwMywgMjI1LCA4OCwgNDksIDIwOCwgCi0gICAgMTAzLCAxNTUsIDUwLCAyMDgsIDEwMywgMTU1LCAyMTYsIDE4OCwgMjExLCAxNzcsIDQ5LCAyMTYsIDE4OCwgMjIwLCAzMywgCi0gICAgMTU1LCA1MCwgMjE2LCAxODgsIDIyMCwgMzMsIDE1NSwgMjQxLCAxNjIsIDI0NSwgMTYzLCAyMTksIDg3LCAyMzksIDE2MSwgCi0gICAgMjE5LCA4NywgMjE2LCA3MywgMjM5LCAxNjEsIDIxOSwgODcsIDIzNSwgMjE3LCAyNDIsIDgzLCAyMjAsIDkyLCAxODMsIAotICAgIDI1MCwgMjI3LCAxNzcsIDI1MCwgMjI3LCAyNDIsIDgzLCAyMTYsIDExLCAyNTAsIDIxNywgNTIsIDIyMCwgODksIDIzNSwgCi0gICAgMjIwLCAyMzAsIDIzOSwgMjMwLCAyNDcsIDIxOSwgMTM1LCAyNDcsIDIyMywgMjM1LCAyMjEsIDMsIDI0MywgMjMxLCAyMDgsIAotICAgIDIyOCwgMywgMjE1LCAyNTMsIDU1LCA0OSwgMTI0LCAyMTksIDc5LCAxNTUsIDUwLCAxMjQsIDIxOSwgNzksIDE1NSwgMjA4LCAKLSAgICAyMjgsIDMsIDcwLCA1NSwgMjA4LCAyMjgsIDMsIDcwLCA1NiwgNDksIDgwLCAyNDgsIDIzMSwgMywgMjE3LCA0MSwgNTAsIAotICAgIDgwLCAyNDgsIDIzMSwgMywgMjE3LCA0MSwgMjA4LCAxNDUsIDQ5LCAxNjIsIDE1NSwgMjA4LCAxNDUsIDUwLCAxNjIsIDE1NSwgCi0gICAgMjQ3LCAyNDgsIDQ5LCAxNjIsIDE1NSwgMjQ3LCAyNDgsIDUwLCAxNjIsIDE1NSwgNDksIDIxMiwgMTU0LCAxMDYsIDE1NSwgCi0gICAgNTAsIDIxMiwgMTU0LCAxMDYsIDE1NSwgNDksIDUyLCAyMTksIDc2LCA1MCwgNTIsIDIxOSwgNzYsIDEyMCwgMTg3LCAxMTUsIAotICAgIDExOCwgNzAsIDIxNywgMTc4LCAxMTgsIDcwLCAxMTUsIDEyMCwgMTg3LCAyMTcsIDE3OCwgMTAzLCAyMzksIDE0NywgNzAsIAotICAgIDIxNywgMTc4LCAyMzksIDIzMywgNzAsIDgyLCAyMTYsIDczLCAyMTcsIDQ3LCA4MiwgODAsIDIwOCwgMjI3LCAyMTUsIDI1MywgCi0gICAgMjE4LCA2MiwgMjAzLCAyMzgsIDIxMywgMTMxLCAxMDEsIDI0MywgODUsIDIwNywgMTc0LCAyNDUsIDIzMywgMjE2LCAxODgsIAotICAgIDI0MywgODUsIDIxNiwgMTg4LCAyNDUsIDIzMywgMjA3LCAxNzQsIDIxMywgMTQzLCAyNDQsIDE5NiwgMywgNDksIDIzNywgCi0gICAgMjI0LCAyNDQsIDE5NiwgMywgNTAsIDIzNywgMjI0LCAyMDcsIDE3NCwgMjQ0LCAxOTUsIDIwOCwgMTQ1LCAxNjIsIDIxNCwgCi0gICAgMTY4LCA1NCwgMjA3LCAxMzUsIDI0NCwgMTQ0LCAyMDksIDMwLCAyNDQsIDE0NCwgMjExLCA3NiwgMjM5LCAxMDIsIDIxMSwgCi0gICAgNjEsIDgwLCAyMTIsIDg4LCAyNDMsIDgzLCAyMDQsIDIxLCA4MCwgMjI3LCAxMTQsIDI0NywgNDYsIDUyLCAyMzUsIDIyMCwgCi0gICAgMjE2LCA3MywgMjQ1LCAyMzMsIDUyLCAyMjYsIDI1MiwgMjE3LCAzMSwgODIsIDEyLCA0MCwgMjE2LCAxMDAsIDEyLCA0MCwgCi0gICAgMjQ2LCAyNiwgMTIsIDQwLCAyMTQsIDE3MSwgMTA1LCAxMiwgNDAsIDIxNCwgMTcxLCAxMDgsIDEyLCA0MCwgMjE0LCAxNzEsIAotICAgIDE0NywgMTIsIDQwLCAyMTgsIDIyOSwgMTIsIDQwLCAyNDcsIDIzMywgMTIsIDQwLCAyMTAsIDgsIDEyLCA0MCwgMjI5LCAzNCwgCi0gICAgMTA1LCAxMiwgNDAsIDIyOSwgMzQsIDEwOCwgMTIsIDQwLCAyNDMsIDEzOCwgMTIsIDQwLCAyMTQsIDE3NSwgMTIsIDQwLCA1LCAKLSAgICAxMDUsIDEyLCA0MCwgNSwgMTA4LCAxMiwgNDAsIDIyOCwgMjMsIDEwNSwgMTIsIDQwLCAyMjgsIDIzLCAxMDgsIDEyLCA0MCwgCi0gICAgMjI4LCAyMywgMTQ3LCAxMiwgNDAsIDIyOCwgMjMsIDE0OSwgMTIsIDQwLCAyMTIsIDI0LCAxMiwgNDAsIDIwOSwgMzMsIDEyLCAKLSAgICA0MCwgMjEyLCAyMiwgMTA1LCAxMiwgNDAsIDIxMiwgMjIsIDEwOCwgMTIsIDQwLCAyMzcsIDU2LCAxMDUsIDEyLCA0MCwgCi0gICAgMjM3LCA1NiwgMTA4LCAxMiwgNDAsIDIzNywgMTIzLCAxMiwgNDAsIDIxNiwgMTc4LCAxMiwgNDAsIDI0NiwgMTEyLCAxMiwgCi0gICAgNDAsIDIxMCwgMjE0LCAxMiwgNDAsIDIyNCwgMjksIDEyLCA0MCwgMjQ0LCA3MywgMTIsIDQwLCAyMjQsIDIwLCAxMiwgNDAsIAotICAgIDI0NiwgNDQsIDEyLCA0MCwgMjA0LCA4MSwgMTA1LCAxMiwgNDAsIDIwNCwgODEsIDEwOCwgMTIsIDQwLCAyMzksIDI0OSwgCi0gICAgMTIsIDQwLCAyMTksIDQ2LCAxMDUsIDEyLCA0MCwgMjE5LCA0NiwgMTA4LCAxMiwgNDAsIDIxMiwgMTI3LCAxNjIsIDIwOCwgCi0gICAgOTYsIDIwOCwgMjUsIDEyLCA0MCwgMjQ1LCAxNDksIDEyLCA0MCwgMjQzLCAxMDIsIDEyLCA0MCwgMjMwLCAxNzYsIDEyLCAKLSAgICA0MCwgMjQ4LCAxNSwgNzYsIDI0NiwgMTAsIDEyLCA0MCwgMjQwLCAxOTEsIDEyLCA0MCwgMjExLCAxOTksIDEwNSwgMTIsIAotICAgIDQwLCAyMTEsIDE5OSwgMTA4LCAxMiwgNDAsIDI0OCwgMjQ0LCAxMiwgNDAsIDIxMiwgMTM0LCAxMiwgNDAsIDI0NywgMTIyLCAKLSAgICAyMTIsIDEzNCwgMTIsIDQwLCAyMjIsIDIyMCwgMTA1LCAxMiwgNDAsIDIyMiwgMjIwLCAxMDgsIDEyLCA0MCwgMjIyLCAyMjAsIAotICAgIDE0NywgMTIsIDQwLCAyMjIsIDIyMCwgMTQ5LCAxMiwgNDAsIDIyNCwgMjI3LCAxMiwgNDAsIDIxMywgMzcsIDEyLCA0MCwgCi0gICAgMjE2LCAxODQsIDEyLCA0MCwgMjQwLCAyMTksIDEyLCA0MCwgMjIwLCA0NSwgMTIsIDQwLCAyNDcsIDIwMSwgMTA1LCAxMiwgCi0gICAgNDAsIDI0NywgMjAxLCAxMDgsIDEyLCA0MCwgMjI1LCAxNSwgMTIsIDQwLCAyMjQsIDI0LCAxMiwgNDAsIDIzOCwgMSwgMTA1LCAKLSAgICAxMiwgNDAsIDIzOCwgMSwgMTA4LCAxMiwgNDAsIDIzOCwgMSwgMTQ3LCAxMiwgNDAsIDIwOCwgMjQ1LCAxMiwgNDAsIDI0NiwgCi0gICAgOSwgMTIsIDQwLCAyMDQsIDQ2LCAxMDUsIDEyLCA0MCwgMjA0LCA0NiwgMTA4LCAxMiwgNDAsIDI0NywgMTIyLCAyMTQsIAotICAgIDE2NSwgMTIsIDQwLCAyMTIsIDEyNywgMjM2LCA1MywgMTIsIDQwLCAyMzYsIDUzLCAxMiwgNDAsIDI0NywgMTIyLCAyMTEsIAotICAgIDIxMSwgMTIsIDQwLCAyNDcsIDEyMiwgMjEzLCAzMiwgMTIsIDQwLCAyMzksIDE3MiwgMTIsIDQwLCAyNDcsIDEyMiwgMjQ3LCAKLSAgICAyMywgMTIsIDQwLCAyMTIsIDEyNywgMjA0LCAxMDEsIDEyLCA0MCwgMjA0LCAxMDIsIDEwNSwgMTIsIDQwLCAyMDQsIDEwMiwgCi0gICAgMTA4LCAxMiwgNDAsIDI0NiwgNDcsIDEyLCA0MCwgMjQ3LCAxMjIsIDIzOCwgMzEsIDEyLCA0MCwgMTYzLCAxMDUsIDEyLCAKLSAgICA0MCwgMTYzLCAxMDgsIDEyLCA0MCwgMjQ3LCAxMjIsIDIyNywgMjgsIDEyLCA0MCwgMjQ3LCAxMjIsIDIzOCwgMjE2LCAxMiwgCi0gICAgNDAsIDIyNCwgMTYsIDEwNSwgMTIsIDQwLCAyMjQsIDE2LCAxMDgsIDEyLCA0MCwgMjE2LCAxOTAsIDEyLCA0MCwgMjQ4LCAKLSAgICAyNSwgMTIsIDQwLCAyNDcsIDEyMiwgMjA5LCAyMjQsIDIyNywgMjI4LCAxMiwgNDAsIDI0NywgMTIyLCAyMjcsIDIyOSwgMTIsIAotICAgIDQwLCAyNDcsIDEyMiwgMjA0LCAxNiwgMTIsIDQwLCAyNDcsIDEyMiwgMjM5LCAxOTAsIDEyLCA0MCwgMjQxLCAxNzMsIDEwNSwgCi0gICAgMTIsIDQwLCAyNDEsIDE3MywgMTA4LCAxMiwgNDAsIDI0MSwgMTczLCAxNDcsIDEyLCA0MCwgMjQ3LCAxMjIsIDI0MSwgMTcyLCAKLSAgICAxMiwgNDAsIDIzNywgNjQsIDEyLCA0MCwgMjQ3LCAxMjIsIDIzNiwgNDksIDEyLCA0MCwgMjQ4LCAxMSwgMTIsIDQwLCAyMzgsIAotICAgIDg5LCAxMiwgNDAsIDI0NywgMTIyLCAyMzksIDI0MywgMTIsIDQwLCAyNDcsIDEyMiwgMjQ4LCA2MCwgMTIsIDQwLCAyNDcsIAotICAgIDEyMiwgMjE1LCAxLCAxMiwgNDAsIDIxMiwgMTI3LCAyMDQsIDM4LCAxMiwgNDAsIDIxMiwgMTI3LCAyMDMsIDQ0LCAxMiwgCi0gICAgNDAsIDI0NywgMTIyLCAyMzksIDEyMSwgMTIsIDQwLCAyMzAsIDE4MywgMjQwLCAyMjQsIDEyLCA0MCwgMjQ3LCAxMjIsIAotICAgIDI0MCwgMjI0LCAxMiwgNDAsIDIzMCwgMTgzLCAyMDgsIDE0NiwgMTIsIDQwLCAyNDcsIDEyMiwgMjA4LCAxNDYsIDEyLCA0MCwgCi0gICAgMjMwLCAxODMsIDI0MiwgNjEsIDEyLCA0MCwgMjQ3LCAxMjIsIDI0MiwgNjEsIDEyLCA0MCwgMjA3LCAxNzEsIDEyLCA0MCwgCi0gICAgMjMwLCAxODMsIDIwNywgMTcxLCAxMiwgNDAsIDI0NywgMTIyLCAyMDcsIDE3MSwgNzEsIDQwLCAxMDUsIDcxLCA0MCwgMjI3LCAKLSAgICAxMTQsIDcxLCA0MCwgMjQzLCA4NSwgNzEsIDQwLCAyMTIsIDU3LCA3MSwgNDAsIDIxNCwgMTcwLCA3MSwgNDAsIDExMywgNzEsIAotICAgIDQwLCAxMDgsIDcxLCA0MCwgMjI3LCAxNDMsIDcxLCA0MCwgMjI1LCAxMjIsIDcxLCA0MCwgMjI3LCAyMDcsIDcxLCA0MCwgCi0gICAgMjQxLCA2NywgNzEsIDQwLCAxOTksIDcxLCA0MCwgMTIxLCAyNDcsIDIzMywgNzEsIDQwLCAyNDUsIDE1MSwgNzEsIDQwLCAKLSAgICAyMzUsIDE2MiwgNzEsIDQwLCAyMTAsIDgsIDcxLCA0MCwgMTcxLCAyNDcsIDIzMywgNzEsIDQwLCAyMjksIDMzLCA3MSwgNDAsIAotICAgIDIxOCwgMTYsIDcxLCA0MCwgMjAzLCAyMjgsIDcxLCA0MCwgMjExLCAxOTAsIDcxLCA0MCwgNTAsIDE3MSwgMjQ3LCAyMzMsIAotICAgIDcxLCA0MCwgMjM2LCAyNTUsIDI0MSwgODcsIDcxLCA0MCwgMjA5LCAxNTIsIDcxLCA0MCwgMjQzLCAxMzgsIDcxLCA0MCwgCi0gICAgMjE0LCAxNzUsIDcxLCA0MCwgMjQ2LCAyNiwgNzEsIDQwLCAyMTcsIDIyNiwgNzEsIDQwLCAyNTEsIDgwLCA3MSwgNDAsIAotICAgIDIyNCwgNywgNzEsIDQwLCAyNDEsIDg3LCA3MSwgNDAsIDI0MSwgMTc5LCA3MSwgNDAsIDIxNCwgMTk3LCA3MSwgNDAsIDIzOCwgCi0gICAgMzksIDcxLCA0MCwgMjM4LCA0MCwgMjEyLCAzOCwgNzEsIDQwLCAyNDAsIDIyMywgNzEsIDQwLCAyNDgsIDcyLCA3MSwgNDAsIAotICAgIDIwMywgMjUwLCA3MSwgNDAsIDI0NiwgMTMzLCA3MSwgNDAsIDIxNSwgMjA3LCA3MSwgNDAsIDIzMSwgNDUsIDcxLCA0MCwgCi0gICAgMjEyLCAzNiwgNzEsIDQwLCAyMjgsIDIyLCA3MSwgNDAsIDI0NSwgMTYxLCA3MSwgNDAsIDIxMSwgMTgxLCA3MSwgNDAsIAotICAgIDIyNCwgMTIsIDcxLCA0MCwgMjE1LCAyNDEsIDcxLCA0MCwgMjAzLCAyMzUsIDcxLCA0MCwgMjIwLCAyNSwgNzEsIDQwLCAKLSAgICAyMDcsIDE4MCwgNzEsIDQwLCAyNDIsIDQ0LCA3MSwgNDAsIDIxMiwgMjI4LCAyMDksIDMzLCA3MSwgNDAsIDI0MiwgODMsIAotICAgIDI0NiwgMjYsIDcxLCA0MCwgMTYzLCAyMTEsIDM4LCA3MSwgNDAsIDEyMCwgMjM3LCA5OSwgNzEsIDQwLCAyMTIsIDIzNCwgCi0gICAgNzEsIDQwLCAyNDcsIDI0MCwgNzEsIDQwLCAyMTIsIDIxLCA3MSwgNDAsIDI0NywgMjA1LCA3MSwgNDAsIDIxMSwgNzUsIDcxLCAKLSAgICA0MCwgMjM3LCA1NSwgNzEsIDQwLCAyMzcsIDEzOCwgNzEsIDQwLCAyNDMsIDg4LCA3MSwgNDAsIDIzNywgMTIzLCA3MSwgNDAsIAotICAgIDI0NywgMjIzLCA3MSwgNDAsIDIxNiwgMTc4LCA3MSwgNDAsIDIxNCwgMTgzLCA3MSwgNDAsIDI0MywgMTY5LCA3MSwgNDAsIAotICAgIDI1MCwgOSwgNzEsIDQwLCAyMTEsIDE3NywgNzEsIDQwLCAyMjEsIDE2NSwgNzEsIDQwLCAyMTAsIDIxNCwgNzEsIDQwLCAKLSAgICAyMTQsIDIwOCwgNzEsIDQwLCAyMjQsIDI5LCA3MSwgNDAsIDIwOCwgOTUsIDcxLCA0MCwgMjI4LCA5OSwgNzEsIDQwLCAyMTEsIAotICAgIDYxLCA3MSwgNDAsIDI0NCwgNzMsIDcxLCA0MCwgMjA0LCA2MSwgNzEsIDQwLCAyNDMsIDExNCwgMjIxLCAxNjUsIDcxLCA0MCwgCi0gICAgMjQ1LCAyMjksIDcxLCA0MCwgMjM5LCA5NSwgNzEsIDQwLCAyNDYsIDM4LCA3MSwgNDAsIDIxMSwgODAsIDcxLCA0MCwgMjA0LCAKLSAgICA4MCwgNzEsIDQwLCAyMzksIDI0OSwgNzEsIDQwLCAyNDYsIDM0LCA3MSwgNDAsIDI0MCwgNjcsIDcxLCA0MCwgNTIsIDIwMywgCi0gICAgMTk2LCA3MSwgNDAsIDE2MiwgMjA4LCA5NiwgMjA4LCAyNSwgNzEsIDQwLCAyMTIsIDUwLCA3MSwgNDAsIDI0MCwgNzksIDcxLCAKLSAgICA0MCwgMjQ1LCAxNDksIDcxLCA0MCwgMjQzLCAxMDIsIDcxLCA0MCwgMjE3LCAyMjMsIDcxLCA0MCwgMjMwLCAxNzYsIDcxLCAKLSAgICA0MCwgMjI0LCAyNDksIDcxLCA0MCwgMjA4LCAyMjYsIDcxLCA0MCwgMjEwLCAxNjQsIDcxLCA0MCwgMjI3LCAxMzcsIDcxLCAKLSAgICA0MCwgMjA2LCAxOTEsIDcxLCA0MCwgMjQwLCAyNCwgNzEsIDQwLCAyNDgsIDE1LCA3NiwgMjQ2LCAxMCwgNzEsIDQwLCAyMTIsIAotICAgIDE1OCwgNzEsIDQwLCAyNDIsIDgzLCAyMDksIDE0NCwgNzEsIDQwLCAyMDQsIDMzLCA3MSwgNDAsIDIxMiwgNjUsIDcxLCA0MCwgCi0gICAgMjQzLCAxNTYsIDcxLCA0MCwgMjQwLCAxOTEsIDcxLCA0MCwgMjExLCAyMTQsIDcxLCA0MCwgNDcsIDcxLCA0MCwgMjExLCAKLSAgICA2MywgNzEsIDQwLCAyMTEsIDE5OCwgNzEsIDQwLCAyMDgsIDExOCwgNzEsIDQwLCAyMzgsIDEwLCA3MSwgNDAsIDI0NywgMTAsIAotICAgIDcxLCA0MCwgMjExLCA5OCwgNzEsIDQwLCAyNDgsIDI0NCwgNzEsIDQwLCAyMTYsIDUyLCA3MSwgNDAsIDIxMiwgMTM0LCA3MSwgCi0gICAgNDAsIDIzMCwgMTY4LCA3MSwgNDAsIDIyMiwgMjE5LCA3MSwgNDAsIDIxMywgMzcsIDcxLCA0MCwgMjQwLCA1NSwgNzEsIDQwLCAKLSAgICAyMjAsIDQ1LCA3MSwgNDAsIDI1MCwgMjI2LCA3MSwgNDAsIDIxOCwgODMsIDcxLCA0MCwgMjQxLCAxODMsIDcxLCA0MCwgCi0gICAgMjQ3LCAyMDAsIDcxLCA0MCwgMjI1LCAxNSwgNzEsIDQwLCAyMjQsIDEwNCwgNzEsIDQwLCAyMTMsIDE0OSwgNzEsIDQwLCAKLSAgICAyNTAsIDk4LCA3MSwgNDAsIDIyNCwgMjQsIDcxLCA0MCwgMjA4LCAxNTAsIDcxLCA0MCwgMjE5LCAyNTIsIDcxLCA0MCwgCi0gICAgMjQ4LCAxOSwgNzEsIDQwLCAyMTEsIDU5LCA3MSwgNDAsIDI0NSwgMjQxLCA3MSwgNDAsIDIzOCwgMCwgNzEsIDQwLCAyMDgsIAotICAgIDI0NSwgNzEsIDQwLCAyMzEsIDksIDcxLCA0MCwgMjQ4LCAzMSwgNzEsIDQwLCAyMDQsIDEwMiwgMjQxLCA4NywgNzEsIDQwLCAKLSAgICAyNDYsIDksIDcxLCA0MCwgMjA0LCA0NSwgNzEsIDQwLCAyMTQsIDE2NSwgNzEsIDQwLCAyMzYsIDUzLCA3MSwgNDAsIDIxMSwgCi0gICAgMjExLCA3MSwgNDAsIDIwNiwgNzksIDcxLCA0MCwgMjQ4LCAxNTcsIDcxLCA0MCwgMjE4LCAxMzEsIDcxLCA0MCwgMjQ5LCAKLSAgICAxMywgNzEsIDQwLCAyMTMsIDMyLCA3MSwgNDAsIDIxNiwgMTM3LCA3MSwgNDAsIDIxNSwgMTI4LCA3MSwgNDAsIDIzOSwgCi0gICAgMTcyLCA3MSwgNDAsIDI0OCwgMTcsIDcxLCA0MCwgMjQ3LCAyMywgNzEsIDQwLCAyNDgsIDQ4LCA3MSwgNDAsIDIyNCwgMjYsIAotICAgIDcxLCA0MCwgMjA0LCAxMDEsIDcxLCA0MCwgMjQ2LCA0NywgNzEsIDQwLCAyMDQsIDEyLCA3MSwgNDAsIDI0MywgMTQ5LCA3MSwgCi0gICAgNDAsIDIwNSwgMjE0LCA3MSwgNDAsIDIzOCwgMzEsIDcxLCA0MCwgMjI3LCAyOCwgNzEsIDQwLCAyMzgsIDIxNiwgNzEsIDQwLCAKLSAgICAyMjQsIDE1LCA3MSwgNDAsIDIxMiwgNTYsIDcxLCA0MCwgMjEyLCAyMjgsIDIwOSwgMjQ3LCAyNDgsIDYwLCA3MSwgNDAsIAotICAgIDIxNiwgMTkwLCA3MSwgNDAsIDI0OCwgMjUsIDcxLCA0MCwgMjAzLCAyMTksIDcxLCA0MCwgMjQwLCAxMDIsIDcxLCA0MCwgCi0gICAgMjI3LCAyMjgsIDcxLCA0MCwgMjA5LCAyMjQsIDIyNywgMjI4LCA3MSwgNDAsIDIyNywgMjI0LCA3MSwgNDAsIDIxMSwgMjQwLCAKLSAgICA3MSwgNDAsIDIyNywgMjI5LCA3MSwgNDAsIDIwNCwgMTYsIDcxLCA0MCwgMjM5LCAxOTAsIDcxLCA0MCwgMjQxLCAxNzIsIAotICAgIDcxLCA0MCwgMjM3LCA2NCwgNzEsIDQwLCAyMzksIDEzNiwgNzEsIDQwLCAyMzYsIDQ5LCA3MSwgNDAsIDI0OCwgMTEsIDcxLCAKLSAgICA0MCwgMjA5LCAyMzMsIDcxLCA0MCwgMjM3LCAxNDUsIDcxLCA0MCwgMjQwLCAxNywgNzEsIDQwLCAyMTUsIDMwLCAyMDQsIAotICAgIDEyLCA3MSwgNDAsIDI0NywgMTIsIDcxLCA0MCwgMjM4LCA4OSwgNzEsIDQwLCAyMzksIDI0MywgNzEsIDQwLCAyNDgsIDYwLCAKLSAgICA3MSwgNDAsIDIxNSwgMSwgNzEsIDQwLCAyNDQsIDU4LCA3MSwgNDAsIDIwNCwgMzgsIDcxLCA0MCwgMjM3LCAzNCwgNzEsIAotICAgIDQwLCAyMDMsIDQ0LCA3MSwgNDAsIDIyNCwgMTE1LCA3MSwgNDAsIDI0OCwgNDMsIDcxLCA0MCwgMjQxLCA5OSwgNzEsIDQwLCAKLSAgICAyMzksIDEyMSwgNzEsIDQwLCAyMDgsIDY3LCA3MSwgNDAsIDI0MiwgNDYsIDcxLCA0MCwgMjE2LCAxNzIsIDcxLCA0MCwgCi0gICAgMjIxLCAxNjcsIDcxLCA0MCwgMjQwLCAyMjQsIDcxLCA0MCwgMjA4LCAxNDYsIDcxLCA0MCwgMjQyLCA2MSwgNzEsIDQwLCAKLSAgICAyMDcsIDE3MSwgNzEsIDQwLCAyMzksIDE5MywgMTM5LCAyNDQsIDE4LCAxNjcsIDQ5LCAyMDgsIDE3MywgMjE2LCAxNiwgCi0gICAgMTM5LCAyNDQsIDE4LCAxNjcsIDg3LCAyMDgsIDE3MywgNTYsIDEzOSwgMjQ0LCAxOCwgMTY3LCA0OSwgMjA4LCAxNzMsIAotICAgIDEwMSwgMjUsIDIxNiwgMTYsIDEzOSwgMjQ0LCAxOCwgMTY3LCA4NywgMjA4LCAxNzMsIDEwMSwgMjUsIDU2LCAxMzksIDI0NCwgCi0gICAgMTgsIDE2NywgMjM5LCAxMDIsIDIxMCwgMTg2LCAxMzksIDI0NCwgMTgsIDE2NywgMjEwLCAxODcsIDIzOSwgMTIwLCA1NSwgCi0gICAgMTM5LCAyNDQsIDE4LCAxNjcsIDIxMCwgMTg3LCAyMzksIDEyMCwgNTYsIDEzOSwgMjQ0LCAxOCwgMTY3LCAyMTAsIDE4NywgCi0gICAgMjM5LCAxMjAsIDIyNywgMjIyLCAxMzksIDI0NCwgMTgsIDE2NywgMjEwLCAxODcsIDIzOSwgMTIwLCAyMDYsIDIyMSwgMjI3LCAKLSAgICAyMjIsIDEzOSwgMjQ0LCAxOCwgMTY3LCAyMTAsIDE4NywgMjM5LCAxMjAsIDIwNiwgMjIxLCAyMTYsIDE2LCAxMzksIDI0NCwgCi0gICAgMTgsIDE2NywgMjEwLCAxODcsIDIzOSwgMTIwLCAyMjYsIDI1MSwgMjI3LCAyMjIsIDEzOSwgMjQ0LCAxOCwgMTY3LCAyMTksIAotICAgIDIwMiwgMTM5LCAyMTEsIDIyOCwgMTM5LCAyNDUsIDIzMywgMTM5LCAyMzksIDEwMiwgMjExLCA2MSwgMjQzLCAxNDYsIDgyLCAKLSAgICAyMzAsIDE2OSwgMjMxLCAyOSwgMjExLCA5NywgOTcsIDEzOSwgMjMwLCAxOTksIDgyLCAxMzksIDI0NiwgMTIsIDgyLCAxMzksIAotICAgIDQyLCAyMDIsIDg0LCA0OSwgMjUwLCAyMTgsIDE1NSwgNTAsIDI1MCwgMjE4LCAxNTUsIDQ5LCA1MiwgMjUwLCAyMTgsIDE1NSwgCi0gICAgNTAsIDUyLCAyNTAsIDIxOCwgMTU1LCA0OSwgMjQ1LCAxNjYsIDE1NSwgNTAsIDI0NSwgMTY2LCAxNTUsIDQ5LCA2MSwgMjQ1LCAKLSAgICAxNjYsIDE1NSwgNTAsIDYxLCAyNDUsIDE2NiwgMTU1LCA0OSwgNjIsIDIyNywgMTg1LCAxNTUsIDUwLCA2MiwgMjI3LCAxODUsIAotICAgIDE1NSwgMjE4LCAyOSwgODIsIDIzOCwgMTU4LCA4MiwgNDksIDIwOCwgMTMzLCAyMTMsIDMzLCAxNTUsIDUwLCAyMDgsIDEzMywgCi0gICAgMjEzLCAzMywgMTU1LCA0OSwgNjEsIDIyNywgMTg1LCAxNTUsIDUwLCA2MSwgMjI3LCAxODUsIDE1NSwgNDksIDYxLCAyMDgsIAotICAgIDEzMywgMjEzLCAzMywgMTU1LCA1MCwgNjEsIDIwOCwgMTMzLCAyMTMsIDMzLCAxNTUsIDQ5LCA2MSwgNTEsIDE1NSwgNTAsIAotICAgIDYxLCA1MSwgMTU1LCAyMDQsIDc2LCAyNDQsIDE0NCwgMjE2LCA3MywgNTIsIDIxNywgMjM3LCAyMTcsIDMxLCA4MiwgNTIsIAotICAgIDIxNywgMjM3LCAyMTcsIDMxLCA4MiwgMTI0LCA1MiwgMjE3LCAyMzcsIDIxNywgMzEsIDgyLCAyMTgsIDI5LCAxMzEsIDI0MCwgCi0gICAgMTAyLCAyMzcsIDk3LCAyMjEsIDQ0LCAxMDUsIDIzNywgOTcsIDIyMSwgNDQsIDEwOCwgMjM3LCA5NywgMjIxLCA0NCwgMTQ3LCAKLSAgICAyMzcsIDk3LCAyMjEsIDQ0LCAxNDksIDIzNywgOTcsIDIyMSwgNDQsIDE3MCwgMjM3LCA5NywgMjIxLCA0NCwgMTk1LCAyMzcsIAotICAgIDk3LCAyMjEsIDQ0LCAyMTMsIDExMSwgMjM3LCA5NywgMjIxLCA0NCwgMTk5LCAyMzcsIDk3LCAyMjEsIDQ0LCAyMjIsIDYzLCAKLSAgICAxMzksIDIyNywgMTY3LCAxNDMsIDgyLCAxMzksIDIxNSwgMjQ1LCAxNDMsIDgyLCAxMzksIDI0NCwgMjcsIDE0MywgODIsIAotICAgIDEzOSwgMjQxLCA2NiwgMTQzLCA4MiwgMjgsIDIxMiwgMTIwLCA3MCwgMTQzLCA4MiwgMjgsIDUyLCA3MCwgMTQzLCA4MiwgCi0gICAgMjA0LCA3MiwgMjQ0LCAxNDQsIDgwLCAyMzAsIDMsIDIxNiwgMTAxLCA4MiwgODAsIDIzMCwgMywgMjE2LCAxMDEsIDMsIAotICAgIDIwNSwgMTg2LCAyMTEsIDI0MSwgODIsIDgwLCAyMzAsIDMsIDIxNiwgMTAxLCAxMzEsIDIwNiwgMjIxLCAyMzcsIDEzNywgCi0gICAgODAsIDIzMCwgMywgMjE2LCAxMDEsIDMsIDIwNSwgMTg2LCAyMTEsIDI0MSwgMTMxLCAyMDYsIDIyMSwgMjM3LCAxMzcsIDgwLCAKLSAgICAyMzAsIDMsIDIxNiwgMTAxLCAxMzEsIDIyNiwgMjUxLCAyMzcsIDEzNywgNDMsIDIxOCwgMjksIDgyLCAxMzksIDIwOSwgCi0gICAgMTY0LCAyMjcsIDExNSwgMjQwLCA1MiwgMjEzLCAxMzEsIDk3LCAyMzcsIDk3LCAyMjEsIDQ0LCAyMDksIDE1MiwgMjM3LCAKLSAgICA5NywgMjIxLCA0NCwgMjA3LCAxNTEsIDIzNywgOTcsIDIyMSwgNDQsIDIwOSwgNTMsIDgwLCAxMzksIDIzMCwgMTk5LCA4MiwgCi0gICAgMjI1LCA3MiwgODIsIDIxOSwgNzEsIDI1MCwgMjUxLCA4MiwgMTM5LCA1NywgMjMxLCAzMSwgMTM5LCAxNjIsIDI0MCwgMTAsIAotICAgIDIxMSwgMjI4LCAxNzIsIDEsIDUsIDYzLCAxNzIsIDEsIDYzLCAxNzIsIDEsIDUsIDc1LCAxNzIsIDEsIDc1LCAxNzIsIDEsIAotICAgIDUsIDY4LCAxNzIsIDEsIDY4LCAxNzIsIDEsIDUsIDc0LCAxNzIsIDEsIDc0LCAxNzIsIDEsIDUsIDc4LCAxNzIsIDEsIDc4LCAKLSAgICAxNzIsIDEsIDE3MywgMTcyLCAxLCAyMzksIDgsIDE3MiwgMSwgMjI5LCAxMDAsIDE3MiwgMSwgMjM4LCA4MSwgMTcyLCAxLCAKLSAgICAyMjgsIDIwOSwgMTcyLCAxLCAyMzcsIDIzMCwgMTcyLCAxLCAyMjksIDIwMSwgMTcyLCAxLCAyMzgsIDE5MCwgMTcyLCAxLCAKLSAgICAyMjksIDI2LCAxNzIsIDEsIDIzOCwgMzksIDE3MiwgMSwgMjE1LCAzNiwgMTcyLCAxLCAyMDIsIDExNiwgMTcyLCAxLCAyMTIsIAotICAgIDE2MiwgMTcyLCAxLCAyMDIsIDM5LCAxNzIsIDEsIDIxMSwgMTAsIDE3MiwgMSwgMjAyLCA2LCAxNzIsIDEsIDIxNCwgMTc3LCAKLSAgICAxNzIsIDEsIDIwMiwgOTIsIDE3MiwgMSwgMjEyLCAxMywgMTcyLCAxLCAyMDIsIDE3LCAxNzIsIDEsIDIxMCwgMjIsIDE3MiwgCi0gICAgMSwgMjQ0LCAyMTIsIDE3MiwgMSwgMjA5LCAyLCAxNzIsIDEsIDI0MywgMjMzLCAxNzIsIDEsIDUsIDIwNywgMjAzLCAxNzIsIAotICAgIDEsIDIwNywgMjAzLCAxNzIsIDEsIDI0MiwgNDIsIDE3MiwgMSwgMjA5LCAxODcsIDE3MiwgMSwgMjQ0LCA3NSwgMTcyLCAxLCAKLSAgICAxMzUsIDE3MiwgMSwgMjQzLCAxMTMsIDE3MiwgMSwgMjAxLCAyMDEsIDE3MiwgMSwgMjIyLCAxMDAsIDE3MiwgMSwgMjIxLCAKLSAgICA4NCwgMTcyLCAxLCAyMjIsIDI0MCwgMTcyLCAxLCAyMjEsIDE5MSwgMTcyLCAxLCAxNTIsIDE3MiwgMSwgMjQ5LCAzMiwgCi0gICAgMTcyLCAxLCAxODUsIDE3MiwgMSwgMjM3LCAzLCAxNzIsIDEsIDI0OCwgODYsIDE3MiwgMSwgMjE4LCAxNjcsIDE3MiwgMSwgCi0gICAgMjM2LCAyNiwgMTcyLCAxLCAyNDcsIDE5MywgMTcyLCAxLCAyMTcsIDE5MSwgMTcyLCAxLCAyMzcsIDY3LCAxNzIsIDEsIAotICAgIDI0OCwgMTYyLCAxNzIsIDEsIDIxOSwgMzQsIDE3MiwgMSwgMjM2LCAxMzYsIDE3MiwgMSwgMjQ4LCAyMywgMTcyLCAxLCAKLSAgICAyMTgsIDY5LCAxNzIsIDEsIDE5MiwgMTcyLCAxLCAyMjQsIDE1NSwgMTcyLCAxLCAyMjMsIDI0NiwgMTcyLCAxLCAyMjUsIAotICAgIDIwLCAxNzIsIDEsIDIyNCwgODIsIDE3MiwgMSwgNSwgMTk4LCAxNzIsIDEsIDE5OCwgMTcyLCAxLCA1LCAyMDIsIDIxMywgCi0gICAgMTcyLCAxLCAyMDIsIDIxMywgMTcyLCAxLCA1LCAyMDIsIDI0NywgMTcyLCAxLCAyMDIsIDI0NywgMTcyLCAxLCAyMTYsIAotICAgIDIyMCwgMTcyLCAxLCAyMTYsIDU3LCAxNzIsIDEsIDIxNSwgMTQ1LCAxNzIsIDEsIDIxNiwgMTU4LCAxNzIsIDEsIDIxNSwgCi0gICAgMjI3LCAxNzIsIDEsIDUsIDIwNCwgMTExLCAxNzIsIDEsIDIwNCwgMTExLCAxNzIsIDEsIDIwNCwgMzAsIDE3MiwgMSwgMjA0LCAKLSAgICA2MiwgMTcyLCAxLCAyMDQsIDAsIDE3MiwgMSwgMjIzLCAxNjMsIDE3MiwgMSwgMjA0LCAxNjMsIDE3MiwgMSwgNSwgMTczLCAKLSAgICAxNzIsIDEsIDUsIDIyOSwgMjAxLCAzOSwgMjI5LCAyMjUsIDIwNSwgMTg2LCAyMTEsIDI0MSwgODIsIDM5LCAyMjksIDIyNSwgCi0gICAgMjEzLCAxNDgsIDIxMSwgMjQxLCA4MiwgMjI5LCAyMjUsIDIwNSwgMTg2LCAyMTEsIDI0MSwgODIsIDIyOSwgMjI1LCAyMTMsIAotICAgIDE0OCwgMjExLCAyNDEsIDgyLCAxNzIsIDIzMCwgMTk5LCA4MiwgMTcyLCAyMDUsIDE4NiwgMjMwLCAxOTksIDgyLCAxNzIsIAotICAgIDI0MywgMTkyLCAyMDIsIDIyOCwgMjI5LCAyMjUsIDUyLCAyMzUsIDIyMCwgNjcsIDEsIDUsIDYzLCA2NywgMSwgNjMsIDY3LCAKLSAgICAxLCA1LCA3NSwgNjcsIDEsIDc1LCA2NywgMSwgNSwgNjgsIDY3LCAxLCA2OCwgNjcsIDEsIDUsIDc0LCA2NywgMSwgNzQsIAotICAgIDY3LCAxLCA1LCA3OCwgNjcsIDEsIDc4LCA2NywgMSwgMTczLCA2NywgMSwgMjM5LCA4LCA2NywgMSwgMjI5LCAxMDAsIDY3LCAKLSAgICAxLCAyMzgsIDgxLCA2NywgMSwgMjI4LCAyMDksIDY3LCAxLCAyMzcsIDIzMCwgNjcsIDEsIDIyOSwgMjAxLCA2NywgMSwgCi0gICAgMjM4LCAxOTAsIDY3LCAxLCAyMjksIDI2LCA2NywgMSwgMjM4LCAzOSwgNjcsIDEsIDIxNSwgMzYsIDY3LCAxLCAyMDIsIAotICAgIDExNiwgNjcsIDEsIDIxMiwgMTYyLCA2NywgMSwgMjAyLCAzOSwgNjcsIDEsIDIxMSwgMTAsIDY3LCAxLCAyMDIsIDYsIDY3LCAKLSAgICAxLCAyMTQsIDE3NywgNjcsIDEsIDIwMiwgOTIsIDY3LCAxLCAyMTIsIDEzLCA2NywgMSwgMjAyLCAxNywgNjcsIDEsIDIxMCwgCi0gICAgMjIsIDY3LCAxLCAyNDQsIDIxMiwgNjcsIDEsIDIwOSwgMiwgNjcsIDEsIDI0MywgMjMzLCA2NywgMSwgNSwgMjA3LCAyMDMsIAotICAgIDY3LCAxLCAyMDcsIDIwMywgNjcsIDEsIDI0MiwgNDIsIDY3LCAxLCAyMDksIDE4NywgNjcsIDEsIDI0NCwgNzUsIDY3LCAxLCAKLSAgICAxMzUsIDY3LCAxLCAyNDMsIDExMywgNjcsIDEsIDIwMSwgMjAxLCA2NywgMSwgMjIyLCAxMDAsIDY3LCAxLCAyMjEsIDg0LCAKLSAgICA2NywgMSwgMjIyLCAyNDAsIDY3LCAxLCAyMjEsIDE5MSwgNjcsIDEsIDE1MiwgNjcsIDEsIDI0OSwgMzIsIDY3LCAxLCAxODUsIAotICAgIDY3LCAxLCAyMzcsIDMsIDY3LCAxLCAyNDgsIDg2LCA2NywgMSwgMjE4LCAxNjcsIDY3LCAxLCAyMzYsIDI2LCA2NywgMSwgCi0gICAgMjQ3LCAxOTMsIDY3LCAxLCAyMTcsIDE5MSwgNjcsIDEsIDIzNywgNjcsIDY3LCAxLCAyNDgsIDE2MiwgNjcsIDEsIDIxOSwgCi0gICAgMzQsIDY3LCAxLCAyMzYsIDEzNiwgNjcsIDEsIDI0OCwgMjMsIDY3LCAxLCAyMTgsIDY5LCA2NywgMSwgMTkyLCA2NywgMSwgCi0gICAgMjI0LCAxNTUsIDY3LCAxLCAyMjMsIDI0NiwgNjcsIDEsIDIyNSwgMjAsIDY3LCAxLCAyMjQsIDgyLCA2NywgMSwgNSwgMTk4LCAKLSAgICA2NywgMSwgMTk4LCA2NywgMSwgNSwgMjAyLCAyMTMsIDY3LCAxLCAyMDIsIDIxMywgNjcsIDEsIDUsIDIwMiwgMjQ3LCA2NywgCi0gICAgMSwgMjAyLCAyNDcsIDY3LCAxLCAyMTYsIDIyMCwgNjcsIDEsIDIxNiwgNTcsIDY3LCAxLCAyMTUsIDE0NSwgNjcsIDEsIAotICAgIDIxNiwgMTU4LCA2NywgMSwgMjE1LCAyMjcsIDY3LCAxLCA1LCAyMDQsIDExMSwgNjcsIDEsIDIwNCwgMTExLCA2NywgMSwgCi0gICAgMjA0LCAzMCwgNjcsIDEsIDIwNCwgNjIsIDY3LCAxLCAyMDQsIDAsIDY3LCAxLCAyMjMsIDE2MywgNjcsIDEsIDIwNCwgMTYzLCAKLSAgICA2NywgMSwgNSwgMTczLCA2NywgMSwgNSwgMjI5LCAyMDEsIDY3LCAxLCAyMDYsIDg2LCA2NywgMSwgMjA1LCAyMzAsIDY3LCAKLSAgICAxLCAyMDYsIDU1LCA2NywgMSwgMjA1LCAxODksIDY3LCAxMDEsIDI0MywgODUsIDIyOSwgMjI1LCAyMTcsIDIxNSwgMjExLCAKLSAgICAyNDEsIDgyLCA2NywgMjMwLCAxOTksIDgyLCA2NywgMjA1LCAxODYsIDIzMCwgMTk5LCA4MiwgNjcsIDI0MywgMTkyLCAyMjgsIAotICAgIDI0OSwgMjQ4LCAxLCAxLCAyNDksIDI1NSwgMjQ4LCAxLCAxLCAyMTksIDE4NCwgMjQ4LCAxLCAxLCAyMjYsIDE4NSwgMjQ4LCAKLSAgICAxLCAxLCAyNDAsIDE3NCwgMjQ4LCAxLCAxLCAyNDUsIDUxLCAyNDgsIDEsIDEsIDIxMCwgNjksIDI0OCwgMSwgMSwgMjIzLCAKLSAgICAxNjMsIDI0OCwgMSwgMSwgMTU5LCAyNDgsIDEsIDEsIDIzOSwgNzUsIDI0OCwgMSwgMSwgMjMwLCA1NCwgMjQ4LCAxLCAxLCAKLSAgICAyMzcsIDE3MSwgMjQ4LCAxLCAxLCAyMzAsIDE4NCwgMjQ4LCAxLCAxLCAyMTcsIDEzNCwgMjQ4LCAxLCAxLCAyMDMsIDE5NiwgCi0gICAgMjQ4LCAxLCAxLCAyMDIsIDgxLCAyNDgsIDEsIDEsIDI0NiwgMjAwLCAyNDgsIDEsIDEsIDIxMywgOTIsIDI0OCwgMSwgMSwgCi0gICAgMTQ2LCAyNDgsIDEsIDEsIDIwMiwgMTU5LCAyNDgsIDEsIDEsIDI0NywgMTI1LCAyNDgsIDEsIDEsIDE5NCwgMjQ4LCAxLCAxLCAKLSAgICA2MywgMjQ4LCAxLCAxLCA3OCwgMjQ4LCAxLCAxLCA3NCwgMjQ4LCAxLCAxLCAyNDEsIDE0NywgMjQ4LCAxLCAxLCAyNTEsIAotICAgIDY0LCAyNDgsIDEsIDEsIDI0MSwgMTQ1LCAyNDgsIDEsIDEsIDI1MCwgMzQsIDI0OCwgMSwgMSwgMjE5LCAyMTYsIDI0OCwgMSwgCi0gICAgMSwgMjUwLCAyMzEsIDI0OCwgMSwgMSwgMjQxLCA5MiwgMjQ4LCAxLCAxLCAyNTAsIDIyMywgMjQ4LCAxLCAxLCAyNDEsIDc4LCAKLSAgICAyNDgsIDEsIDEsIDI0MSwgMjgsIDI0OCwgMSwgMSwgNzUsIDI0OCwgMSwgMSwgNjgsIDI0OCwgMSwgMSwgMjMwLCAxOTcsIAotICAgIDI0OCwgMSwgMSwgMjA2LCAxNjQsIDI0OCwgMSwgMSwgMjIyLCAyMDUsIDI0OCwgMSwgMSwgMjM4LCA0MywgMjQ4LCAxLCAxLCAKLSAgICAyMzEsIDg0LCAyOCwgMSwgMjI5LCA1OSwgMjgsIDEsIDIxMSwgMTU2LCAyOCwgMSwgMjI5LCA1MiwgMjgsIDEsIDIyMiwgOTMsIAotICAgIDI4LCAxLCAyMjIsIDkxLCAyOCwgMSwgMjIyLCA5MCwgMjgsIDEsIDIwOCwgMjQwLCAyOCwgMSwgMjExLCAxNDUsIDI4LCAxLCAKLSAgICAyMTYsIDQ3LCAyOCwgMSwgMjE2LCA0MiwgMjgsIDEsIDIxNiwgMzksIDI4LCAxLCAyMTYsIDMyLCAyOCwgMSwgMjE2LCAyNywgCi0gICAgMjgsIDEsIDIxNiwgMjIsIDI4LCAxLCAyMTYsIDMzLCAyOCwgMSwgMjE2LCA0NSwgMjgsIDEsIDIyNCwgMTQxLCAyOCwgMSwgCi0gICAgMjE4LCAxNTMsIDI4LCAxLCAyMTEsIDE1MywgMjgsIDEsIDIxOCwgMTQyLCAyOCwgMSwgMjEyLCAxMTEsIDI4LCAxLCAyMTEsIAotICAgIDE1MCwgMjgsIDEsIDIzMSwgMTA2LCAyOCwgMSwgMjQ2LCA3NCwgMjgsIDEsIDIxMSwgMTYwLCAyOCwgMSwgMjQ2LCAxMzgsIAotICAgIDI4LCAxLCAyMjksIDEyMCwgMjgsIDEsIDIwOSwgNjYsIDI4LCAxLCAyMTgsIDE5MCwgMjgsIDEsIDIzNiwgMjUxLCAyOCwgMSwgCi0gICAgNjMsIDI4LCAxLCAyNTEsIDEwOSwgMjgsIDEsIDE5OCwgMjgsIDEsIDIwMywgOTksIDI4LCAxLCAyNDEsIDU1LCAyOCwgMSwgCi0gICAgNzQsIDI4LCAxLCAyMDMsIDM5LCAyOCwgMSwgMjAzLCA1MiwgMjgsIDEsIDc4LCAyOCwgMSwgMjA0LCAxMTEsIDI4LCAxLCAKLSAgICAyMDQsIDEwNywgMjgsIDEsIDIyMCwgNzMsIDI4LCAxLCAyMDIsIDI0NywgMjgsIDEsIDY4LCAyOCwgMSwgMjA0LCA0OCwgMjgsIAotICAgIDEsIDIwNCwgNjIsIDI4LCAxLCAyMDQsIDMwLCAyOCwgMSwgMjAyLCAyMTMsIDI4LCAxLCAyNDAsIDIzOCwgMjgsIDEsIDIwMywgCi0gICAgMTEsIDI4LCAxLCA3NSwgMjgsIDI0MCwgNywgMjgsIDEsIDIxMSwgMTU0LCAyOCwgMSwgMjIyLCA4MywgMjgsIDEsIDIyMiwgCi0gICAgODUsIDI4LCAxLCAyMjIsIDg4LCAyOCwgMSwgMjE2LCA0MCwgMjgsIDEsIDIxNiwgMjEsIDI4LCAxLCAyMTYsIDI5LCAyOCwgCi0gICAgMSwgMjE2LCAzNCwgMjgsIDEsIDIxNiwgMTksIDI4LCAxLCAyMjQsIDEzNCwgMjgsIDEsIDIyNCwgMTMxLCAyOCwgMSwgMjI0LCAKLSAgICAxMzUsIDI4LCAxLCAyMjksIDI0NiwgMjgsIDEsIDIxOCwgMTQ4LCAyOCwgMSwgMjE4LCAxMzQsIDI4LCAxLCAyMTgsIDE0MCwgCi0gICAgMjgsIDEsIDIxOCwgMTM3LCAyOCwgMSwgMjE4LCAxNTEsIDI4LCAxLCAyMTgsIDEzNSwgMjgsIDEsIDIyOSwgMjQ0LCAyOCwgCi0gICAgMSwgMjI5LCAyNDIsIDI4LCAxLCAyMTIsIDEwNCwgMjgsIDEsIDIxMiwgMTAyLCAyOCwgMSwgMjEyLCA5NCwgMjgsIDEsIAotICAgIDIxMiwgOTksIDI4LCAxLCAyMTIsIDEwOSwgMjgsIDEsIDIxOSwgMTA3LCAyOCwgMSwgMjExLCAxNTcsIDI4LCAxLCAyMDMsIAotICAgIDI5LCAyOCwgMSwgMjAzLCAyNSwgMjgsIDEsIDIwMywgMjYsIDI4LCAxLCAyMjksIDI0NSwgMjgsIDEsIDIxMSwgMTU4LCAyOCwgCi0gICAgMSwgMjAzLCAzNSwgMjgsIDEsIDIwMiwgMjQxLCAyOCwgMSwgMjAyLCAyNDAsIDI4LCAxLCAyMDIsIDI0MywgMjgsIDEsIAotICAgIDIwMiwgMjA0LCAyOCwgMSwgMjAyLCAyMDUsIDI4LCAxLCAyMDIsIDIwOCwgMjgsIDEsIDI1MCwgMTM3LCAyOCwgMSwgMjUwLCAKLSAgICAxMzEsIDEzOSwgMjUwLCAyMDUsIDIyNywgMTAzLCA4MiwgMTM5LCAyNTAsIDIwNSwgMjE2LCA3NCwgODIsIDEzOSwgMjUwLCAKLSAgICAyMDUsIDExOCwgODIsIDEzOSwgMjUwLCAyMDUsIDEyMCwgODIsIDEzOSwgMjUwLCAyMDUsIDEyNiwgODIsIDEzOSwgMjUwLCAKLSAgICAyMDUsIDIzOSwgMTQ3LCA4MiwgMTM5LCAyNTAsIDIwNSwgMjA4LCAxNDUsIDgyLCAxMzksIDI1MCwgMjA1LCAxMDEsIDgyLCAKLSAgICAxMzksIDI1MCwgMjA1LCAyNDcsIDI0OCwgODIsIDEzOSwgMjUwLCAyMDUsIDIzOSwgMjQ1LCA4MiwgMTM5LCAyNTAsIDIwNSwgCi0gICAgMjE0LCAxNzEsIDgyLCAxMzksIDI1MCwgMjA1LCAyMDksIDYxLCA4MiwgMTM5LCAyNTAsIDIwNSwgMjM5LCAxNDAsIDgyLCAKLSAgICAxMzksIDI1MCwgMjA1LCAyMzcsIDUyLCA4MiwgMTM5LCAyNTAsIDIwNSwgMjQxLCAxODAsIDgyLCAxMzksIDI1MCwgMjA1LCAKLSAgICAyMjUsIDEyMywgODIsIDI0OCwgMSwgMSwgMjQ3LCAxOTMsIDI0OCwgMSwgMSwgMjAyLCAzOSwgMjQ4LCAxLCAxLCAyMzAsIAotICAgIDE0MSwgMjQ4LCAxLCAxLCAyMzcsIDIzMCwgMjQ4LCAxLCAxLCAyNDEsIDE2MSwgMjQ4LCAxLCAxLCAyNDEsIDc1LCAyNDgsIAotICAgIDEsIDEsIDIyMCwgMTgsIDI0OCwgMSwgMSwgMjIwLCAyMiwgMjQ4LCAxLCAxLCAyMzAsIDIyNCwgMjQ4LCAxLCAxLCAyNTAsIAotICAgIDIwNywgMjQ4LCAxLCAxLCAyMzEsIDE2LCAyNDgsIDEsIDEsIDIwNiwgMjI5LCAyNDgsIDEsIDEsIDIzMSwgNjYsIDI0OCwgMSwgCi0gICAgMSwgMjIyLCAxODMsIDI0OCwgMSwgMSwgMjUxLCA1OCwgMjQ4LCAxLCAxLCAyNTAsIDI5LCAyNDgsIDEsIDEsIDI1MCwgMjQ3LCAKLSAgICAyNDgsIDEsIDEsIDIyMCwgMzksIDI0OCwgMSwgMSwgMjIwLCAyNCwgMjQ4LCAxLCAxLCAyMzEsIDEzLCAyNDgsIDEsIDQ2LCAKLSAgICAxLCAyMTksIDE4NCwgMjQ4LCAxLCA0NiwgMSwgMjEwLCA2OSwgMjQ4LCAxLCA0NiwgMSwgMjMwLCA1NCwgMjQ4LCAxLCA0NiwgCi0gICAgMSwgMjM3LCAxNzEsIDI0OCwgMSwgMSwgMjM4LCAxMjAsIDI0OCwgMSwgMSwgMjI3LCAxNjIsIDI0OCwgMSwgMSwgMjAxLCAKLSAgICAyNDIsIDEyLCAyMTEsIDMyLCAyMTAsIDY5LCAxMiwgMjExLCAzMiwgMjA0LCA0MSwgMTIsIDIxMSwgMzIsIDIwMywgMTcxLCAKLSAgICAxMiwgMjExLCAzMiwgMjQ3LCAxMzgsIDEyLCAyMTEsIDMyLCAyMTAsIDE3MywgMTIsIDIxMSwgMzIsIDIzNSwgMjEwLCAxMiwgCi0gICAgMjExLCAzMiwgMjM1LCAyMTQsIDEyLCAyMTEsIDMyLCAyMzYsIDM1LCAxMiwgMjExLCAzMiwgMjM1LCAyMTEsIDEyLCAyMTEsIAotICAgIDMyLCAyMTAsIDcyLCAxMiwgMjExLCAzMiwgMjM1LCAyMTMsIDEyLCAyMTEsIDMyLCAyMzUsIDIwOSwgMTIsIDIxMSwgMzIsIAotICAgIDIzNiwgMzMsIDEyLCAyMTEsIDMyLCAyMzUsIDIxMiwgMTIsIDIxMSwgMzIsIDIzNSwgMjA4LCAxMiwgMjExLCAzMiwgMjIzLCAKLSAgICAxNjMsIDEyLCAyMTEsIDMyLCAyMzcsIDE3MSwgMTIsIDIxMSwgMzIsIDE5NCwgMTIsIDIxMSwgMzIsIDIxOSwgMTg0LCAxMiwgCi0gICAgMjExLCAzMiwgMjExLCAyMzEsIDEyLCAyMTEsIDMyLCAyNDUsIDUxLCAxMiwgMjExLCAzMiwgMjM1LCAyMTUsIDEyLCAyMTEsIAotICAgIDMyLCAyMzcsIDEzLCAxMiwgMjExLCAzMiwgMjEwLCA4MSwgMTIsIDIxMSwgMzIsIDIxMCwgMTUyLCAxMiwgMjExLCAzMiwgCi0gICAgMjExLCAxMDgsIDEyLCAyMTEsIDMyLCAyMTMsIDk4LCAxMiwgMjExLCAzMiwgMjE5LCAzOCwgMTIsIDIxMSwgMzIsIDIxNywgCi0gICAgMTM2LCAxMiwgMjExLCAzMiwgMjA4LCAxNzQsIDEyLCAyMTEsIDMyLCAyMTAsIDcxLCAxMiwgMjExLCAzMiwgMjEwLCAxNjMsIAotICAgIDEyLCAyMTEsIDMyLCAyMzUsIDIyMywgMTIsIDIxMSwgMzIsIDIzNSwgMjA3LCAxMiwgMjExLCAzMiwgMjE4LCAyMTAsIDEyLCAKLSAgICAyMTEsIDMyLCAyMTcsIDEzNCwgNjcsIDEsIDUsIDIyOCwgMjA5LCA2NywgMSwgNSwgMjEyLCAxNjIsIDY3LCAxLCA1LCAyMTEsIAotICAgIDEwLCA2NywgMSwgNSwgMTM1LCA2NywgMSwgNSwgMjIxLCA4NCwgNjcsIDEsIDUsIDE1MiwgNjcsIDEsIDUsIDIzNywgMywgCi0gICAgNjcsIDEsIDUsIDIzNiwgMjYsIDY3LCAxLCA1LCAyMzcsIDY3LCA2NywgMSwgNSwgMjM2LCAxMzYsIDY3LCAxLCA1LCAyMjMsIAotICAgIDI0NiwgNjcsIDEsIDUsIDIxNiwgMjIwLCA2NywgMSwgNSwgMjE2LCA1NywgNjcsIDEsIDUsIDIxNSwgMTQ1LCA2NywgMSwgNSwgCi0gICAgMjE2LCAxNTgsIDY3LCAxLCA1LCAyMTUsIDIyNywgMTAyLCAyOCwgMjI5LCA1OSwgMTAyLCAyOCwgMjIyLCA5MywgMTAyLCAKLSAgICAyOCwgMjA4LCAyNDAsIDEwMiwgMjgsIDIxNiwgNDcsIDEwMiwgMjgsIDIyNCwgMTQxLCAxMDIsIDI4LCAyMTgsIDE1MywgCi0gICAgMTAyLCAyOCwgMjEyLCAxMTEsIDEwMiwgMjgsIDIzMSwgMTA2LCAxMDIsIDI4LCAyNDYsIDc0LCAxMDIsIDI4LCAyNDYsIAotICAgIDEzOCwgMTAyLCAyOCwgMjI5LCAxMjAsIDEwMiwgMjgsIDIwOSwgNjYsIDEwMiwgMjgsIDIxOCwgMTkwLCAxMDIsIDI4LCAKLSAgICAyMzYsIDI1MSwgMTAyLCAyOCwgMjI5LCA2MCwgNjMsIDEwMiwgMjgsIDIyMiwgOTQsIDYzLCAxMDIsIDI4LCAyMDgsIDI0MSwgCi0gICAgNjMsIDEwMiwgMjgsIDIxNiwgNDgsIDYzLCAxMDIsIDI4LCAyMjQsIDE0MiwgNjMsIDEwMiwgMjgsIDIxOCwgMTU0LCA2MywgCi0gICAgMTAyLCAyOCwgMjEyLCAxMTIsIDYzLCAxMDIsIDI4LCAyMzEsIDEwNywgNjMsIDEwMiwgMjgsIDI0NiwgNzUsIDYzLCAxMDIsIAotICAgIDI4LCAyNDYsIDEzOSwgNjMsIDEwMiwgMjgsIDIyOSwgMTIxLCA2MywgMTAyLCAyOCwgMjA5LCA2NywgNjMsIDEwMiwgMjgsIAotICAgIDIxOCwgMTkxLCA2MywgMTAyLCAyOCwgMjM2LCAyNTIsIDYzLCAxMDIsIDI4LCAyNDYsIDc1LCA2OCwgMTAyLCAyMjgsIDI1MywgCi0gICAgMTY3LCAyMjAsIDU0LCAxMDIsIDIyOCwgMjUzLCAxNjcsIDE1OCwgMjM2LCAyNiwgMTAyLCAxODksIDEwNSwgMTAyLCAxODksIAotICAgIDEwOCwgMTAyLCAxODksIDE0NywgMTAyLCAxODksIDE0OSwgMTAyLCAxODksIDE3MCwgMTAyLCAxODksIDE5NSwgMTAyLCAKLSAgICAxODksIDIxMywgMTExLCAxMDIsIDE4OSwgMTk5LCAxMDIsIDE4OSwgMjIyLCA2MywgMTAyLCAxODksIDIwOSwgMTUyLCAxMDIsIAotICAgIDE4OSwgMjI0LCAyOSwgMTAyLCAxODksIDIzOSwgMjQ5LCAxMDIsIDE4OSwgMjA0LCA4MCwgMTAyLCAxODksIDIwMywgMjQzLCAKLSAgICAxMDIsIDE4OSwgMjI0LCAyMjAsIDEwMiwgMTg5LCAyNDEsIDE3OSwgMTAyLCAxODksIDIxMCwgMjE0LCAxMDIsIDE4OSwgCi0gICAgMjExLCA2NCwgMTAyLCAxODksIDIzNywgNzQsIDEwMiwgMTg5LCAyMTIsIDksIDEwMiwgMTg5LCAyMjMsIDg0LCAxMDIsIAotICAgIDE4OSwgMjExLCAyMTMsIDEwMiwgMTg5LCAyNDAsIDQsIDEwMiwgMTg5LCAyNDUsIDIxMSwgMTAyLCAxODksIDIyOCwgMTAyLCAKLSAgICAxMDIsIDE4OSwgMjE2LCA5NSwgMTAyLCAxODksIDI0NywgNzEsIDEwMiwgMTg5LCAyMTEsIDE0LCAxMDIsIDE4OSwgMjEwLCAKLSAgICAxOTYsIDEwMiwgMTg5LCAyNDEsIDY1LCAxMDIsIDE4OSwgMjE2LCA4NywgMTAyLCAxODksIDI1MSwgMTAsIDEwMiwgMTg5LCAKLSAgICAyNDAsIDMzLCAxMDIsIDE4OSwgMjE2LCA4NSwgMTAyLCAxODksIDIxMywgMTQ5LCAxMDIsIDE4OSwgMjE2LCAxNTcsIDQzLCAKLSAgICAxODksIDIxNywgNDYsIDQzLCAxODksIDIyOSwgODMsIDQzLCAxODksIDIxNCwgMTk1LCA0MywgMTg5LCAyMjgsIDI0OSwgNDMsIAotICAgIDQyLCAyMDksIDE1MywgMjIwLCAzMiwgNjIsIDIxMSwgMTc3LCA0MywgNDIsIDIwNywgMTUyLCAyMjAsIDMyLCA2MiwgMjExLCAKLSAgICAxNzcsIDQzLCA0MiwgMjA5LCA1NCwgMjIwLCAzMiwgNjIsIDIxMSwgMTc3LCA0MywgNDIsIDIzOSwgMTU0LCAyMjAsIDMyLCAKLSAgICA2MiwgMjExLCAxNzcsIDQzLCA0MiwgMjQwLCAxOSwgMjIwLCAzMiwgNjIsIDIxMSwgMTc3LCA0MywgNDIsIDIxMiwgNzUsIAotICAgIDIyMCwgMzIsIDYyLCAyMTEsIDE3NywgNDMsIDQyLCAyMTMsIDEwNiwgMjIwLCAzMiwgNjIsIDIxMSwgMTc3LCA0MywgNDIsIAotICAgIDI0MSwgMTM1LCAyMjAsIDMyLCA2MiwgMjExLCAxNzcsIDIxOSwgNjcsIDU0LCA0MywgNDIsIDIwNywgMTUyLCAxMDUsIDQzLCAKLSAgICA0MiwgMjA3LCAxNTIsIDEwOCwgNDMsIDQyLCAyMDcsIDE1MiwgMTQ3LCA0MywgNDIsIDIwNywgMTUyLCAxNDksIDQzLCA0MiwgCi0gICAgMjA3LCAxNTIsIDE3MCwgNDMsIDQyLCAyMDcsIDE1MiwgMTk1LCA0MywgNDIsIDIwNywgMTUyLCAyMTMsIDExMSwgNDMsIDQyLCAKLSAgICAyMDcsIDE1MiwgMTk5LCA0MywgNDIsIDIwNywgMTUyLCAyMjIsIDYzLCA0MywgNDIsIDIwOSwgNTMsIDQzLCA0MiwgMjA5LCAKLSAgICA1NCwgMTA1LCA0MywgNDIsIDIwOSwgNTQsIDEwOCwgNDMsIDQyLCAyMDksIDU0LCAxNDcsIDQzLCA0MiwgMjA5LCA1NCwgCi0gICAgMTQ5LCA0MywgNDIsIDIwOSwgNTQsIDE3MCwgNDMsIDI4LCAyMjksIDU5LCA0MywgMjgsIDIyMiwgOTMsIDQzLCAyOCwgMjA4LCAKLSAgICAyNDAsIDQzLCAyOCwgMjE2LCA0NywgNDMsIDI4LCAyMjQsIDE0MSwgNDMsIDI4LCAyMTgsIDE1MywgNDMsIDI4LCAyMTIsIAotICAgIDExMSwgNDMsIDI4LCAyMzEsIDEwNiwgNDMsIDI4LCAyNDYsIDc0LCA0MywgMjgsIDI0NiwgMTM4LCA0MywgMjgsIDIyOSwgCi0gICAgMTIwLCA0MywgMjgsIDIwOSwgNjYsIDQzLCAyOCwgMjE4LCAxOTAsIDQzLCAyOCwgMjM2LCAyNTEsIDQzLCAyOCwgMjI5LCAKLSAgICA2MCwgNjMsIDQzLCAyOCwgMjIyLCA5NCwgNjMsIDQzLCAyOCwgMjA4LCAyNDEsIDYzLCA0MywgMjgsIDIxNiwgNDgsIDYzLCAKLSAgICA0MywgMjgsIDIyNCwgMTQyLCA2MywgNDMsIDI4LCAyMTgsIDE1NCwgNjMsIDQzLCAyOCwgMjEyLCAxMTIsIDYzLCA0MywgMjgsIAotICAgIDIzMSwgMTA3LCA2MywgNDMsIDI4LCAyNDYsIDc1LCA2MywgNDMsIDI4LCAyNDYsIDEzOSwgNjMsIDQzLCAyOCwgMjI5LCAKLSAgICAxMjEsIDYzLCA0MywgMjgsIDIwOSwgNjcsIDYzLCA0MywgMjgsIDIxOCwgMTkxLCA2MywgNDMsIDI4LCAyMzYsIDI1MiwgNjMsIAotICAgIDQzLCAyMjgsIDI1MywgMTY3LCAyNDYsIDE4OSwgNDMsIDIyOCwgMjUzLCAxNjcsIDIzMCwgNzgsIDQzLCAyOCwgMjMxLCAKLSAgICAxMDcsIDY4LCAyMjgsIDI1MywgMjExLCA5NywgOTcsIDQzLCAxODksIDEwNSwgNDMsIDE4OSwgMTA4LCA0MywgMTg5LCAxNDcsIAotICAgIDQzLCAxODksIDE0OSwgNDMsIDE4OSwgMTcwLCA0MywgMTg5LCAxOTUsIDQzLCAxODksIDIxMywgMTExLCA0MywgMTg5LCAKLSAgICAxOTksIDQzLCAxODksIDIyMiwgNjMsIDQzLCAxODksIDIwOSwgMTUyLCA0MywgMTg5LCAyMjQsIDI5LCA0MywgMTg5LCAyMzksIAotICAgIDI0OSwgNDMsIDE4OSwgMjA0LCA4MCwgNDMsIDE4OSwgMjAzLCAyNDMsIDQzLCAxODksIDIyNCwgMjIwLCA0MywgMTg5LCAKLSAgICAyNDEsIDE3OSwgNDMsIDE4OSwgMjEwLCAyMTQsIDQzLCAxODksIDIxMSwgNjQsIDQzLCAxODksIDIzNywgNzQsIDQzLCAxODksIAotICAgIDIxMiwgOSwgNDMsIDE4OSwgMjIzLCA4NCwgNDMsIDE4OSwgMjExLCAyMTMsIDQzLCAxODksIDI0MCwgNCwgNDMsIDE4OSwgCi0gICAgMjQ1LCAyMTEsIDQzLCAxODksIDIyOCwgMTAyLCA0MywgMTg5LCAyMTQsIDE2OSwgNDMsIDE4OSwgMjI1LCAxMjYsIDQzLCAKLSAgICAxODksIDI0MCwgNDIsIDQzLCAxODksIDIxMCwgMjI2LCA0MywgMTg5LCAyNDAsIDIxNiwgNDMsIDE4OSwgMjE3LCAyMzMsIAotICAgIDQzLCAxODksIDI1MCwgMzgsIDQzLCAxODksIDIzMCwgMjAwLCA0MywgMTg5LCAyMTYsIDg1LCA0MywgMTg5LCAyNDUsIDE3MCwgCi0gICAgNDMsIDE4OSwgMjQ1LCAxNjAsIDQzLCAxODksIDIzNiwgMjQ0LCA0MywgMTg5LCAyNDYsIDIxNywgNDMsIDE4OSwgMjI3LCAwLCAKLSAgICA0MywgMTg5LCAyMjcsIDIyMiwgNDMsIDE4OSwgMjE2LCAxNiwgNDMsIDE4OSwgMjI1LCAxMSwgNDMsIDE4OSwgMjE2LCAxMTIsIAotICAgIDQzLCAxODksIDIxMSwgMTQsIDQzLCAxODksIDIxMCwgMTk2LCA0MywgMTg5LCAyNDEsIDY1LCA0MywgMTg5LCAyMTYsIDg3LCAKLSAgICA0MywgMTg5LCAyNTEsIDEwLCA0MywgMTg5LCAyMjIsIDc5LCA0MywgNDIsIDIwOSwgNTQsIDE5NSwgNDMsIDQyLCAyMDksIAotICAgIDU0LCAyMTMsIDExMSwgNDMsIDQyLCAyMDksIDU0LCAxOTksIDQzLCA0MiwgMjA5LCA1NCwgMjIyLCA2MywgNDMsIDQyLCAKLSAgICAyMzksIDE1MywgNDMsIDQyLCAyMzksIDE1NCwgMTA1LCA0MywgNDIsIDIzOSwgMTU0LCAxMDgsIDQzLCA0MiwgMjM5LCAxNTQsIAotICAgIDE0NywgNDMsIDQyLCAyMzksIDE1NCwgMTQ5LCA0MywgNDIsIDIzOSwgMTU0LCAxNzAsIDQzLCA0MiwgMjM5LCAxNTQsIDE5NSwgCi0gICAgNDMsIDQyLCAyMzksIDE1NCwgMjEzLCAxMTEsIDQzLCA0MiwgMjM5LCAxNTQsIDE5OSwgNDMsIDQyLCAyMzksIDE1NCwgMjIyLCAKLSAgICA2MywgNDMsIDQyLCAyNDAsIDE4LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzMCwgMTcxLCAxMzksIDIwOSwgMTY0LCAxNiwgCi0gICAgMzUsIDI0MCwgNTQsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjI1LCA5NCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNTAsIAotICAgIDE1MCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMjUsIDYzLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzMCwgNzYsIDEzOSwgCi0gICAgMjA5LCAxNjQsIDE2LCAzNSwgMjMwLCA3NywgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNTAsIDMwLCAxMzksIDIwOSwgMTY0LCAKLSAgICAxNiwgMzUsIDIxMywgMTI5LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIyMCwgNzksIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgCi0gICAgMjIxLCAxNTMsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCA3MCwgNTEsIDIzNywgMTMsIDUxLCAyNDEsIDI0LCA1MSwgCi0gICAgMjQwLCAyMjYsIDIyNywgMTIwLCAyMjcsIDE0NywgNTQsIDQzLCA2NywgNjMsIDQzLCA2NywgNzUsIDQzLCA2NywgNjgsIDQzLCAKLSAgICA2NywgNzQsIDQzLCA2NywgNzgsIDQzLCA2NywgMTczLCA0MywgNjcsIDIyOSwgMTAwLCA0MywgNjcsIDIyOCwgMjA5LCA0MywgCi0gICAgNjcsIDIyOSwgMjAxLCA0MywgNjcsIDIyOSwgMjYsIDQzLCA2NywgMjE1LCAzNiwgNDMsIDY3LCAyMTIsIDE2MiwgNDMsIDY3LCAKLSAgICAyMTEsIDEwLCA0MywgNjcsIDIxNCwgMTc3LCA0MywgNjcsIDIxMiwgMTMsIDQzLCA2NywgMjEwLCAyMiwgNDMsIDY3LCAyMDksIAotICAgIDIsIDQzLCA2NywgMjA3LCAyMDMsIDQzLCA2NywgMjA5LCAxODcsIDQzLCA2NywgMTM1LCA0MywgNjcsIDIwMSwgMjAxLCA0MywgCi0gICAgNjcsIDIyMiwgMTAwLCA0MywgNjcsIDIyMSwgODQsIDQzLCA2NywgMjIyLCAyNDAsIDQzLCA2NywgMjIxLCAxOTEsIDQzLCAKLSAgICA2NywgMTUyLCA0MywgNjcsIDIzNywgMywgNDMsIDY3LCAyMzYsIDI2LCA0MywgNjcsIDIzNywgNjcsIDQzLCA2NywgMjM2LCAKLSAgICAxMzYsIDQzLCA2NywgMTkyLCA0MywgNjcsIDIyNCwgMTU1LCA0MywgNjcsIDIyMywgMjQ2LCA0MywgNjcsIDIyNSwgMjAsIAotICAgIDQzLCA2NywgMjI0LCA4MiwgNDMsIDY3LCAxOTgsIDQzLCA2NywgMjAyLCAyMTMsIDQzLCA2NywgMjAyLCAyNDcsIDQzLCA2NywgCi0gICAgMjE2LCAyMjAsIDQzLCA2NywgMjE2LCA1NywgNDMsIDY3LCAyMTUsIDE0NSwgNDMsIDY3LCAyMTYsIDE1OCwgNDMsIDY3LCAKLSAgICAyMTUsIDIyNywgNDMsIDY3LCAyMDQsIDExMSwgNDMsIDY3LCAyMDQsIDMwLCA0MywgNjcsIDIwNCwgNjIsIDQzLCA2NywgCi0gICAgMjA0LCAwLCA1MSwgMjUwLCAxNzQsIDUxLCAyNTAsIDgzLCA1MSwgMjUwLCAyMDEsIDUxLCAyNTEsIDIzOSwgNTEsIDIzMSwgCi0gICAgMTgsIDUxLCAyMzAsIDI0MiwgNTEsIDIwNiwgMjI3LCA1MSwgMjQwLCAyNTMsIDUxLCAyNDEsIDE1OCwgNTEsIDIyMCwgMjEsIAotICAgIDUxLCAyMjAsIDE0LCA1MSwgMjMwLCAxNiwgNTEsIDIyOSwgMjM4LCA1MSwgMjI5LCAyMzUsIDUxLCAyMzgsIDIyMCwgNTEsIAotICAgIDIzOCwgMjI5LCA1MSwgMjM4LCA3MCwgNTEsIDIzOCwgNjYsIDUxLCAyMjgsIDEzMiwgNTEsIDIzOCwgNTgsIDUxLCAyMjksIAotICAgIDc1LCA1MSwgMjI5LCA3NCwgNTEsIDIyOSwgNzMsIDUxLCAyMjksIDcyLCA1MSwgMjM3LCAyMDAsIDUxLCAyMzcsIDE5OSwgCi0gICAgNTEsIDIyOCwgMTgwLCA1MSwgMjI4LCAxODIsIDUxLCAyMjksIDE5NCwgNTEsIDIyOCwgMjUxLCA1MSwgMjI5LCAzLCA1MSwgCi0gICAgMjE1LCAxNywgNTEsIDIxNCwgMjM2LCA1MSwgMjEyLCA5MiwgNTEsIDIxMywgMTM0LCA1MSwgMjEzLCAxMzMsIDUxLCAyNDQsIAotICAgIDIwOSwgNTEsIDI0NCwgMTQsIDUxLCAyNDMsIDg2LCA1MSwgMjA4LCAxNjMsIDUxLCAyMjMsIDc5LCA1MSwgMjIxLCAxNTQsIAotICAgIDUxLCAyMzcsIDE0MiwgNTEsIDIxOSwgMTYzLCA1MSwgMjE5LCAxNjIsIDUxLCAyNDksIDI5LCA1MSwgMjE4LCAxNjQsIDUxLCAKLSAgICAyMTgsIDEyNywgNTEsIDIxOCwgMTI4LCA1MSwgMjQ4LCA1NywgNTEsIDIzNiwgMjQsIDUxLCAyMzYsIDE5LCA1MSwgMjQ3LCAKLSAgICAxNTEsIDUxLCAyMzYsIDQsIDUxLCAyMzcsIDM5LCA1MSwgMjE4LCAyMjAsIDUxLCAyMTksIDQsIDUxLCAyMzcsIDIyLCA1MSwgCi0gICAgMjE5LCAwLCA1MSwgMjE5LCAxOCwgNTEsIDI0OCwgMTQ1LCA1MSwgMjE4LCA1OCwgNTEsIDI0NywgMjUzLCA1MSwgMjM2LCAKLSAgICAxMjAsIDUxLCAyMTgsIDQ2LCA1MSwgMjM2LCAxMTEsIDUxLCAyMzYsIDExMywgNTEsIDIyNSwgMTM4LCA1MSwgMjI1LCAxMzQsIAotICAgIDUxLCAyMjUsIDE0MywgNTEsIDIyNSwgODMsIDUxLCAyMjUsIDExMCwgNTEsIDIyNCwgMTIxLCA1MSwgMjI0LCA5NywgNTEsIAotICAgIDIyNCwgOTYsIDUxLCAyMjUsIDAsIDUxLCAyMjQsIDI1MywgNTEsIDIyNSwgMSwgNTEsIDIwMywgMTA5LCA1MSwgMjAzLCAKLSAgICAxMDcsIDUxLCAyMDIsIDIwMiwgNTEsIDIxNSwgMjQzLCA1MSwgMjE1LCAyNDcsIDUxLCAyMTUsIDExOSwgNTEsIDIxNSwgCi0gICAgMTEzLCA1MSwgMjE2LCAxMDksIDUxLCAyMTYsIDEwNiwgNTEsIDIwNCwgNzgsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCAKLSAgICA0MywgMjAyLCA4NCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAxMDUsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgCi0gICAgMjM2LCA0MywgMTA4LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIDE0NywgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAKLSAgICAyMzYsIDQzLCAxNDksIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMTcwLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIAotICAgIDIzNiwgNDMsIDE5NSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAyMTMsIDExMSwgMTM5LCAyMDksIDE2NCwgCi0gICAgMTYsIDM1LCAyMzYsIDQzLCAxOTksIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMjIyLCA2MywgMTM5LCAyMDksIAotICAgIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAyMDksIDE1MiwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAyNDEsIDExMiwgCi0gICAgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAyMDcsIDE1NCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAKLSAgICAyMDksIDU1LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIDIzOSwgMTQxLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIAotICAgIDIzNiwgNDMsIDI0MCwgMjIsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMjEyLCA4MiwgMTM5LCAyMDksIDE2NCwgCi0gICAgMTYsIDM1LCAyMzYsIDQzLCAyMTMsIDEwOCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAyNDEsIDE0MCwgMTM5LCAKLSAgICAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAyMjIsIDYwLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIDIwNywgCi0gICAgMTUxLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIDIwNywgMTQ1LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIAotICAgIDIzNiwgNDMsIDIwNywgMTQxLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIDIwNywgMTQyLCAxMzksIDIwOSwgCi0gICAgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIDIwNywgMTQ3LCA1MSwgMjM2LCAzNCwgNTEsIDI0NCwgMjEyLCA1MSwgMjUwLCAzNCwgCi0gICAgNTEsIDE0MiwgNTEsIDIxOSwgMjA2LCA1MSwgMjE5LCAzOSwgNTEsIDI0MywgMTE1LCA1MSwgMjQzLCAxMTYsIDIxMSwgMTc2LCAKLSAgICA1MSwgMjQzLCAxMTYsIDI0NSwgMTA1LCA1MSwgMjMwLCAxOTcsIDUxLCAyNDEsIDI3LCAyMjMsIDg1LCAyMzcsIDQwLCA1MSwgCi0gICAgMjQxLCAyNywgMjIzLCA4NSwgMjEwLCA5MiwgNTEsIDI0MSwgMjcsIDIyMywgODUsIDIwOSwgMjQ1LCA1MSwgMjQxLCAyNywgCi0gICAgMjIzLCA4NSwgMjI0LCAyNTIsIDUxLCAyNDUsIDE2MiwgNTEsIDIxOSwgMTY5LCAyNTAsIDIzMywgNTEsIDIwMSwgMjAxLCAKLSAgICA1MSwgMjIzLCAyNDcsIDYzLCA1MSwgMTkyLCA1MSwgMTczLCA1MSwgMjI5LCAyMDQsIDUxLCAyMjUsIDU5LCA1MSwgMjM4LCAKLSAgICAyMDgsIDUxLCAyNDcsIDc2LCA1MSwgMjI5LCAyMDMsIDUxLCAyMTgsIDIxMSwgNTEsIDIyMiwgMjA3LCA1MSwgMjIzLCAyNDcsIAotICAgIDI0MCwgMTc0LCA1MSwgMjIzLCAyNDcsIDIzOSwgNzUsIDUxLCAyMjQsIDE5NiwgNTEsIDIyOSwgMTQ2LCA1MSwgMjM1LCAKLSAgICAyMTUsIDUxLCAyMjksIDEwMiwgNTEsIDIyNCwgMTU3LCA1MSwgMjM4LCA4MywgNTEsIDIwOSwgNCwgNTEsIDIyMywgMjQ3LCAKLSAgICAxNTksIDUxLCAyMjQsIDkwLCA1MSwgMjQzLCAxMjUsIDUxLCAyMjksIDQxLCA1MSwgMjM5LCAxODgsIDUxLCAyMjEsIDIyOSwgCi0gICAgNTEsIDIyMywgMjQ3LCAyMjYsIDE4NSwgNTEsIDIyNCwgODcsIDUxLCAyNDUsIDI1NSwgNTEsIDIyOSwgMzUsIDUxLCAyMjQsIAotICAgIDg4LCAyMTEsIDE3NiwgNTEsIDI0NiwgMCwgMjExLCAxNzYsIDUxLCAyMjYsIDE4NiwgMjExLCAxNzYsIDUxLCAyMjksIDM2LCAKLSAgICAyMTEsIDE3NiwgNTEsIDIyNCwgODgsIDI0NSwgMTA1LCA1MSwgMjQ2LCAwLCAyNDUsIDEwNSwgNTEsIDIyNiwgMTg2LCAyNDUsIAotICAgIDEwNSwgNTEsIDIyOSwgMzYsIDI0NSwgMTA1LCA1MSwgMjI2LCAxODYsIDExNSwgMTk0LCA1MSwgMjI2LCAxODYsIDExNSwgCi0gICAgMjE1LCA5NCwgMjExLCAxNzYsIDUxLCAxODUsIDUxLCAyMjgsIDI0NCwgNTEsIDIyMywgMjUwLCA1MSwgMjM4LCAxNSwgNTEsIAotICAgIDIxNiwgMjA3LCA1MSwgMjE2LCAyMDgsIDExNSwgMTk0LCA1MSwgMjE2LCAyMDgsIDExNSwgMjE1LCA5NCwgMjExLCAxNzYsIAotICAgIDUxLCAyMTcsIDIwNCwgNTEsIDIyMSwgMTIyLCA1MSwgMjIzLCAyNDcsIDE5NCwgNTEsIDIyMywgMjQ4LCA1MSwgMjE3LCAKLSAgICAxNTQsIDUxLCAyMjEsIDIyLCA1MSwgMjIzLCAyNDcsIDIwNiwgMTY0LCA1MSwgMjIzLCAxODcsIDUxLCAyMjgsIDE3MCwgNTEsIAotICAgIDIyMywgMTg4LCAyMjUsIDAsIDUxLCAyMTcsIDE1MywgNTEsIDIyMSwgMjEsIDUxLCAyMjMsIDI0NywgMjA0LCAxNDQsIDUxLCAKLSAgICAyMjMsIDE4MSwgNTEsIDIyOCwgMTY4LCA1MSwgMjIzLCAxODIsIDIyNSwgMCwgNTEsIDIzMCwgNTUsIDIyMCwgNTgsIDUxLCAKLSAgICAyMjYsIDE4NiwgMjIwLCA1OCwgNTEsIDI1MCwgMjQ3LCA1MSwgMjQ3LCAyMjksIDUxLCAyNDcsIDYsIDUxLCAyNDYsIDIzOSwgCi0gICAgNTEsIDI0NywgMTI2LCAxMTUsIDIyOSwgMTQ2LCA1MSwgMjQ1LCAyNTQsIDUxLCAyNDQsIDEyOSwgNTEsIDIzNywgMTg0LCAKLSAgICA1MSwgMTUyLCA1MSwgMjM2LCAzNSwgNTEsIDIzMSwgNDksIDUxLCAyMjksIDQ4LCA1MSwgMjI5LCAzNiwgMjQ3LCA0NywgNTEsIAotICAgIDIyOCwgMjExLCA1MSwgMjI3LCA1MiwgNTEsIDIyNywgNTEsIDUxLCAyMjcsIDM4LCA1MSwgMjI2LCAyMDAsIDUxLCAyMjUsIAotICAgIDYwLCAyMTIsIDM2LCA1MSwgMjI0LCAxMjAsIDUxLCAyMjQsIDU2LCA1MSwgMjE4LCAyMDksIDUxLCAyMTgsIDcyLCA1MSwgCi0gICAgMjE4LCAxMSwgNTEsIDIxOCwgOSwgNTEsIDIxMSwgMTY4LCA1MSwgMjEwLCAxNzcsIDUxLCAyMDQsIDY0LCA1MSwgMjA2LCAKLSAgICAxNjUsIDExNSwgMjI2LCAxODUsIDUxLCAzNCwgMTE1LCAyMjYsIDE4NSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIAotICAgIDEzMywgMTA1LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAxMDgsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgCi0gICAgMjQ0LCAxMzMsIDE0NywgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMTQ5LCAxMzksIDIwOSwgMTY0LCAxNiwgCi0gICAgMzUsIDI0NCwgMTMzLCAxNzAsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDE5NSwgMTM5LCAyMDksIDE2NCwgCi0gICAgMTYsIDM1LCAyNDQsIDEzMywgMjEzLCAxMTEsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDE5OSwgMTM5LCAKLSAgICAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjIyLCA2MywgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgCi0gICAgMjA5LCAxNTIsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDI0MSwgMTEyLCAxMzksIDIwOSwgMTY0LCAxNiwgCi0gICAgMzUsIDI0NCwgMTMzLCAyMDcsIDE1NCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjA5LCA1NSwgMTM5LCAKLSAgICAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjM5LCAxNDEsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIAotICAgIDI0MCwgMjIsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIxMiwgODIsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgCi0gICAgMjQ0LCAxMzMsIDIxMywgMTA4LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyNDEsIDE0MCwgMTM5LCAyMDksIAotICAgIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjIyLCA2MCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjA3LCAKLSAgICAxNTEsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIwNywgMTQ1LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIAotICAgIDI0NCwgMTMzLCAyMDcsIDE0MSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjA3LCAxNDIsIDEzOSwgMjA5LCAKLSAgICAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIwNywgMTQ3LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyMDcsIAotICAgIDE0OCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjA3LCAxNDMsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgCi0gICAgMjQ0LCAxMzMsIDIwNywgMTQ0LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyMDcsIDE1MCwgMTM5LCAyMDksIAotICAgIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjA3LCAxNDYsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIwOSwgCi0gICAgNTMsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIwOSwgNTIsIDUxLCAyMzgsIDI0NiwgMjM3LCAxNiwgMzUsIAotICAgIDIwOSwgOTMsIDI0NSwgMTQyLCAyMzcsIDUxLCAyMzcsIDE2LCAzNSwgMjA5LCA5MywgMjE2LCAxNTEsIDI0MSwgMTc5LCAKLSAgICAyMzcsIDE2LCAzNSwgMjQzLCAyMDMsIDI1MCwgNTAsIDIwOSwgOTMsIDI0OCwgMTQwLCAyMzcsIDE2LCAzNSwgMjAyLCAyMjYsIAotICAgIDIzOSwgMTgwLCAyMzcsIDE2LCAzNSwgMjA0LCAxMDMsIDIzNywgMTYsIDM1LCAyNDUsIDIxNCwgMjM3LCAxNiwgMzUsIDIwOSwgCi0gICAgOTMsIDI1MCwgMTA1LCAyMzcsIDE2LCAzNSwgMjM2LCAxMjcsIDIwOCwgMTY5LCAyMzcsIDE2LCAzNSwgNSwgMjA5LCAyMzEsIAotICAgIDIzNywgMTYsIDM1LCAyMDgsIDk3LCAyMzcsIDE2LCAzNSwgMjE5LCAzMiwgMjM3LCAxNiwgMzUsIDIxMSwgOTYsIDIzNywgCi0gICAgMTYsIDM1LCAyNDAsIDQ0LCAyMzcsIDE2LCAzNSwgMjM3LCAyNDksIDIxOCwgMzIsIDIzNywgMTYsIDM1LCAyMjQsIDc1LCAKLSAgICAyMzcsIDE2LCAzNSwgMjQxLCA2NCwgMjM3LCAxNiwgMzUsIDIzOSwgMTgxLCAyMzcsIDE2LCAzNSwgMjAzLCAyMzYsIDIyMCwgCi0gICAgMzIsIDIwOSwgOTMsIDI0NCwgNzEsIDIzNywgMTYsIDM1LCAyNTAsIDE1NCwgMjM3LCAxNiwgMzUsIDI0NSwgMTkzLCAyMzcsIAotICAgIDE2LCAzNSwgMjQ4LCA0OSwgMjA5LCAyNCwgMjM3LCAxNiwgMzUsIDIzOCwgMTMsIDIzNywgMTYsIDM1LCAyMTEsIDE5MiwgCi0gICAgMjUwLCAxNzMsIDIzNywgMTYsIDM1LCAyMTYsIDc3LCAyMzcsIDE2LCAzNSwgMjMxLCAxMiwgMjM3LCAxNiwgMzUsIDIzNywgCi0gICAgMjQ5LCAyMDksIDIzMSwgMjM3LCAxNiwgMzUsIDIyNCwgOCwgMjQ1LCAxNjQsIDIzNywgMTYsIDM1LCAyMzcsIDI0OSwgMjE3LCAKLSAgICAyNDQsIDIzNywgMTYsIDM1LCAyMDksIDkzLCAyNTEsIDE0MywgMjA0LCA4MCwgMjM3LCAxNiwgMzUsIDIwOSwgOTMsIDI0NiwgCi0gICAgMjQsIDIzOSwgMjQ5LCAyMzcsIDE2LCAzNSwgMjMxLCAyNiwgMjM3LCAxNiwgMzUsIDI0MiwgMjAsIDIzNywgMTYsIDM1LCAKLSAgICAyMTYsIDgwLCAyMzcsIDE2LCAzNSwgMjM3LCAyNDksIDIxOCwgMTYsIDIzNywgMTYsIDM1LCAyMTcsIDIyMSwgMjM3LCAxNiwgCi0gICAgMzUsIDI0NCwgMTQ5LCA3NiwgMjA5LCA5MywgMjI3LCAxMzQsIDIzNywgMTYsIDM1LCAyMDksIDkzLCAyNDAsIDgyLCAyMzcsIAotICAgIDE2LCAzNSwgMjE5LCAyNTAsIDIzNywgMTYsIDM1LCAyMjAsIDg1LCAyMzcsIDE2LCAzNSwgMjQ0LCA0MiwgMjM3LCAxNiwgCi0gICAgMzUsIDI0NCwgNjMsIDIzNywgMTYsIDM1LCAyMzEsIDQwLCAyMzcsIDE2LCAzNSwgMjQ3LCAyMTcsIDIzNywgMTYsIDM1LCAKLSAgICAyNDUsIDIzNSwgMjA4LCAxNzMsIDIyNSwgMywgMjM3LCAxNiwgMzUsIDIzOCwgMjE1LCAyMDgsIDE2OSwgMjM3LCAxNiwgMzUsIAotICAgIDIxNywgMTYzLCAyMDYsIDIxMywgMjM3LCAxNiwgMzUsIDIxOSwgMjQ5LCAyMzcsIDE2LCAzNSwgMjA5LCA5MywgMjA0LCA1MCwgCi0gICAgMjM3LCAxNiwgMzUsIDIxNiwgNjgsIDIzNywgMTYsIDM1LCAyMDksIDkzLCAyNDcsIDEyLCAyMzcsIDE2LCAzNSwgMjA5LCAKLSAgICA5MywgMjUwLCAxMDEsIDIwOSwgMTgsIDIzNywgMTYsIDM1LCAyMDksIDkzLCAyMjksIDE5NSwgMjExLCA2OCwgMjI0LCAxMiwgCi0gICAgMjM3LCAxNiwgMzUsIDI0NCwgOSwgMjM3LCAxNiwgMzUsIDIwOSwgOTMsIDIyNSwgODUsIDIyNSwgMTM5LCAyMzcsIDE2LCAKLSAgICAzNSwgMjUxLCAxNDQsIDIzNywgMTYsIDM1LCAyMDksIDkzLCAyMDQsIDk2LCAyMzcsIDE2LCAzNSwgMjA5LCA5MywgMjM4LCAKLSAgICAxNzMsIDIwNCwgMTYsIDIzNywgMTYsIDM1LCAyMDksIDkzLCAyMzAsIDg0LCAyMjgsIDMzLCAyMzcsIDE2LCAzNSwgMjQzLCAKLSAgICAxNTMsIDIzNywgMTYsIDM1LCAyMjcsIDEyMSwgMjM3LCAxNiwgMzUsIDIzMSwgMTUsIDIwOCwgMjQsIDIzNywgMTYsIDM1LCAKLSAgICA1LCAyMTcsIDI0NCwgMjM3LCAxNiwgMzUsIDI1MSwgODIsIDI0NSwgMjI2LCAyMzcsIDE2LCAzNSwgMjQ4LCAxNDMsIDI0NSwgCi0gICAgMjI2LCAxMSwgNCwgMjMwLCAyMDEsIDExLCA0LCAyMzAsIDE5MywgMTEsIDQsIDc1LCAxMSwgNCwgMjMwLCAyMjcsIDExLCA0LCAKLSAgICAyMzEsIDEwOCwgMTEsIDQsIDIzMSwgOTEsIDExLCA0LCAyMzEsIDExMCwgMTEsIDQsIDIzMSwgMTA5LCAxMSwgNCwgMjUwLCAKLSAgICA0OSwgMTEsIDQsIDI1MCwgMTAsIDExLCA0LCA2MywgMTEsIDQsIDI1MCwgMTc1LCAxMSwgNCwgMjA2LCAyMjUsIDExLCA0LCAKLSAgICAyMDYsIDIyOCwgMTEsIDQsIDIwNiwgMjI2LCAxMSwgNCwgMjE5LCAyMjQsIDExLCA0LCAyMTksIDE5MywgMTEsIDQsIDc4LCAKLSAgICAxMSwgNCwgMjIwLCA5LCAxMSwgNCwgMjQwLCAyMTcsIDExLCA0LCA3NCwgMTEsIDQsIDIwMywgMjE3LCAxMSwgNCwgMjQ4LCAKLSAgICA1MSwgMTEsIDQsIDI0OCwgNDcsIDExLCA0LCAyNDgsIDg2LCAxMSwgNCwgMjQ4LCA2MSwgMTEsIDQsIDI0OCwgNzUsIDExLCAKLSAgICA0LCAyNDgsIDc0LCAxMSwgNCwgMjQ4LCA3NywgMTEsIDQsIDI0OCwgNzYsIDExLCA0LCAyNDgsIDIwOSwgMTEsIDQsIDI0OCwgCi0gICAgMjAxLCAxMSwgNCwgMjQ5LCAzMiwgMTEsIDQsIDI0OCwgMjMyLCAxMSwgNCwgMjQ3LCAxNjMsIDExLCA0LCAyNDcsIDE2NywgCi0gICAgMTEsIDQsIDI0NywgMTY0LCAxMSwgNCwgMjQ3LCAyNTIsIDExLCA0LCAyNDcsIDIzMywgMTEsIDQsIDI0OCwgMjMsIDExLCA0LCAKLSAgICAyNDgsIDIsIDExLCA0LCAyNDgsIDEwMSwgMTEsIDQsIDI0OCwgMTYyLCAxMSwgNCwgMjQ4LCAxMTMsIDExLCA0LCAyNDcsIAotICAgIDE0NywgMTEsIDQsIDI0NywgMTQzLCAxMSwgNCwgMjQ3LCAxOTMsIDExLCA0LCAyNDcsIDE2MiwgMTEsIDQsIDI0NywgMTU1LCAKLSAgICAxMSwgNCwgMjQ3LCAxNjAsIDExLCA0LCAyNDcsIDEzMSwgMTEsIDQsIDI0NywgMTI5LCAxMSwgNCwgMjQ3LCAxMzYsIDExLCAKLSAgICA0LCAyNDcsIDEzNCwgMTEsIDQsIDI0NywgMTMyLCAxMSwgNCwgMjQ3LCAxMzMsIDExLCA0LCAyMTgsIDEwNSwgMTEsIDQsIAotICAgIDIxOCwgMTAxLCAxMSwgNCwgMjE4LCAxNjcsIDExLCA0LCAyMTgsIDExNywgMTEsIDQsIDIxOCwgMTMzLCAxMSwgNCwgMjE4LCAKLSAgICAxNjAsIDExLCA0LCAyMTgsIDE1NiwgMTEsIDQsIDIxOSwgNTUsIDExLCA0LCAyMTksIDQ0LCAxMSwgNCwgMTg1LCAxMSwgNCwgCi0gICAgMjE5LCA5NiwgMTEsIDQsIDIxNywgMTczLCAxMSwgNCwgMjE3LCAxNzUsIDExLCA0LCAyMTcsIDE3NCwgMTEsIDQsIDIxOCwgCi0gICAgMjUsIDExLCA0LCAyMTgsIDE0LCAxMSwgNCwgMjE4LCA2OSwgMTEsIDQsIDIxOCwgNDEsIDExLCA0LCAyMTcsIDE1OSwgMTEsIAotICAgIDQsIDIxNywgMTU1LCAxMSwgNCwgMjE3LCAxOTEsIDExLCA0LCAyMTcsIDE3MiwgMTEsIDQsIDIxNywgMTY0LCAxMSwgNCwgCi0gICAgMjE3LCAxNzAsIDExLCA0LCAyMTcsIDEzOCwgMTEsIDQsIDIxNywgMTM3LCAxMSwgNCwgMjE3LCAxNDIsIDExLCA0LCAyMTcsIAotICAgIDE0MSwgMTEsIDQsIDIxNywgMTM5LCAxMSwgNCwgMjE3LCAxNDAsIDExLCA0LCAyNDgsIDE4MywgMTEsIDQsIDI0OCwgMTgyLCAKLSAgICAxMSwgNCwgMjQ4LCAxODksIDExLCA0LCAyNDgsIDE4NCwgMTEsIDQsIDI0OCwgMTg2LCAxMSwgNCwgMjQ4LCAxODUsIDExLCAKLSAgICA0LCAyNDgsIDE4OCwgMTEsIDQsIDI0OCwgMTg3LCAxMSwgNCwgMjQ4LCAxOTUsIDExLCA0LCAyNDgsIDE5NCwgMTEsIDQsIAotICAgIDI0OCwgMTk4LCAxMSwgNCwgMjQ4LCAxOTYsIDExLCA0LCAyNDgsIDE3NCwgMTEsIDQsIDI0OCwgMTc2LCAxMSwgNCwgMjQ4LCAKLSAgICAxNzUsIDExLCA0LCAyNDgsIDE3OSwgMTEsIDQsIDI0OCwgMTc4LCAxMSwgNCwgMjQ4LCAxODEsIDExLCA0LCAyNDgsIDE4MCwgCi0gICAgMTEsIDQsIDI0OCwgMTkwLCAxMSwgNCwgMjQ4LCAxOTMsIDExLCA0LCAyNDgsIDE5MSwgMTEsIDQsIDI0OCwgMTcwLCAxMSwgCi0gICAgNCwgMjQ4LCAxNjksIDExLCA0LCAyNDgsIDE3NywgMTEsIDQsIDI0OCwgMTczLCAxMSwgNCwgMjQ4LCAxNzEsIDExLCA0LCAKLSAgICAyNDgsIDE3MiwgMTEsIDQsIDI0OCwgMTY2LCAxMSwgNCwgMjQ4LCAxNjUsIDExLCA0LCAyNDgsIDE2OCwgMTEsIDQsIDI0OCwgCi0gICAgMTY3LCAxMSwgNCwgMjIzLCA0NywgMTEsIDQsIDIyMywgNDYsIDExLCA0LCAyMjMsIDUyLCAxMSwgNCwgMjIzLCA0OCwgMTEsIAotICAgIDQsIDIyMywgNDksIDExLCA0LCAyMjMsIDUxLCAxMSwgNCwgMjIzLCA1MCwgMTEsIDQsIDIyMywgNTUsIDExLCA0LCAyMjMsIAotICAgIDU0LCAxMSwgNCwgMjIzLCA1NywgMTEsIDQsIDIyMywgNTYsIDExLCA0LCAyMjMsIDQzLCAxMSwgNCwgMjIzLCA0MiwgMTEsIAotICAgIDQsIDIyMywgNDUsIDExLCA0LCAyMjMsIDQ0LCAxMSwgNCwgMjIzLCAzNiwgMTEsIDQsIDIyMywgMzUsIDExLCA0LCAyMjMsIAotICAgIDQwLCAxMSwgNCwgMjIzLCAzOSwgMTEsIDQsIDIyMywgMzcsIDExLCA0LCAyMjMsIDM4LCAxMSwgNCwgMjIzLCAzMCwgMTEsIAotICAgIDQsIDIyMywgMjksIDExLCA0LCAyMjMsIDM0LCAxMSwgNCwgMjIzLCAzMywgMTEsIDQsIDIyMywgMzEsIDExLCA0LCAyMjMsIAotICAgIDMyLCAxMSwgNCwgMjM2LCAxODAsIDExLCA0LCAyMzYsIDE3OSwgMTEsIDQsIDIzNiwgMTg1LCAxMSwgNCwgMjM2LCAxODEsIAotICAgIDExLCA0LCAyMzYsIDE4MiwgMTEsIDQsIDIzNiwgMTg0LCAxMSwgNCwgMjM2LCAxODMsIDExLCA0LCAyMzYsIDE4OCwgMTEsIAotICAgIDQsIDIzNiwgMTg3LCAxMSwgNCwgMjM2LCAxOTAsIDExLCA0LCAyMzYsIDE4OSwgMTEsIDQsIDIzNiwgMTcxLCAxMSwgNCwgCi0gICAgMjM2LCAxNzMsIDExLCA0LCAyMzYsIDE3MiwgMTEsIDQsIDIzNiwgMTc2LCAxMSwgNCwgMjM2LCAxNzUsIDExLCA0LCAyMzYsIAotICAgIDE3OCwgMTEsIDQsIDIzNiwgMTc3LCAxMSwgNCwgMjM2LCAxNjcsIDExLCA0LCAyMzYsIDE2NiwgMTEsIDQsIDIzNiwgMTc0LCAKLSAgICAxMSwgNCwgMjM2LCAxNzAsIDExLCA0LCAyMzYsIDE2OCwgMTEsIDQsIDIzNiwgMTY5LCAxMSwgNCwgMjM2LCAxNjEsIDExLCAKLSAgICA0LCAyMzYsIDE2NSwgMTEsIDQsIDIzNiwgMTY0LCAxMSwgNCwgMjM2LCAxNjIsIDExLCA0LCAyMzYsIDE2MywgMTEsIDQsIAotICAgIDIyNCwgOTMsIDExLCA0LCAyMjQsIDkyLCAxMSwgNCwgMjI0LCAxNTUsIDExLCA0LCAyMjQsIDk5LCAxMSwgNCwgMjI0LCAKLSAgICAxMjcsIDExLCA0LCAyMjQsIDE0NSwgMTEsIDQsIDIyNCwgMTQzLCAxMSwgNCwgMjI1LCA3MSwgMTEsIDQsIDIyNSwgNjYsIAotICAgIDExLCA0LCAxOTIsIDExLCA0LCAyMjUsIDEwNiwgMTEsIDQsIDIyMywgMjEzLCAxMSwgNCwgMjIzLCAyMTIsIDExLCA0LCAKLSAgICAyMjMsIDIxNiwgMTEsIDQsIDIyMywgMjE0LCAxMSwgNCwgMjI0LCAyMSwgMTEsIDQsIDIyMywgMjUyLCAxMSwgNCwgMjI0LCAKLSAgICA4MiwgMTEsIDQsIDIyNCwgMjcsIDExLCA0LCAyMjQsIDIwNywgMTEsIDQsIDIyNSwgMjAsIDExLCA0LCAyMjMsIDE5MywgMTEsIAotICAgIDQsIDIyMywgMTg5LCAxMSwgNCwgMjIzLCAyNDYsIDExLCA0LCAyMjMsIDIwOSwgMTEsIDQsIDIyMywgMjAyLCAxMSwgNCwgCi0gICAgMjIzLCAyMDcsIDExLCA0LCAyMjMsIDE2NiwgMTEsIDQsIDIyMywgMTY1LCAxMSwgNCwgMjIzLCAxNzEsIDExLCA0LCAyMjMsIAotICAgIDE2OCwgMTEsIDQsIDIzOSwgMjM2LCAxMSwgNCwgMjM5LCAyMzAsIDExLCA0LCAyNDAsIDI2LCAxMSwgNCwgMjM5LCAyNTEsIAotICAgIDExLCA0LCAyNDAsIDczLCAxMSwgNCwgMjQwLCA2NCwgMTEsIDQsIDI0MCwgMTA4LCAxMSwgNCwgMjQwLCA3OCwgMTEsIDQsIAotICAgIDIzOSwgMTM5LCAxMSwgNCwgMjM5LCAxODYsIDExLCA0LCAyMzksIDE2NywgMTEsIDQsIDIzOSwgOTEsIDExLCA0LCAyMzksIAotICAgIDkwLCAxMSwgNCwgMjM5LCAxMDgsIDExLCA0LCAyMzksIDk2LCAxMSwgNCwgMjM5LCA5NCwgMTEsIDQsIDIzOSwgOTUsIDExLCAKLSAgICA0LCAyMzksIDc4LCAxMSwgNCwgMjM5LCA3NywgMTEsIDQsIDIzOSwgODEsIDExLCA0LCAyMzksIDc5LCAxMSwgNCwgMjA1LCAKLSAgICAxOTYsIDExLCA0LCAyMDUsIDE5MSwgMTEsIDQsIDIwNSwgMjMwLCAxMSwgNCwgMjA1LCAyMDUsIDExLCA0LCAyMDUsIDIxOSwgCi0gICAgMTEsIDQsIDIwNSwgMjE2LCAxMSwgNCwgMjA1LCAyMjIsIDExLCA0LCAyMDUsIDIyMSwgMTEsIDQsIDIwNiwgNjMsIDExLCA0LCAKLSAgICAyMDYsIDU4LCAxMSwgNCwgMjA2LCA4NiwgMTEsIDQsIDIwNiwgNzUsIDExLCA0LCAyMDUsIDE3MiwgMTEsIDQsIDIwNSwgCi0gICAgMTY4LCAxMSwgNCwgMjA1LCAxODksIDExLCA0LCAyMDUsIDE3NCwgMTEsIDQsIDIwNSwgMjMzLCAxMSwgNCwgMjA2LCA0NCwgCi0gICAgMTEsIDQsIDIwNCwgMTU3LCAxMSwgNCwgMjA0LCAxNTUsIDExLCA0LCAyMDQsIDE2MywgMTEsIDQsIDIwNCwgMTYwLCAxMSwgCi0gICAgNCwgMjA0LCAxNTgsIDExLCA0LCAyMDQsIDE1OSwgMTEsIDQsIDIwNCwgMTQ4LCAxMSwgNCwgMjA0LCAxNDcsIDExLCA0LCAKLSAgICAyMDQsIDE1MiwgMTEsIDQsIDIwNCwgMTUxLCAxMSwgNCwgMjA0LCAxNDksIDExLCA0LCAyMDQsIDE1MCwgMTEsIDQsIDI0MywgCi0gICAgMTQ3LCAxMSwgNCwgMjQzLCAxMzQsIDExLCA0LCAyNDMsIDIzMywgMTEsIDQsIDI0MywgMTczLCAxMSwgNCwgMjQzLCAyMDgsIAotICAgIDExLCA0LCAyNDMsIDIxMywgMTEsIDQsIDI0MywgMjEyLCAxMSwgNCwgMjQ0LCAxNDAsIDExLCA0LCAyNDQsIDEzNCwgMTEsIAotICAgIDQsIDI0NCwgMjEyLCAxMSwgNCwgMjQ0LCAxNjAsIDExLCA0LCAyNDIsIDI1LCAxMSwgNCwgMjQyLCAyNiwgMTEsIDQsIDI0MywgCi0gICAgODUsIDExLCA0LCAyNDIsIDY3LCAxMSwgNCwgMjQzLCAxMTMsIDExLCA0LCAyNDMsIDg3LCAxMSwgNCwgMjQ0LCA3LCAxMSwgCi0gICAgNCwgMjQ0LCA3NSwgMTEsIDQsIDI0NCwgMjgsIDExLCA0LCAyNDIsIDE2LCAxMSwgNCwgMjQyLCAxNCwgMTEsIDQsIDI0MiwgCi0gICAgNDIsIDExLCA0LCAyNDIsIDI0LCAxMSwgNCwgMjQyLCAxOSwgMTEsIDQsIDI0MiwgMjIsIDExLCA0LCAyMDgsIDIwMCwgMTEsIAotICAgIDQsIDIwOCwgMTkyLCAxMSwgNCwgMjA5LCAyLCAxMSwgNCwgMjA4LCAyMTAsIDExLCA0LCAyMDgsIDI0OCwgMTEsIDQsIDIwOCwgCi0gICAgMjUwLCAxMSwgNCwgMjA4LCAyNDksIDExLCA0LCAyMDksIDIxMiwgMTEsIDQsIDIwOSwgMTk4LCAxMSwgNCwgMjEwLCAyMiwgCi0gICAgMTEsIDQsIDIwOSwgMjIyLCAxMSwgNCwgMjA3LCAxODUsIDExLCA0LCAyMDcsIDE4NCwgMTEsIDQsIDIwNywgMTg3LCAxMSwgCi0gICAgNCwgMjA3LCAxODYsIDExLCA0LCAyMDgsIDEzMSwgMTEsIDQsIDIwOCwgMTIxLCAxMSwgNCwgMTM1LCAxMSwgNCwgMjA4LCAKLSAgICAxNDQsIDExLCA0LCAyMDksIDExNCwgMTEsIDQsIDIwOSwgMTg3LCAxMSwgNCwgMjA5LCAxMzksIDExLCA0LCAyMDcsIDE2OCwgCi0gICAgMTEsIDQsIDIwNywgMTYzLCAxMSwgNCwgMjA3LCAyMDMsIDExLCA0LCAyMDcsIDE4MywgMTEsIDQsIDIwNywgMTY5LCAxMSwgCi0gICAgNCwgMjA3LCAxODEsIDExLCA0LCAyNDQsIDkyLCAxMSwgNCwgMjQ0LCA5MSwgMTEsIDQsIDI0NCwgOTcsIDExLCA0LCAyNDQsIAotICAgIDkzLCAxMSwgNCwgMjQ0LCA5NCwgMTEsIDQsIDI0NCwgOTYsIDExLCA0LCAyNDQsIDk1LCAxMSwgNCwgMjQ0LCAxMTMsIDExLCAKLSAgICA0LCAyNDQsIDExMiwgMTEsIDQsIDI0NCwgMTIwLCAxMSwgNCwgMjQ0LCAxMTQsIDExLCA0LCAyNDQsIDgyLCAxMSwgNCwgCi0gICAgMjQ0LCA4NCwgMTEsIDQsIDI0NCwgODMsIDExLCA0LCAyNDQsIDg3LCAxMSwgNCwgMjQ0LCA4NiwgMTEsIDQsIDI0NCwgOTAsIAotICAgIDExLCA0LCAyNDQsIDg4LCAxMSwgNCwgMjQ0LCAxMDUsIDExLCA0LCAyNDQsIDEwOCwgMTEsIDQsIDI0NCwgMTA2LCAxMSwgNCwgCi0gICAgMjQ0LCA3OCwgMTEsIDQsIDI0NCwgNzcsIDExLCA0LCAyNDQsIDg1LCAxMSwgNCwgMjQ0LCA4MSwgMTEsIDQsIDI0NCwgNzksIAotICAgIDExLCA0LCAyNDQsIDgwLCAxMSwgNCwgMjIzLCAzLCAxMSwgNCwgMjIzLCAyLCAxMSwgNCwgMjIzLCAxMCwgMTEsIDQsIDIyMywgCi0gICAgNSwgMTEsIDQsIDIyMywgNiwgMTEsIDQsIDIyMywgNywgMTEsIDQsIDIyMywgMTksIDExLCA0LCAyMjMsIDE4LCAxMSwgNCwgCi0gICAgMjIzLCAyNSwgMTEsIDQsIDIyMywgMjAsIDExLCA0LCAyMjIsIDI1MSwgMTEsIDQsIDIyMiwgMjUwLCAxMSwgNCwgMjIzLCAxLCAKLSAgICAxMSwgNCwgMjIyLCAyNTIsIDExLCA0LCAyMjMsIDExLCAxMSwgNCwgMjIzLCAxNywgMTEsIDQsIDIyMywgMTUsIDExLCA0LCAKLSAgICAyMjIsIDI0MywgMTEsIDQsIDIyMiwgMjQyLCAxMSwgNCwgMjIyLCAyNDgsIDExLCA0LCAyMjIsIDI0NiwgMTEsIDQsIDIyMiwgCi0gICAgMjQ0LCAxMSwgNCwgMjIyLCAyNDUsIDExLCA0LCAyMzYsIDE0NiwgMTEsIDQsIDIzNiwgMTQ1LCAxMSwgNCwgMjM2LCAxNTIsIAotICAgIDExLCA0LCAyMzYsIDE0NywgMTEsIDQsIDIzNiwgMTQ5LCAxMSwgNCwgMjM2LCAxNDgsIDExLCA0LCAyMzYsIDE1MSwgMTEsIAotICAgIDQsIDIzNiwgMTUwLCAxMSwgNCwgMjM2LCAxNTgsIDExLCA0LCAyMzYsIDE1NiwgMTEsIDQsIDIzNiwgMTYwLCAxMSwgNCwgCi0gICAgMjM2LCAxNTksIDExLCA0LCAyMzYsIDEzOSwgMTEsIDQsIDIzNiwgMTQwLCAxMSwgNCwgMjM2LCAxNDMsIDExLCA0LCAyMzYsIAotICAgIDE0MiwgMTEsIDQsIDIzNiwgMTQ0LCAxMSwgNCwgMjM2LCAxNTMsIDExLCA0LCAyMzYsIDE1NSwgMTEsIDQsIDIzNiwgMTU0LCAKLSAgICAxMSwgNCwgMjM2LCAxMzgsIDExLCA0LCAyMjIsIDUyLCAxMSwgNCwgMjIyLCA1MCwgMTEsIDQsIDIyMiwgMTAwLCAxMSwgNCwgCi0gICAgMjIyLCA1NSwgMTEsIDQsIDIyMiwgODIsIDExLCA0LCAyMjIsIDk2LCAxMSwgNCwgMjIyLCA5NSwgMTEsIDQsIDIyMywgNjEsIAotICAgIDExLCA0LCAyMDEsIDIwMSwgMTEsIDQsIDIyMywgNzYsIDExLCA0LCAyMjEsIDMyLCAxMSwgNCwgMjIxLCAzNCwgMTEsIDQsIAotICAgIDIyMSwgMzMsIDExLCA0LCAyMjEsIDE2NSwgMTEsIDQsIDIyMSwgMTUwLCAxMSwgNCwgMjIxLCAxOTEsIDExLCA0LCAyMjEsIAotICAgIDE3NiwgMTEsIDQsIDIyMiwgMjA5LCAxMSwgNCwgMjIyLCAyNDAsIDExLCA0LCAyMjIsIDIyNSwgMTEsIDQsIDIyMSwgMjcsIAotICAgIDExLCA0LCAyMjEsIDIzLCAxMSwgNCwgMjIxLCA4NCwgMTEsIDQsIDIyMSwgMzEsIDExLCA0LCAyMjEsIDI5LCAxMSwgNCwgCi0gICAgMjIxLCAzMCwgMTEsIDQsIDIzNiwgMjExLCAxMSwgNCwgMjM2LCAyMTAsIDExLCA0LCAyMzYsIDIxNiwgMTEsIDQsIDIzNiwgCi0gICAgMjEyLCAxMSwgNCwgMjM2LCAyMTMsIDExLCA0LCAyMzYsIDIxNSwgMTEsIDQsIDIzNiwgMjE0LCAxMSwgNCwgMjM2LCAyMjIsIAotICAgIDExLCA0LCAyMzYsIDIyMCwgMTEsIDQsIDIzNiwgMjI0LCAxMSwgNCwgMjM2LCAyMjMsIDExLCA0LCAyMzYsIDIwMywgMTEsIAotICAgIDQsIDIzNiwgMjA1LCAxMSwgNCwgMjM2LCAyMDQsIDExLCA0LCAyMzYsIDIwNywgMTEsIDQsIDIzNiwgMjA5LCAxMSwgNCwgCi0gICAgMjM2LCAyMDgsIDExLCA0LCAyMzYsIDIxNywgMTEsIDQsIDIzNiwgMjE5LCAxMSwgNCwgMjM2LCAyMTgsIDExLCA0LCAyMzYsIAotICAgIDE5OSwgMTEsIDQsIDIzNiwgMTk4LCAxMSwgNCwgMjM2LCAyMDYsIDExLCA0LCAyMzYsIDIwMiwgMTEsIDQsIDIzNiwgMjAwLCAKLSAgICAxMSwgNCwgMjM2LCAyMDEsIDExLCA0LCAyMzYsIDE5MywgMTEsIDQsIDIzNiwgMTkyLCAxMSwgNCwgMjM2LCAxOTcsIDExLCAKLSAgICA0LCAyMzYsIDE5NiwgMTEsIDQsIDIzNiwgMTk0LCAxMSwgNCwgMjM2LCAxOTUsIDExLCA0LCAyMjcsIDkwLCAxMSwgNCwgCi0gICAgMjI3LCA4MiwgMTEsIDQsIDIyNywgMTQ4LCAxMSwgNCwgMjI3LCAxMDAsIDExLCA0LCAyMjcsIDEzOSwgMTEsIDQsIDIyNywgCi0gICAgMTM4LCAxMSwgNCwgMjI3LCAxNDIsIDExLCA0LCAyMjcsIDE0MCwgMTEsIDQsIDIyOCwgMCwgMTEsIDQsIDIyNywgMjQ1LCAKLSAgICAxMSwgNCwgMjI4LCAxMTMsIDExLCA0LCAyMjgsIDExLCAxMSwgNCwgMjI2LCAyMTcsIDExLCA0LCAyMjYsIDIxNiwgMTEsIDQsIAotICAgIDIyNiwgMjE5LCAxMSwgNCwgMjI2LCAyMTgsIDExLCA0LCAyMjcsIDYsIDExLCA0LCAyMjYsIDI0OCwgMTEsIDQsIDIyNywgCi0gICAgNDksIDExLCA0LCAyMjcsIDExLCAxMSwgNCwgMjI3LCAxNjUsIDExLCA0LCAyMjcsIDIzNCwgMTEsIDQsIDIyNywgMTgyLCAKLSAgICAxMSwgNCwgMjI2LCAyMTEsIDExLCA0LCAyMjYsIDIwOSwgMTEsIDQsIDIyNiwgMjM5LCAxMSwgNCwgMjI2LCAyMTUsIDExLCAKLSAgICA0LCAyMjYsIDIxMywgMTEsIDQsIDIyNiwgMjE0LCAxMSwgNCwgMjI2LCAxOTAsIDExLCA0LCAyMjYsIDE4OSwgMTEsIDQsIAotICAgIDIyNiwgMTk5LCAxMSwgNCwgMjI2LCAxOTMsIDExLCA0LCAyMjYsIDE5MSwgMTEsIDQsIDIyNiwgMTkyLCAxMSwgNCwgMjM4LCAKLSAgICA1NCwgMTEsIDQsIDIzOCwgNTMsIDExLCA0LCAyMzgsIDgxLCAxMSwgNCwgMjM4LCA2NSwgMTEsIDQsIDIzOCwgNzMsIDExLCAKLSAgICA0LCAyMzgsIDcyLCAxMSwgNCwgMjM4LCA3NSwgMTEsIDQsIDIzOCwgNzQsIDExLCA0LCAyMzgsIDIxNywgMTEsIDQsIDIzOCwgCi0gICAgMjEyLCAxMSwgNCwgMjM5LCA4LCAxMSwgNCwgMjM4LCAyMjcsIDExLCA0LCAyMzcsIDIwNSwgMTEsIDQsIDIzNywgMjA0LCAKLSAgICAxMSwgNCwgMjM3LCAyMDcsIDExLCA0LCAyMzcsIDIwNiwgMTEsIDQsIDIzOCwgMTgsIDExLCA0LCAyMzgsIDE2LCAxMSwgNCwgCi0gICAgMjM4LCAzOSwgMTEsIDQsIDIzOCwgMjYsIDExLCA0LCAyMzgsIDE1OSwgMTEsIDQsIDIzOCwgMTU3LCAxMSwgNCwgMjM4LCAKLSAgICAxOTAsIDExLCA0LCAyMzgsIDE3MCwgMTEsIDQsIDIzNywgMTk0LCAxMSwgNCwgMjM3LCAxOTMsIDExLCA0LCAyMzcsIDIzMCwgCi0gICAgMTEsIDQsIDIzNywgMjAzLCAxMSwgNCwgMjM3LCAxOTUsIDExLCA0LCAyMzcsIDIwMiwgMTEsIDQsIDIyOSwgNjQsIDExLCA0LCAKLSAgICAyMjksIDYxLCAxMSwgNCwgMjI5LCAxMDAsIDExLCA0LCAyMjksIDc4LCAxMSwgNCwgMjI5LCA4OSwgMTEsIDQsIDIyOSwgOTMsIAotICAgIDExLCA0LCAyMjksIDkxLCAxMSwgNCwgMjI5LCAyMjYsIDExLCA0LCAyMjksIDIwOSwgMTEsIDQsIDE3MywgMTEsIDQsIDIyOSwgCi0gICAgMjUzLCAxMSwgNCwgMjI4LCAxODcsIDExLCA0LCAyMjgsIDE5MiwgMTEsIDQsIDIyOCwgMTg5LCAxMSwgNCwgMjI4LCAyNTAsIAotICAgIDExLCA0LCAyMjgsIDI0NSwgMTEsIDQsIDIyOSwgMjYsIDExLCA0LCAyMjksIDEsIDExLCA0LCAyMjksIDE3MCwgMTEsIDQsIAotICAgIDIyOSwgMTUzLCAxMSwgNCwgMjI5LCAyMDEsIDExLCA0LCAyMjksIDE3NCwgMTEsIDQsIDIyOCwgMTc1LCAxMSwgNCwgMjI4LCAKLSAgICAxNzEsIDExLCA0LCAyMjgsIDIwOSwgMTEsIDQsIDIyOCwgMTg2LCAxMSwgNCwgMjI4LCAxNzksIDExLCA0LCAyMjgsIDE4MywgCi0gICAgMTEsIDQsIDIzOCwgMTQxLCAxMSwgNCwgMjM4LCAxNDAsIDExLCA0LCAyMzgsIDE0NSwgMTEsIDQsIDIzOCwgMTQyLCAxMSwgCi0gICAgNCwgMjM4LCAxNDQsIDExLCA0LCAyMzgsIDE0MywgMTEsIDQsIDIzOCwgMTUyLCAxMSwgNCwgMjM4LCAxNTEsIDExLCA0LCAKLSAgICAyMzgsIDE1NSwgMTEsIDQsIDIzOCwgMTUzLCAxMSwgNCwgMjM4LCAxMzIsIDExLCA0LCAyMzgsIDEzMSwgMTEsIDQsIDIzOCwgCi0gICAgMTM0LCAxMSwgNCwgMjM4LCAxMzMsIDExLCA0LCAyMzgsIDEzNywgMTEsIDQsIDIzOCwgMTM2LCAxMSwgNCwgMjM4LCAxMzksIAotICAgIDExLCA0LCAyMzgsIDEzOCwgMTEsIDQsIDIzOCwgMTQ3LCAxMSwgNCwgMjM4LCAxNDYsIDExLCA0LCAyMzgsIDE1MCwgMTEsIAotICAgIDQsIDIzOCwgMTQ4LCAxMSwgNCwgMjM4LCAxMjcsIDExLCA0LCAyMzgsIDEyNiwgMTEsIDQsIDIzOCwgMTM1LCAxMSwgNCwgCi0gICAgMjM4LCAxMzAsIDExLCA0LCAyMzgsIDEyOCwgMTEsIDQsIDIzOCwgMTI5LCAxMSwgNCwgMjI0LCAxNzQsIDExLCA0LCAyMjQsIAotICAgIDE3NSwgMTEsIDQsIDIyNCwgMTkzLCAxMSwgNCwgMjI0LCAxOTIsIDExLCA0LCAyMjQsIDE5NSwgMTEsIDQsIDIyNCwgMTk0LCAKLSAgICAxMSwgNCwgMjI0LCAxNjUsIDExLCA0LCAyMjQsIDE2NywgMTEsIDQsIDIyNCwgMTY2LCAxMSwgNCwgMjI0LCAxNzAsIDExLCAKLSAgICA0LCAyMjQsIDE2OSwgMTEsIDQsIDIyNCwgMTcyLCAxMSwgNCwgMjI0LCAxNzEsIDExLCA0LCAyMjQsIDE3NiwgMTEsIDQsIAotICAgIDIyNCwgMTc4LCAxMSwgNCwgMjI0LCAxNzcsIDExLCA0LCAyMjQsIDE2MSwgMTEsIDQsIDIyNCwgMTYwLCAxMSwgNCwgMjI0LCAKLSAgICAxNjgsIDExLCA0LCAyMjQsIDE2NCwgMTEsIDQsIDIyNCwgMTYyLCAxMSwgNCwgMjI0LCAxNjMsIDExLCA0LCAyMzUsIDIzMywgCi0gICAgMTEsIDQsIDIzNSwgMjMyLCAxMSwgNCwgMjM1LCAyMzksIDExLCA0LCAyMzUsIDIzNCwgMTEsIDQsIDIzNSwgMjM2LCAxMSwgCi0gICAgNCwgMjM1LCAyMzUsIDExLCA0LCAyMzUsIDIzOCwgMTEsIDQsIDIzNSwgMjM3LCAxMSwgNCwgMjM1LCAyNDQsIDExLCA0LCAKLSAgICAyMzUsIDI0MywgMTEsIDQsIDIzNSwgMjQ2LCAxMSwgNCwgMjM1LCAyNDUsIDExLCA0LCAyMzUsIDIyNSwgMTEsIDQsIDIzNSwgCi0gICAgMjI0LCAxMSwgNCwgMjM1LCAyMjcsIDExLCA0LCAyMzUsIDIyNiwgMTEsIDQsIDIzNSwgMjI5LCAxMSwgNCwgMjM1LCAyMjgsIAotICAgIDExLCA0LCAyMzUsIDIzMSwgMTEsIDQsIDIzNSwgMjMwLCAxMSwgNCwgMjM1LCAyNDAsIDExLCA0LCAyMzUsIDI0MiwgMTEsIAotICAgIDQsIDIzNSwgMjQxLCAxMSwgNCwgMjIyLCAxNDgsIDExLCA0LCAyMjIsIDE1MCwgMTEsIDQsIDIyMiwgMTQ5LCAxMSwgNCwgCi0gICAgMjIyLCAxOTMsIDExLCA0LCAyMjIsIDE5MSwgMTEsIDQsIDIyMiwgMjAzLCAxMSwgNCwgMjIyLCAxOTYsIDExLCA0LCAyMjIsIAotICAgIDExMCwgMTEsIDQsIDIyMiwgMTA5LCAxMSwgNCwgMjIyLCAxMTEsIDExLCA0LCAyMjIsIDEyMCwgMTEsIDQsIDIyMiwgMTE3LCAKLSAgICAxMSwgNCwgMjIyLCAxMjgsIDExLCA0LCAyMjIsIDEyMiwgMTEsIDQsIDIyMiwgMTg0LCAxMSwgNCwgMjIyLCAxOTAsIDExLCAKLSAgICA0LCAyMjIsIDE4NiwgMTEsIDQsIDIzNiwgMjMwLCAxMSwgNCwgMjM2LCAyNDUsIDExLCA0LCAyMzYsIDI1NCwgMTEsIDQsIAotICAgIDIzNywgODMsIDExLCA0LCAyMzcsIDcyLCAxMSwgNCwgMTUyLCAxMSwgNCwgMjM3LCA5NCwgMTEsIDQsIDIzNiwgNiwgMTEsIAotICAgIDQsIDIzNiwgNSwgMTEsIDQsIDIzNiwgOCwgMTEsIDQsIDIzNiwgNywgMTEsIDQsIDIzNiwgNDYsIDExLCA0LCAyMzYsIDM3LCAKLSAgICAxMSwgNCwgMjM2LCAxMzYsIDExLCA0LCAyMzYsIDEwOSwgMTEsIDQsIDIzNywgMTgsIDExLCA0LCAyMzcsIDY3LCAxMSwgNCwgCi0gICAgMjM3LCAzMCwgMTEsIDQsIDIwNCwgODMsIDExLCA0LCAyMDQsIDY4LCAxMSwgNCwgMjA0LCAxMTEsIDExLCA0LCAyMDQsIDkzLCAKLSAgICAxMSwgNCwgMjAzLCAyMDYsIDExLCA0LCAyMDMsIDIwOCwgMTEsIDQsIDIwMywgMjA3LCAxMSwgNCwgMjAzLCAyMjksIDExLCAKLSAgICA0LCAyMDQsIDAsIDExLCA0LCAyMDMsIDIzOSwgMTEsIDQsIDIwNCwgNDIsIDExLCA0LCAyMDQsIDYyLCAxMSwgNCwgMjA0LCAKLSAgICA0NywgMTEsIDQsIDIwMiwgMjQsIDExLCA0LCAyMDIsIDIzLCAxMSwgNCwgMjAyLCAzOSwgMTEsIDQsIDIwMiwgMjcsIDExLCAKLSAgICA0LCAyMDIsIDMyLCAxMSwgNCwgMjAyLCAzNCwgMTEsIDQsIDIwMiwgMzMsIDExLCA0LCAyMDIsIDEwMCwgMTEsIDQsIDIwMiwgCi0gICAgOTcsIDExLCA0LCAyMDIsIDExNiwgMTEsIDQsIDIwMiwgMTA0LCAxMSwgNCwgMjAxLCAyNTUsIDExLCA0LCAyMDIsIDEsIDExLCAKLSAgICA0LCAyMDIsIDAsIDExLCA0LCAyMDIsIDEzLCAxMSwgNCwgMjAyLCAxMiwgMTEsIDQsIDIwMiwgMTcsIDExLCA0LCAyMDIsIAotICAgIDE0LCAxMSwgNCwgMjAyLCA4MiwgMTEsIDQsIDIwMiwgOTIsIDExLCA0LCAyMDIsIDg2LCAxMSwgNCwgMjAxLCAyNTEsIDExLCAKLSAgICA0LCAyMDEsIDI1MCwgMTEsIDQsIDIwMiwgNiwgMTEsIDQsIDIwMSwgMjU0LCAxMSwgNCwgMjAxLCAyNTIsIDExLCA0LCAyMDEsIAotICAgIDI1MywgMTEsIDQsIDIwMSwgMjM3LCAxMSwgNCwgMjAxLCAyMzYsIDExLCA0LCAyMDEsIDI0MiwgMTEsIDQsIDIwMSwgMjQwLCAKLSAgICAxMSwgNCwgMjAxLCAyMzgsIDExLCA0LCAyMDEsIDIzOSwgMTEsIDQsIDI0NiwgNTAsIDExLCA0LCAyNDYsIDQzLCAxMSwgNCwgCi0gICAgMjQ2LCA3OSwgMTEsIDQsIDI0NiwgNjMsIDExLCA0LCAyNDYsIDc2LCAxMSwgNCwgMjQ2LCA3MCwgMTEsIDQsIDI0NiwgNzgsIAotICAgIDExLCA0LCAyNDYsIDc3LCAxMSwgNCwgMjQ3LCAxNywgMTEsIDQsIDI0NywgOSwgMTEsIDQsIDI0NywgOTIsIDExLCA0LCAKLSAgICAyNDcsIDQ4LCAxMSwgNCwgMjQ1LCAxMDEsIDExLCA0LCAyNDUsIDEwMywgMTEsIDQsIDI0NSwgMTAyLCAxMSwgNCwgMjQ1LCAKLSAgICAxNTgsIDExLCA0LCAyNDUsIDE0OCwgMTEsIDQsIDI0NSwgMjU0LCAxMSwgNCwgMjQ1LCAxNzUsIDExLCA0LCAyNDYsIDIwMiwgCi0gICAgMTEsIDQsIDI0NiwgMjM4LCAxMSwgNCwgMjQ2LCAyMDcsIDExLCA0LCAyNDUsIDc3LCAxMSwgNCwgMjQ1LCA3NSwgMTEsIDQsIAotICAgIDI0NSwgMTEwLCAxMSwgNCwgMjQ1LCA5OSwgMTEsIDQsIDI0NSwgODMsIDExLCA0LCAyNDUsIDk2LCAxMSwgNCwgMjQ1LCA1NCwgCi0gICAgMTEsIDQsIDI0NSwgNTMsIDExLCA0LCAyNDUsIDY2LCAxMSwgNCwgMjQ1LCA2MCwgMTEsIDQsIDI0NSwgNTUsIDExLCA0LCAKLSAgICAyNDUsIDU3LCAxMSwgNCwgMjAxLCAyMjAsIDExLCA0LCAyMDEsIDIxOSwgMTEsIDQsIDIwMSwgMjI2LCAxMSwgNCwgMjAxLCAKLSAgICAyMjEsIDExLCA0LCAyMDEsIDIyMywgMTEsIDQsIDIwMSwgMjIyLCAxMSwgNCwgMjAxLCAyMjUsIDExLCA0LCAyMDEsIDIyNCwgCi0gICAgMTEsIDQsIDIwMSwgMjMyLCAxMSwgNCwgMjAxLCAyMzEsIDExLCA0LCAyMDEsIDIzNSwgMTEsIDQsIDIwMSwgMjMzLCAxMSwgCi0gICAgNCwgMjAxLCAyMTYsIDExLCA0LCAyMDEsIDIxOCwgMTEsIDQsIDIwMSwgMjE3LCAxMSwgNCwgMjAxLCAyMjcsIDExLCA0LCAKLSAgICAyMDEsIDIzMCwgMTEsIDQsIDIwMSwgMjI4LCAxMSwgNCwgMjAxLCAyMDksIDExLCA0LCAyMDEsIDIxMywgMTEsIDQsIDIwMSwgCi0gICAgMjEyLCAxMSwgNCwgMjAxLCAyMTAsIDExLCA0LCAyMDEsIDIxMSwgMTEsIDQsIDIwMSwgMjAzLCAxMSwgNCwgMjAxLCAyMDIsIAotICAgIDExLCA0LCAyMDEsIDIwOCwgMTEsIDQsIDIwMSwgMjA2LCAxMSwgNCwgMjAxLCAyMDQsIDExLCA0LCAyMDEsIDIwNSwgMTEsIAotICAgIDQsIDIyMCwgMjAxLCAxMSwgNCwgMjIwLCAyMDAsIDExLCA0LCAyMjAsIDIwNiwgMTEsIDQsIDIyMCwgMjAyLCAxMSwgNCwgCi0gICAgMjIwLCAyMDMsIDExLCA0LCAyMjAsIDIwNSwgMTEsIDQsIDIyMCwgMjA0LCAxMSwgNCwgMjIwLCAyMTEsIDExLCA0LCAyMjAsIAotICAgIDIxMCwgMTEsIDQsIDIyMCwgMjE0LCAxMSwgNCwgMjIwLCAyMTMsIDExLCA0LCAyMjAsIDE5NCwgMTEsIDQsIDIyMCwgMTk1LCAKLSAgICAxMSwgNCwgMjIwLCAxOTgsIDExLCA0LCAyMjAsIDE5OSwgMTEsIDQsIDIyMCwgMjA3LCAxMSwgNCwgMjIwLCAyMDksIDExLCAKLSAgICA0LCAyMjAsIDE4OSwgMTEsIDQsIDIyMCwgMTk3LCAxMSwgNCwgMjIwLCAxOTMsIDExLCA0LCAyMjAsIDE5MCwgMTEsIDQsIAotICAgIDIyMCwgMTkxLCAxMSwgNCwgMjIwLCAxODQsIDExLCA0LCAyMjAsIDE4MywgMTEsIDQsIDIyMCwgMTg4LCAxMSwgNCwgMjIwLCAKLSAgICAxODcsIDExLCA0LCAyMjAsIDE4NSwgMTEsIDQsIDIyMCwgMTg2LCAxMSwgNCwgMjEyLCA5MCwgMTEsIDQsIDE5NSwgMTEsIDQsIAotICAgIDIxMiwgMTYyLCAxMSwgNCwgMjEyLCA5MywgMTEsIDQsIDIxMiwgMTUwLCAxMSwgNCwgMjEyLCAxNTMsIDExLCA0LCAyMTIsIAotICAgIDE1MSwgMTEsIDQsIDIxNCwgMjI1LCAxMSwgNCwgMjE0LCAyMTEsIDExLCA0LCAyMTUsIDM2LCAxMSwgNCwgMjE0LCAyMzMsIAotICAgIDExLCA0LCAyMTAsIDIwNCwgMTEsIDQsIDIxMCwgMjA2LCAxMSwgNCwgMjEwLCAyMDUsIDExLCA0LCAyMTEsIDI0NCwgMTEsIAotICAgIDQsIDIxMSwgMjMzLCAxMSwgNCwgMjEyLCAxMywgMTEsIDQsIDIxMSwgMjQ4LCAxMSwgNCwgMjEzLCAxMDMsIDExLCA0LCAKLSAgICAyMTQsIDE3NywgMTEsIDQsIDIxMywgMTMyLCAxMSwgNCwgMjEwLCAxODEsIDExLCA0LCAyMTAsIDE3OCwgMTEsIDQsIDIxMSwgCi0gICAgMTAsIDExLCA0LCAyMTAsIDIwMywgMTEsIDQsIDIxMCwgMTg1LCAxMSwgNCwgMjEwLCAxOTMsIDExLCA0LCAyMTAsIDgzLCAKLSAgICAxMSwgNCwgMjEwLCA4MiwgMTEsIDQsIDIxMCwgMTUxLCAxMSwgNCwgMjEwLCA5MSwgMTEsIDQsIDIxMCwgODUsIDExLCA0LCAKLSAgICAyMTAsIDkwLCAxMSwgNCwgMjExLCAxMjYsIDExLCA0LCAyMTEsIDEyNSwgMTEsIDQsIDIxMSwgMTMyLCAxMSwgNCwgMjExLCAKLSAgICAxMjcsIDExLCA0LCAyMTEsIDEyOSwgMTEsIDQsIDIxMSwgMTMxLCAxMSwgNCwgMjExLCAxMzAsIDExLCA0LCAyMTEsIDE0MSwgCi0gICAgMTEsIDQsIDIxMSwgMTM5LCAxMSwgNCwgMjExLCAxNjQsIDExLCA0LCAyMTEsIDE0MiwgMTEsIDQsIDIxMSwgMTIxLCAxMSwgCi0gICAgNCwgMjExLCAxMjAsIDExLCA0LCAyMTEsIDEyNCwgMTEsIDQsIDIxMSwgMTIyLCAxMSwgNCwgMjExLCAxMzUsIDExLCA0LCAKLSAgICAyMTEsIDEzOCwgMTEsIDQsIDIxMSwgMTM2LCAxMSwgNCwgMjExLCAxMTcsIDExLCA0LCAyMTEsIDExNSwgMTEsIDQsIDIxMSwgCi0gICAgMTE5LCAxMSwgNCwgMjExLCAxMTgsIDExLCA0LCAyMTEsIDExMCwgMTEsIDQsIDIxMSwgMTA5LCAxMSwgNCwgMjExLCAxMTQsIAotICAgIDExLCA0LCAyMTEsIDExMywgMTEsIDQsIDIxMSwgMTExLCAxMSwgNCwgMjExLCAxMTIsIDExLCA0LCAyMDIsIDc1LCAxMSwgNCwgCi0gICAgMjAyLCA3NCwgMTEsIDQsIDIwMiwgODAsIDExLCA0LCAyMDIsIDc3LCAxMSwgNCwgMjAyLCA1NCwgMTEsIDQsIDIwMiwgNTYsIAotICAgIDExLCA0LCAyMDIsIDU1LCAxMSwgNCwgMjAyLCA1OSwgMTEsIDQsIDIwMiwgNTgsIDExLCA0LCAyMDIsIDYzLCAxMSwgNCwgCi0gICAgMjAyLCA2MCwgMTEsIDQsIDIwMiwgNjgsIDExLCA0LCAyMDIsIDY3LCAxMSwgNCwgMjAyLCA3MSwgMTEsIDQsIDIwMiwgNjksIAotICAgIDExLCA0LCAyMDIsIDUwLCAxMSwgNCwgMjAyLCA0OSwgMTEsIDQsIDIwMiwgNTcsIDExLCA0LCAyMDIsIDUzLCAxMSwgNCwgCi0gICAgMjAyLCA1MSwgMTEsIDQsIDIwMiwgNTIsIDExLCA0LCAyMDIsIDQyLCAxMSwgNCwgMjAyLCA0MSwgMTEsIDQsIDIwMiwgNDYsIAotICAgIDExLCA0LCAyMDIsIDQ1LCAxMSwgNCwgMjAyLCA0MywgMTEsIDQsIDIwMiwgNDQsIDExLCA0LCAyNDYsIDE3NiwgMTEsIDQsIAotICAgIDI0NiwgMTcyLCAxMSwgNCwgMjQ2LCAxOTksIDExLCA0LCAyNDYsIDE4NSwgMTEsIDQsIDI0NiwgOTQsIDExLCA0LCAyNDYsIAotICAgIDkzLCAxMSwgNCwgMjQ2LCA5NiwgMTEsIDQsIDI0NiwgOTUsIDExLCA0LCAyNDYsIDEwOSwgMTEsIDQsIDI0NiwgMTA4LCAxMSwgCi0gICAgNCwgMjQ2LCAxMTYsIDExLCA0LCAyNDYsIDExMSwgMTEsIDQsIDI0NiwgMTQ3LCAxMSwgNCwgMjQ2LCAxNDUsIDExLCA0LCAKLSAgICAyNDYsIDE3MCwgMTEsIDQsIDI0NiwgMTU1LCAxMSwgNCwgMjQ2LCA4OCwgMTEsIDQsIDI0NiwgOTgsIDExLCA0LCAyNDYsIAotICAgIDkyLCAxMSwgNCwgMjQ2LCA4OSwgMTEsIDQsIDI0NiwgOTEsIDExLCA0LCAyNDYsIDgxLCAxMSwgNCwgMjQ2LCA4MCwgMTEsIAotICAgIDQsIDI0NiwgODUsIDExLCA0LCAyNDYsIDg0LCAxMSwgNCwgMjQ2LCA4MiwgMTEsIDQsIDI0NiwgODMsIDExLCA0LCAyMTUsIAotICAgIDE4MSwgMTEsIDQsIDIxNSwgMTg1LCAxMSwgNCwgMjE1LCAxNjMsIDExLCA0LCAyMTUsIDE2NCwgMTEsIDQsIDIxNSwgMTY4LCAKLSAgICAxMSwgNCwgMjE1LCAxNjcsIDExLCA0LCAyMTUsIDE3MSwgMTEsIDQsIDIxNSwgMTY5LCAxMSwgNCwgMjE1LCAxNzUsIDExLCAKLSAgICA0LCAyMTUsIDE3NCwgMTEsIDQsIDIxNSwgMTgwLCAxMSwgNCwgMjE1LCAxNzYsIDExLCA0LCAyMTUsIDE1OSwgMTEsIDQsIAotICAgIDIxNSwgMTU3LCAxMSwgNCwgMjE1LCAxNjUsIDExLCA0LCAyMTUsIDE2MiwgMTEsIDQsIDIxNSwgMTYwLCAxMSwgNCwgMjE1LCAKLSAgICAxNjEsIDExLCA0LCAyMTUsIDE1MiwgMTEsIDQsIDIxNSwgMTUxLCAxMSwgNCwgMjE1LCAxNTYsIDExLCA0LCAyMTUsIDE1NSwgCi0gICAgMTEsIDQsIDIxNSwgMTUzLCAxMSwgNCwgMjE1LCAxNTQsIDExLCA0LCAyMjEsIDE0NSwgMTEsIDQsIDIyMSwgMTQ0LCAxMSwgCi0gICAgNCwgMjIxLCAxNDcsIDExLCA0LCAyMjEsIDE0NiwgMTEsIDQsIDIyMSwgMTM2LCAxMSwgNCwgMjIxLCAxMzgsIDExLCA0LCAKLSAgICAyMjEsIDEzNywgMTEsIDQsIDIyMSwgMTQwLCAxMSwgNCwgMjIxLCAxMzksIDExLCA0LCAyMjEsIDE0MywgMTEsIDQsIDIyMSwgCi0gICAgMTQyLCAxMSwgNCwgMjIxLCAxMzAsIDExLCA0LCAyMjEsIDEyOSwgMTEsIDQsIDIyMSwgMTM1LCAxMSwgNCwgMjIxLCAxMzMsIAotICAgIDExLCA0LCAyMjEsIDEzMSwgMTEsIDQsIDIyMSwgMTMyLCAxMSwgNCwgMjIxLCAxMjQsIDExLCA0LCAyMjEsIDEyMywgMTEsIAotICAgIDQsIDIyMSwgMTI4LCAxMSwgNCwgMjIxLCAxMjcsIDExLCA0LCAyMjEsIDEyNSwgMTEsIDQsIDIyMSwgMTI2LCAxMSwgNCwgCi0gICAgMjEzLCA1MywgMTEsIDQsIDIxMywgNDgsIDExLCA0LCAyMTMsIDkwLCAxMSwgNCwgMjEzLCA2NCwgMTEsIDQsIDIxMiwgMTg4LCAKLSAgICAxMSwgNCwgMjEyLCAxOTAsIDExLCA0LCAyMTIsIDE4OSwgMTEsIDQsIDIxMiwgMjEyLCAxMSwgNCwgMjEyLCAyMDgsIDExLCAKLSAgICA0LCAyMTIsIDI0MiwgMTEsIDQsIDIxMiwgMjMyLCAxMSwgNCwgMjEzLCAyMSwgMTEsIDQsIDIxMywgMTQsIDExLCA0LCAyMTMsIAotICAgIDQzLCAxMSwgNCwgMjEzLCAzMCwgMTEsIDQsIDIxMiwgMTg0LCAxMSwgNCwgMjEyLCAxODEsIDExLCA0LCAyMTIsIDE5OSwgCi0gICAgMTEsIDQsIDIxMiwgMTg3LCAxMSwgNCwgMjEyLCAxODUsIDExLCA0LCAyMTIsIDE4NiwgMTEsIDQsIDIxMiwgMTY1LCAxMSwgCi0gICAgNCwgMjEyLCAxNjQsIDExLCA0LCAyMTIsIDE3MSwgMTEsIDQsIDIxMiwgMTY4LCAxMSwgNCwgMjEyLCAxNjYsIDExLCA0LCAKLSAgICAyMTIsIDE2NywgMTEsIDQsIDIxNiwgMTcyLCAxMSwgNCwgMjE2LCAxNjYsIDExLCA0LCAyMTYsIDIyMCwgMTEsIDQsIDIxNiwgCi0gICAgMTc4LCAxMSwgNCwgMjE1LCAxMjIsIDExLCA0LCAyMTUsIDEyNCwgMTEsIDQsIDIxNSwgMTIzLCAxMSwgNCwgMjE1LCAxOTksIAotICAgIDExLCA0LCAyMTUsIDE4NywgMTEsIDQsIDIxNSwgMjI3LCAxMSwgNCwgMjE1LCAyMDMsIDExLCA0LCAyMTYsIDY2LCAxMSwgNCwgCi0gICAgMjE2LCAxNTgsIDExLCA0LCAyMTYsIDEwNSwgMTEsIDQsIDIxNSwgMTE1LCAxMSwgNCwgMjE1LCAxMTIsIDExLCA0LCAyMTUsIAotICAgIDE0NSwgMTEsIDQsIDIxNSwgMTIxLCAxMSwgNCwgMjE1LCAxMTcsIDExLCA0LCAyMTUsIDExOCwgMTEsIDQsIDIxNSwgOTcsIAotICAgIDExLCA0LCAyMTUsIDk2LCAxMSwgNCwgMjE1LCAxMDIsIDExLCA0LCAyMTUsIDEwMCwgMTEsIDQsIDIxNSwgOTgsIDExLCA0LCAKLSAgICAyMTUsIDk5LCAxMSwgNCwgMjMwLCAxMzEsIDExLCA0LCAyMzAsIDEzMCwgMTEsIDQsIDIzMCwgMTQxLCAxMSwgNCwgMjMwLCAKLSAgICAxMzIsIDExLCA0LCAyMzAsIDEzNywgMTEsIDQsIDIzMCwgMTM2LCAxMSwgNCwgMjMwLCAxMzksIDExLCA0LCAyMzAsIDEzOCwgCi0gICAgMTEsIDQsIDIzMCwgNzIsIDExLCA0LCAyMzAsIDcxLCAxMSwgNCwgMjMwLCA3NCwgMTEsIDQsIDIzMCwgNzMsIDExLCA0LCAKLSAgICAyMzAsIDg4LCAxMSwgNCwgMjMwLCA4NiwgMTEsIDQsIDIzMCwgMTAxLCAxMSwgNCwgMjMwLCA5MCwgMTEsIDQsIDIzMCwgNjUsIAotICAgIDExLCA0LCAyMzAsIDYzLCAxMSwgNCwgMjMwLCA4MiwgMTEsIDQsIDIzMCwgNzAsIDExLCA0LCAyMzAsIDY3LCAxMSwgNCwgCi0gICAgMjMwLCA2OCwgMTEsIDQsIDIzMCwgNTcsIDExLCA0LCAyMzAsIDU2LCAxMSwgNCwgMjMwLCA2MSwgMTEsIDQsIDIzMCwgNjAsIAotICAgIDExLCA0LCAyMzAsIDU4LCAxMSwgNCwgMjMwLCA1OSwgMTEsIDQsIDIxNywgODEsIDExLCA0LCAyMTcsIDc5LCAxMSwgNCwgCi0gICAgMjE3LCA4OCwgMTEsIDQsIDIxNywgODIsIDExLCA0LCAyMTcsIDg1LCAxMSwgNCwgMjE3LCA4NCwgMTEsIDQsIDIxNywgODcsIAotICAgIDExLCA0LCAyMTcsIDg2LCAxMSwgNCwgMjE3LCAzMiwgMTEsIDQsIDIxNywgMjksIDExLCA0LCAyMTcsIDM0LCAxMSwgNCwgCi0gICAgMjE3LCAzMywgMTEsIDQsIDIxNywgNjgsIDExLCA0LCAyMTcsIDY3LCAxMSwgNCwgMjE3LCA3NywgMTEsIDQsIDIxNywgNzEsIAotICAgIDExLCA0LCAyMTcsIDI0LCAxMSwgNCwgMjE3LCAyMCwgMTEsIDQsIDIxNywgNjUsIDExLCA0LCAyMTcsIDI4LCAxMSwgNCwgCi0gICAgMjE3LCAyNiwgMTEsIDQsIDIxNywgMjcsIDExLCA0LCAyMTcsIDQsIDExLCA0LCAyMTcsIDIsIDExLCA0LCAyMTcsIDE0LCAKLSAgICAxMSwgNCwgMjE3LCA3LCAxMSwgNCwgMjE3LCA1LCAxMSwgNCwgMjE3LCA2LCAxMSwgNCwgMjMwLCAxMjAsIDExLCA0LCAyMzAsIAotICAgIDExOSwgMTEsIDQsIDIzMCwgMTI2LCAxMSwgNCwgMjMwLCAxMjEsIDExLCA0LCAyMzAsIDEyMywgMTEsIDQsIDIzMCwgMTIyLCAKLSAgICAxMSwgNCwgMjMwLCAxMjUsIDExLCA0LCAyMzAsIDEyNCwgMTEsIDQsIDIzMCwgMTExLCAxMSwgNCwgMjMwLCAxMTMsIDExLCAKLSAgICA0LCAyMzAsIDExMiwgMTEsIDQsIDIzMCwgMTE2LCAxMSwgNCwgMjMwLCAxMTUsIDExLCA0LCAyMzAsIDExOCwgMTEsIDQsIAotICAgIDIzMCwgMTE3LCAxMSwgNCwgMjMwLCAxMDcsIDExLCA0LCAyMzAsIDEwNiwgMTEsIDQsIDIzMCwgMTE0LCAxMSwgNCwgMjMwLCAKLSAgICAxMTAsIDExLCA0LCAyMzAsIDEwOCwgMTEsIDQsIDIzMCwgMTA5LCAxMSwgNCwgMjMwLCAxMDMsIDExLCA0LCAyMzAsIDEwMiwgCi0gICAgMTEsIDQsIDIzMCwgMTA1LCAxMSwgNCwgMjMwLCAxMDQsIDExLCA0LCAyMjIsIDI1LCAxMSwgNCwgMjIyLCAyNCwgMTEsIDQsIAotICAgIDIyMiwgMzIsIDExLCA0LCAyMjIsIDI2LCAxMSwgNCwgMjIyLCAyOCwgMTEsIDQsIDIyMiwgMjcsIDExLCA0LCAyMjIsIDMxLCAKLSAgICAxMSwgNCwgMjIyLCAyOSwgMTEsIDQsIDIyMiwgMTQsIDExLCA0LCAyMjIsIDE1LCAxMSwgNCwgMjIyLCAyMCwgMTEsIDQsIAotICAgIDIyMiwgMTksIDExLCA0LCAyMjIsIDIzLCAxMSwgNCwgMjIyLCAyMSwgMTEsIDQsIDIyMiwgOSwgMTEsIDQsIDIyMiwgMTgsIAotICAgIDExLCA0LCAyMjIsIDEzLCAxMSwgNCwgMjIyLCAxMCwgMTEsIDQsIDIyMiwgMTEsIDExLCA0LCAyMjIsIDQsIDExLCA0LCAKLSAgICAyMjIsIDMsIDExLCA0LCAyMjIsIDgsIDExLCA0LCAyMjIsIDcsIDExLCA0LCAyMjIsIDUsIDExLCA0LCAyMjIsIDYsIDExLCAKLSAgICA0LCAyMjAsIDIzNiwgMTEsIDQsIDIyMCwgMjM1LCAxMSwgNCwgMjIwLCAyNDgsIDExLCA0LCAyMjAsIDI0MCwgMTEsIDQsIAotICAgIDIyMCwgMjQ1LCAxMSwgNCwgMjIwLCAyNDQsIDExLCA0LCAyMjAsIDI0NywgMTEsIDQsIDIyMCwgMjQ2LCAxMSwgNCwgMjIwLCAKLSAgICAyMjEsIDExLCA0LCAyMjAsIDIyMywgMTEsIDQsIDIyMCwgMjIyLCAxMSwgNCwgMjIwLCAyMjgsIDExLCA0LCAyMjAsIDIyNywgCi0gICAgMTEsIDQsIDIyMCwgMjMzLCAxMSwgNCwgMjIwLCAyMjksIDExLCA0LCAyMjAsIDIxOSwgMTEsIDQsIDIyMCwgMjE3LCAxMSwgCi0gICAgNCwgMjIwLCAyMjYsIDExLCA0LCAyMjAsIDIyMCwgMTEsIDQsIDIwMywgMTYyLCAxMSwgNCwgMjAzLCAxNjEsIDExLCA0LCAKLSAgICAyMDMsIDE3MCwgMTEsIDQsIDIwMywgMTY0LCAxMSwgNCwgMjAzLCAxNjYsIDExLCA0LCAyMDMsIDE2NSwgMTEsIDQsIDIwMywgCi0gICAgMTY4LCAxMSwgNCwgMjAzLCAxNjcsIDExLCA0LCAyMDMsIDE1MCwgMTEsIDQsIDIwMywgMTUxLCAxMSwgNCwgMjAzLCAxNTUsIAotICAgIDExLCA0LCAyMDMsIDE1NCwgMTEsIDQsIDIwMywgMTYwLCAxMSwgNCwgMjAzLCAxNTgsIDExLCA0LCAyMDMsIDEyOCwgMTEsIAotICAgIDQsIDIwMywgMTI2LCAxMSwgNCwgMjAzLCAxNDEsIDExLCA0LCAyMDMsIDEzMSwgMTEsIDQsIDIwMywgMTI5LCAxMSwgNCwgCi0gICAgMjAzLCAxMzAsIDExLCA0LCAyMDIsIDI1MywgMTEsIDQsIDIwMiwgMjUxLCAxMSwgNCwgMjAzLCAxMSwgMTEsIDQsIDIwMiwgCi0gICAgMjU0LCAxMSwgNCwgMjAzLCA1LCAxMSwgNCwgMjAzLCA0LCAxMSwgNCwgMjAzLCA4LCAxMSwgNCwgMjAzLCA2LCAxMSwgNCwgCi0gICAgMjAyLCAxOTEsIDExLCA0LCAyMDIsIDE5MCwgMTEsIDQsIDIwMiwgMTk0LCAxMSwgNCwgMjAyLCAxOTIsIDExLCA0LCAyMDIsIAotICAgIDIyNywgMTEsIDQsIDIwMiwgMjIzLCAxMSwgNCwgMjAyLCAyNDcsIDExLCA0LCAyMDIsIDIzMSwgMTEsIDQsIDIwMiwgMTgyLCAKLSAgICAxMSwgNCwgMjAyLCAxNzgsIDExLCA0LCAyMDIsIDIxMywgMTEsIDQsIDIwMiwgMTg5LCAxMSwgNCwgMjAyLCAxODUsIDExLCAKLSAgICA0LCAyMDIsIDE4NiwgMTEsIDQsIDIwMiwgMTYyLCAxMSwgNCwgMjAyLCAxNjEsIDExLCA0LCAyMDIsIDE2OSwgMTEsIDQsIAotICAgIDIwMiwgMTY1LCAxMSwgNCwgMjAyLCAxNjMsIDExLCA0LCAyMDIsIDE2NCwgMTEsIDQwLCAyMTcsIDY4LCAxMSwgNDAsIDIyNywgCi0gICAgMTQ4LCAxMSwgNDAsIDIyOSwgNjQsIDExLCA0MCwgMjIwLCAyNDAsIDExLCA0MCwgMjQ1LCA2MCwgMTEsIDQwLCAyMTEsIAotICAgIDEzMiwgMTEsIDQwLCAyMzgsIDEzOCwgMTEsIDQwLCAyMzgsIDE3MCwgMTEsIDQwLCAyMjQsIDE1NSwgMTEsIDQwLCAyMzUsIAotICAgIDIzMywgMTEsIDQwLCAyMjYsIDE5MiwgMTEsIDQwLCAyNDgsIDE3MCwgMTEsIDQwLCAyMjQsIDI3LCAxMSwgNDAsIDIwMiwgCi0gICAgMjQ3LCAxMSwgNDAsIDIxNywgMTU5LCAxMSwgNDAsIDIzNSwgMjI3LCAxMSwgNDAsIDIwOSwgMjEyLCAxMSwgNDAsIDIzOSwgCi0gICAgOCwgMTEsIDQwLCAyMDEsIDI1NCwgMTEsIDQwLCAyNDUsIDU0LCAxMSwgNDAsIDI0NCwgODAsIDExLCA0MCwgMjQ3LCAxNjAsIAotICAgIDExLCA0MCwgMjM4LCAxMzQsIDExLCA0MCwgMjIwLCAyMjksIDExLCA0MCwgMjA3LCAyMDMsIDExLCA0MCwgMjIwLCA5LCAxMSwgCi0gICAgNDAsIDIzMCwgMTA3LCAxMSwgNDAsIDIwMiwgMTMsIDExLCA0MCwgMjE3LCAxMzgsIDExLCA0MCwgMjM2LCAxNzgsIDExLCAKLSAgICA0MCwgMjAyLCAyNTMsIDExLCA0MCwgMjA0LCAxNTksIDExLCA0MCwgMjEyLCAxNzEsIDExLCA0MCwgMjA2LCA0NCwgMTEsIAotICAgIDQwLCAyMDIsIDExNiwgMTEsIDQwLCAyMzAsIDEwMSwgMTEsIDQwLCAyMjAsIDE5MywgMTEsIDQwLCAyMzAsIDEwNSwgMTEsIAotICAgIDQwLCAyMzgsIDE4LCAxMSwgNDAsIDIzMCwgMTI1LCAxMSwgNDAsIDIwNCwgMCwgMTEsIDQwLCAyNDIsIDQyLCAxMSwgNDAsIAotICAgIDIxMiwgMTg2LCAxMSwgNDAsIDIyNywgMTQyLCAxMSwgNDAsIDI0NSwgNjYsIDExLCA0MCwgMjQ1LCAxMDIsIDExLCA0MCwgCi0gICAgMjQ2LCA2MywgMTEsIDQwLCAyMzUsIDIzMCwgMTEsIDQwLCAyMTMsIDUzLCAxMSwgNDAsIDIwMSwgMjUzLCAxMSwgNDAsIAotICAgIDIxMiwgMjMyLCAxMSwgNDAsIDI0NiwgMTcwLCAxMSwgNDAsIDIwMSwgMjIzLCAxMSwgNDAsIDIyMywgNTEsIDExLCA0MCwgCi0gICAgMjI5LCAyMDEsIDIyNywgOTEsIDEsIDI0OSwgMzIsIDIyNywgOTEsIDEsIDE4NSwgMjI3LCA5MSwgMSwgMjE4LCAyMDgsIAotICAgIDIyNywgOTEsIDEsIDI0NCwgMjEyLCAyMjcsIDkxLCAxLCAyMTAsIDIyLCAyMjcsIDkxLCAxLCAyMDksIDEwOCwgMjI3LCA5MSwgCi0gICAgMSwgMjM5LCA4LCAyMjcsIDkxLCAxLCAxNzMsIDIyNywgOTEsIDEsIDIyOSwgMTQ0LCAyMjcsIDkxLCAxLCAyMzAsIDE4MSwgCi0gICAgMjI3LCA5MSwgMSwgMjQ3LCA5MiwgMjI3LCA5MSwgMSwgMjQ2LCAxOTksIDIyNywgOTEsIDEsIDI0MSwgMjU1LCAyMjcsIDkxLCAKLSAgICAxLCAyMDgsIDIwLCAyMjcsIDkxLCAxLCAyMDgsIDEwLCAyMjcsIDkxLCAxLCAxOTIsIDIyNywgOTEsIDEsIDIwMSwgMjAxLCAKLSAgICAyMjcsIDkxLCAxLCAyMjgsIDExMywgMjI3LCA5MSwgMSwgMjE1LCAzNiwgMjI3LCA5MSwgMSwgMjAyLCA4MCwgMjI3LCA5MSwgCi0gICAgMSwgMjAyLCAxMTYsIDIyNywgOTEsIDEsIDIyMiwgMjAzLCAyMjcsIDkxLCAxLCAxNTIsIDIyNywgOTEsIDEsIDIwMywgMTgyLCAKLSAgICAyMjcsIDkxLCAxLCAyMzcsIDEyLCAyMjcsIDkxLCAxLCAyNDAsIDEwOCwgMjI3LCA5MSwgMSwgMjA0LCAxMTEsIDIyNywgOTEsIAotICAgIDEsIDIxMywgOTAsIDIyNywgOTEsIDEsIDE5OCwgMjI3LCA5MSwgMSwgMjM4LCAxMTksIDIyNywgOTEsIDEsIDYzLCAyMjcsIAotICAgIDkxLCAxLCAyNTEsIDEwOSwgMjI3LCA5MSwgMSwgNzQsIDIyNywgOTEsIDEsIDI0MCwgMjM4LCAyMjcsIDkxLCAxLCA3NSwgCi0gICAgMjI3LCA5MSwgMSwgNzgsIDIyNywgOTEsIDEsIDY4LCAyMjcsIDkxLCAxLCAyMDcsIDI0LCAyMjcsIDkxLCAxLCAyMDcsIDE4LCAKLSAgICAyMjcsIDkxLCAxLCAyMjAsIDczLCAyMjcsIDkxLCAxLCAxNDMsIDIyMywgMTcwLCAyMDksIDIsIDIyNywgOTEsIDEsIDE0MywgCi0gICAgMjIzLCAxMTEsIDIxOCwgNjksIDIyNywgOTEsIDEsIDE0MywgMjIzLCAxNzAsIDI0NSwgNjUsIDIyNywgOTEsIDEsIDE0MywgCi0gICAgMjIzLCAxNzAsIDI0OCwgMjMsIDIyNywgOTEsIDEsIDE0MywgMjIzLCAxNzAsIDIwMSwgMjAxLCAyMjcsIDkxLCAxLCAxNDMsIAotICAgIDIyMywgMTcwLCAyMzAsIDE1MCwgMjI3LCA5MSwgMjE3LCAxNzksIDI0NSwgMjMzLCAyMjcsIDkxLCAyMTcsIDE3OSwgMjM5LCAKLSAgICAxMDIsIDIxMSwgNjEsIDQ4LCA0LCAyNDEsIDE2MSwgNDgsIDQsIDI0MSwgMTU3LCA0OCwgNCwgMjM3LCA0OCwgNDgsIDQsIAotICAgIDIwNCwgNTUsIDQ4LCA0LCAyMDQsIDU0LCA0OCwgNCwgMjE5LCAyMywgNDgsIDQsIDI0OCwgOTMsIDQ4LCA0LCAyNDgsIDE1MCwgCi0gICAgNDgsIDQsIDIyNSwgNDYsIDQ4LCA0LCAyMjgsIDIzOSwgNDgsIDQsIDIyNCwgMTg3LCA0OCwgNCwgMjM4LCAyMDMsIDQ4LCA0LCAKLSAgICAyNDAsIDUzLCA0OCwgNCwgMjA2LCA1MCwgNDgsIDQsIDIwOSwgMTc2LCA0OCwgNCwgMjA5LCA5MCwgNDgsIDQsIDI0MywgCi0gICAgMjQ3LCA0OCwgNCwgMjQzLCAyNDQsIDQ4LCA0LCAyMjcsIDIyNiwgNDgsIDQsIDIxNiwgMTM1LCA0OCwgNCwgMjQ0LCA2MSwgCi0gICAgNDgsIDQsIDIyMywgMTYsIDQ4LCA0LCAyMTQsIDE2NSwgNDgsIDQsIDIxMywgNDEsIDQ4LCA0LCAyMDIsIDkwLCA0OCwgNCwgCi0gICAgMjAyLCA3MCwgNDgsIDQsIDI0NiwgMjMwLCA0OCwgNCwgMjMwLCAxNTksIDQ4LCA0LCAyMjIsIDM5LCA0OCwgNCwgMjAzLCAKLSAgICA0OSwgNDgsIDQsIDIyOSwgMTk4LCA0OCwgNCwgMjIyLCAxNzYsIDQ4LCA0LCAyMzgsIDE4MiwgNDgsIDQsIDIyNSwgOCwgNDgsIAotICAgIDQsIDIyMiwgMjM1LCA0OCwgNCwgMjIxLCAwLCA0OCwgNCwgNzUsIDQ4LCA0LCAyMzEsIDQ5LCA0OCwgNCwgMjM3LCAzLCA0OCwgCi0gICAgNCwgMjM2LCAyMzgsIDQ4LCA0LCAyMDQsIDMwLCA0OCwgNCwgMjA0LCAxOCwgNDgsIDQsIDIxOCwgMTY3LCA0OCwgNCwgMjQ4LCAKLSAgICA5MSwgNDgsIDQsIDI0OCwgODYsIDQ4LCA0LCAyMjUsIDM5LCA0OCwgNCwgMjI4LCAyMzYsIDQ4LCA0LCAyMjQsIDE4NCwgNDgsIAotICAgIDQsIDIzOCwgMTk5LCA0OCwgNCwgMjQwLCAyNiwgNDgsIDQsIDIwNSwgMjMwLCA0OCwgNCwgMjA5LCAyLCA0OCwgNCwgMjA5LCAKLSAgICA3MCwgNDgsIDQsIDI0MywgMjM5LCA0OCwgNCwgMjQzLCAyNDMsIDQ4LCA0LCAyMjcsIDE0OCwgNDgsIDQsIDIxNiwgNTcsIAotICAgIDQ4LCA0LCAyNDMsIDIzMywgNDgsIDQsIDIyMywgMTAsIDQ4LCA0LCAyMTIsIDE2MiwgNDgsIDQsIDIxMywgMTEsIDQ4LCA0LCAKLSAgICAyMDIsIDM5LCA0OCwgNCwgMjAyLCA2NiwgNDgsIDQsIDI0NiwgNzksIDQ4LCA0LCAyMzAsIDE0MSwgNDgsIDQsIDIyMiwgMzIsIAotICAgIDQ4LCA0LCAyMDMsIDExLCA0OCwgNCwgMjI5LCAxMDAsIDQ4LCA0LCAyMjIsIDE2OCwgNDgsIDQsIDIzOCwgODEsIDQ4LCA0LCAKLSAgICAyMjQsIDE1NSwgNDgsIDQsIDIyMiwgMTAwLCA0OCwgNCwgMjIwLCAyNDgsIDQ4LCA0LCA2MywgNDgsIDQsIDI1MCwgMjMxLCAKLSAgICA0OCwgNCwgMjIyLCAxOTgsIDQ4LCA0LCAxNTIsIDQ4LCA0LCAyMzcsIDEyNiwgNDgsIDQsIDIwNCwgMTExLCA0OCwgNCwgCi0gICAgMjA0LCA5NywgNDgsIDQsIDE4NSwgNDgsIDQsIDI0OCwgOTgsIDQ4LCA0LCAyNDksIDMyLCA0OCwgNCwgMjI1LCA1NCwgNDgsIAotICAgIDQsIDIyOCwgMjQ0LCA0OCwgNCwgMjI4LCAyNDIsIDQ4LCA0LCAyMjQsIDE5MSwgNDgsIDQsIDIzOCwgMjA3LCA0OCwgNCwgCi0gICAgMjQwLCAxMDgsIDQ4LCA0LCAyMDYsIDg2LCA0OCwgNCwgMjEwLCAyMiwgNDgsIDQsIDIwOSwgMTA4LCA0OCwgNCwgMjQ0LCAxLCAKLSAgICA0OCwgNCwgMjQzLCAyNDYsIDQ4LCA0LCAyMjgsIDExMywgNDgsIDQsIDIxNiwgMjIwLCA0OCwgNCwgMjQ0LCAyMTIsIDQ4LCAKLSAgICA0LCAyMjMsIDI1LCA0OCwgNCwgMjE1LCAzNiwgNDgsIDQsIDIxMywgOTAsIDQ4LCA0LCAyMDIsIDExNiwgNDgsIDQsIDIwMiwgCi0gICAgODAsIDQ4LCA0LCAyNDcsIDkyLCA0OCwgNCwgMjMwLCAxODEsIDQ4LCA0LCAyMjIsIDQ4LCA0OCwgNCwgMTk4LCA0OCwgNCwgCi0gICAgMTczLCA0OCwgNCwgMjMwLCA0LCA0OCwgNCwgMjIyLCAxODIsIDQ4LCA0LCAyMzksIDgsIDQ4LCA0LCAxOTIsIDQ4LCA0LCAKLSAgICAyMDEsIDIwMSwgNDgsIDQsIDIyMSwgMTEsIDQ4LCA0LCAyMjAsIDE4LCA0OCwgNCwgMjIwLCAxMywgNDgsIDQsIDIzNiwgCi0gICAgMTE3LCA0OCwgNCwgMjAzLCAyNDQsIDQ4LCA0LCAyMDMsIDI0MCwgNDgsIDQsIDIxOCwgNDUsIDQ4LCA0LCAyNDgsIDg5LCAKLSAgICA0OCwgNCwgMjQ4LCAxMCwgNDgsIDQsIDIyNSwgMzQsIDQ4LCA0LCAyMjgsIDIzNCwgNDgsIDQsIDIyNCwgMTgwLCA0OCwgNCwgCi0gICAgMjM4LCAxOTUsIDQ4LCA0LCAyMzksIDE3NSwgNDgsIDQsIDIwNSwgMTc2LCA0OCwgNCwgMjA4LCAxNDgsIDQ4LCA0LCAyMDksIAotICAgIDQyLCA0OCwgNCwgMjQzLCAyMzYsIDQ4LCA0LCAyNDMsIDI0MSwgNDgsIDQsIDIyNywgMTgsIDQ4LCA0LCAyMTUsIDIwOCwgCi0gICAgNDgsIDQsIDI0MywgOTAsIDQ4LCA0LCAyMjIsIDI1MywgNDgsIDQsIDIxMSwgMjUwLCA0OCwgNCwgMjEyLCAyMzYsIDQ4LCA0LCAKLSAgICAyMDIsIDE1LCA0OCwgNCwgMjAyLCA2MSwgNDgsIDQsIDI0NSwgMTgwLCA0OCwgNCwgMjMwLCA5MSwgNDgsIDQsIDIyMiwgMjIsIAotICAgIDQ4LCA0LCAyMDIsIDIzMiwgNDgsIDQsIDIyOSwgNiwgNDgsIDQsIDIyMiwgMTY2LCA0OCwgNCwgMjM4LCAyOCwgNDgsIDQsIAotICAgIDIyNCwgMzUsIDQ4LCA0LCAyMjEsIDE4MCwgNDgsIDQsIDIyMCwgMjMwLCA0OCwgNCwgNjgsIDQ4LCA0LCAyMDYsIDI1NSwgCi0gICAgNDgsIDQsIDIzNiwgMjYsIDQ4LCA0LCAyMzYsIDEzLCA0OCwgNCwgMjAzLCAyMTcsIDQ4LCA0LCAyMDMsIDIxMCwgNDgsIDQsIAotICAgIDIxNywgMTkxLCA0OCwgNCwgMjQ4LCA4OCwgNDgsIDQsIDI0NywgMTkzLCA0OCwgNCwgMjI1LCAzMywgNDgsIDQsIDIyOCwgCi0gICAgMjMyLCA0OCwgNCwgMjI0LCAxNzksIDQ4LCA0LCAyMzgsIDE5NCwgNDgsIDQsIDIzOSwgMTA4LCA0OCwgNCwgMjA0LCAxNjMsIAotICAgIDQ4LCA0LCAyMDcsIDIwMywgNDgsIDQsIDIwOSwgMjIsIDQ4LCA0LCAyNDMsIDIzNCwgNDgsIDQsIDI0MywgMjQwLCA0OCwgNCwgCi0gICAgMjI2LCAyMzksIDQ4LCA0LCAyMTUsIDE0NSwgNDgsIDQsIDI0MiwgNDIsIDQ4LCA0LCAyMjIsIDI0OCwgNDgsIDQsIDIxMSwgCi0gICAgMTAsIDQ4LCA0LCAyMTIsIDE5OSwgNDgsIDQsIDIwMiwgNiwgNDgsIDQsIDIwMiwgNTcsIDQ4LCA0LCAyNDUsIDExMCwgNDgsIAotICAgIDQsIDIzMCwgODIsIDQ4LCA0LCAyMjIsIDE4LCA0OCwgNCwgMjAyLCAyMTMsIDQ4LCA0LCAyMjgsIDIwOSwgNDgsIDQsIDIyMiwgCi0gICAgMTY1LCA0OCwgNCwgMjM3LCAyMzAsIDQ4LCA0LCAyMjMsIDI0NiwgNDgsIDQsIDIyMSwgODQsIDQ4LCA0LCAyMjAsIDIyNiwgCi0gICAgNDgsIDQsIDc4LCA0OCwgNCwgMjIwLCAzMSwgNDgsIDQsIDIyMiwgMTI0LCA0OCwgNCwgMjM2LCAxMzYsIDQ4LCA0LCAyMzYsIAotICAgIDEyMCwgNDgsIDQsIDIwNCwgMCwgNDgsIDQsIDIwMywgMjQ1LCA0OCwgNCwgMjE4LCA2OSwgNDgsIDQsIDI0OCwgOTAsIDQ4LCAKLSAgICA0LCAyNDgsIDIzLCA0OCwgNCwgMjI1LCAzNSwgNDgsIDQsIDIyOCwgMjM1LCA0OCwgNCwgMjI0LCAxODIsIDQ4LCA0LCAyMzgsIAotICAgIDE5NywgNDgsIDQsIDIzOCwgMTk2LCA0OCwgNCwgMjM5LCAxODYsIDQ4LCA0LCAyMDUsIDE4OSwgNDgsIDQsIDEzNSwgNDgsIAotICAgIDQsIDIwOSwgNDcsIDQ4LCA0LCAyNDMsIDIzNywgNDgsIDQsIDI0MywgMjQyLCA0OCwgNCwgMjI3LCA0OSwgNDgsIDQsIDIxNSwgCi0gICAgMjI3LCA0OCwgNCwgMjQzLCAxMTMsIDQ4LCA0LCAyMjMsIDEsIDQ4LCA0LCAyMTIsIDEzLCA0OCwgNCwgMjEyLCAyNDIsIDQ4LCAKLSAgICA0LCAyMDIsIDE3LCA0OCwgNCwgMjAyLCA2MywgNDgsIDQsIDI0NSwgMjU0LCA0OCwgNCwgMjMwLCAxMDEsIDQ4LCA0LCAyMjIsIAotICAgIDIzLCA0OCwgNCwgMjAyLCAyNDcsIDQ4LCA0LCAyMjksIDI2LCA0OCwgNCwgMjIyLCAxNjcsIDQ4LCA0LCAyMzgsIDM5LCA0OCwgCi0gICAgNCwgMjI0LCA4MiwgNDgsIDQsIDIyMSwgMTkxLCA0OCwgNCwgMjIwLCAyMzMsIDQ4LCA0LCA3NCwgNDgsIDQsIDI0MSwgOTIsIAotICAgIDQ4LCA0LCAyMjIsIDE4NywgNDgsIDQsIDIzNywgNjcsIDQ4LCA0LCAyMzcsIDMzLCA0OCwgNCwgMjA0LCA2MiwgNDgsIDQsIAotICAgIDIwNCwgNDksIDQ4LCA0LCAyMTksIDM0LCA0OCwgNCwgMjQ4LCA5NCwgNDgsIDQsIDI0OCwgMTYyLCA0OCwgNCwgMjI1LCA0NywgCi0gICAgNDgsIDQsIDIyOCwgMjQwLCA0OCwgNCwgMjI4LCAyMzgsIDQ4LCA0LCAyMjQsIDE4OCwgNDgsIDQsIDIzOCwgMjA0LCA0OCwgCi0gICAgNCwgMjM4LCAyMDIsIDQ4LCA0LCAyNDAsIDYwLCA0OCwgNCwgMjA2LCA1NSwgNDgsIDQsIDIwOSwgMTg3LCA0OCwgNCwgMjA5LCAKLSAgICA5MiwgNDgsIDQsIDI0MywgMjQ4LCA0OCwgNCwgMjQzLCAyNDUsIDQ4LCA0LCAyMjcsIDIzNCwgNDgsIDQsIDIxNiwgMTU4LCAKLSAgICA0OCwgNCwgMjQ0LCA3NSwgNDgsIDQsIDIyMywgMTcsIDQ4LCA0LCAyMTQsIDE3NywgNDgsIDQsIDIxMywgNDMsIDQ4LCA0LCAKLSAgICAyMDIsIDkyLCA0OCwgNCwgMjAyLCA3MSwgNDgsIDQsIDI0NiwgMjM4LCA0OCwgNCwgMjMwLCAxNjEsIDQ4LCA0LCAyMjIsIAotICAgIDQxLCA0OCwgNCwgMjAzLCA1MiwgNDgsIDQsIDIyOSwgMjAxLCA0OCwgNCwgMjIyLCAxNzcsIDQ4LCA0LCAyMjIsIDE3MywgCi0gICAgNDgsIDQsIDIzOCwgMTkwLCA0OCwgNCwgMjM4LCAxNzcsIDQ4LCA0LCAyMjUsIDIwLCA0OCwgNCwgMjIyLCAyNDAsIDQ4LCA0LCAKLSAgICAyMjEsIDEsIDQ4LCA0LCAyMjIsIDIwNSwgNDgsIDQsIDIyNywgMTg4LCA0OCwgMjQ1LCAyMzMsIDQ4LCAyMzksIDEwMiwgCi0gICAgMjExLCA2MSwgNDgsIDIxNywgNDcsIDgyLCA0OCwgNCwgMjIzLCAwLCAyNDAsIDEwOCwgNDgsIDQsIDIyMywgMCwgMTczLCAKLSAgICA0OCwgNCwgMjIzLCAwLCAyMTEsIDI1MCwgNDgsIDE2LCAyNDAsIDQ5LCA0OCwgMTYsIDIyOSwgMTk2LCA0OCwgMTYsIDIwOCwgCi0gICAgMjE1LCA0OCwgMTYsIDIyMiwgNzUsIDQ4LCAxNiwgMjQ4LCAyMzcsIDQ4LCAxNiwgMjQwLCAxMDcsIDQ4LCAxNiwgMjEwLCAKLSAgICAxOCwgNDgsIDE2LCAyNDQsIDE2NCwgNDgsIDE2LCAyNDMsIDg5LCA0OCwgMTYsIDIyOCwgMTkzLCA0OCwgMTYsIDIwOCwgCi0gICAgMTUyLCA0OCwgMTYsIDI0MywgMTEyLCA0OCwgMTYsIDIzMCwgOTIsIDQ4LCAxNywgMjAyLCA4NCwgNDgsIDE3LCAxMDUsIDQ4LCAKLSAgICAxNywgMTA4LCA0OCwgMTcsIDE0NywgNDgsIDE3LCAxNDksIDQ4LCAxNywgMTcwLCA0OCwgMTcsIDE5NSwgNDgsIDE3LCAyMTMsIAotICAgIDExMSwgNDgsIDE3LCAxOTksIDQ4LCAxNywgMjIyLCA2MywgNDgsIDQsIDIyMywgMCwgMTkyLCA0OCwgNCwgMjIzLCAwLCAKLSAgICAyNDMsIDExMywgMzYsIDYsIDEsIDIwMiwgODgsIDM2LCA1LCAxLCAyMDIsIDg4LCAzNiwgNiwgMSwgMjQxLCAyNTAsIDM2LCAKLSAgICA1LCAxLCAyNDEsIDI1MCwgMzYsIDYsIDEsIDIxNiwgNzMsIDI0MSwgMjUyLCAzNiwgNSwgMSwgMjE2LCA3MywgMjQxLCAyNTIsIAotICAgIDM2LCA2LCAxLCAyMzAsIDIzMCwgMzYsIDUsIDEsIDIzMCwgMjMwLCAzNiwgNiwgMSwgMjQzLCAxMjksIDM2LCA1LCAxLCAKLSAgICAyNDMsIDEyOSwgMzYsIDYsIDEsIDIyNCwgNDMsIDIwNywgMTQsIDM2LCA1LCAxLCAyMjQsIDQzLCAyMDcsIDE0LCAzNiwgNiwgCi0gICAgMSwgMjQ3LCAyMDQsIDIyMCwgMzYsIDM2LCA1LCAxLCAyNDcsIDIwNCwgMjIwLCAzNiwgMzYsIDYsIDEsIDIyMiwgMjE2LCAKLSAgICAyMDMsIDM0LCAzNiwgNSwgMSwgMjIyLCAyMTYsIDIwMywgMzQsIDM2LCA2LCAxLCAyMDMsIDMxLCAzLCAyNDksIDI2LCAyMDMsIAotICAgIDM0LCAzNiwgNSwgMSwgMjAzLCAzMSwgMywgMjQ5LCAyNiwgMjAzLCAzNCwgMzYsIDYsIDEsIDIzMCwgMjI4LCAyMDMsIDY2LCAKLSAgICAzNiwgNSwgMSwgMjMwLCAyMjgsIDIwMywgNjYsIDM2LCA2LCAxLCAyMTYsIDczLCAyMDIsIDIxMywgMzYsIDUsIDEsIDIxNiwgCi0gICAgNzMsIDIwMiwgMjEzLCAzNiwgNiwgMSwgMjMwLCAyMjgsIDYzLCAzNiwgNSwgMSwgMjMwLCAyMjgsIDYzLCAzNiwgNiwgMSwgCi0gICAgMjQ2LCAxNiwgMjI3LCA4NiwgMjAyLCAxODMsIDM2LCA1LCAxLCAyNDYsIDE2LCAyMjcsIDg2LCAyMDIsIDE4MywgMzYsIDYsIAotICAgIDEsIDI0OCwgMzUsIDIwMiwgMTgzLCAzNiwgNSwgMSwgMjQ4LCAzNSwgMjAyLCAxODMsIDM2LCA2LCAxLCAyMzAsIDIyOCwgCi0gICAgMjQ2LCAxNiwgMjI3LCA4NiwgMjAyLCAxODMsIDM2LCA1LCAxLCAyMzAsIDIyOCwgMjQ2LCAxNiwgMjI3LCA4NiwgMjAyLCAKLSAgICAxODMsIDM2LCA2LCAxLCAyMDIsIDI0OSwgMzYsIDUsIDEsIDIwMiwgMjQ5LCAzNiwgNiwgMSwgMjE2LCA3MywgMjA4LCAxNCwgCi0gICAgMzYsIDUsIDEsIDIxNiwgNzMsIDIwOCwgMTQsIDM2LCA2LCAxLCAyMTIsIDcsIDI0NCwgNzUsIDM2LCA1LCAxLCAyMTIsIDcsIAotICAgIDI0NCwgNzUsIDM2LCA2LCAxLCAyMTIsIDcsIDI0MSwgMTIyLCAzNiwgNSwgMSwgMjEyLCA3LCAyNDEsIDEyMiwgMzYsIDYsIAotICAgIDEsIDIxMiwgNywgMjQxLCAxMDMsIDM2LCA1LCAxLCAyMTIsIDcsIDI0MSwgMTAzLCAzNiwgNiwgMSwgMjI0LCA0NywgNzgsIAotICAgIDM2LCA1LCAxLCAyMjQsIDQ3LCA3OCwgMzYsIDYsIDEsIDI0OCwgNjMsIDc4LCAzNiwgNSwgMSwgMjQ4LCA2MywgNzgsIDM2LCAKLSAgICA2LCAxLCA1MiwgMjI0LCA0NywgNzgsIDM2LCA1LCAxLCA1MiwgMjI0LCA0NywgNzgsIDM2LCAxLCAyMjMsIDIyNywgNzgsIAotICAgIDM5LCAzNiwgMjA0LCAxNDYsIDM5LCAzNiwgMjA5LCAxNTMsIDIyNCwgMTE0LCA1NCwgMzksIDM2LCAyMzYsIDEyLCAyMjQsIAotICAgIDExNCwgNTQsIDM5LCAzNiwgMjA5LCAzNywgMjI0LCAxMTQsIDU0LCAyMTIsIDU1LCAyNTAsIDU5LCAzOSwgMzYsIDEsIDIwNywgCi0gICAgMTEsIDIzMSwgMTEwLCAzOSwgMzYsIDEsIDc1LCAzOSwgMzYsIDEsIDIwMywgMTEsIDM5LCAzNiwgMSwgNjgsIDM5LCAzNiwgCi0gICAgMSwgMjM3LCA5MSwgNTQsIDM5LCAzNiwgMSwgMjAzLCAzMCwgMzksIDM2LCAxLCAyMTIsIDcsIDU0LCAzOSwgMzYsIDEsIAotICAgIDIyMCwgMzYsIDM5LCAzNiwgMjI5LCAyMTMsIDM5LCAzNiwgMjE5LCA0MSwgMzYsIDIyOSwgMjEzLCAzNiwgMjE5LCA0MSwgCi0gICAgMzYsIDYsIDEsIDI0MiwgOSwgMzYsIDUsIDEsIDI0MiwgOSwgMzYsIDYsIDEsIDI0MSwgMjQxLCAzNiwgNSwgMSwgMjQxLCAKLSAgICAyNDEsIDM2LCA2LCAxLCAyMDIsIDQ3LCAzNiwgNSwgMSwgMjAyLCA0NywgMzYsIDYsIDEsIDI0NiwgMjU0LCAzNiwgNSwgMSwgCi0gICAgMjQ2LCAyNTQsIDM2LCA2LCAxLCAyNDEsIDIzOCwgMzYsIDUsIDEsIDI0MSwgMjM4LCAzNiwgNiwgMSwgMjA5LCAxODgsIDMsIAotICAgIDEwMSwgMTEzLCAzNiwgNSwgMSwgMjA5LCAxODgsIDMsIDEwMSwgMTEzLCAzNiwgNiwgMSwgMjA3LCAxNTgsIDM2LCA1LCAxLCAKLSAgICAyMDcsIDE1OCwgMzYsIDYsIDEsIDIwNywgMjQ1LCAzNiwgNSwgMSwgMjA3LCAyNDUsIDM2LCA2LCAxLCAyMDcsIDI1MCwgMzYsIAotICAgIDUsIDEsIDIwNywgMjUwLCAzNiwgNiwgMSwgMjA5LCAxOTMsIDM2LCA1LCAxLCAyMDksIDE5MywgMzYsIDYsIDEsIDIzNSwgCi0gICAgMjUxLCAzNiwgNSwgMSwgMjM1LCAyNTEsIDM2LCA2LCAxLCAyMTIsIDE3NywgMzYsIDUsIDEsIDIxMiwgMTc3LCAzNiwgNiwgCi0gICAgMSwgNTIsIDc4LCAzNiwgNSwgMSwgNTIsIDc4LCAzNiwgNiwgMSwgMjQ1LCAxMjgsIDc4LCAzNiwgNSwgMSwgMjQ1LCAxMjgsIAotICAgIDc4LCA2NSwgMSwgMzYsIDIzNywgOTEsIDU0LCA2NSwgMSwgMzYsIDIxMiwgNywgNTQsIDM5LCAzNiwgMSwgMjQxLCAxNTQsIAotICAgIDM5LCAzNiwgMSwgMjMwLCAyMjgsIDc0LCAyNCwgMSwgNjMsIDI0LCAxLCAxNzMsIDI0LCAxLCA2OCwgMjQsIDEsIDIyOCwgCi0gICAgMjA5LCAyNCwgMSwgMjQxLCAxNjEsIDI0LCAxLCAyMTYsIDEzNSwgMjQsIDEsIDIxMCwgMSwgMjQsIDEsIDc4LCAyNCwgMSwgCi0gICAgMjIwLCAyNDgsIDI0LCAxLCA3NSwgMjQsIDEsIDIyOCwgMTEzLCAyNCwgMSwgMTg1LCAyNCwgMSwgMjE2LCAzLCAyNCwgMSwgCi0gICAgMjE2LCA1MCwgMjQsIDEsIDIyNywgMjI1LCAyNCwgMSwgMjI1LCA3LCAyNCwgMSwgMjEwLCAxOCwgMjQsIDEsIDIyMywgMjMsIAotICAgIDI0LCAxLCAyMjIsIDQ2LCAyNCwgMSwgMjI2LCAxODUsIDI0LCAxLCAyMTAsIDE3OSwgMjQsIDEsIDIyMywgMjQ2LCAyNCwgMSwgCi0gICAgMjEzLCA2LCAyNCwgMSwgMjEyLCAxNjIsIDI0LCAxLCAyMTMsIDE2LCAyNCwgMSwgMjEzLCAxMTMsIDI0LCAxLCAyMjgsIAotICAgIDEzNywgMjQsIDEsIDIyOSwgMTcwLCAyNCwgMSwgMjIxLCA1NSwgMjQsIDEsIDIyMSwgODQsIDI0LCAxLCAyMjIsIDE3LCAyNCwgCi0gICAgMSwgMjAyLCAyMjksIDI0LCAxLCAyMTIsIDE5OSwgMjQsIDEsIDIwMiwgMTg3LCAyNCwgMSwgMTk4LCAyNCwgMSwgMjIxLCAKLSAgICAxMTgsIDI0LCAxLCAyMjksIDE1NiwgMjQsIDEsIDIxOCwgMjEyLCAyNCwgMSwgMjIyLCAzOSwgMjQsIDEsIDIyMSwgOTksIAotICAgIDI0LCAxLCAyMTcsIDE4MywgMjQsIDEsIDIwMywgMjE0LCAyNCwgMSwgMjE5LCAyMywgMjQsIDEsIDI0MCwgNTMsIDI0LCAxLCAKLSAgICAyMTUsIDE0NSwgMjQsIDEsIDIyNiwgMjM5LCAyNCwgMSwgMjI0LCAxNTUsIDI0LCAxLCAyMjIsIDEwMCwgMjQsIDEsIDIxNiwgCi0gICAgNzUsIDI0LCAxLCAyMTYsIDIwMiwgMjQsIDEsIDIyOSwgMTgwLCAyNCwgMSwgMjIyLCAxMzEsIDI0LCAxLCAyMjIsIDE4MiwgCi0gICAgMjQsIDEsIDIyMiwgMjAzLCAyNCwgMSwgMjEyLCAyNDIsIDI0LCAxLCAyMTcsIDE4OCwgMjQsIDEsIDIzOSwgMTA4LCAyNCwgCi0gICAgMSwgMjM5LCAxNzksIDI0LCAxLCAyMDQsIDExMSwgMjQsIDEsIDIwMSwgMjAxLCAyNCwgMSwgMjI3LCAxNDgsIDI0LCAxLCAKLSAgICAyMTgsIDE2NywgMjQsIDEsIDIyNywgMTAsIDI0LCAxLCAyMjksIDI2LCAyNCwgMSwgMjI1LCA0NCwgMjQsIDEsIDIxNiwgCi0gICAgMTA3LCAyNCwgMSwgMjI0LCAyNDAsIDI0LCAxLCAxOTIsIDI0LCAxLCAyMDksIDIsIDI0LCAxLCAyMjksIDEwMCwgMjQsIDEsIAotICAgIDIyNCwgODIsIDI0LCAxLCAyMjUsIDUyLCAyNCwgMSwgMjA5LCAxMzIsIDI0LCAxLCAyMjgsIDI0NCwgMjQsIDEsIDIwOSwgCi0gICAgMTUyLCAyNCwgMSwgMjIxLCA4NiwgMjQsIDEsIDIxNCwgMjUxLCAyNCwgMSwgMjQwLCAxMDQsIDI0LCAxLCAyMjgsIDI0NiwgCi0gICAgMjQsIDEsIDIyOSwgMjEsIDI0LCAzOSwgMTMxLCAyMjgsIDI1NSwgMjQsIDM5LCAxMzEsIDIwNywgMTk0LCAyNCwgMjIyLCAKLSAgICA0NSwgMjQsIDIzOSwgMTAyLCAyMTEsIDYxLCAyNCwgMjQ1LCAyNDIsIDI0LCAyNDUsIDIzMywgMjQsIDIxMywgMTQzLCAyNCwgCi0gICAgMjE3LCA0NywgODIsIDY1LCAxLCAyNDYsIDEyOCwgMTQzLCAyMDMsIDEsIDIxOCwgMTE5LCA2NSwgMSwgMjQ2LCAxMjgsIAotICAgIDE0MywgMjAzLCA3NywgMjE4LCAxMTksIDY1LCAxLCAyNDYsIDEyOCwgMTQzLCAyMDMsIDEsIDIxMywgNjUsIDY1LCAxLCAKLSAgICAyNDYsIDEyOCwgMTQzLCAyMDMsIDc3LCAyMTMsIDY1LCA2NSwgMSwgMjQ2LCAxMjgsIDE0MywgMjAzLCAxLCAyMTcsIDY1LCAKLSAgICA2NSwgMSwgMjQ2LCAxMjgsIDE0MywgMjAzLCA3NywgMjE3LCA2NSwgNjUsIDEsIDI0NiwgMTI4LCAxNDMsIDIwMywgMSwgCi0gICAgMjE1LCAxNDUsIDY1LCAxLCAyNDYsIDEyOCwgMTQzLCAyMDMsIDc3LCAyMTUsIDE0NSwgNjUsIDEsIDI0MCwgMTk4LCAyNDIsIAotICAgIDgzLCAxNDMsIDE0MiwgNjUsIDEsIDEzOCwgMjQyLCA4MywgMTQzLCAxNDIsIDY1LCAxLCAyMjQsIDE1MCwgMjQyLCA4MywgCi0gICAgMTQzLCAxNDIsIDY1LCAxLCAxMjQsIDI0MiwgODMsIDE0MywgMTQyLCA2NSwgMSwgMjQwLCAxOTcsIDI0MiwgODMsIDE0MywgCi0gICAgMTQyLCA2NSwgMSwgMjQwLCAxOTgsIDI0MiwgODMsIDIyNywgMjE0LCAxNDMsIDE0MiwgNjUsIDEsIDEzOCwgMjQyLCA4MywgCi0gICAgMjI3LCAyMTQsIDE0MywgMTQyLCA2NSwgMSwgMjI0LCAxNTAsIDI0MiwgODMsIDIyNywgMjE0LCAxNDMsIDE0MiwgNjUsIDEsIAotICAgIDEyNCwgMjQyLCA4MywgMjI3LCAyMTQsIDE0MywgMTQyLCA2NSwgMSwgMjQwLCAxOTcsIDI0MiwgODMsIDIyNywgMjE0LCAKLSAgICAxNDMsIDE0MiwgNjUsIDEsIDI0MCwgMTk4LCAyMjcsIDIxNCwgMTQzLCAxNDIsIDY1LCAxLCAxMzgsIDIyNywgMjE0LCAxNDMsIAotICAgIDE0MiwgNjUsIDEsIDIyNCwgMTUwLCAyMjcsIDIxNCwgMTQzLCAxNDIsIDY1LCAxLCAxMjQsIDIyNywgMjE0LCAxNDMsIDE0MiwgCi0gICAgNjUsIDEsIDI0MCwgMTk3LCAyMjcsIDIxNCwgMTQzLCAxNDIsIDY1LCAxLCA3MCwgODAsIDE0MiwgNjUsIDEsIDcwLCAyMTIsIAotICAgIDU3LCA2NSwgMSwgNzAsIDIzNiwgMTA2LCAxNDIsIDY1LCAxLCAyMjYsIDI1MSwgNTAsIDI0NSwgMTY2LCAyNTAsIDIxNywgCi0gICAgNjUsIDEsIDIxNiwgMTg4LCAxMTIsIDQ3LCA2NSwgMSwgMjE2LCAxODgsIDEyMSwgNDcsIDY1LCAxLCAyMTYsIDE4OCwgMjQwLCAKLSAgICAyMTIsIDgyLCA2NSwgMSwgMjE2LCAxODgsIDIzMCwgMjM5LCAyNDAsIDIxMiwgODIsIDY1LCAxLCAxMjQsIDIzMCwgMjM5LCAKLSAgICAyNDAsIDIxMiwgODIsIDY1LCAxLCAyMTEsIDQyLCAyNSwgMTM4LCAyMDgsIDE2MSwgNjUsIDEsIDIxMSwgNDIsIDI1LCAxMjQsIAotICAgIDIwOCwgMTYxLCA4LCA2LCAxLCAyNDEsIDE0OSwgMjUxLCAzMCwgOCwgNSwgMSwgMjQxLCAxNDksIDI1MSwgMzAsIDgsIDYsIAotICAgIDEsIDI0MSwgMTQ5LCAyNTEsIDU5LCA4LCA1LCAxLCAyNDEsIDE0OSwgMjUxLCA1OSwgOCwgNiwgMSwgMjM3LCAzMSwgOCwgNSwgCi0gICAgMSwgMjM3LCAzMSwgOCwgNiwgMSwgMjA3LCAxMDcsIDgsIDUsIDEsIDIwNywgMTA3LCA4LCA2LCAxLCAyMDgsIDg5LCA4LCA1LCAKLSAgICAxLCAyMDgsIDg5LCA4LCA2LCAxLCAyNDUsIDEwNywgOCwgNSwgMSwgMjQ1LCAxMDcsIDgsIDYsIDEsIDI0NSwgMTA4LCAzLCAKLSAgICAyNDUsIDIzMywgOCwgNSwgMSwgMjQ1LCAxMDgsIDMsIDI0NSwgMjMzLCA4LCAxLCA1LCA2LCAyNDAsIDE3NCwgOCwgMSwgNSwgCi0gICAgNiwgMTk0LCA4LCA2LCAxLCAyNTIsIDI1LCA4LCA1LCAxLCAyNTIsIDI1LCA4LCA2LCAxLCAyNTAsIDE3OCwgOCwgNSwgMSwgCi0gICAgMjUwLCAxNzgsIDgsIDYsIDEsIDI1MCwgMzQsIDgsIDUsIDEsIDI1MCwgMzQsIDgsIDYsIDEsIDI1MCwgMTgsIDgsIDUsIDEsIAotICAgIDI1MCwgMTgsIDgsIDYsIDEsIDI1MCwgMTksIDMsIDIzNiwgMTA2LCAxNDIsIDgsIDUsIDEsIDI1MCwgMTksIDMsIDIzNiwgCi0gICAgMTA2LCAxNDIsIDgsIDYsIDEsIDI1MCwgOCwgOCwgNSwgMSwgMjUwLCA4LCA4LCA2LCAxLCAyMTYsIDczLCAyNDcsIDEyNiwgCi0gICAgMywgMjQzLCA4NSwgOCwgNSwgMSwgMjE2LCA3MywgMjQ3LCAxMjYsIDMsIDI0MywgODUsIDgsIDYsIDEsIDIzMCwgNTUsIDMsIAotICAgIDk1LCA4LCA1LCAxLCAyMzAsIDU1LCAzLCA5NSwgOCwgNiwgMSwgMjMwLCA1NSwgMywgMjQzLCAyMjgsIDk1LCA4LCA1LCAxLCAKLSAgICAyMzAsIDU1LCAzLCAyNDMsIDIyOCwgOTUsIDgsIDYsIDEsIDIzMCwgNTUsIDMsIDIxMSwgMzIsIDI1LCAyNDMsIDIyOCwgOTUsIAotICAgIDgsIDUsIDEsIDIzMCwgNTUsIDMsIDIxMSwgMzIsIDI1LCAyNDMsIDIyOCwgOTUsIDgsIDYsIDEsIDI0NywgMjAzLCAxNTksIAotICAgIDgsIDUsIDEsIDI0NywgMjAzLCAxNTksIDgsIDYsIDEsIDIyOCwgMTMxLCAzLCAxMzgsIDk1LCA4LCA1LCAxLCAyMjgsIDEzMSwgCi0gICAgMywgMTM4LCA5NSwgOCwgNiwgMSwgMTU4LCAzLCAxNjMsIDIxMSwgMzIsIDIxOSwgMTk5LCA4LCA1LCAxLCAxNTgsIDMsIAotICAgIDE2MywgMjExLCAzMiwgMjE5LCAxOTksIDgsIDYsIDEsIDE1OCwgMywgMjI3LCAxNCwgOCwgNSwgMSwgMTU4LCAzLCAyMjcsIAotICAgIDE0LCA4LCA2LCAxLCAyMjAsIDE4LCA4LCA1LCAxLCAyMjAsIDE4LCA4LCA2LCAxLCAyMTksIDE4NSwgMywgMjExLCAzMiwgCi0gICAgMjA5LCAyNSwgMjQ0LCAyMCwgOCwgNSwgMSwgMjE5LCAxODUsIDMsIDIxMSwgMzIsIDIwOSwgMjUsIDI0NCwgMjAsIDgsIDYsIAotICAgIDEsIDIxOSwgMTg1LCAzLCAyMzksIDE5OSwgOCwgNSwgMSwgMjE5LCAxODUsIDMsIDIzOSwgMTk5LCA4LCA2LCAxLCAyMTksIAotICAgIDE4NSwgMywgMjExLCAxNzAsIDIwOSwgMjQ4LCA4LCA1LCAxLCAyMTksIDE4NSwgMywgMjExLCAxNzAsIDIwOSwgMjQ4LCA4LCAKLSAgICA2LCAxLCAyMTcsIDEzNSwgMywgMjExLCAzMiwgMjA5LCAyNSwgMjQ0LCAyMCwgOCwgNSwgMSwgMjE3LCAxMzUsIDMsIDIxMSwgCi0gICAgMzIsIDIwOSwgMjUsIDI0NCwgMjAsIDgsIDYsIDEsIDIxNywgMTM1LCAzLCAyNDMsIDIyOCwgOTUsIDgsIDUsIDEsIDIxNywgCi0gICAgMTM1LCAzLCAyNDMsIDIyOCwgOTUsIDgsIDYsIDEsIDIxNywgMSwgMjE1LCAxOTIsIDgsIDUsIDEsIDIxNywgMSwgMjE1LCAKLSAgICAxOTIsIDgsIDYsIDEsIDIxNSwgMTMyLCAyMTUsIDE5MiwgOCwgNSwgMSwgMjE1LCAxMzIsIDIxNSwgMTkyLCA4LCA2LCAxLCAKLSAgICAyMDYsIDE2NSwgMywgMjQzLCAyMjgsIDk1LCA4LCA1LCAxLCAyMDYsIDE2NSwgMywgMjQzLCAyMjgsIDk1LCA4LCA2LCAxLCAKLSAgICAyMDQsIDE1MiwgOCwgNSwgMSwgMjA0LCAxNTIsIDgsIDYsIDEsIDIwNSwgMTk3LCAyMDIsIDE1OSwgOCwgNSwgMSwgMjA1LCAKLSAgICAxOTcsIDIwMiwgMTU5LCA4LCA2LCAxLCAyMDksIDQxLCAzLCA5NSwgOCwgNSwgMSwgMjA5LCA0MSwgMywgOTUsIDgsIDYsIDEsIAotICAgIDIwOSwgNDEsIDMsIDIxMSwgMzIsIDIwOSwgMjUsIDI0NCwgMjAsIDgsIDUsIDEsIDIwOSwgNDEsIDMsIDIxMSwgMzIsIDIwOSwgCi0gICAgMjUsIDI0NCwgMjAsIDgsIDYsIDEsIDIwNiwgNDUsIDgsIDUsIDEsIDIwNiwgNDUsIDgsIDYsIDEsIDI0MCwgMjUwLCA4LCA1LCAKLSAgICAxLCAyNDAsIDI1MCwgOCwgNiwgMSwgMjMwLCAyMTUsIDgsIDUsIDEsIDIzMCwgMjE1LCA4LCA2LCAxLCAyNDUsIDIxOCwgOCwgCi0gICAgNSwgMSwgMjQ1LCAyMTgsIDY1LCAxLCAyMDYsIDE5MywgOCwgNSwgMSwgMjQyLCAzMiwgOCwgNSwgMSwgMjI2LCAyMjIsIDgsIAotICAgIDUsIDEsIDIyMywgMjIwLCA4LCA1LCAxLCAyMjEsIDQ3LCA4LCA1LCAxLCAyMTUsIDEzMSwgOCwgMSwgNSwgNiwgMjE1LCAKLSAgICAxMzEsIDgsIDUsIDEsIDIwNywgMTkxLCA4LCA1LCAxLCAyMDcsIDYsIDgsIDYsIDEsIDIzMSwgNCwgMjQ1LCA1MSwgOCwgNSwgCi0gICAgMSwgMjMxLCA0LCAyNDUsIDUxLCA4LCA2LCAxLCAyMzEsIDQsIDI0MCwgMTc0LCA4LCA1LCAxLCAyMzEsIDQsIDI0MCwgMTc0LCAKLSAgICA4LCA2LCAxLCAyMzEsIDQsIDIzOSwgNzUsIDgsIDYsIDEsIDIwNywgMTc0LCAyMzEsIDQsIDIzOSwgNzUsIDgsIDUsIDEsIAotICAgIDIwNywgMTc0LCAyMzEsIDQsIDIzOSwgNzUsIDgsIDYsIDEsIDIwNywgMTc0LCAxNTksIDgsIDUsIDEsIDIwNywgMTc0LCAKLSAgICAxNTksIDgsIDYsIDEsIDIzMSwgNCwgMTQ2LCA4LCA1LCAxLCAyMzEsIDQsIDE0NiwgOCwgNiwgMSwgMjMxLCA0LCAxOTQsIDgsIAotICAgIDUsIDEsIDIzMSwgNCwgMTk0LCA4LCA2LCAxLCAyMzEsIDQsIDIxMCwgNjksIDgsIDUsIDEsIDIzMSwgNCwgMjEwLCA2OSwgCi0gICAgNjUsIDEsIDEyNCwgMjQ2LCA1MywgMjUxLCAxMzgsIDY1LCAxLCAyNDUsIDI0MiwgNjUsIDEsIDIxMiwgMjI4LCAyNDEsIDM1LCAKLSAgICA1NCwgOCwgNiwgMSwgMjE0LCAyNTUsIDgsIDUsIDEsIDIxNCwgMjU1LCA4LCA2LCAxLCAyMDcsIDE3NCwgMjM3LCAxNzEsIDgsIAotICAgIDUsIDEsIDIyOCwgMTMxLCAzLCAyMTYsIDc5LCAyMzYsIDExNiwgMjUsIDI0OCwgMTI0LCA4LCAxLCAyMTIsIDExNCwgMjQzLCAKLSAgICA4NSwgOCwgNiwgMSwgMjIzLCAxNjQsIDMsIDI0NCwgMjAsIDgsIDUsIDEsIDIyMywgMTY0LCAzLCAyNDQsIDIwLCA4LCA2LCAKLSAgICAxLCAyNDcsIDEyNiwgMywgMTQyLCA4LCA1LCAxLCAyNDcsIDEyNiwgMywgMTQyLCA4LCA1LCAxLCAyNDcsIDEyNiwgMywgCi0gICAgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjM3LCAxNzIsIDMsIDIxOSwgMTQyLCAxMTMsIDgsIDYsIDEsIDY2LCAzLCAyMzksIAotICAgIDE5OSwgOCwgNSwgMSwgNjYsIDMsIDIzOSwgMTk5LCA4LCA2LCAxLCAyNDAsIDE3NSwgMywgOTUsIDgsIDUsIDEsIDI0MCwgCi0gICAgMTc1LCAzLCA5NSwgOCwgNiwgMSwgMjA1LCAxODIsIDI1MSwgMTA5LCA4LCA1LCAxLCAyMDUsIDE4MiwgMjUxLCAxMDksIDgsIAotICAgIDYsIDEsIDIwNSwgMTgyLCAyMjAsIDczLCA4LCA1LCAxLCAyMDUsIDE4MiwgMjIwLCA3MywgOCwgNiwgMSwgMjA1LCAxODIsIAotICAgIDIwNywgMjQsIDgsIDUsIDEsIDIwNSwgMTgyLCAyMDcsIDI0LCA4LCA2LCAxLCAyMzksIDc2LCAzLCAyMjAsIDg5LCA5NSwgOCwgCi0gICAgNSwgMSwgMjM5LCA3NiwgMywgMjIwLCA4OSwgOTUsIDgsIDYsIDEsIDIzMCwgNTUsIDMsIDIyMCwgODksIDk1LCA4LCA1LCAxLCAKLSAgICAyMzAsIDU1LCAzLCAyMjAsIDg5LCA5NSwgOCwgNiwgMSwgMjIzLCAxNjQsIDMsIDIyMCwgODksIDk1LCA4LCA1LCAxLCAyMjMsIAotICAgIDE2NCwgMywgMjIwLCA4OSwgOTUsIDgsIDYsIDEsIDIxNywgMSwgMywgMjIwLCA4OSwgOTUsIDgsIDUsIDEsIDIxNywgMSwgMywgCi0gICAgMjIwLCA4OSwgOTUsIDgsIDYsIDEsIDIxNSwgOTQsIDMsIDIyMCwgODksIDk1LCA4LCA1LCAxLCAyMTUsIDk0LCAzLCAyMjAsIAotICAgIDg5LCA5NSwgOCwgNiwgMSwgMjM3LCAxNzIsIDMsIDExMywgOCwgNiwgMSwgMjE2LCA3MywgMTcxLCA3NCwgOCwgNiwgMSwgCi0gICAgMTMyLCAyMzksIDc1LCA4LCA2LCAxLCAyMjgsIDEzMSwgMywgMjQ4LCAxMjQsIDgsIDYsIDEsIDIwNywgMTc0LCAyMzAsIDU0LCAKLSAgICA4LCA2LCAxLCAyMDcsIDE3NCwgMjEwLCA2OSwgOCwgNiwgMSwgMjMwLCAxODUsIDMsIDI0NSwgMTI2LCA4LCA2LCAxLCAyNDYsIAotICAgIDE0MiwgOCwgNiwgMSwgMjQ4LCAxMDYsIDgsIDUsIDEsIDI0OCwgMTA2LCA4LCA2LCAxLCAyMjAsIDM2LCA4LCA1LCAxLCAKLSAgICAyMjAsIDM2LCA4LCAyNDEsIDQwLCAxLCAyMTIsIDE1NCwgNzUsIDY1LCAxLCA2LCAyMzcsIDE3MiwgMywgOTUsIDY1LCAxLCAKLSAgICA1LCAzMiwgMjIwLCA3MywgOCwgMSwgNSwgNiwgMjA3LCAxNzQsIDIyNiwgMTg1LCA4LCAyNDEsIDQwLCAxLCAyMTYsIDczLCAKLSAgICAyNDAsIDE3NCwgOCwgMjQxLCA0MCwgMSwgMjE2LCA3MywgMjE5LCAxODQsIDgsIDI0MSwgNDAsIDEsIDIzMCwgMjM5LCAyMjYsIAotICAgIDE4NSwgOCwgMjQxLCA0MCwgMSwgMjM1LCAyMDYsIDIyNywgMjAsIDgsIDI0MSwgNDAsIDEsIDI1MCwgMTI2LCAyMjYsIDE4NSwgCi0gICAgMjEwLCAxNDksIDIyMywgOTQsIDEsIDYzLCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgNzUsIDIxMCwgMTQ5LCAyMjMsIDk0LCAyLCAKLSAgICAyNDIsIDExLCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgNjgsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCA3NCwgMjEwLCAxNDksIAotICAgIDIyMywgOTQsIDEsIDc4LCAyMTAsIDE0OSwgMjIzLCA5NCwgMiwgMjM3LCA4NSwgMjEwLCAxNDksIDIyMywgOTQsIDEsIDIyOSwgCi0gICAgMjYsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyMjksIDExNSwgMjEwLCAxNDksIDIyMywgOTQsIDEsIDIzOCwgMzksIDIxMCwgCi0gICAgMTQ5LCAyMjMsIDk0LCAxLCAyMzgsIDkxLCAyMTAsIDE0OSwgMjIzLCA5NCwgMiwgMjUwLCAxODAsIDIxMCwgMTQ5LCAyMjMsIAotICAgIDk0LCAxLCAyNDUsIDI1NCwgMjEwLCAxNDksIDIyMywgOTQsIDEsIDI0NiwgMTE2LCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgCi0gICAgMjMwLCAxMDEsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyMzAsIDE0MywgMjEwLCAxNDksIDIyMywgOTQsIDEsIDIwNywgMjE4LCAKLSAgICAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjA3LCAyMjQsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyNDQsIDkwLCAyMTAsIDE0OSwgCi0gICAgMjIzLCA5NCwgMSwgMjQ0LCA5OSwgMjEwLCAxNDksIDIyMywgOTQsIDEsIDEzNSwgMjEwLCAxNDksIDIyMywgOTQsIDEsIAotICAgIDIwOSwgNDcsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyNDMsIDExMywgMjEwLCAxNDksIDIyMywgOTQsIDEsIDI0MywgMjM3LCAKLSAgICAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjIxLCAxOTEsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyMTgsIDY5LCAyMTAsIDE0OSwgCi0gICAgMjIzLCA5NCwgMSwgMjE4LCAxODAsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyNDgsIDIzLCAyMTAsIDE0OSwgMjIzLCA5NCwgCi0gICAgMSwgMjQ4LCA5MCwgMjEwLCAxNDksIDIyMywgOTQsIDEsIDIyNCwgODIsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyMTUsIAotICAgIDIyNywgMjEwLCAxNDksIDIyMywgOTQsIDEsIDIyNywgNDksIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyMTUsIDE3MSwgMjEwLCAKLSAgICAxNDksIDIyMywgOTQsIDEsIDIxMiwgMTMsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyMzYsIDEzNiwgMjEwLCAxNDksIDIyMywgCi0gICAgOTQsIDIyLCAyLCA2MywgMjEwLCAxNDksIDIyMywgOTQsIDIyLCAyLCA3NSwgMjEwLCAxNDksIDIyMywgOTQsIDIyLCAyLCAKLSAgICA2OCwgMjEwLCAxNDksIDIyMywgOTQsIDIyLCAyLCA3NCwgMjEwLCAxNDksIDIyMywgOTQsIDIyLCAyLCAyMjAsIDE4LCAyMTAsIAotICAgIDE0OSwgMjIzLCA5NCwgMjE4LCA2NCwgMjI1LCA5MiwgMjEwLCAxNDksIDIyMywgOTQsIDIxOCwgNjQsIDIyNSwgOTEsIDIxMCwgCi0gICAgMTQ5LCAyMjMsIDk0LCAyMTgsIDY0LCAyMjUsIDkwLCAyMTAsIDE0OSwgMjIzLCA5NCwgMjE4LCA2NCwgMjI1LCA4OSwgMTUzLCAKLSAgICAyMzEsIDMzLCAyMzksIDEzOCwgMTE4LCAyMTcsIDU1LCAxNTMsIDIzMSwgMzMsIDIzOSwgMTM4LCAxMTgsIDIzNywgMTM3LCAKLSAgICAxNTMsIDIzMSwgMzMsIDIzOSwgMTM4LCAxMjYsIDIxNywgNTMsIDE1MywgMjMxLCAzMywgMjM5LCAxMzgsIDExOCwgMjEyLCAKLSAgICA4MCwgMTUzLCAyMzEsIDMzLCAyMzksIDEzOCwgMTE4LCAyNDEsIDEzOCwgMTUzLCAyMzEsIDMzLCAyMzksIDEzOCwgMTI2LCAKLSAgICAyMTIsIDc5LCAxNTMsIDIzMSwgMzMsIDIxNywgNTYsIDgyLCAxNTMsIDIzMSwgMzMsIDIxOCwgOTYsIDgyLCAxNTMsIDIzMSwgCi0gICAgMzMsIDIxNSwgMTIwLCA4MiwgMTUzLCAyMzEsIDMzLCAyMTcsIDU3LCA4MiwgMjE4LCAyMDQsIDEsIDE3MywgMjE4LCAyMDQsIAotICAgIDEsIDIyOSwgMTQ0LCAyMTgsIDIwNCwgMSwgMjM5LCA4LCAyMTgsIDIwNCwgMSwgMjIyLCAyMDMsIDIxOCwgMjA0LCAxLCAKLSAgICAyNDcsIDkyLCAyMTgsIDIwNCwgMSwgMjQ2LCAxOTksIDIxOCwgMjA0LCAxLCAyMzAsIDE4MSwgMjE4LCAyMDQsIDEsIDIyMSwgCi0gICAgMTEsIDIxOCwgMjA0LCAxLCAyMTAsIDIyLCAyMTgsIDIwNCwgMSwgMjA5LCAxMDgsIDIxOCwgMjA0LCAxLCAyNDQsIDIxMiwgCi0gICAgMjE4LCAyMDQsIDEsIDIwMSwgMjAxLCAyMTgsIDIwNCwgMSwgMTg1LCAyMTgsIDIwNCwgMSwgMjE4LCAyMDgsIDIxOCwgMjA0LCAKLSAgICAxLCAyNDksIDMyLCAyMTgsIDIwNCwgMSwgMTkyLCAyMTgsIDIwNCwgMSwgMjA4LCAyMCwgMjE4LCAyMDQsIDEsIDIwOCwgMTAsIAotICAgIDIxOCwgMjA0LCAxLCAyNDEsIDI1NSwgMjE4LCAyMDQsIDEsIDIwNCwgMTExLCAyMTgsIDIwNCwgMSwgMjAyLCA4MCwgMjE4LCAKLSAgICAyMDQsIDEsIDIwMiwgMTE2LCAyMTgsIDIwNCwgMSwgNSwgNjMsIDIxOCwgMjA0LCAxLCAxOTgsIDIxOCwgMjA0LCAxLCAyMTYsIAotICAgIDIyMCwgMjE4LCAyMDQsIDEsIDIyOCwgMTEzLCAyMTgsIDIwNCwgMSwgMjEzLCA5MCwgMjE4LCAyMDQsIDEsIDIxNSwgMzYsIAotICAgIDIxOCwgMjA0LCAxLCAxNTIsIDIxOCwgMjA0LCAxLCA2MywgMjE4LCAyMDQsIDEsIDc1LCAyMTgsIDIwNCwgMSwgNjgsIDIxOCwgCi0gICAgMjA0LCAxLCA3NCwgMjE4LCAyMDQsIDEsIDc4LCAyMTgsIDIwNCwgMSwgMjE3LCAxMjYsIDIxOCwgMjA0LCAxLCAyMDMsIAotICAgIDE4MiwgMjE4LCAyMDQsIDEsIDI0MCwgMTA4LCAyMTgsIDIwNCwgMSwgMjM4LCAxNTUsIDIxOCwgMjA0LCAxLCAyNDEsIDE2MSwgCi0gICAgMjE4LCAyMDQsIDIxMCwgMjU0LCAxLCAyMDQsIDExMSwgMjE4LCAyMDQsIDIxMCwgMjU0LCAxLCAxOTgsIDIxOCwgMjA0LCAxLCAKLSAgICAyMDcsIDI0MSwgMjE4LCAyMDQsIDEsIDIwNywgMjI5LCAyMTgsIDIwNCwgMSwgMjQ0LCAxMjAsIDIxOCwgMjA0LCAxLCAyMjEsIAotICAgIDIyNywgMjE4LCAyMDQsIDEsIDI1MCwgMjU1LCAxOTgsIDIxOCwgMjA0LCAxLCAyMDUsIDE4NSwgMjEzLCA5MCwgMjE4LCAKLSAgICAyMDQsIDEsIDIwNSwgMTg2LCAxNTIsIDIxOCwgMjA0LCAxLCAyNTAsIDY2LCAyNDAsIDEwOCwgMjE4LCAyMDQsIDIxMCwgCi0gICAgMjU0LCAxLCAyMTYsIDIyMCwgMjE4LCAyMDQsIDIxMCwgMjAxLCAxLCAyMTYsIDIyMCwgMjE4LCAyMDQsIDEsIDI0NywgNTIsIAotICAgIDIxOCwgMjA0LCAyMTIsIDEyMCwgMjM3LCA2NSwgODIsIDIxOCwgMjA0LCA1MiwgMjM3LCA2NSwgODIsIDIxOCwgMjA0LCAKLSAgICAxMzEsIDIxMywgODIsIDIxOCwgMjA0LCAxMzEsIDUyLCAyMTMsIDgyLCAyMTQsIDIxNSwgMiwgMjUwLCAxODAsIDIxNCwgCi0gICAgMjE1LCAyLCAyMDUsIDE5OSwgMjE0LCAyMTUsIDEsIDYzLCAyMTQsIDIxNSwgMSwgMjUyLCAyNSwgMjE0LCAyMTUsIDEsIDc1LCAKLSAgICAyMTQsIDIxNSwgMSwgMjMxLCA4MywgMjE0LCAyMTUsIDEsIDY4LCAyMTQsIDIxNSwgMSwgMjA2LCAxNzgsIDIxNCwgMjE1LCAKLSAgICAxLCAxMjUsIDE0NiwgMjE0LCAyMTUsIDEsIDEyNSwgMjE1LCAxODYsIDIxNCwgMjE1LCAxLCAxMjUsIDE1OSwgMjE0LCAyMTUsIAotICAgIDEsIDEyNSwgMjI3LCA3OCwgMjE0LCAyMTUsIDEsIDc0LCAyMTQsIDIxNSwgMSwgMjQxLCAxNjEsIDIxNCwgMjE1LCAxLCAKLSAgICAyNTEsIDY0LCAyMTQsIDIxNSwgMSwgNzgsIDIxNCwgMjE1LCAxLCAyMjAsIDE4LCAyMTQsIDIxNSwgMSwgMjUwLCAzNCwgCi0gICAgMjE0LCAyMTUsIDEsIDE3MywgMjE0LCAyMTUsIDEsIDIyOSwgMTQ0LCAyMTQsIDIxNSwgMSwgMjM5LCA4LCAyMTQsIDIxNSwgCi0gICAgMSwgMjM4LCAxMTksIDIxNCwgMjE1LCAxLCAyMjIsIDIwMywgMjE0LCAyMTUsIDEsIDI0NywgOTIsIDIxNCwgMjE1LCAxLCAKLSAgICAyNDYsIDE5OSwgMjE0LCAyMTUsIDEsIDIzMCwgMTgxLCAyMTQsIDIxNSwgMSwgMjMwLCAxNDksIDIxNCwgMjE1LCAxLCAyMjEsIAotICAgIDExLCAyMTQsIDIxNSwgMSwgMjA3LCAyNDEsIDIxNCwgMjE1LCAxLCAyMDcsIDIyOSwgMjE0LCAyMTUsIDEsIDI0NCwgMTIwLCAKLSAgICAyMTQsIDIxNSwgMSwgMjQ0LCAxMDQsIDIxNCwgMjE1LCAxLCAyMjEsIDIyNywgMjE0LCAyMTUsIDEsIDIxMCwgMjIsIDIxNCwgCi0gICAgMjE1LCAxLCAyMDksIDEwOCwgMjE0LCAyMTUsIDEsIDI0NCwgMjEyLCAyMTQsIDIxNSwgMSwgMjQ0LCAxLCAyMTQsIDIxNSwgCi0gICAgMSwgMjAxLCAyMDEsIDIxNCwgMjE1LCAxLCAxODUsIDIxNCwgMjE1LCAxLCAyMTgsIDIwOCwgMjE0LCAyMTUsIDEsIDI0OSwgCi0gICAgMzIsIDIxNCwgMjE1LCAxLCAyNDgsIDk4LCAyMTQsIDIxNSwgMSwgMTkyLCAyMTQsIDIxNSwgMSwgMTk4LCAyMTQsIDIxNSwgCi0gICAgMSwgMjE2LCAyMjAsIDIxNCwgMjE1LCAxLCAyMjgsIDExMywgMjE0LCAyMTUsIDEsIDIwNiwgODYsIDIxNCwgMjE1LCAxLCAKLSAgICAyMTMsIDkwLCAyMTQsIDIxNSwgMSwgMjExLCAxNjQsIDIxNCwgMjE1LCAxLCAyMTUsIDM2LCAyMTQsIDIxNSwgMSwgMTUyLCAKLSAgICAyMTQsIDIxNSwgMSwgMjI3LCA3NywgMjE0LCAyMTUsIDEwOSwgMiwgMjM3LCAxNTUsIDIxNCwgMjE1LCAyMiwgMiwgMjUyLCAKLSAgICAyNSwgMjE0LCAyMTUsIDIyLCAyLCA3NSwgMjE0LCAyMTUsIDIyLCAyLCAyMzEsIDgzLCAyMTQsIDIxNSwgMjIsIDIsIDY4LCAKLSAgICAyMTQsIDIxNSwgMjIsIDIsIDIwNiwgMTc4LCAyMTQsIDIxNSwgMjIsIDIsIDEyNSwgMTQ2LCAyMTQsIDIxNSwgMjIsIDIsIAotICAgIDEyNSwgMjE1LCAxODYsIDIxNCwgMjE1LCAyMiwgMiwgMTI1LCAxNTksIDIxNCwgMjE1LCAyMiwgMiwgMTI1LCAyMjcsIDc4LCAKLSAgICAyMTQsIDIxNSwgMjIsIDIsIDc0LCAyMTQsIDIxNSwgMjIsIDIsIDI0MSwgMTYxLCAyMTQsIDIxNSwgMjIsIDIsIDI1MSwgNjQsIAotICAgIDIxNCwgMjE1LCAyMiwgMiwgNzgsIDIxNCwgMjE1LCAyMiwgMiwgMjIwLCAxOCwgMjE0LCAyMTUsIDIyLCAyLCAyNTAsIDM0LCAKLSAgICAyMTQsIDIxNSwgMiwgMjA1LCAyMDQsIDIxNCwgMjE1LCAyNDQsIDE2NiwgMjE0LCAyMTUsIDUyLCAyNDQsIDE2NiwgMjE0LCAKLSAgICAyMTUsIDE3LCAyMDIsIDg0LCAyMTQsIDIxNSwgMTcsIDEwNSwgMjE0LCAyMTUsIDE3LCAxMDgsIDIxNCwgMjE1LCAxNywgCi0gICAgMTQ3LCAyMTQsIDIxNSwgMTcsIDE0OSwgMjE0LCAyMTUsIDE3LCAxNzAsIDIxNCwgMjE1LCAxNywgMTk1LCAyMTQsIDIxNSwgCi0gICAgMTcsIDIxMywgMTExLCAyMTQsIDIxNSwgMTcsIDE5OSwgMjE0LCAyMTUsIDE3LCAyMjIsIDYzLCAzOSwgOTIsIDE3LCAyMDIsIAotICAgIDg0LCAzOSwgOTIsIDE3LCAxMDUsIDM5LCA5MiwgMTcsIDEwOCwgMzksIDkyLCAxNywgMTQ3LCAzOSwgOTIsIDE3LCAxNDksIAotICAgIDM5LCA5MiwgMTcsIDE3MCwgMzksIDkyLCAxNywgMTk1LCAzOSwgOTIsIDE3LCAyMTMsIDExMSwgMzksIDkyLCAxNywgMTk5LCAKLSAgICAzOSwgOTIsIDE3LCAyMjIsIDYzLCAzOSwgOTIsIDEsIDYzLCAzOSwgOTIsIDEsIDY4LCAzOSwgOTIsIDEsIDE3MywgMzksIAotICAgIDkyLCAxLCAyMDEsIDIwMSwgMzksIDkyLCAxLCAxODUsIDM5LCA5MiwgMSwgMjE2LCAyMjAsIDM5LCA5MiwgMSwgMjA1LCAKLSAgICAyMzAsIDM5LCA5MiwgMiwgMjUwLCAxNywgOTIsIDIsIDIxMSwgMjI3LCAyNDcsIDUyLCA5MiwgMiwgMjQ3LCA1MywgMjA1LCAKLSAgICAyMDQsIDkyLCAyLCA1MiwgMjQ3LCA1MywgMjA1LCAyMDQsIDkyLCAyLCAyNDcsIDUzLCAxMDgsIDkyLCAyLCAyNDcsIDUzLCAKLSAgICAxNDcsIDkyLCAyLCAyNDcsIDUzLCAyNTAsIDE3LCA5MiwgMiwgMjE3LCAxNjIsIDkyLCAyMzgsIDIyOCwgMjQwLCA3LCA5MiwgCi0gICAgMjQ3LCAzMywgOTIsIDIzNywgNTgsIDkyLCAyLCAyMTIsIDE1NywgOTIsIDIzMCwgMTczLCAyMjAsIDM5LCAyMjksIDIwNywgCi0gICAgMjI3LCAxNDksIDE3LCAyMDIsIDg0LCAyMjksIDIwNywgMjI3LCAxNDksIDE3LCAxMDUsIDIyOSwgMjA3LCAyMjcsIDE0OSwgCi0gICAgMTcsIDEwOCwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxNywgMTQ3LCAyMjksIDIwNywgMjI3LCAxNDksIDE3LCAxNDksIDIyOSwgCi0gICAgMjA3LCAyMjcsIDE0OSwgMTcsIDE3MCwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxNywgMTk1LCAyMjksIDIwNywgMjI3LCAxNDksIAotICAgIDE3LCAyMTMsIDExMSwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxNywgMTk5LCAyMjksIDIwNywgMjI3LCAxNDksIDE3LCAyMjIsIAotICAgIDYzLCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDE3MywgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAyMjksIDE0NCwgMjI5LCAKLSAgICAyMDcsIDIyNywgMTQ5LCAxLCAyMzksIDgsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMjIyLCAyMDMsIDIyOSwgMjA3LCAyMjcsIAotICAgIDE0OSwgMSwgMjE1LCAzNiwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAyMTMsIDkwLCAyMjksIDIwNywgMjI3LCAxNDksIDEsIAotICAgIDIwMiwgMTE2LCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDIyMSwgMTEsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMjEwLCAyMiwgCi0gICAgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAyMzYsIDMwLCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDIwMSwgMjAxLCAyMjksIAotICAgIDIwNywgMjI3LCAxNDksIDEsIDE4NSwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAyMTgsIDIwOCwgMjI5LCAyMDcsIDIyNywgCi0gICAgMTQ5LCAxLCAxOTIsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMjQ0LCAyMTIsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMjQ5LCAKLSAgICAzMiwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAyMTYsIDIyMCwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAxOTgsIDIyOSwgCi0gICAgMjA3LCAyMjcsIDE0OSwgMSwgMjI4LCAxMTMsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMjA0LCAxMTEsIDIyOSwgMjA3LCAKLSAgICAyMjcsIDE0OSwgMSwgMjA5LCAxMDgsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMTUyLCAyMjksIDIwNywgMjI3LCAxNDksIDEsIAotICAgIDIwNiwgODYsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMjQ3LCA5MiwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCA2MywgMjI5LCAKLSAgICAyMDcsIDIyNywgMTQ5LCAxLCAyMjAsIDczLCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDc1LCAyMjksIDIwNywgMjI3LCAxNDksIAotICAgIDEsIDIyMCwgMTgsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMjIsIDIwNywgMjQsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMjIsIDc0LCAKLSAgICAyMjksIDIwNywgMjI3LCAxNDksIDIyLCA2OCwgMjI5LCAyMDcsIDIyNywgMTQ5LCAyMiwgMjQxLCAxNjEsIDIyOSwgMjA3LCAKLSAgICAyMjcsIDE0OSwgMjIsIDc4LCAyMjksIDIwNywgMjI3LCAxNDksIDE0MywgMjE4LCA4NCwgMjI5LCAyMDcsIDIyNywgMTQ5LCAKLSAgICAxNDMsIDI0NywgNjgsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMTQzLCAyNDcsIDY5LCAyMTgsIDg0LCAyMjksIDIwNywgMjI3LCAKLSAgICAxNDksIDIsIDI0NSwgNzAsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMiwgMjEyLCAxNzAsIDIxNiwgMTE5LCAxLCAxNzMsIDIxNiwgCi0gICAgMTE5LCAxLCAyMzksIDgsIDIxNiwgMTE5LCAxLCAyMjIsIDIwMywgMjE2LCAxMTksIDEsIDIxMCwgMjIsIDIxNiwgMTE5LCAxLCAKLSAgICAyNDQsIDIxMiwgMjE2LCAxMTksIDEsIDIwMSwgMjAxLCAyMTYsIDExOSwgMSwgMTg1LCAyMTYsIDExOSwgMSwgMjQ5LCAzMiwgCi0gICAgMjE2LCAxMTksIDEsIDE5MiwgMjE2LCAxMTksIDEsIDI0NywgOTIsIDIxNiwgMTE5LCAxLCAyMzAsIDE4MSwgMjE2LCAxMTksIAotICAgIDEsIDIyMSwgMTEsIDIxNiwgMTE5LCAxLCAyMTUsIDM2LCAyMTYsIDExOSwgMSwgMjE2LCAyMjAsIDIxNiwgMTE5LCAxLCAKLSAgICAyMjgsIDExMywgMjE2LCAxMTksIDEsIDE5OCwgMjE2LCAxMTksIDEsIDIwNCwgMTExLCAyMTYsIDExOSwgMSwgMTUyLCAyMTYsIAotICAgIDExOSwgMSwgMjI1LCA1NCwgMjE2LCAxMTksIDEsIDIyMiwgMTgyLCAyMTYsIDExOSwgMSwgMjIzLCAyNSwgMjE2LCAxMTksIAotICAgIDEsIDIyMCwgMjM0LCAyMTYsIDExOSwgMSwgNjMsIDIxNiwgMTE5LCAyMiwgMiwgNzUsIDIxNiwgMTE5LCAyMiwgMiwgNjgsIAotICAgIDIxNiwgMTE5LCAyMiwgMiwgNzQsIDIxNiwgMTE5LCAyMiwgMiwgMjUxLCA2NCwgMjE2LCAxMTksIDIyLCAyLCA3OCwgMjE2LCAKLSAgICAxMTksIDIyLCAyLCAyNTAsIDM0LCAyMTYsIDExOSwgMjIsIDIsIDI0MCwgMjM4LCAyMTYsIDExOSwgMjIsIDIsIDI0MSwgCi0gICAgMTg5LCAyMTYsIDExOSwgMTA5LCAyLCAyMjIsIDIwNSwgMjE2LCAxMTksIDEwOSwgMiwgMjIzLCAxNjMsIDIxNiwgMTE5LCAKLSAgICAxMDksIDIsIDE0NiwgMjE2LCAxMTksIDEwOSwgMiwgMjM3LCAxNzEsIDIxNiwgMTE5LCAyMDUsIDIwNCwgMjE2LCAxMTksIAotICAgIDIxNCwgMTY4LCA4MiwgMjgsIDEyMywgMjA4LCAyMzYsIDI4LCAxMjMsIDIwOCwgMjM1LCAyOCwgMTIzLCAyMDgsIDIzMywgCi0gICAgMjgsIDEyMywgMjA4LCAyMzgsIDI4LCAxMjMsIDIxNiwgNDIsIDI4LCAxMjMsIDIxNiwgMjYsIDI4LCAxMjMsIDIxNiwgMjEsIAotICAgIDI4LCAxMjMsIDIxNiwgMjMsIDI4LCAxMjMsIDIxNiwgMzksIDI4LCAxMjMsIDIxNiwgMzIsIDI4LCAxMjMsIDIxNiwgMjUsIAotICAgIDI4LCAxMjMsIDIxNiwgNDQsIDI4LCAxMjMsIDIxNiwgMjcsIDI4LCAxMjMsIDIxNiwgNDYsIDI4LCAxMjMsIDIxNiwgNDMsIAotICAgIDI4LCAxMjMsIDIyNCwgMTM3LCAyOCwgMTIzLCAyMjQsIDEyOCwgMjgsIDEyMywgMjI0LCAxMzEsIDI4LCAxMjMsIDIxOCwgCi0gICAgMTM4LCAyOCwgMTIzLCAyMTgsIDE0OSwgMjgsIDEyMywgMjE4LCAxNTAsIDI4LCAxMjMsIDIxMSwgMTQ4LCAyOCwgMTIzLCAKLSAgICAyMzEsIDk2LCAyOCwgMTIzLCAyMzEsIDEwMywgMjgsIDEyMywgMjExLCAxNTksIDI4LCAxMjMsIDIxMSwgMTQ2LCAyOCwgCi0gICAgMTIzLCAyMTgsIDE4OSwgMjgsIDEyMywgMjM2LCAyNDYsIDI4LCAxMjMsIDIxMSwgMTQzLCAxOTAsIDIsIDIxOSwgMTAyLCAKLSAgICAxOTAsIDIsIDI0NiwgMjM1LCAxOTAsIDIsIDIyNywgMjQyLCAxOTAsIDIsIDIwNCwgMjAsIDE5MCwgMSwgNjMsIDE5MCwgMSwgCi0gICAgMjM1LCAyMDYsIDIyOSwgMjExLCAxOTAsIDEsIDc1LCAxOTAsIDEsIDIzMSwgODMsIDE5MCwgMSwgNjgsIDE5MCwgMSwgMjE5LCAKLSAgICAxNjksIDI0NiwgMjA1LCAxOTAsIDEsIDIyMiwgMjA0LCAyMjcsIDIwMSwgMTkwLCAxLCAyMjIsIDIwNCwgMjI3LCAyMDIsIAotICAgIDIxNiwgMTczLCAxOTAsIDEsIDc0LCAxOTAsIDEsIDI1MSwgNjQsIDE5MCwgMSwgNzgsIDE5MCwgMSwgMTczLCAxOTAsIDEsIAotICAgIDIzMCwgNDQsIDIxNCwgMjI3LCAxOTAsIDEsIDIzMCwgNDQsIDIyMywgMjA1LCAxOTAsIDEsIDIzOSwgOCwgMTkwLCAxLCAKLSAgICAyMzksIDksIDIyMywgMjA1LCAxOTAsIDEsIDIyMiwgMjAzLCAxOTAsIDEsIDI0NywgOTIsIDE5MCwgMSwgMjQ3LCA5MywgCi0gICAgMjIzLCAyMDUsIDE5MCwgMSwgMjMwLCAxODEsIDE5MCwgMSwgMjIxLCAxMiwgMjIzLCAyMDUsIDE5MCwgMSwgMjMwLCAxODIsIAotICAgIDIyNSwgMTQ0LCAxOTAsIDEsIDIyMSwgMTEsIDE5MCwgMSwgMjA3LCAyNDEsIDE5MCwgMSwgMjA3LCAyNDIsIDIyNSwgMTQ0LCAKLSAgICAxOTAsIDEsIDI0NCwgMTIwLCAxOTAsIDEsIDI0NCwgMTIxLCAyMjUsIDE0NCwgMTkwLCAxLCAyMjMsIDExMSwgMjIzLCAyMDUsIAotICAgIDE5MCwgMSwgMjEwLCAyMiwgMTkwLCAxLCAyMTAsIDIzLCAyMjMsIDIwNSwgMTkwLCAxLCAyNDQsIDIxMiwgMTkwLCAxLCAKLSAgICAyNDQsIDIxMywgMjI1LCAxNDQsIDE5MCwgMSwgMjAxLCAyMDEsIDE5MCwgMSwgMTg1LCAxOTAsIDEsIDIxOSwgMTY5LCAyMjMsIAotICAgIDIwNSwgMTkwLCAxLCAyNDksIDMyLCAxOTAsIDEsIDI0OSwgMzMsIDIyMywgMjA1LCAxOTAsIDEsIDE5MiwgMTkwLCAxLCAKLSAgICAxOTgsIDE5MCwgMSwgMjE2LCAyMjAsIDE5MCwgMSwgMjE2LCAyMjEsIDI1MSwgNzQsIDE5MCwgMSwgMjI4LCAxMTMsIDE5MCwgCi0gICAgMSwgMjA0LCAxMTEsIDE5MCwgMSwgMjE1LCAzNywgMjIzLCAyMDUsIDE5MCwgMSwgMjE1LCAzNywgMjI1LCAxNDQsIDE5MCwgCi0gICAgMSwgMjE1LCAzNiwgMTkwLCAxLCAxNTIsIDE5MCwgMiwgMjQ2LCAyMzYsIDIwOSwgMTU1LCAxOTAsIDIyLCAyLCAyMDksIAotICAgIDIxNCwgMTkwLCAyMiwgMiwgMjA4LCAxNjYsIDE5MCwgMjIsIDIsIDIwMywgMjExLCAxOTAsIDIyLCAyLCAyMDMsIDIxMiwgCi0gICAgMjI0LCAyNTEsIDE5MCwgMjIsIDIsIDIxMCwgMjI0LCAxOTAsIDIyLCAyLCAyMTAsIDIyNSwgMjI0LCAyMzksIDE5MCwgMjIsIAotICAgIDIsIDIwOSwgMjM1LCAxOTAsIDIyLCAyLCAyNDMsIDE2MywgMjIzLCAyMDQsIDE5MCwgMjIsIDIsIDIxOCwgMjQ5LCAxOTAsIAotICAgIDEwOSwgMiwgMjI5LCAxNzMsIDE5MCwgMTA5LCAyLCAyMTksIDYsIDE5MCwgMTA5LCAyLCAyNDcsIDc3LCAxOTAsIDIxOSwgCi0gICAgMTE1LCAxOTAsIDQ5LCAyMTYsIDkzLCAxOTAsIDUwLCAyMTYsIDkzLCAxOTAsIDIxOSwgMTU4LCAyNTAsIDIyNSwgMTkwLCAKLSAgICAyMTksIDE1OCwgMjI1LCAxNjIsIDE5MCwgMjE5LCAxNTgsIDIyNiwgMjI2LCAxOTAsIDIxOSwgMTU4LCAyMDQsIDE0LCAxOTAsIAotICAgIDIxOSwgMTU4LCAyMTksIDExNiwgMTkwLCAyMTksIDE1OCwgMjI3LCAxMDYsIDE5MCwgMjE5LCAxNTgsIDIyNiwgMjIwLCAKLSAgICAxOTAsIDIxOSwgMTU4LCAyNTEsIDExNiwgMTkwLCAyMTksIDE1OCwgMjUxLCAxMTcsIDI1MSwgMTE2LCAxOTAsIDIxOSwgCi0gICAgMTU4LCAyMTgsIDEwNywgMTkwLCAyMDcsIDE3NCwgMjE5LCAxNTgsIDIxOCwgMTA3LCAxOTAsIDIxOSwgMTExLCAxOTAsIDE3LCAKLSAgICAyMDIsIDg0LCAxOTAsIDE3LCAxMDUsIDE5MCwgMTcsIDEwOCwgMTkwLCAxNywgMTQ3LCAxOTAsIDE3LCAxNDksIDE5MCwgMTcsIAotICAgIDE3MCwgMTkwLCAxNywgMTk1LCAxOTAsIDE3LCAyMTMsIDExMSwgMTkwLCAxNywgMTk5LCAxOTAsIDE3LCAyMjIsIDYzLCAKLSAgICAxOTAsIDIxOSwgMTU4LCAyMDgsIDIwMiwgMjA3LCAxODksIDE5MCwgMjE5LCAxNTgsIDIzMCwgMjExLCA2OSwgMSwgMjEzLCAKLSAgICA2NywgMjM4LCAxMTksIDY5LCAxLCAyMTMsIDY3LCAyNDYsIDE5OSwgNjksIDEsIDIxMywgNjcsIDIzMCwgMTQ5LCA2OSwgMSwgCi0gICAgMjEzLCA2NywgMjIxLCAyMjcsIDY5LCAxLCAyMTMsIDY3LCAyNDgsIDk4LCA2OSwgMiwgMjEzLCA2NywgMjE0LCAyMTMsIDY5LCAKLSAgICA2NSwgMSwgMjEzLCA2NywgMjE2LCAxMzYsIDY5LCAxLCA0NSwgMjI4LCA4NSwgMjIxLCAxMSwgNjksIDEsIDQ1LCAyMjgsIAotICAgIDg1LCAyNDAsIDEwOCwgNjksIDEsIDQ1LCAyMjgsIDg1LCAyMzksIDgsIDY5LCAxLCA0NSwgMjI4LCA4NSwgMjM4LCAxMTksIAotICAgIDY5LCAxLCA0NSwgMjI4LCA4NSwgMjMwLCAxODEsIDY5LCAxLCA0NSwgMjI4LCA4NSwgMjMwLCAxNDksIDY5LCAxLCA0NSwgCi0gICAgMjI4LCA4NSwgMjQ0LCAxMjAsIDY5LCAxLCA0NSwgMjI4LCA4NSwgMjQ0LCAxMDQsIDY5LCAxLCA0NSwgMjI4LCA4NSwgMjIxLCAKLSAgICAyMjcsIDY5LCA0NSwgMjI4LCA4NSwgMTcsIDIwMiwgODQsIDY5LCA0NSwgMjI4LCA4NSwgMTcsIDEwNSwgNjksIDQ1LCAyMjgsIAotICAgIDg1LCAxNywgMTA4LCA2OSwgNDUsIDIyOCwgODUsIDE3LCAxNDcsIDY5LCA0NSwgMjI4LCA4NSwgMTcsIDE0OSwgNjksIDQ1LCAKLSAgICAyMjgsIDg1LCAxNywgMTcwLCA2OSwgNDUsIDIyOCwgODUsIDE3LCAxOTUsIDY5LCA0NSwgMjI4LCA4NSwgMTcsIDIxMywgCi0gICAgMTExLCA2OSwgNDUsIDIyOCwgODUsIDE3LCAxOTksIDY5LCA0NSwgMjI4LCA4NSwgMTcsIDIyMiwgNjMsIDY5LCAxLCA0NSwgCi0gICAgMjI4LCA4NSwgMjI3LCA3NywgNjksIDEsIDQ1LCAyMjgsIDg1LCAyNDQsIDIxMiwgNjksIDEsIDQ1LCAyMjgsIDg1LCAyNDQsIAotICAgIDEsIDY5LCAxLCA0NSwgMjI4LCA4NSwgMjQ5LCAzMiwgNjksIDEsIDQ1LCAyMjgsIDg1LCAyNDgsIDk4LCAyNDYsIDE5MiwgMSwgCi0gICAgNjMsIDI0NiwgMTkyLCAxLCA3NSwgMjQ2LCAxOTIsIDEsIDY4LCAyNDYsIDE5MiwgMSwgNzQsIDI0NiwgMTkyLCAxLCAyNTEsIAotICAgIDY0LCAyNDYsIDE5MiwgMSwgNzgsIDI0NiwgMTkyLCAxLCAxNzMsIDI0NiwgMTkyLCAxLCAyMjksIDE0NCwgMjQ2LCAxOTIsIAotICAgIDEsIDIzOSwgOCwgMjQ2LCAxOTIsIDEsIDIzOCwgMTE5LCAyNDYsIDE5MiwgMSwgMjIyLCAxMTIsIDI0NiwgMTkyLCAxLCAKLSAgICAyMjIsIDIwMywgMjQ2LCAxOTIsIDEsIDI0NiwgMTk5LCAyNDYsIDE5MiwgMSwgMjQ2LCAxNDQsIDI0NiwgMTkyLCAxLCAyMzAsIAotICAgIDE4MSwgMjQ2LCAxOTIsIDEsIDIzMCwgMTQ5LCAyNDYsIDE5MiwgMSwgMjIyLCAxMDIsIDI0NiwgMTkyLCAxLCAyMjIsIDEwNCwgCi0gICAgMjQ2LCAxOTIsIDEsIDIyMiwgMTAzLCAyNDYsIDE5MiwgMSwgMjEwLCAyMiwgMjQ2LCAxOTIsIDEsIDIwOSwgMTA4LCAyNDYsIAotICAgIDE5MiwgMSwgMjQ0LCAyMTIsIDI0NiwgMTkyLCAxLCAyNDQsIDEsIDI0NiwgMTkyLCAxLCAyMjEsIDUzLCAyNDYsIDE5MiwgMSwgCi0gICAgMjAxLCAyMDEsIDI0NiwgMTkyLCAxLCAyNDQsIDEyMCwgMjQ2LCAxOTIsIDEsIDE4NSwgMjQ2LCAxOTIsIDEsIDIxOCwgMTIsIAotICAgIDI0NiwgMTkyLCAxLCAyMTgsIDIwOCwgMjQ2LCAxOTIsIDEsIDI0OSwgMzIsIDI0NiwgMTkyLCAxLCAyNDgsIDk4LCAyNDYsIAotICAgIDE5MiwgMSwgMjIzLCAyMzgsIDI0NiwgMTkyLCAxLCAxOTIsIDI0NiwgMTkyLCAxLCAyNDgsIDE5OCwgMjQ2LCAxOTIsIDEsIAotICAgIDE5OCwgMjQ2LCAxOTIsIDEsIDIxNiwgMjIwLCAyNDYsIDE5MiwgMSwgMjI4LCAxMTMsIDI0NiwgMTkyLCAxLCAyMDYsIDg2LCAKLSAgICAyNDYsIDE5MiwgMSwgMjExLCAxNjQsIDI0NiwgMTkyLCAxLCAyMTUsIDM2LCAyNDYsIDE5MiwgMSwgMTUyLCAyNDYsIDE5MiwgCi0gICAgMjIsIDIsIDI1MiwgMjUsIDI0NiwgMTkyLCAyMiwgMiwgNzUsIDI0NiwgMTkyLCAyMiwgMiwgMjMxLCA4MywgMjQ2LCAxOTIsIAotICAgIDIyLCAyLCAyNDEsIDE0NSwgMjQ2LCAxOTIsIDIyLCAyLCA2OCwgMjQ2LCAxOTIsIDIyLCAyLCAyMjAsIDczLCAyNDYsIDE5MiwgCi0gICAgMjIsIDIsIDc4LCAyNDYsIDE5MiwgMjIsIDIsIDI1MSwgNjQsIDI0NiwgMTkyLCAyMiwgMiwgMjUwLCAzNCwgMjQ2LCAxOTIsIAotICAgIDIyLCAyLCAyMDcsIDI0LCAyNDYsIDE5MiwgMTA5LCAyLCAxOTgsIDI0NiwgMTkyLCAxMDksIDIsIDIxNiwgMjIwLCAyNDYsIAotICAgIDE5MiwgMTA5LCAyLCAyMjgsIDExMywgMjQ2LCAxOTIsIDEwOSwgMiwgMjA0LCAxMTEsIDI0NiwgMTkyLCAxLCA0NiwgMjMwLCAKLSAgICA1NCwgMjQ2LCAxOTIsIDEsIDQ2LCAyMzksIDc1LCAyNDYsIDE5MiwgMSwgNDYsIDIyMiwgMjA1LCAyNDYsIDE5MiwgMTA5LCAKLSAgICAyLCA0NiwgMjIyLCAyMDUsIDI0NiwgMTkyLCAxLCA0NiwgMjQ2LCAyMDAsIDI0NiwgMTkyLCAxLCA0NiwgMjEwLCA2OSwgCi0gICAgMjQ2LCAxOTIsIDEsIDQ2LCAyMjMsIDE2MywgMjQ2LCAxOTIsIDEsIDQ2LCAyMTksIDE4NCwgMjQ2LCAxOTIsIDEsIDQ2LCAKLSAgICAyMDMsIDEyNCwgMjQ2LCAxOTIsIDEsIDQ2LCAxNDYsIDI0NiwgMTkyLCAxLCA0NiwgMTU5LCAyNDYsIDE5MiwgMSwgNDYsIAotICAgIDIxMSwgMTY3LCAyNDYsIDE5MiwgMTA5LCAyLCA0NiwgMjI2LCAxODUsIDI0NiwgMTkyLCAxMDksIDIsIDQ2LCAyMzcsIDE3MSwgCi0gICAgMjQ2LCAxOTIsIDE3LCAyMDIsIDg0LCAyNDYsIDE5MiwgMTcsIDEwNSwgMjQ2LCAxOTIsIDE3LCAxMDgsIDI0NiwgMTkyLCAKLSAgICAxNywgMTQ3LCAyNDYsIDE5MiwgMTcsIDE0OSwgMjQ2LCAxOTIsIDE3LCAxNzAsIDI0NiwgMTkyLCAxNywgMTk1LCAyNDYsIAotICAgIDE5MiwgMTcsIDIxMywgMTExLCAyNDYsIDE5MiwgMTcsIDE5OSwgMjQ2LCAxOTIsIDE3LCAyMjIsIDYzLCAyNDYsIDE5MiwgCi0gICAgMjE3LCAxNzksIDIxMSwgMjAxLCAyNDYsIDE5MiwgMjE3LCAxNzksIDI0NCwgMTY2LCAyNDYsIDE5MiwgMjE3LCAxNzksIDUyLCAKLSAgICAyNDQsIDE2NiwgMjQ2LCAxOTIsIDIxNywgMTc5LCAyMDgsIDcwLCAyNDQsIDE2NiwgNjksIDEsIDIyOSwgMTM3LCAyMzksIDgsIAotICAgIDY5LCAxLCAyMjksIDEzNywgMjQ3LCA5MiwgNjksIDEsIDIyOSwgMTM3LCAyNDYsIDE5OSwgNjksIDEsIDIyOSwgMTM3LCAKLSAgICAyMzAsIDE4MSwgNjksIDEsIDIyOSwgMTM3LCAyMzAsIDE0OSwgNjksIDEsIDIyOSwgMTM3LCAyMjEsIDExLCA2OSwgMSwgCi0gICAgMjI5LCAxMzcsIDIwNywgMjQxLCA2OSwgMSwgMjI5LCAxMzcsIDIwNywgMjI5LCA2OSwgMSwgMjI5LCAxMzcsIDI0NCwgMTIwLCAKLSAgICA2OSwgMSwgMjI5LCAxMzcsIDI0NCwgMTA0LCA2OSwgMSwgMjI5LCAxMzcsIDI0NCwgMSwgNjksIDEsIDIyOSwgMTM3LCAyMDEsIAotICAgIDIwMSwgNjksIDEsIDIyOSwgMTM3LCAyMTUsIDM2LCA2OSwgMSwgMjI5LCAxMzcsIDE1MiwgNjksIDEsIDIyOSwgMTM3LCAKLSAgICAyMzcsIDEyLCA2OSwgMSwgMjI5LCAxMzcsIDI0MCwgMTA4LCA2OSwgNjUsIDEsIDIyOSwgMTM3LCAyMTYsIDEzNiwgNjksIDEsIAotICAgIDIyOSwgMTM3LCAyMDMsIDE4MiwgNjksIDEsIDIyOSwgMTM3LCAyMDIsIDExNiwgNjksIDEsIDIyOSwgMTM3LCAyMTYsIDIyMCwgCi0gICAgNjksIDIyNywgMzYsIDIyOSwgMTM3LCAyMjAsIDk0LCA2OSwgMjI3LCAzNiwgMjI5LCAxMzcsIDIxNywgNzgsIDY5LCAyMjcsIAotICAgIDM2LCAyMjksIDEzNywgMjM2LCAxOTEsIDY5LCAxNiwgMjUxLCA1MSwgMjQwLCAyMTEsIDY5LCAxNiwgMjUxLCA1MSwgMTA1LCAKLSAgICA2OSwgMTYsIDI1MSwgNTEsIDEwOCwgNjksIDEsIDI1MSwgNTEsIDIxNiwgMjIwLCA2OSwgMiwgMjE5LCA5OCwgMjI5LCAyMzcsIAotICAgIDIwOCwgMTYxLCA2OSwgMiwgNDUsIDIyOCwgODUsIDIwOCwgMTU5LCA2OSwgMiwgNDUsIDIyOCwgODUsIDIwOCwgMTU2LCA2OSwgCi0gICAgMSwgMjEyLCAxNzgsIDIxOSwgMTM5LCAyNDYsIDE5OSwgNjksIDEsIDIxMiwgMTc4LCAyMTksIDEzOSwgMjEzLCA5MCwgNDUsIAotICAgIDIwNSwgMjIwLCAxLCAxMjQsIDIyOSwgMjYsIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAyMjksIDI2LCA0NSwgMjA1LCAyMjAsIAotICAgIDEsIDEyNCwgMjI5LCAxMTUsIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAyMjksIDExNSwgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIAotICAgIDIyOSwgMTI0LCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjI5LCAxMjQsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyMzgsIDM5LCAKLSAgICA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjM4LCAzOSwgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIDIyMiwgMTI4LCA0NSwgMjA1LCAKLSAgICAyMjAsIDEsIDEzOCwgMjIyLCAxMjgsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyNDUsIDI1NCwgNDUsIDIwNSwgMjIwLCAxLCAKLSAgICAxMzgsIDI0NSwgMjU0LCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgMjQ2LCAxMTYsIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAyNDYsIAotICAgIDExNiwgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIDIxMiwgMTMsIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAyMTIsIDEzLCA0NSwgCi0gICAgMjA1LCAyMjAsIDEsIDEyNCwgMjIwLCAyMzMsIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAyMjAsIDIzMywgNDUsIDIwNSwgMjIwLCAKLSAgICAxLCAxMjQsIDI0MywgMTEzLCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjQzLCAxMTMsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAKLSAgICAxMzUsIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAxMzUsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyMDksIDQ3LCA0NSwgMjA1LCAKLSAgICAyMjAsIDEsIDEzOCwgMjA5LCA0NywgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIDIyMSwgMTkxLCA0NSwgMjA1LCAyMjAsIDEsIAotICAgIDEzOCwgMjIxLCAxOTEsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyNDgsIDIzLCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjQ4LCAKLSAgICAyMywgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIDIxOCwgNjksIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAyMTgsIDY5LCA0NSwgCi0gICAgMjA1LCAyMjAsIDEsIDEyNCwgMjE4LCAxODAsIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAyMTgsIDE4MCwgNDUsIDIwNSwgMjIwLCAKLSAgICAxLCAxMjQsIDIzOSwgMTg2LCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjM5LCAxODYsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAKLSAgICAyMjQsIDgyLCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjI0LCA4MiwgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIDIwMiwgMjQ3LCAKLSAgICA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjAyLCAyNDcsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyMTUsIDIyNywgNDUsIDIwNSwgCi0gICAgMjIwLCAxLCAxMzgsIDIxNSwgMjI3LCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgMjI3LCA0OSwgNDUsIDIwNSwgMjIwLCAxLCAKLSAgICAxMzgsIDIyNywgNDksIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyMDUsIDE4OSwgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDIwNSwgCi0gICAgMTg5LCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgMjM2LCAxMzYsIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAyMzYsIDEzNiwgNDUsIAotICAgIDIwNSwgMjIwLCAxLCAxMjQsIDc4LCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgNzgsIDQ1LCAyMDUsIDIyMCwgMjI1LCAxNDEsIAotICAgIDIzMCwgMCwgNDUsIDIwNSwgMjIwLCAyMiwgMjUyLCAyNSwgNDUsIDIwNSwgMjIwLCAyMiwgNzUsIDQ1LCAyMDUsIDIyMCwgCi0gICAgMjIsIDIwNywgMjQsIDQ1LCAyMDUsIDIyMCwgMjIsIDY4LCA0NSwgMjA1LCAyMjAsIDIyLCA3NCwgNDUsIDIwNSwgMjIwLCAKLSAgICAyMiwgNzgsIDQ1LCAyMDUsIDIyMCwgMjI1LCAxNDEsIDIyOSwgMTE4LCA0NSwgMjA1LCAyMjAsIDIyLCAyMzUsIDE3MSwgNDUsIAotICAgIDIwNSwgMjIwLCAyMiwgMjA3LCAyMywgNDUsIDIwNSwgMjIwLCAyMiwgMjA3LCAzOSwgNDUsIDIwNSwgMjIwLCAyMiwgMjUwLCAKLSAgICAzMiwgNDUsIDIwNSwgMjIwLCAyMiwgMjUwLCA4LCA0NSwgMjA1LCAyMjAsIDIyLCAyNTAsIDIzMSwgNDUsIDIwNSwgMjIwLCAKLSAgICAyMiwgMjUwLCAyNDcsIDQ1LCAyMDUsIDIyMCwgMTQzLCAyMjUsIDE0MSwgMjQxLCAxMjksIDQ1LCAyMDUsIDIyMCwgMTQzLCAKLSAgICAyMjUsIDE0MSwgMjIxLCA1MiwgNDUsIDIwNSwgMjIwLCAxNDMsIDIyNSwgMTQxLCAyMDksIDQ3LCA0NSwgMjA1LCAyMjAsIAotICAgIDE0MywgMjI1LCAxNDEsIDIxMSwgMjUyLCA0NSwgMjA1LCAyMjAsIDE2LCAyMjksIDksIDQ1LCAyMDUsIDIyMCwgMTYsIDIyMSwgCi0gICAgNTIsIDQ1LCAyMDUsIDIyMCwgMTYsIDIxNCwgMjUzLCA0NSwgMjA1LCAyMjAsIDE2LCAyMzYsIDEzNywgMjM2LCAxMzEsIDQ1LCAKLSAgICAyMDUsIDIyMCwgMTYsIDIyOSwgMTksIDIyOSwgMTgsIDIyNSwgMiwgMjI1LCA2MSwgMSwgNzQsIDIyNSwgMiwgMjI1LCA2MSwgCi0gICAgMSwgNzgsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjQ2LCAxOTksIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjIxLCAxMSwgMjI1LCAyLCAKLSAgICAyMjUsIDYxLCAxLCAyMDcsIDI0MSwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMDcsIDIyOSwgMjI1LCAyLCAyMjUsIDYxLCAxLCAKLSAgICAyNDQsIDEyMCwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyNDQsIDEwNCwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMjEsIDIyNywgCi0gICAgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMTMsIDkwLCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIxMSwgMTY0LCAyMjUsIDIsIDIyNSwgCi0gICAgNjEsIDIyLCAyLCAyMzEsIDgzLCAyMjUsIDIsIDIyNSwgNjEsIDIyLCAyLCAyMDYsIDE3OCwgMjI1LCAyLCAyMjUsIDYxLCAKLSAgICAyMiwgMiwgMjUxLCAyNDUsIDIyNSwgMiwgMjI1LCA2MSwgMjIsIDIsIDI1MCwgMzQsIDIyNSwgMiwgMjI1LCA2MSwgMjIsIDIsIAotICAgIDI1MSwgMjM4LCAyMjUsIDIsIDIyNSwgNjEsIDI0NiwgMTU5LCAyMjUsIDIsIDIyNSwgNjEsIDI1MSwgNzAsIDIyOSwgMTA3LCAKLSAgICAyMjUsIDIsIDIyNSwgNjEsIDI1MCwgMjA5LCAyMjUsIDIsIDIyNSwgNjEsIDQsIDIxNiwgOTgsIDgyLCAyMjUsIDIsIDIyNSwgCi0gICAgNjEsIDIwMywgMjM4LCAyMTYsIDk4LCA4MiwgMjI1LCAyLCAyMjUsIDYxLCAyMiwgMiwgMjA1LCAxOTksIDIyNSwgMiwgMjI1LCAKLSAgICA2MSwgMjA1LCAyMDQsIDMzLCA0LCAyMDcsIDIyMiwgMzMsIDQsIDIwNywgMjI1LCAzMywgNCwgMjA3LCAyMjgsIDMzLCA0LCAKLSAgICAyMDcsIDIyNiwgMzMsIDQsIDIwNywgMjI3LCAzMywgNCwgMjA3LCAyMjQsIDMzLCA0LCAyNDQsIDk4LCAzMywgNCwgMjQ0LCAKLSAgICAxMDAsIDMzLCA0LCAyNDQsIDEwMywgMzMsIDQsIDI0NCwgMTAxLCAzMywgNCwgMjQ0LCAxMDIsIDMzLCA0LCAyNDQsIDk5LCAKLSAgICAzMywgNCwgMjQxLCAyNDIsIDMzLCA0LCAyNDEsIDI0NiwgMzMsIDQsIDI0MSwgMjU0LCAzMywgNCwgMjQxLCAyNTEsIDMzLCAKLSAgICA0LCAyNDEsIDI1MiwgMzMsIDQsIDI0MSwgMjQzLCAzMywgNCwgMjQ2LCAyNTIsIDMzLCA0LCAyNDYsIDI0NiwgMzMsIDQsIAotICAgIDI0NiwgMjQ4LCAzMywgNCwgMjQ2LCAyNTEsIDMzLCA0LCAyNDYsIDI0OSwgMzMsIDQsIDI0NiwgMjUwLCAzMywgNCwgMjQ2LCAKLSAgICAyNDcsIDMzLCA0LCAyNDgsIDE5OCwgMzMsIDQsIDI0OCwgMTc3LCAzMywgNCwgMjQ4LCAxODksIDMzLCA0LCAyNDgsIDE5NywgCi0gICAgMzMsIDQsIDI0OCwgMTkyLCAzMywgNCwgMjQ4LCAxOTMsIDMzLCA0LCAyNDgsIDE4MSwgOCwgNSwgMSwgMjQ4LCAyMjUsIAotICAgIDI1MSwgMiwgOCwgNSwgMSwgMzQsIDIxNiwgNzEsIDgsIDUsIDEsIDI0OCwgMzksIDc0LCA4LCA1LCAxLCAyNDgsIDIyNSwgCi0gICAgNzQsIDgsIDUsIDEsIDE4OCwgMywgMjM5LCAxOTksIDgsIDUsIDEsIDIyNywgMTg3LCAyNDAsIDE3NCwgOCwgNSwgMSwgMTMyLCAKLSAgICAyMzksIDc2LCAzLCAyNDUsIDEyNiwgOCwgNSwgMSwgMjI4LCAxMzEsIDMsIDIzMCwgMjM5LCAyMjcsIDI0MSwgMTk0LCA4LCAKLSAgICA1LCAxLCAyMjgsIDEzMSwgMywgNTIsIDEwMSwgMjA4LCAyMjcsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAxMDEsIDIxNSwgCi0gICAgMjUyLCA4LCA1LCAxLCAyMjYsIDE4NiwgMywgMjQ1LCAxMjYsIDgsIDUsIDEsIDIyMywgMTY0LCAzLCAyNDUsIDEyNiwgOCwgCi0gICAgNSwgMSwgMjQxLCA3OSwgMywgMjQ1LCAxMjYsIDgsIDUsIDEsIDI0OCwgMzksIDc4LCA4LCA1LCAxLCAyNDgsIDM5LCAxNTgsIAotICAgIDMsIDk1LCA4LCA1LCAxLCAxNzEsIDE1OCwgMywgOTUsIDgsIDUsIDEsIDIzMCwgMjM5LCAyMjAsIDczLCA4LCA1LCAxLCAKLSAgICAyMDcsIDE3NCwgMjIwLCA3NCwgMywgOTUsIDgsIDUsIDEsIDIwNywgMTc0LCAyMjAsIDc0LCAzLCAyMzYsIDEwNiwgOTUsIDgsIAotICAgIDUsIDEsIDIwNywgMTc0LCAxNTgsIDIyMCwgNCwgOCwgNSwgMSwgMjA3LCAxNzQsIDE1OCwgMjIwLCA1LCAzLCA5NSwgOCwgNSwgCi0gICAgMSwgMjExLCA2NiwgMTQ2LCA4LCAxLCA1LCA2LCAyMTcsIDEsIDMsIDUwLCAyMjcsIDIxMCwgOCwgNSwgMSwgMjE3LCAxLCAKLSAgICAyMDQsIDMsIDIzNywgMTAyLCA4LCA1LCAxLCA1MiwgMTQ2LCA4LCA1LCAxLCAyMTcsIDEsIDMsIDI0NSwgMTI2LCA4LCA1LCAKLSAgICAxLCA1MiwgMjE3LCAxLCAzLCAyNDUsIDEyNiwgOCwgNSwgMSwgMTMyLCAxNDYsIDgsIDUsIDEsIDEzMiwgMjE3LCAxLCAzLCAKLSAgICAyMTUsIDI1MiwgOCwgNSwgMSwgMjQ4LCAyMTYsIDI0MSwgNywgOCwgNSwgMSwgMTA2LCAzLCAyMTIsIDIyOCwgNTAsIDIyNywgCi0gICAgMjEwLCA4LCA1LCAxLCAxMDYsIDI0OCwgMjMxLCAzLCAyMTIsIDIyOCwgNTAsIDIyNywgMjEwLCA4LCA1LCAxLCAyMDcsIDE3LCAKLSAgICA4LCA1LCAxLCAyMDcsIDE3NCwgMjA3LCAxNywgOCwgNSwgMSwgMTA2LCAzLCA0OSwgMTEzLCA4LCA1LCAxLCAyNDYsIDE0MiwgCi0gICAgOCwgNSwgMSwgMjQ2LCAxNDMsIDMsIDEyNCwgNTAsIDIxNSwgMjUyLCA4LCA1LCAxLCAyNDYsIDE0MywgMywgMTI0LCA0OSwgCi0gICAgMjEzLCAxMjUsIDgsIDUsIDEsIDIwMywgMTk3LCAzLCAxMjQsIDUwLCAyMTUsIDI1MiwgOCwgNSwgMSwgMjAzLCAxOTcsIDMsIAotICAgIDE2MywgNDksIDIyNywgMjEwLCA4LCA1LCAxLCAyMDMsIDE5NywgMywgMTYzLCA0OSwgMjI3LCAyMTEsIDI1LCAxMjQsIDUwLCAKLSAgICAyMTUsIDI1MiwgOCwgNSwgMSwgMjAzLCAxOTcsIDMsIDE2MywgNDksIDIyNywgMjExLCAzLCAyMTMsIDEyNSwgOCwgNSwgMSwgCi0gICAgMjAzLCAxMjUsIDMsIDIxMiwgMjI4LCA1MCwgMjI3LCAyMTAsIDY1LCAyNDcsIDIxNSwgMywgMjMwLCAyMzksIDI0NywgMjE0LCAKLSAgICA2NSwgMSwgNSwgMjM3LCAzMSwgNjUsIDEsIDUsIDIyOCwgMTMxLCAzLCAyMzAsIDIzOSwgMjI3LCAyNDEsIDE5NCwgNjUsIDEsIAotICAgIDUsIDIyOCwgMTMxLCAzLCAxMDEsIDIwOCwgMjI3LCA2NSwgMSwgNSwgMTA2LCAzLCA0OSwgMTEzLCA4LCA1LCAxLCAyMTUsIAotICAgIDExLCAyMDMsIDY2LCA4LCA1LCAxLCAyMzAsIDIyOCwgNzQsIDgsIDUsIDEsIDE3MSwgMjIwLCA3MywgOCwgNSwgMSwgMjA2LCAKLSAgICAyMjgsIDgsIDUsIDEsIDIzMCwgMjM5LCAyNTEsIDIsIDMwLCAxLCA1LCA2LCAyMjAsIDM2LCA5MCwgNSwgMSwgNjMsIDkwLCAKLSAgICA1LCAxLCA3NCwgOTAsIDUsIDEsIDc1LCA5MCwgNSwgMSwgNzgsIDkwLCA1LCAxLCA2OCwgOTAsIDUsIDEsIDIwNiwgMTY0LCAKLSAgICA5MCwgNSwgMSwgMjM5LCA4LCA5MCwgNSwgMSwgMTczLCA5MCwgNSwgMSwgMjM4LCAxOTAsIDkwLCA1LCAxLCAyMzgsIDgxLCAKLSAgICA5MCwgNSwgMSwgMjM4LCAzOSwgOTAsIDUsIDEsIDIzNywgMjMwLCA5MCwgNSwgMSwgMjM3LCAxOTIsIDkwLCA1LCAxLCAxNTIsIAotICAgIDkwLCA1LCAxLCAyMzcsIDY3LCA5MCwgNSwgMSwgMjM3LCAzLCA5MCwgNSwgMSwgMjM2LCAxMzYsIDkwLCA1LCAxLCAyMzYsIAotICAgIDI2LCA5MCwgNSwgMSwgMjM1LCAyNTUsIDkwLCA1LCAxLCAyMjgsIDExMywgOTAsIDUsIDEsIDIyNywgMjM0LCA5MCwgNSwgMSwgCi0gICAgMjI3LCAxNDgsIDkwLCA1LCAxLCAyMjcsIDQ5LCA5MCwgNSwgMSwgMjI2LCAyMzksIDkwLCA1LCAxLCAyMjYsIDIwOCwgOTAsIAotICAgIDUsIDEsIDE5MiwgOTAsIDUsIDEsIDIyNSwgMjAsIDkwLCA1LCAxLCAyMjQsIDE1NSwgOTAsIDUsIDEsIDIyNCwgODIsIDkwLCAKLSAgICA1LCAxLCAyMjMsIDI0NiwgOTAsIDUsIDEsIDIwMSwgMjAxLCA5MCwgNSwgMSwgMjM2LCAxNjAsIDkwLCA1LCAxLCAyMjMsIAotICAgIDkzLCA5MCwgNSwgMSwgMjIyLCAyNDAsIDkwLCA1LCAxLCAyMjIsIDEwMCwgOTAsIDUsIDEsIDIyMSwgMTkxLCA5MCwgNSwgMSwgCi0gICAgMjIxLCA4NCwgOTAsIDUsIDEsIDIyMSwgMjIsIDkwLCA1LCAxLCAyMTcsIDY0LCA5MCwgNSwgMSwgMjE3LCA1MCwgOTAsIDUsIAotICAgIDEsIDIxNywgNDMsIDkwLCA1LCAxLCAyMTcsIDM0LCA5MCwgNSwgMSwgMjE3LCAyMywgOTAsIDUsIDEsIDIxNywgMjEsIDkwLCAKLSAgICA1LCAxLCAyMTUsIDM2LCA5MCwgNSwgMSwgMTk0LCA5MCwgNSwgMSwgMjE0LCAxNzcsIDkwLCA1LCAxLCAyMTIsIDE2MiwgOTAsIAotICAgIDUsIDEsIDIxMiwgMTMsIDkwLCA1LCAxLCAyMTEsIDEwLCA5MCwgNSwgMSwgMjEwLCAxNzcsIDkwLCA1LCAxLCAyNDQsIDIxMiwgCi0gICAgOTAsIDUsIDEsIDIxMCwgMjIsIDkwLCA1LCAxLCAyNDQsIDc1LCA5MCwgNSwgMSwgMjA5LCAxODcsIDkwLCA1LCAxLCAyNDMsIAotICAgIDIzMywgOTAsIDUsIDEsIDIwOSwgMiwgOTAsIDUsIDEsIDI0MywgMTEzLCA5MCwgNSwgMSwgMjQyLCA0MiwgOTAsIDUsIDEsIAotICAgIDI0MiwgMTMsIDkwLCA1LCAxLCAyNDMsIDEyNCwgOTAsIDUsIDEsIDIwOCwgMTkwLCA5MCwgNSwgMSwgMjA4LCAxODksIDkwLCAKLSAgICA1LCAxLCAyMDgsIDE3OCwgOTAsIDUsIDEsIDIwOCwgMTc3LCA5MCwgNSwgMSwgMjA4LCAxNzYsIDkwLCA1LCAxLCAyMDgsIAotICAgIDE3NSwgOTAsIDUsIDEsIDIwOCwgMjAsIDkwLCA1LCAxLCAyMDgsIDE0LCA5MCwgNSwgMSwgMjA3LCAyNTUsIDkwLCA1LCAxLCAKLSAgICAyMDcsIDI1MywgOTAsIDUsIDEsIDIwNywgMjQ5LCA5MCwgNSwgMSwgMjA3LCAyNDgsIDkwLCA1LCAxLCAyMDQsIDExMSwgOTAsIAotICAgIDUsIDEsIDIwNCwgNjIsIDkwLCA1LCAxLCAyMDQsIDMwLCA5MCwgNSwgMSwgMjA0LCAwLCA5MCwgNSwgMSwgMjAzLCAyMTcsIAotICAgIDkwLCA1LCAxLCAyMDMsIDIwNCwgOTAsIDUsIDEsIDE5OCwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMjksIDE2LCAyMjUsIDIsIAotICAgIDIyNSwgNjEsIDEsIDIxNCwgMjUzLCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIyOCwgODYsIDIyNSwgMiwgMjI1LCA2MSwgMSwgCi0gICAgMjI0LCA5MywgMjI1LCAyLCAyMjUsIDYxLCAxLCAxODUsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjAxLCAyMDEsIDIyNSwgMiwgCi0gICAgMjI1LCA2MSwgMSwgMjQ2LCAxMzQsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjA4LCAyMjksIDIyNSwgMiwgMjI1LCA2MSwgMSwgCi0gICAgMjI5LCAxMTAsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjIyLCAxMTgsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjA5LCAzOSwgMjI1LCAKLSAgICAyLCAyMjUsIDYxLCAxLCAyMDQsIDEwNSwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMDMsIDc2LCAyMjUsIDIsIDIyNSwgNjEsIDEsIAotICAgIDIzNiwgMTgsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjA2LCAyNTUsIDIyNSwgMiwgMjI1LCA2MSwgMSwgNzUsIDIyNSwgMiwgCi0gICAgMjI1LCA2MSwgMSwgMjE4LCAyMDIsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjUwLCA0NSwgMjI1LCAyLCAyMjUsIDYxLCAxLCAKLSAgICAyMzgsIDMyLCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIzMCwgMTQ3LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIxNiwgMTk3LCAyMjUsIAotICAgIDIsIDIyNSwgNjEsIDEsIDI0OSwgMzIsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjMwLCAxMzMsIDIyNSwgMiwgMjI1LCA2MSwgMSwgCi0gICAgMjQzLCAxOTAsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjM4LCA4OCwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyNDMsIDIzNSwgMjI1LCAKLSAgICAyLCAyMjUsIDYxLCAxLCAyNDgsIDk2LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIyOSwgMTcsIDIyNywgMTksIDIyNSwgMiwgCi0gICAgMjI1LCA2MSwgMSwgMjI4LCA4NywgMjI3LCAxOSwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMjQsIDk0LCAyMjcsIDE5LCAyMjUsIAotICAgIDIsIDIyNSwgNjEsIDEsIDIxOSwgMTY5LCAyMjcsIDE5LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIyMywgMTExLCAyMjcsIDE5LCAKLSAgICAyMjUsIDIsIDIyNSwgNjEsIDEsIDIwOCwgMjMwLCAyMjcsIDE5LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIyMiwgMTE5LCAyMjcsIAotICAgIDE5LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIzNSwgMjA2LCAyMjcsIDE5LCAyMjUsIDIsIDIyNSwgNjEsIDIyLCAyLCAyMjAsIAotICAgIDMwLCAyMjUsIDIsIDIyNSwgNjEsIDIyLCAyLCAyMzEsIDQ3LCAyMjUsIDIsIDIyNSwgNjEsIDIyLCAyLCAyNTAsIDIzMCwgCi0gICAgMjI1LCAyLCAyMjUsIDYxLCAyMiwgMiwgMjAzLCA0MSwgMjI1LCAyLCAyMjUsIDYxLCAyMiwgMiwgMjExLCAyNDIsIDIyNSwgCi0gICAgMiwgMjI1LCA2MSwgMjIsIDIsIDIwNiwgMjUyLCAyMjUsIDIsIDIyNSwgNjEsIDIyLCAyLCAyNDYsIDE1NywgMjI1LCAyLCAKLSAgICAyMjUsIDYxLCAyMiwgMiwgMjIxLCAzNywgMjI1LCAyLCAyMjUsIDYxLCAyNDYsIDE1OCwgMjI1LCAyLCAyMjUsIDYxLCAyMjYsIAotICAgIDIyMywgMjMwLCAxOTAsIDIyNSwgMiwgMjI1LCA2MSwgMjUwLCAxNDksIDIzMCwgMTkwLCAyMjUsIDIsIDIyNSwgNjEsIDE3LCAKLSAgICAyMDIsIDg0LCAyMjUsIDIsIDIyNSwgNjEsIDE3LCAxMDUsIDIyNSwgMiwgMjI1LCA2MSwgMTcsIDEwOCwgMjI1LCAyLCAyMjUsIAotICAgIDYxLCAxNywgMTQ3LCAyMjUsIDIsIDIyNSwgNjEsIDE3LCAxNDksIDIyNSwgMiwgMjI1LCA2MSwgMTcsIDE3MCwgMjI1LCAyLCAKLSAgICAyMjUsIDYxLCAxNywgMTk1LCAyMjUsIDIsIDIyNSwgNjEsIDE3LCAyMTMsIDExMSwgMjI1LCAyLCAyMjUsIDYxLCAxNywgCi0gICAgMTk5LCAyMjUsIDIsIDIyNSwgNjEsIDE3LCAyMjIsIDYzLCAyOCwgMTc2LCAyMjAsIDE3NCwgMjgsIDE3NiwgMjIwLCAxNzksIAotICAgIDI4LCAxNzYsIDIwMiwgMjQ2LCAyOCwgMTc2LCAyMDIsIDI0NSwgMjgsIDE3NiwgMjAyLCAyNDQsIDI4LCAxNzYsIDIwNywgCi0gICAgODksIDI4LCAxNzYsIDIwNywgOTMsIDI4LCAxNzYsIDIwMiwgMjExLCAyOCwgMTc2LCAyMDIsIDIwNywgMjgsIDE3NiwgMjQwLCAKLSAgICAyMzcsIDI4LCAxNzYsIDI0MCwgMjM1LCAyOCwgMTc2LCAyNDAsIDIzNiwgMjgsIDE3NiwgMjQwLCAyMzMsIDI4LCAxNzYsIAotICAgIDIzNSwgMTk2LCAyOCwgMTc2LCAyMzUsIDE5NSwgMjgsIDE3NiwgMjM1LCAxOTMsIDI4LCAxNzYsIDIzNSwgMTk0LCAyOCwgCi0gICAgMTc2LCAyMzUsIDE5OSwgMjgsIDE3NiwgMjM1LCAxOTIsIDI4LCAxNzYsIDIzNSwgMTkxLCAyOCwgMTc2LCAyMzUsIDIwMSwgCi0gICAgMjgsIDE3NiwgMjUwLCAxMzYsIDI4LCAxNzYsIDI1MCwgMTM1LCAyOCwgMTA3LCAyMjIsIDg2LCAyOCwgMTA3LCAyMjIsIDkyLCAKLSAgICAyOCwgMTA3LCAyMTEsIDE0NSwgMjgsIDEwNywgMjExLCAxNDQsIDI4LCAxMDcsIDIwOCwgMjM1LCAyOCwgMTA3LCAyMDgsIAotICAgIDIzMywgMjgsIDEwNywgMjA4LCAyMzIsIDI4LCAxMDcsIDIwOCwgMjM4LCAyOCwgMTA3LCAyMDgsIDIzOSwgMjgsIDEwNywgCi0gICAgMjA4LCAyMzEsIDI4LCAxMDcsIDIxNiwgMjYsIDI4LCAxMDcsIDIxNiwgNDEsIDI4LCAxMDcsIDIxMSwgMTUxLCAyOCwgMTA3LCAKLSAgICAyMTYsIDM4LCAyOCwgMTA3LCAyMTYsIDI4LCAyOCwgMTA3LCAyMTYsIDMwLCAyOCwgMTA3LCAyMTYsIDE3LCAyOCwgMTA3LCAKLSAgICAyMTYsIDE4LCAyOCwgMTA3LCAyMjksIDI0MywgMjgsIDEwNywgMjI0LCAxMzYsIDI4LCAxMDcsIDIyNCwgMTMwLCAyOCwgCi0gICAgMTA3LCAyMTEsIDE1NSwgMjgsIDEwNywgMjI0LCAxMzMsIDI4LCAxMDcsIDIyNCwgMTM5LCAyOCwgMTA3LCAyMTgsIDEzNCwgCi0gICAgMjgsIDEwNywgMjE4LCAxNDMsIDI4LCAxMDcsIDIxOCwgMTQ3LCAyOCwgMTA3LCAyMTEsIDE1MywgMjgsIDEwNywgMjE4LCAKLSAgICAxMzcsIDI4LCAxMDcsIDIxOCwgMTUxLCAyOCwgMTA3LCAyMTgsIDE1MiwgMjgsIDEwNywgMjEyLCAxMDMsIDI4LCAxMDcsIAotICAgIDIxMiwgMTA2LCAyOCwgMTA3LCAyMTEsIDE0OSwgMjgsIDEwNywgMjExLCAxNDcsIDI4LCAxMDcsIDIxMiwgMTAxLCAyOCwgCi0gICAgMTA3LCAyMTIsIDEwOSwgMjgsIDEwNywgMjEyLCAxMTAsIDI4LCAxMDcsIDIxMiwgOTUsIDI4LCAxMDcsIDIxMiwgMTA4LCAKLSAgICAyOCwgMTA3LCAyMTksIDEwNSwgMjgsIDEwNywgMjE5LCAxMDYsIDI4LCAxMDcsIDIwMywgMjcsIDI4LCAxMDcsIDIwMywgMjgsIAotICAgIDI4LCAxMDcsIDI0NiwgNzIsIDI4LCAxMDcsIDI0NiwgNzEsIDI4LCAxMDcsIDIxMSwgMTYwLCAyOCwgMTA3LCAyMTgsIDE4NywgCi0gICAgMjgsIDEwNywgMjE4LCAxODYsIDEyLCAxNSwgMjMzLCA3NCwgMTIsIDE1LCAyMzMsIDczLCAxMiwgMTUsIDIzMywgNzIsIDEyLCAKLSAgICAxNSwgMjMzLCA3MSwgMTIsIDE1LCAyMzMsIDcwLCAxMiwgMTUsIDIzMywgNjksIDEyLCAxNSwgMjMzLCA2OCwgMTIsIDE1LCAKLSAgICAyMzMsIDY3LCAxMiwgMTUsIDIzMywgNjYsIDEyLCAxNSwgMjMzLCA2NSwgMTIsIDE1LCAyMzMsIDY0LCAxMiwgMTUsIDIzMywgCi0gICAgNjMsIDEyLCAxNSwgMjMzLCA2MiwgMTIsIDE1LCAyMzMsIDYxLCAxMiwgMTUsIDIzMywgNjAsIDEyLCAxNSwgMjMzLCA1OSwgCi0gICAgMTIsIDE1LCAyMzMsIDU4LCAxMiwgMTUsIDIzMywgNTcsIDEyLCAxNSwgMjMzLCA1NiwgMTIsIDE1LCAyMzMsIDU1LCAxMiwgCi0gICAgMTUsIDIzMywgNTQsIDEyLCAxNSwgMjMzLCA1MywgMTIsIDE1LCAyMzMsIDUyLCAxMiwgMTUsIDIzMywgNTEsIDEyLCAxNSwgCi0gICAgMjMzLCA1MCwgMTIsIDE1LCAyMzMsIDQ5LCAxMiwgMTUsIDIzMywgNDgsIDEyLCAxNSwgMjMzLCA0NywgMTIsIDE1LCAyMzMsIAotICAgIDQ2LCAxMiwgMTUsIDIzMywgNDUsIDEyLCAxNSwgMjMzLCA0NCwgMTIsIDE1LCAyMzMsIDQzLCAxMiwgMTUsIDIzMywgNDIsIAotICAgIDEyLCAxNSwgMjMzLCA0MSwgMTIsIDE1LCAyMzMsIDQwLCAxMiwgMTUsIDIzMywgMzksIDEyLCAxNSwgMjMzLCAzOCwgMTIsIAotICAgIDE1LCAyMzMsIDM3LCAxMiwgMTUsIDIzMywgMzYsIDEyLCAxNSwgMjMzLCAzNSwgMTIsIDE1LCAyMzMsIDM0LCAxMiwgMTUsIAotICAgIDIzMywgMzMsIDEyLCAxNSwgMjMzLCAzMiwgMTIsIDE1LCAyMzMsIDMxLCAxMiwgMTUsIDIzMywgMzAsIDEyLCAxNSwgMjMzLCAKLSAgICAyOSwgMTIsIDE1LCAyMzMsIDI4LCAxMiwgMTUsIDIzMywgMjcsIDEyLCAxNSwgMjMzLCAyNiwgMTIsIDE1LCAyMzMsIDI1LCAKLSAgICAxMiwgMTUsIDIzMywgMjQsIDEyLCAxNSwgMjMzLCAyMywgMTIsIDE1LCAyMzMsIDIyLCAxMiwgMTUsIDIzMywgMjEsIDEyLCAKLSAgICAxNSwgMjMzLCAyMCwgMTIsIDE1LCAyMzMsIDE5LCAxMiwgMTUsIDIzMywgMTgsIDEyLCAxNSwgMjMzLCAxNywgMTIsIDE1LCAKLSAgICAyMzMsIDE2LCAxMiwgMTUsIDIzMywgMTUsIDEyLCAxNSwgMjMzLCAxNCwgMTIsIDE1LCAyMzMsIDEzLCAxMiwgMTUsIDIzMywgCi0gICAgMTIsIDEyLCAxNSwgMjMzLCAxMSwgMTIsIDE1LCAyMzMsIDEwLCAxMiwgMTUsIDIzMywgOSwgMTIsIDE1LCAyMzMsIDgsIDEyLCAKLSAgICAxNSwgMjMzLCA3LCAxMiwgMTUsIDIzMywgNiwgMTIsIDE1LCAyMzMsIDUsIDEyLCAxNSwgMjMzLCA0LCAxMiwgMTUsIDIzMywgCi0gICAgMywgMTIsIDE1LCAyMzMsIDIsIDEyLCAxNSwgMjMzLCAxLCAxMiwgMTUsIDIzMywgMCwgMTIsIDE1LCAyMzIsIDI1NSwgMTIsIAotICAgIDE1LCAyMzIsIDI1NCwgMTIsIDE1LCAyMzIsIDI1MywgMTIsIDE1LCAyMzIsIDI1MiwgMTIsIDE1LCAyMzIsIDI1MSwgMTIsIAotICAgIDE1LCAyMzIsIDI1MCwgMTIsIDE1LCAyMzIsIDI0OSwgMTIsIDE1LCAyMzIsIDI0OCwgMTIsIDE1LCAyMzIsIDI0NywgMTIsIAotICAgIDE1LCAyMzIsIDI0NiwgMTIsIDE1LCAyMzIsIDI0NSwgMTIsIDE1LCAyMzIsIDI0NCwgMTIsIDE1LCAyMzIsIDI0MywgMTIsIAotICAgIDE1LCAyMzIsIDI0MiwgMTIsIDE1LCAyMzIsIDI0MSwgMTIsIDE1LCAyMzIsIDI0MCwgMTIsIDE1LCAyMzIsIDIzOSwgMTIsIAotICAgIDE1LCAyMzIsIDIzOCwgMTIsIDE1LCAyMzIsIDIzNywgMTIsIDE1LCAyMzIsIDIzNiwgMTIsIDE1LCAyMzIsIDIzNSwgMTIsIAotICAgIDE1LCAyMzIsIDIzNCwgMTIsIDE1LCAyMzIsIDIzMywgMTIsIDE1LCAyMzIsIDIzMiwgMTIsIDE1LCAyMzIsIDIzMSwgMTIsIAotICAgIDE1LCAyMzIsIDIzMCwgMTIsIDE1LCAyMzIsIDIyOSwgMTIsIDE1LCAyMzIsIDIyOCwgMTIsIDE1LCAyMzIsIDIyNywgMTIsIAotICAgIDE1LCAyMzIsIDIyNiwgMTIsIDE1LCAyMzIsIDIyNSwgMTIsIDE1LCAyMzIsIDIyNCwgMTIsIDE1LCAyMzIsIDIyMywgMTIsIAotICAgIDE1LCAyMzIsIDIyMiwgMTIsIDE1LCAyMzIsIDIyMSwgMTIsIDE1LCAyMzIsIDIyMCwgMTIsIDE1LCAyMzIsIDIxOSwgMTIsIAotICAgIDE1LCAyMzIsIDIxOCwgMTIsIDE1LCAyMzIsIDIxNywgMTIsIDE1LCAyMzIsIDIxNiwgMTIsIDE1LCAyMzIsIDIxNSwgMTIsIAotICAgIDE1LCAyMzIsIDIxNCwgMTIsIDE1LCAyMzIsIDIxMywgMTIsIDE1LCAyMzIsIDIxMiwgMTIsIDE1LCAyMzIsIDIxMSwgMTIsIAotICAgIDE1LCAyMzIsIDIxMCwgMTIsIDE1LCAyMzIsIDIwOSwgMTIsIDE1LCAyMzIsIDIwOCwgMTIsIDE1LCAyMzIsIDIwNywgMTIsIAotICAgIDE1LCAyMzIsIDIwNiwgMTIsIDE1LCAyMzIsIDIwNSwgMTIsIDE1LCAyMzIsIDIwNCwgMTIsIDE1LCAyMzIsIDIwMywgMTIsIAotICAgIDE1LCAyMzIsIDIwMiwgMTIsIDE1LCAyMzIsIDIwMSwgMTIsIDE1LCAyMzIsIDIwMCwgMTIsIDE1LCAyMzIsIDE5OSwgMTIsIAotICAgIDE1LCAyMzIsIDE5OCwgMTIsIDE1LCAyMzIsIDE5NywgMTIsIDE1LCAyMzIsIDE5NiwgMTIsIDE1LCAyMzIsIDE5NSwgMTIsIAotICAgIDE1LCAyMzIsIDE5NCwgMTIsIDE1LCAyMzIsIDE5MywgMTIsIDE1LCAyMzIsIDE5MiwgMTIsIDE1LCAyMzIsIDE5MSwgMTIsIAotICAgIDE1LCAyMzIsIDE5MCwgMTIsIDE1LCAyMzIsIDE4OSwgMTIsIDE1LCAyMzIsIDE4OCwgMTIsIDE1LCAyMzIsIDE4NywgMTIsIAotICAgIDE1LCAyMzIsIDE4NiwgMTIsIDE1LCAyMzIsIDE4NSwgMTIsIDE1LCAyMzIsIDE4NCwgMTIsIDE1LCAyMzIsIDE4MywgMTIsIAotICAgIDE1LCAyMzIsIDE4MiwgMTIsIDE1LCAyMzIsIDE4MSwgMTIsIDE1LCAyMzIsIDE4MCwgMTIsIDE1LCAyMzIsIDE3OSwgMTIsIAotICAgIDE1LCAyMzIsIDE3OCwgMTIsIDE1LCAyMzIsIDE3NywgMTIsIDE1LCAyMzIsIDE3NiwgMTIsIDE1LCAyMzIsIDE3NSwgMTIsIAotICAgIDE1LCAyMzIsIDE3NCwgMTIsIDE1LCAyMzIsIDE3MywgMTIsIDE1LCAyMzIsIDE3MiwgMTIsIDE1LCAyMzIsIDE3MSwgMTIsIAotICAgIDE1LCAyMzIsIDE3MCwgMTIsIDE1LCAyMzIsIDE2OSwgMTIsIDE1LCAyMzIsIDE2OCwgMTIsIDE1LCAyMzIsIDE2NywgMTIsIAotICAgIDE1LCAyMzIsIDE2NiwgMTIsIDE1LCAyMzIsIDE2NSwgMTIsIDE1LCAyMzIsIDE2NCwgMTIsIDE1LCAyMzIsIDE2MywgMTIsIAotICAgIDE1LCAyMzIsIDE2MiwgMTIsIDE1LCAyMzIsIDE2MSwgMTIsIDE1LCAyMzIsIDE2MCwgMTIsIDE1LCAyMzIsIDE1OSwgMTIsIAotICAgIDE1LCAyMzIsIDE1OCwgMTIsIDE1LCAyMzIsIDE1NywgMTIsIDE1LCAyMzIsIDE1NiwgMTIsIDE1LCAyMzIsIDE1NSwgMTIsIAotICAgIDE1LCAyMzIsIDE1NCwgMTIsIDE1LCAyMzIsIDE1MywgMTIsIDE1LCAyMzIsIDE1MiwgMTIsIDE1LCAyMzIsIDE1MSwgMTIsIAotICAgIDE1LCAyMzIsIDE1MCwgMTIsIDE1LCAyMzIsIDE0OSwgMTIsIDE1LCAyMzIsIDE0OCwgMTIsIDE1LCAyMzIsIDE0NywgMTIsIAotICAgIDE1LCAyMzIsIDE0NiwgMTIsIDE1LCAyMzIsIDE0NSwgMTIsIDE1LCAyMzIsIDE0NCwgMTIsIDE1LCAyMzIsIDE0MywgMTIsIAotICAgIDE1LCAyMzIsIDE0MiwgMTIsIDE1LCAyMzIsIDE0MSwgMTIsIDE1LCAyMzIsIDE0MCwgMTIsIDE1LCAyMzIsIDEzOSwgMTIsIAotICAgIDE1LCAyMzIsIDEzOCwgMTIsIDE1LCAyMzIsIDEzNywgMTIsIDE1LCAyMzIsIDEzNiwgMTIsIDE1LCAyMzIsIDEzNSwgMTIsIAotICAgIDE1LCAyMzIsIDEzNCwgMTIsIDE1LCAyMzIsIDEzMywgMTIsIDE1LCAyMzIsIDEzMiwgMTIsIDE1LCAyMzIsIDEzMSwgMTIsIAotICAgIDE1LCAyMzIsIDEzMCwgMTIsIDE1LCAyMzIsIDEyOSwgMTIsIDE1LCAyMzIsIDEyOCwgMTIsIDE1LCAyMzIsIDEyNywgMTIsIAotICAgIDE1LCAyMzIsIDEyNiwgMTIsIDE1LCAyMzIsIDEyNSwgMTIsIDE1LCAyMzIsIDEyNCwgMTIsIDE1LCAyMzIsIDEyMywgMTIsIAotICAgIDE1LCAyMzIsIDEyMiwgMTIsIDE1LCAyMzIsIDEyMSwgMTIsIDE1LCAyMzIsIDEyMCwgMTIsIDE1LCAyMzIsIDExOSwgMTIsIAotICAgIDE1LCAyMzIsIDExOCwgMTIsIDE1LCAyMzIsIDExNywgMTIsIDE1LCAyMzIsIDExNiwgMTIsIDE1LCAyMzIsIDExNSwgMTIsIAotICAgIDE1LCAyMzIsIDExNCwgMTIsIDE1LCAyMzIsIDExMywgMTIsIDE1LCAyMzIsIDExMiwgMTIsIDE1LCAyMzIsIDExMSwgMTIsIAotICAgIDE1LCAyMzIsIDExMCwgMTIsIDE1LCAyMzIsIDEwOSwgMTIsIDE1LCAyMzIsIDEwOCwgMTIsIDE1LCAyMzIsIDEwNywgMTIsIAotICAgIDE1LCAyMzIsIDEwNiwgMTIsIDE1LCAyMzIsIDEwNSwgMTIsIDE1LCAyMzIsIDEwNCwgMTIsIDE1LCAyMzIsIDEwMywgMTIsIAotICAgIDE1LCAyMzIsIDEwMiwgMTIsIDE1LCAyMzIsIDEwMSwgMTIsIDE1LCAyMzIsIDEwMCwgMTIsIDE1LCAyMzIsIDk5LCAxMiwgCi0gICAgMTUsIDIzMiwgOTgsIDEyLCAxNSwgMjMyLCA5NywgMTIsIDE1LCAyMzIsIDk2LCAxMiwgMTUsIDIzMiwgOTUsIDEyLCAxNSwgCi0gICAgMjMyLCA5NCwgMTIsIDE1LCAyMzIsIDkzLCAxMiwgMTUsIDIzMiwgOTIsIDEyLCAxNSwgMjMyLCA5MSwgMTIsIDE1LCAyMzIsIAotICAgIDkwLCAxMiwgMTUsIDIzMiwgODksIDEyLCAxNSwgMjMyLCA4OCwgMTIsIDE1LCAyMzIsIDg3LCAxMiwgMTUsIDIzMiwgODYsIAotICAgIDEyLCAxNSwgMjMyLCA4NSwgMTIsIDE1LCAyMzIsIDg0LCAxMiwgMTUsIDIzMiwgODMsIDEyLCAxNSwgMjMyLCA4MiwgMTIsIAotICAgIDE1LCAyMzIsIDgxLCAxMiwgMTUsIDIzMiwgODAsIDEyLCAxNSwgMjMyLCA3OSwgMTIsIDE1LCAyMzIsIDc4LCAxMiwgMTUsIAotICAgIDIzMiwgNzcsIDEyLCAxNSwgMjMyLCA3NiwgMTIsIDE1LCAyMzIsIDc1LCAxMiwgMTUsIDIzMiwgNzQsIDEyLCAxNSwgMjMyLCAKLSAgICA3MywgMTIsIDE1LCAyMzIsIDcyLCAxMiwgMTUsIDIzMiwgNzEsIDEyLCAxNSwgMjMyLCA3MCwgMTIsIDE1LCAyMzIsIDY5LCAKLSAgICAxMiwgMTUsIDIzMiwgNjgsIDEyLCAxNSwgMjMyLCA2NywgMTIsIDE1LCAyMzIsIDY2LCAxMiwgMTUsIDIzMiwgNjUsIDEyLCAKLSAgICAxNSwgMjMyLCA2NCwgMTIsIDE1LCAyMzIsIDYzLCAxMiwgMTUsIDIzMiwgNjIsIDEyLCAxNSwgMjMyLCA2MSwgMTIsIDE1LCAKLSAgICAyMzIsIDYwLCAxMiwgMTUsIDIzMiwgNTksIDEyLCAxNSwgMjMyLCA1OCwgMTIsIDE1LCAyMzIsIDU3LCAxMiwgMTUsIDIzMiwgCi0gICAgNTYsIDEyLCAxNSwgMjMyLCA1NSwgMTIsIDE1LCAyMzIsIDU0LCAxMiwgMTUsIDIzMiwgNTMsIDEyLCAxNSwgMjMyLCA1MiwgCi0gICAgMTIsIDE1LCAyMzIsIDUxLCAxMiwgMTUsIDIzMiwgNTAsIDEyLCAxNSwgMjMyLCA0OSwgMTIsIDE1LCAyMzIsIDQ4LCAxMiwgCi0gICAgMTUsIDIzMiwgNDcsIDEyLCAxNSwgMjMyLCA0NiwgMTIsIDE1LCAyMzIsIDQ1LCAxMiwgMTUsIDIzMiwgNDQsIDEyLCAxNSwgCi0gICAgMjMyLCA0MywgMTIsIDE1LCAyMzIsIDQyLCAxMiwgMTUsIDIzMiwgNDEsIDEyLCAxNSwgMjMyLCA0MCwgMTIsIDE1LCAyMzIsIAotICAgIDM5LCAxMiwgMTUsIDIzMiwgMzgsIDEyLCAxNSwgMjMyLCAzNywgMTIsIDE1LCAyMzIsIDM2LCAxMiwgMTUsIDIzMiwgMzUsIAotICAgIDEyLCAxNSwgMjMyLCAzNCwgMTIsIDE1LCAyMzIsIDMzLCAxMiwgMTUsIDIzMiwgMzIsIDEyLCAxNSwgMjMyLCAzMSwgMTIsIAotICAgIDE1LCAyMzIsIDMwLCAxMiwgMTUsIDIzMiwgMjksIDEyLCAxNSwgMjMyLCAyOCwgMTIsIDE1LCAyMzIsIDI3LCAxMiwgMTUsIAotICAgIDIzMiwgMjYsIDEyLCAxNSwgMjMyLCAyNSwgMTIsIDE1LCAyMzIsIDI0LCAxMiwgMTUsIDIzMiwgMjMsIDEyLCAxNSwgMjMyLCAKLSAgICAyMiwgMTIsIDE1LCAyMzIsIDIxLCAxMiwgMTUsIDIzMiwgMjAsIDEyLCAxNSwgMjMyLCAxOSwgMTIsIDE1LCAyMzIsIDE4LCAKLSAgICAxMiwgMTUsIDIzMiwgMTcsIDEyLCAxNSwgMjMyLCAxNiwgMTIsIDE1LCAyMzIsIDE1LCAxMiwgMTUsIDIzMiwgMTQsIDEyLCAKLSAgICAxNSwgMjMyLCAxMywgMTIsIDE1LCAyMzIsIDEyLCAxMiwgMTUsIDIzMiwgMTEsIDEyLCAxNSwgMjMyLCAxMCwgMTIsIDE1LCAKLSAgICAyMzIsIDksIDEyLCAxNSwgMjMyLCA4LCAxMiwgMTUsIDIzMiwgNywgMTIsIDE1LCAyMzIsIDYsIDEyLCAxNSwgMjMyLCA1LCAKLSAgICAxMiwgMTUsIDIzMiwgNCwgMTIsIDE1LCAyMzIsIDMsIDEyLCAxNSwgMjMyLCAyLCAxMiwgMTUsIDIzMiwgMSwgMTIsIDE1LCAKLSAgICAyMzIsIDAsIDEyLCAxNSwgMjMxLCAyNTUsIDEyLCAxNSwgMjMxLCAyNTQsIDEyLCAxNSwgMjMxLCAyNTMsIDEyLCAxNSwgCi0gICAgMjMxLCAyNTIsIDEyLCAxNSwgMjMxLCAyNTEsIDEyLCAxNSwgMjMxLCAyNTAsIDEyLCAxNSwgMjMxLCAyNDksIDEyLCAxNSwgCi0gICAgMjMxLCAyNDgsIDEyLCAxNSwgMjMxLCAyNDcsIDEyLCAxNSwgMjMxLCAyNDYsIDEyLCAxNSwgMjMxLCAyNDUsIDEyLCAxNSwgCi0gICAgMjMxLCAyNDQsIDEyLCAxNSwgMjMxLCAyNDMsIDEyLCAxNSwgMjMxLCAyNDIsIDEyLCAxNSwgMjMxLCAyNDEsIDEyLCAxNSwgCi0gICAgMjMxLCAyNDAsIDEyLCAxNSwgMjMxLCAyMzksIDEyLCAxNSwgMjMxLCAyMzgsIDEyLCAxNSwgMjMxLCAyMzcsIDEyLCAxNSwgCi0gICAgMjMxLCAyMzYsIDEyLCAxNSwgMjMxLCAyMzUsIDEyLCAxNSwgMjMxLCAyMzQsIDEyLCAxNSwgMjMxLCAyMzMsIDEyLCAxNSwgCi0gICAgMjMxLCAyMzIsIDEyLCAxNSwgMjMxLCAyMzEsIDEyLCAxNSwgMjMxLCAyMzAsIDEyLCAxNSwgMjMxLCAyMjksIDEyLCAxNSwgCi0gICAgMjMxLCAyMjgsIDEyLCAxNSwgMjMxLCAyMjcsIDEyLCAxNSwgMjMxLCAyMjYsIDEyLCAxNSwgMjMxLCAyMjUsIDEyLCAxNSwgCi0gICAgMjMxLCAyMjQsIDEyLCAxNSwgMjMxLCAyMjMsIDEyLCAxNSwgMjMxLCAyMjIsIDEyLCAxNSwgMjMxLCAyMjEsIDEyLCAxNSwgCi0gICAgMjMxLCAyMjAsIDEyLCAxNSwgMjMxLCAyMTksIDEyLCAxNSwgMjMxLCAyMTgsIDEyLCAxNSwgMjMxLCAyMTcsIDEyLCAxNSwgCi0gICAgMjMxLCAyMTYsIDEyLCAxNSwgMjMxLCAyMTUsIDEyLCAxNSwgMjMxLCAyMTQsIDEyLCAxNSwgMjMxLCAyMTMsIDEyLCAxNSwgCi0gICAgMjMxLCAyMTIsIDEyLCAxNSwgMjMxLCAyMTEsIDEyLCAxNSwgMjMxLCAyMTAsIDEyLCAxNSwgMjMxLCAyMDksIDEyLCAxNSwgCi0gICAgMjMxLCAyMDgsIDEyLCAxNSwgMjMxLCAyMDcsIDEyLCAxNSwgMjMxLCAyMDYsIDEyLCAxNSwgMjMxLCAyMDUsIDEyLCAxNSwgCi0gICAgMjMxLCAyMDQsIDEyLCAxNSwgMjMxLCAyMDMsIDEyLCAxNSwgMjMxLCAyMDIsIDEyLCAxNSwgMjMxLCAyMDEsIDEyLCAxNSwgCi0gICAgMjMxLCAyMDAsIDEyLCAxNSwgMjMxLCAxOTksIDEyLCAxNSwgMjMxLCAxOTgsIDEyLCAxNSwgMjMxLCAxOTcsIDEyLCAxNSwgCi0gICAgMjMxLCAxOTYsIDEyLCAxNSwgMjMxLCAxOTUsIDEyLCAxNSwgMjMxLCAxOTQsIDEyLCAxNSwgMjMxLCAxOTMsIDEyLCAxNSwgCi0gICAgMjMxLCAxOTIsIDEyLCAxNSwgMjMxLCAxOTEsIDEyLCAxNSwgMjMxLCAxOTAsIDEyLCAxNSwgMjMxLCAxODksIDEyLCAxNSwgCi0gICAgMjMxLCAxODgsIDEyLCAxNSwgMjMxLCAxODcsIDEyLCAxNSwgMjMxLCAxODYsIDEyLCAxNSwgMjMxLCAxODUsIDEyLCAxNSwgCi0gICAgMjMxLCAxODQsIDEyLCAxNSwgMjMxLCAxODMsIDEyLCAxNSwgMjMxLCAxODIsIDEyLCAxNSwgMjMxLCAxODEsIDEyLCAxNSwgCi0gICAgMjMxLCAxODAsIDEyLCAxNSwgMjMxLCAxNzksIDEyLCAxNSwgMjMxLCAxNzgsIDEyLCAxNSwgMjMxLCAxNzcsIDEyLCAxNSwgCi0gICAgMjMxLCAxNzYsIDEyLCAxNSwgMjMxLCAxNzUsIDEyLCAxNSwgMjMxLCAxNzQsIDEyLCAxNSwgMjMxLCAxNzMsIDEyLCAxNSwgCi0gICAgMjMxLCAxNzIsIDEyLCAxNSwgMjMxLCAxNzEsIDEyLCAxNSwgMjMxLCAxNzAsIDEyLCAxNSwgMjMxLCAxNjksIDEyLCAxNSwgCi0gICAgMjMxLCAxNjgsIDEyLCAxNSwgMjMxLCAxNjcsIDEyLCAxNSwgMjMxLCAxNjYsIDEyLCAxNSwgMjMxLCAxNjUsIDEyLCAxNSwgCi0gICAgMjMxLCAxNjQsIDEyLCAxNSwgMjMxLCAxNjMsIDEyLCAxNSwgMjMxLCAxNjIsIDEyLCAxNSwgMjMxLCAxNjEsIDEyLCAxNSwgCi0gICAgMjMxLCAxNjAsIDEyLCAxNSwgMjMxLCAxNTksIDEyLCAxNSwgMjMxLCAxNTgsIDEyLCAxNSwgMjMxLCAxNTcsIDEyLCAxNSwgCi0gICAgMjMxLCAxNTYsIDEyLCAxNSwgMjMxLCAxNTUsIDEyLCAxNSwgMjMxLCAxNTQsIDEyLCAxNSwgMjMxLCAxNTMsIDEyLCAxNSwgCi0gICAgMjMxLCAxNTIsIDEyLCAxNSwgMjMxLCAxNTEsIDEyLCAxNSwgMjMxLCAxNTAsIDEyLCAxNSwgMjMxLCAxNDksIDEyLCAxNSwgCi0gICAgMjMxLCAxNDgsIDEyLCAxNSwgMjMxLCAxNDcsIDEyLCAxNSwgMjMxLCAxNDYsIDEyLCAxNSwgMjMxLCAxNDUsIDEyLCAxNSwgCi0gICAgMjMxLCAxNDQsIDEyLCAxNSwgMjMxLCAxNDMsIDEyLCAxNSwgMjMxLCAxNDIsIDEyLCAxNSwgMjMxLCAxNDEsIDEyLCAxNSwgCi0gICAgMjMxLCAxNDAsIDEyLCAxNSwgMjMxLCAxMzksIDEyLCAxNSwgMjMxLCAxMzgsIDEyLCAxNSwgMjMxLCAxMzcsIDEyLCAxNSwgCi0gICAgMjMxLCAxMzYsIDEyLCAxNSwgMjMxLCAxMzUsIDEyLCAxNSwgMjMxLCAxMzQsIDEyLCAxNSwgMjMxLCAxMzMsIDEyLCAxNSwgCi0gICAgMjMxLCAxMzIsIDEyLCAxNSwgMjMxLCAxMzEsIDEyLCAxNSwgMjMxLCAxMzAsIDEyLCAxNSwgMjMxLCAxMjksIDEyLCAxNSwgCi0gICAgMjMxLCAxMjgsIDEyLCAxNSwgMjMxLCAxMjcsIDEyLCAxNSwgMjMxLCAxMjYsIDEyLCAxNSwgMjMxLCAxMjUsIDEyLCAxNSwgCi0gICAgMjMxLCAxMjQsIDEyLCAxNSwgMjMxLCAxMjMsIDEyLCAxNSwgMjMxLCAxMjIsIDEyLCAxNSwgMjMxLCAxMjEsIDEyLCAxNSwgCi0gICAgMjMxLCAxMjAsIDEyLCAxNSwgMjMxLCAxMTksIDEyLCAxNSwgMjMxLCAxMTgsIDEyLCAxNSwgMjMxLCAxMTcsIDEyLCAxNSwgCi0gICAgMjMxLCAxMTYsIDEyLCAxNSwgMjMxLCAxMTUsIDgsIDUsIDMyLCAyNDAsIDMwLCA4LCA1LCAzMiwgMjQwLCAyNiwgOCwgNSwgCi0gICAgMzIsIDIzOSwgMjI4LCA4LCA1LCAzMiwgMjQwLCAyOSwgOCwgNSwgMzIsIDI0MCwgMjgsIDgsIDUsIDMyLCAxNjMsIDIxNSwgCi0gICAgOTQsIDIxMCwgNjksIDgsIDUsIDMyLCAyMTEsIDEwOCwgMTc4LCA1LCAzMiwgMjI0LCAyNDEsIDIyMSwgMTUyLCAxNzgsIDUsIAotICAgIDMyLCAyMjQsIDI0MSwgMjQxLCAxNjcsIDE3OCwgNSwgMzIsIDIyNCwgMjQxLCAyMzEsIDE5LCAxNzgsIDUsIDMyLCAyMDUsIAotICAgIDIzNSwgMjIxLCAxNTIsIDE3OCwgNSwgMzIsIDIyNCwgMjQxLCAyMDMsIDE3NCwgMTEwLCAxLCAyMDIsIDIzNywgMywgMjM2LCAKLSAgICAyMzIsIDExMCwgMjE4LCA2MywgMjMwLCA4MSwgMjA2LCA2NywgMTEwLCAzMiwgMjAzLCA5LCAyMDIsIDIzNywgMjAyLCAyMzcsIAotICAgIDIxOSwgNTQsIDExMCwgMSwgMjUwLCAyNTAsIDI1MCwgMywgMTEwLCAxLCAyMDQsIDI3LCAyNTEsIDMwLCAxMTAsIDEsIDIwNCwgCi0gICAgMjcsIDI0NCwgMTc4LCAxMTAsIDEsIDIwNCwgMjcsIDIzNywgNjcsIDExMCwgMSwgMjA0LCAyNywgMjMwLCAyMiwgMTEwLCAxLCAKLSAgICAyMDQsIDI3LCAyMjgsIDIwLCAxMTAsIDEsIDIwNCwgMjcsIDQ2LCAyMjQsIDI0NywgMTEwLCAxLCAyMDQsIDI3LCAyMTYsIAotICAgIDkxLCAxMTAsIDEsIDIwNCwgMjcsIDIwOSwgMjAzLCAxMTAsIDEsIDI1MCwgMjUwLCA5MSwgNTQsIDExMCwgMSwgMjEzLCAwLCAKLSAgICAzLCAyMTMsIDAsIDI0MywgODUsIDExMCwgMSwgMjEzLCAwLCAzLCAyMTIsIDEyNCwgMjQzLCA4NSwgMTEwLCAxLCAyMTMsIDAsIAotICAgIDMsIDI0NCwgMTk4LCAyNSwgMjEzLCAwLCAyNDMsIDg1LCAxMTAsIDEsIDIxMywgMCwgMywgMjQ0LCAxOTgsIDI1LCAyMTIsIAotICAgIDEyNCwgMjQzLCA4NSwgMTEwLCAxLCAxMzcsIDMsIDIxOSwgNTQsIDExMCwgMSwgMTM3LCAzLCAyMTcsIDExNCwgMTEwLCAxLCAKLSAgICAxMzcsIDMsIDIyNSwgMTA1LCAxMTAsIDEsIDI0OCwgMTA5LCAzLCAyNDQsIDE5NywgMTEwLCAxLCAyMzgsIDY4LCAzLCAyNDQsIAotICAgIDE5NywgMTEwLCAxLCAyNDQsIDE3OSwgMywgMjQ0LCAxOTcsIDExMCwgMSwgMjM3LCA2OCwgMywgMjI1LCAxMDUsIDExMCwgMSwgCi0gICAgMjA2LCA2MCwgMywgMjQ0LCAxOTcsIDExMCwgMSwgMjAyLCA5NiwgMywgMjQ0LCAxOTcsIDExMCwgMSwgMjA5LCAxMzMsIDMsIAotICAgIDI0NCwgMTk3LCAxMTAsIDEsIDIwMiwgMjM3LCAzLCAyNDQsIDE5NywgMTEwLCAxLCA0NiwgMjMwLCAyMywgMywgMjQ0LCAKLSAgICAxOTcsIDExMCwgMSwgMjMwLCAyMywgMywgMjQ0LCAxOTcsIDExMCwgMSwgMjI4LCAyMSwgMywgMjQ0LCAxOTcsIDExMCwgMSwgCi0gICAgMjI0LCAyNDgsIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDIyMSwgNDEsIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDIxNCwgMjUwLCAzLCAKLSAgICAyNDQsIDE5NywgMTEwLCAxLCA0NiwgMjE5LCAzNSwgMywgMjQ0LCAxOTcsIDExMCwgMSwgMjE5LCAzNSwgMywgMjQ0LCAxOTcsIAotICAgIDExMCwgMSwgMjA4LCAxNiwgMywgMjQ0LCAxOTcsIDExMCwgMSwgMjE3LCA3NSwgMywgMjQ0LCAxOTcsIDExMCwgMSwgMjE2LCAKLSAgICA5MiwgMywgMjQ0LCAxOTcsIDExMCwgMSwgMjEzLCAwLCAzLCAyNDQsIDE5NywgMTEwLCAxLCAyMDksIDIwNCwgMywgMjQ0LCAKLSAgICAxOTcsIDExMCwgMSwgMjA2LCA2MCwgMywgMjM2LCAxMjgsIDExMCwgMSwgMjQ4LCAxMDksIDMsIDIxNiwgMjAwLCAxMTAsIDEsIAotICAgIDIzMCwgMjMsIDMsIDIxNiwgMjAwLCAxMTAsIDEsIDIxOSwgMzUsIDMsIDIxNiwgMjAwLCAxMTAsIDMyLCAxMzcsIDIyOCwgCi0gICAgMjAsIDEwLCAxLCAxMzcsIDIwNCwgODgsIDY0LCAxOCwgMTAsIDEsIDEzNywgMjA0LCA4OCwgNDYsIDE4LCAxMCwgMSwgMjQ4LCAKLSAgICAxNDksIDY0LCAxOCwgMTAsIDEsIDI0OCwgMTQ5LCA0NiwgMTgsIDEwLCAxLCAyNDgsIDE0OSwgODEsIDE4LCAxMCwgMSwgCi0gICAgMjQ4LCAxNDksIDE3NCwgMTgsIDEwLCAxLCAyMTksIDE3LCA2NCwgMTgsIDEwLCAxLCAyMTksIDE3LCA0NiwgMTgsIDEwLCAxLCAKLSAgICAyMTksIDE3LCA4MSwgMTgsIDEwLCAxLCAyMTksIDE3LCAxNzQsIDE4LCAxMCwgMSwgMjQ4LCAxMzcsIDY0LCAxOCwgMTAsIDEsIAotICAgIDI0OCwgMTM3LCA0NiwgMTgsIDEwLCAxLCAyNDgsIDEzNywgODEsIDE4LCAxMCwgMSwgMjQ4LCAxMzcsIDE3NCwgMTgsIDEwLCAKLSAgICAxLCAyMDcsIDIzMiwgNjQsIDE4LCAxMCwgMSwgMjA3LCAyMzIsIDQ2LCAxOCwgMTAsIDEsIDIwNywgMjMyLCA4MSwgMTgsIAotICAgIDEwLCAxLCAyMDcsIDIzMiwgMTc0LCAxOCwgMTAsIDEsIDIwOSwgMTY4LCA2NCwgMTgsIDEwLCAxLCAyMDksIDE2OCwgNDYsIAotICAgIDE4LCAxMCwgMSwgMjA5LCAxNjgsIDgxLCAxOCwgMTAsIDEsIDIwOSwgMTY4LCAxNzQsIDE4LCAxMCwgMSwgMjA3LCAyMzQsIAotICAgIDY0LCAxOCwgMTAsIDEsIDIwNywgMjM0LCA0NiwgMTgsIDEwLCAxLCAyMDcsIDIzNCwgODEsIDE4LCAxMCwgMSwgMjA3LCAKLSAgICAyMzQsIDE3NCwgMTgsIDEwLCAxLCAyMDYsIDQ5LCA2NCwgMTgsIDEwLCAxLCAyMDYsIDQ5LCA0NiwgMTgsIDEwLCAxLCAyMDYsIAotICAgIDQ5LCA4MSwgMTgsIDEwLCAxLCAyMDYsIDQ5LCAxNzQsIDE4LCAxMCwgMSwgMjE5LCAxNSwgNjQsIDE4LCAxMCwgMSwgMjE5LCAKLSAgICAxNSwgNDYsIDE4LCAxMCwgMSwgMjE5LCAxNSwgODEsIDE4LCAxMCwgMSwgMjE5LCAxNSwgMTc0LCAxOCwgMTAsIDEsIDI0MiwgCi0gICAgNiwgNjQsIDE4LCAxMCwgMSwgMjQyLCA2LCA0NiwgMTgsIDEwLCAxLCAyNDIsIDYsIDgxLCAxOCwgMTAsIDEsIDI0MiwgNiwgCi0gICAgMTc0LCAxOCwgMTAsIDEsIDIyMCwgMjU1LCA2NCwgMTgsIDEwLCAxLCAyMjAsIDI1NSwgNDYsIDE4LCAxMCwgMSwgMjIwLCAKLSAgICAyNTUsIDgxLCAxOCwgMTAsIDEsIDIyMCwgMjU1LCAxNzQsIDE4LCAxMCwgMSwgMjA5LCAxOTIsIDY0LCAxOCwgMTAsIDEsIAotICAgIDIwOSwgMTkyLCA0NiwgMTgsIDEwLCAxLCAyMDksIDE5MiwgODEsIDE4LCAxMCwgMSwgMjA5LCAxOTIsIDE3NCwgMTgsIDEwLCAKLSAgICAxLCAyMDksIDE5MCwgNjQsIDE4LCAxMCwgMSwgMjA5LCAxOTAsIDQ2LCAxOCwgMTAsIDEsIDIwOSwgMTkwLCA4MSwgMTgsIAotICAgIDEwLCAxLCAyMDksIDE5MCwgMTc0LCAxOCwgMTAsIDEsIDI0NCwgMTE4LCA2NCwgMTgsIDEwLCAxLCAyNDQsIDExOCwgNDYsIAotICAgIDE4LCAxMCwgMSwgMjQ0LCAxOTIsIDY0LCAxOCwgMTAsIDEsIDI0NCwgMTkyLCA0NiwgMTgsIDEwLCAxLCAyNDIsIDM0LCA2NCwgCi0gICAgMTgsIDEwLCAxLCAyNDIsIDM0LCA0NiwgMTgsIDEwLCAxLCAyNDQsIDExNiwgNjQsIDE4LCAxMCwgMSwgMjQ0LCAxMTYsIDQ2LCAKLSAgICAxOCwgMTAsIDEsIDIzMCwgMTU2LCA2NCwgMTgsIDEwLCAxLCAyMzAsIDE1NiwgNDYsIDE4LCAxMCwgMSwgMjE1LCAxNzgsIAotICAgIDY0LCAxOCwgMTAsIDEsIDIxNSwgMTc4LCA0NiwgMTgsIDEwLCAxLCAyMjksIDE5MCwgNjQsIDE4LCAxMCwgMSwgMjI5LCAKLSAgICAxOTAsIDQ2LCAxOCwgMTAsIDEsIDIyOSwgMTkwLCA4MSwgMTgsIDEwLCAxLCAyMjksIDE5MCwgMTc0LCAxOCwgMTAsIDEsIAotICAgIDIzOCwgMjUyLCA2NCwgMTgsIDEwLCAxLCAyMzgsIDI1MiwgNDYsIDE4LCAxMCwgMSwgMjM4LCAyNTIsIDgxLCAxOCwgMTAsIAotICAgIDEsIDIzOCwgMjUyLCAxNzQsIDE4LCAxMCwgMSwgMjM3LCAyMTgsIDY0LCAxOCwgMTAsIDEsIDIzNywgMjE4LCA0NiwgMTgsIAotICAgIDEwLCAxLCAyMzcsIDIxOCwgODEsIDE4LCAxMCwgMSwgMjM3LCAyMTgsIDE3NCwgMTgsIDEwLCAxLCAyMjIsIDEyNywgNjQsIAotICAgIDE4LCAxMCwgMSwgMjIyLCAxMjcsIDQ2LCAxOCwgMTAsIDEsIDIyMiwgMTI3LCA4MSwgMTgsIDEwLCAxLCAyMjIsIDEyNywgCi0gICAgMTc0LCAxOCwgMTAsIDEsIDIyMSwgMTc5LCAyMzgsIDg2LCA2NCwgMTgsIDEwLCAxLCAyMjEsIDE3OSwgMjM4LCA4NiwgNDYsIAotICAgIDE4LCAxMCwgMSwgMjE1LCAyMzEsIDY0LCAxOCwgMTAsIDEsIDIxNSwgMjMxLCA0NiwgMTgsIDEwLCAxLCAyMTUsIDIzMSwgCi0gICAgODEsIDE4LCAxMCwgMSwgMjE1LCAyMzEsIDE3NCwgMTgsIDEwLCAxLCAyMzcsIDQ0LCAzLCA4OSwgODcsIDY0LCAxOCwgMTAsIAotICAgIDEsIDIzNywgNDQsIDMsIDg5LCA4NywgNDYsIDE4LCAxMCwgMSwgMjM3LCA0NCwgMjM4LCAzNywgNjQsIDE4LCAxMCwgMSwgCi0gICAgMjM3LCA0NCwgMjM4LCAzNywgNDYsIDE4LCAxMCwgMSwgMjM3LCA0NCwgMjM4LCAzNywgODEsIDE4LCAxMCwgMSwgMjM3LCAKLSAgICA0NCwgMjM4LCAzNywgMTc0LCAxOCwgMTAsIDEsIDIzNywgNDQsIDI0MywgMTEwLCA2NCwgMTgsIDEwLCAxLCAyMzcsIDQ0LCAKLSAgICAyNDMsIDExMCwgNDYsIDE4LCAxMCwgMSwgMjM3LCA0NCwgMjQzLCAxMTAsIDgxLCAxOCwgMTAsIDEsIDIzNywgNDQsIDI0MywgCi0gICAgMTEwLCAxNzQsIDE4LCAxMCwgMSwgODksIDI0OCwgMjI0LCA2NCwgMTgsIDEwLCAxLCA4OSwgMjQ4LCAyMjQsIDQ2LCAxOCwgCi0gICAgMTAsIDEsIDg5LCAyNDgsIDIyNCwgMywgMjM3LCAxMjgsIDg3LCA2NCwgMTgsIDEwLCAxLCA4OSwgMjQ4LCAyMjQsIDMsIAotICAgIDIzNywgMTI4LCA4NywgNDYsIDE4LCAxMCwgMTYsIDcwLCA1NSwgMTAsIDE2LCA3MCwgNTYsIDEwLCAxNiwgMTIwLCAxODcsIAotICAgIDU1LCAxMCwgMTYsIDEyMCwgMTg3LCA1NiwgMTAsIDE2LCAxMjYsIDE4NywgNTUsIDEwLCAxNiwgMTI2LCAxODcsIDU2LCAxMCwgCi0gICAgMTYsIDEyNiwgMTg3LCAyMTgsIDU5LCAxODMsIDU1LCAxMCwgMTYsIDEyNiwgMTg3LCAyMTgsIDU5LCAxODMsIDU2LCAxMCwgCi0gICAgMTYsIDIzOSwgMTQ3LCAxODcsIDU1LCAxMCwgMTYsIDIzOSwgMTQ3LCAxODcsIDU2LCAxMCwgMTYsIDUyLCA4MCwgMjQ4LCAKLSAgICAyMzEsIDU2LCAxMCwgMTYsIDEyMCwgMTg3LCAyMDUsIDI0NCwgNTUsIDEwLCAxNiwgMTIwLCAxODcsIDIwNSwgMjQ0LCA1NiwgCi0gICAgMTAsIDE2LCAyMTUsIDI1MiwgMTAsIDE2LCA1LCAyMDksIDI1MiwgNTUsIDEwLCAxNiwgNSwgMjA5LCAyNTIsIDU2LCAxMCwgCi0gICAgMSwgMjIyLCAyMDYsIDY0LCAxOCwgMTAsIDEsIDIyMiwgMjA2LCA0NiwgMTgsIDEwLCAxLCAyMjIsIDIwNiwgODEsIDE4LCAKLSAgICAxMCwgMSwgMjIyLCAyMDYsIDE3NCwgMTgsIDEwLCAxLCAxMDYsIDY0LCAxOCwgMTAsIDEsIDEwNiwgNDYsIDE4LCAxMCwgMSwgCi0gICAgMjIwLCA3NCwgNjQsIDE4LCAxMCwgMSwgMjIwLCA3NCwgNDYsIDE4LCAxMCwgMSwgMjAyLCAyMTQsIDY0LCAxOCwgMTAsIDEsIAotICAgIDIwMiwgMjE0LCA0NiwgMTgsIDEwLCAxLCAxMDYsIDMsIDIzNywgMTI4LCA4NywgNjQsIDE4LCAxMCwgMSwgMjA2LCA1NiwgCi0gICAgNjQsIDE4LCAxMCwgMSwgMjA2LCA1NiwgNDYsIDE4LCAxMCwgMSwgMjI5LCA3NiwgMjIwLCA3NCwgNjQsIDE4LCAxMCwgMSwgCi0gICAgMjI5LCA3NiwgMjIwLCA3NCwgNDYsIDE4LCAxMCwgMSwgMjI5LCA3NiwgMjAyLCAyMTQsIDY0LCAxOCwgMTAsIDEsIDIyOSwgCi0gICAgNzYsIDIwMiwgMjE0LCA0NiwgMTgsIDEwLCAxLCAxODgsIDY0LCAxOCwgMTAsIDEsIDE4OCwgNDYsIDE4LCAxMCwgMSwgMTg4LCAKLSAgICA4MSwgMTgsIDEwLCAxLCAxODgsIDE3NCwgMTgsIDEwLCAxLCAyMDcsIDE2LCAyMjksIDIwNSwgMjI5LCA3NiwgMTM3LCAyMjUsIAotICAgIDEzMCwgODEsIDE4LCAxMCwgMSwgMjA3LCAxNiwgMjI5LCAyMDUsIDIyOSwgNzYsIDEzNywgMjI1LCAxMzAsIDE3NCwgMTgsIAotICAgIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTM3LCA2NCwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgCi0gICAgMywgMTM3LCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjUxLCAxMTAsIDY0LCAxOCwgMTAsIDMyLCAKLSAgICA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyNTEsIDExMCwgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIAotICAgIDIwNCwgNzEsIDY0LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyMDQsIDcxLCA0NiwgMTgsIDEwLCAzMiwgCi0gICAgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTA2LCA2NCwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTA2LCAKLSAgICA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjIwLCA3NCwgNjQsIDE4LCAxMCwgMzIsIDg5LCAzLCAKLSAgICAyMzcsIDEyOCwgODcsIDMsIDIyMCwgNzQsIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyMDIsIAotICAgIDIxNCwgNjQsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDIwMiwgMjE0LCA0NiwgMTgsIDEwLCAzMiwgCi0gICAgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTg4LCA2NCwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTg4LCAKLSAgICA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTg4LCA4MSwgMTgsIDEwLCAzMiwgMjA3LCAxNiwgCi0gICAgMjI5LCA3NiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIDIwNywgMTYsIAotICAgIDIyOSwgNzYsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMDcsIDE2LCAKLSAgICAyMjksIDc2LCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAxMzcsIDIyNSwgMTMwLCA4MSwgMTgsIDEwLCAxLCAyNDAsIDc1LCAKLSAgICA4OSwgNjQsIDE4LCAxMCwgMSwgMjQwLCA3NSwgODksIDQ2LCAxOCwgMTAsIDEsIDI0MCwgNzUsIDg5LCA4MSwgMTgsIDEwLCAKLSAgICAxLCAyNDAsIDc1LCA4OSwgMTc0LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAxODQsIDY0LCAxOCwgMTAsIAotICAgIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAxNTEsIDY0LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAKLSAgICA4MywgNjQsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIAotICAgIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCAxODQsIDY0LCAxOCwgCi0gICAgMTAsIDMyLCAyNDgsIDEzOSwgMywgMTUxLCA2NCwgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDIyOSwgMTQxLCA2NCwgMTgsIAotICAgIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDEzNywgMjI1LCAxMzAsIDY0LCAKLSAgICAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMTg0LCA2NCwgMTgsIAotICAgIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAyMjksIDE0MSwgNjQsIDE4LCAKLSAgICAxMCwgMzIsIDIwOSwgMTcwLCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAxMzcsIDIyNSwgMTMwLCA2NCwgCi0gICAgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjA5LCA4OSwgMywgMTg0LCA2NCwgMTgsIDEwLCAKLSAgICAzMiwgMjA5LCA4OSwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyMDksIDg5LCAzLCAxMzcsIDIyNSwgMTMwLCA2NCwgMTgsIAotICAgIDEwLCAzMiwgMjA5LCA4OSwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAxODQsIDMsIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDE4NCwgCi0gICAgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAxNTEsIDMsIDE4NCwgNjQsIDE4LCAxMCwgMzIsIDE1MSwgMywgODMsIDY0LCAxOCwgCi0gICAgMTAsIDMyLCAyMjksIDE0MSwgMywgMTg0LCA2NCwgMTgsIDEwLCAzMiwgMjI5LCAxNDEsIDMsIDE1MSwgNjQsIDE4LCAxMCwgCi0gICAgMzIsIDIyOSwgMTQxLCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCAxODQsIDY0LCAxOCwgMTAsIDMyLCAKLSAgICAyMTQsIDE2MiwgMywgMTUxLCA2NCwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDIyOSwgMTQxLCA2NCwgMTgsIDEwLCAzMiwgCi0gICAgMjE0LCAxNjIsIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjE1LCAyOSwgMywgMTUxLCA2NCwgMTgsIDEwLCAzMiwgMjE1LCAKLSAgICAyOSwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyNDQsIDIwOCwgMywgMTg0LCA2NCwgMTgsIDEwLCAzMiwgMjQ0LCAyMDgsIDMsIAotICAgIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDI0NCwgMjA4LCAzLCAyMjksIDE0MSwgNjQsIDE4LCAxMCwgMzIsIDI0NCwgMjA4LCAzLCAKLSAgICA4MywgNjQsIDE4LCAxMCwgMzIsIDIwOSwgMjUyLCAzLCAxNTEsIDY0LCAxOCwgMTAsIDMyLCAyMDksIDI1MiwgMywgODMsIAotICAgIDY0LCAxOCwgMTAsIDMyLCAyMDIsIDExMSwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyNTEsIDYwLCAzLCAxODQsIDY0LCAxOCwgCi0gICAgMTAsIDMyLCAyNTEsIDYwLCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDIzOCwgMTE1LCAzLCAxODQsIDY0LCAxOCwgMTAsIDMyLCAKLSAgICAyMzgsIDExNSwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyNDAsIDQ4LCAzLCAxODQsIDY0LCAxOCwgMTAsIDMyLCAyNDAsIAotICAgIDQ4LCAzLCAxNTEsIDY0LCAxOCwgMTAsIDMyLCAyNDAsIDQ4LCAzLCAyMjksIDE0MSwgNjQsIDE4LCAxMCwgMzIsIDI0MCwgCi0gICAgNDgsIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjQwLCA0OCwgMywgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIAotICAgIDI0MCwgNDgsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjE3LCAxMjAsIDMsIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDIxNywgCi0gICAgMTIwLCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDIxNywgMTIwLCAzLCAxMzcsIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgCi0gICAgMjE3LCAxMjAsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgMTM3LCA2NCwgMTgsIDEwLCAzMiwgMjMwLCAKLSAgICAyMywgMywgMTg0LCA2NCwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgMTUxLCA2NCwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgCi0gICAgMjI5LCAxNDEsIDY0LCAxOCwgMTAsIDMyLCAyMzAsIDIzLCAzLCAyMjgsIDI5LCA2NCwgMTgsIDEwLCAzMiwgMjMwLCAyMywgCi0gICAgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyMzAsIDIzLCAzLCAxMzcsIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgMjMwLCAKLSAgICAyMywgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAxODQsIDY0LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAKLSAgICAxNTEsIDY0LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAyMjksIDE0MSwgNjQsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIAotICAgIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIDIyOCwgMjksIAotICAgIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgODMsIDMsIDE4NCwgNjQsIDE4LCAxMCwgMzIsIDgzLCAzLCAxNTEsIDY0LCAxOCwgCi0gICAgMTAsIDMyLCA4MywgMywgMjI5LCAxNDEsIDY0LCAxOCwgMTAsIDMyLCA4MywgMywgODMsIDY0LCAxOCwgMTAsIDMyLCA4MywgCi0gICAgMywgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIDgzLCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAKLSAgICAxODQsIDY0LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMTUxLCA2NCwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDIyOSwgCi0gICAgMTQxLCA2NCwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDEzNywgCi0gICAgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyMzcsIDQ0LCAzLCAKLSAgICAxODQsIDY0LCAxOCwgMTAsIDMyLCAyMzcsIDQ0LCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDIzNywgNDQsIDMsIDEzNywgCi0gICAgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAyMzcsIDQ0LCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDg5LCAzLCAxODQsIDY0LCAKLSAgICAxOCwgMTAsIDMyLCA4OSwgMywgMTUxLCA2NCwgMTgsIDEwLCAzMiwgODksIDMsIDIyOSwgMTQxLCA2NCwgMTgsIDEwLCAzMiwgCi0gICAgODksIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgODksIDMsIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCA4OSwgMywgCi0gICAgODksIDY0LCAxOCwgMTAsIDMyLCAyMDksIDEwMSwgMywgMjEwLCAxOTksIDEzNywgNjQsIDE4LCAxMCwgMzIsIDIxNiwgMTIzLCAKLSAgICAzLCAyMTAsIDE5OSwgMTM3LCA2NCwgMTgsIDEwLCAzMiwgMTM3LCAyMjUsIDEzMCwgMywgMjEwLCAxOTksIDEzNywgNjQsIAotICAgIDE4LCAxMCwgMzIsIDIxMywgODEsIDMsIDI0NCwgMTcxLCA2NCwgMTgsIDEwLCAzMiwgMjEzLCA4MSwgMywgMjI5LCAyMjgsIAotICAgIDY0LCAxOCwgMTAsIDMyLCAyMTMsIDgxLCAzLCAyNDAsIDcyLCA2NCwgMTgsIDEwLCAzMiwgMjEzLCA4MSwgMywgMjQ0LCAKLSAgICAxNzMsIDY0LCAxOCwgMTAsIDMyLCAyMTMsIDgxLCAzLCAyMjksIDIzMCwgNjQsIDE4LCAxMCwgMzIsIDIxMywgODEsIDMsIAotICAgIDIxMCwgMTk5LCAxMzcsIDY0LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyMTYsIDEyMywgNDYsIDE4LCAKLSAgICAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDIwMiwgMTA4LCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgCi0gICAgMTI4LCA4NywgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyMjEsIDE3OSwgNDYsIDE4LCAKLSAgICAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgCi0gICAgMjM3LCAxMjgsIDg3LCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCAyMTYsIDEyMywgNDYsIDE4LCAxMCwgCi0gICAgMzIsIDI0OCwgMTM5LCAzLCAyMDIsIDEwOCwgNDYsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCA4MywgNDYsIDE4LCAxMCwgCi0gICAgMzIsIDI0OCwgMTM5LCAzLCAyMjEsIDE3OSwgNDYsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCAxMzcsIDIyNSwgMTMwLCAKLSAgICA0NiwgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDIxNiwgMTIzLCAKLSAgICA0NiwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDIwMiwgMTA4LCA0NiwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDgzLCAKLSAgICA0NiwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDIyMSwgMTc5LCA0NiwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDEzNywgCi0gICAgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDg5LCAzLCAKLSAgICAyMTYsIDEyMywgNDYsIDE4LCAxMCwgMzIsIDIwOSwgODksIDMsIDIwMiwgMTA4LCA0NiwgMTgsIDEwLCAzMiwgMjA5LCA4OSwgCi0gICAgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDg5LCAzLCAyMjEsIDE3OSwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgODksIDMsIAotICAgIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDg5LCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDI0MCwgNDgsIAotICAgIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyNDAsIDQ4LCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIxNywgCi0gICAgMTIwLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjE3LCAxMjAsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgCi0gICAgMjMwLCAyMywgMywgMTM3LCA0NiwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgMjI4LCAyOSwgNDYsIDE4LCAxMCwgMzIsIAotICAgIDIzMCwgMjMsIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgCi0gICAgMzIsIDIzMCwgMjMsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCAyMjgsIAotICAgIDI5LCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCA4MywgCi0gICAgMywgMTM3LCA0NiwgMTgsIDEwLCAzMiwgODMsIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDIxNiwgMTIzLCAKLSAgICA0NiwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDIwMiwgMTA4LCA0NiwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDgzLCAKLSAgICA0NiwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDIyMSwgMTc5LCA0NiwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDEzNywgCi0gICAgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAxMzcsIDIyNSwgMTMwLCAKLSAgICAzLCAyMTAsIDE5OSwgMTM3LCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDIxNiwgMTIzLCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIAotICAgIDIwMiwgMTA4LCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDIyMSwgMTc5LCA0NiwgCi0gICAgMTgsIDEwLCAzMiwgODksIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgODksIDQ2LCAxOCwgMTAsIAotICAgIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAKLSAgICAxNTEsIDgxLCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyMjksIDE0MSwgODEsIDE4LCAxMCwgMzIsIAotICAgIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjM3LCAKLSAgICA0NCwgODEsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgMTUxLCAKLSAgICA4MSwgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDgzLCAKLSAgICA4MSwgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDIzNywgNDQsIDgxLCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMTg0LCAKLSAgICA4MSwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDE1MSwgODEsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAyMjksIDE0MSwgCi0gICAgODEsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAyMzcsIDQ0LCAKLSAgICA4MSwgMTgsIDEwLCAzMiwgMjA5LCA4OSwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAxODQsIDMsIDE1MSwgODEsIDE4LCAxMCwgCi0gICAgMzIsIDE4NCwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAxNTEsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDE1MSwgMywgODMsIAotICAgIDgxLCAxOCwgMTAsIDMyLCAyMjksIDE0MSwgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjI5LCAxNDEsIDMsIDgzLCA4MSwgCi0gICAgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCAxNTEsIDgxLCAxOCwgCi0gICAgMTAsIDMyLCAyMTQsIDE2MiwgMywgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgODMsIDgxLCAxOCwgCi0gICAgMTAsIDMyLCAyMTUsIDI5LCAzLCAxNTEsIDgxLCAxOCwgMTAsIDMyLCAyMTUsIDI5LCAzLCAyMjksIDE0MSwgODEsIDE4LCAKLSAgICAxMCwgMzIsIDIxNSwgMjksIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjQ0LCAyMDgsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIAotICAgIDI0NCwgMjA4LCAzLCAxNTEsIDgxLCAxOCwgMTAsIDMyLCAyNDQsIDIwOCwgMywgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDMyLCAKLSAgICAyNDQsIDIwOCwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMDksIDI1MiwgMywgMTUxLCA4MSwgMTgsIDEwLCAzMiwgMjAyLCAKLSAgICAxMTEsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjUxLCA2MCwgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjUxLCA2MCwgMywgCi0gICAgODMsIDgxLCAxOCwgMTAsIDMyLCAyMzgsIDExNSwgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjM4LCAxMTUsIDMsIDgzLCAKLSAgICA4MSwgMTgsIDEwLCAzMiwgMjQwLCA0OCwgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjQwLCA0OCwgMywgMTUxLCA4MSwgMTgsIAotICAgIDEwLCAzMiwgMjQwLCA0OCwgMywgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDMyLCAyNDAsIDQ4LCAzLCA4MywgODEsIDE4LCAxMCwgCi0gICAgMzIsIDIxNywgMTIwLCAzLCAxNTEsIDgxLCAxOCwgMTAsIDMyLCAyMTcsIDEyMCwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAKLSAgICAyMzAsIDIzLCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAyMzAsIDIzLCAzLCAxNTEsIDgxLCAxOCwgMTAsIDMyLCAyMzAsIAotICAgIDIzLCAzLCAyMjksIDE0MSwgODEsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIDIyOCwgMjksIDgxLCAxOCwgMTAsIDMyLCAKLSAgICAyMzAsIDIzLCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIyOCwgMjksIAotICAgIDMsIDE1MSwgODEsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgCi0gICAgODMsIDgxLCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAyMzcsIDQ0LCA4MSwgMTgsIDEwLCAzMiwgODMsIDMsIDE4NCwgODEsIAotICAgIDE4LCAxMCwgMzIsIDgzLCAzLCAxNTEsIDgxLCAxOCwgMTAsIDMyLCA4MywgMywgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDMyLCAKLSAgICA4MywgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIAotICAgIDE1MSwgODEsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAyMjksIDE0MSwgODEsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAKLSAgICA4MywgODEsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAyMzcsIDQ0LCA4MSwgMTgsIDEwLCAzMiwgMjM3LCA0NCwgMywgCi0gICAgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjM3LCA0NCwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMzcsIDQ0LCAzLCAyMTAsIAotICAgIDE5OSwgMTM3LCA4MSwgMTgsIDEwLCAzMiwgODksIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDg5LCAzLCAxNTEsIDgxLCAxOCwgCi0gICAgMTAsIDMyLCA4OSwgMywgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDMyLCA4OSwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCA4OSwgCi0gICAgMywgMjM3LCA0NCwgODEsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDgzLCAxNzQsIDE4LCAxMCwgMzIsIAotICAgIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDIzNywgNDQsIDE3NCwgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDgzLCAxNzQsIAotICAgIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCAyMzcsIDQ0LCAxNzQsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCA4MywgMTc0LCAKLSAgICAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMjM3LCA0NCwgMTc0LCAxOCwgMTAsIDMyLCAyMDksIDg5LCAzLCA4MywgMTc0LCAKLSAgICAxOCwgMTAsIDMyLCAyMDksIDg5LCAzLCAyMzcsIDQ0LCAxNzQsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCA4MywgMTc0LCAKLSAgICAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgMjM3LCA0NCwgMTc0LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCA4MywgMTc0LCAKLSAgICAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCAyMzcsIDQ0LCAxNzQsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIDIyOCwgMjksIAotICAgIDE3NCwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgODMsIDE3NCwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgODMsIDE3NCwgCi0gICAgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDgzLCAxNzQsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAyMzcsIDQ0LCAxNzQsIAotICAgIDE4LCAxMCwgMzIsIDg5LCAzLCA4MywgMTc0LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCA0NCwgMTc0LCAxOCwgMTAsIDMyLCAKLSAgICAyMTMsIDgxLCAzLCAyNDAsIDcyLCAxNzQsIDE4LCAxMCwgMzIsIDIxMywgODEsIDMsIDI0NCwgMTczLCAxNzQsIDE4LCAxMCwgCi0gICAgMzIsIDIxMywgODEsIDMsIDIyOSwgMjMwLCAxNzQsIDE4LCAxMCwgMzIsIDIwOSwgMjUyLCAzLCAxMzcsIDIyNSwgMTMwLCAKLSAgICA2NCwgMTgsIDEwLCAzMiwgMjA5LCAyNTIsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjUxLCA2MCwgMywgMTM3LCAyMjUsIAotICAgIDEzMCwgNjQsIDE4LCAxMCwgMzIsIDI1MSwgNjAsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjM4LCAxMTUsIDMsIDEzNywgCi0gICAgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAyMzgsIDExNSwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgCi0gICAgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDIxMywgNDAsIAotICAgIDMsIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDE1MSwgMywgCi0gICAgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIDE1MSwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAxODQsIDMsIDEzNywgCi0gICAgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAxODQsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjI5LCAxNDEsIDMsIDEzNywgCi0gICAgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAyMjksIDE0MSwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyMTUsIDI5LCAzLCAKLSAgICAxMzcsIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgMjE1LCAyOSwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyNDQsIDIwOCwgCi0gICAgMywgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIDI0NCwgMjA4LCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDIxMywgCi0gICAgNDAsIDMsIDE4NCwgNjQsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIAotICAgIDIyOSwgMTQxLCA2NCwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCAKLSAgICAyMTYsIDEyMywgNjQsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCAyMTYsIDEyMywgNjQsIDE4LCAxMCwgMzIsIDIxNSwgMjksIAotICAgIDMsIDIxNiwgMTIzLCA2NCwgMTgsIDEwLCAzMiwgMjQ0LCAyMDgsIDMsIDIxNiwgMTIzLCA2NCwgMTgsIDEwLCAzMiwgMjA5LCAKLSAgICAyNTIsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDI1MiwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAKLSAgICAyNTEsIDYwLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjUxLCA2MCwgMywgODksIDQ2LCAxOCwgMTAsIAotICAgIDMyLCAyMzgsIDExNSwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIzOCwgMTE1LCAzLCA4OSwgNDYsIDE4LCAKLSAgICAxMCwgMzIsIDIxNCwgMTYyLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDg5LCA0NiwgCi0gICAgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDg5LCAKLSAgICA0NiwgMTgsIDEwLCAzMiwgMTUxLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMTUxLCAzLCA4OSwgNDYsIAotICAgIDE4LCAxMCwgMzIsIDE4NCwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDE4NCwgMywgODksIDQ2LCAxOCwgCi0gICAgMTAsIDMyLCAyMjksIDE0MSwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIyOSwgMTQxLCAzLCA4OSwgNDYsIAotICAgIDE4LCAxMCwgMzIsIDIxNSwgMjksIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMTUsIDI5LCAzLCA4OSwgCi0gICAgNDYsIDE4LCAxMCwgMzIsIDI0NCwgMjA4LCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjQ0LCAyMDgsIDMsIAotICAgIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMTg0LCA0NiwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMTUxLCA0NiwgCi0gICAgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMjI5LCAxNDEsIDQ2LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCA4MywgNDYsIDE4LCAKLSAgICAxMCwgMzIsIDIxMywgNDAsIDMsIDIxNiwgMTIzLCA0NiwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDIxNiwgMTIzLCA0NiwgCi0gICAgMTgsIDEwLCAzMiwgMjE1LCAyOSwgMywgMjE2LCAxMjMsIDQ2LCAxOCwgMTAsIDMyLCAyNDQsIDIwOCwgMywgMjE2LCAxMjMsIAotICAgIDQ2LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCAxNTEsIDgxLCAxOCwgCi0gICAgMTAsIDMyLCAyMTMsIDQwLCAzLCAyMjksIDE0MSwgODEsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDgzLCA4MSwgMTgsIDEwLCAKLSAgICAzMiwgMjE0LCAxNjIsIDMsIDIzNywgNDQsIDgxLCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCAyMzcsIDQ0LCA4MSwgMTgsIAotICAgIDEwLCAzMiwgMjA5LCAyNTIsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDE4NCwgMTc0LCAxOCwgMTAsIAotICAgIDMyLCAyMTQsIDE2MiwgMywgMTUxLCAxNzQsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCAyMjksIDE0MSwgMTc0LCAxOCwgCi0gICAgMTAsIDMyLCAyMTMsIDQwLCAzLCAxODQsIDE3NCwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMTUxLCAxNzQsIDE4LCAxMCwgCi0gICAgMzIsIDIxMywgNDAsIDMsIDIyOSwgMTQxLCAxNzQsIDE4LCAxMCwgMzIsIDIwOSwgMjUyLCAzLCA4MywgMTc0LCAxOCwgMTAsIAotICAgIDMyLCAyMDIsIDExMSwgMywgODMsIDE3NCwgMTgsIDEwLCAzMiwgMTM3LCAzLCAyNDAsIDcwLCA0NiwgMTgsIDEwLCAzMiwgCi0gICAgMTM3LCAzLCAyNDAsIDcwLCA2NCwgMTgsIDIxOSwgMjMxLCA0OSwgMjE5LCA3NiwgMjE5LCAyMzEsIDUwLCAyMTksIDc2LCAKLSAgICAxMCwgMzIsIDIwOSwgMTcwLCAzLCAxODQsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDE1MSwgMywgCi0gICAgMTg0LCA0NiwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDE1MSwgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIAotICAgIDMsIDE1MSwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMjI5LCAxNDEsIDMsIDgzLCA4MSwgMTgsIDEwLCAKLSAgICAzMiwgMjA5LCAxNzAsIDMsIDgzLCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgODMsIDMsIDE1MSwgODEsIAotICAgIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCA4MywgMywgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDMyLCAxODQsIDMsIDgzLCAzLCAKLSAgICAxNTEsIDQ2LCAxOCwgMTAsIDMyLCAxODQsIDMsIDgzLCAzLCAxNTEsIDgxLCAxOCwgMTAsIDMyLCAxNTEsIDMsIDgzLCAzLCAKLSAgICA4OSwgNDYsIDE4LCAxMCwgMzIsIDE1MSwgMywgODMsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMTQsIAotICAgIDE2MiwgMywgMTUxLCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgMTg0LCAzLCAxNTEsIDgxLCAxOCwgCi0gICAgMTAsIDMyLCAyMTQsIDE2MiwgMywgMTg0LCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIAotICAgIDgzLCAzLCAxNTEsIDQ2LCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgODMsIDMsIDE1MSwgODEsIDE4LCAxMCwgMzIsIDIxNCwgCi0gICAgMTYyLCAzLCA4MywgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDgzLCAzLCA4MywgNDYsIDE4LCAxMCwgCi0gICAgMzIsIDIxNCwgMTYyLCAzLCA4MywgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMTUsIDI5LCAzLCAxNTEsIDMsIDE1MSwgNDYsIAotICAgIDE4LCAxMCwgMzIsIDIxNSwgMjksIDMsIDE1MSwgMywgMTUxLCA4MSwgMTgsIDEwLCAzMiwgMjE1LCAyOSwgMywgODMsIDMsIAotICAgIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMTUxLCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIAotICAgIDE1MSwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCAxODQsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjEzLCAKLSAgICA0MCwgMywgODMsIDMsIDIyOSwgMTQxLCA0NiwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgODMsIDMsIDIyOSwgMTQxLCA4MSwgCi0gICAgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgODMsIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgODMsIDMsIDgzLCAKLSAgICA4MSwgMTgsIDEwLCAzMiwgMjQ0LCAyMDgsIDMsIDE1MSwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDI0NCwgCi0gICAgMjA4LCAzLCAyMjksIDE0MSwgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCAyNDQsIDIwOCwgMywgMjI5LCAxNDEsIDMsIDgzLCAKLSAgICA4MSwgMTgsIDEwLCAzMiwgMjA5LCAyNTIsIDMsIDgzLCAzLCAxNTEsIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDI1MiwgMywgODMsIAotICAgIDMsIDE1MSwgODEsIDE4LCAxMCwgMzIsIDIwOSwgMjUyLCAzLCA4MywgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMDksIDI1MiwgCi0gICAgMywgODMsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjUxLCA2MCwgMywgMTg0LCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIAotICAgIDI1MSwgNjAsIDMsIDgzLCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDI1MSwgNjAsIDMsIDgzLCAzLCA4MywgODEsIDE4LCAxMCwgCi0gICAgMzIsIDI1MSwgNjAsIDMsIDgzLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjM4LCAxMTUsIDMsIDgzLCAzLCAKLSAgICA4MywgNDYsIDE4LCAxMCwgMzIsIDIzOCwgMTE1LCAzLCA4MywgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMzgsIDExNSwgMywgCi0gICAgODMsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyNDAsIDQ4LCAzLCAyMjksIDE0MSwgMywgODMsIDQ2LCAKLSAgICAxOCwgMTAsIDMyLCAyNDAsIDQ4LCAzLCAyMjksIDE0MSwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMTcsIDEyMCwgMywgODMsIAotICAgIDMsIDE1MSwgNDYsIDE4LCAxMCwgMzIsIDIxNywgMTIwLCAzLCA4MywgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAKLSAgICAzLCAxNTEsIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMTUxLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIAotICAgIDIyOCwgMjksIDMsIDE1MSwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDE4NCwgMywgCi0gICAgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMTg0LCAzLCAxODQsIDQ2LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAKLSAgICAyMjksIDE0MSwgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAyMjksIDE0MSwgMywgODMsIDgxLCAxOCwgMTAsIAotICAgIDMyLCAyMjgsIDI5LCAzLCA4MywgMywgMTUxLCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgODMsIDMsIDE1MSwgODEsIAotICAgIDE4LCAxMCwgMzIsIDgzLCAzLCAxNTEsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDgzLCAzLCAxNTEsIDMsIDgzLCA4MSwgCi0gICAgMTgsIDEwLCAzMiwgODMsIDMsIDE1MSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCA4MywgMywgMTg0LCAzLCAxNTEsIDgxLCAKLSAgICAxOCwgMTAsIDMyLCA4MywgMywgMTg0LCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDgzLCAzLCAyMjksIDE0MSwgMywgMTg0LCAKLSAgICA4MSwgMTgsIDEwLCAzMiwgODMsIDMsIDIyOSwgMTQxLCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDgzLCAzLCAxODQsIDMsIAotICAgIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAzMiwgMjM3LCA0NCwgMywgODMsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIzNywgCi0gICAgNDQsIDMsIDgzLCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAxNTEsIDMsIDgzLCA4MSwgMTgsIDEwLCAKLSAgICAzMiwgMjIxLCAxNzksIDMsIDE1MSwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAxODQsIAotICAgIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDE4NCwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgCi0gICAgMywgMTg0LCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDgzLCAzLCA4OSwgNDYsIDE4LCAKLSAgICAxMCwgMzIsIDIyMSwgMTc5LCAzLCA4MywgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCA4MywgMywgCi0gICAgODMsIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgODMsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDIyOSwgCi0gICAgMTQxLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAxODQsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjA5LCAKLSAgICAxNzAsIDMsIDE4NCwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAyMjksIDE0MSwgMywgCi0gICAgODksIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMjI5LCAxNDEsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIAotICAgIDMyLCAyMDksIDE3MCwgMywgODMsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDgzLCAzLCAxMzcsIDIyNSwgCi0gICAgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMTg0LCAzLCA4MywgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAxODQsIDMsIDE1MSwgMywgCi0gICAgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDE4NCwgMywgODMsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIAotICAgIDMyLCAyMTQsIDE2MiwgMywgMjI5LCAxNDEsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMTUsIDI5LCAzLCAKLSAgICAxNTEsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMTUxLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDI0NCwgCi0gICAgMjA4LCAzLCAxNTEsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMTg0LCAzLCA4OSwgNDYsIDE4LCAxMCwgCi0gICAgMzIsIDIyOCwgMjksIDMsIDgzLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCAxNTEsIDMsIDg5LCA0NiwgMTgsIDEwLCAKLSAgICAzMiwgODksIDMsIDE4NCwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgODMsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgCi0gICAgODMsIDMsIDgzLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIxNywgMTIwLCAzLCA4MywgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAKLSAgICAyMjEsIDE3OSwgMywgMTUxLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIxNywgMTIwLCAzLCA4MywgMywgMTUxLCA4MSwgMTgsIAotICAgIDEwLCAzMiwgMjI4LCAyOSwgMywgMTUxLCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDI1MSwgNjAsIDMsIDgzLCAzLCA4OSwgCi0gICAgNDYsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIDgzLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAxODQsIAotICAgIDMsIDE1MSwgODEsIDE4LCAxMCwgMzIsIDgzLCAzLCAyMjksIDE0MSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAKLSAgICAzLCAxODQsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgODMsIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgCi0gICAgMjI4LCAyOSwgMywgMTg0LCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAxODQsIDMsIDE1MSwgNDYsIDE4LCAKLSAgICAxMCwgMzIsIDE4NCwgMywgMTUxLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDE1MSwgMywgMTg0LCAzLCA4OSwgNDYsIDE4LCAKLSAgICAxMCwgMzIsIDgzLCAzLCAxODQsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjQwLCA0OCwgMywgODMsIDMsIDg5LCA0NiwgMTgsIAotICAgIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDE1MSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMzAsIDIzLCAzLCA4MywgMywgODMsIAotICAgIDgxLCAxOCwgMTAsIDMyLCAyNTEsIDYwLCAzLCAxODQsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjE1LCAyOSwgMywgODMsIAotICAgIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDIyOSwgMTQxLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIyMSwgCi0gICAgMTc5LCAzLCAxODQsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjE1LCA0LCAyMDYsIDE4OCwgMjUwLCA4MiwgMjI4LCAyNTQsIAotICAgIDIxMSwgNjIsIDIsIDY0LCAxOCwgMTAsIDMyLCAyMTcsIDExNiwgMjA2LCAxODgsIDI1MCwgODIsIDIyOCwgMjU0LCAyMTEsIAotICAgIDYyLCAyLCA2NCwgMTgsIDEwLCAzMiwgMjUxLCAxMywgNjQsIDE4LCAxMCwgMzIsIDI1MSwgNDQsIDY0LCAxOCwgMTAsIDMyLCAKLSAgICAyMjQsIDU3LCA2NCwgMTgsIDEwLCAzMiwgMjE1LCA1LCA2NCwgMTgsIDEwLCAzMiwgMjE2LCAxNzQsIDY0LCAxOCwgMTAsIAotICAgIDMyLCAyNTEsIDMzLCA2NCwgMTgsIDEwLCAzMiwgMjA0LCA5MCwgNjQsIDE4LCAxMCwgMzIsIDIxNSwgNCwgNjQsIDE4LCAxMCwgCi0gICAgMzIsIDIxNSwgMywgMjUxLCAzMywgMjA0LCA4OSwgMTAsIDMyLCAyMzAsIDE3MiwgMjE2LCA1NiwgNTQsIDEwLCAzMiwgMjQ4LCAKLSAgICA1MywgMjUwLCAxNDIsIDI1MCwgMTQzLCA1NywgMjE0LCAxNDksIDU3LCAyMTQsIDM4LCA1NywgMjEzLCAyMjYsIDU3LCAyMTMsIAotICAgIDIxNSwgNTcsIDIxMywgMjA0LCA1NywgMjEzLCAxOTMsIDU3LCAyMTMsIDE4MiwgNTcsIDIxMywgMTcxLCA1NywgMjEzLCAKLSAgICAxNjAsIDU3LCAyMTQsIDE0OCwgNTcsIDIxNCwgMTM3LCA1NywgMjE0LCAxMjYsIDU3LCAyMTQsIDExNSwgNTcsIDIxNCwgCi0gICAgMTA0LCA1NywgMjE0LCA5MywgNTcsIDIxNCwgODIsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCAyNDUsIDIzMywgMjE3LCAKLSAgICAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDEzOSwgMjQ1LCAyMzMsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCAxMzksIAotICAgIDIzOSwgMTAyLCAyMTEsIDYxLCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgMjQ1LCAyNDIsIDIxNywgMjQxLCAyMzksIAotICAgIDE1OSwgMzUsIDgwLCAyMTMsIDE0MywgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDI0MCwgMjEyLCA4MiwgMjE3LCAKLSAgICAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDIxNywgNDcsIDgyLCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNDksIDYxLCAKLSAgICAyMjcsIDE4NSwgMTU1LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNTAsIDYxLCAyMjcsIDE4NSwgMjQ3LCAyMjUsIAotICAgIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCAyMzYsIDEwNiwgMjQxLCAxMDgsIDM5LCAzMiwgNDksIDIzNywgMTM3LCAzOSwgCi0gICAgMzIsIDUwLCAyMzcsIDEzNywgMzksIDUyLCAyMDgsIDIyOCwgNDksIDIzNywgMTM3LCAzOSwgNTIsIDIwOCwgMjI4LCA1MCwgCi0gICAgMjM3LCAxMzcsIDM5LCAyMjUsIDE3MSwgNDksIDIzNywgMTM3LCAzOSwgMjI1LCAxNzEsIDUwLCAyMzcsIDEzNywgMzksIAotICAgIDI0NSwgMjA2LCAyMjUsIDE3MCwgMzksIDMyLCA0OSwgMTYyLCA1NiwgMzksIDMyLCA1MCwgMTYyLCA1NiwgMzksIDIwOCwgCi0gICAgMjI4LCA0OSwgMTYyLCA1NiwgMzksIDIwOCwgMjI4LCA1MCwgMTYyLCA1NiwgMzksIDIyNSwgMTcxLCA0OSwgMTYyLCA1NiwgCi0gICAgMzksIDIyNSwgMTcxLCA1MCwgMTYyLCA1NiwgMzksIDI0NSwgMjA2LCAyMjUsIDE3MSwgNTYsIDM5LCAzNiwgMjA4LCAxOTgsIAotICAgIDQ5LCAyMzcsIDEzNywgMzksIDM2LCAyMDgsIDE5OCwgNTAsIDIzNywgMTM3LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgCi0gICAgMTIwLCA3MCwgMjI3LCAyMzIsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCAyNDEsIDEwNCwgMjQ0LCAxNDQsIDIxNywgCi0gICAgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCAyNDEsIDkzLCAyNDQsIDE0NCwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIAotICAgIDEyNCwgMjI3LCAxMTQsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCAyMDQsIDcyLCAxMjQsIDIyNywgMTE0LCAyMTcsIAotICAgIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNDksIDIxOSwgNzYsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCA1MCwgMjE5LCAKLSAgICA3NiwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDQ5LCAyNDUsIDkzLCAxNTUsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIAotICAgIDgwLCA1MCwgMjQ1LCA5MywgMTU1LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNDksIDIwOCwgMTMzLCAyMTMsIDMzLCAKLSAgICAxNTUsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCA1MCwgMjA4LCAxMzMsIDIxMywgMzMsIDE1NSwgMjE3LCAyNDEsIAotICAgIDIzOSwgMTU5LCAzNSwgODAsIDQ5LCA2MiwgMjI3LCAxODUsIDE1NSwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDUwLCAKLSAgICA2MiwgMjI3LCAxODUsIDE1NSwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDQ5LCA1MiwgMjUwLCAyMTgsIDE1NSwgCi0gICAgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDUwLCA1MiwgMjUwLCAyMTgsIDE1NSwgMjE3LCAyNDEsIDIzOSwgMTU5LCAKLSAgICAzNSwgODAsIDQ5LCAyNTAsIDIxOCwgMTU1LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNTAsIDI1MCwgMjE4LCAxNTUsIAotICAgIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCA0OSwgMjQ1LCAxNjYsIDE1NSwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgCi0gICAgODAsIDUwLCAyNDUsIDE2NiwgMTU1LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNDksIDYxLCAyNDUsIDE2NiwgMTU1LCAKLSAgICAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNTAsIDYxLCAyNDUsIDE2NiwgMTU1LCAyMTMsIDEyMSwgMjQzLCA4NSwgNjEsIAotICAgIDIxMywgMTIxLCAyNDMsIDg1LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNDksIDUxLCAxNTUsIDIxNywgMjQxLCAKLSAgICAyMzksIDE1OSwgMzUsIDgwLCA1MCwgNTEsIDE1NSwgMjQ0LCAxNDMsIDIxOSwgMTk4LCAyNDYsIDIxNCwgMjE5LCAxOTgsIAotICAgIDIwNCwgNzIsIDIxOSwgMTk4LCA1MiwgMjA0LCA3MiwgMjE5LCAxOTgsIDI0NCwgMTQzLCAxMjQsIDIyNywgMTE0LCAyNDYsIAotICAgIDIxNCwgMTI0LCAyMjcsIDExNCwgMjA0LCA3MiwgMTI0LCAyMjcsIDExNCwgNSwgMjQ1LCAyMzMsIDUsIDEzOSwgMjQ1LCAKLSAgICAyMzMsIDUsIDIzOSwgMTAyLCAyMTEsIDYxLCA1LCAyMTMsIDE0MywgNSwgMjQ1LCAyNDIsIDUsIDIxNywgNDcsIDgyLCA1LCAKLSAgICAyNDAsIDIxMiwgODIsIDUsIDI0MSwgMTA0LCAyNDQsIDE0NCwgNSwgNDksIDIxOSwgNzYsIDUsIDUwLCAyMTksIDc2LCA1LCAKLSAgICA0OSwgMjQ1LCA5MywgMTU1LCA1LCA1MCwgMjQ1LCA5MywgMTU1LCA1LCA0OSwgMjA4LCAxMzMsIDIxMywgMzMsIDE1NSwgNSwgCi0gICAgNTAsIDIwOCwgMTMzLCAyMTMsIDMzLCAxNTUsIDUsIDQyLCA1NCwgNSwgMjUwLCAyMzUsIDUsIDI1MCwgNTksIDUsIDkxLCAKLSAgICA1NCwgNSwgMjM1LCAyMTksIDUsIDIyNywgMTc5LCA1NCwgNSwgMjM3LCAyNDcsIDU0LCA1LCAyNDEsIDM1LCA1NCwgNSwgCi0gICAgMjE2LCA3NCwgMjEyLCAwLCA1LCAyNDMsIDk3LCA1NCwgNSwgMjE4LCAyNDYsIDU0LCA1LCAyNDUsIDIzMSwgMjUwLCA0OSwgCi0gICAgMTAsIDI0MCwgNzAsIDY0LCAxOCwgMTAsIDIwOSwgMjEwLCAzLCAyNDAsIDcwLCA1NSwgMTAsIDI0NCwgMTcxLCA2NCwgMTgsIAotICAgIDEwLCAyMDksIDI0OSwgMjM5LCAxMzcsIDEwLCAyMjksIDIyOCwgNjQsIDE4LCAxMCwgMjQwLCA3MiwgNjQsIDE4LCAxMCwgCi0gICAgMjQwLCA3MiwgMTc0LCAxOCwgMTAsIDI0NCwgMTczLCA2NCwgMTgsIDEwLCAyNDQsIDE3MywgMTc0LCAxOCwgMTAsIDIyOSwgCi0gICAgMjMwLCA2NCwgMTgsIDEwLCAyMjksIDIzMCwgMTc0LCAxOCwgMTAsIDIxMywgODEsIDY0LCAxOCwgMTAsIDIxMywgODEsIAotICAgIDE3NCwgMTgsIDEwLCAyMTAsIDIyMywgNjQsIDE4LCAxMCwgMjEwLCAyMjMsIDE3NCwgMTgsIDEwLCAxLCAyMzcsIDEyOCwgCi0gICAgNjQsIDE4LCAxMCwgMSwgMTM3LCAzLCAyMjUsIDE2NiwgODcsIDY0LCAxOCwgMTAsIDEsIDEzNywgMywgMjI1LCAxNjYsIDg3LCAKLSAgICA0NiwgMTgsIDEwLCAxLCAxMzcsIDMsIDIzNywgMTI4LCA4NywgNjQsIDE4LCAxMCwgMSwgMTM3LCAzLCAyMzcsIDEyOCwgODcsIAotICAgIDQ2LCAxOCwgMTAsIDEsIDIwNCwgNzEsIDMsIDIzNywgMTI4LCA4NywgNjQsIDE4LCAxMCwgMSwgMjA0LCA3MSwgMywgMjM3LCAKLSAgICAxMjgsIDg3LCA0NiwgMTgsIDEwLCAxLCAxMzcsIDMsIDIzNywgMTI4LCAyNDgsIDEyNiwgNjQsIDE4LCAxMCwgMSwgMTM3LCAKLSAgICAzLCAyMzcsIDEyOCwgMjQ4LCAxMjYsIDQ2LCAxOCwgMTAsIDEsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDY0LCAxOCwgMTAsIDEsIAotICAgIDg5LCAzLCAyMzcsIDEyOCwgODcsIDQ2LCAxOCwgMTAsIDEsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDgxLCAxOCwgMTAsIDEsIAotICAgIDg5LCAzLCAyMzcsIDEyOCwgODcsIDE3NCwgMTgsIDEwLCAxLCAxMzcsIDY0LCAxOCwgMTAsIDEsIDEzNywgNDYsIDE4LCAxMCwgCi0gICAgMSwgMjQ4LCAxMzksIDY0LCAxOCwgMTAsIDEsIDI0OCwgMTM5LCA0NiwgMTgsIDEwLCAxLCAyNDgsIDEzOSwgODEsIDE4LCAKLSAgICAxMCwgMSwgMjQ4LCAxMzksIDE3NCwgMTgsIDEwLCAxLCAyMDksIDE3MCwgMjI1LCA5OSwgNjQsIDE4LCAxMCwgMSwgMjA5LCAKLSAgICAxNzAsIDIyNSwgOTksIDQ2LCAxOCwgMTAsIDEsIDIwOSwgMTcwLCA2NCwgMTgsIDEwLCAxLCAyMDksIDE3MCwgNDYsIDE4LCAKLSAgICAxMCwgMSwgMjA5LCAxNzAsIDgxLCAxOCwgMTAsIDEsIDIwOSwgMTcwLCAxNzQsIDE4LCAxMCwgMSwgMjA5LCA4OSwgNjQsIAotICAgIDE4LCAxMCwgMSwgMjA5LCA4OSwgNDYsIDE4LCAxMCwgMSwgMjA5LCA4OSwgODEsIDE4LCAxMCwgMSwgMjA5LCA4OSwgMTc0LCAKLSAgICAxOCwgMTAsIDEsIDE4NCwgNjQsIDE4LCAxMCwgMSwgMTg0LCA0NiwgMTgsIDEwLCAxLCAxODQsIDgxLCAxOCwgMTAsIDEsIAotICAgIDE4NCwgMTc0LCAxOCwgMTAsIDEsIDE1MSwgNjQsIDE4LCAxMCwgMSwgMTUxLCA0NiwgMTgsIDEwLCAxLCAxNTEsIDgxLCAxOCwgCi0gICAgMTAsIDEsIDE1MSwgMTc0LCAxOCwgMTAsIDEsIDIyOSwgMTQxLCA2NCwgMTgsIDEwLCAxLCAyMjksIDE0MSwgNDYsIDE4LCAKLSAgICAxMCwgMSwgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDEsIDIyOSwgMTQxLCAxNzQsIDE4LCAxMCwgMSwgMjQ0LCAxODUsIDY0LCAKLSAgICAxOCwgMTAsIDEsIDI0NCwgMTg1LCA0NiwgMTgsIDEwLCAxLCAyMDksIDEwMSwgNjQsIDE4LCAxMCwgMSwgMjA5LCAxMDEsIAotICAgIDQ2LCAxOCwgMTAsIDEsIDIxNiwgMTIzLCA2NCwgMTgsIDEwLCAxLCAyMTYsIDEyMywgNDYsIDE4LCAxMCwgMSwgMjAyLCAKLSAgICAxMDgsIDY0LCAxOCwgMTAsIDEsIDIwMiwgMTA4LCA0NiwgMTgsIDEwLCAxLCAyMTQsIDE2MiwgNjQsIDE4LCAxMCwgMSwgCi0gICAgMjE0LCAxNjIsIDQ2LCAxOCwgMTAsIDEsIDIxNCwgMTYyLCA4MSwgMTgsIDEwLCAxLCAyMTQsIDE2MiwgMTc0LCAxOCwgMTAsIAotICAgIDEsIDIxMywgNDAsIDY0LCAxOCwgMTAsIDEsIDIxMywgNDAsIDQ2LCAxOCwgMTAsIDEsIDIxMywgNDAsIDgxLCAxOCwgMTAsIAotICAgIDEsIDIxMywgNDAsIDE3NCwgMTgsIDEwLCAxLCAyMTUsIDI5LCA2NCwgMTgsIDEwLCAxLCAyMTUsIDI5LCA0NiwgMTgsIDEwLCAKLSAgICAxLCAyMTUsIDI5LCA4MSwgMTgsIDEwLCAxLCAyMTUsIDI5LCAxNzQsIDE4LCAxMCwgMSwgMjQ0LCAyMDgsIDY0LCAxOCwgMTAsIAotICAgIDEsIDI0NCwgMjA4LCA0NiwgMTgsIDEwLCAxLCAyNDQsIDIwOCwgODEsIDE4LCAxMCwgMSwgMjQ0LCAyMDgsIDE3NCwgMTgsIAotICAgIDEwLCAxLCAyMDksIDI1MiwgNjQsIDE4LCAxMCwgMSwgMjA5LCAyNTIsIDQ2LCAxOCwgMTAsIDEsIDIwOSwgMjUyLCA4MSwgCi0gICAgMTgsIDEwLCAxLCAyMDksIDI1MiwgMTc0LCAxOCwgMTAsIDEsIDIwMiwgMTExLCA2NCwgMTgsIDEwLCAxLCAyMDIsIDExMSwgCi0gICAgNDYsIDE4LCAxMCwgMSwgMjAyLCAxMTEsIDgxLCAxOCwgMTAsIDEsIDIwMiwgMTExLCAxNzQsIDE4LCAxMCwgMSwgMjUxLCAKLSAgICA2MCwgNjQsIDE4LCAxMCwgMSwgMjUxLCA2MCwgNDYsIDE4LCAxMCwgMSwgMjUxLCA2MCwgODEsIDE4LCAxMCwgMSwgMjUxLCAKLSAgICA2MCwgMTc0LCAxOCwgMTAsIDEsIDIzOCwgMTE1LCA2NCwgMTgsIDEwLCAxLCAyMzgsIDExNSwgNDYsIDE4LCAxMCwgMSwgCi0gICAgMjM4LCAxMTUsIDgxLCAxOCwgMTAsIDEsIDIzOCwgMTE1LCAxNzQsIDE4LCAxMCwgMSwgMjQwLCA0OCwgNjQsIDE4LCAxMCwgCi0gICAgMSwgMjQwLCA0OCwgNDYsIDE4LCAxMCwgMSwgMjQwLCA0OCwgODEsIDE4LCAxMCwgMSwgMjQwLCA0OCwgMTc0LCAxOCwgMTAsIAotICAgIDEsIDIxNywgMTIwLCA2NCwgMTgsIDEwLCAxLCAyMTcsIDEyMCwgNDYsIDE4LCAxMCwgMSwgMjE3LCAxMjAsIDgxLCAxOCwgCi0gICAgMTAsIDEsIDIxNywgMTIwLCAxNzQsIDE4LCAxMCwgMSwgMjMwLCAyMywgNjQsIDE4LCAxMCwgMSwgMjMwLCAyMywgNDYsIDE4LCAKLSAgICAxMCwgMSwgMjMwLCAyMywgODEsIDE4LCAxMCwgMSwgMjMwLCAyMywgMTc0LCAxOCwgMTAsIDEsIDIyOCwgMjksIDY0LCAxOCwgCi0gICAgMTAsIDEsIDIyOCwgMjksIDQ2LCAxOCwgMTAsIDEsIDIyOCwgMjksIDgxLCAxOCwgMTAsIDEsIDIyOCwgMjksIDE3NCwgMTgsIAotICAgIDEwLCAxLCA4MywgNjQsIDE4LCAxMCwgMSwgODMsIDQ2LCAxOCwgMTAsIDEsIDgzLCA4MSwgMTgsIDEwLCAxLCA4MywgMTc0LCAKLSAgICAxOCwgMTAsIDEsIDIyMSwgMTc5LCA2NCwgMTgsIDEwLCAxLCAyMjEsIDE3OSwgNDYsIDE4LCAxMCwgMSwgMjIxLCAxNzksIAotICAgIDgxLCAxOCwgMTAsIDEsIDIyMSwgMTc5LCAxNzQsIDE4LCAxMCwgMSwgMjM3LCA0NCwgNjQsIDE4LCAxMCwgMSwgMjM3LCA0NCwgCi0gICAgNDYsIDE4LCAxMCwgMSwgMjM3LCA0NCwgODEsIDE4LCAxMCwgMSwgMjM3LCA0NCwgMTc0LCAxOCwgMTAsIDEsIDIwNCwgNzEsIAotICAgIDY0LCAxOCwgMTAsIDEsIDIwNCwgNzEsIDQ2LCAxOCwgMTAsIDEsIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDEsIDEzNywgCi0gICAgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDEsIDg5LCA2NCwgMTgsIDEwLCAxLCA4OSwgNDYsIDE4LCAxMCwgMSwgODksIDgxLCAKLSAgICAxOCwgMTAsIDEsIDg5LCAxNzQsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDEzNywgMywgMjI1LCAxNjYsIDg3LCA2NCwgMTgsIAotICAgIDEwLCAzMiwgMjI4LCAyOSwgMywgMTM3LCAzLCAyMjUsIDE2NiwgODcsIDQ2LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAKLSAgICAxMzcsIDMsIDIzNywgMTI4LCA4NywgNjQsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDEzNywgMywgMjM3LCAxMjgsIDg3LCAKLSAgICA0NiwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMTM3LCAzLCAyMzcsIDEyOCwgMjQ4LCAxMjYsIDY0LCAxOCwgMTAsIDMyLCAKLSAgICAyMjgsIDI5LCAzLCAxMzcsIDMsIDIzNywgMTI4LCAyNDgsIDEyNiwgNDYsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDEzNywgCi0gICAgNjQsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDEzNywgNDYsIDE4LCAyMDIsIDg1LCAyMDQsIDI0LCAyMjEsIDE5MCwgMjExLCAKLSAgICAyMjgsIDE1NCwgMjQwLCAyMTIsIDgyLCAxNTQsIDIxNywgMzEsIDgyLCAxNTQsIDQyLCA1NCwgMTU0LCAyNDMsIDk3LCA1NCwgCi0gICAgMTU0LCAyMTgsIDI0NiwgNTQsIDE1NCwgMjUwLCAyMzUsIDE1NCwgMjUwLCAxNjAsIDE1NCwgNDksIDIxOSwgNzYsIDE1NCwgCi0gICAgNTAsIDIxOSwgNzYsIDE1NCwgMjUwLCA1OSwgMTU0LCA5MSwgNTQsIDE1NCwgMjQ1LCAyMzMsIDE1NCwgMjM1LCAyMTksIAotICAgIDE1NCwgMjM5LCAxMDIsIDIxMSwgNjEsIDE1NCwgMjEyLCAwLCAxNTQsIDE3LCAyMDIsIDg0LCAxNTQsIDE3LCAxMDUsIDE1NCwgCi0gICAgMTcsIDEwOCwgMTU0LCAxNywgMTQ3LCAxNTQsIDE3LCAxNDksIDE1NCwgMTcsIDE3MCwgMTU0LCAxNywgMTk1LCAxNTQsIDE3LCAKLSAgICAyMTMsIDExMSwgMTU0LCAxNywgMTk5LCAxNTQsIDE3LCAyMjIsIDYzLCAxNTQsIDI0NSwgMjQyLCAxNTQsIDIxMywgMTQzLCAKLSAgICAxNTQsIDIyNywgMTc5LCA1NCwgMTU0LCAyNDEsIDM1LCA1NCwgMTU0LCAyMzcsIDI0NywgNTQsIDE1NCwgMjE3LCA0NywgODIsIAotICAgIDE1NCwgMjQ1LCAyMzEsIDI1MCwgNDksIDE1NCwgOCwgNiwgMSwgNjMsIDE1NCwgOCwgNiwgMSwgMjQ5LCAyNTUsIDE1NCwgOCwgCi0gICAgNiwgMSwgMjQ3LCAxMjUsIDE1NCwgOCwgNiwgMSwgMjQ1LCA1MSwgMTU0LCA4LCA2LCAxLCA3NCwgMTU0LCA4LCA2LCAxLCAKLSAgICAyNDAsIDE3NCwgMTU0LCA4LCA2LCAxLCAyMzksIDc1LCAxNTQsIDgsIDYsIDEsIDIzNywgMTcxLCAxNTQsIDgsIDYsIDEsIAotICAgIDc1LCAxNTQsIDgsIDYsIDEsIDIzMCwgMTg0LCAxNTQsIDgsIDYsIDEsIDIzMCwgNTQsIDE1NCwgOCwgNiwgMSwgMTU5LCAKLSAgICAxNTQsIDgsIDYsIDEsIDIyNiwgMTg1LCAxNTQsIDgsIDYsIDEsIDIyMywgMTYzLCAxNTQsIDgsIDYsIDEsIDc4LCAxNTQsIDgsIAotICAgIDYsIDEsIDIxOSwgMTg0LCAxNTQsIDgsIDYsIDEsIDIxNywgMTM0LCAxNTQsIDgsIDYsIDEsIDE0NiwgMTU0LCA4LCA2LCAxLCAKLSAgICAxOTQsIDE1NCwgOCwgNiwgMSwgMjEwLCA2OSwgMTU0LCA4LCA2LCAxLCA2OCwgMTU0LCA4LCA2LCAxLCAyMDYsIDE2NCwgCi0gICAgMTU0LCA4LCA2LCAxLCAyMDQsIDE0NCwgMTU0LCA4LCA2LCAxLCAyMDMsIDE5NiwgMTU0LCA4LCA2LCAxLCAyMDMsIDEyNCwgCi0gICAgMTU0LCA4LCA2LCAxLCAyMDIsIDE1OSwgMTU0LCA0OSwgNTEsIDE1NSwgMTU0LCAyMTYsIDc0LCAyMTIsIDAsIDE1NCwgNTAsIAotICAgIDUxLCAxNTUsIDE1NCwgMjQ2LCA1MywgMjUxLCAxMzgsIDE1NCwgMTI0LCAyMjcsIDExNCwgMTU0LCAyMzcsIDI1NCwgMjUxLCAKLSAgICAxMzgsIDE1NCwgOCwgNSwgMSwgNjMsIDE1NCwgOCwgNSwgMSwgMjQ5LCAyNTUsIDE1NCwgOCwgNSwgMSwgMjQ3LCAxMjUsIAotICAgIDE1NCwgOCwgNSwgMSwgMjQ1LCA1MSwgMTU0LCA4LCA1LCAxLCA3NCwgMTU0LCA4LCA1LCAxLCAyNDAsIDE3NCwgMTU0LCA4LCAKLSAgICA1LCAxLCAyMzksIDc1LCAxNTQsIDgsIDUsIDEsIDIzNywgMTcxLCAxNTQsIDgsIDUsIDEsIDc1LCAxNTQsIDgsIDUsIDEsIAotICAgIDIzMCwgMTg0LCAxNTQsIDgsIDUsIDEsIDIzMCwgNTQsIDE1NCwgOCwgNSwgMSwgMTU5LCAxNTQsIDgsIDUsIDEsIDIyNiwgCi0gICAgMTg1LCAxNTQsIDgsIDUsIDEsIDIyMywgMTYzLCAxNTQsIDgsIDUsIDEsIDc4LCAxNTQsIDgsIDUsIDEsIDIxOSwgMTg0LCAKLSAgICAxNTQsIDgsIDUsIDEsIDIxNywgMTM0LCAxNTQsIDgsIDUsIDEsIDE0NiwgMTU0LCA4LCA1LCAxLCAxOTQsIDE1NCwgOCwgNSwgCi0gICAgMSwgMjEwLCA2OSwgMTU0LCA4LCA1LCAxLCA2OCwgMTU0LCA4LCA1LCAxLCAyMDYsIDE2NCwgMTU0LCA4LCA1LCAxLCAyMDQsIAotICAgIDE0NCwgMTU0LCA4LCA1LCAxLCAyMDMsIDE5NiwgMTU0LCA4LCA1LCAxLCAyMDMsIDEyNCwgMTU0LCA4LCA1LCAxLCAyMDIsIAotICAgIDE1OSwgMTU0LCA0OSwgMjQ1LCA5MywgMTU1LCAxNTQsIDgwLCAyMjcsIDExNCwgMTU0LCA1MCwgMjQ1LCA5MywgMTU1LCAKLSAgICAxNTQsIDIwOCwgMjI3LCAxNTQsIDQ5LCA2MSwgMjE5LCA3NiwgMTU0LCA1MCwgNjEsIDIxOSwgNzYsIDEyNywgMTM5LCAyMzksIAotICAgIDEwMiwgMjExLCA2MSwgMTI3LCA0OSwgMjQ1LCAxNjYsIDE1NSwgMTI3LCA1MCwgMjQ1LCAxNjYsIDE1NSwgMTI3LCAxMzksIAotICAgIDI0NSwgMjMzLCAxMjcsIDY3LCAxMDEsIDI0MywgODUsIDEyNywgNjcsIDEsIDIwNCwgMCwgMTI3LCA2NywgMSwgNSwgNjMsIAotICAgIDEyNywgNjcsIDEsIDUsIDc1LCAxMjcsIDY3LCAxLCA1LCA2OCwgMTI3LCA2NywgMSwgNSwgNzQsIDEyNywgNjcsIDEsIDUsIAotICAgIDc4LCAxMjcsIDY3LCAxLCA1LCAxOTgsIDEyNywgNjcsIDEsIDUsIDIwMiwgMjEzLCAxMjcsIDY3LCAxLCA1LCAyMDIsIDI0NywgCi0gICAgMTI3LCA2NywgMSwgNSwgMjA3LCAyMDMsIDEyNywgMjI5LCAyMjUsIDIxNywgMjE1LCAyMTEsIDI0MSwgODIsIDEyNywgNjcsIAotICAgIDEsIDYzLCAxMjcsIDY3LCAxLCA3NSwgMTI3LCA2NywgMSwgNjgsIDEyNywgNjcsIDEsIDc0LCAxMjcsIDY3LCAxLCA3OCwgCi0gICAgMTI3LCA2NywgMSwgMTczLCAxMjcsIDY3LCAxLCAyMjksIDEwMCwgMTI3LCA2NywgMSwgMjI4LCAyMDksIDEyNywgNjcsIDEsIAotICAgIDIyOSwgMjAxLCAxMjcsIDY3LCAxLCAyMjksIDI2LCAxMjcsIDY3LCAxLCAyMTUsIDM2LCAxMjcsIDY3LCAxLCAyMTIsIDE2MiwgCi0gICAgMTI3LCA2NywgMSwgMjExLCAxMCwgMTI3LCA2NywgMSwgMjE0LCAxNzcsIDEyNywgNjcsIDEsIDIxMiwgMTMsIDEyNywgNjcsIAotICAgIDEsIDIxMCwgMjIsIDEyNywgNjcsIDEsIDIwOSwgMiwgMTI3LCA2NywgMSwgMjA3LCAyMDMsIDEyNywgNjcsIDEsIDIwOSwgCi0gICAgMTg3LCAxMjcsIDY3LCAxLCAxMzUsIDEyNywgNjcsIDEsIDIwMSwgMjAxLCAxMjcsIDY3LCAxLCAyMjIsIDEwMCwgMTI3LCAKLSAgICA2NywgMSwgMjIxLCA4NCwgMTI3LCA2NywgMSwgMjIyLCAyNDAsIDEyNywgNjcsIDEsIDIyMSwgMTkxLCAxMjcsIDY3LCAxLCAKLSAgICAxNTIsIDEyNywgNjcsIDEsIDIzNywgMywgMTI3LCA2NywgMSwgMjM2LCAyNiwgMTI3LCA2NywgMSwgMjM3LCA2NywgMTI3LCAKLSAgICA2NywgMSwgMjM2LCAxMzYsIDEyNywgNjcsIDEsIDE5MiwgMTI3LCA2NywgMSwgMjI0LCAxNTUsIDEyNywgNjcsIDEsIDIyMywgCi0gICAgMjQ2LCAxMjcsIDY3LCAxLCAyMjUsIDIwLCAxMjcsIDY3LCAxLCAyMjQsIDgyLCAxMjcsIDY3LCAxLCAxOTgsIDEyNywgNjcsIAotICAgIDEsIDIwMiwgMjEzLCAxMjcsIDY3LCAxLCAyMDIsIDI0NywgMTI3LCA2NywgMSwgMjE2LCAyMjAsIDEyNywgNjcsIDEsIDIxNiwgCi0gICAgNTcsIDEyNywgNjcsIDEsIDIxNSwgMTQ1LCAxMjcsIDY3LCAxLCAyMTYsIDE1OCwgMTI3LCA2NywgMSwgMjE1LCAyMjcsIAotICAgIDEyNywgNjcsIDEsIDIwNCwgMTExLCAxMjcsIDY3LCAxLCAyMjMsIDE2MywgMTI3LCA2NywgMjA1LCAxODYsIDIxMSwgMjQxLCAKLSAgICA4MiwgMTI3LCA2NywgMjEzLCAxNDgsIDIxMSwgMjQxLCA4MiwgMTI3LCAyOCwgMjQwLCA3LCAxMjcsIDI4LCAxLCAyMjksIAotICAgIDU5LCAxMjcsIDI4LCAxLCAyMTEsIDE1NiwgMTI3LCAyOCwgMSwgMjI5LCA1MiwgMTI3LCAyOCwgMSwgMjIyLCA5MywgMTI3LCAKLSAgICAyOCwgMSwgMjIyLCA5MSwgMTI3LCAyOCwgMSwgMjIyLCA5MCwgMTI3LCAyOCwgMSwgMjA4LCAyNDAsIDEyNywgMjgsIDEsIAotICAgIDIxMSwgMTQ1LCAxMjcsIDI4LCAxLCAyMTYsIDQ3LCAxMjcsIDI4LCAxLCAyMTYsIDQyLCAxMjcsIDI4LCAxLCAyMTYsIDM5LCAKLSAgICAxMjcsIDI4LCAxLCAyMTYsIDMyLCAxMjcsIDI4LCAxLCAyMTYsIDI3LCAxMjcsIDI4LCAxLCAyMTYsIDIyLCAxMjcsIDI4LCAKLSAgICAxLCAyMTYsIDMzLCAxMjcsIDI4LCAxLCAyMTYsIDQ1LCAxMjcsIDI4LCAxLCAyMjQsIDE0MSwgMTI3LCAyOCwgMSwgMjE4LCAKLSAgICAxNTMsIDEyNywgMjgsIDEsIDIxMSwgMTUzLCAxMjcsIDI4LCAxLCAyMTgsIDE0MiwgMTI3LCAyOCwgMSwgMjEyLCAxMTEsIAotICAgIDEyNywgMjgsIDEsIDIxMSwgMTUwLCAxMjcsIDI4LCAxLCAyMzEsIDEwNiwgMTI3LCAyOCwgMSwgMjQ2LCA3NCwgMTI3LCAyOCwgCi0gICAgMSwgMjExLCAxNjAsIDEyNywgMjgsIDEsIDI0NiwgMTM4LCAxMjcsIDI4LCAxLCAyMjksIDEyMCwgMTI3LCAyOCwgMSwgMjA5LCAKLSAgICA2NiwgMTI3LCAyOCwgMSwgMjE4LCAxOTAsIDEyNywgMjgsIDEsIDIzNiwgMjUxLCAxMjcsIDI4LCAxLCA2MywgMTI3LCAyOCwgCi0gICAgMSwgMjUxLCAxMDksIDEyNywgMjgsIDEsIDE5OCwgMTI3LCAyOCwgMSwgMjAzLCA5OSwgMTI3LCAyOCwgMSwgMjQxLCA1NSwgCi0gICAgMTI3LCAyOCwgMSwgNzQsIDEyNywgMjgsIDEsIDIwMywgMzksIDEyNywgMjgsIDEsIDIwMywgNTIsIDEyNywgMjgsIDEsIDc4LCAKLSAgICAxMjcsIDI4LCAxLCAyMDQsIDExMSwgMTI3LCAyOCwgMSwgMjA0LCAxMDcsIDEyNywgMjgsIDEsIDIyMCwgNzMsIDEyNywgMjgsIAotICAgIDEsIDIwMiwgMjQ3LCAxMjcsIDI4LCAxLCA2OCwgMTI3LCAyOCwgMSwgMjA0LCA0OCwgMTI3LCAyOCwgMSwgMjA0LCA2MiwgCi0gICAgMTI3LCAyOCwgMSwgMjA0LCAzMCwgMTI3LCAyOCwgMSwgMjAyLCAyMTMsIDEyNywgMjgsIDEsIDI0MCwgMjM4LCAxMjcsIDI4LCAKLSAgICAxLCAyMDMsIDExLCAxMjcsIDI4LCAxLCA3NSwgMTU0LCAyNDYsIDIyMCwgNTQsIDE1NCwgMjE4LCAyMCwgNTQsIDE1NCwgCi0gICAgMjIxLCAxNjYsIDU0LCAxNTQsIDIyNSwgMTcwLCAxNTQsIDI0NywgMjAzLCAxNDIsIDE1NCwgMjAzLCA0MywgNTQsIDE1NCwgCi0gICAgMjAzLCAyNDYsIDU0LCAxMjcsIDIzOSwgMTU2LCAxNTcsIDIwNiwgMzgsIDEyNywgOTYsIDQ3LCAxMjcsIDE3NywgNDcsIAotICAgIDEyNywgODYsIDQ3LCAxMjcsIDE4MywgNDcsIDEyNywgNjIsIDIxMSwgMTc3LCAxMjcsIDYxLCAyNDYsIDYxLCAyMzAsIDI1MSwgCi0gICAgMjUwLCAyMDUsIDI1MCwgMjI4LCAyMzAsIDI1MSwgMjUwLCAyMDUsIDIxMywgMTMwLCAyMzAsIDI1MSwgMjUwLCAyMDUsIAotICAgIDIwOSwgMTM4LCAyMjAsIDkwLCAyMTYsIDk2LCAyNDYsIDE4MiwgMjE2LCA5NiwgMjQ2LCAxODIsIDI5LCA2NiwgNCwgMjQ5LCAKLSAgICAyMzksIDYzLCAyOSwgNjYsIDQsIDI0OSwgMjA4LCA3NCwgMjksIDY2LCA0LCAyNDksIDIxNywgNzUsIDI5LCA2NiwgNCwgCi0gICAgMjQ5LCAxODUsIDc4LCAyOSwgNjYsIDQsIDI0OSwgMjM1LCA2OCwgMjksIDY2LCA0LCAyNDksIDI1NCwgMjQ0LCAyMTIsIDI5LCAKLSAgICA2NiwgNCwgMjQ5LCAyMDEsIDI0NCwgNzUsIDI5LCA2NiwgNCwgMjQ5LCAyNDEsIDI0MywgMjMzLCAyOSwgNjYsIDQsIDI0OSwgCi0gICAgMjMxLCAyNDMsIDExMywgMjksIDY2LCA0LCAyNDksIDE5NSwgMjQyLCA0MiwgMjksIDY2LCA0LCAyNDksIDE4OSwgMjMwLCAKLSAgICAxODEsIDI5LCA2NiwgNCwgMjQ5LCAyMDAsIDIzMCwgMTYxLCAyOSwgNjYsIDQsIDI0OSwgMjEwLCAyMzAsIDEwMSwgMjksIAotICAgIDY2LCA0LCAyNDksIDE4MSwgMjMwLCA4MiwgMjksIDY2LCA0LCAyNDksIDE2OSwgMTczLCAyOSwgNjYsIDQsIDI0OSwgMjAyLCAKLSAgICAyMjksIDIwMSwgMjksIDY2LCA0LCAyNDksIDE3OSwgMjI5LCAxMDAsIDI5LCA2NiwgNCwgMjQ5LCAxNzYsIDIyOSwgMjYsIAotICAgIDI5LCA2NiwgNCwgMjQ5LCAxNjUsIDIyOCwgMjA5LCAyOSwgNjYsIDQsIDI0OSwgMTY2LCAxOTIsIDI5LCA2NiwgNCwgMjQ5LCAKLSAgICAyMzIsIDIyNSwgMjAsIDI5LCA2NiwgNCwgMjQ5LCAxNzMsIDIyNCwgMTU1LCAyOSwgNjYsIDQsIDI0OSwgMjMwLCAyMjQsIAotICAgIDgyLCAyOSwgNjYsIDQsIDI0OSwgMjIyLCAyMjMsIDI0NiwgMjksIDY2LCA0LCAyNDksIDI0MywgMjAxLCAyMDEsIDI5LCA2NiwgCi0gICAgNCwgMjQ5LCAyMjEsIDIyMiwgMjQwLCAyOSwgNjYsIDQsIDI0OSwgMjE1LCAyMjIsIDEwMCwgMjksIDY2LCA0LCAyNDksIAotICAgIDE5NCwgMjIxLCAxOTEsIDI5LCA2NiwgNCwgMjQ5LCAxOTEsIDIyMSwgODQsIDI5LCA2NiwgNCwgMjQ5LCAyNTAsIDE4NSwgCi0gICAgMjksIDY2LCA0LCAyNDksIDE3NCwgMjE5LCAzNCwgMjksIDY2LCA0LCAyNDksIDIwNywgMjE4LCAxNjcsIDI5LCA2NiwgNCwgCi0gICAgMjQ5LCAyMzQsIDIxOCwgNjksIDI5LCA2NiwgNCwgMjQ5LCAxOTYsIDIxNywgMTkxLCAyOSwgNjYsIDQsIDI0OSwgMjI5LCAKLSAgICAyMTcsIDEyNiwgMjksIDY2LCA0LCAyNDksIDE2OCwgMjE3LCAxMDYsIDI5LCA2NiwgNCwgMjQ5LCAyMjQsIDIxNywgODgsIAotICAgIDI5LCA2NiwgNCwgMjQ5LCAyMTMsIDIxNywgNzcsIDI5LCA2NiwgNCwgMjQ5LCAxODYsIDIxNiwgMjIwLCAyOSwgNjYsIDQsIAotICAgIDI0OSwgMjE4LCAyMTYsIDE1OCwgMjksIDY2LCA0LCAyNDksIDE5MywgMjE2LCA1NywgMjksIDY2LCA0LCAyNDksIDI1MiwgCi0gICAgMjE1LCAyMjcsIDI5LCA2NiwgNCwgMjQ5LCAyMTksIDIxNSwgMTQ1LCAyOSwgNjYsIDQsIDI0OSwgMjE0LCAyMTUsIDM2LCAKLSAgICAyOSwgNjYsIDQsIDI0OSwgMjM3LCAyMTQsIDE3NywgMjksIDY2LCA0LCAyNDksIDIwNSwgMjEyLCAxNjIsIDI5LCA2NiwgNCwgCi0gICAgMjQ5LCAyMzMsIDIxMiwgMTMsIDI5LCA2NiwgNCwgMjQ5LCAxODgsIDIxMSwgMTAsIDI5LCA2NiwgNCwgMjQ5LCAxODcsIAotICAgIDIxMCwgMjIsIDI5LCA2NiwgNCwgMjQ5LCAyNDgsIDIwOSwgMTg3LCAyOSwgNjYsIDQsIDI0OSwgMjA5LCAyMDksIDIsIDI5LCAKLSAgICA2NiwgNCwgMjQ5LCAyNDYsIDEzNSwgMjksIDY2LCA0LCAyNDksIDE3NywgMjA3LCAyMDMsIDI5LCA2NiwgNCwgMjQ5LCAxOTIsIAotICAgIDIwNCwgMTExLCAyOSwgNjYsIDQsIDI0OSwgMTcxLCAyMDQsIDYyLCAyOSwgNjYsIDQsIDI0OSwgMjA2LCAyMDQsIDMwLCAyOSwgCi0gICAgNjYsIDQsIDI0OSwgMjA0LCAyMDQsIDAsIDI5LCA2NiwgNCwgMjQ5LCAyMjgsIDIwMiwgMTE2LCAyOSwgNjYsIDQsIDI0OSwgCi0gICAgMTcyLCAyMDIsIDkyLCAyOSwgNjYsIDQsIDI0OSwgMjI1LCAyMDIsIDE3LCAyOSwgNjYsIDQsIDI0OSwgMjIwLCAyNTQsIDM0LCAKLSAgICAyOSwgNjYsIDQsIDI0OSwgMjAzLCAyNTMsIDE3OCwgMjksIDY2LCA0LCAyNDksIDE2MiwgMjUwLCAzNCwgMjksIDY2LCA0LCAKLSAgICAyNDksIDE3NSwgMjQyLCA5LCAyOSwgNjYsIDQsIDI0OSwgMTU4LCAyNDIsIDgsIDI5LCA2NiwgNCwgMjQ5LCAxOTgsIDIyMSwgCi0gICAgMjAsIDI5LCA2NiwgNCwgMjQ5LCAyMTYsIDIxNywgMTg5LCAyOSwgNjYsIDQsIDI0OSwgMTg0LCAyMTcsIDE5MywgMjksIDY2LCAKLSAgICA0LCAyNDksIDE3MCwgMjE2LCAyMTgsIDI5LCA2NiwgNCwgMjQ5LCAyMTIsIDIxNiwgMjE3LCAyOSwgNjYsIDQsIDI0OSwgCi0gICAgMTc4LCAyMTUsIDIyNiwgMjksIDY2LCA0LCAyNDksIDE4MCwgMjEwLCAxOSwgMjksIDY2LCA0LCAyNDksIDE2MCwgMjA3LCAKLSAgICAxNTgsIDI5LCA2NiwgNCwgMjQ5LCAxNTcsIDEwOCwgMjksIDY2LCAxNiwgMjQ5LCAyMjcsIDI5LCA2NiwgMTYsIDI0OSwgCi0gICAgMjI2LCAyOSwgNjYsIDE2LCAyNDksIDIyMywgMjksIDY2LCAxNiwgMjQ5LCAyMTEsIDI5LCA2NiwgMTYsIDI0OSwgMTk5LCAKLSAgICAyOSwgNjYsIDE2LCAyNDksIDE5NywgMjksIDY2LCAxNiwgMjQ5LCAxOTAsIDI5LCA2NiwgMTYsIDI0OSwgMTgzLCAyOSwgNjYsIAotICAgIDE2LCAyNDksIDE4MiwgMjksIDY2LCAxNiwgMjQ5LCAxNjcsIDI5LCA2NiwgMTYsIDI0OSwgMTY0LCAyOSwgNjYsIDE2LCAKLSAgICAyNDksIDE2MywgMjksIDY2LCAxNiwgMjQ5LCAxNjEsIDI5LCA2NiwgMTYsIDI0OSwgMTU5LCAyOSwgNjYsIDEzMywgMjQ5LCAKLSAgICAxNTYsIDIyNSwgMTIyLCAyOSwgNjYsIDEzMywgMjQ5LCAxNTUsIDIwMywgMjUwLCAyOSwgNjYsIDEzMywgMjQ5LCAxNTQsIAotICAgIDI0NCwgNTgsIDI5LCA2NiwgMTMzLCAyNDksIDE1MywgMjQxLCAzMiwgMjksIDY2LCAxMzMsIDI0OSwgMTUyLCAyMjUsIDkzLCAKLSAgICAyOSwgNjYsIDEzMywgMjQ5LCAxNTEsIDIxMSwgMTAxLCAyOSwgNjYsIDEzMywgMjQ5LCAxNTAsIDI0MCwgMjE5LCAyOSwgNjYsIAotICAgIDEzMywgMjQ5LCAxNDksIDIxNiwgMTg0LCAyOSwgNjYsIDEzMywgMjQ5LCAxNDgsIDIxMywgNDIsIDI5LCA2NiwgMTMzLCAKLSAgICAyNDksIDE0NywgMjM3LCA2NiwgMjksIDY2LCAxMzMsIDI0OSwgMTQ2LCAyMTEsIDIzNSwgMjksIDY2LCAxMzMsIDI0OSwgCi0gICAgMTQ1LCAyNDgsIDIxLCAyOSwgNjYsIDEzMywgMjQ5LCAxNDQsIDI0NSwgMTQ5LCAyOSwgNjYsIDEzMywgMjQ5LCAxNDMsIAotICAgIDI0NywgMTc5LCAyOSwgNjYsIDEzMywgMjQ5LCAxNDIsIDIwNCwgMzgsIDI5LCA2NiwgMTMzLCAyNDksIDE0MSwgMjQ4LCAKLSAgICAyMjcsIDI5LCA2NiwgMTMzLCAyNDksIDE0MCwgMjIwLCA0MSwgMjksIDY2LCAxMzMsIDI0OSwgMTM5LCAyMTEsIDIwNywgMjksIAotICAgIDY2LCAxMzMsIDI0OSwgMTM4LCAyNDUsIDU5LCAyOSwgNjYsIDIyNCwgNDUsIDI0OSwgMTM3LCAyMjksIDI0OSwgMjksIDY2LCAKLSAgICAyMjQsIDQ1LCAyNDksIDEzNiwgMjMwLCAyLCAyOSwgNjYsIDEzMywgMjQ5LCAxMzUsIDIyMCwgNTUsIDI5LCA2NiwgMTMzLCAKLSAgICAyNDksIDEzNCwgMjA0LCAxMiwgMjksIDY2LCAxMzMsIDI0OSwgMTMzLCAyOSwgNjYsIDIyNCwgNDUsIDI0OSwgMTMyLCAyNTAsIAotICAgIDExOSwgMjksIDY2LCAyMjQsIDQ1LCAyNDksIDEzMSwgMjI0LCAyMzIsIDI5LCA2NiwgMTMzLCAyNDksIDEzMCwgMjQ3LCAKLSAgICAyMDIsIDI5LCA2NiwgMTMzLCAyNDksIDEyOSwgMjM4LCAzMSwgMjksIDY2LCAxMzMsIDI0OSwgMTI4LCAyOSwgNjYsIDEzMywgCi0gICAgMjQ5LCAxMjcsIDIwMywgMjQxLCAyOSwgNjYsIDEzMywgMjQ5LCAxMjYsIDI5LCA2NiwgMTMzLCAyNDksIDEyNSwgMjksIDY2LCAKLSAgICAxMzMsIDI0OSwgMTI0LCAyMzYsIDUzLCAyOSwgNjYsIDEzMywgMjQ5LCAxMjMsIDI5LCA2NiwgMTMzLCAyNDksIDEyMiwgMjksIAotICAgIDY2LCAxMzMsIDI0OSwgMTIxLCAyOSwgNjYsIDIyNCwgNDUsIDI0OSwgMTE5LCAyMDcsIDE3MiwgMjksIDY2LCAxMzMsIDI0OSwgCi0gICAgMTE4LCAyOSwgNjYsIDEzMywgMjQ5LCAxMTcsIDI5LCA2NiwgMTMzLCAyNDksIDExNiwgMjQ2LCAxMCwgMjksIDY2LCAxMzMsIAotICAgIDI0OSwgMTE1LCAyOSwgNjYsIDEzMywgMjQ5LCAxMTQsIDI5LCA2NiwgMTMzLCAyNDksIDExMywgMjM4LCAyMjEsIDI5LCA2NiwgCi0gICAgMTMzLCAyNDksIDExMiwgMjUwLCAxMDYsIDI5LCA2NiwgMTMzLCAyNDksIDExMSwgMjksIDY2LCAxMzMsIDI0OSwgMTEwLCAKLSAgICAyOSwgNjYsIDEzMywgMjQ5LCAxMDksIDI5LCA2NiwgMTMzLCAyNDksIDEwOCwgMjksIDY2LCAxMzMsIDI0OSwgMTA3LCAyOSwgCi0gICAgNjYsIDEzMywgMjQ5LCAxMDYsIDI5LCA2NiwgMTMzLCAyNDksIDEwNSwgMjksIDY2LCAxMzMsIDI0OSwgMTA0LCAyOSwgNjYsIAotICAgIDEzMywgMjQ5LCAxMDMsIDI5LCA2NiwgMTMzLCAyNDksIDEwMiwgMjI0LCAzNywgMjksIDY2LCAxMzMsIDI0OSwgMTAxLCAyOSwgCi0gICAgNjYsIDEzMywgMjQ5LCAxMDAsIDIwOCwgOTUsIDI5LCA2NiwgMTMzLCAyNDksIDk5LCAyOSwgNjYsIDEzMywgMjQ5LCA5OCwgCi0gICAgMjksIDY2LCAxMzMsIDI0OSwgOTcsIDI5LCA2NiwgMTMzLCAyNDksIDk2LCAyOSwgNjYsIDEzMywgMjQ5LCA5NSwgMjksIDY2LCAKLSAgICAxMzMsIDI0OSwgOTQsIDI5LCA2NiwgMTMzLCAyNDksIDkzLCAyOSwgNjYsIDEzMywgMjQ5LCA5MiwgMjksIDY2LCAxMzMsIAotICAgIDI0OSwgOTEsIDI5LCA2NiwgMTMzLCAyNDksIDkwLCAyOSwgNjYsIDEzMywgMjQ5LCA4OSwgMjksIDY2LCAxMzMsIDI0OSwgCi0gICAgODgsIDIzNywgMzUsIDI5LCA2NiwgMTMzLCAyNDksIDY3LCAyMzksIDE2OCwgMjksIDY2LCAxMzMsIDI0OSwgNjQsIDI0OCwgCi0gICAgMjA0LCAyOSwgNjYsIDEzMywgMjQ5LCA1OSwgMjExLCAyMTQsIDI5LCA2NiwgMTMzLCAyNDksIDU4LCA0NywgMjksIDY2LCAKLSAgICAxMzMsIDI0OSwgNTcsIDI5LCA2NiwgMTMzLCAyNDksIDU2LCAyMTAsIDE1NSwgMjksIDY2LCAxMzMsIDI0OSwgNTUsIDI5LCAKLSAgICA2NiwgMTMzLCAyNDksIDU0LCAyOSwgNjYsIDEzMywgMjQ5LCA1MywgMjA0LCAzNCwgMjQ2LCAxNzksIDI5LCA2NiwgMTMzLCAKLSAgICAyNDksIDUyLCAyNDYsIDE3OSwgMjksIDY2LCAxMzMsIDI0OSwgNTEsIDI0NiwgMTgwLCAyMzksIDEzNCwgMjksIDY2LCAxMzMsIAotICAgIDI0OSwgNTAsIDIwNCwgMzYsIDI5LCA2NiwgMTMzLCAyNDksIDQ5LCAyOSwgNjYsIDEzMywgMjQ5LCA0OCwgMjksIDY2LCAKLSAgICAyMjQsIDQ1LCAyNDksIDQ3LCAyNDMsIDE2OCwgMjksIDY2LCAxMzMsIDI0OSwgNDYsIDI5LCA2NiwgMTMzLCAyNDksIDQ1LCAKLSAgICAyOSwgNjYsIDEzMywgMjQ5LCA0MywgMjksIDY2LCAxMzMsIDI0OSwgNDIsIDI5LCA2NiwgMTMzLCAyNDksIDQxLCAyOSwgNjYsIAotICAgIDEzMywgMjQ5LCA0MCwgMjQ0LCAxNDcsIDI5LCA2NiwgMTMzLCAyNDksIDM5LCAyOSwgNjYsIDEzMywgMjQ5LCAzOCwgMjksIAotICAgIDY2LCAxMzMsIDI0OSwgMzcsIDI5LCA2NiwgMTMzLCAyNDksIDM2LCAyOSwgNjYsIDEzMywgMjQ5LCAzNSwgMjksIDY2LCAKLSAgICAxMzMsIDIwNSwgMjQxLCAyNDksIDEyMCwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDg3LCAyOSwgNjYsIDEzMywgCi0gICAgMjA1LCAyNDEsIDI0OSwgODYsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA4NSwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAKLSAgICAyNDksIDg0LCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgODMsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA4MiwgCi0gICAgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDgxLCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgODAsIDI5LCA2NiwgCi0gICAgMTMzLCAyMDUsIDI0MSwgMjQ5LCA3OSwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDc4LCAyOSwgNjYsIDEzMywgMjA1LCAKLSAgICAyNDEsIDI0OSwgNzcsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA3NiwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIAotICAgIDc1LCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgNzQsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA3MywgMjksIAotICAgIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDcyLCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgNzEsIDI5LCA2NiwgMTMzLCAKLSAgICAyMDUsIDI0MSwgMjQ5LCA3MCwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDY5LCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIAotICAgIDI0OSwgNjgsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA2NiwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDY1LCAKLSAgICAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgNjMsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA2MiwgMjksIDY2LCAKLSAgICAxMzMsIDIwNSwgMjQxLCAyNDksIDYxLCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgNjAsIDI5LCA2NiwgMTMzLCAyMDUsIAotICAgIDI0MSwgMjQ5LCA0NCwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDM0LCAyNTEsIDEwMiwgMjAzLCAyMzgsIDIxMywgCi0gICAgMTMxLCAyMjcsIDExNCwgMjUxLCAxMDIsIDIwMywgMjM4LCAyMTMsIDEzMSwgMjQzLCA4NSwgMjUxLCAxMDIsIDI0NiwgMTY5LCAKLSAgICA4MiwgMjUxLCAxMDIsIDQyLCAxMDUsIDI1MSwgMTAyLCA0MiwgMTA4LCAyNTEsIDEwMiwgNDIsIDE0NywgMjUxLCAxMDIsIAotICAgIDQyLCAxNDksIDI1MSwgMTAyLCA0MiwgMTcwLCAyNTEsIDEwMiwgNDIsIDE5NSwgMjUxLCAxMDIsIDQyLCAyMTMsIDExMSwgCi0gICAgMjUxLCAxMDIsIDQyLCAxOTksIDI1MSwgMTAyLCA0MiwgMjIyLCA2MywgMjUxLCAxMDIsIDQyLCAyMDksIDE1MiwgMjUxLCAKLSAgICAxMDIsIDQyLCAyMDcsIDE1MSwgMjUxLCAxMDIsIDQyLCAyMDksIDUzLCAyNTEsIDEwMiwgNDIsIDIzOSwgMTUzLCAyNTEsIAotICAgIDEwMiwgNDIsIDI0MCwgMTgsIDI1MSwgMTAyLCA0MiwgMjEyLCA3NCwgMjUxLCAxMDIsIDQyLCAyMTMsIDEwNSwgMjUxLCAKLSAgICAxMDIsIDQyLCAyNDEsIDEzNCwgMjUxLCAxMDIsIDQyLCAyMjIsIDU4LCAyNTEsIDEwMiwgNDIsIDExOCwgMjM2LCAxMSwgCi0gICAgMjUxLCAxMDIsIDQyLCAxMjAsIDIzNiwgMTEsIDI1MSwgMTAyLCA0MiwgMTI2LCAyMzYsIDExLCAyNTEsIDEwMiwgNDIsIAotICAgIDIzOSwgMTQ3LCAyMzYsIDExLCAyNTEsIDEwMiwgNDIsIDIzOSwgMjMzLCAyMzYsIDExLCAyNTEsIDEwMiwgNDIsIDIxMiwgCi0gICAgODgsIDIzNiwgMTEsIDI1MSwgMTAyLCA0MiwgMjEzLCAxMTIsIDIzNiwgMTEsIDI1MSwgMTAyLCA0MiwgMjQxLCAxNDMsIAotICAgIDIzNiwgMTEsIDI1MSwgMTAyLCA0MiwgMjIyLCA2NCwgMjM2LCAxMSwgMjUxLCAxMDIsIDQyLCAxMTgsIDIwOSwgMzYsIDI1MSwgCi0gICAgMTAyLCA0MiwgMTIwLCAyMDksIDM2LCAyNTEsIDEwMiwgNDIsIDEyNiwgMjA5LCAzNiwgMjUxLCAxMDIsIDQyLCAyMzksIAotICAgIDE0NywgMjA5LCAzNiwgMjUxLCAxMDIsIDQyLCAyMzksIDIzMywgMjA5LCAzNiwgMjUxLCAxMDIsIDQyLCAyMTIsIDg4LCAKLSAgICAyMDksIDM2LCAyNTEsIDEwMiwgNDIsIDIxMywgMTEyLCAyMDksIDM2LCAyNTEsIDEwMiwgNDIsIDI0MSwgMTQzLCAyMDksIAotICAgIDM2LCAyNTEsIDEwMiwgNDIsIDIyMiwgNjQsIDIwOSwgMzYsIDI1MSwgMTAyLCA0MiwgMjA5LCAxNTMsIDIwOSwgMzYsIDI1MSwgCi0gICAgMTAyLCA0MiwgMjA3LCAxNTIsIDIwOSwgMzYsIDI1MSwgMTAyLCA0MiwgMjA5LCA1NCwgMjA5LCAzNiwgMjUxLCAxMDIsIDQyLCAKLSAgICAyMzksIDE1NCwgMjA5LCAzNiwgMjUxLCAxMDIsIDQyLCAyNDAsIDE5LCAyMDksIDM2LCAyNTEsIDEwMiwgNDIsIDIxMiwgNzUsIAotICAgIDIwOSwgMzYsIDI1MSwgMTAyLCA0MiwgMjEzLCAxMDYsIDIwOSwgMzYsIDI1MSwgMTAyLCA0MiwgMjQxLCAxMzUsIDIwOSwgCi0gICAgMzYsIDI1MSwgMTAyLCA0MiwgMjIyLCA1OSwgMjA5LCAzNiwgMjUxLCAxMDIsIDIwNCwgNTEsIDI0OCwgMjE5LCAyMDYsIAotICAgIDIzNSwgMjUxLCAxMDIsIDIwNCwgNTEsIDIzOSwgMjQ1LCAyMTAsIDI0MCwgMjUxLCAxMDIsIDIwNCwgNTEsIDIxNCwgMTcxLCAKLSAgICAyMTAsIDI0MCwgMjUxLCAxMDIsIDIwNCwgNTEsIDIwOSwgNjEsIDIxMCwgMjQwLCAyNTEsIDEwMiwgMjA0LCA1MSwgMjM5LCAKLSAgICAxNDAsIDIxMCwgMjQwLCAyNTEsIDEwMiwgMjQyLCA0NSwgMjI1LCAxOSwgMjM5LCAyNDUsIDIxMCwgMjQwLCAyNTEsIDEwMiwgCi0gICAgMjI3LCA5NSwgMjI1LCAxOSwgMjM5LCAyNDUsIDIxMCwgMjQwLCAyNTEsIDEwMiwgMjI1LCAxOSwgMjE0LCAxNzEsIDIxMCwgCi0gICAgMjQwLCAyNTEsIDEwMiwgMjI1LCAxOSwgMjA5LCA2MSwgMjEwLCAyNDAsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMTE4LCAKLSAgICAyMTcsIDU1LCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDExOCwgMjM3LCAxMzcsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgCi0gICAgMTE4LCAyNDIsIDY1LCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDE3MCwgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAyNDAsIDE4LCAKLSAgICAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDIzOSwgMjMzLCAyMzYsIDExLCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDIzOSwgCi0gICAgMjMzLCAyMDksIDM2LCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDI0MCwgMTksIDIwOSwgMzYsIDMwLCAyNTEsIDEyOSwgMjUwLCAKLSAgICAzNiwgMjM5LCAyMzMsIDIwOSwgMjM3LCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDIwOSwgMTUzLCAyMDksIDIzNywgMzAsIAotICAgIDI1MSwgMTI5LCAyNTAsIDM2LCAyNDAsIDE5LCAyMDksIDIzNywgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAxMTgsIDIzNiwgCi0gICAgMTIsIDIwOSwgMjM3LCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDIzOSwgMjMzLCAyMzYsIDEyLCAyMDksIDIzNywgMzAsIAotICAgIDI1MSwgMTI5LCAyNTAsIDM2LCAxMTgsIDIwOSwgMzcsIDIwOSwgMjM3LCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDIzOSwgCi0gICAgMjMzLCAyMDksIDM3LCAyMDksIDIzNywgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAyMzksIDIzMywgMjExLCA4OCwgMzAsIAotICAgIDI1MSwgMTI5LCAyNTAsIDM2LCAyMDksIDE1MywgMjExLCA4OCwgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAyNDAsIDE5LCAKLSAgICAyMTEsIDg4LCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDExOCwgMjM2LCAxMiwgMjExLCA4OCwgMzAsIDI1MSwgMTI5LCAyNTAsIAotICAgIDM2LCAyMzksIDIzMywgMjM2LCAxMiwgMjExLCA4OCwgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAxMTgsIDIwOSwgMzcsIDIxMSwgCi0gICAgODgsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMjA5LCAxNTMsIDIwOSwgMzcsIDIxMSwgODgsIDMwLCAyNTEsIDEyOSwgMjUwLCAKLSAgICAzNiwgMjQwLCAxOSwgMjA5LCAzNywgMjExLCA4OCwgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAyMDksIDE1MywgMjI0LCA4NSwgCi0gICAgMzAsIDI1MSwgMTI5LCAyMzcsIDI5LCAxMTgsIDIxOCwgODYsIDMwLCAyNTEsIDEyOSwgMjA5LCA3NiwgMTA1LCAzMCwgMjUxLCAKLSAgICAxMjksIDIzNywgMjUsIDEwNSwgMzAsIDI1MSwgMTI5LCAyNDEsIDQxLCAxMDgsIDMwLCAyNTEsIDEyOSwgMjA5LCA3NiwgCi0gICAgMTA4LCAzMCwgMjUxLCAxMjksIDI0NSwgNTYsIDEyMCwgMjQyLCA2NCwgMzAsIDI1MSwgMTI5LCAyNDEsIDQxLCAxMjAsIAotICAgIDI0MiwgNjQsIDMwLCAyNTEsIDEyOSwgMjA4LCA2MSwgMTcwLCAzMCwgMjUxLCAxMjksIDIwOCwgNjEsIDIwOSwgMTUyLCAzMCwgCi0gICAgMjUxLCAxMjksIDIwOCwgNjEsIDIwOSwgMTUzLCAyNTAsIDI1NSwgMTgsIDMwLCAyNTEsIDEyOSwgMjM3LCAyNSwgMjA5LCAKLSAgICAxNTIsIDMwLCAyNTEsIDEyOSwgMjI0LCAyMjIsIDIwOSwgMTUyLCAzMCwgMjUxLCAxMjksIDIwOSwgNzYsIDIwOSwgMTUyLCAKLSAgICAzMCwgMjUxLCAxMjksIDIwOSwgNzYsIDIwOSwgNTMsIDMwLCAyNTEsIDEyOSwgMjA4LCA2MSwgMjQwLCAxOCwgMzAsIDI1MSwgCi0gICAgMTI5LCAyMDgsIDYxLCAyNDAsIDE5LCAyNTAsIDI1NSwgMTgsIDMwLCAyNTEsIDEyOSwgMjM3LCAyNSwgMjQwLCAxOCwgMzAsIAotICAgIDI1MSwgMTI5LCAyMDksIDc2LCAyNDAsIDE4LCAzMCwgMjUxLCAxMjksIDIwOSwgNzYsIDExOCwgMjM2LCAxMSwgMzAsIDI1MSwgCi0gICAgMTI5LCAyMDksIDc2LCAxMjYsIDIzNiwgMTEsIDMwLCAyNTEsIDEyOSwgMjQxLCA0MSwgMjM5LCAyMzMsIDIzNiwgMTEsIDMwLCAKLSAgICAyNTEsIDEyOSwgMjA4LCA2MSwgMjM5LCAyMzMsIDIzNiwgMTEsIDMwLCAyNTEsIDEyOSwgMjA5LCA3NiwgMjM5LCAyMzMsIAotICAgIDIzNiwgMTEsIDMwLCAyNTEsIDEyOSwgMjQ3LCAyMSwgMjM5LCAyMzMsIDIzNiwgMTEsIDMwLCAyNTEsIDEyOSwgMjIzLCA2MCwgCi0gICAgMjM5LCAyMzMsIDIzNiwgMTEsIDMwLCAyNTEsIDEyOSwgMjA5LCA3NiwgMTE4LCAyMDksIDM2LCAzMCwgMjUxLCAxMjksIAotICAgIDIwOSwgNzYsIDIzOSwgMjMzLCAyMDksIDM2LCAzMCwgMjUxLCAxMjksIDI0NCwgNDAsIDIzOSwgMjMzLCAyMjQsIDg1LCAzMCwgCi0gICAgMjUxLCAxMjksIDIxMSwgNDksIDI0MCwgMTksIDIyNCwgODUsIDMwLCAxMTgsIDE2MiwgNTQsIDMwLCAxMTgsIDE2MiwgMiwgCi0gICAgMjUwLCAyNTUsIDE4LCAzMCwgMTIwLCAyMDksIDU4LCA1NCwgMzAsIDEyNiwgMjE3LCA1NCwgNTQsIDMwLCAyMDMsIDUwLCAKLSAgICA1NCwgMzAsIDIwOSwgMjM4LCA1NCwgMzAsIDI0MiwgNjYsIDU0LCAzMCwgMjIwLCA4NywgNTQsIDMwLCAxMjAsIDIyMCwgODYsIAotICAgIDU0LCAzMCwgMTI2LCAyMjAsIDg2LCA1NCwgMzAsIDIzOSwgMTQ3LCAyMjAsIDg2LCA1NCwgMzAsIDIzOSwgMjMzLCAyMjAsIAotICAgIDg2LCA1NCwgMzAsIDIyNCwgMjE2LCA1NCwgMzAsIDIyOCwgMTM5LCAyNDgsIDIxOSwgNTQsIDMwLCAyMjcsIDg4LCA1NCwgCi0gICAgMzAsIDIxOSwgMjEzLCA1NCwgMzAsIDIwMywgMTczLCA1NCwgMzAsIDI1MCwgODcsIDU0LCAzMCwgMjUwLCAxMDIsIDU0LCAKLSAgICAzMCwgMjM4LCA3LCA1NCwgMzAsIDIwOCwgMjMsIDI0OCwgMjE5LCA1NCwgMzAsIDIwMiwgODUsIDU0LCAzMCwgMTE4LCAyMTcsIAotICAgIDU2LCA1NCwgMzAsIDIxMiwgMTEzLCA1NCwgMjE1LCAyMTAsIDIxMywgMTAyLCA1NCwgMjE1LCAyMTAsIDIwNiwgMjQ5LCA1NCwgCi0gICAgMjE1LCAyMTAsIDIxMywgMTM1LCA1NCwgMjE1LCAyMTAsIDIxMywgMTAwLCA1NCwgMjE1LCAyMTAsIDI0MywgMTgzLCAyMTMsIAotICAgIDEwMCwgNTQsIDIxNSwgMjEwLCAyMTIsIDEzNSwgNTQsIDIxNSwgMjEwLCAyNDQsIDM2LCA1NCwgMjE1LCAyMTAsIDIxNywgCi0gICAgMzksIDU0LCAyMTUsIDIxMCwgMjEzLCAxMTksIDU0LCAyMTUsIDIxMCwgMjQyLCAyMywgNTQsIDIxNSwgMjEwLCAyNTAsIDgyLCAKLSAgICA1NCwgMjE1LCAyMTAsIDI0NiwgMjEzLCA1NCwgMzAsIDE2LCAyMDksIDIwOCwgMjE2LCA1OSwgMjE4LCAyMDMsIDI0MywgCi0gICAgMTYwLCAyLCAyMTksIDI1LCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIxOCwgNzgsIDIzNywgNjQsIDIxOCwgMjAzLCAyNDMsIAotICAgIDE2MCwgMiwgMjA5LCAyMTEsIDIzNywgNjQsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjQ3LCA0MiwgMjE4LCAyMDMsIDI0MywgCi0gICAgMTYwLCAyLCAyNDYsIDEzMywgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMDMsIDI1MCwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAKLSAgICAyMzcsIDM1LCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIzOCwgMjEzLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIwOSwgMCwgCi0gICAgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCA0NywgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyNDcsIDI0MCwgMjE4LCAyMDMsIAotICAgIDI0MywgMTYwLCAyLCAyMTMsIDgsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjQ2LCA0LCAyMTgsIDIwMywgMjQzLCAxNjAsIAotICAgIDIsIDIyNSwgMTIxLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIyNSwgNjgsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjE0LCAKLSAgICAyMTMsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjI3LCAxNDMsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjQ4LCA1LCAyMTgsIAotICAgIDIwMywgMjQzLCAxNjAsIDIsIDI0NywgMjYsIDIxOCwgOTEsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjQzLCA5OCwgMjE4LCAKLSAgICAyMDMsIDI0MywgMTYwLCAyLCAyNDUsIDIzOSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMTIsIDQ2LCAyMTgsIDIwMywgCi0gICAgMjQzLCAxNjAsIDIsIDI0NSwgMjQwLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDI0OCwgMTQ3LCAyMTgsIDIwMywgMjQzLCAKLSAgICAxNjAsIDIsIDIxMiwgMjUxLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIzNiwgNTMsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgCi0gICAgMjM3LCAxLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDI0NywgMTc0LCAyMjcsIDIxMCwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAKLSAgICAyNDcsIDE3LCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIxNiwgMTg0LCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDI0MSwgCi0gICAgMTg2LCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDI0MiwgNzEsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjA3LCAxODgsIAotICAgIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjQ4LCAxNTAsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjE4LCA5MiwgMjA4LCA5NSwgCi0gICAgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMDUsIDIxMSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMTksIDkyLCAyMTgsIAotICAgIDIwMywgMjQzLCAxNjAsIDIsIDIxNSwgMjAxLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIyNywgMTI3LCAyMTgsIDIwMywgCi0gICAgMjQzLCAxNjAsIDIsIDIxOSwgMTk0LCAyNDksIDI1LCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIzOSwgMTkzLCAyMTgsIAotICAgIDIwMywgMjQzLCAxNjAsIDIsIDIzNywgMjU1LCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIxMSwgNTAsIDIxOCwgMjAzLCAKLSAgICAyNDMsIDE2MCwgMiwgNSwgMjUwLCA5LCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIwNCwgNzIsIDI0OCwgMjM4LCAyMTgsIAotICAgIDIwMywgMjQzLCAxNjAsIDIsIDM5LCAyMjAsIDg5LCA5NSwgMjI2LCAxOTcsIDEsIDYzLCAyMjYsIDE5NywgMSwgNzQsIDIyNiwgCi0gICAgMTk3LCAxLCAyNDksIDI1NSwgMjI2LCAxOTcsIDEsIDI0OCwgOTksIDIyNiwgMTk3LCAxLCAyMzksIDc1LCAyMjYsIDE5NywgCi0gICAgMSwgMjQ1LCA1MSwgMjI2LCAxOTcsIDEsIDc1LCAyMjYsIDE5NywgMSwgMjA0LCAxNDQsIDIyNiwgMTk3LCAxLCAyMDIsIAotICAgIDE1OSwgMjI2LCAxOTcsIDEsIDIwOSwgMTEwLCAyMjYsIDE5NywgMSwgMjMwLCAxODQsIDIyNiwgMTk3LCAxLCAyMzAsIDU0LCAKLSAgICAyMjYsIDE5NywgMSwgMjE3LCAxMzQsIDIyNiwgMTk3LCAxLCAxNTksIDIyNiwgMTk3LCAxLCAyMjYsIDE4NSwgMjI2LCAxOTcsIAotICAgIDEsIDIyMywgMTYzLCAyMjYsIDE5NywgMSwgMjI0LCA4NywgMjI2LCAxOTcsIDEsIDIyMSwgMjI4LCAyMjYsIDE5NywgMSwgCi0gICAgNjgsIDIyNiwgMTk3LCAxLCAyMTksIDE4NCwgMjI2LCAxOTcsIDEsIDIyOSwgNDgsIDIyNiwgMTk3LCAxLCAxNDYsIDIyNiwgCi0gICAgMTk3LCAxLCAxOTQsIDIyNiwgMTk3LCAxLCAyMTAsIDY5LCAyMjYsIDE5NywgMSwgMjA3LCAyNDQsIDIyNiwgMTk3LCAxLCAKLSAgICAyNTAsIDIzMSwgMjI2LCAxOTcsIDEsIDI0MSwgOTIsIDIyNiwgMTk3LCAxLCAyMzcsIDE3MSwgMjI2LCAxOTcsIDEsIDIwMywgCi0gICAgMTk2LCAyNDcsIDMyLCAxLCA2MywgMjQ3LCAzMiwgMSwgMjE5LCAxNzAsIDI0NywgMzIsIDEsIDI0NSwgNTEsIDI0NywgMzIsIAotICAgIDEsIDE1OSwgMjQ3LCAzMiwgMSwgMjA2LCAxNzYsIDI0NywgMzIsIDEsIDE0NiwgMjQ3LCAzMiwgMSwgMjI3LCAyMzgsIDI0NywgCi0gICAgMzIsIDEsIDI1NCwgMzQsIDI0NywgMzIsIDEsIDIxNywgMTM0LCAyNDcsIDMyLCAxLCAyNDksIDI1NSwgMjQ3LCAzMiwgMSwgCi0gICAgMjI2LCAxODUsIDI0NywgMzIsIDEsIDc4LCAyNDcsIDMyLCAxLCAyNDQsIDIxNCwgMjQ3LCAzMiwgMSwgMjEwLCA2OSwgMjQ3LCAKLSAgICAzMiwgMSwgMjEzLCA5MiwgMjQ3LCAzMiwgMSwgMjEzLCA5MSwgMjQ3LCAzMiwgMSwgMTk0LCAyNDcsIDMyLCAxLCAyNDcsIAotICAgIDEyNCwgMjQ3LCAzMiwgMSwgNjgsIDI0NywgMzIsIDEsIDIyMSwgMjI4LCAyNDcsIDMyLCAxLCAyMDMsIDE5NiwgMjQ3LCAzMiwgCi0gICAgMSwgMjIzLCAxNjMsIDI0NywgMzIsIDEsIDIwNywgMjQzLCAyNDcsIDMyLCAxLCAyMTksIDE4NCwgMjQ3LCAzMiwgMSwgMjExLCAKLSAgICAxNjcsIDI0NywgMzIsIDEsIDc1LCAyNDcsIDMyLCAxLCA3NCwgMjQ3LCAzMiwgMSwgMjA2LCAxNzMsIDI0NywgMzIsIDEsIAotICAgIDIzMCwgNTQsIDI0NywgMzIsIDEsIDIzMCwgNDUsIDI0NywgMzIsIDEsIDIyMywgMjcsIDI0NywgMzIsIDEsIDIwNiwgMTc4LCAKLSAgICAyNDcsIDMyLCAxLCAyMzksIDc1LCAyNDcsIDMyLCAxLCAyMzksIDEwLCAyNDcsIDMyLCAxLCAyMTEsIDEwOCwgMjQ3LCAzMiwgCi0gICAgMSwgMjExLCAxMDcsIDI0NywgMzIsIDEsIDIyMiwgMjA1LCAyNDcsIDMyLCAxLCAyMzEsIDgzLCAyNDcsIDMyLCAxLCAyNDcsIAotICAgIDEyMywgMjQ3LCAzMiwgMSwgMjA3LCAyNDQsIDI0NywgMzIsIDEsIDIwNiwgMTc1LCAyNDcsIDMyLCAxLCAyMTUsIDE4NiwgCi0gICAgMjQ3LCAzMiwgMSwgMjI1LCA1OSwgMjQ3LCAzMiwgMSwgMjI1LCA1OCwgMjQ3LCAzMiwgMSwgMjI1LCA1NywgMjQ3LCAzMiwgCi0gICAgMSwgMjI1LCA1NiwgMjQ3LCAzMiwgMSwgMjI3LCAyMzcsIDI0NywgMzIsIDEsIDI0MSwgMTkwLCAyNDcsIDMyLCAxLCAyMDYsIAotICAgIDE3NCwgODQsIDI0MSwgNDQsIDIwOSwgMzUsIDgyLCA4NCwgMjQxLCA0NCwgMTcsIDEwNSwgODQsIDI0MSwgNDQsIDE3LCAKLSAgICAxMDgsIDg0LCAyNDEsIDQ0LCAxNywgMTQ3LCA4NCwgMjQxLCA0NCwgMTcsIDE0OSwgODQsIDI0MSwgNDQsIDE3LCAxNzAsIAotICAgIDg0LCAyNDEsIDQ0LCAxNywgMTk1LCA4NCwgMjQxLCA0NCwgMTcsIDIxMywgMTExLCA4NCwgMjQxLCA0NCwgMTcsIDE5OSwgCi0gICAgODQsIDI0MSwgNDQsIDE3LCAyMjIsIDYzLCA4NCwgMjQxLCA0NCwgNDIsIDIwOSwgMTUyLCA4NCwgMjQxLCA0NCwgNDIsIAotICAgIDIwNywgMTUxLCA4NCwgMjQxLCA0NCwgNDIsIDIwOSwgNTMsIDg0LCAyNDEsIDQ0LCA0MiwgMjM5LCAxNTMsIDg0LCAyNDEsIAotICAgIDQ0LCA0MiwgMjQwLCAxOCwgODQsIDI0MSwgNDQsIDQyLCAyMTIsIDc0LCA4NCwgMjQxLCA0NCwgNDIsIDIxMywgMTA1LCA4NCwgCi0gICAgMjQxLCA0NCwgNDIsIDI0MSwgMTM0LCA4NCwgMjQxLCA0NCwgNDIsIDIyMiwgNTgsIDg0LCAyNDEsIDQ0LCA0MiwgMTE4LCAKLSAgICAyMzYsIDExLCA4NCwgMjQxLCA0NCwgNDIsIDEyMCwgMjM2LCAxMSwgODQsIDI0MSwgNDQsIDQyLCAxMjYsIDIzNiwgMTEsIAotICAgIDg0LCAyNDEsIDQ0LCA0MiwgMjM5LCAxNDcsIDIzNiwgMTEsIDg0LCAyNDEsIDQ0LCA0MiwgMjM5LCAyMzMsIDIzNiwgMTEsIAotICAgIDg0LCAyNDEsIDQ0LCA0MiwgMjEyLCA4OCwgMjM2LCAxMSwgODQsIDI0MSwgNDQsIDQyLCAyMTMsIDExMiwgMjM2LCAxMSwgCi0gICAgODQsIDI0MSwgNDQsIDQyLCAyNDEsIDE0MywgMjM2LCAxMSwgODQsIDI0MSwgNDQsIDQyLCAyMjIsIDY0LCAyMzYsIDExLCAKLSAgICAzOCwgMzcsIDEsIDYzLCAzOCwgMzcsIDEsIDI0OCwgMTYyLCAzOCwgMzcsIDEsIDIyOSwgMjAxLCAzOCwgMzcsIDEsIDI0NCwgCi0gICAgNzUsIDM4LCAzNywgMSwgNzQsIDM4LCAzNywgMSwgMjA2LCA1NSwgMzgsIDM3LCAxLCAyMDIsIDkyLCAzOCwgMzcsIDEsIAotICAgIDIzNywgNjcsIDM4LCAzNywgMSwgMjA5LCA5MiwgMzgsIDM3LCAxLCA3NSwgMzgsIDM3LCAxLCAxNzMsIDM4LCAzNywgMSwgCi0gICAgMjQxLCAxMjIsIDM4LCAzNywgMSwgMjQxLCAxMDMsIDM4LCAzNywgMSwgMjQxLCA5MiwgMzgsIDM3LCAxLCAyNDEsIDcsIDM4LCAKLSAgICAzNywgMSwgNzgsIDM4LCAzNywgMSwgMjE5LCAzNCwgMzgsIDM3LCAxLCAyMTMsIDQzLCAzOCwgMzcsIDEsIDIyOCwgMjA5LCAKLSAgICAzOCwgMzcsIDEsIDI0MSwgMjgsIDM4LCAzNywgMSwgMjQxLCAxNywgMzgsIDM3LCAxLCAyMDksIDE4NywgMzgsIDM3LCAxLCAKLSAgICA2OCwgMzgsIDM3LCAxLCAyNDEsIDEyNSwgMzgsIDM3LCAxLCAyMTgsIDE5NSwgMzgsIDM3LCAxLCAyMjksIDEyOSwgMzgsIAotICAgIDM3LCAxLCAyNDEsIDE1NCwgMzgsIDM3LCAxLCAyNDEsIDE5LCAzOCwgMzcsIDEsIDI0NiwgMTcwLCAzOCwgMzcsIDEsIDIzMSwgCi0gICAgODMsIDM4LCAzNywgMSwgMjA2LCAxNzgsIDM4LCAzNywgMSwgMjQxLCAwLCAzOCwgMzcsIDIyMSwgNDQsIDEwNSwgMzgsIDM3LCAKLSAgICAyMjEsIDQ0LCAxNzAsIDM4LCAzNywgMjIxLCA0NCwgMjA5LCAxNTIsIDM4LCAzNywgMjIxLCA0NCwgMjQwLCAxOCwgMjM4LCAKLSAgICAxNywgMSwgMjUxLCA2NywgMjM4LCAxNywgMSwgMjQ4LCAyNTUsIDIzOCwgMTcsIDEsIDIzOCwgNzgsIDIzOCwgMTcsIDEsIAotICAgIDI0NCwgMTk0LCAyMzgsIDE3LCAxLCAyNTEsIDYzLCAyMzgsIDE3LCAxLCAyMTcsIDExNywgMjM4LCAxNywgMSwgMjMwLCAKLSAgICAxOTYsIDIzOCwgMTcsIDEsIDIzNywgMTUwLCAyMzgsIDE3LCAxLCAyMDksIDQ5LCAyMzgsIDE3LCAxLCAyNDEsIDEzMywgCi0gICAgMjM4LCAxNywgMSwgMjI4LCAxNzYsIDIzOCwgMTcsIDEsIDIyOCwgOTAsIDIzOCwgMTcsIDEsIDIyNSwgMTE0LCAyMzgsIDE3LCAKLSAgICAxLCAyMjMsIDYyLCAyMzgsIDE3LCAxLCAyMzAsIDE1NCwgMjM4LCAxNywgMSwgMjA2LCAxOTYsIDIzOCwgMTcsIDEsIDIxOSwgCi0gICAgMTQ1LCAyMzgsIDE3LCAxLCAyMjIsIDU4LCAyMzgsIDE3LCAxLCAyMTYsIDE5NiwgMjM4LCAxNywgMSwgMjE0LCAyMTYsIAotICAgIDIzOCwgMTcsIDEsIDIwOSwgMTY2LCAyMzgsIDE3LCAxLCAyMDQsIDEwLCAyMzgsIDE3LCAxLCAyNDAsIDg4LCAyMzgsIDE3LCAKLSAgICAxLCAyMzEsIDg3LCAyMzgsIDE3LCAxLCAyMzUsIDI1MiwgMjM4LCAxNywgMSwgMjE5LCAyMjMsIDIzOCwgMTcsIDEsIDIyMiwgCi0gICAgNjQsIDIzNiwgMTEsIDM4LCAyMTgsIDIzNywgMSwgMjUwLCAyMzEsIDM4LCAyMTgsIDIzNywgMSwgMjQ3LCAxNjAsIDM4LCAKLSAgICAyMTgsIDIzNywgMSwgMjM4LCAyNDgsIDM4LCAyMTgsIDIzNywgMSwgMjQzLCAxMDEsIDM4LCAyMTgsIDIzNywgMSwgNzQsIAotICAgIDM4LCAyMTgsIDIzNywgMSwgMjAyLCA2MiwgMzgsIDIxOCwgMjM3LCAxLCAyNDEsIDI0NywgMzgsIDIxOCwgMjM3LCAxLCAKLSAgICAyMDIsIDk5LCAzOCwgMjE4LCAyMzcsIDEsIDI0MSwgMjQ1LCAzOCwgMjE4LCAyMzcsIDEsIDc1LCAzOCwgMjE4LCAyMzcsIDEsIAotICAgIDIyOSwgMTUsIDM4LCAyMTgsIDIzNywgMSwgMjI3LCAyMDYsIDM4LCAyMTgsIDIzNywgMSwgMjI0LCAyMzgsIDM4LCAyMTgsIAotICAgIDIzNywgMSwgMjIyLCAyMjgsIDM4LCAyMTgsIDIzNywgMSwgMjA1LCAxNzUsIDM4LCAyMTgsIDIzNywgMSwgMjE5LCAyMiwgCi0gICAgMzgsIDIxOCwgMjM3LCAxLCAyMTYsIDEyMSwgMzgsIDIxOCwgMjM3LCAxLCAyMTIsIDE0MiwgMzgsIDIxOCwgMjM3LCAxLCAKLSAgICAyMDksIDI1MCwgMzgsIDIxOCwgMjM3LCAxLCA2OCwgMzgsIDIxOCwgMjM3LCAxLCAyNDYsIDE1MSwgMzgsIDIxOCwgMjM3LCAKLSAgICAxLCAyMTIsIDIzNSwgMzgsIDIxOCwgMjM3LCAxLCAyMTMsIDQ1LCAzOCwgMjE4LCAyMzcsIDEsIDIwMiwgMjE1LCAzOCwgCi0gICAgMjE4LCAyMzcsIDEsIDIwMywgMzAsIDM4LCAyMTgsIDIzNywgMSwgNzgsIDM4LCAyMTgsIDIzNywgMSwgMjIwLCAxOCwgMzgsIAotICAgIDIxOCwgMjM3LCAxLCAyNDEsIDE1NCwgMzgsIDIxOCwgMjM3LCAxLCAxNTIsIDM4LCAyMTgsIDIzNywgMSwgMjA3LCAyNTQsIAotICAgIDM4LCAyMTgsIDIzNywgMSwgMjA2LCA0MywgMzgsIDIxOCwgMjM3LCAxLCAyMDMsIDM0LCAzOCwgMjE4LCAyMzcsIDEsIDIwMywgCi0gICAgMzIsIDM4LCAyMTgsIDIzNywgMSwgMjAzLCA2NiwgMzgsIDIxOCwgMjM3LCAxLCAyMzEsIDExMCwgMzgsIDIxOCwgMjM3LCAxLCAKLSAgICAyMDIsIDIxMywgMzgsIDIxOCwgMjM3LCAxLCAxOTgsIDM4LCAyMTgsIDIzNywgMSwgMjM1LCAxNzEsIDM5LCAzOCwgMjE4LCAKLSAgICAyMzcsIDEsIDI1MCwgMjMxLCAzOSwgMzgsIDIxOCwgMjM3LCAxLCAyNDMsIDEwMSwgMzksIDM4LCAyMTgsIDIzNywgMSwgCi0gICAgMjAyLCA5OSwgMzksIDM4LCAyMTgsIDIzNywgMSwgMjIyLCAyMjgsIDM5LCAzOCwgMjE4LCAyMzcsIDEsIDIxMiwgMTQyLCAKLSAgICAyMDcsIDE5LCAxLCAyNTEsIDYsIDIwNywgMTksIDEsIDI0OCwgMTA2LCAyMDcsIDE5LCAxLCAyMzgsIDIzNiwgMjA3LCAxOSwgCi0gICAgMSwgMjI5LCAxNDQsIDIwNywgMTksIDEsIDI0NCwgMzcsIDIwNywgMTksIDEsIDIzNiwgMTM2LCAyMDcsIDE5LCAxLCAyMDQsIAotICAgIDAsIDIwNywgMTksIDEsIDIwMiwgODMsIDIwNywgMTksIDEsIDIzNiwgNDUsIDIwNywgMTksIDEsIDIwOSwgMTMyLCAyMDcsIAotICAgIDE5LCAxLCAyMDIsIDIzNiwgMjA3LCAxOSwgMSwgMjMwLCAyMiwgMjA3LCAxOSwgMSwgMjEyLCAyNTUsIDIwNywgMTksIDEsIAotICAgIDIyOCwgMjQsIDIwNywgMTksIDEsIDIyNCwgMjQ3LCAyMDcsIDE5LCAxLCAyNDMsIDI1MywgMjA3LCAxOSwgMSwgMjIxLCA0MCwgCi0gICAgMjA3LCAxOSwgMSwgMjAyLCA2LCAyMDcsIDE5LCAxLCAyMTQsIDI0OCwgMjA3LCAxOSwgMSwgMjUxLCA1OSwgMjA3LCAxOSwgCi0gICAgMSwgMjE3LCAxOTEsIDIwNywgMTksIDEsIDIxNSwgMjcsIDIwNywgMTksIDEsIDIxNywgNzAsIDIwNywgMTksIDEsIDIxNiwgCi0gICAgMTc1LCAyMDcsIDE5LCAxLCAyMDksIDk2LCAyMDcsIDE5LCAxLCAyMzgsIDExNCwgMjA3LCAxOSwgMSwgMTM1LCAyMDcsIDE5LCAKLSAgICAxLCA3NSwgMjA3LCAxOSwgMSwgNjgsIDIwNywgMTksIDEsIDIxMSwgMTE5LCAyMDcsIDE5LCAyMDMsIDIzOCwgMjQzLCAxNDEsIAotICAgIDM4LCAyMTgsIDIzMSwgMiwgNjMsIDM4LCAyMTgsIDIzMSwgMiwgNzUsIDM4LCAyMTgsIDIzMSwgMiwgNjgsIDM4LCAyMTgsIAotICAgIDIzMSwgMiwgMTczLCAzOCwgMjE4LCAyMzEsIDIsIDIyOCwgMjA5LCAzOCwgMjE4LCAyMzEsIDIsIDIzOSwgOCwgMzgsIDIxOCwgCi0gICAgMjMxLCAyLCAyMzcsIDIzMCwgMzgsIDIxOCwgMjMxLCAyLCAyMDMsIDE4MiwgMzgsIDIxOCwgMjMxLCAyLCAyNDcsIDkyLCAKLSAgICAzOCwgMjE4LCAyMzEsIDIsIDIzMCwgMTgxLCAzOCwgMjE4LCAyMzEsIDIsIDIzMCwgMTQxLCAzOCwgMjE4LCAyMzEsIDIsIAotICAgIDIxMCwgMjIsIDM4LCAyMTgsIDIzMSwgMiwgMjA3LCAyMDMsIDM4LCAyMTgsIDIzMSwgMiwgMjQ0LCAyMTIsIDM4LCAyMTgsIAotICAgIDIzMSwgMiwgMjQzLCAyMzMsIDM4LCAyMTgsIDIzMSwgMiwgMjQyLCA0MiwgMzgsIDIxOCwgMjMxLCAyLCAyMDksIDEwOCwgCi0gICAgMzgsIDIxOCwgMjMxLCAyLCAxODUsIDM4LCAyMTgsIDIzMSwgMiwgMjQ5LCAzMiwgMzgsIDIxOCwgMjMxLCAyLCAyNDAsIAotICAgIDEwOCwgMzgsIDIxOCwgMjMxLCAyLCAyMDEsIDIwMSwgMzgsIDIxOCwgMjMxLCAyLCAyMjEsIDg0LCAzOCwgMjE4LCAyMzEsIAotICAgIDIsIDE5MiwgMzgsIDIxOCwgMjMxLCAyLCAyMjQsIDE1NSwgMzgsIDIxOCwgMjMxLCAyLCAyMjMsIDI0NiwgMzgsIDIxOCwgCi0gICAgMjMxLCAyLCAxOTgsIDM4LCAyMTgsIDIzMSwgMiwgMjA2LCA4NiwgMzgsIDIxOCwgMjMxLCAyLCAyMDUsIDIzMCwgMzgsIAotICAgIDIxOCwgMjMxLCAyLCAyMTYsIDIyMCwgMzgsIDIxOCwgMjMxLCAyLCAyMTUsIDE0NSwgMzgsIDIxOCwgMjMxLCAyLCAyMjgsIAotICAgIDExMywgMzgsIDIxOCwgMjMxLCAyLCAyMTUsIDM2LCAzOCwgMjE4LCAyMzEsIDIsIDIwMiwgMTE2LCAzOCwgMjE4LCAyMzEsIAotICAgIDIsIDIxMywgOTAsIDM4LCAyMTgsIDIzMSwgMiwgMjExLCAxNjQsIDM4LCAyMTgsIDIzMSwgMiwgMTUyLCAzOCwgMjE4LCAKLSAgICAyMzEsIDIsIDI1MCwgMjgsIDM4LCAyMTgsIDIzMSwgMiwgMjUwLCAyNywgMzgsIDIxOCwgMjMxLCAyLCAyNTAsIDI2LCAzOCwgCi0gICAgMjE4LCAyMzEsIDIsIDIwMywgMTUzLCAzOCwgMjE4LCAyMzEsIDIsIDI0NCwgMTkwLCAzOCwgMjE4LCAyMzEsIDIsIDI0NCwgCi0gICAgMTg5LCAzOCwgMjE4LCAyMzEsIDIsIDI0OSwgOCwgMzgsIDIxOCwgMjMxLCAyLCAyNDcsIDE0NCwgMzgsIDIxOCwgMjMxLCAKLSAgICAyMDMsIDIzOCwgMjQzLCAxNDEsIDM4LCAyMTgsIDIzMSwgNDIsIDEwNSwgMzgsIDIxOCwgMjMxLCA0MiwgMTA4LCAzOCwgCi0gICAgMjE4LCAyMzEsIDQyLCAyMDksIDE1MiwgMzgsIDIxOCwgMjMxLCA0MiwgMjA3LCAxNTEsIDM4LCAyMTgsIDIzMSwgNDIsIAotICAgIDIzNiwgMTEsIDI0NCwgMTcsIDYsIDEsIDE2MywgNzUsIDI0NCwgMTcsIDYsIDEsIDE2MywgNzQsIDI0NCwgMTcsIDYsIDEsIAotICAgIDE2MywgNjMsIDI0NCwgMTcsIDYsIDEsIDE2MywgMjUxLCA3MywgMjQ0LCAxNywgNiwgMSwgMTYzLCA3OCwgMjQ0LCAxNywgNiwgCi0gICAgMSwgMTYzLCAyMjAsIDE4LCAyNDQsIDE3LCA2LCAxLCAyMTIsIDIyOCwgNzUsIDI0NCwgMTcsIDYsIDEsIDIxMiwgMjI4LCAKLSAgICA3NCwgMjQ0LCAxNywgNiwgMSwgMjEyLCAyMjgsIDYzLCAyNDQsIDE3LCA2LCAxLCAyMTIsIDIyOCwgMjUxLCA3MywgMjQ0LCAKLSAgICAxNywgNiwgMSwgMjEyLCAyMjgsIDc4LCAyNDQsIDE3LCA2LCAxLCAyMTIsIDIyOCwgMjIwLCAxOCwgMjQ0LCAxNywgNiwgMSwgCi0gICAgMjUwLCA4LCAyNDQsIDE3LCA2LCAxLCAyMTksIDE5NSwgMjQ0LCAxNywgNiwgMSwgMjAzLCAyMTcsIDI0NCwgMTcsIDYsIDEsIAotICAgIDIwMywgNDksIDI0NCwgMTcsIDYsIDEsIDIzNywgMTcxLCAyNDQsIDE3LCA2LCAxLCAyMTksIDIzLCAyNDQsIDE3LCA2LCAxLCAKLSAgICAyNDgsIDE1MCwgMjQ0LCAxNywgNiwgMSwgMjA5LCAxNzYsIDI0NCwgMTcsIDYsIDEsIDI0NCwgNjEsIDI0NCwgMTcsIDYsIDEsIAotICAgIDI0NiwgMTY2LCAyNDQsIDE3LCA2LCAxLCAyMzAsIDE1OSwgMjQ0LCAxNywgNiwgMSwgMjI5LCAyMDgsIDI0NCwgMTcsIDYsIAotICAgIDEsIDIzOCwgMjExLCAyNDQsIDE3LCA2LCAxLCAyNDEsIDE1NCwgMjQ0LCAxNywgNiwgMSwgMjA2LCA1MCwgMjQ0LCAxNywgNiwgCi0gICAgMSwgMjQwLCAyNDMsIDI0NCwgMTcsIDYsIDEsIDIwOSwgOTAsIDI0NCwgMTcsIDYsIDEsIDI0MSwgMTcsIDI0NCwgMTcsIDYsIAotICAgIDEsIDIwMiwgOTAsIDI0NCwgMTcsIDYsIDEsIDI0MSwgNywgMjQ0LCAxNywgNiwgMSwgMjAyLCA3MCwgMjQ0LCAxNywgNiwgMSwgCi0gICAgMjQxLCAyOCwgMjQ0LCAxNywgNiwgMSwgMjQxLCAxMjIsIDI0NCwgMTcsIDYsIDEsIDI0MSwgMTAzLCAyNDQsIDE3LCA2LCAxLCAKLSAgICAyNDEsIDkyLCAyNDQsIDE3LCA2LCAxLCAyNDEsIDc4LCAyNDQsIDE3LCA2LCAxLCAyMjAsIDU3LCAyNDQsIDE3LCA2LCAxLCAKLSAgICAyNDAsIDIyMCwgMjQ0LCAxNywgNSwgMSwgMTYzLCA3NSwgMjQ0LCAxNywgNSwgMSwgMTYzLCA3NCwgMjQ0LCAxNywgNSwgMSwgCi0gICAgMTYzLCA2MywgMjQ0LCAxNywgNSwgMSwgMTYzLCAyNTEsIDczLCAyNDQsIDE3LCA1LCAxLCAxNjMsIDc4LCAyNDQsIDE3LCA1LCAKLSAgICAxLCAxNjMsIDIyMCwgMTgsIDI0NCwgMTcsIDUsIDEsIDIxMiwgMjI4LCA3NSwgMjQ0LCAxNywgNSwgMSwgMjEyLCAyMjgsIAotICAgIDc0LCAyNDQsIDE3LCA1LCAxLCAyMTIsIDIyOCwgNjMsIDI0NCwgMTcsIDUsIDEsIDIxMiwgMjI4LCAyNTEsIDczLCAyNDQsIAotICAgIDE3LCA1LCAxLCAyMTIsIDIyOCwgNzgsIDI0NCwgMTcsIDUsIDEsIDIxMiwgMjI4LCAyMjAsIDE4LCAyNDQsIDE3LCA1LCAxLCAKLSAgICAyNTAsIDgsIDI0NCwgMTcsIDUsIDEsIDIxOSwgMTk1LCAyNDQsIDE3LCA1LCAxLCAyMDMsIDIxNywgMjQ0LCAxNywgNSwgMSwgCi0gICAgMjAzLCA0OSwgMjQ0LCAxNywgNSwgMSwgMjM3LCAxNzEsIDI0NCwgMTcsIDUsIDEsIDIxOSwgMjMsIDI0NCwgMTcsIDUsIDEsIAotICAgIDI0OCwgMTUwLCAyNDQsIDE3LCA1LCAxLCAyMDksIDE3NiwgMjQ0LCAxNywgNSwgMSwgMjQ0LCA2MSwgMjQ0LCAxNywgNSwgMSwgCi0gICAgMjQ2LCAxNjYsIDI0NCwgMTcsIDUsIDEsIDIzMCwgMTU5LCAyNDQsIDE3LCA1LCAxLCAyMjksIDIwOCwgMjQ0LCAxNywgNSwgCi0gICAgMSwgMjM4LCAyMTEsIDI0NCwgMTcsIDUsIDEsIDI0MSwgMTU0LCAyNDQsIDE3LCA1LCAxLCAyMDYsIDUwLCAyNDQsIDE3LCA1LCAKLSAgICAxLCAyNDAsIDI0MywgMjQ0LCAxNywgNSwgMSwgMjA5LCA5MCwgMjQ0LCAxNywgNSwgMSwgMjQxLCAxNywgMjQ0LCAxNywgNSwgCi0gICAgMSwgMjAyLCA5MCwgMjQ0LCAxNywgNSwgMSwgMjQxLCA3LCAyNDQsIDE3LCA1LCAxLCAyMDIsIDcwLCAyNDQsIDE3LCA1LCAxLCAKLSAgICAyNDEsIDI4LCAyNDQsIDE3LCA1LCAxLCAyNDEsIDEyMiwgMjQ0LCAxNywgNSwgMSwgMjQxLCAxMDMsIDI0NCwgMTcsIDUsIDEsIAotICAgIDI0MSwgOTIsIDI0NCwgMTcsIDUsIDEsIDI0MSwgNzgsIDI0NCwgMTcsIDUsIDEsIDIyMCwgNTcsIDI0NCwgMTcsIDUsIDEsIAotICAgIDI0MCwgMjIwLCAyMTMsIDUwLCAxLCAyMTksIDIwLCAyMTMsIDUwLCAxLCAyMDgsIDEzMSwgMjEzLCA1MCwgMSwgMjI5LCA5NiwgCi0gICAgMjEzLCA1MCwgMSwgMjQwLCA1MywgMjEzLCA1MCwgMSwgMjA5LCA2NSwgMjEzLCA1MCwgMSwgMjEyLCAxMywgMjEzLCA1MCwgCi0gICAgMSwgMjEwLCAxOTAsIDIxMywgNTAsIDEsIDI0NiwgOTAsIDIxMywgNTAsIDEsIDIwMywgNTEsIDIxMywgNTAsIDEsIDIzNiwgCi0gICAgOSwgMjEzLCA1MCwgMSwgMjQ4LCA4NSwgMjEzLCA1MCwgMSwgMjQ0LCA3NCwgMjEzLCA1MCwgMSwgMjM4LCAyNTAsIDIxMywgCi0gICAgNTAsIDEsIDIwNSwgMTcwLCAyMTMsIDUwLCAxLCAyMDksIDcxLCAyMTMsIDUwLCAxLCAyMDIsIDE1LCAyMTMsIDUwLCAxLCAKLSAgICAyMjUsIDE4LCAyMTMsIDUwLCAxLCAyMzAsIDgwLCAyMTMsIDUwLCAxLCAyMDMsIDI1NCwgMjEzLCA1MCwgMSwgMjM3LCAxNTksIAotICAgIDIxMywgNTAsIDEsIDIyNywgMzMsIDIxMywgNTAsIDEsIDIyNCwgMTExLCAyMTMsIDUwLCAxLCAyMzEsIDkwLCAyMTMsIDUwLCAKLSAgICAxLCAyNDEsIDE1MiwgMjEzLCA1MCwgMSwgMjUwLCA3NSwgMjEzLCA1MCwgMSwgMjUxLCAxMTMsIDIxMywgNTAsIDEsIDIyMCwgCi0gICAgMzEsIDIxMywgNTAsIDEsIDIwMywgMjQxLCAyMTMsIDUwLCAxLCAyMTksIDIxMSwgMjEzLCA1MCwgMSwgMjUxLCA3MywgMjEzLCAKLSAgICA1MCwgMSwgMjE1LCAyMjQsIDIxMywgNTAsIDEsIDIyMSwgNDAsIDIxMywgNTAsIDEsIDI0MSwgMTcyLCAyMTMsIDUwLCAxLCAKLSAgICAyNTEsIDc4LCAyMTMsIDUwLCAxLCAyMzUsIDE2MiwgMjEzLCA1MCwgMSwgMjA2LCAyMjQsIDIxMywgNTAsIDEsIDIyMCwgOTUsIAotICAgIDIxMywgNTAsIDEsIDIyMCwgMTAsIDIxMywgNTAsIDEsIDIyMCwgNTUsIDIxMywgNTAsIDEsIDI1MCwgMTEsIDIxMywgNTAsIAotICAgIDEsIDI1MCwgMTIxLCAyMTMsIDUwLCAxLCAyMTksIDI0NCwgMjEzLCA1MCwgMSwgMjUxLCA1NCwgMjEzLCA1MCwgMSwgMjQxLCAKLSAgICAyMSwgMjEzLCA1MCwgMSwgMjUwLCA5OSwgMjEzLCA1MCwgMSwgMjQxLCAxODMsIDIxMywgNTAsIDEsIDIzNSwgMTcwLCAyMTMsIAotICAgIDUwLCAxLCAyMDMsIDE2LCAyMTksIDIyNSwgMSwgMjUxLCAzMCwgMjE5LCAyMjUsIDEsIDI0OSwgMzIsIDIxOSwgMjI1LCAxLCAKLSAgICAyMTAsIDIyLCAyMTksIDIyNSwgMSwgMjMwLCAxODEsIDIxOSwgMjI1LCAxLCAyMDMsIDE4MiwgMjE5LCAyMjUsIDEsIDIyOSwgCi0gICAgMTQ0LCAyMTksIDIyNSwgMSwgMjQ0LCA2MCwgMjE5LCAyMjUsIDEsIDIxNiwgMjIwLCAyMTksIDIyNSwgMSwgMjE1LCAzNiwgCi0gICAgMjE5LCAyMjUsIDEsIDIxMywgNSwgMjE5LCAyMjUsIDEsIDI0NCwgMSwgMjE5LCAyMjUsIDEsIDI0NywgNywgMjE5LCAyMjUsIAotICAgIDEsIDIzOSwgOCwgMjE5LCAyMjUsIDEsIDI0MCwgMTA4LCAyMTksIDIyNSwgMSwgMjE3LCAxMjQsIDIxOSwgMjI1LCAxLCAKLSAgICAyMzAsIDM4LCAyMTksIDIyNSwgMSwgMjI4LCAxMDgsIDIxOSwgMjI1LCAxLCAyMjQsIDEyNCwgMjE5LCAyMjUsIDEsIDIyMSwgCi0gICAgMjQsIDIxOSwgMjI1LCAxLCAyMDQsIDcwLCAyMTksIDIyNSwgMSwgMTUyLCAyMTksIDIyNSwgMSwgMTk4LCAyMTksIDIyNSwgCi0gICAgMSwgNjMsIDIxOSwgMjI1LCAxLCA3NCwgMjE5LCAyMjUsIDEsIDc1LCAyMTksIDIyNSwgMSwgNzgsIDIxOSwgMjI1LCAxLCAKLSAgICA2OCwgMjE5LCAyMjUsIDEsIDI1MiwgMjUsIDIxOSwgMjI1LCAxLCAyNDEsIDE2MSwgMjE5LCAyMjUsIDEsIDIyMCwgMTgsIAotICAgIDIxOSwgMjI1LCAxNywgMjAyLCA4NCwgMjE5LCAyMjUsIDE3LCAxMDUsIDIxOSwgMjI1LCAxNywgMTA4LCAyMTksIDIyNSwgCi0gICAgMTcsIDE0NywgMjE5LCAyMjUsIDE3LCAxNDksIDIxOSwgMjI1LCAxNywgMTcwLCAyMTksIDIyNSwgMTcsIDE5NSwgMjE5LCAKLSAgICAyMjUsIDE3LCAyMTMsIDExMSwgMjE5LCAyMjUsIDE3LCAxOTksIDIxOSwgMjI1LCAxNywgMjIyLCA2MywgMjQxLCAxMTgsIDEsIAotICAgIDYzLCAyNDEsIDExOCwgMSwgMjQ4LCAxNjIsIDI0MSwgMTE4LCAxLCAyNDYsIDIzOCwgMjQxLCAxMTgsIDEsIDI0NiwgMTcwLCAKLSAgICAyNDEsIDExOCwgMSwgMjQ0LCA3NSwgMjQxLCAxMTgsIDEsIDIyMywgMTcsIDI0MSwgMTE4LCAxLCAyNDMsIDI0OCwgMjQxLCAKLSAgICAxMTgsIDEsIDI0MSwgMTQ1LCAyNDEsIDExOCwgMSwgNzQsIDI0MSwgMTE4LCAxLCAyNDAsIDYwLCAyNDEsIDExOCwgMSwgCi0gICAgMjM4LCAxOTAsIDI0MSwgMTE4LCAxLCAyMzgsIDUyLCAyNDEsIDExOCwgMSwgMjM3LCA2NywgMjQxLCAxMTgsIDEsIDc1LCAKLSAgICAyNDEsIDExOCwgMSwgMjMwLCAxNjEsIDI0MSwgMTE4LCAxLCAyMjksIDIwMSwgMjQxLCAxMTgsIDEsIDIyNywgMjM0LCAyNDEsIAotICAgIDExOCwgMSwgMjI3LCA3MywgMjQxLCAxMTgsIDEsIDIyNSwgMjAsIDI0MSwgMTE4LCAxLCAyMjIsIDI0MCwgMjQxLCAxMTgsIAotICAgIDEsIDIwMSwgMjAxLCAyNDEsIDExOCwgMSwgMjIyLCA0MSwgMjQxLCAxMTgsIDEsIDc4LCAyNDEsIDExOCwgMSwgMjE5LCAzNCwgCi0gICAgMjQxLCAxMTgsIDEsIDIxNywgMTA2LCAyNDEsIDExOCwgMSwgMjE2LCAxNTgsIDI0MSwgMTE4LCAxLCAyMTUsIDE4MCwgMjQxLCAKLSAgICAxMTgsIDEsIDIxNCwgMTc3LCAyNDEsIDExOCwgMSwgMjEzLCA0MywgMjQxLCAxMTgsIDEsIDIwOSwgMTg3LCAyNDEsIDExOCwgCi0gICAgMSwgMjA5LCA5MiwgMjQxLCAxMTgsIDEsIDY4LCAyNDEsIDExOCwgMSwgMjA2LCA1NSwgMjQxLCAxMTgsIDEsIDIwMywgMTc2LCAKLSAgICAyNDEsIDExOCwgMSwgMjAzLCAxMjQsIDI0MSwgMTE4LCAxLCAyMDIsIDkyLCAyNDEsIDExOCwgMSwgMjAyLCA3MSwgMjQxLCAKLSAgICAxMTgsIDEsIDIzOCwgMTA1LCAyNDEsIDExOCwgMSwgMjM4LCAxMTEsIDI0MSwgMTE4LCAxLCAyMjksIDEyOSwgMjQ3LCAxNCwgCi0gICAgMjUxLCAzMSwgMSwgMjUxLCAxLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNDgsIDEwOCwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgCi0gICAgMjM4LCA2OSwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjQ0LCAxNDAsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDI0MSwgMTcxLCAKLSAgICAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMDIsIDEwMiwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjQwLCAxODMsIDI0NywgMTQsIAotICAgIDI1MSwgMzEsIDEsIDIwMiwgNjUsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIwOSwgMjEzLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAKLSAgICAyNDYsIDE5OSwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjAyLCAyMjQsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIwMiwgODAsIAotICAgIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIzMCwgMjIzLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMTMsIDkwLCAyNDcsIDE0LCAKLSAgICAyNTEsIDMxLCAxLCAyMjgsIDE3LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMzAsIDIzNSwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgCi0gICAgMjAzLCAxNzIsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDI0MiwgNywgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjQ3LCAzOSwgMjQ3LCAKLSAgICAxNCwgMjUxLCAzMSwgMSwgMjMwLCAxNDIsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIyOSwgMjQwLCAyNDcsIDE0LCAyNTEsIAotICAgIDMxLCAxLCAyMjYsIDE5NCwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjM3LCAxNCwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjE3LCAKLSAgICAxMDcsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDI1MCwgMTc3LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNDYsIDEwNywgMjQ3LCAKLSAgICAxNCwgMjUxLCAzMSwgMSwgMjQ2LCAxNDIsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDI0NSwgNjMsIDI0NywgMTQsIDI1MSwgMzEsIAotICAgIDEsIDIyNSwgMTAzLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMTcsIDExMSwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjIxLCAKLSAgICAxNTEsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDI0MSwgMjQwLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMTMsIDczLCAyNDcsIAotICAgIDE0LCAyNTEsIDMxLCAxLCAyMzAsIDE2MiwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjIwLCAzMSwgMjQ3LCAxNCwgMjUxLCAzMSwgCi0gICAgMSwgMjA3LCAxMjUsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDI0MCwgODMsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDI0MSwgMjUzLCAKLSAgICAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNDYsIDE3NiwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjE5LCA5LCAyNDcsIDE0LCAyNTEsIAotICAgIDMxLCAxLCAyMzgsIDk1LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMTYsIDE3MiwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjEzLCAKLSAgICA5OSwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjA1LCAyMzIsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIwOCwgMTkzLCAyNDcsIAotICAgIDE0LCAyNTEsIDMxLCAxLCAyMTIsIDIwNywgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjMwLCAxOTQsIDI0NywgMTQsIDI1MSwgCi0gICAgMzEsIDEsIDI0NSwgNjQsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDI0NywgNywgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjAzLCAKLSAgICA1NiwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjE4LCAxMDIsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIyOSwgNjIsIDI0NywgMTQsIAotICAgIDI1MSwgMzEsIDI0NiwgNDksIDgyLCAyOSwgMzQsIDIsIDI1MSwgMjMxLCAyOSwgMzQsIDIsIDI1MSwgMjMwLCAyOSwgMzQsIAotICAgIDIsIDI1MSwgMjI5LCAyOSwgMzQsIDIsIDI1MSwgMjI4LCAyOSwgMzQsIDIsIDI1MSwgMjI3LCAyOSwgMzQsIDIsIDI1MSwgCi0gICAgMjI2LCAyOSwgMzQsIDIsIDI1MSwgMjI1LCAyOSwgMzQsIDIsIDI1MSwgMjI0LCAyOSwgMzQsIDIsIDI1MSwgMjIzLCAyOSwgCi0gICAgMzQsIDIsIDI1MSwgMjIyLCAyOSwgMzQsIDIsIDI1MSwgMjIxLCAyOSwgMzQsIDIsIDI1MSwgMjIwLCAyOSwgMzQsIDIsIAotICAgIDI1MSwgMjE5LCAyOSwgMzQsIDIsIDI1MSwgMjE4LCAyOSwgMzQsIDIsIDI1MSwgMjE3LCAyOSwgMzQsIDIsIDI1MSwgMjE2LCAKLSAgICAyOSwgMzQsIDIsIDI1MSwgMjE1LCAyOSwgMzQsIDIsIDI1MSwgMjE0LCAyOSwgMzQsIDIsIDI1MSwgMjEzLCAyOSwgMzQsIDIsIAotICAgIDI1MSwgMjEyLCAyOSwgMzQsIDIsIDI1MSwgMjExLCAyOSwgMzQsIDIsIDI1MSwgMjEwLCAyOSwgMzQsIDIsIDI1MSwgMjA5LCAKLSAgICAyOSwgMzQsIDIsIDI1MSwgMjA4LCAyOSwgMzQsIDIsIDI1MSwgMjA3LCAyOSwgMzQsIDIsIDI1MSwgMjA2LCAyOSwgMzQsIDIsIAotICAgIDI1MSwgMjA1LCAyOSwgMzQsIDIsIDI1NCwgMjM5LCAyOSwgMzQsIDIsIDI1MSwgMjA0LCAyOSwgMzQsIDIsIDI1MSwgMjAzLCAKLSAgICAyOSwgMzQsIDIsIDI1MSwgMjAyLCAyOSwgMzQsIDIsIDI1MSwgMjAxLCAyOSwgMzQsIDIsIDI1MSwgMjAwLCAyOSwgMzQsIDIsIAotICAgIDI1MSwgMTk5LCAyOSwgMzQsIDIsIDI1MSwgMTk4LCAyOSwgMzQsIDIsIDI1MSwgMTk3LCAyOSwgMzQsIDIsIDI1MSwgMTk2LCAKLSAgICAyOSwgMzQsIDIsIDI1MSwgMTk1LCAyOSwgMzQsIDIsIDI1MSwgMTk0LCAyOSwgMzQsIDIsIDI1MSwgMTkzLCAyOSwgMzQsIDIsIAotICAgIDI1MSwgMTkyLCAyOSwgMzQsIDIsIDI1MSwgMTkxLCAyOSwgMzQsIDIsIDI1MSwgMTkwLCAyOSwgMzQsIDIsIDI1MSwgMTg5LCAKLSAgICAyOSwgMzQsIDIsIDI1MSwgMTg4LCAyOSwgMzQsIDIsIDI1MSwgMTg3LCAyOSwgMzQsIDIsIDI1MSwgMTg2LCAyOSwgMzQsIDIsIAotICAgIDI1MSwgMTg1LCAyOSwgMzQsIDIsIDI1MSwgMTg0LCAyOSwgMzQsIDIsIDI1MSwgMTgzLCAyOSwgMzQsIDIsIDI1MSwgMTgyLCAKLSAgICAyOSwgMzQsIDIsIDI1MSwgMTgxLCAyOSwgMzQsIDIsIDI1MSwgMTgwLCAyOSwgMzQsIDIsIDI1MSwgMTc5LCAyOSwgMzQsIDIsIAotICAgIDI1MSwgMTc4LCAyOSwgMzQsIDIsIDI1MSwgMTc3LCAyOSwgMzQsIDIsIDI1MSwgMTc2LCAyOSwgMzQsIDIsIDI1MSwgMTc1LCAKLSAgICAyOSwgMzQsIDIsIDI1MSwgMTc0LCAyOSwgMzQsIDIsIDI1MSwgMTczLCAyOSwgMzQsIDIsIDI1MSwgMTcyLCAyOSwgMzQsIDIsIAotICAgIDI1MSwgMTcxLCAyOSwgMzQsIDIsIDI1MSwgMTcwLCAyOSwgMzQsIDIsIDI1MSwgMTY5LCAyOSwgMzQsIDIsIDI1MSwgMTY4LCAKLSAgICAyOSwgMzQsIDIsIDI1MSwgMTY3LCAyOSwgMzQsIDIsIDI1MSwgMTY2LCAyOSwgMzQsIDIsIDI1MSwgMTY1LCAyOSwgMzQsIDIsIAotICAgIDI1MSwgMTY0LCAyOSwgMzQsIDIsIDI1MSwgMTYzLCAyOSwgMzQsIDIsIDI1MSwgMTYyLCAyOSwgMzQsIDIsIDI1NCwgMTUyLCAKLSAgICAyOSwgMzQsIDIsIDI1MSwgMTYxLCAyOSwgMzQsIDIsIDI1MSwgMTYwLCAyOSwgMzQsIDIsIDI1NCwgMTE3LCAyOSwgMzQsIDIsIAotICAgIDI1MSwgMTU5LCAyOSwgMzQsIDIsIDI1MSwgMTU4LCAyOSwgMzQsIDIsIDI1MSwgMTU3LCAyOSwgMzQsIDIsIDI1MSwgMTU2LCAKLSAgICAyOSwgMzQsIDIsIDI1NCwgMTA0LCAyOSwgMzQsIDIsIDI1MSwgMTU1LCAyOSwgMzQsIDIsIDI1MSwgMTU0LCAyOSwgMzQsIDIsIAotICAgIDI1MSwgMTUzLCAyOSwgMzQsIDIsIDI1MSwgMTUyLCAyOSwgMzQsIDIsIDI1MSwgMTUxLCAyOSwgMzQsIDIsIDI1MywgMTc2LCAKLSAgICAyOSwgMzQsIDIsIDI1MywgMTc1LCAyOSwgMzQsIDIsIDI1MywgMTc0LCAyOSwgMzQsIDIsIDI1MywgMTczLCAyOSwgMzQsIDIsIAotICAgIDI1MywgMTcyLCAyOSwgMzQsIDIsIDI1MywgMTcxLCAyOSwgMzQsIDIsIDI1MywgMTcwLCAyOSwgMzQsIDIsIDI1MywgMTY5LCAKLSAgICAyOSwgMzQsIDIsIDI1MywgMTY3LCAyOSwgMzQsIDIsIDI1MywgMTY2LCAyOSwgMzQsIDIsIDI1MywgMTY1LCAyOSwgMzQsIDIsIAotICAgIDI1MywgMTY0LCAyOSwgMzQsIDIsIDI1MywgMTYzLCAyOSwgMzQsIDIsIDI1MywgMTYyLCAyOSwgMzQsIDIsIDI1MywgMTYwLCAKLSAgICAyOSwgMzQsIDIsIDI1MywgMTU5LCAyOSwgMzQsIDIsIDI1MywgMTU4LCAyOSwgMzQsIDIsIDI1MywgMTU3LCAyOSwgMzQsIDIsIAotICAgIDI1MywgMTU2LCAyOSwgMzQsIDIsIDI1MywgMTU1LCAyOSwgMzQsIDIsIDI1MywgMTU0LCAyOSwgMzQsIDIsIDI1MywgMTUzLCAKLSAgICAyOSwgMzQsIDIsIDI1MywgMTUyLCAyOSwgMzQsIDIsIDI1MywgMTUxLCAyOSwgMzQsIDIsIDI1MywgMTUwLCAyOSwgMzQsIDIsIAotICAgIDI1MywgMTQ5LCAyOSwgMzQsIDIsIDI1MywgMTQ4LCAyOSwgMzQsIDIsIDI1MywgMTQ3LCAyOSwgMzQsIDIsIDI1MywgMTQ2LCAKLSAgICAyOSwgMzQsIDIsIDI1MywgMTQ1LCAyOSwgMzQsIDIsIDI1MywgMTQ0LCAyOSwgMzQsIDIsIDI1MywgMTQzLCAyOSwgMzQsIDIsIAotICAgIDI1MywgMTQyLCAyOSwgMzQsIDIsIDI1MywgMTQwLCAyOSwgMzQsIDIsIDI1MywgMTM5LCAyOSwgMzQsIDIsIDI1MywgMTM4LCAKLSAgICAyOSwgMzQsIDIsIDI1MywgMTM0LCAyOSwgMzQsIDIsIDI1MywgMTMzLCAyOSwgMzQsIDIsIDI1MywgMTMyLCAyOSwgMzQsIDIsIAotICAgIDI1MywgMTMxLCAyOSwgMzQsIDIsIDI1MywgMTI3LCAyOSwgMzQsIDIsIDI1MywgMTI2LCAyOSwgMzQsIDIsIDI1MywgMTI1LCAKLSAgICAyOSwgMzQsIDIsIDI1MywgMTI0LCAyOSwgMzQsIDIsIDI1MywgMTIzLCAyOSwgMzQsIDIsIDI1MywgMTIyLCAyOSwgMzQsIDIsIAotICAgIDI1MywgMTIxLCAyOSwgMzQsIDIsIDI1MywgMTIwLCAyOSwgMzQsIDIsIDI1MywgMTE5LCAyOSwgMzQsIDIsIDI1MywgMTE4LCAKLSAgICAyOSwgMzQsIDIsIDI1MywgMTE3LCAyOSwgMzQsIDIsIDI1MywgMTE2LCAyOSwgMzQsIDIsIDI1MywgMTE1LCAyOSwgMzQsIDIsIAotICAgIDI1MywgMTE0LCAyOSwgMzQsIDIsIDI1MywgMTEzLCAyOSwgMzQsIDIsIDI1MywgMTEyLCAyOSwgMzQsIDIsIDI1MywgMTExLCAKLSAgICAyOSwgMzQsIDIsIDI1MywgMTEwLCAyOSwgMzQsIDIsIDI1MywgMTA5LCAyOSwgMzQsIDIsIDI1MywgMTA4LCAyOSwgMzQsIDIsIAotICAgIDI1MywgMTA3LCAyOSwgMzQsIDIsIDI1MywgMTA2LCAyOSwgMzQsIDIsIDI1MywgMTA1LCAyOSwgMzQsIDIsIDI1MywgMTAzLCAKLSAgICAyOSwgMzQsIDIsIDI1MywgMTAyLCAyOSwgMzQsIDIsIDI1MywgMTAxLCAyOSwgMzQsIDIsIDI1MywgMTAwLCAyOSwgMzQsIDIsIAotICAgIDI1MywgOTksIDI5LCAzNCwgMiwgMjUzLCA5NywgMjksIDM0LCAyLCAyNTMsIDk2LCAyOSwgMzQsIDIsIDI1MywgOTUsIDI5LCAKLSAgICAzNCwgMiwgMjUzLCA5NCwgMjksIDM0LCAyLCAyNTMsIDkyLCAyOSwgMzQsIDIsIDI1MywgOTEsIDI5LCAzNCwgMiwgMjUzLCAKLSAgICA5MCwgMjksIDM0LCAyLCAyNTMsIDU2LCAyOSwgMzQsIDIsIDI1MywgNTQsIDI5LCAzNCwgMiwgMjUzLCA1MiwgMjksIDM0LCAKLSAgICAyLCAyNTMsIDUwLCAyOSwgMzQsIDIsIDI1MywgNDgsIDI5LCAzNCwgMiwgMjUzLCA0NiwgMjksIDM0LCAyLCAyNTMsIDQ0LCAKLSAgICAyOSwgMzQsIDIsIDI1MywgNDIsIDI5LCAzNCwgMiwgMjUzLCA0MCwgMjksIDM0LCAyLCAyNTMsIDM4LCAyOSwgMzQsIDIsIAotICAgIDI1MywgMzYsIDI5LCAzNCwgMiwgMjUzLCAzMywgMjksIDM0LCAyLCAyNTMsIDMxLCAyOSwgMzQsIDIsIDI1MywgMjksIDI5LCAKLSAgICAzNCwgMiwgMjUzLCAyNywgMjksIDM0LCAyLCAyNTMsIDI1LCAyOSwgMzQsIDIsIDI1MywgMjMsIDI5LCAzNCwgMiwgMjUzLCAKLSAgICAyMSwgMjksIDM0LCAyLCAyNTMsIDE5LCAyOSwgMzQsIDIsIDI1MiwgMTkzLCAyOSwgMzQsIDIsIDI1MiwgMTkyLCAyOSwgMzQsIAotICAgIDIsIDI1MiwgMTkxLCAyOSwgMzQsIDIsIDI1MiwgMTkwLCAyOSwgMzQsIDIsIDI1MiwgMTg5LCAyOSwgMzQsIDIsIDI1MiwgCi0gICAgMTg4LCAyOSwgMzQsIDIsIDI1MiwgMTg2LCAyOSwgMzQsIDIsIDI1MiwgMTg1LCAyOSwgMzQsIDIsIDI1MiwgMTg0LCAyOSwgCi0gICAgMzQsIDIsIDI1MiwgMTgzLCAyOSwgMzQsIDIsIDI1MiwgMTgyLCAyOSwgMzQsIDIsIDI1MiwgMTgxLCAyOSwgMzQsIDIsIAotICAgIDI1MiwgMTc5LCAyOSwgMzQsIDIsIDI1MiwgMTc4LCAyOSwgMzQsIDIsIDI1MiwgMTc0LCAyOSwgMzQsIDIsIDI1MiwgMTczLCAKLSAgICAyOSwgMzQsIDIsIDI1MiwgMTcxLCAyOSwgMzQsIDIsIDI1MiwgMTcwLCAyOSwgMzQsIDIsIDI1MiwgMTY5LCAyOSwgMzQsIDIsIAotICAgIDI1MiwgMTY4LCAyOSwgMzQsIDIsIDI1MiwgMTY3LCAyOSwgMzQsIDIsIDI1MiwgMTY2LCAyOSwgMzQsIDIsIDI1MiwgMTY1LCAKLSAgICAyOSwgMzQsIDIsIDI1MiwgMTY0LCAyOSwgMzQsIDIsIDI1MiwgMTYzLCAyOSwgMzQsIDIsIDI1MiwgMTYyLCAyOSwgMzQsIDIsIAotICAgIDI1MiwgMTYxLCAyOSwgMzQsIDIsIDI1MiwgMTYwLCAyOSwgMzQsIDIsIDI1MiwgMTU5LCAyOSwgMzQsIDIsIDI1MiwgMTU4LCAKLSAgICAyOSwgMzQsIDIsIDI1MiwgMTU3LCAyOSwgMzQsIDIsIDI1MiwgMTU2LCAyOSwgMzQsIDIsIDI1MiwgMTU1LCAyOSwgMzQsIDIsIAotICAgIDI1MiwgMTU0LCAyOSwgMzQsIDIsIDI1MiwgMTUzLCAyOSwgMzQsIDIsIDI1MiwgMTUyLCAyOSwgMzQsIDIsIDI1MiwgMTUxLCAKLSAgICAyOSwgMzQsIDIsIDI1MiwgMTUwLCAyOSwgMzQsIDIsIDI1MiwgMTQ5LCAyOSwgMzQsIDIsIDI1MiwgMTQ4LCAyOSwgMzQsIDIsIAotICAgIDI1MiwgMTQ3LCAyOSwgMzQsIDIsIDI1MiwgMTQ2LCAyOSwgMzQsIDIsIDI1MiwgMTQ1LCAyOSwgMzQsIDIsIDI1MiwgMTQ0LCAKLSAgICAyOSwgMzQsIDIsIDI1MiwgMTQzLCAyOSwgMzQsIDIsIDI1MiwgMTQyLCAyOSwgMzQsIDIsIDI1MiwgMTQxLCAyOSwgMzQsIDIsIAotICAgIDI1MiwgMTQwLCAyOSwgMzQsIDIsIDI1MiwgMTM5LCAyOSwgMzQsIDIsIDI1MiwgMTM4LCAyOSwgMzQsIDIsIDI1MiwgMTM3LCAKLSAgICAyOSwgMzQsIDIsIDI1MiwgMTM2LCAyOSwgMzQsIDIsIDI1MiwgMTM1LCAyOSwgMzQsIDIsIDI1MiwgMTM0LCAyOSwgMzQsIDIsIAotICAgIDI1MiwgMTMzLCAyOSwgMzQsIDIsIDI1MiwgMTMyLCAyOSwgMzQsIDIsIDI1MiwgMTMxLCAyOSwgMzQsIDIsIDI1MiwgMTMwLCAKLSAgICAyOSwgMzQsIDIsIDI1MiwgMTI5LCAyOSwgMzQsIDIsIDI1MiwgMTI4LCAyOSwgMzQsIDIsIDI1MiwgMTI3LCAyOSwgMzQsIDIsIAotICAgIDI1MiwgMTI2LCAyOSwgMzQsIDIsIDI1MiwgMTI1LCAyOSwgMzQsIDIsIDI1MiwgMTI0LCAyOSwgMzQsIDIsIDI1MiwgMTIzLCAKLSAgICAyOSwgMzQsIDIsIDI1MiwgMTIyLCAyOSwgMzQsIDIsIDI1MiwgMTIxLCAyOSwgMzQsIDIsIDI1MiwgMTIwLCAyOSwgMzQsIDIsIAotICAgIDI1MiwgMTE5LCAyOSwgMzQsIDIsIDI1MiwgMTE4LCAyOSwgMzQsIDIsIDI1MiwgMTE3LCAyOSwgMzQsIDIsIDI1MiwgMTE2LCAKLSAgICAyOSwgMzQsIDIsIDI1MiwgMTE1LCAyOSwgMzQsIDIsIDI1MiwgMTE0LCAyOSwgMzQsIDIsIDI1MiwgMTEzLCAyOSwgMzQsIDIsIAotICAgIDI1MiwgMTEyLCAyOSwgMzQsIDIsIDI1MiwgMTExLCAyOSwgMzQsIDIsIDI1MiwgMTEwLCAyOSwgMzQsIDIsIDI1MiwgMTA5LCAKLSAgICAyOSwgMzQsIDIsIDI1MiwgMTA4LCAyOSwgMzQsIDIsIDI1MiwgMTA3LCAyOSwgMzQsIDIsIDI1MiwgMTA2LCAyOSwgMzQsIDIsIAotICAgIDI1MiwgMTA1LCAyOSwgMzQsIDIsIDI1MiwgMTA0LCAyOSwgMzQsIDIsIDI1MiwgMTAzLCAyOSwgMzQsIDIsIDI1MiwgMTAyLCAKLSAgICAyOSwgMzQsIDIsIDI1MiwgMTAxLCAyOSwgMzQsIDIsIDI1MiwgMTAwLCAyOSwgMzQsIDIsIDI1MiwgOTksIDI5LCAzNCwgMiwgCi0gICAgMjUyLCA5OCwgMjksIDM0LCAyLCAyNTIsIDk3LCAyOSwgMzQsIDIsIDI1MiwgOTYsIDI5LCAzNCwgMiwgMjUyLCA5NSwgMjksIAotICAgIDM0LCAyLCAyNTIsIDk0LCAyOSwgMzQsIDIsIDI1MiwgOTMsIDI5LCAzNCwgMiwgMjUyLCA5MiwgMjksIDM0LCAyLCAyNTIsIAotICAgIDkxLCAyOSwgMzQsIDIsIDI1MiwgOTAsIDI5LCAzNCwgMiwgMjUyLCA4OSwgMjksIDM0LCAyLCAyNTIsIDg4LCAyOSwgMzQsIAotICAgIDIsIDI1MiwgODcsIDI5LCAzNCwgMiwgMjUyLCA4NiwgMjksIDM0LCAyLCAyNTIsIDg1LCAyOSwgMzQsIDIsIDI1MiwgODQsIAotICAgIDI5LCAzNCwgMiwgMjUyLCA4MywgMjksIDM0LCAyLCAyNTIsIDgyLCAyOSwgMzQsIDIsIDI1MiwgODEsIDI5LCAzNCwgMiwgCi0gICAgMjUyLCA4MCwgMjksIDM0LCAyLCAyNTIsIDc5LCAyOSwgMzQsIDIsIDI1MiwgNzgsIDI5LCAzNCwgMiwgMjUyLCA3NywgMjksIAotICAgIDM0LCAyLCAyNTIsIDc2LCAyOSwgMzQsIDIsIDI1MiwgNzUsIDI5LCAzNCwgMiwgMjUyLCA3NCwgMjksIDM0LCAyLCAyNTIsIAotICAgIDczLCAyOSwgMzQsIDIsIDI1MiwgNzIsIDI5LCAzNCwgMiwgMjUyLCA3MSwgMjksIDM0LCAyLCAyNTIsIDcwLCAyOSwgMzQsIAotICAgIDIsIDI1MiwgNjksIDI5LCAzNCwgMiwgMjUyLCA2OCwgMjksIDM0LCAyLCAyNTIsIDY3LCAyOSwgMzQsIDIsIDI1MiwgNjYsIAotICAgIDI5LCAzNCwgMiwgMjUyLCA2NSwgMjksIDM0LCAyLCAyNTIsIDY0LCAyOSwgMzQsIDIsIDI1MiwgNjMsIDI5LCAzNCwgMiwgCi0gICAgMjUyLCA2MiwgMjksIDM0LCAyLCAyNTIsIDYxLCAyOSwgMzQsIDIsIDI1MiwgNjAsIDI5LCAzNCwgMiwgMjUyLCA1OSwgMjksIAotICAgIDM0LCAyLCAyNTIsIDU4LCAyOSwgMzQsIDIsIDI1MiwgNTcsIDI5LCAzNCwgMiwgMjUyLCA1NiwgMjksIDM0LCAyLCAyNTIsIAotICAgIDU1LCA2MywgMjksIDM0LCAyLCAyNTIsIDU0LCAyNDksIDI1NSwgMjksIDM0LCAyLCAyNTIsIDUzLCAyNDUsIDUxLCAyOSwgCi0gICAgMzQsIDIsIDI1MiwgNTIsIDc0LCAyOSwgMzQsIDIsIDI1MiwgNTEsIDI0MCwgMTc0LCAyOSwgMzQsIDIsIDI1MiwgNTAsIAotICAgIDIzNywgMTcxLCAyOSwgMzQsIDIsIDI1MiwgNDksIDIzMCwgMTg0LCAyOSwgMzQsIDIsIDI1MiwgNDgsIDIzMCwgNTQsIDI5LCAKLSAgICAzNCwgMiwgMjUyLCA0NywgMTU5LCAyOSwgMzQsIDIsIDI1MiwgNDYsIDIyOCwgMTE4LCAyOSwgMzQsIDIsIDI1MiwgNDUsIAotICAgIDIyOCwgMTE3LCAyOSwgMzQsIDIsIDI1MiwgNDQsIDIyOCwgMTE2LCAyOSwgMzQsIDIsIDI1MiwgNDMsIDIyOCwgMTE1LCAyOSwgCi0gICAgMzQsIDIsIDI1MiwgNDIsIDIwNCwgMTQ0LCAyOSwgMzQsIDIsIDI1MiwgNDEsIDIwMywgMTk2LCAyOSwgMzQsIDIsIDI1MiwgCi0gICAgNDAsIDIwMywgMTI0LCAyOSwgMzQsIDIsIDI1MiwgMzksIDIyMCwgMzYsIDI5LCAzNCwgMiwgMjUyLCAzOCwgMjUxLCAxNDcsIAotICAgIDI5LCAzNCwgMiwgMjUyLCAzNywgMjQ4LCAxOTksIDI5LCAzNCwgMiwgMjUyLCAzNiwgMjQ0LCAxMjIsIDI5LCAzNCwgMiwgCi0gICAgMjUyLCAzNSwgMjQwLCAxODIsIDI5LCAzNCwgMiwgMjUyLCAzNCwgMjMwLCAxNjEsIDI5LCAzNCwgMiwgMjUyLCAzMywgMjksIAotICAgIDM0LCAyLCAyNTIsIDMyLCAyOSwgMzQsIDIsIDI1MiwgMzEsIDI5LCAzNCwgMiwgMjUyLCAzMCwgMjksIDM0LCAyLCAyNTIsIAotICAgIDI5LCAyOSwgMzQsIDIsIDI1MiwgMjgsIDI5LCAzNCwgMiwgMjUyLCAyNywgMjksIDM0LCAyLCAyNTIsIDI2LCAyNDUsIDU4LCAKLSAgICA0LCA2MywgMjQ1LCA1OCwgNCwgNzQsIDI0NSwgNTgsIDQsIDc1LCAyNDUsIDU4LCA0LCA3OCwgMjQ1LCA1OCwgNCwgNjgsIAotICAgIDI0NSwgNTgsIDQsIDIzMCwgMTgxLCAyNDUsIDU4LCA0LCAyMzAsIDEwMSwgMjQ1LCA1OCwgNCwgMTczLCAyNDUsIDU4LCA0LCAKLSAgICAyMjksIDIwMSwgMjQ1LCA1OCwgNCwgMjI5LCAxMDAsIDI0NSwgNTgsIDQsIDIyOSwgMjYsIDI0NSwgNTgsIDQsIDIyOCwgCi0gICAgMjA5LCAyNDUsIDU4LCA0LCAyMjgsIDExMywgMjQ1LCA1OCwgNCwgMjI3LCAyMzQsIDI0NSwgNTgsIDQsIDIyNywgMTQ4LCAKLSAgICAyNDUsIDU4LCA0LCAyMjcsIDQ5LCAyNDUsIDU4LCA0LCAyMjYsIDIzOSwgMjQ1LCA1OCwgNCwgMTkyLCAyNDUsIDU4LCA0LCAKLSAgICAyMjUsIDIwLCAyNDUsIDU4LCA0LCAyMjQsIDE1NSwgMjQ1LCA1OCwgNCwgMjI0LCA4MiwgMjQ1LCA1OCwgNCwgMjIzLCAyNDYsIAotICAgIDI0NSwgNTgsIDQsIDIwMSwgMjAxLCAyNDUsIDU4LCA0LCAyMjIsIDI0MCwgMjQ1LCA1OCwgNCwgMjIyLCAxMDAsIDI0NSwgCi0gICAgNTgsIDQsIDIyMSwgMTkxLCAyNDUsIDU4LCA0LCAyMjEsIDg0LCAyNDUsIDU4LCA0LCAxODUsIDI0NSwgNTgsIDQsIDIxOSwgCi0gICAgMzQsIDI0NSwgNTgsIDQsIDIxOCwgMTY3LCAyNDUsIDU4LCA0LCAyMTgsIDY5LCAyNDUsIDU4LCA0LCAyMTcsIDE5MSwgMjQ1LCAKLSAgICA1OCwgNCwgMjE2LCAyMjAsIDI0NSwgNTgsIDQsIDIxNiwgMTU4LCAyNDUsIDU4LCA0LCAyMTYsIDU3LCAyNDUsIDU4LCA0LCAKLSAgICAyMTUsIDIyNywgMjQ1LCA1OCwgNCwgMjE1LCAxNDUsIDI0NSwgNTgsIDQsIDIxNSwgMzYsIDI0NSwgNTgsIDQsIDIxNCwgCi0gICAgMTc3LCAyNDUsIDU4LCA0LCAyMTIsIDE2MiwgMjQ1LCA1OCwgNCwgMjEyLCAxMywgMjQ1LCA1OCwgNCwgMjExLCAxMCwgMjQ1LCAKLSAgICA1OCwgNCwgMjEwLCAyMiwgMjQ1LCA1OCwgNCwgMjA5LCAxODcsIDI0NSwgNTgsIDQsIDIwOSwgMiwgMjQ1LCA1OCwgNCwgCi0gICAgMTM1LCAyNDUsIDU4LCA0LCAyMDcsIDIwMywgMjQ1LCA1OCwgNCwgMjA0LCAxMTEsIDI0NSwgNTgsIDQsIDIwNCwgNjIsIAotICAgIDI0NSwgNTgsIDQsIDIwNCwgMzAsIDI0NSwgNTgsIDQsIDIwNCwgMCwgMjQ1LCA1OCwgNCwgMjAzLCAxODIsIDI0NSwgNTgsIAotICAgIDQsIDIwMywgMTc2LCAyNDUsIDU4LCA0LCAyMDIsIDExNiwgMjQ1LCA1OCwgNCwgMjAyLCAxNywgMjMxLCA1MSwgMjUwLCAKLSAgICAxMzAsIDEsIDI1MSwgMjgsIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAyNDgsIDEwNSwgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIAotICAgIDIzOCwgNjcsIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAyNDQsIDE3NywgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIDIzNywgNjcsIAotICAgIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAyMDQsIDcwLCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjAyLCA5NSwgMjMxLCA1MSwgCi0gICAgMjUwLCAxMzAsIDEsIDIzNywgMTksIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAyMDksIDEyOCwgMjMxLCA1MSwgMjUwLCAxMzAsIAotICAgIDEsIDIwMiwgMjM1LCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjI5LCAyNTAsIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAyMjgsIAotICAgIDE5LCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjI0LCAyNDcsIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAyMjEsIDQwLCAyMzEsIAotICAgIDUxLCAyNTAsIDEzMCwgMSwgMjE0LCAyNDksIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAyNTAsIDMsIDIzMSwgNTEsIDI1MCwgCi0gICAgMTMwLCAxLCAyMTksIDM0LCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjE1LCAyNiwgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIAotICAgIDIxNywgNjksIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAyMTYsIDkxLCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjEyLCAyNTUsIAotICAgIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAyMDksIDIwMSwgMjMxLCA1MSwgMjUwLCAxMzAsIDIxNCwgMTY4LCA1NCwgMjMxLCA1MSwgCi0gICAgMjUwLCAxMzAsIDQyLCAxMDUsIDIzMSwgNTEsIDI1MCwgMTMwLCA0MiwgMTA4LCAyMzEsIDUxLCAyNTAsIDEzMCwgNDIsIAotICAgIDE0NywgMjMxLCA1MSwgMjUwLCAxMzAsIDQyLCAyMDksIDE1MiwgMjMxLCA1MSwgMjUwLCAxMzAsIDQyLCAyMDcsIDE1MSwgCi0gICAgMjMxLCA1MSwgMjUwLCAxMzAsIDQyLCAxMTgsIDIzNiwgMTEsIDIzMSwgNTEsIDI1MCwgMTMwLCA0MiwgMTE4LCAyMDksIDM2LCAKLSAgICAyMzEsIDUxLCAyNTAsIDEzMCwgNDIsIDIwOSwgMTUzLCAyMDksIDM2LCAyMTksIDEzNCwgMSwgMjUxLCAyOCwgMjE5LCAxMzQsIAotICAgIDEsIDI0OCwgMTA1LCAyMTksIDEzNCwgMSwgMjM4LCA2NywgMjE5LCAxMzQsIDEsIDI0NCwgMTc3LCAyMTksIDEzNCwgMSwgCi0gICAgMjM3LCA2NywgMjE5LCAxMzQsIDEsIDIwNCwgNzAsIDIxOSwgMTM0LCAxLCAyMDIsIDk1LCAyMTksIDEzNCwgMSwgMjM3LCAKLSAgICAxOSwgMjE5LCAxMzQsIDEsIDIwOSwgMTI4LCAyMTksIDEzNCwgMSwgMjAyLCAyMzUsIDIxOSwgMTM0LCAxLCAyMjksIDI1MCwgCi0gICAgMjE5LCAxMzQsIDEsIDIyOCwgMTksIDIxOSwgMTM0LCAxLCAyMjQsIDI0NywgMjE5LCAxMzQsIDEsIDQ2LCAyMjEsIDQwLCAKLSAgICAyMTksIDEzNCwgMSwgMjIxLCA0MCwgMjE5LCAxMzQsIDEsIDIxNCwgMjQ5LCAyMTksIDEzNCwgMSwgMjUwLCAzLCAyMTksIAotICAgIDEzNCwgMSwgMjE5LCAzNCwgMjE5LCAxMzQsIDEsIDIxNSwgMjYsIDIxOSwgMTM0LCAxLCAyMTcsIDY5LCAyMTksIDEzNCwgMSwgCi0gICAgMjE2LCA5MSwgMjE5LCAxMzQsIDEsIDIxMiwgMjU1LCAyMTksIDEzNCwgMSwgMjA5LCAyMDEsIDIxOSwgMTM0LCAyMjcsIAotICAgIDIxNywgMjM5LCAyMTIsIDIxOSwgMTM0LCAyMTYsIDExLCAyMzksIDIxMiwgMjE5LCAxMzQsIDQyLCAxMDUsIDIxOSwgMTM0LCAKLSAgICA0MiwgMTA4LCAyMTksIDEzNCwgNDIsIDE0NywgMjE5LCAxMzQsIDQyLCAxNDksIDIxOSwgMTM0LCA0MiwgMTcwLCAyMTksIAotICAgIDEzNCwgNDIsIDIwOSwgMTUyLCAyMTksIDEzNCwgNDIsIDIwNywgMTUxLCAyMjMsIDEwMiwgMSwgNDYsIDI1MSwgMjgsIDIyMywgCi0gICAgMTAyLCAxLCAyNTEsIDI4LCAyMjMsIDEwMiwgMSwgNDYsIDI0OCwgMTA1LCAyMjMsIDEwMiwgMSwgMjQ4LCAxMDUsIDIyMywgCi0gICAgMTAyLCAxLCAyMzgsIDY3LCAyMjMsIDEwMiwgMSwgMjQ0LCAxNzcsIDIyMywgMTAyLCAxLCA0NiwgMjM3LCA2NywgMjIzLCAKLSAgICAxMDIsIDEsIDIzNywgNjcsIDIyMywgMTAyLCAxLCAyMDQsIDcwLCAyMjMsIDEwMiwgMSwgMjAyLCA5NSwgMjIzLCAxMDIsIDEsIAotICAgIDIzNywgMTksIDIyMywgMTAyLCAxLCAyMDksIDEyOCwgMjIzLCAxMDIsIDEsIDQ2LCAyMDIsIDIzNSwgMjIzLCAxMDIsIDEsIAotICAgIDIwMiwgMjM1LCAyMjMsIDEwMiwgMSwgNDYsIDIyOSwgMjUwLCAyMjMsIDEwMiwgMSwgMjI5LCAyNTAsIDIyMywgMTAyLCAxLCAKLSAgICA0NiwgMjI4LCAxOSwgMjIzLCAxMDIsIDEsIDIyOCwgMTksIDIyMywgMTAyLCAxLCA0NiwgMjI0LCAyNDcsIDIyMywgMTAyLCAKLSAgICAxLCAyMjQsIDI0NywgMjIzLCAxMDIsIDEsIDQ2LCAyMjEsIDQwLCAyMjMsIDEwMiwgMSwgMjIxLCA0MCwgMjIzLCAxMDIsIDEsIAotICAgIDIxNCwgMjQ5LCAyMjMsIDEwMiwgMSwgMjUwLCAzLCAyMjMsIDEwMiwgMSwgMjE5LCAzNCwgMjIzLCAxMDIsIDEsIDIxNSwgCi0gICAgMjYsIDIyMywgMTAyLCAxLCAyMTcsIDY5LCAyMjMsIDEwMiwgMSwgMjE2LCA5MSwgMjIzLCAxMDIsIDEsIDQ2LCAyMTIsIAotICAgIDI1NSwgMjIzLCAxMDIsIDEsIDIxMiwgMjU1LCAyMjMsIDEwMiwgMSwgMjA5LCAyMDEsIDIyMywgMTAyLCA0MiwgMTA1LCAKLSAgICAyMjMsIDEwMiwgNDIsIDEwOCwgMjIzLCAxMDIsIDQyLCAxNDcsIDIyMywgMTAyLCA0MiwgMTQ5LCAyMjMsIDEwMiwgMjQ1LCAKLSAgICAxMTYsIDQyLCAxNDksIDIyMywgMTAyLCA0MiwgMTcwLCAyMjMsIDEwMiwgNDIsIDIwOSwgMTUyLCAyMjMsIDEwMiwgNDIsIAotICAgIDIwNywgMTUxLCAyMjMsIDEwMiwgNDIsIDExOCwgMjM2LCAxMSwgMjM3LCA3OCwgMSwgMjUxLCAyOCwgMjM3LCA3OCwgMSwgCi0gICAgMjQ4LCAxMDUsIDIzNywgNzgsIDEsIDIzOCwgNjcsIDIzNywgNzgsIDEsIDI0NCwgMTc2LCAyMzcsIDc4LCAxLCAyMzcsIDY3LCAKLSAgICAyMzcsIDc4LCAxLCAyMDQsIDcwLCAyMzcsIDc4LCAxLCAyMDIsIDk0LCAyMzcsIDc4LCAxLCAyMzcsIDE5LCAyMzcsIDc4LCAKLSAgICAxLCAyMDksIDEyOCwgMjM3LCA3OCwgMSwgMjAyLCAyMzUsIDIzNywgNzgsIDEsIDIyOSwgMjUwLCAyMzcsIDc4LCAxLCAyMjgsIAotICAgIDE5LCAyMzcsIDc4LCAxLCAyMjQsIDI0NywgMjM3LCA3OCwgMSwgMjIxLCA0MCwgMjM3LCA3OCwgMSwgMjE0LCAyNDksIDIzNywgCi0gICAgNzgsIDEsIDI1MCwgMiwgMjM3LCA3OCwgMSwgMjE5LCAzNCwgMjM3LCA3OCwgMSwgMjE1LCAyNiwgMjM3LCA3OCwgMSwgMjE3LCAKLSAgICA2OSwgMjM3LCA3OCwgMSwgMjEyLCAyNTUsIDIzNywgNzgsIDEsIDIwOSwgMjAxLCAyMzcsIDc4LCA0MiwgMTA1LCAyMzcsIAotICAgIDc4LCA0MiwgMTcwLCAyMzcsIDc4LCA0MiwgMjA5LCAxNTIsIDIzNywgNzgsIDQyLCAyMDcsIDE1MSwgMjM3LCA3OCwgNDIsIAotICAgIDExOCwgMjM2LCAxMSwgMjE4LCAxNzgsIDEsIDI1MSwgMjUsIDIxOCwgMTc4LCAxLCAyNDgsIDEwOCwgMjE4LCAxNzgsIDEsIAotICAgIDIzOCwgMjM3LCAyMTgsIDE3OCwgMSwgMjQ0LCAzOSwgMjE4LCAxNzgsIDEsIDIzNywgNjcsIDIxOCwgMTc4LCAxLCAyMDQsIAotICAgIDc3LCAyMTgsIDE3OCwgMSwgMjAyLCAxMDksIDIxOCwgMTc4LCAxLCAyMzcsIDIxLCAyMTgsIDE3OCwgMSwgMjA5LCAxMzIsIAotICAgIDIxOCwgMTc4LCAxLCAyMDIsIDIzNiwgMjE4LCAxNzgsIDEsIDIzMCwgMjIsIDIxOCwgMTc4LCAxLCAyMjgsIDI1LCAyMTgsIAotICAgIDE3OCwgMSwgMjI0LCAyNDcsIDIxOCwgMTc4LCAxLCAyMjEsIDQwLCAyMTgsIDE3OCwgMSwgMjEzLCAxMzcsIDIxOCwgMTc4LCAKLSAgICAxLCAyNTEsIDU5LCAyMTgsIDE3OCwgMSwgMjE5LCAzNCwgMjE4LCAxNzgsIDEsIDIxNSwgMjcsIDIxOCwgMTc4LCAxLCAyMTcsIAotICAgIDc0LCAyMTgsIDE3OCwgMSwgMjE1LCAyMDAsIDIxOCwgMTc4LCAxLCAyMTIsIDI1NSwgMjE4LCAxNzgsIDEsIDIwOSwgMjA3LCAKLSAgICAyMTgsIDE3OCwgNDIsIDEwNSwgMjE4LCAxNzgsIDQyLCAyMDksIDE1MiwgMjE4LCAxNzgsIDQyLCAyMDcsIDE1MSwgMjE4LCAKLSAgICAxNzgsIDQyLCAxMTgsIDIzNiwgMTEsIDIxOCwgMTc4LCA0MiwgMTA4LCAyMTgsIDE3OCwgNDIsIDE0NywgMjE4LCAxNzgsIAotICAgIDIwMywgMjM4LCAyMTMsIDEzMCwgMjI2LCAxOTYsIDEsIDYzLCAyMjYsIDE5NiwgMSwgMjQ5LCAyNTUsIDIyNiwgMTk2LCAxLCAKLSAgICAyMzksIDc1LCAyMjYsIDE5NiwgMSwgMjQ1LCA1MSwgMjI2LCAxOTYsIDEsIDc0LCAyMjYsIDE5NiwgMSwgMjA2LCAxNjQsIAotICAgIDIyNiwgMTk2LCAxLCA3NSwgMjI2LCAxOTYsIDEsIDIwMywgMTI0LCAyMjYsIDE5NiwgMSwgMjMwLCA1NCwgMjI2LCAxOTYsIAotICAgIDEsIDE1OSwgMjI2LCAxOTYsIDEsIDIyNiwgMTg1LCAyMjYsIDE5NiwgMSwgMjIzLCAxNjMsIDIyNiwgMTk2LCAxLCA3OCwgCi0gICAgMjI2LCAxOTYsIDEsIDE0NiwgMjI2LCAxOTYsIDEsIDIxMSwgMTY3LCAyMjYsIDE5NiwgMSwgMjEwLCA2OSwgMjI2LCAxOTYsIAotICAgIDEsIDY4LCAyMjYsIDE5NiwgMSwgMjQwLCAxNzQsIDIyNiwgMTk2LCAxLCAyMTcsIDEzNCwgMjI2LCAxOTYsIDEsIDE5NCwgCi0gICAgMjI2LCAxOTYsIDEsIDIwNywgMjQ0LCAyMjYsIDE5NiwgMSwgMjUwLCAyMzEsIDIyNiwgMTk2LCAxLCAyNDEsIDkyLCAyMjYsIAotICAgIDE5NiwgMSwgMjI2LCAxOTksIDIyNiwgMTk2LCAxLCAyMjEsIDIyOCwgMjI2LCAxOTYsIDEsIDI0NywgMTI1LCAyMjYsIDE5NiwgCi0gICAgMjA4LCA4MiwgODIsIDEyOSwgMjM2LCAyNTMsIDEsIDYzLCAxMjksIDIzNiwgMjUzLCAxLCA3NCwgMTI5LCAyMzYsIDI1MywgCi0gICAgMSwgNzUsIDEyOSwgMjM2LCAyNTMsIDEsIDc4LCAxMjksIDIzNiwgMjUzLCAxLCAxOTgsIDEyOSwgMjM2LCAyNTMsIDEsIAotICAgIDIwNCwgMTExLCAxMjksIDIzNiwgMjUzLCAxLCAyNDksIDMyLCAxMjksIDIzNiwgMjUzLCAxLCAyNDksIDMxLCAxMjksIDIzNiwgCi0gICAgMjUzLCAxLCAxODUsIDEyOSwgMjM2LCAyNTMsIDEsIDE5MiwgMTI5LCAyMzYsIDI1MywgMSwgMjAxLCAyMDEsIDEyOSwgMjM2LCAKLSAgICAyNTMsIDEsIDIyMywgMTEwLCAxMjksIDIzNiwgMjUzLCAxLCAyMjIsIDI0MCwgMTI5LCAyMzYsIDI1MywgMSwgMjIyLCAyMzksIAotICAgIDEyOSwgMjM2LCAyNTMsIDEsIDIxNiwgMjIwLCAxMjksIDIzNiwgMjUzLCAxLCAyMTYsIDIxOSwgMTI5LCAyMzYsIDI1MywgMSwgCi0gICAgMjI4LCAxMTMsIDEyOSwgMjM2LCAyNTMsIDEsIDIyOSwgMTQ0LCAxMjksIDIzNiwgMjUzLCAxLCAyMzcsIDEyLCAxMjksIAotICAgIDIzNiwgMjUzLCAxLCAyMTUsIDM2LCAxMjksIDIzNiwgMjUzLCAxLCAyMTUsIDM1LCAxMjksIDIzNiwgMjUzLCAxLCAyMTQsIAotICAgIDE3NywgMTI5LCAyMzYsIDI1MywgMSwgMTczLCAxMjksIDIzNiwgMjUzLCAxLCAyMTcsIDEyNiwgMTI5LCAyMzYsIDI1MywgMSwgCi0gICAgMjEwLCAyMiwgMTI5LCAyMzYsIDI1MywgMSwgMjEwLCAyMSwgMTI5LCAyMzYsIDI1MywgMSwgMjA5LCAxODcsIDEyOSwgMjM2LCAKLSAgICAyNTMsIDEsIDIwOSwgMTg2LCAxMjksIDIzNiwgMjUzLCAxLCAxMzUsIDEyOSwgMjM2LCAyNTMsIDEsIDI0NCwgMjEyLCAxMjksIAotICAgIDIzNiwgMjUzLCAxNiwgMjA1LCAyMjQsIDEyOSwgMjM2LCAyNTMsIDE2LCAyMDUsIDIyMywgMTI5LCAxOTEsIDEsIDYzLCAKLSAgICAxMjksIDE5MSwgMSwgNzQsIDEyOSwgMTkxLCAxLCA3NSwgMTI5LCAxOTEsIDEsIDc4LCAxMjksIDE5MSwgMSwgMTk4LCAxMjksIAotICAgIDE5MSwgMSwgMjA0LCAxMTEsIDEyOSwgMTkxLCAxLCAyNDksIDMyLCAxMjksIDE5MSwgMSwgMTg1LCAxMjksIDE5MSwgMSwgCi0gICAgMTkyLCAxMjksIDE5MSwgMSwgMjAxLCAyMDEsIDEyOSwgMTkxLCAxLCAyMjIsIDI0MCwgMTI5LCAxOTEsIDEsIDIxNiwgMjIwLCAKLSAgICAxMjksIDE5MSwgMSwgMjI4LCAxMTMsIDEyOSwgMTkxLCAxLCAyMjksIDE0NCwgMTI5LCAxOTEsIDEsIDIzNywgMTIsIDEyOSwgCi0gICAgMTkxLCAxLCAyMTUsIDM2LCAxMjksIDE5MSwgMSwgMjUwLCAxMjYsIDIxNSwgMzYsIDEyOSwgMTkxLCAxLCAyMTQsIDE3NywgCi0gICAgMTI5LCAxOTEsIDEsIDE3MywgMTI5LCAxOTEsIDEsIDIxNywgMTI2LCAxMjksIDE5MSwgMSwgMjEwLCAyMiwgMTI5LCAxOTEsIAotICAgIDEsIDIwOSwgMTg3LCAxMjksIDE5MSwgMSwgMTM1LCAxMjksIDE5MSwgMSwgMjQ0LCAyMTIsIDEyOSwgMTkxLCAyMzksIDEzOCwgCi0gICAgMjQxLCAxMTMsIDIwNywgMTU2LCAxMjksIDE5MSwgMjM5LCAxMzgsIDExOCwgMjM3LCAxMzcsIDEyOSwgMTkxLCAyMjcsIDM2LCAKLSAgICAyMTUsIDIzMywgMTI5LCAxOTEsIDIyNywgMzYsIDIzMSwgNTYsIDEyOSwgMTkxLCA0MiwgMTA1LCAxMjksIDE5MSwgNDIsIAotICAgIDEwOCwgMTI5LCAxOTEsIDQyLCAxNDcsIDEyOSwgMTkxLCA0MiwgMTQ5LCAxMjksIDE5MSwgNDIsIDE3MCwgMTI5LCAxOTEsIAotICAgIDQyLCAxOTUsIDEyOSwgMTkxLCA0MiwgMjEzLCAxMTEsIDEyOSwgMTkxLCA0MiwgMTk5LCAxMjksIDE5MSwgNDIsIDIyMiwgCi0gICAgNjMsIDEyOSwgMTkxLCA0MiwgMjA5LCAxNTIsIDEyOSwgMTkxLCA0MiwgMjA3LCAxNTEsIDEyOSwgMTkxLCA0MiwgMjA5LCAKLSAgICA1MywgMTI5LCAxOTEsIDQyLCAyMzksIDE1MywgMTI5LCAxOTEsIDQyLCAyNDAsIDE4LCAxMjksIDE5MSwgNDIsIDIxMiwgNzQsIAotICAgIDEyOSwgMTkxLCA0MiwgMjEzLCAxMDUsIDEyOSwgMTkxLCA0MiwgMTE4LCAyMzYsIDExLCAxMjksIDE5MSwgNDIsIDEyMCwgCi0gICAgMjM2LCAxMSwgMTI5LCAxOTEsIDQyLCAxMjYsIDIzNiwgMTEsIDEyOSwgMTkxLCA0MiwgMjM5LCAxNDcsIDIzNiwgMTEsIAotICAgIDEyOSwgMTkxLCA0MiwgMjM5LCAyMzMsIDIzNiwgMTEsIDEyOSwgMTkxLCA0MiwgMjEyLCA4OCwgMjM2LCAxMSwgMTI5LCAKLSAgICAxOTEsIDQyLCAyMTMsIDExMiwgMjM2LCAxMSwgMTI5LCAxOTEsIDQyLCAyNDEsIDE0MywgMjM2LCAxMSwgMTI5LCAxOTEsIAotICAgIDQyLCAyMjIsIDY0LCAyMzYsIDExLCAxMjksIDE5MSwgNDIsIDExOCwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAxMjAsIDIwOSwgCi0gICAgMzYsIDEyOSwgMTkxLCA0MiwgMTI2LCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDIzOSwgMTQ3LCAyMDksIDM2LCAxMjksIAotICAgIDE5MSwgNDIsIDIzOSwgMjMzLCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDIxMiwgODgsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgCi0gICAgMjEzLCAxMTIsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMjQxLCAxNDMsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMjIyLCAKLSAgICA2NCwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAyMDksIDE1MywgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAyMDcsIDE1MiwgCi0gICAgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAyMDksIDU0LCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDIzOSwgMTU0LCAyMDksIDM2LCAKLSAgICAxMjksIDE5MSwgNDIsIDI0MCwgMTksIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMjEyLCA3NSwgMjA5LCAzNiwgMTI5LCAxOTEsIAotICAgIDQyLCAyMTMsIDEwNiwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAyNDEsIDEzNSwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAKLSAgICAyMjIsIDU5LCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDExOCwgMjM2LCAxMiwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAxMjAsIAotICAgIDIzNiwgMTIsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMTI2LCAyMzYsIDEyLCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDIzOSwgCi0gICAgMTQ3LCAyMzYsIDEyLCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDIzOSwgMjMzLCAyMzYsIDEyLCAyMDksIDM2LCAxMjksIAotICAgIDE5MSwgNDIsIDIxMiwgODgsIDIzNiwgMTIsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMjEzLCAxMTIsIDIzNiwgMTIsIDIwOSwgCi0gICAgMzYsIDEyOSwgMTkxLCA0MiwgMjQxLCAxNDMsIDIzNiwgMTIsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMjIyLCA2NCwgMjM2LCAKLSAgICAxMiwgMjA5LCAzNiwgMTI5LCAxOTEsIDIzOSwgMTM4LCAxMTgsIDIwNywgMTU3LCAxMjksIDE5MSwgMjM5LCAxMzgsIDEyMCwgCi0gICAgMjA3LCAxNTYsIDEyOSwgMTkxLCAyMzksIDEzOCwgMTI2LCAyMDcsIDE1NiwgMTI5LCAxOTEsIDIzOSwgMTM4LCAyMzksIAotICAgIDE0NywgMjA3LCAxNTYsIDEyOSwgMTkxLCAyMzksIDEzOCwgMjM5LCAyMzMsIDIwNywgMTU2LCAxMjksIDE5MSwgMjM5LCAKLSAgICAxMzgsIDIxMiwgODgsIDIwNywgMTU2LCAxMjksIDE5MSwgMjM5LCAxMzgsIDIxMywgMTEyLCAyMDcsIDE1NiwgMTI5LCAxOTEsIAotICAgIDIzOSwgMTM4LCAyNDEsIDE0MywgMjA3LCAxNTYsIDEyOSwgMTkxLCAyMzksIDEzOCwgMjIyLCA2NCwgMjA3LCAxNTYsIDEyOSwgCi0gICAgMTkxLCAyMzksIDEzOCwgMjA5LCAxNTMsIDIwNywgMTU2LCAyMjksIDEzMSwgMSwgNjMsIDIyOSwgMTMxLCAyMiwgMiwgNzUsIAotICAgIDIyOSwgMTMxLCAyMiwgMiwgNjgsIDIyOSwgMTMxLCAyMiwgMiwgMTI1LCAxNDYsIDIyOSwgMTMxLCAyMiwgMiwgNzQsIDIyOSwgCi0gICAgMTMxLCAyMiwgMiwgNzgsIDIyOSwgMTMxLCAyMiwgMjI3LCAxOTYsIDgyLCAyMjksIDEzMSwgMiwgNTIsIDIxNSwgMjUzLCAKLSAgICA1NiwgMjI5LCAxMzEsIDIsIDI1MCwgMTgwLCAyMjksIDEzMSwgMiwgMjA1LCAxOTksIDIyOSwgMTMxLCAxLCAxNzMsIDIyOSwgCi0gICAgMTMxLCAxLCAyMjksIDE0NCwgMjI5LCAxMzEsIDEsIDIzOSwgOCwgMjI5LCAxMzEsIDEsIDIzOCwgMTE5LCAyMjksIDEzMSwgCi0gICAgMSwgMjQ3LCA5MiwgMjI5LCAxMzEsIDEsIDI0NiwgMTk5LCAyMjksIDEzMSwgMSwgMjMwLCAxODEsIDIyOSwgMTMxLCAxLCAKLSAgICAyMjEsIDExLCAyMjksIDEzMSwgMSwgMjA3LCAyNDEsIDIyOSwgMTMxLCAxLCAyMDcsIDIyOSwgMjI5LCAxMzEsIDEsIDI0NCwgCi0gICAgMTIwLCAyMjksIDEzMSwgMSwgMjQ0LCAxMDQsIDIyOSwgMTMxLCAxLCAyMjEsIDIyNywgMjI5LCAxMzEsIDEsIDIxMCwgMjIsIAotICAgIDIyOSwgMTMxLCAxLCAyMDksIDEwOCwgMjI5LCAxMzEsIDEsIDI0NCwgMjEyLCAyMjksIDEzMSwgMSwgMjQ0LCAxLCAyMjksIAotICAgIDEzMSwgMSwgMjAxLCAyMDEsIDIyOSwgMTMxLCAxLCAxODUsIDIyOSwgMTMxLCAxLCAyMTgsIDIwOCwgMjI5LCAxMzEsIDEsIAotICAgIDI0OSwgMzIsIDIyOSwgMTMxLCAxLCAyNDgsIDk4LCAyMjksIDEzMSwgMSwgMTkyLCAyMjksIDEzMSwgMSwgMTk4LCAyMjksIAotICAgIDEzMSwgMSwgMjE2LCAyMjAsIDIyOSwgMTMxLCAxLCAyMjgsIDExMywgMjI5LCAxMzEsIDEsIDIwNiwgODYsIDIyOSwgMTMxLCAKLSAgICAxLCAyMTMsIDkwLCAyMjksIDEzMSwgMSwgMjExLCAxNjQsIDIyOSwgMTMxLCAxLCAyMTUsIDM2LCAyMjksIDEzMSwgMSwgCi0gICAgMjAyLCAxMTYsIDIyOSwgMTMxLCAxLCAxNTIsIDIyOSwgMTMxLCAxLCAyMjksIDQ3LCAyMjksIDEzMSwgMSwgMjA3LCAyMDksIAotICAgIDIyOSwgMTMxLCAyLCAyNDgsIDIzMSwgNTUsIDIyOSwgMTMxLCAyLCAyNDcsIDEzLCAyMjksIDEzMSwgMiwgNzAsIDU2LCAKLSAgICAyMjksIDEzMSwgMjA1LCAyMDQsIDIyOSwgMTMxLCAxNywgMTA1LCAyMjksIDEzMSwgMTcsIDEwOCwgMjI5LCAxMzEsIDE3LCAKLSAgICAxNDcsIDIyOSwgMTMxLCAxNywgMTQ5LCAyMjksIDEzMSwgNDIsIDIwOSwgMTUyLCAyMjksIDEzMSwgNDIsIDIwNywgMTUxLCAKLSAgICAyMjksIDEzMSwgNDIsIDExOCwgMjM2LCAxMSwgMjI5LCAxMzEsIDQyLCAxMTgsIDIwOSwgMzYsIDIyOSwgMTMxLCAyMTcsIAotICAgIDE3OSwgMjQzLCA4NSwgMjI5LCAxMzEsIDIxNywgMTc5LCA1LCAyNDYsIDYxLCAyMjksIDEzMSwgMjE3LCAxNzksIDI0NiwgCi0gICAgNjEsIDIyOSwgMTMxLCAyMTcsIDE3OSwgMjQ1LCAxMzksIDE0MiwgMjI5LCAxMzEsIDIxNywgMTc5LCAyMjUsIDExNiwgMjI5LCAKLSAgICAxMzEsIDIxNywgMTc5LCAyMjcsIDUsIDIyOSwgMTMxLCAyMTcsIDE3OSwgMjQ0LCAxNjYsIDIyOSwgMTMxLCAyMTcsIDE3OSwgCi0gICAgNTIsIDI0NCwgMTY2LCAyMjksIDEzMSwgMjE3LCAxNzksIDIyNywgMTA4LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKLSAgICAyMzcsIDY3LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAyMjgsIDE5LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKLSAgICAyMzcsIDE5LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAyMjQsIDI0NywgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCi0gICAgMjE3LCA2OSwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgMjA0LCA3MCwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCi0gICAgMjEyLCAyNTUsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIDIxNiwgOTEsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAotICAgIDI0OCwgMTA1LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAyMDksIDIwMSwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCi0gICAgMjE0LCAyMjUsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIDIyOSwgMjUwLCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKLSAgICAyMjEsIDQwLCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAyMjksIDEyNiwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCi0gICAgMjE1LCAyNiwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgMjE0LCAyNDksIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAotICAgIDI0MCwgNjAsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIDI1MSwgMzAsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAotICAgIDI1MCwgMiwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgMjQzLCAyNTQsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAotICAgIDIzOCwgNjcsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIDI0NCwgMTc3LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKLSAgICAyMzgsIDEwNywgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgMjA5LCAxMjgsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAotICAgIDIwMiwgOTQsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIDI0MywgMjUxLCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKLSAgICAyMDIsIDIzNSwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgMjA5LCA5NCwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCi0gICAgMjA5LCA3MywgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgNDIsIDEwNSwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgNDIsIAotICAgIDI0MCwgMTgsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDE0MSwgMjMxLCAzMSwgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDIzNywgCi0gICAgNDMsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMjgsIDI4LCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjM3LCAxNDgsIDM4LCAKLSAgICAxNTMsIDI1MCwgMTQxLCAxLCAyMjUsIDUsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMTcsIDExOSwgMzgsIDE1MywgMjUwLCAKLSAgICAxNDEsIDEsIDIwNCwgNzAsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyNDEsIDE1LCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgCi0gICAgMjE2LCAxMjIsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyNDgsIDEzOCwgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDIwOSwgMTY5LCAKLSAgICAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjQxLCAxNiwgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDIzMCwgMjIsIDM4LCAxNTMsIAotICAgIDI1MCwgMTQxLCAxLCAyMjEsIDE3OCwgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDIyOSwgMTQwLCAzOCwgMTUzLCAyNTAsIDE0MSwgCi0gICAgMSwgMjE1LCAyOCwgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDI0MSwgMTQsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyNDAsIDQ3LCAKLSAgICAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjUxLCAzMCwgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDI1MSwgNTksIDM4LCAxNTMsIAotICAgIDI1MCwgMTQxLCAxLCAyNDQsIDIwNywgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDIzOCwgMTgxLCAzOCwgMTUzLCAyNTAsIDE0MSwgCi0gICAgMSwgMjQ0LCAxODQsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMzgsIDExNCwgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDIwOSwgCi0gICAgMjUxLCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjAyLCAxMDcsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMDksIDEwMCwgMzgsIAotICAgIDE1MywgMjUwLCAxNDEsIDEsIDIwMywgNDcsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMDksIDg4LCAzOCwgMTUzLCAyNTAsIAotICAgIDE0MSwgMSwgMjAyLCAxMTAsIDM4LCAxNTMsIDI1MCwgMTQxLCA0MiwgMTA1LCAzOCwgMTUzLCAyNTAsIDE0MSwgNDIsIDIwOSwgCi0gICAgMTUyLCAzOCwgMTUzLCAyNTAsIDE0MSwgNDIsIDIwNywgMTUxLCAyMjUsIDExNSwgMSwgMjUxLCAyOCwgMjI1LCAxMTUsIDEsIAotICAgIDI0OCwgMTA1LCAyMjUsIDExNSwgMSwgMjQ4LCA5MiwgMjI1LCAxMTUsIDEsIDIzOCwgNjcsIDIyNSwgMTE1LCAxLCAyMzgsIAotICAgIDkyLCAyMjUsIDExNSwgMSwgMjQ0LCAxNzcsIDIyNSwgMTE1LCAxLCAyMzcsIDY3LCAyMjUsIDExNSwgMSwgMjA0LCA3MCwgCi0gICAgMjI1LCAxMTUsIDIsIDIwNywgMjksIDIyNSwgMTE1LCAxLCAyMDIsIDk1LCAyMjUsIDExNSwgMSwgMjAyLCA3MywgMjI1LCAKLSAgICAxMTUsIDEsIDIzMCwgMTYzLCAyMjUsIDExNSwgMSwgMjMwLCAxNDUsIDIyNSwgMTE1LCAxLCAyMzcsIDE5LCAyMjUsIDExNSwgCi0gICAgMSwgMjA5LCAxMjgsIDIyNSwgMTE1LCAxLCAyMDIsIDIzNSwgMjI1LCAxMTUsIDEsIDIyOSwgMjUwLCAyMjUsIDExNSwgMSwgCi0gICAgMjAzLCAxNzksIDIyNSwgMTE1LCAxLCAyMjksIDEzMywgMjI1LCAxMTUsIDEsIDIyOCwgMTksIDIyNSwgMTE1LCAxLCAyNDMsIAotICAgIDI1MCwgMjI1LCAxMTUsIDEsIDIwOSwgOTksIDIyNSwgMTE1LCAxLCAyMjQsIDI0NywgMjI1LCAxMTUsIDEsIDIyMSwgNDAsIAotICAgIDIyNSwgMTE1LCAxLCAyMTQsIDI0OSwgMjI1LCAxMTUsIDEsIDI1MCwgMywgMjI1LCAxMTUsIDEsIDI1MSwgMjM0LCAyMjUsIAotICAgIDExNSwgMSwgMjE5LCAzNCwgMjI1LCAxMTUsIDEsIDI0MCwgNjAsIDIyNSwgMTE1LCAxLCAyMTUsIDI2LCAyMjUsIDExNSwgMSwgCi0gICAgMjE3LCA2OSwgMjI1LCAxMTUsIDEsIDIwMywgMTU3LCAyMjUsIDExNSwgMSwgMjE3LCA5NSwgMjI1LCAxMTUsIDEsIDIxNiwgCi0gICAgOTEsIDIyNSwgMTE1LCAxLCAyMTIsIDI1NSwgMjI1LCAxMTUsIDEsIDIxMSwgMTMzLCAyMjUsIDExNSwgMSwgMjA5LCAyMDEsIAotICAgIDIyNSwgMTE1LCAyNTEsIDE0NiwgMTMxLCA1NSwgMjI1LCAxMTUsIDI1MSwgMTQ2LCAxMzEsIDU2LCAyMjUsIDExNSwgNDIsIAotICAgIDEwNSwgMjI1LCAxMTUsIDQyLCAxNzAsIDIyNSwgMTE1LCA0MiwgMjA5LCAxNTIsIDIyNSwgMTE1LCA0MiwgMjA3LCAxNTEsIAotICAgIDIyNSwgMTE1LCA0MiwgMTE4LCAyMzYsIDExLCAyMjUsIDExNSwgMjE3LCAxNzksIDIxMSwgOTQsIDIyNSwgMTE1LCAyMTcsIAotICAgIDE3OSwgMjM5LCAyMTIsIDIyNSwgMTE1LCAyMTcsIDE3OSwgNTIsIDcwLCAyMDQsIDUsIDI0MywgODUsIDIyNSwgMTE1LCAKLSAgICAyMTcsIDE3OSwgNzAsIDIwNCwgNSwgMjQzLCA4NSwgMjI1LCAxMTUsIDIxNywgMTc5LCAyNDMsIDg1LCAyMjUsIDExNSwgCi0gICAgMjE3LCAxNzksIDEyMCwgMjQzLCA4MywgMjI1LCAxMTUsIDIxNywgMTc5LCAyMjcsIDExNSwgMjQwLCA3LCAyNTAsIDE0LCAxLCAKLSAgICA2MywgMjUwLCAxNCwgMSwgMjUyLCAyNSwgMjUwLCAxNCwgMSwgMjUwLCAxNzgsIDI1MCwgMTQsIDEsIDI1MSwgMjQwLCAyNTAsIAotICAgIDE0LCAxLCAyNTAsIDIzMSwgMjUwLCAxNCwgMSwgMjUxLCAyNDEsIDI1MCwgMTQsIDEsIDI1MSwgMTA5LCAyNTAsIDE0LCAxLCAKLSAgICAyNTEsIDEwNSwgMjUwLCAxNCwgMSwgNzQsIDI1MCwgMTQsIDEsIDI0MSwgMTYxLCAyNTAsIDE0LCAxLCA3OCwgMjUwLCAxNCwgCi0gICAgMSwgMjIwLCAxOCwgMjUwLCAxNCwgMSwgNzUsIDI1MCwgMTQsIDEsIDIzMSwgODMsIDI1MCwgMTQsIDEsIDY4LCAyNTAsIDE0LCAKLSAgICAxLCAyMDYsIDE3OCwgMjUwLCAxNCwgMSwgMjI5LCAyMDEsIDI1MCwgMTQsIDEsIDIwMywgMTc2LCAyNTAsIDE0LCAxLCAyMDMsIAotICAgIDEzOCwgMjUwLCAxNCwgMSwgMjAzLCAxNDgsIDI1MCwgMTQsIDEsIDIzOCwgMTkwLCAyNTAsIDE0LCAxLCAyMzgsIDE1MCwgCi0gICAgMjUwLCAxNCwgMSwgMjM4LCAxMDUsIDI1MCwgMTQsIDEsIDI0NiwgMjM4LCAyNTAsIDE0LCAxLCAyMzAsIDE2MSwgMjUwLCAKLSAgICAxNCwgMSwgMjA5LCAxODcsIDI1MCwgMTQsIDEsIDIwOSwgOTIsIDI1MCwgMTQsIDEsIDI0NCwgNzUsIDI1MCwgMTQsIDEsIAotICAgIDI0MywgMjQ4LCAyNTAsIDE0LCAxLCAyMDcsIDIzNiwgMjUwLCAxNCwgMSwgMjE5LCAzNCwgMjUwLCAxNCwgMSwgMjQwLCA2MCwgCi0gICAgMjUwLCAxNCwgMSwgMjQ4LCAxNjIsIDI1MCwgMTQsIDEsIDI0OCwgOTQsIDI1MCwgMTQsIDEsIDIyMiwgMTkwLCAyNTAsIDE0LCAKLSAgICAxLCAyMjIsIDEwNiwgMjUwLCAxNCwgMSwgMjIyLCAxMDcsIDI1MCwgMTQsIDEsIDIyMiwgMjQwLCAyNTAsIDE0LCAxLCAyMjEsIAotICAgIDEsIDI1MCwgMTQsIDEsIDIyMSwgMjIyLCAyNTAsIDE0LCAxLCAyMjUsIDIwLCAyNTAsIDE0LCAxLCAyMzYsIDE4NiwgMjUwLCAKLSAgICAxNCwgMSwgMjAyLCAxNjYsIDI1MCwgMTQsIDEsIDIwMywgNTIsIDI1MCwgMTQsIDEsIDIwNiwgNTUsIDI1MCwgMTQsIDEsIAotICAgIDIxNiwgMTU4LCAyNTAsIDE0LCAxLCAyMjcsIDIzNCwgMjUwLCAxNCwgMSwgMjE0LCAxNzcsIDI1MCwgMTQsIDEsIDIwMiwgCi0gICAgOTIsIDI1MCwgMTQsIDEsIDIxMywgNDMsIDI1MCwgMTQsIDEsIDIwMiwgNzEsIDI1MCwgMTQsIDEsIDIxMiwgMTY5LCAyNTAsIAotICAgIDE0LCAxLCAyMTEsIDEzNCwgMjUwLCAxNCwgMSwgMjM3LCA2NywgMjUwLCAxNCwgMjUxLCAxNDYsIDgyLCAyMDgsIDIxMywgCi0gICAgMTIwLCAxODcsIDExNSwgMTE4LCA3MCwgMjE3LCAxNzgsIDUsIDEyMCwgMTg3LCAxMTUsIDExOCwgNzAsIDIxNywgMTc4LCAKLSAgICAyMjgsIDgsIDEyMCwgMTg3LCAxMTUsIDExOCwgNzAsIDIxNywgMTc4LCAyMjgsIDgsIDExOCwgNzAsIDExNSwgMTIwLCAxODcsIAotICAgIDIxNywgMTc4LCAyMjgsIDgsIDEyMCwgMjE1LCAyNTAsIDExNSwgMTE4LCAyMTUsIDI1MywgMjE3LCAxNzgsIDIyOCwgOCwgCi0gICAgMTE4LCAyMTUsIDI1MywgMTE1LCAxMjAsIDIxNSwgMjUwLCAyMTcsIDE3OCwgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjUxLCAKLSAgICAyOCwgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjQ4LCAxMDUsIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDIzOCwgNjcsIDIzMSwgMTAsIAotICAgIDIxOSwgNzAsIDEsIDI0NCwgMTc3LCAyMzEsIDEwLCAyMTksIDcwLCAxLCAyMzcsIDY3LCAyMzEsIDEwLCAyMTksIDcwLCAxLCAKLSAgICAyMDQsIDcwLCAyMzEsIDEwLCAyMTksIDcwLCAxLCAyMDIsIDk1LCAyMzEsIDEwLCAyMTksIDcwLCAxLCAyMzcsIDE5LCAyMzEsIAotICAgIDEwLCAyMTksIDcwLCAxLCAyMDksIDEyOCwgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjAyLCAyMzUsIDIzMSwgMTAsIDIxOSwgCi0gICAgNzAsIDEsIDIyOSwgMjUwLCAyMzEsIDEwLCAyMTksIDcwLCAxLCAyMjgsIDE5LCAyMzEsIDEwLCAyMTksIDcwLCAxLCAyMjQsIAotICAgIDI0NywgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjIxLCA0MCwgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjE0LCAyNDksIDIzMSwgCi0gICAgMTAsIDIxOSwgNzAsIDEsIDI1MCwgMywgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjE5LCAzNCwgMjMxLCAxMCwgMjE5LCA3MCwgCi0gICAgMSwgMjE1LCAyNiwgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjE3LCA2OSwgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjE2LCA5MSwgCi0gICAgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjEyLCAyNTUsIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDIwOSwgMjAxLCAyMzEsIDEwLCAKLSAgICAyMTksIDcwLCA0MiwgMTA1LCAyMzEsIDEwLCAyMTksIDcwLCA0MiwgMTA4LCAyMzEsIDEwLCAyMTksIDcwLCA0MiwgMTQ3LCAKLSAgICAyMzEsIDEwLCAyMTksIDcwLCA0MiwgMTQ5LCAyMzEsIDEwLCAyMTksIDcwLCA0MiwgMjA5LCAxNTIsIDIzMSwgMTAsIDIxOSwgCi0gICAgNzAsIDQyLCAyMDcsIDE1MSwgMjMxLCAxMCwgMjE5LCA3MCwgNDIsIDExOCwgMjM2LCAxMSwgMjMxLCAxMCwgMjE5LCA3MCwgCi0gICAgNDIsIDExOCwgMjA5LCAzNiwgMjMxLCAxMCwgMjE5LCAxNDksIDEsIDI1MSwgMjgsIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAKLSAgICAyNDgsIDEwNSwgMjMxLCAxMCwgMjE5LCAxNDksIDEsIDIzOCwgNjcsIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAyNDQsIDE3NywgCi0gICAgMjMxLCAxMCwgMjE5LCAxNDksIDEsIDIzNywgNjcsIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAyMDQsIDY5LCAyMzEsIDEwLCAKLSAgICAyMTksIDE0OSwgMSwgMjAyLCA5NSwgMjMxLCAxMCwgMjE5LCAxNDksIDEsIDIzNywgMTksIDIzMSwgMTAsIDIxOSwgMTQ5LCAKLSAgICAxLCAyMDksIDEyOCwgMjMxLCAxMCwgMjE5LCAxNDksIDEsIDIwMiwgMjM1LCAyMzEsIDEwLCAyMTksIDE0OSwgMSwgMjI5LCAKLSAgICAyNTAsIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAyMjgsIDE5LCAyMzEsIDEwLCAyMTksIDE0OSwgMSwgMjI0LCAyNDYsIDIzMSwgCi0gICAgMTAsIDIxOSwgMTQ5LCAxLCAyMjEsIDQwLCAyMzEsIDEwLCAyMTksIDE0OSwgMSwgMjE0LCAyNDksIDIzMSwgMTAsIDIxOSwgCi0gICAgMTQ5LCAxLCAyMTksIDM0LCAyMzEsIDEwLCAyMTksIDE0OSwgMSwgMjE1LCAyNiwgMjMxLCAxMCwgMjE5LCAxNDksIDEsIAotICAgIDIxMiwgMjU1LCAyMzEsIDEwLCAyMTksIDE0OSwgMSwgMjA5LCAyMDEsIDIzMSwgMTAsIDIxOSwgMTQ5LCA0MiwgMTA1LCAKLSAgICAyMzEsIDEwLCAyMTksIDE0OSwgNDIsIDEwOCwgMjMxLCAxMCwgMjE5LCAxNDksIDQyLCAxNDcsIDIzMSwgMTAsIDIxOSwgCi0gICAgMTQ5LCA0MiwgMTQ5LCAyMzEsIDEwLCAyMTksIDE0OSwgNDIsIDIwOSwgMTUyLCAyMzEsIDEwLCAyMTksIDE0OSwgNDIsIAotICAgIDIwNywgMTUxLCAyMzEsIDEwLCAyMTksIDE0OSwgNDIsIDExOCwgMjM2LCAxMSwgMjMxLCAxMCwgMjE5LCAxNDksIDQyLCAKLSAgICAxMTgsIDIwOSwgMzYsIDIxNywgMjAzLCAyMTksIDE0OSwgMSwgMjUxLCAyOCwgMjE3LCAyMDMsIDIxOSwgMTQ5LCAxLCAyNDgsIAotICAgIDEwNSwgMjE3LCAyMDMsIDIxOSwgMTQ5LCAxLCAyMzgsIDY3LCAyMTcsIDIwMywgMjE5LCAxNDksIDEsIDI0NCwgMTc3LCAKLSAgICAyMTcsIDIwMywgMjE5LCAxNDksIDEsIDIzNywgNjcsIDIxNywgMjAzLCAyMTksIDE0OSwgMSwgMjA0LCA2OSwgMjE3LCAyMDMsIAotICAgIDIxOSwgMTQ5LCAxLCAyMDIsIDk1LCAyMTcsIDIwMywgMjE5LCAxNDksIDEsIDIzNywgMTksIDIxNywgMjAzLCAyMTksIDE0OSwgCi0gICAgMSwgMjAyLCAyMzUsIDIxNywgMjAzLCAyMTksIDE0OSwgMSwgMjI5LCAyNTAsIDIxNywgMjAzLCAyMTksIDE0OSwgMSwgMjI4LCAKLSAgICAxOSwgMjE3LCAyMDMsIDIxOSwgMTQ5LCAxLCAyMjQsIDI0NiwgMjE3LCAyMDMsIDIxOSwgMTQ5LCAxLCAyMjEsIDQwLCAyMTcsIAotICAgIDIwMywgMjE5LCAxNDksIDEsIDIxNCwgMjQ5LCAyMTcsIDIwMywgMjE5LCAxNDksIDEsIDIxOSwgMzQsIDIxNywgMjAzLCAKLSAgICAyMTksIDE0OSwgMSwgMjE1LCAyNiwgMjE3LCAyMDMsIDIxOSwgMTQ5LCAxLCAyMTIsIDI1NSwgMjE3LCAyMDMsIDIxOSwgCi0gICAgMTQ5LCAxLCAyMDksIDIwMSwgMjE3LCAyMDMsIDIxOSwgMTQ5LCAyMTQsIDE2OCwgODIsIDIxNywgMjAzLCAyMTksIDE0OSwgCi0gICAgMjA3LCAxNzQsIDIxNCwgMTY4LCA4MiwgMjE3LCAyMDMsIDIxOSwgMTQ5LCAyMzksIDE0NywgMTg3LCAzLCAyNDUsIDEzMCwgCi0gICAgMjE3LCAyMDMsIDIxOSwgMTQ5LCAyMzksIDE0NywgMTg3LCAzLCAyNDMsIDg1LCAyMTcsIDIwMywgMjE5LCAxNDksIDQyLCAKLSAgICAxMDUsIDIxNywgMjAzLCAyMTksIDE0OSwgNDIsIDEwOCwgMjE3LCAyMDMsIDIxOSwgMTQ5LCA0MiwgMTQ3LCAyMTcsIDIwMywgCi0gICAgMjE5LCAxNDksIDQyLCAxNDksIDIxNywgMjAzLCAyMTksIDE0OSwgNDIsIDIwOSwgMTUyLCAyMTcsIDIwMywgMjE5LCAxNDksIAotICAgIDQyLCAyMDcsIDE1MSwgMjE3LCAyMDMsIDIxOSwgMTQ5LCA0MiwgMTE4LCAyMzYsIDExLCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgCi0gICAgMjM1LCA2MywgMzgsIDIwNywgMTc4LCAxLCAyMDMsIDQwLCA2MywgMzgsIDIwNywgMTc4LCAxLCAyMDMsIDQwLCAyNTEsIAotICAgIDEwOSwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgNzUsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgNzUsIDM4LCAKLSAgICAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgNzQsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDc4LCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIxOSwgMjM1LCAyMjAsIDczLCAzOCwgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDIyMCwgNzMsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjE5LCAyMzUsIDI1MSwgMjMyLCAzOCwgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDI1MSwgMjMyLCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIxOSwgMjM1LCAyNTEsIDEwOCwgMzgsIDIwNywgMTc4LCAxLCAyMDMsIDQwLCAyNTEsIDEwOCwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMTksIDIzNSwgMjUxLCA4MSwgMzgsIDIwNywgMTc4LCAxLCAyMDMsIDQwLCAyNTEsIDgxLCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIxOSwgMjM1LCAyNTEsIDEwMywgMzgsIDIwNywgMTc4LCAxLCAyMDMsIDQwLCAyNTEsIDEwMywgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMTksIDIzNSwgMjUxLCAxMjIsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgMjUxLCAxMjIsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjE5LCAyMzUsIDI1MSwgMTA3LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNDAsIDE4MSwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMDMsIDQwLCAyNDAsIDE4MSwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjUwLCA4LCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIwMywgNDAsIDI1MCwgOCwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjUxLCA5MCwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMDMsIDQwLCAyNTEsIDkwLCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNTEsIDEwMSwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMDMsIDQwLCAyNTEsIDEwMSwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjIwLCA3MSwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMDMsIDQwLCAyMjAsIDcxLCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNTEsIDM5LCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIwMywgNDAsIDI1MSwgMzksIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI1MSwgMTAwLCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIxOSwgMjM1LCAyNDEsIDEwNiwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjQxLCAxMDMsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjE5LCAyMzUsIDI1MCwgMjMxLCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNTEsIDk4LCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIwMywgNDAsIDI1MSwgOTgsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI0MSwgNzAsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjAzLCA0MCwgMjQxLCA3MCwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjQxLCA4OSwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMDMsIDQwLCAyNDEsIDg5LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNDEsIDU2LCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIwMywgNDAsIDI0MSwgNTYsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgMjUwLCAyMjMsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjE5LCAyMzUsIDI0MSwgNzgsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgMjUxLCA5NywgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMTksIDIzNSwgMjQxLCA0NiwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjIwLCA5LCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIxOSwgMjM1LCAyMzUsIDE2NCwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjQxLCAxNjksIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjAzLCA0MCwgMjQxLCAxNjksIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI1MCwgMTQ4LCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIwMywgNDAsIDI1MCwgMTQ4LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyMzAsIDIyNiwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMDMsIDQwLCAyMzAsIDIyNiwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjE5LCAyNDYsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjAzLCA0MCwgMjE5LCAyNDYsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI1MCwgMTQ0LCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIwMywgNDAsIDI1MCwgMTQ0LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNTEsIDk2LCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIxOSwgMjM1LCAyNTAsIDgxLCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNTEsIDk0LCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIxOSwgMjM1LCAyNTAsIDc1LCAzOCwgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDI1MCwgNzUsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjE5LCAyMzUsIDI0MSwgNywgMzgsIDIwNywgMTc4LCAxLCAyMDMsIDQwLCAyNDEsIDcsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAKLSAgICAyMzUsIDI1MCwgNDksIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgMjUwLCA0OSwgMzgsIDIwNywgMTc4LCAxLCAyMTksIAotICAgIDIzNSwgMjUxLCA5MSwgMzgsIDIwNywgMTc4LCAxLCAyMDMsIDQwLCAyNTEsIDkxLCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgCi0gICAgMjM1LCAyMTksIDIyNCwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjQ4LCAyMTUsIDM4LCAxNDUsIDYsIDEsIDYzLCAKLSAgICAzOCwgMTQ1LCA2LCAxLCAyNTIsIDI1LCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDE3MSwgMzgsIDE0NSwgNiwgMSwgMjUwLCAyNDIsIAotICAgIDM4LCAxNDUsIDYsIDEsIDI0MSwgMTY5LCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDg5LCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDE2NiwgCi0gICAgMzgsIDE0NSwgNiwgMSwgMjQxLCAxNjUsIDM4LCAxNDUsIDYsIDEsIDI1MCwgMjI2LCAzOCwgMTQ1LCA2LCAxLCA3NCwgMzgsIAotICAgIDE0NSwgNiwgMSwgMjQ2LCAxNywgNzQsIDM4LCAxNDUsIDYsIDEsIDI0MSwgMTYxLCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDE1NCwgCi0gICAgMzgsIDE0NSwgNiwgMSwgMjQxLCAxNTMsIDM4LCAxNDUsIDYsIDEsIDI0MSwgMTUwLCAzOCwgMTQ1LCA2LCAxLCAyNDEsIAotICAgIDE0NywgMzgsIDE0NSwgNiwgMSwgNzUsIDM4LCAxNDUsIDYsIDEsIDIzMSwgODMsIDM4LCAxNDUsIDYsIDEsIDI0MSwgMTMyLCAKLSAgICAzOCwgMTQ1LCA2LCAxLCAyNDEsIDEyOSwgMzgsIDE0NSwgNiwgMSwgMjUxLCA0NywgMzgsIDE0NSwgNiwgMSwgMjA2LCAyMzIsIAotICAgIDM4LCAxNDUsIDYsIDEsIDI0MSwgMTIyLCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDEwNSwgMzgsIDE0NSwgNiwgMSwgMjQxLCAKLSAgICAxMDMsIDM4LCAxNDUsIDYsIDEsIDI0MSwgOTIsIDM4LCAxNDUsIDYsIDEsIDI0MSwgNTYsIDM4LCAxNDUsIDYsIDEsIDc4LCAKLSAgICAzOCwgMTQ1LCA2LCAxLCAyMjAsIDE4LCAzOCwgMTQ1LCA2LCAxLCAyMjIsIDcxLCAyMjAsIDczLCAzOCwgMTQ1LCA2LCAxLCAKLSAgICAyMTUsIDE0MSwgMjIwLCA3MywgMzgsIDE0NSwgNiwgMSwgMjIwLCA3MiwgMzgsIDE0NSwgNiwgMSwgMjQxLCA0NiwgMzgsIAotICAgIDE0NSwgNiwgMSwgMjQxLCA5NywgMzgsIDE0NSwgNiwgMSwgMjQxLCAyOCwgMzgsIDE0NSwgNiwgMSwgMjEyLCAyMjgsIDI0MSwgCi0gICAgMjgsIDM4LCAxNDUsIDYsIDEsIDI0MSwgMTcsIDM4LCAxNDUsIDYsIDEsIDI0MCwgMjUyLCAzOCwgMTQ1LCA2LCAxLCAyNDAsIAotICAgIDI1MCwgMzgsIDE0NSwgNiwgMSwgMjQxLCA3MCwgMzgsIDE0NSwgNiwgMSwgMjQwLCAyMzksIDM4LCAxNDUsIDYsIDEsIDI0MSwgCi0gICAgMTY3LCAzOCwgMTQ1LCA2LCAxLCA2OCwgMzgsIDE0NSwgNiwgMSwgMjA2LCAxNzgsIDM4LCAxNDUsIDYsIDEsIDIyMiwgNzEsIAotICAgIDIwNywgMjQsIDM4LCAxNDUsIDYsIDEsIDIxNSwgMTQxLCAyMDcsIDI0LCAzOCwgMTQ1LCA2LCAxLCAyNDAsIDIyNiwgMzgsIAotICAgIDE0NSwgNiwgMSwgMjQwLCAxODEsIDM4LCAxNDUsIDYsIDEsIDI0MCwgMTc2LCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDY5LCA1NCwgCi0gICAgMzgsIDE0NSwgNiwgMSwgMjA2LCAxOTMsIDM4LCAxNDUsIDUsIDEsIDYzLCAzOCwgMTQ1LCA1LCAxLCAyNTIsIDI1LCAzOCwgCi0gICAgMTQ1LCA1LCAxLCAyNDEsIDE3MSwgMzgsIDE0NSwgNSwgMSwgMjUwLCAyNDIsIDM4LCAxNDUsIDUsIDEsIDI0MSwgMTY5LCAKLSAgICAzOCwgMTQ1LCA1LCAxLCAyNDEsIDg5LCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDE2NiwgMzgsIDE0NSwgNSwgMSwgMjQxLCAxNjUsIAotICAgIDM4LCAxNDUsIDUsIDEsIDI1MCwgMjI2LCAzOCwgMTQ1LCA1LCAxLCA3NCwgMzgsIDE0NSwgNSwgMSwgMjQ2LCAxNywgNzQsIAotICAgIDM4LCAxNDUsIDUsIDEsIDI0MSwgMTYxLCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDE1NCwgMzgsIDE0NSwgNSwgMSwgMjQxLCAKLSAgICAxNTMsIDM4LCAxNDUsIDUsIDEsIDI0MSwgMTUwLCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDE0NywgMzgsIDE0NSwgNSwgMSwgNzUsIAotICAgIDM4LCAxNDUsIDUsIDEsIDIzMSwgODMsIDM4LCAxNDUsIDUsIDEsIDI0MSwgMTMyLCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDEyOSwgCi0gICAgMzgsIDE0NSwgNSwgMSwgMjUxLCA0NywgMzgsIDE0NSwgNSwgMSwgMjA2LCAyMzIsIDM4LCAxNDUsIDUsIDEsIDI0MSwgMTIyLCAKLSAgICAzOCwgMTQ1LCA1LCAxLCAyNDEsIDEwNSwgMzgsIDE0NSwgNSwgMSwgMjQxLCAxMDMsIDM4LCAxNDUsIDUsIDEsIDI0MSwgOTIsIAotICAgIDM4LCAxNDUsIDUsIDEsIDI0MSwgNTYsIDM4LCAxNDUsIDUsIDEsIDc4LCAzOCwgMTQ1LCA1LCAxLCAyMjAsIDE4LCAzOCwgCi0gICAgMTQ1LCA1LCAxLCAyMjIsIDcxLCAyMjAsIDczLCAzOCwgMTQ1LCA1LCAxLCAyMTUsIDE0MSwgMjIwLCA3MywgMzgsIDE0NSwgCi0gICAgNSwgMSwgMjIwLCA3MiwgMzgsIDE0NSwgNSwgMSwgMjQxLCA0NiwgMzgsIDE0NSwgNSwgMSwgMjQxLCA5NywgMzgsIDE0NSwgCi0gICAgNSwgMSwgMjQxLCAyOCwgMzgsIDE0NSwgNSwgMSwgMjEyLCAyMjgsIDI0MSwgMjgsIDM4LCAxNDUsIDUsIDEsIDI0MSwgMTcsIAotICAgIDM4LCAxNDUsIDUsIDEsIDI0MCwgMjUyLCAzOCwgMTQ1LCA1LCAxLCAyNDAsIDI1MCwgMzgsIDE0NSwgNSwgMSwgMjQxLCA3MCwgCi0gICAgMzgsIDE0NSwgNSwgMSwgMjQwLCAyMzksIDM4LCAxNDUsIDUsIDEsIDI0MSwgMTY3LCAzOCwgMTQ1LCA1LCAxLCA2OCwgMzgsIAotICAgIDE0NSwgNSwgMSwgMjA2LCAxNzgsIDM4LCAxNDUsIDUsIDEsIDIyMiwgNzEsIDIwNywgMjQsIDM4LCAxNDUsIDUsIDEsIDIxNSwgCi0gICAgMTQxLCAyMDcsIDI0LCAzOCwgMTQ1LCA1LCAxLCAyNDAsIDIyNiwgMzgsIDE0NSwgNSwgMSwgMjQwLCAxODEsIDM4LCAxNDUsIAotICAgIDUsIDEsIDI0MCwgMTc2LCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDY5LCA1NCwgMzgsIDE0NSwgNSwgMSwgMjA2LCAxOTMsIDM4LCAKLSAgICAxNDUsIDQyLCAxMDUsIDM4LCAxNDUsIDQyLCAxNzAsIDM4LCAxNDUsIDQyLCAyMDksIDE1MiwgMzgsIDE0NSwgNDIsIDI0MCwgCi0gICAgMTgsIDM4LCAxNDUsIDQyLCAxMTgsIDIzNiwgMTEsIDM4LCAxNDUsIDQyLCAxMTgsIDIwOSwgMzYsIDIxNSwgMTI5LCAxNywgCi0gICAgMTA1LCAyMTUsIDEyOSwgMTcsIDEwOCwgMjE1LCAxMjksIDE3LCAxNDcsIDIxNSwgMTI5LCAxNywgMTQ5LCAyMTUsIDEyOSwgCi0gICAgMTcsIDE3MCwgMjE1LCAxMjksIDE3LCAxOTUsIDIxNSwgMTI5LCAxNywgMjEzLCAxMTEsIDIxNSwgMTI5LCAxNywgMTk5LCAKLSAgICAyMTUsIDEyOSwgMTcsIDIyMiwgNjMsIDIxNSwgMTI5LCA0MiwgMjA5LCAxNTIsIDIxNSwgMTI5LCA0MiwgMjA3LCAxNTEsIAotICAgIDIxNSwgMTI5LCA0MiwgMjA5LCA1MywgMjE1LCAxMjksIDQyLCAyMzksIDE1MywgMjE1LCAxMjksIDQyLCAyNDAsIDE4LCAKLSAgICAyMTUsIDEyOSwgNDIsIDIxMiwgNzQsIDIxNSwgMTI5LCA0MiwgMjEzLCAxMDUsIDIxNSwgMTI5LCA0MiwgMjQxLCAxMzQsIAotICAgIDIxNSwgMTI5LCA0MiwgMjIyLCA1OCwgMjE1LCAxMjksIDQyLCAxMTgsIDIzNiwgMTEsIDIxNSwgMTI5LCA0MiwgMTIwLCAKLSAgICAyMzYsIDExLCAyMTUsIDEyOSwgNDIsIDEyNiwgMjM2LCAxMSwgMjE1LCAxMjksIDQyLCAyMzksIDE0NywgMjM2LCAxMSwgCi0gICAgMjE1LCAxMjksIDQyLCAyMzksIDIzMywgMjM2LCAxMSwgMjE1LCAxMjksIDQyLCAyMTIsIDg4LCAyMzYsIDExLCAyMTUsIAotICAgIDEyOSwgNDIsIDIxMywgMTEyLCAyMzYsIDExLCAyMTUsIDEyOSwgNDIsIDI0MSwgMTQzLCAyMzYsIDExLCAyMTUsIDEyOSwgCi0gICAgNDIsIDIyMiwgNjQsIDIzNiwgMTEsIDIxNSwgMTI5LCAyMzksIDEzOCwgMTE4LCAyMzcsIDEzNywgMjE1LCAxMjksIDIzOSwgCi0gICAgMTM4LCAxMTgsIDIxNywgNTUsIDIxNSwgMTI5LCAyMzksIDEzOCwgMTE4LCAyMDksIDYwLCAyMTUsIDEyOSwgMjM5LCAxMzgsIAotICAgIDEyMCwgMjA5LCA1NywgMTQ0LCAyLCAyNDcsIDUyLCAxNDQsIDIsIDI1MCwgMTgwLCAxNDQsIDIsIDIwNSwgMTk5LCAxNDQsIAotICAgIDIsIDIzMCwgMTM1LCAxNDQsIDIsIDIwNiwgMjIyLCAxNDQsIDEsIDYzLCAxNDQsIDEsIDI1MiwgMjUsIDE0NCwgMSwgNzUsIAotICAgIDE0NCwgMSwgMjMxLCA4MywgMTQ0LCAxLCA2OCwgMTQ0LCAxLCAyMDYsIDE3OCwgMTQ0LCAxLCAxMjUsIDE0NiwgMTQ0LCAxLCAKLSAgICAxMjUsIDIxNSwgMTg2LCAxNDQsIDEsIDEyNSwgMTU5LCAxNDQsIDEsIDEyNSwgMjI3LCA3OCwgMTQ0LCAxLCA3NCwgMTQ0LCAKLSAgICAxLCAyNTEsIDY0LCAxNDQsIDEsIDc4LCAxNDQsIDEsIDI1MCwgMzQsIDE0NCwgMSwgMTczLCAxNDQsIDEsIDIyOSwgMTQ0LCAKLSAgICAxNDQsIDEsIDIzOSwgOCwgMTQ0LCAxLCAyMzgsIDExOSwgMTQ0LCAxLCAyMjIsIDIwMywgMTQ0LCAxLCAyNDcsIDkyLCAxNDQsIAotICAgIDEsIDI0NiwgMTk5LCAxNDQsIDEsIDIzMCwgMTgxLCAxNDQsIDEsIDIzMCwgMTQ5LCAxNDQsIDEsIDIyMSwgMTEsIDE0NCwgMSwgCi0gICAgMjA3LCAyNDEsIDE0NCwgMSwgMjA3LCAyMjksIDE0NCwgMSwgMjQ0LCAxMjAsIDE0NCwgMSwgMjQ0LCAxMDQsIDE0NCwgMSwgCi0gICAgMjIxLCAyMjcsIDE0NCwgMSwgMjEwLCAyMiwgMTQ0LCAxLCAyMDksIDEwOCwgMTQ0LCAxLCAyNDQsIDIxMiwgMTQ0LCAxLCAKLSAgICAyNDQsIDEsIDE0NCwgMSwgMjAxLCAyMDEsIDE0NCwgMSwgMTg1LCAxNDQsIDEsIDIxOCwgMjA4LCAxNDQsIDEsIDI0OSwgMzIsIAotICAgIDE0NCwgMSwgMjQ4LCA5OCwgMTQ0LCAxLCAxOTIsIDE0NCwgMSwgMTk4LCAxNDQsIDEsIDIxNiwgMjIwLCAxNDQsIDEsIDIyOCwgCi0gICAgMTEzLCAxNDQsIDEsIDIwNiwgODYsIDE0NCwgMSwgMjEzLCA5MCwgMTQ0LCAxLCAyMTEsIDE2NCwgMTQ0LCAxLCAyMTUsIDM2LCAKLSAgICAxNDQsIDEsIDE1MiwgMTQ0LCAxLCAyMjcsIDc3LCAxNDQsIDEsIDM4LCA0NCwgMjI3LCA2OCwgMTQ0LCAxLCAzOCwgNDQsIAotICAgIDIxNSwgMTg1LCAxNDQsIDEsIDM4LCA0NCwgMjIxLCAyMDksIDE0NCwgMjIsIDIsIDI1MiwgMjUsIDE0NCwgMjIsIDIsIDI0OCwgCi0gICAgOTUsIDI1MiwgMjUsIDE0NCwgMjIsIDIsIDc1LCAxNDQsIDIyLCAyLCAyMzEsIDgzLCAxNDQsIDIyLCAyLCA2OCwgMTQ0LCAKLSAgICAyMiwgMiwgMjA2LCAxNzgsIDE0NCwgMjIsIDIsIDEyNSwgMTQ2LCAxNDQsIDIyLCAyLCAxMjUsIDIxNSwgMTg2LCAxNDQsIAotICAgIDIyLCAyLCAxMjUsIDE1OSwgMTQ0LCAyMiwgMiwgMTI1LCAyMjcsIDc4LCAxNDQsIDIyLCAyLCA3NCwgMTQ0LCAyMiwgMiwgCi0gICAgMjUxLCA2NCwgMTQ0LCAyMiwgMiwgNzgsIDE0NCwgMjIsIDIsIDI1MCwgMzQsIDE0NCwgMjA1LCAyMDQsIDE0NCwgMjQ0LCAKLSAgICAxNjYsIDE0NCwgNTIsIDI0NCwgMTY2LCAxNDQsIDIxNywgMTc5LCAyNDMsIDg1LCAxNDQsIDIxNywgMTc5LCA1MiwgMjQzLCAKLSAgICA4NSwgMTQ0LCAyMTcsIDE3OSwgMjI3LCAxMTQsIDE0NCwgMjE3LCAxNzksIDI0NSwgMTM5LCAxNDIsIDE0NCwgMjE3LCAxNzksIAotICAgIDIyNywgNSwgMTQ0LCA0MiwgMTA1LCAxNDQsIDQyLCAxMDgsIDE0NCwgNDIsIDE0NywgMTQ0LCA0MiwgMTQ5LCAxNDQsIDQyLCAKLSAgICAxNzAsIDE0NCwgNDIsIDE5NSwgMTQ0LCA0MiwgMjEzLCAxMTEsIDE0NCwgNDIsIDE5OSwgMTQ0LCA0MiwgMjIyLCA2MywgCi0gICAgMTQ0LCA0MiwgMjA5LCAxNTIsIDE0NCwgNDIsIDIwNywgMTUxLCAxNDQsIDQyLCAyMDksIDUzLCAxNDQsIDQyLCAyMzksIAotICAgIDE1MywgMTQ0LCA0MiwgMjQwLCAxOCwgMTQ0LCA0MiwgMjEyLCA3NCwgMTQ0LCA0MiwgMjEzLCAxMDUsIDE0NCwgNDIsIDI0MSwgCi0gICAgMTM0LCAxNDQsIDQyLCAyMjIsIDU4LCAxNDQsIDQyLCAxMTgsIDIzNiwgMTEsIDE0NCwgNDIsIDExOCwgMjA5LCAzNiwgMTQ0LCAKLSAgICAxNywgMjAyLCA4NCwgMTQ0LCAxNywgMTA1LCAxNDQsIDE3LCAxMDgsIDE0NCwgMTcsIDE0NywgMTQ0LCAxNywgMTQ5LCAxNDQsIAotICAgIDE3LCAxNzAsIDE0NCwgMTcsIDE5NSwgMTQ0LCAxNywgMjEzLCAxMTEsIDE0NCwgMTcsIDE5OSwgMTQ0LCAxNywgMjIyLCA2MywgCi0gICAgMTQ0LCA0MiwgMjMwLCA5NiwgMjMwLCAxNSwgMiwgMjQ3LCA1MiwgMjMwLCAxNSwgMiwgMjUwLCAxODAsIDIzMCwgMTUsIDIsIAotICAgIDIwNSwgMTk5LCAyMzAsIDE1LCAxLCA2MywgMjMwLCAxNSwgMSwgMjUyLCAyNSwgMjMwLCAxNSwgMSwgNzUsIDIzMCwgMTUsIAotICAgIDEsIDIzMSwgODMsIDIzMCwgMTUsIDEsIDY4LCAyMzAsIDE1LCAxLCAyMDYsIDE3OCwgMjMwLCAxNSwgMSwgNzQsIDIzMCwgCi0gICAgMTUsIDEsIDI1MSwgNjQsIDIzMCwgMTUsIDEsIDc4LCAyMzAsIDE1LCAxLCAyNTAsIDM0LCAyMzAsIDE1LCAxLCAxNzMsIAotICAgIDIzMCwgMTUsIDEsIDIyOSwgMTQ0LCAyMzAsIDE1LCAxLCAyMzksIDgsIDIzMCwgMTUsIDEsIDIzOCwgMTE5LCAyMzAsIDE1LCAKLSAgICAxLCAyMjIsIDIwMywgMjMwLCAxNSwgMSwgMjQ3LCA5MiwgMjMwLCAxNSwgMSwgMjQ2LCAxOTksIDIzMCwgMTUsIDEsIDIzMCwgCi0gICAgMTgxLCAyMzAsIDE1LCAxLCAyMzAsIDE0OSwgMjMwLCAxNSwgMSwgMjIxLCAxMSwgMjMwLCAxNSwgMSwgMjA3LCAyNDEsIAotICAgIDIzMCwgMTUsIDEsIDIwNywgMjI5LCAyMzAsIDE1LCAxLCAyNDQsIDEyMCwgMjMwLCAxNSwgMSwgMjQ0LCAxMDksIDIzMCwgCi0gICAgMTUsIDEsIDI0NCwgMTA0LCAyMzAsIDE1LCAxLCAyMTYsIDYxLCAyMzAsIDE1LCAxLCAyMjEsIDIyNywgMjMwLCAxNSwgMSwgCi0gICAgMjEwLCAyMiwgMjMwLCAxNSwgMSwgMjA5LCAxMDgsIDIzMCwgMTUsIDEsIDI0NCwgMjEyLCAyMzAsIDE1LCAxLCAyNDQsIDEsIAotICAgIDIzMCwgMTUsIDEsIDIwMSwgMjAxLCAyMzAsIDE1LCAxLCAxODUsIDIzMCwgMTUsIDEsIDIxOCwgMjA4LCAyMzAsIDE1LCAxLCAKLSAgICAyNDksIDMyLCAyMzAsIDE1LCAxLCAyNDgsIDk4LCAyMzAsIDE1LCAxLCAxOTIsIDIzMCwgMTUsIDEsIDE5OCwgMjMwLCAxNSwgCi0gICAgMSwgMjE2LCAyMjAsIDIzMCwgMTUsIDEsIDIyOCwgMTEzLCAyMzAsIDE1LCAxLCAyMDYsIDg2LCAyMzAsIDE1LCAxLCAyMTMsIAotICAgIDkwLCAyMzAsIDE1LCAxLCAyMTEsIDE2NCwgMjMwLCAxNSwgMSwgMjE1LCAzNiwgMjMwLCAxNSwgMSwgMTUyLCAyMzAsIDE1LCAKLSAgICAyMiwgMiwgMjUyLCAyNSwgMjMwLCAxNSwgMjIsIDIsIDc1LCAyMzAsIDE1LCAyMiwgMiwgMjMxLCA4MywgMjMwLCAxNSwgMjIsIAotICAgIDIsIDY4LCAyMzAsIDE1LCAyMiwgMiwgMjA2LCAxNzgsIDIzMCwgMTUsIDIyLCAyLCA3NCwgMjMwLCAxNSwgMjIsIDIsIDI1MSwgCi0gICAgNjQsIDIzMCwgMTUsIDIyLCAyLCA3OCwgMjMwLCAxNSwgMjIsIDIsIDI1MCwgMzQsIDIzMCwgMTUsIDIsIDIwNSwgMjA0LCAKLSAgICAyMzAsIDE1LCAyLCAyMjEsIDUxLCAyMzAsIDE1LCAyNTEsIDE0NiwgNTQsIDIzMCwgMTUsIDI0MSwgNTksIDU0LCAyMzAsIAotICAgIDE1LCA0MiwgNTQsIDIzMCwgMTUsIDIxNCwgMTY4LCA4MiwgMjMwLCAxNSwgNTIsIDIxNCwgMTY4LCA4MiwgMjMwLCAxNSwgCi0gICAgMjQ0LCAxNjYsIDIzMCwgMTUsIDUyLCAyNDQsIDE2NiwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyMTUsIDE5LCAyMTEsIAotICAgIDI0NiwgMjExLCAyNTQsIDEsIDIwOSwgMjUxLCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDI0OSwgNSwgMjExLCAyNDYsIDIxMSwgCi0gICAgMjU0LCAxLCAyNDcsIDgxLCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDI0NCwgMTkzLCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIAotICAgIDIzOCwgMjQ5LCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDIyNSwgMTQ4LCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDIyMiwgCi0gICAgMjAwLCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDIyOCwgODksIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjIzLCA5MywgMjExLCAKLSAgICAyNDYsIDIxMSwgMjU0LCAxLCAyMDYsIDgyLCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDIxOSwgMTUwLCAyMTEsIDI0NiwgCi0gICAgMjExLCAyNTQsIDEsIDIwMywgOTEsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjE2LCAxOTksIDIxMSwgMjQ2LCAyMTEsIAotICAgIDI1NCwgMSwgMjM3LCAxNDgsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjMwLCAyMCwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAKLSAgICAyMzAsIDE3NSwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyMjEsIDgsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjUxLCA3MywgCi0gICAgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyNDEsIDE1OSwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyMzEsIDg0LCAyMTEsIAotICAgIDI0NiwgMjExLCAyNTQsIDEsIDIwNywgMTgsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjIwLCA2MCwgMjExLCAyNDYsIDIxMSwgCi0gICAgMjU0LCAxLCAyNDEsIDE0NywgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyMjUsIDE2MSwgMjExLCAyNDYsIDIxMSwgMjU0LCAKLSAgICAxNywgMjAyLCA4NCwgMjExLCAyNDYsIDIxMSwgMjU0LCAxNywgMTA1LCAyMTEsIDI0NiwgMjExLCAyNTQsIDE3LCAxMDgsIAotICAgIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMTcsIDE0NywgMjExLCAyNDYsIDIxMSwgMjU0LCAxNywgMTQ5LCAyMTEsIDI0NiwgMjExLCAKLSAgICAyNTQsIDE3LCAxNzAsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMTcsIDE5NSwgMjExLCAyNDYsIDIxMSwgMjU0LCAxNywgMjEzLCAKLSAgICAxMTEsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMTcsIDE5OSwgMjExLCAyNDYsIDIxMSwgMjU0LCAxNywgMjIyLCA2MywgMjQ2LCAKLSAgICAxOTMsIDIsIDI0NywgNTIsIDI0NiwgMTkzLCAyLCAyNTAsIDE4MCwgMjQ2LCAxOTMsIDIsIDIwNSwgMTk5LCAyNDYsIDE5MywgCi0gICAgMSwgMjUyLCAyNSwgMjQ2LCAxOTMsIDEsIDc1LCAyNDYsIDE5MywgMSwgNjgsIDI0NiwgMTkzLCAxLCA3NCwgMjQ2LCAxOTMsIAotICAgIDEsIDIzMCwgNDEsIDI0NiwgMTkzLCAxLCAyMjksIDE0MywgMjQ2LCAxOTMsIDEsIDIzOSwgNSwgMjQ2LCAxOTMsIDEsIDIzOCwgCi0gICAgMTE4LCAyNDYsIDE5MywgMSwgMjIyLCAyMDIsIDI0NiwgMTkzLCAxLCAyNDcsIDkxLCAyNDYsIDE5MywgMSwgMjQ2LCAxOTgsIAotICAgIDI0NiwgMTkzLCAxLCAyMzAsIDE4MCwgMjQ2LCAxOTMsIDEsIDIzMCwgMTQ4LCAyNDYsIDE5MywgMSwgMjIxLCAxMCwgMjQ2LCAKLSAgICAxOTMsIDEsIDIwNywgMjQwLCAyNDYsIDE5MywgMSwgMjA3LCAyMjgsIDI0NiwgMTkzLCAxLCAyNDQsIDExOSwgMjQ2LCAxOTMsIAotICAgIDEsIDI0NCwgMTAzLCAyNDYsIDE5MywgMSwgMjIxLCAyMjYsIDI0NiwgMTkzLCAxLCAyMTAsIDE4LCAyNDYsIDE5MywgMSwgCi0gICAgMjA5LCAxMDcsIDI0NiwgMTkzLCAxLCAyNDQsIDIxMSwgMjQ2LCAxOTMsIDEsIDI0NCwgMCwgMjQ2LCAxOTMsIDEsIDIyMywgCi0gICAgMTA2LCAyNDYsIDE5MywgMSwgMjE5LCAxNjgsIDI0NiwgMTkzLCAxLCAyMTgsIDIwNywgMjQ2LCAxOTMsIDEsIDI0OSwgMzAsIAotICAgIDI0NiwgMTkzLCAxLCAyNDgsIDk3LCAyNDYsIDE5MywgMSwgMjI1LCAxNzUsIDI0NiwgMTkzLCAxLCAyMDIsIDE2NywgMjQ2LCAKLSAgICAxOTMsIDEsIDIwMywgMTEwLCAyNDYsIDE5MywgMSwgMjE2LCAyMTYsIDI0NiwgMTkzLCAxLCAyMjgsIDExMiwgMjQ2LCAxOTMsIAotICAgIDEsIDIwNCwgMTEwLCAyNDYsIDE5MywgMSwgMjE1LCAzMywgMjQ2LCAxOTMsIDEsIDIzNywgMTU3LCAyNDYsIDE5MywgMjIsIAotICAgIDIsIDYzLCAyNDYsIDE5MywgMjIsIDIsIDc1LCAyNDYsIDE5MywgMjIsIDIsIDIzMSwgODMsIDI0NiwgMTkzLCAyMiwgMiwgCi0gICAgNjgsIDI0NiwgMTkzLCAyMiwgMiwgMjA2LCAxNzgsIDI0NiwgMTkzLCAyMiwgMiwgNzQsIDI0NiwgMTkzLCAyMiwgMiwgMjUxLCAKLSAgICA2NCwgMjQ2LCAxOTMsIDIyLCAyLCA3OCwgMjQ2LCAxOTMsIDIyLCAyLCAyNTAsIDM0LCAyNDYsIDE5MywgMjIsIDIsIDIyMCwgCi0gICAgNTcsIDI0NiwgMTkzLCAxNTgsIDgyLCAyNDYsIDE5MywgMjUwLCAzNSwgODIsIDI0NiwgMTkzLCAyMDUsIDIwNCwgMjQ2LCAKLSAgICAxOTMsIDIyNSwgMTczLCAyNDYsIDE5MywgMTcsIDIwMiwgODQsIDI0NiwgMTkzLCAxNywgMTA1LCAyNDYsIDE5MywgMTcsIAotICAgIDEwOCwgMjQ2LCAxOTMsIDE3LCAxNDcsIDI0NiwgMTkzLCAxNywgMTQ5LCAyNDYsIDE5MywgMTcsIDE3MCwgMjQ2LCAxOTMsIAotICAgIDE3LCAxOTUsIDI0NiwgMTkzLCAxNywgMjEzLCAxMTEsIDI0NiwgMTkzLCAxNywgMTk5LCAyNDYsIDE5MywgMTcsIDIyMiwgCi0gICAgNjMsIDI0NiwgMTkzLCAyMTQsIDE2OCwgODIsIDI0NiwgMTkzLCAyNDQsIDE2NiwgMjQ2LCAxOTMsIDUyLCAyNDQsIDE2NiwgCi0gICAgMjQ2LCAxOTMsIDIxNywgNDcsIDgyLCAyMjUsIDE0NiwgMSwgNjMsIDIyNSwgMTQ2LCAxLCA3NSwgMjI1LCAxNDYsIDEsIDY4LCAKLSAgICAyMjUsIDE0NiwgMSwgNzQsIDIyNSwgMTQ2LCAxLCA3OCwgMjI1LCAxNDYsIDEsIDE3MywgMjI1LCAxNDYsIDEsIDIyOSwgCi0gICAgMTQ0LCAyMjUsIDE0NiwgMSwgMjM5LCA4LCAyMjUsIDE0NiwgMSwgMjM4LCAxMTksIDIyNSwgMTQ2LCAxLCAyNDcsIDkyLCAKLSAgICAyMjUsIDE0NiwgMSwgMjQ2LCAxOTksIDIyNSwgMTQ2LCAxLCAyMzAsIDE4MSwgMjI1LCAxNDYsIDEsIDIzMCwgMTQ5LCAyMjUsIAotICAgIDE0NiwgMSwgMjIxLCAxMSwgMjI1LCAxNDYsIDEsIDIwNywgMjQxLCAyMjUsIDE0NiwgMSwgMjA3LCAyMjksIDIyNSwgMTQ2LCAKLSAgICAxLCAyNDQsIDEyMCwgMjI1LCAxNDYsIDEsIDI0NCwgMTA0LCAyMjUsIDE0NiwgMSwgMjIxLCAyMjcsIDIyNSwgMTQ2LCAxLCAKLSAgICAyMTAsIDIyLCAyMjUsIDE0NiwgMSwgMjA5LCAxMDgsIDIyNSwgMTQ2LCAxLCAyNDQsIDIxMiwgMjI1LCAxNDYsIDEsIDI0NCwgCi0gICAgMSwgMjI1LCAxNDYsIDEsIDIwMSwgMjAxLCAyMjUsIDE0NiwgMSwgMTg1LCAyMjUsIDE0NiwgMSwgMjE4LCAyMDgsIDIyNSwgCi0gICAgMTQ2LCAxLCAyNDksIDMyLCAyMjUsIDE0NiwgMSwgMjQ4LCA5OCwgMjI1LCAxNDYsIDEsIDE5MiwgMjI1LCAxNDYsIDEsIAotICAgIDIxNiwgMjIwLCAyMjUsIDE0NiwgMSwgMjI4LCAxMTMsIDIyNSwgMTQ2LCAxLCAyMDYsIDg2LCAyMjUsIDE0NiwgMSwgMjE1LCAKLSAgICAzNiwgMjI1LCAxNDYsIDEsIDE1MiwgMjI1LCAxNDYsIDEsIDIxNSwgMTg1LCAyMjUsIDE0NiwgMiwgMjIxLCA1MSwgMjI1LCAKLSAgICAxNDYsIDI1MSwgMTQ2LCA1NCwgMjI1LCAxNDYsIDIxNCwgMTY4LCA4MiwgMjI1LCAxNDYsIDMyLCAyMTIsIDIwNiwgMTgxLCAKLSAgICAyLCAyNDcsIDUyLCAxODEsIDIsIDI1MCwgMTgwLCAxODEsIDIsIDIwNSwgMTk5LCAxODEsIDEsIDYzLCAxODEsIDEsIDI1MiwgCi0gICAgMjUsIDE4MSwgMSwgNzUsIDE4MSwgMSwgMjMxLCA4MywgMTgxLCAxLCA2OCwgMTgxLCAxLCAyMDYsIDE3OCwgMTgxLCAxLCAKLSAgICAxMjUsIDE0NiwgMTgxLCAxLCAxMjUsIDIxNSwgMTg2LCAxODEsIDEsIDEyNSwgMTU5LCAxODEsIDEsIDEyNSwgMjI3LCA3OCwgCi0gICAgMTgxLCAxLCA3NCwgMTgxLCAxLCAyNTEsIDY0LCAxODEsIDEsIDc4LCAxODEsIDEsIDI1MCwgMzQsIDE4MSwgMSwgMTczLCAKLSAgICAxODEsIDEsIDIyOSwgMTQ0LCAxODEsIDEsIDIzOSwgOCwgMTgxLCAxLCAyMzgsIDExOSwgMTgxLCAxLCAyMjIsIDIwMywgCi0gICAgMTgxLCAxLCAyNDcsIDkyLCAxODEsIDEsIDI0NiwgMTk5LCAxODEsIDEsIDIzMCwgMTgxLCAxODEsIDEsIDIzMCwgMTQ5LCAKLSAgICAxODEsIDEsIDIyMSwgMTEsIDE4MSwgMSwgMjA3LCAyNDEsIDE4MSwgMSwgMjA3LCAyMjksIDE4MSwgMSwgMjQ0LCAxMjAsIAotICAgIDE4MSwgMSwgMjQ0LCAxMDQsIDE4MSwgMSwgMjIxLCAyMjcsIDE4MSwgMSwgMjEwLCAyMiwgMTgxLCAxLCAyMDksIDEwOCwgCi0gICAgMTgxLCAxLCAyNDQsIDIxMiwgMTgxLCAxLCAyNDQsIDEsIDE4MSwgMSwgMjAxLCAyMDEsIDE4MSwgMSwgMTg1LCAxODEsIDEsIAotICAgIDIxOCwgMjA4LCAxODEsIDEsIDI0OSwgMzIsIDE4MSwgMSwgMjQ4LCA5OCwgMTgxLCAxLCAxOTIsIDE4MSwgMSwgMTk4LCAKLSAgICAxODEsIDEsIDIxNiwgMjIwLCAxODEsIDEsIDIyOCwgMTEzLCAxODEsIDEsIDIyNywgNzcsIDE4MSwgMSwgMjA2LCA4NiwgCi0gICAgMTgxLCAxLCAyMTMsIDkwLCAxODEsIDEsIDIxMSwgMTY0LCAxODEsIDEsIDIxNSwgMzYsIDE4MSwgMSwgMTUyLCAxODEsIDIyLCAKLSAgICAyLCAyNTIsIDI1LCAxODEsIDIyLCAyLCA3NSwgMTgxLCAyMiwgMiwgMjMxLCA4MywgMTgxLCAyMiwgMiwgNjgsIDE4MSwgMjIsIAotICAgIDIsIDIwNiwgMTc4LCAxODEsIDIyLCAyLCAxMjUsIDE0NiwgMTgxLCAyMiwgMiwgMTI1LCAyMTUsIDE4NiwgMTgxLCAyMiwgMiwgCi0gICAgMTI1LCAxNTksIDE4MSwgMjIsIDIsIDEyNSwgMjI3LCA3OCwgMTgxLCAyMiwgMiwgNzQsIDE4MSwgMjIsIDIsIDI1MSwgNjQsIAotICAgIDE4MSwgMjIsIDIsIDc4LCAxODEsIDIyLCAyLCAyNTAsIDM0LCAxODEsIDIsIDIwNSwgMjA0LCAxODEsIDIsIDI1MCwgMTcsIAotICAgIDE4MSwgMiwgMjMwLCAxMzUsIDE4MSwgMiwgMjA2LCAyMjIsIDE4MSwgMjIwLCAzOSwgMTgxLCAyNDQsIDE2NiwgMTgxLCA1MiwgCi0gICAgMjQ0LCAxNjYsIDE4MSwgMjUxLCAxNDYsIDU0LCAxODEsIDIxMywgMTMwLCAxODEsIDIxNCwgMjM5LCA4MiwgMTgxLCAyLCAKLSAgICAyMjEsIDUxLCAxODEsIDIyLCA2NSwgODIsIDE4MSwgMjQwLCAxOTksIDIxMiwgMjI4LCAyMiwgODIsIDE4MSwgMjEwLCAxODAsIAotICAgIDgyLCAxODEsIDE3LCAyMDIsIDg0LCAxODEsIDE3LCAxMDUsIDE4MSwgMTcsIDEwOCwgMTgxLCAxNywgMTQ3LCAxODEsIDE3LCAKLSAgICAxNDksIDE4MSwgMTcsIDE3MCwgMTgxLCAxNywgMTk1LCAxODEsIDE3LCAyMTMsIDExMSwgMTgxLCAxNywgMTk5LCAxODEsIAotICAgIDE3LCAyMjIsIDYzLCAxODEsIDI0MSwgMTI4LCAxODEsIDIsIDIxMiwgMTU3LCAxODEsIDIzNywgNTgsIDE4MSwgMjQ1LCAKLSAgICAxOTEsIDU0LCAxODEsIDIxNCwgMTY4LCAyMjUsIDkyLCAxODEsIDIxNCwgMTY4LCAyMjUsIDkxLCAxNDAsIDI1MCwgMTI2LCAKLSAgICAxNywgMTA1LCAxNDAsIDI1MCwgMTI2LCAxNywgMTA4LCAxNDAsIDI1MCwgMTI2LCAxNywgMTQ3LCAxNDAsIDI1MCwgMTI2LCAKLSAgICAxNywgMTQ5LCAxNDAsIDI1MCwgMTI2LCAxNywgMTcwLCAxNDAsIDI1MCwgMTI2LCAxNywgMTk1LCAxNDAsIDI1MCwgMTI2LCAKLSAgICAxNywgMjEzLCAxMTEsIDE0MCwgMjUwLCAxMjYsIDE3LCAxOTksIDE0MCwgMjUwLCAxMjYsIDE3LCAyMjIsIDYzLCAxNDAsIAotICAgIDI1MCwgMTI2LCA0MiwgMjA5LCAxNTIsIDE0MCwgMjUwLCAxMjYsIDQyLCAyMDcsIDE1MSwgMTQwLCAyNTAsIDEyNiwgNDIsIAotICAgIDIwOSwgNTMsIDE0MCwgMjUwLCAxMjYsIDQyLCAyMzksIDE1MywgMTQwLCAyNTAsIDEyNiwgNDIsIDI0MCwgMTgsIDE0MCwgCi0gICAgMjUwLCAxMjYsIDQyLCAyMTIsIDc0LCAxNDAsIDI1MCwgMTI2LCA0MiwgMjEzLCAxMDUsIDE0MCwgMjUwLCAxMjYsIDQyLCAKLSAgICAyNDEsIDEzNCwgMTQwLCAyNTAsIDEyNiwgNDIsIDIyMiwgNTgsIDE0MCwgMjUwLCAxMjYsIDQyLCAxMTgsIDIzNiwgMTEsIAotICAgIDE0MCwgMjUwLCAxMjYsIDQyLCAxMTgsIDIwOSwgMzYsIDIyOSwgMTE0LCAxLCA2MywgMjI5LCAxMTQsIDEsIDI1MiwgMjUsIAotICAgIDIyOSwgMTE0LCAxLCA3NSwgMjI5LCAxMTQsIDEsIDY4LCAyMjksIDExNCwgMSwgNzQsIDIyOSwgMTE0LCAxLCAyNTEsIDY0LCAKLSAgICAyMjksIDExNCwgMSwgNzgsIDIyOSwgMTE0LCAxLCAyNTAsIDM0LCAyMjksIDExNCwgMSwgMTczLCAyMjksIDExNCwgMSwgCi0gICAgMjI5LCAxNDQsIDIyOSwgMTE0LCAxLCAyMzksIDgsIDIyOSwgMTE0LCAxLCAyMzgsIDE1NSwgMjI5LCAxMTQsIDEsIDIzOCwgCi0gICAgMTE5LCAyMjksIDExNCwgMSwgMjIyLCAyMDMsIDIyOSwgMTE0LCAxLCAyNDcsIDkyLCAyMjksIDExNCwgMSwgMjQ2LCAxOTksIAotICAgIDIyOSwgMTE0LCAxLCAyMzAsIDE4MSwgMjI5LCAxMTQsIDEsIDIzMCwgMTI5LCAyMjksIDExNCwgMSwgMjIxLCAxMSwgMjI5LCAKLSAgICAxMTQsIDEsIDIwNywgMjQxLCAyMjksIDExNCwgMSwgMjA3LCAyMjksIDIyOSwgMTE0LCAxLCAyNDQsIDEyMCwgMjI5LCAxMTQsIAotICAgIDEsIDI0NCwgMTA0LCAyMjksIDExNCwgMSwgMjIxLCAyMjcsIDIyOSwgMTE0LCAxLCAyMTAsIDIyLCAyMjksIDExNCwgMSwgCi0gICAgMjA5LCAxMDgsIDIyOSwgMTE0LCAxLCAyNDQsIDIxMiwgMjI5LCAxMTQsIDEsIDI0NCwgMTEwLCAyMjksIDExNCwgMSwgMjQ0LCAKLSAgICAxLCAyMjksIDExNCwgMSwgMjAxLCAyMDEsIDIyOSwgMTE0LCAxLCAxODUsIDIyOSwgMTE0LCAxLCAyMTgsIDIwOCwgMjI5LCAKLSAgICAxMTQsIDEsIDI0OSwgMzIsIDIyOSwgMTE0LCAxLCAyNDgsIDE5OCwgMjI5LCAxMTQsIDEsIDI0OCwgOTgsIDIyOSwgMTE0LCAKLSAgICAxLCAxOTIsIDIyOSwgMTE0LCAxLCAxOTgsIDIyOSwgMTE0LCAxLCAyMTYsIDIyMCwgMjI5LCAxMTQsIDEsIDIyOCwgMTEzLCAKLSAgICAyMjksIDExNCwgMSwgMjA2LCA4NiwgMjI5LCAxMTQsIDEsIDIxNSwgMzYsIDIyOSwgMTE0LCAxLCAxNTIsIDIyOSwgMTE0LCAKLSAgICAxLCAyMjcsIDc3LCAyMjksIDExNCwgMjIsIDIsIDI1MiwgMjUsIDIyOSwgMTE0LCAyMiwgMiwgNzUsIDIyOSwgMTE0LCAyMiwgCi0gICAgMiwgMjMxLCA4MywgMjI5LCAxMTQsIDIyLCAyLCA2OCwgMjI5LCAxMTQsIDIyLCAyLCA3NCwgMjI5LCAxMTQsIDIyLCAyLCAKLSAgICAyNTEsIDY0LCAyMjksIDExNCwgMjIsIDIsIDc4LCAyMjksIDExNCwgMjIsIDIsIDI1MCwgMzQsIDIyOSwgMTE0LCAyLCAyNTAsIAotICAgIDE4MCwgMjI5LCAxMTQsIDIsIDIwNSwgMjA0LCAyMjksIDExNCwgMiwgMjIxLCA1MSwgMjI5LCAxMTQsIDIsIDIxMywgODAsIAotICAgIDIyOSwgMTE0LCAyNDQsIDE2NiwgMjI5LCAxMTQsIDUyLCAyNDQsIDE2NiwgMjI5LCAxMTQsIDIwMywgMjM4LCAyMTMsIDEzMCwgCi0gICAgMjI5LCAxMTQsIDIxNCwgMTY4LCA4MiwgMjI5LCAxMTQsIDUyLCAyMTQsIDE2OCwgODIsIDIyOSwgMTE0LCAyNTEsIDE0NiwgCi0gICAgNTQsIDIyMywgMjMwLCAxLCA2MywgMjIzLCAyMzAsIDEsIDc1LCAyMjMsIDIzMCwgMSwgNjgsIDIyMywgMjMwLCAxLCA3NCwgCi0gICAgMjIzLCAyMzAsIDEsIDE3MywgMjIzLCAyMzAsIDEsIDIyOSwgMTQ0LCAyMjMsIDIzMCwgMSwgMjM5LCA4LCAyMjMsIDIzMCwgCi0gICAgMSwgMjM4LCAxMTksIDIyMywgMjMwLCAxLCAyNDcsIDkyLCAyMjMsIDIzMCwgMSwgMjQ2LCAxOTksIDIyMywgMjMwLCAxLCAKLSAgICAyMzAsIDE4MSwgMjIzLCAyMzAsIDEsIDIzMCwgMTI5LCAyMjMsIDIzMCwgMSwgMjIxLCAxMSwgMjIzLCAyMzAsIDEsIDIwNywgCi0gICAgMjQxLCAyMjMsIDIzMCwgMSwgMjA3LCAyMjksIDIyMywgMjMwLCAxLCAyNDQsIDEyMCwgMjIzLCAyMzAsIDEsIDI0NCwgMTEwLCAKLSAgICAyMjMsIDIzMCwgMSwgMjQ0LCAxMDQsIDIyMywgMjMwLCAxLCAyMjEsIDIyNywgMjIzLCAyMzAsIDEsIDIxMCwgMjIsIDIyMywgCi0gICAgMjMwLCAxLCAyMDksIDEwOCwgMjIzLCAyMzAsIDEsIDI0NCwgMjEyLCAyMjMsIDIzMCwgMSwgMjQ0LCAxLCAyMjMsIDIzMCwgCi0gICAgMSwgMjAxLCAyMDEsIDIyMywgMjMwLCAxLCAxODUsIDIyMywgMjMwLCAxLCAyMTgsIDIwOCwgMjIzLCAyMzAsIDEsIDI0OSwgCi0gICAgMzIsIDIyMywgMjMwLCAxLCAyNDgsIDk4LCAyMjMsIDIzMCwgMSwgMTkyLCAyMjMsIDIzMCwgMSwgMTk4LCAyMjMsIDIzMCwgCi0gICAgMSwgMjE2LCAyMjAsIDIyMywgMjMwLCAxLCAyMjgsIDExMywgMjIzLCAyMzAsIDEsIDIwNiwgODYsIDIyMywgMjMwLCAxLCAKLSAgICAyMTUsIDM2LCAyMjMsIDIzMCwgMSwgMTUyLCAyMjMsIDIzMCwgMSwgMjE1LCAxODUsIDIyMywgMjMwLCAxLCAyMTYsIDYxLCAKLSAgICAyMjMsIDIzMCwgMjE0LCAxNjgsIDgyLCAyMjksIDEwNiwgMSwgNjMsIDIyOSwgMTA2LCAxLCAyNTIsIDI1LCAyMjksIDEwNiwgCi0gICAgMSwgNzUsIDIyOSwgMTA2LCAxLCAyMzEsIDgzLCAyMjksIDEwNiwgMSwgNjgsIDIyOSwgMTA2LCAxLCAyMDYsIDE3OCwgMjI5LCAKLSAgICAxMDYsIDEsIDc0LCAyMjksIDEwNiwgMSwgMjUxLCA2NCwgMjI5LCAxMDYsIDEsIDc4LCAyMjksIDEwNiwgMSwgMjUwLCAzNCwgCi0gICAgMjI5LCAxMDYsIDEsIDE3MywgMjI5LCAxMDYsIDEsIDIyOSwgMTQ0LCAyMjksIDEwNiwgMSwgMjM5LCA4LCAyMjksIDEwNiwgCi0gICAgMSwgMjM4LCAxNTUsIDIyOSwgMTA2LCAxLCAyMzgsIDExOSwgMjI5LCAxMDYsIDEsIDIyMiwgMjAzLCAyMjksIDEwNiwgMSwgCi0gICAgMjQ3LCA5MiwgMjI5LCAxMDYsIDEsIDI0NiwgMTk5LCAyMjksIDEwNiwgMSwgMjMwLCAxODEsIDIyOSwgMTA2LCAxLCAyMzAsIAotICAgIDEyOSwgMjI5LCAxMDYsIDEsIDIzMCwgMTQ5LCAyMjksIDEwNiwgMSwgMjIxLCAxMSwgMjI5LCAxMDYsIDEsIDIwNywgMjQxLCAKLSAgICAyMjksIDEwNiwgMSwgMjA3LCAyMjksIDIyOSwgMTA2LCAxLCAyNDQsIDEyMCwgMjI5LCAxMDYsIDEsIDI0NCwgMTEwLCAyMjksIAotICAgIDEwNiwgMSwgMjE1LCAxODUsIDIyOSwgMTA2LCAxLCAyNDQsIDEwNCwgMjI5LCAxMDYsIDEsIDIyMSwgMjI3LCAyMjksIDEwNiwgCi0gICAgMSwgMjEwLCAyMiwgMjI5LCAxMDYsIDEsIDIwOSwgMTA4LCAyMjksIDEwNiwgMSwgMjQ0LCAyMTIsIDIyOSwgMTA2LCAxLCAKLSAgICAyNDQsIDEsIDIyOSwgMTA2LCAxLCAyMDEsIDIwMSwgMjI5LCAxMDYsIDEsIDE4NSwgMjI5LCAxMDYsIDEsIDIxOCwgMjA4LCAKLSAgICAyMjksIDEwNiwgMSwgMjQ5LCAzMiwgMjI5LCAxMDYsIDEsIDI0OCwgMTk4LCAyMjksIDEwNiwgMSwgMjQ4LCA5OCwgMjI5LCAKLSAgICAxMDYsIDEsIDE5MiwgMjI5LCAxMDYsIDEsIDE5OCwgMjI5LCAxMDYsIDEsIDIxNiwgMjIwLCAyMjksIDEwNiwgMSwgMjI4LCAKLSAgICAxMTMsIDIyOSwgMTA2LCAxLCAyMDYsIDg2LCAyMjksIDEwNiwgMSwgMjEzLCA5MCwgMjI5LCAxMDYsIDEsIDIxNSwgMzYsIAotICAgIDIyOSwgMTA2LCAxLCAxNTIsIDIyOSwgMTA2LCAyLCAyNTAsIDE4MCwgMjI5LCAxMDYsIDIyLCAyLCAyNTIsIDI1LCAyMjksIAotICAgIDEwNiwgMjIsIDIsIDc1LCAyMjksIDEwNiwgMjIsIDIsIDIzMSwgODMsIDIyOSwgMTA2LCAyMiwgMiwgNjgsIDIyOSwgMTA2LCAKLSAgICAyMiwgMiwgMjA2LCAxNzgsIDIyOSwgMTA2LCAyMiwgMiwgNzQsIDIyOSwgMTA2LCAyMiwgMiwgMjUxLCA2NCwgMjI5LCAxMDYsIAotICAgIDIyLCAyLCA3OCwgMjI5LCAxMDYsIDIyLCAyLCAyNTAsIDM0LCAyMjksIDEwNiwgMiwgMjIxLCA1MSwgMjI5LCAxMDYsIDIsIAotICAgIDIwNSwgMjA0LCAyMjksIDEwNiwgMTcsIDIwMiwgODQsIDIyOSwgMTA2LCAxNywgMTA1LCAyMjksIDEwNiwgMTcsIDEwOCwgCi0gICAgMjI5LCAxMDYsIDE3LCAxNDcsIDIyOSwgMTA2LCAxNywgMTQ5LCAyMjksIDEwNiwgMTcsIDE3MCwgMjI5LCAxMDYsIDE3LCAKLSAgICAxOTUsIDIyOSwgMTA2LCAxNywgMjEzLCAxMTEsIDIyOSwgMTA2LCAxNywgMTk5LCAyMjksIDEwNiwgMTcsIDIyMiwgNjMsIAotICAgIDIzOCwgNiwgMiwgMzksIDI1MCwgMTgxLCA1NSwgMjM4LCA2LCAyLCAyNDcsIDUyLCAyMzgsIDYsIDIsIDI1MCwgMTgwLCAKLSAgICAyMzgsIDYsIDIsIDIwNSwgMTk5LCAyMzgsIDYsIDEsIDYzLCAyMzgsIDYsIDEsIDI1MiwgMjUsIDIzOCwgNiwgMSwgNzUsIAotICAgIDIzOCwgNiwgMSwgMjMxLCA4MywgMjM4LCA2LCAxLCA2OCwgMjM4LCA2LCAxLCAyMDYsIDE3OCwgMjM4LCA2LCAxLCAxMjUsIAotICAgIDE0NiwgMjM4LCA2LCAxLCAxMjUsIDE1OSwgMjM4LCA2LCAxLCAyNDEsIDE2MSwgMjM4LCA2LCAxLCAyNTEsIDY0LCAyMzgsIAotICAgIDYsIDEsIDIyMCwgMTgsIDIzOCwgNiwgMSwgMjUwLCAzNCwgMjM4LCA2LCAxLCAxNzMsIDIzOCwgNiwgMSwgMjI5LCAxNDQsIAotICAgIDIzOCwgNiwgMSwgMjM5LCA4LCAyMzgsIDYsIDEsIDIzOCwgMTE5LCAyMzgsIDYsIDEsIDIyMiwgMjAzLCAyMzgsIDYsIDEsIAotICAgIDI0NywgOTIsIDIzOCwgNiwgMSwgMjQ2LCAxOTksIDIzOCwgNiwgMSwgMjMwLCAxODEsIDIzOCwgNiwgMSwgMjMwLCAxNDksIAotICAgIDIzOCwgNiwgMSwgMjIxLCAxMSwgMjM4LCA2LCAxLCAyMDcsIDI0MSwgMjM4LCA2LCAxLCAyMDcsIDIyOSwgMjM4LCA2LCAxLCAKLSAgICAyNDQsIDEyMCwgMjM4LCA2LCAxLCAyNDQsIDEwNCwgMjM4LCA2LCAxLCAyMjEsIDIyNywgMjM4LCA2LCAxLCAyMTAsIDIyLCAKLSAgICAyMzgsIDYsIDEsIDIwOSwgMTA4LCAyMzgsIDYsIDEsIDI0NCwgMjEyLCAyMzgsIDYsIDEsIDI0NCwgMSwgMjM4LCA2LCAxLCAKLSAgICAyMDEsIDIwMSwgMjM4LCA2LCAxLCAxODUsIDIzOCwgNiwgMSwgMjE4LCAyMDgsIDIzOCwgNiwgMSwgMjQ5LCAzMiwgMjM4LCAKLSAgICA2LCAxLCAyNDgsIDk4LCAyMzgsIDYsIDEsIDE5MiwgMjM4LCA2LCAxLCAxOTgsIDIzOCwgNiwgMSwgMjE2LCAyMjAsIDIzOCwgCi0gICAgNiwgMSwgMjI4LCAxMTMsIDIzOCwgNiwgMSwgMjI3LCA3NywgMjM4LCA2LCAxLCAyMDYsIDg2LCAyMzgsIDYsIDEsIDIxMywgCi0gICAgOTAsIDIzOCwgNiwgMSwgMjExLCAxNjQsIDIzOCwgNiwgMSwgMjE1LCAzNiwgMjM4LCA2LCAxLCAxNTIsIDIzOCwgNiwgMiwgCi0gICAgMjIxLCA1MSwgMjM4LCA2LCAyLCAyNTAsIDE3LCAyMzgsIDYsIDIyLCAyLCAyNTIsIDI1LCAyMzgsIDYsIDIyLCAyLCA3NSwgCi0gICAgMjM4LCA2LCAyMiwgMiwgMjMxLCA4MywgMjM4LCA2LCAyMiwgMiwgNjgsIDIzOCwgNiwgMjIsIDIsIDIwNiwgMTc4LCAyMzgsIAotICAgIDYsIDIyLCAyLCAxMjUsIDE0NiwgMjM4LCA2LCAyMiwgMiwgMTI1LCAyMTUsIDE4NiwgMjM4LCA2LCAyMiwgMiwgMjQxLCAKLSAgICAxNjEsIDIzOCwgNiwgMjIsIDIsIDI1MSwgNjQsIDIzOCwgNiwgMjIsIDIsIDIyMCwgMTgsIDIzOCwgNiwgMjIsIDIsIDI1MCwgCi0gICAgMzQsIDIzOCwgNiwgMiwgMjA1LCAyMDQsIDIzOCwgNiwgMjIwLCAzOSwgMjM4LCA2LCAyNTAsIDM1LCAyMjcsIDE5NiwgODIsIAotICAgIDIzOCwgNiwgMiwgMjE4LCA3NCwgMjM4LCA2LCAxLCAyMDYsIDUyLCAyNTAsIDE4MCwgMjM4LCA2LCAxLCAyMDYsIDUyLCA1MiwgCi0gICAgMjUwLCAxODAsIDIzOCwgNiwgMSwgMTI1LCAyMTUsIDE4NiwgMjM4LCA2LCAxLCAxMjUsIDIyNywgNzgsIDIzOCwgNiwgMjIsIAotICAgIDIsIDEyNSwgMTU5LCAyMzgsIDYsIDIyLCAyLCAxMjUsIDIyNywgNzgsIDM5LCAyMzgsIDYsIDE3LCAyMDIsIDg0LCAzOSwgCi0gICAgMjM4LCA2LCAxNywgMTA1LCAzOSwgMjM4LCA2LCAxNywgMTA4LCAzOSwgMjM4LCA2LCAxNywgMTQ3LCAzOSwgMjM4LCA2LCAKLSAgICAxNywgMTQ5LCAzOSwgMjM4LCA2LCAxNywgMTcwLCAzOSwgMjM4LCA2LCAxNywgMTk1LCAzOSwgMjM4LCA2LCAxLCA2MywgMzksIAotICAgIDIzOCwgNiwgMSwgMTczLCAzOSwgMjM4LCA2LCAxLCAyMDEsIDIwMSwgMzksIDIzOCwgNiwgMSwgMjA1LCAyMzAsIDM5LCAKLSAgICAyMzgsIDYsIDEsIDE4NSwgMjA4LCAyMDQsIDI1MCwgMjA5LCAyMDgsIDIwNCwgMSwgNjMsIDIwOCwgMjA0LCAxLCAyNTIsIAotICAgIDI1LCAyMDgsIDIwNCwgMSwgNzUsIDIwOCwgMjA0LCAxLCAyMzEsIDgzLCAyMDgsIDIwNCwgMSwgNjgsIDIwOCwgMjA0LCAxLCAKLSAgICAyMDYsIDE3OCwgMjA4LCAyMDQsIDEsIDEyNSwgMTQ2LCAyMDgsIDIwNCwgMSwgMTI1LCAyMTUsIDE4NiwgMjA4LCAyMDQsIDEsIAotICAgIDEyNSwgMTU5LCAyMDgsIDIwNCwgMSwgMTI1LCAyMjcsIDc4LCAyMDgsIDIwNCwgMSwgNzQsIDIwOCwgMjA0LCAxLCAyNTEsIAotICAgIDY0LCAyMDgsIDIwNCwgMSwgNzgsIDIwOCwgMjA0LCAxLCAyNTAsIDM0LCAyMDgsIDIwNCwgMSwgMTczLCAyMDgsIDIwNCwgMSwgCi0gICAgMjI5LCAxNDQsIDIwOCwgMjA0LCAxLCAyMzksIDgsIDIwOCwgMjA0LCAxLCAyMzgsIDExOSwgMjA4LCAyMDQsIDEsIDIyMiwgCi0gICAgMjAzLCAyMDgsIDIwNCwgMSwgMjQ3LCA5MiwgMjA4LCAyMDQsIDEsIDI0NiwgMTk5LCAyMDgsIDIwNCwgMSwgMjMwLCAxODEsIAotICAgIDIwOCwgMjA0LCAxLCAyMzAsIDE0OSwgMjA4LCAyMDQsIDEsIDIyMSwgMTEsIDIwOCwgMjA0LCAxLCAyMDcsIDI0MSwgMjA4LCAKLSAgICAyMDQsIDEsIDIwNywgMjI5LCAyMDgsIDIwNCwgMSwgMjQ0LCAxMjAsIDIwOCwgMjA0LCAxLCAyNDQsIDEwNCwgMjA4LCAyMDQsIAotICAgIDEsIDIyMSwgMjI3LCAyMDgsIDIwNCwgMSwgMjEwLCAyMiwgMjA4LCAyMDQsIDEsIDIwOSwgMTA4LCAyMDgsIDIwNCwgMSwgCi0gICAgMjQ0LCAyMTIsIDIwOCwgMjA0LCAxLCAyNDQsIDEsIDIwOCwgMjA0LCAxLCAyMDEsIDIwMSwgMjA4LCAyMDQsIDEsIDE4NSwgCi0gICAgMjA4LCAyMDQsIDEsIDIxOCwgMjA4LCAyMDgsIDIwNCwgMSwgMjQ5LCAzMiwgMjA4LCAyMDQsIDEsIDI0OCwgOTgsIDIwOCwgCi0gICAgMjA0LCAxLCAxOTIsIDIwOCwgMjA0LCAxLCAxOTgsIDIwOCwgMjA0LCAxLCAyMTYsIDIyMCwgMjA4LCAyMDQsIDEsIDIyOCwgCi0gICAgMTEzLCAyMDgsIDIwNCwgMSwgMjA2LCA4NiwgMjA4LCAyMDQsIDEsIDIxMywgOTAsIDIwOCwgMjA0LCAxLCAyMTEsIDE2NCwgCi0gICAgMjA4LCAyMDQsIDEsIDIxNSwgMzYsIDIwOCwgMjA0LCAxLCAxNTIsIDIwOCwgMjA0LCAyMiwgMiwgMjUyLCAyNSwgMjA4LCAKLSAgICAyMDQsIDIyLCAyLCA3NSwgMjA4LCAyMDQsIDIyLCAyLCAyMzEsIDgzLCAyMDgsIDIwNCwgMjIsIDIsIDY4LCAyMDgsIDIwNCwgCi0gICAgMjIsIDIsIDIwNiwgMTc4LCAyMDgsIDIwNCwgMjIsIDIsIDEyNSwgMTQ2LCAyMDgsIDIwNCwgMjIsIDIsIDEyNSwgMjE1LCAKLSAgICAxODYsIDIwOCwgMjA0LCAyMiwgMiwgMTI1LCAxNTksIDIwOCwgMjA0LCAyMiwgMiwgMTI1LCAyMjcsIDc4LCAyMDgsIDIwNCwgCi0gICAgMjIsIDIsIDc0LCAyMDgsIDIwNCwgMjIsIDIsIDIxMiwgMjI4LCA3NCwgMjA4LCAyMDQsIDIyLCAyLCAyNTEsIDY0LCAyMDgsIAotICAgIDIwNCwgMjIsIDIsIDc4LCAyMDgsIDIwNCwgMjIsIDIsIDIxMiwgMjI4LCA3OCwgMjA4LCAyMDQsIDIyLCAyLCAyNTAsIDM0LCAKLSAgICAyMDgsIDIwNCwgMiwgMjQ3LCA1MiwgMjA4LCAyMDQsIDIsIDI1MCwgMTgwLCAyMDgsIDIwNCwgMiwgMjA1LCAxOTksIDIwOCwgCi0gICAgMjA0LCAyLCAyMDUsIDIwNCwgMjA4LCAyMDQsIDIsIDIyMSwgNTEsIDIwOCwgMjA0LCAyLCAyNTAsIDE3LCAyMDgsIDIwNCwgCi0gICAgMjM3LCAxOTEsIDIwOCwgMjA0LCAyNTEsIDE0NiwgNTQsIDIwOCwgMjA0LCAyMjAsIDM5LCAyMDgsIDIwNCwgMTcsIDIwMiwgCi0gICAgODQsIDIwOCwgMjA0LCAxNywgMTA1LCAyMDgsIDIwNCwgMTcsIDEwOCwgMjA4LCAyMDQsIDE3LCAxNDcsIDIwOCwgMjA0LCAKLSAgICAxNywgMTQ5LCAyMDgsIDIwNCwgMTcsIDE3MCwgMjA4LCAyMDQsIDE3LCAxOTUsIDIwOCwgMjA0LCAxNywgMjEzLCAxMTEsIAotICAgIDIwOCwgMjA0LCAxNywgMTk5LCAyMDgsIDIwNCwgMTcsIDIyMiwgNjMsIDE4NiwgMSwgNjMsIDE4NiwgMSwgMjUyLCAyNSwgCi0gICAgMTg2LCAxLCA3NSwgMTg2LCAxLCAyMzEsIDgzLCAxODYsIDEsIDY4LCAxODYsIDEsIDIwNiwgMTc4LCAxODYsIDEsIDEyNSwgCi0gICAgMTQ2LCAxODYsIDEsIDEyNSwgMjE1LCAxODYsIDE4NiwgMSwgMTI1LCAxNTksIDE4NiwgMSwgMTI1LCAyMjcsIDc4LCAxODYsIAotICAgIDEsIDc0LCAxODYsIDEsIDI1MSwgNjQsIDE4NiwgMSwgNzgsIDE4NiwgMSwgMjUwLCAzNCwgMTg2LCAxLCAxNzMsIDE4NiwgMSwgCi0gICAgMjI5LCAxNDQsIDE4NiwgMSwgMjM5LCA4LCAxODYsIDEsIDIzOCwgMTE5LCAxODYsIDEsIDIyMiwgMjAzLCAxODYsIDEsIAotICAgIDI0NywgOTIsIDE4NiwgMSwgMjQ2LCAxOTksIDE4NiwgMSwgMjMwLCAxODEsIDE4NiwgMSwgMjMwLCAxNDksIDE4NiwgMSwgCi0gICAgMjIxLCAxMSwgMTg2LCAxLCAyMDcsIDI0MSwgMTg2LCAxLCAyMDcsIDIyOSwgMTg2LCAxLCAyNDQsIDEyMCwgMTg2LCAxLCAKLSAgICAyNDQsIDEwNCwgMTg2LCAxLCAyMjEsIDIyNywgMTg2LCAxLCAyMTAsIDIyLCAxODYsIDEsIDIwOSwgMTA4LCAxODYsIDEsIAotICAgIDI0NCwgMjEyLCAxODYsIDEsIDI0NCwgMSwgMTg2LCAxLCAyMDEsIDIwMSwgMTg2LCAxLCAxODUsIDE4NiwgMSwgMjE4LCAKLSAgICAyMDgsIDE4NiwgMSwgMjQ5LCAzMiwgMTg2LCAxLCAyNDgsIDk4LCAxODYsIDEsIDE5MiwgMTg2LCAxLCAxOTgsIDE4NiwgMSwgCi0gICAgMjE2LCAyMjAsIDE4NiwgMSwgMjI4LCAxMTMsIDE4NiwgMSwgMjA2LCA4NiwgMTg2LCAxLCAyMTMsIDkwLCAxODYsIDEsIAotICAgIDIxMSwgMTY0LCAxODYsIDEsIDIxNSwgMzYsIDE4NiwgMSwgMTUyLCAxODYsIDIyLCAyLCAyNTIsIDI1LCAxODYsIDIyLCAyLCAKLSAgICA3NSwgMTg2LCAyMiwgMiwgMjMxLCA4MywgMTg2LCAyMiwgMiwgNjgsIDE4NiwgMjIsIDIsIDIwNiwgMTc4LCAxODYsIDIyLCAKLSAgICAyLCAxMjUsIDE0NiwgMTg2LCAyMiwgMiwgMTI1LCAyMTUsIDE4NiwgMTg2LCAyMiwgMiwgNzQsIDE4NiwgMjIsIDIsIDI1MSwgCi0gICAgNjQsIDE4NiwgMjIsIDIsIDc4LCAxODYsIDIyLCAyLCAyNTAsIDM0LCAxODYsIDIsIDI0NywgNTIsIDE4NiwgMiwgMjUwLCAKLSAgICAxODAsIDE4NiwgMiwgMjA1LCAxOTksIDE4NiwgMiwgMjA1LCAyMDQsIDE4NiwgMiwgMjIxLCA1MSwgMTg2LCAyLCAyMTIsIAotICAgIDE1NywgMTg2LCAyNDQsIDE2NiwgMTg2LCA1MiwgMjQ0LCAxNjYsIDE4NiwgMjEzLCAxMzEsIDI0MywgODUsIDE4NiwgMjEzLCAKLSAgICAxMzEsIDE0MiwgMTg2LCAyMTYsIDk4LCAyMjUsIDkyLCAxODYsIDIxNiwgOTgsIDIyNSwgOTEsIDE4NiwgMjE2LCA5OCwgCi0gICAgMjI1LCA5MCwgMTg2LCAyNDEsIDg0LCA3NiwgMjA5LCAxMTMsIDgyLCAxODYsIDIxNCwgMTY4LCAxMzEsIDMsIDIwOCwgODAsIAotICAgIDI1LCAyMDcsIDkyLCAyMTksIDIzMiwgMTg2LCAyMTQsIDE2OCwgMTMxLCAzLCAyMDgsIDgwLCAyNSwgMjQyLCA4MywgMjQ1LCAKLSAgICAxMzcsIDE4NiwgMjE0LCAxNjgsIDEzMSwgMywgMjE2LCAxNjMsIDI1LCAyNDIsIDgzLCAyNDUsIDEzNywgMTg2LCAyMTQsIAotICAgIDE2OCwgMTMxLCAzLCAyMTYsIDE2MywgMjUsIDI0MiwgODMsIDUyLCAyNDUsIDEzNywgMTg2LCAyMTQsIDE2OCwgMTMxLCAzLCAKLSAgICAyMTYsIDE2MywgMjUsIDI0MiwgODMsIDIwOCwgNzAsIDI0NSwgMTM3LCAxODYsIDIxNCwgMTY4LCAxMzEsIDUyLCAyMTUsIAotICAgIDI1MiwgMTg2LCAyMTQsIDE2OCwgMTMxLCA1MiwgMjE1LCAyNTMsIDMsIDIxNiwgMTYyLCAxODYsIDIxNCwgMTY4LCAxMzEsIAotICAgIDMsIDUyLCAyNDUsIDEzNywgMTg2LCAyMTQsIDE2OCwgMTMxLCAzLCAyMDgsIDcwLCAyNDUsIDEzNywgMTg2LCAyMTQsIDE2OCwgCi0gICAgMTMxLCAzLCAyMTcsIDU4LCAyNDUsIDEzNywgMTg2LCAyMTQsIDE2OCwgMTMxLCAzLCAyMTMsIDEyOCwgMjQ1LCAxMzcsIAotICAgIDE4NiwgMjE0LCAxNjgsIDEzMSwgMywgMjQ2LCA1OSwgMjUsIDIxNiwgMTYyLCAxODYsIDIxNCwgMTY4LCAxMzEsIDMsIDI0NiwgCi0gICAgNTksIDI1LCAxMjAsIDI0MSwgODYsIDE4NiwgMjE0LCAxNjgsIDEzMSwgMywgMjQ2LCA1OSwgMjUsIDIzOSwgMTQ3LCAyNDEsIAotICAgIDg2LCAxODYsIDEsIDIwOSwgMzIsIDI1MCwgMjU1LCA3NSwgMTg2LCAxLCAyMDcsIDEzNiwgMjUwLCAyNTUsIDc1LCAxODYsIAotICAgIDEsIDIwNywgMTM2LCAyNTAsIDI1NSwgMjMxLCA4MywgMTg2LCAxLCAyNTAsIDI1NSwgNjgsIDE4NiwgMjIsIDIsIDI1MCwgCi0gICAgMjU1LCA2OCwgMTg2LCAyMiwgMiwgMjUwLCAyNTUsIDIwNiwgMTc4LCAyMjQsIDc0LCAxLCA2MywgMjI0LCA3NCwgMSwgMjUyLCAKLSAgICAyNSwgMjI0LCA3NCwgMSwgNzUsIDIyNCwgNzQsIDEsIDIzMSwgODMsIDIyNCwgNzQsIDEsIDY4LCAyMjQsIDc0LCAxLCAyMDYsIAotICAgIDE3OCwgMjI0LCA3NCwgMSwgMTI1LCAxNDYsIDIyNCwgNzQsIDEsIDEyNSwgMjE1LCAxODYsIDIyNCwgNzQsIDEsIDEyNSwgCi0gICAgMTU5LCAyMjQsIDc0LCAxLCAxMjUsIDIyNywgNzgsIDIyNCwgNzQsIDEsIDc0LCAyMjQsIDc0LCAxLCAyNTEsIDY0LCAyMjQsIAotICAgIDc0LCAxLCA3OCwgMjI0LCA3NCwgMSwgMjUwLCAzNCwgMjI0LCA3NCwgMSwgMTczLCAyMjQsIDc0LCAxLCAyMjksIDE0NCwgCi0gICAgMjI0LCA3NCwgMSwgMjM5LCA4LCAyMjQsIDc0LCAxLCAyMzgsIDExOSwgMjI0LCA3NCwgMSwgMjIyLCAyMDMsIDIyNCwgNzQsIAotICAgIDEsIDI0NywgOTIsIDIyNCwgNzQsIDEsIDI0NiwgMTk5LCAyMjQsIDc0LCAxLCAyMzAsIDE4MSwgMjI0LCA3NCwgMSwgMjMwLCAKLSAgICAxNDksIDIyNCwgNzQsIDEsIDIyMSwgMTEsIDIyNCwgNzQsIDEsIDIwNywgMjQxLCAyMjQsIDc0LCAxLCAyMDcsIDIyOSwgCi0gICAgMjI0LCA3NCwgMSwgMjQ0LCAxMjAsIDIyNCwgNzQsIDEsIDI0NCwgMTA0LCAyMjQsIDc0LCAxLCAyMjEsIDIyNywgMjI0LCAKLSAgICA3NCwgMSwgMjEwLCAyMiwgMjI0LCA3NCwgMSwgMjA5LCAxMDgsIDIyNCwgNzQsIDEsIDI0NCwgMjEyLCAyMjQsIDc0LCAxLCAKLSAgICAyNDQsIDEsIDIyNCwgNzQsIDEsIDIwMSwgMjAxLCAyMjQsIDc0LCAxLCAxODUsIDIyNCwgNzQsIDEsIDIxOCwgMjA4LCAyMjQsIAotICAgIDc0LCAxLCAyNDksIDMyLCAyMjQsIDc0LCAxLCAyNDgsIDk4LCAyMjQsIDc0LCAxLCAxOTIsIDIyNCwgNzQsIDEsIDE5OCwgCi0gICAgMjI0LCA3NCwgMSwgMjE2LCAyMjAsIDIyNCwgNzQsIDEsIDIyOCwgMTEzLCAyMjQsIDc0LCAxLCAyMDYsIDg2LCAyMjQsIDc0LCAKLSAgICAxLCAyMTMsIDkwLCAyMjQsIDc0LCAxLCAyMTEsIDE2NCwgMjI0LCA3NCwgMSwgMjE1LCAzNiwgMjI0LCA3NCwgMSwgMTUyLCAKLSAgICAyMjQsIDc0LCAxLCAyMjcsIDc3LCAyMjQsIDc0LCAyMiwgMiwgMjUyLCAyNSwgMjI0LCA3NCwgMjIsIDIsIDc1LCAyMjQsIAotICAgIDc0LCAyMiwgMiwgMjMxLCA4MywgMjI0LCA3NCwgMjIsIDIsIDY4LCAyMjQsIDc0LCAyMiwgMiwgMjA2LCAxNzgsIDIyNCwgCi0gICAgNzQsIDIyLCAyLCAxMjUsIDE0NiwgMjI0LCA3NCwgMjIsIDIsIDEyNSwgMjE1LCAxODYsIDIyNCwgNzQsIDIyLCAyLCAxMjUsIAotICAgIDE1OSwgMjI0LCA3NCwgMjIsIDIsIDEyNSwgMjI3LCA3OCwgMjI0LCA3NCwgMjIsIDIsIDc0LCAyMjQsIDc0LCAyMiwgMiwgCi0gICAgMjUxLCA2NCwgMjI0LCA3NCwgMjIsIDIsIDc4LCAyMjQsIDc0LCAyMiwgMiwgMjUwLCAzNCwgMjI0LCA3NCwgMiwgMjUwLCAKLSAgICAxODAsIDIyNCwgNzQsIDIsIDIwNSwgMTk5LCAyMjQsIDc0LCAyLCAyMDUsIDIwNCwgMjI0LCA3NCwgMiwgMjUwLCAxMjMsIAotICAgIDIyNCwgNzQsIDI0NCwgMTY2LCAyMjQsIDc0LCA1MiwgMjQ0LCAxNjYsIDIyNCwgNzQsIDI1MSwgMTQ2LCA1NCwgMjI0LCA3NCwgCi0gICAgMiwgMjM2LCAwLCAyMjQsIDc0LCAxNywgMjAyLCA4NCwgMjI0LCA3NCwgMTcsIDEwNSwgMjI0LCA3NCwgMTcsIDEwOCwgMjI0LCAKLSAgICA3NCwgMTcsIDE0NywgMjI0LCA3NCwgMTcsIDE0OSwgMjI0LCA3NCwgMTcsIDE3MCwgMjI0LCA3NCwgMTcsIDE5NSwgMjI0LCAKLSAgICA3NCwgMTcsIDIxMywgMTExLCAyMjQsIDc0LCAxNywgMTk5LCAyMjQsIDc0LCAxNywgMjIyLCA2MywgMjA5LCAyMzksIDEsIAotICAgIDYzLCAyMDksIDIzOSwgMSwgMjUyLCAyNSwgMjA5LCAyMzksIDEsIDc1LCAyMDksIDIzOSwgMSwgMjMxLCA4MywgMjA5LCAKLSAgICAyMzksIDEsIDY4LCAyMDksIDIzOSwgMSwgMjA2LCAxNzgsIDIwOSwgMjM5LCAxLCA3NCwgMjA5LCAyMzksIDEsIDI1MSwgNjQsIAotICAgIDIwOSwgMjM5LCAxLCA3OCwgMjA5LCAyMzksIDEsIDI1MCwgMzQsIDIwOSwgMjM5LCAxLCAxNzMsIDIwOSwgMjM5LCAxLCAKLSAgICAyMjksIDE0NCwgMjA5LCAyMzksIDEsIDIzOSwgOCwgMjA5LCAyMzksIDEsIDIzOCwgMTE5LCAyMDksIDIzOSwgMSwgMjIyLCAKLSAgICAyMDMsIDIwOSwgMjM5LCAxLCAyNDcsIDkyLCAyMDksIDIzOSwgMSwgMjQ2LCAxOTksIDIwOSwgMjM5LCAxLCAyMzAsIDE4MSwgCi0gICAgMjA5LCAyMzksIDEsIDIzMCwgMTQ5LCAyMDksIDIzOSwgMSwgMjIxLCAxMSwgMjA5LCAyMzksIDEsIDIwNywgMjQxLCAyMDksIAotICAgIDIzOSwgMSwgMjA3LCAyMjksIDIwOSwgMjM5LCAxLCAyNDQsIDEyMCwgMjA5LCAyMzksIDEsIDI0NCwgMTA0LCAyMDksIDIzOSwgCi0gICAgMSwgMjIxLCAyMjcsIDIwOSwgMjM5LCAxLCAyMTAsIDIyLCAyMDksIDIzOSwgMSwgMjA5LCAxMDgsIDIwOSwgMjM5LCAxLCAKLSAgICAyNDQsIDIxMiwgMjA5LCAyMzksIDEsIDI0NCwgMSwgMjA5LCAyMzksIDEsIDIwMSwgMjAxLCAyMDksIDIzOSwgMSwgMTg1LCAKLSAgICAyMDksIDIzOSwgMSwgMjE4LCAyMDgsIDIwOSwgMjM5LCAxLCAyNDksIDMyLCAyMDksIDIzOSwgMSwgMjQ4LCA5OCwgMjA5LCAKLSAgICAyMzksIDEsIDE5MiwgMjA5LCAyMzksIDEsIDE5OCwgMjA5LCAyMzksIDEsIDIxNiwgMjIwLCAyMDksIDIzOSwgMSwgMjI4LCAKLSAgICAxMTMsIDIwOSwgMjM5LCAxLCAyMDYsIDg2LCAyMDksIDIzOSwgMSwgMjEzLCA5MCwgMjA5LCAyMzksIDEsIDIxNSwgMzYsIAotICAgIDIwOSwgMjM5LCAxLCAxNTIsIDIwOSwgMjM5LCAxLCAyMTUsIDE4NSwgMjA5LCAyMzksIDIsIDI1MCwgMTgwLCAyMDksIDIzOSwgCi0gICAgMiwgMjA1LCAxOTksIDIwOSwgMjM5LCAyMiwgMiwgMjUyLCAyNSwgMjA5LCAyMzksIDIyLCAyLCA3NSwgMjA5LCAyMzksIDIyLCAKLSAgICAyLCAyMzEsIDgzLCAyMDksIDIzOSwgMjIsIDIsIDY4LCAyMDksIDIzOSwgMjIsIDIsIDIwNiwgMTc4LCAyMDksIDIzOSwgMjIsIAotICAgIDIsIDc0LCAyMDksIDIzOSwgMjIsIDIsIDI1MSwgNjQsIDIwOSwgMjM5LCAyMiwgMiwgNzgsIDIwOSwgMjM5LCAyMiwgMiwgCi0gICAgMjUwLCAzNCwgMjA5LCAyMzksIDIsIDIwNSwgMjA0LCAyMDksIDIzOSwgMiwgMjIxLCA1MSwgMjA5LCAyMzksIDE3LCAyMDIsIAotICAgIDg0LCAyMDksIDIzOSwgMTcsIDEwNSwgMjA5LCAyMzksIDE3LCAxMDgsIDIwOSwgMjM5LCAxNywgMTQ3LCAyMDksIDIzOSwgCi0gICAgMTcsIDE0OSwgMjA5LCAyMzksIDE3LCAxNzAsIDIwOSwgMjM5LCAxNywgMTk1LCAyMDksIDIzOSwgMTcsIDIxMywgMTExLCAKLSAgICAyMDksIDIzOSwgMTcsIDE5OSwgMjA5LCAyMzksIDE3LCAyMjIsIDYzLCAyNTEsIDY4LCAxLCAxNzMsIDI1MSwgNjgsIDEsIAotICAgIDIyOSwgMTQ0LCAyNTEsIDY4LCAxLCAyMjIsIDIwMywgMjUxLCA2OCwgMSwgMjAxLCAyMDEsIDI1MSwgNjgsIDEsIDIxMCwgCi0gICAgMjIsIDI1MSwgNjgsIDEsIDI1MCwgMjU1LCAyMTAsIDIyLCAyNTEsIDY4LCAxLCAxODUsIDI1MSwgNjgsIDEsIDIxOCwgMjA4LCAKLSAgICAyNTEsIDY4LCAxLCAyNDksIDMyLCAyNTEsIDY4LCAxLCAxOTIsIDI1MSwgNjgsIDEsIDIzMCwgMTgxLCAyNTEsIDY4LCAxLCAKLSAgICAyNDYsIDE5OSwgMjUxLCA2OCwgMSwgMjA5LCAxMDgsIDI1MSwgNjgsIDEsIDIxNiwgMjIwLCAyNTEsIDY4LCAxLCAyMjgsIAotICAgIDExMywgMjUxLCA2OCwgMSwgMjE1LCAzNiwgMjUxLCA2OCwgMSwgMjIxLCAxMSwgMjUxLCA2OCwgMSwgMTUyLCAyNTEsIDY4LCAKLSAgICAxLCA2MywgMjUxLCA2OCwgMSwgMjQ0LCAyMTIsIDI1MSwgNjgsIDEsIDI0NCwgMSwgMjUxLCA2OCwgMSwgMjM5LCA4LCAyNTEsIAotICAgIDY4LCAxLCAyNTAsIDI1NSwgMjM5LCA4LCAyNTEsIDY4LCAxLCAyMzgsIDExOSwgMjUxLCA2OCwgMSwgMjQ4LCA5OCwgMjUxLCAKLSAgICA2OCwgMSwgMjMwLCAxNDksIDI1MSwgNjgsIDEwOSwgMiwgMTc0LCAyMjgsIDExMywgMjUxLCA2OCwgMTA5LCAyLCAxNzQsIAotICAgIDIxNiwgMjIwLCAyNTEsIDY4LCAxMDksIDIsIDE3NCwgMjI3LCAxMzUsIDIxNiwgMjIwLCAyNTEsIDY4LCAyMiwgMiwgNjMsIAotICAgIDI1MSwgNjgsIDIyLCAyLCAyNTIsIDI1LCAyNTEsIDY4LCAyMiwgMiwgNzUsIDI1MSwgNjgsIDIyLCAyLCAyMzEsIDgzLCAKLSAgICAyNTEsIDY4LCAyMiwgMiwgNjgsIDI1MSwgNjgsIDIyLCAyLCAyMDYsIDE3OCwgMjUxLCA2OCwgMjIsIDIsIDc0LCAyNTEsIAotICAgIDY4LCAyMiwgMiwgMjUwLCAxMywgMjUxLCA2OCwgMjIsIDIsIDc4LCAyNTEsIDY4LCAyMiwgMiwgMjUxLCA2NCwgMjUxLCA2OCwgCi0gICAgMjIsIDIsIDI1MCwgMjQ3LCAyNTEsIDY4LCAyLCAyMjksIDg2LCAyNTEsIDY4LCAxNywgMjAyLCA4NCwgMjUxLCA2OCwgMTcsIAotICAgIDEwNSwgMjUxLCA2OCwgMTcsIDEwOCwgMjUxLCA2OCwgMTcsIDE0NywgMjUxLCA2OCwgMTcsIDE0OSwgMjUxLCA2OCwgMTcsIAotICAgIDE3MCwgMjUxLCA2OCwgMTcsIDE5NSwgMjUxLCA2OCwgMTcsIDIxMywgMTExLCAyNTEsIDY4LCAxNywgMTk5LCAyNTEsIDY4LCAKLSAgICAxNywgMjIyLCA2MywgMjUxLCA2OCwgNDIsIDIwOSwgMTUyLCAyNTEsIDY4LCA0MiwgMjA3LCAxNTEsIDI1MSwgNjgsIDIsIDUsIAotICAgIDIxNCwgMTY3LCAyNTEsIDY4LCAyLCAyMTQsIDE2NywgMjUxLCA2OCwgMiwgMjE1LCAxMzYsIDI1MSwgNjgsIDE2LCAyMDUsIAotICAgIDIzMCwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjIyLCAyMDIsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDYzLCAyMDQsIAotICAgIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMDQsIDMwLCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMDIsIDIxMywgMjA0LCA5MiwgCi0gICAgMjQ2LCA0OCwgNiwgMSwgMTk4LCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMDIsIDI0NywgMjA0LCA5MiwgMjQ2LCA0OCwgCi0gICAgNiwgMSwgMjMxLCA4MywgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjA2LCAxNzgsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIAotICAgIDc0LCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCA3OCwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjUwLCAyMjMsIDIwNCwgCi0gICAgOTIsIDI0NiwgNDgsIDYsIDEsIDIzOSwgOCwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjI5LCAyNiwgMjA0LCA5MiwgMjQ2LCAKLSAgICA0OCwgNiwgMSwgMjQxLCA1NiwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjAyLCAxOTcsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIAotICAgIDEsIDIwNywgMzEsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDI0MSwgNzUsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDIyMCwgCi0gICAgNzYsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDIwNywgMjM2LCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMjEsIDM3LCAKLSAgICAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyNDQsIDIxMiwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjUwLCA0OSwgMjA0LCAKLSAgICA5MiwgMjQ2LCA0OCwgNiwgMSwgMjUwLCAyNDcsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDI0NywgMTkzLCAyMDQsIDkyLCAKLSAgICAyNDYsIDQ4LCA2LCAxLCAyMTcsIDE5MSwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjM2LCAyMjgsIDIwNCwgOTIsIDI0NiwgCi0gICAgNDgsIDYsIDEsIDIzNiwgMTI0LCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMzYsIDUxLCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAKLSAgICAxLCAyMzcsIDkyLCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMTEsIDExNiwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgCi0gICAgMjEyLCAxNDIsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDIwNSwgMTkwLCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyMjIsIAotICAgIDIwMiwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgNjMsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDIwNCwgMzAsIDIwNCwgCi0gICAgOTIsIDI0NiwgNDgsIDUsIDEsIDIwMiwgMjEzLCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAxOTgsIDIwNCwgOTIsIDI0NiwgCi0gICAgNDgsIDUsIDEsIDIwMiwgMjQ3LCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyMzEsIDgzLCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAKLSAgICAxLCAyMDYsIDE3OCwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgNzQsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDc4LCAyMDQsIAotICAgIDkyLCAyNDYsIDQ4LCA1LCAxLCAyNTAsIDIyMywgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjM5LCA4LCAyMDQsIDkyLCAKLSAgICAyNDYsIDQ4LCA1LCAxLCAyMjksIDI2LCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyNDEsIDU2LCAyMDQsIDkyLCAyNDYsIAotICAgIDQ4LCA1LCAxLCAyMDIsIDE5NywgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjA3LCAzMSwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgCi0gICAgMSwgMjQxLCA3NSwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjIwLCA3NiwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjA3LCAKLSAgICAyMzYsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDIyMSwgMzcsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDI0NCwgMjEyLCAKLSAgICAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyNTAsIDQ5LCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyNTAsIDI0NywgMjA0LCAKLSAgICA5MiwgMjQ2LCA0OCwgNSwgMSwgMjQ3LCAxOTMsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDIxNywgMTkxLCAyMDQsIDkyLCAKLSAgICAyNDYsIDQ4LCA1LCAxLCAyMzYsIDIyOCwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjM2LCAxMjQsIDIwNCwgOTIsIDI0NiwgCi0gICAgNDgsIDUsIDEsIDIzNiwgNTEsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDIzNywgOTIsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIAotICAgIDEsIDIxMSwgMTE2LCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyMTIsIDE0MiwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgCi0gICAgMjA1LCAxOTAsIDIwNCwgOTIsIDI0NiwgNDgsIDE3LCAyMDIsIDg0LCAyMDQsIDkyLCAyNDYsIDQ4LCAxNywgMTA1LCAyMDQsIAotICAgIDkyLCAyNDYsIDQ4LCAxNywgMTA4LCAyMDQsIDkyLCAyNDYsIDQ4LCAxNywgMTQ3LCAyMDQsIDkyLCAyNDYsIDQ4LCAxNywgCi0gICAgMTQ5LCAyMDQsIDkyLCAyNDYsIDQ4LCAxNywgMTcwLCAyMDQsIDkyLCAyNDYsIDQ4LCAxNywgMTk1LCAyMDQsIDkyLCAyNDYsIAotICAgIDQ4LCAxNywgMjEzLCAxMTEsIDIwNCwgOTIsIDI0NiwgNDgsIDE3LCAxOTksIDIwNCwgOTIsIDI0NiwgNDgsIDE3LCAyMjIsIAotICAgIDYzLCAyMDQsIDkyLCAyNDYsIDQ4LCA0MiwgMjA5LCAxNTIsIDIwNCwgOTIsIDI0NiwgNDgsIDQyLCAyMDcsIDE1MSwgMjA0LCAKLSAgICA5MiwgMjQ2LCA0OCwgNDIsIDIwOSwgNTMsIDIwNCwgOTIsIDI0NiwgNDgsIDQyLCAyMzksIDE1MywgMjA0LCA5MiwgMjQ2LCAKLSAgICA0OCwgNDIsIDI0MCwgMTgsIDIwNCwgOTIsIDI0NiwgNDgsIDQyLCAyMTIsIDc0LCAyMDQsIDkyLCAyNDYsIDQ4LCA0MiwgCi0gICAgMjEzLCAxMDUsIDIwNCwgOTIsIDI0NiwgNDgsIDQyLCAyNDEsIDEzNCwgMjA0LCA5MiwgMjQ2LCA0OCwgNDIsIDIyMiwgNTgsIAotICAgIDIwNCwgOTIsIDI0NiwgNDgsIDIyMCwgMzksIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDE4NSwgMjE5LCA0OSwgCi0gICAgMjQ2LCA2NiwgMjM3LCA3NywgMSwgMTczLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAyMjgsIDExMywgMjE5LCAKLSAgICA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgMTkyLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAyNDQsIDIxMiwgCi0gICAgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgMjAyLCAxMTYsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIAotICAgIDIwNiwgODYsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDIyMiwgMjAzLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIAotICAgIDc3LCAxLCAxNTIsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDIzOSwgOCwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCAKLSAgICA3NywgMSwgMjI5LCAxNDQsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDIxNSwgMzYsIDIxOSwgNDksIDI0NiwgNjYsIAotICAgIDIzNywgNzcsIDEsIDI0OSwgMzIsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDI0NywgOTIsIDIxOSwgNDksIDI0NiwgCi0gICAgNjYsIDIzNywgNzcsIDEsIDIxMCwgMjIsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDIwOSwgMTA4LCAyMTksIDQ5LCAKLSAgICAyNDYsIDY2LCAyMzcsIDc3LCAxLCAyMDEsIDIwMSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgMjE4LCAyMDgsIAotICAgIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDIxNiwgMjIwLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAKLSAgICAyNDAsIDEwOCwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgMjQ2LCAxOTksIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgCi0gICAgNzcsIDEsIDYzLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCA3NCwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgCi0gICAgMSwgNzUsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDc4LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAKLSAgICA2OCwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgMjA3LCAzOSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgCi0gICAgMjM1LCAxNzEsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDQ2LCAyMTksIDE4NCwgMjE5LCA0OSwgMjQ2LCA2NiwgCi0gICAgMjM3LCA3NywgMSwgNDYsIDIzMCwgNTQsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDQ2LCAyMTAsIDY5LCAyMTksIAotICAgIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCA0NiwgMjI2LCAxODUsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDQ2LCAKLSAgICAyMjMsIDE2MywgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgNDYsIDE1OSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCAKLSAgICA3NywgMSwgNDYsIDIwNCwgMTQ0LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCA0NiwgMjIyLCAyMDUsIDIxOSwgNDksIAotICAgIDI0NiwgNjYsIDIzNywgNzcsIDEsIDQ2LCAyMDMsIDEyNCwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMjE1LCAyNDUsIAotICAgIDE0MywgMjI3LCAyOCwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMjE1LCAyNDUsIDIwOCwgMTYxLCAyMTksIDQ5LCAKLSAgICAyNDYsIDY2LCAyMzcsIDc3LCAyMTQsIDIzOSwgMjM4LCA0NSwgMjExLCA2MSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgCi0gICAgMjE1LCAyNDUsIDE0MywgMTYzLCAyNDAsIDUsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIxNSwgMjQ1LCAxNDMsIAotICAgIDI0MCwgNSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMjE0LCAyMzksIDIzOCwgNDUsIDIxMSwgNjIsIDI0MCwgNSwgCi0gICAgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMjE0LCAyMzksIDE0MywgMjI3LCAyOCwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCAKLSAgICA3NywgMjE0LCAyMzksIDIwOCwgMTYxLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAyMTQsIDIzOSwgMTQzLCAxNjMsIAotICAgIDI0MCwgNSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMjE0LCAyMzksIDE0MywgMjQwLCA1LCAyMTksIDQ5LCAyNDYsIAotICAgIDY2LCAyMzcsIDc3LCAyMjQsIDE0OSwgMjA4LCAxNjEsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIzOCwgNDUsIDIxMSwgCi0gICAgNjIsIDIwNiwgNjgsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIyNCwgMTQ5LCAxNDMsIDE2MywgMjQwLCA1LCAyMTksIAotICAgIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAyMjQsIDE0OSwgMTQzLCAyNDAsIDUsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIAotICAgIDIyNiwgMjU0LCAxNDMsIDIyNywgMjgsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIyNiwgMjU0LCAyMDgsIDE2MSwgCi0gICAgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMjM4LCA0NSwgMjExLCA2MSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgCi0gICAgMjI2LCAyNTQsIDE0MywgMTYzLCAyNDAsIDUsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIyNiwgMjU0LCAxNDMsIAotICAgIDI0MCwgNSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMjM4LCA0NSwgMjExLCA2MiwgMjQwLCA1LCA5LCAyLCA2MywgOSwgCi0gICAgMiwgMzQsIDIzLCA2MywgOSwgMiwgMzQsIDIzLCAyNDksIDE1LCA5LCAyLCAzNCwgMjMsIDIzOCwgMjMzLCAyMDksIDE0MSwgCi0gICAgOSwgMiwgMzQsIDIzLCAxNTIsIDksIDIsIDM0LCAyMywgMjMxLCA4NSwgOSwgMiwgMzQsIDIzLCAyMjgsIDkzLCAyMzcsIAotICAgIDIwOCwgOSwgMiwgMzQsIDIzLCAyMjMsIDE5OSwgOSwgMiwgMzQsIDIzLCAyMTUsIDIyLCA5LCAyLCAyNTQsIDM0LCA5LCAyLCAKLSAgICAyNTEsIDIzMiwgOSwgMiwgMjUxLCAyMzMsIDIzLCAyNTAsIDczLCA5LCAyLCAyNTEsIDIzMywgMjMsIDI0MiwgMzAsIDIzNywgCi0gICAgMjA4LCA5LCAyLCAyNTEsIDIzMywgMjMsIDIzOCwgMjQ2LCA5LCAyLCAyNTEsIDIzMywgMjMsIDIzOCwgMjMzLCAyMDksIAotICAgIDE0MSwgOSwgMiwgMjUxLCAyMzMsIDIzLCAxNTIsIDksIDIsIDI1MSwgMjMzLCAyMywgMjMxLCA4NiwgMjM3LCAyMDgsIDksIAotICAgIDIsIDI1MSwgMjMzLCAyMywgMjMxLCA1OSwgOSwgMiwgMjUxLCAyMzMsIDIzLCAyMjgsIDk0LCA5LCAyLCAyNTEsIDIzMywgCi0gICAgMjMsIDIxMywgMjcsIDksIDIsIDI1MSwgMjMzLCAyMywgMTA2LCA5MSwgMTA2LCA5MSwgNjgsIDksIDIsIDI1MSwgMjMzLCAKLSAgICAyMzcsIDIwOCwgOSwgMiwgMjUxLCAxNDksIDksIDIsIDI1MSwgMTUwLCAyMywgMjQ4LCAyNTIsIDksIDIsIDI1MSwgMTUwLCAKLSAgICAyMywgMjM4LCAyMzMsIDIwOSwgMTQxLCA5LCAyLCAyNTEsIDE1MCwgMjMsIDIyNSwgMjEsIDkxLCAyNDEsIDkyLCA5LCAyLCAKLSAgICAyNTEsIDE1MCwgMjMsIDIxMywgODgsIDksIDIsIDI1MSwgMTUwLCAyMywgMjA5LCAyNDIsIDksIDIsIDI1MSwgMTIyLCA5LCAKLSAgICAyLCAyNTEsIDQ3LCA5LCAyLCAyNTEsIDQ4LCAyMywgMjQxLCAyMiwgOSwgMiwgMjUxLCA0OCwgMjMsIDIxMiwgMjQ1LCA5MSwgCi0gICAgMjM4LCA1NSwgOSwgMiwgMjUxLCAzOSwgOSwgMiwgMjUxLCA0MCwgMjMsIDI1MSwgMzksIDksIDIsIDI1MSwgNDAsIDIzLCAKLSAgICAyNDMsIDE4NiwgOSwgMiwgMjUxLCA0MCwgMjMsIDIzOCwgNTUsIDksIDIsIDI1MSwgNDAsIDIzLCAxNTIsIDksIDIsIDI1MSwgCi0gICAgNDAsIDIzLCAyMzAsIDI3LCA5LCAyLCAyNTEsIDQwLCAyMywgMjI5LCAxMDAsIDksIDIsIDI1MSwgNDAsIDIzLCAyMTMsIDQzLCAKLSAgICA5LCAyLCAyNTEsIDQwLCAyMywgMjA2LCAxODYsIDksIDIsIDI1MSwgMzYsIDksIDIsIDI1MSwgMjgsIDksIDIsIDI1MCwgCi0gICAgMjQzLCA5LCAyLCAyNTAsIDI0NCwgMjMsIDIxMywgNDMsIDksIDIsIDI1MCwgMjMxLCA5LCAyLCAyNTAsIDIzMiwgMTE1LCAKLSAgICAyNTAsIDIzMSwgOSwgMiwgMjUwLCAyMzIsIDEyNiwgMjA4LCAyMTksIDksIDIsIDI1MCwgMjMyLCA5MSwgMjIzLCA5NywgCi0gICAgMjE5LCAyNTEsIDI1MCwgMjMyLCA5MSwgMjIzLCA5NiwgOSwgMiwgMjUwLCAyMzIsIDkxLCAyMjMsIDk3LCAyMTEsIDE3NiwgCi0gICAgOSwgMiwgMjUwLCAyMDAsIDksIDIsIDI1MCwgMTcwLCA5LCAyLCAyNTAsIDEzOCwgOSwgMiwgMjUwLCAxMzksIDIzLCAyMjgsIAotICAgIDE4MywgOSwgMiwgMjUwLCAxMTAsIDksIDIsIDI1MCwgODAsIDksIDIsIDI1MCwgNzUsIDksIDIsIDI1MCwgNzYsIDIwMiwgCi0gICAgMzUsIDIwOSwgMTQxLCA5LCAyLCAyNTAsIDc2LCAyMzAsIDMxLCAyMDksIDE0MSwgOSwgMiwgMjUwLCA3NiwgMTE1LCAyNTAsIAotICAgIDc2LCAyMDcsIDE5OCwgMTE1LCAyMDcsIDE5OCwgMjA3LCAxOTgsIDExNSwgMjA3LCAxOTgsIDIxOSwgOTYsIDksIDIsIDI1MCwgCi0gICAgNzYsIDExNSwgMjUwLCA3NiwgMTE1LCAyNTAsIDc1LCA5LCAyLCAyNTAsIDc2LCAxMTUsIDI1MCwgNzYsIDExNSwgMjUwLCAKLSAgICA3NiwgMjQ1LCAxMjQsIDI1MCwgNzYsIDExNSwgMjUwLCA3NiwgMTE1LCAyNTAsIDc1LCA5LCAyLCAyNTAsIDczLCA5LCAyLCAKLSAgICAyNTAsIDY5LCA5LCAyLCAyNDksIDMyLCA5LCAyLCAyNDksIDE1LCA5LCAyLCAyNDksIDksIDksIDIsIDI0OSwgMywgOSwgMiwgCi0gICAgMjQ4LCAyNTMsIDksIDIsIDI0OCwgMjU0LCAxMTUsIDI0OCwgMjUzLCA5LCAyLCAyNDgsIDI1MiwgOSwgMiwgMTQyLCA5LCAyLCAKLSAgICAyNDgsIDIzMCwgOSwgMiwgMjQ4LCA4NiwgOSwgMiwgMjQ4LCA4NywgMjMsIDYzLCA5LCAyLCAyNDgsIDg3LCAyMywgMjM4LCAKLSAgICAyMjQsIDksIDIsIDI0OCwgODcsIDIzLCAyMzEsIDg2LCAyMzcsIDIwOCwgOSwgMiwgMjQ3LCAxOTMsIDksIDIsIDI0NywgCi0gICAgMTk0LCAxMTUsIDI0NywgMTk0LCAyNTEsIDIzMiwgOSwgMiwgMjQ3LCAxOTQsIDExNSwgMjQ3LCAxOTQsIDIwNiwgMjU1LCA5LCAKLSAgICAyLCAyNDcsIDE5NCwgMjQ1LCAxMjQsIDI0NywgMTkzLCA5LCAyLCAyNDcsIDE3MSwgOSwgMiwgMjQ3LCAxNzIsIDExNSwgCi0gICAgMjQ3LCAxNzEsIDksIDIsIDI0NywgMTYwLCA5LCAyLCAyNDcsIDE1OSwgOSwgMiwgMjQ0LCAyMTIsIDksIDIsIDI0NCwgMjAzLCAKLSAgICA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgMjMsIDM0LCA5MSwgMjI1LCA3OSwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIAotICAgIDIzLCAyNTAsIDI0MywgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyNDgsIDI1MiwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgCi0gICAgNjksIDIzLCAyNDgsIDg2LCA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgMjMsIDIzOSwgOCwgOSwgMiwgMjQ0LCAyMDQsIAotICAgIDIyOSwgNjksIDIzLCAyMzksIDksIDkxLCAyMjUsIDc5LCA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgMjMsIDIzOCwgODEsIAotICAgIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjM4LCA2MywgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyMzcsIAotICAgIDIxOSwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAxNTIsIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjMwLCAKLSAgICAyMjQsIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjMwLCAyMjUsIDkxLCAyMjYsIDIzOSwgOSwgMiwgMjQ0LCAyMDQsIAotICAgIDIyOSwgNjksIDIzLCAyMzAsIDEyLCA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgMjMsIDIyOCwgMTEzLCA5LCAyLCAyNDQsIAotICAgIDIwNCwgMjI5LCA2OSwgMjMsIDIyNiwgMjM5LCA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgMjMsIDIyNiwgMjQwLCA5MSwgCi0gICAgMjI1LCA3OCwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyMjYsIDIyMiwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIAotICAgIDIzLCAyMjIsIDI0MCwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyMTksIDk3LCA5MSwgMjE5LCA5NiwgOSwgMiwgCi0gICAgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyMTIsIDE2MiwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyMDksIDI0MiwgCi0gICAgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyMDcsIDQxLCA5MSwgMjM4LCA2MywgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgCi0gICAgNjksIDIzLCAyMDYsIDE4NiwgOSwgMiwgMjQ0LCAxNzUsIDksIDIsIDI0NCwgMTU0LCA5LCAyLCAyNDQsIDE1MywgOSwgMiwgCi0gICAgMjQ0LCAxNTIsIDksIDIsIDI0MywgMjMzLCA5LCAyLCAyNDMsIDIxNSwgOSwgMiwgMjQzLCAxODgsIDksIDIsIDI0MywgMTg5LCAKLSAgICAyMywgMjEzLCA0MywgOSwgMiwgMjQzLCAxODYsIDksIDIsIDI0MywgMTc2LCA5LCAyLCAyNDMsIDE3NywgMjI5LCAyMzIsIAotICAgIDEwNiwgMjM3LCAyMDksIDI0MywgMTU2LCA5LCAyLCAyNDMsIDE1NiwgOSwgMiwgMjQyLCA0MiwgOSwgMiwgMjQyLCA0MywgCi0gICAgMTE1LCAyNDIsIDQyLCA5LCAyLCAyNDIsIDQzLCAyMzcsIDIwOCwgOSwgMiwgMjQyLCA0MywgMjEzLCAyNCwgOSwgMiwgMjQyLCAKLSAgICA0MCwgOSwgMiwgMjQyLCA0MSwgMjMsIDI0MSwgNCwgOSwgMiwgMjQyLCAzOSwgOSwgMiwgMjQyLCAzNywgOSwgMiwgMjQyLCAKLSAgICAzNiwgOSwgMiwgMjQyLCAzNSwgOSwgMiwgMjQyLCAzMSwgOSwgMiwgMjQyLCAyOSwgOSwgMiwgMjQyLCAzMCwgMjM3LCAyMDgsIAotICAgIDksIDIsIDI0MiwgMzAsIDIzNywgMjA5LCAyMzcsIDIwOCwgOSwgMiwgMjQyLCAyOCwgOSwgMiwgMjQyLCAyMSwgOSwgMiwgCi0gICAgNzQsIDksIDIsIDE4OCwgMjMsIDIxOSwgOTYsIDksIDIsIDE4OCwgMTE1LCAxODgsIDIyMSwgNDEsIDExNSwgMjIxLCA0MCwgCi0gICAgOSwgMiwgMjQxLCAxOTAsIDksIDIsIDI0MSwgMTkxLCAyMywgMzQsIDkxLCAyMzcsIDE2MCwgOTEsIDI0NCwgMjEyLCA5LCAyLCAKLSAgICAyNDEsIDE5MSwgMjMsIDIzOCwgMjI0LCA5LCAyLCAyNDEsIDE5MSwgMjMsIDIyNCwgMTU1LCA5LCAyLCAyNDEsIDE5MSwgMjMsIAotICAgIDIxNSwgOCwgOSwgMiwgMjQxLCAxOTEsIDIzLCAyMTMsIDQzLCA5LCAyLCAyNDEsIDE5MSwgMjMsIDY4LCA5LCAyLCAyNDEsIAotICAgIDE2MywgOSwgMiwgMjQxLCAxNTEsIDksIDIsIDI0MSwgMTIyLCA5LCAyLCAyNDEsIDkyLCA5LCAyLCAyNDEsIDkzLCAyMywgCi0gICAgMjM4LCAyMzIsIDksIDIsIDI0MSwgOTMsIDIzLCAyMzgsIDIzMywgMjA5LCAxNDEsIDksIDIsIDI0MSwgOTMsIDIzLCAyMjUsIAotICAgIDIwLCA5LCAyLCAyNDEsIDkzLCAyNDUsIDEyNCwgMjQxLCA5MiwgOSwgMiwgMjQxLCA5MywgMjE5LCAyNTEsIDI0MSwgOTIsIAotICAgIDksIDIsIDI0MSwgOTMsIDIxMSwgMTc2LCA5LCAyLCAyNDEsIDI1LCA5LCAyLCAyNDEsIDIyLCA5LCAyLCAyNDEsIDQsIDksIAotICAgIDIsIDI0MCwgMTc5LCA5LCAyLCAyNDAsIDE4MCwgMjMsIDYzLCA5LCAyLCAyNDAsIDE4MCwgMjMsIDM0LCA5MSwgMjI4LCAzMCwgCi0gICAgOSwgMiwgMjQwLCAxODAsIDIzLCAzNCwgOTEsIDIyOCwgMzEsIDIzLCAyMjgsIDMwLCA5LCAyLCAyNDAsIDE4MCwgMjMsIAotICAgIDI1MCwgMjMxLCA5LCAyLCAyNDAsIDE4MCwgMjMsIDI0OSwgMTUsIDksIDIsIDI0MCwgMTgwLCAyMywgMjQyLCAzMCwgMjM3LCAKLSAgICAyMDgsIDksIDIsIDI0MCwgMTgwLCAyMywgMjQyLCAzMCwgMjM3LCAyMDksIDIzNywgMjA4LCA5LCAyLCAyNDAsIDE4MCwgMjMsIAotICAgIDE1MiwgOSwgMiwgMjQwLCAxODAsIDIzLCAyMzcsIDE2MCwgMjM3LCAyMDgsIDksIDIsIDI0MCwgMTgwLCAyMywgMjMxLCA4NiwgCi0gICAgMjM3LCAyMDgsIDksIDIsIDI0MCwgMTgwLCAyMywgMjI5LCAyMzEsIDksIDIsIDI0MCwgMTgwLCAyMywgMjI5LCAyMzIsIAotICAgIDIxMSwgMTc2LCA5LCAyLCAyNDAsIDE4MCwgMjMsIDIyOCwgMjA3LCA5LCAyLCAyNDAsIDE4MCwgMjMsIDIyOCwgMTEzLCA5LCAKLSAgICAyLCAyNDAsIDE4MCwgMjMsIDIyOCwgMzEsIDIzLCAyMjgsIDMwLCA5LCAyLCAyNDAsIDE4MCwgMjMsIDIyNywgMTQ4LCA5LCAKLSAgICAyLCAyNDAsIDE4MCwgMjMsIDIyNiwgMjM5LCA5LCAyLCAyNDAsIDE4MCwgMjMsIDIwNywgNDAsIDksIDIsIDI0MCwgMTgwLCAKLSAgICAyMywgMjA3LCAyOSwgOSwgMiwgMjM5LCA4LCA5LCAyLCAyMzksIDksIDIzNywgMjA4LCA5LCAyLCAyMzksIDYsIDksIDIsIAotICAgIDIzOSwgNywgMjMsIDM0LCA5MSwgMjQ0LCAyMTMsIDkxLCAxNTIsIDksIDIsIDIzOSwgNywgMjMsIDM0LCA5MSwgMTUyLCA5LCAKLSAgICAyLCAyMzksIDcsIDIzLCAzNCwgOTEsIDIzMSwgODUsIDksIDIsIDIzOSwgNywgMjMsIDI1MSwgMTUwLCAyMDksIDE0MiwgOTEsIAotICAgIDIxMCwgMTAsIDksIDIsIDIzOSwgNywgMjMsIDI1MCwgMjMxLCA5LCAyLCAyMzksIDcsIDIzLCAyNTAsIDc1LCA5LCAyLCAKLSAgICAyMzksIDcsIDIzLCAyNTAsIDc0LCA5MSwgMjM4LCAyNDYsIDksIDIsIDIzOSwgNywgMjMsIDI0OSwgMTUsIDksIDIsIDIzOSwgCi0gICAgNywgMjMsIDI0OCwgMjMxLCA5MSwgMjE2LCAyMjAsIDksIDIsIDIzOSwgNywgMjMsIDI0NywgMTYwLCA5LCAyLCAyMzksIDcsIAotICAgIDIzLCAyNDcsIDE2MSwgOTEsIDIxNiwgMjIwLCA5LCAyLCAyMzksIDcsIDIzLCAyNDQsIDIxMiwgOSwgMiwgMjM5LCA3LCAyMywgCi0gICAgMjQzLCAyMzMsIDksIDIsIDIzOSwgNywgMjMsIDI0MywgMTg5LCAyMywgMjEzLCA0MywgOSwgMiwgMjM5LCA3LCAyMywgMjQyLCAKLSAgICA0MCwgOSwgMiwgMjM5LCA3LCAyMywgMjQxLCAxMjIsIDksIDIsIDIzOSwgNywgMjMsIDI0MSwgMTIzLCA5MSwgMjI4LCAxMTMsIAotICAgIDksIDIsIDIzOSwgNywgMjMsIDI0MSwgOTIsIDksIDIsIDIzOSwgNywgMjMsIDI0MSwgOTMsIDIzLCAyMzgsIDIzMywgMjA5LCAKLSAgICAxNDEsIDksIDIsIDIzOSwgNywgMjMsIDIzOCwgMjMzLCAyMDksIDE0MSwgOSwgMiwgMjM5LCA3LCAyMywgMjM4LCAyMjQsIDksIAotICAgIDIsIDIzOSwgNywgMjMsIDIzOCwgODEsIDksIDIsIDIzOSwgNywgMjMsIDIzOCwgNzksIDksIDIsIDIzOSwgNywgMjMsIDIzOCwgCi0gICAgODAsIDkxLCA2MywgOSwgMiwgMjM5LCA3LCAyMywgMjM4LCA2NCwgOTEsIDIxMSwgMTAsIDksIDIsIDIzOSwgNywgMjMsIAotICAgIDIzNywgMTYwLCA5MSwgMjI2LCAyNDAsIDkxLCAyNDEsIDQsIDksIDIsIDIzOSwgNywgMjMsIDIzNywgMTQwLCA5LCAyLCAKLSAgICAyMzksIDcsIDIzLCAyMzcsIDE0MSwgOTEsIDIyOCwgMTEzLCA5LCAyLCAyMzksIDcsIDIzLCAyMzcsIDQsIDkxLCAyMjcsIAotICAgIDE0OCwgOSwgMiwgMjM5LCA3LCAyMywgMjM2LCAyMSwgOSwgMiwgMjM5LCA3LCAyMywgMjMxLCA4NiwgMjM3LCAyMDgsIDksIAotICAgIDIsIDIzOSwgNywgMjMsIDIzMCwgMjEwLCA5MSwgMjM2LCAyNywgOTEsIDI1MCwgNzUsIDksIDIsIDIzOSwgNywgMjMsIDIzMCwgCi0gICAgMTIsIDksIDIsIDIzOSwgNywgMjMsIDIyOSwgMjMxLCA5LCAyLCAyMzksIDcsIDIzLCAyMjksIDk0LCA5LCAyLCAyMzksIDcsIAotICAgIDIzLCAyMjksIDk1LCA5MSwgMjI4LCAzMCwgOSwgMiwgMjM5LCA3LCAyMywgMjI4LCAyMDgsIDkxLCAyNTAsIDIzMSwgOSwgMiwgCi0gICAgMjM5LCA3LCAyMywgMjI4LCAxMTMsIDksIDIsIDIzOSwgNywgMjMsIDIyNSwgMjEsIDkxLCAyNDEsIDkyLCA5LCAyLCAyMzksIAotICAgIDcsIDIzLCAyMjQsIDE1NSwgOSwgMiwgMjM5LCA3LCAyMywgMjIxLCA0MCwgOSwgMiwgMjM5LCA3LCAyMywgMjIxLCA0MSwgCi0gICAgMTE1LCAyMjEsIDQwLCA5LCAyLCAyMzksIDcsIDIzLCAxODUsIDksIDIsIDIzOSwgNywgMjMsIDIxNSwgOCwgOSwgMiwgMjM5LCAKLSAgICA3LCAyMywgMjE0LCAyMzAsIDksIDIsIDIzOSwgNywgMjMsIDIxMywgNDMsIDksIDIsIDIzOSwgNywgMjMsIDIxMywgNDQsIAotICAgIDkxLCAyMDcsIDE4MSwgOSwgMiwgMjM5LCA3LCAyMywgMjEzLCA5LCA5LCAyLCAyMzksIDcsIDIzLCAyMTAsIDIyMCwgOSwgMiwgCi0gICAgMjM5LCA3LCAyMywgMjA5LCAyNDIsIDksIDIsIDIzOSwgNywgMjMsIDY4LCA5LCAyLCAyMzksIDcsIDIzLCAyMDcsIDI5LCA5LCAKLSAgICAyLCAyMzksIDcsIDIzLCAyMDcsIDMwLCA5MSwgMjQyLCA0MiwgOSwgMiwgMjM5LCA3LCAxMTUsIDIzOSwgNiwgOSwgMiwgCi0gICAgMjM5LCAxLCA5LCAyLCAyMzksIDIsIDI0NSwgMTI0LCAyMzksIDEsIDksIDIsIDIzOCwgMjU1LCA5LCAyLCAyMzksIDAsIAotICAgIDExNSwgMjM5LCAwLCAyMzgsIDIyNSwgMTE1LCAyMzgsIDIyNCwgOSwgMiwgMjM4LCAyNDYsIDksIDIsIDIzOCwgMjQ3LCAKLSAgICAyMzksIDAsIDExNSwgMjM5LCAwLCAyMzgsIDIyNSwgMTE1LCAyMzgsIDIyNCwgOSwgMiwgMjM4LCAyNDUsIDksIDIsIDIzOCwgCi0gICAgMjQzLCA5LCAyLCAyMzgsIDIzNCwgOSwgMiwgMjM4LCAyMzIsIDksIDIsIDIzOCwgMjMzLCAyMDksIDE0MSwgOSwgMiwgMjM4LCAKLSAgICAyMzMsIDExNSwgMjM4LCAyMzIsIDksIDIsIDIzOCwgMjMzLCAyNDUsIDEyNCwgMjM4LCAyMzIsIDksIDIsIDIzOCwgMjI0LCAKLSAgICA5LCAyLCAyMzgsIDIyMywgOSwgMiwgMjM4LCAyMTgsIDksIDIsIDIzOCwgMTYyLCA5LCAyLCAyMzgsIDE2MywgMjMsIDIyOCwgCi0gICAgMTgzLCA5LCAyLCAyMzgsIDgxLCA5LCAyLCAyMzgsIDgyLCAyMywgNzQsIDksIDIsIDIzOCwgODIsIDIzLCA2OCwgOSwgMiwgCi0gICAgMjM4LCA4MiwgMjQ1LCAxMjQsIDIzOCwgODEsIDksIDIsIDIzOCwgNzksIDksIDIsIDIzOCwgODAsIDExNSwgMjM4LCA3OSwgCi0gICAgOSwgMiwgMjM4LCA4MCwgMjQ1LCAxMjQsIDIzOCwgNzksIDksIDIsIDIzOCwgNzYsIDksIDIsIDIzOCwgNjMsIDksIDIsIAotICAgIDIzOCwgNjQsIDIzNywgMjA4LCA5LCAyLCAyMzgsIDYxLCA5LCAyLCAyMzgsIDYyLCAyMywgMzQsIDkxLCAyMzEsIDg1LCA5LCAKLSAgICAyLCAyMzgsIDYyLCAyMywgMjM4LCAyMzMsIDIwOSwgMTQxLCA5LCAyLCAyMzgsIDYyLCAyMywgMjMxLCA4NSwgOSwgMiwgCi0gICAgMjM4LCA2MiwgMjMsIDIyNiwgMjQwLCA5MSwgMjMxLCA4NSwgOSwgMiwgMjM4LCA2MiwgMjMsIDE4NSwgOSwgMiwgMjM4LCAKLSAgICA1NywgOSwgMiwgMjM4LCA1NSwgOSwgMiwgMjM4LCA1NiwgMjQ1LCAxMjQsIDIzOCwgNTUsIDksIDIsIDIzOCwgNTYsIDIzLCAKLSAgICAyNDksIDE1LCA5LCAyLCAyMzgsIDU2LCAyMywgMjA5LCAyNDIsIDksIDIsIDIzOCwgNTYsIDIwOSwgMTQxLCA5LCAyLCAyMzcsIAotICAgIDIzMCwgOSwgMiwgMjM3LCAyMzEsIDI0NSwgMTI0LCAyMzcsIDIzMCwgOSwgMiwgMjM3LCAyMjgsIDksIDIsIDIzNywgMjI5LCAKLSAgICAyMywgMjMwLCAxMiwgOSwgMiwgMjM3LCAyMjksIDIzLCAyMzAsIDEzLCAyMywgMjMxLCA4NiwgMjM3LCAyMDgsIDksIDIsIAotICAgIDIzNywgMjI5LCAyMywgMjIxLCA0MCwgOSwgMiwgMjM3LCAyMjksIDIzLCAyMTUsIDksIDkxLCAyMDcsIDE5NywgOSwgMiwgCi0gICAgMjM3LCAyMjksIDIzNywgMjA4LCA5LCAyLCAyMzcsIDIxOSwgOSwgMiwgMjM3LCAyMjAsIDIzLCAzNCwgOTEsIDIyOCwgMTgzLCAKLSAgICA5LCAyLCAyMzcsIDIyMCwgMjMsIDIyOCwgMTgzLCA5LCAyLCAyMzcsIDIyMCwgMTE1LCAyMzcsIDIyMCwgMjI2LCAyMzAsIDksIAotICAgIDIsIDIzNywgMjEyLCA5LCAyLCAyMzcsIDIxMCwgOSwgMiwgMjM3LCAyMTEsIDIzLCAyMTMsIDQzLCA5LCAyLCAyMzcsIDIwMiwgCi0gICAgOSwgMiwgMjM3LCAyMDEsIDksIDIsIDIzNywgMTk3LCA5LCAyLCAyMzcsIDE5NiwgOSwgMiwgMTUyLCA5LCAyLCAyMzcsIAotICAgIDE2MCwgMjA5LCAxNDEsIDksIDIsIDIzNywgMTYwLCAyMzcsIDIwOCwgOSwgMiwgMjM3LCAxNDAsIDksIDIsIDIzNywgMywgOSwgCi0gICAgMiwgMjM3LCA0LCAyMywgMjUwLCA3NSwgOSwgMiwgMjM3LCA0LCAyMywgMjUwLCA3MywgOSwgMiwgMjM3LCA0LCAyMywgMjQ5LCAKLSAgICAxNSwgOSwgMiwgMjM3LCA0LCAyMywgMjQzLCAxNTYsIDksIDIsIDIzNywgNCwgMjMsIDIzOCwgMjU1LCA5LCAyLCAyMzcsIDQsIAotICAgIDIzLCAyMjksIDg0LCA5LCAyLCAyMzcsIDQsIDIzLCAyMjEsIDQwLCA5LCAyLCAyMzcsIDQsIDIzLCAyMTMsIDQzLCA5LCAyLCAKLSAgICAyMzcsIDQsIDIzLCA2OCwgOSwgMiwgMjM2LCAyNiwgOSwgMiwgMjM2LCAyMSwgOSwgMiwgMjM2LCAyMiwgMjMsIDI1MCwgCi0gICAgMjMxLCA5LCAyLCAyMzYsIDIyLCAyMywgMjM3LCAxNDAsIDksIDIsIDIzNiwgMjIsIDIzLCAyMjksIDIzMSwgOSwgMiwgMjM2LCAKLSAgICAyMiwgMjMsIDIyNywgOTIsIDksIDIsIDIzNiwgMjIsIDIzLCAyMDcsIDI5LCA5LCAyLCAyMzYsIDE3LCA5LCAyLCA3NSwgOSwgCi0gICAgMiwgMjM1LCAyMDYsIDYzLCA5LCAyLCAyMzUsIDE2NiwgOSwgMiwgMjMxLCAxMTMsIDksIDIsIDIzMSwgMTE0LCAxMTUsIAotICAgIDIzMSwgMTE0LCAyNDcsIDE2MCwgOSwgMiwgMjMxLCAxMTQsIDExNSwgMjMxLCAxMTQsIDIxMSwgMTc2LCA5LCAyLCAyMzEsIAotICAgIDg4LCA5LCAyLCAyMzEsIDg1LCA5LCAyLCAyMzEsIDg2LCAyNDMsIDIxNSwgOSwgMiwgMjMxLCA4NiwgMjE2LCA1NywgOSwgMiwgCi0gICAgMjMxLCA4NiwgMTE1LCAyMzEsIDg2LCAyMTIsIDI0OSwgMTE1LCAyMTIsIDI0OSwgMjA3LCAzMCwgMTE1LCAyMDcsIDI5LCA5LCAKLSAgICAyLCAyMzEsIDg2LCAyMzcsIDIwOCwgOSwgMiwgMjMxLCA3NywgOSwgMiwgMjMxLCA3OCwgMjMsIDIzOCwgMjMzLCAyMDksIAotICAgIDE0MSwgOSwgMiwgMjMxLCA3NiwgOSwgMiwgMjMxLCA2NiwgOSwgMiwgMjMxLCA2NywgMjMsIDIwOSwgMjQyLCA5LCAyLCAKLSAgICAyMzEsIDY3LCAyNDUsIDEyNCwgMjMxLCA2NiwgOSwgMiwgMjMxLCA2NywgMjE5LCAyNTEsIDIzMSwgNjYsIDksIDIsIDIzMSwgCi0gICAgNjcsIDIxMSwgMTc2LCA5LCAyLCAyMzEsIDU5LCA5LCAyLCAyMzEsIDQ5LCA5LCAyLCAyMzAsIDIyNCwgOSwgMiwgMjMwLCAKLSAgICAyMDksIDksIDIsIDE3MywgOSwgMiwgMjMwLCA0NCwgMjMsIDYzLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjUxLCAxMjIsIDksIDIsIAotICAgIDIzMCwgNDQsIDIzLCAyNTEsIDEyMywgOTEsIDIyOCwgMjA3LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjUwLCA3MywgOSwgMiwgCi0gICAgMjMwLCA0NCwgMjMsIDI0OSwgMTUsIDksIDIsIDIzMCwgNDQsIDIzLCAyNDgsIDI1MiwgOSwgMiwgMjMwLCA0NCwgMjMsIAotICAgIDE0MiwgOSwgMiwgMjMwLCA0NCwgMjMsIDI0OCwgODYsIDksIDIsIDIzMCwgNDQsIDIzLCAyNDEsIDIyLCA5LCAyLCAyMzAsIAotICAgIDQ0LCAyMywgMjQxLCA0LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjM5LCA4LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjM4LCAyNDYsIAotICAgIDksIDIsIDIzMCwgNDQsIDIzLCAyMzgsIDIzMywgMjA5LCAxNDEsIDksIDIsIDIzMCwgNDQsIDIzLCAyMzgsIDIyNCwgOSwgMiwgCi0gICAgMjMwLCA0NCwgMjMsIDIzOCwgMjI1LCA5MSwgMjEzLCA4OSwgOTEsIDYzLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjM4LCA4MSwgCi0gICAgOSwgMiwgMjMwLCA0NCwgMjMsIDIzOCwgNjMsIDksIDIsIDIzMCwgNDQsIDIzLCAyMzgsIDU2LCA5MSwgMjE0LCAyMzAsIDksIAotICAgIDIsIDIzMCwgNDQsIDIzLCAyMzgsIDU2LCAyNDUsIDEyNCwgMjM4LCA1NSwgOSwgMiwgMjMwLCA0NCwgMjMsIDIzNywgMjMwLCAKLSAgICA5LCAyLCAyMzAsIDQ0LCAyMywgMjM3LCAyMDEsIDksIDIsIDIzMCwgNDQsIDIzLCAyMzEsIDg1LCA5LCAyLCAyMzAsIDQ0LCAKLSAgICAyMywgMjMxLCA2NiwgOSwgMiwgMjMwLCA0NCwgMjMsIDIzMCwgMTIsIDksIDIsIDIzMCwgNDQsIDIzLCAyMjksIDEwMCwgOSwgCi0gICAgMiwgMjMwLCA0NCwgMjMsIDIyOSwgOTQsIDksIDIsIDIzMCwgNDQsIDIzLCAyMjcsIDE0OCwgOSwgMiwgMjMwLCA0NCwgMjMsIAotICAgIDIyNiwgMjM5LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjI1LCAyMCwgOSwgMiwgMjMwLCA0NCwgMjMsIDIyNSwgMjEsIDkxLCAKLSAgICAyNDIsIDQyLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjI1LCAyMSwgOTEsIDIzOCwgODEsIDksIDIsIDIzMCwgNDQsIDIzLCAyMjUsIAotICAgIDIxLCA5MSwgMjA5LCAxODcsIDksIDIsIDIzMCwgNDQsIDIzLCAyMjQsIDE1NSwgOSwgMiwgMjMwLCA0NCwgMjMsIDIyNCwgCi0gICAgMTU2LCA5MSwgMjIxLCAzNSwgOSwgMiwgMjMwLCA0NCwgMjMsIDIyMiwgMjQwLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjIxLCAKLSAgICA0MCwgOSwgMiwgMjMwLCA0NCwgMjMsIDIxOCwgMTY3LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjE1LCAxNDUsIDksIDIsIDIzMCwgCi0gICAgNDQsIDIzLCAyMTUsIDM2LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjE0LCAyMzAsIDksIDIsIDIzMCwgNDQsIDIzLCAyMTMsIDkwLCAKLSAgICA5LCAyLCAyMzAsIDQ0LCAyMywgMjEzLCA0MywgOSwgMiwgMjMwLCA0NCwgMjMsIDIxMywgOSwgOSwgMiwgMjMwLCA0NCwgMjMsIAotICAgIDIxMiwgMTk5LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjEyLCAxNDksIDksIDIsIDIzMCwgNDQsIDIzLCAyMTAsIDIyOSwgOSwgMiwgCi0gICAgMjMwLCA0NCwgMjMsIDIwOSwgMjE4LCA5LCAyLCAyMzAsIDQ0LCAyMywgNjgsIDksIDIsIDIzMCwgNDQsIDIzLCAyMDcsIDQwLCAKLSAgICA5LCAyLCAyMzAsIDQ0LCAyMywgMjA3LCAyOSwgOSwgMiwgMjMwLCA0NCwgMjMsIDIwNywgMiwgMjMsIDE4NSwgOSwgMiwgCi0gICAgMjMwLCA0NCwgMjMsIDIwNiwgMTg2LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjAyLCAzOSwgOSwgMiwgMjMwLCA0MiwgOSwgMiwgCi0gICAgMjMwLCA0MywgMjQ1LCAxMjQsIDIzMCwgNDIsIDksIDIsIDIzMCwgMzIsIDksIDIsIDIzMCwgMjksIDksIDIsIDIzMCwgMjcsIAotICAgIDksIDIsIDIzMCwgMjYsIDksIDIsIDIzMCwgMjQsIDksIDIsIDIzMCwgMjUsIDExNSwgMjMwLCAyNCwgOSwgMiwgMjMwLCAxMiwgCi0gICAgOSwgMiwgMjMwLCAxMywgMjMsIDIzMSwgODYsIDIzNywgMjA4LCA5LCAyLCAyMzAsIDgsIDksIDIsIDIzMCwgOSwgMjMsIAotICAgIDI0OSwgMTUsIDksIDIsIDIzMCwgOSwgMjQ1LCAxMjQsIDIzMCwgOCwgOSwgMiwgMjMwLCA2LCA5LCAyLCAyMzAsIDUsIDksIAotICAgIDIsIDIyOSwgMjMxLCA5LCAyLCAyMjksIDIzMiwgMjI4LCA5NSwgMjMsIDEwNiwgMTE1LCAyMjgsIDk1LCAyMywgNjgsIDksIAotICAgIDIsIDIyOSwgMjMyLCAxMTUsIDIyOSwgMjMyLCAyMjgsIDk1LCAyMywgMTA2LCAxMTUsIDIyOCwgOTUsIDIzLCA2OCwgOSwgMiwgCi0gICAgMjI5LCAxNzEsIDksIDIsIDIyOSwgMTAwLCA5LCAyLCAyMjksIDEwMSwgMjMsIDI0OSwgMTUsIDksIDIsIDIyOSwgMTAxLCAKLSAgICAyMywgNjgsIDksIDIsIDIyOSwgMTAxLCAyMywgMjA3LCAyOSwgOSwgMiwgMjI5LCA5NCwgOSwgMiwgMjI5LCA4NCwgOSwgMiwgCi0gICAgMjI5LCA3MSwgOSwgMiwgMjI5LCA3MCwgOSwgMiwgMjI5LCA2OCwgOSwgMiwgMjI5LCA2OSwgMTE1LCAyMjksIDY4LCA5LCAyLCAKLSAgICAyMjgsIDIwOSwgOSwgMiwgMjI4LCAyMTAsIDExNSwgMjM3LCA0LCAyMywgMjUwLCA3NCwgMjI4LCAyMTAsIDExNSwgMjM3LCAKLSAgICA0LCAyMywgMjUwLCA3MywgOSwgMiwgMjI4LCAyMDcsIDksIDIsIDIyOCwgMjA1LCA5LCAyLCAyMjgsIDIwNiwgMjA2LCA2OSwgCi0gICAgMTgsIDksIDIsIDIyOCwgMjA0LCA5LCAyLCAyMjgsIDE5NiwgOSwgMiwgMjI4LCAxOTcsIDIzNywgMjA4LCA5LCAyLCAyMjgsIAotICAgIDE5NSwgOSwgMiwgMjI4LCAxODMsIDksIDIsIDIyOCwgMTg0LCAyMTksIDI1MSwgMjI4LCAxODMsIDksIDIsIDIyOCwgMTc3LCAKLSAgICA5LCAyLCAyMjgsIDE1NSwgOSwgMiwgMjI4LCAxMTMsIDksIDIsIDIyOCwgOTQsIDksIDIsIDIyOCwgOTUsIDIzLCA2MywgOSwgCi0gICAgMiwgMjI4LCA5NSwgMjMsIDM0LCA5MSwgMjQ0LCAyMTMsIDkxLCAxNTIsIDksIDIsIDIyOCwgOTUsIDIzLCAzNCwgOTEsIAotICAgIDIzOCwgMjI0LCA5LCAyLCAyMjgsIDk1LCAyMywgMzQsIDkxLCAyMjgsIDMwLCA5LCAyLCAyMjgsIDk1LCAyMywgMjUxLCAzOSwgCi0gICAgOSwgMiwgMjI4LCA5NSwgMjMsIDI1MCwgMjMxLCA5LCAyLCAyMjgsIDk1LCAyMywgMjUwLCA3NiwgMjAyLCAzNSwgMjA5LCAKLSAgICAxNDEsIDksIDIsIDIyOCwgOTUsIDIzLCAyNDksIDE1LCA5LCAyLCAyMjgsIDk1LCAyMywgMjQ4LCA4NiwgOSwgMiwgMjI4LCAKLSAgICA5NSwgMjMsIDI0NCwgMTU0LCA5LCAyLCAyMjgsIDk1LCAyMywgMjQxLCA5MiwgOSwgMiwgMjI4LCA5NSwgMjMsIDIzOSwgOCwgCi0gICAgOSwgMiwgMjI4LCA5NSwgMjMsIDIzOCwgMjI0LCA5LCAyLCAyMjgsIDk1LCAyMywgMjM3LCAyMTksIDksIDIsIDIyOCwgOTUsIAotICAgIDIzLCAyMzcsIDIyMCwgOTEsIDIzNywgMjE5LCA5LCAyLCAyMjgsIDk1LCAyMywgMTUyLCA5LCAyLCAyMjgsIDk1LCAyMywgCi0gICAgMjM3LCAxNDAsIDksIDIsIDIyOCwgOTUsIDIzLCAyMzcsIDQsIDIzLCAyMjEsIDQwLCA5LCAyLCAyMjgsIDk1LCAyMywgMjMxLCAKLSAgICA4NiwgMjM3LCAyMDgsIDksIDIsIDIyOCwgOTUsIDIzLCAyMzEsIDY2LCA5LCAyLCAyMjgsIDk1LCAyMywgMjMxLCA2NywgOTEsIAotICAgIDE1MiwgOSwgMiwgMjI4LCA5NSwgMjMsIDIzMSwgNjcsIDkxLCAyMjYsIDIzOSwgOSwgMiwgMjI4LCA5NSwgMjMsIDIyOSwgCi0gICAgMTAwLCA5LCAyLCAyMjgsIDk1LCAyMywgMjI5LCA4NCwgOSwgMiwgMjI4LCA5NSwgMjMsIDIyOCwgMjA3LCA5LCAyLCAyMjgsIAotICAgIDk1LCAyMywgMjI4LCAxOTYsIDksIDIsIDIyOCwgOTUsIDIzLCAyMjgsIDE5NywgOTEsIDIzNywgNCwgOTEsIDYzLCA5LCAyLCAKLSAgICAyMjgsIDk1LCAyMywgMjI4LCA5NCwgOSwgMiwgMjI4LCA5NSwgMjMsIDIyNywgOTIsIDksIDIsIDIyOCwgOTUsIDIzLCAyMjYsIAotICAgIDIzOSwgOSwgMiwgMjI4LCA5NSwgMjMsIDIyNiwgMjI0LCA5LCAyLCAyMjgsIDk1LCAyMywgMjI1LCAyMCwgOSwgMiwgMjI4LCAKLSAgICA5NSwgMjMsIDIyNSwgMjEsIDkxLCAyNDEsIDkyLCA5LCAyLCAyMjgsIDk1LCAyMywgMjIzLCAxOTksIDksIDIsIDIyOCwgOTUsIAotICAgIDIzLCAyMjIsIDI0MCwgOSwgMiwgMjI4LCA5NSwgMjMsIDIxMywgNDQsIDkxLCAyMTAsIDIyMCwgOSwgMiwgMjI4LCA5NSwgCi0gICAgMjMsIDIxMiwgMjQ1LCA5MSwgMjM4LCA1NiwgOTEsIDI0MSwgMjIsIDksIDIsIDIyOCwgOTUsIDIzLCAyMTIsIDI0NSwgOTEsIAotICAgIDIzOCwgNTYsIDIwOSwgMTQxLCA5LCAyLCAyMjgsIDk1LCAyMywgMjEyLCAxOTcsIDksIDIsIDIyOCwgOTUsIDIzLCAyMTIsIAotICAgIDE5OCwgOTEsIDIxMiwgMTk3LCA5LCAyLCAyMjgsIDk1LCAyMywgMjEwLCAyMjAsIDksIDIsIDIyOCwgOTUsIDIzLCAyMDksIAotICAgIDI1NSwgOSwgMiwgMjI4LCA5NSwgMjMsIDIwOSwgMjQyLCA5LCAyLCAyMjgsIDk1LCAyMywgMjA5LCAxODgsIDkxLCAzNCwgCi0gICAgOTEsIDIxMSwgMTEsIDkxLCAyMDEsIDIwMSwgOSwgMiwgMjI4LCA5NSwgMjMsIDY4LCA5LCAyLCAyMjgsIDk1LCAyMywgMTA2LCAKLSAgICA5MSwgNjMsIDksIDIsIDIyOCwgOTUsIDIzLCAxMDYsIDkxLCAxMDYsIDkxLCA2OCwgOSwgMiwgMjI4LCA5NSwgMjMsIDIwNywgCi0gICAgNDEsIDkxLCAyNTAsIDc1LCA5LCAyLCAyMjgsIDk1LCAyMywgMjA3LCAyOSwgOSwgMiwgMjI4LCA5NSwgMjMsIDIwNiwgMTg2LCAKLSAgICA5LCAyLCAyMjgsIDk1LCAyMTEsIDE3NiwgOSwgMiwgMjI4LCA5MiwgOSwgMiwgMjI4LCA5MywgMjMsIDIxMywgNDMsIDksIDIsIAotICAgIDIyOCwgOTMsIDIzLCAyMTMsIDQ0LCA5MSwgMjEwLCAyMjAsIDksIDIsIDIyOCwgOTMsIDIzNywgMjA4LCA5LCAyLCAyMjgsIAotICAgIDkzLCAyMzcsIDIwOSwgMTE1LCAyMjgsIDkzLCAyMzcsIDIwOSwgMjEzLCA0MywgOSwgMiwgMjI4LCA4OCwgOSwgMiwgMjI4LCAKLSAgICAzMCwgOSwgMiwgMjI4LCAzMSwgMjMsIDIyOCwgMzAsIDksIDIsIDIyOCwgMjgsIDksIDIsIDIyOCwgMjksIDIzLCAyMjgsIAotICAgIDE4MywgOSwgMiwgMjI4LCAyOSwgMjMsIDIyOCwgMTg0LCA5MSwgMjE1LCAxNDUsIDksIDIsIDIyNywgMTQ4LCA5LCAyLCAKLSAgICAyMjcsIDEyOSwgOSwgMiwgMjI3LCAxMTcsIDksIDIsIDIyNywgOTIsIDksIDIsIDIyNiwgMjM5LCA5LCAyLCAyMjYsIDI0MCwgCi0gICAgMjMsIDI0OSwgMTUsIDksIDIsIDIyNiwgMjM3LCA5LCAyLCAyMjYsIDIzOCwgMjMsIDI1MSwgMzksIDksIDIsIDIyNiwgMjM4LCAKLSAgICAyMywgMjQ5LCAxNSwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyNDEsIDQsIDksIDIsIDIyNiwgMjM4LCAyMywgMjQxLCA1LCAyMDksIAotICAgIDE0MSwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyMzgsIDIzMywgMjA5LCAxNDEsIDksIDIsIDIyNiwgMjM4LCAyMywgMjM3LCA0LCAKLSAgICAyMywgMjQ5LCAxNSwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyMzEsIDY2LCA5LCAyLCAyMjYsIDIzOCwgMjMsIDIzMCwgMjksIDksIAotICAgIDIsIDIyNiwgMjM4LCAyMywgMjMwLCAyNywgOSwgMiwgMjI2LCAyMzgsIDIzLCAyMzAsIDI4LCA5MSwgMjUwLCA3NSwgOSwgMiwgCi0gICAgMjI2LCAyMzgsIDIzLCAyMjksIDEwMCwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyMjgsIDExNCwgOTEsIDI1MCwgNzUsIDksIDIsIAotICAgIDIyNiwgMjM4LCAyMywgMjI4LCA5NCwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyMjUsIDIxLCA5MSwgMjQxLCA5MiwgOSwgMiwgCi0gICAgMjI2LCAyMzgsIDIzLCAyMjIsIDI0MCwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyMjEsIDg0LCA5LCAyLCAyMjYsIDIzOCwgMjMsIAotICAgIDIxMiwgMTYzLCA5MSwgMjUwLCA3NSwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyMTIsIDE0MSwgOTEsIDI0NywgMTkzLCA5LCAyLCAKLSAgICAyMjYsIDIzOCwgMjMsIDIwNywgMTk3LCA5LCAyLCAyMjYsIDIzOCwgMjA5LCAxNDEsIDksIDIsIDIyNiwgMjM4LCAyNDUsIAotICAgIDEyNCwgMjI2LCAyMzcsIDksIDIsIDIyNiwgMjM4LCAyMTksIDI1MSwgMjI2LCAyMzcsIDksIDIsIDIyNiwgMjM4LCAyMTEsIAotICAgIDE3NiwgOSwgMiwgMjI2LCAyMzgsIDIxMywgMjQsIDksIDIsIDIyNiwgMjM2LCA5LCAyLCAyMjYsIDIzMCwgOSwgMiwgMjI2LCAKLSAgICAyMzEsIDExNSwgMjI2LCAyMzAsIDksIDIsIDIyNiwgMjMxLCAyMTksIDI1MSwgMjI2LCAyMzAsIDksIDIsIDIyNiwgMjMxLCAKLSAgICAyMTMsIDI0LCA5LCAyLCAyMjYsIDIyNywgOSwgMiwgMjI2LCAyMjQsIDksIDIsIDIyNiwgMjIyLCA5LCAyLCAyMjYsIDIyMywgCi0gICAgMTE1LCAyMjYsIDIyMiwgOSwgMiwgMjI2LCAyMjMsIDExNSwgMjI2LCAyMjMsIDIzOCwgMjI1LCAxMTUsIDIzOCwgMjI0LCA5LCAKLSAgICAyLCAxOTIsIDksIDIsIDIyNSwgMTc3LCAyMywgMjA5LCAyNDIsIDksIDIsIDIyNSwgMTc3LCAyMzcsIDIwOCwgOSwgMiwgCi0gICAgMjI1LCAxNzYsIDksIDIsIDIyNSwgMTQ4LCA5LCAyLCAyMjUsIDEwMCwgOSwgMiwgMjI1LCA3OSwgOSwgMiwgMjI1LCA3OCwgCi0gICAgOSwgMiwgMjI1LCAyMCwgOSwgMiwgMjI0LCAyMjgsIDksIDIsIDIyNCwgMTU1LCA5LCAyLCAyMjQsIDExMCwgOSwgMiwgMjIzLCAKLSAgICAyNDYsIDksIDIsIDIyMywgMjQ3LCAxMTUsIDIyMywgMjQ2LCA5LCAyLCAyMjMsIDIzNSwgOSwgMiwgMjIzLCAyMzYsIDIzNywgCi0gICAgMjA4LCA5LCAyLCAyMjMsIDIxNywgOSwgMiwgMjIzLCAyMDMsIDksIDIsIDIyMywgMTk5LCA5LCAyLCAyMjMsIDIwMCwgMjMsIAotICAgIDYzLCA5LCAyLCAyMjMsIDIwMCwgMjMsIDIyOCwgMTgzLCA5LCAyLCAyMjMsIDIwMCwgMjMsIDIwMiwgMTE2LCA5LCAyLCAKLSAgICAyMjMsIDIwMCwgMTE1LCAyMjMsIDE5OSwgOSwgMiwgMjIzLCAyMDAsIDExNSwgMjIzLCAyMDAsIDIzLCAzNCwgOTEsIDIwMSwgCi0gICAgMjAxLCA5LCAyLCAyMjMsIDIwMCwgMjQ1LCAxMjQsIDIyMywgMTk5LCA5LCAyLCAyMjMsIDE5NywgOSwgMiwgMjIzLCAxOTgsIAotICAgIDIzLCA2MywgOSwgMiwgMjIzLCAxOTgsIDIzLCAzNCwgOTEsIDI0MywgMjMzLCA5LCAyLCAyMjMsIDE5OCwgMjMsIDI0MywgCi0gICAgMjMzLCA5LCAyLCAyMjMsIDE5OCwgMjM3LCAyMDgsIDksIDIsIDIwMSwgMjAxLCA5LCAyLCAyMjMsIDEwOSwgOSwgMiwgMjIzLCAKLSAgICA5NiwgOSwgMiwgMjIzLCA5NywgMjMwLCAyMzgsIDksIDIsIDIyMywgOTcsIDIzLCAyMTIsIDIwMCwgMjA5LCAxNDEsIDksIDIsIAotICAgIDIyMywgOTcsIDIxOSwgMjUxLCAyMjMsIDk2LCA5LCAyLCAyMjMsIDk1LCA5LCAyLCAyMjMsIDg4LCAyMjEsIDI2LCA5LCAyLCAKLSAgICAyMjMsIDg3LCA5LCAyLCAyMjMsIDg2LCA5LCAyLCAyMjIsIDI0MCwgOSwgMiwgMjIyLCAyNDEsIDIzLCA2MywgOSwgMiwgCi0gICAgMjIyLCAyNDEsIDIzLCAyMDcsIDI5LCA5LCAyLCAyMjIsIDI0MSwgMjEzLCAyNCwgOSwgMiwgMjIyLCAxMDAsIDksIDIsIAotICAgIDIyMiwgMTAxLCAyMywgNzQsIDksIDIsIDIyMiwgOTksIDksIDIsIDIyMiwgNjksIDksIDIsIDIyMiwgNzAsIDIzLCAyMzgsIAotICAgIDIzMywgMjA5LCAxNDEsIDksIDIsIDIyMiwgNzAsIDIzLCAyMzgsIDIyNSwgOTEsIDIzOCwgMjMzLCAyMDksIDE0MSwgOSwgMiwgCi0gICAgMjIyLCA2NSwgOSwgMiwgMjIyLCA2NiwgMjMsIDI1MCwgMjMxLCA5LCAyLCAyMjIsIDY2LCAyMywgMjUwLCA3NSwgOSwgMiwgCi0gICAgMjIyLCA2NiwgMjMsIDI1MCwgNzYsIDkxLCAyNTAsIDc1LCA5LCAyLCAyMjIsIDY2LCAyMywgMjM3LCAyMTksIDksIDIsIAotICAgIDIyMiwgNjYsIDIzLCAyMjUsIDIxLCA5MSwgMjM4LCAyMzMsIDIwOSwgMTQxLCA5LCAyLCAyMjIsIDY2LCAyMywgMjIyLCAKLSAgICAyNDAsIDksIDIsIDIyMiwgNjYsIDIzLCAyMjEsIDQwLCA5LCAyLCAyMjIsIDY2LCAyMywgMjEzLCA0MywgOSwgMiwgMjIyLCAKLSAgICA2NiwgMjMsIDIxMywgNDQsIDkxLCAzNCwgMjUwLCAyMzEsIDksIDIsIDIyMiwgNjYsIDIzLCAyMTMsIDQ0LCA5MSwgMjUwLCAKLSAgICA3NSwgOSwgMiwgMjIyLCA2NiwgMjMsIDIxMywgNDQsIDkxLCAyNTAsIDc2LCA5MSwgMjUwLCA3NSwgOSwgMiwgMjIyLCA2NiwgCi0gICAgMjMsIDIwNywgNDEsIDkxLCAyNTAsIDc1LCA5LCAyLCAyMjIsIDY2LCAyMywgMjA2LCAxODYsIDksIDIsIDIyMiwgNTMsIDksIAotICAgIDIsIDIyMSwgODQsIDksIDIsIDIyMSwgNTYsIDksIDIsIDIyMSwgNDAsIDksIDIsIDIyMSwgNDEsIDIyOCwgOTMsIDIzLCAKLSAgICAyMzgsIDIyNCwgOSwgMiwgMjIxLCA0MSwgMjI4LCA5MywgMjMsIDIyNSwgNzksIDksIDIsIDIyMSwgNDEsIDIyOCwgOTMsIAotICAgIDIzLCAyMTUsIDgsIDksIDIsIDIyMSwgNDEsIDIyOCwgOTMsIDIzLCAyMTUsIDksIDExNSwgMjIxLCA0MSwgMjI4LCA5MywgCi0gICAgMjMsIDIxNSwgOCwgOSwgMiwgMjIxLCA0MSwgMjI4LCA5MywgMjMsIDIwNiwgMTg2LCA5LCAyLCAyMjEsIDQxLCAyMDksIAotICAgIDE0MSwgOSwgMiwgMjIxLCA0MSwgMTE1LCAyMjEsIDQwLCA5LCAyLCAyMjEsIDQxLCAyNDUsIDEyNCwgMjIxLCA0MCwgOSwgMiwgCi0gICAgMjIxLCA0MSwgMjQ1LCAxMjQsIDIyMSwgNDEsIDIyOCwgOTMsIDExNSwgMjI4LCA5MiwgOSwgMiwgMjIxLCAzNSwgOSwgMiwgCi0gICAgMjIxLCAzNiwgMjUxLCAxNTAsIDIzLCAyNTAsIDY5LCA5LCAyLCAyMjEsIDM2LCAyNTEsIDE1MCwgMjMsIDI0OCwgODYsIDksIAotICAgIDIsIDIyMSwgMzYsIDI1MSwgMTUwLCAyMywgMjQyLCAzNywgOSwgMiwgMjIxLCAzNiwgMjUxLCAxNTAsIDIzLCAyMzcsIDIxOSwgCi0gICAgOSwgMiwgMjIxLCAzNiwgMjUxLCAxNTAsIDIzLCAyMzEsIDg2LCAyMzcsIDIwOCwgOSwgMiwgMjIxLCAzNiwgMjUxLCAxNTAsIAotICAgIDIzLCAyMzAsIDI3LCA5LCAyLCAyMjEsIDM2LCAyNTEsIDE1MCwgMjMsIDIyOCwgMTEzLCA5LCAyLCAyMjEsIDM2LCAyNTEsIAotICAgIDE1MCwgMjMsIDIyMiwgMjQwLCA5LCAyLCAyMjEsIDM2LCAyNTEsIDE1MCwgMjMsIDIxMiwgMTM4LCA5LCAyLCAyMjEsIDM2LCAKLSAgICAyNTEsIDE1MCwgMjMsIDIwNywgNDAsIDksIDIsIDIyMSwgMzYsIDIyOSwgNjksIDIzLCAyNDgsIDg2LCA5LCAyLCAyMjEsIAotICAgIDM2LCAyMjksIDY5LCAyMywgMjQ4LCA4NywgNjgsIDksIDIsIDE4NSwgOSwgMiwgMjE5LCAxNTksIDksIDIsIDIxOSwgMTIyLCAKLSAgICA5LCAyLCAyMTksIDk2LCA5LCAyLCAyMTgsIDIyMiwgOSwgMiwgMjE4LCAxNjcsIDksIDIsIDIxOCwgMTY4LCAyMywgNjMsIDksIAotICAgIDIsIDIxOCwgMTY4LCAyMywgMjUxLCAyMzIsIDksIDIsIDIxOCwgMTY4LCAyMywgMjQ4LCA4NiwgOSwgMiwgMjE4LCAxNjgsIAotICAgIDIzLCAyNDcsIDE5MywgOSwgMiwgMjE4LCAxNjgsIDIzLCA3NCwgOSwgMiwgMjE4LCAxNjgsIDIzLCA3NSwgOSwgMiwgMjE4LCAKLSAgICAxNjgsIDIzLCAyMzUsIDE2NiwgOSwgMiwgMjE4LCAxNjgsIDIzLCA2OCwgOSwgMiwgMjE4LCAxNjgsIDIzLCAyMDcsIDQwLCAKLSAgICA5LCAyLCAyMTgsIDE2OCwgMjQ1LCAxMjQsIDIxOCwgMTY3LCA5LCAyLCAyMTgsIDEwOSwgOSwgMiwgMjE4LCAxMTAsIDIzLCAKLSAgICAyMzAsIDgsIDksIDIsIDIxOCwgMTEwLCAyMywgMjA3LCAyOSwgOSwgMiwgMjE4LCAxMTAsIDIzLCAyMDIsIDExNiwgOSwgMiwgCi0gICAgMjE4LCAxMTAsIDIxOSwgMjUxLCAyMTgsIDEwOSwgOSwgMiwgMjE2LCAyMjAsIDksIDIsIDIxNiwgMjE0LCA5LCAyLCAyMTYsIAotICAgIDU3LCA5LCAyLCAyMTUsIDE0NSwgOSwgMiwgMjE1LCAzNiwgOSwgMiwgMjE1LCAyMywgMjIxLCAyNiwgOSwgMiwgMjE1LCAyMiwgCi0gICAgOSwgMiwgMjE1LCAyMywgMjMsIDYzLCA5LCAyLCAyMTUsIDIzLCAyMywgMjQyLCA0MiwgOSwgMiwgMjE1LCAyMywgMjMsIAotICAgIDI0MiwgNDAsIDksIDIsIDIxNSwgMjMsIDIzLCAxNTIsIDksIDIsIDIxNSwgMjMsIDIzLCAyMzAsIDEyLCA5LCAyLCAyMTUsIAotICAgIDIzLCAyMywgMjI4LCAxODMsIDksIDIsIDIxNSwgMjMsIDIzLCAyMjYsIDIyMiwgOSwgMiwgMjE1LCAyMywgMjMsIDIyNCwgCi0gICAgMTU1LCA5LCAyLCAyMTUsIDIzLCAyMywgMjIxLCA0MCwgOSwgMiwgMjE1LCAyMywgMjMsIDIxNSwgOCwgOSwgMiwgMjE1LCAKLSAgICAyMywgMjMsIDIxMywgOSwgOSwgMiwgMjE1LCAyMywgMjMsIDIxMCwgMTAsIDksIDIsIDIxNSwgMjMsIDIzLCAyMDcsIDQwLCAKLSAgICA5LCAyLCAyMTUsIDIzLCAyMywgMjA3LCAzNSwgOSwgMiwgMjE1LCAyMywgMjMsIDIwNywgNiwgOSwgMiwgMjE1LCAyMywgMjMsIAotICAgIDIwNiwgMjEwLCA5LCAyLCAyMTUsIDIzLCAyMywgMjA2LCAxODYsIDksIDIsIDIxNSwgMjMsIDExNSwgMjE1LCAyMiwgOSwgMiwgCi0gICAgMjE1LCAyMywgMjM3LCAyMDgsIDksIDIsIDIxNSwgOCwgOSwgMiwgMjE1LCA5LCAyMjgsIDk1LCAyMywgMjUwLCA3MywgOSwgCi0gICAgMiwgMjE0LCAyMzgsIDksIDIsIDIxNCwgMjMwLCA5LCAyLCAyMTMsIDkwLCA5LCAyLCAyMTMsIDg4LCA5LCAyLCAyMTMsIDg5LCAKLSAgICAyMywgNjMsIDksIDIsIDIxMywgODksIDIzLCAyNDksIDE1LCA5LCAyLCAyMTMsIDg5LCAyMywgMjM4LCA1NSwgOSwgMiwgCi0gICAgMjEzLCA4OSwgMjMsIDIyMiwgMjQwLCA5LCAyLCAyMTMsIDg5LCAyMywgMjEyLCAxOTcsIDksIDIsIDIxMywgODksIDIzLCAKLSAgICAyMDcsIDE4MSwgOSwgMiwgMjEzLCA4OSwgMjMsIDY4LCA5LCAyLCAyMTMsIDg5LCAyMywgMTA2LCA5MSwgNjMsIDksIDIsIAotICAgIDIxMywgODYsIDksIDIsIDIxMywgODQsIDksIDIsIDIxMywgNTksIDksIDIsIDIxMywgNDMsIDksIDIsIDIxMywgNDQsIDIzNiwgCi0gICAgMjYsIDksIDIsIDIxMywgNDQsIDExNSwgMjEzLCA0NCwgMjM5LCAwLCAxMTUsIDIzOSwgMCwgMjM4LCAyMjUsIDExNSwgMjM4LCAKLSAgICAyMjQsIDksIDIsIDIxMywgNDQsIDExNSwgMjEzLCA0NCwgMjEwLCAxMSwgMTE1LCAyMTAsIDExLCAyMzgsIDIyNSwgMTE1LCAKLSAgICAyMzgsIDIyNCwgOSwgMiwgMjEzLCAzNiwgOSwgMiwgMjEzLCAzMSwgOSwgMiwgMjEzLCAyNywgOSwgMiwgMjEzLCAyNiwgOSwgCi0gICAgMiwgMjEzLCAyMywgOSwgMiwgMjEzLCA5LCA5LCAyLCAyMTMsIDEwLCAyMywgNjMsIDksIDIsIDIxMywgMTAsIDIzLCAyMzEsIAotICAgIDY2LCA5LCAyLCAyMTMsIDMsIDksIDIsIDIxMywgNCwgMjMsIDYzLCA5LCAyLCAyMTMsIDQsIDIzLCAyNDgsIDI1MywgOSwgMiwgCi0gICAgMjEzLCA0LCAyMywgMjQ3LCAxNzEsIDksIDIsIDIxMywgNCwgMjMsIDI0MywgMTc2LCA5LCAyLCAyMTMsIDQsIDIzLCAyMzgsIAotICAgIDIyNCwgOSwgMiwgMjEzLCA0LCAyMywgMjMxLCA4NSwgOSwgMiwgMjEzLCA0LCAyMywgMjMxLCA4NiwgMjM3LCAyMDgsIDksIAotICAgIDIsIDIxMywgNCwgMjMsIDIyOCwgMTc3LCA5LCAyLCAyMTMsIDQsIDIzLCAyMjYsIDIyNCwgOSwgMiwgMjEzLCA0LCAyMywgCi0gICAgMjIzLCAyMzUsIDksIDIsIDIxMywgNCwgMjMsIDIxNSwgOCwgOSwgMiwgMjEyLCAyNTMsIDksIDIsIDIxMiwgMjQ4LCA5LCAyLCAKLSAgICAyMTIsIDI0OSwgMjA5LCAxNDEsIDksIDIsIDIxMiwgMjQ5LCAxMTUsIDIxMiwgMjQ5LCAyNDcsIDE2MSwgMTE1LCAyNDcsIAotICAgIDE2MCwgOSwgMiwgMjEyLCAyNDQsIDksIDIsIDIxMiwgMTk5LCA5LCAyLCAyMTIsIDIwMCwgMTE1LCAyMzAsIDIzOSwgMjEyLCAKLSAgICAxOTksIDksIDIsIDIxMiwgMTk3LCA5LCAyLCAyMTIsIDE5NiwgOSwgMiwgMjEyLCAxNjIsIDksIDIsIDIxMiwgMTYzLCAyMzcsIAotICAgIDIwOCwgOSwgMiwgMjEyLCAxNDksIDksIDIsIDIxMiwgMTQ3LCA5LCAyLCAyMTIsIDE0OCwgMTE1LCAyMTIsIDE0OCwgMjEyLCAKLSAgICAxOTcsIDksIDIsIDIxMiwgMTQwLCA5LCAyLCAyMTIsIDEzOCwgOSwgMiwgMjExLCAxMCwgOSwgMiwgMjExLCAxMSwgMTE1LCAKLSAgICAyMTEsIDEwLCA5LCAyLCAyMTAsIDIzMiwgOSwgMiwgMjEwLCAyMzEsIDksIDIsIDIxMCwgMjI5LCA5LCAyLCAyMTAsIDIyMCwgCi0gICAgOSwgMiwgMjEwLCAyMTksIDksIDIsIDIxMCwgMTkzLCA5LCAyLCAyMTAsIDE5MiwgOSwgMiwgMjEwLCAyMiwgOSwgMiwgMjEwLCAKLSAgICAyMywgMjUwLCA1OSwgOSwgMiwgMjEwLCAyMywgMjMsIDIzNywgMywgOSwgMiwgMjEwLCAyMywgMjMsIDIyNCwgMTU1LCA5LCAKLSAgICAyLCAyMTAsIDIzLCAyMzcsIDIwOCwgOSwgMiwgMjEwLCAxMCwgOSwgMiwgMjEwLCAxMSwgMTE1LCAyMTAsIDExLCAyMjIsIAotICAgIDEwMSwgMTE1LCAyMjIsIDEwMSwgMjQzLCAxNTcsIDExNSwgMjQzLCAxNTYsIDksIDIsIDIxMCwgMTEsIDIxMSwgMTc2LCA5LCAKLSAgICAyLCAyMDksIDI1NSwgOSwgMiwgMTYwLCAyMywgMjQ4LCA4NiwgOSwgMiwgMTYwLCAyMywgMjM3LCAyMTksIDksIDIsIDE2MCwgCi0gICAgMjMsIDIxMywgNDMsIDksIDIsIDE2MCwgMjMsIDIxMiwgMTk5LCA5LCAyLCAxNjAsIDIzLCAyMDcsIDE5NywgOSwgMiwgMTYwLCAKLSAgICAyMywgMjA3LCAyOSwgOSwgMiwgMjA5LCAyNDIsIDksIDIsIDIwOSwgMjE4LCA5LCAyLCAyMDksIDE4NywgOSwgMiwgMjA5LCAKLSAgICAxODgsIDIzNywgMjA4LCA5LCAyLCAyMDksIDIsIDksIDIsIDIwOSwgMywgMjA5LCAxNDEsIDksIDIsIDIwOCwgMjI5LCA5LCAKLSAgICAyLCAyMDgsIDIwNiwgOSwgMiwgMjA4LCAyMDcsIDIzLCAyMDksIDI0MiwgOSwgMiwgMjA4LCAyMDcsIDExNSwgMjA4LCAyMDYsIAotICAgIDksIDIsIDIwOCwgMjA3LCAxMTUsIDIwOCwgMjA3LCAyMzksIDAsIDExNSwgMjM5LCAwLCAyMzgsIDIyNSwgMTE1LCAyMzgsIAotICAgIDIyNCwgOSwgMiwgMjA3LCAyMDMsIDksIDIsIDIwNywgMTk3LCA5LCAyLCAyMDcsIDE5NSwgOSwgMiwgMjA3LCAxOTEsIDksIAotICAgIDIsIDIwNywgMTgxLCA5LCAyLCAyMDcsIDE4MiwgMTE1LCAyMDcsIDE4MiwgMjAyLCAxMTcsIDExNSwgMjAyLCAxMTYsIDksIAotICAgIDIsIDY4LCA5LCAyLCAxMDYsIDIzNywgMjE5LCA5LCAyLCAxMDYsIDEwNiwgNjgsIDksIDIsIDEwNiwgMTE1LCAxMDYsIDIxOSwgCi0gICAgMTY5LCAxMTUsIDIxOSwgMTY5LCAyMzgsIDIyNSwgMTE1LCAyMzgsIDIyNCwgOSwgMiwgMTA2LCAxMTUsIDEwNiwgMjEwLCAKLSAgICAxOTQsIDExNSwgMjEwLCAxOTMsIDksIDIsIDEwNiwgMTE1LCAxMDYsIDEwNiwgMjE2LCA3MywgMTE1LCAxMDYsIDIxNiwgNzIsIAotICAgIDksIDIsIDIwNywgNDAsIDksIDIsIDIwNywgMzUsIDksIDIsIDIwNywgMjksIDksIDIsIDIwNywgMzAsIDIyOCwgMTc3LCA5LCAKLSAgICAyLCAyMDcsIDMwLCAyMywgMjQ5LCAxNSwgOSwgMiwgMjA3LCAzMCwgMjMsIDIyNCwgMTU1LCA5LCAyLCAyMDcsIDMwLCAyMywgCi0gICAgMTA2LCA5MSwgMTA2LCA5MSwgNjgsIDksIDIsIDIwNywgMzAsIDIzLCAxMDYsIDkxLCAxMDYsIDkxLCAxMDYsIDIzNywgMjA4LCAKLSAgICA5LCAyLCAyMDcsIDMwLCAyMzcsIDIwOCwgOSwgMiwgMjA3LCAzMCwgMjEzLCAyNCwgOSwgMiwgMjA3LCAzMCwgMjEzLCAyNSwgCi0gICAgMjMsIDI0OSwgMTUsIDksIDIsIDIwNywgMjUsIDksIDIsIDIwNywgNiwgOSwgMiwgMjA3LCA3LCAyMywgMjI4LCA5NCwgOSwgCi0gICAgMiwgMjA3LCA3LCAyMywgMjI1LCAyMSwgOTEsIDI0NCwgMjEyLCA5LCAyLCAyMDcsIDcsIDIzLCAyMTMsIDg4LCA5LCAyLCAKLSAgICAyMDcsIDcsIDIzLCA2OCwgOSwgMiwgMjA3LCA1LCA5LCAyLCAyMDcsIDEsIDksIDIsIDIwNywgMiwgMjMsIDIyOSwgMjMxLCAKLSAgICA5LCAyLCAyMDcsIDIsIDIzLCAxODUsIDksIDIsIDIwNiwgMjU1LCA5LCAyLCAyMDcsIDAsIDIzNywgMjA4LCA5LCAyLCAyMDYsIAotICAgIDIxMCwgOSwgMiwgMjA2LCAyMTEsIDI0NSwgMTI0LCAyMDYsIDIxMCwgOSwgMiwgMjA2LCAyMTEsIDIxMywgMjQsIDksIDIsIAotICAgIDIwNiwgMjA4LCA5LCAyLCAyMDYsIDIwOSwgMjMsIDM0LCA5MSwgMTUyLCA5LCAyLCAyMDYsIDIwOSwgMjMsIDM0LCA5MSwgCi0gICAgMjAxLCAyMDEsIDksIDIsIDIwNiwgMjA5LCAyMywgMjUxLCAzOSwgOSwgMiwgMjA2LCAyMDksIDIzLCAxNTIsIDksIDIsIAotICAgIDIwNiwgMjA5LCAyMywgMjIxLCA0MCwgOSwgMiwgMjA2LCAyMDksIDIzLCAyMDcsIDQwLCA5LCAyLCAyMDYsIDIwOSwgMjMsIAotICAgIDIwNywgNDEsIDkxLCAyNTAsIDc1LCA5LCAyLCAyMDYsIDIwOSwgMjMsIDIwNywgNDEsIDkxLCAyNDgsIDg2LCA5LCAyLCAKLSAgICAyMDYsIDIwNywgOSwgMiwgMjA2LCAyMDQsIDksIDIsIDIwNiwgMjAzLCA5LCAyLCAyMDYsIDE5OSwgOSwgMiwgMjA2LCAyMDAsIAotICAgIDIzLCA2MywgOSwgMiwgMjA2LCAyMDAsIDIzLCAyNTAsIDY5LCA5LCAyLCAyMDYsIDIwMCwgMjMsIDE0MiwgOSwgMiwgMjA2LCAKLSAgICAyMDAsIDIzLCAyNDIsIDMxLCA5LCAyLCAyMDYsIDIwMCwgMjMsIDIzOSwgOCwgOSwgMiwgMjA2LCAyMDAsIDIzLCAyMzgsIAotICAgIDI0NiwgOSwgMiwgMjA2LCAyMDAsIDIzLCAyMzgsIDIzMywgMjA5LCAxNDEsIDksIDIsIDIwNiwgMjAwLCAyMywgMjM4LCAKLSAgICAyMjQsIDksIDIsIDIwNiwgMjAwLCAyMywgMjM3LCAyMzAsIDksIDIsIDIwNiwgMjAwLCAyMywgMTUyLCA5LCAyLCAyMDYsIAotICAgIDIwMCwgMjMsIDIzMSwgODUsIDksIDIsIDIwNiwgMjAwLCAyMywgMjMxLCA2NiwgOSwgMiwgMjA2LCAyMDAsIDIzLCAyMzAsIAotICAgIDIwOSwgOSwgMiwgMjA2LCAyMDAsIDIzLCAyMjksIDEwMCwgOSwgMiwgMjA2LCAyMDAsIDIzLCAyMjYsIDIyMiwgOSwgMiwgCi0gICAgMjA2LCAyMDAsIDIzLCAyMjQsIDExMCwgOSwgMiwgMjA2LCAyMDAsIDIzLCAxODUsIDksIDIsIDIwNiwgMjAwLCAyMywgMjEzLCAKLSAgICA0MywgOSwgMiwgMjA2LCAyMDAsIDIzLCAyMTIsIDE0NywgOSwgMiwgMjA2LCAyMDAsIDIzLCAyMDcsIDIwMywgOSwgMiwgCi0gICAgMjA2LCAyMDAsIDIzLCAxMDYsIDkxLCAyMzcsIDIxOSwgOSwgMiwgMjA2LCAyMDAsIDIzLCAyMDcsIDI5LCA5LCAyLCAyMDYsIAotICAgIDIwMCwgMjMsIDIwNiwgMTk3LCA5LCAyLCAyMDYsIDE5NywgOSwgMiwgMjA2LCAxOTgsIDIzLCA2OCwgOSwgMiwgMjA2LCAKLSAgICAxODYsIDksIDIsIDIwNiwgMTg3LCAyMywgNjMsIDksIDIsIDIwNiwgMTg3LCAyMywgMjI4LCAyMDksIDksIDIsIDIwNiwgCi0gICAgMTg3LCAyMywgMjI4LCAxODMsIDksIDIsIDIwNiwgMTg3LCAyMywgMjA5LCAyNDIsIDksIDIsIDIwNiwgMTgyLCA5LCAyLCAKLSAgICAyMDYsIDE4NSwgOSwgMiwgMjA2LCAxODMsIDksIDIsIDIwNiwgMTc5LCA5LCAyLCAyMDYsIDE2NywgOSwgMiwgMjA2LCAxNjgsIAotICAgIDIzLCAyMjksIDIzMSwgOSwgMiwgMjA2LCAxNjYsIDksIDIsIDIwMiwgMTE2LCA5LCAyLCAyMDIsIDExNywgMjA5LCAxNDEsIAotICAgIDksIDIsIDIwMiwgMTE3LCAxMDMsIDIzLCAyMjgsIDE4MywgOSwgMiwgMjAyLCAxMTIsIDksIDIsIDIwMiwgMTA1LCA5LCAyLCAKLSAgICAyMDIsIDkxLCA5LCAyLCAyMDIsIDM5LCA5LCAyLCAyMDIsIDQwLCAxMTUsIDIwMiwgMzksIDksIDIsIDIwMiwgMzgsIDksIDIsIAotICAgIDIwMiwgMzYsIDksIDIsIDIwMiwgMzcsIDIzMCwgMzEsIDIwOSwgMTQxLCA5LCAyLCAyMDIsIDMxLCA5LCAyLCAyMDIsIDIyLCAKLSAgICA5LCAyLCAyMDIsIDYsIDksIDIsIDIwMiwgNCwgOSwgMiwgMjAyLCA1LCAyMywgNjMsIDksIDIsIDIwMiwgMywgOSwgMiwgCi0gICAgMjAyLCAyLCA5LCAyLCAyMjksIDI1NCwgMjQxLCAxMTksIDksIDIsIDI1MSwgMjMzLCAyMywgMjIxLCA0MCwgOSwgMiwgMjUxLCAKLSAgICAxNTAsIDIzLCA2MywgOSwgMiwgMjUwLCAyNDQsIDIzLCAyMjgsIDE5OCwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAKLSAgICAyMDcsIDQxLCA5MSwgMjI1LCA3OSwgOSwgMiwgMjQ0LCAyMDIsIDksIDIsIDI0MywgMTU3LCA5MSwgMjEyLCAxOTksIDksIDIsIAotICAgIDI0MiwgNDEsIDIzLCAyMTMsIDQzLCA5LCAyLCAyNDAsIDE4MCwgMjMsIDIzNywgMjE5LCA5LCAyLCAyNDAsIDE4MCwgMjMsIAotICAgIDIxMywgNDMsIDksIDIsIDIzOSwgNywgMjMsIDI1MCwgMjMyLCA5MSwgMjMwLCAxMywgOTEsIDYzLCA5LCAyLCAyMzksIDcsIAotICAgIDIzLCAyNTAsIDczLCA5LCAyLCAyMzgsIDE4OSwgOSwgMiwgMjM4LCA3MSwgOSwgMiwgMjM2LCAzLCA5LCAyLCAyMzAsIDQ0LCAKLSAgICAyMywgMjUwLCAyMDAsIDksIDIsIDIzMCwgNDQsIDIzLCAyNTAsIDcyLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjM4LCA1NSwgOSwgCi0gICAgMiwgMjMwLCA0NCwgMjMsIDIzNywgMjE5LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjM3LCA0LCAyMywgMjUwLCA3MywgOSwgMiwgCi0gICAgMjMwLCA0NCwgMjMsIDIyNiwgMjIyLCA5LCAyLCAyMzAsIDQ0LCAyMywgMTg1LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjEyLCAKLSAgICAxOTIsIDksIDIsIDIzMCwgNDQsIDIzLCAyMDcsIDIwMywgOSwgMiwgMjMwLCA0NCwgMjMsIDIwNiwgMjA4LCA5LCAyLCAyMjgsIAotICAgIDk1LCAyMywgMjM4LCA4MSwgOSwgMiwgMjI2LCAyMzgsIDIxMywgMjUsIDIzLCAyNDksIDE1LCA5LCAyLCAyMjYsIDIzOCwgCi0gICAgMjMsIDI0MSwgNSwgOTEsIDIyOCwgMzAsIDksIDIsIDIyNiwgMjM4LCAyMywgMjEyLCAxOTksIDksIDIsIDIyNCwgMjI3LCA5LCAKLSAgICAyLCAyMjMsIDE5OCwgMjMsIDIwMiwgMTE2LCA5LCAyLCAyMjMsIDEwOCwgOSwgMiwgMjIyLCA2OCwgOSwgMiwgMjIyLCA2NywgCi0gICAgOSwgMiwgMjIyLCA2NiwgMjMsIDI0OCwgMjUzLCA5LCAyLCAyMjIsIDY2LCAyMywgMjM4LCA4MSwgOSwgMiwgMjIxLCA1NywgCi0gICAgMjE1LCAxOTgsIDIyMiwgNTksIDI0NCwgNTQsIDksIDIsIDIxOCwgMjIzLCAyNTAsIDU5LCA5LCAyLCAyMTgsIDExMywgOSwgCi0gICAgMiwgMjE1LCAyMywgMjMsIDIzMSwgODYsIDIzNywgMjA4LCA5LCAyLCAyMDksIDEsIDksIDIsIDIwNywgNywgMjMsIDIyNSwgCi0gICAgMjAsIDksIDIsIDEwNiwgNjgsIDksIDE0MSwgMiwgMTIwLCAyNTAsIDc1LCA5LCAxNDEsIDIsIDEyNiwgMjUwLCA3NSwgOSwgCi0gICAgMTQxLCAyLCAyMzksIDE0NywgMjUwLCA3NSwgOSwgMTQxLCAyLCAyMzksIDIzMywgMjUwLCA3NSwgOSwgMTQxLCAyLCAyMTIsIAotICAgIDg4LCAyNTAsIDc1LCA5LCAxNDEsIDIsIDIxMywgMTEyLCAyNTAsIDc1LCA5LCAxNDEsIDIsIDI0MSwgMTQzLCAyNTAsIDc1LCAKLSAgICA5LCAxNDEsIDIsIDIyMiwgNjQsIDI1MCwgNzUsIDksIDE0MSwgMiwgMTI2LCAyNDMsIDE1NiwgOSwgMTQxLCAyLCAyMzksIAotICAgIDE0NywgMjQzLCAxNTYsIDksIDE0MSwgMiwgMjM5LCAyMzMsIDI0MywgMTU2LCA5LCAxNDEsIDIsIDIxMiwgODgsIDI0MywgCi0gICAgMTU2LCA5LCAxNDEsIDIsIDIxMywgMTEyLCAyNDMsIDE1NiwgOSwgMTQxLCAyLCAyNDEsIDE0MywgMjQzLCAxNTYsIDksIAotICAgIDE0MSwgMiwgMjIyLCA2NCwgMjQzLCAxNTYsIDksIDE0MSwgMiwgMjM5LCAxNDcsIDY4LCA5LCAxNDEsIDIsIDIzOSwgMjMzLCAKLSAgICA2OCwgOSwgMTQxLCAyLCAyMTIsIDg4LCA2OCwgOSwgMTQxLCAyLCAyMTMsIDExMiwgNjgsIDksIDE0MSwgMiwgMjQxLCAxNDMsIAotICAgIDY4LCA5LCAxNDEsIDIsIDIyMiwgNjQsIDY4LCA5LCAxNDEsIDIsIDExOCwgMjM4LCAxNjQsIDksIDE0MSwgMiwgMTIwLCAKLSAgICAyMzgsIDE2NCwgOSwgMTQxLCAyLCAxMjYsIDIzOCwgMTY0LCA5LCAxNDEsIDIsIDIzOSwgMTQ3LCAyMzgsIDE2NCwgOSwgCi0gICAgMTQxLCAyLCAyMzksIDIzMywgMjM4LCAxNjQsIDksIDE0MSwgMiwgMjEyLCA4OCwgMjM4LCAxNjQsIDksIDE0MSwgMiwgMjEzLCAKLSAgICAxMTIsIDIzOCwgMTY0LCA5LCAxNDEsIDIsIDI0MSwgMTQzLCAyMzgsIDE2NCwgOSwgMTQxLCAyLCAyMjIsIDY0LCAyMzgsIAotICAgIDE2NCwgOSwgMTQxLCAyLCAxMTgsIDIzOCwgMTYxLCA5LCAxNDEsIDIsIDEyMCwgMjM4LCAxNjEsIDksIDE0MSwgMiwgMTI2LCAKLSAgICAyMzgsIDE2MSwgOSwgMTQxLCAyLCAyMzksIDE0NywgMjM4LCAxNjEsIDksIDE0MSwgMiwgMjM5LCAyMzMsIDIzOCwgMTYxLCAKLSAgICA5LCAxNDEsIDIsIDEyMCwgMjEzLCA1OSwgOSwgMTQxLCAyLCAxMjYsIDIxMywgNTksIDksIDE0MSwgMiwgMTI2LCAyMTMsIAotICAgIDYwLCAyMDYsIDY5LCAxOCwgOSwgMTQxLCAyLCAyMzksIDE0NywgMjEzLCA1OSwgOSwgMTQxLCAyLCAyMzksIDIzMywgMjEzLCAKLSAgICA1OSwgOSwgMTQxLCAyLCAyMTIsIDg4LCAyMTMsIDU5LCA5LCAxNDEsIDIsIDIxMywgMTEyLCAyMTMsIDU5LCA5LCAxNDEsIDIsIAotICAgIDI0MSwgMTQzLCAyMTMsIDU5LCA5LCAxNDEsIDIsIDIyMiwgNjQsIDIxMywgNTksIDksIDE0MSwgMiwgMTE4LCAyMTMsIDU0LCAKLSAgICA5LCAxNDEsIDIsIDEyMCwgMjEzLCA1NCwgOSwgMTQxLCAyLCAxMjYsIDIxMywgNTQsIDksIDE0MSwgMiwgMTI2LCAyMTMsIAotICAgIDU1LCAyMDYsIDY5LCAxOCwgOSwgMTQxLCAyLCAyMzksIDE0NywgMjEzLCA1NCwgOSwgMTQxLCAyLCAyMzksIDIzMywgMjEzLCAKLSAgICA1NCwgOSwgMTQxLCAyLCAyMTMsIDYwLCAyMywgMjM4LCAyNDcsIDkxLCAyNDMsIDE1NiwgOSwgMTQxLCAyLCAyMTMsIDYwLCAKLSAgICAyMywgMjM4LCAyNDcsIDkxLCAyMjQsIDExMCwgOSwgMTQxLCAyLCAxMTgsIDI0NywgMTU2LCA5LCAxNDEsIDIsIDEyMCwgCi0gICAgMjQ3LCAxNTYsIDksIDE0MSwgMiwgMTI2LCAyNDcsIDE1NiwgOSwgMTQxLCAyLCAxMjYsIDI0NywgMTU3LCAyMDYsIDY5LCAKLSAgICAxOCwgOSwgMTQxLCAyLCAyMzksIDE0NywgMjQ3LCAxNTYsIDksIDE0MSwgMiwgMjM5LCAyMzMsIDI0NywgMTU2LCA5LCAxNDEsIAotICAgIDIsIDEyNiwgMjA2LCA2OSwgMjM5LCAxNTksIDI0MSwgNiwgOSwgMTQxLCAyLCAxMjYsIDIwNiwgNjksIDIzOSwgMTU5LCAKLSAgICAyNDEsIDMsIDksIDE0MSwgMiwgMjM5LCAxNDcsIDIwNiwgNjksIDIzOSwgMTU5LCAyMjcsIDExOCwgOSwgMTQxLCAyLCAyMzksIAotICAgIDE0NywgMjA2LCA2OSwgMjM5LCAxNTksIDIyNywgMTE2LCA5LCAxNDEsIDIsIDIzOSwgMTQ3LCAyMDYsIDY5LCAyMzksIDE1OSwgCi0gICAgMjI3LCAxMTksIDYzLCA5LCAxNDEsIDIsIDIzOSwgMTQ3LCAyMDYsIDY5LCAyMzksIDE1OSwgMjI3LCAxMTksIDI0OSwgMjU1LCAKLSAgICA5LCAxNDEsIDIsIDIxMiwgODgsIDIwNiwgNjksIDIzOSwgMTU5LCAyNTAsIDcxLCA5LCAxNDEsIDIsIDIxMywgMTEyLCAyMDYsIAotICAgIDY5LCAyMzksIDE1OSwgMjMxLCA1OCwgOSwgMTQxLCAyLCAyMTMsIDExMiwgMjA2LCA2OSwgMjM5LCAxNTksIDIzMSwgNjAsIAotICAgIDYzLCA5LCAxNDEsIDIsIDIxMywgMTEyLCAyMDYsIDY5LCAyMzksIDE1OSwgMjMxLCA2MCwgMjQ5LCAyNTUsIDksIDE0MSwgMiwgCi0gICAgMjQxLCAxNDMsIDIwNiwgNjksIDIzOSwgMTU5LCAyMDYsIDE4MSwgOSwgMTQxLCAyLCAyNDEsIDE0MywgMjA2LCA2OSwgMjM5LCAKLSAgICAxNTksIDIwNiwgMTgwLCA5LCAxNDEsIDIsIDIyMiwgNjQsIDIwNiwgNjksIDIzOSwgMTU5LCAyMzEsIDc0LCA5LCAxNDEsIDIsIAotICAgIDIyMiwgNjQsIDIwNiwgNjksIDIzOSwgMTU5LCAyMzEsIDczLCA5LCAxNDEsIDIsIDIyMiwgNjQsIDIwNiwgNjksIDIzOSwgCi0gICAgMTU5LCAyMzEsIDcyLCA5LCAxNDEsIDIsIDIyMiwgNjQsIDIwNiwgNjksIDIzOSwgMTU5LCAyMzEsIDc1LCA2MywgOSwgMTQxLCAKLSAgICAyLCAxMjAsIDI1MCwgNzYsIDIwOSwgMTQxLCA5LCAxNDEsIDIsIDEyNiwgMjUwLCA3NiwgMjA5LCAxNDEsIDksIDE0MSwgMiwgCi0gICAgMjM5LCAxNDcsIDI1MCwgNzYsIDIwOSwgMTQxLCA5LCAxNDEsIDIsIDIzOSwgMjMzLCAyNTAsIDc2LCAyMDksIDE0MSwgOSwgCi0gICAgMTQxLCAyLCAyMTIsIDg4LCAyNTAsIDc2LCAyMDksIDE0MSwgOSwgMTQxLCAyLCAxMTgsIDI0OCwgMjQwLCA5LCAxNDEsIDIsIAotICAgIDEyMCwgMjQ4LCAyNDAsIDksIDE0MSwgMiwgMTI2LCAyNDgsIDI0MCwgOSwgMTQxLCAyLCAyMzksIDE0NywgMjQ4LCAyNDAsIAotICAgIDksIDE0MSwgMiwgMjM5LCAxNDcsIDI0OCwgMjQxLCAyMDYsIDY5LCAxOCwgOSwgMTQxLCAyLCAyMzksIDIzMywgMjQ4LCAKLSAgICAyNDAsIDksIDE0MSwgMiwgMjM5LCAyMzMsIDI0OCwgMjQxLCAyMDYsIDY5LCAxOCwgOSwgMTQxLCAyLCAyMjIsIDc3LCA5LCAKLSAgICAxNDEsIDIsIDIyMiwgNzgsIDksIDE0MSwgMiwgMTE4LCAyNDEsIDIsIDksIDE0MSwgMiwgMTIwLCAyNDEsIDIsIDksIDE0MSwgCi0gICAgMiwgMTE4LCAyMDksIDYxLCAyNDMsIDE1NiwgOSwgMTQxLCAyLCAxMjAsIDIwOSwgNTgsIDI0MywgMTU2LCA5LCAxNDEsIDIsIAotICAgIDIzOSwgMjMzLCAyMTIsIDc3LCAyNDMsIDE1NiwgOSwgMTQxLCAyLCAxMTgsIDIwOSwgNjEsIDIwNiwgNjksIDIzOSwgMTU5LCAKLSAgICA2MywgOSwgMTQxLCAyLCAxMjAsIDIwOSwgNTgsIDIwNiwgNjksIDIzOSwgMTU5LCA2MywgOSwgMTQxLCAyLCAxMTgsIDI0MSwgCi0gICAgMTM5LCAyNTAsIDc1LCA5LCAxNDEsIDIsIDExOCwgMjE3LCA1NiwgMjUwLCA3NSwgOSwgMTQxLCAyLCAzOCwgMjUwLCA2MiwgCi0gICAgMTE4LCAyMTIsIDc4LCA5LCAxNDEsIDIsIDM4LCAyNTAsIDYyLCAxMTgsIDIxNywgNTUsIDksIDE0MSwgMiwgMTE4LCAyMTcsIAotICAgIDU2LCAyMzcsIDIwMiwgOSwgMTQxLCAyLCAxMTgsIDE2MiwgMjM3LCAyMDIsIDksIDE0MSwgMiwgMjQxLCAxMjAsIDExOCwgCi0gICAgMjA5LCA2MCwgOSwgMTQxLCAyLCAyNDEsIDEyMCwgMTIwLCAyMDksIDU3LCA5LCAxNDEsIDIsIDI0MSwgMTIwLCAyMzksIAotICAgIDE1MywgOSwgMTQxLCAyLCAyNDEsIDEyMCwgMjQwLCAxOCwgOSwgMTQxLCAyLCAyMzksIDE0NywgMTA2LCAyMDYsIDY5LCAxOCwgCi0gICAgOSwgMTQxLCAyLCAyMzksIDIzMywgMTA2LCAyMDYsIDY5LCAxOCwgOSwgMTQxLCAyLCAyMTIsIDg4LCAxMDYsIDIwNiwgNjksIAotICAgIDE4LCA5LCAxNDEsIDIsIDIxMywgMTEyLCAxMDYsIDIwNiwgNjksIDE4LCA5LCAxNDEsIDIsIDI0MSwgMTQzLCAxMDYsIDIwNiwgCi0gICAgNjksIDE4LCA5LCAxNDEsIDIsIDIyMiwgNjQsIDEwNiwgMjA2LCA2OSwgMTgsIDksIDIxNywgMTc5LCAyLCAzOCwgMjUwLCAKLSAgICA2MiwgMjAzLCAyMzgsIDI0MywgMTQxLCA5LCAyMTcsIDE3OSwgMiwgODAsIDI0NSwgMjQyLCA5LCAyMTcsIDE3OSwgMiwgCi0gICAgMjQzLCAyMjgsIDI0NSwgMjQyLCA5LCAyMTcsIDE3OSwgMiwgMjQzLCAyMjgsIDIwOCwgODEsIDksIDIxNywgMTc5LCAyLCAKLSAgICAyNDMsIDIyOCwgMjE3LCA2MSwgOSwgMiwgMjUxLCAyMzMsIDIzLCAyMjEsIDQxLCAyMDksIDE0MSwgOSwgMiwgMjUxLCAyMzMsIAotICAgIDIzLCAyMTIsIDE5NywgOSwgMiwgMjUxLCAxMjMsIDIzLCAyNDEsIDQsIDksIDIsIDI0OSwgMTYsIDIzLCAyNDMsIDE1NywgCi0gICAgMjA5LCAxNDEsIDksIDIsIDI0OSwgNCwgMjMsIDI1MSwgMTQ5LCA5LCAyLCAyNDksIDQsIDIzLCAyMjIsIDEwMCwgOSwgMiwgCi0gICAgMjQ5LCA0LCAyMywgMjAyLCAxMTYsIDksIDIsIDI0NywgMTk0LCAxMTUsIDI0NywgMTk0LCAyMywgMjIzLCAxMDksIDksIDIsIAotICAgIDI0NCwgMjEzLCAyMywgMjA5LCAyNDIsIDksIDIsIDI0NCwgMjA0LCAyMywgMjI4LCAxODMsIDksIDIsIDI0MywgMTg5LCAyMywgCi0gICAgMjMxLCA4NSwgOSwgMiwgMjQzLCAxODksIDIzLCAxMDYsIDEwNiwgNjgsIDksIDIsIDI0MywgMTg3LCAyMywgMjA3LCAyOSwgCi0gICAgOSwgMiwgMjQyLCAzOCwgMjMsIDI1MCwgMjAwLCA5LCAyLCAyNDIsIDM4LCAyMywgMjUwLCA3NSwgOSwgMiwgMjQyLCAzOCwgCi0gICAgMjMsIDI1MCwgNzYsIDI1MCwgNTAsIDIyNywgMjIyLCA5LCAyLCAyNDIsIDM4LCAyMywgMjQzLCAxNzYsIDksIDIsIDI0MiwgCi0gICAgMzgsIDIzLCAyNDIsIDMxLCA5LCAyLCAyNDIsIDM4LCAyMywgMjQxLCAyMiwgOSwgMiwgMjQyLCAzOCwgMjMsIDIzOSwgOCwgCi0gICAgOSwgMiwgMjQyLCAzOCwgMjMsIDIzOCwgODEsIDksIDIsIDI0MiwgMzgsIDIzLCAyMzgsIDY0LCAyMzcsIDIwOCwgOSwgMiwgCi0gICAgMjQyLCAzOCwgMjMsIDIzOCwgNTUsIDksIDIsIDI0MiwgMzgsIDIzLCAxNTIsIDksIDIsIDI0MiwgMzgsIDIzLCAyMzcsIDMsIAotICAgIDksIDIsIDI0MiwgMzgsIDIzLCAyMzEsIDg2LCAyMzcsIDIwOCwgOSwgMiwgMjQyLCAzOCwgMjMsIDIyOSwgMjMxLCA5LCAyLCAKLSAgICAyNDIsIDM4LCAyMywgMjI4LCAxODMsIDksIDIsIDI0MiwgMzgsIDIzLCAyMjgsIDE3NywgOSwgMiwgMjQyLCAzOCwgMjMsIAotICAgIDIyOCwgMTc4LCA5MSwgMjI5LCAyMzEsIDksIDIsIDI0MiwgMzgsIDIzLCAyMjgsIDgyLCA5LCAyLCAyNDIsIDM4LCAyMywgCi0gICAgMjI4LCAyOCwgOSwgMiwgMjQyLCAzOCwgMjMsIDIyOCwgMjksIDIzLCAyMjgsIDE4MywgOSwgMiwgMjQyLCAzOCwgMjMsIAotICAgIDIyNiwgMjI4LCA5MSwgMjM4LCA1NSwgOSwgMiwgMjQyLCAzOCwgMjMsIDIyNSwgNzksIDksIDIsIDI0MiwgMzgsIDIzLCAKLSAgICAyMjQsIDIyOCwgOSwgMiwgMjQyLCAzOCwgMjMsIDIyNCwgMTU1LCA5LCAyLCAyNDIsIDM4LCAyMywgMjIyLCAxMDAsIDksIDIsIAotICAgIDI0MiwgMzgsIDIzLCAyMTgsIDE2NywgOSwgMiwgMjQyLCAzOCwgMjMsIDIxMywgNDMsIDksIDIsIDI0MiwgMzgsIDIzLCAKLSAgICAyMTIsIDE2MywgMjM3LCAyMDgsIDksIDIsIDI0MSwgMTkxLCAyMywgMjI4LCAxODMsIDksIDIsIDI0MSwgMTkxLCAyMywgCi0gICAgMjE5LCA5NiwgOSwgMiwgMjQxLCAyMywgMjAzLCAxOTYsIDksIDIsIDI0MSwgNSwgMjQ1LCAxMjQsIDI0MSwgNCwgOSwgMiwgCi0gICAgMjQwLCAxODAsIDIxMywgMjUsIDIzLCAyNTAsIDc1LCA5LCAyLCAyNDAsIDE4MCwgMjEzLCAyNSwgMjMsIDIzNywgMywgOSwgCi0gICAgMiwgMjQwLCAxODAsIDIxMywgMjUsIDIzLCAyMzEsIDg2LCAyMzcsIDIwOCwgOSwgMiwgMjQwLCAxODAsIDIxMywgMjUsIDIzLCAKLSAgICAyMjgsIDExMywgOSwgMiwgMjQwLCAxODAsIDIxMywgMjUsIDIzLCAyMjgsIDMwLCA5LCAyLCAyNDAsIDE4MCwgMjEzLCAyNSwgCi0gICAgMjMsIDIyNSwgMjAsIDksIDIsIDI0MCwgMTgwLCAyMTMsIDI1LCAyMywgMjI0LCAyMjgsIDksIDIsIDI0MCwgMTgwLCAyMTMsIAotICAgIDI1LCAyMywgMjExLCAxMCwgOSwgMiwgMjQwLCAxODAsIDIzLCAyMTEsIDEwLCA5LCAyLCAyMzksIDcsIDIzLCAyNDksIDMsIAotICAgIDksIDIsIDIzOSwgNywgMjMsIDI0MywgMTg5LCAyMzcsIDIwOCwgOSwgMiwgMjM5LCA3LCAyMywgMjQyLCAzOCwgMjMsIDIzMSwgCi0gICAgODYsIDIzNywgMjA4LCA5LCAyLCAyMzksIDcsIDIzLCAyNDIsIDM4LCAyMywgMjI5LCAyMzEsIDksIDIsIDIzOSwgNywgMjMsIAotICAgIDI0MSwgMjUsIDksIDIsIDIzOSwgNywgMjMsIDIzOSwgOCwgOSwgMiwgMjM5LCA3LCAyMywgMjM4LCAyMjUsIDkxLCAyNDMsIAotICAgIDIzMywgOSwgMiwgMjM5LCA3LCAyMywgMjM4LCAyMjUsIDkxLCAyMjIsIDI0MCwgOSwgMiwgMjM5LCA3LCAyMywgMjM3LCAKLSAgICAxNjAsIDkxLCA2MywgOSwgMiwgMjM5LCA3LCAyMywgMjI4LCAxNzgsIDkxLCAyMjksIDIzMSwgOSwgMiwgMjM5LCA3LCAyMywgCi0gICAgMjI4LCAyOCwgOSwgMiwgMjM5LCA3LCAyMywgMjI4LCAyOSwgMjMsIDIyOCwgMTgzLCA5LCAyLCAyMzksIDcsIDIzLCAyMjYsIAotICAgIDIyNywgOSwgMiwgMjM5LCA3LCAyMywgMjIzLCAxOTksIDksIDIsIDIzOSwgNywgMjMsIDIyMiwgMjQwLCA5LCAyLCAyMzksIAotICAgIDcsIDIzLCAyMjIsIDI0MSwgOTEsIDI0MSwgMTkwLCA5LCAyLCAyMzksIDcsIDIzLCAyMjIsIDI0MSwgOTEsIDIzOCwgODEsIAotICAgIDksIDIsIDIzOSwgNywgMjMsIDIxMywgMywgOSwgMiwgMjM5LCA3LCAyMywgMjAyLCAyMiwgOSwgMiwgMjM5LCAyLCAyMTUsIAotICAgIDE5OCwgMjIyLCA1OSwgMjQ0LCA1NCwgOSwgMiwgMjM4LCAxNjMsIDIzLCA2OCwgOSwgMiwgMjM4LCA1NiwgMjMsIDIzOCwgCi0gICAgNTYsIDI0NSwgMTI0LCAyMzgsIDU1LCA5LCAyLCAyMzcsIDIyOSwgMjMsIDIzMSwgODYsIDIzNywgMjA4LCA5LCAyLCAyMzcsIAotICAgIDIyMCwgOTEsIDIzOCwgNTYsIDIzLCAyMDksIDI0MiwgOSwgMiwgMjM3LCAxNjAsIDIwOSwgMTQyLCAyMzcsIDIwOCwgOSwgMiwgCi0gICAgMjM3LCA0LCAyMywgMjUwLCA3NiwgMTE1LCAyMzcsIDQsIDIzLCAyNTAsIDc1LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjQ3LCAKLSAgICAxOTMsIDksIDIsIDIzMCwgNDQsIDIzLCAxNzMsIDksIDIsIDIzMCwgNDQsIDIzLCAxMDYsIDEwNiwgNjgsIDksIDIsIDIzMCwgCi0gICAgNDQsIDIzLCAyMDYsIDIxMCwgOSwgMiwgMjI4LCA5NSwgMjMsIDIwMiwgNywgMTE1LCAyMDIsIDYsIDksIDIsIDIyOCwgODMsIAotICAgIDksIDIsIDIyOCwgODEsIDksIDIsIDIyOCwgODAsIDksIDIsIDIyOCwgNzksIDksIDIsIDIyOCwgNzgsIDksIDIsIDIyOCwgCi0gICAgNzcsIDksIDIsIDIyOCwgNzYsIDksIDIsIDIyOCwgNzUsIDExNSwgMjI4LCA3NSwgMjM3LCAyMDgsIDksIDIsIDIyOCwgNzQsIAotICAgIDksIDIsIDIyOCwgNzMsIDExNSwgMjI4LCA3MiwgOSwgMiwgMjI4LCA3MSwgOSwgMiwgMjI4LCA3MCwgOSwgMiwgMjI4LCA2OSwgCi0gICAgOSwgMiwgMjI4LCA2OCwgOSwgMiwgMjI4LCA2NywgOSwgMiwgMjI4LCA2NiwgOSwgMiwgMjI4LCA2NSwgOSwgMiwgMjI4LCAKLSAgICA2NCwgOSwgMiwgMjI4LCA2MywgOSwgMiwgMjI4LCA2MiwgOSwgMiwgMjI4LCA2MSwgOSwgMiwgMjI4LCA2MCwgOSwgMiwgCi0gICAgMjI4LCA1OSwgOSwgMiwgMjI4LCA1OCwgOSwgMiwgMjI4LCA1NywgOSwgMiwgMjI4LCA1NiwgOSwgMiwgMjI4LCA1NSwgOSwgCi0gICAgMiwgMjI4LCA1NCwgOSwgMiwgMjI4LCA1MiwgOSwgMiwgMjI4LCA1MywgMjMsIDIzNywgMjMwLCA5LCAyLCAyMjgsIDUzLCAKLSAgICAyMywgMjMxLCA4NSwgOSwgMiwgMjI4LCA1MywgMjMsIDIxOSwgOTcsIDkxLCAyMjYsIDIzNiwgOSwgMiwgMjI4LCA1MywgMjMsIAotICAgIDIxOSwgOTcsIDkxLCAyMTksIDk3LCA5MSwgMjI2LCAyMzYsIDksIDIsIDIyOCwgNTMsIDIzLCAyMDcsIDQxLCA5MSwgMjQ5LCAKLSAgICAzMiwgOSwgMiwgMjI4LCA1MSwgOSwgMiwgMjI4LCA1MCwgOSwgMiwgMjI4LCA0OSwgOSwgMiwgMjI4LCA0OCwgOSwgMiwgCi0gICAgMjI4LCA0NywgOSwgMiwgMjI4LCA0NiwgOSwgMiwgMjI4LCA0NSwgOSwgMiwgMjI4LCA0NCwgOSwgMiwgMjI4LCA0MywgOSwgCi0gICAgMiwgMjI4LCA0MiwgOSwgMiwgMjI4LCA0MCwgOSwgMiwgMjI4LCA0MSwgMjMsIDI1MCwgNzUsIDksIDIsIDIyOCwgNDEsIDIzLCAKLSAgICAyNDksIDE1LCA5LCAyLCAyMjgsIDQxLCAyMywgMjQyLCAzMCwgMjM3LCAyMDksIDIzNywgMjA4LCA5LCAyLCAyMjgsIDQxLCAKLSAgICAyMywgMjI4LCAyMDcsIDksIDIsIDIyOCwgNDEsIDIzLCAyMjgsIDExMywgOSwgMiwgMjI4LCA0MSwgMjMsIDIwOSwgMjE4LCAKLSAgICA5LCAyLCAyMjgsIDQxLCAyMywgMjA5LCAxODcsIDksIDIsIDIyOCwgNDEsIDIzLCAyMDcsIDQwLCA5LCAyLCAyMjgsIDQxLCAKLSAgICAyMywgMjA3LCAyOSwgOSwgMiwgMjI4LCA0MSwgMjMsIDIwNiwgMTk3LCA5LCAyLCAyMjgsIDM5LCA5LCAyLCAyMjgsIDM3LCAKLSAgICA5LCAyLCAyMjgsIDM4LCAyMywgMjQyLCA0MCwgOSwgMiwgMjI4LCAzOCwgMjMsIDIzOSwgOCwgOSwgMiwgMjI4LCAzOCwgMjMsIAotICAgIDIzMSwgODUsIDksIDIsIDIyOCwgMzgsIDIzLCAyMzEsIDg2LCAyMzcsIDIwOCwgOSwgMiwgMjI4LCAzOCwgMjMsIDIyMiwgCi0gICAgMTAwLCA5LCAyLCAyMjgsIDM4LCAyMywgMjE5LCA5NywgOTEsIDIxOSwgOTcsIDkxLCAyMjYsIDIzNiwgOSwgMiwgMjI4LCAKLSAgICAzOCwgMjMsIDIxMywgMjgsIDkxLCAyMjksIDEwMCwgOSwgMiwgMjI4LCAzOCwgMjMsIDIwNywgMjksIDksIDIsIDIyOCwgMzgsIAotICAgIDIzLCAyMDYsIDE5NywgOSwgMiwgMjI4LCAzNSwgOSwgMiwgMjI4LCAzNCwgOSwgMiwgMjI2LCAyMzgsIDIzNywgMjA5LCAyMywgCi0gICAgMjUwLCA3NSwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyNDMsIDE1NiwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyMzcsIDE0MCwgOSwgCi0gICAgMiwgMjI2LCAyMzgsIDIzLCAyMTksIDk2LCA5LCAyLCAyMjYsIDIzOCwgMjMsIDIxOSwgOTcsIDkxLCAyMTksIDk3LCA5MSwgCi0gICAgMjI2LCAyMzYsIDksIDIsIDIyNiwgMjM4LCAyMywgMjA5LCAyNDIsIDksIDIsIDIyNCwgMTU2LCA5MSwgMjAyLCAxMTUsIDksIAotICAgIDIsIDIyMywgMjAwLCAxMTUsIDIyMywgMjAwLCAyMywgMjM5LCA4LCA5LCAyLCAyMjMsIDIwMCwgMTE1LCAyMjMsIDIwMCwgCi0gICAgMjMsIDIzMCwgMTIsIDksIDIsIDIyMiwgNjYsIDIzLCAyNDMsIDE4OSwgMjM3LCAyMDgsIDksIDIsIDIyMiwgNjYsIDIzLCAKLSAgICAyMzgsIDU1LCA5LCAyLCAyMjIsIDY2LCAyMywgMjM3LCAyMTIsIDksIDIsIDIyMiwgNjYsIDIzLCAyMzcsIDMsIDksIDIsIAotICAgIDIyMiwgNjYsIDIzLCAyMjksIDE3MSwgOSwgMiwgMjIyLCA2NiwgMjMsIDIyOCwgNzgsIDksIDIsIDIyMiwgNjYsIDIzLCAKLSAgICAyMjUsIDc5LCA5LCAyLCAyMjIsIDY2LCAyMywgMjE5LCA5NywgOTEsIDIxOSwgOTYsIDksIDIsIDIyMiwgNjYsIDIzLCA2OCwgCi0gICAgOSwgMiwgMjIyLCA2NiwgMjMsIDEwNiwgOTEsIDY4LCA5LCAyLCAyMjIsIDY2LCAyMywgMjA2LCAxOTcsIDksIDIsIDIxNSwgCi0gICAgMjMsIDIzNywgMjA5LCAyMywgMTUyLCA5LCAyLCAyMTUsIDIzLCAyMywgMjQxLCA5MiwgOSwgMiwgMjE1LCAyMywgMjMsIAotICAgIDIxMywgNDQsIDI1MCwgNTAsIDIyNywgMjIyLCA5LCAyLCAyMTUsIDIzLCAyMywgMjA5LCAyNDIsIDksIDIsIDIxMywgODcsIAotICAgIDIwOSwgMTQxLCA5LCAyLCAyMTMsIDQ0LCAxMTUsIDIxMywgNDMsIDksIDIsIDIxMywgNDQsIDkxLCAyMzYsIDIxLCA5LCAyLCAKLSAgICAyMTMsIDQ0LCA5MSwgMjIzLCA4NiwgOSwgMiwgMjEzLCA0NCwgOTEsIDIxNCwgMjMwLCA5LCAyLCAyMTIsIDE5OCwgOTEsIAotICAgIDI0MiwgMzgsIDIzLCAyMjIsIDEwMCwgOSwgMiwgMjEyLCAxOTgsIDkxLCAyNDEsIDE5MSwgMjMsIDI1MCwgMjMxLCA5LCAyLCAKLSAgICAyMTIsIDE2MywgMjMsIDIwOSwgMjQyLCA5LCAyLCAyMDksIDI0MywgOTEsIDIxNSwgMjIsIDksIDIsIDIwNywgMTkyLCAyMywgCi0gICAgMjM4LCAyMzMsIDIwOSwgMTQxLCA5LCAyLCAyMDcsIDE5MiwgMjMsIDEyNiwgMjQzLCAxNTYsIDksIDIsIDIwNiwgMjA5LCAKLSAgICAyMzAsIDIzOCwgOSwgMiwgMjA2LCAyMDksIDIzLCAyMDcsIDI5LCA5LCAyLCAyMDYsIDIwMCwgMjMsIDI0NCwgMTUzLCA5LCAKLSAgICAyLCAyMDYsIDIwMCwgMjMsIDIyOCwgMzYsIDksIDIsIDIwNiwgMjAwLCAyMywgMjI2LCAyMzYsIDksIDIsIDIwMiwgMTE1LCAKLSAgICA5LCAyLCAyMDIsIDcsIDExNSwgMjAyLCA3LCA5MSwgMjE0LCAyMzAsIDksIDIsIDIwMiwgNSwgMjMsIDEyNiwgMjQzLCAxNTcsIAotICAgIDIwOSwgMTQxLCAxNCwgNywgMjU1LCAxOCwgMTQsIDcsIDI1NSwgMTcsIDE0LCA3LCAyNTUsIDE2LCAxNCwgNywgMjU1LCAxNSwgCi0gICAgMTQsIDcsIDI1NSwgMTQsIDE0LCA3LCAyNTUsIDEzLCAxNCwgNywgMjU1LCAxMiwgMTQsIDcsIDI1NSwgMTEsIDE0LCA3LCAKLSAgICAyNTUsIDEwLCAxNCwgNywgMjU1LCA5LCAxNCwgNywgMjU1LCA4LCAxNCwgNywgMjU1LCA3LCAxNCwgNywgMjU1LCA2LCAxNCwgCi0gICAgNywgMjU1LCA0LCAxNCwgNywgMjU1LCAzLCAxNCwgNywgMjU1LCAyLCAxNCwgNywgMjU1LCAxLCAxNCwgNywgMjU1LCAwLCAKLSAgICAxNCwgNywgMjU0LCAyNTUsIDE0LCA3LCAyNTQsIDI1NCwgMTQsIDcsIDI1NCwgMjUzLCAxNCwgNywgMjU0LCAyNTIsIDE0LCAKLSAgICA3LCAyNTQsIDI1MSwgMTQsIDcsIDI1NCwgMjUwLCAxNCwgNywgMjU0LCAyNDksIDE0LCA3LCAyNTQsIDI0OCwgMTQsIDcsIAotICAgIDI1NCwgMjQ3LCAxNCwgNywgMjU0LCAyNDYsIDE0LCA3LCAyNTQsIDI0NSwgMTQsIDcsIDI1NCwgMjQ0LCAxNCwgNywgMjU0LCAKLSAgICAyNDMsIDE0LCA3LCAyNTQsIDI0MSwgMTQsIDcsIDI1NCwgMjQwLCAxNCwgNywgMjU0LCAyMzgsIDE0LCA3LCAyNTQsIDIzNywgCi0gICAgMTQsIDcsIDI1NCwgMjM2LCAxNCwgNywgMjU0LCAyMzUsIDE0LCA3LCAyNTQsIDIzNCwgMTQsIDcsIDI1NCwgMjMzLCAxNCwgCi0gICAgNywgMjU0LCAyMzIsIDE0LCA3LCAyNTQsIDIzMSwgMTQsIDcsIDI1NCwgMjMwLCAxNCwgNywgMjU0LCAyMjksIDE0LCA3LCAKLSAgICAyNTQsIDIyOCwgMTQsIDcsIDI1NCwgMjI3LCAxNCwgNywgMjU0LCAyMjUsIDE0LCA3LCAyNTQsIDIyNCwgMTQsIDcsIDI1NCwgCi0gICAgMjIzLCAxNCwgNywgMjU0LCAyMjEsIDE0LCA3LCAyNTQsIDIyMCwgMTQsIDcsIDI1NCwgMjE5LCAxNCwgNywgMjU0LCAyMTgsIAotICAgIDE0LCA3LCAyNTQsIDIxNywgMTQsIDcsIDI1NCwgMjE2LCAxNCwgNywgMjU0LCAyMTUsIDE0LCA3LCAyNTQsIDIxNCwgMTQsIAotICAgIDcsIDI1NCwgMjExLCAxNCwgNywgMjU0LCAyMTAsIDE0LCA3LCAyNTQsIDIwOSwgMTQsIDcsIDI1NCwgMjA4LCAxNCwgNywgCi0gICAgMjU0LCAyMDcsIDE0LCA3LCAyNTQsIDIwNiwgMTQsIDcsIDI1NCwgMjA1LCAxNCwgNywgMjU0LCAyMDQsIDE0LCA3LCAyNTQsIAotICAgIDIwMywgMTQsIDcsIDI1NCwgMjAyLCAxNCwgNywgMjU0LCAyMDEsIDE0LCA3LCAyNTQsIDIwMCwgMTQsIDcsIDI1NCwgMTk5LCAKLSAgICAxNCwgNywgMjU0LCAxOTgsIDE0LCA3LCAyNTQsIDE5NywgMTQsIDcsIDI1NCwgMTk2LCAxNCwgNywgMjU0LCAxOTUsIDE0LCAKLSAgICA3LCAyNTQsIDE5NCwgMTQsIDcsIDI1NCwgMTkzLCAxNCwgNywgMjU0LCAxOTIsIDE0LCA3LCAyNTQsIDE4OCwgMTQsIDcsIAotICAgIDI1NCwgMTg3LCAxNCwgNywgMjU0LCAxODYsIDE0LCA3LCAyNTQsIDE4NSwgMTQsIDcsIDI0OSwgMjUzLCAxNCwgNywgMjQ5LCAKLSAgICAyNTEsIDE0LCA3LCAyNDksIDI0OSwgMTQsIDcsIDI0OSwgMjQ3LCAxNCwgNywgMjQ5LCAyNDUsIDE0LCA3LCAyNDksIDI0NCwgCi0gICAgMTQsIDcsIDI0OSwgMjQyLCAxNCwgNywgMjQ5LCAyNDAsIDE0LCA3LCAyNDksIDIzOCwgMTQsIDcsIDI0OSwgMjM2LCAxNCwgCi0gICAgNywgMjQ3LCAxMjEsIDE0LCA3LCAyNDcsIDEyMCwgMTQsIDcsIDI0NywgMTE5LCAxNCwgNywgMjQ3LCAxMTgsIDE0LCA3LCAKLSAgICAyNDcsIDExNywgMTQsIDcsIDI0NywgMTE2LCAxNCwgNywgMjQ3LCAxMTUsIDE0LCA3LCAyNDcsIDExNCwgMTQsIDcsIDI0NywgCi0gICAgMTEzLCAxNCwgNywgMjQ3LCAxMTIsIDE0LCA3LCAyNDcsIDExMSwgMTQsIDcsIDI0NywgMTEwLCAxNCwgNywgMjQ3LCAxMDksIAotICAgIDE0LCA3LCAyNDcsIDEwOCwgMTQsIDcsIDI0NywgMTA3LCAxNCwgNywgMjQ3LCAxMDYsIDE0LCA3LCAyNDcsIDEwNSwgMTQsIAotICAgIDcsIDI0NywgMTA0LCAxNCwgNywgMjQ3LCAxMDMsIDE0LCA3LCAyNDcsIDEwMiwgMTQsIDcsIDI0NywgMTAxLCAxNCwgNywgCi0gICAgMjQ3LCAxMDAsIDE0LCA3LCAyNDcsIDk5LCAxNCwgNywgMjQ3LCA5OCwgMTQsIDcsIDI0NywgOTcsIDE0LCA3LCAyNDcsIDk2LCAKLSAgICAxNCwgNywgMjQ3LCA5NSwgMTQsIDcsIDI0NywgOTQsIDE0LCA3LCAyNDUsIDUwLCAxNCwgNywgMjQ1LCA0OSwgMTQsIDcsIAotICAgIDI0NSwgNDgsIDE0LCA3LCAyNDUsIDQ3LCAxNCwgNywgMjQ1LCA0NiwgMTQsIDcsIDI0NSwgNDUsIDE0LCA3LCAyNDUsIDQ0LCAKLSAgICAxNCwgNywgMjQ1LCA0MywgMTQsIDcsIDI0NSwgNDIsIDE0LCA3LCAyNDUsIDQxLCAxNCwgNywgMjQ1LCA0MCwgMTQsIDcsIAotICAgIDI0NSwgMzksIDE0LCA3LCAyNDUsIDM4LCAxNCwgNywgMjQ1LCAzNywgMTQsIDcsIDI0NSwgMzYsIDE0LCA3LCAyNDUsIDM1LCAKLSAgICAxNCwgNywgMjQ1LCAzNCwgMTQsIDcsIDI0NSwgMzMsIDE0LCA3LCAyNDUsIDMyLCAxNCwgNywgMjQ1LCAzMSwgMTQsIDcsIAotICAgIDI0NSwgMzAsIDE0LCA3LCAyNDUsIDI5LCAxNCwgNywgMjQ1LCAyOCwgMTQsIDcsIDI0NSwgMjcsIDE0LCA3LCAyNDUsIDI2LCAKLSAgICAxNCwgNywgMjQ1LCAyNSwgMTQsIDcsIDI0NSwgMjQsIDE0LCA3LCAyNDUsIDIzLCAxNCwgNywgMjQ1LCAyMiwgMTQsIDcsIAotICAgIDI0NSwgMjEsIDE0LCA3LCAyNDUsIDIwLCAxNCwgNywgMjQ1LCAxOSwgMTQsIDcsIDI0NSwgMTgsIDE0LCA3LCAyNDUsIDE3LCAKLSAgICAxNCwgNywgMjQ1LCAxNiwgMTQsIDcsIDI0NSwgMTUsIDE0LCA3LCAyNDUsIDE0LCAxNCwgNywgMjQ1LCAxMywgMTQsIDcsIAotICAgIDI0NSwgMTIsIDE0LCA3LCAyNDUsIDExLCAxNCwgNywgMjQ1LCAxMCwgMTQsIDcsIDI0NSwgOSwgMTQsIDcsIDI0NSwgOCwgCi0gICAgMTQsIDcsIDI0NSwgNywgMTQsIDcsIDI0NSwgNiwgMTQsIDcsIDI0NSwgNSwgMTQsIDcsIDI0NSwgNCwgMTQsIDcsIDI0NSwgCi0gICAgMywgMTQsIDcsIDI0NSwgMiwgMTQsIDcsIDI0NSwgMSwgMTQsIDcsIDI0NSwgMCwgMTQsIDcsIDI0NCwgMjU1LCAxNCwgNywgCi0gICAgMjQ0LCAyNTQsIDE0LCA3LCAyNDQsIDI1MywgMTQsIDcsIDI0NCwgMjUyLCAxNCwgNywgMjQ0LCAyNTEsIDE0LCA3LCAyNDQsIAotICAgIDI1MCwgMTQsIDcsIDI0NCwgMjQ5LCAxNCwgNywgMjQ0LCAyNDgsIDE0LCA3LCAyNDQsIDI0NywgMTQsIDcsIDI0NCwgMjQ2LCAKLSAgICAxNCwgNywgMjQ0LCAyNDUsIDE0LCA3LCAyNDQsIDI0NCwgMTQsIDcsIDI0NCwgMjQzLCAxNCwgNywgMjQ0LCAyNDIsIDE0LCAKLSAgICA3LCAyNDQsIDI0MSwgMTQsIDcsIDI0NCwgMjQwLCAxNCwgNywgMjQ0LCAyMzksIDE0LCA3LCAyNDQsIDIzOCwgMTQsIDcsIAotICAgIDI0NCwgMjM3LCAxNCwgNywgMjQ0LCAyMzYsIDE0LCA3LCAyNDQsIDIzNSwgMTQsIDcsIDI0NCwgMjM0LCAxNCwgNywgMjQ0LCAKLSAgICAyMzMsIDE0LCA3LCAyNDQsIDIzMiwgMTQsIDcsIDI0NCwgMjMxLCAxNCwgNywgMjQ0LCAyMzAsIDE0LCA3LCAyNDQsIDIyOSwgCi0gICAgMTQsIDcsIDI0NCwgMjI4LCAxNCwgNywgMjQ0LCAyMjcsIDE0LCA3LCAyNDQsIDIyNiwgMTQsIDcsIDI0NCwgMjI1LCAxNCwgCi0gICAgNywgMjQ0LCAyMjQsIDE0LCA3LCAyNDQsIDIyMywgMTQsIDcsIDI0NCwgMjIyLCAxNCwgNywgMjQ0LCAyMjEsIDE0LCA3LCAKLSAgICAyNDQsIDIyMCwgMTQsIDcsIDI0NCwgMjE5LCAxNCwgNywgMjQ0LCAyMTgsIDE0LCA3LCAyNDQsIDIxNywgMTQsIDcsIDI0NCwgCi0gICAgMjE2LCAxNCwgNywgMjQ0LCAyMTUsIDE0LCA3LCAyNDEsIDIzNSwgMTQsIDcsIDI0MSwgMjM0LCAxNCwgNywgMjQxLCAyMzMsIAotICAgIDE0LCA3LCAyNDEsIDIzMiwgMTQsIDcsIDI0MSwgMjMxLCAxNCwgNywgMjQxLCAyMzAsIDE0LCA3LCAyNDEsIDIyOSwgMTQsIAotICAgIDcsIDI0MSwgMjI4LCAxNCwgNywgMjQxLCAyMjcsIDE0LCA3LCAyNDEsIDIyNiwgMTQsIDcsIDI0MSwgMjI1LCAxNCwgNywgCi0gICAgMjQxLCAyMjQsIDE0LCA3LCAyNDEsIDIyMywgMTQsIDcsIDI0MSwgMjIyLCAxNCwgNywgMjQxLCAyMjEsIDE0LCA3LCAyNDEsIAotICAgIDIyMCwgMTQsIDcsIDI0MSwgMjE5LCAxNCwgNywgMjQxLCAyMTgsIDE0LCA3LCAyNDEsIDIxNywgMTQsIDcsIDI0MSwgMjE2LCAKLSAgICAxNCwgNywgMjQxLCAyMTUsIDE0LCA3LCAyNDEsIDIxNCwgMTQsIDcsIDI0MSwgMjEzLCAxNCwgNywgMjQxLCAyMTIsIDE0LCAKLSAgICA3LCAyNDEsIDIxMSwgMTQsIDcsIDI0MSwgMjEwLCAxNCwgNywgMjQxLCAyMDksIDE0LCA3LCAyNDEsIDIwOCwgMTQsIDcsIAotICAgIDI0MSwgMjA3LCAxNCwgNywgMjQxLCAyMDYsIDE0LCA3LCAyNDEsIDIwNSwgMTQsIDcsIDI0MSwgMjA0LCAxNCwgNywgMjQxLCAKLSAgICAyMDMsIDE0LCA3LCAyNDEsIDIwMiwgMTQsIDcsIDI0MSwgMjAxLCAxNCwgNywgMjQxLCAyMDAsIDE0LCA3LCAyNDEsIDE5OSwgCi0gICAgMTQsIDcsIDI0MSwgMTk4LCAxNCwgNywgMjQxLCAxOTcsIDE0LCA3LCAyNDEsIDE5NiwgMTQsIDcsIDI0MSwgMTk1LCAxNCwgCi0gICAgNywgMjQxLCAxOTQsIDE0LCA3LCAyNDEsIDE5MywgMTQsIDcsIDI0MSwgMTkyLCAxNCwgNywgMjQwLCAxNzMsIDE0LCA3LCAKLSAgICAyNDAsIDE3MiwgMTQsIDcsIDI0MCwgMTcxLCAxNCwgNywgMjQwLCAxNzAsIDE0LCA3LCAyNDAsIDE2OSwgMTQsIDcsIDI0MCwgCi0gICAgMTY4LCAxNCwgNywgMjQwLCAxNjcsIDE0LCA3LCAyNDAsIDE2NiwgMTQsIDcsIDI0MCwgMTY1LCAxNCwgNywgMjQwLCAxNjQsIAotICAgIDE0LCA3LCAyNDAsIDE2MywgMTQsIDcsIDI0MCwgMTYyLCAxNCwgNywgMjQwLCAxNjEsIDE0LCA3LCAyNDAsIDE2MCwgMTQsIAotICAgIDcsIDI0MCwgMTU5LCAxNCwgNywgMjQwLCAxNTgsIDE0LCA3LCAyNDAsIDE1NywgMTQsIDcsIDI0MCwgMTU2LCAxNCwgNywgCi0gICAgMjQwLCAxNTUsIDE0LCA3LCAyNDAsIDE1NCwgMTQsIDcsIDI0MCwgMTUzLCAxNCwgNywgMjQwLCAxNTIsIDE0LCA3LCAyNDAsIAotICAgIDE1MSwgMTQsIDcsIDI0MCwgMTUwLCAxNCwgNywgMjQwLCAxNDksIDE0LCA3LCAyNDAsIDE0OCwgMTQsIDcsIDI0MCwgMTQ3LCAKLSAgICAxNCwgNywgMjQwLCAxNDYsIDE0LCA3LCAyNDAsIDE0NSwgMTQsIDcsIDI0MCwgMTQ0LCAxNCwgNywgMjQwLCAxNDMsIDE0LCAKLSAgICA3LCAyNDAsIDE0MiwgMTQsIDcsIDI0MCwgMTQxLCAxNCwgNywgMjQwLCAxNDAsIDE0LCA3LCAyNDAsIDEzOSwgMTQsIDcsIAotICAgIDI0MCwgMTM4LCAxNCwgNywgMjQwLCAxMzcsIDE0LCA3LCAyNDAsIDEzNiwgMTQsIDcsIDI0MCwgMTM1LCAxNCwgNywgMjQwLCAKLSAgICAxMzQsIDE0LCA3LCAyNDAsIDEzMywgMTQsIDcsIDI0MCwgMTMyLCAxNCwgNywgMjQwLCAxMzEsIDE0LCA3LCAyNDAsIDEzMCwgCi0gICAgMTQsIDcsIDI0MCwgMTI5LCAxNCwgNywgMjQwLCAxMjgsIDE0LCA3LCAyNDAsIDEyNywgMTQsIDcsIDI0MCwgMTI2LCAxNCwgCi0gICAgNywgMjQwLCAxMjUsIDE0LCA3LCAyNDAsIDEyNCwgMTQsIDcsIDI0MCwgMTIzLCAxNCwgNywgMjQwLCAxMjIsIDE0LCA3LCAKLSAgICAyNDAsIDEyMSwgMTQsIDcsIDI0MCwgMTIwLCAxNCwgNywgMjQwLCAxMTksIDE0LCA3LCAyNDAsIDExOCwgMTQsIDcsIDI0MCwgCi0gICAgMTE3LCAxNCwgNywgMjQwLCAxMTYsIDE0LCA3LCAyNDAsIDExNSwgMTQsIDcsIDI0MCwgMTE0LCAxNCwgNywgMjQwLCAxMTMsIAotICAgIDE0LCA3LCAyNDAsIDExMiwgMTQsIDcsIDI0MCwgMTExLCAxNCwgNywgMjQwLCAxMTAsIDE0LCA3LCAyNDAsIDEwOSwgMTQsIAotICAgIDcsIDIzOSwgNzQsIDE0LCA3LCAyMzksIDczLCAxNCwgNywgMjM5LCA3MiwgMTQsIDcsIDIzOSwgNzEsIDE0LCA3LCAyMzksIAotICAgIDcwLCAxNCwgNywgMjM5LCA2OSwgMTQsIDcsIDIzOSwgNjgsIDE0LCA3LCAyMzksIDY3LCAxNCwgNywgMjM5LCA2NiwgMTQsIAotICAgIDcsIDIzOSwgNjUsIDE0LCA3LCAyMzksIDY0LCAxNCwgNywgMjM5LCA2MywgMTQsIDcsIDIzOSwgNjIsIDE0LCA3LCAyMzksIAotICAgIDYxLCAxNCwgNywgMjM5LCA2MCwgMTQsIDcsIDIzOSwgNTksIDE0LCA3LCAyMzksIDU4LCAxNCwgNywgMjM5LCA1NywgMTQsIAotICAgIDcsIDIzOSwgNTYsIDE0LCA3LCAyMzksIDU1LCAxNCwgNywgMjM5LCA1NCwgMTQsIDcsIDIzOSwgNTMsIDE0LCA3LCAyMzksIAotICAgIDUyLCAxNCwgNywgMjM5LCA1MSwgMTQsIDcsIDIzOSwgNTAsIDE0LCA3LCAyMzksIDQ5LCAxNCwgNywgMjM5LCA0OCwgMTQsIAotICAgIDcsIDIzOSwgNDcsIDE0LCA3LCAyMzksIDQ2LCAxNCwgNywgMjM5LCA0NSwgMTQsIDcsIDIzOSwgNDQsIDE0LCA3LCAyMzksIAotICAgIDQzLCAxNCwgNywgMjM5LCA0MiwgMTQsIDcsIDIzOSwgNDEsIDE0LCA3LCAyMzksIDQwLCAxNCwgNywgMjM5LCAzOSwgMTQsIAotICAgIDcsIDIzOSwgMzgsIDE0LCA3LCAyMzksIDM3LCAxNCwgNywgMjM5LCAzNiwgMTQsIDcsIDIzOSwgMzUsIDE0LCA3LCAyMzksIAotICAgIDM0LCAxNCwgNywgMjM5LCAzMywgMTQsIDcsIDIzOSwgMzIsIDE0LCA3LCAyMzksIDMxLCAxNCwgNywgMjM5LCAzMCwgMTQsIAotICAgIDcsIDIzOSwgMjksIDE0LCA3LCAyMzksIDI4LCAxNCwgNywgMjM5LCAyNywgMTQsIDcsIDIzOSwgMjYsIDE0LCA3LCAyMzksIAotICAgIDI1LCAxNCwgNywgMjM5LCAyNCwgMTQsIDcsIDIzOSwgMjMsIDE0LCA3LCAyMzksIDIyLCAxNCwgNywgMjM5LCAyMSwgMTQsIAotICAgIDcsIDIzOSwgMjAsIDE0LCA3LCAyMzksIDE5LCAxNCwgNywgMjM5LCAxOCwgMTQsIDcsIDIzOSwgMTcsIDE0LCA3LCAyMzksIAotICAgIDE2LCAxNCwgNywgMjM5LCAxNSwgMTQsIDcsIDIzOSwgMTQsIDE0LCA3LCAyMzksIDEzLCAxNCwgNywgMjM5LCAxMiwgMTQsIAotICAgIDcsIDIzOSwgMTEsIDE0LCA3LCAyMzcsIDE2OSwgMTQsIDcsIDIzNywgMTY4LCAxNCwgNywgMjM3LCAxNjcsIDE0LCA3LCAKLSAgICAyMzcsIDE2NiwgMTQsIDcsIDIzNywgMTY1LCAxNCwgNywgMjM3LCAxNjQsIDE0LCA3LCAyMzcsIDE2MywgMTQsIDcsIDIzNywgCi0gICAgMTYyLCAxNCwgNywgMjM3LCAxNjEsIDE0LCA3LCAyMzUsIDE5MCwgMTQsIDcsIDIzNSwgMTg5LCAxNCwgNywgMjM1LCAxODgsIAotICAgIDE0LCA3LCAyMzUsIDE4NywgMTQsIDcsIDIzNSwgMTg2LCAxNCwgNywgMjM1LCAxODUsIDE0LCA3LCAyMzUsIDE4NCwgMTQsIAotICAgIDcsIDIzNSwgMTgzLCAxNCwgNywgMjM1LCAxODIsIDE0LCA3LCAyMzUsIDE4MSwgMTQsIDcsIDIzNSwgMTgwLCAxNCwgNywgCi0gICAgMjM1LCAxNzksIDE0LCA3LCAyMzUsIDE3OCwgMTQsIDcsIDIzNSwgMTc3LCAxNCwgNywgMjM1LCAxNzYsIDE0LCA3LCAyMzUsIAotICAgIDE3NSwgMTQsIDcsIDIzNSwgMTc0LCAxNCwgNywgMjM1LCAxNzMsIDE0LCA3LCAyMzUsIDE3MiwgMTQsIDcsIDIzMCwgNTMsIAotICAgIDE0LCA3LCAyMzAsIDUyLCAxNCwgNywgMjMwLCA1MSwgMTQsIDcsIDIzMCwgNTAsIDE0LCA3LCAyMzAsIDQ5LCAxNCwgNywgCi0gICAgMjMwLCA0OCwgMTQsIDcsIDIzMCwgNDcsIDE0LCA3LCAyMzAsIDQ2LCAxNCwgNywgMjI4LCAxMjgsIDE0LCA3LCAyMjgsIAotICAgIDEyNywgMTQsIDcsIDIyOCwgMTI2LCAxNCwgNywgMjI4LCAxMjUsIDE0LCA3LCAyMjgsIDEyNCwgMTQsIDcsIDIyOCwgMTIzLCAKLSAgICAxNCwgNywgMjI4LCAxMjIsIDE0LCA3LCAyMjgsIDEyMSwgMTQsIDcsIDIyOCwgMTIwLCAxNCwgNywgMjI4LCAxMTksIDE0LCAKLSAgICA3LCAyMjYsIDE4MywgMTQsIDcsIDIyNiwgMTgyLCAxNCwgNywgMjI2LCAxODEsIDE0LCA3LCAyMjYsIDE3OSwgMTQsIDcsIAotICAgIDIyNiwgMTc3LCAxNCwgNywgMjI2LCAxNzYsIDE0LCA3LCAyMjYsIDE3NCwgMTQsIDcsIDIyNiwgMTcyLCAxNCwgNywgMjI2LCAKLSAgICAxNzAsIDE0LCA3LCAyMjYsIDE2OCwgMTQsIDcsIDIyNiwgMTY2LCAxNCwgNywgMjI2LCAxNjQsIDE0LCA3LCAyMjYsIDE2MiwgCi0gICAgMTQsIDcsIDIyNiwgMTYxLCAxNCwgNywgMjI2LCAxNTksIDE0LCA3LCAyMjYsIDE1NywgMTQsIDcsIDIyNiwgMTU2LCAxNCwgCi0gICAgNywgMjI2LCAxNTUsIDE0LCA3LCAyMjYsIDE1NCwgMTQsIDcsIDIyNiwgMTUzLCAxNCwgNywgMjI2LCAxNTIsIDE0LCA3LCAKLSAgICAyMjYsIDE1MSwgMTQsIDcsIDIyNiwgMTUwLCAxNCwgNywgMjI2LCAxNDksIDE0LCA3LCAyMjYsIDE0NywgMTQsIDcsIDIyNiwgCi0gICAgMTQ1LCAxNCwgNywgMjI2LCAxNDMsIDE0LCA3LCAyMjYsIDE0MiwgMTQsIDcsIDIyNiwgMTQwLCAxNCwgNywgMjI2LCAxMzksIAotICAgIDE0LCA3LCAyMjYsIDEzNywgMTQsIDcsIDIyNiwgMTM2LCAxNCwgNywgMjI2LCAxMzQsIDE0LCA3LCAyMjYsIDEzMiwgMTQsIAotICAgIDcsIDIyNiwgMTMwLCAxNCwgNywgMjI2LCAxMjgsIDE0LCA3LCAyMjYsIDEyNiwgMTQsIDcsIDIyNiwgMTI1LCAxNCwgNywgCi0gICAgMjI2LCAxMjMsIDE0LCA3LCAyMjYsIDEyMSwgMTQsIDcsIDIyNiwgMTIwLCAxNCwgNywgMjI2LCAxMTgsIDE0LCA3LCAyMjYsIAotICAgIDExNiwgMTQsIDcsIDIyNiwgMTE0LCAxNCwgNywgMjI2LCAxMTIsIDE0LCA3LCAyMjYsIDExMSwgMTQsIDcsIDIyNiwgMTA5LCAKLSAgICAxNCwgNywgMjI2LCAxMDcsIDE0LCA3LCAyMjYsIDEwNSwgMTQsIDcsIDIyNiwgMTA0LCAxNCwgNywgMjI2LCAxMDIsIDE0LCAKLSAgICA3LCAyMjYsIDEwMCwgMTQsIDcsIDIyNiwgOTksIDE0LCA3LCAyMjYsIDk4LCAxNCwgNywgMjI2LCA5NiwgMTQsIDcsIDIyNiwgCi0gICAgOTQsIDE0LCA3LCAyMjYsIDkyLCAxNCwgNywgMjI2LCA5MCwgMTQsIDcsIDIyNiwgODgsIDE0LCA3LCAyMjYsIDg2LCAxNCwgCi0gICAgNywgMjI2LCA4NCwgMTQsIDcsIDIyNiwgODMsIDE0LCA3LCAyMjYsIDgxLCAxNCwgNywgMjI2LCA3OSwgMTQsIDcsIDIyNiwgCi0gICAgNzcsIDE0LCA3LCAyMjYsIDc1LCAxNCwgNywgMjIzLCAxNjAsIDE0LCA3LCAyMjMsIDE1OSwgMTQsIDcsIDIyMywgMTU4LCAKLSAgICAxNCwgNywgMjIzLCAxNTcsIDE0LCA3LCAyMjMsIDE1NiwgMTQsIDcsIDIyMywgMTU1LCAxNCwgNywgMjIzLCAxNTQsIDE0LCAKLSAgICA3LCAyMjMsIDE1MywgMTQsIDcsIDIyMywgMTUyLCAxNCwgNywgMjIzLCAxNTEsIDE0LCA3LCAyMjMsIDE1MCwgMTQsIDcsIAotICAgIDIyMywgMTQ5LCAxNCwgNywgMjIzLCAxNDgsIDE0LCA3LCAyMjMsIDE0NywgMTQsIDcsIDIyMywgMTQ2LCAxNCwgNywgMjIzLCAKLSAgICAxNDUsIDE0LCA3LCAyMjMsIDE0NCwgMTQsIDcsIDIyMywgMTQzLCAxNCwgNywgMjIzLCAxNDIsIDE0LCA3LCAyMjMsIDE0MSwgCi0gICAgMTQsIDcsIDIyMywgMTQwLCAxNCwgNywgMjIzLCAxMzksIDE0LCA3LCAyMjMsIDEzOCwgMTQsIDcsIDIyMywgMTM3LCAxNCwgCi0gICAgNywgMjIzLCAxMzYsIDE0LCA3LCAyMjMsIDEzNSwgMTQsIDcsIDIyMywgMTM0LCAxNCwgNywgMjIzLCAxMzMsIDE0LCA3LCAKLSAgICAyMjMsIDEzMiwgMTQsIDcsIDIyMywgMTMxLCAxNCwgNywgMjIzLCAxMzAsIDE0LCA3LCAyMjMsIDEyOSwgMTQsIDcsIDIyMywgCi0gICAgMTI4LCAxNCwgNywgMjIzLCAxMjcsIDE0LCA3LCAyMjMsIDEyNiwgMTQsIDcsIDIyMywgMTI1LCAxNCwgNywgMjIzLCAxMjQsIAotICAgIDE0LCA3LCAyMjMsIDEyMywgMTQsIDcsIDIyMywgMTIyLCAxNCwgNywgMjIzLCAxMjEsIDE0LCA3LCAyMjMsIDEyMCwgMTQsIAotICAgIDcsIDIyMywgMTE5LCAxNCwgNywgMjIzLCAxMTgsIDE0LCA3LCAyMjMsIDExNywgMTQsIDcsIDIyMywgMTE2LCAxNCwgNywgCi0gICAgMjIzLCAxMTUsIDE0LCA3LCAyMjMsIDExNCwgMTQsIDcsIDIyMywgMTEzLCAxNCwgNywgMjIzLCAxMTIsIDE0LCA3LCAyMjEsIAotICAgIDI1MiwgMTQsIDcsIDIyMSwgMjUxLCAxNCwgNywgMjIxLCAyNTAsIDE0LCA3LCAyMjEsIDI0OSwgMTQsIDcsIDIyMSwgMjQ4LCAKLSAgICAxNCwgNywgMjIxLCAyNDcsIDE0LCA3LCAyMjEsIDI0NiwgMTQsIDcsIDIyMSwgMjQ1LCAxNCwgNywgMjIxLCAyNDQsIDE0LCAKLSAgICA3LCAyMjEsIDI0MywgMTQsIDcsIDIyMSwgMjQyLCAxNCwgNywgMjIxLCAyNDEsIDE0LCA3LCAyMjEsIDI0MCwgMTQsIDcsIAotICAgIDIyMSwgMjM5LCAxNCwgNywgMjIxLCAyMzgsIDE0LCA3LCAyMjEsIDIzNywgMTQsIDcsIDIyMSwgMjM2LCAxNCwgNywgMjIxLCAKLSAgICAyMzUsIDE0LCA3LCAyMjEsIDIzNCwgMTQsIDcsIDIyMSwgMjMzLCAxNCwgNywgMjIxLCAyMzIsIDE0LCA3LCAyMjEsIDIzMSwgCi0gICAgMTQsIDcsIDIyMSwgODMsIDE0LCA3LCAyMjEsIDgyLCAxNCwgNywgMjIxLCA4MSwgMTQsIDcsIDIyMSwgODAsIDE0LCA3LCAKLSAgICAyMjEsIDc5LCAxNCwgNywgMjIxLCA3OCwgMTQsIDcsIDIyMSwgNzcsIDE0LCA3LCAyMjEsIDc2LCAxNCwgNywgMjIxLCA3NSwgCi0gICAgMTQsIDcsIDIyMSwgNzQsIDE0LCA3LCAyMjEsIDczLCAxNCwgNywgMjIxLCA3MiwgMTQsIDcsIDIyMSwgNzEsIDE0LCA3LCAKLSAgICAyMjEsIDcwLCAxNCwgNywgMjIxLCA2OSwgMTQsIDcsIDIyMSwgNjgsIDE0LCA3LCAyMjEsIDY3LCAxNCwgNywgMjIxLCA2NiwgCi0gICAgMTQsIDcsIDIyMSwgNjUsIDE0LCA3LCAyMjEsIDY0LCAxNCwgNywgMjIxLCA2MywgMTQsIDcsIDIyMSwgNjIsIDE0LCA3LCAKLSAgICAyMjEsIDYxLCAxNCwgNywgMjIxLCA2MCwgMTQsIDcsIDIyMSwgNTksIDE0LCA3LCAyMjEsIDU4LCAxNCwgNywgMjIwLCAxNzMsIAotICAgIDE0LCA3LCAyMjAsIDE3MiwgMTQsIDcsIDIyMCwgMTcxLCAxNCwgNywgMjIwLCAxNzAsIDE0LCA3LCAyMjAsIDE2OSwgMTQsIAotICAgIDcsIDIyMCwgMTY4LCAxNCwgNywgMjIwLCAxNjcsIDE0LCA3LCAyMjAsIDE2NiwgMTQsIDcsIDIyMCwgMTY1LCAxNCwgNywgCi0gICAgMjIwLCAxNjQsIDE0LCA3LCAyMjAsIDE2MywgMTQsIDcsIDIyMCwgMTYyLCAxNCwgNywgMjIwLCAxNjEsIDE0LCA3LCAyMjAsIAotICAgIDE2MCwgMTQsIDcsIDIyMCwgMTU5LCAxNCwgNywgMjIwLCAxNTgsIDE0LCA3LCAyMjAsIDE1NywgMTQsIDcsIDIyMCwgMTU2LCAKLSAgICAxNCwgNywgMjIwLCAxNTUsIDE0LCA3LCAyMjAsIDE1NCwgMTQsIDcsIDIyMCwgMTUzLCAxNCwgNywgMjIwLCAxNTIsIDE0LCAKLSAgICA3LCAyMjAsIDE1MSwgMTQsIDcsIDIyMCwgMTUwLCAxNCwgNywgMjIwLCAxNDksIDE0LCA3LCAyMjAsIDE0OCwgMTQsIDcsIAotICAgIDIyMCwgMTQ3LCAxNCwgNywgMjIwLCAxNDYsIDE0LCA3LCAyMjAsIDE0NSwgMTQsIDcsIDIyMCwgMTQ0LCAxNCwgNywgMjIwLCAKLSAgICAxNDMsIDE0LCA3LCAyMjAsIDE0MiwgMTQsIDcsIDIyMCwgMTQxLCAxNCwgNywgMjIwLCAxNDAsIDE0LCA3LCAyMjAsIDEzOSwgCi0gICAgMTQsIDcsIDIyMCwgMTM4LCAxNCwgNywgMjIwLCAxMzcsIDE0LCA3LCAyMjAsIDEzNiwgMTQsIDcsIDIyMCwgMTM1LCAxNCwgCi0gICAgNywgMjIwLCAxMzQsIDE0LCA3LCAyMjAsIDEzMywgMTQsIDcsIDIyMCwgMTMyLCAxNCwgNywgMjIwLCAxMzEsIDE0LCA3LCAKLSAgICAyMjAsIDEzMCwgMTQsIDcsIDIyMCwgMTI5LCAxNCwgNywgMjIwLCAxMjgsIDE0LCA3LCAyMjAsIDEyNywgMTQsIDcsIDIyMCwgCi0gICAgMTI2LCAxNCwgNywgMjIwLCAxMjUsIDE0LCA3LCAyMjAsIDEyNCwgMTQsIDcsIDIyMCwgMTIzLCAxNCwgNywgMjIwLCAxMjIsIAotICAgIDE0LCA3LCAyMjAsIDEyMSwgMTQsIDcsIDIyMCwgMTIwLCAxNCwgNywgMjIwLCAxMTksIDE0LCA3LCAyMjAsIDExOCwgMTQsIAotICAgIDcsIDIyMCwgMTE3LCAxNCwgNywgMjIwLCAxMTYsIDE0LCA3LCAyMjAsIDExNSwgMTQsIDcsIDIyMCwgMTE0LCAxNCwgNywgCi0gICAgMjIwLCAxMTMsIDE0LCA3LCAyMjAsIDExMiwgMTQsIDcsIDIyMCwgMTExLCAxNCwgNywgMjIwLCAxMTAsIDE0LCA3LCAyMjAsIAotICAgIDEwOSwgMTQsIDcsIDIyMCwgMTA4LCAxNCwgNywgMjIwLCAxMDcsIDE0LCA3LCAyMjAsIDEwNiwgMTQsIDcsIDIyMCwgMTA1LCAKLSAgICAxNCwgNywgMjIwLCAxMDQsIDE0LCA3LCAyMjAsIDEwMywgMTQsIDcsIDIyMCwgMTAyLCAxNCwgNywgMjIwLCAxMDEsIDE0LCAKLSAgICA3LCAyMjAsIDEwMCwgMTQsIDcsIDIyMCwgOTksIDE0LCA3LCAyMTksIDE4MywgMTQsIDcsIDIxOSwgMTgyLCAxNCwgNywgCi0gICAgMjE5LCAxODEsIDE0LCA3LCAyMTksIDE4MCwgMTQsIDcsIDIxOSwgMTc5LCAxNCwgNywgMjE5LCAxNzgsIDE0LCA3LCAyMTksIAotICAgIDE3NywgMTQsIDcsIDIxOSwgMTc2LCAxNCwgNywgMjE5LCAxNzUsIDE0LCA3LCAyMTksIDE3NCwgMTQsIDcsIDIxOSwgMTczLCAKLSAgICAxNCwgNywgMjE5LCAxNzIsIDE0LCA3LCAyMTksIDE3MSwgMTQsIDcsIDIxNywgMTMzLCAxNCwgNywgMjE3LCAxMzIsIDE0LCAKLSAgICA3LCAyMTcsIDEzMSwgMTQsIDcsIDIxNywgMTMwLCAxNCwgNywgMjE3LCAxMjksIDE0LCA3LCAyMTcsIDEyOCwgMTQsIDcsIAotICAgIDIxNywgMTI3LCAxNCwgNywgMjE2LCAyNTUsIDE0LCA3LCAyMTYsIDI1NCwgMTQsIDcsIDIxNiwgMjUzLCAxNCwgNywgMjE2LCAKLSAgICAyNTIsIDE0LCA3LCAyMTYsIDI1MSwgMTQsIDcsIDIxNiwgMjUwLCAxNCwgNywgMjE2LCAyNDksIDE0LCA3LCAyMTYsIDI0OCwgCi0gICAgMTQsIDcsIDIxNiwgMjQ3LCAxNCwgNywgMjE2LCAyNDYsIDE0LCA3LCAyMTYsIDI0NSwgMTQsIDcsIDIxNiwgMjQ0LCAxNCwgCi0gICAgNywgMjE2LCAyNDMsIDE0LCA3LCAyMTYsIDI0MiwgMTQsIDcsIDIxNiwgMjQxLCAxNCwgNywgMjE2LCAyNDAsIDE0LCA3LCAKLSAgICAyMTYsIDIzOSwgMTQsIDcsIDIxNiwgMjM4LCAxNCwgNywgMjE2LCAyMzcsIDE0LCA3LCAyMTYsIDIzNiwgMTQsIDcsIDIxNiwgCi0gICAgMjM1LCAxNCwgNywgMjE2LCAyMzQsIDE0LCA3LCAyMTYsIDIzMywgMTQsIDcsIDIxNiwgMjMyLCAxNCwgNywgMjE2LCAyMzEsIAotICAgIDE0LCA3LCAyMTYsIDIzMCwgMTQsIDcsIDIxNiwgMjI5LCAxNCwgNywgMjE2LCAyMjgsIDE0LCA3LCAyMTYsIDIyNywgMTQsIAotICAgIDcsIDIxNiwgMjI2LCAxNCwgNywgMjE2LCAyMjUsIDE0LCA3LCAyMTYsIDIyNCwgMTQsIDcsIDIxNiwgMjIzLCAxNCwgNywgCi0gICAgMjE2LCAyMjIsIDE0LCA3LCAyMTUsIDkxLCAxNCwgNywgMjE1LCA5MCwgMTQsIDcsIDIxNSwgODksIDE0LCA3LCAyMTUsIDg4LCAKLSAgICAxNCwgNywgMjE1LCA4NywgMTQsIDcsIDIxNSwgODYsIDE0LCA3LCAyMTUsIDg1LCAxNCwgNywgMjE1LCA4NCwgMTQsIDcsIAotICAgIDIxNSwgODMsIDE0LCA3LCAyMTUsIDgyLCAxNCwgNywgMjE1LCA4MSwgMTQsIDcsIDIxNSwgODAsIDE0LCA3LCAyMTUsIDc5LCAKLSAgICAxNCwgNywgMjE1LCA3OCwgMTQsIDcsIDIxNSwgNzcsIDE0LCA3LCAyMTUsIDc2LCAxNCwgNywgMjE1LCA3NSwgMTQsIDcsIAotICAgIDIxNSwgNzQsIDE0LCA3LCAyMTUsIDczLCAxNCwgNywgMjE1LCA3MiwgMTQsIDcsIDIxNSwgNzEsIDE0LCA3LCAyMTUsIDcwLCAKLSAgICAxNCwgNywgMjE1LCA2OSwgMTQsIDcsIDIxNSwgNjgsIDE0LCA3LCAyMTUsIDY3LCAxNCwgNywgMjE1LCA2NiwgMTQsIDcsIAotICAgIDIxNSwgNjUsIDE0LCA3LCAyMTUsIDY0LCAxNCwgNywgMjE1LCA2MywgMTQsIDcsIDIxNSwgNjIsIDE0LCA3LCAyMTUsIDYxLCAKLSAgICAxNCwgNywgMjE1LCA2MCwgMTQsIDcsIDIxNSwgNTksIDE0LCA3LCAyMTUsIDU4LCAxNCwgNywgMjE1LCA1NywgMTQsIDcsIAotICAgIDIxNSwgNTYsIDE0LCA3LCAyMTUsIDU1LCAxNCwgNywgMjE1LCA1NCwgMTQsIDcsIDIxNSwgNTMsIDE0LCA3LCAyMTUsIDUyLCAKLSAgICAxNCwgNywgMjE1LCA1MSwgMTQsIDcsIDIxNSwgNTAsIDE0LCA3LCAyMTUsIDQ5LCAxNCwgNywgMjE1LCA0OCwgMTQsIDcsIAotICAgIDIxNSwgNDcsIDE0LCA3LCAyMTUsIDQ2LCAxNCwgNywgMjE1LCA0NSwgMTQsIDcsIDIxNSwgNDQsIDE0LCA3LCAyMTUsIDQzLCAKLSAgICAxNCwgNywgMjE1LCA0MiwgMTQsIDcsIDIxNSwgNDEsIDE0LCA3LCAyMTUsIDQwLCAxNCwgNywgMjE1LCAzOSwgMTQsIDcsIAotICAgIDIxNSwgMzgsIDE0LCA3LCAyMTAsIDY3LCAxNCwgNywgMjEwLCA2NiwgMTQsIDcsIDIxMCwgNjUsIDE0LCA3LCAyMTAsIDY0LCAKLSAgICAxNCwgNywgMjEwLCA2MywgMTQsIDcsIDIxMCwgNjIsIDE0LCA3LCAyMTAsIDYxLCAxNCwgNywgMjEwLCA2MCwgMTQsIDcsIAotICAgIDIxMCwgNTksIDE0LCA3LCAyMTAsIDU4LCAxNCwgNywgMjEwLCA1NywgMTQsIDcsIDIxMCwgNTYsIDE0LCA3LCAyMTAsIDU1LCAKLSAgICAxNCwgNywgMjEwLCA1NCwgMTQsIDcsIDIxMCwgNTMsIDE0LCA3LCAyMTAsIDUyLCAxNCwgNywgMjEwLCA1MSwgMTQsIDcsIAotICAgIDIxMCwgNTAsIDE0LCA3LCAyMTAsIDQ5LCAxNCwgNywgMjEwLCA0OCwgMTQsIDcsIDIxMCwgNDcsIDE0LCA3LCAyMTAsIDQ2LCAKLSAgICAxNCwgNywgMjEwLCA0NSwgMTQsIDcsIDIxMCwgNDQsIDE0LCA3LCAyMTAsIDQzLCAxNCwgNywgMjEwLCA0MiwgMTQsIDcsIAotICAgIDIxMCwgNDEsIDE0LCA3LCAyMTAsIDQwLCAxNCwgNywgMjEwLCAzOSwgMTQsIDcsIDIxMCwgMzgsIDE0LCA3LCAyMTAsIDM3LCAKLSAgICAxNCwgNywgMjEwLCAzNiwgMTQsIDcsIDIxMCwgMzUsIDE0LCA3LCAyMTAsIDM0LCAxNCwgNywgMjEwLCAzMywgMTQsIDcsIAotICAgIDIxMCwgMzIsIDE0LCA3LCAyMTAsIDMxLCAxNCwgNywgMjEwLCAzMCwgMTQsIDcsIDIxMCwgMjksIDE0LCA3LCAyMTAsIDI4LCAKLSAgICAxNCwgNywgMjEwLCAyNywgMTQsIDcsIDIxMCwgMjYsIDE0LCA3LCAyMTAsIDI1LCAxNCwgNywgMjEwLCAyNCwgMTQsIDcsIAotICAgIDIwNywgODgsIDE0LCA3LCAyMDcsIDg3LCAxNCwgNywgMjA3LCA4NiwgMTQsIDcsIDIwNywgODUsIDE0LCA3LCAyMDcsIDg0LCAKLSAgICAxNCwgNywgMjA3LCA4MywgMTQsIDcsIDIwNywgODIsIDE0LCA3LCAyMDcsIDgxLCAxNCwgNywgMjA3LCA4MCwgMTQsIDcsIAotICAgIDIwNywgNzksIDE0LCA3LCAyMDcsIDc4LCAxNCwgNywgMjA3LCA3NywgMTQsIDcsIDIwNywgNzYsIDE0LCA3LCAyMDcsIDc1LCAKLSAgICAxNCwgNywgMjA3LCA3NCwgMTQsIDcsIDIwNywgNzMsIDE0LCA3LCAyMDcsIDcyLCAxNCwgNywgMjA3LCA3MSwgMTQsIDcsIAotICAgIDIwNywgNzAsIDE0LCA3LCAyMDcsIDY5LCAxNCwgNywgMjA3LCA2OCwgMTQsIDcsIDIwNywgNjcsIDE0LCA3LCAyMDcsIDY2LCAKLSAgICAxNCwgNywgMjA3LCA2NSwgMTQsIDcsIDIwNywgNjQsIDE0LCA3LCAyMDcsIDYzLCAxNCwgNywgMjA3LCA2MiwgMTQsIDcsIAotICAgIDIwNywgNjEsIDE0LCA3LCAyMDcsIDYwLCAxNCwgNywgMjA3LCA1OSwgMTQsIDcsIDIwNywgNTgsIDE0LCA3LCAyMDcsIDU3LCAKLSAgICAxNCwgNywgMjA3LCA1NiwgMTQsIDcsIDIwNywgNTUsIDE0LCA3LCAyMDcsIDU0LCAxNCwgNywgMjA3LCA1MywgMTQsIDcsIAotICAgIDIwNywgNTIsIDE0LCA3LCAyMDcsIDUxLCAxNCwgNywgMjA3LCA1MCwgMTQsIDcsIDIwNywgNDksIDE0LCA3LCAyMDcsIDQ4LCAKLSAgICAxNCwgNywgMjA3LCA0NywgMTQsIDcsIDIwNywgNDYsIDE0LCA3LCAyMDcsIDQ1LCAxNCwgNywgMjA3LCA0NCwgMTQsIDcsIAotICAgIDIwNywgNDMsIDE0LCA3LCAyMDcsIDQyLCAxNCwgNywgMjA2LCAxNjMsIDE0LCA3LCAyMDYsIDE2MiwgMTQsIDcsIDIwNiwgCi0gICAgMTYxLCAxNCwgNywgMjA2LCAxNjAsIDE0LCA3LCAyMDYsIDE1OSwgMTQsIDcsIDIwNiwgMTU4LCAxNCwgNywgMjA2LCAxNTcsIAotICAgIDE0LCA3LCAyMDYsIDE1NiwgMTQsIDcsIDIwNiwgMTU1LCAxNCwgNywgMjA2LCAxNTQsIDE0LCA3LCAyMDYsIDE1MywgMTQsIAotICAgIDcsIDIwNiwgMTUyLCAxNCwgNywgMjA2LCAxNTEsIDE0LCA3LCAyMDYsIDE1MCwgMTQsIDcsIDIwNiwgMTQ5LCAxNCwgNywgCi0gICAgMjA2LCAxNDgsIDE0LCA3LCAyMDYsIDE0NywgMTQsIDcsIDIwNiwgMTQ2LCAxNCwgNywgMjA2LCAxNDUsIDE0LCA3LCAyMDYsIAotICAgIDE0NCwgMTQsIDcsIDIwNiwgMTQzLCAxNCwgNywgMjA2LCAxNDIsIDE0LCA3LCAyMDYsIDE0MSwgMTQsIDcsIDIwNiwgMTQwLCAKLSAgICAxNCwgNywgMjA2LCAxMzksIDE0LCA3LCAyMDYsIDEzOCwgMTQsIDcsIDIwNiwgMTM3LCAxNCwgNywgMjA2LCAxMzYsIDE0LCAKLSAgICA3LCAyMDYsIDEzNSwgMTQsIDcsIDIwNiwgMTM0LCAxNCwgNywgMjA2LCAxMzMsIDE0LCA3LCAyMDYsIDEzMiwgMTQsIDcsIAotICAgIDIwNiwgMTMxLCAxNCwgNywgMjA2LCAxMzAsIDE0LCA3LCAyMDYsIDEyOSwgMTQsIDcsIDIwNiwgMTI4LCAxNCwgNywgMjA2LCAKLSAgICAxMjcsIDE0LCA3LCAyMDYsIDEyNiwgMTQsIDcsIDIwNiwgMTI1LCAxNCwgNywgMjA2LCAxMjQsIDE0LCA3LCAyMDYsIDEyMywgCi0gICAgMTQsIDcsIDIwNiwgMTIyLCAxNCwgNywgMjA2LCAxMjEsIDE0LCA3LCAyMDYsIDEyMCwgMTQsIDcsIDIwNiwgMTE5LCAxNCwgCi0gICAgNywgMjA2LCAxMTgsIDE0LCA3LCAyMDYsIDExNywgMTQsIDcsIDIwNiwgMTE2LCAxNCwgNywgMjA2LCAxMTUsIDE0LCA3LCAKLSAgICAyMDYsIDExNCwgMTQsIDcsIDIwNiwgMTEzLCAxNCwgNywgMjA2LCAxMTIsIDE0LCA3LCAyMDYsIDExMSwgMTQsIDcsIDIwNiwgCi0gICAgMTEwLCAxNCwgNywgMjA2LCAxMDksIDE0LCA3LCAyMDYsIDEwOCwgMTQsIDcsIDIwNiwgMTA3LCAxNCwgNywgMjA2LCAxMDYsIAotICAgIDE0LCA3LCAyMDYsIDEwNSwgMTQsIDcsIDIwNiwgMTA0LCAxNCwgNywgMjA2LCAxMDMsIDE0LCA3LCAyMDYsIDEwMiwgMTQsIAotICAgIDcsIDIwNiwgMTAxLCAxNCwgNywgMjA2LCAxMDAsIDE0LCA3LCAyMDYsIDk5LCAxNCwgNywgMjA2LCA5OCwgMTQsIDcsIDIwNiwgCi0gICAgOTcsIDE0LCA3LCAyMDYsIDk2LCAxNCwgNywgMjA2LCA5NSwgMTQsIDcsIDIwNiwgOTQsIDE0LCA3LCAyMDYsIDkzLCAxNCwgCi0gICAgNywgMjA2LCA5MiwgMTQsIDcsIDIwNiwgOTEsIDE0LCA3LCAyMDYsIDkwLCAxNCwgNywgMjA2LCA4OSwgMTQsIDcsIDIwNiwgCi0gICAgODgsIDE0LCA3LCAyMDYsIDg3LCAxNCwgNywgMjA0LCAxNDMsIDE0LCA3LCAyMDQsIDE0MiwgMTQsIDcsIDIwNCwgMTQxLCAKLSAgICAxNCwgNywgMjA0LCAxNDAsIDE0LCA3LCAyMDQsIDEzOSwgMTQsIDcsIDIwNCwgMTM4LCAxNCwgNywgMjA0LCAxMzcsIDE0LCAKLSAgICA3LCAyMDQsIDEzNiwgMTQsIDcsIDIwNCwgMTM1LCAxNCwgNywgMjA0LCAxMzQsIDE0LCA3LCAyMDQsIDEzMywgMTQsIDcsIAotICAgIDIwNCwgMTMyLCAxNCwgNywgMjA0LCAxMzEsIDE0LCA3LCAyMDQsIDEzMCwgMTQsIDcsIDIwNCwgMTI5LCAxNCwgNywgMjA0LCAKLSAgICAxMjgsIDE0LCA3LCAyMDQsIDEyNywgMTQsIDcsIDIwNCwgMTI2LCAxNCwgNywgMjA0LCAxMjUsIDE0LCA3LCAyMDQsIDEyNCwgCi0gICAgMTQsIDcsIDIwNCwgMTIzLCAxNCwgNywgMjA0LCAxMjIsIDE0LCA3LCAyMDQsIDEyMSwgMTQsIDcsIDIwNCwgMTIwLCAxNCwgCi0gICAgNywgMjA0LCAxMTksIDE0LCA3LCAyMDQsIDExOCwgMTQsIDcsIDIwNCwgMTE3LCAxNCwgNywgMjA0LCAxMTYsIDE0LCA3LCAKLSAgICAyMDQsIDExNSwgMTQsIDcsIDIwNCwgMTE0LCAxNCwgNywgMjA0LCAxMTMsIDE0LCA3LCAyMDQsIDExMiwgMTQsIDcsIDIwMywgCi0gICAgMTk0LCAxNCwgNywgMjAzLCAxOTMsIDE0LCA3LCAyMDMsIDE5MiwgMTQsIDcsIDIwMywgMTkxLCAxNCwgNywgMjAzLCAxOTAsIAotICAgIDE0LCA3LCAyMDMsIDE4OSwgMTQsIDcsIDIwMywgMTg4LCAxNCwgNywgMjAzLCAxODcsIDE0LCA3LCAyMDMsIDE4NiwgMTQsIAotICAgIDcsIDIwMywgMTg1LCAxNCwgNywgMjAzLCAxODQsIDE0LCA3LCAyMDMsIDE4MywgMTQsIDcsIDIwMywgMTIyLCAxNCwgNywgCi0gICAgMjAzLCAxMjEsIDE0LCA3LCAyMDMsIDEyMCwgMTQsIDcsIDIwMywgMTE5LCAxNCwgNywgMjAzLCAxMTgsIDE0LCA3LCAyMDMsIAotICAgIDExNywgMTQsIDcsIDIwMywgMTE2LCAxNCwgNywgMjAzLCAxMTUsIDE0LCA3LCAyMDMsIDExNCwgMTQsIDcsIDIwMiwgMTU4LCAKLSAgICAxNCwgNywgMjAyLCAxNTcsIDE0LCA3LCAyMDIsIDE1NiwgMTQsIDcsIDIwMiwgMTU1LCAxNCwgNywgMjAyLCAxNTQsIDE0LCAKLSAgICA3LCAyMDIsIDE1MywgMTQsIDcsIDIwMiwgMTUyLCAxNCwgNywgMjAyLCAxNTEsIDE0LCA3LCAyMDIsIDE1MCwgMTQsIDcsIAotICAgIDIwMiwgMTQ5LCAxNCwgNywgMjAyLCAxNDgsIDE0LCA3LCAyMDIsIDE0NywgMTQsIDcsIDIwMiwgMTQ2LCAxNCwgNywgMjAyLCAKLSAgICAxNDUsIDE0LCA3LCAyMDIsIDE0NCwgMTQsIDcsIDIwMiwgMTQzLCAxNCwgNywgMjAyLCAxNDIsIDE0LCA3LCAyMDIsIDE0MSwgCi0gICAgMTQsIDcsIDIwMiwgMTQwLCAxNCwgNywgMjAyLCAxMzksIDE0LCA3LCAyMDIsIDEzOCwgMTQsIDcsIDIwMiwgMTM3LCAxNCwgCi0gICAgNywgMjAyLCAxMzYsIDE0LCA3LCAyMDIsIDEzNSwgMTQsIDcsIDIwMiwgMTM0LCAxNCwgNywgMjAyLCAxMzMsIDE0LCA3LCAKLSAgICAyMDIsIDEzMiwgMTQsIDcsIDIwMiwgMTMxLCAxNCwgNywgMjAyLCAxMzAsIDE0LCA3LCAyMDIsIDEyOSwgMTQsIDcsIDIwMiwgCi0gICAgMTI4LCAxNCwgNywgMjAyLCAxMjcsIDE0LCA3LCAyMDIsIDEyNiwgMTQsIDcsIDIwMiwgMTI1LCAxNCwgNywgMjAyLCAxMjQsIAotICAgIDE0LCA3LCAyMDIsIDEyMywgMTQsIDcsIDIwMiwgMTIyLCAxNCwgNywgMjAyLCAxMjEsIDE0LCA3LCAyMDIsIDEyMCwgMTQsIAotICAgIDcsIDIwMiwgMTE5LCAxNCwgNywgMjAyLCAxMTgsIDE0LCA3LCAyNTIsIDI0LCAxNCwgNywgMjUyLCAyMywgMTQsIDcsIDI1MiwgCi0gICAgMjIsIDE0LCA3LCAyNTIsIDIxLCAxNCwgNywgMjUyLCAyMCwgMTQsIDcsIDI1MiwgMTksIDE0LCA3LCAyNTIsIDE4LCAxNCwgCi0gICAgNywgMjUyLCAxNywgMTQsIDcsIDI1MiwgMTYsIDE0LCA3LCAyNTIsIDE1LCAxNCwgNywgMjUyLCAxNCwgMTQsIDcsIDI1MiwgCi0gICAgMTMsIDE0LCA3LCAyNTIsIDEyLCAxNCwgNywgMjUyLCAxMSwgMTQsIDcsIDI1MiwgMTAsIDE0LCA3LCAyNTIsIDksIDE0LCA3LCAKLSAgICAyNTIsIDgsIDE0LCA3LCAyNTIsIDcsIDE0LCA3LCAyNTIsIDYsIDE0LCA3LCAyNTIsIDUsIDE0LCA3LCAyNTIsIDQsIDE0LCAKLSAgICA3LCAyNTIsIDMsIDE0LCA3LCAyNTIsIDIsIDE0LCA3LCAyNTIsIDEsIDE0LCA3LCAyNTIsIDAsIDE0LCA3LCAyNTEsIDI1NSwgCi0gICAgMTQsIDcsIDI1MSwgMjU0LCAxNCwgNywgMjUxLCAyNTMsIDE0LCA3LCAyNTEsIDI1MiwgMTQsIDcsIDI1MSwgMjUxLCAxNCwgCi0gICAgNywgMjUxLCAyNTAsIDE0LCA3LCAyNTEsIDI0OSwgMTQsIDcsIDI1MSwgMjQ4LCAxNCwgNywgMjUxLCAyNDcsIDI3LCA3LCAKLSAgICAyNTUsIDE4LCAyNywgNywgMjU1LCAxNywgMjcsIDcsIDI1NSwgMTYsIDI3LCA3LCAyNTUsIDE1LCAyNywgNywgMjU1LCAxNCwgCi0gICAgMjcsIDcsIDI1NSwgMTIsIDI3LCA3LCAyNTUsIDksIDI3LCA3LCAyNTUsIDgsIDI3LCA3LCAyNTUsIDcsIDI3LCA3LCAyNTUsIAotICAgIDYsIDI3LCA3LCAyNTUsIDUsIDI3LCA3LCAyNTUsIDQsIDI3LCA3LCAyNTUsIDMsIDI3LCA3LCAyNTUsIDIsIDI3LCA3LCAKLSAgICAyNTUsIDEsIDI3LCA3LCAyNTQsIDI1NSwgMjcsIDcsIDI1NCwgMjU0LCAyNywgNywgMjU0LCAyNTMsIDI3LCA3LCAyNTQsIAotICAgIDI1MSwgMjcsIDcsIDI1NCwgMjUwLCAyNywgNywgMjU0LCAyNDksIDI3LCA3LCAyNTQsIDI0OCwgMjcsIDcsIDI1NCwgMjQ3LCAKLSAgICAyNywgNywgMjU0LCAyNDYsIDI3LCA3LCAyNTQsIDI0NSwgMjcsIDcsIDI1NCwgMjQ0LCAyNywgNywgMjU0LCAyNDMsIDI3LCAKLSAgICA3LCAyNTQsIDI0MiwgMjcsIDcsIDI1NCwgMjQxLCAyNywgNywgMjU0LCAyNDAsIDI3LCA3LCAyNTQsIDIzOCwgMjcsIDcsIAotICAgIDI1NCwgMjM3LCAyNywgNywgMjU0LCAyMzYsIDI3LCA3LCAyNTQsIDIzNSwgMjcsIDcsIDI1NCwgMjMzLCAyNywgNywgMjU0LCAKLSAgICAyMzIsIDI3LCA3LCAyNTQsIDIzMSwgMjcsIDcsIDI1NCwgMjMwLCAyNywgNywgMjU0LCAyMjksIDI3LCA3LCAyNTQsIDIyOCwgCi0gICAgMjcsIDcsIDI1NCwgMjI3LCAyNywgNywgMjU0LCAyMjYsIDI3LCA3LCAyNTQsIDIyNSwgMjcsIDcsIDI1NCwgMjIzLCAyNywgCi0gICAgNywgMjU0LCAyMjIsIDI3LCA3LCAyNTQsIDIyMSwgMjcsIDcsIDI1NCwgMjE5LCAyNywgNywgMjU0LCAyMTcsIDI3LCA3LCAKLSAgICAyNTQsIDIxNiwgMjcsIDcsIDI1NCwgMjE1LCAyNywgNywgMjU0LCAyMTQsIDI3LCA3LCAyNTQsIDIxMywgMjcsIDcsIDI1NCwgCi0gICAgMjEyLCAyNywgNywgMjU0LCAyMTEsIDI3LCA3LCAyNTQsIDIxMCwgMjcsIDcsIDI1NCwgMjA5LCAyNywgNywgMjU0LCAyMDgsIAotICAgIDI3LCA3LCAyNTQsIDIwNywgMjcsIDcsIDI1NCwgMjA2LCAyNywgNywgMjU0LCAyMDUsIDI3LCA3LCAyNTQsIDIwNCwgMjcsIAotICAgIDcsIDI1NCwgMjAzLCAyNywgNywgMjU0LCAyMDIsIDI3LCA3LCAyNTQsIDIwMSwgMjcsIDcsIDI1NCwgMjAwLCAyNywgNywgCi0gICAgMjU0LCAxOTksIDI3LCA3LCAyNTQsIDE5OCwgMjcsIDcsIDI1NCwgMTk3LCAyNywgNywgMjU0LCAxOTYsIDI3LCA3LCAyNTQsIAotICAgIDE5NSwgMjcsIDcsIDI1NCwgMTk0LCAyNywgNywgMjU0LCAxOTMsIDI3LCA3LCAyNTQsIDE5MiwgMjcsIDcsIDI1NCwgMTkxLCAKLSAgICAyNywgNywgMjU0LCAxOTAsIDI3LCA3LCAyNTQsIDE4OSwgMjcsIDcsIDI1NCwgMTg4LCAyNywgNywgMjU0LCAxODcsIDI3LCAKLSAgICA3LCAyNTQsIDE4NiwgMjcsIDcsIDI1NCwgMTg1LCAyNywgNywgMjU0LCAxODQsIDI3LCA3LCAyNTQsIDE4MywgMjcsIDcsIAotICAgIDI1NCwgMTgyLCAyNywgNywgMjU0LCAxODEsIDI3LCA3LCAyNTQsIDE4MCwgMjcsIDcsIDI1NCwgMTc5LCAyNywgNywgMjU0LCAKLSAgICAxNzgsIDI3LCA3LCAyNTQsIDE3NywgMjcsIDcsIDI1NCwgMTc2LCAyNywgNywgMjU0LCAxNzUsIDI3LCA3LCAyNTQsIDE3NCwgCi0gICAgMjcsIDcsIDI1NCwgMTczLCAyNywgNywgMjU0LCAxNzIsIDI3LCA3LCAyNTQsIDE3MSwgMjcsIDcsIDI1NCwgMTcwLCAyNywgCi0gICAgNywgMjU0LCAxNjksIDI3LCA3LCAyNTQsIDE2OCwgMjcsIDcsIDI1NCwgMTY3LCAyNywgNywgMjU0LCAxNjYsIDI3LCA3LCAKLSAgICAyNTQsIDE2NSwgMjcsIDcsIDI1NCwgMTY0LCAyNywgNywgMjU0LCAxNjMsIDI3LCA3LCAyNTQsIDE2MiwgMjcsIDcsIDI1NCwgCi0gICAgMTYxLCAyNywgNywgMjU0LCAxNjAsIDI3LCA3LCAyNTQsIDE1OSwgMjcsIDcsIDI1NCwgMTU4LCAyNywgNywgMjU0LCAxNTcsIAotICAgIDI3LCA3LCAyNTQsIDE1NiwgMjcsIDcsIDI1NCwgMTU1LCAyNywgNywgMjU0LCAxNTQsIDI3LCA3LCAyNTQsIDE1MywgMjcsIAotICAgIDcsIDI1NCwgMTUxLCAyNywgNywgMjU0LCAxNTAsIDI3LCA3LCAyNTQsIDE0OSwgMjcsIDcsIDI1NCwgMTQ4LCAyNywgNywgCi0gICAgMjU0LCAxNDcsIDI3LCA3LCAyNTQsIDE0NiwgMjcsIDcsIDI1NCwgMTQ1LCAyNywgNywgMjU0LCAxNDQsIDI3LCA3LCAyNTQsIAotICAgIDE0MywgMjcsIDcsIDI1NCwgMTQyLCAyNywgNywgMjU0LCAxNDEsIDI3LCA3LCAyNTQsIDE0MCwgMjcsIDcsIDI1NCwgMTM5LCAKLSAgICAyNywgNywgMjU0LCAxMzgsIDI3LCA3LCAyNTQsIDEzNywgMjcsIDcsIDI1NCwgMTM2LCAyNywgNywgMjU0LCAxMzUsIDI3LCAKLSAgICA3LCAyNTQsIDEzNCwgMjcsIDcsIDI1NCwgMTMzLCAyNywgNywgMjU0LCAxMzIsIDI3LCA3LCAyNTQsIDEzMSwgMjcsIDcsIAotICAgIDI1NCwgMTMwLCAyNywgNywgMjU0LCAxMjksIDI3LCA3LCAyNTQsIDEyOCwgMjcsIDcsIDI1NCwgMTI3LCAyNywgNywgMjU0LCAKLSAgICAxMjYsIDI3LCA3LCAyNTQsIDEyNSwgMjcsIDcsIDI1NCwgMTI0LCAyNywgNywgMjU0LCAxMjMsIDI3LCA3LCAyNTQsIDEyMiwgCi0gICAgMjcsIDcsIDI1NCwgMTIxLCAyNywgNywgMjU0LCAxMjAsIDI3LCA3LCAyNTQsIDExOSwgMjcsIDcsIDI1NCwgMTE4LCAyNywgCi0gICAgNywgMjU0LCAxMTYsIDI3LCA3LCAyNTQsIDExNSwgMjcsIDcsIDI1NCwgMTE0LCAyNywgNywgMjU0LCAxMTMsIDI3LCA3LCAKLSAgICAyNTQsIDExMiwgMjcsIDcsIDI1NCwgMTExLCAyNywgNywgMjU0LCAxMTAsIDI3LCA3LCAyNTQsIDEwOSwgMjcsIDcsIDI1NCwgCi0gICAgMTA4LCAyNywgNywgMjU0LCAxMDcsIDI3LCA3LCAyNTQsIDEwNiwgMjcsIDcsIDI1NCwgMTA1LCAyNywgNywgMjU0LCAxMDMsIAotICAgIDI3LCA3LCAyNTQsIDEwMiwgMjcsIDcsIDI1NCwgMTAxLCAyNywgNywgMjU0LCAxMDAsIDI3LCA3LCAyNTQsIDk5LCAyNywgNywgCi0gICAgMjU0LCA5OCwgMjcsIDcsIDI1NCwgOTcsIDI3LCA3LCAyNTQsIDk2LCAyNywgNywgMjU0LCA5NSwgMjcsIDcsIDI1NCwgOTQsIAotICAgIDI3LCA3LCAyNTQsIDkzLCAyNywgNywgMjU0LCA5MiwgMjcsIDcsIDI1NCwgOTEsIDI3LCA3LCAyNTQsIDkwLCAyNywgNywgCi0gICAgMjU0LCA4OSwgMjcsIDcsIDI1NCwgODgsIDI3LCA3LCAyNTQsIDg3LCAyNywgNywgMjU0LCA4NiwgMjcsIDcsIDI1NCwgODUsIAotICAgIDI3LCA3LCAyNTQsIDg0LCAyNywgNywgMjU0LCA4MywgMjcsIDcsIDI1NCwgODIsIDI3LCA3LCAyNTQsIDgxLCAyNywgNywgCi0gICAgMjU0LCA4MCwgMjcsIDcsIDI1NCwgNzksIDI3LCA3LCAyNTQsIDc4LCAyNywgNywgMjU0LCA3NywgMjcsIDcsIDI1NCwgNzYsIAotICAgIDI3LCA3LCAyNTQsIDc1LCAyNywgNywgMjU0LCA3NCwgMjcsIDcsIDI1NCwgNzMsIDI3LCA3LCAyNTQsIDcyLCAyNywgNywgCi0gICAgMjU0LCA3MSwgMjcsIDcsIDI1NCwgNzAsIDI3LCA3LCAyNTQsIDY5LCAyNywgNywgMjU0LCA2OCwgMjcsIDcsIDI1NCwgNjcsIAotICAgIDI3LCA3LCAyNTQsIDY2LCAyNywgNywgMjU0LCA2NSwgMjcsIDcsIDI1NCwgNjQsIDI3LCA3LCAyNTQsIDYzLCAyNywgNywgCi0gICAgMjU0LCA2MiwgMjcsIDcsIDI1NCwgNjEsIDI3LCA3LCAyNTQsIDYwLCAyNywgNywgMjU0LCA1OSwgMjcsIDcsIDI1NCwgNTgsIAotICAgIDI3LCA3LCAyNTQsIDU3LCAyNywgNywgMjU0LCA1NiwgMjcsIDcsIDI1NCwgNTUsIDI3LCA3LCAyNTQsIDU0LCAyNywgNywgCi0gICAgMjU0LCA1MywgMjcsIDcsIDI1NCwgNTIsIDI3LCA3LCAyNTQsIDUxLCAyNywgNywgMjU0LCA1MCwgMjcsIDcsIDI1NCwgNDksIAotICAgIDI3LCA3LCAyNTQsIDQ4LCAyNywgNywgMjU0LCA0NywgMjcsIDcsIDI1NCwgNDYsIDI3LCA3LCAyNTQsIDQ1LCAyNywgNywgCi0gICAgMjU0LCA0NCwgMjcsIDcsIDI1NCwgNDMsIDI3LCA3LCAyNTQsIDQyLCAyNywgNywgMjU0LCA0MSwgMjcsIDcsIDI1NCwgNDAsIAotICAgIDI3LCA3LCAyNTQsIDM5LCAyNywgNywgMjU0LCAzOCwgMjcsIDcsIDI1NCwgMzcsIDI3LCA3LCAyNTQsIDM2LCAyNywgNywgCi0gICAgMjU0LCAzNSwgMjcsIDcsIDI1NCwgMzMsIDI3LCA3LCAyNTQsIDMyLCAyNywgNywgMjU0LCAzMSwgMjcsIDcsIDI1NCwgMzAsIAotICAgIDI3LCA3LCAyNTQsIDI5LCAyNywgNywgMjU0LCAyOCwgMjcsIDcsIDI1NCwgMjcsIDI3LCA3LCAyNTQsIDI2LCAyNywgNywgCi0gICAgMjU0LCAyNSwgMjcsIDcsIDI1NCwgMjQsIDI3LCA3LCAyNTQsIDIzLCAyNywgNywgMjU0LCAyMiwgMjcsIDcsIDI1NCwgMjEsIAotICAgIDI3LCA3LCAyNTQsIDIwLCAyNywgNywgMjU0LCAxOSwgMjcsIDcsIDI1NCwgMTgsIDI3LCA3LCAyNTQsIDE3LCAyNywgNywgCi0gICAgMjU0LCAxNiwgMjcsIDcsIDI1NCwgMTUsIDI3LCA3LCAyNTQsIDE0LCAyNywgNywgMjU0LCAxMywgMjcsIDcsIDI1NCwgMTIsIAotICAgIDI3LCA3LCAyNTQsIDExLCAyNywgNywgMjU0LCAxMCwgMjcsIDcsIDI1NCwgOSwgMjcsIDcsIDI1NCwgOCwgMjcsIDcsIDI1NCwgCi0gICAgNywgMjcsIDcsIDI1NCwgNiwgMjcsIDcsIDI1NCwgNSwgMjcsIDcsIDI1NCwgNCwgMjcsIDcsIDI1NCwgMywgMjcsIDcsIAotICAgIDI1NCwgMiwgMjcsIDcsIDI1NCwgMSwgMjcsIDcsIDI1NCwgMCwgMjcsIDcsIDI1MywgMjU1LCAyNywgNywgMjUzLCAyNTQsIAotICAgIDI3LCA3LCAyNTMsIDI1MywgMjcsIDcsIDI1MywgMjUyLCAyNywgNywgMjUzLCAyNTEsIDI3LCA3LCAyNTMsIDI1MCwgMjcsIAotICAgIDcsIDI1MywgMjQ5LCAyNywgNywgMjUzLCAyNDgsIDI3LCA3LCAyNTMsIDI0NywgMjcsIDcsIDI1MywgMjQ2LCAyNywgNywgCi0gICAgMjUzLCAyNDUsIDI3LCA3LCAyNTMsIDI0NCwgMjcsIDcsIDI1MywgMjQzLCAyNywgNywgMjUzLCAyNDIsIDI3LCA3LCAyNTMsIAotICAgIDI0MSwgMjcsIDcsIDI1MywgMjQwLCAyNywgNywgMjUzLCAyMzksIDI3LCA3LCAyNTMsIDIzOCwgMjcsIDcsIDI1MywgMjM3LCAKLSAgICAyNywgNywgMjUzLCAyMzYsIDI3LCA3LCAyNTMsIDIzNSwgMjcsIDcsIDI1MywgMjM0LCAyNywgNywgMjUzLCAyMzMsIDI3LCAKLSAgICA3LCAyNTMsIDIzMiwgMjcsIDcsIDI1MywgMjMxLCAyNywgNywgMjUzLCAyMzAsIDI3LCA3LCAyNTMsIDIyOSwgMjcsIDcsIAotICAgIDI1MywgMjI4LCAyNywgNywgMjUzLCAyMjcsIDI3LCA3LCAyNTMsIDIyNiwgMjcsIDcsIDI1MywgMjI1LCAyNywgNywgMjUzLCAKLSAgICAyMjQsIDI3LCA3LCAyNTMsIDIyMywgMjcsIDcsIDI1MywgMjIyLCAyNywgNywgMjUzLCAyMjEsIDI3LCA3LCAyNTMsIDIyMCwgCi0gICAgMjcsIDcsIDI1MywgMjE5LCAyNywgNywgMjUzLCAyMTgsIDI3LCA3LCAyNTMsIDIxNywgMjcsIDcsIDI1MywgMjE2LCAyNywgCi0gICAgNywgMjUzLCAyMTUsIDI3LCA3LCAyNTMsIDIxNCwgMjcsIDcsIDI1MywgMjEzLCAyNywgNywgMjUzLCAyMTIsIDI3LCA3LCAKLSAgICAyNTMsIDIxMSwgMjcsIDcsIDI1MywgMjEwLCAyNywgNywgMjUzLCAyMDksIDI3LCA3LCAyNTMsIDIwOCwgMjcsIDcsIDI1MywgCi0gICAgMjA3LCAyNywgNywgMjUzLCAyMDYsIDI3LCA3LCAyNTMsIDIwNSwgMjcsIDcsIDI1MywgMjA0LCAyNywgNywgMjUzLCAyMDMsIAotICAgIDI3LCA3LCAyNTMsIDIwMiwgMjcsIDcsIDI1MywgMjAxLCAyNywgNywgMjUzLCAyMDAsIDI3LCA3LCAyNTMsIDE5OSwgMjcsIAotICAgIDcsIDI1MywgMTk4LCAyNywgNywgMjUzLCAxOTcsIDI3LCA3LCAyNTMsIDE5NiwgMjcsIDcsIDI1MywgMTk1LCAyNywgNywgCi0gICAgMjUzLCAxOTQsIDI3LCA3LCAyNTMsIDE5MywgMjcsIDcsIDI1MywgMTkyLCAyNywgNywgMjUzLCAxOTEsIDI3LCA3LCAyNTMsIAotICAgIDE5MCwgMjcsIDcsIDI1MywgMTg5LCAyNywgNywgMjUzLCAxODgsIDI3LCA3LCAyNTMsIDE4NywgMjcsIDcsIDI1MywgMTg2LCAKLSAgICAyNywgNywgMjUzLCAxODUsIDI3LCA3LCAyNTMsIDE4NCwgMjcsIDcsIDI1MywgMTgzLCAyNywgNywgMjUzLCAxODIsIDI3LCAKLSAgICA3LCAyNTMsIDE4MSwgMjcsIDcsIDI1MywgMTgwLCAyNywgNywgMjUzLCAxNzksIDI3LCA3LCAyNTMsIDE3NywgMjcsIDcsIAotICAgIDI1MywgMTc2LCAyNywgNywgMjUzLCAxNzUsIDI3LCA3LCAyNTMsIDE3NCwgMjcsIDcsIDI1MywgMTczLCAyNywgNywgMjUzLCAKLSAgICAxNzIsIDI3LCA3LCAyNTMsIDE3MSwgMjcsIDcsIDI1MywgMTcwLCAyNywgNywgMjUzLCAxNjksIDI3LCA3LCAyNTMsIDE2OCwgCi0gICAgMjcsIDcsIDI1MywgMTY3LCAyNywgNywgMjUzLCAxNjQsIDI3LCA3LCAyNTMsIDE2MywgMjcsIDcsIDI1MywgMTYyLCAyNywgCi0gICAgNywgMjUzLCAxNjEsIDI3LCA3LCAyNTMsIDE1NywgMjcsIDcsIDI1MywgMTU2LCAyNywgNywgMjUzLCAxNTUsIDI3LCA3LCAKLSAgICAyNTMsIDE1NCwgMjcsIDcsIDI1MywgMTUzLCAyNywgNywgMjUzLCAxNTIsIDI3LCA3LCAyNTMsIDE1MSwgMjcsIDcsIDI1MywgCi0gICAgMTUwLCAyNywgNywgMjUzLCAxNDksIDI3LCA3LCAyNTMsIDE0OCwgMjcsIDcsIDI1MywgMTQ3LCAyNywgNywgMjUzLCAxNDYsIAotICAgIDI3LCA3LCAyNTMsIDE0NSwgMjcsIDcsIDI1MywgMTQ0LCAyNywgNywgMjUzLCAxNDMsIDI3LCA3LCAyNTMsIDE0MiwgMjcsIAotICAgIDcsIDI1MywgMTQxLCAyNywgNywgMjUzLCAxNDAsIDI3LCA3LCAyNTMsIDEzOSwgMjcsIDcsIDI1MywgMTM3LCAyNywgNywgCi0gICAgMjUzLCAxMzYsIDI3LCA3LCAyNTMsIDEzNSwgMjcsIDcsIDI1MywgMTM0LCAyNywgNywgMjUzLCAxMzMsIDI3LCA3LCAyNTMsIAotICAgIDEzMiwgMjcsIDcsIDI1MywgMTMxLCAyNywgNywgMjUzLCAxMzAsIDI3LCA3LCAyNTMsIDEyOSwgMjcsIDcsIDI1MywgMTI4LCAKLSAgICAyNywgNywgMjUzLCAxMjcsIDI3LCA3LCAyNTMsIDEyNiwgMjcsIDcsIDI1MywgMTI1LCAyNywgNywgMjUzLCAxMjQsIDI3LCAKLSAgICA3LCAyNTMsIDEyMywgMjcsIDcsIDI1MywgMTIyLCAyNywgNywgMjUzLCAxMjEsIDI3LCA3LCAyNTMsIDEyMCwgMjcsIDcsIAotICAgIDI1MywgMTE5LCAyNywgNywgMjUzLCAxMTgsIDI3LCA3LCAyNTMsIDExNywgMjcsIDcsIDI1MywgMTE2LCAyNywgNywgMjUzLCAKLSAgICAxMTUsIDI3LCA3LCAyNTMsIDExNCwgMjcsIDcsIDI1MywgMTEzLCAyNywgNywgMjUzLCAxMTIsIDI3LCA3LCAyNTMsIDExMSwgCi0gICAgMjcsIDcsIDI1MywgMTEwLCAyNywgNywgMjUzLCAxMDksIDI3LCA3LCAyNTMsIDEwOCwgMjcsIDcsIDI1MywgMTA3LCAyNywgCi0gICAgNywgMjUzLCAxMDYsIDI3LCA3LCAyNTMsIDEwNSwgMjcsIDcsIDI1MywgMTA0LCAyNywgNywgMjUzLCAxMDMsIDI3LCA3LCAKLSAgICAyNTMsIDEwMiwgMjcsIDcsIDI1MywgMTAxLCAyNywgNywgMjUzLCAxMDAsIDI3LCA3LCAyNTMsIDk5LCAyNywgNywgMjUzLCAKLSAgICA5OCwgMjcsIDcsIDI1MywgOTcsIDI3LCA3LCAyNTMsIDk2LCAyNywgNywgMjUzLCA5NSwgMjcsIDcsIDI1MywgOTQsIDI3LCAKLSAgICA3LCAyNTMsIDkzLCAyNywgNywgMjUzLCA5MiwgMjcsIDcsIDI1MywgOTEsIDI3LCA3LCAyNTMsIDkwLCAyNywgNywgMjUzLCAKLSAgICA4OSwgMjcsIDcsIDI1MywgODgsIDI3LCA3LCAyNTMsIDg3LCAyNywgNywgMjUzLCA4NiwgMjcsIDcsIDI1MywgODUsIDI3LCAKLSAgICA3LCAyNTMsIDg0LCAyNywgNywgMjUzLCA4MywgMjcsIDcsIDI1MywgODIsIDI3LCA3LCAyNTMsIDgxLCAyNywgNywgMjUzLCAKLSAgICA4MCwgMjcsIDcsIDI1MywgNzksIDI3LCA3LCAyNTMsIDc4LCAyNywgNywgMjUzLCA3NywgMjcsIDcsIDI1MywgNzYsIDIxNiwgCi0gICAgMjIxLCAyMTksIDI0NSwgMjE2LCA1NywgMjcsIDcsIDI1MywgNzUsIDI3LCA3LCAyNTMsIDc0LCAyNywgNywgMjUzLCA3MywgCi0gICAgMjcsIDcsIDI1MywgNzIsIDI3LCA3LCAyNTMsIDcxLCAyNywgNywgMjUzLCA3MCwgMjcsIDcsIDI1MywgNjksIDI3LCA3LCAKLSAgICAyNTMsIDY4LCAyNywgNywgMjUzLCA2NywgMjcsIDcsIDI1MywgNjYsIDI3LCA3LCAyNTMsIDY1LCAyNywgNywgMjUzLCA2NCwgCi0gICAgMTk5LCAyNywgNywgMjUzLCA2MywgMjcsIDcsIDI1MywgNjIsIDI3LCA3LCAyNTMsIDYxLCAyNywgNywgMjUzLCA2MCwgMjcsIAotICAgIDcsIDI1MywgNTksIDI3LCA3LCAyNTMsIDU4LCAyNywgNywgMjUzLCA1NywgMjcsIDcsIDI1MywgNTUsIDI3LCA3LCAyNTMsIAotICAgIDUzLCAyNywgNywgMjUzLCA1MSwgMjcsIDcsIDI1MywgNDksIDI3LCA3LCAyNTMsIDQ3LCAyNywgNywgMjUzLCA0NSwgMjcsIAotICAgIDcsIDI1MywgNDMsIDI3LCA3LCAyNTMsIDQxLCAyNywgNywgMjUzLCAzOSwgMjcsIDcsIDI1MywgMzcsIDI0OCwgMTQyLCAKLSAgICAyMjcsIDM2LCA4MiwgMjcsIDcsIDI1MywgMzUsIDI0MSwgODQsIDIyNywgMzYsIDgyLCAyNywgNywgMjUzLCAzNCwgMjcsIDcsIAotICAgIDI1MywgMzIsIDI3LCA3LCAyNTMsIDMwLCAyNywgNywgMjUzLCAyOCwgMjcsIDcsIDI1MywgMjYsIDI3LCA3LCAyNTMsIDI0LCAKLSAgICAyNywgNywgMjUzLCAyMiwgMjcsIDcsIDI1MywgMjAsIDI3LCA3LCAyNTMsIDE4LCAyNywgNywgMjUzLCAxNywgMjcsIDcsIAotICAgIDI1MywgMTYsIDI3LCA3LCAyNTMsIDE1LCAyNywgNywgMjUzLCAxNCwgMjcsIDcsIDI1MywgMTMsIDI3LCA3LCAyNTMsIDEyLCAKLSAgICAyNywgNywgMjUzLCAxMSwgMjcsIDcsIDI1MywgMTAsIDI3LCA3LCAyNTMsIDksIDI3LCA3LCAyNTMsIDgsIDI3LCA3LCAyNTMsIAotICAgIDcsIDI3LCA3LCAyNTMsIDYsIDI3LCA3LCAyNTMsIDUsIDI3LCA3LCAyNTMsIDQsIDI3LCA3LCAyNTMsIDMsIDI3LCA3LCAKLSAgICAyNTMsIDIsIDI3LCA3LCAyNTMsIDEsIDI3LCA3LCAyNTMsIDAsIDI3LCA3LCAyNTIsIDI1NSwgMjcsIDcsIDI1MiwgMjU0LCAKLSAgICAyNywgNywgMjUyLCAyNTMsIDI3LCA3LCAyNTIsIDI1MiwgMjcsIDcsIDI1MiwgMjUxLCAyNywgNywgMjUyLCAyNTAsIDI3LCAKLSAgICA3LCAyNTIsIDI0OSwgMjcsIDcsIDI1MiwgMjQ4LCAyNywgNywgMjUyLCAyNDcsIDI3LCA3LCAyNTIsIDI0NiwgMjcsIDcsIAotICAgIDI1MiwgMjQ1LCAyNywgNywgMjUyLCAyNDQsIDI3LCA3LCAyNTIsIDI0MywgMjcsIDcsIDI1MiwgMjQyLCAyNywgNywgMjUyLCAKLSAgICAyNDEsIDI3LCA3LCAyNTIsIDI0MCwgMjcsIDcsIDI1MiwgMjM5LCAyNywgNywgMjUyLCAyMzgsIDI3LCA3LCAyNTIsIDIzNywgCi0gICAgMjcsIDcsIDI1MiwgMjM2LCAyNywgNywgMjUyLCAyMzUsIDI3LCA3LCAyNTIsIDIzNCwgMjcsIDcsIDI1MiwgMjMzLCAyNywgCi0gICAgNywgMjUyLCAyMzIsIDI3LCA3LCAyNTIsIDIzMSwgMjcsIDcsIDI1MiwgMjMwLCAyNywgNywgMjUyLCAyMjksIDI3LCA3LCAKLSAgICAyNTIsIDIyOCwgMjcsIDcsIDI1MiwgMjI3LCAyNywgNywgMjUyLCAyMjYsIDI3LCA3LCAyNTIsIDIyNSwgMjcsIDcsIDI1MiwgCi0gICAgMjI0LCAyNywgNywgMjUyLCAyMjMsIDI3LCA3LCAyNTIsIDIyMiwgMjcsIDcsIDI1MiwgMjIxLCAyNywgNywgMjUyLCAyMjAsIAotICAgIDI3LCA3LCAyNTIsIDIxOSwgMjcsIDcsIDI1MiwgMjE4LCAyNywgNywgMjUyLCAyMTcsIDI3LCA3LCAyNTIsIDIxNiwgMjcsIAotICAgIDcsIDI1MiwgMjE1LCAyNywgNywgMjUyLCAyMTQsIDI3LCA3LCAyNTIsIDIxMywgMjcsIDcsIDI1MiwgMjEyLCAyNywgNywgCi0gICAgMjUyLCAyMTEsIDI3LCA3LCAyNTIsIDIxMCwgMjcsIDcsIDI1MiwgMjA5LCAyNywgNywgMjUyLCAyMDgsIDI3LCA3LCAyNTIsIAotICAgIDIwNywgMjcsIDcsIDI1MiwgMjA2LCAyNywgNywgMjUyLCAyMDUsIDI3LCA3LCAyNTIsIDIwNCwgMjcsIDcsIDI1MiwgMjAzLCAKLSAgICAyNywgNywgMjUyLCAyMDIsIDI3LCA3LCAyNTIsIDIwMSwgMjcsIDcsIDI1MiwgMjAwLCAyNywgNywgMjUyLCAxOTksIDI3LCAKLSAgICA3LCAyNTIsIDE5OCwgMjcsIDcsIDI1MiwgMTk3LCAyNywgNywgMjUyLCAxOTYsIDI3LCA3LCAyNTIsIDE5NSwgMjcsIDcsIAotICAgIDI1MiwgMTk0LCAyNywgNywgMjUyLCAxOTMsIDI3LCA3LCAyNTIsIDE5MiwgMjcsIDcsIDI1MiwgMTkxLCAyNywgNywgMjUyLCAKLSAgICAxOTAsIDI3LCA3LCAyNTIsIDE4OSwgMjcsIDcsIDI1MiwgMTg4LCAyNywgNywgMjUyLCAxODcsIDI3LCA3LCAyNTIsIDE4NiwgCi0gICAgMjcsIDcsIDI1MiwgMTg1LCAyNywgNywgMjUyLCAxODQsIDI3LCA3LCAyNTIsIDE4MywgMjcsIDcsIDI1MiwgMTgyLCAyNywgCi0gICAgNywgMjUyLCAxODEsIDI3LCA3LCAyNTIsIDE4MCwgMjcsIDcsIDI1MiwgMTc5LCAyNywgNywgMjUyLCAxNzgsIDI3LCA3LCAKLSAgICAyNTIsIDE3NywgMjcsIDcsIDI1MiwgMTc2LCAyNywgNywgMjUyLCAxNzUsIDI3LCA3LCAyNTIsIDE3NCwgMjcsIDcsIDI1MiwgCi0gICAgMTczLCAyNywgNywgMjUyLCAxNzIsIDI3LCA3LCAyNTIsIDE3MSwgMjcsIDcsIDI1MiwgMTcwLCAyNywgNywgMjUyLCAxNjksIAotICAgIDI3LCA3LCAyNTIsIDE2OCwgMjcsIDcsIDI1MiwgMTY3LCAyNywgNywgMjUyLCAxNjYsIDI3LCA3LCAyNTIsIDE2NSwgMjcsIAotICAgIDcsIDI1MiwgMTY0LCAyNCwgMSwgMjE4LCAxOTgsIDIyMiwgMTM2LCAyMjQsIDE5NywgMjQsIDEsIDIxOCwgMTk4LCAyMzgsIAotICAgIDE5OCwgMjM5LCAxNzgsIDI0LCAxLCAyMTgsIDE5OCwgMjE4LCA0NywgMjI0LCAxOTgsIDIxOCwgMTE1LCAyNCwgMSwgMjE4LCAKLSAgICAxOTgsIDIxOCwgNDcsIDIyNCwgMTk4LCAyMTgsIDExNiwgMjQsIDEsIDIxOCwgMTk4LCAyMjMsIDEwNywgMjI0LCAxOTcsIAotICAgIDI0LCAxLCAyMTgsIDE5OCwgMjEyLCAxOTUsIDI0LCAxLCAyMTgsIDE5OCwgMjA4LCAxOTksIDIyNCwgMTk3LCAyNCwgMSwgCi0gICAgMjE4LCAxOTgsIDIyMCwgMjE1LCAyMjQsIDE5NywgMjQsIDEsIDIxOCwgMTk4LCAyMTIsIDI1NCwgMjE5LCAxNjksIDIyMiwgCi0gICAgMzIsIDI0LCAxLCAyMTgsIDE5OCwgMjE4LCA0NywgMjE5LCAxNjksIDIyMiwgMzMsIDIxOCwgMTE1LCAyNCwgMSwgMjE4LCAKLSAgICAxOTgsIDIxOCwgNDcsIDIxOSwgMTY5LCAyMjIsIDMzLCAyMTgsIDExNiwgMjQsIDEsIDIxOCwgMTk4LCAyMjUsIDE1NiwgMjQsIAotICAgIDEsIDIxOCwgMTk4LCAyMDcsIDIwNCwgMjI1LCAxNTcsIDI0LCAxLCAyMTgsIDE5OCwgMjIyLCAxOTcsIDI0LCAxLCAyMTgsIAotICAgIDE5OCwgMjI1LCAxNTMsIDI0LCAxLCAyMTgsIDE5OCwgMjI1LCAxMTEsIDI0LCAxLCAyMTgsIDE5OCwgMjIzLCAxODYsIDI0LCAKLSAgICAxLCAyMTgsIDE5OCwgMjEzLCAxMTQsIDI0LCAxLCAyMTgsIDE5OCwgMjIxLCA5MSwgMjQsIDEsIDIxOCwgMTk4LCAyMjksIAotICAgIDE2MywgMjQsIDEsIDIxOCwgMTk4LCAyMjIsIDAsIDI0LCAxLCAyMTgsIDE5OCwgMjEwLCAxNzksIDI0LCAxLCAyMTgsIDE5OCwgCi0gICAgMjIyLCAxMzUsIDI0LCAxLCAyMTgsIDE5OCwgMjI4LCAxMCwgMjQsIDEsIDIxOCwgMTk4LCAyMjcsIDE3NiwgMjI4LCAxNzUsIAotICAgIDI0LCAxLCAyMTgsIDE5OCwgMjIxLCAxMDEsIDIyNCwgMjA1LCAyNCwgMSwgMjE4LCAxOTgsIDIyNSwgMTYwLCAyNCwgMSwgCi0gICAgMjE4LCAxOTgsIDIxOSwgNjIsIDI0LCAxLCAyMTgsIDE5OCwgMjM4LCAxMDAsIDI0LCAxLCAyMTgsIDE5OCwgMjE5LCAxMjUsIAotICAgIDI0LCAxLCAyMTgsIDE5OCwgMjI0LCA1NSwgMjIyLCAxNzAsIDI0LCAxLCAyMTgsIDE5OCwgMjIwLCAxOTYsIDIyNCwgMjA4LCAKLSAgICAyNCwgMSwgMjE4LCAxOTgsIDEwNiwgMjAyLCAxODgsIDIyMywgMTAwLCAyNCwgMSwgMjE4LCAxOTgsIDIzOCwgMTAxLCAyNCwgCi0gICAgMSwgMjE4LCAxOTgsIDIyMSwgMTAxLCAyMjEsIDEwMiwgMjQsIDEsIDIxOCwgMTk4LCAyMTIsIDkxLCAyNCwgMSwgMjE4LCAKLSAgICAxOTgsIDIyNCwgMTkwLCAyNCwgMSwgMjE4LCAxOTgsIDIyNCwgMjExLCAyNCwgMSwgMjE4LCAxOTgsIDIyNCwgMzEsIDI0LCAKLSAgICAxLCAyMTgsIDE5OCwgMjMwLCAyMSwgMjQsIDEsIDIxOCwgMTk4LCAyMTksIDE2OSwgMjI3LCAyMjMsIDI0LCAxLCAyMTgsIAotICAgIDE5OCwgMjIzLCAyNiwgMjI3LCAyMjMsIDI0LCAxLCAyMTgsIDE5OCwgMjE4LCAyMTksIDI0LCAxLCAyMTgsIDE5OCwgMjI1LCAKLSAgICAxNTQsIDI0LCAxLCAyMTgsIDE5OCwgMjIyLCA3NCwgMjQsIDEsIDIxOCwgMTk4LCAyMTcsIDE3MiwgMjQsIDEsIDIxOCwgCi0gICAgMTk4LCAyMDcsIDIwMSwgMjQsIDEsIDIxOCwgMTk4LCAyMjYsIDIzNSwgMjQsIDEsIDIxOCwgMTk4LCAyMTEsIDI1MSwgMjQsIAotICAgIDEsIDIxOCwgMTk4LCAyMDksIDExNywgMjQsIDEsIDIxOCwgMTk4LCAyMjUsIDE1MSwgMjQsIDEsIDIxOCwgMTk4LCAyMjksIAotICAgIDE3MCwgMjQsIDEsIDIxOCwgMTk4LCAyMjMsIDIyLCAyNCwgMSwgMjE4LCAxOTgsIDIyOCwgMTg4LCAyNCwgMSwgMjE4LCAKLSAgICAxOTgsIDIyNCwgMzIsIDI0LCAxLCAyMTgsIDE5OCwgMjEyLCAxOTEsIDI0LCAxLCAyMTgsIDE5OCwgMjI3LCAyOSwgMjQsIDEsIAotICAgIDIxOCwgMTk4LCAyMzksIDI0NiwgMjQsIDEsIDIxOCwgMTk4LCAyMTUsIDIxMSwgMjQsIDEsIDIxOCwgMTk4LCAyMjgsIDIzMywgCi0gICAgMjQsIDEsIDIxOCwgMTk4LCAyMTEsIDI0NywgMjQsIDEsIDIxOCwgMTk4LCAyMjUsIDEwNywgMjE4LCAxNTcsIDI0LCAxLCAKLSAgICAyMTgsIDE5OCwgMjEyLCAyNDcsIDI0LCAxLCAyMTgsIDE5OCwgMjIxLCAxMDAsIDI0LCAxLCAyMTgsIDE5OCwgMjEyLCAyMzAsIAotICAgIDIyMSwgMTExLCAyMDIsIDE5NiwgMjQsIDEsIDIxOCwgMTk4LCAyMjAsIDIzNywgMjI0LCA1MSwgMjQsIDEsIDIxOCwgMTk4LCAKLSAgICAyMTksIDE2NCwgMjQsIDEsIDIxOCwgMTk4LCAyMjIsIDIsIDI0LCAxLCAyMTgsIDE5OCwgMjA2LCAyMzEsIDI0LCAxLCAyMTgsIAotICAgIDE5OCwgMjIyLCAxNzMsIDI0LCAxLCAyMTgsIDE5OCwgMjI1LCAxNTAsIDI0LCAxLCAyMTgsIDE5OCwgMjIyLCA0NCwgMjQsIAotICAgIDEsIDIxOCwgMTk4LCAyMjUsIDQ5LCAyNCwgMSwgMjE4LCAxOTgsIDIyMCwgMjUxLCAyNCwgMSwgMjE4LCAxOTgsIDIwOSwgCi0gICAgMTIxLCAyNCwgMSwgMjE4LCAxOTgsIDIxMSwgMjQ0LCAyNCwgMSwgMjE4LCAxOTgsIDIxOSwgMTY1LCAyNCwgMSwgMjE4LCAKLSAgICAxOTgsIDIyMSwgMTE1LCAyNCwgMSwgMjE4LCAxOTgsIDIyNSwgMTU4LCAyNCwgMSwgMjE4LCAxOTgsIDIyMCwgMjQ4LCAyNCwgCi0gICAgMSwgMjE4LCAxOTgsIDIyOSwgMjQxLCAyNCwgMSwgMjE4LCAxOTgsIDIyMSwgMTE4LCAyNCwgMSwgMjE4LCAxOTgsIDIwNiwgCi0gICAgNTAsIDI0LCAxLCAyMTgsIDE5OCwgMjI2LCAyMzksIDI0LCAxLCAyMTgsIDE5OCwgMjIyLCAyMzAsIDI0LCAxLCAyMTgsIAotICAgIDE5OCwgMjIzLCA3NSwgMjQsIDEsIDIxOCwgMTk4LCAyMjUsIDQ4LCAyNCwgMSwgMjE4LCAxOTcsIDIyMSwgMTEzLCAyNCwgMSwgCi0gICAgMjE4LCAxOTcsIDIwNywgMjA0LCAyMjUsIDE1NSwgMjQsIDEsIDIxOCwgMTk3LCAyMTIsIDE1MiwgMjQsIDEsIDIxOCwgMTk3LCAKLSAgICAyMTMsIDExOCwgMjA3LCAyMDMsIDI0LCAxLCAyMTgsIDE5NywgMjI3LCAzMSwgMjIxLCA5NywgMjQsIDEsIDIxOCwgMTk3LCAKLSAgICAyMjUsIDU1LCAyMjUsIDE1OSwgMjQsIDEsIDIxOCwgMTk3LCAyMjksIDkyLCAyNCwgMSwgMjE4LCAxOTcsIDIwMywgMTgsIAotICAgIDI0LCAxLCAyMTgsIDE5NywgMjI1LCA1MCwgMjQsIDEsIDIxOCwgMTk3LCAyMzAsIDcsIDI0LCAxLCAyMTgsIDE5NywgMjE5LCAKLSAgICAxOSwgMjQsIDEsIDIxOCwgMTk3LCAyMDMsIDk2LCAyMjcsIDIyMywgMjQsIDEsIDIxOCwgMTk3LCAyMjgsIDI5LCAyMjEsIAotICAgIDExMSwgMjIxLCA2LCAyNCwgMSwgMjE4LCAxOTcsIDIyMSwgOTQsIDIxMywgMTcsIDI0LCAxLCAyMTgsIDE5NywgMjIyLCAKLSAgICAyNDksIDIyMiwgNDcsIDI0LCAxLCAyMTgsIDE5NywgMjM4LCA5OCwgMjQsIDEsIDIxOCwgMTk3LCAyMTgsIDEwNSwgMjQsIDEsIAotICAgIDIxOCwgMTk3LCAyMDcsIDIwNCwgMjIxLCAxMDksIDI0LCAxLCAyMTgsIDE5NywgMjEzLCAyMiwgMjIyLCA0MiwgMjQsIDEsIAotICAgIDIxOCwgMTk3LCAyMTMsIDE4LCAyNCwgMSwgMjE4LCAxOTcsIDIyNCwgMTk4LCAyMDksIDEyMCwgMjQsIDEsIDIxOCwgMTk3LCAKLSAgICAyMjUsIDM3LCAyMjUsIDUxLCAyNCwgMSwgMjE4LCAxOTcsIDIyMCwgMjQ5LCAyMjEsIDk3LCAyNCwgMSwgMjE4LCAxOTcsIAotICAgIDIyOSwgMTU5LCAyNCwgMSwgMjE4LCAxOTcsIDIzOCwgOTksIDI0LCAxLCAyMTgsIDE5NywgMjI5LCAxNTUsIDI0LCAxLCAKLSAgICAyMTgsIDE5NywgMjI4LCAxMDcsIDI0LCAxLCAyMTgsIDE5NywgMjE5LCA2NSwgMjQsIDEsIDIxOCwgMTk3LCAyMDUsIDIzNywgCi0gICAgMjQsIDEsIDIxOCwgMTk3LCAyMjIsIDEzNywgMjIzLCAxODQsIDI0LCAxLCAyMTgsIDE5NywgMjIyLCAxNzIsIDIyNSwgMzMsIAotICAgIDI0LCAxLCAyMTgsIDE5NywgMjAzLCAyMTUsIDI0LCAxLCAyMTgsIDE5NywgMjE1LCAxMiwgMjQsIDEsIDIxOCwgMTk3LCAKLSAgICAyMTAsIDE0LCAyNCwgMSwgMjE4LCAxOTcsIDIyNCwgMjEwLCAyNCwgMSwgMjE4LCAxOTcsIDIyMiwgMTU2LCAyNCwgMSwgCi0gICAgMjE4LCAxOTcsIDIyMiwgMTU3LCAyMjgsIDcsIDI0LCAxLCAyMTgsIDE5NywgMjI0LCAyMDAsIDI0LCAxLCAyMTgsIDE5NywgCi0gICAgMjEwLCAyMzAsIDI0LCAxLCAyMTgsIDE5NywgMjI1LCA0MSwgMjQsIDEsIDIxOCwgMTk3LCAyMjQsIDM2LCAyNCwgMSwgMjE4LCAKLSAgICAxOTcsIDIyMSwgOSwgMjQsIDEsIDIxOCwgMTk3LCAyMTcsIDE3NiwgMjQsIDEsIDIxOCwgMTk3LCAyMjQsIDIwOSwgMjIyLCAKLSAgICAxNzQsIDI0LCAxLCAyMTgsIDE5NywgMjQwLCAzMSwgMjQsIDEsIDIxOCwgMTk3LCAyMjUsIDI4LCAyNCwgMSwgMjE4LCAxOTcsIAotICAgIDI0MCwgNTMsIDI0LCAxLCAyMTgsIDE5NywgMjI5LCAxNjcsIDI0LCAxLCAyMTgsIDE5NywgMjI1LCAxNzcsIDIyMiwgMzYsIAotICAgIDI0LCAxLCAyMTgsIDE5NywgMjI1LCAxNzcsIDIyMiwgMTIsIDI0LCAxLCAyMTgsIDE5NywgMjI3LCAxNzUsIDI0LCAxLCAKLSAgICAyMTgsIDE5NywgMjIyLCAxODAsIDI0LCAxLCAyMTgsIDE5NywgMjIxLCAxMjAsIDI0LCAxLCAyMTgsIDE5NywgMTkyLCAyNCwgCi0gICAgMSwgMjE4LCAxOTcsIDIyOSwgNzcsIDI0LCAxLCAyMTgsIDE5NywgMjIyLCAxMjUsIDI0LCAxLCAxNjgsIDIyMiwgMTM2LCAKLSAgICAyMjUsIDE1NywgMjQsIDEsIDE2OCwgMjIwLCAyMTQsIDI0LCAxLCAxNjgsIDIwMiwgMTk2LCAyNCwgMSwgMTY4LCAyMDQsIAotICAgIDk1LCAyNCwgMSwgMTY4LCAyMjIsIDE3MywgMjQsIDEsIDE2OCwgMjIzLCAxNCwgMjQsIDEsIDE2OCwgMjIyLCAxNDMsIDI0LCAKLSAgICAxLCAxNjgsIDIzOCwgMTA4LCAyNCwgMSwgMTY4LCAyMjUsIDQ1LCAyNCwgMSwgMTY4LCAyMzgsIDIwNSwgMjQsIDEsIDE2OCwgCi0gICAgMjIwLCAyMzksIDIyNCwgOTEsIDIyNCwgMjEyLCAyNCwgMSwgMTY4LCAyMjEsIDg5LCAyMjUsIDM2LCAyNCwgMSwgMTY4LCAKLSAgICAyMjUsIDQyLCAyNCwgMSwgMTY4LCAyMTgsIDExMSwgMjQsIDEsIDE2OCwgMjIyLCAyNTUsIDI0LCAxLCAxNjgsIDIyNSwgNTMsIAotICAgIDI0NywgODgsIDI0LCAxLCAxNjgsIDIyOSwgMTU3LCAyNCwgMSwgMTY4LCAyMzgsIDEwOSwgMjQsIDEsIDE2OCwgMjI5LCAKLSAgICAxNjQsIDI0LCAxLCAxNjgsIDIwMiwgMjE0LCAyMjMsIDIxNSwgMjQsIDEsIDE2OCwgMjIwLCAyMDgsIDI0LCAxLCAxNjgsIAotICAgIDIyNSwgMzAsIDI0LCAxLCAxNjgsIDIyMSwgMTE5LCAyNCwgMSwgMTY4LCAyMjUsIDM2LCAyNCwgMSwgMTY4LCAyMDMsIDE5LCAKLSAgICAyNCwgMSwgMTY4LCAyMjgsIDI0MSwgMjQsIDEsIDE2OCwgMjMwLCA0MSwgMjQsIDEsIDE2OCwgMjEzLCAxMTMsIDI0LCAxLCAKLSAgICAxNjgsIDIyMywgOCwgMjQsIDEsIDE2OCwgMjEwLCAxMiwgMjQsIDEsIDE2OCwgMjIyLCAxNiwgMjQsIDEsIDE2OCwgMjA4LCAKLSAgICAxOTksIDIwMiwgMTk5LCAyNCwgMSwgMTY4LCAyMTEsIDUsIDI0LCAxLCAxNjgsIDIyMiwgMTYzLCAyMjEsIDYsIDI0LCAxLCAKLSAgICAxNjgsIDIwNSwgMjM2LCAyNCwgMSwgMTY4LCAyMjMsIDc4LCAyNCwgMSwgMTY4LCAyMjUsIDE3NywgMjI5LCAxNjYsIDI0LCAKLSAgICAxLCAxNjgsIDIyMSwgMTAyLCAyNCwgMSwgMTY4LCAyMjIsIDE1OCwgMjQsIDEsIDE2OCwgMjI4LCAxMSwgMjQsIDEsIDE2OCwgCi0gICAgMjI1LCAzOCwgMjQsIDEsIDE2OCwgMjI0LCAxODksIDI0LCAxLCAxNjgsIDIyMSwgOTYsIDI0LCAxLCAxNjgsIDIwOSwgMTE2LCAKLSAgICAyNCwgMSwgMTY4LCAyMjIsIDE2MCwgMjQsIDEsIDE2OCwgMjM5LCAxMDYsIDI0LCAxLCAxNjgsIDIyMywgMTMsIDI0LCAxLCAKLSAgICAxNjgsIDIyMSwgMTIxLCAyNCwgMSwgMTY4LCAyMjEsIDExNywgMjQsIDEsIDE2OCwgMjQ3LCAxNjksIDI0LCAxLCAxNjgsIAotICAgIDIwNSwgMjM4LCAyNCwgMSwgMTY4LCAyMjUsIDQzLCAyNCwgMSwgMTY4LCAyMTUsIDE0NSwgMjQsIDEsIDE2OCwgMjIyLCA0NiwgCi0gICAgMjQsIDEsIDE2OCwgMjI4LCAyOCwgMjQsIDEsIDE2OCwgMjA4LCAxOTYsIDI0LCAxLCAxNjgsIDIyMSwgMTAzLCAyMjIsIAotICAgIDEyNSwgMjQsIDEsIDE2OCwgMjIyLCAzOCwgMjQsIDEsIDE2OCwgMjI5LCAxNzAsIDI0LCAxLCAxNjgsIDIyMiwgMTY1LCAyNCwgCi0gICAgMSwgMTY4LCAyMjUsIDE1MCwgMjQsIDEsIDE2OCwgMjI1LCAzMSwgMjQsIDEsIDE2OCwgMjI2LCAyMzksIDI0LCAxLCAxNjgsIAotICAgIDIyOCwgMTc1LCAyNCwgMSwgMTY4LCAyMjIsIDQ0LCAyNCwgMSwgMTY4LCAyMjIsIDEyNSwgMjQsIDEsIDE2OCwgMjAzLCAKLSAgICAyMDUsIDI0LCAxLCAxNjgsIDIyMiwgMTYxLCAyNCwgMSwgMTY4LCAyMjEsIDEwNiwgMjQsIDEsIDE2OCwgMjIxLCA5OCwgMjQsIAotICAgIDEsIDE2OCwgMjI4LCAxOTAsIDIyMiwgMiwgMjQsIDEsIDE2OCwgMjIxLCAxMDQsIDI0LCAxLCAxNjgsIDIyMywgMjEsIDI0LCAKLSAgICAxLCAxNjgsIDIyNSwgMTc3LCAyMjEsIDEwOSwgMjQsIDEsIDE2OCwgMjAzLCAxMTAsIDI0LCAxLCAxNjgsIDIyMywgMjAsIAotICAgIDI0LCAxLCAxNjgsIDIxMiwgMTk0LCAyNCwgMSwgMTY4LCAyMTMsIDExNiwgMjQsIDEsIDE2OCwgMjI1LCAzOSwgMjQsIDEsIAotICAgIDE2OCwgMjI1LCAxNTcsIDI0LCAxLCAxNjgsIDIyNSwgNDksIDI0LCAxLCAxNjgsIDIyOSwgMTU4LCAyNCwgMSwgMTY4LCAKLSAgICAyMjUsIDQwLCAyNCwgMSwgMTY4LCAyMjksIDE2MiwgMjQsIDEsIDE2OCwgMjI1LCA1MywgMjE4LCAxNjIsIDI0LCAxLCAxNjgsIAotICAgIDIwMiwgMTc5LCAyNCwgMSwgMTY4LCAyMjIsIDM0LCAyNCwgMSwgMTY4LCAyMjQsIDE0NCwgMjQsIDEsIDE2OCwgMjIzLCAKLSAgICAyNDQsIDI0LCAxLCAxNjgsIDIxMiwgMjUwLCAyNCwgMSwgMTY4LCAyMjksIDE4MSwgMjI3LCAyNDYsIDI0LCAxLCAxNjgsIAotICAgIDIyOSwgMTgxLCAyNDAsIDY2LCAyNCwgMSwgMTY4LCAyMjIsIDE5NSwgMjQsIDEsIDE2OCwgMjIzLCA3NSwgMjQsIDEsIDE2OCwgCi0gICAgMjI3LCA5NiwgMjQsIDEsIDE2OCwgMjE4LCAxMjMsIDI0LCAxLCAxNjgsIDIxOSwgOSwgMjQsIDEsIDE2OCwgMjA5LCAxMzIsIAotICAgIDI0LCAxLCAxMzQsIDIyNSwgMjksIDI0LCAxLCAxMzQsIDIwNCwgOTMsIDI0LCAxLCAxMzQsIDIyMiwgMzIsIDI0LCAxLCAKLSAgICAxMzQsIDIyNCwgMTk3LCAyNCwgMSwgMTM0LCAyMjIsIDMwLCAyNCwgMSwgMTM0LCAyMjcsIDE0MSwgMjQsIDEsIDEzNCwgCi0gICAgMjIyLCAzNSwgMjQsIDEsIDEzNCwgMjIxLCAxMTYsIDI0LCAxLCAxMzQsIDIyMiwgMTc5LCAyNCwgMSwgMTM0LCAyMjEsIDYsIAotICAgIDI0LCAxLCAxMzQsIDIwMywgMjE2LCAyNCwgMSwgMTM0LCAyMjIsIDEzMywgMjQsIDEsIDEzNCwgMjEzLCA0MSwgMjQsIDEsIAotICAgIDEzNCwgMjIyLCAxNDQsIDI0LCAxLCAxMzQsIDIyOSwgMTY1LCAyNCwgMSwgMTM0LCAyMDksIDExOCwgMjQsIDEsIDEzNCwgCi0gICAgMjEzLCAyMCwgMjQsIDEsIDEzNCwgMjIyLCA0MywgMjQsIDEsIDEzNCwgMjEwLCAyMzAsIDI0LCAxLCAxMzQsIDIyOSwgMTcwLCAKLSAgICAyNCwgMSwgMTM0LCAyMDMsIDk4LCAyNCwgMSwgMTM0LCAyMjgsIDE5MSwgMjQsIDEsIDEzNCwgMjE0LCAyMzMsIDI0LCAxLCAKLSAgICAxMzQsIDIyNCwgMjAyLCAyNCwgMSwgMTM0LCAyMjMsIDEyLCAyNCwgMSwgMTM0LCAyMjUsIDEyNSwgMjQsIDEsIDEzNCwgCi0gICAgMjI0LCAyMDgsIDI0LCAxLCAxMzQsIDIxMywgMTE1LCAyNCwgMSwgMTM0LCAyMDMsIDQyLCAyNCwgMSwgMTM0LCAyMjIsIDM3LCAKLSAgICAyNCwgMSwgMTM0LCAyMjksIDE2MSwgMjI1LCAzMiwgMjQsIDEsIDEzNCwgMjIyLCAxNDAsIDI0LCAxLCAxMzQsIDIwNywgCi0gICAgMjAzLCAyNCwgMSwgMTM0LCAyMzgsIDExOCwgMjQsIDEsIDEzNCwgMjIyLCAxMzAsIDI0LCAxLCAxMzQsIDI0MCwgMzIsIDI0LCAKLSAgICAxLCAxMzQsIDIyMywgMTYsIDI0LCAxLCAxMzQsIDIyNCwgMTgxLCAyNCwgMSwgMTM0LCAyMjcsIDE2OSwgMjQsIDEsIDEzNCwgCi0gICAgMjIyLCAyNTQsIDI0LCAxLCAxMzQsIDIyNCwgNTAsIDI0LCAxLCAxMzQsIDIyNCwgMTg1LCAyNCwgMSwgMTM0LCAyMTcsIAotICAgIDE1NiwgMjQsIDEsIDEzNCwgMjI0LCAxODMsIDI0LCAxLCAxMzQsIDIyNCwgMTk5LCAyNCwgMSwgMTM0LCAyMjYsIDIyMiwgCi0gICAgMjQsIDEsIDEzNCwgMjIxLCAxMDgsIDI0LCAxLCAxMzQsIDIyNSwgNTIsIDI0LCAxLCAxMzQsIDIyOCwgMTY1LCAyNCwgMSwgCi0gICAgMTM0LCAyMjAsIDI1MSwgMjQsIDEsIDEzNCwgMjA5LCAxMjEsIDI0LCAxLCAxMzQsIDIxMSwgMjQ0LCAyNCwgMSwgMTM0LCAKLSAgICAyMDIsIDE3OSwgMjQsIDEsIDEzNCwgMjI5LCAxNjIsIDI0LCAxLCAxMzQsIDIxNiwgMjAxLCAyNCwgMSwgMTM0LCAyMDksIAotICAgIDE3NSwgMjQsIDEsIDEzNCwgMjIyLCAxNDEsIDI0LCAxLCAxMzQsIDIyNCwgMjA0LCAyNCwgMSwgMTM0LCAyMjEsIDEwNywgCi0gICAgMjQsIDEsIDEzNCwgMjI5LCAxNjAsIDI0LCAxLCAxMzQsIDIxOCwgMTE3LCAyNCwgMSwgMTM0LCAyMTgsIDIxMywgMjQsIDEsIAotICAgIDEzNCwgMjIwLCAyMjUsIDI0LCAxLCAxMzQsIDIyNywgMTc1LCAyNCwgMSwgMTM0LCAyMjIsIDE4MCwgMjQsIDEsIDEzNCwgCi0gICAgMjI0LCAyMDEsIDI0LCAxLCAxMzQsIDIyMiwgMTUzLCAyNCwgMSwgMTM0LCAyMDIsIDE5MywgMjQsIDEsIDEzNCwgMjE5LCAKLSAgICA5NiwgMjQsIDEsIDEzNCwgMjAyLCAxOTIsIDI0LCAxLCAxMzQsIDIyMywgMjEsIDI0LCAxLCAxMzQsIDIyMSwgOTcsIDI0LCAKLSAgICAxLCAxMzQsIDIxMSwgNywgMjQsIDEsIDEzNCwgMjI4LCAxOTUsIDI0LCAxLCAxMzQsIDIyMiwgMTY5LCAyNCwgMSwgMTM0LCAKLSAgICAyMjIsIDEzOCwgMjQsIDEsIDEzNCwgMjA3LCAxODUsIDI0LCAxLCAxMzQsIDIyNCwgMjEyLCAyNCwgMSwgMTM0LCAyMjgsIAotICAgIDE4NSwgMjQsIDEsIDEzNCwgMjIxLCAxMDUsIDI0LCAxLCAxMzQsIDIwOSwgMTE5LCAyNCwgMSwgMTM0LCAyMjUsIDE1MiwgCi0gICAgMjQsIDEsIDEzNCwgMjIyLCAxNzgsIDI0LCAxLCAxMzQsIDIyNywgMTY4LCAyNCwgMSwgMTM0LCAyMjIsIDE1OSwgMjQsIDEsIAotICAgIDEzNCwgMjIxLCAxMTAsIDI0LCAxLCAxMzQsIDIyMiwgMTYsIDI0LCAxLCAxMzQsIDIzOCwgMTAyLCAyNCwgMSwgMTM0LCAKLSAgICAyMjgsIDIwOSwgMjQsIDEsIDEzNCwgMjE2LCAxMDgsIDIyMCwgNDUsIDI0LCAxLCAxMzQsIDIxMCwgMSwgMjQsIDEsIDEzNCwgCi0gICAgMjA4LCAxNDEsIDI0LCAxLCAxMzQsIDIyMCwgMjQ4LCAyNCwgMSwgMTM0LCAyMTYsIDMsIDI0LCAxLCAxMzQsIDIyNywgMjI1LCAKLSAgICAyNCwgMSwgMTM0LCAyMjUsIDcsIDI0LCAxLCAxMzQsIDIyNiwgMTg1LCAyNCwgMSwgMTM0LCAyMTAsIDE3OSwgMjQsIDEsIAotICAgIDEzNCwgMjIzLCAyNDYsIDI0LCAxLCAxMzQsIDIxMywgNiwgMjQsIDEsIDEzNCwgMjEzLCAxNiwgMjQsIDEsIDEzNCwgMjI4LCAKLSAgICAxMzcsIDI0LCAxLCAxMzQsIDIyMSwgODQsIDI0LCAxLCAxMzQsIDIxMiwgMTk5LCAyNCwgMSwgMTM0LCAyMjEsIDk5LCAyNCwgCi0gICAgMSwgMTM0LCAyMTksIDIzLCAyNCwgMSwgMTM0LCAyMjIsIDEwMCwgMjQsIDEsIDEzNCwgMjEyLCAyMjksIDI0LCAxLCAxMzQsIAotICAgIDIxNywgMTcxLCAyNCwgMSwgMTM0LCAyMjMsIDE4NCwgMjQsIDEsIDEzNCwgMjI3LCAxMCwgMjQsIDEsIDEzNCwgMjE2LCAKLSAgICAxMDgsIDIyMywgMjM5LCAyNCwgMSwgMTM0LCAyMDksIDIsIDI0LCAxLCAxMzQsIDIyMSwgODYsIDI0LCAxLCAxMzQsIDIyNSwgCi0gICAgNTMsIDIxMywgMTExLCAyNCwgMSwgMTM0LCAyMTQsIDIzMSwgMjQsIDEsIDEzNCwgMjQwLCAxMDcsIDI0LCAxLCA5MywgMjIzLCAKLSAgICAyMCwgMjQsIDEsIDkzLCAyMDgsIDE0NywgMjQsIDEsIDkzLCAyMjUsIDQyLCAyNCwgMSwgOTMsIDIyOCwgMTEsIDI0LCAxLCAKLSAgICA5MywgMjA1LCAxNzcsIDI0LCAxLCA5MywgMjI3LCAxNiwgMjQsIDEsIDkzLCAyMTksIDE2OCwgMjQsIDEsIDkzLCAyMTEsIAotICAgIDI1NSwgMjQsIDEsIDkzLCAyMTYsIDE3NiwgMjQsIDEsIDkzLCAyMjEsIDExMiwgMjQsIDEsIDkzLCAyMjIsIDI0NywgMjQsIAotICAgIDEsIDkzLCAyMTcsIDE4OCwgMjQsIDEsIDkzLCAyMDksIDIzMiwgMjQsIDEsIDkzLCAyMjIsIDE0NiwgMjQsIDEsIDkzLCAKLSAgICAyMjgsIDIzNywgMjQsIDEsIDkzLCAyMDMsIDIwOCwgMjQsIDEsIDkzLCAyMTQsIDE2NSwgMjQsIDEsIDkzLCAyMjIsIDE3MCwgCi0gICAgMjQsIDEsIDkzLCAyMTksIDE2NSwgMjQsIDEsIDkzLCAyMDgsIDE0OCwgMjQsIDEsIDkzLCAyMjgsIDE4OSwgMjQsIDEsIDkzLCAKLSAgICAyMjcsIDMwLCAyNCwgMSwgOTMsIDIyMSwgMTE1LCAyNCwgMSwgOTMsIDIyMiwgMTIyLCAyNCwgMSwgOTMsIDIyNSwgMTU4LCAKLSAgICAyNCwgMSwgOTMsIDIyMiwgMTM5LCAyNCwgMSwgOTMsIDIyMiwgMTIxLCAyNCwgMSwgOTMsIDIyMSwgMTE0LCAyNCwgMSwgOTMsIAotICAgIDIxNiwgMCwgMjQsIDEsIDkzLCAyMjIsIDM0LCAyNCwgMSwgOTMsIDIxOSwgMjEsIDI0LCAxLCA5MywgMjE1LCAzMywgMjQsIAotICAgIDEsIDkzLCAyMjIsIDE1NCwgMjQsIDEsIDkzLCAyMjQsIDE5MSwgMjQsIDEsIDkzLCAyMzgsIDk2LCAyNCwgMSwgOTMsIDIyMiwgCi0gICAgMTQyLCAyNCwgMSwgOTMsIDIyMiwgNDUsIDI0LCAxLCA5MywgMjI1LCAxMDYsIDI0LCAxLCA5MywgMjI3LCAxMiwgMjQsIDEsIAotICAgIDkzLCAyMjIsIDE3NSwgMjQsIDEsIDkzLCAyMjMsIDQsIDI0LCAxLCA5MywgMjEwLCAwLCAyMjEsIDk3LCAyNCwgMSwgOTMsIAotICAgIDIxMywgMTE3LCAyNCwgMSwgOTMsIDIxNywgMTgxLCAyNCwgMSwgOTMsIDIyMywgMjQsIDIxMiwgNiwgMjQsIDEsIDkzLCAKLSAgICAyMjIsIDE2MiwgMjIxLCA2LCAyNCwgMSwgOTMsIDIwMywgNywgMjQsIDEsIDkzLCAyMzgsIDk3LCAyNCwgMSwgOTMsIDIwNywgCi0gICAgMjAyLCAyNCwgMSwgOTMsIDIwMywgMjIsIDI0LCAxLCA5MywgMjE4LCA2OSwgMjQsIDEsIDkzLCAyMDcsIDE5MCwgMjQsIDEsIAotICAgIDkzLCAyMjksIDE2OCwgMjQsIDEsIDkzLCAyMTEsIDYsIDI0LCAxLCA5MywgMjA5LCAxMjAsIDI0LCAxLCA5MywgMjA1LCAKLSAgICAyMzksIDI0LCAxLCA5MywgMjA0LCA0MywgMjQsIDEsIDkzLCAyMjgsIDExMCwgMjQsIDEsIDkzLCAyMTcsIDE5MSwgMjQsIDEsIAotICAgIDkzLCAyMTAsIDEzLCAyNCwgMSwgOTMsIDIzOCwgMTE3LCAyNCwgMSwgOTMsIDIyMiwgMTg1LCAyNCwgMSwgOTMsIDIxMywgCi0gICAgMTksIDI0LCAxLCA5MywgMjI0LCAxODYsIDI0LCAxLCA5MywgMjI1LCA0NiwgMjQsIDEsIDkzLCAyMjAsIDIxMiwgMjQsIDEsIAotICAgIDkzLCAyMjEsIDI1NCwgMjQsIDEsIDkzLCAyMzgsIDIwMSwgMjQsIDEsIDkzLCAyMDcsIDE5MSwgMjQsIDEsIDkzLCAyMjgsIAotICAgIDE5OSwgMjQsIDEsIDkzLCAyMDMsIDc0LCAyNCwgMSwgOTMsIDIyMCwgMjQ5LCAyNDYsIDMyLCAyNCwgMSwgOTMsIDIwMiwgCi0gICAgMjUzLCAyNCwgMSwgOTMsIDIyNCwgMjAzLCAyNCwgMSwgOTMsIDIyMywgOSwgMjQsIDEsIDkzLCAyMTgsIDE1OCwgMjQsIDEsIAotICAgIDkzLCAyMDIsIDE5OCwgMjQsIDEsIDkzLCAyMjcsIDE3MCwgMjQsIDEsIDkzLCAyMzksIDEwNiwgMjQsIDEsIDkzLCAyMzgsIAotICAgIDIwMCwgMjQsIDEsIDkzLCAyMjIsIDEzMiwgMjQsIDEsIDkzLCAyMjksIDE3MCwgMjQsIDEsIDkzLCAyMjUsIDE2MSwgMjQsIAotICAgIDEsIDkzLCAyMjIsIDE0NSwgMjQsIDEsIDkzLCAyMzgsIDEwMywgMjQsIDEsIDkzLCAyNDAsIDEwOCwgMjQsIDEsIDkzLCAKLSAgICAyMjEsIDg3LCAyNCwgMSwgOTMsIDIxOCwgMjE0LCAyNCwgMSwgOTMsIDIwMywgMjAsIDI0LCAxLCA5MywgMjIyLCAxNzEsIAotICAgIDI0LCAxLCA5MywgMjIwLCAyNDksIDI0OCwgMTAzLCAyNCwgMSwgOTMsIDIyMCwgMTkyLCAyNCwgMSwgOTMsIDIxOCwgNDMsIAotICAgIDI0LCAxLCA5MywgMjI0LCAxNDQsIDI0LCAxLCA5MywgMjM5LCAxMDQsIDI0LCAxLCA5MywgMjIzLCAxMDAsIDI0LCAxLCA5MywgCi0gICAgMjIzLCAyNDQsIDI0LCAxLCA5MywgMjM4LCAxMDIsIDI0LCAxLCA5MywgMjM5LCAxMDksIDc1LCAyNCwgMSwgOTMsIDIyMywgCi0gICAgMTg1LCAyNCwgMSwgOTMsIDIxNywgMTg3LCAyNCwgMSwgOTMsIDIyMiwgMTM0LCAyNCwgMSwgOTMsIDIyOCwgMTc1LCAyNCwgCi0gICAgMSwgOTMsIDIxOCwgMTU1LCAyNCwgMSwgOTMsIDIyMSwgMTAwLCAyNCwgMSwgOTMsIDIwMywgMjEsIDI0LCAxLCA5MywgMjIyLCAKLSAgICAxNTUsIDI0LCAxLCA5MywgMjE5LCAxNjksIDIxOCwgMjUyLCAyNCwgMSwgOTMsIDIzOSwgMTA5LCAyNDcsIDcxLCAyNCwgMSwgCi0gICAgOTMsIDIzOSwgMTc5LCAyNCwgMSwgOTMsIDIyMiwgMzksIDI0LCAxLCA5MywgNjMsIDI0LCAxLCA5MywgMjA4LCAxNDEsIDI0LCAKLSAgICAxLCA5MywgNzgsIDI0LCAxLCA5MywgNzUsIDI0LCAxLCA5MywgMjI4LCA5LCAyNCwgMSwgOTMsIDIxOSwgMTY5LCAyMTgsIAotICAgIDc3LCAyNCwgMSwgOTMsIDIxMCwgMTgsIDI0LCAxLCA5MywgMjA5LCAyMTksIDI0LCAxLCA5MywgMjIzLCAyNCwgMjIzLCAKLSAgICAxNzIsIDIzNiwgMzgsIDI0LCAxLCA5MywgMjEyLCAyNTAsIDI0LCAxLCA5MywgMjAzLCAxNywgMjQsIDEsIDkzLCAyMjIsIAotICAgIDExNSwgMjQsIDEsIDkzLCAyMDIsIDIwMywgMjQsIDEsIDkzLCAyMDIsIDIzMCwgMjEwLCAxNTksIDI0LCAxLCA5MywgMjAyLCAKLSAgICAyMzAsIDI0NSwgMTUxLCAyNCwgMSwgOTMsIDIwMiwgMTg3LCAyNCwgMSwgOTMsIDIwMiwgMTk1LCAyNCwgMSwgOTMsIDIyOSwgCi0gICAgMTU2LCAyNCwgMSwgOTMsIDIxOCwgMjEyLCAyNCwgMSwgOTMsIDIyMiwgNDAsIDI0MSwgMzksIDI0LCAxLCA5MywgMjE3LCAKLSAgICAxODMsIDI0LCAxLCA5MywgMjAzLCAyMTQsIDI0LCAxLCA5MywgMjQwLCA1MywgMjQsIDEsIDkzLCAyMDYsIDUwLCAyNCwgMSwgCi0gICAgOTMsIDIyNiwgMjM5LCAyNCwgMSwgOTMsIDIyNCwgMTU1LCAyNCwgMSwgOTMsIDIxNiwgNzUsIDI0LCAxLCA5MywgMjE2LCAKLSAgICAyMDIsIDI0LCAxLCA5MywgMjIyLCAxMTQsIDI0LCAxLCA5MywgMjIyLCAyMDMsIDI0LCAxLCA5MywgMjEyLCAyNDIsIDI0LCAKLSAgICAxLCA5MywgMjEyLCAyMjksIDI0LCAxLCA5MywgMjM5LCAxMDksIDIxNiwgMTExLCAyNCwgMSwgOTMsIDIwMSwgMjAxLCAyNCwgCi0gICAgMSwgOTMsIDIxOCwgMTY3LCAyNCwgMSwgOTMsIDIyNywgMTAsIDI0LCAxLCA5MywgMjI5LCAyNiwgMjQsIDEsIDkzLCAyMjQsIAotICAgIDI0MCwgMjQsIDEsIDkzLCAxOTIsIDI0LCAxLCA5MywgMjI1LCAxMDMsIDI0LCAxLCA5MywgMjA5LCAxMjIsIDI0LCAxLCA5MywgCi0gICAgMjI5LCAxMDAsIDI0LCAxLCA5MywgMjI0LCA1NCwgMjQsIDEsIDkzLCAyMDksIDE1MiwgMjQsIDEsIDkzLCAyNDAsIDc3LCAKLSAgICAyNCwgMSwgOTMsIDIzOCwgOTAsIDI0LCAxLCAyMTgsIDE5NiwgMTczLCAyNCwgMSwgMjE4LCAxOTYsIDY4LCAyNCwgMSwgCi0gICAgMjE4LCAxOTYsIDIyOCwgMjA5LCAyNCwgMSwgMjE4LCAxOTYsIDI0MSwgMTYxLCAyNCwgMSwgMjE4LCAxOTYsIDIxNiwgMTM1LCAKLSAgICAyNCwgMSwgMjE4LCAxOTYsIDIxMCwgMSwgMjQsIDEsIDIxOCwgMTk2LCAyMjAsIDI0OCwgMjQsIDEsIDIxOCwgMTk2LCAyMjgsIAotICAgIDExMywgMjQsIDEsIDIxOCwgMTk2LCAyMTYsIDMsIDI0LCAxLCAyMTgsIDE5NiwgMjE2LCA1MCwgMjQsIDEsIDIxOCwgMTk2LCAKLSAgICAyMjUsIDcsIDI0LCAxLCAyMTgsIDE5NiwgMjEwLCAxOCwgMjQsIDEsIDIxOCwgMTk2LCAyMjMsIDIzLCAyNCwgMSwgMjE4LCAKLSAgICAxOTYsIDIyMiwgNDYsIDI0LCAxLCAyMTgsIDE5NiwgMjI2LCAxODUsIDI0LCAxLCAyMTgsIDE5NiwgMjEwLCAxNzksIDI0LCAKLSAgICAxLCAyMTgsIDE5NiwgMjEzLCA2LCAyNCwgMSwgMjE4LCAxOTYsIDIxMiwgMTYyLCAyNCwgMSwgMjE4LCAxOTYsIDIxMywgCi0gICAgMTEzLCAyNCwgMSwgMjE4LCAxOTYsIDIyOCwgMTM3LCAyNCwgMSwgMjE4LCAxOTYsIDIyOSwgMTcwLCAyNCwgMSwgMjE4LCAKLSAgICAxOTYsIDIyMSwgNTUsIDI0LCAxLCAyMTgsIDE5NiwgMjIxLCA4NCwgMjQsIDEsIDIxOCwgMTk2LCAyMjIsIDE3LCAyNCwgMSwgCi0gICAgMjE4LCAxOTYsIDIwMiwgMjI5LCAyNCwgMSwgMjE4LCAxOTYsIDIxMiwgMTk5LCAyNCwgMSwgMjE4LCAxOTYsIDE5OCwgMjQsIAotICAgIDEsIDIxOCwgMTk2LCAyMjEsIDExOCwgMjQsIDEsIDIxOCwgMTk2LCAyMTgsIDIxMiwgMjQsIDEsIDIxOCwgMTk2LCAyMjEsIAotICAgIDk5LCAyNCwgMSwgMjE4LCAxOTYsIDIwMywgMjE0LCAyNCwgMSwgMjE4LCAxOTYsIDIxOSwgMjMsIDI0LCAxLCAyMTgsIDE5NiwgCi0gICAgMjE1LCAxNDUsIDI0LCAxLCAyMTgsIDE5NiwgMjIyLCAxMDAsIDI0LCAxLCAyMTgsIDE5NiwgMjE2LCA3NSwgMjQsIDEsIAotICAgIDIxOCwgMTk2LCAyMjksIDE4MCwgMjQsIDEsIDIxOCwgMTk2LCAyMjIsIDEzMSwgMjQsIDEsIDIxOCwgMTk2LCAyMjIsIDE4MiwgCi0gICAgMjQsIDEsIDIxOCwgMTk2LCAyMTIsIDI0MiwgMjQsIDEsIDIxOCwgMTk2LCAyMTcsIDE4OCwgMjQsIDEsIDIxOCwgMTk2LCAKLSAgICAyMzksIDE3OSwgMjQsIDEsIDIxOCwgMTk2LCAyMDQsIDExMSwgMjQsIDEsIDIxOCwgMTk2LCAyMjcsIDE0OCwgMjQsIDEsIAotICAgIDIxOCwgMTk2LCAyMjcsIDEwLCAyNCwgMSwgMjE4LCAxOTYsIDIyOSwgMjYsIDI0LCAxLCAyMTgsIDE5NiwgMjI1LCA0NCwgCi0gICAgMjQsIDEsIDIxOCwgMTk2LCAyMTYsIDEwNywgMjQsIDEsIDIxOCwgMTk2LCAxOTIsIDI0LCAxLCAyMTgsIDE5NiwgMjI0LCAKLSAgICA4MiwgMjQsIDEsIDIxOCwgMTk2LCAyMjUsIDUyLCAyNCwgMSwgMjE4LCAxOTYsIDIwOSwgMTMyLCAyNCwgMSwgMjE4LCAxOTYsIAotICAgIDIyOCwgMjQ0LCAyNCwgMSwgMjE4LCAxOTYsIDIxNCwgMjUxLCAyNCwgMSwgMjE4LCAxOTYsIDIwNCwgMTYyLCAyMjMsIDI0OSwgCi0gICAgMSwgMjEwLCAyMiwgMjIzLCAyNDksIDEsIDIyMiwgMTUxLCAyMjMsIDI0OSwgMSwgMjAyLCAyNDcsIDIyMywgMjQ5LCAxLCAKLSAgICAyMjQsIDExMiwgMjIzLCAyNDksIDEsIDI0OSwgMzIsIDIyMywgMjQ5LCAxLCAyNDQsIDIxMiwgMjIzLCAyNDksIDEsIDYzLCAKLSAgICAyMjMsIDI0OSwgMSwgMjE4LCAxOTIsIDIyMywgMjQ5LCAxLCAyMjksIDEzOSwgMjIzLCAyNDksIDEsIDIzNywgOTUsIDIyMywgCi0gICAgMjQ5LCAxLCAyNDQsIDE4OCwgMjIzLCAyNDksIDEsIDI0NiwgOTgsIDIyMywgMjQ5LCAxLCAyMjksIDIwMCwgMjIzLCAyNDksIAotICAgIDEsIDIyMCwgNDYsIDIyMywgMjQ5LCAxLCAyMjUsIDE1OCwgMjIzLCAyNDksIDEsIDIyMiwgNjgsIDIyMywgMjQ5LCAxLCAKLSAgICAxODUsIDIyMywgMjQ5LCAxLCAyMjAsIDE4LCAyMjMsIDI0OSwgMSwgNzgsIDIyMywgMjQ5LCAxLCAyMTUsIDIyNywgMjIzLCAKLSAgICAyNDksIDEsIDIxMywgMTEsIDIyMywgMjQ5LCAxLCAyMDksIDkxLCAyMjMsIDI0OSwgMSwgMjQxLCAxODksIDIyMywgMjQ5LCAKLSAgICAxLCAyMDQsIDExMSwgMjIzLCAyNDksIDEsIDc0LCAyMjMsIDI0OSwgMSwgMjI5LCAyNiwgMjIzLCAyNDksIDEsIDIyOCwgMTcsIAotICAgIDIyMywgMjQ5LCAxLCAyMjgsIDExMywgMjIzLCAyNDksIDEsIDIzNywgMTQ3LCAyMjMsIDI0OSwgMSwgMjE2LCA1NywgMjIzLCAKLSAgICAyNDksIDEsIDIwOSwgMTY1LCAyMjMsIDI0OSwgMTcsIDIwMiwgODQsIDIyMywgMjQ5LCAxNywgMTA1LCAyMjMsIDI0OSwgMTcsIAotICAgIDEwOCwgMjIzLCAyNDksIDE3LCAxNDcsIDIyMywgMjQ5LCAxNywgMTQ5LCAyMjMsIDI0OSwgMTcsIDE3MCwgMjIzLCAyNDksIAotICAgIDE3LCAxOTUsIDIyMywgMjQ5LCAxNywgMjEzLCAxMTEsIDIyMywgMjQ5LCAxNywgMTk5LCAyMjMsIDI0OSwgMTcsIDIyMiwgCi0gICAgNjMsIDIyMywgMjQ5LCAyNDQsIDE2NiwgMjIzLCAyNDksIDUyLCAyNDQsIDE2NiwgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIAotICAgIDI0MSwgNzQsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAxNzMsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyMTQsIDE3NywgMjQ4LCAKLSAgICAyMTIsIDIwNiwgODMsIDEsIDI0MCwgMTA4LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjI1LCA0NywgMjQ4LCAyMTIsIDIwNiwgCi0gICAgODMsIDEsIDIwMywgOCwgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDIzOCwgMjQ5LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjQzLCAKLSAgICAyMzgsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyMjgsIDI0MywgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDIzMCwgMTAxLCAyNDgsIAotICAgIDIxMiwgMjA2LCA4MywgMSwgMjM1LCAyNTMsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyMDQsIDExMSwgMjQ4LCAyMTIsIDIwNiwgCi0gICAgODMsIDEsIDIwMiwgMTcsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyMzgsIDE5NCwgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIAotICAgIDI0MywgMTEzLCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjQ2LCAyMzgsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyMDYsIDE3MSwgCi0gICAgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDEzNSwgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDI0OSwgMzIsIDI0OCwgMjEyLCAyMDYsIAotICAgIDgzLCAxLCAyMDQsIDE2MywgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDIwMywgNDYsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAKLSAgICAxODUsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyMDQsIDEwOCwgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDYzLCAyNDgsIDIxMiwgCi0gICAgMjA2LCA4MywgMSwgNzgsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyMjAsIDE4LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgNjgsIAotICAgIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyNDEsIDE2MSwgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDc0LCAyNDgsIDIxMiwgMjA2LCAKLSAgICA4MywgMSwgNzUsIDI0OCwgMjEyLCAyMDYsIDgzLCAzOSwgMTM4LCAyMDgsIDE2MSwgMjQ4LCAyMTIsIDIwNiwgODMsIDM5LCAKLSAgICAxMjQsIDIwOCwgMTYxLCAyNDgsIDIxMiwgMjA2LCA4MywgMzksIDIyNCwgMTUwLCAyMDgsIDE2MSwgMjQ4LCAyMTIsIDIwNiwgCi0gICAgODMsIDM5LCAyMjYsIDI1MywgMjA4LCAxNjEsIDI0OCwgMjEyLCAyMDYsIDgzLCAzOSwgMjM2LCAyNDIsIDIwOCwgMTYxLCAKLSAgICAyNDgsIDIxMiwgMjA2LCA4MywgMjM5LCAxMDIsIDIxMSwgNjEsIDExOSwgMTE3LCAyMiwgMjI5LCAxOTcsIDExOSwgMTE3LCAKLSAgICAyMiwgMjI5LCAxOTMsIDExOSwgMTE3LCAyMiwgMjI5LCA5NywgMTE5LCAxMTcsIDIyLCAyMjksIDYzLCAxMTksIDExNywgMjIsIAotICAgIDIyOSwgMjE4LCAxMTksIDExNywgMjIsIDIyOSwgMjE1LCAxMTksIDExNywgMjIsIDIyOCwgMjAwLCAxMTksIDExNywgMjIsIAotICAgIDIyOCwgMTcyLCAxMTksIDExNywgMjIsIDIyOSwgMTk5LCAxMTksIDExNywgMjIsIDIyOSwgMTU0LCAxMTksIDExNywgMjIsIAotICAgIDIzMCwgMTcsIDExOSwgMTE3LCAyMiwgMjMwLCAxNCwgMTE5LCAxMTcsIDIyLCAyMjksIDUsIDExOSwgMTE3LCAyMiwgMjI5LCAKLSAgICAyLCAxMTksIDExNywgMjIsIDIyOSwgMjEyLCAxMTksIDExNywgMjIsIDIyOSwgMjEwLCAxMTksIDExNywgMjIsIDIyOCwgCi0gICAgMjAyLCAxMTksIDExNywgMjIsIDIyOCwgMjAxLCAxMTksIDExNywgMjIsIDIyOSwgMjMsIDExOSwgMTE3LCAyMiwgMjI4LCAKLSAgICAyNDcsIDExOSwgMTE3LCAyMiwgMjI5LCA5OSwgMTE5LCAxMTcsIDIyLCAyMjksIDk4LCAxMTksIDExNywgMjIsIDIzMCwgMzIsIAotICAgIDExOSwgMTE3LCAyMiwgMjI5LCAyMTQsIDExOSwgMTE3LCAyMiwgMjI4LCAxNjMsIDExOSwgMTE3LCAyMiwgMjI4LCAxNTQsIAotICAgIDExOSwgMTE3LCAyMiwgMjMwLCA0MCwgMTE5LCAxMTcsIDIyLCAyMzAsIDMzLCAxMTksIDExNywgMTA5LCAyMDYsIDYxLCAKLSAgICAxMTksIDExNywgMTA5LCAyMjEsIDkwLCAxMTksIDExNywgMTA5LCAyMjcsIDI1MSwgMTE5LCAxMTcsIDEwOSwgMjM3LCA3NiwgCi0gICAgMTE5LCAxMTcsIDEwOSwgMjIxLCAyMzAsIDExOSwgMTE3LCAxMDksIDIxNiwgMTY3LCAxMTksIDExNywgMTA5LCAyMjIsIDEsIAotICAgIDExOSwgMTE3LCAxMDksIDIxNywgMTAwLCAxMTksIDExNywgMTA5LCAyMDMsIDYyLCAxMTksIDExNywgMTA5LCAyMzYsIDIyMSwgCi0gICAgMTE5LCAxMTcsIDEwOSwgMjI1LCA2NywgMTE5LCAxMTcsIDEwOSwgMjQ2LCAxNzQsIDExOSwgMTE3LCAxMDksIDIyMywgMjgsIAotICAgIDExOSwgMTE3LCAxMDksIDIzNiwgMTU3LCAxMTksIDExNywgMTA5LCAyMTgsIDg1LCAxMTksIDExNywgMTA5LCAyMjEsIDk1LCAKLSAgICAxMTksIDExNywgMTA5LCAyMjMsIDY1LCAxMTksIDExNywgMTA5LCAyNTAsIDM0LCAxMTksIDExNywgMTA5LCAyMDMsIDE3OCwgCi0gICAgMTE5LCAxMTcsIDEwOSwgMjQ3LCAxNSwgMTE5LCAxMTcsIDEzMSwgMjQ2LCA2NywgMjA3LCAxOTksIDExOSwgMTE3LCAxMzEsIAotICAgIDI0NiwgNjcsIDIxMiwgMTMsIDExOSwgMTE3LCAxMzEsIDI0NiwgNjcsIDIyOSwgMTcyLCAxMTksIDExNywgMTMxLCAyNDYsIAotICAgIDY3LCAyMjksIDEzMCwgMTE5LCAxMTcsIDEzMSwgMjQ2LCA2NywgMjExLCA0LCAxMTksIDExNywgMTMxLCAyNDYsIDY3LCAKLSAgICAyMzYsIDEyMywgMTE5LCAxMTcsIDEzMSwgMjQ2LCA2NywgMjA5LCAyMDYsIDExOSwgMTE3LCAyLCAyMDUsIDE3MywgMjA5LCAKLSAgICA0NCwgMTE5LCAxMTcsIDIsIDIwNSwgMTczLCAyMDgsIDksIDI0NiwgMjI5LCAxMTksIDExNywgMiwgMjQ2LCA2NywgMjQ2LCAKLSAgICAxNjMsIDExOSwgMTE3LCAyLCAyMDUsIDE3MywgMjA5LCA2OSwgMTE5LCAxMTcsIDIsIDIwNSwgMTczLCAyNDAsIDUwLCAxMTksIAotICAgIDExNywgMiwgMjAzLCAxMzYsIDIyMSwgODUsIDExOSwgMTE3LCAyLCAyMDMsIDEzNiwgMjE2LCA1OSwgMTE5LCAxMTcsIDIsIAotICAgIDIwMywgMTM2LCAyMDgsIDEyNCwgMTE5LCAxMTcsIDIsIDIwMywgMTM2LCAyNDAsIDg5LCAxMTksIDExNywgMiwgMjA1LCAKLSAgICAxNzMsIDIxNCwgMTU5LCAxMTksIDExNywgMiwgMjI1LCA2LCAyMTEsIDgsIDExOSwgMTE3LCAyLCAyMDUsIDE3MywgMjIxLCAKLSAgICAxMzQsIDExOSwgMTE3LCAyLCAyMzUsIDE2NywgMjAzLCA4MSwgMTE5LCAxMTcsIDIsIDIwMywgMTc3LCAxMTksIDExNywgMiwgCi0gICAgMjQ2LCA2NywgMjA3LCAyNTIsIDIxNSwgMjE2LCAxMTksIDExNywgMTcsIDIwMiwgODQsIDExOSwgMTE3LCAxNywgMTA1LCAKLSAgICAxMTksIDExNywgMTcsIDEwOCwgMTE5LCAxMTcsIDE3LCAxNDcsIDExOSwgMTE3LCAxNywgMTQ5LCAxMTksIDExNywgMTcsIAotICAgIDE3MCwgMTE5LCAxMTcsIDE3LCAxOTUsIDExOSwgMTE3LCAxNywgMjEzLCAxMTEsIDExOSwgMTE3LCAxNywgMTk5LCAxMTksIAotICAgIDExNywgMTcsIDIyMiwgNjMsIDExOSwgMTE3LCA0MiwgMjA5LCAxNDcsIDExOSwgMTE3LCA0MiwgMjM2LCAxMCwgMTE5LCAKLSAgICAxMTcsIDQyLCAyMDksIDE1MywgMjA5LCAzNCwgMTE5LCAxMTcsIDQyLCAyMjQsIDExMywgMTE5LCAxMTcsIDQyLCAyMzYsIAotICAgIDEyLCAyMjQsIDExMywgMTE5LCAxMTcsIDQyLCAyMDksIDE1MywgMjQ4LCA2OCwgMTE5LCAxMTcsIDQyLCAyMDgsIDcyLCAKLSAgICAxMTksIDExNywgMiwgMjA1LCAxNzMsIDIyNiwgMjM0LCAxMTksIDExNywgMiwgMjAzLCAxMzMsIDExOSwgMTE3LCAyLCAyMzYsIAotICAgIDIxNiwgMTE5LCAxMTcsIDIsIDIwOSwgNTksIDIzNiwgMjE2LCAxMTksIDExNywgMiwgMjAxLCAyNDcsIDIwOSwgMTAyLCAKLSAgICAxMTksIDExNywgMiwgMjM2LCAxNDEsIDExOSwgMTE3LCAyLCAyMjEsIDE0OCwgMTE5LCAxMTcsIDIsIDIwMywgMTY5LCAxMTksIAotICAgIDExNywgMiwgMjIxLCA4OCwgMTE5LCAxMTcsIDIsIDI1MCwgMTgsIDExOSwgMTE3LCAyLCAyMDcsIDEyOSwgMjQ2LCAyMjgsIAotICAgIDExOSwgMTE3LCAyLCAyMjUsIDYsIDIwOCwgMTIsIDExOSwgMTE3LCAyLCAyMDksIDIwNywgMTE5LCAxMTcsIDIsIDIyNywgNywgCi0gICAgMTE5LCAxMTcsIDIsIDIyMywgMjAxLCAxMTksIDExNywgMiwgMjQ2LCA2NywgMjM3LCAxNDMsIDIyNiwgMjEyLCAyMjEsIDkzLCAKLSAgICAyMjEsIDkyLCAxMTksIDExNywgMiwgMjQ2LCA2NywgMjQ1LCAxMDksIDIwOCwgMywgMTE5LCAxMTcsIDIsIDI0NiwgNjcsIAotICAgIDIwNywgMTI3LCAxMTksIDExNywgMiwgMjQ2LCA2NywgMjA3LCAxMjgsIDI0NiwgODYsIDExOSwgMTE3LCAyLCAyNDYsIDY3LCAKLSAgICAyMTcsIDE4NiwgMjQ0LCAxMzUsIDExOSwgMTE3LCAyLCAyNDYsIDY3LCAyMjEsIDE0MSwgMjA4LCAxMzIsIDExOSwgMTE3LCAKLSAgICAyNDYsIDM5LCAyLCAyMDgsIDcsIDExOSwgMTE3LCAyNDYsIDM5LCAyLCAyMDMsIDQ4LCAxMTksIDExNywgMjQ2LCAzOSwgMiwgCi0gICAgMjI3LCA5MywgMTE5LCAxMTcsIDI0NiwgMzksIDIsIDIyNywgMjUwLCAxMTksIDExNywgMjQ2LCAzOSwgMiwgMjAzLCAxMzIsIAotICAgIDExOSwgMTE3LCAyNDYsIDM5LCAyLCAyMjksIDYsIDExOSwgMTE3LCAyNDYsIDM5LCAyLCAyMzcsIDczLCAxMTksIDExNywgCi0gICAgMjQ2LCAzOSwgMiwgMjIzLCAyNDIsIDExOSwgMTE3LCAyNDYsIDM5LCAyLCAyMDksIDQ1LCAxMTksIDExNywgMjQ2LCAzOSwgCi0gICAgMiwgMjA4LCAxNywgMTE5LCAxMTcsIDI0NiwgMzksIDIsIDIxOCwgMjA1LCAxMTksIDExNywgMjQ2LCAzOSwgMiwgMjI5LCAKLSAgICAxNDIsIDExOSwgMTE3LCAyNDYsIDM5LCAyLCAyMzcsIDEzMywgMTE5LCAxMTcsIDI0NiwgMzksIDIsIDIwNiwgODAsIDExOSwgCi0gICAgMTE3LCAyNDYsIDM5LCAyLCAyNDAsIDg2LCAxMTksIDExNywgMjQ2LCAzOSwgMiwgMjAzLCA4OCwgMTE5LCAxMTcsIDI0NiwgCi0gICAgMzksIDIsIDIwNywgMjQ2LCAxMTksIDExNywgMjQ2LCAzOSwgMiwgMjI4LCAxNTgsIDExOSwgMTE3LCAyNDYsIDM5LCAyLCAKLSAgICAyMDQsIDE1MywgMTExLCAxLCAxODUsIDExMSwgMSwgMjQ5LCAzMiwgMTExLCAxLCAxMSwgMTg1LCAxMTEsIDEsIDIxOCwgOTgsIAotICAgIDExMSwgMSwgMTkyLCAxMTEsIDEsIDIyNCwgMTU4LCAxMTEsIDEsIDI1MCwgMTI2LCAxOTIsIDExMSwgMSwgMjQwLCAxMDgsIAotICAgIDExMSwgMSwgMjA2LCA4NiwgMTExLCAxLCAyMDUsIDIzMSwgMTExLCAxLCAyMTAsIDIyLCAxMTEsIDEsIDI0NCwgMjEyLCAKLSAgICAxMTEsIDEsIDExLCAyMDcsIDI0MSwgMTExLCAxLCAxMSwgMjEwLCAyMiwgMTExLCAxLCAyMDcsIDI0MSwgMTExLCAxLCAyNDQsIAotICAgIDEyMCwgMTExLCAxLCAyMDEsIDIwMSwgMTExLCAxLCAyMjIsIDEwNCwgMTExLCAxLCAxMSwgMjIxLCAyMjcsIDExMSwgMSwgCi0gICAgMjUwLCAxMjYsIDIwMSwgMjAxLCAxMTEsIDEsIDIyMSwgMjI3LCAxMTEsIDEsIDIyMSwgMjEzLCAxMTEsIDEsIDIyOCwgMTEzLCAKLSAgICAxMTEsIDEsIDIyNiwgMTk4LCAxMTEsIDEsIDIyNywgMTYxLCAxMTEsIDEsIDIyNywgMTUwLCAxMTEsIDEsIDIwOCwgMTg3LCAKLSAgICAxMTEsIDEsIDI0MywgMTIxLCAxMTEsIDEsIDIwOCwgMTc5LCAxMTEsIDEsIDI0MywgMTIwLCAxMTEsIDEsIDE3MywgMTExLCAKLSAgICAxLCAyMzksIDgsIDExMSwgMSwgMTEsIDE3MywgMTExLCAxLCAyMTcsIDEyNiwgMTExLCAxLCAyMTcsIDEwMywgMTExLCAxLCAKLSAgICAyMjIsIDIwMywgMTExLCAxLCAyMjIsIDE1MiwgMTExLCAxLCAyNTAsIDEyNiwgMjIyLCAyMDMsIDExMSwgMSwgMTUyLCAxMTEsIAotICAgIDEsIDIwMywgMTgyLCAxMTEsIDEsIDIzOCwgMTE5LCAxMTEsIDEsIDIzOCwgOTQsIDExMSwgMSwgMjA3LCAyNTEsIDExMSwgMSwgCi0gICAgMjQxLCAyMzksIDExMSwgMSwgMjIxLCAxMSwgMTExLCAxLCAyMjAsIDI1MCwgMTExLCAxLCAyMDgsIDEwLCAxMTEsIDEsIAotICAgIDI0MSwgMjQ5LCAxMTEsIDEsIDExLCAyMDgsIDEwLCAxMTEsIDEsIDExLCAyNDEsIDI0OSwgMTExLCAxLCAyMTYsIDEzMywgCi0gICAgMjA4LCAxMCwgMTExLCAxLCAyMTMsIDkwLCAxMTEsIDEsIDIxMSwgMTY0LCAxMTEsIDEsIDIwMiwgODAsIDExMSwgMSwgMjAyLCAKLSAgICA4LCAxMTEsIDEsIDIwOCwgMjAsIDExMSwgMSwgMjQxLCAyNTUsIDExMSwgMSwgMTEsIDIwOCwgMjAsIDExMSwgMSwgMjE1LCAKLSAgICAzNiwgMTExLCAxLCAyMDIsIDExNiwgMTExLCAxLCAyMDIsIDksIDExMSwgMSwgMjAxLCAyMzUsIDExMSwgMSwgMjAxLCAyMTUsIAotICAgIDExMSwgMSwgMjUwLCAxMjYsIDIwMSwgMjM1LCAxMTEsIDEsIDIwMSwgMjA3LCAxMTEsIDEsIDIwMSwgMjE0LCAxMTEsIDEsIAotICAgIDIwNCwgMTExLCAxMTEsIDEsIDI1MSwgNzMsIDExMSwgMSwgMjM3LCAxMiwgMTExLCAxLCAyMjMsIDcwLCAxMTEsIDIsIDI1MCwgCi0gICAgNjUsIDExMSwgMiwgMjE2LCAxMzMsIDIwNSwgMTg0LCAxMTEsIDIsIDIxNiwgMTMzLCAyNTAsIDY1LCAxMTEsIDIyLCAyLCAKLSAgICA2MywgMTExLCAyMiwgMiwgMjUyLCAyNSwgMTExLCAyMiwgMiwgMjUxLCA2OSwgMTExLCAyMiwgMiwgMjUwLCAyMzEsIDExMSwgCi0gICAgMjIsIDIsIDI1MCwgMjIzLCAxMTEsIDIyLCAyLCA3OCwgMTExLCAyMiwgMiwgMjIwLCAxOCwgMTExLCAyMiwgMiwgMjA0LCAwLCAKLSAgICAxMTEsIDIyLCAyLCAyMDQsIDE0NCwgMTExLCAyMiwgMiwgNzQsIDExMSwgMjIsIDIsIDI0MSwgOTIsIDExMSwgMjIsIDIsIAotICAgIDI0MSwgNzgsIDExMSwgMjIsIDIsIDIyMCwgNzAsIDExMSwgMjIsIDIsIDc1LCAxMTEsIDIyLCAyLCAyMzUsIDE3MSwgMTExLCAKLSAgICAyMiwgMiwgMjM1LCAxNzAsIDExMSwgMjIsIDIsIDIzNSwgMTY5LCAxMTEsIDIyLCAyLCAyMzAsIDIzNCwgMTExLCAyMiwgMiwgCi0gICAgMjMxLCAxMTAsIDExMSwgMjIsIDIsIDIzMSwgODMsIDExMSwgMjIsIDIsIDIzMCwgMTk3LCAxMTEsIDIyLCAyLCAyMzEsIDI0LCAKLSAgICAxMTEsIDIyLCAyLCA2OCwgMTExLCAyMiwgMiwgMjA3LCAzOSwgMTExLCAyMiwgMiwgMjA3LCAzOCwgMTExLCAyMiwgMiwgCi0gICAgMjA3LCAzNywgMTExLCAyMiwgMiwgMjA2LCAxNzgsIDExMSwgMjIsIDIsIDIwNywgMjEsIDExMSwgMjIsIDIsIDIwNiwgMjQxLCAKLSAgICAxMTEsIDIyLCAyLCAyMDMsIDEyNCwgMTExLCAyMiwgMiwgMjAzLCAxMSwgMTExLCAyMiwgMiwgMjUxLCAxMDksIDExMSwgMjIsIAotICAgIDIsIDI1MSwgMTA1LCAxMTEsIDIyLCAyLCAyNDEsIDIxLCAxMTEsIDIyLCAyLCAyMTUsIDE4OSwgMjQxLCAyMSwgMTExLCAyMiwgCi0gICAgMiwgMjQxLCAyOCwgMTExLCAyMiwgMiwgMjE1LCAxODksIDI0MSwgMjgsIDExMSwgMjIsIDIsIDI1MSwgNjQsIDExMSwgMjIsIAotICAgIDIsIDI0MSwgMTQ1LCAxMTEsIDIyLCAyLCAyNTAsIDM0LCAxMTEsIDIyLCAyLCAyMTksIDIxNiwgMTExLCAyMiwgMiwgMjIzLCAKLSAgICAxNjMsIDExMSwgMjIsIDIsIDIyMiwgMjA1LCAxMTEsIDE0MywgMjE2LCAxNiwgMTExLCAxNDMsIDIwOCwgMTQ1LCAyMTYsIAotICAgIDE2LCAxMTEsIDE0MywgNTUsIDExMSwgMTQzLCA1NiwgMTExLCAxLCAyMDgsIDE1OSwgMTExLCAxLCAyMDgsIDE1OCwgMTExLCAKLSAgICAxLCAyMDgsIDE1NywgMTExLCAxLCAyMDgsIDE1NiwgMTExLCAxLCAyMDgsIDE1NSwgMTExLCAxLCAyMDgsIDE1NCwgMTExLCAKLSAgICAxLCAyMDgsIDE1MywgMTExLCAxLCAyMTYsIDEzMywgMjA4LCAxNjAsIDExMSwgMSwgMjE2LCAxMzMsIDIwOCwgMTU5LCAxMTEsIAotICAgIDEsIDIxNiwgMTMzLCAyMDgsIDE1NywgMTExLCAxLCAyMTYsIDEzMywgMjA4LCAxNTYsIDExMSwgMSwgMjE2LCAxMzMsIDIwOCwgCi0gICAgMTU1LCAxMTEsIDEsIDIxNiwgMTMzLCAyMDgsIDE1MywgNjcsIDEsIDI1MCwgMTI2LCA3NCwgMTcyLCAxLCAyNTAsIDEyNiwgCi0gICAgMjAzLCA1MiwgMTAwLCAxLCAyMzcsIDE3MSwgMTAwLCAxLCAyMDMsIDE5NiwgMTAwLCAxLCAyMTksIDE4NCwgMTAwLCAxLCAKLSAgICAyMTAsIDY5LCAxMDAsIDEsIDI0MCwgMTc0LCAxMDAsIDEsIDIzMCwgNTQsIDEwMCwgMSwgMTU5LCAxMDAsIDEsIDI0OSwgCi0gICAgMjU1LCAxMDAsIDEsIDI0NSwgNTEsIDEwMCwgMSwgMjA2LCAxNjQsIDEwMCwgMSwgMjM5LCA3NSwgMTAwLCAxLCAxNDYsIAotICAgIDEwMCwgMSwgMjE5LCAxODUsIDIyMywgMTYzLCAxMDAsIDEsIDI0NSwgNTIsIDE5NCwgMTAwLCAxLCAyNDAsIDE3NSwgMjIzLCAKLSAgICAxNjMsIDEwMCwgMSwgMjMwLCA1NSwgMjI2LCAxODUsIDEwMCwgMSwgMjE3LCAxLCAxOTQsIDEwMCwgMSwgMjA5LCAxMTAsIAotICAgIDEwMCwgMSwgMjEyLCA0NSwgMjQ0LCAyLCAxMDAsIDEsIDI0NCwgMiwgMTAwLCAxLCAyMjksIDQ4LCAxMDAsIDEsIDIxMiwgCi0gICAgNDUsIDIzMCwgMTg0LCAxMDAsIDEsIDIzNiwgMjI1LCAxMDAsIDEsIDIyNywgMTYyLCAxMDAsIDEsIDIxNiwgNjIsIDEwMCwgCi0gICAgMSwgMjI2LCAxODUsIDEwMCwgMSwgMjIzLCAxNjMsIDEwMCwgMSwgMjMwLCAxODQsIDEwMCwgMSwgMTk0LCAxMDAsIDEsIAotICAgIDIyNiwgMTg2LCAyMjMsIDE2MywgMTAwLCAxLCAyMjMsIDE2NCwgMjI2LCAxODUsIDEwMCwgMSwgMjMwLCAxODUsIDIyNiwgCi0gICAgMTg1LCAxMDAsIDEsIDIxNSwgOTQsIDIzMCwgMTg0LCAxMDAsIDEsIDIyNiwgMTg2LCAzLCAyNDMsIDg1LCAxMDAsIDEsIAotICAgIDIyMywgMTY0LCAzLCAyNDMsIDg1LCAxMDAsIDEsIDIzMCwgMTg1LCAzLCAyNDMsIDg1LCAxMDAsIDEsIDIzMCwgMTg1LCAzLCAKLSAgICAxODcsIDIzMSwgNywgMjUsIDU1LCAxMDAsIDEsIDIxNSwgOTQsIDMsIDI0MywgODUsIDEwMCwgMSwgMjE1LCA5NCwgMywgNzAsIAotICAgIDU2LCAxMDAsIDEsIDIyNiwgMTg2LCAxOTQsIDEwMCwgMSwgMjIzLCAxNjQsIDE5NCwgMTAwLCAxLCAyMzAsIDE4NSwgMTk0LCAKLSAgICAxMDAsIDEsIDIxNSwgOTQsIDE5NCwgMTAwLCAxLCAyMjYsIDE4NiwgMjIzLCAxNjQsIDE5NCwgMTAwLCAxLCAyMjMsIDE2NCwgCi0gICAgMjI2LCAxODYsIDE5NCwgMTAwLCAxLCAyMzAsIDE4NSwgMjI2LCAxODYsIDE5NCwgMTAwLCAxLCAyMTUsIDk0LCAyMzAsIAotICAgIDE4NSwgMTk0LCAxMDAsIDEsIDIzMCwgMTg1LCAyMTUsIDk0LCAzLCAyNDMsIDg1LCAxMDAsIDEsIDIzMCwgMTg1LCAyMjMsIAotICAgIDE2MywgMTAwLCAxLCAyMzAsIDE4NSwgMjIzLCAxNjQsIDE5NCwgMTAwLCAxLCAyMTUsIDk0LCAyMTAsIDY5LCAxMDAsIDEsIAotICAgIDIxNSwgOTQsIDIxMCwgNzAsIDE0NiwgMTAwLCAxLCAyMTUsIDk0LCAyMTksIDE4NCwgMTAwLCAxLCAyMTUsIDk0LCAyMTksIAotICAgIDE4NSwgMTQ2LCAxMDAsIDEsIDIxMCwgNzAsIDE5NCwgMTAwLCAxLCAyMTAsIDcwLCAyMTcsIDEsIDE5NCwgMTAwLCAxLCAKLSAgICAyMDQsIDE0NCwgMTAwLCAxLCAyMDQsIDQwLCAxMDAsIDEsIDIwNCwgMTQ1LCAxNDYsIDEwMCwgMSwgMjE1LCA5NCwgMjIzLCAKLSAgICAxNjMsIDEwMCwgMSwgMjE1LCA5NCwgMjI2LCAxODUsIDEwMCwgMSwgMjMwLCA1NSwgMjE3LCAxLCAxOTQsIDEwMCwgMSwgCi0gICAgMjM5LCA3NiwgMjE3LCAxLCAxOTQsIDEwMCwgMSwgMjE1LCA5NCwgMjMwLCA1NCwgMTAwLCAxLCAyMTUsIDk0LCAyMzAsIDU1LCAKLSAgICAxNDYsIDEwMCwgMSwgNjMsIDEwMCwgMSwgMjEyLCA0NSwgMjE5LCAxOTUsIDEwMCwgMSwgMjIwLCA5NywgMTAwLCAxLCA3OCwgCi0gICAgMTAwLCAxLCAyNTAsIDE3NiwgMTAwLCAxLCA3NSwgMTAwLCAxLCA3NCwgMTAwLCAxLCAyMzEsIDExMCwgMTAwLCAxLCAyMTIsIAotICAgIDIyOCwgNzUsIDEwMCwgMSwgMjA3LCAxNywgMTAwLCAxLCAyNDEsIDE2MSwgMTAwLCAxLCAyMTIsIDQ1LCAyNDEsIDE0NywgCi0gICAgMTAwLCAxLCAyMTUsIDIwOSwgNzUsIDEwMCwgMSwgMjEyLCA0NSwgMjQxLCAxNjEsIDEwMCwgMSwgMTYzLCA3NSwgMTAwLCAxLCAKLSAgICAyMDMsIDUyLCAxMDAsIDEsIDY4LCAxMDAsIDEsIDI0MCwgMjM4LCAxMDAsIDEsIDIwMywgMTQ3LCAxMDAsIDEsIDEwNiwgCi0gICAgMjIzLCAxNjMsIDEwMCwgMSwgMTYzLCA2OCwgMTAwLCAxLCAyMTUsIDIwOSwgNjgsIDEwMCwgMSwgMjA3LCAxOCwgMTAwLCAxLCAKLSAgICAyMTIsIDQ1LCA2OCwgMTAwLCAxLCAyMjAsIDE1LCAxMDAsIDEsIDIxOSwgMTk1LCAxMDAsIDEsIDIxOSwgMjE2LCAxMDAsIDEsIAotICAgIDIwNCwgMTExLCAxMDAsIDEsIDIwNCwgMCwgMTAwLCAxLCAyMDQsIDMwLCAxMDAsIDEsIDIwNCwgNTMsIDEwMCwgMSwgMjAzLCAKLSAgICAyMzAsIDEwMCwgMSwgMjIzLCA3MiwgNjgsIDEwMCwgMSwgMjIzLCA3MiwgNzgsIDEwMCwgMSwgMjIzLCA3MiwgNzUsIDEwMCwgCi0gICAgMSwgMjIzLCA3MiwgNjMsIDEwMCwgMSwgMjE4LCAyMzUsIDI1MCwgMjMxLCAxMDAsIDEsIDIxOCwgMjM1LCAyNTAsIDI0NywgCi0gICAgMTAwLCAxLCAyMTIsIDQ1LCAyNDEsIDkyLCAxMDAsIDEsIDIxMiwgNDUsIDI1MCwgMjMxLCAxMDAsIDEsIDIxMiwgNDUsIAotICAgIDIyMCwgMzEsIDEwMCwgMSwgMTI1LCAyMjYsIDE4NSwgMTAwLCAyNTEsIDg4LCA0OSwgMjM2LCAxMDYsIDIxNCwgMTcyLCAKLSAgICAxMDAsIDI1MSwgODgsIDIyNCwgMTUwLCAyMzYsIDEwNiwgMjE0LCAxNzIsIDEwMCwgMjUxLCA4OCwgNTAsIDIzNiwgMTA2LCAKLSAgICAyMTQsIDE3MiwgMTAwLCAyNTEsIDg4LCAxMjQsIDgwLCAyMTQsIDE3MiwgMTAwLCAyNTEsIDg4LCAyMjQsIDE1MCwgODAsIAotICAgIDIxNCwgMTcyLCAxMDAsIDI1MSwgODgsIDEzOCwgODAsIDIxNCwgMTcyLCAxMDAsIDI1MSwgODgsIDI1MCwgNDAsIDIxNCwgCi0gICAgMTcyLCAxMDAsIDI1MSwgODgsIDI1MCwgNDAsIDIyNywgMjEzLCAyMTQsIDE3MiwgMTAwLCAyNTEsIDg4LCAyNTAsIDQwLCAKLSAgICAyMDksIDIyNiwgMTAwLCAyNTEsIDg4LCAyNTAsIDQwLCAyMDksIDI0OCwgMTAwLCAyNTEsIDg4LCAyNTAsIDQwLCAxODgsIAotICAgIDExMywgMTAwLCAyNTEsIDg4LCAyNTAsIDQwLCAyMzUsIDIwNiwgMTEzLCAxMDAsIDI1MSwgODgsIDI1MCwgNDAsIDIwOSwgCi0gICAgMjI3LCAxMTMsIDEwMCwgMjUxLCA4OCwgMTM4LCAxNjUsIDEwMCwgMjUxLCA4OCwgMTM4LCAyMDgsIDI0NCwgMTY1LCAxMDAsIAotICAgIDI1MSwgODgsIDEzOCwgMjM3LCAyNTMsIDEwMCwgMjUxLCA4OCwgMTM4LCAxNjMsIDIzNywgMjUzLCAxMDAsIDI1MSwgODgsIAotICAgIDEzOCwgMjQzLCA4NSwgMTAwLCAyNTEsIDg4LCAxMzgsIDI0NiwgNjEsIDEwMCwgMjUxLCA4OCwgMTM4LCAyMjcsIDExNCwgCi0gICAgMTAwLCAyNTEsIDg4LCAxMzgsIDIwNCwgNzUsIDEwMCwgMjUxLCA4OCwgMTM4LCAyMDYsIDM4LCAxMDAsIDI1MSwgODgsIAotICAgIDEyNCwgMTY1LCAxMDAsIDI1MSwgODgsIDEyNCwgMjA4LCAyNDQsIDE2NSwgMTAwLCAyNTEsIDg4LCAxMjQsIDIzNywgMjUzLCAKLSAgICAxMDAsIDI1MSwgODgsIDEyNCwgMTYzLCAyMzcsIDI1MywgMTAwLCAyNTEsIDg4LCAxMjQsIDI0MywgODUsIDEwMCwgMjUxLCAKLSAgICA4OCwgMTI0LCAyNDYsIDYxLCAxMDAsIDI1MSwgODgsIDEyNCwgMjI3LCAxMTQsIDEwMCwgMjUxLCA4OCwgMTI0LCAyMDQsIAotICAgIDc1LCAxMDAsIDI1MSwgODgsIDEyNCwgMjA2LCAzOCwgMTAwLCAyNTEsIDg4LCAxMjQsIDQ3LCAxMDAsIDIsIDE1OCwgMywgCi0gICAgMjQ1LCAxMzAsIDEwMCwgMjA5LCA2OCwgMSwgMjE0LCAxNTAsIDEwMCwgNTIsIDgyLCAxMDAsIDIxNywgMTc5LCAyNDYsIAotICAgIDEyNiwgMjM5LCAxMDIsIDIxMSwgNjEsIDIxMiwgMjE1LCAyMzksIDE1OCwgMSwgMjE5LCAyMDEsIDIxMiwgMjE1LCAyMzksIAotICAgIDE1OCwgMjQ1LCAxOTAsIDIxOSwgMjAxLCAyMTIsIDIxNSwgMjM5LCAxNTgsIDEyMSwgMjExLCA3NSwgMjEyLCAyMTUsIDIzOSwgCi0gICAgMTU4LCAxMTIsIDIxMSwgNzUsIDYwLCAzMSwgMTYsIDIxNywgMTk1LCA2MCwgMzEsIDE2LCAyNDQsIDE0NiwgNjAsIDMxLCAKLSAgICAxNiwgMjE4LCAyMzksIDYwLCAzMSwgMTYsIDIxOSwgMTkyLCAyNDEsIDEyNiwgNjAsIDMxLCAxNiwgMjE5LCAxOTIsIDI0MywgCi0gICAgMTcxLCA2MCwgMzEsIDE2LCAyMDYsIDczLCAyNDEsIDEyNiwgNjAsIDMxLCAxNiwgMjA2LCA3MywgMjQzLCAxNzEsIDYwLCAKLSAgICAzMSwgMTYsIDIyOSwgMjIxLCA2MCwgMzEsIDE2LCAyMTAsIDg2LCA2MCwgMzEsIDE2LCAyMTksIDgzLCA2MCwgMzEsIDE2LCAKLSAgICAyMDIsIDIxOSwgNjAsIDMxLCAxNiwgMjAyLCAyMjAsIDI0MywgMTcxLCA2MCwgMzEsIDE2LCAyMjgsIDIyNiwgNjAsIDMxLCAKLSAgICAxNiwgMjUwLCAxNzEsIDI0MSwgMTI2LCA2MCwgMzEsIDE2LCAyNDAsIDIwNiwgMjQxLCAxMjYsIDYwLCAzMSwgMTYsIDIwOSwgCi0gICAgMTYzLCA2MCwgMzEsIDE2LCAyMjksIDE3NiwgNjAsIDMxLCAxNiwgMjUwLCAxNjEsIDYwLCAzMSwgMTYsIDI1MCwgMTYyLCAKLSAgICAyNDMsIDE3MSwgNjAsIDMxLCAxNiwgMjEwLCA5MywgNjAsIDMxLCAxNiwgMjA5LCA1MCwgNjAsIDMxLCAxNiwgMjIwLCA0MiwgCi0gICAgMjUwLCAxMjQsIDYwLCAzMSwgMTYsIDIzOCwgMjMsIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAyMTcsIDE5NCwgNjAsIDMxLCAKLSAgICAxNiwgMjQ2LCAxOTAsIDYwLCAzMSwgMTYsIDIwNiwgNjIsIDYwLCAzMSwgMTYsIDIzMCwgMjA2LCAyNTAsIDEyNCwgNjAsIAotICAgIDMxLCAxNiwgMjI5LCAxNzgsIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAyMjksIDE3NywgMjUwLCAxMjQsIDYwLCAzMSwgMTYsIAotICAgIDIxNCwgMjEwLCA2MCwgMzEsIDE2LCAyMTksIDczLCA2MCwgMzEsIDE2LCAyMTEsIDg0LCAyNTAsIDE2NCwgNjAsIDMxLCAxNiwgCi0gICAgMjE5LCAxOTEsIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAyMDYsIDcyLCAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjUwLCAxNjUsIAotICAgIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAyNTAsIDE1OSwgNjAsIDMxLCAxNiwgMjI5LCAzOCwgNjAsIDMxLCAxNiwgMjE2LCA2OSwgCi0gICAgNjAsIDMxLCAxNiwgMjE4LCAxNjUsIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAyMDgsIDIxNywgNjAsIDMxLCAxNiwgMjUwLCAKLSAgICAyMjksIDYwLCAzMSwgMTYsIDIxNCwgMTUzLCA2MCwgMzEsIDE2LCAyMTAsIDk3LCAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgCi0gICAgMjEwLCA5NywgMjI0LCAyMjEsIDIxMSwgODIsIDYwLCAzMSwgMTYsIDIxOSwgMTg2LCAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgCi0gICAgMjA5LCA4NiwgNjAsIDMxLCAxNiwgMjI3LCAyMDAsIDYwLCAzMSwgMTYsIDI0MiwgMiwgNjAsIDMxLCAxNiwgMjA4LCA4NywgCi0gICAgNjAsIDMxLCAxNiwgMjA5LCAxMzQsIDYwLCAzMSwgMTYsIDIyOCwgMjI5LCA2MCwgMzEsIDE2LCAyNTAsIDE3MSwgMjQwLCAKLSAgICAyMDYsIDIyMiwgMjI2LCA2MCwgMzEsIDE2LCAyMzksIDExMCwgMjUwLCAxMjQsIDYwLCAzMSwgMTYsIDIzMSwgNjIsIDYwLCAKLSAgICAzMSwgMTYsIDIwOCwgNTcsIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAyMjksIDIyNCwgMjA4LCA1NiwgNjAsIDMxLCAxNiwgCi0gICAgMjE5LCAxMSwgNjAsIDMxLCAxNiwgMjE3LCAxOTksIDYwLCAzMSwgMTYsIDIyOSwgNywgNjAsIDMxLCAxNiwgMjQ2LCAxMTAsIAotICAgIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAyMTYsIDE3NywgNjAsIDMxLCAxNiwgMjE5LCA4NiwgMjUwLCAxMjQsIDYwLCAzMSwgCi0gICAgMTYsIDIxOSwgODQsIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAyMzUsIDE2MCwgNjAsIDMxLCAxNiwgMjIzLCA4MiwgNjAsIDMxLCAKLSAgICAxNiwgMjE4LCAyMTcsIDYwLCAzMSwgMTYsIDIyOSwgOCwgMjUxLCA5LCA2MCwgMzEsIDE2LCAyMDgsIDU3LCAyNTEsIDksIAotICAgIDYwLCAzMSwgMTYsIDIxMSwgNTUsIDYwLCAzMSwgMTYsIDIzNywgMjQwLCA2MCwgMzEsIDE2LCAyMzAsIDIwNiwgMjIyLCAKLSAgICAyMjYsIDYwLCAzMSwgMTYsIDIyMCwgNDIsIDIyMiwgMjI2LCA2MCwgMzEsIDE2LCAyMTksIDE5MiwgMjIyLCAyMjYsIDYwLCAKLSAgICAzMSwgMTYsIDIxOCwgMjE2LCA2MCwgMzEsIDE2LCAyMjgsIDI0OCwgNjAsIDMxLCAxNiwgMjE4LCAyMTUsIDYwLCAzMSwgMTYsIAotICAgIDIyOCwgMjI4LCA2MCwgMzEsIDE2LCAyMTksIDEyLCAyMjIsIDIyNiwgNjAsIDMxLCAxNiwgMjI5LCAxNzcsIDIyMiwgMjI3LCAKLSAgICAyNTAsIDIwMiwgNjAsIDMxLCAxNiwgMjI5LCAxNzgsIDIyMiwgMjI3LCAyNTAsIDIwMiwgNjAsIDMxLCAxNiwgMjAyLCAyMTcsIAotICAgIDYwLCAzMSwgMTYsIDI1MCwgMTYyLCAyMjIsIDIyNiwgNjAsIDMxLCAxNiwgMjUwLCAxNjMsIDIxMCwgOTQsIDIyMiwgMjI2LCAKLSAgICA2MCwgMzEsIDE2LCAyMDIsIDIxOCwgNjAsIDMxLCAxNiwgMjI4LCAyMjcsIDYwLCAzMSwgMTYsIDI0MSwgMTIxLCA2MCwgMzEsIAotICAgIDE2LCAyNDYsIDE5MSwgNjAsIDMxLCAxNiwgMjI0LCAxMjIsIDIzMCwgMjA1LCA2MCwgMzEsIDE2LCAyMDYsIDczLCAyMjIsIAotICAgIDIyNiwgNjAsIDMxLCAxNiwgMjE4LCAxNjUsIDIyMiwgMjI2LCA2MCwgMzEsIDE2LCAyMTcsIDIwMCwgMjIyLCAyMjYsIDYwLCAKLSAgICAzMSwgMTYsIDIyMCwgMzgsIDYwLCAzMSwgMTYsIDI1MCwgMTg5LCA2MCwgMzEsIDE2LCAyMjYsIDE5NSwgNjAsIDMxLCAxNiwgCi0gICAgMjE5LCA4NCwgMjIyLCAyMjYsIDYwLCAzMSwgMTYsIDIxOSwgODYsIDIyMiwgMjI2LCA2MCwgMzEsIDE2LCAyNDAsIDI0NCwgCi0gICAgMjE5LCA4NSwgNjAsIDMxLCAxNiwgMjI4LCAxMzUsIDYwLCAzMSwgMTYsIDI1MCwgMTkwLCA2MCwgMzEsIDE2LCAyMDgsIDU3LCAKLSAgICAyMjIsIDIyNiwgNjAsIDMxLCAxNiwgMjQxLCAxMjQsIDYwLCAzMSwgMTYsIDIxMCwgOTcsIDIyMiwgMjI2LCA2MCwgMzEsIAotICAgIDE2LCAyMTAsIDg3LCA2MCwgMzEsIDE2LCAyNDYsIDExMCwgMjIyLCAyMjYsIDYwLCAzMSwgMTYsIDI0MSwgNDMsIDYwLCAzMSwgCi0gICAgMTYsIDIxNCwgMTU0LCAyMjIsIDIyNiwgNjAsIDMxLCAxNiwgMjAzLCAxNjMsIDIyOSwgMzgsIDYwLCAzMSwgMTYsIDIwOCwgCi0gICAgNTQsIDYwLCAzMSwgMTYsIDIxNywgMjAxLCA2MCwgMzEsIDE2LCAyMDgsIDU4LCA2MCwgMzEsIDE2LCAyMDgsIDU1LCA2MCwgCi0gICAgMzEsIDE2LCAyMTcsIDE5OCwgNjAsIDMxLCAxNiwgMjA4LCA1MywgNjAsIDMxLCAxNiwgMjE3LCAxOTcsIDYwLCAzMSwgMTYsIAotICAgIDIzOCwgMjIsIDYwLCAzMSwgMTYsIDI1MCwgMTE2LCA2MCwgMzEsIDE2LCAyNDAsIDI0NCwgMjUwLCAxMTYsIDYwLCAzMSwgCi0gICAgMTYsIDIxOSwgMTg2LCAyMjIsIDIyNiwgNjAsIDMxLCAxNiwgMjA5LCA4NSwgMjQxLCAxLCA2MCwgMzEsIDE2LCAyMDksIDg1LCAKLSAgICAyNDAsIDIwNSwgNjAsIDMxLCAxNiwgMjA5LCA4NywgMjUwLCAxNjYsIDYwLCAzMSwgMTYsIDIwOSwgNzksIDIzMCwgMTksIAotICAgIDI1MCwgMTU4LCA2MCwgMzEsIDE2LCAyMjksIDIyMywgNjAsIDMxLCAxNiwgMjQxLCA4MCwgNjAsIDMxLCAxNiwgMjAzLCAxNCwgCi0gICAgMjI5LCAyMjAsIDYwLCAzMSwgMTYsIDIwMywgMTQsIDI1MCwgMjAyLCA2MCwgMzEsIDE2LCAyMTEsIDgzLCA2MCwgMzEsIDE2LCAKLSAgICAyMjksIDM5LCAyNTAsIDIwMiwgNjAsIDMxLCAxNiwgMjQzLCAxNzIsIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAyMjgsIDIzMCwgCi0gICAgMjUwLCAxMjQsIDYwLCAzMSwgMTYsIDIyOCwgMjMwLCAyNTEsIDksIDYwLCAzMSwgMTYsIDIyOCwgMjMwLCAyMjIsIDIyNiwgCi0gICAgNjAsIDMxLCAxNiwgMjUwLCAxNjUsIDIyMiwgMjI2LCA2MCwgMzEsIDE2LCAyNTAsIDE2NywgNjAsIDMxLCAxNiwgMjQzLCAKLSAgICAxNzEsIDYwLCAzMSwgMTYsIDIwOCwgNjgsIDYwLCAzMSwgMTYsIDIwOSwgMTI1LCA2MCwgMzEsIDE2LCAyMjgsIDI1MiwgNjAsIAotICAgIDMxLCAxNiwgMjI3LCAyMDUsIDI0MSwgNzMsIDI0NiwgMTAwLCA2MCwgMzEsIDE2LCAyMjcsIDIwNSwgMjQyLCAzLCAyNDYsIAotICAgIDEwMSwgNjAsIDMxLCAxNiwgMjI3LCAyMDUsIDIwOCwgNzEsIDI0NiwgMTAxLCA2MCwgMzEsIDE2LCAyMjcsIDIwNSwgMjA5LCAKLSAgICAxMzYsIDI0NiwgMTAxLCA2MCwgMzEsIDE2LCAyMjcsIDIwNSwgMjMxLCA1NywgMjQ2LCAxMDAsIDYwLCAzMSwgMTYsIDIzOCwgCi0gICAgMjMsIDIyMiwgMjI3LCAyNTAsIDIwMiwgNjAsIDMxLCAxNiwgMjM4LCAyMywgMjE5LCA3NCwgMjUwLCAxMTIsIDYwLCAzMSwgCi0gICAgMTYsIDIzOCwgMjMsIDIxOSwgNzQsIDI0NCwgNiwgNjAsIDMxLCAxNiwgMjQzLCAxOTYsIDYwLCAzMSwgMTYsIDI0MywgMTk3LCAKLSAgICAyMTksIDc0LCAyNTAsIDExMywgMjI5LCAyMjAsIDYwLCAzMSwgMTYsIDI0MywgMTk3LCAyMTksIDc0LCAyNTAsIDExMywgCi0gICAgMjUwLCAyMDIsIDYwLCAzMSwgMTYsIDI0MywgMTk3LCAyMTksIDc0LCAyNDQsIDYsIDYwLCAzMSwgMTYsIDIwOCwgNzYsIDYwLCAKLSAgICAzMSwgMTYsIDI1MCwgMTE3LCA2MCwgMzEsIDE2LCAyMzEsIDY0LCA2MCwgMzEsIDE2LCAyNDMsIDIxOSwgNjAsIDMxLCAxNiwgCi0gICAgMjUxLCA3NSwgMjE4LCA1MiwgMjUwLCAxMTgsIDYwLCAzMSwgMTYsIDI1MSwgNzUsIDI1MCwgMTE1LCA2MCwgMzEsIDE2LCAKLSAgICAyNTEsIDc1LCAyNTAsIDExOCwgNjAsIDMxLCAxNiwgMjUxLCA3NSwgMjI0LCAyMTUsIDYwLCAzMSwgMTYsIDI1MSwgNzUsIAotICAgIDIyNCwgMjI2LCA2MCwgMzEsIDE2LCAyNTEsIDc1LCAyMzgsIDI0LCA2MCwgMzEsIDE2LCAyNTEsIDc1LCAyMzgsIDIxLCA2MCwgCi0gICAgMzEsIDE2LCAyNTEsIDc1LCAyMTgsIDUyLCAyMzgsIDI0LCA2MCwgMzEsIDE2LCAyMjUsIDg0LCAyMTcsIDIwNywgMjM1LCAKLSAgICAxNTgsIDYwLCAzMSwgMTYsIDIyNSwgODQsIDI1MSwgMTEsIDIxNywgMjA3LCAyMzUsIDE1OCwgNjAsIDMxLCAxNiwgMjI1LCAKLSAgICA4NCwgMjQ0LCA1LCAyMzUsIDE1OCwgNjAsIDMxLCAxNiwgMjI1LCA4NCwgMjUxLCAxMSwgMjQ0LCA1LCAyMzUsIDE1OCwgNjAsIAotICAgIDMxLCAxNiwgMjI1LCA4NCwgMjA4LCA2MywgMjM1LCAxNTgsIDYwLCAzMSwgMTYsIDIyNSwgODQsIDIwOCwgNzcsIDYwLCAzMSwgCi0gICAgMTYsIDIyNSwgODQsIDIwOSwgMTMwLCAyMzUsIDE1OCwgNjAsIDMxLCAxNiwgMjI1LCA4NCwgMjA5LCAxMzAsIDIyNywgMjA5LCAKLSAgICAyMzUsIDE1OCwgNjAsIDMxLCAxNiwgMjI1LCA4NCwgMjI3LCAyMDksIDIzNSwgMTU4LCA2MCwgMzEsIDE2LCAyMjUsIDg0LCAKLSAgICAyMTgsIDk1LCAyMzUsIDE1OCwgNjAsIDMxLCAxNiwgMjMwLCAyMTMsIDIwOSwgMTU2LCAyMzUsIDE1OSwgNjAsIDMxLCAxNiwgCi0gICAgMjUwLCAxNjMsIDIwOSwgMTU2LCAyMzUsIDE1OSwgNjAsIDMxLCAxNiwgMjQwLCA4MCwgMjA5LCAxMjcsIDYwLCAzMSwgMTYsIAotICAgIDI0MCwgODAsIDIyNCwgNDYsIDYwLCAzMSwgMTYsIDI0MCwgODAsIDI0MywgMjAyLCA2MCwgMzEsIDE2LCAyMjUsIDg0LCAKLSAgICAyMDYsIDY2LCAyMzUsIDE1OCwgNjAsIDMxLCAxNiwgMjI1LCA4NCwgMjE3LCAyMDYsIDIzNSwgMTU4LCA2MCwgMzEsIDE2LCAKLSAgICAyMjUsIDg0LCAyMTgsIDk1LCAyMDksIDEzMCwgMjM1LCAxNTgsIDYwLCAzMSwgMTYsIDIzOCwgMTksIDIyMywgMTY0LCAyNTAsIAotICAgIDE2NiwgNjAsIDMxLCAxNiwgMjM4LCAxOSwgMjIzLCAxNjQsIDI0MywgMTcwLCA2MCwgMzEsIDE2LCAyNDEsIDkwLCAyMzAsIAotICAgIDE5LCAyMzksIDExMCwgMjA1LCAxNzEsIDYwLCAzMSwgMTYsIDIzMSwgNjMsIDYwLCAzMSwgMTYsIDIzMSwgNjEsIDYwLCAzMSwgCi0gICAgMTYsIDIzOSwgMTEwLCAyNTAsIDEyNSwgMjQ0LCA0LCAyMzUsIDE1NywgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDI0MywgMjE3LCAKLSAgICAxODUsIDYwLCAzMSwgMTYsIDIzOSwgMTEwLCAyNDMsIDIxNywgMjIzLCA4MiwgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDIyMywgCi0gICAgNzcsIDIzNSwgMTU4LCA2MCwgMzEsIDE2LCAyMzksIDExMCwgMjQzLCAyMTcsIDI0MywgMjMzLCA2MCwgMzEsIDE2LCAyMzksIAotICAgIDExMCwgMjEyLCA2NCwgMjQzLCAyMTYsIDI0MywgMjMzLCA2MCwgMzEsIDE2LCAyMzksIDExMCwgMjQzLCAyMTcsIDIyOSwgCi0gICAgMjAxLCA2MCwgMzEsIDE2LCAyMzksIDExMCwgMjQzLCAyMTcsIDIwMiwgMTcsIDYwLCAzMSwgMTYsIDIzOSwgMTEwLCAyNDMsIAotICAgIDIxNywgMjIyLCAxMDEsIDIyOSwgMjIwLCA2MCwgMzEsIDE2LCAyMzksIDExMCwgMjQzLCAyMTcsIDIyMiwgMTAxLCAyNTAsIAotICAgIDIwMiwgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDIyNSwgMTI4LCAyNDYsIDEwMiwgMjQzLCAyMDIsIDYwLCAzMSwgMTYsIDIzOSwgCi0gICAgMTEwLCAyMjUsIDEyOCwgMjQ2LCAxMDIsIDIyNCwgNDYsIDYwLCAzMSwgMTYsIDI0MCwgMjcsIDIxMiwgNjQsIDI0NiwgMTAyLCAKLSAgICAyMDYsIDY1LCA2MCwgMzEsIDE2LCAyMzksIDExMCwgMjEyLCA2NCwgMjQ2LCAxMDIsIDIxMCwgOTgsIDYwLCAzMSwgMTYsIAotICAgIDIzOSwgMTEwLCAyMjIsIDIyOSwgNjAsIDMxLCAxNiwgMjQ2LCAxMDMsIDIwMSwgMjQxLCA2MCwgMzEsIDE2LCAyNDYsIDEwMywgCi0gICAgMjI5LCAzNywgNjAsIDMxLCAxNiwgMjQ2LCAxMDMsIDIxMSwgMjE5LCA2MCwgMzEsIDE2LCAyMzksIDExMCwgMjM1LCAyMDYsIAotICAgIDIwMywgMTMsIDIwOSwgMTMxLCA2MCwgMzEsIDE2LCAyMzksIDExMCwgMjQxLCA5MSwgMjUwLCAxOTEsIDYwLCAzMSwgMTYsIAotICAgIDIwMywgMTMsIDIwOCwgNjQsIDYwLCAzMSwgMTYsIDI0MywgMjEwLCAyMDgsIDY0LCA2MCwgMzEsIDE2LCAyNDMsIDIxMCwgCi0gICAgMjA5LCAxMzEsIDYwLCAzMSwgMTYsIDI0MywgMjEwLCAyNTAsIDE2OCwgMjQyLCAzLCAyNDMsIDEwNSwgNjAsIDMxLCAxNiwgCi0gICAgMjQzLCAyMTAsIDIyNCwgNDQsIDIwOSwgMTM1LCAyNDMsIDEwNSwgNjAsIDMxLCAxNiwgMjQzLCAyMTAsIDI0MywgMTkzLCAKLSAgICAyNDAsIDIxOCwgMjQzLCAxMDUsIDYwLCAzMSwgMTYsIDI0MywgMjEwLCAyMDgsIDc0LCAyMjAsIDQ4LCAyNDMsIDEwNSwgNjAsIAotICAgIDMxLCAxNiwgMjAzLCAxMywgMjUwLCAxNjgsIDI0MiwgMywgMjQzLCAxMDUsIDYwLCAzMSwgMTYsIDIwMywgMTMsIDIyNCwgCi0gICAgNDQsIDIwOSwgMTM1LCAyNDMsIDEwNSwgNjAsIDMxLCAxNiwgMjAzLCAxMywgMjQzLCAxOTMsIDI0MCwgMjE4LCAyNDMsIAotICAgIDEwNSwgNjAsIDMxLCAxNiwgMjAzLCAxMywgMjA4LCA3NCwgMjIwLCA0OCwgMjQzLCAxMDUsIDYwLCAzMSwgMTYsIDIzOCwgCi0gICAgMTc1LCAyNDMsIDIwOSwgNjAsIDMxLCAxNiwgMjM4LCAxNzUsIDIwMywgMTIsIDYwLCAzMSwgMTYsIDI0MywgMjE4LCAyNTAsIAotICAgIDE2OCwgMjI0LCAxMjMsIDYwLCAzMSwgMTYsIDI0MywgMjE4LCAyNTAsIDE2OCwgMjI0LCAyNTUsIDYwLCAzMSwgMTYsIDI0MywgCi0gICAgMjE4LCAyNDMsIDE3MSwgNjAsIDMxLCAxNiwgMjQzLCAyMTgsIDIwOSwgNzcsIDYwLCAzMSwgMTYsIDIxMiwgMTMwLCAyMDksIAotICAgIDc3LCA2MCwgMzEsIDE2LCAyMTIsIDEzMCwgMjA5LCA3OCwgMjQzLCAxNTUsIDYwLCAzMSwgMTYsIDIxMiwgMTMwLCAyMDksIAotICAgIDc4LCAyMDgsIDY1LCA2MCwgMzEsIDE2LCAyMTIsIDEzMCwgMjA5LCA3OCwgMjA5LCAxMjMsIDYwLCAzMSwgMTYsIDIxMiwgCi0gICAgMTMwLCAyNTAsIDg4LCA2MCwgMzEsIDE2LCAyMTIsIDEzMCwgMjUwLCA4OSwgMjQzLCAxNTUsIDYwLCAzMSwgMTYsIDIxMiwgCi0gICAgMTMwLCAyNTAsIDg5LCAyMDgsIDY1LCA2MCwgMzEsIDE2LCAyMTIsIDEzMCwgMjUwLCA4OSwgMjA5LCAxMjMsIDYwLCAzMSwgCi0gICAgMTYsIDI0MywgMTk0LCAyMzgsIDE1NiwgNjAsIDMxLCAxNiwgMjQzLCAyMDEsIDIxOSwgMjE2LCA2MCwgMzEsIDE2LCAyMTEsIAotICAgIDcxLCA2MCwgMzEsIDE2LCAyNTAsIDEwOSwgMTg1LCA2MCwgMzEsIDE2LCAyNTAsIDEwOSwgMjA1LCAxNzEsIDYwLCAzMSwgCi0gICAgMTYsIDI1MCwgMTA5LCAyMzksIDgsIDYwLCAzMSwgMTYsIDI1MCwgMTA5LCAyNDMsIDIzMywgNjAsIDMxLCAxNiwgMjUwLCAKLSAgICAxMDksIDIyOSwgMjAxLCA2MCwgMzEsIDE2LCAyNTAsIDEwOSwgMjAyLCAxNywgNjAsIDMxLCAxNiwgMjUwLCAxMDksIDIyMiwgCi0gICAgMTAwLCA2MCwgMzEsIDE2LCAyMjksIDE3NywgMjIyLCAyMjcsIDIyNCwgMjI1LCA2MCwgMzEsIDE2LCAyMjksIDE3OCwgMjIyLCAKLSAgICAyMjcsIDIyNCwgMjI1LCA2MCwgMzEsIDE2LCAyMjksIDE3NywgMjIyLCAyMjcsIDIyOSwgMjIwLCA2MCwgMzEsIDE2LCAyMjksIAotICAgIDE3OCwgMjIyLCAyMjcsIDIyOSwgMjIwLCA2MCwgMzEsIDE2LCAyMjksIDM5LCAyMjksIDIyMCwgNjAsIDMxLCAxNiwgMjM4LCAKLSAgICAyMywgMjIyLCAyMjcsIDIyOSwgMjIwLCAzMSwgMTYsIDIxMiwgMTIwLCAyNDgsIDIyNiwgMzEsIDE2LCA1MiwgMjQ4LCAyMjYsIAotICAgIDMxLCAxNiwgNDYsIDI0OCwgMjI2LCAzMSwgMTYsIDIxNiwgNzQsIDQ2LCAyNDgsIDIyNiwgMzEsIDE2LCAyNDQsIDE0MywgCi0gICAgMjQ4LCAyMjYsIDMxLCAxNiwgMjEyLCAyMjgsIDI0OCwgMjI2LCAzMSwgMTYsIDQ5LCAyMTYsIDEwMSwgNTQsIDMxLCAxNiwgCi0gICAgNTAsIDIxNiwgMTAxLCA1NCwgMzEsIDE2LCAyMTYsIDEwMSwgMjQzLCA4MywgMzEsIDE2LCAyNDQsIDE4NSwgMjE0LCAxNTcsIAotICAgIDMxLCAxNiwgMjQ0LCAyMTMsIDI0NywgNDUsIDMxLCAxNiwgMjE0LCAxNTcsIDMxLCAxNiwgMjQ1LCAyNTAsIDMxLCAxNiwgCi0gICAgMjE2LCA5OSwgMjQwLCAxNSwgMzEsIDE2LCAyMTYsIDk5LCAyNDAsIDE0LCAzMSwgMTYsIDIxNiwgOTksIDI0MCwgMTMsIDMxLCAKLSAgICAxNiwgMjQwLCAzNiwgMzEsIDE2LCAyNDAsIDM3LCA1NiwgMzEsIDE2LCAyNDcsIDIxNiwgODIsIDMxLCAxNiwgMjQ3LCA4MiwgCi0gICAgMzEsIDE2LCAyNDcsIDIyOCwgMzEsIDE2LCAxNTUsIDMxLCAxNiwgMjIwLCAyOCwgMjExLCAxMDIsIDMxLCAxNiwgMjA3LCAKLSAgICAxMzMsIDIxMSwgMTAyLCAzMSwgMTYsIDIwOSwgMjksIDIxMSwgMTAyLCAzMSwgMTYsIDIzOSwgMTQ2LCAyMTEsIDEwMiwgMzEsIAotICAgIDE2LCAyMzksIDIzMiwgMjExLCAxMDIsIDMxLCAxNiwgMjEyLCA4NywgMjExLCAxMDIsIDMxLCAxNiwgMjEyLCA4NSwgMjM5LCAKLSAgICAxMjcsIDMxLCAxNiwgMjM5LCAxNDQsIDIzOSwgMTI3LCAzMSwgMTYsIDIzOSwgNzYsIDI0NiwgMzAsIDMxLCAxNiwgMjM5LCAKLSAgICA3NiwgMjQ2LCAzMSwgMjE5LCAyMTgsIDI1MSwgMCwgMzEsIDE2LCAyMzksIDc2LCAyNDYsIDMxLCAyMTksIDIxOCwgMjQ4LCAKLSAgICAyMTEsIDMxLCAxNiwgMjQ3LCAxMjYsIDI0NiwgMzAsIDMxLCAxNiwgMjQwLCAxNzUsIDI0NiwgMzAsIDMxLCAxNiwgMjQwLCAKLSAgICAxNzUsIDI0NiwgMzEsIDIxOSwgMjE4LCAyNTEsIDAsIDMxLCAxNiwgMjQwLCAxNzUsIDI0NiwgMzEsIDIxOSwgMjE4LCAyNDgsIAotICAgIDIxMSwgMzEsIDE2LCAyNDIsIDQ3LCAyNDYsIDI5LCAzMSwgMTYsIDI0MiwgNDcsIDI0NiwgMjgsIDMxLCAxNiwgMjIzLCAKLSAgICAyMjYsIDIyNSwgMTksIDIxNiwgODUsIDMxLCAxNiwgNTIsIDIxMywgNTYsIDMxLCAxNiwgNTIsIDIzOSwgMjE2LCAzMSwgMTYsIAotICAgIDIzOSwgMjE3LCAyMDYsIDIyNCwgMzEsIDE2LCAyMzksIDIxNywgMjQyLCA3MCwgMzEsIDE2LCAyMjMsIDY2LCAyMDYsIDIyNCwgCi0gICAgMzEsIDE2LCAyMjMsIDY2LCAyNDIsIDcwLCAzMSwgMTYsIDIxMywgNTcsIDIwNiwgMjI0LCAzMSwgMTYsIDIxMywgNTcsIAotICAgIDI0MiwgNzAsIDMxLCAxNiwgMjE3LCA1NiwgMTQzLCAyMTMsIDU2LCAzMSwgMTYsIDIxNywgNTYsIDE0MywgMjM5LCAyMTYsIAotICAgIDMxLCAxNiwgMjQ1LCAyMzAsIDIwOCwgMjIxLCAzMSwgMTYsIDI0NSwgNzgsIDIwOCwgMjIxLCAzMSwgMTYsIDIxOSwgMjE4LCAKLSAgICAyNTEsIDAsIDMxLCAxNiwgMjE5LCAyMTgsIDI0OCwgMjExLCAzMSwgMTYsIDIxNywgMzcsIDI1MSwgMCwgMzEsIDE2LCAyMTcsIAotICAgIDM3LCAyNDgsIDIxMSwgMzEsIDE2LCAyMjMsIDIyOSwgMjE2LCA4NSwgMzEsIDE2LCAyMDQsIDMxLCAyMTYsIDg1LCAzMSwgCi0gICAgMTYsIDE2MiwgMjE2LCA4NSwgMzEsIDE2LCAyMTcsIDU2LCAyMTYsIDg1LCAzMSwgMTYsIDI0MSwgMTM5LCAyMTYsIDg1LCAKLSAgICAzMSwgMTYsIDIxMiwgODEsIDIxNiwgODUsIDMxLCAxNiwgMjA5LCA1MSwgMjE2LCA4NSwgMzEsIDE2LCAyMTIsIDczLCAyMTYsIAotICAgIDg1LCAzMSwgMTYsIDExOCwgMjM2LCAxMiwgMjA3LCAxNDksIDIxNiwgODUsIDMxLCAxNiwgMjAzLCAxOTcsIDIyMSwgMTU2LCAKLSAgICAzMSwgMTYsIDkxLCAyMjEsIDE1NiwgMzEsIDE2LCAyNDYsIDYyLCAyMDMsIDE5NywgMjIxLCAxNTYsIDMxLCAxNiwgNTEsIAotICAgIDIyMSwgMTU3LCAyMDQsIDMzLCAzMSwgMTYsIDUxLCAyMjEsIDE1NywgMjQ4LCA0MywgMzEsIDE2LCAyMDgsIDg2LCAyMjEsIAotICAgIDE1NywgMTEyLCAyMDQsIDMzLCAzMSwgMTYsIDIwOCwgODYsIDIyMSwgMTU3LCAxMTIsIDI0OCwgNDMsIDMxLCAxNiwgMjA4LCAKLSAgICA4NiwgMjIxLCAxNTcsIDQ5LCAyMDQsIDMzLCAzMSwgMTYsIDIwOCwgODYsIDIyMSwgMTU3LCA0OSwgMjQ4LCA0MywgMzEsIAotICAgIDE2LCAyMDgsIDg2LCAyMjEsIDE1NywgNTAsIDIwNCwgMzMsIDMxLCAxNiwgMjA4LCA4NiwgMjIxLCAxNTcsIDUwLCAyNDgsIAotICAgIDQzLCAzMSwgMTYsIDIwOCwgODYsIDIyMSwgMTU3LCAxMjEsIDIwNCwgMzMsIDMxLCAxNiwgMjA4LCA4NiwgMjIxLCAxNTcsIAotICAgIDEyMSwgMjQ4LCA0MywgMzEsIDE2LCAyMDgsIDg2LCAyMjEsIDE1NywgMTEyLCA1MCwgMjA0LCAzMywgMzEsIDE2LCAyMDgsIAotICAgIDg2LCAyMjEsIDE1NywgMTEyLCA1MCwgMjQ4LCA0MywgMzEsIDE2LCAyMjQsIDMwLCAyMjEsIDE1NywgMjA0LCAzMywgMzEsIAotICAgIDE2LCAyMjQsIDMwLCAyMjEsIDE1NywgMjQ4LCA0MywgMzEsIDE2LCAyMDgsIDgzLCAyMjEsIDE1NywgMTIxLCAyMDQsIDMzLCAKLSAgICAzMSwgMTYsIDIwOCwgODMsIDIyMSwgMTU3LCAxMjEsIDI0OCwgNDMsIDMxLCAxNiwgMjE5LCA3NywgMjIxLCAxNTYsIDMxLCAKLSAgICAxNiwgMjA1LCAxODMsIDIyMSwgMTU2LCAzMSwgMTYsIDIyMSwgMTU3LCAyNDgsIDQzLCAzMSwgMTYsIDIyMSwgNDksIDIyMSwgCi0gICAgMTU2LCAzMSwgMTYsIDI0NiwgMSwgMjIxLCAxNTcsIDIwNCwgMzMsIDMxLCAxNiwgMjQ2LCAxLCAyMjEsIDE1NywgMjQ4LCAKLSAgICA0MywgMzEsIDE2LCAyNDcsIDIxNCwgMzEsIDE2LCAyMDQsIDMxLCAyMjEsIDE2MCwgMzEsIDE2LCAxNjIsIDIyMSwgMTYwLCAKLSAgICAzMSwgMTYsIDIxNywgNTYsIDIyMSwgMTYwLCAzMSwgMTYsIDI0MSwgMTM5LCAyMjEsIDE2MCwgMzEsIDE2LCAyMTIsIDgxLCAKLSAgICAyMjEsIDE2MCwgMzEsIDE2LCAyMDksIDUxLCAyMjEsIDE2MCwgMzEsIDE2LCAyMTIsIDczLCAyMjEsIDE2MCwgMzEsIDE2LCAKLSAgICAxMTgsIDIzNiwgMTIsIDIwNywgMTQ5LCAyMjEsIDE2MCwgMzEsIDE2LCAzOSwgMjExLCA3NywgMzEsIDE2LCAzOSwgMjExLCAKLSAgICAxODQsIDIxMSwgNzcsIDMxLCAxNiwgMzksIDIwOCwgOTQsIDMxLCAxNiwgMzksIDIwOCwgOTMsIDMxLCAxNiwgMzksIDIwOCwgCi0gICAgOTIsIDMxLCAxNiwgMjQwLCAwLCAyMDgsIDk0LCAzMSwgMTYsIDI0MCwgMCwgMjA4LCA5MywgMzEsIDE2LCAyNDAsIDAsIAotICAgIDIwOCwgOTIsIDMxLCAxNiwgMzksIDI1MCwgMzEsIDI0MywgODUsIDMxLCAxNiwgMzksIDIzOSwgMjI0LCAzMSwgMTYsIDM5LCAKLSAgICAyMzksIDIyMywgMzEsIDE2LCAzOSwgMjM5LCAyMjIsIDMxLCAxNiwgMzksIDIzOSwgMjIxLCAzMSwgMTYsIDM5LCAyMzksIAotICAgIDIyMCwgMzEsIDE2LCAyNDgsIDE0MiwgMjQ4LCAxNTksIDMxLCAxNiwgMjQxLCA4NCwgMjQ4LCAxNTksIDMxLCAxNiwgMjQ4LCAKLSAgICAxNDIsIDIwOCwgMjUwLCAzMSwgMTYsIDI0MSwgODQsIDIwOCwgMjUwLCAzMSwgMTYsIDI0OCwgMTQyLCAyMTIsIDM3LCAzMSwgCi0gICAgMTYsIDI0MSwgODQsIDIxMiwgMzcsIDMxLCAxNiwgMjQ4LCAxNDIsIDIxOCwgMTc0LCAzMSwgMTYsIDI0MSwgODQsIDIxOCwgCi0gICAgMTc0LCAzMSwgMTYsIDM5LCAyNTEsIDEzOCwgMzEsIDE2LCAzOSwgMjExLCAxMDUsIDMxLCAxNiwgMzksIDIwOSwgMTQwLCAKLSAgICAzMSwgMTYsIDM5LCAyMTEsIDEwNiwgMzEsIDE2LCAzOSwgMjI1LCA5NiwgMzEsIDE2LCAzOSwgMjI1LCA5NSwgMzEsIDE2LCAKLSAgICAzOSwgMjUxLCAxMzcsIDMxLCAxNiwgMzksIDIyNywgMiwgMzEsIDE2LCAyNTAsIDEwMCwgMjA2LCAyMjQsIDMxLCAxNiwgCi0gICAgMjUwLCAxMDAsIDI0MiwgNzAsIDMxLCAxNiwgMzksIDI0MywgMTAwLCAzMSwgMTYsIDM5LCAyMTUsIDI0OSwgMzEsIDE2LCAKLSAgICAzOSwgMjM5LCAyMDYsIDMxLCAxNiwgMzksIDIxMiwgMzMsIDMxLCAxNiwgMzksIDI0OCwgMTIwLCAzMSwgMTYsIDM5LCA1MiwgCi0gICAgMjA4LCAxNTAsIDMxLCAxNiwgMzksIDIwOCwgNzAsIDIwOCwgMTUwLCAzMSwgMTYsIDIxNSwgMjU0LCAzMSwgMTYsIDIxMSwgCi0gICAgMCwgMzEsIDE2LCAyMDIsIDE1OSwgMzEsIDE2LCAyMTgsIDE2NiwgMzEsIDE2LCAyMjQsIDIwNiwgMzEsIDE2LCAyMzksIAotICAgIDE1NSwgMzEsIDE2LCAyNDUsIDE0MCwgMzEsIDE2LCAyNDQsIDYyLCAzMSwgMTYsIDIzOCwgMTQsIDIyMSwgMTYxLCAyMTIsIAotICAgIDU3LCAzMSwgMTYsIDIzOCwgMTQsIDIyMSwgMTYxLCAyMjEsIDE5MiwgMjEyLCA1NywgMzEsIDE2LCAyMDgsIDEyMCwgMzEsIAotICAgIDE2LCAyMDcsIDE3NSwgMzEsIDE2LCAyMzAsIDIzOSwgMjA3LCAxNzUsIDMxLCAxNiwgMjA3LCAxNzYsIDIxMiwgNTcsIDMxLCAKLSAgICAxNiwgMjA3LCAxNzYsIDIwNiwgMjI0LCAzMSwgMTYsIDIxOSwgMjM0LCAyMTEsIDMxLCAzMSwgMTYsIDIxOSwgMjM0LCAyMTEsIAotICAgIDI4LCAzMSwgMTYsIDIxOSwgMjM0LCAyMTEsIDI3LCAzMSwgMTYsIDIxOSwgMjM0LCAyMTEsIDI2LCAzMSwgMTYsIDIxOSwgCi0gICAgMjM0LCAyMTEsIDI1LCAzMSwgMTYsIDIxOSwgMjM0LCAyMTEsIDI0LCAzMSwgMTYsIDIxOSwgMjM0LCAyMTEsIDIzLCAzMSwgCi0gICAgMTYsIDIxOSwgMjM0LCAyMTEsIDIyLCAzMSwgMTYsIDIxOSwgMjM0LCAyMTEsIDIxLCAzMSwgMTYsIDIxOSwgMjM0LCAyMTEsIAotICAgIDMwLCAzMSwgMTYsIDIxOSwgMjM0LCAyMTEsIDI5LCAzMSwgMTYsIDIzNywgNzUsIDMxLCAxNiwgMjIyLCAyMzgsIDMxLCAxNiwgCi0gICAgMjQxLCA4NCwgNzYsIDIxMSwgNjcsIDMxLCAxNiwgMjQ0LCA1NSwgMjEyLCA1NywgMzEsIDE2LCAzOSwgMTIxLCAyNDcsIAotICAgIDI0MCwgMzEsIDE2LCAzOSwgMTEyLCAyNDcsIDI0MCwgMzEsIDE2LCAzOSwgMjM3LCA4OCwgMzEsIDE2LCAzOSwgMjEyLCAyMywgCi0gICAgMjE4LCA5OSwgMzEsIDE2LCAyMTksIDI4LCA4MiwgMzEsIDE2LCAyMTksIDI4LCAxMTIsIDgyLCAzMSwgMTYsIDE2MiwgMjE5LCAKLSAgICAyOCwgODIsIDMxLCAxNiwgMjM4LCA0NywgMjA2LCAyMjQsIDMxLCAxNiwgMjM4LCA0NywgMjQyLCA3MCwgMzEsIDE2LCAzLCAKLSAgICAyMzksIDI1NSwgMzEsIDE2LCAyNDQsIDE2OCwgMzEsIDE2LCAyNDQsIDE2OSwgMjUxLCAxNCwgMzEsIDE2LCAyMjUsIDY1LCAKLSAgICAzMSwgMTYsIDIyNywgMjAsIDMxLCAxNiwgMjQ3LCAyMTEsIDMxLCAxNiwgMjEzLCAxNDcsIDIwNCwgMzMsIDMxLCAxNiwgCi0gICAgMjEzLCAxNDcsIDI0OCwgNDMsIDMxLCAxNiwgMjI0LCAxMDYsIDMxLCAxNiwgMjI0LCAxMDcsIDI0OCwgNDMsIDMxLCAxNiwgCi0gICAgMjEzLCAxNDEsIDIwNCwgMzMsIDMxLCAxNiwgMjEzLCAxNDEsIDI0OCwgNDMsIDMxLCAxNiwgMjM5LCA5MywgMjA0LCAzMywgCi0gICAgMzEsIDE2LCAyMzksIDkzLCAyNDgsIDQzLCAzMSwgMTYsIDIyNywgMjEsIDIxOCwgMjQ0LCAyMTYsIDg1LCAzMSwgMTYsIAotICAgIDIyNywgMjEsIDIzMSwgNTQsIDIxNiwgODUsIDMxLCAxNiwgMjQ3LCAyMTIsIDIxNiwgODUsIDMxLCAxNiwgMjEzLCAxNDcsIAotICAgIDIxNiwgODUsIDMxLCAxNiwgMjI0LCAxMDcsIDIxNiwgODUsIDMxLCAxNiwgMjEzLCAxNDEsIDIxNiwgODUsIDMxLCAxNiwgCi0gICAgMjA5LCAxNTQsIDIxOCwgMjQyLCAyNDUsIDEwNCwgMjE3LCAyMTYsIDIxOCwgMjQzLCAzMSwgMTYsIDIwOSwgMTU0LCAyMTgsIAotICAgIDI0MiwgMjQ1LCAxMDQsIDIxNywgMjE2LCAyMzEsIDUzLCAzMSwgMTYsIDIwOSwgMTU0LCAyMTgsIDI0MiwgMjQ1LCAxMDQsIAotICAgIDIxNywgMjE2LCAyMTgsIDI0NCwgMjQzLCAxODEsIDMxLCAxNiwgMjA5LCAxNTQsIDIzMSwgNTIsIDI0NSwgMTA0LCAyMTcsIAotICAgIDIxNiwgMjE4LCAyNDMsIDMxLCAxNiwgMjA5LCAxNTQsIDIzMSwgNTIsIDI0NSwgMTA0LCAyMTcsIDIxNiwgMjMxLCA1MywgCi0gICAgMzEsIDE2LCAyMDksIDE1NCwgMjMxLCA1MiwgMjQ1LCAxMDQsIDIxNywgMjE2LCAyMzEsIDU0LCAyNDMsIDE4MSwgMzEsIDE2LCAKLSAgICAyMDksIDE1NCwgMjMxLCA1MiwgMjQ1LCAxMDQsIDIxNywgMjE2LCAyMzEsIDU0LCAyNDMsIDE4MCwgMzEsIDE2LCAyMDksIAotICAgIDE1NCwgMjMxLCA1MiwgMjQ1LCAxMDQsIDIxNywgMjE2LCAyMzEsIDU0LCAyNDMsIDE3OSwgMzEsIDE2LCAyNDUsIDEzMywgCi0gICAgMzEsIDE2LCAyMzcsIDI0MywgMjQ3LCAxMjYsIDI0NiwgMzAsIDMxLCAxNiwgMjM3LCAyNDMsIDI0MCwgMTc1LCAyNDYsIDMwLCAKLSAgICAzMSwgMTYsIDUxLCAyNDksIDI1NSwgMzEsIDE2LCAyMDUsIDIwMywgMzEsIDE2LCAyMTgsIDY2LCAzMSwgMTYsIDI0NiwgMjEsIAotICAgIDMxLCAxNiwgMjE0LCAyMDAsIDMxLCAxNiwgMjQ2LCAyNSwgMzEsIDE2LCAyMDgsIDEzOCwgMzEsIDE2LCAyMTgsIDM2LCAzMSwgCi0gICAgMTYsIDIxOCwgMzcsIDIzOSwgMjA5LCAzMSwgMTYsIDIxNCwgMjAxLCAyMzksIDIwOSwgMzEsIDE2LCAyMDgsIDEzOSwgMjE2LCAKLSAgICA4MiwgMzEsIDE2LCAyMTgsIDIyNSwgMjEwLCAyNDcsIDMxLCAxNiwgMjI5LCA5MCwgMjQ3LCAxMjYsIDI0NiwgMzAsIDMxLCAKLSAgICAxNiwgMjI5LCA5MCwgMjQxLCA4NCwgNzYsIDIxOCwgMTU5LCAzMSwgMTYsIDIyOSwgOTAsIDQ2LCAyMjEsIDE2MCwgMzEsIAotICAgIDE2LCAyMjksIDkwLCAyMTYsIDE1MCwgODIsIDMxLCAxNiwgMjI5LCA5MCwgMjA0LCAzMSwgMjIxLCAxNjAsIDMxLCAxNiwgCi0gICAgMjI5LCA5MCwgMTYyLCAyMjEsIDE2MCwgMzEsIDE2LCAyMjksIDkwLCAyMTcsIDU2LCAyMjEsIDE2MSwgMjExLCA3OCwgMjQyLCAKLSAgICA3MCwgMzEsIDE2LCAyMjksIDkwLCAyMTcsIDU2LCAyMjEsIDE2MSwgMjExLCA3OCwgMjA2LCAyMjQsIDMxLCAxNiwgMjI5LCAKLSAgICA5MCwgMjQxLCAxMzksIDIyMSwgMTYxLCAyMTEsIDc4LCAyNDIsIDcwLCAzMSwgMTYsIDIyOSwgOTAsIDI0MSwgMTM5LCAyMjEsIAotICAgIDE2MSwgMjExLCA3OCwgMjA2LCAyMjQsIDMxLCAxNiwgMjI5LCA5MCwgMjM5LCAyMTcsIDU0LCAzMCwgMjA1LCAxODgsIDIyMSwgCi0gICAgMTY0LCAyMTAsIDE0OCwgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMzcsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIAotICAgIDIxMCwgMTI3LCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDEyMCwgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAKLSAgICAxMTIsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTA2LCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDEwNSwgCi0gICAgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMDQsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTAzLCAzMCwgCi0gICAgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDE0NywgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxNDYsIDMwLCAyMDUsIAotICAgIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTQ1LCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDE0NCwgMzAsIDIwNSwgMTg4LCAKLSAgICAyMjEsIDE2NCwgMjEwLCAxNDMsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTQyLCAzMCwgMjA1LCAxODgsIDIyMSwgCi0gICAgMTY0LCAyMTAsIDE0MSwgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxNDAsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIAotICAgIDIxMCwgMTM5LCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDEzOCwgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAKLSAgICAxMzYsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTM1LCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDEzNCwgCi0gICAgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMzMsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTMyLCAzMCwgCi0gICAgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDExMSwgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMTAsIDMwLCAyMDUsIAotICAgIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTA5LCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDEwOCwgMzAsIDIwNSwgMTg4LCAKLSAgICAyMjEsIDE2NCwgMjEwLCAxMDcsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDE0OCwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIAotICAgIDIxMCwgMTM3LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMjAsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDExMiwgCi0gICAgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTA1LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMDQsIDMwLCAyMzEsIAotICAgIDUsIDIyMSwgMTY0LCAyMTAsIDE0NiwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTQ1LCAzMCwgMjMxLCA1LCAyMjEsIAotICAgIDE2NCwgMjEwLCAxNDQsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDE0MywgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgCi0gICAgMTQwLCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMzksIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEzOCwgMzAsIAotICAgIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTMzLCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMzIsIDMwLCAyMzEsIDUsIAotICAgIDIyMSwgMTY0LCAyMTAsIDEzMSwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTMwLCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgCi0gICAgMjEwLCAxMjksIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEyOCwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTI2LCAKLSAgICAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMjUsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEyNCwgMzAsIDIzMSwgCi0gICAgNSwgMjIxLCAxNjQsIDIxMCwgMTIzLCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMjIsIDMwLCAyMzEsIDUsIDIyMSwgCi0gICAgMTY0LCAyMTAsIDEyMSwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTE5LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAKLSAgICAxMTgsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDExNywgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTE2LCAzMCwgCi0gICAgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMTUsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDExNCwgMzAsIDIzMSwgNSwgCi0gICAgMjIxLCAxNjQsIDIxMCwgMTEzLCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMTEsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAKLSAgICAyMTAsIDExMCwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTA5LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMDgsIAotICAgIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEwNywgMzksIDMwLCAzMSwgMjA4LCA2NiwgMzksIDMwLCAzMSwgMjA5LCAKLSAgICAxMjQsIDM5LCAzMCwgMzEsIDIxOCwgMjUzLCAzMCwgMzEsIDIyNywgMjA0LCAyMjQsIDQ1LCAzNSwgMjQxLCAxNzksIDI0MywgCi0gICAgMTk1LCAzNSwgMjM3LCA1MCwgMjQxLCAxNzksIDI0MywgMTk1LCAzNSwgMjM2LCAxNiwgMjQxLCAxNzksIDI0MywgMTk1LCAKLSAgICAzNSwgMjQxLCAxNzgsIDIzNywgNTEsIDI0MywgMTk1LCAzNSwgMjQxLCAxNzgsIDIzNiwgMTUsIDI0MywgMTk1LCAzNSwgCi0gICAgMjQxLCAxNzksIDIwOSwgMTI2LCAzNSwgMjQ2LCAyMTcsIDIwOSwgMTI2LCAzNSwgMjM5LCAxMDIsIDI0NiwgNjEsIDIwOSwgCi0gICAgMTI2LCAzNSwgMjI0LCA5OCwgMjA5LCAxMjYsIDM1LCAyNDgsIDIyMSwgMjA5LCAxMjYsIDM1LCAyMjksIDE5NSwgMjEyLCAKLSAgICAzNiwgMjA5LCAxMjYsIDM1LCAyNDUsIDE4NSwgMjA5LCAxMjYsIDM1LCAyNTAsIDc3LCAyMDksIDEyNiwgMzUsIDIxOSwgCi0gICAgMjUwLCAyMDksIDEyNiwgMzUsIDI0NywgMjIxLCAyMTksIDIxMSwgMjA5LCAxMjYsIDM1LCAyNDQsIDU3LCAyMTksIDI0NSwgCi0gICAgMjQzLCAxNDgsIDIwOSwgMTI2LCAzNSwgMjQzLCAxNDUsIDIwOSwgMTI2LCAzNSwgMjAyLCAyMjUsIDIwOSwgMTI2LCAzNSwgCi0gICAgMjMxLCA0MCwgMjA5LCAxMjYsIDM1LCAyMTksIDcsIDIwOSwgMTI2LCAzNSwgMjE2LCAxNTcsIDIwOSwgMTI2LCAzNSwgMjQ1LCAKLSAgICAxOTcsIDIwOSwgMTI2LCAzNSwgMjM2LCAxMjcsIDI0OSwgMjUsIDIwOSwgMTI2LCAzNSwgMjA0LCAxMDMsIDIwOSwgMTI2LCAKLSAgICAzNSwgMjM5LCAxODEsIDIwOSwgMTI2LCAzNSwgMjUxLCAxMTIsIDIwOSwgMTI2LCAzNSwgMjE2LCAxMTQsIDIwOSwgMTI2LCAKLSAgICAzNSwgMjE2LCA4OSwgMjA5LCAxMjYsIDM1LCAyNDEsIDE3NywgMjA5LCAxMjYsIDM1LCAyMzAsIDg1LCAyMDksIDEyNiwgMzUsIAotICAgIDI0NSwgMTkyLCAyMDksIDEyNiwgMzUsIDI0MSwgODMsIDIwOSwgMTI2LCAzNSwgMjQyLCAxNSwgMjA5LCAxMjYsIDM1LCAKLSAgICAyNDYsIDE4NiwgMjA5LCAxMjYsIDM1LCAyNDQsIDY3LCAyMDksIDEyNiwgMzUsIDI2LCAyMTYsIDg4LCAyMDksIDEyNiwgMzUsIAotICAgIDIxOSwgMTYwLCAyMDksIDEyNiwgMzUsIDIyNywgMjA4LCAyMDksIDEyNiwgMzUsIDI0NiwgMTQsIDIwOSwgMTI2LCAzNSwgCi0gICAgMjI5LCA4MCwgMjA5LCAxMjYsIDM1LCAyMzgsIDIxNCwgMjA5LCAxMjYsIDM1LCAyMTEsIDQzLCAyMDksIDEyNiwgMzUsIAotICAgIDIxNywgMTY4LCAyMDksIDEyNiwgMzUsIDIzOSwgMTAxLCAyMDksIDEyNiwgMzUsIDIxNiwgOTAsIDIwOSwgMTI2LCAzNSwgCi0gICAgMjI3LCAyNDcsIDIxOSwgMjQ1LCAyMjQsIDc4LCAyMDksIDEyNiwgMzUsIDIxNiwgODYsIDIwOSwgMTI2LCAzNSwgMjM4LCAKLSAgICAzMywgMjA4LCAxNzMsIDIyNSwgMywgMjA5LCAxMjYsIDM1LCAyNDEsIDg1LCAyMDksIDEyNiwgMzUsIDIxMSwgNTYsIDIwOSwgCi0gICAgMTI2LCAzNSwgMjM3LCAyNDUsIDIwOSwgMTI2LCAzNSwgMjQxLCA3NiwgMjA5LCAxMjYsIDM1LCAyMTksIDUwLCAyMDksIAotICAgIDEyNiwgMzUsIDIxNSwgMjQyLCAyMDksIDEyNiwgMzUsIDIzOSwgMjA3LCAyMDksIDEyNiwgMzUsIDIwNiwgNjQsIDIxOSwgCi0gICAgMjQ1LCAyMDQsIDg0LCAyMDksIDEyNiwgMzUsIDI0NSwgMjAyLCAyMDksIDEyNiwgMzUsIDIyNSwgMTgsIDIwOSwgMTI2LCAKLSAgICAzNSwgMjQwLCAyNDUsIDIwOSwgMTI2LCAzNSwgMjA2LCAyMzQsIDIwOSwgMTI2LCAzNSwgMjQzLCAxODIsIDIwOSwgMTI2LCAKLSAgICAzNSwgMjQ2LCAxNiwgMjI0LCA3LCAyMDksIDEyNiwgMzUsIDIzNywgMjIyLCAyMDksIDEyNiwgMzUsIDIzOCwgMjE1LCAyMzEsIAotICAgIDQ5LCAyMDksIDEyNiwgMzUsIDIyNSwgNzMsIDIwOSwgMTI2LCAzNSwgMjUxLCAxMzMsIDIwOSwgMTI2LCAzNSwgMjQxLCAKLSAgICAxMDEsIDIwOSwgMTI2LCAzNSwgMjQyLCA3NCwgMjA5LCAxMjYsIDM1LCAyMDQsIDgyLCAyMDksIDEyNiwgMzUsIDIxMiwgCi0gICAgMTE1LCAyMDksIDEyNiwgMzUsIDIzMSwgMTQsIDIwOSwgMTI2LCAzNSwgMjQ0LCAyNSwgMjA5LCAxMjYsIDM1LCAyNDQsIAotICAgIDE0OCwgMjA5LCAxMjYsIDM1LCAyNDMsIDE3OCwgMjA5LCAxMjYsIDM1LCAyNDAsIDIwOSwgMjA5LCAxMjYsIDM1LCAyMTMsIAotICAgIDEwNCwgMjA5LCAxMjYsIDM1LCAyMTEsIDYwLCAyMDksIDEyNiwgMzUsIDIzNywgOTAsIDIwOSwgMTI2LCAzNSwgMjQ1LCAKLSAgICAyMjYsIDIwOSwgMTI2LCAzNSwgMjQ2LCAxMSwgMjA5LCAxMjYsIDM1LCAyNDAsIDg3LCAyMDksIDEyNiwgMzUsIDI1MSwgNzYsIAotICAgIDIwOSwgMTI2LCAzNSwgMjQ1LCAyMjUsIDIwOSwgMTI2LCAzNSwgMjIwLCAzMiwgMjA5LCA5MywgMjA2LCA0MSwgMjA5LCAKLSAgICAxMjYsIDM1LCAyNDMsIDIwNCwgMjA5LCAxMjYsIDM1LCAyMjgsIDEwMSwgMjA5LCAxMjYsIDM1LCAyMzksIDE1MCwgMjQ1LCAKLSAgICAxNTMsIDIxNSwgMjE3LCAyMDYsIDIzNiwgMTcsIDEwNSwgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDYsIDIzNiwgMTcsIDEwOCwgCi0gICAgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDYsIDIzNiwgMTcsIDE0NywgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDYsIDIzNiwgMTcsIAotICAgIDE0OSwgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDYsIDIzNiwgMTcsIDE3MCwgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDYsIDIzNiwgCi0gICAgMTcsIDE5NSwgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDYsIDIzNiwgMTcsIDIxMywgMTExLCAyNDUsIDE1MywgMjE1LCAyMTcsIAotICAgIDIwNiwgMjM2LCAxNywgMTk5LCAyNDUsIDE1MywgMjE1LCAyMTcsIDIwNiwgMjM2LCAxNywgMjIyLCA2MywgMjQ1LCAxNTMsIAotICAgIDIxNSwgMjE3LCAyMDksIDE0OCwgMTcsIDEwNSwgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDksIDE0OCwgMTcsIDEwOCwgMjQ1LCAKLSAgICAxNTMsIDIxNSwgMjE3LCAyMDksIDE0OCwgMTcsIDE0NywgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDksIDE0OCwgMTcsIDE0OSwgCi0gICAgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDksIDE0OCwgMTcsIDE3MCwgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDksIDE0OCwgMTcsIAotICAgIDE5NSwgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDksIDE0OCwgMTcsIDIxMywgMTExLCAyNDUsIDE1MywgMjE1LCAyMTcsIDIwOSwgCi0gICAgMTQ4LCAxNywgMTk5LCAyNDUsIDE1MywgMjE1LCAyMTcsIDIwOSwgMTQ4LCAxNywgMjIyLCA2MywgMTMsIDI2LCA2LCA2MywgCi0gICAgMTMsIDI2LCA2LCAyNDksIDI1NSwgMTMsIDI2LCA2LCAyNDcsIDEyNSwgMTMsIDI2LCA2LCAyNDUsIDUxLCAxMywgMjYsIDYsIAotICAgIDc0LCAxMywgMjYsIDYsIDI0MCwgMTc0LCAxMywgMjYsIDYsIDIzOSwgNzUsIDEzLCAyNiwgNiwgMjM3LCAxNzEsIDEzLCAyNiwgCi0gICAgNiwgNzUsIDEzLCAyNiwgNiwgMjMwLCAxODQsIDEzLCAyNiwgNiwgMjMwLCA1NCwgMTMsIDI2LCA2LCAxNTksIDEzLCAyNiwgCi0gICAgNiwgMjI2LCAxODUsIDEzLCAyNiwgNiwgMjIzLCAxNjMsIDEzLCAyNiwgNiwgNzgsIDEzLCAyNiwgNiwgMjE5LCAxODQsIDEzLCAKLSAgICAyNiwgNiwgMjE3LCAxMzQsIDEzLCAyNiwgNiwgMTQ2LCAxMywgMjYsIDYsIDE5NCwgMTMsIDI2LCA2LCAyMTAsIDY5LCAxMywgCi0gICAgMjYsIDYsIDY4LCAxMywgMjYsIDYsIDIwNiwgMTY0LCAxMywgMjYsIDYsIDIwNCwgMTQ0LCAxMywgMjYsIDYsIDIwMywgMTk2LCAKLSAgICAxMywgMjYsIDYsIDIwMywgMTI0LCAxMywgMjYsIDYsIDIwMiwgMTU5LCAxMywgMjYsIDUsIDYzLCAxMywgMjYsIDUsIDI0OSwgCi0gICAgMjU1LCAxMywgMjYsIDUsIDI0NywgMTI1LCAxMywgMjYsIDUsIDI0NSwgNTEsIDEzLCAyNiwgNSwgNzQsIDEzLCAyNiwgNSwgCi0gICAgMjQwLCAxNzQsIDEzLCAyNiwgNSwgMjM5LCA3NSwgMTMsIDI2LCA1LCAyMzcsIDE3MSwgMTMsIDI2LCA1LCA3NSwgMTMsIDI2LCAKLSAgICA1LCAyMzAsIDE4NCwgMTMsIDI2LCA1LCAyMzAsIDU0LCAxMywgMjYsIDUsIDE1OSwgMTMsIDI2LCA1LCAyMjYsIDE4NSwgMTMsIAotICAgIDI2LCA1LCAyMjMsIDE2MywgMTMsIDI2LCA1LCA3OCwgMTMsIDI2LCA1LCAyMTksIDE4NCwgMTMsIDI2LCA1LCAyMTcsIDEzNCwgCi0gICAgMTMsIDI2LCA1LCAxNDYsIDEzLCAyNiwgNSwgMTk0LCAxMywgMjYsIDUsIDIxMCwgNjksIDEzLCAyNiwgNSwgNjgsIDEzLCAKLSAgICAyNiwgNSwgMjA2LCAxNjQsIDEzLCAyNiwgNSwgMjA0LCAxNDQsIDEzLCAyNiwgNSwgMjAzLCAxOTYsIDEzLCAyNiwgNSwgCi0gICAgMjAzLCAxMjQsIDEzLCAyNiwgNSwgMjAyLCAxNTksIDEzLCAzNywgNiwgNjMsIDEzLCAzNywgNiwgMjQ5LCAyNTUsIDEzLCAKLSAgICAzNywgNiwgMjQ3LCAxMjUsIDEzLCAzNywgNiwgMjQ1LCA1MSwgMTMsIDM3LCA2LCA3NCwgMTMsIDM3LCA2LCAyNDAsIDE3NCwgCi0gICAgMTMsIDM3LCA2LCAyMzksIDc1LCAxMywgMzcsIDYsIDIzNywgMTcxLCAxMywgMzcsIDYsIDc1LCAxMywgMzcsIDYsIDIzMCwgCi0gICAgMTg0LCAxMywgMzcsIDYsIDIzMCwgNTQsIDEzLCAzNywgNiwgMTU5LCAxMywgMzcsIDYsIDIyNiwgMTg1LCAxMywgMzcsIDYsIAotICAgIDIyMywgMTYzLCAxMywgMzcsIDYsIDc4LCAxMywgMzcsIDYsIDIxOSwgMTg0LCAxMywgMzcsIDYsIDIxNywgMTM0LCAxMywgCi0gICAgMzcsIDYsIDE0NiwgMTMsIDM3LCA2LCAxOTQsIDEzLCAzNywgNiwgMjEwLCA2OSwgMTMsIDM3LCA2LCA2OCwgMTMsIDM3LCA2LCAKLSAgICAyMDYsIDE2NCwgMTMsIDM3LCA2LCAyMDQsIDE0NCwgMTMsIDM3LCA2LCAyMDMsIDE5NiwgMTMsIDM3LCA2LCAyMDMsIDEyNCwgCi0gICAgMTMsIDM3LCA2LCAyMDIsIDE1OSwgMTMsIDM3LCA1LCA2MywgMTMsIDM3LCA1LCAyNDksIDI1NSwgMTMsIDM3LCA1LCAyNDcsIAotICAgIDEyNSwgMTMsIDM3LCA1LCAyNDUsIDUxLCAxMywgMzcsIDUsIDc0LCAxMywgMzcsIDUsIDI0MCwgMTc0LCAxMywgMzcsIDUsIAotICAgIDIzOSwgNzUsIDEzLCAzNywgNSwgNzUsIDEzLCAzNywgNSwgMjMwLCAxODQsIDEzLCAzNywgNSwgMjMwLCA1NCwgMTMsIDM3LCAKLSAgICA1LCAxNTksIDEzLCAzNywgNSwgMjI2LCAxODUsIDEzLCAzNywgNSwgMjIzLCAxNjMsIDEzLCAzNywgNSwgNzgsIDEzLCAzNywgCi0gICAgNSwgMjE5LCAxODQsIDEzLCAzNywgNSwgMjE3LCAxMzQsIDEzLCAzNywgNSwgMTQ2LCAxMywgMzcsIDUsIDE5NCwgMTMsIDM3LCAKLSAgICA1LCAyMTAsIDY5LCAxMywgMzcsIDUsIDY4LCAxMywgMzcsIDUsIDIwNiwgMTY0LCAxMywgMzcsIDUsIDIwNCwgMTQ0LCAxMywgCi0gICAgMzcsIDUsIDIwMywgMTk2LCAxMywgMzcsIDUsIDIwMywgMTI0LCAxMywgMzcsIDUsIDIwMiwgMTU5LCAxMywgMjYsIDM3LCA2LCAKLSAgICA2MywgMTMsIDI2LCAzNywgNiwgMjQ5LCAyNTUsIDEzLCAyNiwgMzcsIDYsIDI0NywgMTI1LCAxMywgMjYsIDM3LCA2LCAyNDUsIAotICAgIDUxLCAxMywgMjYsIDM3LCA2LCA3NCwgMTMsIDI2LCAzNywgNiwgMjQwLCAxNzQsIDEzLCAyNiwgMzcsIDYsIDIzOSwgNzUsIAotICAgIDEzLCAyNiwgMzcsIDYsIDIzNywgMTcxLCAxMywgMjYsIDM3LCA2LCA3NSwgMTMsIDI2LCAzNywgNiwgMjMwLCAxODQsIDEzLCAKLSAgICAyNiwgMzcsIDYsIDIzMCwgNTQsIDEzLCAyNiwgMzcsIDYsIDE1OSwgMTMsIDI2LCAzNywgNiwgMjI2LCAxODUsIDEzLCAyNiwgCi0gICAgMzcsIDYsIDIyMywgMTYzLCAxMywgMjYsIDM3LCA2LCA3OCwgMTMsIDI2LCAzNywgNiwgMjE5LCAxODQsIDEzLCAyNiwgMzcsIAotICAgIDYsIDIxNywgMTM0LCAxMywgMjYsIDM3LCA2LCAxNDYsIDEzLCAyNiwgMzcsIDYsIDE5NCwgMTMsIDI2LCAzNywgNiwgMjEwLCAKLSAgICA2OSwgMTMsIDI2LCAzNywgNiwgNjgsIDEzLCAyNiwgMzcsIDYsIDIwNiwgMTY0LCAxMywgMjYsIDM3LCA2LCAyMDQsIDE0NCwgCi0gICAgMTMsIDI2LCAzNywgNiwgMjAzLCAxOTYsIDEzLCAyNiwgMzcsIDYsIDIwMywgMTI0LCAxMywgMjYsIDM3LCA2LCAyMDIsIAotICAgIDE1OSwgMTMsIDI2LCAzNywgNSwgNjMsIDEzLCAyNiwgMzcsIDUsIDI0OSwgMjU1LCAxMywgMjYsIDM3LCA1LCAyNDcsIDEyNSwgCi0gICAgMTMsIDI2LCAzNywgNSwgMjQ1LCA1MSwgMTMsIDI2LCAzNywgNSwgNzQsIDEzLCAyNiwgMzcsIDUsIDI0MCwgMTc0LCAxMywgCi0gICAgMjYsIDM3LCA1LCAyMzksIDc1LCAxMywgMjYsIDM3LCA1LCAyMzcsIDE3MSwgMTMsIDI2LCAzNywgNSwgNzUsIDEzLCAyNiwgCi0gICAgMzcsIDUsIDIzMCwgMTg0LCAxMywgMjYsIDM3LCA1LCAyMzAsIDU0LCAxMywgMjYsIDM3LCA1LCAxNTksIDEzLCAyNiwgMzcsIAotICAgIDUsIDIyNiwgMTg1LCAxMywgMjYsIDM3LCA1LCAyMjMsIDE2MywgMTMsIDI2LCAzNywgNSwgNzgsIDEzLCAyNiwgMzcsIDUsIAotICAgIDIxOSwgMTg0LCAxMywgMjYsIDM3LCA1LCAyMTcsIDEzNCwgMTMsIDI2LCAzNywgNSwgMTQ2LCAxMywgMjYsIDM3LCA1LCAKLSAgICAxOTQsIDEzLCAyNiwgMzcsIDUsIDIxMCwgNjksIDEzLCAyNiwgMzcsIDUsIDY4LCAxMywgMjYsIDM3LCA1LCAyMDYsIDE2NCwgCi0gICAgMTMsIDI2LCAzNywgNSwgMjA0LCAxNDQsIDEzLCAyNiwgMzcsIDUsIDIwMywgMTk2LCAxMywgMjYsIDM3LCA1LCAyMDMsIAotICAgIDEyNCwgMTMsIDI2LCAzNywgNSwgMjAyLCAxNTksIDEzLCAxMzIsIDYsIDYzLCAxMywgMTMyLCA2LCAyNDcsIDEyNSwgMTMsIAotICAgIDEzMiwgNiwgMjQ1LCA1MSwgMTMsIDEzMiwgNiwgMjM5LCA3NSwgMTMsIDEzMiwgNiwgMjMwLCAxODQsIDEzLCAxMzIsIDYsIAotICAgIDIzMCwgNTQsIDEzLCAxMzIsIDYsIDIyMywgMTYzLCAxMywgMTMyLCA2LCA3OCwgMTMsIDEzMiwgNiwgMjE5LCAxODQsIDEzLCAKLSAgICAxMzIsIDYsIDIxNywgMTM0LCAxMywgMTMyLCA2LCAxOTQsIDEzLCAxMzIsIDYsIDIxMCwgNjksIDEzLCAxMzIsIDYsIDY4LCAKLSAgICAxMywgMTMyLCA2LCAyMDYsIDE2NCwgMTMsIDEzMiwgNiwgMjA0LCAxNDQsIDEzLCAxMzIsIDYsIDIwMywgMTk2LCAxMywgCi0gICAgMTMyLCA2LCAyMDMsIDEyNCwgMTMsIDEzMiwgNiwgMjAyLCAxNTksIDEzLCAxMzIsIDUsIDYzLCAxMywgMTMyLCA1LCAyNDksIAotICAgIDI1NSwgMTMsIDEzMiwgNSwgMjQ3LCAxMjUsIDEzLCAxMzIsIDUsIDI0NSwgNTEsIDEzLCAxMzIsIDUsIDI0MCwgMTc0LCAxMywgCi0gICAgMTMyLCA1LCAyMzcsIDE3MSwgMTMsIDEzMiwgNSwgNzUsIDEzLCAxMzIsIDUsIDIzMCwgMTg0LCAxMywgMTMyLCA1LCAyMzAsIAotICAgIDU0LCAxMywgMTMyLCA1LCAxNTksIDEzLCAxMzIsIDUsIDIyNiwgMTg1LCAxMywgMTMyLCA1LCAyMjMsIDE2MywgMTMsIDEzMiwgCi0gICAgNSwgMjE5LCAxODQsIDEzLCAxMzIsIDUsIDIxNywgMTM0LCAxMywgMTMyLCA1LCAxNDYsIDEzLCAxMzIsIDUsIDE5NCwgMTMsIAotICAgIDEzMiwgNSwgMjEwLCA2OSwgMTMsIDEzMiwgNSwgNjgsIDEzLCAxMzIsIDUsIDIwNiwgMTY0LCAxMywgMTMyLCA1LCAyMDQsIAotICAgIDE0NCwgMTMsIDEzMiwgNSwgMjAzLCAxOTYsIDEzLCAxMzIsIDUsIDIwMywgMTI0LCAxMywgMTMyLCA1LCAyMDIsIDE1OSwgCi0gICAgMTMsIDI2LCAxMzIsIDYsIDYzLCAxMywgMjYsIDEzMiwgNiwgMjQ5LCAyNTUsIDEzLCAyNiwgMTMyLCA2LCAyNDcsIDEyNSwgCi0gICAgMTMsIDI2LCAxMzIsIDYsIDI0NSwgNTEsIDEzLCAyNiwgMTMyLCA2LCA3NCwgMTMsIDI2LCAxMzIsIDYsIDI0MCwgMTc0LCAKLSAgICAxMywgMjYsIDEzMiwgNiwgMjM5LCA3NSwgMTMsIDI2LCAxMzIsIDYsIDIzNywgMTcxLCAxMywgMjYsIDEzMiwgNiwgNzUsIAotICAgIDEzLCAyNiwgMTMyLCA2LCAyMzAsIDE4NCwgMTMsIDI2LCAxMzIsIDYsIDIzMCwgNTQsIDEzLCAyNiwgMTMyLCA2LCAxNTksIAotICAgIDEzLCAyNiwgMTMyLCA2LCAyMjYsIDE4NSwgMTMsIDI2LCAxMzIsIDYsIDIyMywgMTYzLCAxMywgMjYsIDEzMiwgNiwgNzgsIAotICAgIDEzLCAyNiwgMTMyLCA2LCAyMTksIDE4NCwgMTMsIDI2LCAxMzIsIDYsIDIxNywgMTM0LCAxMywgMjYsIDEzMiwgNiwgMTQ2LCAKLSAgICAxMywgMjYsIDEzMiwgNiwgMTk0LCAxMywgMjYsIDEzMiwgNiwgMjEwLCA2OSwgMTMsIDI2LCAxMzIsIDYsIDY4LCAxMywgMjYsIAotICAgIDEzMiwgNiwgMjA2LCAxNjQsIDEzLCAyNiwgMTMyLCA2LCAyMDQsIDE0NCwgMTMsIDI2LCAxMzIsIDYsIDIwMywgMTk2LCAxMywgCi0gICAgMjYsIDEzMiwgNiwgMjAzLCAxMjQsIDEzLCAyNiwgMTMyLCA2LCAyMDIsIDE1OSwgMTMsIDI2LCAxMzIsIDUsIDYzLCAxMywgCi0gICAgMjYsIDEzMiwgNSwgMjQ5LCAyNTUsIDEzLCAyNiwgMTMyLCA1LCAyNDcsIDEyNSwgMTMsIDI2LCAxMzIsIDUsIDI0NSwgNTEsIAotICAgIDEzLCAyNiwgMTMyLCA1LCA3NCwgMTMsIDI2LCAxMzIsIDUsIDI0MCwgMTc0LCAxMywgMjYsIDEzMiwgNSwgMjM5LCA3NSwgCi0gICAgMTMsIDI2LCAxMzIsIDUsIDIzNywgMTcxLCAxMywgMjYsIDEzMiwgNSwgNzUsIDEzLCAyNiwgMTMyLCA1LCAyMzAsIDE4NCwgCi0gICAgMTMsIDI2LCAxMzIsIDUsIDIzMCwgNTQsIDEzLCAyNiwgMTMyLCA1LCAxNTksIDEzLCAyNiwgMTMyLCA1LCAyMjYsIDE4NSwgCi0gICAgMTMsIDI2LCAxMzIsIDUsIDIyMywgMTYzLCAxMywgMjYsIDEzMiwgNSwgNzgsIDEzLCAyNiwgMTMyLCA1LCAyMTksIDE4NCwgCi0gICAgMTMsIDI2LCAxMzIsIDUsIDIxNywgMTM0LCAxMywgMjYsIDEzMiwgNSwgMTQ2LCAxMywgMjYsIDEzMiwgNSwgMTk0LCAxMywgCi0gICAgMjYsIDEzMiwgNSwgMjEwLCA2OSwgMTMsIDI2LCAxMzIsIDUsIDY4LCAxMywgMjYsIDEzMiwgNSwgMjA2LCAxNjQsIDEzLCAKLSAgICAyNiwgMTMyLCA1LCAyMDQsIDE0NCwgMTMsIDI2LCAxMzIsIDUsIDIwMywgMTk2LCAxMywgMjYsIDEzMiwgNSwgMjAzLCAxMjQsIAotICAgIDEzLCAyNiwgMTMyLCA1LCAyMDIsIDE1OSwgMTMsIDE2NiwgNiwgNjMsIDEzLCAxNjYsIDYsIDI0OSwgMjU1LCAxMywgMTY2LCAKLSAgICA2LCAyNDUsIDUxLCAxMywgMTY2LCA2LCA3NCwgMTMsIDE2NiwgNiwgMjQwLCAxNzQsIDEzLCAxNjYsIDYsIDIzOSwgNzUsIAotICAgIDEzLCAxNjYsIDYsIDIzMCwgMTg0LCAxMywgMTY2LCA2LCAyMzAsIDU0LCAxMywgMTY2LCA2LCAxNTksIDEzLCAxNjYsIDYsIAotICAgIDIyNiwgMTg1LCAxMywgMTY2LCA2LCAyMjMsIDE2MywgMTMsIDE2NiwgNiwgNzgsIDEzLCAxNjYsIDYsIDIxOSwgMTg0LCAxMywgCi0gICAgMTY2LCA2LCAyMTcsIDEzNCwgMTMsIDE2NiwgNiwgMTk0LCAxMywgMTY2LCA2LCAyMTAsIDY5LCAxMywgMTY2LCA2LCA2OCwgCi0gICAgMTMsIDE2NiwgNiwgMjA2LCAxNjQsIDEzLCAxNjYsIDYsIDIwNCwgMTQ0LCAxMywgMTY2LCA2LCAyMDMsIDE5NiwgMTMsIAotICAgIDE2NiwgNiwgMjAzLCAxMjQsIDEzLCAxNjYsIDUsIDYzLCAxMywgMTY2LCA1LCAyNDksIDI1NSwgMTMsIDE2NiwgNSwgMjQ3LCAKLSAgICAxMjUsIDEzLCAxNjYsIDUsIDI0NSwgNTEsIDEzLCAxNjYsIDUsIDc0LCAxMywgMTY2LCA1LCAyNDAsIDE3NCwgMTMsIDE2NiwgCi0gICAgNSwgMjM5LCA3NSwgMTMsIDE2NiwgNSwgMjM3LCAxNzEsIDEzLCAxNjYsIDUsIDc1LCAxMywgMTY2LCA1LCAyMzAsIDE4NCwgCi0gICAgMTMsIDE2NiwgNSwgMjMwLCA1NCwgMTMsIDE2NiwgNSwgMTU5LCAxMywgMTY2LCA1LCAyMjYsIDE4NSwgMTMsIDE2NiwgNSwgCi0gICAgMjIzLCAxNjMsIDEzLCAxNjYsIDUsIDc4LCAxMywgMTY2LCA1LCAyMTksIDE4NCwgMTMsIDE2NiwgNSwgMjE3LCAxMzQsIDEzLCAKLSAgICAxNjYsIDUsIDE0NiwgMTMsIDE2NiwgNSwgMTk0LCAxMywgMTY2LCA1LCAyMTAsIDY5LCAxMywgMTY2LCA1LCA2OCwgMTMsIAotICAgIDE2NiwgNSwgMjA2LCAxNjQsIDEzLCAxNjYsIDUsIDIwNCwgMTQ0LCAxMywgMTY2LCA1LCAyMDMsIDE5NiwgMTMsIDE2NiwgNSwgCi0gICAgMjAzLCAxMjQsIDEzLCAxNjYsIDUsIDIwMiwgMTU5LCAxMywgMTY5LCA2LCA2MywgMTMsIDE2OSwgNiwgMjQ5LCAyNTUsIDEzLCAKLSAgICAxNjksIDYsIDI0NSwgNTEsIDEzLCAxNjksIDYsIDc0LCAxMywgMTY5LCA2LCAyNDAsIDE3NCwgMTMsIDE2OSwgNiwgMjM5LCAKLSAgICA3NSwgMTMsIDE2OSwgNiwgNzUsIDEzLCAxNjksIDYsIDIzMCwgMTg0LCAxMywgMTY5LCA2LCAyMzAsIDU0LCAxMywgMTY5LCAKLSAgICA2LCAxNTksIDEzLCAxNjksIDYsIDIyNiwgMTg1LCAxMywgMTY5LCA2LCA3OCwgMTMsIDE2OSwgNiwgMTk0LCAxMywgMTY5LCAKLSAgICA2LCAyMTAsIDY5LCAxMywgMTY5LCA2LCA2OCwgMTMsIDE2OSwgNiwgMjA2LCAxNjQsIDEzLCAxNjksIDYsIDIwNCwgMTQ0LCAKLSAgICAxMywgMTY5LCA2LCAyMDMsIDE5NiwgMTMsIDE2OSwgNiwgMjAzLCAxMjQsIDEzLCAxNjksIDUsIDYzLCAxMywgMTY5LCA1LCAKLSAgICAyNDksIDI1NSwgMTMsIDE2OSwgNSwgMjQ3LCAxMjUsIDEzLCAxNjksIDUsIDI0NSwgNTEsIDEzLCAxNjksIDUsIDc0LCAxMywgCi0gICAgMTY5LCA1LCAyNDAsIDE3NCwgMTMsIDE2OSwgNSwgMjM5LCA3NSwgMTMsIDE2OSwgNSwgMjM3LCAxNzEsIDEzLCAxNjksIDUsIAotICAgIDc1LCAxMywgMTY5LCA1LCAyMzAsIDE4NCwgMTMsIDE2OSwgNSwgMjMwLCA1NCwgMTMsIDE2OSwgNSwgMTU5LCAxMywgMTY5LCAKLSAgICA1LCAyMjYsIDE4NSwgMTMsIDE2OSwgNSwgMjIzLCAxNjMsIDEzLCAxNjksIDUsIDc4LCAxMywgMTY5LCA1LCAyMTksIDE4NCwgCi0gICAgMTMsIDE2OSwgNSwgMjE3LCAxMzQsIDEzLCAxNjksIDUsIDE0NiwgMTMsIDE2OSwgNSwgMTk0LCAxMywgMTY5LCA1LCAyMTAsIAotICAgIDY5LCAxMywgMTY5LCA1LCA2OCwgMTMsIDE2OSwgNSwgMjA2LCAxNjQsIDEzLCAxNjksIDUsIDIwNCwgMTQ0LCAxMywgMTY5LCAKLSAgICA1LCAyMDMsIDE5NiwgMTMsIDE2OSwgNSwgMjAzLCAxMjQsIDEzLCAxNjksIDUsIDIwMiwgMTU5LCAxMywgMjYsIDE2NiwgNiwgCi0gICAgNjMsIDEzLCAyNiwgMTY2LCA2LCAyNDksIDI1NSwgMTMsIDI2LCAxNjYsIDYsIDI0NywgMTI1LCAxMywgMjYsIDE2NiwgNiwgCi0gICAgMjQ1LCA1MSwgMTMsIDI2LCAxNjYsIDYsIDc0LCAxMywgMjYsIDE2NiwgNiwgMjQwLCAxNzQsIDEzLCAyNiwgMTY2LCA2LCAKLSAgICAyMzksIDc1LCAxMywgMjYsIDE2NiwgNiwgMjM3LCAxNzEsIDEzLCAyNiwgMTY2LCA2LCA3NSwgMTMsIDI2LCAxNjYsIDYsIAotICAgIDIzMCwgMTg0LCAxMywgMjYsIDE2NiwgNiwgMjMwLCA1NCwgMTMsIDI2LCAxNjYsIDYsIDE1OSwgMTMsIDI2LCAxNjYsIDYsIAotICAgIDIyNiwgMTg1LCAxMywgMjYsIDE2NiwgNiwgMjIzLCAxNjMsIDEzLCAyNiwgMTY2LCA2LCA3OCwgMTMsIDI2LCAxNjYsIDYsIAotICAgIDIxOSwgMTg0LCAxMywgMjYsIDE2NiwgNiwgMjE3LCAxMzQsIDEzLCAyNiwgMTY2LCA2LCAxNDYsIDEzLCAyNiwgMTY2LCA2LCAKLSAgICAxOTQsIDEzLCAyNiwgMTY2LCA2LCAyMTAsIDY5LCAxMywgMjYsIDE2NiwgNiwgNjgsIDEzLCAyNiwgMTY2LCA2LCAyMDYsIAotICAgIDE2NCwgMTMsIDI2LCAxNjYsIDYsIDIwNCwgMTQ0LCAxMywgMjYsIDE2NiwgNiwgMjAzLCAxOTYsIDEzLCAyNiwgMTY2LCA2LCAKLSAgICAyMDMsIDEyNCwgMTMsIDI2LCAxNjYsIDYsIDIwMiwgMTU5LCAxMywgMjYsIDE2NiwgNSwgNjMsIDEzLCAyNiwgMTY2LCA1LCAKLSAgICAyNDksIDI1NSwgMTMsIDI2LCAxNjYsIDUsIDI0NywgMTI1LCAxMywgMjYsIDE2NiwgNSwgMjQ1LCA1MSwgMTMsIDI2LCAxNjYsIAotICAgIDUsIDc0LCAxMywgMjYsIDE2NiwgNSwgMjQwLCAxNzQsIDEzLCAyNiwgMTY2LCA1LCAyMzksIDc1LCAxMywgMjYsIDE2NiwgNSwgCi0gICAgMjM3LCAxNzEsIDEzLCAyNiwgMTY2LCA1LCA3NSwgMTMsIDI2LCAxNjYsIDUsIDIzMCwgMTg0LCAxMywgMjYsIDE2NiwgNSwgCi0gICAgMjMwLCA1NCwgMTMsIDI2LCAxNjYsIDUsIDE1OSwgMTMsIDI2LCAxNjYsIDUsIDIyNiwgMTg1LCAxMywgMjYsIDE2NiwgNSwgCi0gICAgMjIzLCAxNjMsIDEzLCAyNiwgMTY2LCA1LCA3OCwgMTMsIDI2LCAxNjYsIDUsIDIxOSwgMTg0LCAxMywgMjYsIDE2NiwgNSwgCi0gICAgMjE3LCAxMzQsIDEzLCAyNiwgMTY2LCA1LCAxNDYsIDEzLCAyNiwgMTY2LCA1LCAxOTQsIDEzLCAyNiwgMTY2LCA1LCAyMTAsIAotICAgIDY5LCAxMywgMjYsIDE2NiwgNSwgNjgsIDEzLCAyNiwgMTY2LCA1LCAyMDYsIDE2NCwgMTMsIDI2LCAxNjYsIDUsIDIwNCwgCi0gICAgMTQ0LCAxMywgMjYsIDE2NiwgNSwgMjAzLCAxOTYsIDEzLCAyNiwgMTY2LCA1LCAyMDMsIDEyNCwgMTMsIDI2LCAxNjYsIDUsIAotICAgIDIwMiwgMTU5LCAxMywgNDEsIDYsIDYzLCAxMywgNDEsIDYsIDI0OSwgMjU1LCAxMywgNDEsIDYsIDI0NywgMTI1LCAxMywgCi0gICAgNDEsIDYsIDI0NSwgNTEsIDEzLCA0MSwgNiwgNzQsIDEzLCA0MSwgNiwgMjQwLCAxNzQsIDEzLCA0MSwgNiwgMjM5LCA3NSwgCi0gICAgMTMsIDQxLCA2LCAyMzcsIDE3MSwgMTMsIDQxLCA2LCA3NSwgMTMsIDQxLCA2LCAyMzAsIDE4NCwgMTMsIDQxLCA2LCAyMzAsIAotICAgIDU0LCAxMywgNDEsIDYsIDE1OSwgMTMsIDQxLCA2LCAyMjYsIDE4NSwgMTMsIDQxLCA2LCAyMjMsIDE2MywgMTMsIDQxLCA2LCAKLSAgICA3OCwgMTMsIDQxLCA2LCAyMTksIDE4NCwgMTMsIDQxLCA2LCAyMTcsIDEzNCwgMTMsIDQxLCA2LCAxNDYsIDEzLCA0MSwgNiwgCi0gICAgMTk0LCAxMywgNDEsIDYsIDIxMCwgNjksIDEzLCA0MSwgNiwgNjgsIDEzLCA0MSwgNiwgMjA2LCAxNjQsIDEzLCA0MSwgNiwgCi0gICAgMjA0LCAxNDQsIDEzLCA0MSwgNiwgMjAzLCAxOTYsIDEzLCA0MSwgNiwgMjAzLCAxMjQsIDEzLCA0MSwgNiwgMjAyLCAxNTksIAotICAgIDEzLCA0MSwgNSwgNjMsIDEzLCA0MSwgNSwgMjQ5LCAyNTUsIDEzLCA0MSwgNSwgMjQ3LCAxMjUsIDEzLCA0MSwgNSwgMjQ1LCAKLSAgICA1MSwgMTMsIDQxLCA1LCA3NCwgMTMsIDQxLCA1LCAyNDAsIDE3NCwgMTMsIDQxLCA1LCAyMzksIDc1LCAxMywgNDEsIDUsIAotICAgIDIzNywgMTcxLCAxMywgNDEsIDUsIDc1LCAxMywgNDEsIDUsIDIzMCwgMTg0LCAxMywgNDEsIDUsIDIzMCwgNTQsIDEzLCA0MSwgCi0gICAgNSwgMTU5LCAxMywgNDEsIDUsIDIyNiwgMTg1LCAxMywgNDEsIDUsIDIyMywgMTYzLCAxMywgNDEsIDUsIDc4LCAxMywgNDEsIAotICAgIDUsIDIxOSwgMTg0LCAxMywgNDEsIDUsIDIxNywgMTM0LCAxMywgNDEsIDUsIDE0NiwgMTMsIDQxLCA1LCAxOTQsIDEzLCA0MSwgCi0gICAgNSwgMjEwLCA2OSwgMTMsIDQxLCA1LCA2OCwgMTMsIDQxLCA1LCAyMDYsIDE2NCwgMTMsIDQxLCA1LCAyMDQsIDE0NCwgMTMsIAotICAgIDQxLCA1LCAyMDMsIDE5NiwgMTMsIDQxLCA1LCAyMDMsIDEyNCwgMTMsIDQxLCA1LCAyMDIsIDE1OSwgMTMsIDQxLCAyNiwgNiwgCi0gICAgNjMsIDEzLCA0MSwgMjYsIDYsIDI0OSwgMjU1LCAxMywgNDEsIDI2LCA2LCAyNDcsIDEyNSwgMTMsIDQxLCAyNiwgNiwgMjQ1LCAKLSAgICA1MSwgMTMsIDQxLCAyNiwgNiwgNzQsIDEzLCA0MSwgMjYsIDYsIDI0MCwgMTc0LCAxMywgNDEsIDI2LCA2LCAyMzksIDc1LCAKLSAgICAxMywgNDEsIDI2LCA2LCAyMzcsIDE3MSwgMTMsIDQxLCAyNiwgNiwgNzUsIDEzLCA0MSwgMjYsIDYsIDIzMCwgMTg0LCAxMywgCi0gICAgNDEsIDI2LCA2LCAyMzAsIDU0LCAxMywgNDEsIDI2LCA2LCAxNTksIDEzLCA0MSwgMjYsIDYsIDIyNiwgMTg1LCAxMywgNDEsIAotICAgIDI2LCA2LCAyMjMsIDE2MywgMTMsIDQxLCAyNiwgNiwgNzgsIDEzLCA0MSwgMjYsIDYsIDIxOSwgMTg0LCAxMywgNDEsIDI2LCAKLSAgICA2LCAyMTcsIDEzNCwgMTMsIDQxLCAyNiwgNiwgMTQ2LCAxMywgNDEsIDI2LCA2LCAxOTQsIDEzLCA0MSwgMjYsIDYsIDIxMCwgCi0gICAgNjksIDEzLCA0MSwgMjYsIDYsIDY4LCAxMywgNDEsIDI2LCA2LCAyMDYsIDE2NCwgMTMsIDQxLCAyNiwgNiwgMjA0LCAxNDQsIAotICAgIDEzLCA0MSwgMjYsIDYsIDIwMywgMTk2LCAxMywgNDEsIDI2LCA2LCAyMDMsIDEyNCwgMTMsIDQxLCAyNiwgNiwgMjAyLCAKLSAgICAxNTksIDEzLCA0MSwgMjYsIDUsIDYzLCAxMywgNDEsIDI2LCA1LCAyNDksIDI1NSwgMTMsIDQxLCAyNiwgNSwgMjQ3LCAxMjUsIAotICAgIDEzLCA0MSwgMjYsIDUsIDI0NSwgNTEsIDEzLCA0MSwgMjYsIDUsIDc0LCAxMywgNDEsIDI2LCA1LCAyNDAsIDE3NCwgMTMsIAotICAgIDQxLCAyNiwgNSwgMjM5LCA3NSwgMTMsIDQxLCAyNiwgNSwgMjM3LCAxNzEsIDEzLCA0MSwgMjYsIDUsIDc1LCAxMywgNDEsIAotICAgIDI2LCA1LCAyMzAsIDE4NCwgMTMsIDQxLCAyNiwgNSwgMjMwLCA1NCwgMTMsIDQxLCAyNiwgNSwgMTU5LCAxMywgNDEsIDI2LCAKLSAgICA1LCAyMjYsIDE4NSwgMTMsIDQxLCAyNiwgNSwgMjIzLCAxNjMsIDEzLCA0MSwgMjYsIDUsIDc4LCAxMywgNDEsIDI2LCA1LCAKLSAgICAyMTksIDE4NCwgMTMsIDQxLCAyNiwgNSwgMjE3LCAxMzQsIDEzLCA0MSwgMjYsIDUsIDE0NiwgMTMsIDQxLCAyNiwgNSwgCi0gICAgMTk0LCAxMywgNDEsIDI2LCA1LCAyMTAsIDY5LCAxMywgNDEsIDI2LCA1LCA2OCwgMTMsIDQxLCAyNiwgNSwgMjA2LCAxNjQsIAotICAgIDEzLCA0MSwgMjYsIDUsIDIwNCwgMTQ0LCAxMywgNDEsIDI2LCA1LCAyMDMsIDE5NiwgMTMsIDQxLCAyNiwgNSwgMjAzLCAKLSAgICAxMjQsIDEzLCA0MSwgMjYsIDUsIDIwMiwgMTU5LCAxMywgNDEsIDM3LCA2LCA2MywgMTMsIDQxLCAzNywgNiwgMjQ5LCAyNTUsIAotICAgIDEzLCA0MSwgMzcsIDYsIDI0NywgMTI1LCAxMywgNDEsIDM3LCA2LCAyNDUsIDUxLCAxMywgNDEsIDM3LCA2LCA3NCwgMTMsIAotICAgIDQxLCAzNywgNiwgMjQwLCAxNzQsIDEzLCA0MSwgMzcsIDYsIDIzOSwgNzUsIDEzLCA0MSwgMzcsIDYsIDIzNywgMTcxLCAxMywgCi0gICAgNDEsIDM3LCA2LCA3NSwgMTMsIDQxLCAzNywgNiwgMjMwLCAxODQsIDEzLCA0MSwgMzcsIDYsIDIzMCwgNTQsIDEzLCA0MSwgCi0gICAgMzcsIDYsIDE1OSwgMTMsIDQxLCAzNywgNiwgMjI2LCAxODUsIDEzLCA0MSwgMzcsIDYsIDIyMywgMTYzLCAxMywgNDEsIDM3LCAKLSAgICA2LCA3OCwgMTMsIDQxLCAzNywgNiwgMjE5LCAxODQsIDEzLCA0MSwgMzcsIDYsIDIxNywgMTM0LCAxMywgNDEsIDM3LCA2LCAKLSAgICAxNDYsIDEzLCA0MSwgMzcsIDYsIDE5NCwgMTMsIDQxLCAzNywgNiwgMjEwLCA2OSwgMTMsIDQxLCAzNywgNiwgNjgsIDEzLCAKLSAgICA0MSwgMzcsIDYsIDIwNiwgMTY0LCAxMywgNDEsIDM3LCA2LCAyMDQsIDE0NCwgMTMsIDQxLCAzNywgNiwgMjAzLCAxOTYsIAotICAgIDEzLCA0MSwgMzcsIDYsIDIwMywgMTI0LCAxMywgNDEsIDM3LCA2LCAyMDIsIDE1OSwgMTMsIDQxLCAzNywgNSwgNjMsIDEzLCAKLSAgICA0MSwgMzcsIDUsIDI0OSwgMjU1LCAxMywgNDEsIDM3LCA1LCAyNDcsIDEyNSwgMTMsIDQxLCAzNywgNSwgMjQ1LCA1MSwgMTMsIAotICAgIDQxLCAzNywgNSwgNzQsIDEzLCA0MSwgMzcsIDUsIDI0MCwgMTc0LCAxMywgNDEsIDM3LCA1LCAyMzksIDc1LCAxMywgNDEsIAotICAgIDM3LCA1LCAyMzcsIDE3MSwgMTMsIDQxLCAzNywgNSwgNzUsIDEzLCA0MSwgMzcsIDUsIDIzMCwgMTg0LCAxMywgNDEsIDM3LCAKLSAgICA1LCAyMzAsIDU0LCAxMywgNDEsIDM3LCA1LCAxNTksIDEzLCA0MSwgMzcsIDUsIDIyNiwgMTg1LCAxMywgNDEsIDM3LCA1LCAKLSAgICAyMjMsIDE2MywgMTMsIDQxLCAzNywgNSwgNzgsIDEzLCA0MSwgMzcsIDUsIDIxOSwgMTg0LCAxMywgNDEsIDM3LCA1LCAyMTcsIAotICAgIDEzNCwgMTMsIDQxLCAzNywgNSwgMTQ2LCAxMywgNDEsIDM3LCA1LCAxOTQsIDEzLCA0MSwgMzcsIDUsIDIxMCwgNjksIDEzLCAKLSAgICA0MSwgMzcsIDUsIDY4LCAxMywgNDEsIDM3LCA1LCAyMDYsIDE2NCwgMTMsIDQxLCAzNywgNSwgMjA0LCAxNDQsIDEzLCA0MSwgCi0gICAgMzcsIDUsIDIwMywgMTk2LCAxMywgNDEsIDM3LCA1LCAyMDMsIDEyNCwgMTMsIDQxLCAzNywgNSwgMjAyLCAxNTksIDEzLCAKLSAgICA0MSwgMjYsIDM3LCA2LCA2MywgMTMsIDQxLCAyNiwgMzcsIDYsIDI0OSwgMjU1LCAxMywgNDEsIDI2LCAzNywgNiwgMjQ3LCAKLSAgICAxMjUsIDEzLCA0MSwgMjYsIDM3LCA2LCAyNDUsIDUxLCAxMywgNDEsIDI2LCAzNywgNiwgNzQsIDEzLCA0MSwgMjYsIDM3LCAKLSAgICA2LCAyNDAsIDE3NCwgMTMsIDQxLCAyNiwgMzcsIDYsIDIzOSwgNzUsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMzcsIDE3MSwgMTMsIAotICAgIDQxLCAyNiwgMzcsIDYsIDc1LCAxMywgNDEsIDI2LCAzNywgNiwgMjMwLCAxODQsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMzAsIAotICAgIDU0LCAxMywgNDEsIDI2LCAzNywgNiwgMTU5LCAxMywgNDEsIDI2LCAzNywgNiwgMjI2LCAxODUsIDEzLCA0MSwgMjYsIDM3LCAKLSAgICA2LCAyMjMsIDE2MywgMTMsIDQxLCAyNiwgMzcsIDYsIDc4LCAxMywgNDEsIDI2LCAzNywgNiwgMjE5LCAxODQsIDEzLCA0MSwgCi0gICAgMjYsIDM3LCA2LCAyMTcsIDEzNCwgMTMsIDQxLCAyNiwgMzcsIDYsIDE0NiwgMTMsIDQxLCAyNiwgMzcsIDYsIDE5NCwgMTMsIAotICAgIDQxLCAyNiwgMzcsIDYsIDIxMCwgNjksIDEzLCA0MSwgMjYsIDM3LCA2LCA2OCwgMTMsIDQxLCAyNiwgMzcsIDYsIDIwNiwgCi0gICAgMTY0LCAxMywgNDEsIDI2LCAzNywgNiwgMjA0LCAxNDQsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMDMsIDE5NiwgMTMsIDQxLCAKLSAgICAyNiwgMzcsIDYsIDIwMywgMTI0LCAxMywgNDEsIDI2LCAzNywgNiwgMjAyLCAxNTksIDEzLCA0MSwgMjYsIDM3LCA1LCA2MywgCi0gICAgMTMsIDQxLCAyNiwgMzcsIDUsIDI0OSwgMjU1LCAxMywgNDEsIDI2LCAzNywgNSwgMjQ3LCAxMjUsIDEzLCA0MSwgMjYsIDM3LCAKLSAgICA1LCAyNDUsIDUxLCAxMywgNDEsIDI2LCAzNywgNSwgNzQsIDEzLCA0MSwgMjYsIDM3LCA1LCAyNDAsIDE3NCwgMTMsIDQxLCAKLSAgICAyNiwgMzcsIDUsIDIzOSwgNzUsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMzcsIDE3MSwgMTMsIDQxLCAyNiwgMzcsIDUsIDc1LCAKLSAgICAxMywgNDEsIDI2LCAzNywgNSwgMjMwLCAxODQsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMzAsIDU0LCAxMywgNDEsIDI2LCAzNywgCi0gICAgNSwgMTU5LCAxMywgNDEsIDI2LCAzNywgNSwgMjI2LCAxODUsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMjMsIDE2MywgMTMsIDQxLCAKLSAgICAyNiwgMzcsIDUsIDc4LCAxMywgNDEsIDI2LCAzNywgNSwgMjE5LCAxODQsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMTcsIDEzNCwgCi0gICAgMTMsIDQxLCAyNiwgMzcsIDUsIDE0NiwgMTMsIDQxLCAyNiwgMzcsIDUsIDE5NCwgMTMsIDQxLCAyNiwgMzcsIDUsIDIxMCwgCi0gICAgNjksIDEzLCA0MSwgMjYsIDM3LCA1LCA2OCwgMTMsIDQxLCAyNiwgMzcsIDUsIDIwNiwgMTY0LCAxMywgNDEsIDI2LCAzNywgCi0gICAgNSwgMjA0LCAxNDQsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMDMsIDE5NiwgMTMsIDQxLCAyNiwgMzcsIDUsIDIwMywgMTI0LCAKLSAgICAxMywgNDEsIDI2LCAzNywgNSwgMjAyLCAxNTksIDEzLCAyMjQsIDQxLCA2LCA2MywgMTMsIDIyNCwgNDEsIDYsIDI0OSwgCi0gICAgMjU1LCAxMywgMjI0LCA0MSwgNiwgMjQ3LCAxMjUsIDEzLCAyMjQsIDQxLCA2LCAyNDUsIDUxLCAxMywgMjI0LCA0MSwgNiwgCi0gICAgNzQsIDEzLCAyMjQsIDQxLCA2LCAyNDAsIDE3NCwgMTMsIDIyNCwgNDEsIDYsIDIzOSwgNzUsIDEzLCAyMjQsIDQxLCA2LCAKLSAgICAyMzcsIDE3MSwgMTMsIDIyNCwgNDEsIDYsIDc1LCAxMywgMjI0LCA0MSwgNiwgMjMwLCAxODQsIDEzLCAyMjQsIDQxLCA2LCAKLSAgICAyMzAsIDU0LCAxMywgMjI0LCA0MSwgNiwgMTU5LCAxMywgMjI0LCA0MSwgNiwgMjI2LCAxODUsIDEzLCAyMjQsIDQxLCA2LCAKLSAgICAyMjMsIDE2MywgMTMsIDIyNCwgNDEsIDYsIDc4LCAxMywgMjI0LCA0MSwgNiwgMjE5LCAxODQsIDEzLCAyMjQsIDQxLCA2LCAKLSAgICAyMTcsIDEzNCwgMTMsIDIyNCwgNDEsIDYsIDE0NiwgMTMsIDIyNCwgNDEsIDYsIDE5NCwgMTMsIDIyNCwgNDEsIDYsIDIxMCwgCi0gICAgNjksIDEzLCAyMjQsIDQxLCA2LCA2OCwgMTMsIDIyNCwgNDEsIDYsIDIwNiwgMTY0LCAxMywgMjI0LCA0MSwgNiwgMjA0LCAKLSAgICAxNDQsIDEzLCAyMjQsIDQxLCA2LCAyMDMsIDE5NiwgMTMsIDIyNCwgNDEsIDYsIDIwMywgMTI0LCAxMywgMjI0LCA0MSwgNiwgCi0gICAgMjAyLCAxNTksIDEzLCAyMjQsIDQxLCA1LCA2MywgMTMsIDIyNCwgNDEsIDUsIDI0OSwgMjU1LCAxMywgMjI0LCA0MSwgNSwgCi0gICAgMjQ3LCAxMjUsIDEzLCAyMjQsIDQxLCA1LCAyNDUsIDUxLCAxMywgMjI0LCA0MSwgNSwgNzQsIDEzLCAyMjQsIDQxLCA1LCAKLSAgICAyNDAsIDE3NCwgMTMsIDIyNCwgNDEsIDUsIDIzOSwgNzUsIDEzLCAyMjQsIDQxLCA1LCAyMzcsIDE3MSwgMTMsIDIyNCwgNDEsIAotICAgIDUsIDc1LCAxMywgMjI0LCA0MSwgNSwgMjMwLCAxODQsIDEzLCAyMjQsIDQxLCA1LCAyMzAsIDU0LCAxMywgMjI0LCA0MSwgNSwgCi0gICAgMTU5LCAxMywgMjI0LCA0MSwgNSwgMjI2LCAxODUsIDEzLCAyMjQsIDQxLCA1LCAyMjMsIDE2MywgMTMsIDIyNCwgNDEsIDUsIAotICAgIDc4LCAxMywgMjI0LCA0MSwgNSwgMjE5LCAxODQsIDEzLCAyMjQsIDQxLCA1LCAyMTcsIDEzNCwgMTMsIDIyNCwgNDEsIDUsIAotICAgIDE0NiwgMTMsIDIyNCwgNDEsIDUsIDE5NCwgMTMsIDIyNCwgNDEsIDUsIDIxMCwgNjksIDEzLCAyMjQsIDQxLCA1LCA2OCwgCi0gICAgMTMsIDIyNCwgNDEsIDUsIDIwNiwgMTY0LCAxMywgMjI0LCA0MSwgNSwgMjA0LCAxNDQsIDEzLCAyMjQsIDQxLCA1LCAyMDMsIAotICAgIDE5NiwgMTMsIDIyNCwgNDEsIDUsIDIwMywgMTI0LCAxMywgMjI0LCA0MSwgNSwgMjAyLCAxNTksIDEzLCAzNywgNSwgMjQzLCAKLSAgICA4NCwgNzUsIDEzLCAzNywgNSwgMjQzLCA4NCwgMjMwLCAxODQsIDEzLCAyNiwgNiwgMjUxLCAyLCAxMywgMjYsIDYsIDI0OCwgCi0gICAgMTA2LCAxMywgMjYsIDYsIDIzOCwgMjM1LCAxMywgMjYsIDYsIDI0NCwgMzcsIDEzLCAyNiwgNiwgMjQxLCAzNywgMTMsIDI2LCAKLSAgICA2LCAyMDIsIDgzLCAxMywgMjYsIDYsIDI0MCwgMjQ4LCAxMywgMjYsIDYsIDIwOSwgNzQsIDEzLCAyNiwgNiwgMjMwLCAyMzAsIAotICAgIDEzLCAyNiwgNiwgMjI5LCAyNDcsIDEzLCAyNiwgNiwgMjI4LCAyNCwgMTMsIDI2LCA2LCAyMjMsIDI0NiwgMTMsIDI2LCA2LCAKLSAgICAyMjEsIDg0LCAxMywgMjYsIDYsIDIwMywgMTcwLCAxMywgMjYsIDYsIDIyMCwgMzQsIDEzLCAyNiwgNiwgMjE4LCAxNjcsIAotICAgIDEzLCAyNiwgNiwgMjE2LCA1OSwgMTMsIDI2LCA2LCAyMDksIDc1LCA5NywgMTMsIDI2LCA2LCAyMTIsIDE0NCwgMTMsIDI2LCAKLSAgICA2LCAyMDksIDIwNywgMTMsIDI2LCA2LCAyMDYsIDIxNiwgMTMsIDI2LCA2LCAyMTgsIDE5MiwgMTMsIDI2LCA2LCAyNDYsIAotICAgIDE0MiwgMTMsIDI2LCA2LCAyMTcsIDIwMiwgMTMsIDI2LCA2LCAyMjAsIDM2LCAxMywgMjYsIDIyMywgMTAxLCAxMywgMjYsIAotICAgIDUsIDI1MSwgMiwgMTMsIDI2LCA1LCAyNDgsIDEwNiwgMTMsIDI2LCA1LCAyMzgsIDIzNSwgMTMsIDI2LCA1LCAyNDQsIDM3LCAKLSAgICAxMywgMjYsIDUsIDI0MSwgMzcsIDEzLCAyNiwgNSwgMjAyLCA4MywgMTMsIDI2LCA1LCAyNDAsIDI0OCwgMTMsIDI2LCA1LCAKLSAgICAyMDksIDc0LCAxMywgMjYsIDUsIDIzMCwgMjMwLCAxMywgMjYsIDUsIDIyOSwgMjQ3LCAxMywgMjYsIDUsIDIyOCwgMjQsIAotICAgIDEzLCAyNiwgNSwgMjIzLCAyNDYsIDEzLCAyNiwgNSwgMjIxLCA4NCwgMTMsIDI2LCA1LCAyMDMsIDE3MCwgMTMsIDI2LCA1LCAKLSAgICAyMjAsIDM0LCAxMywgMjYsIDUsIDIxOCwgMTY3LCAxMywgMjYsIDUsIDIxNiwgNTksIDEzLCAyNiwgNSwgNDYsIDIxMiwgCi0gICAgMTQ0LCAxMywgMjYsIDUsIDIxMiwgMTQ0LCAxMywgMjYsIDUsIDIwOSwgMjA3LCAxMywgMjYsIDUsIDIwNiwgMjE2LCAxMywgCi0gICAgMjYsIDUsIDIxOCwgMTkyLCAxMywgMjYsIDUsIDI0NiwgMTQyLCAxMywgMjYsIDUsIDIxNywgMjAyLCAxMywgMjYsIDUsIAotICAgIDIyMCwgMzYsIDEzLCAyNiwgMjE5LCA2OSwgMjQzLCAyMDUsIDEzLCAyNiwgMjQxLCAzOCwgOTcsIDEzLCAyNiwgMjA5LCA3NSwgCi0gICAgOTcsIDEzLCAyNiwgMjI5LCAyNDgsIDk3LCAxMywgMjYsIDIxOCwgMTkzLCA5NywgMTMsIDI2LCAyMTYsIDYwLCA5NywgMTMsIAotICAgIDI2LCAyMTgsIDE2OCwgOTcsIDEzLCAzNywgNiwgMjUxLCAyLCAxMywgMzcsIDYsIDI0OCwgMTA2LCAxMywgMzcsIDYsIDIzOCwgCi0gICAgMjM1LCAxMywgMzcsIDYsIDI0NCwgMzcsIDEzLCAzNywgNiwgMjQxLCAzNywgMTMsIDM3LCA2LCAyMDIsIDgzLCAxMywgMzcsIAotICAgIDYsIDI0MCwgMjQ4LCAxMywgMzcsIDYsIDIwOSwgNzQsIDEzLCAzNywgNiwgMjMwLCAyMzAsIDEzLCAzNywgNiwgMjI5LCAKLSAgICAyNDcsIDEzLCAzNywgNiwgMjI4LCAyNCwgMTMsIDM3LCA2LCAyMjMsIDI0NiwgMTMsIDM3LCA2LCAyMjEsIDg0LCAxMywgMzcsIAotICAgIDYsIDIwMywgMTcwLCAxMywgMzcsIDYsIDIyMCwgMzQsIDEzLCAzNywgNiwgMjE4LCAxNjcsIDEzLCAzNywgNiwgMjE2LCA1OSwgCi0gICAgMTMsIDM3LCA2LCAyMDksIDc1LCA5NywgMTMsIDM3LCA2LCAyMTIsIDE0NCwgMTMsIDM3LCA2LCAyMDksIDIwNywgMTMsIDM3LCAKLSAgICA2LCAyMDYsIDIxNiwgMTMsIDM3LCA2LCAyMTgsIDE5MiwgMTMsIDM3LCA2LCAyNDYsIDE0MiwgMTMsIDM3LCA2LCAyMTcsIAotICAgIDIwMiwgMTMsIDM3LCA2LCAyMjAsIDM2LCAxMywgMzcsIDIyMywgMTAxLCAxMywgMzcsIDUsIDI1MSwgMiwgMTMsIDM3LCA1LCAKLSAgICAyNDgsIDEwNiwgMTMsIDM3LCA1LCAyMzgsIDIzNSwgMTMsIDM3LCA1LCAyNDQsIDM3LCAxMywgMzcsIDUsIDI0MSwgMzcsIAotICAgIDEzLCAzNywgNSwgMjAyLCA4MywgMTMsIDM3LCA1LCAyNDAsIDI0OCwgMTMsIDM3LCA1LCAyMDksIDc0LCAxMywgMzcsIDUsIAotICAgIDIzMCwgMjMwLCAxMywgMzcsIDUsIDIyOSwgMjQ3LCAxMywgMzcsIDUsIDIyOCwgMjQsIDEzLCAzNywgNSwgMjIzLCAyNDYsIAotICAgIDEzLCAzNywgNSwgMjIxLCA4NCwgMTMsIDM3LCA1LCAyMDMsIDE3MCwgMTMsIDM3LCA1LCAyMjAsIDM0LCAxMywgMzcsIDUsIAotICAgIDIxOCwgMTY3LCAxMywgMzcsIDUsIDIxNiwgNTksIDEzLCAzNywgNSwgNDYsIDIxMiwgMTQ0LCAxMywgMzcsIDUsIDIxMiwgCi0gICAgMTQ0LCAxMywgMzcsIDUsIDIwOSwgMjA3LCAxMywgMzcsIDUsIDIwNiwgMjE2LCAxMywgMzcsIDUsIDIxOCwgMTkyLCAxMywgCi0gICAgMzcsIDUsIDI0NiwgMTQyLCAxMywgMzcsIDUsIDIxNywgMjAyLCAxMywgMzcsIDUsIDIyMCwgMzYsIDEzLCAzNywgMjE5LCAKLSAgICA2OSwgMjQzLCAyMDUsIDEzLCAzNywgMjQxLCAzOCwgOTcsIDEzLCAzNywgMjA5LCA3NSwgOTcsIDEzLCAzNywgMjI5LCAyNDgsIAotICAgIDk3LCAxMywgMzcsIDIxOCwgMTkzLCA5NywgMTMsIDM3LCAyMTYsIDYwLCA5NywgMTMsIDM3LCAyMTgsIDE2OCwgOTcsIDEzLCAKLSAgICAyNiwgMzcsIDYsIDI1MSwgMiwgMTMsIDI2LCAzNywgNiwgMjQ4LCAxMDYsIDEzLCAyNiwgMzcsIDYsIDIzOCwgMjM1LCAxMywgCi0gICAgMjYsIDM3LCA2LCAyNDQsIDM3LCAxMywgMjYsIDM3LCA2LCAyNDEsIDM3LCAxMywgMjYsIDM3LCA2LCAyMDIsIDgzLCAxMywgCi0gICAgMjYsIDM3LCA2LCAyNDAsIDI0OCwgMTMsIDI2LCAzNywgNiwgMjA5LCA3NCwgMTMsIDI2LCAzNywgNiwgMjMwLCAyMzAsIDEzLCAKLSAgICAyNiwgMzcsIDYsIDIyOSwgMjQ3LCAxMywgMjYsIDM3LCA2LCAyMjgsIDI0LCAxMywgMjYsIDM3LCA2LCAyMjMsIDI0NiwgMTMsIAotICAgIDI2LCAzNywgNiwgMjIxLCA4NCwgMTMsIDI2LCAzNywgNiwgMjAzLCAxNzAsIDEzLCAyNiwgMzcsIDYsIDIyMCwgMzQsIDEzLCAKLSAgICAyNiwgMzcsIDYsIDIxOCwgMTY3LCAxMywgMjYsIDM3LCA2LCAyMTYsIDU5LCAxMywgMjYsIDM3LCA2LCAyMDksIDc1LCA5NywgCi0gICAgMTMsIDI2LCAzNywgNiwgMjEyLCAxNDQsIDEzLCAyNiwgMzcsIDYsIDIwOSwgMjA3LCAxMywgMjYsIDM3LCA2LCAyMDYsIAotICAgIDIxNiwgMTMsIDI2LCAzNywgNiwgMjE4LCAxOTIsIDEzLCAyNiwgMzcsIDYsIDI0NiwgMTQyLCAxMywgMjYsIDM3LCA2LCAKLSAgICAyMTcsIDIwMiwgMTMsIDI2LCAzNywgNiwgMjIwLCAzNiwgMTMsIDI2LCAzNywgMjIzLCAxMDEsIDEzLCAyNiwgMzcsIDUsIAotICAgIDI1MSwgMiwgMTMsIDI2LCAzNywgNSwgMjQ4LCAxMDYsIDEzLCAyNiwgMzcsIDUsIDIzOCwgMjM1LCAxMywgMjYsIDM3LCA1LCAKLSAgICAyNDQsIDM3LCAxMywgMjYsIDM3LCA1LCAyNDEsIDM3LCAxMywgMjYsIDM3LCA1LCAyMDIsIDgzLCAxMywgMjYsIDM3LCA1LCAKLSAgICAyNDAsIDI0OCwgMTMsIDI2LCAzNywgNSwgMjA5LCA3NCwgMTMsIDI2LCAzNywgNSwgMjMwLCAyMzAsIDEzLCAyNiwgMzcsIDUsIAotICAgIDIyOSwgMjQ3LCAxMywgMjYsIDM3LCA1LCAyMjgsIDI0LCAxMywgMjYsIDM3LCA1LCAyMjMsIDI0NiwgMTMsIDI2LCAzNywgNSwgCi0gICAgMjIxLCA4NCwgMTMsIDI2LCAzNywgNSwgMjAzLCAxNzAsIDEzLCAyNiwgMzcsIDUsIDIyMCwgMzQsIDEzLCAyNiwgMzcsIDUsIAotICAgIDIxOCwgMTY3LCAxMywgMjYsIDM3LCA1LCAyMTYsIDU5LCAxMywgMjYsIDM3LCA1LCA0NiwgMjEyLCAxNDQsIDEzLCAyNiwgCi0gICAgMzcsIDUsIDIxMiwgMTQ0LCAxMywgMjYsIDM3LCA1LCAyMDksIDIwNywgMTMsIDI2LCAzNywgNSwgMjA2LCAyMTYsIDEzLCAKLSAgICAyNiwgMzcsIDUsIDIxOCwgMTkyLCAxMywgMjYsIDM3LCA1LCAyNDYsIDE0MiwgMTMsIDI2LCAzNywgNSwgMjE3LCAyMDIsIAotICAgIDEzLCAyNiwgMzcsIDUsIDIyMCwgMzYsIDEzLCAyNiwgMzcsIDIxOSwgNjksIDI0MywgMjA1LCAxMywgMjYsIDM3LCAyNDEsIAotICAgIDM4LCA5NywgMTMsIDI2LCAzNywgMjA5LCA3NSwgOTcsIDEzLCAyNiwgMzcsIDIyOSwgMjQ4LCA5NywgMTMsIDI2LCAzNywgCi0gICAgMjE4LCAxOTMsIDk3LCAxMywgMjYsIDM3LCAyMTYsIDYwLCA5NywgMTMsIDI2LCAzNywgMjE4LCAxNjgsIDk3LCAxMywgNDEsIAotICAgIDI2LCA2LCAyNTEsIDIsIDEzLCA0MSwgMjYsIDYsIDI0OCwgMTA2LCAxMywgNDEsIDI2LCA2LCAyMzgsIDIzNSwgMTMsIDQxLCAKLSAgICAyNiwgNiwgMjQ0LCAzNywgMTMsIDQxLCAyNiwgNiwgMjQxLCAzNywgMTMsIDQxLCAyNiwgNiwgMjAyLCA4MywgMTMsIDQxLCAKLSAgICAyNiwgNiwgMjQwLCAyNDgsIDEzLCA0MSwgMjYsIDYsIDIwOSwgNzQsIDEzLCA0MSwgMjYsIDYsIDIzMCwgMjMwLCAxMywgNDEsIAotICAgIDI2LCA2LCAyMjksIDI0NywgMTMsIDQxLCAyNiwgNiwgMjI4LCAyNCwgMTMsIDQxLCAyNiwgNiwgMjIzLCAyNDYsIDEzLCA0MSwgCi0gICAgMjYsIDYsIDIyMSwgODQsIDEzLCA0MSwgMjYsIDYsIDIwMywgMTcwLCAxMywgNDEsIDI2LCA2LCAyMjAsIDM0LCAxMywgNDEsIAotICAgIDI2LCA2LCAyMTgsIDE2NywgMTMsIDQxLCAyNiwgNiwgMjE2LCA1OSwgMTMsIDQxLCAyNiwgNiwgMjA5LCA3NSwgOTcsIDEzLCAKLSAgICA0MSwgMjYsIDYsIDIxMiwgMTQ0LCAxMywgNDEsIDI2LCA2LCAyMDksIDIwNywgMTMsIDQxLCAyNiwgNiwgMjA2LCAyMTYsIAotICAgIDEzLCA0MSwgMjYsIDYsIDIxOCwgMTkyLCAxMywgNDEsIDI2LCA2LCAyNDYsIDE0MiwgMTMsIDQxLCAyNiwgNiwgMjE3LCAKLSAgICAyMDIsIDEzLCA0MSwgMjYsIDYsIDIyMCwgMzYsIDEzLCA0MSwgMjYsIDIyMywgMTAxLCAxMywgNDEsIDI2LCA1LCAyNTEsIDIsIAotICAgIDEzLCA0MSwgMjYsIDUsIDI0OCwgMTA2LCAxMywgNDEsIDI2LCA1LCAyMzgsIDIzNSwgMTMsIDQxLCAyNiwgNSwgMjQ0LCAzNywgCi0gICAgMTMsIDQxLCAyNiwgNSwgMjQxLCAzNywgMTMsIDQxLCAyNiwgNSwgMjAyLCA4MywgMTMsIDQxLCAyNiwgNSwgMjQwLCAyNDgsIAotICAgIDEzLCA0MSwgMjYsIDUsIDIwOSwgNzQsIDEzLCA0MSwgMjYsIDUsIDIzMCwgMjMwLCAxMywgNDEsIDI2LCA1LCAyMjksIDI0NywgCi0gICAgMTMsIDQxLCAyNiwgNSwgMjI4LCAyNCwgMTMsIDQxLCAyNiwgNSwgMjIzLCAyNDYsIDEzLCA0MSwgMjYsIDUsIDIyMSwgODQsIAotICAgIDEzLCA0MSwgMjYsIDUsIDIwMywgMTcwLCAxMywgNDEsIDI2LCA1LCAyMjAsIDM0LCAxMywgNDEsIDI2LCA1LCAyMTgsIDE2NywgCi0gICAgMTMsIDQxLCAyNiwgNSwgMjE2LCA1OSwgMTMsIDQxLCAyNiwgNSwgNDYsIDIxMiwgMTQ0LCAxMywgNDEsIDI2LCA1LCAyMTIsIAotICAgIDE0NCwgMTMsIDQxLCAyNiwgNSwgMjA5LCAyMDcsIDEzLCA0MSwgMjYsIDUsIDIwNiwgMjE2LCAxMywgNDEsIDI2LCA1LCAKLSAgICAyMTgsIDE5MiwgMTMsIDQxLCAyNiwgNSwgMjQ2LCAxNDIsIDEzLCA0MSwgMjYsIDUsIDIxNywgMjAyLCAxMywgNDEsIDI2LCAKLSAgICA1LCAyMjAsIDM2LCAxMywgNDEsIDI2LCAyMTksIDY5LCAyNDMsIDIwNSwgMTMsIDQxLCAyNiwgMjQxLCAzOCwgOTcsIDEzLCAKLSAgICA0MSwgMjYsIDIwOSwgNzUsIDk3LCAxMywgNDEsIDI2LCAyMjksIDI0OCwgOTcsIDEzLCA0MSwgMjYsIDIxOCwgMTkzLCA5NywgCi0gICAgMTMsIDQxLCAyNiwgMjE2LCA2MCwgOTcsIDEzLCA0MSwgMjYsIDIxOCwgMTY4LCA5NywgMTMsIDQxLCAyNiwgMzcsIDYsIAotICAgIDI1MSwgMiwgMTMsIDQxLCAyNiwgMzcsIDYsIDI0OCwgMTA2LCAxMywgNDEsIDI2LCAzNywgNiwgMjM4LCAyMzUsIDEzLCA0MSwgCi0gICAgMjYsIDM3LCA2LCAyNDQsIDM3LCAxMywgNDEsIDI2LCAzNywgNiwgMjQxLCAzNywgMTMsIDQxLCAyNiwgMzcsIDYsIDIwMiwgCi0gICAgODMsIDEzLCA0MSwgMjYsIDM3LCA2LCAyNDAsIDI0OCwgMTMsIDQxLCAyNiwgMzcsIDYsIDIwOSwgNzQsIDEzLCA0MSwgMjYsIAotICAgIDM3LCA2LCAyMzAsIDIzMCwgMTMsIDQxLCAyNiwgMzcsIDYsIDIyOSwgMjQ3LCAxMywgNDEsIDI2LCAzNywgNiwgMjI4LCAyNCwgCi0gICAgMTMsIDQxLCAyNiwgMzcsIDYsIDIyMywgMjQ2LCAxMywgNDEsIDI2LCAzNywgNiwgMjIxLCA4NCwgMTMsIDQxLCAyNiwgMzcsIAotICAgIDYsIDIwMywgMTcwLCAxMywgNDEsIDI2LCAzNywgNiwgMjIwLCAzNCwgMTMsIDQxLCAyNiwgMzcsIDYsIDIxOCwgMTY3LCAxMywgCi0gICAgNDEsIDI2LCAzNywgNiwgMjE2LCA1OSwgMTMsIDQxLCAyNiwgMzcsIDYsIDIwOSwgNzUsIDk3LCAxMywgNDEsIDI2LCAzNywgCi0gICAgNiwgMjEyLCAxNDQsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMDksIDIwNywgMTMsIDQxLCAyNiwgMzcsIDYsIDIwNiwgMjE2LCAKLSAgICAxMywgNDEsIDI2LCAzNywgNiwgMjE4LCAxOTIsIDEzLCA0MSwgMjYsIDM3LCA2LCAyNDYsIDE0MiwgMTMsIDQxLCAyNiwgMzcsIAotICAgIDYsIDIxNywgMjAyLCAxMywgNDEsIDI2LCAzNywgNiwgMjIwLCAzNiwgMTMsIDQxLCAyNiwgMzcsIDIyMywgMTAxLCAxMywgCi0gICAgNDEsIDI2LCAzNywgNSwgMjUxLCAyLCAxMywgNDEsIDI2LCAzNywgNSwgMjQ4LCAxMDYsIDEzLCA0MSwgMjYsIDM3LCA1LCAKLSAgICAyMzgsIDIzNSwgMTMsIDQxLCAyNiwgMzcsIDUsIDI0NCwgMzcsIDEzLCA0MSwgMjYsIDM3LCA1LCAyNDEsIDM3LCAxMywgNDEsIAotICAgIDI2LCAzNywgNSwgMjAyLCA4MywgMTMsIDQxLCAyNiwgMzcsIDUsIDI0MCwgMjQ4LCAxMywgNDEsIDI2LCAzNywgNSwgMjA5LCAKLSAgICA3NCwgMTMsIDQxLCAyNiwgMzcsIDUsIDIzMCwgMjMwLCAxMywgNDEsIDI2LCAzNywgNSwgMjI5LCAyNDcsIDEzLCA0MSwgMjYsIAotICAgIDM3LCA1LCAyMjgsIDI0LCAxMywgNDEsIDI2LCAzNywgNSwgMjIzLCAyNDYsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMjEsIDg0LCAKLSAgICAxMywgNDEsIDI2LCAzNywgNSwgMjAzLCAxNzAsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMjAsIDM0LCAxMywgNDEsIDI2LCAzNywgCi0gICAgNSwgMjE4LCAxNjcsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMTYsIDU5LCAxMywgNDEsIDI2LCAzNywgNSwgNDYsIDIxMiwgMTQ0LCAKLSAgICAxMywgNDEsIDI2LCAzNywgNSwgMjEyLCAxNDQsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMDksIDIwNywgMTMsIDQxLCAyNiwgMzcsIAotICAgIDUsIDIwNiwgMjE2LCAxMywgNDEsIDI2LCAzNywgNSwgMjE4LCAxOTIsIDEzLCA0MSwgMjYsIDM3LCA1LCAyNDYsIDE0MiwgCi0gICAgMTMsIDQxLCAyNiwgMzcsIDUsIDIxNywgMjAyLCAxMywgNDEsIDI2LCAzNywgNSwgMjIwLCAzNiwgMTMsIDQxLCAyNiwgMzcsIAotICAgIDIxOSwgNjksIDI0MywgMjA1LCAxMywgNDEsIDI2LCAzNywgMjQxLCAzOCwgOTcsIDEzLCA0MSwgMjYsIDM3LCAyMDksIDc1LCAKLSAgICA5NywgMTMsIDQxLCAyNiwgMzcsIDIyOSwgMjQ4LCA5NywgMTMsIDQxLCAyNiwgMzcsIDIxOCwgMTkzLCA5NywgMTMsIDQxLCAKLSAgICAyNiwgMzcsIDIxNiwgNjAsIDk3LCAxMywgNDEsIDI2LCAzNywgMjE4LCAxNjgsIDk3LCAxMywgMjYsIDYsIDI0MywgMTk5LCAKLSAgICAxMywgMjYsIDUsIDI0MywgMTk5LCAxMywgMjYsIDE3LCAyMDIsIDg0LCAxMywgMjYsIDE3LCAxMDUsIDEzLCAyNiwgMTcsIAotICAgIDEwOCwgMTMsIDI2LCAxNywgMTQ3LCAxMywgMjYsIDE3LCAxNDksIDEzLCAyNiwgMTcsIDE3MCwgMTMsIDI2LCAxNywgMTk1LCAKLSAgICAxMywgMjYsIDE3LCAyMTMsIDExMSwgMTMsIDI2LCAxNywgMTk5LCAxMywgMjYsIDE3LCAyMjIsIDYzLCAxMywgMTY5LCAxNywgCi0gICAgMjAyLCA4NCwgMTMsIDE2OSwgMTcsIDEwNSwgMTMsIDE2OSwgMTcsIDEwOCwgMTMsIDE2OSwgMTcsIDE0NywgMTMsIDE2OSwgCi0gICAgMTcsIDE0OSwgMTMsIDE2OSwgMTcsIDE3MCwgMTMsIDE2OSwgMTcsIDE5NSwgMTMsIDE2OSwgMTcsIDIxMywgMTExLCAxMywgCi0gICAgMTY5LCAxNywgMTk5LCAxMywgMTY5LCAxNywgMjIyLCA2MywgMTMsIDQxLCAxNywgMjAyLCA4NCwgMTMsIDQxLCAxNywgMTA1LCAKLSAgICAxMywgNDEsIDE3LCAxMDgsIDEzLCA0MSwgMTcsIDE0NywgMTMsIDQxLCAxNywgMTQ5LCAxMywgNDEsIDE3LCAxNzAsIDEzLCAKLSAgICA0MSwgMTcsIDE5NSwgMTMsIDQxLCAxNywgMjEzLCAxMTEsIDEzLCA0MSwgMTcsIDE5OSwgMTMsIDQxLCAxNywgMjIyLCA2MywgCi0gICAgMTMsIDQxLCAyNiwgMTcsIDIwMiwgODQsIDEzLCA0MSwgMjYsIDE3LCAxMDUsIDEzLCA0MSwgMjYsIDE3LCAxMDgsIDEzLCAKLSAgICA0MSwgMjYsIDE3LCAxNDcsIDEzLCA0MSwgMjYsIDE3LCAxNDksIDEzLCA0MSwgMjYsIDE3LCAxNzAsIDEzLCA0MSwgMjYsIAotICAgIDE3LCAxOTUsIDEzLCA0MSwgMjYsIDE3LCAyMTMsIDExMSwgMTMsIDQxLCAyNiwgMTcsIDE5OSwgMTMsIDQxLCAyNiwgMTcsIAotICAgIDIyMiwgNjMsIDEzLCAyMjQsIDQxLCAxNywgMjAyLCA4NCwgMTMsIDIyNCwgNDEsIDE3LCAxMDUsIDEzLCAyMjQsIDQxLCAxNywgCi0gICAgMTA4LCAxMywgMjI0LCA0MSwgMTcsIDE0NywgMTMsIDIyNCwgNDEsIDE3LCAxNDksIDEzLCAyMjQsIDQxLCAxNywgMTcwLCAKLSAgICAxMywgMjI0LCA0MSwgMTcsIDE5NSwgMTMsIDIyNCwgNDEsIDE3LCAyMTMsIDExMSwgMTMsIDIyNCwgNDEsIDE3LCAxOTksIAotICAgIDEzLCAyMjQsIDQxLCAxNywgMjIyLCA2MywgMjEsIDEyOCwgMjMxLCAzNSwgMjEsIDIzNywgMTIwLCAyMzEsIDM1LCAyMSwgCi0gICAgMjM3LCAxMTYsIDIzMSwgMzUsIDIxLCAyMzcsIDEwNSwgMjMxLCAzNSwgMjEsIDIzNywgMTA5LCAyMzEsIDM1LCAyMSwgMjM3LCAKLSAgICAxMjIsIDIzMSwgMzUsIDIxLCAxMjgsIDEyMiwgMjQ4LCAxMTcsIDIxLCAyMzcsIDEyMCwgMTIyLCAyNDgsIDExNywgMjEsIAotICAgIDEyOCwgMTQ4LCAyMDYsIDI0OCwgMTIyLCAyNDgsIDExNywgMjEsIDEyOCwgMTIyLCAyMTYsIDE4OCwgMjI5LCAyOSwgMjEsIAotICAgIDEyOCwgMTIyLCAyNDUsIDk3LCAyMSwgMTI4LCAxMjIsIDIzNiwgMjM1LCAyMSwgMTI4LCAxMjIsIDIzNiwgMjM2LCAyMjcsIAotICAgIDAsIDIxLCAyMzcsIDEyMCwgMTIyLCAyMzYsIDIzNywgMjEsIDEyOCwgMTIyLCAyMjQsIDE0OCwgMjEsIDIzNywgMTIwLCAKLSAgICAxMjIsIDIyNCwgMTQ4LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjQ4LCAxMTcsIDIxLCAxMjgsIDEyMiwgMTAxLCAyMTYsIDE4OCwgCi0gICAgMjI5LCAyOCwgMjEsIDEyOCwgMTIyLCAxMDEsIDIzNiwgMjM1LCAyMSwgMTI4LCAxMjIsIDExMiwgMTAxLCAyMzYsIDIzNSwgCi0gICAgMjEsIDEyOCwgMTIyLCAyMzYsIDIzNiwgMTAxLCAyMDYsIDIyNCwgMjEsIDEyOCwgMTIyLCAxMDEsIDI0NSwgMjA3LCAyMSwgCi0gICAgMTI4LCAxMjIsIDEwMSwgMjQ1LCAyMDgsIDEyMiwgMjQ4LCAxMTcsIDIxLCAxMjgsIDEyMiwgMTAxLCAyNDUsIDIwOCwgMTAxLCAKLSAgICAyNDgsIDExNywgMjEsIDEyOCwgMTIyLCAxMDEsIDI0NSwgMjA4LCAyNDUsIDk3LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjQ1LCAKLSAgICAyMDgsIDIzNiwgMjM1LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjQ1LCAxMjcsIDIxLCAyMzcsIDEyMCwgMTIyLCAxMDEsIDI0NSwgCi0gICAgMTI3LCAyMSwgMTI4LCAxMDEsIDI0OCwgMTE4LCAxMTUsIDIzMSwgMzUsIDIxLCAxMjgsIDEyMiwgMjQ4LCAxMTgsIDExNSwgCi0gICAgMjI0LCAxNDgsIDIxLCAxMjgsIDEyMiwgMTAxLCAyMDksIDIxLCAyMSwgMjM3LCAxMjAsIDEyMiwgMTAxLCAyMDksIDIxLCAKLSAgICAyMSwgMTI4LCAxMjIsIDEwMSwgMjExLCA1MywgMTQ4LCAyNDgsIDExNywgMjEsIDEyOCwgMTIyLCAxMDEsIDI0OCwgMTE4LCAKLSAgICAxNDgsIDIxMSwgNTIsIDIxLCAxMjgsIDEyMiwgMTAxLCAxNDgsIDI0OCwgMTE3LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjM2LCAKLSAgICAyMzYsIDIxMSwgMTg2LCAxNDgsIDIxMiwgMTU1LCAyMSwgMTI4LCAxMjIsIDExMiwgMTAxLCAyMzYsIDIzNiwgMTQ4LCAyMTIsIAotICAgIDE1NSwgMjEsIDEyOCwgMTIyLCAxMTIsIDEwMSwgMjM2LCAyMzYsIDE0OCwgMjQ1LCAyMDcsIDIxLCAxMjgsIDEyMiwgMjM2LCAKLSAgICAyMzYsIDEwMSwgMTEyLCAxNDgsIDIxMiwgMTU1LCAyMSwgMTI4LCAxMjIsIDEwMSwgMTEyLCAyMTEsIDE4NiwgMTQ4LCAyMzksIAotICAgIDE1MSwgMjEsIDEyOCwgMTIyLCAxMDEsIDE0OCwgMjQ1LCA5NywgMjEsIDEyOCwgMTIyLCAxMDEsIDE0OCwgMjQ2LCA2MCwgCi0gICAgMjEsIDEyOCwgMTIyLCAxMDEsIDE0OCwgMjM2LCAxMTQsIDIxLCAxMjgsIDEyMiwgMTAxLCAxNDgsIDIzNiwgMjM1LCAyMSwgCi0gICAgMTI4LCAxNDgsIDI0OCwgMTA0LCAxMjIsIDEwMSwgMjExLCA1MiwgMjEsIDEyOCwgMTIyLCAxMDEsIDI0NSwgMjA4LCAxNDgsIAotICAgIDIxMiwgMTU1LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjQ1LCAyMDgsIDE0OCwgMjEyLCAxNTYsIDI0NSwgMjA3LCAyMSwgMTI4LCAKLSAgICAxMjIsIDEwMSwgMjQ1LCAyMDgsIDE0OCwgMjEyLCAxNTYsIDI0OCwgMTE3LCAyMSwgMTI4LCAxMDEsIDE0OCwgMjM2LCAxMTUsIAotICAgIDEyMiwgMjA2LCAyMjQsIDIxLCAxMjgsIDEyMiwgMTQ4LCAyMzYsIDExNSwgMTAxLCAyMDYsIDIyNCwgMjEsIDEyOCwgMTIyLCAKLSAgICAxMDEsIDI0NSwgMjA4LCAyMzYsIDIzNiwgMTQ4LCAyMTIsIDE1NSwgMjEsIDEyOCwgMTIyLCAxMDEsIDI0NSwgMTI4LCAxNDgsIAotICAgIDIxMiwgMTU1LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjQ1LCAyMDgsIDE0OCwgMjM5LCAxNTEsIDIxLCAxMjgsIDEyMiwgMTAxLCAKLSAgICAyNDUsIDIwOCwgMjQ1LCA5OCwgMTQ4LCAyMzksIDE1MSwgMjEsIDEyOCwgMTAxLCAxNDgsIDI0NSwgOTgsIDEyMiwgMjA2LCAKLSAgICAyMjQsIDIxLCAxMjgsIDEyMiwgMTQ4LCAyNDUsIDk4LCAxMDEsIDIwNiwgMjI0LCAyMSwgMTI4LCAxMDEsIDE0OCwgNDMsIAotICAgIDEyMiwgMjA2LCAyMjQsIDIxLCAxMjgsIDEwMSwgMTQ4LCA0MywgMTIyLCAyMzYsIDIzNSwgMjEsIDEyOCwgMTIyLCAxNDgsIAotICAgIDI1MCwgMjE2LCAyMTksIDIxMiwgMTAxLCAyMDYsIDIyNCwgMjEsIDEyOCwgMTIyLCAxNDgsIDI1MCwgMjE2LCAyMzEsIDUwLCAKLSAgICAxMDEsIDIwNiwgMjI0LCAyMSwgMTI4LCAxMjIsIDE0OCwgNDMsIDEwMSwgMjA2LCAyMjQsIDIxLCAxMjgsIDEyMiwgMTAxLCAKLSAgICAxNDgsIDI0NSwgMjA4LCAyMzYsIDIzNSwgMjEsIDEyOCwgMTIyLCAxMDEsIDE0OCwgMjUwLCAyMTYsIDIxOSwgMjExLCAyMSwgCi0gICAgMTI4LCAxMjIsIDEwMSwgMTQ4LCAyNTAsIDIxNSwgMjEsIDEyOCwgMTAxLCAxNDgsIDI1MCwgMjE2LCAyMTksIDIxMiwgMTIyLCAKLSAgICAyMDYsIDIyNCwgMjEsIDEyOCwgMTAxLCAxNDgsIDI1MCwgMjE2LCAyMTksIDIxMiwgMTIyLCAyNDUsIDEyNywgMjEsIDEyOCwgCi0gICAgMTAxLCAxNDgsIDI1MCwgMjE2LCAxMjIsIDIwNiwgMjI0LCAyMSwgMTI4LCAxMjIsIDE0OCwgMjM2LCAxMTUsIDEwMSwgMjM2LCAKLSAgICAyMzUsIDIxLCAyMzcsIDExMSwgMjM5LCAxNDcsIDIzOSwgMjUzLCAyMSwgMjM3LCAxMTEsIDIzOSwgMTQ3LCAyMzksIDI1NCwgCi0gICAgMjQ4LCAxMTcsIDIxLCAyMzcsIDExMSwgMjM5LCAxNDcsIDIzOSwgMjU0LCAyMzYsIDIzNSwgMjEsIDIzNywgMTExLCAyMzksIAotICAgIDE0NywgMjM5LCAyNTQsIDI0NSwgMjA3LCAyMSwgMjM3LCAxMTEsIDIzOSwgMTQ3LCAyMzksIDI1NCwgMjQ1LCAyMDgsIDIxMSwgCi0gICAgMTkzLCAyMSwgMjM3LCAxMTgsIDIzOSwgMTQ3LCAyMzksIDI1NCwgMjQ1LCAyMDcsIDIxLCAxMjgsIDIzOSwgMTQ3LCAyMzksIAotICAgIDI1NCwgMjQ1LCAyMDgsIDI0OCwgMTE3LCAyMSwgMjM3LCAxMDksIDIzOSwgMTQ3LCAyMzksIDI1NCwgMjQ1LCAyMDcsIDIxLCAKLSAgICAyMzcsIDExMSwgMjM5LCAyMzMsIDIzOSwgMjU0LCAyMTEsIDE4NSwgMjEsIDIzNywgMTExLCAyMzcsIDQ2LCAyMzksIDIzMywgCi0gICAgMjM5LCAyNTQsIDIxMSwgMTg1LCAyMSwgMjM3LCAxMTEsIDIzOSwgMjMzLCAyMzksIDI1NCwgMjExLCAxODYsIDIzOSwgMTQ3LCAKLSAgICAyNDgsIDExNywgMjEsIDIzNywgMTExLCAyMzcsIDQ2LCAyMzksIDIzMywgMjM5LCAyNTQsIDIxMSwgMTg2LCAyMzksIDE0NywgCi0gICAgMjQ4LCAxMTcsIDIxLCAyMzcsIDExMSwgMjM5LCAyMzMsIDIzOSwgMjU0LCAyMTEsIDE4NiwgMjQ4LCAxMTcsIDIxLCAyMzcsIAotICAgIDExMSwgMjM3LCA0NiwgMjM5LCAyMzMsIDIzOSwgMjU0LCAyMTEsIDE4NiwgMjQ4LCAxMTcsIDIxLCAyMzcsIDExMSwgMjM5LCAKLSAgICAyMzMsIDIzOSwgMjU0LCAyMTEsIDE4NiwgMTQ4LCAyMzksIDE1MSwgMjEsIDIzNywgMTE2LCAyMzksIDIzMywgMjM5LCAyNTQsIAotICAgIDIxMSwgMTg1LCAyMSwgMjM3LCAxMTYsIDIzOSwgMjMzLCAyMzksIDI1NCwgMjExLCAxODYsIDIyMCwgOCwgMjEsIDIzNywgCi0gICAgMTA5LCAyMzksIDIzMywgMjM5LCAyNTQsIDIxMSwgMTg2LCAyMjAsIDgsIDIxLCAyMzcsIDEwNSwgMjM5LCAyMzMsIDIzOSwgCi0gICAgMjU0LCAyMTEsIDE4NSwgMjEsIDIzNywgMTExLCAyMzksIDIzMywgMjM5LCAyNTQsIDIxMSwgMTg2LCAyMzYsIDIzNSwgMjEsIAotICAgIDIzNywgMTExLCAyMzksIDIzMywgMjM5LCAyNTQsIDIxMSwgMTg2LCAyMzYsIDIzNiwgMTQ4LCAyMTIsIDE1NSwgMjEsIDIzNywgCi0gICAgMTExLCAyMzksIDIzMywgMjM5LCAyNTQsIDIxMSwgMTg2LCAyMzYsIDIzNiwgMjIxLCAxOTIsIDIwOSwgMjEsIDIxLCAyMzcsIAotICAgIDExMCwgMjEsIDIzNywgMTExLCAyNDgsIDEwNCwgMjE5LCAxMzUsIDI0MCwgOTQsIDIxLCAyMzcsIDExMSwgMjM3LCA0NSwgCi0gICAgMjEsIDIzNywgMTExLCAxNDgsIDIxMiwgMTU1LCAyMSwgMjM3LCAxMTEsIDIzNywgNDYsIDE0OCwgMjEyLCAxNTUsIDIxLCAKLSAgICAyMzcsIDExMSwgMTQ4LCAyNDgsIDExNywgMjEsIDIzNywgMTExLCAxNDgsIDIzOSwgMTUxLCAyMSwgMjM3LCAxMTEsIDIxMSwgCi0gICAgMTk0LCAxMjIsIDE0OCwgMjEyLCAxNTUsIDIxLCAyMzcsIDExMSwgMjExLCAxOTQsIDI0NiwgMjE3LCAyMSwgMjM3LCAxMTEsIAotICAgIDIxMSwgMTk0LCAyNDYsIDIxOCwgMTQ4LCAyMTIsIDE1NSwgMjEsIDIzNywgMTExLCAyMTEsIDE5NCwgMjQ2LCAyMTgsIDE0OCwgCi0gICAgMjEyLCAxNTYsIDI0OCwgMTE3LCAyMSwgMjM3LCAxMTEsIDIxMSwgMTk0LCAyMjcsIDg1LCAyMSwgMjM3LCAxMTcsIDIxLCAKLSAgICAyMzcsIDExOCwgMTQ4LCAyMTIsIDE1NSwgMjEsIDIzNywgMTE4LCAyMjEsIDE5MiwgMjA5LCAyMSwgMjEsIDIzNywgMTE4LCAKLSAgICAxNDgsIDIzOSwgMTUxLCAyMSwgMjM3LCAxMDcsIDI0NSwgOTQsIDIxLCAyMzcsIDEwNiwgMjEsIDIzNywgMTE2LCAyMjAsIDgsIAotICAgIDIxLCAyMzcsIDExNSwgMjEsIDIzNywgMTE2LCAxNzEsIDE0OCwgMjEyLCAxNTUsIDIxLCAyMzcsIDExNiwgMTQ4LCAyMTIsIAotICAgIDE1NSwgMjEsIDIzNywgMTE2LCAxNzEsIDIyMSwgMTkyLCAyMDksIDIxLCAyMSwgMjM3LCAxMTYsIDIyMSwgMTkyLCAyMDksIAotICAgIDIxLCAyMSwgMjM3LCAxMTYsIDE3MSwgMTQ4LCAyMzksIDE1MSwgMjEsIDIzNywgMTE2LCAxNDgsIDIzOSwgMTUxLCAyMSwgCi0gICAgMjM3LCAxMTQsIDIyMCwgOCwgMjEsIDIzNywgMTEzLCAyMSwgMjM3LCAxMTksIDIxLCAyMzcsIDEwNCwgMjEsIDIzNywgMTA1LCAKLSAgICAxNDgsIDIxMiwgMTU1LCAyMSwgMjM3LCAxMDUsIDIyMSwgMTkyLCAyMDksIDIxLCAyMSwgMjM3LCAxMDUsIDE0OCwgMjM5LCAKLSAgICAxNTEsIDIxLCAyMzcsIDEwOSwgMjIwLCA4LCAyMSwgMjM3LCAxMDksIDE3MSwgMTQ4LCAyMzksIDE1MSwgMjEsIDIzNywgCi0gICAgMTA4LCAyMSwgMjM3LCAxMDksIDIxMiwgMzYsIDIxLCAyMzcsIDEwOSwgMTcxLCAxNDgsIDIxMiwgMTU1LCAyMSwgMjM3LCAKLSAgICAxMDksIDE0OCwgMjEyLCAxNTUsIDIxLCAyMzcsIDEwOSwgMTcxLCAyMjEsIDE5MiwgMjA5LCAyMSwgMjEsIDIzNywgMTA5LCAKLSAgICAyMjEsIDE5MiwgMjA5LCAyMSwgMjEsIDIzNywgMTA5LCAxNDgsIDIxMiwgMTU2LCAyMDgsIDEyNywgMjMxLCAzNSwgMjEsIAotICAgIDIzNywgMTA5LCAxNDgsIDI0OCwgMTA0LCAxMDEsIDIxNSwgMjUyLCAyMSwgMjM3LCAxMjEsIDIxLCAxMjgsIDEyMiwgMTAxLCAKLSAgICAyMTUsIDI1MiwgMjEsIDIzNywgMTIwLCAxMjIsIDEwMSwgMjE1LCAyNTIsIDIxLCAyMzcsIDEwOSwgMTIyLCAxMDEsIDIxNSwgCi0gICAgMjUyLCAyMSwgMjM3LCAxMjIsIDEyMiwgMTAxLCAyMTUsIDI1MiwgMjEsIDIzNywgMTA5LCAyMjcsIDg1LCAyMSwgMTI4LCAKLSAgICAxMjIsIDEwMSwgMjE1LCAyNTMsIDI0OCwgMTE3LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjE1LCAyNTMsIDI0NSwgMjA3LCAyMSwgCi0gICAgMjM3LCAxMDksIDEyMiwgMTAxLCAyMTUsIDI1MywgMjQ1LCAyMDcsIDIxLCAxMjgsIDIyNywgODYsIDI0MiwgNzAsIDIxLCAKLSAgICAxMjgsIDIyNywgODYsIDEyMSwgMjE1LCAyNDgsIDIxMSwgNTIsIDIxLCAxMjgsIDIyNywgODYsIDEyMSwgMjE1LCAyNDgsIAotICAgIDI0NSwgODUsIDIxLCAxMjgsIDIyNywgODYsIDEyMSwgMjE5LCAyMjAsIDI0NiwgNjAsIDIxLCAxMjgsIDIyNywgODYsIDIwNiwgCi0gICAgMjI0LCAyMSwgMTI4LCAxNDgsIDIwNiwgMjQ4LCAyMjcsIDg2LCAyMDYsIDIyNCwgMjEsIDIzNywgMTIwLCAyMjcsIDg2LCAKLSAgICAyMDYsIDIyNCwgMjEsIDIzNywgMTA1LCAyMjcsIDg2LCAyMDYsIDIyNCwgMjEsIDIzNywgMTIyLCAyMjcsIDg2LCAyMDYsIAotICAgIDIyNCwgMjEsIDEyOCwgMjI3LCA4NiwgMjE2LCAxODgsIDIyOSwgMjksIDIxLCAxMjgsIDIyNywgODYsIDI0OCwgMTE3LCAyMSwgCi0gICAgMTI4LCAyMjcsIDg2LCAyMDgsIDEyOCwgMjA5LCAyMSwgMjEsIDEyOCwgMjI3LCA4NiwgMjA5LCAyMSwgMjEsIDIzNywgMTA5LCAKLSAgICAyMjcsIDg2LCAyMDksIDIxLCAyMSwgMTI4LCAyMjcsIDg2LCAxMjIsIDIwOSwgMjEsIDIxLCAyMzcsIDEwOSwgMjI3LCA4NiwgCi0gICAgMTIyLCAyMDksIDIxLCAyMSwgMjM3LCAxMjIsIDIyNywgODYsIDEyMiwgMTQ4LCAxMjIsIDE0OCwgMjE5LCAyMTEsIDIxLCAKLSAgICAyMzcsIDEyMiwgMjI3LCA4NiwgMTIyLCAxNDgsIDEyMiwgMjA5LCAyMSwgMjEsIDEyOCwgMjI3LCA4NiwgMjMxLCAzNSwgMjEsIAotICAgIDIzNywgMTIwLCAyMjcsIDg2LCAyMzEsIDM1LCAyMSwgMjM3LCAxMDksIDIyNywgODYsIDIzMSwgMzUsIDIxLCAyMzcsIDEyMiwgCi0gICAgMjI3LCA4NiwgMjMxLCAzNSwgMjEsIDEyOCwgMTIyLCAxMDEsIDIyNywgODUsIDIxLCAyMzcsIDEyMCwgMTIyLCAxMDEsIAotICAgIDIyNywgODUsIDIxLCAyMzcsIDEwOSwgMTIyLCAxMDEsIDIyNywgODUsIDIxLCAyMzcsIDEwOSwgMjE1LCAyNTIsIDIxLCAKLSAgICAyMzcsIDEyMiwgMTIyLCAxMDEsIDIyNywgODUsIDIxLCAxMjgsIDEyMiwgMTAxLCAyNDUsIDEzMSwgMjI3LCA4NSwgMjEsIAotICAgIDIzNywgMTIwLCAxMjIsIDEwMSwgMjQ1LCAxMzEsIDIyNywgODUsIDIxLCAxMjgsIDIxNSwgMjUzLCAyNDIsIDcwLCAyMSwgCi0gICAgMjM3LCAxMDksIDIxNSwgMjUzLCAxMjEsIDEyMiwgMTQ4LCAyMzYsIDExNiwgMjI0LCAxNDgsIDIxLCAyMzcsIDEyMiwgMjE1LCAKLSAgICAyNTMsIDEyMSwgMTAxLCAxNDgsIDEyMiwgMjQ1LCAxMzAsIDIxLCAxMjgsIDIxNSwgMjUzLCAyMDYsIDIyNCwgMjEsIDEyOCwgCi0gICAgMjE1LCAyNTMsIDIxNiwgMTg4LCAyMjksIDI5LCAyMSwgMTI4LCAyMTUsIDI1MywgMjI3LCA4NSwgMjEsIDIzNywgMTIwLCAKLSAgICAyMTUsIDI1MywgMjI3LCA4NSwgMjEsIDIzNywgMTA1LCAyMTUsIDI1MywgMjI3LCA4NSwgMjEsIDIzNywgMTIyLCAyMTUsIAotICAgIDI1MywgMjI3LCA4NSwgMjEsIDEyOCwgMjE1LCAyNTMsIDIyNCwgMTQ4LCAyMSwgMTI4LCAyMTUsIDI1MywgMTAxLCAyNDUsIAotICAgIDIwNywgMjEsIDEyOCwgMjE1LCAyNTMsIDEwMSwgMjE2LCAxODgsIDIyOSwgMjgsIDIxLCAxMjgsIDIxNSwgMjUzLCAyMzEsIAotICAgIDM1LCAyMSwgMTI4LCAyMTUsIDI1MywgMjA5LCAyMSwgMjEsIDIzNywgMTA3LCAyMTUsIDI1MywgMjA5LCAyMSwgMjEsIDEyOCwgCi0gICAgMTIyLCAyMTUsIDI1MywgMjI3LCA4NSwgMjEsIDIzNywgMTIwLCAxMjIsIDIxNSwgMjUzLCAyMjcsIDg1LCAyMSwgMjM3LCAKLSAgICAxMTQsIDEyMiwgMjE1LCAyNTMsIDIyNywgODYsIDIyMCwgMzEsIDIxLCAyMzcsIDEwNywgMTIyLCAyMTUsIDI1MywgMjI3LCAKLSAgICA4NiwgMjE5LCAyMTEsIDIxLCAyMzcsIDEwNywgMTIyLCAyMTUsIDI1MywgMjI3LCA4NiwgMjMxLCA0OSwgMjEsIDIzNywgCi0gICAgMTA3LCAxMjIsIDIxNSwgMjUzLCAyMjcsIDg2LCAyMDYsIDI0NywgMjEsIDIzNywgMTE2LCAxMjIsIDIxNSwgMjUzLCAyMjcsIAotICAgIDg1LCAyMSwgMjM3LCAxMDksIDEyMiwgMjE1LCAyNTMsIDIyNywgODUsIDIxLCAyMzcsIDEyMiwgMTIyLCAyMTUsIDI1MywgCi0gICAgMjI3LCA4NiwgMjE5LCAyMTEsIDIxLCAyMzcsIDEyMiwgMTIyLCAyMTUsIDI1MywgMjI3LCA4NSwgMjEsIDEyOCwgMTAxLCAKLSAgICAyNDIsIDcwLCAyMSwgMjM3LCAxMDksIDIyNCwgMTQ4LCAyMSwgMTI4LCAxMDEsIDIwNiwgMjI0LCAyMSwgMjM3LCAxMjAsIAotICAgIDEwMSwgMjA2LCAyMjQsIDIxLCAxMjgsIDEwMSwgMjE2LCAxODgsIDIyOSwgMjksIDIxLCAxMjgsIDEwMSwgMTEyLCAxNDgsIAotICAgIDIxMiwgMTU1LCAyMSwgMjM3LCAxMDcsIDEwMSwgMjA5LCAyMSwgMjEsIDEyOCwgMTAxLCAxNDgsIDIyNywgODUsIDIxLCAKLSAgICAxMjgsIDEwMSwgMjI3LCA4NSwgMjEsIDEyOCwgMTAxLCAyMTUsIDI1MywgMjI3LCA4NSwgMjEsIDIzNywgMTIwLCAxMDEsIAotICAgIDIxNSwgMjUzLCAyMjcsIDg1LCAyMSwgMjM3LCAxMTQsIDEwMSwgMjE1LCAyNTMsIDIyNywgODYsIDIyMCwgMzEsIDIxLCAKLSAgICAyMzcsIDExNiwgMTAxLCAyMTUsIDI1MywgMjI3LCA4NSwgMjEsIDIzNywgMTA5LCAxMDEsIDIxNSwgMjUzLCAyMjcsIDg1LCAKLSAgICAyMSwgMjM3LCAxMjIsIDEwMSwgMjE1LCAyNTMsIDIyNywgODYsIDIxOSwgMjExLCAyMSwgMjM3LCAxMjIsIDEwMSwgMjE1LCAKLSAgICAyNTMsIDIyNywgODYsIDIzMSwgNDksIDIxLCAyMzcsIDEyMiwgMTAxLCAyMTUsIDI1MywgMjI3LCA4NSwgMjEsIDIzNywgCi0gICAgMTIwLCAxMDEsIDIxNSwgMjUzLCAyMjcsIDg2LCAyNDgsIDExNywgMjEsIDIzNywgMTE4LCAxMDEsIDIxNSwgMjUzLCAyMjcsIAotICAgIDg2LCAyNDUsIDIwNywgMjEsIDIzNywgMTE4LCAxMDEsIDIxNSwgMjUzLCAyMjcsIDg2LCAyNDUsIDIwOCwgMjEyLCAxNTUsIAotICAgIDIxLCAyMzcsIDEwNywgMTAxLCAyMTUsIDI1MywgMjI3LCA4NiwgMjQ1LCAyMDgsIDIxOSwgMjExLCAyMSwgMjM3LCAxMDcsIAotICAgIDEwMSwgMjE1LCAyNTMsIDIyNywgODYsIDI0NSwgMjA4LCAyMzEsIDQ5LCAyMSwgMjM3LCAxMDcsIDEwMSwgMjE1LCAyNTMsIAotICAgIDIyNywgODYsIDI0NSwgMjA3LCAyMSwgMjM3LCAxMDksIDEyMiwgMjM2LCAyMzUsIDIxLCAxMjgsIDEyMiwgMTQ4LCAyMTIsIAotICAgIDE1NSwgMjEsIDIzNywgMTA5LCAxMjIsIDE0OCwgMjEyLCAxNTUsIDIxLCAxMjgsIDEyMiwgMTQ4LCAyMTIsIDE1NiwgMTQ4LCAKLSAgICAyNDMsIDIyNywgMjEsIDEyOCwgMTIyLCAxNDgsIDIxMiwgMTU2LCAxNDgsIDI0NSwgMjA3LCAyMSwgMTI4LCAxMjIsIDE0OCwgCi0gICAgMjEyLCAxNTYsIDE0OCwgMjQ4LCAxMTcsIDIxLCAxMjgsIDEyMiwgMTQ4LCAyMTIsIDE1NiwgMTIyLCAyNDgsIDExNywgMjEsIAotICAgIDEyOCwgMTIyLCAxNDgsIDIxMiwgMTU2LCAyNDcsIDI1MSwgMjQ4LCAxMTcsIDIxLCAxMjgsIDEyMiwgMTQ4LCAyMTIsIDE1NiwgCi0gICAgMTIyLCAyMzYsIDIzNywgMjEsIDEyOCwgMTIyLCAxNDgsIDIzOSwgMTUyLCAxMjIsIDIxMSwgNTIsIDIxLCAxMjgsIDEyMiwgCi0gICAgMTQ4LCAyMzksIDE1MiwgMTIyLCAyNDgsIDExNywgMjEsIDEyOCwgMTIyLCAxNDgsIDExMywgMjEsIDEyOCwgMTIyLCAxNDgsIAotICAgIDI0NSwgOTQsIDIxLCAxMjgsIDEyMiwgMTQ4LCAyNDUsIDg4LCAxNDgsIDIzMSwgNiwgMjEsIDIzNywgMTE4LCAxMjIsIDE0OCwgCi0gICAgMjQ1LCA4OCwgMTQ4LCAyMzEsIDYsIDIxLCAxMjgsIDEyMiwgMTQ4LCAyNDUsIDg4LCAxNDgsIDIwNiwgMjQ3LCAyMSwgMTI4LCAKLSAgICAxMjIsIDE0OCwgMjQ2LCA2MSwgMjEsIDIzNywgMTE2LCAxMjIsIDIwOSwgMjEsIDIxLCAyMzcsIDExNiwgMTIyLCAxNDgsIAotICAgIDIyMCwgOCwgMjEsIDIzNywgMTA5LCAxMjIsIDE0OCwgMjIwLCA4LCAyMSwgMjM3LCAxMDksIDEyMiwgMTQ4LCAyMjgsIDcsIAotICAgIDIxLCAyMzcsIDEwOSwgMTIyLCAyMDksIDIxLCAyMSwgMjM3LCAxMDksIDEyMiwgMTQ4LCAyMTIsIDM2LCAyMSwgMjM3LCAKLSAgICAxMjIsIDEyMiwgMTQ4LCAyMTksIDIxMSwgMjEsIDIzNywgMTIyLCAxMjIsIDE0OCwgMjMxLCA0OSwgMjEsIDIzNywgMTIyLCAKLSAgICAxMjIsIDIwOSwgMjEsIDIxLCAxMjgsIDIwOSwgMjEsIDIxLCAxMjgsIDE0OCwgMjM3LCA0NSwgMjEsIDEyOCwgMTQ4LCAyMTIsIAotICAgIDE1NiwgMjQzLCAyMjcsIDIxLCAxMjgsIDE0OCwgMjEyLCAxNTYsIDI0NSwgMjA3LCAyMSwgMTI4LCAxNDgsIDIxMiwgMTU2LCAKLSAgICAyNDgsIDExNywgMjEsIDEyOCwgMTQ4LCAyMzksIDE1MSwgMjEsIDEyOCwgMTQ4LCAyNDgsIDEwNCwgMTIyLCAyMjQsIDE0OCwgCi0gICAgMjEsIDEyOCwgMTQ4LCAyNDgsIDEwNCwgMTAxLCAyMTUsIDI1MiwgMjEsIDEyOCwgMTQ4LCAyNDgsIDEwNCwgMjE1LCAyNTMsIAotICAgIDIyNywgODUsIDIxLCAxMjgsIDE0OCwgMjA2LCAyNDgsIDEyMCwgMjM5LCAyNTMsIDIxLCAxMjgsIDE0OCwgMTE1LCAxMjAsIAotICAgIDIzOSwgMjUzLCAyMSwgMTI4LCAxNDgsIDIwNiwgMjQ4LCAxMjYsIDIzOSwgMjUzLCAyMSwgMTI4LCAxNDgsIDIwNiwgMjQ4LCAKLSAgICAyMzksIDE0NywgMjM5LCAyNTMsIDIxLCAxMjgsIDE0OCwgMTE1LCAyMzksIDE0NywgMjE2LCAxODgsIDIyOSwgMjgsIDIxLCAKLSAgICAyMzcsIDExMiwgMjEsIDEyOCwgMjM3LCA0NSwgMjEsIDIwOCwgMTI5LCAyMTIsIDExOSwgMjEsIDIwOCwgMTI5LCAyMjMsIAotICAgIDIyNSwgMjEsIDIwOCwgMTI5LCAyNDgsIDEwMywgMjEsIDIzOCwgMiwgMjEyLCAxMTksIDIxLCAyMzgsIDIsIDIyMywgMjI1LCAKLSAgICAyMSwgMjM4LCAyLCAyNDgsIDEwMywgMjEsIDIxMSwgMzcsIDIxMiwgMTE5LCAyMSwgMjExLCAzNywgMjIzLCAyMjUsIDIxLCAKLSAgICAyMTEsIDM3LCAyNDgsIDEwMywgMjEsIDI0NywgMjAxLCAyMTIsIDExOSwgMjEsIDI0NywgMjAxLCAyMjMsIDIyNSwgMjEsIAotICAgIDI0NywgMjAxLCAyNDgsIDEwMywgMjEsIDIxNSwgMTQzLCAyMTIsIDExOSwgMjEsIDIxNSwgMTQzLCAyMjMsIDIyNSwgMjEsIAotICAgIDIxNSwgMTQzLCAyNDgsIDEwMywgMjEsIDIxMCwgMTg5LCAyMTAsIDEwMiwgMjEsIDIxMCwgMTg5LCAyNDgsIDEwMywgMjEsIAotICAgIDIxMSwgMTczLCAyMjgsIDgsIDIxMiwgMTE5LCAyMSwgMjExLCAxNzMsIDUsIDIxMiwgMTE5LCAyMSwgMjExLCAxNzMsIDIyOCwgCi0gICAgOCwgMjIzLCAyMjUsIDIxLCAyMTEsIDE3MywgNSwgMjIzLCAyMjUsIDIxLCAyMTEsIDE3MywgMjEzLCAxMjYsIDIxLCAyMzksIAotICAgIDIwOCwgMjI4LCA4LCAyMTIsIDExOSwgMjEsIDIzOSwgMjA4LCA1LCAyMTIsIDExOSwgMjEsIDIzOSwgMjA4LCAyMjgsIDgsIAotICAgIDIyMywgMjI1LCAyMSwgMjM5LCAyMDgsIDUsIDIyMywgMjI1LCAyMSwgMjM5LCAyMDgsIDIxMywgMTI2LCAyMSwgMjExLCAKLSAgICAxNzMsIDIzOSwgMjA4LCAyNTAsIDI1MiwgMjEsIDIyNCwgMCwgMTEyLCAxMjEsIDIyOCwgNywgMjEsIDIyNCwgMCwgMTEyLCAKLSAgICAxMjEsIDIxMiwgMzYsIDIxLCAyMjQsIDAsIDExMiwgMjEzLCAxMjYsIDIxLCAyMjQsIDAsIDEyMSwgMjEzLCAxMjYsIDIxLCAKLSAgICAyMjQsIDAsIDExMiwgMTIxLCAyNTAsIDI1MywgMjI4LCA3LCAyMSwgMjI0LCAwLCAxMTIsIDEyMSwgMjUwLCAyNTMsIDIxMiwgCi0gICAgMzYsIDIxLCAyMjQsIDAsIDIxMiwgMTU2LCAyMDgsIDE3MywgMjEyLCAxNTYsIDIxNCwgMTkwLCAyMSwgMjIzLCAyNTUsIAotICAgIDI0MCwgMywgMjQ1LCAxOTcsIDIxLCAyMjQsIDEsIDI0MCwgMywgMjQ1LCAxOTcsIDIxLCAyMjMsIDI1NSwgMjEyLCAxMjAsIAotICAgIDIxMSwgNTMsIDIxMiwgMzYsIDIxLCAyMjMsIDI1NSwgMjEyLCAxMjAsIDIxMSwgNTMsIDIyNSwgOSwgMjEsIDIyMywgMjU1LCAKLSAgICAyMTIsIDEyMCwgMjExLCA1MywgMjI4LCA3LCAyMSwgMjIzLCAyNTUsIDIxMiwgMTIwLCAyMTEsIDUzLCAyMjgsIDUsIDIxLCAKLSAgICAyMjMsIDI1NSwgMjEyLCAxMjAsIDIwMywgMjIxLCAyMzksIDIxMSwgMjEsIDIyMywgMjU1LCA1MiwgMjExLCA1MiwgMjEsIAotICAgIDIyMywgMjU1LCA1MiwgMjAzLCAyMjEsIDIzOSwgMjExLCAyMSwgMjIzLCAyNTUsIDUyLCAyNTAsIDI1MiwgMjEsIDIyMywgCi0gICAgMjU1LCA1MiwgMjUwLCAyNTMsIDIwMywgMjIxLCAyMzksIDIxMSwgMjEsIDIyMywgMjU1LCAyNDUsIDEzMCwgMjEsIDIyMywgCi0gICAgMjU1LCAyMDgsIDcwLCAyMTEsIDUzLCAyMjQsIDMsIDIxLCAyMjMsIDI1NSwgMjA4LCA3MCwgMjAzLCAyMjEsIDIzOSwgMjExLCAKLSAgICAyMSwgMjIzLCAyNTUsIDIwOCwgNzAsIDI1MCwgMjUyLCAyMSwgMjIzLCAyNTUsIDIwOCwgNzAsIDI1MCwgMjUzLCAyMDMsIAotICAgIDIyMSwgMjM5LCAyMTEsIDIxLCAyMjMsIDI1NSwgMjQ4LCAxMjEsIDIxMiwgMzYsIDIxLCAyMjMsIDI1NSwgMjQ4LCAxMjEsIAotICAgIDIyNSwgOSwgMjEsIDIyMywgMjU1LCAyNDgsIDEyMSwgMjI4LCA3LCAyMSwgMjIzLCAyNTUsIDI0NSwgMTY2LCAyMTIsIDM2LCAKLSAgICAyMSwgMjIzLCAyNTUsIDI0NSwgMTY2LCAyMjUsIDksIDIxLCAyMjMsIDI1NSwgMjQ1LCAxNjYsIDIyOCwgNywgMjEsIDIyMywgCi0gICAgMjU1LCAyNDUsIDE2NiwgMjE1LCAxOTYsIDIxLCAyMjMsIDI1NSwgMjQ2LCAxNjksIDIxMiwgMzYsIDIxLCAyMjMsIDI1NSwgCi0gICAgMjQ2LCAxNjksIDIyNSwgOSwgMjEsIDIyMywgMjU1LCAyNDYsIDE2OSwgMjI4LCA3LCAyMSwgMjIzLCAyNTUsIDk4LCAyMTIsIAotICAgIDM2LCAyMSwgMjIzLCAyNTUsIDk4LCAyMjUsIDksIDIxLCAyMjMsIDI1NSwgOTgsIDIyOCwgNywgMjEsIDIyMywgMjU1LCAKLSAgICAyMDIsIDMwLCAyMTIsIDM2LCAyMSwgMjIzLCAyNTUsIDIwMiwgMzAsIDIyNSwgOSwgMjEsIDIyMywgMjU1LCAyMDIsIDMwLCAKLSAgICAyMjgsIDcsIDIxLCAyMjMsIDI1NSwgMjE5LCAzMCwgMjEyLCAzNiwgMjEsIDIyMywgMjU1LCAyMTksIDMwLCAyMjUsIDksIAotICAgIDIxLCAyMjMsIDI1NSwgMjE5LCAzMCwgMjI4LCA3LCAyMSwgMjA4LCA5OSwgMjE1LCAxOTQsIDIxMiwgMTE5LCAyMSwgMjA4LCAKLSAgICA5OSwgMjE1LCAxOTQsIDI0MiwgNzgsIDIxLCAyMDgsIDk5LCAyMTUsIDE5NCwgMjUwLCAyNTIsIDIxLCAyMDgsIDk5LCAyMTUsIAotICAgIDE5NSwgMjEyLCAxMTksIDIxLCAyMDgsIDk5LCAyMTUsIDE5NSwgMjQyLCA3OCwgMjEsIDIwOCwgOTksIDIxNSwgMTk1LCAKLSAgICAyNTAsIDI1MiwgMjEsIDIwOCwgOTksIDIxMywgNzEsIDIxLCAyMDgsIDk5LCAyNTAsIDEwNywgMjExLCAyMDIsIDIxMiwgCi0gICAgMTE5LCAyMSwgMjA4LCA5OSwgMjUwLCAxMDcsIDIxMSwgMjAyLCAyNDIsIDc4LCAyMSwgMjA4LCA5OSwgMjUwLCAxMDcsIAotICAgIDIxMSwgMjAyLCAyMDgsIDY5LCAyMSwgMjI0LCAyLCAyNTAsIDEyLCAyMTIsIDM2LCAyMSwgMjI0LCAyLCAyNTAsIDEyLCAKLSAgICAyMjUsIDksIDIxLCAyMjQsIDIsIDI1MCwgMTIsIDIyOCwgNywgMjEsIDIyNCwgMiwgMjUwLCAxMiwgMjI4LCA1LCAyMSwgCi0gICAgMjI0LCAyLCAyMDgsIDEyMywgMjEyLCAzNiwgMjEsIDIyNCwgMiwgMjA4LCAxMjMsIDIyNSwgOSwgMjEsIDIyNCwgMiwgMjA4LCAKLSAgICAxMjMsIDIyOCwgNywgMjEsIDIyNCwgMiwgMjA4LCAxMjMsIDIyOCwgNSwgMjEsIDIyNCwgMiwgMjQ4LCAxMDQsIDI1MCwgMTIsIAotICAgIDIxMiwgMzYsIDIxLCAyMjQsIDIsIDI0OCwgMTA0LCAyNTAsIDEyLCAyMjUsIDksIDIxLCAyMjQsIDIsIDI0OCwgMTA0LCAKLSAgICAyNTAsIDEyLCAyMjgsIDcsIDIxLCAyMjQsIDIsIDI0OCwgMTA0LCAyNTAsIDEyLCAyMjgsIDUsIDIxLCAyMjQsIDIsIDI0OCwgCi0gICAgMTA0LCAyMDgsIDEyMywgMjEyLCAzNiwgMjEsIDIyNCwgMiwgMjQ4LCAxMDQsIDIwOCwgMTIzLCAyMjUsIDksIDIxLCAyMjQsIAotICAgIDIsIDI0OCwgMTA0LCAyMDgsIDEyMywgMjI4LCA3LCAyMSwgMjI0LCAyLCAyNDgsIDEwNCwgMjA4LCAxMjMsIDIyOCwgNSwgCi0gICAgMjEsIDIyNCwgMSwgMjEyLCAxMjAsIDIxMSwgNTMsIDIxMiwgMzYsIDIxLCAyMjQsIDEsIDIxMiwgMTIwLCAyMTEsIDUzLCAKLSAgICAyMjUsIDksIDIxLCAyMjQsIDEsIDIxMiwgMTIwLCAyMTEsIDUzLCAyMjgsIDcsIDIxLCAyMjQsIDEsIDIxMiwgMTIwLCAyMTEsIAotICAgIDUzLCAyMjgsIDUsIDIxLCAyMjQsIDEsIDIxMiwgMTIwLCAyMDMsIDIyMSwgMjM5LCAyMTEsIDIxLCAyMjQsIDEsIDUyLCAKLSAgICAyMTEsIDUyLCAyMSwgMjI0LCAxLCA1MiwgMjAzLCAyMjEsIDIzOSwgMjExLCAyMSwgMjI0LCAxLCA1MiwgMjUwLCAyNTIsIAotICAgIDIxLCAyMjQsIDEsIDUyLCAyNTAsIDI1MywgMjAzLCAyMjEsIDIzOSwgMjExLCAyMSwgMjI0LCAxLCAyNDUsIDEzMCwgMjEsIAotICAgIDIyNCwgMSwgMjA4LCA3MCwgMjExLCA1MywgMjI0LCAzLCAyMSwgMjI0LCAxLCAyMDgsIDcwLCAyMDMsIDIyMSwgMjM5LCAKLSAgICAyMTEsIDIxLCAyMjQsIDEsIDIwOCwgNzAsIDI1MCwgMjUzLCAyMjQsIDMsIDIxLCAyMjQsIDEsIDIwOCwgNzAsIDI1MCwgCi0gICAgMjUzLCAyMDMsIDIyMSwgMjM5LCAyMTEsIDIxLCAyMjQsIDEsIDI0OCwgMTIwLCAyMSwgMjI0LCAxLCAyNDUsIDE2NiwgMjEyLCAKLSAgICAzNiwgMjEsIDIyNCwgMSwgMjQ1LCAxNjYsIDIyNSwgOSwgMjEsIDIyNCwgMSwgMjQ1LCAxNjYsIDIyOCwgNywgMjEsIDIyNCwgCi0gICAgMSwgMjQ2LCAxNjgsIDIxLCAyMjQsIDEsIDk4LCAyMTIsIDM2LCAyMSwgMjI0LCAxLCA5OCwgMjI1LCA5LCAyMSwgMjI0LCAxLCAKLSAgICA5OCwgMjI4LCA3LCAyMSwgMjI0LCAxLCAyMDIsIDMwLCAyMTIsIDM2LCAyMSwgMjI0LCAxLCAyMDIsIDMwLCAyMjUsIDksIAotICAgIDIxLCAyMjQsIDEsIDIwMiwgMzAsIDIyOCwgNywgMjEsIDIyNCwgMSwgMjE5LCAzMCwgMjEyLCAzNiwgMjEsIDIyNCwgMSwgCi0gICAgMjE5LCAzMCwgMjI1LCA5LCAyMSwgMjI0LCAxLCAyMTksIDMwLCAyMjgsIDcsIDIxLCAyMDgsIDEwMCwgMjE1LCAxOTUsIAotICAgIDIxMiwgMTE5LCAyMSwgMjA4LCAxMDAsIDIxNSwgMTk1LCAyNDIsIDc4LCAyMSwgMjA4LCAxMDAsIDIxNSwgMTk1LCAyNTAsIAotICAgIDI1MiwgMjEsIDIwOCwgMTAwLCAyMTUsIDE5NCwgMjEyLCAxMTksIDIxLCAyMDgsIDEwMCwgMjE1LCAxOTQsIDI0MiwgNzgsIAotICAgIDIxLCAyMDgsIDEwMCwgMjE1LCAxOTQsIDI1MCwgMjUyLCAyMSwgMjA4LCAxMDAsIDIxMywgNzEsIDIxLCAyMjMsIDI1NSwgCi0gICAgMjQ1LCA4OCwgMjE3LCA1NiwgMjEyLCAzNiwgMjEsIDIyMywgMjU1LCAyNDUsIDg4LCAyMTcsIDU2LCAyMjUsIDksIDIxLCAKLSAgICAyMjMsIDI1NSwgMjQ1LCA4OCwgMjE3LCA1NiwgMjI4LCA3LCAyMSwgMjIzLCAyNTUsIDI0NSwgODgsIDIxNywgNTYsIDIyOCwgCi0gICAgNSwgMjEsIDIyMywgMjU1LCAyNDUsIDg4LCAyMzcsIDEzNiwgMjEyLCAzNiwgMjEsIDIyMywgMjU1LCAyNDUsIDg4LCAyMzcsIAotICAgIDEzNiwgMjI1LCA5LCAyMSwgMjIzLCAyNTUsIDI0NSwgODgsIDIzNywgMTM2LCAyMjgsIDcsIDIxLCAyMjMsIDI1NSwgMjQ1LCAKLSAgICA4OCwgMjM3LCAxMzYsIDIyOCwgNSwgMjEsIDIyMywgMjU1LCAyNDUsIDg4LCAyMDksIDI3LCAyNDYsIDYyLCAyMTIsIDM2LCAKLSAgICAyMSwgMjIzLCAyNTUsIDI0NSwgODgsIDIwOSwgMjcsIDI0NiwgNjIsIDIyNSwgOSwgMjEsIDIyMywgMjU1LCAyMzYsIDE0LCAKLSAgICAyMTIsIDM2LCAyMSwgMjIzLCAyNTUsIDIzNiwgMTQsIDIyNSwgOSwgMjEsIDIyMywgMjU1LCAyMzYsIDE0LCAyMjgsIDcsIAotICAgIDIxLCAyMjMsIDI1NSwgMjI3LCAxNSwgMjEyLCAzNiwgMjEsIDIyMywgMjU1LCAyMjcsIDE1LCAyMjUsIDksIDIxLCAyMjMsIAotICAgIDI1NSwgMjI3LCAxNSwgMjI4LCA3LCAyMSwgMjIzLCAyNTUsIDIyNywgMTUsIDUsIDI0MiwgNzgsIDIxLCAyMjMsIDI1NSwgCi0gICAgMjA0LCA3NiwgMjQ1LCA4OCwgNTIsIDIxMiwgMzYsIDIxLCAyMjMsIDI1NSwgMjA0LCA3NiwgMjQ1LCA4OCwgNTIsIDIyNSwgCi0gICAgOSwgMjEsIDIyMywgMjU1LCAyMDQsIDc2LCAyNDUsIDg4LCA1MiwgMjI4LCA3LCAyMSwgMjIzLCAyNTUsIDIwNCwgNzYsIAotICAgIDI0NSwgODgsIDIwOCwgNzAsIDIxMiwgMzYsIDIxLCAyMjMsIDI1NSwgMjA0LCA3NiwgMjQ1LCA4OCwgMjA4LCA3MCwgMjI1LCAKLSAgICA5LCAyMSwgMjIzLCAyNTUsIDIwNCwgNzYsIDI0NSwgODgsIDIwOCwgNzAsIDIyOCwgNywgMjEsIDIyMywgMjU1LCAyNDUsIAotICAgIDg4LCAyMDksIDg0LCAyMTEsIDUyLCAyMSwgMjIzLCAyNTUsIDI0NSwgODYsIDI0NSwgMTMxLCAyMTIsIDM2LCAyMSwgMjIzLCAKLSAgICAyNTUsIDI0NSwgODYsIDI0NSwgMTMxLCAyMjUsIDksIDIxLCAyMTUsIDE5NCwgMjEyLCAxMTksIDIxLCAyMTUsIDE5NCwgCi0gICAgMjQyLCA3OCwgMjEsIDIxNSwgMTk0LCAyNTAsIDI1NCwgMjEsIDIyMywgMjU1LCAyMTMsIDcxLCAyMSwgMjIzLCAyNTUsIAotICAgIDI0NSwgODgsIDIzNiwgMjI5LCAyMzksIDExOSwgMjA0LCA5OSwgMjEsIDIyMywgMjU1LCAyMzYsIDE0LCAyMzYsIDIyOSwgCi0gICAgMjM5LCAxMTksIDIwNCwgOTksIDIxLCAyMjMsIDI1NSwgMjI3LCAxNSwgMjM2LCAyMjksIDIzOSwgMTE5LCAyMDQsIDk5LCAKLSAgICAyMSwgMjIzLCAyNTUsIDIwNCwgNzYsIDIzNiwgMjI5LCAyMzksIDExOSwgMjA0LCA5OSwgMjEsIDIxNSwgMTk0LCAyMTIsIAotICAgIDEyMCwgMjM2LCAyMjksIDIzOSwgMTE5LCAyMDQsIDk5LCAyMSwgMjE1LCAxOTQsIDUyLCAyMzYsIDIyOSwgMjM5LCAxMTksIAotICAgIDIwNCwgOTksIDIxLCAyMTUsIDE5NCwgMjUwLCAyNTMsIDIzNiwgMjI5LCAyMzksIDExOSwgMjA0LCA5OSwgMjEsIDIyMywgCi0gICAgMjU1LCAyNDUsIDg4LCAyMzYsIDIyOSwgMjQ2LCAxNDksIDIxLCAyMjMsIDI1NSwgMjM2LCAxNCwgMjM2LCAyMjksIDI0NiwgCi0gICAgMTQ5LCAyMSwgMjIzLCAyNTUsIDIyNywgMTUsIDIzNiwgMjI5LCAyNDYsIDE0OSwgMjEsIDIyMywgMjU1LCAyMDQsIDc2LCAKLSAgICAyMzYsIDIyOSwgMjQ2LCAxNDksIDIxLCAyMTUsIDE5NCwgMjEyLCAxMjAsIDIzNiwgMjI5LCAyNDYsIDE0OSwgMjEsIDIxNSwgCi0gICAgMTk0LCA1MiwgMjM2LCAyMjksIDI0NiwgMTQ5LCAyMSwgMjE1LCAxOTQsIDI1MCwgMjUzLCAyMzYsIDIyOSwgMjQ2LCAxNDksIAotICAgIDIxLCAyMjMsIDI1NSwgMjA0LCA3NiwgMjQzLCAyMjgsIDIxOSwgNTIsIDIxMiwgMzYsIDIxLCAyMjMsIDI1NSwgMjA0LCA3NiwgCi0gICAgMjQzLCAyMjgsIDIxOSwgNTIsIDIyNSwgOSwgMjEsIDIyMywgMjU1LCAyMDQsIDc2LCAyNDMsIDIyOCwgMjE5LCA1MiwgMjI4LCAKLSAgICA3LCAyMSwgMjI0LCAxLCAyNDUsIDg4LCAyMzYsIDIyOSwgMjQ2LCAyMjcsIDIxMiwgMzYsIDIxLCAyMjQsIDEsIDI0NSwgODgsIAotICAgIDIzNiwgMjI5LCAyNDYsIDIyNywgMjI4LCA3LCAyMSwgMjI0LCAxLCAyMzYsIDE0LCAyMzYsIDIyOSwgMjQ2LCAyMjcsIDUsIAotICAgIDI0MiwgNzgsIDIxLCAyMjQsIDEsIDIzNiwgMTQsIDIzNiwgMjI5LCAyNDYsIDIyNywgMjI4LCA4LCAyNDIsIDc4LCAyMSwgCi0gICAgMjI0LCAxLCAyMzYsIDE0LCAyMzYsIDIyOSwgMjQ2LCAyMjcsIDUsIDIwOCwgNjksIDIxLCAyMjQsIDEsIDIzNiwgMTQsIAotICAgIDIzNiwgMjI5LCAyNDYsIDIyNywgMjI4LCA4LCAyMDgsIDY5LCAyMSwgMjI0LCAxLCAyMjcsIDE1LCAyMzYsIDIyOSwgMjQ2LCAKLSAgICAyMjcsIDUsIDIxMiwgMTE5LCAyMSwgMjI0LCAxLCAyMjcsIDE1LCAyMzYsIDIyOSwgMjQ2LCAyMjcsIDIyOCwgOCwgMjEyLCAKLSAgICAxMTksIDIxLCAyMjQsIDEsIDIyNywgMTUsIDIzNiwgMjI5LCAyNDYsIDIyNywgNSwgMjQyLCA3OCwgMjEsIDIyNCwgMSwgCi0gICAgMjI3LCAxNSwgMjM2LCAyMjksIDI0NiwgMjI3LCAyMjgsIDgsIDI0MiwgNzgsIDIxLCAyMjQsIDEsIDIwNCwgNzYsIDIzNiwgCi0gICAgMjI5LCAyNDYsIDIyNywgMjEyLCAzNiwgMjEsIDIyNCwgMSwgMjA0LCA3NiwgMjM2LCAyMjksIDI0NiwgMjI3LCAyMjgsIDcsIAotICAgIDIxLCAyMTUsIDE5NSwgMjEyLCAxMjAsIDIzNiwgMjI5LCAyNDYsIDIyNiwgMjEsIDIxNSwgMTk1LCA1MiwgMjM2LCAyMjksIAotICAgIDI0NiwgMjI2LCAyMSwgMjE1LCAxOTUsIDI1MCwgMjUzLCAyMzYsIDIyOSwgMjQ2LCAyMjYsIDIxLCAyMjQsIDEsIDI0NSwgCi0gICAgODgsIDIzNiwgMjI5LCAyMzksIDIwNSwgMjEyLCAzNiwgMjEsIDIyNCwgMSwgMjQ1LCA4OCwgMjM2LCAyMjksIDIzOSwgMjA1LCAKLSAgICAyMjgsIDcsIDIxLCAyMjQsIDEsIDIzNiwgMTQsIDIzNiwgMjI5LCAyMzksIDIwNSwgNSwgMjQyLCA3OCwgMjEsIDIyNCwgMSwgCi0gICAgMjM2LCAxNCwgMjM2LCAyMjksIDIzOSwgMjA1LCAyMjgsIDgsIDI0MiwgNzgsIDIxLCAyMjQsIDEsIDIzNiwgMTQsIDIzNiwgCi0gICAgMjI5LCAyMzksIDIwNSwgMjA4LCA3MCwgNSwgMjA4LCA2OSwgMjEsIDIyNCwgMSwgMjM2LCAxNCwgMjM2LCAyMjksIDIzOSwgCi0gICAgMjA1LCAyMDgsIDcwLCAyMjgsIDgsIDIwOCwgNjksIDIxLCAyMjQsIDEsIDIyNywgMTUsIDIzNiwgMjI5LCAyMzksIDIwNSwgCi0gICAgNSwgMjEyLCAxMTksIDIxLCAyMjQsIDEsIDIyNywgMTUsIDIzNiwgMjI5LCAyMzksIDIwNSwgMjI4LCA4LCAyMTIsIDExOSwgCi0gICAgMjEsIDIyNCwgMSwgMjI3LCAxNSwgMjM2LCAyMjksIDIzOSwgMjA1LCA1LCAyNDIsIDc4LCAyMSwgMjI0LCAxLCAyMjcsIDE1LCAKLSAgICAyMzYsIDIyOSwgMjM5LCAyMDUsIDIyOCwgOCwgMjQyLCA3OCwgMjEsIDIyNCwgMSwgMjA0LCA3NiwgMjM2LCAyMjksIDIzOSwgCi0gICAgMjA1LCAyMTIsIDM2LCAyMSwgMjI0LCAxLCAyMDQsIDc2LCAyMzYsIDIyOSwgMjM5LCAyMDUsIDIyOCwgNywgMjEsIDIxNSwgCi0gICAgMTk1LCAyMTIsIDEyMCwgMjM2LCAyMjksIDIzOSwgMjA0LCAyMSwgMjE1LCAxOTUsIDUyLCAyMzYsIDIyOSwgMjM5LCAyMDQsIAotICAgIDIxLCAyMTUsIDE5NSwgMjUwLCAyNTMsIDIzNiwgMjI5LCAyMzksIDIwNCwgMjEsIDIyNCwgMSwgMjQ1LCA4OCwgMjEyLCAzNiwgCi0gICAgMjEsIDIyNCwgMSwgMjQ1LCA4OCwgMjI1LCA5LCAyMSwgMjI0LCAxLCAyNDUsIDg4LCAyMjgsIDcsIDIxLCAyMjQsIDEsIAotICAgIDI0NSwgODgsIDIyOCwgNSwgMjEsIDIyNCwgMSwgMjQ1LCA4OCwgMjQ1LCAyMzcsIDIxLCAyMjQsIDEsIDIzNiwgMTQsIDIxMiwgCi0gICAgMzYsIDIxLCAyMjQsIDEsIDIyNywgMTUsIDIxMiwgMzYsIDIxLCAyMjQsIDEsIDIwNCwgNzYsIDIxMiwgMjQsIDIxLCAyMjQsIAotICAgIDEsIDIwNCwgNzYsIDIxMiwgMzYsIDIxLCAyMjQsIDEsIDIwNCwgNzYsIDIyOCwgNywgMjEsIDIxNSwgMTk1LCAyMTIsIDExOSwgCi0gICAgMjEsIDIxNSwgMTk1LCAyNDIsIDc4LCAyMSwgMjE1LCAxOTUsIDI1MCwgMjUyLCAyMSwgMjI0LCAxLCAyMTMsIDcyLCAyMTksIAotICAgIDgxLCAyMSwgMjIzLCAyNTUsIDI1MCwgMTA3LCAyNDYsIDYyLCA1LCAyMTIsIDExOSwgMjEsIDIyMywgMjU1LCAyNTAsIDEwNywgCi0gICAgMjQ2LCA2MiwgMjI1LCAxMCwgMjEyLCAxMTksIDIxLCAyMjMsIDI1NSwgMjUwLCAxMDcsIDI0NiwgNjIsIDUsIDI0MiwgNzgsIAotICAgIDIxLCAyMjMsIDI1NSwgMjUwLCAxMDcsIDI0NiwgNjIsIDIyNSwgMTAsIDI0MiwgNzgsIDIxLCAyMjQsIDEsIDI1MCwgMTA3LCAKLSAgICAyNDYsIDYyLCAyMzYsIDIyOSwgMjA0LCAxMDAsIDUsIDIxMiwgMTE5LCAyMSwgMjI0LCAxLCAyNTAsIDEwNywgMjQ2LCA2MiwgCi0gICAgMjM2LCAyMjksIDIwNCwgMTAwLCAyMjUsIDEwLCAyMTIsIDExOSwgMjEsIDIyNCwgMSwgMjUwLCAxMDcsIDI0NiwgNjIsIAotICAgIDIzNiwgMjI5LCAyMDQsIDEwMCwgMjI4LCA4LCAyMTIsIDExOSwgMjEsIDIyNCwgMSwgMjUwLCAxMDcsIDI0NiwgNjIsIDIzNiwgCi0gICAgMjI5LCAyMDQsIDEwMCwgNSwgMjQyLCA3OCwgMjEsIDIyNCwgMSwgMjUwLCAxMDcsIDI0NiwgNjIsIDIzNiwgMjI5LCAyMDQsIAotICAgIDEwMCwgMjI1LCAxMCwgMjQyLCA3OCwgMjEsIDIyNCwgMSwgMjUwLCAxMDcsIDI0NiwgNjIsIDIzNiwgMjI5LCAyMDQsIDEwMCwgCi0gICAgMjI4LCA4LCAyNDIsIDc4LCAyMSwgMjIzLCAyNTUsIDIwMywgMjIxLCAyNDYsIDYyLCAyMzksIDExOSwgMjEyLCAxMTksIDIxLCAKLSAgICAyMjMsIDI1NSwgMjAzLCAyMjEsIDI0NiwgNjIsIDIzOSwgMTE5LCAyNDIsIDc4LCAyMSwgMjI0LCAxLCAyMDMsIDIyMSwgCi0gICAgMjQ2LCA2MiwgMjM2LCAyMjksIDIwNCwgMTAwLCAyMTIsIDExOSwgMjEsIDIyNCwgMSwgMjAzLCAyMjEsIDI0NiwgNjIsIAotICAgIDIzNiwgMjI5LCAyMDQsIDEwMCwgMjQyLCA3OCwgMjEsIDIyMywgMjU1LCAyNDAsIDMsIDI0NiwgNTksIDIxMiwgMTE5LCAyMSwgCi0gICAgMjIzLCAyNTUsIDI0MCwgMywgMjQ2LCA1OSwgMjQyLCA3OCwgMjEsIDIyNCwgMSwgMjQwLCAzLCAyNDYsIDU5LCAyMzYsIAotICAgIDIyOSwgMjA0LCAxMDAsIDIxMiwgMTE5LCAyMSwgMjI0LCAxLCAyNDAsIDMsIDI0NiwgNTksIDIzNiwgMjI5LCAyMDQsIDEwMCwgCi0gICAgMjQyLCA3OCwgMjEsIDI0MiwgNCwgMjUwLCA5NSwgMjEyLCAzNiwgMjEsIDI0MiwgNCwgMjUwLCA5NSwgMjI4LCA3LCAyMSwgCi0gICAgMjQyLCA0LCAyNDAsIDc0LCAyMSwgMjQyLCA0LCAyMTIsIDM5LCAyMSwgMjQyLCA0LCAyMDksIDE0NSwgMjEsIDI0MiwgNCwgCi0gICAgMjE2LCAxMTUsIDIxLCAyNDIsIDQsIDIxMiwgMTI1LCAyMSwgMjQyLCA0LCAyMTIsIDEyNiwgMjUwLCAyNTIsIDIxLCAyNDIsIAotICAgIDQsIDI0MCwgMjIxLCAyMTksIDIyMSwgMjA4LCAyMjEsIDIxLCAyNDIsIDQsIDIzOCwgMTIsIDIxLCAyMzcsIDY0LCAyMSwgCi0gICAgMjM3LCA2NSwgMjE2LCAxLCAyMSwgMjM3LCA2NSwgMjIzLCAyNTUsIDIxMSwgNTIsIDIxLCAyMzcsIDY1LCAyMjMsIDI1NSwgCi0gICAgMjA4LCAyMjQsIDIxLCAyMzcsIDY1LCAyMjQsIDEsIDIxMSwgNTIsIDIxLCAyMzcsIDY1LCAyMjMsIDI1NSwgMjQ1LCA4NywgCi0gICAgMjEsIDIzNywgNjUsIDIyNCwgMSwgMjQ1LCA4NywgMjEsIDIzNywgNjUsIDIyNCwgNCwgMjQ2LCA2MSwgMjEsIDI0MCwgMTAzLCAKLSAgICAyNDMsIDE2NiwgMjE4LCAzNCwgMjIxLCAxNjgsIDIzOSwgMTUyLCAyMDgsIDIyMiwgMjEsIDI0MCwgMTAzLCAyNDMsIDE2NiwgCi0gICAgMjE4LCAzNCwgMjIxLCAxNjgsIDExMiwgMjE5LCAyNDUsIDI0MiwgNzAsIDIxLCAyNDAsIDEwMywgMjQzLCAxNjYsIDIxOCwgCi0gICAgMzQsIDIyMSwgMTY4LCAxMTIsIDIxOSwgMjQ1LCAxMjEsIDIwOCwgMjIyLCAyMSwgMjQwLCAxOTAsIDIxMSwgNTMsIDIwNiwgCi0gICAgMjI0LCAyMSwgMjQwLCAxOTAsIDIxMSwgNTMsIDIyMiwgMjE1LCAyMSwgMjQwLCAxOTAsIDIxMSwgNTMsIDI0MiwgNzAsIDIxLCAKLSAgICAyNDIsIDU3LCAyNDAsIDE5MCwgMjIyLCAyMTYsIDI0MiwgNzAsIDIxLCAyNDIsIDU3LCAyNDAsIDE5MCwgMTIxLCAyMjIsIAotICAgIDIxNSwgMjEsIDI0MiwgNTcsIDI0MCwgMTkwLCAxMTIsIDIyMiwgMjE1LCAyMSwgMjQyLCA1NywgMjQwLCAxOTAsIDIyMiwgCi0gICAgMjE2LCAyMDYsIDIyNCwgMjEsIDIzOSwgMTY0LCAyMjIsIDIxNSwgMjEsIDIzOSwgMTY0LCAyNDUsIDE5NywgMjEsIDIzOSwgCi0gICAgMTY0LCAyMDMsIDIyNCwgMjEsIDI0MCwgMTg1LCAyMjAsIDgsIDIxLCAyNDAsIDE4NSwgMjExLCAxNzIsIDIxLCAyNDAsIAotICAgIDE4NSwgMjQ2LCAxNSwgMjEsIDI0MCwgMTkyLCAyNDgsIDM0LCAyMTIsIDExOSwgMjEsIDI0MCwgMTkyLCAyNDgsIDM0LCAKLSAgICAyMjMsIDIyNSwgMjEsIDI0MCwgMTg1LCAxNjIsIDIyMCwgOCwgMjEsIDI0MCwgMTg1LCAyMDQsIDI3LCAyMjAsIDgsIDIxLCAKLSAgICAyNDAsIDE4NSwgMTYyLCAyNDYsIDE1LCAyMSwgMjQwLCAxODUsIDIwNCwgMjUsIDIyNCwgMywgMjEsIDI0MCwgMTkyLCAyMDQsIAotICAgIDksIDIxLCAyNDAsIDE4NiwgMjA2LCAyMjQsIDIxLCAyNDAsIDE4NiwgMjQyLCA3MCwgMjEsIDI0MCwgMTg2LCAyMzksIDE5MSwgCi0gICAgMjEsIDI0MCwgMTg4LCAyMTEsIDUyLCAyMSwgMjQwLCAxODgsIDIxMSwgNTMsIDI0MiwgNzgsIDIxLCAyNDAsIDE4OCwgMjExLCAKLSAgICA1MywgMjUwLCAyNTIsIDIxLCAyNDAsIDE4OSwgMjExLCA1MiwgMjEsIDI0MCwgMTg5LCAyMTEsIDUzLCAyNDIsIDc4LCAyMSwgCi0gICAgMjQwLCAxODksIDIxMSwgNTMsIDI1MCwgMjUyLCAyMSwgMjQwLCAxODgsIDI0NSwgODUsIDIxLCAyNDAsIDE4OSwgMjQ1LCAKLSAgICA4NSwgMjEsIDI0MCwgMTg4LCAyNDYsIDU2LCAyMSwgMjQ2LCAxNjQsIDIxNywgMTgyLCAyMSwgMjQ2LCAxNjQsIDIyMiwgCi0gICAgMjE1LCAyMSwgMjQ2LCAxNjQsIDIxMCwgMjM0LCAyMSwgMjA5LCAxNDYsIDI0NiwgMTY0LCAyMzYsIDI0NCwgMjEsIDIwOSwgCi0gICAgMTQ2LCAyNDYsIDE2NCwgMjI0LCAxNDgsIDIxLCAyMDksIDE0NiwgMjQ2LCAxNjQsIDIyNywgMCwgMjEsIDI0MSwgMTgxLCAKLSAgICAyMSwgMjIxLCAxNjgsIDIyMiwgMjE1LCAyMSwgMjIxLCAxNjgsIDI0NSwgMTk3LCAyMSwgMjIxLCAxNjgsIDIwMywgMjIyLCAKLSAgICAyMSwgMjIxLCAxNjgsIDIwNCwgMjIsIDIxLCAyNTEsIDU1LCAyNDgsIDI3LCAyMTksIDIxMSwgMjEsIDI1MSwgNTUsIDIxMCwgCi0gICAgMjMzLCAyMzEsIDQ5LCAyMSwgMjUxLCA1NSwgMjQ4LCAyOSwgNSwgMjE1LCAxOTMsIDIxLCAyNTEsIDU1LCAyMTAsIDIzNSwgCi0gICAgNSwgMjE1LCAxOTMsIDIxLCAyNDcsIDIxNiwgMjMxLCAyMiwgMjEsIDI0NywgMjE2LCAyNDAsIDIxMCwgMjEsIDIyNCwgOCwgCi0gICAgMjQ2LCAxNiwgMjIyLCAyMTUsIDIxLCAyMjQsIDgsIDI0NiwgMTYsIDIzOSwgMTUxLCAyMSwgMjI0LCA4LCAyNDYsIDE2LCAKLSAgICAyNDUsIDE5NywgMjEsIDIyNCwgOCwgMjEyLCAzMSwgMjEsIDIyNCwgOCwgMjEyLCAzMiwgMjAzLCAyMjQsIDIxLCAyMjQsIDgsIAotICAgIDIxMiwgMzIsIDIyMCwgOCwgMjEsIDIyNCwgOCwgMjM5LCAxMTUsIDIxLCAyMjQsIDgsIDIzOSwgMTE2LCAyMDMsIDIyNCwgCi0gICAgMjEsIDIyNCwgOCwgMjM5LCAxMTYsIDIyMCwgOCwgMjEsIDIyNCwgOCwgMTcxLCAyNDYsIDYxLCAyMSwgMjI0LCA4LCAxNzEsIAotICAgIDIzOSwgMTUxLCAyMSwgMjI0LCA4LCAxNzEsIDIwMywgMjI0LCAyMSwgMjI0LCA4LCAxNzEsIDIxOSwgMjA0LCAyMSwgMjI0LCAKLSAgICA4LCAxNzEsIDIxOSwgMjA1LCAyMDMsIDIyNCwgMjEsIDIyNCwgOCwgMTcxLCAyMTksIDIwNSwgMjAzLCA1OSwgMjEsIDIyNCwgCi0gICAgOCwgMTcxLCAyMTYsIDE0MywgMjEsIDIyNCwgOCwgMTcxLCAyMTYsIDE0NCwgMjAzLCAyMjQsIDIxLCAyMjQsIDgsIDE3MSwgCi0gICAgMjE2LCAxNDQsIDIwMywgNTksIDIxLCAyMjQsIDgsIDIyOSwgNjYsIDIxLCAyMjQsIDgsIDIyOSwgNjcsIDIzOSwgMTUxLCAKLSAgICAyMSwgMjI0LCA4LCAyMjksIDY3LCAyMDMsIDIyNCwgMjEsIDIyNCwgOCwgMjA5LCAxNDUsIDIxLCAyMjQsIDgsIDIwOSwgCi0gICAgMTQ2LCAyMzksIDE1MSwgMjEsIDIyNCwgOCwgMjA5LCAxNDYsIDIxMCwgMjM0LCAyMSwgMjI3LCA5OSwgMjE3LCAyMzksIAotICAgIDIwOCwgMTY5LCAyMSwgMjI3LCAxMDEsIDIyNiwgMjUxLCAxMTUsIDIwNiwgMjIwLCAyMSwgMjI3LCAxMDEsIDIwNiwgMjIxLCAKLSAgICAxMTUsIDIyNiwgMjUwLCAyMSwgMjI0LCA4LCAyNDUsIDE2NCwgMjEsIDIyNCwgOCwgMjAzLCAyMjMsIDIxMiwgMTE5LCAyMSwgCi0gICAgMjI0LCA4LCAyMDMsIDIyMywgMjQyLCA3OCwgMjEsIDIwOCwgMTUxLCAyMTEsIDcyLCAyMTksIDIxMiwgMjQwLCA3NiwgMjEsIAotICAgIDIwOCwgMTUxLCAyMjcsIDE0NCwgMjI3LCA5OCwgMjEsIDIwOCwgMTUxLCAyMDgsIDIxMSwgMjQ4LCAxMDQsIDIyNywgOTgsIAotICAgIDIxLCAyMDgsIDE1MSwgMjA4LCAyMTEsIDIwOCwgMTI3LCAyMzEsIDcsIDIyNCwgNywgMjEsIDIwOCwgMTUxLCAyMzEsIDcsIAotICAgIDIyNCwgOCwgMjE2LCAxMTUsIDIxLCAyMDgsIDE1MSwgMjIzLCAyNTQsIDI1MSwgNzksIDI0NiwgMTY1LCAyMSwgMjA4LCAKLSAgICAxNTEsIDI0NiwgMjE4LCAyMTEsIDcyLCAyMTksIDIxMSwgMjEsIDIwOCwgMTUxLCAyNDYsIDIxOCwgMjMxLCA3LCAyMjQsIDcsIAotICAgIDIxLCAyMDksIDE3MiwgMjEsIDIwOSwgMTczLCAyMjQsIDMsIDIxLCAyMDksIDE3MywgMjIwLCAzMiwgMjA4LCAxNTAsIDIxLCAKLSAgICAyMDksIDE3MywgMjIwLCAzMiwgMjA4LCAxNTEsIDIyNCwgMywgMjEsIDIwOSwgMTczLCAyMjAsIDMyLCAyMjcsIDk4LCAyMSwgCi0gICAgMjA5LCAxNzMsIDIyMCwgMzIsIDIyNywgOTksIDIyNCwgMywgMjEsIDIwOSwgMTczLCAyNDgsIDUwLCAyMjcsIDk4LCAyMSwgCi0gICAgMjIzLCAyNTUsIDIzMCwgMTY1LCAyMSwgMjI0LCAxLCAyMzAsIDE2NSwgMjEsIDIyMiwgMjM3LCAyMSwgMjM3LCAxNDUsIDIxLCAKLSAgICAyNDAsIDIxMywgMjEsIDIxMiwgMjExLCAyMzYsIDIzNCwgMjExLCAyMDMsIDIxLCAyMTIsIDIxMSwgMjM2LCAyMzQsIDIxOCwgCi0gICAgMzMsIDIxLCAyMDQsIDk4LCAyMTIsIDIxMSwgMjM2LCAyMzQsIDIyNCwgNiwgMjEsIDIzOSwgMjAzLCAyMTIsIDIxMSwgMjM2LCAKLSAgICAyMzQsIDIyNCwgNiwgMjEsIDIxMiwgMjExLCAyMDgsIDIyMywgMjM5LCAxMjAsIDIwNCwgMTA0LCAyMSwgMjA4LCAxMzQsIAotICAgIDIxMSwgNTMsIDIxMSwgNDEsIDIxLCAyMDgsIDEzNCwgMjQ1LCA4NiwgMjQ4LCAxMjAsIDIxLCAyMDgsIDEzNSwgMjA3LCAKLSAgICAxMzcsIDIxLCAyMDYsIDIyMSwgMjQ4LCAxOCwgMjA4LCAyMjMsIDIzOSwgMTIwLCAyMzYsIDIzNCwgMjMwLCA5NSwgMjEsIAotICAgIDIyNywgMTI2LCAyNDUsIDIzOCwgMjEsIDIyNywgMTI2LCAyMjcsIDE5NSwgMjEsIDIyNywgMTI2LCAyMjcsIDE5NCwgMjEsIAotICAgIDIyNywgMTI2LCAyMjcsIDE5MywgMjEsIDIyNywgMTI2LCAyMjcsIDE5MiwgMjEsIDIyNywgMTI2LCAyMjcsIDE5MSwgMjEsIAotICAgIDIyNywgMTI2LCAyMjcsIDE5MCwgMjEsIDIyNywgMTI2LCAyMjcsIDE4OSwgMjEsIDI0MCwgMiwgMjEsIDIyNywgNDUsIDIxMSwgCi0gICAgMjI4LCAyMSwgMjI3LCA0NiwgMjExLCAyMjgsIDIxLCAyMjcsIDQ3LCAyMzcsIDQxLCAyMSwgMjI3LCA0NywgMjA0LCAyMywgCi0gICAgMjEsIDIyNywgNDcsIDI0NCwgMjQsIDIxLCAyMjcsIDQ3LCAyMzcsIDY1LCAyMjIsIDIzNywgMjEsIDIyNywgNDcsIDIwOCwgCi0gICAgMTM2LCAyMSwgMjI3LCA0NywgMjI3LCAxMjUsIDI0MywgMTk4LCAyMSwgMjQ1LCAyMzMsIDIxLCAyMzksIDEwMiwgMjExLCAKLSAgICA2MSwgMjEsIDIxMywgMTQzLCAyMSwgMjQ1LCAyNDIsIDIxLCAyMTksIDc2LCAyMSwgMjQwLCAxMCwgMjI0LCA2NiwgMjEsIAotICAgIDI0MCwgMTAsIDIyNCwgNjUsIDIxLCAyNDAsIDEwLCAyMjQsIDY0LCAyMSwgMjQwLCAxMCwgMjI0LCA2MywgMjEsIDI0MCwgCi0gICAgMTAsIDIyNCwgNjIsIDIxLCAyMTUsIDE5NywgMjI0LCA2NiwgMjEsIDIxNSwgMTk3LCAyMjQsIDY1LCAyMSwgMjE1LCAxOTcsIAotICAgIDIyNCwgNjQsIDIxLCAyMTUsIDE5NywgMjI0LCA2MywgMjEsIDIxNSwgMTk3LCAyMjQsIDYyLCAyMSwgMjE1LCAxOTcsIDIyNCwgCi0gICAgNjEsIDIxLCAyMTUsIDE5NywgMjI0LCA2MCwgMjEsIDIxNSwgMTk3LCAyMjQsIDU5LCAyMSwgMjE1LCAxOTcsIDIyNCwgNzMsIAotICAgIDIxLCAyMTUsIDE5NywgMjI0LCA3MiwgMjEsIDIxNSwgMTk3LCAyMjQsIDcxLCAyMSwgMjE1LCAxOTcsIDIyNCwgNzAsIDIxLCAKLSAgICAyMTUsIDE5NywgMjI0LCA2OSwgMjEsIDIxNSwgMTk3LCAyMjQsIDY4LCAyMSwgMjE1LCAxOTcsIDIyNCwgNjcsIDczLCA3MiwgCi0gICAgNCwgMjI2LCAxODQsIDIyOSwgMTAwLCA3MywgNzIsIDQsIDIyNiwgMTgwLCAxNzMsIDczLCA3MiwgNCwgMjI2LCAxNzgsIAotICAgIDIyOCwgMjA5LCA3MywgNzIsIDQsIDIyNiwgNTQsIDIyOSwgMTk4LCA3MywgNzIsIDQsIDIyNiwgMjQsIDIyOSwgMjAxLCA3MywgCi0gICAgNzIsIDQsIDIyNiwgNDMsIDIyOSwgNiwgNzMsIDcyLCA0LCAyMjYsIDcxLCAyMjksIDI2LCA3MywgNzIsIDQsIDIyNSwgMTk2LCAKLSAgICAyMjgsIDIwMywgNzMsIDcyLCA0LCAyMjYsIDE3NSwgMjA0LCAzMCwgNzMsIDcyLCA0LCAyMjYsIDE3MywgMjA0LCAxMTEsIAotICAgIDczLCA3MiwgNCwgMjI2LCAxNzEsIDIwMywgMjE3LCA3MywgNzIsIDQsIDIyNSwgMjQ5LCAyMDQsIDU1LCA3MywgNzIsIDQsIAotICAgIDIyNiwgMSwgMjA0LCA2MiwgNzMsIDcyLCA0LCAyMjYsIDUsIDIwMywgMjQ0LCA3MywgNzIsIDQsIDIyNiwgNzQsIDIwNCwgMCwgCi0gICAgNzMsIDcyLCA0LCAyMjUsIDE4MSwgMjAzLCAyMTMsIDczLCA3MiwgNCwgMjI1LCAyMzIsIDIwNCwgNTMsIDczLCA3MiwgNCwgCi0gICAgMjI2LCA1OCwgMjAzLCAyMDEsIDczLCA3MiwgNCwgMjI2LCA3MCwgMjAzLCAyMDMsIDczLCA3MiwgNCwgMjI1LCAyMzYsIAotICAgIDIwMywgMjAyLCA3MywgNzIsIDQsIDIyNiwgMTY5LCAyMjQsIDExMCwgNzMsIDcyLCA0LCAyMjYsIDE2NywgMjI1LCAxMjIsIAotICAgIDczLCA3MiwgNCwgMjI2LCAxNjUsIDIyMywgMjE5LCA3MywgNzIsIDQsIDIyNiwgNjAsIDIyNCwgMjQwLCA3MywgNzIsIDQsIAotICAgIDIyNiwgMjUsIDIyNCwgNTQsIDczLCA3MiwgNCwgMjI1LCAyMjEsIDIyMywgMjQzLCA3MywgNzIsIDQsIDIyNSwgMTg2LCAKLSAgICAyMjMsIDIzNywgNzMsIDcyLCA0LCAyMjYsIDE2MywgMjQ4LCA4NiwgNzMsIDcyLCA0LCAyMjYsIDE2MCwgMjQ5LCAzMiwgNzMsIAotICAgIDcyLCA0LCAyMjYsIDE1OCwgMjQ3LCAxOTMsIDczLCA3MiwgNCwgMjI1LCAyMjUsIDI0OCwgMTUwLCA3MywgNzIsIDQsIDIyNiwgCi0gICAgMjIsIDI0OCwgMTYyLCA3MywgNzIsIDQsIDIyNiwgMTYsIDI0OCwgMTAsIDczLCA3MiwgNCwgMjI1LCAyMzcsIDI0OCwgMjMsIAotICAgIDczLCA3MiwgNCwgMjI2LCAxNDgsIDc1LCA3MywgNzIsIDQsIDIyNiwgMTQ2LCA2MywgNzMsIDcyLCA0LCAyMjYsIDE0NCwgCi0gICAgNjgsIDczLCA3MiwgNCwgMjI1LCAyMTIsIDI0MSwgMTYxLCA3MywgNzIsIDQsIDIyNiwgMTksIDc0LCA3MywgNzIsIDQsIAotICAgIDIyNSwgMjEwLCAyMjAsIDE4LCA3MywgNzIsIDQsIDIyNSwgMjI4LCA3OCwgNzMsIDcyLCA0LCAyMjUsIDIzOCwgMjQxLCAKLSAgICAxNDUsIDczLCA3MiwgNCwgMjI1LCAyNDQsIDIzMSwgNDksIDczLCA3MiwgNCwgMjI1LCAyNDAsIDIzMSwgNDksIDczLCA3MiwgCi0gICAgNCwgMjI1LCAxODAsIDI1MCwgMjMxLCA3MywgNzIsIDQsIDIyNSwgMTk3LCAyNDEsIDkyLCA3MywgNzIsIDQsIDIyNiwgMTMzLCAKLSAgICAyMTIsIDE2MiwgNzMsIDcyLCA0LCAyMjYsIDEzMSwgMjE1LCAzNiwgNzMsIDcyLCA0LCAyMjYsIDEyOSwgMjExLCAxMCwgNzMsIAotICAgIDcyLCA0LCAyMjUsIDIxMywgMjE0LCAxNjUsIDczLCA3MiwgNCwgMjI2LCAzLCAyMTQsIDE3NywgNzMsIDcyLCA0LCAyMjUsIAotICAgIDIzOSwgMjExLCAyNTAsIDczLCA3MiwgNCwgMjI2LCA0MCwgMjEyLCAxMywgNzMsIDcyLCA0LCAyMjUsIDE3OSwgMjEyLCAKLSAgICAxNjEsIDczLCA3MiwgNCwgMjI2LCAxMTksIDIyNywgMTQ4LCA3MywgNzIsIDQsIDIyNiwgMTE3LCAyMjgsIDExMywgNzMsIAotICAgIDcyLCA0LCAyMjYsIDExNSwgMjI2LCAyMzksIDczLCA3MiwgNCwgMjI2LCAzNSwgMjI3LCAyMjYsIDczLCA3MiwgNCwgMjI2LCAKLSAgICA0NiwgMjI3LCAyMzQsIDczLCA3MiwgNCwgMjI2LCA2NSwgMjI3LCAxOCwgNzMsIDcyLCA0LCAyMjUsIDIyMiwgMjI3LCA0OSwgCi0gICAgNzMsIDcyLCA0LCAyMjYsIDksIDE2MywgMjI3LCAyMzQsIDczLCA3MiwgNCwgMjI2LCAxNDEsIDI0MywgMjMzLCA3MywgNzIsIAotICAgIDQsIDIyNiwgMTM4LCAyNDQsIDIxMiwgNzMsIDcyLCA0LCAyMjYsIDEzNSwgMjQyLCA0MiwgNzMsIDcyLCA0LCAyMjYsIDMwLCAKLSAgICAyNDQsIDYxLCA3MywgNzIsIDQsIDIyNSwgMTk1LCAyNDMsIDkwLCA3MywgNzIsIDQsIDIyNSwgMTk0LCAyNDMsIDExMywgNzMsIAotICAgIDcyLCA0LCAyMjYsIDEyNywgMjA5LCAyLCA3MywgNzIsIDQsIDIyNiwgMTI0LCAyMTAsIDIyLCA3MywgNzIsIDQsIDIyNiwgCi0gICAgMTIyLCAyMDcsIDIwMywgNzMsIDcyLCA0LCAyMjYsIDI4LCAyMDksIDE3NiwgNzMsIDcyLCA0LCAyMjYsIDY0LCAyMDksIAotICAgIDE4NywgNzMsIDcyLCA0LCAyMjYsIDE1LCAyMDgsIDE0OCwgNzMsIDcyLCA0LCAyMjYsIDUwLCAxMzUsIDczLCA3MiwgNCwgCi0gICAgMjI2LCAxMTMsIDIzMCwgMTQxLCA3MywgNzIsIDQsIDIyNiwgMTEwLCAyMzAsIDE4MSwgNzMsIDcyLCA0LCAyMjYsIDEwOCwgCi0gICAgMjMwLCA4MiwgNzMsIDcyLCA0LCAyMjUsIDIxOCwgMjMwLCAxNTksIDczLCA3MiwgNCwgMjI2LCA2LCAyMzAsIDE2MSwgNzMsIAotICAgIDcyLCA0LCAyMjUsIDIxNSwgMjMwLCA5MSwgNzMsIDcyLCA0LCAyMjYsIDU2LCAyMzAsIDEwMSwgNzMsIDcyLCA0LCAyMjUsIAotICAgIDIwMCwgMTYzLCAyMzAsIDEwMSwgNzMsIDcyLCA0LCAyMjYsIDEwNiwgMjAzLCAxMSwgNzMsIDcyLCA0LCAyMjYsIDEwMywgCi0gICAgMTk4LCA3MywgNzIsIDQsIDIyNiwgMTAxLCAyMDIsIDIxMywgNzMsIDcyLCA0LCAyMjYsIDEwLCAyMDMsIDQ5LCA3MywgNzIsIAotICAgIDQsIDIyNiwgMzksIDIwMywgNTIsIDczLCA3MiwgNCwgMjI1LCAyMzQsIDIwMiwgMjMyLCA3MywgNzIsIDQsIDIyNSwgMjU0LCAKLSAgICAyMDIsIDI0NywgNzMsIDcyLCA0LCAyMjYsIDk3LCAyNDAsIDI2LCA3MywgNzIsIDQsIDIyNiwgOTUsIDI0MCwgMTA4LCA3MywgCi0gICAgNzIsIDQsIDIyNiwgOTMsIDIzOSwgMTA4LCA3MywgNzIsIDQsIDIyNiwgNDEsIDI0MCwgNTMsIDczLCA3MiwgNCwgMjI2LCAKLSAgICA0NCwgMjQwLCA2MCwgNzMsIDcyLCA0LCAyMjUsIDI0MiwgMjM5LCAxNzUsIDczLCA3MiwgNCwgMjI2LCAzMSwgMjM5LCAxODYsIAotICAgIDczLCA3MiwgNCwgMjI1LCAxNzgsIDIzOSwgMTA3LCA3MywgNzIsIDQsIDIyNiwgMTgsIDI0MCwgODEsIDczLCA3MiwgNCwgCi0gICAgMjI2LCA5MSwgMjIyLCA2OCwgNzMsIDcyLCA0LCAyMjYsIDg5LCAyMjMsIDgzLCA3MywgNzIsIDQsIDIyNiwgODcsIDIyMSwgCi0gICAgNDAsIDczLCA3MiwgNCwgMjI2LCAyLCAyMjIsIDIzMCwgNzMsIDcyLCA0LCAyMjUsIDIwNiwgMjIxLCAxODUsIDczLCA3MiwgCi0gICAgNCwgMjI1LCAxOTksIDIzNywgMywgNzMsIDcyLCA0LCAyMjYsIDgyLCAxNTIsIDczLCA3MiwgNCwgMjI1LCAxODksIDIzNiwgCi0gICAgMjYsIDczLCA3MiwgNCwgMjI2LCA4NSwgMjM3LCA0OCwgNzMsIDcyLCA0LCAyMjYsIDIzLCAyMzcsIDY3LCA3MywgNzIsIDQsIAotICAgIDIyNiwgODAsIDIzNiwgMTE3LCA3MywgNzIsIDQsIDIyNSwgMjM1LCAyMzYsIDEzNiwgNzMsIDcyLCA0LCAyMjYsIDM2LCAKLSAgICAyMzcsIDQ3LCA3MywgNzIsIDQsIDIyNSwgMjQ3LCAyMzYsIDExMCwgNzMsIDcyLCA0LCAyMjYsIDY2LCAyMzYsIDIzOCwgNzMsIAotICAgIDcyLCA0LCAyMjUsIDI0NSwgMjM3LCAxMjYsIDczLCA3MiwgNCwgMjI2LCAzMiwgMjM2LCAxMywgNzMsIDcyLCA0LCAyMjYsIAotICAgIDY3LCAyMzcsIDMzLCA3MywgNzIsIDQsIDIyNSwgMTgyLCAyMzYsIDEyMCwgNzMsIDcyLCA0LCAyMjYsIDczLCAyMzYsIDI1LCAKLSAgICA3MywgNzIsIDQsIDIyNiwgMjksIDIyMiwgMTY4LCA3MywgNzIsIDQsIDIyNiwgNzgsIDIyMiwgMTgyLCA3MywgNzIsIDQsIAotICAgIDIyNiwgMzcsIDIyMiwgMTY1LCA3MywgNzIsIDQsIDIyNiwgNCwgMjIyLCAxNzYsIDczLCA3MiwgNCwgMjI1LCAyMjksIDIyMiwgCi0gICAgMTc3LCA3MywgNzIsIDQsIDIyNSwgMjE5LCAyMjIsIDE2NiwgNzMsIDcyLCA0LCAyMjUsIDI1NSwgMjIyLCAxNjcsIDczLCAKLSAgICA3MiwgNCwgMjI1LCAyMTYsIDIyMiwgMTgxLCA3MywgNzIsIDQsIDIyNSwgMjQ4LCAyMjIsIDE2NCwgNzMsIDcyLCA0LCAyMjYsIAotICAgIDMzLCAxNjMsIDIyMiwgMTc3LCA3MywgNzIsIDQsIDIyNiwgMTMsIDE2MywgMjIyLCAxNjYsIDczLCA3MiwgNCwgMjI1LCAKLSAgICAxOTIsIDE2MywgMjIyLCAxNjcsIDczLCA3MiwgNCwgMjI1LCAyMjAsIDIzOCwgODEsIDczLCA3MiwgNCwgMjI2LCA4LCAyMzksIAotICAgIDgsIDczLCA3MiwgNCwgMjI1LCAyMDcsIDIzNywgMjMwLCA3MywgNzIsIDQsIDIyNSwgMTg1LCAyMzgsIDE4MiwgNzMsIDcyLCAKLSAgICA0LCAyMjUsIDIwOSwgMjM3LCAyMTYsIDczLCA3MiwgNCwgMjI1LCAyMDgsIDIzNywgMjI2LCA3MywgNzIsIDQsIDIyNSwgCi0gICAgMTkxLCAyMjIsIDE4NywgNzMsIDcyLCA0LCAyMjYsIDYyLCAyMjIsIDEyNCwgNzMsIDcyLCA0LCAyMjUsIDE5OCwgMjIyLCAKLSAgICAxMTMsIDczLCA3MiwgNCwgMjI2LCA1MSwgMjE4LCAxNjcsIDczLCA3MiwgNCwgMjI2LCAyMCwgMTg1LCA3MywgNzIsIDQsIAotICAgIDIyNiwgNjksIDIxNywgMTkxLCA3MywgNzIsIDQsIDIyNiwgMzgsIDIxOSwgMjMsIDczLCA3MiwgNCwgMjI2LCA2OCwgMjE5LCAKLSAgICAzNCwgNzMsIDcyLCA0LCAyMjYsIDE3LCAyMTgsIDQ1LCA3MywgNzIsIDQsIDIyNiwgNTMsIDIxOCwgNjksIDczLCA3MiwgNCwgCi0gICAgMjI1LCAyMzAsIDIyNSwgMzksIDczLCA3MiwgNCwgMjI2LCA1NywgMjI1LCA1NCwgNzMsIDcyLCA0LCAyMjUsIDI1MywgMjI1LCAKLSAgICAzMywgNzMsIDcyLCA0LCAyMjYsIDcyLCAyMjUsIDQ2LCA3MywgNzIsIDQsIDIyNSwgMTg3LCAyMjUsIDQ2LCA3MywgNzIsIDQsIAotICAgIDIyNiwgNDcsIDIyNSwgNDcsIDczLCA3MiwgNCwgMjI1LCAyMDMsIDIyNSwgMzQsIDczLCA3MiwgNCwgMjI1LCAyMDEsIDIyNSwgCi0gICAgMzUsIDczLCA3MiwgNCwgMjI1LCAxODgsIDIyNSwgMjcsIDczLCA3MiwgNCwgMjI1LCAyMTQsIDE2MywgMjI1LCA0NywgNzMsIAotICAgIDcyLCA0LCAyMjYsIDE0LCAxNjMsIDIyNSwgMzQsIDczLCA3MiwgNCwgMjI1LCAyMzMsIDE2MywgMjI1LCAzNSwgNzMsIDcyLCAKLSAgICA0LCAyMjUsIDI0MywgMjI4LCAyMzYsIDczLCA3MiwgNCwgMjI2LCAyNywgMjI4LCAyNDQsIDczLCA3MiwgNCwgMjI2LCA0NSwgCi0gICAgMjI4LCAyMzIsIDczLCA3MiwgNCwgMjI2LCA3NiwgMjI4LCAyMzksIDczLCA3MiwgNCwgMjI2LCAxMSwgMjI4LCAyNDAsIDczLCAKLSAgICA3MiwgNCwgMjI2LCA3LCAyMjgsIDIzNCwgNzMsIDcyLCA0LCAyMjUsIDIxNywgMjI4LCAyMzUsIDczLCA3MiwgNCwgMjI1LCAKLSAgICAyNTEsIDIzOCwgMTk5LCA3MywgNzIsIDQsIDIyNiwgNjMsIDIzOCwgMjA3LCA3MywgNzIsIDQsIDIyNSwgMjI3LCAyMzgsIAotICAgIDE5NCwgNzMsIDcyLCA0LCAyMjYsIDI2LCAyMzgsIDIwMywgNzMsIDcyLCA0LCAyMjYsIDEyLCAyMzgsIDIwNCwgNzMsIDcyLCAKLSAgICA0LCAyMjYsIDQ4LCAyMzgsIDE5NSwgNzMsIDcyLCA0LCAyMjYsIDQ5LCAyMzgsIDE5NywgNzMsIDcyLCA0LCAyMjUsIDIwNCwgCi0gICAgMjE2LCAyMjAsIDczLCA3MiwgNCwgMjI1LCAyNTIsIDIyMywgMTAsIDczLCA3MiwgNCwgMjI1LCAyNDYsIDIyMywgMjUsIDczLCAKLSAgICA3MiwgNCwgMjI1LCAyNTAsIDIyMiwgMjQ4LCA3MywgNzIsIDQsIDIyNSwgMTg0LCAyMjMsIDE2LCA3MywgNzIsIDQsIDIyNiwgCi0gICAgMCwgMjIzLCAxNywgNzMsIDcyLCA0LCAyMjYsIDUyLCAyMjIsIDI1MywgNzMsIDcyLCA0LCAyMjYsIDU1LCAyMjMsIDEsIDczLCAKLSAgICA3MiwgNCwgMjI1LCAyMjMsIDIyMiwgNDgsIDczLCA3MiwgNCwgMjI1LCAxODMsIDIyMiwgMTgsIDczLCA3MiwgNCwgMjI1LCAKLSAgICAyMjYsIDIyMiwgMzksIDczLCA3MiwgNCwgMjI1LCAyNDEsIDIyMiwgMjIsIDczLCA3MiwgNCwgMjI1LCAxOTMsIDIwNSwgCi0gICAgMjMwLCA3MywgNzIsIDQsIDIyNSwgMTkwLCAyMDYsIDg2LCA3MywgNzIsIDQsIDIyNSwgMjI0LCAyMDQsIDE2MywgNzMsIDcyLCAKLSAgICA0LCAyMjUsIDIwMiwgMjA2LCA1MCwgNzMsIDcyLCA0LCAyMjYsIDM0LCAyMDYsIDU1LCA3MywgNzIsIDQsIDIyNSwgMjMxLCAKLSAgICAyMDUsIDE3NiwgNzMsIDcyLCA0LCAyMjYsIDQyLCAyMDUsIDE4OSwgNzMsIDcyLCA0LCAyMjUsIDIxMSwgMjIwLCAyNDIsIAotICAgIDczLCA3MiwgNCwgMjI2LCA2MSwgMjIxLCA1LCA3MywgNzIsIDQsIDIyNSwgMjA1LCAyMjAsIDIyNCwgNzMsIDcyLCA0LCAKLSAgICAyMjYsIDIxLCAyMjAsIDI1MywgNzMsIDcyLCA0LCAyMjYsIDU5LCAyMjAsIDIzMSwgNzMsIDcyLCAxNywgMTA1LCA3MywgNzIsIAotICAgIDE3LCAxMDgsIDczLCA3MiwgMTcsIDE0NywgNzMsIDcyLCAxNywgMTQ5LCA3MywgNzIsIDE3LCAxNzAsIDczLCA3MiwgMTcsIAotICAgIDE5NSwgNzMsIDcyLCAxNywgMjEzLCAxMTEsIDczLCA3MiwgMTcsIDE5OSwgNzMsIDcyLCAxNywgMjIyLCA2MywgNzMsIDcyLCAKLSAgICAzOSwgNDIsIDIwOSwgMTc0LCA3MywgNzIsIDM5LCA0MiwgMjA5LCAxNDcsIDczLCA3MiwgMzksIDQyLCAyMzYsIDEwLCA3MywgCi0gICAgNzIsIDM5LCA0MiwgMjA5LCAzNCwgNzMsIDcyLCAzOSwgNDIsIDIwOSwgMTUzLCAyMDksIDM0LCA3MywgNzIsIDM5LCA0MiwgCi0gICAgMjM2LCAxMiwgMjA5LCAzNCwgNzMsIDcyLCAzOSwgNDIsIDIyNCwgMTEzLCAxMCwgMTMsIDI1MSwgMzAsIDEwLCAxMywgMjQ4LCAKLSAgICAxMzgsIDEwLCAxMywgMjMwLCAxNTgsIDEwLCAxMywgMjQ0LCAxODQsIDEwLCAxMywgMjA0LCA3MCwgMTAsIDEzLCAyMDIsIAotICAgIDEwNywgMTAsIDEzLCAyMzcsIDE0OCwgMTAsIDEzLCAyMDksIDI1MSwgMTAsIDEzLCAyMDMsIDQ3LCAxMCwgMTMsIDIzMCwgCi0gICAgMjIsIDEwLCAxMywgMjI4LCAyOCwgMTAsIDEzLCAyMjUsIDUsIDEwLCAxMywgMjIxLCAxNzgsIDEwLCAxMywgMjE0LCAxNjEsIAotICAgIDEwLCAxMywgMjUxLCA1OSwgMTAsIDEzLCAyNDAsIDQ3LCAxMCwgMTMsIDIxNSwgMjgsIDEwLCAxMywgMjE3LCAxMTksIDEwLCAKLSAgICAxMywgMjE2LCAxMjIsIDEwLCAxMywgMjEzLCAzOSwgMTAsIDEzLCAyMDksIDE2OSwgMTAsIDEzLCAyMDksIDg4LCAxMCwgMTMsIAotICAgIDIyOSwgMTQwLCAxMCwgMTMsIDIwOSwgMTAwLCAxMCwgMTMsIDI0NCwgMjA3LCAxMCwgMTMsIDIwMiwgMTEwLCAxMCwgMTMsIAotICAgIDIzOCwgMTE0LCAxMCwgMTMsIDI0MywgODQsIDI0OCwgMTM4LCAxMCwgMTMsIDI0MywgODQsIDIyMSwgMTc4LCAxMCwgMTMsIAotICAgIDI0MywgODQsIDI0MCwgNDcsIDEwLCAxMywgMjQzLCA4NCwgMjE3LCAxMTksIDEwLCAxMywgODEsIDI0OCwgMTM4LCAxMCwgCi0gICAgMTMsIDgxLCAyMzAsIDE1OCwgMTAsIDEzLCA4MSwgMjM3LCA0MywgMTAsIDEzLCA4MSwgMjM3LCAxNDgsIDEwLCAxMywgODEsIAotICAgIDIwMywgNDcsIDEwLCAxMywgODEsIDIzMCwgMjIsIDEwLCAxMywgODEsIDIyOCwgMjgsIDEwLCAxMywgODEsIDIyNSwgNSwgCi0gICAgMTAsIDEzLCA4MSwgMjIxLCAxNzgsIDEwLCAxMywgODEsIDIxNCwgMTYxLCAxMCwgMTMsIDgxLCAyNTEsIDU5LCAxMCwgMTMsIAotICAgIDgxLCAyNDAsIDQ3LCAxMCwgMTMsIDgxLCAyMTUsIDI4LCAxMCwgMTMsIDgxLCAyMTcsIDExOSwgMTAsIDEzLCA4MSwgMjEzLCAKLSAgICAzOSwgMTAsIDEzLCA4MSwgMjA5LCAxNjksIDEwLCAxMywgODEsIDIwOSwgODgsIDEwLCAxMywgODEsIDIyOSwgMTQwLCAxMCwgCi0gICAgMTMsIDgxLCAyNDQsIDIwNywgMTAsIDEzLCA4MSwgMjM4LCAxMTQsIDEwLCAxMywgMjA5LCAyNDcsIDIzMCwgMTU4LCAxMCwgCi0gICAgMTMsIDIwOSwgMjQ3LCAyMzcsIDE0OCwgMTAsIDEzLCAyMDksIDI0NywgMjAzLCA0NywgMTAsIDEzLCAyMDksIDI0NywgMjI4LCAKLSAgICAyOCwgMTAsIDEzLCAyMDksIDI0NywgMjIxLCAxNzgsIDEwLCAxMywgMjA5LCAyNDcsIDIxNCwgMTYxLCAxMCwgMTMsIDIwOSwgCi0gICAgMjQ3LCAyNTEsIDU5LCAxMCwgMTMsIDIwOSwgMjQ3LCAyMTUsIDI4LCAxMCwgMTMsIDIwOSwgMjQ3LCAyMTcsIDExOSwgMTAsIAotICAgIDEzLCAyMDksIDI0NywgMjEzLCAzOSwgMTAsIDEzLCAyMDksIDI0NywgMjI5LCAxNDAsIDEwLCAxMywgMjA5LCAyNDcsIDI0NCwgCi0gICAgMjA3LCAxMCwgMTMsIDIwOSwgMjQ3LCAyMzgsIDExNCwgMTAsIDEzLCAyMDksIDI0NywgMjQzLCA4NCwgMjIxLCAxNzgsIDEwLCAKLSAgICAxMywgMjA5LCAyNDcsIDI0MywgODQsIDIxNywgMTE5LCAxMCwgMTMsIDIxMSwgNDAsIDI0OCwgMTM4LCAxMCwgMTMsIDIxMSwgCi0gICAgNDAsIDIzMCwgMTU4LCAxMCwgMTMsIDIxMSwgNDAsIDIzNywgNDMsIDEwLCAxMywgMjExLCA0MCwgMjM3LCAxNDgsIDEwLCAKLSAgICAxMywgMjExLCA0MCwgMjA5LCAyNTEsIDEwLCAxMywgMjExLCA0MCwgMjAzLCA0NywgMTAsIDEzLCAyMTEsIDQwLCAyMzAsIAotICAgIDIyLCAxMCwgMTMsIDIxMSwgNDAsIDIyNSwgNSwgMTAsIDEzLCAyMTEsIDQwLCAyMjEsIDE3OCwgMTAsIDEzLCAyMTEsIDQwLCAKLSAgICAyMTQsIDE2MSwgMTAsIDEzLCAyMTEsIDQwLCAyNTEsIDU5LCAxMCwgMTMsIDIxMSwgNDAsIDI0MCwgNDcsIDEwLCAxMywgCi0gICAgMjExLCA0MCwgMjE1LCAyOCwgMTAsIDEzLCAyMTEsIDQwLCAyMTcsIDExOSwgMTAsIDEzLCAyMTEsIDQwLCAyMTMsIDM5LCAKLSAgICAxMCwgMTMsIDIxMSwgNDAsIDIwOSwgMTY5LCAxMCwgMTMsIDIxMSwgNDAsIDIwOSwgODgsIDEwLCAxMywgMjExLCA0MCwgCi0gICAgMjI5LCAxNDAsIDEwLCAxMywgMjExLCA0MCwgMjQ0LCAyMDcsIDEwLCAxMywgMjExLCA0MCwgMjAyLCAxMTAsIDEwLCAxMywgCi0gICAgMjExLCA0MCwgMjM4LCAxMTQsIDEwLCAxMywgMjExLCA0MCwgMjQzLCA4NCwgMjQ4LCAxMzgsIDEwLCAxMywgMjExLCA0MCwgCi0gICAgMjQzLCA4NCwgMjQwLCA0NywgMTAsIDEzLCAyMjcsIDEzLCAyNTEsIDMwLCAxMCwgMTMsIDIyNywgMTMsIDI0OCwgMTM4LCAKLSAgICAxMCwgMTMsIDIyNywgMTMsIDIzMCwgMTU4LCAxMCwgMTMsIDIyNywgMTMsIDI0NCwgMTg0LCAxMCwgMTMsIDIyNywgMTMsIAotICAgIDIzNywgNDMsIDEwLCAxMywgMjI3LCAxMywgMjA0LCA3MCwgMTAsIDEzLCAyMjcsIDEzLCAyMDIsIDEwNywgMTAsIDEzLCAKLSAgICAyMjcsIDEzLCAyMzcsIDE0OCwgMTAsIDEzLCAyMjcsIDEzLCAyMDksIDI1MSwgMTAsIDEzLCAyMjcsIDEzLCAyMDMsIDQ3LCAKLSAgICAxMCwgMTMsIDIyNywgMTMsIDIyOCwgMjgsIDEwLCAxMywgMjI3LCAxMywgMjI1LCA1LCAxMCwgMTMsIDIyNywgMTMsIDIyMSwgCi0gICAgMTc4LCAxMCwgMTMsIDIyNywgMTMsIDIxNCwgMTYxLCAxMCwgMTMsIDIyNywgMTMsIDI1MSwgNTksIDEwLCAxMywgMjI3LCAKLSAgICAxMywgMjQwLCA0NywgMTAsIDEzLCAyMjcsIDEzLCAyMTUsIDI4LCAxMCwgMTMsIDIyNywgMTMsIDIxNywgMTE5LCAxMCwgMTMsIAotICAgIDIyNywgMTMsIDIxNiwgMTIyLCAxMCwgMTMsIDIyNywgMTMsIDIxMywgMzksIDEwLCAxMywgMjI3LCAxMywgMjA5LCAxNjksIAotICAgIDEwLCAxMywgMjI3LCAxMywgMjA5LCA4OCwgMTAsIDEzLCAyMjcsIDEzLCAyMjksIDE0MCwgMTAsIDEzLCAyMjcsIDEzLCAKLSAgICAyMDksIDEwMCwgMTAsIDEzLCAyMjcsIDEzLCAyNDQsIDIwNywgMTAsIDEzLCAyMjcsIDEzLCAyMDIsIDExMCwgMTAsIDEzLCAKLSAgICAyMjcsIDEzLCAyMzgsIDExNCwgMTAsIDEzLCAxNjksIDI0OCwgMTM4LCAxMCwgMTMsIDE2OSwgMjMwLCAxNTgsIDEwLCAxMywgCi0gICAgMTY5LCAyNDQsIDE4NCwgMTAsIDEzLCAxNjksIDIwNCwgNzAsIDEwLCAxMywgMTY5LCAyMDIsIDEwNywgMTAsIDEzLCAxNjksIAotICAgIDIzNywgMTQ4LCAxMCwgMTMsIDE2OSwgMjA5LCAyNTEsIDEwLCAxMywgMTY5LCAyMDMsIDQ3LCAxMCwgMTMsIDE2OSwgMjI4LCAKLSAgICAyOCwgMTAsIDEzLCAxNjksIDIyNSwgNSwgMTAsIDEzLCAxNjksIDIyMSwgMTc4LCAxMCwgMTMsIDE2OSwgMjE0LCAxNjEsIAotICAgIDEwLCAxMywgMTY5LCAyNTEsIDU5LCAxMCwgMTMsIDE2OSwgMjQwLCA0NywgMTAsIDEzLCAxNjksIDIxNSwgMjgsIDEwLCAxMywgCi0gICAgMTY5LCAyMTcsIDExOSwgMTAsIDEzLCAxNjksIDIxNiwgMTIyLCAxMCwgMTMsIDE2OSwgMjEzLCAzOSwgMTAsIDEzLCAxNjksIAotICAgIDIwOSwgMTY5LCAxMCwgMTMsIDE2OSwgMjA5LCA4OCwgMTAsIDEzLCAxNjksIDIyOSwgMTQwLCAxMCwgMTMsIDE2OSwgMjA5LCAKLSAgICAxMDAsIDEwLCAxMywgMTY5LCAyNDQsIDIwNywgMTAsIDEzLCAxNjksIDIwMiwgMTEwLCAxMCwgMTMsIDE2OSwgMjM4LCAxMTQsIAotICAgIDEwLCAxMywgMjE5LCAyNTUsIDgzLCAzLCAxNTEsIDMsIDIwOSwgMjA5LCAxMCwgMTMsIDIxOSwgMjU1LCAxNTEsIDMsIDI0NCwgCi0gICAgMTg0LCAyMjUsIDE0MiwgOTksIDI0MSwgMTc2LCAyMDQsIDE2LCAyMjUsIDE0MiwgOTksIDIxMSwgMjM4LCAyMDQsIDE2LCAKLSAgICAyMjUsIDE0MiwgOTksIDIwNCwgNDYsIDIwNCwgMTYsIDIyNSwgMTQyLCA5OSwgMTUzLCAyMDQsIDE2LCAyMjUsIDE0MiwgOTksIAotICAgIDIxNiwgMTM4LCAyNDIsIDYxLCAyMjUsIDE0MiwgOTksIDIzNywgMjQ0LCAyNDIsIDYxLCAyMjUsIDE0MiwgOTksIDYxLCAKLSAgICAyNDIsIDYxLCAyMjUsIDE0MiwgOTksIDExOCwgNzYsIDI0NiwgMTgxLCAyMjUsIDE0MiwgOTksIDEyMCwgNzYsIDI0NiwgCi0gICAgMTgxLCAyMjUsIDE0MiwgOTksIDEyNiwgNzYsIDI0NiwgMTgxLCAyMjUsIDE0MiwgOTksIDIzOSwgMTQ3LCA3NiwgMjQ2LCAKLSAgICAxODEsIDIyNSwgMTQyLCA5OSwgMjM5LCAyMzMsIDc2LCAyNDYsIDE4MSwgMjI1LCAxNDIsIDk5LCAyMTIsIDg4LCA3NiwgCi0gICAgMjQ2LCAxODEsIDIyNSwgMTQyLCA5OSwgMjEzLCAxMTIsIDc2LCAyNDYsIDE4MSwgMjI1LCAxNDIsIDk5LCAyNDEsIDE0MywgCi0gICAgNzYsIDI0NiwgMTgxLCAyMjUsIDE0MiwgOTksIDIyMiwgNjQsIDc2LCAyNDYsIDE4MSwgMjI1LCAxNDIsIDk5LCAxMTgsIDc2LCAKLSAgICAyNDgsIDI0MywgMjI1LCAxNDIsIDk5LCAxMjAsIDc2LCAyNDgsIDI0MywgMjI1LCAxNDIsIDk5LCAxMjYsIDc2LCAyNDgsIAotICAgIDI0MywgMjI1LCAxNDIsIDk5LCAyMzksIDE0NywgNzYsIDI0OCwgMjQzLCAyMjUsIDE0MiwgOTksIDIzOSwgMjMzLCA3NiwgCi0gICAgMjQ4LCAyNDMsIDIyNSwgMTQyLCA5OSwgMjEyLCA4OCwgNzYsIDI0OCwgMjQzLCAyMjUsIDE0MiwgOTksIDIxMywgMTEyLCAKLSAgICA3NiwgMjQ4LCAyNDMsIDIyNSwgMTQyLCA5OSwgMjQxLCAxNDMsIDc2LCAyNDgsIDI0MywgMjI1LCAxNDIsIDk5LCAyMjIsIAotICAgIDY0LCA3NiwgMjQ4LCAyNDMsIDIyNSwgMTQyLCA5OSwgMTE4LCA3NiwgMjQ2LCA1OCwgMjI1LCAxNDIsIDk5LCAxMjAsIDc2LCAKLSAgICAyNDYsIDU4LCAyMjUsIDE0MiwgOTksIDEyNiwgNzYsIDI0NiwgNTgsIDIyNSwgMTQyLCA5OSwgMjM5LCAxNDcsIDc2LCAyNDYsIAotICAgIDU4LCAyMjUsIDE0MiwgOTksIDIzOSwgMjMzLCA3NiwgMjQ2LCA1OCwgMjI1LCAxNDIsIDk5LCAyMTIsIDg4LCA3NiwgMjQ2LCAKLSAgICA1OCwgMjI1LCAxNDIsIDk5LCAyMTMsIDExMiwgNzYsIDI0NiwgNTgsIDIyNSwgMTQyLCA5OSwgMjQxLCAxNDMsIDc2LCAyNDYsIAotICAgIDU4LCAyMjUsIDE0MiwgOTksIDIyMiwgNjQsIDc2LCAyNDYsIDU4LCAyMjUsIDE0MiwgOTksIDIxOCwgNzksIDIyNSwgMTQyLCAKLSAgICA5OSwgMjE5LCAyNDIsIDIyNSwgMTQyLCA5OSwgMjQ4LCAyNDQsIDIyNSwgMTQyLCA5OSwgMjQ2LCA5OSwgMjI1LCAxNDIsIAotICAgIDk5LCAyMTEsIDE4MywgMjI1LCAxNDIsIDk5LCAyMTAsIDIxNiwgMjI1LCAxNDIsIDk5LCAyNTAsIDIxLCAyMjUsIDE0MiwgCi0gICAgOTksIDIwNCwgNywgMjI1LCAxNDIsIDk5LCAyMzAsIDk0LCAyMjUsIDE0MiwgOTksIDI0OSwgMjUsIDE2MSwgOTksIDIzNiwgCi0gICAgMTA2LCAyNDksIDI1LCAxNjEsIDk5LCAyMzYsIDEwNCwgMTYxLCA5OSwgMjM2LCAxMDMsIDE2MSwgOTksIDIzNiwgMTAyLCAKLSAgICAxNjEsIDk5LCAyMzYsIDEwMSwgMTYxLCA5OSwgMjM2LCAxMDAsIDE2MSwgOTksIDIzNiwgOTksIDE2MSwgOTksIDIzNiwgOTgsIAotICAgIDE2MSwgOTksIDIzNiwgOTcsIDE2MSwgOTksIDIzNiwgOTYsIDE2MSwgOTksIDIzNiwgOTUsIDE2MSwgOTksIDIzNiwgOTQsIAotICAgIDE2MSwgOTksIDIzNiwgOTMsIDE2MSwgOTksIDIzNiwgOTIsIDE2MSwgOTksIDIzNiwgOTEsIDE2MSwgOTksIDIzNiwgOTAsIAotICAgIDE2MSwgOTksIDIzNiwgODksIDE2MSwgOTksIDIzNiwgODgsIDE2MSwgOTksIDIzNiwgODcsIDE2MSwgOTksIDIzNiwgODYsIAotICAgIDE2MSwgOTksIDIzNiwgODUsIDE2MSwgOTksIDIzNiwgODQsIDE2MSwgOTksIDIzNiwgODMsIDE2MSwgOTksIDIzNiwgODIsIAotICAgIDE2MSwgOTksIDIzNiwgODEsIDE2MSwgOTksIDIzNiwgODAsIDE2MSwgOTksIDIzNiwgNzksIDE2MSwgOTksIDIzNiwgNzgsIAotICAgIDE2MSwgOTksIDIzNiwgNzcsIDE2MSwgOTksIDIzNiwgNzYsIDE2MSwgOTksIDIzNiwgNzUsIDE2MSwgOTksIDIzNiwgNzQsIAotICAgIDE2MSwgOTksIDIzNiwgNzMsIDE2MSwgOTksIDIzNiwgNzIsIDE2MSwgOTksIDIzNiwgNzEsIDE2MSwgOTksIDIzNiwgNzAsIAotICAgIDE2MSwgOTksIDIzNiwgNjksIDE2MSwgOTksIDIzNiwgNjgsIDE2MSwgOTksIDIzNiwgNjcsIDE2MSwgOTksIDIzNiwgNjYsIAotICAgIDE2MSwgOTksIDIzNiwgNjUsIDE2MSwgOTksIDIzNiwgNjQsIDE2MSwgOTksIDIzNiwgNjMsIDE2MSwgOTksIDIzNiwgNjIsIAotICAgIDE2MSwgOTksIDIzNiwgNjEsIDE2MSwgOTksIDIzNiwgNjAsIDE2MSwgOTksIDIzNiwgNTksIDE2MSwgOTksIDIzNiwgNTgsIAotICAgIDE2MSwgOTksIDIzNiwgNTcsIDE2MSwgOTksIDIzNiwgNTYsIDE2MSwgOTksIDgwLCAyNDksIDI1LCAxNjEsIDk5LCAyMDYsIAotICAgIDM3LCAxNjEsIDk5LCAyMDYsIDM2LCAxNjEsIDk5LCAyMDYsIDM1LCAxNjEsIDk5LCAyMDYsIDM0LCAxNjEsIDk5LCAyMDYsIAotICAgIDMzLCAxNjEsIDk5LCAyMDYsIDMyLCAxNjEsIDk5LCAyMDYsIDMxLCAxNjEsIDk5LCAyMDYsIDMwLCAxNjEsIDk5LCAyMDYsIAotICAgIDI5LCAxNjEsIDk5LCAyMDYsIDI4LCAxNjEsIDk5LCAyMDYsIDI3LCAxNjEsIDk5LCAyMDYsIDI2LCAxNjEsIDk5LCAyMDYsIAotICAgIDI1LCAxNjEsIDk5LCAyMDYsIDI0LCAxNjEsIDk5LCAyMDYsIDIzLCAxNjEsIDk5LCAyMDYsIDIyLCAxNjEsIDk5LCAyMDYsIAotICAgIDIxLCAxNjEsIDk5LCAyMDYsIDIwLCAxNjEsIDk5LCAyMDYsIDE5LCAxNjEsIDk5LCAyMDYsIDE4LCAxNjEsIDk5LCAyMDYsIAotICAgIDE3LCAxNjEsIDk5LCAyMDYsIDE2LCAxNjEsIDk5LCAyMDYsIDE1LCAxNjEsIDk5LCAyMDYsIDE0LCAxNjEsIDk5LCAyMDYsIAotICAgIDEzLCAxNjEsIDk5LCAyMDYsIDEyLCAxNjEsIDk5LCAyMDYsIDExLCAxNjEsIDk5LCAyMDYsIDEwLCAxNjEsIDk5LCAyMDYsIAotICAgIDksIDE2MSwgOTksIDIwNiwgOCwgMTYxLCA5OSwgMjA2LCA3LCAxNjEsIDk5LCAyMDYsIDYsIDE2MSwgOTksIDIwNiwgNSwgCi0gICAgMTYxLCA5OSwgMjA2LCA0LCAxNjEsIDk5LCAyMDYsIDMsIDE2MSwgOTksIDIwNiwgMiwgMTYxLCA5OSwgMjA2LCAxLCAxNjEsIAotICAgIDk5LCAyMDYsIDAsIDE2MSwgOTksIDIwNSwgMjU1LCAxNjEsIDk5LCAyMDUsIDI1NCwgMTYxLCA5OSwgMjA1LCAyNTMsIDE2MSwgCi0gICAgOTksIDIwNSwgMjUyLCAxNjEsIDk5LCAyMDUsIDI1MSwgMTYxLCA5OSwgMjA1LCAyNTAsIDE2MSwgOTksIDIwNSwgMjQ5LCAKLSAgICAxNjEsIDk5LCAyMDUsIDI0OCwgMTYxLCA5OSwgMjA1LCAyNDcsIDE2MSwgOTksIDIwNSwgMjQ2LCAxNjEsIDk5LCAyMDUsIAotICAgIDI0NSwgMjE4LCA4OCwgMjQ3LCAzOCwgMjQ5LCAyNSwgMjE4LCA4OCwgMjQ3LCAzOCwgMjUxLCAxMzIsIDc2LCAyMTEsIDIyNSwgCi0gICAgMjE4LCA4OCwgMjQ3LCAzOCwgMTIwLCA3NiwgMjExLCAyMjUsIDIxOCwgODgsIDI0NywgMzgsIDEyNiwgNzYsIDIxMSwgMjI1LCAKLSAgICAyMTgsIDg4LCAyNDcsIDM4LCAyMzksIDE0NywgNzYsIDIxMSwgMjI1LCAyMTgsIDg4LCAyNDcsIDM4LCAyMzksIDIzMywgNzYsIAotICAgIDIxMSwgMjI1LCAyMTgsIDg4LCAyNDcsIDM4LCAyMTIsIDg4LCA3NiwgMjExLCAyMjUsIDIxOCwgODgsIDI0NywgMzgsIDIxMywgCi0gICAgMTEyLCA3NiwgMjExLCAyMjUsIDIxOCwgODgsIDI0NywgMzgsIDI0MSwgMTQzLCA3NiwgMjExLCAyMjUsIDIxOCwgODgsIAotICAgIDI0NywgMzgsIDIyMiwgNjQsIDc2LCAyMTEsIDIyNSwgMjE4LCA4OCwgMjQ3LCAzOCwgMjA5LCAxNTMsIDc2LCAyMTEsIDIyNSwgCi0gICAgMjE4LCA4OCwgMjQ3LCAzOCwgMjMwLCAxNzksIDc2LCAyMTEsIDIyNSwgMjE4LCA4OCwgMjQ3LCAzOCwgMjI5LCAzMiwgNzYsIAotICAgIDIxMSwgMjI1LCAyMTgsIDg4LCAyNDcsIDM4LCAyMTcsIDQ5LCA3NiwgMjExLCAyMjUsIDIxOCwgODgsIDI0NywgMzgsIDIyOSwgCi0gICAgODIsIDc2LCAyMTEsIDIyNSwgMjE4LCA4OCwgMjQ3LCAzOCwgMjUxLCAxMzIsIDc2LCAyMzcsIDUzLCAyMTgsIDg4LCAyNDcsIAotICAgIDM4LCAxMjAsIDc2LCAyMzcsIDUzLCAyMTgsIDg4LCAyNDcsIDM4LCAxMjYsIDc2LCAyMzcsIDUzLCAyMTgsIDg4LCAyNDcsIAotICAgIDM4LCAyMzksIDE0NywgNzYsIDIzNywgNTMsIDIxOCwgODgsIDI0NywgMzgsIDIzOSwgMjMzLCA3NiwgMjM3LCA1MywgMjE4LCAKLSAgICA4OCwgMjQ3LCAzOCwgMjEyLCA4OCwgNzYsIDIzNywgNTMsIDIxOCwgODgsIDI0NywgMzgsIDIxMywgMTEyLCA3NiwgMjM3LCAKLSAgICA1MywgMjE4LCA4OCwgMjQ3LCAzOCwgMjQxLCAxNDMsIDc2LCAyMzcsIDUzLCAyMTgsIDg4LCAyNDcsIDM4LCAyMjIsIDY0LCAKLSAgICA3NiwgMjM3LCA1MywgMjE4LCA4OCwgMjQ3LCAzOCwgMjA5LCAxNTMsIDc2LCAyMzcsIDUzLCAyMTgsIDg4LCAyNDcsIDM4LCAKLSAgICAyMzAsIDE3OSwgNzYsIDIzNywgNTMsIDIxOCwgODgsIDI0NywgMzgsIDIyOSwgMzIsIDc2LCAyMzcsIDUzLCAyMTgsIDg4LCAKLSAgICAyNDcsIDM4LCAyMTcsIDQ5LCA3NiwgMjM3LCA1MywgMjE4LCA4OCwgMjQ3LCAzOCwgMjI5LCA4MiwgNzYsIDIzNywgNTMsIAotICAgIDIxOCwgODgsIDI0NywgMzgsIDIxNiwgMTM4LCAyMzAsIDk0LCAyMTgsIDg4LCAyNDcsIDM4LCAyNTEsIDEzMiwgNzYsIDI0MywgCi0gICAgMjIwLCAyMTgsIDg4LCAyNDcsIDM4LCAxMjAsIDc2LCAyNDMsIDIyMCwgMjE4LCA4OCwgMjQ3LCAzOCwgMTI2LCA3NiwgMjQzLCAKLSAgICAyMjAsIDIxOCwgODgsIDI0NywgMzgsIDIzOSwgMTQ3LCA3NiwgMjQzLCAyMjAsIDIxOCwgODgsIDI0NywgMzgsIDIzOSwgCi0gICAgMjMzLCA3NiwgMjQzLCAyMjAsIDIxOCwgODgsIDI0NywgMzgsIDIxMiwgODgsIDc2LCAyNDMsIDIyMCwgMjE4LCA4OCwgMjQ3LCAKLSAgICAzOCwgMjEzLCAxMTIsIDc2LCAyNDMsIDIyMCwgMjE4LCA4OCwgMjQ3LCAzOCwgMjQxLCAxNDMsIDc2LCAyNDMsIDIyMCwgCi0gICAgMjE4LCA4OCwgMjQ3LCAzOCwgMjIyLCA2NCwgNzYsIDI0MywgMjIwLCAyMTgsIDg4LCAyNDcsIDM4LCAyMDksIDE1MywgNzYsIAotICAgIDI0MywgMjIwLCAyMTgsIDg4LCAyNDcsIDM4LCAyMzAsIDE3OSwgNzYsIDI0MywgMjIwLCAyMTgsIDg4LCAyNDcsIDM4LCAKLSAgICAyMjksIDMyLCA3NiwgMjQzLCAyMjAsIDIxOCwgODgsIDI0NywgMzgsIDIxNywgNDksIDc2LCAyNDMsIDIyMCwgMjE4LCA4OCwgCi0gICAgMjQ3LCAzOCwgMjI5LCA4MiwgNzYsIDI0MywgMjIwLCAyMTgsIDg4LCAyNDcsIDM4LCA2MiwgMjMwLCA5NCwgMjE4LCA4OCwgCi0gICAgMjQ3LCAzOCwgMjUxLCAxMzIsIDc2LCAyNDYsIDIsIDIxOCwgODgsIDI0NywgMzgsIDEyMCwgNzYsIDI0NiwgMiwgMjE4LCAKLSAgICA4OCwgMjQ3LCAzOCwgMTI2LCA3NiwgMjQ2LCAyLCAyMTgsIDg4LCAyNDcsIDM4LCAyMzksIDE0NywgNzYsIDI0NiwgMiwgCi0gICAgMjE4LCA4OCwgMjQ3LCAzOCwgMjM5LCAyMzMsIDc2LCAyNDYsIDIsIDIxOCwgODgsIDI0NywgMzgsIDIxMiwgODgsIDc2LCAKLSAgICAyNDYsIDIsIDIxOCwgODgsIDI0NywgMzgsIDIxMywgMTEyLCA3NiwgMjQ2LCAyLCAyMTgsIDg4LCAyNDcsIDM4LCAyNDEsIAotICAgIDE0MywgNzYsIDI0NiwgMiwgMjE4LCA4OCwgMjQ3LCAzOCwgMjIyLCA2NCwgNzYsIDI0NiwgMiwgMjE4LCA4OCwgMjQ3LCAzOCwgCi0gICAgMjA5LCAxNTMsIDc2LCAyNDYsIDIsIDIxOCwgODgsIDI0NywgMzgsIDIzMCwgMTc5LCA3NiwgMjQ2LCAyLCAyMTgsIDg4LCAKLSAgICAyNDcsIDM4LCAyMjksIDMyLCA3NiwgMjQ2LCAyLCAyMTgsIDg4LCAyNDcsIDM4LCAyMTcsIDQ5LCA3NiwgMjQ2LCAyLCAyMTgsIAotICAgIDg4LCAyNDcsIDM4LCAyMjksIDgyLCA3NiwgMjQ2LCAyLCAyMTgsIDg4LCAyNDcsIDM4LCA2MSwgMjMwLCA5NCwgMjE4LCA4OCwgCi0gICAgMjQ3LCAzOCwgMjM5LCAxNzMsIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgNDgsIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgMzcsIAotICAgIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgMzQsIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgMzMsIDIxOCwgODgsIDI0NywgMzgsIAotICAgIDIwOCwgMzIsIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgMzEsIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgMzAsIDIxOCwgODgsIAotICAgIDI0NywgMzgsIDIwOCwgMjksIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgMjgsIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgNDcsIAotICAgIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgNDYsIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgNDUsIDIxOCwgODgsIDI0NywgMzgsIAotICAgIDIwOCwgNDQsIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgNDMsIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgNDIsIDIxOCwgODgsIAotICAgIDI0NywgMzgsIDIwOCwgNDEsIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgNDAsIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgMzksIAotICAgIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgMzgsIDIxOCwgODgsIDI0NywgMzgsIDIwOCwgMzYsIDIxOCwgODgsIDI0NywgMzgsIAotICAgIDIwOCwgMzUsIDE3LCAyMDIsIDg1LCAyMzksIDEwMiwgMjExLCA2MSwgMTcsIDIwMiwgODUsIDI0NSwgMjMzLCAxNywgMTE4LCAKLSAgICAyNDUsIDIzMywgMTcsIDEyMCwgMjQ1LCAyMzMsIDE3LCAxMjYsIDI0NSwgMjMzLCAxNywgMjM5LCAxNDcsIDI0NSwgMjMzLCAKLSAgICAxNywgMjM5LCAyMzMsIDI0NSwgMjMzLCAxNywgMjEyLCA4OCwgMjQ1LCAyMzMsIDE3LCAyMTMsIDExMiwgMjQ1LCAyMzMsIAotICAgIDE3LCAyNDEsIDE0MywgMjQ1LCAyMzMsIDE3LCAyMjIsIDY0LCAyNDUsIDIzMywgMjQzLCAxNzQsIDQzLCA0MSwgMTcsIDIwMiwgCi0gICAgODQsIDI0MywgMTc0LCAxODIsIDQzLCA0MSwgMTcsIDIwMiwgODQsIDEwMiwgOCwgNiwgMSwgNjMsIDEwMiwgOCwgNiwgMSwgCi0gICAgMjQ5LCAyNTUsIDEwMiwgOCwgNiwgMSwgMjQ3LCAxMjUsIDEwMiwgOCwgNiwgMSwgMjQ1LCA1MSwgMTAyLCA4LCA2LCAxLCAKLSAgICA3NCwgMTAyLCA4LCA2LCAxLCAyNDAsIDE3NCwgMTAyLCA4LCA2LCAxLCAyMzksIDc1LCAxMDIsIDgsIDYsIDEsIDIzNywgCi0gICAgMTcxLCAxMDIsIDgsIDYsIDEsIDc1LCAxMDIsIDgsIDYsIDEsIDIzMCwgMTg0LCAxMDIsIDgsIDYsIDEsIDIzMCwgNTQsIAotICAgIDEwMiwgOCwgNiwgMSwgMTU5LCAxMDIsIDgsIDYsIDEsIDIyNiwgMTg1LCAxMDIsIDgsIDYsIDEsIDIyMywgMTYzLCAxMDIsIAotICAgIDgsIDYsIDEsIDc4LCAxMDIsIDgsIDYsIDEsIDIxOSwgMTg0LCAxMDIsIDgsIDYsIDEsIDIxNywgMTM0LCAxMDIsIDgsIDYsIAotICAgIDEsIDE0NiwgMTAyLCA4LCA2LCAxLCAxOTQsIDEwMiwgOCwgNiwgMSwgMjEwLCA2OSwgMTAyLCA4LCA2LCAxLCA2OCwgMTAyLCAKLSAgICA4LCA2LCAxLCAyMDYsIDE2NCwgMTAyLCA4LCA2LCAxLCAyMDQsIDE0NCwgMTAyLCA4LCA2LCAxLCAyMDMsIDE5NiwgMTAyLCAKLSAgICA4LCA2LCAxLCAyMDMsIDEyNCwgMTAyLCA4LCA2LCAxLCAyMDIsIDE1OSwgMjA4LCAxMzMsIDIxMywgMzMsIDI0NywgMjI2LCAKLSAgICA4LCA2LCAxLCAxOTQsIDQzLCAzNywgOCwgNiwgMSwgMjQ3LCAxMjUsIDQzLCAzNywgOCwgNiwgMSwgMTQ2LCA0MywgMjQ2LCAKLSAgICAyMzksIDQzLCAyMDMsIDE5OCwgMTAzLCA4LCA2LCAxLCA2MywgMTAzLCA4LCA2LCAxLCAyNDksIDI1NSwgMTAzLCA4LCA2LCAKLSAgICAxLCAyNDcsIDEyNSwgMTAzLCA4LCA2LCAxLCAyNDUsIDUxLCAxMDMsIDgsIDYsIDEsIDc0LCAxMDMsIDgsIDYsIDEsIDI0MCwgCi0gICAgMTc0LCAxMDMsIDgsIDYsIDEsIDIzOSwgNzUsIDEwMywgOCwgNiwgMSwgMjM3LCAxNzEsIDEwMywgOCwgNiwgMSwgNzUsIAotICAgIDEwMywgOCwgNiwgMSwgMjMwLCAxODQsIDEwMywgOCwgNiwgMSwgMjMwLCA1NCwgMTAzLCA4LCA2LCAxLCAxNTksIDEwMywgOCwgCi0gICAgNiwgMSwgMjI2LCAxODUsIDEwMywgOCwgNiwgMSwgMjIzLCAxNjMsIDEwMywgOCwgNiwgMSwgNzgsIDEwMywgOCwgNiwgMSwgCi0gICAgMjE5LCAxODQsIDEwMywgOCwgNiwgMSwgMjE3LCAxMzQsIDEwMywgOCwgNiwgMSwgMTQ2LCAxMDMsIDgsIDYsIDEsIDE5NCwgCi0gICAgMTAzLCA4LCA2LCAxLCAyMTAsIDY5LCAxMDMsIDgsIDYsIDEsIDY4LCAxMDMsIDgsIDYsIDEsIDIwNiwgMTY0LCAxMDMsIDgsIAotICAgIDYsIDEsIDIwNCwgMTQ0LCAxMDMsIDgsIDYsIDEsIDIwMywgMTk2LCAxMDMsIDgsIDYsIDEsIDIwMywgMTI0LCAxMDMsIDgsIAotICAgIDYsIDEsIDIwMiwgMTU5LCAxMDMsIDIzNSwgMjU1LCAxMDMsIDIyMywgMTg3LCAxMDMsIDIxNCwgMTc5LCAxMDMsIDIxMSwgCi0gICAgMTY3LCAxMDMsIDIxOCwgMTAsIDEwMywgMjA0LCA2MywgMTgyLCA0MywgOCwgNiwgMSwgNjMsIDE4MiwgNDMsIDgsIDYsIDEsIAotICAgIDI0OSwgMjU1LCAxODIsIDQzLCA4LCA2LCAxLCAyNDcsIDEyNSwgMTgyLCA0MywgOCwgNiwgMSwgMjQ1LCA1MSwgMTgyLCA0MywgCi0gICAgOCwgNiwgMSwgNzQsIDE4MiwgNDMsIDgsIDYsIDEsIDI0MCwgMTc0LCAxODIsIDQzLCA4LCA2LCAxLCAyMzksIDc1LCAxODIsIAotICAgIDQzLCA4LCA2LCAxLCAyMzcsIDE3MSwgMTgyLCA0MywgOCwgNiwgMSwgNzUsIDE4MiwgNDMsIDgsIDYsIDEsIDIzMCwgMTg0LCAKLSAgICAxODIsIDQzLCA4LCA2LCAxLCAyMzAsIDU0LCAxODIsIDQzLCA4LCA2LCAxLCAxNTksIDE4MiwgNDMsIDgsIDYsIDEsIDIyNiwgCi0gICAgMTg1LCAxODIsIDQzLCA4LCA2LCAxLCAyMjMsIDE2MywgMTgyLCA0MywgOCwgNiwgMSwgNzgsIDE4MiwgNDMsIDgsIDYsIDEsIAotICAgIDIxOSwgMTg0LCAxODIsIDQzLCA4LCA2LCAxLCAyMTcsIDEzNCwgMTgyLCA0MywgOCwgNiwgMSwgMTQ2LCAxODIsIDQzLCA4LCAKLSAgICA2LCAxLCAxOTQsIDE4MiwgNDMsIDgsIDYsIDEsIDIxMCwgNjksIDE4MiwgNDMsIDgsIDYsIDEsIDY4LCAxODIsIDQzLCA4LCAKLSAgICA2LCAxLCAyMDYsIDE2NCwgMTgyLCA0MywgOCwgNiwgMSwgMjA0LCAxNDQsIDE4MiwgNDMsIDgsIDYsIDEsIDIwMywgMTk2LCAKLSAgICAxODIsIDQzLCA4LCA2LCAxLCAyMDMsIDEyNCwgMTgyLCA0MywgOCwgNiwgMSwgMjAyLCAxNTksIDIxNiwgMTg4LCAyMjUsIAotICAgIDI2LCA1NCwgMjE2LCAxODgsIDIyNSwgMjMsIDU0LCAxODIsIDEwMywgOCwgNiwgMSwgNjMsIDE4MiwgMTAzLCA4LCA2LCAxLCAKLSAgICAyNDksIDI1NSwgMTgyLCAxMDMsIDgsIDYsIDEsIDI0NywgMTI1LCAxODIsIDEwMywgOCwgNiwgMSwgMjQ1LCA1MSwgMTgyLCAKLSAgICAxMDMsIDgsIDYsIDEsIDc0LCAxODIsIDEwMywgOCwgNiwgMSwgMjQwLCAxNzQsIDE4MiwgMTAzLCA4LCA2LCAxLCAyMzksIAotICAgIDc1LCAxODIsIDEwMywgOCwgNiwgMSwgMjM3LCAxNzEsIDE4MiwgMTAzLCA4LCA2LCAxLCA3NSwgMTgyLCAxMDMsIDgsIDYsIAotICAgIDEsIDIzMCwgMTg0LCAxODIsIDEwMywgOCwgNiwgMSwgMjMwLCA1NCwgMTgyLCAxMDMsIDgsIDYsIDEsIDE1OSwgMTgyLCAKLSAgICAxMDMsIDgsIDYsIDEsIDIyNiwgMTg1LCAxODIsIDEwMywgOCwgNiwgMSwgMjIzLCAxNjMsIDE4MiwgMTAzLCA4LCA2LCAxLCAKLSAgICA3OCwgMTgyLCAxMDMsIDgsIDYsIDEsIDIxOSwgMTg0LCAxODIsIDEwMywgOCwgNiwgMSwgMjE3LCAxMzQsIDE4MiwgMTAzLCAKLSAgICA4LCA2LCAxLCAxNDYsIDE4MiwgMTAzLCA4LCA2LCAxLCAxOTQsIDE4MiwgMTAzLCA4LCA2LCAxLCAyMTAsIDY5LCAxODIsIAotICAgIDEwMywgOCwgNiwgMSwgNjgsIDE4MiwgMTAzLCA4LCA2LCAxLCAyMDYsIDE2NCwgMTgyLCAxMDMsIDgsIDYsIDEsIDIwNCwgCi0gICAgMTQ0LCAxODIsIDEwMywgOCwgNiwgMSwgMjAzLCAxOTYsIDE4MiwgMTAzLCA4LCA2LCAxLCAyMDMsIDEyNCwgMTgyLCAxMDMsIAotICAgIDgsIDYsIDEsIDIwMiwgMTU5LCAyNDUsIDEyOCwgMTgyLCAxMDMsIDgsIDYsIDEsIDIxOSwgMTg0LCAxODIsIDEwMywgMjM1LCAKLSAgICAxNjQsIDE4MiwgMTAzLCAxODUsIDE4MiwgMTAzLCAyMTUsIDM2LCAxODIsIDEwMywgMjUxLCAyMzIsIDE4MiwgMTAzLCAyMDQsIAotICAgIDYzLCA1MSwgMjQzLCAxMzIsIDEwMywgMjQ2LCA0MiwgMTAzLCAyNDUsIDE3NiwgMTAzLCAyMzksIDEyOSwgMTAzLCAyMzUsIAotICAgIDE1NSwgMTAzLCAyMjIsIDIxMywgMTAzLCAyMjIsIDIwNSwgMTAzLCAyMjAsIDUxLCAxMDMsIDIxMSwgMjQ1LCAxMDMsIDExMiwgCi0gICAgMywgMjQwLCAyMTIsIDgyLCAxMDMsIDIwNSwgMTY2LCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDYzLCAyMTYsIDEzMCwgCi0gICAgMjMxLCAzMiwgMTYsIDEsIDI0OSwgMjU1LCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDI0NywgMTI1LCAyMTYsIDEzMCwgCi0gICAgMjMxLCAzMiwgMTYsIDEsIDI0NSwgNTEsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgNzQsIDIxNiwgMTMwLCAyMzEsIDMyLCAKLSAgICAxNiwgMSwgMjQwLCAxNzQsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMjM5LCA3NSwgMjE2LCAxMzAsIDIzMSwgMzIsIAotICAgIDE2LCAxLCAyMzcsIDE3MSwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCA3NSwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCAKLSAgICAyMzAsIDE4NCwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCAyMzAsIDU0LCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIAotICAgIDE1OSwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCAyMjYsIDE4NSwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCAyMjMsIAotICAgIDE2MywgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCA3OCwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCAyMTksIDE4NCwgCi0gICAgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCAyMTcsIDEzNCwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCAxNDYsIDIxNiwgCi0gICAgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMTk0LCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDIxMCwgNjksIDIxNiwgMTMwLCAKLSAgICAyMzEsIDMyLCAxNiwgMSwgNjgsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMjA2LCAxNjQsIDIxNiwgMTMwLCAyMzEsIAotICAgIDMyLCAxNiwgMSwgMjA0LCAxNDQsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMjAzLCAxOTYsIDIxNiwgMTMwLCAyMzEsIAotICAgIDMyLCAxNiwgMSwgMjAzLCAxMjQsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMjAyLCAxNTksIDUxLCAxNzIsIDIzNiwgCi0gICAgMTMwLCAxMDMsIDY3LCAyMjksIDE0LCAxMDMsIDY3LCAyMTUsIDM2LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMDAsIAotICAgIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDEwNCwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgMTEyLCAxMDMsIDY3LCAyNDQsIAotICAgIDc1LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMTksIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDEwNiwgMTAzLCAxMiwgCi0gICAgMjA2LCAyMzksIDIzMywgNzgsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDEwNSwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgCi0gICAgMTE4LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCA5MiwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgODUsIDEwMywgMTIsIAotICAgIDIwNiwgMjM5LCAyMzMsIDk0LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMTUsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIAotICAgIDEwMSwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgMTE3LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCA5MywgMTAzLCAxMiwgCi0gICAgMjA2LCAyMzksIDIzMywgMTE2LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCA3OSwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgCi0gICAgODQsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDc3LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMDcsIDEwMywgMTIsIAotICAgIDIwNiwgMjM5LCAyMzMsIDEwOSwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgODcsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIAotICAgIDk4LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCA5NiwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgMTIyLCAxMDMsIDEyLCAKLSAgICAyMDYsIDIzOSwgMjMzLCAxMjEsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDc1LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAKLSAgICAxMDIsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDEyMCwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgMTExLCAxMDMsIDEyLCAKLSAgICAyMDYsIDIzOSwgMjMzLCA5NywgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgNzYsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIAotICAgIDk5LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCA4MSwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgODAsIDEwMywgMTIsIDIwNiwgCi0gICAgMjM5LCAyMzMsIDExMCwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgODgsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDkwLCAKLSAgICAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCA5MSwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgODMsIDEwMywgMTIsIDIwNiwgCi0gICAgMjM5LCAyMzMsIDExNCwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgMTA4LCAyMDgsIDEzMywgMjEzLCAzMywgMjQ3LCAyMjYsIAotICAgIDEyLCAyMDYsIDIzOSwgMjMzLCA4OSwgMjA4LCAxMzMsIDIxMywgMzMsIDI0NywgMjI2LCAxMiwgMjA2LCAyMzksIDIzMywgCi0gICAgMTIxLCAyMDgsIDEzMywgMjEzLCAzMywgMjQ3LCAyMjYsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMTksIDIwOCwgMTMzLCAyMTMsIAotICAgIDMzLCAyNDcsIDIyNiwgMTIsIDIwNiwgMjM5LCAyMzMsIDEwMywgMjA4LCAxMzMsIDIxMywgMzMsIDI0NywgMjI2LCAxMiwgCi0gICAgMjA2LCAyMzksIDIzMywgODYsIDIwOCwgMTMzLCAyMTMsIDMzLCAyNDcsIDIyNiwgMTIsIDIwNiwgMjM5LCAyMzMsIDk5LCAKLSAgICAyMDgsIDEzMywgMjEzLCAzMywgMjQ3LCAyMjYsIDEyLCAyMDYsIDIzOSwgMjMzLCA4MiwgMjA4LCAxMzMsIDIxMywgMzMsIAotICAgIDI0NywgMjI2LCAxMiwgMjA2LCAyMzksIDIzMywgMTEzLCAyMDgsIDEzMywgMjEzLCAzMywgMjQ3LCAyMjYsIDEyLCAyMDYsIAotICAgIDIzOSwgMjMzLCA5NSwgNDMsIDE4OSwgMjUxLCAxMTEsIDQzLCAxODksIDI1MSwgMTM2LCAyNDUsIDYyLCAyMzksIDE4NCwgCi0gICAgMjQ2LCAxNiwgMjA3LCAzLCAyMjIsIDgwLCAzLCAyMTEsIDkxLCAyMTAsIDIwOSwgMTE1LCAyMjQsIDExLCAyMTAsIDIwOCwgCi0gICAgMjQ2LCA0NiwgMjUwLCA1MCwgMjQyLCAxNywgMjEwLCAyMDcsIDExNSwgMjQ3LCAxODIsIDIxNiwgMTg5LCAyNDcsIDIwOCwgCi0gICAgMjUwLCA1MCwgMjIyLCA3OSwgMjA0LCA4MSwgMjA0LCA3NSwgMjA1LCAxODEsIDIyNCwgMTE4LCAyMDQsIDY1LCAyNDEsIAotICAgIDE4MCwgMjM4LCA0NiwgMjQwLCAyMjgsIDI0MSwgMTgwLCAyMzgsIDQ2LCAyNTAsIDIzOCwgMjQxLCAxODAsIDIzOCwgNDYsIAotICAgIDI1MCwgNjgsIDIzOCwgNDYsIDMsIDIyNCwgMjMxLCAyMjIsIDIxNCwgMjI0LCAzMCwgOTcsIDIwNCwgNjcsIDI0NSwgMTM5LCAKLSAgICAyMjQsIDMwLCA5NywgMjM5LCAyNDUsIDIxNywgNTYsIDIyNCwgMzAsIDk3LCAyMDQsIDY3LCAyMzgsIDc3LCAyMjQsIDMwLCAKLSAgICA5NywgMjM5LCAxMDIsIDIyNCwgMzAsIDk3LCAyMDQsIDk0LCAyMzgsIDc3LCAyMjQsIDMwLCA5NywgMjI4LCAxLCAyMTcsIAotICAgIDU2LCAyMjQsIDMwLCA5NywgMjA0LCA5NCwgMjQ1LCAxMzksIDIyNCwgMzAsIDk3LCAyNDUsIDEzOSwgMjI0LCAyOSwgMjIyLCAKLSAgICAyMTQsIDIyNCwgMzAsIDMsIDI0MCwgMTAyLCAyMzksIDI0NSwgMjE3LCA1NiwgMjI0LCAzMCwgMywgMjQwLCAxMDIsIDIyOCwgCi0gICAgMSwgMjE3LCA1NiwgMjI0LCAzMCwgMywgMjQwLCAxMDIsIDIzOSwgMTAyLCAyMjQsIDMwLCAzLCAyNDAsIDEwMiwgMjEwLCAKLSAgICAyMTUsIDMsIDI0MCwgMTAyLCAyMzgsIDQ0LCAyMTEsIDk0LCAyMTIsIDIzMywgMjExLCA5NCwgMjA5LCA4MCwgNjIsIDI0MiwgCi0gICAgNDksIDYxLCAyMTAsIDIxNCwgNjEsIDIxMCwgMjE1LCAzLCA1LCAyNDYsIDcsIDYxLCAyMTAsIDIxNSwgMjQ4LCAxMzUsIAotICAgIDI0NiwgNywgNjEsIDIxMCwgMjE1LCAyNDgsIDEzNSwgMjQ2LCA4LCAzLCAyMTYsIDE5MCwgMjQ2LCA4LCAzLCAyMTYsIDE5MCwgCi0gICAgMjQ2LCA4LCAzLCAyMTIsIDE5LCAyNDYsIDgsIDMsIDIyNywgMTMxLCAyNDYsIDgsIDMsIDIwOCwgMTM3LCAyMzksIDE4NSwgCi0gICAgMjA0LCAxNywgMjQ4LCAyNywgMjQwLCAxMDIsIDIzNiwgNDcsIDI0MywgMTAyLCAyMTAsIDIsIDI0NywgMTU4LCAyNDYsIAotICAgIDE0OCwgMjE0LCAxNjMsIDI0MCwgMjIyLCAyMDgsIDk1LCAyNDQsIDY5LCAyMDgsIDk1LCAyMTksIDEzNSwgMjA4LCA5NSwgCi0gICAgMjQ3LCA4NSwgMjM2LCA0NywgMjE4LCAyNDgsIDIwNywgMTkzLCAyNDYsIDE1MiwgMjQ4LCAzMCwgMjE1LCAyMDIsIDIzNywgCi0gICAgMiwgMjEwLCAyMTIsIDI0OCwgMzAsIDI0MSwgMTg0LCA3NiwgMjI1LCAxMzEsIDI0MSwgMTg0LCA3NiwgMjE2LCA1MiwgMjM3LCAKLSAgICAyOCwgMjM5LCAxNDcsIDIyNywgMjMwLCAyNDYsIDYsIDIyNSwgMTA0LCAyMjcsIDIyOSwgMjQwLCA4NSwgMjI3LCAyMjksIAotICAgIDIyNywgMjMwLCAyMzksIDE5MiwgMjMxLCA1MCwgMjA0LCAxNiwgMjIzLCAxOTYsIDIwOCwgMTY1LCAyNTAsIDMzLCAyMzgsIAotICAgIDUsIDIyNCwgMjQ5LCAyMDQsIDc5LCAyMDksIDIyNSwgMjI3LCAxOTksIDI0OCwgMjM5LCAyMTgsIDEyMCwgMjE2LCAxMzgsIAotICAgIDI1MCwgMTU3LCAyMzcsIDI0NCwgMjUwLCAxNTcsIDIxOSwgMjksIDIxOSwgMzEsIDI0NiwgMTUzLCAyMTEsIDQ1LCAyMzcsIAotICAgIDEzMiwgMjEyLCA1MSwgNzYsIDIxOCwgMTAwLCAyMjUsIDE2LCAyMjAsIDMyLCAyNDgsIDExLCAyMTgsIDIxLCAyMjcsIDIxMCwgCi0gICAgMjE2LCA1MywgMjQ1LCAxNDUsIDIxNiwgNTMsIDI0OCwgMjUxLCAyNDUsIDE3OSwgMjE2LCA1MiwgMjQ1LCA4OSwgMjUsIAotICAgIDIxNiwgNTIsIDIxMSwgNzksIDI0NywgMjM3LCAyMTEsIDIyNCwgMjQ3LCAyMTksIDIzOSwgMTI4LCAyMzksIDEyNCwgMjE1LCAKLSAgICAyMjMsIDIxMCwgMTY1LCAyMTgsIDIzLCAyNDQsIDE2MywgMjIwLCA3NSwgMjEwLCAxODMsIDIzOSwgMTI1LCAyMTIsIDIwNCwgCi0gICAgMjM5LCAyNDQsIDI0NywgNzksIDMsIDIxMCwgMTU4LCAyNDQsIDEzLCAyMTIsIDcsIDIzNSwgMTYzLCAyNDUsIDE0MywgMjEzLCAKLSAgICA1MSwgMjM1LCAxNjIsIDIzNSwgMTYzLCAyNDUsIDE0MywgMjQyLCA3MywgMjQ1LCAxNzgsIDI0NiwgMTE0LCAxNDIsIDI0NywgCi0gICAgNTEsIDIyNywgMzIsIDI0NSwgODEsIDIzNiwgMTE5LCAyMTgsIDI1LCAyMTIsIDIxNywgMjQ4LCAxMTYsIDI0NywgMjMzLCAKLSAgICAyMTgsIDI2LCA3NiwgMjM5LCAxNzQsIDI0NSwgMTc3LCAyMzksIDE2MywgMjUsIDIyOSwgMzMsIDIwOSwgMTg0LCAyMDQsIDMsIAotICAgIDIzNywgMTAyLCAyMTUsIDEzLCAyNDcsIDI1MCwgMjUsIDI0NSwgOTksIDIwNCwgMTMsIDIzOCwgNDksIDI0NSwgMjUxLCAKLSAgICAyMzgsIDQ5LCAyMDgsIDUxLCAyNDIsIDU0LCAyNDgsIDE0NiwgMjIzLCAyMzUsIDI0NiwgMjMsIDI0OCwgMTQ2LCAyMjMsIAotICAgIDIzNCwgMjQ5LCAyOCwgMjQ3LCAyNDksIDIzOSwgMTYzLCAyNSwgMjI5LCAzNCwgMywgMjE4LCA4OSwgMjQ3LCAyNTAsIDMsIAotICAgIDIxOCwgMzgsIDI0NSwgMTY3LCAyMTgsIDQwLCAyMTYsIDU0LCAyMDMsIDIyNywgMjE3LCAyNDIsIDI0OCwgNTgsIDI0NywgCi0gICAgNzgsIDIzMCwgMTc4LCAyNDYsIDEwNiwgMjA4LCA5NSwgMjQwLCA2OCwgMjQ2LCAxMDUsIDIzOSwgMjQ3LCAyMzksIDI0OCwgCi0gICAgMjExLCAyMjIsIDI0OCwgMjUwLCAyMTksIDY2LCAyMTgsIDM5LCAyNDUsIDIxNSwgMjQ4LCAyNTEsIDIwOSwgMjI5LCAyMDgsIAotICAgIDk1LCAyNDUsIDEyOCwgMjM5LCAyMTksIDIxOCwgMTIxLCAyNDQsIDY2LCAyMzAsIDE2OSwgMjQzLCA5NiwgMjQ3LCAyNywgCi0gICAgMjExLCA0NCwgMjA0LCAxNywgMjQ2LCAxMzAsIDIyNCwgMzAsIDIwNSwgMjE3LCAyNDYsIDIwNCwgMjE0LCAxOTYsIDIxNCwgCi0gICAgMjIzLCAyMzgsIDExLCAyNDcsIDQ4LCAyMzcsIDU2LCAzLCAyMDgsIDIxMSwgMjIwLCAzMiwgMjA5LCA5MywgMjI3LCAyMjIsIAotICAgIDI0NywgMjQzLCA3NiwgMjM5LCAxOTYsIDIyNCwgMTE5LCAyMjUsIDEzLCAyMTYsIDExMCwgMjE2LCA1NCwgMzEsIDIyOSwgCi0gICAgMTUwLCAzLCAyMzAsIDE3NywgMjExLCAxNSwgMjI0LCAxNTIsIDIyNywgMTY3LCAyMTIsIDQ5LCAyNDUsIDE4NCwgMjI5LCAKLSAgICAzMCwgMjQ4LCAxNTgsIDI1MCwgNzgsIDMxLCAyMjEsIDE1NSwgMjQ4LCAxNTgsIDI0NCwgMTksIDMxLCAyMjEsIDE1NSwgCi0gICAgMjQwLCA2LCAyMzksIDEzMywgMjUxLCAxMTQsIDIwOCwgMjUyLCAyNDcsIDI4LCAyMzYsIDQ5LCAyNDAsIDM1LCAyMDQsIDM2LCAKLSAgICAyMTUsIDIxMywgMjQ1LCAyNTIsIDIzOSwgMjM5LCAyMTgsIDU0LCAyNSwgMjM5LCAyNDMsIDIyNCwgMTUyLCAyMjMsIDI1MywgCi0gICAgMjQ3LCA2NSwgMjQ2LCA2NSwgMjM3LCA2MCwgMjUwLCA4NSwgMjE5LCAxMzgsIDIwOCwgMTQ1LCAyMzcsIDgzLCAyNDYsIDUxLCAKLSAgICAyMDksIDE0NCwgMjA4LCAyNTMsIDI0NiwgMzcsIDI0OCwgMjAsIDIxOCwgMjQxLCAyNTAsIDg0LCAyMDUsIDIyNiwgMjM4LCAKLSAgICAyMzgsIDI0MywgMTY3LCAyMzYsIDIzMCwgMjEyLCA0MiwgMjI1LCAxNzIsIDI0OCwgNjksIDIzOCwgMjM5LCAyNDMsIDIxMywgCi0gICAgMjQ3LCAyMzYsIDIzOSwgMTk4LCAyMTgsIDg4LCAyNDcsIDM2LCAzMSwgMjIxLCAxNjAsIDIyMywgMjI2LCAzMSwgMjIxLCAKLSAgICAxNTUsIDIxNCwgMjA5LCAyMzcsIDIxNCwgMzEsIDIyOSwgMTQ5LCAyMDgsIDI3LCAyMDUsIDIwNiwgMzEsIDIxNCwgMTg5LCAKLSAgICAyMTUsIDEyNiwgMjEyLCAyNDYsIDMsIDIxNCwgMjI2LCAyMDksIDE0OSwgMjE2LCAyMDksIDI1LCAyNDgsIDI1MSwgMjEyLCAKLSAgICA2NywgMjUsIDIxMiwgNjcsIDI0OCwgNCwgMjQ4LCAyMTMsIDI1LCAyMzYsIDExMiwgMjQ2LCAxNTQsIDIzOSwgMjI1LCAyMTIsIAotICAgIDE4LCAyMTUsIDEyNywgMjEwLCAxODgsIDIxMSwgMTg5LCAyMjUsIDEzLCAyMDgsIDUyLCAyMzYsIDUwLCAyMTYsIDIxMCwgCi0gICAgMjUwLCAyMzksIDIzOSwgMTcxLCAyMTUsIDEzOSwgMjM5LCAxNzEsIDIxMCwgMTYwLCAyMDQsIDUxLCAyMjcsIDEzNiwgMjM4LCAKLSAgICAzMCwgMjE2LCAyMTEsIDIyNCwgMTgsIDIxNiwgMjExLCAyNDcsIDM5LCAyNDUsIDEzNiwgMjQ4LCAyMTAsIDI1LCAyNDgsIAotICAgIDI1MSwgMjA1LCAxODAsIDI0MCwgMjUsIDIzNiwgMTMzLCAyMTEsIDczLCAyNSwgMjQ4LCAyNTEsIDIzNSwgMTYzLCAyMzYsIAotICAgIDEzMywgMjExLCA3MywgMjUsIDIxNywgMTg0LCAyMTAsIDksIDIwOSwgMTQ5LCAyMTksIDE1NiwgMjUsIDI0OCwgMjUxLCAKLSAgICAyMTIsIDIwLCAyNDcsIDQ0LCAyMjQsIDEyLCAyNDcsIDYzLCAyNDgsIDE2MSwgMywgMjA3LCAzLCAyNDcsIDE4NCwgMjQ1LCAKLSAgICAxOTgsIDIzNiwgMzksIDI0NywgMTgyLCAyNDYsIDQ1LCAyNDQsIDIzLCAyMzYsIDM5LCAyNDcsIDE4MywgMjQ2LCAzNSwgCi0gICAgMjQ3LCAxODMsIDI0NCwgMTUsIDI0NCwgMTYsIDIzMCwgMjA4LCAyMjMsIDY3LCAyMTksIDcyLCAyMTEsIDEwNCwgMjM2LCAKLSAgICAzOSwgMjQ3LCAxODMsIDIzNiwgMzksIDMsIDIzOCwgMjIyLCAyMjAsIDY3LCAyNDcsIDE4MywgMjMwLCAxNjksIDIxOCwgMzEsIAotICAgIDIyMCwgNjYsIDI0MCwgMjI3LCAyMTgsIDMxLCAyMjAsIDY2LCAyMzYsIDQ4LCAyNDgsIDIzNSwgMjUwLCAyMywgMjA5LCAKLSAgICAxNTcsIDIyNSwgMTcyLCAyMzYsIDQ0LCAyMjcsIDEsIDIzNiwgNDQsIDI0NSwgMTgyLCAyMTEsIDU3LCAyMTQsIDE5NSwgCi0gICAgMjQ0LCAyNiwgMjExLCA1NywgMjQwLCA5MSwgMjMwLCAxODksIDIyOCwgMTMsIDIzMCwgMTY5LCAyNDcsIDE5LCAyNDAsIAotICAgIDIyNywgMjQ3LCAxOSwgNjEsIDIxOSwgMywgNjIsIDIxOSwgMywgMjA0LCA3MywgNjEsIDIzOSwgMjI1LCAyMDQsIDczLCA2MiwgCi0gICAgMjM5LCAyMjUsIDIxNSwgMjAxLCA2MiwgMjE1LCAyMDEsIDIyOCwgMTA1LCAyNDksIDEyLCAyMTYsIDIwOSwgMjUsIDIxMiwgCi0gICAgMTgzLCAyNDcsIDI0MSwgMjUsIDQ3LCAyNTAsIDIzNCwgMjQxLCA5OCwgNjUsIDIzOSwgMjM0LCAyMDcsIDExOSwgMjQxLCAKLSAgICA5OCwgNjUsIDIzOSwgMjM0LCAyMDcsIDExNiwgMjQxLCA5OCwgNjUsIDIzOSwgMjM0LCAyMDcsIDExNCwgMjQxLCA5OCwgNjUsIAotICAgIDIzOSwgMjM0LCAyMDcsIDExMiwgMjQxLCA5OCwgNjUsIDIzOSwgMjM0LCAyMDcsIDExMCwgMjE2LCAxNzIsIDIyNCwgOSwgCi0gICAgMjE5LCAxOTMsIDIwNCwgODEsIDI0NywgMTg4LCAyNDUsIDE0OSwgMjA4LCAyNDUsIDIyNywgMTgzLCAyMTYsIDIxMiwgMjQ3LCAKLSAgICAxNywgMjQyLCA2MSwgMjQ1LCAxMzUsIDIwNCwgMzksIDIxMiwgMjYsIDIxMiwgMjQsIDIzNiwgNDksIDIxNiwgMTg0LCAyMzgsIAotICAgIDM1LCAyMTMsIDM3LCAyMjQsIDQ4LCAyMTUsIDIwNSwgMjQ2LCAxNDAsIDI0MywgMTAyLCAyMTgsIDEzMSwgMjQ4LCAyMSwgCi0gICAgMjQxLCAxMTQsIDIyMCwgNzgsIDIxMSwgMjAyLCAyMTMsIDMyLCAyNDcsIDE4NywgMjUwLCAxOTgsIDIzNiwgMTE4LCAyMjgsIAotICAgIDk4LCAyNDgsIDE0NCwgMjM5LCAyNDMsIDIwOCwgNTEsIDIzOSwgMjQzLCAyNDgsIDI4LCAyMDcsIDE3MSwgMjM3LCA4MSwgCi0gICAgMjQ2LCAxNDEsIDI0OSwgMjgsIDI0NiwgMTQxLCAyMzksIDExOCwgMjQ5LCAyOCwgMjQ2LCAxNDEsIDI0OCwgNjAsIDIxOSwgCi0gICAgNSwgMjI5LCAyNCwgMjE4LCA0NCwgMjQyLCA1MSwgMjQ3LCA2NywgMjQ5LCAxNywgMjQ3LCA2NywgMjQzLCA5NSwgMjI0LCAKLSAgICAxMCwgMjQwLCAxMDIsIDI0NSwgMTUwLCAyNDAsIDEwMiwgMjA4LCAyNDYsIDI0MCwgMTAyLCAyMTYsIDIxMywgMjQwLCAxMDIsIAotICAgIDI0NywgMTgsIDI0MCwgMTAyLCAyNDIsIDYyLCAyNDAsIDEwMiwgMjExLCAxODcsIDIwNCwgMzksIDIzNiwgNTAsIDI0MCwgCi0gICAgMTAyLCAyMjQsIDQ5LCAyNDAsIDEwMiwgMjQzLCAxMDMsIDI0MCwgMTAyLCAyMTgsIDEzMiwgMjQwLCAxMDIsIDIzOSwgMTIyLCAKLSAgICAyNDAsIDEwMiwgMjM3LCAxMjksIDI0MCwgMTAyLCAyMDMsIDI1MywgMjQwLCAxMDIsIDI0OCwgMTU2LCAyNDAsIDEwMiwgCi0gICAgMjE5LCAxMjAsIDI0MCwgMTAyLCAyMTgsIDEzMiwgMjIxLCAxNjcsIDIxOSwgNDYsIDIxNywgMjMwLCAyNDYsIDEyNSwgMjQwLCAKLSAgICAxODQsIDI0MCwgMTkxLCAyNDEsIDE4MywgMjIxLCAxNjcsIDIyNCwgNywgMjA4LCAxNTAsIDYxLCAxMTIsIDIxOCwgNTksIAotICAgIDI0OSwgMjMsIDIzMSwgMzUsIDYxLCAxMjEsIDIxOCwgNTksIDI0OSwgMjMsIDIzMSwgMzUsIDYxLCA0OSwgMjE4LCA1OSwgCi0gICAgMjQ5LCAyMywgMjMxLCAzNSwgNjEsIDUwLCAyMTgsIDU5LCAyNDksIDIzLCAyMzEsIDM1LCAyMzksIDIzNywgMjM3LCAxMjQsIAotICAgIDU0LCAyMDQsIDczLCAyMzcsIDEyNCwgNTQsIDIyMCwgNTIsIDIzNywgMTI0LCA1NCwgMjA5LCAyMCwgMTEyLCA1NCwgMjA5LCAKLSAgICAyMCwgMTIxLCA1NCwgMjQ2LCAzNiwgMjM3LCAxMDAsIDU0LCAxNzEsIDIzNywgMTAwLCA1NCwgMjQ1LCAxMjIsIDIwMywgCi0gICAgMjQ5LCAyMzcsIDgzLCAyNDAsIDE4NywgMjIyLCAyMzYsIDIxMCwgNjgsIDIzMCwgMTYwLCAyNDIsIDU2LCAyMjksIDg1LCAKLSAgICAyNDgsIDcxLCAyMDMsIDI0OSwgMjQ2LCA5LCAyMTcsIDE2NSwgMjM3LCAxMDMsIDIxOCwgMjIsIDIyNSwgMTEyLCAyMTIsIAotICAgIDIzOSwgMjUwLCA0NiwgMjEyLCAyMzksIDIzNiwgMjQzLCAyMTIsIDIzOSwgMjAzLCAyNDksIDIxNCwgMjQwLCAyMDMsIDI0OSwgCi0gICAgMjQ4LCAzLCAyMzksIDE2OSwgMjQ3LCAxNTAsIDIzMSwgNTAsIDIxMiwgMTM2LCAyNDcsIDE0OSwgMjMxLCA1MCwgMjEyLCAKLSAgICAxMzYsIDI0NywgMjMyLCAyMzgsIDYwLCAyMjUsIDEyMiwgMjAzLCAyNTAsIDI0MCwgODIsIDIyNSwgMTIzLCAyNSwgMjAzLCAKLSAgICAyNTEsIDIzNiwgMTI3LCAyMzcsIDk5LCAxMjAsIDIyNCwgMjQxLCAyMzYsIDEyNywgMjM3LCA5OSwgMTIwLCAyMDMsIDI0OCwgCi0gICAgMjM2LCAxMjcsIDIzNywgOTksIDIxOCwgNTEsIDIyMCwgNjUsIDIwMywgMjUxLCAzLCAyNDcsIDE2OCwgMjQxLCAxODEsIAotICAgIDI0NywgMjA5LCAzLCAyMDYsIDQ2LCAyMTgsIDIzMCwgMywgMjQ4LCAzMiwgMjM3LCAxNDUsIDIyNSwgMTIzLCAzLCAyMzcsIAotICAgIDIyNywgMjE4LCAxNjgsIDIyNSwgMTA4LCAyMjUsIDEyMywgMywgMjA3LCAxODAsIDIyMCwgNDQsIDIyNSwgMTIyLCAyMjAsIAotICAgIDQ0LCAyMDMsIDI1MCwgMjQ5LCAyNywgMjQ1LCAxOTksIDIwMywgMjM0LCAyMTcsIDIzNSwgMjMwLCAxNjksIDIyMCwgNjEsIAotICAgIDIzMCwgMTY5LCAyMzgsIDM0LCAyMzgsIDg5LCAyNDksIDI4LCAyNTAsIDIyMSwgMjQwLCAxOTYsIDI1MSwgMjAsIDI1MSwgCi0gICAgMjEsIDIyNCwgMzksIDIzMSwgNTUsIDIxMiwgNjIsIDIzMSwgMjUsIDI0NCwgMTIsIDIxOCwgMjI5LCAyMzcsIDIyMSwgMjQ0LCAKLSAgICAxNjcsIDIyNywgOTcsIDIyMywgOTEsIDIxOCwgNTAsIDI0MCwgMTAzLCAyMjUsIDc0LCAyMzcsIDE0NCwgMjQ4LCAyMjksIAotICAgIDIxOCwgNTMsIDIxMCwgODgsIDIxOCwgMTI0LCAyMjksIDY3LCA4MiwgMjI3LCAxLCAyMjcsIDE3NCwgMjE1LCAyNTIsIDIzOCwgCi0gICAgMTgwLCAyMTEsIDYzLCAyMjksIDY2LCAyNDcsIDI0MiwgMjQ1LCAxNTIsIDMsIDIzNywgNTUsIDIwNCwgNTgsIDI0OCwgMTU0LCAKLSAgICAyMzcsIDU1LCAyNDcsIDIwMywgMjM3LCA1NSwgMTIwLCAyMzcsIDUzLCAyMTEsIDIyMCwgMjM3LCA1NSwgMjM3LCAyMzcsIAotICAgIDIzNywgNTUsIDIzNywgNTYsIDMsIDQ3LCAyNDgsIDI2LCAyMzcsIDU1LCAyMzcsIDI0NCwgMjM3LCA1NSwgMjAzLCA0NSwgCi0gICAgMjM3LCA1NSwgMjE3LCAxNjYsIDIzNywgNTUsIDIzNywgNTYsIDMsIDIxNiwgNTQsIDIxNiwgNjcsIDIzNywgNTMsIDIzNywgCi0gICAgNTYsIDI0NCwgNjYsIDI0MywgMjIyLCAyMTMsIDYzLCAzLCAzNCwgNzAsIDIzMSwgNiwgMjQxLCAxMTcsIDE1NywgMjQ3LCAKLSAgICAxODAsIDI1MCwgMjIwLCA5NywgMjQ4LCAxMiwgMjEyLCA1NCwgOTcsIDI0NSwgMjQ0LCA5NywgMjExLCAxOTYsIDIxMCwgCi0gICAgMTY3LCA5NywgMjQyLCA0OSwgMjQ0LCAxNDUsIDk3LCAyMTgsIDEyNSwgNzYsIDIxOCwgNDUsIDIzOSwgMjEwLCAyNDgsIDgzLCAKLSAgICAyNDMsIDEzMywgOTcsIDIxMSwgMjEyLCAyNDgsIDI1MCwgMjA5LCAzOCwgMjQ4LCAyNTAsIDYxLCAyMzksIDE5NywgMjM2LCAKLSAgICAxMiwgMjE4LCA1NywgOTcsIDIyNCwgNTMsIDI0OSwgMTAsIDI0NSwgOTIsIDI0MCwgMjE0LCA3OSwgMjQzLCA5NywgNTQsIAotICAgIDI0NSwgMTQxLCAyNDcsIDM3LCAyNDgsIDIzNCwgMywgMjAzLCA0MywgNTQsIDI0OCwgMjM0LCAzLCAyNDMsIDk3LCA1NCwgCi0gICAgMjQ4LCAyMzQsIDMsIDI0MCwgMjMwLCA1NCwgMjQ4LCAyMzQsIDMsIDIxOCwgMjAsIDU0LCAyMjQsIDUzLCAzLCAyMDQsIDExLCAKLSAgICAyNDYsIDE3OCwgMywgMTc3LCAyMDgsIDkxLCAyNSwgMjAzLCA0MywgNTQsIDIxNCwgMTc0LCAyMTgsIDIyOCwgMjQ1LCAyMjAsIAotICAgIDI0NywgMjA3LCAyMjQsIDEwOCwgMjM5LCAyMDIsIDI0MywgMTU0LCAyMTksIDI0OCwgMjQzLCAxNTksIDI0MiwgMTIsIDI0MCwgCi0gICAgMTEsIDIzOSwgMTgyLCAxNzEsIDI0MCwgMTEsIDIzOSwgMTgyLCAyMTksIDE1NCwgMywgMjQ1LCA5NSwgMjE5LCAxNTQsIAotICAgIDI0MCwgOTUsIDIwNiwgMjI0LCAyNDcsIDcyLCAyMDksIDE4MywgMjQ3LCA3MiwgMjQ3LCAzOCwgMjMxLCAzNSwgMjQ2LCAKLSAgICAxNzgsIDMsIDE3NywgMjA4LCA5MCwgMjQ2LCAxNzgsIDMsIDE4MywgMjA4LCA5MCwgMjQ4LCAyMzEsIDI0NiwgMTc3LCAyNDYsIAotICAgIDIyLCAyMTcsIDE2MSwgMjE1LCAxOTEsIDIxNywgMTYxLCAyMTksIDk0LCAyMTEsIDUzLCAyMTUsIDEzMywgMjA4LCA4MiwgCi0gICAgMjE1LCAxMzMsIDI0OCwgOCwgMjEwLCA3LCAyMjcsIDIyNywgMjIxLCAxNTgsIDIyMSwgMTU5LCAzLCAyNDQsIDY1LCAyNDUsIAotICAgIDE1MSwgMjQ2LCAxNiwgMjQ4LCA5LCAxNzEsIDI0OCwgOSwgMjM3LCAyNDQsIDI0OCwgOSwgMjQ4LCAyNiwgMjQ4LCA5LCAKLSAgICAyMTksIDI0MywgMjQ4LCA5LCAyNDgsIDYsIDIyMywgODUsIDI0OSwgMTQsIDIxNCwgMTgyLCAyMjQsIDI0MiwgMjA5LCAxNjIsIAotICAgIDIxNiwgMTUyLCAyMTksIDE1MiwgMjQwLCA2NSwgMjI1LCAxNzIsIDIxNCwgMjIyLCAyNTAsIDE5NSwgMjE3LCAxODUsIDI1MSwgCi0gICAgMTE5LCAyMjcsIDMsIDI0NiwgMTYyLCAyMjQsIDI1NCwgMjE5LCAyMTAsIDIwOCwgOTgsIDIzMSwgNDYsIDIwOCwgOTgsIAotICAgIDIxOSwgMTYxLCAyNDEsIDIzNiwgOTcsIDIzMSwgNDMsIDI0MSwgNTcsIDI0MSwgNTgsIDMsIDE4MywgNTMsIDU1LCAyNDYsIAotICAgIDE2LCAyMjUsIDEzNywgMywgMjI2LCAyNDksIDIzOSwgMjI1LCAyNDYsIDE2LCAyMjUsIDEzNywgMywgMjE2LCAxODgsIDIzOSwgCi0gICAgMjI1LCAxNzEsIDIyNSwgMTM3LCAzLCAyMTYsIDE4OCwgMjM5LCAyMjUsIDE3MSwgMjI1LCAxMzcsIDMsIDIyNiwgMjQ5LCAKLSAgICAyMzksIDIyNSwgMjE4LCAyOCwgMjE4LCAyOSwgMjM2LCA1MywgMjIyLCAyMTAsIDIyNCwgODAsIDIxOCwgMTc2LCAyMjQsIAotICAgIDgwLCAyMTgsIDE3NywgMywgODYsIDUzLCAyNTAsIDUwLCAyMjcsIDIyMiwgMjA1LCAyMjksIDIyNCwgNzksIDIyNCwgODAsIAotICAgIDIxOCwgMTc3LCAyMjAsIDY4LCAyMjEsIDE5MiwgMjI0LCA4MCwgMjE4LCAxNzUsIDI1MCwgMTk2LCAzLCAyNDgsIDIyMCwgCi0gICAgMjQ3LCA2NSwgMjQ3LCA2NiwgMywgMjM5LCAyMTgsIDIwNSwgMjI2LCAyNDcsIDY1LCAyMDksIDE1OSwgMjE2LCAyMDQsIAotICAgIDIwNSwgMjI1LCAyNDAsIDYsIDIxNywgMjE3LCAyMTgsIDM1LCAyMTEsIDc0LCAyMTcsIDI1NCwgMjQ4LCAxNjAsIDIwNywgCi0gICAgMTM4LCA4NiwgMjUwLCA5MSwgMjQ2LCAxOCwgODYsIDI1LCA5NiwgMTcxLCAyNDYsIDYyLCAyNTAsIDkxLCAyNDYsIDE4LCAKLSAgICA4NiwgMjUsIDk2LCAxNzEsIDI0NiwgNjIsIDI1MCwgOTIsIDMsIDQzLCAxMTgsIDIxOSwgMTk5LCAyNDYsIDE4LCAxODMsIAotICAgIDI1LCAxNzcsIDE3MSwgMjQ2LCA2MiwgMjUwLCA5MSwgMjUwLCAxOTQsIDE4MywgMjUsIDE3NywgMTcxLCAyNDYsIDYyLCAKLSAgICAyNTAsIDkxLCAxMjQsIDI0NywgMjA2LCA5NywgMTM4LCAyNDcsIDIwNiwgOTcsIDIxMSwgMjE3LCAzLCAyNDcsIDU4LCA5NSwgCi0gICAgMjExLCAyMTYsIDIxMSwgMjE3LCAzLCAxMTgsIDIxMSwgMjQxLCAyMDQsIDc1LCAyMTEsIDIxNywgMywgMTI2LCAyMTEsIAotICAgIDI0MSwgMjA0LCA3NCwgMjQ4LCAyMDMsIDI0MSwgMTE3LCAyMTgsIDgxLCAyMjcsIDIxNywgMjI1LCAxNDksIDIzOCwgNDksIAotICAgIDIxNiwgMTEsIDIyNSwgMTQ5LCAyMzgsIDQ5LCAyMjcsIDQzLCAzLCAyMzEsIDE3LCAyMTksIDksIDI0NiwgMTYsIDIyNywgCi0gICAgNDMsIDMsIDIyOSwgMTUxLCAyMjksIDE1MSwgMjI3LCA0MiwgMTcxLCAyMjcsIDQyLCAyNDgsIDEyOCwgMjQ4LCAxMjksIDMsIAotICAgIDI0NywgNTgsIDk1LCAyNDgsIDcsIDIyNywgMTA1LCA5NywgMjE2LCAyMDUsIDI0NywgMTQ1LCAyNDksIDI2LCAzLCA5NiwgCi0gICAgNTMsIDU1LCAyNDEsIDg0LCAzLCA5NiwgNTMsIDU1LCAyMjAsIDMyLCAzLCAyNDAsIDIxMiwgMTMxLCAzLCA0OSwgNTAsIDUzLCAKLSAgICA1NSwgMjExLCAyNDksIDMsIDg2LCA1MywgNTUsIDIwOCwgMTQ1LCAzLCAxNzcsIDUzLCA1NSwgMjIxLCAxOTIsIDExOCwgCi0gICAgMjA2LCAyNDgsIDI0MSwgMTQxLCA5NywgMjI5LCAxNDgsIDIwOSwgMTUyLCAyMzEsIDExLCAxNiwgMzUsIDgsIDYsIDIyNywgCi0gICAgMTczLCAyMzEsIDExLCAxNiwgMzUsIDgsIDUsIDIyNywgMTczLCAyMzEsIDExLCAxNiwgMzUsIDIyMSwgNDUsIDIzMSwgMTEsIAotICAgIDE2LCAzNSwgMjEwLCAxMDIsIDIzMSwgMTEsIDE2LCAzNSwgOCwgMjI3LCAxNzMsIDIzOSwgMjQ5LCAyNDEsIDExNywgMjA4LCAKLSAgICAxNDAsIDIwMywgMjI1LCAyMzcsIDEzMCwgMjIxLCAyOCwgMjUsIDI0OCwgMTQsIDIzNiwgMTM0LCAyMTgsIDEwNiwgMjI0LCAKLSAgICAxNTEsIDIwOSwgMTYwLCAyNDUsIDExMiwgMjQ4LCAyNTEsIDIxMiwgODgsIDIxOCwgNjEsIDIxMSwgOTUsIDMsIDEwMSwgCi0gICAgMjQzLCA4NSwgMjMwLCAxNjksIDE2LCAzNSwgMjQ4LCAxNDEsIDIwOCwgODAsIDI0MSwgMTAwLCA2MiwgNTEsIDI0NywgMTQ1LCAKLSAgICA2MSwgNTEsIDI0NywgMTQ1LCAyMjgsIDgsIDIxNiwgMTM4LCAyNDYsIDYxLCAyMjgsIDgsIDI0OCwgMjYsIDI0NiwgNjEsIAotICAgIDIyOCwgOCwgMjE5LCAyNDMsIDI0MywgMjIxLCAyMjgsIDgsIDI0OCwgMjYsIDI0MywgMjIxLCA1LCAyMTksIDI0MywgMjQzLCAKLSAgICAyMjEsIDUsIDI0OCwgMjYsIDI0MywgMjIxLCAyMDYsIDIyMywgMjE2LCAxMzgsIDIwOCwgODUsIDI0MiwgNjksIDIxNiwgCi0gICAgMTM4LCAyMDgsIDg1LCAyMDYsIDIyMywgNSwgMjE2LCAxMzgsIDIwOCwgODUsIDI0MiwgNjksIDUsIDIxNiwgMTM4LCAyMDgsIAotICAgIDg1LCAyMjYsIDI1MSwgNTAsIDIxMywgNzcsIDYxLCAyNDYsIDYxLCAyMDYsIDIyMSwgNTAsIDIxMywgNzcsIDYxLCAyNDYsIAotICAgIDYxLCA0MywgMjQ1LCAxMzEsIDIxOCwgNDgsIDI0NSwgMTMxLCAyMTgsIDQ5LCAzLCAyMzcsIDEzNiwgNTYsIDI0NSwgMTMxLCAKLSAgICAyMTgsIDQ4LCAyMjEsIDE2MiwgNDksIDIxMywgMTQ2LCAzLCAxMjYsIDI0MywgODMsIDIyMSwgMTYyLCA1MCwgMjEzLCAxNDYsIAotICAgIDMsIDEyNiwgMjQzLCA4MywgMTYsIDM1LCAyMjUsIDg3LCAyNDYsIDE4NCwgNjEsIDgsIDI0NSwgMTMwLCA3OSwgOCwgMjQ1LCAKLSAgICAxMzAsIDI0NiwgMjIyLCAyNDUsIDEzMCwgMjIwLCA0MCwgOTcsIDI0MiwgNzIsIDc2LCAyMTksIDMyLCAyMzAsIDM5LCAyMjQsIAotICAgIDIyLCAyMTAsIDk2LCAyMjQsIDIzNywgMywgMjIyLCA2NCwgMjQ3LCAyMjIsIDI0NywgMjM4LCA3NiwgMjM1LCAyMjIsIDI0NiwgCi0gICAgMjAsIDI0MCwgMTAzLCAxMTgsIDIyMCwgODMsIDI0NiwgMjAsIDI0MCwgMTAzLCAxMjAsIDIyMCwgODMsIDI0NiwgMjAsIAotICAgIDI0MCwgMTAzLCAxMjYsIDIyMCwgODMsIDI0NiwgMjAsIDI0MCwgMTAzLCAyMzksIDE0NywgMjIwLCA4MywgMjQ2LCAyMCwgCi0gICAgMjQwLCAxMDMsIDIzOSwgMjMzLCAyMjAsIDgzLCAyNDYsIDIwLCAyNDAsIDEwMywgMjEyLCA4OCwgMjIwLCA4MywgMjQ2LCAKLSAgICAyMCwgMjQwLCAxMDMsIDIxMywgMTEyLCAyMjAsIDgzLCAyNDYsIDIwLCAyNDAsIDEwMywgMjQxLCAxNDMsIDIyMCwgODMsIAotICAgIDI0NiwgMjAsIDI0MCwgMTAzLCAyMjIsIDY0LCAyMjAsIDgzLCAyNDYsIDIwLCAyNDAsIDEwMywgMjA5LCAxNTMsIDIyMCwgCi0gICAgODMsIDI0NiwgMjAsIDI0MCwgMTAzLCAyNDEsIDExMywgMjIwLCA4MywgMjQ2LCAyMCwgMjQwLCAxMDMsIDIwNywgMTU1LCAKLSAgICAyMjAsIDgzLCAyNDYsIDIwLCAyNDAsIDEwMywgMjIwLCAyNywgMjQ2LCAyMCwgMjQwLCAxMDMsIDIwNywgMTMyLCAyNDYsIAotICAgIDIwLCAyNDAsIDEwMywgMjA5LCAyNiwgMjQ2LCAyMCwgMjQwLCAxMDMsIDIzOSwgMTQzLCAyNDYsIDIwLCAyNDAsIDEwMywgCi0gICAgMjM5LCAyMzEsIDI0NiwgMjAsIDI0MCwgMTAzLCAyMTIsIDg0LCAyNDYsIDIwLCAyNDAsIDEwMywgMjEzLCAxMTAsIDI0NiwgCi0gICAgMjAsIDI0MCwgMTAzLCAyNDEsIDE0MiwgMjQ2LCAyMCwgMjQwLCAxMDMsIDIyMiwgNjIsIDI0NiwgMjAsIDI0MCwgMTAzLCAKLSAgICAyMDksIDE1MSwgMjQ2LCAyMCwgMjQwLCAxMDMsIDI0MSwgMTExLCAyNDYsIDIwLCAyNDAsIDEwMywgMjA3LCAxNTMsIDUwLCAKLSAgICAyMTEsIDIxNiwgNTAsIDIxMSwgMjE3LCAzLCAxMTgsIDIxMSwgMjQxLCAyMDQsIDc1LCA1MCwgMjExLCAyMTcsIDMsIDEyNiwgCi0gICAgMjExLCAyNDEsIDIwNCwgNzQsIDI0NywgMTc1LCAyNDcsIDE3NiwgMywgMjExLCAyNDEsIDIwNCwgNzQsIDIxNSwgMjUxLCAKLSAgICAyNDgsIDEyOCwgMjQ4LCA5LCAyNDcsIDU2LCAyMjUsIDEwOSwgMjQ2LCAxOSwgNjIsIDIxMiwgNjMsIDI1LCAyNDUsIDEyOSwgCi0gICAgMjIxLCAxOTIsIDIxOCwgMTEyLCAyMzYsIDEyNiwgMjI1LCAxMjMsIDIzMSwgNTAsIDI0NywgMTUyLCAyMTAsIDIyOCwgMjI3LCAKLSAgICAxNjYsIDIxMiwgNTIsIDIxOSwgMjQ1LCAyMTEsIDE3OCwgMjQ0LCAxNTAsIDIxMCwgMjEwLCAyMTEsIDIwNSwgMjExLCAyMDYsIAotICAgIDIwNCwgNTksIDIzMCwgODMsIDQ5LCAyMzcsIDEyNCwgMjA5LCAxNjIsIDIxNiwgMTUyLCAyMDksIDE2MiwgMjE2LCAxNTMsIAotICAgIDMsIDIxOSwgMTUzLCA1MCwgMjM3LCAxMjQsIDIwOSwgMTYyLCAyMTYsIDE1MiwgNjEsIDIwOCwgMTI2LCAyMDksIDE2MSwgCi0gICAgNjIsIDIwOCwgMTI2LCAyMDksIDE2MSwgMjA5LCAxNjIsIDIyMCwgMzIsIDIwOCwgMTQ1LCA3NiwgMjI0LCA3NiwgMjQ2LCAKLSAgICA0MCwgMjI0LCA4MCwgMjE4LCAxNzYsIDI0OSwgMjYsIDc2LCAyNDEsIDU3LCAyMTEsIDEwMCwgMjQxLCA1NywgMjQxLCA1OCwgCi0gICAgMywgMjI3LCAxMzEsIDIzOSwgMTg5LCAyNDEsIDU3LCAyMTksIDEwLCAxMTUsIDIxMSwgMTAwLCAyNDEsIDU3LCAyMjcsIAotICAgIDEwNCwgMjE5LCA5MywgNjIsIDIxNywgMTYxLCAyMjYsIDI1MSwgNDksIDIxOSwgOCwgMjI2LCAyNTEsIDQ5LCAyNDgsIDI0NiwgCi0gICAgMjE5LCA5LCAyMjYsIDI1MSwgNDksIDIzOSwgMTQ5LCAyMTksIDksIDIyNiwgMjUxLCA0OSwgMjE5LCAxNDcsIDIyNiwgMjUxLCAKLSAgICA0OSwgMjQ1LCAxNDQsIDQ5LCAyMDMsIDIyMCwgMjM3LCAxMjMsIDIwNywgMTc0LCAyMjAsIDUyLCAyMzcsIDEyNCwgNTQsIAotICAgIDIxNiwgMTg4LCAyMzcsIDEyNCwgMywgMjM5LCAyNTQsIDIxMSwgMTk1LCAyMTYsIDczLCAyMTYsIDE4OCwgMjM3LCAxMjQsIAotICAgIDMsIDIzOSwgMjU0LCAyMTEsIDE5NSwgMjE2LCA3MywgMjA5LCAyMCwgMTEyLCA1NCwgMjE2LCA3MywgMjA5LCAyMCwgMTIxLCAKLSAgICA1NCwgMjE2LCA3MywgMjA1LCAyMjgsIDIzNywgMTIzLCAyMTYsIDczLCAyMzcsIDEyNCwgMywgMTAxLCAyNDAsIDMsIDI0MCwgCi0gICAgMjAxLCAyMTYsIDE4OCwgMjM3LCAxMjQsIDMsIDIxOSwgNzEsIDI0OCwgMTA0LCAxMDEsIDI1LCAyMTUsIDI1MywgMjM5LCAKLSAgICAyNTMsIDYxLCAxMjEsIDIxOCwgNTksIDQ5LCAyMzcsIDEyNCwgMjMxLCAzNSwgMjEyLCAxNTQsIDYxLCA0OSwgMjE4LCA1OSwgCi0gICAgMjMxLCAzNSwgMjEyLCAxNTQsIDYxLCA1MCwgMjE4LCA1OSwgMjMxLCAzNSwgMjEyLCAxNTQsIDYyLCA0OSwgMjE4LCA1OSwgCi0gICAgMjMxLCAzNSwgMjEyLCAxNTQsIDYyLCA1MCwgMjE4LCA1OSwgMjMxLCAzNSwgNjIsIDQ5LCAyMTgsIDU5LCAyNDksIDIzLCAKLSAgICAyMzEsIDM1LCA2MiwgNTAsIDIxOCwgNTksIDI0OSwgMjMsIDIzMSwgMzUsIDIxMiwgMTU0LCA2MSwgMTEyLCAyMTgsIDU5LCAKLSAgICAyMzEsIDM1LCAyMTIsIDE1NCwgNjEsIDEyMSwgMjE4LCA1OSwgMjMxLCAzNSwgMjEyLCAxNTQsIDYyLCAxMTIsIDIxOCwgNTksIAotICAgIDIzMSwgMzUsIDIxMiwgMTU0LCA2MiwgMTIxLCAyMTgsIDU5LCAyMzEsIDM1LCA2MiwgMTEyLCAyMTgsIDU5LCAyNDksIDIzLCAKLSAgICAyMzEsIDM1LCA2MiwgMTIxLCAyMTgsIDU5LCAyNDksIDIzLCAyMzEsIDM1LCAyNDQsIDExLCAyNDUsIDIyMCwgMjI5LCAxNTAsIAotICAgIDI1LCAyMjQsIDksIDEyNiwgMjIyLCAyMTgsIDI0NSwgMjE5LCAyMTcsIDIzMSwgMjE4LCA2NywgMjQ3LCA3NCwgNjIsIDIzNywgCi0gICAgOTEsIDIxMywgMzMsIDIzOSwgMjAyLCAyNDMsIDE1NCwgNjEsIDIzNywgOTEsIDIxMywgMzMsIDIzOSwgMjAyLCAyNDMsIAotICAgIDE1NCwgMjEyLCA3LCAyMTMsIDMzLCAyMzksIDIwMiwgMjQzLCAxNTQsIDIwOSwgMjIxLCAyNDcsIDIyLCAyMDQsIDYsIDIyOSwgCi0gICAgMTQ5LCAxMTgsIDI0NywgMTQ2LCAyMjQsIDksIDEyMCwgMjQ3LCAxNDYsIDIyNCwgOSwgMTI2LCAyNDcsIDE0NiwgMjI0LCA5LCAKLSAgICAyMDgsIDExNywgMzgsIDIxOCwgMjI4LCAyNDUsIDIyMCwgMjM3LCA5MSwgMjQzLCAxNTQsIDIxNCwgMTg0LCAyMTcsIDIzMiwgCi0gICAgMjM1LCAxNTYsIDI0MCwgNjUsIDIzNSwgMTU2LCAyMTksIDI0OCwgMjQzLCAxNjAsIDIzNSwgMTU2LCAyNDMsIDEwNywgMywgCi0gICAgMjA5LCAxMTIsIDI0MywgMTA3LCAzLCAyMDksIDExMywgMjUsIDIxOCwgMTYxLCAyNDMsIDEwNywgMywgMjE4LCAxNjEsIAotICAgIDIzOSwgMTM1LCAzLCAyMTgsIDE2MSwgMjM5LCAxMzUsIDMsIDIwOCwgMjI1LCAyMzksIDEzNSwgMywgMjUwLCAyMzIsIDIwMywgCi0gICAgMTk2LCA2MiwgMjM5LCAxODIsIDIzOSwgMTgyLCAxNzEsIDIzOSwgMTgyLCAyNDcsIDM4LCAxMjIsIDI0MywgMTQwLCAyNDcsIAotICAgIDM4LCAyNDAsIDExLCAyNDcsIDIzMywgMjQwLCAxMSwgMjQ3LCA4NywgMjQxLCA5NCwgMjIxLCAxNjAsIDI0MSwgOTQsIDIyMSwgCi0gICAgMTYxLCAyMTksIDE1MywgMjQxLCA5NCwgMjIxLCAxNjEsIDIxOSwgMTU5LCAyMjEsIDE2MCwgMjIxLCAxNjEsIDIxOSwgMTUzLCAKLSAgICAyMjEsIDE2MSwgMjE5LCAxNTksIDI0MSwgOTQsIDI0MywgMTA2LCAyNDEsIDk0LCAyMTksIDE1MywgMjQxLCA5NCwgMjE5LCAKLSAgICAxNTEsIDI0MywgMTA2LCAyMTksIDE1MywgMjE5LCAxNTEsIDIwNCwgODUsIDIxMSwgMjAyLCAyMjEsIDE2MSwgMjE5LCAxNTksIAotICAgIDIxMSwgMjAyLCAyNDcsIDczLCAyMTksIDE1OSwgMjQ0LCAxMSwgMjA0LCAxNSwgMjI0LCAxMDUsIDIyNSwgNjQsIDIxOSwgCi0gICAgMjAxLCAyNDYsIDE4LCA1MCwgMjUsIDQ5LCAyMTMsIDE0NiwgMjUwLCA5MSwgMjQ3LCA1OCwgMjAzLCAxOTYsIDIzMSwgNDEsIAotICAgIDIzOSwgMTc2LCAyMTIsIDcyLCA5NywgMjQ0LCA2NCwgMjM5LCAxNzYsIDIxMiwgNzIsIDk3LCAyNDUsIDIyMSwgMzgsIDIyOSwgCi0gICAgMTUxLCAyMTUsIDIxNCwgMjIyLCAyMTAsIDIxOSwgMTU0LCAzLCA0MywgMjA5LCAxMTIsIDIxMSwgNjUsIDI0NiwgMTc3LCAKLSAgICAyNDQsIDE5NiwgMjI5LCAzMywgMjI3LCA5OCwgMjExLCAyMTUsIDIzNywgNjUsIDIzMSwgNTAsIDIxMiwgMTM2LCAxMjYsIAotICAgIDIxNiwgMTYzLCA1NSwgMTI2LCAyMTYsIDE2MywgNTYsIDEyNiwgMjE2LCAxNjMsIDIyNywgMjIyLCAxMjYsIDIxNiwgMTYzLCAKLSAgICAyMTYsIDE2LCA0OSwgMjExLCAyMTIsIDI0NywgMTkyLCA1MCwgMjExLCAyMTIsIDI0NywgMTkyLCAxMjAsIDIxMSwgMjEyLCAKLSAgICAyNDcsIDE5MSwgMTI2LCAyMTEsIDIxMiwgMjQ3LCAxOTEsIDQ5LCAyMDksIDM4LCAyNDcsIDE5MiwgNTAsIDIwOSwgMzgsIAotICAgIDI0NywgMTkyLCA0OSwgMjUwLCAyMjAsIDI0NywgMTkyLCA1MCwgMjUwLCAyMjAsIDI0NywgMTkyLCAyMjQsIDM0LCAyNDcsIAotICAgIDE5MiwgMjI3LCAxMzIsIDIyNCwgMzQsIDI0NywgMTkyLCAyMjcsIDEzMiwgMjI0LCAzMywgMjQ4LCAyNDgsIDk4LCAzLCAKLSAgICAyNDgsIDI0NywgMjQ4LCAyNDgsIDEzMiwgMjAzLCAxOTYsIDI0OCwgMjQ4LCA5OCwgMywgMTMyLCAyMDMsIDE5NiwgMjQ4LCAKLSAgICAyNDgsIDI2LCAxMzIsIDIwMywgMTk2LCAyNDgsIDI0OCwgOTgsIDMsIDI2LCAxMzIsIDIwMywgMTk2LCAxNTcsIDI0NiwgCi0gICAgMTY5LCA4MiwgMjQ4LCAyNDgsIDk4LCAzLCAyNiwgMjQ2LCAxNjgsIDIwMywgMjMzLCAyMjUsIDEwNiwgMjI0LCAxNCwgMjM5LCAKLSAgICAxMDMsIDIwOCwgMTY3LCAyMDgsIDEyMiwgMjExLCA4NiwgNzYsIDIyNywgMTQ2LCAyMTIsIDEzNywgNzYsIDIzMCwgMTcwLCAKLSAgICAyMjMsIDI1MSwgMjM3LCAyNDEsIDI0MCwgMTAyLCAyMzcsIDI0MSwgMjQwLCAxMDMsIDMsIDIxMiwgMzAsIDI0MCwgMTg0LCAKLSAgICAyNDAsIDEwMywgMywgMjA5LCAxNzksIDc2LCAyMzAsIDg1LCAyMTIsIDMwLCAyNDAsIDEwMywgMywgMTcxLCAyMjQsIDcsIAotICAgIDIxMiwgMzAsIDI0MCwgMTAzLCAzLCAxNzEsIDIyNCwgOCwgMjUsIDIxMiwgMzAsIDI0MCwgMTg0LCAyMTIsIDMwLCAyNDAsIAotICAgIDEwMywgMywgMTcxLCAyMjQsIDgsIDI1LCAyNDUsIDI0NiwgMjEwLCAxNjYsIDIxMiwgMzAsIDI0MCwgMTAzLCAzLCAxNzEsIAotICAgIDIyNCwgOCwgMjUsIDIwOCwgMjQzLCAyNDAsIDE4NCwgMjEyLCAzMCwgMjQwLCAxMDMsIDMsIDIzNywgMTM1LCAyMTIsIDMwLCAKLSAgICAyNDAsIDEwMywgMywgMjM2LCA1MiwgMjA0LCA4LCAyNDAsIDEwMiwgMjEyLCAzMCwgMjQwLCAxMDMsIDMsIDIxMiwgMzAsIAotICAgIDI0MCwgMTg0LCAyNDAsIDEwMywgMjE0LCAyMTQsIDI0NCwgNDUsIDIzOSwgMTc0LCAyMTYsIDExMywgMjQwLCAxMDIsIDIxMiwgCi0gICAgMzAsIDI0MCwgMTAzLCAzLCAyMzcsIDU0LCAyNDAsIDE4NCwgMjEyLCAzMCwgMjQwLCAxMDMsIDMsIDIxMCwgMjEwLCAyMTIsIAotICAgIDI5LCAyNDAsIDEwMiwgMjIyLCAyMTYsIDI0MCwgMTAyLCAyNDAsIDIwMywgMjQwLCAxMDIsIDIwNiwgMjUzLCAyNDAsIDEwMiwgCi0gICAgMjQwLCAxMDMsIDMsIDI0NSwgMjQ2LCAyMTAsIDE2NiwgMjE5LCAxLCAyNDAsIDEwMiwgMjQ1LCAyMTIsIDI0MCwgMTAyLCAKLSAgICAyNDUsIDIxMywgMjQwLCAxMDIsIDIyOSwgNjUsIDI0MCwgMTAyLCAyNDAsIDEwMywgMjA5LCAyMywgMzQsIDIyOSwgNjYsIAotICAgIDIyOSwgNjUsIDI0MCwgMTAzLCAzLCAyMTIsIDMwLCAyNDAsIDE4NCwgMjI5LCA2NSwgMjQwLCAxMDMsIDMsIDI0NiwgMTYsIAotICAgIDI0MCwgMTg0LCAyNDAsIDEwMywgMywgMjExLCAxNiwgMjA4LCAxNTAsIDI0MCwgMTAzLCAzLCAyMTEsIDE2LCAyMDgsIDE1MSwgCi0gICAgMjUsIDIwNCwgOCwgMjQwLCAxOTEsIDI0MCwgMTAzLCAzLCAyMTEsIDE2LCAyMDgsIDE1MSwgMjUsIDIwOCwgMjQzLCAyNDAsIAotICAgIDE4NCwgMjQzLCAxNjEsIDI0MCwgMTAyLCAyMDMsIDIzMiwgMjQwLCAxMDIsIDI1MCwgMjE0LCAyNDAsIDEwMiwgMjE4LCAxOSwgCi0gICAgMjQwLCAxMDIsIDI0NSwgMTE0LCAyNDAsIDEwMiwgMjE4LCAyMzIsIDI0MCwgMTAyLCAyNDAsIDEwMywgMywgMjI3LCAxNywgCi0gICAgNzYsIDIwOCwgNjIsIDI0MywgMTYxLCAyNDcsIDE0OCwgMjE2LCAxMTMsIDI0MCwgMTAyLCAyMzksIDExNCwgMjQwLCAxMDMsIAotICAgIDMsIDE3MSwgMjI0LCA3LCAyNTAsIDIxMiwgMjQwLCAxMDIsIDI0MCwgNTgsIDI0MCwgMTAyLCAyMDQsIDYwLCAyNDAsIDEwMiwgCi0gICAgMjEyLCA1MywgMjQwLCAxMDIsIDIwOCwgMjA1LCAyNDAsIDEwMiwgMjM3LCAyNDIsIDI0MCwgMTAyLCAyMjcsIDQsIDI0NSwgCi0gICAgMTE0LCAyNDAsIDEwMiwgMjQwLCAxMDMsIDMsIDE3MSwgMjI0LCA3LCAyMzYsIDIsIDI0MCwgMTAyLCAyNDAsIDEwMywgMywgCi0gICAgMTcxLCAyMjQsIDgsIDI1LCAyNDUsIDI0NiwgMjEwLCAxNjYsIDI0MCwgMTAzLCAyMTQsIDE4NiwgMjMxLCA1MCwgMjQwLCAKLSAgICA1OSwgMjUwLCA1NiwgMjQwLCAxMDIsIDIzOSwgMTk0LCAyNDAsIDEwMiwgMjEyLCA1NCwgMjQwLCAxMDIsIDI0MywgMTMzLCAKLSAgICAyNDAsIDEwMiwgMjQwLCAxMDMsIDIwNCwgMywgMjI0LCA3LCAyNDAsIDEwMywgMywgMjI1LCAxMiwgMjI1LCA3NiwgMjM3LCAKLSAgICAyNDEsIDI0NywgMTgsIDI0MCwgMTAzLCAzLCAyMTIsIDMwLCAyNDAsIDE4NCwgMjQ3LCAxOCwgMjQwLCAxMDMsIDMsIDIwOSwgCi0gICAgMTc5LCA3NiwgMjMwLCA4NSwgMjEyLCAzMCwgMjQ3LCAxOCwgMjQwLCAxMDMsIDMsIDE3MSwgMjI0LCA3LCAyMTIsIDMwLCAKLSAgICAyNDcsIDE4LCAyNDAsIDEwMywgMywgMjM3LCA1NCwgMjQwLCAxODQsIDI0NywgMTgsIDI0MCwgMTAzLCAzLCAyMDMsIDIxOCwgCi0gICAgMjEyLCAzMSwgMjI5LCA2NSwgMjQ3LCAxOCwgMjQwLCAxMDMsIDMsIDI0NiwgMTYsIDI0MCwgMTg0LCAyMTgsIDE5LCAyNDcsIAotICAgIDE4LCAyNDAsIDEwMiwgMjQ1LCAxMTQsIDI0NywgMTgsIDI0MCwgMTAyLCAyMDQsIDYwLCAyNDcsIDE4LCAyNDAsIDEwMiwgCi0gICAgMjEyLCA0NywgMjM5LCAxMTQsIDI0MCwgMTAyLCAyMTIsIDQ3LCAyMTIsIDMwLCAyNDAsIDEwMiwgMjA2LCAyMTgsIDI0MCwgCi0gICAgMTAyLCAyNDAsIDEwMywgMywgMjE1LCAyMTIsIDI0MCwgMTg0LCAyNDAsIDEwMywgMywgMjIxLCAxOTIsIDIzOCwgMjcsIAotICAgIDIzOCwgMTYwLCAyNDAsIDEwMywgMywgMjIwLCA1MiwgMjM4LCAxNjAsIDIxOCwgMjMwLCAyNDcsIDIzOSwgMjQ0LCA1OSwgCi0gICAgMjE0LCAxNjQsIDIyNCwgNDgsIDIzNywgNTcsIDIyNCwgNDgsIDIxMSwgMjE4LCAyMjQsIDQ4LCAyMzcsIDkzLCAyMTgsIAotICAgIDIzMCwgMjE2LCAxODcsIDExOCwgMjM3LCAxMjMsIDIxOCwgMjMwLCAyMTYsIDE4NywgMjQ3LCAyNTEsIDIzNywgMTAwLCAKLSAgICAyMzEsIDUwLCAyNDYsIDIyNCwgMjE4LCAyMzAsIDIzOSwgMTEzLCAyMTgsIDIzMCwgMywgMjE4LCAxOSwgMjQwLCAxMDIsIAotICAgIDIxOCwgMjMwLCAzLCAyMzksIDE4MywgMjM3LCA5OSwgMTUzLCAyMDQsIDQ2LCAyMTgsIDU5LCAyMjcsIDIyOSwgMjExLCAKLSAgICAyMzgsIDIwNCwgNDYsIDIxOCwgNTksIDIyNywgMjI5LCAxNTMsIDI0MSwgMTc2LCAyMTgsIDU5LCAyMjcsIDIyOSwgMjExLCAKLSAgICAyMzgsIDI0MSwgMTc2LCAyMTgsIDU5LCAyMjcsIDIyOSwgMjA3LCAxNzQsIDE1MywgMjA0LCA0NiwgMjE4LCA1OSwgMjI3LCAKLSAgICAyMjksIDIwNywgMTc0LCAyMTEsIDIzOCwgMjA0LCA0NiwgMjE4LCA1OSwgMjI3LCAyMjksIDIwNywgMTc0LCAxNTMsIDI0MSwgCi0gICAgMTc2LCAyMTgsIDU5LCAyMjcsIDIyOSwgMjA3LCAxNzQsIDIxMSwgMjM4LCAyNDEsIDE3NiwgMjE4LCA1OSwgMjI3LCAyMjksIAotICAgIDE1MywgMjA0LCA0NiwgMjE4LCA1OSwgMjA1LCAyMTIsIDIyNywgMjI5LCAyMTEsIDIzOCwgMjA0LCA0NiwgMjE4LCA1OSwgCi0gICAgMjA1LCAyMTIsIDIyNywgMjI5LCAxNTMsIDI0MSwgMTc2LCAyMTgsIDU5LCAyMDUsIDIxMiwgMjI3LCAyMjksIDIxMSwgMjM4LCAKLSAgICAyNDEsIDE3NiwgMjE4LCA1OSwgMjA1LCAyMTIsIDIyNywgMjI5LCA3OSwgMTUzLCAyMDQsIDQ2LCAyMTgsIDU5LCAyMDUsIAotICAgIDIxMiwgMjI3LCAyMjksIDc5LCAyMTEsIDIzOCwgMjA0LCA0NiwgMjE4LCA1OSwgMjA1LCAyMTIsIDIyNywgMjI5LCA3OSwgCi0gICAgMTUzLCAyNDEsIDE3NiwgMjE4LCA1OSwgMjA1LCAyMTIsIDIyNywgMjI5LCA3OSwgMjExLCAyMzgsIDI0MSwgMTc2LCAyMTgsIAotICAgIDU5LCAyMDUsIDIxMiwgMjI3LCAyMjksIDE1MywgMjA0LCA0NiwgMjE4LCA1OSwgMjQ3LCAxODksIDIxMSwgMjM4LCAyMDQsIAotICAgIDQ2LCAyMTgsIDU5LCAyNDcsIDE4OSwgMTUzLCAyNDEsIDE3NiwgMjE4LCA1OSwgMjQ3LCAxODksIDIxMSwgMjM4LCAyNDEsIAotICAgIDE3NiwgMjE4LCA1OSwgMjQ3LCAxODksIDc5LCAxNTMsIDIwNCwgNDYsIDIxOCwgNTksIDI0NywgMTg5LCA3OSwgMjExLCAKLSAgICAyMzgsIDIwNCwgNDYsIDIxOCwgNTksIDI0NywgMTg5LCA3OSwgMTUzLCAyNDEsIDE3NiwgMjE4LCA1OSwgMjQ3LCAxODksIAotICAgIDc5LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDIxOCwgNTksIDI0NywgMTg5LCAyMzYsIDEyNSwgMjE3LCA0MCwgNTEsIDIxOSwgCi0gICAgMjMzLCAyMzYsIDEyNSwgMjE3LCA0MCwgNTEsIDIxOSwgMjM0LCAyMzEsIDUwLCA2MiwgMjExLCAxNzcsIDIxMiwgMiwgMjE3LCAKLSAgICA0MCwgNTEsIDIxOSwgMjMzLCAyMTIsIDIsIDIxNywgNDAsIDUxLCAyMTksIDIzNCwgMjMxLCA1MCwgNjIsIDIxMSwgMTc3LCAKLSAgICA5NiwgMjE1LCAyMTgsIDE3NywgMjE1LCAyMTgsIDg2LCAyMTUsIDIxOCwgMTgzLCAyMTUsIDIxOCwgMTMyLCAzMiwgMjQwLCAKLSAgICAyNTEsIDIxOSwgMjMzLCA3OSwgMTMyLCAzMiwgMjQwLCAyNTEsIDIxOSwgMjMzLCAzMiwgMTcxLCAyNDAsIDI1MSwgMjE5LCAKLSAgICAyMzMsIDc5LCAzMiwgMTcxLCAyNDAsIDI1MSwgMjE5LCAyMzMsIDc5LCAyNTAsIDIzNiwgMjE5LCAyMzMsIDIxMCwgMTY5LCAKLSAgICAyNTAsIDIzNiwgMjE5LCAyMzMsIDQxLCA3OSwgNTIsIDIwNywgMTc0LCAyNDUsIDIzNCwgMjE3LCAzMSwgMTMxLCAyMTksIAotICAgIDIzMywgNDEsIDc5LCA1MiwgMjQ1LCAyMzQsIDIxNywgMzEsIDEzMSwgMjE5LCAyMzMsIDQxLCA3OSwgMTI0LCA1MiwgMjQ1LCAKLSAgICAyMzQsIDIxNywgMzEsIDEzMSwgMjE5LCAyMzMsIDc5LCAyMzAsIDI0OCwgMjE5LCAyMzMsIDQxLCAyMzAsIDI0OCwgMjE5LCAKLSAgICAyMzMsIDc5LCA0MSwgMjMwLCAyNDgsIDIxOSwgMjMzLCAyMDUsIDI0MiwgNzksIDIxMiwgMCwgMjA1LCAyNDIsIDc5LCAyMTYsIAotICAgIDc0LCAyMTIsIDAsIDI0NiwgMTY3LCAyNDgsIDIwLCAyMTYsIDc0LCAyNDYsIDE2NywgMjQ4LCAyMCwgMjE1LCAyMTgsIDIzNywgCi0gICAgMzgsIDIxMSwgODEsIDIyNywgNDAsIDIxNiwgMTkzLCAyNDcsIDM5LCAyMzYsIDI0MCwgMjA4LCAxMTAsIDIzNiwgMjQwLCAKLSAgICAyMDgsIDExMSwgMywgMjQ3LCAxNzgsIDIyMSwgMTY3LCAyMDgsIDExMCwgMjI0LCAyMTMsIDE1NywgMjE2LCAxOTQsIDIxMSwgCi0gICAgODcsIDIwOCwgMTA4LCAyMDgsIDEwOSwgMjQ3LCAzOSwgMjQ3LCAxNTMsIDIyMCwgMjksIDI0NywgMTUzLCAyMDgsIDU5LCAKLSAgICAyNDcsIDE1NCwgMjExLCA2MSwgMjI0LCAxMDksIDI1MCwgMjQwLCAyMzksIDI1MCwgMjQxLCA3NywgMjE4LCA1MSwgMjQ3LCAKLSAgICAzOSwgMjIwLCAyOSwgMjE4LCA1MSwgMjQ3LCAzOSwgMjA5LCAxOTcsIDIyMCwgMjksIDIwOSwgMTk3LCAyNTAsIDIyLCAyMjAsIAotICAgIDI5LCAyNTAsIDIyLCAyMTYsIDE0NSwgMjA2LCA0NywgMjQ0LCA0MSwgMjA4LCA1MCwgMjUwLCA4NiwgMjI3LCA4LCAyMDgsIAotICAgIDExNiwgMjI0LCA0MiwgMjI0LCAxMywgMjE2LCAxOTIsIDIxMCwgMTgyLCAyMTYsIDE5MiwgMjI0LCAxMywgMjQ3LCA4NiwgCi0gICAgMjUxLCA5NSwgMjA4LCAxMDcsIDIxMiwgMjUxLCAyMTUsIDE4OCwgMjExLCAyMTAsIDIzNiwgMTA2LCAyMDgsIDExNCwgMjI3LCAKLSAgICAxMzQsIDgwLCAyMDgsIDExNCwgMjI3LCAxMzQsIDI0NSwgMTk5LCA1NCwgMjE4LCA1MSwgMjQ3LCAyNCwgMjE2LCA2NywgCi0gICAgMjI3LCAxMzQsIDIwOCwgODIsIDIzOSwgMjI2LCAyMjAsIDMyLCAyMTgsIDMwLCAyNDMsIDg4LCAyMjEsIDE5MiwgMjQxLCAKLSAgICA2MywgNTQsIDIxMiwgMjgsIDk3LCAyMjEsIDE5MiwgMjEyLCAyOCwgOTcsIDIxNywgMTYwLCAyMjcsIDg3LCAyMzEsIDUwLCAKLSAgICAyMzAsIDE5OCwgMjE4LCA5NywgOTcsIDI0MywgMTE0LCAyMjEsIDE2NiwgMjI3LCA4NywgOTcsIDIxOCwgMjQsIDIwNCwgODEsIAotICAgIDk3LCAyMjEsIDE4MiwgMjA0LCA4MSwgOTcsIDI0OCwgODIsIDIyMSwgMTkyLCAyNDgsIDgxLCAyNDgsIDgwLCAyMjQsIDEzLCAKLSAgICAyNDgsIDgwLCAyMTksIDI1LCAyMjEsIDE5MiwgMjE5LCAyNCwgMjQ2LCAxMzIsIDI0NSwgMTIzLCAyMjQsIDIzNiwgOTcsIAotICAgIDIwMywgMjQ3LCA5NywgMjE2LCA4MywgMjQ5LCAyOCwgOTcsIDIwOCwgMTY4LCAyMDQsIDgxLCAyNDYsIDEzLCAyMTIsIDIwOSwgCi0gICAgMjQ4LCAyMDYsIDI0OCwgMjA0LCAyMTksIDU3LCAyNDUsIDE4MywgMjQ1LCA3OSwgMjQ5LCA3LCAyNDYsIDQxLCA0OSwgMjI2LCAKLSAgICAyMjksIDIwOCwgODYsIDMsIDIxNSwgMTg5LCAyNDUsIDE2NCwgMjE3LCAyMjAsIDU0LCA0MywgMjMxLCAyNSwgMjExLCAyMzksIAotICAgIDI0NywgMjMxLCA5NywgMjM4LCA1OSwgOTcsIDI0NSwgMTU3LCAyNSwgMjI4LCAxOCwgMjEyLCA1NCwgMjUxLCAxMzUsIDIxMiwgCi0gICAgMjMxLCAyNDksIDYsIDI0OCwgMTI3LCAyNDgsIDEyOCwgMjQ4LCAxNTEsIDIxOCwgOTcsIDc2LCAyMDMsIDIzMSwgMjM3LCAKLSAgICAxMzEsIDI1LCAyMDMsIDIyNSwgMjEzLCA4LCAyMjAsIDU2LCAyNDIsIDQ2LCAyMjQsIDE3LCAyMTYsIDE5MywgMjA4LCAxMTgsIAotICAgIDIyNCwgMTksIDI0OCwgMTksIDIwNiwgMjIzLCAyMjQsIDExOSwgMjUxLCA1MiwgMjA2LCAyMjMsIDI1MSwgNTIsIDIwNiwgCi0gICAgMjIzLCA1LCAyNTEsIDUyLCA1LCAyNTEsIDUyLCAyMjEsIDE3MSwgMjUxLCA1MiwgMjUxLCA1MywgMjQ0LCAyNSwgMjUxLCAKLSAgICA1MywgMjUwLCA5NywgMjE0LCAyMjEsIDIyMCwgMjksIDIzOSwgMjUwLCAyNDEsIDc3LCAyNDMsIDIxMSwgMjI3LCA0MCwgCi0gICAgMjE5LCA2MCwgMjEyLCAyNTEsIDEzNiwgMTYsIDM1LCAyMTcsIDM2LCAxMzYsIDE2LCAzNSwgMjUxLCA1NCwgMTM2LCAxNiwgCi0gICAgMzUsIDIzOSwgMjQ5LCAxMzYsIDE2LCAzNSwgMjQxLCAxNzksIDEzNiwgMTYsIDM1LCAyMDQsIDgwLCAxMzYsIDE2LCAzNSwgCi0gICAgMjUwLCAxNDYsIDEzNiwgMTYsIDM1LCAyNTAsIDE0NywgMjE2LCAxMzIsIDEzNiwgMTYsIDM1LCAyNTAsIDE0NywgMjE2LCAKLSAgICAxMzEsIDEzNiwgMTYsIDM1LCAyNTAsIDE0NywgMjA1LCAxOTUsIDEzNiwgMTYsIDM1LCAyNTAsIDE0NywgMjA1LCAxOTQsIAotICAgIDEzNiwgMTYsIDM1LCAyMDUsIDIwOSwgMTM2LCAxNiwgMzUsIDIwNSwgMjA4LCAxMzYsIDE2LCAzNSwgMjA1LCAyMDcsIDEzNiwgCi0gICAgMTYsIDM1LCAyMTAsIDIyMSwgMTM2LCAxNiwgMzUsIDIxOCwgMTg0LCAyMTAsIDIyMSwgMTM2LCAxNiwgMzUsIDYyLCAyMTAsIAotICAgIDIyMSwgMTM2LCAxNiwgMzUsIDIyNCwgMjM1LCAyMTAsIDI1MiwgMTM2LCAxNiwgMzUsIDIyNCwgMjM1LCAyMTAsIDI1MSwgCi0gICAgMTM2LCAxNiwgMzUsIDIyNCwgMjM1LCAyMTAsIDI1MCwgMTM2LCAxNiwgMzUsIDI0NiwgNjQsIDEzNiwgMTYsIDM1LCAyMTUsIAotICAgIDEsIDEzNiwgMTYsIDM1LCAyMjIsIDUxLCAxMzYsIDE2LCAzNSwgMjA1LCAxOTMsIDEzNiwgMTYsIDM1LCAyMDUsIDE5MiwgCi0gICAgMTM2LCAxNiwgMzUsIDIxNSwgMjE5LCAyMTUsIDEsIDEzNiwgMTYsIDM1LCAyMTUsIDIxOSwgMjE1LCAwLCAxMzYsIDE2LCAKLSAgICAzNSwgMjM4LCAzMSwgMTM2LCAxNiwgMzUsIDIxMiwgMTMzLCAxMzYsIDE2LCAzNSwgMjMwLCAyMjEsIDIxOSwgMjM5LCAxMzYsIAotICAgIDE2LCAzNSwgMjMwLCAyMjEsIDIxOSwgMjM4LCAxMzYsIDE2LCAzNSwgMjQ1LCAxMzQsIDc2LCAyMzAsIDIyMCwgMTM2LCAxNiwgCi0gICAgMzUsIDIxNiwgMTI4LCA3NiwgMjMwLCAyMjAsIDEzNiwgMTYsIDM1LCAyNDUsIDE3NCwgMjE5LCAyMzksIDEzNiwgMTYsIDM1LCAKLSAgICAyMzAsIDIxOSwgMjE5LCAyMzksIDEzNiwgMTYsIDM1LCAyMTAsIDI1MywgNzYsIDI0NSwgMTczLCAxMzYsIDE2LCAzNSwgCi0gICAgMjQ1LCAxMzQsIDc2LCAyNDUsIDE3MywgMTM2LCAxNiwgMzUsIDI0NSwgMTM0LCA3NiwgMjQ1LCAxNzIsIDEzNiwgMTYsIDM1LCAKLSAgICAyNDUsIDE3NCwgMjUwLCAxODgsIDEzNiwgMTYsIDM1LCAyMTUsIDIsIDc2LCAyNDUsIDE3NCwgMjUwLCAxODgsIDEzNiwgMTYsIAotICAgIDM1LCAyMTAsIDI1MywgNzYsIDIxNSwgMiwgNzYsIDI0NSwgMTczLCAxMzYsIDE2LCAzNSwgMjA2LCA0MiwgMTM2LCAxNiwgCi0gICAgMzUsIDIwOCwgMjE4LCAyMTksIDIzOSwgMTM2LCAxNiwgMzUsIDIyNywgMjMzLCAyMTksIDIzOSwgMTM2LCAxNiwgMzUsIAotICAgIDI1MCwgMTg3LCAyMTksIDIzOSwgMTM2LCAxNiwgMzUsIDIxMCwgMjUzLCA3NiwgMjUwLCAxODYsIDEzNiwgMTYsIDM1LCAKLSAgICAyMTUsIDIsIDc2LCAyNTAsIDE4NiwgMTM2LCAxNiwgMzUsIDIxMCwgMjUzLCA3NiwgMjE1LCAyLCA3NiwgMjUwLCAxODYsIAotICAgIDEzNiwgMTYsIDM1LCAyMDUsIDIxMCwgNzYsIDI1MCwgMTg2LCAxMzYsIDE2LCAzNSwgMjE2LCAxMjgsIDc2LCAyNTAsIDE4NiwgCi0gICAgMTM2LCAxNiwgMzUsIDIxNiwgMTI4LCA3NiwgMjUwLCAxODUsIDEzNiwgMTYsIDM1LCAyMTYsIDEyNywgMTM2LCAxNiwgMzUsIAotICAgIDIxNiwgMTI2LCAxMzYsIDE2LCAzNSwgMjE2LCAxMjUsIDEzNiwgMTYsIDM1LCAyMTYsIDEyNCwgMTM2LCAxNiwgMzUsIDI1MSwgCi0gICAgMTcsIDEzNiwgMTYsIDM1LCAyNTEsIDE2LCAxMzYsIDE2LCAzNSwgMjI1LCA5NywgMTM2LCAxNiwgMzUsIDIxNSwgNywgMTM2LCAKLSAgICAxNiwgMzUsIDI1MCwgOTAsIDEzNiwgMTYsIDM1LCAyMTYsIDE1NSwgMTM2LCAxNiwgMzUsIDIxNiwgMTU0LCAxMzYsIDE2LCAKLSAgICAzNSwgMjUwLCAyNSwgMTM2LCAxNiwgMzUsIDI0OCwgNTIsIDIxOSwgMjM5LCAxMzYsIDE2LCAzNSwgMjA5LCAyMTYsIDEzNiwgCi0gICAgMTYsIDM1LCAyMDksIDIxNSwgMTM2LCAxNiwgMzUsIDIxNywgNDIsIDIyNywgMTIzLCAxMzYsIDE2LCAzNSwgMjQ4LCAwLCAKLSAgICAxMzYsIDE2LCAzNSwgMjQ3LCAyNTUsIDEzNiwgMTYsIDM1LCAyNDcsIDI1NCwgMTM2LCAxNiwgMzUsIDI1MCwgMjQ5LCAxMzYsIAotICAgIDE2LCAzNSwgMjIwLCA1NSwgMTM2LCAxNiwgMzUsIDIxMSwgMTk4LCAxMzYsIDE2LCAzNSwgMjA4LCAyMTYsIDEzNiwgMTYsIAotICAgIDM1LCAyMzcsIDIxMCwgMTM2LCAxNiwgMzUsIDIwNCwgNjgsIDEzNiwgMTYsIDM1LCAyMTgsIDE4LCAxMzYsIDE2LCAzNSwgCi0gICAgMjQ3LCA3MCwgMTM2LCAxNiwgMzUsIDIwNywgMTY2LCAxMzYsIDE2LCAzNSwgMjQ3LCA0MSwgMjI0LCAyMywgMTM2LCAxNiwgCi0gICAgMzUsIDIxNCwgMTk5LCA3NiwgMjMwLCA4NywgMTM2LCAxNiwgMzUsIDI0NywgODMsIDEzNiwgMTYsIDM1LCAyMDgsIDc5LCAKLSAgICAxMzYsIDE2LCAzNSwgMjExLCA5MiwgMjA4LCA3OSwgMTM2LCAxNiwgMzUsIDIyNywgMzksIDEzNiwgMTYsIDM1LCAyMTIsIAotICAgIDExLCAxMzYsIDE2LCAzNSwgMjA2LCAyMDIsIDEzNiwgMTYsIDM1LCAyMzYsIDUwLCAyNDIsIDI3LCAxMzYsIDE2LCAzNSwgCi0gICAgMjUwLCA3MCwgMTM2LCAxNiwgMzUsIDIxOCwgMjYsIDI1MCwgNzAsIDEzNiwgMTYsIDM1LCAyNDcsIDIxMCwgMTM2LCAxNiwgCi0gICAgMzUsIDIxOCwgMTcsIDI0NywgMjEwLCAxMzYsIDE2LCAzNSwgMjUwLCAyNDYsIDEzNiwgMTYsIDM1LCAyMTEsIDQ4LCAyMTAsIAotICAgIDIwMiwgMjExLCA0NywgMTM2LCAxNiwgMzUsIDIxMSwgNDgsIDIxMCwgMjAyLCAyMTEsIDQ2LCAxMzYsIDE2LCAzNSwgMjEwLCAKLSAgICAyNDksIDEzNiwgMTYsIDM1LCAyMTcsIDI0NywgMTM2LCAxNiwgMzUsIDI0MywgMTUwLCAxMzYsIDE2LCAzNSwgMjQzLCAxNTIsIAotICAgIDEzNiwgMTYsIDM1LCAyNDMsIDE1MSwgMTM2LCAxNiwgMzUsIDIxNywgMTY5LCAxMzYsIDE2LCAzNSwgMjE3LCAxNTgsIDEzNiwgCi0gICAgMTYsIDM1LCAyNDUsIDEyMSwgMTM2LCAxNiwgMzUsIDI0NSwgMTIwLCAxMzYsIDE2LCAzNSwgMjQ1LCAxMTksIDEzNiwgMTYsIAotICAgIDM1LCAyNDUsIDExOCwgMTM2LCAxNiwgMzUsIDI0NSwgMTE3LCAxMzYsIDE2LCAzNSwgMjUxLCAyOSwgMTM2LCAxNiwgMzUsIAotICAgIDI0OCwgMjA3LCA3NiwgMjI1LCA4MSwgMTM2LCAxNiwgMzUsIDI0OCwgMjA3LCA3NiwgMjA2LCA3NCwgMTM2LCAxNiwgMzUsIAotICAgIDIxNiwgODEsIDEzNiwgMTYsIDM1LCAyMzYsIDQyLCAxMzYsIDE2LCAzNSwgMjIyLCA3OSwgMTM2LCAxNiwgMzUsIDI0NCwgCi0gICAgMTMyLCAxMzYsIDE2LCAzNSwgMjI0LCAzNywgMTM2LCAxNiwgMzUsIDE2MiwgMjQyLCA1OSwgMTM2LCAxNiwgMzUsIDE2MiwgCi0gICAgMjE5LCAyMTQsIDYyLCAyMjcsIDIxNywgMjMwLCAyMDQsIDUwLCAyMDgsIDg1LCA2MiwgMjA2LCAyMjMsIDIzMCwgMjA0LCAKLSAgICA1MCwgMjA4LCA4NSwgNjIsIDIxNiwgMTEsIDIzMCwgMjA0LCA1MCwgMjA4LCA4NSwgNjIsIDI0MiwgNjksIDIzMCwgMjA0LCAKLSAgICA1MCwgMjA4LCA4NSwgNjIsIDIxMiwgNDcsIDUsIDI0NiwgNjEsIDIyNSwgMTAsIDI2LCA2MSwgMjQ2LCA2MSwgMjYsIDYxLCAKLSAgICAyNDYsIDYxLCA3OSwgNjEsIDI0NiwgNjEsIDIwNSwgMjQyLCA3OSwgNjEsIDI0NiwgNjEsIDI0MCwgMTk1LCA3OSwgNjEsIAotICAgIDI0NiwgNjEsIDYxLCAyNDYsIDYyLCAyNDUsIDE5NSwgNjIsIDUsIDI0NiwgNjEsIDIxNSwgMTkxLCAyMDksIDIxNywgNjIsIAotICAgIDIwOCwgMjEzLCAyMTEsIDE3NywgNjIsIDIxMiwgNDcsIDUsIDIxMSwgMTc3LCAxNTcsIDYxLCAyMTEsIDE3NywgMjI1LCAxMCwgCi0gICAgNjEsIDIxMSwgMTc3LCAyNiwgNjEsIDIxMSwgMTc3LCA3OSwgNjEsIDIxMSwgMTc3LCAyMDUsIDI0MiwgNzksIDYxLCAyMTEsIAotICAgIDE3NywgMjQwLCAxOTUsIDc5LCA2MSwgMjExLCAxNzcsIDYxLCA1MSwgMjQ1LCAxOTUsIDYyLCAyMDUsIDI0MiwgNSwgMjExLCAKLSAgICAxNzcsIDYxLCA1MSwgMjQ1LCAxOTUsIDYyLCAyMjUsIDEwLCAyMTEsIDE3NywgNTEsIDIwOSwgMjE3LCA2MiwgMjA4LCAyMTMsIAotICAgIDI0MywgMjIxLCA2MiwgMjA1LCAyNDIsIDUsIDI0MywgMjIxLCA2MiwgMjI1LCAxMCwgNSwgMjQzLCAyMjEsIDYxLCAyNDMsIAotICAgIDIyMiwgMjQ1LCAxOTUsIDYyLCAyMDUsIDI0MiwgNSwgMjQzLCAyMjEsIDYxLCAyNDMsIDIyMiwgMjQ1LCAxOTUsIDYyLCAKLSAgICAyMjUsIDEwLCAyNDMsIDIyMSwgMjQzLCAyMjIsIDIwOSwgMjE3LCA2MiwgMjA4LCAyMTMsIDIyNiwgMjQ2LCA2MiwgMjA1LCAKLSAgICAyNDIsIDUsIDIyNiwgMjQ2LCA2MiwgMjI1LCAxMCwgNSwgMjI2LCAyNDYsIDYxLCAyMjYsIDI0NywgMjQ1LCAxOTUsIDYyLCAKLSAgICA1LCAyMjYsIDI0NiwgMjA5LCA2MywgMzAsIDI0NSwgMTMwLCAxNTcsIDMwLCAyNDUsIDEzMCwgMjI1LCAxMCwgMzAsIDI0NSwgCi0gICAgMTMwLCAyNiwgMzAsIDI0NSwgMTMwLCAyMDUsIDI0MiwgMjYsIDMwLCAyNDUsIDEzMCwgMjA1LCAyNDIsIDc5LCAzMCwgMjQ1LCAKLSAgICAxMzAsIDI0MCwgMTk1LCA3OSwgMzAsIDI0NSwgMTMwLCAyMDksIDYzLCAyMTQsIDI1NCwgMTU3LCAyMTQsIDI1NCwgMjI1LCAKLSAgICAxMCwgMjE0LCAyNTQsIDI2LCAyMTQsIDI1NCwgNzksIDIxNCwgMjU0LCAyMDUsIDI0MiwgNzksIDIxNCwgMjU0LCAyNDAsIAotICAgIDE5NSwgNzksIDIxNCwgMjU0LCAxNTcsIDIzOSwgMjMzLCAyMTEsIDE5MSwgMjUwLCA1OSwgMjI1LCAxMCwgMjM5LCAyMzMsIAotICAgIDIxMSwgMTkxLCAyNTAsIDU5LCAyNiwgMjM5LCAyMzMsIDIxMSwgMTkxLCAyNTAsIDU5LCA3OSwgMjM5LCAyMzMsIDIxMSwgCi0gICAgMTkxLCAyNTAsIDU5LCAyMDUsIDI0MiwgNzksIDIzOSwgMjMzLCAyMTEsIDE5MSwgMjUwLCA1OSwgMjQwLCAxOTUsIDc5LCAKLSAgICAyMzksIDIzMywgMjExLCAxOTEsIDI1MCwgNTksIDE1NywgMjEyLCA4OCwgMjExLCAxOTEsIDI1MCwgNTksIDIyNSwgMTAsIAotICAgIDIxMiwgODgsIDIxMSwgMTkxLCAyNTAsIDU5LCAyNiwgMjEyLCA4OCwgMjExLCAxOTEsIDI1MCwgNTksIDc5LCAyMTIsIDg4LCAKLSAgICAyMTEsIDE5MSwgMjUwLCA1OSwgMjA1LCAyNDIsIDc5LCAyMTIsIDg4LCAyMTEsIDE5MSwgMjUwLCA1OSwgMjQwLCAxOTUsIAotICAgIDc5LCAyMTIsIDg4LCAyMTEsIDE5MSwgMjUwLCA1OSwgMTU3LCAyNDEsIDE0MywgMjExLCAxOTEsIDI1MCwgNTksIDIyNSwgCi0gICAgMTAsIDI0MSwgMTQzLCAyMTEsIDE5MSwgMjUwLCA1OSwgMjYsIDI0MSwgMTQzLCAyMTEsIDE5MSwgMjUwLCA1OSwgNzksIAotICAgIDI0MSwgMTQzLCAyMTEsIDE5MSwgMjUwLCA1OSwgMjA1LCAyNDIsIDc5LCAyNDEsIDE0MywgMjExLCAxOTEsIDI1MCwgNTksIAotICAgIDE1NywgMTI2LCAyMTgsIDYxLCA2MiwgMjExLCA5NCwgMjI1LCAxMCwgMTI2LCAyMTgsIDYxLCA2MiwgMjExLCA5NCwgMTI2LCAKLSAgICAyMTgsIDYxLCA2MiwgMjExLCA5NCwgMjI1LCAxMCwgMTI2LCAyMTgsIDYxLCAyMTgsIDExOCwgMjExLCA5NCwgMTU3LCAyMzksIAotICAgIDE0NywgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDIyNSwgMTAsIDIzOSwgMTQ3LCAyMTgsIDYxLCA2MiwgMjExLCA5NCwgMjM5LCAKLSAgICAxNDcsIDIxOCwgNjEsIDYyLCAyMTEsIDk0LCAyMjUsIDEwLCAyMzksIDE0NywgMjE4LCA2MSwgMjE4LCAxMTgsIDIxMSwgOTQsIAotICAgIDIxNiwgNzQsIDE1NywgMjM5LCAxNDcsIDIxOCwgNjEsIDIxOCwgMTE4LCAyMTEsIDk0LCAxNTcsIDIzOSwgMjMzLCAyMTgsIAotICAgIDYxLCA2MiwgMjExLCA5NCwgNzksIDIzOSwgMjMzLCAyMTgsIDYxLCA2MiwgMjExLCA5NCwgMjI1LCAxMCwgMjEyLCA4OCwgCi0gICAgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDc5LCAyMTIsIDg4LCAyMTgsIDYxLCA2MiwgMjExLCA5NCwgMjEyLCA4OCwgMjE4LCAKLSAgICA2MSwgMjE4LCAxMTgsIDIxMSwgOTQsIDIyNSwgMTAsIDI0MSwgMTQzLCAyMTgsIDYxLCA2MiwgMjExLCA5NCwgNzksIDI0MSwgCi0gICAgMTQzLCAyMTgsIDYxLCA2MiwgMjExLCA5NCwgMjA1LCAyNDIsIDc5LCAyNDEsIDE0MywgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIAotICAgIDc5LCAyNDEsIDE0MywgMjE4LCA2MSwgMjE4LCAxMTgsIDIxMSwgOTQsIDE1NywgMjA3LCAxNTUsIDIxOCwgNjEsIDYyLCAKLSAgICAyMTEsIDk0LCA3OSwgMjA3LCAxNTUsIDIxOCwgNjEsIDYyLCAyMTEsIDk0LCA3OSwgMjA3LCAxNTUsIDIxOCwgNjEsIDIxOCwgCi0gICAgMTE4LCAyMTEsIDk0LCA5NiwgNTMsIDMsIDUsIDIwOCwgODYsIDI1MCwgOTQsIDE3NywgNTMsIDMsIDUsIDIwOCwgODYsIAotICAgIDI1MCwgOTQsIDg2LCA1MywgMywgNSwgMjA4LCA4NiwgMjUwLCA5NCwgMTgzLCA1MywgMywgNSwgMjA4LCA4NiwgMjUwLCA5NCwgCi0gICAgOTYsIDUzLCAzLCAyMjUsIDEwLCAyMDgsIDg2LCAyNTAsIDk0LCAxNzcsIDUzLCAzLCAyMjUsIDEwLCAyMDgsIDg2LCAyNTAsIAotICAgIDk0LCA4NiwgNTMsIDMsIDIyNSwgMTAsIDIwOCwgODYsIDI1MCwgOTQsIDE4MywgNTMsIDMsIDIyNSwgMTAsIDIwOCwgODYsIAotICAgIDI1MCwgOTQsIDk2LCA1MywgMywgMjI4LCA4LCAyMDgsIDg2LCAyNTAsIDk0LCAxNzcsIDUzLCAzLCAyMjgsIDgsIDIwOCwgCi0gICAgODYsIDI1MCwgOTQsIDg2LCA1MywgMywgMjI4LCA4LCAyMDgsIDg2LCAyNTAsIDk0LCAxODMsIDUzLCAzLCAyMjgsIDgsIAotICAgIDIwOCwgODYsIDI1MCwgOTQsIDk2LCA1MywgMywgNSwgMjQxLCAzMSwgMjUwLCA5NCwgMTc3LCA1MywgMywgNSwgMjQxLCAzMSwgCi0gICAgMjUwLCA5NCwgODYsIDUzLCAzLCA1LCAyNDEsIDMxLCAyNTAsIDk0LCAxODMsIDUzLCAzLCA1LCAyNDEsIDMxLCAyNTAsIDk0LCAKLSAgICA5NiwgNTMsIDMsIDI0MSwgMzEsIDI1MCwgOTQsIDE3NywgNTMsIDMsIDI0MSwgMzEsIDI1MCwgOTQsIDg2LCA1MywgMywgCi0gICAgMjQxLCAzMSwgMjUwLCA5NCwgMTgzLCA1MywgMywgMjQxLCAzMSwgMjUwLCA5NCwgNzksIDk2LCA1MywgMywgMjQxLCAzMSwgCi0gICAgMjUwLCA5NCwgNzksIDE3NywgNTMsIDMsIDI0MSwgMzEsIDI1MCwgOTQsIDc5LCA4NiwgNTMsIDMsIDI0MSwgMzEsIDI1MCwgCi0gICAgOTQsIDc5LCAxODMsIDUzLCAzLCAyNDEsIDMxLCAyNTAsIDk0LCA3OSwgOTYsIDUzLCAzLCAyMjgsIDgsIDI0MSwgMzEsIAotICAgIDI1MCwgOTQsIDc5LCAxNzcsIDUzLCAzLCAyMjgsIDgsIDI0MSwgMzEsIDI1MCwgOTQsIDc5LCA4NiwgNTMsIDMsIDIyOCwgOCwgCi0gICAgMjQxLCAzMSwgMjUwLCA5NCwgNzksIDE4MywgNTMsIDMsIDIyOCwgOCwgMjQxLCAzMSwgMjUwLCA5NCwgOTYsIDIwOCwgODQsIAotICAgIDUzLCAzLCAyMjMsIDczLCAyMTMsIDc1LCAxNzcsIDIwOCwgODQsIDUzLCAzLCAyMjMsIDczLCAyMTMsIDc1LCA4NiwgMjA4LCAKLSAgICA4NCwgNTMsIDMsIDIyMywgNzMsIDIxMywgNzUsIDE4MywgMjA4LCA4NCwgNTMsIDMsIDIyMywgNzMsIDIxMywgNzUsIDk2LCAKLSAgICAyMDgsIDg0LCA1MywgMywgMjI1LCAxMCwgMjEzLCA3NSwgMTc3LCAyMDgsIDg0LCA1MywgMywgMjI1LCAxMCwgMjEzLCA3NSwgCi0gICAgODYsIDIwOCwgODQsIDUzLCAzLCAyMjUsIDEwLCAyMTMsIDc1LCAxODMsIDIwOCwgODQsIDUzLCAzLCAyMjUsIDEwLCAyMTMsIAotICAgIDc1LCA5NiwgMjA4LCA4NCwgNTMsIDMsIDI2LCAyMTMsIDc1LCAxNzcsIDIwOCwgODQsIDUzLCAzLCAyNiwgMjEzLCA3NSwgCi0gICAgODYsIDIwOCwgODQsIDUzLCAzLCAyNiwgMjEzLCA3NSwgMTgzLCAyMDgsIDg0LCA1MywgMywgMjYsIDIxMywgNzUsIDk2LCAKLSAgICAyMDgsIDg0LCA1MywgMywgNzksIDIxMywgNzUsIDE3NywgMjA4LCA4NCwgNTMsIDMsIDc5LCAyMTMsIDc1LCA4NiwgMjA4LCAKLSAgICA4NCwgNTMsIDMsIDc5LCAyMTMsIDc1LCAxODMsIDIwOCwgODQsIDUzLCAzLCA3OSwgMjEzLCA3NSwgOTYsIDIwOCwgODQsIAotICAgIDUzLCAzLCAyMDUsIDI0MiwgNzksIDIxMywgNzUsIDE3NywgMjA4LCA4NCwgNTMsIDMsIDIwNSwgMjQyLCA3OSwgMjEzLCA3NSwgCi0gICAgODYsIDIwOCwgODQsIDUzLCAzLCAyMDUsIDI0MiwgNzksIDIxMywgNzUsIDE4MywgMjA4LCA4NCwgNTMsIDMsIDIwNSwgMjQyLCAKLSAgICA3OSwgMjEzLCA3NSwgOTYsIDI0MCwgMSwgNDcsIDE3NywgMjQwLCAxLCA0NywgODYsIDI0MCwgMSwgNDcsIDE4MywgMjQwLCAKLSAgICAxLCA0NywgOTYsIDEwMywgNDcsIDE3NywgMTAzLCA0NywgODYsIDEwMywgNDcsIDE4MywgMTAzLCA0NywgOTYsIDI0NSwgCi0gICAgMjIyLCA0NywgMTc3LCAyNDUsIDIyMiwgNDcsIDg2LCAyNDUsIDIyMiwgNDcsIDE4MywgMjQ1LCAyMjIsIDQ3LCA5NiwgNzksIAotICAgIDI0NSwgMjIyLCA0NywgMTc3LCA3OSwgMjQ1LCAyMjIsIDQ3LCA4NiwgNzksIDI0NSwgMjIyLCA0NywgMTgzLCA3OSwgMjQ1LCAKLSAgICAyMjIsIDQ3LCA5NiwgNzksIDQ3LCAxNzcsIDc5LCA0NywgODYsIDc5LCA0NywgMTgzLCA3OSwgNDcsIDk2LCA0MSwgNDcsIAotICAgIDE3NywgNDEsIDQ3LCA4NiwgNDEsIDQ3LCAxODMsIDQxLCA0NywgMTUzLCAyMDQsIDQ2LCA0MSwgNDcsIDE1MywgMjQxLCAKLSAgICAxNzYsIDQxLCA0NywgMjExLCAyMzgsIDI0MSwgMTc2LCA0MSwgNDcsIDIxMSwgMjM4LCAyMDQsIDQ2LCA0MSwgNDcsIDQ5LCAKLSAgICA1MCwgNDEsIDQ3LCAxMTIsIDEyMSwgNDEsIDQ3LCAyMDQsIDI2LCA5NiwgMTU3LCAxNTAsIDQ3LCAyMDQsIDI2LCAxNzcsIAotICAgIDE1NywgMTUwLCA0NywgMjA0LCAyNiwgODYsIDE1NywgMTUwLCA0NywgMjA0LCAyNiwgMTgzLCAxNTcsIDE1MCwgNDcsIDIwNCwgCi0gICAgMjYsIDE1MywgMjA0LCA0NiwgMTU3LCAxNTAsIDQ3LCAyMDQsIDI2LCAxNTMsIDI0MSwgMTc2LCAxNTcsIDE1MCwgNDcsIAotICAgIDIwNCwgMjYsIDIxMSwgMjM4LCAyNDEsIDE3NiwgMTU3LCAxNTAsIDQ3LCAyMDQsIDI2LCAyMTEsIDIzOCwgMjA0LCA0NiwgCi0gICAgMTU3LCAxNTAsIDQ3LCAyMDQsIDI2LCA5NiwgMTUwLCA0NywgMjA0LCAyNiwgMTc3LCAxNTAsIDQ3LCAyMDQsIDI2LCA4NiwgCi0gICAgMTUwLCA0NywgMjA0LCAyNiwgMTgzLCAxNTAsIDQ3LCAyMDQsIDI2LCAxNTMsIDIwNCwgNDYsIDE1MCwgNDcsIDIwNCwgMjYsIAotICAgIDE1MywgMjQxLCAxNzYsIDE1MCwgNDcsIDIwNCwgMjYsIDIxMSwgMjM4LCAyNDEsIDE3NiwgMTUwLCA0NywgMjA0LCAyNiwgCi0gICAgMjExLCAyMzgsIDIwNCwgNDYsIDE1MCwgNDcsIDIwNCwgMjYsIDk2LCAyMjUsIDEwLCAxNTAsIDQ3LCAyMDQsIDI2LCAxNzcsIAotICAgIDIyNSwgMTAsIDE1MCwgNDcsIDIwNCwgMjYsIDg2LCAyMjUsIDEwLCAxNTAsIDQ3LCAyMDQsIDI2LCAxODMsIDIyNSwgMTAsIAotICAgIDE1MCwgNDcsIDIwNCwgMjYsIDE1MywgMjA0LCA0NiwgMjI1LCAxMCwgMTUwLCA0NywgMjA0LCAyNiwgMTUzLCAyNDEsIDE3NiwgCi0gICAgMjI1LCAxMCwgMTUwLCA0NywgMjA0LCAyNiwgMjExLCAyMzgsIDI0MSwgMTc2LCAyMjUsIDEwLCAxNTAsIDQ3LCAyMDQsIDI2LCAKLSAgICAyMTEsIDIzOCwgMjA0LCA0NiwgMjI1LCAxMCwgMTUwLCA0NywgMjA0LCAyNiwgOTYsIDc5LCAxNTAsIDQ3LCAyMDQsIDI2LCAKLSAgICAxNzcsIDc5LCAxNTAsIDQ3LCAyMDQsIDI2LCA4NiwgNzksIDE1MCwgNDcsIDIwNCwgMjYsIDE4MywgNzksIDE1MCwgNDcsIAotICAgIDIwNCwgMjYsIDE1MywgMjA0LCA0NiwgNzksIDE1MCwgNDcsIDIwNCwgMjYsIDE1MywgMjQxLCAxNzYsIDc5LCAxNTAsIDQ3LCAKLSAgICAyMDQsIDI2LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDc5LCAxNTAsIDQ3LCAyMDQsIDI2LCAyMTEsIDIzOCwgMjA0LCA0NiwgNzksIAotICAgIDE1MCwgNDcsIDIwNCwgMjYsIDk2LCAyMDUsIDI0MiwgNzksIDE1MCwgNDcsIDIwNCwgMjYsIDE3NywgMjA1LCAyNDIsIDc5LCAKLSAgICAxNTAsIDQ3LCAyMDQsIDI2LCA4NiwgMjA1LCAyNDIsIDc5LCAxNTAsIDQ3LCAyMDQsIDI2LCAxODMsIDIwNSwgMjQyLCA3OSwgCi0gICAgMTUwLCA0NywgMjA0LCAyNiwgMTUzLCAyMDQsIDQ2LCAyMDUsIDI0MiwgNzksIDE1MCwgNDcsIDIwNCwgMjYsIDE1MywgMjQxLCAKLSAgICAxNzYsIDIwNSwgMjQyLCA3OSwgMTUwLCA0NywgMjA0LCAyNiwgMjExLCAyMzgsIDI0MSwgMTc2LCAyMDUsIDI0MiwgNzksIAotICAgIDE1MCwgNDcsIDIwNCwgMjYsIDIxMSwgMjM4LCAyMDQsIDQ2LCAyMDUsIDI0MiwgNzksIDE1MCwgNDcsIDk2LCAyMDgsIDg2LCAKLSAgICAyNTAsIDk0LCAxNzcsIDIwOCwgODYsIDI1MCwgOTQsIDg2LCAyMDgsIDg2LCAyNTAsIDk0LCAxODMsIDIwOCwgODYsIDI1MCwgCi0gICAgOTQsIDk2LCA2MSwgNTMsIDIwNCwgNSwgMjA4LCA4NiwgMjUwLCA5NCwgMTc3LCA2MSwgNTMsIDIwNCwgNSwgMjA4LCA4NiwgCi0gICAgMjUwLCA5NCwgODYsIDYxLCA1MywgMjA0LCA1LCAyMDgsIDg2LCAyNTAsIDk0LCAxODMsIDYxLCA1MywgMjA0LCA1LCAyMDgsIAotICAgIDg2LCAyNTAsIDk0LCA5NiwgNTMsIDMsIDIyMSwgMTYyLCAyMDksIDI0OCwgMTc3LCA1MywgMywgMjIxLCAxNjIsIDIwOSwgCi0gICAgMjQ4LCA4NiwgNTMsIDMsIDIyMSwgMTYyLCAyMDksIDI0OCwgMTgzLCA1MywgMywgMjIxLCAxNjIsIDIwOSwgMjQ4LCA3OSwgCi0gICAgNTMsIDIxMywgNzYsIDIwNCwgMjQsIDEwNSwgNzksIDUzLCAyMTMsIDc2LCAyMDQsIDI0LCAxMjAsIDIwOSwgNTcsIDc5LCAKLSAgICA1MywgMjEzLCA3NiwgMjA0LCAyNCwgMTE4LCAyMzcsIDEzNywgNzksIDUzLCAyMTMsIDc2LCAyMDQsIDI0LCAxMTgsIDIwOSwgCi0gICAgNjAsIDk2LCAyNDcsIDI0NSwgNjEsIDQ3LCA4NiwgMjQ3LCAyNDgsIDIxMywgNzgsIDYxLCA0NywgOTYsIDIwOCwgMTQ1LCAKLSAgICAyMTMsIDc4LCA2MSwgNDcsIDg2LCAyMDgsIDE0NSwgMjEzLCA3OCwgNjEsIDQ3LCA5NiwgMjI3LCAyMTYsIDYxLCA0NywgODYsIAotICAgIDIxNiwgMTAsIDYxLCA0NywgOTYsIDIxNiwgMTAsIDYxLCA0NywgODYsIDIyNywgMjE2LCA2MSwgNDcsIDk2LCAyNDksIDI0LCAKLSAgICAyMTMsIDc3LCA2MSwgNDcsIDg2LCAyNDksIDI0LCAyMTMsIDc3LCA2MSwgNDcsIDk2LCAyMzksIDExNywgMjEzLCA3NywgNjEsIAotICAgIDQ3LCA4NiwgMjM5LCAxMTcsIDIxMywgNzcsIDYxLCA0NywgNjEsIDUzLCAyMTMsIDc2LCAyMDQsIDI0LCAxMDUsIDYxLCA1MywgCi0gICAgMjEzLCA3NiwgMjA0LCAyNCwgMTIwLCAyMDksIDU3LCAyMDIsIDI2LCAyNDAsIDEwMiwgMjI0LCA1MiwgMjQwLCAxMDIsIAotICAgIDI0MCwgMTAzLCAzLCAyMDksIDgwLCAyMjIsIDIyMiwgMjQwLCAxMDIsIDIwOSwgNjIsIDI0MCwgMTAyLCAyNDAsIDEwMywgMywgCi0gICAgMjM3LCA2MywgMjE1LCAyMjEsIDI0MCwgMTAyLCAyMzYsIDIwLCAyNDAsIDEwMiwgMiwgNzYsIDIwOSwgOTMsIDIzNiwgNTIsIAotICAgIDI0NSwgMTQ2LCAyMjcsIDEwMiwgMjQwLCAxMDIsIDIxNCwgMTg4LCAyMDcsIDE3OSwgMjA2LCAyNDAsIDI0MCwgMTAyLCAKLSAgICAyNDYsIDE2MSwgMjA0LCA1NywgMTIsIDE1LCAyMzUsIDE1MiwgMTIsIDE1LCAyMzUsIDE1MSwgMTIsIDE1LCAyMzUsIDE1MCwgCi0gICAgMTIsIDE1LCAyMzUsIDE0OSwgMTIsIDE1LCAyMzUsIDE0OCwgMTIsIDE1LCAyMzUsIDE0NywgMTIsIDE1LCAyMzUsIDE0NiwgCi0gICAgMTIsIDE1LCAyMzUsIDE0NSwgMTIsIDE1LCAyMzUsIDE0NCwgMTIsIDE1LCAyMzUsIDE0MywgMTIsIDE1LCAyMzUsIDE0MiwgCi0gICAgMTIsIDE1LCAyMzUsIDE0MSwgMTIsIDE1LCAyMzUsIDE0MCwgMTIsIDE1LCAyMzUsIDEzOSwgMTIsIDE1LCAyMzUsIDEzOCwgCi0gICAgMTIsIDE1LCAyMzUsIDEzNywgMTIsIDE1LCAyMzUsIDEzNiwgMTIsIDE1LCAyMzUsIDEzNSwgMTIsIDE1LCAyMzUsIDEzNCwgCi0gICAgMTIsIDE1LCAyMzUsIDEzMywgMTIsIDE1LCAyMzUsIDEzMiwgMTIsIDE1LCAyMzUsIDEzMSwgMTIsIDE1LCAyMzUsIDEzMCwgCi0gICAgMTIsIDE1LCAyMzUsIDEyOSwgMTIsIDE1LCAyMzUsIDEyOCwgMTIsIDE1LCAyMzUsIDEyNywgMTIsIDE1LCAyMzUsIDEyNiwgCi0gICAgMTIsIDE1LCAyMzUsIDEyNSwgMTIsIDE1LCAyMzUsIDEyNCwgMTIsIDE1LCAyMzUsIDEyMywgMTIsIDE1LCAyMzUsIDEyMiwgCi0gICAgMTIsIDE1LCAyMzUsIDEyMSwgMTIsIDE1LCAyMzUsIDEyMCwgMTIsIDE1LCAyMzUsIDExOSwgMTIsIDE1LCAyMzUsIDExOCwgCi0gICAgMTIsIDE1LCAyMzUsIDExNywgMTIsIDE1LCAyMzUsIDExNiwgMTIsIDE1LCAyMzUsIDExNSwgMTIsIDE1LCAyMzUsIDExNCwgCi0gICAgMTIsIDE1LCAyMzUsIDExMywgMTIsIDE1LCAyMzUsIDExMiwgMTIsIDE1LCAyMzUsIDExMSwgMTIsIDE1LCAyMzUsIDExMCwgCi0gICAgMTIsIDE1LCAyMzUsIDEwOSwgMTIsIDE1LCAyMzUsIDEwOCwgMTIsIDE1LCAyMzUsIDEwNywgMTIsIDE1LCAyMzUsIDEwNiwgCi0gICAgMTIsIDE1LCAyMzUsIDEwNSwgMTIsIDE1LCAyMzUsIDEwNCwgMTIsIDE1LCAyMzUsIDEwMywgMTIsIDE1LCAyMzUsIDEwMiwgCi0gICAgMTIsIDE1LCAyMzUsIDEwMSwgMTIsIDE1LCAyMzUsIDEwMCwgMTIsIDE1LCAyMzUsIDk5LCAxMiwgMTUsIDIzNSwgOTgsIDEyLCAKLSAgICAxNSwgMjM1LCA5NywgMTIsIDE1LCAyMzUsIDk2LCAxMiwgMTUsIDIzNSwgOTUsIDEyLCAxNSwgMjM1LCA5NCwgMTIsIDE1LCAKLSAgICAyMzUsIDkzLCAxMiwgMTUsIDIzNSwgOTIsIDEyLCAxNSwgMjM1LCA5MSwgMTIsIDE1LCAyMzUsIDkwLCAxMiwgMTUsIDIzNSwgCi0gICAgODksIDEyLCAxNSwgMjM1LCA4OCwgMTIsIDE1LCAyMzUsIDg3LCAxMiwgMTUsIDIzNSwgODYsIDEyLCAxNSwgMjM1LCA4NSwgCi0gICAgMTIsIDE1LCAyMzUsIDg0LCAxMiwgMTUsIDIzNSwgODMsIDEyLCAxNSwgMjM1LCA4MiwgMTIsIDE1LCAyMzUsIDgxLCAxMiwgCi0gICAgMTUsIDIzNSwgODAsIDEyLCAxNSwgMjM1LCA3OSwgMTIsIDE1LCAyMzUsIDc4LCAxMiwgMTUsIDIzNSwgNzcsIDEyLCAxNSwgCi0gICAgMjM1LCA3NiwgMTIsIDE1LCAyMzUsIDc1LCAxMiwgMTUsIDIzNSwgNzQsIDEyLCAxNSwgMjM1LCA3MywgMTIsIDE1LCAyMzUsIAotICAgIDcyLCAxMiwgMTUsIDIzNSwgNzEsIDEyLCAxNSwgMjM1LCA3MCwgMTIsIDE1LCAyMzUsIDY5LCAxMiwgMTUsIDIzNSwgNjgsIAotICAgIDEyLCAxNSwgMjM1LCA2NywgMTIsIDE1LCAyMzUsIDY2LCAxMiwgMTUsIDIzNSwgNjUsIDEyLCAxNSwgMjM1LCA2NCwgMTIsIAotICAgIDE1LCAyMzUsIDYzLCAxMiwgMTUsIDIzNSwgNjIsIDEyLCAxNSwgMjM1LCA2MSwgMTIsIDE1LCAyMzUsIDYwLCAxMiwgMTUsIAotICAgIDIzNSwgNTksIDEyLCAxNSwgMjM1LCA1OCwgMTIsIDE1LCAyMzUsIDU3LCAxMiwgMTUsIDIzNSwgNTYsIDEyLCAxNSwgMjM1LCAKLSAgICA1NSwgMTIsIDE1LCAyMzUsIDU0LCAxMiwgMTUsIDIzNSwgNTMsIDEyLCAxNSwgMjM1LCA1MiwgMTIsIDE1LCAyMzUsIDUxLCAKLSAgICAxMiwgMTUsIDIzNSwgNTAsIDEyLCAxNSwgMjM1LCA0OSwgMTIsIDE1LCAyMzUsIDQ4LCAxMiwgMTUsIDIzNSwgNDcsIDEyLCAKLSAgICAxNSwgMjM1LCA0NiwgMTIsIDE1LCAyMzUsIDQ1LCAxMiwgMTUsIDIzNSwgNDQsIDEyLCAxNSwgMjM1LCA0MywgMTIsIDE1LCAKLSAgICAyMzUsIDQyLCAxMiwgMTUsIDIzNSwgNDEsIDEyLCAxNSwgMjM1LCA0MCwgMTIsIDE1LCAyMzUsIDM5LCAxMiwgMTUsIDIzNSwgCi0gICAgMzgsIDEyLCAxNSwgMjM1LCAzNywgMTIsIDE1LCAyMzUsIDM2LCAxMiwgMTUsIDIzNSwgMzUsIDEyLCAxNSwgMjM1LCAzNCwgCi0gICAgMTIsIDE1LCAyMzUsIDMzLCAxMiwgMTUsIDIzNSwgMzIsIDEyLCAxNSwgMjM1LCAzMSwgMTIsIDE1LCAyMzUsIDMwLCAxMiwgCi0gICAgMTUsIDIzNSwgMjksIDEyLCAxNSwgMjM1LCAyOCwgMTIsIDE1LCAyMzUsIDI3LCAxMiwgMTUsIDIzNSwgMjYsIDEyLCAxNSwgCi0gICAgMjM1LCAyNSwgMTIsIDE1LCAyMzUsIDI0LCAxMiwgMTUsIDIzNSwgMjMsIDEyLCAxNSwgMjM1LCAyMiwgMTIsIDE1LCAyMzUsIAotICAgIDIxLCAxMiwgMTUsIDIzNSwgMjAsIDEyLCAxNSwgMjM1LCAxOSwgMTIsIDE1LCAyMzUsIDE4LCAxMiwgMTUsIDIzNSwgMTcsIAotICAgIDEyLCAxNSwgMjM1LCAxNiwgMTIsIDE1LCAyMzUsIDE1LCAxMiwgMTUsIDIzNSwgMTQsIDEyLCAxNSwgMjM1LCAxMywgMTIsIAotICAgIDE1LCAyMzUsIDEyLCAxMiwgMTUsIDIzNSwgMTEsIDEyLCAxNSwgMjM1LCAxMCwgMTIsIDE1LCAyMzUsIDksIDEyLCAxNSwgCi0gICAgMjM1LCA4LCAxMiwgMTUsIDIzNSwgNywgMTIsIDE1LCAyMzUsIDYsIDEyLCAxNSwgMjM1LCA1LCAxMiwgMTUsIDIzNSwgNCwgCi0gICAgMTIsIDE1LCAyMzUsIDMsIDEyLCAxNSwgMjM1LCAyLCAxMiwgMTUsIDIzNSwgMSwgMTIsIDE1LCAyMzUsIDAsIDEyLCAxNSwgCi0gICAgMjM0LCAyNTUsIDEyLCAxNSwgMjM0LCAyNTQsIDEyLCAxNSwgMjM0LCAyNTMsIDEyLCAxNSwgMjM0LCAyNTIsIDEyLCAxNSwgCi0gICAgMjM0LCAyNTEsIDEyLCAxNSwgMjM0LCAyNTAsIDEyLCAxNSwgMjM0LCAyNDksIDEyLCAxNSwgMjM0LCAyNDgsIDEyLCAxNSwgCi0gICAgMjM0LCAyNDcsIDEyLCAxNSwgMjM0LCAyNDYsIDEyLCAxNSwgMjM0LCAyNDUsIDEyLCAxNSwgMjM0LCAyNDQsIDEyLCAxNSwgCi0gICAgMjM0LCAyNDMsIDEyLCAxNSwgMjM0LCAyNDIsIDEyLCAxNSwgMjM0LCAyNDEsIDEyLCAxNSwgMjM0LCAyNDAsIDEyLCAxNSwgCi0gICAgMjM0LCAyMzksIDEyLCAxNSwgMjM0LCAyMzgsIDEyLCAxNSwgMjM0LCAyMzcsIDEyLCAxNSwgMjM0LCAyMzYsIDEyLCAxNSwgCi0gICAgMjM0LCAyMzUsIDEyLCAxNSwgMjM0LCAyMzQsIDEyLCAxNSwgMjM0LCAyMzMsIDEyLCAxNSwgMjM0LCAyMzIsIDEyLCAxNSwgCi0gICAgMjM0LCAyMzEsIDEyLCAxNSwgMjM0LCAyMzAsIDEyLCAxNSwgMjM0LCAyMjksIDEyLCAxNSwgMjM0LCAyMjgsIDEyLCAxNSwgCi0gICAgMjM0LCAyMjcsIDEyLCAxNSwgMjM0LCAyMjYsIDEyLCAxNSwgMjM0LCAyMjUsIDEyLCAxNSwgMjM0LCAyMjQsIDEyLCAxNSwgCi0gICAgMjM0LCAyMjMsIDEyLCAxNSwgMjM0LCAyMjIsIDEyLCAxNSwgMjM0LCAyMjEsIDEyLCAxNSwgMjM0LCAyMjAsIDEyLCAxNSwgCi0gICAgMjM0LCAyMTksIDEyLCAxNSwgMjM0LCAyMTgsIDEyLCAxNSwgMjM0LCAyMTcsIDEyLCAxNSwgMjM0LCAyMTYsIDEyLCAxNSwgCi0gICAgMjM0LCAyMTUsIDEyLCAxNSwgMjM0LCAyMTQsIDEyLCAxNSwgMjM0LCAyMTMsIDEyLCAxNSwgMjM0LCAyMTIsIDEyLCAxNSwgCi0gICAgMjM0LCAyMTEsIDEyLCAxNSwgMjM0LCAyMTAsIDEyLCAxNSwgMjM0LCAyMDksIDEyLCAxNSwgMjM0LCAyMDgsIDEyLCAxNSwgCi0gICAgMjM0LCAyMDcsIDEyLCAxNSwgMjM0LCAyMDYsIDEyLCAxNSwgMjM0LCAyMDUsIDEyLCAxNSwgMjM0LCAyMDQsIDEyLCAxNSwgCi0gICAgMjM0LCAyMDMsIDEyLCAxNSwgMjM0LCAyMDIsIDEyLCAxNSwgMjM0LCAyMDEsIDEyLCAxNSwgMjM0LCAyMDAsIDEyLCAxNSwgCi0gICAgMjM0LCAxOTksIDEyLCAxNSwgMjM0LCAxOTgsIDEyLCAxNSwgMjM0LCAxOTcsIDEyLCAxNSwgMjM0LCAxOTYsIDEyLCAxNSwgCi0gICAgMjM0LCAxOTUsIDEyLCAxNSwgMjM0LCAxOTQsIDEyLCAxNSwgMjM0LCAxOTMsIDEyLCAxNSwgMjM0LCAxOTIsIDEyLCAxNSwgCi0gICAgMjM0LCAxOTEsIDEyLCAxNSwgMjM0LCAxOTAsIDEyLCAxNSwgMjM0LCAxODksIDEyLCAxNSwgMjM0LCAxODgsIDEyLCAxNSwgCi0gICAgMjM0LCAxODcsIDEyLCAxNSwgMjM0LCAxODYsIDEyLCAxNSwgMjM0LCAxODUsIDEyLCAxNSwgMjM0LCAxODQsIDEyLCAxNSwgCi0gICAgMjM0LCAxODMsIDEyLCAxNSwgMjM0LCAxODIsIDEyLCAxNSwgMjM0LCAxODEsIDEyLCAxNSwgMjM0LCAxODAsIDEyLCAxNSwgCi0gICAgMjM0LCAxNzksIDEyLCAxNSwgMjM0LCAxNzgsIDEyLCAxNSwgMjM0LCAxNzcsIDEyLCAxNSwgMjM0LCAxNzYsIDEyLCAxNSwgCi0gICAgMjM0LCAxNzUsIDEyLCAxNSwgMjM0LCAxNzQsIDEyLCAxNSwgMjM0LCAxNzMsIDEyLCAxNSwgMjM0LCAxNzIsIDEyLCAxNSwgCi0gICAgMjM0LCAxNzEsIDEyLCAxNSwgMjM0LCAxNzAsIDEyLCAxNSwgMjM0LCAxNjksIDEyLCAxNSwgMjM0LCAxNjgsIDEyLCAxNSwgCi0gICAgMjM0LCAxNjcsIDEyLCAxNSwgMjM0LCAxNjYsIDEyLCAxNSwgMjM0LCAxNjUsIDEyLCAxNSwgMjM0LCAxNjQsIDEyLCAxNSwgCi0gICAgMjM0LCAxNjMsIDEyLCAxNSwgMjM0LCAxNjIsIDEyLCAxNSwgMjM0LCAxNjEsIDEyLCAxNSwgMjM0LCAxNjAsIDEyLCAxNSwgCi0gICAgMjM0LCAxNTksIDEyLCAxNSwgMjM0LCAxNTgsIDEyLCAxNSwgMjM0LCAxNTcsIDEyLCAxNSwgMjM0LCAxNTYsIDEyLCAxNSwgCi0gICAgMjM0LCAxNTUsIDEyLCAxNSwgMjM0LCAxNTQsIDEyLCAxNSwgMjM0LCAxNTMsIDEyLCAxNSwgMjM0LCAxNTIsIDEyLCAxNSwgCi0gICAgMjM0LCAxNTEsIDEyLCAxNSwgMjM0LCAxNTAsIDEyLCAxNSwgMjM0LCAxNDksIDEyLCAxNSwgMjM0LCAxNDgsIDEyLCAxNSwgCi0gICAgMjM0LCAxNDcsIDEyLCAxNSwgMjM0LCAxNDYsIDEyLCAxNSwgMjM0LCAxNDUsIDEyLCAxNSwgMjM0LCAxNDQsIDEyLCAxNSwgCi0gICAgMjM0LCAxNDMsIDEyLCAxNSwgMjM0LCAxNDIsIDEyLCAxNSwgMjM0LCAxNDEsIDEyLCAxNSwgMjM0LCAxNDAsIDEyLCAxNSwgCi0gICAgMjM0LCAxMzksIDEyLCAxNSwgMjM0LCAxMzgsIDEyLCAxNSwgMjM0LCAxMzcsIDEyLCAxNSwgMjM0LCAxMzYsIDEyLCAxNSwgCi0gICAgMjM0LCAxMzUsIDEyLCAxNSwgMjM0LCAxMzQsIDEyLCAxNSwgMjM0LCAxMzMsIDEyLCAxNSwgMjM0LCAxMzIsIDEyLCAxNSwgCi0gICAgMjM0LCAxMzEsIDEyLCAxNSwgMjM0LCAxMzAsIDEyLCAxNSwgMjM0LCAxMjksIDEyLCAxNSwgMjM0LCAxMjgsIDEyLCAxNSwgCi0gICAgMjM0LCAxMjcsIDEyLCAxNSwgMjM0LCAxMjYsIDEyLCAxNSwgMjM0LCAxMjUsIDEyLCAxNSwgMjM0LCAxMjQsIDEyLCAxNSwgCi0gICAgMjM0LCAxMjMsIDEyLCAxNSwgMjM0LCAxMjIsIDEyLCAxNSwgMjM0LCAxMjEsIDEyLCAxNSwgMjM0LCAxMjAsIDEyLCAxNSwgCi0gICAgMjM0LCAxMTksIDEyLCAxNSwgMjM0LCAxMTgsIDEyLCAxNSwgMjM0LCAxMTcsIDEyLCAxNSwgMjM0LCAxMTYsIDEyLCAxNSwgCi0gICAgMjM0LCAxMTUsIDEyLCAxNSwgMjM0LCAxMTQsIDEyLCAxNSwgMjM0LCAxMTMsIDEyLCAxNSwgMjM0LCAxMTIsIDEyLCAxNSwgCi0gICAgMjM0LCAxMTEsIDEyLCAxNSwgMjM0LCAxMTAsIDEyLCAxNSwgMjM0LCAxMDksIDEyLCAxNSwgMjM0LCAxMDgsIDEyLCAxNSwgCi0gICAgMjM0LCAxMDcsIDEyLCAxNSwgMjM0LCAxMDYsIDEyLCAxNSwgMjM0LCAxMDUsIDEyLCAxNSwgMjM0LCAxMDQsIDEyLCAxNSwgCi0gICAgMjM0LCAxMDMsIDEyLCAxNSwgMjM0LCAxMDIsIDEyLCAxNSwgMjM0LCAxMDEsIDEyLCAxNSwgMjM0LCAxMDAsIDEyLCAxNSwgCi0gICAgMjM0LCA5OSwgMTIsIDE1LCAyMzQsIDk4LCAxMiwgMTUsIDIzNCwgOTcsIDEyLCAxNSwgMjM0LCA5NiwgMTIsIDE1LCAyMzQsIAotICAgIDk1LCAxMiwgMTUsIDIzNCwgOTQsIDEyLCAxNSwgMjM0LCA5MywgMTIsIDE1LCAyMzQsIDkyLCAxMiwgMTUsIDIzNCwgOTEsIAotICAgIDEyLCAxNSwgMjM0LCA5MCwgMTIsIDE1LCAyMzQsIDg5LCAxMiwgMTUsIDIzNCwgODgsIDEyLCAxNSwgMjM0LCA4NywgMTIsIAotICAgIDE1LCAyMzQsIDg2LCAxMiwgMTUsIDIzNCwgODUsIDEyLCAxNSwgMjM0LCA4NCwgMTIsIDE1LCAyMzQsIDgzLCAxMiwgMTUsIAotICAgIDIzNCwgODIsIDEyLCAxNSwgMjM0LCA4MSwgMTIsIDE1LCAyMzQsIDgwLCAxMiwgMTUsIDIzNCwgNzksIDEyLCAxNSwgMjM0LCAKLSAgICA3OCwgMTIsIDE1LCAyMzQsIDc3LCAxMiwgMTUsIDIzNCwgNzYsIDEyLCAxNSwgMjM0LCA3NSwgMTIsIDE1LCAyMzQsIDc0LCAKLSAgICAxMiwgMTUsIDIzNCwgNzMsIDEyLCAxNSwgMjM0LCA3MiwgMTIsIDE1LCAyMzQsIDcxLCAxMiwgMTUsIDIzNCwgNzAsIDEyLCAKLSAgICAxNSwgMjM0LCA2OSwgMTIsIDE1LCAyMzQsIDY4LCAxMiwgMTUsIDIzNCwgNjcsIDEyLCAxNSwgMjM0LCA2NiwgMTIsIDE1LCAKLSAgICAyMzQsIDY1LCAxMiwgMTUsIDIzNCwgNjQsIDEyLCAxNSwgMjM0LCA2MywgMTIsIDE1LCAyMzQsIDYyLCAxMiwgMTUsIDIzNCwgCi0gICAgNjEsIDEyLCAxNSwgMjM0LCA2MCwgMTIsIDE1LCAyMzQsIDU5LCAxMiwgMTUsIDIzNCwgNTgsIDEyLCAxNSwgMjM0LCA1NywgCi0gICAgMTIsIDE1LCAyMzQsIDU2LCAxMiwgMTUsIDIzNCwgNTUsIDEyLCAxNSwgMjM0LCA1NCwgMTIsIDE1LCAyMzQsIDUzLCAxMiwgCi0gICAgMTUsIDIzNCwgNTIsIDEyLCAxNSwgMjM0LCA1MSwgMTIsIDE1LCAyMzQsIDUwLCAxMiwgMTUsIDIzNCwgNDksIDEyLCAxNSwgCi0gICAgMjM0LCA0OCwgMTIsIDE1LCAyMzQsIDQ3LCAxMiwgMTUsIDIzNCwgNDYsIDEyLCAxNSwgMjM0LCA0NSwgMTIsIDE1LCAyMzQsIAotICAgIDQ0LCAxMiwgMTUsIDIzNCwgNDMsIDEyLCAxNSwgMjM0LCA0MiwgMTIsIDE1LCAyMzQsIDQxLCAxMiwgMTUsIDIzNCwgNDAsIAotICAgIDEyLCAxNSwgMjM0LCAzOSwgMTIsIDE1LCAyMzQsIDM4LCAxMiwgMTUsIDIzNCwgMzcsIDEyLCAxNSwgMjM0LCAzNiwgMTIsIAotICAgIDE1LCAyMzQsIDM1LCAxMiwgMTUsIDIzNCwgMzQsIDEyLCAxNSwgMjM0LCAzMywgMTIsIDE1LCAyMzQsIDMyLCAxMiwgMTUsIAotICAgIDIzNCwgMzEsIDEyLCAxNSwgMjM0LCAzMCwgMTIsIDE1LCAyMzQsIDI5LCAxMiwgMTUsIDIzNCwgMjgsIDEyLCAxNSwgMjM0LCAKLSAgICAyNywgMTIsIDE1LCAyMzQsIDI2LCAxMiwgMTUsIDIzNCwgMjUsIDEyLCAxNSwgMjM0LCAyNCwgMTIsIDE1LCAyMzQsIDIzLCAKLSAgICAxMiwgMTUsIDIzNCwgMjIsIDEyLCAxNSwgMjM0LCAyMSwgMTIsIDE1LCAyMzQsIDIwLCAxMiwgMTUsIDIzNCwgMTksIDEyLCAKLSAgICAxNSwgMjM0LCAxOCwgMTIsIDE1LCAyMzQsIDE3LCAxMiwgMTUsIDIzNCwgMTYsIDEyLCAxNSwgMjM0LCAxNSwgMTIsIDE1LCAKLSAgICAyMzQsIDE0LCAxMiwgMTUsIDIzNCwgMTMsIDEyLCAxNSwgMjM0LCAxMiwgMTIsIDE1LCAyMzQsIDExLCAxMiwgMTUsIDIzNCwgCi0gICAgMTAsIDEyLCAxNSwgMjM0LCA5LCAxMiwgMTUsIDIzNCwgOCwgMTIsIDE1LCAyMzQsIDcsIDEyLCAxNSwgMjM0LCA2LCAxMiwgCi0gICAgMTUsIDIzNCwgNSwgMTIsIDE1LCAyMzQsIDQsIDEyLCAxNSwgMjM0LCAzLCAxMiwgMTUsIDIzNCwgMiwgMTIsIDE1LCAyMzQsIAotICAgIDEsIDEyLCAxNSwgMjM0LCAwLCAxMiwgMTUsIDIzMywgMjU1LCAxMiwgMTUsIDIzMywgMjU0LCAxMiwgMTUsIDIzMywgMjUzLCAKLSAgICAxMiwgMTUsIDIzMywgMjUyLCAxMiwgMTUsIDIzMywgMjUxLCAxMiwgMTUsIDIzMywgMjUwLCAxMiwgMTUsIDIzMywgMjQ5LCAKLSAgICAxMiwgMTUsIDIzMywgMjQ4LCAxMiwgMTUsIDIzMywgMjQ3LCAxMiwgMTUsIDIzMywgMjQ2LCAxMiwgMTUsIDIzMywgMjQ1LCAKLSAgICAxMiwgMTUsIDIzMywgMjQ0LCAxMiwgMTUsIDIzMywgMjQzLCAxMiwgMTUsIDIzMywgMjQyLCAxMiwgMTUsIDIzMywgMjQxLCAKLSAgICAxMiwgMTUsIDIzMywgMjQwLCAxMiwgMTUsIDIzMywgMjM5LCAxMiwgMTUsIDIzMywgMjM4LCAxMiwgMTUsIDIzMywgMjM3LCAKLSAgICAxMiwgMTUsIDIzMywgMjM2LCAxMiwgMTUsIDIzMywgMjM1LCAxMiwgMTUsIDIzMywgMjM0LCAxMiwgMTUsIDIzMywgMjMzLCAKLSAgICAxMiwgMTUsIDIzMywgMjMyLCAxMiwgMTUsIDIzMywgMjMxLCAxMiwgMTUsIDIzMywgMjMwLCAxMiwgMTUsIDIzMywgMjI5LCAKLSAgICAxMiwgMTUsIDIzMywgMjI4LCAxMiwgMTUsIDIzMywgMjI3LCAxMiwgMTUsIDIzMywgMjI2LCAxMiwgMTUsIDIzMywgMjI1LCAKLSAgICAxMiwgMTUsIDIzMywgMjI0LCAxMiwgMTUsIDIzMywgMjIzLCAxMiwgMTUsIDIzMywgMjIyLCAxMiwgMTUsIDIzMywgMjIxLCAKLSAgICAxMiwgMTUsIDIzMywgMjIwLCAxMiwgMTUsIDIzMywgMjE5LCAxMiwgMTUsIDIzMywgMjE4LCAxMiwgMTUsIDIzMywgMjE3LCAKLSAgICAxMiwgMTUsIDIzMywgMjE2LCAxMiwgMTUsIDIzMywgMjE1LCAxMiwgMTUsIDIzMywgMjE0LCAxMiwgMTUsIDIzMywgMjEzLCAKLSAgICAxMiwgMTUsIDIzMywgMjEyLCAxMiwgMTUsIDIzMywgMjExLCAxMiwgMTUsIDIzMywgMjEwLCAxMiwgMTUsIDIzMywgMjA5LCAKLSAgICAxMiwgMTUsIDIzMywgMjA4LCAxMiwgMTUsIDIzMywgMjA3LCAxMiwgMTUsIDIzMywgMjA2LCAxMiwgMTUsIDIzMywgMjA1LCAKLSAgICAxMiwgMTUsIDIzMywgMjA0LCAxMiwgMTUsIDIzMywgMjAzLCAxMiwgMTUsIDIzMywgMjAyLCAxMiwgMTUsIDIzMywgMjAxLCAKLSAgICAxMiwgMTUsIDIzMywgMjAwLCAxMiwgMTUsIDIzMywgMTk5LCAxMiwgMTUsIDIzMywgMTk4LCAxMiwgMTUsIDIzMywgMTk3LCAKLSAgICAxMiwgMTUsIDIzMywgMTk2LCAxMiwgMTUsIDIzMywgMTk1LCAxMiwgMTUsIDIzMywgMTk0LCAxMiwgMTUsIDIzMywgMTkzLCAKLSAgICAxMiwgMTUsIDIzMywgMTkyLCAxMiwgMTUsIDIzMywgMTkxLCAxMiwgMTUsIDIzMywgMTkwLCAxMiwgMTUsIDIzMywgMTg5LCAKLSAgICAxMiwgMTUsIDIzMywgMTg4LCAxMiwgMTUsIDIzMywgMTg3LCAxMiwgMTUsIDIzMywgMTg2LCAxMiwgMTUsIDIzMywgMTg1LCAKLSAgICAxMiwgMTUsIDIzMywgMTg0LCAxMiwgMTUsIDIzMywgMTgzLCAxMiwgMTUsIDIzMywgMTgyLCAxMiwgMTUsIDIzMywgMTgxLCAKLSAgICAxMiwgMTUsIDIzMywgMTgwLCAxMiwgMTUsIDIzMywgMTc5LCAxMiwgMTUsIDIzMywgMTc4LCAxMiwgMTUsIDIzMywgMTc3LCAKLSAgICAxMiwgMTUsIDIzMywgMTc2LCAxMiwgMTUsIDIzMywgMTc1LCAxMiwgMTUsIDIzMywgMTc0LCAxMiwgMTUsIDIzMywgMTczLCAKLSAgICAxMiwgMTUsIDIzMywgMTcyLCAxMiwgMTUsIDIzMywgMTcxLCAxMiwgMTUsIDIzMywgMTcwLCAxMiwgMTUsIDIzMywgMTY5LCAKLSAgICAxMiwgMTUsIDIzMywgMTY4LCAxMiwgMTUsIDIzMywgMTY3LCAxMiwgMTUsIDIzMywgMTY2LCAxMiwgMTUsIDIzMywgMTY1LCAKLSAgICAxMiwgMTUsIDIzMywgMTY0LCAxMiwgMTUsIDIzMywgMTYzLCAxMiwgMTUsIDIzMywgMTYyLCAxMiwgMTUsIDIzMywgMTYxLCAKLSAgICAxMiwgMTUsIDIzMywgMTYwLCAxMiwgMTUsIDIzMywgMTU5LCAxMiwgMTUsIDIzMywgMTU4LCAxMiwgMTUsIDIzMywgMTU3LCAKLSAgICAxMiwgMTUsIDIzMywgMTU2LCAxMiwgMTUsIDIzMywgMTU1LCAxMiwgMTUsIDIzMywgMTU0LCAxMiwgMTUsIDIzMywgMTUzLCAKLSAgICAxMiwgMTUsIDIzMywgMTUyLCAxMiwgMTUsIDIzMywgMTUxLCAxMiwgMTUsIDIzMywgMTUwLCAxMiwgMTUsIDIzMywgMTQ5LCAKLSAgICAxMiwgMTUsIDIzMywgMTQ4LCAxMiwgMTUsIDIzMywgMTQ3LCAxMiwgMTUsIDIzMywgMTQ2LCAxMiwgMTUsIDIzMywgMTQ1LCAKLSAgICAxMiwgMTUsIDIzMywgMTQ0LCAxMiwgMTUsIDIzMywgMTQzLCAxMiwgMTUsIDIzMywgMTQyLCAxMiwgMTUsIDIzMywgMTQxLCAKLSAgICAxMiwgMTUsIDIzMywgMTQwLCAxMiwgMTUsIDIzMywgMTM5LCAxMiwgMTUsIDIzMywgMTM4LCAxMiwgMTUsIDIzMywgMTM3LCAKLSAgICAxMiwgMTUsIDIzMywgMTM2LCAxMiwgMTUsIDIzMywgMTM1LCAxMiwgMTUsIDIzMywgMTM0LCAxMiwgMTUsIDIzMywgMTMzLCAKLSAgICAxMiwgMTUsIDIzMywgMTMyLCAxMiwgMTUsIDIzMywgMTMxLCAxMiwgMTUsIDIzMywgMTMwLCAxMiwgMTUsIDIzMywgMTI5LCAKLSAgICAxMiwgMTUsIDIzMywgMTI4LCAxMiwgMTUsIDIzMywgMTI3LCAxMiwgMTUsIDIzMywgMTI2LCAxMiwgMTUsIDIzMywgMTI1LCAKLSAgICAxMiwgMTUsIDIzMywgMTI0LCAxMiwgMTUsIDIzMywgMTIzLCAyMjgsIDE0LCAyMDksIDI1NSwgMTYwLCAyMTEsIDIyOCwgCi0gICAgMTYwLCAyNDAsIDIxMiwgODIsIDE2MCwgMjE3LCAzMSwgODIsIDE2MCwgNDIsIDU0LCAxNjAsIDI0MywgOTcsIDU0LCAxNjAsIAotICAgIDIxOCwgMjQ2LCA1NCwgMTYwLCAyNTAsIDIzNSwgMTYwLCAyNTAsIDE2MCwgMTYwLCA0OSwgMjE5LCA3NiwgMTYwLCA1MCwgCi0gICAgMjE5LCA3NiwgMTYwLCAyNTAsIDU5LCAxNjAsIDkxLCA1NCwgMTYwLCAyNDUsIDIzMywgMTYwLCAyMzUsIDIxOSwgMTYwLCAKLSAgICAyMzksIDEwMiwgMjExLCA2MSwgMTYwLCAyMTIsIDAsIDE2MCwgMTcsIDIwMiwgODQsIDE2MCwgMTcsIDEwNSwgMTYwLCAxNywgCi0gICAgMTA4LCAxNjAsIDE3LCAxNDcsIDE2MCwgMTcsIDE0OSwgMTYwLCAxNywgMTcwLCAxNjAsIDE3LCAxOTUsIDE2MCwgMTcsIAotICAgIDIxMywgMTExLCAxNjAsIDE3LCAxOTksIDE2MCwgMTcsIDIyMiwgNjMsIDE2MCwgMjQ1LCAyNDIsIDE2MCwgMjEzLCAxNDMsIAotICAgIDE2MCwgMjI3LCAxNzksIDU0LCAxNjAsIDI0MSwgMzUsIDU0LCAxNjAsIDIzNywgMjQ3LCA1NCwgMTYwLCAyMTcsIDQ3LCA4MiwgCi0gICAgMTYwLCAyNDUsIDIzMSwgMjUwLCA0OSwgMTYwLCA4LCA2LCAxLCA2MywgMTYwLCA4LCA2LCAxLCAyNDksIDI1NSwgMTYwLCA4LCAKLSAgICA2LCAxLCAyNDcsIDEyNSwgMTYwLCA4LCA2LCAxLCAyNDUsIDUxLCAxNjAsIDgsIDYsIDEsIDc0LCAxNjAsIDgsIDYsIDEsIAotICAgIDI0MCwgMTc0LCAxNjAsIDgsIDYsIDEsIDIzOSwgNzUsIDE2MCwgOCwgNiwgMSwgMjM3LCAxNzEsIDE2MCwgOCwgNiwgMSwgCi0gICAgNzUsIDE2MCwgOCwgNiwgMSwgMjMwLCAxODQsIDE2MCwgOCwgNiwgMSwgMjMwLCA1NCwgMTYwLCA4LCA2LCAxLCAxNTksIAotICAgIDE2MCwgOCwgNiwgMSwgMjI2LCAxODUsIDE2MCwgOCwgNiwgMSwgMjIzLCAxNjMsIDE2MCwgOCwgNiwgMSwgNzgsIDE2MCwgOCwgCi0gICAgNiwgMSwgMjE5LCAxODQsIDE2MCwgOCwgNiwgMSwgMjE3LCAxMzQsIDE2MCwgOCwgNiwgMSwgMTQ2LCAxNjAsIDgsIDYsIDEsIAotICAgIDE5NCwgMTYwLCA4LCA2LCAxLCAyMTAsIDY5LCAxNjAsIDgsIDYsIDEsIDY4LCAxNjAsIDgsIDYsIDEsIDIwNiwgMTY0LCAKLSAgICAxNjAsIDgsIDYsIDEsIDIwNCwgMTQ0LCAxNjAsIDgsIDYsIDEsIDIwMywgMTk2LCAxNjAsIDgsIDYsIDEsIDIwMywgMTI0LCAKLSAgICAxNjAsIDgsIDYsIDEsIDIwMiwgMTU5LCAxNjAsIDQ5LCA1MSwgMTU1LCAxNjAsIDIxNiwgNzQsIDIxMiwgMCwgMTYwLCA1MCwgCi0gICAgNTEsIDE1NSwgMTYwLCAyNDYsIDUzLCAyNTEsIDEzOCwgMTYwLCAxMjQsIDIyNywgMTE0LCAxNjAsIDIzNywgMjU0LCAyNTEsIAotICAgIDEzOCwgMTYwLCA4LCA1LCAxLCA2MywgMTYwLCA4LCA1LCAxLCAyNDksIDI1NSwgMTYwLCA4LCA1LCAxLCAyNDcsIDEyNSwgCi0gICAgMTYwLCA4LCA1LCAxLCAyNDUsIDUxLCAxNjAsIDgsIDUsIDEsIDc0LCAxNjAsIDgsIDUsIDEsIDI0MCwgMTc0LCAxNjAsIDgsIAotICAgIDUsIDEsIDIzOSwgNzUsIDE2MCwgOCwgNSwgMSwgMjM3LCAxNzEsIDE2MCwgOCwgNSwgMSwgNzUsIDE2MCwgOCwgNSwgMSwgCi0gICAgMjMwLCAxODQsIDE2MCwgOCwgNSwgMSwgMjMwLCA1NCwgMTYwLCA4LCA1LCAxLCAxNTksIDE2MCwgOCwgNSwgMSwgMjI2LCAKLSAgICAxODUsIDE2MCwgOCwgNSwgMSwgMjIzLCAxNjMsIDE2MCwgOCwgNSwgMSwgNzgsIDE2MCwgOCwgNSwgMSwgMjE5LCAxODQsIAotICAgIDE2MCwgOCwgNSwgMSwgMjE3LCAxMzQsIDE2MCwgOCwgNSwgMSwgMTQ2LCAxNjAsIDgsIDUsIDEsIDE5NCwgMTYwLCA4LCA1LCAKLSAgICAxLCAyMTAsIDY5LCAxNjAsIDgsIDUsIDEsIDY4LCAxNjAsIDgsIDUsIDEsIDIwNiwgMTY0LCAxNjAsIDgsIDUsIDEsIDIwNCwgCi0gICAgMTQ0LCAxNjAsIDgsIDUsIDEsIDIwMywgMTk2LCAxNjAsIDgsIDUsIDEsIDIwMywgMTI0LCAxNjAsIDgsIDUsIDEsIDIwMiwgCi0gICAgMTU5LCAxNjAsIDQ5LCAyNDUsIDkzLCAxNTUsIDE2MCwgODAsIDIyNywgMTE0LCAxNjAsIDUwLCAyNDUsIDkzLCAxNTUsIAotICAgIDE2MCwgMjA4LCAyMjcsIDI0NywgNjAsIDIwOSwgMjU1LCA1NywgMjE0LCA3MSwgNTcsIDIxNCwgNjAsIDU3LCAyMTQsIDQ5LCAKLSAgICA1NywgMjE0LCAzNywgNTcsIDIxNCwgMjYsIDU3LCAyMTQsIDE1LCA1NywgMjE0LCA0LCA1NywgMjEzLCAyNDksIDU3LCAyMTMsIAotICAgIDIzOCwgNTcsIDIxMywgMjMwLCA1NywgMjEzLCAyMjksIDU3LCAyMTMsIDIyOCwgNTcsIDIxMywgMjI3LCA1NywgMjEzLCAKLSAgICAyMjUsIDU3LCAyMTMsIDIyNCwgNTcsIDIxMywgMjIzLCA1NywgMjEzLCAyMjIsIDU3LCAyMTMsIDIyMSwgNTcsIDIxMywgCi0gICAgMjIwLCA1NywgMjEzLCAyMTksIDU3LCAyMTMsIDIxOCwgNTcsIDIxMywgMjE3LCA1NywgMjEzLCAyMTYsIDU3LCAyMTMsIAotICAgIDIxNCwgNTcsIDIxMywgMjEzLCA1NywgMjEzLCAyMTIsIDU3LCAyMTMsIDIxMSwgNTcsIDIxMywgMjEwLCA1NywgMjEzLCAKLSAgICAyMDksIDU3LCAyMTMsIDIwOCwgNTcsIDIxMywgMjA3LCA1NywgMjEzLCAyMDYsIDU3LCAyMTMsIDIwNSwgNTcsIDIxMywgCi0gICAgMjAzLCA1NywgMjEzLCAyMDIsIDU3LCAyMTMsIDIwMSwgNTcsIDIxMywgMjAwLCA1NywgMjEzLCAxOTksIDU3LCAyMTMsIAotICAgIDE5OCwgNTcsIDIxMywgMTk3LCA1NywgMjEzLCAxOTYsIDU3LCAyMTMsIDE5NSwgNTcsIDIxMywgMTk0LCA1NywgMjEzLCAKLSAgICAxOTIsIDU3LCAyMTMsIDE5MSwgNTcsIDIxMywgMTkwLCA1NywgMjEzLCAxODksIDU3LCAyMTMsIDE4OCwgNTcsIDIxMywgCi0gICAgMTg3LCA1NywgMjEzLCAxODYsIDU3LCAyMTMsIDE4NSwgNTcsIDIxMywgMTg0LCA1NywgMjEzLCAxODMsIDU3LCAyMTMsIAotICAgIDE4MSwgNTcsIDIxMywgMTgwLCA1NywgMjEzLCAxNzksIDU3LCAyMTMsIDE3OCwgNTcsIDIxMywgMTc3LCA1NywgMjEzLCAKLSAgICAxNzYsIDU3LCAyMTMsIDE3NSwgNTcsIDIxMywgMTc0LCA1NywgMjEzLCAxNzMsIDU3LCAyMTMsIDE3MiwgNTcsIDIxMywgCi0gICAgMTcwLCA1NywgMjEzLCAxNjksIDU3LCAyMTMsIDE2OCwgNTcsIDIxMywgMTY3LCA1NywgMjEzLCAxNjYsIDU3LCAyMTMsIAotICAgIDE2NSwgNTcsIDIxMywgMTY0LCA1NywgMjEzLCAxNjMsIDU3LCAyMTMsIDE2MiwgNTcsIDIxMywgMTYxLCA1NywgMjEzLCAKLSAgICAxNTksIDU3LCAyMTMsIDE1OCwgNTcsIDIxMywgMTU3LCA1NywgMjEzLCAxNTYsIDU3LCAyMTMsIDE1NSwgNTcsIDIxMywgCi0gICAgMTU0LCA1NywgMjEzLCAxNTMsIDU3LCAyMTMsIDE1MiwgNTcsIDIxMywgMTUxLCA1NywgMjEzLCAxNTAsIDU3LCAyMTQsIAotICAgIDE0NywgNTcsIDIxNCwgMTQ2LCA1NywgMjE0LCAxNDUsIDU3LCAyMTQsIDE0NCwgNTcsIDIxNCwgMTQzLCA1NywgMjE0LCAKLSAgICAxNDIsIDU3LCAyMTQsIDE0MSwgNTcsIDIxNCwgMTQwLCA1NywgMjE0LCAxMzksIDU3LCAyMTQsIDEzOCwgNTcsIDIxNCwgCi0gICAgMTM2LCA1NywgMjE0LCAxMzUsIDU3LCAyMTQsIDEzNCwgNTcsIDIxNCwgMTMzLCA1NywgMjE0LCAxMzIsIDU3LCAyMTQsIAotICAgIDEzMSwgNTcsIDIxNCwgMTMwLCA1NywgMjE0LCAxMjksIDU3LCAyMTQsIDEyOCwgNTcsIDIxNCwgMTI3LCA1NywgMjE0LCAKLSAgICAxMjUsIDU3LCAyMTQsIDEyNCwgNTcsIDIxNCwgMTIzLCA1NywgMjE0LCAxMjIsIDU3LCAyMTQsIDEyMSwgNTcsIDIxNCwgCi0gICAgMTIwLCA1NywgMjE0LCAxMTksIDU3LCAyMTQsIDExOCwgNTcsIDIxNCwgMTE3LCA1NywgMjE0LCAxMTYsIDU3LCAyMTQsIAotICAgIDExNCwgNTcsIDIxNCwgMTEzLCA1NywgMjE0LCAxMTIsIDU3LCAyMTQsIDExMSwgNTcsIDIxNCwgMTEwLCA1NywgMjE0LCAKLSAgICAxMDksIDU3LCAyMTQsIDEwOCwgNTcsIDIxNCwgMTA3LCA1NywgMjE0LCAxMDYsIDU3LCAyMTQsIDEwNSwgNTcsIDIxNCwgCi0gICAgMTAzLCA1NywgMjE0LCAxMDIsIDU3LCAyMTQsIDEwMSwgNTcsIDIxNCwgMTAwLCA1NywgMjE0LCA5OSwgNTcsIDIxNCwgOTgsIAotICAgIDU3LCAyMTQsIDk3LCA1NywgMjE0LCA5NiwgNTcsIDIxNCwgOTUsIDU3LCAyMTQsIDk0LCA1NywgMjE0LCA5MiwgNTcsIDIxNCwgCi0gICAgOTEsIDU3LCAyMTQsIDkwLCA1NywgMjE0LCA4OSwgNTcsIDIxNCwgODgsIDU3LCAyMTQsIDg3LCA1NywgMjE0LCA4NiwgNTcsIAotICAgIDIxNCwgODUsIDU3LCAyMTQsIDg0LCA1NywgMjE0LCA4MywgNTcsIDIxNCwgODEsIDU3LCAyMTQsIDgwLCA1NywgMjE0LCA3OSwgCi0gICAgNTcsIDIxNCwgNzgsIDU3LCAyMTQsIDc3LCA1NywgMjE0LCA3NiwgNTcsIDIxNCwgNzUsIDU3LCAyMTQsIDc0LCA1NywgMjE0LCAKLSAgICA3MywgNTcsIDIxNCwgNzIsIDU3LCAyMTQsIDcwLCA1NywgMjE0LCA2OSwgNTcsIDIxNCwgNjgsIDU3LCAyMTQsIDY3LCA1NywgCi0gICAgMjE0LCA2NiwgNTcsIDIxNCwgNjUsIDU3LCAyMTQsIDY0LCA1NywgMjE0LCA2MywgNTcsIDIxNCwgNjIsIDU3LCAyMTQsIDYxLCAKLSAgICA1NywgMjE0LCA1OSwgNTcsIDIxNCwgNTgsIDU3LCAyMTQsIDU3LCA1NywgMjE0LCA1NiwgNTcsIDIxNCwgNTUsIDU3LCAyMTQsIAotICAgIDU0LCA1NywgMjE0LCA1MywgNTcsIDIxNCwgNTIsIDU3LCAyMTQsIDUxLCA1NywgMjE0LCA1MCwgNTcsIDIxNCwgNDgsIDU3LCAKLSAgICAyMTQsIDQ3LCA1NywgMjE0LCA0NiwgNTcsIDIxNCwgNDUsIDU3LCAyMTQsIDQ0LCA1NywgMjE0LCA0MywgNTcsIDIxNCwgNDIsIAotICAgIDU3LCAyMTQsIDQxLCA1NywgMjE0LCA0MCwgNTcsIDIxNCwgMzksIDU3LCAyMTQsIDM2LCA1NywgMjE0LCAzNSwgNTcsIDIxNCwgCi0gICAgMzQsIDU3LCAyMTQsIDMzLCA1NywgMjE0LCAzMiwgNTcsIDIxNCwgMzEsIDU3LCAyMTQsIDMwLCA1NywgMjE0LCAyOSwgNTcsIAotICAgIDIxNCwgMjgsIDU3LCAyMTQsIDI3LCA1NywgMjE0LCAyNSwgNTcsIDIxNCwgMjQsIDU3LCAyMTQsIDIzLCA1NywgMjE0LCAyMiwgCi0gICAgNTcsIDIxNCwgMjEsIDU3LCAyMTQsIDIwLCA1NywgMjE0LCAxOSwgNTcsIDIxNCwgMTgsIDU3LCAyMTQsIDE3LCA1NywgMjE0LCAKLSAgICAxNiwgNTcsIDIxNCwgMTQsIDU3LCAyMTQsIDEzLCA1NywgMjE0LCAxMiwgNTcsIDIxNCwgMTEsIDU3LCAyMTQsIDEwLCA1NywgCi0gICAgMjE0LCA5LCA1NywgMjE0LCA4LCA1NywgMjE0LCA3LCA1NywgMjE0LCA2LCA1NywgMjE0LCA1LCA1NywgMjE0LCAzLCA1NywgCi0gICAgMjE0LCAyLCA1NywgMjE0LCAxLCA1NywgMjE0LCAwLCA1NywgMjEzLCAyNTUsIDU3LCAyMTMsIDI1NCwgNTcsIDIxMywgMjUzLCAKLSAgICA1NywgMjEzLCAyNTIsIDU3LCAyMTMsIDI1MSwgNTcsIDIxMywgMjUwLCA1NywgMjEzLCAyNDgsIDU3LCAyMTMsIDI0NywgNTcsIAotICAgIDIxMywgMjQ2LCA1NywgMjEzLCAyNDUsIDU3LCAyMTMsIDI0NCwgNTcsIDIxMywgMjQzLCA1NywgMjEzLCAyNDIsIDU3LCAKLSAgICAyMTMsIDI0MSwgNTcsIDIxMywgMjQwLCA1NywgMjEzLCAyMzksIDU3LCAyMTMsIDIzNywgNTcsIDIxMywgMjM2LCA1NywgCi0gICAgMjEzLCAyMzUsIDU3LCAyMTMsIDIzNCwgNTcsIDIxMywgMjMzLCA1NywgMjEzLCAyMzIsIDU3LCAyMTMsIDIzMSwgMjIxLCAKLSAgICA0OCwgMjIxLCA1MCwgMjExLCA5MCwgNzYsIDIzNywgNjEsIDIxMiwgMywgMjExLCA5MCwgNzYsIDIwOSwgMTEyLCAyMTEsIAotICAgIDEyLCAyNDEsIDg0LCA3NiwgMjA5LCAxMTIsIDI0MCwgMjQwLCAyNDEsIDg0LCA3NiwgMjA4LCAxMDUsIDI0MSwgNDcsIDI0MSwgCi0gICAgNzEsIDI0MSwgNzIsIDI1MSwgMTMwLCAyNTEsIDEzMSwgMjUxLCAyNywgMjQ4LCAxMzEsIDI0OSwgMTksIDI0NywgMTk5LCAKLSAgICAxNjcsIDIxMCwgNSwgMjM2LCAxMDYsIDIxMCwgNSwgMjM2LCAzMSwgMjEwLCAxMCwgMjI3LCAxMTUsIDI0MCwgNTEsIDIyMiwgCi0gICAgMjE0LCAyMjcsIDExNCwgMjQxLCA4NCwgNzYsIDIyNywgMTE0LCAyMjcsIDE2MywgMjIxLCAyNTMsIDI0MSwgNTAsIDIyNywgCi0gICAgMTE1LCAyMTAsIDUsIDgwLCAyMTAsIDUsIDIwNCwgMTY1LCAyMzksIDE1OSwgMjQwLCA1MSwgMjQwLCAzMCwgMjQ3LCAyNSwgCi0gICAgMjE2LCA3NywgMjQ1LCAxNDcsIDIxMywgNywgMjE5LCAyMTEsIDIyNywgNDEsIDEwNSwgMjEyLCAxMywgMjEzLCA3LCAyMzEsIAotICAgIDQ5LCAyMjcsIDQxLCAyMDIsIDg0LCAyMTIsIDE2MiwgMjQ0LCAxMzksIDIyNywgMTA1LCAyNDEsIDksIDI0MywgMTIzLCAKLSAgICAyNDQsIDgsIDI0NSwgMTg0LCAxMDUsIDI0NCwgMTI4LCAyNDQsIDgsIDI0NSwgMTg0LCAxMDgsIDI0NCwgMTI3LCAyNDQsIDgsIAotICAgIDI0NSwgMTg0LCAxNDcsIDI0NCwgMTI2LCAyNDQsIDgsIDI0NSwgMTg0LCAxNDksIDI0NCwgMTI1LCAxODIsIDI1MSwgMTMwLCAKLSAgICAyMjMsIDg5LCAyMTAsIDk1LCAyMzEsIDExMiwgMjEwLCA5OSwgMjQxLCA4NCwgNzYsIDIwOCwgMTA2LCAyNDgsIDMzLCAyNDAsIAotICAgIDI0NywgMjQ3LCA1OSwgMjQ3LCA2MSwgMjQxLCA4NCwgNzYsIDIyNSwgOSwgMjQxLCA0OCwgMjEwLCAyNDIsIDIxMSwgMywgCi0gICAgMjQxLCA5LCAyNDEsIDEwLCAyMzEsIDI1LCAyMTMsIDEzMSwgMTQ5LCAyNDAsIDExLCAyMTMsIDEzMCwgMjM5LCAxMTIsIAotICAgIDIzMSwgMjUsIDIxMywgMTMxLCAxNDcsIDIzNywgMjM4LCAyMTMsIDEzMCwgMjM3LCAyMzUsIDIzMSwgMjUsIDIxMywgMTMxLCAKLSAgICAxMDgsIDIxNiwgMTQ5LCAyMTMsIDEzMCwgMjE1LCAxNTAsIDIzMSwgMjUsIDIxMywgMTMxLCAxMDUsIDIwNiwgMjM2LCAyMTMsIAotICAgIDEzMCwgMjA2LCAxOTMsIDIxMSwgMjMxLCAyNDQsIDQ2LCAyNDQsIDQ4LCAyMTksIDE1NywgMjQ2LCAxODIsIDIxOSwgMTU5LCAKLSAgICAxMzgsIDIyMCwgODAsIDIxNywgMjQwLCAyMzYsIDEwOSwgMjQ3LCAyMTgsIDIxOCwgMjM2LCAyMzcsIDI3LCAyNDcsIDIzMCwgCi0gICAgMjIxLCAxOTIsIDI0NywgMjE4LCAyMzcsIDI3LCAyMjMsIDUzLCAyMzEsIDM1LCAyMzEsIDM3LCAyMjIsIDIwOCwgMjI3LCAKLSAgICAxMTQsIDIyMiwgMjMxLCAyMTEsIDkwLCA3NiwgMjE0LCAxNTIsIDI1MCwgMTIwLCAyMTEsIDE2NCwgMjQxLCA4NCwgNzYsIAotICAgIDIxNCwgMTUyLCAyNTAsIDEyMCwgMjQxLCAxMiwgMTY3LCAyMTAsIDYsIDIxMywgMTE3LCAyMzYsIDEwNiwgMjEwLCA2LCAKLSAgICAyMTMsIDExNywgMjM2LCAyOCwgMTY3LCAyMTAsIDYsIDMsIDIzMCwgNjYsIDIzNiwgMTA2LCAyMTAsIDYsIDMsIDIzMCwgNjYsIAotICAgIDIzNiwgMjksIDIyNywgMTE1LCAyMTAsIDYsIDIxMywgMTE3LCA4MCwgMjEwLCA2LCAyMTMsIDExNywgMjA0LCAxNjQsIDIxOSwgCi0gICAgNjksIDIyNywgMTE1LCAyMzksIDE1MSwgMjE5LCA2OSwgMjI3LCAxMTUsIDI0MiwgNzAsIDIxOCwgODcsIDIxOSwgNjksIAotICAgIDIyNywgMTE1LCAyNDksIDE4LCAyMTksIDY5LCAyMjcsIDExNSwgMjA2LCAyMjQsIDIxOCwgODIsIDIxNiwgNzQsIDIyNywgCi0gICAgMTE1LCAyNDAsIDUxLCAyMTYsIDc0LCAyMzEsIDM1LCAyMTYsIDU3LCAyMTIsIDEyMCwgMjEzLCA3LCAxMDgsIDIxMiwgMTE3LCAKLSAgICAyMTEsIDE2NiwgMjEyLCAxMjAsIDIxMywgNywgMTQ3LCAyMTIsIDExNiwgMjExLCAxNjUsIDI0NCwgOCwgMjQ1LCAxODQsIAotICAgIDIxMSwgMzQsIDI0NCwgMTIzLCAyMTcsIDIyNywgMjA2LCAxOTIsIDEwNSwgMjE3LCAyMjcsIDIwNiwgMTkwLCAyMTcsIDE5MCwgCi0gICAgMjE3LCAyMjcsIDIwNiwgMTkyLCAxMDgsIDIxNywgMjI3LCAyMDYsIDE4OSwgMjE3LCAxODksIDIxMywgMTE4LCAyMDgsIAotICAgIDEwNCwgMjExLCA4OSwgMjExLCAxNywgMjQ3LCA2MCwgMjQ2LCAxODIsIDI0NywgMSwgMjI0LCAyMjQsIDIwNCwgMTAzLCAKLSAgICAyMjMsIDE4MSwgMjExLCA5MCwgNzYsIDIzNywgMjIzLCAyNTAsIDEyMCwgMjExLCA5MCwgNzYsIDIxNywgMjA4LCAyNTAsIAotICAgIDEyMCwgMjExLCAyMzAsIDI0MSwgODQsIDc2LCAyMzcsIDIyMywgMjUwLCAxMjAsIDI0MSwgODQsIDc2LCAyMTcsIDIwOCwgCi0gICAgMjUwLCAxMjAsIDI0MSwgNDUsIDIxMSwgOTAsIDc2LCAyMTEsIDM0LCAyMTEsIDI0NSwgMjEyLCAxMjAsIDIzOCwgMywgMTY3LCAKLSAgICAyMzAsIDI0MSwgMjEzLCA5NSwgMjEyLCAxMjAsIDE2NywgMjMwLCAyNDEsIDIxNCwgMTkxLCAyNDUsIDE4NCwgMjEzLCAxMjcsIAotICAgIDIzMCwgMjQxLCAyNDUsIDExMSwgMjExLCAzNSwgMjA5LCAxMzgsIDIxMSwgMTA4LCAyMjAsIDAsIDIxMCwgODQsIDI0NSwgCi0gICAgMjMyLCAyMTksIDIyNiwgMjE3LCAyMjgsIDIyNCwgMjIzLCAyMTgsIDcyLCAyNTAsIDE1NiwgMjE3LCAyMjIsIDI0NSwgMjMyLCAKLSAgICAyNTAsIDE3MiwgMjIzLCA0MSwgMjEyLCAxNzEsIDgsIDYsIDEsIDIzOCwgMTE5LCA4LCA1LCAxLCAyMzgsIDExOSwgMjQ2LCAKLSAgICAyMDEsIDI1MSwgOCwgMjEwLCA4OSwgMjEwLCAyNDgsIDI0NSwgMjQzLCAyMTIsIDY4LCAyMjcsIDIyMiwgMjAwLCAxLCAyMjcsIAotICAgIDY4LCAyMjgsIDEyLCAxLCAyMzksIDE4NywgMjM5LCAxNzgsIDIyOCwgMTIsIDEsIDIzOSwgMTg3LCAyNDAsIDYzLCAyMjgsIAotICAgIDEyLCAxLCAyMTUsIDIyNywgMjI4LCAxMiwgMSwgMjI3LCA0OSwgNzcsIDEzMSwgMjQ4LCA0NSwgMjEyLCAyMzgsIDIzOCwgCi0gICAgODIsIDIyNCwgMTczLCAyMTYsIDY0LCAyMzksIDg5LCAyMzksIDg4LCAyMzksIDg3LCAyMjMsIDE4MywgMjAxLCAyNDMsIAotICAgIDIwMSwgMjQ0LCAyMDEsIDI0NiwgMjI2LCAyNDMsIDIxNSwgMjM1LCAyMjYsIDI0NSwgMjE1LCAyMzcsIDIxOSwgMzcsIDIyNiwgCi0gICAgMjQyLCAyMTUsIDIzNCwgMjIxLCAyMjMsIDIyNCwgODYsIDIwNCwgMiwgMjI2LCAyNDQsIDIxNSwgMjM2LCAyMzksIDExMSwgCi0gICAgMjE5LCAzNiwgMjA0LCA1MiwgMjQxLCAxMDcsIDIzOSwgOTksIDIyNCwgMTU0LCAyMjAsIDMyLCAyMDYsIDE5NCwgOTcsIAotICAgIDIyNCwgMTU0LCAyNDQsIDE0NSwgOTcsIDk2LCAyMDgsIDg0LCA1MywgMywgNTIsIDgwLCA5NSwgODYsIDIwOCwgODQsIDUzLCAKLSAgICAzLCA1MiwgODAsIDk1LCAxMSwgNCwgMjMwLCAxOTksIDgyLCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNTAsIDYxLCAKLSAgICAyMjcsIDE4NSwgMTU1LCAyMDUsIDE2NSwgMjA1LCA1NCwgMjA0LCAyNDIsIDIwNCwgMjMxLCAyMDQsIDIyMCwgMjA0LCAyMDksIAotICAgIDIwNCwgMTk4LCAyMDQsIDE4NywgMjA0LCAxNzYsIDIwNSwgMTY0LCAyMDUsIDE1MywgMjA1LCAxNDIsIDIwNSwgMTMxLCAKLSAgICAyMDUsIDEyMCwgMjA1LCAxMDksIDIwNSwgOTgsIDI0NywgMTMwLCAyMTksIDI0MSwgODIsIDI0OCwgMTMsIDIwMSwgMjQ1LCAKLSAgICA5LCAyLCAyMjEsIDU3LCAyMDksIDE0MSwgOSwgMiwgMjIxLCA1NywgMTE1LCAyMjEsIDU3LCAyNDcsIDE2MSwgMTE1LCAyNDcsIAotICAgIDE2MCwgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDIxMiwgNjQsIDI0NiwgMTAyLCAyMDYsIDY1LCAyMDUsIDg3LCAyMDUsIDc2LCAKLSAgICAyMDUsIDY1LCAyMDUsIDUzLCAyMDUsIDQyLCAyMDUsIDMxLCAyMDUsIDIwLCAyMDUsIDksIDIwNCwgMjU0LCAyMDQsIDI0NiwgCi0gICAgMjA0LCAyNDUsIDIwNCwgMjQ0LCAyMDQsIDI0MywgMjA0LCAyNDEsIDIwNCwgMjQwLCAyMDQsIDIzOSwgMjA0LCAyMzgsIAotICAgIDIwNCwgMjM3LCAyMDQsIDIzNiwgMjA0LCAyMzUsIDIwNCwgMjM0LCAyMDQsIDIzMywgMjA0LCAyMzIsIDIwNCwgMjMwLCAKLSAgICAyMDQsIDIyOSwgMjA0LCAyMjgsIDIwNCwgMjI3LCAyMDQsIDIyNiwgMjA0LCAyMjUsIDIwNCwgMjI0LCAyMDQsIDIyMywgCi0gICAgMjA0LCAyMjIsIDIwNCwgMjIxLCAyMDQsIDIxOSwgMjA0LCAyMTgsIDIwNCwgMjE3LCAyMDQsIDIxNiwgMjA0LCAyMTUsIAotICAgIDIwNCwgMjE0LCAyMDQsIDIxMywgMjA0LCAyMTIsIDIwNCwgMjExLCAyMDQsIDIxMCwgMjA0LCAyMDgsIDIwNCwgMjA3LCAKLSAgICAyMDQsIDIwNiwgMjA0LCAyMDUsIDIwNCwgMjA0LCAyMDQsIDIwMywgMjA0LCAyMDIsIDIwNCwgMjAxLCAyMDQsIDIwMCwgCi0gICAgMjA0LCAxOTksIDIwNCwgMTk3LCAyMDQsIDE5NiwgMjA0LCAxOTUsIDIwNCwgMTk0LCAyMDQsIDE5MywgMjA0LCAxOTIsIAotICAgIDIwNCwgMTkxLCAyMDQsIDE5MCwgMjA0LCAxODksIDIwNCwgMTg4LCAyMDQsIDE4NiwgMjA0LCAxODUsIDIwNCwgMTg0LCAKLSAgICAyMDQsIDE4MywgMjA0LCAxODIsIDIwNCwgMTgxLCAyMDQsIDE4MCwgMjA0LCAxNzksIDIwNCwgMTc4LCAyMDQsIDE3NywgCi0gICAgMjA0LCAxNzUsIDIwNCwgMTc0LCAyMDQsIDE3MywgMjA0LCAxNzIsIDIwNCwgMTcxLCAyMDQsIDE3MCwgMjA0LCAxNjksIAotICAgIDIwNCwgMTY4LCAyMDQsIDE2NywgMjA0LCAxNjYsIDIwNSwgMTYzLCAyMDUsIDE2MiwgMjA1LCAxNjEsIDIwNSwgMTYwLCAKLSAgICAyMDUsIDE1OSwgMjA1LCAxNTgsIDIwNSwgMTU3LCAyMDUsIDE1NiwgMjA1LCAxNTUsIDIwNSwgMTU0LCAyMDUsIDE1MiwgCi0gICAgMjA1LCAxNTEsIDIwNSwgMTUwLCAyMDUsIDE0OSwgMjA1LCAxNDgsIDIwNSwgMTQ3LCAyMDUsIDE0NiwgMjA1LCAxNDUsIAotICAgIDIwNSwgMTQ0LCAyMDUsIDE0MywgMjA1LCAxNDEsIDIwNSwgMTQwLCAyMDUsIDEzOSwgMjA1LCAxMzgsIDIwNSwgMTM3LCAKLSAgICAyMDUsIDEzNiwgMjA1LCAxMzUsIDIwNSwgMTM0LCAyMDUsIDEzMywgMjA1LCAxMzIsIDIwNSwgMTMwLCAyMDUsIDEyOSwgCi0gICAgMjA1LCAxMjgsIDIwNSwgMTI3LCAyMDUsIDEyNiwgMjA1LCAxMjUsIDIwNSwgMTI0LCAyMDUsIDEyMywgMjA1LCAxMjIsIAotICAgIDIwNSwgMTIxLCAyMDUsIDExOSwgMjA1LCAxMTgsIDIwNSwgMTE3LCAyMDUsIDExNiwgMjA1LCAxMTUsIDIwNSwgMTE0LCAKLSAgICAyMDUsIDExMywgMjA1LCAxMTIsIDIwNSwgMTExLCAyMDUsIDExMCwgMjA1LCAxMDgsIDIwNSwgMTA3LCAyMDUsIDEwNiwgCi0gICAgMjA1LCAxMDUsIDIwNSwgMTA0LCAyMDUsIDEwMywgMjA1LCAxMDIsIDIwNSwgMTAxLCAyMDUsIDEwMCwgMjA1LCA5OSwgMjA1LCAKLSAgICA5NywgMjA1LCA5NiwgMjA1LCA5NSwgMjA1LCA5NCwgMjA1LCA5MywgMjA1LCA5MiwgMjA1LCA5MSwgMjA1LCA5MCwgMjA1LCAKLSAgICA4OSwgMjA1LCA4OCwgMjA1LCA4NiwgMjA1LCA4NSwgMjA1LCA4NCwgMjA1LCA4MywgMjA1LCA4MiwgMjA1LCA4MSwgMjA1LCAKLSAgICA4MCwgMjA1LCA3OSwgMjA1LCA3OCwgMjA1LCA3NywgMjA1LCA3NSwgMjA1LCA3NCwgMjA1LCA3MywgMjA1LCA3MiwgMjA1LCAKLSAgICA3MSwgMjA1LCA3MCwgMjA1LCA2OSwgMjA1LCA2OCwgMjA1LCA2NywgMjA1LCA2NiwgMjA1LCA2NCwgMjA1LCA2MywgMjA1LCAKLSAgICA2MiwgMjA1LCA2MSwgMjA1LCA2MCwgMjA1LCA1OSwgMjA1LCA1OCwgMjA1LCA1NywgMjA1LCA1NiwgMjA1LCA1NSwgMjA1LCAKLSAgICA1MiwgMjA1LCA1MSwgMjA1LCA1MCwgMjA1LCA0OSwgMjA1LCA0OCwgMjA1LCA0NywgMjA1LCA0NiwgMjA1LCA0NSwgMjA1LCAKLSAgICA0NCwgMjA1LCA0MywgMjA1LCA0MSwgMjA1LCA0MCwgMjA1LCAzOSwgMjA1LCAzOCwgMjA1LCAzNywgMjA1LCAzNiwgMjA1LCAKLSAgICAzNSwgMjA1LCAzNCwgMjA1LCAzMywgMjA1LCAzMiwgMjA1LCAzMCwgMjA1LCAyOSwgMjA1LCAyOCwgMjA1LCAyNywgMjA1LCAKLSAgICAyNiwgMjA1LCAyNSwgMjA1LCAyNCwgMjA1LCAyMywgMjA1LCAyMiwgMjA1LCAyMSwgMjA1LCAxOSwgMjA1LCAxOCwgMjA1LCAKLSAgICAxNywgMjA1LCAxNiwgMjA1LCAxNSwgMjA1LCAxNCwgMjA1LCAxMywgMjA1LCAxMiwgMjA1LCAxMSwgMjA1LCAxMCwgMjA1LCAKLSAgICA4LCAyMDUsIDcsIDIwNSwgNiwgMjA1LCA1LCAyMDUsIDQsIDIwNSwgMywgMjA1LCAyLCAyMDUsIDEsIDIwNSwgMCwgMjA0LCAKLSAgICAyNTUsIDIwNCwgMjUzLCAyMDQsIDI1MiwgMjA0LCAyNTEsIDIwNCwgMjUwLCAyMDQsIDI0OSwgMjA0LCAyNDgsIDIwNCwgCi0gICAgMjQ3LCA4LCA2LCAxLCAzNCwgMywgMjI1LCAxNzEsIDI1LCAyMzcsIDI1MywgOCwgNSwgMSwgMzQsIDMsIDIyNSwgMTcxLCAKLSAgICAyNSwgMjM3LCAyNTMsIDgsIDYsIDEsIDE4OCwgMywgODAsIDIyNywgMTE1LCA1NiwgOCwgNSwgMSwgMTg4LCAzLCA4MCwgCi0gICAgMjI3LCAxMTUsIDU2LCA4LCA2LCAxLCAxODgsIDMsIDgwLCAyMjcsIDExNSwgMjQ4LCAxMjYsIDI1LCAyMzcsIDI1MywgOCwgCi0gICAgNSwgMSwgMTg4LCAzLCA4MCwgMjI3LCAxMTUsIDI0OCwgMTI2LCAyNSwgMjM3LCAyNTMsIDgsIDYsIDEsIDE4OCwgMywgODAsIAotICAgIDIyNywgMTE1LCAyNDgsIDEyNiwgMjUsIDE2NSwgOCwgNSwgMSwgMTg4LCAzLCA4MCwgMjI3LCAxMTUsIDI0OCwgMTI2LCAyNSwgCi0gICAgMTY1LCA4LCA2LCAxLCAxODgsIDMsIDI0NiwgNTMsIDI1LCAyMjUsIDE3MCwgOCwgNSwgMSwgMTg4LCAzLCAyNDYsIDUzLCAKLSAgICAyNSwgMjI1LCAxNzAsIDgsIDYsIDEsIDE4OCwgMywgMjQ2LCA1MywgMjUsIDI0NywgMjksIDgsIDUsIDEsIDE4OCwgMywgCi0gICAgMjQ2LCA1MywgMjUsIDI0NywgMjksIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCAyMjUsIDE3MSwgMjUsIDIzNywgMjUzLCA4LCA1LCAKLSAgICAxLCAyMzUsIDIwNiwgMywgMjI1LCAxNzEsIDI1LCAyMzcsIDI1MywgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIDcwLCA4NywgMjUsIAotICAgIDE2NSwgOCwgNSwgMSwgMjIyLCAyMDYsIDMsIDIwOCwgMjI4LCA1NSwgOCwgNiwgMSwgMTU4LCAzLCA4MCwgMjI3LCAxMTUsIAotICAgIDU2LCA4LCA1LCAxLCAxNTgsIDMsIDgwLCAyMjcsIDExNSwgNTYsIDgsIDYsIDEsIDE1OCwgMywgODAsIDIyNywgMTE1LCAKLSAgICAyNDgsIDEyNiwgMjUsIDIzNywgMjUzLCA4LCA1LCAxLCAxNTgsIDMsIDgwLCAyMjcsIDExNSwgMjQ4LCAxMjYsIDI1LCAyMzcsIAotICAgIDI1MywgOCwgNiwgMSwgMTU4LCAzLCA4MCwgMjI3LCAxMTUsIDI0OCwgMTI2LCAyNSwgMTY1LCA4LCA1LCAxLCAxNTgsIDMsIAotICAgIDgwLCAyMjcsIDExNSwgMjQ4LCAxMjYsIDI1LCAxNjUsIDgsIDYsIDEsIDIxNSwgOTQsIDMsIDgwLCAyMjcsIDExNSwgNTYsIAotICAgIDgsIDUsIDEsIDIxNSwgOTQsIDMsIDgwLCAyMjcsIDExNSwgNTYsIDgsIDYsIDEsIDEwNiwgMywgMjI1LCAxNzEsIDI1LCAKLSAgICAyMzcsIDI1MywgOCwgNSwgMSwgMTA2LCAzLCAyMjUsIDE3MSwgMjUsIDIzNywgMjUzLCA4LCA2LCAxLCAzNCwgMywgMjIwLCAKLSAgICA2MywgMjUsIDE2NSwgOCwgNSwgMSwgMzQsIDMsIDIyMCwgNjMsIDI1LCAxNjUsIDgsIDYsIDEsIDM0LCAzLCAyMjAsIDYzLCAKLSAgICAyNSwgMjA4LCAyMjcsIDgsIDUsIDEsIDM0LCAzLCAyMjAsIDYzLCAyNSwgMjA4LCAyMjcsIDgsIDYsIDEsIDE4OCwgMywgCi0gICAgMjIwLCA2MywgMjUsIDE2NSwgOCwgNSwgMSwgMTg4LCAzLCAyMjAsIDYzLCAyNSwgMTY1LCA4LCA2LCAxLCAxODgsIDMsIAotICAgIDIyMCwgNjMsIDI1LCAyMDgsIDIyNywgOCwgNSwgMSwgMTg4LCAzLCAyMjAsIDYzLCAyNSwgMjA4LCAyMjcsIDgsIDYsIDEsIAotICAgIDE4OCwgMywgNzAsIDg3LCAyNSwgMTY1LCA4LCA1LCAxLCAxODgsIDMsIDcwLCA4NywgMjUsIDE2NSwgOCwgNiwgMSwgMTg4LCAKLSAgICAzLCA3MCwgODcsIDI1LCAyMDgsIDIyNywgOCwgNSwgMSwgMTg4LCAzLCA3MCwgODcsIDI1LCAyMDgsIDIyNywgOCwgNSwgMSwgCi0gICAgMjM1LCAyMDYsIDMsIDcwLCA4NywgMjUsIDIzNywgMjUzLCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgNzAsIDg3LCAyNSwgMjA4LCAKLSAgICAyMjcsIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCAyMjAsIDYzLCAyNSwgMTY1LCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgMjIwLCAKLSAgICA2MywgMjUsIDcwLCA4NywgMjUsIDE2NSwgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIDIyMCwgNjMsIDI1LCAyMDgsIDIyNywgOCwgCi0gICAgNSwgMSwgMjM1LCAyMDYsIDMsIDIyMCwgNjMsIDI1LCA3MCwgODcsIDI1LCAyMDgsIDIyNywgOCwgNiwgMSwgMjMwLCAxODUsIAotICAgIDMsIDIwOCwgMjI3LCA4LCA1LCAxLCAyMzAsIDE4NSwgMywgNzAsIDg3LCAyNSwgMjA4LCAyMjcsIDgsIDYsIDEsIDIyOCwgCi0gICAgMTMxLCAzLCAyMDgsIDIyNywgOCwgNSwgMSwgMjI4LCAxMzEsIDMsIDIwOCwgMjI3LCA4LCA2LCAxLCAyMjYsIDE4NiwgMywgCi0gICAgMjA4LCAyMjcsIDgsIDUsIDEsIDIyNiwgMTg2LCAzLCAyMDgsIDIyNywgOCwgNiwgMSwgMjE3LCAxLCAzLCAyMDgsIDIyNywgCi0gICAgOCwgNSwgMSwgMjE3LCAxLCAzLCAyMDgsIDIyNywgOCwgNiwgMSwgMTA2LCAzLCAyMjAsIDYzLCAyNSwgMTY1LCA4LCA1LCAxLCAKLSAgICAxMDYsIDMsIDIyMCwgNjMsIDI1LCAxNjUsIDgsIDYsIDEsIDEwNiwgMywgMjIwLCA2MywgMjUsIDIwOCwgMjI3LCA4LCA1LCAKLSAgICAxLCAxMDYsIDMsIDIyMCwgNjMsIDI1LCAyMDgsIDIyNywgOCwgNiwgMSwgMTA2LCAzLCAyMjUsIDE3MSwgMjUsIDE2NSwgOCwgCi0gICAgNSwgMSwgMTA2LCAzLCAyMjUsIDE3MSwgMjUsIDE2NSwgOCwgNiwgMSwgMTA2LCAzLCAyMjUsIDE3MSwgMjUsIDIwOCwgMjI3LCAKLSAgICA4LCA1LCAxLCAxMDYsIDMsIDIyNSwgMTcxLCAyNSwgMjA4LCAyMjcsIDgsIDUsIDEsIDI1MSwgMTEwLCAzLCAyMzcsIDI1MywgCi0gICAgOCwgNSwgMSwgMTcxLCAxNTgsIDMsIDIzNywgMjUzLCA4LCA1LCAxLCAxNzEsIDE1OCwgMywgMTY1LCA4LCA1LCAxLCAyMDcsIAotICAgIDE3NCwgMjA2LCAxNjUsIDMsIDIzNywgMjUzLCA4LCA1LCAxLCAyMDcsIDE3NCwgMjA2LCAxNjUsIDMsIDE2NSwgOCwgNSwgMSwgCi0gICAgMjE0LCAxOTMsIDMsIDIzNywgMjUzLCA4LCA1LCAxLCAyMTQsIDE5MywgMywgMTY1LCA4LCA1LCAxLCAyMzYsIDExNSwgMjE0LCAKLSAgICAxOTMsIDMsIDIzNywgMjUzLCA4LCA1LCAxLCAyMzYsIDExNSwgMjE0LCAxOTMsIDMsIDE2NSwgMTAsIDIxMywgMTI3LCA4OSwgCi0gICAgMywgMjM3LCAxMjgsIDg3LCAzLCAyNTEsIDMwLCAxMCwgMjEzLCAxMjcsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDIwNCwgCi0gICAgNzAsIDEwLCAyMTMsIDEyNywgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTM3LCAyMjUsIDEyOSwgMTAsIDIxMywgMTI3LCAKLSAgICA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyMjAsIDczLCAxMCwgMjEzLCAxMjcsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIAotICAgIDY4LCAxMCwgMjEzLCAxMjcsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDIwMiwgMjEzLCAxMCwgMjEzLCAxMjcsIDg5LCAzLCAKLSAgICAyMzcsIDEyOCwgODcsIDMsIDc0LCAxMCwgMjEzLCAxMjcsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDI1MSwgMTA5LCAxMCwgCi0gICAgMjEzLCAxMjcsIDIyMSwgMTc5LCAzLCAyMjksIDE4OSwgMTc5LCAxLCAyMjksIDExOSwgNDQsIDEwOSwgMjMwLCA1NCwgNDQsIAotICAgIDEwOSwgMjIyLCAyMDUsIDQ0LCAxMDksIDI0NywgMTI1LCA0NCwgMTA5LCAyMjEsIDEzLCA0NCwgMTA5LCAyMDcsIDI0NCwgCi0gICAgNDQsIDEwOSwgMjIxLCAyMjgsIDQ0LCAxMDksIDIxMCwgNjksIDQ0LCAxMDksIDIyMywgMTYzLCA0NCwgMTA5LCAyMTksIAotICAgIDE4NCwgNDQsIDEwOSwgMjI2LCAxODUsIDQ0LCAxMDksIDIwMywgMTI0LCA0NCwgMTA5LCAxNDYsIDQ0LCAxMDksIDE1OSwgCi0gICAgNDQsIDEwOSwgMjA2LCAxNjQsIDQ0LCAxMDksIDIyNywgNjksIDQ0LCAxMDksIDIyNywgNzgsIDQ0LCAxMDksIDIxNSwgMTg2LCAKLSAgICA0NCwgMTA5LCAyMjEsIDIxMCwgNDQsIDEwOSwgMjMwLCAxODQsIDQ0LCAxMDksIDIxMywgOTIsIDQ0LCAxMDksIDIxMSwgCi0gICAgMTY3LCA0NCwgMTA5LCAxOTQsIDQ0LCAxMDksIDIzNywgMTcxLCA0NCwgMTA5LCAyMjgsIDIyNCwgNDQsIDQsIDIzMCwgNDEsIAotICAgIDQ0LCA0LCAyMjksIDEwMCwgNDQsIDQsIDIyOSwgODcsIDQ0LCA0LCAyMjgsIDIwOSwgNDQsIDQsIDIyOCwgMTc0LCA0NCwgNCwgCi0gICAgMjI5LCAyMDEsIDQ0LCA0LCAyMjksIDE5OCwgNDQsIDQsIDIzMCwgMTgsIDQ0LCA0LCAyMjksIDI2LCA0NCwgNCwgMjI5LCA2LCAKLSAgICA0NCwgNCwgMjI5LCAyMTksIDQ0LCA0LCAyMjIsIDIwMiwgNDQsIDQsIDIyMiwgMTUxLCA0NCwgNCwgMjIyLCAxNDcsIDQ0LCAKLSAgICA0LCAyMjIsIDExNiwgNDQsIDQsIDIyMiwgMTA4LCA0NCwgNCwgMjIyLCAxOTAsIDQ0LCA0LCAyMjIsIDE4OCwgNDQsIDQsIAotICAgIDIyMiwgMTk5LCA0NCwgNCwgMjIyLCAxMjgsIDQ0LCA0LCAyMjIsIDEyMywgNDQsIDQsIDIyMiwgMTkyLCA0NCwgNCwgMjQ3LCAKLSAgICA5MSwgNDQsIDQsIDI0NiwgNzksIDQ0LCA0LCAyNDYsIDY5LCA0NCwgNCwgMjQ1LCAxMTAsIDQ0LCA0LCAyNDUsIDc2LCA0NCwgCi0gICAgNCwgMjQ2LCAyMzgsIDQ0LCA0LCAyNDYsIDIzMCwgNDQsIDQsIDI0NywgODAsIDQ0LCA0LCAyNDUsIDI1NCwgNDQsIDQsIAotICAgIDI0NSwgMTgwLCA0NCwgNCwgMjQ3LCAxNSwgNDQsIDQsIDIyMSwgMTAsIDQ0LCA0LCAyMjAsIDI0OCwgNDQsIDQsIDIyMCwgCi0gICAgMjQzLCA0NCwgNCwgMjIwLCAyMjYsIDQ0LCA0LCAyMjAsIDIxOCwgNDQsIDQsIDIyMSwgMSwgNDQsIDQsIDIyMSwgMCwgNDQsIAotICAgIDQsIDIyMSwgNywgNDQsIDQsIDIyMCwgMjMzLCA0NCwgNCwgMjIwLCAyMzAsIDQ0LCA0LCAyMjEsIDQsIDQ0LCA0LCAyMDcsIAotICAgIDI0MCwgNDQsIDQsIDIwNywgMjIwLCA0NCwgNCwgMjA3LCAyMTksIDQ0LCA0LCAyMDcsIDIwOCwgNDQsIDQsIDIwNywgMjA1LCAKLSAgICA0NCwgNCwgMjA3LCAyMzYsIDQ0LCA0LCAyMDcsIDIzNSwgNDQsIDQsIDIwNywgMjM5LCA0NCwgNCwgMjA3LCAyMTgsIDQ0LCAKLSAgICA0LCAyMDcsIDIxNywgNDQsIDQsIDIwNywgMjM4LCA0NCwgNCwgMjIxLCAyMjYsIDQ0LCA0LCAyMjEsIDIxMiwgNDQsIDQsIAotICAgIDIyMSwgMjExLCA0NCwgNCwgMjIxLCAxOTUsIDQ0LCA0LCAyMjEsIDE5NCwgNDQsIDQsIDIyMSwgMjIyLCA0NCwgNCwgMjIxLCAKLSAgICAyMjEsIDQ0LCA0LCAyMjEsIDIyNSwgNDQsIDQsIDIyMSwgMTk3LCA0NCwgNCwgMjIxLCAxOTYsIDQ0LCA0LCAyMjEsIDIyNCwgCi0gICAgNDQsIDQsIDIxMCwgMTgsIDQ0LCA0LCAyMDksIDIsIDQ0LCA0LCAyMDgsIDI0MiwgNDQsIDQsIDIwNywgMjAzLCA0NCwgNCwgCi0gICAgMjA3LCAxNjUsIDQ0LCA0LCAyMDksIDE4NywgNDQsIDQsIDIwOSwgMTc2LCA0NCwgNCwgMjA5LCAyNTAsIDQ0LCA0LCAxMzUsIAotICAgIDQ0LCA0LCAyMDgsIDE0OCwgNDQsIDQsIDIwOSwgMjA3LCA0NCwgNCwgMjIzLCAxMDYsIDQ0LCA0LCAyMjIsIDEwMCwgNDQsIAotICAgIDQsIDIyMiwgNzUsIDQ0LCA0LCAyMjEsIDg0LCA0NCwgNCwgMjIxLCAyNSwgNDQsIDQsIDIyMiwgMjQwLCA0NCwgNCwgMjIyLCAKLSAgICAyMzUsIDQ0LCA0LCAyMjMsIDkyLCA0NCwgNCwgMjIxLCAxOTEsIDQ0LCA0LCAyMjEsIDE4MCwgNDQsIDQsIDIyMywgNjUsIAotICAgIDQ0LCA0LCAyMTksIDE2OCwgNDQsIDQsIDIxOCwgMTY3LCA0NCwgNCwgMjE4LCAxMjksIDQ0LCA0LCAyMTcsIDE5MSwgNDQsIAotICAgIDQsIDIxNywgMTU3LCA0NCwgNCwgMjE5LCAzNCwgNDQsIDQsIDIxOSwgMjMsIDQ0LCA0LCAyMTksIDE0OCwgNDQsIDQsIDIxOCwgCi0gICAgNjksIDQ0LCA0LCAyMTgsIDQ1LCA0NCwgNCwgMjE5LCA0OCwgNDQsIDQsIDIyNSwgMTc1LCA0NCwgNCwgMjI0LCAxNTUsIDQ0LCAKLSAgICA0LCAyMjQsIDEyNSwgNDQsIDQsIDIyMywgMjQ2LCA0NCwgNCwgMjIzLCAxOTIsIDQ0LCA0LCAyMjUsIDIwLCA0NCwgNCwgCi0gICAgMjI1LCA4LCA0NCwgNCwgMjI1LCAxNDAsIDQ0LCA0LCAyMjQsIDgyLCA0NCwgNCwgMjI0LCAzNSwgNDQsIDQsIDIyNSwgNjcsIAotICAgIDQ0LCA0LCAyMDMsIDExMCwgNDQsIDQsIDIwMywgMTEsIDQ0LCA0LCAyMDMsIDIsIDQ0LCA0LCAyMDIsIDIxMywgNDQsIDQsIAotICAgIDIwMiwgMTgxLCA0NCwgNCwgMjAzLCA1MiwgNDQsIDQsIDIwMywgNDksIDQ0LCA0LCAyMDMsIDg5LCA0NCwgNCwgMjAyLCAKLSAgICAyNDcsIDQ0LCA0LCAyMDIsIDIzMiwgNDQsIDQsIDIwMywgNjIsIDQ0LCA0LCAyMTYsIDIxNiwgNDQsIDQsIDIxNiwgNTcsIAotICAgIDQ0LCA0LCAyMTYsIDMsIDQ0LCA0LCAyMTUsIDE0NSwgNDQsIDQsIDIxNSwgMTE0LCA0NCwgNCwgMjE2LCAxNTgsIDQ0LCA0LCAKLSAgICAyMTYsIDEzNSwgNDQsIDQsIDIxNiwgMTk3LCA0NCwgNCwgMjE1LCAyMjcsIDQ0LCA0LCAyMTUsIDIwOCwgNDQsIDQsIDIxNiwgCi0gICAgMTY3LCA0NCwgNCwgMjI4LCAxMTIsIDQ0LCA0LCAyMjcsIDE0OCwgNDQsIDQsIDIyNywgMTMwLCA0NCwgNCwgMjI2LCAyMzksIAotICAgIDQ0LCA0LCAyMjYsIDIxMCwgNDQsIDQsIDIyNywgMjM0LCA0NCwgNCwgMjI3LCAyMjYsIDQ0LCA0LCAyMjgsIDg2LCA0NCwgNCwgCi0gICAgMjI3LCA0OSwgNDQsIDQsIDIyNywgMTgsIDQ0LCA0LCAyMjcsIDI1MSwgNDQsIDQsIDIwNiwgODUsIDQ0LCA0LCAyMDUsIAotICAgIDIzMCwgNDQsIDQsIDIwNSwgMjE1LCA0NCwgNCwgMjA0LCAxNjMsIDQ0LCA0LCAyMDQsIDE1NiwgNDQsIDQsIDIwNiwgNTUsIAotICAgIDQ0LCA0LCAyMDYsIDUwLCA0NCwgNCwgMjA2LCA4MSwgNDQsIDQsIDIwNSwgMTg5LCA0NCwgNCwgMjA1LCAxNzYsIDQ0LCA0LCAKLSAgICAyMDYsIDYxLCA0NCwgNCwgMjI3LCA2NywgNDQsIDQsIDIyNywgNjIsIDQ0LCA0LCAyMjcsIDYxLCA0NCwgNCwgMjI3LCA1OCwgCi0gICAgNDQsIDQsIDIyNywgNTcsIDQ0LCA0LCAyMjcsIDY0LCA0NCwgNCwgMjI3LCA2MywgNDQsIDQsIDIyNywgNjYsIDQ0LCA0LCAKLSAgICAyMjcsIDYwLCA0NCwgNCwgMjI3LCA1OSwgNDQsIDQsIDIyNywgNjUsIDQ0LCA0LCAyMjcsIDc2LCA0NCwgNCwgMjI3LCA3MSwgCi0gICAgNDQsIDQsIDIyNywgNzAsIDQ0LCA0LCAyMjcsIDU0LCA0NCwgNCwgMjI3LCA1MywgNDQsIDQsIDIyNywgNzMsIDQ0LCA0LCAKLSAgICAyMjcsIDcyLCA0NCwgNCwgMjI3LCA3NSwgNDQsIDQsIDIyNywgNTYsIDQ0LCA0LCAyMjcsIDU1LCA0NCwgNCwgMjI3LCA3NCwgCi0gICAgNDQsIDQsIDIxNSwgMTg0LCA0NCwgNCwgMjE1LCAxNzMsIDQ0LCA0LCAyMTUsIDE3MiwgNDQsIDQsIDIxNSwgMTY1LCA0NCwgCi0gICAgNCwgMjE1LCAxNTgsIDQ0LCA0LCAyMTUsIDE4MCwgNDQsIDQsIDIxNSwgMTc5LCA0NCwgNCwgMjE1LCAxODMsIDQ0LCA0LCAKLSAgICAyMTUsIDE3MSwgNDQsIDQsIDIxNSwgMTcwLCA0NCwgNCwgMjE1LCAxODIsIDQ0LCA0LCAyMjEsIDIwOCwgNDQsIDQsIDIyMSwgCi0gICAgMjAzLCA0NCwgNCwgMjIxLCAyMDIsIDQ0LCA0LCAyMjEsIDE5OSwgNDQsIDQsIDIyMSwgMTk4LCA0NCwgNCwgMjIxLCAyMDUsIAotICAgIDQ0LCA0LCAyMjEsIDIwNCwgNDQsIDQsIDIyMSwgMjA3LCA0NCwgNCwgMjIxLCAyMDEsIDQ0LCA0LCAyMjEsIDIwMCwgNDQsIAotICAgIDQsIDIyMSwgMjA2LCA0NCwgNCwgMjMwLCAxODAsIDQ0LCA0LCAyMzAsIDE0MSwgNDQsIDQsIDIzMCwgMTM0LCA0NCwgNCwgCi0gICAgMjMwLCA4MiwgNDQsIDQsIDIzMCwgNjQsIDQ0LCA0LCAyMzAsIDE2MSwgNDQsIDQsIDIzMCwgMTU5LCA0NCwgNCwgMjMwLCAKLSAgICAxNzQsIDQ0LCA0LCAyMzAsIDEwMSwgNDQsIDQsIDIzMCwgOTEsIDQ0LCA0LCAyMzAsIDE2NywgNDQsIDQsIDIxMywgODUsIAotICAgIDQ0LCA0LCAyMTMsIDExLCA0NCwgNCwgMjEzLCA2LCA0NCwgNCwgMjEyLCAxOTksIDQ0LCA0LCAyMTIsIDE4MiwgNDQsIDQsIAotICAgIDIxMywgNDMsIDQ0LCA0LCAyMTMsIDQxLCA0NCwgNCwgMjEzLCA3NCwgNDQsIDQsIDIxMiwgMjQyLCA0NCwgNCwgMjEyLCAKLSAgICAyMzYsIDQ0LCA0LCAyMTMsIDUyLCA0NCwgNCwgMjExLCAxNjMsIDQ0LCA0LCAyMTEsIDEzMiwgNDQsIDQsIDIxMSwgMTI4LCAKLSAgICA0NCwgNCwgMjExLCAxMTksIDQ0LCA0LCAyMTEsIDExNiwgNDQsIDQsIDIxMSwgMTM4LCA0NCwgNCwgMjExLCAxMzcsIDQ0LCAKLSAgICA0LCAyMTEsIDE2MiwgNDQsIDQsIDIxMSwgMTI0LCA0NCwgNCwgMjExLCAxMjMsIDQ0LCA0LCAyMTEsIDE0MCwgNDQsIDQsIAotICAgIDIxNSwgMzMsIDQ0LCA0LCAyMTIsIDE2MiwgNDQsIDQsIDIxMiwgMTQyLCA0NCwgNCwgMjExLCAxMCwgNDQsIDQsIDIxMCwgCi0gICAgMTc5LCA0NCwgNCwgMjE0LCAxNzcsIDQ0LCA0LCAyMTQsIDE2NSwgNDQsIDQsIDIxNSwgMTgsIDQ0LCA0LCAyMTIsIDEzLCAKLSAgICA0NCwgNCwgMjExLCAyNTAsIDQ0LCA0LCAyMTQsIDIxNywgNDQsIDQsIDIzNywgMTU3LCA0NCwgNCwgMjM3LCAzLCA0NCwgNCwgCi0gICAgMjM2LCAyMzksIDQ0LCA0LCAyMzYsIDI2LCA0NCwgNCwgMjM2LCAxLCA0NCwgNCwgMjM3LCA2NywgNDQsIDQsIDIzNywgNDgsIAotICAgIDQ0LCA0LCAyMzcsIDE0NywgNDQsIDQsIDIzNiwgMTM2LCA0NCwgNCwgMjM2LCAxMTcsIDQ0LCA0LCAyMzcsIDc2LCA0NCwgNCwgCi0gICAgMjI4LCAyMjMsIDQ0LCA0LCAyMjgsIDIyMiwgNDQsIDQsIDIyOCwgMjE3LCA0NCwgNCwgMjI4LCAyMTYsIDQ0LCA0LCAyMjgsIAotICAgIDIxMywgNDQsIDQsIDIyOCwgMjEyLCA0NCwgNCwgMjI4LCAyMTksIDQ0LCA0LCAyMjgsIDIxOCwgNDQsIDQsIDIyOCwgMjIxLCAKLSAgICA0NCwgNCwgMjI4LCAyMTUsIDQ0LCA0LCAyMjgsIDIxNCwgNDQsIDQsIDIyOCwgMjIwLCA0NCwgNCwgMjEyLCAyMDUsIDE0MCwgCi0gICAgMTA5LCAyLCAyMDMsIDc1LCAxNDAsIDEwOSwgMiwgMjE2LCAxODYsIDE0MCwgMTA5LCAyLCAyMTYsIDEwMiwgMTE0LCAxLCAKLSAgICAyMDcsIDk1LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMTczLCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjI5LCAxNDQsIDg1LCAKLSAgICAxMDksIDIsIDI0NSwgMjQ5LCAyMjksIDI2LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjI5LCAxMTUsIDg1LCAxMDksIDIsIAotICAgIDI0NSwgMjQ5LCAyMjIsIDEyOCwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDI0NywgOTIsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAKLSAgICAyNDYsIDE5OSwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDI0NSwgMjU0LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjQ2LCAxMTYsIAotICAgIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyMjAsIDIzMywgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDI0NCwgMjEyLCA4NSwgMTA5LCAKLSAgICAyLCAyNDUsIDI0OSwgMjA3LCAyMjksIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyNDMsIDExMywgODUsIDEwOSwgMiwgMjQ1LCAKLSAgICAyNDksIDIwNywgMjI0LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjAxLCAyMDEsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyMTAsIAotICAgIDIyLCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjA5LCAxMDgsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAxMzUsIDg1LCAxMDksIAotICAgIDIsIDI0NSwgMjQ5LCAyMDksIDQ3LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjIxLCAxOTEsIDg1LCAxMDksIDIsIDI0NSwgCi0gICAgMjQ5LCAyNDksIDMyLCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjE4LCAyMDgsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyMTgsIAotICAgIDY5LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjE4LCAxODAsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyMjQsIDgyLCA4NSwgCi0gICAgMTA5LCAyLCAyNDUsIDI0OSwgMjAyLCAyNDcsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyMTUsIDIyNywgODUsIDEwOSwgMiwgCi0gICAgMjQ1LCAyNDksIDIyNywgNDksIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyMDUsIDE4OSwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIAotICAgIDIxMywgOTAsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyMTEsIDE2NCwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIxNSwgMzYsIAotICAgIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAxNTIsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyMjgsIDExMywgODUsIDIyLCAyLCAKLSAgICAyNDUsIDI0OSwgMjE3LCAxMjYsIDg1LCAyMzEsIDM2LCAyMiwgMiwgMjQ1LCAyNDksIDIxNywgNjUsIDg1LCAyMzEsIDM2LCAKLSAgICAyMiwgMiwgMjQ1LCAyNDksIDIxNSwgMTAyLCA4NSwgMjMxLCAzNiwgMjIsIDIsIDI0NSwgMjQ5LCAyMTUsIDk1LCA4NSwgCi0gICAgMjMxLCAzNiwgMjIsIDIsIDI0NSwgMjQ5LCAyMTcsIDEwNiwgODUsIDIyLCAyLCAyMjAsIDM5LCA4NSwgMjIsIDIsIDI1MSwgCi0gICAgMjQyLCAxNzIsIDEsIDI0OCwgNzksIDIyMiwgMjAzLCAxNzIsIDEsIDI0OCwgNzksIDIyMiwgMTUxLCAxNzIsIDEsIDI0OCwgCi0gICAgNzksIDIyMiwgMTE2LCAxNzIsIDEsIDI0OCwgNzksIDIyMiwgMTkwLCAxNzIsIDEsIDI0OCwgNzksIDIyMiwgMTI4LCA2NywgCi0gICAgMSwgMjQ4LCA3OSwgMjIyLCAyMDMsIDY3LCAxLCAyNDgsIDc5LCAyMjIsIDE1MSwgNjcsIDEsIDI0OCwgNzksIDIyMiwgMTE2LCAKLSAgICA2NywgMSwgMjQ4LCA3OSwgMjIyLCAxOTAsIDY3LCAxLCAyNDgsIDc5LCAyMjIsIDEyOCwgNjcsIDEsIDI1MSwgNTcsIDI0NiwgCi0gICAgMjM4LCA2NywgMSwgMjUxLCA1NywgMjA3LCAyMDMsIDY3LCAxLCAyNTEsIDU3LCAxMzUsIDY3LCAxLCAyNTEsIDU3LCAyMTksIAotICAgIDE4NCwgNjUsIDEsIDI0MCwgMTk4LCAyNDAsIDE5NywgMjQ1LCAxODgsIDE0MywgMTQyLCA2NSwgMSwgMjQwLCAxOTcsIDI0MCwgCi0gICAgMTk4LCAyNDUsIDE4OCwgMTQzLCAxNDIsIAorICAgIDAsIDIwOCwgMjQ0LCAyMzgsIDQzLCA4MSwgMjE0LCA2MywgODEsIDQxLCA1NCwgMjQwLCAxOTQsIDU0LCAyMTYsIDI3LCA1NCwgCisgICAgMjUxLCA4OSwgMjUxLCAxMywgNDksIDIxNiwgMTE1LCA1MSwgMjE2LCAxMTUsIDI1MCwgMTY1LCA5MywgNTQsIDI0NiwgNzAsIAorICAgIDIzMywgMzIsIDIzNiwgMTgzLCAyMDgsIDc2LCAyMDksIDE2LCAxNywgMTk5LCA4MSwgMTcsIDEwMiwgMTcsIDEwNSwgMTcsIAorICAgIDE0NywgMTcsIDE0OSwgMTcsIDE2NCwgMTcsIDE4NywgMTcsIDIxMCwgMTM1LCAxNywgMTkyLCAxNywgMjE5LCAxMTMsIDI0NiwgCisgICAgNzksIDIxMCwgMTY3LCAyMjQsIDI0MSwgNTQsIDIzOCwgMTIyLCA1NCwgMjM1LCA2NywgNTQsIDIxNCwgNzksIDgxLCAyNDYsIAorICAgIDY4LCAyNTAsIDE1NSwgOCwgNiwgMSwgNjIsIDgsIDYsIDEsIDI1MCwgMTAzLCA4LCA2LCAxLCAyNDcsIDIyMywgOCwgNiwgMSwgCisgICAgMjQyLCAxNTMsIDgsIDYsIDEsIDcyLCA4LCA2LCAxLCAyMzgsIDUsIDgsIDYsIDEsIDIzNiwgMTU2LCA4LCA2LCAxLCAyMzQsIAorICAgIDI0NywgOCwgNiwgMSwgNzAsIDgsIDYsIDEsIDIyNywgMjUxLCA4LCA2LCAxLCAyMjcsIDExOCwgOCwgNiwgMSwgMTU2LCA4LCAKKyAgICA2LCAxLCAyMjMsIDI0MywgOCwgNiwgMSwgMjIwLCAyMTQsIDgsIDYsIDEsIDc0LCA4LCA2LCAxLCAyMTYsIDIyNiwgOCwgNiwgCisgICAgMSwgMjE0LCAxNjcsIDgsIDYsIDEsIDE0NiwgOCwgNiwgMSwgMjEyLCAxMjIsIDgsIDYsIDEsIDIwNywgODMsIDgsIDYsIDEsIAorICAgIDY2LCA4LCA2LCAxLCAyMDMsIDE2OCwgOCwgNiwgMSwgMjAxLCAxNDcsIDgsIDYsIDEsIDIwMCwgMTk1LCA4LCA2LCAxLCAKKyAgICAyMDAsIDEyMywgOCwgNiwgMSwgMTk5LCAxNTcsIDQ5LCA1MiwgMTU5LCAyMTMsIDEwNiwgMjA5LCAxNiwgNTEsIDUyLCAxNTksIAorICAgIDI0NiwgMTQ3LCAyNTEsIDI1MSwgMTI4LCAyMjQsIDE3NiwgMjM1LCA3NCwgMjUxLCAyNTEsIDgsIDQsIDEsIDYyLCA4LCA0LCAKKyAgICAxLCAyNTAsIDEwMywgOCwgNCwgMSwgMjQ3LCAyMjMsIDgsIDQsIDEsIDI0MiwgMTUzLCA4LCA0LCAxLCA3MiwgOCwgNCwgMSwgCisgICAgMjM4LCA1LCA4LCA0LCAxLCAyMzYsIDE1NiwgOCwgNCwgMSwgMjM0LCAyNDcsIDgsIDQsIDEsIDcwLCA4LCA0LCAxLCAyMjcsIAorICAgIDI1MSwgOCwgNCwgMSwgMjI3LCAxMTgsIDgsIDQsIDEsIDE1NiwgOCwgNCwgMSwgMjIzLCAyNDMsIDgsIDQsIDEsIDIyMCwgCisgICAgMjE0LCA4LCA0LCAxLCA3NCwgOCwgNCwgMSwgMjE2LCAyMjYsIDgsIDQsIDEsIDIxNCwgMTY3LCA4LCA0LCAxLCAxNDYsIDgsIAorICAgIDQsIDEsIDIxMiwgMTIyLCA4LCA0LCAxLCAyMDcsIDgzLCA4LCA0LCAxLCA2NiwgOCwgNCwgMSwgMjAzLCAxNjgsIDgsIDQsIAorICAgIDEsIDIwMSwgMTQ3LCA4LCA0LCAxLCAyMDAsIDE5NSwgOCwgNCwgMSwgMjAwLCAxMjMsIDgsIDQsIDEsIDE5OSwgMTU3LCA0OSwgCisgICAgMjQyLCAxOTYsIDE1OSwgODMsIDIyNCwgMTc2LCA1MSwgMjQyLCAxOTYsIDE1OSwgMjA1LCAyNDAsIDIxOCwgMjQwLCAyMDgsIAorICAgIDI0NCwgMjI4LCA1MCwgMjM4LCA0MywgODEsIDI0NywgNTgsIDU0LCAyMTUsIDU2LCA1NCwgMjQyLCAxOTUsIDU0LCAyMDAsIAorICAgIDQyLCA1NCwgMjQ4LCA0NiwgMTQ4LCAyMTEsIDE5MywgNTQsIDI0MSwgNzQsIDI0MywgMTksIDU0LCAyMzcsIDEyOCwgMjE3LCAKKyAgICAyOSwgMjI4LCA5OSwgMjI1LCAyMywgNTMsIDI1MSwgNzEsIDIxNCwgNjMsIDgxLCAyMTgsIDIxNSwgNTQsIDIwOSwgMjMsIAorICAgIDIzMywgMzMsIDIxMywgMTYxLCA1NCwgMjIyLCAyMjgsIDI0MSwgMTU1LCA1NCwgMjE1LCAxMTIsIDU0LCAyMDcsIDIxMywgCisgICAgMTA1LCAyMDcsIDIxMywgMTQ3LCAyNTEsIDIzOSwgMjUxLCAyNTEsIDIyMSwgMjA5LCA1NCwgMjE1LCAxNjMsIDU0LCAxMDEsIAorICAgIDI0MCwgMTgyLCAyNDcsIDY5LCAyMDcsIDIxMywgMTAyLCAyMjIsIDEzNiwgMjE3LCAyOSwgMjI4LCA5OSwgMjEzLCA0MSwgCisgICAgNTMsIDI1MSwgNzEsIDIxNCwgNjMsIDgxLCAyMDEsIDE2NCwgMjM2LCAyMTksIDExMiwgMjE0LCA4NywgMjAxLCAxNjQsIAorICAgIDIzNiwgMjE5LCAxMTIsIDIzNCwgMjEzLCAyMDEsIDE2NCwgMjM2LCAyMTksIDEyNiwgMjE0LCA4NSwgMjI4LCA1MCwgMjE0LCAKKyAgICA3OSwgODEsIDgsIDYsIDEsIDM1LCAzLCAyMzUsIDczLCA4LCA2LCAxLCAzNSwgMywgMTY5LCA4LCA2LCAxLCAzNSwgMywgCisgICAgMjQ2LCAxNDYsIDgsIDYsIDEsIDM1LCAzLCAyMDUsIDI0MCwgOCwgNiwgMSwgMzUsIDMsIDI0MSwgNzQsIDgsIDYsIDEsIDM1LCAKKyAgICAzLCAyMTMsIDI3LCA1NiwgOCwgNiwgMSwgMjUxLCAyMjEsIDgsIDYsIDEsIDI0NywgMjI0LCAzLCAyNDcsIDY5LCA4LCA2LCAKKyAgICAxLCAxOTcsIDMsIDIzNSwgNzMsIDgsIDYsIDEsIDE5NywgMywgMTY5LCA4LCA2LCAxLCAxOTcsIDMsIDI0NiwgMTQ2LCA4LCAKKyAgICA2LCAxLCAxOTcsIDMsIDI0MSwgNzQsIDgsIDYsIDEsIDIzMywgMTksIDMsIDIzNSwgNzMsIDgsIDYsIDEsIDIzMywgMTksIDMsIAorICAgIDE2OSwgOCwgNiwgMSwgMjMzLCAxOSwgMywgMjQ2LCAxNDYsIDgsIDYsIDEsIDIzMywgMTksIDMsIDI0MSwgNzQsIDgsIDYsIAorICAgIDEsIDIzOCwgNzQsIDgsIDYsIDEsIDIyMCwgMjE1LCAzLCAyMDUsIDI0MCwgOCwgNiwgMSwgMTYzLCAzLCAyMzUsIDczLCA4LCAKKyAgICA2LCAxLCAxNjMsIDMsIDE2OSwgOCwgNiwgMSwgMTYzLCAzLCAyNDYsIDE0NiwgOCwgNiwgMSwgMTYzLCAzLCAyMDUsIDI0MCwgCisgICAgOCwgNiwgMSwgMTYzLCAzLCAyNDEsIDc0LCAyMjEsIDE5LCA1NCwgOCwgNiwgMSwgMTYzLCAzLCA5NywgOCwgNiwgMSwgMTA4LCAKKyAgICAzLCAyMzUsIDczLCA4LCA2LCAxLCAxMDgsIDMsIDE2OSwgOCwgNiwgMSwgMTA4LCAzLCAyNDYsIDE0NiwgOCwgNiwgMSwgCisgICAgMTA4LCAzLCAyNDEsIDc0LCA4LCA2LCAxLCAyMDAsIDEyNCwgMywgMTY5LCA4LCA2LCAxLCAyMDYsIDU0LCA4LCA0LCAxLCAKKyAgICAyMTAsIDc5LCAyMTIsIDEyMiwgOCwgNCwgMSwgMzUsIDMsIDIzNSwgNzMsIDgsIDQsIDEsIDM1LCAzLCAxNjksIDgsIDQsIDEsIAorICAgIDM1LCAzLCAyNDYsIDE0NiwgOCwgNCwgMSwgMzUsIDMsIDIwNSwgMjQwLCA4LCA0LCAxLCAzNSwgMywgMjQxLCA3NCwgOCwgNCwgCisgICAgMSwgMzUsIDMsIDIxMywgMjcsIDU2LCA4LCA0LCAxLCAyNTEsIDIyMSwgOCwgNCwgMSwgMjQ3LCAyMjQsIDMsIDI0NywgNjksIAorICAgIDgsIDQsIDEsIDE5NywgMywgMjM1LCA3MywgOCwgNCwgMSwgMTk3LCAzLCAxNjksIDgsIDQsIDEsIDE5NywgMywgMjQ2LCAKKyAgICAxNDYsIDgsIDQsIDEsIDE5NywgMywgMjQxLCA3NCwgOCwgNCwgMSwgMjMzLCAxOSwgMywgMjM1LCA3MywgOCwgNCwgMSwgCisgICAgMjMzLCAxOSwgMywgMTY5LCA4LCA0LCAxLCAyMzMsIDE5LCAzLCAyNDYsIDE0NiwgOCwgNCwgMSwgMjMzLCAxOSwgMywgMjQxLCAKKyAgICA3NCwgOCwgNCwgMSwgMjM4LCA3NCwgOCwgNCwgMSwgMjIwLCAyMTUsIDMsIDIwNSwgMjQwLCA4LCA0LCAxLCAxNjMsIDMsIAorICAgIDIzNSwgNzMsIDgsIDQsIDEsIDE2MywgMywgMTY5LCA4LCA0LCAxLCAxNjMsIDMsIDI0NiwgMTQ2LCA4LCA0LCAxLCAxNjMsIAorICAgIDMsIDIwNSwgMjQwLCA4LCA0LCAxLCAxNjMsIDMsIDI0MSwgNzQsIDI0MCwgMjM1LCA1NCwgOCwgNCwgMSwgMTYzLCAzLCA5NywgCisgICAgOCwgNCwgMSwgMTA4LCAzLCAyMzUsIDczLCA4LCA0LCAxLCAxMDgsIDMsIDE2OSwgOCwgNCwgMSwgMTA4LCAzLCAyNDYsIAorICAgIDE0NiwgOCwgNCwgMSwgMTA4LCAzLCAyNDEsIDc0LCA4LCA0LCAxLCAyMDAsIDEyNCwgMywgMTY5LCA4LCA0LCAxLCAyMDYsIAorICAgIDU0LCA4LCA0LCAxLCAyMDAsIDEyNCwgMywgMjQxLCA3NCwgOCwgNiwgMSwgMzUsIDMsIDIyMiwgMjI4LCA4LCA0LCAxLCAzNSwgCisgICAgMywgMjIyLCAyMjgsIDgsIDYsIDEsIDM1LCAzLCAyNDgsIDU3LCA4LCA0LCAxLCAzNSwgMywgMjQ4LCA1NywgOCwgNiwgMSwgCisgICAgMzUsIDMsIDIxNywgMTEwLCA4LCA0LCAxLCAzNSwgMywgMjE3LCAxMTAsIDgsIDYsIDEsIDI0NywgMjI0LCAzLCAxNjksIDgsIAorICAgIDQsIDEsIDI0NywgMjI0LCAzLCAxNjksIDgsIDYsIDEsIDI0NywgMjI0LCAzLCAyNDYsIDE0NiwgOCwgNCwgMSwgMjQ3LCAKKyAgICAyMjQsIDMsIDI0NiwgMTQ2LCA4LCA2LCAxLCAyNDcsIDIyNCwgMywgNzMsIDU2LCA4LCA0LCAxLCAyNDcsIDIyNCwgMywgNzMsIAorICAgIDU2LCA4LCA2LCAxLCAyNDcsIDIyNCwgMywgMjQ3LCAxMjUsIDgsIDQsIDEsIDI0NywgMjI0LCAzLCAyNDcsIDEyNSwgOCwgNiwgCisgICAgMSwgMjQyLCAxNTQsIDMsIDI0NywgMTI1LCA4LCA0LCAxLCAyNDIsIDE1NCwgMywgMjQ3LCAxMjUsIDgsIDYsIDEsIDI0MiwgCisgICAgMTU0LCAzLCA5NywgOCwgNCwgMSwgMjQyLCAxNTQsIDMsIDk3LCA4LCA2LCAxLCAxOTcsIDMsIDIyMiwgMjI4LCA4LCA0LCAxLCAKKyAgICAxOTcsIDMsIDIyMiwgMjI4LCA4LCA2LCAxLCAxOTcsIDMsIDI0OCwgNTcsIDgsIDQsIDEsIDE5NywgMywgMjQ4LCA1NywgOCwgCisgICAgNiwgMSwgMTk3LCAzLCA3MywgNTYsIDgsIDQsIDEsIDE5NywgMywgNzMsIDU2LCA4LCA2LCAxLCAxOTcsIDMsIDIxNywgMTEwLCAKKyAgICA4LCA0LCAxLCAxOTcsIDMsIDIxNywgMTEwLCA4LCA2LCAxLCAxOTcsIDMsIDI0NywgMTI1LCA4LCA0LCAxLCAxOTcsIDMsIAorICAgIDI0NywgMTI1LCA4LCA2LCAxLCAyMzYsIDE1NywgMywgMjQ2LCAxNDYsIDgsIDQsIDEsIDIzNiwgMTU3LCAzLCAyNDYsIDE0NiwgCisgICAgOCwgNiwgMSwgMjM2LCAxNTcsIDMsIDI0OCwgNTcsIDgsIDQsIDEsIDIzNiwgMTU3LCAzLCAyNDgsIDU3LCA4LCA2LCAxLCAKKyAgICAyMzYsIDE1NywgMywgNzMsIDU2LCA4LCA0LCAxLCAyMzYsIDE1NywgMywgNzMsIDU2LCA4LCA2LCAxLCAyMzYsIDE1NywgMywgCisgICAgMjQ3LCA2OSwgOCwgNCwgMSwgMjM2LCAxNTcsIDMsIDI0NywgNjksIDgsIDYsIDEsIDIzNCwgMjQ4LCAzLCAyNDYsIDE0NiwgCisgICAgOCwgNCwgMSwgMjM0LCAyNDgsIDMsIDI0NiwgMTQ2LCA4LCA2LCAxLCAyMzQsIDI0OCwgMywgOTcsIDgsIDQsIDEsIDIzNCwgCisgICAgMjQ4LCAzLCA5NywgOCwgNiwgMSwgMjMzLCAxOSwgMywgMjA1LCAyNDAsIDgsIDQsIDEsIDIzMywgMTksIDMsIDIwNSwgMjQwLCAKKyAgICA4LCA2LCAxLCAyMzMsIDE5LCAzLCAyMjIsIDIyOCwgOCwgNCwgMSwgMjMzLCAxOSwgMywgMjIyLCAyMjgsIDgsIDYsIDEsIAorICAgIDIzMywgMTksIDMsIDI0OCwgNTcsIDgsIDQsIDEsIDIzMywgMTksIDMsIDI0OCwgNTcsIDgsIDYsIDEsIDIzMywgMTksIDMsIAorICAgIDIxNywgMTEwLCA4LCA0LCAxLCAyMzMsIDE5LCAzLCAyMTcsIDExMCwgOCwgNiwgMSwgMjMzLCAxOSwgMywgNzMsIDU2LCA4LCAKKyAgICA0LCAxLCAyNDAsIDE4MSwgNzAsIDgsIDYsIDMzLCAyMjgsIDE0OSwgOCwgNCwgMzMsIDIyOCwgMTQ5LCA4LCA2LCAxLCAyMjcsIAorICAgIDI1MiwgMywgMjQ2LCAxNDYsIDgsIDQsIDEsIDIyNywgMjUyLCAzLCAyNDYsIDE0NiwgOCwgNiwgMSwgMjI3LCAxMTksIDMsIAorICAgIDI0NywgNjksIDgsIDQsIDEsIDIyNywgMTE5LCAzLCAyNDcsIDY5LCA4LCA0LCAxLCAyMjYsIDM3LCA4LCA2LCAxLCAyMjUsIAorICAgIDE5MywgMywgMTY5LCA4LCA0LCAxLCAyMjUsIDE5MywgMywgMTY5LCA4LCA2LCAxLCAyMjUsIDE5MywgMywgMjQ3LCA2OSwgOCwgCisgICAgNCwgMSwgMjI1LCAxOTMsIDMsIDI0NywgNjksIDgsIDYsIDEsIDIyNSwgMTkzLCAzLCAyNDcsIDEyNSwgOCwgNCwgMSwgMjI1LCAKKyAgICAxOTMsIDMsIDI0NywgMTI1LCA4LCA2LCAxLCAyMjUsIDE5MywgMywgMTAxLCAyNDAsIDE4MiwgOCwgNCwgMSwgMjI1LCAxOTMsIAorICAgIDMsIDEwMSwgMjQwLCAxODIsIDgsIDYsIDEsIDIyNSwgMTkzLCAzLCA5NywgOCwgNCwgMSwgMjI1LCAxOTMsIDMsIDk3LCA4LCAKKyAgICA2LCAxLCAyMjAsIDIxNSwgMywgMTY5LCA4LCA0LCAxLCAyMjAsIDIxNSwgMywgMTY5LCA4LCA2LCAxLCAyMjAsIDIxNSwgMywgCisgICAgMjQ3LCA2OSwgOCwgNCwgMSwgMjIwLCAyMTUsIDMsIDI0NywgNjksIDgsIDYsIDEsIDIyMCwgMjE1LCAzLCAyNDcsIDEyNSwgCisgICAgOCwgNCwgMSwgMjIwLCAyMTUsIDMsIDI0NywgMTI1LCA4LCA0LCAxLCAyMjAsIDIxNSwgMjE1LCAzMCwgMjQ3LCAyMzUsIAorICAgIDI1MSwgMTMsIDgsIDYsIDEsIDIzOCwgMTY1LCA4LCA0LCAxLCAyMzgsIDE2NSwgOCwgNiwgMSwgMTYzLCAzLCAyMjIsIDIyOCwgCisgICAgOCwgNCwgMSwgMTYzLCAzLCAyMjIsIDIyOCwgOCwgNiwgMSwgMTYzLCAzLCAyNDgsIDU3LCA4LCA0LCAxLCAxNjMsIDMsIAorICAgIDI0OCwgNTcsIDgsIDYsIDEsIDE2MywgMywgNTMsIDE2OSwgOCwgNCwgMSwgMTYzLCAzLCA1MywgMTY5LCA4LCA2LCAzMywgCisgICAgMjE3LCAxMjEsIDgsIDQsIDMzLCAyMTcsIDEyMSwgOCwgNiwgMSwgMjE0LCAzMywgMywgMTY5LCA4LCA0LCAxLCAyMTQsIDMzLCAKKyAgICAzLCAxNjksIDgsIDYsIDEsIDIxNCwgMzMsIDMsIDI0NywgNjksIDgsIDQsIDEsIDIxNCwgMzMsIDMsIDI0NywgNjksIDgsIDYsIAorICAgIDEsIDIxNCwgMzMsIDMsIDI0NywgMTI1LCA4LCA0LCAxLCAyMTQsIDMzLCAzLCAyNDcsIDEyNSwgOCwgNiwgMSwgMjEyLCAKKyAgICAxMjMsIDMsIDE2OSwgOCwgNCwgMSwgMjEyLCAxMjMsIDMsIDE2OSwgOCwgNiwgMSwgMjEyLCAxMjMsIDMsIDI0NiwgMTQ2LCAKKyAgICA4LCA0LCAxLCAyMTIsIDEyMywgMywgMjQ2LCAxNDYsIDgsIDYsIDEsIDIxMiwgMTIzLCAzLCAyNDcsIDY5LCA4LCA0LCAxLCAKKyAgICAyMTIsIDEyMywgMywgMjQ3LCA2OSwgOCwgNiwgMSwgMjEyLCAxMjMsIDMsIDI0NywgMTI1LCA4LCA0LCAxLCAyMTIsIDEyMywgCisgICAgMywgMjQ3LCAxMjUsIDgsIDYsIDEsIDIwNywgODQsIDMsIDI0NywgNjksIDgsIDQsIDEsIDIwNywgODQsIDMsIDI0NywgNjksIAorICAgIDgsIDYsIDEsIDIwNywgODQsIDMsIDI0NywgMTI1LCA4LCA0LCAxLCAyMDcsIDg0LCAzLCAyNDcsIDEyNSwgOCwgNiwgMSwgCisgICAgMjA3LCA4NCwgMywgOTcsIDgsIDQsIDEsIDIwNywgODQsIDMsIDk3LCA4LCA2LCAxLCAxMDgsIDMsIDIwNSwgMjQwLCA4LCA0LCAKKyAgICAxLCAxMDgsIDMsIDIwNSwgMjQwLCA4LCA2LCAxLCAxMDgsIDMsIDIyMiwgMjI4LCA4LCA0LCAxLCAxMDgsIDMsIDIyMiwgCisgICAgMjI4LCA4LCA2LCAxLCAxMDgsIDMsIDI0OCwgNTcsIDgsIDQsIDEsIDEwOCwgMywgMjQ4LCA1NywgOCwgNiwgMSwgMTA4LCAzLCAKKyAgICAyMTMsIDI3LCA1NiwgOCwgNCwgMSwgMTA4LCAzLCAyMTMsIDI3LCA1NiwgOCwgNiwgMSwgMTA4LCAzLCA1MywgMTY5LCA4LCAKKyAgICA0LCAxLCAxMDgsIDMsIDUzLCAxNjksIDgsIDYsIDEsIDEwOCwgMywgMjE3LCAxMTAsIDgsIDQsIDEsIDEwOCwgMywgMjE3LCAKKyAgICAxMTAsIDgsIDYsIDEsIDIwMSwgMTQ4LCAzLCAyNDYsIDE0NiwgOCwgNCwgMSwgMjAxLCAxNDgsIDMsIDI0NiwgMTQ2LCA4LCAKKyAgICA2LCAxLCAyMDAsIDEyNCwgMywgMjQ2LCAxNDYsIDgsIDQsIDEsIDIwMCwgMTI0LCAzLCAyNDYsIDE0NiwgOCwgNiwgMSwgCisgICAgMjAwLCAxMjQsIDMsIDI0MSwgNzQsIDgsIDYsIDEsIDE5OSwgMTU4LCAzLCAxNjksIDgsIDQsIDEsIDE5OSwgMTU4LCAzLCAKKyAgICAxNjksIDgsIDYsIDEsIDE5OSwgMTU4LCAzLCA3MywgNTYsIDgsIDQsIDEsIDE5OSwgMTU4LCAzLCA3MywgNTYsIDgsIDYsIDEsIAorICAgIDE5OSwgMTU4LCAzLCAyNDcsIDEyNSwgOCwgNCwgMSwgMTk5LCAxNTgsIDMsIDI0NywgMTI1LCA4LCA0LCAxLCAxNjgsIDIxMiwgCisgICAgMTIyLCA4LCA0LCAxLCA2OCwgMywgOTcsIDgsIDYsIDEsIDY4LCAzLCAxMTcsIDgsIDYsIDEsIDY4LCAzLCAyMDUsIDE1NSwgCisgICAgOCwgNCwgMSwgNjgsIDMsIDIwNSwgMTU1LCA4LCA2LCAxLCAxNTAsIDE4NywgOCwgNCwgMSwgMTUwLCAxODcsIDgsIDYsIDEsIAorICAgIDE3NiwgNzQsIDgsIDYsIDEsIDI0NywgMjI0LCAzLCAxMTcsIDgsIDQsIDEsIDI0NywgMjI0LCAzLCAxMTcsIDgsIDYsIDEsIAorICAgIDI1MSwgMTk2LCAyNDIsIDE1MywgOCwgNiwgMSwgMjQyLCAxNTQsIDMsIDExNywgOCwgNiwgMSwgMjQyLCAxNTQsIDMsIDIwNSwgCisgICAgMTU1LCA4LCA0LCAxLCAyNDIsIDE1NCwgMywgMjA1LCAxNTUsIDgsIDQsIDEsIDIwNCwgMTg1LCAyNDEsIDEzNiwgOCwgNiwgCisgICAgMSwgMjEzLCAxMDUsIDcyLCA4LCA2LCAxLCAyMTEsIDIxOCwgOCwgNiwgMSwgMTc2LCA3MiwgOCwgNiwgMSwgMjM4LCA2LCAzLCAKKyAgICAxMTcsIDgsIDQsIDEsIDIzOCwgNiwgMywgMTE3LCA4LCA2LCAxLCAyMzYsIDE1NywgMywgMTE3LCA4LCA2LCAxLCAyMzYsIAorICAgIDYwLCA4LCA0LCAxLCAyMzMsIDY5LCA4LCA2LCAxLCAyMjgsIDQxLCA4LCA2LCAxLCAyMzMsIDE5LCAzLCA5NywgOCwgNiwgMSwgCisgICAgMjI3LCAxMTksIDMsIDExNywgOCwgNCwgMSwgMjI3LCAxMTksIDMsIDExNywgOCwgNCwgMSwgMjI1LCAxOTMsIDMsIDE0OCwgCisgICAgOCwgNCwgMSwgMjI1LCA4OSwgMywgOTcsIDgsIDYsIDEsIDIwNCwgMTg1LCAyMjMsIDI0MywgOCwgNiwgMSwgMjIwLCAyMTUsIAorICAgIDMsIDQ5LCAxMTcsIDgsIDQsIDEsIDIyMCwgMjE1LCAzLCAxNjgsIDUxLCAyMjUsIDE2LCA4LCA2LCAxLCAxNjMsIDMsIDEwMSwgCisgICAgMjA1LCAyNDAsIDgsIDYsIDEsIDE2MywgMywgMjMzLCAxMjQsIDgsIDQsIDEsIDE2MywgMywgMjMzLCAxMjQsIDgsIDYsIDEsIAorICAgIDIxNywgMTA1LCA4LCA0LCAxLCAyMTcsIDEwNSwgOCwgNiwgMSwgMjE2LCAyMjcsIDMsIDExNywgOCwgNCwgMSwgMjE2LCAKKyAgICAyMjcsIDMsIDExNywgOCwgMSwgMTk5LCAyMTQsIDgsIDYsIDEsIDE1MCwgMTA1LCA4LCA0LCAxLCAxNTAsIDEwNSwgOCwgNiwgCisgICAgMSwgMjM4LCA5NCwgOCwgMSwgMjEzLCAxMDUsIDIzOCwgOTUsIDIyNCwgNzQsIDgsIDQsIDEsIDIwNywgODQsIDMsIDIxNiwgCisgICAgMTg0LCAxMTcsIDgsIDYsIDEsIDIwNywgODQsIDMsIDExNywgOCwgNCwgMSwgMjA3LCA4NCwgMywgMTE3LCA4LCA2LCAxLCAKKyAgICAyMDcsIDg0LCAzLCAyMTMsIDExMSwgMTE3LCA4LCA2LCAxLCAxMDgsIDMsIDIzMywgMTI0LCA4LCA0LCAxLCAxMDgsIDMsIAorICAgIDIzMywgMTI0LCA4LCA2LCAxLCAyMDMsIDIyMCwgOCwgNiwgMSwgMjAzLCAxNjksIDMsIDExNywgOCwgNiwgMSwgMjAwLCAKKyAgICAxMjQsIDMsIDExNywgOCwgNCwgMSwgMjAwLCAxMjQsIDMsIDExNywgOCwgNiwgMSwgMTk5LCAxNTgsIDMsIDk3LCA4LCA0LCAKKyAgICAxLCAxOTksIDE1OCwgMywgOTcsIDgsIDYsIDEsIDIzOCwgOCwgOCwgNiwgMSwgMjM4LCA5LCAyMTMsIDEwNCwgOCwgNCwgMSwgCisgICAgMjM4LCA5LCAyMTMsIDEwNCwgOCwgNCwgMSwgMjM4LCA5LCAzLCAyMDcsIDYsIDgsIDEsIDEyMCwgMywgOTcsIDgsIDYsIDEsIAorICAgIDE1MCwgMTY0LCA4LCA0LCAxLCAxNTAsIDE2NCwgOCwgMSwgMjI4LCA1MCwgMjM1LCAxMjMsIDIwOCwgNzcsIDMsIDk3LCA4LCAKKyAgICAxLCAyMDAsIDE5OCwgOCwgMSwgMjQxLCAxMjksIDI0NiwgMTIxLCA4LCAxLCAyMjUsIDYxLCAyNDYsIDEyMSwgOCwgMSwgCisgICAgMjUxLCAxMDIsIDI0NiwgMTIxLCA4LCAxLCAyMTMsIDExMSwgMjQ2LCAxMjEsIDgsIDYsIDEsIDIzOSwgOTUsIDMsIDI0NywgCisgICAgMTI1LCA4LCA2LCAxLCAyNDIsIDE1NCwgMywgNCwgMSwgMTk5LCAxNTgsIDMsIDI0NywgMTI1LCA4LCA0LCAxLCAyMzksIDk1LCAKKyAgICAzLCAyNDcsIDEyNSwgOCwgNiwgMSwgMjI0LCAxNDIsIDgsIDYsIDEsIDIyNSwgMTkzLCAzLCA0LCAxLCAyMjcsIDI1MSwgOCwgCisgICAgNCwgMSwgMjI0LCAxNDIsIDgsIDYsIDEsIDIxOSwgOTksIDgsIDYsIDEsIDIyMCwgMjE1LCAzLCA0LCAxLCAyMjcsIDI1MSwgCisgICAgOCwgNCwgMSwgMjE5LCA5OSwgOCwgNiwgMSwgMzUsIDMsIDI0NywgMTI1LCA4LCA0LCAxLCAzNSwgMywgMjQ3LCAxMjUsIDgsIAorICAgIDYsIDEsIDIzMywgMTksIDMsIDI0NywgMTI1LCA4LCA0LCAxLCAyMzMsIDE5LCAzLCAyNDcsIDEyNSwgOCwgNiwgMSwgMTYzLCAKKyAgICAzLCAyNDcsIDEyNSwgOCwgNCwgMSwgMTYzLCAzLCAyNDcsIDEyNSwgOCwgNiwgMSwgMTA4LCAzLCAyNDcsIDEyNSwgOCwgNCwgCisgICAgMSwgMTA4LCAzLCAyNDcsIDEyNSwgOCwgNiwgMSwgMTA4LCAzLCAyNDEsIDc1LCAyNiwgMjIyLCAyMjgsIDgsIDQsIDEsIAorICAgIDEwOCwgMywgMjQxLCA3NSwgMjYsIDIyMiwgMjI4LCA4LCA2LCAxLCAxMDgsIDMsIDI0MSwgNzUsIDI2LCAxNjksIDgsIDQsIAorICAgIDEsIDEwOCwgMywgMjQxLCA3NSwgMjYsIDE2OSwgOCwgNiwgMSwgMTA4LCAzLCAyNDEsIDc1LCAyNiwgMjQ3LCAxMjUsIDgsIAorICAgIDQsIDEsIDEwOCwgMywgMjQxLCA3NSwgMjYsIDI0NywgMTI1LCA4LCA2LCAxLCAxMDgsIDMsIDI0MSwgNzUsIDI2LCAyMzUsIAorICAgIDczLCA4LCA0LCAxLCAxMDgsIDMsIDI0MSwgNzUsIDI2LCAyMzUsIDczLCA4LCA0LCAxLCAyMDQsIDE4NSwgNzIsIDgsIDYsIAorICAgIDEsIDM1LCAzLCAyNDEsIDc1LCAyNiwgMjIyLCAyMjgsIDgsIDQsIDEsIDM1LCAzLCAyNDEsIDc1LCAyNiwgMjIyLCAyMjgsIAorICAgIDgsIDYsIDEsIDM1LCAzLCA3MywgODgsIDI2LCAyMjIsIDIyOCwgOCwgNCwgMSwgMzUsIDMsIDczLCA4OCwgMjYsIDIyMiwgCisgICAgMjI4LCA4LCA2LCAxLCAyNTEsIDIyMiwgMywgMjIyLCAyMjgsIDgsIDQsIDEsIDI1MSwgMjIyLCAzLCAyMjIsIDIyOCwgOCwgCisgICAgNiwgMSwgMjM2LCAxNTcsIDMsIDk3LCA4LCA0LCAxLCAyMzYsIDE1NywgMywgOTcsIDgsIDYsIDEsIDIzNiwgMTU3LCAzLCAKKyAgICAyNDcsIDEyNSwgOCwgNCwgMSwgMjM2LCAxNTcsIDMsIDI0NywgMTI1LCA4LCA2LCAxLCAyMjcsIDExOSwgMywgMjQ3LCAxMjUsIAorICAgIDgsIDQsIDEsIDIyNywgMTE5LCAzLCAyNDcsIDEyNSwgOCwgNiwgMSwgMTYzLCAzLCAyMTcsIDExMCwgOCwgNCwgMSwgMTYzLCAKKyAgICAzLCAyMTcsIDExMCwgOCwgNiwgMSwgMTYzLCAzLCAyMTcsIDExMSwgMjYsIDIyMiwgMjI4LCA4LCA0LCAxLCAxNjMsIDMsIAorICAgIDIxNywgMTExLCAyNiwgMjIyLCAyMjgsIDgsIDYsIDEsIDIzOCwgOSwgMywgMjQ3LCAxMjUsIDgsIDQsIDEsIDIzOCwgOSwgMywgCisgICAgMjQ3LCAxMjUsIDgsIDQsIDEsIDIyNywgMjUyLCAzLCAyNDcsIDEyNSwgOCwgNiwgMSwgMjM5LCA5NCwgOCwgNiwgMSwgMjQyLCAKKyAgICAxNTQsIDMsIDQsIDEsIDE5OSwgMTU3LCA4LCA0LCAxLCAyMzksIDk0LCA4LCA2LCAxLCAyMzYsIDE1NywgMywgMTY5LCA4LCAKKyAgICA0LCAxLCAyMzYsIDE1NywgMywgMTY5LCA4LCA2LCAxLCAyMzMsIDY2LCA4LCA2LCAxLCAyMDAsIDE5OCwgOCwgNiwgMSwgCisgICAgMjIwLCAyMTUsIDMsIDIzNSwgNzMsIDgsIDQsIDEsIDIyMCwgMjE1LCAzLCAyMzUsIDczLCA4LCA2LCAxLCAzNSwgMywgMjEzLCAKKyAgICAyNywgODgsIDI2LCAxNjksIDgsIDQsIDEsIDM1LCAzLCAyMTMsIDI3LCA4OCwgMjYsIDE2OSwgOCwgNiwgMSwgMjUxLCAyMjIsIAorICAgIDMsIDE2OSwgOCwgNCwgMSwgMjUxLCAyMjIsIDMsIDE2OSwgOCwgNiwgMSwgMTYzLCAzLCAyMDgsIDQ3LCAyNiwgMTY5LCA4LCAKKyAgICA0LCAxLCAxNjMsIDMsIDIwOCwgNDcsIDI2LCAxNjksIDgsIDYsIDEsIDM1LCAzLCA1MywgMjM1LCA3MywgOCwgNCwgMSwgMzUsIAorICAgIDMsIDUzLCAyMzUsIDczLCA4LCA2LCAxLCAzNSwgMywgMjI4LCA1MCwgMjQ4LCA1NywgOCwgNCwgMSwgMzUsIDMsIDIyOCwgCisgICAgNTAsIDI0OCwgNTcsIDgsIDYsIDEsIDE5NywgMywgNTMsIDIzNSwgNzMsIDgsIDQsIDEsIDE5NywgMywgNTMsIDIzNSwgNzMsIAorICAgIDgsIDYsIDEsIDE5NywgMywgMjI4LCA1MCwgMjQ4LCA1NywgOCwgNCwgMSwgMTk3LCAzLCAyMjgsIDUwLCAyNDgsIDU3LCA4LCAKKyAgICA2LCAxLCAyMzMsIDE5LCAzLCA1MywgMjM1LCA3MywgOCwgNCwgMSwgMjMzLCAxOSwgMywgNTMsIDIzNSwgNzMsIDgsIDYsIDEsIAorICAgIDIzMywgMTksIDMsIDIyOCwgNTAsIDI0OCwgNTcsIDgsIDQsIDEsIDIzMywgMTksIDMsIDIyOCwgNTAsIDI0OCwgNTcsIDgsIAorICAgIDYsIDEsIDE2MywgMywgNTMsIDIzNSwgNzMsIDgsIDQsIDEsIDE2MywgMywgNTMsIDIzNSwgNzMsIDgsIDYsIDEsIDE2MywgMywgCisgICAgMjI4LCA1MCwgMjQ4LCA1NywgOCwgNCwgMSwgMTYzLCAzLCAyMjgsIDUwLCAyNDgsIDU3LCA4LCA2LCAxLCAyMTQsIDMzLCAzLCAKKyAgICA1MywgMjM1LCA3MywgOCwgNCwgMSwgMjE0LCAzMywgMywgNTMsIDIzNSwgNzMsIDgsIDYsIDEsIDIxNCwgMzMsIDMsIDIyOCwgCisgICAgNTAsIDI0OCwgNTcsIDgsIDQsIDEsIDIxNCwgMzMsIDMsIDIyOCwgNTAsIDI0OCwgNTcsIDgsIDYsIDEsIDEwOCwgMywgNTMsIAorICAgIDIzNSwgNzMsIDgsIDQsIDEsIDEwOCwgMywgNTMsIDIzNSwgNzMsIDgsIDYsIDEsIDEwOCwgMywgMjI4LCA1MCwgMjQ4LCA1NywgCisgICAgOCwgNCwgMSwgMTA4LCAzLCAyMjgsIDUwLCAyNDgsIDU3LCA4LCA2LCAxLCAyMTIsIDEyMywgMywgMjQ2LCA3MSwgNTcsIDgsIAorICAgIDQsIDEsIDIxMiwgMTIzLCAzLCAyNDYsIDcxLCA1NywgOCwgNiwgMSwgMjA3LCA4NCwgMywgMjQ2LCA3MSwgNTcsIDgsIDQsIAorICAgIDEsIDIwNywgODQsIDMsIDI0NiwgNzEsIDU3LCA4LCA2LCAxLCAxOTksIDIzMiwgOCwgNCwgMSwgMTk5LCAyMzIsIDgsIDYsIAorICAgIDEsIDIzNCwgMjQ4LCAzLCAyNDcsIDEyNSwgOCwgNCwgMSwgMjM0LCAyNDgsIDMsIDI0NywgMTI1LCA4LCA2LCAxLCAyMjAsIAorICAgIDIxNSwgMywgMTY4LCA1MSwgMjI1LCAxNiwgOCwgNCwgMSwgMjQyLCAxNTQsIDMsIDI0MiwgMTk4LCA4LCA2LCAxLCAyMTcsIAorICAgIDMsIDgsIDQsIDEsIDIxNywgMywgOCwgNiwgMSwgMTk5LCAxNTgsIDMsIDExNywgOCwgNCwgMSwgMTk5LCAxNTgsIDMsIDExNywgCisgICAgOCwgNiwgMSwgMzUsIDMsIDczLCA1NiwgOCwgNCwgMSwgMzUsIDMsIDczLCA1NiwgOCwgNiwgMSwgMTk3LCAzLCAyNDcsIDY5LCAKKyAgICA4LCA0LCAxLCAxOTcsIDMsIDI0NywgNjksIDgsIDYsIDEsIDE2MywgMywgMjQxLCA3NSwgMjYsIDIyMiwgMjI4LCA4LCA0LCAKKyAgICAxLCAxNjMsIDMsIDI0MSwgNzUsIDI2LCAyMjIsIDIyOCwgOCwgNiwgMSwgMTYzLCAzLCAyMDUsIDI0MSwgMjYsIDIyMiwgCisgICAgMjI4LCA4LCA0LCAxLCAxNjMsIDMsIDIwNSwgMjQxLCAyNiwgMjIyLCAyMjgsIDgsIDYsIDEsIDE2MywgMywgNzMsIDU2LCA4LCAKKyAgICA0LCAxLCAxNjMsIDMsIDczLCA1NiwgOCwgNiwgMSwgMTYzLCAzLCA3MywgODgsIDI2LCAyMjIsIDIyOCwgOCwgNCwgMSwgCisgICAgMTYzLCAzLCA3MywgODgsIDI2LCAyMjIsIDIyOCwgOCwgNiwgMSwgMjAwLCAxMjQsIDMsIDIyMiwgMjI4LCA4LCA0LCAxLCAKKyAgICAyMDAsIDEyNCwgMywgMjIyLCAyMjgsIDgsIDQsIDEsIDIyNSwgMTkzLCAzLCAyNDIsIDE5OCwgOCwgNCwgMSwgMjIwLCAyMTUsIAorICAgIDMsIDI0MiwgMTk4LCA4LCA0LCAxLCAyMDcsIDg0LCAzLCAyNDIsIDE5OCwgOCwgNCwgMSwgMjQwLCAxODEsIDIyNywgMjUxLCAKKyAgICA4LCA0LCAxLCAyNDEsIDIzMCwgMjQxLCAzNCwgOCwgNCwgMSwgMjE0LCA5OCwgMjQxLCAzNCwgOCwgNiwgMSwgMzUsIDMsIAorICAgIDk3LCA4LCA2LCAxLCAyNDcsIDIyNCwgMywgOTcsIDgsIDQsIDEsIDI0NywgMjI0LCAzLCA5NywgOCwgNiwgMSwgMjI1LCAKKyAgICAxOTMsIDMsIDE0OCwgOCwgNiwgMSwgMjA3LCA4NCwgMywgMjQxLCA3MSwgOTcsIDgsIDQsIDEsIDIxMiwgMTIzLCAzLCAyMDcsIAorICAgIDE4MywgMjA3LCA2LCA4LCA0LCAxLCAxOTksIDE1OCwgMywgMjA3LCAxODMsIDIwNywgNiwgOCwgNiwgMSwgMjM1LCAxMjMsIAorICAgIDIwOCwgNzYsIDgsIDQsIDEsIDIzNSwgMTIzLCAyMDgsIDc2LCA4LCA2LCAxLCA2OCwgMywgOTcsIDgsIDYsIDEsIDEwOCwgCisgICAgMTQ4LCA4LCA2LCAxLCAyMDQsIDE4NSwgMjAzLCAxNjgsIDgsIDYsIDEsIDE5NywgMywgOTcsIDgsIDQsIDEsIDE5NywgMywgCisgICAgOTcsIDgsIDYsIDEsIDIyNywgMjUyLCAzLCA5NywgOCwgNCwgMSwgMjI3LCAyNTIsIDMsIDk3LCA4LCA2LCAxLCA0LCAyMTQsIAorICAgIDE2OCwgMywgMjMzLCAxODcsIDIwNywgNiwgOCwgNCwgMSwgMjE0LCAxNjgsIDMsIDIzMywgMTg3LCAyMDcsIDYsIDgsIDYsIAorICAgIDEsIDIxNCwgMzMsIDMsIDk3LCA4LCA0LCAxLCAyMTQsIDMzLCAzLCA5NywgOCwgNiwgMSwgMjAwLCAxMjQsIDMsIDk3LCA4LCAKKyAgICA0LCAxLCAyMDAsIDEyNCwgMywgOTcsIDgsIDQsIDEsIDIwNCwgMTg1LCA2MiwgOCwgNCwgMSwgMjUxLCAxMTIsIDgsIDQsIDEsIAorICAgIDIwNCwgMTg1LCAyNTEsIDExMiwgOCwgNCwgMSwgNjgsIDMsIDExNywgOCwgNCwgMSwgMTc2LCA3NCwgOCwgNCwgMSwgMjQ3LCAKKyAgICAyMjQsIDMsIDI0MiwgMTk4LCA4LCA0LCAxLCAyNDIsIDE1NCwgMywgMjA3LCA2LCA4LCA0LCAxLCAyNDIsIDE1NCwgMywgCisgICAgMTE3LCA4LCA0LCAxLCAyMTMsIDEwNSwgNzIsIDgsIDQsIDEsIDIxMSwgMjE4LCA4LCA0LCAxLCAyMTEsIDIxOSwgMywgMTE3LCAKKyAgICA4LCA0LCAxLCAxNzYsIDcyLCA4LCA0LCAxLCAyMTMsIDEwNSwgMTc2LCA3MiwgOCwgNCwgMSwgMjEzLCAxMDUsIDE3NiwgCisgICAgMTk3LCAzLCAxMTcsIDgsIDQsIDEsIDI0NiwgMTEwLCAyMTMsIDEwNSwgMTc2LCA3MiwgOCwgNCwgMSwgMjQwLCAxODEsIAorICAgIDIyNywgMjUyLCAzLCA5NywgOCwgNCwgMSwgMjM2LCAxNTcsIDMsIDExNywgOCwgNCwgMSwgMTM1LCAyMzYsIDE1NiwgOCwgMSwgCisgICAgNCwgNiwgMjM2LCAxNTYsIDgsIDQsIDEsIDIzNiwgNjAsIDgsIDQsIDEsIDIxMywgMjE0LCAyMzMsIDEyNCwgOCwgNCwgMSwgCisgICAgMjA0LCAxODUsIDIzNCwgMjQ3LCA4LCA0LCAxLCAyMzQsIDI0OCwgMywgMTE3LCA4LCA0LCAxLCAyMzQsIDEwNCwgMywgMTE3LCAKKyAgICA4LCA0LCAxLCAyMzMsIDE5LCAzLCA5NywgOCwgNCwgMSwgMjI4LCA0MSwgOCwgMSwgNCwgNiwgNzAsIDgsIDQsIDEsIDIyNSwgCisgICAgMTkzLCAzLCAxMDEsIDIwNSwgMjQwLCA4LCA0LCAxLCAyMjUsIDE5MywgMywgMjQ4LCAyMjYsIDgsIDQsIDEsIDIyNSwgMTkzLCAKKyAgICAzLCAyMTMsIDExMSwgMTE3LCA4LCA0LCAxLCAyMjQsIDIyNiwgOCwgNCwgMSwgMjA0LCAxODUsIDIyMywgMjQzLCA4LCA0LCAKKyAgICAxLCAyMDQsIDE4NSwgMjIzLCAyNDQsIDMsIDE2OCwgMjI1LCAxNiwgOCwgNCwgMSwgMjIzLCAyNDQsIDMsIDExNywgOCwgNCwgCisgICAgMSwgMjIwLCAyMTUsIDMsIDQ5LCAxMTcsIDgsIDQsIDEsIDIyMCwgMjE1LCAzLCAyMTMsIDExMSwgMTE3LCA4LCAxLCA0LCA2LCAKKyAgICAyMjAsIDIxNCwgOCwgNCwgMSwgMjQ5LCA3MSwgNzQsIDgsIDEsIDQsIDYsIDIxNywgMTIxLCA4LCA0LCAxLCAyNDYsIDExMCwgCisgICAgMjE3LCA4MywgOCwgNCwgMSwgMjE1LCAyMjksIDgsIDQsIDEsIDIwNCwgMTg1LCAxNDYsIDgsIDQsIDEsIDIwNCwgMTg1LCAKKyAgICAyMTQsIDMzLCAzLCAxNjgsIDIyNSwgMTYsIDgsIDQsIDEsIDIwNCwgMTg1LCAyMTQsIDMzLCAzLCAxMTcsIDgsIDQsIDEsIAorICAgIDIxNCwgMzMsIDMsIDE2OCwgMjI1LCAxNiwgOCwgNCwgMSwgMjE0LCAzMywgMywgMjA3LCA2LCA4LCA0LCAxLCAyMTQsIDMzLCAKKyAgICAzLCAyMzcsIDY4LCA4LCA0LCAxLCAyMTMsIDEwNSwgMjE0LCAzMywgMywgMjM3LCA2OCwgOCwgMSwgNCwgNiwgMTQ2LCA4LCAKKyAgICAxLCA0LCA2LCAyMjgsIDUwLCAxNDYsIDgsIDQsIDEsIDIxMiwgMTIzLCAzLCAxMTcsIDgsIDQsIDEsIDIzOCwgOTQsIDgsIDQsIAorICAgIDEsIDI0MCwgMTgxLCAyMjcsIDI1MiwgMywgMjA4LCA0NywgMjYsIDExNywgOCwgNCwgMSwgMjA4LCAxOTAsIDIxMywgMTA1LCAKKyAgICAyMzgsIDk0LCA4LCA0LCAxLCAyMzgsIDk1LCAzLCAyNDIsIDE5OCwgOCwgNCwgMSwgMjA0LCAxODUsIDIwNywgODMsIDgsIDQsIAorICAgIDEsIDIwNywgODQsIDMsIDIxMywgMTExLCAxMTcsIDgsIDQsIDEsIDEwOCwgMTQ4LCA4LCA0LCAxLCAyMDMsIDIyMCwgOCwgNCwgCisgICAgMSwgMjAzLCAxNjksIDMsIDExNywgOCwgNCwgMSwgMjA0LCAxODUsIDIwMywgMTY4LCA4LCA0LCAxLCAyMDQsIDE4NSwgMjAxLCAKKyAgICAxNDcsIDgsIDQsIDEsIDIwNCwgMTg1LCAyMDAsIDEyMywgOCwgMSwgNCwgNiwgMjAwLCAxMjMsIDgsIDQsIDEsIDE5OSwgCisgICAgMTU4LCAzLCAyMTMsIDExMSwgMTE3LCA4LCA0LCAxLCAxOTksIDE1OCwgMywgMjQyLCAxOTgsIDgsIDQsIDEsIDIzOCwgOCwgCisgICAgOCwgNCwgMSwgMjM4LCA5LCAzLCAyNDIsIDE5OCwgOCwgMSwgMjM1LCAxMjMsIDIwOCwgNzYsIDgsIDEsIDIxNSwgMjM2LCAKKyAgICAyMDIsIDE4OSwgMjM2LCAyMDcsIDgsIDEsIDIyOCwgNTAsIDIzNSwgMTIzLCAyMDgsIDc2LCA4LCAxLCAyMDgsIDU1LCAyNDcsIAorICAgIDIyMywgOCwgMSwgMjQ4LCAxNzIsIDI0NiwgMTIxLCA4LCAxLCA0LCA2LCAyNTAsIDEwMywgOCwgNCwgMSwgMjQ2LCAxMTAsIAorICAgIDE3NiwgNzIsIDgsIDEsIDQsIDYsIDIzNiwgMTU3LCAzLCAxMTcsIDgsIDEsIDQsIDYsIDIzNCwgMjQ3LCA4LCA0LCAxLCAKKyAgICAyMjcsIDI1MiwgMywgMjQyLCAyMzAsIDgsIDQsIDEsIDIwNCwgMTg1LCAyMjcsIDExOCwgOCwgMSwgNCwgNiwgMTU2LCA4LCAKKyAgICA0LCAxLCAyMTQsIDE2OCwgMywgMTE3LCA4LCAxLCAyMzUsIDEyMywgMjA4LCA3NywgMywgOTcsIDgsIDEsIDIxMywgMTA1LCAKKyAgICAyMzUsIDEyMywgMjA4LCA3NywgMywgOTcsIDgsIDQsIDEsIDIzOSwgOTUsIDI0MSwgMzQsIDgsIDQsIDEsIDI0MSwgMTAyLCAKKyAgICAyNDEsIDM0LCA4LCA0LCAxLCAyMzksIDk1LCAyNDEsIDM1LCAzLCAyNDIsIDE5OCwgOCwgNCwgMSwgMjA1LCAzNCwgMjQxLCAKKyAgICAzNCwgOCwgNCwgMSwgMjA2LCAxNTEsIDI0MSwgMzQsIDgsIDQsIDEsIDIwNiwgMjA4LCAyNDEsIDM1LCAzLCAyNDIsIDE5OCwgCisgICAgOCwgNCwgMSwgMjM3LCAxMjUsIDI0MSwgMzQsIDgsIDQsIDEsIDIyNCwgNDQsIDI0MSwgMzQsIDgsIDQsIDEsIDIyMywgMjQ1LCAKKyAgICAyNDEsIDM0LCA4LCAxLCAyNDgsIDE3MiwgMjE2LCAyNiwgOCwgMSwgMjQ4LCAxODAsIDIxNiwgMjYsIDgsIDQsIDEsIDIwNCwgCisgICAgMTg1LCAyMzQsIDI0OCwgMywgMjM3LCA2OCwgOCwgNCwgMSwgMjA0LCAxODUsIDIzNCwgMjQ4LCAzLCAyMzcsIDY5LCAyNiwgCisgICAgMjA3LCA2LCA2NywgMSwgNCwgMjM0LCAyNDcsIDY3LCAxLCA0LCAyMzQsIDI0OCwgMywgMTE3LCA2NywgMSwgNCwgMjI3LCAKKyAgICAyNTEsIDY3LCAxLCA0LCAxNDYsIDY3LCAxLCA0LCAyMDQsIDE4NSwgMTQ2LCA2NywgMSwgNCwgMjA0LCAxODUsIDIxNCwgMzMsIAorICAgIDMsIDExNywgNjcsIDEsIDQsIDYsIDIyOCwgNTAsIDE0NiwgNjcsIDEsIDQsIDIwMSwgMTQ3LCA2NywgMSwgNCwgMjAwLCAKKyAgICAxMjMsIDY3LCAxLCAyMTUsIDE0LCA2NywgMSwgNTMsIDIxNSwgMTQsIDY3LCAxLCAyMDQsIDE4NSwgMjQ2LCA3MCwgNjcsIDEsIAorICAgIDI1MSwgMTMsIDY3LCAxLCAyMTMsIDEwNSwgMjQ2LCA3MCwgNjcsIDEsIDUxLCAxNjcsIDIxMywgMjYsIDY3LCAxLCA0OSwgCisgICAgMTY3LCAyMTMsIDI2LCA2NywgMSwgMjM1LCAxMjMsIDIwOCwgNzYsIDY3LCAxLCAyMTMsIDEwNSwgMjM1LCAxMjMsIDIwOCwgCisgICAgNzYsIDY3LCAxLCA0OSwgMjUwLCAyMDIsIDY3LCAxLCA1MSwgMjUwLCAyMDIsIDY3LCAxLCAxMTUsIDI1MCwgMjAyLCA2NywgCisgICAgMSwgMTI3LCAyNTAsIDIwMiwgNjcsIDEsIDI0NiwgMTQ3LCAyNTEsIDI1MSwgMjQ3LCAxMjUsIDY3LCAxLCA4MywgMjI0LCAKKyAgICAxNzYsIDY3LCAxLCAyMjIsIDIyOCwgNjcsIDEsIDI1MSwgMjM5LCAyNTEsIDI1MSwgNjcsIDEsIDIzNSwgNzQsIDI1MSwgCisgICAgMjUxLCA2NywgMSwgMTI4LCA4MywgMjI0LCAxNzYsIDY3LCAxLCAxMjgsIDIyMiwgMjI4LCA2NywgMSwgMTI4LCAyMzUsIDc0LCAKKyAgICAyNTEsIDI1MSwgNjcsIDEsIDEyOCwgMjUxLCAyMzksIDI1MSwgMjUxLCA2NywgMSwgMjA1LCA5NSwgMjQ2LCA3OSwgNjcsIDEsIAorICAgIDE2NywgMjA1LCA5NSwgMjQ2LCA3OSwgNjcsIDEsIDI0NywgNTQsIDUxLCAxNjcsIDIxMywgMjYsIDY3LCAxLCAyNDcsIDU0LCAKKyAgICA0OSwgMTY3LCAyMTMsIDI2LCA2NywgMSwgMTE1LCAyMDcsIDE3LCA2NywgMSwgMTI3LCAyMDcsIDE3LCA2NywgMSwgOTMsIAorICAgIDU0LCA2NywgMSwgMjIxLCAxNTcsIDU0LCAyNDgsIDU3LCA3MywgNTYsIDIxMywgMjcsIDU2LCAyMTcsIDExMCwgNCwgMjA1LCAKKyAgICAyNDAsIDUzLCAyNTEsIDIzOSwgMjUxLCAyNTEsIDY3LCAxLCAyMTMsIDg5LCAxMTcsIDY3LCAxLCAyNDIsIDIzNSwgMjUxLCAKKyAgICAyNTEsIDY3LCAxLCA0LCAyMzYsIDYwLCA2NywgMSwgNCwgMTU2LCA2NywgMSwgNCwgMjEyLCAxMjIsIDY3LCAxLCA0LCAyMDAsIAorICAgIDE5NSwgNjcsIDEsIDQsIDIxMywgMTA1LCAyMzUsIDEyMywgMjA4LCA3NiwgNjcsIDEsIDIzOCwgMjksIDE1MCwgMTQ4LCA2NywgCisgICAgMSwgMTIyLCAxNTAsIDE0OCwgNjcsIDEsIDIyMSwgMjA2LCAxNTAsIDE0OCwgNjcsIDEsIDEyOCwgMTUwLCAxNDgsIDY3LCAxLCAKKyAgICAyMzgsIDI4LCAxNTAsIDE0OCwgNjcsIDEsIDE5OSwgMjU1LCAyNDEsIDEyNiwgMTUwLCA4MSwgNjcsIDEsIDIwMCwgNzYsIAorICAgIDI0MSwgMTI2LCAxNTAsIDgxLCA2NywgMSwgMjAyLCAxODcsIDY3LCAxLCAyMDQsIDEsIDY3LCAxLCA1MywgMjUxLCAxMywgCisgICAgNjcsIDEsIDEyOCwgMTI3LCAyNTAsIDIwMiwgNjcsIDEsIDEyOCwgMTE1LCAyNTAsIDIwMiwgNjcsIDEsIDEyOCwgNDksIAorICAgIDI1MCwgMjAyLCA2NywgMSwgMTI4LCA1MSwgMjUwLCAyMDIsIDY3LCAxLCAxMjgsIDIxMywgMjYsIDY3LCAxLCAxMDEsIDIzNSwgCisgICAgNzQsIDI1MSwgMjUxLCA2NywgMSwgMTAxLCA1MywgMjM1LCA3NCwgMjUxLCAyNTEsIDY3LCAxLCAxMDEsIDUzLCAyNTEsIAorICAgIDIzOSwgMjUxLCAyNTEsIDY3LCAxLCAxMjgsIDIwNSwgMjQwLCA2NywgMSwgMjEzLCAyMjAsIDI0NiwgNzksIDY3LCAxLCAKKyAgICAyNDgsIDI0NCwgMTIyLCAyMDUsIDE3NCwgNjcsIDEsIDIzOCwgMTcxLCAxMjIsIDIwNSwgMTc0LCA2NywgMSwgMjQ4LCAyNDQsIAorICAgIDEyOCwgMjA1LCAxNzQsIDY3LCAxLCAyMzgsIDE3MSwgMTI4LCAyMDUsIDE3NCwgNjcsIDEsIDIxMCwgNTYsIDY3LCAxLCAKKyAgICAxNzYsIDIxMCwgNTYsIDY3LCAxLCAxMjgsIDQ5LCA0OCwgMzgsIDIzNSwgNzQsIDI1MSwgMjUxLCAzOCwgMjUxLCAyMzksIAorICAgIDI1MSwgMjUxLCAzOCwgMjQ2LCAxNDcsIDI1MSwgMjUxLCAzOCwgMjA1LCAyNDAsIDM4LCAyMjIsIDIyOCwgMzgsIDIxNiwgCisgICAgMjQxLCAzOCwgMjQ4LCA1NywgMzgsIDczLCA1NiwgMzgsIDI0MSwgNzQsIDM4LCAyMzMsIDE4NywgNTYsIDM4LCAyMTMsIDI3LCAKKyAgICA1NiwgMzgsIDUzLCAyNTEsIDIzOSwgMjUxLCAyNTEsIDM4LCAyNDcsIDEyNSwgMzgsIDgzLCAyMjQsIDE3NywgNTYsIDM4LCAKKyAgICA1MywgODMsIDIyNCwgMTc3LCA1NiwgMzgsIDUzLCAyMzUsIDc0LCAyNTEsIDI1MSwgMzgsIDI0NywgMTQ5LCAzOCwgMjI4LCAKKyAgICA1MCwgMjQ4LCA1NywgMzgsIDIwNCwgMTg1LCAyNDYsIDcxLCA1NiwgMzgsIDI0NiwgNzEsIDU2LCAzOCwgMjEzLCAxMDUsIAorICAgIDI0NiwgNzEsIDU2LCAzOCwgMjQ2LCA3MSwgODgsIDIxMywgNDYsIDM4LCAyMzUsIDc0LCAyNTEsIDI1MiwgNTcsIDM4LCAKKyAgICAyNTEsIDIzOSwgMjUxLCAyNTIsIDU3LCAzOCwgNDksIDIwNywgMTgsIDU3LCAzOCwgNTEsIDIwNywgMTgsIDU3LCAzOCwgNDksIAorICAgIDI1MSwgNzEsIDU2LCAzOCwgMjMzLCAxMjQsIDM4LCA0OSwgMTY3LCAyMTMsIDI3LCA1NywgMzgsIDExNSwgMjA3LCAxOCwgCisgICAgNTcsIDM4LCAxMjcsIDIwNywgMTgsIDU3LCAzOCwgOTMsIDIsIDU3LCAzOCwgMjIxLCAxNTcsIDIsIDU3LCAzOCwgMjE2LCAKKyAgICAxODIsIDIzMywgMTg3LCA1NywgMzgsIDIxMywgMTExLCAyMzMsIDE4NywgNTcsIDM4LCA3MywgNTcsIDM4LCAyNDEsIDc1LCAKKyAgICA1NywgMzgsIDIxMywgMjcsIDU3LCAzOCwgMjQ2LCA3MSwgNTcsIDM4LCAyNDcsIDY5LCAzOCwgMjE3LCAxMTAsIDM4LCA4MywgCisgICAgMjI0LCAxNzcsIDU3LCAzOCwgMjQ4LCA1MSwgNTcsIDM4LCAyMjgsIDUwLCA1MywgMjUwLCAyMzUsIDU3LCAzOCwgMjQ3LCAKKyAgICAxMjYsIDU3LCAzOCwgMjQ2LCAxNDcsIDI1MSwgMjUyLCA1NywgMzgsIDI0OCwgNTgsIDU3LCAzOCwgMjI4LCA1MCwgMjQ4LCAKKyAgICA1OCwgNTcsIDM4LCAyMDUsIDI0MSwgNTcsIDM4LCAyMjIsIDIyOSwgNTcsIDM4LCAxMjgsIDIyNCwgMTc2LCAzOCwgNTMsIAorICAgIDEyOCwgMjI0LCAxNzYsIDM4LCAyMDUsIDI0MSwgMjE2LCAyNDIsIDM4LCAyMDksIDI1MCwgMjA4LCA0NywgMjE2LCAyNDIsIAorICAgIDM4LCAxNjgsIDIwOCwgNDcsIDIxNiwgMjQyLCAzOCwgMjA5LCAyNTAsIDIwOSwgMTcsIDIxNiwgMjQyLCAzOCwgMTY4LCAKKyAgICAyMDksIDE3LCAyMTYsIDI0MiwgMzgsIDUxLCAxNjcsIDIxMywgMjcsIDU3LCAzOCwgMjI4LCA1MCwgMjQ4LCA1MSwgNTcsIAorICAgIDM4LCA1MiwgNTcsIDM4LCAyMTEsIDIwMSwgNTcsIDM4LCAyMDAsIDE5NiwgNTYsIDM4LCA4MywgMjA1LCAyNDAsIDM4LCA1MywgCisgICAgMjE2LCAyNDEsIDM4LCAyMzUsIDc0LCAxNTAsIDgxLCAzOCwgMjUxLCAyMzksIDE1MCwgODEsIDM4LCAzMSwgMjE2LCAyMCwgCisgICAgMzgsIDMxLCAyMjYsIDU4LCAzOCwgMzEsIDI0MSwgNjgsIDIwNSwgMTYyLCAzOCwgMzEsIDE5OSwgMjE5LCAzOCwgMjQ4LCAKKyAgICA1MSwgNTYsIDM4LCAyMzgsIDEyMiwgMiwgNTcsIDM4LCA1MywgODMsIDIyNCwgMTc3LCA1NywgMzgsIDQ5LCAyNTEsIDcxLCAKKyAgICA1NywgMzgsIDIxOCwgMjE1LCAyMDUsIDI0MSwgNTYsIDM4LCAyMzMsIDE5MywgNTYsIDM4LCAyNTEsIDExNywgMTYwLCAyMDUsIAorICAgIDE4NiwgNTYsIDM4LCA0OSwgNTEsIDU1LCA1NywgMzgsIDE4MiwgNTUsIDU3LCAzOCwgMjM1LCA4MCwgMjI3LCAxNjEsIDM4LCAKKyAgICA1MSwgMjUwLCAyMDMsIDU2LCAzOCwgNDksIDE2NywgMjEzLCAyNywgNTYsIDM4LCAyMzcsIDEyMiwgMzgsIDIwMCwgMTk2LCAKKyAgICA1NywgMzgsIDQ5LCAyNTAsIDIwMywgNTcsIDM4LCA1MSwgMjUwLCAyMDMsIDU3LCAzOCwgNTEsIDI1MCwgMjAzLCAyNiwgCisgICAgMTE1LCAyNTAsIDIwMywgNTcsIDM4LCA1MSwgMTY3LCAyMTMsIDI3LCA1NiwgMzgsIDczLCA4OCwgMjEzLCA0NiwgMzgsIAorICAgIDI1MCwgMTY2LCA1NywgMzgsIDUzLCAyMTMsIDI3LCA1NywgMzgsIDE5OSwgMjcsIDU2LCAzOCwgNTMsIDI0OCwgNTgsIDU3LCAKKyAgICAzOCwgNTMsIDI0OCwgNTcsIDM4LCA1MywgMjIyLCAyMjgsIDM4LCA1MywgMjIyLCAyMjksIDU3LCAzOCwgNTMsIDIwNSwgCisgICAgMjQwLCAzOCwgNTMsIDIyOCwgNTAsIDI0OCwgNTcsIDM4LCA1MywgODcsIDU1LCA1NywgMzgsIDgsIDQsIDEsIDYyLCAzOCwgCisgICAgOCwgNCwgMSwgNzIsIDM4LCA4LCA0LCAxLCA3MCwgMzgsIDgsIDQsIDEsIDc0LCAzOCwgOCwgNCwgMSwgNjYsIDM4LCA4LCA0LCAKKyAgICAxLCAyNDcsIDIyMywgMzgsIDgsIDQsIDEsIDI0MiwgMTUzLCAzOCwgOCwgNCwgMSwgMjM0LCAyNDcsIDM4LCA4LCA0LCAxLCAKKyAgICAyMjMsIDI0MywgMzgsIDgsIDQsIDEsIDE0NiwgMzgsIDgsIDQsIDEsIDIwNywgODMsIDM4LCA4LCA0LCAxLCAyMDMsIDE2OCwgCisgICAgMzgsIDgsIDQsIDEsIDIwMCwgMTk1LCAzMSwgNiwgMSwgMjM0LCA5MiwgMzEsIDQsIDEsIDIzNCwgOTIsIDMxLCA2LCAxLCAKKyAgICAyNTAsIDIzNCwgMjEyLCAxNiwgMzEsIDQsIDEsIDI1MCwgMjM0LCAyMTIsIDE2LCAzMSwgMjE4LCA5MywgNTQsIDMxLCAyMjQsIAorICAgIDU0LCAyMTgsIDkzLCA1NCwgMzEsIDYsIDEsIDIxNiwgMTY3LCAyNDEsIDQyLCAzMSwgNCwgMSwgMjE2LCAxNjcsIDI0MSwgCisgICAgNDIsIDMxLCAxOTksIDIxOSwgMzEsIDQsIDIxMywgMTA1LCAyMjQsIDI0LCAyMDksIDE2NCwgOTksIDMxLCA0LCAyMzksIAorICAgIDE4MCwgMjI0LCAyNCwgMjA5LCAxNjQsIDk5LCAzMSwgNCwgMjEzLCAxMDUsIDIzOSwgMTgwLCAyMjQsIDI0LCAyMDksIDE2NCwgCisgICAgOTksIDMxLCAyMTQsIDc5LCA4MSwgMzEsIDYsIDEsIDE5OSwgMjI1LCAzMSwgMjA1LCAxNjIsIDMxLCAyNDEsIDY4LCAyMDUsIAorICAgIDE2MiwgMzEsIDYsIDEsIDI1MSwgMTEzLCAzLCAyMDUsIDE2MiwgMzEsIDI1MSwgNTYsIDIwNiwgMTc3LCAzMSwgNiwgMSwgCisgICAgMjM4LCAxMjUsIDMsIDIwNSwgMTYyLCAzMSwgNiwgMSwgMjM4LCA4MCwgMywgMjA1LCAxNjIsIDMxLCA2LCAxLCAyMjgsIDQyLCAKKyAgICAzLCAyMDUsIDE2MiwgMzEsIDYsIDEsIDIxNywgODIsIDMsIDIwNSwgMTYyLCAzMSwgNiwgMSwgMjAzLCAyMjEsIDMsIDIwNSwgCisgICAgMTYyLCAzMSwgNiwgMSwgMjE3LCA4NCwgMywgMjA1LCAxNjIsIDMxLCA0LCAxLCAyMjgsIDQyLCAzLCAyNDEsIDY4LCAyNiwgCisgICAgMjA1LCAxNjIsIDMxLCA2LCAxLCAyNTEsIDExMiwgMzEsIDYsIDEsIDI0OCwgMjA4LCAzMSwgNiwgMSwgMjM2LCA2MCwgMzEsIAorICAgIDYsIDEsIDI0MSwgMTM2LCAzMSwgNiwgMSwgMjM4LCAxMjQsIDMxLCA2LCAxLCAxOTksIDgwLCAzMSwgNiwgMSwgMjM4LCA3OSwgCisgICAgMzEsIDYsIDEsIDIwNiwgODgsIDMxLCA2LCAxLCAyMjgsIDQxLCAzMSwgNiwgMSwgMjI3LCA1NCwgMzEsIDYsIDEsIDIyNSwgCisgICAgODcsIDMxLCA2LCAxLCAyMjEsIDQxLCAzMSwgNiwgMSwgMjE4LCAxMzMsIDMxLCA2LCAxLCAyMDAsIDE2OSwgMzEsIDYsIDEsIAorICAgIDIxNywgODEsIDMxLCA2LCAxLCAyMTUsIDIwNCwgMzEsIDYsIDEsIDIxMywgOTAsIDMxLCA2LCAxLCAyMDksIDE2MywgMzEsIAorICAgIDYsIDEsIDIwNiwgMjIxLCAzMSwgNiwgMSwgMjAzLCAyMjAsIDMxLCA2LCAxLCAyMTUsIDIyOSwgMzEsIDYsIDEsIDI0NiwgCisgICAgMjM2LCAzMSwgNiwgMSwgMjE0LCAyMzUsIDMxLCA2LCAxLCAyMTcsIDgzLCAzMSwgNiwgMSwgMjI4LCA0MiwgMywgMjQxLCAKKyAgICA2NywgMzEsIDYsIDEsIDIwMywgMjIxLCAzLCAyNDEsIDY3LCAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDIwNSwgMTYyLCAzMSwgCisgICAgNCwgMSwgMjM4LCAxMjUsIDMsIDIwNSwgMTYyLCAzMSwgNCwgMSwgMjM4LCA4MCwgMywgMjA1LCAxNjIsIDMxLCA0LCAxLCAKKyAgICAyMjgsIDQyLCAzLCAyMDUsIDE2MiwgMzEsIDQsIDEsIDIwMywgMjIxLCAzLCAyNDEsIDY4LCAyNiwgMjA1LCAxNjIsIDMxLCAKKyAgICA0LCAxLCAyNTEsIDExMiwgMzEsIDQsIDEsIDI0OCwgMjA4LCAzMSwgNCwgMSwgMjM2LCA2MCwgMzEsIDQsIDEsIDI0MSwgCisgICAgMTM2LCAzMSwgNCwgMSwgMjM4LCAxMjQsIDMxLCA0LCAxLCAxOTksIDgwLCAzMSwgNCwgMSwgMjM4LCA3OSwgMzEsIDQsIDEsIAorICAgIDIwNiwgODgsIDMxLCA0LCAxLCAyMjgsIDQxLCAzMSwgNCwgMSwgMjI3LCA1NCwgMzEsIDQsIDEsIDIyNSwgODcsIDMxLCA0LCAKKyAgICAxLCAyMjEsIDQxLCAzMSwgNCwgMSwgMjE4LCAxMzMsIDMxLCA0LCAxLCAyMDAsIDE2OSwgMzEsIDQsIDEsIDIxNywgODEsIAorICAgIDMxLCA0LCAxLCAyMTUsIDIwNCwgMzEsIDQsIDEsIDIxMywgOTAsIDMxLCA0LCAxLCA0NywgMjA5LCAxNjMsIDMxLCA0LCAxLCAKKyAgICAyMDksIDE2MywgMzEsIDQsIDEsIDIwNiwgMjIxLCAzMSwgNCwgMSwgMjAzLCAyMjAsIDMxLCA0LCAxLCAyMTUsIDIyOSwgMzEsIAorICAgIDQsIDEsIDI0NiwgMjM2LCAzMSwgNCwgMSwgMjE0LCAyMzUsIDMxLCA0LCAxLCAyMTcsIDgzLCAzMSwgNCwgMSwgMjI4LCA0MiwgCisgICAgMywgMjQxLCA2NywgMzEsIDQsIDEsIDIwMywgMjIxLCAzLCAyNDEsIDY3LCAzMSwgNCwgMSwgMjE3LCA4MiwgMywgMjA1LCAKKyAgICAxNjIsIDMxLCA0LCAxLCAyMDMsIDIyMSwgMywgMjA1LCAxNjIsIDMxLCA0LCAxLCAyMTcsIDg0LCAzLCAyMDUsIDE2MiwgMzEsIAorICAgIDYsIDIyNywgODMsIDk5LCAzMSwgMjQ4LCAyMDksIDk5LCAzMSwgMjA2LCA4OSwgOTksIDMxLCAyMDMsIDIyMSwgMywgMjMzLCAKKyAgICAxODcsIDk5LCAzMSwgMjAzLCAyMjEsIDMsIDI1MSwgMjM5LCAyNiwgMjMzLCAxODcsIDk5LCAzMSwgMjAzLCAyMjEsIDMsIAorICAgIDI0MSwgNzUsIDI2LCAyMzMsIDE4NywgOTksIDMxLCAyMTUsIDIzMCwgOTksIDMxLCAyMTUsIDIwNSwgOTksIDMxLCAyMjcsIAorICAgIDgzLCA5OSwgMzEsIDEsIDI1MCwgMjM0LCAyMjYsIDYyLCAzMSwgNCwgMSwgMjUwLCAyMzQsIDIyNiwgNjIsIDMxLCAxLCAKKyAgICAyMDgsIDg2LCAzMSwgNCwgMSwgMjA4LCA4NiwgMzEsIDEsIDI0MSwgNDIsIDMxLCA0LCAxLCAyNDEsIDQyLCAzMSwgMSwgCisgICAgMjI2LCA2MiwgMzEsIDQsIDEsIDIyNiwgNjIsIDMxLCAxLCAyMTIsIDE2LCAzMSwgNCwgMSwgMjEyLCAxNiwgODUsIDYsIDEsIAorICAgIDIxMCwgNTcsIDg1LCA0LCAxLCAyMTAsIDU3LCA4NSwgNiwgMSwgMjM3LCAxMzIsIDg1LCA0LCAxLCAyMzcsIDEzMiwgODUsIAorICAgIDYsIDEsIDIyNiwgMTkwLCA4NSwgNCwgMSwgMjI2LCAxOTAsIDg1LCA2LCAxLCAyMzMsIDE3OCwgODUsIDQsIDEsIDIzMywgCisgICAgMTc4LCA4NSwgNiwgMSwgMjM2LCA1NSwgODUsIDQsIDEsIDIzNiwgNTUsIDg1LCA2LCAxLCAyMTAsIDIzLCA4NSwgNCwgMSwgCisgICAgMjEwLCAyMywgODUsIDYsIDEsIDI0MSwgMTUyLCA4NSwgNCwgMSwgMjQxLCAxNTIsIDMxLCAyMjcsIDU1LCA5OSwgMzEsIAorICAgIDIxMywgOTEsIDk5LCAzMSwgMjI0LCAyNCwgMjA5LCAxNjQsIDk5LCAzMSwgMSwgMTk5LCAyMjUsIDMxLCA2LCAyMDYsIDg5LCAKKyAgICA5OSwgMzEsIDIyNCwgMjQsIDIzOCwgMTI1LCA5OSwgMzEsIDIxMywgMTA1LCAyMjQsIDI0LCAyMzgsIDEyNSwgOTksIDMxLCAKKyAgICA2LCAxLCAyMTAsIDgsIDMxLCA0LCAxLCAyMTAsIDgsIDMxLCA2LCAyMjQsIDI0LCAyMDksIDE2NCwgOTksIDMxLCA2LCAxLCAKKyAgICAyMTIsIDEzLCAzMSwgNCwgMSwgMjEyLCAxMywgMzEsIDIxMywgOTEsIDMsIDIwOCwgNDcsIDk5LCAzMSwgNiwgMjEzLCAxMDUsIAorICAgIDIyNCwgMjQsIDIwOSwgMTY0LCA5OSwgMzEsIDYsIDIzOSwgMTgwLCAyMjQsIDI0LCAyMDksIDE2NCwgOTksIDMxLCA2LCAKKyAgICAyMTMsIDEwNSwgMjM5LCAxODAsIDIyNCwgMjQsIDIwOSwgMTY0LCA5OSwgMzcsIDYsIDEsIDIyOCwgMTc5LCAzLCAyMzUsIAorICAgIDczLCAzNywgNiwgMSwgMjI4LCA0NSwgMzcsIDYsIDEsIDI0MCwgMjI4LCAzNywgNiwgMSwgMjM1LCAxMzIsIDM3LCA2LCAxLCAKKyAgICAyMDQsIDE3LCAyMjgsIDE3OCwgMzcsIDYsIDEsIDIzOSwgOTAsIDM3LCA2LCAxLCAyNDcsIDIzMywgNzAsIDM3LCA2LCAxLCAKKyAgICAyMDAsIDksIDM3LCA2LCAxLCAyMjcsIDIyNywgMzcsIDYsIDEsIDIyNCwgMTQxLCAzNywgNiwgMSwgMjE5LCA5MSwgMzcsIDYsIAorICAgIDEsIDIwNSwgMjAsIDM3LCA2LCAxLCAyMjYsIDExMSwgMzcsIDYsIDEsIDIzMywgMTksIDMsIDIzNSwgNzMsIDM3LCA2LCAxLCAKKyAgICAyMDksIDI1MCwgNjYsIDM3LCA2LCAxLCAyMzksIDg2LCAzNywgNiwgMSwgNjIsIDM3LCA2LCAxLCAyNDksIDgsIDM3LCA2LCAKKyAgICAxLCAyMDMsIDU5LCAzNywgNiwgMSwgMjM1LCAxODUsIDM3LCA2LCAxLCAyNDEsIDE3NSwgMzcsIDYsIDEsIDIyOCwgMTc4LCAKKyAgICAzNywgNiwgMSwgMTk5LCA2OCwgMzcsIDYsIDEsIDE5OSwgODksIDM3LCA2LCAxLCA3MCwgMzcsIDYsIDEsIDIwOSwgMjUwLCAKKyAgICA3MCwgMzcsIDYsIDEsIDE2MSwgMzcsIDYsIDEsIDIzOCwgMjA5LCAzNywgNiwgMSwgMjM4LCAxOTAsIDM3LCA2LCAxLCAyMzgsIAorICAgIDE3OSwgMzcsIDYsIDEsIDc0LCAzNywgNiwgMSwgMjE2LCA3MywgMzcsIDYsIDEsIDIzOCwgMTE1LCAzNywgNiwgMSwgMjM4LCAKKyAgICAxMDQsIDM3LCA2LCAxLCAyMDYsIDIwMSwgMzcsIDYsIDEsIDY2LCAzNywgNiwgMSwgMjM4LCAyNDgsIDM3LCA2LCAxLCAxNDQsIAorICAgIDM3LCA2LCAxLCAyMDUsIDI2LCAzNywgNiwgMSwgMjQ3LCA4LCAzNywgNiwgMSwgMjEwLCAxMTQsIDM3LCA2LCAxLCAyMTAsIAorICAgIDY4LCAzNywgNiwgMSwgMjM0LCAxNjUsIDU0LCAzNywgNiwgMSwgMjAwLCAyOSwgMzcsIDYsIDEsIDIwOSwgMjMsIDU0LCAzNywgCisgICAgNiwgMSwgNzIsIDM3LCA2LCAxLCAxOTksIDIxMSwgMzcsIDYsIDEsIDE4MywgMzcsIDQsIDEsIDYyLCAzNywgNCwgMSwgMjQ5LCAKKyAgICA4LCAzNywgNCwgMSwgMjAzLCA1OSwgMzcsIDQsIDEsIDIzNSwgMTg1LCAzNywgNCwgMSwgMjQxLCAxNzUsIDM3LCA0LCAxLCAKKyAgICAyMjgsIDE3OCwgMzcsIDQsIDEsIDE5OSwgNjgsIDM3LCA0LCAxLCAxOTksIDg5LCAzNywgNCwgMSwgNzAsIDM3LCA0LCAxLCAKKyAgICAyMDksIDI1MCwgNzAsIDM3LCA0LCAxLCAxNjEsIDM3LCA0LCAxLCAyMzgsIDIwOSwgMzcsIDQsIDEsIDIzOCwgMTkwLCAzNywgCisgICAgNCwgMSwgMjM4LCAxNzksIDM3LCA0LCAxLCA3NCwgMzcsIDQsIDEsIDIxNiwgNzMsIDM3LCA0LCAxLCAyMzgsIDExNSwgMzcsIAorICAgIDQsIDEsIDIzOCwgMTA0LCAzNywgNCwgMSwgMjA2LCAyMDEsIDM3LCA0LCAxLCA2NiwgMzcsIDQsIDEsIDIzOCwgMjQ4LCAzNywgCisgICAgNCwgMSwgMTQ0LCAzNywgNCwgMSwgMjA1LCAyNiwgMzcsIDQsIDEsIDI0NywgOCwgMzcsIDQsIDEsIDIxMCwgMTE0LCAzNywgCisgICAgNCwgMSwgMjEwLCA2OCwgMzcsIDQsIDEsIDIzNCwgMTY1LCA1NCwgMzcsIDQsIDEsIDIwMCwgMjksIDM3LCA0LCAxLCAyMDksIAorICAgIDIzLCA1NCwgMzcsIDQsIDEsIDcyLCAzNywgNCwgMSwgMTk5LCAyMTEsIDM3LCA0LCAxLCAxODMsIDM3LCA0LCAxLCAyMjgsIAorICAgIDE3OSwgMywgMjM1LCA3MywgMzcsIDQsIDEsIDIyOCwgNDUsIDM3LCA0LCAxLCAyNDAsIDIyOCwgMzcsIDQsIDEsIDIzNSwgCisgICAgMTMyLCAzNywgNCwgMSwgMjA0LCAxNywgMjI4LCAxNzgsIDM3LCA0LCAxLCAyMzksIDkwLCAzNywgNCwgMSwgMjQ3LCAyMzMsIAorICAgIDcwLCAzNywgNCwgMSwgMjAwLCA5LCAzNywgNCwgMSwgMjI3LCAyMjcsIDM3LCA0LCAxLCAyMjQsIDE0MSwgMzcsIDQsIDEsIAorICAgIDIxOSwgOTEsIDM3LCA0LCAxLCAyMDUsIDIwLCAzNywgNCwgMSwgMjI2LCAxMTEsIDM3LCA0LCAxLCAyMzMsIDE5LCAzLCAKKyAgICAyMzUsIDczLCAzNywgNCwgMSwgMjA5LCAyNTAsIDY2LCAzNywgNCwgMSwgMjM5LCA4NiwgMzcsIDYsIDEsIDIxNywgODMsIAorICAgIDM3LCA0LCAxLCAyMTcsIDgzLCAzNywgNiwgMSwgMjAwLCA2NSwgMzcsIDQsIDEsIDIwMCwgNjUsIDM3LCA2LCAxLCAyMjgsIAorICAgIDM5LCA3MiwgMzcsIDQsIDEsIDIyOCwgMzksIDcyLCAzNywgNiwgMSwgMjI0LCAxNDgsIDE5OSwgMTgxLCAzNywgNCwgMSwgCisgICAgMjI0LCAxNDgsIDE5OSwgMTgxLCAzNywgNiwgMSwgMjI4LCAzOSwgMjI0LCAxNDgsIDE5OSwgMTgxLCAzNywgNCwgMSwgMjI4LCAKKyAgICAzOSwgMjI0LCAxNDgsIDE5OSwgMTgxLCAzNywgNiwgMSwgMjQ4LCAxNzUsIDE5OSwgMTgxLCAzNywgNCwgMSwgMjQ4LCAxNzUsIAorICAgIDE5OSwgMTgxLCAzNywgNiwgMSwgMjI4LCAzOSwgMjQ4LCAxNzUsIDE5OSwgMTgxLCAzNywgNCwgMSwgMjI4LCAzOSwgMjQ4LCAKKyAgICAxNzUsIDE5OSwgMTgxLCAzNywgNiwgMSwgMjI2LCAzMSwgMzcsIDQsIDEsIDIyNiwgMzEsIDM3LCA2LCAxLCAyMTQsIDIzNSwgCisgICAgMzcsIDQsIDEsIDIxNCwgMjM1LCAzNywgNiwgMSwgMjM3LCA2MywgMzcsIDQsIDEsIDIzNywgNjMsIDM3LCA2LCAxLCAyMjcsIAorICAgIDI1MywgMzcsIDQsIDEsIDIyNywgMjUzLCAzNywgNiwgMSwgMjI3LCAyNTQsIDMsIDUzLCAyMzUsIDc0LCAyNTEsIDI1MSwgCisgICAgMzcsIDQsIDEsIDIyNywgMjU0LCAzLCA1MywgMjM1LCA3NCwgMjUxLCAyNTEsIDM3LCA2LCAxLCAyMDQsIDIwLCAzNywgNCwgCisgICAgMSwgMjA0LCAyMCwgMzcsIDYsIDEsIDIxMiwgMjIxLCAyMTcsIDgzLCAzNywgNCwgMSwgMjEyLCAyMjEsIDIxNywgODMsIDM3LCAKKyAgICA2LCAxLCAyMTcsIDg0LCAzLCAyMDUsIDIxMCwgMzcsIDQsIDEsIDIxNywgODQsIDMsIDIwNSwgMjEwLCAzNywgNiwgMSwgCisgICAgMjE3LCAxMSwgMzcsIDQsIDEsIDIxNywgMTEsIDM3LCA2LCAxLCAyMjYsIDYyLCAzNywgNCwgMSwgMjI2LCA2MiwgMzcsIAorICAgIDIwNiwgNDksIDU0LCAzOCwgMzcsIDIwNSwgMjEwLCAzOCwgMzcsIDIxNiwgMTgzLCAzOCwgMzcsIDI0MSwgMjQyLCAyMTUsIAorICAgIDEwOCwgMzgsIDM3LCAyMTQsIDIyOSwgMjE1LCAxMDgsIDM4LCAzNywgMjE1LCA5MiwgMzgsIDM3LCAyMzMsIDgzLCAyMDYsIAorICAgIDQ5LCA1NCwgMzgsIDM3LCAyMjEsIDE2OCwgNTQsIDM3LCA2LCAxLCAyMDksIDI1MCwgMjMzLCAxOSwgMywgMjA3LCA2LCAzNywgCisgICAgNCwgMSwgMjA5LCAyNTAsIDIzMywgMTksIDMsIDIwNywgNiwgMzcsIDYsIDEsIDIxMCwgMTYzLCA1NCwgMzcsIDQsIDEsIAorICAgIDIxMCwgMTYzLCA1NCwgMzcsIDYsIDEsIDIzOCwgMTE2LCAzLCAyMDYsIDExLCAzNywgNCwgMSwgMjM4LCAxMTYsIDMsIDIwNiwgCisgICAgMTEsIDM3LCA2LCAxLCAyMzUsIDE4NiwgMywgMjAzLCAyMTksIDM3LCA0LCAxLCAyMzUsIDE4NiwgMywgMjAzLCAyMTksIDM3LCAKKyAgICA2LCAxLCAyMzUsIDE4NiwgMywgOTcsIDM3LCA0LCAxLCAyMzUsIDE4NiwgMywgOTcsIDM3LCA2LCAxLCAyMzUsIDE4NiwgMywgCisgICAgMTAxLCAxMTcsIDM3LCA0LCAxLCAyMzUsIDE4NiwgMywgMTAxLCAxMTcsIDM3LCA2LCAxLCAxOTksIDY5LCAzLCAyNDEsIAorICAgIDExOSwgMzcsIDQsIDEsIDE5OSwgNjksIDMsIDI0MSwgMTE5LCAzNywgNiwgMSwgMTk5LCA5MCwgMywgMjQxLCAxMTksIDM3LCAKKyAgICA0LCAxLCAxOTksIDkwLCAzLCAyNDEsIDExOSwgMzcsIDYsIDEsIDIyNywgMTA4LCAzLCAyNDEsIDExOSwgMzcsIDQsIDEsIAorICAgIDIyNywgMTA4LCAzLCAyNDEsIDExOSwgMzcsIDYsIDEsIDIyNywgMTA4LCAzLCA4MywgOTcsIDM3LCA0LCAxLCAyMjcsIDEwOCwgCisgICAgMywgODMsIDk3LCAzNywgNiwgMSwgMjI3LCAxMDgsIDMsIDk3LCAzNywgNCwgMSwgMjI3LCAxMDgsIDMsIDk3LCAzNywgNiwgCisgICAgMSwgMjQ5LCA2MCwgMTYxLCAzNywgNCwgMSwgMjQ5LCA2MCwgMTYxLCAzNywgNiwgMSwgMjM4LCAxODAsIDMsIDI0MSwgMTE5LCAKKyAgICAzNywgNCwgMSwgMjM4LCAxODAsIDMsIDI0MSwgMTE5LCAzNywgNiwgMzMsIDIzOCwgMTgwLCAyMzUsIDE4NSwgMzcsIDQsIAorICAgIDMzLCAyMzgsIDE4MCwgMjM1LCAxODUsIDM3LCA2LCAxLCAyMTYsIDc0LCAzLCAxMDEsIDExNywgMzcsIDQsIDEsIDIxNiwgCisgICAgNzQsIDMsIDEwMSwgMTE3LCAzNywgNiwgMSwgMjUyLCAyLCAxNDQsIDM3LCA0LCAxLCAyNTIsIDIsIDE0NCwgMzcsIDYsIDEsIAorICAgIDIzOCwgMTA1LCAzLCAyNDEsIDExOSwgMzcsIDQsIDEsIDIzOCwgMTA1LCAzLCAyNDEsIDExOSwgMzcsIDYsIDEsIDIwNiwgCisgICAgMjAyLCAzLCAyNDEsIDExOSwgMzcsIDQsIDEsIDIwNiwgMjAyLCAzLCAyNDEsIDExOSwgMzcsIDYsIDEsIDIwOCwgNjgsIDY2LCAKKyAgICAzNywgNCwgMSwgMjA4LCA2OCwgNjYsIDM3LCA2LCAxLCAyMDgsIDY4LCAxMDgsIDMsIDk3LCAzNywgNCwgMSwgMjA4LCA2OCwgCisgICAgMTA4LCAzLCA5NywgMzcsIDYsIDEsIDIzNCwgMjM2LCAzLCAyNDEsIDExOSwgMzcsIDQsIDEsIDIzNCwgMjM2LCAzLCAyNDEsIAorICAgIDExOSwgMzcsIDYsIDMzLCAyMDYsIDIwMiwgMjA1LCAyNiwgMzcsIDQsIDMzLCAyMDYsIDIwMiwgMjA1LCAyNiwgMzcsIDYsIAorICAgIDEsIDI0NywgOSwgMywgMjQxLCAxMTksIDM3LCA0LCAxLCAyNDcsIDksIDMsIDI0MSwgMTE5LCAzNywgNiwgMSwgMjQ3LCA5LCAKKyAgICAzLCA4MywgOTcsIDM3LCA0LCAxLCAyNDcsIDksIDMsIDgzLCA5NywgMzcsIDYsIDEsIDIxMCwgMzQsIDM3LCA0LCAxLCAyMTAsIAorICAgIDM0LCAzNywgNiwgMSwgMjUyLCAyLCAyNDcsIDgsIDM3LCA0LCAxLCAyNTIsIDIsIDI0NywgOCwgMzcsIDYsIDEsIDI1MiwgMiwgCisgICAgMjQ3LCA5LCAzLCAyNDEsIDExOSwgMzcsIDQsIDEsIDI1MiwgMiwgMjQ3LCA5LCAzLCAyNDEsIDExOSwgMzcsIDEsIDIxNiwgCisgICAgMTc0LCAzNywgNiwgMSwgMTk5LCA2OSwgMywgMjQ4LCA1NywgMzcsIDQsIDEsIDE5OSwgNjksIDMsIDI0OCwgNTcsIDM3LCA2LCAKKyAgICAxLCAyMjcsIDEwOCwgMywgMTE3LCAzNywgNCwgMSwgMjI3LCAxMDgsIDMsIDExNywgMzcsIDYsIDEsIDIzOCwgMjEwLCAzLCAKKyAgICAyMDcsIDYsIDM3LCA0LCAxLCAyMzgsIDIxMCwgMywgMjA3LCA2LCAzNywgNiwgMSwgMjM4LCAxODAsIDMsIDExNywgMzcsIDQsIAorICAgIDEsIDIzOCwgMTgwLCAzLCAxMTcsIDM3LCA2LCAxLCAyMzgsIDE4MCwgMywgMjA3LCA2LCAzNywgNCwgMSwgMjM4LCAxODAsIAorICAgIDMsIDIwNywgNiwgMzcsIDYsIDEsIDIyNiwgMjAxLCAyNDcsIDgsIDM3LCA0LCAxLCAyMjYsIDIwMSwgMjQ3LCA4LCAzNywgNiwgCisgICAgMSwgMjM4LCAxOTEsIDMsIDIwNywgNiwgMzcsIDQsIDEsIDIzOCwgMTkxLCAzLCAyMDcsIDYsIDM3LCA0LCAxLCAyMTYsIAorICAgIDE3NCwgMzcsIDYsIDEsIDM1LCAzLCAyNDgsIDU3LCAzNywgNCwgMSwgMzUsIDMsIDI0OCwgNTcsIDM3LCA2LCAxLCAzNSwgMywgCisgICAgMjQxLCA3NCwgMzcsIDQsIDEsIDM1LCAzLCAyNDEsIDc0LCAzNywgNiwgMzMsIDM1LCAyMjgsIDE3OCwgMzcsIDQsIDMzLCAKKyAgICAzNSwgMjI4LCAxNzgsIDM3LCA2LCAxLCAyMjgsIDE3OSwgMywgMjQ4LCA1NywgMzcsIDQsIDEsIDIyOCwgMTc5LCAzLCAyNDgsIAorICAgIDU3LCAzNywgNiwgMSwgMjExLCAyMTgsIDM3LCA0LCAxLCAyMTEsIDIxOCwgMzcsIDYsIDEsIDIxMSwgMjE5LCAzLCAyNDEsIAorICAgIDc0LCAzNywgNCwgMSwgMjExLCAyMTksIDMsIDI0MSwgNzQsIDM3LCA2LCAxLCAxOTksIDY5LCAzLCAyNDEsIDc0LCAzNywgNCwgCisgICAgMSwgMTk5LCA2OSwgMywgMjQxLCA3NCwgMzcsIDYsIDEsIDE5OSwgOTAsIDMsIDI0MSwgNzQsIDM3LCA0LCAxLCAxOTksIDkwLCAKKyAgICAzLCAyNDEsIDc0LCAzNywgNiwgMSwgMjUyLCAyLCAyMzksIDkwLCAzNywgNCwgMSwgMjUyLCAyLCAyMzksIDkwLCAzNywgNiwgCisgICAgMSwgMjMzLCAxOSwgMywgMjIyLCAyMjgsIDM3LCA0LCAxLCAyMzMsIDE5LCAzLCAyMjIsIDIyOCwgMzcsIDYsIDEsIDIzMywgCisgICAgMTksIDMsIDI0MSwgNzQsIDM3LCA0LCAxLCAyMzMsIDE5LCAzLCAyNDEsIDc0LCAzNywgNiwgMSwgMTYzLCAzLCAyNDEsIDc0LCAKKyAgICAzNywgNCwgMSwgMTYzLCAzLCAyNDEsIDc0LCAzNywgNiwgMSwgMjQ5LCA3MSwgNzQsIDM3LCA0LCAxLCAyNDksIDcxLCA3NCwgCisgICAgMzcsIDYsIDEsIDI0OSwgNzEsIDE2MywgMywgMjQxLCA3NCwgMzcsIDQsIDEsIDI0OSwgNzEsIDE2MywgMywgMjQxLCA3NCwgCisgICAgMzcsIDYsIDEsIDE5NywgMywgMjQxLCA3NCwgMzcsIDQsIDEsIDE5NywgMywgMjQxLCA3NCwgMzcsIDYsIDEsIDEwOCwgMywgCisgICAgMjIyLCAyMjgsIDM3LCA0LCAxLCAxMDgsIDMsIDIyMiwgMjI4LCAzNywgNiwgMSwgMTA4LCAzLCAyNDEsIDc0LCAzNywgNCwgCisgICAgMSwgMTA4LCAzLCAyNDEsIDc0LCAzNywgNiwgMSwgMTA4LCAzLCA1MywgMTY5LCAzNywgNCwgMSwgMTA4LCAzLCA1MywgMTY5LCAKKyAgICAzNywgNiwgMSwgMjQ3LCA5LCAzLCAyNDEsIDc0LCAzNywgNCwgMSwgMjQ3LCA5LCAzLCAyNDEsIDc0LCAzNywgNiwgMSwgCisgICAgMjM1LCAxODYsIDMsIDI0MSwgMTE5LCAzNywgNCwgMSwgMjM1LCAxODYsIDMsIDI0MSwgMTE5LCAzNywgNiwgMSwgMjAwLCAKKyAgICAzMCwgMywgMjQxLCA3NCwgMzcsIDQsIDEsIDIwMCwgMzAsIDMsIDI0MSwgNzQsIDM3LCA2LCAxLCAyMzUsIDE4NiwgMywgCisgICAgMjA4LCA0NywgMjYsIDExNywgMzcsIDQsIDEsIDIzNSwgMTg2LCAzLCAyMDgsIDQ3LCAyNiwgMTE3LCAzNywgNiwgMSwgMjM0LCAKKyAgICAyMzYsIDMsIDExNywgMzcsIDQsIDEsIDIzNCwgMjM2LCAzLCAxMTcsIDM3LCA2LCAxLCAyMzQsIDIzNiwgMywgOTcsIDM3LCAKKyAgICA0LCAxLCAyMzQsIDIzNiwgMywgOTcsIDM3LCA2LCAxLCAyMjYsIDcyLCAyNDEsIDE3NSwgMzcsIDQsIDEsIDIyNiwgNzIsIAorICAgIDI0MSwgMTc1LCAzNywgNiwgMSwgMjI2LCA3MiwgMjQwLCAyMjgsIDM3LCA0LCAxLCAyMjYsIDcyLCAyNDAsIDIyOCwgMzcsIAorICAgIDYsIDEsIDIyNiwgNzIsIDE5OSwgMTgsIDM3LCA0LCAxLCAyMjYsIDcyLCAxOTksIDE4LCAzNywgNiwgMSwgMjI2LCA3MiwgCisgICAgMjM5LCA4MiwgMzcsIDQsIDEsIDIyNiwgNzIsIDIzOSwgODIsIDM3LCA2LCAxLCAyMjYsIDcyLCAyMjQsIDE0MSwgMzcsIDQsIAorICAgIDEsIDIyNiwgNzIsIDIyNCwgMTQxLCAzNywgNiwgMSwgMjI2LCA3MiwgMjE5LCA5MSwgMzcsIDQsIDEsIDIyNiwgNzIsIDIxOSwgCisgICAgOTEsIDM3LCA2LCAxLCAyMjYsIDcyLCAyMDksIDg5LCAzNywgNCwgMSwgMjI2LCA3MiwgMjA5LCA4OSwgMzcsIDYsIDEsIAorICAgIDIyNiwgNzIsIDIwNSwgMjA0LCAzNywgNCwgMSwgMjI2LCA3MiwgMjA1LCAyMDQsIDM3LCA2LCAxLCAyMTMsIDEwNSwgMTk5LCAKKyAgICA4OSwgMzcsIDQsIDEsIDIxMywgMTA1LCAxOTksIDg5LCAzNywgNiwgMSwgMjM4LCAyMTAsIDMsIDExNywgMzcsIDQsIDEsIAorICAgIDIzOCwgMjEwLCAzLCAxMTcsIDM3LCA2LCAxLCAyMjQsIDIyMywgMzcsIDQsIDEsIDIyNCwgMjIzLCAzNywgNiwgMSwgMjEzLCAKKyAgICA5MywgMzcsIDQsIDEsIDIxMywgOTMsIDM3LCA2LCAxLCAyMDAsIDk4LCAzNywgNCwgMSwgMjAwLCA5OCwgMzcsIDYsIDEsIAorICAgIDIxNCwgMTU5LCAzNywgNCwgMSwgMjE0LCAxNTksIDM3LCA2LCAxLCAyMDEsIDY0LCAzNywgNCwgMSwgMjAxLCA2NCwgMzcsIAorICAgIDYsIDEsIDI1MSwgMTM4LCAxNjEsIDM3LCA0LCAxLCAyNTEsIDEzOCwgMTYxLCAzNywgNiwgMSwgMjM4LCAyMTAsIDMsIDEwMSwgCisgICAgMTE3LCAzNywgNCwgMSwgMjM4LCAyMTAsIDMsIDEwMSwgMTE3LCAzNywgNiwgMSwgMjM4LCAxODAsIDMsIDEwMSwgMTE3LCAKKyAgICAzNywgNCwgMSwgMjM4LCAxODAsIDMsIDEwMSwgMTE3LCAzNywgNiwgMSwgMjE2LCA3NCwgMywgMjQxLCAxMTksIDM3LCA0LCAKKyAgICAxLCAyMTYsIDc0LCAzLCAyNDEsIDExOSwgMzcsIDYsIDEsIDIxMCwgMzUsIDMsIDI0MSwgMTE5LCAzNywgNCwgMSwgMjEwLCAKKyAgICAzNSwgMywgMjQxLCAxMTksIDM3LCA2LCAxLCAyMzgsIDE4MCwgMywgNDksIDExNywgMzcsIDQsIDEsIDIzOCwgMTgwLCAzLCAKKyAgICA0OSwgMTE3LCAzNywgNiwgMSwgMjM5LCA3NSwgMzcsIDQsIDEsIDIzOSwgNzUsIDM3LCA2LCAxLCAyNDEsIDIyNCwgMzcsIDQsIAorICAgIDEsIDI0MSwgMjI0LCAzNywgNiwgMSwgMjM4LCAyMTAsIDMsIDI0MSwgMTE5LCAzNywgNCwgMSwgMjM4LCAyMTAsIDMsIDI0MSwgCisgICAgMTE5LCAxODQsIDYsIDEsIDI1MCwgMTA5LCAxODQsIDYsIDEsIDI0OCwgMjI0LCAxODQsIDYsIDEsIDIzNSwgMTQ5LCAxODQsIAorICAgIDYsIDEsIDI0MiwgNTgsIDE4NCwgNiwgMSwgMjM5LCA1LCAxODQsIDYsIDEsIDE5OSwgMTE0LCAxODQsIDYsIDEsIDIzOCwgCisgICAgMjQxLCAxODQsIDYsIDEsIDIzOCwgODEsIDE4NCwgNiwgMSwgMTM4LCAxODQsIDYsIDEsIDE5OSwgNjgsIDE4NCwgNiwgMSwgCisgICAgMjI4LCA4NiwgMTg0LCA2LCAxLCAyMjQsIDE0NSwgMTg0LCA2LCAxLCAyMDAsIDE3MywgMTg0LCA2LCAxLCAyNDcsIDE5MCwgCisgICAgMTg0LCA2LCAxLCAyMjYsIDI0MywgMTg0LCA2LCAxLCAyMzMsIDIwNywgMTg0LCA2LCAxLCAyMjcsIDI0OCwgMTg0LCA2LCAxLCAKKyAgICAyMzUsIDE5NiwgMTg0LCA2LCAxLCAyNDYsIDI1NCwgMTg0LCA2LCAxLCAyMjIsIDQwLCAxODQsIDYsIDEsIDIwMCwgOSwgCisgICAgMTg0LCA2LCAxLCAyMTgsIDIwMSwgMTg0LCA2LCAxLCAyMTAsIDExNCwgMTg0LCA2LCAxLCAyMDIsIDE5MywgMTg0LCA2LCAxLCAKKyAgICAyNDcsIDM3LCAxODQsIDYsIDEsIDIxNiwgNTQsIDE4NCwgNiwgMSwgMjI3LCAyMTAsIDE4NCwgNiwgMSwgMjEzLCAyNTIsIAorICAgIDE4NCwgNiwgMSwgMjExLCAxODAsIDE4NCwgNiwgMSwgMjAyLCAyMzgsIDE4NCwgNiwgMSwgMjA1LCAyMDcsIDE4NCwgNiwgMSwgCisgICAgMjEzLCAxNTQsIDE4NCwgNiwgMSwgMjQ2LCA5MSwgMTg0LCA2LCAxLCAxOTksIDI1MCwgMTg0LCA2LCAxLCAyMTUsIDEzOSwgCisgICAgMTg0LCA2LCAxLCAyMjYsIDI1NCwgMTg0LCA2LCAxLCAyMTcsIDEwOCwgMTg0LCA2LCAxLCAyMzcsIDEzNCwgMTg0LCA2NywgCisgICAgMSwgNDksIDE2NywgMjEzLCAyNiwgMTg0LCAyNTEsIDEzLCAxODQsIDIzOCwgMTgzLCA4MSwgMTg0LCAyMzgsIDQzLCA4MSwgCisgICAgMTg0LCAyNDYsIDcwLCAxODQsIDIxNCwgNzksIDgxLCAxODQsIDI1MiwgMywgODEsIDE4NCwgNCwgMSwgMjUwLCAxMDksIAorICAgIDE4NCwgNCwgMSwgMjQ4LCAyMjQsIDE4NCwgNCwgMSwgMjM1LCAxNDksIDE4NCwgNCwgMSwgMjQyLCA1OCwgMTg0LCA0LCAxLCAKKyAgICAyMzksIDUsIDE4NCwgNCwgMSwgMTk5LCAxMTQsIDE4NCwgNCwgMSwgMjM4LCAyNDEsIDE4NCwgNCwgMSwgMjM4LCA4MSwgCisgICAgMTg0LCA0LCAxLCAxMzgsIDE4NCwgNCwgMSwgMTk5LCA2OCwgMTg0LCA0LCAxLCAyMjgsIDg2LCAxODQsIDQsIDEsIDIyNCwgCisgICAgMTQ1LCAxODQsIDQsIDEsIDIwMCwgMTczLCAxODQsIDQsIDEsIDI0NywgMTkwLCAxODQsIDQsIDEsIDIyNiwgMjQzLCAxODQsIAorICAgIDQsIDEsIDIzMywgMjA3LCAxODQsIDQsIDEsIDIyNywgMjQ4LCAxODQsIDQsIDEsIDIzNSwgMTk2LCAxODQsIDQsIDEsIDI0NiwgCisgICAgMjU0LCAxODQsIDQsIDEsIDIyMiwgNDAsIDE4NCwgNCwgMSwgMjAwLCA5LCAxODQsIDQsIDEsIDIxOCwgMjAxLCAxODQsIDQsIAorICAgIDEsIDIxMCwgMTE0LCAxODQsIDQsIDEsIDIwMiwgMTkzLCAxODQsIDQsIDEsIDI0NywgMzcsIDE4NCwgNCwgMSwgMjE2LCA1NCwgCisgICAgMTg0LCA0LCAxLCAyMjcsIDIxMCwgMTg0LCA0LCAxLCAyMTMsIDI1MiwgMTg0LCA0LCAxLCAyMTEsIDE4MCwgMTg0LCA0LCAxLCAKKyAgICAyMDIsIDIzOCwgMTg0LCA0LCAxLCAyMDUsIDIwNywgMTg0LCA0LCAxLCAyMTMsIDE1NCwgMTg0LCA0LCAxLCAyNDYsIDkxLCAKKyAgICAxODQsIDQsIDEsIDE5OSwgMjUwLCAxODQsIDQsIDEsIDIxNSwgMTM5LCAxODQsIDQsIDEsIDIyNiwgMjU0LCAxODQsIDQsIDEsIAorICAgIDIxNywgMTA4LCAxODQsIDQsIDEsIDIzNywgMTM0LCAxODQsIDQsIDMzLCAyMzksIDYsIDE5OSwgMjUwLCAxODQsIDIzNiwgCisgICAgMTgzLCAyMDgsIDc2LCAxODQsIDIzMywgMzMsIDIxMywgNDUsIDE4NCwgMjM4LCA3NywgNTQsIDIyNSwgMjcsIDE4NCwgMjM4LCAKKyAgICA3NywgNTQsIDE4NCwgMjM5LCAxNTcsIDU0LCAxMTMsIDI1MSwgMjUyLCAyMzgsIDcyLCAxMTMsIDI1MSwgMjUyLCAyMTEsIAorICAgIDE4MSwgMTEzLCAyNTEsIDI1MiwgMjEwLCA5MiwgMTEzLCAyNTEsIDI1MiwgMTk5LCAxMDAsIDIxNCwgMTQyLCAxMTMsIDI1MSwgCisgICAgMjUyLCAxOTksIDEwMCwgMjM2LCA3OSwgMTEzLCAyNTEsIDI1MiwgMjA1LCAyMjIsIDExMywgMjUxLCAyNTIsIDIxMywgMTAyLCAKKyAgICAxMTMsIDI1MSwgMjUyLCAxOTksIDk4LCAxMTMsIDI1MSwgMjUyLCAyMTYsIDEwMCwgMTEzLCAyNTEsIDI1MiwgMjAwLCAyMiwgCisgICAgMTEzLCAyNTEsIDI1MiwgMjA2LCAxMjksIDExMywgMjUxLCAyNTIsIDIzNSwgMjQ3LCAxMTMsIDI1MSwgMjUyLCAyMzUsIAorICAgIDI0OCwgMjIxLCAzLCAxMTMsIDI1MSwgMjUyLCAyMzUsIDI0NSwgMTEzLCAyNTEsIDI1MiwgMjE0LCAxNDMsIDIxNiwgMTI5LCAKKyAgICAxMTMsIDI1MSwgMjUyLCAyMDYsIDE3MiwgMjM2LCA4LCAxMTMsIDI1MSwgMjUyLCAyMTYsIDc5LCAxMTMsIDI1MSwgMjUyLCAKKyAgICAyNTAsIDE0OCwgMjM0LCAyMjgsIDExMywgMjUxLCAyNTIsIDIyMSwgMTMsIDExMywgMjUxLCAyNTIsIDIyMiwgMjAzLCAxMTMsIAorICAgIDI1MSwgMjUyLCAyMjIsIDI5LCAxMTMsIDI1MSwgMjUyLCAyMjIsIDMwLCAyMjYsIDI1NSwgMTEzLCAyNTEsIDI1MiwgMjQxLCAKKyAgICAyNTEsIDExMywgMjUxLCAyNTIsIDIxNCwgMTU0LCAxMTMsIDI1MSwgMjUyLCAyMDYsIDE3MiwgMjE0LCAxMzcsIDExMywgCisgICAgMjUxLCAyNTIsIDIwMCwgMzIsIDI0OCwgMjI1LCAxOTksIDIzMSwgMTEzLCAyNTEsIDI1MiwgMjE3LCA5MCwgMTEzLCAyNTEsIAorICAgIDI1MiwgMjI4LCAxMzcsIDExMywgMjUxLCAyNTIsIDI0MSwgMTUzLCAxMTMsIDI1MSwgMjUyLCAxOTksIDI1LCAxMTMsIDEzNCwgCisgICAgMjIyLCAxMzEsIDI0NiwgMTU1LCAxMTMsIDIxNSwgMTAwLCAyMTAsIDM3LCAxMTMsIDIxNSwgMTAwLCAyMzQsIDE1NiwgMjExLCAKKyAgICAxODEsIDExMywgMjE1LCAxMDAsIDIzNCwgMTU2LCAyMTYsIDkzLCAxMTMsIDIxNSwgMTAwLCAyMzQsIDE1NiwgMjE0LCAxNDcsIAorICAgIDExMywgMjE1LCAxMDAsIDIzNCwgNDcsIDExMywgMjE1LCAxMDAsIDIwNSwgMjMsIDExMywgMjE1LCAxMDAsIDIxMSwgMTgxLCAKKyAgICAxMTMsIDIxNSwgMTAwLCAyMTYsIDkzLCAxMTMsIDIxNSwgMTAwLCAyMTQsIDE0NywgMTEzLCAyMTUsIDEwMCwgMjMzLCAxOTksIAorICAgIDExMywgMjE1LCAxMDAsIDIzMywgMjAwLCAyMzQsIDE1OCwgMzYsIDIwMywgNjMsIDExMywgMjE1LCAxMDAsIDIxNCwgODMsIAorICAgIDExMywgMjE1LCAxMDAsIDI0MiwgNDMsIDIxNywgMzQsIDIyMiwgMTYzLCAxMTMsIDIxNSwgMTAwLCAyMjIsIDE5LCAxMTMsIAorICAgIDIxNCwgMjEyLCAyMjIsIDE2MCwgMTEzLCAyMTUsIDEwMCwgMjEzLCAyMzIsIDExMywgMjE0LCAyMTIsIDIxNiwgMTAyLCAKKyAgICAxMTMsIDIxNSwgMTAwLCAyMTAsIDIyLCAyNDAsIDE4MiwgMTEzLCAyMTUsIDEwMCwgMjA5LCAxNDMsIDI0MCwgMTgyLCAxMTMsIAorICAgIDIxNCwgMjEyLCAyMDksIDI0LCAyMTYsIDk1LCAxMTMsIDEzNCwgMjAzLCAyMjUsIDI0MCwgMTgyLCAxMTMsIDEzNCwgMjI0LCAKKyAgICA1NCwgMjQwLCAxODIsIDExMywgMjE0LCAyMTIsIDIxOCwgOTAsIDIzNCwgMjI3LCAxMTMsIDIxNSwgMTAwLCAyMTQsIDE0OCwgCisgICAgMjE0LCAxNDIsIDExMywgMSwgMjUxLCAxNDIsIDExMywgMSwgMjQ4LCAyMTAsIDExMywgMSwgMjM1LCAxNDcsIDExMywgMSwgCisgICAgMjQyLCAyMywgMTEzLCAxLCAyMzQsIDEzOSwgMTEzLCAxLCAyMDMsIDYzLCAxMTMsIDEsIDE5OSwgOTIsIDExMywgMSwgMjM0LCAKKyAgICA5MywgMTEzLCAxLCAyMDYsIDE0NiwgMTEzLCAxLCAxOTksIDIzNCwgMTEzLCAxLCA0NywgMjI3LCA4NiwgMTEzLCAxLCAyMjcsIAorICAgIDg2LCAxMTMsIDEsIDIyNSwgODMsIDExMywgMSwgNDcsIDIyMiwgNDcsIDExMywgMSwgMjIyLCA0NywgMTEzLCAxLCA0NywgCisgICAgMjE4LCA4OSwgMTEzLCAxLCAyMTgsIDg5LCAxMTMsIDEsIDIxMiwgMTksIDExMywgMSwgMjUwLCAxMDcsIDExMywgMSwgNDcsIAorICAgIDIxNiwgNzMsIDExMywgMSwgMjE2LCA3MywgMTEzLCAxLCA0NywgMjA1LCAyNywgMTEzLCAxLCAyMDUsIDI3LCAxMTMsIDEsIAorICAgIDIxNCwgMTA2LCAxMTMsIDEsIDIxMywgMTIzLCAxMTMsIDEsIDIxMCwgMjEsIDExMywgMSwgMjA2LCAyMTcsIDExMywgMzMsIAorICAgIDIwMCwgNywgNTMsIDIwMywgNjMsIDExMywgMzMsIDIwMCwgNywgMjAzLCA2NCwgMTk5LCAyMzQsIDExMywgMzMsIDIwMCwgNywgCisgICAgNTMsIDE5OSwgMjM0LCAxMTMsIDIxNCwgMjEyLCAyMzUsIDI0NywgMTEzLCAyMTQsIDIxMiwgMjM1LCAyNDUsIDksIDQxLCAKKyAgICA1NCwgOSwgMiwgMjEyLCAxMiwgOSwgMjM2LCAyNTMsIDIyMiwgMTQ1LCA5LCAyLCAyMTIsIDUyLCA5LCAyLCAyMTIsIDE1LCAKKyAgICA5LCA0MSwgMTM0LCA1NiwgMjUwLCAyNDgsIDI0MiwgMjEwLCAyMTIsIDIzNCwgMjUwLCAyNDgsIDIzNiwgMjIyLCAyMTIsIAorICAgIDIzNCwgOSwgMjEzLCAxOTcsIDI1MCwgMjQ4LCAyMTYsIDI4LCAyMjEsIDE3MCwgNTQsIDI1MCwgMjQ4LCAyMTYsIDI4LCAKKyAgICAyMDYsIDE2NywgMjA2LCA1MSwgNTQsIDI1MSwgMTk4LCA1NCwgOSwgMjQ2LCA3MCwgOSwgMjQxLCAyMzgsIDIxMCwgMTU0LCAKKyAgICA5LCAyMTUsIDEwMiwgMjAzLCA0NCwgNTQsIDksIDIsIDIyMSwgMTQ5LCA5LCAyLCAyMTIsIDI5LCAyNTEsIDE0NSwgMjAxLCAKKyAgICA4OCwgOSwgMiwgMjUxLCAxNDUsIDI1MCwgMTcwLCA5LCAyLCAyMTMsIDIzMCwgMjUxLCAxNDQsIDksIDIsIDIxMywgMjM4LCAKKyAgICAyNTEsIDEyMiwgMjUxLCA2MywgOSwgMiwgMjA2LCAyNTQsIDksIDQsIDEyMiwgMjA3LCA5LCA5LCA0LCAxMjIsIDMzLCAxNDAsIAorICAgIDMsIDIyNSwgOTIsIDMsIDIwMCwgNDYsIDksIDQsIDEyMiwgMTk5LCAxMDUsIDksIDQsIDIzNywgMTU4LCA5LCA0LCAyNDIsIAorICAgIDE3LCA5LCA0LCAyMjcsIDM2LCA5LCAyMTAsIDE2NywgOSwgMSwgODEsIDksIDIwNSwgODMsIDczLCAyMTQsIDIxMiwgODEsIAorICAgIDksIDIxNCwgNzksIDgxLCA5LCAxLCAyMjcsIDQwLCAyMDAsIDQ2LCA5LCAxLCAyMzQsIDIwMywgOSwgMSwgMTQwLCAzLCAKKyAgICAyMjIsIDIyNCwgNTYsIDksIDEsIDE0MCwgMywgMjM0LCAyMDQsIDU2LCA5LCAxLCAyMDEsIDczLCAzLCAyMzQsIDIwNCwgNTYsIAorICAgIDksIDEsIDE0MCwgMywgMjM0LCAyMDQsIDU3LCA5LCAxLCA5MCwgMywgMjM0LCAyMDQsIDU2LCA5LCAxLCAyNTEsIDE0MiwgOSwgCisgICAgMSwgMjQ4LCAyNDAsIDksIDEsIDIwNiwgMTg0LCAyMjIsIDE1NiwgOSwgMSwgMjA2LCAxODMsIDksIDEsIDIwNiwgMTAyLCA5LCAKKyAgICAxLCAyMjcsIDIyNCwgOSwgMSwgMjM0LCAyMjQsIDksIDEsIDIyNiwgMjAzLCA5LCAxLCAyNDIsIDI5LCA5LCAxLCAyMDYsIAorICAgIDExNCwgOSwgMSwgMjEzLCAxNTQsIDksIDEsIDE5OSwgMTA1LCA5LCAxLCAyMTEsIDE4NiwgOSwgMSwgMjEwLCA2MSwgOSwgMSwgCisgICAgMjEyLCA1NiwgOSwgMSwgMjQyLCA1MiwgOSwgMSwgMjA3LCA5LCA5LCAxLCAxOTksIDEwOCwgOSwgMSwgMjUxLCAxNzEsIDksIAorICAgIDEsIDIzNSwgMTk0LCA5LCAxLCAyMjYsIDI1MywgMywgMTIwLCAxOTAsIDU2LCA5LCAxLCAyMjYsIDI1MywgMywgMTI2LCAKKyAgICAxOTAsIDU3LCA5LCAxLCAyMzcsIDE2MiwgOTAsIDMsIDIyOCwgNTAsIDIwMywgMTY4LCA5LCAxLCAyMzcsIDE2MiwgOTAsIDMsIAorICAgIDEyMCwgMTkwLCA1NiwgOSwgMSwgMjM3LCAxNjIsIDkwLCAzLCAxMjYsIDE5MCwgNTYsIDksIDIwNiwgMjIzLCA5LCAxLCAKKyAgICAyMzcsIDEzNCwgOSwgMSwgMjE0LCAxNTIsIDksIDEsIDIyNywgODYsIDksIDEsIDIyNSwgOTEsIDksIDEsIDIyMiwgNjEsIDksIAorICAgIDEsIDIxOCwgMjI3LCA5LCAxLCAyMzQsIDExNSwgOSwgMSwgMjAxLCA3MiwgOSwgMSwgMTQwLCAyMjIsIDE4NywgOSwgMSwgCisgICAgMjAwLCA0NiwgOSwgMjM3LCAxNTYsIDksIDI0MiwgMTUsIDksIDIyNywgMzQsIDksIDIzNywgMTU4LCA5LCAyNDIsIDE3LCA5LCAKKyAgICAyMjcsIDM2LCA5LCAyMTAsIDEwNCwgOSwgMjA3LCAyMzYsIDksIDIyMiwgMjIyLCA1NiwgOSwgMjM0LCAyMDQsIDU2LCA5LCAKKyAgICAyMzQsIDIwNCwgNTcsIDksIDIwOCwgNCwgMjUxLCAxNDIsIDksIDIyOCwgNTAsIDI0MiwgMTcsIDksIDEzNCwgMjE4LCAyMjgsIAorICAgIDIzNSwgMTY1LCA5LCAxOTgsIDI0NSwgOSwgMjIsIDIsIDQsIDIwMywgMTY5LCA1NiwgOSwgMjIsIDIsIDIyOCwgNTAsIDQsIAorICAgIDIwMywgMTY5LCA1NiwgOSwgMjIsIDIsIDczLCA1NywgOSwgMjEzLCAxMDUsIDI0MiwgMTcsIDksIDIzNywgMTU5LCAzLCAKKyAgICAxMjAsIDI0MCwgMTgwLCA5LCAyMDEsIDc0LCAyMzQsIDIwNCwgNTcsIDI1MCwgMjQ4LCAxNywgMTk5LCA4MSwgMjUwLCAyNDgsIAorICAgIDE3LCAxMDIsIDI1MCwgMjQ4LCAxNywgMTA1LCAyNTAsIDI0OCwgMTcsIDE0NywgMjUwLCAyNDgsIDE3LCAxNDksIDI1MCwgCisgICAgMjQ4LCAxNywgMTY0LCAyNTAsIDI0OCwgMTcsIDE4NywgMjUwLCAyNDgsIDE3LCAyMTAsIDEzNSwgMjUwLCAyNDgsIDE3LCAKKyAgICAxOTIsIDI1MCwgMjQ4LCAxNywgMjE5LCAxMTMsIDksIDIxNiwgMjcsIDU0LCA5LCAyNDEsIDE2OCwgMjEwLCAxNTQsIDksIAorICAgIDIwNiwgNDksIDIxMCwgMTU0LCA5LCAyMzcsIDYxLCAyMTUsIDk4LCAyMDgsIDEwOSwgOSwgMSwgMjQwLCAxODEsIDI0OCwgCisgICAgMjQwLCA5LCAxLCAyNDAsIDE4MSwgMjE0LCAxNTIsIDksIDEsIDIwNywgMjEzLCAyNTEsIDE0MiwgOSwgMSwgMTQwLCAyMDEsIAorICAgIDg5LCA5LCAxLCAxNDAsIDMsIDIwMSwgNzQsIDIzNCwgMjA0LCA1NiwgOSwgMSwgMTQwLCAzLCAyMDEsIDc0LCAyMzQsIDIwNCwgCisgICAgNTcsIDksIDEsIDEyMiwgMjM0LCAyMDMsIDksIDEsIDEyMiwgMjM0LCAyMDQsIDI1MSwgMTQyLCA5LCAxLCAxMjIsIDIzNCwgCisgICAgMjA0LCAyMDEsIDcyLCA5LCAxLCAxMDgsIDMsIDIzNCwgMjA0LCA1NiwgOSwgMSwgMTIyLCAyMzQsIDIwNCwgMjAwLCA0NiwgCisgICAgOSwgMSwgMjA0LCAyNDUsIDksIDEsIDIwNCwgMjQzLCA5LCAxLCAyNDgsIDI1MCwgOSwgMSwgMjA2LCAxODQsIDMsIDIxMywgCisgICAgMjYsIDksIDEsIDIwNiwgMTg0LCAzLCAxMjYsIDE5MCwgODgsIDIzOSwgMTY1LCA5LCAxLCAyMTYsIDU0LCA5LCAxLCAyMDYsIAorICAgIDE4MSwgOSwgMSwgMjQ4LCAyMzgsIDksIDEsIDE1NSwgMywgMjM0LCAyMDQsIDU2LCA5LCAxLCAxNTUsIDMsIDEyMCwgMTkwLCAKKyAgICA4MywgNTYsIDksIDEsIDIxOCwgNDcsIDksIDEsIDIzOSwgOTksIDksIDEsIDE1NSwgMywgMTI2LCAxOTAsIDU2LCA5LCAxLCAKKyAgICAyMDYsIDIwNSwgOSwgMSwgMjA2LCAyMDMsIDksIDEsIDI0MSwgMjE1LCA5LCAxLCAyNDIsIDMwLCAzLCAyMTMsIDI2LCA5LCAKKyAgICAxLCAyNDIsIDMwLCAzLCA3MywgNTcsIDksIDEsIDI0MiwgMzAsIDMsIDczLCAyNDgsIDIyOCwgMjYsIDQsIDIwNywgOSwgOSwgCisgICAgMSwgMjQyLCAzNiwgOSwgMSwgMjQxLCAyMTcsIDksIDEsIDIzOSwgMTI3LCA5LCAxLCAyNDIsIDMwLCAzLCAxMjYsIDE5MCwgCisgICAgODgsIDIzOSwgMTY1LCA5LCAxLCAyNDIsIDMwLCAzLCAyMzYsIDIyOSwgMTkwLCA1NiwgOSwgMSwgMjEyLCAyMDcsIDksIDEsIAorICAgIDIxMywgMTU1LCAzLCA0LCAyMDMsIDE2OCwgOSwgMSwgMjEzLCAxNTUsIDMsIDIxMywgMjYsIDksIDEsIDIxMywgMTU1LCAzLCAKKyAgICA3MywgNTcsIDksIDEsIDIxMywgMTU1LCAzLCA0LCAyMDMsIDE2OSwgNTcsIDksIDEsIDIxMywgMTU1LCAzLCA3MywgMjQ4LCAKKyAgICAyMjgsIDI2LCA3MywgNTYsIDksIDEsIDIxMywgMTU1LCAzLCAxMjAsIDE5MCwgNTYsIDksIDEsIDIyNywgMjIxLCA5LCAxLCAKKyAgICAyMTMsIDE1NSwgMywgMjM2LCAyMjksIDE5MCwgNTYsIDksIDEsIDIxMSwgMTg3LCAzLCA3MywgMjQ4LCAyMjgsIDI2LCA3MywgCisgICAgNTYsIDksIDEsIDIxMSwgMTg3LCAzLCAxMjYsIDE5MCwgNTcsIDksIDEsIDIxMSwgMTg3LCAzLCAxMjYsIDE5MCwgMjQ4LCAKKyAgICAyMjgsIDI2LCAxMjYsIDE5MCwgNTYsIDksIDEsIDIxMiwgNTcsIDMsIDEyMCwgMTkwLCA1NywgOSwgMSwgMjEyLCA1NywgMywgCisgICAgMTI2LCAxOTAsIDU2LCA5LCAxLCAyMDcsIDEwLCAzLCAxMjYsIDE5MCwgNTYsIDksIDEsIDI1MSwgMTcyLCAzLCAxMjYsIAorICAgIDE5MCwgNTYsIDksIDEsIDI0MCwgMTgxLCAyMzcsIDEzNCwgOSwgMSwgMjM3LCAxMzUsIDMsIDczLCAyMjEsIDU2LCA1NywgOSwgCisgICAgMSwgMjM3LCAxMzUsIDMsIDczLCA1NywgOSwgMSwgMjAzLCA1MiwgOSwgMSwgMjM3LCAxMzUsIDMsIDEyNiwgMTkwLCA1NywgCisgICAgOSwgMSwgMjE2LCA1MiwgOSwgMSwgMjE0LCAxNTMsIDMsIDczLCA1NiwgOSwgMSwgMjE0LCAxNTMsIDMsIDEyNiwgMTkwLCAKKyAgICA1NiwgOSwgMSwgMjI2LCAyNTIsIDksIDEsIDIwNywgMTgzLCAyMjcsIDg2LCA5LCAxLCAyMjcsIDg3LCAzLCAyMTMsIDI2LCAKKyAgICA5LCAxLCAyMjcsIDg3LCAzLCA3MywgNTYsIDksIDEsIDIxOSwgMjU1LCA5LCAxLCAyMjcsIDg3LCAzLCAxMjYsIDE5MCwgNTcsIAorICAgIDksIDEsIDIzNiwgNzYsIDksIDEsIDIzNiwgNzcsIDMsIDIxMywgMjYsIDksIDEsIDIxOSwgMTc2LCA5LCAxLCAyMzYsIDc3LCAKKyAgICAzLCAxMjAsIDE5MCwgNTcsIDksIDEsIDIzNSwgMzcsIDksIDEsIDIzNiwgNzcsIDMsIDEyNiwgMTkwLCA1NiwgOSwgMSwgCisgICAgMjI1LCA5MiwgMywgNCwgMjAzLCAxNjgsIDksIDEsIDIyNSwgOTIsIDMsIDczLCA1NiwgOSwgMSwgMjI1LCA5MiwgMywgMTI2LCAKKyAgICAxOTAsIDU2LCA5LCAxLCAyMjUsIDkyLCAzLCAxMjYsIDE5MCwgNTcsIDksIDEsIDIxOCwgMjI4LCAzLCA3MywgNTcsIDksIDEsIAorICAgIDIxOCwgMjI4LCAyMzUsIDE2NSwgOSwgMSwgMjEzLCA0LCA5LCAxLCAyMTgsIDIyOCwgMywgMjEzLCAyNiwgOSwgMSwgMjE4LCAKKyAgICAyMjgsIDMsIDEyNiwgMTkwLCA1NiwgOSwgMSwgMjM0LCAxMTYsIDI0MCwgMjA3LCA5LCAxLCAyMDYsIDIwNiwgMywgNzMsIAorICAgIDU2LCA5LCAxLCAyMzQsIDExNiwgMywgOTAsIDU2LCA5LCAxLCAyMzQsIDExNiwgMjM1LCAxMTMsIDksIDEsIDIzNCwgMTE2LCAKKyAgICAyMzUsIDExNCwgMywgMjM0LCAyMDQsIDU2LCA5LCAxLCAyMDYsIDE4NCwgMjIyLCAxNTcsIDIzNSwgMTEzLCA5LCAxLCAyMDEsIAorICAgIDczLCAzLCAyMTMsIDI2LCA5LCAxLCAyMjYsIDEzOSwgMjE3LCAxMjEsIDksIDEsIDIxNywgMTIxLCA5LCAxLCA2NiwgOSwgMSwgCisgICAgMTk5LCAyMTEsIDksIDEsIDIyNiwgMTM5LCAxOTksIDIxMSwgOSwgMSwgMjAxLCA3MywgMywgMTIwLCAxOTAsIDU2LCA5LCAxLCAKKyAgICAyMDMsIDU5LCA5LCAxLCAyMzcsIDE2MiwgMjAwLCA0NiwgOSwgMSwgOTAsIDMsIDIwNywgNiwgOSwgMSwgOTAsIDMsIDQsIAorICAgIDIwMywgMTY4LCA5LCAxLCAyMDEsIDczLCAzLCA3MywgNTYsIDksIDEsIDcyLCA5LCAxLCA5MCwgMywgMTI2LCAxOTAsIDU3LCAKKyAgICA5LCAxLCA5MCwgMjQ5LCA2OSwgOSwgMSwgOTAsIDI0OSwgNzAsIDMsIDIzNCwgMjA0LCA1NiwgOSwgMjM2LCAxODMsIDIwOCwgCisgICAgNzYsIDksIDEsIDI1MSwgMjIxLCA5LCA0LCAxMjIsIDMzLCAyMTIsIDU3LCAzLCAyMjUsIDkyLCAzLCAxNDAsIDIyMiwgMTg3LCAKKyAgICA5LCA0LCAxMjIsIDMzLCAyMTQsIDE1MywgMywgMjI1LCA5MiwgMywgMTQwLCAyMjIsIDE4NywgOSwgNCwgMTIyLCA4NCwgODIsIAorICAgIDE5LCA5LCA0LCAxMjIsIDIyNSwgOTIsIDI1MSwgMTQyLCA5LCA0LCAxMjIsIDIyNywgMjI0LCA5LCA0LCAxMjIsIDEyNiwgCisgICAgMjQwLCAxODAsIDksIDQsIDEyMiwgMjExLCAxODYsIDksIDIzOCwgMTcxLCA3NiwgMjUwLCAxMTEsIDksIDIwOCwgMTA1LCAKKyAgICA3NiwgMjEyLCAxNzMsIDIzOCwgMjEwLCAyMzQsIDQyLCA5LCA0LCAxMjIsIDIxMiwgMjE5LCAxOTksIDgxLCA5LCA0LCAxMjIsIAorICAgIDIwMywgMjIzLCAyMTMsIDE3NCwgMTk5LCA4MSwgOSwgNCwgMTIyLCAyNDAsIDE4MSwgMjM0LCAxMzcsIDc2LCAyMjYsIDIwMywgCisgICAgOSwgNCwgMTIyLCA4NCwgNjUsIDE5LCA5LCA0LCAxMjgsIDIxMSwgMTg2LCA5LCA0LCAxMjIsIDIyMiwgMjIzLCA5LCA0LCAKKyAgICAyMDEsIDcyLCA5LCA0LCAyMDAsIDQ2LCA5LCA0LCAxMjIsIDIwMCwgNDYsIDksIDQsIDEyMiwgMjE4LCAyMjcsIDksIDIxNSwgCisgICAgMTM0LCA3NiwgMjEyLCA0MiwgOSwgMjM4LCAxODEsIDI0NywgNTYsIDEyOCwgMjA4LCA3NiwgOSwgMjM4LCAxODEsIDI0NywgCisgICAgNTYsIDEyMiwgMjA4LCA3NiwgOSwgMjEyLCAyMTksIDEyMiwgMjA4LCA3NywgMywgMjM3LCA5NCwgMjQ3LCA1NSwgOSwgNCwgCisgICAgMTI4LCAyMjIsIDYxLCA5LCAxLCAyNDIsIDMwLCAzLCAyMjgsIDUwLCAyMDMsIDE2OCwgOSwgMSwgMjEzLCAxNTUsIDMsIAorICAgIDIyOCwgNTAsIDIwMywgMTY4LCAyMzgsIDMzLCAyNTAsIDI0OCwgMTcsIDE5OSwgODEsIDIzOCwgMzMsIDI1MCwgMjQ4LCAxNywgCisgICAgMTAyLCAyMzgsIDMzLCAyNTAsIDI0OCwgMTcsIDEwNSwgMjM4LCAzMywgMjUwLCAyNDgsIDE3LCAxNDcsIDIzOCwgMzMsIAorICAgIDI1MCwgMjQ4LCAxNywgMTQ5LCAyMzgsIDMzLCAyNTAsIDI0OCwgMTcsIDE2NCwgMjM4LCAzMywgMjUwLCAyNDgsIDE3LCAKKyAgICAxODcsIDIzOCwgMzMsIDI1MCwgMjQ4LCAxNywgMjEwLCAxMzUsIDIzOCwgMzMsIDI1MCwgMjQ4LCAxNywgMTkyLCAyMzgsIAorICAgIDMzLCAyNTAsIDI0OCwgMTcsIDIxOSwgMTEzLCA5LCAxLCAyMTAsIDYyLCAzLCA3MywgNTcsIDksIDEsIDI0MiwgNTMsIDMsIAorICAgIDczLCA1NywgOSwgMSwgMjM1LCAxOTUsIDMsIDczLCA1NywgOSwgMiwgMjA5LCAxNDIsIDI1MSwgODksIDksIDIsIDIwOSwgCisgICAgMTQyLCAyMTUsIDYzLCAyMjIsIDQwLCA5LCAxLCAyMzQsIDExNiwgMywgMjI4LCA1MCwgMjAzLCAxNjgsIDIwNywgMTAzLCAKKyAgICAyMzgsIDE3MSwgNzYsIDIxNiwgMTI3LCAyMDcsIDEwMywgMjA3LCAyMDksIDIzNiwgMTgzLCAyMDgsIDc2LCAyMDcsIDEwMywgCisgICAgMjA4LCA2LCAyMzYsIDE4MywgMjA4LCA3NiwgMjA3LCAxMDMsIDIwNywgMjA5LCAyNDYsIDc5LCAyMDcsIDEwMywgMjA4LCA2LCAKKyAgICAyNDYsIDc5LCAyMDcsIDEwMywgMjMzLCAxNzcsIDI0NiwgNzksIDIwNywgMTAzLCAyNDYsIDgwLCAyMDksIDg2LCAyMjUsIAorICAgIDI4LCAyMDcsIDEwMywgMjQ2LCA4MCwgMjA5LCA4NiwgMjEzLCA0NiwgMjA3LCAxMDMsIDIwNywgMjA5LCAyNDYsIDgwLCAKKyAgICAyMDksIDg2LCAyMjUsIDI4LCAyMDcsIDEwMywgMjA4LCA2LCAyNDYsIDgwLCAyMDksIDg2LCAyMTMsIDQ2LCAyMDcsIDEwMywgCisgICAgMjQzLCAzNiwgMjA3LCAxMDMsIDIzNCwgMTYzLCAyMTcsIDE0MCwgMjA3LCAxMDMsIDIzNCwgMTYzLCAyMjIsIDE3LCAyMDcsIAorICAgIDEwMywgMjM0LCAxNjMsIDI1MCwgMTY3LCAyMDcsIDEwMywgMjUyLCAzLCA4MSwgMjA3LCAxMDMsIDEsIDI1MSwgMTQ3LCAKKyAgICAyMDcsIDEwMywgMSwgMjA3LCAyMTMsIDI1MSwgMTQ3LCAyMDcsIDEwMywgMSwgMjQ4LCAyMDcsIDIwNywgMTAzLCAxLCAyMzYsIAorICAgIDY2LCAyMDcsIDEwMywgMSwgMjM2LCA2NywgMjM2LCA0NCwgMjA3LCAxMDMsIDEsIDI0MiwgMjYsIDIwNywgMTAzLCAxLCAKKyAgICAyNDAsIDE4MSwgMjQyLCAyNywgMjEzLCAyMCwgMjA3LCAxMDMsIDEsIDIzNCwgMTM5LCAyMDcsIDEwMywgMSwgMjAxLCA3MiwgCisgICAgMjA3LCAxMDMsIDEsIDE5OSwgMTA1LCAyMDcsIDEwMywgMSwgMjM0LCA5MSwgMjA3LCAxMDMsIDEsIDIwNiwgMTQyLCAyMDcsIAorICAgIDEwMywgMSwgMjA2LCAxNDMsIDIzNiwgNDQsIDIwNywgMTAzLCAxLCAxOTksIDE5OCwgMjA3LCAxMDMsIDEsIDE5OSwgMTk5LCAKKyAgICAyMzQsIDEzOSwgMjA3LCAxMDMsIDEsIDIyNywgNTcsIDIwNywgMTAzLCAxLCAyMjUsIDkwLCAyMDcsIDEwMywgMSwgMjIxLCAKKyAgICAxNjYsIDIwNywgMTAzLCAxLCAyMTgsIDg5LCAyMDcsIDEwMywgMSwgMjEwLCAxNjAsIDIwNywgMTAzLCAxLCA0NywgMjEwLCAKKyAgICAxNjAsIDIwNywgMTAzLCAxLCA3MiwgMjA3LCAxMDMsIDEsIDIxNiwgNzMsIDIwNywgMTAzLCAxLCAyMTMsIDEwNSwgMjE2LCAKKyAgICA3MywgMjA3LCAxMDMsIDEsIDIxMiwgNTQsIDIwNywgMTAzLCAxLCAyMTQsIDE0NiwgMjA3LCAxMDMsIDEsIDIxMywgMjAsIAorICAgIDIwNywgMTAzLCAxLCAyMTAsIDIxLCAyMDcsIDEwMywgMSwgMjA2LCAyMTUsIDIwNywgMTAzLCAxLCAyMTYsIDEyLCAyNDgsIAorICAgIDE5NCwgMjA3LCAxMDMsIDEsIDIxNiwgMTIsIDIzNSwgMTkyLCAyMDcsIDEwMywgMSwgMjE2LCAxMiwgMjQxLCA5NSwgMjA3LCAKKyAgICAxMDMsIDIxNCwgMjI1LCA1NiwgMjA3LCAxMDMsIDIxNCwgMjI1LCA1NywgMjA3LCAxMDMsIDIxNCwgMjI1LCAyMzksIDE3OSwgCisgICAgMjA3LCAxMDMsIDE5OSwgOCwgNTYsIDIwNywgMTAzLCAxOTksIDgsIDU3LCAyMDcsIDEwMywgMTk5LCA4LCAyMzksIDE3OSwgCisgICAgMjA3LCAxMDMsIDIxMywgMTkzLCA1NiwgMjA3LCAxMDMsIDIxMywgMTkzLCA1NywgMjA3LCAxMDMsIDIzOSwgMTgwLCAxOTksIAorICAgIDE1LCAyMzMsIDE3NiwgMjA3LCAxMDMsIDIzOSwgMTgwLCAxOTksIDE1LCAyNTEsIDY0LCAyMDcsIDEwMywgMjM0LCAxNDQsIAorICAgIDU2LCAyMDcsIDEwMywgMjM0LCAxNDQsIDU3LCAyMDcsIDEwMywgMjM0LCAxNDMsIDIzOSwgMTc5LCAyMDcsIDEwMywgMjM4LCAKKyAgICA5OCwgNTYsIDIwNywgMTAzLCAyMzgsIDk4LCA1NywgMjA3LCAxMDMsIDIxMiwgMTM4LCAyMDcsIDEwMywgMjM3LCAxMjgsIAorICAgIDI0MCwgMTgyLCAyMDcsIDEwMywgMjE0LCA1NywgMjA3LCAxMDMsIDIxMiwgMTY3LCAyMDcsIDEwMywgMTIwLCA4MywgMTkwLCAKKyAgICA1NiwgMjA3LCAxMDMsIDEyMCwgODMsIDE5MCwgNTcsIDIwNywgMTAzLCAxMjYsIDE5MCwgNTYsIDIwNywgMTAzLCAxMjYsIAorICAgIDE5MCwgNTcsIDIwNywgMTAzLCAyMTcsIDEzOCwgMjI0LCAxNzcsIDU2LCAyMDcsIDEwMywgMjE3LCAxMzgsIDIyNCwgMTc3LCAKKyAgICA1NywgMjA3LCAxMDMsIDIyMCwgMjQ1LCAyMDcsIDEwMywgMjQ5LCA2OCwgMjA3LCAxMDMsIDEsIDIwOSwgMjAsIDE5OSwgNzUsIAorICAgIDIwNywgMTAzLCAxLCAyMDksIDIwLCAyMjYsIDE5NiwgMjA3LCAxMDMsIDEsIDIwOSwgMjAsIDIzNywgMTQ3LCA5LCAxLCAKKyAgICAyNDgsIDI0MSwgMywgMTI2LCAxOTAsIDIzMywgMTI2LCA1NywgOSwgMSwgMjQ4LCAyNDEsIDMsIDczLCAyNDgsIDIyOCwgMjYsIAorICAgIDEyNiwgMTkwLCA1NiwgOSwgMSwgMjQ4LCAyNDEsIDMsIDEyNiwgMTkwLCAyMTUsIDk2LCAxODIsIDU3LCA5LCAxLCAyNDgsIAorICAgIDI0MSwgMywgMTI2LCAxOTAsIDIxNSwgOTYsIDE4MiwgMjQ4LCAyMjgsIDI2LCAxMjAsIDE5MCwgNTYsIDksIDEsIDI0OCwgCisgICAgMjQxLCAzLCAxMjAsIDE5MCwgMjQ4LCAyMjgsIDI2LCA3MywgNTYsIDksIDEsIDI0OCwgMjQxLCAzLCAyMjgsIDUwLCA0LCAKKyAgICAyMDMsIDE2OSwgNTcsIDksIDEsIDI0OCwgMjQxLCAzLCA0LCAyMDMsIDE2OCwgOSwgMSwgMTU1LCAzLCAxMjAsIDE5MCwgNTYsIAorICAgIDksIDEsIDE1NSwgMywgMTI2LCAxOTAsIDIxNSwgOTYsIDE4MiwgNTcsIDksIDEsIDI0MiwgMzAsIDMsIDEyMCwgMTkwLCAKKyAgICAyMDIsIDI0OCwgMjQ4LCAyMjgsIDI2LCA0LCAyMDcsIDksIDksIDEsIDI0MiwgMzAsIDMsIDIyOCwgNTAsIDQsIDIwMywgCisgICAgMTY5LCA1NywgOSwgMSwgMjEzLCAxNTUsIDMsIDk3LCA5LCAxLCAyMTEsIDE4NywgMywgMjM2LCAyMjksIDE5MCwgNTYsIDksIAorICAgIDEsIDI1MSwgMTcyLCAzLCAxMjAsIDE5MCwgNTYsIDksIDEsIDI1MSwgMTcyLCAzLCAxMjYsIDE5MCwgMjE1LCA5NiwgMTkxLCAKKyAgICA1NiwgOSwgMSwgMjUxLCAxNzIsIDMsIDEyMCwgMTkwLCAyMDIsIDI0OCwgNTYsIDksIDEsIDIzNywgMTM1LCAzLCAxMjAsIAorICAgIDE5MCwgNTcsIDksIDEsIDIzNywgMTM1LCAzLCAxMjYsIDE5MCwgMjE1LCA5NiwgMTgyLCA1NywgOSwgMSwgMjI2LCAyNTMsIAorICAgIDMsIDczLCA1NiwgOSwgMSwgMjI2LCAyNTMsIDMsIDEyNiwgMTkwLCA1NiwgOSwgMSwgMjI2LCAyNTMsIDMsIDEyNiwgMTkwLCAKKyAgICAyMTUsIDk2LCAxODIsIDU3LCA5LCAxLCA4NCwgMywgNzMsIDU2LCA5LCAxLCA4NCwgMywgNzMsIDU3LCA5LCAxLCAyMTgsIAorICAgIDIyOCwgMywgMTIwLCAxOTAsIDU3LCA5LCAxLCAyMTgsIDIyOCwgMywgNCwgMjA3LCA5LCA5LCAxLCAyMTgsIDIyOCwgMywgNCwgCisgICAgMjAzLCAxNjgsIDksIDEsIDIyNSwgOTIsIDMsIDE0OCwgOSwgMSwgMjEzLCAxNTUsIDMsIDEyMCwgMTkwLCAyMDIsIDI0OCwgCisgICAgNTYsIDksIDEsIDIxMywgMTU1LCAzLCAyMzQsIDIwNCwgNTYsIDksIDEsIDIxMSwgMTg3LCAzLCAxMjAsIDE5MCwgMjAyLCAKKyAgICAyNDgsIDU2LCA5LCAxLCAxNTUsIDMsIDQsIDksIDEsIDIwNywgMTAsIDU3LCA5LCAxLCAxNTUsIDMsIDQsIDksIDEsIDIwNywgCisgICAgMTAsIDI2LCAxMjAsIDI0MCwgMTgwLCA5LCAxLCAyMTEsIDE4NywgMywgNCwgOSwgMSwgMjA3LCAxMCwgMjYsIDEyMCwgMjQwLCAKKyAgICAxODAsIDksIDEsIDIxMywgMTU1LCAzLCA0LCA5LCAxLCAyMDcsIDEwLCAyNiwgMTIwLCAyNDAsIDE4MCwgOSwgMSwgMTU1LCAKKyAgICAzLCA0LCA5LCAxLCAyMDcsIDEwLCA1NiwgOSwgMSwgMTQwLCAzLCAyMzgsIDMzLCAyNTAsIDI0OCwgMTcsIDEyMCwgNTYsIDksIAorICAgIDEsIDE0MCwgMywgMjM4LCAzMywgMjUwLCAyNDgsIDE3LCAxMjYsIDU2LCA5LCAxLCAyMzcsIDE2MiwgOTAsIDMsIDIzOCwgCisgICAgMzMsIDI1MCwgMjQ4LCAxNywgMTIwLCA1NiwgOSwgMSwgMjM3LCAxNjIsIDkwLCAzLCAyMzgsIDMzLCAyNTAsIDI0OCwgMTcsIAorICAgIDEyNiwgNTYsIDksIDEsIDIzNywgMTYyLCA5MCwgMywgMjM4LCAzMywgMjUwLCAyNDgsIDE3LCAyMzYsIDIyOSwgNTcsIDksIAorICAgIDEsIDIwMSwgNzMsIDMsIDIzOCwgMzMsIDI1MCwgMjQ4LCAxNywgMTIwLCA1NiwgOSwgMSwgMjAxLCA3MywgMywgMjM4LCAzMywgCisgICAgMjUwLCAyNDgsIDE3LCAxMjYsIDU2LCA5LCAxLCA5MCwgMjQ5LCA3MCwgMywgMjM4LCAzMywgMjUwLCAyNDgsIDE3LCAxMjAsIAorICAgIDU2LCA5LCAxLCA5MCwgMjQ5LCA3MCwgMywgMjM4LCAzMywgMjUwLCAyNDgsIDE3LCAxMjYsIDU2LCA5LCAxLCAxNTUsIDMsIAorICAgIDIzOCwgMzMsIDI1MCwgMjQ4LCAxNywgMjM2LCAyMjksIDU3LCA5LCAxLCAyMTEsIDE4NywgMywgMjM4LCAzMywgMjUwLCAKKyAgICAyNDgsIDE3LCAyMzYsIDIyOSwgNTYsIDksIDEsIDIxMSwgMTg3LCAzLCAyMjgsIDUwLCAyMDMsIDE2OCwgOSwgMSwgMjI3LCAKKyAgICA4NywgMywgMTIwLCAxOTAsIDU2LCAyMDYsIDExOSwgMSwgMjM0LCAyMzMsIDIwNiwgMTE5LCAxLCAyMTAsIDcxLCAyMDYsIAorICAgIDExOSwgMSwgMjE4LCAyMjYsIDIwNiwgMTE5LCAxLCAyMTMsIDI0OCwgMjA2LCAxMTksIDEsIDI0OSwgMTM0LCAyMDYsIDExOSwgCisgICAgMSwgMjI0LCAyMjAsIDIwNiwgMTE5LCAxLCAyMjcsIDEwMSwgMjA2LCAxMTksIDEsIDI1MSwgMTI5LCAyMDYsIDExOSwgMSwgCisgICAgMjAzLCA4OCwgMjA2LCAxMTksIDEsIDIyMiwgNjAsIDIwNiwgMTE5LCAxLCAyMzcsIDE5MywgMjA2LCAxMTksIDEsIDI0MSwgCisgICAgOTgsIDIwNiwgMTE5LCAxLCAyMDYsIDEyMSwgMjA2LCAxMTksIDEsIDIyNSwgMTcyLCAyMDYsIDExOSwgMSwgMjM2LCA4NSwgCisgICAgMjA2LCAxMTksIDEsIDIzNSwgMTE5LCAyMDYsIDExOSwgMSwgMjExLCAxODUsIDIwNiwgMTE5LCAxLCAyNDEsIDIzNiwgMjA2LCAKKyAgICAxMTksIDEsIDE5OSwgOTUsIDIwNiwgMTE5LCAxLCAyMDYsIDIxNiwgMjA2LCAxMTksIDEsIDIwMCwgMTA5LCAyMDYsIDExOSwgCisgICAgMSwgMjE2LCA4NiwgMjA2LCAxMTksIDEsIDIyNywgMjMyLCAyMDYsIDExOSwgMSwgMjQ3LCAxMSwgMjA2LCAxMTksIDEsIAorICAgIDIwNCwgMjUyLCAyMDYsIDExOSwgMSwgMjM0LCA4MywgMjA2LCAxMTksIDEsIDIyNiwgMjA2LCAyMDYsIDExOSwgMSwgMjA2LCAKKyAgICAxMjAsIDIwNiwgMTE5LCAxLCAxOTksIDExMiwgMjA2LCAxMTksIDEsIDIxMCwgNjAsIDIwNiwgMTE5LCAxLCAyMTIsIDYwLCAKKyAgICAyMDYsIDExOSwgMSwgMjQyLCA1NiwgMjA2LCAxMTksIDEsIDEzOCwgMjA2LCAxMTksIDEsIDE5OSwgMTQsIDIwNiwgMTE5LCAKKyAgICAxLCAyNTEsIDE2OCwgMjA2LCAxMTksIDEsIDIzNSwgMTkzLCAyMDYsIDExOSwgMSwgMjE0LCAxNTYsIDIwNiwgMTE5LCAxLCAKKyAgICAyMDEsIDExMiwgMjA2LCAxMTksIDI1MiwgNSwgMjA2LCAxMTksIDI1MiwgMTAzLCAyMDYsIDExOSwgMjMyLCAyMzQsIDIwNiwgCisgICAgMTE5LCAyMzgsIDI1NCwgMjA2LCAxMTksIDIwNCwgMzksIDIwNiwgMTE5LCAyMTcsIDYyLCAyMDYsIDExOSwgMjM5LCA4LCAKKyAgICAyMDYsIDExOSwgMjM4LCAyNCwgMjA2LCAxMTksIDIxNywgMTM3LCAyMDYsIDExOSwgMjE3LCAxNDUsIDIwNiwgMTE5LCAyMDcsIAorICAgIDIzNiwgMjA2LCAxMTksIDEsIDIyMCwgMTU3LCAyMTksIDQ5LCAxNywgMTk5LCA4MSwgMjE5LCA0OSwgMTcsIDEwMiwgMjE5LCAKKyAgICA0OSwgMTcsIDEwNSwgMjE5LCA0OSwgMTcsIDE0NywgMjE5LCA0OSwgMTcsIDE0OSwgMjE5LCA0OSwgMTcsIDE2NCwgMjE5LCAKKyAgICA0OSwgMTcsIDE4NywgMjE5LCA0OSwgMTcsIDIxMCwgMTM1LCAyMTksIDQ5LCAxNywgMTkyLCAyMTksIDQ5LCAxNywgMjE5LCAKKyAgICAxMTMsIDIxOSwgNDksIDEsIDYyLCAyMTksIDQ5LCAxLCAyMzgsIDI1NSwgMjE5LCA0OSwgMSwgNzAsIDIxOSwgNDksIDEsIAorICAgIDcyLCAyMTksIDQ5LCAxLCA2NiwgMjE5LCA0OSwgMSwgMjE3LCA2MywgMjE5LCA0OSwgMSwgNzQsIDIxOSwgNDksIDEsIDI0MiwgCisgICAgNDQsIDIxOSwgNDksIDEsIDIyMCwgMjE0LCAyMTksIDQ5LCAxLCAyNDksIDEzNiwgMjE5LCA0OSwgMSwgMTcyLCAyMTksIDQ5LCAKKyAgICAxLCAyMDcsIDM2LCAyMTksIDQ5LCAxLCAyMjcsIDI0OCwgMjE5LCA0OSwgMSwgMjQ3LCAzNywgMjE5LCA0OSwgMSwgMjQyLCAKKyAgICA1OCwgMjE5LCA0OSwgMSwgMjEzLCAyNTIsIDIxOSwgNDksIDEsIDIxMiwgMjE1LCAyMTksIDQ5LCAxLCAyMTIsIDY0LCAyMTksIAorICAgIDQ5LCAxLCAyMzYsIDMyLCAyMTksIDQ5LCAxLCAyMzcsIDE5NSwgMjE5LCA0OSwgMSwgMTYxLCAyMTksIDQ5LCAxLCAxOTQsIAorICAgIDIxOSwgNDksIDEsIDIyMCwgMTYyLCAyMDAsIDI1MiwgMjE5LCA0OSwgMSwgMTc4LCAyMTksIDQ5LCAxLCAyMTgsIDYwLCAKKyAgICAyMTksIDQ5LCAxLCAxODgsIDIxOSwgNDksIDEsIDE0NCwgMjE5LCA0OSwgMSwgMjAxLCAxMTQsIDIxOSwgNDksIDEsIDE4MywgCisgICAgMjE5LCA0OSwgMSwgMjE4LCA2MSwgMjAwLCAyNTIsIDIxOSwgNDksIDEsIDIyNywgMTU4LCAyMjcsIDI0OCwgMjE5LCA0OSwgCisgICAgMSwgMjI3LCAxNTgsIDI0NywgMzcsIDIxOSwgNDksIDEsIDIyNywgMTU4LCAyMTMsIDI1MiwgMjE5LCA0OSwgMzgsIDIwOSwgCisgICAgMjUwLCAxMjIsIDIwNSwgMTc0LCAyMTksIDQ5LCAzOCwgMjA5LCAyNTAsIDEyOCwgMjA1LCAxNzQsIDIxOSwgNDksIDM4LCAKKyAgICAyMDksIDI1MCwgMjEzLCAxOSwgMjA1LCAxNzQsIDIxOSwgNDksIDM4LCAxNjgsIDI0MSwgMTE4LCAyMDUsIDE3NCwgMjE5LCAKKyAgICA0OSwgMzgsIDE2OCwgMTIyLCAyMDUsIDE3NCwgMjE5LCA0OSwgMzgsIDE2OCwgMTI4LCAyMDUsIDE3NCwgMjE5LCA0OSwgMzgsIAorICAgIDE2OCwgMjEzLCAxOSwgMjA1LCAxNzQsIDIxOSwgNDksIDM4LCAyMjAsIDEyMiwgODEsIDIxOSwgNDksIDM4LCA1MywgNzMsIAorICAgIDU2LCAyMTksIDQ5LCAxMjIsIDE1MCwgMjUxLCAxMywgMjE5LCA0OSwgMTI4LCAxNTAsIDI1MSwgMTMsIDIxOSwgNDksIDE2LCAKKyAgICAyMTcsIDY0LCAyNDEsIDEzMiwgMjE5LCA0OSwgMTYsIDIzNiwgMzEsIDIxOSwgNDksIDI0NiwgNzAsIDIxOSwgNDksIDIzOCwgCisgICAgNDMsIDgxLCAyMTksIDQ5LCAyMjUsIDE0NywgMjEyLCAyMiwgMSwgMjUxLCAxNDksIDIxMiwgMjIsIDEsIDI0OCwgMTUyLCAKKyAgICAyMTIsIDIyLCAxLCAyMzYsIDY1LCAyMTIsIDIyLCAxLCAyNDIsIDI4LCAyMTIsIDIyLCAxLCAyMjgsIDMsIDIxMiwgMjIsIDEsIAorICAgIDI0OSwgMTM0LCAyMTIsIDIyLCAxLCAxOTksIDg0LCAyMTIsIDIyLCAxLCAyMjgsIDEyLCAyMTIsIDIyLCAxLCAyMDUsIDIxMywgCisgICAgMjEyLCAyMiwgMSwgMTk5LCAxODAsIDIxMiwgMjIsIDEsIDIyNywgMTAyLCAyMTIsIDIyLCAxLCAyMjUsIDE2OSwgMjEyLCAKKyAgICAyMiwgMSwgMjIxLCAxNjYsIDIxMiwgMjIsIDEsIDIxOCwgODksIDIxMiwgMjIsIDEsIDIwOSwgMTQwLCAyMTIsIDIyLCAxLCAKKyAgICAyMjgsIDExNywgMjEyLCAyMiwgMSwgMjM3LCAxMTIsIDIxMiwgMjIsIDEsIDIwNSwgMzAsIDIxMiwgMjIsIDEsIDIxNCwgNzYsIAorICAgIDIxMiwgMjIsIDEsIDIxMywgMjAsIDIxMiwgMjIsIDEsIDIxMCwgODksIDIxMiwgMjIsIDEsIDIwNywgMzEsIDIxMiwgMjIsIAorICAgIDEzNCwgMjI4LCAxMTcsIDIxMiwgMjIsIDEzNCwgMjI4LCAxMTYsIDIxMiwgMjIsIDEzNCwgMjE3LCAxMzMsIDIxMiwgMjIsIAorICAgIDEzNCwgMjQyLCA0MiwgMjEyLCAyMiwgNjcsIDEsIDIzOCwgMTI5LCAxOTksIDE4MCwgMjEyLCAyMiwgMTM0LCAyMzgsIDEyOSwgCisgICAgMTk5LCAxODAsIDIxMiwgMjIsIDIyLCAyLCAxNjgsIDcyLCAyMTIsIDIyLCAyMiwgMiwgNzIsIDIxMiwgMjIsIDIyLCAyLCAKKyAgICAyMTYsIDI0MCwgMjUyLCAxMzgsIDIxMiwgMjIsIDIyLCAyLCAxNjgsIDI1MiwgMTM4LCAyMTIsIDIyLCAyMiwgMiwgMjUyLCAKKyAgICAxMzgsIDIxMiwgMjIsIDIyLCAyLCAyMTYsIDI0MCwgNjIsIDIxMiwgMjIsIDIyLCAyLCAxNjgsIDYyLCAyMTIsIDIyLCAyMiwgCisgICAgMiwgNjIsIDIxMiwgMjIsIDY3LCAxLCAyMDksIDI1MCwgNjIsIDIxMiwgMjIsIDIyLCAyLCAyMDksIDI1MCwgNjIsIDIxMiwgCisgICAgMjIsIDIyLCAyLCAxNjgsIDY2LCAyMTIsIDIyLCAyMiwgMiwgNjYsIDIxMiwgMjIsIDY3LCAxLCA3MCwgMjEyLCAyMiwgMjIsIAorICAgIDIsIDE2OCwgNzAsIDIxMiwgMjIsIDIyLCAyLCA3MCwgMjEyLCAyMiwgMjIsIDIsIDc0LCAyMTIsIDIyLCAyMiwgMiwgMjA3LCAKKyAgICAyMzYsIDIxMiwgMjIsIDEzNCwgMjIwLCAxNywgMjEyLCAyMiwgMjE0LCAyMTIsIDIyMCwgMTcsIDIxMiwgMjIsIDIxNCwgCisgICAgMjEyLCAyNTEsIDE5NSwgMjEyLCAyMiwgMjE0LCAyMTIsIDI1MSwgNzUsIDIxMiwgMjIsIDIxNCwgMjEyLCAyNDksIDQ4LCAKKyAgICAyMTIsIDIyLCAyMTQsIDIxMiwgMjUwLCAxNDksIDIxMiwgMjIsIDIxNCwgMjEyLCAyMTAsIDksIDIxMiwgMjIsIDI1MiwgMywgCisgICAgODEsIDIxMiwgMjIsIDIxNCwgMjEyLCAyMjIsIDUwLCAyMTQsIDExMiwgMjEyLCAyMiwgMjE0LCAyMTIsIDE5OSwgMjIsIAorICAgIDIxMiwgMjIsIDIxNCwgMjEyLCAyMTQsIDExMiwgMjEyLCAyMiwgMjE0LCAyMTIsIDE5OSwgMTExLCAyMTIsIDIyLCAyMTQsIAorICAgIDIxMiwgMjA0LCAxODEsIDIxMiwgMjIsIDIxNCwgMjEyLCAyNTAsIDIxOSwgMjEyLCAyMiwgMjE0LCAyMTIsIDIwOSwgMjQsIAorICAgIDIyMiwgMTMzLCAyMTIsIDIyLCAyMTQsIDIxMiwgMjUxLCA1OSwgMjIyLCAxNzYsIDEsIDIzNCwgMjEwLCAyMjIsIDE3NiwgMSwgCisgICAgMjUyLCA4OSwgMjIyLCAxNzYsIDEsIDI1MSwgMTkzLCAyMjIsIDE3NiwgMSwgMjUxLCAyMzUsIDIyMiwgMTc2LCAxLCAyNTEsIAorICAgIDE4NSwgMjIyLCAxNzYsIDEsIDIwMywgMTg4LCAyMjIsIDE3NiwgMSwgMjUwLCAxMDUsIDIyMiwgMTc2LCAxLCAyMjgsIDEyLCAKKyAgICAyMjIsIDE3NiwgMSwgMjUwLCAxNDYsIDIyMiwgMTc2LCAxLCAyNTEsIDE1NCwgMjIyLCAxNzYsIDEsIDI1MSwgMTU5LCAyMjIsIAorICAgIDE3NiwgMSwgMjUxLCAxNTEsIDIyMiwgMTc2LCAxLCAyNTEsIDEwMSwgMjIyLCAxNzYsIDEsIDI1MSwgODUsIDIyMiwgMTc2LCAKKyAgICAxLCAyNTAsIDE4OCwgMjIyLCAxNzYsIDEsIDIyOCwgMTE3LCAyMjIsIDE3NiwgMSwgMjUxLCAyOCwgMjIyLCAxNzYsIDEsIAorICAgIDI1MCwgMTU3LCAyMjIsIDE3NiwgMSwgMjUxLCAxLCAyMjIsIDE3NiwgMSwgMjUwLCAyNTMsIDIyMiwgMTc2LCAxLCAyNTAsIAorICAgIDE4MSwgMjIyLCAxNzYsIDEsIDI1MCwgMTU1LCAyMjIsIDE3NiwgMSwgMjM5LCAxMTIsIDIyMiwgMTc2LCAxLCAyMjcsIDk0LCAKKyAgICAyMjIsIDE3NiwgMSwgMjUxLCAxNzEsIDIyMiwgMTc2LCAyNTEsIDE5OSwgODEsIDIyMiwgMTc2LCAyMDIsIDE5MSwgODEsIAorICAgIDIyMiwgMTc2LCAyMzYsIDMsIDgxLCAyMjIsIDE3NiwgMjE0LCAyMTEsIDksIDEsIDI0OCwgMjQxLCAzLCA0LCAyMDMsIDE2OSwgCisgICAgNTcsIDksIDEsIDI0OCwgMjQxLCAzLCAyMzQsIDIwNCwgNTYsIDksIDEsIDE5MywgMywgMTIwLCAxOTAsIDU2LCA5LCAxLCAKKyAgICAyMDcsIDEwLCAzLCAxMjAsIDE5MCwgNTYsIDksIDEsIDIzNywgMTM1LCAzLCA3MywgMjQ4LCAyMjgsIDI2LCAxMjYsIDE5MCwgCisgICAgNTYsIDksIDEsIDIxNCwgMTUzLCAzLCA3MywgNTcsIDksIDEsIDIyNSwgOTIsIDMsIDUzLCAxNDgsIDksIDEsIDg0LCAzLCAKKyAgICAxMjYsIDE5MCwgNTYsIDksIDEsIDkwLCAzLCAxMjAsIDE5MCwgMjQ4LCAyMjgsIDI2LCAyMzQsIDIwNCwgNTYsIDksIDEsIAorICAgIDkwLCAzLCAxMjAsIDE5MCwgMjQ4LCAyMjgsIDI2LCA3MywgNTYsIDksIDEsIDIxMywgMTU1LCAzLCAyMjQsIDc0LCA5LCAxLCAKKyAgICAyMDEsIDczLCAzLCA3MywgMjAxLCA0LCA5LCAxLCAyMTIsIDI0NSwgMjAwLCA0NiwgOSwgMSwgMTI4LCAyNTEsIDE0MiwgOSwgCisgICAgMSwgMjQyLCAzMCwgMywgMTI2LCAxOTAsIDU3LCA5LCAxLCAyMTIsIDU3LCAzLCAxMjYsIDE5MCwgNTcsIDksIDEsIDIzNiwgCisgICAgNzcsIDMsIDIyOCwgNTAsIDk3LCA5LCAxLCAyMDgsIDY4LCAyMDEsIDcyLCA5LCAxLCAxOTksIDEwNiwgMywgMjI4LCA1MCwgCisgICAgMjAzLCAxNjksIDU2LCA5LCAxLCAyNTEsIDE3MiwgMywgMTI2LCAxOTAsIDU3LCA5LCAxLCAyMjcsIDg3LCAzLCA3MywgNTcsIAorICAgIDksIDEsIDI0OCwgMjQxLCAzLCA0LCA4NCwgNTYsIDksIDEsIDIxNiwgNTUsIDMsIDQsIDg0LCA1NiwgOSwgMSwgMjA2LCAKKyAgICAxODQsIDMsIDQsIDIwNiwgMTg0LCA1NiwgOSwgMSwgMjEzLCAxNTUsIDMsIDQsIDIxOCwgMjI4LCA1NiwgOSwgMSwgOTAsIDMsIAorICAgIDEyMCwgMTkwLCAyNDgsIDIyOCwgMjYsIDQsIDIxOCwgMjI4LCA1NiwgOSwgMSwgMjUxLCAxOTYsIDIzNywgMTM0LCA5LCAxLCAKKyAgICAyNTEsIDE5NiwgMjE0LCAxNTIsIDksIDEsIDI1MSwgMTk2LCAyMTgsIDIyNywgOSwgNCwgMTIyLCAyMDAsIDIzOCwgMjUwLCAKKyAgICAyNTAsIDksIDQsIDEyMiwgMjEyLCA1NiwgOSwgNCwgMTIyLCAyNTEsIDE3MSwgOSwgNCwgMTIyLCAyMTQsIDE1MiwgOSwgNCwgCisgICAgMTIyLCAyMTgsIDIyOCwgMywgMjI3LCAzNiwgOSwgNCwgMTI4LCAyMTgsIDIyOCwgMywgMjI3LCAzNiwgOSwgNCwgMTIyLCAKKyAgICAyMDAsIDIzOCwgMjUwLCAxNTQsIDksIDQsIDEyMiwgMjAwLCAyMzgsIDI1MCwgMTg3LCA5LCA0LCAxMjIsIDIwMCwgMjM4LCAKKyAgICAyNTEsIDg0LCA5LCA0LCAxMjIsIDIwMCwgMjM4LCAyMTIsIDM3LCA5LCA0LCAxMjIsIDIwMCwgMjM4LCAyMTQsIDExNiwgOSwgCisgICAgNCwgMTIyLCAyMDAsIDIzOCwgMjAxLCA5NSwgOSwgNCwgMTIyLCAyMzYsIDI1MywgMjIyLCAxNDUsIDksIDQsIDEyMiwgMiwgCisgICAgMjEyLCA1MiwgOSwgMjQwLCAyNTEsIDIzOCwgMTcxLCA3NiwgMjUwLCAxMTEsIDksIDIwNCwgMTg1LCAyNDIsIDE4LCA1NywgCisgICAgOSwgMjQyLCAxOTYsIDIzNywgMTU4LCA5LCAyNDIsIDE5NiwgMjQyLCAxNywgOSwgMjQyLCAxOTYsIDIyNywgMzYsIDksIAorICAgIDI0MiwgMTk2LCAyMzcsIDE1NiwgOSwgMjQyLCAxOTYsIDI0MiwgMTUsIDksIDI0MiwgMTk2LCAyMjcsIDM0LCA5LCAxNTAsIAorICAgIDExMiwgNzMsIDU2LCA5LCAxNTAsIDEyMCwgMTkwLCA1NiwgOSwgMTUwLCAyMjQsIDc1LCA1NiwgOSwgMTUwLCAxMTIsIDczLCAKKyAgICA1NywgOSwgMTUwLCAxMjAsIDE5MCwgNTcsIDksIDE1MCwgMjI0LCA3NSwgNTcsIDksIDE3NiwgMjM3LCAxNTYsIDksIDE3NiwgCisgICAgMjQyLCAxNSwgOSwgMTc2LCAyMjcsIDM0LCA5LCA0LCAxMjIsIDIwMSwgNzIsIDksIDIzNywgMTU5LCAzLCAyMTMsIDI2LCA5LCAKKyAgICAyMzcsIDE1OSwgMywgNzMsIDU2LCA5LCAyMjcsIDM3LCAzLCA3MywgNTcsIDksIDQ5LCAyNTAsIDIwMywgNTYsIDksIDUxLCAKKyAgICAyNTAsIDIwMywgNTYsIDksIDQ5LCAyNTAsIDIwMywgNTcsIDksIDUxLCAyNTAsIDIwMywgNTcsIDksIDUzLCA1MSwgMjUwLCAKKyAgICAyMDMsIDU2LCA5LCA1MywgNTEsIDI1MCwgMjAzLCA4OCwgMywgMjQwLCAxODIsIDksIDUxLCAyNTAsIDIwMywgODgsIDMsIAorICAgIDI0MCwgMTgyLCA5LCAyNDIsIDE4LCAzLCAyNDAsIDE4MiwgOSwgMTM0LCAyMDksIDE3MywgMjE4LCAyMjgsIDIzNSwgMTY1LCAKKyAgICA5NCwgMiwgMjI4LCA1MCwgMjQ3LCAxNDksIDk0LCAyLCAyNDcsIDE0OSwgOTQsIDIsIDI1MSwgMzMsIDk0LCAyLCAyMDIsIAorICAgIDIwMywgOTQsIDEsIDIwOSwgMjUwLCA2MiwgOTQsIDEsIDYyLCA5NCwgMSwgMjUyLCAxMzgsIDk0LCAxLCA3MCwgOTQsIDEsIAorICAgIDIyOCwgMTUxLCA5NCwgMSwgNjYsIDk0LCAxLCAyMDMsIDE4MiwgOTQsIDEsIDEwOSwgMTQ2LCA5NCwgMSwgMTA5LCAxNTYsIAorICAgIDk0LCAxLCAyNDcsIDE1MiwgNzIsIDk0LCAxLCAyMDksIDI1MCwgNzIsIDk0LCAxLCA3MiwgOTQsIDEsIDI1MSwgMTc2LCA5NCwgCisgICAgMSwgMjQ3LCAxNTIsIDc0LCA5NCwgMSwgMjA5LCAyNTAsIDc0LCA5NCwgMSwgNzQsIDk0LCAxLCAyNTAsIDEzOSwgOTQsIDEsIAorICAgIDE2MSwgOTQsIDEsIDIyNiwgMjA3LCA5NCwgMSwgMjM2LCA4OSwgOTQsIDEsIDIzNSwgMTk5LCA5NCwgMSwgMjE5LCAyNTMsIAorICAgIDk0LCAxLCAyNDcsIDE5MCwgOTQsIDEsIDI0NywgMzcsIDk0LCAxLCAyMjcsIDI0OCwgOTQsIDEsIDIyNywgMjE1LCA5NCwgMSwgCisgICAgMjE4LCA2MCwgOTQsIDEsIDIwNCwgMjUzLCA5NCwgMSwgMjA0LCAyNDEsIDk0LCAxLCAyNDEsIDIyMCwgOTQsIDEsIDI0MSwgCisgICAgMjA0LCA5NCwgMSwgMjE5LCAyMSwgOTQsIDEsIDIwNywgMzYsIDk0LCAxLCAyMDYsIDEyMiwgOTQsIDEsIDI0MiwgNTgsIDk0LCAKKyAgICAxLCAyNDEsIDEwMCwgOTQsIDEsIDE4OCwgOTQsIDEsIDIxOSwgMywgOTQsIDEsIDE3MiwgOTQsIDEsIDIxNSwgMjQ1LCA5NCwgCisgICAgMSwgMjQ5LCAxMzYsIDk0LCAxLCAyNDgsIDIwMCwgOTQsIDEsIDE3OCwgOTQsIDEsIDE4MywgOTQsIDEsIDIxMywgMjUyLCAKKyAgICA5NCwgMSwgMjEyLCAyMTUsIDk0LCAxLCAxOTQsIDk0LCAxLCAyMjQsIDEzOCwgOTQsIDEsIDIyNCwgMTI5LCA5NCwgMSwgCisgICAgMjAzLCA5MCwgOTQsIDEsIDIxMCwgMTE0LCA5NCwgMSwgMjA4LCAxNzksIDk0LCAxLCAyMTIsIDY0LCA5NCwgMSwgMTQ0LCAKKyAgICA5NCwgMjIsIDIsIDIxNywgMTIxLCA5NCwgMjIsIDIsIDIxNywgNjEsIDk0LCAyLCAyMTgsIDEwMCwgOTQsIDIsIDI1MCwgCisgICAgMTIyLCA5NCwgMjIsIDIsIDI1MiwgMTM4LCA5NCwgMjIsIDIsIDcwLCA5NCwgMjIsIDIsIDIyOCwgMTUxLCA5NCwgMjIsIDIsIAorICAgIDY2LCA5NCwgMjIsIDIsIDIwMywgMTgyLCA5NCwgMjIsIDIsIDEwOSwgMTQ2LCA5NCwgMjIsIDIsIDEwOSwgMjEyLCAyMTYsIAorICAgIDk0LCAyMiwgMiwgMjQ3LCAxNTIsIDcyLCA5NCwgMjIsIDIsIDIwOSwgMjUwLCA3MiwgOTQsIDIyLCAyLCA3MiwgOTQsIDIyLCAKKyAgICAyLCAyNTEsIDE3NiwgOTQsIDIyLCAyLCAyNDcsIDE1MiwgNzQsIDk0LCAyMiwgMiwgMjA5LCAyNTAsIDc0LCA5NCwgMjIsIDIsIAorICAgIDc0LCA5NCwgMjIsIDIsIDI1MCwgMTM5LCA5NCwgMiwgMjAyLCAyMDgsIDk0LCAyMiwgMiwgMjE1LCA2LCA3MiwgOTQsIDIyLCAKKyAgICAyLCAyNTAsIDExNywgOTQsIDIxNywgODYsIDk0LCAyMDgsIDU3LCAyLCAyMDQsIDMzLCA5NCwgMjA4LCA1NywgMiwgMjUxLCAKKyAgICAzNSwgOTQsIDIzNSwgNzQsIDI1MSwgMjUxLCA5NCwgMjUxLCAyMzksIDI1MSwgMjUxLCA5NCwgMjIsIDIsIDI0NywgMTUyLCAKKyAgICAxNjgsIDcyLCA5NCwgMjIsIDIsIDIwNCwgMzEsIDk0LCAyMiwgMiwgMjAzLCAxODEsIDk0LCAxLCAyMTQsIDE1OSwgOTQsIDEsIAorICAgIDIyNiwgMTg4LCA5NCwgMSwgMjM1LCAxNzQsIDk0LCAxLCAxOTksIDExNCwgOTQsIDEsIDI0MSwgMjA5LCA5NCwgMSwgMjEzLCAKKyAgICA5MywgOTQsIDEsIDIzNywgMTk1LCA5NCwgMSwgMTk5LCAxNjYsIDk0LCAxLCAxMDksIDIxMiwgMjE2LCA5NCwgMSwgMTA5LCAKKyAgICAyMjQsIDEzOSwgOTQsIDIyLCAyLCAxMDksIDE1NiwgOTQsIDIyLCAyLCAxMDksIDIyNCwgMTM5LCA5NCwgMjQyLCAxMCwgOTQsIAorICAgIDUzLCAyNDIsIDEwLCA5NCwgMTcsIDE5OSwgODEsIDk0LCAxNywgMTAyLCA5NCwgMTcsIDEwNSwgOTQsIDE3LCAxNDcsIDk0LCAKKyAgICAxNywgMTQ5LCA5NCwgMTcsIDE2NCwgOTQsIDE3LCAxODcsIDk0LCAxNywgMjEwLCAxMzUsIDk0LCAxNywgMTkyLCA5NCwgMTcsIAorICAgIDIxOSwgMTEzLCA5NCwgMjUyLCAzLCA1NCwgOTQsIDIsIDEyMiwgMjA4LCAyNDMsIDI0MCwgMTgyLCA5NCwgMSwgMjQ3LCAKKyAgICAxNTIsIDYyLCA5NCwgMSwgMjE3LCAxMjEsIDk0LCAxLCAyMTcsIDYxLCA5NCwgMSwgMjUwLCAxMTcsIDk0LCAxLCAyMDQsIAorICAgIDMxLCA5NCwgMSwgMjAzLCAxODEsIDk0LCAxLCAyMjIsIDEzOCwgMjQxLCAyMjAsIDk0LCAxLCAxOTksIDc3LCA5NCwgMSwgCisgICAgODAsIDE4MywgOTQsIDEsIDIzNSwgMjM1LCA5NCwgMSwgMjI3LCAxOTQsIDk0LCAxLCAyMzUsIDEyMywgMjA4LCA3NiwgOTQsIAorICAgIDEsIDI0MSwgMjEwLCA5NCwgMSwgMjQ5LCA0NCwgMTg1LCAyNTEsIDYyLCAxODUsIDIsIDI0NywgMTQ5LCAxODUsIDIsIDI1MSwgCisgICAgMzMsIDE4NSwgMiwgMjAyLCAyMDMsIDE4NSwgMSwgNjIsIDE4NSwgMSwgMjUyLCAxMzgsIDE4NSwgMSwgNzAsIDE4NSwgMSwgCisgICAgMjI4LCAxNTEsIDE4NSwgMSwgNjYsIDE4NSwgMSwgMjAzLCAxODIsIDE4NSwgMSwgMTA5LCAxNDYsIDE4NSwgMSwgMTA5LCAKKyAgICAxNTYsIDE4NSwgMSwgNzIsIDE4NSwgMSwgMjUxLCAxNzYsIDE4NSwgMSwgNzQsIDE4NSwgMSwgMjUwLCAxMzksIDE4NSwgMSwgCisgICAgMTYxLCAxODUsIDEsIDIyNiwgMjA3LCAxODUsIDEsIDIzNiwgODksIDE4NSwgMSwgMjM1LCAxOTksIDE4NSwgMSwgMjE5LCAKKyAgICAyNTMsIDE4NSwgMSwgMjQ3LCAxOTAsIDE4NSwgMSwgMjQ3LCAzNywgMTg1LCAxLCAyMjcsIDI0OCwgMTg1LCAxLCAyMjcsIAorICAgIDIxNSwgMTg1LCAxLCAyMTgsIDYwLCAxODUsIDEsIDIwNCwgMjUzLCAxODUsIDEsIDIwNCwgMjQxLCAxODUsIDEsIDI0MSwgCisgICAgMjIwLCAxODUsIDEsIDI0MSwgMjA0LCAxODUsIDEsIDIxOSwgMjEsIDE4NSwgMSwgMjA3LCAzNiwgMTg1LCAxLCAyMDYsIAorICAgIDEyMiwgMTg1LCAxLCAyNDIsIDU4LCAxODUsIDEsIDI0MSwgMTAwLCAxODUsIDEsIDE4OCwgMTg1LCAxLCAxNzIsIDE4NSwgMSwgCisgICAgMjE1LCAyNDUsIDE4NSwgMSwgMjQ5LCAxMzYsIDE4NSwgMSwgMjQ4LCAyMDAsIDE4NSwgMSwgMTc4LCAxODUsIDEsIDE4MywgCisgICAgMTg1LCAxLCAyMTMsIDI1MiwgMTg1LCAxLCAxOTQsIDE4NSwgMSwgMjEwLCAxMTQsIDE4NSwgMSwgMjA4LCAxNzksIDE4NSwgCisgICAgMSwgMjEyLCA2NCwgMTg1LCAxLCAxNDQsIDE4NSwgMiwgMjE4LCAxMDAsIDE4NSwgMiwgMjUwLCAxMjIsIDE4NSwgMjIsIDIsIAorICAgIDI1MiwgMTM4LCAxODUsIDIyLCAyLCA3MCwgMTg1LCAyMiwgMiwgMjI4LCAxNTEsIDE4NSwgMjIsIDIsIDY2LCAxODUsIDIyLCAKKyAgICAyLCAyMDMsIDE4MiwgMTg1LCAyMiwgMiwgMTA5LCAxNDYsIDE4NSwgMjIsIDIsIDEwOSwgMjEyLCAyMTYsIDE4NSwgMjIsIDIsIAorICAgIDcyLCAxODUsIDIyLCAyLCAyNTEsIDE3NiwgMTg1LCAyMiwgMiwgNzQsIDE4NSwgMjIsIDIsIDI1MCwgMTM5LCAxODUsIDIsIAorICAgIDIwMiwgMjA4LCAxODUsIDEsIDIyNiwgMTk4LCAyMDcsIDM2LCAxODUsIDI1MCwgMTQwLCAyMjUsIDIsIDgxLCAxODUsIDEsIAorICAgIDIxMiwgMjE1LCAxODUsIDEsIDIxMywgOTMsIDE4NSwgMSwgMTk5LCAxNjYsIDE4NSwgMSwgMTA5LCAyMTIsIDIxNiwgMTg1LCAKKyAgICAxLCAxMDksIDIyNCwgMTM5LCAxODUsIDIyLCAyLCAxMDksIDE1NiwgMTg1LCAyMiwgMiwgMTA5LCAyMjQsIDEzOSwgMTg1LCAKKyAgICAxNywgMTk5LCA4MSwgMTg1LCAxNywgMTAyLCAxODUsIDE3LCAxMDUsIDE4NSwgMTcsIDE0NywgMTg1LCAxNywgMTQ5LCAxODUsIAorICAgIDE3LCAxNjQsIDE4NSwgMTcsIDE4NywgMTg1LCAxNywgMjEwLCAxMzUsIDE4NSwgMTcsIDE5MiwgMTg1LCAxNywgMjE5LCAKKyAgICAxMTMsIDE4NSwgMSwgMjEzLCAyNTMsIDMsIDEwMSwgMjQxLCA3MCwgMTg1LCAxLCAyMTMsIDI1MywgMywgMjI0LCA1NCwgCisgICAgMjQxLCA3MCwgMTg1LCAyMTIsIDE0OSwgODEsIDE4NSwgMjEyLCAxNDksIDU0LCAxODUsIDI0MiwgMTk1LCAyMTgsIDkyLCAKKyAgICAxMDIsIDE4NSwgMjQyLCAxOTUsIDIxOCwgOTIsIDEwNSwgMTg1LCAyNDIsIDE5NSwgMjE4LCA5MiwgMTQ3LCAxODUsIDI0MiwgCisgICAgMTk1LCAyMTgsIDkyLCAxNDksIDE4NSwgMjQyLCAxOTUsIDIxOCwgOTIsIDExMiwgMjI0LCAyNDIsIDIwNiwgMTEyLCAyMDYsIAorICAgIDEwNywgMjQxLCAxMzAsIDE4NSwgMjQyLCAxOTUsIDI0MSwgMTMxLCAyMDksIDEwMCwgMTg1LCAyMjgsIDEzLCAxODUsIDIzNiwgCisgICAgNTYsIDgxLCAyMzUsIDE4LCAyLCAyNTEsIDIzNCwgMjQ4LCAxNjgsIDIzNSwgMTgsIDIsIDI0OCwgMTY4LCAyMzUsIDE4LCAyLCAKKyAgICAyMDIsIDIwMywgMjM1LCAxOCwgMSwgNjIsIDIzNSwgMTgsIDEsIDI1MiwgMTM4LCAyMzUsIDE4LCAxLCA3MCwgMjM1LCAxOCwgCisgICAgMSwgMjI4LCAxNTEsIDIzNSwgMTgsIDEsIDY2LCAyMzUsIDE4LCAxLCAyMDMsIDE4MiwgMjM1LCAxOCwgMSwgMjM4LCAyNTUsIAorICAgIDIzNSwgMTgsIDEsIDI1MSwgMTc2LCAyMzUsIDE4LCAxLCAyMTcsIDYzLCAyMzUsIDE4LCAxLCAyNTAsIDEzOSwgMjM1LCAxOCwgCisgICAgMSwgMTYxLCAyMzUsIDE4LCAxLCAyMjYsIDIwNywgMjM1LCAxOCwgMSwgMjM2LCA4OSwgMjM1LCAxOCwgMSwgMjM1LCAxOTksIAorICAgIDIzNSwgMTgsIDEsIDIxOSwgMjUzLCAyMzUsIDE4LCAxLCAyNDcsIDE5MCwgMjM1LCAxOCwgMSwgMjQ3LCAzNywgMjM1LCAxOCwgCisgICAgMSwgMjI3LCAyNDgsIDIzNSwgMTgsIDEsIDIyNywgMjE1LCAyMzUsIDE4LCAxLCAyMTgsIDYwLCAyMzUsIDE4LCAxLCAyMDQsIAorICAgIDI1MywgMjM1LCAxOCwgMSwgMjA0LCAyNDEsIDIzNSwgMTgsIDEsIDI0MSwgMjIwLCAyMzUsIDE4LCAxLCAyNDEsIDIwNCwgCisgICAgMjM1LCAxOCwgMSwgMjE5LCAyMSwgMjM1LCAxOCwgMSwgMjA3LCAzNiwgMjM1LCAxOCwgMSwgMjA2LCAxMjIsIDIzNSwgMTgsIAorICAgIDEsIDI0MiwgNTgsIDIzNSwgMTgsIDEsIDI0MSwgMTAwLCAyMzUsIDE4LCAxLCAxODgsIDIzNSwgMTgsIDEsIDE3MiwgMjM1LCAKKyAgICAxOCwgMSwgMjE1LCAyNDUsIDIzNSwgMTgsIDEsIDI0OSwgMTM2LCAyMzUsIDE4LCAxLCAyNDgsIDIwMCwgMjM1LCAxOCwgMSwgCisgICAgMTc4LCAyMzUsIDE4LCAxLCAxODMsIDIzNSwgMTgsIDEsIDIxMywgMjUyLCAyMzUsIDE4LCAxLCAxOTQsIDIzNSwgMTgsIDEsIAorICAgIDIyNCwgMTM4LCAyMzUsIDE4LCAxLCAyMDMsIDkwLCAyMzUsIDE4LCAxLCAyMTAsIDExNCwgMjM1LCAxOCwgMSwgMjEyLCA2NCwgCisgICAgMjM1LCAxOCwgMSwgMTQ0LCAyMzUsIDE4LCAyLCAyMTgsIDEwMCwgMjM1LCAxOCwgMjIsIDIsIDI1MiwgMTM4LCAyMzUsIDE4LCAKKyAgICAyMiwgMiwgNzAsIDIzNSwgMTgsIDIyLCAyLCAyMjgsIDE1MSwgMjM1LCAxOCwgMjIsIDIsIDY2LCAyMzUsIDE4LCAyMiwgMiwgCisgICAgMjAzLCAxODIsIDIzNSwgMTgsIDIyLCAyLCAyMzgsIDI1NSwgMjM1LCAxOCwgMjIsIDIsIDI1MSwgMTc2LCAyMzUsIDE4LCAKKyAgICAyMiwgMiwgMjE3LCA2MywgMjM1LCAxOCwgMjIsIDIsIDI1MCwgMTM5LCAyMzUsIDE4LCAyLCAyMDIsIDIwOCwgMjM1LCAxOCwgCisgICAgMiwgMjA0LCAzNSwgMjM1LCAxOCwgMSwgMjI2LCAxODgsIDIzNSwgMTgsIDEsIDIzNSwgMTc0LCAyMzUsIDE4LCAxLCAxOTksIAorICAgIDExNCwgMjM1LCAxOCwgMSwgMjEyLCAyMTUsIDIzNSwgMTgsIDEsIDIzNywgMTk1LCAyMzUsIDE4LCAxNywgMTk5LCA4MSwgCisgICAgMjM1LCAxOCwgMTcsIDEwMiwgMjM1LCAxOCwgMTcsIDEwNSwgMjM1LCAxOCwgMTcsIDE0NywgMjM1LCAxOCwgMTcsIDE0OSwgCisgICAgMjM1LCAxOCwgMTcsIDE2NCwgMjM1LCAxOCwgMTcsIDE4NywgMjM1LCAxOCwgMTcsIDIxMCwgMTM1LCAyMzUsIDE4LCAxNywgCisgICAgMTkyLCAyMzUsIDE4LCAxNywgMjE5LCAxMTMsIDIzNSwgMTgsIDIwNSwgMjIxLCAyMzUsIDE4LCAyNTEsIDIzMywgMjM1LCAKKyAgICAxOCwgMjI4LCAzMywgMjM1LCAxOCwgMjAzLCAyMTAsIDIzNSwgMTgsIDIzOCwgMjE3LCAyMTcsIDY4LCAyMzUsIDE4LCAyLCAKKyAgICAyMDAsIDg0LCAyMzUsIDMzLCAyLCAyNDcsIDE0OSwgMjM1LCAzMywgMiwgMjUxLCAzMywgMjM1LCAzMywgMiwgMjAyLCAyMDMsIAorICAgIDIzNSwgMzMsIDEsIDYyLCAyMzUsIDMzLCAxLCAyNTIsIDEzOCwgMjM1LCAzMywgMSwgNzAsIDIzNSwgMzMsIDEsIDIyOCwgCisgICAgMTUxLCAyMzUsIDMzLCAxLCA2NiwgMjM1LCAzMywgMSwgMjAzLCAxODIsIDIzNSwgMzMsIDEsIDEwOSwgMTQ2LCAyMzUsIDMzLCAKKyAgICAxLCAxMDksIDE1NiwgMjM1LCAzMywgMjIsIDI0NywgMTUyLCA3MiwgMjM1LCAzMywgMSwgNzIsIDIzNSwgMzMsIDEsIDI1MSwgCisgICAgMTc2LCAyMzUsIDMzLCAyMiwgMjQ3LCAxNTIsIDc0LCAyMzUsIDMzLCAxLCA3NCwgMjM1LCAzMywgMSwgMjUwLCAxMzksIAorICAgIDIzNSwgMzMsIDEsIDE2MSwgMjM1LCAzMywgMSwgMjI2LCAyMDcsIDIzNSwgMzMsIDEsIDIzNiwgODksIDIzNSwgMzMsIDEsIAorICAgIDIzNSwgMTk5LCAyMzUsIDMzLCAxLCAyMTksIDI1MywgMjM1LCAzMywgMSwgMjQ3LCAxOTAsIDIzNSwgMzMsIDEsIDI0NywgCisgICAgMzcsIDIzNSwgMzMsIDEsIDIyNywgMjQ4LCAyMzUsIDMzLCAxLCAyMjcsIDIxNSwgMjM1LCAzMywgMSwgMjE4LCA2MCwgMjM1LCAKKyAgICAzMywgMSwgMjA0LCAyNTMsIDIzNSwgMzMsIDEsIDIwNCwgMjQxLCAyMzUsIDMzLCAxLCAyNDEsIDIyMCwgMjM1LCAzMywgMSwgCisgICAgMjQxLCAyMDQsIDIzNSwgMzMsIDEsIDIxOSwgMjEsIDIzNSwgMzMsIDEsIDIwNywgMzYsIDIzNSwgMzMsIDEsIDIwNiwgMTIyLCAKKyAgICAyMzUsIDMzLCAxLCAyNDIsIDU4LCAyMzUsIDMzLCAxLCAyNDEsIDEwMCwgMjM1LCAzMywgMSwgMTg4LCAyMzUsIDMzLCAxLCAKKyAgICAxNzIsIDIzNSwgMzMsIDEsIDIxNSwgMjQ1LCAyMzUsIDMzLCAxLCAyNDksIDEzNiwgMjM1LCAzMywgMSwgMjQ4LCAyMDAsIAorICAgIDIzNSwgMzMsIDEsIDE3OCwgMjM1LCAzMywgMSwgMTgzLCAyMzUsIDMzLCAxLCAyMTMsIDI1MiwgMjM1LCAzMywgMSwgMTk0LCAKKyAgICAyMzUsIDMzLCAxLCAyMjQsIDEzOCwgMjM1LCAzMywgMSwgMjAzLCA5MCwgMjM1LCAzMywgMSwgMjEwLCAxMTQsIDIzNSwgMzMsIAorICAgIDEsIDIwOCwgMTc5LCAyMzUsIDMzLCAxLCAyMTIsIDY0LCAyMzUsIDMzLCAxLCAxNDQsIDIzNSwgMzMsIDIsIDIxOCwgMTAwLCAKKyAgICAyMzUsIDMzLCAyLCAyNTAsIDEyMiwgMjM1LCAzMywgMjIsIDIsIDI1MiwgMTM4LCAyMzUsIDMzLCAyMiwgMiwgNzAsIDIzNSwgCisgICAgMzMsIDIyLCAyLCAyMjgsIDE1MSwgMjM1LCAzMywgMjIsIDIsIDY2LCAyMzUsIDMzLCAyMiwgMiwgMjAzLCAxODIsIDIzNSwgCisgICAgMzMsIDIyLCAyLCAxMDksIDE0NiwgMjM1LCAzMywgMjIsIDIsIDEwOSwgMjEyLCAyMTYsIDIzNSwgMzMsIDIyLCAyLCAyNDcsIAorICAgIDE1MiwgNzIsIDIzNSwgMzMsIDIyLCAyLCA3MiwgMjM1LCAzMywgMjIsIDIsIDI1MSwgMTc2LCAyMzUsIDMzLCAyMiwgMiwgCisgICAgMjQ3LCAxNTIsIDc0LCAyMzUsIDMzLCAyMiwgMiwgNzQsIDIzNSwgMzMsIDIyLCAyLCAyNTAsIDEzOSwgMjM1LCAzMywgMiwgCisgICAgMjAyLCAyMDgsIDIzNSwgMzMsIDIxNywgODYsIDIzNSwgMzMsIDEsIDEwOSwgMjEyLCAyMTYsIDIzNSwgMzMsIDEsIDEwOSwgCisgICAgMjI0LCAxMzksIDIzNSwgMzMsIDIyLCAyLCAxMDksIDE1NiwgMjM1LCAzMywgMjIsIDIsIDEwOSwgMjI0LCAxMzksIDIzNSwgCisgICAgMzMsIDE3LCAxOTksIDgxLCAyMzUsIDMzLCAxNywgMTAyLCAyMzUsIDMzLCAxNywgMTA1LCAyMzUsIDMzLCAxNywgMTQ3LCAKKyAgICAyMzUsIDMzLCAxNywgMTQ5LCAyMzUsIDMzLCAxNywgMTY0LCAyMzUsIDMzLCAxNywgMTg3LCAyMzUsIDMzLCAxNywgMjEwLCAKKyAgICAxMzUsIDIzNSwgMzMsIDE3LCAxOTIsIDIzNSwgMzMsIDE3LCAyMTksIDExMywgMjM1LCAzMywgMjUyLCAzLCA1NCwgMjM1LCAKKyAgICAzMywgMjEyLCAxNDksIDU0LCAyMzUsIDMzLCAxLCAxOTksIDc3LCAyMTcsIDI0LCAyLCAyNDcsIDE0OSwgMjE3LCAyNCwgMiwgCisgICAgMjUxLCAzMywgMjE3LCAyNCwgMiwgMjAyLCAyMDMsIDIxNywgMjQsIDEsIDYyLCAyMTcsIDI0LCAxLCAyNTIsIDEzOCwgMjE3LCAKKyAgICAyNCwgMSwgNzAsIDIxNywgMjQsIDEsIDIyOCwgMTUxLCAyMTcsIDI0LCAxLCA2NiwgMjE3LCAyNCwgMSwgMjAzLCAxODIsIAorICAgIDIxNywgMjQsIDEsIDEwOSwgMTQ2LCAyMTcsIDI0LCAxLCAxMDksIDE1NiwgMjE3LCAyNCwgMSwgNzIsIDIxNywgMjQsIDEsIAorICAgIDI1MSwgMTc2LCAyMTcsIDI0LCAxLCA3NCwgMjE3LCAyNCwgMSwgMjUwLCAxMzksIDIxNywgMjQsIDEsIDE2MSwgMjE3LCAyNCwgCisgICAgMSwgMjI2LCAyMDcsIDIxNywgMjQsIDEsIDIzNiwgODksIDIxNywgMjQsIDEsIDIzNSwgMTk5LCAyMTcsIDI0LCAxLCAyMTksIAorICAgIDI1MywgMjE3LCAyNCwgMSwgMjQ3LCAxOTAsIDIxNywgMjQsIDEsIDI0NywgMzcsIDIxNywgMjQsIDEsIDIyNywgMjQ4LCAKKyAgICAyMTcsIDI0LCAxLCAyMjcsIDIxNSwgMjE3LCAyNCwgMSwgMjE4LCA2MCwgMjE3LCAyNCwgMSwgMjA0LCAyNTMsIDIxNywgMjQsIAorICAgIDEsIDIwNCwgMjQxLCAyMTcsIDI0LCAxLCAyNDEsIDIyMCwgMjE3LCAyNCwgMSwgMjQxLCAyMDQsIDIxNywgMjQsIDEsIDIxOSwgCisgICAgMjEsIDIxNywgMjQsIDEsIDIwNywgMzYsIDIxNywgMjQsIDEsIDIwNiwgMTIyLCAyMTcsIDI0LCAxLCAyNDIsIDU4LCAyMTcsIAorICAgIDI0LCAxLCAyNDEsIDEwMCwgMjE3LCAyNCwgMSwgMTg4LCAyMTcsIDI0LCAxLCAxNzIsIDIxNywgMjQsIDEsIDIxNSwgMjQ1LCAKKyAgICAyMTcsIDI0LCAxLCAyNDksIDEzNiwgMjE3LCAyNCwgMSwgMjQ4LCAyMDAsIDIxNywgMjQsIDEsIDE3OCwgMjE3LCAyNCwgMSwgCisgICAgMTgzLCAyMTcsIDI0LCAxLCAyMTMsIDI1MiwgMjE3LCAyNCwgMSwgMTk0LCAyMTcsIDI0LCAxLCAyMjQsIDEzOCwgMjE3LCAKKyAgICAyNCwgMSwgMjAzLCA5MCwgMjE3LCAyNCwgMSwgMjEwLCAxMTQsIDIxNywgMjQsIDEsIDIwOCwgMTc5LCAyMTcsIDI0LCAxLCAKKyAgICAyMTIsIDY0LCAyMTcsIDI0LCAxLCAxNDQsIDIxNywgMjQsIDIsIDIxOCwgMTAwLCAyMTcsIDI0LCAyLCAyNTAsIDEyMiwgCisgICAgMjE3LCAyNCwgMjIsIDIsIDI1MiwgMTM4LCAyMTcsIDI0LCAyMiwgMiwgNzAsIDIxNywgMjQsIDIyLCAyLCAyMjgsIDE1MSwgCisgICAgMjE3LCAyNCwgMjIsIDIsIDY2LCAyMTcsIDI0LCAyMiwgMiwgMjAzLCAxODIsIDIxNywgMjQsIDIyLCAyLCAxMDksIDE0NiwgCisgICAgMjE3LCAyNCwgMjIsIDIsIDEwOSwgMjEyLCAyMTYsIDIxNywgMjQsIDIyLCAyLCA3MiwgMjE3LCAyNCwgMjIsIDIsIDI1MSwgCisgICAgMTc2LCAyMTcsIDI0LCAyMiwgMiwgNzQsIDIxNywgMjQsIDIyLCAyLCAyNTAsIDEzOSwgMjE3LCAyNCwgMiwgMjAyLCAyMDgsIAorICAgIDIxNywgMjQsIDI1MSwgMTc3LCAyMjUsIDIsIDgxLCAyMTcsIDI0LCAyNTAsIDE0MCwgMjI1LCAyLCA4MSwgMjE3LCAyNCwgMSwgCisgICAgMjEyLCAyMTUsIDIxNywgMjQsIDEsIDIxMywgOTMsIDIxNywgMjQsIDEsIDE5OSwgMTY2LCAyMTcsIDI0LCAxLCAxMDksIAorICAgIDIxMiwgMjE2LCAyMTcsIDI0LCAxLCAxMDksIDIyNCwgMTM5LCAyMTcsIDI0LCAyMiwgMiwgMTA5LCAxNTYsIDIxNywgMjQsIAorICAgIDIyLCAyLCAxMDksIDIyNCwgMTM5LCAyMTcsIDI0LCAxNywgMTk5LCA4MSwgMjE3LCAyNCwgMTcsIDEwMiwgMjE3LCAyNCwgCisgICAgMTcsIDEwNSwgMjE3LCAyNCwgMTcsIDE0NywgMjE3LCAyNCwgMTcsIDE0OSwgMjE3LCAyNCwgMTcsIDE2NCwgMjE3LCAyNCwgCisgICAgMTcsIDE4NywgMjE3LCAyNCwgMTcsIDIxMCwgMTM1LCAyMTcsIDI0LCAxNywgMTkyLCAyMTcsIDI0LCAxNywgMjE5LCAxMTMsIAorICAgIDIxNywgMjQsIDIyOCwgMTMsIDIxNywgMjQsIDEsIDIwMSwgMTE0LCAyMTcsIDI0LCAyMzYsIDIxOSwgMTEyLCAyMTQsIDg3LCAKKyAgICAyMTcsIDI0LCAyMzYsIDIxOSwgMTEyLCAyMzQsIDIxMywgMjE3LCAyNCwgMjM2LCAyMTksIDEyNiwgMjE0LCA4NSwgMjE3LCAKKyAgICAyNCwgMjM2LCAyMTksIDExMiwgMjA5LCA5OCwgMjE3LCAyNCwgMjM2LCAyMTksIDExMiwgMjM4LCAyMjcsIDIxNywgMjQsIAorICAgIDIzNiwgMjE5LCAxMjYsIDIwOSwgOTcsIDQ1LCAyLCAyNTEsIDMzLCA0NSwgMiwgMjAyLCAyMDMsIDQ1LCAxLCA2MiwgNDUsIAorICAgIDEsIDI1MiwgMTM4LCA0NSwgMSwgNzAsIDQ1LCAxLCAyMjgsIDE1MSwgNDUsIDEsIDY2LCA0NSwgMSwgMjAzLCAxODIsIDQ1LCAKKyAgICAxLCA3MiwgNDUsIDEsIDIzOCwgMjU1LCA0NSwgMSwgMjUxLCAxNzYsIDQ1LCAxLCA3NCwgNDUsIDEsIDIxNywgNjMsIDQ1LCAKKyAgICAxLCAyNTAsIDEzOSwgNDUsIDEsIDE2MSwgNDUsIDEsIDIxOSwgMjUzLCA0NSwgMSwgMjQ3LCAxOTAsIDQ1LCAxLCAyMjcsIAorICAgIDI0OCwgNDUsIDEsIDIxOCwgNjAsIDQ1LCAxLCAyMDQsIDI1MywgNDUsIDEsIDIxOSwgMjEsIDQ1LCAxLCAyMDcsIDM2LCA0NSwgCisgICAgMSwgMTg4LCA0NSwgMSwgMjE5LCAzLCA0NSwgMSwgMTcyLCA0NSwgMSwgMTc4LCA0NSwgMSwgMTgzLCA0NSwgMSwgMjEzLCAKKyAgICAyNTIsIDQ1LCAxLCAyMTIsIDIxNSwgNDUsIDEsIDE5NCwgNDUsIDEsIDIyNCwgMTM4LCA0NSwgMSwgMjI0LCAxMjksIDQ1LCAKKyAgICAxLCAyMDMsIDkwLCA0NSwgMSwgMjEwLCAxMTQsIDQ1LCAxLCAyMDgsIDE3OSwgNDUsIDEsIDIxMiwgNjQsIDQ1LCAxLCAxNDQsIAorICAgIDQ1LCAyMiwgMiwgMjUyLCAxMzgsIDQ1LCAyMiwgMiwgNzAsIDQ1LCAyMiwgMiwgMjI4LCAxNTEsIDQ1LCAyMiwgMiwgNjYsIAorICAgIDQ1LCAyMiwgMiwgMjAzLCAxODIsIDQ1LCAyMiwgMiwgNzIsIDQ1LCAyMiwgMiwgMjM4LCAyNTUsIDQ1LCAyMiwgMiwgMjUxLCAKKyAgICAxNzYsIDQ1LCAyMiwgMiwgNzQsIDQ1LCAyMiwgMiwgMjE3LCA2MywgNDUsIDIyLCAyLCAyNTAsIDEzOSwgNDUsIDIsIDIwMiwgCisgICAgMjA4LCA0NSwgMjE3LCA4NiwgNDUsIDI1MCwgMTQwLCAyMjUsIDIsIDgxLCA0NSwgMTcsIDE5OSwgODEsIDQ1LCAxNywgMTAyLCAKKyAgICA0NSwgMTcsIDEwNSwgNDUsIDE3LCAxNDcsIDQ1LCAxNywgMTQ5LCA0NSwgMTcsIDE2NCwgNDUsIDE3LCAxODcsIDQ1LCAxNywgCisgICAgMjEwLCAxMzUsIDQ1LCAxNywgMTkyLCA0NSwgMTcsIDIxOSwgMTEzLCA0NSwgNDEsIDIwNiwgMTY2LCA0NSwgNDEsIDExMiwgCisgICAgMjMzLCA4MiwgNDUsIDQxLCAxMTIsIDIwNiwgNTAsIDQ1LCAyNDEsIDIzMywgNTQsIDQ1LCAyMjEsIDkwLCA1NCwgNDUsIAorICAgIDIwMCwgNDksIDU0LCA0NSwgMjQxLCAxNzIsIDU0LCA0NSwgMjQyLCAyNDYsIDU0LCA0NSwgMjUwLCAxODksIDg4LCA1NCwgCisgICAgNDUsIDIxMiwgMTQ5LCA1NCwgNDUsIDQxLCA1NCwgMTgwLCAyLCAzOCwgMjQ3LCAxNTAsIDU2LCAxODAsIDIsIDI0NywgMTQ5LCAKKyAgICAxODAsIDIsIDI1MSwgMzMsIDE4MCwgMiwgMjAyLCAyMDMsIDE4MCwgMSwgNjIsIDE4MCwgMSwgMjUyLCAxMzgsIDE4MCwgMSwgCisgICAgNzAsIDE4MCwgMSwgMjI4LCAxNTEsIDE4MCwgMSwgNjYsIDE4MCwgMSwgMjAzLCAxODIsIDE4MCwgMSwgMTA5LCAxNDYsIAorICAgIDE4MCwgMSwgMTA5LCAxNTYsIDE4MCwgMSwgNzIsIDE4MCwgMSwgMjM4LCAyNTUsIDE4MCwgMSwgMjUxLCAxNzYsIDE4MCwgMSwgCisgICAgNzQsIDE4MCwgMSwgMjE3LCA2MywgMTgwLCAxLCAyNTAsIDEzOSwgMTgwLCAxLCAxNjEsIDE4MCwgMSwgMjI2LCAyMDcsIAorICAgIDE4MCwgMSwgMjM2LCA4OSwgMTgwLCAxLCAyMzUsIDE5OSwgMTgwLCAxLCAyMTksIDI1MywgMTgwLCAxLCAyNDcsIDE5MCwgCisgICAgMTgwLCAxLCAyNDcsIDM3LCAxODAsIDEsIDIyNywgMjQ4LCAxODAsIDEsIDIyNywgMjE1LCAxODAsIDEsIDIxOCwgNjAsIAorICAgIDE4MCwgMSwgMjA0LCAyNTMsIDE4MCwgMSwgMjA0LCAyNDEsIDE4MCwgMSwgMjQxLCAyMjAsIDE4MCwgMSwgMjQxLCAyMDQsIAorICAgIDE4MCwgMSwgMjE5LCAyMSwgMTgwLCAxLCAyMDcsIDM2LCAxODAsIDEsIDIwNiwgMTIyLCAxODAsIDEsIDI0MiwgNTgsIDE4MCwgCisgICAgMSwgMjQxLCAxMDAsIDE4MCwgMSwgMTg4LCAxODAsIDEsIDE3MiwgMTgwLCAxLCAyMTUsIDI0NSwgMTgwLCAxLCAyNDksIAorICAgIDEzNiwgMTgwLCAxLCAyNDgsIDIwMCwgMTgwLCAxLCAxNzgsIDE4MCwgMSwgMTgzLCAxODAsIDEsIDIxMywgMjUyLCAxODAsIAorICAgIDEsIDIxMiwgMjE1LCAxODAsIDEsIDE5NCwgMTgwLCAxLCAyMjQsIDEzOCwgMTgwLCAxLCAyMjQsIDEyOSwgMTgwLCAxLCAKKyAgICAyMDMsIDkwLCAxODAsIDEsIDIxMCwgMTE0LCAxODAsIDEsIDIwOCwgMTc5LCAxODAsIDEsIDIxMiwgNjQsIDE4MCwgMSwgCisgICAgMTQ0LCAxODAsIDIsIDI1MCwgMTIyLCAxODAsIDIyLCAyLCAyNTIsIDEzOCwgMTgwLCAyMiwgMiwgNzAsIDE4MCwgMjIsIDIsIAorICAgIDIyOCwgMTUxLCAxODAsIDIyLCAyLCA2NiwgMTgwLCAyMiwgMiwgMjAzLCAxODIsIDE4MCwgMjIsIDIsIDEwOSwgMTQ2LCAKKyAgICAxODAsIDIyLCAyLCAxMDksIDIxMiwgMjE2LCAxODAsIDIyLCAyLCA3MiwgMTgwLCAyMiwgMiwgMjM4LCAyNTUsIDE4MCwgMjIsIAorICAgIDIsIDI1MSwgMTc2LCAxODAsIDIyLCAyLCA3NCwgMTgwLCAyMiwgMiwgMjE3LCA2MywgMTgwLCAyMiwgMiwgMjUwLCAxMzksIAorICAgIDE4MCwgMiwgMjAyLCAyMDgsIDE4MCwgMjI1LCAyLCA4MSwgMTgwLCAyNTEsIDE3NywgMjI1LCAyLCA4MSwgMTgwLCAxLCAKKyAgICAyMDUsIDMyLCAxODAsIDEsIDIzOSwgOTMsIDE4MCwgMSwgMjEyLCAxOTYsIDE4MCwgMSwgMTA5LCAyMTIsIDIxNiwgMTgwLCAKKyAgICAxLCAxMDksIDIyNCwgMTM5LCAxODAsIDIyLCAyLCAxMDksIDE1NiwgMTgwLCAyMiwgMiwgMTA5LCAyMjQsIDEzOSwgMTgwLCAKKyAgICAxNywgMTk5LCA4MSwgMTgwLCAxNywgMTAyLCAxODAsIDE3LCAxMDUsIDE4MCwgMTcsIDE0NywgMTgwLCAxNywgMTQ5LCAxODAsIAorICAgIDE3LCAxNjQsIDE4MCwgMTcsIDE4NywgMTgwLCAxNywgMjEwLCAxMzUsIDE4MCwgMTcsIDE5MiwgMTgwLCAxNywgMjE5LCAKKyAgICAxMTMsIDE4MCwgMjM2LCAyMTksIDE3LCAxOTksIDgyLCAzNiwgMjE3LCAxMjUsIDIxNSwgNTAsIDc2LCAxNDksIDE4MCwgCisgICAgMjM2LCAyMTksIDE3LCAxMTIsIDM2LCAyMTcsIDEyNSwgMjE1LCA1MCwgNzYsIDE0OSwgMTgwLCAyMzYsIDIxOSwgMTcsIAorICAgIDEyMCwgMzYsIDIxNywgMTI1LCAyMTUsIDUwLCA3NiwgMTQ5LCAxODAsIDIzNiwgMjE5LCAxNywgMTI2LCAzNiwgMjE3LCAKKyAgICAxMjUsIDIxNSwgNTAsIDc2LCAxNDksIDE4MCwgMjM2LCAyMTksIDE3LCAxMTIsIDM2LCAyMzgsIDU2LCAyMTUsIDUwLCA3NiwgCisgICAgMTQ5LCAxODAsIDIzNiwgMjE5LCAxNywgMTIwLCAzNiwgMjM4LCA1NiwgMjE1LCA1MCwgNzYsIDE0OSwgMTgwLCAyMzYsIAorICAgIDIxOSwgMTcsIDEyNiwgMzYsIDIzOCwgNTYsIDIxNSwgNTAsIDc2LCAxNDksIDE4MCwgMiwgMjA0LCAxNzUsIDIyNywgNjMsIAorICAgIDIsIDIwOCwgMjQzLCAyNDcsIDE0OSwgMjI3LCA2MywgMiwgMjQ3LCAxNDksIDIyNywgNjMsIDIsIDI1MSwgMzMsIDIyNywgCisgICAgNjMsIDIsIDIwMiwgMjAzLCAyMjcsIDYzLCAxLCA2MiwgMjI3LCA2MywgMSwgMjUyLCAxMzgsIDIyNywgNjMsIDEsIDcwLCAKKyAgICAyMjcsIDYzLCAxLCAyMjgsIDE1MSwgMjI3LCA2MywgMSwgNjYsIDIyNywgNjMsIDEsIDIwMywgMTgyLCAyMjcsIDYzLCAxLCAKKyAgICAxMDksIDE0NiwgMjI3LCA2MywgMSwgMTA5LCAxNTYsIDIyNywgNjMsIDEsIDcyLCAyMjcsIDYzLCAxLCAyMzgsIDI1NSwgCisgICAgMjI3LCA2MywgMSwgMjUxLCAxNzYsIDIyNywgNjMsIDEsIDc0LCAyMjcsIDYzLCAxLCAyMTcsIDYzLCAyMjcsIDYzLCAxLCAKKyAgICAyNTAsIDEzOSwgMjI3LCA2MywgMSwgMTYxLCAyMjcsIDYzLCAxLCAyMjYsIDIwNywgMjI3LCA2MywgMSwgMjM2LCA4OSwgCisgICAgMjI3LCA2MywgMSwgMjM1LCAxOTksIDIyNywgNjMsIDEsIDIxOSwgMjUzLCAyMjcsIDYzLCAxLCAyNDcsIDE5MCwgMjI3LCAKKyAgICA2MywgMSwgMjQ3LCAzNywgMjI3LCA2MywgMSwgMjI3LCAyNDgsIDIyNywgNjMsIDEsIDIyNywgMjE1LCAyMjcsIDYzLCAxLCAKKyAgICAyMTgsIDYwLCAyMjcsIDYzLCAxLCAyMDQsIDI1MywgMjI3LCA2MywgMSwgMjA0LCAyNDEsIDIyNywgNjMsIDEsIDI0MSwgCisgICAgMjIwLCAyMjcsIDYzLCAxLCAyNDEsIDIwNCwgMjI3LCA2MywgMSwgMjE5LCAyMSwgMjI3LCA2MywgMSwgMjA3LCAzNiwgMjI3LCAKKyAgICA2MywgMSwgMjA2LCAxMjIsIDIyNywgNjMsIDEsIDI0MiwgNTgsIDIyNywgNjMsIDEsIDI0MSwgMTAwLCAyMjcsIDYzLCAxLCAKKyAgICAxODgsIDIyNywgNjMsIDEsIDE3MiwgMjI3LCA2MywgMSwgMjE1LCAyNDUsIDIyNywgNjMsIDEsIDI0OSwgMTM2LCAyMjcsIAorICAgIDYzLCAxLCAyNDgsIDIwMCwgMjI3LCA2MywgMSwgMTc4LCAyMjcsIDYzLCAxLCAxODMsIDIyNywgNjMsIDEsIDIxMywgMjUyLCAKKyAgICAyMjcsIDYzLCAxLCAyMTIsIDIxNSwgMjI3LCA2MywgMSwgMTk0LCAyMjcsIDYzLCAxLCAyMjQsIDEzOCwgMjI3LCA2MywgMSwgCisgICAgMjAzLCA5MCwgMjI3LCA2MywgMSwgMjEwLCAxMTQsIDIyNywgNjMsIDEsIDIwOCwgMTc5LCAyMjcsIDYzLCAxLCAyMTIsIDY0LCAKKyAgICAyMjcsIDYzLCAxLCAxNDQsIDIyNywgNjMsIDIsIDIxOCwgMTAwLCAyMjcsIDYzLCAyLCAyNTAsIDEyMiwgMjI3LCA2MywgMjIsIAorICAgIDIsIDI1MiwgMTM4LCAyMjcsIDYzLCAyMiwgMiwgNzAsIDIyNywgNjMsIDIyLCAyLCAyMjgsIDE1MSwgMjI3LCA2MywgMjIsIAorICAgIDIsIDY2LCAyMjcsIDYzLCAyMiwgMiwgMjAzLCAxODIsIDIyNywgNjMsIDIyLCAyLCAxMDksIDE0NiwgMjI3LCA2MywgMjIsIAorICAgIDIsIDEwOSwgMjEyLCAyMTYsIDIyNywgNjMsIDIyLCAyLCA3MiwgMjI3LCA2MywgMjIsIDIsIDIzOCwgMjU1LCAyMjcsIDYzLCAKKyAgICAyMiwgMiwgMjUxLCAxNzYsIDIyNywgNjMsIDIyLCAyLCA3NCwgMjI3LCA2MywgMjIsIDIsIDIxNywgNjMsIDIyNywgNjMsIAorICAgIDIyLCAyLCAyNTAsIDEzOSwgMjI3LCA2MywgMiwgMjAyLCAyMDgsIDIyNywgNjMsIDIyNSwgMiwgODEsIDIyNywgNjMsIDI1MSwgCisgICAgMTc3LCAyMjUsIDIsIDgxLCAyMjcsIDYzLCAxLCAyMzcsIDE5NSwgMjI3LCA2MywgMSwgMTA5LCAyMTIsIDIxNiwgMjI3LCAKKyAgICA2MywgMSwgMTA5LCAyMjQsIDEzOSwgMjI3LCA2MywgMjIsIDIsIDEwOSwgMTU2LCAyMjcsIDYzLCAyMiwgMiwgMTA5LCAyMjQsIAorICAgIDEzOSwgMjI3LCA2MywgMTcsIDE5OSwgODEsIDIyNywgNjMsIDE3LCAxMDIsIDIyNywgNjMsIDE3LCAxMDUsIDIyNywgNjMsIAorICAgIDE3LCAxNDcsIDIyNywgNjMsIDE3LCAxNDksIDIyNywgNjMsIDE3LCAxNjQsIDIyNywgNjMsIDE3LCAxODcsIDIyNywgNjMsIAorICAgIDE3LCAyMTAsIDEzNSwgMjI3LCA2MywgMTcsIDE5MiwgMjI3LCA2MywgMTcsIDIxOSwgMTEzLCAyMjcsIDYzLCAyLCAyMjcsIAorICAgIDIwMSwgMjI3LCA2MywgMiwgMjAzLCAyMjYsIDE0MiwgMiwgMjQ3LCAxNDksIDE0MiwgMiwgMjUxLCAzMywgMTQyLCAyLCAKKyAgICAyMDIsIDIwMywgMTQyLCAxLCA2MiwgMTQyLCAxLCAyNTIsIDEzOCwgMTQyLCAxLCA3MCwgMTQyLCAxLCAyMjgsIDE1MSwgCisgICAgMTQyLCAxLCA2NiwgMTQyLCAxLCAyMDMsIDE4MiwgMTQyLCAxLCAxMDksIDE0NiwgMTQyLCAxLCAxMDksIDE1NiwgMTQyLCAxLCAKKyAgICA3MiwgMTQyLCAxLCAyMzgsIDI1NSwgMTQyLCAxLCAyNTEsIDE3NiwgMTQyLCAxLCA3NCwgMTQyLCAxLCAyMTcsIDYzLCAxNDIsIAorICAgIDEsIDI1MCwgMTM5LCAxNDIsIDEsIDE2MSwgMTQyLCAxLCAyMjYsIDIwNywgMTQyLCAxLCAyMzYsIDg5LCAxNDIsIDEsIDIzNSwgCisgICAgMTk5LCAxNDIsIDEsIDIxOSwgMjUzLCAxNDIsIDEsIDI0NywgMTkwLCAxNDIsIDEsIDI0NywgMzcsIDE0MiwgMSwgMjI3LCAKKyAgICAyNDgsIDE0MiwgMSwgMjI3LCAyMTUsIDE0MiwgMSwgMjE4LCA2MCwgMTQyLCAxLCAyMDQsIDI1MywgMTQyLCAxLCAyMDQsIAorICAgIDI0MSwgMTQyLCAxLCAyNDEsIDIyMCwgMTQyLCAxLCAyNDEsIDIwNCwgMTQyLCAxLCAyMTksIDIxLCAxNDIsIDEsIDIwNywgCisgICAgMzYsIDE0MiwgMSwgMjA2LCAxMjIsIDE0MiwgMSwgMjQyLCA1OCwgMTQyLCAxLCAyNDEsIDEwMCwgMTQyLCAxLCAxODgsIAorICAgIDE0MiwgMSwgMjE5LCAzLCAxNDIsIDEsIDE3MiwgMTQyLCAxLCAyMTUsIDI0NSwgMTQyLCAxLCAyNDksIDEzNiwgMTQyLCAxLCAKKyAgICAyNDgsIDIwMCwgMTQyLCAxLCAxNzgsIDE0MiwgMSwgMTgzLCAxNDIsIDEsIDIxMywgMjUyLCAxNDIsIDEsIDIxMiwgMjE1LCAKKyAgICAxNDIsIDEsIDE5NCwgMTQyLCAxLCAyMjQsIDEzOCwgMTQyLCAxLCAyMjQsIDEyOSwgMTQyLCAxLCAyMDMsIDkwLCAxNDIsIDEsIAorICAgIDIxMCwgMTE0LCAxNDIsIDEsIDIwOCwgMTc5LCAxNDIsIDEsIDIxMiwgNjQsIDE0MiwgMSwgMTQ0LCAxNDIsIDEsIDIwNCwgCisgICAgMjIyLCAxNDIsIDIsIDI1MCwgMTIyLCAxNDIsIDIyLCAyLCAyNTIsIDEzOCwgMTQyLCAyMiwgMiwgNzAsIDE0MiwgMjIsIDIsIAorICAgIDIyOCwgMTUxLCAxNDIsIDIyLCAyLCA2NiwgMTQyLCAyMiwgMiwgMjAzLCAxODIsIDE0MiwgMjIsIDIsIDEwOSwgMTQ2LCAKKyAgICAxNDIsIDIyLCAyLCAxMDksIDIxMiwgMjE2LCAxNDIsIDIyLCAyLCA3MiwgMTQyLCAyMiwgMiwgMjM4LCAyNTUsIDE0MiwgMjIsIAorICAgIDIsIDI1MSwgMTc2LCAxNDIsIDIyLCAyLCA3NCwgMTQyLCAyMiwgMiwgMjE3LCA2MywgMTQyLCAyMiwgMiwgMjUwLCAxMzksIAorICAgIDE0MiwgMiwgMjAyLCAyMDgsIDE0MiwgMSwgNzMsIDIxMywgMTI5LCAxNDIsIDIsIDIxNiwgMTI5LCAxNDIsIDEsIDI0NiwgCisgICAgMjI1LCAyMjMsIDI0MywgMTQyLCAxLCAyNDYsIDIyNSwgMjAwLCAxMjMsIDE0MiwgMSwgMjQ2LCAyMjUsIDIyNCwgMTMwLCAKKyAgICAxNDIsIDI1MCwgMTQwLCAyMjUsIDIsIDgxLCAxNDIsIDIzNiwgMjE5LCAxMTIsIDIxNywgNzQsIDE0MiwgMjM2LCAyMTksIAorICAgIDExMiwgMjM2LCAyMzcsIDE0MiwgMjM2LCAyMTksIDEyNiwgMjM4LCAyMjQsIDE0MiwgMjM2LCAyMTksIDExMiwgMjA0LCAKKyAgICAxNjIsIDE0MiwgMjM2LCAyMTksIDExMiwgMjA2LCAxNTcsIDE0MiwgMjM2LCAyMTksIDEyNiwgMjA0LCAxNjEsIDE0MiwgCisgICAgMjM2LCAyMTksIDExMiwgMjM3LCAxMDcsIDE0MiwgMSwgMjUwLCAyMzQsIDIyOCwgMTUxLCAxNDIsIDEsIDEwOSwgMjEyLCAKKyAgICAyMTYsIDE0MiwgMSwgMTA5LCAyMjQsIDEzOSwgMTQyLCAyMiwgMiwgMTA5LCAxNTYsIDE0MiwgMjIsIDIsIDEwOSwgMjI0LCAKKyAgICAxMzksIDE0MiwgMTcsIDE5OSwgODEsIDE0MiwgMTcsIDEwMiwgMTQyLCAxNywgMTA1LCAxNDIsIDE3LCAxNDcsIDE0MiwgMTcsIAorICAgIDE0OSwgMTQyLCAxNywgMTY0LCAxNDIsIDE3LCAxODcsIDE0MiwgMTcsIDIxMCwgMTM1LCAxNDIsIDE3LCAxOTIsIDE0MiwgCisgICAgMTcsIDIxOSwgMTEzLCAxNDIsIDQxLCAyMDYsIDE2NiwgMTQyLCA0MSwgMTEyLCAyMzMsIDgyLCAxNDIsIDQxLCAxMTIsIAorICAgIDIwNiwgNTAsIDE0MiwgMjM2LCAyMTksIDExMiwgMjE0LCA4NywgMTQyLCAyMzYsIDIxOSwgMTEyLCAyMzQsIDIxMywgMTQyLCAKKyAgICAyMzYsIDIxOSwgMTI2LCAyMTQsIDg1LCAxNDIsIDIzNiwgMjE5LCAxMTIsIDIwOSwgOTgsIDE0MiwgMjM2LCAyMTksIDExMiwgCisgICAgMjM4LCAyMjcsIDE0MiwgMjM2LCAyMTksIDEyNiwgMjA5LCA5NywgMTQyLCAyNDEsIDIzOCwgODEsIDE0MiwgMSwgMjQ2LCAKKyAgICAyMjUsIDIxOSwgMjIsIDE0MiwgMSwgMjQ2LCAyMjUsIDIyMCwgMjE0LCAxNDIsIDEsIDI0NiwgMjI1LCAyMTIsIDIxNiwgCisgICAgMTQyLCAxLCAyNDYsIDIyNSwgMTU2LCAxNDIsIDEsIDI0NiwgMjI1LCAyMjQsIDEzOSwgMTQyLCAxLCAyNDYsIDIyNSwgMjI3LCAKKyAgICAxMTgsIDE0MywgMiwgMjUxLCAzMiwgMTQzLCAyLCAyMDIsIDIwMiwgMTQzLCAxLCAyNTAsIDExMCwgMTQzLCAxLCAyNTIsIAorICAgIDkyLCAxNDMsIDEsIDI1MSwgMjAxLCAxNDMsIDEsIDI1MSwgMjE2LCAxNDMsIDEsIDIyOCwgMiwgMTQzLCAxLCAyMjgsIDE1MCwgCisgICAgMTQzLCAxLCAyMDMsIDE3MywgMTQzLCAxLCAyMDMsIDE3NiwgMTQzLCAxLCAyMjgsIDI4LCAxNDMsIDEsIDIyOCwgMjksIAorICAgIDE0MywgMSwgMjI4LCAxMzYsIDE0MywgMSwgMjI4LCAxMzgsIDE0MywgMSwgMjM4LCAyNSwgMTQzLCAxLCAyMzgsIDI1MCwgCisgICAgMTQzLCAxLCAyNTEsIDE2MSwgMTQzLCAxLCAyMTYsIDIyOSwgMTQzLCAxLCAyMTcsIDU2LCAxNDMsIDEsIDI1MCwgMTI1LCAKKyAgICAxNDMsIDEsIDI1MSwgMTE1LCAyMjcsIDEzLCAxNDMsIDEsIDIyMiwgMjA1LCAyMjcsIDEzLCAxNDMsIDEsIDI1MSwgMTE1LCAKKyAgICAyMzYsIDM1LCAxNDMsIDEsIDIyMiwgMjA1LCAyMzYsIDM1LCAxNDMsIDEsIDIyNywgNjIsIDIyMCwgMTU0LCAxNDMsIDEsIAorICAgIDIxMiwgNSwgMjM2LCAzNSwgMTQzLCAxLCAyNTEsIDExNSwgMjQ3LCAxMDIsIDE0MywgMSwgMjIyLCAyMDUsIDI0NywgMTAyLCAKKyAgICAxNDMsIDEsIDI1MSwgMTE1LCAyMjcsIDIzMCwgMTQzLCAxLCAyMjIsIDIwNSwgMjI3LCAyMzAsIDE0MywgMSwgMjA3LCAyOSwgCisgICAgMjIwLCAxNTQsIDE0MywgMSwgMjA3LCAyOSwgMjEyLCA0LCAyMjAsIDE1NSwgMTQzLCAxLCAyMTIsIDUsIDIyNywgMjMwLCAKKyAgICAxNDMsIDEsIDI1MSwgMTE1LCAyMDQsIDI0OSwgMTQzLCAxLCAyMjIsIDIwNSwgMjA0LCAyNDksIDE0MywgMSwgMjUxLCAxMTUsIAorICAgIDI0MSwgMjExLCAxNDMsIDEsIDIyMiwgMjA1LCAyNDEsIDIxMSwgMTQzLCAxLCAyMjAsIDI0MiwgMjIwLCAxMDgsIDE0MywgMSwgCisgICAgMjEyLCA1LCAyNDEsIDIxMSwgMTQzLCAxLCAyNTEsIDExNSwgMjA2LCAyMDksIDE0MywgMSwgMjIyLCAyMDUsIDIwNiwgMjA5LCAKKyAgICAxNDMsIDEsIDI1MSwgMTE1LCAyNDEsIDIzMSwgMTQzLCAxLCAyMjIsIDIwNSwgMjQxLCAyMzEsIDE0MywgMSwgMjQyLCA2LCAKKyAgICAyMjAsIDEwOCwgMTQzLCAxLCAyMTIsIDUsIDI0MSwgMjMxLCAxNDMsIDEsIDI1MSwgMTE1LCAyMTYsIDgxLCAxNDMsIDEsIAorICAgIDIyMiwgMjA1LCAyMTYsIDgxLCAxNDMsIDEsIDI1MSwgMTE1LCAyNDksIDQ2LCAxNDMsIDEsIDIyMiwgMjA1LCAyNDksIDQ2LCAKKyAgICAxNDMsIDEsIDIyMiwgMTE4LCAxNDMsIDEsIDI1MSwgOTUsIDI0OSwgNDYsIDE0MywgMSwgMjAwLCA1NiwgMTQzLCAxLCAyMTMsIAorICAgIDE5NiwgMTQzLCAxLCAyNDIsIDYsIDIyNSwgNDksIDE0MywgMSwgMjAzLCA2MSwgMTQzLCAxLCAyMDcsIDI5LCAyMTEsIDIzMywgCisgICAgMTQzLCAxLCAyMjAsIDI0MiwgMjExLCAyMzMsIDE0MywgMSwgMjQyLCA2LCAyMTEsIDIzMywgMTQzLCAxLCAyMzQsIDE0NSwgCisgICAgMTQzLCAxLCAyMjAsIDI0MiwgMjI1LCA0OSwgMTQzLCAxLCAyMzcsIDE0OSwgMTQzLCAyLCAyNTEsIDE1MCwgMTQzLCAyMiwgCisgICAgMiwgMjUxLCAyMTEsIDE0MywgMjIsIDIsIDIyNiwgMjMyLCAyNTEsIDIxOCwgMTQzLCAyMiwgMiwgMjQxLCA0MywgMjUxLCAKKyAgICAyMTgsIDE0MywgMjIsIDIsIDIyNiwgMjMyLCAyMjgsIDI1LCAxNDMsIDIyLCAyLCAyNDEsIDQzLCAyMjgsIDI1LCAxNDMsIAorICAgIDIyLCAyLCAyMjYsIDIzMiwgMjE2LCAyMDksIDE0MywgMjIsIDIsIDI0MSwgNDMsIDIxNiwgMjA5LCAxNDMsIDIyLCAyLCAKKyAgICAyMzYsIDc4LCAxNDMsIDIyLCAyLCAyMjYsIDczLCAxNDMsIDIyLCAyLCAyNDEsIDQzLCAyMjYsIDczLCAxNDMsIDIyLCAyLCAKKyAgICAyMjYsIDc1LCAyNDEsIDE1MCwgMTQzLCAyMiwgMiwgMjI2LCA3NCwgMjM0LCAyMzQsIDI1MSwgMjExLCAxNDMsIDIyLCAyLCAKKyAgICAyMjYsIDc0LCAyMzQsIDIzNCwgMjQxLCA0MywgMjUxLCAyMTEsIDE0MywgMjIsIDIsIDIyNiwgNzQsIDIzNCwgMjM0LCAyMzYsIAorICAgIDM0LCAxNDMsIDIyLCAyLCAyMzYsIDM0LCAxNDMsIDIyNCwgMTUxLCAxNywgMTk5LCA4MSwgMTQzLCAyMjQsIDE1MSwgMTcsIAorICAgIDEwMiwgMTQzLCAyMjQsIDE1MSwgMTcsIDEwNSwgMTQzLCAyMjQsIDE1MSwgMTcsIDE0NywgMTQzLCAyMjQsIDE1MSwgMTcsIAorICAgIDE0OSwgMTQzLCAyMjQsIDE1MSwgMTcsIDE2NCwgMTQzLCAyMjQsIDE1MSwgMTcsIDE4NywgMTQzLCAyMjQsIDE1MSwgMTcsIAorICAgIDIxMCwgMTM1LCAxNDMsIDIyNCwgMTUxLCAxNywgMTkyLCAxNDMsIDIyNCwgMTUxLCAxNywgMjE5LCAxMTMsIDE0MywgMjIsIAorICAgIDIsIDI0MSwgNDMsIDIzNiwgNzgsIDE0MywgMjIsIDIsIDI0MSwgNDMsIDIzNiwgMzQsIDE0MywgMjE0LCAyMTIsIDIyNiwgMCwgCisgICAgMjA2LCAxMTcsIDE3MSwgMjI2LCA4OSwgMjI3LCA4MiwgMjA2LCAxMTcsIDE3MSwgMjI2LCAxNzksIDIyNiwgMjAyLCAyMDYsIAorICAgIDExNywgMTcxLCAyMjYsIDE3OSwgMjI2LCAxNzEsIDIwNiwgMTE3LCAxNzEsIDIyNiwgMTc5LCAyMjYsIDE2NiwgMjA2LCAKKyAgICAxMTcsIDE3MSwgMjI2LCAxNzksIDIyNiwgMTc1LCAyMDYsIDExNywgMTcxLCAyMjYsIDE3OSwgMjEzLCAyMTcsIDIwNiwgCisgICAgMTE3LCAxNzEsIDIxOSwgMTc5LCAyMTksIDE2NiwgMjA2LCAxMTcsIDE3MSwgMjQ2LCAyMTEsIDI0NywgMjYsIDIwNiwgMTE3LCAKKyAgICAxNzEsIDI0NiwgMjExLCAyNDYsIDIyMSwgMjA2LCAxMTcsIDE3MSwgMjQ2LCAyMTEsIDI0NywgMjUsIDIwNiwgMTE3LCAxNzEsIAorICAgIDIwOSwgMzAsIDIwOSwgMjksIDIwNiwgMTE3LCAxNzEsIDI0NiwgMjExLCAyNDYsIDIwNywgMjA2LCAxMTcsIDE3MSwgMTk5LCAKKyAgICAyNDYsIDE5OSwgMjUzLCAyMDYsIDExNywgMTcxLCAyNDAsIDIxMiwgMjQ3LCAzNCwgMjA2LCAxMTcsIDE3MSwgMjA1LCAxODYsIAorICAgIDIxNiwgOTIsIDIwNiwgMTE3LCAxNzEsIDIwNiwgNjIsIDIwNiwgMTExLCAyMDYsIDExNywgMTcxLCAyMDYsIDYyLCAyMjAsIAorICAgIDEzMSwgMjA2LCAxMTcsIDE3MSwgMjA2LCA2MiwgMjE1LCAyMDcsIDIwNiwgMTE3LCAxNzEsIDIxOCwgMjQyLCAyMjAsIDI0LCAKKyAgICAyMDYsIDExNywgMTcxLCAyNDAsIDIxMiwgMjQxLCAxNTEsIDIwNiwgMTE3LCAxNzEsIDIwNSwgMTg2LCAyMDYsIDIzNywgCisgICAgMjA2LCAxMTcsIDE3MSwgMjA2LCA2MiwgMjA2LCAyOSwgMjA2LCAxMTcsIDE3MSwgMjA2LCA2MiwgMjA2LCAxMTgsIDIwNiwgCisgICAgMTE3LCAxNzEsIDIwNiwgNjIsIDIwNiwgNTcsIDIwNiwgMTE3LCAxNzEsIDIxOCwgMjQyLCAyMTgsIDEzMywgMjA2LCAxMTcsIAorICAgIDE3MSwgMjQ4LCAxMjUsIDI0OSwgMTAyLCAyMDYsIDExNywgMTcxLCAyMTUsIDEwNywgMjE1LCAxMzUsIDIwNiwgMTE3LCAKKyAgICAxNzEsIDIxNSwgMjE4LCAyMTUsIDIwOSwgMjA2LCAxMTcsIDE3MSwgMjM3LCAxNCwgMjM3LCAxOTUsIDIwNiwgMTE3LCAxNzEsIAorICAgIDIxNSwgMjE4LCAyMTUsIDIzOCwgMjA2LCAxMTcsIDE3MSwgMjM3LCAxNCwgMjM3LCAxNjgsIDIwNiwgMTE3LCAxNzEsIDIxNSwgCisgICAgMjE4LCAyMTIsIDE3LCAyMDYsIDExNywgMTcxLCAyMjEsIDEzNywgMTc4LCAyMDYsIDExNywgMTcxLCAxOTksIDI0NiwgMjAwLCAKKyAgICA4NSwgMjA2LCAxMTcsIDE3MSwgMjEzLCAyLCAyMTIsIDE3NCwgMjA2LCAxMTcsIDE3MSwgMjEyLCAxNzUsIDIwNiwgMTE3LCAKKyAgICAxNzEsIDIyNCwgMTExLCAyMjQsIDE2OSwgMjA2LCAxMTcsIDE3MSwgMjI0LCA0MiwgMjA2LCAxMTcsIDE3MSwgMjAxLCAxLCAKKyAgICAyMDEsIDEwOSwgMjA2LCAxMTcsIDE3MSwgMjA5LCAzMCwgMjEyLCAzMywgMjA2LCAxMTcsIDE3MSwgMjA5LCAzMCwgMjEyLCAKKyAgICAxNDUsIDIwNiwgMTE3LCAxNzEsIDIwOSwgMzAsIDIwOCwgMjMsIDIwNiwgMTE3LCAxNzEsIDIzMywgMjA4LCAyMzQsIDQ4LCAKKyAgICAyMDYsIDExNywgMTcxLCAyMjQsIDExMSwgMjQ2LCAxOTEsIDIwNiwgMTE3LCAxNzEsIDE2MywgMjUxLCA3NiwgMjA2LCAxMTcsIAorICAgIDE3MSwgMjMzLCAyMDgsIDIxOCwgMjM3LCAyMDYsIDExNywgMTcxLCAyMTYsIDE4NiwgMjA2LCAxMTcsIDE3MSwgMjExLCAKKyAgICAyNTUsIDYyLCAyMDYsIDExNywgMTcxLCAyMjIsIDE5OSwgMjM0LCAyMDEsIDIwNiwgMTE3LCAxNzEsIDIxMSwgMjU1LCAyNTIsIAorICAgIDEzOCwgMjA2LCAxMTcsIDE3MSwgMjExLCAyNTUsIDI1MSwgMTAxLCAyMDYsIDExNywgMTcxLCAyMTEsIDI1NSwgNzAsIDIwNiwgCisgICAgMTE3LCAxNzEsIDIxMSwgMjU1LCAyMjgsIDE1MSwgMjA2LCAxMTcsIDE3MSwgMjExLCAyNTUsIDIwNCwgMzEsIDIwNiwgMTE3LCAKKyAgICAxNzEsIDIxMSwgMjU1LCAyMDQsIDI5LCAyMDYsIDExNywgMTcxLCAyMTEsIDI1NSwgNjYsIDIwNiwgMTE3LCAxNzEsIDIxMSwgCisgICAgMjU1LCAyMDMsIDE4MiwgMjA2LCAxMTcsIDE3MSwgMjE1LCAyMjAsIDIwNiwgMTE3LCAyNDIsIDE5NSwgMTYsIDI0OSwgMTAzLCAKKyAgICAyMDYsIDExNywgMTcxLCAyMTEsIDI1NSwgNzIsIDIwNiwgMTE3LCAxNzEsIDIxMSwgMjU1LCAyNTEsIDIyMSwgMjA2LCAxMTcsIAorICAgIDE3MSwgMjExLCAyNTUsIDc0LCAyMDYsIDExNywgMTcxLCAyMTEsIDI1NSwgMjUxLCAxNzcsIDIyMiwgMTkzLCAyMDYsIDExNywgCisgICAgMTcxLCAyMTEsIDI1NSwgMjUxLCAxNzcsIDIyMiwgMTk0LCAyMDYsIDExNywgMTcxLCAyMjUsIDk1LCAyMDYsIDExNywgMTcxLCAKKyAgICAyMjIsIDE5MCwgMjA2LCAxMTcsIDE3MSwgMjIyLCAxOTEsIDIwNiwgMTE3LCAxNzEsIDIyMiwgMTk5LCAyMzgsIDIxNiwgCisgICAgMjA2LCAxMTcsIDE3MSwgMjIyLCAxOTksIDIwNiwgNjEsIDIwNiwgMTE3LCAxNzEsIDIyMiwgMTk5LCAyMDUsIDEwMSwgMjA2LCAKKyAgICAxMTcsIDE3MSwgMjIyLCAxOTksIDI0NywgMTMsIDIwNiwgMTE3LCAxNzEsIDIwNiwgMTA5LCAyMDYsIDExNywgMTcxLCAyMTksIAorICAgIDEyMiwgMjA2LCAxMTcsIDE3MSwgMjAwLCA3OSwgMjA2LCAxMTcsIDE3MSwgMjM3LCA0LCAyMDYsIDExNywgMTcsIDE5OSwgCisgICAgODEsIDIwNiwgMTE3LCAxNywgMTAyLCAyMDYsIDExNywgMTcsIDEwNSwgMjA2LCAxMTcsIDE3LCAxNDcsIDIwNiwgMTE3LCAKKyAgICAxNywgMTQ5LCAyMDYsIDExNywgMTcsIDE2NCwgMjA2LCAxMTcsIDE3LCAxODcsIDIwNiwgMTE3LCAxNywgMjEwLCAxMzUsIAorICAgIDIwNiwgMTE3LCAxNywgMTkyLCAyMDYsIDExNywgMTcsIDIxOSwgMTEzLCAyMDYsIDExNywgMTcxLCAyNTEsIDcyLCAyMDYsIAorICAgIDExNywgMTcxLCAyMjYsIDE3NiwgMjI1LCA3NSwgMSwgMjI2LCA4OCwgMjI1LCA3NSwgMSwgMjI2LCAxNzksIDIwNywgMjI1LCAKKyAgICAyMjUsIDc1LCAxLCAyMjYsIDE3OSwgMjA2LCAyNDYsIDIyNSwgNzUsIDEsIDIxOSwgMTc4LCAyMjUsIDc1LCAxLCAyNDYsIAorICAgIDkxLCAyMjUsIDc1LCAxLCAyMDksIDMwLCAyMDYsIDI0NiwgMjI1LCA3NSwgMSwgMjE4LCAyNiwgMjI1LCA3NSwgMSwgMjQwLCAKKyAgICAyMTEsIDIyNSwgNzUsIDEsIDEzOCwgMjI1LCA3NSwgMSwgMjA2LCA2MiwgMjA3LCAyMjUsIDIyNSwgNzUsIDEsIDIwNiwgNjIsIAorICAgIDIwNiwgMjQ2LCAyMjUsIDc1LCAxLCAyMTgsIDI0MSwgMjI1LCA3NSwgMSwgMjQ4LCAxMjQsIDIyNSwgNzUsIDEsIDIxNSwgCisgICAgMTA2LCAyMjUsIDc1LCAxLCAyMTUsIDIxOCwgMjA3LCAyMjUsIDIyNSwgNzUsIDEsIDIzNywgMTQsIDIwNiwgMjQ2LCAyMjUsIAorICAgIDc1LCAxLCAyMTUsIDIxOCwgMjA2LCAyNDYsIDIyNSwgNzUsIDEsIDIzNywgMTQsIDIwNywgMjI1LCAyMjUsIDc1LCAxLCAKKyAgICAyMjEsIDEzNiwgMjI1LCA3NSwgMSwgMTk5LCAyNDUsIDIyNSwgNzUsIDEsIDIyNCwgMTExLCAyMjQsIDE2OSwgMjI1LCA3NSwgCisgICAgMSwgMjI0LCAxMTEsIDIyNCwgNzIsIDIyNSwgNzUsIDEsIDIwMSwgMCwgMjI1LCA3NSwgMSwgMjA5LCAzMCwgMjA3LCAyMjUsIAorICAgIDIyNSwgNzUsIDEsIDIzMywgMjA4LCAyMDcsIDIyNSwgMjI1LCA3NSwgMSwgNzQsIDIyNSwgNzUsIDEsIDIzMywgMjA4LCAKKyAgICAyMDYsIDI0NiwgMjI1LCA3NSwgMjM4LCAxOTUsIDIyNSwgNzUsIDIyLCAyLCA2MiwgMjI1LCA3NSwgMjIsIDIsIDIyMiwgCisgICAgMTk5LCAyMjcsIDY4LCAyMjUsIDc1LCAyMiwgMiwgMjUyLCAxMzgsIDIyNSwgNzUsIDIyLCAyLCAyNTEsIDEwMSwgMjI1LCAKKyAgICA3NSwgMjIsIDIsIDcwLCAyMjUsIDc1LCAyMiwgMiwgMjI4LCAxNTEsIDIyNSwgNzUsIDIyLCAyLCAyMDAsIDEyMywgMjI1LCAKKyAgICA3NSwgMjIsIDIsIDE5OSwgMTY3LCAyMjUsIDc1LCAyMiwgMiwgNjYsIDIyNSwgNzUsIDIyLCAyLCAyMDMsIDE4MiwgMjI1LCAKKyAgICA3NSwgMjIsIDIsIDIyMiwgMTk5LCAyMjYsIDcxLCAyMjUsIDc1LCAyMTAsIDE2MiwgMiwgMjI0LCAxMTAsIDIyNSwgNzUsIAorICAgIDIxMCwgMTYyLCAyLCAyMTgsIDI2LCAyMjUsIDc1LCAyMiwgMiwgNzIsIDIyNSwgNzUsIDIyLCAyLCAyMzgsIDIzNCwgMjI1LCAKKyAgICA3NSwgMjIsIDIsIDc0LCAyMjUsIDc1LCAyMiwgMiwgMjUwLCAxMTIsIDIyNSwgNzUsIDIyLCAyLCAyNTEsIDE3NiwgMjI1LCAKKyAgICA3NSwgMjI2LCA4OSwgMTk0LCAyMjUsIDc1LCAxNTAsIDIyMiwgMTk5LCAyMzgsIDIxNiwgMjI1LCA3NSwgMTUwLCAyMjIsIAorICAgIDE5OSwgMjA2LCA2MSwgMjI1LCA3NSwgMTUwLCAyMjIsIDE5OSwgMjA2LCAxNSwgMjI1LCA3NSwgMTUwLCAyMjIsIDE5OSwgCisgICAgMjQ3LCAxMTAsIDIyNSwgNzUsIDI0NywgMTU1LCA4MSwgMjI1LCA3NSwgMjE5LCAxMzEsIDIyNSwgNzUsIDE3LCAxOTksIDgxLCAKKyAgICAyMjUsIDc1LCAxNywgMTAyLCAyMjUsIDc1LCAxNywgMTA1LCAyMjUsIDc1LCAxNywgMTQ3LCAyMjUsIDc1LCAxNywgMTQ5LCAKKyAgICAyMjUsIDc1LCAxNywgMTY0LCAyMjUsIDc1LCAxNywgMTg3LCAyMjUsIDc1LCAxNywgMjEwLCAxMzUsIDIyNSwgNzUsIDE3LCAKKyAgICAxOTIsIDIyNSwgNzUsIDE3LCAyMTksIDExMywgMjI1LCA3NSwgMjMzLCAyMDgsIDIxOCwgMjQxLCAyMjUsIDc1LCAyMzMsIAorICAgIDIwOCwgMjIxLCAxMzYsIDIyNSwgNzUsIDEsIDIyNiwgMTgwLCAyMzUsIDExNiwgMjI1LCA3NSwgMSwgMjI2LCAxODAsIDIxOCwgCisgICAgMjYsIDc5LCA1LCAyMTcsIDg2LCA3OSwgMTM0LCAyMzUsIDUyLCAyMDAsIDEsIDIyMSwgMjI5LCAyMDUsIDM4LCA2MiwgNzksIAorICAgIDEzNCwgMjM1LCA1MiwgMjAwLCAxLCAyMjEsIDIyOSwgMjU1LCAxMzUsIDIxMywgNiwgMjQ5LCAxMCwgMTc4LCA3OSwgMTM0LCAKKyAgICAyMzUsIDUyLCAyMDAsIDEsIDIyMSwgMjI5LCAyNTUsIDEzNSwgMjM1LCA1MiwgMjA1LCAxOCwgMTc4LCA3OSwgMTM0LCA4MiwgCisgICAgMjAwLCAxLCAyMjEsIDIyOSwgMjIyLCA3OCwgMTc4LCA3OSwgMTM0LCAyNDYsIDEwNiwgMjAwLCAxLCAyMjEsIDIyOSwgMjEwLCAKKyAgICAxMjEsIDE3OCwgNzksIDEzNCwgMjQ3LCAxMzAsIDIwMCwgMSwgMjIxLCAyMjksIDIxNSwgMjA4LCAyMTAsIDEwNywgMTc4LCAKKyAgICA3OSwgMTM0LCAyMDAsIDEsIDIyMSwgMjI5LCAyMDUsIDE4LCAyMTAsIDEwNywgMTc4LCA3OSwgMTM0LCAyMTEsIDIzMSwgCisgICAgMjEwLCAxMDYsIDc5LCAxMzQsIDI0OCwgMzksIDIwMCwgMSwgMjIxLCAyMjgsIDc5LCAxMzQsIDI0OCwgMTQ2LCAyMTAsIDQsIAorICAgIDIwMCwgMSwgMjIxLCAyMjgsIDc5LCAxMzQsIDIyOCwgNTQsIDIwNSwgMTcsIDc5LCAxMzQsIDI0MSwgMTQzLCAyMDUsIDE4LCAKKyAgICAyNDgsIDM4LCA3OSwgMTM0LCAyMTAsIDEwNiwgNzksIDEzNCwgMjE4LCAzMSwgMjEwLCAxMDYsIDc5LCAxMzQsIDIwNSwgMTgsIAorICAgIDIxMCwgMTA2LCA3OSwgMTM0LCAyMTgsIDMxLCAyMDUsIDE4LCAyMTAsIDEwNiwgNzksIDEzNCwgMjEzLCAyOSwgMjQ2LCAKKyAgICAyNTAsIDIwOCwgMTk2LCAyMTAsIDEwNiwgNzksIDEzNCwgMjEzLCA5NywgMjM1LCA4NSwgMjEwLCAxMDYsIDc5LCAxMzQsIAorICAgIDI0NywgMTMwLCAyNTUsIDEzOSwgMjEyLCAxNzksIDIyMiwgNzcsIDE2OCwgMjQ3LCAxNTgsIDc5LCAxMzQsIDIzNSwgNTIsIAorICAgIDIwNSwgMTcsIDc5LCAyMjQsIDk2LCAyLCAyNDcsIDM1LCAyMTIsIDE3OCwgNzksIDIyNCwgOTYsIDIsIDIyNCwgMjIxLCAKKyAgICAyMTIsIDE3OCwgNzksIDI1MCwgMTYxLCAyLCAyMTAsIDExNywgMjM2LCAxOCwgMjU1LCAxNDAsIDIxMiwgMTc4LCA3OSwgCisgICAgMjUwLCAxNjEsIDIsIDI1NSwgMTM3LCAxNzIsIDc5LCAyNTAsIDE2MSwgMiwgMjExLCAyMDMsIDIwNSwgMTIsIDc5LCAyLCAKKyAgICAyMTMsIDE5MiwgMjQwLCAyMjUsIDIzNiwgMTcsIDc5LCAyLCAyMTMsIDE5MiwgMjQwLCAyMjUsIDIzNSwgMTE4LCA3OSwgMiwgCisgICAgMjEzLCAxOTIsIDI0MCwgMjI1LCAyMzUsIDUzLCA3OSwgMiwgMjEzLCAxOTIsIDIyMCwgMTUwLCAyMzYsIDE3LCA3OSwgMiwgCisgICAgMjEzLCAxOTIsIDIyMCwgMTUwLCAyMzUsIDExOCwgNzksIDIsIDIxMywgMTkyLCAyNDAsIDIyNSwgMjEzLCAxOTIsIDIyMCwgCisgICAgMTQ5LCA3OSwgMTcsIDE5OSwgODEsIDc5LCAxNywgMTAyLCA3OSwgMTcsIDEwNSwgNzksIDE3LCAxNDcsIDc5LCAxNywgMTQ5LCAKKyAgICA3OSwgMTcsIDE2NCwgNzksIDE3LCAxODcsIDc5LCAxNywgMjEwLCAxMzUsIDc5LCAxNywgMTkyLCA3OSwgMTcsIDIxOSwgCisgICAgMTEzLCA3OSwgMTcsIDE2NywgMTAyLCA3OSwgMTcsIDE2NywgMTA1LCA3OSwgMTcsIDE2NywgMTQ3LCA3OSwgMTcsIDE2NywgCisgICAgMTQ5LCA3OSwgMTcsIDE2NywgMTY0LCA3OSwgMTcsIDE2NywgMTg3LCA3OSwgMTcsIDE2NywgMjEwLCAxMzUsIDc5LCAxNywgCisgICAgMTY3LCAxOTIsIDc5LCAxNywgMTY3LCAyMTksIDExMywgNzksIDE3LCAxNjcsIDE5OSwgODEsIDc5LCAxMzQsIDI0OCwgNDEsIAorICAgIDIxMiwgMTc4LCA3OSwgMTM0LCAyMTksIDI0NCwgMjQ3LCAyMjUsIDIxOCwgNDIsIDE5OSwgMTYsIDc5LCAxMzQsIDI0NywgCisgICAgMTMwLCAyNTUsIDEzOSwgMjEyLCAxNzksIDI0NywgMjI2LCAyMjEsIDE4MiwgMjQ3LCAxNTgsIDc5LCAxMzQsIDIxOSwgMjQ0LCAKKyAgICAyNDcsIDIyNSwgMjEwLCAxMTgsIDIxMiwgMTc4LCA3OSwgMTM0LCAyNDcsIDksIDIyMSwgMjI4LCA3OSwgMTM0LCAyMDUsIAorICAgIDMzLCAyNTUsIDEzNiwgNzksIDEzNCwgMjM1LCAzNSwgMjEyLCAxNzksIDIzNCwgMjUwLCA3OSwgMTM0LCAyMzUsIDM1LCAKKyAgICAyMTIsIDE3OSwgMjM1LCAwLCA3OSwgMTM0LCAyNTEsIDc3LCAyMjYsIDE5NywgMjM0LCAyNTAsIDc5LCAxMzQsIDI1MSwgNzcsIAorICAgIDIyNiwgMTk3LCAyMzUsIDAsIDc5LCAyLCAyMDAsIDcxLCAyMDUsIDE2LCA3OSwgMiwgMjIyLCAxNTksIDIwNSwgMTYsIDc5LCAKKyAgICAxLCAxNjEsIDc5LCAxLCAyMjYsIDIwNywgNzksIDEsIDIzNiwgODksIDc5LCAxLCAyMzUsIDE5OSwgNzksIDEsIDIxOSwgCisgICAgMjUzLCA3OSwgMSwgMjQ3LCAxOTAsIDc5LCAxLCAyNDcsIDM3LCA3OSwgMSwgMjI3LCAyNDgsIDc5LCAxLCAyMTgsIDYwLCAKKyAgICA3OSwgMSwgMjA0LCAyNTMsIDc5LCAxLCAyMDQsIDI0MSwgNzksIDEsIDI0MSwgMjIwLCA3OSwgMSwgMjQxLCAyMDQsIDc5LCAKKyAgICAxLCAyMTksIDIxLCA3OSwgMSwgMjA3LCAzNiwgNzksIDEsIDIwNiwgMTIyLCA3OSwgMSwgMjQyLCA1OCwgNzksIDEsIDI0MSwgCisgICAgMTAwLCA3OSwgMSwgMTg4LCA3OSwgMSwgMTcyLCA3OSwgMSwgMjE1LCAyNDUsIDc5LCAxLCAyNDksIDEzNiwgNzksIDEsIAorICAgIDI0OCwgMjAwLCA3OSwgMSwgMTc4LCA3OSwgMSwgMjA1LCAzMiwgNzksIDEsIDIwNSwgMjIsIDc5LCAxLCAyMzksIDkzLCA3OSwgCisgICAgMSwgMjM5LCA4NywgNzksIDEsIDIwMSwgMTE0LCA3OSwgMSwgMTk5LCA3NywgNzksIDEsIDE5OSwgMTE0LCA3OSwgMSwgMjU1LCAKKyAgICAxNDIsIDc5LCAxLCAxODMsIDc5LCAxLCAyMTMsIDI1MiwgNzksIDEsIDE5NCwgNzksIDEsIDIxMCwgMTE0LCA3OSwgMSwgCisgICAgMjA4LCAxNzksIDc5LCAxLCAyMTIsIDY0LCA3OSwgMSwgMTQ0LCA3OSwgMSwgNjIsIDc5LCAxLCAyMjYsIDI5LCA3OSwgMSwgCisgICAgMjM3LCA1NywgMjEzLCAyNTIsIDc5LCAxLCAyMjYsIDEwOSwgNzksIDEsIDIxMiwgMjE1LCA3OSwgMjIsIDIsIDI1MiwgMTM4LCAKKyAgICA3OSwgMjIsIDIsIDcwLCA3OSwgMjIsIDIsIDIyOCwgMTUxLCA3OSwgMjIsIDIsIDY2LCA3OSwgMjIsIDIsIDIwMywgMTgyLCAKKyAgICA3OSwgMjIsIDIsIDEwOSwgMTQ2LCA3OSwgMjIsIDIsIDEwOSwgMjEyLCAyMTYsIDc5LCAyMiwgMiwgMTA5LCAxNTYsIDc5LCAKKyAgICAyMiwgMiwgMTA5LCAyMjQsIDEzOSwgNzksIDIyLCAyLCA3MiwgNzksIDIyLCAyLCAyMzgsIDI1NSwgNzksIDIyLCAyLCA3NCwgCisgICAgNzksIDIyLCAyLCAyMTcsIDYzLCA3OSwgMiwgMjEzLCAxMiwgMjA4LCAyNSwgMjE5LCAyNTQsIDIxMywgMSwgNzksIDIsIAorICAgIDIxMywgNiwgMjQ5LCA5LCA3OSwgMjIsIDIsIDIxMywgMTA1LCA3MCwgNzksIDIyLCAyLCAyMTMsIDEwNSwgMjI4LCAxNTEsIAorICAgIDc5LCAyLCAyMTgsIDQyLCAxOTksIDE3LCAyMjAsIDE1OCwgMjQyLCA1OCwgNzksIDIsIDIwOSwgNDQsIDIyNSwgNDIsIDc5LCAKKyAgICAxMzQsIDIzNCwgMjE1LCA3OSwgMTM0LCAyMTYsIDE3MywgNzksIDIsIDIyNSwgNDUsIDIxMiwgMTc4LCA3OSwgMiwgMjAwLCAKKyAgICA3NiwgMjEyLCAxNzgsIDc5LCAyLCAyMjUsIDQ2LCAyMDUsIDMzLCAyNDcsIDE1OCwgNzksIDIsIDIyMiwgODAsIDI0NywgCisgICAgMTU4LCA3OSwgMiwgMjM1LCA1NiwgMjQ3LCAxNTksIDIxMywgOTUsIDc5LCAyLCAyMzUsIDU2LCAyMjIsIDcwLCAyMTMsIDk1LCAKKyAgICA3OSwgMiwgMjI4LCA1MCwgMjIyLCA4MCwgMjQ3LCAxNTgsIDc5LCAyMDgsIDEyLCAyLCAyMjUsIDQ2LCAyMDUsIDMzLCAyNDcsIAorICAgIDE1OCwgNzksIDIwOCwgMTIsIDIsIDIyMiwgODAsIDI0NywgMTU4LCA3OSwgMjA4LCAxMiwgMiwgMjI4LCA1MCwgMjIyLCA4MCwgCisgICAgMjQ3LCAxNTgsIDc5LCAyMDgsIDEyLCAxLCAxNjEsIDc5LCAyMDgsIDEyLCAxLCAyMjYsIDIwNywgNzksIDIwOCwgMTIsIDEsIAorICAgIDIzNiwgODksIDc5LCAyMDgsIDEyLCAxLCAyMzUsIDE5OSwgNzksIDIwOCwgMTIsIDEsIDIxOSwgMjUzLCA3OSwgMjA4LCAxMiwgCisgICAgMSwgMjQ3LCAxOTAsIDc5LCAyMDgsIDEyLCAxLCAyNDcsIDM3LCA3OSwgMjA4LCAxMiwgMSwgMjI3LCAyNDgsIDc5LCAyMDgsIAorICAgIDEyLCAxLCAyMTgsIDYwLCA3OSwgMjA4LCAxMiwgMSwgMjA0LCAyNTMsIDc5LCAyMDgsIDEyLCAxLCAyMDQsIDI0MSwgNzksIAorICAgIDIwOCwgMTIsIDEsIDI0MSwgMjIwLCA3OSwgMjA4LCAxMiwgMSwgMjQxLCAyMDQsIDc5LCAyMDgsIDEyLCAxLCAyMTksIDIxLCAKKyAgICA3OSwgMjA4LCAxMiwgMSwgMjA3LCAzNiwgNzksIDIwOCwgMTIsIDEsIDIwNiwgMTIyLCA3OSwgMjA4LCAxMiwgMSwgMjQyLCAKKyAgICA1OCwgNzksIDIwOCwgMTIsIDEsIDI0MSwgMTAwLCA3OSwgMjA4LCAxMiwgMSwgMTg4LCA3OSwgMjA4LCAxMiwgMSwgMTcyLCAKKyAgICA3OSwgMjA4LCAxMiwgMSwgMjE1LCAyNDUsIDc5LCAyMDgsIDEyLCAxLCAyNDksIDEzNiwgNzksIDIwOCwgMTIsIDEsIDI0OCwgCisgICAgMjAwLCA3OSwgMjA4LCAxMiwgMSwgMTc4LCA3OSwgMjA4LCAxMiwgMSwgMjA1LCAzMiwgNzksIDIwOCwgMTIsIDEsIDIwNSwgCisgICAgMjIsIDc5LCAyMDgsIDEyLCAxLCAyMzksIDkzLCA3OSwgMjA4LCAxMiwgMSwgMjM5LCA4NywgNzksIDIwOCwgMTIsIDEsIAorICAgIDIwMSwgMTE0LCA3OSwgMjA4LCAxMiwgMSwgMTk5LCA3NywgNzksIDIwOCwgMTIsIDEsIDE5OSwgMTE0LCA3OSwgMjA4LCAxMiwgCisgICAgMSwgMjU1LCAxNDIsIDc5LCAyMDgsIDEyLCAxLCAxODMsIDc5LCAyMDgsIDEyLCAxLCAyMTMsIDI1MiwgNzksIDIwOCwgMTIsIAorICAgIDEsIDE5NCwgNzksIDIwOCwgMTIsIDEsIDIxMCwgMTE0LCA3OSwgMjA4LCAxMiwgMSwgMjA4LCAxNzksIDc5LCAyMDgsIDEyLCAKKyAgICAxLCAyMTIsIDY0LCA3OSwgMjA4LCAxMiwgMSwgMTQ0LCA3OSwgMjA4LCAxMiwgMSwgNjIsIDc5LCAyMDgsIDEyLCAxLCAyMjYsIAorICAgIDI5LCA3OSwgMjA4LCAxMiwgMSwgMjM3LCA1NywgMjAxLCAxMTQsIDc5LCAyMDgsIDEyLCAxLCAyMzcsIDU3LCAxODMsIDc5LCAKKyAgICAyMDgsIDEyLCAxLCAyMzcsIDU3LCAyMTMsIDI1MiwgNzksIDIyNiwgMTYsIDIxMiwgMTc2LCAyMjYsIDIwNywgNzksIDIyNiwgCisgICAgMTYsIDIxMiwgMTc2LCAyMjYsIDIwOCwgMjQ3LCAyMjYsIDIyMSwgMTgyLCAyNDcsIDE1OCwgNzksIDI0NywgMTQ1LCAyLCAKKyAgICA4MCwgMjQ5LCAxLCA3OSwgMjQ3LCAxNDUsIDIsIDE2MiwgMjQ5LCAxLCA3OSwgMjQ3LCAxNDUsIDIsIDI0NywgMTQ3LCAyMDYsIAorICAgIDE5OSwgNzksIDI0NywgMTQ1LCAyLCAyMTEsIDIzMCwgMjU1LCAxNDEsIDc5LCAxNiwgMjM5LCAxNTIsIDI0OCwgMzYsIDc5LCAKKyAgICAxNiwgMjEzLCAxOTEsIDIxMywgMTMsIDc5LCAxNiwgMjE2LCAxOTcsIDIzNiwgMTYsIDc5LCAxNiwgMjEzLCAxOTEsIDIxMywgCisgICAgMTQsIDIxMywgOTcsIDIzNSwgODQsIDc5LCAxNiwgMjE1LCAyMDgsIDE3MiwgNzksIDE2LCAyMTgsIDIyNCwgMjQ4LCAzNiwgCisgICAgNzksIDE2LCAyMTgsIDIyNCwgMjQ4LCAzNywgMjE4LCAzMSwgMjU1LCAxMzgsIDc5LCAxNiwgMjE4LCAyMjQsIDI0OCwgMzcsIAorICAgIDIzNSwgNTQsIDI1NSwgMTM4LCA3OSwgMTYsIDIxOCwgMjI0LCAyNDgsIDM3LCAyNDcsIDIyNiwgMjU1LCAxMzgsIDc5LCAyLCAKKyAgICAyMTMsIDE5MiwgMjIwLCAxNTAsIDIxMywgMTkyLCAyNDAsIDIyNCwgNzksIDIsIDIxMywgMTkyLCAyMjAsIDE1MCwgMjM1LCAKKyAgICA1MywgNzksIDEzNCwgMjQ4LCA0MCwgMjEwLCA0LCAyMzUsIDE2MiwgMjIxLCAyMjksIDIxMywgOTYsIDc5LCAxMzQsIDIyMSwgCisgICAgMTM4LCAyMDAsIDEsIDIzNSwgMTYyLCAyMjEsIDIyOSwgMjEzLCA5NiwgNzksIDEzNCwgMjE4LCAzMSwgMjA1LCAxNywgNzksIAorICAgIDEzNCwgODIsIDI0OCwgNjMsIDIxMywgMywgMjAwLCAxLCAyMjEsIDIyOSwgMjIyLCA3OCwgMTc4LCA3OSwgMTM0LCAyNDYsIAorICAgIDEwNiwgMjQ4LCA2MywgMjEzLCAzLCAyMDAsIDEsIDIyMSwgMjI5LCAyMTAsIDEyMSwgMTc4LCAyMTMsIDQ1LCAyMDcsIDE4OCwgCisgICAgNTQsIDIyNSwgMjcsIDIwNywgMTg4LCA1NCwgMjEzLCA0NSwgMjA3LCAxODgsIDIsIDMsIDI0MCwgMTgwLCAyMjUsIDI3LCAKKyAgICAyMDcsIDE4OCwgMiwgMywgMjQwLCAxODAsIDc5LCAxMzQsIDIyNSwgMzcsIDIyMiwgODEsIDIxMiwgMTc4LCA3OSwgMTM0LCAKKyAgICAyMDUsIDEyNSwgMjIyLCA4MSwgMjEyLCAxNzgsIDcxLCAxLCAxNjEsIDcxLCAxLCAyMjYsIDIwNywgNzEsIDEsIDIzNiwgODksIAorICAgIDcxLCAxLCAyMzUsIDE5OSwgNzEsIDEsIDIxOSwgMjUzLCA3MSwgMSwgMjQ3LCAxOTAsIDcxLCAxLCAyNDcsIDM3LCA3MSwgMSwgCisgICAgMjI3LCAyNDgsIDcxLCAxLCAyMjcsIDIxNSwgNzEsIDEsIDIxOCwgNjAsIDcxLCAxLCAyMTgsIDI0MywgNzEsIDEsIDIwNCwgCisgICAgMjUzLCA3MSwgMSwgMjA0LCAyNDEsIDcxLCAxLCAyNDEsIDIyMCwgNzEsIDEsIDI0MSwgMjA0LCA3MSwgMSwgMjE5LCAyMSwgCisgICAgNzEsIDEsIDIwNywgMzYsIDcxLCAxLCAyMDYsIDEyMiwgNzEsIDEsIDI0MiwgNTgsIDcxLCAxLCAyNDEsIDEwMCwgNzEsIDEsIAorICAgIDE4OCwgNzEsIDEsIDE3MiwgNzEsIDEsIDIxNSwgMjQ1LCA3MSwgMSwgMjQ5LCAxMzYsIDcxLCAxLCAyNDgsIDIwMCwgNzEsIAorICAgIDEsIDE3OCwgNzEsIDEsIDE4MywgNzEsIDEsIDIxMywgMjUyLCA3MSwgMSwgMTk0LCA3MSwgMSwgMjAxLCAxMTQsIDcxLCAxLCAKKyAgICAyMTIsIDY0LCA3MSwgMSwgMTQ0LCA3MSwgMSwgMjI0LCAxMzgsIDcxLCAxLCA2MiwgNzEsIDEsIDIxMCwgOTAsIDYyLCA3MSwgCisgICAgMSwgNzAsIDcxLCAxLCAyMjgsIDE1MSwgNzEsIDEsIDY2LCA3MSwgMSwgMjAzLCAxODIsIDcxLCAxLCA3MiwgNzEsIDEsIAorICAgIDIyMSwgMTA3LCA3MiwgNzEsIDEsIDc0LCA3MSwgMSwgMjUwLCAxMzksIDcxLCAyMiwgMiwgMjA2LCAyNDgsIDI1MiwgMTM4LCAKKyAgICA3MSwgMjIsIDIsIDI1MiwgMTM4LCA3MSwgMjIsIDIsIDcwLCA3MSwgMjIsIDIsIDIyOCwgMTUxLCA3MSwgMjIsIDIsIDY2LCAKKyAgICA3MSwgMjIsIDIsIDIwMywgMTgyLCA3MSwgMjIsIDIsIDcyLCA3MSwgMjIsIDIsIDI1MSwgMTc2LCA3MSwgMjIsIDIsIDIyMSwgCisgICAgMTA3LCAyMjgsIDE1MSwgNzEsIDIyLCAyLCAyMjEsIDEwNywgNzQsIDcxLCAyMiwgMiwgMTk3LCA1NiwgNzEsIDIsIDI1MSwgCisgICAgMzMsIDcxLCAyLCA3MywgNTcsIDcxLCAyLCAyMDIsIDIwMywgNzEsIDIsIDIwMiwgMjA4LCA3MSwgMiwgMjUwLCAxODUsIDcxLCAKKyAgICAxMTEsIDIsIDE3OSwgMTgzLCA3MSwgMTExLCAyLCAxNzksIDIxMywgMjUyLCA3MSwgMTExLCAyLCAxNzksIDIwMSwgMTE0LCAKKyAgICA3MSwgMTExLCAyLCAxNzksIDE0NCwgNzEsIDEsIDIzNSwgNjksIDIxMiwgNjQsIDcxLCAxNywgMTk5LCA4MSwgNzEsIDE3LCAKKyAgICAxMDIsIDcxLCAxNywgMTA1LCA3MSwgMTcsIDE0NywgNzEsIDE3LCAxNDksIDcxLCAxNywgMTY0LCA3MSwgMTcsIDE4NywgNzEsIAorICAgIDE3LCAyMTAsIDEzNSwgNzEsIDE3LCAxOTIsIDcxLCAxNywgMjE5LCAxMTMsIDcxLCAyLCAyMjQsIDE0OCwgMjExLCAxOTIsIAorICAgIDcxLCAyLCAyMTEsIDE5MiwgNzEsIDE2LCAyMjQsIDEwNSwgNzEsIDE2LCAyNDYsIDY0LCA3MSwgMTYsIDI1MSwgMTk3LCA3MSwgCisgICAgMTYsIDIzNSwgMjU0LCA3MSwgMSwgMjEwLCAxMTQsIDcxLCAxLCAyMDgsIDE3OSwgNzEsIDEsIDEwOSwgMTQ2LCA3MSwgMSwgCisgICAgMTA5LCAyMTIsIDIxNiwgNzEsIDEsIDEwOSwgMTU2LCA3MSwgMSwgMTA5LCAyMjQsIDEzOSwgNzEsIDIyLCAyLCAxMDksIAorICAgIDE0NiwgNzEsIDIyLCAyLCAxMDksIDIxMiwgMjE2LCA3MSwgMjIsIDIsIDEwOSwgMTU2LCA3MSwgMjIsIDIsIDEwOSwgMjI0LCAKKyAgICAxMzksIDcxLCAxLCAyMjEsIDEwNywgMjE5LCAyNTMsIDcxLCAxLCAyMjEsIDEwNywgMjI3LCAyMTUsIDcxLCAxLCAyMjEsIAorICAgIDEwNywgMjQ5LCA0NCwgNzEsIDEsIDIyMSwgMTA3LCAyNDksIDM5LCA3MSwgMTExLCAyLCAyMjEsIDEwNywgMTc5LCAxODgsIAorICAgIDcxLCAxMTEsIDIsIDIyMSwgMTA3LCAxNzksIDE3OCwgNzEsIDExMSwgMiwgMjIxLCAxMDcsIDE3OSwgMTk0LCA3MSwgMSwgCisgICAgMjEwLCAxMjAsIDIyNywgNDQsIDIxMCwgMTE0LCA3MSwgMjIsIDIsIDIxMCwgMTIwLCAyMjcsIDQ0LCAyMzgsIDY5LCA3MSwgCisgICAgMTUwLCAxMzQsIDIxMCwgMTIwLCAyMjcsIDQ0LCAyMzQsIDE1MywgNzEsIDE1MCwgMTM0LCAyMTAsIDEyMCwgMjI3LCA0NCwgCisgICAgMjI3LCA5LCAyMTUsIDIxNywgNzEsIDEsIDIwMSwgNDUsIDIxNCwgMTc5LCAyMjcsIDQ0LCAyMDYsIDEyMiwgNzEsIDEsIAorICAgIDIwMSwgNDUsIDIxNCwgMTc5LCAyMjcsIDQ0LCAyMTQsIDE4NSwgNzEsIDIyLCAyLCAyMDEsIDQ1LCAyMTQsIDE3OSwgMjI3LCAKKyAgICA0NCwgMjM4LCA2OSwgNzEsIDIyLCAyLCAyMDEsIDQ1LCAyMTQsIDE3OSwgMjI3LCA0NCwgMjA0LCAzMSwgNzEsIDIsIDIwMSwgCisgICAgNDUsIDIxNCwgMTc5LCAyMjcsIDQ0LCAyMDUsIDE3MywgNzEsIDIsIDIwMSwgNDUsIDIxNCwgMTc5LCAyMjcsIDQ0LCAyMDUsIAorICAgIDE3MiwgNzEsIDIsIDIwMSwgNDUsIDIxNCwgMTc5LCAyMjcsIDQ0LCAyMDUsIDE3MSwgNzEsIDIsIDIwMSwgNDUsIDIxNCwgCisgICAgMTc5LCAyMjcsIDQ0LCAyMDUsIDE3MCwgNzEsIDIsIDIwMSwgNDUsIDIxNCwgMTc5LCAyMjcsIDQ0LCAyMDUsIDE2OSwgNzEsIAorICAgIDEsIDIzOSwgMTIsIDIxNCwgMTc5LCAyMjcsIDQ0LCAyMTksIDIxLCA3MSwgMSwgMjM5LCAxMiwgMjE0LCAxNzksIDIyNywgCisgICAgNDQsIDE5OSwgMTc0LCA3MSwgMSwgMjM5LCAxMiwgMjE0LCAxNzksIDIyNywgNDQsIDIzNSwgMTY0LCA3MSwgMjIsIDIsIAorICAgIDIzNiwgMTEsIDIyNywgNDQsIDcwLCA3MSwgMjIsIDIsIDIyNywgMTQsIDIxNywgMTIxLCA3MSwgMjIsIDIsIDIyNywgMTQsIAorICAgIDY2LCA3MSwgMjIsIDIsIDIyNywgMTQsIDIzOCwgMjU1LCA3MSwgMSwgMjEwLCA5MCwgMTYxLCA3MSwgMSwgMjEwLCA5MCwgCisgICAgMjI2LCAyMDcsIDcxLCAxLCAyMTAsIDkwLCAyMzYsIDg5LCA3MSwgMSwgMjEwLCA5MCwgMjQ3LCAxOTAsIDcxLCAxLCAyMTAsIAorICAgIDkwLCAxOTksIDExNCwgNzEsIDEsIDIxMCwgOTAsIDIxOCwgNjAsIDcxLCAxLCAyMTAsIDkwLCAyNDIsIDU4LCA3MSwgMSwgCisgICAgMjEwLCA5MCwgMTg4LCA3MSwgMSwgMjEwLCA5MCwgMjE1LCAyNDUsIDcxLCAxLCAyMTAsIDkwLCAyMzcsIDE5NSwgNzEsIDEsIAorICAgIDIxMCwgOTAsIDI0OSwgMTM2LCA3MSwgMSwgMjEwLCA5MCwgMjA2LCAxMjIsIDcxLCAxLCAyMTAsIDkwLCAxNDQsIDcxLCAKKyAgICAxMTEsIDIsIDIxMCwgOTAsIDE3OSwgMjAxLCAxMTQsIDcxLCAyMiwgMiwgMjEwLCA5MCwgMjUyLCAxMzgsIDcxLCAyMiwgMiwgCisgICAgMjEwLCA5MCwgNzIsIDcxLCAyMiwgMiwgMjEwLCA5MCwgMTk3LCA1NiwgNzEsIDIyLCAyLCAyMTAsIDkwLCA0NywgMjAwLCAKKyAgICAxMjMsIDcxLCAyLCAyMTAsIDkwLCAyMDUsIDE3MiwgNzEsIDIsIDIxMCwgOTAsIDIwNSwgMTcxLCA3MSwgMiwgMjEwLCA5MCwgCisgICAgMjA1LCAxNjksIDcxLCAyLCAyMTAsIDkwLCAyMDUsIDE2OCwgNzEsIDIsIDIxMCwgOTAsIDI0MywgNiwgMjA1LCAxNzIsIDcxLCAKKyAgICAyLCAyMTAsIDkwLCAyNDMsIDYsIDIwNSwgMTcxLCA3MSwgMiwgMjEwLCA5MCwgMjQzLCA2LCAyMzgsIDE4MiwgMjA1LCAxNzQsIAorICAgIDcxLCAxLCAyMTIsIDE2MCwgMjE2LCAxODEsIDIzNywgMTk1LCA3MSwgMiwgMjEyLCAxNjAsIDIxNiwgMTgxLCAyMDUsIDE2OSwgCisgICAgNzEsIDIxMCwgOTAsIDE3LCAxOTksIDgxLCA3MSwgMjEwLCA5MCwgMTcsIDEwMiwgNzEsIDIxMCwgOTAsIDE3LCAxMDUsIDcxLCAKKyAgICAyMTAsIDkwLCAxNywgMTQ3LCA3MSwgMjEwLCA5MCwgMTcsIDE0OSwgNzEsIDIxMCwgOTAsIDE3LCAxNjQsIDcxLCAyMTAsIAorICAgIDkwLCAxNywgMTg3LCA3MSwgMjEwLCA5MCwgMTcsIDIxMCwgMTM1LCA3MSwgMjEwLCA5MCwgMTcsIDE5MiwgNzEsIDIxMCwgCisgICAgOTAsIDE3LCAyMTksIDExMywgNzEsIDIsIDIyNiwgMjAwLCAyMDUsIDE3MywgNzEsIDIsIDIyNiwgMjAwLCAyMDUsIDE3MSwgCisgICAgNzEsIDIyLCAyLCAyNTEsIDE2MywgNjIsIDcxLCAyMiwgMiwgMjUxLCAxNjMsIDI1MSwgMTc2LCA3MSwgMTYsIDIxMCwgOTAsIAorICAgIDEwMiwgNzEsIDE2LCAyMTAsIDkwLCAyMzgsIDQyLCAxMTgsIDYsIDEsIDI1MSwgODUsIDExOCwgNiwgMSwgMjQ5LCA4OCwgCisgICAgMTE4LCA2LCAxLCAyMzYsIDU5LCAxMTgsIDYsIDEsIDI0MCwgMTkwLCAxMTgsIDYsIDEsIDIzOCwgMTc5LCAxMTgsIDYsIDEsIAorICAgIDIwMiwgMjE3LCAxMTgsIDYsIDEsIDE5OSwgODQsIDExOCwgNiwgMSwgMjA2LCAyNDQsIDExOCwgNiwgMSwgMjI4LCAxMTcsIAorICAgIDExOCwgNiwgMSwgMjI3LCA2OCwgMTE4LCA2LCAxLCAyMjUsIDY1LCAxMTgsIDYsIDEsIDIyMiwgMTgwLCAxMTgsIDYsIDEsIAorICAgIDIyMCwgMTI1LCAxMTgsIDYsIDEsIDIxNywgNzgsIDExOCwgNiwgMSwgMjE2LCAxMzAsIDExOCwgNiwgMSwgMTk5LCA3MywgCisgICAgMTE4LCA2LCAxLCAyMTMsIDIzNCwgMTE4LCA2LCAxLCAyMTIsIDEzLCAxMTgsIDYsIDEsIDIwNiwgMjMyLCAxMTgsIDYsIDEsIAorICAgIDIwNCwgNSwgMTE4LCA2LCAxLCAyMTUsIDIzNywgMTE4LCA2LCAxLCAyMjYsIDE5NSwgMTE4LCA2LCAxLCAyMzUsIDE5MCwgCisgICAgMTE4LCA2LCAxLCAyMTQsIDE0NCwgMTE4LCA2LCAxLCAyMTAsIDIxLCAxMTgsIDYsIDEsIDI0NiwgMjIzLCAxMTgsIDYsIDEsIAorICAgIDI0NywgMTU4LCAxMTgsIDYsIDEsIDIyNywgMTk4LCAxMTgsIDYsIDEsIDI0NiwgMTYyLCAxMTgsIDYsIDEsIDI0NywgMjEsIAorICAgIDExOCwgNiwgMSwgMjAwLCAxNzksIDExOCwgNiwgMSwgMjI3LCAyMTIsIDExOCwgNiwgMSwgMjM0LCAyMzAsIDExOCwgNiwgMSwgCisgICAgMjM0LCAxMzksIDExOCwgNiwgMSwgMjM0LCA2OSwgMTE4LCA2LCAxLCAyMDEsIDY0LCAxMTgsIDYsIDEsIDIzNCwgMTY2LCAKKyAgICAxMTgsIDYsIDEsIDIzMywgMjAzLCAxMTgsIDYsIDEsIDE5OSwgMjQ3LCAxMTgsIDYsIDEsIDI1MSwgMjEwLCAxMTgsIDEsIAorICAgIDI1MSwgODUsIDExOCwgMSwgMjQ5LCA4OCwgMTE4LCAxLCAyMzYsIDU5LCAxMTgsIDEsIDI0MCwgMTkwLCAxMTgsIDEsIDIzOCwgCisgICAgMTc5LCAxMTgsIDEsIDIwMiwgMjE3LCAxMTgsIDEsIDE5OSwgODQsIDExOCwgMSwgMjA2LCAyNDQsIDExOCwgMSwgMjI4LCAKKyAgICAxMTcsIDExOCwgMSwgMjI3LCA2OCwgMTE4LCAxLCAyMjUsIDY1LCAxMTgsIDEsIDIyMiwgMTgwLCAxMTgsIDEsIDIyMCwgCisgICAgMTI1LCAxMTgsIDEsIDIxNywgNzgsIDExOCwgMSwgMjE2LCAxMzAsIDExOCwgMSwgMTk5LCA3MywgMTE4LCAxLCAyMTMsIAorICAgIDIzNCwgMTE4LCAxLCAyMTIsIDEzLCAxMTgsIDEsIDIwNiwgMjMyLCAxMTgsIDEsIDIwNCwgNSwgMTE4LCAxLCAyMTUsIDIzNywgCisgICAgMTE4LCAxLCAyMjYsIDE5NSwgMTE4LCAxLCAyMzUsIDE5MCwgMTE4LCAxLCAyMTQsIDE0NCwgMTE4LCAxLCAyMTAsIDIxLCAKKyAgICAxMTgsIDEsIDI0NiwgMjIzLCAxMTgsIDEsIDI0NywgMTU4LCAxMTgsIDEsIDIyNywgMTk4LCAxMTgsIDEsIDI0NiwgMTYyLCAKKyAgICAxMTgsIDEsIDI0NywgMjEsIDExOCwgMSwgMjAwLCAxNzksIDExOCwgMSwgMjI3LCAyMTIsIDExOCwgMSwgMjM0LCAyMzAsIAorICAgIDExOCwgMSwgMjM0LCAxMzksIDExOCwgMSwgMjM0LCA2OSwgMTE4LCAxLCAyMDEsIDY0LCAxMTgsIDEsIDIzNCwgMTY2LCAKKyAgICAxMTgsIDEsIDIzMywgMjAzLCAxMTgsIDEsIDIzNywgMTEyLCAxMTgsIDEsIDE5OSwgMjQ3LCAxMTgsIDEsIDIzOCwgMTk3LCAKKyAgICAxMTgsIDEsIDIwNCwgMTg1LCAyMzYsIDU5LCAxMTgsIDEsIDI1MSwgMTcxLCAxMTgsIDIxNiwgMTI4LCAyMTAsIDE1NCwgNjcsIAorICAgIDEsIDExOCwgMjIwLCAxMjUsIDExOCwgMSwgMjUxLCAyMTAsIDExOCwgMSwgMjM0LCAxNjUsIDU0LCAxMTgsIDEsIDIyNSwgCisgICAgMTY3LCA1NCwgMjksIDEyOSwgMjI2LCAxMjEsIDI5LCAxMjksIDIwOCwgMTcxLCAyOSwgMTI5LCAyMTksIDE0MywgMjksIAorICAgIDEyOSwgMjA1LCAyNTMsIDI5LCAxMjksIDIwOCwgMTYwLCAyOSwgMTI5LCAyMTMsIDc4LCAyOSwgMTI5LCAyMjEsIDE5NywgCisgICAgMjksIDEyOSwgMjE1LCAxOTAsIDI5LCAxMjksIDIwOCwgMTY4LCAyOSwgMTI5LCAyMDksIDEyOSwgMjksIDEyOSwgMjA4LCAKKyAgICAxNjUsIDI5LCAxMjksIDIyOCwgMTc0LCAyOSwgMTI5LCAyNDYsIDE2OCwgMjksIDEyOSwgMjA4LCAxNzUsIDI5LCAxMjksIAorICAgIDI0NiwgMjMyLCAyOSwgMTI5LCAyMjYsIDE4MywgMjksIDEyOSwgMjA2LCA4MCwgMjksIDEyOSwgMjE1LCAyMjcsIDI5LCAKKyAgICAxMjksIDIzNCwgNjYsIDI5LCAxMjksIDIxOSwgMTM5LCAyOSwgMTI5LCAyMDgsIDE2OSwgMjksIDEyOSwgMjE5LCAxMzMsIAorICAgIDI5LCAxMjksIDIxOSwgMTM3LCAyOSwgMTI5LCAyMDUsIDI1MCwgMjksIDEyOSwgMjEzLCA2NiwgMjksIDEyOSwgMjA4LCAKKyAgICAxNjcsIDI5LCAxMjksIDIxMywgNzYsIDI5LCAxMjksIDIyNywgNTAsIDI5LCAxMjksIDIyMSwgMTkwLCAyOSwgMTI5LCAyMjcsIAorICAgIDUzLCAyOSwgMTI5LCAyMTUsIDE4NSwgMjksIDEyOSwgMjE1LCAxODMsIDI5LCAxMjksIDIxNSwgMTcxLCAyOSwgMTI5LCAKKyAgICAyMTUsIDE3OSwgMjksIDEyOSwgMjE1LCAxNzcsIDI5LCAxMjksIDIxNSwgMTc0LCAyOSwgMTI5LCAyMTUsIDE3NiwgMjksIAorICAgIDEyOSwgMjE1LCAxNzMsIDI5LCAxMjksIDIxNSwgMTc4LCAyOSwgMTI5LCAyMTUsIDE4OCwgMjksIDEyOSwgMjE1LCAxODksIAorICAgIDI5LCAxMjksIDIxNSwgMTcyLCAyOSwgMTI5LCAyMTUsIDE4MiwgMjksIDEyOSwgMjI3LCA1MSwgMjksIDEyOSwgMjI3LCA0OSwgCisgICAgMjksIDEyOSwgMjA5LCAxMjIsIDI5LCAxMjksIDIwOSwgMTIwLCAyOSwgMTI5LCAyMDksIDExMiwgMjksIDEyOSwgMjA5LCAKKyAgICAxMTUsIDI5LCAxMjksIDIwOSwgMTIxLCAyOSwgMTI5LCAyMDksIDExNywgMjksIDEyOSwgMjA5LCAxMTYsIDI5LCAxMjksIAorICAgIDIwOSwgMTE0LCAyOSwgMTI5LCAyMDksIDEyNSwgMjksIDEyOSwgMjA5LCAxMjcsIDI5LCAxMjksIDIwOSwgMTI4LCAyOSwgCisgICAgMTI5LCAyMDksIDEyMywgMjksIDEyOSwgMjA5LCAxMTMsIDI5LCAxMjksIDIwOSwgMTE4LCAyOSwgMTI5LCAyMDksIDEyNiwgCisgICAgMjksIDEyOSwgMjQ2LCAyMTQsIDI5LCAxMjksIDI0NiwgMjEyLCAyOSwgMTI5LCAyNDcsIDQ4LCAyOSwgMTI5LCAyNDcsIDQ2LCAKKyAgICAyOSwgMTI5LCAyMTYsIDE0NiwgMjksIDEyOSwgMjI4LCAxNjksIDI5LCAxMjksIDIyOCwgMTYwLCAyOSwgMTI5LCAyMjgsIAorICAgIDE2OCwgMjksIDEyOSwgMjI4LCAxNjUsIDI5LCAxMjksIDIyOCwgMTYzLCAyOSwgMTI5LCAyMjgsIDE2NywgMjksIDEyOSwgCisgICAgMjA4LCAxNzIsIDI5LCAxMjksIDIyOCwgMTcyLCAyOSwgMTI5LCAyMjgsIDE3MywgMjksIDEyOSwgMjI4LCAxNjEsIDI5LCAKKyAgICAxMjksIDIyOCwgMTY2LCAyOSwgMTI5LCAyMDAsIDI4LCAyOSwgMTI5LCAyNDYsIDE2NywgMjksIDEyOSwgMjQ2LCAyMTUsIAorICAgIDI5LCAxMjksIDI0NiwgMjEzLCAyOSwgMTI5LCAyNDcsIDQ5LCAyOSwgMTI5LCAyNDcsIDQ3LCAyOSwgMTI5LCAyNDYsIDIzMCwgCisgICAgMjksIDEyOSwgMjQ2LCAyMzEsIDI5LCAxMjksIDI0NiwgMjE2LCAyOSwgMTI5LCAyNDcsIDUwLCAyOSwgMTI5LCAyMTUsIAorICAgIDIyNSwgMjksIDEyOSwgMjI3LCA1MiwgMjksIDEyOSwgMjA4LCAxNzMsIDI5LCAxMjksIDIwMCwgMzQsIDI5LCAxMjksIDIyNiwgCisgICAgMTEyLCAyOSwgMTI5LCAyMTksIDEzNSwgMjksIDEyOSwgMjE5LCAxNDEsIDI5LCAxMjksIDIxOSwgMTQwLCAyOSwgMTI5LCAKKyAgICAyMDUsIDI0NywgMjksIDEyOSwgMjM3LCA5MywgMjksIDE4MSwgMjM3LCA5MywgMjksIDE4MSwgNjIsIDI5LCAxODEsIDI1MSwgCisgICAgMjIxLCAyOSwgMTgxLCAxODMsIDI5LCAxODEsIDIwMCwgOTgsIDI5LCAxODEsIDIzOCwgMTQyLCAyOSwgMTgxLCA3MiwgMjksIAorICAgIDE4MSwgMjAwLCAzOCwgMjksIDE4MSwgMjAwLCA1MSwgMjksIDE4MSwgNzQsIDI5LCAxODEsIDIwMSwgMTE0LCAyOSwgMTgxLCAKKyAgICAyMDEsIDExMCwgMjksIDE4MSwgMjE3LCAxMjEsIDI5LCAxODEsIDE5OSwgMjQ1LCAyOSwgMTgxLCA2NiwgMjksIDE4MSwgCisgICAgMjAxLCA1MCwgMjksIDE4MSwgMjAxLCA2NCwgMjksIDE4MSwgMjAxLCAzMSwgMjksIDE4MSwgMTk5LCAyMTEsIDI5LCAxODEsIAorICAgIDIzOCwgNjksIDI5LCAxODEsIDIwMCwgOSwgMjksIDE4MSwgNzAsIDI5LCAxODEsIDI1NSwgMTMzLCAyOSwgMTgxLCAyNTUsIAorICAgIDEzMiwgMjksIDE4MSwgMjAwLCAxMTIsIDI5LCAxODEsIDIwMCwgMTEwLCAyOSwgMTgxLCAyMzgsIDE0MCwgMjksIDE4MSwgCisgICAgMjM4LCAxMzksIDI5LCAxODEsIDIzOCwgMTQxLCAyOSwgMTgxLCAyMDAsIDM3LCAyOSwgMTgxLCAyMDAsIDM2LCAyOSwgMTgxLCAKKyAgICAyMTcsIDIzMCwgMjksIDE4MSwgMjE3LCAyMzEsIDI5LCAxODEsIDIxNywgMjI0LCAyOSwgMTgxLCAyMTcsIDIyOSwgMjksIAorICAgIDE4MSwgMjE3LCAyMjcsIDI5LCAxODEsIDE5OSwgMjM5LCAyOSwgMTgxLCAxOTksIDIzOCwgMjksIDE4MSwgMTk5LCAyMzcsIAorICAgIDI5LCAxODEsIDE5OSwgMjQwLCAyOSwgMTgxLCAxOTksIDI0MSwgMjksIDE4MSwgMjA0LCAxMDQsIDI5LCAxODEsIDIwNCwgCisgICAgMTAzLCAyOSwgMTgxLCAyMDQsIDEwMSwgMjksIDE4MSwgMjA0LCA5NywgMjksIDE4MSwgMjA0LCA5OCwgMjksIDE4MSwgMTk5LCAKKyAgICAyMTAsIDI5LCAxODEsIDE5OSwgMjA3LCAyOSwgMTgxLCAxOTksIDIwOCwgMjksIDE4MSwgMTk5LCAyMDIsIDI5LCAxODEsIAorICAgIDE5OSwgMjAzLCAyOSwgMTgxLCAxOTksIDIwNCwgMjksIDE4MSwgMTk5LCAyMDYsIDI5LCAxODEsIDIzOCwgNjMsIDI5LCAKKyAgICAxODEsIDIzOCwgNjUsIDI5LCAxODEsIDIwMCwgOCwgMjksIDE4MSwgMjMzLCAxOCwgMjksIDE4MSwgMjMzLCAxMCwgMjksIAorICAgIDE4MSwgMjMzLCAxMywgMjksIDE4MSwgMjMzLCAxMSwgMjksIDE4MSwgMjMzLCAxNSwgMjksIDE4MSwgMjMzLCAxNywgMjksIAorICAgIDE4MSwgMjUwLCAyNDUsIDI5LCAxODEsIDI1MCwgMjQyLCAyOSwgMTgxLCAyNTAsIDI0MCwgMjksIDE4MSwgMjUwLCAyNDEsIAorICAgIDI5LCAxODEsIDIwOCwgMTc2LCAyOSwgMTgxLCAyNTUsIDEzNCwgMjksIDE4MSwgMjAwLCAxMTEsIDI5LCAxODEsIDIwMCwgCisgICAgMzUsIDI5LCAxODEsIDIxNywgMjI2LCAyOSwgMTgxLCAyMTcsIDIyNSwgMjksIDExMCwgMjI2LCAxMjEsIDI5LCAxMTAsIAorICAgIDIwOCwgMTcxLCAyOSwgMTEwLCAyMjYsIDExNCwgMjksIDExMCwgMjE5LCAxNDMsIDI5LCAxMTAsIDIxOSwgMTQxLCAyOSwgCisgICAgMTEwLCAyMTksIDE0MCwgMjksIDExMCwgMjA1LCAyNTMsIDI5LCAxMTAsIDIxMywgNzgsIDI5LCAxMTAsIDIxMywgNzMsIDI5LCAKKyAgICAxMTAsIDIxMywgNzAsIDI5LCAxMTAsIDIxMywgNjMsIDI5LCAxMTAsIDIxMywgNTgsIDI5LCAxMTAsIDIxMywgNTMsIDI5LCAKKyAgICAxMTAsIDIxMywgNjQsIDI5LCAxMTAsIDIxMywgNzYsIDI5LCAxMTAsIDIyMSwgMTk3LCAyOSwgMTEwLCAyMTUsIDE5MCwgMjksIAorICAgIDExMCwgMjE1LCAxNzksIDI5LCAxMTAsIDIwOSwgMTI5LCAyOSwgMTEwLCAyMDgsIDE2NSwgMjksIDExMCwgMjI4LCAxNzQsIAorICAgIDI5LCAxMTAsIDI0NiwgMTY4LCAyOSwgMTEwLCAyNDYsIDIzMiwgMjksIDExMCwgMjI2LCAxODMsIDI5LCAxMTAsIDIwNiwgCisgICAgODAsIDI5LCAxMTAsIDIxNSwgMjI3LCAyOSwgMTEwLCAyMzQsIDY2LCAyOSwgMTEwLCAyMjYsIDExNSwgMjksIDExMCwgMjI2LCAKKyAgICAxMTMsIDI5LCAxMTAsIDIxOSwgMTM5LCAyOSwgMTEwLCAyMTksIDEzMywgMjksIDExMCwgMjE5LCAxMzUsIDI5LCAxMTAsIAorICAgIDIxOSwgMTM4LCAyOSwgMTEwLCAyMTksIDEzNCwgMjksIDExMCwgMjA1LCAyNTAsIDI5LCAxMTAsIDIwNSwgMjQ3LCAyOSwgCisgICAgMTEwLCAyMTMsIDcxLCAyOSwgMTEwLCAyMTMsIDY2LCAyOSwgMTEwLCAyMTMsIDUyLCAyOSwgMTEwLCAyMTMsIDUxLCAyOSwgCisgICAgMTEwLCAyMDgsIDE2NywgMjksIDExMCwgMjEzLCA2OCwgMjksIDExMCwgMjEzLCA2NywgMjksIDExMCwgMjEzLCA2MCwgMjksIAorICAgIDExMCwgMjEzLCA2MiwgMjksIDExMCwgMjEzLCA3NSwgMjksIDExMCwgMjEzLCA1NSwgMjksIDExMCwgMjEzLCA2NSwgMjksIAorICAgIDExMCwgMjEzLCA3NCwgMjksIDExMCwgMjEzLCA1MCwgMjksIDExMCwgMjIxLCAxOTMsIDI5LCAxMTAsIDIyMSwgMTg4LCAyOSwgCisgICAgMTEwLCAyMjEsIDE5MCwgMjksIDExMCwgMjIxLCAxODcsIDI5LCAxMTAsIDIyMSwgMTg1LCAyOSwgMTEwLCAyMjEsIDE5MSwgCisgICAgMjksIDExMCwgMjIxLCAxOTYsIDI5LCAxMTAsIDIyMSwgMTk0LCAyOSwgMTEwLCAyMjcsIDUzLCAyOSwgMTEwLCAyMTUsIAorICAgIDE4MSwgMjksIDExMCwgMjE1LCAxODIsIDI5LCAxMTAsIDIxNSwgMTg3LCAyOSwgMTEwLCAyMjcsIDUxLCAyOSwgMTEwLCAKKyAgICAyMDksIDEyMiwgMjksIDExMCwgMjA5LCAxMTIsIDI5LCAxMTAsIDIwOSwgMTE1LCAyOSwgMTEwLCAyMDksIDExNywgMjksIAorICAgIDExMCwgMjE2LCAxNDYsIDI5LCAxMTAsIDIyOCwgMTY5LCAyOSwgMTEwLCAyMjgsIDE2MiwgMjksIDExMCwgMjA4LCAxNzIsIAorICAgIDI5LCAxMTAsIDIyOCwgMTcwLCAyOSwgMTEwLCAyMDAsIDI4LCAyOSwgMTEwLCAyMDAsIDI0LCAyOSwgMTEwLCAyMDAsIDI1LCAKKyAgICAyOSwgMTEwLCAyMTUsIDIyNSwgMjksIDExMCwgMjI3LCA1MiwgMjksIDExMCwgMjM0LCA2NCwgMjksIDExMCwgMjM0LCA2MiwgCisgICAgMjksIDExMCwgMjM0LCA2NSwgMjksIDExMCwgMjM0LCA2MywgMjksIDExMCwgMjAwLCAzNCwgMjksIDExMCwgMjI2LCAxMTcsIAorICAgIDI5LCAxMTAsIDIyNiwgMTE2LCAyOSwgMTEwLCAyMjYsIDEyMCwgMjksIDExMCwgMjI2LCAxMTgsIDI5LCAxMTAsIDIyNiwgCisgICAgMTE5LCAyOSwgMTEwLCAyMDgsIDE2OSwgMzQsIDUsIDE0NCwgMzQsIDUsIDIzMywgOTcsIDM0LCA1LCAyMzQsIDc1LCAzNCwgCisgICAgNSwgMjM0LCAyMzMsIDM0LCA1LCAyMzQsIDEyMCwgMzQsIDUsIDIzNCwgMTM5LCAzNCwgNSwgMjMzLCAyMDcsIDM0LCA1LCAKKyAgICAyMzMsIDIwNiwgMzQsIDUsIDE5NCwgMzQsIDUsIDIyNCwgNDIsIDM0LCA1LCAyMjQsIDIxMCwgMzQsIDUsIDIyNSwgMTc1LCAKKyAgICAzNCwgNSwgMjI1LCAzMiwgMzQsIDUsIDIyNSwgNDAsIDM0LCA1LCAyMjQsIDExMCwgMzQsIDUsIDIyNCwgMTAsIDM0LCA1LCAKKyAgICAyMzQsIDg0LCAzNCwgNSwgMjM0LCA3OCwgMzQsIDUsIDIzNCwgODAsIDM0LCA1LCAyMzQsIDgzLCAzNCwgNSwgMjM0LCA4MSwgCisgICAgMzQsIDUsIDIzNCwgODIsIDM0LCA1LCAyMzQsIDc5LCAzNCwgNSwgMjM0LCA3NywgMzQsIDUsIDE3OCwgMzQsIDUsIDIyMSwgCisgICAgNDEsIDM0LCA1LCAyMjEsIDIxMSwgMzQsIDUsIDIyMiwgMjMzLCAzNCwgNSwgMjIyLCA2NCwgMzQsIDUsIDIyMiwgNzYsIDM0LCAKKyAgICA1LCAyMjEsIDEzNiwgMzQsIDUsIDIyMCwgMjMxLCAzNCwgNSwgMjA3LCA5NCwgMzQsIDUsIDIwNywgODgsIDM0LCA1LCAyMDcsIAorICAgIDkwLCAzNCwgNSwgMjA3LCA5MywgMzQsIDUsIDIwNywgOTEsIDM0LCA1LCAyMDcsIDkyLCAzNCwgNSwgMjA3LCA4OSwgMzQsIAorICAgIDUsIDIwNywgODcsIDM0LCA1LCAyMTMsIDI1MiwgMzQsIDUsIDIxMiwgMTc1LCAzNCwgNSwgMjEzLCA4OCwgMzQsIDUsIDIxMywgCisgICAgMjQ4LCAzNCwgNSwgMjEzLCAxNjcsIDM0LCA1LCAyMTMsIDE5MCwgMzQsIDUsIDIxMywgMSwgMzQsIDUsIDIxMiwgMTQwLCAKKyAgICAzNCwgNSwgMjEyLCA2NCwgMzQsIDUsIDIwOCwgMjQsIDM0LCA1LCAyMDksIDE4MiwgMzQsIDUsIDIxMiwgNjEsIDM0LCA1LCAKKyAgICAyMTEsIDE5MCwgMzQsIDUsIDIxMSwgMjAyLCAzNCwgNSwgMjA5LCAyOSwgMzQsIDUsIDIwNywgMTg2LCAzNCwgNSwgMjEwLCAKKyAgICAxMTQsIDM0LCA1LCAyMDksIDIyMCwgMzQsIDUsIDIxMCwgMzMsIDM0LCA1LCAyMTAsIDEwOSwgMzQsIDUsIDIxMCwgNjMsIAorICAgIDM0LCA1LCAyMTAsIDY1LCAzNCwgNSwgMjEwLCA4LCAzNCwgNSwgMjA5LCAyMDAsIDM0LCA1LCAyMTQsIDE1OSwgMzQsIDUsIAorICAgIDIxNCwgOTcsIDM0LCA1LCAyMTQsIDEyMSwgMzQsIDUsIDIxNCwgMTU4LCAzNCwgNSwgMjE0LCAxMzgsIDM0LCA1LCAyMTQsIAorICAgIDEzOSwgMzQsIDUsIDIxNCwgMTA5LCAzNCwgNSwgMjE0LCAxMDgsIDM0LCA1LCAyMTQsIDUxLCAzNCwgNSwgMjE0LCA0NywgCisgICAgMzQsIDUsIDIxNCwgNTAsIDM0LCA1LCAyMTQsIDQ4LCAzNCwgNSwgMjE0LCA0OSwgMzQsIDUsIDIxNCwgMTM1LCAzNCwgNSwgCisgICAgMjE0LCAxMjcsIDM0LCA1LCAyMTQsIDEzMCwgMzQsIDUsIDIxNCwgMTM0LCAzNCwgNSwgMjE0LCAxMzEsIDM0LCA1LCAyMTQsIAorICAgIDEzMiwgMzQsIDUsIDIxNCwgMTI5LCAzNCwgNSwgMjE0LCAxMjYsIDM0LCA1LCAyMTQsIDEyMiwgMzQsIDUsIDIxNCwgMTI1LCAKKyAgICAzNCwgNSwgMjE0LCAxMjMsIDM0LCA1LCAyMTQsIDEyNCwgMzQsIDUsIDI0OSwgMTM2LCAzNCwgNSwgMjQ4LCAzNiwgMzQsIDUsIAorICAgIDI0OCwgMTg4LCAzNCwgNSwgMjQ5LCAxMzQsIDM0LCA1LCAyNDgsIDI1MiwgMzQsIDUsIDI0OSwgOCwgMzQsIDUsIDI0OCwgCisgICAgMTI0LCAzNCwgNSwgMjQ3LCAyNDAsIDM0LCA1LCAyMDMsIDkwLCAzNCwgNSwgMjAxLCAxNjYsIDM0LCA1LCAyMDIsIDIzNCwgCisgICAgMzQsIDUsIDIwMywgODksIDM0LCA1LCAyMDMsIDU0LCAzNCwgNSwgMjAzLCA1OSwgMzQsIDUsIDIwMiwgMTkzLCAzNCwgNSwgCisgICAgMjAxLCAxNTcsIDM0LCA1LCAyMDcsIDM2LCAzNCwgNSwgMjA0LCAyMTUsIDM0LCA1LCAyMDYsIDE1LCAzNCwgNSwgMjA3LCAKKyAgICAzMiwgMzQsIDUsIDIwNiwgMTkwLCAzNCwgNSwgMjA2LCAyMDEsIDM0LCA1LCAxMzgsIDM0LCA1LCAyMDQsIDE3MCwgMzQsIDUsIAorICAgIDI0NywgMTkwLCAzNCwgNSwgMjQyLCAyMTQsIDM0LCA1LCAyNDYsIDE3MywgMzQsIDUsIDI0NywgMTg5LCAzNCwgNSwgMjQ3LCAKKyAgICA2OCwgMzQsIDUsIDI0NywgNzYsIDM0LCA1LCAyNDYsIDkxLCAzNCwgNSwgMjQyLCAxNzYsIDM0LCA1LCAyMDAsIDE4MSwgMzQsIAorICAgIDUsIDIwMCwgMTUxLCAzNCwgNSwgMjAwLCAxNjksIDM0LCA1LCAyMDAsIDE4MCwgMzQsIDUsIDIwMCwgMTc0LCAzNCwgNSwgCisgICAgMjAwLCAxNzUsIDM0LCA1LCAyMDAsIDE1OSwgMzQsIDUsIDIwMCwgMTU4LCAzNCwgNSwgMjAwLCAxNDUsIDM0LCA1LCAyMDAsIAorICAgIDE0MSwgMzQsIDUsIDIwMCwgMTQ0LCAzNCwgNSwgMjAwLCAxNDIsIDM0LCA1LCAyMDAsIDE0MywgMzQsIDUsIDE4OCwgMzQsIAorICAgIDUsIDIxOCwgMTMzLCAzNCwgNSwgMjE5LCAxNTAsIDM0LCA1LCAyMjAsIDE1NywgMzQsIDUsIDIyMCwgMjksIDM0LCA1LCAKKyAgICAyMjAsIDM0LCAzNCwgNSwgMjE4LCAyNDEsIDM0LCA1LCAyMTgsIDY5LCAzNCwgNSwgMjE4LCA2MCwgMzQsIDUsIDIxOCwgMTksIAorICAgIDM0LCA1LCAyMTgsIDQxLCAzNCwgNSwgMjE4LCA1OSwgMzQsIDUsIDIxOCwgNDksIDM0LCA1LCAyMTgsIDUwLCAzNCwgNSwgCisgICAgMjE4LCAyNiwgMzQsIDUsIDIxOCwgOSwgMzQsIDUsIDIzNSwgMTIzLCA2MiwgMzQsIDUsIDIzNSwgMTIzLCA2NiwgMzQsIDUsIAorICAgIDIzNSwgMTIzLCA3MCwgMzQsIDUsIDIzNSwgMTIzLCAyNTIsIDEzOCwgMzQsIDUsIDIzNSwgMTIzLCAyMzgsIDI1NSwgMzQsIAorICAgIDUsIDIzNSwgMTIzLCA3MiwgMzQsIDUsIDIzNSwgMTIzLCA3NCwgMzQsIDUsIDIzNSwgMTIzLCAyMDEsIDExNCwgMzQsIDUsIAorICAgIDE2MSwgMzQsIDUsIDIyNiwgMTUsIDM0LCA1LCAyMjYsIDE2MywgMzQsIDUsIDIyNywgMTA1LCAzNCwgNSwgMjI3LCA1LCAzNCwgCisgICAgNSwgMjI3LCA4LCAzNCwgNSwgMjI2LCA4OCwgMzQsIDUsIDIyNiwgODcsIDM0LCA1LCAyMjUsIDIyOSwgMzQsIDUsIDIyNSwgCisgICAgMjIyLCAzNCwgNSwgMjI1LCAyMjgsIDM0LCA1LCAyMjUsIDIyMywgMzQsIDUsIDIyNSwgMjI0LCAzNCwgNSwgMjI1LCAyMTUsIAorICAgIDM0LCA1LCAyMjUsIDIwOSwgMzQsIDUsIDIyNSwgMjExLCAzNCwgNSwgMjI1LCAyMTQsIDM0LCA1LCAyMjUsIDIxMiwgMzQsIAorICAgIDUsIDIyNSwgMjEzLCAzNCwgNSwgMjI1LCAyMTAsIDM0LCA1LCAyMjUsIDIwOCwgMzQsIDUsIDIyNSwgMjA0LCAzNCwgNSwgCisgICAgMjI1LCAyMDcsIDM0LCA1LCAyMjUsIDIwNSwgMzQsIDUsIDIyNSwgMjA2LCAzNCwgNSwgMjAxLCAxMTQsIDM0LCA1LCAyMDAsIAorICAgIDIxNiwgMzQsIDUsIDIwMSwgMzEsIDM0LCA1LCAyMDEsIDExMywgMzQsIDUsIDIwMSwgNTcsIDM0LCA1LCAyMDEsIDY0LCAzNCwgCisgICAgNSwgMjAxLCAwLCAzNCwgNSwgMjAwLCAyNTUsIDM0LCA1LCAyMTUsIDIzNiwgNjIsIDM0LCA1LCAyMTUsIDIzNiwgNjYsIDM0LCAKKyAgICA1LCAyMTUsIDIzNiwgNzAsIDM0LCA1LCAyMTUsIDIzNiwgMjUyLCAxMzgsIDM0LCA1LCAyMTUsIDIzNiwgMjM4LCAyNTUsIAorICAgIDM0LCA1LCAyMTUsIDIzNiwgNzIsIDM0LCA1LCAyMTUsIDIzNiwgNzQsIDM0LCA1LCAxOTksIDExNCwgMzQsIDUsIDE5OSwgMywgCisgICAgMzQsIDUsIDE5OSwgMzYsIDM0LCA1LCAxOTksIDExMiwgMzQsIDUsIDE5OSwgODcsIDM0LCA1LCAxOTksIDg5LCAzNCwgNSwgCisgICAgMTk5LCAxNCwgMzQsIDUsIDE5OCwgMjQ2LCAzNCwgNSwgMTk5LCA3NywgMzQsIDUsIDE5OSwgNTQsIDM0LCA1LCAxOTksIDYzLCAKKyAgICAzNCwgNSwgMTk5LCA3NiwgMzQsIDUsIDE5OSwgNjcsIDM0LCA1LCAxOTksIDY4LCAzNCwgNSwgMTk5LCA2MCwgMzQsIDUsIAorICAgIDE5OSwgNDUsIDM0LCA1LCAxODMsIDM0LCA1LCAxOTksIDIxMSwgMzQsIDUsIDIwMCwgOSwgMzQsIDUsIDIwMCwgMTA5LCAzNCwgCisgICAgNSwgMjAwLCA0OCwgMzQsIDUsIDIwMCwgNTEsIDM0LCA1LCAxOTksIDI0NSwgMzQsIDUsIDE5OSwgMjM2LCAzNCwgNSwgMjQyLCAKKyAgICA1OCwgMzQsIDUsIDIzOSwgMTM3LCAzNCwgNSwgMjQxLCA3NiwgMzQsIDUsIDI0MiwgNTcsIDM0LCA1LCAyNDEsIDE2MSwgMzQsIAorICAgIDUsIDI0MSwgMTc1LCAzNCwgNSwgMjQwLCAyMTEsIDM0LCA1LCAyMzksIDEwNCwgMzQsIDUsIDI0MSwgMjIwLCAzNCwgNSwgCisgICAgMjQxLCAxODUsIDM0LCA1LCAyNDEsIDE5NywgMzQsIDUsIDI0MSwgMjE5LCAzNCwgNSwgMjQxLCAyMDcsIDM0LCA1LCAyNDEsIAorICAgIDIwOCwgMzQsIDUsIDI0MSwgMTkwLCAzNCwgNSwgMjQxLCAxNzYsIDM0LCA1LCAyMjcsIDI0OCwgMzQsIDUsIDIyNywgMTQ3LCAKKyAgICAzNCwgNSwgMjI3LCAyMDcsIDM0LCA1LCAyMjcsIDI0NywgMzQsIDUsIDIyNywgMjI1LCAzNCwgNSwgMjI3LCAyMjcsIDM0LCAKKyAgICA1LCAyMjcsIDE2NiwgMzQsIDUsIDIyNywgMTI2LCAzNCwgNSwgMjM2LCA4OSwgMzQsIDUsIDIzNSwgNTAsIDM0LCA1LCAyMzUsIAorICAgIDE2MSwgMzQsIDUsIDIzNiwgODYsIDM0LCA1LCAyMzYsIDcsIDM0LCA1LCAyMzYsIDE1LCAzNCwgNSwgMjM1LCAxMTYsIDM0LCAKKyAgICA1LCAyMzUsIDExNSwgMzQsIDUsIDIzNSwgMTAsIDM0LCA1LCAyMzUsIDYsIDM0LCA1LCAyMzUsIDksIDM0LCA1LCAyMzUsIDcsIAorICAgIDM0LCA1LCAyMzUsIDgsIDM0LCA1LCAyMzUsIDIzNSwgMzQsIDUsIDIzNSwgMjE1LCAzNCwgNSwgMjM1LCAyMjUsIDM0LCA1LCAKKyAgICAyMzUsIDIzNCwgMzQsIDUsIDIzNSwgMjI5LCAzNCwgNSwgMjM1LCAyMzAsIDM0LCA1LCAyMzUsIDIxOSwgMzQsIDUsIDIzNSwgCisgICAgMjA0LCAzNCwgNSwgMjA2LCAxMjIsIDM0LCA1LCAyMDYsIDM1LCAzNCwgNSwgMjA2LCA4NCwgMzQsIDUsIDIwNiwgMTIxLCAKKyAgICAzNCwgNSwgMjA2LCAxMDQsIDM0LCA1LCAyMDYsIDEwNiwgMzQsIDUsIDIwNiwgNjEsIDM0LCA1LCAyMDYsIDI2LCAzNCwgNSwgCisgICAgMjQ3LCAzNywgMzQsIDUsIDI0NiwgMTkyLCAzNCwgNSwgMjQ2LCAyMzYsIDM0LCA1LCAyNDcsIDM2LCAzNCwgNSwgMjQ3LCA0LCAKKyAgICAzNCwgNSwgMjQ3LCA4LCAzNCwgNSwgMjQ2LCAyMTAsIDM0LCA1LCAyNDYsIDE4MSwgMzQsIDUsIDIxNSwgMjQ1LCAzNCwgNSwgCisgICAgMjE1LCAyMTAsIDM0LCA1LCAyMTUsIDIyOSwgMzQsIDUsIDIxNSwgMjQ0LCAzNCwgNSwgMjE1LCAyMzEsIDM0LCA1LCAyMTUsIAorICAgIDIzMiwgMzQsIDUsIDIxNSwgMjE3LCAzNCwgNSwgMjE1LCAyMDYsIDM0LCA1LCAyMDUsIDMyLCAzNCwgNSwgMjA1LCA1LCAzNCwgCisgICAgNSwgMjA1LCAxMSwgMzQsIDUsIDIwNSwgMzEsIDM0LCA1LCAyMDUsIDI1LCAzNCwgNSwgMjA1LCAyNiwgMzQsIDUsIDIwNSwgCisgICAgOSwgMzQsIDUsIDIwNSwgMywgMzQsIDUsIDIwNCwgMTEzLCAzNCwgNSwgMjA0LCAxMDUsIDM0LCA1LCAyMDQsIDEwOSwgMzQsIAorICAgIDUsIDIwNCwgMTEyLCAzNCwgNSwgMjA0LCAxMTAsIDM0LCA1LCAyMDQsIDExMSwgMzQsIDUsIDIwNCwgMTA3LCAzNCwgNSwgCisgICAgMjA0LCAxMDYsIDM0LCA1LCAyMzcsIDE5NSwgMzQsIDUsIDIzNiwgMTg5LCAzNCwgNSwgMjM3LCAxMTIsIDM0LCA1LCAyMzcsIAorICAgIDE5NCwgMzQsIDUsIDIzNywgMTQwLCAzNCwgNSwgMjM3LCAxNDcsIDM0LCA1LCAyMzcsIDEzLCAzNCwgNSwgMjM2LCAxNjcsIAorICAgIDM0LCA1LCAxNzIsIDM0LCA1LCAyMTQsIDIyNCwgMzQsIDUsIDIxNSwgMjA0LCAzNCwgNSwgMjE2LCAyMTAsIDM0LCA1LCAKKyAgICAyMTYsIDYxLCAzNCwgNSwgMjE2LCA3MywgMzQsIDUsIDIxNSwgMTA2LCAzNCwgNSwgMjE0LCAxODUsIDM0LCA1LCAyMTIsIAorICAgIDEzMCwgMzQsIDUsIDIyMCwgMjIwLCAzNCwgNSwgMjM2LCAxNjEsIDM0LCAzOCwgMjM2LCAzLCAyNiwgMjIsIDIyNSwgMiwgCisgICAgODEsIDM0LCAzOCwgMjIsIDIyNSwgMiwgODEsIDM0LCAzOCwgMjM2LCAzLCA4MSwgMzQsIDIxMSwgMTkzLCA4MSwgMzQsIAorICAgIDIwMCwgMjM3LCAzNCwgMjM2LCAxODMsIDIwOCwgNzYsIDM0LCAyNDYsIDcwLCAzNCwgMjEwLCAxNjcsIDM0LCAyNDYsIDc5LCAKKyAgICAzNCwgMjE1LCAyNSwgMjQ2LCA3OSwgMzQsIDIxNCwgNzksIDgxLCAzNCwgMjE2LCAxMjgsIDIxMCwgMTU0LCAzNCwgMTcsIAorICAgIDEwMiwgMzQsIDE3LCAxMDUsIDM0LCAxNywgMTQ3LCAzNCwgMTcsIDE0OSwgMzQsIDE3LCAxNjQsIDM0LCAxNywgMTg3LCAzNCwgCisgICAgMTcsIDIxMCwgMTM1LCAzNCwgMTcsIDE5MiwgMzQsIDE3LCAyMTksIDExMywgMzQsIDQxLCAyMDYsIDE2NiwgMzQsIDQxLCAKKyAgICAyMDQsIDE1OSwgMzQsIDQxLCAyMDYsIDY3LCAzNCwgNDEsIDIzNiwgMjM1LCAzNCwgNDEsIDIzNywgMTA0LCAzNCwgNDEsIAorICAgIDIwOSwgOTIsIDM0LCA0MSwgMjEwLCAxMjksIDM0LCA0MSwgMjM4LCAyMjIsIDM0LCA0MSwgMjE5LCAxMDgsIDM0LCA0MSwgCisgICAgMjMzLCA4MiwgMzQsIDQxLCAyMDYsIDE2NywgMjA2LCA1MCwgMzQsIDUsIDIxMSwgMTk4LCAyMjAsIDIzMSwgMzQsIDUsIAorICAgIDIyMCwgMjI3LCAzNCwgNSwgMjIwLCAyMjgsIDM0LCA1LCAyMjAsIDIyOSwgMzQsIDUsIDIxMSwgMTk4LCAyNDcsIDI0MCwgCisgICAgMzQsIDUsIDI0NywgMjM3LCAzNCwgNSwgMjQ3LCAyMzgsIDM0LCA1LCAyNDcsIDIzOSwgMzQsIDUsIDIxMSwgMTk4LCAyMzYsIAorICAgIDE2NywgMzQsIDUsIDIzNiwgMTYzLCAzNCwgNSwgMjM2LCAxNjQsIDM0LCA1LCAyMzYsIDE2NSwgMzQsIDUsIDIxMSwgMTk4LCAKKyAgICAyMTQsIDE4NSwgMzQsIDUsIDIxNCwgMTgxLCAzNCwgNSwgMjE0LCAxODIsIDM0LCA1LCAyMTQsIDE4MywgMzQsIDIwNSwgCisgICAgMTc1LCAxMzQsIDE5OSwgMjQ4LCAzNCwgMjA1LCAxNzUsIDEzNCwgMjQxLCAxMjEsIDM0LCAyMDUsIDE3NSwgMTM0LCAyMTMsIAorICAgIDMyLCAzNCwgMjA1LCAxNzUsIDEzNCwgMjA5LCAyNTAsIDIxMywgMzIsIDM0LCAyMDUsIDE3NSwgMTM0LCAyNDEsIDUwLCAzNCwgCisgICAgMjA1LCAxNzUsIDEzNCwgMjI2LCAyNDIsIDM0LCAyMDUsIDE3NSwgMTM0LCAyNDYsIDIxOCwgMzQsIDIwNSwgMTc1LCAxMzQsIAorICAgIDIzNCwgNzEsIDM0LCAyMDUsIDE3NSwgMTM0LCAyNDEsIDEyMCwgMzQsIDIwNSwgMTc1LCAxMzQsIDIyNSwgMjQzLCA5MSwgMSwgCisgICAgNjIsIDkxLCAxLCA3MiwgOTEsIDEsIDcwLCA5MSwgMSwgNzQsIDkxLCAxLCA2NiwgOTEsIDEsIDIwMywgMTY4LCA5MSwgMSwgCisgICAgMjM2LCA4OSwgOTEsIDEsIDE2MSwgOTEsIDEsIDIzNiwgMTUsIDkxLCAxLCAyMzUsIDE2MSwgOTEsIDEsIDIzNSwgMTE2LCAKKyAgICA5MSwgMSwgMjM1LCA1MCwgOTEsIDEsIDIzNSwgMTIsIDkxLCAxLCAxNDQsIDkxLCAxLCAyMzQsIDEzOSwgOTEsIDEsIDIzNCwgCisgICAgNzUsIDkxLCAxLCAyMzMsIDIwNywgOTEsIDEsIDIzMywgOTcsIDkxLCAxLCAyMzMsIDY5LCA5MSwgMSwgMTk0LCA5MSwgMSwgCisgICAgMjI1LCA0MCwgOTEsIDEsIDIyNCwgMjEwLCA5MSwgMSwgMjI0LCAxMTAsIDkxLCAxLCAyMjQsIDQyLCA5MSwgMSwgMjI0LCAKKyAgICAxMSwgOTEsIDEsIDE3OCwgOTEsIDEsIDIyMiwgNzYsIDkxLCAxLCAyMjEsIDIxMSwgOTEsIDEsIDIyMSwgMTM2LCA5MSwgMSwgCisgICAgMjIxLCA0MSwgOTEsIDEsIDE4OCwgOTEsIDEsIDIzMywgMjMxLCA5MSwgMSwgMjIwLCAxNDQsIDkxLCAxLCAyMjAsIDM0LCAKKyAgICA5MSwgMSwgMjE5LCAxNTAsIDkxLCAxLCAyMTgsIDI0MSwgOTEsIDEsIDIxOCwgMTMzLCA5MSwgMSwgMjE4LCA3MSwgOTEsIDEsIAorICAgIDIxNCwgOTYsIDkxLCAxLCAyMTQsIDgyLCA5MSwgMSwgMjE0LCA3NSwgOTEsIDEsIDIxNCwgNjYsIDkxLCAxLCAyMTQsIDU1LCAKKyAgICA5MSwgMSwgMjE0LCA1MywgOTEsIDEsIDIxMiwgNjQsIDkxLCAxLCAyMTIsIDEyMiwgOTEsIDEsIDIxMSwgMjAyLCA5MSwgMSwgCisgICAgMjA5LCAxODIsIDkxLCAxLCAyMDksIDI5LCA5MSwgMSwgMjA4LCAyNCwgOTEsIDEsIDIwNywgMTkxLCA5MSwgMSwgMjQyLCAKKyAgICA1OCwgOTEsIDEsIDIwNywgMzYsIDkxLCAxLCAyNDEsIDE3NSwgOTEsIDEsIDIwNiwgMjAxLCA5MSwgMSwgMjQxLCA3NiwgOTEsIAorICAgIDEsIDIwNiwgMTUsIDkxLCAxLCAyNDAsIDIxMSwgOTEsIDEsIDIzOSwgMTM3LCA5MSwgMSwgMjM5LCAxMDcsIDkxLCAxLCAKKyAgICAyNDAsIDIyMiwgOTEsIDEsIDIwNSwgMjAzLCA5MSwgMSwgMjA1LCAyMDIsIDkxLCAxLCAyMDUsIDE5MSwgOTEsIDEsIDIwNSwgCisgICAgMTkwLCA5MSwgMSwgMjA1LCAxODksIDkxLCAxLCAyMDUsIDE4OCwgOTEsIDEsIDIwNSwgMzIsIDkxLCAxLCAyMDUsIDI2LCAKKyAgICA5MSwgMSwgMjA1LCAxMSwgOTEsIDEsIDIwNSwgOSwgOTEsIDEsIDIwNSwgNSwgOTEsIDEsIDIwNSwgNCwgOTEsIDEsIDIwMSwgCisgICAgMTE0LCA5MSwgMSwgMjAxLCA2NCwgOTEsIDEsIDIwMSwgMzEsIDkxLCAxLCAyMDEsIDAsIDkxLCAxLCAyMDAsIDIxNiwgOTEsIAorICAgIDEsIDIwMCwgMjAzLCA5MSwgMSwgMTgzLCA5MSwgMSwgMjAwLCA1MSwgOTEsIDEsIDIwMCwgOSwgOTEsIDEsIDE5OSwgMjQ1LCAKKyAgICA5MSwgMSwgMTk5LCAyMTEsIDkxLCAxLCAxOTksIDE3NSwgOTEsIDEsIDIyMCwgMjM4LCA5MSwgNCwgMSwgMjAwLCA1MSwgOTEsIAorICAgIDQsIDEsIDIwMCwgOSwgOTEsIDQsIDEsIDE5OSwgMjQ1LCA5MSwgNCwgMSwgMTk5LCAyMTEsIDkxLCA0LCAxLCAxOTksIDE3NSwgCisgICAgOTEsIDQsIDEsIDIyMCwgMjM4LCAyMCwgMjEsIDIzMywgMzMsIDIwLCAyMSwgNzIsIDIwLCAyMSwgMjUyLCAxMDIsIDIwLCAKKyAgICAyMSwgNzAsIDIwLCAyMSwgMjI4LCAxNTEsIDIwLCAyMSwgNzQsIDIwLCAyMSwgMjE3LCA2MywgMjAsIDIxLCAyMDAsIDEyMiwgCisgICAgMjE3LCA2MywgMjAsIDIxLCA4OSwgMjM4LCAyNTUsIDIwLCAyMSwgODksIDcwLCAyMCwgMjEsIDYyLCAyMCwgMjEsIDI1MiwgCisgICAgMTM4LCAyMCwgMjEsIDIwMSwgNjQsIDIwLCAyMSwgMjAxLCA0NiwgMjAxLCA2NCwgMjAsIDIxLCAyMDEsIDMxLCAyMCwgMjEsIAorICAgIDIwMSwgNDYsIDIwMSwgMzEsIDIwLCAyMSwgMjAxLCAyMCwgMjAsIDIxLCAyMDEsIDQ2LCAyMDEsIDIwLCAyMCwgMjEsIDIwMSwgCisgICAgMCwgMjAsIDIxLCAyMDEsIDQ2LCAyMDEsIDAsIDIwLCAyMSwgMjAwLCAyNDQsIDIwLCAyMSwgMjAxLCA0NiwgMjAwLCAyNDQsIAorICAgIDIwLCAyMSwgMjIwLCAxMTksIDIwMCwgMjQ0LCAyMCwgMjEsIDIwMSwgMTE0LCAyMCwgMjEsIDIwMSwgNDYsIDIwMSwgMTE0LCAKKyAgICAyMCwgMjEsIDIwMSwgMTEzLCAyMCwgMjEsIDIwMSwgNDYsIDIwMSwgMTEzLCAyMCwgMjEsIDIyMCwgMTE5LCAyMDEsIDExMywgCisgICAgMjAsIDIxLCAyNTEsIDE3NiwgMjAsIDIxLCAyMDAsIDEyMiwgMjAxLCAxNDcsIDIwLCAyMSwgMjM1LCAxMjMsIDIwOCwgNzYsIAorICAgIDIwLCAyMSwgNDcsIDE2OSwgMjAsIDIxLCA0NywgMjM1LCA3MywgMjAsIDIxLCA0NywgMjQ4LCA5MywgMTY3LCAyMTMsIDI2LCAKKyAgICAyMCwgMjEsIDQ3LCAyMDUsIDE1OCwgMTY3LCAyMTMsIDI2LCAyMCwgMjEsIDQ3LCA1MSwgMTY3LCAyMTMsIDI2LCAyMCwgMjEsIAorICAgIDQ3LCAyMTMsIDI2LCAyMCwgMjEsIDQ3LCA1MywgMTY5LCAyMCwgMjEsIDQ3LCA1MywgMjA5LCAyNTAsIDgzLCAyMDgsIDM0LCAKKyAgICAyMCwgMjEsIDQ3LCAxMDEsIDI0MCwgMTgyLCAyMCwgMjEsIDQ3LCAyMDksIDI1MCwgMjMzLCAxNzcsIDk3LCAyMCwgMjEsIAorICAgIDQ3LCAyMTUsIDExMywgMjAsIDIxLCA0NywgMTI3LCAyMDcsIDE3LCAyMCwgMjEsIDIzOCwgMTc5LCAyMCwgMjEsIDIyOCwgCisgICAgMTE3LCAyMCwgMjEsIDIxNywgNzgsIDIwLCAyMSwgMjUxLCA4NSwgMjAsIDIxLCAyMTYsIDczLCAyMCwgMjEsIDIxNiwgMjA4LCAKKyAgICAyMCwgMjEsIDIxNSwgMjA0LCAyMCwgMjEsIDIxNSwgMTY2LCAyMCwgMjEsIDIxNSwgMTA2LCAyMCwgMjEsIDIxNSwgODEsIAorICAgIDIwLCAyMSwgMjAwLCAxMjIsIDIxNSwgODEsIDIwLCAyMSwgODksIDIzNCwgMTIwLCAyMCwgMjEsIDg5LCAyMzQsIDc1LCAyMCwgCisgICAgMjEsIDE3MiwgMjAsIDIxLCAyMTYsIDIxMCwgMjAsIDIxLCAyMTQsIDE4MywgMjAsIDIxLCAyMDEsIDQ2LCAyMTQsIDE4MywgCisgICAgMjAsIDIxLCAyMTQsIDE4MSwgMjAsIDIxLCAyMDEsIDQ2LCAyMTQsIDE4MSwgMjAsIDIxLCAyMTQsIDE4MCwgMjAsIDIxLCAKKyAgICAyMDEsIDQ2LCAyMTQsIDE4MCwgMjAsIDIxLCAyMTQsIDE3OCwgMjAsIDIxLCAyMDEsIDQ2LCAyMTQsIDE3OCwgMjAsIDIxLCAKKyAgICAyMTQsIDE3NywgMjAsIDIxLCAyMDEsIDQ2LCAyMTQsIDE3NywgMjAsIDIxLCAyMTQsIDE4NSwgMjAsIDIxLCAyMDEsIDQ2LCAKKyAgICAyMTQsIDE4NSwgMjAsIDIxLCAyMTQsIDE4NCwgMjAsIDIxLCAyMDEsIDQ2LCAyMTQsIDE4NCwgMjAsIDIxLCAyMDAsIDEyMiwgCisgICAgMjE0LCAxODQsIDIwLCAyMSwgMjE2LCAyMjYsIDIwLCAyMSwgMjAxLCA0NiwgMjE2LCAyMjYsIDIwLCAyMSwgODksIDIzNCwgCisgICAgMjQ3LCAyMCwgMjEsIDIwNiwgMjAxLCAyMCwgMjEsIDIwNywgMzAsIDIwLCAyMSwgMjA2LCAxNSwgMjAsIDIxLCAyMDUsIAorICAgIDI1NSwgMjAsIDIxLCAxMzgsIDIwLCAyMSwgMjA1LCAxNjEsIDIwLCAyMSwgMjAwLCAxMjIsIDIwNSwgMTYxLCAyMCwgMjEsIAorICAgIDg5LCAyNDEsIDE2MSwgMjAsIDIxLCA4OSwgMjQxLCA3NiwgMjAsIDIxLCAyMDcsIDM2LCAyMCwgMjEsIDIwNywgMzIsIDIwLCAKKyAgICAyMSwgMjA0LCAxNjgsIDIwLCAyMSwgMjAxLCA0NiwgMjA0LCAxNjgsIDIwLCAyMSwgMjA0LCAxNDcsIDIwLCAyMSwgMjAxLCAKKyAgICA0NiwgMjA0LCAxNDcsIDIwLCAyMSwgMjA0LCAxNDYsIDIwLCAyMSwgMjAxLCA0NiwgMjA0LCAxNDYsIDIwLCAyMSwgMTA1LCAKKyAgICAyMCwgMjEsIDIwMSwgNDYsIDEwNSwgMjAsIDIxLCAyMDQsIDEzNywgMjAsIDIxLCAyMDEsIDQ2LCAyMDQsIDEzNywgMjAsIAorICAgIDIxLCAyMDQsIDE3MCwgMjAsIDIxLCAyMDEsIDQ2LCAyMDQsIDE3MCwgMjAsIDIxLCAyMDQsIDE2OSwgMjAsIDIxLCAyMDEsIAorICAgIDQ2LCAyMDQsIDE2OSwgMjAsIDIxLCAyMjAsIDExOSwgMjA0LCAxNjksIDIwLCAyMSwgMjA3LCA4MywgMjAsIDIxLCAyMDQsIAorICAgIDI0OCwgMjAsIDIxLCAyMDQsIDIzMiwgMjAsIDIxLCAyMDQsIDIzMCwgMjAsIDIxLCAyMDQsIDI1MywgMjAsIDIxLCAyMjcsIAorICAgIDgsIDIwLCAyMSwgMjI3LCAxMDAsIDIwLCAyMSwgMjI2LCAxNjMsIDIwLCAyMSwgMjI2LCAxNTAsIDIwLCAyMSwgMjI2LCA4OCwgCisgICAgMjAsIDIxLCAyMjYsIDY4LCAyMCwgMjEsIDIwMCwgMTIyLCAyMjYsIDY4LCAyMCwgMjEsIDE2MSwgMjAsIDIxLCAyMjcsIAorICAgIDEwNSwgMjAsIDIxLCAyMjUsIDIyNCwgMjAsIDIxLCAyMDEsIDQ2LCAyMjUsIDIyNCwgMjAsIDIxLCAyMjUsIDIyMiwgMjAsIAorICAgIDIxLCAyMDEsIDQ2LCAyMjUsIDIyMiwgMjAsIDIxLCAyMjUsIDIyMSwgMjAsIDIxLCAyMDEsIDQ2LCAyMjUsIDIyMSwgMjAsIAorICAgIDIxLCAyMjUsIDIxOSwgMjAsIDIxLCAyMDEsIDQ2LCAyMjUsIDIxOSwgMjAsIDIxLCAyMjUsIDIxOCwgMjAsIDIxLCAyMDEsIAorICAgIDQ2LCAyMjUsIDIxOCwgMjAsIDIxLCAyMjUsIDIyOSwgMjAsIDIxLCAyMDEsIDQ2LCAyMjUsIDIyOSwgMjAsIDIxLCAyMjUsIAorICAgIDIyOCwgMjAsIDIxLCAyMDEsIDQ2LCAyMjUsIDIyOCwgMjAsIDIxLCAyMjAsIDExOSwgMjI1LCAyMjgsIDIwLCAyMSwgMjI3LCAKKyAgICAxMTgsIDIwLCAyMSwgMjI1LCAyMzAsIDIwLCAyMSwgMjA4LCAyNTMsIDIyNiwgMjU0LCAyMCwgMjEsIDIwOCwgMjUzLCAyMjYsIAorICAgIDE1MSwgMjAsIDIxLCAyMDgsIDI1MywgMjI2LCA4MiwgMjAsIDIxLCAyMDgsIDI1MywgMjI3LCA4NCwgMjAsIDIxLCAyNDcsIAorICAgIDc2LCAyMCwgMjEsIDI0NywgMTg4LCAyMCwgMjEsIDI0NiwgMTczLCAyMCwgMjEsIDI0NiwgMTYzLCAyMCwgMjEsIDI0NiwgCisgICAgOTEsIDIwLCAyMSwgMjQzLCAzMCwgMjAsIDIxLCAyMDAsIDEyMiwgMjQzLCAzMCwgMjAsIDIxLCAyNDcsIDE5MCwgMjAsIDIxLCAKKyAgICAyNDcsIDE4OSwgMjAsIDIxLCAyNDIsIDE3NCwgMjAsIDIxLCAyMDEsIDQ2LCAyNDIsIDE3NCwgMjAsIDIxLCAyNDIsIDE3MiwgCisgICAgMjAsIDIxLCAyMDEsIDQ2LCAyNDIsIDE3MiwgMjAsIDIxLCAyNDIsIDE3MSwgMjAsIDIxLCAyMDEsIDQ2LCAyNDIsIDE3MSwgCisgICAgMjAsIDIxLCAyNDIsIDE3MCwgMjAsIDIxLCAyMDEsIDQ2LCAyNDIsIDE3MCwgMjAsIDIxLCAyNDIsIDE2OSwgMjAsIDIxLCAKKyAgICAyMDEsIDQ2LCAyNDIsIDE2OSwgMjAsIDIxLCAyNDIsIDE3NiwgMjAsIDIxLCAyMDEsIDQ2LCAyNDIsIDE3NiwgMjAsIDIxLCAKKyAgICAyNDIsIDE3NSwgMjAsIDIxLCAyMDEsIDQ2LCAyNDIsIDE3NSwgMjAsIDIxLCAyMjAsIDExOSwgMjQyLCAxNzUsIDIwLCAyMSwgCisgICAgMjQ3LCAyMjMsIDIwLCAyMSwgMjExLCAyMzIsIDIwNiwgMTI0LCAyMCwgMjEsIDIyMiwgNzYsIDIwLCAyMSwgMjIyLCAyMzIsIAorICAgIDIwLCAyMSwgMjIxLCAyMTEsIDIwLCAyMSwgMjIxLCAxODEsIDIwLCAyMSwgMjIxLCAxMzYsIDIwLCAyMSwgMjIxLCA4NywgCisgICAgMjAsIDIxLCAyMDAsIDEyMiwgMjIxLCA4NywgMjAsIDIxLCAxNzgsIDIwLCAyMSwgMjIyLCAyMzMsIDIwLCAyMSwgMjIwLCAKKyAgICAyMjksIDIwLCAyMSwgMjAxLCA0NiwgMjIwLCAyMjksIDIwLCAyMSwgMjIwLCAyMjcsIDIwLCAyMSwgMjAxLCA0NiwgMjIwLCAKKyAgICAyMjcsIDIwLCAyMSwgMjIwLCAyMjYsIDIwLCAyMSwgMjAxLCA0NiwgMjIwLCAyMjYsIDIwLCAyMSwgMjIwLCAyMjUsIDIwLCAKKyAgICAyMSwgMjAxLCA0NiwgMjIwLCAyMjUsIDIwLCAyMSwgMjIwLCAyMjQsIDIwLCAyMSwgMjAxLCA0NiwgMjIwLCAyMjQsIDIwLCAKKyAgICAyMSwgMjIwLCAyMzEsIDIwLCAyMSwgMjAxLCA0NiwgMjIwLCAyMzEsIDIwLCAyMSwgMjIwLCAyMzAsIDIwLCAyMSwgMjAxLCAKKyAgICA0NiwgMjIwLCAyMzAsIDIwLCAyMSwgMjIwLCAxMTksIDIyMCwgMjMwLCAyMCwgMjEsIDIyMywgMjQzLCAyMCwgMjEsIDIwMSwgCisgICAgNDYsIDIyMywgMjQzLCAyMCwgMjEsIDIyMSwgMjE1LCAyMCwgMjEsIDI1MCwgMTUzLCAyMjMsIDI0MywgMjAsIDIxLCAyMTEsIAorICAgIDIzMiwgMjIzLCAyNDMsIDIwLCAyMSwgMjIwLCAzNCwgMjAsIDIxLCAyMjAsIDE1NiwgMjAsIDIxLCAyMTksIDE1MCwgMjAsIAorICAgIDIxLCAyMTksIDEyNSwgMjAsIDIxLCAyMTgsIDI0MSwgMjAsIDIxLCAyMTgsIDIyOSwgMjAsIDIxLCAyMDAsIDEyMiwgMjE4LCAKKyAgICAyMjksIDIwLCAyMSwgMTg4LCAyMCwgMjEsIDIyMCwgMTU3LCAyMCwgMjEsIDIxOCwgNjcsIDIwLCAyMSwgMjAxLCA0NiwgCisgICAgMjE4LCA2NywgMjAsIDIxLCAyMTgsIDY5LCAyMCwgMjEsIDIwMSwgNDYsIDIxOCwgNjksIDIwLCAyMSwgMjE4LCA2OCwgMjAsIAorICAgIDIxLCAyMDEsIDQ2LCAyMTgsIDY4LCAyMCwgMjEsIDIyMCwgMTE5LCAyMTgsIDY4LCAyMCwgMjEsIDIyMCwgMjE0LCAyMCwgCisgICAgMjEsIDg5LCAyMTksIDI1NSwgMjAsIDIxLCAyMTksIDE1NSwgMjAsIDIxLCAyMjUsIDQwLCAyMCwgMjEsIDIyNSwgMTc0LCAKKyAgICAyMCwgMjEsIDIyNCwgMjEwLCAyMCwgMjEsIDIyNCwgMTkyLCAyMCwgMjEsIDIyNCwgMTEwLCAyMCwgMjEsIDIyNCwgNzgsIAorICAgIDIwLCAyMSwgMjAwLCAxMjIsIDIyNCwgNzgsIDIwLCAyMSwgMTk0LCAyMCwgMjEsIDIyNSwgMTc1LCAyMCwgMjEsIDIyNCwgOCwgCisgICAgMjAsIDIxLCAyMDEsIDQ2LCAyMjQsIDgsIDIwLCAyMSwgMjI0LCA3LCAyMCwgMjEsIDIwMSwgNDYsIDIyNCwgNywgMjAsIDIxLCAKKyAgICAyMjQsIDYsIDIwLCAyMSwgMjAxLCA0NiwgMjI0LCA2LCAyMCwgMjEsIDIyNCwgNSwgMjAsIDIxLCAyMDEsIDQ2LCAyMjQsIDUsIAorICAgIDIwLCAyMSwgMjI0LCA0LCAyMCwgMjEsIDIwMSwgNDYsIDIyNCwgNCwgMjAsIDIxLCAyMjQsIDEwLCAyMCwgMjEsIDIwMSwgCisgICAgNDYsIDIyNCwgMTAsIDIwLCAyMSwgMjI0LCA5LCAyMCwgMjEsIDIwMSwgNDYsIDIyNCwgOSwgMjAsIDIxLCAxNTYsIDIwLCAKKyAgICAyMSwgMjAxLCA0NiwgMTU2LCAyMCwgMjEsIDE3OSwgMTU2LCAyMCwgMjEsIDIxMSwgMjAyLCAyMCwgMjEsIDIxMiwgNTksIAorICAgIDIwLCAyMSwgMjA5LCAxODIsIDIwLCAyMSwgMjA5LCAxNjEsIDIwLCAyMSwgMjA5LCAyOSwgMjAsIDIxLCAyMDksIDEwLCAyMCwgCisgICAgMjEsIDIwMCwgMTIyLCAyMDksIDEwLCAyMCwgMjEsIDIxMiwgNjQsIDIwLCAyMSwgMjEyLCA2MSwgMjAsIDIxLCAyMDcsIAorICAgIDE4MiwgMjAsIDIxLCAyMDEsIDQ2LCAyMDcsIDE4MiwgMjAsIDIxLCAyMDcsIDE3NiwgMjAsIDIxLCAyMDEsIDQ2LCAyMDcsIAorICAgIDE3NiwgMjAsIDIxLCAyMDcsIDE3NSwgMjAsIDIxLCAyMDEsIDQ2LCAyMDcsIDE3NSwgMjAsIDIxLCAyMDcsIDE3MSwgMjAsIAorICAgIDIxLCAyMDEsIDQ2LCAyMDcsIDE3MSwgMjAsIDIxLCAyMDcsIDE3MCwgMjAsIDIxLCAyMDEsIDQ2LCAyMDcsIDE3MCwgMjAsIAorICAgIDIxLCAyMDcsIDE4NiwgMjAsIDIxLCAyMDEsIDQ2LCAyMDcsIDE4NiwgMjAsIDIxLCAyMDcsIDE4NSwgMjAsIDIxLCAyMDEsIAorICAgIDQ2LCAyMDcsIDE4NSwgMjAsIDIxLCAyMjAsIDExOSwgMjA3LCAxODUsIDIwLCAyMSwgMjEyLCAxMjIsIDIwLCAyMSwgMjUwLCAKKyAgICAxNTMsIDIxMiwgMTIyLCAyMCwgMjEsIDIwNywgMTg3LCAyMCwgMjEsIDI0OCwgMTQxLCAyMTIsIDEyMiwgMjAsIDIxLCAyMjEsIAorICAgIDgwLCAyMDksIDg4LCAyMCwgMjEsIDIyMCwgMTE5LCAyMDksIDc5LCAyMCwgMjEsIDIyMCwgMTE5LCAyMTIsIDEyMCwgMjAsIAorICAgIDIxLCAyMjAsIDExOSwgMjA4LCAxOTUsIDIwLCAyMSwgMjIwLCAxMTksIDIwOCwgMjcsIDIwLCAyMSwgMjIwLCAxMTksIDIwOSwgCisgICAgNzgsIDIwLCAyMSwgMjIwLCAxMTksIDIxMSwgMjA1LCAyMCwgMjEsIDIxMCwgNjUsIDIwLCAyMSwgMjEwLCAzMywgMjAsIDIxLCAKKyAgICAyMTAsIDI4LCAyMCwgMjEsIDIxMCwgOCwgMjAsIDIxLCAyMTAsIDIsIDIwLCAyMSwgMjEwLCAxMTQsIDIwLCAyMSwgMjEwLCAKKyAgICAxMDksIDIwLCAyMSwgMjA5LCAxOTcsIDIwLCAyMSwgMjAxLCA0NiwgMjA5LCAxOTcsIDIwLCAyMSwgMjA5LCAxOTYsIDIwLCAKKyAgICAyMSwgMjAxLCA0NiwgMjA5LCAxOTYsIDIwLCAyMSwgMjA5LCAxOTUsIDIwLCAyMSwgMjAxLCA0NiwgMjA5LCAxOTUsIDIwLCAKKyAgICAyMSwgMjA5LCAxOTQsIDIwLCAyMSwgMjAxLCA0NiwgMjA5LCAxOTQsIDIwLCAyMSwgMjA5LCAxOTMsIDIwLCAyMSwgMjAxLCAKKyAgICA0NiwgMjA5LCAxOTMsIDIwLCAyMSwgMjA5LCAyMDAsIDIwLCAyMSwgMjAxLCA0NiwgMjA5LCAyMDAsIDIwLCAyMSwgMjA5LCAKKyAgICAxOTksIDIwLCAyMSwgMjAxLCA0NiwgMjA5LCAxOTksIDIwLCAyMSwgMjEwLCAxMTYsIDIwLCAyMSwgMjAwLCA1MSwgMjAsIAorICAgIDIxLCAyMDAsIDEwNywgMjAsIDIxLCAyMDAsIDksIDIwLCAyMSwgMjAwLCAwLCAyMCwgMjEsIDE5OSwgMjQ1LCAyMCwgMjEsIAorICAgIDE5OSwgMjMwLCAyMCwgMjEsIDIwMCwgMTIyLCAxOTksIDIzMCwgMjAsIDIxLCAxODMsIDIwLCAyMSwgMjAwLCAxMDksIDIwLCAKKyAgICAyMSwgMTk5LCAxNzIsIDIwLCAyMSwgMjAxLCA0NiwgMTk5LCAxNzIsIDIwLCAyMSwgMTk5LCAxNzEsIDIwLCAyMSwgMjAxLCAKKyAgICA0NiwgMTk5LCAxNzEsIDIwLCAyMSwgMTk5LCAxNzAsIDIwLCAyMSwgMjAxLCA0NiwgMTk5LCAxNzAsIDIwLCAyMSwgMTk5LCAKKyAgICAxNjksIDIwLCAyMSwgMjAxLCA0NiwgMTk5LCAxNjksIDIwLCAyMSwgMTk5LCAxNjgsIDIwLCAyMSwgMjAxLCA0NiwgMTk5LCAKKyAgICAxNjgsIDIwLCAyMSwgMTk5LCAxNzQsIDIwLCAyMSwgMjAxLCA0NiwgMTk5LCAxNzQsIDIwLCAyMSwgMTk5LCAxNzMsIDIwLCAKKyAgICAyMSwgMjAxLCA0NiwgMTk5LCAxNzMsIDIwLCAyMSwgMjIwLCAxMTksIDE5OSwgMTczLCAyMCwgMjEsIDIwMCwgMTIzLCAyMCwgCisgICAgMjEsIDI0OCwgMTg2LCAyMDAsIDEyMywgMjAsIDIxLCAyMDEsIDQ2LCAyMDAsIDEyMywgMjAsIDIxLCAyMTEsIDIzMiwgMjAwLCAKKyAgICA5LCAyMCwgMjEsIDIxMywgMTkwLCAyMCwgMjEsIDIxNCwgMzIsIDIxMywgMTkwLCAyMCwgMjEsIDIwMSwgNDYsIDIyNSwgNDAsIAorICAgIDIwLCAyMSwgMjEzLCAyNDcsIDIwLCAyMSwgMjEzLCA4OCwgMjAsIDIxLCAyMTMsIDMzLCAyMCwgMjEsIDIxMywgMSwgMjAsIAorICAgIDIxLCAyMTIsIDIzOCwgMjAsIDIxLCAyMDEsIDQ2LCAyMjQsIDExMCwgMjAsIDIxLCAyMTMsIDI1MiwgMjAsIDIxLCAyMTMsIAorICAgIDI0OCwgMjAsIDIxLCAyMDEsIDQ2LCAxOTQsIDIwLCAyMSwgMjEyLCAxMzksIDIwLCAyMSwgMjAxLCA0NiwgMjEyLCAxMzksIAorICAgIDIwLCAyMSwgMTQ2LCAyMCwgMjEsIDIwMSwgNDYsIDE0NiwgMjAsIDIxLCAxNzksIDE0NiwgMjAsIDIxLCAyMzcsIDE0NywgCisgICAgMjAsIDIxLCAyMzcsIDE5MiwgMjAsIDIxLCAyMzcsIDExMiwgMjAsIDIxLCAyMzcsIDk4LCAyMCwgMjEsIDIzNywgMTMsIDIwLCAKKyAgICAyMSwgMjM3LCAyLCAyMCwgMjEsIDIzNywgMTk1LCAyMCwgMjEsIDIzNywgMTk0LCAyMCwgMjEsIDIzNiwgMTY2LCAyMCwgMjEsIAorICAgIDIwMSwgNDYsIDIzNiwgMTY2LCAyMCwgMjEsIDIzOCwgNSwgMjAsIDIxLCAyMDYsIDEwNiwgMjAsIDIxLCAyMjAsIDIxMiwgCisgICAgMjA2LCAxMDYsIDIwLCAyMSwgMjA2LCA4NCwgMjAsIDIxLCAyMjAsIDIxMiwgMjA2LCA4NCwgMjAsIDIxLCAyMDYsIDc4LCAKKyAgICAyMCwgMjEsIDIyMCwgMjEyLCAyMDYsIDc4LCAyMCwgMjEsIDIwNiwgNjEsIDIwLCAyMSwgMjA2LCA1NiwgMjAsIDIxLCAyMDYsIAorICAgIDEyMiwgMjAsIDIxLCAyMDYsIDEyMSwgMjAsIDIxLCAyMDYsIDI1LCAyMCwgMjEsIDIwMSwgNDYsIDIwNiwgMjUsIDIwLCAyMSwgCisgICAgMjA2LCAxMjQsIDIwLCAyMSwgMjA0LCAyMzksIDIwLCAyMSwgMjA0LCAyMzcsIDIwLCAyMSwgMjA0LCAyMzYsIDIwLCAyMSwgCisgICAgMjA0LCAyNDEsIDIwLCAyMSwgMjA0LCAyNDIsIDIwLCAyMSwgMjA0LCAxMzEsIDIwLCAyMSwgMjA0LCAxMzAsIDIwLCAyMSwgCisgICAgMjA0LCAxMjksIDIwLCAyMSwgMjA0LCAxMzMsIDIwLCAyMSwgMjE4LCA4OCwgMjM0LCAxMzksIDIwLCAyMSwgMjE4LCA4OCwgCisgICAgMjM0LCA3NSwgMjAsIDIxLCAyMTgsIDg4LCAyMzQsIDU0LCAyMCwgMjEsIDIxOCwgODgsIDIzMywgMjA3LCAyMCwgMjEsIAorICAgIDIxOCwgODgsIDIzMywgMTg4LCAyMCwgMjEsIDIxOCwgODgsIDE0NCwgMjAsIDIxLCAyMTgsIDg4LCAyMzQsIDIzMywgMjAsIAorICAgIDIxLCAyMTgsIDg4LCAyMzQsIDI0NywgMjAsIDIxLCAyMTgsIDg3LCAyMzQsIDI0NywgMjAsIDIxLCAyMzQsIDQxLCAyMCwgCisgICAgMjEsIDIxNCwgMTU1LCAyMCwgMjEsIDIxNCwgMTIxLCAyMCwgMjEsIDIxNCwgMTE1LCAyMCwgMjEsIDIxNCwgMTA5LCAyMCwgCisgICAgMjEsIDIxNCwgMTA0LCAyMCwgMjEsIDIxNCwgMTU5LCAyMCwgMjEsIDIxNCwgMTU4LCAyMCwgMjEsIDIxNCwgMTY3LCAyMCwgCisgICAgMjEsIDIwNSwgMTk5LCAyMCwgMjEsIDIwNSwgMTk3LCAyMCwgMjEsIDIwNSwgMTk2LCAyMCwgMjEsIDIwNSwgMjAwLCAyMCwgCisgICAgMjEsIDIwMSwgNDYsIDIxMywgMTkwLCAyMCwgMjEsIDIwMSwgNDYsIDIxMywgODgsIDIwLCAyMSwgMjAxLCA0NiwgMjEzLCAxLCAKKyAgICAyMCwgMjEsIDIwMSwgNDYsIDIxMywgMjUyLCAyMCwgMjEsIDIxOSwgMjUxLCAyMCwgMjEsIDIxOSwgMjAxLCAyMCwgMjEsIAorICAgIDIxOSwgMTk3LCAyMCwgMjEsIDIxOSwgMTc4LCAyMCwgMjEsIDIxOSwgMTczLCAyMCwgMjEsIDIxOSwgMjUzLCAyMCwgMjEsIAorICAgIDIxOSwgMjUyLCAyMCwgMjEsIDIxOSwgMjU1LCAyMCwgMjEsIDIxOSwgMTQsIDIwLCAyMSwgMjExLCAyMzIsIDIxMCwgNjUsIAorICAgIDIwLCAyMSwgMjExLCAyMzIsIDIxMCwgMzMsIDIwLCAyMSwgMjExLCAyMzIsIDIxMCwgOCwgMjAsIDIxLCAyMTEsIDIzMiwgCisgICAgMjEwLCAxMTQsIDIwLCAyMSwgMjAwLCAyNDIsIDIwNiwgMTA2LCAyMCwgMjEsIDIwMCwgMjQyLCAyMDYsIDg0LCAyMCwgMjEsIAorICAgIDIwMCwgMjQyLCAyMDYsIDYxLCAyMCwgMjEsIDIwMCwgMjQyLCAyMDYsIDEyMiwgMjAsIDIxLCAyMDAsIDI0MiwgMjA2LCAKKyAgICAxMjQsIDIwLCAyMSwgMjI0LCAyMTcsIDIwLCAyMSwgMjI0LCAyMTYsIDIwLCAyMSwgMjI0LCAyMTUsIDIwLCAyMSwgMjI0LCAKKyAgICAyMTQsIDIwLCAyMSwgMjI0LCAyMjMsIDIwLCAyMSwgMjI0LCAyMjIsIDIwLCAyMSwgMjI0LCAyMjQsIDIwLCAyMSwgMjA2LCAKKyAgICAxMjMsIDIwNiwgMTA2LCAyMCwgMjEsIDIwNiwgMTIzLCAyMDYsIDg0LCAyMCwgMjEsIDIwNiwgMTIzLCAyMDYsIDc4LCAyMCwgCisgICAgMjEsIDIwNiwgMTIzLCAyMDYsIDYxLCAyMCwgMjEsIDIwNiwgMTIzLCAyMDYsIDU2LCAyMCwgMjEsIDIwNiwgMTIzLCAyMDYsIAorICAgIDEyMiwgMjAsIDIxLCAyMDYsIDEyMywgMjA2LCAxMjEsIDIwLCAyMSwgMjA2LCAxMjMsIDIwNiwgMTI0LCAyMCwgMjEsIDI1MSwgCisgICAgMTYyLCAyNTAsIDEwMywgMjAsIDIxLCAyNDgsIDE0MSwgNzIsIDIwLCAyMSwgMjQ4LCAxNDEsIDcwLCAyMCwgMjEsIDI0OCwgCisgICAgMTQxLCA3NCwgMjAsIDIxLCAyNDgsIDE0MSwgNjIsIDIwLCAyMSwgMjQ4LCAxNDEsIDIwMSwgNjQsIDIwLCAyMSwgMjQ4LCAKKyAgICAxNDEsIDIwMSwgMzEsIDIwLCAyMSwgMjQ4LCAxNDEsIDIwMSwgMCwgMjAsIDIxLCAyNDgsIDE0MSwgMjAxLCAxMTQsIDIwLCAKKyAgICAyMSwgMjQ4LCAxNDEsIDIyMCwgMzQsIDIwLCAyMSwgMjQ4LCAxNDEsIDIxOSwgMTUwLCAyMCwgMjEsIDI0OCwgMTQxLCAyMTgsIAorICAgIDI0MSwgMjAsIDIxLCAyNDgsIDE0MSwgMTg4LCAyMCwgMjEsIDI0OCwgMTQxLCAyMjcsIDgsIDIwLCAyMSwgMjQ4LCAxNDEsIAorICAgIDIyNiwgMTYzLCAyMCwgMjEsIDI0OCwgMTQxLCAyMjYsIDg4LCAyMCwgMjEsIDI0OCwgMTQxLCAxNjEsIDIwLCAyMSwgMjExLCAKKyAgICAyMzIsIDIzNCwgMTM5LCAyMCwgMjEsIDIxMSwgMjMyLCAyMzQsIDc1LCAyMCwgMjEsIDIxMSwgMjMyLCAyMzMsIDIwNywgMjAsIAorICAgIDIxLCAyMTEsIDIzMiwgMTQ0LCAyMCwgMjEsIDg5LCAyMzUsIDE2NywgMjAsIDIxLCA4OSwgMjM1LCAxNzEsIDIwLCAyMSwgCisgICAgODksIDIzNSwgMTg1LCAyMCwgMjEsIDg5LCAyMzUsIDE4NCwgMjAsIDIxLCA4OSwgMjM1LCAxNzMsIDIwLCAyMSwgODksIAorICAgIDIzNSwgMTk5LCAyMCwgMjEsIDg5LCAyMTIsIDE3NSwgMjAsIDIxLCA4OSwgMjEzLCAxLCAyMCwgMjEsIDg5LCAyMTMsIDE5MCwgCisgICAgMjAsIDIxLCA4OSwgMjEzLCAxNjcsIDIwLCAyMSwgODksIDIxMywgODgsIDIwLCAyMSwgODksIDIxMywgMjUyLCAyMCwgMjEsIAorICAgIDg5LCAyMDAsIDIxNiwgMjAsIDIxLCA4OSwgMjAxLCAwLCAyMCwgMjEsIDg5LCAyMDEsIDY0LCAyMCwgMjEsIDg5LCAyMDEsIAorICAgIDU3LCAyMCwgMjEsIDg5LCAyMDEsIDMxLCAyMCwgMjEsIDg5LCAyMDEsIDExNCwgMjAsIDIxLCA4OSwgMjMzLCA2MSwgMjAsIAorICAgIDIxLCA4OSwgMjMzLCA2MiwgMjAsIDIxLCA4OSwgMjMzLCA2NSwgMjAsIDIxLCA4OSwgMjMzLCA2NCwgMjAsIDIxLCA4OSwgCisgICAgMjMzLCA2MywgMjAsIDIxLCA4OSwgMjMzLCA2OCwgMjAsIDIxLCA4OSwgMjA2LCAzNSwgMjAsIDIxLCA4OSwgMjA2LCA2MSwgCisgICAgMjAsIDIxLCA4OSwgMjA2LCAxMDYsIDIwLCAyMSwgODksIDIwNiwgMTA0LCAyMCwgMjEsIDg5LCAyMDYsIDg0LCAyMCwgMjEsIAorICAgIDg5LCAyMDYsIDEyMiwgMjAsIDIxLCA4OSwgMjA0LCAyMjAsIDIwLCAyMSwgODksIDIwNCwgMjMwLCAyMCwgMjEsIDg5LCAKKyAgICAyMDQsIDI0OCwgMjAsIDIxLCA4OSwgMjA0LCAyNDcsIDIwLCAyMSwgODksIDIwNCwgMjMyLCAyMCwgMjEsIDg5LCAyMDQsIAorICAgIDI1MywgMjAsIDIxLCA4OSwgMjE0LCAyMjQsIDIwLCAyMSwgODksIDIxNSwgMTA2LCAyMCwgMjEsIDg5LCAyMTYsIDczLCAyMCwgCisgICAgMjEsIDg5LCAyMTYsIDYxLCAyMCwgMjEsIDg5LCAyMTUsIDIwNCwgMjAsIDIxLCA4OSwgMTcyLCAyMCwgMjEsIDg5LCAyMTYsIAorICAgIDIyNiwgMjAsIDIxLCA4OSwgMjM1LCA1MCwgMjAsIDIxLCA4OSwgMjM1LCAxMTYsIDIwLCAyMSwgODksIDIzNiwgMTUsIDIwLCAKKyAgICAyMSwgODksIDIzNiwgNywgMjAsIDIxLCA4OSwgMjM1LCAxNjEsIDIwLCAyMSwgODksIDIzNiwgODksIDIwLCAyMSwgODksIAorICAgIDIyNiwgMTcyLCAyMCwgMjEsIDg5LCAyMjYsIDE3OCwgMjAsIDIxLCA4OSwgMjI2LCAxOTIsIDIwLCAyMSwgODksIDIyNiwgCisgICAgMTkxLCAyMCwgMjEsIDg5LCAyMjYsIDE4NSwgMjAsIDIxLCA4OSwgMjI2LCAyMDcsIDIwLCAyMSwgODksIDIyNiwgMTA0LCAKKyAgICAyMCwgMjEsIDg5LCAyMjYsIDEwNSwgMjAsIDIxLCA4OSwgMjI2LCAxMDgsIDIwLCAyMSwgODksIDIyNiwgMTA3LCAyMCwgMjEsIAorICAgIDg5LCAyMjYsIDEwNiwgMjAsIDIxLCA4OSwgMjI2LCAxMDksIDIwLCAyMSwgODksIDIyNiwgMTEwLCAyMCwgMjEsIDg5LCAKKyAgICAyMTgsIDEzMywgMjAsIDIxLCA4OSwgMjE4LCAyNDEsIDIwLCAyMSwgODksIDIyMCwgMzQsIDIwLCAyMSwgODksIDIyMCwgMjksIAorICAgIDIwLCAyMSwgODksIDIxOSwgMTUwLCAyMCwgMjEsIDg5LCAxODgsIDIwLCAyMSwgODksIDIyMSwgNDEsIDIwLCAyMSwgODksIAorICAgIDIyMSwgMTM2LCAyMCwgMjEsIDg5LCAyMjIsIDc2LCAyMCwgMjEsIDg5LCAyMjIsIDY0LCAyMCwgMjEsIDg5LCAyMjEsIDIxMSwgCisgICAgMjAsIDIxLCA4OSwgMTc4LCAyMCwgMjEsIDg5LCAxOTksIDIxMSwgMjAsIDIxLCA4OSwgMTk5LCAyNDUsIDIwLCAyMSwgODksIAorICAgIDIwMCwgNTEsIDIwLCAyMSwgODksIDIwMCwgNDgsIDIwLCAyMSwgODksIDIwMCwgOSwgMjAsIDIxLCA4OSwgMTgzLCAyMCwgCisgICAgMjEsIDg5LCAyMjcsIDE0NywgMjAsIDIxLCAyMTEsIDIzMiwgMjI3LCAxNDcsIDIwLCAyMSwgODksIDIyNywgMTY2LCAyMCwgCisgICAgMjEsIDg5LCAyMjcsIDIyNywgMjAsIDIxLCA4OSwgMjI3LCAyMjUsIDIwLCAyMSwgODksIDIyNywgMjA3LCAyMCwgMjEsIAorICAgIDIxMSwgMjMyLCAyMjcsIDIwNywgMjAsIDIxLCA4OSwgMjI3LCAyNDgsIDIwLCAyMSwgODksIDIyNywgMTc5LCAyMCwgMjEsIAorICAgIDg5LCAyMjcsIDE4MywgMjAsIDIxLCA4OSwgMjI3LCAxOTMsIDIwLCAyMSwgODksIDIyNywgMTkyLCAyMCwgMjEsIDg5LCAKKyAgICAyMjcsIDE5MSwgMjAsIDIxLCA4OSwgMjI3LCAxOTQsIDIwLCAyMSwgODksIDIyNCwgNDIsIDIwLCAyMSwgODksIDIyNCwgCisgICAgMTEwLCAyMCwgMjEsIDg5LCAyMjUsIDQwLCAyMCwgMjEsIDg5LCAyMjUsIDMyLCAyMCwgMjEsIDg5LCAyMjQsIDIxMCwgMjAsIAorICAgIDIxLCA4OSwgMTk0LCAyMCwgMjEsIDg5LCAyNDAsIDIxNSwgMjAsIDIxLCA4OSwgMjQwLCAyMTYsIDIwLCAyMSwgODksIDI0MCwgCisgICAgMjIxLCAyMCwgMjEsIDg5LCAyNDAsIDIyMCwgMjAsIDIxLCA4OSwgMjQwLCAyMTcsIDIwLCAyMSwgODksIDI0MCwgMjIyLCAKKyAgICAyMCwgMjEsIDg5LCAyMjQsIDIxMywgMjAsIDIxLCA4OSwgMjI0LCAyMTUsIDIwLCAyMSwgODksIDIyNCwgMjE5LCAyMCwgMjEsIAorICAgIDg5LCAyMjQsIDIxOCwgMjAsIDIxLCA4OSwgMjI0LCAyMTcsIDIwLCAyMSwgODksIDIyNCwgMjIzLCAyMCwgMjEsIDg5LCAKKyAgICAyMDUsIDE5NCwgMjAsIDIxLCA4OSwgMjA1LCAxOTYsIDIwLCAyMSwgODksIDIwNSwgMTk5LCAyMCwgMjEsIDg5LCAyMDUsIAorICAgIDE5OCwgMjAsIDIxLCA4OSwgMjA1LCAxOTcsIDIwLCAyMSwgODksIDIwNSwgMjAwLCAyMCwgMjEsIDg5LCAyMDUsIDE4OSwgCisgICAgMjAsIDIxLCA4OSwgMjA1LCAxOTAsIDIwLCAyMSwgODksIDIwNSwgMjAyLCAyMCwgMjEsIDg5LCAyMDUsIDIwMSwgMjAsIDIxLCAKKyAgICA4OSwgMjA1LCAxOTEsIDIwLCAyMSwgODksIDIwNSwgMjAzLCAyMCwgMjEsIDg5LCAxOTksIDMsIDIwLCAyMSwgODksIDE5OSwgCisgICAgMTQsIDIwLCAyMSwgODksIDE5OSwgODksIDIwLCAyMSwgODksIDE5OSwgODcsIDIwLCAyMSwgODksIDE5OSwgMzYsIDIwLCAKKyAgICAyMSwgODksIDE5OSwgMTE0LCAyMCwgMjEsIDg5LCAxOTksIDE1NywgMjAsIDIxLCA4OSwgODIsIDE5OSwgMTU3LCAyMCwgMjEsIAorICAgIDg5LCAyMzksIDgwLCAyMCwgMjEsIDg5LCAyMzksIDgxLCAyMCwgMjEsIDg5LCAyMzksIDkwLCAyMCwgMjEsIDg5LCAyMzksIAorICAgIDg5LCAyMCwgMjEsIDg5LCAyMzksIDg0LCAyMCwgMjEsIDg5LCAyMzksIDkzLCAyMCwgMjEsIDg5LCAyMDgsIDI0LCAyMCwgCisgICAgMjEsIDg5LCAyMDksIDI5LCAyMCwgMjEsIDg5LCAyMTEsIDIwMiwgMjAsIDIxLCA4OSwgMjExLCAxOTAsIDIwLCAyMSwgODksIAorICAgIDIwOSwgMTgyLCAyMCwgMjEsIDg5LCAyMTIsIDY0LCAyMCwgMjEsIDg5LCAyMDksIDIyMCwgMjAsIDIxLCA4OSwgMjEwLCA4LCAKKyAgICAyMCwgMjEsIDg5LCAyMTAsIDY1LCAyMCwgMjEsIDg5LCAyMTAsIDYzLCAyMCwgMjEsIDg5LCAyMTAsIDMzLCAyMCwgMjEsIAorICAgIDg5LCAyMTAsIDExNCwgMjAsIDIxLCA4OSwgMjEwLCAxMTYsIDIwLCAyMSwgODksIDIwNSwgNSwgMjAsIDIxLCA4OSwgMjA1LCAKKyAgICA5LCAyMCwgMjEsIDg5LCAyMDUsIDI2LCAyMCwgMjEsIDg5LCAyMDUsIDI1LCAyMCwgMjEsIDg5LCAyMDUsIDExLCAyMCwgMjEsIAorICAgIDg5LCAyMDUsIDMyLCAyMCwgMjEsIDg5LCAyNDYsIDE5MiwgMjAsIDIxLCA4OSwgMjQ2LCAyMTAsIDIwLCAyMSwgODksIDI0NywgCisgICAgOCwgMjAsIDIxLCA4OSwgMjQ3LCA0LCAyMCwgMjEsIDg5LCAyNDYsIDIzNiwgMjAsIDIxLCA4OSwgMjQ3LCAzNywgMjAsIDIxLCAKKyAgICA4OSwgMjA0LCAyMjMsIDIwLCAyMSwgODksIDIwNCwgMjI0LCAyMCwgMjEsIDg5LCAyMDQsIDIyNywgMjAsIDIxLCA4OSwgCisgICAgMjA0LCAyMjYsIDIwLCAyMSwgODksIDIwNCwgMjI1LCAyMCwgMjEsIDg5LCAyMDQsIDIyOCwgMjAsIDIxLCAyNDYsIDIzNywgCisgICAgNTQsIDIwLCAyMSwgMjM2LCAxODMsIDIwOCwgNzYsIDIwLCAyMSwgMjE0LCAxNTEsIDIwLCAyMSwgMjE5LCAyNDksIDIwLCAKKyAgICAyMSwgMjE5LCAxMSwgMjAsIDIxLCAyMTksIDEwLCAyMCwgMjEsIDIxOSwgOSwgMjAsIDIxLCAyMTksIDgsIDIwLCAyMSwgCisgICAgMjE5LCAxMywgMjAsIDIxLCAyMTksIDEyLCAyMCwgMjEsIDIwMCwgMjQyLCAyMDYsIDIzLCAyMCwgMjEsIDIwMCwgMjQyLCAKKyAgICAyMDYsIDIyLCAyMCwgMjEsIDIwMCwgMjQyLCAyMDYsIDIxLCAyMCwgMjEsIDIwMCwgMjQyLCAyMDYsIDIwLCAyMCwgMjEsIAorICAgIDIwMCwgMjQyLCAyMDYsIDE5LCAyMCwgMjEsIDIwMCwgMjQyLCAyMDYsIDI2LCAyMCwgMjEsIDIwMCwgMjQyLCAyMDYsIDI1LCAKKyAgICAyMCwgMjEsIDIwMCwgMjQyLCA0NywgMjA2LCAxMjQsIDIwLCAyMSwgMjQ4LCAxNDEsIDIwMSwgMTQ3LCAyMTcsIDExMiwgCisgICAgMjA4LCAyNDUsIDgxLCAyMTcsIDExMiwgMSwgMjQ4LCAyMzQsIDIxNywgMTEyLCAxLCAyMjQsIDI4LCAyMTcsIDExMiwgMSwgCisgICAgMjM3LCAxNDQsIDIxNywgMTEyLCAxLCAyMTIsIDQ0LCAyMTcsIDExMiwgMSwgMjE5LCAxMDYsIDIxNywgMTEyLCAxLCAyMDQsIAorICAgIDQzLCAyMTcsIDExMiwgMSwgMjQyLCAzMSwgMjE3LCAxMTIsIDEsIDIwNSwgMjI3LCAyMTcsIDExMiwgMSwgMjQ2LCA4MiwgCisgICAgMjE3LCAxMTIsIDEsIDI0NywgNjMsIDIxNywgMTEyLCAxLCAyMjEsIDI4LCAyMTcsIDExMiwgMSwgMjM1LCA5NiwgMjE3LCAKKyAgICAxMTIsIDEsIDIxOSwgMjM5LCAyMTcsIDExMiwgMSwgMjA4LCA2OSwgMjE3LCAxMTIsIDEsIDIxMiwgMTY4LCAyMTcsIDExMiwgCisgICAgMSwgMjUxLCAxNzMsIDIxNywgMTEyLCAxLCAyMTcsIDY3LCAyMTcsIDExMiwgMSwgMjAzLCAyMTQsIDIxNywgMTEyLCAxLCAKKyAgICAyMzksIDI1LCAyMTcsIDExMiwgMSwgMjI4LCA0NCwgMjE3LCAxMTIsIDEsIDIzOSwgMjYsIDIxNywgMTEyLCAxLCAyMTcsIAorICAgIDMzLCAyMTcsIDExMiwgMSwgMjA0LCAyMSwgMjE3LCAxMTIsIDEsIDIyOCwgMTU3LCAyMTcsIDExMiwgMSwgMjM5LCAyMywgCisgICAgMjE3LCAxMTIsIDEsIDIxNiwgNTEsIDIxNywgMTEyLCAyMzcsIDE0MywgODEsIDIxNywgMTEyLCAyMTMsIDEwNSwgMjM3LCAKKyAgICAxNDMsIDgxLCAyMTIsIDE1NywgMSwgMjM3LCAxMzMsIDIzNywgMTI0LCAyMzcsIDE0OCwgMjM4LCA1LCAyMTIsIDE1NywgMSwgCisgICAgMjAzLCAxNjgsIDIxMiwgMTU3LCAxLCAyMDMsIDE5OSwgMjAzLCAyMTUsIDY2LCAyMTIsIDE1NywgMSwgMTk5LCAyMTQsIAorICAgIDIxMiwgMTU3LCAxLCAyMDAsIDEyMywgMjEyLCAxNTcsIDEsIDIwMSwgMTQ3LCAyMTIsIDE1NywgMSwgMjA2LCAyOCwgMjA2LCAKKyAgICAyNywgMjA2LCA1NCwgMjEyLCAxNTcsIDEsIDIzOCwgNzQsIDIxMiwgMTU3LCAxLCAyNTEsIDUyLCA2MiwgMjEyLCAxNTcsIDEsIAorICAgIDIxNywgMTYsIDc0LCAyMTIsIDE1NywgMSwgMjUxLCAyNTUsIDYyLCAyMTIsIDE1NywgMSwgMjUxLCAyMDUsIDIxMiwgMTU3LCAKKyAgICAxLCAyMjQsIDg1LCA3NCwgMjEyLCAxNTcsIDEsIDIwOSwgMjQzLCA3NCwgMjEyLCAxNTcsIDEsIDc0LCAyMTIsIDE1NywgMSwgCisgICAgMjE3LCAxMjEsIDIxMiwgMTU3LCAxLCAyMTcsIDc4LCAyMTIsIDE1NywgMSwgMjEzLCAyMjcsIDIxMywgMjQwLCAyMTMsIAorICAgIDE1MiwgMTQ2LCAyMTIsIDE1NywgMSwgMjI3LCAyMywgMjEyLCAxNTcsIDEsIDI0NywgNTksIDIxMiwgMTU3LCAxLCAyMjcsIAorICAgIDI0LCAyMjcsIDExOCwgMjEyLCAxNTcsIDEsIDIzNiwgMTU2LCAyMTIsIDE1NywgMSwgMjM4LCAxNjUsIDIxMiwgMTU3LCAxLCAKKyAgICAyMzYsIDEwLCAyMzQsIDI1MywgMjM2LCAxNTYsIDIxMiwgMTU3LCAxLCAyMzYsIDQ5LCAyMTIsIDE1NywgMSwgMjAwLCAyMDgsIAorICAgIDIwMCwgMTk5LCAyMDEsIDE0NywgMjEyLCAxNTcsIDEsIDIzNCwgMjI1LCAyMzQsIDI0NywgMjEyLCAxNTcsIDEsIDIzNCwgCisgICAgMjI5LCAyMzQsIDI0NywgMjEyLCAxNTcsIDEsIDIyNCwgODcsIDIzNCwgMjQ3LCAyMTIsIDE1NywgMSwgMjA5LCAyNDYsIAorICAgIDIzNCwgMjQ3LCAyMTIsIDE1NywgMSwgMjIwLCAxMTQsIDIxOCwgNTEsIDIyMCwgMTE1LCAyMjAsIDIxNCwgMjEyLCAxNTcsIAorICAgIDEsIDIwOSwgMjQ0LCAyMjAsIDIxNCwgMjEyLCAxNTcsIDEsIDIzOSwgMTc3LCAyMTIsIDE1NywgMSwgMjI4LCAyMywgMjI4LCAKKyAgICAyNywgMjI4LCAxNCwgNzAsIDIxMiwgMTU3LCAxLCA3MiwgMjEyLCAxNTcsIDEsIDIyNywgMjE4LCAyMjcsIDI1MSwgMjEyLCAKKyAgICAxNTcsIDEsIDIzNSwgMjQ5LCAyMTIsIDE1NywgMSwgMjI0LCA4OCwgMjUxLCAyMjEsIDIxMiwgMTU3LCAxLCAyMDksIDI0OCwgCisgICAgNjIsIDIxMiwgMTU3LCAxLCAyMjgsIDYsIDIzOCwgMTM4LCAyMTIsIDE1NywgMSwgMjE2LCA3LCAyMTYsIDMyLCAyMTYsIAorICAgIDIyNiwgMjEyLCAxNTcsIDEsIDI1MSwgMTM1LCAyMzgsIDEzNiwgMjEyLCAxNTcsIDEsIDIwOCwgMjUwLCAyMTIsIDEyMiwgCisgICAgMjEyLCAxNTcsIDEsIDIwOSwgMTY1LCAyMjQsIDg0LCAyMTIsIDEyMiwgMjEyLCAxNTcsIDEsIDIwOSwgMjQyLCAyMTIsIAorICAgIDEyMiwgMjEyLCAxNTcsIDEsIDI0NywgMjIzLCAyMTIsIDE1NywgMSwgMTk5LCAxNTcsIDIxMiwgMTU3LCAxLCAyMDUsIDIwOCwgCisgICAgMjA1LCAyMjAsIDIwNCwgMTE1LCAyMDcsIDgzLCAyMTIsIDE1NywgMSwgMjA5LCAyNDEsIDIwNywgODMsIDIxMiwgMTU3LCAxLCAKKyAgICAyNDIsIDE1MywgMjEyLCAxNTcsIDEsIDI0OCwgMjEzLCAyNDgsIDIxNiwgMjQ4LCAxNDcsIDI1MCwgMTAzLCAyMTIsIDE1NywgCisgICAgMSwgMjA5LCAyNDcsIDI1MCwgMTAzLCAyMTIsIDE1NywgMSwgMjM5LCAxNzYsIDIxMiwgMTU3LCAxLCAyMTcsIDQ3LCAyMTIsIAorICAgIDE1NywgMSwgMjM4LCAyMzUsIDIzOCwgMjQyLCA3MiwgMjEyLCAxNTcsIDEsIDIyMiwgMTcxLCAyMjIsIDE4MSwgMjIzLCAKKyAgICAyNDMsIDIxMiwgMTU3LCAxLCAyMjQsIDg2LCAyMjMsIDI0MywgMjEyLCAxNTcsIDEsIDIwOSwgMjQ1LCAyMjMsIDI0MywgCisgICAgMjEyLCAxNTcsIDEsIDIyNSwgNTUsIDIyNSwgMTU0LCAyMjQsIDk1LCAxNTYsIDIxMiwgMTU3LCAxLCAyMzksIDE3OCwgMjEyLCAKKyAgICAxNTcsIDEsIDIyOCwgOTAsIDIxMiwgMTU3LCAxLCAyMjgsIDkxLCAyMTIsIDE1NywgMSwgMjQyLCA0NSwgMjQyLCA1MSwgCisgICAgMjQyLCAxNTMsIDIxMiwgMTU3LCAxLCAyMTcsIDksIDIzOCwgNzMsIDc0LCAyMTIsIDE1NywgMSwgMjM5LCAyMSwgMjEyLCAKKyAgICAxNTcsIDEsIDIyOCwgNDMsIDIxMiwgMTU3LCAxLCAyNDIsIDE3MywgMjEyLCAxNTcsIDEsIDI0NywgMTczLCAyMTIsIDE1NywgCisgICAgMSwgMjQ3LCA3NSwgMjEyLCAxNTcsIDEsIDIwOCwgMTE0LCAyMTIsIDE1NywgMSwgMjI0LCA4MywgMjEyLCAxNTcsIDEsIAorICAgIDIwOSwgMjQwLCAyMTIsIDE1NywgMSwgMjMyLCAyMzAsIDIxMiwgMTU3LCAxLCAyMTQsIDE2NywgMjEyLCAxNTcsIDEsIDIwMCwgCisgICAgMTk1LCAyMTIsIDE1NywgMjA5LCAxMzksIDIxNCwgMjExLCAyMTIsIDE1NywgMjIxLCAyMSwgMjE0LCAyMTEsIDIxMiwgMTU3LCAKKyAgICAyNDIsIDIzNSwgMjE0LCAyMTEsIDIxMiwgMTU3LCAyNTAsIDIxNiwgOTksIDIxMiwgMTU3LCAyMDQsIDE3MiwgOTksIDIxMiwgCisgICAgMTU3LCAyNDgsIDIzMiwgOTksIDIxMiwgMTU3LCAxLCAyMjcsIDExOCwgMjEyLCAxNTcsIDEsIDIxMCwgMTE2LCAyMTIsIAorICAgIDE1NywgMSwgMjE3LCA2MywgMjEyLCAxNTcsIDEsIDIzNiwgMjEyLCAyNDcsIDExNCwgMjE3LCAxNSwgMjEyLCAxNTcsIDEsIAorICAgIDIzNiwgMjEyLCAyNDcsIDExNCwgMjI4LCAyNiwgMjEyLCAxNTcsIDEsIDIzNiwgMjEyLCAyNDcsIDExNCwgMjM4LCAyNDEsIAorICAgIDIxMiwgMTU3LCAxLCAyMzYsIDIxMiwgMjQ3LCAxMTQsIDI1MSwgMjU0LCAyMTIsIDE1NywgMSwgMjM2LCAyMTIsIDI0NywgCisgICAgMTE0LCAyNTEsIDIwNSwgMjA3LCAxMiwgMSwgNjIsIDIwNywgMTIsIDEsIDcwLCAyMDcsIDEyLCAxLCA2NiwgMjA3LCAxMiwgCisgICAgMSwgMTYxLCAyMDcsIDEyLCAxLCAyMzYsIDg5LCAyMDcsIDEyLCAxLCAyMTksIDI1MywgMjA3LCAxMiwgMSwgMjA3LCAzNiwgCisgICAgMjA3LCAxMiwgMSwgMjQyLCA1OCwgMjA3LCAxMiwgMSwgMTg4LCAyMDcsIDEyLCAxLCAxNzIsIDIwNywgMTIsIDEsIDI0OSwgCisgICAgMTM2LCAyMDcsIDEyLCAxLCAxNzgsIDIwNywgMTIsIDEsIDE4MywgMjA3LCAxMiwgMSwgMTk0LCAyMDcsIDEyLCAxLCAyMDEsIAorICAgIDExNCwgMjA3LCAxMiwgMSwgMjEyLCA2NCwgMjA3LCAxMiwgMSwgMTQ0LCAyMDcsIDEyLCAyMiwgMiwgNzAsIDIwNywgMTIsIAorICAgIDIyLCAyLCA2NiwgMjA3LCAxMiwgMiwgMjAyLCAyMDgsIDIzNCwgMTcwLCAxLCA2MiwgMjM0LCAxNzAsIDEsIDcwLCAyMzQsIAorICAgIDE3MCwgMSwgNjYsIDIzNCwgMTcwLCAxLCAxNjEsIDIzNCwgMTcwLCAxLCAyMzYsIDg5LCAyMzQsIDE3MCwgMSwgMjE5LCAKKyAgICAyNTMsIDIzNCwgMTcwLCAxLCAyMDcsIDM2LCAyMzQsIDE3MCwgMSwgMjQyLCA1OCwgMjM0LCAxNzAsIDEsIDE4OCwgMjM0LCAKKyAgICAxNzAsIDEsIDE3MiwgMjM0LCAxNzAsIDEsIDI0OSwgMTM2LCAyMzQsIDE3MCwgMSwgMTc4LCAyMzQsIDE3MCwgMSwgMTgzLCAKKyAgICAyMzQsIDE3MCwgMSwgMjEzLCAyNTIsIDIzNCwgMTcwLCAxLCAxOTQsIDIzNCwgMTcwLCAxLCAyMDEsIDExNCwgMjM0LCAxNzAsIAorICAgIDEsIDIxMiwgNjQsIDIzNCwgMTcwLCAxLCAxNDQsIDIzNCwgMTcwLCAyMiwgMiwgNzAsIDIzNCwgMTcwLCAyMiwgMiwgNjYsIAorICAgIDIzNCwgMTcwLCAyLCAyMTYsIDE2NSwgMjE1LCAyMjIsIDIwOSwgMTM5LCAyMTQsIDIxMSwgMjE1LCAyMjIsIDUzLCAyMTQsIAorICAgIDIxMSwgMjQ4LCAyOCwgMSwgNjIsIDI0OCwgMjgsIDEsIDcwLCAyNDgsIDI4LCAxLCA2NiwgMjQ4LCAyOCwgMSwgMTYxLCAKKyAgICAyNDgsIDI4LCAxLCAyMzYsIDg5LCAyNDgsIDI4LCAxLCAyMTksIDI1MywgMjQ4LCAyOCwgMSwgMjA3LCAzNiwgMjQ4LCAyOCwgCisgICAgMSwgMjQyLCA1OCwgMjQ4LCAyOCwgMSwgMTg4LCAyNDgsIDI4LCAxLCAxNzIsIDI0OCwgMjgsIDEsIDI0OSwgMTM2LCAyNDgsIAorICAgIDI4LCAxLCAxNzgsIDI0OCwgMjgsIDEsIDE4MywgMjQ4LCAyOCwgMSwgMjEzLCAyNTIsIDI0OCwgMjgsIDEsIDE5NCwgMjQ4LCAKKyAgICAyOCwgMSwgMjAxLCAxMTQsIDI0OCwgMjgsIDEsIDIxMiwgNjQsIDI0OCwgMjgsIDEsIDE0NCwgMjQ4LCAyOCwgMjIsIDIsIAorICAgIDcwLCAyNDgsIDI4LCAyMiwgMiwgNjYsIDIwNywgMTEsIDEsIDYyLCAyMDcsIDExLCAxLCA3MCwgMjA3LCAxMSwgMSwgNjYsIAorICAgIDIwNywgMTEsIDEsIDE2MSwgMjA3LCAxMSwgMSwgMjM2LCA4OSwgMjA3LCAxMSwgMSwgMjE5LCAyNTMsIDIwNywgMTEsIDEsIAorICAgIDIwNywgMzYsIDIwNywgMTEsIDEsIDI0MiwgNTgsIDIwNywgMTEsIDEsIDE4OCwgMjA3LCAxMSwgMSwgMTcyLCAyMDcsIDExLCAKKyAgICAxLCAyNDksIDEzNiwgMjA3LCAxMSwgMSwgMTc4LCAyMDcsIDExLCAxLCAxODMsIDIwNywgMTEsIDEsIDE5NCwgMjA3LCAxMSwgCisgICAgMSwgMjAxLCAxMTQsIDIwNywgMTEsIDEsIDIxMiwgNjQsIDIwNywgMTEsIDIyLCAyLCA3MCwgMjA3LCAxMSwgMjIsIDIsIDY2LCAKKyAgICA4NiwgMSwgMTYxLCA4NiwgMSwgMjI2LCAyMDcsIDg2LCAxLCAyMjYsIDg4LCA4NiwgMSwgMjI2LCAxNzgsIDg2LCAxLCAyMTksIAorICAgIDE3OCwgODYsIDEsIDI0NywgMTkwLCA4NiwgMSwgMjQ3LCAzNywgODYsIDEsIDI0NiwgOTEsIDg2LCAxLCAyNDYsIDIxMCwgCisgICAgODYsIDEsIDIxOCwgMjYsIDg2LCAxLCAyNDIsIDU4LCA4NiwgMSwgMjA0LCAyNDEsIDg2LCAxLCAyNDAsIDIxMSwgODYsIDEsIAorICAgIDIwNCwgMjM2LCA4NiwgMSwgMjE4LCAyNDcsIDg2LCAxLCAyMDcsIDM2LCA4NiwgMSwgMjA2LCAxMjIsIDg2LCAxLCAxMzgsIAorICAgIDg2LCAxLCAyMDYsIDYxLCA4NiwgMSwgMjE4LCAyNDEsIDg2LCAxLCAyNDksIDEzNiwgODYsIDEsIDIxNSwgMjQ1LCA4NiwgMSwgCisgICAgMjE1LCAxMDYsIDg2LCAxLCAyMTUsIDIxNywgODYsIDEsIDIyMSwgMTM2LCA4NiwgMSwgMTk5LCAyNDUsIDg2LCAxLCAyMTMsIAorICAgIDEsIDg2LCAxLCAyMjQsIDExMCwgODYsIDEsIDIwMiwgMTkzLCA4NiwgMSwgMjEwLCAxMTQsIDg2LCAxLCAyMDgsIDEzOSwgCisgICAgODYsIDEsIDIxMiwgNjQsIDg2LCAxLCAxNDQsIDg2LCAxLCAxOTQsIDg2LCAxLCAyMTQsIDE1OSwgODYsIDIyOCwgMTA0LCAKKyAgICAyMiwgMjE0LCAxNDUsIDg2LCAyMjgsIDEwNCwgMjIsIDIxNCwgMTU4LCA4NiwgMjI4LCAxMDQsIDIyLCAyMTQsIDEyMSwgODYsIAorICAgIDIyOCwgMTA0LCAyMiwgMjE0LCAxMTUsIDg2LCAyMjgsIDEwNCwgMjIsIDIxNCwgOTcsIDg2LCAyMjgsIDEwNCwgMjIsIDIxNCwgCisgICAgNjcsIDg2LCAyMjgsIDEwNCwgMjIsIDIxNCwgNTUsIDg2LCAyMjgsIDEwNCwgMjIsIDIxNCwgNTQsIDg2LCAyMjgsIDEwNCwgCisgICAgMjIsIDIxMiwgMTMxLCA4NiwgMjI4LCAxMDQsIDIyLCAyMTIsIDEyNCwgODYsIDIyOCwgMTA0LCAyMiwgMjI0LCAyLCA4NiwgCisgICAgMjI4LCAxMDQsIDIyLCAyMjMsIDI0NiwgODYsIDIyOCwgMTA0LCAyMiwgMjE0LCAxMzksIDg2LCAyMjgsIDEwNCwgMjIsIAorICAgIDIxNCwgMTUxLCA4NiwgMjI4LCAxMDQsIDIyLCAyMTQsIDEwNSwgMjA0LCAxMjgsIDEwMiwgODYsIDIyOCwgMTA0LCAyMiwgCisgICAgMjE0LCAxMDUsIDIwNCwgMTI4LCAxMDUsIDg2LCAyMjgsIDEwNCwgMjIsIDIxNCwgMTQxLCA4NiwgMjIsIDIyOCwgODgsIAorICAgIDI1MSwgMSwgODYsIDIyLCAyMjgsIDg4LCAyNTIsIDEzOCwgODYsIDIyLCAyLCAyNTIsIDEzOCwgODYsIDIyLCAyLCA3MCwgCisgICAgODYsIDIyLCAyLCAyMjgsIDE1MSwgODYsIDIyLCAyLCAyMDAsIDEyMywgODYsIDIyLCAyLCAxOTksIDE2NywgODYsIDIyLCAyLCAKKyAgICA2NiwgODYsIDIyLCAyLCAyMDMsIDE4MiwgODYsIDIyLCAyLCAyMDQsIDQ2LCA4NiwgMjIsIDIsIDIxNywgMTIxLCA4NiwgMjIsIAorICAgIDIsIDE4MywgODYsIDIyLCAyLCAyMjgsIDE3OCwgODYsIDIyLCAyLCA3MiwgODYsIDIyLCAyLCAyNTEsIDIyMSwgODYsIDIyLCAKKyAgICAyLCAyNTEsIDE3NiwgODYsIDIyLCAyLCAyMTcsIDYzLCA4NiwgMjIsIDIsIDI1MCwgMTM5LCA4NiwgMiwgMjE5LCAxMjMsIAorICAgIDg2LCAyLCAyMTMsIDE4OCwgODYsIDIsIDE5OSwgMTc4LCA4NiwgMiwgMjIwLCAyNDEsIDg2LCAyLCAyMDUsIDg2LCA4NiwgMiwgCisgICAgMjQ5LCA3OSwgODYsIDIsIDIxMiwgMjUyLCA4NiwgMiwgMjA1LCAxODQsIDg2LCAyLCAyMjcsIDc1LCA4NiwgMiwgMjUxLCAKKyAgICAxNzgsIDg2LCAyLCAyMTIsIDE0LCAyMTIsIDcsIDg2LCAyLCAyMDIsIDIwNSwgODYsIDIsIDI0NiwgODUsIDg2LCAyLCAyNDksIAorICAgIDUxLCA4NiwgMiwgMjI2LCAxOTksIDg2LCAyLCAyNDksIDc0LCA4NiwgMiwgMjQ3LCAxNjEsIDIxNSwgMTY3LCAyMjUsIDIzNSwgCisgICAgODYsIDIsIDIyNSwgOSwgMjA1LCAxNjEsIDg2LCAyLCAyNDgsIDIwMiwgODYsIDIsIDIxNSwgMjE5LCAyMjEsIDM4LCA4NiwgCisgICAgMiwgMjI2LCA2NiwgODYsIDI0MiwgMTk1LCAxNiwgMjEzLCA4MCwgODYsIDIsIDI1MCwgMTIxLCA4NiwgMiwgMjUwLCAxNDIsIAorICAgIDg2LCAxNywgMTk5LCA4MSwgODYsIDE3LCAxMDIsIDg2LCAxNywgMTA1LCA4NiwgMTcsIDE0NywgODYsIDE3LCAxNDksIDg2LCAKKyAgICAxNywgMTY0LCA4NiwgMTcsIDE4NywgODYsIDE3LCAyMTAsIDEzNSwgODYsIDE3LCAxOTIsIDg2LCAxNywgMjE5LCAxMTMsIAorICAgIDg2LCAxNiwgMjI1LCA5LCAyNTAsIDE0NCwgMjA5LCAxMywgODYsIDE2LCAyMjUsIDksIDI1MCwgMTQ0LCAyMjEsIDUsIDg2LCAKKyAgICAxNiwgMjI1LCA5LCAyNTAsIDE0NCwgMjE1LCAxNjYsIDg2LCAxNiwgMjI1LCA5LCAyNTAsIDE0NCwgMjQ4LCAyMzUsIDg2LCAKKyAgICAxNiwgMjI1LCA5LCAyNTAsIDE0NCwgMjQ4LCA4LCA4NiwgMTYsIDIyNSwgOSwgMjUwLCAxNDQsIDIxNSwgNDIsIDg2LCAxNiwgCisgICAgMjI1LCA5LCAyNTAsIDE0NCwgMjE1LCAzNiwgODYsIDE2LCAyMjUsIDksIDI1MCwgMTQ0LCAyMTUsIDM0LCA4NiwgMTYsIAorICAgIDIyNSwgOSwgMjUwLCAxNDQsIDIxNSwgNDAsIDg2LCAxNiwgMjI1LCA5LCAyNTAsIDE0NCwgMjE1LCAzOCwgOTIsIDI0OCwgCisgICAgMTYwLCA5MiwgMjM4LCAxOTUsIDkyLCAyNDYsIDcwLCA5MiwgMjM2LCAxODMsIDIwOCwgNzYsIDkyLCAyNDYsIDc5LCA5MiwgCisgICAgMjM2LCAyMjksIDI0MCwgMTgwLCA5MiwgMjA1LCAxODMsIDIwOSwgMjMsIDIzMywgMzMsIDkyLCAyMDksIDE4MCwgNSwgMjQ4LCAKKyAgICA4OSwgMjIyLCAxNDUsIDkyLCAyMjIsIDE3NywgMjQ2LCA3MCwgOTIsIDIyMiwgMTc3LCAyMzYsIDE4MywgMjA4LCA3NiwgOTIsIAorICAgIDIxOSwgMTA0LCA5MiwgMjM2LCAyMTEsIDU4LCAyMTEsIDE3NiwgMTAyLCA5MiwgMjM2LCAyMTEsIDU4LCAyMTEsIDE3NiwgCisgICAgMTA1LCA5MiwgMjM2LCAyMTEsIDU4LCAyMTEsIDE3NiwgMTQ3LCA5MiwgMjIsIDIxMCwgMTU0LCA5MiwgMTcsIDE5OSwgODEsIAorICAgIDkyLCAxNywgMTAyLCA5MiwgMTcsIDEwNSwgOTIsIDE3LCAxNDcsIDkyLCAxNywgMTQ5LCA5MiwgMTcsIDE2NCwgOTIsIDE3LCAKKyAgICAxODcsIDkyLCAxNywgMjEwLCAxMzUsIDkyLCAxNywgMTkyLCA5MiwgMTcsIDIxOSwgMTEzLCA5MiwgMSwgNjIsIDkyLCAxLCAKKyAgICA3MiwgOTIsIDEsIDcwLCA5MiwgMSwgNzQsIDkyLCAxLCA2NiwgOTIsIDEsIDIxNywgMTIxLCA5MiwgMSwgMjA0LCAzMSwgOTIsIAorICAgIDEsIDIzOCwgMjU1LCA5MiwgMSwgMTg4LCA5MiwgMSwgMjUxLCA3NiwgOTIsIDEsIDI0OSwgMTM2LCA5MiwgMSwgMTcyLCA5MiwgCisgICAgMSwgMjE0LCAxNTksIDkyLCAxLCAyMzYsIDg5LCA5MiwgMSwgMTc4LCA5MiwgMSwgMTk0LCA5MiwgMSwgMjEyLCA2NCwgOTIsIAorICAgIDEsIDIxMCwgMTE0LCA5MiwgMSwgMjA3LCAzNiwgOTIsIDEsIDI0MiwgNTgsIDkyLCAxLCAyNDcsIDM3LCA5MiwgMSwgMjI3LCAKKyAgICAyNDgsIDkyLCAxLCAxODMsIDkyLCAxLCAyMTMsIDI1MiwgOTIsIDEsIDIwMSwgMTE0LCA5MiwgMSwgMjM3LCAxOTUsIDkyLCAKKyAgICAxLCAxNjEsIDkyLCAxLCAyMjYsIDIwNywgOTIsIDEsIDIwNSwgMzIsIDkyLCAxLCAxOTksIDExNCwgOTIsIDEsIDIzNCwgCisgICAgMjMzLCA5MiwgMSwgMTk5LCA3LCA5MiwgMSwgMjI0LCAyMjMsIDkyLCAxLCAxOTksIDYzLCA5MiwgMSwgMjQ2LCAyMzYsIDkyLCAKKyAgICAxLCAyMDUsIDE4MywgMTY4LCAyMiwgNTQsIDkyLCAxLCAyMDUsIDE4MywgNzIsIDkyLCAxLCAyMDUsIDE4MywgNzAsIDkyLCAKKyAgICAxLCAyMDUsIDE4MywgNzQsIDkyLCAxLCAyMDUsIDE4MywgNjYsIDkyLCAxLCAyMDUsIDE4MywgMjE3LCAxMjEsIDkyLCAxLCAKKyAgICAyMDUsIDE4MywgMjA0LCAzMSwgOTIsIDEsIDIwNSwgMTgzLCAyNTEsIDc2LCA5MiwgMSwgMjA1LCAxODMsIDI0OSwgMTM2LCAKKyAgICA5MiwgMSwgMjA1LCAxODMsIDE3MiwgOTIsIDEsIDIwNSwgMTgzLCAyMTQsIDE1OSwgOTIsIDEsIDIwNSwgMTgzLCAyMzYsIAorICAgIDg5LCA5MiwgMSwgMjA1LCAxODMsIDE3OCwgOTIsIDEsIDIwNSwgMTgzLCAyMDcsIDM2LCA5MiwgMSwgMjA1LCAxODMsIDI0MiwgCisgICAgNTgsIDkyLCAxLCAyMDUsIDE4MywgMjQ3LCAzNywgOTIsIDEsIDIwNSwgMTgzLCAyMjcsIDI0OCwgOTIsIDEsIDIwNSwgMTgzLCAKKyAgICAyMDUsIDMyLCA5MiwgMSwgMjA1LCAxODMsIDE4MywgOTIsIDEsIDIwNSwgMTgzLCAyMDEsIDExNCwgOTIsIDEsIDIwNSwgCisgICAgMTgzLCAxNjEsIDkyLCAxLCAyMDUsIDE4MywgMjM2LCA4NiwgOTIsIDEsIDIwNSwgMTgzLCAyMzQsIDIzMywgOTIsIDEsIAorICAgIDIwNSwgMTgzLCAyMjcsIDIwNiwgOTIsIDEsIDIwNSwgMTgzLCAyMTksIDE0OCwgOTIsIDEsIDIwNSwgMTgzLCAyMzksIDkzLCAKKyAgICA5MiwgMSwgMjA5LCAxODAsIDcyLCA5MiwgMSwgMjA5LCAxODAsIDcwLCA5MiwgMSwgMjA5LCAxODAsIDIyOCwgMywgOTIsIDEsIAorICAgIDIwOSwgMTgwLCAyMDQsIDMxLCA5MiwgMSwgMjA5LCAxODAsIDY2LCA5MiwgMSwgMjA5LCAxODAsIDI1MSwgNzYsIDkyLCAxLCAKKyAgICAyMDksIDE4MCwgMTYxLCA5MiwgMSwgMjA5LCAxODAsIDIzNiwgODksIDkyLCAxLCAyMDksIDE4MCwgMTQ0LCA5MiwgMSwgCisgICAgMjA5LCAxODAsIDE3MiwgOTIsIDEsIDIwOSwgMTgwLCAyMTAsIDExNCwgOTIsIDEsIDIwOSwgMTgwLCAyMDcsIDM2LCA5MiwgCisgICAgMSwgMjA5LCAxODAsIDI0MiwgNTgsIDkyLCAxLCAyMDksIDE4MCwgMjI3LCAyNDgsIDkyLCAxLCAyMDksIDE4MCwgMjM3LCAKKyAgICAxOTUsIDkyLCAxLCAyMDksIDE4MCwgMjM2LCA4NiwgOTIsIDEsIDIwOSwgMTgwLCAyMzQsIDIzMywgOTIsIDEsIDIwOSwgCisgICAgMTgwLCAyMDUsIDMyLCA5MiwgMSwgMjA5LCAxODAsIDE5OSwgMTE0LCA5MiwgMSwgMjA5LCAxODAsIDIxMywgMjQ4LCA5MiwgCisgICAgMSwgMjA5LCAxODAsIDI0NywgMzcsIDkyLCAxLCAyMDksIDE4MCwgMTk5LCA3NywgOTIsIDEsIDIyMiwgMTc3LCA3MCwgOTIsIAorICAgIDEsIDIyMiwgMTc3LCAxNjEsIDkyLCAxLCAyMjIsIDE3NywgMjEzLCAyNTIsIDkyLCAxLCAyMjIsIDE3NywgMjM3LCAxOTUsIAorICAgIDkyLCAxLCAyMjIsIDE3NywgMTk5LCA3NywgOTIsIDEsIDI1MSwgMTM0LCAyMzYsIDY5LCAyNTEsIDM0LCAxMDIsIDkyLCAxLCAKKyAgICAyNTEsIDEzNCwgMjM2LCA2OSwgMjAyLCAyMDQsIDEwMiwgOTIsIDEsIDI1MSwgMTM0LCAyMzYsIDY5LCAyNDIsIDE5LCA5MiwgCisgICAgMSwgMjUxLCAxMzQsIDIzNiwgNjksIDIwNCwgNDEsIDkyLCAxLCAyNTEsIDEzNCwgMjM2LCA2OSwgMjI4LCA1MCwgMjA0LCAKKyAgICA0MSwgOTIsIDEsIDI1MSwgMTM0LCAyMzYsIDY5LCAyNDksIDkxLCA5MiwgMSwgMjUxLCAxMzQsIDIzNiwgNjksIDEyNiwgCisgICAgMjQ5LCA5MSwgOTIsIDEsIDI1MSwgMTM0LCAyMzYsIDY5LCA2MiwgOTIsIDEsIDI1MSwgMTM0LCAyMzYsIDY5LCA3MCwgOTIsIAorICAgIDEsIDI1MSwgMTM0LCAyMzYsIDY5LCAxNjEsIDkyLCAxLCAyNTEsIDEzNCwgMjM2LCA2OSwgMjE5LCAyNTMsIDkyLCAxLCAKKyAgICAyNTEsIDEzNCwgMjM2LCA2OSwgMjQ3LCAxOTAsIDkyLCAxLCAyNTEsIDEzNCwgMjM2LCA2OSwgMjA0LCAyNTMsIDkyLCAxLCAKKyAgICAyNTEsIDEzNCwgMjM2LCA2OSwgMjA0LCAyNDEsIDkyLCAxLCAyNTEsIDEzNCwgMjM2LCA2OSwgMjQxLCAyMjAsIDkyLCAxLCAKKyAgICAyNTEsIDEzNCwgMjM2LCA2OSwgMjE5LCAyMSwgOTIsIDEsIDI1MSwgMTM0LCAyMzYsIDY5LCAyMDcsIDM2LCA5MiwgMSwgCisgICAgMjUxLCAxMzQsIDIzNiwgNjksIDI0MiwgNTgsIDkyLCAxLCAyNTEsIDEzNCwgMjM2LCA2OSwgMTcyLCA5MiwgMSwgMjUxLCAKKyAgICAxMzQsIDIzNiwgNjksIDIxNSwgMjQ1LCA5MiwgMSwgMjUxLCAxMzQsIDIzNiwgNjksIDIwOCwgMTc5LCA5MiwgMSwgMjUxLCAKKyAgICAxMzQsIDIzNiwgNjksIDE5OSwgNzcsIDkyLCAxLCAyNTEsIDEzNCwgMjM2LCA2OSwgMTk5LCAxMTQsIDkyLCAxLCAyNTEsIAorICAgIDEzNCwgMjM2LCA2OSwgMjUxLCAxODUsIDkyLCAxLCAyMDUsIDE4MywgMjUxLCAxMzQsIDIzNiwgNjksIDIwNywgMzYsIDkyLCAKKyAgICAxLCAyMDUsIDE4MywgMjUxLCAxMzQsIDIzNiwgNjksIDE5OSwgNzcsIDkyLCAxLCAyMjIsIDE3NywgMjUxLCAxMzQsIDIzNiwgCisgICAgNjksIDIzNSwgMTk5LCA5MiwgMSwgMjIyLCAxNzcsIDI1MSwgMTM0LCAyMzYsIDY5LCAyMTksIDI1MywgOTIsIDEsIDIyMiwgCisgICAgMTc3LCAyNTEsIDEzNCwgMjM2LCA2OSwgMjQ3LCAxOTAsIDkyLCAxLCAyMjIsIDE3NywgMjUxLCAxMzQsIDIzNiwgNjksIAorICAgIDIyNywgMjE1LCA5MiwgMSwgMjIyLCAxNzcsIDI1MSwgMTM0LCAyMzYsIDY5LCAyMDQsIDI1MywgOTIsIDEsIDIyMiwgMTc3LCAKKyAgICAyNTEsIDEzNCwgMjM2LCA2OSwgMjQxLCAyMDQsIDkyLCAxLCAyMjIsIDE3NywgMjUxLCAxMzQsIDIzNiwgNjksIDIwNywgMzYsIAorICAgIDkyLCAxLCAyMjIsIDE3NywgMjUxLCAxMzQsIDIzNiwgNjksIDI0MSwgMTAwLCA5MiwgMSwgMjIyLCAxNzcsIDI1MSwgMTM0LCAKKyAgICAyMzYsIDY5LCAyMDgsIDE3OSwgOTIsIDEsIDIyMiwgMTc3LCAyNTEsIDEzNCwgMjM2LCA2OSwgMjQyLCAxNjcsIDkyLCAxLCAKKyAgICAyMjIsIDE3NywgMjUxLCAxMzQsIDIzNiwgNjksIDE5OSwgNzcsIDkyLCAxLCAyMjIsIDE3NywgMjUxLCAxMzQsIDIzNiwgNjksIAorICAgIDE5OSwgMTE0LCA5MiwgMSwgMjUxLCAxMzQsIDIzNiwgNjksIDE2NywgNjYsIDkyLCAxLCAyNTEsIDEzNCwgMjM2LCA2OSwgCisgICAgMTY3LCAxODMsIDkyLCAxLCAyMjIsIDE3NywgMjUxLCAxMzQsIDIzNiwgNjksIDI0OCwgMjAwLCA5MiwgMSwgMjUxLCAxMzQsIAorICAgIDIzNiwgNjksIDI0MiwgNDYsIDkyLCAxLCAyMjIsIDE3NywgMjUxLCAxMzQsIDIzNiwgNjksIDIyNCwgMjIzLCAyMCwgMjEsIAorICAgIDIxNiwgMjMwLCAyMCwgMjEsIDI1MCwgMTEyLCAyMCwgMjEsIDI1MiwgOTMsIDIwLCAyMSwgMjAxLCA2NywgMjAsIDIxLCAKKyAgICAyMTUsIDQ4LCAyMCwgMjEsIDIxNiwgODIsIDIwLCAyMSwgMjE0LCAxNzYsIDIwLCAyMSwgMjA2LCAyMTAsIDIwLCAyMSwgCisgICAgMjI3LCAxNSwgMjAsIDIxLCAyMjUsIDIyNiwgMjAsIDIxLCAyMjIsIDExOSwgMjAsIDIxLCAyMTgsIDE5OCwgMjAsIDIxLCAKKyAgICAyMjAsIDEwOSwgMjAsIDIxLCAyMjUsIDUwLCAyMCwgMjEsIDIwOCwgMjQ4LCAyMCwgMjEsIDIxMSwgMjM0LCAyMCwgMjEsIAorICAgIDIwOSwgMjI5LCAyMCwgMjEsIDIxMCwgNjksIDIwLCAyMSwgMjA5LCAxOTIsIDIwLCAyMSwgMTk5LCAyMjAsIDIwLCAyMSwgCisgICAgMjAwLCA1NywgMjAsIDIxLCAyMTMsIDE5NywgMjAsIDIxLCAyMTgsIDY2LCAyMCwgMjEsIDIxNywgMTAwLCAyMTgsIDY2LCAKKyAgICAyMCwgMjEsIDIxOCwgNjUsIDIwLCAyMSwgMjE3LCAxMDAsIDIxOCwgNjUsIDIwLCAyMSwgMjE4LCA2NCwgMjAsIDIxLCAyMTcsIAorICAgIDEwMCwgMjE4LCA2NCwgMjAsIDIxLCAyMTgsIDYzLCAyMCwgMjEsIDIxNywgMTAwLCAyMTgsIDYzLCAyMCwgMjEsIDIxMiwgCisgICAgMTM2LCAyMCwgMjEsIDIxMiwgMTM1LCAyMCwgMjEsIDIxMiwgMTM0LCAyMCwgMjEsIDIxMiwgMTMzLCAyMCwgMjEsIDIxMiwgCisgICAgMTMyLCAyMCwgMjEsIDIxMiwgMTQwLCAyMCwgMjEsIDIxNywgMTAwLCAyMTYsIDIyNiwgMjAsIDIxLCAyMTcsIDEwMCwgMjA3LCAKKyAgICA4MywgMjAsIDIxLCAyMTcsIDEwMCwgMjI3LCAxMTgsIDIwLCAyMSwgMjE3LCAxMDAsIDI0NywgMjIzLCAyMCwgMjEsIDIxNywgCisgICAgMTAwLCAyMjMsIDI0MywgMjAsIDIxLCAyMTcsIDEwMCwgMjIwLCAyMTQsIDIwLCAyMSwgMjE3LCAxMDAsIDIxMiwgMTIyLCAKKyAgICAyMCwgMjEsIDIxNywgMTAwLCAyMTAsIDExNiwgMjAsIDIxLCAyMzksIDEyLCAyMDEsIDE0NywgMjAsIDIxLCAyMDEsIDQ1LCAKKyAgICAyMDEsIDE0NywgMjAsIDIxLCA0NywgNCwgMjEzLCAyNiwgMjAsIDIxLCA0NywgMjEzLCAyMjAsIDI0MCwgMTgyLCAyMCwgMjEsIAorICAgIDIxNCwgMzIsIDIxMiwgMTM3LCAyMCwgMjEsIDIwMSwgNDYsIDIyNCwgNzgsIDIwLCAyMSwgMjAxLCA0NiwgMjI1LCAxNzUsIAorICAgIDIwLCAyMSwgMjA2LCAyNCwgMjAsIDIxLCAyMDYsIDI2LCAyMCwgMjEsIDIwNCwgMjMzLCAyMCwgMjEsIDIwNCwgMjM1LCAyMCwgCisgICAgMjEsIDIwNCwgMjQwLCAyMCwgMjEsIDIwNSwgMTkzLCAyMCwgMjEsIDIwNSwgMTk1LCAyMCwgMjEsIDIxMSwgMjMyLCAyMDksIAorICAgIDE5NywgMjAsIDIxLCAyMTEsIDIzMiwgMjEwLCAyLCAyMCwgMjEsIDIxMSwgMjMyLCAyMzMsIDE4OCwgMjAsIDIxLCA4OSwgCisgICAgMjM1LCA1LCAyMCwgMjEsIDg5LCAyNDEsIDEzNCwgMjM2LCA3LCAyMCwgMjEsIDg5LCAyMzYsIDg2LCAyMCwgMjEsIDg5LCAKKyAgICAyMzUsIDEwLCAyMCwgMjEsIDIxMSwgMjMyLCAyMjcsIDEyOCwgMjAsIDIxLCA4OSwgMjI3LCAxMjYsIDIwLCAyMSwgMjQ4LCAKKyAgICAyNTUsIDI0MSwgMTM0LCAxNTYsIDIwLCAyMSwgMjQ4LCAyNTUsIDI0MSwgMTM0LCAxNDYsIDIwLCAyMSwgODksIDI0MSwgCisgICAgMTI5LCAyMTIsIDEyMiwgMjI0LCAxODYsIDIwMiwgMTcyLCAyMjQsIDIzNiwgMjI0LCAxODYsIDEsIDE2MSwgMjI0LCAxODYsIAorICAgIDEsIDIyNiwgMjA3LCAyMjQsIDE4NiwgMSwgMjM2LCA4OSwgMjI0LCAxODYsIDEsIDIzNSwgMTk5LCAyMjQsIDE4NiwgMSwgCisgICAgMjE5LCAyNTMsIDIyNCwgMTg2LCAxLCAyNDcsIDE5MCwgMjI0LCAxODYsIDEsIDI0NywgMzcsIDIyNCwgMTg2LCAxLCAyMjcsIAorICAgIDI0OCwgMjI0LCAxODYsIDEsIDIyNywgMjE1LCAyMjQsIDE4NiwgMSwgMjAwLCA3NywgMjI0LCAxODYsIDEsIDIwNywgMzYsIAorICAgIDIyNCwgMTg2LCAxLCAyMDYsIDEyMiwgMjI0LCAxODYsIDEsIDI0MiwgNTgsIDIyNCwgMTg2LCAxLCAyNDEsIDEwMCwgMjI0LCAKKyAgICAxODYsIDEsIDE4OCwgMjI0LCAxODYsIDEsIDE3MiwgMjI0LCAxODYsIDEsIDIxNSwgMjQ1LCAyMjQsIDE4NiwgMSwgMjQ5LCAKKyAgICAxMzYsIDIyNCwgMTg2LCAxLCAyNDgsIDIwMCwgMjI0LCAxODYsIDEsIDE3OCwgMjI0LCAxODYsIDEsIDE4MywgMjI0LCAxODYsIAorICAgIDEsIDIxMywgMjUyLCAyMjQsIDE4NiwgMSwgMTk0LCAyMjQsIDE4NiwgMSwgMjAxLCAxMTQsIDIyNCwgMTg2LCAxLCAyMTAsIAorICAgIDExNCwgMjI0LCAxODYsIDEsIDIwOCwgMTc5LCAyMjQsIDE4NiwgMSwgMjEyLCA2NCwgMjI0LCAxODYsIDEsIDE0NCwgMjI0LCAKKyAgICAxODYsIDEsIDIzNSwgMSwgMjI0LCAxODYsIDEsIDIwNSwgMTMyLCAyMjQsIDE4NiwgMjIsIDIsIDYyLCAyMjQsIDE4NiwgMjIsIAorICAgIDIsIDcwLCAyMjQsIDE4NiwgMjIsIDIsIDY2LCAyMjQsIDE4NiwgMjIsIDIsIDIzOCwgMjU1LCAyMjQsIDE4NiwgMjIsIDIsIAorICAgIDI1MSwgMTc2LCAyMjQsIDE4NiwgMjIsIDIsIDIxNywgNjMsIDIyNCwgMTg2LCAyMiwgMiwgMjUwLCAxMzksIDIyNCwgMTg2LCAKKyAgICAyMiwgMiwgNzIsIDIyNCwgMTg2LCAyMiwgMiwgNzQsIDIyNCwgMTg2LCAyMDgsIDEyLCAxLCAxODMsIDIyNCwgMTg2LCAyMDgsIAorICAgIDEyLCAxLCAyMTMsIDI1MiwgMjI0LCAxODYsIDIwOCwgMTIsIDEsIDIwMSwgMTE0LCAyMjQsIDE4NiwgNCwgMSwgMTYxLCAKKyAgICAyMjQsIDE4NiwgNCwgMSwgMjE5LCAyNTMsIDIyNCwgMTg2LCA0LCAxLCAyNTEsIDMzLCAyMjQsIDE4NiwgNCwgMSwgMjA3LCAKKyAgICAzNiwgMjI0LCAxODYsIDQsIDEsIDE4OCwgMjI0LCAxODYsIDQsIDEsIDE3MiwgMjI0LCAxODYsIDQsIDEsIDE3OCwgMjI0LCAKKyAgICAxODYsIDQsIDEsIDIxMywgMjUyLCAyMjQsIDE4NiwgNCwgMSwgMTk0LCAyMjQsIDE4NiwgMiwgMjIxLCAyNiwgMjI0LCAxODYsIAorICAgIDIsIDIyNiwgMjQ5LCAyMjQsIDE4NiwgMiwgMjEyLCA2MiwgMjI0LCAxODYsIDIsIDIyNCwgNzgsIDIyNCwgMTg2LCAyMzgsIAorICAgIDQzLCA4MSwgMjI0LCAxODYsIDIxNCwgNzksIDgxLCAyMjQsIDE4NiwgMTcsIDE5OSwgODEsIDIyNCwgMTg2LCAxNywgMTAyLCAKKyAgICAyMjQsIDE4NiwgMTcsIDEwNSwgMjI0LCAxODYsIDE3LCAxNDcsIDIyNCwgMTg2LCAxNywgMTQ5LCAyMjQsIDE4NiwgMTcsIAorICAgIDE2NCwgMjI0LCAxODYsIDE3LCAxODcsIDIyNCwgMTg2LCAxNywgMjEwLCAxMzUsIDIyNCwgMTg2LCAxNywgMTkyLCAyMjQsIAorICAgIDE4NiwgMTcsIDIxOSwgMTEzLCA0NiwgMjI1LCA0MSwgMSwgMTYxLCA0NiwgMjI1LCA0MSwgMSwgMjAwLCAxODEsIDQ2LCAKKyAgICAyMjUsIDQxLCAxLCAyMTksIDI1MywgNDYsIDIyNSwgNDEsIDEsIDIwNSwgMzIsIDQ2LCAyMjUsIDQxLCAxLCAyMTIsIDY0LCAKKyAgICA0NiwgMjI1LCA0MSwgMSwgMTgzLCA0NiwgMjI1LCA0MSwgMSwgMjA3LCAzNiwgNDYsIDIyNSwgNDEsIDEsIDIwNiwgMTIyLCAKKyAgICA0NiwgMjI1LCA0MSwgMSwgMTk0LCA0NiwgMjI1LCA0MSwgMSwgMTcyLCA0NiwgMjI1LCA0MSwgMSwgMjE1LCAyNDUsIDQ2LCAKKyAgICAyMjUsIDQxLCAxLCAxNzgsIDQ2LCAyMjUsIDQxLCAxLCAyMzcsIDE5NSwgNDYsIDIyNSwgNDEsIDEsIDIwMywgOTAsIDQ2LCAKKyAgICAyMjUsIDQxLCAxLCAxNDQsIDQ2LCAyMjUsIDQxLCAxLCAyMTQsIDE1OSwgNDYsIDIyNSwgNDEsIDEsIDIyNiwgMjA3LCA0NiwgCisgICAgMjI1LCA0MSwgMSwgMjA1LCAyMiwgNDYsIDIyNSwgNDEsIDEsIDE4OCwgNDYsIDIyNSwgNDEsIDEsIDYyLCA0NiwgMjI1LCAKKyAgICA0MSwgMSwgNzAsIDQ2LCAyMjUsIDQxLCAxLCAyMzgsIDI1NSwgNDYsIDIyNSwgNDEsIDEsIDIzOCwgMjQxLCA0NiwgMjI1LCAKKyAgICA0MSwgMSwgNjYsIDQ2LCAyMjUsIDQxLCAxLCAyMTcsIDYzLCA0NiwgMjI1LCA0MSwgMSwgNzQsIDQ2LCAyMjUsIDQxLCAxLCAKKyAgICAyMDQsIDMxLCA0NiwgMjI1LCA0MSwgMSwgNzIsIDQ2LCAyMjUsIDQxLCAxLCAyNTAsIDEzNywgNDYsIDIyNSwgNDEsIDEsIAorICAgIDI1MSwgMTc2LCA0NiwgMjI1LCA0MSwgMSwgMjA1LCAxNzIsIDQ2LCAyMjUsIDQxLCAxLCAyMDUsIDE3MSwgNDYsIDIyNSwgCisgICAgNDEsIDEsIDIwNSwgMTcwLCA0NiwgMjI1LCA0MSwgMSwgMjA1LCAxNjksIDQ2LCAyMjUsIDQxLCAxLCAyMDUsIDE2OCwgMjIwLCAKKyAgICA4LCA0NiwgMjI0LCAzNiwgMSwgMTIyLCAyMTQsIDE1OSwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTI4LCAyMTQsIDE1OSwgCisgICAgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTIyLCAxNjEsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyMiwgMjAwLCAxODEsIAorICAgIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyMiwgMjE5LCAyNTMsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyOCwgMTYxLCAKKyAgICAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjgsIDIwMCwgMTgxLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjgsIDIxOSwgCisgICAgMjUzLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjIsIDIwNSwgMzIsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyMiwgCisgICAgMjEyLCA2NCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTIyLCAxODMsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyOCwgCisgICAgMjA1LCAzMiwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTI4LCAyMTIsIDY0LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAKKyAgICAxMjgsIDE4MywgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTIyLCAyMDcsIDM2LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAKKyAgICAxMjIsIDIwNiwgMTIyLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjIsIDE4OCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgCisgICAgMTI4LCAyMDcsIDM2LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjgsIDIwNiwgMTIyLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAKKyAgICAxLCAxMjgsIDE4OCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTIyLCAxNzIsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIAorICAgIDEyMiwgMjE1LCAyNDUsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyMiwgMTc4LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAKKyAgICAxMjgsIDE3MiwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTI4LCAyMTUsIDI0NSwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgCisgICAgMTI4LCAxNzgsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyMiwgMjM3LCAxOTUsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIAorICAgIDEyMiwgMjAzLCA5MCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTIyLCAxOTQsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIAorICAgIDEyOCwgMjM3LCAxOTUsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyOCwgMjAzLCA5MCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgCisgICAgMSwgMTI4LCAxOTQsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyMiwgMTQ0LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAKKyAgICAxMjIsIDI0MiwgNTgsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyMiwgMjQ5LCAxMzYsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIAorICAgIDEsIDEyOCwgMTQ0LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjgsIDI0MiwgNTgsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIAorICAgIDEsIDEyOCwgMjQ5LCAxMzYsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyMiwgMjI1LCAyMzEsIDIyMCwgOCwgNDYsIDIyNCwgCisgICAgMzYsIDEsIDEyMiwgMjAwLCAxNDgsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyOCwgMjI1LCAyMzEsIDIyMCwgOCwgNDYsIAorICAgIDIyNCwgMzYsIDEsIDEyOCwgMjAwLCAxNDgsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyMiwgMjA4LCAyMywgMjIwLCA4LCAKKyAgICA0NiwgMjI0LCAzNiwgMSwgMTI4LCAyMDgsIDIzLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAyMiwgMiwgMjIsIDIwOSwgMjM4LCAKKyAgICAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAyMiwgMiwgMjUyLCAxMzgsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDIyLCAyLCAyMjgsIAorICAgIDE1MSwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMjIsIDIsIDY2LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAyMiwgMiwgMjAzLCAKKyAgICAxODIsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDIyLCAyLCA3MiwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMjIsIDIsIDI1MSwgCisgICAgMjIxLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAyMiwgMiwgNzQsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDIyLCAyLCAyMTcsIAorICAgIDE0NiwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMjIsIDIsIDIwNCwgMzEsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDIyLCAyLCAKKyAgICAyNTAsIDExMiwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMjIsIDIsIDI1MiwgOTMsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDIyLCAKKyAgICAyLCAyMDMsIDE3NCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMjIsIDIsIDIxNiwgMjMwLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAKKyAgICAyMiwgMiwgMjE3LCAxNDMsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDIyLCAyLCAyMDQsIDI3LCAyMjAsIDgsIDQ2LCAyMjQsIAorICAgIDM2LCAyMiwgMiwgMjI4LCAzLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCA0NywgMjAzLCAxNjgsIDIyMCwgOCwgNDYsIDIyNCwgCisgICAgMzYsIDEsIDQ3LCAyMTksIDI1NSwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgNDcsIDIyMCwgMjE0LCAyMjAsIDgsIDQ2LCAKKyAgICAyMjQsIDM2LCAxLCA0NywgMjIzLCAyNDMsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDQ3LCAyMjcsIDExOCwgMjIwLCA4LCAKKyAgICA0NiwgMjI0LCAzNiwgMSwgNDcsIDI0MiwgMTUzLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCA0NywgMjUwLCAxMDMsIDIyMCwgCisgICAgOCwgNDYsIDIyNCwgMzYsIDE1MCwgMjIyLCAxNDksIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDE1MCwgMjIyLCAxNDgsIDIyMCwgCisgICAgOCwgNDYsIDIyNCwgMzYsIDE3LCAxOTksIDgxLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxNywgMTAyLCAyMjAsIDgsIDQ2LCAKKyAgICAyMjQsIDM2LCAxNywgMTA1LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxNywgMTQ3LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxNywgCisgICAgMTQ5LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxNywgMTY0LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxNywgMTg3LCAyMjAsIDgsIAorICAgIDQ2LCAyMjQsIDM2LCAxNywgMjEwLCAxMzUsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDE3LCAxOTIsIDIyMCwgOCwgNDYsIDIyNCwgCisgICAgMzYsIDE3LCAyMTksIDExMywgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMTA3LCAxNywgMTAyLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAKKyAgICAyLCAyMjUsIDE2MCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMiwgMjI1LCAxNTksIDg2LCAxNiwgMjE2LCA5MCwgODYsIDE2LCAKKyAgICAyMjEsIDYsIDIyNiwgODQsIDg2LCAxNiwgMjE1LCAxNjcsIDIyNiwgODQsIDg2LCAxNiwgMjQ4LCAyMzYsIDIyNiwgODQsIAorICAgIDg2LCAxNiwgMjQ4LCA5LCAyMjYsIDg0LCA4NiwgMTYsIDIxNSwgNDMsIDIyNiwgODQsIDg2LCAxNiwgMjE1LCAzNywgMjI2LCAKKyAgICA4NCwgODYsIDE2LCAyMTUsIDM1LCAyMjYsIDg0LCA4NiwgMTYsIDIxNSwgNDEsIDIyNiwgODQsIDg2LCAxNiwgMjE1LCAzOSwgCisgICAgMjI2LCA4NCwgODYsIDE2LCAyNDIsIDUsIDIyNiwgODQsIDg2LCAxNiwgMjQyLCAxLCAyMjYsIDg0LCA4NiwgMTYsIDI0MiwgCisgICAgMCwgMjI2LCA4NCwgODYsIDE2LCAyNDIsIDMsIDIyNiwgODQsIDg2LCAxNiwgMjQyLCAyLCAyMjYsIDg0LCA4NiwgMTYsIAorICAgIDI0MSwgMjU1LCAyMjYsIDg0LCA4NiwgMTYsIDIwNCwgMTc4LCA4NiwgMTYsIDIyMSwgNiwgMjEyLCAyNTAsIDg2LCAxNiwgCisgICAgMjE1LCAxNjcsIDIxMiwgMjUwLCA4NiwgMTYsIDI0OCwgMjM2LCAyMTIsIDI1MCwgODYsIDE2LCAyNDgsIDksIDIxMiwgMjUwLCAKKyAgICA4NiwgMTYsIDIxNSwgNDMsIDIxMiwgMjUwLCA4NiwgMTYsIDIxNSwgMzcsIDIxMiwgMjUwLCA4NiwgMTYsIDIxNSwgMzUsIAorICAgIDIxMiwgMjUwLCA4NiwgMTYsIDIxNSwgNDEsIDIxMiwgMjUwLCA4NiwgMTYsIDIxNSwgMzksIDIxMiwgMjUwLCA4NiwgMTYsIAorICAgIDI0MiwgNSwgMjEyLCAyNTAsIDg2LCAxNiwgMjQyLCAxLCAyMTIsIDI1MCwgODYsIDE2LCAyNDIsIDAsIDIxMiwgMjUwLCA4NiwgCisgICAgMTYsIDI0MiwgMywgMjEyLCAyNTAsIDg2LCAxNiwgMjQyLCAyLCAyMTIsIDI1MCwgODYsIDE2LCAyNDEsIDI1NSwgMjEyLCAKKyAgICAyNTAsIDI0OCwgMjksIDEsIDE2MSwgMjQ4LCAyOSwgMSwgMjM2LCA4OSwgMjQ4LCAyOSwgMSwgMjE5LCAyNTMsIDI0OCwgMjksIAorICAgIDEsIDIxOSwgMTk2LCAyNDgsIDI5LCAxLCAxNzIsIDI0OCwgMjksIDEsIDI0OSwgMTM2LCAyNDgsIDI5LCAxLCAxNzgsIDI0OCwgCisgICAgMjksIDEsIDIyMSwgNDUsIDI0OCwgMjksIDEsIDIwNywgMzYsIDI0OCwgMjksIDEsIDI0MiwgNTgsIDI0OCwgMjksIDEsIAorICAgIDE4OCwgMjQ4LCAyOSwgMSwgMjE4LCAxOTYsIDI0OCwgMjksIDEsIDI0NywgMTkwLCAyNDgsIDI5LCAxLCAyMjcsIDI0OCwgCisgICAgMjQ4LCAyOSwgMSwgMjE4LCA2MCwgMjQ4LCAyOSwgMSwgMjE4LCA1MiwgMjQ4LCAyOSwgMSwgMTgzLCAyNDgsIDI5LCAxLCAKKyAgICAyMTMsIDI1MiwgMjQ4LCAyOSwgMSwgMTk0LCAyNDgsIDI5LCAxLCAyMDMsIDkwLCAyNDgsIDI5LCAxLCAyMTIsIDY0LCAyNDgsIAorICAgIDI5LCAxLCA2MiwgMjQ4LCAyOSwgMSwgMTQ0LCAyNDgsIDI5LCAyMiwgMiwgNzAsIDI0OCwgMjksIDIyLCAyLCA2NiwgMjQ4LCAKKyAgICAyOSwgMjIsIDIsIDcyLCAyNDgsIDI5LCAyMiwgMiwgNzQsIDI0OCwgMjksIDIyLCAyLCAyNTEsIDIyMSwgMjQ4LCAyOSwgCisgICAgMjE2LCAxNzgsIDI0OCwgMjksIDIzOCwgMTcxLCA3NiwgMjExLCAxOTIsIDQ2LCAxMDcsIDEsIDEyMiwgMTYxLCA0NiwgMTA3LCAKKyAgICAxLCAxMjIsIDIyNiwgMjA3LCA0NiwgMTA3LCAxLCAxMjIsIDIyNSwgMjE1LCA0NiwgMTA3LCAxLCAxMjgsIDE2MSwgNDYsIAorICAgIDEwNywgMSwgMTI4LCAyMjUsIDIxNSwgNDYsIDEwNywgMSwgMTI4LCAyMjYsIDIwNywgNDYsIDEwNywgMSwgMjE5LCAyNTMsIAorICAgIDQ2LCAxMDcsIDEsIDEyMiwgMjQ3LCAxOTAsIDQ2LCAxMDcsIDEsIDEyMiwgMjQ3LCAzNywgNDYsIDEwNywgMSwgMTI4LCAKKyAgICAyNDcsIDE5MCwgNDYsIDEwNywgMSwgMTI4LCAyMTIsIDY0LCA0NiwgMTA3LCAxLCAxMjgsIDI0NywgMzcsIDQ2LCAxMDcsIDEsIAorICAgIDIxOCwgNjAsIDQ2LCAxMDcsIDEsIDIxMywgMjAzLCA0NiwgMTA3LCAxLCAxMjIsIDIxMywgMjAxLCA0NiwgMTA3LCAxLCAKKyAgICAyNDIsIDU4LCA0NiwgMTA3LCAxLCAxMjgsIDIxMywgMjAxLCA0NiwgMTA3LCAxLCAyMTMsIDIxMiwgNDYsIDEwNywgMSwgCisgICAgMTIyLCAyMDcsIDM2LCA0NiwgMTA3LCAxLCAxMjIsIDIwNiwgMTIyLCA0NiwgMTA3LCAxLCAxMjgsIDIwNywgMzYsIDQ2LCAKKyAgICAxMDcsIDEsIDEyOCwgMjA2LCAxMjIsIDQ2LCAxMDcsIDEsIDE4OCwgNDYsIDEwNywgMSwgMjQ5LCAxMzYsIDQ2LCAxMDcsIDEsIAorICAgIDEyMiwgMTcyLCA0NiwgMTA3LCAxLCAxMjIsIDIxNSwgMjQ1LCA0NiwgMTA3LCAxLCAxMjIsIDIzNywgMTk1LCA0NiwgMTA3LCAKKyAgICAxLCAxMjgsIDE3MiwgNDYsIDEwNywgMSwgMTI4LCAyMzcsIDE5NSwgNDYsIDEwNywgMSwgMTI4LCAyMTUsIDI0NSwgNDYsIAorICAgIDEwNywgMSwgMTc4LCA0NiwgMTA3LCAxLCAxMjgsIDE4MywgNDYsIDEwNywgMSwgMTIyLCAxODMsIDQ2LCAxMDcsIDEsIDIxMywgCisgICAgMjUyLCA0NiwgMTA3LCAxLCAyMTIsIDE3MCwgNDYsIDEwNywgMSwgMTk0LCA0NiwgMTA3LCAxLCAyMjQsIDM1LCA0NiwgMTA3LCAKKyAgICAxLCAyMDEsIDExNCwgNDYsIDEwNywgMSwgMTIyLCAyMTAsIDExNCwgNDYsIDEwNywgMSwgMTIyLCAyMDgsIDE3OSwgNDYsIAorICAgIDEwNywgMSwgMTIyLCAyMTIsIDY0LCA0NiwgMTA3LCAxLCAxMjIsIDE0NCwgNDYsIDEwNywgMSwgMjI0LCAxMzgsIDQ2LCAKKyAgICAxMDcsIDEsIDYyLCA0NiwgMTA3LCAxLCAxMjgsIDE0NCwgNDYsIDEwNywgMSwgNzAsIDQ2LCAxMDcsIDEsIDIyOCwgMTUxLCAKKyAgICA0NiwgMTA3LCAxLCA2NiwgNDYsIDEwNywgMSwgMjAzLCAxODIsIDQ2LCAxMDcsIDEsIDIzOCwgMjU1LCA0NiwgMTA3LCAxLCAKKyAgICAyMTcsIDYzLCA0NiwgMTA3LCAxLCAyMjUsIDE2MCwgNDYsIDEwNywgMSwgMjM1LCA2OSwgMjEyLCA2NCwgNDYsIDEwNywgCisgICAgMTExLCAyLCAxNzksIDIxMywgMjUyLCA0NiwgMTA3LCAxMTEsIDIsIDE3OSwgMTk0LCA0NiwgMTA3LCAxMTEsIDIsIDIyNSwgCisgICAgMTc2LCAyMDYsIDI0MiwgMjI1LCAxNDksIDQ2LCAxMDcsIDIsIDIyMiwgMTk5LCAyMjcsIDY1LCAyMjUsIDE0OSwgNDYsIAorICAgIDEwNywgMTExLCAyLCA0NywgMjE5LCAyNTMsIDQ2LCAxMDcsIDExMSwgMiwgMTI4LCAxNzIsIDQ2LCAxMDcsIDExMSwgMiwgCisgICAgMTIyLCAyMTMsIDIwMiwgMjE3LCAzNCwgMTI4LCAxNzIsIDQ2LCAxMDcsIDExMSwgMiwgMTc4LCA0NiwgMTA3LCAxMTEsIDIsIAorICAgIDI0OSwgMTM2LCA0NiwgMTA3LCAxMTEsIDIsIDIxMiwgNjQsIDQ2LCAxMDcsIDIsIDIxMiwgMzgsIDQ2LCAxMDcsIDIyLCAyLCAKKyAgICA2MiwgNDYsIDEwNywgMjIsIDIsIDIyMiwgMTk5LCAyMTEsIDI1MSwgNDYsIDEwNywgMjIsIDIsIDI1MiwgMTM4LCA0NiwgCisgICAgMTA3LCAyMiwgMiwgMjA2LCAyNDgsIDI1MiwgMTM4LCA0NiwgMTA3LCAyMiwgMiwgNzAsIDQ2LCAxMDcsIDIyLCAyLCAyMjgsIAorICAgIDE1MSwgNDYsIDEwNywgMjIsIDIsIDIwNCwgMzEsIDQ2LCAxMDcsIDIyLCAyLCAyMDMsIDE4MSwgNDYsIDEwNywgMjIsIDIsIAorICAgIDY2LCA0NiwgMTA3LCAyMiwgMiwgMjAzLCAxODIsIDQ2LCAxMDcsIDIyLCAyLCA3NCwgNDYsIDEwNywgMjIsIDIsIDIxNywgCisgICAgMTQ3LCA1NywgNDYsIDEwNywgMjIsIDIsIDIxNiwgMjMwLCA0NiwgMTA3LCAyMiwgMiwgNzIsIDQ2LCAxMDcsIDIyLCAyLCAKKyAgICAyNTEsIDIyMSwgNDYsIDEwNywgMjIsIDIsIDIxNywgNjMsIDQ2LCAxMDcsIDIyLCAyLCAyNTEsIDE3NiwgNDYsIDEwNywgMjIsIAorICAgIDIsIDEwNywgMjUxLCAxNzYsIDQ2LCAxMDcsIDIyLCAyLCAyMTcsIDE0NywgNTYsIDQ2LCAxMDcsIDIsIDIyMiwgMTk5LCAKKyAgICAyMjcsIDY0LCA0NiwgMTA3LCAyLCAyMDUsIDE3MywgNDYsIDEwNywgMiwgMjA1LCAxNzIsIDQ2LCAxMDcsIDIsIDIyNiwgCisgICAgMTY4LCAyMDUsIDE3MSwgNDYsIDEwNywgMiwgMjI2LCAxNjgsIDIwNSwgMTcwLCA0NiwgMTA3LCAyLCAyMjYsIDE2OCwgMjA1LCAKKyAgICAxNjksIDQ2LCAxMDcsIDIsIDIxMywgMjUzLCAyMzQsIDIzMiwgNDYsIDEwNywgMiwgMjIyLCAxOTksIDIxMiwgMjMsIDQ2LCAKKyAgICAxMDcsIDIsIDIyNiwgMTY3LCAyMjcsIDQ2LCA0NiwgMTA3LCAzOCwgMjQyLCAyMTcsIDI0MCwgMTgyLCA0NiwgMTA3LCAyMzMsIAorICAgIDE3OSwgMTcsIDE5OSwgODEsIDQ2LCAxMDcsIDIzMywgMTc5LCAxNywgMTAyLCA0NiwgMTA3LCAyMzMsIDE3OSwgMTcsIDEwNSwgCisgICAgNDYsIDEwNywgMjMzLCAxNzksIDE3LCAxNDcsIDQ2LCAxMDcsIDIzMywgMTc5LCAxNywgMTQ5LCA0NiwgMTA3LCAyMzMsIAorICAgIDE3OSwgMTcsIDE2NCwgNDYsIDEwNywgMjMzLCAxNzksIDE3LCAxODcsIDQ2LCAxMDcsIDIzMywgMTc5LCAxNywgMjEwLCAKKyAgICAxMzUsIDQ2LCAxMDcsIDIzMywgMTc5LCAxNywgMTkyLCA0NiwgMTA3LCAyMzMsIDE3OSwgMTcsIDIxOSwgMTEzLCA0NiwgCisgICAgMTA3LCAxMDcsIDE3LCAxOTksIDgxLCA0NiwgMTA3LCAxMDcsIDE3LCAxMDIsIDQ2LCAxMDcsIDEwNywgMTcsIDEwNSwgNDYsIAorICAgIDEwNywgMTA3LCAxNywgMTQ3LCA0NiwgMTA3LCAxMDcsIDE3LCAxNDksIDQ2LCAxMDcsIDEwNywgMTcsIDE2NCwgNDYsIDEwNywgCisgICAgMTA3LCAxNywgMTg3LCA0NiwgMTA3LCAxMDcsIDE3LCAyMTAsIDEzNSwgNDYsIDEwNywgMTA3LCAxNywgMTkyLCA0NiwgMTA3LCAKKyAgICAxMDcsIDE3LCAyMTksIDExMywgNDYsIDEwNywgMiwgMjAxLCAzMCwgNDYsIDEwNywgMiwgMjAxLCAyOSwgNDYsIDEwNywgMiwgCisgICAgMjExLCAyMzgsIDQ2LCAxMDcsIDIsIDIyNiwgMjM4LCA0NiwgMTA3LCAyLCAyMzMsIDEwNywgNDYsIDEwNywgMiwgMjQwLCAKKyAgICAxOTYsIDQ2LCAxMDcsIDIsIDIxMywgMTA1LCAyMTIsIDIyOCwgMjEzLCAyMTIsIDQ2LCAxMDcsIDIsIDIyMiwgMTk5LCAyMDAsIAorICAgIDc4LCA0NiwgMTA3LCAyLCAyMjcsIDk5LCA0NiwgMTA3LCAyLCAyMjcsIDk4LCA0NiwgMTA3LCAyLCAyMTEsIDI0NiwgNDYsIAorICAgIDEwNywgMiwgMjExLCAyNDUsIDQ2LCAxMDcsIDIsIDIzNCwgMTcyLCA0NiwgMTA3LCAyLCAyNDcsIDE4NywgMzgsIDIzOSwgCisgICAgMTcyLCAyNDYsIDE0NywgMjUxLCAyNTEsIDM4LCAyNDEsIDczLCAzOCwgMjI4LCA5NCwgMzgsIDE5MSwgNDgsIDM4LCAyMDUsIAorICAgIDgzLCAyNDAsIDE4MiwgMzgsIDIwMCwgMTk0LCA1NywgMzgsIDIwMSwgMjIsIDIyNCwgMTc3LCA1NywgMzgsIDE3NiwgMTM0LCAKKyAgICA1NywgMzgsIDUzLCAxNzYsIDEzNCwgNTcsIDM4LCAxNjIsIDI0NywgNTcsIDIwOCwgNDcsIDU3LCAzOCwgMjA4LCAzMywgCisgICAgMjQ3LCA1NywgMjA4LCA0NywgNTcsIDM4LCAyMTYsIDExNywgNTYsIDM4LCA1MywgMjE2LCAxMTcsIDU2LCAzOCwgMjE2LCAKKyAgICAxMTcsIDU3LCAzOCwgMjE2LCAxMTcsIDIxNiwgMjQyLCAxMzMsIDIsIDIwNCwgMTUsIDIxMywgODIsIDEzMywgMiwgMjA0LCAKKyAgICAxNSwgMjQ3LCAxNTEsIDEzMywgMiwgMjQ3LCA3MiwgMTMzLCAyLCAyMDcsIDIwNSwgMTMzLCAyLCAyNDgsIDE1NywgMTMzLCAKKyAgICAxLCAyNTEsIDE1NywgMTMzLCAxLCAyNTEsIDE1OCwgMjA2LCAxOTIsIDEzMywgMSwgMjI4LCAxNDcsIDEzMywgMSwgMjI4LCAKKyAgICAxNDgsIDIwNiwgMTkyLCAxMzMsIDEsIDIwNCwgMTgsIDEzMywgMSwgMjA0LCAxOSwgMjA2LCAxOTIsIDEzMywgMSwgMjEzLCAKKyAgICAyNTMsIDIxMywgMTM1LCAxMzMsIDEsIDIxMywgMjUzLCAyMTMsIDEzNiwgMjA2LCAxOTIsIDEzMywgMSwgMjI1LCAxNzYsIAorICAgIDIyNSwgMywgMTMzLCAxLCAyMjUsIDE3NiwgMjI1LCA0LCAyMDYsIDE5MiwgMTMzLCAxLCAyMzgsIDIxNCwgMTMzLCAxLCAKKyAgICAyNTEsIDE3NCwgMTMzLCAxLCAyMTcsIDk2LCAxMzMsIDEsIDIxNywgOTcsIDIwNiwgMTkyLCAxMzMsIDEsIDE2MSwgMTMzLCAKKyAgICAxLCAyMjcsIDEwOCwgMjIyLCAyMDIsIDEzMywgMSwgMjM2LCA4OSwgMTMzLCAxLCAyMzYsIDkwLCAyMzUsIDEwMiwgMTMzLCAKKyAgICAxLCAyMTksIDI1MywgMTMzLCAxLCAyNDcsIDE5MCwgMTMzLCAxLCAyNDcsIDE5MSwgMjI1LCAxNjMsIDEzMywgMSwgMjI3LCAKKyAgICAyNDgsIDEzMywgMSwgMjI3LCAyNDksIDIyNywgMjE5LCAxMzMsIDEsIDIxOCwgNjAsIDEzMywgMSwgMjA3LCAzNywgMjI1LCAKKyAgICA2MCwgMTMzLCAxLCAyMDcsIDM3LCAyMjEsIDEsIDIyMiwgMjAyLCAxMzMsIDEsIDI0MiwgNTksIDIyMSwgMSwgMjUxLCAxMTQsIAorICAgIDEzMywgMSwgMjQyLCA1OSwgMjIxLCAxLCAyMjIsIDIwMiwgMTMzLCAxLCAyMjAsIDE2MiwgMjEzLCAyMTUsIDEzMywgMSwgCisgICAgMjA3LCAzNiwgMTMzLCAxLCAyMDcsIDM3LCAyMDYsIDIxNCwgMTMzLCAxLCAyNDIsIDU4LCAxMzMsIDEsIDI0MiwgNTksIAorICAgIDIyMiwgMjIxLCAxMzMsIDEsIDE4OCwgMTMzLCAxLCAxNzIsIDEzMywgMSwgMjE2LCAyMTEsIDIyNywgNTgsIDEzMywgMSwgCisgICAgMjQ5LCAxMzYsIDEzMywgMSwgMjQ5LCAxMzcsIDIyNiwgMjUwLCAxMzMsIDEsIDE3OCwgMTMzLCAxLCAxODMsIDEzMywgMSwgCisgICAgMjEzLCAyNTIsIDEzMywgMSwgMTk0LCAxMzMsIDEsIDIwMSwgMTE0LCAxMzMsIDEsIDIxMiwgNjUsIDIxMiwgNDksIDEzMywgCisgICAgMSwgMjEyLCA2NSwgMjEyLCAyLCAxMzMsIDEsIDIxMiwgNjQsIDEzMywgMSwgMTQ0LCAxMzMsIDIsIDIxMywgMTI2LCAxMzMsIAorICAgIDIyLCAyLCAyMDYsIDE5MiwgMTMzLCAyMiwgMiwgMjA0LCAxNCwgMTMzLCAyMiwgMiwgMjA0LCAxNSwgMjExLCAyNTQsIDEzMywgCisgICAgMjIsIDIsIDIwNywgMjM4LCAxMzMsIDIyLCAyLCAyMDcsIDIzOSwgMjI4LCAxMzksIDEzMywgMjIsIDIsIDIxMywgMjUzLCAKKyAgICAyMTMsIDEzNSwgMTMzLCAyMiwgMiwgMjEzLCAyNTMsIDIxMywgMTM2LCAyMDYsIDE5MiwgMTMzLCAyMiwgMiwgMjI1LCAxNzYsIAorICAgIDIyNSwgMywgMTMzLCAyMiwgMiwgMjI1LCAxNzYsIDIyNSwgNCwgMjA2LCAxOTIsIDEzMywgMjIsIDIsIDIwNiwgMjQ5LCAKKyAgICAxMzMsIDIyLCAyLCAyMDYsIDI1MCwgMjEzLCAxMzUsIDEzMywgMjIsIDIsIDIwNiwgMjUwLCAyMDYsIDE5MiwgMTMzLCAyMiwgCisgICAgMiwgMjA2LCAyNTAsIDIxMywgMTM2LCAyMDYsIDE5MiwgMTMzLCAyMiwgMiwgMjE2LCAzMCwgMTMzLCAyMiwgMiwgMjE2LCAKKyAgICAzMSwgMjA2LCAxOTIsIDEzMywgMjUxLCAyMzAsIDI1MSwgMjI5LCAxMzMsIDEsIDIyNywgODcsIDIxMSwgMjUzLCAxMzMsIDEsIAorICAgIDIyNiwgMTc0LCAyMTEsIDI1MywgMTMzLCAxLCAyMDQsIDEwOCwgMjExLCAyNTMsIDEzMywgMSwgMjM4LCAyNDksIDIxMSwgCisgICAgMjUzLCAxMzMsIDEsIDIwMywgNjAsIDIxMSwgMjUzLCAxMzMsIDEsIDE5OSwgMTA0LCAyMTEsIDI1MywgMTMzLCAxLCAyNTAsIAorICAgIDE1OCwgMjExLCAyNTMsIDEzMywgMTcsIDE5OSwgODEsIDEzMywgMTcsIDEwMiwgMTMzLCAxNywgMTA1LCAxMzMsIDE3LCAKKyAgICAxNDcsIDEzMywgMTcsIDE0OSwgMTMzLCAxNywgMTY0LCAxMzMsIDE3LCAxODcsIDEzMywgMTcsIDIxMCwgMTM1LCAxMzMsIAorICAgIDE3LCAxOTIsIDEzMywgMTcsIDIxOSwgMTEzLCAxMzMsIDIxNiwgMTQzLCAxMzMsIDIxNiwgMTcxLCAxMzMsIDIwMSwgMTQsIAorICAgIDEzMywgMjQ3LCAxMjcsIDIxNiwgMTY0LCAxMzMsIDI0NywgMTI3LCAyMDksIDE1OCwgMTMzLCAyNDcsIDEyNywgMjE2LCAKKyAgICAxMTQsIDEzMywgMjE2LCAxNzAsIDEzMywgMzIsIDE2LCAyNDAsIDE4OCwgMTMzLCAzMiwgMTYsIDI0MSwgMTMzLCAxMzMsIAorICAgIDMyLCAxNiwgMjM5LCAxMjEsIDEzMywgMzIsIDE2LCAyNDIsIDgsIDEzMywgMzIsIDE2LCAyNDIsIDksIDIwNywgMjA1LCAKKyAgICAxMzMsIDMyLCAxNiwgMjQxLCAxOCwgMTMzLCAzMiwgMTYsIDI0MiwgNTAsIDEzMywgMzIsIDE2LCAyNDEsIDEwOSwgMTMzLCAKKyAgICAzMiwgMTYsIDI0MiwgMzIsIDEzMywgMzIsIDE2LCAyNDIsIDksIDIzNiwgOSwgMTMzLCAzMiwgMTYsIDM4LCAyMDYsIDE4NSwgCisgICAgMTMzLCAzMiwgMTYsIDM4LCAyMzgsIDE2OSwgMTMzLCAzMiwgMTYsIDM4LCAyMjYsIDI0NSwgMTMzLCAzMiwgMTYsIDM4LCAKKyAgICAyMjYsIDI0NywgMTMzLCAzMiwgMTYsIDM4LCAyMjcsIDIyMywgMTMzLCAzMiwgMTYsIDM4LCAyMjYsIDI0NiwgMywgMjI3LCAKKyAgICAyMjMsIDEzMywgMzIsIDE2LCAzOCwgMjI2LCAyNDgsIDMsIDIyNywgMjIzLCAxMzMsIDMyLCAxNiwgMzgsIDI0OCwgMjIxLCAKKyAgICAxMzMsIDMyLCAxNiwgMzgsIDIzNSwgMTA2LCAxMzMsIDMyLCAxNiwgMjEzLCA0NCwgMTc2LCAyMzksIDEzMSwgMTMzLCAzMiwgCisgICAgMTYsIDIxMywgNDQsIDE3NiwgMjQyLCA0OCwgMTMzLCAzMiwgMTYsIDIxMywgNDQsIDI0NiwgMTEwLCAyMDQsIDIwNywgMTMzLCAKKyAgICAzMiwgMTYsIDIxMywgNDQsIDI0NiwgMTEwLCAyMDcsIDIsIDEzMywgMzIsIDE2LCAyMjUsIDI2LCAxNzYsIDIxNiwgMTU3LCAKKyAgICAxMzMsIDMyLCAxNiwgMjI1LCAyNiwgMTc2LCAyMTQsIDIxMCwgMTMzLCAzMiwgMTYsIDIyNSwgMjYsIDI0NiwgMTEwLCAyMTUsIAorICAgIDEzMSwgMTMzLCAzMiwgMTYsIDIyNSwgMjYsIDI0NiwgMTEwLCAyMTUsIDExNywgMTMzLCAzMiwgMTYsIDIyNSwgMjYsIDE3NiwgCisgICAgMjE1LCAxNTYsIDIwNywgMjI3LCAyLCAyMTYsIDE0MCwgMjA3LCAyMjcsIDIsIDIxNiwgMTUzLCAyMDcsIDIyNywgMiwgMjE2LCAKKyAgICAxNDksIDIwNywgMjI3LCAxLCA2MiwgMjA3LCAyMjcsIDEsIDcwLCAyMDcsIDIyNywgMSwgNjYsIDIwNywgMjI3LCAxLCAyNTEsIAorICAgIDIyMSwgMjA3LCAyMjcsIDEsIDc0LCAyMDcsIDIyNywgMSwgNzIsIDIwNywgMjI3LCAxLCAyMzgsIDY5LCAyMDcsIDIyNywgMSwgCisgICAgMTYxLCAyMDcsIDIyNywgMSwgMjE0LCAxNTksIDIwNywgMjI3LCAxLCAyMzYsIDg5LCAyMDcsIDIyNywgMSwgMjE5LCAyNTMsIAorICAgIDIwNywgMjI3LCAxLCAyNDcsIDE5MCwgMjA3LCAyMjcsIDEsIDIyNywgMjQ4LCAyMDcsIDIyNywgMSwgMTk5LCAxMTQsIDIwNywgCisgICAgMjI3LCAxLCAyMTgsIDYwLCAyMDcsIDIyNywgMSwgMjA3LCAzNiwgMjA3LCAyMjcsIDEsIDI0MiwgNTgsIDIwNywgMjI3LCAxLCAKKyAgICAxODgsIDIwNywgMjI3LCAxLCAxNzIsIDIwNywgMjI3LCAxLCAyMzcsIDE5NSwgMjA3LCAyMjcsIDEsIDIwMywgOTAsIDIwNywgCisgICAgMjI3LCAxLCAyNDksIDEzNiwgMjA3LCAyMjcsIDEsIDE3OCwgMjA3LCAyMjcsIDEsIDE4MywgMjA3LCAyMjcsIDEsIDIxMywgCisgICAgMjUyLCAyMDcsIDIyNywgMSwgMTk0LCAyMDcsIDIyNywgMSwgMjAxLCAxMTQsIDIwNywgMjI3LCAxLCAyMTIsIDY0LCAyMDcsIAorICAgIDIyNywgMSwgMjAwLCAxODEsIDIwNywgMjI3LCAxLCAxNDQsIDIwNywgMjI3LCAxMTEsIDIsIDIxNiwgMTY4LCAyMDcsIDIyNywgCisgICAgMTExLCAyLCAyMTYsIDE0MiwgMjA3LCAyMjcsIDExMSwgMiwgMjE2LCAxMzksIDIwNywgMjI3LCAyMiwgMiwgMjE2LCAxNTYsIAorICAgIDIwNywgMjI3LCAyMiwgMiwgMjE2LCAxMzgsIDIwNywgMjI3LCAyMiwgMiwgMjE2LCAxNjEsIDIwNywgMjI3LCAyMiwgMiwgCisgICAgMjE2LCAxNDgsIDIwNywgMjI3LCAyMiwgMiwgMjE2LCAxNjksIDIwNywgMjI3LCAyMiwgMiwgMjE2LCAxNTgsIDIwNywgMjI3LCAKKyAgICAyLCAyMTYsIDE3MiwgMjA3LCAyMjcsIDIsIDIwMiwgMjA4LCAyMDcsIDIyNywgMTExLCAyLCAyMTYsIDEwMywgMTc4LCAyMDcsIAorICAgIDIyNywgMTExLCAyLCAyMTYsIDEwMywgMjAxLCAxMTQsIDIwNywgMjI3LCAxLCAyMjYsIDIwNywgMjA3LCAyMjcsIDEsIDIwNywgCisgICAgMTY0LCAyMDcsIDIyNywgMTcsIDE5OSwgODEsIDIwNywgMjI3LCAxNywgMTAyLCAyMDcsIDIyNywgMTcsIDEwNSwgMjA3LCAKKyAgICAyMjcsIDE3LCAxNDcsIDIwNywgMjI3LCAxNywgMTQ5LCAyMDcsIDIyNywgMTcsIDE2NCwgMjA3LCAyMjcsIDE3LCAxODcsIAorICAgIDIwNywgMjI3LCAxNywgMjEwLCAxMzUsIDIwNywgMjI3LCAxNywgMTkyLCAyMDcsIDIyNywgMTcsIDIxOSwgMTEzLCAyMDcsIAorICAgIDIyNywgMjUwLCAxMjIsIDIwNywgMjI3LCAxLCAyMTMsIDEwOCwgMjA3LCAyMjcsIDEsIDIyNCwgMjMzLCAyMDcsIDIyNywgMSwgCisgICAgMjQ4LCAyMDAsIDIwNywgMjI3LCAxLCA0NywgMjI3LCAxMTgsIDIwNywgMjI3LCAxLCA0NywgMjIzLCAyNDMsIDI0OSwgNTQsIAorICAgIDEsIDYyLCAyNDksIDU0LCAxLCAyMDksIDE1MCwgNjIsIDI0OSwgNTQsIDEsIDE0NCwgMjQ5LCA1NCwgMSwgMjA5LCAxNTAsIAorICAgIDE0NCwgMjQ5LCA1NCwgMSwgMjIyLCAxNzUsIDE0NCwgMjQ5LCA1NCwgMSwgMjQ5LCAxMzYsIDI0OSwgNTQsIDEsIDIyNywgCisgICAgNDMsIDI0OSwgMTM2LCAyNDksIDU0LCAxLCAxNzIsIDI0OSwgNTQsIDEsIDIwOSwgMTUwLCAxNzIsIDI0OSwgNTQsIDEsIAorICAgIDE4OCwgMjQ5LCA1NCwgMSwgMjIyLCAxNzUsIDE4OCwgMjQ5LCA1NCwgMSwgMjAxLCAxMTQsIDI0OSwgNTQsIDEsIDIwOSwgCisgICAgMTUwLCAyMDEsIDExNCwgMjQ5LCA1NCwgMSwgMjE2LCAxODUsIDIwMSwgMTE0LCAyNDksIDU0LCAxLCAyMzYsIDg5LCAyNDksIAorICAgIDU0LCAxLCAyMDksIDE1MCwgMjM2LCA4OSwgMjQ5LCA1NCwgMSwgMjI3LCAyNDgsIDI0OSwgNTQsIDEsIDI0MiwgNTgsIDI0OSwgCisgICAgNTQsIDEsIDIxMywgMjUyLCAyNDksIDU0LCAxLCAyMDksIDE1MCwgMjEzLCAyNTIsIDI0OSwgNTQsIDEsIDE3OCwgMjQ5LCAKKyAgICA1NCwgMSwgMjA5LCAxNTAsIDE3OCwgMjQ5LCA1NCwgMSwgMjA4LCAyNTIsIDIwNywgMzYsIDI0OSwgNTQsIDEsIDIxOCwgCisgICAgMjE5LCAyMDcsIDM2LCAyNDksIDU0LCAxLCAyMTIsIDY0LCAyNDksIDU0LCAxLCAyMDksIDE1MCwgMjEyLCA2NCwgMjQ5LCAKKyAgICA1NCwgMSwgMjIyLCAxNzUsIDIxMiwgNjQsIDI0OSwgNTQsIDEsIDE4MywgMjQ5LCA1NCwgMSwgMjA5LCAxNTAsIDE4MywgCisgICAgMjQ5LCA1NCwgMSwgMjE5LCAyNTMsIDI0OSwgNTQsIDEsIDE5NCwgMjQ5LCA1NCwgMSwgMjA5LCAxNTAsIDE5NCwgMjQ5LCAKKyAgICA1NCwgMSwgMjE4LCA2MCwgMjQ5LCA1NCwgMSwgMjQ3LCAxOTAsIDI0OSwgNTQsIDEsIDIyMCwgNzUsIDI0OSwgNTQsIDEsIAorICAgIDIyMiwgMTEwLCAyNDksIDU0LCAxLCA3MCwgMjQ5LCA1NCwgMSwgNjYsIDI0OSwgNTQsIDIsIDIwNSwgMTc3LCAyNDksIDU0LCAKKyAgICAyMiwgMiwgNzIsIDI0OSwgNTQsIDIyLCAyLCAyMTYsIDE4NSwgNzIsIDI0OSwgNTQsIDIyLCAyLCAyMzgsIDI1NSwgMjQ5LCAKKyAgICA1NCwgMjIsIDIsIDcwLCAyNDksIDU0LCAyMiwgMiwgMjI3LCA0MywgNzAsIDI0OSwgNTQsIDIyLCAyLCA3NCwgMjQ5LCA1NCwgCisgICAgMjIsIDIsIDIyNywgNDMsIDc0LCAyNDksIDU0LCAyMiwgMiwgNjYsIDI0OSwgNTQsIDIyLCAyLCAxMDgsIDM2LCAyMDksIAorICAgIDE1MCwgMjEyLCA2NCwgMjQ5LCA1NCwgMTExLCAyLCAyMTksIDI1NSwgMjQ5LCA1NCwgMTExLCAyLCAyMzQsIDI0NywgMjQ5LCAKKyAgICA1NCwgMjE2LCAxNTEsIDI0OSwgNTQsIDIxNiwgMTQ3LCAyNDksIDU0LCAxNiwgMjQ4LCAxNjYsIDIyMCwgMTYyLCAyMjIsIAorICAgIDE4LCAyNDksIDU0LCAxNiwgMjQ4LCAxNjYsIDIxNSwgMTU5LCAyNDksIDU0LCAxNiwgMjQ4LCAxNjYsIDIyNywgMTQ0LCAKKyAgICAyNDksIDU0LCAxNiwgMjQ4LCAxNjYsIDIxNiwgMTUxLCAyMjQsIDI0MywgMSwgMTYxLCAyMjQsIDI0MywgMSwgMjI2LCAxMDIsIAorICAgIDIyNCwgMjQzLCAxLCAyMjYsIDIwNywgMjI0LCAyNDMsIDEsIDIzNiwgODksIDIyNCwgMjQzLCAxLCAyMzUsIDEzMSwgMjI0LCAKKyAgICAyNDMsIDEsIDIxOSwgMjUzLCAyMjQsIDI0MywgMSwgMjQ3LCAxOTAsIDIyNCwgMjQzLCAxLCAyNDcsIDM3LCAyMjQsIDI0MywgCisgICAgMSwgMjI3LCAyNDgsIDIyNCwgMjQzLCAxLCAyMTgsIDYwLCAyMjQsIDI0MywgMSwgMjA3LCAzNiwgMjI0LCAyNDMsIDEsIAorICAgIDIwNiwgMTIyLCAyMjQsIDI0MywgMSwgMjQyLCA1OCwgMjI0LCAyNDMsIDEsIDE4OCwgMjI0LCAyNDMsIDEsIDE3MiwgMjI0LCAKKyAgICAyNDMsIDEsIDIxNSwgMTM1LCAyMjQsIDI0MywgMSwgMjE1LCAyNDUsIDIyNCwgMjQzLCAxLCAyMzcsIDE5NSwgMjI0LCAyNDMsIAorICAgIDEsIDIzNywgNTUsIDIyNCwgMjQzLCAxLCAyNDksIDEzNiwgMjI0LCAyNDMsIDEsIDI0OCwgMTQ1LCAyMjQsIDI0MywgMSwgCisgICAgMTc4LCAyMjQsIDI0MywgMSwgMjIxLCAxNDMsIDIyNCwgMjQzLCAxLCAyMDUsIDMyLCAyMjQsIDI0MywgMSwgMjA1LCAyMiwgCisgICAgMjI0LCAyNDMsIDEsIDIzOSwgOTMsIDIyNCwgMjQzLCAxLCAxODMsIDIyNCwgMjQzLCAxLCAyMTMsIDI1MiwgMjI0LCAyNDMsIAorICAgIDEsIDE5NCwgMjI0LCAyNDMsIDEsIDE0NCwgMjI0LCAyNDMsIDEsIDIzNCwgMzksIDIyNCwgMjQzLCAxLCAyMDMsIDkwLCAKKyAgICAyMjQsIDI0MywgMSwgMjEyLCA2NCwgMjI0LCAyNDMsIDEsIDIxMCwgMTE0LCAyMjQsIDI0MywgMSwgMjAxLCAxMTQsIDIyNCwgCisgICAgMjQzLCAxLCA2MiwgMjI0LCAyNDMsIDIwOCwgMTIsIDEsIDE4MywgMjI0LCAyNDMsIDIwOCwgMTIsIDEsIDIxMywgMjUyLCAKKyAgICAyMjQsIDI0MywgMjIsIDIsIDI1MiwgMTM4LCAyMjQsIDI0MywgMjIsIDIsIDcwLCAyMjQsIDI0MywgMjIsIDIsIDc0LCAyMjQsIAorICAgIDI0MywgMjIsIDIsIDIxNywgNjMsIDIyNCwgMjQzLCAyMiwgMiwgNjYsIDIyNCwgMjQzLCAyMiwgMiwgMjAzLCAxODIsIDIyNCwgCisgICAgMjQzLCAyMiwgMiwgNzIsIDIyNCwgMjQzLCAxMTEsIDIsIDIyNywgMTE4LCAyMjQsIDI0MywgMTExLCAyLCAyMjMsIDI0MywgCisgICAgMjI0LCAyNDMsIDExMSwgMiwgMTU2LCAyMjQsIDI0MywgMTExLCAyLCAyMjAsIDIxNCwgMjI0LCAyNDMsIDExMSwgMiwgMjE2LCAKKyAgICAyMjYsIDIyNCwgMjQzLCAxMTEsIDIsIDE0NiwgMjI0LCAyNDMsIDExMSwgMiwgMjA3LCA4MywgMjI0LCAyNDMsIDExMSwgMiwgCisgICAgMjE4LCAzNCwgMjI0LCAyNDMsIDExMSwgMiwgMjI3LCA2NCwgMjI0LCAyNDMsIDIsIDIxMywgMjEzLCAyMjQsIDI0MywgMiwgCisgICAgMjE4LCAxMDAsIDIyNCwgMjQzLCAyMTQsIDIxMiwgMjA3LCAzNCwgMjI0LCAyNDMsIDIxNCwgMjEyLCAyMTgsIDQ1LCAyMDYsIAorICAgIDE4LCAyMDcsIDM0LCAyMjQsIDI0MywgMjE0LCAyMTIsIDI0NywgNDQsIDIyNCwgMjQzLCAyMTQsIDIxMiwgMjA1LCAxNCwgCisgICAgMjQ3LCA0NCwgMjI0LCAyNDMsIDIxNCwgMjEyLCAyMDUsIDEzLCAyMjQsIDI0MywgMTcsIDE5OSwgODEsIDIyNCwgMjQzLCAKKyAgICAxNywgMTAyLCAyMjQsIDI0MywgMTcsIDEwNSwgMjI0LCAyNDMsIDE3LCAxNDcsIDIyNCwgMjQzLCAxNywgMTQ5LCAyMjQsIAorICAgIDI0MywgMTcsIDE2NCwgMjI0LCAyNDMsIDE3LCAxODcsIDIyNCwgMjQzLCAxNywgMjEwLCAxMzUsIDIyNCwgMjQzLCAxNywgCisgICAgMTkyLCAyMjQsIDI0MywgMTcsIDIxOSwgMTEzLCAyMjQsIDI0MywgMSwgMjA0LCAyNTMsIDIyNCwgMjQzLCAxLCAyMDQsIAorICAgIDI0MSwgMjI0LCAyNDMsIDEsIDI0MSwgMjIwLCAyMTcsIDk0LCAyNDYsIDIyOSwgMTcsIDE5OSwgODEsIDIxNywgOTQsIDI0NiwgCisgICAgMjI5LCAxNywgMTAyLCAyMTcsIDk0LCAyNDYsIDIyOSwgMTcsIDEwNSwgMjE3LCA5NCwgMjQ2LCAyMjksIDE3LCAxNDcsIAorICAgIDIxNywgOTQsIDI0NiwgMjI5LCAxNywgMTQ5LCAyMTcsIDk0LCAyNDYsIDIyOSwgMTcsIDE2NCwgMjE3LCA5NCwgMjQ2LCAKKyAgICAyMjksIDE3LCAxODcsIDIxNywgOTQsIDI0NiwgMjI5LCAxNywgMjEwLCAxMzUsIDIxNywgOTQsIDI0NiwgMjI5LCAxNywgCisgICAgMTkyLCAyMTcsIDk0LCAyNDYsIDIyOSwgMTcsIDIxOSwgMTEzLCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMTk0LCAyMTcsIDk0LCAKKyAgICAyNDYsIDIyOSwgMSwgMjUwLCAxNTUsIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAyNTEsIDE5MywgMjE3LCA5NCwgMjQ2LCAyMjksIAorICAgIDEsIDI1MSwgNzYsIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAyNTEsIDE1MSwgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIDIyNSwgCisgICAgMTc1LCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjUyLCAxMDAsIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAyNTIsIDEwMSwgMjE3LCAKKyAgICA5NCwgMjQ2LCAyMjksIDEsIDI1MiwgOTksIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAyNTIsIDk0LCAyMTcsIDk0LCAyNDYsIAorICAgIDIyOSwgMSwgMjI0LCAyMTAsIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAyMjgsIDI2LCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgCisgICAgMjI4LCAxNTIsIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAyMjgsIDQ3LCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjI4LCAzNSwgCisgICAgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIDIyNCwgNDIsIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAyMDQsIDM4LCAyMTcsIDk0LCAKKyAgICAyNDYsIDIyOSwgMSwgMjA0LCAzNiwgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIDIwMywgMjMzLCAyMTcsIDk0LCAyNDYsIDIyOSwgCisgICAgMSwgMjAzLCAxNzQsIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAyMjUsIDQwLCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjM4LCAKKyAgICAxMzMsIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAyMzksIDIsIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAyMzgsIDE3OSwgMjE3LCAKKyAgICA5NCwgMjQ2LCAyMjksIDEsIDIzOCwgMTA4LCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjI0LCAxMTAsIDIxNywgOTQsIDI0NiwgCisgICAgMjI5LCAxLCAyMTcsIDYsIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAyMTcsIDE0MiwgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIAorICAgIDIxNiwgMjQ5LCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjE3LCAxMDgsIDIxNywgOTQsIDI0NiwgMjI5LCAyMjEsIDQyLCAKKyAgICAyMDQsIDIxOCwgMjE3LCA5NCwgMjQ2LCAyMjksIDIzNiwgODQsIDIwNCwgMjE5LCAyMTcsIDk0LCAyNDYsIDIyOSwgMjIxLCAKKyAgICA0MCwgMjA0LCAyMTksIDIxNywgOTQsIDI0NiwgMjI5LCAyMTMsIDE1MCwgMjE3LCA5NCwgMjQ2LCAyMjksIDIxNSwgMjQzLCAKKyAgICAyMTcsIDk0LCAyNDYsIDIyOSwgMjUxLCAxODQsIDIxNywgOTQsIDI0NiwgMjI5LCAyMTQsIDIxMiwgMjIxLCAzNiwgMjE3LCAKKyAgICA5NCwgMjQ2LCAyMjksIDIxNCwgMjEyLCA1MywgMjIxLCAzNiwgMzcsIDQsIDEsIDIxMiwgMjE5LCAyMDMsIDU5LCAzNywgNCwgCisgICAgMSwgMjI0LCA4MiwgMjQxLCAxNzUsIDM3LCA0LCAxLCAyMjAsIDEyNCwgNzQsIDM3LCA0LCAxLCAyMDEsIDI4LCAyMzgsIAorICAgIDEwNCwgMzcsIDQsIDEsIDIwNiwgMjQ4LCAyMDYsIDIwMSwgMzcsIDQsIDEsIDIwNiwgNDMsIDIwNiwgMjAxLCAzNywgNCwgMSwgCisgICAgMjA2LCAyNDgsIDIzNCwgMTY1LCA1NCwgMzcsIDQsIDEsIDIwNiwgMjQ4LCAyMDAsIDY1LCAzNywgNCwgMSwgMjA0LCAwLCAKKyAgICAyMDQsIDIwLCAyMDcsIDIyNywgMjE0LCAyMTIsIDI0OCwgMTY2LCAyMDcsIDE5OCwgMjA3LCAyMjcsIDIxNCwgMjEyLCAyNDgsIAorICAgIDE2NiwgMjE2LCAxNTIsIDIwNywgMjI3LCAyMTQsIDIxMiwgMjQ4LCAxNjYsIDIxNCwgMjAwLCAyMDcsIDIyNywgMjE0LCAKKyAgICAyMTIsIDI0OCwgMTY2LCAyNDcsIDE3NSwgMjA3LCAyMjcsIDIxNCwgMjEyLCAyNDgsIDE2NiwgMjI0LCAyMzQsIDIxMSwgCisgICAgMjUwLCAyMDcsIDIyNywgMjE0LCAyMTIsIDI0OCwgMTY2LCAyMjcsIDEwOCwgMjExLCAyNTAsIDIwNywgMjI3LCAyMTQsIAorICAgIDIxMiwgMjQ4LCAxNjYsIDI0MiwgNTksIDIxMSwgMjUwLCAyMDcsIDIyNywgMjE0LCAyMTIsIDI0OCwgMTY2LCAyNDksIDEzNywgCisgICAgMjExLCAyNTAsIDIwMywgNTYsIDE1MCwgMjI3LCA0MSwgMjAzLCA1NiwgMTUwLCAyMTAsIDgxLCAyMDMsIDU2LCAxNTAsIAorICAgIDIxNSwgMjMsIDIwMywgNTYsIDIsIDIxOSwgMTI2LCAyMDMsIDU2LCAyLCAyMDAsIDg2LCAyMjEsIDIwMiwgMjA3LCAxODksIAorICAgIDIwMywgNTYsIDE1MCwgMjAwLCA4NiwgMjUxLCAxODksIDIyOCwgMTA0LCAyMDcsIDE4OSwgMjAzLCA1NiwgMTUwLCAyMDAsIAorICAgIDg2LCAyMjgsIDEwNCwgMjA3LCAxODksIDIwMywgNTYsIDE1MCwgMjAwLCA4NiwgMjI3LCAyOSwgMjI4LCAxMDQsIDIwNywgCisgICAgMTg5LCAyMDMsIDU2LCAxNTAsIDI0NywgMTUyLCA1NywgMjAzLCA1NiwgMTUwLCAyMDAsIDg2LCAyMjcsIDI5LCAyMjgsIAorICAgIDEwNCwgMjA3LCAxOTAsIDIxMSwgMjIwLCAyMDMsIDU2LCAxNTAsIDUzLCAyMDcsIDE4OSwgMjAzLCA1NiwgMTUwLCAyMDUsIAorICAgIDgzLCAyMDcsIDE4OSwgMjAzLCA1NiwgMTUwLCAyMjcsIDI5LCAyNTEsIDM1LCAyMDMsIDU2LCAxNTAsIDczLCA1NywgMjAzLCAKKyAgICA1NiwgMTUwLCAxMjAsIDE5MCwgNTcsIDIwMywgNTYsIDE1MCwgMTI2LCAxOTAsIDU3LCAyMDMsIDU2LCAxNTAsIDIxMywgMzQsIAorICAgIDIyNywgNDAsIDIyOCwgMTA0LCAyMDcsIDE4OSwgMjAzLCA1NiwgMTUwLCAyNTAsIDE1MiwgMjI4LCAxMDQsIDIwNywgMTg5LCAKKyAgICAyMDMsIDU2LCAyLCAyMDIsIDIwNCwgMjA3LCAxODksIDIwMywgNTYsIDIsIDIwMiwgMjA0LCAyMDQsIDMzLCAyMDMsIDU2LCAKKyAgICAyLCAyMTMsIDEwNSwgMjAyLCAyMDQsIDIwNCwgMzMsIDIwMywgNTYsIDIsIDIwMiwgMjA0LCAyNTEsIDM1LCAyMDMsIDU2LCAKKyAgICAyLCAyMTMsIDEwNSwgMjAyLCAyMDQsIDI1MSwgMzUsIDIwMywgNTYsIDIsIDIwMiwgMjA0LCAyMDQsIDM0LCAzLCAyMDcsIDYsIAorICAgIDIwMywgNTYsIDIsIDIwMiwgMjA0LCAyNTEsIDM2LCAzLCAyMDcsIDYsIDIwMywgNTYsIDIsIDI1MSwgMzQsIDI1MSwgNTAsIAorICAgIDIwMywgNTYsIDIsIDI1MSwgMzQsIDI0OSwgMTA0LCAyMDMsIDU2LCAyLCAyNTEsIDM0LCAyMDMsIDgxLCAyMDMsIDU2LCAyLCAKKyAgICAyNTEsIDM0LCAyMDMsIDgyLCAzLCAyMDcsIDYsIDIwMywgNTYsIDIsIDIwNSwgMjE0LCAyMDMsIDU2LCAyLCAyMzQsIDg3LCAKKyAgICAxNjgsIDI1MSwgMzMsIDIwMywgNTYsIDIsIDE2OCwgMjUxLCAzMywgMjAzLCA1NiwgMiwgMjEyLCAxNzcsIDE2OCwgMjUxLCAKKyAgICAzMywgMjAzLCA1NiwgMiwgMjUxLCAzNCwgMjA0LCA0MCwgMjIxLCAyNywgMjAzLCA1NiwgMiwgMjUwLCAyMzAsIDIwMywgNTYsIAorICAgIDIsIDIxMiwgMjI4LCAyNTAsIDIzMCwgMjAzLCA1NiwgMTUwLCAyNDcsIDE1MiwgNTYsIDIwMywgNTYsIDIsIDIyNywgMjAxLCAKKyAgICAyMDMsIDU2LCAyLCAyMDMsIDIyNiwgMjAzLCA1NiwgMTUwLCAyMTMsIDI3LCA1NiwgMjAzLCA1NiwgMTUwLCA1MywgMjEzLCAKKyAgICAyNywgNTYsIDgsIDEsIDQsIDYsIDYyLCA4LCAxLCA0LCA2LCAyNTEsIDIyMSwgOCwgNCwgMSwgMjA0LCAxODUsIDI1MSwgCisgICAgMjIxLCA4LCAxLCA0LCA2LCAyNDksIDcxLCAyNTAsIDEwMywgOCwgMSwgNCwgNiwgMjQ3LCAyMjMsIDgsIDEsIDQsIDYsIAorICAgIDI0MiwgMTUzLCA4LCAxLCA0LCA2LCAyMzgsIDc0LCA4LCAxLCA0LCA2LCA3MiwgOCwgNCwgMSwgMjA0LCAxODUsIDE3NiwgCisgICAgNzIsIDgsIDQsIDEsIDIwNCwgMTg1LCA3MCwgOCwgMSwgNCwgNiwgMjI3LCAyNTEsIDgsIDEsIDQsIDYsIDIyNywgMTE4LCA4LCAKKyAgICAxLCA0LCA2LCAyMjUsIDE5MywgMywgOTcsIDgsIDEsIDQsIDYsIDIyMywgMjQzLCA4LCAxLCA0LCA2LCAyMTMsIDEwNSwgCisgICAgMjIwLCAyMTQsIDgsIDEsIDQsIDYsIDc0LCA4LCAxLCA0LCA2LCAxNzYsIDc0LCA4LCA0LCAxLCAyMDksIDE3MywgNzQsIDgsIAorICAgIDQsIDEsIDIwOSwgMTczLCAxNzYsIDc0LCA4LCA0LCAxLCAyMDksIDE3MywgMTYzLCAzLCA5NywgOCwgNCwgMSwgMjA0LCAKKyAgICAxODUsIDIxNywgMTIxLCA4LCAxLCA0LCA2LCAyMTcsIDMsIDgsIDQsIDEsIDIwNSwgMTU4LCAxNjcsIDc0LCA4LCA0LCAxLCAKKyAgICAyNDgsIDkzLCAxNjcsIDc0LCA4LCAxLCA0LCA2LCAyMTYsIDIyNiwgOCwgMSwgNCwgNiwgMjEzLCAxMDUsIDE0NiwgOCwgMSwgCisgICAgNCwgNiwgMjA0LCAxODUsIDE0NiwgOCwgMSwgNCwgNiwgMjA3LCA4MywgOCwgMSwgNCwgNiwgNjYsIDgsIDQsIDEsIDIwOSwgCisgICAgMTczLCA2NiwgOCwgNCwgMSwgMjA5LCAxNzMsIDI0MSwgNzIsIDY2LCA4LCA0LCAxLCAyMDksIDE3MywgMjA0LCAxODUsIAorICAgIDIyMywgMjQzLCA4LCAxLCA0LCA2LCAyMDMsIDE2OCwgOCwgMSwgNCwgNiwgMjAxLCAxNDcsIDgsIDEsIDQsIDYsIDE5OSwgCisgICAgMTU3LCA4LCAxLCA0LCA2LCAyMzgsIDgsIDgsIDEsIDIwMiwgMTg5LCAyMjUsIDY2LCAyMDgsIDIxNiwgOCwgMSwgMjUxLCAKKyAgICAxNzEsIDMxLCAxLCA0LCA2LCAyMzYsIDYwLCAzMSwgMSwgNCwgNiwgMjI1LCA4NywgMzEsIDEsIDQsIDYsIDIxNSwgMjA0LCAKKyAgICAzMSwgMSwgNCwgNiwgMjEzLCA5MCwgMzEsIDEsIDQsIDYsIDIxNCwgMjM1LCAzNywgMSwgNCwgNiwgMjM4LCAyMDksIDY3LCAKKyAgICAxLCA2LCA2MiwgNjcsIDEsIDYsIDI1MSwgMjIxLCA2NywgMSwgNiwgMjUwLCAxMDMsIDY3LCAxLCA2LCAyNDksIDcxLCAyNTAsIAorICAgIDEwMywgNjcsIDEsIDYsIDI0MiwgMTUzLCA2NywgMSwgNiwgNzIsIDY3LCAxLCA2LCAyMTMsIDEwNSwgNzIsIDY3LCAxLCA2LCAKKyAgICAyMzYsIDE1NiwgNjcsIDEsIDYsIDIzNCwgMjQ3LCA2NywgMSwgNiwgNzAsIDY3LCAxLCA2LCAyMjcsIDI1MSwgNjcsIDEsIDYsIAorICAgIDIyNywgMTE4LCA2NywgMSwgNiwgMTU2LCA2NywgMSwgNiwgMjIzLCAyNDMsIDY3LCAxLCA2LCAyMjAsIDIxNCwgNjcsIDEsIAorICAgIDYsIDIxMywgMTA1LCAyMjAsIDIxNCwgNjcsIDEsIDYsIDc0LCA2NywgMSwgNiwgMjE3LCAzLCA2NywgMSwgNiwgMjE2LCAKKyAgICAyMjYsIDY3LCAxLCA2LCAxNDYsIDY3LCAxLCA2LCAyMDcsIDgzLCA2NywgMSwgNiwgNjYsIDY3LCAxLCA2LCAyMDEsIDE0NywgCisgICAgNjcsIDEsIDQsIDYyLCA2NywgMSwgNCwgMjA0LCAxODUsIDYyLCA2NywgMSwgNCwgMjUxLCAxMTIsIDY3LCAxLCA0LCAyMDQsIAorICAgIDE4NSwgMjUxLCAyMjEsIDY3LCAxLCA0LCAyNTAsIDEwMywgNjcsIDEsIDQsIDI0MiwgMTUzLCA2NywgMSwgNCwgNzIsIDY3LCAKKyAgICAxLCA0LCAyMTEsIDIxOCwgNjcsIDEsIDQsIDE3NiwgNzIsIDY3LCAxLCA0LCAyMDQsIDE4NSwgMTc2LCA3MiwgNjcsIDEsIDQsIAorICAgIDIzNiwgMTU2LCA2NywgMSwgNCwgMjA0LCAxODUsIDcwLCA2NywgMSwgNCwgMjI3LCAxMTgsIDY3LCAxLCA0LCAyMjMsIDI0MywgCisgICAgNjcsIDEsIDQsIDIzOCwgMTY1LCA2NywgMSwgNCwgNzQsIDY3LCAxLCA0LCAxNzYsIDc0LCA2NywgMSwgNCwgMjA1LCAxNTgsIAorICAgIDE2NywgNzQsIDY3LCAxLCA0LCAyNDgsIDkzLCAxNjcsIDc0LCA2NywgMSwgNCwgMjE2LCAyMjYsIDY3LCAxLCA0LCAyMDcsIAorICAgIDgzLCA2NywgMSwgNCwgNjYsIDY3LCAxLCA0LCAyMDksIDE3MywgNjYsIDY3LCAxLCA0LCAyMDQsIDE4NSwgMjIzLCAyNDMsIAorICAgIDY3LCAxLCA0LCAyMDMsIDE2OCwgNjcsIDEsIDQsIDI1MSwgMTcxLCA2NywgMSwgNCwgMjQ4LCAyMDgsIDY3LCAxLCA0LCAzMSwgCisgICAgMjM2LCA2MCwgNjcsIDEsIDQsIDI0MSwgMTM2LCA2NywgMSwgNCwgMzEsIDIxNSwgMjI5LCA2NywgMSwgNCwgMjQ2LCAyMzYsIAorICAgIDgsIDIwOCwgNCwgNCwgMSwgNzAsIDgsIDIwOCwgNCwgNCwgMSwgMTQ2LCA4LCAyMDgsIDQsIDQsIDEsIDY2LCA4LCAyMDgsIAorICAgIDQsIDQsIDEsIDIwMywgMTY4LCAzMSwgMjA4LCA0LCA0LCAxLCAyNDgsIDIwOCwgMzEsIDIwOCwgNCwgNCwgMSwgMjM2LCA2MCwgCisgICAgMzEsIDIwOCwgNCwgNCwgMSwgMjEzLCA5MCwgMzEsIDIwOCwgNCwgNCwgMSwgMjE1LCAyMjksIDMxLCAyMDgsIDQsIDQsIDEsIAorICAgIDI0NiwgMjM2LCA4LCA0LCAxLCAyMDQsIDMxLCA4LCA0LCAxLCA2OCwgMywgMTAxLCAyMDUsIDI0MCwgOCwgNCwgMSwgMjQyLCAKKyAgICAxNTQsIDMsIDEwMSwgMjA1LCAyNDAsIDgsIDQsIDEsIDIzOCwgNiwgMywgMTAxLCAyMDUsIDI0MCwgOCwgNCwgMSwgMjIzLCAKKyAgICAyNDQsIDMsIDEwMSwgMjA1LCAyNDAsIDgsIDQsIDEsIDIyMCwgMjE1LCAzLCAxMDEsIDIwNSwgMjQwLCA4LCA0LCAxLCAyMTYsIAorICAgIDIyNywgMywgMTAxLCAyMDUsIDI0MCwgOCwgNCwgMSwgMjE0LCAzMywgMywgMTAxLCAyMDUsIDI0MCwgOCwgNCwgMSwgMjE0LCAKKyAgICAzMywgMywgMjM3LCA2OSwgMjYsIDEwMSwgMjA1LCAyNDAsIDgsIDQsIDEsIDIxMiwgMTIzLCAzLCAxMDEsIDIwNSwgMjQwLCAKKyAgICA4LCA0LCAxLCAyMDcsIDg0LCAzLCAxMDEsIDIwNSwgMjQwLCA4LCA0LCAxLCAxOTksIDE1OCwgMywgMTAxLCAyMDUsIDI0MCwgCisgICAgOCwgNCwgMSwgMjA0LCAxODUsIDIzNiwgMTU2LCA2NywgMSwgMzcsIDIzOCwgMTc5LCA4LCA0LCAxLCAyMjgsIDcxLCAyMzYsIAorICAgIDE1NiwgOCwgNCwgMSwgMjA2LCAxMjUsIDMsIDIwOCwgNTEsIDgsIDQsIDYsIDEsIDIzMywgMTksIDMsIDk3LCA4LCA0LCAxLCAKKyAgICAyMjgsIDQyLCAzLCA5NywgOCwgNCwgMSwgMjE2LCAyMjcsIDMsIDk3LCA4LCA0LCA2LCAxLCAxMDgsIDMsIDk3LCA4LCA0LCAKKyAgICAxLCAyMDMsIDIyMSwgMywgOTcsIDgsIDQsIDEsIDY4LCAzLCAyMTYsIDE4NCwgMTE3LCA4LCA0LCAxLCAyNDIsIDE1NCwgMywgCisgICAgMjE2LCAxODQsIDExNywgOCwgNCwgMSwgMjM4LCA2LCAzLCAyMTYsIDE4NCwgMTE3LCA4LCA0LCAxLCAyMzYsIDE1NywgMywgCisgICAgMjE2LCAxODQsIDExNywgOCwgNCwgMSwgMjI3LCAxMTksIDMsIDIxNiwgMTg0LCAxMTcsIDgsIDQsIDEsIDIyNSwgMTkzLCAzLCAKKyAgICAyMTYsIDE4NCwgMTE3LCA4LCA0LCAxLCAyMjMsIDI0NCwgMywgMjE2LCAxODQsIDExNywgOCwgNCwgMSwgMjIwLCAyMTUsIDMsIAorICAgIDIxNiwgMTg0LCAxMTcsIDgsIDQsIDEsIDIxNiwgMjI3LCAzLCAyMTYsIDE4NCwgMTE3LCA4LCA0LCAxLCAyMTQsIDMzLCAzLCAKKyAgICAyMTYsIDE4NCwgMTE3LCA4LCA0LCAxLCAyMTIsIDEyMywgMywgMjE2LCAxODQsIDExNywgOCwgNCwgMSwgMjM4LCA5NSwgMywgCisgICAgMjE2LCAxODQsIDExNywgOCwgNCwgMSwgMjAzLCAxNjksIDMsIDIxNiwgMTg0LCAxMTcsIDgsIDQsIDEsIDIwMCwgMTk2LCAzLCAKKyAgICAyMTYsIDE4NCwgMTE3LCA4LCA0LCAxLCAxOTksIDE1OCwgMywgMjE2LCAxODQsIDExNywgOCwgNCwgMSwgMzUsIDMsIDIxMywgCisgICAgMTExLCAxMTcsIDgsIDQsIDEsIDI1MSwgMTEzLCAzLCAyMTMsIDExMSwgMTE3LCA4LCA0LCAxLCAyNDIsIDE1NCwgMywgMjMzLCAKKyAgICAxODcsIDI2LCAyMDcsIDYsIDgsIDQsIDEsIDE5NywgMywgMjEzLCAxMTEsIDExNywgOCwgNCwgMSwgMTc2LCAxOTcsIDMsIAorICAgIDIxMywgMTExLCAxMTcsIDgsIDQsIDEsIDIxMywgMTA1LCAxNzYsIDE5NywgMywgMjEzLCAxMTEsIDExNywgOCwgNCwgMSwgCisgICAgMjExLCAyMTksIDMsIDIxMywgMTExLCAxMTcsIDgsIDQsIDEsIDIzMywgMTksIDMsIDIxMywgMTExLCAxMTcsIDgsIDQsIDEsIAorICAgIDE3NiwgMTYzLCAzLCAyMTMsIDExMSwgMTE3LCA4LCA0LCAxLCAyMzgsIDk1LCAzLCAyMTMsIDExMSwgMTE3LCA4LCA0LCAxLCAKKyAgICAxMDgsIDMsIDIxMywgMTExLCAxMTcsIDgsIDQsIDEsIDIzOCwgOSwgMywgMjEzLCAxMTEsIDExNywgNjcsIDEsIDQsIDIwNCwgCisgICAgMTg1LCAyNTEsIDExMiwgNjcsIDEsIDQsIDI0NywgMjIzLCA2NywgMSwgNCwgMjQ3LCAyMjQsIDMsIDI0MiwgMTk4LCA2NywgCisgICAgMSwgNCwgMjM4LCA3NCwgNjcsIDEsIDQsIDIxMywgMTA1LCAxNzYsIDcyLCA2NywgMSwgNCwgMjM4LCA1LCA2NywgMSwgNCwgCisgICAgMjQwLCAxODEsIDIyNywgMjUyLCAzLCA5NywgNjcsIDEsIDQsIDEzNSwgMjM2LCAxNTYsIDY3LCAxLCA0LCAyMDQsIDE4NSwgCisgICAgMjM0LCAyNDcsIDY3LCAxLCA0LCAyMzMsIDE5LCAzLCA5NywgNjcsIDEsIDQsIDIyOCwgNDEsIDY3LCAxLCA0LCA2LCA3MCwgCisgICAgNjcsIDEsIDQsIDYsIDIzMywgMTksIDMsIDk3LCA2NywgMSwgNCwgMjI3LCAyNTIsIDMsIDI0MiwgMjMwLCA2NywgMSwgNCwgCisgICAgMjI1LCAxOTMsIDMsIDIxMywgMTExLCAxMTcsIDY3LCAxLCA0LCAyMjUsIDE5MywgMywgMjE2LCAxODQsIDExNywgNjcsIDEsIAorICAgIDQsIDYsIDE1NiwgNjcsIDEsIDQsIDIyMywgMjQ0LCAzLCAxMTcsIDY3LCAxLCA0LCAyMDQsIDE4NSwgMjIzLCAyNDQsIDMsIAorICAgIDE2OCwgMjI1LCAxNiwgNjcsIDEsIDQsIDIyMCwgMjE1LCAzLCA0OSwgMTE3LCA2NywgMSwgNCwgMjIwLCAyMTUsIDMsIDIxMywgCisgICAgMTExLCAxMTcsIDY3LCAxLCA0LCA2LCAyMjAsIDIxNCwgNjcsIDEsIDQsIDI0OSwgNzEsIDc0LCA2NywgMSwgNCwgMjE1LCAKKyAgICAyMjksIDY3LCAxLCA0LCAyMTIsIDEyMywgMywgMTE3LCA2NywgMSwgNCwgMjM4LCA5NCwgNjcsIDEsIDQsIDIwNywgODQsIDMsIAorICAgIDIxNiwgMTg0LCAxMTcsIDY3LCAxLCA0LCAxMDgsIDE0OCwgNjcsIDEsIDQsIDIwMywgMjIwLCA2NywgMSwgNCwgNiwgNjYsIAorICAgIDY3LCAxLCA0LCAyMDMsIDE2OSwgMywgMTE3LCA2NywgMSwgNCwgMjA0LCAxODUsIDIwMywgMTY4LCA2NywgMSwgNCwgMTk5LCAKKyAgICAxNTcsIDY3LCAxLCA0LCAxOTksIDE1OCwgMywgMjEzLCAxMTEsIDExNywgNjcsIDEsIDQsIDE5OSwgMTU4LCAzLCAyNDIsIAorICAgIDE5OCwgNjcsIDEsIDQsIDIzOCwgOCwgNjcsIDEsIDQsIDIwNiwgODgsIDM4LCAyMzksIDE4MCwgMjM1LCA3NCwgMjUxLCAKKyAgICAyNTEsIDM4LCAyMzksIDE4MCwgMjUxLCAyMzksIDI1MSwgMjUxLCAzOCwgMjA5LCA0MiwgNTcsIDM4LCAyMDcsIDE5NiwgODEsIAorICAgIDM4LCAyMjIsIDIyNywgMzgsIDIzNSwgNzEsIDM4LCAyMjIsIDIyNSwgMzgsIDI1MSwgMjM3LCAzOCwgMjM1LCA3MiwgMzgsIAorICAgIDI1MSwgMjM4LCAzOCwgOCwgNCwgMSwgMjE0LCAzMywgNTcsIDM4LCAyNDgsIDU2LCAzOCwgMjIyLCAyMjYsIDM4LCA1MywgCisgICAgMjQ2LCAxNDcsIDU2LCAzOCwgMjE3LCAxMTEsIDU2LCAzOCwgMTk5LCAyNywgNTcsIDM4LCAyMjgsIDI3LCA1NywgMzgsIAorICAgIDIwMywgMjE1LCA1NiwgMzgsIDIwMywgMTk4LCA1NiwgMzgsIDgsIDQsIDEsIDIzNywgNDEsIDE3NiwgMzUsIDU2LCAzOCwgOCwgCisgICAgNCwgMSwgMjUxLCAyMjEsIDM4LCA4LCA0LCAxLCAyNTEsIDMxLCAzOCwgOCwgNCwgMSwgMjUwLCAxMjMsIDM4LCA4LCA0LCAxLCAKKyAgICAyNDcsIDIyNCwgMjQ3LCA2OSwgMzgsIDgsIDQsIDEsIDIyOCwgNzEsIDI0MiwgMTUzLCAzOCwgOCwgNCwgMSwgMjM4LCA3NCwgCisgICAgMzgsIDgsIDQsIDEsIDIzNiwgMTU2LCAzOCwgOCwgMSwgNCwgNiwgMjM2LCAxNTYsIDM4LCA4LCA0LCAxLCAyMjcsIDExOCwgCisgICAgMzgsIDgsIDQsIDEsIDE1NiwgMzgsIDgsIDEsIDQsIDYsIDE1NiwgMzgsIDgsIDEsIDQsIDYsIDIyMywgMjQzLCAzOCwgOCwgCisgICAgNCwgMSwgMjIwLCAyMTQsIDM4LCA4LCAxLCA0LCA2LCAyMjAsIDIxNCwgMzgsIDgsIDEsIDQsIDYsIDE0NiwgMzgsIDgsIDQsIAorICAgIDEsIDIxNCwgMzMsIDIxMiwgMjIyLCAzOCwgOCwgNCwgMSwgMjEyLCAxMjIsIDM4LCA4LCA0LCAxLCAxNjgsIDIxMiwgMTIyLCAKKyAgICAzOCwgOCwgNCwgMSwgMTk5LCAxNTcsIDM4LCA4LCA0LCAxLCAyNTEsIDExMiwgMzgsIDgsIDQsIDEsIDI1MCwgMTAzLCAzOCwgCisgICAgOCwgNCwgMSwgMjQ4LCAyMDgsIDM4LCA4LCA0LCAxLCAyMTEsIDIxOCwgMzgsIDgsIDQsIDEsIDIzOCwgNSwgMzgsIDgsIDQsIAorICAgIDEsIDIyNSwgMTkzLCAzLCA1MywgMTAxLCAyMDUsIDI0MCwgMzgsIDgsIDQsIDEsIDE2MywgMywgMTYyLCAyNDcsIDU3LCA5NywgCisgICAgMzgsIDgsIDQsIDEsIDIxNiwgMjI2LCAzOCwgOCwgNCwgMSwgMjM4LCA5NCwgMzgsIDgsIDQsIDEsIDEwOCwgMywgMTYyLCAKKyAgICAyNDcsIDU3LCA5NywgMzgsIDgsIDQsIDEsIDIwMSwgMTQ3LCAzOCwgOCwgNCwgMSwgMzUsIDMsIDI0MSwgNzQsIDM4LCA4LCAKKyAgICA0LCAxLCAxNjMsIDMsIDI0MSwgNzQsIDM4LCA4LCA0LCAxLCAxMDgsIDMsIDI0MSwgNzQsIDM4LCAxMTUsIDIwNywgMTgsIAorICAgIDU2LCAzOCwgMjQxLCAxNDUsIDgxLCAzOCwgNTMsIDIyOCwgNTAsIDI0OCwgNTgsIDU3LCAzOCwgMjUxLCAxMTcsIDE2MCwgCisgICAgMjA1LCAxODYsIDU3LCAzOCwgNDksIDI1MCwgMjAzLCA1NiwgMzgsIDUxLCAyNTAsIDIwMywgMjYsIDEyNywgMjUwLCAyMDMsIAorICAgIDU3LCA4LCA2LCAxLCAzNSwgMywgMjEzLCAyNywgNTcsIDgsIDQsIDEsIDM1LCAzLCAyMTMsIDI3LCA1NywgOCwgNiwgMSwgCisgICAgNjgsIDMsIDczLCA1NiwgOCwgNCwgMSwgNjgsIDMsIDczLCA1NiwgOCwgNiwgMSwgNjgsIDMsIDczLCA1NywgOCwgNCwgMSwgCisgICAgNjgsIDMsIDczLCA1NywgOCwgNiwgMSwgNjgsIDMsIDIyNCwgMTc3LCA1NywgOCwgNCwgMSwgNjgsIDMsIDIyNCwgMTc3LCAKKyAgICA1NywgOCwgNiwgMSwgMjQ3LCAyMjQsIDMsIDI0NywgNzAsIDI2LCAxNjksIDgsIDQsIDEsIDI0NywgMjI0LCAzLCAyNDcsIAorICAgIDcwLCAyNiwgMTY5LCA4LCA2LCAxLCAyNDIsIDE1NCwgMywgNzMsIDU2LCA4LCA0LCAxLCAyNDIsIDE1NCwgMywgNzMsIDU2LCAKKyAgICA4LCA2LCAxLCAyNDIsIDE1NCwgMywgNzMsIDU3LCA4LCA0LCAxLCAyNDIsIDE1NCwgMywgNzMsIDU3LCA4LCA2LCAxLCAyNDIsIAorICAgIDE1NCwgMywgMjI0LCAxNzcsIDU3LCA4LCA0LCAxLCAyNDIsIDE1NCwgMywgMjI0LCAxNzcsIDU3LCA4LCA2LCAxLCAyNDIsIAorICAgIDE1NCwgMywgMjQ3LCA2OSwgOCwgNCwgMSwgMjQyLCAxNTQsIDMsIDI0NywgNjksIDgsIDYsIDEsIDI0MiwgMTU0LCAzLCAKKyAgICAyNDYsIDE0NywgNTcsIDgsIDQsIDEsIDI0MiwgMTU0LCAzLCAyNDYsIDE0NywgNTcsIDgsIDYsIDEsIDE5NywgMywgMjIyLCAKKyAgICAyMjksIDI2LCAyMzUsIDczLCA4LCA0LCAxLCAxOTcsIDMsIDIyMiwgMjI5LCAyNiwgMjM1LCA3MywgOCwgNiwgMSwgMTk3LCAKKyAgICAzLCAyMjIsIDIyOSwgMjYsIDE2OSwgOCwgNCwgMSwgMTk3LCAzLCAyMjIsIDIyOSwgMjYsIDE2OSwgOCwgNiwgMSwgMTk3LCAKKyAgICAzLCAyNDYsIDE0NywgNTcsIDgsIDQsIDEsIDE5NywgMywgMjQ2LCAxNDcsIDU3LCA4LCA2LCAxLCAxOTcsIDMsIDIwNSwgCisgICAgMjQxLCA1NywgOCwgNCwgMSwgMTk3LCAzLCAyMDUsIDI0MSwgNTcsIDgsIDYsIDEsIDE5NywgMywgMjQ3LCA3MCwgMjYsIAorICAgIDI0OCwgNTcsIDgsIDQsIDEsIDE5NywgMywgMjQ3LCA3MCwgMjYsIDI0OCwgNTcsIDgsIDYsIDEsIDIzOCwgNiwgMywgNzMsIAorICAgIDU2LCA4LCA0LCAxLCAyMzgsIDYsIDMsIDczLCA1NiwgOCwgNiwgMSwgMjM2LCAxNTcsIDMsIDIyMiwgMjI4LCA4LCA0LCAxLCAKKyAgICAyMzYsIDE1NywgMywgMjIyLCAyMjgsIDgsIDYsIDEsIDIzNCwgMjQ4LCAzLCA3MywgNTYsIDgsIDQsIDEsIDIzNCwgMjQ4LCAKKyAgICAzLCA3MywgNTYsIDgsIDYsIDEsIDIzNCwgMjQ4LCAzLCA3MywgNTcsIDgsIDQsIDEsIDIzNCwgMjQ4LCAzLCA3MywgNTcsIDgsIAorICAgIDYsIDEsIDIzNCwgMjQ4LCAzLCAyNDEsIDc0LCA4LCA0LCAxLCAyMzQsIDI0OCwgMywgMjQxLCA3NCwgOCwgNiwgMSwgMjM0LCAKKyAgICAyNDgsIDMsIDI0NywgNjksIDgsIDQsIDEsIDIzNCwgMjQ4LCAzLCAyNDcsIDY5LCA4LCA2LCAxLCAyMzQsIDI0OCwgMywgCisgICAgMjQ4LCA1OCwgNTcsIDgsIDQsIDEsIDIzNCwgMjQ4LCAzLCAyNDgsIDU4LCA1NywgOCwgNiwgMSwgMjMzLCAxOSwgMywgMjA1LCAKKyAgICAyNDEsIDU3LCA4LCA0LCAxLCAyMzMsIDE5LCAzLCAyMDUsIDI0MSwgNTcsIDgsIDYsIDEsIDIzMywgMTksIDMsIDI0MSwgNzUsIAorICAgIDI2LCAxNjksIDgsIDQsIDEsIDIzMywgMTksIDMsIDI0MSwgNzUsIDI2LCAxNjksIDgsIDYsIDEsIDIyNywgMTE5LCAzLCAKKyAgICAxNjksIDgsIDQsIDEsIDIyNywgMTE5LCAzLCAxNjksIDgsIDYsIDEsIDIyNywgMTE5LCAzLCA3MywgNTcsIDgsIDQsIDEsIAorICAgIDIyNywgMTE5LCAzLCA3MywgNTcsIDgsIDYsIDEsIDIyNywgMTE5LCAzLCAyMjQsIDE3NywgNTcsIDgsIDQsIDEsIDIyNywgCisgICAgMTE5LCAzLCAyMjQsIDE3NywgNTcsIDgsIDYsIDEsIDIyNSwgMTkzLCAzLCA3MywgNTcsIDgsIDQsIDEsIDIyNSwgMTkzLCAzLCAKKyAgICA3MywgNTcsIDgsIDYsIDEsIDIyNSwgMTkzLCAzLCA3MywgMjQ4LCAyMjgsIDI2LCAyMjIsIDIyOCwgOCwgNCwgMSwgMjI1LCAKKyAgICAxOTMsIDMsIDczLCAyNDgsIDIyOCwgMjYsIDIyMiwgMjI4LCA4LCA2LCAxLCAyMjUsIDE5MywgMywgMjI0LCAxNzcsIDU3LCAKKyAgICA4LCA0LCAxLCAyMjUsIDE5MywgMywgMjI0LCAxNzcsIDU3LCA4LCA2LCAxLCAyMjUsIDE5MywgMywgMjQ2LCAxNDcsIDU3LCAKKyAgICA4LCA0LCAxLCAyMjUsIDE5MywgMywgMjQ2LCAxNDcsIDU3LCA4LCA2LCAxLCAyMjMsIDI0NCwgMywgMTY5LCA4LCA0LCAxLCAKKyAgICAyMjMsIDI0NCwgMywgMTY5LCA4LCA2LCAxLCAyMjMsIDI0NCwgMywgNzMsIDU2LCA4LCA0LCAxLCAyMjMsIDI0NCwgMywgNzMsIAorICAgIDU2LCA4LCA2LCAxLCAyMjMsIDI0NCwgMywgNzMsIDU3LCA4LCA0LCAxLCAyMjMsIDI0NCwgMywgNzMsIDU3LCA4LCA2LCAxLCAKKyAgICAyMjAsIDIxNSwgMywgNzMsIDU2LCA4LCA0LCAxLCAyMjAsIDIxNSwgMywgNzMsIDU2LCA4LCA2LCAxLCAyMjAsIDIxNSwgMywgCisgICAgNzMsIDU3LCA4LCA0LCAxLCAyMjAsIDIxNSwgMywgNzMsIDU3LCA4LCA2LCAxLCAyMjAsIDIxNSwgMywgMjI0LCAxNzcsIDU3LCAKKyAgICA4LCA0LCAxLCAyMjAsIDIxNSwgMywgMjI0LCAxNzcsIDU3LCA4LCA2LCAxLCAyMjAsIDIxNSwgMywgMjQ2LCAxNDcsIDU3LCAKKyAgICA4LCA0LCAxLCAyMjAsIDIxNSwgMywgMjQ2LCAxNDcsIDU3LCA4LCA2LCAxLCAxNjMsIDMsIDIwNSwgMjQxLCAyNiwgMTY5LCAKKyAgICA4LCA0LCAxLCAxNjMsIDMsIDIwNSwgMjQxLCAyNiwgMTY5LCA4LCA2LCAxLCAxNjMsIDMsIDIwNSwgMjQxLCAyNiwgMjQxLCAKKyAgICA3NCwgOCwgNCwgMSwgMTYzLCAzLCAyMDUsIDI0MSwgMjYsIDI0MSwgNzQsIDgsIDYsIDEsIDE2MywgMywgMjIyLCAyMjksIAorICAgIDI2LCAyMzUsIDczLCA4LCA0LCAxLCAxNjMsIDMsIDIyMiwgMjI5LCAyNiwgMjM1LCA3MywgOCwgNiwgMSwgMTYzLCAzLCAKKyAgICAyMjIsIDIyOSwgMjYsIDE2OSwgOCwgNCwgMSwgMTYzLCAzLCAyMjIsIDIyOSwgMjYsIDE2OSwgOCwgNiwgMSwgMjE2LCAyMjcsIAorICAgIDMsIDE2OSwgOCwgNCwgMSwgMjE2LCAyMjcsIDMsIDE2OSwgOCwgNiwgMSwgMjE2LCAyMjcsIDMsIDczLCA1NiwgOCwgNCwgMSwgCisgICAgMjE2LCAyMjcsIDMsIDczLCA1NiwgOCwgNiwgMSwgMjE0LCAzMywgMywgNzMsIDU2LCA4LCA0LCAxLCAyMTQsIDMzLCAzLCAKKyAgICA3MywgNTYsIDgsIDYsIDEsIDIxNCwgMzMsIDMsIDczLCA1NywgOCwgNCwgMSwgMjE0LCAzMywgMywgNzMsIDU3LCA4LCA2LCAKKyAgICAxLCAyMTQsIDMzLCAzLCA3MywgMjQ4LCAyMjgsIDI2LCAyMjIsIDIyOCwgOCwgNCwgMSwgMjE0LCAzMywgMywgNzMsIDI0OCwgCisgICAgMjI4LCAyNiwgMjIyLCAyMjgsIDgsIDYsIDEsIDIxNCwgMzMsIDMsIDIyNCwgMTc3LCA1NywgOCwgNCwgMSwgMjE0LCAzMywgCisgICAgMywgMjI0LCAxNzcsIDU3LCA4LCA2LCAxLCAyMTIsIDEyMywgMywgNzMsIDU2LCA4LCA0LCAxLCAyMTIsIDEyMywgMywgNzMsIAorICAgIDU2LCA4LCA2LCAxLCAyMTIsIDEyMywgMywgNzMsIDU3LCA4LCA0LCAxLCAyMTIsIDEyMywgMywgNzMsIDU3LCA4LCA2LCAxLCAKKyAgICAyMTIsIDEyMywgMywgMjUxLCAyMzksIDI2LCA3MywgNTYsIDgsIDQsIDEsIDIxMiwgMTIzLCAzLCAyNTEsIDIzOSwgMjYsIAorICAgIDczLCA1NiwgOCwgNiwgMSwgMjEyLCAxMjMsIDMsIDI0NywgMTI2LCAyNiwgNzMsIDU2LCA4LCA0LCAxLCAyMTIsIDEyMywgMywgCisgICAgMjQ3LCAxMjYsIDI2LCA3MywgNTYsIDgsIDYsIDEsIDIxMiwgMTIzLCAzLCA3MywgMjQ4LCAyMjgsIDI2LCA3MywgNTYsIDgsIAorICAgIDQsIDEsIDIxMiwgMTIzLCAzLCA3MywgMjQ4LCAyMjgsIDI2LCA3MywgNTYsIDgsIDYsIDEsIDIwNywgODQsIDMsIDczLCA1NiwgCisgICAgOCwgNCwgMSwgMjA3LCA4NCwgMywgNzMsIDU2LCA4LCA2LCAxLCAyMDcsIDg0LCAzLCA3MywgNTcsIDgsIDQsIDEsIDIwNywgCisgICAgODQsIDMsIDczLCA1NywgOCwgNiwgMSwgMjA3LCA4NCwgMywgMjI0LCAxNzcsIDU3LCA4LCA0LCAxLCAyMDcsIDg0LCAzLCAKKyAgICAyMjQsIDE3NywgNTcsIDgsIDYsIDEsIDIwNywgODQsIDMsIDI0NiwgMTQ3LCA1NywgOCwgNCwgMSwgMjA3LCA4NCwgMywgCisgICAgMjQ2LCAxNDcsIDU3LCA4LCA2LCAxLCAxMDgsIDMsIDI0MSwgNzUsIDU3LCA4LCA0LCAxLCAxMDgsIDMsIDI0MSwgNzUsIDU3LCAKKyAgICA4LCA2LCAxLCAxMDgsIDMsIDIwNSwgMjQxLCA1NywgOCwgNCwgMSwgMTA4LCAzLCAyMDUsIDI0MSwgNTcsIDgsIDYsIDEsIAorICAgIDEwOCwgMywgMjQ2LCAxNDcsIDU3LCA4LCA0LCAxLCAxMDgsIDMsIDI0NiwgMTQ3LCA1NywgOCwgNiwgMSwgMTA4LCAzLCAKKyAgICAyMDUsIDI0MSwgMjYsIDE2OSwgOCwgNCwgMSwgMTA4LCAzLCAyMDUsIDI0MSwgMjYsIDE2OSwgOCwgNiwgMSwgMTA4LCAzLCAKKyAgICAyMjIsIDIyOSwgMjYsIDI0MSwgNzQsIDgsIDQsIDEsIDEwOCwgMywgMjIyLCAyMjksIDI2LCAyNDEsIDc0LCA4LCA2LCAxLCAKKyAgICAyMDMsIDE2OSwgMywgMjA1LCAyNDAsIDgsIDQsIDEsIDIwMywgMTY5LCAzLCAyMDUsIDI0MCwgOCwgNiwgMSwgMjAzLCAxNjksIAorICAgIDMsIDczLCA1NywgOCwgNCwgMSwgMjAzLCAxNjksIDMsIDczLCA1NywgOCwgNiwgMSwgMjAxLCAxNDgsIDMsIDIzNSwgNzMsIAorICAgIDgsIDQsIDEsIDIwMSwgMTQ4LCAzLCAyMzUsIDczLCA4LCA2LCAxLCAyMDEsIDE0OCwgMywgMTY5LCA4LCA0LCAxLCAyMDEsIAorICAgIDE0OCwgMywgMTY5LCA4LCA2LCAxLCAyMDEsIDE0OCwgMywgMjQxLCA3NCwgOCwgNCwgMSwgMjAxLCAxNDgsIDMsIDI0MSwgCisgICAgNzQsIDgsIDYsIDEsIDIwMSwgMTQ4LCAzLCA3MywgNTYsIDgsIDQsIDEsIDIwMSwgMTQ4LCAzLCA3MywgNTYsIDgsIDYsIDEsIAorICAgIDIwMSwgMTQ4LCAzLCA3MywgNTcsIDgsIDQsIDEsIDIwMSwgMTQ4LCAzLCA3MywgNTcsIDgsIDYsIDEsIDIwMCwgMTk2LCAzLCAKKyAgICA3MywgNTYsIDgsIDQsIDEsIDIwMCwgMTk2LCAzLCA3MywgNTYsIDgsIDYsIDEsIDIwMCwgMTk2LCAzLCAyNDEsIDc0LCA4LCAKKyAgICA0LCAxLCAyMDAsIDE5NiwgMywgMjQxLCA3NCwgOCwgNiwgMSwgMjAwLCAxMjQsIDMsIDczLCA1NiwgOCwgNCwgMSwgMjAwLCAKKyAgICAxMjQsIDMsIDczLCA1NiwgOCwgNiwgMSwgMTk5LCAxNTgsIDMsIDI0NiwgMTQ2LCA4LCA0LCAxLCAxOTksIDE1OCwgMywgCisgICAgMjQ2LCAxNDYsIDgsIDYsIDEsIDE5OSwgMTU4LCAzLCA3MywgNTcsIDgsIDQsIDEsIDE5OSwgMTU4LCAzLCA3MywgNTcsIDgsIAorICAgIDYsIDEsIDE5OSwgMTU4LCAzLCAyMjQsIDE3NywgNTcsIDgsIDQsIDEsIDE5OSwgMTU4LCAzLCAyMjQsIDE3NywgNTcsIDgsIAorICAgIDQsIDEsIDIzNCwgMjQ4LCAzLCAyMjQsIDE3NywgNTcsIDgsIDQsIDEsIDIwNywgODQsIDMsIDI0MSwgNzQsIDgsIDQsIDEsIAorICAgIDIwMSwgMTQ4LCAzLCAyMTMsIDI3LCA1NiwgOCwgNCwgMSwgMjAwLCAxMjQsIDMsIDIxMywgMjcsIDU2LCA4LCA0LCAxLCAzNSwgCisgICAgMywgNTEsIDE2NywgMjEzLCAyNiwgOCwgNCwgMSwgMTY4LCAyMTIsIDEyMywgMywgNzMsIDU2LCA4LCA0LCAxLCAxNjgsIAorICAgIDIxMiwgMTIzLCAzLCAyNDEsIDcxLCA5NywgOCwgNCwgMSwgMTY4LCAyMTIsIDEyMywgMywgMTIyLCA5NywgOCwgNiwgMSwgCisgICAgMjEwLCA3OSwgMjEyLCAxMjIsIDgsIDQsIDEsIDI0MSwgMTM2LCA4LCA2LCAxLCAzNSwgMywgNzMsIDU3LCA4LCA0LCAxLCAKKyAgICAzNSwgMywgNzMsIDU3LCA4LCA2LCAxLCAzNSwgMywgMjMzLCAxODcsIDU2LCA4LCA0LCAxLCAzNSwgMywgMjMzLCAxODcsIAorICAgIDU2LCA4LCA2LCAxLCAzNSwgMywgMjQ2LCAxNDcsIDI2LCAxNjksIDgsIDQsIDEsIDM1LCAzLCAyNDYsIDE0NywgMjYsIDE2OSwgCisgICAgOCwgNiwgMSwgMzUsIDMsIDI0NiwgMTQ3LCAyNiwgMjM1LCA3MywgOCwgNCwgMSwgMzUsIDMsIDI0NiwgMTQ3LCAyNiwgMjM1LCAKKyAgICA3MywgOCwgNiwgMSwgMzUsIDMsIDI0NiwgMTQ3LCAyNiwgMjMzLCAxODcsIDU2LCA4LCA0LCAxLCAzNSwgMywgMjQ2LCAxNDcsIAorICAgIDI2LCAyMzMsIDE4NywgNTYsIDgsIDYsIDEsIDM1LCAzLCAyNDYsIDE0NywgMjYsIDIwNSwgMjQwLCA4LCA0LCAxLCAzNSwgMywgCisgICAgMjQ2LCAxNDcsIDI2LCAyMDUsIDI0MCwgOCwgNiwgMSwgMzUsIDMsIDI0NiwgMTQ3LCAyNiwgNzMsIDU3LCA4LCA0LCAxLCAKKyAgICAzNSwgMywgMjQ2LCAxNDcsIDI2LCA3MywgNTcsIDgsIDYsIDEsIDM1LCAzLCAyNDgsIDU4LCAyNiwgMTY5LCA4LCA0LCAxLCAKKyAgICAzNSwgMywgMjQ4LCA1OCwgMjYsIDE2OSwgOCwgNiwgMSwgMzUsIDMsIDI0OCwgNTgsIDI2LCAyMzUsIDczLCA4LCA0LCAxLCAKKyAgICAzNSwgMywgMjQ4LCA1OCwgMjYsIDIzNSwgNzMsIDgsIDYsIDEsIDM1LCAzLCAyNDgsIDU4LCAyNiwgMjMzLCAxODcsIDU2LCAKKyAgICA4LCA0LCAxLCAzNSwgMywgMjQ4LCA1OCwgMjYsIDIzMywgMTg3LCA1NiwgOCwgNiwgMSwgMzUsIDMsIDI0OCwgNTgsIDI2LCAKKyAgICAyMDUsIDI0MCwgOCwgNCwgMSwgMzUsIDMsIDI0OCwgNTgsIDI2LCAyMDUsIDI0MCwgOCwgNiwgMSwgMzUsIDMsIDI0OCwgNTgsIAorICAgIDI2LCA3MywgNTcsIDgsIDQsIDEsIDM1LCAzLCAyNDgsIDU4LCAyNiwgNzMsIDU3LCA4LCA2LCAxLCAxOTcsIDMsIDczLCA1NywgCisgICAgOCwgNCwgMSwgMTk3LCAzLCA3MywgNTcsIDgsIDYsIDEsIDE5NywgMywgMjMzLCAxODcsIDU2LCA4LCA0LCAxLCAxOTcsIDMsIAorICAgIDIzMywgMTg3LCA1NiwgOCwgNiwgMSwgMTk3LCAzLCAyMDUsIDI0MCwgOCwgNCwgMSwgMTk3LCAzLCAyMDUsIDI0MCwgOCwgNiwgCisgICAgMSwgMTk3LCAzLCAyNDYsIDE0NywgMjYsIDE2OSwgOCwgNCwgMSwgMTk3LCAzLCAyNDYsIDE0NywgMjYsIDE2OSwgOCwgNiwgCisgICAgMSwgMTk3LCAzLCAyNDYsIDE0NywgMjYsIDIzNSwgNzMsIDgsIDQsIDEsIDE5NywgMywgMjQ2LCAxNDcsIDI2LCAyMzUsIDczLCAKKyAgICA4LCA2LCAxLCAxOTcsIDMsIDI0NiwgMTQ3LCAyNiwgMjMzLCAxODcsIDU2LCA4LCA0LCAxLCAxOTcsIDMsIDI0NiwgMTQ3LCAKKyAgICAyNiwgMjMzLCAxODcsIDU2LCA4LCA2LCAxLCAxOTcsIDMsIDI0NiwgMTQ3LCAyNiwgMjA1LCAyNDAsIDgsIDQsIDEsIDE5NywgCisgICAgMywgMjQ2LCAxNDcsIDI2LCAyMDUsIDI0MCwgOCwgNiwgMSwgMTk3LCAzLCAyNDYsIDE0NywgMjYsIDczLCA1NywgOCwgNCwgCisgICAgMSwgMTk3LCAzLCAyNDYsIDE0NywgMjYsIDczLCA1NywgOCwgNiwgMSwgMjMzLCAxOSwgMywgMjMzLCAxODcsIDU2LCA4LCA0LCAKKyAgICAxLCAyMzMsIDE5LCAzLCAyMzMsIDE4NywgNTYsIDgsIDYsIDEsIDIzMywgMTksIDMsIDczLCA1NywgOCwgNCwgMSwgMjMzLCAKKyAgICAxOSwgMywgNzMsIDU3LCA4LCA2LCAxLCAxNjMsIDMsIDczLCA1NywgOCwgNCwgMSwgMTYzLCAzLCA3MywgNTcsIDgsIDYsIDEsIAorICAgIDE2MywgMywgMjMzLCAxODcsIDU2LCA4LCA0LCAxLCAxNjMsIDMsIDIzMywgMTg3LCA1NiwgOCwgNiwgMSwgMTYzLCAzLCAKKyAgICAyNDYsIDE0NywgMjYsIDE2OSwgOCwgNCwgMSwgMTYzLCAzLCAyNDYsIDE0NywgMjYsIDE2OSwgOCwgNiwgMSwgMTYzLCAzLCAKKyAgICAyNDYsIDE0NywgMjYsIDIzNSwgNzMsIDgsIDQsIDEsIDE2MywgMywgMjQ2LCAxNDcsIDI2LCAyMzUsIDczLCA4LCA2LCAxLCAKKyAgICAxNjMsIDMsIDI0NiwgMTQ3LCAyNiwgMjMzLCAxODcsIDU2LCA4LCA0LCAxLCAxNjMsIDMsIDI0NiwgMTQ3LCAyNiwgMjMzLCAKKyAgICAxODcsIDU2LCA4LCA2LCAxLCAxNjMsIDMsIDI0NiwgMTQ3LCAyNiwgMjA1LCAyNDAsIDgsIDQsIDEsIDE2MywgMywgMjQ2LCAKKyAgICAxNDcsIDI2LCAyMDUsIDI0MCwgOCwgNiwgMSwgMTYzLCAzLCAyNDYsIDE0NywgMjYsIDczLCA1NywgOCwgNCwgMSwgMTYzLCAKKyAgICAzLCAyNDYsIDE0NywgMjYsIDczLCA1NywgOCwgNiwgMSwgMTYzLCAzLCAyMzMsIDEyNSwgMjYsIDE2OSwgOCwgNCwgMSwgCisgICAgMTYzLCAzLCAyMzMsIDEyNSwgMjYsIDE2OSwgOCwgNiwgMSwgMTYzLCAzLCAyMzMsIDEyNSwgMjYsIDIzNSwgNzMsIDgsIDQsIAorICAgIDEsIDE2MywgMywgMjMzLCAxMjUsIDI2LCAyMzUsIDczLCA4LCA2LCAxLCAxNjMsIDMsIDIzMywgMTI1LCAyNiwgMjMzLCAKKyAgICAxODcsIDU2LCA4LCA0LCAxLCAxNjMsIDMsIDIzMywgMTI1LCAyNiwgMjMzLCAxODcsIDU2LCA4LCA2LCAxLCAxNjMsIDMsIAorICAgIDIzMywgMTI1LCAyNiwgMjA1LCAyNDAsIDgsIDQsIDEsIDE2MywgMywgMjMzLCAxMjUsIDI2LCAyMDUsIDI0MCwgOCwgNiwgMSwgCisgICAgMTYzLCAzLCAyMzMsIDEyNSwgMjYsIDczLCA1NywgOCwgNCwgMSwgMTYzLCAzLCAyMzMsIDEyNSwgMjYsIDczLCA1NywgOCwgCisgICAgNiwgMSwgMTA4LCAzLCA3MywgNTcsIDgsIDQsIDEsIDEwOCwgMywgNzMsIDU3LCA4LCA2LCAxLCAxMDgsIDMsIDIzMywgMTg3LCAKKyAgICA1NiwgOCwgNCwgMSwgMTA4LCAzLCAyMzMsIDE4NywgNTYsIDgsIDYsIDEsIDEwOCwgMywgMjMzLCAxMjUsIDI2LCAxNjksIDgsIAorICAgIDQsIDEsIDEwOCwgMywgMjMzLCAxMjUsIDI2LCAxNjksIDgsIDYsIDEsIDEwOCwgMywgMjMzLCAxMjUsIDI2LCAyMzUsIDczLCAKKyAgICA4LCA0LCAxLCAxMDgsIDMsIDIzMywgMTI1LCAyNiwgMjM1LCA3MywgOCwgNiwgMSwgMTA4LCAzLCAyMzMsIDEyNSwgMjYsIAorICAgIDIzMywgMTg3LCA1NiwgOCwgNCwgMSwgMTA4LCAzLCAyMzMsIDEyNSwgMjYsIDIzMywgMTg3LCA1NiwgOCwgNiwgMSwgMTA4LCAKKyAgICAzLCAyMzMsIDEyNSwgMjYsIDIwNSwgMjQwLCA4LCA0LCAxLCAxMDgsIDMsIDIzMywgMTI1LCAyNiwgMjA1LCAyNDAsIDgsIDYsIAorICAgIDEsIDEwOCwgMywgMjMzLCAxMjUsIDI2LCA3MywgNTcsIDgsIDQsIDEsIDEwOCwgMywgMjMzLCAxMjUsIDI2LCA3MywgNTcsIAorICAgIDgsIDYsIDEsIDIwMCwgMTI0LCAzLCAyMzUsIDczLCA4LCA0LCAxLCAyMDAsIDEyNCwgMywgMjM1LCA3MywgOCwgNiwgMSwgCisgICAgMjAwLCAxMjQsIDMsIDczLCA1NywgOCwgNCwgMSwgMjAwLCAxMjQsIDMsIDczLCA1NywgOCwgNiwgMSwgMjAwLCAxMjQsIDMsIAorICAgIDIzMywgMTg3LCA1NiwgOCwgNCwgMSwgMjAwLCAxMjQsIDMsIDIzMywgMTg3LCA1NiwgOCwgNiwgMSwgMjAwLCAxMjQsIDMsIAorICAgIDIwNSwgMjQwLCA4LCA0LCAxLCAyMDAsIDEyNCwgMywgMjA1LCAyNDAsIDgsIDYsIDEsIDIyMSwgMjAzLCAyMjQsIDEzOSwgOCwgCisgICAgNCwgMSwgMjIxLCAyMDMsIDIyNCwgMTM5LCA4LCA2LCAxLCAyMjEsIDIwMywgMjAzLCAxNjgsIDgsIDQsIDEsIDIyMSwgMjAzLCAKKyAgICAyMDMsIDE2OCwgOCwgNiwgMSwgMjAwLCAxMjQsIDMsIDIyNCwgNzQsIDgsIDQsIDEsIDIwMCwgMTI0LCAzLCAyMjQsIDc0LCAKKyAgICAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDIxNCwgMjI4LCAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDI0MSwgMjQxLCAzMSwgNCwgCisgICAgMSwgMjUxLCAxMTMsIDMsIDIxNCwgMjI5LCAyNiwgMjAzLCA3NCwgMzEsIDQsIDEsIDI1MSwgMTEzLCAzLCAyNDEsIDI0MiwgCisgICAgMjYsIDIwMywgNzQsIDMxLCA0LCAxLCAyNTEsIDExMywgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIzMSwgMzEsIDQsIDEsIAorICAgIDI1MSwgMTEzLCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjMxLCAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDIxNCwgMjI5LCAyNiwgCisgICAgMjE2LCAyMCwgMzEsIDQsIDEsIDI1MSwgMTEzLCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjAsIDMxLCA2LCAxLCAyNTEsIAorICAgIDExMywgMywgMjE0LCAyMjgsIDMxLCA2LCAxLCAyNTEsIDExMywgMywgMjQxLCAyNDEsIDMxLCA2LCAxLCAyNTEsIDExMywgMywgCisgICAgMjE0LCAyMjksIDI2LCAyMDMsIDc0LCAzMSwgNiwgMSwgMjUxLCAxMTMsIDMsIDI0MSwgMjQyLCAyNiwgMjAzLCA3NCwgMzEsIAorICAgIDYsIDEsIDI1MSwgMTEzLCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjMxLCAzMSwgNiwgMSwgMjUxLCAxMTMsIDMsIDI0MSwgCisgICAgMjQyLCAyNiwgMjE2LCAyMzEsIDMxLCA2LCAxLCAyNTEsIDExMywgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIwLCAzMSwgNiwgCisgICAgMSwgMjUxLCAxMTMsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMCwgMzEsIDQsIDEsIDIzOCwgMTI1LCAzLCAyMTQsIDIyOCwgCisgICAgMzEsIDQsIDEsIDIzOCwgMTI1LCAzLCAyNDEsIDI0MSwgMzEsIDQsIDEsIDIzOCwgMTI1LCAzLCAyMTQsIDIyOSwgMjYsIAorICAgIDIwMywgNzQsIDMxLCA0LCAxLCAyMzgsIDEyNSwgMywgMjQxLCAyNDIsIDI2LCAyMDMsIDc0LCAzMSwgNCwgMSwgMjM4LCAKKyAgICAxMjUsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMzEsIDMxLCA0LCAxLCAyMzgsIDEyNSwgMywgMjQxLCAyNDIsIDI2LCAyMTYsIAorICAgIDIzMSwgMzEsIDYsIDEsIDIzOCwgMTI1LCAzLCAyMTQsIDIyOCwgMzEsIDYsIDEsIDIzOCwgMTI1LCAzLCAyNDEsIDI0MSwgCisgICAgMzEsIDYsIDEsIDIzOCwgMTI1LCAzLCAyMTQsIDIyOSwgMjYsIDIwMywgNzQsIDMxLCA2LCAxLCAyMzgsIDEyNSwgMywgMjQxLCAKKyAgICAyNDIsIDI2LCAyMDMsIDc0LCAzMSwgNiwgMSwgMjM4LCAxMjUsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMzEsIDMxLCA2LCAKKyAgICAxLCAyMzgsIDEyNSwgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIzMSwgMzEsIDQsIDEsIDIzOCwgODAsIDMsIDIxNCwgMjI4LCAKKyAgICAzMSwgNCwgMSwgMjM4LCA4MCwgMywgMjQxLCAyNDEsIDMxLCA0LCAxLCAyMzgsIDgwLCAzLCAyMTQsIDIyOSwgMjYsIDIwMywgCisgICAgNzQsIDMxLCA0LCAxLCAyMzgsIDgwLCAzLCAyNDEsIDI0MiwgMjYsIDIwMywgNzQsIDMxLCA0LCAxLCAyMzgsIDgwLCAzLCAKKyAgICAyMTQsIDIyOSwgMjYsIDIxNiwgMjMxLCAzMSwgNCwgMSwgMjM4LCA4MCwgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIzMSwgMzEsIAorICAgIDQsIDEsIDIzOCwgODAsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMCwgMzEsIDQsIDEsIDIzOCwgODAsIDMsIDI0MSwgMjQyLCAKKyAgICAyNiwgMjE2LCAyMCwgMzEsIDYsIDEsIDIzOCwgODAsIDMsIDIxNCwgMjI4LCAzMSwgNiwgMSwgMjM4LCA4MCwgMywgMjQxLCAKKyAgICAyNDEsIDMxLCA2LCAxLCAyMzgsIDgwLCAzLCAyMTQsIDIyOSwgMjYsIDIwMywgNzQsIDMxLCA2LCAxLCAyMzgsIDgwLCAzLCAKKyAgICAyNDEsIDI0MiwgMjYsIDIwMywgNzQsIDMxLCA2LCAxLCAyMzgsIDgwLCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjMxLCAzMSwgCisgICAgNiwgMSwgMjM4LCA4MCwgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIzMSwgMzEsIDYsIDEsIDIzOCwgODAsIDMsIDIxNCwgMjI5LCAKKyAgICAyNiwgMjE2LCAyMCwgMzEsIDYsIDEsIDIzOCwgODAsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMCwgMzEsIDQsIDEsIDIyOCwgCisgICAgNDIsIDMsIDIxNCwgMjI4LCAzMSwgNCwgMSwgMjI4LCA0MiwgMywgMjQxLCAyNDEsIDMxLCA0LCAxLCAyMjgsIDQyLCAzLCAKKyAgICAyMTQsIDIyOSwgMjYsIDIwMywgNzQsIDMxLCA0LCAxLCAyMjgsIDQyLCAzLCAyNDEsIDI0MiwgMjYsIDIwMywgNzQsIDMxLCAKKyAgICA0LCAxLCAyMjgsIDQyLCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjMxLCAzMSwgNCwgMSwgMjI4LCA0MiwgMywgMjQxLCAyNDIsIAorICAgIDI2LCAyMTYsIDIzMSwgMzEsIDQsIDEsIDIyOCwgNDIsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMCwgMzEsIDQsIDEsIDIyOCwgCisgICAgNDIsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMCwgMzEsIDYsIDEsIDIyOCwgNDIsIDMsIDIxNCwgMjI4LCAzMSwgNiwgMSwgCisgICAgMjI4LCA0MiwgMywgMjQxLCAyNDEsIDMxLCA2LCAxLCAyMjgsIDQyLCAzLCAyMTQsIDIyOSwgMjYsIDIwMywgNzQsIDMxLCA2LCAKKyAgICAxLCAyMjgsIDQyLCAzLCAyNDEsIDI0MiwgMjYsIDIwMywgNzQsIDMxLCA2LCAxLCAyMjgsIDQyLCAzLCAyMTQsIDIyOSwgMjYsIAorICAgIDIxNiwgMjMxLCAzMSwgNiwgMSwgMjI4LCA0MiwgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIzMSwgMzEsIDYsIDEsIDIyOCwgCisgICAgNDIsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMCwgMzEsIDYsIDEsIDIyOCwgNDIsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAKKyAgICAyMCwgMzEsIDQsIDEsIDIxNywgODIsIDMsIDIxNCwgMjI4LCAzMSwgNCwgMSwgMjE3LCA4MiwgMywgMjQxLCAyNDEsIDMxLCAKKyAgICA0LCAxLCAyMTcsIDgyLCAzLCAyMTQsIDIyOSwgMjYsIDIwMywgNzQsIDMxLCA0LCAxLCAyMTcsIDgyLCAzLCAyNDEsIDI0MiwgCisgICAgMjYsIDIwMywgNzQsIDMxLCA0LCAxLCAyMTcsIDgyLCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjMxLCAzMSwgNCwgMSwgMjE3LCAKKyAgICA4MiwgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIzMSwgMzEsIDYsIDEsIDIxNywgODIsIDMsIDIxNCwgMjI4LCAzMSwgNiwgMSwgCisgICAgMjE3LCA4MiwgMywgMjQxLCAyNDEsIDMxLCA2LCAxLCAyMTcsIDgyLCAzLCAyMTQsIDIyOSwgMjYsIDIwMywgNzQsIDMxLCA2LCAKKyAgICAxLCAyMTcsIDgyLCAzLCAyNDEsIDI0MiwgMjYsIDIwMywgNzQsIDMxLCA2LCAxLCAyMTcsIDgyLCAzLCAyMTQsIDIyOSwgMjYsIAorICAgIDIxNiwgMjMxLCAzMSwgNiwgMSwgMjE3LCA4MiwgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIzMSwgMzEsIDQsIDEsIDIwMywgCisgICAgMjIxLCAzLCAyMTQsIDIyOCwgMzEsIDQsIDEsIDIwMywgMjIxLCAzLCAyNDEsIDI0MSwgMzEsIDQsIDEsIDIwMywgMjIxLCAzLCAKKyAgICAyMTQsIDIyOSwgMjYsIDIwMywgNzQsIDMxLCA0LCAxLCAyMDMsIDIyMSwgMywgMjQxLCAyNDIsIDI2LCAyMDMsIDc0LCAzMSwgCisgICAgNCwgMSwgMjAzLCAyMjEsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMzEsIDMxLCA0LCAxLCAyMDMsIDIyMSwgMywgMjQxLCAKKyAgICAyNDIsIDI2LCAyMTYsIDIzMSwgMzEsIDQsIDEsIDIwMywgMjIxLCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjAsIDMxLCA0LCAKKyAgICAxLCAyMDMsIDIyMSwgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIwLCAzMSwgNiwgMSwgMjAzLCAyMjEsIDMsIDI0MSwgMjQxLCAKKyAgICAzMSwgNiwgMSwgMjAzLCAyMjEsIDMsIDI0MSwgMjQyLCAyNiwgMjAzLCA3NCwgMzEsIDYsIDEsIDIwMywgMjIxLCAzLCAyNDEsIAorICAgIDI0MiwgMjYsIDIxNiwgMjMxLCAzMSwgNiwgMSwgMjAzLCAyMjEsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMCwgMzEsIDQsIAorICAgIDEsIDIxNywgODQsIDMsIDIxNCwgMjI4LCAzMSwgNCwgMSwgMjE3LCA4NCwgMywgMjQxLCAyNDEsIDMxLCA0LCAxLCAyMTcsIAorICAgIDg0LCAzLCAyMTQsIDIyOSwgMjYsIDIwMywgNzQsIDMxLCA0LCAxLCAyMTcsIDg0LCAzLCAyNDEsIDI0MiwgMjYsIDIwMywgCisgICAgNzQsIDMxLCA0LCAxLCAyMTcsIDg0LCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjMxLCAzMSwgNCwgMSwgMjE3LCA4NCwgMywgCisgICAgMjQxLCAyNDIsIDI2LCAyMTYsIDIzMSwgMzEsIDQsIDEsIDIxNywgODQsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMCwgMzEsIAorICAgIDQsIDEsIDIxNywgODQsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMCwgMzEsIDYsIDEsIDIxNywgODQsIDMsIDIxNCwgMjI4LCAKKyAgICAzMSwgNiwgMSwgMjE3LCA4NCwgMywgMjQxLCAyNDEsIDMxLCA2LCAxLCAyMTcsIDg0LCAzLCAyMTQsIDIyOSwgMjYsIDIwMywgCisgICAgNzQsIDMxLCA2LCAxLCAyMTcsIDg0LCAzLCAyNDEsIDI0MiwgMjYsIDIwMywgNzQsIDMxLCA2LCAxLCAyMTcsIDg0LCAzLCAKKyAgICAyMTQsIDIyOSwgMjYsIDIxNiwgMjMxLCAzMSwgNiwgMSwgMjE3LCA4NCwgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIzMSwgMzEsIAorICAgIDYsIDEsIDIxNywgODQsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMCwgMzEsIDYsIDEsIDIxNywgODQsIDMsIDI0MSwgMjQyLCAKKyAgICAyNiwgMjE2LCAyMCwgMzEsIDQsIDEsIDI1MSwgMTEzLCAzLCAyMDMsIDc0LCAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDIxNiwgCisgICAgMjMxLCAzMSwgNCwgMSwgMjM4LCAxMjUsIDMsIDIwMywgNzQsIDMxLCA0LCAxLCAyMzgsIDEyNSwgMywgMjE2LCAyMzEsIDMxLCAKKyAgICA0LCAxLCAyMzgsIDgwLCAzLCAyMDMsIDc0LCAzMSwgNCwgMSwgMjM4LCA4MCwgMywgMjE2LCAyMzEsIDMxLCA0LCAxLCAyMjgsIAorICAgIDQyLCAzLCAyMDMsIDc0LCAzMSwgNCwgMSwgMjI4LCA0MiwgMywgMjE2LCAyMzEsIDMxLCA0LCAxLCAyMTcsIDgyLCAzLCAKKyAgICAyMDMsIDc0LCAzMSwgNCwgMSwgMjE3LCA4MiwgMywgMjE2LCAyMzEsIDMxLCA0LCAxLCAyMDMsIDIyMSwgMywgMjAzLCA3NCwgCisgICAgMzEsIDQsIDEsIDIwMywgMjIxLCAzLCAyMTYsIDIzMSwgMzEsIDQsIDEsIDIxNywgODQsIDMsIDIwMywgNzQsIDMxLCA0LCAxLCAKKyAgICAyMTcsIDg0LCAzLCAyMTYsIDIzMSwgMzEsIDQsIDEsIDI1MSwgMTEzLCAzLCAyMTQsIDIyOSwgMjYsIDE5OSwgMjE5LCAzMSwgCisgICAgNCwgMSwgMjUxLCAxMTMsIDMsIDI0MSwgMjQyLCAyNiwgMTk5LCAyMTksIDMxLCA0LCAxLCAyNTEsIDExMywgMywgMjE0LCAKKyAgICAyMjksIDI2LCAyMDMsIDc1LCAyNiwgMTk5LCAyMTksIDMxLCA0LCAxLCAyNTEsIDExMywgMywgMjQxLCAyNDIsIDI2LCAyMDMsIAorICAgIDc1LCAyNiwgMTk5LCAyMTksIDMxLCA0LCAxLCAyNTEsIDExMywgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIzMiwgMjYsIDE5OSwgCisgICAgMjE5LCAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMzIsIDI2LCAxOTksIDIxOSwgMzEsIDQsIAorICAgIDEsIDI1MSwgMTEzLCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjEsIDI2LCAxOTksIDIxOSwgMzEsIDQsIDEsIDI1MSwgMTEzLCAKKyAgICAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjEsIDI2LCAxOTksIDIxOSwgMzEsIDYsIDEsIDI1MSwgMTEzLCAzLCAyMTQsIDIyOSwgCisgICAgMjYsIDIxNCwgMjQyLCAzMSwgNiwgMSwgMjUxLCAxMTMsIDMsIDI0MSwgMjQyLCAyNiwgMjE0LCAyNDIsIDMxLCA2LCAxLCAKKyAgICAyNTEsIDExMywgMywgMjE0LCAyMjksIDI2LCAyMDMsIDc1LCAyNiwgMjE0LCAyNDIsIDMxLCA2LCAxLCAyNTEsIDExMywgMywgCisgICAgMjQxLCAyNDIsIDI2LCAyMDMsIDc1LCAyNiwgMjE0LCAyNDIsIDMxLCA2LCAxLCAyNTEsIDExMywgMywgMjE0LCAyMjksIDI2LCAKKyAgICAyMTYsIDIzMiwgMjYsIDIxNCwgMjQyLCAzMSwgNiwgMSwgMjUxLCAxMTMsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMzIsIAorICAgIDI2LCAyMTQsIDI0MiwgMzEsIDYsIDEsIDI1MSwgMTEzLCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjEsIDI2LCAyMTQsIDI0MiwgCisgICAgMzEsIDYsIDEsIDI1MSwgMTEzLCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjEsIDI2LCAyMTQsIDI0MiwgMzEsIDQsIDEsIAorICAgIDIzOCwgODAsIDMsIDIxNCwgMjI5LCAyNiwgMTk5LCAyMTksIDMxLCA0LCAxLCAyMzgsIDgwLCAzLCAyNDEsIDI0MiwgMjYsIAorICAgIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjM4LCA4MCwgMywgMjE0LCAyMjksIDI2LCAyMDMsIDc1LCAyNiwgMTk5LCAyMTksIDMxLCAKKyAgICA0LCAxLCAyMzgsIDgwLCAzLCAyNDEsIDI0MiwgMjYsIDIwMywgNzUsIDI2LCAxOTksIDIxOSwgMzEsIDQsIDEsIDIzOCwgODAsIAorICAgIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMzIsIDI2LCAxOTksIDIxOSwgMzEsIDQsIDEsIDIzOCwgODAsIDMsIDI0MSwgMjQyLCAKKyAgICAyNiwgMjE2LCAyMzIsIDI2LCAxOTksIDIxOSwgMzEsIDQsIDEsIDIzOCwgODAsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMSwgCisgICAgMjYsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjM4LCA4MCwgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIxLCAyNiwgMTk5LCAyMTksIAorICAgIDMxLCA2LCAxLCAyMzgsIDgwLCAzLCAyMTQsIDIyOSwgMjYsIDIxNCwgMjQyLCAzMSwgNiwgMSwgMjM4LCA4MCwgMywgMjQxLCAKKyAgICAyNDIsIDI2LCAyMTQsIDI0MiwgMzEsIDYsIDEsIDIzOCwgODAsIDMsIDIxNCwgMjI5LCAyNiwgMjAzLCA3NSwgMjYsIDIxNCwgCisgICAgMjQyLCAzMSwgNiwgMSwgMjM4LCA4MCwgMywgMjQxLCAyNDIsIDI2LCAyMDMsIDc1LCAyNiwgMjE0LCAyNDIsIDMxLCA2LCAxLCAKKyAgICAyMzgsIDgwLCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjMyLCAyNiwgMjE0LCAyNDIsIDMxLCA2LCAxLCAyMzgsIDgwLCAzLCAKKyAgICAyNDEsIDI0MiwgMjYsIDIxNiwgMjMyLCAyNiwgMjE0LCAyNDIsIDMxLCA2LCAxLCAyMzgsIDgwLCAzLCAyMTQsIDIyOSwgMjYsIAorICAgIDIxNiwgMjEsIDI2LCAyMTQsIDI0MiwgMzEsIDYsIDEsIDIzOCwgODAsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMSwgMjYsIAorICAgIDIxNCwgMjQyLCAzMSwgNCwgMSwgMjE3LCA4NCwgMywgMjE0LCAyMjksIDI2LCAxOTksIDIxOSwgMzEsIDQsIDEsIDIxNywgCisgICAgODQsIDMsIDI0MSwgMjQyLCAyNiwgMTk5LCAyMTksIDMxLCA0LCAxLCAyMTcsIDg0LCAzLCAyMTQsIDIyOSwgMjYsIDIwMywgCisgICAgNzUsIDI2LCAxOTksIDIxOSwgMzEsIDQsIDEsIDIxNywgODQsIDMsIDI0MSwgMjQyLCAyNiwgMjAzLCA3NSwgMjYsIDE5OSwgCisgICAgMjE5LCAzMSwgNCwgMSwgMjE3LCA4NCwgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIzMiwgMjYsIDE5OSwgMjE5LCAzMSwgNCwgCisgICAgMSwgMjE3LCA4NCwgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIzMiwgMjYsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjE3LCA4NCwgCisgICAgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIxLCAyNiwgMTk5LCAyMTksIDMxLCA0LCAxLCAyMTcsIDg0LCAzLCAyNDEsIDI0MiwgCisgICAgMjYsIDIxNiwgMjEsIDI2LCAxOTksIDIxOSwgMzEsIDYsIDEsIDIxNywgODQsIDMsIDIxNCwgMjI5LCAyNiwgMjE0LCAyNDIsIAorICAgIDMxLCA2LCAxLCAyMTcsIDg0LCAzLCAyNDEsIDI0MiwgMjYsIDIxNCwgMjQyLCAzMSwgNiwgMSwgMjE3LCA4NCwgMywgMjE0LCAKKyAgICAyMjksIDI2LCAyMDMsIDc1LCAyNiwgMjE0LCAyNDIsIDMxLCA2LCAxLCAyMTcsIDg0LCAzLCAyNDEsIDI0MiwgMjYsIDIwMywgCisgICAgNzUsIDI2LCAyMTQsIDI0MiwgMzEsIDYsIDEsIDIxNywgODQsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMzIsIDI2LCAyMTQsIAorICAgIDI0MiwgMzEsIDYsIDEsIDIxNywgODQsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMzIsIDI2LCAyMTQsIDI0MiwgMzEsIDYsIAorICAgIDEsIDIxNywgODQsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMSwgMjYsIDIxNCwgMjQyLCAzMSwgNiwgMSwgMjE3LCA4NCwgMywgCisgICAgMjQxLCAyNDIsIDI2LCAyMTYsIDIxLCAyNiwgMjE0LCAyNDIsIDMxLCA0LCAxLCAyNTEsIDExMywgMywgMjAyLCAxNzAsIDMxLCAKKyAgICA0LCAxLCAyNTEsIDExMywgMywgMjIyLCAyMjgsIDMxLCA0LCAxLCAyNTEsIDExMywgMywgMjAzLCA3NSwgMjYsIDE5OSwgCisgICAgMjE5LCAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDIxNiwgMjMyLCAKKyAgICAyNiwgMTk5LCAyMTksIDMxLCA0LCAxLCAyNTEsIDExMywgMywgMjE2LCAyMCwgMzEsIDQsIDEsIDI1MSwgMTEzLCAzLCAyMTYsIAorICAgIDIxLCAyNiwgMTk5LCAyMTksIDMxLCA2LCAxLCAyNTEsIDExMywgMywgMjAyLCAxNzAsIDMxLCA2LCAxLCAyNTEsIDExMywgMywgCisgICAgMjIyLCAyMjgsIDMxLCA2LCAxLCAyNTEsIDExMywgMywgMjAzLCA3NCwgMzEsIDYsIDEsIDI1MSwgMTEzLCAzLCAyMTYsIAorICAgIDIzMSwgMzEsIDYsIDEsIDI1MSwgMTEzLCAzLCAyMTQsIDI0MiwgMzEsIDIyNiwgNTgsIDMxLCAyMTQsIDI0MiwgMzEsIDIxNCwgCisgICAgMjI4LCAzMSwgMjE2LCAyMCwgMzEsIDI0MSwgNjgsIDI2LCAyMTYsIDIwLCAzMSwgNCwgMSwgMjM4LCA4MCwgMywgMjAzLCAKKyAgICA3NSwgMjYsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjM4LCA4MCwgMywgMTk5LCAyMTksIDMxLCA0LCAxLCAyMzgsIDgwLCAzLCAKKyAgICAyMTYsIDIzMiwgMjYsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjM4LCA4MCwgMywgMjE2LCAyMCwgMzEsIDQsIDEsIDIzOCwgODAsIAorICAgIDMsIDIxNiwgMjEsIDI2LCAxOTksIDIxOSwgMzEsIDYsIDEsIDIzOCwgMTI1LCAzLCAyMDMsIDc0LCAzMSwgNiwgMSwgMjM4LCAKKyAgICAxMjUsIDMsIDIxNiwgMjMxLCAzMSwgNiwgMSwgMjM4LCA4MCwgMywgMjAzLCA3NCwgMzEsIDYsIDEsIDIzOCwgODAsIDMsIAorICAgIDIxNiwgMjMxLCAzMSwgNiwgMSwgMjM4LCA4MCwgMywgMjE0LCAyNDIsIDMxLCAyMTQsIDIyOSwgMjYsIDIwMywgNzQsIDMxLCAKKyAgICAyMTQsIDIyOSwgMjYsIDIxNiwgMjMxLCAzMSwgMjE0LCAyMjksIDI2LCAyMTYsIDIwLCAzMSwgNCwgMSwgMjI4LCA0MiwgMywgCisgICAgMjAyLCAxNzAsIDMxLCA0LCAxLCAyMjgsIDQyLCAzLCAyMjIsIDIyOCwgMzEsIDQsIDEsIDIyOCwgNDIsIDMsIDI0MSwgNjgsIAorICAgIDI2LCAyMDMsIDc0LCAzMSwgNCwgMSwgMjI4LCA0MiwgMywgMjQxLCA2OCwgMjYsIDIxNiwgMjMxLCAzMSwgNCwgMSwgMjI4LCAKKyAgICA0MiwgMywgMjE2LCAyMCwgMzEsIDQsIDEsIDIyOCwgNDIsIDMsIDI0MSwgNjgsIDI2LCAyMTYsIDIwLCAzMSwgNiwgMSwgCisgICAgMjI4LCA0MiwgMywgMjAyLCAxNzAsIDMxLCA2LCAxLCAyMjgsIDQyLCAzLCAyMjIsIDIyOCwgMzEsIDYsIDEsIDIyOCwgNDIsIAorICAgIDMsIDIwMywgNzQsIDMxLCA2LCAxLCAyMjgsIDQyLCAzLCAyMTYsIDIzMSwgMzEsIDI0MSwgMjQyLCAyNiwgMjAzLCA3NCwgCisgICAgMzEsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMzEsIDMxLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjAsIDMxLCA0LCAxLCAyMDMsIAorICAgIDIyMSwgMywgMjAyLCAxNzAsIDMxLCA0LCAxLCAyMDMsIDIyMSwgMywgMjIyLCAyMjgsIDMxLCA0LCAxLCAyMDMsIDIyMSwgMywgCisgICAgMjQxLCA2OCwgMjYsIDIwMywgNzQsIDMxLCA0LCAxLCAyMDMsIDIyMSwgMywgMjQxLCA2OCwgMjYsIDIxNiwgMjMxLCAzMSwgCisgICAgNCwgMSwgMjEzLCA5MSwgMywgMjE0LCAyMjgsIDMxLCA0LCAxLCAyMTMsIDkxLCAzLCAyNDEsIDI0MSwgMzEsIDQsIDEsIAorICAgIDIwMywgMjIxLCAzLCAyMTYsIDIwLCAzMSwgNCwgMSwgMjAzLCAyMjEsIDMsIDI0MSwgNjgsIDI2LCAyMTYsIDIwLCAzMSwgNiwgCisgICAgMSwgMjAzLCAyMjEsIDMsIDIwMiwgMTcwLCAzMSwgNiwgMSwgMjAzLCAyMjEsIDMsIDIyMiwgMjI4LCAzMSwgNiwgMSwgMjAzLCAKKyAgICAyMjEsIDMsIDIwMywgNzQsIDMxLCA2LCAxLCAyMDMsIDIyMSwgMywgMjE2LCAyMzEsIDMxLCA2LCAxLCAyMTMsIDkxLCAzLCAKKyAgICAyNDEsIDI0MSwgMzEsIDI0MSwgNjgsIDI2LCAyMDMsIDc0LCAzMSwgMjQxLCA2OCwgMjYsIDIxNiwgMjMxLCAzMSwgMjAzLCAKKyAgICA3NCwgMzEsIDQsIDEsIDIxNywgODQsIDMsIDIwMywgNzUsIDI2LCAxOTksIDIxOSwgMzEsIDQsIDEsIDIxNywgODQsIDMsIAorICAgIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjE3LCA4NCwgMywgMjE2LCAyMzIsIDI2LCAxOTksIDIxOSwgMzEsIDQsIDEsIDIxNywgCisgICAgODQsIDMsIDIxNiwgMjAsIDMxLCA0LCAxLCAyMTcsIDg0LCAzLCAyMTYsIDIxLCAyNiwgMTk5LCAyMTksIDMxLCA2LCAxLCAKKyAgICAyMTcsIDgyLCAzLCAyMDMsIDc0LCAzMSwgNiwgMSwgMjE3LCA4MiwgMywgMjE2LCAyMzEsIDMxLCA2LCAxLCAyMTcsIDg0LCAKKyAgICAzLCAyMDMsIDc0LCAzMSwgNiwgMSwgMjE3LCA4NCwgMywgMjE2LCAyMzEsIDMxLCA2LCAxLCAyMTcsIDg0LCAzLCAyMTQsIAorICAgIDI0MiwgMzEsIDIxNiwgMjMxLCAzMSwgMjQxLCAyNDEsIDIzOCwgMTgwLCAyMTQsIDk0LCAyMzgsIDE5MSwgMjE0LCA5NCwgCisgICAgMjM4LCAxODAsIDIwOCwgMjQ0LCAyMzgsIDE5MSwgMjA4LCAyNDQsIDIwNiwgNDEsIDIwOCwgMjQ0LCAyMzYsIDIyNywgMjA4LCAKKyAgICAyNDQsIDIwOSwgMTA0LCAyMDgsIDI0NCwgMjM3LCAxMDIsIDIwOCwgMjQ0LCAyMTQsIDIxMiwgMjA4LCAyNDQsIDIwNiwgNzcsIAorICAgIDIwOCwgMjQ0LCAyMzQsIDIyMiwgMjA4LCAyNDQsIDE5OSwgODIsIDIwMSwgMjUsIDIwOCwgMjQ0LCAxOTksIDgyLCAyMDEsIAorICAgIDI1LCAyMTgsIDIzMiwgMTk5LCA4MiwgMjAxLCAyNSwgMjI3LCAxNjEsIDIyNSwgMTksIDgxLCAyMTMsIDM3LCA4MSwgMjMzLCAKKyAgICAzMywgMjE4LCAyMzMsIDIzMywgMzMsIDIzNywgMTAyLCAyNDEsIDI0NCwgMjM4LCAxODAsIDI0MSwgMjQ0LCAyMzgsIDE5MSwgCisgICAgMjQxLCAyNDQsIDIzMywgMTc3LCAxNDgsIDUzLCA4MywgMjI0LCAxNzYsIDUzLCAxMjgsIDIyNCwgMTc2LCA0OSwgMjA5LCAKKyAgICAxMzksIDIxNCwgNjMsIDgxLCA1MSwgMjA5LCAxMzksIDIxNCwgNjMsIDgxLCAyMDksIDEzOSwgMjI0LCA1OCwgMjE0LCA2MywgCisgICAgODEsIDIwOSwgMTM5LCAyMzQsIDU2LCAyMTQsIDYzLCA4MSwgNDksIDUzLCAyMTQsIDYzLCA4MSwgNTEsIDUzLCAyMTQsIDYzLCAKKyAgICA4MSwgNTMsIDIyNCwgNTgsIDIxNCwgNjMsIDgxLCA1MywgMjM0LCA1NiwgMjE0LCA2MywgODEsIDI0MiwgNDAsIDUzLCAyNDIsIAorICAgIDQwLCAyNDgsIDIwLCAyMDUsIDk1LCAyNDgsIDIwLCAxMTIsIDczLCAyMjUsIDM4LCAxMjAsIDczLCAyMjUsIDM4LCAyMzMsIAorICAgIDE3NywgMjM4LCAxOTUsIDIzMywgMzEsIDIxNSwgOTksIDIyNCwgMTc3LCAyMTAsIDE1NCwgMjE2LCAxMjgsIDIxMCwgMTU0LCAKKyAgICAyMjUsIDE5LCAyMzgsIDE4OSwgMjEzLCAzNywgMjM4LCAxODksIDIxNSwgNzgsIDI0MSwgOCwgMjM2LCAyNDAsIDIyNSwgMTksIAorICAgIDIxNiwgMjM5LCAyMTMsIDM3LCAyMTYsIDIzOSwgMjIwLCAxMjQsIDIxOCwgMjQwLCAyMDgsIDI0NCwgMjE2LCAyOCwgMjIxLCAKKyAgICAxNzAsIDU0LCAyMTYsIDI4LCAyMDYsIDE2NywgMjA2LCA1MSwgNTQsIDIxNSwgMTQsIDUzLCAyMTUsIDE0LCAyMDUsIDgzLCAKKyAgICAyMTUsIDE0LCAyMTMsIDEwNSwgMjE1LCAxNCwgMjEzLCAxMDUsIDUzLCAyMTUsIDE0LCAyMTMsIDEwNSwgMjA1LCA4MywgCisgICAgMjE1LCAxNCwgMjQ3LCAxMjksIDIwOSwgMTM5LCAyMjUsIDIzLCAyNTEsIDcxLCAyMTQsIDYzLCA4MSwgMjA5LCAxMzksIAorICAgIDIxMywgNDEsIDI1MSwgNzEsIDIxNCwgNjMsIDgxLCAyMTMsIDE2NiwgODEsIDUzLCAyMzgsIDQzLCA4MSwgMjI4LCA1OCwgCisgICAgMjE2LCAyNDEsIDIwMywgMjQ4LCAxNzEsIDIwNiwgNywgMjQ3LCAxMzAsIDIyOCwgNzUsIDIxNSwgOTksIDI1MCwgMTYzLCAKKyAgICAyMzMsIDM0LCAyNDgsIDIwLCAyMzYsIDIxOSwgMjA5LCA3NSwgNDksIDUyLCAyNDgsIDcwLCAzLCAyMTQsIDczLCA1MSwgNTIsIAorICAgIDI0OCwgNzAsIDMsIDIxNCwgNzMsIDUzLCAyMTQsIDc5LCA4MSwgMjE0LCA3OSwgMjM4LCA0MywgODEsIDIzOCwgNDMsIDIxNCwgCisgICAgNzksIDgxLCAyMDUsIDIxNiwgMiwgMjM4LCA4MSwgMjEzLCAxMDUsIDIxNSwgMTYzLCA1NCwgNjMsIDk4LCAyNDgsIDIwLCAKKyAgICA2MywgODcsIDI0OCwgMjAsIDEyOCwgMjUwLCAxNjUsIDIxMywgMTA1LCAyMTAsIDE2NywgMjQ2LCAxMTEsIDIwMywgMjI4LCAKKyAgICAxMjAsIDI1MCwgMTY0LCAyNTEsIDEyOCwgMjAyLCAyNDcsIDI0NiwgNjgsIDIyMSwgMTU3LCA1NCwgMjA3LCAxNjcsIDI0MSwgCisgICAgMjQ0LCAyMjgsIDUwLCAyMDMsIDI0OCwgMjM3LCAyNSwgMjE0LCAyMTIsIDgxLCAxMjYsIDczLCAyMTQsIDIxMSwgMjE0LCAKKyAgICA5MCwgMjE1LCAxNCwgMjM2LCAyMjksIDczLCAyMTQsIDIxMSwgMjM3LCA2MSwgNzMsIDIxNCwgMjExLCAxMjAsIDczLCAyMTQsIAorICAgIDIxMSwgMjM2LCAyMjksIDczLCA4MSwgMjM5LCAxODAsIDI0MiwgMjM0LCAyMDUsIDk0LCA4MywgMjM2LCAyMjksIDI0MCwgCisgICAgMTgwLCAyMjIsIDY2LCAxMywgMjA4LCAyNDQsIDIwMCwgMjM4LCAyMjcsIDE2MSwgMjM2LCAxODEsIDI1MSwgOCwgMjI4LCAKKyAgICA0OCwgMjA1LCAyMzIsIDIyOCwgNDgsIDIxMCwgMTU0LCAyMjgsIDQ4LCAyMTUsIDExMywgMjI1LCAxOSwgMjI4LCAxOCwgCisgICAgMjEzLCAzNywgMjI4LCAxOCwgMjM3LCA3MywgMjA4LCAzMywgMjI4LCAxOCwgMjE1LCA3OCwgMjQxLCA4LCAyMjgsIDE4LCAKKyAgICAyMjgsIDg3LCAyMDcsIDExNSwgMjA3LCAxODQsIDI1MSwgMjQxLCAyMDcsIDExNSwgMjA3LCAxODQsIDIyOCwgODcsIDksIAorICAgIDIzNiwgMjQyLCAyMTAsIDg0LCAyNTEsIDI0MSwgOSwgMjM2LCAyNDIsIDIxMCwgODQsIDIyMCwgMTE4LCAxNywgMjEwLCA4NSwgCisgICAgMjE4LCAyMzYsIDE3LCAyMTAsIDg1LCAyMDcsIDIxMywgMTk5LCA4MSwgMjA3LCAyMTMsIDgsIDQsIDEsIDcwLCAyMDcsIAorICAgIDIxMywgMTQ5LCAyMDcsIDIxMywgMTY0LCAyMDcsIDIxMywgMTg3LCAyMDcsIDIxMywgMjEwLCAxMzUsIDIwNywgMjEzLCAKKyAgICAxOTIsIDIwNywgMjEzLCAyMTksIDExMywgMjA3LCAyMTMsIDkzLCA1NCwgMjA3LCAyMTMsIDIyMSwgMTU2LCAyMDcsIDIxMywgCisgICAgMjM4LCAxMjIsIDU0LCAyMDcsIDIxMywgNDksIDIxNiwgMTE1LCAyMDcsIDIxMywgNTEsIDIxNiwgMTE1LCAyMDcsIDIxMywgCisgICAgOCwgNCwgMSwgMjIwLCAyMTQsIDIwOCwgNCwgMTk5LCA4MSwgMjA4LCA0LCAxMDIsIDIwOCwgNCwgMTA1LCAyMDgsIDQsIAorICAgIDE0NywgMjA4LCA0LCAxNDksIDIwOCwgNCwgMTY0LCAyMDgsIDQsIDE4NywgMjA4LCA0LCAyMTAsIDEzNSwgMjA4LCA0LCAKKyAgICAxOTIsIDIwOCwgNCwgMjE5LCAxMTMsIDIwOCwgNCwgOTMsIDU0LCAyMDgsIDQsIDIyMSwgMTU2LCAyMDgsIDQsIDIzOCwgCisgICAgMTIyLCA1NCwgMjA4LCA0LCA0OSwgMjE2LCAxMTUsIDIwOCwgNCwgNTEsIDIxNiwgMTE1LCA4LCAyMDgsIDQsIDQsIDEsIDYyLCAKKyAgICA4LCAyMDgsIDQsIDQsIDEsIDcyLCA4LCAyMDgsIDQsIDQsIDEsIDc0LCA4LCAyMDgsIDQsIDQsIDEsIDIwMCwgMTk1LCA4LCAKKyAgICAyMDgsIDQsIDQsIDEsIDIxMSwgMjE4LCA4LCAyMDgsIDQsIDQsIDEsIDIzNCwgMjQ3LCA4LCAyMDgsIDQsIDQsIDEsIDIyNywgCisgICAgMTE4LCA4LCAyMDgsIDQsIDQsIDEsIDE1NiwgOCwgMjA4LCA0LCA0LCAxLCAyMjMsIDI0MywgOCwgMjA4LCA0LCA0LCAxLCAKKyAgICAyMjAsIDIxNCwgOCwgMjA4LCA0LCA0LCAxLCAyMTYsIDIyNiwgOCwgMjA4LCA0LCA0LCAxLCAyMTIsIDEyMiwgOCwgMjA4LCAKKyAgICA0LCA0LCAxLCAyMDcsIDgzLCAyMzgsIDYwLCA1NCwgMjQ2LCA4MCwgNTQsIDI0MiwgMjE5LCA1NCwgMjM2LCAyMDksIDIzNiwgCisgICAgMjEzLCA1NCwgMjI0LCAxNTYsIDU0LCAyMjEsIDE3MSwgNTQsIDIyMCwgMTQxLCA1NCwgMjE2LCA1LCA1NCwgMjEyLCAxNDksIAorICAgIDU0LCAyMDAsIDI0NiwgNTQsIDIyMCwgOCwgMjEwLCA1MSwgNTQsIDI0MCwgMTg5LCA1NCwgMjM4LCA2MSwgNTQsIDIyNiwgCisgICAgMTQyLCA1NCwgMjA0LCAyMDgsIDU0LCAyMzksIDE2MywgNTQsIDIzNSwgMjQ2LCAyMTYsIDQwLCA1NCwgMjE2LCAyLCA1NCwgCisgICAgMjM1LCA0NSwgNTQsIDI1MCwgMTI5LCA1NCwgMjMzLCAxMDMsIDU0LCAyNDcsIDcxLCA1NCwgMjI0LCAxNDYsIDIwNSwgMTM4LCAKKyAgICA1NCwgMjA4LCAyMjUsIDU0LCAyMDYsIDE2NCwgNTQsIDIyOCwgMTAyLCAyMTIsIDE0OSwgNTQsIDIwNCwgMTg4LCAyMjQsIAorICAgIDE1NiwgNTQsIDIxOCwgMjIyLCAxMzQsIDU0LCAyMjIsIDE3OCwgNTQsIDIxMiwgMTcyLCA1NCwgMjI1LCA2NywgNTQsIDM4LCAKKyAgICA0OSwgMjM0LCAxNjEsIDU2LCAzOCwgNTEsIDIzNCwgMTYxLCA1NiwgMzgsIDE2OCwgODMsIDIyNCwgMTc3LCAyMTYsIDI0MiwgCisgICAgMzgsIDIwOSwgMjUwLCA4MywgMjI0LCAxNzcsIDIxNiwgMjQyLCAzOCwgMjUxLCA0NywgNTUsIDU2LCAzOCwgMjQ2LCAxMTIsIAorICAgIDU1LCA1NiwgMzgsIDQ5LCA1NSwgNTYsIDM4LCA1MSwgNTUsIDU2LCAzOCwgMjEzLCAyNywgMjE2LCAyNDIsIDM4LCAyNDYsIAorICAgIDExMiwgMjEzLCAyNywgMjE2LCAyNDIsIDM4LCAyNTEsIDQ3LCAyMTMsIDI3LCAyMTYsIDI0MiwgMzgsIDEyNiwgMTkwLCA1NiwgCisgICAgMzgsIDIzNiwgMjI5LCAxOTAsIDU2LCAzOCwgMjM4LCAxNzUsIDI0NiwgMTU1LCAzOCwgMjM4LCAxNzUsIDIwOCwgMTkzLCAKKyAgICAzOCwgMjM4LCAxNzUsIDI0MSwgNjQsIDM4LCAyMzgsIDE3NSwgMjQ2LCAxNTYsIDI0OSwgMTI0LCAzOCwgNDksIDUxLCA1NSwgCisgICAgNTYsIDM4LCAyMzgsIDE3NSwgMjExLCAyMDksIDM4LCAyMzgsIDE3NSwgMjI2LCAyMTAsIDM4LCAyMzgsIDE3NSwgMjAzLCAKKyAgICAyMTgsIDIxNSwgOTYsIDIwNSwgOTgsIDM4LCAyMTMsIDEwNiwgMjA5LCAxNywgMjE2LCAyNDIsIDM4LCA1MywgODMsIDIwOCwgCisgICAgNDcsIDIxNiwgMjQyLCAzOCwgMjUxLCA1NywgOTksIDM4LCAyMDUsIDgzLCAyMDMsIDI1MCwgMzgsIDIwMSwgMjgsIDI0OCwgCisgICAgNTEsIDU2LCAzOCwgOTgsIDU1LCAyMTYsIDI0MiwgMzgsIDE2OCwgNTMsIDIwOSwgMTcsIDIxNiwgMjQyLCAzOCwgODcsIAorICAgIDIzNCwgMTYxLCAzLCAxNTQsIDIzOSwgMTY1LCAzOCwgOTgsIDIzNCwgMTYxLCAzLCAxNTQsIDIzOSwgMTY1LCAzOCwgNDksIAorICAgIDU1LCA1NywgMzgsIDUxLCA1NSwgNTcsIDM4LCAyNTAsIDE2NiwgNTYsIDI1MSwgMjQ3LCAyMTcsIDExNywgMjUxLCAyMzEsIAorICAgIDIwNSwgMTg2LCAyMDYsIDEwNywgMjA4LCAxMywgMTc1LCA2LCAyNDcsIDIyMywgMjQxLCAxNTUsIDI0NywgNjEsIDI0NywgCisgICAgNTYsIDIyNCwgMTc3LCA5OSwgMjQ3LCAxMzEsIDIxNywgMTE3LCAyNDcsIDE4MiwgMjA0LCA0LCAyMzgsIDYyLCAyNDMsIDUwLCAKKyAgICAyMTEsIDIwNiwgMjQxLCAxNTUsIDIzNywgMTc3LCAxMzUsIDQsIDIzNiwgMTU2LCAxMzUsIDYsIDIzNCwgMjQ3LCAyNDgsIAorICAgIDE0MiwgNiwgMjM0LCAyNDcsIDE3NSwgNiwgMjM0LCAyNDcsIDIxNSwgMTMwLCAyNDMsIDUwLCAyMTUsIDEzMCwgMjQzLCA1MSwgCisgICAgMTE5LCAxMjAsIDIxNSwgMjA0LCAxMzUsIDYsIDcwLCAyNDgsIDE0MiwgNiwgNzAsIDEzNSwgNiwgMTU2LCAxMzUsIDQsIAorICAgIDE1NiwgMjI1LCAxOTMsIDY4LCAyNDksIDc3LCA5OSwgMTc1LCA2LCAyMjAsIDIxNCwgMjE4LCA5MSwgNTQsIDIwOSwgMSwgCisgICAgMjEzLCAxNzgsIDI0MywgMTgsIDEzNSwgNiwgMjE2LCAyMjYsIDE3NSwgNiwgMjE2LCAyMjYsIDE3NSwgNiwgMjE0LCAxNjcsIAorICAgIDEzNSwgNiwgMTQ2LCAyNDgsIDE0MiwgNiwgMTQ2LCAxNzUsIDYsIDE0NiwgMjE1LCAyMSwgMjA2LCAyNTUsIDIxMywgMTE4LCAKKyAgICAyMTAsIDE0NiwgODEsIDIwNiwgMTc2LCA1NCwgMjA1LCAxMjgsIDEzNCwgNTQsIDIwMywgNDMsIDE3NSwgNiwgMTk5LCAxNTcsIAorICAgIDIxNywgMiwgNTQsIDIxNywgMTA3LCA1NCwgMjI4LCA1MCwgMjE3LCAxMDcsIDU0LCAyNDgsIDE0MiwgNiwgMTk5LCAxNTcsIAorICAgIDIwNCwgMTg1LCAzMSwgNCwgMSwgMjI4LCA0MSwgMjI2LCAyNTEsIDU0LCAyNTEsIDY2LCA1NCwgMTM1LCA2LCAyNTAsIDEwMywgCisgICAgMjQ4LCAxNDIsIDYsIDI0NywgMjIzLCAyMzgsIDg2LCA5OSwgMTM1LCA0LCA3MiwgMTM1LCA2LCA3MiwgMTM1LCA2LCAyMzgsIAorICAgIDUsIDIwNCwgMTg1LCA2LCAyMzgsIDUsIDEzNSwgNiwgMjIzLCAyNDMsIDEzNSwgNCwgNzQsIDE0MCwgOTksIDI0OCwgMjExLCAKKyAgICA5OSwgMjM1LCAxNDgsIDk5LCAyNDIsIDI0LCA5OSwgMjI4LCA5MiwgMjA4LCAyNTUsIDIxMiwgMjI4LCA2LCAyMTQsIDE2NywgCisgICAgMjM3LCAxODAsIDU0LCAxNzUsIDQsIDIxNSwgMjA0LCAxNzUsIDQsIDIzNiwgNjAsIDE3NSwgNiwgMjM2LCA2MCwgMTc1LCA2LCAKKyAgICAyMTUsIDIwNCwgMTc1LCAyMjAsIDIxMywgMjA3LCAyMzEsIDIwNCwgMTg1LCA0MywgNiwgMjM2LCAxNTYsIDIwNCwgMTg1LCAKKyAgICA0MywgNiwgMTU2LCAyMTMsIDEwNSwgNDMsIDYsIDE1NiwgMjA0LCAxODUsIDQzLCA2LCAyMDAsIDEyMywgMTc1LCAzOSwgNiwgCisgICAgMjQyLCAxNTMsIDE3NSwgMzksIDQsIDI0MiwgMTUzLCAxNzUsIDM5LCA0LCA3MiwgMTc1LCAzOSwgNCwgNzAsIDE3NSwgMzksIAorICAgIDQsIDIyNywgMjUxLCAyMTQsIDI0NSwgMjI0LCAxNzYsIDIwNCwgMTg1LCAyNTEsIDg5LCAyMTYsIDI4LCA1NCwgMjUxLCAKKyAgICAxNTMsIDIwNCwgMTg1LCA0LCAyMzgsIDUsIDE2LCAzNiwgMjEyLCAyMiwgMjA4LCAyNTUsIDIwMSwgMTY0LCAyMzYsIDIxOSwgCisgICAgMTEyLCAyMTAsIDEzMSwgMjAxLCAxNjQsIDIzNiwgMjE5LCAxMTIsIDIxOSwgMTA3LCAyMDEsIDE2NCwgMjM2LCAyMTksIAorICAgIDExMiwgMjA2LCAxNTcsIDIwMSwgMTY0LCAyMzYsIDIxOSwgMTEyLCAyMDYsIDc0LCAyMDEsIDE2NCwgMjM2LCAyMTksIDEyMCwgCisgICAgMjA2LCA3MSwgMjAxLCAxNjQsIDIzNiwgMjE5LCAxMTIsIDIzNywgMTA3LCAyMDEsIDE2NCwgMjM2LCAyMTksIDEyMCwgMjM3LCAKKyAgICAxMDYsIDIwMSwgMTY0LCAyMzYsIDIxOSwgMTI2LCAyMzcsIDEwNiwgMjAxLCAxNjQsIDIzNiwgMjE5LCAyMzYsIDIyOSwgCisgICAgMjM3LCAxMDYsIDIwMSwgMTY0LCAyMzYsIDIxOSwgMTEyLCAyMDksIDk2LCAyMDEsIDE2NCwgMjM2LCAyMTksIDIzNywgNjEsIAorICAgIDIwOSwgOTQsIDIwMSwgMTY0LCAyMzYsIDIxOSwgMTEyLCAyMzgsIDIyNywgMjAxLCAxNjQsIDIzNiwgMjE5LCAxMjYsIDIzOCwgCisgICAgMjI1LCAyMDEsIDE2NCwgMjM2LCAyMTksIDIzNywgNjEsIDIzOCwgMjI1LCAyMDEsIDE2NCwgMjM2LCAyMTksIDIxMCwgMTM2LCAKKyAgICAyMzgsIDIyNSwgMjM2LCAyMTksIDIxOCwgOTIsIDEwMiwgMjEyLCAyNDAsIDIxOCwgOTMsIDEwMiwgMjEyLCAyNDAsIDIxOCwgCisgICAgOTMsIDEwNSwgMjEyLCAyNDAsIDIxOCwgOTMsIDE0NywgMjEyLCAyNDAsIDIxOCwgOTMsIDE0OSwgMjEyLCAyNDAsIDIxOCwgCisgICAgOTMsIDE2NCwgMjEyLCAyNDAsIDIxOCwgOTMsIDE4NywgMjEyLCAyNDAsIDIxOCwgOTMsIDIxMCwgMTM1LCAyMTIsIDI0MCwgCisgICAgMjE4LCA5MywgMTkyLCAyMTIsIDI0MCwgMjE4LCA5MywgMjE5LCAxMTMsIDIxMiwgMjQwLCAyMTgsIDkzLCAyMDYsIDE2NiwgCisgICAgMjEyLCAyNDAsIDIxOCwgOTMsIDIzOCwgMTk5LCAyMTIsIDI0MCwgMjE4LCA5MywgMjA0LCAxNjQsIDIxMiwgMjQwLCAyMTgsIAorICAgIDkzLCAyMzcsIDEwNCwgMjEyLCAyNDAsIDIxOCwgOTMsIDExMiwgMjMzLCA4MiwgMjEyLCAyNDAsIDIxOCwgOTMsIDIzNywgCisgICAgNjEsIDIzMywgODIsIDIxMiwgMjQwLCAyMTgsIDkzLCAxMTIsIDIwNiwgNTAsIDQsIDIxMiwgMjQwLCAyMTgsIDkzLCAxMDIsIAorICAgIDQsIDIxMiwgMjQwLCAyMTgsIDkzLCAxMDUsIDQsIDIxMiwgMjQwLCAyMTgsIDkzLCAxNDcsIDQsIDIxMiwgMjQwLCAyMTgsIAorICAgIDkzLCAxNDksIDQsIDIxMiwgMjQwLCAyMTgsIDkzLCAxNjQsIDQsIDIxMiwgMjQwLCAyMTgsIDkzLCAxODcsIDQsIDIxMiwgCisgICAgMjQwLCAyMTgsIDkzLCAyMTAsIDEzNSwgNCwgMjEyLCAyNDAsIDIxOCwgOTMsIDE5MiwgNCwgMjEyLCAyNDAsIDIxOCwgOTMsIAorICAgIDIxOSwgMTEzLCA0LCAyMTIsIDI0MCwgMjE4LCA5MywgMjA2LCAxNjYsIDQsIDIxMiwgMjQwLCAyMTgsIDkzLCAyMzgsIDE5OSwgCisgICAgNCwgMjEyLCAyNDAsIDIxOCwgOTMsIDIwNCwgMTY0LCA0LCAyMTIsIDI0MCwgMjE4LCA5MywgMjM3LCAxMDQsIDQsIDIxMiwgCisgICAgMjQwLCAyMTgsIDkzLCAxMTIsIDIzMywgODIsIDQsIDIxMiwgMjQwLCAyMTgsIDkzLCAyMzcsIDYxLCAyMzMsIDgyLCA0LCAKKyAgICAyMTIsIDI0MCwgMjE4LCA5MywgMTEyLCAyMDYsIDUwLCAyMTIsIDI0MCwgMjE4LCA5MywgMTEyLCAyMDYsIDUxLCAyNDcsIAorICAgIDIyNCwgMjQyLCAxNTMsIDIxMiwgMjQwLCAyMTgsIDkzLCAyMzcsIDYxLCAyMDYsIDUwLCAyMTIsIDI0MCwgMjE4LCA5MywgCisgICAgMjA2LCAxNjcsIDIwNiwgNTAsIDIxMiwgMjQwLCAyMTgsIDkzLCAyMTMsIDEwNSwgMTEyLCAyMzMsIDgyLCA4LCA0LCAxLCAKKyAgICAyMTMsIDEwNSwgMjQ3LCAyMjMsIDIxMiwgMjQwLCAyMTgsIDkzLCAyMDksIDEwNiwgMjI1LCA2MiwgMTksIDIxMiwgMjQwLCAKKyAgICAyMTgsIDkzLCAyMzcsIDEwNSwgMjM5LCAyMCwgMTksIDIxMiwgMjQwLCAyMTgsIDkzLCAyMzcsIDEwNSwgMjA2LCA1MCwgCisgICAgMjEyLCAyNDAsIDIxOCwgOTMsIDExMiwgMjMzLCA4MywgMjA2LCA1MCwgMjAxLCAxNjQsIDIzNiwgMjE5LCAxOTksIDgyLCAKKyAgICAyMDYsIDcxLCAyMDQsIDE4NSwgMTcsIDEwNSwgMjA0LCAxODUsIDE3LCAxNDcsIDk4LCA0OCwgMTgyLCA0OCwgODcsIDQ4LCAKKyAgICAxOTEsIDQ4LCA0OSwgNTEsIDQ4LCAxMTUsIDEyNywgNDgsIDE1NywgMjAxLCA0OCwgNDgsIDE1NywgMjM5LCAxNCwgNDgsIAorICAgIDIwOCwgMjU0LCAyMzksIDE0LCA0OCwgMjA4LCAyNTQsIDIwMSwgNDgsIDQ4LCA5OCwgNTUsIDMsIDk3LCA4NywgNTUsIDMsIAorICAgIDk3LCA5OCwgMjAxLCA3OCwgNDgsIDg3LCAyMDEsIDc4LCA0OCwgOTgsIDEyMCwgMjM0LCAxMzQsIDQ4LCAxODIsIDEyMCwgCisgICAgMjM0LCAxMzQsIDQ4LCA4NywgMTIwLCAyMzQsIDEzNCwgNDgsIDE5MSwgMTIwLCAyMzQsIDEzNCwgNDgsIDk4LCA1NSwgMywgCisgICAgMjA3LCA2LCA4NywgNTUsIDMsIDIwNywgNiwgOTgsIDU1LCAyMzYsIDIwMSwgMTQ4LCAxODIsIDU1LCAyMzYsIDIwMSwgMTQ4LCAKKyAgICA4NywgNTUsIDIzNiwgMjAxLCAxNDgsIDE5MSwgNTUsIDIzNiwgMjAxLCAxNDgsIDExNSwgMTI3LCA1NSwgMywgMjQ5LCA2NCwgCisgICAgOTgsIDU1LCAzLCAxMTcsIDg3LCA1NSwgMywgMTE3LCA5OCwgNTUsIDMsIDIyNCwgNzQsIDg3LCA1NSwgMywgMjI0LCA3NCwgCisgICAgNDksIDUxLCAyMDEsIDc4LCA0OCwgNDksIDUxLCA1NSwgMywgOTcsIDE5MSwgMTk5LCAyNywgNDgsIDE4MiwgNTUsIDMsIAorICAgIDIwNSwgMjI0LCAyMjUsIDE4LCAxODIsIDU1LCAzLCAyMDUsIDIyNCwgMjEzLCAzNSwgMTkxLCA1NSwgMywgMjA1LCAyMjQsIAorICAgIDIyNSwgMTgsIDE5MSwgNTUsIDMsIDIwNSwgMjI0LCAyMTMsIDM1LCA4NywgNTUsIDMsIDI0MywgMTYsIDIzOSwgMTY1LCAKKyAgICAxOTEsIDU1LCAzLCAyNDMsIDE2LCAyMjUsIDE4LCAyNTEsIDQ3LCAyMDUsIDE1OCwgMjEwLCAxNzAsIDQ4LCAyNDYsIDExMiwgCisgICAgMjA1LCAxNTgsIDIxMCwgMTcwLCA0OCwgMTU3LCAyMDEsIDQ4LCA1NSwgMjA1LCAxODYsIDE2OCwgMTQ4LCA5OCwgNTUsIAorICAgIDIwNSwgMTg2LCAyNDksIDc3LCAxMTksIDg3LCA1NSwgMjA1LCAxODYsIDE0OCwgMjUxLCA0NywgMTc2LCAyNDYsIDE1NiwgCisgICAgNDgsIDI0NiwgMTEyLCAxNzYsIDI0NiwgMTU2LCA0OCwgOTgsIDIzNCwgMTYxLCAzLCAxNTQsIDIwMywgMjE2LCA5OCwgMjM0LCAKKyAgICAxNjEsIDMsIDE1NCwgMjM5LCAxNjUsIDE4MiwgMjM0LCAxNjEsIDMsIDE1NCwgMjEzLCAzNSwgMTgyLCAyMzQsIDE2MSwgMywgCisgICAgMTU0LCAyMjUsIDE4LCA4NywgMjM0LCAxNjEsIDMsIDE1NCwgMjAzLCAyMTYsIDg3LCAyMzQsIDE2MSwgMywgMTU0LCAyMzksIAorICAgIDE2NSwgMTkxLCAyMzQsIDE2MSwgMywgMTU0LCAyMTMsIDM1LCAxOTEsIDIzNCwgMTYxLCAzLCAxNTQsIDIyNSwgMTgsIDg3LCAKKyAgICA1NSwgMTE5LCA5OCwgNDgsIDE4MiwgNTUsIDk4LCA3NiwgMTkxLCA0OCwgOTgsIDU1LCAxMTksIDg3LCA0OCwgOTgsIDIxNiwgCisgICAgMTg4LCAyNTAsIDE5OSwgMTgyLCAyMTYsIDE4OCwgMjUwLCAxOTksIDg3LCAyMTYsIDE4OCwgMjUwLCAxOTksIDE5MSwgMjE2LCAKKyAgICAxODgsIDI1MCwgMTk5LCA5OCwgMjM0LCAxNjEsIDExOSwgODcsIDIzNCwgMTYwLCA4NywgMjM0LCAxNjEsIDExOSwgOTgsIAorICAgIDIzNCwgMTYwLCA5OCwgNTMsIDU1LCAzLCA5NywgNDksIDUxLCA1MywgNTUsIDMsIDk3LCA4NywgNTMsIDU1LCAzLCA5NywgCisgICAgOTgsIDUzLCA0OCwgMTgyLCA1MywgNDgsIDg3LCA1MywgNDgsIDE5MSwgNTMsIDQ4LCA0OSwgNTEsIDUzLCA0OCwgMTE1LCAKKyAgICAxMjcsIDUzLCA0OCwgMTU3LCAyMDEsIDQ4LCA1MywgNDgsIDE1NywgMjM5LCAxNCwgNTMsIDQ4LCAyMDgsIDI1NCwgMjM5LCAKKyAgICAxNCwgNTMsIDQ4LCAyMDgsIDI1NCwgMjAxLCA0OCwgNTMsIDQ4LCA5OCwgMjA1LCA4MywgNDgsIDg3LCAyMDUsIDgzLCA0OCwgCisgICAgOTgsIDIwOCwgMTg2LCA0OCwgODcsIDIwOCwgMTg2LCA0OCwgMTgyLCA1NSwgMywgNTMsIDk3LCAxOTEsIDU1LCAzLCA1MywgCisgICAgOTcsIDk4LCAyNDEsIDI0MywgNDgsIDE4MiwgMjQxLCAyNDMsIDQ4LCA4NywgMjQxLCAyNDMsIDQ4LCAxOTEsIDI0MSwgMjQzLCAKKyAgICA0OCwgOTgsIDU1LCAyMDUsIDE4NiwgMTQ4LCA4NywgNTUsIDIwNSwgMTg2LCAxNDgsIDk4LCA2NCwgNDgsIDE4MiwgNjQsIAorICAgIDQ4LCA4NywgNjQsIDQ4LCAxOTEsIDY0LCA0OCwgMTgyLCA2NCwgNTUsIDIzNiwgMjAxLCAxNDgsIDE4MiwgNjQsIDU1LCAKKyAgICAyMTcsIDc5LCAyMTYsIDY0LCAxODIsIDY0LCA1NSwgMjE3LCA3OSwgMjE2LCA2NSwgMywgMjMzLCAxNzcsIDE0OCwgMTgyLCAKKyAgICA2NCwgNTUsIDIxNywgNzksIDIxNiwgNjUsIDMsIDgzLCAxNDgsIDE4MiwgNjQsIDUzLCA0OCwgMTgyLCA2NCwgNTMsIDU1LCAKKyAgICAyMTcsIDc5LCAyMTYsIDY0LCA4NywgNjQsIDU1LCAyMzYsIDIwMSwgMjAxLCAxMDIsIDE1NywgMjAxLCA0OCwgNTUsIDIwNSwgCisgICAgMTg2LCAyNDMsIDE1LCAyMDgsIDI1NCwgMjM5LCAxNCwgNTUsIDIwNSwgMTg2LCAyNDMsIDE1LCAxMTUsIDEyNywgNjQsIDQ4LCAKKyAgICA1MSwgNTUsIDMsIDQsIDI0NiwgMTU1LCAxOTEsIDU1LCA5OCwgNzYsIDE4MiwgNDgsIDEyNiwgODcsIDI1MCwgMTk5LCA5OCwgCisgICAgNTUsIDMsIDgzLCA5NywgODcsIDU1LCAzLCA4MywgOTcsIDQ5LCA1MSwgNTUsIDMsIDgzLCA5NywgOTgsIDU1LCAzLCA1MywgCisgICAgODMsIDk3LCA4NywgNTUsIDMsIDUzLCA4MywgOTcsIDQ5LCA1MSwgNTUsIDMsIDUzLCA4MywgOTcsIDk4LCAyMTcsIDUxLCAKKyAgICA0OCwgODcsIDIxNywgNTEsIDQ4LCA0OSwgNTEsIDIxNywgNTEsIDQ4LCAzNiwgMjUxLCAxMjQsIDI0NiwgNjUsIDIxNiwgCisgICAgMTA4LCAyNDEsIDQ4LCAyMDYsIDk3LCAyMzgsIDM4LCAyMDYsIDk3LCAyNDAsIDIwMiwgMjE4LCAyMTUsIDIzOCwgMzksIAorICAgIDIzOCwgMTgxLCAyMTAsIDE0MSwgMjI4LCAxMDYsIDIyMCwgMTUyLCAyMzgsIDIwMiwgMjE3LCAxMTcsIDIxOCwgMjE1LCAKKyAgICAyNTEsIDg2LCAyMzgsIDIwMiwgMjE3LCAxMTcsIDQsIDIzOCwgMjAyLCAyMTcsIDExNywgMjQzLCA0NCwgMjUwLCAxODksIAorICAgIDIyMiwgNDQsIDI0MCwgMjAyLCAyMTgsIDIxNSwgMjQzLCA0NiwgMjUwLCAxODksIDIyMiwgNDQsIDQsIDI0MywgNDQsIDI1MCwgCisgICAgMTg5LCAyMjIsIDQ0LCAyMzgsIDE3MSwgNzYsIDIxNCwgMjQ3LCAyMjAsIDIxMywgMjE1LCAxLCAyMjAsIDIxMywgMjQzLCAKKyAgICAyMSwgMjIwLCAyMTMsIDIwNywgMjMxLCAyMjEsIDE1NywgNTQsIDIyMSwgMTU1LCA1NCwgNzMsIDIxNSwgMTEzLCAyNDAsIAorICAgIDIzNSwgMjA5LCA3NSwgMjEwLCAxNDIsIDIyMSwgMTU2LCAyNTAsIDE2NiwgMjE3LCA0MywgMjEzLCAyNywgMjE3LCA0MywgCisgICAgMjQ4LCAyMSwgMjE3LCA0MywgNTIsIDIxMiwgMjM0LCAyNDIsIDIxMCwgMjEyLCAyMzQsIDIzNiwgMjIyLCAyMTIsIDIzNCwgCisgICAgMjE0LCAyNDMsIDEzOCwgMjI4LCA5NCwgNTEsIDI1MSwgNzAsIDI1MSwgNzAsIDIyMiwgNzMsIDI1MSwgNzAsIDIwOCwgMjI0LCAKKyAgICAyNTEsIDcwLCAyNDAsIDIzNywgMjQwLCAyMDIsIDIxOCwgMjE1LCAyNDAsIDI0MSwgMjE2LCAxMjEsIDEzOCwgMjE4LCAyMTUsIAorICAgIDIxNiwgMTIxLCAxMzgsIDIyNCwgOTgsIDI1MSwgNzksIDIyNCwgOTgsIDIxNywgMzMsIDIyOCwgNTUsIDIwMywgMjQxLCAKKyAgICAyMjgsIDY5LCA1MywgMjI4LCA2OSwgMjA1LCA4MywgMjI4LCA2OSwgMjQzLCAzOCwgMjI4LCA2OSwgMjA3LCAyMDMsIDIyOCwgCisgICAgNjksIDIwMiwgMTgxLCAyMjgsIDY5LCAyNDYsIDExMiwgMjI4LCA2OSwgMjQ2LCAxMTIsIDI0MywgMzgsIDIyOCwgNjksIAorICAgIDI1MSwgNDcsIDI0MywgMzgsIDIyOCwgNjksIDIwNiwgOTYsIDI0OCwgMjU0LCAyMTMsIDIwMCwgMjE0LCAyNDQsIDczLCAKKyAgICAyMjEsIDE1NiwgMjM4LCA0NiwgMjM1LCAyNTIsIDIxNCwgMjQ0LCAyMzMsIDE5MiwgMjA1LCAyNDEsIDIxNywgNDMsIDIxMywgCisgICAgMTA1LCAyMDUsIDI0MCwgMjI4LCA1MCwgMjI1LCA0NywgMjEyLCAxMjIsIDIwOSwgMTQxLCAyMDEsIDc3LCAyMDAsIDIyNiwgCisgICAgMjE1LCAxLCAyMTgsIDIxNSwgMjA1LCAyNDAsIDIyMSwgMTU3LCAyMDUsIDI0MCwgMjUwLCAxNTksIDE2MCwgMTM4LCAyMTgsIAorICAgIDIxNSwgMjUwLCAxNTksIDE2MCwgMTM4LCAyNTEsIDQsIDE2MCwgMTM4LCAyNTEsIDQsIDI0NywgMjQ3LCAyMTgsIDIxNSwgCisgICAgMjUxLCAyNDAsIDE2MCwgMTM4LCAyMjAsIDI2LCAyNTEsIDQsIDIxOCwgMjI0LCAyNTEsIDI0MCwgMTYwLCAxMzgsIDI1MSwgCisgICAgMTE3LCAxNjAsIDEzOCwgMjE4LCAyMTUsIDI1MSwgMTE3LCAxNjAsIDEzOCwgMjUxLCAxMTcsIDE2MCwgMjE3LCAzNCwgMTYwLCAKKyAgICAxMzgsIDIwNSwgODMsIDIwNSwgMjQwLCAyNTEsIDEyNSwgMTYwLCAxMzgsIDIzOCwgMTE3LCAxMzgsIDIzNSwgMjUxLCAyMzgsIAorICAgIDExNywgMTM4LCAyNDEsIDQ5LCAyNDgsIDIwNSwgMjUxLCA2LCAyMDYsIDEwNywgMjI0LCAxODQsIDIzNSwgMjUxLCAxNjAsIAorICAgIDEzOCwgMjUxLCA0LCAxNjAsIDIwNSwgMTg2LCAyMTcsIDM0LCAyMDYsIDEwNywgMjI4LCAxMzMsIDIxNywgMTE3LCAyMjgsIAorICAgIDEzMywgNzYsIDIxNywgMzQsIDI1MSwgNCwgMTYwLCAxMzgsIDI0NiwgODAsIDIzOCwgMTIxLCAyMzgsIDEyMiwgMjQ2LCA3OSwgCisgICAgMjEzLCAyNywgMjI4LCAxMTgsIDE2MCwgMTM4LCAyMTMsIDI3LCAxNjAsIDEzOCwgMjQzLCA5LCAxMzgsIDIzOCwgODUsIAorICAgIDIzOCwgMTIwLCAxMzgsIDIwOCwgMTEwLCAyMzgsIDEyMSwgMjQxLCAxMzcsIDE2MCwgMTM4LCAxNjAsIDIwNSwgMTg2LCAKKyAgICAyNDcsIDIzNSwgMjQxLCAxNTYsIDIyMiwgNzMsIDI0NywgMjM0LCAyMTQsIDc3LCAxNjAsIDEzOCwgMjE4LCAyMTUsIDE2MCwgCisgICAgMTM4LCAyMzIsIDIyMywgMTM4LCAyMTgsIDIxNSwgMjMyLCAyMjMsIDEzOCwgMjA4LCA1NCwgMjM4LCAxMTcsIDEzOCwgMjI0LCAKKyAgICAyNDEsIDIxNywgMzQsIDE2MCwgMTM4LCAyMzUsIDY3LCAyMTcsIDM0LCAxNjAsIDEzOCwgMjI0LCAyNDEsIDExOSwgMTYwLCAKKyAgICAxMzgsIDIzNSwgNjcsIDExOSwgMTYwLCAxMzgsIDIyNCwgMjQxLCAyNDcsIDI0NywgMjE4LCAyMTUsIDE2MCwgMTM4LCAyMzUsIAorICAgIDY3LCAyNDcsIDI0NywgMjE4LCAyMTUsIDE2MCwgMTM4LCAyMjEsIDM1LCAyMjQsIDI0MCwgMjIxLCAzNSwgMjM1LCA2NiwgCisgICAgMjQ4LCAyMDUsIDIxOCwgMjE1LCAyMzgsIDExNywgMTM4LCAyMTgsIDIxNSwgMjI0LCAyNDAsIDIxOCwgMjE1LCAyMzUsIDY2LCAKKyAgICAyMjAsIDI2LCAyMjQsIDI0MSwgMjE4LCAyMjQsIDE2MCwgMTM4LCAyMjAsIDI2LCAyMzUsIDY3LCAyMTgsIDIyNCwgMTYwLCAKKyAgICAxMzgsIDIyNCwgMjQxLCAyMTcsIDM0LCAyMzgsIDExNywgMTM4LCAyMzUsIDY3LCAyMTcsIDM0LCAyMzgsIDExNywgMTM4LCAKKyAgICAyMjAsIDI2LCAyMjQsIDI0MSwgMjE4LCAyMjQsIDIzOCwgMTE3LCAxMzgsIDIyMCwgMjYsIDIzNSwgNjcsIDIxOCwgMjI0LCAKKyAgICAyMzgsIDExNywgMTM4LCAyMjQsIDI0MSwgMjE3LCAzNCwgMjM1LCA2NiwgMjM1LCA2NywgMjE3LCAzNCwgMjI0LCAyNDAsIAorICAgIDIyMCwgMjYsIDIyNCwgMjQxLCAyMTgsIDIyNCwgMjM1LCA2NiwgMjIwLCAyNiwgMjM1LCA2NywgMjE4LCAyMjQsIDIyNCwgCisgICAgMjQwLCAyMTUsIDI4LCAyMDcsIDI1MCwgMjE1LCAyOSwgMjE3LCAzNCwgMTYwLCAxMzgsIDIwNywgMjUxLCAyMTcsIDM0LCAKKyAgICAxNjAsIDEzOCwgMjE1LCAyOSwgMjE3LCAzNCwgMjM4LCAxMTcsIDEzOCwgMjA3LCAyNTEsIDIxNywgMzQsIDIzOCwgMTE3LCAKKyAgICAxMzgsIDI0MCwgMjAyLCAyMTgsIDIxNSwgMjE1LCAzMSwgMjQwLCAyMDIsIDIxOCwgMjE1LCAyMDcsIDI1MiwgMjA4LCAzLCAKKyAgICAyMTcsIDExNywgMjA3LCAyMTIsIDIxNywgMTE3LCAyMTgsIDIxNSwgMzUsIDIwOCwgMywgMjE3LCAxMTcsIDIxOCwgMjE1LCAKKyAgICAzNSwgMjA3LCAyMTIsIDIxNywgMTE3LCAyMDgsIDMsIDc2LCAyMTcsIDM0LCAxNjAsIDEzOCwgMjA3LCAyMTIsIDc2LCAyMTcsIAorICAgIDM0LCAxNjAsIDEzOCwgMjIwLCAyNiwgMzUsIDIwOCwgMywgNzYsIDIxOCwgMjI0LCAxNjAsIDEzOCwgMjIwLCAyNiwgMzUsIAorICAgIDIwNywgMjEyLCA3NiwgMjE4LCAyMjQsIDE2MCwgMTM4LCAyMDgsIDMsIDc2LCAzLCAyMTgsIDIxNSwgMTYwLCAxMzgsIDIwNywgCisgICAgMjEyLCA3NiwgMywgMjE4LCAyMTUsIDE2MCwgMTM4LCAyMjEsIDE2LCAyMjEsIDE3LCAyMjEsIDE4LCAyMjEsIDE3LCAyMDMsIAorICAgIDI0MSwgNTIsIDIyOCwgMTMzLCAyMTcsIDExNywgNTIsIDIxNywgMjUsIDIxNywgMTE3LCA1MiwgMjI4LCAxMzMsIDc2LCAKKyAgICAyMTcsIDM0LCAxNjAsIDEzOCwgNTIsIDIxNywgMjUsIDc2LCAyMTcsIDM0LCAxNjAsIDEzOCwgNTIsIDI0NywgMTQ0LCA1MiwgCisgICAgMjQyLCAyMDIsIDQ0LCAyMTUsIDExMywgNDQsIDIyMSwgMTU2LCA0NCwgMjA1LCAyMzIsIDQ0LCAyNDAsIDIzNSwgMjA5LCAKKyAgICA3NSwgNDQsIDczLCAyMTcsIDQzLCA0NCwgMjEzLCAyNywgMjE3LCA0MywgNDQsIDI1MCwgMTY2LCAyMTcsIDQzLCA0NCwgCisgICAgMjM4LCAxMjEsIDQ0LCAyNDEsIDI0NCwgOTUsIDIxNSwgMTEzLCA5NSwgMjIxLCAxNTYsIDk1LCAyMDUsIDIzMiwgOTUsIDczLCAKKyAgICAyMTcsIDQzLCA1MSwgMjA3LCAxNywgNDksIDIwNywgMTcsIDEyNywgMjA3LCAxNywgMTE1LCAyMDcsIDE3LCAyNTAsIDE2OSwgCisgICAgMjIxLCAxMzEsIDIwNSwgNjEsIDIzNiwgMjQ4LCAyMDUsIDgzLCA4MywgMjQ5LCA3NywgNTEsIDIwNCwgMTg0LCA1MywgODMsIAorICAgIDI0OSwgNzcsIDUzLCA1MSwgMjA0LCAxODQsIDI0MCwgMjAyLCAyMTgsIDIxNSwgMjE0LCAyMzgsIDIxOCwgMjE1LCAyMDUsIAorICAgIDYxLCAyNDAsIDIwMiwgMjE4LCAyMTUsIDIzNiwgMjQ5LCAyMjAsIDI4LCA1MywgODMsIDI0OSwgNzcsIDUzLCA1MSwgMjA0LCAKKyAgICAxODQsIDIxNSwgMjksIDIwMywgMjUzLCAyMTMsIDE0OSwgMjA3LCAyNTEsIDIwMywgMjUzLCAyMTMsIDE0OSwgMjE4LCAyMjEsIAorICAgIDIwOCwgMTYsIDIxNywgMTE3LCAyNDMsIDQ0LCAyNTAsIDE4OSwgMjE4LCAyMjEsIDIwOCwgMTUsIDIxOCwgMjIxLCAyMDgsIAorICAgIDE2LCA3NiwgMjE3LCAzNCwgMTYwLCAxMzgsIDI0MywgNDQsIDI1MCwgMTg5LCAyMTgsIDIyMSwgMjA4LCAxNiwgMjE3LCAzNCwgCisgICAgMTYwLCAxMzgsIDIxNywgMjUsIDIxNywgMTE3LCAyMjgsIDEzMywgMjE3LCAxMTcsIDIyMSwgMjMsIDIzNCwgOTYsIDI0MywgCisgICAgNTUsIDIyMiwgMTI1LCAyMjgsIDY2LCAyMDAsIDE1NSwgMjIwLCAxMzIsIDIxOCwgMjIzLCA1MSwgMjUxLCA3MSwgMywgMjUwLCAKKyAgICAyMzYsIDUxLCAyMDUsIDk4LCAyMjAsIDIxMywgMjI0LCA5OCwgMjUxLCA3OSwgMjIwLCAyMTMsIDIyNCwgOTgsIDIxNywgMzMsIAorICAgIDIyMCwgMjEzLCAyMjgsIDU1LCAyMjAsIDIxMywgMjAzLCAyNDEsIDI0MSwgNjUsIDIxNywgNDMsIDczLCAyMTcsIDQzLCAKKyAgICAyMDgsIDExMCwgMjE3LCA0MywgMjQwLCAyMzUsIDIwNSwgMjMyLCAyNDgsIDc5LCA0OSwgMjE4LCAyMjEsIDIzNywgMTc5LCAKKyAgICAyMTAsIDE2NiwgMjE1LCAxLCA1MSwgMjE4LCAyMjEsIDIzNywgMTc5LCAyMTAsIDE2NiwgMjE1LCAxLCA0OSwgMjEwLCAxNjYsIAorICAgIDIxNSwgMSwgNTEsIDIxMCwgMTY2LCAyMTUsIDEsIDIxMywgMTA1LCAyMDUsIDI0MSwgMjM4LCAxMjEsIDI0MiwgMTk2LCAKKyAgICAyMjQsIDk4LCAyMTcsIDMzLCAyNDIsIDE5NiwgMjI0LCA5OCwgMjUxLCA3OSwgNTMsIDIwOCwgMiwgNTMsIDIwNywgMjExLCAKKyAgICA1MywgMjI4LCA1NSwgNTMsIDIwMywgMjQxLCAyMTUsIDE0MCwgMTYwLCAyNiwgMjE2LCAxMjEsIDEzOCwgMjI0LCAyNDEsIDMsIAorICAgIDI0MCwgMTgyLCAyMzUsIDY3LCAzLCAyNDAsIDE4MiwgMjAyLCAyNDYsIDIyMSwgMzUsIDIyNCwgMjQwLCAyMDIsIDI0NiwgCisgICAgMjIxLCAzNSwgMjM1LCA2NiwgMjI0LCAyNDEsIDE2MCwgMjA1LCAxODYsIDIxNywgMzQsIDIzNSwgNjYsIDIzNSwgNjcsIAorICAgIDE2MCwgMjA1LCAxODYsIDIxNywgMzQsIDIyNCwgMjQwLCAxNjAsIDIwNSwgMTg2LCAyMTcsIDM0LCAyMjQsIDI0MCwgMTYwLCAKKyAgICAyMDUsIDE4NiwgMjE3LCAzNCwgMjM1LCA2NiwgMTYwLCAyMDUsIDE4NiwgMjE3LCAzNCwgMjE1LCAyOCwgMTYwLCAyMDUsIAorICAgIDE4NiwgMjE3LCAzNCwgMjA3LCAyNTAsIDI0MCwgMjAyLCAyMTgsIDIxNSwgMjE1LCAzMiwgMjE3LCAzNCwgMjM4LCAxMjMsIAorICAgIDI0MCwgMjAyLCAyMTgsIDIxNSwgMjA3LCAyNTMsIDIxNywgMzQsIDIzOCwgMTIzLCAyMTgsIDIxNSwgNTIsIDIyOCwgMTMzLCAKKyAgICA3NiwgMjE3LCAzNCwgMTYwLCAxMzgsIDIxOCwgMjE1LCA1MiwgMjE3LCAyNSwgNzYsIDIxNywgMzQsIDE2MCwgMTM4LCA1MiwgCisgICAgMjI4LCAxMzMsIDc2LCAyMTcsIDM0LCAyMTgsIDIxNSwgMTYwLCAxMzgsIDUyLCAyMTcsIDI1LCA3NiwgMjE3LCAzNCwgMjE4LCAKKyAgICAyMTUsIDE2MCwgMTM4LCAyMjQsIDI0MSwgMjQ3LCAyNDcsIDIxOCwgMjE1LCAyMzgsIDExNywgMTM4LCAyMzUsIDY3LCAyNDcsIAorICAgIDI0NywgMjE4LCAyMTUsIDIzOCwgMTE3LCAxMzgsIDIxNSwgMjksIDI0NywgMjQ3LCAyMTgsIDIxNSwgMjM4LCAxMTcsIDEzOCwgCisgICAgMjA3LCAyNTEsIDI0NywgMjQ3LCAyMTgsIDIxNSwgMjM4LCAxMTcsIDEzOCwgMjE4LCAyMTUsIDIxOCwgMjIxLCAyMDgsIDE2LCAKKyAgICAyMTcsIDExNywgMjQwLCAyMDIsIDIxOCwgMjE1LCAyNDMsIDQ2LCAyNTAsIDE4OSwgMjE4LCAyMjEsIDIwOCwgMTUsIDIxOCwgCisgICAgMjE1LCAyMTgsIDIyMSwgMjA4LCAxNiwgNzYsIDIxNywgMzQsIDE2MCwgMTM4LCAyNDAsIDIwMiwgMjE4LCAyMTUsIDI0MywgCisgICAgNDYsIDI1MCwgMTg5LCAyMTgsIDIyMSwgMjA4LCAxNiwgMjE3LCAzNCwgMjM4LCAxMjMsIDgzLCAyMzgsIDE5NSwgMjIxLCAKKyAgICAyMDIsIDIzMywgMTc3LCAyMzgsIDE5NSwgMTE1LCA1MSwgMjQxLCA3MSwgMjM4LCAxOTUsIDEyNywgNTEsIDI0MSwgNzEsIAorICAgIDIzOCwgMTk1LCAyMzgsIDIwMiwgNzYsIDMsIDE2OCwgMjMzLCAxNzcsIDk3LCAyMzgsIDIwMiwgNzYsIDMsIDgzLCAyNDksIAorICAgIDc3LCAyNTAsIDE1NiwgMjM4LCAxNzEsIDc2LCAyMzMsIDE3NywgOTcsIDQsIDIzOCwgMjAyLCA3NiwgMywgODMsIDI0OSwgCisgICAgNzcsIDI1MCwgMTU2LCAyMzgsIDE3MSwgNzYsIDIzMywgMTc3LCA5NywgMjM4LCAyMDIsIDc2LCAzLCA3MywgNTYsIDIzOCwgCisgICAgMjAyLCA3NiwgMywgMjE2LCAyNDYsIDQsIDIzOCwgMjAyLCA3NiwgMywgMjE2LCAyNDYsIDIzOCwgMjAyLCA3NiwgMywgMjAzLCAKKyAgICAyNTEsIDIzOCwgMjAyLCA3NiwgMywgMTIwLCAyMzMsIDE3NywgMjA4LCAzNCwgMjQzLCA0NCwgMywgMTY4LCAyMzMsIDE3NywgCisgICAgOTcsIDI0MywgNDQsIDMsIDgzLCAyNDksIDc3LCAyNTAsIDE1NiwgMjM4LCAxNzEsIDc2LCAyMzMsIDE3NywgOTcsIDQsIAorICAgIDI0MywgNDQsIDMsIDgzLCAyNDksIDc3LCAyNTAsIDE1NiwgMjM4LCAxNzEsIDc2LCAyMzMsIDE3NywgOTcsIDI0MywgNDQsIAorICAgIDMsIDIxNiwgMjQ2LCA0LCAyNDMsIDQ0LCAzLCAyMTYsIDI0NiwgMTk5LCAxNTgsIDIxOCwgMjEzLCAyNDksIDExNCwgMjIyLCAKKyAgICA0MywgMjQxLCA2NiwgNTQsIDIzOCwgMjA0LCA0OCwgMjMzLCAxMDksIDExNSwgMjUwLCAyMDIsIDEyNywgMjUwLCAyMDIsIAorICAgIDIxNCwgMjUxLCAyMTYsIDgsIDIwMSwgNzQsIDIyNCwgMTc2LCA0OSwgMjQ3LCA2NCwgNTEsIDI0NywgNjQsIDQ5LCAyMzcsIAorICAgIDMxLCA1MSwgMjM3LCAzMSwgMjQ4LCA5MywgNTEsIDI0MiwgMjM2LCAyNDgsIDkzLCA0OSwgMjQyLCAyMzYsIDIwNSwgMTU4LCAKKyAgICA1MSwgMjQyLCAyMzYsIDIwNSwgMTU4LCA0OSwgMjQyLCAyMzYsIDIxMywgMTA1LCAyMTgsIDIxNSwgNTQsIDUyLCAyMjQsIAorICAgIDQ5LCAyNTAsIDIzNiwgMjExLCAxODMsIDIxMSwgMTkxLCAyMDYsIDE3NiwgMjEzLCAxNzksIDIxNSwgNzAsIDIyOCwgOTksIAorICAgIDIwMiwgMjIyLCAyMDgsIDE5MywgMjE1LCAxMzQsIDc2LCAyMjgsIDY1LCA1NCwgMjA0LCAxODUsIDIxOCwgMjE1LCA1NCwgCisgICAgMjAxLCA4NCwgMjMzLCAxMTEsIDIwNSwgMTU4LCA0OSwgMjQzLCAxNSwgMjA1LCAxNTgsIDUxLCAyNDMsIDE1LCAyNDgsIDkzLCAKKyAgICA0OSwgMjQzLCAxNSwgMjQ4LCA5MywgNTEsIDI0MywgMTUsIDIwNSwgMTU4LCAxNjcsIDIyOCwgNjksIDI0OCwgOTMsIDE2NywgCisgICAgMjI4LCA2OSwgMjM2LCAxOTYsIDIwOSwgNDgsIDExNSwgMjUwLCAyMDMsIDI0OCwgMjA2LCAxMjAsIDIzMywgMTc3LCAyNDksIAorICAgIDY2LCAyMTcsIDM2LCAyMjYsIDIxNCwgMjM4LCAxMTMsIDIwNSwgMTg2LCAyMDYsIDEwNywgMjEzLCA0NiwgMjAwLCAxOTYsIAorICAgIDIyOCwgMTE4LCAzNSwgMjEzLCAxNzYsIDI0OCwgNzgsIDIyNiwgMjEyLCAyMjUsIDIzLCAyNTEsIDcxLCAxNTksIDIxMywgCisgICAgNDEsIDI1MSwgNzEsIDE1OSwgMjM4LCAxMTMsIDIwNSwgMTg2LCAyMDYsIDEwNywgMjI1LCAyOCwgMjQ4LCAyMTcsIDIxMywgCisgICAgMjYsIDI0MiwgMTYzLCAyNTEsIDEyNSwgMjUwLCAyMTEsIDIwNywgMTE0LCAyMDUsIDE0MywgMjEyLCAxNTQsIDI0MSwgMjgsIAorICAgIDIxNywgMjYsIDI0MywgNTksIDIwNiwgMjM0LCAyMDksIDYxLCAyNDMsIDUsIDI0MywgNCwgMjUxLCAyMiwgMjM2LCAxNzksIAorICAgIDE2LCAyMzMsIDE2LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIwOCwgMTg0LCAyMTQsIDk0LCAyNTEsIDIyLCAyMzYsIDE3OSwgCisgICAgMTYsIDIxNCwgOTUsIDIzOCwgMTIzLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIxNCwgOTUsIDI0MCwgMjQxLCAyNTEsIDIyLCAKKyAgICAyMzYsIDE3OSwgMTYsIDIxNCwgOTUsIDI0MSwgNjQsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjE0LCA5NSwgMjI3LCAxNTMsIAorICAgIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjE0LCA5NSwgMjQ2LCAxNTUsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjQ2LCAKKyAgICAxNTYsIDIwOCwgODQsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjQ2LCAxNTYsIDIyNywgMTUzLCAyNTEsIDIyLCAyMzYsIAorICAgIDE3OSwgMTYsIDIwOSwgNzYsIDE0OCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyNDksIDEyNSwgMTQ4LCAyNTEsIDIyLCAKKyAgICAyMzYsIDE3OSwgMTYsIDIxNCwgOTUsIDIwOSwgNzUsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjE0LCA5NSwgMjQ5LCAxMjQsIAorICAgIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjE0LCA5NSwgMjI0LCAyNDAsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjE0LCA5NSwgCisgICAgMjM1LCA2NiwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCA5OCwgMjAzLCA4MCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCA4NywgCisgICAgMjAzLCA4MCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMTQsIDk1LCA5OCwgNDgsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgCisgICAgMjE0LCA5NSwgODcsIDQ4LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDI0NiwgMTU2LCAyNDksIDEyNCwgMjUxLCAyMiwgMjM2LCAKKyAgICAxNzksIDE2LCAxMjcsIDIwNywgMTgsIDIwMywgMjUxLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDI0MSwgMTM3LCAyMDgsIAorICAgIDg0LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIxNCwgOTUsIDEyNywgMjQ3LCAxMjksIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgCisgICAgMjE0LCA5NSwgMjQxLCAxMzYsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMTI3LCAyMDcsIDE4LCAyMjcsIDE1MywgMjUxLCAKKyAgICAyMiwgMjM2LCAxNzksIDE2LCAxODIsIDIwMywgODAsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjE0LCA5NSwgMTgyLCA0OCwgCisgICAgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAxMTUsIDIwNywgMTgsIDIxNiwgMjQ2LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIAorICAgIDI0MSwgMTQ5LCAyMDgsIDg0LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIxNCwgOTUsIDExNSwgMjQ3LCAxMjksIDI1MSwgCisgICAgMjIsIDIzNiwgMTc5LCAxNiwgMjE0LCA5NSwgMjQxLCAxNDgsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMTE1LCAyMDcsIDE4LCAKKyAgICAyMjcsIDE1MywgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAxOTEsIDIwMywgODAsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgCisgICAgMjE0LCA5NSwgMTkxLCA0OCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMTQsIDYyLCAyMDMsIDI1MSwgMjUxLCAyMiwgMjM2LCAKKyAgICAxNzksIDE2LCAyNDEsIDEzNywgMjAzLCAyNTEsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjQxLCA2NSwgMjAzLCAyNTEsIAorICAgIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjI3LCAxNTQsIDIwMywgMjUxLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDI0NiwgCisgICAgMTU2LCAyMDMsIDI1MSwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAxMTUsIDIxMCwgNiwgMjI3LCAxNTMsIDI1MSwgMjIsIAorICAgIDIzNiwgMTc5LCAxNiwgMjE0LCA2MiwgMjE0LCA5NCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyNDYsIDE1NiwgMjA4LCAKKyAgICAxMDksIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjE0LCA5NSwgMjQ2LCA3OSwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAxMTUsIAorICAgIDIwNywgMTgsIDI0MSwgNzQsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjQxLCAxNDksIDI0MSwgNzQsIDI1MSwgMjIsIDIzNiwgCisgICAgMTc5LCAxNiwgMjA4LCAxMTAsIDI0MSwgNzQsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjI3LCAxNTQsIDI0MSwgNzQsIAorICAgIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjQ2LCAxNTYsIDI0MSwgNzQsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMTI3LCAKKyAgICAyMTAsIDYsIDIwOCwgODQsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgNDksIDIxMCwgNiwgMjA4LCA4NCwgMjUxLCAyMiwgCisgICAgMjM2LCAxNzksIDE2LCAyMDUsIDI0MSwgMjQxLCA3NCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMzUsIDY3LCAyNDEsIDc0LCAKKyAgICAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDI0NiwgNzEsIDE0OCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyNDEsIDE0OSwgCisgICAgMjA1LCAyNDAsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMTk5LCAyNiwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMDgsIDg1LCAKKyAgICAyMDUsIDI0MCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMTAsIDE2OCwgMjAzLCAyNTEsIDI1MSwgMjIsIDIzNiwgMTc5LCAKKyAgICAxNiwgMjE0LCA5NSwgMjE4LCAyMTUsIDIzOCwgMTIzLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIxNCwgOTUsIDIxNCwgNzgsIAorICAgIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMTI3LCAyNDcsIDEzMCwgMjA1LCAyNDAsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgCisgICAgMTE1LCAyNDcsIDEzMCwgMjA1LCAyNDAsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjI4LCA0MSwgMjUxLCAyMiwgMjM2LCAKKyAgICAxNzksIDE2LCAyMTMsIDkwLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIxNywgODMsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgCisgICAgMjUxLCAxMTMsIDIwMywgMjUxLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIzOCwgMTI1LCAyMDMsIDI1MSwgMjUxLCAyMiwgCisgICAgMjM2LCAxNzksIDE2LCAyMjgsIDQyLCAyMDMsIDI1MSwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMTcsIDg0LCAyMDMsIAorICAgIDI1MSwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyNTEsIDExMiwgMjE4LCAyMTUsIDI0NywgNywgODEsIDUxLCAyNTEsIDcxLCAKKyAgICAzLCAxOTEsIDE5OSwgMjcsIDQ4LCAyMDksIDIzMiwgMTc2LCAyNDgsIDc4LCAyNDgsIDIzMSwgOTksIDgzLCAyMjQsIDE3NywgCisgICAgMywgMTAxLCAyNDAsIDE4MiwgMjI4LCA3NSwgOTksIDI0MywgMzksIDIwMywgMjQ5LCA5OSwgMjQxLCAxLCAyMDMsIDI0OSwgCisgICAgOTksIDIzOCwgMTgzLCA5OSwgMjQzLCA3NCwgOTksIDY0LCA1MiwgMywgMjQ3LCA1NiwgODMsIDIyNCwgMTc2LCAyMzgsIAorICAgIDE1NSwgOTksIDI1MSwgMTA0LCAyMjYsIDIxNSwgOTksIDIzNCwgMTA5LCA5OSwgNDQsIDIzMywgMTc3LCAyNDksIDc3LCAzLCAKKyAgICAyMTgsIDIxMiwgNDQsIDIwNSwgOTksIDIzOSwgMTY3LCAyNDgsIDQ2LCAyNDYsIDE1NiwgMywgMjE4LCAyMTgsIDQ4LCAyMDMsIAorICAgIDI0NywgOTksIDIyMSwgOTIsIDk5LCAyMzMsIDI5LCA5OSwgMjE3LCA1MiwgMjM0LCAyNDYsIDk5LCAyMTcsIDUyLCAyMjUsIAorICAgIDE5MSwgOTksIDIxNiwgOTgsIDk5LCAyMTYsIDk3LCA5OSwgMjQxLCAxMCwgMjQyLCAxOTQsIDE2LCAyMzYsIDI0MiwgMTA1LCAKKyAgICAyMDksIDIxLCA5OSwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMTQsIDk0LCAyNDEsIDE2OCwgMjEwLCAxNTUsIDIyNiwgCisgICAgMjE1LCA5OSwgMjE1LCAxNiwgMjE2LCAxOTUsIDIyMCwgMiwgMjE2LCAxOTUsIDIxNSwgMTEsIDIxMSwgMjEwLCA5OSwgMjQ2LCAKKyAgICAxMjcsIDIxMSwgMjEwLCA5OSwgNDksIDIxNiwgMTE2LCAyMDMsIDIyNSwgMTE3LCA0OSwgMjE2LCAxMTYsIDIzOCwgMzEsIAorICAgIDQ5LCAyMTYsIDExNiwgMjI0LCA1NCwgMTE3LCA1MSwgMjE2LCAxMTYsIDIwMywgMjI1LCAxMTcsIDUxLCAyMTYsIDExNiwgCisgICAgMjM4LCAzMSwgNTEsIDIxNiwgMTE2LCAyMjQsIDU0LCAxMTcsIDQ5LCA1MiwgMjQ4LCA3MCwgMjAzLCAyMjUsIDI0MywgMTUsIAorICAgIDQ5LCA1MiwgMjQ4LCA3MCwgMjM4LCAzMSwgNDksIDUyLCAyNDgsIDcwLCAyMjQsIDU0LCAyNDMsIDE1LCA1MSwgNTIsIDI0OCwgCisgICAgNzAsIDIwMywgMjI1LCAyNDMsIDE1LCA1MSwgNTIsIDI0OCwgNzAsIDIzOCwgMzEsIDUxLCA1MiwgMjQ4LCA3MCwgMjI0LCAKKyAgICA1NCwgMjQzLCAxNSwgNDksIDI0MiwgMTk2LCAyNDgsIDcwLCAyMDMsIDIyNSwgMTE3LCA0OSwgMjQyLCAxOTYsIDI0OCwgNzAsIAorICAgIDEwMSwgMjE1LCAxOTYsIDQ5LCAyNDIsIDE5NiwgMjQ4LCA3MCwgMjI0LCA1NCwgMTE3LCAyNDIsIDE5NiwgMjQ4LCA3MCwgCisgICAgMjM4LCAzMSwgNTEsIDI0MiwgMTk2LCAyNDgsIDcwLCAyMDMsIDIyNSwgMTE3LCA1MSwgMjQyLCAxOTYsIDI0OCwgNzAsIAorICAgIDEwMSwgMjE1LCAxOTYsIDUxLCAyNDIsIDE5NiwgMjQ4LCA3MCwgMjI0LCA1NCwgMTE3LCAyMjgsIDcwLCAyMzgsIDMxLCAKKyAgICAyMzMsIDE3NywgMjI0LCAxNzcsIDIzOCwgMzEsIDIwMywgMjI1LCA0OSwgMjE3LCAzNCwgMjI0LCA1NCwgNTEsIDI0MiwgCisgICAgMTk2LCAyNDgsIDcwLCAyMTEsIDE5MiwgMjAzLCAyMjUsIDUxLCAyMTcsIDM0LCAyMjQsIDU0LCA0OSwgMjQyLCAxOTYsIAorICAgIDI0OCwgNzAsIDIxMSwgMTkyLCAyMDcsIDIzMiwgMjA1LCAxNTcsIDIwNywgMjMyLCAyNDgsIDkyLCAyMDUsIDE1OCwgNTIsIAorICAgIDE1OSwgMjQ4LCA5MywgNTIsIDE1OSwgMjQ4LCA5MywgNTIsIDI0OCwgNzAsIDExOSwgMjA1LCAxNTgsIDUyLCAxNTksIDQyLCAKKyAgICAxNiwgMjQ4LCA5MiwgNDksIDgzLCAxMDAsIDIyNCwgMTc2LCA1MSwgODMsIDEwMCwgMjI0LCAxNzYsIDIzMywgMTc3LCAyMTEsIAorICAgIDIyOCwgMjI0LCAxNzUsIDIzMywgMTc3LCAyMTEsIDIyOCwgMjI0LCAxNzQsIDIzMywgMTc3LCAyMTEsIDIyOCwgMjI0LCAKKyAgICAxNzMsIDIzMywgMTc3LCAyMTEsIDIyOCwgMjI0LCAxNzIsIDI0MSwgMTI4LCAxNiwgMTYyLCA4MywgMjYsIDIwNSwgMTU4LCAKKyAgICAyMTMsIDQ2LCAyNDEsIDEyOCwgMTYsIDE2MiwgODMsIDI2LCAyNDgsIDkzLCAyMTMsIDQ2LCAyNDEsIDEyOCwgMTYsIDE2MiwgCisgICAgODMsIDMsIDI0NiwgMTU1LCAyNDEsIDEyOCwgMTYsIDE2MiwgMTI3LCAyNiwgMjMzLCAxNzcsIDMsIDI0NiwgMTU1LCAyNDEsIAorICAgIDEyOCwgMTYsIDE2MiwgMTE1LCAyNiwgMjMzLCAxNzcsIDMsIDI0NiwgMTU1LCAyNDEsIDEyOCwgMTYsIDE2MiwgODMsIDMsIAorICAgIDIwNSwgOTgsIDI0MSwgMTI4LCAxNiwgMTYyLCAxMjcsIDI2LCAyMzMsIDE3NywgMywgMjA1LCA5OCwgMjQxLCAxMjgsIDE2LCAKKyAgICAxNjIsIDExNSwgMjYsIDIzMywgMTc3LCAzLCAyMDUsIDk4LCAyNDEsIDEyOCwgMTYsIDE2MiwgODMsIDI2LCAyMDEsIDc3LCAKKyAgICAyNDEsIDEyOCwgMTYsIDE2MiwgMTI3LCAyNiwgMjMzLCAxNzcsIDMsIDIwMSwgNzcsIDI0MSwgMTI4LCAxNiwgMTYyLCAxMTUsIAorICAgIDI2LCAyMzMsIDE3NywgMywgMjAxLCA3NywgMjQxLCAxMjgsIDE2LCAxNjIsIDEyNywgMjYsIDIzMywgMTc2LCAyNDEsIDEyOCwgCisgICAgMTYsIDE2MiwgMTE1LCAyNiwgMjMzLCAxNzYsIDI0MSwgMTI4LCAxNiwgMTYyLCA4MywgMjYsIDIwNSwgMTU4LCAyMjUsIDI4LCAKKyAgICAyNDEsIDEyOCwgMTYsIDE2MiwgODMsIDI2LCAyNDgsIDkzLCAyMjUsIDI4LCA1MiwgMjM2LCAyNTUsIDIxMywgMTEwLCA5OSwgCisgICAgMjM4LCAyMTgsIDk5LCA4MywgMjI0LCAxNzcsIDIzOCwgMzEsIDIyMiwgMTQsIDI0OCwgNTcsIDIyMiwgMTQsIDE2OCwgMTE5LCAKKyAgICAyMDksIDI0OSwgMjIyLCAxNCwgMjA5LCAyNTAsIDExOSwgMjI0LCA4OSwgMjIyLCAxNCwgMTY4LCAxMTksIDEyMCwgMjA5LCAKKyAgICAyMzUsIDIyMiwgMTQsIDEyMCwgMjA5LCAyMzYsIDExOSwgMjI0LCA4OSwgMjIyLCAxNCwgMTIwLCAyMDksIDIzNiwgMjI3LCAKKyAgICAxNjIsIDIyMiwgMTQsIDIwNSwgNzksIDIyMiwgMTQsIDIwNiwgMTM4LCAyMjIsIDE0LCAyMTYsIDM1LCAyMzksIDE4LCAyMzUsIAorICAgIDU5LCAyMzYsIDE3MywgMjA1LCAxNTgsIDIxNiwgMTE1LCAyNDgsIDkzLCAyMTYsIDExNSwgMjA1LCAxNTgsIDI0MiwgMTk2LCAKKyAgICAxNTksIDI0OCwgOTMsIDI0MiwgMTk2LCAxNTksIDIwNSwgMTU4LCAyMDUsIDE0NiwgMjEwLCA1NSwgMTU5LCAyNDgsIDkzLCAKKyAgICAyMDUsIDE0NiwgMjEwLCA1NSwgMTU5LCA2NCwgMjA1LCAxMTQsIDI0OCwgMjE3LCAyMTMsIDI3LCAzLCAyNDYsIDE1NSwgCisgICAgMjA4LCA2NiwgMjM3LCA0MiwgMjUxLCAyNTUsIDI0MiwgMTkzLCAyMzgsIDIwMywgMjI4LCA1NSwgMjQxLCAxNjgsIDIzOCwgCisgICAgMzUsIDk5LCA2MywgMjEzLCA0MSwgNTMsIDIwNSwgOTgsIDYzLCAyMjUsIDIzLCA1MywgMjA1LCA5OCwgNjMsIDIwMywgMjI3LCAKKyAgICA1MywgMjA1LCA5OCwgNjMsIDIzOSwgMTY2LCA1MywgMjA1LCA5OCwgNjMsIDIxMywgNDEsIDUzLCAyMDUsIDk5LCAzLCA4MywgCisgICAgMTQ4LCA2MywgMjI1LCAyMywgNTMsIDIwNSwgOTksIDMsIDgzLCAxNDgsIDYzLCAyMTMsIDQxLCAyMDUsIDk5LCAzLCA1MywgCisgICAgODMsIDE0OCwgMjUxLCAxNDYsIDI0NiwgMTEzLCAyMDgsIDczLCAyMDUsIDIzMywgMjQ2LCAxMTMsIDIzMywgMTEyLCAzLCAKKyAgICAyMzcsIDIyLCAyMTIsIDExLCA2MywgMjIyLCA2NiwgMjI1LCAyMywgMjA1LCA5OCwgNjMsIDIyMiwgNjYsIDIxMywgNDEsIAorICAgIDIwNSwgOTgsIDYzLCAyMjIsIDY2LCAyMDMsIDIyNywgMjA1LCA5OCwgNjMsIDIyMiwgNjYsIDIzOSwgMTY2LCAyMDUsIDk4LCAKKyAgICA1MywgODMsIDE0OCwgNjMsIDUyLCAzNiwgMjA4LCA3NiwgNjMsIDI0NiwgMTU2LCAzNiwgMjEzLCAxODAsIDIxNSwgNTIsIAorICAgIDk5LCAyMTUsIDUyLCAyMTcsIDc3LCA5OSwgMjE1LCA1MiwgMjE3LCA3OSwgOTksIDIxNSwgNTIsIDIwOSwgNzIsIDk5LCAxNiwgCisgICAgMzYsIDIxOCwgOTcsIDE2LCAzNiwgMjA4LCAxMDUsIDc2LCAyMzQsIDEzMywgMTYsIDM2LCAyMDgsIDEwNSwgNzYsIDIwNiwgCisgICAgMTI2LCAxNiwgMzYsIDIzOCwgMTcxLCA3NiwgMjA2LCAxMjYsIDE2LCAzNiwgMjM4LCAxNzEsIDc2LCAyMDUsIDExOCwgMTYsIAorICAgIDM2LCAyMzgsIDE1OCwgMTYsIDM2LCAyNTEsIDI0MywgMTYsIDM2LCAyNDgsIDIzMCwgMTYsIDM2LCAyNDksIDEyMywgMTYsIAorICAgIDM2LCAyMzMsIDE3NywgMjA3LCAxOSwgMTYsIDM2LCAyMjQsIDE3NywgMjM3LCAxMzgsIDE2LCAzNiwgODMsIDIwNywgMTksIAorICAgIDE2LCAzNiwgMjM2LCAyNDIsIDIzNywgMTM4LCAxNiwgMzYsIDI0NywgMTIxLCAyMTMsIDEwOSwgMTYsIDM2LCAyMTAsIDI5LCAKKyAgICAyMTYsIDI1NCwgMTYsIDM2LCAyMTAsIDI5LCAyMjgsIDExNywgMTYsIDM2LCAyNDEsIDIzOSwgMjI0LCAxNjcsIDIzOCwgOTYsIAorICAgIDE2LCAzNiwgMjQxLCAxMDcsIDI0MywgMzQsIDEwMiwgMTYsIDM2LCAyNDEsIDEwNywgMjQzLCAzNCwgMTA1LCAxNiwgMzYsIAorICAgIDI0MSwgMTA3LCAyNDMsIDM0LCAxNDcsIDE2LCAzNiwgMjQxLCAxMDcsIDI0MywgMzQsIDE0OSwgMTYsIDM2LCAxODksIDI1MSwgCisgICAgMjQzLCAxNiwgMzYsIDIwNywgMTA5LCAyMjgsIDE4MCwgMTYsIDM2LCAyMzgsIDE3MSwgNzYsIDIwNSwgMTE5LCAyNDgsIAorICAgIDEzNCwgMTYsIDM2LCAyNDcsIDE1NiwgMTYsIDM2LCAyMzgsIDE3MSwgNzYsIDIyMiwgNjUsIDE2LCAzNiwgMjA4LCAwLCAxNiwgCisgICAgMzYsIDIzOCwgOTYsIDE2LCAzNiwgMjM3LCA5NywgMjEwLCAxNTQsIDE2LCAzNiwgMjM1LCA1OCwgMjEwLCAxNTQsIDE2LCAKKyAgICAzNiwgMjEzLCAxODEsIDIxMCwgMTU0LCAxNiwgMzYsIDIwMywgMjQwLCAyMTAsIDE1NCwgMTYsIDM2LCAyMDgsIDI0NCwgMTYsIAorICAgIDM2LCAyNDEsIDE0NiwgMjQ4LCAxMzgsIDk5LCAxNzYsIDI0OCwgNzgsIDE2LCAzNiwgMjIwLCA1LCAxNiwgMzYsIDI0MSwgCisgICAgMTQ3LCAyMzYsIDI0MiwgMTA1LCAxNiwgMzYsIDIwOCwgMSwgMjM2LCAyNDIsIDEwNSwgMjE3LCAxMzEsIDExNywgMjE3LCAKKyAgICAxMzEsIDI0NywgMzIsIDIxNywgMTMxLCAyMzYsIDI0NSwgMjE3LCAxMzEsIDIyOCwgNTAsIDIzNiwgMjQ1LCAyMTcsIDEzMSwgCisgICAgMjQ4LCAyMjcsIDI0OCwgMzMsIDIxNywgMTMxLCAyNDgsIDg2LCAyMDYsIDcsIDIxNywgMTMxLCAyNDgsIDY3LCAyNDksIDgyLCAKKyAgICAyMzIsIDIyMiwgMjE3LCAxMzEsIDI1MSwgOTEsIDc2LCAyNDcsIDYsIDIxNywgMTMxLCAyNDEsIDI0NCwgMjE3LCAxMzEsIAorICAgIDI0MiwgMTgyLCAyNTEsIDI0NywgMjE4LCA5NSwgMjE3LCAxMzEsIDUzLCAyNDksIDEyNCwgNDQsIDE3LCAxMDIsIDQ0LCAxNywgCisgICAgMTA1LCA0NCwgMTcsIDE0NywgNDQsIDE3LCAxNDksIDQ0LCAxNywgMTY0LCA0NCwgMTcsIDE4NywgNDQsIDE3LCAyMTAsIAorICAgIDEzNSwgNDQsIDE3LCAxOTIsIDQ0LCAxNywgMjE5LCAxMTMsIDQ0LCA0MSwgMjA2LCAxNjYsIDQ0LCA0MSwgMjM4LCAxOTksIAorICAgIDQ0LCA0MSwgMjA0LCAxNjQsIDQ0LCA0MSwgMjA2LCA2OSwgNDQsIDQxLCAyMzYsIDIyMywgNDQsIDQxLCAyMzcsIDEwOCwgCisgICAgNDQsIDQxLCAyMDksIDEwMCwgNDQsIDQxLCAyMTAsIDEzMiwgNDQsIDQxLCAyMzgsIDIyOSwgNDQsIDQxLCAyMTksIDExMCwgCisgICAgNDQsIDQxLCAyMDQsIDE1OSwgMTA2LCAxNywgMTAyLCAxMDYsIDE3LCAxMDUsIDEwNiwgMTcsIDE0NywgMTA2LCAxNywgMTQ5LCAKKyAgICAxMDYsIDE3LCAxNjQsIDEwNiwgMTcsIDE4NywgMTA2LCAxNywgMjEwLCAxMzUsIDEwNiwgMTcsIDE5MiwgMTA2LCAxNywgCisgICAgMjE5LCAxMTMsIDEwNiwgNDEsIDIwNiwgMTY2LCAxMDYsIDQxLCAyMzgsIDE5OSwgMTA2LCA0MSwgMjA0LCAxNjQsIDEwNiwgCisgICAgNDEsIDIwNiwgNjksIDEwNiwgNDEsIDIzNiwgMjIzLCAxMDYsIDQxLCAyMzcsIDEwOCwgMTA2LCA0MSwgMjA5LCAxMDAsIAorICAgIDEwNiwgNDEsIDIxMCwgMTMyLCAxMDYsIDQxLCAyMzgsIDIyOSwgMTA2LCA0MSwgMjE5LCAxMTAsIDEwNiwgNDEsIDIwNCwgCisgICAgMTU5LCAxNywgMTEyLCAyMzYsIDE4MywgMjA4LCA3NiwgMTcsIDEyMCwgMjM2LCAxODMsIDIwOCwgNzYsIDE3LCAxMjYsIAorICAgIDIzNiwgMTgzLCAyMDgsIDc2LCAxNywgMjM2LCAyMjksIDIzNiwgMTgzLCAyMDgsIDc2LCAxNywgMjM3LCA2MSwgMjM2LCAKKyAgICAxODMsIDIwOCwgNzYsIDE3LCAyMDksIDEwNiwgMjM2LCAxODMsIDIwOCwgNzYsIDE3LCAyMTAsIDEzNiwgMjM2LCAxODMsIAorICAgIDIwOCwgNzYsIDE3LCAyMzgsIDIzMiwgMjM2LCAxODMsIDIwOCwgNzYsIDE3LCAyMTksIDExNCwgMjM2LCAxODMsIDIwOCwgCisgICAgNzYsIDQxLCAyMDYsIDE2NywgMjM2LCAxODMsIDIwOCwgNzYsIDQxLCAyMzgsIDIwMCwgMjM2LCAxODMsIDIwOCwgNzYsIDQxLCAKKyAgICAyMDQsIDE2NSwgMjM2LCAxODMsIDIwOCwgNzYsIDQxLCAyMDYsIDcwLCAyMzYsIDE4MywgMjA4LCA3NiwgNDEsIDIzNiwgCisgICAgMjI0LCAyMzYsIDE4MywgMjA4LCA3NiwgNDEsIDIzNywgMTA5LCAyMzYsIDE4MywgMjA4LCA3NiwgNDEsIDIwOSwgMTAxLCAKKyAgICAyMzYsIDE4MywgMjA4LCA3NiwgNDEsIDIxMCwgMTMzLCAyMzYsIDE4MywgMjA4LCA3NiwgNDEsIDIzOCwgMjMwLCAyMzYsIAorICAgIDE4MywgMjA4LCA3NiwgNDEsIDIxOSwgMTExLCAyMzYsIDE4MywgMjA4LCA3NiwgNDEsIDIwNCwgMTYwLCAyMzYsIDE4MywgCisgICAgMjA4LCA3NiwgMTA2LCA4LCA0LCAxLCA2MiwgMTA2LCA4LCA0LCAxLCAyNTAsIDEwMywgMTA2LCA4LCA0LCAxLCAyNDcsIAorICAgIDIyMywgMTA2LCA4LCA0LCAxLCAyNDIsIDE1MywgMTA2LCA4LCA0LCAxLCA3MiwgMTA2LCA4LCA0LCAxLCAyMzgsIDUsIDEwNiwgCisgICAgOCwgNCwgMSwgMjM2LCAxNTYsIDEwNiwgOCwgNCwgMSwgMjM0LCAyNDcsIDEwNiwgOCwgNCwgMSwgNzAsIDEwNiwgOCwgNCwgCisgICAgMSwgMjI3LCAyNTEsIDEwNiwgOCwgNCwgMSwgMjI3LCAxMTgsIDEwNiwgOCwgNCwgMSwgMTU2LCAxMDYsIDgsIDQsIDEsIAorICAgIDIyMywgMjQzLCAxMDYsIDgsIDQsIDEsIDIyMCwgMjE0LCAxMDYsIDgsIDQsIDEsIDc0LCAxMDYsIDgsIDQsIDEsIDIxNiwgCisgICAgMjI2LCAxMDYsIDgsIDQsIDEsIDIxNCwgMTY3LCAxMDYsIDgsIDQsIDEsIDE0NiwgMTA2LCA4LCA0LCAxLCAyMTIsIDEyMiwgCisgICAgMTA2LCA4LCA0LCAxLCAyMDcsIDgzLCAxMDYsIDgsIDQsIDEsIDY2LCAxMDYsIDgsIDQsIDEsIDIwMywgMTY4LCAxMDYsIDgsIAorICAgIDQsIDEsIDIwMSwgMTQ3LCAxMDYsIDgsIDQsIDEsIDIwMCwgMTk1LCAxMDYsIDgsIDQsIDEsIDIwMCwgMTIzLCAxMDYsIDgsIAorICAgIDQsIDEsIDE5OSwgMTU3LCA0NCwgOCwgNiwgMSwgNjIsIDQ0LCA4LCA2LCAxLCAyNTAsIDEwMywgNDQsIDgsIDYsIDEsIDI0NywgCisgICAgMjIzLCA0NCwgOCwgNiwgMSwgMjQyLCAxNTMsIDQ0LCA4LCA2LCAxLCA3MiwgNDQsIDgsIDYsIDEsIDIzOCwgNSwgNDQsIDgsIAorICAgIDYsIDEsIDIzNiwgMTU2LCA0NCwgOCwgNiwgMSwgMjM0LCAyNDcsIDQ0LCA4LCA2LCAxLCA3MCwgNDQsIDgsIDYsIDEsIDIyNywgCisgICAgMjUxLCA0NCwgOCwgNiwgMSwgMjI3LCAxMTgsIDQ0LCA4LCA2LCAxLCAxNTYsIDQ0LCA4LCA2LCAxLCAyMjMsIDI0MywgNDQsIAorICAgIDgsIDYsIDEsIDIyMCwgMjE0LCA0NCwgOCwgNiwgMSwgNzQsIDQ0LCA4LCA2LCAxLCAyMTYsIDIyNiwgNDQsIDgsIDYsIDEsIAorICAgIDIxNCwgMTY3LCA0NCwgOCwgNiwgMSwgMTQ2LCA0NCwgOCwgNiwgMSwgMjEyLCAxMjIsIDQ0LCA4LCA2LCAxLCAyMDcsIDgzLCAKKyAgICA0NCwgOCwgNiwgMSwgNjYsIDQ0LCA4LCA2LCAxLCAyMDMsIDE2OCwgNDQsIDgsIDYsIDEsIDIwMSwgMTQ3LCA0NCwgOCwgNiwgCisgICAgMSwgMjAwLCAxOTUsIDQ0LCA4LCA2LCAxLCAyMDAsIDEyMywgNDQsIDgsIDYsIDEsIDE5OSwgMTU3LCA0NCwgOCwgNCwgMSwgCisgICAgNjIsIDQ0LCA4LCA0LCAxLCAyNTAsIDEwMywgNDQsIDgsIDQsIDEsIDI0NywgMjIzLCA0NCwgOCwgNCwgMSwgMjQyLCAxNTMsIAorICAgIDQ0LCA4LCA0LCAxLCA3MiwgNDQsIDgsIDQsIDEsIDIzOCwgNSwgNDQsIDgsIDQsIDEsIDIzNiwgMTU2LCA0NCwgOCwgNCwgMSwgCisgICAgMjM0LCAyNDcsIDQ0LCA4LCA0LCAxLCA3MCwgNDQsIDgsIDQsIDEsIDIyNywgMjUxLCA0NCwgOCwgNCwgMSwgMjI3LCAxMTgsIAorICAgIDQ0LCA4LCA0LCAxLCAxNTYsIDQ0LCA4LCA0LCAxLCAyMjMsIDI0MywgNDQsIDgsIDQsIDEsIDIyMCwgMjE0LCA0NCwgOCwgNCwgCisgICAgMSwgNzQsIDQ0LCA4LCA0LCAxLCAyMTYsIDIyNiwgNDQsIDgsIDQsIDEsIDIxNCwgMTY3LCA0NCwgOCwgNCwgMSwgMTQ2LCAKKyAgICA0NCwgOCwgNCwgMSwgMjEyLCAxMjIsIDQ0LCA4LCA0LCAxLCAyMDcsIDgzLCA0NCwgOCwgNCwgMSwgNjYsIDQ0LCA4LCA0LCAKKyAgICAxLCAyMDMsIDE2OCwgNDQsIDgsIDQsIDEsIDIwMSwgMTQ3LCA0NCwgOCwgNCwgMSwgMjAwLCAxOTUsIDQ0LCA4LCA0LCAxLCAKKyAgICAyMDAsIDEyMywgNDQsIDgsIDQsIDEsIDE5OSwgMTU3LCA0NCwgMTcsIDE5OSwgODEsIDE4OSwgNDQsIDQxLCAyMzgsIDE5OSwgCisgICAgMTg5LCA0NCwgNDEsIDIwNCwgMTY0LCAxODksIDQ0LCA0MSwgMjA2LCA2OSwgMTg5LCA0NCwgNDEsIDIzNiwgMjIzLCAxODksIAorICAgIDQ0LCA0MSwgMjM3LCAxMDgsIDE4OSwgNDQsIDQxLCAyMDksIDEwMCwgMTg5LCA0NCwgNDEsIDIxMCwgMTMyLCAxODksIDQ0LCAKKyAgICA0MSwgMjM4LCAyMjksIDE4OSwgNDQsIDQxLCAyMTksIDExMCwgMTg5LCA0NCwgNDEsIDIwNCwgMTU5LCA1MywgNDQsIDE3LCAKKyAgICAxMDIsIDUzLCA0NCwgMTcsIDEwNSwgNTMsIDQ0LCAxNywgMTQ3LCA1MywgNDQsIDE3LCAxNDksIDUzLCA0NCwgMTcsIDE2NCwgCisgICAgNTMsIDQ0LCAxNywgMTg3LCA1MywgNDQsIDE3LCAyMTAsIDEzNSwgNTMsIDQ0LCAxNywgMTkyLCA1MywgNDQsIDE3LCAyMTksIAorICAgIDExMywgNTMsIDQ0LCA0MSwgMjA2LCAxNjYsIDE4OSwgNDQsIDE3LCAxOTksIDgxLCAxMDAsIDEyMSwgMTYyLCAyMzMsIDE3NiwgCisgICAgMTAwLCAxMjEsIDgwLCAyMzMsIDE3NiwgMTAwLCAxMjEsIDE2MiwgMjAzLCA0MiwgMTAwLCAxMjEsIDgwLCAyMDMsIDQyLCAKKyAgICAxMDAsIDEyMSwgMTYyLCAyMDUsIDgzLCAyNDEsIDI0NSwgMjMzLCAxNzYsIDEwMCwgMTIxLCA4MCwgMjA1LCA4MywgMjQxLCAKKyAgICAyNDUsIDIzMywgMTc2LCAxMDAsIDEyMSwgMTYyLCAyMDUsIDgzLCAyNDEsIDI0NSwgMjAzLCA0MiwgMTAwLCAxMjEsIDgwLCAKKyAgICAyMDUsIDgzLCAyNDEsIDI0NSwgMjAzLCA0MiwgMTAwLCAxMjEsIDE2MiwgMjE0LCA5MCwgMjQxLCAyNDUsIDIzMywgMTc2LCAKKyAgICAxMDAsIDEyMSwgODAsIDIxNCwgOTAsIDI0MSwgMjQ1LCAyMzMsIDE3NiwgMTAwLCAxMjEsIDE2MiwgMjE0LCA5MCwgMjQxLCAKKyAgICAyNDUsIDIwMywgNDIsIDEwMCwgMTIxLCA4MCwgMjE0LCA5MCwgMjQxLCAyNDUsIDIwMywgNDIsIDEwMCwgMTIxLCAxNjIsIAorICAgIDEyNywgMjYsIDIxMywgNDYsIDEwMCwgMTIxLCAxMjcsIDE2MiwgMjYsIDUxLCAyMzQsIDEyMSwgMTAwLCAxMjEsIDEyNywgCisgICAgODAsIDI2LCA1MSwgMjI0LCAxOTYsIDEwMCwgMTIxLCA4MCwgMTI3LCAyNiwgMjEzLCA0NiwgMTAwLCAxMjEsIDE2MiwgMTI3LCAKKyAgICAyNiwgMjI1LCAyOCwgMTAwLCAxMjEsIDEyNywgMTYyLCAyNiwgNDksIDIzNCwgMTIxLCAxMDAsIDEyMSwgMTI3LCA4MCwgMjYsIAorICAgIDQ5LCAyMjQsIDE5NiwgMTAwLCAxMjEsIDgwLCAxMjcsIDI2LCAyMjUsIDI4LCAxMDAsIDEyMSwgMTYyLCAxMTUsIDI2LCAKKyAgICAyMTMsIDQ2LCAxMDAsIDEyMSwgMTE1LCAxNjIsIDI2LCA1MSwgMjM0LCAxMjEsIDEwMCwgMTIxLCAxMTUsIDgwLCAyNiwgNTEsIAorICAgIDIyNCwgMTk2LCAxMDAsIDEyMSwgODAsIDExNSwgMjYsIDIxMywgNDYsIDEwMCwgMTIxLCAxNjIsIDExNSwgMjYsIDIyNSwgCisgICAgMjgsIDEwMCwgMTIxLCAxMTUsIDE2MiwgMjYsIDQ5LCAyMzQsIDEyMSwgMTAwLCAxMjEsIDExNSwgODAsIDI2LCA0OSwgMjI0LCAKKyAgICAxOTYsIDEwMCwgMTIxLCA4MCwgMTE1LCAyNiwgMjI1LCAyOCwgMTAwLCAxMjEsIDE2MiwgODMsIDI2LCAyMTMsIDQ2LCAxMDAsIAorICAgIDEyMSwgODMsIDE2MiwgMjYsIDUxLCAyMzQsIDEyMSwgMTAwLCAxMjEsIDExNSwgODAsIDI2LCA1MSwgMTI3LCAyMjQsIDE5NiwgCisgICAgMTAwLCAxMjEsIDEyNywgODAsIDI2LCA1MSwgMTE1LCAyMjQsIDE5NiwgMTAwLCAxMjEsIDgzLCA4MCwgMjYsIDUxLCAyMjQsIAorICAgIDE5NiwgMTAwLCAxMjEsIDEyNywgMTYyLCAyNiwgNTEsIDExNSwgMjM0LCAxMjEsIDEwMCwgMTIxLCAxMTUsIDE2MiwgMjYsIAorICAgIDUxLCAxMjcsIDIzNCwgMTIxLCAxMDAsIDEyMSwgODAsIDgzLCAyNiwgMjEzLCA0NiwgMTAwLCAxMjEsIDE2MiwgODMsIDI2LCAKKyAgICAyMjUsIDI4LCAxMDAsIDEyMSwgODMsIDE2MiwgMjYsIDQ5LCAyMzQsIDEyMSwgMTAwLCAxMjEsIDExNSwgODAsIDI2LCA0OSwgCisgICAgMTI3LCAyMjQsIDE5NiwgMTAwLCAxMjEsIDEyNywgODAsIDI2LCA0OSwgMTE1LCAyMjQsIDE5NiwgMTAwLCAxMjEsIDgzLCAKKyAgICA4MCwgMjYsIDQ5LCAyMjQsIDE5NiwgMTAwLCAxMjEsIDEyNywgMTYyLCAyNiwgNDksIDExNSwgMjM0LCAxMjEsIDEwMCwgCisgICAgMTIxLCAxMTUsIDE2MiwgMjYsIDQ5LCAxMjcsIDIzNCwgMTIxLCAxMDAsIDEyMSwgODAsIDgzLCAyNiwgMjI1LCAyOCwgMTAwLCAKKyAgICAxMjEsIDE2MiwgMTI3LCAyNiwgMjMzLCAxNzYsIDEwMCwgMTIxLCA0OSwgODAsIDI2LCA1MSwgMTI3LCAyMjQsIDE5NiwgCisgICAgMTAwLCAxMjEsIDUxLCA4MCwgMjYsIDQ5LCAxMjcsIDIyNCwgMTk2LCAxMDAsIDEyMSwgMTI3LCAxNjIsIDI2LCAyMzMsIAorICAgIDE3NywgMjM0LCAxMjEsIDEwMCwgMTIxLCAxMjcsIDgwLCAyNiwgMjMzLCAxNzcsIDIyNCwgMTk2LCAxMDAsIDEyMSwgNTEsIAorICAgIDE2MiwgMjYsIDQ5LCAxMjcsIDIzNCwgMTIxLCAxMDAsIDEyMSwgNDksIDE2MiwgMjYsIDUxLCAxMjcsIDIzNCwgMTIxLCAKKyAgICAxMDAsIDEyMSwgODAsIDEyNywgMjYsIDIzMywgMTc2LCAxMDAsIDEyMSwgMTYyLCAxMTUsIDI2LCAyMzMsIDE3NiwgMTAwLCAKKyAgICAxMjEsIDQ5LCA4MCwgMjYsIDUxLCAxMTUsIDIyNCwgMTk2LCAxMDAsIDEyMSwgNTEsIDgwLCAyNiwgNDksIDExNSwgMjI0LCAKKyAgICAxOTYsIDEwMCwgMTIxLCAxMTUsIDE2MiwgMjYsIDIzMywgMTc3LCAyMzQsIDEyMSwgMTAwLCAxMjEsIDExNSwgODAsIDI2LCAKKyAgICAyMzMsIDE3NywgMjI0LCAxOTYsIDEwMCwgMTIxLCA1MSwgMTYyLCAyNiwgNDksIDExNSwgMjM0LCAxMjEsIDEwMCwgMTIxLCAKKyAgICA0OSwgMTYyLCAyNiwgNTEsIDExNSwgMjM0LCAxMjEsIDEwMCwgMTIxLCA4MCwgMTE1LCAyNiwgMjMzLCAxNzYsIDEwMCwgCisgICAgMTIxLCAxNjIsIDgzLCAyNiwgMjMzLCAxNzYsIDEwMCwgMTIxLCA0OSwgODAsIDI2LCA1MSwgODMsIDIyNCwgMTk2LCAxMDAsIAorICAgIDEyMSwgNTEsIDgwLCAyNiwgNDksIDgzLCAyMjQsIDE5NiwgMTAwLCAxMjEsIDgzLCAxNjIsIDI2LCAyMzMsIDE3NywgMjM0LCAKKyAgICAxMjEsIDEwMCwgMTIxLCAxMTUsIDgwLCAyNiwgMTI3LCAyMzMsIDE3NywgMjI0LCAxOTYsIDEwMCwgMTIxLCAxMjcsIDgwLCAKKyAgICAyNiwgMTE1LCAyMzMsIDE3NywgMjI0LCAxOTYsIDEwMCwgMTIxLCA4MywgODAsIDI2LCAyMzMsIDE3NywgMjI0LCAxOTYsIAorICAgIDEwMCwgMTIxLCA0OSwgMTE1LCA4MCwgMjYsIDUxLCAxMjcsIDIyNCwgMTk2LCAxMDAsIDEyMSwgNTEsIDExNSwgODAsIDI2LCAKKyAgICA0OSwgMTI3LCAyMjQsIDE5NiwgMTAwLCAxMjEsIDQ5LCAxMjcsIDgwLCAyNiwgNTEsIDExNSwgMjI0LCAxOTYsIDEwMCwgCisgICAgMTIxLCA1MSwgMTI3LCA4MCwgMjYsIDQ5LCAxMTUsIDIyNCwgMTk2LCAxMDAsIDEyMSwgMTI3LCAxNjIsIDI2LCAxMTUsIAorICAgIDIzMywgMTc3LCAyMzQsIDEyMSwgMTAwLCAxMjEsIDExNSwgMTYyLCAyNiwgMTI3LCAyMzMsIDE3NywgMjM0LCAxMjEsIDEwMCwgCisgICAgMTIxLCA1MSwgMTYyLCAyNiwgNDksIDgzLCAyMzQsIDEyMSwgMTAwLCAxMjEsIDQ5LCAxNjIsIDI2LCA1MSwgODMsIDIzNCwgCisgICAgMTIxLCAxMDAsIDEyMSwgODAsIDgzLCAyNiwgMjMzLCAxNzYsIDEwMCwgMTIxLCAxNjIsIDUzLCAyNDEsIDI0NSwgMjMzLCAKKyAgICAxNzYsIDEwMCwgMTIxLCA4MCwgNTMsIDI0MSwgMjQ1LCAyMzMsIDE3NiwgMTAwLCAxMjEsIDE2MiwgNTMsIDI0MSwgMjQ1LCAKKyAgICAyMDMsIDQyLCAxMDAsIDEyMSwgODAsIDUzLCAyNDEsIDI0NSwgMjAzLCA0MiwgMTAwLCAxMjEsIDUzLCAyMzMsIDE3NiwgCisgICAgMTAwLCAxMjEsIDUzLCAyMDMsIDQyLCAxMDAsIDEyMSwgMTI3LCAyMDksIDEzOSwgMjYsIDUxLCAyMzksIDE3NSwgMTAwLCAKKyAgICAxMjEsIDEyNywgNTMsIDI2LCA1MSwgMjA5LCAxMzgsIDEwMCwgMTIxLCA1MywgMTI3LCAyNiwgMjEzLCA0NiwgMTAwLCAxMjEsIAorICAgIDEyNywgMjA5LCAxMzksIDI2LCA0OSwgMjM5LCAxNzUsIDEwMCwgMTIxLCAxMjcsIDUzLCAyNiwgNDksIDIwOSwgMTM4LCAKKyAgICAxMDAsIDEyMSwgNTMsIDEyNywgMjYsIDIyNSwgMjgsIDEwMCwgMTIxLCAxMTUsIDIwOSwgMTM5LCAyNiwgNTEsIDIzOSwgCisgICAgMTc1LCAxMDAsIDEyMSwgMTE1LCA1MywgMjYsIDUxLCAyMDksIDEzOCwgMTAwLCAxMjEsIDUzLCAxMTUsIDI2LCAyMTMsIDQ2LCAKKyAgICAxMDAsIDEyMSwgMTE1LCAyMDksIDEzOSwgMjYsIDQ5LCAyMzksIDE3NSwgMTAwLCAxMjEsIDExNSwgNTMsIDI2LCA0OSwgCisgICAgMjA5LCAxMzgsIDEwMCwgMTIxLCA1MywgMTE1LCAyNiwgMjI1LCAyOCwgMTAwLCAxMjEsIDgzLCAyMDksIDEzOSwgMjYsIDUxLCAKKyAgICAyMzksIDE3NSwgMTAwLCAxMjEsIDgzLCA1MywgMjYsIDUxLCAyMDksIDEzOCwgMTAwLCAxMjEsIDUzLCA4MywgMjYsIDIxMywgCisgICAgNDYsIDEwMCwgMTIxLCA4MywgMjA5LCAxMzksIDI2LCA0OSwgMjM5LCAxNzUsIDEwMCwgMTIxLCA4MywgNTMsIDI2LCA0OSwgCisgICAgMjA5LCAxMzgsIDEwMCwgMTIxLCA1MywgODMsIDI2LCAyMjUsIDI4LCAxMDAsIDEyMSwgMTI3LCAyMDksIDEzOSwgMjYsIAorICAgIDIzMywgMTc3LCAyMzksIDE3NSwgMTAwLCAxMjEsIDEyNywgNTMsIDI2LCAyMzMsIDE3NywgMjA5LCAxMzgsIDEwMCwgMTIxLCAKKyAgICA1MywgMTI3LCAyNiwgMjMzLCAxNzYsIDEwMCwgMTIxLCAxMTUsIDIwOSwgMTM5LCAyNiwgMjMzLCAxNzcsIDIzOSwgMTc1LCAKKyAgICAxMDAsIDEyMSwgMTE1LCA1MywgMjYsIDIzMywgMTc3LCAyMDksIDEzOCwgMTAwLCAxMjEsIDUzLCAxMTUsIDI2LCAyMzMsIAorICAgIDE3NiwgMTAwLCAxMjEsIDgzLCAyMDksIDEzOSwgMjYsIDIzMywgMTc3LCAyMzksIDE3NSwgMTAwLCAxMjEsIDgzLCA1MywgCisgICAgMjYsIDIzMywgMTc3LCAyMDksIDEzOCwgMTAwLCAxMjEsIDUzLCA4MywgMjYsIDIzMywgMTc2LCAxMDAsIDEyMSwgMTYyLCAKKyAgICAyNTAsIDIzNywgMTI3LCAyNiwgMjEzLCA0NiwgMTAwLCAxMjEsIDE2MiwgMjUwLCAyMzcsIDEyNywgMjYsIDIyNSwgMjgsIAorICAgIDEwMCwgMTIxLCAxNjIsIDI1MCwgMjM3LCAxMTUsIDI2LCAyMjUsIDI4LCAxMDAsIDEyMSwgMTYyLCAyNTAsIDIzNywgMTE1LCAKKyAgICAyNiwgMjEzLCA0NiwgMTAwLCAxMjEsIDE2MiwgMjQxLCA3MSwgMjAzLCAyMjUsIDUxLCAyMDUsIDE4NiwgMjI0LCA1NCwgCisgICAgMjI1LCAyOCwgMTAwLCAxMjEsIDE2MiwgMjQxLCA3MSwgMjAzLCAyMjUsIDQ5LCAyMDUsIDE4NiwgMjI0LCA1NCwgMjEzLCAKKyAgICA0NiwgMTAwLCAxMjEsIDE2MiwgMjQxLCA3MSwgMjQyLCAyMzQsIDEwMCwgMTIxLCAxNjIsIDIyNSwgMjgsIDEwMCwgMTIxLCAKKyAgICAxNjIsIDIwMywgMjI4LCAxMDAsIDEyMSwgMTYyLCAyMTMsIDQ2LCAxMDAsIDEyMSwgMTYyLCAyMzksIDE2NywgMTAwLCAxMjEsIAorICAgIDgwLCAyMjUsIDI4LCAxMDAsIDEyMSwgODAsIDIwMywgMjI4LCAxMDAsIDEyMSwgODAsIDIxMywgNDYsIDEwMCwgMTIxLCA4MCwgCisgICAgMjM5LCAxNjcsIDEwMCwgMTIxLCAxNjIsIDQ5LCAyNiwgODAsIDIxMywgNDYsIDEwMCwgMTIxLCAxNjIsIDExNSwgMjYsIDgwLCAKKyAgICAyMzksIDE2NywgMTAwLCAxMjEsIDgwLCA0OSwgMjYsIDE2MiwgMjEzLCA0NiwgMTAwLCAxMjEsIDgwLCAxMTUsIDI2LCAxNjIsIAorICAgIDIzOSwgMTY3LCAyMDMsIDIyNSwgMTY3LCAyNDgsIDEzNCwgMjI0LCA1NCwgMTEyLCAyMzgsIDIyOCwgMjQ4LCAxMzQsIDIyNCwgCisgICAgNTQsIDExMiwgMjE0LCA4OCwgMjQ4LCAxMzQsIDIyNCwgNTQsIDEyNiwgMjM4LCAyMjYsIDI0OCwgMTM0LCAyMjQsIDU0LCAKKyAgICAxNjcsIDI0OCwgMTM0LCAyMjQsIDU0LCAyMzcsIDYxLCAyMzgsIDIyNiwgMjQ4LCAxMzQsIDIyNCwgNTQsIDEyNiwgMjE0LCAKKyAgICA4NiwgMjQ4LCAxMzQsIDIyNCwgNTQsIDIxMCwgMTM2LCAyMzgsIDIyNiwgMjQ4LCAxMzQsIDIzNiwgMTgzLCAyNDgsIDEzNCwgCisgICAgNDksIDIxMCwgMTM2LCAyMzgsIDIyNiwgMjQ4LCAxMzQsIDQ5LCAxMjYsIDIxNCwgODYsIDI0OCwgMTM0LCA0OSwgMjM3LCAKKyAgICA2MSwgMjM4LCAyMjYsIDI0OCwgMTM0LCA0OSwgMTY3LCAyNDgsIDEzNCwgNDksIDEyNiwgMjM4LCAyMjYsIDI0OCwgMTM0LCAKKyAgICA0OSwgMTEyLCAyMTQsIDg4LCAyNDgsIDEzNCwgNDksIDExMiwgMjM4LCAyMjgsIDI0OCwgMTM0LCA1MSwgMTY3LCAyNDgsIAorICAgIDEzNCwgMTYyLCAyMTAsIDEwMywgMjIyLCA2NiwgMjEwLCAxMDMsIDI0MSwgMjUwLCAyMTAsIDEwMywgMjAzLCAyMjUsIDExMiwgCisgICAgMjM4LCAyMjgsIDI0OCwgMTM0LCA1MSwgMTEyLCAyMzgsIDIyOCwgMjQ4LCAxMzQsIDIxNCwgOTIsIDIyNCwgNTQsIDIyNSwgCisgICAgMjgsIDIxNCwgOTIsIDIyNCwgNTQsIDIxMywgNDYsIDIxNCwgOTIsIDIwMywgMjI1LCAyMjUsIDI4LCAyMTQsIDkyLCAyMDMsIAorICAgIDIyNSwgNDksIDI2LCAyMjQsIDU0LCA0OSwgMjYsIDIyNCwgNTQsIDIxMywgNDYsIDIxNCwgOTIsIDIwMywgMjI1LCA0OSwgCisgICAgMjYsIDIyNCwgNTQsIDIxMywgNDYsIDIxNCwgOTIsIDIwMywgMjI1LCA0OSwgMjYsIDIwMywgMjI1LCA1MSwgMjYsIDIyNCwgCisgICAgNTQsIDIyNSwgMjgsIDIxNCwgOTIsIDIwMywgMjI1LCA0OSwgMjYsIDIwMywgMjI1LCA1MSwgMjYsIDIyNCwgNTQsIDIxMywgCisgICAgNDYsIDIxNCwgOTIsIDIwMywgMjI1LCAyMTMsIDQ2LCAyMTQsIDkyLCAyMDMsIDIyNSwgNTEsIDI2LCAyMjQsIDU0LCAyMjUsIAorICAgIDI4LCAyMTQsIDkyLCAyMDMsIDIyNSwgNTEsIDI2LCAyMjQsIDU0LCA0OSwgMjYsIDIyNCwgNTQsIDIxMywgNDYsIDYzLCAKKyAgICAyMDgsIDE5MywgNjQsIDIwOCwgMTkzLCA2NCwgNTIsIDMsIDIxMiwgMjE5LCAyNDMsIDE0LCA2NCwgNTIsIDI0MywgNDUsIAorICAgIDYzLCA0LCAyMDgsIDE5MywgNTIsIDMsIDIzMywgMTc3LCAyMzcsIDk1LCA1MiwgMywgODMsIDIzNywgOTUsIDUyLCAzLCAKKyAgICAyMTcsIDE3LCAyNDIsIDIyOSwgMjM3LCA5NSwgNTIsIDMsIDIwMywgMjI1LCA0OSwgMjA1LCAxODYsIDIyNCwgNTQsIDUxLCAKKyAgICAyMzcsIDk1LCA1MiwgMywgMjAzLCAyMjUsIDUxLCAyMDUsIDE4NiwgMjI0LCA1NCwgNDksIDIzNywgOTUsIDUyLCAzLCAyNDEsIAorICAgIDcxLCAyNDIsIDIyOSwgMjM3LCA5NSwgNjMsIDQsIDIwOCwgMTkzLCA2NCwgNCwgMjA4LCAxOTMsIDYzLCAyMTMsIDE3NSwgCisgICAgNjQsIDIxMywgMTc1LCA2MywgODMsIDIxMywgMTc1LCA2NCwgODMsIDIxMywgMTc1LCA2MywgMjE2LCAxMTksIDY0LCAyMTYsIAorICAgIDExOSwgNjMsIDIwMywgMjI3LCAyMDUsIDk4LCA2NCwgMjAzLCAyMjcsIDIwNSwgOTgsIDYzLCAyMDMsIDIyNywgNCwgMjA1LCAKKyAgICA5OCwgNjQsIDIwMywgMjI3LCA0LCAyMDUsIDk4LCA2MywgMjEzLCA0MSwgMjA1LCA5OCwgNjQsIDIxMywgNDEsIDIwNSwgOTgsIAorICAgIDYzLCAyMTMsIDQxLCA0LCAyMDUsIDk4LCA2NCwgMjEzLCA0MSwgNCwgMjA1LCA5OCwgNjMsIDIxMywgNDEsIDIxNSwgOTcsIAorICAgIDY0LCAyMTMsIDQxLCAyMTUsIDk3LCA2MywgMjM5LCAxNjYsIDIwNSwgOTgsIDY0LCAyMzksIDE2NiwgMjA1LCA5OCwgNjMsIAorICAgIDIzOSwgMTY2LCA0LCAyMDUsIDk4LCA2NCwgMjM5LCAxNjYsIDQsIDIwNSwgOTgsIDYzLCAyMjUsIDIzLCAyMDUsIDk4LCA2NCwgCisgICAgMjI1LCAyMywgMjA1LCA5OCwgNjMsIDIyNSwgMjMsIDQsIDIwNSwgOTgsIDY0LCAyMjUsIDIzLCA0LCAyMDUsIDk4LCA2MywgCisgICAgMjI1LCAyMywgMjE1LCA5NywgNjQsIDIyNSwgMjMsIDIxNSwgOTcsIDYzLCAyNDEsIDY0LCA2NCwgMjQxLCA2NCwgNjQsIAorICAgIDI0MSwgNjUsIDI0MywgNDUsIDYzLCA0LCAyNDEsIDY0LCAyMzcsIDcwLCAyMjQsIDQ5LCA2NCwgMjQ2LCAxNTUsIDIzOSwgCisgICAgMTgwLCAyNDYsIDE1NSwgMjQ2LCAxNTYsIDMsIDgzLCAyMzcsIDk1LCAyNDgsIDE2LCA2MywgMjQ2LCAxNTUsIDI0NiwgMTU2LCAKKyAgICAzLCA0OSwgMTY3LCAyNDgsIDE0NCwgMjQ2LCAxNTYsIDMsIDUxLCAxNjcsIDI0OCwgMTQ0LCAyNDYsIDE1NiwgMywgMjI0LCAKKyAgICA1NCwgMTY3LCAyNDgsIDE0NCwgMjQ2LCAxNTYsIDMsIDIwMywgMjI1LCAxNjcsIDI0OCwgMTQ0LCAyNDYsIDE1NiwgMywgCisgICAgMjAzLCAyMjUsIDUxLCAyMTQsIDkyLCAyNDgsIDE0NCwgMjQ2LCAxNTYsIDMsIDI1MSwgMTI1LCAyNDcsIDI0NywgMjAzLCAKKyAgICAyMjUsIDQ5LCAyMTQsIDkyLCAyNDgsIDE0NCwgNDksIDE2NywgNjMsIDI0NiwgMTU1LCA1MSwgMTY3LCA2MywgMjQ2LCAxNTUsIAorICAgIDIyOCwgNTEsIDI0OCwgMjAsIDIyOCwgNTEsIDY0LCAyNDYsIDE1NSwgMjAzLCAyMjUsIDE2NywgMjI4LCA1MSwgNjQsIDI0NiwgCisgICAgMTU1LCAyMjQsIDU0LCAxNjcsIDIyOCwgNTEsIDY0LCAyNDYsIDE1NSwgMjAzLCAyMjUsIDQ5LCAyMTQsIDkyLCAyNDYsIAorICAgIDE0OSwgMjUwLCAyMzYsIDIwMywgMjI1LCA1MSwgMjE0LCA5MiwgMjQ2LCAxNDksIDI1MCwgMjM2LCAyMjQsIDU0LCA1MSwgCisgICAgMjE0LCA5MiwgMjQ2LCAxNDksIDI1MCwgMjM2LCAyMjQsIDU0LCA0OSwgMjE0LCA5MiwgMjQ2LCAxNDksIDI1MCwgMjM2LCAKKyAgICAyMDMsIDIyNSwgMTY3LCAyNDYsIDE1NSwgMjI0LCA1NCwgMTY3LCAyNDYsIDE1NSwgNjMsIDIyNCwgNTQsIDUxLCAyMDUsIAorICAgIDk4LCA2MywgMjI0LCA1NCwgNDksIDIwNSwgOTgsIDYzLCAyMDMsIDIyNSwgNDksIDIwNSwgOTgsIDYzLCAyMDMsIDIyNSwgCisgICAgNTEsIDIwNSwgOTgsIDY0LCAyNDgsIDIwLCA1MiwgMywgNDksIDE2NywgMjQ4LCAxNDQsIDUyLCAzLCA1MSwgMTY3LCAyNDgsIAorICAgIDE0NCwgNTIsIDMsIDIwMywgMjI1LCA0OSwgMjQxLCA3MSwgMTY3LCAyNDgsIDE0NCwgNTIsIDMsIDIyNCwgNTQsIDUxLCAKKyAgICAyNDEsIDcxLCAxNjcsIDI0OCwgMTQ0LCA2NCwgNTIsIDMsIDgzLCAyNDgsIDE1NiwgMjI0LCAxNzYsIDY0LCAyMDMsIDIyNywgCisgICAgMjA1LCA5OSwgMywgMjQwLCAxODIsIDIwMywgMjI3LCAyMDUsIDk5LCAzLCA0OSwgMTY3LCAyNDgsIDE0NCwgMjAzLCAyMjcsIAorICAgIDIwNSwgOTksIDMsIDUxLCAxNjcsIDI0OCwgMTQ0LCAyMjUsIDcxLCAyNDYsIDE1NSwgNjQsIDUyLCAzLCAyMDMsIDIyNSwgCisgICAgNDksIDIxNCwgOTEsIDY0LCA1MiwgMywgMjI0LCA1NCwgNDksIDIxNCwgOTEsIDY0LCA1MiwgMywgMjI0LCA1NCwgNTEsIAorICAgIDIxNCwgOTEsIDY0LCA1MiwgMywgMjAzLCAyMjUsIDUxLCAyMTQsIDkxLCA2NCwgMjQ2LCAxNTYsIDMsIDIwMywgMjI1LCA0OSwgCisgICAgMjE0LCA5MSwgNjQsIDI0NiwgMTU2LCAzLCAyMjQsIDU0LCA0OSwgMjE0LCA5MSwgNjQsIDI0NiwgMTU2LCAzLCAyMjQsIDU0LCAKKyAgICA1MSwgMjE0LCA5MSwgNjQsIDI0NiwgMTU2LCAzLCAyMDMsIDIyNSwgNTEsIDIxNCwgOTEsIDIwMywgMjI1LCA0OSwgMjA1LCAKKyAgICA5OCwgMjAzLCAyMjUsIDUxLCAyMDUsIDk4LCAyMjQsIDU0LCA0OSwgMjA1LCA5OCwgNjQsIDIyMiwgNjYsIDIwOCwgMTkzLCAKKyAgICA2MywgMjIyLCA2NiwgMjA4LCAxOTMsIDY0LCAyMjIsIDY2LCA0LCAyMDgsIDE5MywgNjMsIDIyMiwgNjYsIDQsIDIwOCwgCisgICAgMTkzLCAyMjQsIDU0LCA1MSwgMjA1LCA5OCwgNjMsIDIwNywgMjI5LCAzLCAyMTMsIDE5NCwgMjQ2LCAxMDEsIDIwNCwgOSwgCisgICAgMjA5LCAzMSwgMjQ2LCA3MywgNjMsIDIwOCwgMTA5LCA2NCwgMjA4LCAxMDksIDIyNCwgMTkzLCAyMDYsIDMwLCAyMDcsIAorICAgIDIyOCwgMjUwLCAxODQsIDIxOCwgMjM4LCAyNDEsIDExOCwgMjE4LCAyMzgsIDI0MywgNTQsIDIxNywgMzksIDYzLCAyMDYsIAorICAgIDE3NSwgNjQsIDIwNiwgMTc1LCAyNDksIDk0LCAyNDgsIDc4LCAyNDksIDk0LCAxMDAsIDMsIDI0NywgNiwgMjQ5LCA5NCwgCisgICAgMTAwLCAzLCAyMDAsIDE5NSwgMjEyLCAyNCwgMjA0LCAxMCwgMywgMjEzLCAyMjMsIDIzOSwgMTQ0LCAyMzMsIDExOCwgMjQ4LCAKKyAgICAyMDQsIDY0LCAyMTAsIDMsIDIxNSwgMTk2LCA2MywgMjEwLCAzLCAyMTUsIDE5NiwgMjEwLCA5MSwgMjEzLCAxMDUsIDIxMiwgCisgICAgMjI4LCAyMzcsIDI4LCAyMzQsIDEyOCwgMjQ4LCAyMCwgNjMsIDQ5LCAyMTUsIDk2LCAyMjgsIDEwMywgNjMsIDUxLCAyMTUsIAorICAgIDk2LCAyMjgsIDEwMywgNjQsIDQ5LCAyMTUsIDk2LCAyMjgsIDEwMywgNjQsIDExNSwgMjE1LCA5NiwgMjI4LCAxMDMsIDY0LCAKKyAgICA1MSwgMjE1LCA5NiwgMjI4LCAxMDMsIDY0LCAxMjcsIDIxNSwgOTYsIDIyOCwgMTAzLCAyMDksIDgxLCAyNiwgMjQyLCAyMzMsIAorICAgIDI0NywgMTA1LCA1NCwgMjEzLCAyMzUsIDU0LCAyNDgsIDE2NCwgNTQsIDI0NywgMTgxLCAyNTEsIDYxLCAyMTcsIDE4LCAKKyAgICAyNDIsIDIzNCwgMjQ2LCAyMzcsIDIxMywgOTAsIDI0MiwgMjM1LCA3NiwgMjI0LCA2OSwgMjQyLCAyMzUsIDc2LCAyMjcsIAorICAgIDIxNywgMjA4LCAxMTAsIDI2LCAyNDIsIDI0MywgMjM3LCAxNjIsIDk5LCAyNTEsIDIyOCwgMjEwLCA5NCwgMjM0LCAyMDcsIAorICAgIDI2LCAyMDksIDE3OSwgMjE2LCA3MiwgOTksIDE5OSwgMjU1LCAyMDAsIDc1LCAyMDUsIDg4LCAzNiwgMjM0LCAxMjMsIDIwNSwgCisgICAgODgsIDM2LCAyMjUsIDk2LCAyMDUsIDg4LCAzNiwgMjM3LCA3NywgMjA1LCA4OCwgMzYsIDIwNiwgMzEsIDIwNSwgODgsIDM2LCAKKyAgICAyMDEsIDE2LCAyMDUsIDg4LCAzNiwgMjAxLCA4MiwgMjA1LCA4OCwgMzYsIDIyMSwgNjMsIDIwNSwgODgsIDM2LCAyMzksIAorICAgIDE3LCAyMDEsIDM4LCA3NiwgMjQxLCA5MiwgNjQsIDIzNiwgMTk1LCAyMzcsIDE4OSwgNjQsIDIwOSwgNDcsIDIzNywgMTg5LCAKKyAgICA2MywgMjA5LCA0NywgMjM3LCAxODksIDY0LCAyMDcsIDIyOSwgMywgMjEzLCAxOTQsIDIzNywgNzMsIDIxNCwgODgsIDIyMSwgCisgICAgODEsIDIyNSwgNjQsIDIxNCwgODgsIDIyMSwgODEsIDIyMiwgMzQsIDIzNywgMTMwLCA1NCwgMjM5LCAxNywgMjIyLCAxODUsIAorICAgIDU0LCAyMjcsIDEzMywgMjExLCAyNDQsIDIwMywgMjA5LCAyMjAsIDE4LCAyMTUsIDExMCwgMjUwLCAyMjIsIDIwNiwgMjE5LCAKKyAgICAyMzYsIDIsIDI0NywgMTU0LCAyMjQsIDI0NiwgMjAyLCAyMDYsIDIyNCwgMjA3LCAyMTEsIDIxMiwgMjEyLCA0OCwgMjQ3LCAKKyAgICAxMzksIDI1MCwgMjU0LCAyMTUsIDE0NSwgNjQsIDI0NiwgMjQ0LCAyMjYsIDE0NCwgNjQsIDI0NiwgMjQ0LCAyMTQsIDgwLCAKKyAgICA2NCwgMjQ2LCAyNDQsIDIxMiwgMjM2LCA2NCwgMjQ2LCAyNDQsIDI0OCwgMTU1LCA2NCwgMjQ2LCAyNDQsIDIyNiwgOTMsIAorICAgIDY0LCAyNDYsIDI0NCwgMjE2LCA4NCwgNjMsIDI0NiwgMjQ0LCAyMjYsIDE0NCwgNjMsIDI0NiwgMjQ0LCAyMTQsIDgwLCA2MywgCisgICAgMjQ2LCAyNDQsIDIxMiwgMjM2LCA2MywgMjQ2LCAyNDQsIDI0OCwgMTU1LCA2MywgMjQ2LCAyNDQsIDIyNiwgOTMsIDYzLCAKKyAgICAyNDYsIDI0NCwgMjE2LCA4NCwgNjMsIDIwOCwgMjQyLCAyMDcsIDI0MSwgNjQsIDIzNCwgMTI4LCAyMDcsIDI0MSwgNjQsIAorICAgIDI0MSwgNjUsIDIwNywgMjQxLCA2MywgMjQ2LCA5OCwgMjA3LCAyNDEsIDY0LCAyMDgsIDI0MiwgMjA3LCAyNDEsIDYzLCAKKyAgICAyMzQsIDEyOCwgMjA3LCAyNDEsIDYzLCAyNDEsIDY1LCAyMDcsIDI0MSwgNjQsIDI0NiwgOTgsIDIwNywgMjQxLCAyMzMsIAorICAgIDExOCwgMjA4LCAxOTgsIDIxNCwgODgsIDIxOCwgMjA5LCAyMzgsIDIyOCwgMjE4LCAyMDksIDI0OSwgNCwgMjM4LCAyMjgsIAorICAgIDIxOCwgMjA0LCAyNDksIDQsIDIwOSwgOTksIDIxOCwgMjA0LCAyMjAsIDI0NiwgMjM3LCA0NSwgNTQsIDIyMCwgMjQ2LCAKKyAgICAyMjAsIDExNywgNTQsIDIyMCwgMjQ2LCAyMTAsIDc5LCA1NCwgMjAxLCA0OCwgMjA3LCAxMDMsIDI0MiwgMjM0LCAyMzksIAorICAgIDE0LCAyMDcsIDEwMywgMjQyLCAyMzQsIDIwMywgMjM3LCAyMTMsIDE3MSwgOTksIDIxMywgMTcxLCAxNiwgMzYsIDIwNCwgCisgICAgMTI3LCAyMTUsIDEyNywgMjEzLCAxNzEsIDE2LCAzNiwgMjA0LCAxMjUsIDIxNSwgMTI3LCAyMTMsIDE3MSwgMTYsIDM2LCAKKyAgICAyMDQsIDEyNCwgMjE1LCAxMjcsIDIxMywgMTcxLCAxNiwgMzYsIDIwNCwgMTIyLCAyMTUsIDEyNywgMjEzLCAxNzEsIDE2LCAKKyAgICAzNiwgMjA0LCAxMjAsIDIxNSwgMTI3LCAyMTMsIDE3MSwgMTYsIDM2LCAyMDQsIDExOCwgMjE1LCAxMjcsIDIxMywgMTcxLCAKKyAgICAxNiwgMzYsIDIwNCwgMTE2LCAyMTUsIDEyNywgMjEzLCAxNzEsIDE2LCAzNiwgMjM2LCAwLCAyMjIsIDEyNiwgNjMsIDIwMywgCisgICAgMjM3LCAyMTMsIDE3MSwgOTksIDIxMywgMTcyLCAyMTYsIDEzNCwgOTksIDIxNiwgMTA3LCAyMTYsIDEzNCwgOTksIDIxNiwgCisgICAgMTksIDIxNiwgMTM0LCA1NCwgMjAxLCAzNiwgOTksIDI0MSwgNTcsIDIzNywgMTg4LCAyNDEsIDU3LCAyMzcsIDE4NywgMjQxLCAKKyAgICA1NywgMjM3LCAxODYsIDI0MSwgNTcsIDIzNywgMTg1LCAyNDEsIDU3LCAyMzcsIDE4NCwgMjQxLCA1NywgMjM3LCAxODMsIAorICAgIDY0LCAyNDYsIDE1NiwgMywgNzMsIDIxMywgNDYsIDY0LCAyNDYsIDE1NiwgMywgMTIwLCAyNDAsIDE4MCwgNjMsIDI0NiwgCisgICAgMTU2LCAzLCA2NCwgNzMsIDIxMywgNDYsIDYzLCAyNDYsIDE1NiwgMywgMTIwLCA2NCwgMjQwLCAxODAsIDIyMSwgOTcsIDM2LCAKKyAgICAyMDAsIDc1LCAyMjEsIDk3LCAzNiwgMTk5LCAyNTQsIDI0MSwgMzgsIDM2LCAyMzUsIDY4LCAyMDAsIDc1LCAyNDEsIDM4LCAKKyAgICAzNiwgMjI0LCAyMzksIDE5OSwgMjU0LCAyNDEsIDM4LCAzNiwgMjI0LCAyMzksIDIwMCwgNzUsIDI0MSwgMzgsIDM2LCAyMzUsIAorICAgIDY4LCAxOTksIDI1NCwgNjQsIDIzNywgNTMsIDYzLCAyMzcsIDUzLCAyMzQsIDIwNywgMjYsIDIxNSwgMjAwLCAyNTEsIDgxLCAKKyAgICAyNDIsIDIzMiwgMjA3LCAxNjgsIDIwOCwgMTE4LCA3NiwgMjUxLCAyMDQsIDIxMSwgMjI5LCAyNTEsIDE0MSwgMjM3LCAyNCwgCisgICAgMjM2LCAxMiwgMjA4LCAxMTgsIDc2LCAyMzQsIDk4LCAyNTAsIDE0NywgOTksIDIzNywgNDAsIDIxNiwgMjUwLCA2NCwgMjA4LCAKKyAgICAxMDksIDEyNiwgMjI0LCAxNzEsIDI0MywgMzEsIDIxMywgNDYsIDEyNiwgMjI0LCAxNzEsIDI0MywgMzEsIDIyNSwgMjgsIAorICAgIDIwMSwgOTMsIDU0LCAxMjIsIDIwMiwgMTgyLCA1NCwgMjM5LCAxNzIsIDIzNywgMTMwLCA1NCwgMjM5LCAxNzIsIDIyMiwgCisgICAgMTg1LCA1NCwgMjI4LCA2MSwgMjM3LCAxMzAsIDI2LCAyMjIsIDE4NSwgNTQsIDIyMiwgMTg1LCAyNiwgMjM3LCAxMzAsIDU0LCAKKyAgICAyMjIsIDE4NSwgMywgMjA4LCA0NywgNTQsIDIyMiwgMTg1LCAzLCAyMDgsIDQ3LCAyNiwgMjIyLCAxODUsIDI2LCAyMzcsIAorICAgIDEzMCwgNTQsIDgzLCAyMjIsIDE4NSwgMywgMjA4LCA0NywgNTQsIDIzMywgMTc3LCAyMjIsIDE4NSwgMywgMjA4LCA0NywgCisgICAgNTQsIDIyMiwgNjYsIDY0LCAyNDYsIDE1NSwgMjIyLCA2NiwgNjMsIDI0NiwgMTU1LCAyMjIsIDY2LCA0LCA2NCwgMjQ2LCAKKyAgICAxNTUsIDIyMiwgMTQzLCA5OSwgMjQwLCAyMzMsIDk5LCAyMDMsIDIzNCwgMjE2LCAxMDYsIDk5LCAyNDYsIDg0LCAyMzYsIAorICAgIDE3OCwgMjAzLCAyMDUsIDIyMCwgMTEsIDI0NywgNDEsIDIxNiwgMTc5LCAyMjcsIDEzOSwgMjAyLCAyNDQsIDI0NiwgMjE3LCAKKyAgICA2MywgMjIxLCA4MiwgMjI0LCAxOTAsIDIxMCwgMTI1LCAyMTAsIDE2NCwgMjE0LCA3MCwgMjEwLCAxNDQsIDIwOSwgMjYsIAorICAgIDI0OSwgOTcsIDI0OSwgNjMsIDk1LCAyMjYsIDIxNCwgNjQsIDIzOSwgMTU1LCAyMjIsIDE4MCwgNjQsIDIzOSwgMTU1LCAKKyAgICAyMjYsIDE0NCwgNjMsIDIzOSwgMTU1LCAyMjIsIDE4MCwgNjMsIDIzOSwgMTU1LCAyMjYsIDE0NCwgMjA5LCAzMiwgMjAxLCAKKyAgICAzLCAyMDksIDM1LCAyMDcsIDIyOSwgMjQ4LCAyMzcsIDI0NiwgMTAxLCAyMTMsIDIyMiwgNjMsIDIwOSwgMzEsIDIwNiwgMzIsIAorICAgIDI0NiwgMTAyLCAyNiwgMjEzLCAyMjIsIDIwNCwgMTg1LCA2NCwgMjEwLCAzLCAyMTUsIDE5NiwgMjA0LCAxODUsIDYzLCAKKyAgICAyMTAsIDMsIDIxNSwgMTk2LCA2NCwgMjQxLCA2NSwgMjI4LCAxMTgsIDIwOCwgMTkzLCAyNDIsIDIyOCwgMjI1LCA3OCwgCisgICAgMjQxLCA1LCAyNDcsIDEzNSwgMjE3LCA0MiwgMjE1LCAyMDAsIDI0NywgMTM2LCAyMDksIDY1LCAyMzQsIDEwOCwgMywgNjQsIAorICAgIDI0MiwgMjM0LCA0NCwgMjQyLCAyMjgsIDIyNSwgNzgsIDI0NywgMzMsIDIxOCwgMjQyLCAyMzgsIDE0OSwgMjUxLCAxMDksIAorICAgIDIxNywgNzEsIDQ5LCAyMDEsIDY4LCAyMDUsIDEyNiwgNjMsIDIwNCwgMTM4LCA0OSwgMjAxLCA2OCwgMjA1LCAxMjYsIDY0LCAKKyAgICAyMDQsIDEzOCwgNDksIDIwMSwgNjgsIDIwNSwgMTI2LCA2MywgNDksIDIyNSwgNzksIDIyMiwgMzMsIDY0LCA0OSwgMjI1LCAKKyAgICA3OSwgMjIyLCAzMywgMjM5LCAxNTAsIDIwOSwgNTcsIDU0LCA4MCwgNjQsIDIzOSwgMTY2LCAyMDUsIDk4LCA0OSwgMjQ2LCAKKyAgICAxMTAsIDIzOCwgMTQ5LCA5NSwgMjEyLCAyNCwgMjM3LCAxNzEsIDI0MSwgNzEsIDIyOCwgMTE4LCA2NCwgMjQ2LCAxNTYsIAorICAgIDIyOCwgMTE4LCA2MywgMjA4LCAxOTMsIDYzLCAyMDUsIDYyLCAyMTMsIDExNiwgNDksIDIzOCwgMTQ4LCAyMTMsIDExNiwgCisgICAgNDksIDIzOCwgMTQ3LCAyNTAsIDE2MCwgMTYsIDM2LCAyMDMsIDIwOSwgODAsIDI0NiwgMTU2LCAzLCAyMDgsIDQ3LCAyNiwgCisgICAgMTIwLCAxOTAsIDU2LCAyMTYsIDM2LCAyMTMsIDQzLCAyMjgsIDYzLCAyMTYsIDM2LCAyMjUsIDI1LCAyMjgsIDYzLCAyMTYsIAorICAgIDM2LCAyMjgsIDUwLCAyMTYsIDM2LCA2MywgMjQyLCAyMzUsIDIxNywgNzksIDIxMCwgMzAsIDIxMCwgMTgsIDIwOSwgMjI1LCAKKyAgICAyNDYsIDE4NCwgMjQ3LCAxMTMsIDIzNCwgNDYsIDIwOSwgMTA3LCAyMzYsIDEzLCAyMDEsIDMsIDIzMywgOTQsIDIzNiwgMTMsIAorICAgIDMsIDIzNCwgMTc2LCAyMjIsIDE2NSwgMTYsIDM2LCAyMjQsIDE5NSwgMjIxLCA2MywgMjA0LCAxMCwgMjE3LCA3OSwgMjM1LCAKKyAgICA1OSwgMjM2LCAyMzAsIDIzNywgNTQsIDIyOCwgMTE4LCAyMzMsIDE5NywgMjM3LCAxMjAsIDIxMiwgNDMsIDUyLCAyMzYsIAorICAgIDIyOSwgMjQzLCAxNCwgMjA5LCA4NCwgMjMyLCAyMzIsIDIwOSwgODcsIDIxNiwgMTEsIDMsIDI0OSwgOTcsIDIwNiwgMTU4LCAKKyAgICAyMjcsIDIzNiwgMjQ5LCA4MiwgOTksIDIzNCwgMTMxLCAyMzUsIDcwLCA5OSwgMjM2LCAxODYsIDIxNCwgMjEzLCAyNDIsIAorICAgIDIwMywgMjE3LCA3OSwgNjMsIDIwOCwgMTkzLCA2NCwgMjM3LCA1NCwgMywgMjMzLCAxNzcsIDEwMSwgNjMsIDIwOCwgNDgsIAorICAgIDYzLCAyMTIsIDUzLCAyMTEsIDIxNiwgMjAzLCAyMjUsIDI0OCwgMTM5LCAyMTEsIDIxNiwgNjMsIDIxMSwgMjE2LCAyMjQsIAorICAgIDU0LCAyNDgsIDEzOSwgMjExLCAyMTYsIDY0LCAyMTEsIDIxNiwgNjQsIDgwLCAyNDcsIDcsIDgxLCAyMDYsIDE3NiwgMjI0LCAKKyAgICAxMDgsIDU0LCAyMDYsIDIzNSwgMjM5LCAxNDksIDI1MSwgMTY0LCAyMzgsIDE0NCwgMjEzLCAyMjAsIDIzNywgNjYsIDIxMywgCisgICAgMjIwLCAyMzQsIDE5OSwgMjAyLCAyMzIsIDIzNCwgMTk5LCAyMDAsIDIxOSwgMjM0LCAxOTksIDIyNCwgNTQsIDUxLCAyMTYsIAorICAgIDQ2LCAyMTYsIDQ2LCAyMDMsIDIyNSwgNTEsIDIxNiwgNDYsIDY0LCAyMTksIDE0NywgNjMsIDIxOSwgMTQ3LCAyNDcsIDcsIAorICAgIDgxLCA4MCwgMjQ3LCA3LCA4MSwgMjIxLCAxOSwgMjAwLCAxOTUsIDgwLCAyMjEsIDE5LCAyMDAsIDE5NSwgMjQ5LCA5NCwgCisgICAgMjAwLCAxOTUsIDgwLCAyNDksIDk0LCAyMDAsIDE5NSwgMjE2LCAyNTAsIDMxLCAyNDIsIDIzNCwgODAsIDMxLCAyNDIsIAorICAgIDIzNCwgMTc2LCAyNDcsIDU2LCAyNDIsIDIzNCwgODAsIDE3NiwgMjQ3LCA1NiwgMjQyLCAyMzQsIDgsIDI0MiwgMjM0LCAKKyAgICAyMTAsIDEwMSwgNjQsIDgsIDI0MiwgMjM0LCAyMTYsIDI1MCwgOCwgMjQyLCAyMzQsIDIyMiwgMTgyLCAyNDIsIDIzNCwgCisgICAgMjA4LCAxMTAsIDc2LCAyNDEsIDIzNywgMjM2LCAyMjksIDIwNiwgMTk0LCAyNTAsIDE2NSwgMjM2LCAyMjksIDI0OSwgOTUsIAorICAgIDI1MCwgMTY1LCA4MCwgMjM2LCAyMjksIDI0OSwgOTUsIDI1MCwgMTY1LCAyMzYsIDIyOSwgMjQ2LCA5NiwgMjUwLCAxNjUsIAorICAgIDYzLCAyMzYsIDIyOSwgMjE1LCA5OCwgMjA4LCAxMDksIDY0LCAyMzYsIDIyOSwgMjE1LCA5OCwgMjA4LCAxMDksIDIwOCwgCisgICAgMjM3LCAyMDgsIDU3LCAyMTYsIDI1MCwgNjQsIDIwOCwgMTA5LCA0NCwgNjQsIDIwOCwgMTA5LCAxNzYsIDI0NywgNTYsIDYzLCAKKyAgICAyMDgsIDEwOSwgNjMsIDI0NywgNTYsIDY0LCAyMDgsIDEwOSwgMjE2LCAyNTAsIDYzLCAyMDgsIDEwOSwgODAsIDIxNiwgCisgICAgMjUwLCA2MywgMjA4LCAxMDksIDIxNSwgMTU1LCAyMDgsIDEwOSwgMjEwLCAxMDEsIDY0LCAyMDgsIDEwOSwgODAsIDI1MCwgCisgICAgMTY1LCAxNzYsIDI0NywgNTYsIDI1MCwgMTY1LCAyMzgsIDIzMiwgMjA4LCAyMDcsIDI1MCwgMTY1LCAyMzgsIDIzMiwgMjE1LCAKKyAgICA5OCwgNjMsIDIwOCwgMTA5LCAyMzgsIDIzMiwgMjE1LCA5OCwgMjE1LCAxNTUsIDIwOCwgMTA5LCAyMDksIDEwNiwgMjE1LCAKKyAgICA5OCwgNjMsIDIwOCwgMTA5LCAyMzgsIDIzMiwgMjE1LCA5OCwgMjEzLCAxNzMsIDYzLCAyMDgsIDEwOSwgODAsIDIzOCwgCisgICAgMjMyLCAyMTUsIDk4LCAyMTMsIDE3MywgNjMsIDIwOCwgMTA5LCAyMDQsIDE2NSwgMjE1LCA5OCwgNjMsIDIwOCwgMTA5LCAKKyAgICAyMDksIDEwMSwgMjE1LCA5OCwgMjUwLCAxNjUsIDIwNiwgMTk0LCAyNTAsIDE2NSwgMTc2LCAyNDcsIDU2LCAyMDYsIDE5NCwgCisgICAgMjUwLCAxNjUsIDgwLCAyMDYsIDE5NCwgMjUwLCAxNjUsIDIwOSwgMTA2LCAyMTUsIDI1NSwgNjMsIDI2LCA2NCwgMjM3LCAKKyAgICAyNywgNjMsIDIzNywgMjcsIDY0LCAyMzcsIDI3LCAyMzgsIDIzMiwgMjE1LCAyNTUsIDIxNiwgMjUwLCA2MywgMjM3LCAyNywgCisgICAgNDQsIDE3NiwgMjQ3LCA1NiwgMjM4LCAyMzIsIDIxNSwgOTgsIDIwOCwgMTA5LCA4MCwgMjA2LCAxOTQsIDIxNSwgMTU1LCAKKyAgICAyNTAsIDE2NSwgMjA5LCAzMywgMjA2LCAxLCAyMDUsIDkxLCAyMDksIDMzLCA4MCwgMjQ2LCAyNDAsIDIwOSwgMzMsIDIwOCwgCisgICAgMjM5LCA4MCwgMjA4LCAyMzksIDI0OSwgOTUsIDI1MCwgMTY1LCAyMzgsIDIzMiwgMjA2LCAxOTQsIDIxNCwgMjQ2LCAyNTAsIAorICAgIDE2NSwgODAsIDIzOCwgMjMyLCAyMDYsIDE5NCwgMjE0LCAyNDYsIDI1MCwgMTY1LCAyNDIsIDIzNSwgODEsIDIxMCwgMTAxLCAKKyAgICA2NCwgMjQ2LCAxNTUsIDE4OSwgOTUsIDI0MiwgMjM1LCA4MSwgMjI0LCA1NCwgNTEsIDIzOSwgMTQ2LCA2NCwgMjA4LCAxOTMsIAorICAgIDIwMywgMjI1LCA1MSwgMjM5LCAxNDYsIDY0LCAyMDgsIDE5MywgMjI0LCA1NCwgNTEsIDIxMCwgMTAxLCA2NCwgMjA4LCAKKyAgICAxOTMsIDIwMywgMjI1LCA1MSwgMjEwLCAxMDEsIDY0LCAyMDgsIDE5MywgNjMsIDIxNCwgNzksIDEzNCwgMjE3LCAyMSwgNjQsIAorICAgIDIxNCwgNzksIDEzNCwgMjE3LCAyMSwgNjQsIDIzOCwgNDMsIDEzNCwgMjE3LCAyMSwgNjMsIDI0MSwgNjUsIDIyMSwgMTU3LCAKKyAgICA2NCwgMjAwLCAxOTUsIDgwLCAyMzgsIDQzLCAxMzQsIDk5LCAxNjIsIDgzLCAxNDgsIDIyMiwgNjYsIDgzLCAxNDgsIDgwLCAKKyAgICA4MywgMTQ4LCA4MCwgMjA5LCAxMzksIDIwNCwgMTg1LCAyNDYsIDcxLCAyMTQsIDYzLCAxMzQsIDIxNywgMjEsIDgwLCAyMDksIAorICAgIDEzOSwgMjQ2LCA3MSwgMjE0LCA2MywgMTM0LCAyMTcsIDIxLCA4MCwgNTMsIDIwNCwgMTg1LCAyNDYsIDcxLCAyMTQsIDYzLCAKKyAgICAxMzQsIDIxNywgMjEsIDgwLCA1MywgMjQ2LCA3MSwgMjE0LCA2MywgMTM0LCAyMTcsIDIxLCA4MCwgMTI4LCAyMDksIDEzOSwgCisgICAgMjQ2LCA3MSwgMjE0LCA2MywgMTM0LCAyMTcsIDIxLCA4MCwgMTI4LCA1MywgMjQ2LCA3MSwgMjE0LCA2MywgMTM0LCAyMTcsIAorICAgIDIxLCAyNDIsIDE4OCwgMjA4LCA5MywgMjE2LCAxMjgsIDIsIDIxNywgMjEsIDgwLCAyMzgsIDQzLCAxMzQsIDIxNywgMjEsIAorICAgIDgwLCAyMzQsIDEyOCwgMjM4LCA0MywgMTM0LCAyMTcsIDIxLCA4MCwgNjMsIDIzNCwgMTI3LCAyMTIsIDIyOCwgODAsIDYzLCAKKyAgICAyMzQsIDEyOCwgMjQ4LCAyMCwgMjM3LCAyOCwgMjM0LCAxMjcsIDIxMiwgMjI4LCAyMzcsIDI4LCAyMzQsIDEyOCwgMjQ4LCAKKyAgICAyMCwgMjIyLCA2NiwgNDksIDIxNiwgMTE2LCAyMTcsIDIxLCAyMjIsIDY2LCA1MSwgMjE2LCAxMTYsIDIxNywgMjEsIDIyMiwgCisgICAgNjYsIDIzNywgNDEsIDQ5LCAyMTYsIDExNiwgMjE3LCAyMSwgMjIyLCA2NiwgMjM3LCA0MSwgNTEsIDIxNiwgMTE2LCAyMTcsIAorICAgIDIxLCAyMjIsIDY2LCAyMjUsIDIzLCAyNTEsIDcxLCAyNDgsIDcwLCAyMTcsIDIxLCAyMjIsIDY2LCAyMTMsIDQxLCAyNTEsIAorICAgIDcxLCAyNDgsIDcwLCAyMTcsIDIxLCA4MCwgMjI1LCAyMywgMjUxLCA3MSwgMjE0LCA2MywgMTM0LCAyMTcsIDIxLCA4MCwgCisgICAgMjEzLCA0MSwgMjUxLCA3MSwgMjE0LCA2MywgMTM0LCAyMTcsIDIxLCA4MCwgMjI1LCAyMywgMjUxLCA3MSwgMjQ4LCA3MCwgCisgICAgMjE3LCAyMSwgODAsIDIxMywgNDEsIDI1MSwgNzEsIDI0OCwgNzAsIDIxNywgMjEsIDE2MiwgNDksIDIwNSwgMTQ2LCAyMTAsIAorICAgIDU1LCAyNDgsIDcwLCAyMTcsIDIxLCAxNjIsIDUxLCAyMDUsIDE0NiwgMjEwLCA1NSwgMjQ4LCA3MCwgMjE3LCAyMSwgMjIyLCAKKyAgICA2NiwgNDksIDI0MiwgMTk2LCAyNDgsIDcwLCAyMTcsIDIxLCAyMjIsIDY2LCA1MSwgMjQyLCAxOTYsIDI0OCwgNzAsIDIxNywgCisgICAgMjEsIDI0MSwgMTcsIDE4OSwgNDQsIDE3LCAxMDIsIDI0MSwgMTcsIDE4OSwgNDQsIDE3LCAxMDUsIDI0MSwgMTcsIDE4OSwgCisgICAgNDQsIDE3LCAxNDcsIDI0MSwgMTcsIDE4OSwgNDQsIDE3LCAxNDksIDI0MSwgMTcsIDE4OSwgNDQsIDE3LCAxNjQsIDI0MSwgCisgICAgMTcsIDE4OSwgNDQsIDE3LCAxODcsIDI0MSwgMTcsIDE4OSwgNDQsIDE3LCAyMTAsIDEzNSwgMjQxLCAxNywgMTg5LCA0NCwgCisgICAgMTcsIDE5MiwgMjQxLCAxNywgMTg5LCA0NCwgMTcsIDIxOSwgMTEzLCAyNDEsIDE3LCAxODksIDQ0LCA0MSwgMjA2LCAxNjYsIAorICAgIDI0MSwgMTcsIDQ0LCA0MywgMTcsIDEwMiwgMjQxLCAxNywgNDQsIDQzLCAxNywgMTA1LCAyNDEsIDE3LCA0NCwgNDMsIDE3LCAKKyAgICAxNDcsIDI0MSwgMTcsIDQ0LCA0MywgMTcsIDE0OSwgMjQxLCAxNywgNDQsIDQzLCAxNywgMTY0LCAyNDEsIDE3LCA0NCwgNDMsIAorICAgIDE3LCAxODcsIDI0MSwgMTcsIDQ0LCA0MywgMTcsIDIxMCwgMTM1LCAyNDEsIDE3LCA0NCwgNDMsIDE3LCAxOTIsIDI0MSwgCisgICAgMTcsIDQ0LCA0MywgMTcsIDIxOSwgMTEzLCAyNDEsIDE3LCA0NCwgNDMsIDQxLCAyMDYsIDE2NiwgMjQxLCAxNywgMTg5LCAKKyAgICA0NCwgNDMsIDE3LCAxMDIsIDI0MSwgMTcsIDE4OSwgNDQsIDQzLCAxNywgMTA1LCAyNDEsIDE3LCAxODksIDQ0LCA0MywgMTcsIAorICAgIDE0NywgMjQxLCAxNywgMTg5LCA0NCwgNDMsIDE3LCAxNDksIDI0MSwgMTcsIDE4OSwgNDQsIDQzLCAxNywgMTY0LCAyNDEsIAorICAgIDE3LCAxODksIDQ0LCA0MywgMTcsIDE4NywgMjQxLCAxNywgMTg5LCA0NCwgNDMsIDE3LCAyMTAsIDEzNSwgMjQxLCAxNywgCisgICAgMTg5LCA0NCwgNDMsIDE3LCAxOTIsIDI0MSwgMTcsIDE4OSwgNDQsIDQzLCAxNywgMjE5LCAxMTMsIDI0MSwgMTcsIDE4OSwgCisgICAgNDQsIDQzLCA0MSwgMjA2LCAxNjYsIDgwLCAyMDEsIDI3LCA4NywgNDgsIDgwLCA5MywgNTQsIDgwLCAyMjEsIDE1NywgNTQsIAorICAgIDgwLCAyNDAsIDIzNSwgNTQsIDgwLCAyMDgsIDI1NCwgMjM5LCAxNCwgNDgsIDgwLCA4NywgNDgsIDgwLCAxNTcsIDIzOSwgCisgICAgMTQsIDQ4LCAyMzksIDE2MCwgMjE1LCAxMDAsIDg3LCA0OCwgODAsIDIxMiwgMjIwLCA4NywgNDgsIDIwNSwgOTcsIDg3LCAKKyAgICA0OCwgODAsIDIwNSwgOTcsIDg3LCA0OCwgMjQxLCAyNDMsIDIwNSwgOTcsIDg3LCA0OCwgODAsIDI0MSwgMjQzLCAyMDUsIAorICAgIDk3LCA4NywgNDgsIDYzLCA4NywgNDgsIDIwNiwgNDUsIDIwNSwgMTU2LCA4NywgMjUwLCAyMDIsIDIwNiwgNDUsIDI0OCwgCisgICAgOTEsIDg3LCAyNTAsIDIwMiwgNjMsIDg3LCAyNTAsIDIwMiwgODAsIDYzLCAyNDIsIDE4OCwgMTkxLCAyNiwgODcsIDQ4LCAKKyAgICA4MCwgNjMsIDI0MiwgMTg4LCAxODIsIDI2LCA4NywgNDgsIDIwOCwgMTkwLCA2MywgODcsIDQ4LCA4MCwgMjQzLCA2NywgNjMsIAorICAgIDg3LCA0OCwgMjEzLCA0MCwgNjQsIDg3LCA0OCwgMjI1LCAyMiwgNjQsIDg3LCA0OCwgMjQ5LCAxMjgsIDIxMCwgMTAxLCA2NCwgCisgICAgODcsIDQ4LCAyMzYsIDE5OCwgMjEwLCAxMDEsIDY0LCA4NywgNDgsIDgwLCAyMjQsIDU0LCAyMTMsIDM5LCA2NCwgODcsIDQ4LCAKKyAgICA4MCwgMjAzLCAyMjUsIDIxMywgMzksIDY0LCA4NywgNDgsIDIxOCwgMjExLCAyMjQsIDU0LCAyMTMsIDM5LCA2NCwgODcsIAorICAgIDQ4LCAyNDIsIDE5NiwgMjI0LCA3NCwgMjE4LCAyMTEsIDIwMywgMjI1LCAyMTMsIDM5LCA2NCwgODcsIDQ4LCA0NCwgODAsIAorICAgIDY0LCA4NywgNDgsIDIwMSwgMzMsIDg3LCA0OCwgMjQ4LCAxNDMsIDIwOCwgMjU0LCAyMzksIDE0LCA0OCwgMjQ4LCAxNDMsIAorICAgIDg3LCA0OCwgMjQ4LCAxNDMsIDE1NywgMjM5LCAxNCwgNDgsIDgwLCAyNDgsIDE0MywgMjA4LCAyNTQsIDIzOSwgMTQsIDQ4LCAKKyAgICA4MCwgMjQ4LCAxNDMsIDg3LCA0OCwgODAsIDI0OCwgMTQzLCAxNTcsIDIzOSwgMTQsIDQ4LCAyMDYsIDE5NiwgODcsIDQ4LCAKKyAgICA4MCwgMjA2LCAxOTUsIDg3LCA0OCwgMjAxLCA1OCwgODcsIDQ4LCA4MCwgMjAxLCA1OCwgODcsIDQ4LCAyMTcsIDQ4LCA4NywgCisgICAgNDgsIDUzLCAyNDIsIDE5NiwgMjI0LCA3NCwgMTI2LCAyNDEsIDI3LCAyNTEsIDcwLCA2NCwgMjA1LCA5OSwgMjQzLCA0NSwgCisgICAgNCwgNjQsIDIwNSwgOTgsIDIxNiwgMTQsIDE3NiwgMjA4LCAyLCAxNzYsIDIwNywgMjExLCA0OSwgMjEyLCAxMjEsIDI0OSwgCisgICAgMTE0LCAyNDEsIDE0MiwgNTEsIDIxMiwgMTIxLCAyNDksIDExNCwgMjQxLCAxNDIsIDIxNywgMzQsIDMsIDczLCAyMjgsIDczLCAKKyAgICAyMTMsIDEwNiwgMjA5LCAxNywgMjE1LCAyNywgMjA4LCAyLCAyMDcsIDIxMiwgMjE1LCAyNywgMjA5LCAxNiwgODMsIDI0OSwgCisgICAgNzcsIDMsIDIzMywgMTc3LCA5NywgMTMsIDIxMywgMTksIDI0MSwgNzAsIDE2OCwgMjQwLCAyMzQsIDEzLCAyMzcsIDE3MSwgCisgICAgMjQxLCA3MCwgOTUsIDIyNCwgOTgsIDI1MSwgNzksIDk1LCAyMjQsIDk4LCAyMTcsIDMzLCA2NCwgMjQxLCA2NSwgMywgMjQ3LCAKKyAgICA1NCwgMjQwLCAxODIsIDI2LCAzLCAyNDAsIDE4MiwgMjM4LCAyMDIsIDc2LCAyMTcsIDQ2LCAyMDMsIDIxNiwgMjI0LCA1NCwgCisgICAgNTEsIDI0MywgMTYsIDMsIDI0MCwgMTgyLCAyMDMsIDIyNSwgNDksIDI0MywgMTYsIDMsIDI0MCwgMTgyLCA0OSwgMjE2LCAKKyAgICAyNTIsIDIyNywgMTY0LCA1MSwgMjE2LCAyNTIsIDIyNywgMTY0LCAyMzYsIDE4MywgMjE2LCAyNTIsIDIyNywgMTY0LCAyMjUsIAorICAgIDcxLCAxMTUsIDIwNywgMTcsIDIyNSwgNzEsIDEyNywgMjA3LCAxNywgNDksIDI2LCA1MSwgNTMsIDIwNCwgMTg0LCA0OSwgCisgICAgMjYsIDUxLCAyMDcsIDE3LCA0OSwgMjIxLCAyMywgMTY4LCA1MSwgMjA3LCAxNywgMTY4LCA0OSwgMjA3LCAxNywgMTE1LCAKKyAgICAyMDcsIDE4LCAzLCAyNDYsIDE1NiwgNTYsIDIyNCwgNTAsIDI0MCwgMjQwLCAyNDcsIDIzNSwgMjMzLCAxNzcsIDIxMiwgCisgICAgMTY1LCA2NCwgMjQzLCA2NiwgMjQxLCA2NCwgNjQsIDI0MywgNjYsIDI0MSwgNjUsIDMsIDk4LCAyMDYsIDExLCA2NCwgMjQzLCAKKyAgICA2NiwgMjQxLCA2NSwgMywgODcsIDIwNiwgMTEsIDY0LCA1MiwgMywgOTgsIDIwNiwgMTEsIDY0LCA1MiwgMywgODcsIDIwNiwgCisgICAgMTEsIDEzLCA0OSwgNjQsIDUyLCAxNTksIDEzLCA1MSwgNjQsIDUyLCAxNTksIDEzLCA0OSwgMjUxLCA3MSwgMTU5LCAxMywgCisgICAgNTEsIDI1MSwgNzEsIDE1OSwgMTMsIDQ5LCA1MywgMjUxLCA3MSwgMTU5LCAxMywgNTEsIDUzLCAyNTEsIDcxLCAxNTksIDEzLCAKKyAgICA0OSwgNjQsIDIwNSwgMTQ2LCAyMTAsIDU1LCAxNTksIDEzLCA1MSwgNjQsIDIwNSwgMTQ2LCAyMTAsIDU1LCAxNTksIDEzLCAKKyAgICA0OSwgMjM3LCA0MSwgMjE2LCAxMTUsIDEzLCA1MSwgMjM3LCA0MSwgMjE2LCAxMTUsIDE4MiwgMjE0LCA5MCwgNDgsIDE5MSwgCisgICAgMjE0LCA5MCwgNDgsIDI1MSwgNDcsIDIzNiwgNTEsIDI0NiwgMTU2LCA0OCwgMjQ2LCAxMTIsIDIzNiwgNTEsIDI0NiwgMTU2LCAKKyAgICA0OCwgNTEsIDU1LCAzLCA0NCwgMjE1LCAxMTMsIDE2OCwgOTgsIDQ4LCAxNjgsIDg3LCA0OCwgMTY4LCA0OSwgNTEsIDQ4LCAKKyAgICAxNjgsIDk4LCA1MywgNDgsIDE2OCwgODcsIDUzLCA0OCwgMTY4LCA0OSwgNTEsIDUzLCA0OCwgMTY4LCA5OCwgNTUsIDIzNiwgCisgICAgMjAxLCAxNDgsIDE2OCwgODcsIDU1LCAyMzYsIDIwMSwgMTQ4LCAxNjgsIDk4LCA1MywgNTUsIDIzNiwgMjAxLCAxNDgsIAorICAgIDE2OCwgODcsIDUzLCA1NSwgMjM2LCAyMDEsIDE0OCwgMTY4LCA4NywgMjA4LCAxODYsIDQ4LCA1OSwgNjAsIDI0OCwgMTM3LCAKKyAgICA1OSwgNjAsIDI0MCwgMTc5LCA1OSwgNjAsIDI0MCwgNTEsIDU5LCA2MCwgMjQwLCAxNzgsIDU5LCA2MCwgMjM5LCAyNDMsIAorICAgIDU5LCA2MCwgMjQwLCAxMTQsIDU5LCA2MCwgMjQwLCA1MCwgNTksIDYwLCAyNDAsIDE3NywgNTksIDYwLCAyMzksIDIxMSwgCisgICAgNTksIDYwLCAyNDAsIDgyLCA1OSwgNjAsIDI0MCwgMTgsIDU5LCA2MCwgMjQwLCAxNDUsIDU5LCA2MCwgMjM5LCAyNDIsIDU5LCAKKyAgICA2MCwgMjQwLCAxMTMsIDU5LCA2MCwgMjQwLCA0OSwgNTksIDYwLCAyNDAsIDE3NiwgNTksIDYwLCAyMzksIDE5NSwgNTksIAorICAgIDYwLCAyNDAsIDY2LCA1OSwgNjAsIDI0MCwgMiwgNTksIDYwLCAyNDAsIDEyOSwgNTksIDYwLCAyMzksIDIyNiwgNTksIDYwLCAKKyAgICAyNDAsIDk3LCA1OSwgNjAsIDI0MCwgMzMsIDU5LCA2MCwgMjQwLCAxNjAsIDU5LCA2MCwgMjM5LCAyMTAsIDU5LCA2MCwgCisgICAgMjQwLCA4MSwgNTksIDYwLCAyNDAsIDE3LCA1OSwgNjAsIDI0MCwgMTQ0LCA1OSwgNjAsIDIzOSwgMjQxLCA1OSwgNjAsIAorICAgIDI0MCwgMTEyLCA1OSwgNjAsIDI0MCwgNDgsIDU5LCA2MCwgMjQwLCAxNzUsIDU5LCA2MCwgMjM5LCAxODcsIDU5LCA2MCwgCisgICAgMjQwLCA1OCwgNTksIDYwLCAyMzksIDI1MCwgNTksIDYwLCAyNDAsIDEyMSwgNTksIDYwLCAyMzksIDIxOCwgNTksIDYwLCAKKyAgICAyNDAsIDg5LCA1OSwgNjAsIDI0MCwgMjUsIDU5LCA2MCwgMjQwLCAxNTIsIDU5LCA2MCwgMjM5LCAyMDIsIDU5LCA2MCwgCisgICAgMjQwLCA3MywgNTksIDYwLCAyNDAsIDksIDU5LCA2MCwgMjQwLCAxMzYsIDU5LCA2MCwgMjM5LCAyMzMsIDU5LCA2MCwgMjQwLCAKKyAgICAxMDQsIDU5LCA2MCwgMjQwLCA0MCwgNTksIDYwLCAyNDAsIDE2NywgNTksIDYwLCAyMzksIDE5NCwgNTksIDYwLCAyNDAsIAorICAgIDY1LCA1OSwgNjAsIDI0MCwgMSwgNTksIDYwLCAyNDAsIDEyOCwgNTksIDYwLCAyMzksIDIyNSwgNTksIDYwLCAyNDAsIDk2LCAKKyAgICA1OSwgNjAsIDI0MCwgMzIsIDU5LCA2MCwgMjQwLCAxNTksIDU5LCA2MCwgMjM5LCAyMDksIDU5LCA2MCwgMjQwLCA4MCwgNTksIAorICAgIDYwLCAyNDAsIDE2LCA1OSwgNjAsIDI0MCwgMTQzLCA1OSwgNjAsIDIzOSwgMjQwLCA1OSwgNjAsIDI0MCwgMTExLCA1OSwgCisgICAgNjAsIDI0MCwgNDcsIDU5LCA2MCwgMjQwLCAxNzQsIDU5LCA2MCwgMjM5LCAxODMsIDU5LCA2MCwgMjQwLCA1NCwgNTksIDYwLCAKKyAgICAyMzksIDI0NiwgNTksIDYwLCAyNDAsIDExNywgNTksIDYwLCAyMzksIDIxNCwgNTksIDYwLCAyNDAsIDg1LCA1OSwgNjAsIAorICAgIDI0MCwgMjEsIDU5LCA2MCwgMjQwLCAxNDgsIDU5LCA2MCwgMjM5LCAxOTgsIDU5LCA2MCwgMjQwLCA2OSwgNTksIDYwLCAKKyAgICAyNDAsIDUsIDU5LCA2MCwgMjQwLCAxMzIsIDU5LCA2MCwgMjM5LCAyMjksIDU5LCA2MCwgMjQwLCAxMDAsIDU5LCA2MCwgCisgICAgMjQwLCAzNiwgNTksIDYwLCAyNDAsIDE2MywgNTksIDYwLCAyMzksIDE5MCwgNTksIDYwLCAyNDAsIDYxLCA1OSwgNjAsIAorICAgIDIzOSwgMjUzLCA1OSwgNjAsIDI0MCwgMTI0LCA1OSwgNjAsIDIzOSwgMjIxLCA1OSwgNjAsIDI0MCwgOTIsIDU5LCA2MCwgCisgICAgMjQwLCAyOCwgNTksIDYwLCAyNDAsIDE1NSwgNTksIDYwLCAyMzksIDIwNSwgNTksIDYwLCAyNDAsIDc2LCA1OSwgNjAsIAorICAgIDI0MCwgMTIsIDU5LCA2MCwgMjQwLCAxMzksIDU5LCA2MCwgMjM5LCAyMzYsIDU5LCA2MCwgMjQwLCAxMDcsIDU5LCA2MCwgCisgICAgMjQwLCA0MywgNTksIDYwLCAyNDAsIDE3MCwgNTksIDYwLCAyMzksIDE4NiwgNTksIDYwLCAyNDAsIDU3LCA1OSwgNjAsIAorICAgIDIzOSwgMjQ5LCA1OSwgNjAsIDI0MCwgMTIwLCA1OSwgNjAsIDIzOSwgMjE3LCA1OSwgNjAsIDI0MCwgODgsIDU5LCA2MCwgCisgICAgMjQwLCAyNCwgNTksIDYwLCAyNDAsIDE1MSwgNTksIDYwLCAyMzksIDIwMSwgNTksIDYwLCAyNDAsIDcyLCA1OSwgNjAsIAorICAgIDI0MCwgOCwgNTksIDYwLCAyNDAsIDEzNSwgNTksIDYwLCAyMzksIDIzMiwgNTksIDYwLCAyNDAsIDEwMywgNTksIDYwLCAKKyAgICAyNDAsIDM5LCA1OSwgNjAsIDI0MCwgMTY2LCA1OSwgNjAsIDIzOSwgMTkzLCA1OSwgNjAsIDI0MCwgNjQsIDU5LCA2MCwgCisgICAgMjQwLCAwLCA1OSwgNjAsIDI0MCwgMTI3LCA1OSwgNjAsIDIzOSwgMjI0LCA1OSwgNjAsIDI0MCwgOTUsIDU5LCA2MCwgMjQwLCAKKyAgICAzMSwgNTksIDYwLCAyNDAsIDE1OCwgNTksIDYwLCAyMzksIDIwOCwgNTksIDYwLCAyNDAsIDc5LCA1OSwgNjAsIDI0MCwgMTUsIAorICAgIDU5LCA2MCwgMjQwLCAxNDIsIDU5LCA2MCwgMjM5LCAyMzksIDU5LCA2MCwgMjQwLCAxMTAsIDU5LCA2MCwgMjQwLCA0NiwgCisgICAgNTksIDYwLCAyNDAsIDE3MywgNTksIDYwLCAyMzksIDE4MSwgNTksIDYwLCAyNDAsIDUyLCA1OSwgNjAsIDIzOSwgMjQ0LCAKKyAgICA1OSwgNjAsIDI0MCwgMTE1LCA1OSwgNjAsIDIzOSwgMjEyLCA1OSwgNjAsIDI0MCwgODMsIDU5LCA2MCwgMjQwLCAxOSwgNTksIAorICAgIDYwLCAyNDAsIDE0NiwgNTksIDYwLCAyMzksIDE5NiwgNTksIDYwLCAyNDAsIDY3LCA1OSwgNjAsIDI0MCwgMywgNTksIDYwLCAKKyAgICAyNDAsIDEzMCwgNTksIDYwLCAyMzksIDIyNywgNTksIDYwLCAyNDAsIDk4LCA1OSwgNjAsIDI0MCwgMzQsIDU5LCA2MCwgCisgICAgMjQwLCAxNjEsIDU5LCA2MCwgMjM5LCAxODgsIDU5LCA2MCwgMjQwLCA1OSwgNTksIDYwLCAyMzksIDI1MSwgNTksIDYwLCAKKyAgICAyNDAsIDEyMiwgNTksIDYwLCAyMzksIDIxOSwgNTksIDYwLCAyNDAsIDkwLCA1OSwgNjAsIDI0MCwgMjYsIDU5LCA2MCwgCisgICAgMjQwLCAxNTMsIDU5LCA2MCwgMjM5LCAyMDMsIDU5LCA2MCwgMjQwLCA3NCwgNTksIDYwLCAyNDAsIDEwLCA1OSwgNjAsIAorICAgIDI0MCwgMTM3LCA1OSwgNjAsIDIzOSwgMjM0LCA1OSwgNjAsIDI0MCwgMTA1LCA1OSwgNjAsIDI0MCwgNDEsIDU5LCA2MCwgCisgICAgMjQwLCAxNjgsIDU5LCA2MCwgMjM5LCAxODQsIDU5LCA2MCwgMjQwLCA1NSwgNTksIDYwLCAyMzksIDI0NywgNTksIDYwLCAKKyAgICAyNDAsIDExOCwgNTksIDYwLCAyMzksIDIxNSwgNTksIDYwLCAyNDAsIDg2LCA1OSwgNjAsIDI0MCwgMjIsIDU5LCA2MCwgCisgICAgMjQwLCAxNDksIDU5LCA2MCwgMjM5LCAxOTksIDU5LCA2MCwgMjQwLCA3MCwgNTksIDYwLCAyNDAsIDYsIDU5LCA2MCwgMjQwLCAKKyAgICAxMzMsIDU5LCA2MCwgMjM5LCAyMzAsIDU5LCA2MCwgMjQwLCAxMDEsIDU5LCA2MCwgMjQwLCAzNywgNTksIDYwLCAyNDAsIAorICAgIDE2NCwgNTksIDYwLCAyMzksIDE5MSwgNTksIDYwLCAyNDAsIDYyLCA1OSwgNjAsIDIzOSwgMjU0LCA1OSwgNjAsIDI0MCwgCisgICAgMTI1LCA1OSwgNjAsIDIzOSwgMjIyLCA1OSwgNjAsIDI0MCwgOTMsIDU5LCA2MCwgMjQwLCAyOSwgNTksIDYwLCAyNDAsIAorICAgIDE1NiwgNTksIDYwLCAyMzksIDIwNiwgNTksIDYwLCAyNDAsIDc3LCA1OSwgNjAsIDI0MCwgMTMsIDU5LCA2MCwgMjQwLCAKKyAgICAxNDAsIDU5LCA2MCwgMjM5LCAyMzcsIDU5LCA2MCwgMjQwLCAxMDgsIDU5LCA2MCwgMjQwLCA0NCwgNTksIDYwLCAyNDAsIAorICAgIDE3MSwgNTksIDYwLCAyMzksIDE4MiwgNTksIDYwLCAyNDAsIDUzLCA1OSwgNjAsIDIzOSwgMjQ1LCA1OSwgNjAsIDI0MCwgCisgICAgMTE2LCA1OSwgNjAsIDIzOSwgMjEzLCA1OSwgNjAsIDI0MCwgODQsIDU5LCA2MCwgMjQwLCAyMCwgNTksIDYwLCAyNDAsIAorICAgIDE0NywgNTksIDYwLCAyMzksIDE5NywgNTksIDYwLCAyNDAsIDY4LCA1OSwgNjAsIDI0MCwgNCwgNTksIDYwLCAyNDAsIDEzMSwgCisgICAgNTksIDYwLCAyMzksIDIyOCwgNTksIDYwLCAyNDAsIDk5LCA1OSwgNjAsIDI0MCwgMzUsIDU5LCA2MCwgMjQwLCAxNjIsIDU5LCAKKyAgICA2MCwgMjM5LCAxODksIDU5LCA2MCwgMjQwLCA2MCwgNTksIDYwLCAyMzksIDI1MiwgNTksIDYwLCAyNDAsIDEyMywgNTksIAorICAgIDYwLCAyMzksIDIyMCwgNTksIDYwLCAyNDAsIDkxLCA1OSwgNjAsIDI0MCwgMjcsIDU5LCA2MCwgMjQwLCAxNTQsIDU5LCA2MCwgCisgICAgMjM5LCAyMDQsIDU5LCA2MCwgMjQwLCA3NSwgNTksIDYwLCAyNDAsIDExLCA1OSwgNjAsIDI0MCwgMTM4LCA1OSwgNjAsIAorICAgIDIzOSwgMjM1LCA1OSwgNjAsIDI0MCwgMTA2LCA1OSwgNjAsIDI0MCwgNDIsIDU5LCA2MCwgMjQwLCAxNjksIDU5LCA2MCwgCisgICAgMjM5LCAxODUsIDU5LCA2MCwgMjQwLCA1NiwgNTksIDYwLCAyMzksIDI0OCwgNTksIDYwLCAyNDAsIDExOSwgNTksIDYwLCAKKyAgICAyMzksIDIxNiwgNTksIDYwLCAyNDAsIDg3LCA1OSwgNjAsIDI0MCwgMjMsIDU5LCA2MCwgMjQwLCAxNTAsIDU5LCA2MCwgCisgICAgMjM5LCAyMDAsIDU5LCA2MCwgMjQwLCA3MSwgNTksIDYwLCAyNDAsIDcsIDU5LCA2MCwgMjQwLCAxMzQsIDU5LCA2MCwgMjM5LCAKKyAgICAyMzEsIDU5LCA2MCwgMjQwLCAxMDIsIDU5LCA2MCwgMjQwLCAzOCwgNTksIDYwLCAyNDAsIDE2NSwgNTksIDYwLCAyMzksIAorICAgIDE5MiwgNTksIDYwLCAyNDAsIDYzLCA1OSwgNjAsIDIzOSwgMjU1LCA1OSwgNjAsIDI0MCwgMTI2LCA1OSwgNjAsIDIzOSwgCisgICAgMjIzLCA1OSwgNjAsIDI0MCwgOTQsIDU5LCA2MCwgMjQwLCAzMCwgNTksIDYwLCAyNDAsIDE1NywgNTksIDYwLCAyMzksIAorICAgIDIwNywgNTksIDYwLCAyNDAsIDc4LCA1OSwgNjAsIDI0MCwgMTQsIDU5LCA2MCwgMjQwLCAxNDEsIDU5LCA2MCwgMjM5LCAKKyAgICAyMzgsIDU5LCA2MCwgMjQwLCAxMDksIDU5LCA2MCwgMjQwLCA0NSwgNTksIDYwLCAyNDAsIDE3MiwgODcsIDIwNCwgMTQxLCAKKyAgICA1NSwgMywgODMsIDk3LCA4NywgMjA0LCAxNDEsIDU1LCAzLCA1MywgODMsIDk3LCA5OCwgNTMsIDU1LCAzLCA4MywgOTcsIAorICAgIDg3LCA1MywgNTUsIDMsIDgzLCA5NywgNDksIDUxLCA1MywgNTUsIDMsIDgzLCA5NywgODcsIDIwNCwgMTQxLCA1NSwgMjM2LCAKKyAgICAyMDEsIDE0OCwgOTgsIDUzLCA1NSwgMjM2LCAyMDEsIDE0OCwgODcsIDUzLCA1NSwgMjM2LCAyMDEsIDE0OCwgMTkxLCA1NSwgCisgICAgMywgMjMzLCAxNzcsIDk3LCAxODIsIDU1LCAzLCAyMzMsIDE3NywgOTcsIDE4MiwgMjA1LCA4MywgNDgsIDE5MSwgMjA1LCAKKyAgICA4MywgNDgsIDk4LCA1MywgMjQxLCAyNDUsIDQ4LCA4NywgNTMsIDI0MSwgMjQ1LCA0OCwgOTgsIDIwNSwgODMsIDI0MSwgCisgICAgMjQ1LCA0OCwgODcsIDIwNSwgODMsIDI0MSwgMjQ1LCA0OCwgODcsIDIwNCwgMTQxLCAyMDUsIDgzLCAyNDEsIDI0NSwgNDgsIAorICAgIDg3LCA1NSwgMywgMjM5LCAxODAsIDIwOCwgOTIsIDE4MiwgNTUsIDIwNSwgMTg2LCAxNDgsIDE5MSwgNTUsIDIwNSwgMTg2LCAKKyAgICAxNDgsIDg3LCA1NSwgMywgMjA3LCA3LCAzLCA4MywgOTcsIDg3LCA1NSwgMywgMjA3LCA3LCAzLCA1MywgODMsIDk3LCA4NywgCisgICAgMjA0LCAxNDEsIDU1LCAzLCAyMDcsIDYsIDg3LCAyMDQsIDE0MSwgNTUsIDMsIDIwNywgNywgMywgODMsIDk3LCA4NywgMjA0LCAKKyAgICAxNDEsIDU1LCAzLCAyMDcsIDcsIDMsIDUzLCA4MywgOTcsIDk4LCAyNTAsIDIwNCwgODcsIDI1MCwgMjA0LCA5OCwgNTMsIAorICAgIDI1MCwgMjA0LCA4NywgNTMsIDI1MCwgMjA0LCA5OCwgNTUsIDIwNSwgMTg2LCA2MywgMjQxLCA2NCwgODcsIDU1LCAyMDUsIAorICAgIDE4NiwgNjMsIDI0MSwgNjQsIDk4LCA1NSwgMjM2LCAyMDEsIDI0OSwgNzcsIDIwNSwgMTg2LCA2MywgMjQxLCA2NCwgODcsIAorICAgIDU1LCAyMzYsIDIwMSwgMjQ5LCA3NywgMjA1LCAxODYsIDYzLCAyNDEsIDY0LCAxNTcsIDIwMSwgNDgsIDI2LCAyMDgsIDI1NCwgCisgICAgMjM5LCAxNCwgNDgsIDE1NywgMjM5LCAxNCwgMjYsIDIwOCwgMjU0LCAyMDEsIDQ4LCA0OCwgMTU3LCAyMDEsIDQ4LCA1NSwgCisgICAgMywgMTE3LCAxNTcsIDIzOSwgMTQsIDU1LCAzLCAxMTcsIDIwOCwgMjU0LCAyMzksIDE0LCA1NSwgMywgMTE3LCAyMDgsIAorICAgIDI1NCwgMjAxLCA0OCwgNTUsIDMsIDExNywgMTU3LCAyMDEsIDQ4LCA1NSwgMjYsIDE1NywgMjM5LCAxNCwgNDgsIDE1NywgCisgICAgMjM5LCAxNCwgNTUsIDI2LCAyMDgsIDI1NCwgMjM5LCAxNCwgNDgsIDIwOCwgMjU0LCAyMzksIDE0LCA1NSwgMjYsIDIwOCwgCisgICAgMjU0LCAyMDEsIDQ4LCA0OCwgMjA4LCAyNTQsIDIwMSwgNDgsIDU1LCAyNiwgMTU3LCAyMDEsIDQ4LCA0OCwgMjEzLCAxOSwgCisgICAgMjQxLCA3MSwgMjQyLCAyMjgsIDIzNywgMTcxLCAyNDEsIDcwLCAyMzcsIDE3MSwgMjQxLCA3MSwgMjQyLCAyMjgsIDIxMywgCisgICAgMTksIDI0MSwgNzAsIDIwOCwgMjU0LCAyMzksIDE0LCA1NSwgMjQyLCAyMjgsIDE1NywgMjM5LCAxNCwgNDgsIDE1NywgMjM5LCAKKyAgICAxNCwgNTUsIDI0MiwgMjI4LCAyMDgsIDI1NCwgMjM5LCAxNCwgNDgsIDIzNywgMTcxLCAyNDEsIDcxLCAyNDIsIDIyOCwgCisgICAgMTU3LCAyMzksIDE0LCA0OCwgMjEzLCAxOSwgMjQxLCA3MSwgMjQyLCAyMjgsIDIwOCwgMjU0LCAyMzksIDE0LCA0OCwgMTU3LCAKKyAgICAyMzksIDE0LCA1NSwgMjQyLCAyMjgsIDE1NywgMjAxLCA0OCwgNDgsIDE1NywgMjAxLCA0OCwgNTUsIDI0MiwgMjI4LCAxNTcsIAorICAgIDIzOSwgMTQsIDQ4LCAyMDEsIDc4LCA1NSwgMjE1LCA5NiwgMjQxLCA3LCAyMTMsIDQ2LCA1NSwgMjE1LCA5NiwgODcsIDIwNiwgCisgICAgOTgsIDI0MiwgMTg2LCAyMDMsIDIxNiwgNTUsIDIxNSwgOTYsIDg3LCAyMDYsIDk4LCAyNDIsIDE4NiwgMjM5LCAxNjUsIDU1LCAKKyAgICAyMTUsIDk2LCAxOTEsIDIwNiwgOTgsIDI0MiwgMTg2LCAyMjUsIDE4LCA1NSwgMjE1LCA5NiwgMTkxLCAyMDYsIDk4LCAyNDIsIAorICAgIDE4NiwgMjEzLCAzNSwgMjEzLCAzOCwgMjUwLCAyMzcsIDI0NiwgMTEyLCA0OCwgMjI1LCAyMSwgMjUwLCAyMzcsIDI1MSwgCisgICAgNDcsIDQ4LCAyMDUsIDE1OCwgMjUwLCAyMzcsIDI1MSwgNDcsIDQ4LCAyNDgsIDkzLCAyNTAsIDIzNywgMjUxLCA0NywgNDgsIAorICAgIDIwNSwgMTU4LCAyNTAsIDIzNywgMjQ2LCAxMTIsIDU1LCAzLCAyMjEsIDE1NiwgMjA1LCAxNTgsIDI1MCwgMjM3LCAyNTEsIAorICAgIDQ3LCA1NSwgMywgMjE1LCAxMTMsIDIyNCwgNTQsIDUxLCAyMTAsIDE2OSwgMjQ2LCAxMTIsIDQ4LCAyMjQsIDU0LCA0OSwgCisgICAgMjEwLCAxNjksIDI1MSwgNDcsIDQ4LCAyNTEsIDQ3LCAyNDYsIDExMCwgMjQ2LCAxNTYsIDQ4LCAyNDYsIDExMiwgMjQ2LCAKKyAgICAxMTAsIDI0NiwgMTU2LCA0OCwgODcsIDU1LCA4OCwgMjA5LCAyNTAsIDk4LCA0OCwgOTgsIDU1LCA4OCwgMjA5LCAyNTAsIAorICAgIDg3LCA0OCwgMjA5LCAyNTAsIDg3LCA1NSwgODgsIDk4LCA0OCwgODcsIDU1LCAzLCA5MywgNTcsIDk4LCA1NSwgMywgOTMsIAorICAgIDU3LCA4NywgNTUsIDIwNiwgMzgsIDIwMCwgMTk1LCA0OSwgNTEsIDU1LCAyMDYsIDM4LCA0LCAyNDYsIDE1NSwgMTgyLCAKKyAgICAyMDQsIDE0MSwgNTUsIDIzNiwgMjAxLCA0LCAyNDYsIDE1NSwgNDksIDE1NCwgMTE1LCA1MSwgMTU0LCAxMjcsIDIzNCwgCisgICAgMTYwLCA0OSwgMTU0LCAxMjcsIDUxLCAxNTQsIDExNSwgMjM0LCAxNjAsIDExNSwgMTU0LCA1MSwgMTI3LCAxNTQsIDQ5LCAKKyAgICAyMzQsIDE2MCwgMTE1LCAxNTQsIDQ5LCAxMjcsIDE1NCwgNTEsIDIzNCwgMTYwLCA0OSwgMTU0LCAxMTUsIDUxLCAxNTQsIAorICAgIDExNSwgMjM0LCAxNjAsIDExNSwgMTU0LCA1MSwgMTI3LCAxNTQsIDUxLCAyMzQsIDE2MCwgNDksIDE1NCwgMTI3LCA1MSwgCisgICAgMTU0LCAxMjcsIDIzNCwgMTYwLCAxMTUsIDE1NCwgNDksIDEyNywgMTU0LCA0OSwgMjM0LCAxNjAsIDk4LCAyMzQsIDE2MSwgCisgICAgMywgMTU0LCAxMTUsIDIwNSwgMTg2LCAxNDgsIDg3LCAyMzQsIDE2MSwgMywgMTU0LCAxMTUsIDIwNSwgMTg2LCAxNDgsIAorICAgIDE4MiwgMjM0LCAxNjEsIDMsIDE1NCwgNTEsIDIwNSwgMTg2LCAxNDgsIDE5MSwgMjM0LCAxNjEsIDMsIDE1NCwgNTEsIDIwNSwgCisgICAgMTg2LCAxNDgsIDk4LCAyMzQsIDE2MSwgMywgMTU0LCAxMjcsIDIwNSwgMTg2LCAxNDgsIDg3LCAyMzQsIDE2MSwgMywgMTU0LCAKKyAgICAxMjcsIDIwNSwgMTg2LCAxNDgsIDE4MiwgMjM0LCAxNjEsIDMsIDE1NCwgNDksIDIwNSwgMTg2LCAxNDgsIDE5MSwgMjM0LCAKKyAgICAxNjEsIDMsIDE1NCwgNDksIDIwNSwgMTg2LCAxNDgsIDk4LCAyMzQsIDE2MSwgMywgMTU0LCAxMTUsIDIzNiwgMjAxLCAxNDgsIAorICAgIDg3LCAyMzQsIDE2MSwgMywgMTU0LCAxMTUsIDIzNiwgMjAxLCAxNDgsIDE4MiwgMjM0LCAxNjEsIDMsIDE1NCwgNTEsIDIzNiwgCisgICAgMjAxLCAxNDgsIDE5MSwgMjM0LCAxNjEsIDMsIDE1NCwgNTEsIDIzNiwgMjAxLCAxNDgsIDk4LCAyMzQsIDE2MSwgMywgMTU0LCAKKyAgICAxMjcsIDIzNiwgMjAxLCAxNDgsIDg3LCAyMzQsIDE2MSwgMywgMTU0LCAxMjcsIDIzNiwgMjAxLCAxNDgsIDE4MiwgMjM0LCAKKyAgICAxNjEsIDMsIDE1NCwgNDksIDIzNiwgMjAxLCAxNDgsIDE5MSwgMjM0LCAxNjEsIDMsIDE1NCwgNDksIDIzNiwgMjAxLCAxNDgsIAorICAgIDk4LCAyMzQsIDE2MSwgMywgMTU0LCAxMTUsIDg4LCA5OCwgMjM0LCAxNjEsIDMsIDE1NCwgMjM5LCAxNjcsIDE4MiwgMjM0LCAKKyAgICAxNjEsIDMsIDE1NCwgNDksIDI0OCwgMjEyLCAxODIsIDIzNCwgMTYxLCAzLCAxNTQsIDIxMywgNDYsIDg3LCAyMzQsIDE2MSwgCisgICAgMywgMTU0LCAxMTUsIDg4LCA4NywgMjM0LCAxNjEsIDMsIDE1NCwgMjM5LCAxNjcsIDE5MSwgMjM0LCAxNjEsIDMsIDE1NCwgCisgICAgNDksIDI0OCwgMjEyLCAxOTEsIDIzNCwgMTYxLCAzLCAxNTQsIDIxMywgNDYsIDk4LCAyMzQsIDE2MSwgMywgMTU0LCAxMTUsIAorICAgIDg4LCA4NywgMjM0LCAxNjEsIDMsIDE1NCwgMjAzLCAyMjgsIDk4LCAyMzQsIDE2MSwgMywgMTU0LCAxMjcsIDg4LCA4NywgCisgICAgMjM0LCAxNjEsIDMsIDE1NCwgMjM5LCAxNjcsIDg3LCAyMzQsIDE2MSwgMywgMTU0LCAxMTUsIDg4LCA5OCwgMjM0LCAxNjEsIAorICAgIDMsIDE1NCwgMjAzLCAyMjgsIDg3LCAyMzQsIDE2MSwgMywgMTU0LCAxMjcsIDg4LCA5OCwgMjM0LCAxNjEsIDMsIDE1NCwgCisgICAgMjM5LCAxNjcsIDk4LCAyMzQsIDE2MSwgMywgMTU0LCAxMTUsIDg4LCAxNjgsIDI0MSwgMjQ0LCA5OCwgMjM0LCAxNjEsIDMsIAorICAgIDE1NCwgMTI3LCAyNDgsIDIyOCwgMTY4LCAyNDEsIDI0NCwgODcsIDIzNCwgMTYxLCAzLCAxNTQsIDExNSwgODgsIDE2OCwgCisgICAgMjQxLCAyNDQsIDg3LCAyMzQsIDE2MSwgMywgMTU0LCAxMjcsIDI0OCwgMjI4LCAxNjgsIDI0MSwgMjQ0LCAxODIsIDIzNCwgCisgICAgMTYxLCAzLCAxNTQsIDQ5LCAyNDgsIDIxMiwgMTkxLCAyMzQsIDE2MSwgMywgMTU0LCAyMTMsIDQ2LCAxOTEsIDIzNCwgMTYxLCAKKyAgICAzLCAxNTQsIDQ5LCAyNDgsIDIxMiwgMTgyLCAyMzQsIDE2MSwgMywgMTU0LCAyMTMsIDQ2LCA1MSwgNTMsIDU1LCAzLCAyMTIsIAorICAgIDIxOSwgMjM0LCAxMzYsIDIzOCwgMTIyLCAyLCA4OCwgODcsIDQ4LCAyMDUsIDI0MSwgMjE3LCA0NCwgODgsIDg3LCA0OCwgCisgICAgOTgsIDU1LCA4OCwgMjA1LCAyNDEsIDIxNywgNDMsIDg3LCA1NSwgODgsIDIwNSwgMjQxLCAyMTcsIDQzLCA4NywgNTUsIDg4LCAKKyAgICAyNTEsIDExNywgMTYwLCAxMzgsIDIyNCwgMjQxLCA4OCwgOTgsIDQ4LCA5OCwgNTUsIDIwNiwgMzgsIDIyNCwgMjQwLCAyMzUsIAorICAgIDY3LCA4OCwgODcsIDQ4LCAyMDgsIDMsIDg4LCA4NywgNDgsIDk4LCA1NSwgMjA2LCAzOCwgMjA4LCAyLCAyMDcsIDIxMiwgCisgICAgODgsIDk4LCA0OCwgNDksIDIzNywgNzIsIDIwNywgNiwgNTEsIDIzNywgNzIsIDIwNywgNiwgMTE1LCAyMzcsIDcyLCAyMDcsIAorICAgIDYsIDEyNywgMjM3LCA3MiwgMjA3LCA2LCAyMDUsIDgzLCA4MywgMjQ5LCA3NywgMjQxLCAxNDIsIDE5OSwgMTU4LCAyMTgsIAorICAgIDIxMywgMjA4LCAyMDQsIDE5OSwgMTU4LCAyMTgsIDIxMywgMjA0LCAxMjgsIDI0NiwgNzksIDQ5LCA2NCwgMjQyLCAxOTYsIAorICAgIDE1OSwgNTEsIDY0LCAyNDIsIDE5NiwgMTU5LCA0OSwgNjQsIDIxNiwgMTE1LCA1MSwgNjQsIDIxNiwgMTE1LCAxOTksIDE1OCwgCisgICAgMjE4LCAyMTMsIDQ5LCAyMjgsIDEzMywgMTU5LCAxOTksIDE1OCwgMjE4LCAyMTMsIDUxLCAyMjgsIDEzMywgMTU5LCAxOTksIAorICAgIDE1OCwgMjE4LCAyMTMsIDQ5LCAyNDgsIDE2NywgMTU5LCAxOTksIDE1OCwgMjE4LCAyMTMsIDUxLCAyNDgsIDE2NywgMTU5LCAKKyAgICA0OSwgNTIsIDI0OCwgNzAsIDMsIDIwMywgMjUxLCA1MSwgNTIsIDI0OCwgNzAsIDMsIDIwMywgMjUxLCA0OSwgNTIsIDI0OCwgCisgICAgNzAsIDMsIDIwNiwgMTIsIDIyOCwgMTE4LCAyMDUsIDE1OCwgMjQzLCAxNSwgNTEsIDUyLCAyNDgsIDcwLCAzLCAyMDYsIDEyLCAKKyAgICAyMjgsIDExOCwgMjQ4LCA5MywgMjQzLCAxNSwgNDksIDUyLCAyNDgsIDcwLCAzLCAyMDYsIDEyLCAyMjgsIDExOCwgMjQ4LCAKKyAgICA5MywgMjQzLCAxNSwgNTEsIDUyLCAyNDgsIDcwLCAzLCAyMDYsIDEyLCAyMjgsIDExOCwgMjA1LCAxNTgsIDI0MywgMTUsIAorICAgIDQ5LCAyNTEsIDcxLCAyNDgsIDcwLCAzLCAyNDAsIDE4MiwgNTEsIDI1MSwgNzEsIDI0OCwgNzAsIDMsIDI0MCwgMTgyLCA0OSwgCisgICAgMjUwLCAyMzcsIDIyNCwgMjQxLCAxNTksIDUxLCAyNTAsIDIzNywgMjM1LCA2NywgMTU5LCA1MywgNDksIDI1MCwgMjM3LCAKKyAgICAyMzUsIDY3LCAxNTksIDUzLCA1MSwgMjUwLCAyMzcsIDIyNCwgMjQxLCAxNTksIDQ5LCA2MywgMjA1LCAxNDYsIDIxMCwgNTUsIAorICAgIDE1OSwgNTEsIDYzLCAyMDUsIDE0NiwgMjEwLCA1NSwgMTU5LCAyMzksIDE4MCwgMjM3LCAxMjcsIDgzLCAxOTksIDI3LCAKKyAgICAyMjQsIDE3NiwgMjIyLCA3MywgMjUxLCA3MSwgMjE3LCA0NiwgMjI1LCAyOCwgNTEsIDI1MSwgNzEsIDIwMywgNzMsIDMsIAorICAgIDIwOCwgMTkzLCAyMjIsIDczLCA1MSwgMjUxLCA3MSwgMywgMjQwLCAxODIsIDI1MSwgNzEsIDMsIDIxMiwgMTIzLCAyMjgsIAorICAgIDczLCAyNTEsIDIzOSwgMjUxLCA3MCwgMjA4LCAyMjQsIDI1MSwgNzEsIDIxNywgNDYsIDIyNSwgMjgsIDIwOCwgMjI0LCAKKyAgICAyNTEsIDcxLCAyMTcsIDQ2LCAyMDMsIDIyOCwgMjA0LCAxODUsIDI1MSwgNzAsIDIxMywgMTA1LCAyNTEsIDcwLCAyNTEsIAorICAgIDcxLCAzLCAyMDMsIDI1MSwgMjEzLCAxMDUsIDI1MSwgNzEsIDMsIDIwMywgMjUxLCAyMTcsIDEzOCwgMjUxLCA3MSwgMjE3LCAKKyAgICA0NiwgMjAzLCAyMjgsIDIxNywgMTM4LCAyNTEsIDcxLCAyMTcsIDQ2LCAyMzksIDE2NywgMjIyLCA3MywgMjUxLCA3MSwgMywgCisgICAgMTc2LCAyNTAsIDIxNSwgMjM4LCAxNjgsIDIyOCwgMTE4LCA1NSwgMjE1LCA5NiwgMTE1LCAyNiwgMjEzLCA0NiwgMjIyLCAKKyAgICA3MywgMjUxLCA3MSwgMywgMTc2LCAyNTAsIDIxNSwgMjM4LCAxNjgsIDIyOCwgMTE4LCA1NSwgMjE1LCA5NiwgMTE1LCAyNiwgCisgICAgMjI1LCAyOCwgMjIyLCA3MywgMjUxLCA3MSwgMywgMTc2LCAyNTAsIDIxNSwgMjM4LCAxNjgsIDIyOCwgMTE4LCA1NSwgMjE1LCAKKyAgICA5NiwgMTI3LCAyNiwgMjEzLCA0NiwgMjIyLCA3MywgMjUxLCA3MSwgMywgMTc2LCAyNTAsIDIxNSwgMjM4LCAxNjgsIDIyOCwgCisgICAgMTE4LCA1NSwgMjE1LCA5NiwgMTI3LCAyNiwgMjI1LCAyOCwgMjIyLCA3MywgMjUxLCA3MSwgMywgMTc2LCAyNTAsIDIxNSwgCisgICAgMjM4LCAxNjgsIDIyOCwgMTE4LCA1NSwgMjE1LCA5NiwgNTEsIDI2LCAyMDMsIDIyOCwgMjIyLCA3MywgMjUxLCA3MSwgMywgCisgICAgMTc2LCAyNTAsIDIxNSwgMjM4LCAxNjgsIDIyOCwgMTE4LCA1NSwgMjE1LCA5NiwgNDksIDI2LCAyMDMsIDIyOCwgMjIyLCAKKyAgICA3MywgMjUxLCA3MSwgMywgMTc2LCAyNTAsIDIxNSwgMjM4LCAxNjgsIDIyOCwgMTE4LCA1NSwgMjE1LCA5NiwgNTEsIDI2LCAKKyAgICAyMzksIDE2NywgMjIyLCA3MywgMjUxLCA3MSwgMywgMTc2LCAyNTAsIDIxNSwgMjM4LCAxNjgsIDIyOCwgMTE4LCA1NSwgCisgICAgMjE1LCA5NiwgNDksIDI2LCAyMzksIDE2NywgMjEzLCAxMDUsIDIzOCwgMTgxLCAyMTAsIDE0MSwgMjM4LCAxODEsIDIxMCwgCisgICAgMTQyLCAzLCAyMTYsIDI0NiwgMjM4LCAxODEsIDIxMCwgMTQyLCAzLCA0LCAyNDYsIDE1NiwgNTYsIDIzOCwgMTgxLCAyMTAsIAorICAgIDE0MiwgMywgNTEsIDU1LCA1NiwgMjM4LCAxODEsIDIxMCwgMTQyLCAzLCA0OSwgNTUsIDU2LCAyNDYsIDE1NiwgMywgMjMzLCAKKyAgICAxNzcsIDE0OCwgNDQsIDgzLCAxNDgsIDQ0LCAyMTYsIDEyMCwgNDQsIDIxMywgMTA2LCAyMDksIDE2LCA0NCwgMjE2LCAxNCwgCisgICAgMjQ2LCAxNTYsIDI0MCwgMjQwLCAyNDcsIDIzNSwgMjMzLCAxNzcsIDI0OSwgNzcsIDI2LCAyMDUsIDE1OCwgMTY3LCAyNDAsIAorICAgIDI0MCwgMjQ3LCAyMzUsIDgzLCAxNDgsIDI0NiwgMTU2LCAzLCAyMDcsIDIxNCwgMjAwLCAxOTUsIDQ0LCAyNTEsIDQ1LCAKKyAgICAyNDAsIDIzNSwgNTQsIDExNSwgNTUsIDIwNiwgMzgsIDI0NiwgMTU1LCA0NCwgNjQsIDI0OCwgMjAsIDQ0LCAyNDgsIDIwLCAKKyAgICA0NCwgMjI0LCAyNDAsIDQ0LCAyMzUsIDY2LCAyNDYsIDE1NiwgMywgNCwgMjQ2LCAxNTYsIDIwNSwgMTg2LCAyMDYsIDEwNywgCisgICAgMjEzLCA0NiwgMjQ2LCAxNTYsIDMsIDEyMCwgMjMzLCAxNzcsIDIwOCwgMzUsIDIwNSwgMTg2LCAyMDYsIDEwNywgMjEzLCAKKyAgICA0NiwgOTUsIDIxMywgMTksIDI0MSwgNzEsIDIwOSwgNzUsIDk1LCAyMzcsIDE3MSwgMjQxLCA3MSwgMjA5LCA3NSwgOTUsIAorICAgIDI1MCwgMTY1LCA5NSwgNCwgMjQ2LCAxNTUsIDk1LCAyMDgsIDE5MywgMTIwLCAyMjcsIDE2MywgMjA4LCAxOTEsIDIwNSwgCisgICAgOTksIDMsIDczLCA1NiwgMjA1LCA5OSwgMywgMjAzLCAyNTEsIDIxMiwgMTIzLCAyMjgsIDExOCwgMjA1LCA5OCwgMjA1LCAKKyAgICA5OSwgMywgMjEwLCAxNDgsIDI1MCwgMTU2LCAyNDgsIDkyLCA1MSwgMjA1LCA5OSwgODgsIDQ5LCAyMDUsIDk4LCA0OSwgCisgICAgMjA1LCA5OSwgMjQ4LCAyMTIsIDgzLCAxNDgsIDgzLCAyNDksIDc3LCAyNDgsIDIxMiwgNTEsIDIwNSwgOTgsIDI0OCwgODAsIAorICAgIDMsIDQ5LCAxNjcsIDI0OCwgMTQ0LCAyNDgsIDgwLCAzLCA1MSwgMTY3LCAyNDgsIDE0NCwgNjMsIDI0OCwgNzksIDI0LCAzLCAKKyAgICA0OSwgMTY3LCAyNDgsIDE0NCwgMjQsIDMsIDUxLCAxNjcsIDI0OCwgMTQ0LCA2NCwgMjMzLCAxMTEsIDYzLCAyMzMsIDExMSwgCisgICAgNDksIDIwMSwgMjIsIDIzNywgMTI3LCA1MSwgMjAxLCAyMiwgMjM3LCAxMjcsIDQ5LCA1MywgMjAxLCAyMiwgMjM3LCAxMjcsIAorICAgIDUxLCA1MywgMjAxLCAyMiwgMjM3LCAxMjcsIDIyOCwgMTEwLCAyMjgsIDk0LCAyMDYsIDgsIDExOSwgMjI4LCA5NCwgMjI4LCAKKyAgICA5NSwgMjIwLCAyOCwgMywgODMsIDE0OCwgMjM5LCAxNzQsIDIyMSwgMjMsIDUyLCAzLCAyNDMsIDM3LCAyMTYsIDI1MSwgCisgICAgMjI4LCAxMDcsIDI1MCwgMTg4LCAyMDksIDIxNCwgMjE1LCAxLCAyMzgsIDEyMiwgMiwgMjYsIDIwOSwgNzcsIDIxNiwgMTIwLCAKKyAgICAyMzgsIDEyMiwgMiwgMjYsIDIwOSwgNzcsIDIxNiwgMTIxLCAzLCAyMDUsIDI0MSwgNTYsIDIzMiwgMjIzLCAyMDUsIDE4NiwgCisgICAgMjYsIDIwOSwgNzcsIDIxNiwgMTIwLCAyMzUsIDEyNiwgMjA4LCAxMDgsIDIwNiwgOTUsIDIzOSwgMTY2LCAyMDUsIDk5LCAzLCAKKyAgICA0OSwgMTY3LCAyNDgsIDE0NCwgMjM5LCAxNjYsIDIwNSwgOTksIDMsIDUxLCAxNjcsIDI0OCwgMTQ0LCA2MywgMjQxLCA2NSwgCisgICAgMywgMTI3LCA0OCwgNjMsIDIyNCwgNDksIDY0LCAyNDYsIDE1NiwgMywgMTI3LCA0OCwgNjMsIDI0NiwgMTU2LCAzLCAxMjcsIAorICAgIDQ4LCAyMzgsIDEwNywgNjQsIDIwOCwgMTkzLCAyMzgsIDEwNywgNjMsIDIwOCwgMTkzLCAyMzgsIDEwNywgNjQsIDI0MSwgCisgICAgNjQsIDIzOCwgMTA3LCA2MywgMjQxLCA2NCwgMjM4LCAxMDcsIDY0LCAyNDYsIDE1NSwgMjM4LCAxMDcsIDYzLCAyNDYsIAorICAgIDE1NSwgMjEyLCAxNjQsIDIxMywgMTA2LCAyMDksIDE3LCAyMTcsIDQzLCAyMDksIDE3LCAzLCAyMTYsIDI0NiwgMjEzLCAKKyAgICAxMDYsIDIwOSwgMTcsIDMsIDIzMywgMTc3LCA5NywgMjQ4LCAxNzUsIDIwOSwgMTYsIDI0OCwgMTc1LCAyMTMsIDEwNiwgCisgICAgMjA5LCAxNiwgNTMsIDIxNSwgMTEzLCAyMDUsIDgzLCAyMTUsIDExMywgMjI1LCAyMywgMjQyLCAxODgsIDI1MSwgNzEsIAorICAgIDE1OSwgMjEzLCA0MSwgMjQyLCAxODgsIDI1MSwgNzEsIDE1OSwgMjA1LCAyMjUsIDIyMSwgMTU0LCAyMjAsIDIxMywgNDQsIAorICAgIDczLCAyMTcsIDQzLCAyMjAsIDIxMywgNDQsIDkzLCAyMTcsIDQzLCAyMjAsIDIxMywgNDQsIDI0LCAyMTcsIDQzLCAyMjAsIAorICAgIDIxMywgMjAzLCAyNDIsIDIxNywgNDQsIDMsIDI0MCwgMTgyLCAyMjAsIDIxMywgMjAzLCAyNDIsIDIxNywgNDQsIDMsIDIxNSwgCisgICAgMTEzLCAyMjAsIDIxMywgNTIsIDIyOCwgNTYsIDIxNywgNDMsIDIyMCwgMjEzLCA1MiwgMjAzLCAyNDIsIDIxNywgNDMsIAorICAgIDEyMCwgMjI0LCA5OCwgMjYsIDIxNywgNDMsIDEyMCwgMjI0LCA5OCwgMjE3LCAzNCwgMjE3LCA0MywgMjIwLCAyMTMsIDI0LCAKKyAgICAyMTcsIDQzLCAyMjEsIDExMCwgMTIwLCAyMDcsIDIzNCwgMjA3LCAyMzIsIDMsIDIyOCwgNjksIDIxNCwgOTAsIDIyOCwgNzAsIAorICAgIDIxNywgNDMsIDIzNywgODAsIDIxNiwgMTEwLCAyMjgsIDY5LCAyMjgsIDcwLCAzLCA1MywgOTcsIDIyOCwgNzAsIDI1MCwgCisgICAgMTIwLCAzLCAyMDksIDc1LCAyNDYsIDE0OCwgMjM2LCAxODAsIDI1MSwgNDcsIDIyOCwgNjcsIDIyNCwgMTc3LCAyMjgsIDY4LCAKKyAgICAzLCAyMTMsIDE3NCwgMjE2LCA5MSwgMjUwLCAyMTIsIDIxNSwgOTAsIDIyNCwgMTc3LCAyMjgsIDY4LCAzLCAyMTAsIDE2OSwgCisgICAgMjE2LCA5MSwgMjUwLCAyMTIsIDIxNSwgOTAsIDIyNCwgMTc3LCAyMjgsIDY4LCAyMTgsIDIxNSwgMjI4LCAxMTIsIDIwNiwgCisgICAgMTA3LCAyMTUsIDkwLCAyMjgsIDcwLCAyNTAsIDIxMiwgMzUsIDIxNSwgMTAwLCAyMTcsIDQzLCAyMTQsIDg0LCAyMjgsIDcwLCAKKyAgICAyMTcsIDQzLCAyMjgsIDcwLCAzLCA5OCwgNTUsIDMsIDExNywgMjI4LCA3MCwgMywgMjQsIDU0LCAyMjgsIDcwLCAzLCAyMjgsIAorICAgIDU1LCAyMjgsIDcwLCAzLCAyMDMsIDI0MSwgMjI4LCA3MCwgMywgMjE2LCAyNDYsIDIyOCwgNzAsIDMsIDIwMywgMjUxLCAKKyAgICAyMjcsIDE2NCwgMjI1LCA3MSwgNDksIDIwNSwgOTksIDIxNywgNDMsIDE5OSwgMTU4LCAyMTgsIDIxMywgMjExLCAyMjQsIAorICAgIDI0MywgNzMsIDE5OSwgMTU4LCAyMTgsIDIxMywgMjExLCAyMjQsIDIxNSwgMTUxLCAxOTksIDE1OCwgMjE4LCAyMTMsIDIxMSwgCisgICAgMjI0LCAyMTQsIDI1MiwgOTMsIDIsIDMsIDQsIDI0NiwgMTU2LCA1NiwgOTMsIDIsIDMsIDI0NiwgMTQ3LCAyNTEsIDI1MiwgCisgICAgNTYsIDkzLCAyLCAzLCAyMDUsIDI0MSwgNTYsIDkzLCAyLCAzLCA3MywgNTcsIDkzLCAyLCAzLCAyMDUsIDI0MSwgNTcsIDkzLCAKKyAgICAyLCAzLCAyMDgsIDQsIDEwNSwgOTMsIDIsIDMsIDYzLCAyMDUsIDk4LCAyMjEsIDE1NywgMiwgMywgMjQ2LCA3MSwgNTYsIAorICAgIDIyMSwgMTU3LCAyLCAzLCA3MywgNTcsIDIyMSwgMTU3LCAyLCAzLCAyMzcsIDE3MSwgMjQwLCAxODAsIDIyMSwgMTU3LCAyLCAKKyAgICAzLCAyMTMsIDE5LCAyNDAsIDE4MCwgOTMsIDIsIDIyOCwgMTE4LCA0OSwgMTY3LCAyNDYsIDE1NSwgOTMsIDIsIDIyOCwgCisgICAgMTE4LCA1MSwgMTY3LCAyNDYsIDE1NSwgMjAzLCA1OCwgMjE3LCAzNCwgMjQyLCAyMzUsIDIxNSwgMSwgMjIxLCAxOSwgMiwgCisgICAgMywgNzMsIDU2LCAyMjEsIDE5LCAyLCAzLCAyMDMsIDI1MSwgMjEwLCAxNjYsIDIxNSwgMiwgMywgMjQ4LCA5MywgMjQ2LCAKKyAgICAxMDksIDIwOSwgNTEsIDIxNSwgMSwgMjIxLCAxOSwgMiwgMjI4LCAxMTgsIDQ5LCAxNjcsIDI0NiwgMTU1LCAyMjEsIDE5LCAKKyAgICAyLCAyMjgsIDExOCwgNTEsIDE2NywgMjQ2LCAxNTUsIDQ0LCAyMjEsIDE5LCAyLCAzLCAyNDYsIDE0NywgMjUxLCAyNTEsIAorICAgIDIyMSwgMTksIDIsIDIyOCwgMTE4LCA1MywgMjQ2LCAxNTUsIDQ0LCAyNDAsIDIzNSwgNTQsIDkzLCAyLCAyMjgsIDExOCwgCisgICAgMjA1LCA5OCwgMjIxLCAxNTcsIDIsIDIyOCwgMTE4LCAyMDUsIDk4LCAyMjEsIDE5LCAyLCAyMjgsIDExOCwgMjA1LCA5OCwgCisgICAgMjI4LCA2NCwgMjE1LCAxLCAyMTMsIDM2LCAyMjgsIDY0LCAyMTUsIDEsIDE5OSwgMTU4LCAyMTgsIDIxMywgMjEzLCAxNDgsIAorICAgIDI0MywgNzMsIDI1MSwgOTksIDIxNywgMzQsIDI0MywgMjEsIDIyOCwgNTYsIDMsIDI0MCwgMTgyLCAyMDMsIDI0MiwgMywgCisgICAgMjIxLCAxNTcsIDU0LCAyMDMsIDI0MiwgMywgMjE2LCAyNDYsIDIyOCwgNTYsIDMsIDIxNiwgMjQ2LCAyMjgsIDU2LCAzLCAKKyAgICAyMjQsIDk4LCAyNTEsIDc5LCAyMDMsIDI0MiwgMywgMjI0LCA5OCwgMjE3LCAzMywgMjAzLCAyNDIsIDg4LCAyMjgsIDU1LCAKKyAgICAyMjgsIDU2LCA4OCwgMjAzLCAyNDEsIDIwMywgMjQyLCA4OCwgMjQ5LCA3NywgODgsIDIyOCwgNTUsIDIyOCwgNTYsIDg4LCAKKyAgICAyNDksIDc3LCA4OCwgMjAzLCAyNDEsIDIwMywgMjQyLCAyNDgsIDIxMiwgMjYsIDIyNywgMTYzLCAzLCAyMDMsIDI0MSwgCisgICAgMjI4LCA1NiwgMjQ4LCAyMTIsIDI2LCAyMjcsIDE2MywgMywgMjI4LCA1NSwgMjQ2LCAxMTAsIDIwMywgMjQyLCAzLCAyMTAsIAorICAgIDE0NywgMjQ2LCAxMTAsIDIyOCwgNTYsIDMsIDIxMCwgMTQ3LCA1MywgNTIsIDIyOCwgNTUsIDUzLCA1MiwgMjAzLCAyNDEsIAorICAgIDI0NiwgMTEwLCAyMDMsIDI0MiwgMywgMjEwLCAxNDgsIDI2LCAyMDksIDUxLCAyMTUsIDEsIDIyNCwgOTgsIDI2LCAzLCA3MywgCisgICAgNTYsIDIyNCwgOTgsIDIxNywgMzQsIDMsIDczLCA1NiwgNTMsIDIyNCwgOTgsIDI1MSwgNzksIDUzLCAyMjQsIDk4LCAyMTcsIAorICAgIDMzLCAxMjAsIDIyOCwgNTcsIDIyNCwgOTgsIDI1MSwgNzksIDEyMCwgMjI4LCA1NywgMjI0LCA5OCwgMjE3LCAzMywgMjA5LCAKKyAgICA2MCwgMjI1LCA3MSwgMjE3LCAzMywgMjA5LCA2MCwgMjI1LCA3MSwgMjUxLCA3OSwgMjI0LCA5OCwgMjE3LCAzNCwgMjE2LCAKKyAgICAyNDMsIDIyNCwgOTgsIDI1MSwgNzksIDIyNCwgOTgsIDI2LCAzLCAxMDEsIDIwOCwgOTIsIDIyNCwgOTgsIDIxNywgMzQsIDMsIAorICAgIDEwMSwgMjA4LCA5MiwgMjI0LCA5OCwgMjYsIDMsIDIzMywgMTc3LCAyNDEsIDI0NCwgMjI0LCA5OCwgMjE3LCAzNCwgMywgCisgICAgMjMzLCAxNzcsIDI0MSwgMjQ0LCAyMjQsIDk4LCAyNiwgMywgNTMsIDIxNiwgMjQ2LCAyMjQsIDk4LCAyNiwgMywgMjAzLCAKKyAgICAyNTEsIDIyNCwgOTgsIDI2LCAzLCA1MywgMjAzLCAyNTEsIDQsIDIwMywgNTUsIDMsIDIwMywgMjUxLCAyMjQsIDk4LCAyMTcsIAorICAgIDM0LCAzLCA1MywgMjE2LCAyNDYsIDIyNCwgOTgsIDIxNywgMzQsIDMsIDUzLCAyMDMsIDI1MSwgMTk5LCAxNTgsIDIxOCwgCisgICAgMjEzLCAyNDAsIDE5MSwgMjUxLCAzNywgMTk5LCAxNTgsIDIxOCwgMjEzLCAyMTMsIDIxMSwgMjUxLCAzNywgMjM4LCAxMjIsIAorICAgIDIsIDMsIDczLCA1NywgMjMyLCAyMjMsIDMsIDczLCA1NiwgMjA1LCA4MywgMjMzLCAxNzcsIDI0OSwgNzcsIDMsIDUzLCA4MywgCisgICAgOTcsIDIwNSwgODMsIDIzMywgMTc3LCAyNDksIDc3LCAzLCAyMDUsIDgzLCA4MywgOTcsIDIwNSwgMjQxLCAyMTcsIDQ0LCAzLCAKKyAgICA3MywgNTYsIDIwNSwgMjQxLCAyMTcsIDQ0LCAzLCAyMTMsIDE5LCAyNDAsIDE4MCwgMjA5LCAxNDgsIDIyMSwgMTU3LCAyMDksIAorICAgIDE0NywgMjQzLCA2MCwgMywgNzMsIDU2LCAyMzgsIDEyMiwgMywgMjUwLCAxNjUsIDI1MSwgMTE3LCAxNjAsIDIwNSwgMTg2LCAKKyAgICAzLCAyNDYsIDE0NywgMjUxLCAyNTEsIDI1MSwgNCwgMTYwLCAyMTcsIDM0LCAxNjAsIDEzOCwgMjM4LCAxMjIsIDIsIDg4LCAKKyAgICA5MywgNTQsIDkzLCAyLCA4OCwgMjM4LCAxMjIsIDU0LCAyMzgsIDEyMiwgMiwgODgsIDIwNSwgMjQxLCAyMTcsIDQzLCA1MywgCisgICAgMjQ2LCA4MCwgMjM4LCAxMjMsIDEyMCwgMjQzLCA1MywgMjM4LCAxMjIsIDIwOSwgMTYyLCAxMjYsIDI0MywgNTMsIDIzOCwgCisgICAgMTIyLCAyMDksIDE2MiwgMjM4LCAxMjIsIDIsIDMsIDEyMCwgMTkwLCA4OCwgMjYsIDEyMCwgMTkwLCA1NywgMjM4LCAxMTcsIAorICAgIDMsIDIzNiwgMjI5LCAxOTAsIDU2LCAyMjQsIDI0MSwgMywgMjQ2LCAxNTYsIDIyOCwgNzMsIDIzNSwgNjcsIDMsIDI0NiwgCisgICAgMTU2LCAyMjgsIDczLCAyMjQsIDI0MSwgMywgMjE0LCA3OSwgMTM0LCA1NiwgMjM1LCA2NywgMywgMjE0LCA3OSwgMTM0LCAKKyAgICA1NiwgMjI0LCAyNDEsIDIxNywgMzQsIDIwOSwgNzcsIDE2MCwgMTM4LCAyMzUsIDY3LCAyMTcsIDM0LCAyMDksIDc3LCAxNjAsIAorICAgIDEzOCwgMjI0LCAyNDEsIDIxNywgMzQsIDIwOSwgNzcsIDE2MCwgMjA1LCAxODYsIDMsIDczLCAyMjgsIDczLCAyMzUsIDY3LCAKKyAgICAyMTcsIDM0LCAyMDksIDc3LCAxNjAsIDIwNSwgMTg2LCAzLCA3MywgMjI4LCA3MywgMjI0LCAyNDEsIDIxNywgMzQsIDIwOSwgCisgICAgNzcsIDE2MCwgMjA1LCAxODYsIDMsIDczLCA1NiwgMjM1LCA2NywgMjE3LCAzNCwgMjA5LCA3NywgMTYwLCAyMDUsIDE4NiwgCisgICAgMywgNzMsIDU2LCAyMjQsIDI0MSwgMjE3LCAzNCwgMjA5LCA3NywgMTYwLCAyMDUsIDE4NiwgMywgNzMsIDg4LCAyMTMsIDQ2LCAKKyAgICAyMzUsIDY3LCAyMTcsIDM0LCAyMDksIDc3LCAxNjAsIDIwNSwgMTg2LCAzLCA3MywgODgsIDIyNSwgMjgsIDIyNCwgMjQxLCAKKyAgICAyMTcsIDM0LCAyNTEsIDUsIDIzNSwgNjcsIDIxNywgMzQsIDI1MSwgNSwgMjI0LCAyNDEsIDI2LCAyMDksIDEzNywgMjE4LCAKKyAgICAyMTUsIDE2MCwgMTM4LCAyMzUsIDY3LCAyNiwgMjA5LCAxMzcsIDIxOCwgMjE1LCAxNjAsIDEzOCwgMjI0LCAyNDEsIDI2LCAKKyAgICAyMTgsIDIxNSwgMjUxLCA1LCAyMzUsIDY3LCAyNiwgMjE4LCAyMTUsIDI1MSwgNSwgMjI0LCAyNDEsIDg4LCAyMzksIDE3MywgCisgICAgMTYwLCA4OCwgMjM1LCA2NiwgMjM1LCA2NywgODgsIDIzOSwgMTczLCAxNjAsIDg4LCAyMjQsIDI0MCwgMjI0LCAyNDEsIDg4LCAKKyAgICAyMDksIDE0OCwgMjE3LCAzNCwgMjM4LCAxMjMsIDIzNSwgNjcsIDg4LCAyMDksIDE0OCwgMjE3LCAzNCwgMjM4LCAxMjMsIAorICAgIDIyNCwgMjQxLCA4OCwgMjA5LCAxNDgsIDg4LCAyMzUsIDY2LCAyMzUsIDY3LCA4OCwgMjA5LCAxNDgsIDg4LCAyMjQsIDI0MCwgCisgICAgMjI0LCAyNDEsIDg4LCAyMzUsIDY3LCA4OCwgMjM5LCAxNzMsIDIzOCwgMTIzLCAyMzUsIDY3LCA4OCwgMjI0LCAyNDEsIDg4LCAKKyAgICAyMzksIDE3MywgMjM4LCAxMjMsIDIyNCwgMjQxLCA4OCwgMjA5LCA3NywgMTYwLCA4OCwgMjM1LCA2NywgODgsIDIwOSwgNzcsIAorICAgIDIzOCwgMTIzLCAyMzUsIDY3LCA4OCwgMjA5LCA3NywgMTYwLCA4OCwgMjI0LCAyNDEsIDg4LCAyMDksIDc3LCAyMzgsIDEyMywgCisgICAgMjA5LCA3NywgMTYwLCAyMDUsIDE4NiwgMjE3LCAzNCwgMjI0LCAyNDAsIDIwOSwgNzcsIDE2MCwgMjA1LCAxODYsIDIxNywgCisgICAgMzQsIDIzNSwgNjYsIDIwOSwgNzcsIDE2MCwgMjA1LCAxODYsIDIxNywgMzQsIDIyNCwgMjQxLCAzLCA3MywgMjI4LCA3MywgCisgICAgMjA5LCA3NywgMTYwLCAyMDUsIDE4NiwgMjE3LCAzNCwgMjM1LCA2NywgMywgNzMsIDIyOCwgNzMsIDIzOSwgMTczLCAxNjAsIAorICAgIDIwNSwgMTg2LCAyMTcsIDM0LCAyMjQsIDI0MCwgMjM5LCAxNzMsIDE2MCwgMjA1LCAxODYsIDIxNywgMzQsIDIzNSwgNjYsIAorICAgIDIzOSwgMTczLCAyMDksIDc3LCAxNjAsIDIwNSwgMTg2LCAyMTcsIDM0LCAyMjQsIDI0MCwgMjM5LCAxNzMsIDIwOSwgNzcsIAorICAgIDE2MCwgMjA1LCAxODYsIDIxNywgMzQsIDIzNSwgNjYsIDIwOSwgMTQ4LCAyMTcsIDM0LCAyMjQsIDI0MCwgMjA5LCAxNDgsIAorICAgIDIxNywgMzQsIDIzNSwgNjYsIDIwOSwgMTQ4LCA4OCwgMjI0LCAyNDEsIDg4LCAyMzgsIDEyMiwgNTQsIDIwOSwgMTQ4LCA4OCwgCisgICAgMjM1LCA2NywgODgsIDIzOCwgMTIyLCA1NCwgNTMsIDIyMCwgMTUsIDIyNCwgMjQwLCA1MywgMjIwLCAxNSwgMjM1LCA2NiwgCisgICAgNTMsIDIyMCwgMTUsIDIyNCwgMjQxLCAzLCAyMDMsIDI1MSwgMjM1LCA2NywgMjE2LCAyNDMsIDIyNCwgMjQwLCAyMzUsIDY3LCAKKyAgICAyNDgsIDIxMiwgMjI0LCAyNDAsIDIyNCwgMjQxLCAyNDYsIDExMCwgMjQ3LCAyMzUsIDI0MiwgMTg5LCAyMzUsIDY3LCAyNDYsIAorICAgIDExMCwgMjQ3LCAyMzUsIDI0MiwgMTg5LCAyMjQsIDI0MSwgMjQ2LCAxMTAsIDI0NywgMjM1LCAyNDIsIDE5MCwgODgsIDIwOSwgCisgICAgNzcsIDIzOCwgMTIzLCAyMzUsIDY3LCAyNDYsIDExMCwgMjQ3LCAyMzUsIDI0MiwgMTkwLCA4OCwgMjA5LCA3NywgMjM4LCAKKyAgICAxMjMsIDIwOSwgNTIsIDIwNiwgMTExLCAyMjUsIDY5LCAyMDYsIDExMSwgMjA5LCA1MiwgMjA2LCAxMTIsIDIxNywgMzQsIAorICAgIDE2MCwgMTM4LCAyMjUsIDY5LCAyMDYsIDExMiwgMjE3LCAzNCwgMTYwLCAxMzgsIDIzOCwgMTIyLCAyLCAzLCAyNDgsIDEzLCAKKyAgICA1NiwgMjE1LCAyOSwgODgsIDIwOSwgMTM3LCAyMzgsIDEyMiwgNTQsIDIwNywgMjUxLCA4OCwgMjA5LCAxMzcsIDIzOCwgCisgICAgMTIyLCA1NCwgMjE1LCAyOSwgODgsIDIwOSwgMTM3LCAyMTgsIDIxNSwgMTYwLCAxMzgsIDIwNywgMjUxLCA4OCwgMjA5LCAKKyAgICAxMzcsIDIxOCwgMjE1LCAxNjAsIDEzOCwgMjE1LCAyOSwgODgsIDIzOCwgMTIyLCA1NCwgMjA3LCAyNTEsIDg4LCAyMzgsIAorICAgIDEyMiwgNTQsIDIxNSwgMjksIDg4LCAyMTgsIDIxNSwgMTYwLCAxMzgsIDIwNywgMjUxLCA4OCwgMjE4LCAyMTUsIDE2MCwgCisgICAgMTM4LCAyMTUsIDI5LCA4OCwgMjUxLCAxMTcsIDE2MCwgMTM4LCAyMDcsIDI1MSwgODgsIDI1MSwgMTE3LCAxNjAsIDEzOCwgCisgICAgMjE1LCAyOSwgODgsIDIxOCwgMjE1LCAyNTEsIDExNywgMTYwLCAxMzgsIDIwNywgMjUxLCA4OCwgMjE4LCAyMTUsIDI1MSwgCisgICAgMTE3LCAxNjAsIDEzOCwgNTMsIDIxNSwgMjgsIDUzLCAyMDcsIDI1MCwgMjA4LCAzLCAzLCAyNDAsIDE4MiwgMjA3LCAyMTIsIAorICAgIDMsIDI0MCwgMTgyLCAyMDgsIDMsIDMsIDkzLCAyLCA1NywgMjA3LCAyMTIsIDMsIDkzLCAyLCA1NywgMjA4LCAzLCAzLCAKKyAgICAyMjEsIDE5LCAyLCA1NywgMjA3LCAyMTIsIDMsIDIyMSwgMTksIDIsIDU3LCAyMDgsIDMsIDc2LCAyMTcsIDM0LCAxNjAsIAorICAgIDIwNSwgMTg2LCAzLCA3MywgNTYsIDIwNywgMjEyLCA3NiwgMjE3LCAzNCwgMTYwLCAyMDUsIDE4NiwgMywgNzMsIDU2LCAKKyAgICAyMDgsIDMsIDc2LCA4OCwgMjM4LCAxMjIsIDU0LCAyMDcsIDIxMiwgNzYsIDg4LCAyMzgsIDEyMiwgNTQsIDIwOCwgMywgNzYsIAorICAgIDg4LCAyMDUsIDI0MSwgMjE3LCA0MywgMjA3LCAyMTIsIDc2LCA4OCwgMjA1LCAyNDEsIDIxNywgNDMsIDIwOCwgMywgNzYsIAorICAgIDg4LCAyNTEsIDExNywgMTYwLCAxMzgsIDIwNywgMjEyLCA3NiwgODgsIDI1MSwgMTE3LCAxNjAsIDEzOCwgMjA4LCAzLCA3NiwgCisgICAgODgsIDIxOCwgMjE1LCAxNjAsIDEzOCwgMjA3LCAyMTIsIDc2LCA4OCwgMjE4LCAyMTUsIDE2MCwgMTM4LCA1MiwgNDksIAorICAgIDE3NiwgMTAwLCAyMTcsIDQzLCA1MiwgNTEsIDE3NiwgMTAwLCAyMTcsIDQzLCAyNDYsIDExMCwgMjA4LCAyLCAyNDYsIDExMCwgCisgICAgMjA3LCAyMTEsIDI0NiwgMTEwLCAyMDgsIDMsIDIxNywgMzQsIDE2MCwgMTM4LCAyNDYsIDExMCwgMjA3LCAyMTIsIDIxNywgCisgICAgMzQsIDE2MCwgMTM4LCAyMDgsIDMsIDg4LCAyMDcsIDIxMSwgMjA3LCAyMTIsIDg4LCAyMDgsIDIsIDIwOCwgMywgODgsIAorICAgIDIwOCwgMiwgMjA3LCAyMTIsIDg4LCAyMDcsIDIxMSwgMjA3LCAyMTIsIDI0OCwgMjEyLCAyMDgsIDIsIDIwNywgMjEyLCAKKyAgICAyNDgsIDIxMiwgMjYsIDIyNywgMTYzLCAyNDcsIDIzNSwgMjQxLCAyNDUsIDMsIDIwOCwgMiwgMjM4LCAyMDIsIDc2LCAyMTcsIAorICAgIDQ2LCAyMzksIDE2NSwgMjE1LCAxNDEsIDMsIDIwNiwgMTkxLCAyMDUsIDE1NywgMjA1LCAxMTUsIDIyOCwgNTUsIDIzNiwgCisgICAgMjQzLCAyMTgsIDIzMCwgMjA5LCAyNTAsIDQ5LCAyMDcsIDE3LCAyMDksIDI1MCwgMTI3LCAyMDcsIDE3LCAyMDksIDI1MCwgCisgICAgMTE1LCAyMDcsIDE3LCAyMTYsIDE1LCAzLCAyMTIsIDEyMiwgODMsIDI0OSwgNzcsIDIwNSwgODMsIDUxLCAyMDQsIDE4NCwgCisgICAgNTMsIDgzLCAyNDksIDc3LCA0OSwgMjA0LCAxODQsIDgzLCAyNDksIDc3LCA1MywgNDksIDIwNCwgMTg0LCA1MywgODMsIAorICAgIDI0OSwgNzcsIDUzLCA0OSwgMjA0LCAxODQsIDE2OCwgMjQxLCAyNDUsIDIzNiwgMjAxLCA0OSwgMjIyLCA0NSwgNzYsIDUzLCAKKyAgICAyMDMsIDQyLCAyMDksIDI1MCwgMTI3LCAyMDcsIDE4LCAzLCAyMTYsIDI0NiwgMjA5LCAyNTAsIDExNSwgMjA3LCAxOCwgMywgCisgICAgMjAzLCAyNTEsIDIwOSwgMjUwLCAxMTUsIDIwNywgMTgsIDg4LCAyMDksIDI1MCwgMTI3LCAyMDcsIDE3LCA1MywgMTI3LCAKKyAgICAyMDcsIDE3LCA1MywgMTE1LCAyMDcsIDE3LCA1MywgMjA4LCA0NywgMjE4LCAyMTUsIDU0LCAyMTMsIDEwNSwgNTMsIDIwOCwgCisgICAgNDcsIDIxOCwgMjE1LCA1NCwgMjQwLCAyMDIsIDIxOCwgMjE1LCAyNDAsIDI0MiwgMywgMjEzLCAxMDUsIDIyMCwgMjcsIAorICAgIDIwOSwgNzUsIDgzLCAyMjQsIDE3NywgMywgMjQ2LCAxNTYsIDU2LCA4MywgMjI0LCAxNzcsIDMsIDI0NiwgMTU2LCA1NywgCisgICAgMTI3LCAyMDcsIDE4LCAzLCAyNDYsIDE1NiwgNTcsIDIxNiwgMTIxLCAzLCAyMzMsIDE3NywgOTcsIDIxNiwgMTIxLCAzLCAKKyAgICAyMDUsIDI0MSwgMjE3LCA0MywgMjA1LCA4MywgODMsIDI0OSwgNzcsIDI0OCwgMTY5LCAyMTMsIDE0OSwgMjA1LCA4MywgODMsIAorICAgIDI0OSwgNzcsIDMsIDIzMywgMTc3LCA5NywgMjA1LCA4MywgMjQ2LCA4MCwgMjE3LCA0MywgMjA1LCA4MywgMjIwLCAxNSwgCisgICAgMjI0LCAyNDAsIDIwNSwgODMsIDIyMCwgMTUsIDIzNSwgNjYsIDIzOSwgMTczLCAyMDksIDc3LCAyMjQsIDI0MSwgMjE3LCAKKyAgICAzNCwgMTYwLCAxMzgsIDIzOSwgMTczLCAyMDksIDc3LCAyMzUsIDY3LCAyMTcsIDM0LCAxNjAsIDEzOCwgMjA1LCA4MywgCisgICAgMjA5LCAxNywgMjQ4LCAxNjksIDIxMywgMTQ5LCAyMjUsIDcxLCAyMDUsIDgzLCA4MywgMjQ5LCA3NywgMjE3LCA0MywgNTMsIAorICAgIDIwOSwgMTcsIDIxNywgNDMsIDY0LCA4MywgMTQ4LCAyMjAsIDIxMywgNjQsIDgzLCAxNDgsIDE1NywgMjM5LCAxNCwgNjQsIAorICAgIDQ4LCAxNTcsIDIwMSwgNDgsIDY0LCA0OCwgMjA4LCAyNTQsIDIzOSwgMTQsIDY0LCA0OCwgMjA4LCAyNTQsIDIwMSwgNDgsIAorICAgIDY0LCA0OCwgNDksIDUxLCA2NCwgNDgsIDk4LCA2MywgNDgsIDE4MiwgNjMsIDQ4LCAxOTEsIDYzLCA0OCwgMTU3LCAyMzksIAorICAgIDE0LCA2MywgNDgsIDE1NywgMjAxLCA0OCwgNjMsIDQ4LCAyMDgsIDI1NCwgMjM5LCAxNCwgNjMsIDQ4LCAyMDgsIDI1NCwgCisgICAgMjAxLCA0OCwgNjMsIDQ4LCA0OSwgNTEsIDYzLCA0OCwgMTE1LCAxMjcsIDYzLCA0OCwgODcsIDU1LCAzLCAyMDUsIDIyNCwgCisgICAgMjM5LCAxNjUsIDg3LCA1NSwgMywgMjA1LCAyMjQsIDIwMywgMjE2LCA5OCwgNTUsIDMsIDIwNSwgMjI0LCAyMzksIDE2NSwgCisgICAgOTgsIDU1LCAzLCAyMDUsIDIyNCwgMjAzLCAyMTYsIDUyLCAzLCAyMDUsIDE1OCwgMTY3LCAyNDgsIDE0NCwgNTIsIDMsIAorICAgIDI0OCwgOTMsIDE2NywgMjQ4LCAxNDQsIDUyLCAzLCAyMDMsIDIyNSwgNTEsIDI0MSwgNzEsIDE2NywgMjQ4LCAxNDQsIDUyLCAKKyAgICAzLCAyMjQsIDU0LCA0OSwgMjQxLCA3MSwgMTY3LCAyNDgsIDE0NCwgMjQxLCA2NSwgMywgNDksIDE2NywgMjQ4LCAxNDQsIAorICAgIDI0MSwgNjUsIDMsIDUxLCAxNjcsIDI0OCwgMTQ0LCAyNDEsIDY1LCAzLCAyMDUsIDE1OCwgMTY3LCAyNDgsIDE0NCwgMjQxLCAKKyAgICA2NSwgMywgMjQ4LCA5MywgMTY3LCAyNDgsIDE0NCwgMjM5LCAxODAsIDIwOCwgMTkzLCA2MywgMjI1LCA3MSwgMjA4LCAxOTMsIAorICAgIDY0LCAyMjUsIDcxLCAyMDgsIDE5MywgNjMsIDIwMiwgMjQ2LCA0LCAyMDgsIDE5MywgNjQsIDIwMiwgMjQ2LCA0LCAyMDgsIAorICAgIDE5MywgNjMsIDIxNiwgMzcsIDY0LCAyMTYsIDM3LCA2NCwgMjM0LCA4OSwgNjMsIDIzNCwgODksIDIzMywgMTc3LCA2MywgCisgICAgMjM0LCA4OSwgNjMsIDIyNSwgNzEsIDI0NiwgMTU1LCA2MywgMjIyLCA2NiwgMjQxLCA2NCwgNjQsIDIyMiwgNjYsIDI0MSwgCisgICAgNjQsIDYzLCAyMjIsIDY2LCAyMjQsIDQ5LCA2NCwgMjIyLCA2NiwgMjI0LCA0OSwgNjMsIDQsIDI0MSwgNjQsIDYzLCA0LCAKKyAgICAyMjQsIDQ5LCA2NCwgNCwgMjI0LCA0OSwgNjMsIDIzMywgMTc3LCAyMzgsIDE5NiwgNjQsIDIzMywgMTc3LCAyMzgsIDE5NiwgCisgICAgNjMsIDgzLCAyMzgsIDE5NiwgNjQsIDgzLCAyMzgsIDE5NiwgNDksIDU1LCAzLCA0LCAyNDYsIDE1NSwgMTI2LCA5OCwgMjUwLCAKKyAgICAxOTksIDQ5LCA1NSwgMywgNDQsIDIxNSwgMTEzLCAxNjgsIDk4LCAyMDgsIDE4NiwgNDgsIDk4LCAyMDQsIDE0MSwgNTUsIDMsIAorICAgIDgzLCA5NywgOTgsIDIwNCwgMTQxLCA1NSwgMywgNTMsIDgzLCA5NywgOTgsIDIwNCwgMTQxLCA1NSwgMjM2LCAyMDEsIDE0OCwgCisgICAgOTgsIDIwNCwgMTQxLCAyMDUsIDgzLCAyNDEsIDI0NSwgNDgsIDk4LCA1NSwgMywgMjM5LCAxODAsIDIwOCwgOTIsIDk4LCAKKyAgICA1NSwgMywgMjA3LCA3LCAzLCA4MywgOTcsIDk4LCA1NSwgMywgMjA3LCA3LCAzLCA1MywgODMsIDk3LCA5OCwgMjA0LCAxNDEsIAorICAgIDU1LCAzLCAyMDcsIDYsIDk4LCAyMDQsIDE0MSwgNTUsIDMsIDIwNywgNywgMywgODMsIDk3LCA5OCwgMjA0LCAxNDEsIDU1LCAKKyAgICAzLCAyMDcsIDcsIDMsIDUzLCA4MywgOTcsIDk4LCA1NSwgMjA2LCAzOCwgMjAwLCAxOTUsIDIwMSwgNzgsIDU1LCAyMTUsIAorICAgIDk2LCAyNDEsIDcsIDIyNSwgMjgsIDIzOCwgMTIyLCAyLCA4OCwgOTgsIDQ4LCAyMTMsIDEwNiwgMjA1LCAyNDEsIDIxNywgCisgICAgNDQsIDg4LCA5OCwgNDgsIDk4LCA1NSwgODgsIDIxMywgMTA2LCAyNTEsIDExNywgMTYwLCAxMzgsIDg3LCA1NSwgMjA2LCAKKyAgICAzOCwgMjM1LCA2NiwgODcsIDU1LCAyMDYsIDM4LCAyMDcsIDIxMSwgOTgsIDIxNCwgOTAsIDQ4LCA4NywgMjE0LCA5MCwgNDgsIAorICAgIDIxMywgMTA2LCAyMDUsIDI0MSwgMjE3LCA0NCwgODgsIDg3LCA0OCwgODcsIDU1LCA4OCwgMjEzLCAxMDYsIDI1MSwgMTE3LCAKKyAgICAxNjAsIDEzOCwgMjA1LCAyNDEsIDIxNywgNDQsIDg4LCA5OCwgNDgsIDk4LCA1NSwgODgsIDI1MSwgMTE3LCAxNjAsIDEzOCwgCisgICAgOTgsIDU1LCA4OCwgMjEzLCAxMDYsIDIwNSwgMjQxLCAyMTcsIDQzLCA4NywgNTUsIDg4LCAyMTMsIDEwNiwgMjA1LCAyNDEsIAorICAgIDIxNywgNDMsIDE5MSwgMjA1LCA5NywgMTk5LCAyNywgNDgsIDIwOSwgMjUwLCAyMDksIDc3LCAxNTcsIDQ4LCAyMDksIDI1MCwgCisgICAgMjQ5LCAxMjYsIDIwOCwgMjU0LCA0OCwgNjQsIDIyMiwgNjYsIDIwOCwgMTA5LCA2MywgNCwgMjA4LCAxMDksIDY0LCA0LCAKKyAgICAyMDgsIDEwOSwgNjMsIDIxMywgNDEsIDIxNiwgMzcsIDY0LCAyMTMsIDQxLCAyMTYsIDM3LCA4MCwgMjI1LCA3MSwgMjQ2LCAKKyAgICAxNTUsIDgwLCAyMTYsIDI0OCwgMywgMjE2LCAyNDgsIDIyOCwgNzMsIDgwLCAyNDYsIDE1NiwgMywgMjQ2LCAxNTYsIDIyOCwgCisgICAgNzMsIDgwLCAyNDYsIDE1NSwgODAsIDQ0LCAyMTIsIDI0LCAyMDksIDc3LCAxNTcsIDU1LCAzLCAyMzMsIDE4NiwgMjM0LCAKKyAgICAxMzYsIDI0OSwgMTI2LCAyMDgsIDI1NCwgNTUsIDMsIDIzMywgMTg2LCAyMDcsIDYsIDIwOSwgNzcsIDE1NywgNTUsIDMsIAorICAgIDIzMywgMTc3LCAyMDcsIDYsIDI0OSwgMTI2LCAyMDgsIDI1NCwgNTUsIDMsIDIzMywgMTc3LCAyMDcsIDYsIDI0OCwgMjIwLCAKKyAgICA1NSwgMjE1LCA5NiwgMTkxLCAyMDYsIDk4LCAxNTcsIDIzOSwgMTMsIDIwOSwgMjUwLCAyNDgsIDIyMCwgNTUsIDIxNSwgOTYsIAorICAgIDE5MSwgMjA2LCA5OCwgMTU3LCAyMzksIDEzLCA5OCwgMjA1LCA5NywgNDgsIDE4MiwgMjA1LCA5NywgNDgsIDg3LCAyMDUsIAorICAgIDk3LCA0OCwgMTkxLCAyMDUsIDk3LCA0OCwgNDksIDUxLCAyMDUsIDk3LCA0OCwgMTE1LCAxMjcsIDIwNSwgOTcsIDQ4LCAKKyAgICAxNTcsIDIwMSwgNDgsIDIwNSwgOTcsIDQ4LCAxNTcsIDIzOSwgMTQsIDIwNSwgOTcsIDQ4LCAyMDgsIDI1NCwgMjM5LCAxNCwgCisgICAgMjA1LCA5NywgNDgsIDIwOCwgMjU0LCAyMDEsIDQ4LCAyMDUsIDk3LCA0OCwgOTgsIDIwNSwgOTcsIDI0MSwgMjQzLCA0OCwgCisgICAgMTgyLCAyMDUsIDk3LCAyNDEsIDI0MywgNDgsIDg3LCAyMDUsIDk3LCAyNDEsIDI0MywgNDgsIDE5MSwgMjA1LCA5NywgMjQxLCAKKyAgICAyNDMsIDQ4LCAyNDYsIDExMiwgMjA1LCA5NywgMTc2LCAyNDYsIDE1NiwgNDgsIDI1MSwgNDcsIDIwNSwgOTcsIDE3NiwgCisgICAgMjQ2LCAxNTYsIDQ4LCA5OCwgMjA1LCA5NywgNTUsIDIwNSwgMTg2LCAxNDgsIDE4MiwgMjA1LCA5NywgNTUsIDIwNSwgMTg2LCAKKyAgICAxNDgsIDg3LCAyMDUsIDk3LCA1NSwgMjA1LCAxODYsIDE0OCwgMTkxLCAyMDUsIDk3LCA1NSwgMjA1LCAxODYsIDE0OCwgCisgICAgMTU3LCAyMDEsIDQ4LCAyMDUsIDk3LCA1NSwgMjA1LCAxODYsIDE0OCwgMTU3LCAyMzksIDE0LCAyMDUsIDk3LCA1NSwgMjA1LCAKKyAgICAxODYsIDE0OCwgMjA4LCAyNTQsIDIzOSwgMTQsIDIwNSwgOTcsIDU1LCAyMDUsIDE4NiwgMTQ4LCAyMDgsIDI1NCwgMjAxLCAKKyAgICA0OCwgMjA1LCA5NywgNTUsIDIwNSwgMTg2LCAxNDgsIDk4LCAyMDUsIDk3LCA1NSwgMywgNTMsIDIzMywgMTc3LCA5NywgCisgICAgMTgyLCAyMDUsIDk3LCA1NSwgMywgNTMsIDIzMywgMTc3LCA5NywgODcsIDIwNSwgOTcsIDU1LCAzLCA1MywgMjMzLCAxNzcsIAorICAgIDk3LCAxOTEsIDIwNSwgOTcsIDU1LCAzLCA1MywgMjMzLCAxNzcsIDk3LCAyMzMsIDE3NywgMjA3LCAyNSwgMjI2LCAyMTQsIAorICAgIDgzLCAyMDcsIDI1LCAyMjYsIDIxNCwgOTgsIDIwNSwgOTcsIDU1LCAxMTksIDg3LCAyMDUsIDk3LCA0OCwgMTgyLCAyMDUsIAorICAgIDk3LCA1NSwgOTgsIDc2LCAxOTEsIDIwNSwgOTcsIDQ4LCA4NywgMjA1LCA5NywgNTUsIDExOSwgOTgsIDIwNSwgOTcsIDQ4LCAKKyAgICAxOTEsIDIwNSwgOTcsIDU1LCA5OCwgNzYsIDE4MiwgMjA1LCA5NywgNDgsIDk4LCAyMDUsIDk3LCAyMTYsIDE4OCwgMjUwLCAKKyAgICAxOTksIDE4MiwgMjA1LCA5NywgMjE2LCAxODgsIDI1MCwgMTk5LCA4NywgMjA1LCA5NywgMjE2LCAxODgsIDI1MCwgMTk5LCAKKyAgICAxOTEsIDIwNSwgOTcsIDIxNiwgMTg4LCAyNTAsIDE5OSwgOTgsIDYzLCA0NCwgNjQsIDQ4LCAxODIsIDYzLCA0NCwgNjQsIAorICAgIDQ4LCA4NywgNjMsIDQ0LCA2NCwgNDgsIDE5MSwgNjMsIDQ0LCA2NCwgNDgsIDI1MSwgNDcsIDIwNSwgOTcsIDUxLCAyMDQsIAorICAgIDk5LCA0OCwgMjUxLCA0NywgMjA1LCA5NywgMjQ4LCA5MywgMjA0LCA5OSwgNDgsIDI1MSwgNDcsIDIwNSwgOTcsIDQ5LCAKKyAgICAyMDQsIDk5LCA0OCwgMjUxLCA0NywgMjA1LCA5NywgMjA1LCAxNTgsIDIwNCwgOTksIDQ4LCAyMTMsIDExMCwgMjI1LCAyOCwgCisgICAgMjEzLCAxMTAsIDIxMywgNDYsIDIyMCwgNiwgMjI1LCAyOCwgMjIwLCA2LCAyMTMsIDQ2LCAyMzYsIDIyOSwgMjQzLCAxNiwgCisgICAgMjUwLCAyMDAsIDI0NiwgMTUxLCAyNTEsIDQ2LCA4NywgNjMsIDQ4LCAyMDYsIDQ1LCAyMDUsIDE1NiwgOTgsIDIzOCwgMTE4LCAKKyAgICAyNTAsIDIwMiwgMjA2LCA0NSwgMjEzLCA0MiwgMTgyLCAyMzgsIDExOCwgMjUwLCAyMDIsIDIwNiwgNDUsIDIwNSwgMTU2LCAKKyAgICA4NywgMjM4LCAxMTgsIDI1MCwgMjAyLCAyMDYsIDQ1LCAyMjUsIDI0LCAxOTEsIDIzOCwgMTE4LCAyNTAsIDIwMiwgNjMsIAorICAgIDk4LCAyMzgsIDExOCwgMjUwLCAyMDIsIDYzLCAxODIsIDIzOCwgMTE4LCAyNTAsIDIwMiwgNjMsIDg3LCAyMzgsIDExOCwgCisgICAgMjUwLCAyMDIsIDYzLCAxOTEsIDIzOCwgMTE4LCAyNTAsIDIwMiwgMTkxLCAyMDUsIDk3LCA1NSwgMywgMTY4LCAyMDUsIAorICAgIDIyNCwgMjI1LCAxOCwgMTkxLCAyMDUsIDk3LCA1NSwgMywgMTY4LCAyMDUsIDIyNCwgMjEzLCAzNSwgMTgyLCAyMDUsIDk3LCAKKyAgICA1NSwgMywgMTY4LCAyMDUsIDIyNCwgMjI1LCAxOCwgMTgyLCAyMDUsIDk3LCA1NSwgMywgMTY4LCAyMDUsIDIyNCwgMjEzLCAKKyAgICAzNSwgOTgsIDIwNSwgOTcsIDU1LCAzLCAxNjgsIDIwNSwgMjI0LCAyMDMsIDIxNiwgODcsIDIwNSwgOTcsIDU1LCAzLCAxNjgsIAorICAgIDIwNSwgMjI0LCAyMDMsIDIxNiwgOTgsIDIwNSwgOTcsIDU1LCAzLCAxNjgsIDIwNSwgMjI0LCAyMzksIDE2NSwgODcsIDIwNSwgCisgICAgOTcsIDU1LCAzLCAxNjgsIDIwNSwgMjI0LCAyMzksIDE2NSwgNjMsIDI0MiwgMTg4LCAxOTEsIDI2LCA5OCwgNDgsIDYzLCAKKyAgICAyNDIsIDE4OCwgMTkxLCAyNiwgODcsIDQ4LCA2MywgMjQyLCAxODgsIDE4MiwgMjYsIDk4LCA0OCwgNjMsIDI0MiwgMTg4LCAKKyAgICAxODIsIDI2LCA4NywgNDgsIDYzLCAyNDIsIDE4OCwgOTgsIDI2LCAxODIsIDQ4LCA2MywgMjQyLCAxODgsIDg3LCAyNiwgCisgICAgMTgyLCA0OCwgNjMsIDI0MiwgMTg4LCA5OCwgMjYsIDE5MSwgNDgsIDYzLCAyNDIsIDE4OCwgODcsIDI2LCAxOTEsIDQ4LCAKKyAgICAyMTMsIDg2LCA1NSwgMTI3LCAyMjUsIDI4LCAyMTMsIDg2LCA1NSwgMTI3LCAyMTMsIDQ2LCAyMTMsIDg2LCA1NSwgMTE1LCAKKyAgICAyMjUsIDI4LCAyMTMsIDg2LCA1NSwgMTE1LCAyMTMsIDQ2LCAyMTMsIDg2LCA1NSwgNDksIDIwMywgMjI4LCAyMTMsIDg2LCAKKyAgICA1NSwgNTEsIDIwMywgMjI4LCAyMTMsIDg2LCA1NSwgNDksIDIzOSwgMTY3LCAyMTMsIDg2LCA1NSwgNTEsIDIzOSwgMTY3LCAKKyAgICAxODIsIDY0LCA1NSwgMjM2LCAyMDEsIDI0OSwgNzcsIDMsIDIzMywgMTc3LCAxNDgsIDExNSwgMjUwLCAyMDMsIDIyOCwgCisgICAgMTE4LCAzNSwgMjEzLCAxNzYsIDI0OCwgNzgsIDI0OSwgOTQsIDEwMCwgMywgMTYyLCAyMDAsIDE5NSwgNDQsIDIwMCwgMTk1LCAKKyAgICA0NCwgMjcsIDIwMCwgMTk1LCA2MywgNTIsIDI0NywgNTMsIDYzLCAyNDEsIDY1LCAyNDcsIDUzLCAyMDQsIDE4NSwgNjMsIAorICAgIDIxNiwgMzcsIDIzMywgMTc3LCA2MywgMjE3LCAxMzAsIDYzLCAyMTcsIDEzMCwgNjMsIDIyMiwgNjYsIDIwMywgMjI3LCAKKyAgICAyMDUsIDk5LCAyNDcsIDUzLCA2MywgMjIyLCA2NiwgMjM5LCAxNjYsIDIwNSwgOTksIDI0NywgNTMsIDYzLCAyMjIsIDY2LCAKKyAgICAyMjUsIDIzLCAyMDUsIDk5LCAyNDcsIDUzLCA2MywgMjIyLCA2NiwgMjEzLCA0MSwgMjA1LCA5OSwgMjQ3LCA1MywgMjA1LCAKKyAgICAxNTgsIDE2NywgNjMsIDI0NiwgMTU1LCAyNDgsIDkzLCAxNjcsIDYzLCAyNDYsIDE1NSwgMTYyLCAyMzYsIDIyOSwgMjE1LCAKKyAgICA5OCwgNjMsIDI0MiwgMTg0LCAyMTIsIDIyOCwgMTYyLCAyMzYsIDIyOSwgMjE1LCA5OCwgNjMsIDI0MiwgMTg0LCA2NCwgCisgICAgMjM2LCAyMjksIDIxNSwgOTgsIDI0MiwgMTg0LCAyMTIsIDIyOCwgNjQsIDIzNiwgMjI5LCAyMTUsIDk4LCAyNDIsIDE4NCwgCisgICAgNTIsIDIxNSwgNzAsIDIyOCwgOTksIDIwMywgMjU1LCA1NCwgOTgsIDIwNCwgMTQxLCA1NSwgMywgMjA1LCA5OSwgMjUwLCAKKyAgICAyMDEsIDE4MiwgMjA0LCAxNDEsIDU1LCAzLCAyMDUsIDk5LCAyNTAsIDIwMSwgODcsIDIwNCwgMTQxLCA1NSwgMywgMjA1LCAKKyAgICA5OSwgMjUwLCAyMDEsIDE5MSwgMjA0LCAxNDEsIDU1LCAzLCAyMDUsIDk5LCAyNTAsIDIwMSwgMTE2LCA2LCAxLCAyNTAsIAorICAgIDEwNCwgMTE2LCA2LCAxLCAyNDgsIDI0LCAxMTYsIDYsIDEsIDIwMywgNTcsIDExNiwgNiwgMSwgMjM1LCAxMzAsIDExNiwgNiwgCisgICAgMSwgMjQwLCAyMDYsIDExNiwgNiwgMSwgMjAwLCAyMywgMTE2LCA2LCAxLCAxOTksIDYxLCAxMTYsIDYsIDEsIDIzOSwgODgsIAorICAgIDExNiwgNiwgMSwgMTk5LCA4NiwgMTE2LCA2LCAxLCAyMjcsIDI1NSwgMTE2LCA2LCAxLCA4MiwgMjI3LCAyNTUsIDExNiwgNiwgCisgICAgMSwgNzAsIDExNiwgNiwgMSwgMjQwLCAyMjYsIDExNiwgNiwgMSwgMjI3LCA3NCwgMTE2LCA2LCAxLCAyMjQsIDE0MCwgMTE2LCAKKyAgICA2LCAxLCAyMjAsIDIxOCwgMTE2LCA2LCAxLCAyMjAsIDEyMCwgMTE2LCA2LCAxLCAyMTcsIDY1LCAxMTYsIDYsIDEsIDIxNSwgCisgICAgOTMsIDExNiwgNiwgMSwgMjEzLCAxOCwgMTE2LCA2LCAxLCAyMDksIDU4LCAxMTYsIDYsIDEsIDIwNCwgMTcxLCAxMTYsIDYsIAorICAgIDEsIDIwNCwgMTYsIDExNiwgNiwgMSwgMjM2LCAyMDQsIDExNiwgNiwgMSwgMjM0LCA5NSwgMTE2LCA2LCAxLCAyMTcsIDQsIAorICAgIDExNiwgNiwgMSwgMjE2LCA3MywgMTE2LCA2LCAxLCAyMDksIDIyMywgMTE2LCA2LCAxLCAyMDUsIDExLCAxMTYsIDYsIDEsIAorICAgIDI0NiwgMTk4LCAxMTYsIDYsIDEsIDIxMCwgMTE0LCAxMTYsIDYsIDEsIDIwMCwgMjksIDExNiwgNiwgMSwgMjAwLCAzMSwgCisgICAgMTE2LCA2LCAxLCAyMDAsIDYzLCAxMTYsIDYsIDEsIDIwOCwgMjIwLCAxNDQsIDExNiwgNiwgMSwgMTk5LCAyMTEsIDExNiwgCisgICAgNiwgMSwgNCwgMTk5LCAxODEsIDExNiwgNiwgMSwgNCwgMTk5LCAxODIsIDMsIDIwNywgNiwgMTE2LCA2LCAxLCAxOTksIAorICAgIDI0NSwgMTE2LCA2LCAxLCAyMjgsIDQwLCA0LCAxOTksIDE4MSwgMTE2LCA2LCAxLCAyNDgsIDE3NSwgMTk5LCAxODEsIDExNiwgCisgICAgNiwgMSwgMjI4LCA0MCwgMjQ4LCAxNzUsIDE5OSwgMTgxLCAxMTYsIDYsIDEsIDIzNywgNjMsIDExNiwgNiwgMSwgMjI3LCAKKyAgICAyNTMsIDExNiwgNiwgMSwgMjA5LCAyMjIsIDExNiwgNiwgMSwgMjA1LCA3MywgNjIsIDExNiwgNiwgMSwgMjI1LCA1OSwgCisgICAgMjIwLCAyMTgsIDExNiwgNCwgMSwgMjUwLCAxMDQsIDExNiwgNCwgMSwgMjQ4LCAyNCwgMTE2LCA0LCAxLCAyMDMsIDU3LCAKKyAgICAxMTYsIDQsIDEsIDIzNSwgMTMwLCAxMTYsIDQsIDEsIDI0MCwgMjA2LCAxMTYsIDQsIDEsIDIwMCwgMjMsIDExNiwgNCwgMSwgCisgICAgMTk5LCA2MSwgMTE2LCA0LCAxLCAyMzksIDg4LCAxMTYsIDQsIDEsIDE5OSwgODYsIDExNiwgNCwgMSwgMjI3LCAyNTUsIAorICAgIDExNiwgNCwgMSwgODIsIDIyNywgMjU1LCAxMTYsIDQsIDEsIDcwLCAxMTYsIDQsIDEsIDI0MCwgMjI2LCAxMTYsIDQsIDEsIAorICAgIDIyNywgNzQsIDExNiwgNCwgMSwgMjI0LCAxNDAsIDExNiwgNCwgMSwgMjIwLCAyMTgsIDExNiwgNCwgMSwgMjIwLCAxMjAsIAorICAgIDExNiwgNCwgMSwgMjE3LCA2NSwgMTE2LCA0LCAxLCAyMTUsIDkzLCAxMTYsIDQsIDEsIDIxMywgMTgsIDExNiwgNCwgMSwgCisgICAgMjA5LCA1OCwgMTE2LCA0LCAxLCAyMDQsIDE3MSwgMTE2LCA0LCAxLCAyMDQsIDE2LCAxMTYsIDQsIDEsIDIzNiwgMjA0LCAKKyAgICAxMTYsIDQsIDEsIDIzNCwgOTUsIDExNiwgNCwgMSwgMjE3LCA0LCAxMTYsIDQsIDEsIDIxNiwgNzMsIDExNiwgNCwgMSwgCisgICAgMjA5LCAyMjMsIDExNiwgNCwgMSwgMjA1LCAxMSwgMTE2LCA0LCAxLCAyNDYsIDE5OCwgMTE2LCA0LCAxLCAyMTAsIDExNCwgCisgICAgMTE2LCA0LCAxLCAyMDAsIDI5LCAxMTYsIDQsIDEsIDIwMCwgMzEsIDExNiwgNCwgMSwgMjAwLCA2MywgMTE2LCA0LCAxLCAKKyAgICAyMDgsIDIyMCwgMTQ0LCAxMTYsIDQsIDEsIDE5OSwgMjExLCAxMTYsIDQsIDEsIDQsIDE5OSwgMTgxLCAxMTYsIDQsIDEsIDQsIAorICAgIDE5OSwgMTgyLCAzLCAyMDcsIDYsIDExNiwgNCwgMSwgMTk5LCAyNDUsIDExNiwgNCwgMSwgMjI4LCA0MCwgNCwgMTk5LCAKKyAgICAxODEsIDExNiwgNCwgMSwgMjQ4LCAxNzUsIDE5OSwgMTgxLCAxMTYsIDQsIDEsIDIyOCwgNDAsIDI0OCwgMTc1LCAxOTksIAorICAgIDE4MSwgMTE2LCA0LCAxLCAyMzcsIDYzLCAxMTYsIDQsIDEsIDIyNywgMjUzLCAxMTYsIDQsIDEsIDIwOSwgMjIyLCAxMTYsIAorICAgIDQsIDEsIDIwNSwgNzMsIDYyLCAxMTYsIDQsIDEsIDIyNSwgNTksIDIyMCwgMjE4LCA4LCA2LCAxLCAyMjUsIDE5MywgMywgCisgICAgNTMsIDE0OCwgOCwgNCwgMSwgMjI1LCAxOTMsIDMsIDUzLCAxNDgsIDgsIDYsIDEsIDIyNSwgMTkzLCAzLCAxMDEsIDIwNSwgCisgICAgMjQwLCA4LCA2LCAxLCAyMTYsIDIyNywgMywgOTcsIDgsIDYsIDEsIDIxNCwgMzMsIDMsIDIwNywgNiwgOCwgNCwgMSwgMzUsIAorICAgIDMsIDk3LCA4LCA0LCAxLCAyMDcsIDg0LCAzLCAyNDEsIDcxLCA5NywgOCwgNiwgMSwgMjM0LCAyNDgsIDMsIDI0MSwgMTE5LCAKKyAgICA4LCA0LCAxLCAyMzQsIDI0OCwgMywgMjQxLCAxMTksIDgsIDYsIDEsIDIyNywgMTE5LCAzLCAyNDEsIDExOSwgOCwgNCwgMSwgCisgICAgMjI3LCAxMTksIDMsIDI0MSwgMTE5LCA4LCA2LCAxLCAxOTksIDE1OCwgMywgMjQxLCAxMTksIDgsIDQsIDEsIDE5OSwgMTU4LCAKKyAgICAzLCAyNDEsIDExOSwgOCwgNiwgMSwgMjUxLCAxMTIsIDgsIDYsIDEsIDIyMywgMjQ0LCAzLCAxMTcsIDgsIDYsIDEsIDIwNCwgCisgICAgMTg1LCA2MiwgOCwgNiwgMSwgMjA0LCAxODUsIDI1MSwgMTEyLCA4LCA0LCAxLCAyMDMsIDE2OSwgMywgNTEsIDExNywgOCwgCisgICAgNiwgMSwgMjAxLCAxNDgsIDMsIDExNywgOCwgNCwgMSwgMjAxLCAxNDgsIDMsIDExNywgOCwgNCwgMSwgMjAzLCAxNjksIDMsIAorICAgIDI0MiwgMTk4LCA4LCA2LCAxLCAxNjcsIDIzNCwgMjQ3LCA4LCA0LCAxLCAxNjcsIDIzNCwgMjQ3LCA4LCA0LCAxLCAyMDcsIAorICAgIDQsIDIxNSwgMjI5LCA4LCA0LCAxLCAxOTcsIDMsIDIxOCwgMjEyLCA4LCA0LCAxLCAyMDQsIDE4NSwgMjE0LCAzMywgMywgCisgICAgMjA3LCA2LCA4LCA0LCAxLCAxNjMsIDMsIDEyOCwgMjEzLCAyNywgMjI4LCA3MywgOCwgMSwgNCwgNiwgMjA0LCAxODUsIDcyLCAKKyAgICA4LCAyMDgsIDQsIDQsIDEsIDIyNywgMjUxLCA2NywgMSwgNiwgMjAzLCAxNjgsIDgsIDYsIDEsIDIxMiwgMTIzLCAzLCAyMDcsIAorICAgIDE4MywgMjA3LCA2LCA4LCA2LCAxLCAxOTksIDE1OCwgMywgMjA3LCAxODMsIDIwNywgNiwgODUsIDYsIDEsIDI1MSwgMTM2LCAKKyAgICA4NSwgNCwgMSwgMjUxLCAxMzYsIDg1LCA2LCAxLCAyMDIsIDIzMSwgODUsIDQsIDEsIDIwMiwgMjMxLCA4NSwgNiwgMSwgCisgICAgMjM2LCA2MCwgODUsIDQsIDEsIDIzNiwgNjAsIDg1LCA2LCAxLCAyNDIsIDI1LCA4NSwgNCwgMSwgMjQyLCAyNSwgODUsIDYsIAorICAgIDEsIDIzOCwgMjMzLCA4NSwgNCwgMSwgMjM4LCAyMzMsIDg1LCA2LCAxLCAyMDksIDMsIDg1LCA0LCAxLCAyMDksIDMsIDg1LCAKKyAgICA2LCAxLCAxOTksIDk2LCA4NSwgNCwgMSwgMTk5LCA5NiwgODUsIDYsIDEsIDIzNCwgMTU0LCA4NSwgNCwgMSwgMjM0LCAxNTQsIAorICAgIDg1LCA2LCAxLCAyMDYsIDg2LCA4NSwgNCwgMSwgMjA2LCA4NiwgODUsIDYsIDEsIDIzMiwgMjM3LCA4NSwgNCwgMSwgMjMyLCAKKyAgICAyMzcsIDg1LCA2LCAxLCAyMjcsIDU5LCA4NSwgNCwgMSwgMjI3LCA1OSwgODUsIDYsIDEsIDIyNSwgNTQsIDg1LCA0LCAxLCAKKyAgICAyMjUsIDU0LCA4NSwgNiwgMSwgMjIxLCAyMTEsIDg1LCA0LCAxLCAyMjEsIDIxMSwgODUsIDYsIDEsIDIxOSwgMTUwLCA4NSwgCisgICAgNCwgMSwgMjE5LCAxNTAsIDg1LCA2LCAxLCAyMjYsIDMxLCA4NSwgNCwgMSwgMjI2LCAzMSwgODUsIDYsIDEsIDc0LCA4NSwgCisgICAgNCwgMSwgNzQsIDg1LCA2LCAxLCAyMTUsIDIwNCwgODUsIDQsIDEsIDIxNSwgMjA0LCA4NSwgNiwgMSwgMjEzLCAxLCA4NSwgCisgICAgNCwgMSwgMjEzLCAxLCA4NSwgNiwgMSwgMjA5LCAxNTEsIDg1LCA0LCAxLCAyMDksIDE1MSwgODUsIDYsIDEsIDIwNiwgMjIxLCAKKyAgICA4NSwgNCwgMSwgMjA2LCAyMjEsIDg1LCA2LCAxLCAyMDQsIDQ2LCA4NSwgNCwgMSwgMjA0LCA0NiwgODUsIDYsIDEsIDIzNywgCisgICAgMTEyLCA4NSwgNCwgMSwgMjM3LCAxMTIsIDg1LCA2LCAxLCAyMjYsIDE4NSwgODUsIDQsIDEsIDIyNiwgMTg1LCA4NSwgNiwgCisgICAgMSwgMjE0LCAyMzUsIDg1LCA0LCAxLCAyMTQsIDIzNSwgODUsIDYsIDEsIDIxNywgNTcsIDg1LCA0LCAxLCAyMTcsIDU3LCAKKyAgICA4NSwgNiwgMSwgMjQxLCA2OSwgMjUxLCAxNDIsIDg1LCA0LCAxLCAyNDEsIDY5LCAyNTEsIDE0MiwgODUsIDYsIDEsIDQwLCAKKyAgICA4NSwgMjUxLCAxNzEsIDg1LCA0LCAxLCA0MCwgODUsIDI1MSwgMTcxLCA4NSwgNiwgMSwgMjQyLCAyMTcsIDIzOCwgMjMzLCAKKyAgICA4NSwgNCwgMSwgMjQyLCAyMTcsIDIzOCwgMjMzLCA4NSwgNiwgMSwgMjQxLCA2OSwgMjI3LCA1OSwgODUsIDQsIDEsIDI0MSwgCisgICAgNjksIDIyNywgNTksIDg1LCA2LCAxLCAyNDEsIDY5LCAyMTksIDE1MCwgODUsIDQsIDEsIDI0MSwgNjksIDIxOSwgMTUwLCAKKyAgICA4NSwgNiwgMSwgMjQyLCAyMTcsIDIxOSwgMTUwLCA4NSwgNCwgMSwgMjQyLCAyMTcsIDIxOSwgMTUwLCA4NSwgNiwgMSwgNDAsIAorICAgIDg1LCAyMTcsIDU3LCA4NSwgNCwgMSwgNDAsIDg1LCAyMTcsIDU3LCA4NSwgNiwgMSwgMjEyLCAxNiwgODUsIDQsIDEsIDIxMiwgCisgICAgMTYsIDg1LCA2LCAxLCAyNDIsIDIzMiwgMjEwLCA1NywgODUsIDQsIDEsIDI0MiwgMjMyLCAyMTAsIDU3LCA4NSwgNiwgMSwgCisgICAgNDAsIDg1LCAyMTAsIDU3LCA4NSwgNCwgMSwgNDAsIDg1LCAyMTAsIDU3LCA4NSwgNiwgMSwgNDAsIDg1LCAyMzgsIDk0LCAKKyAgICA4NSwgNCwgMSwgNDAsIDg1LCAyMzgsIDk0LCA4NSwgNiwgMSwgMjUxLCAxNTUsIDIyNiwgMTkwLCA4NSwgNCwgMSwgMjUxLCAKKyAgICAxNTUsIDIyNiwgMTkwLCA4NSwgNiwgMSwgMjQxLCA2OSwgMjMzLCAxNzgsIDg1LCA0LCAxLCAyNDEsIDY5LCAyMzMsIDE3OCwgCisgICAgODUsIDYsIDEsIDQwLCA4NSwgMjMzLCAxNzgsIDg1LCA0LCAxLCA0MCwgODUsIDIzMywgMTc4LCA4NSwgNiwgMSwgNDAsIDg1LCAKKyAgICAxNDQsIDg1LCA0LCAxLCA0MCwgODUsIDE0NCwgODUsIDYsIDEsIDIyNSwgMTkyLCAxNDQsIDg1LCA0LCAxLCAyMjUsIDE5MiwgCisgICAgMTQ0LCA4NSwgNiwgMSwgNDAsIDg1LCAyMzQsIDExNCwgODUsIDQsIDEsIDQwLCA4NSwgMjM0LCAxMTQsIDg1LCA2LCAxLCAKKyAgICA0MCwgODUsIDIzNCwgMTU3LCA4NSwgNCwgMSwgNDAsIDg1LCAyMzQsIDE1NywgODUsIDYsIDEsIDQwLCA4NSwgMjM2LCA1NSwgCisgICAgODUsIDQsIDEsIDQwLCA4NSwgMjM2LCA1NSwgODUsIDYsIDEsIDQwLCA4NSwgMjQwLCAyMjksIDg1LCA0LCAxLCA0MCwgODUsIAorICAgIDI0MCwgMjI5LCA4NSwgNiwgMSwgNDAsIDg1LCAyMTAsIDIzLCA4NSwgNCwgMSwgNDAsIDg1LCAyMTAsIDIzLCA4NSwgNiwgMSwgCisgICAgNDAsIDIxOCwgMTAzLCAyMTAsIDIzLCA4NSwgNCwgMSwgNDAsIDIxOCwgMTAzLCAyMTAsIDIzLCA4NSwgNiwgMSwgNDAsIAorICAgIDIxOCwgMTAzLCAyMTksIDIwMSwgODUsIDQsIDEsIDQwLCAyMTgsIDEwMywgMjE5LCAyMDEsIDg1LCA2LCAxLCA0MCwgMjE4LCAKKyAgICAxMDMsIDIxOCwgNDEsIDg1LCA0LCAxLCA0MCwgMjE4LCAxMDMsIDIxOCwgNDEsIDg1LCA2LCAxLCA0MCwgMjE4LCAxMDMsIAorICAgIDIwMSwgNzksIDg1LCA0LCAxLCA0MCwgMjE4LCAxMDMsIDIwMSwgNzksIDg1LCAxNiwgMjI3LCA4MiwgODUsIDE2LCAyMjEsIAorICAgIDIxMiwgMjEzLCAxLCA4NSwgMTYsIDIxNSwgMjA1LCAyMTMsIDEsIDg1LCAxNiwgMjA4LCAxMDAsIDg1LCAxNiwgMjA2LCAKKyAgICAyMjIsIDIxMywgMSwgODUsIDE2LCAyMjYsIDE4NiwgMjEzLCAxLCA4NSwgMTYsIDIxMCwgMjQsIDIwOSwgMTUxLCA4NSwgNiwgCisgICAgMSwgMjQyLCAyMTcsIDIxMCwgNTcsIDg1LCA0LCAxLCAyNDIsIDIxNywgMjEwLCA1NywgODUsIDYsIDEsIDI0MiwgMjE3LCAKKyAgICAyMzYsIDU1LCA4NSwgNCwgMSwgMjQyLCAyMTcsIDIzNiwgNTUsIDg1LCAzOCwgMjE5LCAxNTEsIDU2LCA4NSwgMzgsIDIwOCwgCisgICAgMjEzLCAyNTAsIDE3MywgODUsIDM4LCAyMDgsIDIxMywgMjI0LCAyNDgsIDg1LCA2LCAxLCAyNDgsIDExNywgMjI2LCAxOTAsIAorICAgIDg1LCA0LCAxLCAyNDgsIDExNywgMjI2LCAxOTAsIDg1LCA0MCwgMjE4LCAxMDMsIDIzNiwgMTgzLCAyMDgsIDc2LCA4NSwgCisgICAgNDAsIDIxOCwgMTAzLCAyNDEsIDEwLCAyMTQsIDc5LCA4MSwgODUsIDQwLCAyMTgsIDEwMywgMjI4LCA5NywgMjE0LCA3OSwgCisgICAgODEsIDg1LCA0MCwgMjE4LCAxMDMsIDIwMywgNDQsIDI0MCwgMjM5LCA4NSwgMjM2LCAyMTksIDExMiwgMjM0LCAyMTMsIDg1LCAKKyAgICAyMzYsIDE4MywgMjA4LCA3NiwgODUsIDIyMSwgNzcsIDI0MCwgMjM5LCAxMTgsIDQsIDEsIDI1MSwgODUsIDExOCwgNCwgMSwgCisgICAgMjQ5LCA4OCwgMTE4LCA0LCAxLCAyMzYsIDU5LCAxMTgsIDQsIDEsIDI0MCwgMTkwLCAxMTgsIDQsIDEsIDIzOCwgMTc5LCAKKyAgICAxMTgsIDQsIDEsIDIwMiwgMjE3LCAxMTgsIDQsIDEsIDE5OSwgODQsIDExOCwgNCwgMSwgMjA2LCAyNDQsIDExOCwgNCwgMSwgCisgICAgMjI4LCAxMTcsIDExOCwgNCwgMSwgMjI3LCA2OCwgMTE4LCA0LCAxLCAyMjUsIDY1LCAxMTgsIDQsIDEsIDIyMiwgMTgwLCAKKyAgICAxMTgsIDQsIDEsIDIyMCwgMTI1LCAxMTgsIDQsIDEsIDIxNywgNzgsIDExOCwgNCwgMSwgMjE2LCAxMzAsIDExOCwgNCwgMSwgCisgICAgMTk5LCA3MywgMTE4LCA0LCAxLCAyMTMsIDIzNCwgMTE4LCA0LCAxLCAyMTIsIDEzLCAxMTgsIDQsIDEsIDIwNiwgMjMyLCAKKyAgICAxMTgsIDQsIDEsIDIwNCwgNSwgMTE4LCA0LCAxLCAyMTUsIDIzNywgMTE4LCA0LCAxLCAyMjYsIDE5NSwgMTE4LCA0LCAxLCAKKyAgICAyMzUsIDE5MCwgMTE4LCA0LCAxLCAyMTQsIDE0NCwgMTE4LCA0LCAxLCAyMTAsIDIxLCAxMTgsIDQsIDEsIDI0NiwgMjIzLCAKKyAgICAxMTgsIDQsIDEsIDI0NywgMTU4LCAxMTgsIDQsIDEsIDIyNywgMTk4LCAxMTgsIDQsIDEsIDI0NiwgMTYyLCAxMTgsIDQsIDEsIAorICAgIDI0NywgMjEsIDExOCwgNCwgMSwgMjAwLCAxNzksIDExOCwgNCwgMSwgMjI3LCAyMTIsIDExOCwgNCwgMSwgMjM0LCAyMzAsIAorICAgIDExOCwgNCwgMSwgMjM0LCAxMzksIDExOCwgNCwgMSwgMjM0LCA2OSwgMTE4LCA0LCAxLCAyMDEsIDY0LCAxMTgsIDQsIDEsIAorICAgIDIzNCwgMTY2LCAxMTgsIDQsIDEsIDIzMywgMjAzLCAxMTgsIDQsIDEsIDE5OSwgMjQ3LCAxMTgsIDQsIDEsIDI1MSwgMjEwLCAKKyAgICAyMDYsIDQsIDEsIDE4MywgMjA2LCA0LCAxLCAyMDAsIDEwNSwgMjA2LCA0LCAxLCAyMDAsIDEwNCwgMjA2LCA0LCAxLCAyMDAsIAorICAgIDk0LCAyMDYsIDQsIDEsIDIwMCwgOTIsIDIwNiwgNCwgMSwgMjQ4LCAyMTQsIDI1MSwgMjUzLCAyMDAsIDg3LCAyMDYsIDQsIAorICAgIDEsIDIwMCwgODcsIDIwNiwgNCwgMSwgMjAwLCAxMDIsIDIwNiwgNCwgMSwgMjAwLCA5OSwgMjA2LCA0LCAxLCAyMDAsIDEwMSwgCisgICAgMjA2LCA0LCAxLCAyMDAsIDEwMCwgMjA2LCA0LCAxLCAyMDAsIDE0LCAyMDYsIDQsIDEsIDIwMCwgOTYsIDIwNiwgNCwgMSwgCisgICAgMjAwLCA4NSwgMjA2LCA0LCAxLCAyMDQsIDIxMiwgMjAwLCA4NSwgMjA2LCA0LCAxLCAyMDAsIDgyLCAyMDYsIDQsIDEsIAorICAgIDIwMCwgOTAsIDIwNiwgNCwgMSwgMjQ4LCAyMTQsIDI1MSwgMjUzLCAyMDAsIDkwLCAyMDYsIDQsIDEsIDIwNCwgMjEyLCAKKyAgICAyMDAsIDkwLCAyMDYsIDQsIDEsIDIwMCwgODksIDIwNiwgNCwgMSwgMjAwLCAxMDksIDIwNiwgNCwgMSwgMjAwLCA4MywgCisgICAgMjA2LCA0LCAxLCAyMDQsIDIxMiwgMjAwLCA4MywgMjA2LCA0LCAxLCAyMDAsIDcyLCAyMDYsIDQsIDEsIDIwNCwgMjEyLCAKKyAgICAyMDAsIDcyLCAyMDYsIDQsIDEsIDIwMCwgOSwgMjA2LCA0LCAxLCAyMDAsIDUzLCAyMDYsIDQsIDEsIDI1MSwgMTgzLCAyMDAsIAorICAgIDUzLCAyMDYsIDQsIDEsIDIwNCwgMjEyLCAyMDAsIDUzLCAyMDYsIDQsIDEsIDIwMCwgODEsIDIwNiwgNCwgMSwgMjAwLCA4MCwgCisgICAgMjA2LCA0LCAxLCAyMDAsIDc3LCAyMDYsIDQsIDEsIDIwNCwgMjEyLCAyMDAsIDkxLCAyMDYsIDQsIDEsIDIwNCwgMjEyLCAKKyAgICAyMDAsIDc1LCAyMDYsIDQsIDEsIDIwMCwgNzMsIDIwNiwgNCwgMSwgMTk5LCAyMTEsIDIwNiwgNCwgMSwgMjAwLCA3MCwgCisgICAgMjA2LCA0LCAxLCAyMDAsIDY5LCAyMDYsIDQsIDEsIDIwMCwgOTMsIDIwNiwgNCwgMSwgMjA0LCAyMTIsIDIwMCwgOTMsIAorICAgIDIwNiwgNCwgMSwgMjUwLCAxMDgsIDIwMCwgOTMsIDIwNiwgNCwgMSwgMjAwLCA2OCwgMjA2LCA0LCAxLCAyMDAsIDY2LCAKKyAgICAyMDYsIDQsIDEsIDIwMCwgNjcsIDIwNiwgNCwgMSwgMjAwLCA2NSwgMjA2LCA0LCAxLCAyMDAsIDY0LCAyMDYsIDQsIDEsIAorICAgIDIwMCwgMTAzLCAyMDYsIDQsIDEsIDIwMCwgNjIsIDIwNiwgNCwgMSwgMjAwLCA2MCwgMjA2LCA0LCAxLCAyMDAsIDU5LCAKKyAgICAyMDYsIDQsIDEsIDIwMCwgNTcsIDIwNiwgNCwgMSwgMjAwLCA1NCwgMjA2LCA0LCAxLCAyMDYsIDIxMywgMjAwLCA1NCwgCisgICAgMjA2LCA0LCAxLCAyMDAsIDUyLCAyMDYsIDQsIDEsIDIwMCwgNTEsIDIwNiwgNCwgMSwgMTk5LCAyNDUsIDIwNiwgNCwgNjcsIAorICAgIDEsIDIyNSwgMTY2LCA4MSwgMjA2LCA0LCAyMTAsIDE1NSwgODEsIDIwNiwgNCwgMTExLCAyMjcsIDE2MSwgMzQsIDUsIDIyNCwgCisgICAgMTA5LCAzNCwgNSwgMjIxLCAxMzUsIDM0LCA1LCAyMTIsIDI1NSwgMzQsIDUsIDIwOSwgMjgsIDM0LCA1LCAyMTAsIDcsIDM0LCAKKyAgICA1LCAyNDgsIDEyMywgMzQsIDUsIDIwNSwgMTg1LCAzNCwgNSwgMjQ2LCA5MCwgMzQsIDUsIDIxOCwgMjM5LCAzNCwgNSwgCisgICAgMjE4LCAyNSwgMzQsIDUsIDIzNSwgMTIzLCAyMTcsIDE0NiwgMzQsIDUsIDE5OSwgMTMsIDM0LCA1LCAyNDAsIDIwOSwgMzQsIAorICAgIDUsIDI0MSwgMTg5LCAzNCwgNSwgMjI3LCAxNjUsIDM0LCA1LCAyMDYsIDYwLCAzNCwgNSwgMjQ2LCAyMDksIDM0LCA1LCAKKyAgICAyMTUsIDIxNiwgMzQsIDUsIDIxNSwgMTA1LCAzNCwgNSwgMjM1LCAyMDUsIDM0LCA1LCAyMzUsIDIwMSwgMzQsIDUsIDIzNSwgCisgICAgMjAyLCAzNCwgNSwgMjM1LCAyMDMsIDM0LCA1LCAyMDgsIDE3OSwgMzQsIDUsIDIwOCwgMTM0LCAzNCwgNSwgMjA4LCAxNDcsIAorICAgIDM0LCA1LCAyMDgsIDE3OCwgMzQsIDUsIDIwOCwgMTUyLCAzNCwgNSwgMjA4LCAxNTMsIDM0LCA1LCAyMDgsIDEzOSwgMzQsIAorICAgIDUsIDI0NywgOTksIDM0LCA1LCAyNDcsIDc4LCAzNCwgNSwgMjQ3LCA4MCwgMzQsIDUsIDI0NywgOTgsIDM0LCA1LCAyNDcsIAorICAgIDk2LCAzNCwgNSwgMjQ3LCA5NywgMzQsIDUsIDI0NywgNzksIDM0LCA1LCAxOTgsIDIzMiwgMzQsIDUsIDE5OCwgMjEwLCAzNCwgCisgICAgNSwgMTk4LCAyMjMsIDM0LCA1LCAxOTgsIDIzMSwgMzQsIDUsIDE5OCwgMjI2LCAzNCwgNSwgMTk4LCAyMjcsIDM0LCA1LCAKKyAgICAxOTgsIDIxNSwgMzQsIDUsIDI0NywgOTQsIDM0LCA1LCAyNDcsIDgxLCAzNCwgNSwgMjQ3LCA4MywgMzQsIDUsIDI0NywgOTMsIAorICAgIDM0LCA1LCAyNDcsIDkxLCAzNCwgNSwgMjQ3LCA5MiwgMzQsIDUsIDI0NywgODIsIDM0LCA1LCAyMTQsIDQ1LCAzNCwgNSwgCisgICAgMjE0LCAzNSwgMzQsIDUsIDIxNCwgNDEsIDM0LCA1LCAyMTQsIDQ0LCAzNCwgNSwgMjE0LCA0MiwgMzQsIDUsIDIxNCwgNDMsIAorICAgIDM0LCA1LCAyMTQsIDQwLCAzNCwgNSwgMjI1LCAyMDMsIDM0LCA1LCAyMjUsIDE5NSwgMzQsIDUsIDIyNSwgMTk4LCAzNCwgNSwgCisgICAgMjI1LCAyMDIsIDM0LCA1LCAyMjUsIDE5OSwgMzQsIDUsIDIyNSwgMjAwLCAzNCwgNSwgMjI1LCAxOTYsIDM0LCA1LCAyMDAsIAorICAgIDEzOSwgMzQsIDUsIDIwMCwgMTI2LCAzNCwgNSwgMjAwLCAxMzQsIDM0LCA1LCAyMDAsIDEzOCwgMzQsIDUsIDIwMCwgMTM2LCAKKyAgICAzNCwgNSwgMjAwLCAxMzcsIDM0LCA1LCAyMDAsIDEzMywgMzQsIDUsIDIzNSwgMywgMzQsIDUsIDIzNCwgMjQ5LCAzNCwgNSwgCisgICAgMjM0LCAyNTIsIDM0LCA1LCAyMzUsIDIsIDM0LCA1LCAyMzQsIDI1NCwgMzQsIDUsIDIzNCwgMjU1LCAzNCwgNSwgMjM0LCAKKyAgICAyNTEsIDM4LCAzNywgMSwgMjQ5LCA4LCAzOCwgMzcsIDEsIDIwMywgNTksIDM4LCAzNywgMSwgMjM1LCAxODUsIDM4LCAzNywgCisgICAgMSwgMjQxLCAxNzUsIDM4LCAzNywgMSwgMTk5LCA2OCwgMzgsIDM3LCAxLCAxOTksIDg5LCAzOCwgMzcsIDEsIDE2MSwgMzgsIAorICAgIDM3LCAxLCAyMzgsIDIwOSwgMzgsIDM3LCAxLCAyMzgsIDE5MCwgMzgsIDM3LCAxLCAyMzgsIDE3OSwgMzgsIDM3LCAxLCA3NCwgCisgICAgMzgsIDM3LCAxLCAyMTYsIDczLCAzOCwgMzcsIDEsIDIzOCwgMTE1LCAzOCwgMzcsIDEsIDIzOCwgMTA0LCAzOCwgMzcsIDEsIAorICAgIDIwNiwgMjAxLCAzOCwgMzcsIDEsIDE0NCwgMzgsIDM3LCAxLCAyMDUsIDI2LCAzOCwgMzcsIDEsIDI0NywgOCwgMzgsIDM3LCAKKyAgICAxLCAyMTAsIDExNCwgMzgsIDM3LCAxLCAyMTAsIDY4LCAzOCwgMzcsIDEsIDIzNywgNjMsIDM4LCAzNywgMSwgMjM4LCAxMDAsIAorICAgIDM4LCAzNywgMSwgNjIsIDM4LCAzNywgMSwgMjI4LCAxNzgsIDM4LCAzNywgMSwgMjQwLCAyMjcsIDM4LCAzNywgMSwgMjIxLCAKKyAgICA5NSwgMjA0LCAyMCwgMzgsIDM3LCAxLCAyMDAsIDY1LCAzOCwgMzcsIDEsIDE5OSwgMjExLCAzOCwgMzcsIDEsIDIyOCwgMzksIAorICAgIDYyLCAzOCwgMzcsIDEsIDIyNCwgMTQ4LCAxOTksIDE4MSwgMzgsIDM3LCAxLCAyNDgsIDE3NSwgMTk5LCAxODEsIDM4LCAzNywgCisgICAgMSwgMjI4LCAzOSwgMjQ4LCAxNzUsIDE5OSwgMTgxLCA1MSwgMjUxLCA3MSwgMjA3LCAyNTUsIDIyMiwgMTQ1LCA1MSwgMjUxLCAKKyAgICA3MSwgMjM5LCAxODAsIDIwNywgMjU1LCAyMjIsIDE0NSwgNDksIDIwNywgMjU1LCAxNTksIDUxLCAyMDcsIDI1NSwgMTU5LCAKKyAgICA0OSwgMjM5LCAxODAsIDIwNywgMjU1LCAxNTksIDUxLCAyMzksIDE4MCwgMjA3LCAyNTUsIDE1OSwgMjEzLCAyMjAsIDIyOCwgCisgICAgNjAsIDIyMiwgMTQ1LCAyMTMsIDIyMCwgMjM5LCAxODAsIDIyOCwgNjAsIDIyMiwgMTQ1LCAyMzksIDE4MCwgMjA1LCAxMTYsIAorICAgIDIyMiwgMTQ1LCA0OSwgMjA1LCAxMTYsIDE1OSwgNTEsIDIwNSwgMTE2LCAxNTksIDIxMywgMjIwLCAyMDgsIDE5MywgNDksIAorICAgIDIxMywgMjIwLCAyMTcsIDgwLCAxNTksIDUxLCAyMTMsIDIyMCwgMjE3LCA4MCwgMTU5LCAyMzksIDAsIDI0MywgMTMsIDIxNiwgCisgICAgMTI2LCAyMzYsIDI0NCwgMjE2LCAxMjYsIDIxMywgMTA1LCAyMzYsIDI0NCwgMjE2LCAxMjYsIDIzMywgMzAsIDIzOSwgMTgwLCAKKyAgICAyMTcsIDE0MSwgMTkxLCAyNTEsIDgwLCAxODIsIDI1MSwgODAsIDIzOSwgMTgwLCAyMTMsIDQxLCAyNTEsIDcwLCA1MywgCisgICAgMjE3LCAxMzgsIDIzMywgMzMsIDIyOCwgNTAsIDIyOCwgNTgsIDIxNiwgMTc3LCAyNDgsIDY2LCAyMzMsIDM0LCAzLCAyNDEsIAorICAgIDc0LCAyMDUsIDI0MSwgMywgMjEzLCAyNywgNTYsIDQ5LCAxMjgsIDIxNiwgMTE4LCAxNTksIDUxLCAxMjgsIDIxNiwgMTE4LCAKKyAgICAxNTksIDIwNSwgMjQxLCAzLCA3MywgNTYsIDIwNSwgMjQxLCAzLCA3MywgNTcsIDQ5LCA4MywgMjQ5LCA3NywgMywgMjE0LCAKKyAgICA3MywgNTEsIDgzLCAyNDksIDc3LCAzLCAyMTQsIDczLCAyMDUsIDE1OCwgNDksIDE2NywgMTU5LCAyMDUsIDE1OCwgNTEsIAorICAgIDE2NywgMTU5LCAyNDgsIDkzLCA0OSwgMTY3LCAxNTksIDI0OCwgOTMsIDUxLCAxNjcsIDE1OSwgNDksIDIwOSwgMTczLCAKKyAgICAxMDgsIDE1OSwgNTEsIDIwOSwgMTczLCAxMDgsIDE1OSwgNDksIDUzLCAyMTYsIDExNSwgNTEsIDUzLCAyMTYsIDExNSwgCisgICAgMTIwLCAxOTAsIDExOSwgMTEyLCA3MywgMjE0LCAyMTEsIDExMiwgNzMsIDExOSwgMTIwLCAxOTAsIDIxNCwgMjExLCA5NSwgCisgICAgMjM2LCAyMjksIDczLCAyMTQsIDIxMSwgMjM3LCA2MSwgNzMsIDgxLCAyMTMsIDEwNSwgMjE0LCA3OSwgODEsIDgzLCAyMDUsIAorICAgIDI0MCwgMjEzLCAyNywgMjE1LCA5OSwgMjAwLCAyMzgsIDIxMCwgMTU1LCAxMDEsIDI0MCwgMTgyLCAyMDQsIDE4NSwgMjQ2LCAKKyAgICA3MCwgMjEzLCAyMjAsIDI0MCwgMTgyLCAyMTMsIDIyMCwgMjQ2LCA3MCwgMjA0LCAxODUsIDIxMCwgMTY3LCAyNDIsIDQxLCAKKyAgICAzLCA0OSwgMjM1LCA0NCwgMjQyLCA0MSwgMywgNTEsIDIzNSwgNDQsIDIwNCwgMTg1LCAyNDIsIDQwLCAyMDUsIDE1OCwgCisgICAgMTY3LCAyMTEsIDE5MywgNTQsIDIwNCwgMTQyLCAyNDEsIDI0NCwgMjA2LCA0NCwgMjQxLCAyNDQsIDIwOCwgOTEsIDIzNiwgCisgICAgMTgzLCAyMDgsIDc2LCA4MywgMjA5LCAxMDYsIDI0MCwgMTgwLCAyMDEsIDIyLCA4MywgMjI0LCAxNzYsIDI0NywgMTQyLCAKKyAgICA1MywgMjMzLCAzMywgMjEzLCAxMDUsIDI0NiwgNzAsIDUzLCAyMjQsIDU1LCAyMTQsIDYzLCA4MSwgMjQxLCAyNDUsIDMsIAorICAgIDQ5LCAyMDMsIDIxOSwgNTMsIDIwNywgMTk2LCA4MSwgMTIsIDQyLCAyMTMsIDEzMiwgMTIsIDQyLCAyNDYsIDEyMCwgMTIsIAorICAgIDQyLCAyMTEsIDE5NiwgMTAyLCAxMiwgNDIsIDIxMSwgMTk2LCAxMDUsIDEyLCA0MiwgMjExLCAxOTYsIDE0NywgMTIsIDQyLCAKKyAgICAyMTYsIDEwLCAxMiwgNDIsIDI0OCwgNzgsIDEyLCA0MiwgMjA3LCAyMiwgMTIsIDQyLCAyMjYsIDk2LCAxMDIsIDEyLCA0MiwgCisgICAgMjI2LCA5NiwgMTA1LCAxMiwgNDIsIDI0MCwgMjM2LCAxMiwgNDIsIDIxMSwgMjAwLCAxMiwgNDIsIDQsIDEwMiwgMTIsIDQyLCAKKyAgICA0LCAxMDUsIDEyLCA0MiwgMjI1LCA4NiwgMTAyLCAxMiwgNDIsIDIyNSwgODYsIDEwNSwgMTIsIDQyLCAyMjUsIDg2LCAxNDcsIAorICAgIDEyLCA0MiwgMjI1LCA4NiwgMTQ5LCAxMiwgNDIsIDIwOSwgNDEsIDEyLCA0MiwgMjA2LCA0NywgMTIsIDQyLCAyMDksIDM4LCAKKyAgICAxMDIsIDEyLCA0MiwgMjA5LCAzOCwgMTA1LCAxMiwgNDIsIDIzNCwgMTI4LCAxMDIsIDEyLCA0MiwgMjM0LCAxMjgsIDEwNSwgCisgICAgMTIsIDQyLCAyMzQsIDE5OSwgMTIsIDQyLCAyMTMsIDIxMCwgMTIsIDQyLCAyNDYsIDIwNiwgMTIsIDQyLCAyMDcsIDIyOCwgCisgICAgMTIsIDQyLCAyMjEsIDgxLCAxMiwgNDIsIDI0MSwgMTczLCAxMiwgNDIsIDIyMSwgNzEsIDEyLCA0MiwgMjQ2LCAxMzgsIDEyLCAKKyAgICA0MiwgMjAxLCA4MywgMTAyLCAxMiwgNDIsIDIwMSwgODMsIDEwNSwgMTIsIDQyLCAyMzcsIDc3LCAxMiwgNDIsIDIxNiwgODUsIAorICAgIDEwMiwgMTIsIDQyLCAyMTYsIDg1LCAxMDUsIDEyLCA0MiwgMjA5LCAxNDYsIDE2NywgMjA1LCAxMDksIDIwNSwgMzcsIDEyLCAKKyAgICA0MiwgMjQyLCAyNTUsIDEyLCA0MiwgMjQwLCAyMDAsIDEyLCA0MiwgMjI3LCAyNDMsIDEyLCA0MiwgMjQ4LCAxMTYsIDc2LCAKKyAgICAyNDYsIDEwNCwgMTIsIDQyLCAyMzgsIDIyLCAxMiwgNDIsIDIwOCwgMjE1LCAxMDIsIDEyLCA0MiwgMjA4LCAyMTUsIDEwNSwgCisgICAgMTIsIDQyLCAyNDksIDkwLCAxMiwgNDIsIDIwOSwgMTUzLCAxMiwgNDIsIDI0NywgMjIwLCAyMDksIDE1MywgMTIsIDQyLCAKKyAgICAyMjAsIDE0LCAxMDIsIDEyLCA0MiwgMjIwLCAxNCwgMTA1LCAxMiwgNDIsIDIyMCwgMTQsIDE0NywgMTIsIDQyLCAyMjAsIAorICAgIDE0LCAxNDksIDEyLCA0MiwgMjIyLCAyNywgMTIsIDQyLCAyMTAsIDU5LCAxMiwgNDIsIDIxMywgMjE2LCAxMiwgNDIsIDIzOCwgCisgICAgNTAsIDEyLCA0MiwgMjE3LCA5MiwgMTIsIDQyLCAyNDgsIDQ0LCAxMDIsIDEyLCA0MiwgMjQ4LCA0NCwgMTA1LCAxMiwgNDIsIAorICAgIDIyMiwgNzEsIDEyLCA0MiwgMjIxLCA3NiwgMTIsIDQyLCAyMzUsIDc3LCAxMDIsIDEyLCA0MiwgMjM1LCA3NywgMTA1LCAxMiwgCisgICAgNDIsIDIzNSwgNzcsIDE0NywgMTIsIDQyLCAyMDYsIDIsIDEyLCA0MiwgMjQ2LCAxMDMsIDEyLCA0MiwgMjAxLCA0OCwgMTAyLCAKKyAgICAxMiwgNDIsIDIwMSwgNDgsIDEwNSwgMTIsIDQyLCAyNDcsIDIyMCwgMjExLCAxOTAsIDEyLCA0MiwgMjA5LCAxNDYsIDIzMywgCisgICAgMTI0LCAxMiwgNDIsIDIzMywgMTI0LCAxMiwgNDIsIDI0NywgMjIwLCAyMDgsIDIyNywgMTIsIDQyLCAyNDcsIDIyMCwgMjEwLCAKKyAgICA1NCwgMTIsIDQyLCAyMzYsIDI1NSwgMTIsIDQyLCAyNDcsIDIyMCwgMjQ3LCAxMTgsIDEyLCA0MiwgMjA5LCAxNDYsIDIwMSwgCisgICAgMTA0LCAxMiwgNDIsIDIwMSwgMTA1LCAxMDIsIDEyLCA0MiwgMjAxLCAxMDUsIDEwNSwgMTIsIDQyLCAyNDYsIDE0MSwgMTIsIAorICAgIDQyLCAyNDcsIDIyMCwgMjM1LCAxMDgsIDEyLCA0MiwgMTY4LCAxMDIsIDEyLCA0MiwgMTY4LCAxMDUsIDEyLCA0MiwgMjQ3LCAKKyAgICAyMjAsIDIyNCwgODksIDEyLCA0MiwgMjQ3LCAyMjAsIDIzNiwgNDEsIDEyLCA0MiwgMjIxLCA2NywgMTAyLCAxMiwgNDIsIAorICAgIDIyMSwgNjcsIDEwNSwgMTIsIDQyLCAyMTMsIDIyMiwgMTIsIDQyLCAyNDgsIDEyNiwgMTIsIDQyLCAyNDcsIDIyMCwgMjA2LCAKKyAgICAyMzgsIDIyNSwgMzQsIDEyLCA0MiwgMjQ3LCAyMjAsIDIyNSwgMzUsIDEyLCA0MiwgMjQ3LCAyMjAsIDIwMSwgMTYsIDEyLCAKKyAgICA0MiwgMjQ3LCAyMjAsIDIzNywgMTcsIDEyLCA0MiwgMjM5LCAxMSwgMTAyLCAxMiwgNDIsIDIzOSwgMTEsIDEwNSwgMTIsIAorICAgIDQyLCAyMzksIDExLCAxNDcsIDEyLCA0MiwgMjQ3LCAyMjAsIDIzOSwgMTAsIDEyLCA0MiwgMjM0LCAxMzYsIDEyLCA0MiwgCisgICAgMjQ3LCAyMjAsIDIzMywgMTIwLCAxMiwgNDIsIDI0OCwgMTEyLCAxMiwgNDIsIDIzNSwgMTY5LCAxMiwgNDIsIDI0NywgMjIwLCAKKyAgICAyMzcsIDcxLCAxMiwgNDIsIDI0NywgMjIwLCAyNDgsIDE2MiwgMTIsIDQyLCAyNDcsIDIyMCwgMjEyLCAyNywgMTIsIDQyLCAKKyAgICAyMDksIDE0NiwgMjAxLCAzOSwgMTIsIDQyLCAyMDksIDE0NiwgMjAwLCA0MywgMTIsIDQyLCAyNDcsIDIyMCwgMjM2LCAyMDIsIAorICAgIDEyLCA0MiwgMjI3LCAyNTAsIDIzOCwgNTUsIDEyLCA0MiwgMjQ3LCAyMjAsIDIzOCwgNTUsIDEyLCA0MiwgMjI3LCAyNTAsIAorICAgIDIwNSwgMTU5LCAxMiwgNDIsIDI0NywgMjIwLCAyMDUsIDE1OSwgMTIsIDQyLCAyMjcsIDI1MCwgMjM5LCAxNTgsIDEyLCA0MiwgCisgICAgMjQ3LCAyMjAsIDIzOSwgMTU4LCAxMiwgNDIsIDIwNCwgMTgyLCAxMiwgNDIsIDIyNywgMjUwLCAyMDQsIDE4MiwgMTIsIDQyLCAKKyAgICAyNDcsIDIyMCwgMjA0LCAxODIsIDc1LCA0MiwgMTAyLCA3NSwgNDIsIDIyNCwgMTc2LCA3NSwgNDIsIDI0MCwgMTgyLCA3NSwgCisgICAgNDIsIDIwOSwgNzUsIDc1LCA0MiwgMjExLCAxOTUsIDc1LCA0MiwgMTE3LCA3NSwgNDIsIDEwNSwgNzUsIDQyLCAyMjQsIAorICAgIDIwNSwgNzUsIDQyLCAyMjIsIDE4MCwgNzUsIDQyLCAyMjUsIDEzLCA3NSwgNDIsIDIzOCwgMTU0LCA3NSwgNDIsIDE5MiwgCisgICAgNzUsIDQyLCAxMjcsIDI0OCwgNzgsIDc1LCA0MiwgMjQzLCAxLCA3NSwgNDIsIDIzMiwgMjMxLCA3NSwgNDIsIDIwNywgMjIsIAorICAgIDc1LCA0MiwgMTc2LCAyNDgsIDc4LCA3NSwgNDIsIDIyNiwgOTUsIDc1LCA0MiwgMjE1LCA1MSwgNzUsIDQyLCAyMDAsIDIyOCwgCisgICAgNzUsIDQyLCAyMDgsIDIwNiwgNzUsIDQyLCA1MSwgMTc2LCAyNDgsIDc4LCA3NSwgNDIsIDIzNCwgNzAsIDIzOCwgMTc0LCAKKyAgICA3NSwgNDIsIDIwNiwgMTY2LCA3NSwgNDIsIDI0MCwgMjM2LCA3NSwgNDIsIDIxMSwgMjAwLCA3NSwgNDIsIDI0NiwgMTIwLCAKKyAgICA3NSwgNDIsIDIxNSwgMywgNzUsIDQyLCAyNTEsIDE5MiwgNzUsIDQyLCAyMjEsIDU4LCA3NSwgNDIsIDIzOCwgMTc0LCA3NSwgCisgICAgNDIsIDIzOSwgMTcsIDc1LCA0MiwgMjExLCAyMjMsIDc1LCA0MiwgMjM1LCAxMTYsIDc1LCA0MiwgMjM1LCAxMTcsIDIwOSwgCisgICAgNTUsIDc1LCA0MiwgMjM4LCA1NCwgNzUsIDQyLCAyNDgsIDE3NCwgNzUsIDQyLCAyMDAsIDI1MCwgNzUsIDQyLCAyNDYsIAorICAgIDIyNywgNzUsIDQyLCAyMTIsIDIzNywgNzUsIDQyLCAyMjgsIDExMywgNzUsIDQyLCAyMDksIDUzLCA3NSwgNDIsIDIyNSwgCisgICAgODUsIDc1LCA0MiwgMjQzLCAxMSwgNzUsIDQyLCAyMDgsIDE5NywgNzUsIDQyLCAyMjEsIDYzLCA3NSwgNDIsIDIxMywgMTUsIAorICAgIDc1LCA0MiwgMjAwLCAyMzUsIDc1LCA0MiwgMjE3LCA3MCwgNzUsIDQyLCAyMDQsIDE5MSwgNzUsIDQyLCAyMzksIDEzOSwgCisgICAgNzUsIDQyLCAyMDksIDI1MCwgMjA2LCA0NywgNzUsIDQyLCAyMzksIDE4MCwgMjQ2LCAxMjAsIDc1LCA0MiwgMTY4LCAyMDgsIAorICAgIDUzLCA3NSwgNDIsIDEyMCwgMjM0LCAxNzQsIDc1LCA0MiwgMjEwLCAwLCA3NSwgNDIsIDI0OCwgODUsIDc1LCA0MiwgMjA5LCAKKyAgICAzNywgNzUsIDQyLCAyNDgsIDQ4LCA3NSwgNDIsIDIwOCwgOTAsIDc1LCA0MiwgMjM0LCAxMjcsIDc1LCA0MiwgMjM0LCAyMTQsIAorICAgIDc1LCA0MiwgMjQwLCAxODUsIDc1LCA0MiwgMjM0LCAxOTksIDc1LCA0MiwgMjQ4LCA2NiwgNzUsIDQyLCAyMTMsIDIxMCwgCisgICAgNzUsIDQyLCAyMTEsIDIwOCwgNzUsIDQyLCAyNDEsIDEyLCA3NSwgNDIsIDI1MCwgMTEzLCA3NSwgNDIsIDIwOCwgMTkzLCAKKyAgICA3NSwgNDIsIDIxOCwgMjE0LCA3NSwgNDIsIDIwNywgMjI4LCA3NSwgNDIsIDIxMSwgMjM0LCA3NSwgNDIsIDIyMSwgODEsIAorICAgIDc1LCA0MiwgMjA1LCAxMDgsIDc1LCA0MiwgMjI1LCAxNjIsIDc1LCA0MiwgMjA4LCA3NiwgNzUsIDQyLCAyNDEsIDE3MywgCisgICAgNzUsIDQyLCAyMDEsIDYzLCA3NSwgNDIsIDI0MCwgMjEyLCAyMTgsIDIxNCwgNzUsIDQyLCAyNDYsIDY2LCA3NSwgNDIsIAorICAgIDIzNiwgMTc2LCA3NSwgNDIsIDI0NiwgMTMyLCA3NSwgNDIsIDIwOCwgOTUsIDc1LCA0MiwgMjAxLCA4MiwgNzUsIDQyLCAKKyAgICAyMzcsIDc3LCA3NSwgNDIsIDI0NiwgMTI4LCA3NSwgNDIsIDIzNywgMTU0LCA3NSwgNDIsIDUzLCAyMDAsIDE5NSwgNzUsIAorICAgIDQyLCAxNjcsIDIwNSwgMTA5LCAyMDUsIDM3LCA3NSwgNDIsIDIwOSwgNjcsIDc1LCA0MiwgMjM3LCAxNjYsIDc1LCA0MiwgCisgICAgMjQyLCAyNTUsIDc1LCA0MiwgMjQwLCAyMDAsIDc1LCA0MiwgMjE1LCAwLCA3NSwgNDIsIDIyNywgMjQzLCA3NSwgNDIsIAorICAgIDIyMiwgNDksIDc1LCA0MiwgMjA1LCAyMzksIDc1LCA0MiwgMjA3LCAxNzgsIDc1LCA0MiwgMjI0LCAxOTksIDc1LCA0MiwgCisgICAgMjAzLCAxOTUsIDc1LCA0MiwgMjM3LCAxMTAsIDc1LCA0MiwgMjQ4LCAxMTYsIDc2LCAyNDYsIDEwNCwgNzUsIDQyLCAyMDksIAorICAgIDE3OCwgNzUsIDQyLCAyMzksIDE4MCwgMjA2LCAxNTgsIDc1LCA0MiwgMjAxLCAzNCwgNzUsIDQyLCAyMDksIDgzLCA3NSwgCisgICAgNDIsIDI0MCwgMjU1LCA3NSwgNDIsIDIzOCwgMjIsIDc1LCA0MiwgMjA4LCAyMzAsIDc1LCA0MiwgNDgsIDc1LCA0MiwgMjA4LCAKKyAgICA3OCwgNzUsIDQyLCAyMDgsIDIxNCwgNzUsIDQyLCAyMDUsIDEzMSwgNzUsIDQyLCAyMzUsIDg2LCA3NSwgNDIsIDI0NywgCisgICAgMTA0LCA3NSwgNDIsIDIwOCwgMTEzLCA3NSwgNDIsIDI0OSwgOTAsIDc1LCA0MiwgMjEzLCA4MywgNzUsIDQyLCAyMDksIAorICAgIDE1MywgNzUsIDQyLCAyMjcsIDIzNSwgNzUsIDQyLCAyMjAsIDEzLCA3NSwgNDIsIDIxMCwgNTksIDc1LCA0MiwgMjM3LCAKKyAgICAxNDIsIDc1LCA0MiwgMjE3LCA5MiwgNzUsIDQyLCAyNTEsIDc5LCA3NSwgNDIsIDIxNSwgMTIwLCA3NSwgNDIsIDIzOSwgMjEsIAorICAgIDc1LCA0MiwgMjQ4LCA0MywgNzUsIDQyLCAyMjIsIDcxLCA3NSwgNDIsIDIyMSwgMTU4LCA3NSwgNDIsIDIxMCwgMTc0LCA3NSwgCisgICAgNDIsIDI1MCwgMjA2LCA3NSwgNDIsIDIyMSwgNzYsIDc1LCA0MiwgMjA1LCAxNjMsIDc1LCA0MiwgMjE3LCA0MSwgNzUsIDQyLCAKKyAgICAyNDgsIDEyMCwgNzUsIDQyLCAyMDgsIDc0LCA3NSwgNDIsIDI0NiwgNzgsIDc1LCA0MiwgMjM1LCA3NiwgNzUsIDQyLCAyMDYsIAorICAgIDIsIDc1LCA0MiwgMjI4LCA3NiwgNzUsIDQyLCAyNDgsIDEzMiwgNzUsIDQyLCAyMDEsIDEwNSwgMjM4LCAxNzQsIDc1LCA0MiwgCisgICAgMjQ2LCAxMDMsIDc1LCA0MiwgMjAxLCA0NywgNzUsIDQyLCAyMTEsIDE5MCwgNzUsIDQyLCAyMzMsIDEyNCwgNzUsIDQyLCAKKyAgICAyMDgsIDIyNywgNzUsIDQyLCAyMDMsIDgzLCA3NSwgNDIsIDI0OSwgMywgNzUsIDQyLCAyMTUsIDE2OCwgNzUsIDQyLCAyNDksIAorICAgIDExNiwgNzUsIDQyLCAyMTAsIDU0LCA3NSwgNDIsIDIxMywgMTY5LCA3NSwgNDIsIDIxMiwgMTU4LCA3NSwgNDIsIDIzNiwgCisgICAgMjU1LCA3NSwgNDIsIDI0OCwgMTE4LCA3NSwgNDIsIDI0NywgMTE4LCA3NSwgNDIsIDI0OCwgMTQ5LCA3NSwgNDIsIDIyMSwgCisgICAgNzgsIDc1LCA0MiwgMjAxLCAxMDQsIDc1LCA0MiwgMjQ2LCAxNDEsIDc1LCA0MiwgMjAxLCAxMiwgNzUsIDQyLCAyNDAsIAorICAgIDI0NywgNzUsIDQyLCAyMDIsIDIxOCwgNzUsIDQyLCAyMzUsIDEwOCwgNzUsIDQyLCAyMjQsIDg5LCA3NSwgNDIsIDIzNiwgCisgICAgNDEsIDc1LCA0MiwgMjIxLCA2NiwgNzUsIDQyLCAyMDksIDc0LCA3NSwgNDIsIDIwOSwgMjUwLCAyMDcsIDUsIDI0OCwgMTYyLCAKKyAgICA3NSwgNDIsIDIxMywgMjIyLCA3NSwgNDIsIDI0OCwgMTI2LCA3NSwgNDIsIDIwMCwgMjE4LCA3NSwgNDIsIDIzNywgMTg5LCAKKyAgICA3NSwgNDIsIDIyNSwgMzQsIDc1LCA0MiwgMjA2LCAyMzgsIDIyNSwgMzQsIDc1LCA0MiwgMjI1LCAzMCwgNzUsIDQyLCAyMDksIAorICAgIDAsIDc1LCA0MiwgMjI1LCAzNSwgNzUsIDQyLCAyMDEsIDE2LCA3NSwgNDIsIDIzNywgMTcsIDc1LCA0MiwgMjM5LCAxMCwgCisgICAgNzUsIDQyLCAyMzQsIDEzNiwgNzUsIDQyLCAyMzYsIDIxNywgNzUsIDQyLCAyMzMsIDEyMCwgNzUsIDQyLCAyNDgsIDExMiwgCisgICAgNzUsIDQyLCAyMDYsIDI0NywgNzUsIDQyLCAyMzQsIDIyMSwgNzUsIDQyLCAyMzcsIDEwMywgNzUsIDQyLCAyMTIsIDU4LCAKKyAgICAyMDEsIDEyLCA3NSwgNDIsIDI0NywgMTA2LCA3NSwgNDIsIDIzNSwgMTY5LCA3NSwgNDIsIDIzNywgNzEsIDc1LCA0MiwgCisgICAgMjQ4LCAxNjIsIDc1LCA0MiwgMjEyLCAyNywgNzUsIDQyLCAyNDEsIDE1OCwgNzUsIDQyLCAyMDEsIDM5LCA3NSwgNDIsIAorICAgIDIzNCwgMTA2LCA3NSwgNDIsIDIwMCwgNDMsIDc1LCA0MiwgMjIxLCAxNjksIDc1LCA0MiwgMjQ4LCAxNDQsIDc1LCA0MiwgCisgICAgMjM4LCAxODYsIDc1LCA0MiwgMjM2LCAyMDIsIDc1LCA0MiwgMjA1LCA4MCwgNzUsIDQyLCAyMzksIDE0MiwgNzUsIDQyLCAKKyAgICAyMTMsIDIwNCwgNzUsIDQyLCAyMTgsIDIxNiwgNzUsIDQyLCAyMzgsIDU1LCA3NSwgNDIsIDIwNSwgMTU5LCA3NSwgNDIsIAorICAgIDIzOSwgMTU4LCA3NSwgNDIsIDIwNCwgMTgyLCA3NSwgNDIsIDIzNywgMjAsIDE0MSwgMjQxLCAxMTcsIDE3MSwgNDksIDIwNSwgCisgICAgMTg2LCAyMTMsIDQ2LCAxNDEsIDI0MSwgMTE3LCAxNzEsIDg4LCAyMDUsIDE4NiwgNTcsIDE0MSwgMjQxLCAxMTcsIDE3MSwgCisgICAgNDksIDIwNSwgMTg2LCAxMDEsIDI2LCAyMTMsIDQ2LCAxNDEsIDI0MSwgMTE3LCAxNzEsIDg4LCAyMDUsIDE4NiwgMTAxLCAKKyAgICAyNiwgNTcsIDE0MSwgMjQxLCAxMTcsIDE3MSwgMjM2LCAxODMsIDIwNywgMjAwLCAxNDEsIDI0MSwgMTE3LCAxNzEsIDIwNywgCisgICAgMjAxLCAyMzYsIDIwMSwgNTYsIDE0MSwgMjQxLCAxMTcsIDE3MSwgMjA3LCAyMDEsIDIzNiwgMjAxLCA1NywgMTQxLCAyNDEsIAorICAgIDExNywgMTcxLCAyMDcsIDIwMSwgMjM2LCAyMDEsIDIyNSwgMjgsIDE0MSwgMjQxLCAxMTcsIDE3MSwgMjA3LCAyMDEsIDIzNiwgCisgICAgMjAxLCAyMDMsIDIyNSwgMjI1LCAyOCwgMTQxLCAyNDEsIDExNywgMTcxLCAyMDcsIDIwMSwgMjM2LCAyMDEsIDIwMywgMjI1LCAKKyAgICAyMTMsIDQ2LCAxNDEsIDI0MSwgMTE3LCAxNzEsIDIwNywgMjAxLCAyMzYsIDIwMSwgMjI0LCA1NCwgMjI1LCAyOCwgMTQxLCAKKyAgICAyNDEsIDExNywgMTcxLCAyMTYsIDI0NSwgMTQxLCAyMDgsIDI0NCwgMTQxLCAyNDYsIDcwLCAxNDEsIDIzNiwgMTgzLCAyMDgsIAorICAgIDc2LCAyNDAsIDI0NCwgODEsIDIyNywgMjM2LCAyMjgsIDk2LCAyMDgsIDExMiwgOTksIDE0MSwgMjI4LCAxMCwgODEsIDE0MSwgCisgICAgMjQ2LCAxMDYsIDgxLCAxNDEsIDQxLCAxOTksIDgxLCA0OSwgMjUxLCA3MSwgMTU5LCA1MSwgMjUxLCA3MSwgMTU5LCA0OSwgCisgICAgNTMsIDI1MSwgNzEsIDE1OSwgNTEsIDUzLCAyNTEsIDcxLCAxNTksIDQ5LCAyNDMsIDE2LCAxNTksIDUxLCAyNDMsIDE2LCAKKyAgICAxNTksIDQ5LCA2NCwgMjQzLCAxNiwgMTU5LCA1MSwgNjQsIDI0MywgMTYsIDE1OSwgNDksIDYzLCAyMjQsIDI0NywgMTU5LCAKKyAgICA1MSwgNjMsIDIyNCwgMjQ3LCAxNTksIDIxNSwgNjUsIDgxLCAyMzUsIDIzOCwgODEsIDQ5LCAyMDUsIDE0NiwgMjEwLCA1NSwgCisgICAgMTU5LCA1MSwgMjA1LCAxNDYsIDIxMCwgNTUsIDE1OSwgNDksIDY0LCAyMjQsIDI0NywgMTU5LCA1MSwgNjQsIDIyNCwgMjQ3LCAKKyAgICAxNTksIDQ5LCA2NCwgMjA1LCAxNDYsIDIxMCwgNTUsIDE1OSwgNTEsIDY0LCAyMDUsIDE0NiwgMjEwLCA1NSwgMTU5LCA0OSwgCisgICAgNjQsIDUyLCAxNTksIDUxLCA2NCwgNTIsIDE1OSwgMjAxLCA3OCwgMjQxLCAyNDQsIDIxMywgMTA1LCA1MywgMjE1LCAxNSwgCisgICAgMjE0LCA2MywgODEsIDUzLCAyMTUsIDE1LCAyMTQsIDYzLCA4MSwgMTI4LCA1MywgMjE1LCAxNSwgMjE0LCA2MywgODEsIAorICAgIDIxNSwgNjUsIDEzNCwgMjM3LCAxODksIDIzNCwgMTcxLCAyMTgsIDkzLCAxMDIsIDIzNCwgMTcxLCAyMTgsIDkzLCAxMDUsIAorICAgIDIzNCwgMTcxLCAyMTgsIDkzLCAxNDcsIDIzNCwgMTcxLCAyMTgsIDkzLCAxNDksIDIzNCwgMTcxLCAyMTgsIDkzLCAxNjQsIAorICAgIDIzNCwgMTcxLCAyMTgsIDkzLCAxODcsIDIzNCwgMTcxLCAyMTgsIDkzLCAyMTAsIDEzNSwgMjM0LCAxNzEsIDIxOCwgOTMsIAorICAgIDE5MiwgMjM0LCAxNzEsIDIxOCwgOTMsIDIxOSwgMTEzLCAxNDEsIDIyNCwgMjI5LCAxNTAsIDgxLCAxNDEsIDIxMywgMTksIAorICAgIDE1MCwgODEsIDE0MSwgMjQxLCAxMjYsIDE1MCwgODEsIDE0MSwgMjM4LCAxNTMsIDE1MCwgODEsIDI5LCAyMDksIDEzOSwgCisgICAgNzMsIDE1MCwgODEsIDI5LCA1MywgNzMsIDE1MCwgODEsIDIwMSwgNzQsIDI0MSwgMjQ0LCA4MywgMjI3LCA2NywgMjEzLCAKKyAgICAxMzMsIDgxLCA4MywgMjI3LCA2NywgMjEzLCAxMzMsIDMsIDIwMiwgMTg5LCAyMDksIDEsIDgxLCA4MywgMjI3LCA2NywgCisgICAgMjEzLCAxMzMsIDEzNCwgMjAzLCAyMjUsIDIzNCwgMjEzLCA4MywgMjI3LCA2NywgMjEzLCAxMzMsIDMsIDIwMiwgMTg5LCAKKyAgICAyMDksIDEsIDEzNCwgMjAzLCAyMjUsIDIzNCwgMjEzLCA4MywgMjI3LCA2NywgMjEzLCAxMzMsIDEzNCwgMjI0LCA1NCwgCisgICAgMjM0LCAyMTMsIDQ0LCAyMTUsIDY1LCA4MSwgMTQxLCAyMDYsIDE3OCwgMjI0LCAxNzcsIDIzNywgMTM5LCAyMTAsIDE1NSwgCisgICAgOTksIDIzNCwgMTcxLCAyMTgsIDkzLCAyMDYsIDE2NiwgMjM0LCAxNzEsIDIxOCwgOTMsIDIwNCwgMTU5LCAyMzQsIDE3MSwgCisgICAgMjE4LCA5MywgMjA2LCA2NywgODMsIDE0MSwgMjI4LCAxMCwgODEsIDIyMiwgMTI4LCA4MSwgMjE2LCAxMTAsIDI1MSwgMTA1LCAKKyAgICA4MSwgMTQxLCA1OCwgMjI4LCA5OSwgMTQxLCAxNjcsIDIzNywgOTYsIDIwOCwgMjQ0LCAxNzcsIDEsIDQsIDYyLCAxNzcsIDEsIAorICAgIDYyLCAxNzcsIDEsIDQsIDcwLCAxNzcsIDEsIDcwLCAxNzcsIDEsIDQsIDY2LCAxNzcsIDEsIDY2LCAxNzcsIDEsIDQsIDcyLCAKKyAgICAxNzcsIDEsIDcyLCAxNzcsIDEsIDQsIDc0LCAxNzcsIDEsIDc0LCAxNzcsIDEsIDE2MSwgMTc3LCAxLCAyMzYsIDg5LCAxNzcsIAorICAgIDEsIDIyNiwgMTYzLCAxNzcsIDEsIDIzNSwgMTYxLCAxNzcsIDEsIDIyNiwgMTUsIDE3NywgMSwgMjM1LCA1MCwgMTc3LCAxLCAKKyAgICAyMjcsIDgsIDE3NywgMSwgMjM2LCAxNSwgMTc3LCAxLCAyMjYsIDg4LCAxNzcsIDEsIDIzNSwgMTE2LCAxNzcsIDEsIDIxMiwgCisgICAgNjQsIDE3NywgMSwgMTk5LCAxMTQsIDE3NywgMSwgMjA5LCAxODIsIDE3NywgMSwgMTk5LCAzNiwgMTc3LCAxLCAyMDgsIDI0LCAKKyAgICAxNzcsIDEsIDE5OSwgMywgMTc3LCAxLCAyMTEsIDIwMiwgMTc3LCAxLCAxOTksIDg5LCAxNzcsIDEsIDIwOSwgMjksIDE3NywgCisgICAgMSwgMTk5LCAxNCwgMTc3LCAxLCAyMDcsIDM2LCAxNzcsIDEsIDI0MiwgNTgsIDE3NywgMSwgMjA2LCAxNSwgMTc3LCAxLCAKKyAgICAyNDEsIDc2LCAxNzcsIDEsIDQsIDIwNCwgMjE1LCAxNzcsIDEsIDIwNCwgMjE1LCAxNzcsIDEsIDIzOSwgMTM3LCAxNzcsIDEsIAorICAgIDIwNiwgMjAxLCAxNzcsIDEsIDI0MSwgMTc1LCAxNzcsIDEsIDEzOCwgMTc3LCAxLCAyNDAsIDIxMSwgMTc3LCAxLCAxODgsIAorICAgIDE3NywgMSwgMjE5LCAxNTAsIDE3NywgMSwgMjE4LCAxMzMsIDE3NywgMSwgMjIwLCAzNCwgMTc3LCAxLCAyMTgsIDI0MSwgCisgICAgMTc3LCAxLCAxNDQsIDE3NywgMSwgMjQ5LCAxMzYsIDE3NywgMSwgMTcyLCAxNzcsIDEsIDIzNCwgNzUsIDE3NywgMSwgMjQ4LCAKKyAgICAxODgsIDE3NywgMSwgMjE1LCAyMDQsIDE3NywgMSwgMjMzLCA5NywgMTc3LCAxLCAyNDgsIDM2LCAxNzcsIDEsIDIxNCwgCisgICAgMjI0LCAxNzcsIDEsIDIzNCwgMTM5LCAxNzcsIDEsIDI0OSwgOCwgMTc3LCAxLCAyMTYsIDczLCAxNzcsIDEsIDIzMywgMjA3LCAKKyAgICAxNzcsIDEsIDI0OCwgMTI0LCAxNzcsIDEsIDIxNSwgMTA2LCAxNzcsIDEsIDE3OCwgMTc3LCAxLCAyMjEsIDIxMSwgMTc3LCAKKyAgICAxLCAyMjEsIDQxLCAxNzcsIDEsIDIyMiwgNzYsIDE3NywgMSwgMjIxLCAxMzYsIDE3NywgMSwgNCwgMTgzLCAxNzcsIDEsIAorICAgIDE4MywgMTc3LCAxLCA0LCAxOTksIDIxMSwgMTc3LCAxLCAxOTksIDIxMSwgMTc3LCAxLCA0LCAxOTksIDI0NSwgMTc3LCAxLCAKKyAgICAxOTksIDI0NSwgMTc3LCAxLCAyMTMsIDI1MiwgMTc3LCAxLCAyMTMsIDg4LCAxNzcsIDEsIDIxMiwgMTc1LCAxNzcsIDEsIAorICAgIDIxMywgMTkwLCAxNzcsIDEsIDIxMywgMSwgMTc3LCAxLCA0LCAyMDEsIDExNCwgMTc3LCAxLCAyMDEsIDExNCwgMTc3LCAxLCAKKyAgICAyMDEsIDMxLCAxNzcsIDEsIDIwMSwgNjQsIDE3NywgMSwgMjAxLCAwLCAxNzcsIDEsIDIyMCwgMjE0LCAxNzcsIDEsIDIwMSwgCisgICAgMTY2LCAxNzcsIDEsIDQsIDE2MSwgMTc3LCAxLCA0LCAyMjcsIDgsIDM4LCAyMjcsIDMyLCAyMDIsIDE4OSwgMjA5LCAxLCAKKyAgICA4MSwgMzgsIDIyNywgMzIsIDIxMCwgMTcyLCAyMDksIDEsIDgxLCAyMjcsIDMyLCAyMDIsIDE4OSwgMjA5LCAxLCA4MSwgCisgICAgMjI3LCAzMiwgMjEwLCAxNzIsIDIwOSwgMSwgODEsIDE3NywgMjI4LCAxMCwgODEsIDE3NywgMjAyLCAxODksIDIyOCwgMTAsIAorICAgIDgxLCAxNzcsIDI0MSwgMzUsIDE5OSwgMjI2LCAyMjcsIDMyLCA1MywgMjMzLCAzMywgNjksIDEsIDQsIDYyLCA2OSwgMSwgCisgICAgNjIsIDY5LCAxLCA0LCA3MCwgNjksIDEsIDcwLCA2OSwgMSwgNCwgNjYsIDY5LCAxLCA2NiwgNjksIDEsIDQsIDcyLCA2OSwgCisgICAgMSwgNzIsIDY5LCAxLCA0LCA3NCwgNjksIDEsIDc0LCA2OSwgMSwgMTYxLCA2OSwgMSwgMjM2LCA4OSwgNjksIDEsIDIyNiwgCisgICAgMTYzLCA2OSwgMSwgMjM1LCAxNjEsIDY5LCAxLCAyMjYsIDE1LCA2OSwgMSwgMjM1LCA1MCwgNjksIDEsIDIyNywgOCwgNjksIAorICAgIDEsIDIzNiwgMTUsIDY5LCAxLCAyMjYsIDg4LCA2OSwgMSwgMjM1LCAxMTYsIDY5LCAxLCAyMTIsIDY0LCA2OSwgMSwgMTk5LCAKKyAgICAxMTQsIDY5LCAxLCAyMDksIDE4MiwgNjksIDEsIDE5OSwgMzYsIDY5LCAxLCAyMDgsIDI0LCA2OSwgMSwgMTk5LCAzLCA2OSwgCisgICAgMSwgMjExLCAyMDIsIDY5LCAxLCAxOTksIDg5LCA2OSwgMSwgMjA5LCAyOSwgNjksIDEsIDE5OSwgMTQsIDY5LCAxLCAyMDcsIAorICAgIDM2LCA2OSwgMSwgMjQyLCA1OCwgNjksIDEsIDIwNiwgMTUsIDY5LCAxLCAyNDEsIDc2LCA2OSwgMSwgNCwgMjA0LCAyMTUsIAorICAgIDY5LCAxLCAyMDQsIDIxNSwgNjksIDEsIDIzOSwgMTM3LCA2OSwgMSwgMjA2LCAyMDEsIDY5LCAxLCAyNDEsIDE3NSwgNjksIAorICAgIDEsIDEzOCwgNjksIDEsIDI0MCwgMjExLCA2OSwgMSwgMTg4LCA2OSwgMSwgMjE5LCAxNTAsIDY5LCAxLCAyMTgsIDEzMywgCisgICAgNjksIDEsIDIyMCwgMzQsIDY5LCAxLCAyMTgsIDI0MSwgNjksIDEsIDE0NCwgNjksIDEsIDI0OSwgMTM2LCA2OSwgMSwgMTcyLCAKKyAgICA2OSwgMSwgMjM0LCA3NSwgNjksIDEsIDI0OCwgMTg4LCA2OSwgMSwgMjE1LCAyMDQsIDY5LCAxLCAyMzMsIDk3LCA2OSwgMSwgCisgICAgMjQ4LCAzNiwgNjksIDEsIDIxNCwgMjI0LCA2OSwgMSwgMjM0LCAxMzksIDY5LCAxLCAyNDksIDgsIDY5LCAxLCAyMTYsIDczLCAKKyAgICA2OSwgMSwgMjMzLCAyMDcsIDY5LCAxLCAyNDgsIDEyNCwgNjksIDEsIDIxNSwgMTA2LCA2OSwgMSwgMTc4LCA2OSwgMSwgCisgICAgMjIxLCAyMTEsIDY5LCAxLCAyMjEsIDQxLCA2OSwgMSwgMjIyLCA3NiwgNjksIDEsIDIyMSwgMTM2LCA2OSwgMSwgNCwgMTgzLCAKKyAgICA2OSwgMSwgMTgzLCA2OSwgMSwgNCwgMTk5LCAyMTEsIDY5LCAxLCAxOTksIDIxMSwgNjksIDEsIDQsIDE5OSwgMjQ1LCA2OSwgCisgICAgMSwgMTk5LCAyNDUsIDY5LCAxLCAyMTMsIDI1MiwgNjksIDEsIDIxMywgODgsIDY5LCAxLCAyMTIsIDE3NSwgNjksIDEsIAorICAgIDIxMywgMTkwLCA2OSwgMSwgMjEzLCAxLCA2OSwgMSwgNCwgMjAxLCAxMTQsIDY5LCAxLCAyMDEsIDExNCwgNjksIDEsIDIwMSwgCisgICAgMzEsIDY5LCAxLCAyMDEsIDY0LCA2OSwgMSwgMjAxLCAwLCA2OSwgMSwgMjIwLCAyMTQsIDY5LCAxLCAyMDEsIDE2NiwgNjksIAorICAgIDEsIDQsIDE2MSwgNjksIDEsIDQsIDIyNywgOCwgNjksIDEsIDIwMywgOTAsIDY5LCAxLCAyMDIsIDIzNCwgNjksIDEsIDIwMywgCisgICAgNTksIDY5LCAxLCAyMDIsIDE5MywgNjksIDEwMSwgMjQwLCAxODIsIDIyNywgMzIsIDIxNCwgMjQ4LCAyMDksIDEsIDgxLCAKKyAgICA2OSwgMjI4LCAxMCwgODEsIDY5LCAyMDIsIDE4OSwgMjI4LCAxMCwgODEsIDY5LCAyNDEsIDM1LCAyMjYsIDU1LCAyNDgsIAorICAgIDEwMiwgMSwgMjUwLCAxMDMsIDI0OCwgMTAyLCAxLCAyMTYsIDIyNiwgMjQ4LCAxMDIsIDEsIDIyMywgMjQzLCAyNDgsIDEwMiwgCisgICAgMSwgMjM4LCA1LCAyNDgsIDEwMiwgMSwgMjQyLCAxNTMsIDI0OCwgMTAyLCAxLCAyMDcsIDgzLCAyNDgsIDEwMiwgMSwgMjIwLCAKKyAgICAyMTQsIDI0OCwgMTAyLCAxLCAxNTYsIDI0OCwgMTAyLCAxLCAyMzYsIDE1NiwgMjQ4LCAxMDIsIDEsIDIyNywgMTE4LCAyNDgsIAorICAgIDEwMiwgMSwgMjM0LCAyNDcsIDI0OCwgMTAyLCAxLCAyMjcsIDI1MSwgMjQ4LCAxMDIsIDEsIDIxNCwgMTY3LCAyNDgsIDEwMiwgCisgICAgMSwgMjAwLCAxOTUsIDI0OCwgMTAyLCAxLCAxOTksIDc4LCAyNDgsIDEwMiwgMSwgMjQ3LCAzOCwgMjQ4LCAxMDIsIDEsIAorICAgIDIxMCwgMTE2LCAyNDgsIDEwMiwgMSwgMTQ2LCAyNDgsIDEwMiwgMSwgMTk5LCAxNTcsIDI0OCwgMTAyLCAxLCAyNDcsIDIyMywgCisgICAgMjQ4LCAxMDIsIDEsIDIxMiwgMTIyLCAyNDgsIDEwMiwgMSwgNjIsIDI0OCwgMTAyLCAxLCA3NCwgMjQ4LCAxMDIsIDEsIDcyLCAKKyAgICAyNDgsIDEwMiwgMSwgMjM4LCAyNDEsIDI0OCwgMTAyLCAxLCAyNTEsIDE3NiwgMjQ4LCAxMDIsIDEsIDIzOCwgMjM0LCAyNDgsIAorICAgIDEwMiwgMSwgMjUwLCAxMzksIDI0OCwgMTAyLCAxLCAyMTcsIDMsIDI0OCwgMTAyLCAxLCAyNTEsIDg1LCAyNDgsIDEwMiwgMSwgCisgICAgMjM4LCAxNzksIDI0OCwgMTAyLCAxLCAyNTEsIDc2LCAyNDgsIDEwMiwgMSwgMjM4LCAxNjUsIDI0OCwgMTAyLCAxLCAyMzgsIAorICAgIDExNSwgMjQ4LCAxMDIsIDEsIDcwLCAyNDgsIDEwMiwgMSwgNjYsIDI0OCwgMTAyLCAxLCAyMjgsIDgsIDI0OCwgMTAyLCAxLCAKKyAgICAyMDMsIDE2OCwgMjQ4LCAxMDIsIDEsIDIxOSwgMjU1LCAyNDgsIDEwMiwgMSwgMjM1LCAxMjAsIDI0OCwgMTAyLCAxLCAyMjgsIAorICAgIDE1MiwgMjksIDEsIDIyNiwgMTIxLCAyOSwgMSwgMjA4LCAxNzEsIDI5LCAxLCAyMjYsIDExNCwgMjksIDEsIDIxOSwgMTQzLCAKKyAgICAyOSwgMSwgMjE5LCAxNDEsIDI5LCAxLCAyMTksIDE0MCwgMjksIDEsIDIwNSwgMjUzLCAyOSwgMSwgMjA4LCAxNjAsIDI5LCAKKyAgICAxLCAyMTMsIDc4LCAyOSwgMSwgMjEzLCA3MywgMjksIDEsIDIxMywgNzAsIDI5LCAxLCAyMTMsIDYzLCAyOSwgMSwgMjEzLCAKKyAgICA1OCwgMjksIDEsIDIxMywgNTMsIDI5LCAxLCAyMTMsIDY0LCAyOSwgMSwgMjEzLCA3NiwgMjksIDEsIDIyMSwgMTk3LCAyOSwgCisgICAgMSwgMjE1LCAxOTAsIDI5LCAxLCAyMDgsIDE2OCwgMjksIDEsIDIxNSwgMTc5LCAyOSwgMSwgMjA5LCAxMjksIDI5LCAxLCAKKyAgICAyMDgsIDE2NSwgMjksIDEsIDIyOCwgMTc0LCAyOSwgMSwgMjQ2LCAxNjgsIDI5LCAxLCAyMDgsIDE3NSwgMjksIDEsIDI0NiwgCisgICAgMjMyLCAyOSwgMSwgMjI2LCAxODMsIDI5LCAxLCAyMDYsIDgwLCAyOSwgMSwgMjE1LCAyMjcsIDI5LCAxLCAyMzQsIDY2LCAKKyAgICAyOSwgMSwgNjIsIDI5LCAxLCAyNTEsIDIyMSwgMjksIDEsIDE4MywgMjksIDEsIDIwMCwgOTgsIDI5LCAxLCAyMzgsIDE0MiwgCisgICAgMjksIDEsIDcyLCAyOSwgMSwgMjAwLCAzOCwgMjksIDEsIDIwMCwgNTEsIDI5LCAxLCA3NCwgMjksIDEsIDIwMSwgMTE0LCAKKyAgICAyOSwgMSwgMjAxLCAxMTAsIDI5LCAxLCAyMTcsIDEyMSwgMjksIDEsIDE5OSwgMjQ1LCAyOSwgMSwgNjYsIDI5LCAxLCAyMDEsIAorICAgIDUwLCAyOSwgMSwgMjAxLCA2NCwgMjksIDEsIDIwMSwgMzEsIDI5LCAxLCAxOTksIDIxMSwgMjksIDEsIDIzOCwgNjksIDI5LCAKKyAgICAxLCAyMDAsIDksIDI5LCAxLCA3MCwgMjksIDIzNywgOTMsIDI5LCAxLCAyMDgsIDE2OSwgMjksIDEsIDIxOSwgMTMzLCAyOSwgCisgICAgMSwgMjE5LCAxMzUsIDI5LCAxLCAyMTksIDEzOCwgMjksIDEsIDIxMywgNzEsIDI5LCAxLCAyMTMsIDUyLCAyOSwgMSwgMjEzLCAKKyAgICA2MCwgMjksIDEsIDIxMywgNjUsIDI5LCAxLCAyMTMsIDUwLCAyOSwgMSwgMjIxLCAxOTAsIDI5LCAxLCAyMjEsIDE4NywgMjksIAorICAgIDEsIDIyMSwgMTkxLCAyOSwgMSwgMjI3LCA1MywgMjksIDEsIDIxNSwgMTg1LCAyOSwgMSwgMjE1LCAxNzEsIDI5LCAxLCAKKyAgICAyMTUsIDE3NywgMjksIDEsIDIxNSwgMTc0LCAyOSwgMSwgMjE1LCAxODgsIDI5LCAxLCAyMTUsIDE3MiwgMjksIDEsIDIyNywgCisgICAgNTEsIDI5LCAxLCAyMjcsIDQ5LCAyOSwgMSwgMjA5LCAxMjIsIDI5LCAxLCAyMDksIDEyMCwgMjksIDEsIDIwOSwgMTEyLCAKKyAgICAyOSwgMSwgMjA5LCAxMTcsIDI5LCAxLCAyMDksIDEyNywgMjksIDEsIDIxNiwgMTQ2LCAyOSwgMSwgMjA4LCAxNzIsIDI5LCAKKyAgICAxLCAyMDAsIDI4LCAyOSwgMSwgMjAwLCAyNCwgMjksIDEsIDIwMCwgMjUsIDI5LCAxLCAyMjcsIDUyLCAyOSwgMSwgMjA4LCAKKyAgICAxNzMsIDI5LCAxLCAyMDAsIDM0LCAyOSwgMSwgMTk5LCAyMzksIDI5LCAxLCAxOTksIDIzOCwgMjksIDEsIDE5OSwgMjQxLCAKKyAgICAyOSwgMSwgMTk5LCAyMDIsIDI5LCAxLCAxOTksIDIwMywgMjksIDEsIDE5OSwgMjA2LCAyOSwgMSwgMjUwLCAyNDUsIDI5LCAKKyAgICAxLCAyNTAsIDIzOSwgMTQxLCAyNTEsIDU4LCAyMjQsIDE2NSwgODEsIDE0MSwgMjUxLCA1OCwgMjEzLCAxMDYsIDgxLCAxNDEsIAorICAgIDI1MSwgNTgsIDExMiwgODEsIDE0MSwgMjUxLCA1OCwgMTIwLCA4MSwgMTQxLCAyNTEsIDU4LCAxMjYsIDgxLCAxNDEsIDI1MSwgCisgICAgNTgsIDIzNiwgMjI5LCA4MSwgMTQxLCAyNTEsIDU4LCAyMDUsIDE1OCwgODEsIDE0MSwgMjUxLCA1OCwgMTAxLCA4MSwgMTQxLCAKKyAgICAyNTEsIDU4LCAyNDgsIDkzLCA4MSwgMTQxLCAyNTEsIDU4LCAyMzcsIDczLCA4MSwgMTQxLCAyNTEsIDU4LCAyMTEsIDE5NiwgCisgICAgODEsIDE0MSwgMjUxLCA1OCwgMjA2LCA3NSwgODEsIDE0MSwgMjUxLCA1OCwgMjM2LCAyMjIsIDgxLCAxNDEsIDI1MSwgNTgsIAorICAgIDIzNCwgMTI0LCA4MSwgMTQxLCAyNTEsIDU4LCAyMzksIDE4LCA4MSwgMTQxLCAyNTEsIDU4LCAyMjIsIDE4MSwgODEsIDI0OCwgCisgICAgMTAyLCAxLCAyNDgsIDM2LCAyNDgsIDEwMiwgMSwgMTk5LCAzNiwgMjQ4LCAxMDIsIDEsIDIyNywgMjA3LCAyNDgsIDEwMiwgCisgICAgMSwgMjM1LCA1MCwgMjQ4LCAxMDIsIDEsIDIzOCwgMjU1LCAyNDgsIDEwMiwgMSwgMjM4LCAxNjIsIDI0OCwgMTAyLCAxLCAKKyAgICAyMTcsIDYzLCAyNDgsIDEwMiwgMSwgMjE3LCA2NywgMjQ4LCAxMDIsIDEsIDIyOCwgMzUsIDI0OCwgMTAyLCAxLCAyNTEsIAorICAgIDYwLCAyNDgsIDEwMiwgMSwgMjI4LCA4MywgMjQ4LCAxMDIsIDEsIDIwMywgMjMzLCAyNDgsIDEwMiwgMSwgMjI4LCAxMzQsIAorICAgIDI0OCwgMTAyLCAxLCAyMTksIDIzMywgMjQ4LCAxMDIsIDEsIDI1MSwgMTcwLCAyNDgsIDEwMiwgMSwgMjUwLCAxMzQsIDI0OCwgCisgICAgMTAyLCAxLCAyNTEsIDEwMSwgMjQ4LCAxMDIsIDEsIDIxNywgODYsIDI0OCwgMTAyLCAxLCAyMTcsIDY5LCAyNDgsIDEwMiwgCisgICAgMSwgMjI4LCA4MCwgMjQ4LCAxMDIsIDQ3LCAxLCAyMTYsIDIyNiwgMjQ4LCAxMDIsIDQ3LCAxLCAyMDcsIDgzLCAyNDgsIAorICAgIDEwMiwgNDcsIDEsIDIyNywgMTE4LCAyNDgsIDEwMiwgNDcsIDEsIDIzNCwgMjQ3LCAyNDgsIDEwMiwgMSwgMjM1LCAyMDAsIAorICAgIDI0OCwgMTAyLCAxLCAyMjQsIDIyNCwgMjQ4LCAxMDIsIDEsIDE5OCwgMjM5LCAxMiwgMjA4LCA0NywgMjA3LCA4MywgMTIsIAorICAgIDIwOCwgNDcsIDIwMSwgNDIsIDEyLCAyMDgsIDQ3LCAyMDAsIDE3MCwgMTIsIDIwOCwgNDcsIDI0NywgMjM2LCAxMiwgMjA4LCAKKyAgICA0NywgMjA3LCAxODcsIDEyLCAyMDgsIDQ3LCAyMzMsIDIzLCAxMiwgMjA4LCA0NywgMjMzLCAyNywgMTIsIDIwOCwgNDcsIAorICAgIDIzMywgMTA2LCAxMiwgMjA4LCA0NywgMjMzLCAyNCwgMTIsIDIwOCwgNDcsIDIwNywgODYsIDEyLCAyMDgsIDQ3LCAyMzMsIAorICAgIDI2LCAxMiwgMjA4LCA0NywgMjMzLCAyMiwgMTIsIDIwOCwgNDcsIDIzMywgMTA0LCAxMiwgMjA4LCA0NywgMjMzLCAyNSwgCisgICAgMTIsIDIwOCwgNDcsIDIzMywgMjEsIDEyLCAyMDgsIDQ3LCAyMjAsIDIxNCwgMTIsIDIwOCwgNDcsIDIzNCwgMjQ3LCAxMiwgCisgICAgMjA4LCA0NywgMjEyLCAxMjIsIDEyLCAyMDgsIDQ3LCAyMTYsIDIyNiwgMTIsIDIwOCwgNDcsIDIwOCwgMjQ3LCAxMiwgMjA4LCAKKyAgICA0NywgMjQyLCAxNTMsIDEyLCAyMDgsIDQ3LCAyMzMsIDI4LCAxMiwgMjA4LCA0NywgMjM0LCA4NSwgMTIsIDIwOCwgNDcsIAorICAgIDIwNywgOTUsIDEyLCAyMDgsIDQ3LCAyMDcsIDE2NiwgMTIsIDIwOCwgNDcsIDIwOCwgMTIzLCAxMiwgMjA4LCA0NywgMjEwLCAKKyAgICAxMjIsIDEyLCAyMDgsIDQ3LCAyMTYsIDc3LCAxMiwgMjA4LCA0NywgMjE0LCAxNjksIDEyLCAyMDgsIDQ3LCAyMDUsIDE4NywgCisgICAgMTIsIDIwOCwgNDcsIDIwNywgODUsIDEyLCAyMDgsIDQ3LCAyMDcsIDE3NywgMTIsIDIwOCwgNDcsIDIzMywgMzcsIDEyLCAKKyAgICAyMDgsIDQ3LCAyMzMsIDIwLCAxMiwgMjA4LCA0NywgMjE1LCAyNDcsIDEyLCAyMDgsIDQ3LCAyMTQsIDE2NywgNjksIDEsIDQsIAorICAgIDIyNiwgMTUsIDY5LCAxLCA0LCAyMDksIDE4MiwgNjksIDEsIDQsIDIwOCwgMjQsIDY5LCAxLCA0LCAxMzgsIDY5LCAxLCA0LCAKKyAgICAyMTgsIDEzMywgNjksIDEsIDQsIDE0NCwgNjksIDEsIDQsIDIzNCwgNzUsIDY5LCAxLCA0LCAyMzMsIDk3LCA2OSwgMSwgNCwgCisgICAgMjM0LCAxMzksIDY5LCAxLCA0LCAyMzMsIDIwNywgNjksIDEsIDQsIDIyMSwgNDEsIDY5LCAxLCA0LCAyMTMsIDI1MiwgNjksIAorICAgIDEsIDQsIDIxMywgODgsIDY5LCAxLCA0LCAyMTIsIDE3NSwgNjksIDEsIDQsIDIxMywgMTkwLCA2OSwgMSwgNCwgMjEzLCAxLCAKKyAgICAxMDYsIDI5LCAyMjYsIDEyMSwgMTA2LCAyOSwgMjE5LCAxNDMsIDEwNiwgMjksIDIwNSwgMjUzLCAxMDYsIDI5LCAyMTMsIAorICAgIDc4LCAxMDYsIDI5LCAyMjEsIDE5NywgMTA2LCAyOSwgMjE1LCAxOTAsIDEwNiwgMjksIDIwOSwgMTI5LCAxMDYsIDI5LCAKKyAgICAyMjgsIDE3NCwgMTA2LCAyOSwgMjQ2LCAxNjgsIDEwNiwgMjksIDI0NiwgMjMyLCAxMDYsIDI5LCAyMjYsIDE4MywgMTA2LCAKKyAgICAyOSwgMjA2LCA4MCwgMTA2LCAyOSwgMjE1LCAyMjcsIDEwNiwgMjksIDIzNCwgNjYsIDEwNiwgMjksIDIyNiwgMTIyLCA2MiwgCisgICAgMTA2LCAyOSwgMjE5LCAxNDQsIDYyLCAxMDYsIDI5LCAyMDUsIDI1NCwgNjIsIDEwNiwgMjksIDIxMywgNzksIDYyLCAxMDYsIAorICAgIDI5LCAyMjEsIDE5OCwgNjIsIDEwNiwgMjksIDIxNSwgMTkxLCA2MiwgMTA2LCAyOSwgMjA5LCAxMzAsIDYyLCAxMDYsIDI5LCAKKyAgICAyMjgsIDE3NSwgNjIsIDEwNiwgMjksIDI0NiwgMTY5LCA2MiwgMTA2LCAyOSwgMjQ2LCAyMzMsIDYyLCAxMDYsIDI5LCAyMjYsIAorICAgIDE4NCwgNjIsIDEwNiwgMjksIDIwNiwgODEsIDYyLCAxMDYsIDI5LCAyMTUsIDIyOCwgNjIsIDEwNiwgMjksIDIzNCwgNjcsIAorICAgIDYyLCAxMDYsIDI5LCAyNDYsIDE2OSwgNjYsIDEwNiwgMjI2LCA1OSwgMTcxLCAyMTcsIDEwMSwgMTA2LCAyMjYsIDU5LCAKKyAgICAxNzEsIDE2MywgMjMzLCA5NywgMTA2LCAxOTgsIDE5OCwgMTAyLCAxMDYsIDE5OCwgMTk4LCAxMDUsIDEwNiwgMTk4LCAxOTgsIAorICAgIDE0NywgMTA2LCAxOTgsIDE5OCwgMTQ5LCAxMDYsIDE5OCwgMTk4LCAxNjQsIDEwNiwgMTk4LCAxOTgsIDE4NywgMTA2LCAKKyAgICAxOTgsIDE5OCwgMjEwLCAxMzUsIDEwNiwgMTk4LCAxOTgsIDE5MiwgMTA2LCAxOTgsIDE5OCwgMjE5LCAxMTMsIDEwNiwgCisgICAgMTk4LCAxOTgsIDIwNiwgMTY2LCAxMDYsIDE5OCwgMTk4LCAyMjEsIDgxLCAxMDYsIDE5OCwgMTk4LCAyMzcsIDc3LCAxMDYsIAorICAgIDE5OCwgMTk4LCAyMDEsIDgyLCAxMDYsIDE5OCwgMTk4LCAyMDAsIDI0MywgMTA2LCAxOTgsIDE5OCwgMjIyLCAyMCwgMTA2LCAKKyAgICAxOTgsIDE5OCwgMjM5LCAxNywgMTA2LCAxOTgsIDE5OCwgMjA3LCAyMjgsIDEwNiwgMTk4LCAxOTgsIDIwOCwgNzksIDEwNiwgCisgICAgMTk4LCAxOTgsIDIzNCwgMTQ4LCAxMDYsIDE5OCwgMTk4LCAyMDksIDI1LCAxMDYsIDE5OCwgMTk4LCAyMjAsIDEzNSwgMTA2LCAKKyAgICAxOTgsIDE5OCwgMjA4LCAyMjksIDEwNiwgMTk4LCAxOTgsIDIzNywgODgsIDEwNiwgMTk4LCAxOTgsIDI0MywgNjEsIDEwNiwgCisgICAgMTk4LCAxOTgsIDIyNSwgMTY1LCAxMDYsIDE5OCwgMTk4LCAyMTMsIDEyNywgMTA2LCAxOTgsIDE5OCwgMjQ3LCAxNjgsIAorICAgIDEwNiwgMTk4LCAxOTgsIDIwOCwgMjksIDEwNiwgMTk4LCAxOTgsIDIwNywgMjEwLCAxMDYsIDE5OCwgMTk4LCAyMzgsIDE1MiwgCisgICAgMTA2LCAxOTgsIDE5OCwgMjEzLCAxMTksIDEwNiwgMTk4LCAxOTgsIDI1MSwgMTIwLCAxMDYsIDE5OCwgMTk4LCAyMzcsIAorICAgIDExOSwgMTA2LCAxOTgsIDE5OCwgMjEzLCAxMTcsIDEwNiwgMTk4LCAxOTgsIDIxMCwgMTc0LCAxMDYsIDE5OCwgMTk4LCAKKyAgICAyMTMsIDE4OSwgNDQsIDE5OCwgMTk4LCAyMTQsIDc4LCA0NCwgMTk4LCAxOTgsIDIyNiwgMTQ2LCA0NCwgMTk4LCAxOTgsIAorICAgIDIxMSwgMjIxLCA0NCwgMTk4LCAxOTgsIDIyNiwgNTUsIDQ0LCA0MSwgMjA2LCAxNjcsIDIxNywgNzksIDYzLCAyMDgsIDE5MywgCisgICAgNDQsIDQxLCAyMDQsIDE2MCwgMjE3LCA3OSwgNjMsIDIwOCwgMTkzLCA0NCwgNDEsIDIwNiwgNjgsIDIxNywgNzksIDYzLCAKKyAgICAyMDgsIDE5MywgNDQsIDQxLCAyMzYsIDIzNiwgMjE3LCA3OSwgNjMsIDIwOCwgMTkzLCA0NCwgNDEsIDIzNywgMTA1LCAyMTcsIAorICAgIDc5LCA2MywgMjA4LCAxOTMsIDQ0LCA0MSwgMjA5LCA5MywgMjE3LCA3OSwgNjMsIDIwOCwgMTkzLCA0NCwgNDEsIDIxMCwgCisgICAgMTMwLCAyMTcsIDc5LCA2MywgMjA4LCAxOTMsIDQ0LCA0MSwgMjM4LCAyMjMsIDIxNywgNzksIDYzLCAyMDgsIDE5MywgMjE2LCAKKyAgICAxMDYsIDU0LCA0NCwgNDEsIDIwNCwgMTYwLCAxMDIsIDQ0LCA0MSwgMjA0LCAxNjAsIDEwNSwgNDQsIDQxLCAyMDQsIDE2MCwgCisgICAgMTQ3LCA0NCwgNDEsIDIwNCwgMTYwLCAxNDksIDQ0LCA0MSwgMjA0LCAxNjAsIDE2NCwgNDQsIDQxLCAyMDQsIDE2MCwgMTg3LCAKKyAgICA0NCwgNDEsIDIwNCwgMTYwLCAyMTAsIDEzNSwgNDQsIDQxLCAyMDQsIDE2MCwgMTkyLCA0NCwgNDEsIDIwNCwgMTYwLCAyMTksIAorICAgIDExMywgNDQsIDQxLCAyMDYsIDY3LCA0NCwgNDEsIDIwNiwgNjgsIDEwMiwgNDQsIDQxLCAyMDYsIDY4LCAxMDUsIDQ0LCA0MSwgCisgICAgMjA2LCA2OCwgMTQ3LCA0NCwgNDEsIDIwNiwgNjgsIDE0OSwgNDQsIDQxLCAyMDYsIDY4LCAxNjQsIDQ0LCAyOSwgMjI2LCAKKyAgICAxMjEsIDQ0LCAyOSwgMjE5LCAxNDMsIDQ0LCAyOSwgMjA1LCAyNTMsIDQ0LCAyOSwgMjEzLCA3OCwgNDQsIDI5LCAyMjEsIAorICAgIDE5NywgNDQsIDI5LCAyMTUsIDE5MCwgNDQsIDI5LCAyMDksIDEyOSwgNDQsIDI5LCAyMjgsIDE3NCwgNDQsIDI5LCAyNDYsIAorICAgIDE2OCwgNDQsIDI5LCAyNDYsIDIzMiwgNDQsIDI5LCAyMjYsIDE4MywgNDQsIDI5LCAyMDYsIDgwLCA0NCwgMjksIDIxNSwgCisgICAgMjI3LCA0NCwgMjksIDIzNCwgNjYsIDQ0LCAyOSwgMjI2LCAxMjIsIDYyLCA0NCwgMjksIDIxOSwgMTQ0LCA2MiwgNDQsIDI5LCAKKyAgICAyMDUsIDI1NCwgNjIsIDQ0LCAyOSwgMjEzLCA3OSwgNjIsIDQ0LCAyOSwgMjIxLCAxOTgsIDYyLCA0NCwgMjksIDIxNSwgCisgICAgMTkxLCA2MiwgNDQsIDI5LCAyMDksIDEzMCwgNjIsIDQ0LCAyOSwgMjI4LCAxNzUsIDYyLCA0NCwgMjksIDI0NiwgMTY5LCAKKyAgICA2MiwgNDQsIDI5LCAyNDYsIDIzMywgNjIsIDQ0LCAyOSwgMjI2LCAxODQsIDYyLCA0NCwgMjksIDIwNiwgODEsIDYyLCA0NCwgCisgICAgMjksIDIxNSwgMjI4LCA2MiwgNDQsIDI5LCAyMzQsIDY3LCA2MiwgNDQsIDIyNiwgNTksIDE3MSwgMjQ3LCAyNywgNDQsIAorICAgIDIyNiwgNTksIDE3MSwgMjI3LCAxNDMsIDQ0LCAyOSwgMjI4LCAxNzUsIDY2LCAyMjYsIDU5LCAyMDgsIDExMiwgOTksIDQ0LCAKKyAgICAxOTgsIDE5OCwgMTAyLCA0NCwgMTk4LCAxOTgsIDEwNSwgNDQsIDE5OCwgMTk4LCAxNDcsIDQ0LCAxOTgsIDE5OCwgMTQ5LCAKKyAgICA0NCwgMTk4LCAxOTgsIDE2NCwgNDQsIDE5OCwgMTk4LCAxODcsIDQ0LCAxOTgsIDE5OCwgMjEwLCAxMzUsIDQ0LCAxOTgsIAorICAgIDE5OCwgMTkyLCA0NCwgMTk4LCAxOTgsIDIxOSwgMTEzLCA0NCwgMTk4LCAxOTgsIDIwNiwgMTY2LCA0NCwgMTk4LCAxOTgsIAorICAgIDIyMSwgODEsIDQ0LCAxOTgsIDE5OCwgMjM3LCA3NywgNDQsIDE5OCwgMTk4LCAyMDEsIDgyLCA0NCwgMTk4LCAxOTgsIDIwMCwgCisgICAgMjQzLCA0NCwgMTk4LCAxOTgsIDIyMiwgMjAsIDQ0LCAxOTgsIDE5OCwgMjM5LCAxNywgNDQsIDE5OCwgMTk4LCAyMDcsIAorICAgIDIyOCwgNDQsIDE5OCwgMTk4LCAyMDgsIDc5LCA0NCwgMTk4LCAxOTgsIDIzNCwgMTQ4LCA0NCwgMTk4LCAxOTgsIDIwOSwgCisgICAgMjUsIDQ0LCAxOTgsIDE5OCwgMjIwLCAxMzUsIDQ0LCAxOTgsIDE5OCwgMjA4LCAyMjksIDQ0LCAxOTgsIDE5OCwgMjM3LCAKKyAgICA4OCwgNDQsIDE5OCwgMTk4LCAyNDMsIDYxLCA0NCwgMTk4LCAxOTgsIDIyNSwgMTY1LCA0NCwgMTk4LCAxOTgsIDIxMSwgCisgICAgMTk0LCA0NCwgMTk4LCAxOTgsIDIyMiwgMTg0LCA0NCwgMTk4LCAxOTgsIDIzNywgMTI5LCA0NCwgMTk4LCAxOTgsIDIwNywgCisgICAgMjQwLCA0NCwgMTk4LCAxOTgsIDIzOCwgNDcsIDQ0LCAxOTgsIDE5OCwgMjE1LCAxMCwgNDQsIDE5OCwgMTk4LCAyNTAsIAorICAgIDE0MywgNDQsIDE5OCwgMTk4LCAyMjgsIDExLCA0NCwgMTk4LCAxOTgsIDIxMywgMTE3LCA0NCwgMTk4LCAxOTgsIDI0MywgCisgICAgMjAsIDQ0LCAxOTgsIDE5OCwgMjQzLCAxMCwgNDQsIDE5OCwgMTk4LCAyMzQsIDU5LCA0NCwgMTk4LCAxOTgsIDI0NywgNTUsIAorICAgIDQ0LCAxOTgsIDE5OCwgMjI0LCA1OSwgNDQsIDE5OCwgMTk4LCAyMjUsIDI4LCA0NCwgMTk4LCAxOTgsIDIxMywgNDYsIDQ0LCAKKyAgICAxOTgsIDE5OCwgMjIyLCA2NywgNDQsIDE5OCwgMTk4LCAyMTMsIDE0NCwgNDQsIDE5OCwgMTk4LCAyMDgsIDI5LCA0NCwgCisgICAgMTk4LCAxOTgsIDIwNywgMjEwLCA0NCwgMTk4LCAxOTgsIDIzOCwgMTUyLCA0NCwgMTk4LCAxOTgsIDIxMywgMTE5LCA0NCwgCisgICAgMTk4LCAxOTgsIDI1MSwgMTIwLCA0NCwgMTk4LCAxOTgsIDIxOSwgMTI5LCA0NCwgNDEsIDIwNiwgNjgsIDE4NywgNDQsIDQxLCAKKyAgICAyMDYsIDY4LCAyMTAsIDEzNSwgNDQsIDQxLCAyMDYsIDY4LCAxOTIsIDQ0LCA0MSwgMjA2LCA2OCwgMjE5LCAxMTMsIDQ0LCAKKyAgICA0MSwgMjM2LCAyMzUsIDQ0LCA0MSwgMjM2LCAyMzYsIDEwMiwgNDQsIDQxLCAyMzYsIDIzNiwgMTA1LCA0NCwgNDEsIDIzNiwgCisgICAgMjM2LCAxNDcsIDQ0LCA0MSwgMjM2LCAyMzYsIDE0OSwgNDQsIDQxLCAyMzYsIDIzNiwgMTY0LCA0NCwgNDEsIDIzNiwgMjM2LCAKKyAgICAxODcsIDQ0LCA0MSwgMjM2LCAyMzYsIDIxMCwgMTM1LCA0NCwgNDEsIDIzNiwgMjM2LCAxOTIsIDQ0LCA0MSwgMjM2LCAyMzYsIAorICAgIDIxOSwgMTEzLCA0NCwgNDEsIDIzNywgMTA0LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIyNywgMjM4LCAxNDEsIDIwNiwgCisgICAgMTc4LCAxNiwgMzYsIDIzNywgMTQxLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIyMiwgMTUyLCAxNDEsIDIwNiwgMTc4LCAKKyAgICAxNiwgMzYsIDI1MSwgMywgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMjIsIDExOSwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAKKyAgICAyMjcsIDE0MCwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMjcsIDE0MSwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNTAsIAorICAgIDEzNSwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMTAsIDE1MywgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMTcsIDEyNywgCisgICAgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMTgsIDIwMiwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDE3MCwgNTIsIAorICAgIDIzNCwgODUsIDUyLCAyMzgsIDExMSwgNTIsIDIzOCwgNTcsIDIyNCwgMTgyLCAyMjQsIDIwOSwgNTQsIDQ0LCA2OSwgNjIsIAorICAgIDQ0LCA2OSwgNzAsIDQ0LCA2OSwgNjYsIDQ0LCA2OSwgNzIsIDQ0LCA2OSwgNzQsIDQ0LCA2OSwgMTYxLCA0NCwgNjksIDIyNiwgCisgICAgMTYzLCA0NCwgNjksIDIyNiwgMTUsIDQ0LCA2OSwgMjI3LCA4LCA0NCwgNjksIDIyNiwgODgsIDQ0LCA2OSwgMjEyLCA2NCwgCisgICAgNDQsIDY5LCAyMDksIDE4MiwgNDQsIDY5LCAyMDgsIDI0LCA0NCwgNjksIDIxMSwgMjAyLCA0NCwgNjksIDIwOSwgMjksIDQ0LCAKKyAgICA2OSwgMjA3LCAzNiwgNDQsIDY5LCAyMDYsIDE1LCA0NCwgNjksIDIwNCwgMjE1LCA0NCwgNjksIDIwNiwgMjAxLCA0NCwgNjksIAorICAgIDEzOCwgNDQsIDY5LCAxODgsIDQ0LCA2OSwgMjE5LCAxNTAsIDQ0LCA2OSwgMjE4LCAxMzMsIDQ0LCA2OSwgMjIwLCAzNCwgCisgICAgNDQsIDY5LCAyMTgsIDI0MSwgNDQsIDY5LCAxNDQsIDQ0LCA2OSwgMjM0LCA3NSwgNDQsIDY5LCAyMzMsIDk3LCA0NCwgNjksIAorICAgIDIzNCwgMTM5LCA0NCwgNjksIDIzMywgMjA3LCA0NCwgNjksIDE3OCwgNDQsIDY5LCAyMjEsIDIxMSwgNDQsIDY5LCAyMjEsIAorICAgIDQxLCA0NCwgNjksIDIyMiwgNzYsIDQ0LCA2OSwgMjIxLCAxMzYsIDQ0LCA2OSwgMTgzLCA0NCwgNjksIDE5OSwgMjExLCA0NCwgCisgICAgNjksIDE5OSwgMjQ1LCA0NCwgNjksIDIxMywgMjUyLCA0NCwgNjksIDIxMywgODgsIDQ0LCA2OSwgMjEyLCAxNzUsIDQ0LCAKKyAgICA2OSwgMjEzLCAxOTAsIDQ0LCA2OSwgMjEzLCAxLCA0NCwgNjksIDIwMSwgMTE0LCA0NCwgNjksIDIwMSwgMzEsIDQ0LCA2OSwgCisgICAgMjAxLCA2NCwgNDQsIDY5LCAyMDEsIDAsIDUyLCAyNTEsIDI3LCA1MiwgMjUwLCAxOTAsIDUyLCAyNTEsIDU0LCA1MiwgMjUyLCAKKyAgICA5NiwgNTIsIDIyOCwgODUsIDUyLCAyMjgsIDUzLCA1MiwgMjAzLCAyMzEsIDUyLCAyMzgsIDg0LCA1MiwgMjM4LCAyNTIsIAorICAgIDUyLCAyMTcsIDY2LCA1MiwgMjE3LCA1OSwgNTIsIDIyNywgODAsIDUyLCAyMjcsIDQ1LCA1MiwgMjI3LCA0MiwgNTIsIDIzNiwgCisgICAgNDUsIDUyLCAyMzYsIDU0LCA1MiwgMjM1LCAxNTAsIDUyLCAyMzUsIDE0NiwgNTIsIDIyNSwgMTk0LCA1MiwgMjM1LCAxMzgsIAorICAgIDUyLCAyMjYsIDEzOCwgNTIsIDIyNiwgMTM3LCA1MiwgMjI2LCAxMzYsIDUyLCAyMjYsIDEzNSwgNTIsIDIzNSwgMjAsIDUyLCAKKyAgICAyMzUsIDE5LCA1MiwgMjI1LCAyNDIsIDUyLCAyMjUsIDI0NCwgNTIsIDIyNywgMSwgNTIsIDIyNiwgNTcsIDUyLCAyMjYsIAorICAgIDY1LCA1MiwgMjEyLCA0NSwgNTIsIDIxMiwgNiwgNTIsIDIwOSwgMTEwLCA1MiwgMjEwLCAxNTgsIDUyLCAyMTAsIDE1NywgCisgICAgNTIsIDI0MiwgNTQsIDUyLCAyNDEsIDExMywgNTIsIDI0MCwgMTgzLCA1MiwgMjA1LCAxNzYsIDUyLCAyMjAsIDEzMCwgNTIsIAorICAgIDIxOCwgMjAzLCA1MiwgMjM0LCAyMTgsIDUyLCAyMTYsIDIwNSwgNTIsIDIxNiwgMjA0LCA1MiwgMjQ5LCAxMzMsIDUyLCAKKyAgICAyMTUsIDIwMSwgNTIsIDIxNSwgMTY0LCA1MiwgMjE1LCAxNjUsIDUyLCAyNDgsIDE1OCwgNTIsIDIzMywgOTUsIDUyLCAyMzMsIAorICAgIDkwLCA1MiwgMjQ3LCAyNTAsIDUyLCAyMzMsIDc0LCA1MiwgMjM0LCAxMTEsIDUyLCAyMTYsIDEsIDUyLCAyMTYsIDQyLCA1MiwgCisgICAgMjM0LCA5NCwgNTIsIDIxNiwgMzgsIDUyLCAyMTYsIDU2LCA1MiwgMjQ4LCAyNDcsIDUyLCAyMTUsIDk1LCA1MiwgMjQ4LCAKKyAgICA5OCwgNTIsIDIzMywgMTkxLCA1MiwgMjE1LCA4MiwgNTIsIDIzMywgMTgyLCA1MiwgMjMzLCAxODQsIDUyLCAyMjIsIDE5NiwgCisgICAgNTIsIDIyMiwgMTkyLCA1MiwgMjIyLCAyMDEsIDUyLCAyMjIsIDEzOSwgNTIsIDIyMiwgMTY4LCA1MiwgMjIxLCAxNzYsIDUyLCAKKyAgICAyMjEsIDE1MSwgNTIsIDIyMSwgMTUwLCA1MiwgMjIyLCA1NiwgNTIsIDIyMiwgNTMsIDUyLCAyMjIsIDU3LCA1MiwgMjAwLCAKKyAgICAxMDgsIDUyLCAyMDAsIDEwNiwgNTIsIDE5OSwgMjAwLCA1MiwgMjEzLCAxNywgNTIsIDIxMywgMjEsIDUyLCAyMTIsIDE0OCwgCisgICAgNTIsIDIxMiwgMTQyLCA1MiwgMjEzLCAxNDEsIDUyLCAyMTMsIDEzOCwgNTIsIDIwMSwgODAsIDE0MSwgMjA2LCAxNzgsIDE2LCAKKyAgICAzNiwgMjMzLCAxMTQsIDE5OSwgODEsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjMzLCAxMTQsIDEwMiwgMTQxLCAyMDYsIAorICAgIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgMTA1LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAxNDcsIDE0MSwgCisgICAgMjA2LCAxNzgsIDE2LCAzNiwgMjMzLCAxMTQsIDE0OSwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgMTY0LCAKKyAgICAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAxODcsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjMzLCAxMTQsIAorICAgIDIxMCwgMTM1LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAxOTIsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgCisgICAgMjMzLCAxMTQsIDIxOSwgMTEzLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAyMDYsIDE2NiwgMTQxLCAyMDYsIAorICAgIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgMjM4LCAxOTksIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjMzLCAxMTQsIDIwNCwgCisgICAgMTY0LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAyMDYsIDY5LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIAorICAgIDIzMywgMTE0LCAyMzYsIDIyMywgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgMjM3LCAxMDgsIDE0MSwgMjA2LCAKKyAgICAxNzgsIDE2LCAzNiwgMjMzLCAxMTQsIDIwOSwgMTAwLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAyMTAsIAorICAgIDEzMiwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgMjM4LCAyMjksIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgCisgICAgMjMzLCAxMTQsIDIxOSwgMTEwLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAyMDQsIDE1OSwgMTQxLCAyMDYsIAorICAgIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgMjA0LCAxNTMsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjMzLCAxMTQsIDIwNCwgCisgICAgMTQ4LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAyMDQsIDE1MCwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAKKyAgICAyMzMsIDExNCwgMjA0LCAxNTUsIDUyLCAyMzMsIDEwNSwgNTIsIDI0MiwgNTgsIDUyLCAyNTAsIDEzOSwgNTIsIDE0OCwgNTIsIAorICAgIDIxNiwgMjQ5LCA1MiwgMjE2LCA3OCwgNTIsIDI0MCwgMjEzLCA1MiwgMjQwLCAyMTQsIDIwOCwgMTkyLCA1MiwgMjQwLCAKKyAgICAyMTQsIDI0MiwgMjA5LCA1MiwgMjI4LCA4LCA1MiwgMjM4LCAxMTQsIDIyMCwgMTM2LCAyMzQsIDExMiwgNTIsIDIzOCwgCisgICAgMTE0LCAyMjAsIDEzNiwgMjA3LCAxMDYsIDUyLCAyMzgsIDExNCwgMjIwLCAxMzYsIDIwNywgMywgNTIsIDIzOCwgMTE0LCAKKyAgICAyMjAsIDEzNiwgMjIyLCA1MiwgNTIsIDI0MywgMTIsIDUyLCAyMTYsIDIxMSwgMjUxLCA4NywgNTIsIDE4OCwgNTIsIDIyMSwgCisgICAgNDIsIDYyLCA1MiwgMTc4LCA1MiwgMTYxLCA1MiwgMjI3LCAxMSwgNTIsIDIyMiwgMTE1LCA1MiwgMjM2LCAzMywgNTIsIAorICAgIDI0NywgMTc0LCA1MiwgMjI3LCAxMCwgNTIsIDIxNSwgMjQ4LCA1MiwgMjIwLCAxLCA1MiwgMjIxLCA0MiwgMjM4LCA1LCA1MiwgCisgICAgMjIxLCA0MiwgMjM2LCAxNTYsIDUyLCAyMjEsIDI1MiwgNTIsIDIyNiwgMjA5LCA1MiwgMjMzLCAyOCwgNTIsIDIyNiwgMTY1LCAKKyAgICA1MiwgMjIxLCAyMTMsIDUyLCAyMzUsIDE2MywgNTIsIDIwNiwgMTcsIDUyLCAyMjEsIDQyLCAxNTYsIDUyLCAyMjEsIDE0NCwgCisgICAgNTIsIDI0MCwgMjIzLCA1MiwgMjI2LCAxMDMsIDUyLCAyMzcsIDE1LCA1MiwgMjE5LCAyMywgNTIsIDIyMSwgNDIsIDIyMywgCisgICAgMjQzLCA1MiwgMjIxLCAxNDEsIDUyLCAyNDYsIDkyLCA1MiwgMjI2LCA5NywgNTIsIDIyMSwgMTQyLCAyMDgsIDE5MiwgNTIsIAorICAgIDI0NiwgOTMsIDIwOCwgMTkyLCA1MiwgMjIzLCAyNDQsIDIwOCwgMTkyLCA1MiwgMjI2LCA5OCwgMjA4LCAxOTIsIDUyLCAKKyAgICAyMjEsIDE0MiwgMjQyLCAyMDksIDUyLCAyNDYsIDkzLCAyNDIsIDIwOSwgNTIsIDIyMywgMjQ0LCAyNDIsIDIwOSwgNTIsIAorICAgIDIyNiwgOTgsIDI0MiwgMjA5LCA1MiwgMjIzLCAyNDQsIDExOSwgMjEyLCAxMjIsIDUyLCAyMjMsIDI0NCwgMTE5LCAyMTIsIAorICAgIDEyMywgMjA4LCAxOTIsIDUyLCAxNzIsIDUyLCAyMjYsIDUwLCA1MiwgMjIxLCA0NSwgNTIsIDIzNSwgOTEsIDUyLCAyMTMsIAorICAgIDIzOSwgNTIsIDIxMywgMjQwLCAxMTksIDIxMiwgMTIyLCA1MiwgMjEzLCAyNDAsIDExOSwgMjEyLCAxMjMsIDIwOCwgMTkyLCAKKyAgICA1MiwgMjE0LCAyMzcsIDUyLCAyMTgsIDE3MSwgNTIsIDIyMSwgNDIsIDIxMiwgMTIyLCA1MiwgMjIxLCA0MywgNTIsIDIxNCwgCisgICAgMTg3LCA1MiwgMjE4LCA3MSwgNTIsIDIyMSwgNDIsIDIwMywgMTY4LCA1MiwgMjIwLCAyMzgsIDUyLCAyMjUsIDIzMiwgNTIsIAorICAgIDIyMCwgMjM5LCAyMjIsIDU2LCA1MiwgMjE0LCAxODYsIDUyLCAyMTgsIDcwLCA1MiwgMjIxLCA0MiwgMjAxLCAxNDcsIDUyLCAKKyAgICAyMjAsIDIzMiwgNTIsIDIyNSwgMjMwLCA1MiwgMjIwLCAyMzMsIDIyMiwgNTYsIDUyLCAyMjcsIDExOSwgMjE3LCAxMDYsIAorICAgIDUyLCAyMjMsIDI0NCwgMjE3LCAxMDYsIDUyLCAyNTEsIDEwMSwgNTIsIDI0OCwgNzMsIDUyLCAyNDcsIDEwMCwgNTIsIDI0NywgCisgICAgNzcsIDUyLCAyNDcsIDIyNCwgMTE5LCAyMjYsIDIwOSwgNTIsIDI0NiwgOTEsIDUyLCAyNDEsIDIyOSwgNTIsIDIzNSwgNCwgCisgICAgNTIsIDE0NCwgNTIsIDIzMywgMTA2LCA1MiwgMjI4LCAxMTcsIDUyLCAyMjYsIDExMCwgNTIsIDIyNiwgOTgsIDI0NywgMTQzLCAKKyAgICA1MiwgMjI2LCAxNywgNTIsIDIyNCwgMTEzLCA1MiwgMjI0LCAxMTIsIDUyLCAyMjQsIDk5LCA1MiwgMjI0LCAzLCA1MiwgCisgICAgMjIyLCAxMTYsIDIwOSwgNTMsIDUyLCAyMjEsIDE3NSwgNTIsIDIyMSwgMTA4LCA1MiwgMjE1LCAyNDYsIDUyLCAyMTUsIAorICAgIDEwOSwgNTIsIDIxNSwgNDYsIDUyLCAyMTUsIDQ0LCA1MiwgMjA4LCAxODMsIDUyLCAyMDcsIDE5MSwgNTIsIDIwMSwgNjYsIAorICAgIDUyLCAyMDMsIDE2OSwgMTE5LCAyMjMsIDI0MywgNTIsIDM1LCAxMTksIDIyMywgMjQzLCAxNDEsIDIwNiwgMTc4LCAxNiwgCisgICAgMzYsIDI0MSwgMjMzLCAxMDIsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDEwNSwgMTQxLCAyMDYsIDE3OCwgCisgICAgMTYsIDM2LCAyNDEsIDIzMywgMTQ3LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAxNDksIDE0MSwgMjA2LCAKKyAgICAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDE2NCwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMTg3LCAxNDEsIAorICAgIDIwNiwgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAyMTAsIDEzNSwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgCisgICAgMTkyLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAyMTksIDExMywgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAKKyAgICAyNDEsIDIzMywgMjA2LCAxNjYsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDIzOCwgMTk5LCAxNDEsIDIwNiwgCisgICAgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAyMDQsIDE2NCwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMjA2LCAKKyAgICA2OSwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMjM2LCAyMjMsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgCisgICAgMjQxLCAyMzMsIDIzNywgMTA4LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAyMDksIDEwMCwgMTQxLCAyMDYsIAorICAgIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMjEwLCAxMzIsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDIzOCwgCisgICAgMjI5LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAyMTksIDExMCwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAKKyAgICAyNDEsIDIzMywgMjA0LCAxNTksIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDIwNCwgMTUzLCAxNDEsIDIwNiwgCisgICAgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAyMDQsIDE0OCwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMjA0LCAKKyAgICAxNTAsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDIwNCwgMTU1LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIAorICAgIDI0MSwgMjMzLCAyMDQsIDE1NiwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMjA0LCAxNTEsIDE0MSwgMjA2LCAKKyAgICAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDIwNCwgMTUyLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAyMDQsIAorICAgIDE1OCwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMjA0LCAxNTQsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgCisgICAgMjQxLCAyMzMsIDIwNiwgNjcsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDIwNiwgNjYsIDUyLCAyMzYsIDcxLCAKKyAgICAyMzQsIDg4LCAzNiwgMjA2LCAxMDcsIDI0MiwgMjQ3LCAyMzQsIDEyMywgMjM0LCA4OCwgMzYsIDIwNiwgMTA3LCAyMTMsIAorICAgIDE4MywgMjM5LCAxNywgMjM0LCA4OCwgMzYsIDI0MSwgNDYsIDI1MCwgMTU2LCAyMDYsIDEwNywgMjQ4LCAyNDIsIDIzNCwgCisgICAgODgsIDM2LCAxOTksIDIyNCwgMjM3LCA3LCAyMzQsIDg4LCAzNiwgMjAxLCAxMDYsIDIzNCwgODgsIDM2LCAyNDMsIDY0LCAKKyAgICAyMzQsIDg4LCAzNiwgMjA2LCAxMDcsIDI1MCwgMjEzLCAyMzQsIDg4LCAzNiwgMjMzLCAxOTgsIDIwNSwgMTgyLCAyMzQsIAorICAgIDg4LCAzNiwgNCwgMjA2LCAyNDUsIDIzNCwgODgsIDM2LCAyMDUsIDExMCwgMjM0LCA4OCwgMzYsIDIxNiwgNzEsIDIzNCwgCisgICAgODgsIDM2LCAyMDgsIDExMSwgMjM0LCA4OCwgMzYsIDIzNywgMTMxLCAyMzQsIDg4LCAzNiwgMjM1LCA2OSwgMjE1LCA2OCwgCisgICAgMjM0LCA4OCwgMzYsIDIyMSwgMTI4LCAyMzQsIDg4LCAzNiwgMjM4LCAxNTEsIDIzNCwgODgsIDM2LCAyMzcsIDgsIDIzNCwgCisgICAgODgsIDM2LCAyMDAsIDIzNiwgMjE3LCA3OSwgMjA2LCAxMDcsIDI0MSwgMTcxLCAyMzQsIDg4LCAzNiwgMjUxLCA3LCAyMzQsIAorICAgIDg4LCAzNiwgMjQzLCA0MywgMjM0LCA4OCwgMzYsIDI0OCwgMTUwLCAyMDYsIDM3LCAyMzQsIDg4LCAzNiwgMjM1LCA4OSwgCisgICAgMjM0LCA4OCwgMzYsIDIwOCwgMjA4LCAyNTEsIDI2LCAyMzQsIDg4LCAzNiwgMjEzLCAxMDksIDIzNCwgODgsIDM2LCAyMjgsIAorICAgIDc5LCAyMzQsIDg4LCAzNiwgMjM1LCA2OSwgMjA2LCAyNDUsIDIzNCwgODgsIDM2LCAyMjEsIDU5LCAyNDMsIDE0LCAyMzQsIAorICAgIDg4LCAzNiwgMjM1LCA2OSwgMjE1LCAyMiwgMjM0LCA4OCwgMzYsIDIwNiwgMTA3LCAyNTIsIDAsIDIwMSwgODIsIDIzNCwgCisgICAgODgsIDM2LCAyMDYsIDEwNywgMjQ2LCAxMTgsIDIzNywgNzcsIDIzNCwgODgsIDM2LCAyMjgsIDkzLCAyMzQsIDg4LCAzNiwgCisgICAgMjM5LCAxMTQsIDIzNCwgODgsIDM2LCAyMTMsIDExMiwgMjM0LCA4OCwgMzYsIDIzNSwgNjksIDIxNSwgNTEsIDIzNCwgODgsIAorICAgIDM2LCAyMTQsIDI1NCwgMjM0LCA4OCwgMzYsIDI0MSwgMjQ5LCA3NiwgMjA2LCAxMDcsIDIyNCwgMTk2LCAyMzQsIDg4LCAzNiwgCisgICAgMjA2LCAxMDcsIDIzNywgMTY5LCAyMzQsIDg4LCAzNiwgMjE3LCAzOSwgMjM0LCA4OCwgMzYsIDIxNywgMTM0LCAyMzQsIDg4LCAKKyAgICAzNiwgMjQxLCAxNDEsIDIzNCwgODgsIDM2LCAyNDEsIDE2MywgMjM0LCA4OCwgMzYsIDIyOCwgMTA4LCAyMzQsIDg4LCAzNiwgCisgICAgMjQ4LCA2MCwgMjM0LCA4OCwgMzYsIDI0NiwgNzIsIDIwNSwgMTg2LCAyMjIsIDU5LCAyMzQsIDg4LCAzNiwgMjM2LCA0MCwgCisgICAgMjA1LCAxODIsIDIzNCwgODgsIDM2LCAyMTQsIDE5NiwgMjAzLCAyMTcsIDIzNCwgODgsIDM2LCAyMTcsIDM4LCAyMzQsIDg4LCAKKyAgICAzNiwgMjA2LCAxMDcsIDIwMSwgNTIsIDIzNCwgODgsIDM2LCAyMTMsIDEwMCwgMjM0LCA4OCwgMzYsIDIwNiwgMTA3LCAyNDcsIAorICAgIDEwNiwgMjM0LCA4OCwgMzYsIDIwNiwgMTA3LCAyNTAsIDIwOSwgMjA2LCAzMSwgMjM0LCA4OCwgMzYsIDIwNiwgMTA3LCAKKyAgICAyMjcsIDIsIDIwOCwgODMsIDIyMSwgNjMsIDIzNCwgODgsIDM2LCAyNDEsIDEwOCwgMjM0LCA4OCwgMzYsIDIwNiwgMTA3LCAKKyAgICAyMjIsIDE0MiwgMjIyLCAxOTcsIDIzNCwgODgsIDM2LCAyNTIsIDEsIDIzNCwgODgsIDM2LCAyMDYsIDEwNywgMjAxLCA5OSwgCisgICAgMjM0LCA4OCwgMzYsIDIwNiwgMTA3LCAyMzUsIDI1MywgMjAxLCAxNiwgMjM0LCA4OCwgMzYsIDIwNiwgMTA3LCAyMjcsIAorICAgIDE0OSwgMjI1LCA5NiwgMjM0LCA4OCwgMzYsIDI0MCwgMjUyLCAyMzQsIDg4LCAzNiwgMjI0LCAxODMsIDIzNCwgODgsIDM2LCAKKyAgICAyMjgsIDgyLCAyMDUsIDM2LCAyMzQsIDg4LCAzNiwgNCwgMjE1LCAyMiwgMjM0LCA4OCwgMzYsIDI1MSwgMTk0LCAyNDYsIAorICAgIDYzLCAyMzQsIDg4LCAzNiwgMjQ4LCAyNDUsIDI0NiwgNjMsIDExLCA1LCAyMjgsIDEyLCAxMSwgNSwgMjI4LCA0LCAxMSwgNSwgCisgICAgNzAsIDExLCA1LCAyMjgsIDM4LCAxMSwgNSwgMjI4LCAxNzYsIDExLCA1LCAyMjgsIDE1OSwgMTEsIDUsIDIyOCwgMTc4LCAKKyAgICAxMSwgNSwgMjI4LCAxNzcsIDExLCA1LCAyNTAsIDE1NSwgMTEsIDUsIDI1MCwgMTE0LCAxMSwgNSwgNjIsIDExLCA1LCAyNTEsIAorICAgIDI4LCAxMSwgNSwgMjAzLCAyMjksIDExLCA1LCAyMDMsIDIzMiwgMTEsIDUsIDIwMywgMjMwLCAxMSwgNSwgMjE3LCAxMSwgCisgICAgMTEsIDUsIDIxNiwgMjM1LCAxMSwgNSwgNzQsIDExLCA1LCAyMTcsIDU0LCAxMSwgNSwgMjM4LCA0OCwgMTEsIDUsIDcyLCAKKyAgICAxMSwgNSwgMjAwLCAyMTYsIDExLCA1LCAyNDgsIDE1MiwgMTEsIDUsIDI0OCwgMTQ4LCAxMSwgNSwgMjQ4LCAxODgsIDExLCAKKyAgICA1LCAyNDgsIDE2MywgMTEsIDUsIDI0OCwgMTc3LCAxMSwgNSwgMjQ4LCAxNzYsIDExLCA1LCAyNDgsIDE3OSwgMTEsIDUsIAorICAgIDI0OCwgMTc4LCAxMSwgNSwgMjQ5LCA1NSwgMTEsIDUsIDI0OSwgNDcsIDExLCA1LCAyNDksIDEzNiwgMTEsIDUsIDI0OSwgCisgICAgNzgsIDExLCA1LCAyNDgsIDYsIDExLCA1LCAyNDgsIDEwLCAxMSwgNSwgMjQ4LCA3LCAxMSwgNSwgMjQ4LCA5NywgMTEsIDUsIAorICAgIDI0OCwgNzgsIDExLCA1LCAyNDgsIDEyNCwgMTEsIDUsIDI0OCwgMTAzLCAxMSwgNSwgMjQ4LCAyMDMsIDExLCA1LCAyNDksIAorICAgIDgsIDExLCA1LCAyNDgsIDIxNSwgMTEsIDUsIDI0NywgMjQ2LCAxMSwgNSwgMjQ3LCAyNDEsIDExLCA1LCAyNDgsIDM2LCAxMSwgCisgICAgNSwgMjQ4LCA1LCAxMSwgNSwgMjQ3LCAyNTQsIDExLCA1LCAyNDgsIDMsIDExLCA1LCAyNDcsIDIyOSwgMTEsIDUsIDI0NywgCisgICAgMjI3LCAxMSwgNSwgMjQ3LCAyMzQsIDExLCA1LCAyNDcsIDIzMiwgMTEsIDUsIDI0NywgMjMwLCAxMSwgNSwgMjQ3LCAyMzEsIAorICAgIDExLCA1LCAyMTUsIDE0MiwgMTEsIDUsIDIxNSwgMTM4LCAxMSwgNSwgMjE1LCAyMDQsIDExLCA1LCAyMTUsIDE1NCwgMTEsIAorICAgIDUsIDIxNSwgMTcwLCAxMSwgNSwgMjE1LCAxOTcsIDExLCA1LCAyMTUsIDE5MywgMTEsIDUsIDIxNiwgOTQsIDExLCA1LCAKKyAgICAyMTYsIDgzLCAxMSwgNSwgMTcyLCAxMSwgNSwgMjE2LCAxMzUsIDExLCA1LCAyMTQsIDIwNiwgMTEsIDUsIDIxNCwgMjA4LCAKKyAgICAxMSwgNSwgMjE0LCAyMDcsIDExLCA1LCAyMTUsIDYxLCAxMSwgNSwgMjE1LCA0OSwgMTEsIDUsIDIxNSwgMTA2LCAxMSwgNSwgCisgICAgMjE1LCA3NywgMTEsIDUsIDIxNCwgMTkyLCAxMSwgNSwgMjE0LCAxODgsIDExLCA1LCAyMTQsIDIyNCwgMTEsIDUsIDIxNCwgCisgICAgMjA1LCAxMSwgNSwgMjE0LCAxOTcsIDExLCA1LCAyMTQsIDIwMywgMTEsIDUsIDIxNCwgMTcxLCAxMSwgNSwgMjE0LCAxNzAsIAorICAgIDExLCA1LCAyMTQsIDE3NSwgMTEsIDUsIDIxNCwgMTc0LCAxMSwgNSwgMjE0LCAxNzIsIDExLCA1LCAyMTQsIDE3MywgMTEsIAorICAgIDUsIDI0OSwgMjksIDExLCA1LCAyNDksIDI4LCAxMSwgNSwgMjQ5LCAzNSwgMTEsIDUsIDI0OSwgMzAsIDExLCA1LCAyNDksIAorICAgIDMyLCAxMSwgNSwgMjQ5LCAzMSwgMTEsIDUsIDI0OSwgMzQsIDExLCA1LCAyNDksIDMzLCAxMSwgNSwgMjQ5LCA0MSwgMTEsIAorICAgIDUsIDI0OSwgNDAsIDExLCA1LCAyNDksIDQ0LCAxMSwgNSwgMjQ5LCA0MiwgMTEsIDUsIDI0OSwgMjAsIDExLCA1LCAyNDksIAorICAgIDIyLCAxMSwgNSwgMjQ5LCAyMSwgMTEsIDUsIDI0OSwgMjUsIDExLCA1LCAyNDksIDI0LCAxMSwgNSwgMjQ5LCAyNywgMTEsIAorICAgIDUsIDI0OSwgMjYsIDExLCA1LCAyNDksIDM2LCAxMSwgNSwgMjQ5LCAzOSwgMTEsIDUsIDI0OSwgMzcsIDExLCA1LCAyNDksIAorICAgIDE2LCAxMSwgNSwgMjQ5LCAxNSwgMTEsIDUsIDI0OSwgMjMsIDExLCA1LCAyNDksIDE5LCAxMSwgNSwgMjQ5LCAxNywgMTEsIAorICAgIDUsIDI0OSwgMTgsIDExLCA1LCAyNDksIDEyLCAxMSwgNSwgMjQ5LCAxMSwgMTEsIDUsIDI0OSwgMTQsIDExLCA1LCAyNDksIAorICAgIDEzLCAxMSwgNSwgMjIwLCA5NywgMTEsIDUsIDIyMCwgOTYsIDExLCA1LCAyMjAsIDEwMiwgMTEsIDUsIDIyMCwgOTgsIDExLCAKKyAgICA1LCAyMjAsIDk5LCAxMSwgNSwgMjIwLCAxMDEsIDExLCA1LCAyMjAsIDEwMCwgMTEsIDUsIDIyMCwgMTA1LCAxMSwgNSwgCisgICAgMjIwLCAxMDQsIDExLCA1LCAyMjAsIDEwNywgMTEsIDUsIDIyMCwgMTA2LCAxMSwgNSwgMjIwLCA5MywgMTEsIDUsIDIyMCwgCisgICAgOTIsIDExLCA1LCAyMjAsIDk1LCAxMSwgNSwgMjIwLCA5NCwgMTEsIDUsIDIyMCwgODYsIDExLCA1LCAyMjAsIDg1LCAxMSwgCisgICAgNSwgMjIwLCA5MCwgMTEsIDUsIDIyMCwgODksIDExLCA1LCAyMjAsIDg3LCAxMSwgNSwgMjIwLCA4OCwgMTEsIDUsIDIyMCwgCisgICAgODAsIDExLCA1LCAyMjAsIDc5LCAxMSwgNSwgMjIwLCA4NCwgMTEsIDUsIDIyMCwgODMsIDExLCA1LCAyMjAsIDgxLCAxMSwgCisgICAgNSwgMjIwLCA4MiwgMTEsIDUsIDIzMywgMjUxLCAxMSwgNSwgMjMzLCAyNTAsIDExLCA1LCAyMzQsIDAsIDExLCA1LCAyMzMsIAorICAgIDI1MiwgMTEsIDUsIDIzMywgMjUzLCAxMSwgNSwgMjMzLCAyNTUsIDExLCA1LCAyMzMsIDI1NCwgMTEsIDUsIDIzNCwgMywgCisgICAgMTEsIDUsIDIzNCwgMiwgMTEsIDUsIDIzNCwgNSwgMTEsIDUsIDIzNCwgNCwgMTEsIDUsIDIzMywgMjQyLCAxMSwgNSwgMjMzLCAKKyAgICAyNDQsIDExLCA1LCAyMzMsIDI0MywgMTEsIDUsIDIzMywgMjQ3LCAxMSwgNSwgMjMzLCAyNDYsIDExLCA1LCAyMzMsIDI0OSwgCisgICAgMTEsIDUsIDIzMywgMjQ4LCAxMSwgNSwgMjMzLCAyMzgsIDExLCA1LCAyMzMsIDIzNywgMTEsIDUsIDIzMywgMjQ1LCAxMSwgCisgICAgNSwgMjMzLCAyNDEsIDExLCA1LCAyMzMsIDIzOSwgMTEsIDUsIDIzMywgMjQwLCAxMSwgNSwgMjMzLCAyMzIsIDExLCA1LCAKKyAgICAyMzMsIDIzNiwgMTEsIDUsIDIzMywgMjM1LCAxMSwgNSwgMjMzLCAyMzMsIDExLCA1LCAyMzMsIDIzNCwgMTEsIDUsIDIyMSwgCisgICAgMTQ3LCAxMSwgNSwgMjIxLCAxNDYsIDExLCA1LCAyMjEsIDIxMSwgMTEsIDUsIDIyMSwgMTUzLCAxMSwgNSwgMjIxLCAxODMsIAorICAgIDExLCA1LCAyMjEsIDIwMSwgMTEsIDUsIDIyMSwgMTk5LCAxMSwgNSwgMjIyLCAxMjcsIDExLCA1LCAyMjIsIDEyMiwgMTEsIAorICAgIDUsIDE3OCwgMTEsIDUsIDIyMiwgMTY0LCAxMSwgNSwgMjIxLCA4LCAxMSwgNSwgMjIxLCA3LCAxMSwgNSwgMjIxLCAxMSwgCisgICAgMTEsIDUsIDIyMSwgOSwgMTEsIDUsIDIyMSwgNzMsIDExLCA1LCAyMjEsIDQ3LCAxMSwgNSwgMjIxLCAxMzYsIDExLCA1LCAKKyAgICAyMjEsIDc5LCAxMSwgNSwgMjIyLCA3LCAxMSwgNSwgMjIyLCA3NiwgMTEsIDUsIDIyMCwgMjQ0LCAxMSwgNSwgMjIwLCAyNDAsIAorICAgIDExLCA1LCAyMjEsIDQxLCAxMSwgNSwgMjIxLCA0LCAxMSwgNSwgMjIwLCAyNTMsIDExLCA1LCAyMjEsIDIsIDExLCA1LCAKKyAgICAyMjAsIDIxNywgMTEsIDUsIDIyMCwgMjE2LCAxMSwgNSwgMjIwLCAyMjIsIDExLCA1LCAyMjAsIDIxOSwgMTEsIDUsIDIzNywgCisgICAgNjQsIDExLCA1LCAyMzcsIDU4LCAxMSwgNSwgMjM3LCAxMTIsIDExLCA1LCAyMzcsIDc5LCAxMSwgNSwgMjM3LCAxNjAsIDExLCAKKyAgICA1LCAyMzcsIDE1MSwgMTEsIDUsIDIzNywgMTk1LCAxMSwgNSwgMjM3LCAxNjUsIDExLCA1LCAyMzYsIDIyMCwgMTEsIDUsIAorICAgIDIzNywgMTMsIDExLCA1LCAyMzYsIDI1MCwgMTEsIDUsIDIzNiwgMTcyLCAxMSwgNSwgMjM2LCAxNzEsIDExLCA1LCAyMzYsIAorICAgIDE4OSwgMTEsIDUsIDIzNiwgMTc3LCAxMSwgNSwgMjM2LCAxNzUsIDExLCA1LCAyMzYsIDE3NiwgMTEsIDUsIDIzNiwgMTU5LCAKKyAgICAxMSwgNSwgMjM2LCAxNTgsIDExLCA1LCAyMzYsIDE2MiwgMTEsIDUsIDIzNiwgMTYwLCAxMSwgNSwgMjAyLCAyMDAsIDExLCAKKyAgICA1LCAyMDIsIDE5NSwgMTEsIDUsIDIwMiwgMjM0LCAxMSwgNSwgMjAyLCAyMDksIDExLCA1LCAyMDIsIDIyMywgMTEsIDUsIAorICAgIDIwMiwgMjIwLCAxMSwgNSwgMjAyLCAyMjYsIDExLCA1LCAyMDIsIDIyNSwgMTEsIDUsIDIwMywgNjcsIDExLCA1LCAyMDMsIAorICAgIDYyLCAxMSwgNSwgMjAzLCA5MCwgMTEsIDUsIDIwMywgNzksIDExLCA1LCAyMDIsIDE3NSwgMTEsIDUsIDIwMiwgMTcxLCAxMSwgCisgICAgNSwgMjAyLCAxOTMsIDExLCA1LCAyMDIsIDE3NywgMTEsIDUsIDIwMiwgMjM3LCAxMSwgNSwgMjAzLCA0OCwgMTEsIDUsIAorICAgIDIwMSwgMTYwLCAxMSwgNSwgMjAxLCAxNTgsIDExLCA1LCAyMDEsIDE2NiwgMTEsIDUsIDIwMSwgMTYzLCAxMSwgNSwgMjAxLCAKKyAgICAxNjEsIDExLCA1LCAyMDEsIDE2MiwgMTEsIDUsIDIwMSwgMTUxLCAxMSwgNSwgMjAxLCAxNTAsIDExLCA1LCAyMDEsIDE1NSwgCisgICAgMTEsIDUsIDIwMSwgMTU0LCAxMSwgNSwgMjAxLCAxNTIsIDExLCA1LCAyMDEsIDE1MywgMTEsIDUsIDI0MCwgMjQ1LCAxMSwgCisgICAgNSwgMjQwLCAyMzIsIDExLCA1LCAyNDEsIDc2LCAxMSwgNSwgMjQxLCAxNiwgMTEsIDUsIDI0MSwgNTEsIDExLCA1LCAyNDEsIAorICAgIDU2LCAxMSwgNSwgMjQxLCA1NSwgMTEsIDUsIDI0MSwgMjQwLCAxMSwgNSwgMjQxLCAyMzQsIDExLCA1LCAyNDIsIDU4LCAxMSwgCisgICAgNSwgMjQyLCA0LCAxMSwgNSwgMjM5LCAxMTksIDExLCA1LCAyMzksIDEyMCwgMTEsIDUsIDI0MCwgMTgyLCAxMSwgNSwgMjM5LCAKKyAgICAxNjQsIDExLCA1LCAyNDAsIDIxMSwgMTEsIDUsIDI0MCwgMTg0LCAxMSwgNSwgMjQxLCAxMDYsIDExLCA1LCAyNDEsIDE3NSwgCisgICAgMTEsIDUsIDI0MSwgMTI3LCAxMSwgNSwgMjM5LCAxMTAsIDExLCA1LCAyMzksIDEwOCwgMTEsIDUsIDIzOSwgMTM3LCAxMSwgCisgICAgNSwgMjM5LCAxMTgsIDExLCA1LCAyMzksIDExMywgMTEsIDUsIDIzOSwgMTE2LCAxMSwgNSwgMjA1LCAyMTMsIDExLCA1LCAKKyAgICAyMDUsIDIwNSwgMTEsIDUsIDIwNiwgMTUsIDExLCA1LCAyMDUsIDIyMywgMTEsIDUsIDIwNiwgNSwgMTEsIDUsIDIwNiwgNywgCisgICAgMTEsIDUsIDIwNiwgNiwgMTEsIDUsIDIwNiwgMjI2LCAxMSwgNSwgMjA2LCAyMTIsIDExLCA1LCAyMDcsIDM2LCAxMSwgNSwgCisgICAgMjA2LCAyMzYsIDExLCA1LCAyMDQsIDE5NiwgMTEsIDUsIDIwNCwgMTk1LCAxMSwgNSwgMjA0LCAxOTgsIDExLCA1LCAyMDQsIAorICAgIDE5NywgMTEsIDUsIDIwNSwgMTQ0LCAxMSwgNSwgMjA1LCAxMzQsIDExLCA1LCAxMzgsIDExLCA1LCAyMDUsIDE1NywgMTEsIAorICAgIDUsIDIwNiwgMTI4LCAxMSwgNSwgMjA2LCAyMDEsIDExLCA1LCAyMDYsIDE1MywgMTEsIDUsIDIwNCwgMTc5LCAxMSwgNSwgCisgICAgMjA0LCAxNzQsIDExLCA1LCAyMDQsIDIxNSwgMTEsIDUsIDIwNCwgMTk0LCAxMSwgNSwgMjA0LCAxODAsIDExLCA1LCAyMDQsIAorICAgIDE5MiwgMTEsIDUsIDI0MSwgMTkyLCAxMSwgNSwgMjQxLCAxOTEsIDExLCA1LCAyNDEsIDE5NywgMTEsIDUsIDI0MSwgMTkzLCAKKyAgICAxMSwgNSwgMjQxLCAxOTQsIDExLCA1LCAyNDEsIDE5NiwgMTEsIDUsIDI0MSwgMTk1LCAxMSwgNSwgMjQxLCAyMTMsIDExLCAKKyAgICA1LCAyNDEsIDIxMiwgMTEsIDUsIDI0MSwgMjIwLCAxMSwgNSwgMjQxLCAyMTQsIDExLCA1LCAyNDEsIDE4MiwgMTEsIDUsIAorICAgIDI0MSwgMTg0LCAxMSwgNSwgMjQxLCAxODMsIDExLCA1LCAyNDEsIDE4NywgMTEsIDUsIDI0MSwgMTg2LCAxMSwgNSwgMjQxLCAKKyAgICAxOTAsIDExLCA1LCAyNDEsIDE4OCwgMTEsIDUsIDI0MSwgMjA1LCAxMSwgNSwgMjQxLCAyMDgsIDExLCA1LCAyNDEsIDIwNiwgCisgICAgMTEsIDUsIDI0MSwgMTc4LCAxMSwgNSwgMjQxLCAxNzcsIDExLCA1LCAyNDEsIDE4NSwgMTEsIDUsIDI0MSwgMTgxLCAxMSwgCisgICAgNSwgMjQxLCAxNzksIDExLCA1LCAyNDEsIDE4MCwgMTEsIDUsIDIyMCwgNTMsIDExLCA1LCAyMjAsIDUyLCAxMSwgNSwgMjIwLCAKKyAgICA2MCwgMTEsIDUsIDIyMCwgNTUsIDExLCA1LCAyMjAsIDU2LCAxMSwgNSwgMjIwLCA1NywgMTEsIDUsIDIyMCwgNjksIDExLCAKKyAgICA1LCAyMjAsIDY4LCAxMSwgNSwgMjIwLCA3NSwgMTEsIDUsIDIyMCwgNzAsIDExLCA1LCAyMjAsIDQ1LCAxMSwgNSwgMjIwLCAKKyAgICA0NCwgMTEsIDUsIDIyMCwgNTEsIDExLCA1LCAyMjAsIDQ2LCAxMSwgNSwgMjIwLCA2MSwgMTEsIDUsIDIyMCwgNjcsIDExLCAKKyAgICA1LCAyMjAsIDY1LCAxMSwgNSwgMjIwLCAzNywgMTEsIDUsIDIyMCwgMzYsIDExLCA1LCAyMjAsIDQyLCAxMSwgNSwgMjIwLCAKKyAgICA0MCwgMTEsIDUsIDIyMCwgMzgsIDExLCA1LCAyMjAsIDM5LCAxMSwgNSwgMjMzLCAyMTcsIDExLCA1LCAyMzMsIDIxNiwgMTEsIAorICAgIDUsIDIzMywgMjIzLCAxMSwgNSwgMjMzLCAyMTgsIDExLCA1LCAyMzMsIDIyMCwgMTEsIDUsIDIzMywgMjE5LCAxMSwgNSwgCisgICAgMjMzLCAyMjIsIDExLCA1LCAyMzMsIDIyMSwgMTEsIDUsIDIzMywgMjI5LCAxMSwgNSwgMjMzLCAyMjcsIDExLCA1LCAyMzMsIAorICAgIDIzMSwgMTEsIDUsIDIzMywgMjMwLCAxMSwgNSwgMjMzLCAyMTAsIDExLCA1LCAyMzMsIDIxMSwgMTEsIDUsIDIzMywgMjE0LCAKKyAgICAxMSwgNSwgMjMzLCAyMTMsIDExLCA1LCAyMzMsIDIxNSwgMTEsIDUsIDIzMywgMjI0LCAxMSwgNSwgMjMzLCAyMjYsIDExLCAKKyAgICA1LCAyMzMsIDIyNSwgMTEsIDUsIDIzMywgMjA5LCAxMSwgNSwgMjE5LCAxMDIsIDExLCA1LCAyMTksIDEwMCwgMTEsIDUsIAorICAgIDIxOSwgMTUwLCAxMSwgNSwgMjE5LCAxMDUsIDExLCA1LCAyMTksIDEzMiwgMTEsIDUsIDIxOSwgMTQ2LCAxMSwgNSwgMjE5LCAKKyAgICAxNDUsIDExLCA1LCAyMjAsIDExMSwgMTEsIDUsIDE4OCwgMTEsIDUsIDIyMCwgMTI3LCAxMSwgNSwgMjE4LCA4MSwgMTEsIDUsIAorICAgIDIxOCwgODMsIDExLCA1LCAyMTgsIDgyLCAxMSwgNSwgMjE4LCAyMTQsIDExLCA1LCAyMTgsIDE5OSwgMTEsIDUsIDIxOCwgCisgICAgMjQxLCAxMSwgNSwgMjE4LCAyMjUsIDExLCA1LCAyMjAsIDMsIDExLCA1LCAyMjAsIDM0LCAxMSwgNSwgMjIwLCAxOSwgMTEsIAorICAgIDUsIDIxOCwgNzYsIDExLCA1LCAyMTgsIDcyLCAxMSwgNSwgMjE4LCAxMzMsIDExLCA1LCAyMTgsIDgwLCAxMSwgNSwgMjE4LCAKKyAgICA3OCwgMTEsIDUsIDIxOCwgNzksIDExLCA1LCAyMzQsIDI2LCAxMSwgNSwgMjM0LCAyNSwgMTEsIDUsIDIzNCwgMzEsIDExLCAKKyAgICA1LCAyMzQsIDI3LCAxMSwgNSwgMjM0LCAyOCwgMTEsIDUsIDIzNCwgMzAsIDExLCA1LCAyMzQsIDI5LCAxMSwgNSwgMjM0LCAKKyAgICAzNywgMTEsIDUsIDIzNCwgMzUsIDExLCA1LCAyMzQsIDM5LCAxMSwgNSwgMjM0LCAzOCwgMTEsIDUsIDIzNCwgMTgsIDExLCAKKyAgICA1LCAyMzQsIDIwLCAxMSwgNSwgMjM0LCAxOSwgMTEsIDUsIDIzNCwgMjIsIDExLCA1LCAyMzQsIDI0LCAxMSwgNSwgMjM0LCAKKyAgICAyMywgMTEsIDUsIDIzNCwgMzIsIDExLCA1LCAyMzQsIDM0LCAxMSwgNSwgMjM0LCAzMywgMTEsIDUsIDIzNCwgMTQsIDExLCAKKyAgICA1LCAyMzQsIDEzLCAxMSwgNSwgMjM0LCAyMSwgMTEsIDUsIDIzNCwgMTcsIDExLCA1LCAyMzQsIDE1LCAxMSwgNSwgMjM0LCAKKyAgICAxNiwgMTEsIDUsIDIzNCwgOCwgMTEsIDUsIDIzNCwgNywgMTEsIDUsIDIzNCwgMTIsIDExLCA1LCAyMzQsIDExLCAxMSwgNSwgCisgICAgMjM0LCA5LCAxMSwgNSwgMjM0LCAxMCwgMTEsIDUsIDIyNCwgMTUyLCAxMSwgNSwgMjI0LCAxNDQsIDExLCA1LCAyMjQsIAorICAgIDIxMCwgMTEsIDUsIDIyNCwgMTYyLCAxMSwgNSwgMjI0LCAyMDEsIDExLCA1LCAyMjQsIDIwMCwgMTEsIDUsIDIyNCwgMjA0LCAKKyAgICAxMSwgNSwgMjI0LCAyMDIsIDExLCA1LCAyMjUsIDYzLCAxMSwgNSwgMjI1LCA1MSwgMTEsIDUsIDE5NCwgMTEsIDUsIDIyNSwgCisgICAgNzQsIDExLCA1LCAyMjQsIDIwLCAxMSwgNSwgMjI0LCAxOSwgMTEsIDUsIDIyNCwgMjIsIDExLCA1LCAyMjQsIDIxLCAxMSwgCisgICAgNSwgMjI0LCA2NSwgMTEsIDUsIDIyNCwgNTEsIDExLCA1LCAyMjQsIDExMCwgMTEsIDUsIDIyNCwgNzEsIDExLCA1LCAyMjQsIAorICAgIDIyNywgMTEsIDUsIDIyNSwgNDAsIDExLCA1LCAyMjQsIDI0NCwgMTEsIDUsIDIyNCwgMTQsIDExLCA1LCAyMjQsIDEyLCAxMSwgCisgICAgNSwgMjI0LCA0MiwgMTEsIDUsIDIyNCwgMTgsIDExLCA1LCAyMjQsIDE2LCAxMSwgNSwgMjI0LCAxNywgMTEsIDUsIDIyMywgCisgICAgMjQ4LCAxMSwgNSwgMjIzLCAyNDcsIDExLCA1LCAyMjQsIDIsIDExLCA1LCAyMjMsIDI1MSwgMTEsIDUsIDIyMywgMjQ5LCAKKyAgICAxMSwgNSwgMjIzLCAyNTAsIDExLCA1LCAyMzUsIDEzNCwgMTEsIDUsIDIzNSwgMTMzLCAxMSwgNSwgMjM1LCAxNjEsIDExLCAKKyAgICA1LCAyMzUsIDE0NSwgMTEsIDUsIDIzNSwgMTUzLCAxMSwgNSwgMjM1LCAxNTIsIDExLCA1LCAyMzUsIDE1NSwgMTEsIDUsIAorICAgIDIzNSwgMTU0LCAxMSwgNSwgMjM2LCA0MiwgMTEsIDUsIDIzNiwgMzcsIDExLCA1LCAyMzYsIDg5LCAxMSwgNSwgMjM2LCA1MiwgCisgICAgMTEsIDUsIDIzNSwgMjUsIDExLCA1LCAyMzUsIDI0LCAxMSwgNSwgMjM1LCAyNywgMTEsIDUsIDIzNSwgMjYsIDExLCA1LCAKKyAgICAyMzUsIDk0LCAxMSwgNSwgMjM1LCA5MiwgMTEsIDUsIDIzNSwgMTE2LCAxMSwgNSwgMjM1LCAxMDMsIDExLCA1LCAyMzUsIAorICAgIDIzOSwgMTEsIDUsIDIzNSwgMjM3LCAxMSwgNSwgMjM2LCAxNSwgMTEsIDUsIDIzNSwgMjUwLCAxMSwgNSwgMjM1LCAxNCwgCisgICAgMTEsIDUsIDIzNSwgMTMsIDExLCA1LCAyMzUsIDUwLCAxMSwgNSwgMjM1LCAyMywgMTEsIDUsIDIzNSwgMTUsIDExLCA1LCAKKyAgICAyMzUsIDIyLCAxMSwgNSwgMjI2LCAxMjcsIDExLCA1LCAyMjYsIDEyMywgMTEsIDUsIDIyNiwgMTYzLCAxMSwgNSwgMjI2LCAKKyAgICAxNDEsIDExLCA1LCAyMjYsIDE1MiwgMTEsIDUsIDIyNiwgMTU2LCAxMSwgNSwgMjI2LCAxNTQsIDExLCA1LCAyMjcsIDMzLCAKKyAgICAxMSwgNSwgMjI3LCAxNiwgMTEsIDUsIDE2MSwgMTEsIDUsIDIyNywgNjAsIDExLCA1LCAyMjUsIDI0OSwgMTEsIDUsIDIyNSwgCisgICAgMjU0LCAxMSwgNSwgMjI1LCAyNTEsIDExLCA1LCAyMjYsIDU2LCAxMSwgNSwgMjI2LCA1MSwgMTEsIDUsIDIyNiwgODgsIDExLCAKKyAgICA1LCAyMjYsIDYzLCAxMSwgNSwgMjI2LCAyMzMsIDExLCA1LCAyMjYsIDIxNiwgMTEsIDUsIDIyNywgOCwgMTEsIDUsIDIyNiwgCisgICAgMjM3LCAxMSwgNSwgMjI1LCAyMzcsIDExLCA1LCAyMjUsIDIzMywgMTEsIDUsIDIyNiwgMTUsIDExLCA1LCAyMjUsIDI0OCwgCisgICAgMTEsIDUsIDIyNSwgMjQxLCAxMSwgNSwgMjI1LCAyNDUsIDExLCA1LCAyMzUsIDIyMSwgMTEsIDUsIDIzNSwgMjIwLCAxMSwgCisgICAgNSwgMjM1LCAyMjUsIDExLCA1LCAyMzUsIDIyMiwgMTEsIDUsIDIzNSwgMjI0LCAxMSwgNSwgMjM1LCAyMjMsIDExLCA1LCAKKyAgICAyMzUsIDIzMiwgMTEsIDUsIDIzNSwgMjMxLCAxMSwgNSwgMjM1LCAyMzUsIDExLCA1LCAyMzUsIDIzMywgMTEsIDUsIDIzNSwgCisgICAgMjEyLCAxMSwgNSwgMjM1LCAyMTEsIDExLCA1LCAyMzUsIDIxNCwgMTEsIDUsIDIzNSwgMjEzLCAxMSwgNSwgMjM1LCAyMTcsIAorICAgIDExLCA1LCAyMzUsIDIxNiwgMTEsIDUsIDIzNSwgMjE5LCAxMSwgNSwgMjM1LCAyMTgsIDExLCA1LCAyMzUsIDIyNywgMTEsIAorICAgIDUsIDIzNSwgMjI2LCAxMSwgNSwgMjM1LCAyMzAsIDExLCA1LCAyMzUsIDIyOCwgMTEsIDUsIDIzNSwgMjA3LCAxMSwgNSwgCisgICAgMjM1LCAyMDYsIDExLCA1LCAyMzUsIDIxNSwgMTEsIDUsIDIzNSwgMjEwLCAxMSwgNSwgMjM1LCAyMDgsIDExLCA1LCAyMzUsIAorICAgIDIwOSwgMTEsIDUsIDIyMSwgMjMwLCAxMSwgNSwgMjIxLCAyMzEsIDExLCA1LCAyMjEsIDI0OSwgMTEsIDUsIDIyMSwgMjQ4LCAKKyAgICAxMSwgNSwgMjIxLCAyNTEsIDExLCA1LCAyMjEsIDI1MCwgMTEsIDUsIDIyMSwgMjIxLCAxMSwgNSwgMjIxLCAyMjMsIDExLCAKKyAgICA1LCAyMjEsIDIyMiwgMTEsIDUsIDIyMSwgMjI2LCAxMSwgNSwgMjIxLCAyMjUsIDExLCA1LCAyMjEsIDIyOCwgMTEsIDUsIAorICAgIDIyMSwgMjI3LCAxMSwgNSwgMjIxLCAyMzIsIDExLCA1LCAyMjEsIDIzNCwgMTEsIDUsIDIyMSwgMjMzLCAxMSwgNSwgMjIxLCAKKyAgICAyMTcsIDExLCA1LCAyMjEsIDIxNiwgMTEsIDUsIDIyMSwgMjI0LCAxMSwgNSwgMjIxLCAyMjAsIDExLCA1LCAyMjEsIDIxOCwgCisgICAgMTEsIDUsIDIyMSwgMjE5LCAxMSwgNSwgMjMzLCA0NywgMTEsIDUsIDIzMywgNDYsIDExLCA1LCAyMzMsIDUzLCAxMSwgNSwgCisgICAgMjMzLCA0OCwgMTEsIDUsIDIzMywgNTAsIDExLCA1LCAyMzMsIDQ5LCAxMSwgNSwgMjMzLCA1MiwgMTEsIDUsIDIzMywgNTEsIAorICAgIDExLCA1LCAyMzMsIDU4LCAxMSwgNSwgMjMzLCA1NywgMTEsIDUsIDIzMywgNjAsIDExLCA1LCAyMzMsIDU5LCAxMSwgNSwgCisgICAgMjMzLCAzOSwgMTEsIDUsIDIzMywgMzgsIDExLCA1LCAyMzMsIDQxLCAxMSwgNSwgMjMzLCA0MCwgMTEsIDUsIDIzMywgNDMsIAorICAgIDExLCA1LCAyMzMsIDQyLCAxMSwgNSwgMjMzLCA0NSwgMTEsIDUsIDIzMywgNDQsIDExLCA1LCAyMzMsIDU0LCAxMSwgNSwgCisgICAgMjMzLCA1NiwgMTEsIDUsIDIzMywgNTUsIDExLCA1LCAyMTksIDE5OCwgMTEsIDUsIDIxOSwgMjAwLCAxMSwgNSwgMjE5LCAKKyAgICAxOTksIDExLCA1LCAyMTksIDI0MywgMTEsIDUsIDIxOSwgMjQxLCAxMSwgNSwgMjE5LCAyNTMsIDExLCA1LCAyMTksIDI0NiwgCisgICAgMTEsIDUsIDIxOSwgMTYwLCAxMSwgNSwgMjE5LCAxNTksIDExLCA1LCAyMTksIDE2MSwgMTEsIDUsIDIxOSwgMTcwLCAxMSwgCisgICAgNSwgMjE5LCAxNjcsIDExLCA1LCAyMTksIDE3OCwgMTEsIDUsIDIxOSwgMTcyLCAxMSwgNSwgMjE5LCAyMzQsIDExLCA1LCAKKyAgICAyMTksIDI0MCwgMTEsIDUsIDIxOSwgMjM2LCAxMSwgNSwgMjM0LCA0NSwgMTEsIDUsIDIzNCwgNjAsIDExLCA1LCAyMzQsIAorICAgIDY5LCAxMSwgNSwgMjM0LCAxNTcsIDExLCA1LCAyMzQsIDE0NiwgMTEsIDUsIDE0NCwgMTEsIDUsIDIzNCwgMTY4LCAxMSwgNSwgCisgICAgMjMzLCA3NiwgMTEsIDUsIDIzMywgNzUsIDExLCA1LCAyMzMsIDc4LCAxMSwgNSwgMjMzLCA3NywgMTEsIDUsIDIzMywgMTE3LCAKKyAgICAxMSwgNSwgMjMzLCAxMDgsIDExLCA1LCAyMzMsIDIwNywgMTEsIDUsIDIzMywgMTgwLCAxMSwgNSwgMjM0LCA5MCwgMTEsIDUsIAorICAgIDIzNCwgMTM5LCAxMSwgNSwgMjM0LCAxMDIsIDExLCA1LCAyMDEsIDg1LCAxMSwgNSwgMjAxLCA3MCwgMTEsIDUsIDIwMSwgCisgICAgMTE0LCAxMSwgNSwgMjAxLCA5NiwgMTEsIDUsIDIwMCwgMjA1LCAxMSwgNSwgMjAwLCAyMDcsIDExLCA1LCAyMDAsIDIwNiwgCisgICAgMTEsIDUsIDIwMCwgMjI5LCAxMSwgNSwgMjAxLCAwLCAxMSwgNSwgMjAwLCAyMzksIDExLCA1LCAyMDEsIDQzLCAxMSwgNSwgCisgICAgMjAxLCA2NCwgMTEsIDUsIDIwMSwgNDksIDExLCA1LCAxOTksIDIxLCAxMSwgNSwgMTk5LCAyMCwgMTEsIDUsIDE5OSwgMzYsIAorICAgIDExLCA1LCAxOTksIDI0LCAxMSwgNSwgMTk5LCAyOSwgMTEsIDUsIDE5OSwgMzEsIDExLCA1LCAxOTksIDMwLCAxMSwgNSwgCisgICAgMTk5LCA5NywgMTEsIDUsIDE5OSwgOTQsIDExLCA1LCAxOTksIDExNCwgMTEsIDUsIDE5OSwgMTAxLCAxMSwgNSwgMTk4LCAKKyAgICAyNTIsIDExLCA1LCAxOTgsIDI1NCwgMTEsIDUsIDE5OCwgMjUzLCAxMSwgNSwgMTk5LCAxMCwgMTEsIDUsIDE5OSwgOSwgMTEsIAorICAgIDUsIDE5OSwgMTQsIDExLCA1LCAxOTksIDExLCAxMSwgNSwgMTk5LCA3OSwgMTEsIDUsIDE5OSwgODksIDExLCA1LCAxOTksIAorICAgIDgzLCAxMSwgNSwgMTk4LCAyNDgsIDExLCA1LCAxOTgsIDI0NywgMTEsIDUsIDE5OSwgMywgMTEsIDUsIDE5OCwgMjUxLCAxMSwgCisgICAgNSwgMTk4LCAyNDksIDExLCA1LCAxOTgsIDI1MCwgMTEsIDUsIDE5OCwgMjM0LCAxMSwgNSwgMTk4LCAyMzMsIDExLCA1LCAKKyAgICAxOTgsIDIzOSwgMTEsIDUsIDE5OCwgMjM3LCAxMSwgNSwgMTk4LCAyMzUsIDExLCA1LCAxOTgsIDIzNiwgMTEsIDUsIDI0NiwgCisgICAgMTQ0LCAxMSwgNSwgMjQ2LCAxMzcsIDExLCA1LCAyNDYsIDE3MywgMTEsIDUsIDI0NiwgMTU3LCAxMSwgNSwgMjQ2LCAxNzAsIAorICAgIDExLCA1LCAyNDYsIDE2NCwgMTEsIDUsIDI0NiwgMTcyLCAxMSwgNSwgMjQ2LCAxNzEsIDExLCA1LCAyNDcsIDExMSwgMTEsIAorICAgIDUsIDI0NywgMTAzLCAxMSwgNSwgMjQ3LCAxOTAsIDExLCA1LCAyNDcsIDE0NCwgMTEsIDUsIDI0MiwgMjA0LCAxMSwgNSwgCisgICAgMjQyLCAyMDYsIDExLCA1LCAyNDIsIDIwNSwgMTEsIDUsIDI0MywgOCwgMTEsIDUsIDI0MiwgMjUzLCAxMSwgNSwgMjQ2LCAKKyAgICA5MSwgMTEsIDUsIDI0MywgMjUsIDExLCA1LCAyNDcsIDQwLCAxMSwgNSwgMjQ3LCA3NiwgMTEsIDUsIDI0NywgNDUsIDExLCAKKyAgICA1LCAyNDIsIDE3OSwgMTEsIDUsIDI0MiwgMTc3LCAxMSwgNSwgMjQyLCAyMTQsIDExLCA1LCAyNDIsIDIwMiwgMTEsIDUsIAorICAgIDI0MiwgMTg1LCAxMSwgNSwgMjQyLCAxOTksIDExLCA1LCAyNDIsIDE1NiwgMTEsIDUsIDI0MiwgMTU1LCAxMSwgNSwgMjQyLCAKKyAgICAxNjgsIDExLCA1LCAyNDIsIDE2MiwgMTEsIDUsIDI0MiwgMTU3LCAxMSwgNSwgMjQyLCAxNTksIDExLCA1LCAxOTgsIDIxNywgCisgICAgMTEsIDUsIDE5OCwgMjE2LCAxMSwgNSwgMTk4LCAyMjMsIDExLCA1LCAxOTgsIDIxOCwgMTEsIDUsIDE5OCwgMjIwLCAxMSwgCisgICAgNSwgMTk4LCAyMTksIDExLCA1LCAxOTgsIDIyMiwgMTEsIDUsIDE5OCwgMjIxLCAxMSwgNSwgMTk4LCAyMjksIDExLCA1LCAKKyAgICAxOTgsIDIyOCwgMTEsIDUsIDE5OCwgMjMyLCAxMSwgNSwgMTk4LCAyMzAsIDExLCA1LCAxOTgsIDIxMywgMTEsIDUsIDE5OCwgCisgICAgMjE1LCAxMSwgNSwgMTk4LCAyMTQsIDExLCA1LCAxOTgsIDIyNCwgMTEsIDUsIDE5OCwgMjI3LCAxMSwgNSwgMTk4LCAyMjUsIAorICAgIDExLCA1LCAxOTgsIDIwNiwgMTEsIDUsIDE5OCwgMjEwLCAxMSwgNSwgMTk4LCAyMDksIDExLCA1LCAxOTgsIDIwNywgMTEsIAorICAgIDUsIDE5OCwgMjA4LCAxMSwgNSwgMTk4LCAyMDAsIDExLCA1LCAxOTgsIDE5OSwgMTEsIDUsIDE5OCwgMjA1LCAxMSwgNSwgCisgICAgMTk4LCAyMDMsIDExLCA1LCAxOTgsIDIwMSwgMTEsIDUsIDE5OCwgMjAyLCAxMSwgNSwgMjE3LCAyNTAsIDExLCA1LCAyMTcsIAorICAgIDI0OSwgMTEsIDUsIDIxNywgMjU1LCAxMSwgNSwgMjE3LCAyNTEsIDExLCA1LCAyMTcsIDI1MiwgMTEsIDUsIDIxNywgMjU0LCAKKyAgICAxMSwgNSwgMjE3LCAyNTMsIDExLCA1LCAyMTgsIDQsIDExLCA1LCAyMTgsIDMsIDExLCA1LCAyMTgsIDcsIDExLCA1LCAyMTgsIAorICAgIDYsIDExLCA1LCAyMTcsIDI0MywgMTEsIDUsIDIxNywgMjQ0LCAxMSwgNSwgMjE3LCAyNDcsIDExLCA1LCAyMTcsIDI0OCwgCisgICAgMTEsIDUsIDIxOCwgMCwgMTEsIDUsIDIxOCwgMiwgMTEsIDUsIDIxNywgMjM4LCAxMSwgNSwgMjE3LCAyNDYsIDExLCA1LCAKKyAgICAyMTcsIDI0MiwgMTEsIDUsIDIxNywgMjM5LCAxMSwgNSwgMjE3LCAyNDAsIDExLCA1LCAyMTcsIDIzMywgMTEsIDUsIDIxNywgCisgICAgMjMyLCAxMSwgNSwgMjE3LCAyMzcsIDExLCA1LCAyMTcsIDIzNiwgMTEsIDUsIDIxNywgMjM0LCAxMSwgNSwgMjE3LCAyMzUsIAorICAgIDExLCA1LCAyMDksIDEwOCwgMTEsIDUsIDE4NywgMTEsIDUsIDIwOSwgMTgyLCAxMSwgNSwgMjA5LCAxMTEsIDExLCA1LCAKKyAgICAyMDksIDE2OSwgMTEsIDUsIDIwOSwgMTcyLCAxMSwgNSwgMjA5LCAxNzAsIDExLCA1LCAyMTEsIDI1MSwgMTEsIDUsIDIxMSwgCisgICAgMjM3LCAxMSwgNSwgMjEyLCA2NCwgMTEsIDUsIDIxMiwgMywgMTEsIDUsIDIwNywgMjE4LCAxMSwgNSwgMjA3LCAyMjAsIDExLCAKKyAgICA1LCAyMDcsIDIxOSwgMTEsIDUsIDIwOSwgNCwgMTEsIDUsIDIwOCwgMjQ5LCAxMSwgNSwgMjA5LCAyOSwgMTEsIDUsIDIwOSwgCisgICAgOCwgMTEsIDUsIDIxMCwgMTI3LCAxMSwgNSwgMjExLCAyMDIsIDExLCA1LCAyMTAsIDE1NiwgMTEsIDUsIDIwNywgMTk1LCAKKyAgICAxMSwgNSwgMjA3LCAxOTIsIDExLCA1LCAyMDgsIDI0LCAxMSwgNSwgMjA3LCAyMTcsIDExLCA1LCAyMDcsIDE5OSwgMTEsIDUsIAorICAgIDIwNywgMjA3LCAxMSwgNSwgMjA3LCA5NywgMTEsIDUsIDIwNywgOTYsIDExLCA1LCAyMDcsIDE2NSwgMTEsIDUsIDIwNywgCisgICAgMTA1LCAxMSwgNSwgMjA3LCA5OSwgMTEsIDUsIDIwNywgMTA0LCAxMSwgNSwgMjA4LCAxNDEsIDExLCA1LCAyMDgsIDE0MCwgCisgICAgMTEsIDUsIDIwOCwgMTQ3LCAxMSwgNSwgMjA4LCAxNDIsIDExLCA1LCAyMDgsIDE0NCwgMTEsIDUsIDIwOCwgMTQ2LCAxMSwgCisgICAgNSwgMjA4LCAxNDUsIDExLCA1LCAyMDgsIDE1NiwgMTEsIDUsIDIwOCwgMTU0LCAxMSwgNSwgMjA4LCAxNzksIDExLCA1LCAKKyAgICAyMDgsIDE1NywgMTEsIDUsIDIwOCwgMTM2LCAxMSwgNSwgMjA4LCAxMzUsIDExLCA1LCAyMDgsIDEzOSwgMTEsIDUsIDIwOCwgCisgICAgMTM3LCAxMSwgNSwgMjA4LCAxNTAsIDExLCA1LCAyMDgsIDE1MywgMTEsIDUsIDIwOCwgMTUxLCAxMSwgNSwgMjA4LCAxMzIsIAorICAgIDExLCA1LCAyMDgsIDEzMCwgMTEsIDUsIDIwOCwgMTM0LCAxMSwgNSwgMjA4LCAxMzMsIDExLCA1LCAyMDgsIDEyNSwgMTEsIAorICAgIDUsIDIwOCwgMTI0LCAxMSwgNSwgMjA4LCAxMjksIDExLCA1LCAyMDgsIDEyOCwgMTEsIDUsIDIwOCwgMTI2LCAxMSwgNSwgCisgICAgMjA4LCAxMjcsIDExLCA1LCAxOTksIDcyLCAxMSwgNSwgMTk5LCA3MSwgMTEsIDUsIDE5OSwgNzcsIDExLCA1LCAxOTksIDc0LCAKKyAgICAxMSwgNSwgMTk5LCA1MSwgMTEsIDUsIDE5OSwgNTMsIDExLCA1LCAxOTksIDUyLCAxMSwgNSwgMTk5LCA1NiwgMTEsIDUsIAorICAgIDE5OSwgNTUsIDExLCA1LCAxOTksIDYwLCAxMSwgNSwgMTk5LCA1NywgMTEsIDUsIDE5OSwgNjUsIDExLCA1LCAxOTksIDY0LCAKKyAgICAxMSwgNSwgMTk5LCA2OCwgMTEsIDUsIDE5OSwgNjYsIDExLCA1LCAxOTksIDQ3LCAxMSwgNSwgMTk5LCA0NiwgMTEsIDUsIAorICAgIDE5OSwgNTQsIDExLCA1LCAxOTksIDUwLCAxMSwgNSwgMTk5LCA0OCwgMTEsIDUsIDE5OSwgNDksIDExLCA1LCAxOTksIDM5LCAKKyAgICAxMSwgNSwgMTk5LCAzOCwgMTEsIDUsIDE5OSwgNDMsIDExLCA1LCAxOTksIDQyLCAxMSwgNSwgMTk5LCA0MCwgMTEsIDUsIAorICAgIDE5OSwgNDEsIDExLCA1LCAyNDcsIDE0LCAxMSwgNSwgMjQ3LCAxMCwgMTEsIDUsIDI0NywgMzcsIDExLCA1LCAyNDcsIDIzLCAKKyAgICAxMSwgNSwgMjQ2LCAxODgsIDExLCA1LCAyNDYsIDE4NywgMTEsIDUsIDI0NiwgMTkwLCAxMSwgNSwgMjQ2LCAxODksIDExLCAKKyAgICA1LCAyNDYsIDIwMywgMTEsIDUsIDI0NiwgMjAyLCAxMSwgNSwgMjQ2LCAyMTAsIDExLCA1LCAyNDYsIDIwNSwgMTEsIDUsIAorICAgIDI0NiwgMjQxLCAxMSwgNSwgMjQ2LCAyMzksIDExLCA1LCAyNDcsIDgsIDExLCA1LCAyNDYsIDI0OSwgMTEsIDUsIDI0NiwgCisgICAgMTgyLCAxMSwgNSwgMjQ2LCAxOTIsIDExLCA1LCAyNDYsIDE4NiwgMTEsIDUsIDI0NiwgMTgzLCAxMSwgNSwgMjQ2LCAxODUsIAorICAgIDExLCA1LCAyNDYsIDE3NSwgMTEsIDUsIDI0NiwgMTc0LCAxMSwgNSwgMjQ2LCAxNzksIDExLCA1LCAyNDYsIDE3OCwgMTEsIAorICAgIDUsIDI0NiwgMTc2LCAxMSwgNSwgMjQ2LCAxNzcsIDExLCA1LCAyMTIsIDIxMSwgMTEsIDUsIDIxMiwgMjE1LCAxMSwgNSwgCisgICAgMjEyLCAxOTMsIDExLCA1LCAyMTIsIDE5NCwgMTEsIDUsIDIxMiwgMTk4LCAxMSwgNSwgMjEyLCAxOTcsIDExLCA1LCAyMTIsIAorICAgIDIwMSwgMTEsIDUsIDIxMiwgMTk5LCAxMSwgNSwgMjEyLCAyMDUsIDExLCA1LCAyMTIsIDIwNCwgMTEsIDUsIDIxMiwgMjEwLCAKKyAgICAxMSwgNSwgMjEyLCAyMDYsIDExLCA1LCAyMTIsIDE4OSwgMTEsIDUsIDIxMiwgMTg3LCAxMSwgNSwgMjEyLCAxOTUsIDExLCAKKyAgICA1LCAyMTIsIDE5MiwgMTEsIDUsIDIxMiwgMTkwLCAxMSwgNSwgMjEyLCAxOTEsIDExLCA1LCAyMTIsIDE4MiwgMTEsIDUsIAorICAgIDIxMiwgMTgxLCAxMSwgNSwgMjEyLCAxODYsIDExLCA1LCAyMTIsIDE4NSwgMTEsIDUsIDIxMiwgMTgzLCAxMSwgNSwgMjEyLCAKKyAgICAxODQsIDExLCA1LCAyMTgsIDE5NCwgMTEsIDUsIDIxOCwgMTkzLCAxMSwgNSwgMjE4LCAxOTYsIDExLCA1LCAyMTgsIDE5NSwgCisgICAgMTEsIDUsIDIxOCwgMTg1LCAxMSwgNSwgMjE4LCAxODcsIDExLCA1LCAyMTgsIDE4NiwgMTEsIDUsIDIxOCwgMTg5LCAxMSwgCisgICAgNSwgMjE4LCAxODgsIDExLCA1LCAyMTgsIDE5MiwgMTEsIDUsIDIxOCwgMTkxLCAxMSwgNSwgMjE4LCAxNzksIDExLCA1LCAKKyAgICAyMTgsIDE3OCwgMTEsIDUsIDIxOCwgMTg0LCAxMSwgNSwgMjE4LCAxODIsIDExLCA1LCAyMTgsIDE4MCwgMTEsIDUsIDIxOCwgCisgICAgMTgxLCAxMSwgNSwgMjE4LCAxNzMsIDExLCA1LCAyMTgsIDE3MiwgMTEsIDUsIDIxOCwgMTc3LCAxMSwgNSwgMjE4LCAxNzYsIAorICAgIDExLCA1LCAyMTgsIDE3NCwgMTEsIDUsIDIxOCwgMTc1LCAxMSwgNSwgMjEwLCA3NSwgMTEsIDUsIDIxMCwgNzAsIDExLCA1LCAKKyAgICAyMTAsIDExNCwgMTEsIDUsIDIxMCwgODcsIDExLCA1LCAyMDksIDIwOSwgMTEsIDUsIDIwOSwgMjExLCAxMSwgNSwgMjA5LCAKKyAgICAyMTAsIDExLCA1LCAyMDksIDIzNCwgMTEsIDUsIDIwOSwgMjMwLCAxMSwgNSwgMjEwLCA4LCAxMSwgNSwgMjA5LCAyNTQsIAorICAgIDExLCA1LCAyMTAsIDQzLCAxMSwgNSwgMjEwLCAzNiwgMTEsIDUsIDIxMCwgNjUsIDExLCA1LCAyMTAsIDUyLCAxMSwgNSwgCisgICAgMjA5LCAyMDUsIDExLCA1LCAyMDksIDIwMiwgMTEsIDUsIDIwOSwgMjIwLCAxMSwgNSwgMjA5LCAyMDgsIDExLCA1LCAyMDksIAorICAgIDIwNiwgMTEsIDUsIDIwOSwgMjA3LCAxMSwgNSwgMjA5LCAxODUsIDExLCA1LCAyMDksIDE4NCwgMTEsIDUsIDIwOSwgMTkxLCAKKyAgICAxMSwgNSwgMjA5LCAxODgsIDExLCA1LCAyMDksIDE4NiwgMTEsIDUsIDIwOSwgMTg3LCAxMSwgNSwgMjEzLCAyMDQsIDExLCAKKyAgICA1LCAyMTMsIDE5OCwgMTEsIDUsIDIxMywgMjUyLCAxMSwgNSwgMjEzLCAyMTAsIDExLCA1LCAyMTIsIDE1MSwgMTEsIDUsIAorICAgIDIxMiwgMTUzLCAxMSwgNSwgMjEyLCAxNTIsIDExLCA1LCAyMTIsIDIyOSwgMTEsIDUsIDIxMiwgMjE3LCAxMSwgNSwgMjEzLCAKKyAgICAxLCAxMSwgNSwgMjEyLCAyMzMsIDExLCA1LCAyMTMsIDk4LCAxMSwgNSwgMjEzLCAxOTAsIDExLCA1LCAyMTMsIDEzNywgMTEsIAorICAgIDUsIDIxMiwgMTQ0LCAxMSwgNSwgMjEyLCAxNDEsIDExLCA1LCAyMTIsIDE3NSwgMTEsIDUsIDIxMiwgMTUwLCAxMSwgNSwgCisgICAgMjEyLCAxNDYsIDExLCA1LCAyMTIsIDE0NywgMTEsIDUsIDIxMiwgMTI2LCAxMSwgNSwgMjEyLCAxMjUsIDExLCA1LCAyMTIsIAorICAgIDEzMSwgMTEsIDUsIDIxMiwgMTI5LCAxMSwgNSwgMjEyLCAxMjcsIDExLCA1LCAyMTIsIDEyOCwgMTEsIDUsIDIyNywgMTk2LCAKKyAgICAxMSwgNSwgMjI3LCAxOTUsIDExLCA1LCAyMjcsIDIwNywgMTEsIDUsIDIyNywgMTk3LCAxMSwgNSwgMjI3LCAyMDMsIDExLCAKKyAgICA1LCAyMjcsIDIwMiwgMTEsIDUsIDIyNywgMjA1LCAxMSwgNSwgMjI3LCAyMDQsIDExLCA1LCAyMjcsIDEzNiwgMTEsIDUsIAorICAgIDIyNywgMTM1LCAxMSwgNSwgMjI3LCAxMzgsIDExLCA1LCAyMjcsIDEzNywgMTEsIDUsIDIyNywgMTUzLCAxMSwgNSwgMjI3LCAKKyAgICAxNTEsIDExLCA1LCAyMjcsIDE2NiwgMTEsIDUsIDIyNywgMTU1LCAxMSwgNSwgMjI3LCAxMjksIDExLCA1LCAyMjcsIDEyNywgCisgICAgMTEsIDUsIDIyNywgMTQ3LCAxMSwgNSwgMjI3LCAxMzQsIDExLCA1LCAyMjcsIDEzMSwgMTEsIDUsIDIyNywgMTMyLCAxMSwgCisgICAgNSwgMjI3LCAxMjEsIDExLCA1LCAyMjcsIDEyMCwgMTEsIDUsIDIyNywgMTI1LCAxMSwgNSwgMjI3LCAxMjQsIDExLCA1LCAKKyAgICAyMjcsIDEyMiwgMTEsIDUsIDIyNywgMTIzLCAxMSwgNSwgMjE0LCAxMTMsIDExLCA1LCAyMTQsIDExMSwgMTEsIDUsIDIxNCwgCisgICAgMTIxLCAxMSwgNSwgMjE0LCAxMTQsIDExLCA1LCAyMTQsIDExOCwgMTEsIDUsIDIxNCwgMTE3LCAxMSwgNSwgMjE0LCAxMjAsIAorICAgIDExLCA1LCAyMTQsIDExOSwgMTEsIDUsIDIxNCwgNjQsIDExLCA1LCAyMTQsIDYxLCAxMSwgNSwgMjE0LCA2NiwgMTEsIDUsIAorICAgIDIxNCwgNjUsIDExLCA1LCAyMTQsIDEwMCwgMTEsIDUsIDIxNCwgOTksIDExLCA1LCAyMTQsIDEwOSwgMTEsIDUsIDIxNCwgCisgICAgMTAzLCAxMSwgNSwgMjE0LCA1NiwgMTEsIDUsIDIxNCwgNTIsIDExLCA1LCAyMTQsIDk3LCAxMSwgNSwgMjE0LCA2MCwgMTEsIAorICAgIDUsIDIxNCwgNTgsIDExLCA1LCAyMTQsIDU5LCAxMSwgNSwgMjE0LCAzNiwgMTEsIDUsIDIxNCwgMzQsIDExLCA1LCAyMTQsIAorICAgIDQ2LCAxMSwgNSwgMjE0LCAzOSwgMTEsIDUsIDIxNCwgMzcsIDExLCA1LCAyMTQsIDM4LCAxMSwgNSwgMjI3LCAxODUsIDExLCAKKyAgICA1LCAyMjcsIDE4NCwgMTEsIDUsIDIyNywgMTkxLCAxMSwgNSwgMjI3LCAxODYsIDExLCA1LCAyMjcsIDE4OCwgMTEsIDUsIAorICAgIDIyNywgMTg3LCAxMSwgNSwgMjI3LCAxOTAsIDExLCA1LCAyMjcsIDE4OSwgMTEsIDUsIDIyNywgMTc2LCAxMSwgNSwgMjI3LCAKKyAgICAxNzgsIDExLCA1LCAyMjcsIDE3NywgMTEsIDUsIDIyNywgMTgxLCAxMSwgNSwgMjI3LCAxODAsIDExLCA1LCAyMjcsIDE4MywgCisgICAgMTEsIDUsIDIyNywgMTgyLCAxMSwgNSwgMjI3LCAxNzIsIDExLCA1LCAyMjcsIDE3MSwgMTEsIDUsIDIyNywgMTc5LCAxMSwgCisgICAgNSwgMjI3LCAxNzUsIDExLCA1LCAyMjcsIDE3MywgMTEsIDUsIDIyNywgMTc0LCAxMSwgNSwgMjI3LCAxNjgsIDExLCA1LCAKKyAgICAyMjcsIDE2NywgMTEsIDUsIDIyNywgMTcwLCAxMSwgNSwgMjI3LCAxNjksIDExLCA1LCAyMTksIDc1LCAxMSwgNSwgMjE5LCAKKyAgICA3NCwgMTEsIDUsIDIxOSwgODIsIDExLCA1LCAyMTksIDc2LCAxMSwgNSwgMjE5LCA3OCwgMTEsIDUsIDIxOSwgNzcsIDExLCAKKyAgICA1LCAyMTksIDgxLCAxMSwgNSwgMjE5LCA3OSwgMTEsIDUsIDIxOSwgNjQsIDExLCA1LCAyMTksIDY1LCAxMSwgNSwgMjE5LCAKKyAgICA3MCwgMTEsIDUsIDIxOSwgNjksIDExLCA1LCAyMTksIDczLCAxMSwgNSwgMjE5LCA3MSwgMTEsIDUsIDIxOSwgNTksIDExLCAKKyAgICA1LCAyMTksIDY4LCAxMSwgNSwgMjE5LCA2MywgMTEsIDUsIDIxOSwgNjAsIDExLCA1LCAyMTksIDYxLCAxMSwgNSwgMjE5LCAKKyAgICA1NCwgMTEsIDUsIDIxOSwgNTMsIDExLCA1LCAyMTksIDU4LCAxMSwgNSwgMjE5LCA1NywgMTEsIDUsIDIxOSwgNTUsIDExLCAKKyAgICA1LCAyMTksIDU2LCAxMSwgNSwgMjE4LCAyOSwgMTEsIDUsIDIxOCwgMjgsIDExLCA1LCAyMTgsIDQxLCAxMSwgNSwgMjE4LCAKKyAgICAzMywgMTEsIDUsIDIxOCwgMzgsIDExLCA1LCAyMTgsIDM3LCAxMSwgNSwgMjE4LCA0MCwgMTEsIDUsIDIxOCwgMzksIDExLCAKKyAgICA1LCAyMTgsIDE0LCAxMSwgNSwgMjE4LCAxNiwgMTEsIDUsIDIxOCwgMTUsIDExLCA1LCAyMTgsIDIxLCAxMSwgNSwgMjE4LCAKKyAgICAyMCwgMTEsIDUsIDIxOCwgMjYsIDExLCA1LCAyMTgsIDIyLCAxMSwgNSwgMjE4LCAxMiwgMTEsIDUsIDIxOCwgMTAsIDExLCAKKyAgICA1LCAyMTgsIDE5LCAxMSwgNSwgMjE4LCAxMywgMTEsIDUsIDIwMCwgMTYxLCAxMSwgNSwgMjAwLCAxNjAsIDExLCA1LCAyMDAsIAorICAgIDE2OSwgMTEsIDUsIDIwMCwgMTYzLCAxMSwgNSwgMjAwLCAxNjUsIDExLCA1LCAyMDAsIDE2NCwgMTEsIDUsIDIwMCwgMTY3LCAKKyAgICAxMSwgNSwgMjAwLCAxNjYsIDExLCA1LCAyMDAsIDE0OSwgMTEsIDUsIDIwMCwgMTUwLCAxMSwgNSwgMjAwLCAxNTQsIDExLCAKKyAgICA1LCAyMDAsIDE1MywgMTEsIDUsIDIwMCwgMTU5LCAxMSwgNSwgMjAwLCAxNTcsIDExLCA1LCAyMDAsIDEyNywgMTEsIDUsIAorICAgIDIwMCwgMTI1LCAxMSwgNSwgMjAwLCAxNDAsIDExLCA1LCAyMDAsIDEzMCwgMTEsIDUsIDIwMCwgMTI4LCAxMSwgNSwgMjAwLCAKKyAgICAxMjksIDExLCA1LCAxOTksIDI1MSwgMTEsIDUsIDE5OSwgMjQ5LCAxMSwgNSwgMjAwLCA5LCAxMSwgNSwgMTk5LCAyNTIsIAorICAgIDExLCA1LCAyMDAsIDMsIDExLCA1LCAyMDAsIDIsIDExLCA1LCAyMDAsIDYsIDExLCA1LCAyMDAsIDQsIDExLCA1LCAxOTksIAorICAgIDE4OSwgMTEsIDUsIDE5OSwgMTg4LCAxMSwgNSwgMTk5LCAxOTIsIDExLCA1LCAxOTksIDE5MCwgMTEsIDUsIDE5OSwgMjI1LCAKKyAgICAxMSwgNSwgMTk5LCAyMjEsIDExLCA1LCAxOTksIDI0NSwgMTEsIDUsIDE5OSwgMjI5LCAxMSwgNSwgMTk5LCAxODAsIDExLCAKKyAgICA1LCAxOTksIDE3NiwgMTEsIDUsIDE5OSwgMjExLCAxMSwgNSwgMTk5LCAxODcsIDExLCA1LCAxOTksIDE4MywgMTEsIDUsIAorICAgIDE5OSwgMTg0LCAxMSwgNSwgMTk5LCAxNjAsIDExLCA1LCAxOTksIDE1OSwgMTEsIDUsIDE5OSwgMTY3LCAxMSwgNSwgMTk5LCAKKyAgICAxNjMsIDExLCA1LCAxOTksIDE2MSwgMTEsIDUsIDE5OSwgMTYyLCAxMSwgNDIsIDIxNCwgMTAwLCAxMSwgNDIsIDIyNCwgCisgICAgMjEwLCAxMSwgNDIsIDIyNiwgMTI3LCAxMSwgNDIsIDIxOCwgMzMsIDExLCA0MiwgMjQyLCAxNjIsIDExLCA0MiwgMjA4LCAKKyAgICAxNDcsIDExLCA0MiwgMjM1LCAyMTgsIDExLCA0MiwgMjM1LCAyNTAsIDExLCA0MiwgMjIxLCAyMTEsIDExLCA0MiwgMjMzLCAKKyAgICA0NywgMTEsIDQyLCAyMjMsIDI1MCwgMTEsIDQyLCAyNDksIDE2LCAxMSwgNDIsIDIyMSwgNzksIDExLCA0MiwgMTk5LCAyNDUsIAorICAgIDExLCA0MiwgMjE0LCAxOTIsIDExLCA0MiwgMjMzLCA0MSwgMTEsIDQyLCAyMDYsIDIyNiwgMTEsIDQyLCAyMzYsIDg5LCAxMSwgCisgICAgNDIsIDE5OCwgMjUxLCAxMSwgNDIsIDI0MiwgMTU2LCAxMSwgNDIsIDI0MSwgMTgwLCAxMSwgNDIsIDI0OCwgMywgMTEsIDQyLCAKKyAgICAyMzUsIDIxNCwgMTEsIDQyLCAyMTgsIDIyLCAxMSwgNDIsIDIwNCwgMjE1LCAxMSwgNDIsIDIxNywgNTQsIDExLCA0MiwgCisgICAgMjI3LCAxNzIsIDExLCA0MiwgMTk5LCAxMCwgMTEsIDQyLCAyMTQsIDE3MSwgMTEsIDQyLCAyMzMsIDI0OSwgMTEsIDQyLCAKKyAgICAxOTksIDI1MSwgMTEsIDQyLCAyMDEsIDE2MiwgMTEsIDQyLCAyMDksIDE5MSwgMTEsIDQyLCAyMDMsIDQ4LCAxMSwgNDIsIAorICAgIDE5OSwgMTE0LCAxMSwgNDIsIDIyNywgMTY2LCAxMSwgNDIsIDIxNywgMjQyLCAxMSwgNDIsIDIyNywgMTcwLCAxMSwgNDIsIAorICAgIDIzNSwgOTQsIDExLCA0MiwgMjI3LCAxOTAsIDExLCA0MiwgMjAxLCAwLCAxMSwgNDIsIDIzOSwgMTM3LCAxMSwgNDIsIDIwOSwgCisgICAgMjA3LCAxMSwgNDIsIDIyNCwgMjA0LCAxMSwgNDIsIDI0MiwgMTY4LCAxMSwgNDIsIDI0MiwgMjA1LCAxMSwgNDIsIDI0NiwgCisgICAgMTU3LCAxMSwgNDIsIDIzMywgNDQsIDExLCA0MiwgMjEwLCA3NSwgMTEsIDQyLCAxOTgsIDI1MCwgMTEsIDQyLCAyMDksIAorICAgIDI1NCwgMTEsIDQyLCAyNDcsIDgsIDExLCA0MiwgMTk4LCAyMjAsIDExLCA0MiwgMjIwLCAxMDEsIDExLCA0MiwgMjI3LCA4LCAKKyAgICAyMjQsIDE1MywgMSwgMjQ5LCAxMzYsIDIyNCwgMTUzLCAxLCAxNzIsIDIyNCwgMTUzLCAxLCAyMTUsIDI0NSwgMjI0LCAxNTMsIAorICAgIDEsIDI0MiwgNTgsIDIyNCwgMTUzLCAxLCAyMDcsIDM2LCAyMjQsIDE1MywgMSwgMjA2LCAxMjIsIDIyNCwgMTUzLCAxLCAKKyAgICAyMzYsIDg5LCAyMjQsIDE1MywgMSwgMTYxLCAyMjQsIDE1MywgMSwgMjI2LCAyMDcsIDIyNCwgMTUzLCAxLCAyMjcsIDI0OCwgCisgICAgMjI0LCAxNTMsIDEsIDI0NywgMTkwLCAyMjQsIDE1MywgMSwgMjQ3LCAzNywgMjI0LCAxNTMsIDEsIDIzOSwgOTMsIDIyNCwgCisgICAgMTUzLCAxLCAyMDUsIDMyLCAyMjQsIDE1MywgMSwgMjA1LCAyMiwgMjI0LCAxNTMsIDEsIDE3OCwgMjI0LCAxNTMsIDEsIAorICAgIDE4OCwgMjI0LCAxNTMsIDEsIDE5NCwgMjI0LCAxNTMsIDEsIDIxMiwgNjQsIDIyNCwgMTUzLCAxLCAxOTksIDc3LCAyMjQsIAorICAgIDE1MywgMSwgMTk5LCAxMTQsIDIyNCwgMTUzLCAxLCAyMTksIDI1MywgMjI0LCAxNTMsIDEsIDE0NCwgMjI0LCAxNTMsIDEsIAorICAgIDIwMCwgMTgxLCAyMjQsIDE1MywgMSwgMjM0LCA4NCwgMjI0LCAxNTMsIDEsIDIzNywgMTk1LCAyMjQsIDE1MywgMSwgMjAxLCAKKyAgICAxMTQsIDIyNCwgMTUzLCAxLCAyMTAsIDExNCwgMjI0LCAxNTMsIDEsIDE4MywgMjI0LCAxNTMsIDEsIDIzNSwgMTk5LCAyMjQsIAorICAgIDE1MywgMSwgNjIsIDIyNCwgMTUzLCAxLCAyNTEsIDIyMSwgMjI0LCAxNTMsIDEsIDcyLCAyMjQsIDE1MywgMSwgMjM4LCA2OSwgCisgICAgMjI0LCAxNTMsIDEsIDcwLCAyMjQsIDE1MywgMSwgNzQsIDIyNCwgMTUzLCAxLCA2NiwgMjI0LCAxNTMsIDEsIDIwNCwgMzEsIAorICAgIDIyNCwgMTUzLCAxLCAyMDQsIDI1LCAyMjQsIDE1MywgMSwgMjE3LCAxMjEsIDIyNCwgMTUzLCAxLCAxNTAsIDIyMCwgMjIxLCAKKyAgICAyMDYsIDE1LCAyMjQsIDE1MywgMSwgMTUwLCAyMjAsIDE2MiwgMjE1LCAxMDYsIDIyNCwgMTUzLCAxLCAxNTAsIDIyMCwgCisgICAgMjIxLCAyNDIsIDE2NywgMjI0LCAxNTMsIDEsIDE1MCwgMjIwLCAyMjEsIDI0OCwgMTI0LCAyMjQsIDE1MywgMSwgMTUwLCAKKyAgICAyMjAsIDIyMSwgMTg4LCAyMjQsIDE1MywgMSwgMTUwLCAyMjAsIDIyMSwgMjI3LCAyMTYsIDIyNCwgMTUzLCAyMTQsIDIxMiwgCisgICAgMjQ2LCA3MCwgMjI0LCAxNTMsIDIxNCwgMjEyLCAyMzYsIDE4MywgMjA4LCA3NiwgNTAsIDUsIDIzOCwgMjU1LCA1MCwgNSwgCisgICAgMjM4LCAyNTEsIDUwLCA1LCAyMzQsIDEyMCwgNTAsIDUsIDIwMSwgNTcsIDUwLCA1LCAyMDEsIDU2LCA1MCwgNSwgMjE2LCAKKyAgICA2MSwgNTAsIDUsIDI0OCwgMTk1LCA1MCwgNSwgMjQ4LCAyNTIsIDUwLCA1LCAyMjIsIDEwMiwgNTAsIDUsIDIyNiwgNDUsIAorICAgIDUwLCA1LCAyMjEsIDI0MywgNTAsIDUsIDIzNiwgMjgsIDUwLCA1LCAyMzcsIDE0MCwgNTAsIDUsIDIwMywgNTQsIDUwLCA1LCAKKyAgICAyMDYsIDE5MCwgNTAsIDUsIDIwNiwgMTA0LCA1MCwgNSwgMjQxLCA5MCwgNTAsIDUsIDI0MSwgODcsIDUwLCA1LCAyMjUsIAorICAgIDMyLCA1MCwgNSwgMjEzLCAxNjcsIDUwLCA1LCAyNDEsIDE2MSwgNTAsIDUsIDIyMCwgNjYsIDUwLCA1LCAyMTEsIDE5MCwgCisgICAgNTAsIDUsIDIxMCwgNjMsIDUwLCA1LCAxOTksIDg3LCA1MCwgNSwgMTk5LCA2NywgNTAsIDUsIDI0NywgNjgsIDUwLCA1LCAKKyAgICAyMjcsIDIyNSwgNTAsIDUsIDIxOSwgODksIDUwLCA1LCAyMDAsIDQ4LCA1MCwgNSwgMjI3LCA1LCA1MCwgNSwgMjE5LCAyMjYsIAorICAgIDUwLCA1LCAyMzYsIDcsIDUwLCA1LCAyMjIsIDY0LCA1MCwgNSwgMjIwLCAyOSwgNTAsIDUsIDIxOCwgNDksIDUwLCA1LCA3MCwgCisgICAgNTAsIDUsIDIyOCwgMTE3LCA1MCwgNSwgMjM0LCA3NSwgNTAsIDUsIDIzNCwgNTMsIDUwLCA1LCAyMDEsIDMxLCA1MCwgNSwgCisgICAgMjAxLCAxOCwgNTAsIDUsIDIxNSwgMjA0LCA1MCwgNSwgMjQ4LCAxOTMsIDUwLCA1LCAyNDgsIDE4OCwgNTAsIDUsIDIyMiwgCisgICAgOTUsIDUwLCA1LCAyMjYsIDQyLCA1MCwgNSwgMjIxLCAyNDAsIDUwLCA1LCAyMzYsIDI0LCA1MCwgNSwgMjM3LCAxMTIsIDUwLCAKKyAgICA1LCAyMDIsIDIzNCwgNTAsIDUsIDIwNiwgMTUsIDUwLCA1LCAyMDYsIDg0LCA1MCwgNSwgMjQxLCA4MiwgNTAsIDUsIDI0MSwgCisgICAgODYsIDUwLCA1LCAyMjQsIDIxMCwgNTAsIDUsIDIxMywgODgsIDUwLCA1LCAyNDEsIDc2LCA1MCwgNSwgMjIwLCA2MCwgNTAsIAorICAgIDUsIDIwOSwgMTgyLCA1MCwgNSwgMjEwLCAzMywgNTAsIDUsIDE5OSwgMzYsIDUwLCA1LCAxOTksIDYzLCA1MCwgNSwgMjQ2LCAKKyAgICAxNzMsIDUwLCA1LCAyMjcsIDIwNywgNTAsIDUsIDIxOSwgODIsIDUwLCA1LCAyMDAsIDksIDUwLCA1LCAyMjYsIDE2MywgNTAsIAorICAgIDUsIDIxOSwgMjE4LCA1MCwgNSwgMjM1LCAxNjEsIDUwLCA1LCAyMjEsIDIxMSwgNTAsIDUsIDIxOSwgMTUwLCA1MCwgNSwgCisgICAgMjE4LCA0MSwgNTAsIDUsIDYyLCA1MCwgNSwgMjUxLCA4NSwgNTAsIDUsIDIxOSwgMjQ4LCA1MCwgNSwgMTQ0LCA1MCwgNSwgCisgICAgMjM0LCAyMDIsIDUwLCA1LCAyMDEsIDExNCwgNTAsIDUsIDIwMSwgMTAwLCA1MCwgNSwgMTcyLCA1MCwgNSwgMjQ4LCAyMDAsIAorICAgIDUwLCA1LCAyNDksIDEzNiwgNTAsIDUsIDIyMiwgMTEwLCA1MCwgNSwgMjI2LCA1MCwgNTAsIDUsIDIyNiwgNDgsIDUwLCA1LCAKKyAgICAyMjEsIDI0NywgNTAsIDUsIDIzNiwgMzIsIDUwLCA1LCAyMzcsIDE5NSwgNTAsIDUsIDIwMywgOTAsIDUwLCA1LCAyMDcsIAorICAgIDM2LCA1MCwgNSwgMjA2LCAxMjIsIDUwLCA1LCAyNDEsIDEwMCwgNTAsIDUsIDI0MSwgODksIDUwLCA1LCAxOTQsIDUwLCA1LCAKKyAgICAyMTMsIDI1MiwgNTAsIDUsIDI0MiwgNTgsIDUwLCA1LCAyMjAsIDc1LCA1MCwgNSwgMjEyLCA2NCwgNTAsIDUsIDIxMCwgCisgICAgMTE0LCA1MCwgNSwgMTk5LCAxMTQsIDUwLCA1LCAxOTksIDc3LCA1MCwgNSwgMjQ3LCAxOTAsIDUwLCA1LCAyMjcsIDI0OCwgCisgICAgNTAsIDUsIDIxOSwgOTgsIDUwLCA1LCAxODMsIDUwLCA1LCAxNjEsIDUwLCA1LCAyMjcsIDY4LCA1MCwgNSwgMjE5LCAyMzIsIAorICAgIDUwLCA1LCAyMzYsIDg5LCA1MCwgNSwgMTc4LCA1MCwgNSwgMTg4LCA1MCwgNSwgMjE4LCA2MCwgNTAsIDUsIDIxNywgNjMsIAorICAgIDUwLCA1LCAyMTcsIDU4LCA1MCwgNSwgMjMzLCAxODgsIDUwLCA1LCAyMDAsIDI0NCwgNTAsIDUsIDIwMCwgMjQwLCA1MCwgNSwgCisgICAgMjE1LCA4MSwgNTAsIDUsIDI0OCwgMTkxLCA1MCwgNSwgMjQ4LCAxMTEsIDUwLCA1LCAyMjIsIDkwLCA1MCwgNSwgMjI2LCAKKyAgICA0MCwgNTAsIDUsIDIyMSwgMjM2LCA1MCwgNSwgMjM2LCAyMCwgNTAsIDUsIDIzNywgMiwgNTAsIDUsIDIwMiwgMTc5LCA1MCwgCisgICAgNSwgMjA1LCAxNjEsIDUwLCA1LCAyMDYsIDU2LCA1MCwgNSwgMjQxLCA3OSwgNTAsIDUsIDI0MSwgODQsIDUwLCA1LCAyMjQsIAorICAgIDc4LCA1MCwgNSwgMjEyLCAyMzgsIDUwLCA1LCAyNDAsIDE4NywgNTAsIDUsIDIyMCwgNDcsIDUwLCA1LCAyMDksIDEwLCA1MCwgCisgICAgNSwgMjEwLCAyLCA1MCwgNSwgMTk5LCAxMiwgNTAsIDUsIDE5OSwgNTgsIDUwLCA1LCAyNDMsIDMwLCA1MCwgNSwgMjI3LCAKKyAgICAxNTYsIDUwLCA1LCAyMTksIDcyLCA1MCwgNSwgMTk5LCAyMzAsIDUwLCA1LCAyMjYsIDY4LCA1MCwgNSwgMjE5LCAyMTYsIAorICAgIDUwLCA1LCAyMzUsIDEwNSwgNTAsIDUsIDIyMSwgODcsIDUwLCA1LCAyMTgsIDIyOSwgNTAsIDUsIDIxOCwgMjMsIDUwLCA1LCAKKyAgICA2NiwgNTAsIDUsIDIwNCwgNSwgNTAsIDUsIDIzMywgOTcsIDUwLCA1LCAyMzMsIDg0LCA1MCwgNSwgMjAwLCAyMTYsIDUwLCAKKyAgICA1LCAyMDAsIDIwOSwgNTAsIDUsIDIxNCwgMjI0LCA1MCwgNSwgMjQ4LCAxOTAsIDUwLCA1LCAyNDgsIDM2LCA1MCwgNSwgCisgICAgMjIyLCA4OSwgNTAsIDUsIDIyNiwgMzgsIDUwLCA1LCAyMjEsIDIzNSwgNTAsIDUsIDIzNiwgMTksIDUwLCA1LCAyMzYsIAorICAgIDE4OSwgNTAsIDUsIDIwMSwgMTY2LCA1MCwgNSwgMjA0LCAyMTUsIDUwLCA1LCAyMDYsIDM1LCA1MCwgNSwgMjQxLCA3NywgCisgICAgNTAsIDUsIDI0MSwgODMsIDUwLCA1LCAyMjQsIDQyLCA1MCwgNSwgMjEyLCAxNzUsIDUwLCA1LCAyMzksIDEzNywgNTAsIDUsIAorICAgIDIyMCwgNDIsIDUwLCA1LCAyMDgsIDI0LCA1MCwgNSwgMjA5LCAyMjAsIDUwLCA1LCAxOTksIDMsIDUwLCA1LCAxOTksIDU0LCAKKyAgICA1MCwgNSwgMjQyLCAyMTQsIDUwLCA1LCAyMjcsIDE0NywgNTAsIDUsIDIxOSwgNjgsIDUwLCA1LCAxOTksIDIxMSwgNTAsIDUsIAorICAgIDIyNiwgMTUsIDUwLCA1LCAyMTksIDIxNSwgNTAsIDUsIDIzNSwgNTAsIDUwLCA1LCAyMjEsIDQxLCA1MCwgNSwgMjE4LCAKKyAgICAxMzMsIDUwLCA1LCAyMTgsIDE5LCA1MCwgNSwgNzQsIDUwLCA1LCAyMTcsIDc4LCA1MCwgNSwgMjE5LCAxNzQsIDUwLCA1LCAKKyAgICAyMzMsIDIwNywgNTAsIDUsIDIzMywgMTkxLCA1MCwgNSwgMjAxLCAwLCA1MCwgNSwgMjAwLCAyNDUsIDUwLCA1LCAyMTUsIAorICAgIDEwNiwgNTAsIDUsIDI0OCwgMTkyLCA1MCwgNSwgMjQ4LCAxMjQsIDUwLCA1LCAyMjIsIDkxLCA1MCwgNSwgMjI2LCA0MSwgCisgICAgNTAsIDUsIDIyMSwgMjM4LCA1MCwgNSwgMjM2LCAyMiwgNTAsIDUsIDIzNiwgMjEsIDUwLCA1LCAyMzcsIDEzLCA1MCwgNSwgCisgICAgMjAyLCAxOTMsIDUwLCA1LCAxMzgsIDUwLCA1LCAyMDYsIDYxLCA1MCwgNSwgMjQxLCA4MCwgNTAsIDUsIDI0MSwgODUsIDUwLCAKKyAgICA1LCAyMjQsIDExMCwgNTAsIDUsIDIxMywgMSwgNTAsIDUsIDI0MCwgMjExLCA1MCwgNSwgMjIwLCA1MSwgNTAsIDUsIDIwOSwgCisgICAgMjksIDUwLCA1LCAyMTAsIDgsIDUwLCA1LCAxOTksIDE0LCA1MCwgNSwgMTk5LCA2MCwgNTAsIDUsIDI0NiwgOTEsIDUwLCA1LCAKKyAgICAyMjcsIDE2NiwgNTAsIDUsIDIxOSwgNzMsIDUwLCA1LCAxOTksIDI0NSwgNTAsIDUsIDIyNiwgODgsIDUwLCA1LCAyMTksIAorICAgIDIxNywgNTAsIDUsIDIzNSwgMTE2LCA1MCwgNSwgMjIxLCAxMzYsIDUwLCA1LCAyMTgsIDI0MSwgNTAsIDUsIDIxOCwgMjYsIAorICAgIDUwLCA1LCA3MiwgNTAsIDUsIDIzOCwgMTc5LCA1MCwgNSwgMjE5LCAyMzcsIDUwLCA1LCAyMzQsIDEzOSwgNTAsIDUsIDIzNCwgCisgICAgMTA1LCA1MCwgNSwgMjAxLCA2NCwgNTAsIDUsIDIwMSwgNTEsIDUwLCA1LCAyMTYsIDczLCA1MCwgNSwgMjQ4LCAxOTYsIDUwLCAKKyAgICA1LCAyNDksIDgsIDUwLCA1LCAyMjIsIDEwMywgNTAsIDUsIDIyNiwgNDYsIDUwLCA1LCAyMjYsIDQ0LCA1MCwgNSwgMjIxLCAKKyAgICAyNDQsIDUwLCA1LCAyMzYsIDI5LCA1MCwgNSwgMjM2LCAyNywgNTAsIDUsIDIzNywgMTQ3LCA1MCwgNSwgMjAzLCA1OSwgNTAsIAorICAgIDUsIDIwNiwgMjAxLCA1MCwgNSwgMjA2LCAxMDYsIDUwLCA1LCAyNDEsIDkxLCA1MCwgNSwgMjQxLCA4OCwgNTAsIDUsIDIyNSwgCisgICAgNDAsIDUwLCA1LCAyMTMsIDE5MCwgNTAsIDUsIDI0MSwgMTc1LCA1MCwgNSwgMjIwLCA2NywgNTAsIDUsIDIxMSwgMjAyLCAKKyAgICA1MCwgNSwgMjEwLCA2NSwgNTAsIDUsIDE5OSwgODksIDUwLCA1LCAxOTksIDY4LCA1MCwgNSwgMjQ3LCA3NiwgNTAsIDUsIAorICAgIDIyNywgMjI3LCA1MCwgNSwgMjE5LCA5MSwgNTAsIDUsIDIwMCwgNTEsIDUwLCA1LCAyMjcsIDgsIDUwLCA1LCAyMTksIDIyNywgCisgICAgNTAsIDUsIDIxOSwgMjIzLCA1MCwgNSwgMjM2LCAxNSwgNTAsIDUsIDIzNiwgMSwgNTAsIDUsIDIyMiwgNzYsIDUwLCA1LCAKKyAgICAyMjAsIDM0LCA1MCwgNSwgMjE4LCA1MCwgNTAsIDUsIDIxOSwgMjU1LCA1MCwgNSwgMjI0LCAyNTAsIDUwLCAyNDYsIDcwLCAKKyAgICA1MCwgMjM2LCAxODMsIDIwOCwgNzYsIDUwLCAyMTQsIDc5LCA4MSwgNTAsIDUsIDIyMCwgNTAsIDIzNywgMTk1LCA1MCwgNSwgCisgICAgMjIwLCA1MCwgMTYxLCA1MCwgNSwgMjIwLCA1MCwgMjA5LCAxMCwgNTAsIDE2LCAyMzcsIDEzNiwgNTAsIDE2LCAyMjcsIDMsIAorICAgIDUwLCAxNiwgMjA1LCAyMjgsIDUwLCAxNiwgMjE5LCAxMjUsIDUwLCAxNiwgMjQ5LCA4MywgNTAsIDE2LCAyMzcsIDE5NCwgCisgICAgNTAsIDE2LCAyMDcsIDMyLCA1MCwgMTYsIDI0MiwgOCwgNTAsIDE2LCAyNDAsIDE4NiwgNTAsIDE2LCAyMjUsIDI1NSwgNTAsIAorICAgIDE2LCAyMDUsIDE2NSwgNTAsIDE2LCAyNDAsIDIxMCwgNTAsIDE2LCAyMjcsIDE1NywgNTAsIDE3LCAxOTksIDgxLCA1MCwgCisgICAgMTcsIDEwMiwgNTAsIDE3LCAxMDUsIDUwLCAxNywgMTQ3LCA1MCwgMTcsIDE0OSwgNTAsIDE3LCAxNjQsIDUwLCAxNywgMTg3LCAKKyAgICA1MCwgMTcsIDIxMCwgMTM1LCA1MCwgMTcsIDE5MiwgNTAsIDE3LCAyMTksIDExMywgNTAsIDUsIDIyMCwgNTAsIDE3OCwgNTAsIAorICAgIDUsIDIyMCwgNTAsIDI0MCwgMjExLCAzNywgNiwgMSwgMTk5LCA4NSwgMzcsIDQsIDEsIDE5OSwgODUsIDM3LCA2LCAxLCAKKyAgICAyMzksIDg4LCAzNywgNCwgMSwgMjM5LCA4OCwgMzcsIDYsIDEsIDIxMywgMTA1LCAyMzksIDkwLCAzNywgNCwgMSwgMjEzLCAKKyAgICAxMDUsIDIzOSwgOTAsIDM3LCA2LCAxLCAyMjgsIDQxLCAzNywgNCwgMSwgMjI4LCA0MSwgMzcsIDYsIDEsIDI0MCwgMjI3LCAKKyAgICAzNywgNCwgMSwgMjQwLCAyMjcsIDM3LCA2LCAxLCAyMjEsIDk1LCAyMDQsIDIwLCAzNywgNCwgMSwgMjIxLCA5NSwgMjA0LCAKKyAgICAyMCwgMzcsIDYsIDEsIDI0OCwgNDcsIDIxNywgODMsIDM3LCA0LCAxLCAyNDgsIDQ3LCAyMTcsIDgzLCAzNywgNiwgMSwgCisgICAgMjIwLCAxMCwgMjAwLCAzMywgMzcsIDQsIDEsIDIyMCwgMTAsIDIwMCwgMzMsIDM3LCA2LCAxLCAyMDAsIDMwLCAzLCAyNDksIAorICAgIDEzMCwgMjAwLCAzMywgMzcsIDQsIDEsIDIwMCwgMzAsIDMsIDI0OSwgMTMwLCAyMDAsIDMzLCAzNywgNiwgMSwgMjI4LCAzOSwgCisgICAgMjAwLCA2NSwgMzcsIDQsIDEsIDIyOCwgMzksIDIwMCwgNjUsIDM3LCA2LCAxLCAyMTMsIDEwNSwgMTk5LCAyMTEsIDM3LCA0LCAKKyAgICAxLCAyMTMsIDEwNSwgMTk5LCAyMTEsIDM3LCA2LCAxLCAyMjgsIDM5LCA2MiwgMzcsIDQsIDEsIDIyOCwgMzksIDYyLCAzNywgCisgICAgNiwgMSwgMjQ2LCAxMTAsIDIyNCwgMTQ4LCAxOTksIDE4MSwgMzcsIDQsIDEsIDI0NiwgMTEwLCAyMjQsIDE0OCwgMTk5LCAKKyAgICAxODEsIDM3LCA2LCAxLCAyNDgsIDEzNiwgMTk5LCAxODEsIDM3LCA0LCAxLCAyNDgsIDEzNiwgMTk5LCAxODEsIDM3LCA2LCAKKyAgICAxLCAyMjgsIDM5LCAyNDYsIDExMCwgMjI0LCAxNDgsIDE5OSwgMTgxLCAzNywgNCwgMSwgMjI4LCAzOSwgMjQ2LCAxMTAsIAorICAgIDIyNCwgMTQ4LCAxOTksIDE4MSwgMzcsIDYsIDEsIDE5OSwgMjQ3LCAzNywgNCwgMSwgMTk5LCAyNDcsIDM3LCA2LCAxLCAKKyAgICAyMTMsIDEwNSwgMjA1LCAyNiwgMzcsIDQsIDEsIDIxMywgMTA1LCAyMDUsIDI2LCAzNywgNiwgMSwgMjA5LCAyMywgMjQxLCAKKyAgICAxNzUsIDM3LCA0LCAxLCAyMDksIDIzLCAyNDEsIDE3NSwgMzcsIDYsIDEsIDIwOSwgMjMsIDIzOCwgMjA5LCAzNywgNCwgMSwgCisgICAgMjA5LCAyMywgMjM4LCAyMDksIDM3LCA2LCAxLCAyMDksIDIzLCAyMzgsIDE5MCwgMzcsIDQsIDEsIDIwOSwgMjMsIDIzOCwgCisgICAgMTkwLCAzNywgNiwgMSwgMjIxLCA5OSwgNzQsIDM3LCA0LCAxLCAyMjEsIDk5LCA3NCwgMzcsIDYsIDEsIDI0OCwgMTY1LCAKKyAgICA3NCwgMzcsIDQsIDEsIDI0OCwgMTY1LCA3NCwgMzcsIDYsIDEsIDUzLCAyMjEsIDk5LCA3NCwgMzcsIDQsIDEsIDUzLCAyMjEsIAorICAgIDk5LCA3NCwgMzcsIDEsIDIyMSwgMjIsIDc0LCAzOCwgMzcsIDIwMSwgMTQ5LCAzOCwgMzcsIDIwNiwgMTY3LCAyMjEsIDE2OCwgCisgICAgNTQsIDM4LCAzNywgMjMzLCA4MywgMjIxLCAxNjgsIDU0LCAzOCwgMzcsIDIwNiwgNTEsIDIyMSwgMTY4LCA1NCwgMjA5LCAKKyAgICA3MywgMjUwLCAxNjUsIDM4LCAzNywgMSwgMjA0LCAxNywgMjI4LCAxNzgsIDM4LCAzNywgMSwgNzAsIDM4LCAzNywgMSwgCisgICAgMjAwLCA5LCAzOCwgMzcsIDEsIDY2LCAzOCwgMzcsIDEsIDIzNCwgMTY1LCA1NCwgMzgsIDM3LCAxLCAyMDAsIDI5LCAzOCwgCisgICAgMzcsIDEsIDIwOSwgMjMsIDU0LCAzOCwgMzcsIDEsIDIxNywgODMsIDM4LCAzNywgMjI3LCAyMCwgMzgsIDM3LCAyMTYsIDgwLCAKKyAgICAzNywgMjI3LCAyMCwgMzcsIDIxNiwgODAsIDM3LCA2LCAxLCAyMzksIDEwMywgMzcsIDQsIDEsIDIzOSwgMTAzLCAzNywgNiwgCisgICAgMSwgMjM5LCA3OSwgMzcsIDQsIDEsIDIzOSwgNzksIDM3LCA2LCAxLCAxOTksIDQ0LCAzNywgNCwgMSwgMTk5LCA0NCwgMzcsIAorICAgIDYsIDEsIDI0NywgOTIsIDM3LCA0LCAxLCAyNDcsIDkyLCAzNywgNiwgMSwgMjM5LCA3NiwgMzcsIDQsIDEsIDIzOSwgNzYsIAorICAgIDM3LCA2LCAxLCAyMDYsIDIwMiwgMywgMTAxLCAxMTcsIDM3LCA0LCAxLCAyMDYsIDIwMiwgMywgMTAxLCAxMTcsIDM3LCA2LCAKKyAgICAxLCAyMDQsIDE2OCwgMzcsIDQsIDEsIDIwNCwgMTY4LCAzNywgNiwgMSwgMjA1LCAxLCAzNywgNCwgMSwgMjA1LCAxLCAzNywgCisgICAgNiwgMSwgMjA1LCA2LCAzNywgNCwgMSwgMjA1LCA2LCAzNywgNiwgMSwgMjA2LCAyMDcsIDM3LCA0LCAxLCAyMDYsIDIwNywgCisgICAgMzcsIDYsIDEsIDIzMywgNjUsIDM3LCA0LCAxLCAyMzMsIDY1LCAzNywgNiwgMSwgMjA5LCAxOTcsIDM3LCA0LCAxLCAyMDksIAorICAgIDE5NywgMzcsIDYsIDEsIDUzLCA3NCwgMzcsIDQsIDEsIDUzLCA3NCwgMzcsIDYsIDEsIDI0MiwgMjMyLCA3NCwgMzcsIDQsIAorICAgIDEsIDI0MiwgMjMyLCA3NCwgNjcsIDEsIDM3LCAyMzQsIDE2NSwgNTQsIDY3LCAxLCAzNywgMjA5LCAyMywgNTQsIDM4LCAzNywgCisgICAgMSwgMjM4LCAyNDgsIDM4LCAzNywgMSwgMjI4LCAzOSwgNzIsIDI1LCAxLCA2MiwgMjUsIDEsIDE2MSwgMjUsIDEsIDY2LCAKKyAgICAyNSwgMSwgMjI2LCAxNSwgMjUsIDEsIDIzOCwgMjU1LCAyNSwgMSwgMjEzLCAxNjcsIDI1LCAxLCAyMDcsIDE1LCAyNSwgMSwgCisgICAgNzQsIDI1LCAxLCAyMTgsIDQxLCAyNSwgMSwgNzAsIDI1LCAxLCAxOTQsIDI1LCAxLCAxNzIsIDI1LCAxLCAyMTMsIDMzLCAKKyAgICAyNSwgMSwgMjEzLCA4MSwgMjUsIDEsIDIyNSwgMzEsIDI1LCAxLCAyMjIsIDYzLCAyNSwgMSwgMjA3LCAzMiwgMjUsIDEsIAorICAgIDIyMCwgNzMsIDI1LCAxLCAyMTksIDk2LCAyNSwgMSwgMjIzLCAyNDMsIDI1LCAxLCAyMDcsIDE5MywgMjUsIDEsIDIyMSwgCisgICAgNDEsIDI1LCAxLCAyMTAsIDI4LCAyNSwgMSwgMjA5LCAxODIsIDI1LCAxLCAyMTAsIDM4LCAyNSwgMSwgMjEwLCAxMzcsIDI1LCAKKyAgICAxLCAyMjUsIDE5OSwgMjUsIDEsIDIyNiwgMjMzLCAyNSwgMSwgMjE4LCAxMDQsIDI1LCAxLCAyMTgsIDEzMywgMjUsIDEsIAorICAgIDIxOSwgNjcsIDI1LCAxLCAxOTksIDIyNywgMjUsIDEsIDIwOSwgMjIwLCAyNSwgMSwgMTk5LCAxODUsIDI1LCAxLCAxODMsIAorICAgIDI1LCAxLCAyMTgsIDE2NywgMjUsIDEsIDIyNiwgMjE5LCAyNSwgMSwgMjE1LCAyNDksIDI1LCAxLCAyMTksIDg5LCAyNSwgMSwgCisgICAgMjE4LCAxNDgsIDI1LCAxLCAyMTQsIDIxNiwgMjUsIDEsIDIwMCwgMjEzLCAyNSwgMSwgMjE2LCA2MSwgMjUsIDEsIDIzNywgCisgICAgMTQwLCAyNSwgMSwgMjEyLCAxNzUsIDI1LCAxLCAyMjQsIDQyLCAyNSwgMSwgMjIxLCAyMTEsIDI1LCAxLCAyMTksIDE1MCwgCisgICAgMjUsIDEsIDIxMywgMTA3LCAyNSwgMSwgMjEzLCAyMzQsIDI1LCAxLCAyMjYsIDI0MywgMjUsIDEsIDIxOSwgMTgxLCAyNSwgCisgICAgMSwgMjE5LCAyMzIsIDI1LCAxLCAyMTksIDI1MywgMjUsIDEsIDIxMCwgOCwgMjUsIDEsIDIxNCwgMjIxLCAyNSwgMSwgMjM2LCAKKyAgICAxODksIDI1LCAxLCAyMzcsIDYsIDI1LCAxLCAyMDEsIDExNCwgMjUsIDEsIDE4OCwgMjUsIDEsIDIyNCwgMjEwLCAyNSwgMSwgCisgICAgMjE1LCAyMDQsIDI1LCAxLCAyMjQsIDcwLCAyNSwgMSwgMjI2LCA4OCwgMjUsIDEsIDIyMiwgMTAwLCAyNSwgMSwgMjEzLCAKKyAgICAxMzksIDI1LCAxLCAyMjIsIDQwLCAyNSwgMSwgMTc4LCAyNSwgMSwgMjA2LCAxNSwgMjUsIDEsIDIyNiwgMTYzLCAyNSwgMSwgCisgICAgMjIxLCAxMzYsIDI1LCAxLCAyMjIsIDEwOCwgMjUsIDEsIDIwNiwgMTQ2LCAyNSwgMSwgMjI2LCA1MCwgMjUsIDEsIDIwNiwgCisgICAgMTY2LCAyNSwgMSwgMjE4LCAxMzUsIDI1LCAxLCAyMTIsIDIxLCAyNSwgMSwgMjM3LCAxOTEsIDI1LCAxLCAyMjYsIDUyLCAKKyAgICAyNSwgMSwgMjI2LCA4MywgMjUsIDM4LCAxMzQsIDIyNiwgNjEsIDI1LCAzOCwgMTM0LCAyMDQsIDIwNiwgMjUsIDIxOSwgOTUsIAorICAgIDI1LCAyMzYsIDE4MywgMjA4LCA3NiwgMjUsIDI0NiwgNzksIDI1LCAyNDYsIDcwLCAyNSwgMjEwLCAxNjcsIDI1LCAyMTQsIAorICAgIDc5LCA4MSwgNjcsIDEsIDI0NiwgMjIyLCAxNTAsIDE5OSwgMjU1LCAyMTUsIDE1NiwgNjcsIDEsIDI0NiwgMjIyLCAxNTAsIAorICAgIDIwMCwgNzYsIDIxNSwgMTU2LCA2NywgMSwgMjQ2LCAyMjIsIDE1MCwgMTk5LCAyNTUsIDIxMCwgODgsIDY3LCAxLCAyNDYsIAorICAgIDIyMiwgMTUwLCAyMDAsIDc2LCAyMTAsIDg4LCA2NywgMSwgMjQ2LCAyMjIsIDE1MCwgMTk5LCAyNTUsIDIxNCwgOTcsIDY3LCAKKyAgICAxLCAyNDYsIDIyMiwgMTUwLCAyMDAsIDc2LCAyMTQsIDk3LCA2NywgMSwgMjQ2LCAyMjIsIDE1MCwgMTk5LCAyNTUsIDIxMiwgCisgICAgMTc1LCA2NywgMSwgMjQ2LCAyMjIsIDE1MCwgMjAwLCA3NiwgMjEyLCAxNzUsIDY3LCAxLCAyMzgsIDI5LCAyMzksIDE4MCwgCisgICAgMTUwLCAxNDgsIDY3LCAxLCAxMjIsIDIzOSwgMTgwLCAxNTAsIDE0OCwgNjcsIDEsIDIyMSwgMjA2LCAyMzksIDE4MCwgMTUwLCAKKyAgICAxNDgsIDY3LCAxLCAxMjgsIDIzOSwgMTgwLCAxNTAsIDE0OCwgNjcsIDEsIDIzOCwgMjgsIDIzOSwgMTgwLCAxNTAsIDE0OCwgCisgICAgNjcsIDEsIDIzOCwgMjksIDIzOSwgMTgwLCAyMjUsIDIwLCAxNTAsIDE0OCwgNjcsIDEsIDEyMiwgMjM5LCAxODAsIDIyNSwgCisgICAgMjAsIDE1MCwgMTQ4LCA2NywgMSwgMjIxLCAyMDYsIDIzOSwgMTgwLCAyMjUsIDIwLCAxNTAsIDE0OCwgNjcsIDEsIDEyOCwgCisgICAgMjM5LCAxODAsIDIyNSwgMjAsIDE1MCwgMTQ4LCA2NywgMSwgMjM4LCAyOCwgMjM5LCAxODAsIDIyNSwgMjAsIDE1MCwgMTQ4LCAKKyAgICA2NywgMSwgMjM4LCAyOSwgMjI1LCAyMCwgMTUwLCAxNDgsIDY3LCAxLCAxMjIsIDIyNSwgMjAsIDE1MCwgMTQ4LCA2NywgMSwgCisgICAgMjIxLCAyMDYsIDIyNSwgMjAsIDE1MCwgMTQ4LCA2NywgMSwgMTI4LCAyMjUsIDIwLCAxNTAsIDE0OCwgNjcsIDEsIDIzOCwgCisgICAgMjgsIDIyNSwgMjAsIDE1MCwgMTQ4LCA2NywgMSwgNzMsIDgzLCAxNDgsIDY3LCAxLCA3MywgMjA5LCA3NSwgNjcsIDEsIDczLCAKKyAgICAyMzMsIDE3NywgMTQ4LCA2NywgMSwgMjI0LCA1NCwgNTEsIDI0MywgMTYsIDI1MSwgNzAsIDY3LCAxLCAyMTMsIDIyMCwgCisgICAgMTE1LCA0OCwgNjcsIDEsIDIxMywgMjIwLCAxMjcsIDQ4LCA2NywgMSwgMjEzLCAyMjAsIDIzOCwgNDMsIDgxLCA2NywgMSwgCisgICAgMjEzLCAyMjAsIDIyOCwgNTAsIDIzOCwgNDMsIDgxLCA2NywgMSwgMTI4LCAyMjgsIDUwLCAyMzgsIDQzLCA4MSwgNjcsIDEsIAorICAgIDIwOCwgNTcsIDI2LCAxMjIsIDIwNSwgMTc0LCA2NywgMSwgMjA4LCA1NywgMjYsIDEyOCwgMjA1LCAxNzQsIDgsIDYsIDEsIAorICAgIDIzOCwgMjQzLCAyNTEsIDE0MiwgOCwgNCwgMSwgMjM4LCAyNDMsIDI1MSwgMTQyLCA4LCA2LCAxLCAyMzgsIDI0MywgMjUxLCAKKyAgICAxNzEsIDgsIDQsIDEsIDIzOCwgMjQzLCAyNTEsIDE3MSwgOCwgNiwgMSwgMjM0LCAxMDMsIDgsIDQsIDEsIDIzNCwgMTAzLCAKKyAgICA4LCA2LCAxLCAyMDQsIDExNCwgOCwgNCwgMSwgMjA0LCAxMTQsIDgsIDYsIDEsIDIwNSwgMTAyLCA4LCA0LCAxLCAyMDUsIAorICAgIDEwMiwgOCwgNiwgMSwgMjQyLCAyMTEsIDgsIDQsIDEsIDI0MiwgMjExLCA4LCA2LCAxLCAyNDIsIDIxMiwgMywgMjQ2LCA3MCwgCisgICAgOCwgNCwgMSwgMjQyLCAyMTIsIDMsIDI0NiwgNzAsIDgsIDEsIDQsIDYsIDIzOCwgNSwgOCwgMSwgNCwgNiwgMjEyLCAxMjIsIAorICAgIDgsIDYsIDEsIDI1MiwgMTM4LCA4LCA0LCAxLCAyNTIsIDEzOCwgOCwgNiwgMSwgMjUxLCAzMSwgOCwgNCwgMSwgMjUxLCAzMSwgCisgICAgOCwgNiwgMSwgMjUwLCAxMzksIDgsIDQsIDEsIDI1MCwgMTM5LCA4LCA2LCAxLCAyNTAsIDEyMywgOCwgNCwgMSwgMjUwLCAKKyAgICAxMjMsIDgsIDYsIDEsIDI1MCwgMTI0LCAzLCAyMzMsIDE3NywgMTQ4LCA4LCA0LCAxLCAyNTAsIDEyNCwgMywgMjMzLCAxNzcsIAorICAgIDE0OCwgOCwgNiwgMSwgMjUwLCAxMTIsIDgsIDQsIDEsIDI1MCwgMTEyLCA4LCA2LCAxLCAyMTMsIDEwNSwgMjQ3LCAyMjQsIAorICAgIDMsIDI0MCwgMTgyLCA4LCA0LCAxLCAyMTMsIDEwNSwgMjQ3LCAyMjQsIDMsIDI0MCwgMTgyLCA4LCA2LCAxLCAyMjcsIDExOSwgCisgICAgMywgOTcsIDgsIDQsIDEsIDIyNywgMTE5LCAzLCA5NywgOCwgNiwgMSwgMjI3LCAxMTksIDMsIDI0MSwgNzEsIDk3LCA4LCA0LCAKKyAgICAxLCAyMjcsIDExOSwgMywgMjQxLCA3MSwgOTcsIDgsIDYsIDEsIDIyNywgMTE5LCAzLCAyMDgsIDQ3LCAyNiwgMjQxLCA3MSwgCisgICAgOTcsIDgsIDQsIDEsIDIyNywgMTE5LCAzLCAyMDgsIDQ3LCAyNiwgMjQxLCA3MSwgOTcsIDgsIDYsIDEsIDI0OCwgNDYsIAorICAgIDE1NiwgOCwgNCwgMSwgMjQ4LCA0NiwgMTU2LCA4LCA2LCAxLCAyMjUsIDE5MywgMywgMTIyLCA5NywgOCwgNCwgMSwgMjI1LCAKKyAgICAxOTMsIDMsIDEyMiwgOTcsIDgsIDYsIDEsIDE2MywgMywgMTY4LCAyMDgsIDQ3LCAyMTYsIDI0MiwgOCwgNCwgMSwgMTYzLCAKKyAgICAzLCAxNjgsIDIwOCwgNDcsIDIxNiwgMjQyLCA4LCA2LCAxLCAxNjMsIDMsIDIyNCwgNzQsIDgsIDQsIDEsIDE2MywgMywgCisgICAgMjI0LCA3NCwgOCwgNiwgMSwgMjE3LCA2MywgOCwgNCwgMSwgMjE3LCA2MywgOCwgNiwgMSwgMjE2LCAyMjcsIDMsIDIwOCwgCisgICAgNDcsIDIwNiwgMzgsIDI0MSwgMTE5LCA4LCA0LCAxLCAyMTYsIDIyNywgMywgMjA4LCA0NywgMjA2LCAzOCwgMjQxLCAxMTksIAorICAgIDgsIDYsIDEsIDIxNiwgMjI3LCAzLCAyMzcsIDI2LCA4LCA0LCAxLCAyMTYsIDIyNywgMywgMjM3LCAyNiwgOCwgNiwgMSwgCisgICAgMjE2LCAyMjcsIDMsIDIwOCwgMTg1LCAyMDcsIDYsIDgsIDQsIDEsIDIxNiwgMjI3LCAzLCAyMDgsIDE4NSwgMjA3LCA2LCA4LCAKKyAgICA2LCAxLCAyMTQsIDE2OCwgMywgMjA4LCA0NywgMjA2LCAzOCwgMjQxLCAxMTksIDgsIDQsIDEsIDIxNCwgMTY4LCAzLCAyMDgsIAorICAgIDQ3LCAyMDYsIDM4LCAyNDEsIDExOSwgOCwgNiwgMSwgMjE0LCAxNjgsIDMsIDI0MSwgNzEsIDk3LCA4LCA0LCAxLCAyMTQsIAorICAgIDE2OCwgMywgMjQxLCA3MSwgOTcsIDgsIDYsIDEsIDIxNCwgMzMsIDIxMiwgMjIyLCA4LCA0LCAxLCAyMTQsIDMzLCAyMTIsIAorICAgIDIyMiwgOCwgNiwgMSwgMjEyLCAxNjIsIDIxMiwgMjIyLCA4LCA0LCAxLCAyMTIsIDE2MiwgMjEyLCAyMjIsIDgsIDYsIDEsIAorICAgIDIwMywgMTY5LCAzLCAyNDEsIDcxLCA5NywgOCwgNCwgMSwgMjAzLCAxNjksIDMsIDI0MSwgNzEsIDk3LCA4LCA2LCAxLCAKKyAgICAyMDEsIDE1NSwgOCwgNCwgMSwgMjAxLCAxNTUsIDgsIDYsIDEsIDIwMiwgMjAxLCAxOTksIDE1NywgOCwgNCwgMSwgMjAyLCAKKyAgICAyMDEsIDE5OSwgMTU3LCA4LCA2LCAxLCAyMDYsIDU1LCAzLCA5NywgOCwgNCwgMSwgMjA2LCA1NSwgMywgOTcsIDgsIDYsIDEsIAorICAgIDIwNiwgNTUsIDMsIDIwOCwgNDcsIDIwNiwgMzgsIDI0MSwgMTE5LCA4LCA0LCAxLCAyMDYsIDU1LCAzLCAyMDgsIDQ3LCAKKyAgICAyMDYsIDM4LCAyNDEsIDExOSwgOCwgNiwgMSwgMjAzLCA0OSwgOCwgNCwgMSwgMjAzLCA0OSwgOCwgNiwgMSwgMjM4LCA4MSwgCisgICAgOCwgNCwgMSwgMjM4LCA4MSwgOCwgNiwgMSwgMjI4LCAyNiwgOCwgNCwgMSwgMjI4LCAyNiwgOCwgNiwgMSwgMjQzLCA2OCwgCisgICAgOCwgNCwgMSwgMjQzLCA2OCwgNjcsIDEsIDIwMywgMTk3LCA4LCA0LCAxLCAyMzksIDEyNiwgOCwgNCwgMSwgMjI0LCAyNSwgCisgICAgOCwgNCwgMSwgMjIxLCAxNSwgOCwgNCwgMSwgMjE4LCA5NiwgOCwgNCwgMSwgMjEyLCAxNjEsIDgsIDEsIDQsIDYsIDIxMiwgCisgICAgMTYxLCA4LCA0LCAxLCAyMDQsIDIwMywgOCwgNCwgMSwgMjA0LCAxMiwgOCwgNiwgMSwgMjI4LCA3MSwgMjQyLCAxNTMsIDgsIAorICAgIDQsIDEsIDIyOCwgNzEsIDI0MiwgMTUzLCA4LCA2LCAxLCAyMjgsIDcxLCAyMzgsIDUsIDgsIDQsIDEsIDIyOCwgNzEsIDIzOCwgCisgICAgNSwgOCwgNiwgMSwgMjI4LCA3MSwgMjM2LCAxNTYsIDgsIDYsIDEsIDIwNCwgMTg1LCAyMjgsIDcxLCAyMzYsIDE1NiwgOCwgCisgICAgNCwgMSwgMjA0LCAxODUsIDIyOCwgNzEsIDIzNiwgMTU2LCA4LCA2LCAxLCAyMDQsIDE4NSwgMTU2LCA4LCA0LCAxLCAyMDQsIAorICAgIDE4NSwgMTU2LCA4LCA2LCAxLCAyMjgsIDcxLCAxNDYsIDgsIDQsIDEsIDIyOCwgNzEsIDE0NiwgOCwgNiwgMSwgMjI4LCA3MSwgCisgICAgMjEyLCAxMjIsIDgsIDQsIDEsIDIyOCwgNzEsIDIxMiwgMTIyLCA4LCA2LCAxLCAyMjgsIDcxLCAyMDcsIDgzLCA4LCA0LCAxLCAKKyAgICAyMjgsIDcxLCAyMDcsIDgzLCA2NywgMSwgMTI4LCAyNDYsIDE0NywgMjUxLCAyNTEsIDY3LCAxLCAyNDYsIDc5LCA2NywgMSwgCisgICAgMjA5LCAyNTAsIDIzOCwgMTIyLCA1NCwgOCwgNiwgMSwgMjEyLCAyNSwgOCwgNCwgMSwgMjEyLCAyNSwgOCwgNiwgMSwgMjA0LCAKKyAgICAxODUsIDIzNCwgMjQ3LCA4LCA0LCAxLCAyMjUsIDE5MywgMywgMjEzLCAxMTEsIDIzMywgMTg3LCAyNiwgMjQ4LCAyMjYsIDgsIAorICAgIDEsIDIwOSwgMTMyLCAyNDAsIDE4MiwgOCwgNiwgMSwgMjIwLCAyMTUsIDMsIDI0MSwgMTE5LCA4LCA0LCAxLCAyMjAsIDIxNSwgCisgICAgMywgMjQxLCAxMTksIDgsIDYsIDEsIDI0NywgMjI0LCAzLCAxNDgsIDgsIDQsIDEsIDI0NywgMjI0LCAzLCAxNDgsIDgsIDQsIAorICAgIDEsIDI0NywgMjI0LCAzLCAyMTYsIDE4NCwgMTE3LCA4LCA0LCAxLCAyMzQsIDI0OCwgMywgMjE2LCAxODQsIDExNywgOCwgNiwgCisgICAgMSwgNjgsIDMsIDIzNywgMjYsIDgsIDQsIDEsIDY4LCAzLCAyMzcsIDI2LCA4LCA2LCAxLCAyMzgsIDYsIDMsIDk3LCA4LCA0LCAKKyAgICAxLCAyMzgsIDYsIDMsIDk3LCA4LCA2LCAxLCAyMDIsIDE4NSwgMjUxLCAyMjEsIDgsIDQsIDEsIDIwMiwgMTg1LCAyNTEsIAorICAgIDIyMSwgOCwgNiwgMSwgMjAyLCAxODUsIDIxNywgMTIxLCA4LCA0LCAxLCAyMDIsIDE4NSwgMjE3LCAxMjEsIDgsIDYsIDEsIAorICAgIDIwMiwgMTg1LCAyMDQsIDMxLCA4LCA0LCAxLCAyMDIsIDE4NSwgMjA0LCAzMSwgOCwgNiwgMSwgMjM2LCAxNTcsIDMsIDIxNywgCisgICAgMTM4LCA5NywgOCwgNCwgMSwgMjM2LCAxNTcsIDMsIDIxNywgMTM4LCA5NywgOCwgNiwgMSwgMjI3LCAxMTksIDMsIDIxNywgCisgICAgMTM4LCA5NywgOCwgNCwgMSwgMjI3LCAxMTksIDMsIDIxNywgMTM4LCA5NywgOCwgNiwgMSwgMjIwLCAyMTUsIDMsIDIxNywgCisgICAgMTM4LCA5NywgOCwgNCwgMSwgMjIwLCAyMTUsIDMsIDIxNywgMTM4LCA5NywgOCwgNiwgMSwgMjE0LCAzMywgMywgMjE3LCAKKyAgICAxMzgsIDk3LCA4LCA0LCAxLCAyMTQsIDMzLCAzLCAyMTcsIDEzOCwgOTcsIDgsIDYsIDEsIDIxMiwgMTIzLCAzLCAyMTcsIAorICAgIDEzOCwgOTcsIDgsIDQsIDEsIDIxMiwgMTIzLCAzLCAyMTcsIDEzOCwgOTcsIDgsIDYsIDEsIDIzNCwgMjQ4LCAzLCAxMTcsIAorICAgIDgsIDYsIDEsIDIxMywgMTA1LCAxNzYsIDcyLCA4LCA2LCAxLCAxMzUsIDIzNiwgMTU2LCA4LCA2LCAxLCAyMjUsIDE5MywgMywgCisgICAgMjQ4LCAyMjYsIDgsIDYsIDEsIDQsIDYsIDcwLCA4LCA2LCAxLCAyMDQsIDE4NSwgMjI3LCAxMTgsIDgsIDYsIDEsIDIwNCwgCisgICAgMTg1LCAyMDcsIDgzLCA4LCA2LCAxLCAyMjcsIDI1MiwgMywgMjQyLCAyMzAsIDgsIDYsIDEsIDI0NiwgMjM2LCA4LCA2LCAxLCAKKyAgICAyNDgsIDIwOCwgOCwgNCwgMSwgMjQ4LCAyMDgsIDgsIDYsIDEsIDIxNywgODMsIDgsIDQsIDEsIDIxNywgODMsIDgsIDIzOCwgCisgICAgMTI3LCAxLCAyMDksIDE3MywgNzAsIDY3LCAxLCA2LCAyMzQsIDI0OCwgMywgOTcsIDY3LCAxLCA0LCAzMywgMjE3LCAxMjEsIAorICAgIDgsIDEsIDQsIDYsIDIwNCwgMTg1LCAyMjMsIDI0MywgOCwgMjM4LCAxMjcsIDEsIDIxMywgMTA1LCAyMzgsIDUsIDgsIDIzOCwgCisgICAgMTI3LCAxLCAyMTMsIDEwNSwgMjE2LCAyMjYsIDgsIDIzOCwgMTI3LCAxLCAyMjgsIDUwLCAyMjMsIDI0MywgOCwgMjM4LCAKKyAgICAxMjcsIDEsIDIzMywgMTksIDIyNCwgODAsIDgsIDIzOCwgMTI3LCAxLCAyNTAsIDIzNCwgMjIzLCAyNDMsIDIwNywgMTYzLCAKKyAgICAyMjAsIDE0NSwgMSwgNjIsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgNzAsIDIwNywgMTYzLCAyMjAsIDE0NSwgMiwgMjM5LCAKKyAgICAxMDUsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgNjYsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgNzIsIDIwNywgMTYzLCAyMjAsIAorICAgIDE0NSwgMSwgNzQsIDIwNywgMTYzLCAyMjAsIDE0NSwgMiwgMjM0LCAxNTksIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgMjI2LCAKKyAgICA4OCwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCAyMjYsIDE3OCwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCAyMzUsIDExNiwgCisgICAgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCAyMzUsIDE3MSwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAyLCAyNTEsIDMzLCAyMDcsIAorICAgIDE2MywgMjIwLCAxNDUsIDEsIDI0NiwgOTEsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgMjQ2LCAyMTAsIDIwNywgMTYzLCAKKyAgICAyMjAsIDE0NSwgMSwgMjI3LCAxNjYsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgMjI3LCAyMDksIDIwNywgMTYzLCAyMjAsIAorICAgIDE0NSwgMSwgMjA0LCAyMzAsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgMjA0LCAyMzYsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgCisgICAgMjQxLCAxOTAsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgMjQxLCAxOTksIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgMTM4LCAKKyAgICAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDIwNiwgNjEsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgMjQwLCAyMTEsIDIwNywgCisgICAgMTYzLCAyMjAsIDE0NSwgMSwgMjQxLCA4MCwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCAyMTgsIDI0MSwgMjA3LCAxNjMsIAorICAgIDIyMCwgMTQ1LCAxLCAyMTUsIDEwNiwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCAyMTUsIDIxNywgMjA3LCAxNjMsIDIyMCwgCisgICAgMTQ1LCAxLCAyNDgsIDEyNCwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCAyNDgsIDE5MiwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCAKKyAgICAyMjEsIDEzNiwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCAyMTMsIDEsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgMjI0LCAxMTAsIAorICAgIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgMjEyLCAyMDEsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgMjA5LCAyOSwgMjA3LCAKKyAgICAxNjMsIDIyMCwgMTQ1LCAxLCAyMzMsIDIwNywgMjA3LCAxNjMsIDIyMCwgMTQ1LCAyMiwgMiwgNjIsIDIwNywgMTYzLCAyMjAsIAorICAgIDE0NSwgMjIsIDIsIDcwLCAyMDcsIDE2MywgMjIwLCAxNDUsIDIyLCAyLCA2NiwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAyMiwgMiwgCisgICAgNzIsIDIwNywgMTYzLCAyMjAsIDE0NSwgMjIsIDIsIDIxNywgNjMsIDIwNywgMTYzLCAyMjAsIDE0NSwgMjE1LCAxMDEsIAorICAgIDIyMiwgMTQ5LCAyMDcsIDE2MywgMjIwLCAxNDUsIDIxNSwgMTAxLCAyMjIsIDE0OCwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAKKyAgICAyMTUsIDEwMSwgMjIyLCAxNDcsIDIwNywgMTYzLCAyMjAsIDE0NSwgMjE1LCAxMDEsIDIyMiwgMTQ2LCAxNTcsIDIyOCwgCisgICAgMTAxLCAyMzYsIDIxOSwgMTEyLCAyMTQsIDg3LCAxNTcsIDIyOCwgMTAxLCAyMzYsIDIxOSwgMTEyLCAyMzQsIDIxMywgMTU3LCAKKyAgICAyMjgsIDEwMSwgMjM2LCAyMTksIDEyNiwgMjE0LCA4NSwgMTU3LCAyMjgsIDEwMSwgMjM2LCAyMTksIDExMiwgMjA5LCA5OCwgCisgICAgMTU3LCAyMjgsIDEwMSwgMjM2LCAyMTksIDExMiwgMjM4LCAyMjcsIDE1NywgMjI4LCAxMDEsIDIzNiwgMjE5LCAxMjYsIAorICAgIDIwOSwgOTcsIDE1NywgMjI4LCAxMDEsIDIxNCwgODgsIDgxLCAxNTcsIDIyOCwgMTAxLCAyMTUsIDEzMywgODEsIDE1NywgCisgICAgMjI4LCAxMDEsIDIxMiwgMTQ5LCA4MSwgMTU3LCAyMjgsIDEwMSwgMjE0LCA4OSwgODEsIDIxNSwgMjQxLCAxLCAxNjEsIAorICAgIDIxNSwgMjQxLCAxLCAyMjYsIDIwNywgMjE1LCAyNDEsIDEsIDIzNiwgODksIDIxNSwgMjQxLCAxLCAyMTksIDI1MywgMjE1LCAKKyAgICAyNDEsIDEsIDI0NywgMTkwLCAyMTUsIDI0MSwgMSwgMjQ3LCAzNywgMjE1LCAyNDEsIDEsIDIyNywgMjQ4LCAyMTUsIDI0MSwgCisgICAgMSwgMjE4LCA2MCwgMjE1LCAyNDEsIDEsIDIwNywgMzYsIDIxNSwgMjQxLCAxLCAyMDYsIDEyMiwgMjE1LCAyNDEsIDEsIAorICAgIDI0MiwgNTgsIDIxNSwgMjQxLCAxLCAxODgsIDIxNSwgMjQxLCAxLCAxNzIsIDIxNSwgMjQxLCAxLCAyMTUsIDI0NSwgMjE1LCAKKyAgICAyNDEsIDEsIDI0OSwgMTM2LCAyMTUsIDI0MSwgMSwgMTc4LCAyMTUsIDI0MSwgMSwgMjA1LCAzMiwgMjE1LCAyNDEsIDEsIAorICAgIDIwNSwgMjIsIDIxNSwgMjQxLCAxLCAyMzksIDkzLCAyMTUsIDI0MSwgMSwgMjAxLCAxMTQsIDIxNSwgMjQxLCAxLCAxOTksIAorICAgIDc3LCAyMTUsIDI0MSwgMSwgMTk5LCAxMTQsIDIxNSwgMjQxLCAxLCA0LCA2MiwgMjE1LCAyNDEsIDEsIDE4MywgMjE1LCAKKyAgICAyNDEsIDEsIDIxMywgMjUyLCAyMTUsIDI0MSwgMSwgMTk0LCAyMTUsIDI0MSwgMSwgMjEwLCAxMTQsIDIxNSwgMjQxLCAxLCAKKyAgICAyMTIsIDY0LCAyMTUsIDI0MSwgMSwgMTQ0LCAyMTUsIDI0MSwgMSwgNjIsIDIxNSwgMjQxLCAxLCA3MCwgMjE1LCAyNDEsIDEsIAorICAgIDY2LCAyMTUsIDI0MSwgMSwgNzIsIDIxNSwgMjQxLCAxLCA3NCwgMjE1LCAyNDEsIDEsIDIxNCwgMTU5LCAyMTUsIDI0MSwgMSwgCisgICAgMjAwLCAxODEsIDIxNSwgMjQxLCAxLCAyMzcsIDE5NSwgMjE1LCAyNDEsIDEsIDIzNSwgMjM1LCAyMTUsIDI0MSwgMSwgMjM4LCAKKyAgICAyNTUsIDIxNSwgMjQxLCAyMDgsIDEyLCAxLCAyMDEsIDExNCwgMjE1LCAyNDEsIDIwOCwgMTIsIDEsIDE4MywgMjE1LCAyNDEsIAorICAgIDEsIDIwNCwgMjUzLCAyMTUsIDI0MSwgMSwgMjA0LCAyNDEsIDIxNSwgMjQxLCAxLCAyNDEsIDIyMCwgMjE1LCAyNDEsIDEsIAorICAgIDIxOSwgMjEsIDIxNSwgMjQxLCAxLCAyNTEsIDEwOSwgMTgzLCAyMTUsIDI0MSwgMSwgMjAyLCAxODgsIDIxMCwgMTE0LCAKKyAgICAyMTUsIDI0MSwgMSwgMjAyLCAxODksIDE0NCwgMjE1LCAyNDEsIDEsIDI1MCwgMTcyLCAyMzcsIDE5NSwgMjE1LCAyNDEsIAorICAgIDIwOCwgMTIsIDEsIDIxMywgMjUyLCAyMTUsIDI0MSwgMjA3LCAyMTUsIDEsIDIxMywgMjUyLCAyMTUsIDI0MSwgMSwgMjQ3LCAKKyAgICAxNDksIDIxNSwgMjQxLCAyMDksIDEzOSwgMjM0LCAxMzcsIDgxLCAyMTUsIDI0MSwgNTMsIDIzNCwgMTM3LCA4MSwgMjE1LCAKKyAgICAyNDEsIDEzNCwgMjEwLCAxMDYsIDIxNSwgMjQxLCAxMzQsIDUzLCAyMTAsIDEwNiwgMjExLCAyNDEsIDIsIDI1MSwgMzMsIAorICAgIDIxMSwgMjQxLCAyLCAyMDIsIDIwMywgMjExLCAyNDEsIDEsIDYyLCAyMTEsIDI0MSwgMSwgMjUyLCAxMzgsIDIxMSwgMjQxLCAKKyAgICAxLCA3MCwgMjExLCAyNDEsIDEsIDIyOCwgMTUxLCAyMTEsIDI0MSwgMSwgNjYsIDIxMSwgMjQxLCAxLCAyMDMsIDE4MiwgCisgICAgMjExLCAyNDEsIDEsIDEwOSwgMTQ2LCAyMTEsIDI0MSwgMSwgMTA5LCAyMTIsIDIxNiwgMjExLCAyNDEsIDEsIDEwOSwgMTU2LCAKKyAgICAyMTEsIDI0MSwgMSwgMTA5LCAyMjQsIDEzOSwgMjExLCAyNDEsIDEsIDcyLCAyMTEsIDI0MSwgMSwgMjM4LCAyNTUsIDIxMSwgCisgICAgMjQxLCAxLCAyNTEsIDE3NiwgMjExLCAyNDEsIDEsIDc0LCAyMTEsIDI0MSwgMSwgMjE3LCA2MywgMjExLCAyNDEsIDEsIAorICAgIDI1MCwgMTM5LCAyMTEsIDI0MSwgMSwgMTYxLCAyMTEsIDI0MSwgMSwgMjI2LCAyMDcsIDIxMSwgMjQxLCAxLCAyMzYsIDg5LCAKKyAgICAyMTEsIDI0MSwgMSwgMjM1LCAxOTksIDIxMSwgMjQxLCAxLCAyMTksIDI1MywgMjExLCAyNDEsIDEsIDI0NywgMTkwLCAyMTEsIAorICAgIDI0MSwgMSwgMjQ3LCAzNywgMjExLCAyNDEsIDEsIDIyNywgMjQ4LCAyMTEsIDI0MSwgMSwgMjI3LCAyMTUsIDIxMSwgMjQxLCAKKyAgICAxLCAyMTgsIDYwLCAyMTEsIDI0MSwgMSwgMjA0LCAyNTMsIDIxMSwgMjQxLCAxLCAyMDQsIDI0MSwgMjExLCAyNDEsIDEsIAorICAgIDI0MSwgMjIwLCAyMTEsIDI0MSwgMSwgMjQxLCAyMDQsIDIxMSwgMjQxLCAxLCAyMTksIDIxLCAyMTEsIDI0MSwgMSwgMjA3LCAKKyAgICAzNiwgMjExLCAyNDEsIDEsIDIwNiwgMTIyLCAyMTEsIDI0MSwgMSwgMjQyLCA1OCwgMjExLCAyNDEsIDEsIDI0MSwgMTAwLCAKKyAgICAyMTEsIDI0MSwgMSwgMTg4LCAyMTEsIDI0MSwgMSwgMTcyLCAyMTEsIDI0MSwgMSwgMjE1LCAyNDUsIDIxMSwgMjQxLCAxLCAKKyAgICAyNDksIDEzNiwgMjExLCAyNDEsIDEsIDI0OCwgMjAwLCAyMTEsIDI0MSwgMSwgMTc4LCAyMTEsIDI0MSwgMSwgMTgzLCAyMTEsIAorICAgIDI0MSwgMSwgMjEzLCAyNTIsIDIxMSwgMjQxLCAxLCAxOTQsIDIxMSwgMjQxLCAxLCAyMDMsIDkwLCAyMTEsIDI0MSwgMSwgCisgICAgMjEwLCAxMTQsIDIxMSwgMjQxLCAxLCAyMDgsIDE3OSwgMjExLCAyNDEsIDEsIDIxMiwgNjQsIDIxMSwgMjQxLCAxLCAxNDQsIAorICAgIDIxMSwgMjQxLCAxLCAyMjQsIDEzOCwgMjExLCAyNDEsIDExMSwgMiwgMjM0LCAyMzEsIDIxMSwgMjQxLCAyMiwgMiwgMjUyLCAKKyAgICAxMzgsIDIxMSwgMjQxLCAyMiwgMiwgNzAsIDIxMSwgMjQxLCAyMiwgMiwgMjI4LCAxNTEsIDIxMSwgMjQxLCAyMiwgMiwgNjYsIAorICAgIDIxMSwgMjQxLCAyMiwgMiwgMjAzLCAxODIsIDIxMSwgMjQxLCAyMiwgMiwgMTA5LCAxNDYsIDIxMSwgMjQxLCAyMiwgMiwgCisgICAgMTA5LCAyMTIsIDIxNiwgMjExLCAyNDEsIDIyLCAyLCAxMDksIDE1NiwgMjExLCAyNDEsIDIyLCAyLCAxMDksIDIyNCwgMTM5LCAKKyAgICAyMTEsIDI0MSwgMjIsIDIsIDcyLCAyMTEsIDI0MSwgMjIsIDIsIDIzOCwgMjU1LCAyMTEsIDI0MSwgMjIsIDIsIDI1MSwgCisgICAgMTc2LCAyMTEsIDI0MSwgMjIsIDIsIDc0LCAyMTEsIDI0MSwgMjIsIDIsIDIxNywgNjMsIDIxMSwgMjQxLCAyMiwgMiwgMjUwLCAKKyAgICAxMzksIDIxMSwgMjQxLCAyLCAyMDIsIDIwOCwgMjExLCAyNDEsIDIsIDI0NywgMTQ5LCAyMTEsIDI0MSwgMjQyLCAxMCwgCisgICAgMjExLCAyNDEsIDUzLCAyNDIsIDEwLCAyMTEsIDI0MSwgMTcsIDE5OSwgODEsIDIxMSwgMjQxLCAxNywgMTAyLCAyMTEsIAorICAgIDI0MSwgMTcsIDEwNSwgMjExLCAyNDEsIDE3LCAxNDcsIDIxMSwgMjQxLCAxNywgMTQ5LCAyMTEsIDI0MSwgMTcsIDE2NCwgCisgICAgMjExLCAyNDEsIDE3LCAxODcsIDIxMSwgMjQxLCAxNywgMjEwLCAxMzUsIDIxMSwgMjQxLCAxNywgMTkyLCAyMTEsIDI0MSwgCisgICAgMTcsIDIxOSwgMTEzLCAzOCwgOTQsIDE3LCAxOTksIDgxLCAzOCwgOTQsIDE3LCAxMDIsIDM4LCA5NCwgMTcsIDEwNSwgMzgsIAorICAgIDk0LCAxNywgMTQ3LCAzOCwgOTQsIDE3LCAxNDksIDM4LCA5NCwgMTcsIDE2NCwgMzgsIDk0LCAxNywgMTg3LCAzOCwgOTQsIAorICAgIDE3LCAyMTAsIDEzNSwgMzgsIDk0LCAxNywgMTkyLCAzOCwgOTQsIDE3LCAyMTksIDExMywgMzgsIDk0LCAxLCA2MiwgMzgsIAorICAgIDk0LCAxLCA2NiwgMzgsIDk0LCAxLCAxNjEsIDM4LCA5NCwgMSwgMTg4LCAzOCwgOTQsIDEsIDE3MiwgMzgsIDk0LCAxLCAKKyAgICAyMTMsIDI1MiwgMzgsIDk0LCAxLCAyMDIsIDIzNCwgMzgsIDk0LCAyLCAyNTAsIDEyMiwgOTQsIDIsIDIwOCwgMjQzLCAyNDcsIAorICAgIDE0OSwgOTQsIDIsIDI0NywgMTUwLCAyMDIsIDIwOCwgOTQsIDIsIDUzLCAyNDcsIDE1MCwgMjAyLCAyMDgsIDk0LCAyLCAKKyAgICAyNDcsIDE1MCwgMTA1LCA5NCwgMiwgMjQ3LCAxNTAsIDE0NywgOTQsIDIsIDI0NywgMTUwLCAyNTAsIDEyMiwgOTQsIDIsIAorICAgIDIxNCwgMTk1LCA5NCwgMjM2LCA1MywgMjM3LCA5MywgOTQsIDI0NywgMTI5LCA5NCwgMjM0LCAxMzAsIDk0LCAyLCAyMDksIAorICAgIDE3NywgOTQsIDIyNywgMjQwLCAyMTcsIDg2LCAyMjcsIDE0LCAyMjQsIDIxMSwgMTcsIDE5OSwgODEsIDIyNywgMTQsIDIyNCwgCisgICAgMjExLCAxNywgMTAyLCAyMjcsIDE0LCAyMjQsIDIxMSwgMTcsIDEwNSwgMjI3LCAxNCwgMjI0LCAyMTEsIDE3LCAxNDcsIAorICAgIDIyNywgMTQsIDIyNCwgMjExLCAxNywgMTQ5LCAyMjcsIDE0LCAyMjQsIDIxMSwgMTcsIDE2NCwgMjI3LCAxNCwgMjI0LCAKKyAgICAyMTEsIDE3LCAxODcsIDIyNywgMTQsIDIyNCwgMjExLCAxNywgMjEwLCAxMzUsIDIyNywgMTQsIDIyNCwgMjExLCAxNywgCisgICAgMTkyLCAyMjcsIDE0LCAyMjQsIDIxMSwgMTcsIDIxOSwgMTEzLCAyMjcsIDE0LCAyMjQsIDIxMSwgMSwgMTYxLCAyMjcsIDE0LCAKKyAgICAyMjQsIDIxMSwgMSwgMjI2LCAyMDcsIDIyNywgMTQsIDIyNCwgMjExLCAxLCAyMzYsIDg5LCAyMjcsIDE0LCAyMjQsIDIxMSwgCisgICAgMSwgMjE5LCAyNTMsIDIyNywgMTQsIDIyNCwgMjExLCAxLCAyMTIsIDY0LCAyMjcsIDE0LCAyMjQsIDIxMSwgMSwgMjEwLCAKKyAgICAxMTQsIDIyNywgMTQsIDIyNCwgMjExLCAxLCAxOTksIDExNCwgMjI3LCAxNCwgMjI0LCAyMTEsIDEsIDIxOCwgNjAsIDIyNywgCisgICAgMTQsIDIyNCwgMjExLCAxLCAyMDcsIDM2LCAyMjcsIDE0LCAyMjQsIDIxMSwgMSwgMjMzLCAxMDEsIDIyNywgMTQsIDIyNCwgCisgICAgMjExLCAxLCAxODgsIDIyNywgMTQsIDIyNCwgMjExLCAxLCAxNzIsIDIyNywgMTQsIDIyNCwgMjExLCAxLCAyMTUsIDI0NSwgCisgICAgMjI3LCAxNCwgMjI0LCAyMTEsIDEsIDE3OCwgMjI3LCAxNCwgMjI0LCAyMTEsIDEsIDI0MiwgNTgsIDIyNywgMTQsIDIyNCwgCisgICAgMjExLCAxLCAyNDksIDEzNiwgMjI3LCAxNCwgMjI0LCAyMTEsIDEsIDIxMywgMjUyLCAyMjcsIDE0LCAyMjQsIDIxMSwgMSwgCisgICAgMTgzLCAyMjcsIDE0LCAyMjQsIDIxMSwgMSwgMTk0LCAyMjcsIDE0LCAyMjQsIDIxMSwgMSwgMjAxLCAxMTQsIDIyNywgMTQsIAorICAgIDIyNCwgMjExLCAxLCAyMDYsIDEyMiwgMjI3LCAxNCwgMjI0LCAyMTEsIDEsIDE0NCwgMjI3LCAxNCwgMjI0LCAyMTEsIDEsIAorICAgIDIwMywgOTAsIDIyNywgMTQsIDIyNCwgMjExLCAxLCAyNDcsIDE5MCwgMjI3LCAxNCwgMjI0LCAyMTEsIDEsIDYyLCAyMjcsIAorICAgIDE0LCAyMjQsIDIxMSwgMSwgMjE3LCAxMjEsIDIyNywgMTQsIDIyNCwgMjExLCAxLCA3MCwgMjI3LCAxNCwgMjI0LCAyMTEsIAorICAgIDEsIDIxNywgNjMsIDIyNywgMTQsIDIyNCwgMjExLCAyMiwgMjA0LCAzMSwgMjI3LCAxNCwgMjI0LCAyMTEsIDIyLCA3MiwgCisgICAgMjI3LCAxNCwgMjI0LCAyMTEsIDIyLCA2NiwgMjI3LCAxNCwgMjI0LCAyMTEsIDIyLCAyMzgsIDI1NSwgMjI3LCAxNCwgMjI0LCAKKyAgICAyMTEsIDIyLCA3NCwgMjI3LCAxNCwgMjI0LCAyMTEsIDE1MCwgMjE1LCAxMjEsIDIyNywgMTQsIDIyNCwgMjExLCAxNTAsIAorICAgIDI0NywgMTY1LCAyMjcsIDE0LCAyMjQsIDIxMSwgMTUwLCAyNDcsIDE2NiwgMjE1LCAxMjEsIDIyNywgMTQsIDIyNCwgMjExLCAKKyAgICAyLCAyNDIsIDE3MiwgMjI3LCAxNCwgMjI0LCAyMTEsIDIsIDIwOSwgMTkwLCAyMTMsIDE1MSwgMSwgMTYxLCAyMTMsIDE1MSwgCisgICAgMSwgMjM2LCA4OSwgMjEzLCAxNTEsIDEsIDIxOSwgMjUzLCAyMTMsIDE1MSwgMSwgMjA3LCAzNiwgMjEzLCAxNTEsIDEsIAorICAgIDI0MiwgNTgsIDIxMywgMTUxLCAxLCAxODgsIDIxMywgMTUxLCAxLCAxNzIsIDIxMywgMTUxLCAxLCAyNDksIDEzNiwgMjEzLCAKKyAgICAxNTEsIDEsIDE3OCwgMjEzLCAxNTEsIDEsIDI0NywgMTkwLCAyMTMsIDE1MSwgMSwgMjI3LCAyNDgsIDIxMywgMTUxLCAxLCAKKyAgICAyMTgsIDYwLCAyMTMsIDE1MSwgMSwgMjEyLCA2NCwgMjEzLCAxNTEsIDEsIDIxMywgMjUyLCAyMTMsIDE1MSwgMSwgMTk0LCAKKyAgICAyMTMsIDE1MSwgMSwgMTgzLCAyMTMsIDE1MSwgMSwgMjAxLCAxMTQsIDIxMywgMTUxLCAxLCAxNDQsIDIxMywgMTUxLCAxLCAKKyAgICAyMjIsIDExMCwgMjEzLCAxNTEsIDEsIDIxOSwgMjMyLCAyMTMsIDE1MSwgMSwgMjIwLCA3NSwgMjEzLCAxNTEsIDEsIDIxOCwgCisgICAgMjcsIDIxMywgMTUxLCAxLCA2MiwgMjEzLCAxNTEsIDIyLCAyLCA3MCwgMjEzLCAxNTEsIDIyLCAyLCA2NiwgMjEzLCAxNTEsIAorICAgIDIyLCAyLCA3MiwgMjEzLCAxNTEsIDIyLCAyLCAyNTEsIDE3NiwgMjEzLCAxNTEsIDIyLCAyLCA3NCwgMjEzLCAxNTEsIDIyLCAKKyAgICAyLCAyNTAsIDEzOSwgMjEzLCAxNTEsIDIyLCAyLCAyMzgsIDY5LCAyMTMsIDE1MSwgMjIsIDIsIDIzOSwgMjcsIDIxMywgCisgICAgMTUxLCAxMTEsIDIsIDIxOSwgMjU1LCAyMTMsIDE1MSwgMTExLCAyLCAyMjAsIDIxNCwgMjEzLCAxNTEsIDExMSwgMiwgMTQ2LCAKKyAgICAyMTMsIDE1MSwgMTExLCAyLCAyMzQsIDI0NywgMjEzLCAxNTEsIDIwMiwgMjA4LCAyMTMsIDE1MSwgMjExLCAxOTMsIDgxLCAKKyAgICAyOSwgMTI5LCAyMDUsIDI0OSwgMjksIDEyOSwgMjA1LCAyNDgsIDI5LCAxMjksIDIwNSwgMjQ2LCAyOSwgMTI5LCAyMDUsIAorICAgIDI1MSwgMjksIDEyOSwgMjEzLCA3MywgMjksIDEyOSwgMjEzLCA1NywgMjksIDEyOSwgMjEzLCA1MiwgMjksIDEyOSwgMjEzLCAKKyAgICA1NCwgMjksIDEyOSwgMjEzLCA3MCwgMjksIDEyOSwgMjEzLCA2MywgMjksIDEyOSwgMjEzLCA1NiwgMjksIDEyOSwgMjEzLCAKKyAgICA3NSwgMjksIDEyOSwgMjEzLCA1OCwgMjksIDEyOSwgMjEzLCA3NywgMjksIDEyOSwgMjEzLCA3NCwgMjksIDEyOSwgMjIxLCAKKyAgICAxOTMsIDI5LCAxMjksIDIyMSwgMTg0LCAyOSwgMTI5LCAyMjEsIDE4NywgMjksIDEyOSwgMjE1LCAxNzUsIDI5LCAxMjksIAorICAgIDIxNSwgMTg2LCAyOSwgMTI5LCAyMTUsIDE4NywgMjksIDEyOSwgMjA4LCAxNjMsIDI5LCAxMjksIDIyOCwgMTY0LCAyOSwgCisgICAgMTI5LCAyMjgsIDE3MSwgMjksIDEyOSwgMjA4LCAxNzQsIDI5LCAxMjksIDIwOCwgMTYxLCAyOSwgMTI5LCAyMTUsIDIyNiwgCisgICAgMjksIDEyOSwgMjM0LCA2MSwgMjksIDEyOSwgMjA4LCAxNTgsIDIyNywgMjMzLCAyLCAyMTYsIDE0MSwgMjI3LCAyMzMsIDIsIAorICAgIDI0NywgNzMsIDIyNywgMjMzLCAyLCAyMjUsIDQ4LCAyMjcsIDIzMywgMiwgMjAxLCAyMSwgMjI3LCAyMzMsIDEsIDYyLCAKKyAgICAyMjcsIDIzMywgMSwgMjMzLCAxOSwgMjI3LCAxOCwgMjI3LCAyMzMsIDEsIDcwLCAyMjcsIDIzMywgMSwgMjI4LCAxNTEsIAorICAgIDIyNywgMjMzLCAxLCA2NiwgMjI3LCAyMzMsIDEsIDIxNiwgMjExLCAyNDcsIDQzLCAyMjcsIDIzMywgMSwgMjE5LCAyNTQsIAorICAgIDIyNSwgNywgMjI3LCAyMzMsIDEsIDIxOSwgMjU0LCAyMjUsIDgsIDIxMywgMjA1LCAyMjcsIDIzMywgMSwgNzIsIDIyNywgCisgICAgMjMzLCAxLCAyNTEsIDE3NiwgMjI3LCAyMzMsIDEsIDc0LCAyMjcsIDIzMywgMSwgMTYxLCAyMjcsIDIzMywgMSwgMjI3LCAKKyAgICAxMDgsIDIxMSwgMjUzLCAyMjcsIDIzMywgMSwgMjI3LCAxMDgsIDIyMSwgMCwgMjI3LCAyMzMsIDEsIDIzNiwgODksIDIyNywgCisgICAgMjMzLCAxLCAyMzYsIDkwLCAyMjEsIDAsIDIyNywgMjMzLCAxLCAyMTksIDI1MywgMjI3LCAyMzMsIDEsIDI0NywgMTkwLCAKKyAgICAyMjcsIDIzMywgMSwgMjQ3LCAxOTEsIDIyMSwgMCwgMjI3LCAyMzMsIDEsIDIyNywgMjQ4LCAyMjcsIDIzMywgMSwgMjE4LCAKKyAgICA2MSwgMjIxLCAwLCAyMjcsIDIzMywgMSwgMjI3LCAyNDksIDIyMiwgMjAyLCAyMjcsIDIzMywgMSwgMjE4LCA2MCwgMjI3LCAKKyAgICAyMzMsIDEsIDIwNCwgMjUzLCAyMjcsIDIzMywgMSwgMjA0LCAyNTQsIDIyMiwgMjAyLCAyMjcsIDIzMywgMSwgMjQxLCAyMjAsIAorICAgIDIyNywgMjMzLCAxLCAyNDEsIDIyMSwgMjIyLCAyMDIsIDIyNywgMjMzLCAxLCAyMjAsIDE2MiwgMjIxLCAwLCAyMjcsIDIzMywgCisgICAgMSwgMjA3LCAzNiwgMjI3LCAyMzMsIDEsIDIwNywgMzcsIDIyMSwgMCwgMjI3LCAyMzMsIDEsIDI0MiwgNTgsIDIyNywgMjMzLCAKKyAgICAxLCAyNDIsIDU5LCAyMjIsIDIwMiwgMjI3LCAyMzMsIDEsIDE4OCwgMjI3LCAyMzMsIDEsIDE3MiwgMjI3LCAyMzMsIDEsIAorICAgIDIxNiwgMjExLCAyMjEsIDAsIDIyNywgMjMzLCAxLCAyNDksIDEzNiwgMjI3LCAyMzMsIDEsIDI0OSwgMTM3LCAyMjEsIDAsIAorICAgIDIyNywgMjMzLCAxLCAxNzgsIDIyNywgMjMzLCAxLCAxODMsIDIyNywgMjMzLCAxLCAyMTMsIDI1MiwgMjI3LCAyMzMsIDEsIAorICAgIDIxMywgMjUzLCAyNTEsIDE4NiwgMjI3LCAyMzMsIDEsIDE5NCwgMjI3LCAyMzMsIDEsIDIwMSwgMTE0LCAyMjcsIDIzMywgMSwgCisgICAgMjEyLCA2NSwgMjIxLCAwLCAyMjcsIDIzMywgMSwgMjEyLCA2NSwgMjIyLCAyMDIsIDIyNywgMjMzLCAxLCAyMTIsIDY0LCAKKyAgICAyMjcsIDIzMywgMSwgMTQ0LCAyMjcsIDIzMywgMiwgMjQ3LCA3NCwgMjA2LCAxNjksIDIyNywgMjMzLCAyMiwgMiwgMjA2LCAKKyAgICAyMjgsIDIyNywgMjMzLCAyMiwgMiwgMjA1LCAxNzksIDIyNywgMjMzLCAyMiwgMiwgMjAwLCAyMTAsIDIyNywgMjMzLCAyMiwgCisgICAgMiwgMjAwLCAyMTEsIDIyMiwgNTEsIDIyNywgMjMzLCAyMiwgMiwgMjA3LCAyMzgsIDIyNywgMjMzLCAyMiwgMiwgMjA3LCAKKyAgICAyMzksIDIyMiwgMzksIDIyNywgMjMzLCAyMiwgMiwgMjA2LCAyNDksIDIyNywgMjMzLCAyMiwgMiwgMjQxLCA2LCAyMjAsIAorICAgIDI1NSwgMjI3LCAyMzMsIDIyLCAyLCAyMTYsIDMwLCAyMjcsIDIzMywgMTExLCAyLCAyMjYsIDIzNiwgMjI3LCAyMzMsIDExMSwgCisgICAgMiwgMjE2LCA0NCwgMjI3LCAyMzMsIDExMSwgMiwgMjQ3LCAxNzUsIDIyNywgMjMzLCAyMTYsIDE1NCwgMjI3LCAyMzMsIDQ5LCAKKyAgICAyMTMsIDEyNSwgMjI3LCAyMzMsIDUxLCAyMTMsIDEyNSwgMjI3LCAyMzMsIDIxNiwgMjAwLCAyNTEsIDc4LCAyMjcsIDIzMywgCisgICAgMjE2LCAyMDAsIDIyMiwgMjIwLCAyMjcsIDIzMywgMjE2LCAyMDAsIDIyNCwgMjksIDIyNywgMjMzLCAyMTYsIDIwMCwgMjAxLCAKKyAgICAxNCwgMjI3LCAyMzMsIDIxNiwgMjAwLCAyMTYsIDE1NSwgMjI3LCAyMzMsIDIxNiwgMjAwLCAyMjQsIDE2OCwgMjI3LCAyMzMsIAorICAgIDIxNiwgMjAwLCAyMjQsIDIzLCAyMjcsIDIzMywgMjE2LCAyMDAsIDI1MSwgMjI5LCAyMjcsIDIzMywgMjE2LCAyMDAsIDI1MSwgCisgICAgMjMwLCAyNTEsIDIyOSwgMjI3LCAyMzMsIDIxNiwgMjAwLCAyMTUsIDE0NCwgMjI3LCAyMzMsIDIwNCwgMTg1LCAyMTYsIAorICAgIDIwMCwgMjE1LCAxNDQsIDIyNywgMjMzLCAyMTYsIDE1MCwgMjI3LCAyMzMsIDE3LCAxOTksIDgxLCAyMjcsIDIzMywgMTcsIAorICAgIDEwMiwgMjI3LCAyMzMsIDE3LCAxMDUsIDIyNywgMjMzLCAxNywgMTQ3LCAyMjcsIDIzMywgMTcsIDE0OSwgMjI3LCAyMzMsIAorICAgIDE3LCAxNjQsIDIyNywgMjMzLCAxNywgMTg3LCAyMjcsIDIzMywgMTcsIDIxMCwgMTM1LCAyMjcsIDIzMywgMTcsIDE5MiwgCisgICAgMjI3LCAyMzMsIDE3LCAyMTksIDExMywgMjI3LCAyMzMsIDIxNiwgMjAwLCAyMDUsIDIxNSwgMjA0LCAyMDAsIDIyNywgMjMzLCAKKyAgICAyMTYsIDIwMCwgMjI4LCAyMiwgNzEsIDEsIDIxMCwgOTAsIDIzNSwgMTk5LCA3MSwgMSwgMjEwLCA5MCwgMjQ3LCAzNywgNzEsIAorICAgIDEsIDIxMCwgOTAsIDIyNywgMjE1LCA3MSwgMSwgMjEwLCA5MCwgMjE5LCAyMSwgNzEsIDEsIDIxMCwgOTAsIDI0OCwgMjAwLCAKKyAgICA3MSwgMiwgMjEwLCA5MCwgMjExLCAyMzksIDcxLCA2NywgMSwgMjEwLCA5MCwgMjEzLCAxNjgsIDcxLCAxLCA0NiwgMjI1LCAKKyAgICAxNDgsIDIxOCwgNjAsIDcxLCAxLCA0NiwgMjI1LCAxNDgsIDIzNywgMTk1LCA3MSwgMSwgNDYsIDIyNSwgMTQ4LCAyMzYsIAorICAgIDg5LCA3MSwgMSwgNDYsIDIyNSwgMTQ4LCAyMzUsIDE5OSwgNzEsIDEsIDQ2LCAyMjUsIDE0OCwgMjI3LCAyNDgsIDcxLCAxLCAKKyAgICA0NiwgMjI1LCAxNDgsIDIyNywgMjE1LCA3MSwgMSwgNDYsIDIyNSwgMTQ4LCAyNDEsIDIyMCwgNzEsIDEsIDQ2LCAyMjUsIAorICAgIDE0OCwgMjQxLCAyMDQsIDcxLCAxLCA0NiwgMjI1LCAxNDgsIDIxOSwgMjEsIDcxLCA0NiwgMjI1LCAxNDgsIDE3LCAxOTksIAorICAgIDgxLCA3MSwgNDYsIDIyNSwgMTQ4LCAxNywgMTAyLCA3MSwgNDYsIDIyNSwgMTQ4LCAxNywgMTA1LCA3MSwgNDYsIDIyNSwgCisgICAgMTQ4LCAxNywgMTQ3LCA3MSwgNDYsIDIyNSwgMTQ4LCAxNywgMTQ5LCA3MSwgNDYsIDIyNSwgMTQ4LCAxNywgMTY0LCA3MSwgCisgICAgNDYsIDIyNSwgMTQ4LCAxNywgMTg3LCA3MSwgNDYsIDIyNSwgMTQ4LCAxNywgMjEwLCAxMzUsIDcxLCA0NiwgMjI1LCAxNDgsIAorICAgIDE3LCAxOTIsIDcxLCA0NiwgMjI1LCAxNDgsIDE3LCAyMTksIDExMywgNzEsIDEsIDQ2LCAyMjUsIDE0OCwgMjI0LCAxMzgsIAorICAgIDcxLCAxLCA0NiwgMjI1LCAxNDgsIDI0MiwgNTgsIDcxLCAxLCA0NiwgMjI1LCAxNDgsIDI0MSwgMTAwLCA3MSwgMSwgNDYsIAorICAgIDIyNSwgMTQ4LCAyNDksIDEzNiwgNzEsIDEsIDQ2LCAyMjUsIDE0OCwgMjQ4LCAyMDAsIDI0NywgMzAsIDEsIDYyLCAyNDcsIAorICAgIDMwLCAxLCA3MCwgMjQ3LCAzMCwgMSwgNjYsIDI0NywgMzAsIDEsIDcyLCAyNDcsIDMwLCAxLCAyNTEsIDE3NiwgMjQ3LCAzMCwgCisgICAgMSwgNzQsIDI0NywgMzAsIDEsIDE2MSwgMjQ3LCAzMCwgMSwgMjI2LCAyMDcsIDI0NywgMzAsIDEsIDIzNiwgODksIDI0NywgCisgICAgMzAsIDEsIDIzNSwgMTk5LCAyNDcsIDMwLCAxLCAyMTksIDE2MiwgMjQ3LCAzMCwgMSwgMjE5LCAyNTMsIDI0NywgMzAsIDEsIAorICAgIDI0NywgMzcsIDI0NywgMzAsIDEsIDI0NiwgMjM4LCAyNDcsIDMwLCAxLCAyMjcsIDI0OCwgMjQ3LCAzMCwgMSwgMjI3LCAKKyAgICAyMTUsIDI0NywgMzAsIDEsIDIxOSwgMTUyLCAyNDcsIDMwLCAxLCAyMTksIDE1NCwgMjQ3LCAzMCwgMSwgMjE5LCAxNTMsIAorICAgIDI0NywgMzAsIDEsIDIwNywgMzYsIDI0NywgMzAsIDEsIDIwNiwgMTIyLCAyNDcsIDMwLCAxLCAyNDIsIDU4LCAyNDcsIDMwLCAKKyAgICAxLCAyNDEsIDEwMCwgMjQ3LCAzMCwgMSwgMjE4LCAxMDIsIDI0NywgMzAsIDEsIDE4OCwgMjQ3LCAzMCwgMSwgMjQxLCAyMjAsIAorICAgIDI0NywgMzAsIDEsIDE3MiwgMjQ3LCAzMCwgMSwgMjE1LCA0NywgMjQ3LCAzMCwgMSwgMjE1LCAyNDUsIDI0NywgMzAsIDEsIAorICAgIDI0OSwgMTM2LCAyNDcsIDMwLCAxLCAyNDgsIDIwMCwgMjQ3LCAzMCwgMSwgMjIxLCAzMywgMjQ3LCAzMCwgMSwgMTc4LCAKKyAgICAyNDcsIDMwLCAxLCAyNDksIDQ0LCAyNDcsIDMwLCAxLCAxODMsIDI0NywgMzAsIDEsIDIxMywgMjUyLCAyNDcsIDMwLCAxLCAKKyAgICAxOTQsIDI0NywgMzAsIDEsIDIwMywgOTAsIDI0NywgMzAsIDEsIDIwOCwgMTc5LCAyNDcsIDMwLCAxLCAyMTIsIDY0LCAyNDcsIAorICAgIDMwLCAxLCAxNDQsIDI0NywgMzAsIDIyLCAyLCAyNTIsIDEzOCwgMjQ3LCAzMCwgMjIsIDIsIDcwLCAyNDcsIDMwLCAyMiwgMiwgCisgICAgMjI4LCAxNTEsIDI0NywgMzAsIDIyLCAyLCAyMzgsIDIzNCwgMjQ3LCAzMCwgMjIsIDIsIDY2LCAyNDcsIDMwLCAyMiwgMiwgCisgICAgMjE3LCAxMjEsIDI0NywgMzAsIDIyLCAyLCA3NCwgMjQ3LCAzMCwgMjIsIDIsIDI1MSwgMTc2LCAyNDcsIDMwLCAyMiwgMiwgCisgICAgMjUwLCAxMzksIDI0NywgMzAsIDIyLCAyLCAyMDQsIDMxLCAyNDcsIDMwLCAxMTEsIDIsIDE4MywgMjQ3LCAzMCwgMTExLCAyLCAKKyAgICAyMTMsIDI1MiwgMjQ3LCAzMCwgMTExLCAyLCAxOTQsIDI0NywgMzAsIDExMSwgMiwgMjAxLCAxMTQsIDI0NywgMzAsIDEsIAorICAgIDQ3LCAyMjcsIDExOCwgMjQ3LCAzMCwgMSwgNDcsIDIzNiwgMTU2LCAyNDcsIDMwLCAxLCA0NywgMjE5LCAyNTUsIDI0NywgCisgICAgMzAsIDExMSwgMiwgNDcsIDIxOSwgMjU1LCAyNDcsIDMwLCAxLCA0NywgMjQ3LCAzOCwgMjQ3LCAzMCwgMSwgNDcsIDIwNywgCisgICAgODMsIDI0NywgMzAsIDEsIDQ3LCAyMjAsIDIxNCwgMjQ3LCAzMCwgMSwgNDcsIDIxNiwgMjI2LCAyNDcsIDMwLCAxLCA0NywgCisgICAgMjAwLCAxMjMsIDI0NywgMzAsIDEsIDQ3LCAxNDYsIDI0NywgMzAsIDEsIDQ3LCAxNTYsIDI0NywgMzAsIDEsIDQ3LCAyMDgsIAorICAgIDE4MiwgMjQ3LCAzMCwgMTExLCAyLCA0NywgMjIzLCAyNDMsIDI0NywgMzAsIDExMSwgMiwgNDcsIDIzNCwgMjQ3LCAyNDcsIAorICAgIDMwLCAxNywgMTk5LCA4MSwgMjQ3LCAzMCwgMTcsIDEwMiwgMjQ3LCAzMCwgMTcsIDEwNSwgMjQ3LCAzMCwgMTcsIDE0NywgCisgICAgMjQ3LCAzMCwgMTcsIDE0OSwgMjQ3LCAzMCwgMTcsIDE2NCwgMjQ3LCAzMCwgMTcsIDE4NywgMjQ3LCAzMCwgMTcsIDIxMCwgCisgICAgMTM1LCAyNDcsIDMwLCAxNywgMTkyLCAyNDcsIDMwLCAxNywgMjE5LCAxMTMsIDI0NywgMzAsIDIxNCwgMjEyLCAyMDgsIAorICAgIDIxNywgMjQ3LCAzMCwgMjE0LCAyMTIsIDI0MiwgMTAsIDI0NywgMzAsIDIxNCwgMjEyLCA1MywgMjQyLCAxMCwgMjQ3LCAzMCwgCisgICAgMjE0LCAyMTIsIDIwNSwgODMsIDI0MiwgMTAsIDcxLCAxLCAyMjYsIDIwMCwgMjM2LCA4OSwgNzEsIDEsIDIyNiwgMjAwLCAKKyAgICAyNDcsIDE5MCwgNzEsIDEsIDIyNiwgMjAwLCAyNDcsIDM3LCA3MSwgMSwgMjI2LCAyMDAsIDIyNywgMjQ4LCA3MSwgMSwgCisgICAgMjI2LCAyMDAsIDIyNywgMjE1LCA3MSwgMSwgMjI2LCAyMDAsIDIxOCwgNjAsIDcxLCAxLCAyMjYsIDIwMCwgMjA0LCAyNTMsIAorICAgIDcxLCAxLCAyMjYsIDIwMCwgMjA0LCAyNDEsIDcxLCAxLCAyMjYsIDIwMCwgMjQxLCAyMjAsIDcxLCAxLCAyMjYsIDIwMCwgCisgICAgMjQxLCAyMDQsIDcxLCAxLCAyMjYsIDIwMCwgMjQxLCAxMDAsIDcxLCAxLCAyMjYsIDIwMCwgMTg4LCA3MSwgMSwgMjI2LCAKKyAgICAyMDAsIDIxMiwgNjQsIDcxLCAxLCAyMjYsIDIwMCwgMTQ0LCA3MSwgMSwgMjI2LCAyMDAsIDIzNCwgODQsIDcxLCAxLCAyMjYsIAorICAgIDIwMCwgMjM3LCAxOTUsIDcxLCA2NywgMSwgMjI2LCAyMDAsIDIxMywgMTY4LCA3MSwgMSwgMjI2LCAyMDAsIDIwMCwgMTgxLCAKKyAgICA3MSwgMSwgMjI2LCAyMDAsIDE5OSwgMTE0LCA3MSwgMSwgMjI2LCAyMDAsIDIxMywgMjUyLCA3MSwgMjI0LCA5NywgMjI2LCAKKyAgICAyMDAsIDIxNywgMTQzLCA3MSwgMjI0LCA5NywgMjI2LCAyMDAsIDIxNCwgMTEwLCA3MSwgMjI0LCA5NywgMjI2LCAyMDAsIAorICAgIDIzNCwgNiwgNzEsIDE2LCAyNTEsIDE2MywgMjM4LCA0MiwgNzEsIDE2LCAyNTEsIDE2MywgMTAyLCA3MSwgMTYsIDI1MSwgCisgICAgMTYzLCAxMDUsIDcxLCAxLCAyNTEsIDE2MywgMjEzLCAyNTIsIDcxLCAyLCAyMTYsIDEzNywgMjI3LCA0NCwgMjA1LCAxNzQsIAorICAgIDcxLCAyLCA0NiwgMjI1LCAxNDgsIDIwNSwgMTcyLCA3MSwgMiwgNDYsIDIyNSwgMTQ4LCAyMDUsIDE2OSwgNzEsIDEsIDIwOSwgCisgICAgMTk4LCAyMTYsIDE4MSwgMjQ3LCAzNywgNzEsIDEsIDIwOSwgMTk4LCAyMTYsIDE4MSwgMjEwLCAxMTQsIDQ2LCAyMDIsIAorICAgIDIyNCwgMSwgMTI4LCAyMjYsIDg4LCA0NiwgMjAyLCAyMjQsIDEsIDEyMiwgMjI2LCA4OCwgNDYsIDIwMiwgMjI0LCAxLCAKKyAgICAxMjgsIDIyNiwgMTc4LCA0NiwgMjAyLCAyMjQsIDEsIDEyMiwgMjI2LCAxNzgsIDQ2LCAyMDIsIDIyNCwgMSwgMTI4LCAyMjYsIAorICAgIDE4NywgNDYsIDIwMiwgMjI0LCAxLCAxMjIsIDIyNiwgMTg3LCA0NiwgMjAyLCAyMjQsIDEsIDEyOCwgMjM1LCAxMTYsIDQ2LCAKKyAgICAyMDIsIDIyNCwgMSwgMTIyLCAyMzUsIDExNiwgNDYsIDIwMiwgMjI0LCAxLCAxMjgsIDIxOSwgMTc4LCA0NiwgMjAyLCAyMjQsIAorICAgIDEsIDEyMiwgMjE5LCAxNzgsIDQ2LCAyMDIsIDIyNCwgMSwgMTI4LCAyNDYsIDkxLCA0NiwgMjAyLCAyMjQsIDEsIDEyMiwgCisgICAgMjQ2LCA5MSwgNDYsIDIwMiwgMjI0LCAxLCAxMjgsIDI0NiwgMjEwLCA0NiwgMjAyLCAyMjQsIDEsIDEyMiwgMjQ2LCAyMTAsIAorICAgIDQ2LCAyMDIsIDIyNCwgMSwgMTI4LCAyMDksIDI5LCA0NiwgMjAyLCAyMjQsIDEsIDEyMiwgMjA5LCAyOSwgNDYsIDIwMiwgCisgICAgMjI0LCAxLCAxMjgsIDIxOCwgMjYsIDQ2LCAyMDIsIDIyNCwgMSwgMTIyLCAyMTgsIDI2LCA0NiwgMjAyLCAyMjQsIDEsIAorICAgIDEyOCwgMjQwLCAyMTEsIDQ2LCAyMDIsIDIyNCwgMSwgMTIyLCAyNDAsIDIxMSwgNDYsIDIwMiwgMjI0LCAxLCAxMjgsIDEzOCwgCisgICAgNDYsIDIwMiwgMjI0LCAxLCAxMjIsIDEzOCwgNDYsIDIwMiwgMjI0LCAxLCAxMjgsIDIwNiwgNjEsIDQ2LCAyMDIsIDIyNCwgCisgICAgMSwgMTIyLCAyMDYsIDYxLCA0NiwgMjAyLCAyMjQsIDEsIDEyOCwgMjE4LCAyNDEsIDQ2LCAyMDIsIDIyNCwgMSwgMTIyLCAKKyAgICAyMTgsIDI0MSwgNDYsIDIwMiwgMjI0LCAxLCAxMjgsIDI0OCwgMTI0LCA0NiwgMjAyLCAyMjQsIDEsIDEyMiwgMjQ4LCAxMjQsIAorICAgIDQ2LCAyMDIsIDIyNCwgMSwgMTI4LCAyMTUsIDEwNiwgNDYsIDIwMiwgMjI0LCAxLCAxMjIsIDIxNSwgMTA2LCA0NiwgMjAyLCAKKyAgICAyMjQsIDEsIDEyOCwgMjE1LCAyMTcsIDQ2LCAyMDIsIDIyNCwgMSwgMTIyLCAyMTUsIDIxNywgNDYsIDIwMiwgMjI0LCAxLCAKKyAgICAxMjgsIDIzNywgMTMsIDQ2LCAyMDIsIDIyNCwgMSwgMTIyLCAyMzcsIDEzLCA0NiwgMjAyLCAyMjQsIDEsIDEyOCwgMjIxLCAKKyAgICAxMzYsIDQ2LCAyMDIsIDIyNCwgMSwgMTIyLCAyMjEsIDEzNiwgNDYsIDIwMiwgMjI0LCAxLCAxMjgsIDE5OSwgMjQ1LCA0NiwgCisgICAgMjAyLCAyMjQsIDEsIDEyMiwgMTk5LCAyNDUsIDQ2LCAyMDIsIDIyNCwgMSwgMTI4LCAyMTMsIDEsIDQ2LCAyMDIsIDIyNCwgCisgICAgMSwgMTIyLCAyMTMsIDEsIDQ2LCAyMDIsIDIyNCwgMSwgMTI4LCAyMjQsIDExMCwgNDYsIDIwMiwgMjI0LCAxLCAxMjIsIAorICAgIDIyNCwgMTEwLCA0NiwgMjAyLCAyMjQsIDEsIDEyOCwgMjAyLCAxOTMsIDQ2LCAyMDIsIDIyNCwgMSwgMTIyLCAyMDIsIDE5MywgCisgICAgNDYsIDIwMiwgMjI0LCAxLCAxMjgsIDIzMywgMjA3LCA0NiwgMjAyLCAyMjQsIDEsIDEyMiwgMjMzLCAyMDcsIDQ2LCAyMDIsIAorICAgIDIyNCwgMSwgMTI4LCA3NCwgNDYsIDIwMiwgMjI0LCAxLCAxMjIsIDc0LCA0NiwgMjAyLCAyMjQsIDIyMiwgMTk5LCAyMjcsIAorICAgIDY0LCA0NiwgMjAyLCAyMjQsIDIyLCAyNTIsIDEzOCwgNDYsIDIwMiwgMjI0LCAyMiwgNzAsIDQ2LCAyMDIsIDIyNCwgMjIsIAorICAgIDIwNCwgMzEsIDQ2LCAyMDIsIDIyNCwgMjIsIDY2LCA0NiwgMjAyLCAyMjQsIDIyLCA3MiwgNDYsIDIwMiwgMjI0LCAyMiwgCisgICAgNzQsIDQ2LCAyMDIsIDIyNCwgMjIyLCAxOTksIDIyNiwgMTgxLCA0NiwgMjAyLCAyMjQsIDIyLCAyMzIsIDI0MCwgNDYsIAorICAgIDIwMiwgMjI0LCAyMiwgMjA0LCAzMCwgNDYsIDIwMiwgMjI0LCAyMiwgMjA0LCA0NiwgNDYsIDIwMiwgMjI0LCAyMiwgMjUwLCAKKyAgICAxMzcsIDQ2LCAyMDIsIDIyNCwgMjIsIDI1MCwgMTEyLCA0NiwgMjAyLCAyMjQsIDIyLCAyNTEsIDg1LCA0NiwgMjAyLCAyMjQsIAorICAgIDIyLCAyNTEsIDEwMSwgNDYsIDIwMiwgMjI0LCAxNTAsIDIyMiwgMTk5LCAyMzgsIDIxNiwgNDYsIDIwMiwgMjI0LCAxNTAsIAorICAgIDIyMiwgMTk5LCAyMTgsIDEwMSwgNDYsIDIwMiwgMjI0LCAxNTAsIDIyMiwgMTk5LCAyMDYsIDYxLCA0NiwgMjAyLCAyMjQsIAorICAgIDE1MCwgMjIyLCAxOTksIDIwOSwgMTIsIDQ2LCAyMDIsIDIyNCwgMTYsIDIyNiwgNzEsIDQ2LCAyMDIsIDIyNCwgMTYsIDIxOCwgCisgICAgMTAxLCA0NiwgMjAyLCAyMjQsIDE2LCAyMTIsIDIzLCA0NiwgMjAyLCAyMjQsIDE2LCAyMzMsIDIwOCwgMjMzLCAyMDIsIDQ2LCAKKyAgICAyMDIsIDIyNCwgMTYsIDIyNiwgODEsIDIyNiwgODAsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCA3MiwgMjIyLCA1OCwgMjIyLCAKKyAgICAxMTcsIDEsIDc0LCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjQ3LCAzNywgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIxOCwgNjAsIAorICAgIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMDQsIDI1MywgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIwNCwgMjQxLCAyMjIsIDU4LCAKKyAgICAyMjIsIDExNywgMSwgMjQxLCAyMjAsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyNDEsIDIwNCwgMjIyLCA1OCwgMjIyLCAxMTcsIAorICAgIDEsIDIxOSwgMjEsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMTAsIDExNCwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIwOCwgCisgICAgMTc5LCAyMjIsIDU4LCAyMjIsIDExNywgMjIsIDIsIDIyOCwgMTUxLCAyMjIsIDU4LCAyMjIsIDExNywgMjIsIDIsIDIwMywgCisgICAgMTgyLCAyMjIsIDU4LCAyMjIsIDExNywgMjIsIDIsIDI1MiwgMTAyLCAyMjIsIDU4LCAyMjIsIDExNywgMjIsIDIsIDI1MCwgCisgICAgMTM5LCAyMjIsIDU4LCAyMjIsIDExNywgMjIsIDIsIDI1MiwgOTUsIDIyMiwgNTgsIDIyMiwgMTE3LCAyNDYsIDI1MywgMjIyLCAKKyAgICA1OCwgMjIyLCAxMTcsIDI1MSwgMTgyLCAyMjYsIDE3MCwgMjIyLCA1OCwgMjIyLCAxMTcsIDI1MSwgNjIsIDIyMiwgNTgsIAorICAgIDIyMiwgMTE3LCA1LCAyMTMsIDEzMCwgODEsIDIyMiwgNTgsIDIyMiwgMTE3LCAyMDAsIDIzOCwgMjEzLCAxMzAsIDgxLCAKKyAgICAyMjIsIDU4LCAyMjIsIDExNywgMjIsIDIsIDIwMiwgMjAzLCAyMjIsIDU4LCAyMjIsIDExNywgMjAyLCAyMDgsIDM0LCA1LCAKKyAgICAyMDQsIDIzNCwgMzQsIDUsIDIwNCwgMjM3LCAzNCwgNSwgMjA0LCAyNDAsIDM0LCA1LCAyMDQsIDIzOCwgMzQsIDUsIDIwNCwgCisgICAgMjM5LCAzNCwgNSwgMjA0LCAyMzYsIDM0LCA1LCAyNDEsIDE5OCwgMzQsIDUsIDI0MSwgMjAwLCAzNCwgNSwgMjQxLCAyMDMsIAorICAgIDM0LCA1LCAyNDEsIDIwMSwgMzQsIDUsIDI0MSwgMjAyLCAzNCwgNSwgMjQxLCAxOTksIDM0LCA1LCAyMzksIDgwLCAzNCwgNSwgCisgICAgMjM5LCA4NCwgMzQsIDUsIDIzOSwgOTIsIDM0LCA1LCAyMzksIDg5LCAzNCwgNSwgMjM5LCA5MCwgMzQsIDUsIDIzOSwgODEsIAorICAgIDM0LCA1LCAyNDcsIDkwLCAzNCwgNSwgMjQ3LCA4NCwgMzQsIDUsIDI0NywgODYsIDM0LCA1LCAyNDcsIDg5LCAzNCwgNSwgCisgICAgMjQ3LCA4NywgMzQsIDUsIDI0NywgODgsIDM0LCA1LCAyNDcsIDg1LCAzNCwgNSwgMjQ5LCA0NCwgMzQsIDUsIDI0OSwgMjMsIAorICAgIDM0LCA1LCAyNDksIDM1LCAzNCwgNSwgMjQ5LCA0MywgMzQsIDUsIDI0OSwgMzgsIDM0LCA1LCAyNDksIDM5LCAzNCwgNSwgCisgICAgMjQ5LCAyNywgOCwgNCwgMSwgMjQ5LCA3MSwgMjUxLCAxMTIsIDgsIDQsIDEsIDM1LCAyMTMsIDEwMywgOCwgNCwgMSwgMjQ4LCAKKyAgICAxNDAsIDcyLCA4LCA0LCAxLCAyNDksIDcxLCA3MiwgOCwgNCwgMSwgMTk3LCAzLCAyMzcsIDI2LCA4LCA0LCAxLCAyMjQsIAorICAgIDI0OSwgMjM4LCA1LCA4LCA0LCAxLCAxMzUsIDIzNiwgMTU3LCAzLCAyNDIsIDIzMCwgOCwgNCwgMSwgMjI1LCAxOTMsIDMsIAorICAgIDIyOCwgNTAsIDIyNSwgNDcsIDIxMiwgMTIyLCA4LCA0LCAxLCAyMjUsIDE5MywgMywgNTMsIDEwMSwgMjA1LCAyNDAsIDgsIAorICAgIDQsIDEsIDIyNSwgMTkzLCAzLCAxMDEsIDIxMywgMjYsIDgsIDQsIDEsIDIyMywgMjQ0LCAzLCAyNDIsIDIzMCwgOCwgNCwgMSwgCisgICAgMjIwLCAyMTUsIDMsIDI0MiwgMjMwLCA4LCA0LCAxLCAyMzgsIDE2NiwgMywgMjQyLCAyMzAsIDgsIDQsIDEsIDI0OCwgMTQwLCAKKyAgICA3NCwgOCwgNCwgMSwgMjQ4LCAxNDAsIDE2MywgMywgOTcsIDgsIDQsIDEsIDE3NiwgMTYzLCAzLCA5NywgOCwgNCwgMSwgCisgICAgMjI4LCA1MCwgMjE3LCAxMjEsIDgsIDQsIDEsIDIwNCwgMTg1LCAyMTcsIDEyMiwgMywgOTcsIDgsIDQsIDEsIDIwNCwgMTg1LCAKKyAgICAyMTcsIDEyMiwgMywgMjMzLCAxNzcsIDk3LCA4LCA0LCAxLCAyMDQsIDE4NSwgMTYzLCAyMTcsIDQ5LCA4LCA0LCAxLCAyMDQsIAorICAgIDE4NSwgMTYzLCAyMTcsIDUwLCAzLCA5NywgOCwgNCwgMSwgMjA4LCA4MSwgMTQ2LCA4LCAxLCA0LCA2LCAyMTQsIDMzLCAzLCAKKyAgICA1MSwgMjI1LCAxNiwgOCwgNCwgMSwgMjE0LCAzMywgMjAxLCAzLCAyMzQsIDE3NywgOCwgNCwgMSwgNTMsIDE0NiwgOCwgNCwgCisgICAgMSwgMjE0LCAzMywgMywgMjQyLCAyMzAsIDgsIDQsIDEsIDUzLCAyMTQsIDMzLCAzLCAyNDIsIDIzMCwgOCwgNCwgMSwgMTM1LCAKKyAgICAxNDYsIDgsIDQsIDEsIDEzNSwgMjE0LCAzMywgMywgMjEzLCAyNiwgOCwgNCwgMSwgMjQ5LCA2MiwgMjM4LCA5NCwgOCwgNCwgCisgICAgMSwgMTA4LCAzLCAyMDksIDI1MCwgNTEsIDIyNSwgMTYsIDgsIDQsIDEsIDEwOCwgMjQ5LCA3NywgMywgMjA5LCAyNTAsIDUxLCAKKyAgICAyMjUsIDE2LCA4LCA0LCAxLCAyMDQsIDIzLCA4LCA0LCAxLCAyMDQsIDE4NSwgMjA0LCAyMywgOCwgNCwgMSwgMTA4LCAzLCAKKyAgICA0OSwgMTE3LCA4LCA0LCAxLCAyNDYsIDIzNiwgOCwgNCwgMSwgMjQ2LCAyMzcsIDMsIDEyOCwgNTEsIDIxMywgMjYsIDgsIDQsIAorICAgIDEsIDI0NiwgMjM3LCAzLCAxMjgsIDQ5LCAyMTAsIDE0OSwgOCwgNCwgMSwgMjAwLCAxOTYsIDMsIDEyOCwgNTEsIDIxMywgCisgICAgMjYsIDgsIDQsIDEsIDIwMCwgMTk2LCAzLCAxNjgsIDQ5LCAyMjUsIDE2LCA4LCA0LCAxLCAyMDAsIDE5NiwgMywgMTY4LCAKKyAgICA0OSwgMjI1LCAxNywgMjYsIDEyOCwgNTEsIDIxMywgMjYsIDgsIDQsIDEsIDIwMCwgMTk2LCAzLCAxNjgsIDQ5LCAyMjUsIAorICAgIDE3LCAzLCAyMTAsIDE0OSwgOCwgNCwgMSwgMjAwLCAxMjQsIDMsIDIwOSwgMjUwLCA1MSwgMjI1LCAxNiwgNjcsIDI0OCwgCisgICAgNTgsIDMsIDIyOCwgNTAsIDI0OCwgNTcsIDY3LCAxLCA0LCAyMzQsIDEwMywgNjcsIDEsIDQsIDIyNSwgMTkzLCAzLCAyMjgsIAorICAgIDUwLCAyMjUsIDQ3LCAyMTIsIDEyMiwgNjcsIDEsIDQsIDIyNSwgMTkzLCAzLCAxMDEsIDIwNSwgMjQwLCA2NywgMSwgNCwgCisgICAgMTA4LCAzLCA0OSwgMTE3LCA4LCA0LCAxLCAyMTIsIDM5LCAyMDAsIDY1LCA4LCA0LCAxLCAyMjgsIDM5LCA3MiwgOCwgNCwgCisgICAgMSwgMTc2LCAyMTcsIDEyMSwgOCwgNCwgMSwgMjAzLCAyMzIsIDgsIDQsIDEsIDIyOCwgNTAsIDI1MSwgMTEyLCAzMSwgMSwgCisgICAgNCwgNiwgMjE3LCA4MywgOTEsIDQsIDEsIDYyLCA5MSwgNCwgMSwgNzIsIDkxLCA0LCAxLCA3MCwgOTEsIDQsIDEsIDc0LCAKKyAgICA5MSwgNCwgMSwgNjYsIDkxLCA0LCAxLCAyMDMsIDE2OCwgOTEsIDQsIDEsIDIzNiwgODksIDkxLCA0LCAxLCAxNjEsIDkxLCAKKyAgICA0LCAxLCAyMzYsIDE1LCA5MSwgNCwgMSwgMjM1LCAxNjEsIDkxLCA0LCAxLCAyMzUsIDExNiwgOTEsIDQsIDEsIDIzNSwgNTAsIAorICAgIDkxLCA0LCAxLCAyMzUsIDEyLCA5MSwgNCwgMSwgMTQ0LCA5MSwgNCwgMSwgMjM0LCAxMzksIDkxLCA0LCAxLCAyMzQsIDc1LCAKKyAgICA5MSwgNCwgMSwgMjMzLCAyMDcsIDkxLCA0LCAxLCAyMzMsIDk3LCA5MSwgNCwgMSwgMjMzLCA2OSwgOTEsIDQsIDEsIDE5NCwgCisgICAgOTEsIDQsIDEsIDIyNSwgNDAsIDkxLCA0LCAxLCAyMjQsIDIxMCwgOTEsIDQsIDEsIDIyNCwgMTEwLCA5MSwgNCwgMSwgMjI0LCAKKyAgICA0MiwgOTEsIDQsIDEsIDIyNCwgMTEsIDkxLCA0LCAxLCAxNzgsIDkxLCA0LCAxLCAyMjIsIDc2LCA5MSwgNCwgMSwgMjIxLCAKKyAgICAyMTEsIDkxLCA0LCAxLCAyMjEsIDEzNiwgOTEsIDQsIDEsIDIyMSwgNDEsIDkxLCA0LCAxLCAxODgsIDkxLCA0LCAxLCAyMzMsIAorICAgIDIzMSwgOTEsIDQsIDEsIDIyMCwgMTQ0LCA5MSwgNCwgMSwgMjIwLCAzNCwgOTEsIDQsIDEsIDIxOSwgMTUwLCA5MSwgNCwgMSwgCisgICAgMjE4LCAyNDEsIDkxLCA0LCAxLCAyMTgsIDEzMywgOTEsIDQsIDEsIDIxOCwgNzEsIDkxLCA0LCAxLCAyMTQsIDk2LCA5MSwgCisgICAgNCwgMSwgMjE0LCA4MiwgOTEsIDQsIDEsIDIxNCwgNzUsIDkxLCA0LCAxLCAyMTQsIDY2LCA5MSwgNCwgMSwgMjE0LCA1NSwgCisgICAgOTEsIDQsIDEsIDIxNCwgNTMsIDkxLCA0LCAxLCAyMTIsIDY0LCA5MSwgNCwgMSwgMjEyLCAxMjIsIDkxLCA0LCAxLCAyMTEsIAorICAgIDIwMiwgOTEsIDQsIDEsIDIwOSwgMTgyLCA5MSwgNCwgMSwgMjA5LCAyOSwgOTEsIDQsIDEsIDIwOCwgMjQsIDkxLCA0LCAxLCAKKyAgICAyMDcsIDE5MSwgOTEsIDQsIDEsIDI0MiwgNTgsIDkxLCA0LCAxLCAyMDcsIDM2LCA5MSwgNCwgMSwgMjQxLCAxNzUsIDkxLCAKKyAgICA0LCAxLCAyMDYsIDIwMSwgOTEsIDQsIDEsIDI0MSwgNzYsIDkxLCA0LCAxLCAyMDYsIDE1LCA5MSwgNCwgMSwgMjQwLCAyMTEsIAorICAgIDkxLCA0LCAxLCAyMzksIDEzNywgOTEsIDQsIDEsIDIzOSwgMTA3LCA5MSwgNCwgMSwgMjQwLCAyMjIsIDkxLCA0LCAxLCAKKyAgICAyMDUsIDIwMywgOTEsIDQsIDEsIDIwNSwgMjAyLCA5MSwgNCwgMSwgMjA1LCAxOTEsIDkxLCA0LCAxLCAyMDUsIDE5MCwgOTEsIAorICAgIDQsIDEsIDIwNSwgMTg5LCA5MSwgNCwgMSwgMjA1LCAxODgsIDkxLCA0LCAxLCAyMDUsIDMyLCA5MSwgNCwgMSwgMjA1LCAyNiwgCisgICAgOTEsIDQsIDEsIDIwNSwgMTEsIDkxLCA0LCAxLCAyMDUsIDksIDkxLCA0LCAxLCAyMDUsIDUsIDkxLCA0LCAxLCAyMDUsIDQsIAorICAgIDkxLCA0LCAxLCAyMDEsIDExNCwgOTEsIDQsIDEsIDIwMSwgNjQsIDkxLCA0LCAxLCAyMDEsIDMxLCA5MSwgNCwgMSwgMjAxLCAKKyAgICAwLCA5MSwgNCwgMSwgMjAwLCAyMTYsIDkxLCA0LCAxLCAyMDAsIDIwMywgOTEsIDQsIDEsIDE4MywgMjIyLCA1OCwgMjIyLCAKKyAgICAxMTcsIDEsIDIyNiwgNzgsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMTIsIDIzLCAyMjIsIDU4LCAyMjIsIDExNywgMSwgCisgICAgMjI1LCAxNDksIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMjEsIDE0NywgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDE3MiwgMjIyLCAKKyAgICA1OCwgMjIyLCAxMTcsIDEsIDE4OCwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDI0NiwgMjI4LCAyMjIsIDU4LCAyMjIsIDExNywgCisgICAgMSwgMjA1LCAyNDIsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMjYsIDE3MywgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIxOSwgCisgICAgMTY4LCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjA2LCA1MywgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIwMSwgMTA4LCAyMjIsIAorICAgIDU4LCAyMjIsIDExNywgMSwgMjAwLCA3NSwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIzMywgODksIDIyMiwgNTgsIDIyMiwgCisgICAgMTE3LCAxLCAyMDQsIDUsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCA3MCwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIxNSwgMjM5LCAKKyAgICAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjUwLCAxNTAsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMzUsIDEwOSwgMjIyLCA1OCwgCisgICAgMjIyLCAxMTcsIDEsIDIyNywgMjEzLCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjEzLCAyMjksIDIyMiwgNTgsIDIyMiwgMTE3LCAKKyAgICAxLCAyNDksIDEzNiwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIyNywgMTk4LCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjQxLCAKKyAgICAzMywgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIzNSwgMTY4LCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjQxLCA3OCwgMjIyLCAKKyAgICA1OCwgMjIyLCAxMTcsIDEsIDI0OCwgMTk4LCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjI2LCA3OSwgMjI0LCA3OSwgMjIyLCAKKyAgICA1OCwgMjIyLCAxMTcsIDEsIDIyNSwgMTUwLCAyMjQsIDc5LCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjIxLCAxNDgsIDIyNCwgCisgICAgNzksIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMTYsIDIxMSwgMjI0LCA3OSwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIyMCwgCisgICAgMTYyLCAyMjQsIDc5LCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjA1LCAyNDMsIDIyNCwgNzksIDIyMiwgNTgsIDIyMiwgMTE3LCAKKyAgICAxLCAyMTksIDE2OSwgMjI0LCA3OSwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIzMywgMTksIDIyNCwgNzksIDIyMiwgNTgsIAorICAgIDIyMiwgMTE3LCAyMiwgMiwgMjE3LCA3NiwgMjIyLCA1OCwgMjIyLCAxMTcsIDIyLCAyLCAyMjgsIDExNSwgMjIyLCA1OCwgCisgICAgMjIyLCAxMTcsIDIyLCAyLCAyNTEsIDgzLCAyMjIsIDU4LCAyMjIsIDExNywgMjIsIDIsIDIwMCwgNDAsIDIyMiwgNTgsIAorICAgIDIyMiwgMTE3LCAyMiwgMiwgMjA5LCAyLCAyMjIsIDU4LCAyMjIsIDExNywgMjIsIDIsIDIwNCwgMiwgMjIyLCA1OCwgMjIyLCAKKyAgICAxMTcsIDIyLCAyLCAyNDYsIDI1MSwgMjIyLCA1OCwgMjIyLCAxMTcsIDIyLCAyLCAyMTgsIDg2LCAyMjIsIDU4LCAyMjIsIAorICAgIDExNywgMjQ2LCAyNTIsIDIyMiwgNTgsIDIyMiwgMTE3LCAyMjQsIDI2LCAyMjgsIDEsIDIyMiwgNTgsIDIyMiwgMTE3LCAKKyAgICAyNTEsIDIsIDIyOCwgMSwgMjIyLCA1OCwgMjIyLCAxMTcsIDE3LCAxOTksIDgxLCAyMjIsIDU4LCAyMjIsIDExNywgMTcsIAorICAgIDEwMiwgMjIyLCA1OCwgMjIyLCAxMTcsIDE3LCAxMDUsIDIyMiwgNTgsIDIyMiwgMTE3LCAxNywgMTQ3LCAyMjIsIDU4LCAKKyAgICAyMjIsIDExNywgMTcsIDE0OSwgMjIyLCA1OCwgMjIyLCAxMTcsIDE3LCAxNjQsIDIyMiwgNTgsIDIyMiwgMTE3LCAxNywgCisgICAgMTg3LCAyMjIsIDU4LCAyMjIsIDExNywgMTcsIDIxMCwgMTM1LCAyMjIsIDU4LCAyMjIsIDExNywgMTcsIDE5MiwgMjIyLCAKKyAgICA1OCwgMjIyLCAxMTcsIDE3LCAyMTksIDExMywgMjksIDE4MSwgMjE3LCAyMjMsIDI5LCAxODEsIDIxNywgMjI4LCAyOSwgCisgICAgMTgxLCAxOTksIDI0NCwgMjksIDE4MSwgMTk5LCAyNDMsIDI5LCAxODEsIDE5OSwgMjQyLCAyOSwgMTgxLCAyMDQsIDk2LCAKKyAgICAyOSwgMTgxLCAyMDQsIDEwMCwgMjksIDE4MSwgMTk5LCAyMDksIDI5LCAxODEsIDE5OSwgMjA1LCAyOSwgMTgxLCAyMzgsIAorICAgIDY4LCAyOSwgMTgxLCAyMzgsIDY2LCAyOSwgMTgxLCAyMzgsIDY3LCAyOSwgMTgxLCAyMzgsIDY0LCAyOSwgMTgxLCAyMzMsIAorICAgIDksIDI5LCAxODEsIDIzMywgOCwgMjksIDE4MSwgMjMzLCA2LCAyOSwgMTgxLCAyMzMsIDcsIDI5LCAxODEsIDIzMywgMTIsIAorICAgIDI5LCAxODEsIDIzMywgNSwgMjksIDE4MSwgMjMzLCA0LCAyOSwgMTgxLCAyMzMsIDE0LCAyOSwgMTgxLCAyNTAsIDI0NCwgCisgICAgMjksIDE4MSwgMjUwLCAyNDMsIDI5LCAxMTAsIDIxOSwgMTM2LCAyOSwgMTEwLCAyMTksIDE0MiwgMjksIDExMCwgMjA4LCAKKyAgICAxNjAsIDI5LCAxMTAsIDIwOCwgMTU5LCAyOSwgMTEwLCAyMDUsIDI0OCwgMjksIDExMCwgMjA1LCAyNDYsIDI5LCAxMTAsIAorICAgIDIwNSwgMjQ1LCAyOSwgMTEwLCAyMDUsIDI1MSwgMjksIDExMCwgMjA1LCAyNTIsIDI5LCAxMTAsIDIwNSwgMjQ0LCAyOSwgCisgICAgMTEwLCAyMTMsIDU3LCAyOSwgMTEwLCAyMTMsIDcyLCAyOSwgMTEwLCAyMDgsIDE2NiwgMjksIDExMCwgMjEzLCA2OSwgMjksIAorICAgIDExMCwgMjEzLCA1OSwgMjksIDExMCwgMjEzLCA2MSwgMjksIDExMCwgMjEzLCA0OCwgMjksIDExMCwgMjEzLCA0OSwgMjksIAorICAgIDExMCwgMjI3LCA1MCwgMjksIDExMCwgMjIxLCAxOTIsIDI5LCAxMTAsIDIyMSwgMTg2LCAyOSwgMTEwLCAyMDgsIDE3MCwgCisgICAgMjksIDExMCwgMjIxLCAxODksIDI5LCAxMTAsIDIyMSwgMTk1LCAyOSwgMTEwLCAyMTUsIDE3MSwgMjksIDExMCwgMjE1LCAKKyAgICAxODAsIDI5LCAxMTAsIDIxNSwgMTg0LCAyOSwgMTEwLCAyMDgsIDE2OCwgMjksIDExMCwgMjE1LCAxNzQsIDI5LCAxMTAsIAorICAgIDIxNSwgMTg4LCAyOSwgMTEwLCAyMTUsIDE4OSwgMjksIDExMCwgMjA5LCAxMjEsIDI5LCAxMTAsIDIwOSwgMTI0LCAyOSwgCisgICAgMTEwLCAyMDgsIDE2NCwgMjksIDExMCwgMjA4LCAxNjIsIDI5LCAxMTAsIDIwOSwgMTE5LCAyOSwgMTEwLCAyMDksIDEyNywgCisgICAgMjksIDExMCwgMjA5LCAxMjgsIDI5LCAxMTAsIDIwOSwgMTEzLCAyOSwgMTEwLCAyMDksIDEyNiwgMjksIDExMCwgMjE2LCAKKyAgICAxNDQsIDI5LCAxMTAsIDIxNiwgMTQ1LCAyOSwgMTEwLCAyMDAsIDI2LCAyOSwgMTEwLCAyMDAsIDI3LCAyOSwgMTEwLCAyNDYsIAorICAgIDE2NiwgMjksIDExMCwgMjQ2LCAxNjUsIDI5LCAxMTAsIDIwOCwgMTc1LCAyOSwgMTEwLCAyMTUsIDIyNCwgMjksIDExMCwgCisgICAgMjE1LCAyMjMsIDEyLCAxNSwgMjMwLCAxNDIsIDEyLCAxNSwgMjMwLCAxNDEsIDEyLCAxNSwgMjMwLCAxNDAsIDEyLCAxNSwgCisgICAgMjMwLCAxMzksIDEyLCAxNSwgMjMwLCAxMzgsIDEyLCAxNSwgMjMwLCAxMzcsIDEyLCAxNSwgMjMwLCAxMzYsIDEyLCAxNSwgCisgICAgMjMwLCAxMzUsIDEyLCAxNSwgMjMwLCAxMzQsIDEyLCAxNSwgMjMwLCAxMzMsIDEyLCAxNSwgMjMwLCAxMzIsIDEyLCAxNSwgCisgICAgMjMwLCAxMzEsIDEyLCAxNSwgMjMwLCAxMzAsIDEyLCAxNSwgMjMwLCAxMjksIDEyLCAxNSwgMjMwLCAxMjgsIDEyLCAxNSwgCisgICAgMjMwLCAxMjcsIDEyLCAxNSwgMjMwLCAxMjYsIDEyLCAxNSwgMjMwLCAxMjUsIDEyLCAxNSwgMjMwLCAxMjQsIDEyLCAxNSwgCisgICAgMjMwLCAxMjMsIDEyLCAxNSwgMjMwLCAxMjIsIDEyLCAxNSwgMjMwLCAxMjEsIDEyLCAxNSwgMjMwLCAxMjAsIDEyLCAxNSwgCisgICAgMjMwLCAxMTksIDEyLCAxNSwgMjMwLCAxMTgsIDEyLCAxNSwgMjMwLCAxMTcsIDEyLCAxNSwgMjMwLCAxMTYsIDEyLCAxNSwgCisgICAgMjMwLCAxMTUsIDEyLCAxNSwgMjMwLCAxMTQsIDEyLCAxNSwgMjMwLCAxMTMsIDEyLCAxNSwgMjMwLCAxMTIsIDEyLCAxNSwgCisgICAgMjMwLCAxMTEsIDEyLCAxNSwgMjMwLCAxMTAsIDEyLCAxNSwgMjMwLCAxMDksIDEyLCAxNSwgMjMwLCAxMDgsIDEyLCAxNSwgCisgICAgMjMwLCAxMDcsIDEyLCAxNSwgMjMwLCAxMDYsIDEyLCAxNSwgMjMwLCAxMDUsIDEyLCAxNSwgMjMwLCAxMDQsIDEyLCAxNSwgCisgICAgMjMwLCAxMDMsIDEyLCAxNSwgMjMwLCAxMDIsIDEyLCAxNSwgMjMwLCAxMDEsIDEyLCAxNSwgMjMwLCAxMDAsIDEyLCAxNSwgCisgICAgMjMwLCA5OSwgMTIsIDE1LCAyMzAsIDk4LCAxMiwgMTUsIDIzMCwgOTcsIDEyLCAxNSwgMjMwLCA5NiwgMTIsIDE1LCAyMzAsIAorICAgIDk1LCAxMiwgMTUsIDIzMCwgOTQsIDEyLCAxNSwgMjMwLCA5MywgMTIsIDE1LCAyMzAsIDkyLCAxMiwgMTUsIDIzMCwgOTEsIAorICAgIDEyLCAxNSwgMjMwLCA5MCwgMTIsIDE1LCAyMzAsIDg5LCAxMiwgMTUsIDIzMCwgODgsIDEyLCAxNSwgMjMwLCA4NywgMTIsIAorICAgIDE1LCAyMzAsIDg2LCAxMiwgMTUsIDIzMCwgODUsIDEyLCAxNSwgMjMwLCA4NCwgMTIsIDE1LCAyMzAsIDgzLCAxMiwgMTUsIAorICAgIDIzMCwgODIsIDEyLCAxNSwgMjMwLCA4MSwgMTIsIDE1LCAyMzAsIDgwLCAxMiwgMTUsIDIzMCwgNzksIDEyLCAxNSwgMjMwLCAKKyAgICA3OCwgMTIsIDE1LCAyMzAsIDc3LCAxMiwgMTUsIDIzMCwgNzYsIDEyLCAxNSwgMjMwLCA3NSwgMTIsIDE1LCAyMzAsIDc0LCAKKyAgICAxMiwgMTUsIDIzMCwgNzMsIDEyLCAxNSwgMjMwLCA3MiwgMTIsIDE1LCAyMzAsIDcxLCAxMiwgMTUsIDIzMCwgNzAsIDEyLCAKKyAgICAxNSwgMjMwLCA2OSwgMTIsIDE1LCAyMzAsIDY4LCAxMiwgMTUsIDIzMCwgNjcsIDEyLCAxNSwgMjMwLCA2NiwgMTIsIDE1LCAKKyAgICAyMzAsIDY1LCAxMiwgMTUsIDIzMCwgNjQsIDEyLCAxNSwgMjMwLCA2MywgMTIsIDE1LCAyMzAsIDYyLCAxMiwgMTUsIDIzMCwgCisgICAgNjEsIDEyLCAxNSwgMjMwLCA2MCwgMTIsIDE1LCAyMzAsIDU5LCAxMiwgMTUsIDIzMCwgNTgsIDEyLCAxNSwgMjMwLCA1NywgCisgICAgMTIsIDE1LCAyMzAsIDU2LCAxMiwgMTUsIDIzMCwgNTUsIDEyLCAxNSwgMjMwLCA1NCwgMTIsIDE1LCAyMzAsIDUzLCAxMiwgCisgICAgMTUsIDIzMCwgNTIsIDEyLCAxNSwgMjMwLCA1MSwgMTIsIDE1LCAyMzAsIDUwLCAxMiwgMTUsIDIzMCwgNDksIDEyLCAxNSwgCisgICAgMjMwLCA0OCwgMTIsIDE1LCAyMzAsIDQ3LCAxMiwgMTUsIDIzMCwgNDYsIDEyLCAxNSwgMjMwLCA0NSwgMTIsIDE1LCAyMzAsIAorICAgIDQ0LCAxMiwgMTUsIDIzMCwgNDMsIDEyLCAxNSwgMjMwLCA0MiwgMTIsIDE1LCAyMzAsIDQxLCAxMiwgMTUsIDIzMCwgNDAsIAorICAgIDEyLCAxNSwgMjMwLCAzOSwgMTIsIDE1LCAyMzAsIDM4LCAxMiwgMTUsIDIzMCwgMzcsIDEyLCAxNSwgMjMwLCAzNiwgMTIsIAorICAgIDE1LCAyMzAsIDM1LCAxMiwgMTUsIDIzMCwgMzQsIDEyLCAxNSwgMjMwLCAzMywgMTIsIDE1LCAyMzAsIDMyLCAxMiwgMTUsIAorICAgIDIzMCwgMzEsIDEyLCAxNSwgMjMwLCAzMCwgMTIsIDE1LCAyMzAsIDI5LCAxMiwgMTUsIDIzMCwgMjgsIDEyLCAxNSwgMjMwLCAKKyAgICAyNywgMTIsIDE1LCAyMzAsIDI2LCAxMiwgMTUsIDIzMCwgMjUsIDEyLCAxNSwgMjMwLCAyNCwgMTIsIDE1LCAyMzAsIDIzLCAKKyAgICAxMiwgMTUsIDIzMCwgMjIsIDEyLCAxNSwgMjMwLCAyMSwgMTIsIDE1LCAyMzAsIDIwLCAxMiwgMTUsIDIzMCwgMTksIDEyLCAKKyAgICAxNSwgMjMwLCAxOCwgMTIsIDE1LCAyMzAsIDE3LCAxMiwgMTUsIDIzMCwgMTYsIDEyLCAxNSwgMjMwLCAxNSwgMTIsIDE1LCAKKyAgICAyMzAsIDE0LCAxMiwgMTUsIDIzMCwgMTMsIDEyLCAxNSwgMjMwLCAxMiwgMTIsIDE1LCAyMzAsIDExLCAxMiwgMTUsIDIzMCwgCisgICAgMTAsIDEyLCAxNSwgMjMwLCA5LCAxMiwgMTUsIDIzMCwgOCwgMTIsIDE1LCAyMzAsIDcsIDEyLCAxNSwgMjMwLCA2LCAxMiwgCisgICAgMTUsIDIzMCwgNSwgMTIsIDE1LCAyMzAsIDQsIDEyLCAxNSwgMjMwLCAzLCAxMiwgMTUsIDIzMCwgMiwgMTIsIDE1LCAyMzAsIAorICAgIDEsIDEyLCAxNSwgMjMwLCAwLCAxMiwgMTUsIDIyOSwgMjU1LCAxMiwgMTUsIDIyOSwgMjU0LCAxMiwgMTUsIDIyOSwgMjUzLCAKKyAgICAxMiwgMTUsIDIyOSwgMjUyLCAxMiwgMTUsIDIyOSwgMjUxLCAxMiwgMTUsIDIyOSwgMjUwLCAxMiwgMTUsIDIyOSwgMjQ5LCAKKyAgICAxMiwgMTUsIDIyOSwgMjQ4LCAxMiwgMTUsIDIyOSwgMjQ3LCAxMiwgMTUsIDIyOSwgMjQ2LCAxMiwgMTUsIDIyOSwgMjQ1LCAKKyAgICAxMiwgMTUsIDIyOSwgMjQ0LCAxMiwgMTUsIDIyOSwgMjQzLCAxMiwgMTUsIDIyOSwgMjQyLCAxMiwgMTUsIDIyOSwgMjQxLCAKKyAgICAxMiwgMTUsIDIyOSwgMjQwLCAxMiwgMTUsIDIyOSwgMjM5LCAxMiwgMTUsIDIyOSwgMjM4LCAxMiwgMTUsIDIyOSwgMjM3LCAKKyAgICAxMiwgMTUsIDIyOSwgMjM2LCAxMiwgMTUsIDIyOSwgMjM1LCAxMiwgMTUsIDIyOSwgMjM0LCAxMiwgMTUsIDIyOSwgMjMzLCAKKyAgICAxMiwgMTUsIDIyOSwgMjMyLCAxMiwgMTUsIDIyOSwgMjMxLCAxMiwgMTUsIDIyOSwgMjMwLCAxMiwgMTUsIDIyOSwgMjI5LCAKKyAgICAxMiwgMTUsIDIyOSwgMjI4LCAxMiwgMTUsIDIyOSwgMjI3LCAxMiwgMTUsIDIyOSwgMjI2LCAxMiwgMTUsIDIyOSwgMjI1LCAKKyAgICAxMiwgMTUsIDIyOSwgMjI0LCAxMiwgMTUsIDIyOSwgMjIzLCAxMiwgMTUsIDIyOSwgMjIyLCAxMiwgMTUsIDIyOSwgMjIxLCAKKyAgICAxMiwgMTUsIDIyOSwgMjIwLCAxMiwgMTUsIDIyOSwgMjE5LCAxMiwgMTUsIDIyOSwgMjE4LCAxMiwgMTUsIDIyOSwgMjE3LCAKKyAgICAxMiwgMTUsIDIyOSwgMjE2LCAxMiwgMTUsIDIyOSwgMjE1LCAxMiwgMTUsIDIyOSwgMjE0LCAxMiwgMTUsIDIyOSwgMjEzLCAKKyAgICAxMiwgMTUsIDIyOSwgMjEyLCAxMiwgMTUsIDIyOSwgMjExLCAxMiwgMTUsIDIyOSwgMjEwLCAxMiwgMTUsIDIyOSwgMjA5LCAKKyAgICAxMiwgMTUsIDIyOSwgMjA4LCAxMiwgMTUsIDIyOSwgMjA3LCAxMiwgMTUsIDIyOSwgMjA2LCAxMiwgMTUsIDIyOSwgMjA1LCAKKyAgICAxMiwgMTUsIDIyOSwgMjA0LCAxMiwgMTUsIDIyOSwgMjAzLCAxMiwgMTUsIDIyOSwgMjAyLCAxMiwgMTUsIDIyOSwgMjAxLCAKKyAgICAxMiwgMTUsIDIyOSwgMjAwLCAxMiwgMTUsIDIyOSwgMTk5LCAxMiwgMTUsIDIyOSwgMTk4LCAxMiwgMTUsIDIyOSwgMTk3LCAKKyAgICAxMiwgMTUsIDIyOSwgMTk2LCAxMiwgMTUsIDIyOSwgMTk1LCAxMiwgMTUsIDIyOSwgMTk0LCAxMiwgMTUsIDIyOSwgMTkzLCAKKyAgICAxMiwgMTUsIDIyOSwgMTkyLCAxMiwgMTUsIDIyOSwgMTkxLCAxMiwgMTUsIDIyOSwgMTkwLCAxMiwgMTUsIDIyOSwgMTg5LCAKKyAgICAxMiwgMTUsIDIyOSwgMTg4LCAxMiwgMTUsIDIyOSwgMTg3LCAxMiwgMTUsIDIyOSwgMTg2LCAxMiwgMTUsIDIyOSwgMTg1LCAKKyAgICAxMiwgMTUsIDIyOSwgMTg0LCAxMiwgMTUsIDIyOSwgMTgzLCAxMiwgMTUsIDIyOSwgMTgyLCAxMiwgMTUsIDIyOSwgMTgxLCAKKyAgICAxMiwgMTUsIDIyOSwgMTgwLCAxMiwgMTUsIDIyOSwgMTc5LCAxMiwgMTUsIDIyOSwgMTc4LCAxMiwgMTUsIDIyOSwgMTc3LCAKKyAgICAxMiwgMTUsIDIyOSwgMTc2LCAxMiwgMTUsIDIyOSwgMTc1LCAxMiwgMTUsIDIyOSwgMTc0LCAxMiwgMTUsIDIyOSwgMTczLCAKKyAgICAxMiwgMTUsIDIyOSwgMTcyLCAxMiwgMTUsIDIyOSwgMTcxLCAxMiwgMTUsIDIyOSwgMTcwLCAxMiwgMTUsIDIyOSwgMTY5LCAKKyAgICAxMiwgMTUsIDIyOSwgMTY4LCAxMiwgMTUsIDIyOSwgMTY3LCAxMiwgMTUsIDIyOSwgMTY2LCAxMiwgMTUsIDIyOSwgMTY1LCAKKyAgICAxMiwgMTUsIDIyOSwgMTY0LCAxMiwgMTUsIDIyOSwgMTYzLCAxMiwgMTUsIDIyOSwgMTYyLCAxMiwgMTUsIDIyOSwgMTYxLCAKKyAgICAxMiwgMTUsIDIyOSwgMTYwLCAxMiwgMTUsIDIyOSwgMTU5LCAxMiwgMTUsIDIyOSwgMTU4LCAxMiwgMTUsIDIyOSwgMTU3LCAKKyAgICAxMiwgMTUsIDIyOSwgMTU2LCAxMiwgMTUsIDIyOSwgMTU1LCAxMiwgMTUsIDIyOSwgMTU0LCAxMiwgMTUsIDIyOSwgMTUzLCAKKyAgICAxMiwgMTUsIDIyOSwgMTUyLCAxMiwgMTUsIDIyOSwgMTUxLCAxMiwgMTUsIDIyOSwgMTUwLCAxMiwgMTUsIDIyOSwgMTQ5LCAKKyAgICAxMiwgMTUsIDIyOSwgMTQ4LCAxMiwgMTUsIDIyOSwgMTQ3LCAxMiwgMTUsIDIyOSwgMTQ2LCAxMiwgMTUsIDIyOSwgMTQ1LCAKKyAgICAxMiwgMTUsIDIyOSwgMTQ0LCAxMiwgMTUsIDIyOSwgMTQzLCAxMiwgMTUsIDIyOSwgMTQyLCAxMiwgMTUsIDIyOSwgMTQxLCAKKyAgICAxMiwgMTUsIDIyOSwgMTQwLCAxMiwgMTUsIDIyOSwgMTM5LCAxMiwgMTUsIDIyOSwgMTM4LCAxMiwgMTUsIDIyOSwgMTM3LCAKKyAgICAxMiwgMTUsIDIyOSwgMTM2LCAxMiwgMTUsIDIyOSwgMTM1LCAxMiwgMTUsIDIyOSwgMTM0LCAxMiwgMTUsIDIyOSwgMTMzLCAKKyAgICAxMiwgMTUsIDIyOSwgMTMyLCAxMiwgMTUsIDIyOSwgMTMxLCAxMiwgMTUsIDIyOSwgMTMwLCAxMiwgMTUsIDIyOSwgMTI5LCAKKyAgICAxMiwgMTUsIDIyOSwgMTI4LCAxMiwgMTUsIDIyOSwgMTI3LCAxMiwgMTUsIDIyOSwgMTI2LCAxMiwgMTUsIDIyOSwgMTI1LCAKKyAgICAxMiwgMTUsIDIyOSwgMTI0LCAxMiwgMTUsIDIyOSwgMTIzLCAxMiwgMTUsIDIyOSwgMTIyLCAxMiwgMTUsIDIyOSwgMTIxLCAKKyAgICAxMiwgMTUsIDIyOSwgMTIwLCAxMiwgMTUsIDIyOSwgMTE5LCAxMiwgMTUsIDIyOSwgMTE4LCAxMiwgMTUsIDIyOSwgMTE3LCAKKyAgICAxMiwgMTUsIDIyOSwgMTE2LCAxMiwgMTUsIDIyOSwgMTE1LCAxMiwgMTUsIDIyOSwgMTE0LCAxMiwgMTUsIDIyOSwgMTEzLCAKKyAgICAxMiwgMTUsIDIyOSwgMTEyLCAxMiwgMTUsIDIyOSwgMTExLCAxMiwgMTUsIDIyOSwgMTEwLCAxMiwgMTUsIDIyOSwgMTA5LCAKKyAgICAxMiwgMTUsIDIyOSwgMTA4LCAxMiwgMTUsIDIyOSwgMTA3LCAxMiwgMTUsIDIyOSwgMTA2LCAxMiwgMTUsIDIyOSwgMTA1LCAKKyAgICAxMiwgMTUsIDIyOSwgMTA0LCAxMiwgMTUsIDIyOSwgMTAzLCAxMiwgMTUsIDIyOSwgMTAyLCAxMiwgMTUsIDIyOSwgMTAxLCAKKyAgICAxMiwgMTUsIDIyOSwgMTAwLCAxMiwgMTUsIDIyOSwgOTksIDEyLCAxNSwgMjI5LCA5OCwgMTIsIDE1LCAyMjksIDk3LCAxMiwgCisgICAgMTUsIDIyOSwgOTYsIDEyLCAxNSwgMjI5LCA5NSwgMTIsIDE1LCAyMjksIDk0LCAxMiwgMTUsIDIyOSwgOTMsIDEyLCAxNSwgCisgICAgMjI5LCA5MiwgMTIsIDE1LCAyMjksIDkxLCAxMiwgMTUsIDIyOSwgOTAsIDEyLCAxNSwgMjI5LCA4OSwgMTIsIDE1LCAyMjksIAorICAgIDg4LCAxMiwgMTUsIDIyOSwgODcsIDEyLCAxNSwgMjI5LCA4NiwgMTIsIDE1LCAyMjksIDg1LCAxMiwgMTUsIDIyOSwgODQsIAorICAgIDEyLCAxNSwgMjI5LCA4MywgMTIsIDE1LCAyMjksIDgyLCAxMiwgMTUsIDIyOSwgODEsIDEyLCAxNSwgMjI5LCA4MCwgMTIsIAorICAgIDE1LCAyMjksIDc5LCAxMiwgMTUsIDIyOSwgNzgsIDEyLCAxNSwgMjI5LCA3NywgMTIsIDE1LCAyMjksIDc2LCAxMiwgMTUsIAorICAgIDIyOSwgNzUsIDEyLCAxNSwgMjI5LCA3NCwgMTIsIDE1LCAyMjksIDczLCAxMiwgMTUsIDIyOSwgNzIsIDEyLCAxNSwgMjI5LCAKKyAgICA3MSwgMTIsIDE1LCAyMjksIDcwLCAxMiwgMTUsIDIyOSwgNjksIDEyLCAxNSwgMjI5LCA2OCwgMTIsIDE1LCAyMjksIDY3LCAKKyAgICAxMiwgMTUsIDIyOSwgNjYsIDEyLCAxNSwgMjI5LCA2NSwgMTIsIDE1LCAyMjksIDY0LCAxMiwgMTUsIDIyOSwgNjMsIDEyLCAKKyAgICAxNSwgMjI5LCA2MiwgMTIsIDE1LCAyMjksIDYxLCAxMiwgMTUsIDIyOSwgNjAsIDEyLCAxNSwgMjI5LCA1OSwgMTIsIDE1LCAKKyAgICAyMjksIDU4LCAxMiwgMTUsIDIyOSwgNTcsIDEyLCAxNSwgMjI5LCA1NiwgMTIsIDE1LCAyMjksIDU1LCAxMiwgMTUsIDIyOSwgCisgICAgNTQsIDEyLCAxNSwgMjI5LCA1MywgMTIsIDE1LCAyMjksIDUyLCAxMiwgMTUsIDIyOSwgNTEsIDEyLCAxNSwgMjI5LCA1MCwgCisgICAgMTIsIDE1LCAyMjksIDQ5LCAxMiwgMTUsIDIyOSwgNDgsIDEyLCAxNSwgMjI5LCA0NywgMTIsIDE1LCAyMjksIDQ2LCAxMiwgCisgICAgMTUsIDIyOSwgNDUsIDEyLCAxNSwgMjI5LCA0NCwgMTIsIDE1LCAyMjksIDQzLCAxMiwgMTUsIDIyOSwgNDIsIDEyLCAxNSwgCisgICAgMjI5LCA0MSwgMTIsIDE1LCAyMjksIDQwLCAxMiwgMTUsIDIyOSwgMzksIDEyLCAxNSwgMjI5LCAzOCwgMTIsIDE1LCAyMjksIAorICAgIDM3LCAxMiwgMTUsIDIyOSwgMzYsIDEyLCAxNSwgMjI5LCAzNSwgMTIsIDE1LCAyMjksIDM0LCAxMiwgMTUsIDIyOSwgMzMsIAorICAgIDEyLCAxNSwgMjI5LCAzMiwgMTIsIDE1LCAyMjksIDMxLCAxMiwgMTUsIDIyOSwgMzAsIDEyLCAxNSwgMjI5LCAyOSwgMTIsIAorICAgIDE1LCAyMjksIDI4LCAxMiwgMTUsIDIyOSwgMjcsIDEyLCAxNSwgMjI5LCAyNiwgMTIsIDE1LCAyMjksIDI1LCAxMiwgMTUsIAorICAgIDIyOSwgMjQsIDEyLCAxNSwgMjI5LCAyMywgMTIsIDE1LCAyMjksIDIyLCAxMiwgMTUsIDIyOSwgMjEsIDEyLCAxNSwgMjI5LCAKKyAgICAyMCwgMTIsIDE1LCAyMjksIDE5LCAxMiwgMTUsIDIyOSwgMTgsIDEyLCAxNSwgMjI5LCAxNywgMTIsIDE1LCAyMjksIDE2LCAKKyAgICAxMiwgMTUsIDIyOSwgMTUsIDEyLCAxNSwgMjI5LCAxNCwgMTIsIDE1LCAyMjksIDEzLCAxMiwgMTUsIDIyOSwgMTIsIDEyLCAKKyAgICAxNSwgMjI5LCAxMSwgMTIsIDE1LCAyMjksIDEwLCAxMiwgMTUsIDIyOSwgOSwgMTIsIDE1LCAyMjksIDgsIDEyLCAxNSwgCisgICAgMjI5LCA3LCAxMiwgMTUsIDIyOSwgNiwgMTIsIDE1LCAyMjksIDUsIDEyLCAxNSwgMjI5LCA0LCAxMiwgMTUsIDIyOSwgMywgCisgICAgMTIsIDE1LCAyMjksIDIsIDEyLCAxNSwgMjI5LCAxLCAxMiwgMTUsIDIyOSwgMCwgMTIsIDE1LCAyMjgsIDI1NSwgMTIsIDE1LCAKKyAgICAyMjgsIDI1NCwgMTIsIDE1LCAyMjgsIDI1MywgMTIsIDE1LCAyMjgsIDI1MiwgMTIsIDE1LCAyMjgsIDI1MSwgMTIsIDE1LCAKKyAgICAyMjgsIDI1MCwgMTIsIDE1LCAyMjgsIDI0OSwgMTIsIDE1LCAyMjgsIDI0OCwgMTIsIDE1LCAyMjgsIDI0NywgMTIsIDE1LCAKKyAgICAyMjgsIDI0NiwgMTIsIDE1LCAyMjgsIDI0NSwgMTIsIDE1LCAyMjgsIDI0NCwgMTIsIDE1LCAyMjgsIDI0MywgMTIsIDE1LCAKKyAgICAyMjgsIDI0MiwgMTIsIDE1LCAyMjgsIDI0MSwgMTIsIDE1LCAyMjgsIDI0MCwgMTIsIDE1LCAyMjgsIDIzOSwgMTIsIDE1LCAKKyAgICAyMjgsIDIzOCwgMTIsIDE1LCAyMjgsIDIzNywgMTIsIDE1LCAyMjgsIDIzNiwgMTIsIDE1LCAyMjgsIDIzNSwgMTIsIDE1LCAKKyAgICAyMjgsIDIzNCwgMTIsIDE1LCAyMjgsIDIzMywgMTIsIDE1LCAyMjgsIDIzMiwgMTIsIDE1LCAyMjgsIDIzMSwgMTIsIDE1LCAKKyAgICAyMjgsIDIzMCwgMTIsIDE1LCAyMjgsIDIyOSwgMTIsIDE1LCAyMjgsIDIyOCwgMTIsIDE1LCAyMjgsIDIyNywgMTIsIDE1LCAKKyAgICAyMjgsIDIyNiwgMTIsIDE1LCAyMjgsIDIyNSwgMTIsIDE1LCAyMjgsIDIyNCwgMTIsIDE1LCAyMjgsIDIyMywgMTIsIDE1LCAKKyAgICAyMjgsIDIyMiwgMTIsIDE1LCAyMjgsIDIyMSwgMTIsIDE1LCAyMjgsIDIyMCwgMTIsIDE1LCAyMjgsIDIxOSwgMTIsIDE1LCAKKyAgICAyMjgsIDIxOCwgMTIsIDE1LCAyMjgsIDIxNywgMTIsIDE1LCAyMjgsIDIxNiwgMTIsIDE1LCAyMjgsIDIxNSwgMTIsIDE1LCAKKyAgICAyMjgsIDIxNCwgMTIsIDE1LCAyMjgsIDIxMywgMTIsIDE1LCAyMjgsIDIxMiwgMTIsIDE1LCAyMjgsIDIxMSwgMTIsIDE1LCAKKyAgICAyMjgsIDIxMCwgMTIsIDE1LCAyMjgsIDIwOSwgMTIsIDE1LCAyMjgsIDIwOCwgMTIsIDE1LCAyMjgsIDIwNywgMTIsIDE1LCAKKyAgICAyMjgsIDIwNiwgMTIsIDE1LCAyMjgsIDIwNSwgMTIsIDE1LCAyMjgsIDIwNCwgMTIsIDE1LCAyMjgsIDIwMywgMTIsIDE1LCAKKyAgICAyMjgsIDIwMiwgMTIsIDE1LCAyMjgsIDIwMSwgMTIsIDE1LCAyMjgsIDIwMCwgMTIsIDE1LCAyMjgsIDE5OSwgMTIsIDE1LCAKKyAgICAyMjgsIDE5OCwgMTIsIDE1LCAyMjgsIDE5NywgMTIsIDE1LCAyMjgsIDE5NiwgMTIsIDE1LCAyMjgsIDE5NSwgMTIsIDE1LCAKKyAgICAyMjgsIDE5NCwgMTIsIDE1LCAyMjgsIDE5MywgMTIsIDE1LCAyMjgsIDE5MiwgMTIsIDE1LCAyMjgsIDE5MSwgMTIsIDE1LCAKKyAgICAyMjgsIDE5MCwgMTIsIDE1LCAyMjgsIDE4OSwgMTIsIDE1LCAyMjgsIDE4OCwgMTIsIDE1LCAyMjgsIDE4NywgMTIsIDE1LCAKKyAgICAyMjgsIDE4NiwgMTIsIDE1LCAyMjgsIDE4NSwgMTIsIDE1LCAyMjgsIDE4NCwgMTIsIDE1LCAyMjgsIDE4MywgOCwgNCwgMzMsIAorICAgIDIzNywgMTE2LCA4LCA0LCAzMywgMjM3LCAxMTIsIDgsIDQsIDMzLCAyMzcsIDU2LCA4LCA0LCAzMywgMjM3LCAxMTUsIDgsIAorICAgIDQsIDMzLCAyMzcsIDExNCwgOCwgNCwgMzMsIDE2OCwgMjEyLCAxMjMsIDIwNywgODMsIDgsIDQsIDMzLCAyMDgsIDEyMywgCisgICAgMTg0LCA0LCAzMywgMjIyLCA0MSwgMjE4LCAyMDEsIDE4NCwgNCwgMzMsIDIyMiwgNDEsIDIzOSwgNSwgMTg0LCA0LCAzMywgCisgICAgMjIyLCA0MSwgMjI4LCA4NiwgMTg0LCA0LCAzMywgMjAyLCAyMzksIDIxOCwgMjAxLCAxODQsIDQsIDMzLCAyMjIsIDQxLCAKKyAgICAyMDAsIDE3MywgMTEzLCAxLCAxOTksIDIzNSwgMywgMjM0LCA0NywgMTEzLCAyMTUsIDEwMCwgMjI3LCAxNDYsIDIwMywgNzEsIAorICAgIDExMywgMzMsIDIwMCwgNywgMTk5LCAyMzUsIDE5OSwgMjM1LCAyMTYsIDkzLCAxMTMsIDEsIDI1MSwgMTA0LCAyNTAsIDEwNywgCisgICAgMTEzLCAxLCAyMDEsIDI4LCAyNTEsIDE0MiwgMTEzLCAxLCAyMDEsIDI4LCAyNDIsIDIzLCAxMTMsIDEsIDIwMSwgMjgsIAorICAgIDIzNCwgMTM5LCAxMTMsIDEsIDIwMSwgMjgsIDIyNywgODYsIDExMywgMSwgMjAxLCAyOCwgMjI1LCA4MywgMTEzLCAxLCAKKyAgICAyMDEsIDI4LCA0NywgMjIyLCA0NywgMTEzLCAxLCAyMDEsIDI4LCAyMTMsIDEyMywgMTEzLCAxLCAyMDEsIDI4LCAyMDYsIAorICAgIDIxNywgMTEzLCAxLCAyNTEsIDEwNCwgOTMsIDU0LCAxMTMsIDEsIDIxMCwgMjIsIDMsIDIxMCwgMjIsIDI0MCwgMTgyLCAKKyAgICAxMTMsIDEsIDIxMCwgMjIsIDMsIDIwOSwgMTQzLCAyNDAsIDE4MiwgMTEzLCAxLCAyMTAsIDIyLCAzLCAyNDIsIDQzLCAyNiwgCisgICAgMjEwLCAyMiwgMjQwLCAxODIsIDExMywgMSwgMjEwLCAyMiwgMywgMjQyLCA0MywgMjYsIDIwOSwgMTQzLCAyNDAsIDE4MiwgCisgICAgMTEzLCAxLCAxNDAsIDMsIDIxNiwgOTMsIDExMywgMSwgMTQwLCAzLCAyMTQsIDE0NywgMTEzLCAxLCAxNDAsIDMsIDIyMiwgCisgICAgMTYzLCAxMTMsIDEsIDI0OCwgMjExLCAzLCAyNDIsIDQyLCAxMTMsIDEsIDIzNSwgMTQ4LCAzLCAyNDIsIDQyLCAxMTMsIDEsIAorICAgIDI0MiwgMjQsIDMsIDI0MiwgNDIsIDExMywgMSwgMjM0LCAxNDAsIDMsIDIyMiwgMTYzLCAxMTMsIDEsIDIwMywgNjQsIDMsIAorICAgIDI0MiwgNDIsIDExMywgMSwgMTk5LCA5MywgMywgMjQyLCA0MiwgMTEzLCAxLCAyMDYsIDE0NywgMywgMjQyLCA0MiwgMTEzLCAKKyAgICAxLCAxOTksIDIzNSwgMywgMjQyLCA0MiwgMTEzLCAxLCA0NywgMjI3LCA4NywgMywgMjQyLCA0MiwgMTEzLCAxLCAyMjcsIAorICAgIDg3LCAzLCAyNDIsIDQyLCAxMTMsIDEsIDIyNSwgODQsIDMsIDI0MiwgNDIsIDExMywgMSwgMjIyLCA0OCwgMywgMjQyLCA0MiwgCisgICAgMTEzLCAxLCAyMTgsIDkwLCAzLCAyNDIsIDQyLCAxMTMsIDEsIDIxMiwgMjAsIDMsIDI0MiwgNDIsIDExMywgMSwgNDcsIAorICAgIDIxNiwgNzQsIDMsIDI0MiwgNDIsIDExMywgMSwgMjE2LCA3NCwgMywgMjQyLCA0MiwgMTEzLCAxLCAyMDUsIDI4LCAzLCAKKyAgICAyNDIsIDQyLCAxMTMsIDEsIDIxNCwgMTA3LCAzLCAyNDIsIDQyLCAxMTMsIDEsIDIxMywgMTI0LCAzLCAyNDIsIDQyLCAxMTMsIAorICAgIDEsIDIxMCwgMjIsIDMsIDI0MiwgNDIsIDExMywgMSwgMjA2LCAyMTgsIDMsIDI0MiwgNDIsIDExMywgMSwgMjAzLCA2NCwgMywgCisgICAgMjMzLCAxOTksIDExMywgMSwgMjQ4LCAyMTEsIDMsIDIxMywgMjMyLCAxMTMsIDEsIDIyNywgODcsIDMsIDIxMywgMjMyLCAKKyAgICAxMTMsIDEsIDIxNiwgNzQsIDMsIDIxMywgMjMyLCAxMTMsIDMzLCAxNDAsIDIyNSwgODMsIDksIDEsIDE0MCwgMjAxLCA5MCwgCisgICAgNjUsIDE5LCA5LCAxLCAxNDAsIDIwMSwgOTAsIDQ3LCAxOSwgOSwgMSwgMjQ4LCAyNTEsIDY1LCAxOSwgOSwgMSwgMjQ4LCAKKyAgICAyNTEsIDQ3LCAxOSwgOSwgMSwgMjQ4LCAyNTEsIDgyLCAxOSwgOSwgMSwgMjQ4LCAyNTEsIDE3OSwgMTksIDksIDEsIDIxNiwgCisgICAgNTUsIDY1LCAxOSwgOSwgMSwgMjE2LCA1NSwgNDcsIDE5LCA5LCAxLCAyMTYsIDU1LCA4MiwgMTksIDksIDEsIDIxNiwgNTUsIAorICAgIDE3OSwgMTksIDksIDEsIDI0OCwgMjM5LCA2NSwgMTksIDksIDEsIDI0OCwgMjM5LCA0NywgMTksIDksIDEsIDI0OCwgMjM5LCAKKyAgICA4MiwgMTksIDksIDEsIDI0OCwgMjM5LCAxNzksIDE5LCA5LCAxLCAyMDQsIDI0NCwgNjUsIDE5LCA5LCAxLCAyMDQsIDI0NCwgCisgICAgNDcsIDE5LCA5LCAxLCAyMDQsIDI0NCwgODIsIDE5LCA5LCAxLCAyMDQsIDI0NCwgMTc5LCAxOSwgOSwgMSwgMjA2LCAxODIsIAorICAgIDY1LCAxOSwgOSwgMSwgMjA2LCAxODIsIDQ3LCAxOSwgOSwgMSwgMjA2LCAxODIsIDgyLCAxOSwgOSwgMSwgMjA2LCAxODIsIAorICAgIDE3OSwgMTksIDksIDEsIDIwNCwgMjQ2LCA2NSwgMTksIDksIDEsIDIwNCwgMjQ2LCA0NywgMTksIDksIDEsIDIwNCwgMjQ2LCAKKyAgICA4MiwgMTksIDksIDEsIDIwNCwgMjQ2LCAxNzksIDE5LCA5LCAxLCAyMDMsIDUzLCA2NSwgMTksIDksIDEsIDIwMywgNTMsIAorICAgIDQ3LCAxOSwgOSwgMSwgMjAzLCA1MywgODIsIDE5LCA5LCAxLCAyMDMsIDUzLCAxNzksIDE5LCA5LCAxLCAyMTYsIDUzLCA2NSwgCisgICAgMTksIDksIDEsIDIxNiwgNTMsIDQ3LCAxOSwgOSwgMSwgMjE2LCA1MywgODIsIDE5LCA5LCAxLCAyMTYsIDUzLCAxNzksIDE5LCAKKyAgICA5LCAxLCAyMzksIDEwMCwgNjUsIDE5LCA5LCAxLCAyMzksIDEwMCwgNDcsIDE5LCA5LCAxLCAyMzksIDEwMCwgODIsIDE5LCAKKyAgICA5LCAxLCAyMzksIDEwMCwgMTc5LCAxOSwgOSwgMSwgMjE4LCA0OCwgNjUsIDE5LCA5LCAxLCAyMTgsIDQ4LCA0NywgMTksIDksIAorICAgIDEsIDIxOCwgNDgsIDgyLCAxOSwgOSwgMSwgMjE4LCA0OCwgMTc5LCAxOSwgOSwgMSwgMjA2LCAyMDYsIDY1LCAxOSwgOSwgMSwgCisgICAgMjA2LCAyMDYsIDQ3LCAxOSwgOSwgMSwgMjA2LCAyMDYsIDgyLCAxOSwgOSwgMSwgMjA2LCAyMDYsIDE3OSwgMTksIDksIDEsIAorICAgIDIwNiwgMjA0LCA2NSwgMTksIDksIDEsIDIwNiwgMjA0LCA0NywgMTksIDksIDEsIDIwNiwgMjA0LCA4MiwgMTksIDksIDEsIAorICAgIDIwNiwgMjA0LCAxNzksIDE5LCA5LCAxLCAyNDEsIDIxOCwgNjUsIDE5LCA5LCAxLCAyNDEsIDIxOCwgNDcsIDE5LCA5LCAxLCAKKyAgICAyNDIsIDM3LCA2NSwgMTksIDksIDEsIDI0MiwgMzcsIDQ3LCAxOSwgOSwgMSwgMjM5LCAxMjgsIDY1LCAxOSwgOSwgMSwgCisgICAgMjM5LCAxMjgsIDQ3LCAxOSwgOSwgMSwgMjQxLCAyMTYsIDY1LCAxOSwgOSwgMSwgMjQxLCAyMTYsIDQ3LCAxOSwgOSwgMSwgCisgICAgMjI3LCAyMjIsIDY1LCAxOSwgOSwgMSwgMjI3LCAyMjIsIDQ3LCAxOSwgOSwgMSwgMjEyLCAyMDgsIDY1LCAxOSwgOSwgMSwgCisgICAgMjEyLCAyMDgsIDQ3LCAxOSwgOSwgMSwgMjI2LCAyNTMsIDY1LCAxOSwgOSwgMSwgMjI2LCAyNTMsIDQ3LCAxOSwgOSwgMSwgCisgICAgMjI2LCAyNTMsIDgyLCAxOSwgOSwgMSwgMjI2LCAyNTMsIDE3OSwgMTksIDksIDEsIDIzNiwgNzcsIDY1LCAxOSwgOSwgMSwgCisgICAgMjM2LCA3NywgNDcsIDE5LCA5LCAxLCAyMzYsIDc3LCA4MiwgMTksIDksIDEsIDIzNiwgNzcsIDE3OSwgMTksIDksIDEsIAorICAgIDIzNSwgMzgsIDY1LCAxOSwgOSwgMSwgMjM1LCAzOCwgNDcsIDE5LCA5LCAxLCAyMzUsIDM4LCA4MiwgMTksIDksIDEsIDIzNSwgCisgICAgMzgsIDE3OSwgMTksIDksIDEsIDIxOSwgMTc3LCA2NSwgMTksIDksIDEsIDIxOSwgMTc3LCA0NywgMTksIDksIDEsIDIxOSwgCisgICAgMTc3LCA4MiwgMTksIDksIDEsIDIxOSwgMTc3LCAxNzksIDE5LCA5LCAxLCAyMTgsIDIyOCwgMjM1LCAxNjYsIDY1LCAxOSwgCisgICAgOSwgMSwgMjE4LCAyMjgsIDIzNSwgMTY2LCA0NywgMTksIDksIDEsIDIxMywgNSwgNjUsIDE5LCA5LCAxLCAyMTMsIDUsIDQ3LCAKKyAgICAxOSwgOSwgMSwgMjEzLCA1LCA4MiwgMTksIDksIDEsIDIxMywgNSwgMTc5LCAxOSwgOSwgMSwgMjM0LCAxMTYsIDMsIDkwLCAKKyAgICA4OCwgNjUsIDE5LCA5LCAxLCAyMzQsIDExNiwgMywgOTAsIDg4LCA0NywgMTksIDksIDEsIDIzNCwgMTE2LCAyMzUsIDExNCwgCisgICAgNjUsIDE5LCA5LCAxLCAyMzQsIDExNiwgMjM1LCAxMTQsIDQ3LCAxOSwgOSwgMSwgMjM0LCAxMTYsIDIzNSwgMTE0LCA4MiwgCisgICAgMTksIDksIDEsIDIzNCwgMTE2LCAyMzUsIDExNCwgMTc5LCAxOSwgOSwgMSwgMjM0LCAxMTYsIDI0MCwgMjA4LCA2NSwgMTksIAorICAgIDksIDEsIDIzNCwgMTE2LCAyNDAsIDIwOCwgNDcsIDE5LCA5LCAxLCAyMzQsIDExNiwgMjQwLCAyMDgsIDgyLCAxOSwgOSwgMSwgCisgICAgMjM0LCAxMTYsIDI0MCwgMjA4LCAxNzksIDE5LCA5LCAxLCA5MCwgMjQ5LCA3MCwgNjUsIDE5LCA5LCAxLCA5MCwgMjQ5LCAKKyAgICA3MCwgNDcsIDE5LCA5LCAxLCA5MCwgMjQ5LCA3MCwgMywgMjM0LCAyMDQsIDg4LCA2NSwgMTksIDksIDEsIDkwLCAyNDksIAorICAgIDcwLCAzLCAyMzQsIDIwNCwgODgsIDQ3LCAxOSwgOSwgMTYsIDczLCA1NiwgOSwgMTYsIDczLCA1NywgOSwgMTYsIDEyMCwgCisgICAgMTkwLCA1NiwgOSwgMTYsIDEyMCwgMTkwLCA1NywgOSwgMTYsIDEyNiwgMTkwLCA1NiwgOSwgMTYsIDEyNiwgMTkwLCA1NywgCisgICAgOSwgMTYsIDEyNiwgMTkwLCAyMTUsIDk2LCAxOTEsIDU2LCA5LCAxNiwgMTI2LCAxOTAsIDIxNSwgOTYsIDE5MSwgNTcsIDksIAorICAgIDE2LCAyMzYsIDIyOSwgMTkwLCA1NiwgOSwgMTYsIDIzNiwgMjI5LCAxOTAsIDU3LCA5LCAxNiwgNTMsIDgzLCAyNDksIDc3LCAKKyAgICA1NywgOSwgMTYsIDEyMCwgMTkwLCAyMDIsIDI0OCwgNTYsIDksIDE2LCAxMjAsIDE5MCwgMjAyLCAyNDgsIDU3LCA5LCAxNiwgCisgICAgMjEzLCAyNiwgOSwgMTYsIDQsIDIwNywgMTAsIDU2LCA5LCAxNiwgNCwgMjA3LCAxMCwgNTcsIDksIDEsIDIyMCwgMCwgNjUsIAorICAgIDE5LCA5LCAxLCAyMjAsIDAsIDQ3LCAxOSwgOSwgMSwgMjIwLCAwLCA4MiwgMTksIDksIDEsIDIyMCwgMCwgMTc5LCAxOSwgOSwgCisgICAgMSwgMTA4LCA2NSwgMTksIDksIDEsIDEwOCwgNDcsIDE5LCA5LCAxLCAyMTcsIDEyMiwgNjUsIDE5LCA5LCAxLCAyMTcsIAorICAgIDEyMiwgNDcsIDE5LCA5LCAxLCAxOTksIDIxMiwgNjUsIDE5LCA5LCAxLCAxOTksIDIxMiwgNDcsIDE5LCA5LCAxLCAxMDgsIAorICAgIDMsIDIzNCwgMjA0LCA4OCwgNjUsIDE5LCA5LCAxLCAyMDMsIDYwLCA2NSwgMTksIDksIDEsIDIwMywgNjAsIDQ3LCAxOSwgOSwgCisgICAgMSwgMjI2LCAxMzksIDIxNywgMTIyLCA2NSwgMTksIDksIDEsIDIyNiwgMTM5LCAyMTcsIDEyMiwgNDcsIDE5LCA5LCAxLCAKKyAgICAyMjYsIDEzOSwgMTk5LCAyMTIsIDY1LCAxOSwgOSwgMSwgMjI2LCAxMzksIDE5OSwgMjEyLCA0NywgMTksIDksIDEsIDE5NywgCisgICAgNjUsIDE5LCA5LCAxLCAxOTcsIDQ3LCAxOSwgOSwgMSwgMTk3LCA4MiwgMTksIDksIDEsIDE5NywgMTc5LCAxOSwgOSwgMSwgCisgICAgMjA0LCAyMiwgMjI3LCAxMiwgMjI2LCAxMzksIDE0MCwgMjIyLCAxODgsIDgyLCAxOSwgOSwgMSwgMjA0LCAyMiwgMjI3LCAKKyAgICAxMiwgMjI2LCAxMzksIDE0MCwgMjIyLCAxODgsIDE3OSwgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAxNDAsIAorICAgIDY1LCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDE0MCwgNDcsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgCisgICAgMjA0LCA4OCwgMywgMjUxLCAyMjIsIDY1LCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDI1MSwgMjIyLCAKKyAgICA0NywgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAyMDEsIDczLCA2NSwgMTksIDksIDMzLCA5MCwgMywgCisgICAgMjM0LCAyMDQsIDg4LCAzLCAyMDEsIDczLCA0NywgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAxMDgsIDY1LCAKKyAgICAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDEwOCwgNDcsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCAKKyAgICA4OCwgMywgMjE3LCAxMjIsIDY1LCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDIxNywgMTIyLCA0NywgMTksIAorICAgIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAxOTksIDIxMiwgNjUsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCAKKyAgICA4OCwgMywgMTk5LCAyMTIsIDQ3LCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDE5NywgNjUsIDE5LCA5LCAKKyAgICAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMTk3LCA0NywgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAKKyAgICAxOTcsIDgyLCAxOSwgOSwgMzMsIDIwNCwgMjIsIDIyNiwgMTM5LCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAxNDAsIDIyMiwgCisgICAgMTg4LCA2NSwgMTksIDksIDMzLCAyMDQsIDIyLCAyMjYsIDEzOSwgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMTQwLCAyMjIsIAorICAgIDE4OCwgNDcsIDE5LCA5LCAzMywgMjA0LCAyMiwgMjI2LCAxMzksIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDE0MCwgMjIyLCAKKyAgICAxODgsIDgyLCAxOSwgOSwgMSwgMjM3LCAxNjIsIDkwLCA2NSwgMTksIDksIDEsIDIzNywgMTYyLCA5MCwgNDcsIDE5LCA5LCAKKyAgICAxLCAyMzcsIDE2MiwgOTAsIDgyLCAxOSwgOSwgMSwgMjM3LCAxNjIsIDkwLCAxNzksIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgCisgICAgMjA0LCA4OCwgMywgMTkzLCA2NSwgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAxNTUsIDY1LCAxOSwgOSwgCisgICAgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDg0LCA2NSwgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAKKyAgICAxNDAsIDIyMiwgMTg4LCA2NSwgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgCisgICAgMjQ4LCAyNDEsIDMsIDE5MywgNjUsIDE5LCA5LCAzMywgMjQ4LCAyNDEsIDMsIDE1NSwgNjUsIDE5LCA5LCAzMywgMjQ4LCAKKyAgICAyNDEsIDMsIDIyNiwgMjA0LCA2NSwgMTksIDksIDMzLCAyNDgsIDI0MSwgMywgODQsIDY1LCAxOSwgOSwgMzMsIDI0OCwgCisgICAgMjQxLCAzLCAxNDAsIDIyMiwgMTg4LCA2NSwgMTksIDksIDMzLCAyNDgsIDI0MSwgMywgOTAsIDY1LCAxOSwgOSwgMzMsIAorICAgIDIwNiwgMTg0LCAzLCAxOTMsIDY1LCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCAxNTUsIDY1LCAxOSwgOSwgMzMsIDIwNiwgCisgICAgMTg0LCAzLCAyMjYsIDIwNCwgNjUsIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIDg0LCA2NSwgMTksIDksIDMzLCAyMDYsIAorICAgIDE4NCwgMywgMTQwLCAyMjIsIDE4OCwgNjUsIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIDkwLCA2NSwgMTksIDksIDMzLCAKKyAgICAyMDYsIDEwMywgMywgMTkzLCA2NSwgMTksIDksIDMzLCAyMDYsIDEwMywgMywgODQsIDY1LCAxOSwgOSwgMzMsIDIwNiwgCisgICAgMTAzLCAzLCAxNDAsIDIyMiwgMTg4LCA2NSwgMTksIDksIDMzLCAyMDYsIDEwMywgMywgOTAsIDY1LCAxOSwgOSwgMzMsIAorICAgIDE5MywgMywgMTU1LCA2NSwgMTksIDksIDMzLCAxOTMsIDMsIDg0LCA2NSwgMTksIDksIDMzLCAxNTUsIDMsIDE5MywgNjUsIAorICAgIDE5LCA5LCAzMywgMTU1LCAzLCA4NCwgNjUsIDE5LCA5LCAzMywgMjI2LCAyMDQsIDMsIDE5MywgNjUsIDE5LCA5LCAzMywgCisgICAgMjI2LCAyMDQsIDMsIDE1NSwgNjUsIDE5LCA5LCAzMywgMjI2LCAyMDQsIDMsIDg0LCA2NSwgMTksIDksIDMzLCAyMTEsIAorICAgIDE4NywgMywgMTkzLCA2NSwgMTksIDksIDMzLCAyMTEsIDE4NywgMywgMTU1LCA2NSwgMTksIDksIDMzLCAyMTEsIDE4NywgMywgCisgICAgMjI2LCAyMDQsIDY1LCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCA4NCwgNjUsIDE5LCA5LCAzMywgMjEyLCA1NywgMywgMTU1LCAKKyAgICA2NSwgMTksIDksIDMzLCAyMTIsIDU3LCAzLCA4NCwgNjUsIDE5LCA5LCAzMywgMjQyLCA1MywgMywgMTkzLCA2NSwgMTksIDksIAorICAgIDMzLCAyNDIsIDUzLCAzLCAxNTUsIDY1LCAxOSwgOSwgMzMsIDI0MiwgNTMsIDMsIDIyNiwgMjA0LCA2NSwgMTksIDksIDMzLCAKKyAgICAyNDIsIDUzLCAzLCA4NCwgNjUsIDE5LCA5LCAzMywgMjA3LCAxMCwgMywgMTU1LCA2NSwgMTksIDksIDMzLCAyMDcsIDEwLCAKKyAgICAzLCA4NCwgNjUsIDE5LCA5LCAzMywgMTk5LCAxMDksIDMsIDg0LCA2NSwgMTksIDksIDMzLCAyNTEsIDE3MiwgMywgMTkzLCAKKyAgICA2NSwgMTksIDksIDMzLCAyNTEsIDE3MiwgMywgODQsIDY1LCAxOSwgOSwgMzMsIDIzNSwgMTk1LCAzLCAxOTMsIDY1LCAxOSwgCisgICAgOSwgMzMsIDIzNSwgMTk1LCAzLCA4NCwgNjUsIDE5LCA5LCAzMywgMjM3LCAxMzUsIDMsIDE5MywgNjUsIDE5LCA5LCAzMywgCisgICAgMjM3LCAxMzUsIDMsIDE1NSwgNjUsIDE5LCA5LCAzMywgMjM3LCAxMzUsIDMsIDIyNiwgMjA0LCA2NSwgMTksIDksIDMzLCAKKyAgICAyMzcsIDEzNSwgMywgODQsIDY1LCAxOSwgOSwgMzMsIDIzNywgMTM1LCAzLCAxNDAsIDIyMiwgMTg4LCA2NSwgMTksIDksIAorICAgIDMzLCAyMzcsIDEzNSwgMywgOTAsIDY1LCAxOSwgOSwgMzMsIDIxNCwgMTUzLCAzLCAxNTUsIDY1LCAxOSwgOSwgMzMsIDIxNCwgCisgICAgMTUzLCAzLCA4NCwgNjUsIDE5LCA5LCAzMywgMjE0LCAxNTMsIDMsIDE0MCwgMjIyLCAxODgsIDY1LCAxOSwgOSwgMzMsIAorICAgIDIxNCwgMTUzLCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgMjI3LCA4NywgMywgMTQwLCA2NSwgMTksIDksIDMzLCAyMjcsIDg3LCAKKyAgICAzLCAxOTMsIDY1LCAxOSwgOSwgMzMsIDIyNywgODcsIDMsIDE1NSwgNjUsIDE5LCA5LCAzMywgMjI3LCA4NywgMywgMjI2LCAKKyAgICAyMDQsIDY1LCAxOSwgOSwgMzMsIDIyNywgODcsIDMsIDIyNSwgOTIsIDY1LCAxOSwgOSwgMzMsIDIyNywgODcsIDMsIDg0LCAKKyAgICA2NSwgMTksIDksIDMzLCAyMjcsIDg3LCAzLCAxNDAsIDIyMiwgMTg4LCA2NSwgMTksIDksIDMzLCAyMjcsIDg3LCAzLCA5MCwgCisgICAgNjUsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMTkzLCA2NSwgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAxNTUsIDY1LCAxOSwgCisgICAgOSwgMzMsIDIyNSwgOTIsIDMsIDIyNiwgMjA0LCA2NSwgMTksIDksIDMzLCAyMjUsIDkyLCAzLCA4NCwgNjUsIDE5LCA5LCAKKyAgICAzMywgMjI1LCA5MiwgMywgMTQwLCAyMjIsIDE4OCwgNjUsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgOTAsIDY1LCAxOSwgOSwgCisgICAgMzMsIDg0LCAzLCAxOTMsIDY1LCAxOSwgOSwgMzMsIDg0LCAzLCAxNTUsIDY1LCAxOSwgOSwgMzMsIDg0LCAzLCAyMjYsIAorICAgIDIwNCwgNjUsIDE5LCA5LCAzMywgODQsIDMsIDg0LCA2NSwgMTksIDksIDMzLCA4NCwgMywgMTQwLCAyMjIsIDE4OCwgNjUsIAorICAgIDE5LCA5LCAzMywgODQsIDMsIDkwLCA2NSwgMTksIDksIDMzLCAyMTgsIDIyOCwgMywgMTkzLCA2NSwgMTksIDksIDMzLCAKKyAgICAyMTgsIDIyOCwgMywgMTU1LCA2NSwgMTksIDksIDMzLCAyMTgsIDIyOCwgMywgMjI2LCAyMDQsIDY1LCAxOSwgOSwgMzMsIAorICAgIDIxOCwgMjI4LCAzLCA4NCwgNjUsIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIDE0MCwgMjIyLCAxODgsIDY1LCAxOSwgOSwgCisgICAgMzMsIDIxOCwgMjI4LCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgMjM0LCAxMTYsIDMsIDE5MywgNjUsIDE5LCA5LCAzMywgMjM0LCAKKyAgICAxMTYsIDMsIDg0LCA2NSwgMTksIDksIDMzLCAyMzQsIDExNiwgMywgMTQwLCAyMjIsIDE4OCwgNjUsIDE5LCA5LCAzMywgCisgICAgMjM0LCAxMTYsIDMsIDkwLCA2NSwgMTksIDksIDMzLCA5MCwgMywgMTkzLCA2NSwgMTksIDksIDMzLCA5MCwgMywgMTU1LCAKKyAgICA2NSwgMTksIDksIDMzLCA5MCwgMywgMjI2LCAyMDQsIDY1LCAxOSwgOSwgMzMsIDkwLCAzLCA4NCwgNjUsIDE5LCA5LCAzMywgCisgICAgOTAsIDMsIDE0MCwgMjIyLCAxODgsIDY1LCAxOSwgOSwgMzMsIDkwLCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgMjA2LCAxMTUsIAorICAgIDMsIDIwNywgMjEzLCAxNDAsIDY1LCAxOSwgOSwgMzMsIDIxMywgMTU1LCAzLCAyMDcsIDIxMywgMTQwLCA2NSwgMTksIDksIAorICAgIDMzLCAxNDAsIDIyMiwgMTg4LCAzLCAyMDcsIDIxMywgMTQwLCA2NSwgMTksIDksIDMzLCAyMTAsIDEwNSwgMywgMjQyLCAxNiwgCisgICAgNjUsIDE5LCA5LCAzMywgMjEwLCAxMDUsIDMsIDIyNywgMzUsIDY1LCAxOSwgOSwgMzMsIDIxMCwgMTA1LCAzLCAyMzcsIAorICAgIDE1OSwgNjUsIDE5LCA5LCAzMywgMjEwLCAxMDUsIDMsIDI0MiwgMTgsIDY1LCAxOSwgOSwgMzMsIDIxMCwgMTA1LCAzLCAKKyAgICAyMjcsIDM3LCA2NSwgMTksIDksIDMzLCAyMTAsIDEwNSwgMywgMjA3LCAyMTMsIDE0MCwgNjUsIDE5LCA5LCAzMywgOTAsIDMsIAorICAgIDIzNCwgMjA0LCA4OCwgMywgMjEzLCAxNTUsIDQ3LCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDE5OSwgCisgICAgMTA2LCA0NywgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCA4NCwgNDcsIDE5LCA5LCAzMywgOTAsIDMsIAorICAgIDIzNCwgMjA0LCA4OCwgMywgMjE4LCAyMjgsIDQ3LCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDE0MCwgCisgICAgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDkwLCA0NywgMTksIDksIDMzLCAyNDgsIAorICAgIDI0MSwgMywgMjEzLCAxNTUsIDQ3LCAxOSwgOSwgMzMsIDI0OCwgMjQxLCAzLCAxOTksIDEwNiwgNDcsIDE5LCA5LCAzMywgCisgICAgMjQ4LCAyNDEsIDMsIDg0LCA0NywgMTksIDksIDMzLCAyNDgsIDI0MSwgMywgMjE4LCAyMjgsIDQ3LCAxOSwgOSwgMzMsIAorICAgIDI0OCwgMjQxLCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyNDgsIDI0MSwgMywgOTAsIDQ3LCAxOSwgOSwgCisgICAgMzMsIDIwNiwgMTg0LCAzLCAyMTMsIDE1NSwgNDcsIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIDE5OSwgMTA2LCA0NywgMTksIAorICAgIDksIDMzLCAyMDYsIDE4NCwgMywgODQsIDQ3LCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCAyMTgsIDIyOCwgNDcsIDE5LCA5LCAKKyAgICAzMywgMjA2LCAxODQsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCA5MCwgNDcsIDE5LCAKKyAgICA5LCAzMywgMjA2LCAxMDMsIDMsIDIxMywgMTU1LCA0NywgMTksIDksIDMzLCAyMDYsIDEwMywgMywgMTk5LCAxMDYsIDQ3LCAKKyAgICAxOSwgOSwgMzMsIDIwNiwgMTAzLCAzLCA4NCwgNDcsIDE5LCA5LCAzMywgMjA2LCAxMDMsIDMsIDIxOCwgMjI4LCA0NywgMTksIAorICAgIDksIDMzLCAyMDYsIDEwMywgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjA2LCAxMDMsIDMsIDkwLCA0NywgCisgICAgMTksIDksIDMzLCAyMzcsIDEzNSwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjM3LCAxMzUsIDMsIDkwLCAKKyAgICA0NywgMTksIDksIDMzLCAyMTQsIDE1MywgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjE0LCAxNTMsIDMsIAorICAgIDkwLCA0NywgMTksIDksIDMzLCAyMjcsIDg3LCAzLCAxNDAsIDQ3LCAxOSwgOSwgMzMsIDIyNywgODcsIDMsIDIyNSwgOTIsIAorICAgIDQ3LCAxOSwgOSwgMzMsIDIyNywgODcsIDMsIDg0LCA0NywgMTksIDksIDMzLCAyMjcsIDg3LCAzLCAxNDAsIDIyMiwgMTg4LCAKKyAgICA0NywgMTksIDksIDMzLCAyMjcsIDg3LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgODQsIDQ3LCAxOSwgOSwgCisgICAgMzMsIDIyNSwgOTIsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDkwLCA0NywgMTksIDksIAorICAgIDMzLCA4NCwgMywgMTQwLCA0NywgMTksIDksIDMzLCA4NCwgMywgODQsIDQ3LCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCAKKyAgICAyMTMsIDE1NSwgNDcsIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIDE5OSwgMTA2LCA0NywgMTksIDksIDMzLCAyMTgsIDIyOCwgCisgICAgMywgODQsIDQ3LCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCAyMTgsIDIyOCwgNDcsIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIAorICAgIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMTQwLCAyMjIsIAorICAgIDE4OCwgMywgMjA3LCAyMTMsIDE0MCwgNDcsIDE5LCA5LCAzMywgOTAsIDMsIDIxMywgMTU1LCA0NywgMTksIDksIDMzLCA5MCwgCisgICAgMywgMTk5LCAxMDYsIDQ3LCAxOSwgOSwgMzMsIDkwLCAzLCA4NCwgNDcsIDE5LCA5LCAzMywgOTAsIDMsIDIxOCwgMjI4LCAKKyAgICA0NywgMTksIDksIDMzLCA5MCwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgOTAsIDMsIDkwLCA0NywgMTksIDksIAorICAgIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAxOTMsIDgyLCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIAorICAgIDE1NSwgODIsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMjI2LCAyMDQsIDgyLCAxOSwgOSwgMzMsIDkwLCAKKyAgICAzLCAyMzQsIDIwNCwgODgsIDMsIDg0LCA4MiwgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAyMzQsIDExNiwgCisgICAgODIsIDE5LCA5LCAzMywgMjQ4LCAyNDEsIDMsIDE5MywgODIsIDE5LCA5LCAzMywgMjQ4LCAyNDEsIDMsIDE1NSwgODIsIDE5LCAKKyAgICA5LCAzMywgMjQ4LCAyNDEsIDMsIDIyNiwgMjA0LCA4MiwgMTksIDksIDMzLCAyNDgsIDI0MSwgMywgODQsIDgyLCAxOSwgOSwgCisgICAgMzMsIDI0OCwgMjQxLCAzLCAyMzQsIDExNiwgODIsIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIDE5MywgODIsIDE5LCA5LCAKKyAgICAzMywgMjA2LCAxODQsIDMsIDE1NSwgODIsIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIDIyNiwgMjA0LCA4MiwgMTksIDksIAorICAgIDMzLCAyMDYsIDE4NCwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCAyMzQsIDExNiwgODIsIDE5LCA5LCAzMywgCisgICAgMjA2LCAxMDMsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAxOTMsIDMsIDE1NSwgODIsIDE5LCA5LCAzMywgMTkzLCAzLCA4NCwgCisgICAgODIsIDE5LCA5LCAzMywgMTU1LCAzLCAxOTMsIDgyLCAxOSwgOSwgMzMsIDE1NSwgMywgODQsIDgyLCAxOSwgOSwgMzMsIAorICAgIDIyNiwgMjA0LCAzLCAxOTMsIDgyLCAxOSwgOSwgMzMsIDIyNiwgMjA0LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjExLCAKKyAgICAxODcsIDMsIDE5MywgODIsIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIDE1NSwgODIsIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIAorICAgIDIyNiwgMjA0LCA4MiwgMTksIDksIDMzLCAyMTEsIDE4NywgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIxMiwgNTcsIDMsIDE1NSwgCisgICAgODIsIDE5LCA5LCAzMywgMjEyLCA1NywgMywgMjI2LCAyMDQsIDgyLCAxOSwgOSwgMzMsIDIxMiwgNTcsIDMsIDg0LCA4MiwgCisgICAgMTksIDksIDMzLCAyNDIsIDUzLCAzLCAxOTMsIDgyLCAxOSwgOSwgMzMsIDI0MiwgNTMsIDMsIDE1NSwgODIsIDE5LCA5LCAKKyAgICAzMywgMjQyLCA1MywgMywgMjI2LCAyMDQsIDgyLCAxOSwgOSwgMzMsIDI0MiwgNTMsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAKKyAgICAyMDcsIDEwLCAzLCAxNTUsIDgyLCAxOSwgOSwgMzMsIDE5OSwgMTA5LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjUxLCAxNzIsIAorICAgIDMsIDE5MywgODIsIDE5LCA5LCAzMywgMjUxLCAxNzIsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMzUsIDE5NSwgMywgMTkzLCAKKyAgICA4MiwgMTksIDksIDMzLCAyMzUsIDE5NSwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIzNywgMTM1LCAzLCAxOTMsIDgyLCAxOSwgCisgICAgOSwgMzMsIDIzNywgMTM1LCAzLCAxNTUsIDgyLCAxOSwgOSwgMzMsIDIzNywgMTM1LCAzLCAyMjYsIDIwNCwgODIsIDE5LCA5LCAKKyAgICAzMywgMjM3LCAxMzUsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMTQsIDE1MywgMywgMTU1LCA4MiwgMTksIDksIDMzLCAyMTQsIAorICAgIDE1MywgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIyNywgODcsIDMsIDE5MywgODIsIDE5LCA5LCAzMywgMjI3LCA4NywgMywgCisgICAgMTU1LCA4MiwgMTksIDksIDMzLCAyMjcsIDg3LCAzLCAyMjYsIDIwNCwgODIsIDE5LCA5LCAzMywgMjI3LCA4NywgMywgMjI1LCAKKyAgICA5MiwgODIsIDE5LCA5LCAzMywgMjI3LCA4NywgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDE5MywgODIsIAorICAgIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMTU1LCA4MiwgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAyMjYsIDIwNCwgODIsIDE5LCAKKyAgICA5LCAzMywgMjI1LCA5MiwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDIzNCwgMTE2LCA4MiwgMTksIDksIAorICAgIDMzLCA4NCwgMywgMTkzLCA4MiwgMTksIDksIDMzLCA4NCwgMywgMTU1LCA4MiwgMTksIDksIDMzLCA4NCwgMywgMjI2LCAKKyAgICAyMDQsIDgyLCAxOSwgOSwgMzMsIDg0LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIDE5MywgODIsIDE5LCAKKyAgICA5LCAzMywgMjE4LCAyMjgsIDMsIDE1NSwgODIsIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIDIyNiwgMjA0LCA4MiwgMTksIDksIAorICAgIDMzLCAyMTgsIDIyOCwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCAyMzQsIDExNiwgODIsIDE5LCA5LCAzMywgCisgICAgMjM0LCAxMTYsIDMsIDE5MywgODIsIDE5LCA5LCAzMywgMjM0LCAxMTYsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMzQsIAorICAgIDExNiwgMywgMjA3LCAyMTMsIDE0MCwgODIsIDE5LCA5LCAzMywgOTAsIDMsIDE5MywgODIsIDE5LCA5LCAzMywgOTAsIDMsIAorICAgIDE1NSwgODIsIDE5LCA5LCAzMywgOTAsIDMsIDIyNiwgMjA0LCA4MiwgMTksIDksIDMzLCA5MCwgMywgODQsIDgyLCAxOSwgOSwgCisgICAgMzMsIDkwLCAzLCAyMzQsIDExNiwgODIsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgODQsIDE3OSwgMTksIAorICAgIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAyMzQsIDExNiwgMTc5LCAxOSwgOSwgMzMsIDI0OCwgMjQxLCAzLCA4NCwgCisgICAgMTc5LCAxOSwgOSwgMzMsIDI0OCwgMjQxLCAzLCAyMzQsIDExNiwgMTc5LCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCA4NCwgCisgICAgMTc5LCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCAyMzQsIDExNiwgMTc5LCAxOSwgOSwgMzMsIDIwNiwgMTAzLCAzLCA4NCwgCisgICAgMTc5LCAxOSwgOSwgMzMsIDIwNiwgMTAzLCAzLCAyMzQsIDExNiwgMTc5LCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCA4NCwgCisgICAgMTc5LCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCAyMzQsIDExNiwgMTc5LCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDg0LCAKKyAgICAxNzksIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgMjM0LCAxMTYsIDE3OSwgMTksIDksIDMzLCAyMjcsIDg3LCAzLCAyMjUsIAorICAgIDkyLCAxNzksIDE5LCA5LCAzMywgMjI3LCA4NywgMywgODQsIDE3OSwgMTksIDksIDMzLCAyMjUsIDkyLCAzLCA4NCwgMTc5LCAKKyAgICAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCA4NCwgMTc5LCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCAyMzQsIDExNiwgMTc5LCAKKyAgICAxOSwgOSwgMzMsIDkwLCAzLCA4NCwgMTc5LCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDExNiwgMTc5LCAxOSwgOSwgMzMsIAorICAgIDIxMCwgMTA1LCAzLCAyMzcsIDE1OSwgMTc5LCAxOSwgOSwgMzMsIDIxMCwgMTA1LCAzLCAyNDIsIDE4LCAxNzksIDE5LCA5LCAKKyAgICAzMywgMjEwLCAxMDUsIDMsIDIyNywgMzcsIDE3OSwgMTksIDksIDMzLCAyMDcsIDEwLCAzLCAxNDAsIDIyMiwgMTg4LCA2NSwgCisgICAgMTksIDksIDMzLCAyMDcsIDEwLCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgMjUxLCAxNzIsIDMsIDE0MCwgMjIyLCAxODgsIDY1LCAKKyAgICAxOSwgOSwgMzMsIDI1MSwgMTcyLCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgMjM1LCAxOTUsIDMsIDE0MCwgMjIyLCAxODgsIAorICAgIDY1LCAxOSwgOSwgMzMsIDIzNSwgMTk1LCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIDE0MCwgMjIyLCAKKyAgICAxODgsIDY1LCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgMTQwLCAyMjIsIAorICAgIDE4OCwgNjUsIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgOTAsIDY1LCAxOSwgOSwgMzMsIDE1NSwgMywgMTQwLCAyMjIsIDE4OCwgCisgICAgNjUsIDE5LCA5LCAzMywgMTU1LCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgMTkzLCAzLCAxNDAsIDIyMiwgMTg4LCA2NSwgMTksIAorICAgIDksIDMzLCAxOTMsIDMsIDkwLCA2NSwgMTksIDksIDMzLCAyMjYsIDIwNCwgMywgMTQwLCAyMjIsIDE4OCwgNjUsIDE5LCA5LCAKKyAgICAzMywgMjI2LCAyMDQsIDMsIDkwLCA2NSwgMTksIDksIDMzLCAyMTIsIDU3LCAzLCAxNDAsIDIyMiwgMTg4LCA2NSwgMTksIDksIAorICAgIDMzLCAyMTIsIDU3LCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgMjQyLCA1MywgMywgMTQwLCAyMjIsIDE4OCwgNjUsIDE5LCA5LCAKKyAgICAzMywgMjQyLCA1MywgMywgOTAsIDY1LCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDE5MywgNjUsIDE5LCA5LCAzMywgMjEwLCAKKyAgICA2MiwgMywgMTU1LCA2NSwgMTksIDksIDMzLCAyMTAsIDYyLCAzLCAyMjYsIDIwNCwgNjUsIDE5LCA5LCAzMywgMjEwLCA2MiwgCisgICAgMywgODQsIDY1LCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDIxMywgMTU1LCA2NSwgMTksIDksIDMzLCAyMTEsIDE4NywgMywgCisgICAgMjEzLCAxNTUsIDY1LCAxOSwgOSwgMzMsIDIxMiwgNTcsIDMsIDIxMywgMTU1LCA2NSwgMTksIDksIDMzLCAyNDIsIDUzLCAzLCAKKyAgICAyMTMsIDE1NSwgNjUsIDE5LCA5LCAzMywgMjA3LCAxMCwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjA3LCAKKyAgICAxMCwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDI1MSwgMTcyLCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyNTEsIAorICAgIDE3MiwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDIzNSwgMTk1LCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAKKyAgICAyMzUsIDE5NSwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIAorICAgIDMzLCAyMTEsIDE4NywgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgCisgICAgMzMsIDIxMCwgNjIsIDMsIDkwLCA0NywgMTksIDksIDMzLCAxNTUsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIAorICAgIDE1NSwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDE5MywgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMTkzLCAzLCAKKyAgICA5MCwgNDcsIDE5LCA5LCAzMywgMjI2LCAyMDQsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDIyNiwgMjA0LCAKKyAgICAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjEyLCA1NywgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjEyLCA1NywgCisgICAgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDI0MiwgNTMsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDI0MiwgNTMsIAorICAgIDMsIDkwLCA0NywgMTksIDksIDMzLCAyMTAsIDYyLCAzLCAxOTMsIDQ3LCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDE1NSwgCisgICAgNDcsIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgMjI2LCAyMDQsIDQ3LCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDg0LCA0NywgCisgICAgMTksIDksIDMzLCAyMTAsIDYyLCAzLCAyMTMsIDE1NSwgNDcsIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIDIxMywgMTU1LCAKKyAgICA0NywgMTksIDksIDMzLCAyMTIsIDU3LCAzLCAyMTMsIDE1NSwgNDcsIDE5LCA5LCAzMywgMjQyLCA1MywgMywgMjEzLCAxNTUsIAorICAgIDQ3LCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDE5MywgODIsIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgMTU1LCA4MiwgMTksIAorICAgIDksIDMzLCAyMTAsIDYyLCAzLCAyMjYsIDIwNCwgODIsIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgODQsIDgyLCAxOSwgOSwgCisgICAgMzMsIDIxMSwgMTg3LCAzLCAyMzQsIDExNiwgODIsIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgMjM0LCAxMTYsIDgyLCAxOSwgCisgICAgOSwgMzMsIDIwNywgMTAsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMTEsIDE4NywgMywgMTkzLCAxNzksIDE5LCA5LCAzMywgCisgICAgMjExLCAxODcsIDMsIDE1NSwgMTc5LCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCAyMjYsIDIwNCwgMTc5LCAxOSwgOSwgMzMsIAorICAgIDIxMCwgNjIsIDMsIDE5MywgMTc5LCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDE1NSwgMTc5LCAxOSwgOSwgMzMsIDIxMCwgCisgICAgNjIsIDMsIDIyNiwgMjA0LCAxNzksIDE5LCA5LCAzMywgMjA3LCAxMCwgMywgODQsIDE3OSwgMTksIDksIDMzLCAxOTksIAorICAgIDEwOSwgMywgODQsIDE3OSwgMTksIDksIDMzLCAxNDAsIDMsIDIzNywgMTU3LCA0NywgMTksIDksIDMzLCAxNDAsIDMsIDIzNywgCisgICAgMTU3LCA2NSwgMTksIDIxNywgMTksIDQ5LCAyMTYsIDExNSwgMjE3LCAxOSwgNTEsIDIxNiwgMTE1LCA5LCAzMywgMjA2LCAKKyAgICAxODQsIDMsIDE5MywgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCAxNTUsIDMsIDE5MywgNDcsIDE5LCA5LCAKKyAgICAzMywgMjA2LCAxODQsIDMsIDE1NSwgMywgMTkzLCA4MiwgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgMTU1LCAzLCA4NCwgODIsIAorICAgIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIDIyNiwgMjA0LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIDg0LCAKKyAgICAzLCAxOTMsIDgyLCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCA4NCwgMywgMTU1LCA4MiwgMTksIDksIDMzLCAyMDYsIDE4NCwgCisgICAgMywgODQsIDMsIDIyNiwgMjA0LCA4MiwgMTksIDksIDMzLCAxOTMsIDMsIDg0LCAzLCAxNTUsIDQ3LCAxOSwgOSwgMzMsIAorICAgIDE5MywgMywgODQsIDMsIDE1NSwgODIsIDE5LCA5LCAzMywgMTU1LCAzLCA4NCwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDE1NSwgCisgICAgMywgODQsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCAxNTUsIDMsIDE5MywgODIsIDE5LCAKKyAgICA5LCAzMywgMjExLCAxODcsIDMsIDE5MywgMywgMTU1LCA4MiwgMTksIDksIDMzLCAyMTEsIDE4NywgMywgMTkzLCAzLCAxNDAsIAorICAgIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyMTEsIDE4NywgMywgODQsIDMsIDE1NSwgNDcsIDE5LCA5LCAzMywgMjExLCAKKyAgICAxODcsIDMsIDg0LCAzLCAxNTUsIDgyLCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCA4NCwgMywgMTkzLCA4MiwgMTksIDksIAorICAgIDMzLCAyMTEsIDE4NywgMywgODQsIDMsIDg0LCA0NywgMTksIDksIDMzLCAyMTEsIDE4NywgMywgODQsIDMsIDg0LCA4MiwgCisgICAgMTksIDksIDMzLCAyMTIsIDU3LCAzLCAxNTUsIDMsIDE1NSwgNDcsIDE5LCA5LCAzMywgMjEyLCA1NywgMywgMTU1LCAzLCAKKyAgICAxNTUsIDgyLCAxOSwgOSwgMzMsIDIxMiwgNTcsIDMsIDg0LCAzLCA4NCwgNDcsIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgCisgICAgMTU1LCAzLCA4NCwgNDcsIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgMTU1LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjEwLCAKKyAgICA2MiwgMywgMTkzLCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgODQsIDMsIDIyNiwgMjA0LCA0NywgMTksIDksIAorICAgIDMzLCAyMTAsIDYyLCAzLCA4NCwgMywgMjI2LCAyMDQsIDgyLCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDg0LCAzLCA4NCwgCisgICAgNDcsIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgODQsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyNDIsIDUzLCAzLCAxNTUsIDMsIAorICAgIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDI0MiwgNTMsIDMsIDIyNiwgMjA0LCAzLCA4NCwgNDcsIDE5LCA5LCAzMywgCisgICAgMjQyLCA1MywgMywgMjI2LCAyMDQsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMDcsIDEwLCAzLCA4NCwgMywgMTU1LCA0NywgCisgICAgMTksIDksIDMzLCAyMDcsIDEwLCAzLCA4NCwgMywgMTU1LCA4MiwgMTksIDksIDMzLCAyMDcsIDEwLCAzLCA4NCwgMywgODQsIAorICAgIDgyLCAxOSwgOSwgMzMsIDIwNywgMTAsIDMsIDg0LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjUxLCAxNzIsIDMsIDE5MywgMywgCisgICAgODQsIDQ3LCAxOSwgOSwgMzMsIDI1MSwgMTcyLCAzLCA4NCwgMywgODQsIDQ3LCAxOSwgOSwgMzMsIDI1MSwgMTcyLCAzLCAKKyAgICA4NCwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDI1MSwgMTcyLCAzLCA4NCwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAKKyAgICAzMywgMjM1LCAxOTUsIDMsIDg0LCAzLCA4NCwgNDcsIDE5LCA5LCAzMywgMjM1LCAxOTUsIDMsIDg0LCAzLCA5MCwgNDcsIAorICAgIDE5LCA5LCAzMywgMjM1LCAxOTUsIDMsIDg0LCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyMzcsIDEzNSwgMywgCisgICAgMjI2LCAyMDQsIDMsIDg0LCA0NywgMTksIDksIDMzLCAyMzcsIDEzNSwgMywgMjI2LCAyMDQsIDMsIDg0LCA4MiwgMTksIDksIAorICAgIDMzLCAyMTQsIDE1MywgMywgODQsIDMsIDE1NSwgNDcsIDE5LCA5LCAzMywgMjE0LCAxNTMsIDMsIDg0LCAzLCA4NCwgNDcsIAorICAgIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMTU1LCAzLCA4NCwgNDcsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMTU1LCAzLCA5MCwgCisgICAgNDcsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMTU1LCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyMjUsIDkyLCAKKyAgICAzLCAxOTMsIDMsIDE5MywgODIsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMTkzLCAzLCAxOTMsIDQ3LCAxOSwgOSwgMzMsIAorICAgIDIyNSwgOTIsIDMsIDIyNiwgMjA0LCAzLCA4NCwgNDcsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMjI2LCAyMDQsIDMsIDg0LCAKKyAgICA4MiwgMTksIDksIDMzLCAyMjUsIDkyLCAzLCA4NCwgMywgMTU1LCA0NywgMTksIDksIDMzLCAyMjUsIDkyLCAzLCA4NCwgMywgCisgICAgMTU1LCA4MiwgMTksIDksIDMzLCA4NCwgMywgMTU1LCAzLCAxOTMsIDgyLCAxOSwgOSwgMzMsIDg0LCAzLCAxNTUsIDMsIDg0LCAKKyAgICA4MiwgMTksIDksIDMzLCA4NCwgMywgMTU1LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgODQsIDMsIDE5MywgMywgMTU1LCA4MiwgCisgICAgMTksIDksIDMzLCA4NCwgMywgMTkzLCAzLCA4NCwgODIsIDE5LCA5LCAzMywgODQsIDMsIDIyNiwgMjA0LCAzLCAxOTMsIDgyLCAKKyAgICAxOSwgOSwgMzMsIDg0LCAzLCAyMjYsIDIwNCwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDg0LCAzLCAxOTMsIDMsIDIyNiwgCisgICAgMjA0LCA4MiwgMTksIDksIDMzLCAyMzQsIDExNiwgMywgODQsIDMsIDE5MywgODIsIDE5LCA5LCAzMywgMjM0LCAxMTYsIDMsIAorICAgIDg0LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIDE1NSwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIxOCwgCisgICAgMjI4LCAzLCAxNTUsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCAxOTMsIDMsIDg0LCAKKyAgICA0NywgMTksIDksIDMzLCAyMTgsIDIyOCwgMywgMTkzLCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIDE5MywgCisgICAgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIDg0LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgCisgICAgMjE4LCAyMjgsIDMsIDg0LCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCA5MCwgMywgODQsIDMsIDg0LCA0NywgCisgICAgMTksIDksIDMzLCA5MCwgMywgODQsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyNDgsIDI0MSwgMywgMjI2LCAyMDQsIDMsIDkwLCAKKyAgICA0NywgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgMTkzLCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIDE5MywgCisgICAgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIDIyNiwgMjA0LCAzLCA5MCwgNDcsIDE5LCA5LCAKKyAgICAzMywgMjA2LCAxODQsIDMsIDIyNiwgMjA0LCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgCisgICAgODQsIDMsIDkwLCA0NywgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgODQsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgCisgICAgMzMsIDE5MywgMywgODQsIDMsIDkwLCA0NywgMTksIDksIDMzLCAxOTMsIDMsIDE1NSwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIAorICAgIDE5LCA5LCAzMywgMTkzLCAzLCA4NCwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIDIyNiwgCisgICAgMjA0LCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyMTIsIDU3LCAzLCAxNTUsIDMsIDkwLCA0NywgMTksIDksIAorICAgIDMzLCAyMTAsIDYyLCAzLCAxNTUsIDMsIDkwLCA0NywgMTksIDksIDMzLCAyNDIsIDUzLCAzLCAxNTUsIDMsIDkwLCA0NywgCisgICAgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAxOTMsIDMsIDkwLCA0NywgMTksIDksIDMzLCAyMjUsIDkyLCAzLCA4NCwgMywgOTAsIAorICAgIDQ3LCAxOSwgOSwgMzMsIDkwLCAzLCAxNTUsIDMsIDkwLCA0NywgMTksIDksIDMzLCA5MCwgMywgMTkzLCAzLCA5MCwgNDcsIAorICAgIDE5LCA5LCAzMywgOTAsIDMsIDg0LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgODQsIDMsIDg0LCAzLCA5MCwgNDcsIDE5LCA5LCAKKyAgICAzMywgMjE0LCAxNTMsIDMsIDg0LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIDE1NSwgMywgOTAsIDQ3LCAKKyAgICAxOSwgOSwgMzMsIDIxNCwgMTUzLCAzLCA4NCwgMywgMTU1LCA4MiwgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAxNTUsIDMsIAorICAgIDg0LCA4MiwgMTksIDksIDMzLCAyNTEsIDE3MiwgMywgODQsIDMsIDkwLCA0NywgMTksIDksIDMzLCAyMjcsIDg3LCAzLCA4NCwgCisgICAgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCAxOTMsIDMsIDE1NSwgODIsIDE5LCA5LCAzMywgODQsIDMsIAorICAgIDIyNiwgMjA0LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMTkzLCAzLCA4NCwgODIsIDE5LCA5LCAzMywgCisgICAgMjI3LCA4NywgMywgODQsIDMsIDg0LCA0NywgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAxOTMsIDMsIDg0LCA0NywgMTksIDksIAorICAgIDMzLCAyMTgsIDIyOCwgMywgMTkzLCAzLCAxNTUsIDQ3LCAxOSwgOSwgMzMsIDE5MywgMywgMTU1LCAzLCA5MCwgNDcsIDE5LCAKKyAgICA5LCAzMywgMTU1LCAzLCAxOTMsIDMsIDkwLCA0NywgMTksIDksIDMzLCA4NCwgMywgMTkzLCAzLCA5MCwgNDcsIDE5LCA5LCAKKyAgICAzMywgMjM3LCAxMzUsIDMsIDg0LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjQ4LCAyNDEsIDMsIDE1NSwgMywgOTAsIDQ3LCAKKyAgICAxOSwgOSwgMzMsIDIyNywgODcsIDMsIDg0LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjUxLCAxNzIsIDMsIDE5MywgMywgODQsIAorICAgIDgyLCAxOSwgOSwgMzMsIDIxMiwgNTcsIDMsIDg0LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIDIyNiwgCisgICAgMjA0LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIDE5MywgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDIxMiwgCisgICAgMzAsIDIwMywgMTkyLCAyNTAsIDE4OSwgMjI2LCA2MCwgMjA4LCA3NywgMiwgNjUsIDE5LCA5LCAzMywgMjE0LCAxNDksIAorICAgIDIwMywgMTkyLCAyNTAsIDE4OSwgMjI2LCA2MCwgMjA4LCA3NywgMiwgNjUsIDE5LCA5LCAzMywgMjUxLCAxMjMsIDY1LCAxOSwgCisgICAgOSwgMzMsIDI1MSwgMTU2LCA2NSwgMTksIDksIDMzLCAyMjEsIDEwOSwgNjUsIDE5LCA5LCAzMywgMjEyLCAzMSwgNjUsIDE5LCAKKyAgICA5LCAzMywgMjEzLCAyMDYsIDY1LCAxOSwgOSwgMzMsIDI1MSwgMTQ1LCA2NSwgMTksIDksIDMzLCAyMDEsIDkyLCA2NSwgMTksIAorICAgIDksIDMzLCAyMTIsIDMwLCA2NSwgMTksIDksIDMzLCAyMTIsIDI5LCAyNTEsIDE0NSwgMjAxLCA5MSwgOSwgMzMsIDIyNywgCisgICAgMjM5LCAyMTMsIDg3LCA1NCwgOSwgMzMsIDI0OCwgMTU0LCAyNTAsIDI1MSwgMjUwLCAyNTIsIDU4LCAyMTEsIDE3NCwgNTgsIAorICAgIDIxMSwgNjMsIDU4LCAyMTAsIDI1MSwgNTgsIDIxMCwgMjQwLCA1OCwgMjEwLCAyMjksIDU4LCAyMTAsIDIxOCwgNTgsIDIxMCwgCisgICAgMjA3LCA1OCwgMjEwLCAxOTYsIDU4LCAyMTAsIDE4NSwgNTgsIDIxMSwgMTczLCA1OCwgMjExLCAxNjIsIDU4LCAyMTEsIAorICAgIDE1MSwgNTgsIDIxMSwgMTQwLCA1OCwgMjExLCAxMjksIDU4LCAyMTEsIDExOCwgNTgsIDIxMSwgMTA3LCAyMTUsIDE5LCAKKyAgICAyMzYsIDI0MiwgMzYsIDgzLCAyNDYsIDcwLCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCAxNDEsIDI0NiwgNzAsIDIxNSwgCisgICAgMTksIDIzNiwgMjQyLCAzNiwgODMsIDE0MSwgMjM2LCAxODMsIDIwOCwgNzYsIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIAorICAgIDI0NiwgNzksIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIDIxMCwgMTY3LCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCAKKyAgICAyMzgsIDQzLCA4MSwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgMjE0LCA3OSwgODEsIDIxNSwgMTksIDIzNiwgMjQyLCAKKyAgICAzNiwgODMsIDQ5LCA2NCwgMjI0LCAyNDcsIDE1OSwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgNTEsIDY0LCAyMjQsIAorICAgIDI0NywgMjQ4LCA2OCwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgMjMzLCAxNzcsIDIzOCwgMTk1LCAzOCwgMzMsIDQ5LCAKKyAgICAyMzQsIDIxMywgMzgsIDMzLCA1MSwgMjM0LCAyMTMsIDM4LCA1MywgMjA1LCAyNDEsIDQ5LCAyMzQsIDIxMywgMzgsIDUzLCAKKyAgICAyMDUsIDI0MSwgNTEsIDIzNCwgMjEzLCAzOCwgMjIyLCAyMjksIDQ5LCAyMzQsIDIxMywgMzgsIDIyMiwgMjI5LCA1MSwgCisgICAgMjM0LCAyMTMsIDM4LCAyNDMsIDU2LCAyMjIsIDIyOCwgMzgsIDMzLCA0OSwgMTY3LCA1NywgMzgsIDMzLCA1MSwgMTY3LCAKKyAgICA1NywgMzgsIDIwNSwgMjQxLCA0OSwgMTY3LCA1NywgMzgsIDIwNSwgMjQxLCA1MSwgMTY3LCA1NywgMzgsIDIyMiwgMjI5LCAKKyAgICA0OSwgMTY3LCA1NywgMzgsIDIyMiwgMjI5LCA1MSwgMTY3LCA1NywgMzgsIDI0MywgNTYsIDIyMiwgMjI5LCA1NywgMzgsIAorICAgIDM3LCAyMDUsIDIxMSwgNDksIDIzNCwgMjEzLCAzOCwgMzcsIDIwNSwgMjExLCA1MSwgMjM0LCAyMTMsIDIxNSwgMTksIDIzNiwgCisgICAgMjQyLCAzNiwgODMsIDEyMCwgNzMsIDIyNSwgMzgsIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIDIzOCwgMTkxLCAyNDEsIAorICAgIDI0NCwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgMjM4LCAxODAsIDI0MSwgMjQ0LCAyMTUsIDE5LCAyMzYsIDI0MiwgCisgICAgMzYsIDgzLCAxMjgsIDIyNCwgMTc2LCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCAyMDEsIDc0LCAxMjgsIDIyNCwgMTc2LCAKKyAgICAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCA0OSwgMjE2LCAxMTUsIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIDUxLCAKKyAgICAyMTYsIDExNSwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgNDksIDI0MiwgMTk2LCAxNTksIDIxNSwgMTksIDIzNiwgCisgICAgMjQyLCAzNiwgODMsIDUxLCAyNDIsIDE5NiwgMTU5LCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCA0OSwgMjA1LCAxNDYsIAorICAgIDIxMCwgNTUsIDE1OSwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgNTEsIDIwNSwgMTQ2LCAyMTAsIDU1LCAxNTksIDIxNSwgCisgICAgMTksIDIzNiwgMjQyLCAzNiwgODMsIDQ5LCA2MywgMjI0LCAyNDcsIDE1OSwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgCisgICAgNTEsIDYzLCAyMjQsIDI0NywgMTU5LCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCA0OSwgNTMsIDI1MSwgNzEsIDE1OSwgCisgICAgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgNTEsIDUzLCAyNTEsIDcxLCAxNTksIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgCisgICAgODMsIDQ5LCAyNTEsIDcxLCAxNTksIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIDUxLCAyNTEsIDcxLCAxNTksIDIxNSwgCisgICAgMTksIDIzNiwgMjQyLCAzNiwgODMsIDQ5LCAyNDMsIDE2LCAxNTksIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIDUxLCAKKyAgICAyNDMsIDE2LCAxNTksIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIDQ5LCA2NCwgMjQzLCAxNiwgMTU5LCAyMTUsIDE5LCAKKyAgICAyMzYsIDI0MiwgMzYsIDgzLCA1MSwgNjQsIDI0MywgMTYsIDE1OSwgMjEwLCAxNDUsIDI0MCwgMTgyLCA2NCwgMjEwLCAxNDUsIAorICAgIDI0MCwgMTgyLCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCA0OSwgNTIsIDE1OSwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCAKKyAgICA4MywgNTEsIDUyLCAxNTksIDI0MSwgMjQzLCAyMTYsIDI0MSwgMjQ3LCA1MiwgMjE2LCAyNDEsIDIwMSwgNzQsIDIxNiwgCisgICAgMjQxLCA1MywgMjAxLCA3NCwgMjE2LCAyNDEsIDI0MSwgMjQzLCAxMjgsIDIyNCwgMTc2LCAyNDcsIDUyLCAxMjgsIDIyNCwgCisgICAgMTc2LCAyMDEsIDc0LCAxMjgsIDIyNCwgMTc2LCA0LCAyNDYsIDcwLCA0LCAxNDEsIDI0NiwgNzAsIDQsIDIzNiwgMTgzLCAKKyAgICAyMDgsIDc2LCA0LCAyMTAsIDE2NywgNCwgMjQ2LCA3OSwgNCwgMjE0LCA3OSwgODEsIDQsIDIzOCwgNDMsIDgxLCA0LCAyMzgsIAorICAgIDE5MSwgMjQxLCAyNDQsIDQsIDQ5LCAyMTYsIDExNSwgNCwgNTEsIDIxNiwgMTE1LCA0LCA0OSwgMjQyLCAxOTYsIDE1OSwgNCwgCisgICAgNTEsIDI0MiwgMTk2LCAxNTksIDQsIDQ5LCAyMDUsIDE0NiwgMjEwLCA1NSwgMTU5LCA0LCA1MSwgMjA1LCAxNDYsIDIxMCwgCisgICAgNTUsIDE1OSwgNCwgNDEsIDU0LCA0LCAyNTEsIDg5LCA0LCAyNTAsIDE2NSwgNCwgOTMsIDU0LCA0LCAyMzMsIDMyLCA0LCAKKyAgICAyMjQsIDI0MSwgNTQsIDQsIDIzNSwgNjcsIDU0LCA0LCAyMzgsIDEyMiwgNTQsIDQsIDIxMywgMTA2LCAyMDksIDE2LCA0LCAKKyAgICAyNDAsIDE5NCwgNTQsIDQsIDIxNiwgMjcsIDU0LCA0LCAyNDYsIDY4LCAyNTAsIDE1NSwgOSwgMjM3LCAxNTcsIDY1LCAxOSwgCisgICAgOSwgMjA2LCAyMjQsIDMsIDIzNywgMTU3LCA1NiwgOSwgMjQyLCAxNiwgNjUsIDE5LCA5LCAyMDcsIDcsIDIzNiwgMjE4LCA5LCAKKyAgICAyMjcsIDM1LCA2NSwgMTksIDksIDIzNywgMTU5LCA2NSwgMTksIDksIDIzNywgMTU5LCAxNzksIDE5LCA5LCAyNDIsIDE4LCAKKyAgICA2NSwgMTksIDksIDI0MiwgMTgsIDE3OSwgMTksIDksIDIyNywgMzcsIDY1LCAxOSwgOSwgMjI3LCAzNywgMTc5LCAxOSwgOSwgCisgICAgMjEwLCAxMDUsIDY1LCAxOSwgOSwgMjEwLCAxMDUsIDE3OSwgMTksIDksIDIwNywgMjM3LCA2NSwgMTksIDksIDIwNywgMjM3LCAKKyAgICAxNzksIDE5LCA5LCAxLCAyMzQsIDIwNCwgNjUsIDE5LCA5LCAxLCAxNDAsIDMsIDIyMiwgMjI0LCA4OCwgNjUsIDE5LCA5LCAKKyAgICAxLCAxNDAsIDMsIDIyMiwgMjI0LCA4OCwgNDcsIDE5LCA5LCAxLCAxNDAsIDMsIDIzNCwgMjA0LCA4OCwgNjUsIDE5LCA5LCAKKyAgICAxLCAxNDAsIDMsIDIzNCwgMjA0LCA4OCwgNDcsIDE5LCA5LCAxLCAyMDEsIDczLCAzLCAyMzQsIDIwNCwgODgsIDY1LCAxOSwgCisgICAgOSwgMSwgMjAxLCA3MywgMywgMjM0LCAyMDQsIDg4LCA0NywgMTksIDksIDEsIDE0MCwgMywgMjM0LCAyMDQsIDI0OCwgMjI4LCAKKyAgICA2NSwgMTksIDksIDEsIDE0MCwgMywgMjM0LCAyMDQsIDI0OCwgMjI4LCA0NywgMTksIDksIDEsIDkwLCAzLCAyMzQsIDIwNCwgCisgICAgODgsIDY1LCAxOSwgOSwgMSwgOTAsIDMsIDIzNCwgMjA0LCA4OCwgNDcsIDE5LCA5LCAxLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAKKyAgICA4MiwgMTksIDksIDEsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDE3OSwgMTksIDksIDEsIDE0MCwgNjUsIDE5LCA5LCAxLCAxNDAsIAorICAgIDQ3LCAxOSwgOSwgMSwgMjQ4LCAyNDEsIDY1LCAxOSwgOSwgMSwgMjQ4LCAyNDEsIDQ3LCAxOSwgOSwgMSwgMjQ4LCAyNDEsIAorICAgIDgyLCAxOSwgOSwgMSwgMjQ4LCAyNDEsIDE3OSwgMTksIDksIDEsIDIwNiwgMTg0LCAyMjIsIDE1NywgNjUsIDE5LCA5LCAxLCAKKyAgICAyMDYsIDE4NCwgMjIyLCAxNTcsIDQ3LCAxOSwgOSwgMSwgMjA2LCAxODQsIDY1LCAxOSwgOSwgMSwgMjA2LCAxODQsIDQ3LCAKKyAgICAxOSwgOSwgMSwgMjA2LCAxODQsIDgyLCAxOSwgOSwgMSwgMjA2LCAxODQsIDE3OSwgMTksIDksIDEsIDIwNiwgMTAzLCA2NSwgCisgICAgMTksIDksIDEsIDIwNiwgMTAzLCA0NywgMTksIDksIDEsIDIwNiwgMTAzLCA4MiwgMTksIDksIDEsIDIwNiwgMTAzLCAxNzksIAorICAgIDE5LCA5LCAxLCAxOTMsIDY1LCAxOSwgOSwgMSwgMTkzLCA0NywgMTksIDksIDEsIDE5MywgODIsIDE5LCA5LCAxLCAxOTMsIAorICAgIDE3OSwgMTksIDksIDEsIDE1NSwgNjUsIDE5LCA5LCAxLCAxNTUsIDQ3LCAxOSwgOSwgMSwgMTU1LCA4MiwgMTksIDksIDEsIAorICAgIDE1NSwgMTc5LCAxOSwgOSwgMSwgMjI2LCAyMDQsIDY1LCAxOSwgOSwgMSwgMjI2LCAyMDQsIDQ3LCAxOSwgOSwgMSwgMjI2LCAKKyAgICAyMDQsIDgyLCAxOSwgOSwgMSwgMjI2LCAyMDQsIDE3OSwgMTksIDksIDEsIDI0MiwgMzAsIDY1LCAxOSwgOSwgMSwgMjQyLCAKKyAgICAzMCwgNDcsIDE5LCA5LCAxLCAyMDYsIDExNSwgNjUsIDE5LCA5LCAxLCAyMDYsIDExNSwgNDcsIDE5LCA5LCAxLCAyMTMsIAorICAgIDE1NSwgNjUsIDE5LCA5LCAxLCAyMTMsIDE1NSwgNDcsIDE5LCA5LCAxLCAxOTksIDEwNiwgNjUsIDE5LCA5LCAxLCAxOTksIAorICAgIDEwNiwgNDcsIDE5LCA5LCAxLCAyMTEsIDE4NywgNjUsIDE5LCA5LCAxLCAyMTEsIDE4NywgNDcsIDE5LCA5LCAxLCAyMTEsIAorICAgIDE4NywgODIsIDE5LCA5LCAxLCAyMTEsIDE4NywgMTc5LCAxOSwgOSwgMSwgMjEwLCA2MiwgNjUsIDE5LCA5LCAxLCAyMTAsIAorICAgIDYyLCA0NywgMTksIDksIDEsIDIxMCwgNjIsIDgyLCAxOSwgOSwgMSwgMjEwLCA2MiwgMTc5LCAxOSwgOSwgMSwgMjEyLCA1NywgCisgICAgNjUsIDE5LCA5LCAxLCAyMTIsIDU3LCA0NywgMTksIDksIDEsIDIxMiwgNTcsIDgyLCAxOSwgOSwgMSwgMjEyLCA1NywgMTc5LCAKKyAgICAxOSwgOSwgMSwgMjQyLCA1MywgNjUsIDE5LCA5LCAxLCAyNDIsIDUzLCA0NywgMTksIDksIDEsIDI0MiwgNTMsIDgyLCAxOSwgCisgICAgOSwgMSwgMjQyLCA1MywgMTc5LCAxOSwgOSwgMSwgMjA3LCAxMCwgNjUsIDE5LCA5LCAxLCAyMDcsIDEwLCA0NywgMTksIDksIAorICAgIDEsIDIwNywgMTAsIDgyLCAxOSwgOSwgMSwgMjA3LCAxMCwgMTc5LCAxOSwgOSwgMSwgMTk5LCAxMDksIDY1LCAxOSwgOSwgMSwgCisgICAgMTk5LCAxMDksIDQ3LCAxOSwgOSwgMSwgMTk5LCAxMDksIDgyLCAxOSwgOSwgMSwgMTk5LCAxMDksIDE3OSwgMTksIDksIDEsIAorICAgIDI1MSwgMTcyLCA2NSwgMTksIDksIDEsIDI1MSwgMTcyLCA0NywgMTksIDksIDEsIDI1MSwgMTcyLCA4MiwgMTksIDksIDEsIAorICAgIDI1MSwgMTcyLCAxNzksIDE5LCA5LCAxLCAyMzUsIDE5NSwgNjUsIDE5LCA5LCAxLCAyMzUsIDE5NSwgNDcsIDE5LCA5LCAxLCAKKyAgICAyMzUsIDE5NSwgODIsIDE5LCA5LCAxLCAyMzUsIDE5NSwgMTc5LCAxOSwgOSwgMSwgMjM3LCAxMzUsIDY1LCAxOSwgOSwgMSwgCisgICAgMjM3LCAxMzUsIDQ3LCAxOSwgOSwgMSwgMjM3LCAxMzUsIDgyLCAxOSwgOSwgMSwgMjM3LCAxMzUsIDE3OSwgMTksIDksIDEsIAorICAgIDIxNCwgMTUzLCA2NSwgMTksIDksIDEsIDIxNCwgMTUzLCA0NywgMTksIDksIDEsIDIxNCwgMTUzLCA4MiwgMTksIDksIDEsIAorICAgIDIxNCwgMTUzLCAxNzksIDE5LCA5LCAxLCAyMjcsIDg3LCA2NSwgMTksIDksIDEsIDIyNywgODcsIDQ3LCAxOSwgOSwgMSwgCisgICAgMjI3LCA4NywgODIsIDE5LCA5LCAxLCAyMjcsIDg3LCAxNzksIDE5LCA5LCAxLCAyMjUsIDkyLCA2NSwgMTksIDksIDEsIAorICAgIDIyNSwgOTIsIDQ3LCAxOSwgOSwgMSwgMjI1LCA5MiwgODIsIDE5LCA5LCAxLCAyMjUsIDkyLCAxNzksIDE5LCA5LCAxLCA4NCwgCisgICAgNjUsIDE5LCA5LCAxLCA4NCwgNDcsIDE5LCA5LCAxLCA4NCwgODIsIDE5LCA5LCAxLCA4NCwgMTc5LCAxOSwgOSwgMSwgMjE4LCAKKyAgICAyMjgsIDY1LCAxOSwgOSwgMSwgMjE4LCAyMjgsIDQ3LCAxOSwgOSwgMSwgMjE4LCAyMjgsIDgyLCAxOSwgOSwgMSwgMjE4LCAKKyAgICAyMjgsIDE3OSwgMTksIDksIDEsIDIzNCwgMTE2LCA2NSwgMTksIDksIDEsIDIzNCwgMTE2LCA0NywgMTksIDksIDEsIDIzNCwgCisgICAgMTE2LCA4MiwgMTksIDksIDEsIDIzNCwgMTE2LCAxNzksIDE5LCA5LCAxLCAyMDEsIDczLCA2NSwgMTksIDksIDEsIDIwMSwgCisgICAgNzMsIDQ3LCAxOSwgOSwgMSwgMTQwLCAyMjIsIDE4OCwgNjUsIDE5LCA5LCAxLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIAorICAgIDEsIDkwLCA2NSwgMTksIDksIDEsIDkwLCA0NywgMTksIDksIDEsIDkwLCA4MiwgMTksIDksIDEsIDkwLCAxNzksIDE5LCA5LCAKKyAgICAzMywgMjI1LCA5MiwgMywgMTQwLCAzLCAyMjIsIDIyNCwgODgsIDY1LCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDE0MCwgMywgCisgICAgMjIyLCAyMjQsIDg4LCA0NywgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAxNDAsIDMsIDIzNCwgMjA0LCA4OCwgNjUsIDE5LCA5LCAKKyAgICAzMywgMjI1LCA5MiwgMywgMTQwLCAzLCAyMzQsIDIwNCwgODgsIDQ3LCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDE0MCwgMywgCisgICAgMjM0LCAyMDQsIDI0OCwgMjI4LCA2NSwgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAxNDAsIDMsIDIzNCwgMjA0LCAyNDgsIAorICAgIDIyOCwgNDcsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMTQwLCA2NSwgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAxNDAsIDQ3LCAKKyAgICAxOSwgMTk5LCA4MiwgMjAxLCAyNSwgMjE4LCAyNDAsIDIwOCwgMjQ0LCAxNTgsIDIzOCwgNDMsIDgxLCAxNTgsIDIxNCwgNjMsIAorICAgIDgxLCAxNTgsIDQxLCA1NCwgMTU4LCAyNDAsIDE5NCwgNTQsIDE1OCwgMjE2LCAyNywgNTQsIDE1OCwgMjUxLCA4OSwgMTU4LCAKKyAgICAyNTEsIDEzLCAxNTgsIDQ5LCAyMTYsIDExNSwgMTU4LCA1MSwgMjE2LCAxMTUsIDE1OCwgMjUwLCAxNjUsIDE1OCwgOTMsIAorICAgIDU0LCAxNTgsIDI0NiwgNzAsIDE1OCwgMjMzLCAzMiwgMTU4LCAyMzYsIDE4MywgMjA4LCA3NiwgMTU4LCAyMDksIDE2LCAKKyAgICAxNTgsIDE3LCAxOTksIDgxLCAxNTgsIDE3LCAxMDIsIDE1OCwgMTcsIDEwNSwgMTU4LCAxNywgMTQ3LCAxNTgsIDE3LCAxNDksIAorICAgIDE1OCwgMTcsIDE2NCwgMTU4LCAxNywgMTg3LCAxNTgsIDE3LCAyMTAsIDEzNSwgMTU4LCAxNywgMTkyLCAxNTgsIDE3LCAKKyAgICAyMTksIDExMywgMTU4LCAyNDYsIDc5LCAxNTgsIDIxMCwgMTY3LCAxNTgsIDIyNCwgMjQxLCA1NCwgMTU4LCAyMzgsIDEyMiwgCisgICAgNTQsIDE1OCwgMjM1LCA2NywgNTQsIDE1OCwgMjE0LCA3OSwgODEsIDE1OCwgMjQ2LCA2OCwgMjUwLCAxNTUsIDE1OCwgOCwgCisgICAgNiwgMSwgNjIsIDE1OCwgOCwgNiwgMSwgMjUwLCAxMDMsIDE1OCwgOCwgNiwgMSwgMjQ3LCAyMjMsIDE1OCwgOCwgNiwgMSwgCisgICAgMjQyLCAxNTMsIDE1OCwgOCwgNiwgMSwgNzIsIDE1OCwgOCwgNiwgMSwgMjM4LCA1LCAxNTgsIDgsIDYsIDEsIDIzNiwgMTU2LCAKKyAgICAxNTgsIDgsIDYsIDEsIDIzNCwgMjQ3LCAxNTgsIDgsIDYsIDEsIDcwLCAxNTgsIDgsIDYsIDEsIDIyNywgMjUxLCAxNTgsIDgsIAorICAgIDYsIDEsIDIyNywgMTE4LCAxNTgsIDgsIDYsIDEsIDE1NiwgMTU4LCA4LCA2LCAxLCAyMjMsIDI0MywgMTU4LCA4LCA2LCAxLCAKKyAgICAyMjAsIDIxNCwgMTU4LCA4LCA2LCAxLCA3NCwgMTU4LCA4LCA2LCAxLCAyMTYsIDIyNiwgMTU4LCA4LCA2LCAxLCAyMTQsIAorICAgIDE2NywgMTU4LCA4LCA2LCAxLCAxNDYsIDE1OCwgOCwgNiwgMSwgMjEyLCAxMjIsIDE1OCwgOCwgNiwgMSwgMjA3LCA4MywgCisgICAgMTU4LCA4LCA2LCAxLCA2NiwgMTU4LCA4LCA2LCAxLCAyMDMsIDE2OCwgMTU4LCA4LCA2LCAxLCAyMDEsIDE0NywgMTU4LCA4LCAKKyAgICA2LCAxLCAyMDAsIDE5NSwgMTU4LCA4LCA2LCAxLCAyMDAsIDEyMywgMTU4LCA4LCA2LCAxLCAxOTksIDE1NywgMTU4LCA0OSwgCisgICAgNTIsIDE1OSwgMTU4LCAyMTMsIDEwNiwgMjA5LCAxNiwgMTU4LCA1MSwgNTIsIDE1OSwgMTU4LCAyNDYsIDE0NywgMjUxLCAKKyAgICAyNTEsIDE1OCwgMTI4LCAyMjQsIDE3NiwgMTU4LCAyMzUsIDc0LCAyNTEsIDI1MSwgMTU4LCA4LCA0LCAxLCA2MiwgMTU4LCAKKyAgICA4LCA0LCAxLCAyNTAsIDEwMywgMTU4LCA4LCA0LCAxLCAyNDcsIDIyMywgMTU4LCA4LCA0LCAxLCAyNDIsIDE1MywgMTU4LCAKKyAgICA4LCA0LCAxLCA3MiwgMTU4LCA4LCA0LCAxLCAyMzgsIDUsIDE1OCwgOCwgNCwgMSwgMjM2LCAxNTYsIDE1OCwgOCwgNCwgMSwgCisgICAgMjM0LCAyNDcsIDE1OCwgOCwgNCwgMSwgNzAsIDE1OCwgOCwgNCwgMSwgMjI3LCAyNTEsIDE1OCwgOCwgNCwgMSwgMjI3LCAKKyAgICAxMTgsIDE1OCwgOCwgNCwgMSwgMTU2LCAxNTgsIDgsIDQsIDEsIDIyMywgMjQzLCAxNTgsIDgsIDQsIDEsIDIyMCwgMjE0LCAKKyAgICAxNTgsIDgsIDQsIDEsIDc0LCAxNTgsIDgsIDQsIDEsIDIxNiwgMjI2LCAxNTgsIDgsIDQsIDEsIDIxNCwgMTY3LCAxNTgsIDgsIAorICAgIDQsIDEsIDE0NiwgMTU4LCA4LCA0LCAxLCAyMTIsIDEyMiwgMTU4LCA4LCA0LCAxLCAyMDcsIDgzLCAxNTgsIDgsIDQsIDEsIAorICAgIDY2LCAxNTgsIDgsIDQsIDEsIDIwMywgMTY4LCAxNTgsIDgsIDQsIDEsIDIwMSwgMTQ3LCAxNTgsIDgsIDQsIDEsIDIwMCwgCisgICAgMTk1LCAxNTgsIDgsIDQsIDEsIDIwMCwgMTIzLCAxNTgsIDgsIDQsIDEsIDE5OSwgMTU3LCAxNTgsIDQ5LCAyNDIsIDE5NiwgCisgICAgMTU5LCAxNTgsIDgzLCAyMjQsIDE3NiwgMTU4LCA1MSwgMjQyLCAxOTYsIDE1OSwgMTU4LCAyMDUsIDI0MCwgMTU4LCA0OSwgCisgICAgNjQsIDIxNiwgMTE1LCAxNTgsIDUxLCA2NCwgMjE2LCAxMTUsIDEzMCwgMTQxLCAyMzYsIDE4MywgMjA4LCA3NiwgMTMwLCAKKyAgICA0OSwgMjQzLCAxNiwgMTU5LCAxMzAsIDUxLCAyNDMsIDE2LCAxNTksIDEzMCwgMTQxLCAyNDYsIDcwLCAxMzAsIDY5LCAxMDEsIAorICAgIDI0MCwgMTgyLCAxMzAsIDY5LCAxLCAyMDEsIDAsIDEzMCwgNjksIDEsIDQsIDYyLCAxMzAsIDY5LCAxLCA0LCA3MCwgMTMwLCAKKyAgICA2OSwgMSwgNCwgNjYsIDEzMCwgNjksIDEsIDQsIDcyLCAxMzAsIDY5LCAxLCA0LCA3NCwgMTMwLCA2OSwgMSwgNCwgMTgzLCAKKyAgICAxMzAsIDY5LCAxLCA0LCAxOTksIDIxMSwgMTMwLCA2OSwgMSwgNCwgMTk5LCAyNDUsIDEzMCwgNjksIDEsIDQsIDIwNCwgCisgICAgMjE1LCAxMzAsIDIyNywgMzIsIDIxNCwgMjQ4LCAyMDksIDEsIDgxLCAxMzAsIDY5LCAxLCA2MiwgMTMwLCA2OSwgMSwgNzAsIAorICAgIDEzMCwgNjksIDEsIDY2LCAxMzAsIDY5LCAxLCA3MiwgMTMwLCA2OSwgMSwgNzQsIDEzMCwgNjksIDEsIDE2MSwgMTMwLCA2OSwgCisgICAgMSwgMjI2LCAxNjMsIDEzMCwgNjksIDEsIDIyNiwgMTUsIDEzMCwgNjksIDEsIDIyNywgOCwgMTMwLCA2OSwgMSwgMjI2LCAKKyAgICA4OCwgMTMwLCA2OSwgMSwgMjEyLCA2NCwgMTMwLCA2OSwgMSwgMjA5LCAxODIsIDEzMCwgNjksIDEsIDIwOCwgMjQsIDEzMCwgCisgICAgNjksIDEsIDIxMSwgMjAyLCAxMzAsIDY5LCAxLCAyMDksIDI5LCAxMzAsIDY5LCAxLCAyMDcsIDM2LCAxMzAsIDY5LCAxLCAKKyAgICAyMDYsIDE1LCAxMzAsIDY5LCAxLCAyMDQsIDIxNSwgMTMwLCA2OSwgMSwgMjA2LCAyMDEsIDEzMCwgNjksIDEsIDEzOCwgCisgICAgMTMwLCA2OSwgMSwgMTg4LCAxMzAsIDY5LCAxLCAyMTksIDE1MCwgMTMwLCA2OSwgMSwgMjE4LCAxMzMsIDEzMCwgNjksIDEsIAorICAgIDIyMCwgMzQsIDEzMCwgNjksIDEsIDIxOCwgMjQxLCAxMzAsIDY5LCAxLCAxNDQsIDEzMCwgNjksIDEsIDIzNCwgNzUsIDEzMCwgCisgICAgNjksIDEsIDIzMywgOTcsIDEzMCwgNjksIDEsIDIzNCwgMTM5LCAxMzAsIDY5LCAxLCAyMzMsIDIwNywgMTMwLCA2OSwgMSwgCisgICAgMTc4LCAxMzAsIDY5LCAxLCAyMjEsIDIxMSwgMTMwLCA2OSwgMSwgMjIxLCA0MSwgMTMwLCA2OSwgMSwgMjIyLCA3NiwgMTMwLCAKKyAgICA2OSwgMSwgMjIxLCAxMzYsIDEzMCwgNjksIDEsIDE4MywgMTMwLCA2OSwgMSwgMTk5LCAyMTEsIDEzMCwgNjksIDEsIDE5OSwgCisgICAgMjQ1LCAxMzAsIDY5LCAxLCAyMTMsIDI1MiwgMTMwLCA2OSwgMSwgMjEzLCA4OCwgMTMwLCA2OSwgMSwgMjEyLCAxNzUsIAorICAgIDEzMCwgNjksIDEsIDIxMywgMTkwLCAxMzAsIDY5LCAxLCAyMTMsIDEsIDEzMCwgNjksIDEsIDIwMSwgMTE0LCAxMzAsIDY5LCAKKyAgICAxLCAyMjAsIDIxNCwgMTMwLCA2OSwgMjAyLCAxODksIDIwOSwgMSwgODEsIDEzMCwgNjksIDIxMCwgMTcyLCAyMDksIDEsIAorICAgIDgxLCAxMzAsIDI5LCAyMzcsIDkzLCAxMzAsIDI5LCAxLCAyMjYsIDEyMSwgMTMwLCAyOSwgMSwgMjA4LCAxNzEsIDEzMCwgCisgICAgMjksIDEsIDIyNiwgMTE0LCAxMzAsIDI5LCAxLCAyMTksIDE0MywgMTMwLCAyOSwgMSwgMjE5LCAxNDEsIDEzMCwgMjksIDEsIAorICAgIDIxOSwgMTQwLCAxMzAsIDI5LCAxLCAyMDUsIDI1MywgMTMwLCAyOSwgMSwgMjA4LCAxNjAsIDEzMCwgMjksIDEsIDIxMywgCisgICAgNzgsIDEzMCwgMjksIDEsIDIxMywgNzMsIDEzMCwgMjksIDEsIDIxMywgNzAsIDEzMCwgMjksIDEsIDIxMywgNjMsIDEzMCwgCisgICAgMjksIDEsIDIxMywgNTgsIDEzMCwgMjksIDEsIDIxMywgNTMsIDEzMCwgMjksIDEsIDIxMywgNjQsIDEzMCwgMjksIDEsIAorICAgIDIxMywgNzYsIDEzMCwgMjksIDEsIDIyMSwgMTk3LCAxMzAsIDI5LCAxLCAyMTUsIDE5MCwgMTMwLCAyOSwgMSwgMjA4LCAKKyAgICAxNjgsIDEzMCwgMjksIDEsIDIxNSwgMTc5LCAxMzAsIDI5LCAxLCAyMDksIDEyOSwgMTMwLCAyOSwgMSwgMjA4LCAxNjUsIAorICAgIDEzMCwgMjksIDEsIDIyOCwgMTc0LCAxMzAsIDI5LCAxLCAyNDYsIDE2OCwgMTMwLCAyOSwgMSwgMjA4LCAxNzUsIDEzMCwgCisgICAgMjksIDEsIDI0NiwgMjMyLCAxMzAsIDI5LCAxLCAyMjYsIDE4MywgMTMwLCAyOSwgMSwgMjA2LCA4MCwgMTMwLCAyOSwgMSwgCisgICAgMjE1LCAyMjcsIDEzMCwgMjksIDEsIDIzNCwgNjYsIDEzMCwgMjksIDEsIDYyLCAxMzAsIDI5LCAxLCAyNTEsIDIyMSwgMTMwLCAKKyAgICAyOSwgMSwgMTgzLCAxMzAsIDI5LCAxLCAyMDAsIDk4LCAxMzAsIDI5LCAxLCAyMzgsIDE0MiwgMTMwLCAyOSwgMSwgNzIsIAorICAgIDEzMCwgMjksIDEsIDIwMCwgMzgsIDEzMCwgMjksIDEsIDIwMCwgNTEsIDEzMCwgMjksIDEsIDc0LCAxMzAsIDI5LCAxLCAKKyAgICAyMDEsIDExNCwgMTMwLCAyOSwgMSwgMjAxLCAxMTAsIDEzMCwgMjksIDEsIDIxNywgMTIxLCAxMzAsIDI5LCAxLCAxOTksIAorICAgIDI0NSwgMTMwLCAyOSwgMSwgNjYsIDEzMCwgMjksIDEsIDIwMSwgNTAsIDEzMCwgMjksIDEsIDIwMSwgNjQsIDEzMCwgMjksIAorICAgIDEsIDIwMSwgMzEsIDEzMCwgMjksIDEsIDE5OSwgMjExLCAxMzAsIDI5LCAxLCAyMzgsIDY5LCAxMzAsIDI5LCAxLCAyMDAsIAorICAgIDksIDEzMCwgMjksIDEsIDcwLCAxNTgsIDI0NywgNTgsIDU0LCAxNTgsIDIxNSwgNTYsIDU0LCAxNTgsIDIxOCwgMjE1LCA1NCwgCisgICAgMTU4LCAyMjIsIDIyOCwgMTU4LCAyNDgsIDQ2LCAxNDgsIDE1OCwgMjAwLCA0MiwgNTQsIDE1OCwgMjAwLCAyNDYsIDU0LCAKKyAgICAxMzAsIDIzNiwgMjM5LCAxNjIsIDIwMywgNDIsIDEzMCwgOTgsIDQ4LCAxMzAsIDE4MiwgNDgsIDEzMCwgODcsIDQ4LCAxMzAsIAorICAgIDE5MSwgNDgsIDEzMCwgNjMsIDIwOCwgMTkzLCAxMzAsIDY0LCAyNDYsIDE1NSwgMjI4LCA2MiwgMjUxLCA1OCwgMjUxLCA4MSwgCisgICAgMjI4LCA2MiwgMjUxLCA1OCwgMjEwLCAxNTQsIDIyOCwgNjIsIDI1MSwgNTgsIDIwNiwgMTUyLCAyMTcsIDEzOSwgMjEzLCAKKyAgICAxMjgsIDI0NywgMjAsIDIxMywgMTI4LCAyNDcsIDIwLCAzMCwgNjgsIDUsIDI1MCwgODcsIDYyLCAzMCwgNjgsIDUsIDI1MCwgCisgICAgNTYsIDcyLCAzMCwgNjgsIDUsIDI1MCwgNjUsIDcwLCAzMCwgNjgsIDUsIDI1MCwgMzMsIDc0LCAzMCwgNjgsIDUsIDI1MCwgCisgICAgODMsIDY2LCAzMCwgNjgsIDUsIDI1MCwgMTAyLCAyNDIsIDU4LCAzMCwgNjgsIDUsIDI1MCwgNDksIDI0MSwgMTc1LCAzMCwgCisgICAgNjgsIDUsIDI1MCwgODksIDI0MSwgNzYsIDMwLCA2OCwgNSwgMjUwLCA3OSwgMjQwLCAyMTEsIDMwLCA2OCwgNSwgMjUwLCAKKyAgICA0MywgMjM5LCAxMzcsIDMwLCA2OCwgNSwgMjUwLCAzNywgMjI3LCAyNDgsIDMwLCA2OCwgNSwgMjUwLCA0OCwgMjI3LCAyMjcsIAorICAgIDMwLCA2OCwgNSwgMjUwLCA1OCwgMjI3LCAxNjYsIDMwLCA2OCwgNSwgMjUwLCAyOSwgMjI3LCAxNDcsIDMwLCA2OCwgNSwgCisgICAgMjUwLCAxNywgMTYxLCAzMCwgNjgsIDUsIDI1MCwgNTAsIDIyNywgOCwgMzAsIDY4LCA1LCAyNTAsIDI3LCAyMjYsIDE2MywgCisgICAgMzAsIDY4LCA1LCAyNTAsIDI0LCAyMjYsIDg4LCAzMCwgNjgsIDUsIDI1MCwgMTMsIDIyNiwgMTUsIDMwLCA2OCwgNSwgMjUwLCAKKyAgICAxNCwgMTc4LCAzMCwgNjgsIDUsIDI1MCwgODAsIDIyMiwgNzYsIDMwLCA2OCwgNSwgMjUwLCAyMSwgMjIxLCAyMTEsIDMwLCAKKyAgICA2OCwgNSwgMjUwLCA3OCwgMjIxLCAxMzYsIDMwLCA2OCwgNSwgMjUwLCA3MCwgMjIxLCA0MSwgMzAsIDY4LCA1LCAyNTAsIAorICAgIDkxLCAxODgsIDMwLCA2OCwgNSwgMjUwLCA2OSwgMjIwLCAzNCwgMzAsIDY4LCA1LCAyNTAsIDYzLCAyMTksIDE1MCwgMzAsIAorICAgIDY4LCA1LCAyNTAsIDQyLCAyMTgsIDI0MSwgMzAsIDY4LCA1LCAyNTAsIDM5LCAyMTgsIDEzMywgMzAsIDY4LCA1LCAyNTAsIAorICAgIDk4LCAxNzIsIDMwLCA2OCwgNSwgMjUwLCAyMiwgMjE2LCA3MywgMzAsIDY4LCA1LCAyNTAsIDU1LCAyMTUsIDIwNCwgMzAsIAorICAgIDY4LCA1LCAyNTAsIDgyLCAyMTUsIDEwNiwgMzAsIDY4LCA1LCAyNTAsIDQ0LCAyMTQsIDIyNCwgMzAsIDY4LCA1LCAyNTAsIAorICAgIDc3LCAyMTQsIDE1OSwgMzAsIDY4LCA1LCAyNTAsIDE2LCAyMTQsIDEzOSwgMzAsIDY4LCA1LCAyNTAsIDcyLCAyMTQsIDEyMSwgCisgICAgMzAsIDY4LCA1LCAyNTAsIDYxLCAyMTQsIDEwOSwgMzAsIDY4LCA1LCAyNTAsIDM0LCAyMTMsIDI1MiwgMzAsIDY4LCA1LCAKKyAgICAyNTAsIDY2LCAyMTMsIDE5MCwgMzAsIDY4LCA1LCAyNTAsIDQxLCAyMTMsIDg4LCAzMCwgNjgsIDUsIDI1MCwgMTAwLCAyMTMsIAorICAgIDEsIDMwLCA2OCwgNSwgMjUwLCA2NywgMjEyLCAxNzUsIDMwLCA2OCwgNSwgMjUwLCA2MiwgMjEyLCA2NCwgMzAsIDY4LCA1LCAKKyAgICAyNTAsIDg1LCAyMTEsIDIwMiwgMzAsIDY4LCA1LCAyNTAsIDUzLCAyMDksIDE4MiwgMzAsIDY4LCA1LCAyNTAsIDgxLCAyMDksIAorICAgIDI5LCAzMCwgNjgsIDUsIDI1MCwgMzYsIDIwOCwgMjQsIDMwLCA2OCwgNSwgMjUwLCAzNSwgMjA3LCAzNiwgMzAsIDY4LCA1LCAKKyAgICAyNTAsIDk2LCAyMDYsIDIwMSwgMzAsIDY4LCA1LCAyNTAsIDU3LCAyMDYsIDE1LCAzMCwgNjgsIDUsIDI1MCwgOTQsIDEzOCwgCisgICAgMzAsIDY4LCA1LCAyNTAsIDI1LCAyMDQsIDIxNSwgMzAsIDY4LCA1LCAyNTAsIDQwLCAyMDEsIDExNCwgMzAsIDY4LCA1LCAKKyAgICAyNTAsIDE5LCAyMDEsIDY0LCAzMCwgNjgsIDUsIDI1MCwgNTQsIDIwMSwgMzEsIDMwLCA2OCwgNSwgMjUwLCA1MiwgMjAxLCAKKyAgICAwLCAzMCwgNjgsIDUsIDI1MCwgNzYsIDE5OSwgMTE0LCAzMCwgNjgsIDUsIDI1MCwgMjAsIDE5OSwgODksIDMwLCA2OCwgNSwgCisgICAgMjUwLCA3MywgMTk5LCAxNCwgMzAsIDY4LCA1LCAyNTAsIDY4LCAyNTQsIDE0NywgMzAsIDY4LCA1LCAyNTAsIDUxLCAyNTQsIAorICAgIDM1LCAzMCwgNjgsIDUsIDI1MCwgMTAsIDI1MCwgMTM5LCAzMCwgNjgsIDUsIDI1MCwgMjMsIDIzOSwgMTAzLCAzMCwgNjgsIAorICAgIDUsIDI1MCwgNiwgMjM5LCAxMDIsIDMwLCA2OCwgNSwgMjUwLCA0NiwgMjE4LCA2OSwgMzAsIDY4LCA1LCAyNTAsIDY0LCAKKyAgICAyMTQsIDIyMiwgMzAsIDY4LCA1LCAyNTAsIDMyLCAyMTQsIDIyNiwgMzAsIDY4LCA1LCAyNTAsIDE4LCAyMTMsIDI1MCwgMzAsIAorICAgIDY4LCA1LCAyNTAsIDYwLCAyMTMsIDI0OSwgMzAsIDY4LCA1LCAyNTAsIDI2LCAyMTMsIDAsIDMwLCA2OCwgNSwgMjUwLCAyOCwgCisgICAgMjA3LCAzMywgMzAsIDY4LCA1LCAyNTAsIDgsIDIwNCwgMTY4LCAzMCwgNjgsIDUsIDI1MCwgNSwgMTA1LCAzMCwgNjgsIDE2LCAKKyAgICAyNTAsIDc1LCAzMCwgNjgsIDE2LCAyNTAsIDc0LCAzMCwgNjgsIDE2LCAyNTAsIDcxLCAzMCwgNjgsIDE2LCAyNTAsIDU5LCAKKyAgICAzMCwgNjgsIDE2LCAyNTAsIDQ3LCAzMCwgNjgsIDE2LCAyNTAsIDQ1LCAzMCwgNjgsIDE2LCAyNTAsIDM4LCAzMCwgNjgsIAorICAgIDE2LCAyNTAsIDMxLCAzMCwgNjgsIDE2LCAyNTAsIDMwLCAzMCwgNjgsIDE2LCAyNTAsIDE1LCAzMCwgNjgsIDE2LCAyNTAsIAorICAgIDEyLCAzMCwgNjgsIDE2LCAyNTAsIDExLCAzMCwgNjgsIDE2LCAyNTAsIDksIDMwLCA2OCwgMTYsIDI1MCwgNywgMzAsIDY4LCAKKyAgICAxMzYsIDI1MCwgNCwgMjIyLCAxODAsIDMwLCA2OCwgMTM2LCAyNTAsIDMsIDIwMCwgMjUwLCAzMCwgNjgsIDEzNiwgMjUwLCAKKyAgICAyLCAyNDEsIDE1OCwgMzAsIDY4LCAxMzYsIDI1MCwgMSwgMjM4LCAxMTksIDMwLCA2OCwgMTM2LCAyNTAsIDAsIDIyMiwgCisgICAgMTUwLCAzMCwgNjgsIDEzNiwgMjQ5LCAyNTUsIDIwOCwgMTE2LCAzMCwgNjgsIDEzNiwgMjQ5LCAyNTQsIDIzOCwgNTAsIDMwLCAKKyAgICA2OCwgMTM2LCAyNDksIDI1MywgMjEzLCAyMTYsIDMwLCA2OCwgMTM2LCAyNDksIDI1MiwgMjEwLCA2NCwgMzAsIDY4LCAxMzYsIAorICAgIDI0OSwgMjUxLCAyMzQsIDEzOCwgMzAsIDY4LCAxMzYsIDI0OSwgMjUwLCAyMDgsIDI1MSwgMzAsIDY4LCAxMzYsIDI0OSwgCisgICAgMjQ5LCAyNDgsIDEyMiwgMzAsIDY4LCAxMzYsIDI0OSwgMjQ4LCAyNDIsIDI1NSwgMzAsIDY4LCAxMzYsIDI0OSwgMjQ3LCAKKyAgICAyNDgsIDIyLCAzMCwgNjgsIDEzNiwgMjQ5LCAyNDYsIDIwMSwgMzksIDMwLCA2OCwgMTM2LCAyNDksIDI0NSwgMjQ5LCA3MywgCisgICAgMzAsIDY4LCAxMzYsIDI0OSwgMjQ0LCAyMTcsIDg4LCAzMCwgNjgsIDEzNiwgMjQ5LCAyNDMsIDIwOCwgMjIzLCAzMCwgNjgsIAorICAgIDEzNiwgMjQ5LCAyNDIsIDI0MiwgMTYxLCAzMCwgNjgsIDIyMSwgOTcsIDI0OSwgMjQxLCAyMjcsIDU2LCAzMCwgNjgsIDIyMSwgCisgICAgOTcsIDI0OSwgMjQwLCAyMjcsIDY2LCAzMCwgNjgsIDEzNiwgMjQ5LCAyMzksIDIxNywgMTAzLCAzMCwgNjgsIDEzNiwgMjQ5LCAKKyAgICAyMzgsIDIwMSwgMTIsIDMwLCA2OCwgMTM2LCAyNDksIDIzNywgMzAsIDY4LCAyMjEsIDk3LCAyNDksIDIzNiwgMjUwLCAyMjcsIAorICAgIDMwLCA2OCwgMjIxLCA5NywgMjQ5LCAyMzUsIDIyMiwgMzIsIDMwLCA2OCwgMTM2LCAyNDksIDIzNCwgMjQ4LCA0NSwgMzAsIAorICAgIDY4LCAxMzYsIDI0OSwgMjMzLCAyMzUsIDEwOCwgMzAsIDY4LCAxMzYsIDI0OSwgMjMyLCAzMCwgNjgsIDEzNiwgMjQ5LCAKKyAgICAyMzEsIDIwMCwgMjQxLCAzMCwgNjgsIDEzNiwgMjQ5LCAyMzAsIDMwLCA2OCwgMTM2LCAyNDksIDIyOSwgMzAsIDY4LCAxMzYsIAorICAgIDI0OSwgMjI4LCAyMzMsIDEyNCwgMzAsIDY4LCAxMzYsIDI0OSwgMjI3LCAzMCwgNjgsIDEzNiwgMjQ5LCAyMjYsIDMwLCA2OCwgCisgICAgMTM2LCAyNDksIDIyNSwgMzAsIDY4LCAyMjEsIDk3LCAyNDksIDIyMywgMjA0LCAxODMsIDMwLCA2OCwgMTM2LCAyNDksIAorICAgIDIyMiwgMzAsIDY4LCAxMzYsIDI0OSwgMjIxLCAzMCwgNjgsIDEzNiwgMjQ5LCAyMjAsIDI0NiwgMTA0LCAzMCwgNjgsIDEzNiwgCisgICAgMjQ5LCAyMTksIDMwLCA2OCwgMTM2LCAyNDksIDIxOCwgMzAsIDY4LCAxMzYsIDI0OSwgMjE3LCAyMzYsIDQ2LCAzMCwgNjgsIAorICAgIDEzNiwgMjQ5LCAyMTYsIDI1MCwgMjE0LCAzMCwgNjgsIDEzNiwgMjQ5LCAyMTUsIDMwLCA2OCwgMTM2LCAyNDksIDIxNCwgCisgICAgMzAsIDY4LCAxMzYsIDI0OSwgMjEzLCAzMCwgNjgsIDEzNiwgMjQ5LCAyMTIsIDMwLCA2OCwgMTM2LCAyNDksIDIxMSwgMzAsIAorICAgIDY4LCAxMzYsIDI0OSwgMjEwLCAzMCwgNjgsIDEzNiwgMjQ5LCAyMDksIDMwLCA2OCwgMTM2LCAyNDksIDIwOCwgMzAsIDY4LCAKKyAgICAxMzYsIDI0OSwgMjA3LCAzMCwgNjgsIDEzNiwgMjQ5LCAyMDYsIDIyMSwgODksIDMwLCA2OCwgMTM2LCAyNDksIDIwNSwgMzAsIAorICAgIDY4LCAxMzYsIDI0OSwgMjA0LCAyMDUsIDEwOCwgMzAsIDY4LCAxMzYsIDI0OSwgMjAzLCAzMCwgNjgsIDEzNiwgMjQ5LCAKKyAgICAyMDIsIDMwLCA2OCwgMTM2LCAyNDksIDIwMSwgMzAsIDY4LCAxMzYsIDI0OSwgMjAwLCAzMCwgNjgsIDEzNiwgMjQ5LCAxOTksIAorICAgIDMwLCA2OCwgMTM2LCAyNDksIDE5OCwgMzAsIDY4LCAxMzYsIDI0OSwgMTk3LCAzMCwgNjgsIDEzNiwgMjQ5LCAxOTYsIDMwLCAKKyAgICA2OCwgMTM2LCAyNDksIDE5NSwgMzAsIDY4LCAxMzYsIDI0OSwgMTk0LCAzMCwgNjgsIDEzNiwgMjQ5LCAxOTMsIDMwLCA2OCwgCisgICAgMTM2LCAyNDksIDE5MiwgMjM0LCAxMDcsIDMwLCA2OCwgMTM2LCAyNDksIDE3MSwgMjM2LCAyNTEsIDMwLCA2OCwgMTM2LCAKKyAgICAyNDksIDE2OCwgMjQ5LCA1MCwgMzAsIDY4LCAxMzYsIDI0OSwgMTYzLCAyMDgsIDIzMCwgMzAsIDY4LCAxMzYsIDI0OSwgCisgICAgMTYyLCA0OCwgMzAsIDY4LCAxMzYsIDI0OSwgMTYxLCAzMCwgNjgsIDEzNiwgMjQ5LCAxNjAsIDIwNywgMTY5LCAzMCwgNjgsIAorICAgIDEzNiwgMjQ5LCAxNTksIDMwLCA2OCwgMTM2LCAyNDksIDE1OCwgMzAsIDY4LCAxMzYsIDI0OSwgMTU3LCAyMDEsIDM1LCAKKyAgICAyNDcsIDE3LCAzMCwgNjgsIDEzNiwgMjQ5LCAxNTYsIDI0NywgMTcsIDMwLCA2OCwgMTM2LCAyNDksIDE1NSwgMjQ3LCAxOCwgCisgICAgMjM2LCAyMTUsIDMwLCA2OCwgMTM2LCAyNDksIDE1NCwgMjAxLCAzNywgMzAsIDY4LCAxMzYsIDI0OSwgMTUzLCAzMCwgNjgsIAorICAgIDEzNiwgMjQ5LCAxNTIsIDMwLCA2OCwgMjIxLCA5NywgMjQ5LCAxNTEsIDI0MSwgMTEsIDMwLCA2OCwgMTM2LCAyNDksIDE1MCwgCisgICAgMzAsIDY4LCAxMzYsIDI0OSwgMTQ5LCAzMCwgNjgsIDEzNiwgMjQ5LCAxNDcsIDMwLCA2OCwgMTM2LCAyNDksIDE0NiwgMzAsIAorICAgIDY4LCAxMzYsIDI0OSwgMTQ1LCAzMCwgNjgsIDEzNiwgMjQ5LCAxNDQsIDI0MSwgMjQ3LCAzMCwgNjgsIDEzNiwgMjQ5LCAKKyAgICAxNDMsIDMwLCA2OCwgMTM2LCAyNDksIDE0MiwgMzAsIDY4LCAxMzYsIDI0OSwgMTQxLCAzMCwgNjgsIDEzNiwgMjQ5LCAxNDAsIAorICAgIDMwLCA2OCwgMTM2LCAyNDksIDEzOSwgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDIyNCwgMzAsIDY4LCAxMzYsIDIwMiwgCisgICAgMjQ1LCAyNDksIDE5MSwgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDE5MCwgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAKKyAgICAyNDksIDE4OSwgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDE4OCwgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIAorICAgIDE4NywgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDE4NiwgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDE4NSwgCisgICAgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDE4NCwgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDE4MywgMzAsIDY4LCAKKyAgICAxMzYsIDIwMiwgMjQ1LCAyNDksIDE4MiwgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDE4MSwgMzAsIDY4LCAxMzYsIAorICAgIDIwMiwgMjQ1LCAyNDksIDE4MCwgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDE3OSwgMzAsIDY4LCAxMzYsIDIwMiwgCisgICAgMjQ1LCAyNDksIDE3OCwgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDE3NywgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAKKyAgICAyNDksIDE3NiwgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDE3NSwgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIAorICAgIDE3NCwgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDE3MywgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDE3MiwgCisgICAgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDE3MCwgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDE2OSwgMzAsIDY4LCAKKyAgICAxMzYsIDIwMiwgMjQ1LCAyNDksIDE2NywgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDE2NiwgMzAsIDY4LCAxMzYsIAorICAgIDIwMiwgMjQ1LCAyNDksIDE2NSwgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDE2NCwgMzAsIDY4LCAxMzYsIDIwMiwgCisgICAgMjQ1LCAyNDksIDE0OCwgMzAsIDY4LCAxMzYsIDIwMiwgMjQ1LCAyNDksIDEzOCwgMjUxLCAyMTQsIDIwMCwgMjM4LCAyMTAsIAorICAgIDE1NSwgMjI0LCAxNzYsIDI1MSwgMjE0LCAyMDAsIDIzOCwgMjEwLCAxNTUsIDI0MCwgMTgyLCAyNTEsIDIxNCwgMjQ3LCA3LCAKKyAgICA4MSwgMjUxLCAyMTQsIDQxLCAxMDIsIDI1MSwgMjE0LCA0MSwgMTA1LCAyNTEsIDIxNCwgNDEsIDE0NywgMjUxLCAyMTQsIAorICAgIDQxLCAxNDksIDI1MSwgMjE0LCA0MSwgMTY0LCAyNTEsIDIxNCwgNDEsIDE4NywgMjUxLCAyMTQsIDQxLCAyMTAsIDEzNSwgCisgICAgMjUxLCAyMTQsIDQxLCAxOTIsIDI1MSwgMjE0LCA0MSwgMjE5LCAxMTMsIDI1MSwgMjE0LCA0MSwgMjA2LCAxNjYsIDI1MSwgCisgICAgMjE0LCA0MSwgMjA0LCAxNTksIDI1MSwgMjE0LCA0MSwgMjA2LCA2NywgMjUxLCAyMTQsIDQxLCAyMzYsIDIzNSwgMjUxLCAKKyAgICAyMTQsIDQxLCAyMzcsIDEwNCwgMjUxLCAyMTQsIDQxLCAyMDksIDkyLCAyNTEsIDIxNCwgNDEsIDIxMCwgMTI5LCAyNTEsIAorICAgIDIxNCwgNDEsIDIzOCwgMjIyLCAyNTEsIDIxNCwgNDEsIDIxOSwgMTA4LCAyNTEsIDIxNCwgNDEsIDExMiwgMjMzLCA4MiwgCisgICAgMjUxLCAyMTQsIDQxLCAxMjAsIDIzMywgODIsIDI1MSwgMjE0LCA0MSwgMTI2LCAyMzMsIDgyLCAyNTEsIDIxNCwgNDEsIAorICAgIDIzNiwgMjI5LCAyMzMsIDgyLCAyNTEsIDIxNCwgNDEsIDIzNywgNjEsIDIzMywgODIsIDI1MSwgMjE0LCA0MSwgMjA5LCAKKyAgICAxMDYsIDIzMywgODIsIDI1MSwgMjE0LCA0MSwgMjEwLCAxMzYsIDIzMywgODIsIDI1MSwgMjE0LCA0MSwgMjM4LCAyMzIsIAorICAgIDIzMywgODIsIDI1MSwgMjE0LCA0MSwgMjE5LCAxMTQsIDIzMywgODIsIDI1MSwgMjE0LCA0MSwgMTEyLCAyMDYsIDUwLCAKKyAgICAyNTEsIDIxNCwgNDEsIDEyMCwgMjA2LCA1MCwgMjUxLCAyMTQsIDQxLCAxMjYsIDIwNiwgNTAsIDI1MSwgMjE0LCA0MSwgCisgICAgMjM2LCAyMjksIDIwNiwgNTAsIDI1MSwgMjE0LCA0MSwgMjM3LCA2MSwgMjA2LCA1MCwgMjUxLCAyMTQsIDQxLCAyMDksIAorICAgIDEwNiwgMjA2LCA1MCwgMjUxLCAyMTQsIDQxLCAyMTAsIDEzNiwgMjA2LCA1MCwgMjUxLCAyMTQsIDQxLCAyMzgsIDIzMiwgCisgICAgMjA2LCA1MCwgMjUxLCAyMTQsIDQxLCAyMTksIDExNCwgMjA2LCA1MCwgMjUxLCAyMTQsIDQxLCAyMDYsIDE2NywgMjA2LCAKKyAgICA1MCwgMjUxLCAyMTQsIDQxLCAyMDQsIDE2MCwgMjA2LCA1MCwgMjUxLCAyMTQsIDQxLCAyMDYsIDY4LCAyMDYsIDUwLCAyNTEsIAorICAgIDIxNCwgNDEsIDIzNiwgMjM2LCAyMDYsIDUwLCAyNTEsIDIxNCwgNDEsIDIzNywgMTA1LCAyMDYsIDUwLCAyNTEsIDIxNCwgCisgICAgNDEsIDIwOSwgOTMsIDIwNiwgNTAsIDI1MSwgMjE0LCA0MSwgMjEwLCAxMzAsIDIwNiwgNTAsIDI1MSwgMjE0LCA0MSwgMjM4LCAKKyAgICAyMjMsIDIwNiwgNTAsIDI1MSwgMjE0LCA0MSwgMjE5LCAxMDksIDIwNiwgNTAsIDI1MSwgMjE0LCAyMDEsIDUzLCAyNDksIAorICAgIDY1LCAyMDMsIDIzOSwgMjUxLCAyMTQsIDIwMSwgNTMsIDIzNywgNzMsIDIwNywgMjU0LCAyNTEsIDIxNCwgMjAxLCA1MywgCisgICAgMjExLCAxOTYsIDIwNywgMjU0LCAyNTEsIDIxNCwgMjAxLCA1MywgMjA2LCA3NSwgMjA3LCAyNTQsIDI1MSwgMjE0LCAyMDEsIAorICAgIDUzLCAyMzYsIDIyMiwgMjA3LCAyNTQsIDI1MSwgMjE0LCAyMzksIDE0MCwgMjIyLCA3NSwgMjM3LCA3MywgMjA3LCAyNTQsIAorICAgIDI1MSwgMjE0LCAyMjQsIDE1NywgMjIyLCA3NSwgMjM3LCA3MywgMjA3LCAyNTQsIDI1MSwgMjE0LCAyMjIsIDc1LCAyMTEsIAorICAgIDE5NiwgMjA3LCAyNTQsIDI1MSwgMjE0LCAyMjIsIDc1LCAyMDYsIDc1LCAyMDcsIDI1NCwgMzEsIDI1MSwgMjQyLCAyNTAsIAorICAgIDE0MSwgMTEyLCAyMTQsIDg3LCAzMSwgMjUxLCAyNDIsIDI1MCwgMTQxLCAxMTIsIDIzNCwgMjEzLCAzMSwgMjUxLCAyNDIsIAorICAgIDI1MCwgMTQxLCAxMTIsIDIzOSwgMTYyLCAzMSwgMjUxLCAyNDIsIDI1MCwgMTQxLCAxNjQsIDMxLCAyNTEsIDI0MiwgMjUwLCAKKyAgICAxNDEsIDIzNywgMTA0LCAzMSwgMjUxLCAyNDIsIDI1MCwgMTQxLCAyMzcsIDYxLCAyMzMsIDgyLCAzMSwgMjUxLCAyNDIsIAorICAgIDI1MCwgMTQxLCAyMzcsIDYxLCAyMDYsIDUwLCAzMSwgMjUxLCAyNDIsIDI1MCwgMTQxLCAyMzcsIDEwNSwgMjA2LCA1MCwgCisgICAgMzEsIDI1MSwgMjQyLCAyNTAsIDE0MSwgMjM3LCA2MSwgMjA2LCAyNTEsIDMxLCAyNTEsIDI0MiwgMjUwLCAxNDEsIDIwNiwgCisgICAgMTY3LCAyMDYsIDI1MSwgMzEsIDI1MSwgMjQyLCAyNTAsIDE0MSwgMjM3LCAxMDUsIDIwNiwgMjUxLCAzMSwgMjUxLCAyNDIsIAorICAgIDI1MCwgMTQxLCAxMTIsIDIzMywgODMsIDIwNiwgMjUxLCAzMSwgMjUxLCAyNDIsIDI1MCwgMTQxLCAyMzcsIDYxLCAyMzMsIAorICAgIDgzLCAyMDYsIDI1MSwgMzEsIDI1MSwgMjQyLCAyNTAsIDE0MSwgMTEyLCAyMDYsIDUxLCAyMDYsIDI1MSwgMzEsIDI1MSwgCisgICAgMjQyLCAyNTAsIDE0MSwgMjM3LCA2MSwgMjA2LCA1MSwgMjA2LCAyNTEsIDMxLCAyNTEsIDI0MiwgMjUwLCAxNDEsIDIzNywgCisgICAgNjEsIDIwOCwgMTAzLCAzMSwgMjUxLCAyNDIsIDI1MCwgMTQxLCAyMDYsIDE2NywgMjA4LCAxMDMsIDMxLCAyNTEsIDI0MiwgCisgICAgMjUwLCAxNDEsIDIzNywgMTA1LCAyMDgsIDEwMywgMzEsIDI1MSwgMjQyLCAyNTAsIDE0MSwgMTEyLCAyMzMsIDgzLCAyMDgsIAorICAgIDEwMywgMzEsIDI1MSwgMjQyLCAyNTAsIDE0MSwgMjM3LCA2MSwgMjMzLCA4MywgMjA4LCAxMDMsIDMxLCAyNTEsIDI0MiwgCisgICAgMjUwLCAxNDEsIDExMiwgMjA2LCA1MSwgMjA4LCAxMDMsIDMxLCAyNTEsIDI0MiwgMjUwLCAxNDEsIDIwNiwgMTY3LCAyMDYsIAorICAgIDUxLCAyMDgsIDEwMywgMzEsIDI1MSwgMjQyLCAyNTAsIDE0MSwgMjM3LCAxMDUsIDIwNiwgNTEsIDIwOCwgMTAzLCAzMSwgCisgICAgMjUxLCAyNDIsIDI1MCwgMTQxLCAyMDYsIDE2NywgMjIxLCAxMzksIDMxLCAyNTEsIDI0MiwgMjM0LCAxMDEsIDExMiwgMjE1LCAKKyAgICAxMjMsIDMxLCAyNTEsIDI0MiwgMjA2LCA5MCwgMTAyLCAzMSwgMjUxLCAyNDIsIDIzNCwgOTcsIDEwMiwgMzEsIDI1MSwgCisgICAgMjQyLCAyMzgsIDEyOCwgMTA1LCAzMSwgMjUxLCAyNDIsIDIwNiwgOTAsIDEwNSwgMzEsIDI1MSwgMjQyLCAyNDIsIDE1OCwgCisgICAgMTIwLCAyMzksIDE2MSwgMzEsIDI1MSwgMjQyLCAyMzgsIDEyOCwgMTIwLCAyMzksIDE2MSwgMzEsIDI1MSwgMjQyLCAyMDUsIAorICAgIDc0LCAxNjQsIDMxLCAyNTEsIDI0MiwgMjA1LCA3NCwgMjA2LCAxNjYsIDMxLCAyNTEsIDI0MiwgMjA1LCA3NCwgMjA2LCAKKyAgICAxNjcsIDI1MSwgMTA5LCAxOSwgMzEsIDI1MSwgMjQyLCAyMzQsIDk3LCAyMDYsIDE2NiwgMzEsIDI1MSwgMjQyLCAyMjIsIAorICAgIDIyLCAyMDYsIDE2NiwgMzEsIDI1MSwgMjQyLCAyMDYsIDkwLCAyMDYsIDE2NiwgMzEsIDI1MSwgMjQyLCAyMDYsIDkwLCAKKyAgICAyMDYsIDY3LCAzMSwgMjUxLCAyNDIsIDIwNSwgNzQsIDIzNywgMTA0LCAzMSwgMjUxLCAyNDIsIDIwNSwgNzQsIDIzNywgCisgICAgMTA1LCAyNTEsIDEwOSwgMTksIDMxLCAyNTEsIDI0MiwgMjM0LCA5NywgMjM3LCAxMDQsIDMxLCAyNTEsIDI0MiwgMjA2LCAKKyAgICA5MCwgMjM3LCAxMDQsIDMxLCAyNTEsIDI0MiwgMjA2LCA5MCwgMTEyLCAyMzMsIDgyLCAzMSwgMjUxLCAyNDIsIDIwNiwgOTAsIAorICAgIDEyNiwgMjMzLCA4MiwgMzEsIDI1MSwgMjQyLCAyMzgsIDEyOCwgMjM3LCA2MSwgMjMzLCA4MiwgMzEsIDI1MSwgMjQyLCAKKyAgICAyMDUsIDc0LCAyMzcsIDYxLCAyMzMsIDgyLCAzMSwgMjUxLCAyNDIsIDIwNiwgOTAsIDIzNywgNjEsIDIzMywgODIsIDMxLCAKKyAgICAyNTEsIDI0MiwgMjQ3LCAxMTUsIDIzNywgNjEsIDIzMywgODIsIDMxLCAyNTEsIDI0MiwgMjIwLCAxMTAsIDIzNywgNjEsIAorICAgIDIzMywgODIsIDMxLCAyNTEsIDI0MiwgMjA2LCA5MCwgMTEyLCAyMDYsIDUwLCAzMSwgMjUxLCAyNDIsIDIwNiwgOTAsIDIzNywgCisgICAgNjEsIDIwNiwgNTAsIDMxLCAyNTEsIDI0MiwgMjQxLCAxMzksIDIzNywgNjEsIDIyMSwgMTM5LCAzMSwgMjUxLCAyNDIsIAorICAgIDIwOCwgNjQsIDIzNywgMTA1LCAyMjEsIDEzOSwgMzEsIDExMiwgMTY3LCA1NCwgMzEsIDExMiwgMTY3LCAyLCAyNTEsIDEwOSwgCisgICAgMTksIDMxLCAxMjAsIDIwNiwgNzIsIDU0LCAzMSwgMTI2LCAyMTQsIDg2LCA1NCwgMzEsIDIwMCwgNDksIDU0LCAzMSwgMjA2LCAKKyAgICAyNTIsIDU0LCAzMSwgMjM5LCAxNjMsIDU0LCAzMSwgMjE3LCAxMzYsIDU0LCAzMSwgMTIwLCAyMTcsIDEzNSwgNTQsIDMxLCAKKyAgICAxMjYsIDIxNywgMTM1LCA1NCwgMzEsIDIzNiwgMjI5LCAyMTcsIDEzNSwgNTQsIDMxLCAyMzcsIDYxLCAyMTcsIDEzNSwgNTQsIAorICAgIDMxLCAyMjIsIDE2LCA1NCwgMzEsIDIyNSwgMjAxLCAyNDksIDY1LCA1NCwgMzEsIDIyNCwgMTUwLCA1NCwgMzEsIDIxNywgMCwgCisgICAgNTQsIDMxLCAyMDAsIDE3MiwgNTQsIDMxLCAyNTAsIDE5NSwgNTQsIDMxLCAyNTAsIDIxMCwgNTQsIDMxLCAyMzUsIDgzLCAKKyAgICA1NCwgMzEsIDIwNSwgMzUsIDI0OSwgNjUsIDU0LCAzMSwgMTk5LCA4MiwgNTQsIDMxLCAxMTIsIDIxNCwgODgsIDU0LCAzMSwgCisgICAgMjA5LCAxMzEsIDU0LCAzMSwgMjI4LCA5OCwgNTQsIDIxOCwgMjM1LCA1NCwgMjEyLCAyNDAsIDIxMCwgMTI2LCA1NCwgMjEyLCAKKyAgICAyNDAsIDIwMywgMjU0LCA1NCwgMjEyLCAyNDAsIDIxMCwgMTU5LCA1NCwgMjEyLCAyNDAsIDIxMCwgMTI0LCA1NCwgMjEyLCAKKyAgICAyNDAsIDI0MSwgMjYsIDIxMCwgMTI0LCA1NCwgMjEyLCAyNDAsIDIwOSwgMTU0LCA1NCwgMjEyLCAyNDAsIDI0MSwgMTM1LCAKKyAgICA1NCwgMjEyLCAyNDAsIDIxNCwgNzEsIDU0LCAyMTIsIDI0MCwgMjEwLCAxNDMsIDU0LCAyMTIsIDI0MCwgMjM5LCAxMTcsIAorICAgIDU0LCAyMTIsIDI0MCwgMjUwLCAxODksIDU0LCAyMTIsIDI0MCwgMjQ3LCA1MSwgNTQsIDMxLCAxNiwgMjA2LCAyMjIsIDIxMywgCisgICAgOTAsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIxNiwgNjMsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIxNSwgMTE1LCAyMzQsIAorICAgIDEzNiwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjA2LCAyMjUsIDIzNCwgMTM2LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyNDcsIAorICAgIDEzOCwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjQ2LCAyMjcsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIwMCwgMjUwLCAyMTUsIAorICAgIDI0MCwgMjQxLCAzLCAyLCAyMzQsIDEwNywgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjM2LCAzOCwgMjE1LCAyNDAsIDI0MSwgMywgCisgICAgMiwgMjA2LCAxMywgMjE1LCAyNDAsIDI0MSwgMywgMiwgNDgsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDI0OCwgODUsIDIxNSwgCisgICAgMjQwLCAyNDEsIDMsIDIsIDIxMCwgMzAsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDI0NiwgOTcsIDIxNSwgMjQwLCAyNDEsIDMsIAorICAgIDIsIDIyMiwgMTc5LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMjIsIDEyNCwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjExLCAKKyAgICAyMzksIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIyNCwgMjA1LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyNDgsIDEwNiwgMjE1LCAKKyAgICAyNDAsIDI0MSwgMywgMiwgMjQ3LCAxMjIsIDIxNSwgMTI4LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyNDAsIDE5NSwgMjE1LCAKKyAgICAyNDAsIDI0MSwgMywgMiwgMjQ2LCA3NiwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjA5LCA2MywgMjE1LCAyNDAsIDI0MSwgMywgCisgICAgMiwgMjQ2LCA3NywgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjQ4LCAyNDksIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIxMCwgMTcsIAorICAgIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIzMywgMTI0LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMzQsIDcyLCAyMTUsIDI0MCwgCisgICAgMjQxLCAzLCAyLCAyNDgsIDE3LCAyMjUsIDE2LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyNDcsIDExMSwgMjE1LCAyNDAsIAorICAgIDI0MSwgMywgMiwgMjEzLCAyMTYsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIzOSwgMjQsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIAorICAgIDIzOSwgMTY4LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMDQsIDE5OSwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjQ4LCAyNTIsIAorICAgIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIxNSwgMTI5LCAyMDUsIDEwOCwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjAyLCAyMTUsIAorICAgIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIxNiwgMTMxLCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMTIsIDIzMSwgMjE1LCAyNDAsIAorICAgIDI0MSwgMywgMiwgMjI0LCAxODksIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIxNiwgMjM2LCAyNDksIDEyOSwgMjE1LCAyNDAsIAorICAgIDI0MSwgMywgMiwgMjM3LCAyMCwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjM1LCA3NSwgMjE1LCAyNDAsIDI0MSwgMywgMiwgCisgICAgMjA4LCA2NSwgMjE1LCAyNDAsIDI0MSwgMywgMiwgNCwgMjUwLCAxMTMsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIwMSwgNzQsIAorICAgIDI0OSwgODQsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDM4LCAyMTcsIDEzOCwgOTcsIDIyNCwgMCwgMSwgNjIsIDIyNCwgMCwgMSwgCisgICAgNzIsIDIyNCwgMCwgMSwgMjUwLCAxMDMsIDIyNCwgMCwgMSwgMjQ4LCAyMDEsIDIyNCwgMCwgMSwgMjM2LCAxNTYsIDIyNCwgCisgICAgMCwgMSwgMjQyLCAxNTMsIDIyNCwgMCwgMSwgNzAsIDIyNCwgMCwgMSwgMjAxLCAxNDcsIDIyNCwgMCwgMSwgMTk5LCAxNTcsIAorICAgIDIyNCwgMCwgMSwgMjA2LCAxMjQsIDIyNCwgMCwgMSwgMjI3LCAyNTEsIDIyNCwgMCwgMSwgMjI3LCAxMTgsIDIyNCwgMCwgMSwgCisgICAgMjE0LCAxNjcsIDIyNCwgMCwgMSwgMTU2LCAyMjQsIDAsIDEsIDIyMywgMjQzLCAyMjQsIDAsIDEsIDIyMCwgMjE0LCAyMjQsIAorICAgIDAsIDEsIDIyMSwgMTQxLCAyMjQsIDAsIDEsIDIxOSwgMjIsIDIyNCwgMCwgMSwgNjYsIDIyNCwgMCwgMSwgMjE2LCAyMjYsIAorICAgIDIyNCwgMCwgMSwgMjI2LCAxMTAsIDIyNCwgMCwgMSwgMTQ2LCAyMjQsIDAsIDEsIDIxMiwgMTIyLCAyMjQsIDAsIDEsIDIwNywgCisgICAgODMsIDIyNCwgMCwgMSwgMjA1LCAwLCAyMjQsIDAsIDEsIDI1MSwgODUsIDIyNCwgMCwgMSwgMjM4LCAxNzksIDIyNCwgMCwgCisgICAgMSwgMjM0LCAyNDcsIDIyNCwgMCwgMSwgMjAwLCAxOTUsIDI0NywgMTI4LCAxLCA2MiwgMjQ3LCAxMjgsIDEsIDIxNiwgMjEyLCAKKyAgICAyNDcsIDEyOCwgMSwgMjQyLCAxNTMsIDI0NywgMTI4LCAxLCAxNTYsIDI0NywgMTI4LCAxLCAyMDMsIDE4MCwgMjQ3LCAxMjgsIAorICAgIDEsIDE0NiwgMjQ3LCAxMjgsIDEsIDIyNSwgNDQsIDI0NywgMTI4LCAxLCAyNTQsIDE0NywgMjQ3LCAxMjgsIDEsIDIxNCwgCisgICAgMTY3LCAyNDcsIDEyOCwgMSwgMjUwLCAxMDMsIDI0NywgMTI4LCAxLCAyMjMsIDI0MywgMjQ3LCAxMjgsIDEsIDc0LCAyNDcsIAorICAgIDEyOCwgMSwgMjQyLCA2MCwgMjQ3LCAxMjgsIDEsIDIwNywgODMsIDI0NywgMTI4LCAxLCAyMTAsIDExNiwgMjQ3LCAxMjgsIAorICAgIDEsIDIxMCwgMTE1LCAyNDcsIDEyOCwgMSwgMjEyLCAxMjIsIDI0NywgMTI4LCAxLCAyNDcsIDIyMiwgMjQ3LCAxMjgsIDEsIAorICAgIDY2LCAyNDcsIDEyOCwgMSwgMjE5LCAyMiwgMjQ3LCAxMjgsIDEsIDIwMCwgMTk1LCAyNDcsIDEyOCwgMSwgMjIwLCAyMTQsIAorICAgIDI0NywgMTI4LCAxLCAyMDQsIDI1NSwgMjQ3LCAxMjgsIDEsIDIxNiwgMjI2LCAyNDcsIDEyOCwgMSwgMjA4LCAxODIsIDI0NywgCisgICAgMTI4LCAxLCA3MCwgMjQ3LCAxMjgsIDEsIDcyLCAyNDcsIDEyOCwgMSwgMjAzLCAxNzcsIDI0NywgMTI4LCAxLCAyMjcsIAorICAgIDExOCwgMjQ3LCAxMjgsIDEsIDIyNywgMTA5LCAyNDcsIDEyOCwgMSwgMjIwLCA3NywgMjQ3LCAxMjgsIDEsIDIwMywgMTgyLCAKKyAgICAyNDcsIDEyOCwgMSwgMjM2LCAxNTYsIDI0NywgMTI4LCAxLCAyMzYsIDkxLCAyNDcsIDEyOCwgMSwgMjA4LCAxMjMsIDI0NywgCisgICAgMTI4LCAxLCAyMDgsIDEyMiwgMjQ3LCAxMjgsIDEsIDIxOSwgMjU1LCAyNDcsIDEyOCwgMSwgMjI4LCAxNTEsIDI0NywgMTI4LCAKKyAgICAxLCAyNDcsIDIyMSwgMjQ3LCAxMjgsIDEsIDIwNSwgMCwgMjQ3LCAxMjgsIDEsIDIwMywgMTc5LCAyNDcsIDEyOCwgMSwgCisgICAgMjEyLCAyMTYsIDI0NywgMTI4LCAxLCAyMjIsIDExNSwgMjQ3LCAxMjgsIDEsIDIyMiwgMTE0LCAyNDcsIDEyOCwgMSwgMjIyLCAKKyAgICAxMTMsIDI0NywgMTI4LCAxLCAyMjIsIDExMiwgMjQ3LCAxMjgsIDEsIDIyNSwgNDMsIDI0NywgMTI4LCAxLCAyMzksIDI4LCAKKyAgICAyNDcsIDEyOCwgMSwgMjAzLCAxNzgsIDg1LCAyMzgsIDEzMSwgMjA2LCA0OSwgODEsIDg1LCAyMzgsIDEzMSwgMTcsIDEwMiwgCisgICAgODUsIDIzOCwgMTMxLCAxNywgMTA1LCA4NSwgMjM4LCAxMzEsIDE3LCAxNDcsIDg1LCAyMzgsIDEzMSwgMTcsIDE0OSwgODUsIAorICAgIDIzOCwgMTMxLCAxNywgMTY0LCA4NSwgMjM4LCAxMzEsIDE3LCAxODcsIDg1LCAyMzgsIDEzMSwgMTcsIDIxMCwgMTM1LCA4NSwgCisgICAgMjM4LCAxMzEsIDE3LCAxOTIsIDg1LCAyMzgsIDEzMSwgMTcsIDIxOSwgMTEzLCA4NSwgMjM4LCAxMzEsIDQxLCAyMDYsIAorICAgIDE2NiwgODUsIDIzOCwgMTMxLCA0MSwgMjA0LCAxNTksIDg1LCAyMzgsIDEzMSwgNDEsIDIwNiwgNjcsIDg1LCAyMzgsIDEzMSwgCisgICAgNDEsIDIzNiwgMjM1LCA4NSwgMjM4LCAxMzEsIDQxLCAyMzcsIDEwNCwgODUsIDIzOCwgMTMxLCA0MSwgMjA5LCA5MiwgODUsIAorICAgIDIzOCwgMTMxLCA0MSwgMjEwLCAxMjksIDg1LCAyMzgsIDEzMSwgNDEsIDIzOCwgMjIyLCA4NSwgMjM4LCAxMzEsIDQxLCAKKyAgICAyMTksIDEwOCwgODUsIDIzOCwgMTMxLCA0MSwgMTEyLCAyMzMsIDgyLCA4NSwgMjM4LCAxMzEsIDQxLCAxMjAsIDIzMywgODIsIAorICAgIDg1LCAyMzgsIDEzMSwgNDEsIDEyNiwgMjMzLCA4MiwgODUsIDIzOCwgMTMxLCA0MSwgMjM2LCAyMjksIDIzMywgODIsIDg1LCAKKyAgICAyMzgsIDEzMSwgNDEsIDIzNywgNjEsIDIzMywgODIsIDg1LCAyMzgsIDEzMSwgNDEsIDIwOSwgMTA2LCAyMzMsIDgyLCA4NSwgCisgICAgMjM4LCAxMzEsIDQxLCAyMTAsIDEzNiwgMjMzLCA4MiwgODUsIDIzOCwgMTMxLCA0MSwgMjM4LCAyMzIsIDIzMywgODIsIDg1LCAKKyAgICAyMzgsIDEzMSwgNDEsIDIxOSwgMTE0LCAyMzMsIDgyLCA0MCwgMzksIDEsIDYyLCA0MCwgMzksIDEsIDI0OSwgOCwgNDAsIAorICAgIDM5LCAxLCAyMjcsIDgsIDQwLCAzOSwgMSwgMjQxLCAxNzUsIDQwLCAzOSwgMSwgNzIsIDQwLCAzOSwgMSwgMjAzLCA1OSwgCisgICAgNDAsIDM5LCAxLCAxOTksIDg5LCA0MCwgMzksIDEsIDIzNCwgMTM5LCA0MCwgMzksIDEsIDIwNiwgMTA2LCA0MCwgMzksIDEsIAorICAgIDcwLCA0MCwgMzksIDEsIDE2MSwgNDAsIDM5LCAxLCAyMzgsIDIwOSwgNDAsIDM5LCAxLCAyMzgsIDE5MCwgNDAsIDM5LCAxLCAKKyAgICAyMzgsIDE3OSwgNDAsIDM5LCAxLCAyMzgsIDk0LCA0MCwgMzksIDEsIDc0LCA0MCwgMzksIDEsIDIxNiwgNzMsIDQwLCAzOSwgCisgICAgMSwgMjEwLCA2NSwgNDAsIDM5LCAxLCAyMjYsIDE1LCA0MCwgMzksIDEsIDIzOCwgMTE1LCA0MCwgMzksIDEsIDIzOCwgMTA0LCAKKyAgICA0MCwgMzksIDEsIDIwNiwgMjAxLCA0MCwgMzksIDEsIDY2LCA0MCwgMzksIDEsIDIzOCwgMjEyLCA0MCwgMzksIDEsIDIxNSwgCisgICAgMjMyLCA0MCwgMzksIDEsIDIyNiwgMTkyLCA0MCwgMzksIDEsIDIzOCwgMjQ4LCA0MCwgMzksIDEsIDIzOCwgMTA2LCA0MCwgCisgICAgMzksIDEsIDI0NywgOCwgNDAsIDM5LCAxLCAyMjgsIDE1MSwgNDAsIDM5LCAxLCAyMDMsIDE4MiwgNDAsIDM5LCAxLCAyMzgsIAorICAgIDg3LCA0MCwgMzksIDIxOCwgOTMsIDEwMiwgNDAsIDM5LCAyMTgsIDkzLCAxNjQsIDQwLCAzOSwgMjE4LCA5MywgMjA2LCAKKyAgICAxNjYsIDQwLCAzOSwgMjE4LCA5MywgMjM3LCAxMDQsIDIzNSwgOTMsIDEsIDI1MSwgMTc5LCAyMzUsIDkzLCAxLCAyNDksIAorICAgIDEwMSwgMjM1LCA5MywgMSwgMjM1LCAxNTgsIDIzNSwgOTMsIDEsIDI0MiwgMzksIDIzNSwgOTMsIDEsIDI1MSwgMTc1LCAKKyAgICAyMzUsIDkzLCAxLCAyMTQsIDE1MCwgMjM1LCA5MywgMSwgMjI4LCA3LCAyMzUsIDkzLCAxLCAyMzQsIDIyNiwgMjM1LCA5MywgCisgICAgMSwgMjA2LCA2MywgMjM1LCA5MywgMSwgMjM4LCAyMjAsIDIzNSwgOTMsIDEsIDIyNSwgMjM4LCAyMzUsIDkzLCAxLCAyMjUsIAorICAgIDE1MywgMjM1LCA5MywgMSwgMjIyLCAxNzIsIDIzNSwgOTMsIDEsIDIyMCwgMTEyLCAyMzUsIDkzLCAxLCAyMjcsIDIyMCwgCisgICAgMjM1LCA5MywgMSwgMjAzLCAyMDAsIDIzNSwgOTMsIDEsIDIxNiwgMTg3LCAyMzUsIDkzLCAxLCAyMTksIDEwOCwgMjM1LCAKKyAgICA5MywgMSwgMjEzLCAyMjgsIDIzNSwgOTMsIDEsIDIxMSwgMjQyLCAyMzUsIDkzLCAxLCAyMDYsIDE4MCwgMjM1LCA5MywgMSwgCisgICAgMjAxLCAxMCwgMjM1LCA5MywgMSwgMjM3LCAxNzUsIDIzNSwgOTMsIDEsIDIyOCwgMTU1LCAyMzUsIDkzLCAxLCAyMzMsIDY2LCAKKyAgICAyMzUsIDkzLCAxLCAyMTcsIDEwLCAyMzUsIDkzLCAxLCAyMTksIDExNCwgMjMzLCA4MiwgNDAsIDIxNiwgMTgsIDEsIDI1MSwgCisgICAgODUsIDQwLCAyMTYsIDE4LCAxLCAyNDgsIDMsIDQwLCAyMTYsIDE4LCAxLCAyMzYsIDczLCA0MCwgMjE2LCAxOCwgMSwgMjQwLCAKKyAgICAxOTksIDQwLCAyMTYsIDE4LCAxLCA3MiwgNDAsIDIxNiwgMTgsIDEsIDE5OSwgNTksIDQwLCAyMTYsIDE4LCAxLCAyMzksIAorICAgIDg1LCA0MCwgMjE2LCAxOCwgMSwgMTk5LCA5NiwgNDAsIDIxNiwgMTgsIDEsIDIzOSwgODMsIDQwLCAyMTYsIDE4LCAxLCA3MCwgCisgICAgNDAsIDIxNiwgMTgsIDEsIDIyNiwgNzcsIDQwLCAyMTYsIDE4LCAxLCAyMjUsIDEyLCA0MCwgMjE2LCAxOCwgMSwgMjIyLCAKKyAgICAzOCwgNDAsIDIxNiwgMTgsIDEsIDIyMCwgMjIsIDQwLCAyMTYsIDE4LCAxLCAyMDIsIDE3OCwgNDAsIDIxNiwgMTgsIDEsIAorICAgIDIxNiwgNjAsIDQwLCAyMTYsIDE4LCAxLCAyMTMsIDE1MywgNDAsIDIxNiwgMTgsIDEsIDIwOSwgMTYxLCA0MCwgMjE2LCAxOCwgCisgICAgMSwgMjA3LCA4LCA0MCwgMjE2LCAxOCwgMSwgNjYsIDQwLCAyMTYsIDE4LCAxLCAyNDYsIDI0NSwgNDAsIDIxNiwgMTgsIDEsIAorICAgIDIxMCwgMSwgNDAsIDIxNiwgMTgsIDEsIDIxMCwgNjcsIDQwLCAyMTYsIDE4LCAxLCAxOTksIDIxMywgNDAsIDIxNiwgMTgsIAorICAgIDEsIDIwMCwgMjksIDQwLCAyMTYsIDE4LCAxLCA3NCwgNDAsIDIxNiwgMTgsIDEsIDIxNywgNjMsIDQwLCAyMTYsIDE4LCAxLCAKKyAgICAyMzgsIDI0OCwgNDAsIDIxNiwgMTgsIDEsIDE0NCwgNDAsIDIxNiwgMTgsIDEsIDIwNSwgMTAsIDQwLCAyMTYsIDE4LCAxLCAKKyAgICAyMDMsIDQ3LCA0MCwgMjE2LCAxOCwgMSwgMjAwLCAzMywgNDAsIDIxNiwgMTgsIDEsIDIwMCwgMzEsIDQwLCAyMTYsIDE4LCAKKyAgICAxLCAyMDAsIDY1LCA0MCwgMjE2LCAxOCwgMSwgMjI4LCAxNzgsIDQwLCAyMTYsIDE4LCAxLCAxOTksIDIxMSwgNDAsIDIxNiwgCisgICAgMTgsIDEsIDE4MywgNDAsIDIxNiwgMTgsIDEsIDIzMiwgMjQwLCAzOCwgNDAsIDIxNiwgMTgsIDEsIDI1MSwgODUsIDM4LCAKKyAgICA0MCwgMjE2LCAxOCwgMSwgMjQwLCAxOTksIDM4LCA0MCwgMjE2LCAxOCwgMSwgMTk5LCA5NiwgMzgsIDQwLCAyMTYsIDE4LCAKKyAgICAxLCAyMjAsIDIyLCAzOCwgNDAsIDIxNiwgMTgsIDEsIDIwOSwgMTYxLCAyMDQsIDI2LCAxLCAyNTEsIDExNiwgMjA0LCAyNiwgCisgICAgMSwgMjQ4LCAyMDgsIDIwNCwgMjYsIDEsIDIzNiwgNjEsIDIwNCwgMjYsIDEsIDIyNiwgMjA3LCAyMDQsIDI2LCAxLCAyNDEsIAorICAgIDEzNiwgMjA0LCAyNiwgMSwgMjMzLCAyMDcsIDIwNCwgMjYsIDEsIDIwMSwgMCwgMjA0LCAyNiwgMSwgMTk5LCA4MCwgMjA0LCAKKyAgICAyNiwgMSwgMjMzLCAxMTYsIDIwNCwgMjYsIDEsIDIwNiwgMTQ2LCAyMDQsIDI2LCAxLCAxOTksIDIzNCwgMjA0LCAyNiwgMSwgCisgICAgMjI3LCA4NiwgMjA0LCAyNiwgMSwgMjEwLCAyMSwgMjA0LCAyNiwgMSwgMjI1LCA4NywgMjA0LCAyNiwgMSwgMjIyLCA0NywgCisgICAgMjA0LCAyNiwgMSwgMjQxLCA5NiwgMjA0LCAyNiwgMSwgMjE4LCA4OSwgMjA0LCAyNiwgMSwgMTk5LCAzLCAyMDQsIDI2LCAxLCAKKyAgICAyMTIsIDE4LCAyMDQsIDI2LCAxLCAyNTEsIDE3MSwgMjA0LCAyNiwgMSwgMjE0LCAyMjQsIDIwNCwgMjYsIDEsIDIxMiwgNTUsIAorICAgIDIwNCwgMjYsIDEsIDIxNCwgMTAyLCAyMDQsIDI2LCAxLCAyMTMsIDIwNywgMjA0LCAyNiwgMSwgMjA2LCAxMTAsIDIwNCwgCisgICAgMjYsIDEsIDIzNSwgMTk0LCAyMDQsIDI2LCAxLCAxMzgsIDIwNCwgMjYsIDEsIDcwLCAyMDQsIDI2LCAxLCA2NiwgMjA0LCAKKyAgICAyNiwgMSwgMjA4LCAxMzQsIDIwNCwgMjYsIDIwMCwgMjM4LCAyNDAsIDIzOSwgNDAsIDIxNiwgMTIsIDIsIDYyLCA0MCwgCisgICAgMjE2LCAxMiwgMiwgNzAsIDQwLCAyMTYsIDEyLCAyLCA2NiwgNDAsIDIxNiwgMTIsIDIsIDE2MSwgNDAsIDIxNiwgMTIsIDIsIAorICAgIDIyNiwgMTUsIDQwLCAyMTYsIDEyLCAyLCAyMzYsIDg5LCA0MCwgMjE2LCAxMiwgMiwgMjM1LCA1MCwgNDAsIDIxNiwgMTIsIAorICAgIDIsIDIwMCwgMTgxLCA0MCwgMjE2LCAxMiwgMiwgMjQ3LCAxOTAsIDQwLCAyMTYsIDEyLCAyLCAyMjcsIDI0OCwgNDAsIDIxNiwgCisgICAgMTIsIDIsIDIyNywgMjA3LCA0MCwgMjE2LCAxMiwgMiwgMjA3LCAzNiwgNDAsIDIxNiwgMTIsIDIsIDIwNCwgMjE1LCA0MCwgCisgICAgMjE2LCAxMiwgMiwgMjQyLCA1OCwgNDAsIDIxNiwgMTIsIDIsIDI0MSwgNzYsIDQwLCAyMTYsIDEyLCAyLCAyMzksIDEzNywgCisgICAgNDAsIDIxNiwgMTIsIDIsIDIwNiwgMTIyLCA0MCwgMjE2LCAxMiwgMiwgMTcyLCA0MCwgMjE2LCAxMiwgMiwgMjQ5LCAxMzYsIAorICAgIDQwLCAyMTYsIDEyLCAyLCAyMzcsIDE5NSwgNDAsIDIxNiwgMTIsIDIsIDE4OCwgNDAsIDIxNiwgMTIsIDIsIDIxOCwgMTMzLCAKKyAgICA0MCwgMjE2LCAxMiwgMiwgMTc4LCA0MCwgMjE2LCAxMiwgMiwgMjIxLCAyMTEsIDQwLCAyMTYsIDEyLCAyLCAyMjEsIDQxLCAKKyAgICA0MCwgMjE2LCAxMiwgMiwgMTgzLCA0MCwgMjE2LCAxMiwgMiwgMjAzLCA5MCwgNDAsIDIxNiwgMTIsIDIsIDIwMiwgMjM0LCAKKyAgICA0MCwgMjE2LCAxMiwgMiwgMjEzLCAyNTIsIDQwLCAyMTYsIDEyLCAyLCAyMTIsIDE3NSwgNDAsIDIxNiwgMTIsIDIsIDE5NCwgCisgICAgNDAsIDIxNiwgMTIsIDIsIDIxMiwgNjQsIDQwLCAyMTYsIDEyLCAyLCAxOTksIDExNCwgNDAsIDIxNiwgMTIsIDIsIDIxMCwgCisgICAgMTE0LCA0MCwgMjE2LCAxMiwgMiwgMjA4LCAxNzksIDQwLCAyMTYsIDEyLCAyLCAxNDQsIDQwLCAyMTYsIDEyLCAyLCAyNTAsIAorICAgIDEzMywgNDAsIDIxNiwgMTIsIDIsIDI1MCwgMTMyLCA0MCwgMjE2LCAxMiwgMiwgMjUwLCAxMzEsIDQwLCAyMTYsIDEyLCAyLCAKKyAgICAyMDAsIDE1MiwgNDAsIDIxNiwgMTIsIDIsIDI0MiwgMzUsIDQwLCAyMTYsIDEyLCAyLCAyNDIsIDM0LCA0MCwgMjE2LCAxMiwgCisgICAgMiwgMjQ5LCAxMTEsIDQwLCAyMTYsIDEyLCAyLCAyNDcsIDI0MiwgNDAsIDIxNiwgMTIsIDIwMCwgMjM4LCAyNDAsIDIzOSwgCisgICAgNDAsIDIxNiwgMTIsIDQxLCAxMDIsIDQwLCAyMTYsIDEyLCA0MSwgMTA1LCA0MCwgMjE2LCAxMiwgNDEsIDIwNiwgMTY2LCAKKyAgICA0MCwgMjE2LCAxMiwgNDEsIDIwNCwgMTU5LCA0MCwgMjE2LCAxMiwgNDEsIDIzMywgODIsIDI0MSwgMTE2LCA2LCAxLCAxNjgsIAorICAgIDcwLCAyNDEsIDExNiwgNiwgMSwgMTY4LCA3MiwgMjQxLCAxMTYsIDYsIDEsIDE2OCwgNjIsIDI0MSwgMTE2LCA2LCAxLCAKKyAgICAxNjgsIDI1MSwgMTg1LCAyNDEsIDExNiwgNiwgMSwgMTY4LCA3NCwgMjQxLCAxMTYsIDYsIDEsIDE2OCwgMjE3LCA2MywgCisgICAgMjQxLCAxMTYsIDYsIDEsIDIwOSwgMjUwLCA3MCwgMjQxLCAxMTYsIDYsIDEsIDIwOSwgMjUwLCA3MiwgMjQxLCAxMTYsIDYsIAorICAgIDEsIDIwOSwgMjUwLCA2MiwgMjQxLCAxMTYsIDYsIDEsIDIwOSwgMjUwLCAyNTEsIDE4NSwgMjQxLCAxMTYsIDYsIDEsIDIwOSwgCisgICAgMjUwLCA3NCwgMjQxLCAxMTYsIDYsIDEsIDIwOSwgMjUwLCAyMTcsIDYzLCAyNDEsIDExNiwgNiwgMSwgMjUwLCAxMTIsIAorICAgIDI0MSwgMTE2LCA2LCAxLCAyMTYsIDIzOCwgMjQxLCAxMTYsIDYsIDEsIDIwMCwgMjE2LCAyNDEsIDExNiwgNiwgMSwgMjAwLCAKKyAgICA0OCwgMjQxLCAxMTYsIDYsIDEsIDIzNCwgMjQ3LCAyNDEsIDExNiwgNiwgMSwgMjE2LCA2MSwgMjQxLCAxMTYsIDYsIDEsIAorICAgIDI0OCwgMjUyLCAyNDEsIDExNiwgNiwgMSwgMjA2LCAxOTAsIDI0MSwgMTE2LCA2LCAxLCAyNDEsIDE2MSwgMjQxLCAxMTYsIAorICAgIDYsIDEsIDI0NywgNCwgMjQxLCAxMTYsIDYsIDEsIDIyNywgMjI1LCAyNDEsIDExNiwgNiwgMSwgMjI3LCAxNSwgMjQxLCAKKyAgICAxMTYsIDYsIDEsIDIzNiwgMzYsIDI0MSwgMTE2LCA2LCAxLCAyMzgsIDI0OCwgMjQxLCAxMTYsIDYsIDEsIDIwMywgNTQsIAorICAgIDI0MSwgMTE2LCA2LCAxLCAyMzgsIDc0LCAyNDEsIDExNiwgNiwgMSwgMjA2LCAxMDQsIDI0MSwgMTE2LCA2LCAxLCAyMzgsIAorICAgIDEwNCwgMjQxLCAxMTYsIDYsIDEsIDE5OSwgODcsIDI0MSwgMTE2LCA2LCAxLCAyMzgsIDk0LCAyNDEsIDExNiwgNiwgMSwgCisgICAgMTk5LCA2NywgMjQxLCAxMTYsIDYsIDEsIDIzOCwgMTE1LCAyNDEsIDExNiwgNiwgMSwgMjM4LCAyMDksIDI0MSwgMTE2LCA2LCAKKyAgICAxLCAyMzgsIDE5MCwgMjQxLCAxMTYsIDYsIDEsIDIzOCwgMTc5LCAyNDEsIDExNiwgNiwgMSwgMjM4LCAxNjUsIDI0MSwgCisgICAgMTE2LCA2LCAxLCAyMTcsIDEwNSwgMjQxLCAxMTYsIDYsIDEsIDIzOCwgNTEsIDI0MSwgMTE2LCA0LCAxLCAxNjgsIDcwLCAKKyAgICAyNDEsIDExNiwgNCwgMSwgMTY4LCA3MiwgMjQxLCAxMTYsIDQsIDEsIDE2OCwgNjIsIDI0MSwgMTE2LCA0LCAxLCAxNjgsIAorICAgIDI1MSwgMTg1LCAyNDEsIDExNiwgNCwgMSwgMTY4LCA3NCwgMjQxLCAxMTYsIDQsIDEsIDE2OCwgMjE3LCA2MywgMjQxLCAKKyAgICAxMTYsIDQsIDEsIDIwOSwgMjUwLCA3MCwgMjQxLCAxMTYsIDQsIDEsIDIwOSwgMjUwLCA3MiwgMjQxLCAxMTYsIDQsIDEsIAorICAgIDIwOSwgMjUwLCA2MiwgMjQxLCAxMTYsIDQsIDEsIDIwOSwgMjUwLCAyNTEsIDE4NSwgMjQxLCAxMTYsIDQsIDEsIDIwOSwgCisgICAgMjUwLCA3NCwgMjQxLCAxMTYsIDQsIDEsIDIwOSwgMjUwLCAyMTcsIDYzLCAyNDEsIDExNiwgNCwgMSwgMjUwLCAxMTIsIAorICAgIDI0MSwgMTE2LCA0LCAxLCAyMTYsIDIzOCwgMjQxLCAxMTYsIDQsIDEsIDIwMCwgMjE2LCAyNDEsIDExNiwgNCwgMSwgMjAwLCAKKyAgICA0OCwgMjQxLCAxMTYsIDQsIDEsIDIzNCwgMjQ3LCAyNDEsIDExNiwgNCwgMSwgMjE2LCA2MSwgMjQxLCAxMTYsIDQsIDEsIAorICAgIDI0OCwgMjUyLCAyNDEsIDExNiwgNCwgMSwgMjA2LCAxOTAsIDI0MSwgMTE2LCA0LCAxLCAyNDEsIDE2MSwgMjQxLCAxMTYsIAorICAgIDQsIDEsIDI0NywgNCwgMjQxLCAxMTYsIDQsIDEsIDIyNywgMjI1LCAyNDEsIDExNiwgNCwgMSwgMjI3LCAxNSwgMjQxLCAKKyAgICAxMTYsIDQsIDEsIDIzNiwgMzYsIDI0MSwgMTE2LCA0LCAxLCAyMzgsIDI0OCwgMjQxLCAxMTYsIDQsIDEsIDIwMywgNTQsIAorICAgIDI0MSwgMTE2LCA0LCAxLCAyMzgsIDc0LCAyNDEsIDExNiwgNCwgMSwgMjA2LCAxMDQsIDI0MSwgMTE2LCA0LCAxLCAyMzgsIAorICAgIDEwNCwgMjQxLCAxMTYsIDQsIDEsIDE5OSwgODcsIDI0MSwgMTE2LCA0LCAxLCAyMzgsIDk0LCAyNDEsIDExNiwgNCwgMSwgCisgICAgMTk5LCA2NywgMjQxLCAxMTYsIDQsIDEsIDIzOCwgMTE1LCAyNDEsIDExNiwgNCwgMSwgMjM4LCAyMDksIDI0MSwgMTE2LCA0LCAKKyAgICAxLCAyMzgsIDE5MCwgMjQxLCAxMTYsIDQsIDEsIDIzOCwgMTc5LCAyNDEsIDExNiwgNCwgMSwgMjM4LCAxNjUsIDI0MSwgCisgICAgMTE2LCA0LCAxLCAyMTcsIDEwNSwgMjQxLCAxMTYsIDQsIDEsIDIzOCwgNTEsIDIxMCwgNzIsIDEsIDIxNiwgNTgsIDIxMCwgCisgICAgNzIsIDEsIDIwNSwgMTQ0LCAyMTAsIDcyLCAxLCAyMjYsIDE1OSwgMjEwLCA3MiwgMSwgMjM3LCAxNDAsIDIxMCwgNzIsIDEsIAorICAgIDIwNiwgNzksIDIxMCwgNzIsIDEsIDIwOSwgMjksIDIxMCwgNzIsIDEsIDIwNywgMjA0LCAyMTAsIDcyLCAxLCAyNDYsIDE4NCwgCisgICAgMjEwLCA3MiwgMSwgMjAwLCA1MCwgMjEwLCA3MiwgMSwgMjMzLCA3OSwgMjEwLCA3MiwgMSwgMjQ4LCAxODcsIDIxMCwgNzIsIAorICAgIDEsIDI0MSwgMTc0LCAyMTAsIDcyLCAxLCAyMzYsIDc1LCAyMTAsIDcyLCAxLCAyMDIsIDE3MywgMjEwLCA3MiwgMSwgMjA2LCAKKyAgICA4NSwgMjEwLCA3MiwgMSwgMTk5LCAxMiwgMjEwLCA3MiwgMSwgMjIyLCA3NCwgMjEwLCA3MiwgMSwgMjI3LCAxNDUsIDIxMCwgCisgICAgNzIsIDEsIDIwMCwgMjU0LCAyMTAsIDcyLCAxLCAyMzQsIDIzNSwgMjEwLCA3MiwgMSwgMjI0LCA5NCwgMjEwLCA3MiwgMSwgCisgICAgMjIxLCAxNjUsIDIxMCwgNzIsIDEsIDIyOCwgMTU4LCAyMTAsIDcyLCAxLCAyMzgsIDI0NiwgMjEwLCA3MiwgMSwgMjUwLCAKKyAgICAxODEsIDIxMCwgNzIsIDEsIDI1MSwgMjI1LCAyMTAsIDcyLCAxLCAyMTcsIDc4LCAyMTAsIDcyLCAxLCAyMDAsIDI0MSwgCisgICAgMjEwLCA3MiwgMSwgMjE2LCAyNTQsIDIxMCwgNzIsIDEsIDI1MSwgMTg1LCAyMTAsIDcyLCAxLCAyMTIsIDI1NCwgMjEwLCAKKyAgICA3MiwgMSwgMjE4LCA4OSwgMjEwLCA3MiwgMSwgMjM5LCAxMCwgMjEwLCA3MiwgMSwgMjUxLCAxOTAsIDIxMCwgNzIsIDEsIAorICAgIDIzMiwgMjMxLCAyMTAsIDcyLCAxLCAyMDMsIDIyOCwgMjEwLCA3MiwgMSwgMjE3LCAxNDQsIDIxMCwgNzIsIDEsIDIxNywgCisgICAgNTUsIDIxMCwgNzIsIDEsIDIxNywgMTAzLCAyMTAsIDcyLCAxLCAyNTAsIDExNSwgMjEwLCA3MiwgMSwgMjUwLCAyMjksIAorICAgIDIxMCwgNzIsIDEsIDIxNywgMzMsIDIxMCwgNzIsIDEsIDI1MSwgMTY2LCAyMTAsIDcyLCAxLCAyMzgsIDEwOCwgMjEwLCA3MiwgCisgICAgMSwgMjUwLCAyMDcsIDIxMCwgNzIsIDEsIDIzOSwgMjEsIDIxMCwgNzIsIDEsIDIzMiwgMjM5LCAyMTAsIDcyLCAxLCAyMDAsIAorICAgIDE1LCAyMTcsIDEyLCAxLCAyNTEsIDE0MiwgMjE3LCAxMiwgMSwgMjQ5LCAxMzYsIDIxNywgMTIsIDEsIDIwNywgMzYsIDIxNywgCisgICAgMTIsIDEsIDIyNywgMjQ4LCAyMTcsIDEyLCAxLCAyMDAsIDE4MSwgMjE3LCAxMiwgMSwgMjI2LCAyMDcsIDIxNywgMTIsIDEsIAorICAgIDI0MSwgMTYwLCAyMTcsIDEyLCAxLCAyMTMsIDI1MiwgMjE3LCAxMiwgMSwgMjEyLCA2NCwgMjE3LCAxMiwgMSwgMjEwLCAyNywgCisgICAgMjE3LCAxMiwgMSwgMjQxLCAxMDAsIDIxNywgMTIsIDEsIDI0NywgMTAxLCAyMTcsIDEyLCAxLCAyMzYsIDg5LCAyMTcsIDEyLCAKKyAgICAxLCAyMzcsIDE5NSwgMjE3LCAxMiwgMSwgMjE0LCAxNTcsIDIxNywgMTIsIDEsIDIyNywgMTAyLCAyMTcsIDEyLCAxLCAyMjUsIAorICAgIDE3MSwgMjE3LCAxMiwgMSwgMjIxLCAxNzksIDIxNywgMTIsIDEsIDIxOCwgNzMsIDIxNywgMTIsIDEsIDIwMSwgNzIsIDIxNywgCisgICAgMTIsIDEsIDE0NCwgMjE3LCAxMiwgMSwgMTgzLCAyMTcsIDEyLCAxLCA2MiwgMjE3LCAxMiwgMSwgNzIsIDIxNywgMTIsIDEsIAorICAgIDcwLCAyMTcsIDEyLCAxLCA3NCwgMjE3LCAxMiwgMSwgNjYsIDIxNywgMTIsIDEsIDI1MiwgMTM4LCAyMTcsIDEyLCAxLCAKKyAgICAyMzgsIDI1NSwgMjE3LCAxMiwgMSwgMjE3LCA2MywgMjE3LCAxMiwgMTcsIDE5OSwgODEsIDIxNywgMTIsIDE3LCAxMDIsIAorICAgIDIxNywgMTIsIDE3LCAxMDUsIDIxNywgMTIsIDE3LCAxNDcsIDIxNywgMTIsIDE3LCAxNDksIDIxNywgMTIsIDE3LCAxNjQsIAorICAgIDIxNywgMTIsIDE3LCAxODcsIDIxNywgMTIsIDE3LCAyMTAsIDEzNSwgMjE3LCAxMiwgMTcsIDE5MiwgMjE3LCAxMiwgMTcsIAorICAgIDIxOSwgMTEzLCAyMTcsIDE0LCA2LCAxLCA2MiwgMjE3LCAxNCwgNiwgMSwgMjUxLCAxNzYsIDIxNywgMTQsIDYsIDEsIDI1MSwgCisgICAgMTcxLCAyMTcsIDE0LCA2LCAxLCAyNTEsIDE4NSwgMjE3LCAxNCwgNiwgMSwgMjQ4LCA3MiwgMjE3LCAxNCwgNiwgMSwgMjQ3LCAKKyAgICAzNywgMjE3LCAxNCwgNiwgMSwgMjM4LCAyNDAsIDIxNywgMTQsIDYsIDEsIDcyLCAyMTcsIDE0LCA2LCAxLCAyMzgsIDIyMSwgCisgICAgMjE3LCAxNCwgNiwgMSwgMTQ0LCAyMTcsIDE0LCA2LCAxLCAyMzMsIDM2LCAyMTcsIDE0LCA2LCAxLCA3MCwgMjE3LCAxNCwgCisgICAgNiwgMSwgMTYxLCAyMTcsIDE0LCA2LCAxLCAyMzgsIDIzOSwgMjE3LCAxNCwgNiwgMSwgMjI1LCAyMDMsIDIxNywgMTQsIDYsIAorICAgIDEsIDE5NCwgMjE3LCAxNCwgNiwgMSwgMTc4LCAyMTcsIDE0LCA2LCAxLCAxODgsIDIxNywgMTQsIDYsIDEsIDc0LCAyMTcsIAorICAgIDE0LCA2LCAxLCAyMTcsIDEwMiwgMjE3LCAxNCwgNiwgMSwgMTcyLCAyMTcsIDE0LCA2LCAxLCAyMzgsIDIzOCwgMjE3LCAxNCwgCisgICAgNiwgMSwgMjEyLCA2NCwgMjE3LCAxNCwgNiwgMSwgMjEwLCAxMTQsIDIxNywgMTQsIDYsIDEsIDIwNywgMzYsIDIxNywgMTQsIAorICAgIDYsIDEsIDIzOCwgMjM3LCAyMTcsIDE0LCA2LCAxLCAyMDUsIDMyLCAyMTcsIDE0LCA2LCAxLCAyMzgsIDIzNiwgMjE3LCAxNCwgCisgICAgNiwgMSwgMjA1LCAyMiwgMjE3LCAxNCwgNiwgMSwgMjQxLCAxMDAsIDIxNywgMTQsIDYsIDEsIDY2LCAyMTcsIDE0LCA2LCAxLCAKKyAgICAyMDEsIDExNCwgMjE3LCAxNCwgNiwgMSwgMjI2LCAyMDcsIDIxNywgMTQsIDYsIDEsIDIzNSwgMTk5LCAyMTcsIDE0LCA2LCAKKyAgICAxLCAxOTksIDExNCwgMjE3LCAxNCwgNiwgMSwgMTk5LCA3NywgMjE3LCAxNCwgNCwgMSwgNjIsIDIxNywgMTQsIDQsIDEsIAorICAgIDI1MSwgMTc2LCAyMTcsIDE0LCA0LCAxLCAyNTEsIDE3MSwgMjE3LCAxNCwgNCwgMSwgMjUxLCAxODUsIDIxNywgMTQsIDQsIAorICAgIDEsIDI0OCwgNzIsIDIxNywgMTQsIDQsIDEsIDI0NywgMzcsIDIxNywgMTQsIDQsIDEsIDIzOCwgMjQwLCAyMTcsIDE0LCA0LCAKKyAgICAxLCA3MiwgMjE3LCAxNCwgNCwgMSwgMjM4LCAyMjEsIDIxNywgMTQsIDQsIDEsIDE0NCwgMjE3LCAxNCwgNCwgMSwgMjMzLCAKKyAgICAzNiwgMjE3LCAxNCwgNCwgMSwgNzAsIDIxNywgMTQsIDQsIDEsIDE2MSwgMjE3LCAxNCwgNCwgMSwgMjM4LCAyMzksIDIxNywgCisgICAgMTQsIDQsIDEsIDIyNSwgMjAzLCAyMTcsIDE0LCA0LCAxLCAxOTQsIDIxNywgMTQsIDQsIDEsIDE3OCwgMjE3LCAxNCwgNCwgCisgICAgMSwgMTg4LCAyMTcsIDE0LCA0LCAxLCA3NCwgMjE3LCAxNCwgNCwgMSwgMjE3LCAxMDIsIDIxNywgMTQsIDQsIDEsIDE3MiwgCisgICAgMjE3LCAxNCwgNCwgMSwgMjM4LCAyMzgsIDIxNywgMTQsIDQsIDEsIDIxMiwgNjQsIDIxNywgMTQsIDQsIDEsIDIxMCwgMTE0LCAKKyAgICAyMTcsIDE0LCA0LCAxLCAyMDcsIDM2LCAyMTcsIDE0LCA0LCAxLCAyMzgsIDIzNywgMjE3LCAxNCwgNCwgMSwgMjA1LCAzMiwgCisgICAgMjE3LCAxNCwgNCwgMSwgMjM4LCAyMzYsIDIxNywgMTQsIDQsIDEsIDIwNSwgMjIsIDIxNywgMTQsIDQsIDEsIDI0MSwgMTAwLCAKKyAgICAyMTcsIDE0LCA0LCAxLCA2NiwgMjE3LCAxNCwgNCwgMSwgMjAxLCAxMTQsIDIxNywgMTQsIDQsIDEsIDIyNiwgMjA3LCAyMTcsIAorICAgIDE0LCA0LCAxLCAyMzUsIDE5OSwgMjE3LCAxNCwgNCwgMSwgMTk5LCAxMTQsIDIxNywgMTQsIDQsIDEsIDE5OSwgNzcsIDIzOCwgCisgICAgMjA1LCAxLCA2MiwgMjM4LCAyMDUsIDEsIDI0OSwgOCwgMjM4LCAyMDUsIDEsIDI0NywgNzYsIDIzOCwgMjA1LCAxLCAyNDcsIAorICAgIDgsIDIzOCwgMjA1LCAxLCAyNDEsIDE3NSwgMjM4LCAyMDUsIDEsIDIyMCwgNjcsIDIzOCwgMjA1LCAxLCAyNDEsIDkxLCAKKyAgICAyMzgsIDIwNSwgMSwgMjM4LCAyMzQsIDIzOCwgMjA1LCAxLCA3MiwgMjM4LCAyMDUsIDEsIDIzNywgMTQ3LCAyMzgsIDIwNSwgCisgICAgMSwgMjM2LCAxNSwgMjM4LCAyMDUsIDEsIDIzNSwgMTMyLCAyMzgsIDIwNSwgMSwgMjM0LCAxMzksIDIzOCwgMjA1LCAxLCAKKyAgICA3MCwgMjM4LCAyMDUsIDEsIDIyNywgMjI3LCAyMzgsIDIwNSwgMSwgMjI3LCA4LCAyMzgsIDIwNSwgMSwgMjI1LCA0MCwgCisgICAgMjM4LCAyMDUsIDEsIDIyNCwgMTM0LCAyMzgsIDIwNSwgMSwgMjIyLCA3NiwgMjM4LCAyMDUsIDEsIDIyMCwgMzQsIDIzOCwgCisgICAgMjA1LCAxLCAxODgsIDIzOCwgMjA1LCAxLCAyMTksIDkxLCAyMzgsIDIwNSwgMSwgNzQsIDIzOCwgMjA1LCAxLCAyMTYsIDczLCAKKyAgICAyMzgsIDIwNSwgMSwgMjE0LCAxMzksIDIzOCwgMjA1LCAxLCAyMTMsIDE5MCwgMjM4LCAyMDUsIDEsIDIxMiwgMjEwLCAyMzgsIAorICAgIDIwNSwgMSwgMjExLCAyMDIsIDIzOCwgMjA1LCAxLCAyMTAsIDY1LCAyMzgsIDIwNSwgMSwgMjA2LCAyMDEsIDIzOCwgMjA1LCAKKyAgICAxLCAyMDYsIDEwNiwgMjM4LCAyMDUsIDEsIDY2LCAyMzgsIDIwNSwgMSwgMjAzLCA1OSwgMjM4LCAyMDUsIDEsIDIwMCwgCisgICAgMTc1LCAyMzgsIDIwNSwgMSwgMjAwLCAxMjMsIDIzOCwgMjA1LCAxLCAxOTksIDg5LCAyMzgsIDIwNSwgMSwgMTk5LCA2OCwgCisgICAgMjM4LCAyMDUsIDEsIDIzNSwgMTg1LCAyMzgsIDIwNSwgMSwgMjM1LCAxOTEsIDIzOCwgMjA1LCAxLCAyMjYsIDE5MiwgMjQ3LCAKKyAgICAxMDgsIDI1MSwgMTQzLCAxLCAyNTEsIDExMSwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyNDgsIDIxMCwgMjQ3LCAxMDgsIAorICAgIDI1MSwgMTQzLCAxLCAyMzUsIDE0OSwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyNDEsIDI0MCwgMjQ3LCAxMDgsIDI1MSwgCisgICAgMTQzLCAxLCAyMzksIDksIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMTk5LCA5OSwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAKKyAgICAyMzgsIDE0LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDE5OSwgNjIsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjA2LCAyMjcsIAorICAgIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjQ3LCAzNywgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAxOTksIDIyMiwgMjQ3LCAKKyAgICAxMDgsIDI1MSwgMTQzLCAxLCAxOTksIDc3LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIyOCwgMzQsIDI0NywgMTA4LCAyNTEsIAorICAgIDE0MywgMSwgMjEwLCAxMTQsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjI1LCA4MCwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAKKyAgICAyMjgsIDQ2LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIwMCwgMTcxLCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIzOSwgCisgICAgMTAxLCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDI0NywgMTM1LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIyNywgMjA4LCAKKyAgICAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIyNywgNDcsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjIzLCAyNTIsIDI0NywgCisgICAgMTA4LCAyNTEsIDE0MywgMSwgMjM0LCA4NiwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMTQsIDE0MCwgMjQ3LCAxMDgsIAorICAgIDI1MSwgMTQzLCAxLCAyNTEsIDMwLCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDI0NiwgMjAxLCAyNDcsIDEwOCwgMjUxLCAKKyAgICAxNDMsIDEsIDI0NiwgMjM2LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDI0MiwgMTY1LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIAorICAgIDIyMiwgMTYxLCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIxNCwgMTQ0LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIxOCwgCisgICAgMjAwLCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIzOSwgNzgsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjEwLCA5NywgMjQ3LCAKKyAgICAxMDgsIDI1MSwgMTQzLCAxLCAyMjcsIDIyOCwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMTcsIDc4LCAyNDcsIDEwOCwgCisgICAgMjUxLCAxNDMsIDEsIDIwNCwgMTMyLCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIzNywgMTcwLCAyNDcsIDEwOCwgMjUxLCAKKyAgICAxNDMsIDEsIDIzOSwgOTEsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjQ3LCAxNCwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAKKyAgICAyMTYsIDQ3LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIzNSwgMTc1LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIxMywgCisgICAgMjA0LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIxMCwgMTIzLCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIwMiwgMjM2LCAKKyAgICAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIwNSwgMjA2LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIwOSwgMjI5LCAyNDcsIAorICAgIDEwOCwgMjUxLCAxNDMsIDEsIDIyOCwgNSwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyNDIsIDE2NiwgMjQ3LCAxMDgsIDI1MSwgCisgICAgMTQzLCAxLCAyNDcsIDEwMSwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMDAsIDU1LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIAorICAgIDIxNSwgMTM5LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIyNiwgMTI1LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDI0NiwgMTQzLCAKKyAgICA4MSwgMzAsIDM1LCAyLCAyNTIsIDg4LCAzMCwgMzUsIDIsIDI1MiwgODcsIDMwLCAzNSwgMiwgMjUyLCA4NiwgMzAsIDM1LCAKKyAgICAyLCAyNTIsIDg1LCAzMCwgMzUsIDIsIDI1MiwgODQsIDMwLCAzNSwgMiwgMjUyLCA4MywgMzAsIDM1LCAyLCAyNTIsIDgyLCAKKyAgICAzMCwgMzUsIDIsIDI1MiwgODEsIDMwLCAzNSwgMiwgMjUyLCA4MCwgMzAsIDM1LCAyLCAyNTIsIDc5LCAzMCwgMzUsIDIsIAorICAgIDI1MiwgNzgsIDMwLCAzNSwgMiwgMjUyLCA3NywgMzAsIDM1LCAyLCAyNTIsIDc2LCAzMCwgMzUsIDIsIDI1MiwgNzUsIDMwLCAKKyAgICAzNSwgMiwgMjUyLCA3NCwgMzAsIDM1LCAyLCAyNTIsIDczLCAzMCwgMzUsIDIsIDI1MiwgNzIsIDMwLCAzNSwgMiwgMjUyLCAKKyAgICA3MSwgMzAsIDM1LCAyLCAyNTIsIDcwLCAzMCwgMzUsIDIsIDI1MiwgNjksIDMwLCAzNSwgMiwgMjUyLCA2OCwgMzAsIDM1LCAKKyAgICAyLCAyNTIsIDY3LCAzMCwgMzUsIDIsIDI1MiwgNjYsIDMwLCAzNSwgMiwgMjUyLCA2NSwgMzAsIDM1LCAyLCAyNTIsIDY0LCAKKyAgICAzMCwgMzUsIDIsIDI1MiwgNjMsIDMwLCAzNSwgMiwgMjUyLCA2MiwgMzAsIDM1LCAyLCAyNTUsIDk2LCAzMCwgMzUsIDIsIAorICAgIDI1MiwgNjEsIDMwLCAzNSwgMiwgMjUyLCA2MCwgMzAsIDM1LCAyLCAyNTIsIDU5LCAzMCwgMzUsIDIsIDI1MiwgNTgsIDMwLCAKKyAgICAzNSwgMiwgMjUyLCA1NywgMzAsIDM1LCAyLCAyNTIsIDU2LCAzMCwgMzUsIDIsIDI1MiwgNTUsIDMwLCAzNSwgMiwgMjUyLCAKKyAgICA1NCwgMzAsIDM1LCAyLCAyNTIsIDUzLCAzMCwgMzUsIDIsIDI1MiwgNTIsIDMwLCAzNSwgMiwgMjUyLCA1MSwgMzAsIDM1LCAKKyAgICAyLCAyNTIsIDUwLCAzMCwgMzUsIDIsIDI1MiwgNDksIDMwLCAzNSwgMiwgMjUyLCA0OCwgMzAsIDM1LCAyLCAyNTIsIDQ3LCAKKyAgICAzMCwgMzUsIDIsIDI1MiwgNDYsIDMwLCAzNSwgMiwgMjUyLCA0NSwgMzAsIDM1LCAyLCAyNTIsIDQ0LCAzMCwgMzUsIDIsIAorICAgIDI1MiwgNDMsIDMwLCAzNSwgMiwgMjUyLCA0MiwgMzAsIDM1LCAyLCAyNTIsIDQxLCAzMCwgMzUsIDIsIDI1MiwgNDAsIDMwLCAKKyAgICAzNSwgMiwgMjUyLCAzOSwgMzAsIDM1LCAyLCAyNTIsIDM4LCAzMCwgMzUsIDIsIDI1MiwgMzcsIDMwLCAzNSwgMiwgMjUyLCAKKyAgICAzNiwgMzAsIDM1LCAyLCAyNTIsIDM1LCAzMCwgMzUsIDIsIDI1MiwgMzQsIDMwLCAzNSwgMiwgMjUyLCAzMywgMzAsIDM1LCAKKyAgICAyLCAyNTIsIDMyLCAzMCwgMzUsIDIsIDI1MiwgMzEsIDMwLCAzNSwgMiwgMjUyLCAzMCwgMzAsIDM1LCAyLCAyNTIsIDI5LCAKKyAgICAzMCwgMzUsIDIsIDI1MiwgMjgsIDMwLCAzNSwgMiwgMjUyLCAyNywgMzAsIDM1LCAyLCAyNTIsIDI2LCAzMCwgMzUsIDIsIAorICAgIDI1MiwgMjUsIDMwLCAzNSwgMiwgMjUyLCAyNCwgMzAsIDM1LCAyLCAyNTIsIDIzLCAzMCwgMzUsIDIsIDI1MiwgMjIsIDMwLCAKKyAgICAzNSwgMiwgMjUyLCAyMSwgMzAsIDM1LCAyLCAyNTIsIDIwLCAzMCwgMzUsIDIsIDI1MiwgMTksIDMwLCAzNSwgMiwgMjU1LCAKKyAgICA5LCAzMCwgMzUsIDIsIDI1MiwgMTgsIDMwLCAzNSwgMiwgMjUyLCAxNywgMzAsIDM1LCAyLCAyNTQsIDIzMCwgMzAsIDM1LCAKKyAgICAyLCAyNTIsIDE2LCAzMCwgMzUsIDIsIDI1MiwgMTUsIDMwLCAzNSwgMiwgMjUyLCAxNCwgMzAsIDM1LCAyLCAyNTIsIDEzLCAKKyAgICAzMCwgMzUsIDIsIDI1NCwgMjE3LCAzMCwgMzUsIDIsIDI1MiwgMTIsIDMwLCAzNSwgMiwgMjUyLCAxMSwgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDEwLCAzMCwgMzUsIDIsIDI1MiwgOSwgMzAsIDM1LCAyLCAyNTIsIDgsIDMwLCAzNSwgMiwgMjU0LCAzMywgMzAsIAorICAgIDM1LCAyLCAyNTQsIDMyLCAzMCwgMzUsIDIsIDI1NCwgMzEsIDMwLCAzNSwgMiwgMjU0LCAzMCwgMzAsIDM1LCAyLCAyNTQsIAorICAgIDI5LCAzMCwgMzUsIDIsIDI1NCwgMjgsIDMwLCAzNSwgMiwgMjU0LCAyNywgMzAsIDM1LCAyLCAyNTQsIDI2LCAzMCwgMzUsIAorICAgIDIsIDI1NCwgMjQsIDMwLCAzNSwgMiwgMjU0LCAyMywgMzAsIDM1LCAyLCAyNTQsIDIyLCAzMCwgMzUsIDIsIDI1NCwgMjEsIAorICAgIDMwLCAzNSwgMiwgMjU0LCAyMCwgMzAsIDM1LCAyLCAyNTQsIDE5LCAzMCwgMzUsIDIsIDI1NCwgMTcsIDMwLCAzNSwgMiwgCisgICAgMjU0LCAxNiwgMzAsIDM1LCAyLCAyNTQsIDE1LCAzMCwgMzUsIDIsIDI1NCwgMTQsIDMwLCAzNSwgMiwgMjU0LCAxMywgMzAsIAorICAgIDM1LCAyLCAyNTQsIDEyLCAzMCwgMzUsIDIsIDI1NCwgMTEsIDMwLCAzNSwgMiwgMjU0LCAxMCwgMzAsIDM1LCAyLCAyNTQsIAorICAgIDksIDMwLCAzNSwgMiwgMjU0LCA4LCAzMCwgMzUsIDIsIDI1NCwgNywgMzAsIDM1LCAyLCAyNTQsIDYsIDMwLCAzNSwgMiwgCisgICAgMjU0LCA1LCAzMCwgMzUsIDIsIDI1NCwgNCwgMzAsIDM1LCAyLCAyNTQsIDMsIDMwLCAzNSwgMiwgMjU0LCAyLCAzMCwgMzUsIAorICAgIDIsIDI1NCwgMSwgMzAsIDM1LCAyLCAyNTQsIDAsIDMwLCAzNSwgMiwgMjUzLCAyNTUsIDMwLCAzNSwgMiwgMjUzLCAyNTMsIAorICAgIDMwLCAzNSwgMiwgMjUzLCAyNTIsIDMwLCAzNSwgMiwgMjUzLCAyNTEsIDMwLCAzNSwgMiwgMjUzLCAyNDcsIDMwLCAzNSwgMiwgCisgICAgMjUzLCAyNDYsIDMwLCAzNSwgMiwgMjUzLCAyNDUsIDMwLCAzNSwgMiwgMjUzLCAyNDQsIDMwLCAzNSwgMiwgMjUzLCAyNDAsIAorICAgIDMwLCAzNSwgMiwgMjUzLCAyMzksIDMwLCAzNSwgMiwgMjUzLCAyMzgsIDMwLCAzNSwgMiwgMjUzLCAyMzcsIDMwLCAzNSwgMiwgCisgICAgMjUzLCAyMzYsIDMwLCAzNSwgMiwgMjUzLCAyMzUsIDMwLCAzNSwgMiwgMjUzLCAyMzQsIDMwLCAzNSwgMiwgMjUzLCAyMzMsIAorICAgIDMwLCAzNSwgMiwgMjUzLCAyMzIsIDMwLCAzNSwgMiwgMjUzLCAyMzEsIDMwLCAzNSwgMiwgMjUzLCAyMzAsIDMwLCAzNSwgMiwgCisgICAgMjUzLCAyMjksIDMwLCAzNSwgMiwgMjUzLCAyMjgsIDMwLCAzNSwgMiwgMjUzLCAyMjcsIDMwLCAzNSwgMiwgMjUzLCAyMjYsIAorICAgIDMwLCAzNSwgMiwgMjUzLCAyMjUsIDMwLCAzNSwgMiwgMjUzLCAyMjQsIDMwLCAzNSwgMiwgMjUzLCAyMjMsIDMwLCAzNSwgMiwgCisgICAgMjUzLCAyMjIsIDMwLCAzNSwgMiwgMjUzLCAyMjEsIDMwLCAzNSwgMiwgMjUzLCAyMjAsIDMwLCAzNSwgMiwgMjUzLCAyMTksIAorICAgIDMwLCAzNSwgMiwgMjUzLCAyMTgsIDMwLCAzNSwgMiwgMjUzLCAyMTYsIDMwLCAzNSwgMiwgMjUzLCAyMTUsIDMwLCAzNSwgMiwgCisgICAgMjUzLCAyMTQsIDMwLCAzNSwgMiwgMjUzLCAyMTMsIDMwLCAzNSwgMiwgMjUzLCAyMTIsIDMwLCAzNSwgMiwgMjUzLCAyMTAsIAorICAgIDMwLCAzNSwgMiwgMjUzLCAyMDksIDMwLCAzNSwgMiwgMjUzLCAyMDgsIDMwLCAzNSwgMiwgMjUzLCAyMDcsIDMwLCAzNSwgMiwgCisgICAgMjUzLCAyMDUsIDMwLCAzNSwgMiwgMjUzLCAyMDQsIDMwLCAzNSwgMiwgMjUzLCAyMDMsIDMwLCAzNSwgMiwgMjUzLCAxNjksIAorICAgIDMwLCAzNSwgMiwgMjUzLCAxNjcsIDMwLCAzNSwgMiwgMjUzLCAxNjUsIDMwLCAzNSwgMiwgMjUzLCAxNjMsIDMwLCAzNSwgMiwgCisgICAgMjUzLCAxNjEsIDMwLCAzNSwgMiwgMjUzLCAxNTksIDMwLCAzNSwgMiwgMjUzLCAxNTcsIDMwLCAzNSwgMiwgMjUzLCAxNTUsIAorICAgIDMwLCAzNSwgMiwgMjUzLCAxNTMsIDMwLCAzNSwgMiwgMjUzLCAxNTEsIDMwLCAzNSwgMiwgMjUzLCAxNDksIDMwLCAzNSwgMiwgCisgICAgMjUzLCAxNDYsIDMwLCAzNSwgMiwgMjUzLCAxNDQsIDMwLCAzNSwgMiwgMjUzLCAxNDIsIDMwLCAzNSwgMiwgMjUzLCAxNDAsIAorICAgIDMwLCAzNSwgMiwgMjUzLCAxMzgsIDMwLCAzNSwgMiwgMjUzLCAxMzYsIDMwLCAzNSwgMiwgMjUzLCAxMzQsIDMwLCAzNSwgMiwgCisgICAgMjUzLCAxMzIsIDMwLCAzNSwgMiwgMjUzLCA1MCwgMzAsIDM1LCAyLCAyNTMsIDQ5LCAzMCwgMzUsIDIsIDI1MywgNDgsIDMwLCAKKyAgICAzNSwgMiwgMjUzLCA0NywgMzAsIDM1LCAyLCAyNTMsIDQ2LCAzMCwgMzUsIDIsIDI1MywgNDUsIDMwLCAzNSwgMiwgMjUzLCAKKyAgICA0MywgMzAsIDM1LCAyLCAyNTMsIDQyLCAzMCwgMzUsIDIsIDI1MywgNDEsIDMwLCAzNSwgMiwgMjUzLCA0MCwgMzAsIDM1LCAKKyAgICAyLCAyNTMsIDM5LCAzMCwgMzUsIDIsIDI1MywgMzgsIDMwLCAzNSwgMiwgMjUzLCAzNiwgMzAsIDM1LCAyLCAyNTMsIDM1LCAKKyAgICAzMCwgMzUsIDIsIDI1MywgMzEsIDMwLCAzNSwgMiwgMjUzLCAzMCwgMzAsIDM1LCAyLCAyNTMsIDI4LCAzMCwgMzUsIDIsIAorICAgIDI1MywgMjcsIDMwLCAzNSwgMiwgMjUzLCAyNiwgMzAsIDM1LCAyLCAyNTMsIDI1LCAzMCwgMzUsIDIsIDI1MywgMjQsIDMwLCAKKyAgICAzNSwgMiwgMjUzLCAyMywgMzAsIDM1LCAyLCAyNTMsIDIyLCAzMCwgMzUsIDIsIDI1MywgMjEsIDMwLCAzNSwgMiwgMjUzLCAKKyAgICAyMCwgMzAsIDM1LCAyLCAyNTMsIDE5LCAzMCwgMzUsIDIsIDI1MywgMTgsIDMwLCAzNSwgMiwgMjUzLCAxNywgMzAsIDM1LCAKKyAgICAyLCAyNTMsIDE2LCAzMCwgMzUsIDIsIDI1MywgMTUsIDMwLCAzNSwgMiwgMjUzLCAxNCwgMzAsIDM1LCAyLCAyNTMsIDEzLCAKKyAgICAzMCwgMzUsIDIsIDI1MywgMTIsIDMwLCAzNSwgMiwgMjUzLCAxMSwgMzAsIDM1LCAyLCAyNTMsIDEwLCAzMCwgMzUsIDIsIAorICAgIDI1MywgOSwgMzAsIDM1LCAyLCAyNTMsIDgsIDMwLCAzNSwgMiwgMjUzLCA3LCAzMCwgMzUsIDIsIDI1MywgNiwgMzAsIDM1LCAKKyAgICAyLCAyNTMsIDUsIDMwLCAzNSwgMiwgMjUzLCA0LCAzMCwgMzUsIDIsIDI1MywgMywgMzAsIDM1LCAyLCAyNTMsIDIsIDMwLCAKKyAgICAzNSwgMiwgMjUzLCAxLCAzMCwgMzUsIDIsIDI1MywgMCwgMzAsIDM1LCAyLCAyNTIsIDI1NSwgMzAsIDM1LCAyLCAyNTIsIAorICAgIDI1NCwgMzAsIDM1LCAyLCAyNTIsIDI1MywgMzAsIDM1LCAyLCAyNTIsIDI1MiwgMzAsIDM1LCAyLCAyNTIsIDI1MSwgMzAsIAorICAgIDM1LCAyLCAyNTIsIDI1MCwgMzAsIDM1LCAyLCAyNTIsIDI0OSwgMzAsIDM1LCAyLCAyNTIsIDI0OCwgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDI0NywgMzAsIDM1LCAyLCAyNTIsIDI0NiwgMzAsIDM1LCAyLCAyNTIsIDI0NSwgMzAsIDM1LCAyLCAyNTIsIDI0NCwgCisgICAgMzAsIDM1LCAyLCAyNTIsIDI0MywgMzAsIDM1LCAyLCAyNTIsIDI0MiwgMzAsIDM1LCAyLCAyNTIsIDI0MSwgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDI0MCwgMzAsIDM1LCAyLCAyNTIsIDIzOSwgMzAsIDM1LCAyLCAyNTIsIDIzOCwgMzAsIDM1LCAyLCAyNTIsIDIzNywgCisgICAgMzAsIDM1LCAyLCAyNTIsIDIzNiwgMzAsIDM1LCAyLCAyNTIsIDIzNSwgMzAsIDM1LCAyLCAyNTIsIDIzNCwgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDIzMywgMzAsIDM1LCAyLCAyNTIsIDIzMiwgMzAsIDM1LCAyLCAyNTIsIDIzMSwgMzAsIDM1LCAyLCAyNTIsIDIzMCwgCisgICAgMzAsIDM1LCAyLCAyNTIsIDIyOSwgMzAsIDM1LCAyLCAyNTIsIDIyOCwgMzAsIDM1LCAyLCAyNTIsIDIyNywgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDIyNiwgMzAsIDM1LCAyLCAyNTIsIDIyNSwgMzAsIDM1LCAyLCAyNTIsIDIyNCwgMzAsIDM1LCAyLCAyNTIsIDIyMywgCisgICAgMzAsIDM1LCAyLCAyNTIsIDIyMiwgMzAsIDM1LCAyLCAyNTIsIDIyMSwgMzAsIDM1LCAyLCAyNTIsIDIyMCwgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDIxOSwgMzAsIDM1LCAyLCAyNTIsIDIxOCwgMzAsIDM1LCAyLCAyNTIsIDIxNywgMzAsIDM1LCAyLCAyNTIsIDIxNiwgCisgICAgMzAsIDM1LCAyLCAyNTIsIDIxNSwgMzAsIDM1LCAyLCAyNTIsIDIxNCwgMzAsIDM1LCAyLCAyNTIsIDIxMywgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDIxMiwgMzAsIDM1LCAyLCAyNTIsIDIxMSwgMzAsIDM1LCAyLCAyNTIsIDIxMCwgMzAsIDM1LCAyLCAyNTIsIDIwOSwgCisgICAgMzAsIDM1LCAyLCAyNTIsIDIwOCwgMzAsIDM1LCAyLCAyNTIsIDIwNywgMzAsIDM1LCAyLCAyNTIsIDIwNiwgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDIwNSwgMzAsIDM1LCAyLCAyNTIsIDIwNCwgMzAsIDM1LCAyLCAyNTIsIDIwMywgMzAsIDM1LCAyLCAyNTIsIDIwMiwgCisgICAgMzAsIDM1LCAyLCAyNTIsIDIwMSwgMzAsIDM1LCAyLCAyNTIsIDIwMCwgMzAsIDM1LCAyLCAyNTIsIDE5OSwgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDE5OCwgMzAsIDM1LCAyLCAyNTIsIDE5NywgMzAsIDM1LCAyLCAyNTIsIDE5NiwgMzAsIDM1LCAyLCAyNTIsIDE5NSwgCisgICAgMzAsIDM1LCAyLCAyNTIsIDE5NCwgMzAsIDM1LCAyLCAyNTIsIDE5MywgMzAsIDM1LCAyLCAyNTIsIDE5MiwgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDE5MSwgMzAsIDM1LCAyLCAyNTIsIDE5MCwgMzAsIDM1LCAyLCAyNTIsIDE4OSwgMzAsIDM1LCAyLCAyNTIsIDE4OCwgCisgICAgMzAsIDM1LCAyLCAyNTIsIDE4NywgMzAsIDM1LCAyLCAyNTIsIDE4NiwgMzAsIDM1LCAyLCAyNTIsIDE4NSwgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDE4NCwgMzAsIDM1LCAyLCAyNTIsIDE4MywgMzAsIDM1LCAyLCAyNTIsIDE4MiwgMzAsIDM1LCAyLCAyNTIsIDE4MSwgCisgICAgMzAsIDM1LCAyLCAyNTIsIDE4MCwgMzAsIDM1LCAyLCAyNTIsIDE3OSwgMzAsIDM1LCAyLCAyNTIsIDE3OCwgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDE3NywgMzAsIDM1LCAyLCAyNTIsIDE3NiwgMzAsIDM1LCAyLCAyNTIsIDE3NSwgMzAsIDM1LCAyLCAyNTIsIDE3NCwgCisgICAgMzAsIDM1LCAyLCAyNTIsIDE3MywgMzAsIDM1LCAyLCAyNTIsIDE3MiwgMzAsIDM1LCAyLCAyNTIsIDE3MSwgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDE3MCwgMzAsIDM1LCAyLCAyNTIsIDE2OSwgMzAsIDM1LCAyLCAyNTIsIDE2OCwgNjIsIDMwLCAzNSwgMiwgMjUyLCAKKyAgICAxNjcsIDI1MCwgMTAzLCAzMCwgMzUsIDIsIDI1MiwgMTY2LCAyNDIsIDE1MywgMzAsIDM1LCAyLCAyNTIsIDE2NSwgNzIsIAorICAgIDMwLCAzNSwgMiwgMjUyLCAxNjQsIDIzOCwgNSwgMzAsIDM1LCAyLCAyNTIsIDE2MywgMjM0LCAyNDcsIDMwLCAzNSwgMiwgCisgICAgMjUyLCAxNjIsIDIyNywgMjUxLCAzMCwgMzUsIDIsIDI1MiwgMTYxLCAyMjcsIDExOCwgMzAsIDM1LCAyLCAyNTIsIDE2MCwgCisgICAgMTU2LCAzMCwgMzUsIDIsIDI1MiwgMTU5LCAyMjUsIDE4MCwgMzAsIDM1LCAyLCAyNTIsIDE1OCwgMjI1LCAxNzksIDMwLCAKKyAgICAzNSwgMiwgMjUyLCAxNTcsIDIyNSwgMTc4LCAzMCwgMzUsIDIsIDI1MiwgMTU2LCAyMjUsIDE3NywgMzAsIDM1LCAyLCAyNTIsIAorICAgIDE1NSwgMjAxLCAxNDcsIDMwLCAzNSwgMiwgMjUyLCAxNTQsIDIwMCwgMTk1LCAzMCwgMzUsIDIsIDI1MiwgMTUzLCAyMDAsIAorICAgIDEyMywgMzAsIDM1LCAyLCAyNTIsIDE1MiwgMjE3LCA4MywgMzAsIDM1LCAyLCAyNTIsIDE1MSwgMjUyLCA0LCAzMCwgMzUsIAorICAgIDIsIDI1MiwgMTUwLCAyNDksIDQ1LCAzMCwgMzUsIDIsIDI1MiwgMTQ5LCAyNDEsIDIyMiwgMzAsIDM1LCAyLCAyNTIsIDE0OCwgCisgICAgMjM4LCAxMywgMzAsIDM1LCAyLCAyNTIsIDE0NywgMjI3LCAyMjcsIDMwLCAzNSwgMiwgMjUyLCAxNDYsIDMwLCAzNSwgMiwgCisgICAgMjUyLCAxNDUsIDMwLCAzNSwgMiwgMjUyLCAxNDQsIDMwLCAzNSwgMiwgMjUyLCAxNDMsIDMwLCAzNSwgMiwgMjUyLCAxNDIsIAorICAgIDMwLCAzNSwgMiwgMjUyLCAxNDEsIDMwLCAzNSwgMiwgMjUyLCAxNDAsIDMwLCAzNSwgMiwgMjUyLCAxMzksIDI0MiwgMTYwLCAKKyAgICA1LCA2MiwgMjQyLCAxNjAsIDUsIDcyLCAyNDIsIDE2MCwgNSwgNzAsIDI0MiwgMTYwLCA1LCA3NCwgMjQyLCAxNjAsIDUsIAorICAgIDY2LCAyNDIsIDE2MCwgNSwgMjI3LCAyNDgsIDI0MiwgMTYwLCA1LCAyMjcsIDE2NiwgMjQyLCAxNjAsIDUsIDE2MSwgMjQyLCAKKyAgICAxNjAsIDUsIDIyNywgOCwgMjQyLCAxNjAsIDUsIDIyNiwgMTYzLCAyNDIsIDE2MCwgNSwgMjI2LCA4OCwgMjQyLCAxNjAsIDUsIAorICAgIDIyNiwgMTUsIDI0MiwgMTYwLCA1LCAxOTQsIDI0MiwgMTYwLCA1LCAyMjUsIDQwLCAyNDIsIDE2MCwgNSwgMjI0LCAyMTAsIAorICAgIDI0MiwgMTYwLCA1LCAyMjQsIDExMCwgMjQyLCAxNjAsIDUsIDIyNCwgNDIsIDI0MiwgMTYwLCA1LCAxNzgsIDI0MiwgMTYwLCAKKyAgICA1LCAyMjIsIDc2LCAyNDIsIDE2MCwgNSwgMjIxLCAyMTEsIDI0MiwgMTYwLCA1LCAyMjEsIDEzNiwgMjQyLCAxNjAsIDUsIAorICAgIDIyMSwgNDEsIDI0MiwgMTYwLCA1LCAxODgsIDI0MiwgMTYwLCA1LCAyMjAsIDM0LCAyNDIsIDE2MCwgNSwgMjE5LCAxNTAsIAorICAgIDI0MiwgMTYwLCA1LCAyMTgsIDI0MSwgMjQyLCAxNjAsIDUsIDIxOCwgMTMzLCAyNDIsIDE2MCwgNSwgMTcyLCAyNDIsIDE2MCwgCisgICAgNSwgMjE2LCA3MywgMjQyLCAxNjAsIDUsIDIxNSwgMjA0LCAyNDIsIDE2MCwgNSwgMjE1LCAxMDYsIDI0MiwgMTYwLCA1LCAKKyAgICAyMTQsIDIyNCwgMjQyLCAxNjAsIDUsIDIxMywgMjUyLCAyNDIsIDE2MCwgNSwgMjEzLCAxOTAsIDI0MiwgMTYwLCA1LCAyMTMsIAorICAgIDg4LCAyNDIsIDE2MCwgNSwgMjEzLCAxLCAyNDIsIDE2MCwgNSwgMjEyLCAxNzUsIDI0MiwgMTYwLCA1LCAyMTIsIDY0LCAKKyAgICAyNDIsIDE2MCwgNSwgMjExLCAyMDIsIDI0MiwgMTYwLCA1LCAyMDksIDE4MiwgMjQyLCAxNjAsIDUsIDIwOSwgMjksIDI0MiwgCisgICAgMTYwLCA1LCAyMDgsIDI0LCAyNDIsIDE2MCwgNSwgMjA3LCAzNiwgMjQyLCAxNjAsIDUsIDIwNiwgMjAxLCAyNDIsIDE2MCwgCisgICAgNSwgMjA2LCAxNSwgMjQyLCAxNjAsIDUsIDEzOCwgMjQyLCAxNjAsIDUsIDIwNCwgMjE1LCAyNDIsIDE2MCwgNSwgMjAxLCAKKyAgICAxMTQsIDI0MiwgMTYwLCA1LCAyMDEsIDY0LCAyNDIsIDE2MCwgNSwgMjAxLCAzMSwgMjQyLCAxNjAsIDUsIDIwMSwgMCwgCisgICAgMjQyLCAxNjAsIDUsIDIwMCwgMTgxLCAyNDIsIDE2MCwgNSwgMjAwLCAxNzUsIDI0MiwgMTYwLCA1LCAxOTksIDExNCwgMjQyLCAKKyAgICAxNjAsIDUsIDE5OSwgMTQsIDIyOCwgMTE5LCAyNTAsIDIzOCwgMSwgMjUxLCAxNDAsIDIyOCwgMTE5LCAyNTAsIDIzOCwgMSwgCisgICAgMjQ4LCAyMDcsIDIyOCwgMTE5LCAyNTAsIDIzOCwgMSwgMjM1LCAxNDcsIDIyOCwgMTE5LCAyNTAsIDIzOCwgMSwgMjQyLCAKKyAgICAyMiwgMjI4LCAxMTksIDI1MCwgMjM4LCAxLCAyMzQsIDEzOSwgMjI4LCAxMTksIDI1MCwgMjM4LCAxLCAyMDEsIDcyLCAyMjgsIAorICAgIDExOSwgMjUwLCAyMzgsIDEsIDE5OSwgOTIsIDIyOCwgMTE5LCAyNTAsIDIzOCwgMSwgMjM0LCA5MSwgMjI4LCAxMTksIDI1MCwgCisgICAgMjM4LCAxLCAyMDYsIDE0MiwgMjI4LCAxMTksIDI1MCwgMjM4LCAxLCAxOTksIDIzMywgMjI4LCAxMTksIDI1MCwgMjM4LCAxLCAKKyAgICAyMjcsIDU3LCAyMjgsIDExOSwgMjUwLCAyMzgsIDEsIDIyNSwgODIsIDIyOCwgMTE5LCAyNTAsIDIzOCwgMSwgMjIyLCA0NywgCisgICAgMjI4LCAxMTksIDI1MCwgMjM4LCAxLCAyMTgsIDg5LCAyMjgsIDExOSwgMjUwLCAyMzgsIDEsIDIxMiwgMTksIDIyOCwgMTE5LCAKKyAgICAyNTAsIDIzOCwgMSwgMjUwLCAxMDcsIDIyOCwgMTE5LCAyNTAsIDIzOCwgMSwgMjE2LCA3MywgMjI4LCAxMTksIDI1MCwgCisgICAgMjM4LCAxLCAyMTIsIDU0LCAyMjgsIDExOSwgMjUwLCAyMzgsIDEsIDIxNCwgMTAxLCAyMjgsIDExOSwgMjUwLCAyMzgsIDEsIAorICAgIDIxMywgMTIzLCAyMjgsIDExOSwgMjUwLCAyMzgsIDEsIDIxMCwgMjEsIDIyOCwgMTE5LCAyNTAsIDIzOCwgMSwgMjA2LCAKKyAgICAyMTUsIDIyOCwgMTE5LCAyNTAsIDIzOCwgMjExLCAxOTMsIDU0LCAyMjgsIDExOSwgMjUwLCAyMzgsIDQxLCAxMDIsIDIyOCwgCisgICAgMTE5LCAyNTAsIDIzOCwgNDEsIDEwNSwgMjI4LCAxMTksIDI1MCwgMjM4LCA0MSwgMTQ3LCAyMjgsIDExOSwgMjUwLCAyMzgsIAorICAgIDQxLCAyMDYsIDE2NiwgMjI4LCAxMTksIDI1MCwgMjM4LCA0MSwgMjA0LCAxNTksIDIyOCwgMTE5LCAyNTAsIDIzOCwgNDEsIAorICAgIDExMiwgMjMzLCA4MiwgMjI4LCAxMTksIDI1MCwgMjM4LCA0MSwgMTEyLCAyMDYsIDUwLCAyMjgsIDExOSwgMjUwLCAyMzgsIAorICAgIDQxLCAyMDYsIDE2NywgMjA2LCA1MCwgMjE2LCAxNzUsIDEsIDI1MSwgMTQwLCAyMTYsIDE3NSwgMSwgMjQ4LCAyMDcsIDIxNiwgCisgICAgMTc1LCAxLCAyMzUsIDE0NywgMjE2LCAxNzUsIDEsIDI0MiwgMjIsIDIxNiwgMTc1LCAxLCAyMzQsIDEzOSwgMjE2LCAxNzUsIAorICAgIDEsIDIwMSwgNzIsIDIxNiwgMTc1LCAxLCAxOTksIDkyLCAyMTYsIDE3NSwgMSwgMjM0LCA5MSwgMjE2LCAxNzUsIDEsIDIwNiwgCisgICAgMTQyLCAyMTYsIDE3NSwgMSwgMTk5LCAyMzMsIDIxNiwgMTc1LCAxLCAyMjcsIDU3LCAyMTYsIDE3NSwgMSwgMjI1LCA4MiwgCisgICAgMjE2LCAxNzUsIDEsIDIyMiwgNDcsIDIxNiwgMTc1LCAxLCA0NywgMjE4LCA4OSwgMjE2LCAxNzUsIDEsIDIxOCwgODksIAorICAgIDIxNiwgMTc1LCAxLCAyMTIsIDE5LCAyMTYsIDE3NSwgMSwgMjUwLCAxMDcsIDIxNiwgMTc1LCAxLCAyMTYsIDczLCAyMTYsIAorICAgIDE3NSwgMSwgMjEyLCA1NCwgMjE2LCAxNzUsIDEsIDIxNCwgMTAxLCAyMTYsIDE3NSwgMSwgMjEzLCAxMjMsIDIxNiwgMTc1LCAKKyAgICAxLCAyMTAsIDIxLCAyMTYsIDE3NSwgMSwgMjA2LCAyMTUsIDIxNiwgMTc1LCAyMjUsIDIzLCAyMzcsIDM5LCAyMTYsIDE3NSwgCisgICAgMjEzLCA0MSwgMjM3LCAzOSwgMjE2LCAxNzUsIDQxLCAxMDIsIDIxNiwgMTc1LCA0MSwgMTA1LCAyMTYsIDE3NSwgNDEsIAorICAgIDE0NywgMjE2LCAxNzUsIDQxLCAxNDksIDIxNiwgMTc1LCA0MSwgMTY0LCAyMTYsIDE3NSwgNDEsIDIwNiwgMTY2LCAyMTYsIAorICAgIDE3NSwgNDEsIDIwNCwgMTU5LCAyMjAsIDE1MywgMSwgNDcsIDI1MSwgMTQwLCAyMjAsIDE1MywgMSwgMjUxLCAxNDAsIDIyMCwgCisgICAgMTUzLCAxLCA0NywgMjQ4LCAyMDcsIDIyMCwgMTUzLCAxLCAyNDgsIDIwNywgMjIwLCAxNTMsIDEsIDIzNSwgMTQ3LCAyMjAsIAorICAgIDE1MywgMSwgMjQyLCAyMiwgMjIwLCAxNTMsIDEsIDQ3LCAyMzQsIDEzOSwgMjIwLCAxNTMsIDEsIDIzNCwgMTM5LCAyMjAsIAorICAgIDE1MywgMSwgMjAxLCA3MiwgMjIwLCAxNTMsIDEsIDE5OSwgOTIsIDIyMCwgMTUzLCAxLCAyMzQsIDkxLCAyMjAsIDE1MywgMSwgCisgICAgMjA2LCAxNDIsIDIyMCwgMTUzLCAxLCA0NywgMTk5LCAyMzMsIDIyMCwgMTUzLCAxLCAxOTksIDIzMywgMjIwLCAxNTMsIDEsIAorICAgIDQ3LCAyMjcsIDU3LCAyMjAsIDE1MywgMSwgMjI3LCA1NywgMjIwLCAxNTMsIDEsIDQ3LCAyMjUsIDgyLCAyMjAsIDE1MywgMSwgCisgICAgMjI1LCA4MiwgMjIwLCAxNTMsIDEsIDQ3LCAyMjIsIDQ3LCAyMjAsIDE1MywgMSwgMjIyLCA0NywgMjIwLCAxNTMsIDEsIDQ3LCAKKyAgICAyMTgsIDg5LCAyMjAsIDE1MywgMSwgMjE4LCA4OSwgMjIwLCAxNTMsIDEsIDIxMiwgMTksIDIyMCwgMTUzLCAxLCAyNTAsIAorICAgIDEwNywgMjIwLCAxNTMsIDEsIDIxNiwgNzMsIDIyMCwgMTUzLCAxLCAyMTIsIDU0LCAyMjAsIDE1MywgMSwgMjE0LCAxMDEsIAorICAgIDIyMCwgMTUzLCAxLCAyMTMsIDEyMywgMjIwLCAxNTMsIDEsIDQ3LCAyMTAsIDIxLCAyMjAsIDE1MywgMSwgMjEwLCAyMSwgCisgICAgMjIwLCAxNTMsIDEsIDIwNiwgMjE1LCAyMjAsIDE1MywgNDEsIDEwMiwgMjIwLCAxNTMsIDQxLCAxMDUsIDIyMCwgMTUzLCAKKyAgICA0MSwgMTQ3LCAyMjAsIDE1MywgNDEsIDE0OSwgMjIwLCAxNTMsIDI0MiwgMjIwLCA0MSwgMTQ5LCAyMjAsIDE1MywgNDEsIAorICAgIDE2NCwgMjIwLCAxNTMsIDQxLCAyMDYsIDE2NiwgMjIwLCAxNTMsIDQxLCAyMDQsIDE1OSwgMjIwLCAxNTMsIDQxLCAxMTIsIAorICAgIDIzMywgODIsIDIzNCwgMTUyLCAxLCAyNTEsIDE0MCwgMjM0LCAxNTIsIDEsIDI0OCwgMjA3LCAyMzQsIDE1MiwgMSwgMjM1LCAKKyAgICAxNDcsIDIzNCwgMTUyLCAxLCAyNDIsIDIxLCAyMzQsIDE1MiwgMSwgMjM0LCAxMzksIDIzNCwgMTUyLCAxLCAyMDEsIDcyLCAKKyAgICAyMzQsIDE1MiwgMSwgMTk5LCA5MSwgMjM0LCAxNTIsIDEsIDIzNCwgOTEsIDIzNCwgMTUyLCAxLCAyMDYsIDE0MiwgMjM0LCAKKyAgICAxNTIsIDEsIDE5OSwgMjMzLCAyMzQsIDE1MiwgMSwgMjI3LCA1NywgMjM0LCAxNTIsIDEsIDIyNSwgODIsIDIzNCwgMTUyLCAKKyAgICAxLCAyMjIsIDQ3LCAyMzQsIDE1MiwgMSwgMjE4LCA4OSwgMjM0LCAxNTIsIDEsIDIxMiwgMTksIDIzNCwgMTUyLCAxLCAyNTAsIAorICAgIDEwNiwgMjM0LCAxNTIsIDEsIDIxNiwgNzMsIDIzNCwgMTUyLCAxLCAyMTIsIDU0LCAyMzQsIDE1MiwgMSwgMjE0LCAxMDEsIAorICAgIDIzNCwgMTUyLCAxLCAyMTAsIDIxLCAyMzQsIDE1MiwgMSwgMjA2LCAyMTUsIDIzNCwgMTUyLCA0MSwgMTAyLCAyMzQsIDE1MiwgCisgICAgNDEsIDE2NCwgMjM0LCAxNTIsIDQxLCAyMDYsIDE2NiwgMjM0LCAxNTIsIDQxLCAyMDQsIDE1OSwgMjM0LCAxNTIsIDQxLCAKKyAgICAxMTIsIDIzMywgODIsIDIxNSwgMjE1LCAxLCAyNTEsIDEzNywgMjE1LCAyMTUsIDEsIDI0OCwgMjEwLCAyMTUsIDIxNSwgMSwgCisgICAgMjM2LCA2MiwgMjE1LCAyMTUsIDEsIDI0MSwgMTM4LCAyMTUsIDIxNSwgMSwgMjM0LCAxMzksIDIxNSwgMjE1LCAxLCAyMDEsIAorICAgIDc5LCAyMTUsIDIxNSwgMSwgMTk5LCAxMDcsIDIxNSwgMjE1LCAxLCAyMzQsIDkzLCAyMTUsIDIxNSwgMSwgMjA2LCAxNDYsIAorICAgIDIxNSwgMjE1LCAxLCAxOTksIDIzNCwgMjE1LCAyMTUsIDEsIDIyNywgODYsIDIxNSwgMjE1LCAxLCAyMjUsIDg4LCAyMTUsIAorICAgIDIxNSwgMSwgMjIyLCA0NywgMjE1LCAyMTUsIDEsIDIxOCwgODksIDIxNSwgMjE1LCAxLCAyMTAsIDE2MSwgMjE1LCAyMTUsIAorICAgIDEsIDI1MSwgMTcxLCAyMTUsIDIxNSwgMSwgMjE2LCA3MywgMjE1LCAyMTUsIDEsIDIxMiwgNTUsIDIxNSwgMjE1LCAxLCAKKyAgICAyMTQsIDEwNiwgMjE1LCAyMTUsIDEsIDIxMiwgMjMwLCAyMTUsIDIxNSwgMSwgMjEwLCAyMSwgMjE1LCAyMTUsIDEsIDIwNiwgCisgICAgMjIxLCAyMTUsIDIxNSwgNDEsIDEwMiwgMjE1LCAyMTUsIDQxLCAyMDYsIDE2NiwgMjE1LCAyMTUsIDQxLCAyMDQsIDE1OSwgCisgICAgMjE1LCAyMTUsIDQxLCAxMTIsIDIzMywgODIsIDIxNSwgMjE1LCA0MSwgMTA1LCAyMTUsIDIxNSwgNDEsIDE0NywgMjE1LCAKKyAgICAyMTUsIDIwMCwgMjM4LCAyMTAsIDE1NCwgMjIzLCAyNTUsIDEsIDYyLCAyMjMsIDI1NSwgMSwgMjUwLCAxMDMsIDIyMywgCisgICAgMjU1LCAxLCAyMzYsIDE1NiwgMjIzLCAyNTUsIDEsIDI0MiwgMTUzLCAyMjMsIDI1NSwgMSwgNzIsIDIyMywgMjU1LCAxLCAKKyAgICAyMDMsIDE2OCwgMjIzLCAyNTUsIDEsIDcwLCAyMjMsIDI1NSwgMSwgMjAwLCAxMjMsIDIyMywgMjU1LCAxLCAyMjcsIDExOCwgCisgICAgMjIzLCAyNTUsIDEsIDE1NiwgMjIzLCAyNTUsIDEsIDIyMywgMjQzLCAyMjMsIDI1NSwgMSwgMjIwLCAyMTQsIDIyMywgMjU1LCAKKyAgICAxLCA3NCwgMjIzLCAyNTUsIDEsIDE0NiwgMjIzLCAyNTUsIDEsIDIwOCwgMTgyLCAyMjMsIDI1NSwgMSwgMjA3LCA4MywgCisgICAgMjIzLCAyNTUsIDEsIDY2LCAyMjMsIDI1NSwgMSwgMjM4LCA1LCAyMjMsIDI1NSwgMSwgMjE0LCAxNjcsIDIyMywgMjU1LCAxLCAKKyAgICAyMTIsIDEyMiwgMjIzLCAyNTUsIDEsIDIwNSwgMCwgMjIzLCAyNTUsIDEsIDI1MSwgODUsIDIyMywgMjU1LCAxLCAyMzgsIAorICAgIDE3OSwgMjIzLCAyNTUsIDEsIDIyNCwgMiwgMjIzLCAyNTUsIDEsIDIxOSwgMjIsIDIyMywgMjU1LCAxLCAyNDcsIDIyMywgCisgICAgMjIzLCAyNTUsIDIwNSwgOTUsIDgxLCAxMzIsIDIzNCwgNjgsIDEsIDYyLCAxMzIsIDIzNCwgNjgsIDEsIDcyLCAxMzIsIAorICAgIDIzNCwgNjgsIDEsIDcwLCAxMzIsIDIzNCwgNjgsIDEsIDc0LCAxMzIsIDIzNCwgNjgsIDEsIDE4MywgMTMyLCAyMzQsIDY4LCAKKyAgICAxLCAyMDEsIDExNCwgMTMyLCAyMzQsIDY4LCAxLCAyNDksIDEzNiwgMTMyLCAyMzQsIDY4LCAxLCAyNDksIDEzNSwgMTMyLCAKKyAgICAyMzQsIDY4LCAxLCAxNzIsIDEzMiwgMjM0LCA2OCwgMSwgMTc4LCAxMzIsIDIzNCwgNjgsIDEsIDE4OCwgMTMyLCAyMzQsIAorICAgIDY4LCAxLCAyMjAsIDE2MSwgMTMyLCAyMzQsIDY4LCAxLCAyMjAsIDM0LCAxMzIsIDIzNCwgNjgsIDEsIDIyMCwgMzMsIDEzMiwgCisgICAgMjM0LCA2OCwgMSwgMjEzLCAyNTIsIDEzMiwgMjM0LCA2OCwgMSwgMjEzLCAyNTEsIDEzMiwgMjM0LCA2OCwgMSwgMTk0LCAKKyAgICAxMzIsIDIzNCwgNjgsIDEsIDIyNiwgMjA3LCAxMzIsIDIzNCwgNjgsIDEsIDIzNCwgODQsIDEzMiwgMjM0LCA2OCwgMSwgCisgICAgMjEyLCA2NCwgMTMyLCAyMzQsIDY4LCAxLCAyMTIsIDYzLCAxMzIsIDIzNCwgNjgsIDEsIDIxMSwgMjAyLCAxMzIsIDIzNCwgCisgICAgNjgsIDEsIDE2MSwgMTMyLCAyMzQsIDY4LCAxLCAyMTQsIDE1OSwgMTMyLCAyMzQsIDY4LCAxLCAyMDcsIDM2LCAxMzIsIAorICAgIDIzNCwgNjgsIDEsIDIwNywgMzUsIDEzMiwgMjM0LCA2OCwgMSwgMjA2LCAyMDEsIDEzMiwgMjM0LCA2OCwgMSwgMjA2LCAKKyAgICAyMDAsIDEzMiwgMjM0LCA2OCwgMSwgMTM4LCAxMzIsIDIzNCwgNjgsIDEsIDI0MiwgNTgsIDEzMiwgMjM0LCA2OCwgMTYsIAorICAgIDIwMiwgMjI4LCAxMzIsIDIzNCwgNjgsIDE2LCAyMDIsIDIyNywgMTMyLCAyNDIsIDE5MSwgMSwgNjIsIDEzMiwgMjQyLCAKKyAgICAxOTEsIDEsIDcyLCAxMzIsIDI0MiwgMTkxLCAxLCA3MCwgMTMyLCAyNDIsIDE5MSwgMSwgNzQsIDEzMiwgMjQyLCAxOTEsIDEsIAorICAgIDE4MywgMTMyLCAyNDIsIDE5MSwgMSwgMjAxLCAxMTQsIDEzMiwgMjQyLCAxOTEsIDEsIDI0OSwgMTM2LCAxMzIsIDI0MiwgCisgICAgMTkxLCAxLCAxNzIsIDEzMiwgMjQyLCAxOTEsIDEsIDE3OCwgMTMyLCAyNDIsIDE5MSwgMSwgMTg4LCAxMzIsIDI0MiwgMTkxLCAKKyAgICAxLCAyMjAsIDM0LCAxMzIsIDI0MiwgMTkxLCAxLCAyMTMsIDI1MiwgMTMyLCAyNDIsIDE5MSwgMSwgMTk0LCAxMzIsIDI0MiwgCisgICAgMTkxLCAxLCAyMjYsIDIwNywgMTMyLCAyNDIsIDE5MSwgMSwgMjM0LCA4NCwgMTMyLCAyNDIsIDE5MSwgMSwgMjEyLCA2NCwgCisgICAgMTMyLCAyNDIsIDE5MSwgMSwgMjUwLCAyMzQsIDIxMiwgNjQsIDEzMiwgMjQyLCAxOTEsIDEsIDIxMSwgMjAyLCAxMzIsIAorICAgIDI0MiwgMTkxLCAxLCAxNjEsIDEzMiwgMjQyLCAxOTEsIDEsIDIxNCwgMTU5LCAxMzIsIDI0MiwgMTkxLCAxLCAyMDcsIDM2LCAKKyAgICAxMzIsIDI0MiwgMTkxLCAxLCAyMDYsIDIwMSwgMTMyLCAyNDIsIDE5MSwgMSwgMTM4LCAxMzIsIDI0MiwgMTkxLCAxLCAyNDIsIAorICAgIDU4LCAxMzIsIDI0MiwgMTkxLCAyMzYsIDIxOSwgMjM4LCAyMDAsIDIwNCwgMTY2LCAxMzIsIDI0MiwgMTkxLCAyMzYsIDIxOSwgCisgICAgMTEyLCAyMzQsIDIxMywgMTMyLCAyNDIsIDE5MSwgMjI0LCA5NywgMjEzLCA3LCAxMzIsIDI0MiwgMTkxLCAyMjQsIDk3LCAKKyAgICAyMjgsIDEyNCwgMTMyLCAyNDIsIDE5MSwgNDEsIDEwMiwgMTMyLCAyNDIsIDE5MSwgNDEsIDEwNSwgMTMyLCAyNDIsIDE5MSwgCisgICAgNDEsIDE0NywgMTMyLCAyNDIsIDE5MSwgNDEsIDE0OSwgMTMyLCAyNDIsIDE5MSwgNDEsIDE2NCwgMTMyLCAyNDIsIDE5MSwgCisgICAgNDEsIDE4NywgMTMyLCAyNDIsIDE5MSwgNDEsIDIxMCwgMTM1LCAxMzIsIDI0MiwgMTkxLCA0MSwgMTkyLCAxMzIsIDI0MiwgCisgICAgMTkxLCA0MSwgMjE5LCAxMTMsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMDYsIDE2NiwgMTMyLCAyNDIsIDE5MSwgNDEsIDIwNCwgCisgICAgMTU5LCAxMzIsIDI0MiwgMTkxLCA0MSwgMjA2LCA2NywgMTMyLCAyNDIsIDE5MSwgNDEsIDIzNiwgMjM1LCAxMzIsIDI0MiwgCisgICAgMTkxLCA0MSwgMjM3LCAxMDQsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMDksIDkyLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjEwLCAKKyAgICAxMjksIDEzMiwgMjQyLCAxOTEsIDQxLCAxMTIsIDIzMywgODIsIDEzMiwgMjQyLCAxOTEsIDQxLCAxMjAsIDIzMywgODIsIAorICAgIDEzMiwgMjQyLCAxOTEsIDQxLCAxMjYsIDIzMywgODIsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMzYsIDIyOSwgMjMzLCA4MiwgCisgICAgMTMyLCAyNDIsIDE5MSwgNDEsIDIzNywgNjEsIDIzMywgODIsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMDksIDEwNiwgMjMzLCAKKyAgICA4MiwgMTMyLCAyNDIsIDE5MSwgNDEsIDIxMCwgMTM2LCAyMzMsIDgyLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjM4LCAyMzIsIAorICAgIDIzMywgODIsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMTksIDExNCwgMjMzLCA4MiwgMTMyLCAyNDIsIDE5MSwgNDEsIDExMiwgCisgICAgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDEyMCwgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDEyNiwgMjA2LCAKKyAgICA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDIzNiwgMjI5LCAyMDYsIDUwLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjM3LCA2MSwgCisgICAgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDIwOSwgMTA2LCAyMDYsIDUwLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjEwLCAKKyAgICAxMzYsIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMzgsIDIzMiwgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIAorICAgIDIxOSwgMTE0LCAyMDYsIDUwLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjA2LCAxNjcsIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIAorICAgIDQxLCAyMDQsIDE2MCwgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDIwNiwgNjgsIDIwNiwgNTAsIDEzMiwgMjQyLCAKKyAgICAxOTEsIDQxLCAyMzYsIDIzNiwgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDIzNywgMTA1LCAyMDYsIDUwLCAxMzIsIAorICAgIDI0MiwgMTkxLCA0MSwgMjA5LCA5MywgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDIxMCwgMTMwLCAyMDYsIDUwLCAKKyAgICAxMzIsIDI0MiwgMTkxLCA0MSwgMjM4LCAyMjMsIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMTksIDEwOSwgMjA2LCAKKyAgICA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDExMiwgMjMzLCA4MywgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDEyMCwgCisgICAgMjMzLCA4MywgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDEyNiwgMjMzLCA4MywgMjA2LCA1MCwgMTMyLCAyNDIsIAorICAgIDE5MSwgNDEsIDIzNiwgMjI5LCAyMzMsIDgzLCAyMDYsIDUwLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjM3LCA2MSwgMjMzLCA4MywgCisgICAgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDIwOSwgMTA2LCAyMzMsIDgzLCAyMDYsIDUwLCAxMzIsIDI0MiwgMTkxLCAKKyAgICA0MSwgMjEwLCAxMzYsIDIzMywgODMsIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMzgsIDIzMiwgMjMzLCA4MywgCisgICAgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDIxOSwgMTE0LCAyMzMsIDgzLCAyMDYsIDUwLCAxMzIsIDI0MiwgMTkxLCAKKyAgICAyMzYsIDIxOSwgMTEyLCAyMDQsIDE2NywgMTMyLCAyNDIsIDE5MSwgMjM2LCAyMTksIDEyMCwgMjA0LCAxNjYsIDEzMiwgCisgICAgMjQyLCAxOTEsIDIzNiwgMjE5LCAxMjYsIDIwNCwgMTY2LCAxMzIsIDI0MiwgMTkxLCAyMzYsIDIxOSwgMjM2LCAyMjksIAorICAgIDIwNCwgMTY2LCAxMzIsIDI0MiwgMTkxLCAyMzYsIDIxOSwgMjM3LCA2MSwgMjA0LCAxNjYsIDEzMiwgMjQyLCAxOTEsIDIzNiwgCisgICAgMjE5LCAyMDksIDEwNiwgMjA0LCAxNjYsIDEzMiwgMjQyLCAxOTEsIDIzNiwgMjE5LCAyMTAsIDEzNiwgMjA0LCAxNjYsIAorICAgIDEzMiwgMjQyLCAxOTEsIDIzNiwgMjE5LCAyMzgsIDIzMiwgMjA0LCAxNjYsIDEzMiwgMjQyLCAxOTEsIDIzNiwgMjE5LCAKKyAgICAyMTksIDExNCwgMjA0LCAxNjYsIDEzMiwgMjQyLCAxOTEsIDIzNiwgMjE5LCAyMDYsIDE2NywgMjA0LCAxNjYsIDIyNiwgCisgICAgMTk0LCAxLCA2MiwgMjI2LCAxOTQsIDIyLCAyLCA3MCwgMjI2LCAxOTQsIDIyLCAyLCA2NiwgMjI2LCAxOTQsIDIyLCAyLCAKKyAgICAxMDksIDE0NiwgMjI2LCAxOTQsIDIyLCAyLCA3MiwgMjI2LCAxOTQsIDIyLCAyLCA3NCwgMjI2LCAxOTQsIDIyLCAyMjUsIDIsIAorICAgIDgxLCAyMjYsIDE5NCwgMiwgNTMsIDIxMywgMjcsIDU3LCAyMjYsIDE5NCwgMiwgMjUxLCAzMywgMjI2LCAxOTQsIDIsIDIwMiwgCisgICAgMjAzLCAyMjYsIDE5NCwgMSwgMTYxLCAyMjYsIDE5NCwgMSwgMjI2LCAyMDcsIDIyNiwgMTk0LCAxLCAyMzYsIDg5LCAyMjYsIAorICAgIDE5NCwgMSwgMjM1LCAxOTksIDIyNiwgMTk0LCAxLCAyNDcsIDE5MCwgMjI2LCAxOTQsIDEsIDI0NywgMzcsIDIyNiwgMTk0LCAKKyAgICAxLCAyMjcsIDI0OCwgMjI2LCAxOTQsIDEsIDIxOCwgNjAsIDIyNiwgMTk0LCAxLCAyMDQsIDI1MywgMjI2LCAxOTQsIDEsIAorICAgIDIwNCwgMjQxLCAyMjYsIDE5NCwgMSwgMjQxLCAyMjAsIDIyNiwgMTk0LCAxLCAyNDEsIDIwNCwgMjI2LCAxOTQsIDEsIDIxOSwgCisgICAgMjEsIDIyNiwgMTk0LCAxLCAyMDcsIDM2LCAyMjYsIDE5NCwgMSwgMjA2LCAxMjIsIDIyNiwgMTk0LCAxLCAyNDIsIDU4LCAKKyAgICAyMjYsIDE5NCwgMSwgMjQxLCAxMDAsIDIyNiwgMTk0LCAxLCAxODgsIDIyNiwgMTk0LCAxLCAxNzIsIDIyNiwgMTk0LCAxLCAKKyAgICAyMTUsIDI0NSwgMjI2LCAxOTQsIDEsIDI0OSwgMTM2LCAyMjYsIDE5NCwgMSwgMjQ4LCAyMDAsIDIyNiwgMTk0LCAxLCAxNzgsIAorICAgIDIyNiwgMTk0LCAxLCAxODMsIDIyNiwgMTk0LCAxLCAyMTMsIDI1MiwgMjI2LCAxOTQsIDEsIDE5NCwgMjI2LCAxOTQsIDEsIAorICAgIDIwMywgOTAsIDIyNiwgMTk0LCAxLCAyMTAsIDExNCwgMjI2LCAxOTQsIDEsIDIwOCwgMTc5LCAyMjYsIDE5NCwgMSwgMjEyLCAKKyAgICA2NCwgMjI2LCAxOTQsIDEsIDE5OSwgMTE0LCAyMjYsIDE5NCwgMSwgMTQ0LCAyMjYsIDE5NCwgMSwgMjI2LCAxMDksIDIyNiwgCisgICAgMTk0LCAxLCAyMDQsIDIyMSwgMjI2LCAxOTQsIDIsIDI0OSwgNzcsIDU2LCAyMjYsIDE5NCwgMiwgMjQ3LCAxMDcsIDIyNiwgCisgICAgMTk0LCAyLCA3MywgNTcsIDIyNiwgMTk0LCAyMDIsIDIwOCwgMjI2LCAxOTQsIDE3LCAxMDIsIDIyNiwgMTk0LCAxNywgMTA1LCAKKyAgICAyMjYsIDE5NCwgMTcsIDE0NywgMjI2LCAxOTQsIDE3LCAxNDksIDIyNiwgMTk0LCA0MSwgMjA2LCAxNjYsIDIyNiwgMTk0LCAKKyAgICA0MSwgMjA0LCAxNTksIDIyNiwgMTk0LCA0MSwgMTEyLCAyMzMsIDgyLCAyMjYsIDE5NCwgNDEsIDExMiwgMjA2LCA1MCwgCisgICAgMjI2LCAxOTQsIDIxNCwgMjEyLCAyNDAsIDE4MiwgMjI2LCAxOTQsIDIxNCwgMjEyLCA0LCAyNDYsIDE1NSwgMjI2LCAxOTQsIAorICAgIDIxNCwgMjEyLCAyNDYsIDE1NSwgMjI2LCAxOTQsIDIxNCwgMjEyLCAyNDIsIDI0NCwgMTQ4LCAyMjYsIDE5NCwgMjE0LCAKKyAgICAyMTIsIDIyMiwgMTc0LCAyMjYsIDE5NCwgMjE0LCAyMTIsIDIyNCwgNjQsIDIyNiwgMTk0LCAyMTQsIDIxMiwgMjQyLCAxMCwgCisgICAgMjI2LCAxOTQsIDIxNCwgMjEyLCA1MywgMjQyLCAxMCwgMjI2LCAxOTQsIDIxNCwgMjEyLCAyMjQsIDE3MCwgNDAsIDIwOCwgCisgICAgMjU0LCAyNTAsIDI0OSwgMSwgMjM0LCAxMzksIDQwLCAyMDgsIDI1NCwgMjUwLCAyNDksIDEsIDIyNSwgODIsIDQwLCAyMDgsIAorICAgIDI1NCwgMjUwLCAyNDksIDEsIDIzNCwgOTEsIDQwLCAyMDgsIDI1NCwgMjUwLCAyNDksIDEsIDIyMiwgNDcsIDQwLCAyMDgsIAorICAgIDI1NCwgMjUwLCAyNDksIDEsIDIxNCwgMTAxLCA0MCwgMjA4LCAyNTQsIDI1MCwgMjQ5LCAxLCAyMDEsIDcyLCA0MCwgMjA4LCAKKyAgICAyNTQsIDI1MCwgMjQ5LCAxLCAyMTAsIDIxLCA0MCwgMjA4LCAyNTQsIDI1MCwgMjQ5LCAxLCAyMTMsIDEyMywgNDAsIDIwOCwgCisgICAgMjU0LCAyNTAsIDI0OSwgMSwgMjQ4LCAyMDcsIDQwLCAyMDgsIDI1NCwgMjUwLCAyNDksIDEsIDIwNiwgMjE1LCA0MCwgMjA4LCAKKyAgICAyNTQsIDI1MCwgMjQ5LCAxLCAyMTEsIDI1MSwgNDAsIDIwOCwgMjU0LCAyNTAsIDI0OSwgMSwgMjI3LCA1NywgNDAsIDIwOCwgCisgICAgMjU0LCAyNTAsIDI0OSwgMSwgMjE4LCA4OSwgNDAsIDIwOCwgMjU0LCAyNTAsIDI0OSwgMSwgMjI2LCAxODksIDQwLCAyMDgsIAorICAgIDI1NCwgMjUwLCAyNDksIDEsIDIxMiwgNTQsIDQwLCAyMDgsIDI1NCwgMjUwLCAyNDksIDEsIDIxMiwgMTksIDQwLCAyMDgsIAorICAgIDI1NCwgMjUwLCAyNDksIDEsIDIzNywgMTQ3LCA0MCwgMjA4LCAyNTQsIDI1MCwgMjQ5LCAxLCAyNTEsIDE0MiwgNDAsIDIwOCwgCisgICAgMjU0LCAyNTAsIDI0OSwgMSwgMjUwLCAxMDYsIDQwLCAyMDgsIDI1NCwgMjUwLCAyNDksIDEsIDI0MSwgOTcsIDQwLCAyMDgsIAorICAgIDI1NCwgMjUwLCAyNDksIDEsIDIzNSwgMTQ3LCA0MCwgMjA4LCAyNTQsIDI1MCwgMjQ5LCAxLCAyNDIsIDIyLCA0MCwgMjA4LCAKKyAgICAyNTQsIDI1MCwgMjQ5LCAxLCAyMzUsIDE4NywgNDAsIDIwOCwgMjU0LCAyNTAsIDI0OSwgMSwgMjA2LCAxNDIsIDQwLCAyMDgsIAorICAgIDI1NCwgMjUwLCAyNDksIDEsIDE5OSwgOTEsIDQwLCAyMDgsIDI1NCwgMjUwLCAyNDksIDEsIDI0MSwgOTQsIDQwLCAyMDgsIAorICAgIDI1NCwgMjUwLCAyNDksIDEsIDE5OSwgMjMzLCA0MCwgMjA4LCAyNTQsIDI1MCwgMjQ5LCAxLCAyMDYsIDEwOCwgNDAsIDIwOCwgCisgICAgMjU0LCAyNTAsIDI0OSwgMSwgMjA2LCA4NywgNDAsIDIwOCwgMjU0LCAyNTAsIDI0OSwgNDEsIDEwMiwgNDAsIDIwOCwgMjU0LCAKKyAgICAyNTAsIDI0OSwgNDEsIDIzNywgMTA0LCA0MCwgMjA4LCAyNTQsIDI1MCwgMjQ5LCAxNDUsIDIyOCwgOTksIDQwLCAxNTcsIAorICAgIDI1MCwgMjQ5LCAxLCAyMzQsIDExNSwgNDAsIDE1NywgMjUwLCAyNDksIDEsIDIyNSwgOTEsIDQwLCAxNTcsIDI1MCwgMjQ5LCAKKyAgICAxLCAyMzQsIDIyNCwgNDAsIDE1NywgMjUwLCAyNDksIDEsIDIyMiwgNjEsIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAyMTQsIAorICAgIDE1MiwgNDAsIDE1NywgMjUwLCAyNDksIDEsIDIwMSwgNzIsIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAyMzgsIDEwMiwgNDAsIAorICAgIDE1NywgMjUwLCAyNDksIDEsIDIxMywgMTU0LCA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgMjQ4LCAyNDAsIDQwLCAxNTcsIDI1MCwgCisgICAgMjQ5LCAxLCAyMDYsIDE4MywgNDAsIDE1NywgMjUwLCAyNDksIDEsIDIzOCwgMTAzLCA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgCisgICAgMjI3LCA4NiwgNDAsIDE1NywgMjUwLCAyNDksIDEsIDIxOCwgMjI3LCA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgMjI2LCAyMDMsIAorICAgIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAyMTIsIDU2LCA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgMjM4LCAxMDEsIDQwLCAxNTcsIAorICAgIDI1MCwgMjQ5LCAxLCAyMzcsIDEzNCwgNDAsIDE1NywgMjUwLCAyNDksIDEsIDI1MSwgMTQyLCA0MCwgMTU3LCAyNTAsIDI0OSwgCisgICAgMSwgMjUxLCAxNzEsIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAyNDIsIDUyLCA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgMjM2LCA2LCAKKyAgICA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgMjQyLCAyOSwgNDAsIDE1NywgMjUwLCAyNDksIDEsIDIzNSwgMTk0LCA0MCwgMTU3LCAKKyAgICAyNTAsIDI0OSwgMSwgMjA3LCA5LCA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgMTk5LCAxMDUsIDQwLCAxNTcsIDI1MCwgMjQ5LCAKKyAgICAxLCAyMDYsIDExNCwgNDAsIDE1NywgMjUwLCAyNDksIDEsIDIwMCwgNDYsIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAyMDYsIAorICAgIDEwMiwgNDAsIDE1NywgMjUwLCAyNDksIDEsIDE5OSwgMTA4LCA0MCwgMTU3LCAyNTAsIDI0OSwgNDEsIDEwMiwgNDAsIDE1NywgCisgICAgMjUwLCAyNDksIDQxLCAyMDYsIDE2NiwgNDAsIDE1NywgMjUwLCAyNDksIDQxLCAyMDQsIDE1OSwgMjIyLCAxNzMsIDEsIAorICAgIDI1MSwgMTQwLCAyMjIsIDE3MywgMSwgMjQ4LCAyMDcsIDIyMiwgMTczLCAxLCAyNDgsIDE5NCwgMjIyLCAxNzMsIDEsIDIzNSwgCisgICAgMTQ3LCAyMjIsIDE3MywgMSwgMjM1LCAxNzIsIDIyMiwgMTczLCAxLCAyNDIsIDIyLCAyMjIsIDE3MywgMSwgMjM0LCAxMzksIAorICAgIDIyMiwgMTczLCAxLCAyMDEsIDcyLCAyMjIsIDE3MywgMiwgMjA0LCAzNiwgMjIyLCAxNzMsIDEsIDE5OSwgOTIsIDIyMiwgCisgICAgMTczLCAxLCAxOTksIDcwLCAyMjIsIDE3MywgMSwgMjI3LCAyMjksIDIyMiwgMTczLCAxLCAyMjcsIDIxMSwgMjIyLCAxNzMsIAorICAgIDEsIDIzNCwgOTEsIDIyMiwgMTczLCAxLCAyMDYsIDE0MiwgMjIyLCAxNzMsIDEsIDE5OSwgMjMzLCAyMjIsIDE3MywgMSwgCisgICAgMjI3LCA1NywgMjIyLCAxNzMsIDEsIDIwMCwgMTc4LCAyMjIsIDE3MywgMSwgMjI2LCAxOTYsIDIyMiwgMTczLCAxLCAyMjUsIAorICAgIDgyLCAyMjIsIDE3MywgMSwgMjQxLCA5MywgMjIyLCAxNzMsIDEsIDIwNiwgMTEzLCAyMjIsIDE3MywgMSwgMjIyLCA0NywgCisgICAgMjIyLCAxNzMsIDEsIDIxOCwgODksIDIyMiwgMTczLCAxLCAyMTIsIDE5LCAyMjIsIDE3MywgMSwgMjUwLCAxMDcsIDIyMiwgCisgICAgMTczLCAxLCAyNTIsIDkxLCAyMjIsIDE3MywgMSwgMjE2LCA3MywgMjIyLCAxNzMsIDEsIDIzNywgMTQ3LCAyMjIsIDE3MywgCisgICAgMSwgMjEyLCA1NCwgMjIyLCAxNzMsIDEsIDIxNCwgMTAxLCAyMjIsIDE3MywgMSwgMjAwLCAxNTYsIDIyMiwgMTczLCAxLCAKKyAgICAyMTQsIDEyOCwgMjIyLCAxNzMsIDEsIDIxMywgMTIzLCAyMjIsIDE3MywgMSwgMjEwLCAyMSwgMjIyLCAxNzMsIDEsIDIwOCwgCisgICAgMTQ4LCAyMjIsIDE3MywgMSwgMjA2LCAyMTUsIDIyMiwgMTczLCAyNTIsIDMsIDEzNCwgNTYsIDIyMiwgMTczLCAyNTIsIDMsIAorICAgIDEzNCwgNTcsIDIyMiwgMTczLCA0MSwgMTAyLCAyMjIsIDE3MywgNDEsIDE2NCwgMjIyLCAxNzMsIDQxLCAyMDYsIDE2NiwgCisgICAgMjIyLCAxNzMsIDQxLCAyMDQsIDE1OSwgMjIyLCAxNzMsIDQxLCAxMTIsIDIzMywgODIsIDIyMiwgMTczLCAyMTQsIDIxMiwgCisgICAgMjA4LCAxMDksIDIyMiwgMTczLCAyMTQsIDIxMiwgMjM3LCAzOSwgMjIyLCAxNzMsIDIxNCwgMjEyLCA1MywgNzMsIDIwMSwgCisgICAgNSwgMjQwLCAxODIsIDIyMiwgMTczLCAyMTQsIDIxMiwgNzMsIDIwMSwgNSwgMjQwLCAxODIsIDIyMiwgMTczLCAyMTQsIAorICAgIDIxMiwgMjQwLCAxODIsIDIyMiwgMTczLCAyMTQsIDIxMiwgMTIwLCAyNDAsIDE4MCwgMjIyLCAxNzMsIDIxNCwgMjEyLCAKKyAgICAyMjQsIDE3NywgMjM3LCA5MywgMjUwLCAxMTksIDEsIDYyLCAyNTAsIDExOSwgMSwgMjUyLCAxMzgsIDI1MCwgMTE5LCAxLCAKKyAgICAyNTEsIDMxLCAyNTAsIDExOSwgMSwgMjUyLCA5NywgMjUwLCAxMTksIDEsIDI1MSwgODUsIDI1MCwgMTE5LCAxLCAyNTIsIAorICAgIDk4LCAyNTAsIDExOSwgMSwgMjUxLCAyMjEsIDI1MCwgMTE5LCAxLCAyNTEsIDIxNywgMjUwLCAxMTksIDEsIDcyLCAyNTAsIAorICAgIDExOSwgMSwgMjM4LCAyNTUsIDI1MCwgMTE5LCAxLCA3NCwgMjUwLCAxMTksIDEsIDIxNywgNjMsIDI1MCwgMTE5LCAxLCA3MCwgCisgICAgMjUwLCAxMTksIDEsIDIyOCwgMTUxLCAyNTAsIDExOSwgMSwgNjYsIDI1MCwgMTE5LCAxLCAyMDMsIDE4MiwgMjUwLCAxMTksIAorICAgIDEsIDIyNywgOCwgMjUwLCAxMTksIDEsIDIwMCwgMTc1LCAyNTAsIDExOSwgMSwgMjAwLCAxMzcsIDI1MCwgMTE5LCAxLCAKKyAgICAyMDAsIDE0NywgMjUwLCAxMTksIDEsIDIzNiwgMTUsIDI1MCwgMTE5LCAxLCAyMzUsIDIzMCwgMjUwLCAxMTksIDEsIDIzNSwgCisgICAgMTg1LCAyNTAsIDExOSwgMSwgMjQ3LCA3NiwgMjUwLCAxMTksIDEsIDIyNywgMjI3LCAyNTAsIDExOSwgMSwgMjA2LCAyMDEsIAorICAgIDI1MCwgMTE5LCAxLCAyMDYsIDEwNiwgMjUwLCAxMTksIDEsIDI0MSwgMTc1LCAyNTAsIDExOSwgMSwgMjQxLCA5MSwgMjUwLCAKKyAgICAxMTksIDEsIDIwNCwgMjQ4LCAyNTAsIDExOSwgMSwgMjE2LCA3MywgMjUwLCAxMTksIDEsIDIzNywgMTQ3LCAyNTAsIDExOSwgCisgICAgMSwgMjQ5LCA4LCAyNTAsIDExOSwgMSwgMjQ4LCAxOTYsIDI1MCwgMTE5LCAxLCAyMTksIDI0MCwgMjUwLCAxMTksIDEsIAorICAgIDIxOSwgMTU2LCAyNTAsIDExOSwgMSwgMjE5LCAxNTcsIDI1MCwgMTE5LCAxLCAyMjAsIDM0LCAyNTAsIDExOSwgMSwgMjE4LCAKKyAgICA1MCwgMjUwLCAxMTksIDEsIDIxOSwgMTYsIDI1MCwgMTE5LCAxLCAyMjIsIDc2LCAyNTAsIDExOSwgMSwgMjM0LCAxLCAyNTAsIAorICAgIDExOSwgMSwgMTk5LCAxNjQsIDI1MCwgMTE5LCAxLCAyMDAsIDUxLCAyNTAsIDExOSwgMSwgMjAzLCA1OSwgMjUwLCAxMTksIAorICAgIDEsIDIxMywgMTkwLCAyNTAsIDExOSwgMSwgMjI1LCA0MCwgMjUwLCAxMTksIDEsIDIxMSwgMjAyLCAyNTAsIDExOSwgMSwgCisgICAgMTk5LCA4OSwgMjUwLCAxMTksIDEsIDIxMCwgNjUsIDI1MCwgMTE5LCAxLCAxOTksIDY4LCAyNTAsIDExOSwgMSwgMjA5LCAKKyAgICAxODksIDI1MCwgMTE5LCAxLCAyMDgsIDE0OSwgMjUwLCAxMTksIDEsIDIzNCwgMTM5LCAyNTAsIDExOSwgMjUyLCAzLCA4MSwgCisgICAgMjA1LCAyMjYsIDEyMCwgMTkwLCAxMTksIDExMiwgNzMsIDIxNCwgMjExLCA0LCAxMjAsIDE5MCwgMTE5LCAxMTIsIDczLCAKKyAgICAyMTQsIDIxMSwgMjI1LCA3MSwgMTIwLCAxOTAsIDExOSwgMTEyLCA3MywgMjE0LCAyMTEsIDIyNSwgNzEsIDExMiwgNzMsIAorICAgIDExOSwgMTIwLCAxOTAsIDIxNCwgMjExLCAyMjUsIDcxLCAxMjAsIDIxMywgMjQsIDExOSwgMTEyLCAyMTMsIDI3LCAyMTQsIAorICAgIDIxMSwgMjI1LCA3MSwgMTEyLCAyMTMsIDI3LCAxMTksIDEyMCwgMjEzLCAyNCwgMjE0LCAyMTEsIDIyOCwgNzcsIDIxNiwgCisgICAgMTA5LCAxLCAyNTEsIDE0MCwgMjI4LCA3NywgMjE2LCAxMDksIDEsIDI0OCwgMjA3LCAyMjgsIDc3LCAyMTYsIDEwOSwgMSwgCisgICAgMjM1LCAxNDcsIDIyOCwgNzcsIDIxNiwgMTA5LCAxLCAyNDIsIDIyLCAyMjgsIDc3LCAyMTYsIDEwOSwgMSwgMjM0LCAxMzksIAorICAgIDIyOCwgNzcsIDIxNiwgMTA5LCAxLCAyMDEsIDcyLCAyMjgsIDc3LCAyMTYsIDEwOSwgMSwgMTk5LCA5MiwgMjI4LCA3NywgCisgICAgMjE2LCAxMDksIDEsIDIzNCwgOTEsIDIyOCwgNzcsIDIxNiwgMTA5LCAxLCAyMDYsIDE0MiwgMjI4LCA3NywgMjE2LCAxMDksIAorICAgIDEsIDE5OSwgMjMzLCAyMjgsIDc3LCAyMTYsIDEwOSwgMSwgMjI3LCA1NywgMjI4LCA3NywgMjE2LCAxMDksIDEsIDIyNSwgCisgICAgODIsIDIyOCwgNzcsIDIxNiwgMTA5LCAxLCAyMjIsIDQ3LCAyMjgsIDc3LCAyMTYsIDEwOSwgMSwgMjE4LCA4OSwgMjI4LCAKKyAgICA3NywgMjE2LCAxMDksIDEsIDIxMiwgMTksIDIyOCwgNzcsIDIxNiwgMTA5LCAxLCAyNTAsIDEwNywgMjI4LCA3NywgMjE2LCAKKyAgICAxMDksIDEsIDIxNiwgNzMsIDIyOCwgNzcsIDIxNiwgMTA5LCAxLCAyMTIsIDU0LCAyMjgsIDc3LCAyMTYsIDEwOSwgMSwgCisgICAgMjE0LCAxMDEsIDIyOCwgNzcsIDIxNiwgMTA5LCAxLCAyMTMsIDEyMywgMjI4LCA3NywgMjE2LCAxMDksIDEsIDIxMCwgMjEsIAorICAgIDIyOCwgNzcsIDIxNiwgMTA5LCAxLCAyMDYsIDIxNSwgMjI4LCA3NywgMjE2LCAxMDksIDQxLCAxMDIsIDIyOCwgNzcsIDIxNiwgCisgICAgMTA5LCA0MSwgMTA1LCAyMjgsIDc3LCAyMTYsIDEwOSwgNDEsIDE0NywgMjI4LCA3NywgMjE2LCAxMDksIDQxLCAxNDksIAorICAgIDIyOCwgNzcsIDIxNiwgMTA5LCA0MSwgMjA2LCAxNjYsIDIyOCwgNzcsIDIxNiwgMTA5LCA0MSwgMjA0LCAxNTksIDIyOCwgCisgICAgNzcsIDIxNiwgMTA5LCA0MSwgMTEyLCAyMzMsIDgyLCAyMjgsIDc3LCAyMTYsIDEwOSwgNDEsIDExMiwgMjA2LCA1MCwgMjI4LCAKKyAgICA3NywgMjE2LCAxOTEsIDEsIDI1MSwgMTQwLCAyMjgsIDc3LCAyMTYsIDE5MSwgMSwgMjQ4LCAyMDcsIDIyOCwgNzcsIDIxNiwgCisgICAgMTkxLCAxLCAyMzUsIDE0NywgMjI4LCA3NywgMjE2LCAxOTEsIDEsIDI0MiwgMjIsIDIyOCwgNzcsIDIxNiwgMTkxLCAxLCAKKyAgICAyMzQsIDEzOSwgMjI4LCA3NywgMjE2LCAxOTEsIDEsIDIwMSwgNzEsIDIyOCwgNzcsIDIxNiwgMTkxLCAxLCAxOTksIDkyLCAKKyAgICAyMjgsIDc3LCAyMTYsIDE5MSwgMSwgMjM0LCA5MSwgMjI4LCA3NywgMjE2LCAxOTEsIDEsIDIwNiwgMTQyLCAyMjgsIDc3LCAKKyAgICAyMTYsIDE5MSwgMSwgMTk5LCAyMzMsIDIyOCwgNzcsIDIxNiwgMTkxLCAxLCAyMjcsIDU3LCAyMjgsIDc3LCAyMTYsIDE5MSwgCisgICAgMSwgMjI1LCA4MiwgMjI4LCA3NywgMjE2LCAxOTEsIDEsIDIyMiwgNDYsIDIyOCwgNzcsIDIxNiwgMTkxLCAxLCAyMTgsIDg5LCAKKyAgICAyMjgsIDc3LCAyMTYsIDE5MSwgMSwgMjEyLCAxOSwgMjI4LCA3NywgMjE2LCAxOTEsIDEsIDIxNiwgNzMsIDIyOCwgNzcsIAorICAgIDIxNiwgMTkxLCAxLCAyMTIsIDU0LCAyMjgsIDc3LCAyMTYsIDE5MSwgMSwgMjEwLCAyMSwgMjI4LCA3NywgMjE2LCAxOTEsIAorICAgIDEsIDIwNiwgMjE1LCAyMjgsIDc3LCAyMTYsIDE5MSwgNDEsIDEwMiwgMjI4LCA3NywgMjE2LCAxOTEsIDQxLCAxMDUsIDIyOCwgCisgICAgNzcsIDIxNiwgMTkxLCA0MSwgMTQ3LCAyMjgsIDc3LCAyMTYsIDE5MSwgNDEsIDE0OSwgMjI4LCA3NywgMjE2LCAxOTEsIDQxLCAKKyAgICAyMDYsIDE2NiwgMjI4LCA3NywgMjE2LCAxOTEsIDQxLCAyMDQsIDE1OSwgMjI4LCA3NywgMjE2LCAxOTEsIDQxLCAxMTIsIAorICAgIDIzMywgODIsIDIyOCwgNzcsIDIxNiwgMTkxLCA0MSwgMTEyLCAyMDYsIDUwLCAyMTQsIDIzNiwgMjE2LCAxOTEsIDEsIDI1MSwgCisgICAgMTQwLCAyMTQsIDIzNiwgMjE2LCAxOTEsIDEsIDI0OCwgMjA3LCAyMTQsIDIzNiwgMjE2LCAxOTEsIDEsIDIzNSwgMTQ3LCAKKyAgICAyMTQsIDIzNiwgMjE2LCAxOTEsIDEsIDI0MiwgMjIsIDIxNCwgMjM2LCAyMTYsIDE5MSwgMSwgMjM0LCAxMzksIDIxNCwgCisgICAgMjM2LCAyMTYsIDE5MSwgMSwgMjAxLCA3MSwgMjE0LCAyMzYsIDIxNiwgMTkxLCAxLCAxOTksIDkyLCAyMTQsIDIzNiwgMjE2LCAKKyAgICAxOTEsIDEsIDIzNCwgOTEsIDIxNCwgMjM2LCAyMTYsIDE5MSwgMSwgMTk5LCAyMzMsIDIxNCwgMjM2LCAyMTYsIDE5MSwgMSwgCisgICAgMjI3LCA1NywgMjE0LCAyMzYsIDIxNiwgMTkxLCAxLCAyMjUsIDgyLCAyMTQsIDIzNiwgMjE2LCAxOTEsIDEsIDIyMiwgNDYsIAorICAgIDIxNCwgMjM2LCAyMTYsIDE5MSwgMSwgMjE4LCA4OSwgMjE0LCAyMzYsIDIxNiwgMTkxLCAxLCAyMTIsIDE5LCAyMTQsIDIzNiwgCisgICAgMjE2LCAxOTEsIDEsIDIxNiwgNzMsIDIxNCwgMjM2LCAyMTYsIDE5MSwgMSwgMjEyLCA1NCwgMjE0LCAyMzYsIDIxNiwgMTkxLCAKKyAgICAxLCAyMTAsIDIxLCAyMTQsIDIzNiwgMjE2LCAxOTEsIDEsIDIwNiwgMjE1LCAyMTQsIDIzNiwgMjE2LCAxOTEsIDIxMSwgCisgICAgMTkzLCA4MSwgMjE0LCAyMzYsIDIxNiwgMTkxLCAyMDQsIDE4NSwgMjExLCAxOTMsIDgxLCAyMTQsIDIzNiwgMjE2LCAxOTEsIAorICAgIDIzNiwgMjI5LCAxOTAsIDMsIDI0MiwgMjM0LCAyMTQsIDIzNiwgMjE2LCAxOTEsIDIzNiwgMjI5LCAxOTAsIDMsIDI0MCwgCisgICAgMTgyLCAyMTQsIDIzNiwgMjE2LCAxOTEsIDQxLCAxMDIsIDIxNCwgMjM2LCAyMTYsIDE5MSwgNDEsIDEwNSwgMjE0LCAyMzYsIAorICAgIDIxNiwgMTkxLCA0MSwgMTQ3LCAyMTQsIDIzNiwgMjE2LCAxOTEsIDQxLCAxNDksIDIxNCwgMjM2LCAyMTYsIDE5MSwgNDEsIAorICAgIDIwNiwgMTY2LCAyMTQsIDIzNiwgMjE2LCAxOTEsIDQxLCAyMDQsIDE1OSwgMjE0LCAyMzYsIDIxNiwgMTkxLCA0MSwgMTEyLCAKKyAgICAyMzMsIDgyLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDYyLCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIDYyLCA0MCwgCisgICAgMjA0LCAxODksIDEsIDIwMCwgMzksIDI1MSwgMjIxLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDcwLCA0MCwgMjA0LCAKKyAgICAxODksIDEsIDIwMCwgMzksIDcwLCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIDcyLCA0MCwgMjA0LCAxODksIDEsIDIxNywgCisgICAgMjMsIDc0LCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDIxNywgMTIxLCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIAorICAgIDIxNywgMTIxLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDI1MiwgODksIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgCisgICAgMjUyLCA4OSwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyNTEsIDIyMCwgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAKKyAgICAyNTEsIDIyMCwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyNTEsIDE5MywgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAKKyAgICAyNTEsIDE5MywgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyNTEsIDIxNSwgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAKKyAgICAyNTEsIDIxNSwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyNTEsIDIzNSwgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAKKyAgICAyNTEsIDIzNSwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyNTEsIDIxOSwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAKKyAgICAyMzgsIDEyLCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIDIzOCwgMTIsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgCisgICAgMjUwLCAxMTIsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjUwLCAxMTIsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgCisgICAgMjUxLCAyMDIsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjUxLCAyMDIsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgCisgICAgMjUxLCAyMTMsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjUxLCAyMTMsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgCisgICAgMjE3LCAxMTksIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjE3LCAxMTksIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgCisgICAgMjUxLCAxNTEsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjUxLCAxNTEsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgCisgICAgMjUxLCAyMTIsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjM4LCAxOTMsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgCisgICAgMjM4LCAxOTAsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjUxLCA4NSwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAKKyAgICAyNTEsIDIxMCwgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAyNTEsIDIxMCwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAKKyAgICAyMzgsIDE1NywgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAyMzgsIDE1NywgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAKKyAgICAyMzgsIDE3NiwgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAyMzgsIDE3NiwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAKKyAgICAyMzgsIDE0MywgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAyMzgsIDE0MywgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAKKyAgICAyNTEsIDc2LCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDIzOCwgMTY1LCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIAorICAgIDI1MSwgMjA5LCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDIzOCwgMTMzLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIAorICAgIDIxNywgNTQsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjMyLCAyMzMsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgCisgICAgMjM5LCA3LCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIDIzOSwgNywgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyNTEsIAorICAgIDEsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjUxLCAxLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDIyOCwgMzcsIAorICAgIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjI4LCAzNywgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyMTcsIDM1LCA0MCwgCisgICAgMjA0LCAxODksIDEsIDIwMCwgMzksIDIxNywgMzUsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjUwLCAyNTMsIDQwLCAKKyAgICAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjUwLCAyNTMsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjUxLCAyMDgsIDQwLCAKKyAgICAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjUwLCAxODgsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjUxLCAyMDYsIDQwLCAKKyAgICAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjUwLCAxODEsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjUwLCAxODEsIDQwLCAKKyAgICAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjM4LCA5NCwgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAyMzgsIDk0LCA0MCwgCisgICAgMjA0LCAxODksIDEsIDIxNywgMjMsIDI1MCwgMTU1LCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIDI1MCwgMTU1LCA0MCwgCisgICAgMjA0LCAxODksIDEsIDIxNywgMjMsIDI1MSwgMjAzLCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIDI1MSwgMjAzLCA0MCwgCisgICAgMjA0LCAxODksIDEsIDIxNywgMjMsIDIxNywgMTEsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjQ5LCA2MSwgNDAsIAorICAgIDE1MiwgNiwgMSwgNjIsIDQwLCAxNTIsIDYsIDEsIDI1MiwgMTM4LCA0MCwgMTUyLCA2LCAxLCAyMzksIDksIDQwLCAxNTIsIAorICAgIDYsIDEsIDI1MSwgOTYsIDQwLCAxNTIsIDYsIDEsIDIzOSwgNywgNDAsIDE1MiwgNiwgMSwgMjM4LCAxNzYsIDQwLCAxNTIsIAorICAgIDYsIDEsIDIzOSwgNCwgNDAsIDE1MiwgNiwgMSwgMjM5LCAzLCA0MCwgMTUyLCA2LCAxLCAyNTEsIDc5LCA0MCwgMTUyLCA2LCAKKyAgICAxLCA3MiwgNDAsIDE1MiwgNiwgMSwgMjQ2LCAxMTEsIDcyLCA0MCwgMTUyLCA2LCAxLCAyMzgsIDI1NSwgNDAsIDE1MiwgNiwgCisgICAgMSwgMjM4LCAyNDgsIDQwLCAxNTIsIDYsIDEsIDIzOCwgMjQ3LCA0MCwgMTUyLCA2LCAxLCAyMzgsIDI0NCwgNDAsIDE1MiwgCisgICAgNiwgMSwgMjM4LCAyNDEsIDQwLCAxNTIsIDYsIDEsIDcwLCA0MCwgMTUyLCA2LCAxLCAyMjgsIDE1MSwgNDAsIDE1MiwgNiwgCisgICAgMSwgMjM4LCAyMTksIDQwLCAxNTIsIDYsIDEsIDIzOCwgMjE2LCA0MCwgMTUyLCA2LCAxLCAyNTEsIDE1OSwgNDAsIDE1MiwgCisgICAgNiwgMSwgMjAzLCAyMzYsIDQwLCAxNTIsIDYsIDEsIDIzOCwgMjA5LCA0MCwgMTUyLCA2LCAxLCAyMzgsIDE5MiwgNDAsIAorICAgIDE1MiwgNiwgMSwgMjM4LCAxOTAsIDQwLCAxNTIsIDYsIDEsIDIzOCwgMTc5LCA0MCwgMTUyLCA2LCAxLCAyMzgsIDE0MywgCisgICAgNDAsIDE1MiwgNiwgMSwgNzQsIDQwLCAxNTIsIDYsIDEsIDIxNywgNjMsIDQwLCAxNTIsIDYsIDEsIDIxOSwgMTIxLCAyMTcsIAorICAgIDEyMSwgNDAsIDE1MiwgNiwgMSwgMjEyLCAxNzEsIDIxNywgMTIxLCA0MCwgMTUyLCA2LCAxLCAyMTcsIDEyMCwgNDAsIDE1MiwgCisgICAgNiwgMSwgMjM4LCAxMzMsIDQwLCAxNTIsIDYsIDEsIDIzOCwgMTg0LCA0MCwgMTUyLCA2LCAxLCAyMzgsIDExNSwgNDAsIAorICAgIDE1MiwgNiwgMSwgMjA5LCAyNTAsIDIzOCwgMTE1LCA0MCwgMTUyLCA2LCAxLCAyMzgsIDEwNCwgNDAsIDE1MiwgNiwgMSwgCisgICAgMjM4LCA4MywgNDAsIDE1MiwgNiwgMSwgMjM4LCA4MSwgNDAsIDE1MiwgNiwgMSwgMjM4LCAxNTcsIDQwLCAxNTIsIDYsIDEsIAorICAgIDIzOCwgNzAsIDQwLCAxNTIsIDYsIDEsIDIzOSwgNSwgNDAsIDE1MiwgNiwgMSwgNjYsIDQwLCAxNTIsIDYsIDEsIDIwMywgCisgICAgMTgyLCA0MCwgMTUyLCA2LCAxLCAyMTksIDEyMSwgMjA0LCAzMSwgNDAsIDE1MiwgNiwgMSwgMjEyLCAxNzEsIDIwNCwgMzEsIAorICAgIDQwLCAxNTIsIDYsIDEsIDIzOCwgNTcsIDQwLCAxNTIsIDYsIDEsIDIzOCwgMTIsIDQwLCAxNTIsIDYsIDEsIDIzOCwgNywgCisgICAgNDAsIDE1MiwgNiwgMSwgMjM4LCAxNTYsIDU0LCA0MCwgMTUyLCA2LCAxLCAyMDMsIDE5NywgNDAsIDE1MiwgNCwgMSwgNjIsIAorICAgIDQwLCAxNTIsIDQsIDEsIDI1MiwgMTM4LCA0MCwgMTUyLCA0LCAxLCAyMzksIDksIDQwLCAxNTIsIDQsIDEsIDI1MSwgOTYsIAorICAgIDQwLCAxNTIsIDQsIDEsIDIzOSwgNywgNDAsIDE1MiwgNCwgMSwgMjM4LCAxNzYsIDQwLCAxNTIsIDQsIDEsIDIzOSwgNCwgCisgICAgNDAsIDE1MiwgNCwgMSwgMjM5LCAzLCA0MCwgMTUyLCA0LCAxLCAyNTEsIDc5LCA0MCwgMTUyLCA0LCAxLCA3MiwgNDAsIAorICAgIDE1MiwgNCwgMSwgMjQ2LCAxMTEsIDcyLCA0MCwgMTUyLCA0LCAxLCAyMzgsIDI1NSwgNDAsIDE1MiwgNCwgMSwgMjM4LCAKKyAgICAyNDgsIDQwLCAxNTIsIDQsIDEsIDIzOCwgMjQ3LCA0MCwgMTUyLCA0LCAxLCAyMzgsIDI0NCwgNDAsIDE1MiwgNCwgMSwgCisgICAgMjM4LCAyNDEsIDQwLCAxNTIsIDQsIDEsIDcwLCA0MCwgMTUyLCA0LCAxLCAyMjgsIDE1MSwgNDAsIDE1MiwgNCwgMSwgMjM4LCAKKyAgICAyMTksIDQwLCAxNTIsIDQsIDEsIDIzOCwgMjE2LCA0MCwgMTUyLCA0LCAxLCAyNTEsIDE1OSwgNDAsIDE1MiwgNCwgMSwgCisgICAgMjAzLCAyMzYsIDQwLCAxNTIsIDQsIDEsIDIzOCwgMjA5LCA0MCwgMTUyLCA0LCAxLCAyMzgsIDE5MiwgNDAsIDE1MiwgNCwgCisgICAgMSwgMjM4LCAxOTAsIDQwLCAxNTIsIDQsIDEsIDIzOCwgMTc5LCA0MCwgMTUyLCA0LCAxLCAyMzgsIDE0MywgNDAsIDE1MiwgCisgICAgNCwgMSwgNzQsIDQwLCAxNTIsIDQsIDEsIDIxNywgNjMsIDQwLCAxNTIsIDQsIDEsIDIxOSwgMTIxLCAyMTcsIDEyMSwgNDAsIAorICAgIDE1MiwgNCwgMSwgMjEyLCAxNzEsIDIxNywgMTIxLCA0MCwgMTUyLCA0LCAxLCAyMTcsIDEyMCwgNDAsIDE1MiwgNCwgMSwgCisgICAgMjM4LCAxMzMsIDQwLCAxNTIsIDQsIDEsIDIzOCwgMTg0LCA0MCwgMTUyLCA0LCAxLCAyMzgsIDExNSwgNDAsIDE1MiwgNCwgCisgICAgMSwgMjA5LCAyNTAsIDIzOCwgMTE1LCA0MCwgMTUyLCA0LCAxLCAyMzgsIDEwNCwgNDAsIDE1MiwgNCwgMSwgMjM4LCA4MywgCisgICAgNDAsIDE1MiwgNCwgMSwgMjM4LCA4MSwgNDAsIDE1MiwgNCwgMSwgMjM4LCAxNTcsIDQwLCAxNTIsIDQsIDEsIDIzOCwgNzAsIAorICAgIDQwLCAxNTIsIDQsIDEsIDIzOSwgNSwgNDAsIDE1MiwgNCwgMSwgNjYsIDQwLCAxNTIsIDQsIDEsIDIwMywgMTgyLCA0MCwgCisgICAgMTUyLCA0LCAxLCAyMTksIDEyMSwgMjA0LCAzMSwgNDAsIDE1MiwgNCwgMSwgMjEyLCAxNzEsIDIwNCwgMzEsIDQwLCAxNTIsIAorICAgIDQsIDEsIDIzOCwgNTcsIDQwLCAxNTIsIDQsIDEsIDIzOCwgMTIsIDQwLCAxNTIsIDQsIDEsIDIzOCwgNywgNDAsIDE1MiwgNCwgCisgICAgMSwgMjM4LCAxNTYsIDU0LCA0MCwgMTUyLCA0LCAxLCAyMDMsIDE5NywgNDAsIDE1MiwgNDEsIDEwMiwgNDAsIDE1MiwgNDEsIAorICAgIDE2NCwgNDAsIDE1MiwgNDEsIDIwNiwgMTY2LCA0MCwgMTUyLCA0MSwgMjM3LCAxMDQsIDQwLCAxNTIsIDQxLCAxMTIsIDIzMywgCisgICAgODIsIDQwLCAxNTIsIDQxLCAxMTIsIDIwNiwgNTAsIDIxMiwgMTU5LCAxNywgMTAyLCAyMTIsIDE1OSwgMTcsIDEwNSwgMjEyLCAKKyAgICAxNTksIDE3LCAxNDcsIDIxMiwgMTU5LCAxNywgMTQ5LCAyMTIsIDE1OSwgMTcsIDE2NCwgMjEyLCAxNTksIDE3LCAxODcsIAorICAgIDIxMiwgMTU5LCAxNywgMjEwLCAxMzUsIDIxMiwgMTU5LCAxNywgMTkyLCAyMTIsIDE1OSwgMTcsIDIxOSwgMTEzLCAyMTIsIAorICAgIDE1OSwgNDEsIDIwNiwgMTY2LCAyMTIsIDE1OSwgNDEsIDIwNCwgMTU5LCAyMTIsIDE1OSwgNDEsIDIwNiwgNjcsIDIxMiwgCisgICAgMTU5LCA0MSwgMjM2LCAyMzUsIDIxMiwgMTU5LCA0MSwgMjM3LCAxMDQsIDIxMiwgMTU5LCA0MSwgMjA5LCA5MiwgMjEyLCAKKyAgICAxNTksIDQxLCAyMTAsIDEyOSwgMjEyLCAxNTksIDQxLCAyMzgsIDIyMiwgMjEyLCAxNTksIDQxLCAyMTksIDEwOCwgMjEyLCAKKyAgICAxNTksIDQxLCAxMTIsIDIzMywgODIsIDIxMiwgMTU5LCA0MSwgMTIwLCAyMzMsIDgyLCAyMTIsIDE1OSwgNDEsIDEyNiwgCisgICAgMjMzLCA4MiwgMjEyLCAxNTksIDQxLCAyMzYsIDIyOSwgMjMzLCA4MiwgMjEyLCAxNTksIDQxLCAyMzcsIDYxLCAyMzMsIDgyLCAKKyAgICAyMTIsIDE1OSwgNDEsIDIwOSwgMTA2LCAyMzMsIDgyLCAyMTIsIDE1OSwgNDEsIDIxMCwgMTM2LCAyMzMsIDgyLCAyMTIsIAorICAgIDE1OSwgNDEsIDIzOCwgMjMyLCAyMzMsIDgyLCAyMTIsIDE1OSwgNDEsIDIxOSwgMTE0LCAyMzMsIDgyLCAyMTIsIDE1OSwgCisgICAgMjM2LCAyMTksIDExMiwgMjM0LCAyMTMsIDIxMiwgMTU5LCAyMzYsIDIxOSwgMTEyLCAyMTQsIDg3LCAyMTIsIDE1OSwgMjM2LCAKKyAgICAyMTksIDExMiwgMjA2LCA3NCwgMjEyLCAxNTksIDIzNiwgMjE5LCAxMjAsIDIwNiwgNzEsIDE1MSwgMiwgMjQ3LCAxNDksIAorICAgIDE1MSwgMiwgMjUxLCAzMywgMTUxLCAyLCAyMDIsIDIwMywgMTUxLCAyLCAyMjcsIDIwMSwgMTUxLCAyLCAyMDMsIDIyNiwgCisgICAgMTUxLCAxLCA2MiwgMTUxLCAxLCAyNTIsIDEzOCwgMTUxLCAxLCA3MCwgMTUxLCAxLCAyMjgsIDE1MSwgMTUxLCAxLCA2NiwgCisgICAgMTUxLCAxLCAyMDMsIDE4MiwgMTUxLCAxLCAxMDksIDE0NiwgMTUxLCAxLCAxMDksIDIxMiwgMjE2LCAxNTEsIDEsIDEwOSwgCisgICAgMTU2LCAxNTEsIDEsIDEwOSwgMjI0LCAxMzksIDE1MSwgMSwgNzIsIDE1MSwgMSwgMjUxLCAxNzYsIDE1MSwgMSwgNzQsIAorICAgIDE1MSwgMSwgMjUwLCAxMzksIDE1MSwgMSwgMTYxLCAxNTEsIDEsIDIyNiwgMjA3LCAxNTEsIDEsIDIzNiwgODksIDE1MSwgMSwgCisgICAgMjM1LCAxOTksIDE1MSwgMSwgMjE5LCAyNTMsIDE1MSwgMSwgMjQ3LCAxOTAsIDE1MSwgMSwgMjQ3LCAzNywgMTUxLCAxLCAKKyAgICAyMjcsIDI0OCwgMTUxLCAxLCAyMjcsIDIxNSwgMTUxLCAxLCAyMTgsIDYwLCAxNTEsIDEsIDIwNCwgMjUzLCAxNTEsIDEsIAorICAgIDIwNCwgMjQxLCAxNTEsIDEsIDI0MSwgMjIwLCAxNTEsIDEsIDI0MSwgMjA0LCAxNTEsIDEsIDIxOSwgMjEsIDE1MSwgMSwgCisgICAgMjA3LCAzNiwgMTUxLCAxLCAyMDYsIDEyMiwgMTUxLCAxLCAyNDIsIDU4LCAxNTEsIDEsIDI0MSwgMTAwLCAxNTEsIDEsIAorICAgIDE4OCwgMTUxLCAxLCAxNzIsIDE1MSwgMSwgMjE1LCAyNDUsIDE1MSwgMSwgMjQ5LCAxMzYsIDE1MSwgMSwgMjQ4LCAyMDAsIAorICAgIDE1MSwgMSwgMTc4LCAxNTEsIDEsIDE4MywgMTUxLCAxLCAyMTMsIDI1MiwgMTUxLCAxLCAxOTQsIDE1MSwgMSwgMjAzLCA5MCwgCisgICAgMTUxLCAxLCAyMTAsIDExNCwgMTUxLCAxLCAyMDgsIDE3OSwgMTUxLCAxLCAyMTIsIDY0LCAxNTEsIDEsIDE0NCwgMTUxLCAxLCAKKyAgICAyMjQsIDEzOCwgMTUxLCAxLCA0MCwgNDUsIDIyNCwgMTI5LCAxNTEsIDEsIDQwLCA0NSwgMjEyLCAyMTUsIDE1MSwgMSwgNDAsIAorICAgIDQ1LCAyMTksIDMsIDE1MSwgMjIsIDIsIDI1MiwgMTM4LCAxNTEsIDIyLCAyLCAyNDgsIDE5NywgMjUyLCAxMzgsIDE1MSwgCisgICAgMjIsIDIsIDcwLCAxNTEsIDIyLCAyLCAyMjgsIDE1MSwgMTUxLCAyMiwgMiwgNjYsIDE1MSwgMjIsIDIsIDIwMywgMTgyLCAKKyAgICAxNTEsIDIyLCAyLCAxMDksIDE0NiwgMTUxLCAyMiwgMiwgMTA5LCAyMTIsIDIxNiwgMTUxLCAyMiwgMiwgMTA5LCAxNTYsIAorICAgIDE1MSwgMjIsIDIsIDEwOSwgMjI0LCAxMzksIDE1MSwgMjIsIDIsIDcyLCAxNTEsIDIyLCAyLCAyNTEsIDE3NiwgMTUxLCAyMiwgCisgICAgMiwgNzQsIDE1MSwgMjIsIDIsIDI1MCwgMTM5LCAxNTEsIDIwMiwgMjA4LCAxNTEsIDI0MiwgMTAsIDE1MSwgNTMsIDI0MiwgCisgICAgMTAsIDE1MSwgMjE0LCAyMTIsIDI0MCwgMTgyLCAxNTEsIDIxNCwgMjEyLCA1MywgMjQwLCAxODIsIDE1MSwgMjE0LCAyMTIsIAorICAgIDIyNCwgMTc2LCAxNTEsIDIxNCwgMjEyLCAyNDIsIDI0NCwgMTQ4LCAxNTEsIDIxNCwgMjEyLCAyMjQsIDY0LCAxNTEsIDQxLCAKKyAgICAxMDIsIDE1MSwgNDEsIDEwNSwgMTUxLCA0MSwgMTQ3LCAxNTEsIDQxLCAxNDksIDE1MSwgNDEsIDE2NCwgMTUxLCA0MSwgCisgICAgMTg3LCAxNTEsIDQxLCAyMTAsIDEzNSwgMTUxLCA0MSwgMTkyLCAxNTEsIDQxLCAyMTksIDExMywgMTUxLCA0MSwgMjA2LCAKKyAgICAxNjYsIDE1MSwgNDEsIDIwNCwgMTU5LCAxNTEsIDQxLCAyMDYsIDY3LCAxNTEsIDQxLCAyMzYsIDIzNSwgMTUxLCA0MSwgCisgICAgMjM3LCAxMDQsIDE1MSwgNDEsIDIwOSwgOTIsIDE1MSwgNDEsIDIxMCwgMTI5LCAxNTEsIDQxLCAyMzgsIDIyMiwgMTUxLCAKKyAgICA0MSwgMjE5LCAxMDgsIDE1MSwgNDEsIDExMiwgMjMzLCA4MiwgMTUxLCA0MSwgMTEyLCAyMDYsIDUwLCAxNTEsIDE3LCAxOTksIAorICAgIDgxLCAxNTEsIDE3LCAxMDIsIDE1MSwgMTcsIDEwNSwgMTUxLCAxNywgMTQ3LCAxNTEsIDE3LCAxNDksIDE1MSwgMTcsIDE2NCwgCisgICAgMTUxLCAxNywgMTg3LCAxNTEsIDE3LCAyMTAsIDEzNSwgMTUxLCAxNywgMTkyLCAxNTEsIDE3LCAyMTksIDExMywgMTUxLCAKKyAgICA0MSwgMjI3LCAxNjEsIDIyNywgNzksIDIsIDI0NywgMTQ5LCAyMjcsIDc5LCAyLCAyNTEsIDMzLCAyMjcsIDc5LCAyLCAyMDIsIAorICAgIDIwMywgMjI3LCA3OSwgMSwgNjIsIDIyNywgNzksIDEsIDI1MiwgMTM4LCAyMjcsIDc5LCAxLCA3MCwgMjI3LCA3OSwgMSwgCisgICAgMjI4LCAxNTEsIDIyNywgNzksIDEsIDY2LCAyMjcsIDc5LCAxLCAyMDMsIDE4MiwgMjI3LCA3OSwgMSwgNzIsIDIyNywgNzksIAorICAgIDEsIDI1MSwgMTc2LCAyMjcsIDc5LCAxLCA3NCwgMjI3LCA3OSwgMSwgMjUwLCAxMzksIDIyNywgNzksIDEsIDE2MSwgMjI3LCAKKyAgICA3OSwgMSwgMjI2LCAyMDcsIDIyNywgNzksIDEsIDIzNiwgODksIDIyNywgNzksIDEsIDIzNSwgMTk5LCAyMjcsIDc5LCAxLCAKKyAgICAyMTksIDI1MywgMjI3LCA3OSwgMSwgMjQ3LCAxOTAsIDIyNywgNzksIDEsIDI0NywgMzcsIDIyNywgNzksIDEsIDIyNywgCisgICAgMjQ4LCAyMjcsIDc5LCAxLCAyMjcsIDIxNSwgMjI3LCA3OSwgMSwgMjE4LCA2MCwgMjI3LCA3OSwgMSwgMjA0LCAyNTMsIAorICAgIDIyNywgNzksIDEsIDIwNCwgMjQxLCAyMjcsIDc5LCAxLCAyNDEsIDIyMCwgMjI3LCA3OSwgMSwgMjQxLCAyMDksIDIyNywgCisgICAgNzksIDEsIDI0MSwgMjA0LCAyMjcsIDc5LCAxLCAyMTMsIDkzLCAyMjcsIDc5LCAxLCAyMTksIDIxLCAyMjcsIDc5LCAxLCAKKyAgICAyMDcsIDM2LCAyMjcsIDc5LCAxLCAyMDYsIDEyMiwgMjI3LCA3OSwgMSwgMjQyLCA1OCwgMjI3LCA3OSwgMSwgMjQxLCAxMDAsIAorICAgIDIyNywgNzksIDEsIDE4OCwgMjI3LCA3OSwgMSwgMTcyLCAyMjcsIDc5LCAxLCAyMTUsIDI0NSwgMjI3LCA3OSwgMSwgMjQ5LCAKKyAgICAxMzYsIDIyNywgNzksIDEsIDI0OCwgMjAwLCAyMjcsIDc5LCAxLCAxNzgsIDIyNywgNzksIDEsIDE4MywgMjI3LCA3OSwgMSwgCisgICAgMjEzLCAyNTIsIDIyNywgNzksIDEsIDE5NCwgMjI3LCA3OSwgMSwgMjAzLCA5MCwgMjI3LCA3OSwgMSwgMjEwLCAxMTQsIAorICAgIDIyNywgNzksIDEsIDIwOCwgMTc5LCAyMjcsIDc5LCAxLCAyMTIsIDY0LCAyMjcsIDc5LCAxLCAxNDQsIDIyNywgNzksIDIyLCAKKyAgICAyLCAyNTIsIDEzOCwgMjI3LCA3OSwgMjIsIDIsIDcwLCAyMjcsIDc5LCAyMiwgMiwgMjI4LCAxNTEsIDIyNywgNzksIDIyLCAKKyAgICAyLCA2NiwgMjI3LCA3OSwgMjIsIDIsIDIwMywgMTgyLCAyMjcsIDc5LCAyMiwgMiwgNzIsIDIyNywgNzksIDIyLCAyLCAyNTEsIAorICAgIDE3NiwgMjI3LCA3OSwgMjIsIDIsIDc0LCAyMjcsIDc5LCAyMiwgMiwgMjUwLCAxMzksIDIyNywgNzksIDIsIDIwMiwgMjA4LCAKKyAgICAyMjcsIDc5LCAyLCAyMTgsIDEwMCwgMjI3LCA3OSwgMjUyLCAzLCA1NCwgMjI3LCA3OSwgMjM4LCAxNDYsIDU0LCAyMjcsIAorICAgIDc5LCA0MSwgNTQsIDIyNywgNzksIDIxMSwgMTkzLCA4MSwgMjI3LCA3OSwgNTMsIDIxMSwgMTkzLCA4MSwgMjI3LCA3OSwgCisgICAgMjQyLCAxMCwgMjI3LCA3OSwgNTMsIDI0MiwgMTAsIDIwOSwgNiwgMjA5LCAxNCwgMSwgMjEyLCA0NywgMjA5LCA2LCAyMDksIAorICAgIDE0LCAxLCAyMDcsIDksIDIwOSwgNiwgMjA5LCAxNCwgMSwgMjQ5LCAxMDcsIDIwOSwgNiwgMjA5LCAxNCwgMSwgMjQ3LCAKKyAgICAxNzksIDIwOSwgNiwgMjA5LCAxNCwgMSwgMjQyLCAzOCwgMjA5LCA2LCAyMDksIDE0LCAxLCAyMzYsIDc0LCAyMDksIDYsIAorICAgIDIwOSwgMTQsIDEsIDIyMiwgMjA2LCAyMDksIDYsIDIwOSwgMTQsIDEsIDIxOSwgMjUwLCAyMDksIDYsIDIwOSwgMTQsIDEsIAorICAgIDIyNSwgMTUyLCAyMDksIDYsIDIwOSwgMTQsIDEsIDIyMCwgMTQ0LCAyMDksIDYsIDIwOSwgMTQsIDEsIDIwMywgODYsIDIwOSwgCisgICAgNiwgMjA5LCAxNCwgMSwgMjE2LCAxOTIsIDIwOSwgNiwgMjA5LCAxNCwgMSwgMjAwLCA5MCwgMjA5LCA2LCAyMDksIDE0LCAxLCAKKyAgICAyMTMsIDIzMSwgMjA5LCA2LCAyMDksIDE0LCAxLCAyMzQsIDIyNCwgMjA5LCA2LCAyMDksIDE0LCAxLCAyMjcsIDg0LCAyMDksIAorICAgIDYsIDIwOSwgMTQsIDEsIDIyNywgMjQyLCAyMDksIDYsIDIwOSwgMTQsIDEsIDIxOCwgNTcsIDIwOSwgNiwgMjA5LCAxNCwgMSwgCisgICAgMjUxLCAxODUsIDIwOSwgNiwgMjA5LCAxNCwgMSwgMjM4LCAyNTMsIDIwOSwgNiwgMjA5LCAxNCwgMSwgMjI4LCAxNTIsIAorICAgIDIwOSwgNiwgMjA5LCAxNCwgMSwgMjA0LCAyNSwgMjA5LCA2LCAyMDksIDE0LCAxLCAyMTcsIDEwOCwgMjA5LCA2LCAyMDksIAorICAgIDE0LCAxLCAyMzgsIDI0MSwgMjA5LCA2LCAyMDksIDE0LCAxLCAyMjIsIDIxOSwgMjA5LCA2LCAyMDksIDE0LCAxNywgMTk5LCAKKyAgICA4MSwgMjA5LCA2LCAyMDksIDE0LCAxNywgMTAyLCAyMDksIDYsIDIwOSwgMTQsIDE3LCAxMDUsIDIwOSwgNiwgMjA5LCAxNCwgCisgICAgMTcsIDE0NywgMjA5LCA2LCAyMDksIDE0LCAxNywgMTQ5LCAyMDksIDYsIDIwOSwgMTQsIDE3LCAxNjQsIDIwOSwgNiwgMjA5LCAKKyAgICAxNCwgMTcsIDE4NywgMjA5LCA2LCAyMDksIDE0LCAxNywgMjEwLCAxMzUsIDIwOSwgNiwgMjA5LCAxNCwgMTcsIDE5MiwgCisgICAgMjA5LCA2LCAyMDksIDE0LCAxNywgMjE5LCAxMTMsIDI0NywgMzEsIDIsIDI0NywgMTQ5LCAyNDcsIDMxLCAyLCAyNTEsIDMzLCAKKyAgICAyNDcsIDMxLCAyLCAyMDIsIDIwMywgMjQ3LCAzMSwgMSwgMjUyLCAxMzgsIDI0NywgMzEsIDEsIDcwLCAyNDcsIDMxLCAxLCAKKyAgICA2NiwgMjQ3LCAzMSwgMSwgNzIsIDI0NywgMzEsIDEsIDIyNywgMTA1LCAyNDcsIDMxLCAxLCAyMjYsIDIwNiwgMjQ3LCAzMSwgCisgICAgMSwgMjM2LCA4NiwgMjQ3LCAzMSwgMSwgMjM1LCAxOTgsIDI0NywgMzEsIDEsIDIxOSwgMjUyLCAyNDcsIDMxLCAxLCAyNDcsIAorICAgIDE4OSwgMjQ3LCAzMSwgMSwgMjQ3LCAzNiwgMjQ3LCAzMSwgMSwgMjI3LCAyNDcsIDI0NywgMzEsIDEsIDIyNywgMjE0LCAKKyAgICAyNDcsIDMxLCAxLCAyMTgsIDU5LCAyNDcsIDMxLCAxLCAyMDQsIDI1MiwgMjQ3LCAzMSwgMSwgMjA0LCAyNDAsIDI0NywgMzEsIAorICAgIDEsIDI0MSwgMjE5LCAyNDcsIDMxLCAxLCAyNDEsIDIwMywgMjQ3LCAzMSwgMSwgMjE5LCAyMCwgMjQ3LCAzMSwgMSwgMjA3LCAKKyAgICAzMiwgMjQ3LCAzMSwgMSwgMjA2LCAxMjEsIDI0NywgMzEsIDEsIDI0MiwgNTcsIDI0NywgMzEsIDEsIDI0MSwgOTksIDI0NywgCisgICAgMzEsIDEsIDIyMCwgMTU3LCAyNDcsIDMxLCAxLCAyMTYsIDIxMCwgMjQ3LCAzMSwgMSwgMjE1LCAyNDQsIDI0NywgMzEsIDEsIAorICAgIDI0OSwgMTM0LCAyNDcsIDMxLCAxLCAyNDgsIDE5OSwgMjQ3LCAzMSwgMSwgMjIyLCAyMzMsIDI0NywgMzEsIDEsIDE5OSwgCisgICAgMTY1LCAyNDcsIDMxLCAxLCAyMDAsIDEwOSwgMjQ3LCAzMSwgMSwgMjEzLCAyNDgsIDI0NywgMzEsIDEsIDIyNSwgMTc1LCAKKyAgICAyNDcsIDMxLCAxLCAyMDEsIDExMywgMjQ3LCAzMSwgMSwgMjEyLCA2MSwgMjQ3LCAzMSwgMSwgMjM0LCAyMzMsIDI0NywgMzEsIAorICAgIDIyLCAyLCA2MiwgMjQ3LCAzMSwgMjIsIDIsIDcwLCAyNDcsIDMxLCAyMiwgMiwgMjI4LCAxNTEsIDI0NywgMzEsIDIyLCAyLCAKKyAgICA2NiwgMjQ3LCAzMSwgMjIsIDIsIDIwMywgMTgyLCAyNDcsIDMxLCAyMiwgMiwgNzIsIDI0NywgMzEsIDIyLCAyLCAyNTEsIAorICAgIDE3NiwgMjQ3LCAzMSwgMjIsIDIsIDc0LCAyNDcsIDMxLCAyMiwgMiwgMjUwLCAxMzksIDI0NywgMzEsIDIyLCAyLCAyMTcsIAorICAgIDEwNSwgMjQ3LCAzMSwgMTYzLCA4MSwgMjQ3LCAzMSwgMjUwLCAxNDAsIDgxLCAyNDcsIDMxLCAyMDIsIDIwOCwgMjQ3LCAzMSwgCisgICAgMjIyLCAyMzEsIDI0NywgMzEsIDE3LCAxOTksIDgxLCAyNDcsIDMxLCAxNywgMTAyLCAyNDcsIDMxLCAxNywgMTA1LCAyNDcsIAorICAgIDMxLCAxNywgMTQ3LCAyNDcsIDMxLCAxNywgMTQ5LCAyNDcsIDMxLCAxNywgMTY0LCAyNDcsIDMxLCAxNywgMTg3LCAyNDcsIAorICAgIDMxLCAxNywgMjEwLCAxMzUsIDI0NywgMzEsIDE3LCAxOTIsIDI0NywgMzEsIDE3LCAyMTksIDExMywgMjQ3LCAzMSwgMjExLCAKKyAgICAxOTMsIDgxLCAyNDcsIDMxLCAyNDIsIDEwLCAyNDcsIDMxLCA1MywgMjQyLCAxMCwgMjQ3LCAzMSwgMjE0LCA3OSwgODEsIAorICAgIDIyMiwgMjA0LCAxLCA2MiwgMjIyLCAyMDQsIDEsIDcwLCAyMjIsIDIwNCwgMSwgNjYsIDIyMiwgMjA0LCAxLCA3MiwgMjIyLCAKKyAgICAyMDQsIDEsIDc0LCAyMjIsIDIwNCwgMSwgMTYxLCAyMjIsIDIwNCwgMSwgMjI2LCAyMDcsIDIyMiwgMjA0LCAxLCAyMzYsIAorICAgIDg5LCAyMjIsIDIwNCwgMSwgMjM1LCAxOTksIDIyMiwgMjA0LCAxLCAyNDcsIDE5MCwgMjIyLCAyMDQsIDEsIDI0NywgMzcsIAorICAgIDIyMiwgMjA0LCAxLCAyMjcsIDI0OCwgMjIyLCAyMDQsIDEsIDIyNywgMjE1LCAyMjIsIDIwNCwgMSwgMjE4LCA2MCwgMjIyLCAKKyAgICAyMDQsIDEsIDIwNCwgMjUzLCAyMjIsIDIwNCwgMSwgMjA0LCAyNDEsIDIyMiwgMjA0LCAxLCAyNDEsIDIyMCwgMjIyLCAyMDQsIAorICAgIDEsIDI0MSwgMjA0LCAyMjIsIDIwNCwgMSwgMjE5LCAyMSwgMjIyLCAyMDQsIDEsIDIwNywgMzYsIDIyMiwgMjA0LCAxLCAKKyAgICAyMDYsIDEyMiwgMjIyLCAyMDQsIDEsIDI0MiwgNTgsIDIyMiwgMjA0LCAxLCAyNDEsIDEwMCwgMjIyLCAyMDQsIDEsIDE4OCwgCisgICAgMjIyLCAyMDQsIDEsIDE3MiwgMjIyLCAyMDQsIDEsIDIxNSwgMjQ1LCAyMjIsIDIwNCwgMSwgMjQ5LCAxMzYsIDIyMiwgMjA0LCAKKyAgICAxLCAyNDgsIDIwMCwgMjIyLCAyMDQsIDEsIDE3OCwgMjIyLCAyMDQsIDEsIDIxMywgMjUyLCAyMjIsIDIwNCwgMSwgMTk0LCAKKyAgICAyMjIsIDIwNCwgMSwgMjAzLCA5MCwgMjIyLCAyMDQsIDEsIDIxMiwgNjQsIDIyMiwgMjA0LCAxLCAxNDQsIDIyMiwgMjA0LCAKKyAgICAxLCAyMTIsIDIxNSwgMjIyLCAyMDQsIDIsIDIxOCwgMTAwLCAyMjIsIDIwNCwgMjUyLCAzLCA1NCwgMjIyLCAyMDQsIDIxMSwgCisgICAgMTkzLCA4MSwgMjIyLCAyMDQsIDMzLCAyMDksIDIyOCwgMTg2LCAyLCAyNDcsIDE0OSwgMTg2LCAyLCAyNTEsIDMzLCAxODYsIAorICAgIDIsIDIwMiwgMjAzLCAxODYsIDEsIDYyLCAxODYsIDEsIDI1MiwgMTM4LCAxODYsIDEsIDcwLCAxODYsIDEsIDIyOCwgMTUxLCAKKyAgICAxODYsIDEsIDY2LCAxODYsIDEsIDIwMywgMTgyLCAxODYsIDEsIDEwOSwgMTQ2LCAxODYsIDEsIDEwOSwgMjEyLCAyMTYsIAorICAgIDE4NiwgMSwgMTA5LCAxNTYsIDE4NiwgMSwgMTA5LCAyMjQsIDEzOSwgMTg2LCAxLCA3MiwgMTg2LCAxLCAyNTEsIDE3NiwgCisgICAgMTg2LCAxLCA3NCwgMTg2LCAxLCAyNTAsIDEzOSwgMTg2LCAxLCAxNjEsIDE4NiwgMSwgMjI2LCAyMDcsIDE4NiwgMSwgMjM2LCAKKyAgICA4OSwgMTg2LCAxLCAyMzUsIDE5OSwgMTg2LCAxLCAyMTksIDI1MywgMTg2LCAxLCAyNDcsIDE5MCwgMTg2LCAxLCAyNDcsIAorICAgIDM3LCAxODYsIDEsIDIyNywgMjQ4LCAxODYsIDEsIDIyNywgMjE1LCAxODYsIDEsIDIxOCwgNjAsIDE4NiwgMSwgMjA0LCAKKyAgICAyNTMsIDE4NiwgMSwgMjA0LCAyNDEsIDE4NiwgMSwgMjQxLCAyMjAsIDE4NiwgMSwgMjQxLCAyMDQsIDE4NiwgMSwgMjE5LCAKKyAgICAyMSwgMTg2LCAxLCAyMDcsIDM2LCAxODYsIDEsIDIwNiwgMTIyLCAxODYsIDEsIDI0MiwgNTgsIDE4NiwgMSwgMjQxLCAxMDAsIAorICAgIDE4NiwgMSwgMTg4LCAxODYsIDEsIDE3MiwgMTg2LCAxLCAyMTUsIDI0NSwgMTg2LCAxLCAyNDksIDEzNiwgMTg2LCAxLCAKKyAgICAyNDgsIDIwMCwgMTg2LCAxLCAxNzgsIDE4NiwgMSwgMTgzLCAxODYsIDEsIDIxMywgMjUyLCAxODYsIDEsIDE5NCwgMTg2LCAKKyAgICAxLCAyMjQsIDEzOCwgMTg2LCAxLCAyMDMsIDkwLCAxODYsIDEsIDIxMCwgMTE0LCAxODYsIDEsIDIwOCwgMTc5LCAxODYsIDEsIAorICAgIDIxMiwgNjQsIDE4NiwgMSwgMTQ0LCAxODYsIDIyLCAyLCAyNTIsIDEzOCwgMTg2LCAyMiwgMiwgNzAsIDE4NiwgMjIsIDIsIAorICAgIDIyOCwgMTUxLCAxODYsIDIyLCAyLCA2NiwgMTg2LCAyMiwgMiwgMjAzLCAxODIsIDE4NiwgMjIsIDIsIDEwOSwgMTQ2LCAKKyAgICAxODYsIDIyLCAyLCAxMDksIDIxMiwgMjE2LCAxODYsIDIyLCAyLCAxMDksIDE1NiwgMTg2LCAyMiwgMiwgMTA5LCAyMjQsIAorICAgIDEzOSwgMTg2LCAyMiwgMiwgNzIsIDE4NiwgMjIsIDIsIDI1MSwgMTc2LCAxODYsIDIyLCAyLCA3NCwgMTg2LCAyMiwgMiwgCisgICAgMjUwLCAxMzksIDE4NiwgMiwgMjAyLCAyMDgsIDE4NiwgMiwgMjUwLCAxMjIsIDE4NiwgMiwgMjI3LCAyMDEsIDE4NiwgMiwgCisgICAgMjAzLCAyMjYsIDE4NiwgMjE3LCA4NiwgMTg2LCAyNDIsIDEwLCAxODYsIDUzLCAyNDIsIDEwLCAxODYsIDI1MiwgMywgNTQsIAorICAgIDE4NiwgMjEwLCAxNTQsIDE4NiwgMjEyLCA5LCA4MSwgMTg2LCAyLCAyMTgsIDEwMCwgMTg2LCAyMiwgNjcsIDgxLCAxODYsIAorICAgIDIzOCwgMzAsIDIwOSwgMjUwLCAyMiwgODEsIDE4NiwgMjA3LCAxOTQsIDgxLCAxODYsIDE3LCAxOTksIDgxLCAxODYsIDE3LCAKKyAgICAxMDIsIDE4NiwgMTcsIDEwNSwgMTg2LCAxNywgMTQ3LCAxODYsIDE3LCAxNDksIDE4NiwgMTcsIDE2NCwgMTg2LCAxNywgCisgICAgMTg3LCAxODYsIDE3LCAyMTAsIDEzNSwgMTg2LCAxNywgMTkyLCAxODYsIDE3LCAyMTksIDExMywgMTg2LCAyMzgsIDIxNSwgCisgICAgMTg2LCAyLCAyMDksIDE3NywgMTg2LCAyMzQsIDEzMCwgMTg2LCAyNDMsIDQxLCA1NCwgMTg2LCAyMTEsIDE5MywgMjIyLCAKKyAgICAxNDksIDE4NiwgMjExLCAxOTMsIDIyMiwgMTQ4LCAxNDMsIDI1MCwgMjM0LCAxNywgMTAyLCAxNDMsIDI1MCwgMjM0LCAxNywgCisgICAgMTA1LCAxNDMsIDI1MCwgMjM0LCAxNywgMTQ3LCAxNDMsIDI1MCwgMjM0LCAxNywgMTQ5LCAxNDMsIDI1MCwgMjM0LCAxNywgCisgICAgMTY0LCAxNDMsIDI1MCwgMjM0LCAxNywgMTg3LCAxNDMsIDI1MCwgMjM0LCAxNywgMjEwLCAxMzUsIDE0MywgMjUwLCAyMzQsIAorICAgIDE3LCAxOTIsIDE0MywgMjUwLCAyMzQsIDE3LCAyMTksIDExMywgMTQzLCAyNTAsIDIzNCwgNDEsIDIwNiwgMTY2LCAxNDMsIAorICAgIDI1MCwgMjM0LCA0MSwgMjA0LCAxNTksIDE0MywgMjUwLCAyMzQsIDQxLCAyMDYsIDY3LCAxNDMsIDI1MCwgMjM0LCA0MSwgCisgICAgMjM2LCAyMzUsIDE0MywgMjUwLCAyMzQsIDQxLCAyMzcsIDEwNCwgMTQzLCAyNTAsIDIzNCwgNDEsIDIwOSwgOTIsIDE0MywgCisgICAgMjUwLCAyMzQsIDQxLCAyMTAsIDEyOSwgMTQzLCAyNTAsIDIzNCwgNDEsIDIzOCwgMjIyLCAxNDMsIDI1MCwgMjM0LCA0MSwgCisgICAgMjE5LCAxMDgsIDE0MywgMjUwLCAyMzQsIDQxLCAxMTIsIDIzMywgODIsIDE0MywgMjUwLCAyMzQsIDQxLCAxMTIsIDIwNiwgCisgICAgNTAsIDIyNiwgMTc3LCAxLCA2MiwgMjI2LCAxNzcsIDEsIDI1MiwgMTM4LCAyMjYsIDE3NywgMSwgNzAsIDIyNiwgMTc3LCAxLCAKKyAgICA2NiwgMjI2LCAxNzcsIDEsIDcyLCAyMjYsIDE3NywgMSwgMjUxLCAxNzYsIDIyNiwgMTc3LCAxLCA3NCwgMjI2LCAxNzcsIDEsIAorICAgIDI1MCwgMTM5LCAyMjYsIDE3NywgMSwgMTYxLCAyMjYsIDE3NywgMSwgMjI2LCAyMDcsIDIyNiwgMTc3LCAxLCAyMzYsIDg5LCAKKyAgICAyMjYsIDE3NywgMSwgMjM1LCAyMzUsIDIyNiwgMTc3LCAxLCAyMzUsIDE5OSwgMjI2LCAxNzcsIDEsIDIxOSwgMjUzLCAyMjYsIAorICAgIDE3NywgMSwgMjQ3LCAxOTAsIDIyNiwgMTc3LCAxLCAyNDcsIDM3LCAyMjYsIDE3NywgMSwgMjI3LCAyNDgsIDIyNiwgMTc3LCAKKyAgICAxLCAyMjcsIDE5NCwgMjI2LCAxNzcsIDEsIDIxOCwgNjAsIDIyNiwgMTc3LCAxLCAyMDQsIDI1MywgMjI2LCAxNzcsIDEsIAorICAgIDIwNCwgMjQxLCAyMjYsIDE3NywgMSwgMjQxLCAyMjAsIDIyNiwgMTc3LCAxLCAyNDEsIDIwNCwgMjI2LCAxNzcsIDEsIDIxOSwgCisgICAgMjEsIDIyNiwgMTc3LCAxLCAyMDcsIDM2LCAyMjYsIDE3NywgMSwgMjA2LCAxMjIsIDIyNiwgMTc3LCAxLCAyNDIsIDU4LCAKKyAgICAyMjYsIDE3NywgMSwgMjQxLCAyMTAsIDIyNiwgMTc3LCAxLCAyNDEsIDEwMCwgMjI2LCAxNzcsIDEsIDE4OCwgMjI2LCAxNzcsIAorICAgIDEsIDE3MiwgMjI2LCAxNzcsIDEsIDIxNSwgMjQ1LCAyMjYsIDE3NywgMSwgMjQ5LCAxMzYsIDIyNiwgMTc3LCAxLCAyNDksIAorICAgIDQ0LCAyMjYsIDE3NywgMSwgMjQ4LCAyMDAsIDIyNiwgMTc3LCAxLCAxNzgsIDIyNiwgMTc3LCAxLCAxODMsIDIyNiwgMTc3LCAKKyAgICAxLCAyMTMsIDI1MiwgMjI2LCAxNzcsIDEsIDE5NCwgMjI2LCAxNzcsIDEsIDIwMywgOTAsIDIyNiwgMTc3LCAxLCAyMTIsIAorICAgIDY0LCAyMjYsIDE3NywgMSwgMTQ0LCAyMjYsIDE3NywgMSwgMjI0LCAxMzgsIDIyNiwgMTc3LCAyMiwgMiwgMjUyLCAxMzgsIAorICAgIDIyNiwgMTc3LCAyMiwgMiwgNzAsIDIyNiwgMTc3LCAyMiwgMiwgMjI4LCAxNTEsIDIyNiwgMTc3LCAyMiwgMiwgNjYsIDIyNiwgCisgICAgMTc3LCAyMiwgMiwgNzIsIDIyNiwgMTc3LCAyMiwgMiwgMjUxLCAxNzYsIDIyNiwgMTc3LCAyMiwgMiwgNzQsIDIyNiwgMTc3LCAKKyAgICAyMiwgMiwgMjUwLCAxMzksIDIyNiwgMTc3LCAyLCAyNTEsIDMzLCAyMjYsIDE3NywgMiwgMjAyLCAyMDgsIDIyNiwgMTc3LCAKKyAgICAyLCAyMTgsIDEwMCwgMjI2LCAxNzcsIDIsIDIxMCwgMTA0LCAyMjYsIDE3NywgMjQyLCAxMCwgMjI2LCAxNzcsIDUzLCAyNDIsIAorICAgIDEwLCAyMjYsIDE3NywgMjAwLCAyMzgsIDIxMCwgMTU0LCAyMjYsIDE3NywgMjExLCAxOTMsIDgxLCAyMjYsIDE3NywgNTMsIAorICAgIDIxMSwgMTkzLCA4MSwgMjI2LCAxNzcsIDI1MiwgMywgNTQsIDIyNiwgMTc3LCAyLCAyMDcsIDIzNiwgMjIxLCAyNSwgMSwgCisgICAgNjIsIDIyMSwgMjUsIDEsIDcwLCAyMjEsIDI1LCAxLCA2NiwgMjIxLCAyNSwgMSwgNzIsIDIyMSwgMjUsIDEsIDE2MSwgMjIxLCAKKyAgICAyNSwgMSwgMjI2LCAyMDcsIDIyMSwgMjUsIDEsIDIzNiwgODksIDIyMSwgMjUsIDEsIDIzNSwgMTk5LCAyMjEsIDI1LCAxLCAKKyAgICAyNDcsIDE5MCwgMjIxLCAyNSwgMSwgMjQ3LCAzNywgMjIxLCAyNSwgMSwgMjI3LCAyNDgsIDIyMSwgMjUsIDEsIDIyNywgCisgICAgMTk0LCAyMjEsIDI1LCAxLCAyMTgsIDYwLCAyMjEsIDI1LCAxLCAyMDQsIDI1MywgMjIxLCAyNSwgMSwgMjA0LCAyNDEsIAorICAgIDIyMSwgMjUsIDEsIDI0MSwgMjIwLCAyMjEsIDI1LCAxLCAyNDEsIDIxMCwgMjIxLCAyNSwgMSwgMjQxLCAyMDQsIDIyMSwgCisgICAgMjUsIDEsIDIxOSwgMjEsIDIyMSwgMjUsIDEsIDIwNywgMzYsIDIyMSwgMjUsIDEsIDIwNiwgMTIyLCAyMjEsIDI1LCAxLCAKKyAgICAyNDIsIDU4LCAyMjEsIDI1LCAxLCAyNDEsIDEwMCwgMjIxLCAyNSwgMSwgMTg4LCAyMjEsIDI1LCAxLCAxNzIsIDIyMSwgMjUsIAorICAgIDEsIDIxNSwgMjQ1LCAyMjEsIDI1LCAxLCAyNDksIDEzNiwgMjIxLCAyNSwgMSwgMjQ4LCAyMDAsIDIyMSwgMjUsIDEsIDE3OCwgCisgICAgMjIxLCAyNSwgMSwgMTgzLCAyMjEsIDI1LCAxLCAyMTMsIDI1MiwgMjIxLCAyNSwgMSwgMTk0LCAyMjEsIDI1LCAxLCAyMDMsIAorICAgIDkwLCAyMjEsIDI1LCAxLCAyMTIsIDY0LCAyMjEsIDI1LCAxLCAxNDQsIDIyMSwgMjUsIDEsIDIxMiwgMjE1LCAyMjEsIDI1LCAKKyAgICAxLCAyMTMsIDkzLCAyMjEsIDI1LCAyMTEsIDE5MywgODEsIDIyNiwgMTY5LCAxLCA2MiwgMjI2LCAxNjksIDEsIDI1MiwgCisgICAgMTM4LCAyMjYsIDE2OSwgMSwgNzAsIDIyNiwgMTY5LCAxLCAyMjgsIDE1MSwgMjI2LCAxNjksIDEsIDY2LCAyMjYsIDE2OSwgCisgICAgMSwgMjAzLCAxODIsIDIyNiwgMTY5LCAxLCA3MiwgMjI2LCAxNjksIDEsIDI1MSwgMTc2LCAyMjYsIDE2OSwgMSwgNzQsIAorICAgIDIyNiwgMTY5LCAxLCAyNTAsIDEzOSwgMjI2LCAxNjksIDEsIDE2MSwgMjI2LCAxNjksIDEsIDIyNiwgMjA3LCAyMjYsIDE2OSwgCisgICAgMSwgMjM2LCA4OSwgMjI2LCAxNjksIDEsIDIzNSwgMjM1LCAyMjYsIDE2OSwgMSwgMjM1LCAxOTksIDIyNiwgMTY5LCAxLCAKKyAgICAyMTksIDI1MywgMjI2LCAxNjksIDEsIDI0NywgMTkwLCAyMjYsIDE2OSwgMSwgMjQ3LCAzNywgMjI2LCAxNjksIDEsIDIyNywgCisgICAgMjQ4LCAyMjYsIDE2OSwgMSwgMjI3LCAxOTQsIDIyNiwgMTY5LCAxLCAyMjcsIDIxNSwgMjI2LCAxNjksIDEsIDIxOCwgNjAsIAorICAgIDIyNiwgMTY5LCAxLCAyMDQsIDI1MywgMjI2LCAxNjksIDEsIDIwNCwgMjQxLCAyMjYsIDE2OSwgMSwgMjQxLCAyMjAsIDIyNiwgCisgICAgMTY5LCAxLCAyNDEsIDIxMCwgMjI2LCAxNjksIDEsIDIxMiwgMjE1LCAyMjYsIDE2OSwgMSwgMjQxLCAyMDQsIDIyNiwgMTY5LCAKKyAgICAxLCAyMTksIDIxLCAyMjYsIDE2OSwgMSwgMjA3LCAzNiwgMjI2LCAxNjksIDEsIDIwNiwgMTIyLCAyMjYsIDE2OSwgMSwgCisgICAgMjQyLCA1OCwgMjI2LCAxNjksIDEsIDI0MSwgMTAwLCAyMjYsIDE2OSwgMSwgMTg4LCAyMjYsIDE2OSwgMSwgMTcyLCAyMjYsIAorICAgIDE2OSwgMSwgMjE1LCAyNDUsIDIyNiwgMTY5LCAxLCAyNDksIDEzNiwgMjI2LCAxNjksIDEsIDI0OSwgNDQsIDIyNiwgMTY5LCAKKyAgICAxLCAyNDgsIDIwMCwgMjI2LCAxNjksIDEsIDE3OCwgMjI2LCAxNjksIDEsIDE4MywgMjI2LCAxNjksIDEsIDIxMywgMjUyLCAKKyAgICAyMjYsIDE2OSwgMSwgMTk0LCAyMjYsIDE2OSwgMSwgMjAzLCA5MCwgMjI2LCAxNjksIDEsIDIxMCwgMTE0LCAyMjYsIDE2OSwgCisgICAgMSwgMjEyLCA2NCwgMjI2LCAxNjksIDEsIDE0NCwgMjI2LCAxNjksIDIsIDI1MSwgMzMsIDIyNiwgMTY5LCAyMiwgMiwgMjUyLCAKKyAgICAxMzgsIDIyNiwgMTY5LCAyMiwgMiwgNzAsIDIyNiwgMTY5LCAyMiwgMiwgMjI4LCAxNTEsIDIyNiwgMTY5LCAyMiwgMiwgNjYsIAorICAgIDIyNiwgMTY5LCAyMiwgMiwgMjAzLCAxODIsIDIyNiwgMTY5LCAyMiwgMiwgNzIsIDIyNiwgMTY5LCAyMiwgMiwgMjUxLCAKKyAgICAxNzYsIDIyNiwgMTY5LCAyMiwgMiwgNzQsIDIyNiwgMTY5LCAyMiwgMiwgMjUwLCAxMzksIDIyNiwgMTY5LCAyLCAyMTgsIAorICAgIDEwMCwgMjI2LCAxNjksIDIsIDIwMiwgMjA4LCAyMjYsIDE2OSwgMTcsIDE5OSwgODEsIDIyNiwgMTY5LCAxNywgMTAyLCAKKyAgICAyMjYsIDE2OSwgMTcsIDEwNSwgMjI2LCAxNjksIDE3LCAxNDcsIDIyNiwgMTY5LCAxNywgMTQ5LCAyMjYsIDE2OSwgMTcsIAorICAgIDE2NCwgMjI2LCAxNjksIDE3LCAxODcsIDIyNiwgMTY5LCAxNywgMjEwLCAxMzUsIDIyNiwgMTY5LCAxNywgMTkyLCAyMjYsIAorICAgIDE2OSwgMTcsIDIxOSwgMTEzLCAyMzUsIDgyLCAyLCAzOCwgMjUxLCAzNCwgNTYsIDIzNSwgODIsIDIsIDI0NywgMTQ5LCAKKyAgICAyMzUsIDgyLCAyLCAyNTEsIDMzLCAyMzUsIDgyLCAyLCAyMDIsIDIwMywgMjM1LCA4MiwgMSwgNjIsIDIzNSwgODIsIDEsIAorICAgIDI1MiwgMTM4LCAyMzUsIDgyLCAxLCA3MCwgMjM1LCA4MiwgMSwgMjI4LCAxNTEsIDIzNSwgODIsIDEsIDY2LCAyMzUsIDgyLCAKKyAgICAxLCAyMDMsIDE4MiwgMjM1LCA4MiwgMSwgMTA5LCAxNDYsIDIzNSwgODIsIDEsIDEwOSwgMTU2LCAyMzUsIDgyLCAxLCAyMzgsIAorICAgIDI1NSwgMjM1LCA4MiwgMSwgMjUxLCAxNzYsIDIzNSwgODIsIDEsIDIxNywgNjMsIDIzNSwgODIsIDEsIDI1MCwgMTM5LCAKKyAgICAyMzUsIDgyLCAxLCAxNjEsIDIzNSwgODIsIDEsIDIyNiwgMjA3LCAyMzUsIDgyLCAxLCAyMzYsIDg5LCAyMzUsIDgyLCAxLCAKKyAgICAyMzUsIDE5OSwgMjM1LCA4MiwgMSwgMjE5LCAyNTMsIDIzNSwgODIsIDEsIDI0NywgMTkwLCAyMzUsIDgyLCAxLCAyNDcsIAorICAgIDM3LCAyMzUsIDgyLCAxLCAyMjcsIDI0OCwgMjM1LCA4MiwgMSwgMjI3LCAyMTUsIDIzNSwgODIsIDEsIDIxOCwgNjAsIDIzNSwgCisgICAgODIsIDEsIDIwNCwgMjUzLCAyMzUsIDgyLCAxLCAyMDQsIDI0MSwgMjM1LCA4MiwgMSwgMjQxLCAyMjAsIDIzNSwgODIsIDEsIAorICAgIDI0MSwgMjA0LCAyMzUsIDgyLCAxLCAyMTksIDIxLCAyMzUsIDgyLCAxLCAyMDcsIDM2LCAyMzUsIDgyLCAxLCAyMDYsIDEyMiwgCisgICAgMjM1LCA4MiwgMSwgMjQyLCA1OCwgMjM1LCA4MiwgMSwgMjQxLCAxMDAsIDIzNSwgODIsIDEsIDE4OCwgMjM1LCA4MiwgMSwgCisgICAgMTcyLCAyMzUsIDgyLCAxLCAyMTUsIDI0NSwgMjM1LCA4MiwgMSwgMjQ5LCAxMzYsIDIzNSwgODIsIDEsIDI0OCwgMjAwLCAKKyAgICAyMzUsIDgyLCAxLCAxNzgsIDIzNSwgODIsIDEsIDE4MywgMjM1LCA4MiwgMSwgMjEzLCAyNTIsIDIzNSwgODIsIDEsIDE5NCwgCisgICAgMjM1LCA4MiwgMSwgMjI0LCAxMzgsIDIzNSwgODIsIDEsIDIwMywgOTAsIDIzNSwgODIsIDEsIDIxMCwgMTE0LCAyMzUsIDgyLCAKKyAgICAxLCAyMDgsIDE3OSwgMjM1LCA4MiwgMSwgMjEyLCA2NCwgMjM1LCA4MiwgMSwgMTQ0LCAyMzUsIDgyLCAyLCAyMTgsIDEwMCwgCisgICAgMjM1LCA4MiwgMiwgMjUwLCAxMjIsIDIzNSwgODIsIDIyLCAyLCAyNTIsIDEzOCwgMjM1LCA4MiwgMjIsIDIsIDcwLCAyMzUsIAorICAgIDgyLCAyMiwgMiwgMjI4LCAxNTEsIDIzNSwgODIsIDIyLCAyLCA2NiwgMjM1LCA4MiwgMjIsIDIsIDIwMywgMTgyLCAyMzUsIAorICAgIDgyLCAyMiwgMiwgMTA5LCAxNDYsIDIzNSwgODIsIDIyLCAyLCAxMDksIDIxMiwgMjE2LCAyMzUsIDgyLCAyMiwgMiwgMjM4LCAKKyAgICAyNTUsIDIzNSwgODIsIDIyLCAyLCAyNTEsIDE3NiwgMjM1LCA4MiwgMjIsIDIsIDIxNywgNjMsIDIzNSwgODIsIDIyLCAyLCAKKyAgICAyNTAsIDEzOSwgMjM1LCA4MiwgMiwgMjAyLCAyMDgsIDIzNSwgODIsIDIxNywgODYsIDIzNSwgODIsIDI1MCwgMTQwLCAyMjUsIAorICAgIDIsIDgxLCAyMzUsIDgyLCAyLCAyMTUsIDExMSwgMjM1LCA4MiwgMSwgMjAzLCA1NiwgMjUxLCAzMywgMjM1LCA4MiwgMSwgCisgICAgMjAzLCA1NiwgNTMsIDI1MSwgMzMsIDIzNSwgODIsIDEsIDEwOSwgMjEyLCAyMTYsIDIzNSwgODIsIDEsIDEwOSwgMjI0LCAKKyAgICAxMzksIDIzNSwgODIsIDIyLCAyLCAxMDksIDE1NiwgMjM1LCA4MiwgMjIsIDIsIDEwOSwgMjI0LCAxMzksIDM4LCAyMzUsIAorICAgIDgyLCAxNywgMTk5LCA4MSwgMzgsIDIzNSwgODIsIDE3LCAxMDIsIDM4LCAyMzUsIDgyLCAxNywgMTA1LCAzOCwgMjM1LCA4MiwgCisgICAgMTcsIDE0NywgMzgsIDIzNSwgODIsIDE3LCAxNDksIDM4LCAyMzUsIDgyLCAxNywgMTY0LCAzOCwgMjM1LCA4MiwgMTcsIAorICAgIDE4NywgMzgsIDIzNSwgODIsIDEsIDYyLCAzOCwgMjM1LCA4MiwgMSwgMTYxLCAzOCwgMjM1LCA4MiwgMSwgMTg4LCAzOCwgCisgICAgMjM1LCA4MiwgMSwgMjAyLCAyMzQsIDM4LCAyMzUsIDgyLCAxLCAxNzIsIDE5NSwgMSwgNjIsIDE5NSwgMSwgMjUyLCAxMzgsIAorICAgIDE5NSwgMSwgNzAsIDE5NSwgMSwgMjI4LCAxNTEsIDE5NSwgMSwgNjYsIDE5NSwgMSwgMjAzLCAxODIsIDE5NSwgMSwgMTA5LCAKKyAgICAxNDYsIDE5NSwgMSwgMTA5LCAyMTIsIDIxNiwgMTk1LCAxLCAxMDksIDE1NiwgMTk1LCAxLCAxMDksIDIyNCwgMTM5LCAxOTUsIAorICAgIDEsIDcyLCAxOTUsIDEsIDI1MSwgMTc2LCAxOTUsIDEsIDc0LCAxOTUsIDEsIDI1MCwgMTM5LCAxOTUsIDEsIDE2MSwgMTk1LCAKKyAgICAxLCAyMjYsIDIwNywgMTk1LCAxLCAyMzYsIDg5LCAxOTUsIDEsIDIzNSwgMTk5LCAxOTUsIDEsIDIxOSwgMjUzLCAxOTUsIDEsIAorICAgIDIxOSwgMjAyLCAxOTUsIDEsIDI0NywgMTkwLCAxOTUsIDEsIDI0NywgMzcsIDE5NSwgMSwgMjI3LCAyNDgsIDE5NSwgMSwgCisgICAgMjI3LCAyMTUsIDE5NSwgMSwgMjE4LCA2MCwgMTk1LCAxLCAyMTgsIDQzLCAxOTUsIDEsIDIwNCwgMjUzLCAxOTUsIDEsIAorICAgIDIwNCwgMjQxLCAxOTUsIDEsIDI0MSwgMjIwLCAxOTUsIDEsIDI0MSwgMjA0LCAxOTUsIDEsIDIxOSwgMjEsIDE5NSwgMSwgCisgICAgMjA3LCAzNiwgMTk1LCAxLCAyMDYsIDEyMiwgMTk1LCAxLCAyNDIsIDU4LCAxOTUsIDEsIDI0MSwgMTAwLCAxOTUsIDEsIAorICAgIDE4OCwgMTk1LCAxLCAyMTksIDE1NCwgMTk1LCAxLCAxNzIsIDE5NSwgMSwgMjE1LCAyNDUsIDE5NSwgMSwgMjQ5LCAxMzYsIAorICAgIDE5NSwgMSwgMjQ4LCAyMDAsIDE5NSwgMSwgMTc4LCAxOTUsIDEsIDIyMSwgMjE0LCAxOTUsIDEsIDE4MywgMTk1LCAxLCAKKyAgICAyMTMsIDI1MiwgMTk1LCAxLCAyMTMsIDkzLCAxOTUsIDEsIDE5NCwgMTk1LCAxLCAyMjQsIDIyMywgMTk1LCAxLCAyMDEsIAorICAgIDExNCwgMTk1LCAxLCAyMTAsIDExNCwgMTk1LCAxLCAyMDgsIDE3OSwgMTk1LCAxLCAyMTIsIDY0LCAxOTUsIDEsIDE0NCwgCisgICAgMTk1LCAyMiwgMiwgMjUyLCAxMzgsIDE5NSwgMjIsIDIsIDcwLCAxOTUsIDIyLCAyLCAyMjgsIDE1MSwgMTk1LCAyMiwgMiwgCisgICAgNjYsIDE5NSwgMjIsIDIsIDIwMywgMTgyLCAxOTUsIDIyLCAyLCAxMDksIDE0NiwgMTk1LCAyMiwgMiwgMTA5LCAyMTIsIAorICAgIDIxNiwgMTk1LCAyMiwgMiwgMTA5LCAxNTYsIDE5NSwgMjIsIDIsIDEwOSwgMjI0LCAxMzksIDE5NSwgMjIsIDIsIDcyLCAKKyAgICAxOTUsIDIyLCAyLCAyNTEsIDE3NiwgMTk1LCAyMiwgMiwgNzQsIDE5NSwgMjIsIDIsIDI1MCwgMTM5LCAxOTUsIDIsIDIwMiwgCisgICAgMjA4LCAxOTUsIDIsIDI0NywgMTQ5LCAxOTUsIDIsIDI1MSwgMzMsIDE5NSwgMiwgMjAyLCAyMDMsIDE5NSwgMiwgMjE4LCAKKyAgICAxMDAsIDE5NSwgMiwgMjUwLCAxMjIsIDE5NSwgMiwgNDcsIDI1MSwgMzMsIDE5NSwgMjE3LCA4NiwgMTk1LCAyMDksIDE3NiwgCisgICAgMTk1LCAyNDIsIDEwLCAxOTUsIDUzLCAyNDIsIDEwLCAxOTUsIDI0NiwgNzAsIDE5NSwgMjM2LCA1MywgMjM3LCA5MywgMTk1LCAKKyAgICAyNTIsIDMsIDU0LCAxOTUsIDE3LCAxOTksIDgxLCAxOTUsIDE3LCAxMDIsIDE5NSwgMTcsIDEwNSwgMTk1LCAxNywgMTQ3LCAKKyAgICAxOTUsIDE3LCAxNDksIDE5NSwgMTcsIDE2NCwgMTk1LCAxNywgMTg3LCAxOTUsIDE3LCAyMTAsIDEzNSwgMTk1LCAxNywgCisgICAgMTkyLCAxOTUsIDE3LCAyMTksIDExMywgMTk1LCAyMTUsIDEzMywgODEsIDE5NSwgMjI4LCA3NSwgNTQsIDIwNSwgMjE3LCAKKyAgICAyNTEsIDYyLCAyMDUsIDIxNywgMSwgNjIsIDIwNSwgMjE3LCAxLCAyNTIsIDEzOCwgMjA1LCAyMTcsIDEsIDcwLCAyMDUsIAorICAgIDIxNywgMSwgMjI4LCAxNTEsIDIwNSwgMjE3LCAxLCA2NiwgMjA1LCAyMTcsIDEsIDIwMywgMTgyLCAyMDUsIDIxNywgMSwgCisgICAgMTA5LCAxNDYsIDIwNSwgMjE3LCAxLCAxMDksIDIxMiwgMjE2LCAyMDUsIDIxNywgMSwgMTA5LCAxNTYsIDIwNSwgMjE3LCAxLCAKKyAgICAxMDksIDIyNCwgMTM5LCAyMDUsIDIxNywgMSwgNzIsIDIwNSwgMjE3LCAxLCAyNTEsIDE3NiwgMjA1LCAyMTcsIDEsIDc0LCAKKyAgICAyMDUsIDIxNywgMSwgMjUwLCAxMzksIDIwNSwgMjE3LCAxLCAxNjEsIDIwNSwgMjE3LCAxLCAyMjYsIDIwNywgMjA1LCAyMTcsIAorICAgIDEsIDIzNiwgODksIDIwNSwgMjE3LCAxLCAyMzUsIDE5OSwgMjA1LCAyMTcsIDEsIDIxOSwgMjUzLCAyMDUsIDIxNywgMSwgCisgICAgMjQ3LCAxOTAsIDIwNSwgMjE3LCAxLCAyNDcsIDM3LCAyMDUsIDIxNywgMSwgMjI3LCAyNDgsIDIwNSwgMjE3LCAxLCAyMjcsIAorICAgIDIxNSwgMjA1LCAyMTcsIDEsIDIxOCwgNjAsIDIwNSwgMjE3LCAxLCAyMDQsIDI1MywgMjA1LCAyMTcsIDEsIDIwNCwgMjQxLCAKKyAgICAyMDUsIDIxNywgMSwgMjQxLCAyMjAsIDIwNSwgMjE3LCAxLCAyNDEsIDIwNCwgMjA1LCAyMTcsIDEsIDIxOSwgMjEsIDIwNSwgCisgICAgMjE3LCAxLCAyMDcsIDM2LCAyMDUsIDIxNywgMSwgMjA2LCAxMjIsIDIwNSwgMjE3LCAxLCAyNDIsIDU4LCAyMDUsIDIxNywgCisgICAgMSwgMjQxLCAxMDAsIDIwNSwgMjE3LCAxLCAxODgsIDIwNSwgMjE3LCAxLCAxNzIsIDIwNSwgMjE3LCAxLCAyMTUsIDI0NSwgCisgICAgMjA1LCAyMTcsIDEsIDI0OSwgMTM2LCAyMDUsIDIxNywgMSwgMjQ4LCAyMDAsIDIwNSwgMjE3LCAxLCAxNzgsIDIwNSwgMjE3LCAKKyAgICAxLCAxODMsIDIwNSwgMjE3LCAxLCAyMTMsIDI1MiwgMjA1LCAyMTcsIDEsIDE5NCwgMjA1LCAyMTcsIDEsIDIwMywgOTAsIAorICAgIDIwNSwgMjE3LCAxLCAyMTAsIDExNCwgMjA1LCAyMTcsIDEsIDIwOCwgMTc5LCAyMDUsIDIxNywgMSwgMjEyLCA2NCwgMjA1LCAKKyAgICAyMTcsIDEsIDE0NCwgMjA1LCAyMTcsIDIyLCAyLCAyNTIsIDEzOCwgMjA1LCAyMTcsIDIyLCAyLCA3MCwgMjA1LCAyMTcsIAorICAgIDIyLCAyLCAyMjgsIDE1MSwgMjA1LCAyMTcsIDIyLCAyLCA2NiwgMjA1LCAyMTcsIDIyLCAyLCAyMDMsIDE4MiwgMjA1LCAKKyAgICAyMTcsIDIyLCAyLCAxMDksIDE0NiwgMjA1LCAyMTcsIDIyLCAyLCAxMDksIDIxMiwgMjE2LCAyMDUsIDIxNywgMjIsIDIsIAorICAgIDEwOSwgMTU2LCAyMDUsIDIxNywgMjIsIDIsIDEwOSwgMjI0LCAxMzksIDIwNSwgMjE3LCAyMiwgMiwgNzIsIDIwNSwgMjE3LCAKKyAgICAyMiwgMiwgMjA5LCAyNTAsIDcyLCAyMDUsIDIxNywgMjIsIDIsIDI1MSwgMTc2LCAyMDUsIDIxNywgMjIsIDIsIDc0LCAyMDUsIAorICAgIDIxNywgMjIsIDIsIDIwOSwgMjUwLCA3NCwgMjA1LCAyMTcsIDIyLCAyLCAyNTAsIDEzOSwgMjA1LCAyMTcsIDIsIDI0NywgCisgICAgMTQ5LCAyMDUsIDIxNywgMiwgMjUxLCAzMywgMjA1LCAyMTcsIDIsIDIwMiwgMjAzLCAyMDUsIDIxNywgMiwgMjAyLCAyMDgsIAorICAgIDIwNSwgMjE3LCAyLCAyMTgsIDEwMCwgMjA1LCAyMTcsIDIsIDI1MCwgMTIyLCAyMDUsIDIxNywgMjM1LCAxMSwgMjA1LCAKKyAgICAyMTcsIDI1MiwgMywgNTQsIDIwNSwgMjE3LCAyMTcsIDg2LCAyMDUsIDIxNywgMTcsIDE5OSwgODEsIDIwNSwgMjE3LCAxNywgCisgICAgMTAyLCAyMDUsIDIxNywgMTcsIDEwNSwgMjA1LCAyMTcsIDE3LCAxNDcsIDIwNSwgMjE3LCAxNywgMTQ5LCAyMDUsIDIxNywgCisgICAgMTcsIDE2NCwgMjA1LCAyMTcsIDE3LCAxODcsIDIwNSwgMjE3LCAxNywgMjEwLCAxMzUsIDIwNSwgMjE3LCAxNywgMTkyLCAKKyAgICAyMDUsIDIxNywgMTcsIDIxOSwgMTEzLCAxOTYsIDEsIDYyLCAxOTYsIDEsIDI1MiwgMTM4LCAxOTYsIDEsIDcwLCAxOTYsIDEsIAorICAgIDIyOCwgMTUxLCAxOTYsIDEsIDY2LCAxOTYsIDEsIDIwMywgMTgyLCAxOTYsIDEsIDEwOSwgMTQ2LCAxOTYsIDEsIDEwOSwgCisgICAgMjEyLCAyMTYsIDE5NiwgMSwgMTA5LCAxNTYsIDE5NiwgMSwgMTA5LCAyMjQsIDEzOSwgMTk2LCAxLCA3MiwgMTk2LCAxLCAKKyAgICAyNTEsIDE3NiwgMTk2LCAxLCA3NCwgMTk2LCAxLCAyNTAsIDEzOSwgMTk2LCAxLCAxNjEsIDE5NiwgMSwgMjI2LCAyMDcsIAorICAgIDE5NiwgMSwgMjM2LCA4OSwgMTk2LCAxLCAyMzUsIDE5OSwgMTk2LCAxLCAyMTksIDI1MywgMTk2LCAxLCAyNDcsIDE5MCwgCisgICAgMTk2LCAxLCAyNDcsIDM3LCAxOTYsIDEsIDIyNywgMjQ4LCAxOTYsIDEsIDIyNywgMjE1LCAxOTYsIDEsIDIxOCwgNjAsIAorICAgIDE5NiwgMSwgMjA0LCAyNTMsIDE5NiwgMSwgMjA0LCAyNDEsIDE5NiwgMSwgMjQxLCAyMjAsIDE5NiwgMSwgMjQxLCAyMDQsIAorICAgIDE5NiwgMSwgMjE5LCAyMSwgMTk2LCAxLCAyMDcsIDM2LCAxOTYsIDEsIDIwNiwgMTIyLCAxOTYsIDEsIDI0MiwgNTgsIDE5NiwgCisgICAgMSwgMjQxLCAxMDAsIDE5NiwgMSwgMTg4LCAxOTYsIDEsIDE3MiwgMTk2LCAxLCAyMTUsIDI0NSwgMTk2LCAxLCAyNDksIAorICAgIDEzNiwgMTk2LCAxLCAyNDgsIDIwMCwgMTk2LCAxLCAxNzgsIDE5NiwgMSwgMTgzLCAxOTYsIDEsIDIxMywgMjUyLCAxOTYsIAorICAgIDEsIDE5NCwgMTk2LCAxLCAyMDMsIDkwLCAxOTYsIDEsIDIxMCwgMTE0LCAxOTYsIDEsIDIwOCwgMTc5LCAxOTYsIDEsIDIxMiwgCisgICAgNjQsIDE5NiwgMSwgMTQ0LCAxOTYsIDIyLCAyLCAyNTIsIDEzOCwgMTk2LCAyMiwgMiwgNzAsIDE5NiwgMjIsIDIsIDIyOCwgCisgICAgMTUxLCAxOTYsIDIyLCAyLCA2NiwgMTk2LCAyMiwgMiwgMjAzLCAxODIsIDE5NiwgMjIsIDIsIDEwOSwgMTQ2LCAxOTYsIDIyLCAKKyAgICAyLCAxMDksIDIxMiwgMjE2LCAxOTYsIDIyLCAyLCA3MiwgMTk2LCAyMiwgMiwgMjUxLCAxNzYsIDE5NiwgMjIsIDIsIDc0LCAKKyAgICAxOTYsIDIyLCAyLCAyNTAsIDEzOSwgMTk2LCAyLCAyNDcsIDE0OSwgMTk2LCAyLCAyNTEsIDMzLCAxOTYsIDIsIDIwMiwgCisgICAgMjAzLCAxOTYsIDIsIDIwMiwgMjA4LCAxOTYsIDIsIDIxOCwgMTAwLCAxOTYsIDIsIDIwOSwgMTc3LCAxOTYsIDI0MiwgMTAsIAorICAgIDE5NiwgNTMsIDI0MiwgMTAsIDE5NiwgMjEwLCAxNTUsIDI0MCwgMTgyLCAxOTYsIDIxMCwgMTU1LCAxNDgsIDE5NiwgMjEzLCAKKyAgICAxMzAsIDIyMiwgMTQ5LCAxOTYsIDIxMywgMTMwLCAyMjIsIDE0OCwgMTk2LCAyMTMsIDEzMCwgMjIyLCAxNDcsIDE5NiwgCisgICAgMjM4LCAxNzEsIDc2LCAyMDYsIDEyNywgODEsIDE5NiwgMjExLCAxOTMsIDEzNCwgMywgMjA1LCA5MywgMjYsIDIwNCwgOTksIAorICAgIDIxNywgMjAsIDE5NiwgMjExLCAxOTMsIDEzNCwgMywgMjA1LCA5MywgMjYsIDIzOSwgMTgwLCAyNDIsIDI0MiwgMTk2LCAKKyAgICAyMTEsIDE5MywgMTM0LCAzLCAyMTMsIDE5NSwgMjYsIDIzOSwgMTgwLCAyNDIsIDI0MiwgMTk2LCAyMTEsIDE5MywgMTM0LCAKKyAgICAzLCAyMTMsIDE5NSwgMjYsIDIzOSwgMTgwLCA1MywgMjQyLCAyNDIsIDE5NiwgMjExLCAxOTMsIDEzNCwgMywgMjEzLCAxOTUsIAorICAgIDI2LCAyMzksIDE4MCwgMjA1LCA4MywgMjQyLCAyNDIsIDE5NiwgMjExLCAxOTMsIDEzNCwgNTMsIDIxMywgMjYsIDE5NiwgCisgICAgMjExLCAxOTMsIDEzNCwgNTMsIDIxMywgMjcsIDMsIDIxMywgMTk0LCAxOTYsIDIxMSwgMTkzLCAxMzQsIDMsIDUzLCAyNDIsIAorICAgIDI0MiwgMTk2LCAyMTEsIDE5MywgMTM0LCAzLCAyMDUsIDgzLCAyNDIsIDI0MiwgMTk2LCAyMTEsIDE5MywgMTM0LCAzLCAKKyAgICAyMTQsIDkwLCAyNDIsIDI0MiwgMTk2LCAyMTEsIDE5MywgMTM0LCAzLCAyMTAsIDE1MiwgMjQyLCAyNDIsIDE5NiwgMjExLCAKKyAgICAxOTMsIDEzNCwgMywgMjQ2LCAxNTMsIDI2LCAyMTMsIDE5NCwgMTk2LCAyMTEsIDE5MywgMTM0LCAzLCAyNDYsIDE1MywgMjYsIAorICAgIDEyMCwgMjM4LCAxNzMsIDE5NiwgMjExLCAxOTMsIDEzNCwgMywgMjQ2LCAxNTMsIDI2LCAyMzYsIDIyOSwgMjM4LCAxNzMsIAorICAgIDE5NiwgMSwgMjA2LCA0NiwgMjUxLCAxMDksIDcwLCAxOTYsIDEsIDIwNCwgMTQzLCAyNTEsIDEwOSwgNzAsIDE5NiwgMSwgCisgICAgMjA0LCAxNDMsIDI1MSwgMTA5LCAyMjgsIDE1MSwgMTk2LCAxLCAyNTEsIDEwOSwgNjYsIDE5NiwgMjIsIDIsIDI1MSwgMTA5LCAKKyAgICA2NiwgMTk2LCAyMiwgMiwgMjUxLCAxMDksIDIwMywgMTgyLCAyMjEsIDEyNywgMSwgNjIsIDIyMSwgMTI3LCAxLCAyNTIsIAorICAgIDEzOCwgMjIxLCAxMjcsIDEsIDcwLCAyMjEsIDEyNywgMSwgMjI4LCAxNTEsIDIyMSwgMTI3LCAxLCA2NiwgMjIxLCAxMjcsIAorICAgIDEsIDIwMywgMTgyLCAyMjEsIDEyNywgMSwgMTA5LCAxNDYsIDIyMSwgMTI3LCAxLCAxMDksIDIxMiwgMjE2LCAyMjEsIDEyNywgCisgICAgMSwgMTA5LCAxNTYsIDIyMSwgMTI3LCAxLCAxMDksIDIyNCwgMTM5LCAyMjEsIDEyNywgMSwgNzIsIDIyMSwgMTI3LCAxLCAKKyAgICAyNTEsIDE3NiwgMjIxLCAxMjcsIDEsIDc0LCAyMjEsIDEyNywgMSwgMjUwLCAxMzksIDIyMSwgMTI3LCAxLCAxNjEsIDIyMSwgCisgICAgMTI3LCAxLCAyMjYsIDIwNywgMjIxLCAxMjcsIDEsIDIzNiwgODksIDIyMSwgMTI3LCAxLCAyMzUsIDE5OSwgMjIxLCAxMjcsIAorICAgIDEsIDIxOSwgMjUzLCAyMjEsIDEyNywgMSwgMjQ3LCAxOTAsIDIyMSwgMTI3LCAxLCAyNDcsIDM3LCAyMjEsIDEyNywgMSwgCisgICAgMjI3LCAyNDgsIDIyMSwgMTI3LCAxLCAyMjcsIDIxNSwgMjIxLCAxMjcsIDEsIDIxOCwgNjAsIDIyMSwgMTI3LCAxLCAyMDQsIAorICAgIDI1MywgMjIxLCAxMjcsIDEsIDIwNCwgMjQxLCAyMjEsIDEyNywgMSwgMjQxLCAyMjAsIDIyMSwgMTI3LCAxLCAyNDEsIDIwNCwgCisgICAgMjIxLCAxMjcsIDEsIDIxOSwgMjEsIDIyMSwgMTI3LCAxLCAyMDcsIDM2LCAyMjEsIDEyNywgMSwgMjA2LCAxMjIsIDIyMSwgCisgICAgMTI3LCAxLCAyNDIsIDU4LCAyMjEsIDEyNywgMSwgMjQxLCAxMDAsIDIyMSwgMTI3LCAxLCAxODgsIDIyMSwgMTI3LCAxLCAKKyAgICAxNzIsIDIyMSwgMTI3LCAxLCAyMTUsIDI0NSwgMjIxLCAxMjcsIDEsIDI0OSwgMTM2LCAyMjEsIDEyNywgMSwgMjQ4LCAyMDAsIAorICAgIDIyMSwgMTI3LCAxLCAxNzgsIDIyMSwgMTI3LCAxLCAxODMsIDIyMSwgMTI3LCAxLCAyMTMsIDI1MiwgMjIxLCAxMjcsIDEsIAorICAgIDE5NCwgMjIxLCAxMjcsIDEsIDIwMywgOTAsIDIyMSwgMTI3LCAxLCAyMTAsIDExNCwgMjIxLCAxMjcsIDEsIDIwOCwgMTc5LCAKKyAgICAyMjEsIDEyNywgMSwgMjEyLCA2NCwgMjIxLCAxMjcsIDEsIDE0NCwgMjIxLCAxMjcsIDEsIDIyNCwgMTM4LCAyMjEsIDEyNywgCisgICAgMjIsIDIsIDI1MiwgMTM4LCAyMjEsIDEyNywgMjIsIDIsIDcwLCAyMjEsIDEyNywgMjIsIDIsIDIyOCwgMTUxLCAyMjEsIAorICAgIDEyNywgMjIsIDIsIDY2LCAyMjEsIDEyNywgMjIsIDIsIDIwMywgMTgyLCAyMjEsIDEyNywgMjIsIDIsIDEwOSwgMTQ2LCAKKyAgICAyMjEsIDEyNywgMjIsIDIsIDEwOSwgMjEyLCAyMTYsIDIyMSwgMTI3LCAyMiwgMiwgMTA5LCAxNTYsIDIyMSwgMTI3LCAyMiwgCisgICAgMiwgMTA5LCAyMjQsIDEzOSwgMjIxLCAxMjcsIDIyLCAyLCA3MiwgMjIxLCAxMjcsIDIyLCAyLCAyNTEsIDE3NiwgMjIxLCAKKyAgICAxMjcsIDIyLCAyLCA3NCwgMjIxLCAxMjcsIDIyLCAyLCAyNTAsIDEzOSwgMjIxLCAxMjcsIDIsIDI1MSwgMzMsIDIyMSwgCisgICAgMTI3LCAyLCAyMDIsIDIwMywgMjIxLCAxMjcsIDIsIDIwMiwgMjA4LCAyMjEsIDEyNywgMiwgMjUwLCAyMzEsIDIyMSwgMTI3LCAKKyAgICAyNDIsIDEwLCAyMjEsIDEyNywgNTMsIDI0MiwgMTAsIDIyMSwgMTI3LCAyNTIsIDMsIDU0LCAyMjEsIDEyNywgMiwgMjMzLCAKKyAgICA3MCwgMjIxLCAxMjcsIDE3LCAxOTksIDgxLCAyMjEsIDEyNywgMTcsIDEwMiwgMjIxLCAxMjcsIDE3LCAxMDUsIDIyMSwgCisgICAgMTI3LCAxNywgMTQ3LCAyMjEsIDEyNywgMTcsIDE0OSwgMjIxLCAxMjcsIDE3LCAxNjQsIDIyMSwgMTI3LCAxNywgMTg3LCAKKyAgICAyMjEsIDEyNywgMTcsIDIxMCwgMTM1LCAyMjEsIDEyNywgMTcsIDE5MiwgMjIxLCAxMjcsIDE3LCAyMTksIDExMywgOTIsIAorICAgIDI0OCwgMTYxLCAzLCAyMTcsIDIxLCA5MiwgMjEyLCAyMjgsIDI0OCwgMTYwLCA5MiwgNTMsIDI0OCwgMTYxLCAzLCAyMTcsIAorICAgIDIxLCA5MiwgMjA1LCA4MywgMjQ4LCAxNjEsIDMsIDIxNywgMjEsIDkyLCAyNDgsIDE2MSwgMywgNTMsIDIxNywgMjEsIDkyLCAKKyAgICAyMTIsIDIyOCwgMjQ4LCAxNjEsIDMsIDIxNywgMjEsIDkyLCAyMTIsIDIyOCwgMjQ4LCAxNjEsIDMsIDUzLCAyMTcsIDIxLCAKKyAgICA5MiwgMjI4LCA1MCwgMjQ4LCAxNjAsIDkyLCAyMjgsIDUwLCAyNDgsIDE2MSwgMywgNTMsIDIxNywgMjEsIDkyLCAyMDcsIAorICAgIDE3MiwgMjQ4LCAxNjAsIDkyLCAyMDcsIDE3MiwgMjQ4LCAxNjEsIDMsIDIxNywgMjEsIDkyLCAyMDcsIDE3MiwgMjQ4LCAKKyAgICAxNjEsIDMsIDUzLCAyMTcsIDIxLCA5MiwgMjA0LCAxODUsIDIwNywgMTcyLCAyNDgsIDE2MSwgMywgNTMsIDIxNywgMjEsIAorICAgIDIwNiwgMjUzLCAxLCA2MiwgMjA2LCAyNTMsIDEsIDI1MiwgMTM4LCAyMDYsIDI1MywgMSwgNzAsIDIwNiwgMjUzLCAxLCAKKyAgICAyMjgsIDE1MSwgMjA2LCAyNTMsIDEsIDY2LCAyMDYsIDI1MywgMSwgMjAzLCAxODIsIDIwNiwgMjUzLCAxLCA3MiwgMjA2LCAKKyAgICAyNTMsIDEsIDI1MSwgMTc2LCAyMDYsIDI1MywgMSwgNzQsIDIwNiwgMjUzLCAxLCAyNTAsIDEzOSwgMjA2LCAyNTMsIDEsIAorICAgIDE2MSwgMjA2LCAyNTMsIDEsIDIyNiwgMjA3LCAyMDYsIDI1MywgMSwgMjM2LCA4OSwgMjA2LCAyNTMsIDEsIDIzNSwgMTk5LCAKKyAgICAyMDYsIDI1MywgMSwgMjE5LCAyNTMsIDIwNiwgMjUzLCAxLCAyNDcsIDE5MCwgMjA2LCAyNTMsIDEsIDI0NywgMzcsIDIwNiwgCisgICAgMjUzLCAxLCAyMjcsIDI0OCwgMjA2LCAyNTMsIDEsIDIyNywgMjE1LCAyMDYsIDI1MywgMSwgMjE4LCA2MCwgMjA2LCAyNTMsIAorICAgIDEsIDIwNCwgMjUzLCAyMDYsIDI1MywgMSwgMjA0LCAyNDEsIDIwNiwgMjUzLCAxLCAyNDEsIDIyMCwgMjA2LCAyNTMsIDEsIAorICAgIDI0MSwgMjA0LCAyMDYsIDI1MywgMSwgMjE5LCAyMSwgMjA2LCAyNTMsIDEsIDIwNywgMzYsIDIwNiwgMjUzLCAxLCAyMDYsIAorICAgIDEyMiwgMjA2LCAyNTMsIDEsIDI0MiwgNTgsIDIwNiwgMjUzLCAxLCAyNDEsIDEwMCwgMjA2LCAyNTMsIDEsIDE4OCwgMjA2LCAKKyAgICAyNTMsIDEsIDE3MiwgMjA2LCAyNTMsIDEsIDIxNSwgMjQ1LCAyMDYsIDI1MywgMSwgMjQ5LCAxMzYsIDIwNiwgMjUzLCAxLCAKKyAgICAyNDgsIDIwMCwgMjA2LCAyNTMsIDEsIDE3OCwgMjA2LCAyNTMsIDEsIDE4MywgMjA2LCAyNTMsIDEsIDIxMywgMjUyLCAyMDYsIAorICAgIDI1MywgMSwgMTk0LCAyMDYsIDI1MywgMSwgMjAzLCA5MCwgMjA2LCAyNTMsIDEsIDIxMCwgMTE0LCAyMDYsIDI1MywgMSwgCisgICAgMjEyLCA2NCwgMjA2LCAyNTMsIDEsIDE0NCwgMjA2LCAyNTMsIDEsIDIxMiwgMjE1LCAyMDYsIDI1MywgMiwgMjUxLCAzMywgCisgICAgMjA2LCAyNTMsIDIsIDIwMiwgMjAzLCAyMDYsIDI1MywgMjIsIDIsIDI1MiwgMTM4LCAyMDYsIDI1MywgMjIsIDIsIDcwLCAKKyAgICAyMDYsIDI1MywgMjIsIDIsIDIyOCwgMTUxLCAyMDYsIDI1MywgMjIsIDIsIDY2LCAyMDYsIDI1MywgMjIsIDIsIDIwMywgCisgICAgMTgyLCAyMDYsIDI1MywgMjIsIDIsIDcyLCAyMDYsIDI1MywgMjIsIDIsIDI1MSwgMTc2LCAyMDYsIDI1MywgMjIsIDIsIDc0LCAKKyAgICAyMDYsIDI1MywgMjIsIDIsIDI1MCwgMTM5LCAyMDYsIDI1MywgMiwgMjAyLCAyMDgsIDIwNiwgMjUzLCAyLCAyMTgsIDEwMCwgCisgICAgMjA2LCAyNTMsIDE3LCAxOTksIDgxLCAyMDYsIDI1MywgMTcsIDEwMiwgMjA2LCAyNTMsIDE3LCAxMDUsIDIwNiwgMjUzLCAKKyAgICAxNywgMTQ3LCAyMDYsIDI1MywgMTcsIDE0OSwgMjA2LCAyNTMsIDE3LCAxNjQsIDIwNiwgMjUzLCAxNywgMTg3LCAyMDYsIAorICAgIDI1MywgMTcsIDIxMCwgMTM1LCAyMDYsIDI1MywgMTcsIDE5MiwgMjA2LCAyNTMsIDE3LCAyMTksIDExMywgMjUxLCAxODAsIAorICAgIDEsIDE2MSwgMjUxLCAxODAsIDEsIDIyNiwgMjA3LCAyNTEsIDE4MCwgMSwgMjE5LCAyNTMsIDI1MSwgMTgwLCAxLCAxODgsIAorICAgIDI1MSwgMTgwLCAxLCAyMDcsIDM2LCAyNTEsIDE4MCwgMSwgMjUxLCAxMDksIDIwNywgMzYsIDI1MSwgMTgwLCAxLCAxNzIsIAorICAgIDI1MSwgMTgwLCAxLCAyMTUsIDI0NSwgMjUxLCAxODAsIDEsIDI0OSwgMTM2LCAyNTEsIDE4MCwgMSwgMTc4LCAyNTEsIDE4MCwgCisgICAgMSwgMjI3LCAyNDgsIDI1MSwgMTgwLCAxLCAyNDcsIDM3LCAyNTEsIDE4MCwgMSwgMjA2LCAxMjIsIDI1MSwgMTgwLCAxLCAKKyAgICAyMTMsIDI1MiwgMjUxLCAxODAsIDEsIDE5NCwgMjUxLCAxODAsIDEsIDIxMiwgNjQsIDI1MSwgMTgwLCAxLCAyMTgsIDYwLCAKKyAgICAyNTEsIDE4MCwgMSwgMTQ0LCAyNTEsIDE4MCwgMSwgNjIsIDI1MSwgMTgwLCAxLCAyNDIsIDU4LCAyNTEsIDE4MCwgMSwgCisgICAgMjQxLCAxMDAsIDI1MSwgMTgwLCAxLCAyMzYsIDg5LCAyNTEsIDE4MCwgMSwgMjUxLCAxMDksIDIzNiwgODksIDI1MSwgMTgwLCAKKyAgICAxLCAyMzUsIDE5OSwgMjUxLCAxODAsIDEsIDI0OCwgMjAwLCAyNTEsIDE4MCwgMSwgMjI3LCAyMTUsIDI1MSwgMTgwLCAxMTEsIAorICAgIDIsIDE3OSwgMTk0LCAyNTEsIDE4MCwgMTExLCAyLCAxNzksIDIxMywgMjUyLCAyNTEsIDE4MCwgMTExLCAyLCAxNzksIDIyNCwgCisgICAgMTk3LCAyMTMsIDI1MiwgMjUxLCAxODAsIDIyLCAyLCA2MiwgMjUxLCAxODAsIDIyLCAyLCAyNTIsIDEzOCwgMjUxLCAxODAsIAorICAgIDIyLCAyLCA3MCwgMjUxLCAxODAsIDIyLCAyLCAyMjgsIDE1MSwgMjUxLCAxODAsIDIyLCAyLCA2NiwgMjUxLCAxODAsIDIyLCAKKyAgICAyLCAyMDMsIDE4MiwgMjUxLCAxODAsIDIyLCAyLCA3MiwgMjUxLCAxODAsIDIyLCAyLCAyNTAsIDExNywgMjUxLCAxODAsIAorICAgIDIyLCAyLCA3NCwgMjUxLCAxODAsIDIyLCAyLCAyNTEsIDE3NiwgMjUxLCAxODAsIDIyLCAyLCAyNTEsIDEwMSwgMjUxLCAKKyAgICAxODAsIDIsIDIyNiwgMTQ5LCAyNTEsIDE4MCwgMTcsIDE5OSwgODEsIDI1MSwgMTgwLCAxNywgMTAyLCAyNTEsIDE4MCwgMTcsIAorICAgIDEwNSwgMjUxLCAxODAsIDE3LCAxNDcsIDI1MSwgMTgwLCAxNywgMTQ5LCAyNTEsIDE4MCwgMTcsIDE2NCwgMjUxLCAxODAsIAorICAgIDE3LCAxODcsIDI1MSwgMTgwLCAxNywgMjEwLCAxMzUsIDI1MSwgMTgwLCAxNywgMTkyLCAyNTEsIDE4MCwgMTcsIDIxOSwgCisgICAgMTEzLCAyNTEsIDE4MCwgNDEsIDIwNiwgMTY2LCAyNTEsIDE4MCwgNDEsIDIwNCwgMTU5LCAyNTEsIDE4MCwgMiwgNCwgMjExLCAKKyAgICAxOTIsIDI1MSwgMTgwLCAyLCAyMTEsIDE5MiwgMjUxLCAxODAsIDIsIDIxMiwgMTY2LCAyNTEsIDE4MCwgMTYsIDIwMiwgCisgICAgMjM0LCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgMjE5LCAyNTIsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCA2MiwgMjAxLCAKKyAgICA5NCwgMjQ2LCAxNDIsIDYsIDEsIDIwMSwgMzEsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAxOTksIDIxMSwgMjAxLCA5NCwgCisgICAgMjQ2LCAxNDIsIDYsIDEsIDE4MywgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIDE5OSwgMjQ1LCAyMDEsIDk0LCAyNDYsIAorICAgIDE0MiwgNiwgMSwgMjI4LCAxNTEsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAyMDMsIDE4MiwgMjAxLCA5NCwgMjQ2LCAKKyAgICAxNDIsIDYsIDEsIDcyLCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgNzQsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAyNTEsIAorICAgIDc2LCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgMjM2LCA4OSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIDIyNiwgODgsIAorICAgIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAyMzgsIDE0MywgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIDE5OSwgMTk1LCAKKyAgICAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgMjA0LCAzOCwgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIDIzOCwgMTYyLCAyMDEsIAorICAgIDk0LCAyNDYsIDE0MiwgNiwgMSwgMjE3LCAxMjQsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAyMDQsIDI0OCwgMjAxLCA5NCwgCisgICAgMjQ2LCAxNDIsIDYsIDEsIDIxOCwgODYsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAyNDIsIDU4LCAyMDEsIDk0LCAyNDYsIAorICAgIDE0MiwgNiwgMSwgMjUwLCAxNTUsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAyNTEsIDEwMSwgMjAxLCA5NCwgMjQ2LCAKKyAgICAxNDIsIDYsIDEsIDI0OCwgMzYsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAyMTQsIDIyNCwgMjAxLCA5NCwgMjQ2LCAxNDIsIAorICAgIDYsIDEsIDIzNCwgNDMsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAyMzMsIDE5NSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIAorICAgIDEsIDIzMywgMTIyLCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgMjM0LCAxNjYsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAKKyAgICAyMDgsIDEzMSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIDIwOSwgMTYxLCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgCisgICAgMjAyLCAxOTQsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAyMTksIDI1MiwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDYyLCAKKyAgICAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgMjAxLCAzMSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDE5OSwgMjExLCAyMDEsIAorICAgIDk0LCAyNDYsIDE0MiwgNCwgMSwgMTgzLCAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgMTk5LCAyNDUsIDIwMSwgOTQsIDI0NiwgCisgICAgMTQyLCA0LCAxLCAyMjgsIDE1MSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDIwMywgMTgyLCAyMDEsIDk0LCAyNDYsIAorICAgIDE0MiwgNCwgMSwgNzIsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCA3NCwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDI1MSwgCisgICAgNzYsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAyMzYsIDg5LCAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgMjI2LCA4OCwgCisgICAgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDIzOCwgMTQzLCAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgMTk5LCAxOTUsIAorICAgIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAyMDQsIDM4LCAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgMjM4LCAxNjIsIDIwMSwgCisgICAgOTQsIDI0NiwgMTQyLCA0LCAxLCAyMTcsIDEyNCwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDIwNCwgMjQ4LCAyMDEsIDk0LCAKKyAgICAyNDYsIDE0MiwgNCwgMSwgMjE4LCA4NiwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDI0MiwgNTgsIDIwMSwgOTQsIDI0NiwgCisgICAgMTQyLCA0LCAxLCAyNTAsIDE1NSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDI1MSwgMTAxLCAyMDEsIDk0LCAyNDYsIAorICAgIDE0MiwgNCwgMSwgMjQ4LCAzNiwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDIxNCwgMjI0LCAyMDEsIDk0LCAyNDYsIDE0MiwgCisgICAgNCwgMSwgMjM0LCA0MywgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDIzMywgMTk1LCAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgCisgICAgMSwgMjMzLCAxMjIsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAyMzQsIDE2NiwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIAorICAgIDIwOCwgMTMxLCAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgMjA5LCAxNjEsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAKKyAgICAyMDIsIDE5NCwgMjAxLCA5NCwgMjQ2LCAxNDIsIDE3LCAxOTksIDgxLCAyMDEsIDk0LCAyNDYsIDE0MiwgMTcsIDEwMiwgCisgICAgMjAxLCA5NCwgMjQ2LCAxNDIsIDE3LCAxMDUsIDIwMSwgOTQsIDI0NiwgMTQyLCAxNywgMTQ3LCAyMDEsIDk0LCAyNDYsIAorICAgIDE0MiwgMTcsIDE0OSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDE3LCAxNjQsIDIwMSwgOTQsIDI0NiwgMTQyLCAxNywgMTg3LCAKKyAgICAyMDEsIDk0LCAyNDYsIDE0MiwgMTcsIDIxMCwgMTM1LCAyMDEsIDk0LCAyNDYsIDE0MiwgMTcsIDE5MiwgMjAxLCA5NCwgCisgICAgMjQ2LCAxNDIsIDE3LCAyMTksIDExMywgMjAxLCA5NCwgMjQ2LCAxNDIsIDQxLCAyMDYsIDE2NiwgMjAxLCA5NCwgMjQ2LCAKKyAgICAxNDIsIDQxLCAyMDQsIDE1OSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQxLCAyMDYsIDY3LCAyMDEsIDk0LCAyNDYsIDE0MiwgNDEsIAorICAgIDIzNiwgMjM1LCAyMDEsIDk0LCAyNDYsIDE0MiwgNDEsIDIzNywgMTA0LCAyMDEsIDk0LCAyNDYsIDE0MiwgNDEsIDIwOSwgCisgICAgOTIsIDIwMSwgOTQsIDI0NiwgMTQyLCA0MSwgMjEwLCAxMjksIDIwMSwgOTQsIDI0NiwgMTQyLCA0MSwgMjM4LCAyMjIsIAorICAgIDIwMSwgOTQsIDI0NiwgMTQyLCA0MSwgMjE5LCAxMDgsIDIwMSwgOTQsIDI0NiwgMTQyLCAyMTcsIDg2LCAyMTYsIDg4LCAKKyAgICAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDE3MiwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCAxNjEsIDIxNiwgODgsIAorICAgIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgMTk0LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDE3OCwgMjE2LCA4OCwgCisgICAgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCAyNDIsIDU4LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDE5OSwgMTE0LCAKKyAgICAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDIwMywgOTAsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgCisgICAgMjE5LCAyNTMsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgMTQ0LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAKKyAgICAxNTEsIDEsIDIzNiwgODksIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgMjI2LCAyMDcsIDIxNiwgODgsIDI0NiwgCisgICAgMTYwLCAyMzQsIDE1MSwgMSwgMjEyLCA2NCwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCAyNDksIDEzNiwgMjE2LCAKKyAgICA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCAyNDcsIDE5MCwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCAyMDcsIAorICAgIDM2LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDIwNiwgMTIyLCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAKKyAgICAxNTEsIDEsIDE4OCwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCAyMTUsIDI0NSwgMjE2LCA4OCwgMjQ2LCAxNjAsIAorICAgIDIzNCwgMTUxLCAxLCAyMTMsIDI1MiwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCAyMzcsIDE5NSwgMjE2LCA4OCwgCisgICAgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCAyNDcsIDM3LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDYyLCAyMTYsIAorICAgIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDcyLCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDcwLCAyMTYsIAorICAgIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDc0LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDY2LCAyMTYsIAorICAgIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDIwNCwgNDYsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgMjMyLCAKKyAgICAyNDAsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgNDcsIDIxNiwgMjI2LCAyMTYsIDg4LCAyNDYsIDE2MCwgCisgICAgMjM0LCAxNTEsIDEsIDQ3LCAyMjcsIDExOCwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCA0NywgMjA3LCA4MywgCisgICAgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCA0NywgMjIzLCAyNDMsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIAorICAgIDE1MSwgMSwgNDcsIDIyMCwgMjE0LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDQ3LCAxNTYsIDIxNiwgODgsIAorICAgIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgNDcsIDIwMSwgMTQ3LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDQ3LCAKKyAgICAyMTksIDI1NSwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCA0NywgMjAwLCAxMjMsIDIxNiwgODgsIDI0NiwgCisgICAgMTYwLCAyMzQsIDE1MSwgMjEzLCAxOSwgMTUwLCAyMjQsIDg5LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDIxMywgCisgICAgMTksIDIwNSwgMTc0LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDIxMiwgOSwgMjM1LCAxMjMsIDIwOCwgNzYsIAorICAgIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMjEzLCAxOSwgMTUwLCAxNjgsIDIzNywgODksIDIxNiwgODgsIDI0NiwgCisgICAgMTYwLCAyMzQsIDE1MSwgMjEzLCAxOSwgMTUwLCAyMzcsIDg5LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDIxMiwgCisgICAgOSwgMjM1LCAxMjMsIDIwOCwgNzcsIDIzNywgODksIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMjEyLCA5LCAxNTAsIAorICAgIDIyNCwgODksIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMjEyLCA5LCAyMDUsIDE3NCwgMjE2LCA4OCwgMjQ2LCAKKyAgICAxNjAsIDIzNCwgMTUxLCAyMTIsIDksIDE1MCwgMTY4LCAyMzcsIDg5LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIAorICAgIDIxMiwgOSwgMTUwLCAyMzcsIDg5LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDIyMSwgMjA1LCAyMDUsIDE3NCwgCisgICAgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAyMzUsIDEyMywgMjA4LCA3NywgMjAzLCA3MiwgMjE2LCA4OCwgMjQ2LCAKKyAgICAxNjAsIDIzNCwgMTUxLCAyMjEsIDIwNSwgMTUwLCAxNjgsIDIzNywgODksIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgCisgICAgMjIxLCAyMDUsIDE1MCwgMjM3LCA4OSwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAyMjQsIDU3LCAxNTAsIDIyNCwgCisgICAgODksIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMjI0LCA1NywgMjA1LCAxNzQsIDIxNiwgODgsIDI0NiwgMTYwLCAKKyAgICAyMzQsIDE1MSwgMjM1LCAxMjMsIDIwOCwgNzYsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMjI0LCA1NywgMTUwLCAKKyAgICAxNjgsIDIzNywgODksIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMjI0LCA1NywgMTUwLCAyMzcsIDg5LCAyMTYsIAorICAgIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDIzNSwgMTIzLCAyMDgsIDc3LCAyMzcsIDg5LCAxNzQsIDEsIDYyLCAxNzQsIDEsIAorICAgIDI1MiwgMTM4LCAxNzQsIDEsIDcwLCAxNzQsIDEsIDIyOCwgMTUxLCAxNzQsIDEsIDY2LCAxNzQsIDEsIDIwMywgMTgyLCAKKyAgICAxNzQsIDEsIDEwOSwgMTQ2LCAxNzQsIDEsIDEwOSwgMjEyLCAyMTYsIDE3NCwgMSwgMTA5LCAxNTYsIDE3NCwgMSwgNzIsIAorICAgIDE3NCwgMSwgMjUxLCAxNzYsIDE3NCwgMSwgNzQsIDE3NCwgMSwgMjUwLCAxMzksIDE3NCwgMSwgMTYxLCAxNzQsIDEsIDIyNiwgCisgICAgMjA3LCAxNzQsIDEsIDIzNiwgODksIDE3NCwgMSwgMjM1LCAxOTksIDE3NCwgMSwgMjE5LCAyNTMsIDE3NCwgMSwgMjQ3LCAKKyAgICAxOTAsIDE3NCwgMSwgMjQ3LCAzNywgMTc0LCAxLCAyMjcsIDI0OCwgMTc0LCAxLCAyMjcsIDIxNSwgMTc0LCAxLCAyMTgsIAorICAgIDYwLCAxNzQsIDEsIDIwNCwgMjUzLCAxNzQsIDEsIDIwNCwgMjQxLCAxNzQsIDEsIDI0MSwgMjIwLCAxNzQsIDEsIDI0MSwgCisgICAgMjA0LCAxNzQsIDEsIDIxOSwgMjEsIDE3NCwgMSwgMjA3LCAzNiwgMTc0LCAxLCAyMDYsIDEyMiwgMTc0LCAxLCAyNDIsIDU4LCAKKyAgICAxNzQsIDEsIDI0MSwgMTAwLCAxNzQsIDEsIDE4OCwgMTc0LCAxLCAxNzIsIDE3NCwgMSwgMjE1LCAyNDUsIDE3NCwgMSwgCisgICAgMjQ5LCAxMzYsIDE3NCwgMSwgMjQ4LCAyMDAsIDE3NCwgMSwgMTc4LCAxNzQsIDEsIDE4MywgMTc0LCAxLCAyMTMsIDI1MiwgCisgICAgMTc0LCAxLCAxOTQsIDE3NCwgMSwgMjAzLCA5MCwgMTc0LCAxLCAyMTAsIDExNCwgMTc0LCAxLCAyMDgsIDE3OSwgMTc0LCAxLCAKKyAgICAyMTIsIDY0LCAxNzQsIDEsIDE0NCwgMTc0LCAyMiwgMiwgMjUyLCAxMzgsIDE3NCwgMjIsIDIsIDcwLCAxNzQsIDIyLCAyLCAKKyAgICAyMjgsIDE1MSwgMTc0LCAyMiwgMiwgNjYsIDE3NCwgMjIsIDIsIDIwMywgMTgyLCAxNzQsIDIyLCAyLCAxMDksIDE0NiwgCisgICAgMTc0LCAyMiwgMiwgMTA5LCAyMTIsIDIxNiwgMTc0LCAyMiwgMiwgMTA5LCAxNTYsIDE3NCwgMjIsIDIsIDcyLCAxNzQsIDIyLCAKKyAgICAyLCAyNTEsIDE3NiwgMTc0LCAyMiwgMiwgNzQsIDE3NCwgMjIsIDIsIDI1MCwgMTM5LCAxNzQsIDIsIDI0NywgMTQ5LCAxNzQsIAorICAgIDIsIDI1MSwgMzMsIDE3NCwgMiwgMjAyLCAyMDMsIDE3NCwgMiwgMjAyLCAyMDgsIDE3NCwgMiwgMjUwLCAxMjIsIDE3NCwgCisgICAgMjQyLCAxMCwgMTc0LCA1MywgMjQyLCAxMCwgMTc0LCAyMDAsIDIzOCwgMjEwLCAxNTQsIDE3NCwgMjM2LCA1MywgMjM3LCAKKyAgICA5MiwgMTc0LCAyMzYsIDUzLCAyMzcsIDkxLCAxNzQsIDE3LCAxOTksIDgxLCAxNzQsIDE3LCAxMDIsIDE3NCwgMTcsIDEwNSwgCisgICAgMTc0LCAxNywgMTQ3LCAxNzQsIDE3LCAxNDksIDE3NCwgMTcsIDE2NCwgMTc0LCAxNywgMTg3LCAxNzQsIDE3LCAyMTAsIAorICAgIDEzNSwgMTc0LCAxNywgMTkyLCAxNzQsIDE3LCAyMTksIDExMywgMTc0LCA0MSwgMTAyLCAxNzQsIDQxLCAxMDUsIDE3NCwgCisgICAgNDEsIDE0NywgMTc0LCA0MSwgMTQ5LCAxNzQsIDQxLCAxNjQsIDE3NCwgNDEsIDE4NywgMTc0LCA0MSwgMjEwLCAxMzUsIAorICAgIDE3NCwgNDEsIDE5MiwgMTc0LCA0MSwgMjE5LCAxMTMsIDE3NCwgNDEsIDIwNiwgMTY2LCAxNzQsIDQxLCAyMDQsIDE1OSwgCisgICAgMTc0LCA0MSwgMjA2LCA2NywgMTc0LCA0MSwgMjM2LCAyMzUsIDE3NCwgNDEsIDIzNywgMTA0LCAxNzQsIDQxLCAyMDksIDkyLCAKKyAgICAxNzQsIDQxLCAyMTAsIDEyOSwgMTc0LCA0MSwgMjM4LCAyMjIsIDE3NCwgNDEsIDIxOSwgMTA4LCAxNzQsIDIzMywgODEsIAorICAgIDIwMywgMjQwLCA4MSwgMjIyLCAxNTEsIDIzNCwgMTM3LCA4MSwgMjIyLCAxNTEsIDEzNCwgMjEwLCAxMDYsIDIyMiwgMTUxLCAKKyAgICAxLCAxNjEsIDIyMiwgMTUxLCAxLCAyMjYsIDIwNywgMjIyLCAxNTEsIDEsIDIzNiwgODksIDIyMiwgMTUxLCAxLCAyMTksIAorICAgIDI1MywgMjIyLCAxNTEsIDEsIDI0NywgMTkwLCAyMjIsIDE1MSwgMSwgMjQ3LCAzNywgMjIyLCAxNTEsIDEsIDIyNywgMjQ4LCAKKyAgICAyMjIsIDE1MSwgMSwgMjE4LCA2MCwgMjIyLCAxNTEsIDEsIDIwNywgMzYsIDIyMiwgMTUxLCAxLCAyMDYsIDEyMiwgMjIyLCAKKyAgICAxNTEsIDEsIDI0MiwgNTgsIDIyMiwgMTUxLCAxLCAxODgsIDIyMiwgMTUxLCAxLCAxNzIsIDIyMiwgMTUxLCAxLCAyMTUsIAorICAgIDI0NSwgMjIyLCAxNTEsIDEsIDI0OSwgMTM2LCAyMjIsIDE1MSwgMSwgMTc4LCAyMjIsIDE1MSwgMSwgMjA1LCAzMiwgMjIyLCAKKyAgICAxNTEsIDEsIDIwNSwgMjIsIDIyMiwgMTUxLCAxLCAyMzksIDkzLCAyMjIsIDE1MSwgMSwgMjAxLCAxMTQsIDIyMiwgMTUxLCAKKyAgICAxLCAxOTksIDc3LCAyMjIsIDE1MSwgMSwgMTk5LCAxMTQsIDIyMiwgMTUxLCAxLCAyNTUsIDE0MiwgMjIyLCAxNTEsIDEsIAorICAgIDE4MywgMjIyLCAxNTEsIDEsIDIxMywgMjUyLCAyMjIsIDE1MSwgMSwgMTk0LCAyMjIsIDE1MSwgMSwgMjEwLCAxMTQsIDIyMiwgCisgICAgMTUxLCAxLCAyMTIsIDY0LCAyMjIsIDE1MSwgMSwgMTQ0LCAyMjIsIDE1MSwgMSwgNjIsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAKKyAgICAxNjEsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAyMjYsIDIwNywgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDIzNiwgODksIDIyMiwgCisgICAgMTUxLCAyMDgsIDEyLCAxLCAyMTksIDI1MywgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDI0NywgMTkwLCAyMjIsIDE1MSwgMjA4LCAKKyAgICAxMiwgMSwgMjQ3LCAzNywgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDIyNywgMjQ4LCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgCisgICAgMjE4LCA2MCwgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDIwNywgMzYsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAyMDYsIDEyMiwgCisgICAgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDI0MiwgNTgsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAxODgsIDIyMiwgMTUxLCAyMDgsIAorICAgIDEyLCAxLCAxNzIsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAyMTUsIDI0NSwgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDI0OSwgCisgICAgMTM2LCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgMTc4LCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgMjA1LCAzMiwgMjIyLCAxNTEsIAorICAgIDIwOCwgMTIsIDEsIDIwNSwgMjIsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAyMzksIDkzLCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgCisgICAgMjAxLCAxMTQsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAxOTksIDc3LCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgMTk5LCAxMTQsIAorICAgIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAxODMsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAyMTMsIDI1MiwgMjIyLCAxNTEsIDIwOCwgCisgICAgMTIsIDEsIDE5NCwgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDIxMCwgMTE0LCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgMjEyLCAKKyAgICA2NCwgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDE0NCwgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDYyLCAyMjIsIDE1MSwgMjIsIDIsIAorICAgIDI1MiwgMTM4LCAyMjIsIDE1MSwgMjIsIDIsIDcwLCAyMjIsIDE1MSwgMjIsIDIsIDY2LCAyMjIsIDE1MSwgMjIsIDIsIDcyLCAKKyAgICAyMjIsIDE1MSwgMjIsIDIsIDc0LCAyMjIsIDE1MSwgMiwgMjUxLCAzMywgMjIyLCAxNTEsIDIsIDI0NywgMTQ5LCAxMCwgMiwgCisgICAgNjIsIDEwLCAyLCAzNSwgMjQsIDYyLCAxMCwgMiwgMzUsIDI0LCAyNDksIDExOCwgMTAsIDIsIDM1LCAyNCwgMjM2LCA1OCwgCisgICAgMjA2LCAxNTUsIDEwLCAyLCAzNSwgMjQsIDE0NCwgMTAsIDIsIDM1LCAyNCwgMjI4LCAxNTMsIDEwLCAyLCAzNSwgMjQsIAorICAgIDIyNSwgMTU2LCAyMzUsIDI4LCAxMCwgMiwgMzUsIDI0LCAyMjAsIDI1MCwgMTAsIDIsIDM1LCAyNCwgMjEyLCA1MCwgMTAsIAorICAgIDIsIDI1NCwgMTQ3LCAxMCwgMiwgMjUyLCA4OSwgMTAsIDIsIDI1MiwgOTAsIDI0LCAyNTAsIDE3OSwgMTAsIDIsIDI1MiwgCisgICAgOTAsIDI0LCAyMzksIDEyNCwgMjM1LCAyOCwgMTAsIDIsIDI1MiwgOTAsIDI0LCAyMzYsIDcxLCAxMCwgMiwgMjUyLCA5MCwgCisgICAgMjQsIDIzNiwgNTgsIDIwNiwgMTU1LCAxMCwgMiwgMjUyLCA5MCwgMjQsIDE0NCwgMTAsIDIsIDI1MiwgOTAsIDI0LCAyMjgsIAorICAgIDE1NCwgMjM1LCAyOCwgMTAsIDIsIDI1MiwgOTAsIDI0LCAyMjgsIDEyNywgMTAsIDIsIDI1MiwgOTAsIDI0LCAyMjUsIDE1NywgCisgICAgMTAsIDIsIDI1MiwgOTAsIDI0LCAyMTAsIDQ5LCAxMCwgMiwgMjUyLCA5MCwgMjQsIDEwOCwgOTMsIDEwOCwgOTMsIDY2LCAKKyAgICAxMCwgMiwgMjUyLCA5MCwgMjM1LCAyOCwgMTAsIDIsIDI1MiwgNiwgMTAsIDIsIDI1MiwgNywgMjQsIDI0OSwgOTgsIDEwLCAKKyAgICAyLCAyNTIsIDcsIDI0LCAyMzYsIDU4LCAyMDYsIDE1NSwgMTAsIDIsIDI1MiwgNywgMjQsIDIyMiwgNzcsIDkzLCAyMzgsIAorICAgIDE3OSwgMTAsIDIsIDI1MiwgNywgMjQsIDIxMCwgMTEyLCAxMCwgMiwgMjUyLCA3LCAyNCwgMjA3LCAwLCAxMCwgMiwgMjUxLCAKKyAgICAyMzUsIDEwLCAyLCAyNTEsIDE1OSwgMTAsIDIsIDI1MSwgMTYwLCAyNCwgMjM4LCAxMDksIDEwLCAyLCAyNTEsIDE2MCwgMjQsIAorICAgIDIxMCwgMTEsIDkzLCAyMzUsIDEzNSwgMTAsIDIsIDI1MSwgMTUxLCAxMCwgMiwgMjUxLCAxNTIsIDI0LCAyNTEsIDE1MSwgCisgICAgMTAsIDIsIDI1MSwgMTUyLCAyNCwgMjQxLCAyOSwgMTAsIDIsIDI1MSwgMTUyLCAyNCwgMjM1LCAxMzUsIDEwLCAyLCAyNTEsIAorICAgIDE1MiwgMjQsIDE0NCwgMTAsIDIsIDI1MSwgMTUyLCAyNCwgMjI3LCA5MSwgMTAsIDIsIDI1MSwgMTUyLCAyNCwgMjI2LCAKKyAgICAxNjMsIDEwLCAyLCAyNTEsIDE1MiwgMjQsIDIxMCwgNjUsIDEwLCAyLCAyNTEsIDE1MiwgMjQsIDIwMywgMTkwLCAxMCwgMiwgCisgICAgMjUxLCAxNDgsIDEwLCAyLCAyNTEsIDE0MCwgMTAsIDIsIDI1MSwgOTcsIDEwLCAyLCAyNTEsIDk4LCAyNCwgMjEwLCA2NSwgCisgICAgMTAsIDIsIDI1MSwgODUsIDEwLCAyLCAyNTEsIDg2LCAxMTksIDI1MSwgODUsIDEwLCAyLCAyNTEsIDg2LCAxMjYsIDIwNSwgCisgICAgMjMyLCAxMCwgMiwgMjUxLCA4NiwgOTMsIDIyMCwgMTQ4LCAyMTcsIDQwLCAyNTEsIDg2LCA5MywgMjIwLCAxNDcsIDEwLCAyLCAKKyAgICAyNTEsIDg2LCA5MywgMjIwLCAxNDgsIDIwOCwgMTkyLCAxMCwgMiwgMjUxLCA1MywgMTAsIDIsIDI1MSwgMjMsIDEwLCAyLCAKKyAgICAyNTAsIDI0NiwgMTAsIDIsIDI1MCwgMjQ3LCAyNCwgMjI1LCAyNDUsIDEwLCAyLCAyNTAsIDIxOCwgMTAsIDIsIDI1MCwgCisgICAgMTg2LCAxMCwgMiwgMjUwLCAxODEsIDEwLCAyLCAyNTAsIDE4MiwgMTk5LCAzMiwgMjA2LCAxNTUsIDEwLCAyLCAyNTAsIAorICAgIDE4MiwgMjI3LCA5NSwgMjA2LCAxNTUsIDEwLCAyLCAyNTAsIDE4MiwgMTE5LCAyNTAsIDE4MiwgMjA0LCAyMTAsIDExOSwgCisgICAgMjA0LCAyMTAsIDIwNCwgMjEwLCAxMTksIDIwNCwgMjEwLCAyMTYsIDEzNSwgMTAsIDIsIDI1MCwgMTgyLCAxMTksIDI1MCwgCisgICAgMTgyLCAxMTksIDI1MCwgMTgxLCAxMCwgMiwgMjUwLCAxODIsIDExOSwgMjUwLCAxODIsIDExOSwgMjUwLCAxODIsIDI0MiwgCisgICAgMjI4LCAyNTAsIDE4MiwgMTE5LCAyNTAsIDE4MiwgMTE5LCAyNTAsIDE4MSwgMTAsIDIsIDI1MCwgMTc5LCAxMCwgMiwgMjUwLCAKKyAgICAxNzUsIDEwLCAyLCAyNDksIDEzNiwgMTAsIDIsIDI0OSwgMTE4LCAxMCwgMiwgMjQ5LCAxMTIsIDEwLCAyLCAyNDksIDEwNSwgCisgICAgMTAsIDIsIDI0OSwgOTksIDEwLCAyLCAyNDksIDEwMCwgMTE5LCAyNDksIDk5LCAxMCwgMiwgMjQ5LCA5OCwgMTAsIDIsIAorICAgIDE0OCwgMTAsIDIsIDI0OSwgNzYsIDEwLCAyLCAyNDgsIDE4OCwgMTAsIDIsIDI0OCwgMTg5LCAyNCwgNjIsIDEwLCAyLCAKKyAgICAyNDgsIDE4OSwgMjQsIDIzNiwgNDksIDEwLCAyLCAyNDgsIDE4OSwgMjQsIDIyOCwgMTU0LCAyMzUsIDI4LCAxMCwgMiwgCisgICAgMjQ4LCAzNiwgMTAsIDIsIDI0OCwgMzcsIDExOSwgMjQ4LCAzNywgMjUyLCA4OSwgMTAsIDIsIDI0OCwgMzcsIDExOSwgMjQ4LCAKKyAgICAzNywgMjA0LCA1LCAxMCwgMiwgMjQ4LCAzNywgMjQyLCAyMjgsIDI0OCwgMzYsIDEwLCAyLCAyNDgsIDE0LCAxMCwgMiwgCisgICAgMjQ4LCAxNSwgMTE5LCAyNDgsIDE0LCAxMCwgMiwgMjQ4LCAzLCAxMCwgMiwgMjQ4LCAyLCAxMCwgMiwgMjQyLCA1OCwgMTAsIAorICAgIDIsIDI0MiwgNDgsIDEwLCAyLCAyNDIsIDQ5LCAyMjYsIDEzMiwgMjQsIDM1LCA5MywgMjIyLCAxMzUsIDEwLCAyLCAyNDIsIAorICAgIDQ5LCAyMjYsIDEzMiwgMjQsIDI1MSwgOTcsIDEwLCAyLCAyNDIsIDQ5LCAyMjYsIDEzMiwgMjQsIDI0OSwgOTgsIDEwLCAyLCAKKyAgICAyNDIsIDQ5LCAyMjYsIDEzMiwgMjQsIDI0OCwgMTg4LCAxMCwgMiwgMjQyLCA0OSwgMjI2LCAxMzIsIDI0LCAyMzYsIDg5LCAKKyAgICAxMCwgMiwgMjQyLCA0OSwgMjI2LCAxMzIsIDI0LCAyMzYsIDkwLCA5MywgMjIyLCAxMzUsIDEwLCAyLCAyNDIsIDQ5LCAyMjYsIAorICAgIDEzMiwgMjQsIDIzNSwgMTYxLCAxMCwgMiwgMjQyLCA0OSwgMjI2LCAxMzIsIDI0LCAyMzUsIDE0MywgMTAsIDIsIDI0MiwgCisgICAgNDksIDIyNiwgMTMyLCAyNCwgMjM1LCAzOSwgMTAsIDIsIDI0MiwgNDksIDIyNiwgMTMyLCAyNCwgMTQ0LCAxMCwgMiwgMjQyLCAKKyAgICA0OSwgMjI2LCAxMzIsIDI0LCAyMjgsIDM1LCAxMCwgMiwgMjQyLCA0OSwgMjI2LCAxMzIsIDI0LCAyMjgsIDM2LCA5MywgCisgICAgMjI0LCA0MiwgMTAsIDIsIDI0MiwgNDksIDIyNiwgMTMyLCAyNCwgMjI3LCA3NiwgMTAsIDIsIDI0MiwgNDksIDIyNiwgMTMyLCAKKyAgICAyNCwgMTk0LCAxMCwgMiwgMjQyLCA0OSwgMjI2LCAxMzIsIDI0LCAyMjQsIDQyLCAxMCwgMiwgMjQyLCA0OSwgMjI2LCAxMzIsIAorICAgIDI0LCAyMjQsIDQzLCA5MywgMjIyLCAxMzQsIDEwLCAyLCAyNDIsIDQ5LCAyMjYsIDEzMiwgMjQsIDIyNCwgMjUsIDEwLCAyLCAKKyAgICAyNDIsIDQ5LCAyMjYsIDEzMiwgMjQsIDIyMCwgMzQsIDEwLCAyLCAyNDIsIDQ5LCAyMjYsIDEzMiwgMjQsIDIxNiwgMTM2LCAKKyAgICA5MywgMjE2LCAxMzUsIDEwLCAyLCAyNDIsIDQ5LCAyMjYsIDEzMiwgMjQsIDIwOSwgMTgyLCAxMCwgMiwgMjQyLCA0OSwgCisgICAgMjI2LCAxMzIsIDI0LCAyMDcsIDAsIDEwLCAyLCAyNDIsIDQ5LCAyMjYsIDEzMiwgMjQsIDIwNCwgNDgsIDkzLCAyMzUsIAorICAgIDE0MywgMTAsIDIsIDI0MiwgNDksIDIyNiwgMTMyLCAyNCwgMjAzLCAxOTAsIDEwLCAyLCAyNDIsIDIwLCAxMCwgMiwgMjQxLCAKKyAgICAyNTQsIDEwLCAyLCAyNDEsIDI1MywgMTAsIDIsIDI0MSwgMjUyLCAxMCwgMiwgMjQxLCA3NiwgMTAsIDIsIDI0MSwgNTgsIAorICAgIDEwLCAyLCAyNDEsIDMxLCAxMCwgMiwgMjQxLCAzMiwgMjQsIDIxMCwgNjUsIDEwLCAyLCAyNDEsIDI5LCAxMCwgMiwgMjQxLCAKKyAgICAxOSwgMTAsIDIsIDI0MSwgMjAsIDIyNywgMzksIDEwOCwgMjM1LCAyOSwgMjQwLCAyNTUsIDEwLCAyLCAyNDAsIDI1NSwgMTAsIAorICAgIDIsIDIzOSwgMTM3LCAxMCwgMiwgMjM5LCAxMzgsIDExOSwgMjM5LCAxMzcsIDEwLCAyLCAyMzksIDEzOCwgMjM1LCAyOCwgCisgICAgMTAsIDIsIDIzOSwgMTM4LCAyMTAsIDQ2LCAxMCwgMiwgMjM5LCAxMzUsIDEwLCAyLCAyMzksIDEzNiwgMjQsIDIzOCwgOTEsIAorICAgIDEwLCAyLCAyMzksIDEzNCwgMTAsIDIsIDIzOSwgMTMxLCAxMCwgMiwgMjM5LCAxMzAsIDEwLCAyLCAyMzksIDEyOSwgMTAsIAorICAgIDIsIDIzOSwgMTI1LCAxMCwgMiwgMjM5LCAxMjMsIDEwLCAyLCAyMzksIDEyNCwgMjM1LCAyOCwgMTAsIDIsIDIzOSwgMTI0LCAKKyAgICAyMzUsIDI5LCAyMzUsIDI4LCAxMCwgMiwgMjM5LCAxMjIsIDEwLCAyLCAyMzksIDExNSwgMTAsIDIsIDcyLCAxMCwgMiwgCisgICAgMTk3LCAyNCwgMjE2LCAxMzUsIDEwLCAyLCAxOTcsIDExOSwgMTk3LCAyMTgsIDkwLCAxMTksIDIxOCwgODksIDEwLCAyLCAKKyAgICAyMzksIDI4LCAxMCwgMiwgMjM5LCAyOSwgMjQsIDM1LCA5MywgMjM0LCAyMzYsIDkzLCAyNDIsIDU4LCAxMCwgMiwgMjM5LCAKKyAgICAyOSwgMjQsIDIzNiwgNDksIDEwLCAyLCAyMzksIDI5LCAyNCwgMjIxLCAyMTEsIDEwLCAyLCAyMzksIDI5LCAyNCwgMjEyLCAKKyAgICAzNSwgMTAsIDIsIDIzOSwgMjksIDI0LCAyMTAsIDY1LCAxMCwgMiwgMjM5LCAyOSwgMjQsIDY2LCAxMCwgMiwgMjM5LCAxLCAKKyAgICAxMCwgMiwgMjM4LCAyNDUsIDEwLCAyLCAyMzgsIDIwOSwgMTAsIDIsIDIzOCwgMTc5LCAxMCwgMiwgMjM4LCAxODAsIDI0LCAKKyAgICAyMzYsIDU3LCAxMCwgMiwgMjM4LCAxODAsIDI0LCAyMzYsIDU4LCAyMDYsIDE1NSwgMTAsIDIsIDIzOCwgMTgwLCAyNCwgCisgICAgMjIyLCA3NiwgMTAsIDIsIDIzOCwgMTgwLCAyNDIsIDIyOCwgMjM4LCAxNzksIDEwLCAyLCAyMzgsIDE4MCwgMjE3LCA0MCwgCisgICAgMjM4LCAxNzksIDEwLCAyLCAyMzgsIDE4MCwgMjA4LCAxOTIsIDEwLCAyLCAyMzgsIDExMiwgMTAsIDIsIDIzOCwgMTA5LCAKKyAgICAxMCwgMiwgMjM4LCA5MSwgMTAsIDIsIDIzOCwgMTAsIDEwLCAyLCAyMzgsIDExLCAyNCwgNjIsIDEwLCAyLCAyMzgsIDExLCAKKyAgICAyNCwgMzUsIDkzLCAyMjUsIDkzLCAxMCwgMiwgMjM4LCAxMSwgMjQsIDM1LCA5MywgMjI1LCA5NCwgMjQsIDIyNSwgOTMsIAorICAgIDEwLCAyLCAyMzgsIDExLCAyNCwgMjUxLCA4NSwgMTAsIDIsIDIzOCwgMTEsIDI0LCAyNDksIDExOCwgMTAsIDIsIDIzOCwgCisgICAgMTEsIDI0LCAyMzksIDEyNCwgMjM1LCAyOCwgMTAsIDIsIDIzOCwgMTEsIDI0LCAyMzksIDEyNCwgMjM1LCAyOSwgMjM1LCAKKyAgICAyOCwgMTAsIDIsIDIzOCwgMTEsIDI0LCAxNDQsIDEwLCAyLCAyMzgsIDExLCAyNCwgMjM0LCAyMzYsIDIzNSwgMjgsIDEwLCAKKyAgICAyLCAyMzgsIDExLCAyNCwgMjI4LCAxNTQsIDIzNSwgMjgsIDEwLCAyLCAyMzgsIDExLCAyNCwgMjI3LCAzOCwgMTAsIDIsIAorICAgIDIzOCwgMTEsIDI0LCAyMjcsIDM5LCAyMDgsIDE5MiwgMTAsIDIsIDIzOCwgMTEsIDI0LCAyMjYsIDEzLCAxMCwgMiwgMjM4LCAKKyAgICAxMSwgMjQsIDE5NCwgMTAsIDIsIDIzOCwgMTEsIDI0LCAyMjUsIDk0LCAyNCwgMjI1LCA5MywgMTAsIDIsIDIzOCwgMTEsIAorICAgIDI0LCAyMjQsIDIxMCwgMTAsIDIsIDIzOCwgMTEsIDI0LCAyMjQsIDQyLCAxMCwgMiwgMjM4LCAxMSwgMjQsIDIwNCwgNDcsIAorICAgIDEwLCAyLCAyMzgsIDExLCAyNCwgMjA0LCAzNiwgMTAsIDIsIDIzNiwgODksIDEwLCAyLCAyMzYsIDkwLCAyMzUsIDI4LCAxMCwgCisgICAgMiwgMjM2LCA4NywgMTAsIDIsIDIzNiwgODgsIDI0LCAzNSwgOTMsIDI0MiwgNTksIDkzLCAxNDQsIDEwLCAyLCAyMzYsIDg4LCAKKyAgICAyNCwgMzUsIDkzLCAxNDQsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMzUsIDkzLCAyMjgsIDE1MywgMTAsIDIsIDIzNiwgODgsIAorICAgIDI0LCAyNTIsIDcsIDIwNiwgMTU2LCA5MywgMjA3LCAyNCwgMTAsIDIsIDIzNiwgODgsIDI0LCAyNTEsIDg1LCAxMCwgMiwgCisgICAgMjM2LCA4OCwgMjQsIDI1MCwgMTgxLCAxMCwgMiwgMjM2LCA4OCwgMjQsIDI1MCwgMTgwLCA5MywgMjM2LCA3MSwgMTAsIDIsIAorICAgIDIzNiwgODgsIDI0LCAyNDksIDExOCwgMTAsIDIsIDIzNiwgODgsIDI0LCAyNDksIDc3LCA5MywgMjEzLCAyNTIsIDEwLCAyLCAKKyAgICAyMzYsIDg4LCAyNCwgMjQ4LCAzLCAxMCwgMiwgMjM2LCA4OCwgMjQsIDI0OCwgNCwgOTMsIDIxMywgMjUyLCAxMCwgMiwgCisgICAgMjM2LCA4OCwgMjQsIDI0MiwgNTgsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjQxLCA3NiwgMTAsIDIsIDIzNiwgODgsIDI0LCAKKyAgICAyNDEsIDMyLCAyNCwgMjEwLCA2NSwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMzksIDEzNSwgMTAsIDIsIDIzNiwgODgsIDI0LCAKKyAgICAyMzgsIDIwOSwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMzgsIDIxMCwgOTMsIDE5NCwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMzgsIAorICAgIDE3OSwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMzgsIDE4MCwgMjQsIDIzNiwgNTgsIDIwNiwgMTU1LCAxMCwgMiwgMjM2LCA4OCwgCisgICAgMjQsIDIzNiwgNTgsIDIwNiwgMTU1LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIzNiwgNDksIDEwLCAyLCAyMzYsIDg4LCAyNCwgCisgICAgMjM1LCAxNjEsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjM1LCAxNTksIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjM1LCAxNjAsIDkzLCAKKyAgICA2MiwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMzUsIDE0NCwgOTMsIDIwOCwgMjQsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjM0LCAKKyAgICAyMzYsIDkzLCAyMjQsIDQzLCA5MywgMjM4LCA5MSwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMzQsIDIxNiwgMTAsIDIsIDIzNiwgCisgICAgODgsIDI0LCAyMzQsIDIxNywgOTMsIDE5NCwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMzQsIDc2LCA5MywgMjI0LCAyMTAsIDEwLCAKKyAgICAyLCAyMzYsIDg4LCAyNCwgMjMzLCA5MiwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMjgsIDE1NCwgMjM1LCAyOCwgMTAsIDIsIAorICAgIDIzNiwgODgsIDI0LCAyMjgsIDIxLCA5MywgMjMzLCA5OCwgOTMsIDI1MCwgMTgxLCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIyNywgCisgICAgNzYsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjI3LCAzOCwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMjYsIDE1NywgMTAsIDIsIAorICAgIDIzNiwgODgsIDI0LCAyMjYsIDE1OCwgOTMsIDIyNSwgOTMsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjI2LCAxNCwgOTMsIDI1MSwgCisgICAgODUsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMTk0LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIyMiwgNzcsIDkzLCAyMzgsIDE3OSwgCisgICAgMTAsIDIsIDIzNiwgODgsIDI0LCAyMjEsIDIxMSwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMTgsIDg5LCAxMCwgMiwgMjM2LCAKKyAgICA4OCwgMjQsIDIxOCwgOTAsIDExOSwgMjE4LCA4OSwgMTAsIDIsIDIzNiwgODgsIDI0LCAxNzIsIDEwLCAyLCAyMzYsIDg4LCAKKyAgICAyNCwgMjEyLCAzNSwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMTIsIDAsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjEwLCA2NSwgMTAsIAorICAgIDIsIDIzNiwgODgsIDI0LCAyMTAsIDY2LCA5MywgMjA0LCAxOTIsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjEwLCAzMSwgMTAsIAorICAgIDIsIDIzNiwgODgsIDI0LCAyMDcsIDIzNCwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMDcsIDAsIDEwLCAyLCAyMzYsIDg4LCAyNCwgCisgICAgNjYsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjA0LCAzNiwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMDQsIDM3LCA5MywgMjM5LCAKKyAgICAxMzcsIDEwLCAyLCAyMzYsIDg4LCAxMTksIDIzNiwgODcsIDEwLCAyLCAyMzYsIDgyLCAxMCwgMiwgMjM2LCA4MywgMjQyLCAKKyAgICAyMjgsIDIzNiwgODIsIDEwLCAyLCAyMzYsIDgwLCAxMCwgMiwgMjM2LCA4MSwgMTE5LCAyMzYsIDgxLCAyMzYsIDUwLCAxMTksIAorICAgIDIzNiwgNDksIDEwLCAyLCAyMzYsIDcxLCAxMCwgMiwgMjM2LCA3MiwgMjM2LCA4MSwgMTE5LCAyMzYsIDgxLCAyMzYsIDUwLCAKKyAgICAxMTksIDIzNiwgNDksIDEwLCAyLCAyMzYsIDcwLCAxMCwgMiwgMjM2LCA2OCwgMTAsIDIsIDIzNiwgNTksIDEwLCAyLCAyMzYsIAorICAgIDU3LCAxMCwgMiwgMjM2LCA1OCwgMjA2LCAxNTUsIDEwLCAyLCAyMzYsIDU4LCAxMTksIDIzNiwgNTcsIDEwLCAyLCAyMzYsIAorICAgIDU4LCAyNDIsIDIyOCwgMjM2LCA1NywgMTAsIDIsIDIzNiwgNDksIDEwLCAyLCAyMzYsIDQ4LCAxMCwgMiwgMjM2LCA0MywgCisgICAgMTAsIDIsIDIzNSwgMjQyLCAxMCwgMiwgMjM1LCAyNDMsIDI0LCAyMjUsIDI0NSwgMTAsIDIsIDIzNSwgMTYxLCAxMCwgMiwgCisgICAgMjM1LCAxNjIsIDI0LCA3MiwgMTAsIDIsIDIzNSwgMTYyLCAyNCwgNjYsIDEwLCAyLCAyMzUsIDE2MiwgMjQyLCAyMjgsIAorICAgIDIzNSwgMTYxLCAxMCwgMiwgMjM1LCAxNTksIDEwLCAyLCAyMzUsIDE2MCwgMTE5LCAyMzUsIDE1OSwgMTAsIDIsIDIzNSwgCisgICAgMTYwLCAyNDIsIDIyOCwgMjM1LCAxNTksIDEwLCAyLCAyMzUsIDE1NiwgMTAsIDIsIDIzNSwgMTQzLCAxMCwgMiwgMjM1LCAKKyAgICAxNDQsIDIzNSwgMjgsIDEwLCAyLCAyMzUsIDE0MSwgMTAsIDIsIDIzNSwgMTQyLCAyNCwgMzUsIDkzLCAyMjgsIDE1MywgMTAsIAorICAgIDIsIDIzNSwgMTQyLCAyNCwgMjM2LCA1OCwgMjA2LCAxNTUsIDEwLCAyLCAyMzUsIDE0MiwgMjQsIDIyOCwgMTUzLCAxMCwgMiwgCisgICAgMjM1LCAxNDIsIDI0LCAyMjQsIDQzLCA5MywgMjI4LCAxNTMsIDEwLCAyLCAyMzUsIDE0MiwgMjQsIDE3MiwgMTAsIDIsIAorICAgIDIzNSwgMTM3LCAxMCwgMiwgMjM1LCAxMzUsIDEwLCAyLCAyMzUsIDEzNiwgMjQyLCAyMjgsIDIzNSwgMTM1LCAxMCwgMiwgCisgICAgMjM1LCAxMzYsIDI0LCAyNDksIDExOCwgMTAsIDIsIDIzNSwgMTM2LCAyNCwgMjA3LCAwLCAxMCwgMiwgMjM1LCAxMzYsIAorICAgIDIwNiwgMTU1LCAxMCwgMiwgMjM1LCA1MCwgMTAsIDIsIDIzNSwgNTEsIDI0MiwgMjI4LCAyMzUsIDUwLCAxMCwgMiwgMjM1LCAKKyAgICA0OCwgMTAsIDIsIDIzNSwgNDksIDI0LCAyMjcsIDc2LCAxMCwgMiwgMjM1LCA0OSwgMjQsIDIyNywgNzcsIDI0LCAyMjgsIAorICAgIDE1NCwgMjM1LCAyOCwgMTAsIDIsIDIzNSwgNDksIDI0LCAyMTgsIDg5LCAxMCwgMiwgMjM1LCA0OSwgMjQsIDIxMiwgMzYsIAorICAgIDkzLCAyMDQsIDIwOSwgMTAsIDIsIDIzNSwgNDksIDIzNSwgMjgsIDEwLCAyLCAyMzUsIDM5LCAxMCwgMiwgMjM1LCA0MCwgCisgICAgMjQsIDM1LCA5MywgMjI1LCAyNDUsIDEwLCAyLCAyMzUsIDQwLCAyNCwgMjI1LCAyNDUsIDEwLCAyLCAyMzUsIDQwLCAxMTksIAorICAgIDIzNSwgNDAsIDIyNCwgMzMsIDEwLCAyLCAyMzUsIDMyLCAxMCwgMiwgMjM1LCAzMCwgMTAsIDIsIDIzNSwgMzEsIDI0LCAKKyAgICAyMTAsIDY1LCAxMCwgMiwgMjM1LCAyMiwgMTAsIDIsIDIzNSwgMjEsIDEwLCAyLCAyMzUsIDE3LCAxMCwgMiwgMjM1LCAxNiwgCisgICAgMTAsIDIsIDE0NCwgMTAsIDIsIDIzNCwgMjM2LCAyMDYsIDE1NSwgMTAsIDIsIDIzNCwgMjM2LCAyMzUsIDI4LCAxMCwgMiwgCisgICAgMjM0LCAyMTYsIDEwLCAyLCAyMzQsIDc1LCAxMCwgMiwgMjM0LCA3NiwgMjQsIDI1MCwgMTgxLCAxMCwgMiwgMjM0LCA3NiwgCisgICAgMjQsIDI1MCwgMTc5LCAxMCwgMiwgMjM0LCA3NiwgMjQsIDI0OSwgMTE4LCAxMCwgMiwgMjM0LCA3NiwgMjQsIDI0MCwgMjU1LCAKKyAgICAxMCwgMiwgMjM0LCA3NiwgMjQsIDIzNiwgODAsIDEwLCAyLCAyMzQsIDc2LCAyNCwgMjI2LCAxNDcsIDEwLCAyLCAyMzQsIAorICAgIDc2LCAyNCwgMjE4LCA4OSwgMTAsIDIsIDIzNCwgNzYsIDI0LCAyMTAsIDY1LCAxMCwgMiwgMjM0LCA3NiwgMjQsIDY2LCAxMCwgCisgICAgMiwgMjMzLCA5NywgMTAsIDIsIDIzMywgOTIsIDEwLCAyLCAyMzMsIDkzLCAyNCwgMjUxLCA4NSwgMTAsIDIsIDIzMywgOTMsIAorICAgIDI0LCAyMzQsIDIxNiwgMTAsIDIsIDIzMywgOTMsIDI0LCAyMjcsIDM4LCAxMCwgMiwgMjMzLCA5MywgMjQsIDIyNCwgMTU0LCAKKyAgICAxMCwgMiwgMjMzLCA5MywgMjQsIDIwNCwgMzYsIDEwLCAyLCAyMzMsIDg4LCAxMCwgMiwgNzAsIDEwLCAyLCAyMzMsIDE5LCAKKyAgICA2MiwgMTAsIDIsIDIzMiwgMjM1LCAxMCwgMiwgMjI4LCAxODEsIDEwLCAyLCAyMjgsIDE4MiwgMTE5LCAyMjgsIDE4MiwgCisgICAgMjQ4LCAzLCAxMCwgMiwgMjI4LCAxODIsIDExOSwgMjI4LCAxODIsIDIwOCwgMTkyLCAxMCwgMiwgMjI4LCAxNTYsIDEwLCAyLCAKKyAgICAyMjgsIDE1MywgMTAsIDIsIDIyOCwgMTU0LCAyNDEsIDU4LCAxMCwgMiwgMjI4LCAxNTQsIDIxMywgODgsIDEwLCAyLCAyMjgsIAorICAgIDE1NCwgMTE5LCAyMjgsIDE1NCwgMjEwLCAxNSwgMTE5LCAyMTAsIDE1LCAyMDQsIDM3LCAxMTksIDIwNCwgMzYsIDEwLCAyLCAKKyAgICAyMjgsIDE1NCwgMjM1LCAyOCwgMTAsIDIsIDIyOCwgMTQ1LCAxMCwgMiwgMjI4LCAxNDYsIDI0LCAyMzYsIDU4LCAyMDYsIAorICAgIDE1NSwgMTAsIDIsIDIyOCwgMTQ0LCAxMCwgMiwgMjI4LCAxMzQsIDEwLCAyLCAyMjgsIDEzNSwgMjQsIDIwNywgMCwgMTAsIAorICAgIDIsIDIyOCwgMTM1LCAyNDIsIDIyOCwgMjI4LCAxMzQsIDEwLCAyLCAyMjgsIDEzNSwgMjE3LCA0MCwgMjI4LCAxMzQsIDEwLCAKKyAgICAyLCAyMjgsIDEzNSwgMjA4LCAxOTIsIDEwLCAyLCAyMjgsIDEyNywgMTAsIDIsIDIyOCwgMTE3LCAxMCwgMiwgMjI4LCAzNSwgCisgICAgMTAsIDIsIDIyOCwgMjAsIDEwLCAyLCAxNjEsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDYyLCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAKKyAgICAyNTEsIDIzNSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjUxLCAyMzYsIDkzLCAyMjYsIDEzLCAxMCwgMiwgMjI3LCAxMDgsIAorICAgIDI0LCAyNTAsIDE3OSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjQ5LCAxMTgsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDI0OSwgCisgICAgOTgsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDE0OCwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjQ4LCAxODgsIDEwLCAyLCAyMjcsIAorICAgIDEwOCwgMjQsIDIzOCwgMTA5LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMzgsIDkxLCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAKKyAgICAyMzYsIDg5LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMzYsIDcxLCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMzYsIDU4LCAyMDYsIAorICAgIDE1NSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjM2LCA0OSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjM2LCA1MCwgOTMsIDIxMCwgCisgICAgMTEzLCA5MywgNjIsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIzNSwgMTYxLCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMzUsIAorICAgIDE0MywgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjM1LCAxMzYsIDkzLCAyMTIsIDAsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIzNSwgCisgICAgMTM2LCAyNDIsIDIyOCwgMjM1LCAxMzUsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIzNSwgNTAsIDEwLCAyLCAyMjcsIDEwOCwgCisgICAgMjQsIDIzNSwgMjEsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIyOCwgMTUzLCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMjgsIAorICAgIDEzNCwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjI3LCA3NiwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjI2LCAxNjMsIDEwLCAyLCAKKyAgICAyMjcsIDEwOCwgMjQsIDIyNiwgMTU3LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMjQsIDIxMCwgMTAsIDIsIDIyNywgMTA4LCAKKyAgICAyNCwgMjI0LCA0MiwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjIyLCA3NiwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjIyLCA3NywgCisgICAgOTMsIDIzOSwgMTM3LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMjIsIDc3LCA5MywgMjM1LCAxNjEsIDEwLCAyLCAyMjcsIAorICAgIDEwOCwgMjQsIDIyMiwgNzcsIDkzLCAyMDYsIDIwMSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjIxLCAyMTEsIDEwLCAyLCAKKyAgICAyMjcsIDEwOCwgMjQsIDIyMSwgMjEyLCA5MywgMjE4LCA4NCwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjIwLCAzNCwgMTAsIDIsIAorICAgIDIyNywgMTA4LCAyNCwgMjE4LCA4OSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjE1LCAyMDQsIDEwLCAyLCAyMjcsIDEwOCwgCisgICAgMjQsIDIxMiwgMTc1LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMTIsIDY0LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMTIsIDAsIAorICAgIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIxMCwgMTE0LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMTAsIDY1LCAxMCwgMiwgMjI3LCAKKyAgICAxMDgsIDI0LCAyMTAsIDMxLCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMDksIDIyMCwgMTAsIDIsIDIyNywgMTA4LCAyNCwgCisgICAgMjA5LCAxNjgsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIwNywgMjQzLCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMDYsIDIzMiwgCisgICAgMTAsIDIsIDIyNywgMTA4LCAyNCwgNjYsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIwNCwgNDcsIDEwLCAyLCAyMjcsIDEwOCwgCisgICAgMjQsIDIwNCwgMzYsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIwNCwgOCwgMjQsIDE3MiwgMTAsIDIsIDIyNywgMTA4LCAyNCwgCisgICAgMjAzLCAxOTAsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDE5OSwgMzYsIDEwLCAyLCAyMjcsIDEwNiwgMTAsIDIsIDIyNywgMTA3LCAKKyAgICAyNDIsIDIyOCwgMjI3LCAxMDYsIDEwLCAyLCAyMjcsIDk2LCAxMCwgMiwgMjI3LCA5MywgMTAsIDIsIDIyNywgOTEsIDEwLCAKKyAgICAyLCAyMjcsIDkwLCAxMCwgMiwgMjI3LCA4OCwgMTAsIDIsIDIyNywgODksIDExOSwgMjI3LCA4OCwgMTAsIDIsIDIyNywgNzYsIAorICAgIDEwLCAyLCAyMjcsIDc3LCAyNCwgMjI4LCAxNTQsIDIzNSwgMjgsIDEwLCAyLCAyMjcsIDcyLCAxMCwgMiwgMjI3LCA3MywgCisgICAgMjQsIDI0OSwgMTE4LCAxMCwgMiwgMjI3LCA3MywgMjQyLCAyMjgsIDIyNywgNzIsIDEwLCAyLCAyMjcsIDcwLCAxMCwgMiwgCisgICAgMjI3LCA2OSwgMTAsIDIsIDIyNywgMzgsIDEwLCAyLCAyMjcsIDM5LCAyMjUsIDE1OCwgMjQsIDEwOCwgMTE5LCAyMjUsIAorICAgIDE1OCwgMjQsIDY2LCAxMCwgMiwgMjI3LCAzOSwgMTE5LCAyMjcsIDM5LCAyMjUsIDE1OCwgMjQsIDEwOCwgMTE5LCAyMjUsIAorICAgIDE1OCwgMjQsIDY2LCAxMCwgMiwgMjI2LCAyMzQsIDEwLCAyLCAyMjYsIDE2MywgMTAsIDIsIDIyNiwgMTY0LCAyNCwgMjQ5LCAKKyAgICAxMTgsIDEwLCAyLCAyMjYsIDE2NCwgMjQsIDY2LCAxMCwgMiwgMjI2LCAxNjQsIDI0LCAyMDQsIDM2LCAxMCwgMiwgMjI2LCAKKyAgICAxNTcsIDEwLCAyLCAyMjYsIDE0NywgMTAsIDIsIDIyNiwgMTM0LCAxMCwgMiwgMjI2LCAxMzMsIDEwLCAyLCAyMjYsIDEzMSwgCisgICAgMTAsIDIsIDIyNiwgMTMyLCAxMTksIDIyNiwgMTMxLCAxMCwgMiwgMjI2LCAxNSwgMTAsIDIsIDIyNiwgMTYsIDExOSwgMjM0LCAKKyAgICA3NiwgMjQsIDI1MCwgMTgwLCAyMjYsIDE2LCAxMTksIDIzNCwgNzYsIDI0LCAyNTAsIDE3OSwgMTAsIDIsIDIyNiwgMTMsIAorICAgIDEwLCAyLCAyMjYsIDExLCAxMCwgMiwgMjI2LCAxMiwgMjAzLCA3MywgMTksIDEwLCAyLCAyMjYsIDEwLCAxMCwgMiwgMjI2LCAKKyAgICAyLCAxMCwgMiwgMjI2LCAzLCAyMzUsIDI4LCAxMCwgMiwgMjI2LCAxLCAxMCwgMiwgMjI1LCAyNDUsIDEwLCAyLCAyMjUsIAorICAgIDI0NiwgMjE3LCA0MCwgMjI1LCAyNDUsIDEwLCAyLCAyMjUsIDIzOSwgMTAsIDIsIDIyNSwgMjE3LCAxMCwgMiwgMTk0LCAxMCwgCisgICAgMiwgMjI1LCAxNTcsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDYyLCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAzNSwgOTMsIDI0MiwgCisgICAgNTksIDkzLCAxNDQsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDM1LCA5MywgMjM2LCA0OSwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgCisgICAgMzUsIDkzLCAyMjUsIDkzLCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyNTEsIDE1MSwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjUxLCAKKyAgICA4NSwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjUwLCAxODIsIDE5OSwgMzIsIDIwNiwgMTU1LCAxMCwgMiwgMjI1LCAxNTgsIAorICAgIDI0LCAyNDksIDExOCwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjQ4LCAxODgsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDI0MSwgCisgICAgMjU0LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMzgsIDE3OSwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjM2LCA4OSwgMTAsIDIsIAorICAgIDIyNSwgMTU4LCAyNCwgMjM2LCA0OSwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjM1LCAzOSwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgCisgICAgMjM1LCA0MCwgOTMsIDIzNSwgMzksIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDE0NCwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjM0LCAKKyAgICAyMTYsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIzNCwgNzYsIDI0LCAyMTgsIDg5LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMjgsIAorICAgIDE1NCwgMjM1LCAyOCwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjI4LCAxMzQsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIyOCwgCisgICAgMTM1LCA5MywgMTQ0LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMjgsIDEzNSwgOTMsIDIyNCwgNDIsIDEwLCAyLCAyMjUsIAorICAgIDE1OCwgMjQsIDIyNiwgMTYzLCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMjYsIDE0NywgMTAsIDIsIDIyNSwgMTU4LCAyNCwgCisgICAgMjI2LCAxMywgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjI2LCAyLCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMjYsIDMsIDkzLCAKKyAgICAyMzQsIDc2LCA5MywgNjIsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIyNSwgMTU3LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMjQsIAorICAgIDE1NCwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjI0LCA0MiwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjI0LCAyNywgMTAsIDIsIAorICAgIDIyNSwgMTU4LCAyNCwgMjIyLCA3NiwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjIyLCA3NywgOTMsIDIzOCwgMTc5LCAxMCwgMiwgCisgICAgMjI1LCAxNTgsIDI0LCAyMjAsIDI1MCwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjIwLCAzNCwgMTAsIDIsIDIyNSwgMTU4LCAKKyAgICAyNCwgMjEwLCA2NiwgOTMsIDIwNywgMjM0LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMTAsIDExLCA5MywgMjM1LCAxMzYsIAorICAgIDkzLCAyMzgsIDEwOSwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjEwLCAxMSwgOTMsIDIzNSwgMTM2LCAyMDYsIDE1NSwgMTAsIAorICAgIDIsIDIyNSwgMTU4LCAyNCwgMjA5LCAyMTgsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIwOSwgMjE5LCA5MywgMjA5LCAyMTgsIAorICAgIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIwNywgMjM0LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMDcsIDEzLCAxMCwgMiwgMjI1LCAKKyAgICAxNTgsIDI0LCAyMDcsIDAsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIwNiwgMjAyLCA5MywgMzUsIDkzLCAyMDgsIDI1LCA5MywgCisgICAgMTg4LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCA2NiwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMTA4LCA5MywgNjIsIDEwLCAyLCAKKyAgICAyMjUsIDE1OCwgMjQsIDEwOCwgOTMsIDEwOCwgOTMsIDY2LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMDQsIDQ4LCA5MywgCisgICAgMjUwLCAxODEsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIwNCwgMzYsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIwMywgMTkwLCAKKyAgICAxMCwgMiwgMjI1LCAxNTgsIDIwOCwgMTkyLCAxMCwgMiwgMjI1LCAxNTUsIDEwLCAyLCAyMjUsIDE1NiwgMjQsIDIxMCwgNjUsIAorICAgIDEwLCAyLCAyMjUsIDE1NiwgMjQsIDIxMCwgNjYsIDkzLCAyMDcsIDIzNCwgMTAsIDIsIDIyNSwgMTU2LCAyMzUsIDI4LCAxMCwgCisgICAgMiwgMjI1LCAxNTYsIDIzNSwgMjksIDExOSwgMjI1LCAxNTYsIDIzNSwgMjksIDIxMCwgNjUsIDEwLCAyLCAyMjUsIDE1MSwgCisgICAgMTAsIDIsIDIyNSwgOTMsIDEwLCAyLCAyMjUsIDk0LCAyNCwgMjI1LCA5MywgMTAsIDIsIDIyNSwgOTEsIDEwLCAyLCAyMjUsIAorICAgIDkyLCAyNCwgMjI1LCAyNDUsIDEwLCAyLCAyMjUsIDkyLCAyNCwgMjI1LCAyNDYsIDkzLCAyMTIsIDE3NSwgMTAsIDIsIDIyNCwgCisgICAgMjEwLCAxMCwgMiwgMjI0LCAxOTEsIDEwLCAyLCAyMjQsIDE3OSwgMTAsIDIsIDIyNCwgMTU0LCAxMCwgMiwgMjI0LCA0MiwgCisgICAgMTAsIDIsIDIyNCwgNDMsIDI0LCAyNDksIDExOCwgMTAsIDIsIDIyNCwgNDAsIDEwLCAyLCAyMjQsIDQxLCAyNCwgMjUxLCAKKyAgICAxNTEsIDEwLCAyLCAyMjQsIDQxLCAyNCwgMjQ5LCAxMTgsIDEwLCAyLCAyMjQsIDQxLCAyNCwgMjM4LCA5MSwgMTAsIDIsIAorICAgIDIyNCwgNDEsIDI0LCAyMzgsIDkyLCAyMDYsIDE1NSwgMTAsIDIsIDIyNCwgNDEsIDI0LCAyMzYsIDU4LCAyMDYsIDE1NSwgCisgICAgMTAsIDIsIDIyNCwgNDEsIDI0LCAyMzQsIDc2LCAyNCwgMjQ5LCAxMTgsIDEwLCAyLCAyMjQsIDQxLCAyNCwgMjI4LCAxMzQsIAorICAgIDEwLCAyLCAyMjQsIDQxLCAyNCwgMjI3LCA5MywgMTAsIDIsIDIyNCwgNDEsIDI0LCAyMjcsIDkxLCAxMCwgMiwgMjI0LCA0MSwgCisgICAgMjQsIDIyNywgOTIsIDkzLCAyNTAsIDE4MSwgMTAsIDIsIDIyNCwgNDEsIDI0LCAyMjYsIDE2MywgMTAsIDIsIDIyNCwgNDEsIAorICAgIDI0LCAyMjUsIDE3NiwgOTMsIDI1MCwgMTgxLCAxMCwgMiwgMjI0LCA0MSwgMjQsIDIyNSwgMTU3LCAxMCwgMiwgMjI0LCA0MSwgCisgICAgMjQsIDIyMiwgNzcsIDkzLCAyMzgsIDE3OSwgMTAsIDIsIDIyNCwgNDEsIDI0LCAyMjAsIDM0LCAxMCwgMiwgMjI0LCA0MSwgCisgICAgMjQsIDIxOCwgMTMzLCAxMCwgMiwgMjI0LCA0MSwgMjQsIDIwOSwgMTgzLCA5MywgMjUwLCAxODEsIDEwLCAyLCAyMjQsIDQxLCAKKyAgICAyNCwgMjA5LCAxNjAsIDkzLCAyNDgsIDM2LCAxMCwgMiwgMjI0LCA0MSwgMjQsIDIwNCwgMjA5LCAxMCwgMiwgMjI0LCA0MSwgCisgICAgMjA2LCAxNTUsIDEwLCAyLCAyMjQsIDQxLCAyNDIsIDIyOCwgMjI0LCA0MCwgMTAsIDIsIDIyNCwgNDEsIDIxNywgNDAsIAorICAgIDIyNCwgNDAsIDEwLCAyLCAyMjQsIDQxLCAyMDgsIDE5MiwgMTAsIDIsIDIyNCwgNDEsIDIxMCwgNDYsIDEwLCAyLCAyMjQsIAorICAgIDM5LCAxMCwgMiwgMjI0LCAzMywgMTAsIDIsIDIyNCwgMzQsIDExOSwgMjI0LCAzMywgMTAsIDIsIDIyNCwgMzQsIDIxNywgCisgICAgNDAsIDIyNCwgMzMsIDEwLCAyLCAyMjQsIDM0LCAyMTAsIDQ2LCAxMCwgMiwgMjI0LCAzMCwgMTAsIDIsIDIyNCwgMjcsIDEwLCAKKyAgICAyLCAyMjQsIDI1LCAxMCwgMiwgMjI0LCAyNiwgMTE5LCAyMjQsIDI1LCAxMCwgMiwgMjI0LCAyNiwgMTE5LCAyMjQsIDI2LCAKKyAgICAyMzYsIDUwLCAxMTksIDIzNiwgNDksIDEwLCAyLCAxNzgsIDEwLCAyLCAyMjIsIDIzNSwgMjQsIDIwNywgMCwgMTAsIDIsIAorICAgIDIyMiwgMjM1LCAyMzUsIDI4LCAxMCwgMiwgMjIyLCAyMzQsIDEwLCAyLCAyMjIsIDIwNiwgMTAsIDIsIDIyMiwgMTU4LCAxMCwgCisgICAgMiwgMjIyLCAxMzUsIDEwLCAyLCAyMjIsIDEzNCwgMTAsIDIsIDIyMiwgNzYsIDEwLCAyLCAyMjIsIDI4LCAxMCwgMiwgMjIxLCAKKyAgICAyMTEsIDEwLCAyLCAyMjEsIDE2NCwgMTAsIDIsIDIyMSwgNDEsIDEwLCAyLCAyMjEsIDQyLCAxMTksIDIyMSwgNDEsIDEwLCAKKyAgICAyLCAyMjEsIDMwLCAxMCwgMiwgMjIxLCAzMSwgMjM1LCAyOCwgMTAsIDIsIDIyMSwgMTIsIDEwLCAyLCAyMjAsIDI1NCwgMTAsIAorICAgIDIsIDIyMCwgMjUwLCAxMCwgMiwgMjIwLCAyNTEsIDI0LCA2MiwgMTAsIDIsIDIyMCwgMjUxLCAyNCwgMjI1LCAyNDUsIDEwLCAKKyAgICAyLCAyMjAsIDI1MSwgMjQsIDE5OSwgMTE0LCAxMCwgMiwgMjIwLCAyNTEsIDExOSwgMjIwLCAyNTAsIDEwLCAyLCAyMjAsIAorICAgIDI1MSwgMTE5LCAyMjAsIDI1MSwgMjQsIDM1LCA5MywgMTg4LCAxMCwgMiwgMjIwLCAyNTEsIDI0MiwgMjI4LCAyMjAsIDI1MCwgCisgICAgMTAsIDIsIDIyMCwgMjQ4LCAxMCwgMiwgMjIwLCAyNDksIDI0LCA2MiwgMTAsIDIsIDIyMCwgMjQ5LCAyNCwgMzUsIDkzLCAKKyAgICAyNDEsIDc2LCAxMCwgMiwgMjIwLCAyNDksIDI0LCAyNDEsIDc2LCAxMCwgMiwgMjIwLCAyNDksIDIzNSwgMjgsIDEwLCAyLCAKKyAgICAxODgsIDEwLCAyLCAyMjAsIDE2MCwgMTAsIDIsIDIyMCwgMTQ3LCAxMCwgMiwgMjIwLCAxNDgsIDIyOCwgNDksIDEwLCAyLCAKKyAgICAyMjAsIDE0OCwgMjQsIDIwOSwgMjIxLCAyMDYsIDE1NSwgMTAsIDIsIDIyMCwgMTQ4LCAyMTcsIDQwLCAyMjAsIDE0NywgMTAsIAorICAgIDIsIDIyMCwgMTQ2LCAxMCwgMiwgMjIwLCAxMzksIDIxOCwgNzUsIDEwLCAyLCAyMjAsIDEzOCwgMTAsIDIsIDIyMCwgMTM3LCAKKyAgICAxMCwgMiwgMjIwLCAzNCwgMTAsIDIsIDIyMCwgMzUsIDI0LCA2MiwgMTAsIDIsIDIyMCwgMzUsIDI0LCAyMDQsIDM2LCAxMCwgCisgICAgMiwgMjIwLCAzNSwgMjEwLCA0NiwgMTAsIDIsIDIxOSwgMTUwLCAxMCwgMiwgMjE5LCAxNTEsIDI0LCA3MiwgMTAsIDIsIAorICAgIDIxOSwgMTQ5LCAxMCwgMiwgMjE5LCAxMTksIDEwLCAyLCAyMTksIDEyMCwgMjQsIDIzNiwgNTgsIDIwNiwgMTU1LCAxMCwgMiwgCisgICAgMjE5LCAxMjAsIDI0LCAyMzYsIDUwLCA5MywgMjM2LCA1OCwgMjA2LCAxNTUsIDEwLCAyLCAyMTksIDExNSwgMTAsIDIsIAorICAgIDIxOSwgMTE2LCAyNCwgMjUxLCA4NSwgMTAsIDIsIDIxOSwgMTE2LCAyNCwgMjUwLCAxODEsIDEwLCAyLCAyMTksIDExNiwgCisgICAgMjQsIDI1MCwgMTgyLCA5MywgMjUwLCAxODEsIDEwLCAyLCAyMTksIDExNiwgMjQsIDIzNSwgMzksIDEwLCAyLCAyMTksIAorICAgIDExNiwgMjQsIDIyMiwgNzcsIDkzLCAyMzYsIDU4LCAyMDYsIDE1NSwgMTAsIDIsIDIxOSwgMTE2LCAyNCwgMjIwLCAzNCwgCisgICAgMTAsIDIsIDIxOSwgMTE2LCAyNCwgMjE4LCA4OSwgMTAsIDIsIDIxOSwgMTE2LCAyNCwgMjEwLCA2NSwgMTAsIDIsIDIxOSwgCisgICAgMTE2LCAyNCwgMjEwLCA2NiwgOTMsIDM1LCAyNTEsIDg1LCAxMCwgMiwgMjE5LCAxMTYsIDI0LCAyMTAsIDY2LCA5MywgMjUwLCAKKyAgICAxODEsIDEwLCAyLCAyMTksIDExNiwgMjQsIDIxMCwgNjYsIDkzLCAyNTAsIDE4MiwgOTMsIDI1MCwgMTgxLCAxMCwgMiwgCisgICAgMjE5LCAxMTYsIDI0LCAyMDQsIDQ4LCA5MywgMjUwLCAxODEsIDEwLCAyLCAyMTksIDExNiwgMjQsIDIwMywgMTkwLCAxMCwgCisgICAgMiwgMjE5LCAxMDMsIDEwLCAyLCAyMTgsIDEzMywgMTAsIDIsIDIxOCwgMTA1LCAxMCwgMiwgMjE4LCA4OSwgMTAsIDIsIAorICAgIDIxOCwgOTAsIDIyNSwgMTU2LCAyNCwgMjM2LCA0OSwgMTAsIDIsIDIxOCwgOTAsIDIyNSwgMTU2LCAyNCwgMjIyLCAxMzUsIAorICAgIDEwLCAyLCAyMTgsIDkwLCAyMjUsIDE1NiwgMjQsIDIxMiwgMzUsIDEwLCAyLCAyMTgsIDkwLCAyMjUsIDE1NiwgMjQsIDIxMiwgCisgICAgMzYsIDExOSwgMjE4LCA5MCwgMjI1LCAxNTYsIDI0LCAyMTIsIDM1LCAxMCwgMiwgMjE4LCA5MCwgMjI1LCAxNTYsIDI0LCAKKyAgICAyMDMsIDE5MCwgMTAsIDIsIDIxOCwgOTAsIDIwNiwgMTU1LCAxMCwgMiwgMjE4LCA5MCwgMTE5LCAyMTgsIDg5LCAxMCwgMiwgCisgICAgMjE4LCA5MCwgMjQyLCAyMjgsIDIxOCwgODksIDEwLCAyLCAyMTgsIDkwLCAyNDIsIDIyOCwgMjE4LCA5MCwgMjI1LCAxNTYsIAorICAgIDExOSwgMjI1LCAxNTUsIDEwLCAyLCAyMTgsIDg0LCAxMCwgMiwgMjE4LCA4NSwgMjUyLCA3LCAyNCwgMjUwLCAxNzUsIDEwLCAKKyAgICAyLCAyMTgsIDg1LCAyNTIsIDcsIDI0LCAyNDgsIDE4OCwgMTAsIDIsIDIxOCwgODUsIDI1MiwgNywgMjQsIDIzOSwgMTMxLCAKKyAgICAxMCwgMiwgMjE4LCA4NSwgMjUyLCA3LCAyNCwgMjM1LCAzOSwgMTAsIDIsIDIxOCwgODUsIDI1MiwgNywgMjQsIDIyOCwgCisgICAgMTU0LCAyMzUsIDI4LCAxMCwgMiwgMjE4LCA4NSwgMjUyLCA3LCAyNCwgMjI3LCA5MSwgMTAsIDIsIDIxOCwgODUsIDI1MiwgCisgICAgNywgMjQsIDE5NCwgMTAsIDIsIDIxOCwgODUsIDI1MiwgNywgMjQsIDIyMCwgMzQsIDEwLCAyLCAyMTgsIDg1LCAyNTIsIDcsIAorICAgIDI0LCAyMDksIDE1NywgMTAsIDIsIDIxOCwgODUsIDI1MiwgNywgMjQsIDIwNCwgNDcsIDEwLCAyLCAyMTgsIDg1LCAyMjYsIAorICAgIDEzMiwgMjQsIDI0OCwgMTg4LCAxMCwgMiwgMjE4LCA4NSwgMjI2LCAxMzIsIDI0LCAyNDgsIDE4OSwgNjYsIDEwLCAyLCAKKyAgICAxNzIsIDEwLCAyLCAyMTYsIDIwMSwgMTAsIDIsIDIxNiwgMTYyLCAxMCwgMiwgMjE2LCAxMzUsIDEwLCAyLCAyMTYsIDMsIAorICAgIDEwLCAyLCAyMTUsIDIwNCwgMTAsIDIsIDIxNSwgMjA1LCAyNCwgNjIsIDEwLCAyLCAyMTUsIDIwNSwgMjQsIDI1MiwgODksIAorICAgIDEwLCAyLCAyMTUsIDIwNSwgMjQsIDI0OCwgMTg4LCAxMCwgMiwgMjE1LCAyMDUsIDI0LCAyNDgsIDM2LCAxMCwgMiwgMjE1LCAKKyAgICAyMDUsIDI0LCA3MiwgMTAsIDIsIDIxNSwgMjA1LCAyNCwgNzAsIDEwLCAyLCAyMTUsIDIwNSwgMjQsIDIzMiwgMjM1LCAxMCwgCisgICAgMiwgMjE1LCAyMDUsIDI0LCA2NiwgMTAsIDIsIDIxNSwgMjA1LCAyNCwgMjA0LCA0NywgMTAsIDIsIDIxNSwgMjA1LCAyNDIsIAorICAgIDIyOCwgMjE1LCAyMDQsIDEwLCAyLCAyMTUsIDE0NiwgMTAsIDIsIDIxNSwgMTQ3LCAyNCwgMjI3LCA3MiwgMTAsIDIsIDIxNSwgCisgICAgMTQ3LCAyNCwgMjA0LCAzNiwgMTAsIDIsIDIxNSwgMTQ3LCAyNCwgMTk5LCAxMTQsIDEwLCAyLCAyMTUsIDE0NywgMjE3LCAKKyAgICA0MCwgMjE1LCAxNDYsIDEwLCAyLCAyMTMsIDI1MiwgMTAsIDIsIDIxMywgMjQ2LCAxMCwgMiwgMjEzLCA4OCwgMTAsIDIsIAorICAgIDIxMiwgMTc1LCAxMCwgMiwgMjEyLCA2NCwgMTAsIDIsIDIxMiwgNTEsIDIxOCwgNzUsIDEwLCAyLCAyMTIsIDUwLCAxMCwgMiwgCisgICAgMjEyLCA1MSwgMjQsIDYyLCAxMCwgMiwgMjEyLCA1MSwgMjQsIDIzOSwgMTM3LCAxMCwgMiwgMjEyLCA1MSwgMjQsIDIzOSwgCisgICAgMTM1LCAxMCwgMiwgMjEyLCA1MSwgMjQsIDE0NCwgMTAsIDIsIDIxMiwgNTEsIDI0LCAyMjcsIDc2LCAxMCwgMiwgMjEyLCAKKyAgICA1MSwgMjQsIDIyNSwgMjQ1LCAxMCwgMiwgMjEyLCA1MSwgMjQsIDIyNCwgMjUsIDEwLCAyLCAyMTIsIDUxLCAyNCwgMjIxLCAKKyAgICAyMTEsIDEwLCAyLCAyMTIsIDUxLCAyNCwgMjE4LCA4OSwgMTAsIDIsIDIxMiwgNTEsIDI0LCAyMTIsIDM1LCAxMCwgMiwgCisgICAgMjEyLCA1MSwgMjQsIDIxMCwgMzEsIDEwLCAyLCAyMTIsIDUxLCAyNCwgMjA3LCAyNCwgMTAsIDIsIDIxMiwgNTEsIDI0LCAKKyAgICAyMDQsIDQ3LCAxMCwgMiwgMjEyLCA1MSwgMjQsIDIwNCwgNDIsIDEwLCAyLCAyMTIsIDUxLCAyNCwgMjA0LCAxMiwgMTAsIDIsIAorICAgIDIxMiwgNTEsIDI0LCAyMDMsIDIxNCwgMTAsIDIsIDIxMiwgNTEsIDI0LCAyMDMsIDE5MCwgMTAsIDIsIDIxMiwgNTEsIDExOSwgCisgICAgMjEyLCA1MCwgMTAsIDIsIDIxMiwgNTEsIDIzNSwgMjgsIDEwLCAyLCAyMTIsIDM1LCAxMCwgMiwgMjEyLCAzNiwgMjI1LCAKKyAgICAxNTgsIDI0LCAyNTAsIDE3OSwgMTAsIDIsIDIxMiwgOCwgMTAsIDIsIDIxMiwgMCwgMTAsIDIsIDIxMCwgMTE0LCAxMCwgMiwgCisgICAgMjEwLCAxMTIsIDEwLCAyLCAyMTAsIDExMywgMjQsIDYyLCAxMCwgMiwgMjEwLCAxMTMsIDI0LCAyNDksIDExOCwgMTAsIDIsIAorICAgIDIxMCwgMTEzLCAyNCwgMjM1LCAxMzUsIDEwLCAyLCAyMTAsIDExMywgMjQsIDIyMCwgMzQsIDEwLCAyLCAyMTAsIDExMywgCisgICAgMjQsIDIwOSwgMjE4LCAxMCwgMiwgMjEwLCAxMTMsIDI0LCAyMDQsIDE5MiwgMTAsIDIsIDIxMCwgMTEzLCAyNCwgNjYsIDEwLCAKKyAgICAyLCAyMTAsIDExMywgMjQsIDEwOCwgOTMsIDYyLCAxMCwgMiwgMjEwLCAxMTAsIDEwLCAyLCAyMTAsIDEwOCwgMTAsIDIsIAorICAgIDIxMCwgODIsIDEwLCAyLCAyMTAsIDY1LCAxMCwgMiwgMjEwLCA2NiwgMjMzLCA5NywgMTAsIDIsIDIxMCwgNjYsIDExOSwgCisgICAgMjEwLCA2NiwgMjM2LCA4MSwgMTE5LCAyMzYsIDgxLCAyMzYsIDUwLCAxMTksIDIzNiwgNDksIDEwLCAyLCAyMTAsIDY2LCAKKyAgICAxMTksIDIxMCwgNjYsIDIwNywgMjUsIDExOSwgMjA3LCAyNSwgMjM2LCA1MCwgMTE5LCAyMzYsIDQ5LCAxMCwgMiwgMjEwLCAKKyAgICA1OCwgMTAsIDIsIDIxMCwgNTMsIDEwLCAyLCAyMTAsIDQ5LCAxMCwgMiwgMjEwLCA0OCwgMTAsIDIsIDIxMCwgNDUsIDEwLCAKKyAgICAyLCAyMTAsIDMxLCAxMCwgMiwgMjEwLCAzMiwgMjQsIDYyLCAxMCwgMiwgMjEwLCAzMiwgMjQsIDIyOCwgMTM0LCAxMCwgMiwgCisgICAgMjEwLCAyNSwgMTAsIDIsIDIxMCwgMjYsIDI0LCA2MiwgMTAsIDIsIDIxMCwgMjYsIDI0LCAyNDksIDk5LCAxMCwgMiwgMjEwLCAKKyAgICAyNiwgMjQsIDI0OCwgMTQsIDEwLCAyLCAyMTAsIDI2LCAyNCwgMjQxLCAxOSwgMTAsIDIsIDIxMCwgMjYsIDI0LCAyMzYsIAorICAgIDQ5LCAxMCwgMiwgMjEwLCAyNiwgMjQsIDIyOCwgMTUzLCAxMCwgMiwgMjEwLCAyNiwgMjQsIDIyOCwgMTU0LCAyMzUsIDI4LCAKKyAgICAxMCwgMiwgMjEwLCAyNiwgMjQsIDIyNSwgMjM5LCAxMCwgMiwgMjEwLCAyNiwgMjQsIDIyNCwgMjcsIDEwLCAyLCAyMTAsIAorICAgIDI2LCAyNCwgMjIxLCAzMCwgMTAsIDIsIDIxMCwgMjYsIDI0LCAyMTIsIDM1LCAxMCwgMiwgMjEwLCAxOSwgMTAsIDIsIDIxMCwgCisgICAgMTQsIDEwLCAyLCAyMTAsIDE1LCAyMDYsIDE1NSwgMTAsIDIsIDIxMCwgMTUsIDExOSwgMjEwLCAxNSwgMjQ4LCA0LCAxMTksIAorICAgIDI0OCwgMywgMTAsIDIsIDIxMCwgMTAsIDEwLCAyLCAyMDksIDIyMCwgMTAsIDIsIDIwOSwgMjIxLCAxMTksIDIyOCwgNTAsIAorICAgIDIwOSwgMjIwLCAxMCwgMiwgMjA5LCAyMTgsIDEwLCAyLCAyMDksIDIxNywgMTAsIDIsIDIwOSwgMTgyLCAxMCwgMiwgMjA5LCAKKyAgICAxODMsIDIzNSwgMjgsIDEwLCAyLCAyMDksIDE2OCwgMTAsIDIsIDIwOSwgMTY2LCAxMCwgMiwgMjA5LCAxNjcsIDExOSwgCisgICAgMjA5LCAxNjcsIDIwOSwgMjE4LCAxMCwgMiwgMjA5LCAxNTksIDEwLCAyLCAyMDksIDE1NywgMTAsIDIsIDIwOCwgMjQsIDEwLCAKKyAgICAyLCAyMDgsIDI1LCAxMTksIDIwOCwgMjQsIDEwLCAyLCAyMDcsIDI0NiwgMTAsIDIsIDIwNywgMjQ1LCAxMCwgMiwgMjA3LCAKKyAgICAyNDMsIDEwLCAyLCAyMDcsIDIzNCwgMTAsIDIsIDIwNywgMjMzLCAxMCwgMiwgMjA3LCAyMDcsIDEwLCAyLCAyMDcsIDIwNiwgCisgICAgMTAsIDIsIDIwNywgMzYsIDEwLCAyLCAyMDcsIDM3LCAyNTAsIDE2NSwgMTAsIDIsIDIwNywgMzcsIDI0LCAyMzQsIDc1LCAKKyAgICAxMCwgMiwgMjA3LCAzNywgMjQsIDIyMSwgMjExLCAxMCwgMiwgMjA3LCAzNywgMjM1LCAyOCwgMTAsIDIsIDIwNywgMjQsIAorICAgIDEwLCAyLCAyMDcsIDI1LCAxMTksIDIwNywgMjUsIDIxOSwgMTUxLCAxMTksIDIxOSwgMTUxLCAyNDEsIDAsIDExOSwgMjQwLCAKKyAgICAyNTUsIDEwLCAyLCAyMDcsIDI1LCAyMDgsIDE5MiwgMTAsIDIsIDIwNywgMTMsIDEwLCAyLCAxNjUsIDI0LCAyNDgsIDE4OCwgCisgICAgMTAsIDIsIDE2NSwgMjQsIDIzNSwgMzksIDEwLCAyLCAxNjUsIDI0LCAyMTAsIDY1LCAxMCwgMiwgMTY1LCAyNCwgMjA5LCAKKyAgICAyMjAsIDEwLCAyLCAxNjUsIDI0LCAyMDQsIDIwOSwgMTAsIDIsIDE2NSwgMjQsIDIwNCwgMzYsIDEwLCAyLCAyMDcsIDAsIAorICAgIDEwLCAyLCAyMDYsIDIzMiwgMTAsIDIsIDIwNiwgMjAxLCAxMCwgMiwgMjA2LCAyMDIsIDIzNSwgMjgsIDEwLCAyLCAyMDYsIAorICAgIDE1LCAxMCwgMiwgMjA2LCAxNiwgMjA2LCAxNTUsIDEwLCAyLCAyMDUsIDI0MiwgMTAsIDIsIDIwNSwgMjE5LCAxMCwgMiwgCisgICAgMjA1LCAyMjAsIDI0LCAyMDcsIDAsIDEwLCAyLCAyMDUsIDIyMCwgMTE5LCAyMDUsIDIxOSwgMTAsIDIsIDIwNSwgMjIwLCAKKyAgICAxMTksIDIwNSwgMjIwLCAyMzYsIDgxLCAxMTksIDIzNiwgODEsIDIzNiwgNTAsIDExOSwgMjM2LCA0OSwgMTAsIDIsIDIwNCwgCisgICAgMjE1LCAxMCwgMiwgMjA0LCAyMDksIDEwLCAyLCAyMDQsIDIwNywgMTAsIDIsIDIwNCwgMjAzLCAxMCwgMiwgMjA0LCAxOTIsIAorICAgIDEwLCAyLCAyMDQsIDE5MywgMTE5LCAyMDQsIDE5MywgMTk5LCAxMTUsIDExOSwgMTk5LCAxMTQsIDEwLCAyLCA2NiwgMTAsIAorICAgIDIsIDEwOCwgMjM1LCAzOSwgMTAsIDIsIDEwOCwgMTA4LCA2NiwgMTAsIDIsIDEwOCwgMTE5LCAxMDgsIDIxNiwgMjExLCAKKyAgICAxMTksIDIxNiwgMjExLCAyMzYsIDUwLCAxMTksIDIzNiwgNDksIDEwLCAyLCAxMDgsIDExOSwgMTA4LCAyMDcsIDIwOCwgCisgICAgMTE5LCAyMDcsIDIwNywgMTAsIDIsIDEwOCwgMTE5LCAxMDgsIDEwOCwgMjEzLCAxMDUsIDExOSwgMTA4LCAyMTMsIDEwNCwgCisgICAgMTAsIDIsIDIwNCwgNDcsIDEwLCAyLCAyMDQsIDQyLCAxMCwgMiwgMjA0LCAzNiwgMTAsIDIsIDIwNCwgMzcsIDIyNSwgMjM5LCAKKyAgICAxMCwgMiwgMjA0LCAzNywgMjQsIDI0OSwgMTE4LCAxMCwgMiwgMjA0LCAzNywgMjQsIDIyMSwgMjExLCAxMCwgMiwgMjA0LCAKKyAgICAzNywgMjQsIDEwOCwgOTMsIDEwOCwgOTMsIDY2LCAxMCwgMiwgMjA0LCAzNywgMjQsIDEwOCwgOTMsIDEwOCwgOTMsIDEwOCwgCisgICAgMjM1LCAyOCwgMTAsIDIsIDIwNCwgMzcsIDIzNSwgMjgsIDEwLCAyLCAyMDQsIDM3LCAyMTAsIDQ2LCAxMCwgMiwgMjA0LCAKKyAgICAzNywgMjEwLCA0NywgMjQsIDI0OSwgMTE4LCAxMCwgMiwgMjA0LCAzMiwgMTAsIDIsIDIwNCwgMTIsIDEwLCAyLCAyMDQsIAorICAgIDEzLCAyNCwgMjI1LCAxNTcsIDEwLCAyLCAyMDQsIDEzLCAyNCwgMjIyLCA3NywgOTMsIDI0MiwgNTgsIDEwLCAyLCAyMDQsIAorICAgIDEzLCAyNCwgMjEwLCAxMTIsIDEwLCAyLCAyMDQsIDEzLCAyNCwgNjYsIDEwLCAyLCAyMDQsIDExLCAxMCwgMiwgMjA0LCA3LCAKKyAgICAxMCwgMiwgMjA0LCA4LCAyNCwgMjI3LCAzOCwgMTAsIDIsIDIwNCwgOCwgMjQsIDE3MiwgMTAsIDIsIDIwNCwgNSwgMTAsIDIsIAorICAgIDIwNCwgNiwgMjM1LCAyOCwgMTAsIDIsIDIwMywgMjE0LCAxMCwgMiwgMjAzLCAyMTUsIDI0MiwgMjI4LCAyMDMsIDIxNCwgCisgICAgMTAsIDIsIDIwMywgMjE1LCAyMTAsIDQ2LCAxMCwgMiwgMjAzLCAyMTIsIDEwLCAyLCAyMDMsIDIxMywgMjQsIDM1LCA5MywgCisgICAgMTQ0LCAxMCwgMiwgMjAzLCAyMTMsIDI0LCAzNSwgOTMsIDE4OCwgMTAsIDIsIDIwMywgMjEzLCAyNCwgMjUxLCAxNTEsIDEwLCAKKyAgICAyLCAyMDMsIDIxMywgMjQsIDE0NCwgMTAsIDIsIDIwMywgMjEzLCAyNCwgMjE4LCA4OSwgMTAsIDIsIDIwMywgMjEzLCAyNCwgCisgICAgMjA0LCA0NywgMTAsIDIsIDIwMywgMjEzLCAyNCwgMjA0LCA0OCwgOTMsIDI1MCwgMTgxLCAxMCwgMiwgMjAzLCAyMTMsIDI0LCAKKyAgICAyMDQsIDQ4LCA5MywgMjQ4LCAxODgsIDEwLCAyLCAyMDMsIDIxMSwgMTAsIDIsIDIwMywgMjA4LCAxMCwgMiwgMjAzLCAyMDcsIAorICAgIDEwLCAyLCAyMDMsIDIwMywgMTAsIDIsIDIwMywgMjA0LCAyNCwgNjIsIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDI1MCwgMTc1LCAKKyAgICAxMCwgMiwgMjAzLCAyMDQsIDI0LCAxNDgsIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDIzOSwgMTI1LCAxMCwgMiwgMjAzLCAyMDQsIAorICAgIDI0LCAyMzYsIDg5LCAxMCwgMiwgMjAzLCAyMDQsIDI0LCAyMzYsIDcxLCAxMCwgMiwgMjAzLCAyMDQsIDI0LCAyMzYsIDU4LCAKKyAgICAyMDYsIDE1NSwgMTAsIDIsIDIwMywgMjA0LCAyNCwgMjM2LCA0OSwgMTAsIDIsIDIwMywgMjA0LCAyNCwgMjM1LCA1MCwgMTAsIAorICAgIDIsIDIwMywgMjA0LCAyNCwgMTQ0LCAxMCwgMiwgMjAzLCAyMDQsIDI0LCAyMjgsIDE1MywgMTAsIDIsIDIwMywgMjA0LCAyNCwgCisgICAgMjI4LCAxMzQsIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDIyOCwgMjAsIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDIyNiwgMTYzLCAKKyAgICAxMCwgMiwgMjAzLCAyMDQsIDI0LCAyMjQsIDI1LCAxMCwgMiwgMjAzLCAyMDQsIDI0LCAyMjEsIDE2NCwgMTAsIDIsIDIwMywgCisgICAgMjA0LCAyNCwgMTcyLCAxMCwgMiwgMjAzLCAyMDQsIDI0LCAyMTAsIDY1LCAxMCwgMiwgMjAzLCAyMDQsIDI0LCAyMDksIAorICAgIDE2NiwgMTAsIDIsIDIwMywgMjA0LCAyNCwgMjA0LCAyMTUsIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDEwOCwgOTMsIDIzNSwgCisgICAgMzksIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDIwNCwgMzYsIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDIwMywgMjAxLCAxMCwgMiwgCisgICAgMjAzLCAyMDEsIDEwLCAyLCAyMDMsIDIwMiwgMjQsIDY2LCAxMCwgMiwgMjAzLCAxOTAsIDEwLCAyLCAyMDMsIDE5MSwgMjQsIAorICAgIDYyLCAxMCwgMiwgMjAzLCAxOTEsIDI0LCAyMjYsIDE1LCAxMCwgMiwgMjAzLCAxOTEsIDI0LCAyMjUsIDI0NSwgMTAsIDIsIAorICAgIDIwMywgMTkxLCAyNCwgMjA3LCAwLCAxMCwgMiwgMjAzLCAxODYsIDEwLCAyLCAyMDMsIDE4OSwgMTAsIDIsIDIwMywgMTg3LCAKKyAgICAxMCwgMiwgMjAzLCAxODMsIDEwLCAyLCAyMDMsIDE3MSwgMTAsIDIsIDIwMywgMTcyLCAyNCwgMjI3LCAzOCwgMTAsIDIsIAorICAgIDIwMywgMTcwLCAxMCwgMiwgMTk5LCAxMTQsIDEwLCAyLCAxOTksIDExNSwgMjA2LCAxNTUsIDEwLCAyLCAxOTksIDExNSwgCisgICAgOTUsIDI0LCAyMjUsIDI0NSwgMTAsIDIsIDE5OSwgMTEwLCAxMCwgMiwgMTk5LCAxMDIsIDEwLCAyLCAxOTksIDg4LCAxMCwgCisgICAgMiwgMTk5LCAzNiwgMTAsIDIsIDE5OSwgMzcsIDExOSwgMTk5LCAzNiwgMTAsIDIsIDE5OSwgMzUsIDEwLCAyLCAxOTksIDMzLCAKKyAgICAxMCwgMiwgMTk5LCAzNCwgMjI3LCA5NSwgMjA2LCAxNTUsIDEwLCAyLCAxOTksIDI4LCAxMCwgMiwgMTk5LCAxOSwgMTAsIDIsIAorICAgIDE5OSwgMywgMTAsIDIsIDE5OSwgMSwgMTAsIDIsIDE5OSwgMiwgMjQsIDYyLCAxMCwgMiwgMTk5LCAwLCAxMCwgMiwgMTk4LCAKKyAgICAyNTUsIDEwLCAyLCAyMjcsIDYxLCAyMzgsIDIwNiwgMTAsIDIsIDI1MiwgOTAsIDI0LCAyMTgsIDg5LCAxMCwgMiwgMjUyLCAKKyAgICA3LCAyNCwgNjIsIDEwLCAyLCAyNTEsIDk4LCAyNCwgMjI2LCA0LCAxMCwgMiwgMjQyLCA0OSwgMjI2LCAxMzIsIDI0LCAyMDQsIAorICAgIDQ4LCA5MywgMjIyLCAxMzUsIDEwLCAyLCAyNDIsIDQ3LCAxMCwgMiwgMjQxLCAwLCA5MywgMjA5LCAyMjAsIDEwLCAyLCAKKyAgICAyMzksIDEzNiwgMjQsIDIxMCwgNjUsIDEwLCAyLCAyMzgsIDExLCAyNCwgMjM1LCAzOSwgMTAsIDIsIDIzOCwgMTEsIDI0LCAKKyAgICAyMTAsIDY1LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDI1MSwgODYsIDkzLCAyMjcsIDc3LCA5MywgNjIsIDEwLCAyLCAyMzYsIAorICAgIDg4LCAyNCwgMjUwLCAxNzksIDEwLCAyLCAyMzYsIDE0LCAxMCwgMiwgMjM1LCAxNTEsIDEwLCAyLCAyMzMsIDczLCAxMCwgMiwgCisgICAgMjI3LCAxMDgsIDI0LCAyNTEsIDUzLCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyNTAsIDE3OCwgMTAsIDIsIDIyNywgMTA4LCAKKyAgICAyNCwgMjM1LCAxMzUsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIzNSwgMzksIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIzNCwgNzYsIAorICAgIDI0LCAyNTAsIDE3OSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjI0LCAyNSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMTcyLCAxMCwgCisgICAgMiwgMjI3LCAxMDgsIDI0LCAyMDksIDIxMywgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjA0LCAyMTUsIDEwLCAyLCAyMjcsIAorICAgIDEwOCwgMjQsIDIwMywgMjEyLCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMzUsIDE2MSwgMTAsIDIsIDIyNCwgNDEsIDIxMCwgCisgICAgNDcsIDI0LCAyNDksIDExOCwgMTAsIDIsIDIyNCwgNDEsIDI0LCAyMzgsIDkyLCA5MywgMjI1LCA5MywgMTAsIDIsIDIyNCwgCisgICAgNDEsIDI0LCAyMDksIDIyMCwgMTAsIDIsIDIyMiwgMjcsIDEwLCAyLCAyMjAsIDI0OSwgMjQsIDE5OSwgMTE0LCAxMCwgMiwgCisgICAgMjIwLCAxNTksIDEwLCAyLCAyMTksIDExOCwgMTAsIDIsIDIxOSwgMTE3LCAxMCwgMiwgMjE5LCAxMTYsIDI0LCAyNDksIDk5LCAKKyAgICAxMCwgMiwgMjE5LCAxMTYsIDI0LCAyMzUsIDE2MSwgMTAsIDIsIDIxOCwgMTA2LCAyMTIsIDIyOCwgMjE5LCAxMDksIDI0MSwgCisgICAgMTU0LCAxMCwgMiwgMjE2LCA0LCAyNTAsIDE2NSwgMTAsIDIsIDIxNSwgMTUwLCAxMCwgMiwgMjEyLCA1MSwgMjQsIDIyOCwgCisgICAgMTU0LCAyMzUsIDI4LCAxMCwgMiwgMjA2LCAxNCwgMTAsIDIsIDIwNCwgMTMsIDI0LCAyMjIsIDc2LCAxMCwgMiwgMTA4LCAKKyAgICA2NiwgMTAsIDE0NSwgMiwgMTIwLCAyNTAsIDE4MSwgMTAsIDE0NSwgMiwgMTI2LCAyNTAsIDE4MSwgMTAsIDE0NSwgMiwgCisgICAgMjM2LCAyMjksIDI1MCwgMTgxLCAxMCwgMTQ1LCAyLCAyMzcsIDYxLCAyNTAsIDE4MSwgMTAsIDE0NSwgMiwgMjA5LCAxMDYsIAorICAgIDI1MCwgMTgxLCAxMCwgMTQ1LCAyLCAyMTAsIDEzNiwgMjUwLCAxODEsIDEwLCAxNDUsIDIsIDIzOCwgMjMyLCAyNTAsIDE4MSwgCisgICAgMTAsIDE0NSwgMiwgMjE5LCAxMTQsIDI1MCwgMTgxLCAxMCwgMTQ1LCAyLCAxMjYsIDI0MCwgMjU1LCAxMCwgMTQ1LCAyLCAKKyAgICAyMzYsIDIyOSwgMjQwLCAyNTUsIDEwLCAxNDUsIDIsIDIzNywgNjEsIDI0MCwgMjU1LCAxMCwgMTQ1LCAyLCAyMDksIDEwNiwgCisgICAgMjQwLCAyNTUsIDEwLCAxNDUsIDIsIDIxMCwgMTM2LCAyNDAsIDI1NSwgMTAsIDE0NSwgMiwgMjM4LCAyMzIsIDI0MCwgMjU1LCAKKyAgICAxMCwgMTQ1LCAyLCAyMTksIDExNCwgMjQwLCAyNTUsIDEwLCAxNDUsIDIsIDIzNiwgMjI5LCA2NiwgMTAsIDE0NSwgMiwgCisgICAgMjM3LCA2MSwgNjYsIDEwLCAxNDUsIDIsIDIwOSwgMTA2LCA2NiwgMTAsIDE0NSwgMiwgMjEwLCAxMzYsIDY2LCAxMCwgMTQ1LCAKKyAgICAyLCAyMzgsIDIzMiwgNjYsIDEwLCAxNDUsIDIsIDIxOSwgMTE0LCA2NiwgMTAsIDE0NSwgMiwgMTEyLCAyMzUsIDI0NCwgMTAsIAorICAgIDE0NSwgMiwgMTIwLCAyMzUsIDI0NCwgMTAsIDE0NSwgMiwgMTI2LCAyMzUsIDI0NCwgMTAsIDE0NSwgMiwgMjM2LCAyMjksIAorICAgIDIzNSwgMjQ0LCAxMCwgMTQ1LCAyLCAyMzcsIDYxLCAyMzUsIDI0NCwgMTAsIDE0NSwgMiwgMjA5LCAxMDYsIDIzNSwgMjQ0LCAKKyAgICAxMCwgMTQ1LCAyLCAyMTAsIDEzNiwgMjM1LCAyNDQsIDEwLCAxNDUsIDIsIDIzOCwgMjMyLCAyMzUsIDI0NCwgMTAsIDE0NSwgCisgICAgMiwgMjE5LCAxMTQsIDIzNSwgMjQ0LCAxMCwgMTQ1LCAyLCAxMTIsIDIzNSwgMjQxLCAxMCwgMTQ1LCAyLCAxMjAsIDIzNSwgCisgICAgMjQxLCAxMCwgMTQ1LCAyLCAxMjYsIDIzNSwgMjQxLCAxMCwgMTQ1LCAyLCAyMzYsIDIyOSwgMjM1LCAyNDEsIDEwLCAxNDUsIAorICAgIDIsIDIzNywgNjEsIDIzNSwgMjQxLCAxMCwgMTQ1LCAyLCAxMjAsIDIxMCwgODIsIDEwLCAxNDUsIDIsIDEyNiwgMjEwLCA4MiwgCisgICAgMTAsIDE0NSwgMiwgMTI2LCAyMTAsIDgzLCAyMDMsIDczLCAxOSwgMTAsIDE0NSwgMiwgMjM2LCAyMjksIDIxMCwgODIsIDEwLCAKKyAgICAxNDUsIDIsIDIzNywgNjEsIDIxMCwgODIsIDEwLCAxNDUsIDIsIDIwOSwgMTA2LCAyMTAsIDgyLCAxMCwgMTQ1LCAyLCAyMTAsIAorICAgIDEzNiwgMjEwLCA4MiwgMTAsIDE0NSwgMiwgMjM4LCAyMzIsIDIxMCwgODIsIDEwLCAxNDUsIDIsIDIxOSwgMTE0LCAyMTAsIAorICAgIDgyLCAxMCwgMTQ1LCAyLCAxMTIsIDIxMCwgNzYsIDEwLCAxNDUsIDIsIDEyMCwgMjEwLCA3NiwgMTAsIDE0NSwgMiwgMTI2LCAKKyAgICAyMTAsIDc2LCAxMCwgMTQ1LCAyLCAxMjYsIDIxMCwgNzcsIDIwMywgNzMsIDE5LCAxMCwgMTQ1LCAyLCAyMzYsIDIyOSwgCisgICAgMjEwLCA3NiwgMTAsIDE0NSwgMiwgMjM3LCA2MSwgMjEwLCA3NiwgMTAsIDE0NSwgMiwgMjEwLCA4MywgMjQsIDIzNiwgNzIsIAorICAgIDkzLCAyNDAsIDI1NSwgMTAsIDE0NSwgMiwgMjEwLCA4MywgMjQsIDIzNiwgNzIsIDkzLCAyMjEsIDE2NCwgMTAsIDE0NSwgMiwgCisgICAgMTEyLCAyNDcsIDI1NSwgMTAsIDE0NSwgMiwgMTIwLCAyNDcsIDI1NSwgMTAsIDE0NSwgMiwgMTI2LCAyNDcsIDI1NSwgMTAsIAorICAgIDE0NSwgMiwgMTI2LCAyNDgsIDAsIDIwMywgNzMsIDE5LCAxMCwgMTQ1LCAyLCAyMzYsIDIyOSwgMjQ3LCAyNTUsIDEwLCAKKyAgICAxNDUsIDIsIDIzNywgNjEsIDI0NywgMjU1LCAxMCwgMTQ1LCAyLCAxMjYsIDIwMywgNzMsIDIzNiwgMjQyLCAyMzgsIDkzLCAKKyAgICAxMCwgMTQ1LCAyLCAxMjYsIDIwMywgNzMsIDIzNiwgMjQyLCAyMzgsIDkwLCAxMCwgMTQ1LCAyLCAyMzYsIDIyOSwgMjAzLCAKKyAgICA3MywgMjM2LCAyNDIsIDIyNCwgMTgwLCAxMCwgMTQ1LCAyLCAyMzYsIDIyOSwgMjAzLCA3MywgMjM2LCAyNDIsIDIyNCwgCisgICAgMTc4LCAxMCwgMTQ1LCAyLCAyMzYsIDIyOSwgMjAzLCA3MywgMjM2LCAyNDIsIDIyNCwgMTgxLCA2MiwgMTAsIDE0NSwgMiwgCisgICAgMjM2LCAyMjksIDIwMywgNzMsIDIzNiwgMjQyLCAyMjQsIDE4MSwgMjUwLCAxMDMsIDEwLCAxNDUsIDIsIDIwOSwgMTA2LCAKKyAgICAyMDMsIDczLCAyMzYsIDI0MiwgMjUwLCAxNzcsIDEwLCAxNDUsIDIsIDIxMCwgMTM2LCAyMDMsIDczLCAyMzYsIDI0MiwgCisgICAgMjI4LCAxMjYsIDEwLCAxNDUsIDIsIDIxMCwgMTM2LCAyMDMsIDczLCAyMzYsIDI0MiwgMjI4LCAxMjgsIDYyLCAxMCwgMTQ1LCAKKyAgICAyLCAyMTAsIDEzNiwgMjAzLCA3MywgMjM2LCAyNDIsIDIyOCwgMTI4LCAyNTAsIDEwMywgMTAsIDE0NSwgMiwgMjM4LCAyMzIsIAorICAgIDIwMywgNzMsIDIzNiwgMjQyLCAyMDMsIDE4NSwgMTAsIDE0NSwgMiwgMjM4LCAyMzIsIDIwMywgNzMsIDIzNiwgMjQyLCAKKyAgICAyMDMsIDE4NCwgMTAsIDE0NSwgMiwgMjE5LCAxMTQsIDIwMywgNzMsIDIzNiwgMjQyLCAyMjgsIDE0MiwgMTAsIDE0NSwgMiwgCisgICAgMjE5LCAxMTQsIDIwMywgNzMsIDIzNiwgMjQyLCAyMjgsIDE0MSwgMTAsIDE0NSwgMiwgMjE5LCAxMTQsIDIwMywgNzMsIAorICAgIDIzNiwgMjQyLCAyMjgsIDE0MCwgMTAsIDE0NSwgMiwgMjE5LCAxMTQsIDIwMywgNzMsIDIzNiwgMjQyLCAyMjgsIDE0MywgCisgICAgNjIsIDEwLCAxNDUsIDIsIDEyMCwgMjUwLCAxODIsIDIwNiwgMTU1LCAxMCwgMTQ1LCAyLCAxMjYsIDI1MCwgMTgyLCAyMDYsIAorICAgIDE1NSwgMTAsIDE0NSwgMiwgMjM2LCAyMjksIDI1MCwgMTgyLCAyMDYsIDE1NSwgMTAsIDE0NSwgMiwgMjM3LCA2MSwgMjUwLCAKKyAgICAxODIsIDIwNiwgMTU1LCAxMCwgMTQ1LCAyLCAyMDksIDEwNiwgMjUwLCAxODIsIDIwNiwgMTU1LCAxMCwgMTQ1LCAyLCAxMTIsIAorICAgIDI0OSwgODYsIDEwLCAxNDUsIDIsIDEyMCwgMjQ5LCA4NiwgMTAsIDE0NSwgMiwgMTI2LCAyNDksIDg2LCAxMCwgMTQ1LCAyLCAKKyAgICAyMzYsIDIyOSwgMjQ5LCA4NiwgMTAsIDE0NSwgMiwgMjM2LCAyMjksIDI0OSwgODcsIDIwMywgNzMsIDE5LCAxMCwgMTQ1LCAKKyAgICAyLCAyMzcsIDYxLCAyNDksIDg2LCAxMCwgMTQ1LCAyLCAyMzcsIDYxLCAyNDksIDg3LCAyMDMsIDczLCAxOSwgMTAsIDE0NSwgCisgICAgMiwgMjE5LCAxMjcsIDEwLCAxNDUsIDIsIDIxOSwgMTI4LCAxMCwgMTQ1LCAyLCAxMTIsIDIzOCwgODksIDEwLCAxNDUsIDIsIAorICAgIDEyMCwgMjM4LCA4OSwgMTAsIDE0NSwgMiwgMTEyLCAyMDYsIDc1LCAyNDAsIDI1NSwgMTAsIDE0NSwgMiwgMTIwLCAyMDYsIAorICAgIDcyLCAyNDAsIDI1NSwgMTAsIDE0NSwgMiwgMjM3LCA2MSwgMjA5LCA5NSwgMjQwLCAyNTUsIDEwLCAxNDUsIDIsIDExMiwgCisgICAgMjA2LCA3NSwgMjAzLCA3MywgMjM2LCAyNDIsIDYyLCAxMCwgMTQ1LCAyLCAxMjAsIDIwNiwgNzIsIDIwMywgNzMsIDIzNiwgCisgICAgMjQyLCA2MiwgMTAsIDE0NSwgMiwgMTEyLCAyMzgsIDIyOCwgMjUwLCAxODEsIDEwLCAxNDUsIDIsIDExMiwgMjE0LCA4OCwgCisgICAgMjUwLCAxODEsIDEwLCAxNDUsIDIsIDQwLCAyNTAsIDE2OCwgMTEyLCAyMDksIDk2LCAxMCwgMTQ1LCAyLCA0MCwgMjUwLCAKKyAgICAxNjgsIDExMiwgMjE0LCA4NywgMTAsIDE0NSwgMiwgMTEyLCAyMTQsIDg4LCAyMzUsIDIyLCAxMCwgMTQ1LCAyLCAxMTIsIAorICAgIDE2NywgMjM1LCAyMiwgMTAsIDE0NSwgMiwgMjM4LCAyMDcsIDExMiwgMjA2LCA3NCwgMTAsIDE0NSwgMiwgMjM4LCAyMDcsIAorICAgIDEyMCwgMjA2LCA3MSwgMTAsIDE0NSwgMiwgMjM4LCAyMDcsIDIzNiwgMjM1LCAxMCwgMTQ1LCAyLCAyMzgsIDIwNywgMjM3LCAKKyAgICAxMDQsIDEwLCAxNDUsIDIsIDIzNiwgMjI5LCAxMDgsIDIwMywgNzMsIDE5LCAxMCwgMTQ1LCAyLCAyMzcsIDYxLCAxMDgsIAorICAgIDIwMywgNzMsIDE5LCAxMCwgMTQ1LCAyLCAyMDksIDEwNiwgMTA4LCAyMDMsIDczLCAxOSwgMTAsIDE0NSwgMiwgMjEwLCAKKyAgICAxMzYsIDEwOCwgMjAzLCA3MywgMTksIDEwLCAxNDUsIDIsIDIzOCwgMjMyLCAxMDgsIDIwMywgNzMsIDE5LCAxMCwgMTQ1LCAKKyAgICAyLCAyMTksIDExNCwgMTA4LCAyMDMsIDczLCAxOSwgMTAsIDIxNCwgMjEyLCAyLCA0MCwgMjUwLCAxNjgsIDIwMCwgMjM4LCAKKyAgICAyNDAsIDIzOSwgMTAsIDIxNCwgMjEyLCAyLCA4MywgMjQ2LCA3OSwgMTAsIDIxNCwgMjEyLCAyLCAyNDEsIDcxLCAyNDYsIAorICAgIDc5LCAxMCwgMjE0LCAyMTIsIDIsIDI0MSwgNzEsIDIwNSwgOTQsIDEwLCAyMTQsIDIxMiwgMiwgMjQxLCA3MSwgMjE0LCA5MywgCisgICAgMTAsIDIsIDI1MiwgOTAsIDI0LCAyMTgsIDkwLCAyMDYsIDE1NSwgMTAsIDIsIDI1MiwgOTAsIDI0LCAyMDksIDIxOCwgMTAsIAorICAgIDIsIDI1MSwgMjM2LCAyNCwgMjM4LCA5MSwgMTAsIDIsIDI0OSwgMTE5LCAyNCwgMjQxLCAwLCAyMDYsIDE1NSwgMTAsIDIsIAorICAgIDI0OSwgMTA2LCAyNCwgMjUyLCA2LCAxMCwgMiwgMjQ5LCAxMDYsIDI0LCAyMTksIDE1MCwgMTAsIDIsIDI0OSwgMTA2LCAyNCwgCisgICAgMTk5LCAxMTQsIDEwLCAyLCAyNDgsIDM3LCAxMTksIDI0OCwgMzcsIDI0LCAyMjAsIDE2MCwgMTAsIDIsIDI0MiwgNTksIDI0LCAKKyAgICAyMDcsIDAsIDEwLCAyLCAyNDIsIDQ5LCAyNCwgMjI1LCAyNDUsIDEwLCAyLCAyNDEsIDMyLCAyNCwgMjI4LCAxNTMsIDEwLCAKKyAgICAyLCAyNDEsIDMyLCAyNCwgMTA4LCAxMDgsIDY2LCAxMCwgMiwgMjQxLCAzMCwgMjQsIDIwNCwgMzYsIDEwLCAyLCAyMzksIAorICAgIDEzMiwgMjQsIDI1MSwgNTMsIDEwLCAyLCAyMzksIDEzMiwgMjQsIDI1MCwgMTgxLCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAKKyAgICAyNTAsIDE4MiwgMjUwLCAxNTYsIDIyNSwgMjgsIDEwLCAyLCAyMzksIDEzMiwgMjQsIDI0MSwgMTksIDEwLCAyLCAyMzksIAorICAgIDEzMiwgMjQsIDIzOSwgMTI1LCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAyMzgsIDEwOSwgMTAsIDIsIDIzOSwgMTMyLCAyNCwgCisgICAgMjM2LCA4OSwgMTAsIDIsIDIzOSwgMTMyLCAyNCwgMjM1LCAxNjEsIDEwLCAyLCAyMzksIDEzMiwgMjQsIDIzNSwgMTQ0LCAKKyAgICAyMzUsIDI4LCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAyMzUsIDEzNSwgMTAsIDIsIDIzOSwgMTMyLCAyNCwgMTQ0LCAxMCwgMiwgCisgICAgMjM5LCAxMzIsIDI0LCAyMzQsIDc1LCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAyMjgsIDE1NCwgMjM1LCAyOCwgMTAsIDIsIAorICAgIDIzOSwgMTMyLCAyNCwgMjI3LCAzOCwgMTAsIDIsIDIzOSwgMTMyLCAyNCwgMjI1LCAyNDUsIDEwLCAyLCAyMzksIDEzMiwgCisgICAgMjQsIDIyNSwgMjM5LCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAyMjUsIDI0MCwgOTMsIDIyNywgMzgsIDEwLCAyLCAyMzksIAorICAgIDEzMiwgMjQsIDIyNSwgMTQ1LCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAyMjUsIDkxLCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAKKyAgICAyMjUsIDkyLCAyNCwgMjI1LCAyNDUsIDEwLCAyLCAyMzksIDEzMiwgMjQsIDIyNCwgMzEsIDkzLCAyMzUsIDEzNSwgMTAsIDIsIAorICAgIDIzOSwgMTMyLCAyNCwgMjIyLCAxMzUsIDEwLCAyLCAyMzksIDEzMiwgMjQsIDIyMiwgMjgsIDEwLCAyLCAyMzksIDEzMiwgCisgICAgMjQsIDIyMSwgMjExLCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAyMTksIDE1MCwgMTAsIDIsIDIzOSwgMTMyLCAyNCwgMjE1LCAKKyAgICAyMDQsIDEwLCAyLCAyMzksIDEzMiwgMjQsIDIxMCwgNjUsIDEwLCAyLCAyMzksIDEzMiwgMjQsIDIwOSwgMTgzLCAyMzUsIAorICAgIDI4LCAxMCwgMiwgMjM5LCAyOSwgMjQsIDIyNSwgMjQ1LCAxMCwgMiwgMjM5LCAyOSwgMjQsIDIxNiwgMTM1LCAxMCwgMiwgCisgICAgMjM4LCAxMTAsIDIwMCwgMTk1LCAxMCwgMiwgMjM4LCA5MiwgMjQyLCAyMjgsIDIzOCwgOTEsIDEwLCAyLCAyMzgsIDExLCAKKyAgICAyMTAsIDQ3LCAyNCwgMjUwLCAxODEsIDEwLCAyLCAyMzgsIDExLCAyMTAsIDQ3LCAyNCwgMjM0LCA3NSwgMTAsIDIsIDIzOCwgCisgICAgMTEsIDIxMCwgNDcsIDI0LCAyMjgsIDE1NCwgMjM1LCAyOCwgMTAsIDIsIDIzOCwgMTEsIDIxMCwgNDcsIDI0LCAxOTQsIDEwLCAKKyAgICAyLCAyMzgsIDExLCAyMTAsIDQ3LCAyNCwgMjI1LCA5MywgMTAsIDIsIDIzOCwgMTEsIDIxMCwgNDcsIDI0LCAyMjIsIDc2LCAKKyAgICAxMCwgMiwgMjM4LCAxMSwgMjEwLCA0NywgMjQsIDIyMiwgMjgsIDEwLCAyLCAyMzgsIDExLCAyMTAsIDQ3LCAyNCwgMjA4LCAKKyAgICAyNCwgMTAsIDIsIDIzOCwgMTEsIDI0LCAyMDgsIDI0LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDI0OSwgMTA1LCAxMCwgMiwgCisgICAgMjM2LCA4OCwgMjQsIDI0MSwgMzIsIDIzNSwgMjgsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjM5LCAxMzIsIDI0LCAyMjgsIAorICAgIDE1NCwgMjM1LCAyOCwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMzksIDEzMiwgMjQsIDIyNywgMzgsIDEwLCAyLCAyMzYsIDg4LCAKKyAgICAyNCwgMjM4LCAxMTIsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjM2LCA4OSwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMzYsIDUwLCAKKyAgICA5MywgMjQxLCA3NiwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMzYsIDUwLCA5MywgMjIwLCAzNCwgMTAsIDIsIDIzNiwgODgsIAorICAgIDI0LCAyMzQsIDIzNiwgOTMsIDYyLCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIyNSwgMjQwLCA5MywgMjI3LCAzOCwgMTAsIDIsIAorICAgIDIzNiwgODgsIDI0LCAyMjUsIDkxLCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIyNSwgOTIsIDI0LCAyMjUsIDI0NSwgMTAsIDIsIAorICAgIDIzNiwgODgsIDI0LCAyMjQsIDMwLCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIyMCwgMjUwLCAxMCwgMiwgMjM2LCA4OCwgMjQsIAorICAgIDIyMCwgMzQsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjIwLCAzNSwgOTMsIDIzOSwgMjgsIDEwLCAyLCAyMzYsIDg4LCAyNCwgCisgICAgMjIwLCAzNSwgOTMsIDIzNSwgMTYxLCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIxMCwgMjUsIDEwLCAyLCAyMzYsIDg4LCAyNCwgCisgICAgMTk5LCAxOSwgMTAsIDIsIDIzNiwgODMsIDIxMiwgMjI4LCAyMTksIDEwOSwgMjQxLCAxNTQsIDEwLCAyLCAyMzUsIDI0MywgCisgICAgMjQsIDY2LCAxMCwgMiwgMjM1LCAxMzYsIDI0LCAyMzUsIDEzNiwgMjQyLCAyMjgsIDIzNSwgMTM1LCAxMCwgMiwgMjM1LCAKKyAgICA0OSwgMjQsIDIyOCwgMTU0LCAyMzUsIDI4LCAxMCwgMiwgMjM1LCA0MCwgOTMsIDIzNSwgMTM2LCAyNCwgMjA3LCAwLCAxMCwgCisgICAgMiwgMjM0LCAyMzYsIDIwNiwgMTU2LCAyMzUsIDI4LCAxMCwgMiwgMjM0LCA3NiwgMjQsIDI1MCwgMTgyLCAxMTksIDIzNCwgCisgICAgNzYsIDI0LCAyNTAsIDE4MSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjQ4LCAzNiwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMTYxLCAKKyAgICAxMCwgMiwgMjI3LCAxMDgsIDI0LCAxMDgsIDEwOCwgNjYsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIwMywgMjE0LCAxMCwgMiwgCisgICAgMjI1LCAxNTgsIDI0LCAxOTksIDQsIDExOSwgMTk5LCAzLCAxMCwgMiwgMjI1LCAxNDYsIDEwLCAyLCAyMjUsIDE0NCwgMTAsIAorICAgIDIsIDIyNSwgMTQzLCAxMCwgMiwgMjI1LCAxNDIsIDEwLCAyLCAyMjUsIDE0MSwgMTAsIDIsIDIyNSwgMTQwLCAxMCwgMiwgCisgICAgMjI1LCAxMzksIDEwLCAyLCAyMjUsIDEzOCwgMTE5LCAyMjUsIDEzOCwgMjM1LCAyOCwgMTAsIDIsIDIyNSwgMTM3LCAxMCwgCisgICAgMiwgMjI1LCAxMzYsIDExOSwgMjI1LCAxMzUsIDEwLCAyLCAyMjUsIDEzNCwgMTAsIDIsIDIyNSwgMTMzLCAxMCwgMiwgMjI1LCAKKyAgICAxMzIsIDEwLCAyLCAyMjUsIDEzMSwgMTAsIDIsIDIyNSwgMTMwLCAxMCwgMiwgMjI1LCAxMjksIDEwLCAyLCAyMjUsIDEyOCwgCisgICAgMTAsIDIsIDIyNSwgMTI3LCAxMCwgMiwgMjI1LCAxMjYsIDEwLCAyLCAyMjUsIDEyNSwgMTAsIDIsIDIyNSwgMTI0LCAxMCwgCisgICAgMiwgMjI1LCAxMjMsIDEwLCAyLCAyMjUsIDEyMiwgMTAsIDIsIDIyNSwgMTIxLCAxMCwgMiwgMjI1LCAxMjAsIDEwLCAyLCAKKyAgICAyMjUsIDExOSwgMTAsIDIsIDIyNSwgMTE4LCAxMCwgMiwgMjI1LCAxMTcsIDEwLCAyLCAyMjUsIDExNSwgMTAsIDIsIDIyNSwgCisgICAgMTE2LCAyNCwgMjM1LCA1MCwgMTAsIDIsIDIyNSwgMTE2LCAyNCwgMjI4LCAxNTMsIDEwLCAyLCAyMjUsIDExNiwgMjQsIAorICAgIDIxNiwgMTM2LCA5MywgMjI0LCAzOSwgMTAsIDIsIDIyNSwgMTE2LCAyNCwgMjE2LCAxMzYsIDkzLCAyMTYsIDEzNiwgOTMsIAorICAgIDIyNCwgMzksIDEwLCAyLCAyMjUsIDExNiwgMjQsIDIwNCwgNDgsIDkzLCAyNDksIDEzNiwgMTAsIDIsIDIyNSwgMTE0LCAxMCwgCisgICAgMiwgMjI1LCAxMTMsIDEwLCAyLCAyMjUsIDExMiwgMTAsIDIsIDIyNSwgMTExLCAxMCwgMiwgMjI1LCAxMTAsIDEwLCAyLCAKKyAgICAyMjUsIDEwOSwgMTAsIDIsIDIyNSwgMTA4LCAxMCwgMiwgMjI1LCAxMDcsIDEwLCAyLCAyMjUsIDEwNiwgMTAsIDIsIDIyNSwgCisgICAgMTA1LCAxMCwgMiwgMjI1LCAxMDMsIDEwLCAyLCAyMjUsIDEwNCwgMjQsIDI1MCwgMTgxLCAxMCwgMiwgMjI1LCAxMDQsIDI0LCAKKyAgICAyNDksIDExOCwgMTAsIDIsIDIyNSwgMTA0LCAyNCwgMjM5LCAxMjQsIDIzNSwgMjksIDIzNSwgMjgsIDEwLCAyLCAyMjUsIAorICAgIDEwNCwgMjQsIDIyNiwgMTMsIDEwLCAyLCAyMjUsIDEwNCwgMjQsIDE5NCwgMTAsIDIsIDIyNSwgMTA0LCAyNCwgMjA2LCAKKyAgICAyMzIsIDEwLCAyLCAyMjUsIDEwNCwgMjQsIDIwNiwgMjAxLCAxMCwgMiwgMjI1LCAxMDQsIDI0LCAyMDQsIDQ3LCAxMCwgMiwgCisgICAgMjI1LCAxMDQsIDI0LCAyMDQsIDM2LCAxMCwgMiwgMjI1LCAxMDQsIDI0LCAyMDMsIDIwMSwgMTAsIDIsIDIyNSwgMTAyLCAKKyAgICAxMCwgMiwgMjI1LCAxMDAsIDEwLCAyLCAyMjUsIDEwMSwgMjQsIDIzOSwgMTM1LCAxMCwgMiwgMjI1LCAxMDEsIDI0LCAyMzYsIAorICAgIDg5LCAxMCwgMiwgMjI1LCAxMDEsIDI0LCAyMjgsIDE1MywgMTAsIDIsIDIyNSwgMTAxLCAyNCwgMjI4LCAxNTQsIDIzNSwgCisgICAgMjgsIDEwLCAyLCAyMjUsIDEwMSwgMjQsIDIxOSwgMTUwLCAxMCwgMiwgMjI1LCAxMDEsIDI0LCAyMTYsIDEzNiwgOTMsIAorICAgIDIxNiwgMTM2LCA5MywgMjI0LCAzOSwgMTAsIDIsIDIyNSwgMTAxLCAyNCwgMjEwLCA1MCwgOTMsIDIyNiwgMTYzLCAxMCwgMiwgCisgICAgMjI1LCAxMDEsIDI0LCAyMDQsIDM2LCAxMCwgMiwgMjI1LCAxMDEsIDI0LCAyMDMsIDIwMSwgMTAsIDIsIDIyNSwgOTgsIDEwLCAKKyAgICAyLCAyMjUsIDk3LCAxMCwgMiwgMjI0LCA0MSwgMjM1LCAyOSwgMjQsIDI1MCwgMTgxLCAxMCwgMiwgMjI0LCA0MSwgMjQsIAorICAgIDI0MCwgMjU1LCAxMCwgMiwgMjI0LCA0MSwgMjQsIDIzNCwgMjE2LCAxMCwgMiwgMjI0LCA0MSwgMjQsIDIxNiwgMTM1LCAxMCwgCisgICAgMiwgMjI0LCA0MSwgMjQsIDIxNiwgMTM2LCA5MywgMjE2LCAxMzYsIDkzLCAyMjQsIDM5LCAxMCwgMiwgMjI0LCA0MSwgMjQsIAorICAgIDIwNywgMCwgMTAsIDIsIDIyMSwgMjEyLCA5MywgMTk5LCAxMTMsIDEwLCAyLCAyMjAsIDI1MSwgMTE5LCAyMjAsIDI1MSwgCisgICAgMjQsIDIzNiwgODksIDEwLCAyLCAyMjAsIDI1MSwgMTE5LCAyMjAsIDI1MSwgMjQsIDIyNywgNzYsIDEwLCAyLCAyMTksIAorICAgIDExNiwgMjQsIDI0MSwgMzIsIDIzNSwgMjgsIDEwLCAyLCAyMTksIDExNiwgMjQsIDIzNSwgMTM1LCAxMCwgMiwgMjE5LCAKKyAgICAxMTYsIDI0LCAyMzUsIDMyLCAxMCwgMiwgMjE5LCAxMTYsIDI0LCAyMzQsIDc1LCAxMCwgMiwgMjE5LCAxMTYsIDI0LCAyMjYsIAorICAgIDIzNCwgMTAsIDIsIDIxOSwgMTE2LCAyNCwgMjI1LCAxNDEsIDEwLCAyLCAyMTksIDExNiwgMjQsIDIyMiwgMTM1LCAxMCwgMiwgCisgICAgMjE5LCAxMTYsIDI0LCAyMTYsIDEzNiwgOTMsIDIxNiwgMTM1LCAxMCwgMiwgMjE5LCAxMTYsIDI0LCA2NiwgMTAsIDIsIAorICAgIDIxOSwgMTE2LCAyNCwgMTA4LCA5MywgNjYsIDEwLCAyLCAyMTksIDExNiwgMjQsIDIwMywgMjAxLCAxMCwgMiwgMjEyLCA1MSwgCisgICAgMjM1LCAyOSwgMjQsIDE0NCwgMTAsIDIsIDIxMiwgNTEsIDI0LCAyMzgsIDE3OSwgMTAsIDIsIDIxMiwgNTEsIDI0LCAyMTAsIAorICAgIDY2LCAyNTAsIDE1NiwgMjI1LCAyOCwgMTAsIDIsIDIxMiwgNTEsIDI0LCAyMDcsIDAsIDEwLCAyLCAyMTAsIDExMSwgMjA2LCAKKyAgICAxNTUsIDEwLCAyLCAyMTAsIDY2LCAxMTksIDIxMCwgNjUsIDEwLCAyLCAyMTAsIDY2LCA5MywgMjMzLCA5MiwgMTAsIDIsIAorICAgIDIxMCwgNjYsIDkzLCAyMjAsIDEzNywgMTAsIDIsIDIxMCwgNjYsIDkzLCAyMTIsIDAsIDEwLCAyLCAyMDksIDIxOSwgOTMsIAorICAgIDIzOSwgMTMyLCAyNCwgMjE5LCAxNTAsIDEwLCAyLCAyMDksIDIxOSwgOTMsIDIzOSwgMjksIDI0LCAyNTEsIDg1LCAxMCwgMiwgCisgICAgMjA5LCAxODMsIDI0LCAyMDcsIDAsIDEwLCAyLCAyMDcsIDEsIDkzLCAyMTIsIDUwLCAxMCwgMiwgMjA0LCAyMDQsIDI0LCAKKyAgICAyMzYsIDU4LCAyMDYsIDE1NSwgMTAsIDIsIDIwNCwgMjA0LCAyNCwgMTI2LCAyNDAsIDI1NSwgMTAsIDIsIDIwMywgMjEzLCAKKyAgICAyMjgsIDQ5LCAxMCwgMiwgMjAzLCAyMTMsIDI0LCAyMDQsIDM2LCAxMCwgMiwgMjAzLCAyMDQsIDI0LCAyNDEsIDI1MywgMTAsIAorICAgIDIsIDIwMywgMjA0LCAyNCwgMjI1LCA5OSwgMTAsIDIsIDIwMywgMjA0LCAyNCwgMjI0LCAzOSwgMTAsIDIsIDE5OSwgMTEzLCAKKyAgICAxMCwgMiwgMTk5LCA0LCAxMTksIDE5OSwgNCwgOTMsIDIxMiwgMCwgMTAsIDIsIDE5OSwgMiwgMjQsIDEyNiwgMjQxLCAwLCAKKyAgICAyMDYsIDE1NSwgMTQsIDcsIDI1NSwgMTMxLCAxNCwgNywgMjU1LCAxMzAsIDE0LCA3LCAyNTUsIDEyOSwgMTQsIDcsIDI1NSwgCisgICAgMTI4LCAxNCwgNywgMjU1LCAxMjcsIDE0LCA3LCAyNTUsIDEyNiwgMTQsIDcsIDI1NSwgMTI1LCAxNCwgNywgMjU1LCAxMjQsIAorICAgIDE0LCA3LCAyNTUsIDEyMywgMTQsIDcsIDI1NSwgMTIyLCAxNCwgNywgMjU1LCAxMjEsIDE0LCA3LCAyNTUsIDEyMCwgMTQsIAorICAgIDcsIDI1NSwgMTE5LCAxNCwgNywgMjU1LCAxMTcsIDE0LCA3LCAyNTUsIDExNiwgMTQsIDcsIDI1NSwgMTE1LCAxNCwgNywgCisgICAgMjU1LCAxMTQsIDE0LCA3LCAyNTUsIDExMywgMTQsIDcsIDI1NSwgMTEyLCAxNCwgNywgMjU1LCAxMTEsIDE0LCA3LCAyNTUsIAorICAgIDExMCwgMTQsIDcsIDI1NSwgMTA5LCAxNCwgNywgMjU1LCAxMDgsIDE0LCA3LCAyNTUsIDEwNywgMTQsIDcsIDI1NSwgMTA2LCAKKyAgICAxNCwgNywgMjU1LCAxMDUsIDE0LCA3LCAyNTUsIDEwNCwgMTQsIDcsIDI1NSwgMTAzLCAxNCwgNywgMjU1LCAxMDIsIDE0LCAKKyAgICA3LCAyNTUsIDEwMSwgMTQsIDcsIDI1NSwgMTAwLCAxNCwgNywgMjU1LCA5OCwgMTQsIDcsIDI1NSwgOTcsIDE0LCA3LCAyNTUsIAorICAgIDk1LCAxNCwgNywgMjU1LCA5NCwgMTQsIDcsIDI1NSwgOTMsIDE0LCA3LCAyNTUsIDkyLCAxNCwgNywgMjU1LCA5MSwgMTQsIAorICAgIDcsIDI1NSwgOTAsIDE0LCA3LCAyNTUsIDg5LCAxNCwgNywgMjU1LCA4OCwgMTQsIDcsIDI1NSwgODcsIDE0LCA3LCAyNTUsIAorICAgIDg2LCAxNCwgNywgMjU1LCA4NSwgMTQsIDcsIDI1NSwgODQsIDE0LCA3LCAyNTUsIDgyLCAxNCwgNywgMjU1LCA4MSwgMTQsIAorICAgIDcsIDI1NSwgODAsIDE0LCA3LCAyNTUsIDc4LCAxNCwgNywgMjU1LCA3NywgMTQsIDcsIDI1NSwgNzYsIDE0LCA3LCAyNTUsIAorICAgIDc1LCAxNCwgNywgMjU1LCA3NCwgMTQsIDcsIDI1NSwgNzMsIDE0LCA3LCAyNTUsIDcyLCAxNCwgNywgMjU1LCA3MSwgMTQsIAorICAgIDcsIDI1NSwgNjgsIDE0LCA3LCAyNTUsIDY3LCAxNCwgNywgMjU1LCA2NiwgMTQsIDcsIDI1NSwgNjUsIDE0LCA3LCAyNTUsIAorICAgIDY0LCAxNCwgNywgMjU1LCA2MywgMTQsIDcsIDI1NSwgNjIsIDE0LCA3LCAyNTUsIDYxLCAxNCwgNywgMjU1LCA2MCwgMTQsIAorICAgIDcsIDI1NSwgNTksIDE0LCA3LCAyNTUsIDU4LCAxNCwgNywgMjU1LCA1NywgMTQsIDcsIDI1NSwgNTYsIDE0LCA3LCAyNTUsIAorICAgIDU1LCAxNCwgNywgMjU1LCA1NCwgMTQsIDcsIDI1NSwgNTMsIDE0LCA3LCAyNTUsIDUyLCAxNCwgNywgMjU1LCA1MSwgMTQsIAorICAgIDcsIDI1NSwgNTAsIDE0LCA3LCAyNTUsIDQ5LCAxNCwgNywgMjU1LCA0NSwgMTQsIDcsIDI1NSwgNDQsIDE0LCA3LCAyNTUsIAorICAgIDQzLCAxNCwgNywgMjU1LCA0MiwgMTQsIDcsIDI1MCwgMTAxLCAxNCwgNywgMjUwLCA5OSwgMTQsIDcsIDI1MCwgOTcsIDE0LCAKKyAgICA3LCAyNTAsIDk1LCAxNCwgNywgMjUwLCA5MywgMTQsIDcsIDI1MCwgOTIsIDE0LCA3LCAyNTAsIDkwLCAxNCwgNywgMjUwLCAKKyAgICA4OCwgMTQsIDcsIDI1MCwgODYsIDE0LCA3LCAyNTAsIDg0LCAxNCwgNywgMjQ3LCAyMTksIDE0LCA3LCAyNDcsIDIxOCwgMTQsIAorICAgIDcsIDI0NywgMjE3LCAxNCwgNywgMjQ3LCAyMTYsIDE0LCA3LCAyNDcsIDIxNSwgMTQsIDcsIDI0NywgMjE0LCAxNCwgNywgCisgICAgMjQ3LCAyMTMsIDE0LCA3LCAyNDcsIDIxMiwgMTQsIDcsIDI0NywgMjExLCAxNCwgNywgMjQ3LCAyMTAsIDE0LCA3LCAyNDcsIAorICAgIDIwOSwgMTQsIDcsIDI0NywgMjA4LCAxNCwgNywgMjQ3LCAyMDcsIDE0LCA3LCAyNDcsIDIwNiwgMTQsIDcsIDI0NywgMjA1LCAKKyAgICAxNCwgNywgMjQ3LCAyMDQsIDE0LCA3LCAyNDcsIDIwMywgMTQsIDcsIDI0NywgMjAyLCAxNCwgNywgMjQ3LCAyMDEsIDE0LCAKKyAgICA3LCAyNDcsIDIwMCwgMTQsIDcsIDI0NywgMTk5LCAxNCwgNywgMjQ3LCAxOTgsIDE0LCA3LCAyNDcsIDE5NywgMTQsIDcsIAorICAgIDI0NywgMTk2LCAxNCwgNywgMjQ3LCAxOTUsIDE0LCA3LCAyNDcsIDE5NCwgMTQsIDcsIDI0NywgMTkzLCAxNCwgNywgMjQ3LCAKKyAgICAxOTIsIDE0LCA3LCAyNDIsIDE1MiwgMTQsIDcsIDI0MiwgMTUxLCAxNCwgNywgMjQyLCAxNTAsIDE0LCA3LCAyNDIsIDE0OSwgCisgICAgMTQsIDcsIDI0MiwgMTQ4LCAxNCwgNywgMjQyLCAxNDcsIDE0LCA3LCAyNDIsIDE0NiwgMTQsIDcsIDI0MiwgMTQ1LCAxNCwgCisgICAgNywgMjQyLCAxNDQsIDE0LCA3LCAyNDIsIDE0MywgMTQsIDcsIDI0MiwgMTQyLCAxNCwgNywgMjQyLCAxNDEsIDE0LCA3LCAKKyAgICAyNDIsIDE0MCwgMTQsIDcsIDI0MiwgMTM5LCAxNCwgNywgMjQyLCAxMzgsIDE0LCA3LCAyNDIsIDEzNywgMTQsIDcsIDI0MiwgCisgICAgMTM2LCAxNCwgNywgMjQyLCAxMzUsIDE0LCA3LCAyNDIsIDEzNCwgMTQsIDcsIDI0MiwgMTMzLCAxNCwgNywgMjQyLCAxMzIsIAorICAgIDE0LCA3LCAyNDIsIDEzMSwgMTQsIDcsIDI0MiwgMTMwLCAxNCwgNywgMjQyLCAxMjksIDE0LCA3LCAyNDIsIDEyOCwgMTQsIAorICAgIDcsIDI0MiwgMTI3LCAxNCwgNywgMjQyLCAxMjYsIDE0LCA3LCAyNDIsIDEyNSwgMTQsIDcsIDI0MiwgMTI0LCAxNCwgNywgCisgICAgMjQyLCAxMjMsIDE0LCA3LCAyNDIsIDEyMiwgMTQsIDcsIDI0MiwgMTIxLCAxNCwgNywgMjQyLCAxMjAsIDE0LCA3LCAyNDIsIAorICAgIDExOSwgMTQsIDcsIDI0MiwgMTE4LCAxNCwgNywgMjQyLCAxMTcsIDE0LCA3LCAyNDIsIDExNiwgMTQsIDcsIDI0MiwgMTE1LCAKKyAgICAxNCwgNywgMjQyLCAxMTQsIDE0LCA3LCAyNDIsIDExMywgMTQsIDcsIDI0MiwgMTEyLCAxNCwgNywgMjQyLCAxMTEsIDE0LCAKKyAgICA3LCAyNDIsIDExMCwgMTQsIDcsIDI0MiwgMTA5LCAxNCwgNywgMjQyLCAxMDgsIDE0LCA3LCAyNDIsIDEwNywgMTQsIDcsIAorICAgIDI0MiwgMTA2LCAxNCwgNywgMjQyLCAxMDUsIDE0LCA3LCAyNDIsIDEwNCwgMTQsIDcsIDI0MiwgMTAzLCAxNCwgNywgMjQyLCAKKyAgICAxMDIsIDE0LCA3LCAyNDIsIDEwMSwgMTQsIDcsIDI0MiwgMTAwLCAxNCwgNywgMjQyLCA5OSwgMTQsIDcsIDI0MiwgOTgsIAorICAgIDE0LCA3LCAyNDIsIDk3LCAxNCwgNywgMjQyLCA5NiwgMTQsIDcsIDI0MiwgOTUsIDE0LCA3LCAyNDIsIDk0LCAxNCwgNywgCisgICAgMjQyLCA5MywgMTQsIDcsIDI0MiwgOTIsIDE0LCA3LCAyNDIsIDkxLCAxNCwgNywgMjQyLCA5MCwgMTQsIDcsIDI0MiwgODksIAorICAgIDE0LCA3LCAyNDIsIDg4LCAxNCwgNywgMjQyLCA4NywgMTQsIDcsIDI0MiwgODYsIDE0LCA3LCAyNDIsIDg1LCAxNCwgNywgCisgICAgMjQyLCA4NCwgMTQsIDcsIDI0MiwgODMsIDE0LCA3LCAyNDIsIDgyLCAxNCwgNywgMjQyLCA4MSwgMTQsIDcsIDI0MiwgODAsIAorICAgIDE0LCA3LCAyNDIsIDc5LCAxNCwgNywgMjQyLCA3OCwgMTQsIDcsIDI0MiwgNzcsIDE0LCA3LCAyNDIsIDc2LCAxNCwgNywgCisgICAgMjQyLCA3NSwgMTQsIDcsIDI0MiwgNzQsIDE0LCA3LCAyNDIsIDczLCAxNCwgNywgMjQyLCA3MiwgMTQsIDcsIDI0MiwgNzEsIAorICAgIDE0LCA3LCAyNDIsIDcwLCAxNCwgNywgMjQyLCA2OSwgMTQsIDcsIDI0MiwgNjgsIDE0LCA3LCAyNDIsIDY3LCAxNCwgNywgCisgICAgMjQyLCA2NiwgMTQsIDcsIDI0MiwgNjUsIDE0LCA3LCAyNDIsIDY0LCAxNCwgNywgMjQyLCA2MywgMTQsIDcsIDI0MiwgNjIsIAorICAgIDE0LCA3LCAyNDIsIDYxLCAxNCwgNywgMjM5LCA3MywgMTQsIDcsIDIzOSwgNzIsIDE0LCA3LCAyMzksIDcxLCAxNCwgNywgCisgICAgMjM5LCA3MCwgMTQsIDcsIDIzOSwgNjksIDE0LCA3LCAyMzksIDY4LCAxNCwgNywgMjM5LCA2NywgMTQsIDcsIDIzOSwgNjYsIAorICAgIDE0LCA3LCAyMzksIDY1LCAxNCwgNywgMjM5LCA2NCwgMTQsIDcsIDIzOSwgNjMsIDE0LCA3LCAyMzksIDYyLCAxNCwgNywgCisgICAgMjM5LCA2MSwgMTQsIDcsIDIzOSwgNjAsIDE0LCA3LCAyMzksIDU5LCAxNCwgNywgMjM5LCA1OCwgMTQsIDcsIDIzOSwgNTcsIAorICAgIDE0LCA3LCAyMzksIDU2LCAxNCwgNywgMjM5LCA1NSwgMTQsIDcsIDIzOSwgNTQsIDE0LCA3LCAyMzksIDUzLCAxNCwgNywgCisgICAgMjM5LCA1MiwgMTQsIDcsIDIzOSwgNTEsIDE0LCA3LCAyMzksIDUwLCAxNCwgNywgMjM5LCA0OSwgMTQsIDcsIDIzOSwgNDgsIAorICAgIDE0LCA3LCAyMzksIDQ3LCAxNCwgNywgMjM5LCA0NiwgMTQsIDcsIDIzOSwgNDUsIDE0LCA3LCAyMzksIDQ0LCAxNCwgNywgCisgICAgMjM5LCA0MywgMTQsIDcsIDIzOSwgNDIsIDE0LCA3LCAyMzksIDQxLCAxNCwgNywgMjM5LCA0MCwgMTQsIDcsIDIzOSwgMzksIAorICAgIDE0LCA3LCAyMzksIDM4LCAxNCwgNywgMjM5LCAzNywgMTQsIDcsIDIzOSwgMzYsIDE0LCA3LCAyMzksIDM1LCAxNCwgNywgCisgICAgMjM5LCAzNCwgMTQsIDcsIDIzOSwgMzMsIDE0LCA3LCAyMzksIDMyLCAxNCwgNywgMjM5LCAzMSwgMTQsIDcsIDIzOSwgMzAsIAorICAgIDE0LCA3LCAyMzgsIDQsIDE0LCA3LCAyMzgsIDMsIDE0LCA3LCAyMzgsIDIsIDE0LCA3LCAyMzgsIDEsIDE0LCA3LCAyMzgsIAorICAgIDAsIDE0LCA3LCAyMzcsIDI1NSwgMTQsIDcsIDIzNywgMjU0LCAxNCwgNywgMjM3LCAyNTMsIDE0LCA3LCAyMzcsIDI1MiwgCisgICAgMTQsIDcsIDIzNywgMjUxLCAxNCwgNywgMjM3LCAyNTAsIDE0LCA3LCAyMzcsIDI0OSwgMTQsIDcsIDIzNywgMjQ4LCAxNCwgCisgICAgNywgMjM3LCAyNDcsIDE0LCA3LCAyMzcsIDI0NiwgMTQsIDcsIDIzNywgMjQ1LCAxNCwgNywgMjM3LCAyNDQsIDE0LCA3LCAKKyAgICAyMzcsIDI0MywgMTQsIDcsIDIzNywgMjQyLCAxNCwgNywgMjM3LCAyNDEsIDE0LCA3LCAyMzcsIDI0MCwgMTQsIDcsIDIzNywgCisgICAgMjM5LCAxNCwgNywgMjM3LCAyMzgsIDE0LCA3LCAyMzcsIDIzNywgMTQsIDcsIDIzNywgMjM2LCAxNCwgNywgMjM3LCAyMzUsIAorICAgIDE0LCA3LCAyMzcsIDIzNCwgMTQsIDcsIDIzNywgMjMzLCAxNCwgNywgMjM3LCAyMzIsIDE0LCA3LCAyMzcsIDIzMSwgMTQsIAorICAgIDcsIDIzNywgMjMwLCAxNCwgNywgMjM3LCAyMjksIDE0LCA3LCAyMzcsIDIyOCwgMTQsIDcsIDIzNywgMjI3LCAxNCwgNywgCisgICAgMjM3LCAyMjYsIDE0LCA3LCAyMzcsIDIyNSwgMTQsIDcsIDIzNywgMjI0LCAxNCwgNywgMjM3LCAyMjMsIDE0LCA3LCAyMzcsIAorICAgIDIyMiwgMTQsIDcsIDIzNywgMjIxLCAxNCwgNywgMjM3LCAyMjAsIDE0LCA3LCAyMzcsIDIxOSwgMTQsIDcsIDIzNywgMjE4LCAKKyAgICAxNCwgNywgMjM3LCAyMTcsIDE0LCA3LCAyMzcsIDIxNiwgMTQsIDcsIDIzNywgMjE1LCAxNCwgNywgMjM3LCAyMTQsIDE0LCAKKyAgICA3LCAyMzcsIDIxMywgMTQsIDcsIDIzNywgMjEyLCAxNCwgNywgMjM3LCAyMTEsIDE0LCA3LCAyMzcsIDIxMCwgMTQsIDcsIAorICAgIDIzNywgMjA5LCAxNCwgNywgMjM3LCAyMDgsIDE0LCA3LCAyMzcsIDIwNywgMTQsIDcsIDIzNywgMjA2LCAxNCwgNywgMjM3LCAKKyAgICAyMDUsIDE0LCA3LCAyMzcsIDIwNCwgMTQsIDcsIDIzNywgMjAzLCAxNCwgNywgMjM3LCAyMDIsIDE0LCA3LCAyMzcsIDIwMSwgCisgICAgMTQsIDcsIDIzNywgMjAwLCAxNCwgNywgMjM3LCAxOTksIDE0LCA3LCAyMzcsIDE5OCwgMTQsIDcsIDIzNywgMTk3LCAxNCwgCisgICAgNywgMjM3LCAxOTYsIDE0LCA3LCAyMzYsIDE1NSwgMTQsIDcsIDIzNiwgMTU0LCAxNCwgNywgMjM2LCAxNTMsIDE0LCA3LCAKKyAgICAyMzYsIDE1MiwgMTQsIDcsIDIzNiwgMTUxLCAxNCwgNywgMjM2LCAxNTAsIDE0LCA3LCAyMzYsIDE0OSwgMTQsIDcsIDIzNiwgCisgICAgMTQ4LCAxNCwgNywgMjM2LCAxNDcsIDE0LCA3LCAyMzYsIDE0NiwgMTQsIDcsIDIzNiwgMTQ1LCAxNCwgNywgMjM2LCAxNDQsIAorICAgIDE0LCA3LCAyMzYsIDE0MywgMTQsIDcsIDIzNiwgMTQyLCAxNCwgNywgMjM2LCAxNDEsIDE0LCA3LCAyMzYsIDE0MCwgMTQsIAorICAgIDcsIDIzNiwgMTM5LCAxNCwgNywgMjM2LCAxMzgsIDE0LCA3LCAyMzYsIDEzNywgMTQsIDcsIDIzNiwgMTM2LCAxNCwgNywgCisgICAgMjM2LCAxMzUsIDE0LCA3LCAyMzYsIDEzNCwgMTQsIDcsIDIzNiwgMTMzLCAxNCwgNywgMjM2LCAxMzIsIDE0LCA3LCAyMzYsIAorICAgIDEzMSwgMTQsIDcsIDIzNiwgMTMwLCAxNCwgNywgMjM2LCAxMjksIDE0LCA3LCAyMzYsIDEyOCwgMTQsIDcsIDIzNiwgMTI3LCAKKyAgICAxNCwgNywgMjM2LCAxMjYsIDE0LCA3LCAyMzYsIDEyNSwgMTQsIDcsIDIzNiwgMTI0LCAxNCwgNywgMjM2LCAxMjMsIDE0LCAKKyAgICA3LCAyMzYsIDEyMiwgMTQsIDcsIDIzNiwgMTIxLCAxNCwgNywgMjM2LCAxMjAsIDE0LCA3LCAyMzYsIDExOSwgMTQsIDcsIAorICAgIDIzNiwgMTE4LCAxNCwgNywgMjM2LCAxMTcsIDE0LCA3LCAyMzYsIDExNiwgMTQsIDcsIDIzNiwgMTE1LCAxNCwgNywgMjM2LCAKKyAgICAxMTQsIDE0LCA3LCAyMzYsIDExMywgMTQsIDcsIDIzNiwgMTEyLCAxNCwgNywgMjM2LCAxMTEsIDE0LCA3LCAyMzYsIDExMCwgCisgICAgMTQsIDcsIDIzNiwgMTA5LCAxNCwgNywgMjM2LCAxMDgsIDE0LCA3LCAyMzYsIDEwNywgMTQsIDcsIDIzNiwgMTA2LCAxNCwgCisgICAgNywgMjM2LCAxMDUsIDE0LCA3LCAyMzYsIDEwNCwgMTQsIDcsIDIzNiwgMTAzLCAxNCwgNywgMjM2LCAxMDIsIDE0LCA3LCAKKyAgICAyMzYsIDEwMSwgMTQsIDcsIDIzNiwgMTAwLCAxNCwgNywgMjM2LCA5OSwgMTQsIDcsIDIzNiwgOTgsIDE0LCA3LCAyMzYsIAorICAgIDk3LCAxNCwgNywgMjM2LCA5NiwgMTQsIDcsIDIzNiwgOTUsIDE0LCA3LCAyMzYsIDk0LCAxNCwgNywgMjM2LCA5MywgMTQsIAorICAgIDcsIDIzNiwgOTIsIDE0LCA3LCAyMzQsIDI0NSwgMTQsIDcsIDIzNCwgMjQ0LCAxNCwgNywgMjM0LCAyNDMsIDE0LCA3LCAKKyAgICAyMzQsIDI0MiwgMTQsIDcsIDIzNCwgMjQxLCAxNCwgNywgMjM0LCAyNDAsIDE0LCA3LCAyMzQsIDIzOSwgMTQsIDcsIDIzNCwgCisgICAgMjM4LCAxNCwgNywgMjM0LCAyMzcsIDE0LCA3LCAyMzMsIDMsIDE0LCA3LCAyMzMsIDIsIDE0LCA3LCAyMzMsIDEsIDE0LCA3LCAKKyAgICAyMzMsIDAsIDE0LCA3LCAyMzIsIDI1NSwgMTQsIDcsIDIzMiwgMjU0LCAxNCwgNywgMjMyLCAyNTMsIDE0LCA3LCAyMzIsIAorICAgIDI1MiwgMTQsIDcsIDIzMiwgMjUxLCAxNCwgNywgMjMyLCAyNTAsIDE0LCA3LCAyMzIsIDI0OSwgMTQsIDcsIDIzMiwgMjQ4LCAKKyAgICAxNCwgNywgMjMyLCAyNDcsIDE0LCA3LCAyMzIsIDI0NiwgMTQsIDcsIDIzMiwgMjQ1LCAxNCwgNywgMjMyLCAyNDQsIDE0LCAKKyAgICA3LCAyMzIsIDI0MywgMTQsIDcsIDIzMiwgMjQyLCAxNCwgNywgMjMyLCAyNDEsIDE0LCA3LCAyMjcsIDExNywgMTQsIDcsIAorICAgIDIyNywgMTE2LCAxNCwgNywgMjI3LCAxMTUsIDE0LCA3LCAyMjcsIDExNCwgMTQsIDcsIDIyNywgMTEzLCAxNCwgNywgMjI3LCAKKyAgICAxMTIsIDE0LCA3LCAyMjcsIDExMSwgMTQsIDcsIDIyNywgMTEwLCAxNCwgNywgMjI1LCAxOTAsIDE0LCA3LCAyMjUsIDE4OSwgCisgICAgMTQsIDcsIDIyNSwgMTg4LCAxNCwgNywgMjI1LCAxODcsIDE0LCA3LCAyMjUsIDE4NiwgMTQsIDcsIDIyNSwgMTg1LCAxNCwgCisgICAgNywgMjI1LCAxODQsIDE0LCA3LCAyMjUsIDE4MywgMTQsIDcsIDIyNSwgMTgyLCAxNCwgNywgMjI1LCAxODEsIDE0LCA3LCAKKyAgICAyMjMsIDI0MSwgMTQsIDcsIDIyMywgMjQwLCAxNCwgNywgMjIzLCAyMzksIDE0LCA3LCAyMjMsIDIzNywgMTQsIDcsIDIyMywgCisgICAgMjM1LCAxNCwgNywgMjIzLCAyMzQsIDE0LCA3LCAyMjMsIDIzMiwgMTQsIDcsIDIyMywgMjMwLCAxNCwgNywgMjIzLCAyMjgsIAorICAgIDE0LCA3LCAyMjMsIDIyNiwgMTQsIDcsIDIyMywgMjI0LCAxNCwgNywgMjIzLCAyMjIsIDE0LCA3LCAyMjMsIDIyMCwgMTQsIAorICAgIDcsIDIyMywgMjE5LCAxNCwgNywgMjIzLCAyMTcsIDE0LCA3LCAyMjMsIDIxNSwgMTQsIDcsIDIyMywgMjE0LCAxNCwgNywgCisgICAgMjIzLCAyMTMsIDE0LCA3LCAyMjMsIDIxMiwgMTQsIDcsIDIyMywgMjExLCAxNCwgNywgMjIzLCAyMTAsIDE0LCA3LCAyMjMsIAorICAgIDIwOSwgMTQsIDcsIDIyMywgMjA4LCAxNCwgNywgMjIzLCAyMDcsIDE0LCA3LCAyMjMsIDIwNSwgMTQsIDcsIDIyMywgMjAzLCAKKyAgICAxNCwgNywgMjIzLCAyMDEsIDE0LCA3LCAyMjMsIDIwMCwgMTQsIDcsIDIyMywgMTk4LCAxNCwgNywgMjIzLCAxOTcsIDE0LCAKKyAgICA3LCAyMjMsIDE5NSwgMTQsIDcsIDIyMywgMTk0LCAxNCwgNywgMjIzLCAxOTIsIDE0LCA3LCAyMjMsIDE5MCwgMTQsIDcsIAorICAgIDIyMywgMTg4LCAxNCwgNywgMjIzLCAxODYsIDE0LCA3LCAyMjMsIDE4NCwgMTQsIDcsIDIyMywgMTgzLCAxNCwgNywgMjIzLCAKKyAgICAxODEsIDE0LCA3LCAyMjMsIDE3OSwgMTQsIDcsIDIyMywgMTc4LCAxNCwgNywgMjIzLCAxNzYsIDE0LCA3LCAyMjMsIDE3NCwgCisgICAgMTQsIDcsIDIyMywgMTcyLCAxNCwgNywgMjIzLCAxNzAsIDE0LCA3LCAyMjMsIDE2OSwgMTQsIDcsIDIyMywgMTY3LCAxNCwgCisgICAgNywgMjIzLCAxNjUsIDE0LCA3LCAyMjMsIDE2MywgMTQsIDcsIDIyMywgMTYyLCAxNCwgNywgMjIzLCAxNjAsIDE0LCA3LCAKKyAgICAyMjMsIDE1OCwgMTQsIDcsIDIyMywgMTU3LCAxNCwgNywgMjIzLCAxNTYsIDE0LCA3LCAyMjMsIDE1NCwgMTQsIDcsIDIyMywgCisgICAgMTUyLCAxNCwgNywgMjIzLCAxNTAsIDE0LCA3LCAyMjMsIDE0OCwgMTQsIDcsIDIyMywgMTQ2LCAxNCwgNywgMjIzLCAxNDQsIAorICAgIDE0LCA3LCAyMjMsIDE0MiwgMTQsIDcsIDIyMywgMTQxLCAxNCwgNywgMjIzLCAxMzksIDE0LCA3LCAyMjMsIDEzNywgMTQsIAorICAgIDcsIDIyMywgMTM1LCAxNCwgNywgMjIzLCAxMzMsIDE0LCA3LCAyMjAsIDIxMSwgMTQsIDcsIDIyMCwgMjEwLCAxNCwgNywgCisgICAgMjIwLCAyMDksIDE0LCA3LCAyMjAsIDIwOCwgMTQsIDcsIDIyMCwgMjA3LCAxNCwgNywgMjIwLCAyMDYsIDE0LCA3LCAyMjAsIAorICAgIDIwNSwgMTQsIDcsIDIyMCwgMjA0LCAxNCwgNywgMjIwLCAyMDMsIDE0LCA3LCAyMjAsIDIwMiwgMTQsIDcsIDIyMCwgMjAxLCAKKyAgICAxNCwgNywgMjIwLCAyMDAsIDE0LCA3LCAyMjAsIDE5OSwgMTQsIDcsIDIyMCwgMTk4LCAxNCwgNywgMjIwLCAxOTcsIDE0LCAKKyAgICA3LCAyMjAsIDE5NiwgMTQsIDcsIDIyMCwgMTk1LCAxNCwgNywgMjIwLCAxOTQsIDE0LCA3LCAyMjAsIDE5MywgMTQsIDcsIAorICAgIDIyMCwgMTkyLCAxNCwgNywgMjIwLCAxOTEsIDE0LCA3LCAyMjAsIDE5MCwgMTQsIDcsIDIyMCwgMTg5LCAxNCwgNywgMjIwLCAKKyAgICAxODgsIDE0LCA3LCAyMjAsIDE4NywgMTQsIDcsIDIyMCwgMTg2LCAxNCwgNywgMjIwLCAxODUsIDE0LCA3LCAyMjAsIDE4NCwgCisgICAgMTQsIDcsIDIyMCwgMTgzLCAxNCwgNywgMjIwLCAxODIsIDE0LCA3LCAyMjAsIDE4MSwgMTQsIDcsIDIyMCwgMTgwLCAxNCwgCisgICAgNywgMjIwLCAxNzksIDE0LCA3LCAyMjAsIDE3OCwgMTQsIDcsIDIyMCwgMTc3LCAxNCwgNywgMjIwLCAxNzYsIDE0LCA3LCAKKyAgICAyMjAsIDE3NSwgMTQsIDcsIDIyMCwgMTc0LCAxNCwgNywgMjIwLCAxNzMsIDE0LCA3LCAyMjAsIDE3MiwgMTQsIDcsIDIyMCwgCisgICAgMTcxLCAxNCwgNywgMjIwLCAxNzAsIDE0LCA3LCAyMjAsIDE2OSwgMTQsIDcsIDIyMCwgMTY4LCAxNCwgNywgMjIwLCAxNjcsIAorICAgIDE0LCA3LCAyMjAsIDE2NiwgMTQsIDcsIDIyMCwgMTY1LCAxNCwgNywgMjIwLCAxNjQsIDE0LCA3LCAyMjAsIDE2MywgMTQsIAorICAgIDcsIDIxOSwgNDYsIDE0LCA3LCAyMTksIDQ1LCAxNCwgNywgMjE5LCA0NCwgMTQsIDcsIDIxOSwgNDMsIDE0LCA3LCAyMTksIAorICAgIDQyLCAxNCwgNywgMjE5LCA0MSwgMTQsIDcsIDIxOSwgNDAsIDE0LCA3LCAyMTksIDM5LCAxNCwgNywgMjE5LCAzOCwgMTQsIAorICAgIDcsIDIxOSwgMzcsIDE0LCA3LCAyMTksIDM2LCAxNCwgNywgMjE5LCAzNSwgMTQsIDcsIDIxOSwgMzQsIDE0LCA3LCAyMTksIAorICAgIDMzLCAxNCwgNywgMjE5LCAzMiwgMTQsIDcsIDIxOSwgMzEsIDE0LCA3LCAyMTksIDMwLCAxNCwgNywgMjE5LCAyOSwgMTQsIAorICAgIDcsIDIxOSwgMjgsIDE0LCA3LCAyMTksIDI3LCAxNCwgNywgMjE5LCAyNiwgMTQsIDcsIDIxOSwgMjUsIDE0LCA3LCAyMTgsIAorICAgIDEzMiwgMTQsIDcsIDIxOCwgMTMxLCAxNCwgNywgMjE4LCAxMzAsIDE0LCA3LCAyMTgsIDEyOSwgMTQsIDcsIDIxOCwgMTI4LCAKKyAgICAxNCwgNywgMjE4LCAxMjcsIDE0LCA3LCAyMTgsIDEyNiwgMTQsIDcsIDIxOCwgMTI1LCAxNCwgNywgMjE4LCAxMjQsIDE0LCAKKyAgICA3LCAyMTgsIDEyMywgMTQsIDcsIDIxOCwgMTIyLCAxNCwgNywgMjE4LCAxMjEsIDE0LCA3LCAyMTgsIDEyMCwgMTQsIDcsIAorICAgIDIxOCwgMTE5LCAxNCwgNywgMjE4LCAxMTgsIDE0LCA3LCAyMTgsIDExNywgMTQsIDcsIDIxOCwgMTE2LCAxNCwgNywgMjE4LCAKKyAgICAxMTUsIDE0LCA3LCAyMTgsIDExNCwgMTQsIDcsIDIxOCwgMTEzLCAxNCwgNywgMjE4LCAxMTIsIDE0LCA3LCAyMTgsIDExMSwgCisgICAgMTQsIDcsIDIxOCwgMTEwLCAxNCwgNywgMjE4LCAxMDksIDE0LCA3LCAyMTgsIDEwOCwgMTQsIDcsIDIxOCwgMTA3LCAxNCwgCisgICAgNywgMjE3LCAyMjIsIDE0LCA3LCAyMTcsIDIyMSwgMTQsIDcsIDIxNywgMjIwLCAxNCwgNywgMjE3LCAyMTksIDE0LCA3LCAKKyAgICAyMTcsIDIxOCwgMTQsIDcsIDIxNywgMjE3LCAxNCwgNywgMjE3LCAyMTYsIDE0LCA3LCAyMTcsIDIxNSwgMTQsIDcsIDIxNywgCisgICAgMjE0LCAxNCwgNywgMjE3LCAyMTMsIDE0LCA3LCAyMTcsIDIxMiwgMTQsIDcsIDIxNywgMjExLCAxNCwgNywgMjE3LCAyMTAsIAorICAgIDE0LCA3LCAyMTcsIDIwOSwgMTQsIDcsIDIxNywgMjA4LCAxNCwgNywgMjE3LCAyMDcsIDE0LCA3LCAyMTcsIDIwNiwgMTQsIAorICAgIDcsIDIxNywgMjA1LCAxNCwgNywgMjE3LCAyMDQsIDE0LCA3LCAyMTcsIDIwMywgMTQsIDcsIDIxNywgMjAyLCAxNCwgNywgCisgICAgMjE3LCAyMDEsIDE0LCA3LCAyMTcsIDIwMCwgMTQsIDcsIDIxNywgMTk5LCAxNCwgNywgMjE3LCAxOTgsIDE0LCA3LCAyMTcsIAorICAgIDE5NywgMTQsIDcsIDIxNywgMTk2LCAxNCwgNywgMjE3LCAxOTUsIDE0LCA3LCAyMTcsIDE5NCwgMTQsIDcsIDIxNywgMTkzLCAKKyAgICAxNCwgNywgMjE3LCAxOTIsIDE0LCA3LCAyMTcsIDE5MSwgMTQsIDcsIDIxNywgMTkwLCAxNCwgNywgMjE3LCAxODksIDE0LCAKKyAgICA3LCAyMTcsIDE4OCwgMTQsIDcsIDIxNywgMTg3LCAxNCwgNywgMjE3LCAxODYsIDE0LCA3LCAyMTcsIDE4NSwgMTQsIDcsIAorICAgIDIxNywgMTg0LCAxNCwgNywgMjE3LCAxODMsIDE0LCA3LCAyMTcsIDE4MiwgMTQsIDcsIDIxNywgMTgxLCAxNCwgNywgMjE3LCAKKyAgICAxODAsIDE0LCA3LCAyMTcsIDE3OSwgMTQsIDcsIDIxNywgMTc4LCAxNCwgNywgMjE3LCAxNzcsIDE0LCA3LCAyMTcsIDE3NiwgCisgICAgMTQsIDcsIDIxNywgMTc1LCAxNCwgNywgMjE3LCAxNzQsIDE0LCA3LCAyMTcsIDE3MywgMTQsIDcsIDIxNywgMTcyLCAxNCwgCisgICAgNywgMjE3LCAxNzEsIDE0LCA3LCAyMTcsIDE3MCwgMTQsIDcsIDIxNywgMTY5LCAxNCwgNywgMjE3LCAxNjgsIDE0LCA3LCAKKyAgICAyMTcsIDE2NywgMTQsIDcsIDIxNywgMTY2LCAxNCwgNywgMjE3LCAxNjUsIDE0LCA3LCAyMTcsIDE2NCwgMTQsIDcsIDIxNywgCisgICAgMTYzLCAxNCwgNywgMjE3LCAxNjIsIDE0LCA3LCAyMTcsIDE2MSwgMTQsIDcsIDIxNywgMTYwLCAxNCwgNywgMjE3LCAxNTksIAorICAgIDE0LCA3LCAyMTcsIDE1OCwgMTQsIDcsIDIxNywgMTU3LCAxNCwgNywgMjE3LCAxNTYsIDE0LCA3LCAyMTcsIDE1NSwgMTQsIAorICAgIDcsIDIxNywgMTU0LCAxNCwgNywgMjE3LCAxNTMsIDE0LCA3LCAyMTcsIDE1MiwgMTQsIDcsIDIxNywgMTUxLCAxNCwgNywgCisgICAgMjE3LCAxNTAsIDE0LCA3LCAyMTcsIDE0OSwgMTQsIDcsIDIxNywgMTQ4LCAxNCwgNywgMjE2LCAyMjUsIDE0LCA3LCAyMTYsIAorICAgIDIyNCwgMTQsIDcsIDIxNiwgMjIzLCAxNCwgNywgMjE2LCAyMjIsIDE0LCA3LCAyMTYsIDIyMSwgMTQsIDcsIDIxNiwgMjIwLCAKKyAgICAxNCwgNywgMjE2LCAyMTksIDE0LCA3LCAyMTYsIDIxOCwgMTQsIDcsIDIxNiwgMjE3LCAxNCwgNywgMjE2LCAyMTYsIDE0LCAKKyAgICA3LCAyMTYsIDIxNSwgMTQsIDcsIDIxNiwgMjE0LCAxNCwgNywgMjE2LCAyMTMsIDE0LCA3LCAyMTQsIDE2NiwgMTQsIDcsIAorICAgIDIxNCwgMTY1LCAxNCwgNywgMjE0LCAxNjQsIDE0LCA3LCAyMTQsIDE2MywgMTQsIDcsIDIxNCwgMTYyLCAxNCwgNywgMjE0LCAKKyAgICAxNjEsIDE0LCA3LCAyMTQsIDE2MCwgMTQsIDcsIDIxNCwgMzEsIDE0LCA3LCAyMTQsIDMwLCAxNCwgNywgMjE0LCAyOSwgMTQsIAorICAgIDcsIDIxNCwgMjgsIDE0LCA3LCAyMTQsIDI3LCAxNCwgNywgMjE0LCAyNiwgMTQsIDcsIDIxNCwgMjUsIDE0LCA3LCAyMTQsIAorICAgIDI0LCAxNCwgNywgMjE0LCAyMywgMTQsIDcsIDIxNCwgMjIsIDE0LCA3LCAyMTQsIDIxLCAxNCwgNywgMjE0LCAyMCwgMTQsIAorICAgIDcsIDIxNCwgMTksIDE0LCA3LCAyMTQsIDE4LCAxNCwgNywgMjE0LCAxNywgMTQsIDcsIDIxNCwgMTYsIDE0LCA3LCAyMTQsIAorICAgIDE1LCAxNCwgNywgMjE0LCAxNCwgMTQsIDcsIDIxNCwgMTMsIDE0LCA3LCAyMTQsIDEyLCAxNCwgNywgMjE0LCAxMSwgMTQsIAorICAgIDcsIDIxNCwgMTAsIDE0LCA3LCAyMTQsIDksIDE0LCA3LCAyMTQsIDgsIDE0LCA3LCAyMTQsIDcsIDE0LCA3LCAyMTQsIDYsIAorICAgIDE0LCA3LCAyMTQsIDUsIDE0LCA3LCAyMTQsIDQsIDE0LCA3LCAyMTQsIDMsIDE0LCA3LCAyMTQsIDIsIDE0LCA3LCAyMTQsIAorICAgIDEsIDE0LCA3LCAyMTQsIDAsIDE0LCA3LCAyMTMsIDI1NSwgMTQsIDcsIDIxMywgMjU0LCAxNCwgNywgMjEyLCAxMTksIDE0LCAKKyAgICA3LCAyMTIsIDExOCwgMTQsIDcsIDIxMiwgMTE3LCAxNCwgNywgMjEyLCAxMTYsIDE0LCA3LCAyMTIsIDExNSwgMTQsIDcsIAorICAgIDIxMiwgMTE0LCAxNCwgNywgMjEyLCAxMTMsIDE0LCA3LCAyMTIsIDExMiwgMTQsIDcsIDIxMiwgMTExLCAxNCwgNywgMjEyLCAKKyAgICAxMTAsIDE0LCA3LCAyMTIsIDEwOSwgMTQsIDcsIDIxMiwgMTA4LCAxNCwgNywgMjEyLCAxMDcsIDE0LCA3LCAyMTIsIDEwNiwgCisgICAgMTQsIDcsIDIxMiwgMTA1LCAxNCwgNywgMjEyLCAxMDQsIDE0LCA3LCAyMTIsIDEwMywgMTQsIDcsIDIxMiwgMTAyLCAxNCwgCisgICAgNywgMjEyLCAxMDEsIDE0LCA3LCAyMTIsIDEwMCwgMTQsIDcsIDIxMiwgOTksIDE0LCA3LCAyMTIsIDk4LCAxNCwgNywgMjEyLCAKKyAgICA5NywgMTQsIDcsIDIxMiwgOTYsIDE0LCA3LCAyMTIsIDk1LCAxNCwgNywgMjEyLCA5NCwgMTQsIDcsIDIxMiwgOTMsIDE0LCAKKyAgICA3LCAyMTIsIDkyLCAxNCwgNywgMjEyLCA5MSwgMTQsIDcsIDIxMiwgOTAsIDE0LCA3LCAyMTIsIDg5LCAxNCwgNywgMjEyLCAKKyAgICA4OCwgMTQsIDcsIDIxMiwgODcsIDE0LCA3LCAyMTIsIDg2LCAxNCwgNywgMjEyLCA4NSwgMTQsIDcsIDIxMiwgODQsIDE0LCAKKyAgICA3LCAyMTIsIDgzLCAxNCwgNywgMjEyLCA4MiwgMTQsIDcsIDIxMiwgODEsIDE0LCA3LCAyMTIsIDgwLCAxNCwgNywgMjEyLCAKKyAgICA3OSwgMTQsIDcsIDIxMiwgNzgsIDE0LCA3LCAyMTIsIDc3LCAxNCwgNywgMjEyLCA3NiwgMTQsIDcsIDIxMiwgNzUsIDE0LCAKKyAgICA3LCAyMTIsIDc0LCAxNCwgNywgMjEyLCA3MywgMTQsIDcsIDIxMiwgNzIsIDE0LCA3LCAyMTIsIDcxLCAxNCwgNywgMjEyLCAKKyAgICA3MCwgMTQsIDcsIDIxMiwgNjksIDE0LCA3LCAyMTIsIDY4LCAxNCwgNywgMjEyLCA2NywgMTQsIDcsIDIxMiwgNjYsIDE0LCAKKyAgICA3LCAyMDcsIDgxLCAxNCwgNywgMjA3LCA4MCwgMTQsIDcsIDIwNywgNzksIDE0LCA3LCAyMDcsIDc4LCAxNCwgNywgMjA3LCAKKyAgICA3NywgMTQsIDcsIDIwNywgNzYsIDE0LCA3LCAyMDcsIDc1LCAxNCwgNywgMjA3LCA3NCwgMTQsIDcsIDIwNywgNzMsIDE0LCAKKyAgICA3LCAyMDcsIDcyLCAxNCwgNywgMjA3LCA3MSwgMTQsIDcsIDIwNywgNzAsIDE0LCA3LCAyMDcsIDY5LCAxNCwgNywgMjA3LCAKKyAgICA2OCwgMTQsIDcsIDIwNywgNjcsIDE0LCA3LCAyMDcsIDY2LCAxNCwgNywgMjA3LCA2NSwgMTQsIDcsIDIwNywgNjQsIDE0LCAKKyAgICA3LCAyMDcsIDYzLCAxNCwgNywgMjA3LCA2MiwgMTQsIDcsIDIwNywgNjEsIDE0LCA3LCAyMDcsIDYwLCAxNCwgNywgMjA3LCAKKyAgICA1OSwgMTQsIDcsIDIwNywgNTgsIDE0LCA3LCAyMDcsIDU3LCAxNCwgNywgMjA3LCA1NiwgMTQsIDcsIDIwNywgNTUsIDE0LCAKKyAgICA3LCAyMDcsIDU0LCAxNCwgNywgMjA3LCA1MywgMTQsIDcsIDIwNywgNTIsIDE0LCA3LCAyMDcsIDUxLCAxNCwgNywgMjA3LCAKKyAgICA1MCwgMTQsIDcsIDIwNywgNDksIDE0LCA3LCAyMDcsIDQ4LCAxNCwgNywgMjA3LCA0NywgMTQsIDcsIDIwNywgNDYsIDE0LCAKKyAgICA3LCAyMDcsIDQ1LCAxNCwgNywgMjA3LCA0NCwgMTQsIDcsIDIwNywgNDMsIDE0LCA3LCAyMDcsIDQyLCAxNCwgNywgMjA3LCAKKyAgICA0MSwgMTQsIDcsIDIwNywgNDAsIDE0LCA3LCAyMDcsIDM5LCAxNCwgNywgMjA3LCAzOCwgMTQsIDcsIDIwNCwgOTUsIDE0LCAKKyAgICA3LCAyMDQsIDk0LCAxNCwgNywgMjA0LCA5MywgMTQsIDcsIDIwNCwgOTIsIDE0LCA3LCAyMDQsIDkxLCAxNCwgNywgMjA0LCAKKyAgICA5MCwgMTQsIDcsIDIwNCwgODksIDE0LCA3LCAyMDQsIDg4LCAxNCwgNywgMjA0LCA4NywgMTQsIDcsIDIwNCwgODYsIDE0LCAKKyAgICA3LCAyMDQsIDg1LCAxNCwgNywgMjA0LCA4NCwgMTQsIDcsIDIwNCwgODMsIDE0LCA3LCAyMDQsIDgyLCAxNCwgNywgMjA0LCAKKyAgICA4MSwgMTQsIDcsIDIwNCwgODAsIDE0LCA3LCAyMDQsIDc5LCAxNCwgNywgMjA0LCA3OCwgMTQsIDcsIDIwNCwgNzcsIDE0LCAKKyAgICA3LCAyMDQsIDc2LCAxNCwgNywgMjA0LCA3NSwgMTQsIDcsIDIwNCwgNzQsIDE0LCA3LCAyMDQsIDczLCAxNCwgNywgMjA0LCAKKyAgICA3MiwgMTQsIDcsIDIwNCwgNzEsIDE0LCA3LCAyMDQsIDcwLCAxNCwgNywgMjA0LCA2OSwgMTQsIDcsIDIwNCwgNjgsIDE0LCAKKyAgICA3LCAyMDQsIDY3LCAxNCwgNywgMjA0LCA2NiwgMTQsIDcsIDIwNCwgNjUsIDE0LCA3LCAyMDQsIDY0LCAxNCwgNywgMjA0LCAKKyAgICA2MywgMTQsIDcsIDIwNCwgNjIsIDE0LCA3LCAyMDQsIDYxLCAxNCwgNywgMjA0LCA2MCwgMTQsIDcsIDIwNCwgNTksIDE0LCAKKyAgICA3LCAyMDQsIDU4LCAxNCwgNywgMjA0LCA1NywgMTQsIDcsIDIwNCwgNTYsIDE0LCA3LCAyMDQsIDU1LCAxNCwgNywgMjA0LCAKKyAgICA1NCwgMTQsIDcsIDIwNCwgNTMsIDE0LCA3LCAyMDQsIDUyLCAxNCwgNywgMjA0LCA1MSwgMTQsIDcsIDIwNCwgNTAsIDE0LCAKKyAgICA3LCAyMDQsIDQ5LCAxNCwgNywgMjAzLCAxNjcsIDE0LCA3LCAyMDMsIDE2NiwgMTQsIDcsIDIwMywgMTY1LCAxNCwgNywgCisgICAgMjAzLCAxNjQsIDE0LCA3LCAyMDMsIDE2MywgMTQsIDcsIDIwMywgMTYyLCAxNCwgNywgMjAzLCAxNjEsIDE0LCA3LCAyMDMsIAorICAgIDE2MCwgMTQsIDcsIDIwMywgMTU5LCAxNCwgNywgMjAzLCAxNTgsIDE0LCA3LCAyMDMsIDE1NywgMTQsIDcsIDIwMywgMTU2LCAKKyAgICAxNCwgNywgMjAzLCAxNTUsIDE0LCA3LCAyMDMsIDE1NCwgMTQsIDcsIDIwMywgMTUzLCAxNCwgNywgMjAzLCAxNTIsIDE0LCAKKyAgICA3LCAyMDMsIDE1MSwgMTQsIDcsIDIwMywgMTUwLCAxNCwgNywgMjAzLCAxNDksIDE0LCA3LCAyMDMsIDE0OCwgMTQsIDcsIAorICAgIDIwMywgMTQ3LCAxNCwgNywgMjAzLCAxNDYsIDE0LCA3LCAyMDMsIDE0NSwgMTQsIDcsIDIwMywgMTQ0LCAxNCwgNywgMjAzLCAKKyAgICAxNDMsIDE0LCA3LCAyMDMsIDE0MiwgMTQsIDcsIDIwMywgMTQxLCAxNCwgNywgMjAzLCAxNDAsIDE0LCA3LCAyMDMsIDEzOSwgCisgICAgMTQsIDcsIDIwMywgMTM4LCAxNCwgNywgMjAzLCAxMzcsIDE0LCA3LCAyMDMsIDEzNiwgMTQsIDcsIDIwMywgMTM1LCAxNCwgCisgICAgNywgMjAzLCAxMzQsIDE0LCA3LCAyMDMsIDEzMywgMTQsIDcsIDIwMywgMTMyLCAxNCwgNywgMjAzLCAxMzEsIDE0LCA3LCAKKyAgICAyMDMsIDEzMCwgMTQsIDcsIDIwMywgMTI5LCAxNCwgNywgMjAzLCAxMjgsIDE0LCA3LCAyMDMsIDEyNywgMTQsIDcsIDIwMywgCisgICAgMTI2LCAxNCwgNywgMjAzLCAxMjUsIDE0LCA3LCAyMDMsIDEyNCwgMTQsIDcsIDIwMywgMTIzLCAxNCwgNywgMjAzLCAxMjIsIAorICAgIDE0LCA3LCAyMDMsIDEyMSwgMTQsIDcsIDIwMywgMTIwLCAxNCwgNywgMjAzLCAxMTksIDE0LCA3LCAyMDMsIDExOCwgMTQsIAorICAgIDcsIDIwMywgMTE3LCAxNCwgNywgMjAzLCAxMTYsIDE0LCA3LCAyMDMsIDExNSwgMTQsIDcsIDIwMywgMTE0LCAxNCwgNywgCisgICAgMjAzLCAxMTMsIDE0LCA3LCAyMDMsIDExMiwgMTQsIDcsIDIwMywgMTExLCAxNCwgNywgMjAzLCAxMTAsIDE0LCA3LCAyMDMsIAorICAgIDEwOSwgMTQsIDcsIDIwMywgMTA4LCAxNCwgNywgMjAzLCAxMDcsIDE0LCA3LCAyMDMsIDEwNiwgMTQsIDcsIDIwMywgMTA1LCAKKyAgICAxNCwgNywgMjAzLCAxMDQsIDE0LCA3LCAyMDMsIDEwMywgMTQsIDcsIDIwMywgMTAyLCAxNCwgNywgMjAzLCAxMDEsIDE0LCAKKyAgICA3LCAyMDMsIDEwMCwgMTQsIDcsIDIwMywgOTksIDE0LCA3LCAyMDMsIDk4LCAxNCwgNywgMjAzLCA5NywgMTQsIDcsIDIwMywgCisgICAgOTYsIDE0LCA3LCAyMDMsIDk1LCAxNCwgNywgMjAzLCA5NCwgMTQsIDcsIDIwMywgOTMsIDE0LCA3LCAyMDMsIDkyLCAxNCwgCisgICAgNywgMjAzLCA5MSwgMTQsIDcsIDIwMSwgMTQ2LCAxNCwgNywgMjAxLCAxNDUsIDE0LCA3LCAyMDEsIDE0NCwgMTQsIDcsIAorICAgIDIwMSwgMTQzLCAxNCwgNywgMjAxLCAxNDIsIDE0LCA3LCAyMDEsIDE0MSwgMTQsIDcsIDIwMSwgMTQwLCAxNCwgNywgMjAxLCAKKyAgICAxMzksIDE0LCA3LCAyMDEsIDEzOCwgMTQsIDcsIDIwMSwgMTM3LCAxNCwgNywgMjAxLCAxMzYsIDE0LCA3LCAyMDEsIDEzNSwgCisgICAgMTQsIDcsIDIwMSwgMTM0LCAxNCwgNywgMjAxLCAxMzMsIDE0LCA3LCAyMDEsIDEzMiwgMTQsIDcsIDIwMSwgMTMxLCAxNCwgCisgICAgNywgMjAxLCAxMzAsIDE0LCA3LCAyMDEsIDEyOSwgMTQsIDcsIDIwMSwgMTI4LCAxNCwgNywgMjAxLCAxMjcsIDE0LCA3LCAKKyAgICAyMDEsIDEyNiwgMTQsIDcsIDIwMSwgMTI1LCAxNCwgNywgMjAxLCAxMjQsIDE0LCA3LCAyMDEsIDEyMywgMTQsIDcsIDIwMSwgCisgICAgMTIyLCAxNCwgNywgMjAxLCAxMjEsIDE0LCA3LCAyMDEsIDEyMCwgMTQsIDcsIDIwMSwgMTE5LCAxNCwgNywgMjAxLCAxMTgsIAorICAgIDE0LCA3LCAyMDEsIDExNywgMTQsIDcsIDIwMSwgMTE2LCAxNCwgNywgMjAxLCAxMTUsIDE0LCA3LCAyMDAsIDE5MywgMTQsIAorICAgIDcsIDIwMCwgMTkyLCAxNCwgNywgMjAwLCAxOTEsIDE0LCA3LCAyMDAsIDE5MCwgMTQsIDcsIDIwMCwgMTg5LCAxNCwgNywgCisgICAgMjAwLCAxODgsIDE0LCA3LCAyMDAsIDE4NywgMTQsIDcsIDIwMCwgMTg2LCAxNCwgNywgMjAwLCAxODUsIDE0LCA3LCAyMDAsIAorICAgIDE4NCwgMTQsIDcsIDIwMCwgMTgzLCAxNCwgNywgMjAwLCAxODIsIDE0LCA3LCAyMDAsIDEyMSwgMTQsIDcsIDIwMCwgMTIwLCAKKyAgICAxNCwgNywgMjAwLCAxMTksIDE0LCA3LCAyMDAsIDExOCwgMTQsIDcsIDIwMCwgMTE3LCAxNCwgNywgMjAwLCAxMTYsIDE0LCAKKyAgICA3LCAyMDAsIDExNSwgMTQsIDcsIDIwMCwgMTE0LCAxNCwgNywgMjAwLCAxMTMsIDE0LCA3LCAxOTksIDE1NiwgMTQsIDcsIAorICAgIDE5OSwgMTU1LCAxNCwgNywgMTk5LCAxNTQsIDE0LCA3LCAxOTksIDE1MywgMTQsIDcsIDE5OSwgMTUyLCAxNCwgNywgMTk5LCAKKyAgICAxNTEsIDE0LCA3LCAxOTksIDE1MCwgMTQsIDcsIDE5OSwgMTQ5LCAxNCwgNywgMTk5LCAxNDgsIDE0LCA3LCAxOTksIDE0NywgCisgICAgMTQsIDcsIDE5OSwgMTQ2LCAxNCwgNywgMTk5LCAxNDUsIDE0LCA3LCAxOTksIDE0NCwgMTQsIDcsIDE5OSwgMTQzLCAxNCwgCisgICAgNywgMTk5LCAxNDIsIDE0LCA3LCAxOTksIDE0MSwgMTQsIDcsIDE5OSwgMTQwLCAxNCwgNywgMTk5LCAxMzksIDE0LCA3LCAKKyAgICAxOTksIDEzOCwgMTQsIDcsIDE5OSwgMTM3LCAxNCwgNywgMTk5LCAxMzYsIDE0LCA3LCAxOTksIDEzNSwgMTQsIDcsIDE5OSwgCisgICAgMTM0LCAxNCwgNywgMTk5LCAxMzMsIDE0LCA3LCAxOTksIDEzMiwgMTQsIDcsIDE5OSwgMTMxLCAxNCwgNywgMTk5LCAxMzAsIAorICAgIDE0LCA3LCAxOTksIDEyOSwgMTQsIDcsIDE5OSwgMTI4LCAxNCwgNywgMTk5LCAxMjcsIDE0LCA3LCAxOTksIDEyNiwgMTQsIAorICAgIDcsIDE5OSwgMTI1LCAxNCwgNywgMTk5LCAxMjQsIDE0LCA3LCAxOTksIDEyMywgMTQsIDcsIDE5OSwgMTIyLCAxNCwgNywgCisgICAgMTk5LCAxMjEsIDE0LCA3LCAxOTksIDEyMCwgMTQsIDcsIDE5OSwgMTE5LCAxNCwgNywgMTk5LCAxMTgsIDE0LCA3LCAxOTksIAorICAgIDExNywgMTQsIDcsIDE5OSwgMTE2LCAxNCwgNywgMjUyLCAxMzcsIDE0LCA3LCAyNTIsIDEzNiwgMTQsIDcsIDI1MiwgMTM1LCAKKyAgICAxNCwgNywgMjUyLCAxMzQsIDE0LCA3LCAyNTIsIDEzMywgMTQsIDcsIDI1MiwgMTMyLCAxNCwgNywgMjUyLCAxMzEsIDE0LCAKKyAgICA3LCAyNTIsIDEzMCwgMTQsIDcsIDI1MiwgMTI5LCAxNCwgNywgMjUyLCAxMjgsIDE0LCA3LCAyNTIsIDEyNywgMTQsIDcsIAorICAgIDI1MiwgMTI2LCAxNCwgNywgMjUyLCAxMjUsIDE0LCA3LCAyNTIsIDEyNCwgMTQsIDcsIDI1MiwgMTIzLCAxNCwgNywgMjUyLCAKKyAgICAxMjIsIDE0LCA3LCAyNTIsIDEyMSwgMTQsIDcsIDI1MiwgMTIwLCAxNCwgNywgMjUyLCAxMTksIDE0LCA3LCAyNTIsIDExOCwgCisgICAgMTQsIDcsIDI1MiwgMTE3LCAxNCwgNywgMjUyLCAxMTYsIDE0LCA3LCAyNTIsIDExNSwgMTQsIDcsIDI1MiwgMTE0LCAxNCwgCisgICAgNywgMjUyLCAxMTMsIDE0LCA3LCAyNTIsIDExMiwgMTQsIDcsIDI1MiwgMTExLCAxNCwgNywgMjUyLCAxMTAsIDE0LCA3LCAKKyAgICAyNTIsIDEwOSwgMTQsIDcsIDI1MiwgMTA4LCAxNCwgNywgMjUyLCAxMDcsIDE0LCA3LCAyNTIsIDEwNiwgMTQsIDcsIDI1MiwgCisgICAgMTA1LCAxNCwgNywgMjUyLCAxMDQsIDI4LCA3LCAyNTUsIDEzMSwgMjgsIDcsIDI1NSwgMTMwLCAyOCwgNywgMjU1LCAxMjksIAorICAgIDI4LCA3LCAyNTUsIDEyOCwgMjgsIDcsIDI1NSwgMTI3LCAyOCwgNywgMjU1LCAxMjUsIDI4LCA3LCAyNTUsIDEyMiwgMjgsIAorICAgIDcsIDI1NSwgMTIxLCAyOCwgNywgMjU1LCAxMjAsIDI4LCA3LCAyNTUsIDExOSwgMjgsIDcsIDI1NSwgMTE4LCAyOCwgNywgCisgICAgMjU1LCAxMTcsIDI4LCA3LCAyNTUsIDExNiwgMjgsIDcsIDI1NSwgMTE1LCAyOCwgNywgMjU1LCAxMTQsIDI4LCA3LCAyNTUsIAorICAgIDExMiwgMjgsIDcsIDI1NSwgMTExLCAyOCwgNywgMjU1LCAxMTAsIDI4LCA3LCAyNTUsIDEwOCwgMjgsIDcsIDI1NSwgMTA3LCAKKyAgICAyOCwgNywgMjU1LCAxMDYsIDI4LCA3LCAyNTUsIDEwNSwgMjgsIDcsIDI1NSwgMTA0LCAyOCwgNywgMjU1LCAxMDMsIDI4LCAKKyAgICA3LCAyNTUsIDEwMiwgMjgsIDcsIDI1NSwgMTAxLCAyOCwgNywgMjU1LCAxMDAsIDI4LCA3LCAyNTUsIDk5LCAyOCwgNywgCisgICAgMjU1LCA5OCwgMjgsIDcsIDI1NSwgOTcsIDI4LCA3LCAyNTUsIDk1LCAyOCwgNywgMjU1LCA5NCwgMjgsIDcsIDI1NSwgOTMsIAorICAgIDI4LCA3LCAyNTUsIDkyLCAyOCwgNywgMjU1LCA5MCwgMjgsIDcsIDI1NSwgODksIDI4LCA3LCAyNTUsIDg4LCAyOCwgNywgCisgICAgMjU1LCA4NywgMjgsIDcsIDI1NSwgODYsIDI4LCA3LCAyNTUsIDg1LCAyOCwgNywgMjU1LCA4NCwgMjgsIDcsIDI1NSwgODMsIAorICAgIDI4LCA3LCAyNTUsIDgyLCAyOCwgNywgMjU1LCA4MCwgMjgsIDcsIDI1NSwgNzksIDI4LCA3LCAyNTUsIDc4LCAyOCwgNywgCisgICAgMjU1LCA3NiwgMjgsIDcsIDI1NSwgNzQsIDI4LCA3LCAyNTUsIDczLCAyOCwgNywgMjU1LCA3MiwgMjgsIDcsIDI1NSwgNzEsIAorICAgIDI4LCA3LCAyNTUsIDcwLCAyOCwgNywgMjU1LCA2OSwgMjgsIDcsIDI1NSwgNjgsIDI4LCA3LCAyNTUsIDY3LCAyOCwgNywgCisgICAgMjU1LCA2NiwgMjgsIDcsIDI1NSwgNjUsIDI4LCA3LCAyNTUsIDY0LCAyOCwgNywgMjU1LCA2MywgMjgsIDcsIDI1NSwgNjIsIAorICAgIDI4LCA3LCAyNTUsIDYxLCAyOCwgNywgMjU1LCA2MCwgMjgsIDcsIDI1NSwgNTksIDI4LCA3LCAyNTUsIDU4LCAyOCwgNywgCisgICAgMjU1LCA1NywgMjgsIDcsIDI1NSwgNTYsIDI4LCA3LCAyNTUsIDU1LCAyOCwgNywgMjU1LCA1NCwgMjgsIDcsIDI1NSwgNTMsIAorICAgIDI4LCA3LCAyNTUsIDUyLCAyOCwgNywgMjU1LCA1MSwgMjgsIDcsIDI1NSwgNTAsIDI4LCA3LCAyNTUsIDQ5LCAyOCwgNywgCisgICAgMjU1LCA0OCwgMjgsIDcsIDI1NSwgNDcsIDI4LCA3LCAyNTUsIDQ2LCAyOCwgNywgMjU1LCA0NSwgMjgsIDcsIDI1NSwgNDQsIAorICAgIDI4LCA3LCAyNTUsIDQzLCAyOCwgNywgMjU1LCA0MiwgMjgsIDcsIDI1NSwgNDEsIDI4LCA3LCAyNTUsIDQwLCAyOCwgNywgCisgICAgMjU1LCAzOSwgMjgsIDcsIDI1NSwgMzgsIDI4LCA3LCAyNTUsIDM3LCAyOCwgNywgMjU1LCAzNiwgMjgsIDcsIDI1NSwgMzUsIAorICAgIDI4LCA3LCAyNTUsIDM0LCAyOCwgNywgMjU1LCAzMywgMjgsIDcsIDI1NSwgMzIsIDI4LCA3LCAyNTUsIDMxLCAyOCwgNywgCisgICAgMjU1LCAzMCwgMjgsIDcsIDI1NSwgMjksIDI4LCA3LCAyNTUsIDI4LCAyOCwgNywgMjU1LCAyNywgMjgsIDcsIDI1NSwgMjYsIAorICAgIDI4LCA3LCAyNTUsIDI1LCAyOCwgNywgMjU1LCAyNCwgMjgsIDcsIDI1NSwgMjMsIDI4LCA3LCAyNTUsIDIyLCAyOCwgNywgCisgICAgMjU1LCAyMSwgMjgsIDcsIDI1NSwgMjAsIDI4LCA3LCAyNTUsIDE5LCAyOCwgNywgMjU1LCAxOCwgMjgsIDcsIDI1NSwgMTcsIAorICAgIDI4LCA3LCAyNTUsIDE2LCAyOCwgNywgMjU1LCAxNSwgMjgsIDcsIDI1NSwgMTQsIDI4LCA3LCAyNTUsIDEzLCAyOCwgNywgCisgICAgMjU1LCAxMiwgMjgsIDcsIDI1NSwgMTEsIDI4LCA3LCAyNTUsIDEwLCAyOCwgNywgMjU1LCA4LCAyOCwgNywgMjU1LCA3LCAKKyAgICAyOCwgNywgMjU1LCA2LCAyOCwgNywgMjU1LCA1LCAyOCwgNywgMjU1LCA0LCAyOCwgNywgMjU1LCAzLCAyOCwgNywgMjU1LCAKKyAgICAyLCAyOCwgNywgMjU1LCAxLCAyOCwgNywgMjU1LCAwLCAyOCwgNywgMjU0LCAyNTUsIDI4LCA3LCAyNTQsIDI1NCwgMjgsIDcsIAorICAgIDI1NCwgMjUzLCAyOCwgNywgMjU0LCAyNTIsIDI4LCA3LCAyNTQsIDI1MSwgMjgsIDcsIDI1NCwgMjUwLCAyOCwgNywgMjU0LCAKKyAgICAyNDksIDI4LCA3LCAyNTQsIDI0OCwgMjgsIDcsIDI1NCwgMjQ3LCAyOCwgNywgMjU0LCAyNDYsIDI4LCA3LCAyNTQsIDI0NSwgCisgICAgMjgsIDcsIDI1NCwgMjQ0LCAyOCwgNywgMjU0LCAyNDMsIDI4LCA3LCAyNTQsIDI0MiwgMjgsIDcsIDI1NCwgMjQxLCAyOCwgCisgICAgNywgMjU0LCAyNDAsIDI4LCA3LCAyNTQsIDIzOSwgMjgsIDcsIDI1NCwgMjM4LCAyOCwgNywgMjU0LCAyMzcsIDI4LCA3LCAKKyAgICAyNTQsIDIzNiwgMjgsIDcsIDI1NCwgMjM1LCAyOCwgNywgMjU0LCAyMzQsIDI4LCA3LCAyNTQsIDIzMywgMjgsIDcsIDI1NCwgCisgICAgMjMyLCAyOCwgNywgMjU0LCAyMzEsIDI4LCA3LCAyNTQsIDIyOSwgMjgsIDcsIDI1NCwgMjI4LCAyOCwgNywgMjU0LCAyMjcsIAorICAgIDI4LCA3LCAyNTQsIDIyNiwgMjgsIDcsIDI1NCwgMjI1LCAyOCwgNywgMjU0LCAyMjQsIDI4LCA3LCAyNTQsIDIyMywgMjgsIAorICAgIDcsIDI1NCwgMjIyLCAyOCwgNywgMjU0LCAyMjEsIDI4LCA3LCAyNTQsIDIyMCwgMjgsIDcsIDI1NCwgMjE5LCAyOCwgNywgCisgICAgMjU0LCAyMTgsIDI4LCA3LCAyNTQsIDIxNiwgMjgsIDcsIDI1NCwgMjE1LCAyOCwgNywgMjU0LCAyMTQsIDI4LCA3LCAyNTQsIAorICAgIDIxMywgMjgsIDcsIDI1NCwgMjEyLCAyOCwgNywgMjU0LCAyMTEsIDI4LCA3LCAyNTQsIDIxMCwgMjgsIDcsIDI1NCwgMjA5LCAKKyAgICAyOCwgNywgMjU0LCAyMDgsIDI4LCA3LCAyNTQsIDIwNywgMjgsIDcsIDI1NCwgMjA2LCAyOCwgNywgMjU0LCAyMDUsIDI4LCAKKyAgICA3LCAyNTQsIDIwNCwgMjgsIDcsIDI1NCwgMjAzLCAyOCwgNywgMjU0LCAyMDIsIDI4LCA3LCAyNTQsIDIwMSwgMjgsIDcsIAorICAgIDI1NCwgMjAwLCAyOCwgNywgMjU0LCAxOTksIDI4LCA3LCAyNTQsIDE5OCwgMjgsIDcsIDI1NCwgMTk3LCAyOCwgNywgMjU0LCAKKyAgICAxOTYsIDI4LCA3LCAyNTQsIDE5NSwgMjgsIDcsIDI1NCwgMTk0LCAyOCwgNywgMjU0LCAxOTMsIDI4LCA3LCAyNTQsIDE5MiwgCisgICAgMjgsIDcsIDI1NCwgMTkxLCAyOCwgNywgMjU0LCAxOTAsIDI4LCA3LCAyNTQsIDE4OSwgMjgsIDcsIDI1NCwgMTg4LCAyOCwgCisgICAgNywgMjU0LCAxODcsIDI4LCA3LCAyNTQsIDE4NiwgMjgsIDcsIDI1NCwgMTg1LCAyOCwgNywgMjU0LCAxODQsIDI4LCA3LCAKKyAgICAyNTQsIDE4MywgMjgsIDcsIDI1NCwgMTgyLCAyOCwgNywgMjU0LCAxODEsIDI4LCA3LCAyNTQsIDE4MCwgMjgsIDcsIDI1NCwgCisgICAgMTc5LCAyOCwgNywgMjU0LCAxNzgsIDI4LCA3LCAyNTQsIDE3NywgMjgsIDcsIDI1NCwgMTc2LCAyOCwgNywgMjU0LCAxNzUsIAorICAgIDI4LCA3LCAyNTQsIDE3NCwgMjgsIDcsIDI1NCwgMTczLCAyOCwgNywgMjU0LCAxNzIsIDI4LCA3LCAyNTQsIDE3MSwgMjgsIAorICAgIDcsIDI1NCwgMTcwLCAyOCwgNywgMjU0LCAxNjksIDI4LCA3LCAyNTQsIDE2OCwgMjgsIDcsIDI1NCwgMTY3LCAyOCwgNywgCisgICAgMjU0LCAxNjYsIDI4LCA3LCAyNTQsIDE2NSwgMjgsIDcsIDI1NCwgMTY0LCAyOCwgNywgMjU0LCAxNjMsIDI4LCA3LCAyNTQsIAorICAgIDE2MiwgMjgsIDcsIDI1NCwgMTYxLCAyOCwgNywgMjU0LCAxNjAsIDI4LCA3LCAyNTQsIDE1OSwgMjgsIDcsIDI1NCwgMTU4LCAKKyAgICAyOCwgNywgMjU0LCAxNTcsIDI4LCA3LCAyNTQsIDE1NiwgMjgsIDcsIDI1NCwgMTU1LCAyOCwgNywgMjU0LCAxNTQsIDI4LCAKKyAgICA3LCAyNTQsIDE1MywgMjgsIDcsIDI1NCwgMTUyLCAyOCwgNywgMjU0LCAxNTEsIDI4LCA3LCAyNTQsIDE1MCwgMjgsIDcsIAorICAgIDI1NCwgMTQ5LCAyOCwgNywgMjU0LCAxNDgsIDI4LCA3LCAyNTQsIDE0NiwgMjgsIDcsIDI1NCwgMTQ1LCAyOCwgNywgMjU0LCAKKyAgICAxNDQsIDI4LCA3LCAyNTQsIDE0MywgMjgsIDcsIDI1NCwgMTQyLCAyOCwgNywgMjU0LCAxNDEsIDI4LCA3LCAyNTQsIDE0MCwgCisgICAgMjgsIDcsIDI1NCwgMTM5LCAyOCwgNywgMjU0LCAxMzgsIDI4LCA3LCAyNTQsIDEzNywgMjgsIDcsIDI1NCwgMTM2LCAyOCwgCisgICAgNywgMjU0LCAxMzUsIDI4LCA3LCAyNTQsIDEzNCwgMjgsIDcsIDI1NCwgMTMzLCAyOCwgNywgMjU0LCAxMzIsIDI4LCA3LCAKKyAgICAyNTQsIDEzMSwgMjgsIDcsIDI1NCwgMTMwLCAyOCwgNywgMjU0LCAxMjksIDI4LCA3LCAyNTQsIDEyOCwgMjgsIDcsIDI1NCwgCisgICAgMTI3LCAyOCwgNywgMjU0LCAxMjYsIDI4LCA3LCAyNTQsIDEyNSwgMjgsIDcsIDI1NCwgMTI0LCAyOCwgNywgMjU0LCAxMjMsIAorICAgIDI4LCA3LCAyNTQsIDEyMiwgMjgsIDcsIDI1NCwgMTIxLCAyOCwgNywgMjU0LCAxMjAsIDI4LCA3LCAyNTQsIDExOSwgMjgsIAorICAgIDcsIDI1NCwgMTE4LCAyOCwgNywgMjU0LCAxMTcsIDI4LCA3LCAyNTQsIDExNiwgMjgsIDcsIDI1NCwgMTE1LCAyOCwgNywgCisgICAgMjU0LCAxMTQsIDI4LCA3LCAyNTQsIDExMywgMjgsIDcsIDI1NCwgMTEyLCAyOCwgNywgMjU0LCAxMTEsIDI4LCA3LCAyNTQsIAorICAgIDExMCwgMjgsIDcsIDI1NCwgMTA5LCAyOCwgNywgMjU0LCAxMDgsIDI4LCA3LCAyNTQsIDEwNywgMjgsIDcsIDI1NCwgMTA2LCAKKyAgICAyOCwgNywgMjU0LCAxMDUsIDI4LCA3LCAyNTQsIDEwNCwgMjgsIDcsIDI1NCwgMTAzLCAyOCwgNywgMjU0LCAxMDIsIDI4LCAKKyAgICA3LCAyNTQsIDEwMSwgMjgsIDcsIDI1NCwgMTAwLCAyOCwgNywgMjU0LCA5OSwgMjgsIDcsIDI1NCwgOTgsIDI4LCA3LCAyNTQsIAorICAgIDk3LCAyOCwgNywgMjU0LCA5NiwgMjgsIDcsIDI1NCwgOTUsIDI4LCA3LCAyNTQsIDk0LCAyOCwgNywgMjU0LCA5MywgMjgsIAorICAgIDcsIDI1NCwgOTIsIDI4LCA3LCAyNTQsIDkxLCAyOCwgNywgMjU0LCA5MCwgMjgsIDcsIDI1NCwgODksIDI4LCA3LCAyNTQsIAorICAgIDg4LCAyOCwgNywgMjU0LCA4NywgMjgsIDcsIDI1NCwgODYsIDI4LCA3LCAyNTQsIDg1LCAyOCwgNywgMjU0LCA4NCwgMjgsIAorICAgIDcsIDI1NCwgODMsIDI4LCA3LCAyNTQsIDgyLCAyOCwgNywgMjU0LCA4MSwgMjgsIDcsIDI1NCwgODAsIDI4LCA3LCAyNTQsIAorICAgIDc5LCAyOCwgNywgMjU0LCA3OCwgMjgsIDcsIDI1NCwgNzcsIDI4LCA3LCAyNTQsIDc2LCAyOCwgNywgMjU0LCA3NSwgMjgsIAorICAgIDcsIDI1NCwgNzQsIDI4LCA3LCAyNTQsIDczLCAyOCwgNywgMjU0LCA3MiwgMjgsIDcsIDI1NCwgNzEsIDI4LCA3LCAyNTQsIAorICAgIDcwLCAyOCwgNywgMjU0LCA2OSwgMjgsIDcsIDI1NCwgNjgsIDI4LCA3LCAyNTQsIDY3LCAyOCwgNywgMjU0LCA2NiwgMjgsIAorICAgIDcsIDI1NCwgNjUsIDI4LCA3LCAyNTQsIDY0LCAyOCwgNywgMjU0LCA2MywgMjgsIDcsIDI1NCwgNjIsIDI4LCA3LCAyNTQsIAorICAgIDYxLCAyOCwgNywgMjU0LCA2MCwgMjgsIDcsIDI1NCwgNTksIDI4LCA3LCAyNTQsIDU4LCAyOCwgNywgMjU0LCA1NywgMjgsIAorICAgIDcsIDI1NCwgNTYsIDI4LCA3LCAyNTQsIDU1LCAyOCwgNywgMjU0LCA1NCwgMjgsIDcsIDI1NCwgNTMsIDI4LCA3LCAyNTQsIAorICAgIDUyLCAyOCwgNywgMjU0LCA1MSwgMjgsIDcsIDI1NCwgNTAsIDI4LCA3LCAyNTQsIDQ5LCAyOCwgNywgMjU0LCA0OCwgMjgsIAorICAgIDcsIDI1NCwgNDcsIDI4LCA3LCAyNTQsIDQ2LCAyOCwgNywgMjU0LCA0NSwgMjgsIDcsIDI1NCwgNDQsIDI4LCA3LCAyNTQsIAorICAgIDQzLCAyOCwgNywgMjU0LCA0MiwgMjgsIDcsIDI1NCwgNDEsIDI4LCA3LCAyNTQsIDQwLCAyOCwgNywgMjU0LCAzOSwgMjgsIAorICAgIDcsIDI1NCwgMzgsIDI4LCA3LCAyNTQsIDM3LCAyOCwgNywgMjU0LCAzNiwgMjgsIDcsIDI1NCwgMzQsIDI4LCA3LCAyNTQsIAorICAgIDMzLCAyOCwgNywgMjU0LCAzMiwgMjgsIDcsIDI1NCwgMzEsIDI4LCA3LCAyNTQsIDMwLCAyOCwgNywgMjU0LCAyOSwgMjgsIAorICAgIDcsIDI1NCwgMjgsIDI4LCA3LCAyNTQsIDI3LCAyOCwgNywgMjU0LCAyNiwgMjgsIDcsIDI1NCwgMjUsIDI4LCA3LCAyNTQsIAorICAgIDI0LCAyOCwgNywgMjU0LCAyMSwgMjgsIDcsIDI1NCwgMjAsIDI4LCA3LCAyNTQsIDE5LCAyOCwgNywgMjU0LCAxOCwgMjgsIAorICAgIDcsIDI1NCwgMTQsIDI4LCA3LCAyNTQsIDEzLCAyOCwgNywgMjU0LCAxMiwgMjgsIDcsIDI1NCwgMTEsIDI4LCA3LCAyNTQsIAorICAgIDEwLCAyOCwgNywgMjU0LCA5LCAyOCwgNywgMjU0LCA4LCAyOCwgNywgMjU0LCA3LCAyOCwgNywgMjU0LCA2LCAyOCwgNywgCisgICAgMjU0LCA1LCAyOCwgNywgMjU0LCA0LCAyOCwgNywgMjU0LCAzLCAyOCwgNywgMjU0LCAyLCAyOCwgNywgMjU0LCAxLCAyOCwgCisgICAgNywgMjU0LCAwLCAyOCwgNywgMjUzLCAyNTUsIDI4LCA3LCAyNTMsIDI1NCwgMjgsIDcsIDI1MywgMjUzLCAyOCwgNywgMjUzLCAKKyAgICAyNTIsIDI4LCA3LCAyNTMsIDI1MCwgMjgsIDcsIDI1MywgMjQ5LCAyOCwgNywgMjUzLCAyNDgsIDI4LCA3LCAyNTMsIDI0NywgCisgICAgMjgsIDcsIDI1MywgMjQ2LCAyOCwgNywgMjUzLCAyNDUsIDI4LCA3LCAyNTMsIDI0NCwgMjgsIDcsIDI1MywgMjQzLCAyOCwgCisgICAgNywgMjUzLCAyNDIsIDI4LCA3LCAyNTMsIDI0MSwgMjgsIDcsIDI1MywgMjQwLCAyOCwgNywgMjUzLCAyMzksIDI4LCA3LCAKKyAgICAyNTMsIDIzOCwgMjgsIDcsIDI1MywgMjM3LCAyOCwgNywgMjUzLCAyMzYsIDI4LCA3LCAyNTMsIDIzNSwgMjgsIDcsIDI1MywgCisgICAgMjM0LCAyOCwgNywgMjUzLCAyMzMsIDI4LCA3LCAyNTMsIDIzMiwgMjgsIDcsIDI1MywgMjMxLCAyOCwgNywgMjUzLCAyMzAsIAorICAgIDI4LCA3LCAyNTMsIDIyOSwgMjgsIDcsIDI1MywgMjI4LCAyOCwgNywgMjUzLCAyMjcsIDI4LCA3LCAyNTMsIDIyNiwgMjgsIAorICAgIDcsIDI1MywgMjI1LCAyOCwgNywgMjUzLCAyMjQsIDI4LCA3LCAyNTMsIDIyMywgMjgsIDcsIDI1MywgMjIyLCAyOCwgNywgCisgICAgMjUzLCAyMjEsIDI4LCA3LCAyNTMsIDIyMCwgMjgsIDcsIDI1MywgMjE5LCAyOCwgNywgMjUzLCAyMTgsIDI4LCA3LCAyNTMsIAorICAgIDIxNywgMjgsIDcsIDI1MywgMjE2LCAyOCwgNywgMjUzLCAyMTUsIDI4LCA3LCAyNTMsIDIxNCwgMjgsIDcsIDI1MywgMjEzLCAKKyAgICAyOCwgNywgMjUzLCAyMTIsIDI4LCA3LCAyNTMsIDIxMSwgMjgsIDcsIDI1MywgMjEwLCAyOCwgNywgMjUzLCAyMDksIDI4LCAKKyAgICA3LCAyNTMsIDIwOCwgMjgsIDcsIDI1MywgMjA3LCAyOCwgNywgMjUzLCAyMDYsIDI4LCA3LCAyNTMsIDIwNSwgMjgsIDcsIAorICAgIDI1MywgMjA0LCAyOCwgNywgMjUzLCAyMDMsIDI4LCA3LCAyNTMsIDIwMiwgMjgsIDcsIDI1MywgMjAxLCAyOCwgNywgMjUzLCAKKyAgICAyMDAsIDI4LCA3LCAyNTMsIDE5OSwgMjgsIDcsIDI1MywgMTk4LCAyOCwgNywgMjUzLCAxOTcsIDI4LCA3LCAyNTMsIDE5NiwgCisgICAgMjgsIDcsIDI1MywgMTk1LCAyOCwgNywgMjUzLCAxOTQsIDI4LCA3LCAyNTMsIDE5MywgMjgsIDcsIDI1MywgMTkyLCAyOCwgCisgICAgNywgMjUzLCAxOTEsIDI4LCA3LCAyNTMsIDE5MCwgMjgsIDcsIDI1MywgMTg5LCAyMTMsIDI1MywgMjE3LCAzNCwgMjEzLCAKKyAgICA4OCwgMjgsIDcsIDI1MywgMTg4LCAyOCwgNywgMjUzLCAxODcsIDI4LCA3LCAyNTMsIDE4NiwgMjgsIDcsIDI1MywgMTg1LCAKKyAgICAyOCwgNywgMjUzLCAxODQsIDI4LCA3LCAyNTMsIDE4MywgMjgsIDcsIDI1MywgMTgyLCAyOCwgNywgMjUzLCAxODEsIDI4LCAKKyAgICA3LCAyNTMsIDE4MCwgMjgsIDcsIDI1MywgMTc5LCAyOCwgNywgMjUzLCAxNzgsIDI4LCA3LCAyNTMsIDE3NywgMTkyLCAyOCwgCisgICAgNywgMjUzLCAxNzYsIDI4LCA3LCAyNTMsIDE3NSwgMjgsIDcsIDI1MywgMTc0LCAyOCwgNywgMjUzLCAxNzMsIDI4LCA3LCAKKyAgICAyNTMsIDE3MiwgMjgsIDcsIDI1MywgMTcxLCAyOCwgNywgMjUzLCAxNzAsIDI4LCA3LCAyNTMsIDE2OCwgMjgsIDcsIDI1MywgCisgICAgMTY2LCAyOCwgNywgMjUzLCAxNjQsIDI4LCA3LCAyNTMsIDE2MiwgMjgsIDcsIDI1MywgMTYwLCAyOCwgNywgMjUzLCAxNTgsIAorICAgIDI4LCA3LCAyNTMsIDE1NiwgMjgsIDcsIDI1MywgMTU0LCAyOCwgNywgMjUzLCAxNTIsIDI4LCA3LCAyNTMsIDE1MCwgMjQ4LCAKKyAgICAyNDQsIDIyNCwgOTcsIDgxLCAyOCwgNywgMjUzLCAxNDgsIDIzOCwgMTcxLCAyMjQsIDk3LCA4MSwgMjgsIDcsIDI1MywgCisgICAgMTQ3LCAyOCwgNywgMjUzLCAxNDUsIDI4LCA3LCAyNTMsIDE0MywgMjgsIDcsIDI1MywgMTQxLCAyOCwgNywgMjUzLCAxMzksIAorICAgIDI4LCA3LCAyNTMsIDEzNywgMjgsIDcsIDI1MywgMTM1LCAyOCwgNywgMjUzLCAxMzMsIDI4LCA3LCAyNTMsIDEzMSwgMjgsIAorICAgIDcsIDI1MywgMTMwLCAyOCwgNywgMjUzLCAxMjksIDI4LCA3LCAyNTMsIDEyOCwgMjgsIDcsIDI1MywgMTI3LCAyOCwgNywgCisgICAgMjUzLCAxMjYsIDI4LCA3LCAyNTMsIDEyNSwgMjgsIDcsIDI1MywgMTI0LCAyOCwgNywgMjUzLCAxMjMsIDI4LCA3LCAyNTMsIAorICAgIDEyMiwgMjgsIDcsIDI1MywgMTIxLCAyOCwgNywgMjUzLCAxMjAsIDI4LCA3LCAyNTMsIDExOSwgMjgsIDcsIDI1MywgMTE4LCAKKyAgICAyOCwgNywgMjUzLCAxMTcsIDI4LCA3LCAyNTMsIDExNiwgMjgsIDcsIDI1MywgMTE1LCAyOCwgNywgMjUzLCAxMTQsIDI4LCAKKyAgICA3LCAyNTMsIDExMywgMjgsIDcsIDI1MywgMTEyLCAyOCwgNywgMjUzLCAxMTEsIDI4LCA3LCAyNTMsIDExMCwgMjgsIDcsIAorICAgIDI1MywgMTA5LCAyOCwgNywgMjUzLCAxMDgsIDI4LCA3LCAyNTMsIDEwNywgMjgsIDcsIDI1MywgMTA2LCAyOCwgNywgMjUzLCAKKyAgICAxMDUsIDI4LCA3LCAyNTMsIDEwNCwgMjgsIDcsIDI1MywgMTAzLCAyOCwgNywgMjUzLCAxMDIsIDI4LCA3LCAyNTMsIDEwMSwgCisgICAgMjgsIDcsIDI1MywgMTAwLCAyOCwgNywgMjUzLCA5OSwgMjgsIDcsIDI1MywgOTgsIDI4LCA3LCAyNTMsIDk3LCAyOCwgNywgCisgICAgMjUzLCA5NiwgMjgsIDcsIDI1MywgOTUsIDI4LCA3LCAyNTMsIDk0LCAyOCwgNywgMjUzLCA5MywgMjgsIDcsIDI1MywgOTIsIAorICAgIDI4LCA3LCAyNTMsIDkxLCAyOCwgNywgMjUzLCA5MCwgMjgsIDcsIDI1MywgODksIDI4LCA3LCAyNTMsIDg4LCAyOCwgNywgCisgICAgMjUzLCA4NywgMjgsIDcsIDI1MywgODYsIDI4LCA3LCAyNTMsIDg1LCAyOCwgNywgMjUzLCA4NCwgMjgsIDcsIDI1MywgODMsIAorICAgIDI4LCA3LCAyNTMsIDgyLCAyOCwgNywgMjUzLCA4MSwgMjgsIDcsIDI1MywgODAsIDI4LCA3LCAyNTMsIDc5LCAyOCwgNywgCisgICAgMjUzLCA3OCwgMjgsIDcsIDI1MywgNzcsIDI4LCA3LCAyNTMsIDc2LCAyOCwgNywgMjUzLCA3NSwgMjgsIDcsIDI1MywgNzQsIAorICAgIDI4LCA3LCAyNTMsIDczLCAyOCwgNywgMjUzLCA3MiwgMjgsIDcsIDI1MywgNzEsIDI4LCA3LCAyNTMsIDcwLCAyOCwgNywgCisgICAgMjUzLCA2OSwgMjgsIDcsIDI1MywgNjgsIDI4LCA3LCAyNTMsIDY3LCAyOCwgNywgMjUzLCA2NiwgMjgsIDcsIDI1MywgNjUsIAorICAgIDI4LCA3LCAyNTMsIDY0LCAyOCwgNywgMjUzLCA2MywgMjgsIDcsIDI1MywgNjIsIDI4LCA3LCAyNTMsIDYxLCAyOCwgNywgCisgICAgMjUzLCA2MCwgMjgsIDcsIDI1MywgNTksIDI4LCA3LCAyNTMsIDU4LCAyOCwgNywgMjUzLCA1NywgMjgsIDcsIDI1MywgNTYsIAorICAgIDI4LCA3LCAyNTMsIDU1LCAyOCwgNywgMjUzLCA1NCwgMjgsIDcsIDI1MywgNTMsIDI4LCA3LCAyNTMsIDUyLCAyOCwgNywgCisgICAgMjUzLCA1MSwgMjgsIDcsIDI1MywgNTAsIDI4LCA3LCAyNTMsIDQ5LCAyOCwgNywgMjUzLCA0OCwgMjgsIDcsIDI1MywgNDcsIAorICAgIDI4LCA3LCAyNTMsIDQ2LCAyOCwgNywgMjUzLCA0NSwgMjgsIDcsIDI1MywgNDQsIDI4LCA3LCAyNTMsIDQzLCAyOCwgNywgCisgICAgMjUzLCA0MiwgMjgsIDcsIDI1MywgNDEsIDI4LCA3LCAyNTMsIDQwLCAyOCwgNywgMjUzLCAzOSwgMjgsIDcsIDI1MywgMzgsIAorICAgIDI4LCA3LCAyNTMsIDM3LCAyOCwgNywgMjUzLCAzNiwgMjgsIDcsIDI1MywgMzUsIDI4LCA3LCAyNTMsIDM0LCAyOCwgNywgCisgICAgMjUzLCAzMywgMjgsIDcsIDI1MywgMzIsIDI4LCA3LCAyNTMsIDMxLCAyOCwgNywgMjUzLCAzMCwgMjgsIDcsIDI1MywgMjksIAorICAgIDI4LCA3LCAyNTMsIDI4LCAyOCwgNywgMjUzLCAyNywgMjgsIDcsIDI1MywgMjYsIDI4LCA3LCAyNTMsIDI1LCAyOCwgNywgCisgICAgMjUzLCAyNCwgMjgsIDcsIDI1MywgMjMsIDI4LCA3LCAyNTMsIDIyLCAyOCwgNywgMjUzLCAyMSwgMjUsIDEsIDIxNSwgMjM1LCAKKyAgICAyMTksIDE4NiwgMjIxLCAyNTMsIDI1LCAxLCAyMTUsIDIzNSwgMjM2LCAyMywgMjM3LCA1LCAyNSwgMSwgMjE1LCAyMzUsIAorICAgIDIxNSwgODMsIDIyMSwgMjU0LCAyMTUsIDE1MiwgMjUsIDEsIDIxNSwgMjM1LCAyMTUsIDgzLCAyMjEsIDI1NCwgMjE1LCAKKyAgICAxNTMsIDI1LCAxLCAyMTUsIDIzNSwgMjIwLCAxNTgsIDIyMSwgMjUzLCAyNSwgMSwgMjE1LCAyMzUsIDIwOSwgMjE2LCAyNSwgCisgICAgMSwgMjE1LCAyMzUsIDIwNSwgMjEyLCAyMjEsIDI1MywgMjUsIDEsIDIxNSwgMjM1LCAyMTgsIDgsIDIyMSwgMjUzLCAyNSwgCisgICAgMSwgMjE1LCAyMzUsIDIxMCwgMjAsIDIxNiwgMjExLCAyMTksIDgyLCAyNSwgMSwgMjE1LCAyMzUsIDIxNSwgODMsIDIxNiwgCisgICAgMjExLCAyMTksIDgzLCAyMTUsIDE1MiwgMjUsIDEsIDIxNSwgMjM1LCAyMTUsIDgzLCAyMTYsIDIxMSwgMjE5LCA4MywgMjE1LCAKKyAgICAxNTMsIDI1LCAxLCAyMTUsIDIzNSwgMjIyLCAyMTQsIDI1LCAxLCAyMTUsIDIzNSwgMjA0LCAyMTYsIDIyMiwgMjE1LCAyNSwgCisgICAgMSwgMjE1LCAyMzUsIDIxOSwgMjQ3LCAyNSwgMSwgMjE1LCAyMzUsIDIyMiwgMjExLCAyNSwgMSwgMjE1LCAyMzUsIDIyMiwgCisgICAgMTY5LCAyNSwgMSwgMjE1LCAyMzUsIDIyMCwgMjM3LCAyNSwgMSwgMjE1LCAyMzUsIDIxMCwgMTM4LCAyNSwgMSwgMjE1LCAKKyAgICAyMzUsIDIxOCwgMTQwLCAyNSwgMSwgMjE1LCAyMzUsIDIyNiwgMjI2LCAyNSwgMSwgMjE1LCAyMzUsIDIxOSwgNTAsIDI1LCAKKyAgICAxLCAyMTUsIDIzNSwgMjA3LCAxOTMsIDI1LCAxLCAyMTUsIDIzNSwgMjE5LCAxODUsIDI1LCAxLCAyMTUsIDIzNSwgMjI1LCAKKyAgICA3MywgMjUsIDEsIDIxNSwgMjM1LCAyMjQsIDIzOCwgMjI1LCAyMzcsIDI1LCAxLCAyMTUsIDIzNSwgMjE4LCAxNTAsIDIyMiwgCisgICAgNSwgMjUsIDEsIDIxNSwgMjM1LCAyMjIsIDIxOCwgMjUsIDEsIDIxNSwgMjM1LCAyMTYsIDEwMSwgMjUsIDEsIDIxNSwgMjM1LCAKKyAgICAyMzUsIDE4MCwgMjUsIDEsIDIxNSwgMjM1LCAyMTYsIDE2NiwgMjUsIDEsIDIxNSwgMjM1LCAyMjEsIDEwNywgMjE5LCAyMjAsIAorICAgIDI1LCAxLCAyMTUsIDIzNSwgMjE3LCAyNDUsIDIyMiwgOCwgMjUsIDEsIDIxNSwgMjM1LCAxMDgsIDE5OSwgMTg2LCAyMjAsIAorICAgIDE1MSwgMjUsIDEsIDIxNSwgMjM1LCAyMzUsIDE4MSwgMjUsIDEsIDIxNSwgMjM1LCAyMTgsIDE1MCwgMjE4LCAxNTEsIDI1LCAKKyAgICAxLCAyMTUsIDIzNSwgMjA5LCAxMDksIDI1LCAxLCAyMTUsIDIzNSwgMjIxLCAyNDYsIDI1LCAxLCAyMTUsIDIzNSwgMjIyLCAKKyAgICAxMSwgMjUsIDEsIDIxNSwgMjM1LCAyMjEsIDgzLCAyNSwgMSwgMjE1LCAyMzUsIDIyNywgODUsIDI1LCAxLCAyMTUsIDIzNSwgCisgICAgMjE2LCAyMTEsIDIyNSwgMjksIDI1LCAxLCAyMTUsIDIzNSwgMjIwLCA3NiwgMjI1LCAyOSwgMjUsIDEsIDIxNSwgMjM1LCAKKyAgICAyMTYsIDAsIDI1LCAxLCAyMTUsIDIzNSwgMjIyLCAyMTIsIDI1LCAxLCAyMTUsIDIzNSwgMjE5LCAxMjQsIDI1LCAxLCAyMTUsIAorICAgIDIzNSwgMjE0LCAyMDUsIDI1LCAxLCAyMTUsIDIzNSwgMjA0LCAyMTMsIDI1LCAxLCAyMTUsIDIzNSwgMjI0LCAzOCwgMjUsIAorICAgIDEsIDIxNSwgMjM1LCAyMDksIDExLCAyNSwgMSwgMjE1LCAyMzUsIDIwNiwgMTMxLCAyNSwgMSwgMjE1LCAyMzUsIDIyMiwgCisgICAgMjA5LCAyNSwgMSwgMjE1LCAyMzUsIDIyNiwgMjMzLCAyNSwgMSwgMjE1LCAyMzUsIDIyMCwgNzIsIDI1LCAxLCAyMTUsIAorICAgIDIzNSwgMjI1LCAyNTAsIDI1LCAxLCAyMTUsIDIzNSwgMjIxLCA4NCwgMjUsIDEsIDIxNSwgMjM1LCAyMDksIDIxMiwgMjUsIAorICAgIDEsIDIxNSwgMjM1LCAyMjQsIDkwLCAyNSwgMSwgMjE1LCAyMzUsIDIzNywgNzQsIDI1LCAxLCAyMTUsIDIzNSwgMjEyLCAKKyAgICAyNDEsIDI1LCAxLCAyMTUsIDIzNSwgMjI2LCAzOSwgMjUsIDEsIDIxNSwgMjM1LCAyMDksIDcsIDI1LCAxLCAyMTUsIDIzNSwgCisgICAgMjIyLCAxNjUsIDIxNSwgMTk0LCAyNSwgMSwgMjE1LCAyMzUsIDIxMCwgMTMsIDI1LCAxLCAyMTUsIDIzNSwgMjE4LCAxNDksIAorICAgIDI1LCAxLCAyMTUsIDIzNSwgMjA5LCAyNTIsIDIxOCwgMTYwLCAxOTksIDE5NCwgMjUsIDEsIDIxNSwgMjM1LCAyMTgsIDMwLCAKKyAgICAyMjEsIDEwMywgMjUsIDEsIDIxNSwgMjM1LCAyMTYsIDIwNiwgMjUsIDEsIDIxNSwgMjM1LCAyMTksIDUyLCAyNSwgMSwgCisgICAgMjE1LCAyMzUsIDIwMywgMjM1LCAyNSwgMSwgMjE1LCAyMzUsIDIxOSwgMjIzLCAyNSwgMSwgMjE1LCAyMzUsIDIyMiwgMjA4LCAKKyAgICAyNSwgMSwgMjE1LCAyMzUsIDIxOSwgOTQsIDI1LCAxLCAyMTUsIDIzNSwgMjIyLCAxMDUsIDI1LCAxLCAyMTUsIDIzNSwgCisgICAgMjE4LCA0NCwgMjUsIDEsIDIxNSwgMjM1LCAyMDYsIDEzNSwgMjUsIDEsIDIxNSwgMjM1LCAyMDksIDQsIDI1LCAxLCAyMTUsIAorICAgIDIzNSwgMjE2LCAyMDcsIDI1LCAxLCAyMTUsIDIzNSwgMjE4LCAxNjQsIDI1LCAxLCAyMTUsIDIzNSwgMjIyLCAyMTYsIDI1LCAKKyAgICAxLCAyMTUsIDIzNSwgMjE4LCA0MSwgMjUsIDEsIDIxNSwgMjM1LCAyMjcsIDQ4LCAyNSwgMSwgMjE1LCAyMzUsIDIxOCwgCisgICAgMTY3LCAyNSwgMSwgMjE1LCAyMzUsIDIwMywgNTQsIDI1LCAxLCAyMTUsIDIzNSwgMjI0LCA0MiwgMjUsIDEsIDIxNSwgMjM1LCAKKyAgICAyMjAsIDI0LCAyNSwgMSwgMjE1LCAyMzUsIDIyMCwgMTI2LCAyNSwgMSwgMjE1LCAyMzUsIDIyMiwgMTA0LCAyNSwgMSwgCisgICAgMjE1LCAyMzQsIDIxOCwgMTYyLCAyNSwgMSwgMjE1LCAyMzQsIDIwNCwgMjE2LCAyMjIsIDIxMywgMjUsIDEsIDIxNSwgMjM0LCAKKyAgICAyMDksIDE3MSwgMjUsIDEsIDIxNSwgMjM0LCAyMTAsIDE0MiwgMjA0LCAyMTUsIDI1LCAxLCAyMTUsIDIzNCwgMjI0LCA5MiwgCisgICAgMjE4LCAxNDYsIDI1LCAxLCAyMTUsIDIzNCwgMjIyLCAxMTEsIDIyMiwgMjE3LCAyNSwgMSwgMjE1LCAyMzQsIDIyNiwgMTU1LCAKKyAgICAyNSwgMSwgMjE1LCAyMzQsIDIwMCwgMTcsIDI1LCAxLCAyMTUsIDIzNCwgMjIyLCAxMDYsIDI1LCAxLCAyMTUsIDIzNCwgCisgICAgMjI3LCA3MSwgMjUsIDEsIDIxNSwgMjM0LCAyMTYsIDU3LCAyNSwgMSwgMjE1LCAyMzQsIDIwMCwgOTUsIDIyNSwgMjksIDI1LCAKKyAgICAxLCAyMTUsIDIzNCwgMjI1LCA5MiwgMjE4LCAxNjAsIDIxOCwgNTUsIDI1LCAxLCAyMTUsIDIzNCwgMjE4LCAxNDMsIDIxMCwgCisgICAgMzksIDI1LCAxLCAyMTUsIDIzNCwgMjIwLCA0MywgMjE5LCA5NywgMjUsIDEsIDIxNSwgMjM0LCAyMzUsIDE3OCwgMjUsIDEsIAorICAgIDIxNSwgMjM0LCAyMTUsIDE0MiwgMjUsIDEsIDIxNSwgMjM0LCAyMDQsIDIxNiwgMjE4LCAxNTgsIDI1LCAxLCAyMTUsIDIzNCwgCisgICAgMjEwLCA0NCwgMjE5LCA5MiwgMjUsIDEsIDIxNSwgMjM0LCAyMTAsIDQwLCAyNSwgMSwgMjE1LCAyMzQsIDIyMSwgMjU0LCAKKyAgICAyMDYsIDEzNCwgMjUsIDEsIDIxNSwgMjM0LCAyMjIsIDkzLCAyMjIsIDEwNywgMjUsIDEsIDIxNSwgMjM0LCAyMTgsIDQyLCAKKyAgICAyMTgsIDE0NiwgMjUsIDEsIDIxNSwgMjM0LCAyMjYsIDIyMiwgMjUsIDEsIDIxNSwgMjM0LCAyMzUsIDE3OSwgMjUsIDEsIAorICAgIDIxNSwgMjM0LCAyMjYsIDIxOCwgMjUsIDEsIDIxNSwgMjM0LCAyMjUsIDE3MCwgMjUsIDEsIDIxNSwgMjM0LCAyMTYsIDEwNCwgCisgICAgMjUsIDEsIDIxNSwgMjM0LCAyMDIsIDI0MSwgMjUsIDEsIDIxNSwgMjM0LCAyMTksIDE4NywgMjIwLCAyMzUsIDI1LCAxLCAKKyAgICAyMTUsIDIzNCwgMjE5LCAyMjIsIDIyMiwgODksIDI1LCAxLCAyMTUsIDIzNCwgMjAwLCAyMTQsIDI1LCAxLCAyMTUsIDIzNCwgCisgICAgMjEyLCA0MCwgMjUsIDEsIDIxNSwgMjM0LCAyMDcsIDI4LCAyNSwgMSwgMjE1LCAyMzQsIDIyMiwgMTAsIDI1LCAxLCAyMTUsIAorICAgIDIzNCwgMjE5LCAyMDYsIDI1LCAxLCAyMTUsIDIzNCwgMjE5LCAyMDcsIDIyNSwgNzAsIDI1LCAxLCAyMTUsIDIzNCwgMjIyLCAKKyAgICAwLCAyNSwgMSwgMjE1LCAyMzQsIDIwNywgMjQ0LCAyNSwgMSwgMjE1LCAyMzQsIDIyMiwgOTcsIDI1LCAxLCAyMTUsIDIzNCwgCisgICAgMjIxLCA4OCwgMjUsIDEsIDIxNSwgMjM0LCAyMTgsIDU4LCAyNSwgMSwgMjE1LCAyMzQsIDIxNCwgMjA5LCAyNSwgMSwgMjE1LCAKKyAgICAyMzQsIDIyMiwgOSwgMjE5LCAyMjQsIDI1LCAxLCAyMTUsIDIzNCwgMjM3LCAxMTcsIDI1LCAxLCAyMTUsIDIzNCwgMjIyLCAKKyAgICA4NCwgMjUsIDEsIDIxNSwgMjM0LCAyMzcsIDE0MCwgMjUsIDEsIDIxNSwgMjM0LCAyMjYsIDIzMCwgMjUsIDEsIDIxNSwgCisgICAgMjM0LCAyMjIsIDIzNSwgMjE5LCA4NiwgMjUsIDEsIDIxNSwgMjM0LCAyMjIsIDIzNSwgMjE5LCA2MiwgMjUsIDEsIDIxNSwgCisgICAgMjM0LCAyMjQsIDIzNywgMjUsIDEsIDIxNSwgMjM0LCAyMTksIDIzMCwgMjUsIDEsIDIxNSwgMjM0LCAyMTgsIDE2OSwgMjUsIAorICAgIDEsIDIxNSwgMjM0LCAxNzgsIDI1LCAxLCAyMTUsIDIzNCwgMjI2LCAxNDAsIDI1LCAxLCAyMTUsIDIzNCwgMjE5LCAxNzUsIAorICAgIDI1LCAxLCAxNzMsIDIxOSwgMTg2LCAyMjIsIDIxNSwgMjUsIDEsIDE3MywgMjE4LCA3LCAyNSwgMSwgMTczLCAxOTksIDE5NCwgCisgICAgMjUsIDEsIDE3MywgMjAxLCA5OCwgMjUsIDEsIDE3MywgMjE5LCAyMjMsIDI1LCAxLCAxNzMsIDIyMCwgNjQsIDI1LCAxLCAKKyAgICAxNzMsIDIxOSwgMTkzLCAyNSwgMSwgMTczLCAyMzUsIDE4OCwgMjUsIDEsIDE3MywgMjIyLCAxMDEsIDI1LCAxLCAxNzMsIAorICAgIDIzNiwgMzAsIDI1LCAxLCAxNzMsIDIxOCwgMzIsIDIyMSwgMTQ1LCAyMjIsIDEyLCAyNSwgMSwgMTczLCAyMTgsIDEzOCwgCisgICAgMjIyLCA5MiwgMjUsIDEsIDE3MywgMjIyLCA5OCwgMjUsIDEsIDE3MywgMjE1LCAxNDgsIDI1LCAxLCAxNzMsIDIyMCwgNDksIAorICAgIDI1LCAxLCAxNzMsIDIyMiwgMTA5LCAyNDcsIDE4NiwgMjUsIDEsIDE3MywgMjI2LCAyMjAsIDI1LCAxLCAxNzMsIDIzNSwgCisgICAgMTg5LCAyNSwgMSwgMTczLCAyMjYsIDIyNywgMjUsIDEsIDE3MywgMTk5LCAyMTIsIDIyMSwgMTAsIDI1LCAxLCAxNzMsIAorICAgIDIxOCwgMSwgMjUsIDEsIDE3MywgMjIyLCA4NiwgMjUsIDEsIDE3MywgMjE4LCAxNjgsIDI1LCAxLCAxNzMsIDIyMiwgOTIsIAorICAgIDI1LCAxLCAxNzMsIDIwMCwgMTgsIDI1LCAxLCAxNzMsIDIyNiwgNDcsIDI1LCAxLCAxNzMsIDIyNywgMTA1LCAyNSwgMSwgCisgICAgMTczLCAyMTAsIDEzNywgMjUsIDEsIDE3MywgMjIwLCA1OCwgMjUsIDEsIDE3MywgMjA3LCAyNiwgMjUsIDEsIDE3MywgMjE5LCAKKyAgICA2NiwgMjUsIDEsIDE3MywgMjA1LCAyMTIsIDE5OSwgMTk3LCAyNSwgMSwgMTczLCAyMDgsIDE5LCAyNSwgMSwgMTczLCAyMTksIAorICAgIDIxMywgMjE4LCA1NSwgMjUsIDEsIDE3MywgMjAyLCAyNDAsIDI1LCAxLCAxNzMsIDIyMCwgMTI5LCAyNSwgMSwgMTczLCAKKyAgICAyMjIsIDIzNSwgMjI2LCAyMjksIDI1LCAxLCAxNzMsIDIxOCwgMTUxLCAyNSwgMSwgMTczLCAyMTksIDIwOCwgMjUsIDEsIAorICAgIDE3MywgMjI1LCA3NCwgMjUsIDEsIDE3MywgMjIyLCA5NCwgMjUsIDEsIDE3MywgMjIxLCAyNDUsIDI1LCAxLCAxNzMsIDIxOCwgCisgICAgMTQ1LCAyNSwgMSwgMTczLCAyMDYsIDEzMCwgMjUsIDEsIDE3MywgMjE5LCAyMTAsIDI1LCAxLCAxNzMsIDIzNiwgMTg3LCAKKyAgICAyNSwgMSwgMTczLCAyMjAsIDYzLCAyNSwgMSwgMTczLCAyMTgsIDE3MCwgMjUsIDEsIDE3MywgMjE4LCAxNjYsIDI1LCAxLCAKKyAgICAxNzMsIDI0OCwgMTIsIDI1LCAxLCAxNzMsIDIwMiwgMjQyLCAyNSwgMSwgMTczLCAyMjIsIDk5LCAyNSwgMSwgMTczLCAyMTIsIAorICAgIDE3NSwgMjUsIDEsIDE3MywgMjE5LCA5NiwgMjUsIDEsIDE3MywgMjI1LCA5MSwgMjUsIDEsIDE3MywgMjA1LCAyMDksIDI1LCAKKyAgICAxLCAxNzMsIDIxOCwgMTUyLCAyMTksIDE3NSwgMjUsIDEsIDE3MywgMjE5LCA4OCwgMjUsIDEsIDE3MywgMjI2LCAyMzMsIAorICAgIDI1LCAxLCAxNzMsIDIxOSwgMjE1LCAyNSwgMSwgMTczLCAyMjIsIDIwOCwgMjUsIDEsIDE3MywgMjIyLCA4NywgMjUsIDEsIAorICAgIDE3MywgMjI0LCA0MiwgMjUsIDEsIDE3MywgMjI1LCAyMzcsIDI1LCAxLCAxNzMsIDIxOSwgOTQsIDI1LCAxLCAxNzMsIDIxOSwgCisgICAgMTc1LCAyNSwgMSwgMTczLCAyMDAsIDIwNCwgMjUsIDEsIDE3MywgMjE5LCAyMTEsIDI1LCAxLCAxNzMsIDIxOCwgMTU1LCAKKyAgICAyNSwgMSwgMTczLCAyMTgsIDE0NywgMjUsIDEsIDE3MywgMjI1LCAyNTIsIDIxOSwgNTIsIDI1LCAxLCAxNzMsIDIxOCwgCisgICAgMTUzLCAyNSwgMSwgMTczLCAyMjAsIDcxLCAyNSwgMSwgMTczLCAyMjIsIDIzNSwgMjE4LCAxNTgsIDI1LCAxLCAxNzMsIAorICAgIDIwMCwgMTA5LCAyNSwgMSwgMTczLCAyMjAsIDcwLCAyNSwgMSwgMTczLCAyMDksIDIxNSwgMjUsIDEsIDE3MywgMjEwLCAKKyAgICAxNDAsIDI1LCAxLCAxNzMsIDIyMiwgOTUsIDI1LCAxLCAxNzMsIDIyMiwgMjE1LCAyNSwgMSwgMTczLCAyMjIsIDEwNSwgMjUsIAorICAgIDEsIDE3MywgMjI2LCAyMjEsIDI1LCAxLCAxNzMsIDIyMiwgOTYsIDI1LCAxLCAxNzMsIDIyNiwgMjI1LCAyNSwgMSwgMTczLCAKKyAgICAyMjIsIDEwOSwgMjE1LCAxOTksIDI1LCAxLCAxNzMsIDE5OSwgMTc3LCAyNSwgMSwgMTczLCAyMTksIDg0LCAyNSwgMSwgCisgICAgMTczLCAyMjEsIDIwMCwgMjUsIDEsIDE3MywgMjIxLCAzOSwgMjUsIDEsIDE3MywgMjEwLCAxNiwgMjUsIDEsIDE3MywgMjI2LCAKKyAgICAyNDQsIDIyNSwgNTIsIDI1LCAxLCAxNzMsIDIyNiwgMjQ0LCAyMzcsIDE1MywgMjUsIDEsIDE3MywgMjE5LCAyNDUsIDI1LCAKKyAgICAxLCAxNzMsIDIyMCwgMTI2LCAyNSwgMSwgMTczLCAyMjQsIDE1OCwgMjUsIDEsIDE3MywgMjE1LCAxNjAsIDI1LCAxLCAxNzMsIAorICAgIDIxNiwgNDcsIDI1LCAxLCAxNzMsIDIwNiwgMTQ2LCAyNSwgMSwgMTM3LCAyMjIsIDg1LCAyNSwgMSwgMTM3LCAyMDEsIDk2LCAKKyAgICAyNSwgMSwgMTM3LCAyMTksIDgyLCAyNSwgMSwgMTM3LCAyMjEsIDI1MywgMjUsIDEsIDEzNywgMjE5LCA4MCwgMjUsIDEsIAorICAgIDEzNywgMjI0LCAyMDMsIDI1LCAxLCAxMzcsIDIxOSwgODUsIDI1LCAxLCAxMzcsIDIxOCwgMTY1LCAyNSwgMSwgMTM3LCAKKyAgICAyMTksIDIyOSwgMjUsIDEsIDEzNywgMjE4LCA1NSwgMjUsIDEsIDEzNywgMjAwLCAyMTUsIDI1LCAxLCAxMzcsIDIxOSwgCisgICAgMTgzLCAyNSwgMSwgMTM3LCAyMTAsIDYzLCAyNSwgMSwgMTM3LCAyMTksIDE5NCwgMjUsIDEsIDEzNywgMjI2LCAyMjgsIDI1LCAKKyAgICAxLCAxMzcsIDIwNiwgMTMyLCAyNSwgMSwgMTM3LCAyMTAsIDQyLCAyNSwgMSwgMTM3LCAyMTksIDkzLCAyNSwgMSwgMTM3LCAKKyAgICAyMDcsIDI0NCwgMjUsIDEsIDEzNywgMjI2LCAyMzMsIDI1LCAxLCAxMzcsIDIwMCwgOTcsIDI1LCAxLCAxMzcsIDIyNSwgCisgICAgMjUzLCAyNSwgMSwgMTM3LCAyMTIsIDMsIDI1LCAxLCAxMzcsIDIyMiwgMiwgMjUsIDEsIDEzNywgMjIwLCA2MiwgMjUsIDEsIAorICAgIDEzNywgMjIyLCAxODMsIDI1LCAxLCAxMzcsIDIyMiwgOCwgMjUsIDEsIDEzNywgMjEwLCAxMzksIDI1LCAxLCAxMzcsIDIwMCwgCisgICAgNDEsIDI1LCAxLCAxMzcsIDIxOSwgODcsIDI1LCAxLCAxMzcsIDIyNiwgMjI0LCAyMjIsIDg4LCAyNSwgMSwgMTM3LCAyMTksIAorICAgIDE5MCwgMjUsIDEsIDEzNywgMjA0LCAyMTUsIDI1LCAxLCAxMzcsIDIzNSwgMTk4LCAyNSwgMSwgMTM3LCAyMTksIDE4MCwgCisgICAgMjUsIDEsIDEzNywgMjM3LCAxMTgsIDI1LCAxLCAxMzcsIDIyMCwgNjYsIDI1LCAxLCAxMzcsIDIyMSwgMjM3LCAyNSwgMSwgCisgICAgMTM3LCAyMjQsIDIzMSwgMjUsIDEsIDEzNywgMjIwLCA0OCwgMjUsIDEsIDEzNywgMjIxLCAxMDIsIDI1LCAxLCAxMzcsIAorICAgIDIyMSwgMjQxLCAyNSwgMSwgMTM3LCAyMTQsIDE4OSwgMjUsIDEsIDEzNywgMjIxLCAyMzksIDI1LCAxLCAxMzcsIDIyMSwgCisgICAgMjU1LCAyNSwgMSwgMTM3LCAyMjQsIDI1LCAyNSwgMSwgMTM3LCAyMTgsIDE1NywgMjUsIDEsIDEzNywgMjIyLCAxMDgsIDI1LCAKKyAgICAxLCAxMzcsIDIyNSwgMjI3LCAyNSwgMSwgMTM3LCAyMTgsIDQ0LCAyNSwgMSwgMTM3LCAyMDYsIDEzNSwgMjUsIDEsIDEzNywgCisgICAgMjA5LCA0LCAyNSwgMSwgMTM3LCAxOTksIDE3NywgMjUsIDEsIDEzNywgMjI2LCAyMjUsIDI1LCAxLCAxMzcsIDIxMywgMjMzLCAKKyAgICAyNSwgMSwgMTM3LCAyMDYsIDE4OSwgMjUsIDEsIDEzNywgMjE5LCAxOTEsIDI1LCAxLCAxMzcsIDIyMiwgNCwgMjUsIDEsIAorICAgIDEzNywgMjE4LCAxNTYsIDI1LCAxLCAxMzcsIDIyNiwgMjIzLCAyNSwgMSwgMTM3LCAyMTUsIDE1NCwgMjUsIDEsIDEzNywgCisgICAgMjE1LCAyNTAsIDI1LCAxLCAxMzcsIDIxOCwgMTgsIDI1LCAxLCAxMzcsIDIyNCwgMjM3LCAyNSwgMSwgMTM3LCAyMTksIAorICAgIDIzMCwgMjUsIDEsIDEzNywgMjIyLCAxLCAyNSwgMSwgMTM3LCAyMTksIDIwMywgMjUsIDEsIDEzNywgMTk5LCAxOTEsIDI1LCAKKyAgICAxLCAxMzcsIDIxNiwgMTM1LCAyNSwgMSwgMTM3LCAxOTksIDE5MCwgMjUsIDEsIDEzNywgMjIwLCA3MSwgMjUsIDEsIDEzNywgCisgICAgMjE4LCAxNDYsIDI1LCAxLCAxMzcsIDIwOCwgMjEsIDI1LCAxLCAxMzcsIDIyNiwgMSwgMjUsIDEsIDEzNywgMjE5LCAyMTksIAorICAgIDI1LCAxLCAxMzcsIDIxOSwgMTg4LCAyNSwgMSwgMTM3LCAyMDQsIDE5NiwgMjUsIDEsIDEzNywgMjIyLCAxMiwgMjUsIDEsIAorICAgIDEzNywgMjI1LCAyNDcsIDI1LCAxLCAxMzcsIDIxOCwgMTU0LCAyNSwgMSwgMTM3LCAyMDYsIDEzMywgMjUsIDEsIDEzNywgCisgICAgMjIyLCAyMTAsIDI1LCAxLCAxMzcsIDIxOSwgMjI4LCAyNSwgMSwgMTM3LCAyMjQsIDIzMCwgMjUsIDEsIDEzNywgMjE5LCAKKyAgICAyMDksIDI1LCAxLCAxMzcsIDIxOCwgMTU5LCAyNSwgMSwgMTM3LCAyMTksIDY2LCAyNSwgMSwgMTM3LCAyMzUsIDE4MiwgMjUsIAorICAgIDEsIDEzNywgMjI2LCAxNSwgMjUsIDEsIDEzNywgMjEzLCAxNDAsIDIxNywgOTIsIDI1LCAxLCAxMzcsIDIwNywgMTUsIDI1LCAKKyAgICAxLCAxMzcsIDIwNSwgMTU0LCAyNSwgMSwgMTM3LCAyMTgsIDQxLCAyNSwgMSwgMTM3LCAyMTMsIDMzLCAyNSwgMSwgMTM3LCAKKyAgICAyMjUsIDMxLCAyNSwgMSwgMTM3LCAyMjIsIDYzLCAyNSwgMSwgMTM3LCAyMjMsIDI0MywgMjUsIDEsIDEzNywgMjA3LCAxOTMsIAorICAgIDI1LCAxLCAxMzcsIDIyMSwgNDEsIDI1LCAxLCAxMzcsIDIxMCwgMjgsIDI1LCAxLCAxMzcsIDIxMCwgMzgsIDI1LCAxLCAKKyAgICAxMzcsIDIyNSwgMTk5LCAyNSwgMSwgMTM3LCAyMTgsIDEzMywgMjUsIDEsIDEzNywgMjA5LCAyMjAsIDI1LCAxLCAxMzcsIAorICAgIDIxOCwgMTQ4LCAyNSwgMSwgMTM3LCAyMTYsIDYxLCAyNSwgMSwgMTM3LCAyMTksIDE1MCwgMjUsIDEsIDEzNywgMjA5LCAKKyAgICAyNTEsIDI1LCAxLCAxMzcsIDIxNCwgMjA0LCAyNSwgMSwgMTM3LCAyMjAsIDIzNSwgMjUsIDEsIDEzNywgMjI0LCA3MCwgMjUsIAorICAgIDEsIDEzNywgMjEzLCAxNDAsIDIyMSwgMzQsIDI1LCAxLCAxMzcsIDIwNiwgMTUsIDI1LCAxLCAxMzcsIDIxOCwgMTM1LCAyNSwgCisgICAgMSwgMTM3LCAyMjIsIDEwOSwgMjEwLCAxMzUsIDI1LCAxLCAxMzcsIDIxMiwgMSwgMjUsIDEsIDEzNywgMjM3LCAxOTQsIDI1LCAKKyAgICAxLCA5NiwgMjIwLCA3MCwgMjUsIDEsIDk2LCAyMDUsIDE2MCwgMjUsIDEsIDk2LCAyMjIsIDk4LCAyNSwgMSwgOTYsIDIyNSwgCisgICAgNzQsIDI1LCAxLCA5NiwgMjAyLCAxODAsIDI1LCAxLCA5NiwgMjI0LCA3NiwgMjUsIDEsIDk2LCAyMTYsIDIxMCwgMjUsIDEsIAorICAgIDk2LCAyMDksIDE1LCAyNSwgMSwgOTYsIDIxMywgMjA4LCAyNSwgMSwgOTYsIDIxOCwgMTYxLCAyNSwgMSwgOTYsIDIyMCwgCisgICAgNDEsIDI1LCAxLCA5NiwgMjE0LCAyMjEsIDI1LCAxLCA5NiwgMjA2LCAyNDYsIDI1LCAxLCA5NiwgMjE5LCAxOTYsIDI1LCAxLCAKKyAgICA5NiwgMjI2LCA0MywgMjUsIDEsIDk2LCAyMDAsIDIwNywgMjUsIDEsIDk2LCAyMTEsIDE5MCwgMjUsIDEsIDk2LCAyMTksIAorICAgIDIyMCwgMjUsIDEsIDk2LCAyMTYsIDIwNywgMjUsIDEsIDk2LCAyMDUsIDE2MSwgMjUsIDEsIDk2LCAyMjUsIDI1MSwgMjUsIAorICAgIDEsIDk2LCAyMjQsIDkxLCAyNSwgMSwgOTYsIDIxOCwgMTY0LCAyNSwgMSwgOTYsIDIxOSwgMTcyLCAyNSwgMSwgOTYsIDIyMiwgCisgICAgMjE2LCAyNSwgMSwgOTYsIDIxOSwgMTg5LCAyNSwgMSwgOTYsIDIxOSwgMTcxLCAyNSwgMSwgOTYsIDIxOCwgMTYzLCAyNSwgCisgICAgMSwgOTYsIDIxMywgMzAsIDI1LCAxLCA5NiwgMjE5LCA4NCwgMjUsIDEsIDk2LCAyMTYsIDU5LCAyNSwgMSwgOTYsIDIxMiwgCisgICAgNjEsIDI1LCAxLCA5NiwgMjE5LCAyMDQsIDI1LCAxLCA5NiwgMjIxLCAyNDcsIDI1LCAxLCA5NiwgMjM1LCAxNzYsIDI1LCAxLCAKKyAgICA5NiwgMjE5LCAxOTIsIDI1LCAxLCA5NiwgMjE5LCA5NSwgMjUsIDEsIDk2LCAyMjIsIDE2NCwgMjUsIDEsIDk2LCAyMjQsIAorICAgIDcyLCAyNSwgMSwgOTYsIDIxOSwgMjI1LCAyNSwgMSwgOTYsIDIyMCwgNTQsIDI1LCAxLCA5NiwgMjA3LCAxNCwgMjE4LCAKKyAgICAxNDYsIDI1LCAxLCA5NiwgMjEwLCAxNDEsIDI1LCAxLCA5NiwgMjE0LCAyMTQsIDI1LCAxLCA5NiwgMjIwLCA3NCwgMjA5LCAKKyAgICAyMiwgMjUsIDEsIDk2LCAyMTksIDIxMiwgMjE4LCA1NSwgMjUsIDEsIDk2LCAyMDAsIDUsIDI1LCAxLCA5NiwgMjM1LCAxNzcsIAorICAgIDI1LCAxLCA5NiwgMjA0LCAyMTQsIDI1LCAxLCA5NiwgMjAwLCAyMSwgMjUsIDEsIDk2LCAyMTUsIDEwNiwgMjUsIDEsIDk2LCAKKyAgICAyMDQsIDIwMiwgMjUsIDEsIDk2LCAyMjYsIDIzMSwgMjUsIDEsIDk2LCAyMDgsIDIwLCAyNSwgMSwgOTYsIDIwNiwgMTM0LCAKKyAgICAyNSwgMSwgOTYsIDIwMiwgMjQzLCAyNSwgMSwgOTYsIDIwMSwgNDQsIDI1LCAxLCA5NiwgMjI1LCAxNzMsIDI1LCAxLCA5NiwgCisgICAgMjE0LCAyMjQsIDI1LCAxLCA5NiwgMjA3LCAyNywgMjUsIDEsIDk2LCAyMzUsIDE5NywgMjUsIDEsIDk2LCAyMTksIDIzNSwgCisgICAgMjUsIDEsIDk2LCAyMTAsIDQxLCAyNSwgMSwgOTYsIDIyMSwgMjQyLCAyNSwgMSwgOTYsIDIyMiwgMTAyLCAyNSwgMSwgOTYsIAorICAgIDIxOCwgNSwgMjUsIDEsIDk2LCAyMTksIDQ4LCAyNSwgMSwgOTYsIDIzNiwgMjYsIDI1LCAxLCA5NiwgMjA0LCAyMDMsIDI1LCAKKyAgICAxLCA5NiwgMjI2LCA1LCAyNSwgMSwgOTYsIDIwMCwgNzMsIDI1LCAxLCA5NiwgMjE4LCA0MiwgMjQ2LCAxMjYsIDI1LCAxLCAKKyAgICA5NiwgMTk5LCAyNTEsIDI1LCAxLCA5NiwgMjIyLCAzLCAyNSwgMSwgOTYsIDIyMCwgNTksIDI1LCAxLCA5NiwgMjE1LCAxOTUsIAorICAgIDI1LCAxLCA5NiwgMTk5LCAxOTYsIDI1LCAxLCA5NiwgMjI0LCAyMzIsIDI1LCAxLCA5NiwgMjM2LCAxODcsIDI1LCAxLCA5NiwgCisgICAgMjM2LCAyNSwgMjUsIDEsIDk2LCAyMTksIDE4MiwgMjUsIDEsIDk2LCAyMjYsIDIzMywgMjUsIDEsIDk2LCAyMjIsIDIxOSwgCisgICAgMjUsIDEsIDk2LCAyMTksIDE5NSwgMjUsIDEsIDk2LCAyMzUsIDE4MywgMjUsIDEsIDk2LCAyMzcsIDE5NSwgMjUsIDEsIDk2LCAKKyAgICAyMTgsIDEzNiwgMjUsIDEsIDk2LCAyMTUsIDI1MSwgMjUsIDEsIDk2LCAyMDAsIDE5LCAyNSwgMSwgOTYsIDIxOSwgMjIxLCAKKyAgICAyNSwgMSwgOTYsIDIxOCwgNDIsIDI0OCwgMjA1LCAyNSwgMSwgOTYsIDIxNywgMjQxLCAyNSwgMSwgOTYsIDIxNSwgNzksIAorICAgIDI1LCAxLCA5NiwgMjIxLCAyMDAsIDI1LCAxLCA5NiwgMjM2LCAxODUsIDI1LCAxLCA5NiwgMjIwLCAxNTEsIDI1LCAxLCA5NiwgCisgICAgMjIxLCAzOSwgMjUsIDEsIDk2LCAyMzUsIDE4MiwgMjUsIDEsIDk2LCAyMzYsIDE5MCwgNzAsIDI1LCAxLCA5NiwgMjIwLCAKKyAgICAyMzYsIDI1LCAxLCA5NiwgMjE0LCAyMjAsIDI1LCAxLCA5NiwgMjE5LCAxODQsIDI1LCAxLCA5NiwgMjI1LCAyMzcsIDI1LCAKKyAgICAxLCA5NiwgMjE1LCAxOTIsIDI1LCAxLCA5NiwgMjE4LCAxNDksIDI1LCAxLCA5NiwgMjAwLCAyMCwgMjUsIDEsIDk2LCAyMTksIAorICAgIDIwNSwgMjUsIDEsIDk2LCAyMTYsIDIxMSwgMjE2LCAzMywgMjUsIDEsIDk2LCAyMzYsIDE5MCwgMjQ3LCAxNjgsIDI1LCAxLCAKKyAgICA5NiwgMjM3LCA2LCAyNSwgMSwgOTYsIDIxOSwgODksIDI1LCAxLCA5NiwgNjIsIDI1LCAxLCA5NiwgMjA1LCAxNTQsIDI1LCAKKyAgICAxLCA5NiwgNzQsIDI1LCAxLCA5NiwgNzAsIDI1LCAxLCA5NiwgMjI1LCA3MiwgMjUsIDEsIDk2LCAyMTYsIDIxMSwgMjE1LCAKKyAgICAxMTQsIDI1LCAxLCA5NiwgMjA3LCAzMiwgMjUsIDEsIDk2LCAyMDYsIDIzMywgMjUsIDEsIDk2LCAyMjAsIDc0LCAyMjAsIAorICAgIDIyMywgMjMzLCAxMDksIDI1LCAxLCA5NiwgMjEwLCAxNiwgMjUsIDEsIDk2LCAyMDAsIDE2LCAyNSwgMSwgOTYsIDIxOSwgCisgICAgMTY1LCAyNSwgMSwgOTYsIDE5OSwgMjAxLCAyNSwgMSwgOTYsIDE5OSwgMjI4LCAyMDcsIDE3MywgMjUsIDEsIDk2LCAxOTksIAorICAgIDIyOCwgMjQzLCAxLCAyNSwgMSwgOTYsIDE5OSwgMTg1LCAyNSwgMSwgOTYsIDE5OSwgMTkzLCAyNSwgMSwgOTYsIDIyNiwgCisgICAgMjE5LCAyNSwgMSwgOTYsIDIxNSwgMjQ5LCAyNSwgMSwgOTYsIDIxOSwgOTAsIDIzOCwgMTI2LCAyNSwgMSwgOTYsIDIxNCwgCisgICAgMjE2LCAyNSwgMSwgOTYsIDIwMCwgMjEzLCAyNSwgMSwgOTYsIDIzNywgMTQwLCAyNSwgMSwgOTYsIDIwMywgNTQsIDI1LCAxLCAKKyAgICA5NiwgMjI0LCA0MiwgMjUsIDEsIDk2LCAyMjEsIDIxMSwgMjUsIDEsIDk2LCAyMTMsIDEwNywgMjUsIDEsIDk2LCAyMTMsIAorICAgIDIzNCwgMjUsIDEsIDk2LCAyMTksIDE2NCwgMjUsIDEsIDk2LCAyMTksIDI1MywgMjUsIDEsIDk2LCAyMTAsIDgsIDI1LCAxLCAKKyAgICA5NiwgMjA5LCAyNTEsIDI1LCAxLCA5NiwgMjM2LCAxOTAsIDIxMywgMTQzLCAyNSwgMSwgOTYsIDE4OCwgMjUsIDEsIDk2LCAKKyAgICAyMTUsIDIwNCwgMjUsIDEsIDk2LCAyMjQsIDcwLCAyNSwgMSwgOTYsIDIyNiwgODgsIDI1LCAxLCA5NiwgMjIyLCA0MCwgMjUsIAorICAgIDEsIDk2LCAxNzgsIDI1LCAxLCA5NiwgMjIyLCAxNjEsIDI1LCAxLCA5NiwgMjA2LCAxMzYsIDI1LCAxLCA5NiwgMjI2LCAKKyAgICAxNjMsIDI1LCAxLCA5NiwgMjIxLCAxMDYsIDI1LCAxLCA5NiwgMjA2LCAxNjYsIDI1LCAxLCA5NiwgMjM3LCAxNjQsIDI1LCAKKyAgICAxLCA5NiwgMjM1LCAxNzAsIDI1LCAxLCAyMTUsIDIzMywgMTYxLCAyNSwgMSwgMjE1LCAyMzMsIDY2LCAyNSwgMSwgMjE1LCAKKyAgICAyMzMsIDIyNiwgMTUsIDI1LCAxLCAyMTUsIDIzMywgMjM4LCAyNTUsIDI1LCAxLCAyMTUsIDIzMywgMjEzLCAxNjcsIDI1LCAKKyAgICAxLCAyMTUsIDIzMywgMjA3LCAxNSwgMjUsIDEsIDIxNSwgMjMzLCAyMTgsIDQxLCAyNSwgMSwgMjE1LCAyMzMsIDE5NCwgMjUsIAorICAgIDEsIDIxNSwgMjMzLCAyMTMsIDMzLCAyNSwgMSwgMjE1LCAyMzMsIDIxMywgODEsIDI1LCAxLCAyMTUsIDIzMywgMjIyLCA2MywgCisgICAgMjUsIDEsIDIxNSwgMjMzLCAyMDcsIDMyLCAyNSwgMSwgMjE1LCAyMzMsIDIyMCwgNzMsIDI1LCAxLCAyMTUsIDIzMywgMjE5LCAKKyAgICA5NiwgMjUsIDEsIDIxNSwgMjMzLCAyMjMsIDI0MywgMjUsIDEsIDIxNSwgMjMzLCAyMDcsIDE5MywgMjUsIDEsIDIxNSwgCisgICAgMjMzLCAyMTAsIDI4LCAyNSwgMSwgMjE1LCAyMzMsIDIwOSwgMTgyLCAyNSwgMSwgMjE1LCAyMzMsIDIxMCwgMTM3LCAyNSwgCisgICAgMSwgMjE1LCAyMzMsIDIyNSwgMTk5LCAyNSwgMSwgMjE1LCAyMzMsIDIyNiwgMjMzLCAyNSwgMSwgMjE1LCAyMzMsIDIxOCwgCisgICAgMTA0LCAyNSwgMSwgMjE1LCAyMzMsIDIxOCwgMTMzLCAyNSwgMSwgMjE1LCAyMzMsIDIxOSwgNjcsIDI1LCAxLCAyMTUsIAorICAgIDIzMywgMTk5LCAyMjcsIDI1LCAxLCAyMTUsIDIzMywgMjA5LCAyMjAsIDI1LCAxLCAyMTUsIDIzMywgMTgzLCAyNSwgMSwgCisgICAgMjE1LCAyMzMsIDIxOCwgMTY3LCAyNSwgMSwgMjE1LCAyMzMsIDIxNSwgMjQ5LCAyNSwgMSwgMjE1LCAyMzMsIDIxOCwgMTQ4LCAKKyAgICAyNSwgMSwgMjE1LCAyMzMsIDIwMCwgMjEzLCAyNSwgMSwgMjE1LCAyMzMsIDIxNiwgNjEsIDI1LCAxLCAyMTUsIDIzMywgCisgICAgMjEyLCAxNzUsIDI1LCAxLCAyMTUsIDIzMywgMjE5LCAxNTAsIDI1LCAxLCAyMTUsIDIzMywgMjEzLCAxMDcsIDI1LCAxLCAKKyAgICAyMTUsIDIzMywgMjI2LCAyNDMsIDI1LCAxLCAyMTUsIDIzMywgMjE5LCAxODEsIDI1LCAxLCAyMTUsIDIzMywgMjE5LCAyMzIsIAorICAgIDI1LCAxLCAyMTUsIDIzMywgMjEwLCA4LCAyNSwgMSwgMjE1LCAyMzMsIDIxNCwgMjIxLCAyNSwgMSwgMjE1LCAyMzMsIDIzNywgCisgICAgNiwgMjUsIDEsIDIxNSwgMjMzLCAyMDEsIDExNCwgMjUsIDEsIDIxNSwgMjMzLCAyMjQsIDIxMCwgMjUsIDEsIDIxNSwgMjMzLCAKKyAgICAyMjQsIDcwLCAyNSwgMSwgMjE1LCAyMzMsIDIyNiwgODgsIDI1LCAxLCAyMTUsIDIzMywgMjIyLCAxMDAsIDI1LCAxLCAyMTUsIAorICAgIDIzMywgMjEzLCAxMzksIDI1LCAxLCAyMTUsIDIzMywgMTc4LCAyNSwgMSwgMjE1LCAyMzMsIDIyMSwgMTM2LCAyNSwgMSwgCisgICAgMjE1LCAyMzMsIDIyMiwgMTA4LCAyNSwgMSwgMjE1LCAyMzMsIDIwNiwgMTQ2LCAyNSwgMSwgMjE1LCAyMzMsIDIyNiwgNTAsIAorICAgIDI1LCAxLCAyMTUsIDIzMywgMjEyLCAyMSwgMjUsIDEsIDIxNSwgMjMzLCAyMDEsIDE2NSwgMjIxLCA0NCwgMSwgMjA3LCAzNiwgCisgICAgMjIxLCA0NCwgMSwgMjE5LCAyMDEsIDIyMSwgNDQsIDEsIDE5OSwgMjQ1LCAyMjEsIDQ0LCAxLCAyMjEsIDE2NiwgMjIxLCAKKyAgICA0NCwgMSwgMjQ5LCAxMzYsIDIyMSwgNDQsIDEsIDI0MiwgNTgsIDIyMSwgNDQsIDEsIDYyLCAyMjEsIDQ0LCAxLCAyMTUsIAorICAgIDIyOSwgMjIxLCA0NCwgMSwgMjI2LCAyMDIsIDIyMSwgNDQsIDEsIDIzNCwgMTY5LCAyMjEsIDQ0LCAxLCAyNDIsIDMzLCAKKyAgICAyMjEsIDQ0LCAxLCAyNDYsIDE5MiwgMjIxLCA0NCwgMSwgMjI3LCA3LCAyMjEsIDQ0LCAxLCAyMTcsIDkzLCAyMjEsIDQ0LCAKKyAgICAxLCAyMjIsIDIxNiwgMjIxLCA0NCwgMSwgMjE5LCAxMTgsIDIyMSwgNDQsIDEsIDE3MiwgMjIxLCA0NCwgMSwgMjE3LCA2MywgCisgICAgMjIxLCA0NCwgMSwgNzQsIDIyMSwgNDQsIDEsIDIxMywgMSwgMjIxLCA0NCwgMSwgMjEwLCAzMywgMjIxLCA0NCwgMSwgMjA2LCAKKyAgICAxMDUsIDIyMSwgNDQsIDEsIDIzOSwgMjcsIDIyMSwgNDQsIDEsIDIwMSwgMTE0LCAyMjEsIDQ0LCAxLCA3MiwgMjIxLCA0NCwgCisgICAgMSwgMjI2LCA4OCwgMjIxLCA0NCwgMSwgMjI1LCA4MCwgMjIxLCA0NCwgMSwgMTk0LCAyMjEsIDQ0LCAxLCAyMzQsIDIyMywgCisgICAgMjIxLCA0NCwgMSwgMjEzLCA4OCwgMjIxLCA0NCwgMSwgMjA2LCAxNzksIDIyMSwgNDQsIDE3LCAxOTksIDgxLCAyMjEsIDQ0LCAKKyAgICAxNywgMTAyLCAyMjEsIDQ0LCAxNywgMTA1LCAyMjEsIDQ0LCAxNywgMTQ3LCAyMjEsIDQ0LCAxNywgMTQ5LCAyMjEsIDQ0LCAKKyAgICAxNywgMTY0LCAyMjEsIDQ0LCAxNywgMTg3LCAyMjEsIDQ0LCAxNywgMjEwLCAxMzUsIDIyMSwgNDQsIDE3LCAxOTIsIDIyMSwgCisgICAgNDQsIDE3LCAyMTksIDExMywgMjIxLCA0NCwgMjQyLCAxMCwgMjIxLCA0NCwgNTMsIDI0MiwgMTAsIDI0OSwgNTgsIDIwMywgCisgICAgODcsIDEsIDIzOCwgMTYxLCAyNDksIDU4LCAyMDMsIDg3LCAxLCAxNjEsIDI0OSwgNTgsIDIwMywgODcsIDEsIDIxMSwgMjAyLCAKKyAgICAyNDksIDU4LCAyMDMsIDg3LCAxLCAyMzcsIDE5NSwgMjQ5LCA1OCwgMjAzLCA4NywgMSwgMjIyLCAxMDMsIDI0OSwgNTgsIAorICAgIDIwMywgODcsIDEsIDIwMCwgNiwgMjQ5LCA1OCwgMjAzLCA4NywgMSwgMjM2LCA3NCwgMjQ5LCA1OCwgMjAzLCA4NywgMSwgCisgICAgMjQxLCA4MSwgMjQ5LCA1OCwgMjAzLCA4NywgMSwgMjI2LCA0OSwgMjQ5LCA1OCwgMjAzLCA4NywgMSwgMjI3LCAxNjYsIAorICAgIDI0OSwgNTgsIDIwMywgODcsIDEsIDIzMywgNjcsIDI0OSwgNTgsIDIwMywgODcsIDEsIDIwMSwgMTE0LCAyNDksIDU4LCAKKyAgICAyMDMsIDg3LCAxLCAxOTksIDE0LCAyNDksIDU4LCAyMDMsIDg3LCAxLCAyMzYsIDE5LCAyNDksIDU4LCAyMDMsIDg3LCAxLCAKKyAgICAyNDAsIDIxMSwgMjQ5LCA1OCwgMjAzLCA4NywgMSwgMjQ3LCA3NiwgMjQ5LCA1OCwgMjAzLCA4NywgMSwgMjAzLCAxNzUsIAorICAgIDI0OSwgNTgsIDIwMywgODcsIDEsIDEzOCwgMjQ5LCA1OCwgMjAzLCA4NywgMSwgMjQ5LCAxMzYsIDI0OSwgNTgsIDIwMywgCisgICAgODcsIDEsIDIwMSwgMTY2LCAyNDksIDU4LCAyMDMsIDg3LCAxLCAyMDAsIDQ1LCAyNDksIDU4LCAyMDMsIDg3LCAxLCAxNzIsIAorICAgIDI0OSwgNTgsIDIwMywgODcsIDEsIDIwMSwgMTExLCAyNDksIDU4LCAyMDMsIDg3LCAxLCA2MiwgMjQ5LCA1OCwgMjAzLCA4NywgCisgICAgMSwgNzQsIDI0OSwgNTgsIDIwMywgODcsIDEsIDIxNywgNjMsIDI0OSwgNTgsIDIwMywgODcsIDEsIDY2LCAyNDksIDU4LCAKKyAgICAyMDMsIDg3LCAxLCAyMzgsIDI1NSwgMjQ5LCA1OCwgMjAzLCA4NywgMSwgNzIsIDI0OSwgNTgsIDIwMywgODcsIDEsIDcwLCAKKyAgICAyNDksIDU4LCAyMDMsIDg3LCAzOCwgMTIyLCAyMDUsIDE3NCwgMjQ5LCA1OCwgMjAzLCA4NywgMzgsIDEyOCwgMjA1LCAxNzQsIAorICAgIDI0OSwgNTgsIDIwMywgODcsIDM4LCAyMjEsIDIwNiwgMjA1LCAxNzQsIDI0OSwgNTgsIDIwMywgODcsIDM4LCAyMjQsIDU2LCAKKyAgICAyMDUsIDE3NCwgMjQ5LCA1OCwgMjAzLCA4NywgMzgsIDIzNCwgNTcsIDIwNSwgMTc0LCAyNDksIDU4LCAyMDMsIDg3LCAyMzYsIAorICAgIDE4MywgMjA4LCA3NiwgMTI1LCAxMjMsIDIyLCAyMjcsIDQsIDEyNSwgMTIzLCAyMiwgMjI3LCAwLCAxMjUsIDEyMywgMjIsIAorICAgIDIyNiwgMTYwLCAxMjUsIDEyMywgMjIsIDIyNiwgMTI2LCAxMjUsIDEyMywgMjIsIDIyNywgMjUsIDEyNSwgMTIzLCAyMiwgCisgICAgMjI3LCAyMiwgMTI1LCAxMjMsIDIyLCAyMjYsIDYsIDEyNSwgMTIzLCAyMiwgMjI1LCAyMzQsIDEyNSwgMTIzLCAyMiwgMjI3LCAKKyAgICA2LCAxMjUsIDEyMywgMjIsIDIyNiwgMjE3LCAxMjUsIDEyMywgMjIsIDIyNywgODEsIDEyNSwgMTIzLCAyMiwgMjI3LCA3OCwgCisgICAgMTI1LCAxMjMsIDIyLCAyMjYsIDY3LCAxMjUsIDEyMywgMjIsIDIyNiwgNjQsIDEyNSwgMTIzLCAyMiwgMjI3LCAxOSwgMTI1LCAKKyAgICAxMjMsIDIyLCAyMjcsIDE3LCAxMjUsIDEyMywgMjIsIDIyNiwgOCwgMTI1LCAxMjMsIDIyLCAyMjYsIDcsIDEyNSwgMTIzLCAKKyAgICAyMiwgMjI2LCA4NSwgMTI1LCAxMjMsIDIyLCAyMjYsIDUzLCAxMjUsIDEyMywgMjIsIDIyNiwgMTYyLCAxMjUsIDEyMywgMjIsIAorICAgIDIyNiwgMTYxLCAxMjUsIDEyMywgMjIsIDIyNywgOTYsIDEyNSwgMTIzLCAyMiwgMjI3LCAyMSwgMTI1LCAxMjMsIDIyLCAKKyAgICAyMjUsIDIyNSwgMTI1LCAxMjMsIDIyLCAyMjUsIDIxNiwgMTI1LCAxMjMsIDIyLCAyMjcsIDEwNCwgMTI1LCAxMjMsIDIyLCAKKyAgICAyMjcsIDk3LCAxMjUsIDEyMywgMTExLCAyMDMsIDY1LCAxMjUsIDEyMywgMTExLCAyMTgsIDEzOSwgMTI1LCAxMjMsIDExMSwgCisgICAgMjI1LCA1OCwgMTI1LCAxMjMsIDExMSwgMjM0LCAxNTAsIDEyNSwgMTIzLCAxMTEsIDIxOSwgMjQsIDEyNSwgMTIzLCAxMTEsIAorICAgIDIxMywgMTk5LCAxMjUsIDEyMywgMTExLCAyMTksIDUxLCAxMjUsIDEyMywgMTExLCAyMTQsIDEzMywgMTI1LCAxMjMsIDExMSwgCisgICAgMjAwLCA2MSwgMTI1LCAxMjMsIDExMSwgMjM0LCAzNiwgMTI1LCAxMjMsIDExMSwgMjIyLCAxMjMsIDEyNSwgMTIzLCAxMTEsIAorICAgIDI0NywgMTIsIDEyNSwgMTIzLCAxMTEsIDIyMCwgNzgsIDEyNSwgMTIzLCAxMTEsIDIzMywgMjI4LCAxMjUsIDEyMywgMTExLCAKKyAgICAyMTUsIDEyMiwgMTI1LCAxMjMsIDExMSwgMjE4LCAxNDQsIDEyNSwgMTIzLCAxMTEsIDIyMCwgMTE2LCAxMjUsIDEyMywgCisgICAgMTExLCAyNTAsIDEzOSwgMTI1LCAxMjMsIDExMSwgMjAwLCAxNzcsIDEyNSwgMTIzLCAxMTEsIDI0NywgMTA5LCAxMjUsIAorICAgIDEyMywgMTM0LCAyNDYsIDE2MSwgMjA0LCAyMTEsIDEyNSwgMTIzLCAxMzQsIDI0NiwgMTYxLCAyMDksIDI5LCAxMjUsIDEyMywgCisgICAgMTM0LCAyNDYsIDE2MSwgMjI2LCAyMzUsIDEyNSwgMTIzLCAxMzQsIDI0NiwgMTYxLCAyMjYsIDE5MywgMTI1LCAxMjMsIAorICAgIDEzNCwgMjQ2LCAxNjEsIDIwOCwgMTgsIDEyNSwgMTIzLCAxMzQsIDI0NiwgMTYxLCAyMzMsIDE5NCwgMTI1LCAxMjMsIDEzNCwgCisgICAgMjQ2LCAxNjEsIDIwNiwgMjIwLCAxMjUsIDEyMywgMiwgMjAyLCAxNzYsIDIwNiwgNTgsIDEyNSwgMTIzLCAyLCAyMDIsIAorICAgIDE3NiwgMjA1LCAyMSwgMjQ3LCA2NywgMTI1LCAxMjMsIDIsIDI0NiwgMTYxLCAyNDcsIDEsIDEyNSwgMTIzLCAyLCAyMDIsIAorICAgIDE3NiwgMjA2LCA4MywgMTI1LCAxMjMsIDIsIDIwMiwgMTc2LCAyMzcsIDEzNywgMTI1LCAxMjMsIDIsIDIwMCwgMTM1LCAKKyAgICAyMTgsIDEzNCwgMTI1LCAxMjMsIDIsIDIwMCwgMTM1LCAyMTMsIDkwLCAxMjUsIDEyMywgMiwgMjAwLCAxMzUsIDIwNSwgCisgICAgMTM3LCAxMjUsIDEyMywgMiwgMjAwLCAxMzUsIDIzNywgMTc2LCAxMjUsIDEyMywgMiwgMjAyLCAxNzYsIDIxMSwgMTg0LCAKKyAgICAxMjUsIDEyMywgMiwgMjIyLCA2MiwgMjA4LCAyMiwgMTI1LCAxMjMsIDIsIDIwMiwgMTc2LCAyMTgsIDE4MywgMTI1LCAxMjMsIAorICAgIDIsIDIzMiwgMjM2LCAyMDAsIDgwLCAxMjUsIDEyMywgMiwgMjAwLCAxNzYsIDEyNSwgMTIzLCAyLCAyNDYsIDE2MSwgMjA1LCAKKyAgICA4LCAyMTIsIDI0NiwgMTI1LCAxMjMsIDE3LCAxOTksIDgxLCAxMjUsIDEyMywgMTcsIDEwMiwgMTI1LCAxMjMsIDE3LCAxMDUsIAorICAgIDEyNSwgMTIzLCAxNywgMTQ3LCAxMjUsIDEyMywgMTcsIDE0OSwgMTI1LCAxMjMsIDE3LCAxNjQsIDEyNSwgMTIzLCAxNywgCisgICAgMTg3LCAxMjUsIDEyMywgMTcsIDIxMCwgMTM1LCAxMjUsIDEyMywgMTcsIDE5MiwgMTI1LCAxMjMsIDE3LCAyMTksIDExMywgCisgICAgMTI1LCAxMjMsIDQxLCAyMDYsIDE2MSwgMTI1LCAxMjMsIDQxLCAyMzMsIDgwLCAxMjUsIDEyMywgNDEsIDIwNiwgMTY3LCAKKyAgICAyMDYsIDQ4LCAxMjUsIDEyMywgNDEsIDIyMSwgMTY3LCAxMjUsIDEyMywgNDEsIDIzMywgODMsIDIyMSwgMTY3LCAxMjUsIAorICAgIDEyMywgNDEsIDIwNiwgMTY3LCAyNDgsIDE3MCwgMTI1LCAxMjMsIDQxLCAyMDUsIDg1LCAxMjUsIDEyMywgMiwgMjAyLCAKKyAgICAxNzYsIDIyNCwgMzcsIDEyNSwgMTIzLCAyLCAyMDAsIDEzMiwgMTI1LCAxMjMsIDIsIDIzNCwgMzEsIDEyNSwgMTIzLCAyLCAKKyAgICAyMDYsIDczLCAyMzQsIDMxLCAxMjUsIDEyMywgMiwgMTk4LCAyNDQsIDIwNiwgMTE2LCAxMjUsIDEyMywgMiwgMjMzLCAyMTIsIAorICAgIDEyNSwgMTIzLCAyLCAyMTgsIDE5NywgMTI1LCAxMjMsIDIsIDIwMCwgMTY4LCAxMjUsIDEyMywgMiwgMjE4LCAxMzcsIDEyNSwgCisgICAgMTIzLCAyLCAyNTAsIDEyMywgMTI1LCAxMjMsIDIsIDIwNCwgMTM2LCAyNDcsIDY2LCAxMjUsIDEyMywgMiwgMjIyLCA2MiwgCisgICAgMjA1LCAyNCwgMTI1LCAxMjMsIDIsIDIwNiwgMjIxLCAxMjUsIDEyMywgMiwgMjI0LCA2NywgMTI1LCAxMjMsIDIsIDIyMCwgCisgICAgMjUyLCAxMjUsIDEyMywgMiwgMjQ2LCAxNjEsIDIzNCwgMjE5LCAyMjQsIDE1LCAyMTgsIDE0MiwgMjE4LCAxNDEsIDEyNSwgCisgICAgMTIzLCAyLCAyNDYsIDE2MSwgMjQyLCAyMTMsIDIwNSwgMTUsIDEyNSwgMTIzLCAyLCAyNDYsIDE2MSwgMjA0LCAxMzQsIAorICAgIDEyNSwgMTIzLCAyLCAyNDYsIDE2MSwgMjA0LCAxMzUsIDI0NiwgMTgwLCAxMjUsIDEyMywgMiwgMjQ2LCAxNjEsIDIxNCwgCisgICAgMjE5LCAyNDEsIDIzNSwgMTI1LCAxMjMsIDIsIDI0NiwgMTYxLCAyMTgsIDE5MCwgMjA1LCAxNDUsIDEyNSwgMTIzLCAyNDYsIAorICAgIDEzMywgMiwgMjA1LCAxOSwgMTI1LCAxMjMsIDI0NiwgMTMzLCAyLCAyMDAsIDQ3LCAxMjUsIDEyMywgMjQ2LCAxMzMsIDIsIAorICAgIDIyNCwgMTU1LCAxMjUsIDEyMywgMjQ2LCAxMzMsIDIsIDIyNSwgNTYsIDEyNSwgMTIzLCAyNDYsIDEzMywgMiwgMjAwLCAKKyAgICAxMzEsIDEyNSwgMTIzLCAyNDYsIDEzMywgMiwgMjI2LCA2OCwgMTI1LCAxMjMsIDI0NiwgMTMzLCAyLCAyMzQsIDE0NywgCisgICAgMTI1LCAxMjMsIDI0NiwgMTMzLCAyLCAyMjEsIDM3LCAxMjUsIDEyMywgMjQ2LCAxMzMsIDIsIDIwNiwgNTksIDEyNSwgMTIzLCAKKyAgICAyNDYsIDEzMywgMiwgMjA1LCAyOSwgMTI1LCAxMjMsIDI0NiwgMTMzLCAyLCAyMTUsIDI0MiwgMTI1LCAxMjMsIDI0NiwgCisgICAgMTMzLCAyLCAyMjYsIDIwNSwgMTI1LCAxMjMsIDI0NiwgMTMzLCAyLCAyMzQsIDIwOSwgMTI1LCAxMjMsIDI0NiwgMTMzLCAyLCAKKyAgICAyMDMsIDg0LCAxMjUsIDEyMywgMjQ2LCAxMzMsIDIsIDIzNywgMTczLCAxMjUsIDEyMywgMjQ2LCAxMzMsIDIsIDIwMCwgODcsIAorICAgIDEyNSwgMTIzLCAyNDYsIDEzMywgMiwgMjA1LCAyLCAxMjUsIDEyMywgMjQ2LCAxMzMsIDIsIDIyNSwgMjIwLCAxMjUsIDEyMywgCisgICAgMjQ2LCAxMzMsIDIsIDIwMSwgMTU2LCAxMTQsIDEsIDE3MiwgMTE0LCAxLCAyNDksIDEzNiwgMTE0LCAxLCAxMSwgMTcyLCAKKyAgICAxMTQsIDEsIDIxNSwgMTM1LCAxMTQsIDEsIDE3OCwgMTE0LCAxLCAyMjEsIDIxNCwgMTE0LCAxLCAyNTAsIDIzNCwgMTc4LCAKKyAgICAxMTQsIDEsIDIzNywgMTk1LCAxMTQsIDEsIDIwMywgOTAsIDExNCwgMSwgMjAyLCAyMzUsIDExNCwgMSwgMjA3LCAzNiwgCisgICAgMTE0LCAxLCAyNDIsIDU4LCAxMTQsIDEsIDExLCAyMDQsIDI1MywgMTE0LCAxLCAxMSwgMjA3LCAzNiwgMTE0LCAxLCAyMDQsIAorICAgIDI1MywgMTE0LCAxLCAyNDEsIDIyMCwgMTE0LCAxLCAxODgsIDExNCwgMSwgMjE5LCAxNTQsIDExNCwgMSwgMTEsIDIxOSwgCisgICAgMjEsIDExNCwgMSwgMjUwLCAyMzQsIDE4OCwgMTE0LCAxLCAyMTksIDIxLCAxMTQsIDEsIDIxOSwgNywgMTE0LCAxLCAxOTQsIAorICAgIDExNCwgMSwgMjI0LCAxLCAxMTQsIDEsIDIyNCwgMjIzLCAxMTQsIDEsIDIyNCwgMjEyLCAxMTQsIDEsIDIwNSwgMjAwLCAKKyAgICAxMTQsIDEsIDI0MCwgMjE5LCAxMTQsIDEsIDIwNSwgMTkyLCAxMTQsIDEsIDI0MCwgMjE4LCAxMTQsIDEsIDE2MSwgMTE0LCAKKyAgICAxLCAyMzYsIDg5LCAxMTQsIDEsIDExLCAxNjEsIDExNCwgMSwgMjE0LCAxNTksIDExNCwgMSwgMjE0LCAxMzYsIDExNCwgMSwgCisgICAgMjE5LCAyNTMsIDExNCwgMSwgMjE5LCAyMDIsIDExNCwgMSwgMjUwLCAyMzQsIDIxOSwgMjUzLCAxMTQsIDEsIDE0NCwgMTE0LCAKKyAgICAxLCAyMDAsIDE4MSwgMTE0LCAxLCAyMzUsIDE5OSwgMTE0LCAxLCAyMzUsIDE3NCwgMTE0LCAxLCAyMDUsIDcsIDExNCwgMSwgCisgICAgMjM5LCA3NywgMTE0LCAxLCAyMTgsIDYwLCAxMTQsIDEsIDIxOCwgNDMsIDExNCwgMSwgMjA1LCAyMiwgMTE0LCAxLCAyMzksIAorICAgIDg3LCAxMTQsIDEsIDExLCAyMDUsIDIyLCAxMTQsIDEsIDExLCAyMzksIDg3LCAxMTQsIDEsIDIxMywgMTY1LCAyMDUsIDIyLCAKKyAgICAxMTQsIDEsIDIxMCwgMTE0LCAxMTQsIDEsIDIwOCwgMTc5LCAxMTQsIDEsIDE5OSwgNzcsIDExNCwgMSwgMTk5LCA1LCAxMTQsIAorICAgIDEsIDIwNSwgMzIsIDExNCwgMSwgMjM5LCA5MywgMTE0LCAxLCAxMSwgMjA1LCAzMiwgMTE0LCAxLCAyMTIsIDY0LCAxMTQsIAorICAgIDEsIDE5OSwgMTE0LCAxMTQsIDEsIDE5OSwgNiwgMTE0LCAxLCAxOTgsIDIzMiwgMTE0LCAxLCAxOTgsIDIxMiwgMTE0LCAxLCAKKyAgICAyNTAsIDIzNCwgMTk4LCAyMzIsIDExNCwgMSwgMTk4LCAyMDQsIDExNCwgMSwgMTk4LCAyMTEsIDExNCwgMSwgMjAxLCAxMTQsIAorICAgIDExNCwgMSwgMjUxLCAxODUsIDExNCwgMSwgMjM0LCA4NCwgMTE0LCAxLCAyMjAsIDEyMSwgMTE0LCAyLCAyNTAsIDE3MSwgCisgICAgMTE0LCAyLCAyMTMsIDE2NSwgMjAyLCAxODcsIDExNCwgMiwgMjEzLCAxNjUsIDI1MCwgMTcxLCAxMTQsIDIyLCAyLCA2MiwgCisgICAgMTE0LCAyMiwgMiwgMjUyLCAxMzgsIDExNCwgMjIsIDIsIDI1MSwgMTgxLCAxMTQsIDIyLCAyLCAyNTEsIDg1LCAxMTQsIDIyLCAKKyAgICAyLCAyNTEsIDc2LCAxMTQsIDIyLCAyLCA3NCwgMTE0LCAyMiwgMiwgMjE3LCA2MywgMTE0LCAyMiwgMiwgMjAxLCAwLCAxMTQsIAorICAgIDIyLCAyLCAyMDEsIDE0NywgMTE0LCAyMiwgMiwgNzIsIDExNCwgMjIsIDIsIDIzOCwgMTc5LCAxMTQsIDIyLCAyLCAyMzgsIAorICAgIDE2NSwgMTE0LCAyMiwgMiwgMjE3LCAxMTgsIDExNCwgMjIsIDIsIDcwLCAxMTQsIDIyLCAyLCAyMzIsIDI0MCwgMTE0LCAyMiwgCisgICAgMiwgMjMyLCAyMzksIDExNCwgMjIsIDIsIDIzMiwgMjM4LCAxMTQsIDIyLCAyLCAyMjgsIDQ1LCAxMTQsIDIyLCAyLCAyMjgsIAorICAgIDE3OCwgMTE0LCAyMiwgMiwgMjI4LCAxNTEsIDExNCwgMjIsIDIsIDIyOCwgOCwgMTE0LCAyMiwgMiwgMjI4LCA5MSwgMTE0LCAKKyAgICAyMiwgMiwgNjYsIDExNCwgMjIsIDIsIDIwNCwgNDYsIDExNCwgMjIsIDIsIDIwNCwgNDUsIDExNCwgMjIsIDIsIDIwNCwgNDQsIAorICAgIDExNCwgMjIsIDIsIDIwMywgMTgyLCAxMTQsIDIyLCAyLCAyMDQsIDI4LCAxMTQsIDIyLCAyLCAyMDMsIDI0NiwgMTE0LCAyMiwgCisgICAgMiwgMjAwLCAxMjMsIDExNCwgMjIsIDIsIDIwMCwgOSwgMTE0LCAyMiwgMiwgMjUxLCAyMjEsIDExNCwgMjIsIDIsIDI1MSwgCisgICAgMjE3LCAxMTQsIDIyLCAyLCAyMzgsIDEwOCwgMTE0LCAyMiwgMiwgMjEyLCAyMTksIDIzOCwgMTA4LCAxMTQsIDIyLCAyLCAKKyAgICAyMzgsIDExNSwgMTE0LCAyMiwgMiwgMjEyLCAyMTksIDIzOCwgMTE1LCAxMTQsIDIyLCAyLCAyNTEsIDE3NiwgMTE0LCAyMiwgCisgICAgMiwgMjM4LCAyMzQsIDExNCwgMjIsIDIsIDI1MCwgMTM5LCAxMTQsIDIyLCAyLCAyMTcsIDMsIDExNCwgMjIsIDIsIDIyMCwgCisgICAgMjE0LCAxMTQsIDIyLCAyLCAyMTksIDI1NSwgMTE0LCAxNTAsIDIxMywgNDYsIDExNCwgMTUwLCAyMDUsIDE1OCwgMjEzLCAKKyAgICA0NiwgMTE0LCAxNTAsIDU2LCAxMTQsIDE1MCwgNTcsIDExNCwgMSwgMjA1LCAxNzIsIDExNCwgMSwgMjA1LCAxNzEsIDExNCwgCisgICAgMSwgMjA1LCAxNzAsIDExNCwgMSwgMjA1LCAxNjksIDExNCwgMSwgMjA1LCAxNjgsIDExNCwgMSwgMjA1LCAxNjcsIDExNCwgCisgICAgMSwgMjA1LCAxNjYsIDExNCwgMSwgMjEzLCAxNjUsIDIwNSwgMTczLCAxMTQsIDEsIDIxMywgMTY1LCAyMDUsIDE3MiwgMTE0LCAKKyAgICAxLCAyMTMsIDE2NSwgMjA1LCAxNzAsIDExNCwgMSwgMjEzLCAxNjUsIDIwNSwgMTY5LCAxMTQsIDEsIDIxMywgMTY1LCAyMDUsIAorICAgIDE2OCwgMTE0LCAxLCAyMTMsIDE2NSwgMjA1LCAxNjYsIDE4LCAyMjgsIDEwLCA4MSwgMTgsIDI0NiwgNjEsIDE4LCAyNDYsIAorICAgIDYwLCAxOCwgMjQ2LCA1OSwgMTgsIDI0NiwgNTgsIDE4LCAyNDYsIDU3LCAxOCwgMjQ2LCA1NiwgMTgsIDI0NiwgNTUsIDE4LCAKKyAgICAyNDYsIDU0LCAxOCwgMjQ2LCA1MywgMTgsIDI0NiwgNTIsIDE4LCAyNDYsIDUxLCAxOCwgMjQ2LCA1MCwgMTgsIDI0NiwgNDksIAorICAgIDE4LCAyNDYsIDQ4LCAxOCwgMjQ2LCA0NywgMTgsIDI0NiwgNDYsIDE4LCAyNDYsIDQ1LCAxOCwgMjQ2LCA0NCwgMTgsIDI0NiwgCisgICAgNDMsIDE4LCAyNDYsIDQyLCAxOCwgMjQ2LCA0MSwgMTgsIDI0NiwgNDAsIDE4LCAyNDYsIDM5LCAxOCwgMjQ2LCAzOCwgMTgsIAorICAgIDI0NiwgMzcsIDE4LCAyNDYsIDM2LCAxOCwgMjQ2LCAzNSwgMTgsIDI0NiwgMzQsIDE4LCAyNDYsIDMzLCAxOCwgMjQ2LCAzMiwgCisgICAgMTgsIDI0NiwgMzEsIDE4LCAyNDYsIDMwLCAxOCwgMjQ2LCAyOSwgMTgsIDI0NiwgMjgsIDE4LCAyNDYsIDI3LCAxOCwgMjQ2LCAKKyAgICAyNiwgMTgsIDI0NiwgMjUsIDE4LCAyNDYsIDI0LCAxOCwgMjQ2LCAyMywgMTgsIDI0NiwgMjIsIDE4LCAyNDYsIDIxLCAxOCwgCisgICAgMjQ2LCAyMCwgMTgsIDI0NiwgMTksIDE4LCAyNDYsIDE4LCAxOCwgMjQ2LCAxNywgMTgsIDI0NiwgMTYsIDE4LCAyNDYsIDE1LCAKKyAgICAxOCwgMjQ2LCAxNCwgMTgsIDI0NiwgMTMsIDE4LCAyNDYsIDEyLCAxOCwgMjQ2LCAxMSwgMTgsIDI0NiwgMTAsIDE4LCAyNDYsIAorICAgIDksIDE4LCAyNDYsIDgsIDE4LCAyNDYsIDcsIDE4LCAyNDYsIDYsIDE4LCAyNDYsIDUsIDE4LCAyNDYsIDQsIDE4LCAyNDYsIAorICAgIDMsIDE4LCAyNDYsIDIsIDE4LCAyNDYsIDEsIDE4LCAyNDYsIDAsIDE4LCAyNDUsIDI1NSwgMTgsIDI0NSwgMjU0LCAxOCwgCisgICAgMjQ1LCAyNTMsIDE4LCAyNDUsIDI1MiwgMTgsIDI0NSwgMjUxLCAxOCwgMjQ1LCAyNTAsIDE4LCAyNDUsIDI0OSwgMTgsIAorICAgIDI0NSwgMjQ4LCAxOCwgMjQ1LCAyNDcsIDE4LCAyNDUsIDI0NiwgMTgsIDI0NSwgMjQ1LCAxOCwgMjQ1LCAyNDQsIDE4LCAKKyAgICAyNDUsIDI0MywgMTgsIDI0NSwgMjQyLCAxOCwgMjQ1LCAyNDEsIDE4LCAyNDUsIDI0MCwgMTgsIDI0NSwgMjM5LCAxOCwgCisgICAgMjQ1LCAyMzgsIDE4LCAyNDUsIDIzNywgMTgsIDI0NSwgMjM2LCAxOCwgMjQ1LCAyMzUsIDE4LCAyNDUsIDIzNCwgMTgsIAorICAgIDI0NSwgMjMzLCAxOCwgMjQ1LCAyMzIsIDE4LCAyNDUsIDIzMSwgMTgsIDI0NSwgMjMwLCAxOCwgMjQ1LCAyMjksIDE4LCAKKyAgICAyNDUsIDIyOCwgMTgsIDI0NSwgMjI3LCAxOCwgMjQ1LCAyMjYsIDE4LCAyNDUsIDIyNSwgMTgsIDI0NSwgMjI0LCAxOCwgCisgICAgMjQ1LCAyMjMsIDE4LCAyNDUsIDIyMiwgMTgsIDI0NSwgMjIxLCAxOCwgMjQ1LCAyMjAsIDE4LCAyNDUsIDIxOSwgMTgsIAorICAgIDI0NSwgMjE4LCAxOCwgMjQ1LCAyMTcsIDE4LCAyNDUsIDIxNiwgMTgsIDI0NSwgMjE1LCAxOCwgMjQ1LCAyMTQsIDE4LCAKKyAgICAyNDUsIDIxMywgMTgsIDI0NSwgMjEyLCAxOCwgMjQ1LCAyMTEsIDE4LCAyNDUsIDIxMCwgMTgsIDI0NSwgMjA5LCAxOCwgCisgICAgMjQ1LCAyMDgsIDE4LCAyNDUsIDIwNywgMTgsIDI0NSwgMjA2LCAxOCwgMjQ1LCAyMDUsIDE4LCAyNDUsIDIwNCwgMTgsIAorICAgIDI0NSwgMjAzLCAxOCwgMjQ1LCAyMDIsIDE4LCAyNDUsIDIwMSwgMTgsIDI0NSwgMjAwLCAxOCwgMjQ1LCAxOTksIDE4LCAKKyAgICAyNDUsIDE5OCwgMTgsIDI0NSwgMTk3LCAxOCwgMjQ1LCAxOTYsIDE4LCAyNDUsIDE5NSwgMTgsIDI0NSwgMTk0LCAxOCwgCisgICAgMjQ1LCAxOTMsIDE4LCAyNDUsIDE5MiwgMTgsIDI0NSwgMTkxLCAxOCwgMjQ1LCAxOTAsIDE4LCAyNDUsIDE4OSwgMTgsIAorICAgIDI0NSwgMTg4LCAxOCwgMjQ1LCAxODcsIDE4LCAyNDUsIDE4NiwgMTgsIDI0NSwgMTg1LCAxOCwgMjQ1LCAxODQsIDE4LCAKKyAgICAyNDUsIDE4MywgMTgsIDI0NSwgMTgyLCAxOCwgMjQ1LCAxODEsIDE4LCAyNDUsIDE4MCwgMTgsIDI0NSwgMTc5LCAxOCwgCisgICAgMjQ1LCAxNzgsIDE4LCAyNDUsIDE3NywgMTgsIDI0NSwgMTc2LCAxOCwgMjQ1LCAxNzUsIDE4LCAyNDUsIDE3NCwgMTgsIAorICAgIDI0NSwgMTczLCAxOCwgMjQ1LCAxNzIsIDE4LCAyNDUsIDE3MSwgMTgsIDI0NSwgMTcwLCAxOCwgMjQ1LCAxNjksIDE4LCAKKyAgICAyNDUsIDE2OCwgMTgsIDI0NSwgMTY3LCAxOCwgMjQ1LCAxNjYsIDE4LCAyNDUsIDE2NSwgMTgsIDI0NSwgMTY0LCAxOCwgCisgICAgMjQ1LCAxNjMsIDE4LCAyNDUsIDE2MiwgMTgsIDI0NSwgMTYxLCAxOCwgMjQ1LCAxNjAsIDE4LCAyNDUsIDE1OSwgMTgsIAorICAgIDI0NSwgMTU4LCAxOCwgMjQ1LCAxNTcsIDE4LCAyNDUsIDE1NiwgMTgsIDI0NSwgMTU1LCAxOCwgMjQ1LCAxNTQsIDE4LCAKKyAgICAyNDUsIDE1MywgMTgsIDI0NSwgMTUyLCAxOCwgMjQ1LCAxNTEsIDE4LCAyNDUsIDE1MCwgMTgsIDI0NSwgMTQ5LCAxOCwgCisgICAgMjQ1LCAxNDgsIDE4LCAyNDUsIDE0NywgMTgsIDI0NSwgMTQ2LCAxOCwgMjQ1LCAxNDUsIDE4LCAyNDUsIDE0NCwgMTgsIAorICAgIDI0NSwgMTQzLCAxOCwgMjQ1LCAxNDIsIDE4LCAyNDUsIDE0MSwgMTgsIDI0NSwgMTQwLCAxOCwgMjQ1LCAxMzksIDE4LCAKKyAgICAyNDUsIDEzOCwgMTgsIDI0NSwgMTM3LCAxOCwgMjQ1LCAxMzYsIDE4LCAyNDUsIDEzNSwgMTgsIDI0NSwgMTM0LCAxOCwgCisgICAgMjQ1LCAxMzMsIDE4LCAyNDUsIDEzMiwgMTgsIDI0NSwgMTMxLCAxOCwgMjQ1LCAxMzAsIDE4LCAyNDUsIDEyOSwgMTgsIAorICAgIDI0NSwgMTI4LCAxOCwgMjQ1LCAxMjcsIDE4LCAyNDUsIDEyNiwgMTgsIDI0NSwgMTI1LCAxOCwgMjQ1LCAxMjQsIDE4LCAKKyAgICAyNDUsIDEyMywgMTgsIDI0NSwgMTIyLCAxOCwgMjQ1LCAxMjEsIDE4LCAyNDUsIDEyMCwgMTgsIDI0NSwgMTE5LCAxOCwgCisgICAgMjQ1LCAxMTgsIDE4LCAyNDUsIDExNywgMTgsIDI0NSwgMTE2LCAxOCwgMjQ1LCAxMTUsIDE4LCAyNDUsIDExNCwgMTgsIAorICAgIDI0NSwgMTEzLCAxOCwgMjQ1LCAxMTIsIDE4LCAyNDUsIDExMSwgMTgsIDI0NSwgMTEwLCAxOCwgMjQ1LCAxMDksIDE4LCAKKyAgICAyNDUsIDEwOCwgMTgsIDI0NSwgMTA3LCAxOCwgMjQ1LCAxMDYsIDE4LCAyNDUsIDEwNSwgMTgsIDI0NSwgMTA0LCAxOCwgCisgICAgMjQ1LCAxMDMsIDE4LCAyNDUsIDEwMiwgMTgsIDI0NSwgMTAxLCAxOCwgMjQ1LCAxMDAsIDE4LCAyNDUsIDk5LCAxOCwgMjQ1LCAKKyAgICA5OCwgMTgsIDI0NSwgOTcsIDE4LCAyNDUsIDk2LCAxOCwgMjQ1LCA5NSwgMTgsIDI0NSwgOTQsIDE4LCAyNDUsIDkzLCAxOCwgCisgICAgMjQ1LCA5MiwgMTgsIDI0NSwgOTEsIDE4LCAyNDUsIDkwLCAxOCwgMjQ1LCA4OSwgMTgsIDI0NSwgODgsIDE4LCAyNDUsIDg3LCAKKyAgICAxOCwgMjQ1LCA4NiwgMTgsIDI0NSwgODUsIDE4LCAyNDUsIDg0LCAxOCwgMjQ1LCA4MywgMTgsIDI0NSwgODIsIDE4LCAyNDUsIAorICAgIDgxLCAxOCwgMjQ1LCA4MCwgMTgsIDI0NSwgNzksIDE4LCAyNDUsIDc4LCAxOCwgMjQ1LCA3NywgMTgsIDI0NSwgNzYsIDE4LCAKKyAgICAyNDUsIDc1LCAxOCwgMjQ1LCA3NCwgMTgsIDI0NSwgNzMsIDE4LCAyNDUsIDcyLCAxOCwgMjQ1LCA3MSwgMTgsIDI0NSwgNzAsIAorICAgIDE4LCAyNDUsIDY5LCAxOCwgMjQ1LCA2OCwgMTgsIDI0NSwgNjcsIDE4LCAyNDUsIDY2LCAxOCwgMjQ1LCA2NSwgMTgsIDI0NSwgCisgICAgNjQsIDE4LCAyNDUsIDYzLCAxOCwgMjQ1LCA2MiwgMTgsIDI0NSwgNjEsIDE4LCAyNDUsIDYwLCAxOCwgMjQ1LCA1OSwgMTgsIAorICAgIDI0NSwgNTgsIDE4LCAyNDUsIDU3LCAxOCwgMjQ1LCA1NiwgMTgsIDI0NSwgNTUsIDE4LCAyNDUsIDU0LCAxOCwgMjQ1LCA1MywgCisgICAgMTgsIDI0NSwgNTIsIDE4LCAyNDUsIDUxLCAxOCwgMjQ1LCA1MCwgMTgsIDI0NSwgNDksIDE4LCAyNDUsIDQ4LCAxOCwgMjQ1LCAKKyAgICA0NywgMTgsIDI0NSwgNDYsIDE4LCAyNDUsIDQ1LCAxOCwgMjQ1LCA0NCwgMTgsIDI0NSwgNDMsIDE4LCAyNDUsIDQyLCAxOCwgCisgICAgMjQ1LCA0MSwgMTgsIDI0NSwgNDAsIDE4LCAyNDUsIDM5LCAxOCwgMjQ1LCAzOCwgMTgsIDI0NSwgMzcsIDE4LCAyNDUsIDM2LCAKKyAgICAxOCwgMjQ1LCAzNSwgMTgsIDI0NSwgMzQsIDE4LCAyNDUsIDMzLCAxOCwgMjQ1LCAzMiwgMTgsIDI0NSwgMzEsIDE4LCAyNDUsIAorICAgIDMwLCAxOCwgMjQ1LCAyOSwgMTgsIDI0NSwgMjgsIDE4LCAyNDUsIDI3LCAxOCwgMjQ1LCAyNiwgMTgsIDI0NSwgMjUsIDE4LCAKKyAgICAyNDUsIDI0LCAxOCwgMjQ1LCAyMywgMTgsIDI0NSwgMjIsIDE4LCAyNDUsIDIxLCAxOCwgMjQ1LCAyMCwgMTgsIDI0NSwgMTksIAorICAgIDE4LCAyNDUsIDE4LCAxOCwgMjQ1LCAxNywgMTgsIDI0NSwgMTYsIDE4LCAyNDUsIDE1LCAxOCwgMjQ1LCAxNCwgMTgsIDI0NSwgCisgICAgMTMsIDE4LCAyNDUsIDEyLCAxOCwgMjQ1LCAxMSwgMTgsIDI0NSwgMTAsIDE4LCAyNDUsIDksIDE4LCAyNDUsIDgsIDE4LCAKKyAgICAyNDUsIDcsIDE4LCAyNDUsIDYsIDE4LCAyNDUsIDUsIDE4LCAyNDUsIDQsIDE4LCAyNDUsIDMsIDE4LCAyNDUsIDIsIDE4LCAKKyAgICAyNDUsIDEsIDE4LCAyNDUsIDAsIDE4LCAyNDQsIDI1NSwgMTgsIDI0NCwgMjU0LCAxOCwgMjQ0LCAyNTMsIDE4LCAyNDQsIAorICAgIDI1MiwgMTgsIDI0NCwgMjUxLCAxOCwgMjQ0LCAyNTAsIDE4LCAyNDQsIDI0OSwgMTgsIDI0NCwgMjQ4LCAxOCwgMjQ0LCAKKyAgICAyNDcsIDE4LCAyNDQsIDI0NiwgMTgsIDI0NCwgMjQ1LCAxOCwgMjQ0LCAyNDQsIDE4LCAyNDQsIDI0MywgMTgsIDI0NCwgCisgICAgMjQyLCAxOCwgMjQ0LCAyNDEsIDE4LCAyNDQsIDI0MCwgMTgsIDI0NCwgMjM5LCAxOCwgMjQ0LCAyMzgsIDE4LCAyNDQsIAorICAgIDIzNywgMTgsIDI0NCwgMjM2LCAxOCwgMjQ0LCAyMzUsIDE4LCAyNDQsIDIzNCwgMTgsIDI0NCwgMjMzLCAxOCwgMjQ0LCAKKyAgICAyMzIsIDE4LCAyNDQsIDIzMSwgMTgsIDI0NCwgMjMwLCAxOCwgMjQ0LCAyMjksIDE4LCAyNDQsIDIyOCwgMTgsIDI0NCwgCisgICAgMjI3LCAxOCwgMjQ0LCAyMjYsIDE4LCAyNDQsIDIyNSwgMTgsIDI0NCwgMjI0LCAxOCwgMjQ0LCAyMjMsIDE4LCAyNDQsIAorICAgIDIyMiwgMTgsIDI0NCwgMjIxLCAxOCwgMjQ0LCAyMjAsIDE4LCAyNDQsIDIxOSwgMTgsIDI0NCwgMjE4LCAxOCwgMjQ0LCAKKyAgICAyMTcsIDE4LCAyNDQsIDIxNiwgMTgsIDI0NCwgMjE1LCAxOCwgMjQ0LCAyMTQsIDE4LCAyNDQsIDIxMywgMTgsIDI0NCwgCisgICAgMjEyLCAxOCwgMjQ0LCAyMTEsIDE4LCAyNDQsIDIxMCwgMTgsIDI0NCwgMjA5LCAxOCwgMjQ0LCAyMDgsIDE4LCAyNDQsIAorICAgIDIwNywgMTgsIDI0NCwgMjA2LCAxOCwgMjQ0LCAyMDUsIDE4LCAyNDQsIDIwNCwgMTgsIDI0NCwgMjAzLCAxOCwgMjQ0LCAKKyAgICAyMDIsIDE4LCAyNDQsIDIwMSwgMTgsIDI0NCwgMjAwLCAxOCwgMjQ0LCAxOTksIDE4LCAyNDQsIDE5OCwgMTgsIDI0NCwgCisgICAgMTk3LCAxOCwgMjQ0LCAxOTYsIDE4LCAyNDQsIDE5NSwgMTgsIDI0NCwgMTk0LCAxOCwgMjQ0LCAxOTMsIDE4LCAyNDQsIAorICAgIDE5MiwgMTgsIDI0NCwgMTkxLCAxOCwgMjQ0LCAxOTAsIDE4LCAyNDQsIDE4OSwgMTgsIDI0NCwgMTg4LCAxOCwgMjQ0LCAKKyAgICAxODcsIDE4LCAyNDQsIDE4NiwgMTgsIDI0NCwgMTg1LCAxOCwgMjQ0LCAxODQsIDE4LCAyNDQsIDE4MywgMTgsIDI0NCwgCisgICAgMTgyLCAxOCwgMjQ0LCAxODEsIDE4LCAyNDQsIDE4MCwgMTgsIDI0NCwgMTc5LCAxOCwgMjQ0LCAxNzgsIDE4LCAyNDQsIAorICAgIDE3NywgMTgsIDI0NCwgMTc2LCAxOCwgMjQ0LCAxNzUsIDE4LCAyNDQsIDE3NCwgMTgsIDI0NCwgMTczLCAxOCwgMjQ0LCAKKyAgICAxNzIsIDE4LCAyNDQsIDE3MSwgMTgsIDI0NCwgMTcwLCAxOCwgMjQ0LCAxNjksIDE4LCAyNDQsIDE2OCwgMTgsIDI0NCwgCisgICAgMTY3LCAxOCwgMjQ0LCAxNjYsIDE4LCAyNDQsIDE2NSwgMTgsIDI0NCwgMTY0LCAxOCwgMjQ0LCAxNjMsIDE4LCAyNDQsIAorICAgIDE2MiwgMTgsIDI0NCwgMTYxLCAxOCwgMjQ0LCAxNjAsIDE4LCAyNDQsIDE1OSwgMTgsIDI0NCwgMTU4LCAxOCwgMjQ0LCAKKyAgICAxNTcsIDE4LCAyNDQsIDE1NiwgMTgsIDI0NCwgMTU1LCAxOCwgMjQ0LCAxNTQsIDE4LCAyNDQsIDE1MywgMTgsIDI0NCwgCisgICAgMTUyLCAxOCwgMjQ0LCAxNTEsIDE4LCAyNDQsIDE1MCwgMTgsIDI0NCwgMTQ5LCAxOCwgMjQ0LCAxNDgsIDE4LCAyNDQsIAorICAgIDE0NywgMTgsIDI0NCwgMTQ2LCAxOCwgMjQ0LCAxNDUsIDE4LCAyNDQsIDE0NCwgMTgsIDI0NCwgMTQzLCAxOCwgMjQ0LCAKKyAgICAxNDIsIDE4LCAyNDQsIDE0MSwgMTgsIDI0NCwgMTQwLCAxOCwgMjQ0LCAxMzksIDE4LCAyNDQsIDEzOCwgMTgsIDI0NCwgCisgICAgMTM3LCAxOCwgMjQ0LCAxMzYsIDE4LCAyNDQsIDEzNSwgMTgsIDI0NCwgMTM0LCAxOCwgMjQ0LCAxMzMsIDE4LCAyNDQsIAorICAgIDEzMiwgMTgsIDI0NCwgMTMxLCAxOCwgMjQ0LCAxMzAsIDE4LCAyNDQsIDEyOSwgMTgsIDI0NCwgMTI4LCAxOCwgMjQ0LCAKKyAgICAxMjcsIDE4LCAyNDQsIDEyNiwgMTgsIDI0NCwgMTI1LCAxOCwgMjQ0LCAxMjQsIDE4LCAyNDQsIDEyMywgMTgsIDI0NCwgCisgICAgMTIyLCAxOCwgMjQ0LCAxMjEsIDE4LCAyNDQsIDEyMCwgMTgsIDI0NCwgMTE5LCAxOCwgMjQ0LCAxMTgsIDE4LCAyNDQsIAorICAgIDExNywgMTgsIDI0NCwgMTE2LCAxOCwgMjQ0LCAxMTUsIDE4LCAyNDQsIDExNCwgMTgsIDI0NCwgMTEzLCAxOCwgMjQ0LCAKKyAgICAxMTIsIDE4LCAyNDQsIDExMSwgMTgsIDI0NCwgMTEwLCAxOCwgMjQ0LCAxMDksIDE4LCAyNDQsIDEwOCwgMTgsIDI0NCwgCisgICAgMTA3LCAxOCwgMjQ0LCAxMDYsIDE4LCAyNDQsIDEwNSwgMTgsIDI0NCwgMTA0LCAxOCwgMjQ0LCAxMDMsIDE4LCAyNDQsIAorICAgIDEwMiwgMTgsIDI0NCwgMTAxLCAxOCwgMjQ0LCAxMDAsIDE4LCAyNDQsIDk5LCAxOCwgMjQ0LCA5OCwgMTgsIDI0NCwgOTcsIAorICAgIDE4LCAyNDQsIDk2LCAxOCwgMjQ0LCA5NSwgMTgsIDI0NCwgOTQsIDE4LCAyNDQsIDkzLCAxOCwgMjQ0LCA5MiwgMTgsIDI0NCwgCisgICAgOTEsIDE4LCAyNDQsIDkwLCAxOCwgMjQ0LCA4OSwgMTgsIDI0NCwgODgsIDE4LCAyNDQsIDg3LCAxOCwgMjQ0LCA4NiwgMTgsIAorICAgIDI0NCwgODUsIDE4LCAyNDQsIDg0LCAxOCwgMjQ0LCA4MywgMTgsIDI0NCwgODIsIDE4LCAyNDQsIDgxLCAxOCwgMjQ0LCA4MCwgCisgICAgMTgsIDI0NCwgNzksIDE4LCAyNDQsIDc4LCAxOCwgMjQ0LCA3NywgMTgsIDI0NCwgNzYsIDE4LCAyNDQsIDc1LCAxOCwgMjQ0LCAKKyAgICA3NCwgMTgsIDI0NCwgNzMsIDE4LCAyNDQsIDcyLCAxOCwgMjQ0LCA3MSwgMTgsIDI0NCwgNzAsIDE4LCAyNDQsIDY5LCAxOCwgCisgICAgMjQ0LCA2OCwgMTgsIDI0NCwgNjcsIDE4LCAyNDQsIDY2LCAxOCwgMjQ0LCA2NSwgMTgsIDI0NCwgNjQsIDE4LCAyNDQsIDYzLCAKKyAgICAxOCwgMjQ0LCA2MiwgMTgsIDI0NCwgNjEsIDE4LCAyNDQsIDYwLCAxOCwgMjQ0LCA1OSwgMTgsIDI0NCwgNTgsIDE4LCAyNDQsIAorICAgIDU3LCAxOCwgMjQ0LCA1NiwgMTgsIDI0NCwgNTUsIDE4LCAyNDQsIDU0LCAxOCwgMjQ0LCA1MywgMTgsIDI0NCwgNTIsIDE4LCAKKyAgICAyNDQsIDUxLCAxOCwgMjQ0LCA1MCwgMTgsIDI0NCwgNDksIDE4LCAyNDQsIDQ4LCAxOCwgMjQ0LCA0NywgMTgsIDI0NCwgNDYsIAorICAgIDE4LCAyNDQsIDQ1LCAxOCwgMjQ0LCA0NCwgMTgsIDI0NCwgNDMsIDE4LCAyNDQsIDQyLCAxOCwgMjQ0LCA0MSwgMTgsIDI0NCwgCisgICAgNDAsIDE4LCAyNDQsIDM5LCAxOCwgMjQ0LCAzOCwgMTgsIDI0NCwgMzcsIDE4LCAyNDQsIDM2LCAxOCwgMjQ0LCAzNSwgMTgsIAorICAgIDI0NCwgMzQsIDE4LCAyNDQsIDMzLCAxOCwgMjQ0LCAzMiwgMTgsIDI0NCwgMzEsIDE4LCAyNDQsIDMwLCAxOCwgMjQ0LCAyOSwgCisgICAgMTgsIDI0NCwgMjgsIDE4LCAyNDQsIDI3LCAxOCwgMjQ0LCAyNiwgMTgsIDI0NCwgMjUsIDE4LCAyNDQsIDI0LCAxOCwgMjQ0LCAKKyAgICAyMywgMTgsIDI0NCwgMjIsIDE4LCAyNDQsIDIxLCAxOCwgMjQ0LCAyMCwgMTgsIDI0NCwgMTksIDE4LCAyNDQsIDE4LCAxOCwgCisgICAgMjQ0LCAxNywgMTgsIDI0NCwgMTYsIDE4LCAyNDQsIDE1LCAxOCwgMjQ0LCAxNCwgMTgsIDI0NCwgMTMsIDE4LCAyNDQsIDEyLCAKKyAgICAxOCwgMjQ0LCAxMSwgMTgsIDI0NCwgMTAsIDE4LCAyNDQsIDksIDE4LCAyNDQsIDgsIDE4LCAyNDQsIDcsIDE4LCAyNDQsIDYsIAorICAgIDE4LCAyNDQsIDUsIDE4LCAyNDQsIDQsIDE4LCAyNDQsIDMsIDE4LCAyNDQsIDIsIDE4LCAyNDQsIDEsIDE4LCAyNDQsIDAsIAorICAgIDE4LCAyNDMsIDI1NSwgMTgsIDI0MywgMjU0LCAxOCwgMjQzLCAyNTMsIDE4LCAyNDMsIDI1MiwgMTgsIDI0MywgMjUxLCAxOCwgCisgICAgMjQzLCAyNTAsIDE4LCAyNDMsIDI0OSwgMTgsIDI0MywgMjQ4LCAxOCwgMjQzLCAyNDcsIDE4LCAyNDMsIDI0NiwgMTgsIAorICAgIDI0MywgMjQ1LCAxOCwgMjQzLCAyNDQsIDE4LCAyNDMsIDI0MywgMTgsIDI0MywgMjQyLCAxOCwgMjQzLCAyNDEsIDE4LCAKKyAgICAyNDMsIDI0MCwgMTgsIDI0MywgMjM5LCAxOCwgMjQzLCAyMzgsIDE4LCAyNDMsIDIzNywgMTgsIDI0MywgMjM2LCAxOCwgCisgICAgMjQzLCAyMzUsIDE4LCAyNDMsIDIzNCwgMTgsIDI0MywgMjMzLCAxOCwgMjQzLCAyMzIsIDE4LCAyNDMsIDIzMSwgMTgsIAorICAgIDI0MywgMjMwLCAxOCwgMjQzLCAyMjksIDE4LCAyNDMsIDIyOCwgMTgsIDI0MywgMjI3LCAxOCwgMjQzLCAyMjYsIDE4LCAKKyAgICAyNDMsIDIyNSwgMTgsIDI0MywgMjI0LCAxOCwgMjQzLCAyMjMsIDE4LCAyNDMsIDIyMiwgMTgsIDI0MywgMjIxLCAxOCwgCisgICAgMjQzLCAyMjAsIDE4LCAyNDMsIDIxOSwgMTgsIDI0MywgMjE4LCAxOCwgMjQzLCAyMTcsIDE4LCAyNDMsIDIxNiwgMTgsIAorICAgIDI0MywgMjE1LCAxOCwgMjQzLCAyMTQsIDE4LCAyNDMsIDIxMywgMTgsIDI0MywgMjEyLCAxOCwgMjQzLCAyMTEsIDE4LCAKKyAgICAyNDMsIDIxMCwgMTgsIDI0MywgMjA5LCAxOCwgMjQzLCAyMDgsIDE4LCAyNDMsIDIwNywgMTgsIDI0MywgMjA2LCAxOCwgCisgICAgMjQzLCAyMDUsIDE4LCAyNDMsIDIwNCwgMTgsIDI0MywgMjAzLCAxOCwgMjQzLCAyMDIsIDE4LCAyNDMsIDIwMSwgMTgsIAorICAgIDI0MywgMjAwLCAxOCwgMjQzLCAxOTksIDE4LCAyNDMsIDE5OCwgMTgsIDI0MywgMTk3LCAxOCwgMjQzLCAxOTYsIDE4LCAKKyAgICAyNDMsIDE5NSwgMTgsIDI0MywgMTk0LCAxOCwgMjQzLCAxOTMsIDE4LCAyNDMsIDE5MiwgMTgsIDI0MywgMTkxLCAxOCwgCisgICAgMjQzLCAxOTAsIDE4LCAyNDMsIDE4OSwgMTgsIDI0MywgMTg4LCAxOCwgMjQzLCAxODcsIDE4LCAyNDMsIDE4NiwgMTgsIAorICAgIDI0MywgMTg1LCAxOCwgMjQzLCAxODQsIDE4LCAyNDMsIDE4MywgMTgsIDI0MywgMTgyLCAxOCwgMjQzLCAxODEsIDE4LCAKKyAgICAyNDMsIDE4MCwgMTgsIDI0MywgMTc5LCAxOCwgMjQzLCAxNzgsIDE4LCAyNDMsIDE3NywgMTgsIDI0MywgMTc2LCAxOCwgCisgICAgMjQzLCAxNzUsIDE4LCAyNDMsIDE3NCwgMTgsIDI0MywgMTczLCAxOCwgMjQzLCAxNzIsIDE4LCAyNDMsIDE3MSwgMTgsIAorICAgIDI0MywgMTcwLCAxOCwgMjQzLCAxNjksIDE4LCAyNDMsIDE2OCwgMTgsIDI0MywgMTY3LCAxOCwgMjQzLCAxNjYsIDE4LCAKKyAgICAyNDMsIDE2NSwgMTgsIDI0MywgMTY0LCAxOCwgMjQzLCAxNjMsIDE4LCAyNDMsIDE2MiwgMTgsIDI0MywgMTYxLCAxOCwgCisgICAgMjQzLCAxNjAsIDE4LCAyNDMsIDE1OSwgMTgsIDI0MywgMTU4LCAxOCwgMjQzLCAxNTcsIDE4LCAyNDMsIDE1NiwgMTgsIAorICAgIDI0MywgMTU1LCAxOCwgMjQzLCAxNTQsIDE4LCAyNDMsIDE1MywgMTgsIDI0MywgMTUyLCAxOCwgMjQzLCAxNTEsIDE4LCAKKyAgICAyNDMsIDE1MCwgMTgsIDI0MywgMTQ5LCAxOCwgMjQzLCAxNDgsIDE4LCAyNDMsIDE0NywgMTgsIDI0MywgMTQ2LCAxOCwgCisgICAgMjQzLCAxNDUsIDE4LCAyNDMsIDE0NCwgMTgsIDI0MywgMTQzLCAxOCwgMjQzLCAxNDIsIDE4LCAyNDMsIDE0MSwgMTgsIAorICAgIDI0MywgMTQwLCAxOCwgMjQzLCAxMzksIDE4LCAyNDMsIDEzOCwgMTgsIDI0MywgMTM3LCAxOCwgMjQzLCAxMzYsIDE4LCAKKyAgICAyNDMsIDEzNSwgMTgsIDI0MywgMTM0LCAxOCwgMjQzLCAxMzMsIDE4LCAyNDMsIDEzMiwgMTgsIDI0MywgMTMxLCAxOCwgCisgICAgMjQzLCAxMzAsIDE4LCAyNDMsIDEyOSwgMTgsIDI0MywgMTI4LCAxOCwgMjQzLCAxMjcsIDE4LCAyNDMsIDEyNiwgMTgsIAorICAgIDI0MywgMTI1LCAxOCwgMjQzLCAxMjQsIDE4LCAyNDMsIDEyMywgMTgsIDI0MywgMTIyLCAxOCwgMjQzLCAxMjEsIDE4LCAKKyAgICAyNDMsIDEyMCwgMTgsIDI0MywgMTE5LCAxOCwgMjQzLCAxMTgsIDE4LCAyNDMsIDExNywgMTgsIDI0MywgMTE2LCAxOCwgCisgICAgMjQzLCAxMTUsIDE4LCAyNDMsIDExNCwgMTgsIDI0MywgMTEzLCAxOCwgMjQzLCAxMTIsIDE4LCAyNDMsIDExMSwgMTgsIAorICAgIDI0MywgMTEwLCAxOCwgMjQzLCAxMDksIDE4LCAyNDMsIDEwOCwgMTgsIDI0MywgMTA3LCAxOCwgMjQzLCAxMDYsIDE4LCAKKyAgICAyNDMsIDEwNSwgMTgsIDI0MywgMTA0LCAxOCwgMjQzLCAxMDMsIDE4LCAyNDMsIDEwMiwgMTgsIDI0MywgMTAxLCAxOCwgCisgICAgMjQzLCAxMDAsIDE4LCAyNDMsIDk5LCAxOCwgMjQzLCA5OCwgMTgsIDI0MywgOTcsIDE4LCAyNDMsIDk2LCAxOCwgMjQzLCAKKyAgICA5NSwgMTgsIDI0MywgOTQsIDE4LCAyNDMsIDkzLCAxOCwgMjQzLCA5MiwgMTgsIDI0MywgOTEsIDE4LCAyNDMsIDkwLCAxOCwgCisgICAgMjQzLCA4OSwgMTgsIDI0MywgODgsIDE4LCAyNDMsIDg3LCAxOCwgMjQzLCA4NiwgMTgsIDI0MywgODUsIDE4LCAyNDMsIDg0LCAKKyAgICAxOCwgMjQzLCA4MywgMTgsIDI0MywgODIsIDE4LCAyNDMsIDgxLCAxOCwgMjQzLCA4MCwgMTgsIDI0MywgNzksIDE4LCAyNDMsIAorICAgIDc4LCAxOCwgMjQzLCA3NywgMTgsIDI0MywgNzYsIDE4LCAyNDMsIDc1LCA2OSwgMSwgMjUwLCAyMzQsIDcyLCAxNzcsIDEsIAorICAgIDI1MCwgMjM0LCAyMDAsIDUxLCAxMDQsIDEsIDIzNCwgMjQ3LCAxMDQsIDEsIDIwMCwgMTk1LCAxMDQsIDEsIDIxNiwgMjI2LCAKKyAgICAxMDQsIDEsIDIwNywgODMsIDEwNCwgMSwgMjM4LCA1LCAxMDQsIDEsIDIyNywgMTE4LCAxMDQsIDEsIDE1NiwgMTA0LCAxLCAKKyAgICAyNTAsIDEwMywgMTA0LCAxLCAyNDIsIDE1MywgMTA0LCAxLCAyMDMsIDE2OCwgMTA0LCAxLCAyMzYsIDE1NiwgMTA0LCAxLCAKKyAgICAxNDYsIDEwNCwgMSwgMjE2LCAyMjcsIDIyMCwgMjE0LCAxMDQsIDEsIDI0MiwgMTU0LCAyMTIsIDEyMiwgMTA0LCAxLCAyMzgsIAorICAgIDYsIDIyMCwgMjE0LCAxMDQsIDEsIDIyNywgMTE5LCAyMjMsIDI0MywgMTA0LCAxLCAyMTQsIDMzLCAyMTIsIDEyMiwgMTA0LCAKKyAgICAxLCAyMDYsIDEyNCwgMTA0LCAxLCAyMDksIDYyLCAyNDEsIDEwMSwgMTA0LCAxLCAyNDEsIDEwMSwgMTA0LCAxLCAyMjYsIAorICAgIDExMCwgMTA0LCAxLCAyMDksIDYyLCAyMjcsIDI1MSwgMTA0LCAxLCAyMzQsIDQwLCAxMDQsIDEsIDIyNCwgMjI0LCAxMDQsIAorICAgIDEsIDIxMywgOTQsIDEwNCwgMSwgMjIzLCAyNDMsIDEwNCwgMSwgMjIwLCAyMTQsIDEwNCwgMSwgMjI3LCAyNTEsIDEwNCwgMSwgCisgICAgMjEyLCAxMjIsIDEwNCwgMSwgMjIzLCAyNDQsIDIyMCwgMjE0LCAxMDQsIDEsIDIyMCwgMjE1LCAyMjMsIDI0MywgMTA0LCAxLCAKKyAgICAyMjcsIDI1MiwgMjIzLCAyNDMsIDEwNCwgMSwgMjEyLCAxMjMsIDIyNywgMjUxLCAxMDQsIDEsIDIyMywgMjQ0LCAzLCAyNDAsIAorICAgIDE4MiwgMTA0LCAxLCAyMjAsIDIxNSwgMywgMjQwLCAxODIsIDEwNCwgMSwgMjI3LCAyNTIsIDMsIDI0MCwgMTgyLCAxMDQsIAorICAgIDEsIDIyNywgMjUyLCAzLCAxOTAsIDIyOCwgNzQsIDI2LCA1NiwgMTA0LCAxLCAyMTIsIDEyMywgMywgMjQwLCAxODIsIDEwNCwgCisgICAgMSwgMjEyLCAxMjMsIDMsIDczLCA1NywgMTA0LCAxLCAyMjMsIDI0NCwgMjEyLCAxMjIsIDEwNCwgMSwgMjIwLCAyMTUsIAorICAgIDIxMiwgMTIyLCAxMDQsIDEsIDIyNywgMjUyLCAyMTIsIDEyMiwgMTA0LCAxLCAyMTIsIDEyMywgMjEyLCAxMjIsIDEwNCwgMSwgCisgICAgMjIzLCAyNDQsIDIyMCwgMjE1LCAyMTIsIDEyMiwgMTA0LCAxLCAyMjAsIDIxNSwgMjIzLCAyNDQsIDIxMiwgMTIyLCAxMDQsIAorICAgIDEsIDIyNywgMjUyLCAyMjMsIDI0NCwgMjEyLCAxMjIsIDEwNCwgMSwgMjEyLCAxMjMsIDIyNywgMjUyLCAyMTIsIDEyMiwgCisgICAgMTA0LCAxLCAyMjcsIDI1MiwgMjEyLCAxMjMsIDMsIDI0MCwgMTgyLCAxMDQsIDEsIDIyNywgMjUyLCAyMjAsIDIxNCwgMTA0LCAKKyAgICAxLCAyMjcsIDI1MiwgMjIwLCAyMTUsIDIxMiwgMTIyLCAxMDQsIDEsIDIxMiwgMTIzLCAyMDcsIDgzLCAxMDQsIDEsIDIxMiwgCisgICAgMTIzLCAyMDcsIDg0LCAxNDYsIDEwNCwgMSwgMjEyLCAxMjMsIDIxNiwgMjI2LCAxMDQsIDEsIDIxMiwgMTIzLCAyMTYsIAorICAgIDIyNywgMTQ2LCAxMDQsIDEsIDIwNywgODQsIDIxMiwgMTIyLCAxMDQsIDEsIDIwNywgODQsIDIxNCwgMzMsIDIxMiwgMTIyLCAKKyAgICAxMDQsIDEsIDIwMSwgMTQ3LCAxMDQsIDEsIDIwMSwgNDEsIDEwNCwgMSwgMjAxLCAxNDgsIDE0NiwgMTA0LCAxLCAyMTIsIAorICAgIDEyMywgMjIwLCAyMTQsIDEwNCwgMSwgMjEyLCAxMjMsIDIyMywgMjQzLCAxMDQsIDEsIDIyNywgMTE5LCAyMTQsIDMzLCAKKyAgICAyMTIsIDEyMiwgMTA0LCAxLCAyMzYsIDE1NywgMjE0LCAzMywgMjEyLCAxMjIsIDEwNCwgMSwgMjEyLCAxMjMsIDIyNywgCisgICAgMTE4LCAxMDQsIDEsIDIxMiwgMTIzLCAyMjcsIDExOSwgMTQ2LCAxMDQsIDEsIDYyLCAxMDQsIDEsIDIwOSwgNjIsIDIxNiwgCisgICAgMjM4LCAxMDQsIDEsIDIxNywgMTQ2LCAxMDQsIDEsIDc0LCAxMDQsIDEsIDI1MSwgMjksIDEwNCwgMSwgNzAsIDEwNCwgMSwgCisgICAgNzIsIDEwNCwgMSwgMjI4LCAxNzgsIDEwNCwgMSwgMjA5LCAyNTAsIDcwLCAxMDQsIDEsIDIwNCwgMjMsIDEwNCwgMSwgMjM4LCAKKyAgICAyNTUsIDEwNCwgMSwgMjA5LCA2MiwgMjM4LCAyNDEsIDEwNCwgMSwgMjEyLCAyMzksIDcwLCAxMDQsIDEsIDIwOSwgNjIsIAorICAgIDIzOCwgMjU1LCAxMDQsIDEsIDE2OCwgNzAsIDEwNCwgMSwgMjAwLCA1MSwgMTA0LCAxLCA2NiwgMTA0LCAxLCAyMzgsIDY5LCAKKyAgICAxMDQsIDEsIDIwMCwgMTQ2LCAxMDQsIDEsIDEwOCwgMjIwLCAyMTQsIDEwNCwgMSwgMTY4LCA2NiwgMTA0LCAxLCAyMTIsIAorICAgIDIzOSwgNjYsIDEwNCwgMSwgMjA0LCAyNSwgMTA0LCAxLCAyMDksIDYyLCA2NiwgMTA0LCAxLCAyMTcsIDYwLCAxMDQsIDEsIAorICAgIDIxNiwgMjM4LCAxMDQsIDEsIDIxNywgMywgMTA0LCAxLCAyMDEsIDExNCwgMTA0LCAxLCAyMDEsIDAsIDEwNCwgMSwgMjAxLCAKKyAgICAzMSwgMTA0LCAxLCAyMDEsIDU1LCAxMDQsIDEsIDIwMCwgMjMwLCAxMDQsIDEsIDIyMCwgMTIzLCA2NiwgMTA0LCAxLCAyMjAsIAorICAgIDEyMywgNzQsIDEwNCwgMSwgMjIwLCAxMjMsIDcwLCAxMDQsIDEsIDIyMCwgMTIzLCA2MiwgMTA0LCAxLCAyMTYsIDE2LCAKKyAgICAyNTEsIDg1LCAxMDQsIDEsIDIxNiwgMTYsIDI1MSwgMTAxLCAxMDQsIDEsIDIwOSwgNjIsIDIzOCwgMTc5LCAxMDQsIDEsIAorICAgIDIwOSwgNjIsIDI1MSwgODUsIDEwNCwgMSwgMjA5LCA2MiwgMjE3LCA3OCwgMTA0LCAxLCAxMDksIDIyMywgMjQzLCAxMDQsIAorICAgIDI1MSwgMjAwLCA0OSwgMjMzLCAxNzcsIDIxMSwgMTk3LCAxMDQsIDI1MSwgMjAwLCAyMjEsIDIwNiwgMjMzLCAxNzcsIDIxMSwgCisgICAgMTk3LCAxMDQsIDI1MSwgMjAwLCA1MSwgMjMzLCAxNzcsIDIxMSwgMTk3LCAxMDQsIDI1MSwgMjAwLCAxMjgsIDgzLCAyMTEsIAorICAgIDE5NywgMTA0LCAyNTEsIDIwMCwgMjIxLCAyMDYsIDgzLCAyMTEsIDE5NywgMTA0LCAyNTEsIDIwMCwgMTIyLCA4MywgMjExLCAKKyAgICAxOTcsIDEwNCwgMjUxLCAyMDAsIDI1MCwgMTQ1LCAyMTEsIDE5NywgMTA0LCAyNTEsIDIwMCwgMjUwLCAxNDUsIDIyNSwgMTksIAorICAgIDIxMSwgMTk3LCAxMDQsIDI1MSwgMjAwLCAyNTAsIDE0NSwgMjA2LCAyNDAsIDEwNCwgMjUxLCAyMDAsIDI1MCwgMTQ1LCAKKyAgICAyMDcsIDYsIDEwNCwgMjUxLCAyMDAsIDI1MCwgMTQ1LCAxOTcsIDExNywgMTA0LCAyNTEsIDIwMCwgMjUwLCAxNDUsIDIzMywgCisgICAgMTksIDExNywgMTA0LCAyNTEsIDIwMCwgMjUwLCAxNDUsIDIwNiwgMjQxLCAxMTcsIDEwNCwgMjUxLCAyMDAsIDEyMiwgMTY5LCAKKyAgICAxMDQsIDI1MSwgMjAwLCAxMjIsIDIwNiwgMSwgMTY5LCAxMDQsIDI1MSwgMjAwLCAxMjIsIDIzNSwgNzMsIDEwNCwgMjUxLCAKKyAgICAyMDAsIDEyMiwgMTY4LCAyMzUsIDczLCAxMDQsIDI1MSwgMjAwLCAxMjIsIDI0MCwgMTgyLCAxMDQsIDI1MSwgMjAwLCAxMjIsIAorICAgIDI0NiwgMTU1LCAxMDQsIDI1MSwgMjAwLCAxMjIsIDIyNCwgMTc2LCAxMDQsIDI1MSwgMjAwLCAxMjIsIDIwMSwgNzcsIDEwNCwgCisgICAgMjUxLCAyMDAsIDEyMiwgMjAzLCA0MiwgMTA0LCAyNTEsIDIwMCwgMTI4LCAxNjksIDEwNCwgMjUxLCAyMDAsIDEyOCwgMjA2LCAKKyAgICAxLCAxNjksIDEwNCwgMjUxLCAyMDAsIDEyOCwgMjM1LCA3MywgMTA0LCAyNTEsIDIwMCwgMTI4LCAxNjgsIDIzNSwgNzMsIAorICAgIDEwNCwgMjUxLCAyMDAsIDEyOCwgMjQwLCAxODIsIDEwNCwgMjUxLCAyMDAsIDEyOCwgMjQ2LCAxNTUsIDEwNCwgMjUxLCAKKyAgICAyMDAsIDEyOCwgMjI0LCAxNzYsIDEwNCwgMjUxLCAyMDAsIDEyOCwgMjAxLCA3NywgMTA0LCAyNTEsIDIwMCwgMTI4LCAyMDMsIAorICAgIDQyLCAxMDQsIDI1MSwgMjAwLCAxMjgsIDQ4LCAxMDQsIDIsIDE2MywgMywgMjQyLCAyMzQsIDEwNCwgMjA2LCA4MiwgMSwgCisgICAgMjExLCAxNzUsIDEwNCwgNTMsIDgxLCAxMDQsIDIxNCwgMjEyLCAyNDYsIDIyMCwgMjM2LCAxODMsIDIwOCwgNzYsIDIwOSwgCisgICAgMjM3LCAyMzYsIDI0MSwgMSwgMjE2LCAyNDQsIDIwOSwgMjM3LCAyMzYsIDI0MSwgMjQzLCA0MCwgMjE2LCAyNDQsIDIwOSwgCisgICAgMjM3LCAyMzYsIDI0MSwgMTI3LCAyMDgsIDkwLCAyMDksIDIzNywgMjM2LCAyNDEsIDExNSwgMjA4LCA5MCwgNjEsIDMyLCAKKyAgICAxNiwgMjE0LCAyMjgsIDYxLCAzMiwgMTYsIDI0MSwgMjQ2LCA2MSwgMzIsIDE2LCAyMTYsIDIwLCA2MSwgMzIsIDE2LCAyMTYsIAorICAgIDIzNCwgMjM4LCAyMTMsIDYxLCAzMiwgMTYsIDIxNiwgMjM0LCAyNDEsIDE0LCA2MSwgMzIsIDE2LCAyMDMsIDc3LCAyMzgsIAorICAgIDIxMywgNjEsIDMyLCAxNiwgMjAzLCA3NywgMjQxLCAxNCwgNjEsIDMyLCAxNiwgMjI3LCAyOCwgNjEsIDMyLCAxNiwgMjA3LCAKKyAgICAxMDAsIDYxLCAzMiwgMTYsIDIxNiwgMTIyLCA2MSwgMzIsIDE2LCAxOTksIDIxNywgNjEsIDMyLCAxNiwgMTk5LCAyMTgsIAorICAgIDI0MSwgMTQsIDYxLCAzMiwgMTYsIDIyNiwgMzIsIDYxLCAzMiwgMTYsIDI1MSwgMjQsIDIzOCwgMjEzLCA2MSwgMzIsIDE2LCAKKyAgICAyMzgsIDM3LCAyMzgsIDIxMywgNjEsIDMyLCAxNiwgMjA2LCAxNzcsIDYxLCAzMiwgMTYsIDIyNiwgMjM5LCA2MSwgMzIsIAorICAgIDE2LCAyNTEsIDE0LCA2MSwgMzIsIDE2LCAyNTEsIDE1LCAyNDEsIDE0LCA2MSwgMzIsIDE2LCAyMDcsIDEwNywgNjEsIDMyLCAKKyAgICAxNiwgMjA2LCA2NCwgNjEsIDMyLCAxNiwgMjE3LCA4OSwgMjUwLCAyMzIsIDYxLCAzMiwgMTYsIDIzNSwgMTAwLCAyNTAsIAorICAgIDIzMiwgNjEsIDMyLCAxNiwgMjE0LCAyMjcsIDYxLCAzMiwgMTYsIDI0NywgMjgsIDYxLCAzMiwgMTYsIDIwMywgNjYsIDYxLCAKKyAgICAzMiwgMTYsIDIyOCwgMTcsIDI1MCwgMjMyLCA2MSwgMzIsIDE2LCAyMjYsIDI0MSwgMjUwLCAyMzIsIDYxLCAzMiwgMTYsIAorICAgIDIyNiwgMjQwLCAyNTAsIDIzMiwgNjEsIDMyLCAxNiwgMjExLCAyMzYsIDYxLCAzMiwgMTYsIDIxNiwgMTEyLCA2MSwgMzIsIAorICAgIDE2LCAyMDgsIDk5LCAyNTEsIDE3LCA2MSwgMzIsIDE2LCAyMTYsIDIzMywgMjUwLCAyMzIsIDYxLCAzMiwgMTYsIDIwMywgCisgICAgNzYsIDI1MCwgMjMyLCA2MSwgMzIsIDE2LCAyNTEsIDE4LCAyNTAsIDIzMiwgNjEsIDMyLCAxNiwgMjUxLCAxMiwgNjEsIDMyLCAKKyAgICAxNiwgMjI2LCAxMDAsIDYxLCAzMiwgMTYsIDIxMywgMTAxLCA2MSwgMzIsIDE2LCAyMTUsIDIwMiwgMjUwLCAyMzIsIDYxLCAKKyAgICAzMiwgMTYsIDIwNSwgMjMwLCA2MSwgMzIsIDE2LCAyNTEsIDgyLCA2MSwgMzIsIDE2LCAyMTEsIDE3OCwgNjEsIDMyLCAxNiwgCisgICAgMjA3LCAxMTEsIDI1MCwgMjMyLCA2MSwgMzIsIDE2LCAyMDcsIDExMSwgMjIyLCAyMSwgMjA4LCA5NywgNjEsIDMyLCAxNiwgCisgICAgMjE2LCAyMjgsIDI1MCwgMjMyLCA2MSwgMzIsIDE2LCAyMDYsIDEwMCwgNjEsIDMyLCAxNiwgMjI1LCA2LCA2MSwgMzIsIDE2LCAKKyAgICAyMzksIDk2LCA2MSwgMzIsIDE2LCAyMDUsIDEwMCwgNjEsIDMyLCAxNiwgMjA2LCAxNDgsIDYxLCAzMiwgMTYsIDIyNiwgMzUsIAorICAgIDYxLCAzMiwgMTYsIDI1MSwgMjQsIDIzOCwgMzcsIDIyMCwgMjAsIDYxLCAzMiwgMTYsIDIzNiwgMTkxLCAyNTAsIDIzMiwgCisgICAgNjEsIDMyLCAxNiwgMjI4LCAxMzAsIDYxLCAzMiwgMTYsIDIwNSwgNjksIDI1MCwgMjMyLCA2MSwgMzIsIDE2LCAyMjcsIDMxLCAKKyAgICAyMDUsIDY4LCA2MSwgMzIsIDE2LCAyMTYsIDQ5LCA2MSwgMzIsIDE2LCAyMTQsIDIzMiwgNjEsIDMyLCAxNiwgMjI2LCA2OSwgCisgICAgNjEsIDMyLCAxNiwgMjQ2LCAyMDQsIDI1MCwgMjMyLCA2MSwgMzIsIDE2LCAyMTMsIDIwOSwgNjEsIDMyLCAxNiwgMjE2LCAKKyAgICAxMjUsIDI1MCwgMjMyLCA2MSwgMzIsIDE2LCAyMTYsIDEyMywgMjUwLCAyMzIsIDYxLCAzMiwgMTYsIDIzMiwgMjI5LCA2MSwgCisgICAgMzIsIDE2LCAyMjAsIDEzMywgNjEsIDMyLCAxNiwgMjE1LCAyNTQsIDYxLCAzMiwgMTYsIDIyNiwgNzAsIDI1MSwgMTE5LCAKKyAgICA2MSwgMzIsIDE2LCAyMDUsIDY5LCAyNTEsIDExOSwgNjEsIDMyLCAxNiwgMjA4LCA3MCwgNjEsIDMyLCAxNiwgMjM1LCA2MCwgCisgICAgNjEsIDMyLCAxNiwgMjI4LCAxNywgMjIwLCAyMCwgNjEsIDMyLCAxNiwgMjE3LCA4OSwgMjIwLCAyMCwgNjEsIDMyLCAxNiwgCisgICAgMjE2LCAyMzQsIDIyMCwgMjAsIDYxLCAzMiwgMTYsIDIxNSwgMjUzLCA2MSwgMzIsIDE2LCAyMjYsIDU0LCA2MSwgMzIsIDE2LCAKKyAgICAyMTUsIDI1MiwgNjEsIDMyLCAxNiwgMjI2LCAzNCwgNjEsIDMyLCAxNiwgMjE2LCA1MCwgMjIwLCAyMCwgNjEsIDMyLCAxNiwgCisgICAgMjI2LCAyNDAsIDIyMCwgMjEsIDI1MSwgNTUsIDYxLCAzMiwgMTYsIDIyNiwgMjQxLCAyMjAsIDIxLCAyNTEsIDU1LCA2MSwgCisgICAgMzIsIDE2LCAxOTksIDIxNSwgNjEsIDMyLCAxNiwgMjUxLCAxNSwgMjIwLCAyMCwgNjEsIDMyLCAxNiwgMjUxLCAxNiwgMjA3LCAKKyAgICAxMDgsIDIyMCwgMjAsIDYxLCAzMiwgMTYsIDE5OSwgMjE2LCA2MSwgMzIsIDE2LCAyMjYsIDMzLCA2MSwgMzIsIDE2LCAyMzgsIAorICAgIDIwOCwgNjEsIDMyLCAxNiwgMjQ3LCAyOSwgNjEsIDMyLCAxNiwgMjIxLCAxNzcsIDIyOCwgMTYsIDYxLCAzMiwgMTYsIDIwMywgCisgICAgNzcsIDIyMCwgMjAsIDYxLCAzMiwgMTYsIDIxNSwgMjAyLCAyMjAsIDIwLCA2MSwgMzIsIDE2LCAyMTQsIDIzMywgMjIwLCAKKyAgICAyMCwgNjEsIDMyLCAxNiwgMjE3LCA4NSwgNjEsIDMyLCAxNiwgMjUxLCA0MiwgNjEsIDMyLCAxNiwgMjIzLCAyNTQsIDYxLCAKKyAgICAzMiwgMTYsIDIxNiwgMTIzLCAyMjAsIDIwLCA2MSwgMzIsIDE2LCAyMTYsIDEyNSwgMjIwLCAyMCwgNjEsIDMyLCAxNiwgCisgICAgMjM4LCA3NSwgMjE2LCAxMjQsIDYxLCAzMiwgMTYsIDIyNSwgMTk3LCA2MSwgMzIsIDE2LCAyNTEsIDQzLCA2MSwgMzIsIDE2LCAKKyAgICAyMDUsIDY5LCAyMjAsIDIwLCA2MSwgMzIsIDE2LCAyMzgsIDIxMSwgNjEsIDMyLCAxNiwgMjA3LCAxMTEsIDIyMCwgMjAsIAorICAgIDYxLCAzMiwgMTYsIDIwNywgMTAxLCA2MSwgMzIsIDE2LCAyNDYsIDIwNCwgMjIwLCAyMCwgNjEsIDMyLCAxNiwgMjM4LCAKKyAgICAxMzAsIDYxLCAzMiwgMTYsIDIxMSwgMTc5LCAyMjAsIDIwLCA2MSwgMzIsIDE2LCAyMDAsIDE2MiwgMjI2LCAxMDAsIDYxLCAKKyAgICAzMiwgMTYsIDIwNSwgNjYsIDYxLCAzMiwgMTYsIDIxNCwgMjM0LCA2MSwgMzIsIDE2LCAyMDUsIDcwLCA2MSwgMzIsIDE2LCAKKyAgICAyMDUsIDY3LCA2MSwgMzIsIDE2LCAyMTQsIDIzMSwgNjEsIDMyLCAxNiwgMjA1LCA2NSwgNjEsIDMyLCAxNiwgMjE0LCAyMzAsIAorICAgIDYxLCAzMiwgMTYsIDIzNSwgOTksIDYxLCAzMiwgMTYsIDI1MCwgMjI0LCA2MSwgMzIsIDE2LCAyMzgsIDc1LCAyNTAsIDIyNCwgCisgICAgNjEsIDMyLCAxNiwgMjE2LCAyMjgsIDIyMCwgMjAsIDYxLCAzMiwgMTYsIDIwNiwgOTksIDIzOCwgODgsIDYxLCAzMiwgMTYsIAorICAgIDIwNiwgOTksIDIzOCwgMzYsIDYxLCAzMiwgMTYsIDIwNiwgMTAxLCAyNTEsIDE5LCA2MSwgMzIsIDE2LCAyMDYsIDkzLCAKKyAgICAyMjcsIDgzLCAyNTEsIDExLCA2MSwgMzIsIDE2LCAyMjcsIDMwLCA2MSwgMzIsIDE2LCAyMzgsIDE2NywgNjEsIDMyLCAxNiwgCisgICAgMjAwLCAxMywgMjI3LCAyNywgNjEsIDMyLCAxNiwgMjAwLCAxMywgMjUxLCA1NSwgNjEsIDMyLCAxNiwgMjA4LCA5OCwgNjEsIAorICAgIDMyLCAxNiwgMjI2LCAxMDEsIDI1MSwgNTUsIDYxLCAzMiwgMTYsIDI0MSwgMTUsIDI1MCwgMjMyLCA2MSwgMzIsIDE2LCAKKyAgICAyMjYsIDM2LCAyNTAsIDIzMiwgNjEsIDMyLCAxNiwgMjI2LCAzNiwgMjUxLCAxMTksIDYxLCAzMiwgMTYsIDIyNiwgMzYsIAorICAgIDIyMCwgMjAsIDYxLCAzMiwgMTYsIDI1MSwgMTgsIDIyMCwgMjAsIDYxLCAzMiwgMTYsIDI1MSwgMjAsIDYxLCAzMiwgMTYsIAorICAgIDI0MSwgMTQsIDYxLCAzMiwgMTYsIDIwNSwgODEsIDYxLCAzMiwgMTYsIDIwNiwgMTM5LCA2MSwgMzIsIDE2LCAyMjYsIDU4LCAKKyAgICA2MSwgMzIsIDE2LCAyMjUsIDExLCAyMzgsIDE2MCwgMjQ2LCAxOTQsIDYxLCAzMiwgMTYsIDIyNSwgMTEsIDIzOSwgOTcsIAorICAgIDI0NiwgMTk1LCA2MSwgMzIsIDE2LCAyMjUsIDExLCAyMDUsIDg0LCAyNDYsIDE5NSwgNjEsIDMyLCAxNiwgMjI1LCAxMSwgCisgICAgMjA2LCAxNTAsIDI0NiwgMTk1LCA2MSwgMzIsIDE2LCAyMjUsIDExLCAyMjgsIDEyNSwgMjQ2LCAxOTQsIDYxLCAzMiwgMTYsIAorICAgIDIzNSwgMTAwLCAyMjAsIDIxLCAyNTEsIDU1LCA2MSwgMzIsIDE2LCAyMzUsIDEwMCwgMjE2LCAxMTMsIDI1MCwgMjIwLCA2MSwgCisgICAgMzIsIDE2LCAyMzUsIDEwMCwgMjE2LCAxMTMsIDI0MSwgMTA1LCA2MSwgMzIsIDE2LCAyNDEsIDM5LCA2MSwgMzIsIDE2LCAKKyAgICAyNDEsIDQwLCAyMTYsIDExMywgMjUwLCAyMjEsIDIyNywgMjcsIDYxLCAzMiwgMTYsIDI0MSwgNDAsIDIxNiwgMTEzLCAyNTAsIAorICAgIDIyMSwgMjUxLCA1NSwgNjEsIDMyLCAxNiwgMjQxLCA0MCwgMjE2LCAxMTMsIDI0MSwgMTA1LCA2MSwgMzIsIDE2LCAyMDUsIAorICAgIDg5LCA2MSwgMzIsIDE2LCAyNTAsIDIyNSwgNjEsIDMyLCAxNiwgMjI4LCAxMzIsIDYxLCAzMiwgMTYsIDI0MSwgNjIsIDYxLCAKKyAgICAzMiwgMTYsIDI1MSwgMTg3LCAyMTUsIDg5LCAyNTAsIDIyNiwgNjEsIDMyLCAxNiwgMjUxLCAxODcsIDI1MCwgMjIzLCA2MSwgCisgICAgMzIsIDE2LCAyNTEsIDE4NywgMjUwLCAyMjYsIDYxLCAzMiwgMTYsIDI1MSwgMTg3LCAyMjIsIDE1LCA2MSwgMzIsIDE2LCAKKyAgICAyNTEsIDE4NywgMjIyLCAyNiwgNjEsIDMyLCAxNiwgMjUxLCAxODcsIDIzNSwgMTAxLCA2MSwgMzIsIDE2LCAyNTEsIDE4NywgCisgICAgMjM1LCA5OCwgNjEsIDMyLCAxNiwgMjUxLCAxODcsIDIxNSwgODksIDIzNSwgMTAxLCA2MSwgMzIsIDE2LCAyMjIsIDE0MCwgCisgICAgMjE0LCAyNDAsIDIzMiwgMjI3LCA2MSwgMzIsIDE2LCAyMjIsIDE0MCwgMjUxLCAxMjEsIDIxNCwgMjQwLCAyMzIsIDIyNywgCisgICAgNjEsIDMyLCAxNiwgMjIyLCAxNDAsIDI0MSwgMTA0LCAyMzIsIDIyNywgNjEsIDMyLCAxNiwgMjIyLCAxNDAsIDI1MSwgMTIxLCAKKyAgICAyNDEsIDEwNCwgMjMyLCAyMjcsIDYxLCAzMiwgMTYsIDIyMiwgMTQwLCAyMDUsIDc2LCAyMzIsIDIyNywgNjEsIDMyLCAxNiwgCisgICAgMjIyLCAxNDAsIDIwNSwgOTAsIDYxLCAzMiwgMTYsIDIyMiwgMTQwLCAyMDYsIDE0NCwgMjMyLCAyMjcsIDYxLCAzMiwgMTYsIAorICAgIDIyMiwgMTQwLCAyMDYsIDE0NCwgMjI1LCAxNSwgMjMyLCAyMjcsIDYxLCAzMiwgMTYsIDIyMiwgMTQwLCAyMjUsIDE1LCAKKyAgICAyMzIsIDIyNywgNjEsIDMyLCAxNiwgMjIyLCAxNDAsIDIxNSwgMTMyLCAyMzIsIDIyNywgNjEsIDMyLCAxNiwgMjI4LCAyNCwgCisgICAgMjA2LCAxNzAsIDIzMiwgMjI4LCA2MSwgMzIsIDE2LCAyNTEsIDE2LCAyMDYsIDE3MCwgMjMyLCAyMjgsIDYxLCAzMiwgMTYsIAorICAgIDIzNywgMTY3LCAyMDYsIDE0MSwgNjEsIDMyLCAxNiwgMjM3LCAxNjcsIDIyMSwgOTgsIDYxLCAzMiwgMTYsIDIzNywgMTY3LCAKKyAgICAyNDEsIDQ1LCA2MSwgMzIsIDE2LCAyMjIsIDE0MCwgMjAzLCA3MCwgMjMyLCAyMjcsIDYxLCAzMiwgMTYsIDIyMiwgMTQwLCAKKyAgICAyMTQsIDIzOSwgMjMyLCAyMjcsIDYxLCAzMiwgMTYsIDIyMiwgMTQwLCAyMTUsIDEzMiwgMjA2LCAxNDQsIDIzMiwgMjI3LCAKKyAgICA2MSwgMzIsIDE2LCAyMzUsIDk1LCAyMjAsIDIxNSwgMjUxLCAxOSwgNjEsIDMyLCAxNiwgMjM1LCA5NSwgMjIwLCAyMTUsIAorICAgIDI0MSwgMTMsIDYxLCAzMiwgMTYsIDIzOCwgMTc3LCAyMjcsIDgzLCAyMzYsIDE5MSwgMjAyLCAxNzQsIDYxLCAzMiwgMTYsIAorICAgIDIyOCwgMTMxLCA2MSwgMzIsIDE2LCAyMjgsIDEyOSwgNjEsIDMyLCAxNiwgMjM2LCAxOTEsIDI1MCwgMjMzLCAyNDEsIDEwMywgCisgICAgMjMyLCAyMjYsIDYxLCAzMiwgMTYsIDIzNiwgMTkxLCAyNDEsIDYwLCAxNzIsIDYxLCAzMiwgMTYsIDIzNiwgMTkxLCAyNDEsIAorICAgIDYwLCAyMjAsIDEzMywgNjEsIDMyLCAxNiwgMjM2LCAxOTEsIDIyMCwgMTI4LCAyMzIsIDIyNywgNjEsIDMyLCAxNiwgMjM2LCAKKyAgICAxOTEsIDI0MSwgNjAsIDI0MSwgNzYsIDYxLCAzMiwgMTYsIDIzNiwgMTkxLCAyMDksIDgyLCAyNDEsIDU5LCAyNDEsIDc2LCAKKyAgICA2MSwgMzIsIDE2LCAyMzYsIDE5MSwgMjQxLCA2MCwgMjI3LCA4LCA2MSwgMzIsIDE2LCAyMzYsIDE5MSwgMjQxLCA2MCwgCisgICAgMTk5LCAxNCwgNjEsIDMyLCAxNiwgMjM2LCAxOTEsIDI0MSwgNjAsIDIxOSwgMTUxLCAyMjcsIDI3LCA2MSwgMzIsIDE2LCAKKyAgICAyMzYsIDE5MSwgMjQxLCA2MCwgMjE5LCAxNTEsIDI1MSwgNTUsIDYxLCAzMiwgMTYsIDIzNiwgMTkxLCAyMjIsIDE4NiwgCisgICAgMjQ2LCAxOTYsIDI0MSwgNDUsIDYxLCAzMiwgMTYsIDIzNiwgMTkxLCAyMjIsIDE4NiwgMjQ2LCAxOTYsIDIyMSwgOTgsIDYxLCAKKyAgICAzMiwgMTYsIDIzNywgMTEzLCAyMDksIDgyLCAyNDYsIDE5NiwgMjAzLCA2OSwgNjEsIDMyLCAxNiwgMjM2LCAxOTEsIDIwOSwgCisgICAgODIsIDI0NiwgMTk2LCAyMDcsIDExMiwgNjEsIDMyLCAxNiwgMjM2LCAxOTEsIDIyMCwgMjMsIDYxLCAzMiwgMTYsIDI0NiwgCisgICAgMTk3LCAxOTgsIDIzOCwgNjEsIDMyLCAxNiwgMjQ2LCAxOTcsIDIyNiwgOTksIDYxLCAzMiwgMTYsIDI0NiwgMTk3LCAyMDgsIAorICAgIDIzNSwgNjEsIDMyLCAxNiwgMjM2LCAxOTEsIDIzMywgMTksIDIwMCwgMTIsIDIwNiwgMTQ1LCA2MSwgMzIsIDE2LCAyMzYsIAorICAgIDE5MSwgMjM4LCAxNzgsIDI1MSwgNDQsIDYxLCAzMiwgMTYsIDIwMCwgMTIsIDIwNSwgNzcsIDYxLCAzMiwgMTYsIDI0MSwgCisgICAgNTMsIDIwNSwgNzcsIDYxLCAzMiwgMTYsIDI0MSwgNTMsIDIwNiwgMTQ1LCA2MSwgMzIsIDE2LCAyNDEsIDUzLCAyNTEsIDIxLCAKKyAgICAyMzksIDk3LCAyNDAsIDIwMywgNjEsIDMyLCAxNiwgMjQxLCA1MywgMjIxLCA5NiwgMjA2LCAxNDksIDI0MCwgMjAzLCA2MSwgCisgICAgMzIsIDE2LCAyNDEsIDUzLCAyNDEsIDM2LCAyMzgsIDQ5LCAyNDAsIDIwMywgNjEsIDMyLCAxNiwgMjQxLCA1MywgMjA1LCAKKyAgICA4NywgMjE3LCA5NSwgMjQwLCAyMDMsIDYxLCAzMiwgMTYsIDIwMCwgMTIsIDI1MSwgMjEsIDIzOSwgOTcsIDI0MCwgMjAzLCAKKyAgICA2MSwgMzIsIDE2LCAyMDAsIDEyLCAyMjEsIDk2LCAyMDYsIDE0OSwgMjQwLCAyMDMsIDYxLCAzMiwgMTYsIDIwMCwgMTIsIAorICAgIDI0MSwgMzYsIDIzOCwgNDksIDI0MCwgMjAzLCA2MSwgMzIsIDE2LCAyMDAsIDEyLCAyMDUsIDg3LCAyMTcsIDk1LCAyNDAsIAorICAgIDIwMywgNjEsIDMyLCAxNiwgMjM1LCAyNTUsIDI0MSwgNTIsIDYxLCAzMiwgMTYsIDIzNSwgMjU1LCAyMDAsIDExLCA2MSwgCisgICAgMzIsIDE2LCAyNDEsIDYxLCAyNTEsIDIxLCAyMjEsIDE3OCwgNjEsIDMyLCAxNiwgMjQxLCA2MSwgMjUxLCAyMSwgMjIyLCAKKyAgICA1NSwgNjEsIDMyLCAxNiwgMjQxLCA2MSwgMjQxLCAxNCwgNjEsIDMyLCAxNiwgMjQxLCA2MSwgMjA2LCA5MSwgNjEsIDMyLCAKKyAgICAxNiwgMjA5LCAxNDksIDIwNiwgOTEsIDYxLCAzMiwgMTYsIDIwOSwgMTQ5LCAyMDYsIDkyLCAyNDAsIDI1NCwgNjEsIDMyLCAKKyAgICAxNiwgMjA5LCAxNDksIDIwNiwgOTIsIDIwNSwgNzgsIDYxLCAzMiwgMTYsIDIwOSwgMTQ5LCAyMDYsIDkyLCAyMDYsIDEzNywgCisgICAgNjEsIDMyLCAxNiwgMjA5LCAxNDksIDI1MCwgMTk2LCA2MSwgMzIsIDE2LCAyMDksIDE0OSwgMjUwLCAxOTcsIDI0MCwgMjU0LCAKKyAgICA2MSwgMzIsIDE2LCAyMDksIDE0OSwgMjUwLCAxOTcsIDIwNSwgNzgsIDYxLCAzMiwgMTYsIDIwOSwgMTQ5LCAyNTAsIDE5NywgCisgICAgMjA2LCAxMzcsIDYxLCAzMiwgMTYsIDI0MSwgMzcsIDIzNSwgMjM2LCA2MSwgMzIsIDE2LCAyNDEsIDQ0LCAyMTcsIDMsIDYxLCAKKyAgICAzMiwgMTYsIDIwOCwgODYsIDYxLCAzMiwgMTYsIDI1MCwgMjE3LCAxNzIsIDYxLCAzMiwgMTYsIDI1MCwgMjE3LCAyMDIsIAorICAgIDE3NCwgNjEsIDMyLCAxNiwgMjUwLCAyMTcsIDIzNiwgODksIDYxLCAzMiwgMTYsIDI1MCwgMjE3LCAyNDEsIDc2LCA2MSwgCisgICAgMzIsIDE2LCAyNTAsIDIxNywgMjI3LCA4LCA2MSwgMzIsIDE2LCAyNTAsIDIxNywgMTk5LCAxNCwgNjEsIDMyLCAxNiwgMjUwLCAKKyAgICAyMTcsIDIxOSwgMTUwLCA2MSwgMzIsIDE2LCAyMjYsIDI0MCwgMjIwLCAyMSwgMjIyLCAyNSwgNjEsIDMyLCAxNiwgMjI2LCAKKyAgICAyNDEsIDIyMCwgMjEsIDIyMiwgMjUsIDYxLCAzMiwgMTYsIDIyNiwgMjQwLCAyMjAsIDIxLCAyMjcsIDI3LCA2MSwgMzIsIAorICAgIDE2LCAyMjYsIDI0MSwgMjIwLCAyMSwgMjI3LCAyNywgNjEsIDMyLCAxNiwgMjI2LCAxMDEsIDIyNywgMjcsIDYxLCAzMiwgCisgICAgMTYsIDIzNSwgMTAwLCAyMjAsIDIxLCAyMjcsIDI3LCAzMiwgMTYsIDIwOSwgMTM5LCAyNDksIDcyLCAzMiwgMTYsIDUzLCAKKyAgICAyNDksIDcyLCAzMiwgMTYsIDQ3LCAyNDksIDcyLCAzMiwgMTYsIDIxMywgMTA2LCA0NywgMjQ5LCA3MiwgMzIsIDE2LCAyNDEsIAorICAgIDI0MywgMjQ5LCA3MiwgMzIsIDE2LCAyMDksIDI1MCwgMjQ5LCA3MiwgMzIsIDE2LCA0OSwgMjEzLCAxMzMsIDU0LCAzMiwgCisgICAgMTYsIDUxLCAyMTMsIDEzMywgNTQsIDMyLCAxNiwgMjEzLCAxMzMsIDI0MCwgMTgwLCAzMiwgMTYsIDI0MiwgMzAsIDIxMSwgCisgICAgMTgyLCAzMiwgMTYsIDI0MiwgNTksIDI0NywgMTQxLCAzMiwgMTYsIDIxMSwgMTgyLCAzMiwgMTYsIDI0NiwgODcsIDMyLCAKKyAgICAxNiwgMjEzLCAxMzEsIDIzNywgMTAxLCAzMiwgMTYsIDIxMywgMTMxLCAyMzcsIDEwMCwgMzIsIDE2LCAyMTMsIDEzMSwgCisgICAgMjM3LCA5OSwgMzIsIDE2LCAyMzcsIDEyMiwgMzIsIDE2LCAyMzcsIDEyMywgNTcsIDMyLCAxNiwgMjQ4LCA1OSwgODEsIDMyLCAKKyAgICAxNiwgMjQ3LCAxODAsIDMyLCAxNiwgMjQ4LCA3MSwgMzIsIDE2LCAxNTksIDMyLCAxNiwgMjE3LCA3MywgMjA4LCAxMTcsIAorICAgIDMyLCAxNiwgMjA0LCAxNDAsIDIwOCwgMTE3LCAzMiwgMTYsIDIwNiwgNDIsIDIwOCwgMTE3LCAzMiwgMTYsIDIzNiwgMjI4LCAKKyAgICAyMDgsIDExNywgMzIsIDE2LCAyMzcsIDYwLCAyMDgsIDExNywgMzIsIDE2LCAyMDksIDEwNSwgMjA4LCAxMTcsIDMyLCAxNiwgCisgICAgMjA5LCAxMDMsIDIzNiwgMjA4LCAzMiwgMTYsIDIzNiwgMjI2LCAyMzYsIDIwOCwgMzIsIDE2LCAyMzYsIDE1NywgMjQ2LCAKKyAgICAxMjQsIDMyLCAxNiwgMjM2LCAxNTcsIDI0NiwgMTI1LCAyMTcsIDUsIDI1MSwgMTEwLCAzMiwgMTYsIDIzNiwgMTU3LCAyNDYsIAorICAgIDEyNSwgMjE3LCA1LCAyNDksIDU3LCAzMiwgMTYsIDI0NywgMjI0LCAyNDYsIDEyNCwgMzIsIDE2LCAyMzgsIDYsIDI0NiwgCisgICAgMTI0LCAzMiwgMTYsIDIzOCwgNiwgMjQ2LCAxMjUsIDIxNywgNSwgMjUxLCAxMTAsIDMyLCAxNiwgMjM4LCA2LCAyNDYsIAorICAgIDEyNSwgMjE3LCA1LCAyNDksIDU3LCAzMiwgMTYsIDIzOSwgMTQzLCAyNDYsIDEyMywgMzIsIDE2LCAyMzksIDE0MywgMjQ2LCAKKyAgICAxMjIsIDMyLCAxNiwgMjIxLCAyMSwgMjIyLCA3NSwgMjEzLCAxMTcsIDMyLCAxNiwgNTMsIDIxMCwgNzgsIDMyLCAxNiwgNTMsIAorICAgIDIzNywgNDQsIDMyLCAxNiwgMjM3LCA0NSwgMjAzLCAyMjgsIDMyLCAxNiwgMjM3LCA0NSwgMjM5LCAxNjcsIDMyLCAxNiwgCisgICAgMjIwLCAxMTcsIDIwMywgMjI4LCAzMiwgMTYsIDIyMCwgMTE3LCAyMzksIDE2NywgMzIsIDE2LCAyMTAsIDc5LCAyMDMsIAorICAgIDIyOCwgMzIsIDE2LCAyMTAsIDc5LCAyMzksIDE2NywgMzIsIDE2LCAyMTQsIDg4LCAxNTAsIDIxMCwgNzgsIDMyLCAxNiwgCisgICAgMjE0LCA4OCwgMTUwLCAyMzcsIDQ0LCAzMiwgMTYsIDI0NiwgNjcsIDIwNSwgMjM0LCAzMiwgMTYsIDI0MiwgMTgwLCAyMDUsIAorICAgIDIzNCwgMzIsIDE2LCAyMTcsIDUsIDI1MSwgMTEwLCAzMiwgMTYsIDIxNywgNSwgMjQ5LCA1NywgMzIsIDE2LCAyMTQsIDY5LCAKKyAgICAyNTEsIDExMCwgMzIsIDE2LCAyMTQsIDY5LCAyNDksIDU3LCAzMiwgMTYsIDIyMSwgMjQsIDIxMywgMTE3LCAzMiwgMTYsIAorICAgIDIwMSwgMzIsIDIxMywgMTE3LCAzMiwgMTYsIDE2NywgMjEzLCAxMTcsIDMyLCAxNiwgMjE0LCA4OCwgMjEzLCAxMTcsIDMyLCAKKyAgICAxNiwgMjM4LCAyMjgsIDIxMywgMTE3LCAzMiwgMTYsIDIwOSwgOTksIDIxMywgMTE3LCAzMiwgMTYsIDIwNiwgNjUsIDIxMywgCisgICAgMTE3LCAzMiwgMTYsIDIwOSwgOTEsIDIxMywgMTE3LCAzMiwgMTYsIDExMiwgMjMzLCA4MywgMjA0LCAxNTcsIDIxMywgMTE3LCAKKyAgICAzMiwgMTYsIDIwMCwgMTk2LCAyMTgsIDIwNSwgMzIsIDE2LCA5MywgMjE4LCAyMDUsIDMyLCAxNiwgMjQ2LCAxNTYsIDIwMCwgCisgICAgMTk2LCAyMTgsIDIwNSwgMzIsIDE2LCA1MiwgMjE4LCAyMDYsIDIwMSwgMzQsIDMyLCAxNiwgNTIsIDIxOCwgMjA2LCAyNDgsIAorICAgIDE0NCwgMzIsIDE2LCAyMDUsIDk5LCAyMTgsIDIwNiwgMTE1LCAyMDEsIDM0LCAzMiwgMTYsIDIwNSwgOTksIDIxOCwgMjA2LCAKKyAgICAxMTUsIDI0OCwgMTQ0LCAzMiwgMTYsIDIwNSwgOTksIDIxOCwgMjA2LCA0OSwgMjAxLCAzNCwgMzIsIDE2LCAyMDUsIDk5LCAKKyAgICAyMTgsIDIwNiwgNDksIDI0OCwgMTQ0LCAzMiwgMTYsIDIwNSwgOTksIDIxOCwgMjA2LCA1MSwgMjAxLCAzNCwgMzIsIDE2LCAKKyAgICAyMDUsIDk5LCAyMTgsIDIwNiwgNTEsIDI0OCwgMTQ0LCAzMiwgMTYsIDIwNSwgOTksIDIxOCwgMjA2LCAxMjcsIDIwMSwgMzQsIAorICAgIDMyLCAxNiwgMjA1LCA5OSwgMjE4LCAyMDYsIDEyNywgMjQ4LCAxNDQsIDMyLCAxNiwgMjA1LCA5OSwgMjE4LCAyMDYsIDExNSwgCisgICAgNTEsIDIwMSwgMzQsIDMyLCAxNiwgMjA1LCA5OSwgMjE4LCAyMDYsIDExNSwgNTEsIDI0OCwgMTQ0LCAzMiwgMTYsIDIyMSwgCisgICAgODIsIDIxOCwgMjA2LCAyMDEsIDM0LCAzMiwgMTYsIDIyMSwgODIsIDIxOCwgMjA2LCAyNDgsIDE0NCwgMzIsIDE2LCAyMDUsIAorICAgIDk2LCAyMTgsIDIwNiwgMTI3LCAyMDEsIDM0LCAzMiwgMTYsIDIwNSwgOTYsIDIxOCwgMjA2LCAxMjcsIDI0OCwgMTQ0LCAzMiwgCisgICAgMTYsIDIxNiwgMTE2LCAyMTgsIDIwNSwgMzIsIDE2LCAyMDIsIDE4NiwgMjE4LCAyMDUsIDMyLCAxNiwgMjE4LCAyMDYsIAorICAgIDI0OCwgMTQ0LCAzMiwgMTYsIDIxOCwgOTgsIDIxOCwgMjA1LCAzMiwgMTYsIDI0NiwgOTQsIDIxOCwgMjA2LCAyMDEsIDM0LCAKKyAgICAzMiwgMTYsIDI0NiwgOTQsIDIxOCwgMjA2LCAyNDgsIDE0NCwgMzIsIDE2LCAyNDgsIDU3LCAzMiwgMTYsIDIwMSwgMzIsIAorICAgIDIxOCwgMjA5LCAzMiwgMTYsIDE2NywgMjE4LCAyMDksIDMyLCAxNiwgMjE0LCA4OCwgMjE4LCAyMDksIDMyLCAxNiwgMjM4LCAKKyAgICAyMjgsIDIxOCwgMjA5LCAzMiwgMTYsIDIwOSwgOTksIDIxOCwgMjA5LCAzMiwgMTYsIDIwNiwgNjUsIDIxOCwgMjA5LCAzMiwgCisgICAgMTYsIDIwOSwgOTEsIDIxOCwgMjA5LCAzMiwgMTYsIDExMiwgMjMzLCA4MywgMjA0LCAxNTcsIDIxOCwgMjA5LCAzMiwgMTYsIAorICAgIDM4LCAyMDgsIDkyLCAzMiwgMTYsIDM4LCAyMDgsIDIwMCwgMjA4LCA5MiwgMzIsIDE2LCAzOCwgMjA1LCAxMDcsIDMyLCAxNiwgCisgICAgMzgsIDIwNSwgMTA2LCAzMiwgMTYsIDM4LCAyMDUsIDEwNSwgMzIsIDE2LCAyMzcsIDg0LCAyMDUsIDEwNywgMzIsIDE2LCAKKyAgICAyMzcsIDg0LCAyMDUsIDEwNiwgMzIsIDE2LCAyMzcsIDg0LCAyMDUsIDEwNSwgMzIsIDE2LCAzOCwgMjUwLCAxMzYsIDI0MCwgCisgICAgMTgyLCAzMiwgMTYsIDM4LCAyMzcsIDUyLCAzMiwgMTYsIDM4LCAyMzcsIDUxLCAzMiwgMTYsIDM4LCAyMzcsIDUwLCAzMiwgCisgICAgMTYsIDM4LCAyMzcsIDQ5LCAzMiwgMTYsIDM4LCAyMzcsIDQ4LCAzMiwgMTYsIDI0OCwgMjQ0LCAyNDksIDUsIDMyLCAxNiwgCisgICAgMjM4LCAxNzEsIDI0OSwgNSwgMzIsIDE2LCAyNDgsIDI0NCwgMjA2LCA3LCAzMiwgMTYsIDIzOCwgMTcxLCAyMDYsIDcsIDMyLCAKKyAgICAxNiwgMjQ4LCAyNDQsIDIwOSwgNTQsIDMyLCAxNiwgMjM4LCAxNzEsIDIwOSwgNTQsIDMyLCAxNiwgMjQ4LCAyNDQsIDIxNSwgCisgICAgMjExLCAzMiwgMTYsIDIzOCwgMTcxLCAyMTUsIDIxMSwgMzIsIDE2LCAzOCwgMjUxLCAyNTEsIDMyLCAxNiwgMzgsIDIwOCwgCisgICAgMTIwLCAzMiwgMTYsIDM4LCAyMDYsIDE1NCwgMzIsIDE2LCAzOCwgMjA4LCAxMjEsIDMyLCAxNiwgMzgsIDIyMiwgMTU0LCAKKyAgICAzMiwgMTYsIDM4LCAyMjIsIDE1MywgMzIsIDE2LCAzOCwgMjUxLCAyNTAsIDMyLCAxNiwgMzgsIDIyNCwgNjEsIDMyLCAxNiwgCisgICAgMjUwLCAyMDgsIDIwMywgMjI4LCAzMiwgMTYsIDI1MCwgMjA4LCAyMzksIDE2NywgMzIsIDE2LCAzOCwgMjQwLCAxOTcsIDMyLCAKKyAgICAxNiwgMzgsIDIxMywgMjMsIDMyLCAxNiwgMzgsIDIzNywgMzMsIDMyLCAxNiwgMzgsIDIwOSwgNTAsIDMyLCAxNiwgMzgsIAorICAgIDI0OCwgMjIyLCAzMiwgMTYsIDM4LCA1MywgMjA1LCAxNjMsIDMyLCAxNiwgMzgsIDIwNSwgODMsIDIwNSwgMTYzLCAzMiwgCisgICAgMTYsIDIxMywgMjgsIDMyLCAxNiwgMjA4LCAxNCwgMzIsIDE2LCAxOTksIDE1NywgMzIsIDE2LCAyMTUsIDIwMywgMzIsIDE2LCAKKyAgICAyMjIsIDYsIDMyLCAxNiwgMjM2LCAyMzgsIDMyLCAxNiwgMjQyLCAyNDUsIDMyLCAxNiwgMjQxLCAxNjIsIDMyLCAxNiwgCisgICAgMjM1LCA5MCwgMjE4LCAyMTAsIDIwOSwgNzUsIDMyLCAxNiwgMjM1LCA5MCwgMjE4LCAyMTAsIDIxOCwgMjQyLCAyMDksIDc1LCAKKyAgICAzMiwgMTYsIDIwNSwgMTMzLCAzMiwgMTYsIDIwNCwgMTg2LCAzMiwgMTYsIDIyOCwgNTAsIDIwNCwgMTg2LCAzMiwgMTYsIAorICAgIDIwNCwgMTg3LCAyMDksIDc1LCAzMiwgMTYsIDIwNCwgMTg3LCAyMDMsIDIyOCwgMzIsIDE2LCAyMTcsIDIyLCAyMDgsIDQ2LCAKKyAgICAzMiwgMTYsIDIxNywgMjIsIDIwOCwgNDMsIDMyLCAxNiwgMjE3LCAyMiwgMjA4LCA0MiwgMzIsIDE2LCAyMTcsIDIyLCAyMDgsIAorICAgIDQxLCAzMiwgMTYsIDIxNywgMjIsIDIwOCwgNDAsIDMyLCAxNiwgMjE3LCAyMiwgMjA4LCAzOSwgMzIsIDE2LCAyMTcsIDIyLCAKKyAgICAyMDgsIDM4LCAzMiwgMTYsIDIxNywgMjIsIDIwOCwgMzcsIDMyLCAxNiwgMjE3LCAyMiwgMjA4LCAzNiwgMzIsIDE2LCAyMTcsIAorICAgIDIyLCAyMDgsIDQ1LCAzMiwgMTYsIDIxNywgMjIsIDIwOCwgNDQsIDMyLCAxNiwgMjM0LCAxNDksIDMyLCAxNiwgMjIwLCAzMiwgCisgICAgMzIsIDE2LCAyMzgsIDE3MSwgNzYsIDIwOCwgODIsIDMyLCAxNiwgMjQxLCAxNTUsIDIwOSwgNzUsIDMyLCAxNiwgMzgsIAorICAgIDEyNywgMjQ4LCA4NSwgMzIsIDE2LCAzOCwgMTE1LCAyNDgsIDg1LCAzMiwgMTYsIDM4LCAyMzQsIDE2MiwgMzIsIDE2LCAzOCwgCisgICAgMjA5LCA0MCwgMjE1LCAxMzYsIDMyLCAxNiwgMjE2LCA2NiwgODEsIDMyLCAxNiwgMjE2LCA2NiwgMTE1LCA4MSwgMzIsIDE2LCAKKyAgICAxNjcsIDIxNiwgNjYsIDgxLCAzMiwgMTYsIDIzNSwgMTI1LCAyMDMsIDIyOCwgMzIsIDE2LCAyMzUsIDEyNSwgMjM5LCAxNjcsIAorICAgIDMyLCAxNiwgMywgMjM3LCA4MywgMzIsIDE2LCAyNDIsIDEzLCAzMiwgMTYsIDI0MiwgMTQsIDI1MSwgMTI0LCAzMiwgMTYsIAorICAgIDIyMiwgMTIxLCAzMiwgMTYsIDIyNCwgODAsIDMyLCAxNiwgMjQ4LCA1NCwgMzIsIDE2LCAyMTAsIDE3MSwgMjAxLCAzNCwgCisgICAgMzIsIDE2LCAyMTAsIDE3MSwgMjQ4LCAxNDQsIDMyLCAxNiwgMjIxLCAxNjAsIDMyLCAxNiwgMjIxLCAxNjEsIDI0OCwgMTQ0LCAKKyAgICAzMiwgMTYsIDIxMCwgMTY1LCAyMDEsIDM0LCAzMiwgMTYsIDIxMCwgMTY1LCAyNDgsIDE0NCwgMzIsIDE2LCAyMzYsIDE3NCwgCisgICAgMjAxLCAzNCwgMzIsIDE2LCAyMzYsIDE3NCwgMjQ4LCAxNDQsIDMyLCAxNiwgMjI0LCA4MSwgMjE2LCAyNSwgMjEzLCAxMTcsIAorICAgIDMyLCAxNiwgMjI0LCA4MSwgMjI4LCAxMjIsIDIxMywgMTE3LCAzMiwgMTYsIDI0OCwgNTUsIDIxMywgMTE3LCAzMiwgMTYsIAorICAgIDIxMCwgMTcxLCAyMTMsIDExNywgMzIsIDE2LCAyMjEsIDE2MSwgMjEzLCAxMTcsIDMyLCAxNiwgMjEwLCAxNjUsIDIxMywgCisgICAgMTE3LCAzMiwgMTYsIDIwNiwgMTY4LCAyMTYsIDIzLCAyNDIsIDIwNywgMjE0LCAyNDksIDIxNiwgMjQsIDMyLCAxNiwgMjA2LCAKKyAgICAxNjgsIDIxNiwgMjMsIDI0MiwgMjA3LCAyMTQsIDI0OSwgMjI4LCAxMjEsIDMyLCAxNiwgMjA2LCAxNjgsIDIxNiwgMjMsIAorICAgIDI0MiwgMjA3LCAyMTQsIDI0OSwgMjE2LCAyNSwgMjQxLCAyNCwgMzIsIDE2LCAyMDYsIDE2OCwgMjI4LCAxMjAsIDI0MiwgCisgICAgMjA3LCAyMTQsIDI0OSwgMjE2LCAyNCwgMzIsIDE2LCAyMDYsIDE2OCwgMjI4LCAxMjAsIDI0MiwgMjA3LCAyMTQsIDI0OSwgCisgICAgMjI4LCAxMjEsIDMyLCAxNiwgMjA2LCAxNjgsIDIyOCwgMTIwLCAyNDIsIDIwNywgMjE0LCAyNDksIDIyOCwgMTIyLCAyNDEsIAorICAgIDI0LCAzMiwgMTYsIDIwNiwgMTY4LCAyMjgsIDEyMCwgMjQyLCAyMDcsIDIxNCwgMjQ5LCAyMjgsIDEyMiwgMjQxLCAyMywgCisgICAgMzIsIDE2LCAyMDYsIDE2OCwgMjI4LCAxMjAsIDI0MiwgMjA3LCAyMTQsIDI0OSwgMjI4LCAxMjIsIDI0MSwgMjIsIDMyLCAKKyAgICAxNiwgMjQyLCAyMzcsIDMyLCAxNiwgMjM1LCA2MywgMjQ3LCAyMjQsIDI0NiwgMTI0LCAzMiwgMTYsIDIzNSwgNjMsIDIzOCwgCisgICAgNiwgMjQ2LCAxMjQsIDMyLCAxNiwgNTIsIDI1MCwgMTAzLCAzMiwgMTYsIDIwMiwgMjA3LCAzMiwgMTYsIDIxNSwgMTAzLCAKKyAgICAzMiwgMTYsIDI0NiwgMTE1LCAzMiwgMTYsIDIxMSwgMjI2LCAzMiwgMTYsIDI0NiwgMTE5LCAzMiwgMTYsIDIwNSwgMTUxLCAKKyAgICAzMiwgMTYsIDIxNSwgNzIsIDMyLCAxNiwgMjE1LCA3MywgMjM3LCAzNiwgMzIsIDE2LCAyMTEsIDIyNywgMjM3LCAzNiwgMzIsIAorICAgIDE2LCAyMDUsIDE1MiwgMjEzLCAxMTQsIDMyLCAxNiwgMjE2LCA2LCAyMDgsIDUsIDMyLCAxNiwgMjI2LCAxNTMsIDI0NywgCisgICAgMjI0LCAyNDYsIDEyNCwgMzIsIDE2LCAyMjYsIDE1MywgMjM4LCAxNzEsIDc2LCAyMTUsIDE5NiwgMzIsIDE2LCAyMjYsIAorICAgIDE1MywgNDcsIDIxOCwgMjA5LCAzMiwgMTYsIDIyNiwgMTUzLCAyMTMsIDE4MiwgODEsIDMyLCAxNiwgMjI2LCAxNTMsIDIwMSwgCisgICAgMzIsIDIxOCwgMjA5LCAzMiwgMTYsIDIyNiwgMTUzLCAxNjcsIDIxOCwgMjA5LCAzMiwgMTYsIDIyNiwgMTUzLCAyMTQsIDg4LCAKKyAgICAyMTgsIDIxMCwgMjA4LCA5MywgMjM5LCAxNjcsIDMyLCAxNiwgMjI2LCAxNTMsIDIxNCwgODgsIDIxOCwgMjEwLCAyMDgsIAorICAgIDkzLCAyMDMsIDIyOCwgMzIsIDE2LCAyMjYsIDE1MywgMjM4LCAyMjgsIDIxOCwgMjEwLCAyMDgsIDkzLCAyMzksIDE2NywgCisgICAgMzIsIDE2LCAyMjYsIDE1MywgMjM4LCAyMjgsIDIxOCwgMjEwLCAyMDgsIDkzLCAyMDMsIDIyOCwgMzIsIDE2LCAyMjYsIAorICAgIDE1MywgMjM3LCA0NSwgNTQsIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgMTYyLCAzMSwgMjAyLCAxOTIsIDIxOCwgCisgICAgMjEzLCAyMDcsIDE1MSwgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxNDEsIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIAorICAgIDIwNywgMTM0LCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDEyNiwgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAKKyAgICAxMjAsIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgMTE5LCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDExOCwgCisgICAgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxMTcsIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgMTYxLCAzMSwgCisgICAgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDE2MCwgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxNTksIDMxLCAyMDIsIAorICAgIDE5MiwgMjE4LCAyMTMsIDIwNywgMTU4LCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDE1NywgMzEsIDIwMiwgMTkyLCAKKyAgICAyMTgsIDIxMywgMjA3LCAxNTYsIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgMTU1LCAzMSwgMjAyLCAxOTIsIDIxOCwgCisgICAgMjEzLCAyMDcsIDE1NCwgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxNTMsIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIAorICAgIDIwNywgMTUyLCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDE1MCwgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAKKyAgICAxNDksIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgMTQ4LCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDE0NywgCisgICAgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxNDYsIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgMTI1LCAzMSwgCisgICAgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDEyNCwgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxMjMsIDMxLCAyMDIsIAorICAgIDE5MiwgMjE4LCAyMTMsIDIwNywgMTIyLCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDEyMSwgMzEsIDIyOCwgNzIsIAorICAgIDIxOCwgMjEzLCAyMDcsIDE2MiwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDE1MSwgMzEsIDIyOCwgNzIsIDIxOCwgCisgICAgMjEzLCAyMDcsIDEzNCwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDEyNiwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAKKyAgICAyMDcsIDExOSwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDExOCwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIAorICAgIDE2MCwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDE1OSwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDE1OCwgCisgICAgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDE1NywgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDE1NCwgMzEsIAorICAgIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDE1MywgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDE1MiwgMzEsIDIyOCwgCisgICAgNzIsIDIxOCwgMjEzLCAyMDcsIDE0NywgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDE0NiwgMzEsIDIyOCwgNzIsIAorICAgIDIxOCwgMjEzLCAyMDcsIDE0NSwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDE0NCwgMzEsIDIyOCwgNzIsIDIxOCwgCisgICAgMjEzLCAyMDcsIDE0MywgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDE0MiwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAKKyAgICAyMDcsIDE0MCwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDEzOSwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIAorICAgIDEzOCwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDEzNywgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDEzNiwgCisgICAgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDEzNSwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDEzMywgMzEsIAorICAgIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDEzMiwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDEzMSwgMzEsIDIyOCwgCisgICAgNzIsIDIxOCwgMjEzLCAyMDcsIDEzMCwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDEyOSwgMzEsIDIyOCwgNzIsIAorICAgIDIxOCwgMjEzLCAyMDcsIDEyOCwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDEyNywgMzEsIDIyOCwgNzIsIDIxOCwgCisgICAgMjEzLCAyMDcsIDEyNSwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDEyNCwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAKKyAgICAyMDcsIDEyMywgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIDEyMiwgMzEsIDIyOCwgNzIsIDIxOCwgMjEzLCAyMDcsIAorICAgIDEyMSwgMzgsIDMxLCAzMiwgMjA1LCA3OSwgMzgsIDMxLCAzMiwgMjA2LCAxMzgsIDM4LCAzMSwgMzIsIDIxNiwgMzUsIDMxLCAKKyAgICAzMiwgMjI1LCAxMCwgMjIxLCA5NywgMzYsIDIzOSwgMTcsIDI0MSwgMzgsIDM2LCAyMzQsIDEyMiwgMjM5LCAxNywgMjQxLCAKKyAgICAzOCwgMzYsIDIzMywgODcsIDIzOSwgMTcsIDI0MSwgMzgsIDM2LCAyMzksIDE2LCAyMzQsIDEyMywgMjQxLCAzOCwgMzYsIAorICAgIDIzOSwgMTYsIDIzMywgODYsIDI0MSwgMzgsIDM2LCAyMzksIDE3LCAyMDYsIDE0MCwgMzYsIDI0NywgNTUsIDIwNiwgMTQwLCAKKyAgICAzNiwgMjM2LCAxODMsIDI0NiwgMTU1LCAyMDYsIDE0MCwgMzYsIDIyMSwgMTUyLCAyMDYsIDE0MCwgMzYsIDI0OSwgNjcsIAorICAgIDIwNiwgMTQwLCAzNiwgMjI3LCAyLCAyMDksIDUzLCAyMDYsIDE0MCwgMzYsIDI0MywgMzUsIDIwNiwgMTQwLCAzNiwgMjUwLCAKKyAgICAxODMsIDIwNiwgMTQwLCAzNiwgMjE3LCAzOSwgMjA2LCAxNDAsIDM2LCAyNDgsIDY0LCAyMTYsIDI1NCwgMjA2LCAxNDAsIAorICAgIDM2LCAyNDEsIDE1NywgMjE3LCAzNCwgMjQwLCAyNDYsIDIwNiwgMTQwLCAzNiwgMjQwLCAyNDMsIDIwNiwgMTQwLCAzNiwgCisgICAgMTk5LCAyMjMsIDIwNiwgMTQwLCAzNiwgMjI4LCAxMDgsIDIwNiwgMTQwLCAzNiwgMjE2LCA0NSwgMjA2LCAxNDAsIDM2LCAKKyAgICAyMTMsIDE4OSwgMjA2LCAxNDAsIDM2LCAyNDMsIDQ3LCAyMDYsIDE0MCwgMzYsIDIzMywgMTk4LCAyNDksIDEyOSwgMjA2LCAKKyAgICAxNDAsIDM2LCAyMDEsIDEwNiwgMjA2LCAxNDAsIDM2LCAyMzcsIDgsIDIwNiwgMTQwLCAzNiwgMjUxLCAyMjQsIDIwNiwgCisgICAgMTQwLCAzNiwgMjEzLCAxNDYsIDIwNiwgMTQwLCAzNiwgMjEzLCAxMjEsIDIwNiwgMTQwLCAzNiwgMjM5LCAxNSwgMjA2LCAKKyAgICAxNDAsIDM2LCAyMjcsIDE1MCwgMjA2LCAxNDAsIDM2LCAyNDMsIDQyLCAyMDYsIDE0MCwgMzYsIDIzOCwgMTcwLCAyMDYsIAorICAgIDE0MCwgMzYsIDIzOSwgMTA5LCAyMDYsIDE0MCwgMzYsIDI0NywgMjQsIDIwNiwgMTQwLCAzNiwgMjQxLCAxNjcsIDIwNiwgCisgICAgMTQwLCAzNiwgMjcsIDIxMywgMTIwLCAyMDYsIDE0MCwgMzYsIDIxNiwgMjAyLCAyMDYsIDE0MCwgMzYsIDIyNSwgMTQsIAorICAgIDIwNiwgMTQwLCAzNiwgMjQ2LCAxMDgsIDIwNiwgMTQwLCAzNiwgMjI2LCAxNDMsIDIwNiwgMTQwLCAzNiwgMjM2LCAzOSwgCisgICAgMjA2LCAxNDAsIDM2LCAyMDgsIDU4LCAyMDYsIDE0MCwgMzYsIDIxNCwgMjAxLCAyMDYsIDE0MCwgMzYsIDIzNiwgMTgyLCAKKyAgICAyMDYsIDE0MCwgMzYsIDIxMywgMTIyLCAyMDYsIDE0MCwgMzYsIDIyNSwgNTMsIDIxNywgMzQsIDIyMSwgMTMyLCAyMDYsIAorICAgIDE0MCwgMzYsIDIxMywgMTE4LCAyMDYsIDE0MCwgMzYsIDIzNSwgMTEwLCAyMDUsIDE4NiwgMjIyLCA1OSwgMjA2LCAxNDAsIAorICAgIDM2LCAyMzgsIDE3MiwgMjA2LCAxNDAsIDM2LCAyMDgsIDcxLCAyMDYsIDE0MCwgMzYsIDIzNSwgNjUsIDIwNiwgMTQwLCAzNiwgCisgICAgMjM4LCAxNjMsIDIwNiwgMTQwLCAzNiwgMjE2LCA4OSwgMjA2LCAxNDAsIDM2LCAyMTMsIDE2LCAyMDYsIDE0MCwgMzYsIAorICAgIDIzNywgMzQsIDIwNiwgMTQwLCAzNiwgMjAzLCA2OCwgMjE3LCAzNCwgMjAxLCA4NiwgMjA2LCAxNDAsIDM2LCAyNDMsIDUyLCAKKyAgICAyMDYsIDE0MCwgMzYsIDIyMiwgNzQsIDIwNiwgMTQwLCAzNiwgMjM4LCA3NiwgMjA2LCAxNDAsIDM2LCAyMDMsIDIzOCwgCisgICAgMjA2LCAxNDAsIDM2LCAyNDEsIDI1LCAyMDYsIDE0MCwgMzYsIDI0NiwgMTEwLCAyMjEsIDU4LCAyMDYsIDE0MCwgMzYsIAorICAgIDIzNSwgNDIsIDIwNiwgMTQwLCAzNiwgMjM2LCA0MCwgMjI4LCAxMTcsIDIwNiwgMTQwLCAzNiwgMjIyLCAxMjksIDIwNiwgCisgICAgMTQwLCAzNiwgMjUxLCAyNDYsIDIwNiwgMTQwLCAzNiwgMjM4LCAxODgsIDIwNiwgMTQwLCAzNiwgMjM5LCAxNzEsIDIwNiwgCisgICAgMTQwLCAzNiwgMjAxLCA4NCwgMjA2LCAxNDAsIDM2LCAyMDksIDEzNCwgMjA2LCAxNDAsIDM2LCAyMjgsIDgxLCAyMDYsIAorICAgIDE0MCwgMzYsIDI0MSwgMTI0LCAyMDYsIDE0MCwgMzYsIDI0MSwgMjQ4LCAyMDYsIDE0MCwgMzYsIDI0MSwgMjEsIDIwNiwgCisgICAgMTQwLCAzNiwgMjM4LCA0MCwgMjA2LCAxNDAsIDM2LCAyMTAsIDEyOCwgMjA2LCAxNDAsIDM2LCAyMDgsIDc1LCAyMDYsIAorICAgIDE0MCwgMzYsIDIzNCwgMTY0LCAyMDYsIDE0MCwgMzYsIDI0NiwgNjMsIDIwNiwgMTQwLCAzNiwgMjQ2LCAxMDUsIDIwNiwgCisgICAgMTQwLCAzNiwgMjM3LCAxNzQsIDIwNiwgMTQwLCAzNiwgMjUxLCAxODgsIDIwNiwgMTQwLCAzNiwgMjQ2LCA2MiwgMjA2LCAKKyAgICAxNDAsIDM2LCAyMTcsIDc5LCAyMDYsIDEwNywgMjAzLCA0NSwgMjA2LCAxNDAsIDM2LCAyNDEsIDQ3LCAyMDYsIDE0MCwgMzYsIAorICAgIDIyNSwgMTY0LCAyMDYsIDE0MCwgMzYsIDIzNiwgMjMyLCAyNDMsIDMsIDIxMiwgMjQ3LCAyMDMsIDI0MCwgMTcsIDEwMiwgCisgICAgMjQzLCAzLCAyMTIsIDI0NywgMjAzLCAyNDAsIDE3LCAxMDUsIDI0MywgMywgMjEyLCAyNDcsIDIwMywgMjQwLCAxNywgMTQ3LCAKKyAgICAyNDMsIDMsIDIxMiwgMjQ3LCAyMDMsIDI0MCwgMTcsIDE0OSwgMjQzLCAzLCAyMTIsIDI0NywgMjAzLCAyNDAsIDE3LCAxNjQsIAorICAgIDI0MywgMywgMjEyLCAyNDcsIDIwMywgMjQwLCAxNywgMTg3LCAyNDMsIDMsIDIxMiwgMjQ3LCAyMDMsIDI0MCwgMTcsIDIxMCwgCisgICAgMTM1LCAyNDMsIDMsIDIxMiwgMjQ3LCAyMDMsIDI0MCwgMTcsIDE5MiwgMjQzLCAzLCAyMTIsIDI0NywgMjAzLCAyNDAsIDE3LCAKKyAgICAyMTksIDExMywgMjQzLCAzLCAyMTIsIDI0NywgMjA2LCAxNjIsIDE3LCAxMDIsIDI0MywgMywgMjEyLCAyNDcsIDIwNiwgCisgICAgMTYyLCAxNywgMTA1LCAyNDMsIDMsIDIxMiwgMjQ3LCAyMDYsIDE2MiwgMTcsIDE0NywgMjQzLCAzLCAyMTIsIDI0NywgMjA2LCAKKyAgICAxNjIsIDE3LCAxNDksIDI0MywgMywgMjEyLCAyNDcsIDIwNiwgMTYyLCAxNywgMTY0LCAyNDMsIDMsIDIxMiwgMjQ3LCAyMDYsIAorICAgIDE2MiwgMTcsIDE4NywgMjQzLCAzLCAyMTIsIDI0NywgMjA2LCAxNjIsIDE3LCAyMTAsIDEzNSwgMjQzLCAzLCAyMTIsIDI0NywgCisgICAgMjA2LCAxNjIsIDE3LCAxOTIsIDI0MywgMywgMjEyLCAyNDcsIDIwNiwgMTYyLCAxNywgMjE5LCAxMTMsIDEzLCAyNywgNiwgCisgICAgNjIsIDEzLCAyNywgNiwgMjUwLCAxMDMsIDEzLCAyNywgNiwgMjQ3LCAyMjMsIDEzLCAyNywgNiwgMjQyLCAxNTMsIDEzLCAKKyAgICAyNywgNiwgNzIsIDEzLCAyNywgNiwgMjM4LCA1LCAxMywgMjcsIDYsIDIzNiwgMTU2LCAxMywgMjcsIDYsIDIzNCwgMjQ3LCAKKyAgICAxMywgMjcsIDYsIDcwLCAxMywgMjcsIDYsIDIyNywgMjUxLCAxMywgMjcsIDYsIDIyNywgMTE4LCAxMywgMjcsIDYsIDE1NiwgCisgICAgMTMsIDI3LCA2LCAyMjMsIDI0MywgMTMsIDI3LCA2LCAyMjAsIDIxNCwgMTMsIDI3LCA2LCA3NCwgMTMsIDI3LCA2LCAyMTYsIAorICAgIDIyNiwgMTMsIDI3LCA2LCAyMTQsIDE2NywgMTMsIDI3LCA2LCAxNDYsIDEzLCAyNywgNiwgMjEyLCAxMjIsIDEzLCAyNywgNiwgCisgICAgMjA3LCA4MywgMTMsIDI3LCA2LCA2NiwgMTMsIDI3LCA2LCAyMDMsIDE2OCwgMTMsIDI3LCA2LCAyMDEsIDE0NywgMTMsIDI3LCAKKyAgICA2LCAyMDAsIDE5NSwgMTMsIDI3LCA2LCAyMDAsIDEyMywgMTMsIDI3LCA2LCAxOTksIDE1NywgMTMsIDI3LCA0LCA2MiwgMTMsIAorICAgIDI3LCA0LCAyNTAsIDEwMywgMTMsIDI3LCA0LCAyNDcsIDIyMywgMTMsIDI3LCA0LCAyNDIsIDE1MywgMTMsIDI3LCA0LCA3MiwgCisgICAgMTMsIDI3LCA0LCAyMzgsIDUsIDEzLCAyNywgNCwgMjM2LCAxNTYsIDEzLCAyNywgNCwgMjM0LCAyNDcsIDEzLCAyNywgNCwgCisgICAgNzAsIDEzLCAyNywgNCwgMjI3LCAyNTEsIDEzLCAyNywgNCwgMjI3LCAxMTgsIDEzLCAyNywgNCwgMTU2LCAxMywgMjcsIDQsIAorICAgIDIyMywgMjQzLCAxMywgMjcsIDQsIDIyMCwgMjE0LCAxMywgMjcsIDQsIDc0LCAxMywgMjcsIDQsIDIxNiwgMjI2LCAxMywgCisgICAgMjcsIDQsIDIxNCwgMTY3LCAxMywgMjcsIDQsIDE0NiwgMTMsIDI3LCA0LCAyMTIsIDEyMiwgMTMsIDI3LCA0LCAyMDcsIDgzLCAKKyAgICAxMywgMjcsIDQsIDY2LCAxMywgMjcsIDQsIDIwMywgMTY4LCAxMywgMjcsIDQsIDIwMSwgMTQ3LCAxMywgMjcsIDQsIDIwMCwgCisgICAgMTk1LCAxMywgMjcsIDQsIDIwMCwgMTIzLCAxMywgMjcsIDQsIDE5OSwgMTU3LCAxMywgMzksIDYsIDYyLCAxMywgMzksIDYsIAorICAgIDI1MCwgMTAzLCAxMywgMzksIDYsIDI0NywgMjIzLCAxMywgMzksIDYsIDI0MiwgMTUzLCAxMywgMzksIDYsIDcyLCAxMywgCisgICAgMzksIDYsIDIzOCwgNSwgMTMsIDM5LCA2LCAyMzYsIDE1NiwgMTMsIDM5LCA2LCAyMzQsIDI0NywgMTMsIDM5LCA2LCA3MCwgCisgICAgMTMsIDM5LCA2LCAyMjcsIDI1MSwgMTMsIDM5LCA2LCAyMjcsIDExOCwgMTMsIDM5LCA2LCAxNTYsIDEzLCAzOSwgNiwgMjIzLCAKKyAgICAyNDMsIDEzLCAzOSwgNiwgMjIwLCAyMTQsIDEzLCAzOSwgNiwgNzQsIDEzLCAzOSwgNiwgMjE2LCAyMjYsIDEzLCAzOSwgNiwgCisgICAgMjE0LCAxNjcsIDEzLCAzOSwgNiwgMTQ2LCAxMywgMzksIDYsIDIxMiwgMTIyLCAxMywgMzksIDYsIDIwNywgODMsIDEzLCAKKyAgICAzOSwgNiwgNjYsIDEzLCAzOSwgNiwgMjAzLCAxNjgsIDEzLCAzOSwgNiwgMjAxLCAxNDcsIDEzLCAzOSwgNiwgMjAwLCAxOTUsIAorICAgIDEzLCAzOSwgNiwgMjAwLCAxMjMsIDEzLCAzOSwgNiwgMTk5LCAxNTcsIDEzLCAzOSwgNCwgNjIsIDEzLCAzOSwgNCwgMjUwLCAKKyAgICAxMDMsIDEzLCAzOSwgNCwgMjQ3LCAyMjMsIDEzLCAzOSwgNCwgMjQyLCAxNTMsIDEzLCAzOSwgNCwgNzIsIDEzLCAzOSwgNCwgCisgICAgMjM4LCA1LCAxMywgMzksIDQsIDIzNiwgMTU2LCAxMywgMzksIDQsIDcwLCAxMywgMzksIDQsIDIyNywgMjUxLCAxMywgMzksIAorICAgIDQsIDIyNywgMTE4LCAxMywgMzksIDQsIDE1NiwgMTMsIDM5LCA0LCAyMjMsIDI0MywgMTMsIDM5LCA0LCAyMjAsIDIxNCwgCisgICAgMTMsIDM5LCA0LCA3NCwgMTMsIDM5LCA0LCAyMTYsIDIyNiwgMTMsIDM5LCA0LCAyMTQsIDE2NywgMTMsIDM5LCA0LCAxNDYsIAorICAgIDEzLCAzOSwgNCwgMjEyLCAxMjIsIDEzLCAzOSwgNCwgMjA3LCA4MywgMTMsIDM5LCA0LCA2NiwgMTMsIDM5LCA0LCAyMDMsIAorICAgIDE2OCwgMTMsIDM5LCA0LCAyMDEsIDE0NywgMTMsIDM5LCA0LCAyMDAsIDE5NSwgMTMsIDM5LCA0LCAyMDAsIDEyMywgMTMsIAorICAgIDM5LCA0LCAxOTksIDE1NywgMTMsIDI3LCAzOSwgNiwgNjIsIDEzLCAyNywgMzksIDYsIDI1MCwgMTAzLCAxMywgMjcsIDM5LCAKKyAgICA2LCAyNDcsIDIyMywgMTMsIDI3LCAzOSwgNiwgMjQyLCAxNTMsIDEzLCAyNywgMzksIDYsIDcyLCAxMywgMjcsIDM5LCA2LCAKKyAgICAyMzgsIDUsIDEzLCAyNywgMzksIDYsIDIzNiwgMTU2LCAxMywgMjcsIDM5LCA2LCAyMzQsIDI0NywgMTMsIDI3LCAzOSwgNiwgCisgICAgNzAsIDEzLCAyNywgMzksIDYsIDIyNywgMjUxLCAxMywgMjcsIDM5LCA2LCAyMjcsIDExOCwgMTMsIDI3LCAzOSwgNiwgMTU2LCAKKyAgICAxMywgMjcsIDM5LCA2LCAyMjMsIDI0MywgMTMsIDI3LCAzOSwgNiwgMjIwLCAyMTQsIDEzLCAyNywgMzksIDYsIDc0LCAxMywgCisgICAgMjcsIDM5LCA2LCAyMTYsIDIyNiwgMTMsIDI3LCAzOSwgNiwgMjE0LCAxNjcsIDEzLCAyNywgMzksIDYsIDE0NiwgMTMsIDI3LCAKKyAgICAzOSwgNiwgMjEyLCAxMjIsIDEzLCAyNywgMzksIDYsIDIwNywgODMsIDEzLCAyNywgMzksIDYsIDY2LCAxMywgMjcsIDM5LCAKKyAgICA2LCAyMDMsIDE2OCwgMTMsIDI3LCAzOSwgNiwgMjAxLCAxNDcsIDEzLCAyNywgMzksIDYsIDIwMCwgMTk1LCAxMywgMjcsIAorICAgIDM5LCA2LCAyMDAsIDEyMywgMTMsIDI3LCAzOSwgNiwgMTk5LCAxNTcsIDEzLCAyNywgMzksIDQsIDYyLCAxMywgMjcsIDM5LCAKKyAgICA0LCAyNTAsIDEwMywgMTMsIDI3LCAzOSwgNCwgMjQ3LCAyMjMsIDEzLCAyNywgMzksIDQsIDI0MiwgMTUzLCAxMywgMjcsIAorICAgIDM5LCA0LCA3MiwgMTMsIDI3LCAzOSwgNCwgMjM4LCA1LCAxMywgMjcsIDM5LCA0LCAyMzYsIDE1NiwgMTMsIDI3LCAzOSwgNCwgCisgICAgMjM0LCAyNDcsIDEzLCAyNywgMzksIDQsIDcwLCAxMywgMjcsIDM5LCA0LCAyMjcsIDI1MSwgMTMsIDI3LCAzOSwgNCwgMjI3LCAKKyAgICAxMTgsIDEzLCAyNywgMzksIDQsIDE1NiwgMTMsIDI3LCAzOSwgNCwgMjIzLCAyNDMsIDEzLCAyNywgMzksIDQsIDIyMCwgCisgICAgMjE0LCAxMywgMjcsIDM5LCA0LCA3NCwgMTMsIDI3LCAzOSwgNCwgMjE2LCAyMjYsIDEzLCAyNywgMzksIDQsIDIxNCwgMTY3LCAKKyAgICAxMywgMjcsIDM5LCA0LCAxNDYsIDEzLCAyNywgMzksIDQsIDIxMiwgMTIyLCAxMywgMjcsIDM5LCA0LCAyMDcsIDgzLCAxMywgCisgICAgMjcsIDM5LCA0LCA2NiwgMTMsIDI3LCAzOSwgNCwgMjAzLCAxNjgsIDEzLCAyNywgMzksIDQsIDIwMSwgMTQ3LCAxMywgMjcsIAorICAgIDM5LCA0LCAyMDAsIDE5NSwgMTMsIDI3LCAzOSwgNCwgMjAwLCAxMjMsIDEzLCAyNywgMzksIDQsIDE5OSwgMTU3LCAxMywgCisgICAgMTM1LCA2LCA2MiwgMTMsIDEzNSwgNiwgMjQ3LCAyMjMsIDEzLCAxMzUsIDYsIDI0MiwgMTUzLCAxMywgMTM1LCA2LCAyMzYsIAorICAgIDE1NiwgMTMsIDEzNSwgNiwgMjI3LCAyNTEsIDEzLCAxMzUsIDYsIDIyNywgMTE4LCAxMywgMTM1LCA2LCAyMjAsIDIxNCwgCisgICAgMTMsIDEzNSwgNiwgNzQsIDEzLCAxMzUsIDYsIDIxNiwgMjI2LCAxMywgMTM1LCA2LCAyMTQsIDE2NywgMTMsIDEzNSwgNiwgCisgICAgMjEyLCAxMjIsIDEzLCAxMzUsIDYsIDIwNywgODMsIDEzLCAxMzUsIDYsIDY2LCAxMywgMTM1LCA2LCAyMDMsIDE2OCwgMTMsIAorICAgIDEzNSwgNiwgMjAxLCAxNDcsIDEzLCAxMzUsIDYsIDIwMCwgMTk1LCAxMywgMTM1LCA2LCAyMDAsIDEyMywgMTMsIDEzNSwgNiwgCisgICAgMTk5LCAxNTcsIDEzLCAxMzUsIDQsIDYyLCAxMywgMTM1LCA0LCAyNTAsIDEwMywgMTMsIDEzNSwgNCwgMjQ3LCAyMjMsIDEzLCAKKyAgICAxMzUsIDQsIDI0MiwgMTUzLCAxMywgMTM1LCA0LCAyMzgsIDUsIDEzLCAxMzUsIDQsIDIzNCwgMjQ3LCAxMywgMTM1LCA0LCAKKyAgICA3MCwgMTMsIDEzNSwgNCwgMjI3LCAyNTEsIDEzLCAxMzUsIDQsIDIyNywgMTE4LCAxMywgMTM1LCA0LCAxNTYsIDEzLCAxMzUsIAorICAgIDQsIDIyMywgMjQzLCAxMywgMTM1LCA0LCAyMjAsIDIxNCwgMTMsIDEzNSwgNCwgMjE2LCAyMjYsIDEzLCAxMzUsIDQsIDIxNCwgCisgICAgMTY3LCAxMywgMTM1LCA0LCAxNDYsIDEzLCAxMzUsIDQsIDIxMiwgMTIyLCAxMywgMTM1LCA0LCAyMDcsIDgzLCAxMywgMTM1LCAKKyAgICA0LCA2NiwgMTMsIDEzNSwgNCwgMjAzLCAxNjgsIDEzLCAxMzUsIDQsIDIwMSwgMTQ3LCAxMywgMTM1LCA0LCAyMDAsIDE5NSwgCisgICAgMTMsIDEzNSwgNCwgMjAwLCAxMjMsIDEzLCAxMzUsIDQsIDE5OSwgMTU3LCAxMywgMjcsIDEzNSwgNiwgNjIsIDEzLCAyNywgCisgICAgMTM1LCA2LCAyNTAsIDEwMywgMTMsIDI3LCAxMzUsIDYsIDI0NywgMjIzLCAxMywgMjcsIDEzNSwgNiwgMjQyLCAxNTMsIDEzLCAKKyAgICAyNywgMTM1LCA2LCA3MiwgMTMsIDI3LCAxMzUsIDYsIDIzOCwgNSwgMTMsIDI3LCAxMzUsIDYsIDIzNiwgMTU2LCAxMywgMjcsIAorICAgIDEzNSwgNiwgMjM0LCAyNDcsIDEzLCAyNywgMTM1LCA2LCA3MCwgMTMsIDI3LCAxMzUsIDYsIDIyNywgMjUxLCAxMywgMjcsIAorICAgIDEzNSwgNiwgMjI3LCAxMTgsIDEzLCAyNywgMTM1LCA2LCAxNTYsIDEzLCAyNywgMTM1LCA2LCAyMjMsIDI0MywgMTMsIDI3LCAKKyAgICAxMzUsIDYsIDIyMCwgMjE0LCAxMywgMjcsIDEzNSwgNiwgNzQsIDEzLCAyNywgMTM1LCA2LCAyMTYsIDIyNiwgMTMsIDI3LCAKKyAgICAxMzUsIDYsIDIxNCwgMTY3LCAxMywgMjcsIDEzNSwgNiwgMTQ2LCAxMywgMjcsIDEzNSwgNiwgMjEyLCAxMjIsIDEzLCAyNywgCisgICAgMTM1LCA2LCAyMDcsIDgzLCAxMywgMjcsIDEzNSwgNiwgNjYsIDEzLCAyNywgMTM1LCA2LCAyMDMsIDE2OCwgMTMsIDI3LCAKKyAgICAxMzUsIDYsIDIwMSwgMTQ3LCAxMywgMjcsIDEzNSwgNiwgMjAwLCAxOTUsIDEzLCAyNywgMTM1LCA2LCAyMDAsIDEyMywgMTMsIAorICAgIDI3LCAxMzUsIDYsIDE5OSwgMTU3LCAxMywgMjcsIDEzNSwgNCwgNjIsIDEzLCAyNywgMTM1LCA0LCAyNTAsIDEwMywgMTMsIAorICAgIDI3LCAxMzUsIDQsIDI0NywgMjIzLCAxMywgMjcsIDEzNSwgNCwgMjQyLCAxNTMsIDEzLCAyNywgMTM1LCA0LCA3MiwgMTMsIAorICAgIDI3LCAxMzUsIDQsIDIzOCwgNSwgMTMsIDI3LCAxMzUsIDQsIDIzNiwgMTU2LCAxMywgMjcsIDEzNSwgNCwgMjM0LCAyNDcsIAorICAgIDEzLCAyNywgMTM1LCA0LCA3MCwgMTMsIDI3LCAxMzUsIDQsIDIyNywgMjUxLCAxMywgMjcsIDEzNSwgNCwgMjI3LCAxMTgsIAorICAgIDEzLCAyNywgMTM1LCA0LCAxNTYsIDEzLCAyNywgMTM1LCA0LCAyMjMsIDI0MywgMTMsIDI3LCAxMzUsIDQsIDIyMCwgMjE0LCAKKyAgICAxMywgMjcsIDEzNSwgNCwgNzQsIDEzLCAyNywgMTM1LCA0LCAyMTYsIDIyNiwgMTMsIDI3LCAxMzUsIDQsIDIxNCwgMTY3LCAKKyAgICAxMywgMjcsIDEzNSwgNCwgMTQ2LCAxMywgMjcsIDEzNSwgNCwgMjEyLCAxMjIsIDEzLCAyNywgMTM1LCA0LCAyMDcsIDgzLCAKKyAgICAxMywgMjcsIDEzNSwgNCwgNjYsIDEzLCAyNywgMTM1LCA0LCAyMDMsIDE2OCwgMTMsIDI3LCAxMzUsIDQsIDIwMSwgMTQ3LCAKKyAgICAxMywgMjcsIDEzNSwgNCwgMjAwLCAxOTUsIDEzLCAyNywgMTM1LCA0LCAyMDAsIDEyMywgMTMsIDI3LCAxMzUsIDQsIDE5OSwgCisgICAgMTU3LCAxMywgMTcwLCA2LCA2MiwgMTMsIDE3MCwgNiwgMjUwLCAxMDMsIDEzLCAxNzAsIDYsIDI0MiwgMTUzLCAxMywgMTcwLCAKKyAgICA2LCA3MiwgMTMsIDE3MCwgNiwgMjM4LCA1LCAxMywgMTcwLCA2LCAyMzYsIDE1NiwgMTMsIDE3MCwgNiwgMjI3LCAyNTEsIAorICAgIDEzLCAxNzAsIDYsIDIyNywgMTE4LCAxMywgMTcwLCA2LCAxNTYsIDEzLCAxNzAsIDYsIDIyMywgMjQzLCAxMywgMTcwLCA2LCAKKyAgICAyMjAsIDIxNCwgMTMsIDE3MCwgNiwgNzQsIDEzLCAxNzAsIDYsIDIxNiwgMjI2LCAxMywgMTcwLCA2LCAyMTQsIDE2NywgMTMsIAorICAgIDE3MCwgNiwgMjEyLCAxMjIsIDEzLCAxNzAsIDYsIDIwNywgODMsIDEzLCAxNzAsIDYsIDY2LCAxMywgMTcwLCA2LCAyMDMsIAorICAgIDE2OCwgMTMsIDE3MCwgNiwgMjAxLCAxNDcsIDEzLCAxNzAsIDYsIDIwMCwgMTk1LCAxMywgMTcwLCA2LCAyMDAsIDEyMywgCisgICAgMTMsIDE3MCwgNCwgNjIsIDEzLCAxNzAsIDQsIDI1MCwgMTAzLCAxMywgMTcwLCA0LCAyNDcsIDIyMywgMTMsIDE3MCwgNCwgCisgICAgMjQyLCAxNTMsIDEzLCAxNzAsIDQsIDcyLCAxMywgMTcwLCA0LCAyMzgsIDUsIDEzLCAxNzAsIDQsIDIzNiwgMTU2LCAxMywgCisgICAgMTcwLCA0LCAyMzQsIDI0NywgMTMsIDE3MCwgNCwgNzAsIDEzLCAxNzAsIDQsIDIyNywgMjUxLCAxMywgMTcwLCA0LCAyMjcsIAorICAgIDExOCwgMTMsIDE3MCwgNCwgMTU2LCAxMywgMTcwLCA0LCAyMjMsIDI0MywgMTMsIDE3MCwgNCwgMjIwLCAyMTQsIDEzLCAKKyAgICAxNzAsIDQsIDc0LCAxMywgMTcwLCA0LCAyMTYsIDIyNiwgMTMsIDE3MCwgNCwgMjE0LCAxNjcsIDEzLCAxNzAsIDQsIDE0NiwgCisgICAgMTMsIDE3MCwgNCwgMjEyLCAxMjIsIDEzLCAxNzAsIDQsIDIwNywgODMsIDEzLCAxNzAsIDQsIDY2LCAxMywgMTcwLCA0LCAKKyAgICAyMDMsIDE2OCwgMTMsIDE3MCwgNCwgMjAxLCAxNDcsIDEzLCAxNzAsIDQsIDIwMCwgMTk1LCAxMywgMTcwLCA0LCAyMDAsIAorICAgIDEyMywgMTMsIDE3MCwgNCwgMTk5LCAxNTcsIDEzLCAxNzUsIDYsIDYyLCAxMywgMTc1LCA2LCAyNTAsIDEwMywgMTMsIDE3NSwgCisgICAgNiwgMjQyLCAxNTMsIDEzLCAxNzUsIDYsIDcyLCAxMywgMTc1LCA2LCAyMzgsIDUsIDEzLCAxNzUsIDYsIDIzNiwgMTU2LCAKKyAgICAxMywgMTc1LCA2LCA3MCwgMTMsIDE3NSwgNiwgMjI3LCAyNTEsIDEzLCAxNzUsIDYsIDIyNywgMTE4LCAxMywgMTc1LCA2LCAKKyAgICAxNTYsIDEzLCAxNzUsIDYsIDIyMywgMjQzLCAxMywgMTc1LCA2LCA3NCwgMTMsIDE3NSwgNiwgMjEyLCAxMjIsIDEzLCAxNzUsIAorICAgIDYsIDIwNywgODMsIDEzLCAxNzUsIDYsIDY2LCAxMywgMTc1LCA2LCAyMDMsIDE2OCwgMTMsIDE3NSwgNiwgMjAxLCAxNDcsIAorICAgIDEzLCAxNzUsIDYsIDIwMCwgMTk1LCAxMywgMTc1LCA2LCAyMDAsIDEyMywgMTMsIDE3NSwgNCwgNjIsIDEzLCAxNzUsIDQsIAorICAgIDI1MCwgMTAzLCAxMywgMTc1LCA0LCAyNDcsIDIyMywgMTMsIDE3NSwgNCwgMjQyLCAxNTMsIDEzLCAxNzUsIDQsIDcyLCAxMywgCisgICAgMTc1LCA0LCAyMzgsIDUsIDEzLCAxNzUsIDQsIDIzNiwgMTU2LCAxMywgMTc1LCA0LCAyMzQsIDI0NywgMTMsIDE3NSwgNCwgCisgICAgNzAsIDEzLCAxNzUsIDQsIDIyNywgMjUxLCAxMywgMTc1LCA0LCAyMjcsIDExOCwgMTMsIDE3NSwgNCwgMTU2LCAxMywgMTc1LCAKKyAgICA0LCAyMjMsIDI0MywgMTMsIDE3NSwgNCwgMjIwLCAyMTQsIDEzLCAxNzUsIDQsIDc0LCAxMywgMTc1LCA0LCAyMTYsIDIyNiwgCisgICAgMTMsIDE3NSwgNCwgMjE0LCAxNjcsIDEzLCAxNzUsIDQsIDE0NiwgMTMsIDE3NSwgNCwgMjEyLCAxMjIsIDEzLCAxNzUsIDQsIAorICAgIDIwNywgODMsIDEzLCAxNzUsIDQsIDY2LCAxMywgMTc1LCA0LCAyMDMsIDE2OCwgMTMsIDE3NSwgNCwgMjAxLCAxNDcsIDEzLCAKKyAgICAxNzUsIDQsIDIwMCwgMTk1LCAxMywgMTc1LCA0LCAyMDAsIDEyMywgMTMsIDE3NSwgNCwgMTk5LCAxNTcsIDEzLCAyNywgCisgICAgMTcwLCA2LCA2MiwgMTMsIDI3LCAxNzAsIDYsIDI1MCwgMTAzLCAxMywgMjcsIDE3MCwgNiwgMjQ3LCAyMjMsIDEzLCAyNywgCisgICAgMTcwLCA2LCAyNDIsIDE1MywgMTMsIDI3LCAxNzAsIDYsIDcyLCAxMywgMjcsIDE3MCwgNiwgMjM4LCA1LCAxMywgMjcsIAorICAgIDE3MCwgNiwgMjM2LCAxNTYsIDEzLCAyNywgMTcwLCA2LCAyMzQsIDI0NywgMTMsIDI3LCAxNzAsIDYsIDcwLCAxMywgMjcsIAorICAgIDE3MCwgNiwgMjI3LCAyNTEsIDEzLCAyNywgMTcwLCA2LCAyMjcsIDExOCwgMTMsIDI3LCAxNzAsIDYsIDE1NiwgMTMsIDI3LCAKKyAgICAxNzAsIDYsIDIyMywgMjQzLCAxMywgMjcsIDE3MCwgNiwgMjIwLCAyMTQsIDEzLCAyNywgMTcwLCA2LCA3NCwgMTMsIDI3LCAKKyAgICAxNzAsIDYsIDIxNiwgMjI2LCAxMywgMjcsIDE3MCwgNiwgMjE0LCAxNjcsIDEzLCAyNywgMTcwLCA2LCAxNDYsIDEzLCAyNywgCisgICAgMTcwLCA2LCAyMTIsIDEyMiwgMTMsIDI3LCAxNzAsIDYsIDIwNywgODMsIDEzLCAyNywgMTcwLCA2LCA2NiwgMTMsIDI3LCAKKyAgICAxNzAsIDYsIDIwMywgMTY4LCAxMywgMjcsIDE3MCwgNiwgMjAxLCAxNDcsIDEzLCAyNywgMTcwLCA2LCAyMDAsIDE5NSwgMTMsIAorICAgIDI3LCAxNzAsIDYsIDIwMCwgMTIzLCAxMywgMjcsIDE3MCwgNiwgMTk5LCAxNTcsIDEzLCAyNywgMTcwLCA0LCA2MiwgMTMsIAorICAgIDI3LCAxNzAsIDQsIDI1MCwgMTAzLCAxMywgMjcsIDE3MCwgNCwgMjQ3LCAyMjMsIDEzLCAyNywgMTcwLCA0LCAyNDIsIDE1MywgCisgICAgMTMsIDI3LCAxNzAsIDQsIDcyLCAxMywgMjcsIDE3MCwgNCwgMjM4LCA1LCAxMywgMjcsIDE3MCwgNCwgMjM2LCAxNTYsIDEzLCAKKyAgICAyNywgMTcwLCA0LCAyMzQsIDI0NywgMTMsIDI3LCAxNzAsIDQsIDcwLCAxMywgMjcsIDE3MCwgNCwgMjI3LCAyNTEsIDEzLCAKKyAgICAyNywgMTcwLCA0LCAyMjcsIDExOCwgMTMsIDI3LCAxNzAsIDQsIDE1NiwgMTMsIDI3LCAxNzAsIDQsIDIyMywgMjQzLCAxMywgCisgICAgMjcsIDE3MCwgNCwgMjIwLCAyMTQsIDEzLCAyNywgMTcwLCA0LCA3NCwgMTMsIDI3LCAxNzAsIDQsIDIxNiwgMjI2LCAxMywgCisgICAgMjcsIDE3MCwgNCwgMjE0LCAxNjcsIDEzLCAyNywgMTcwLCA0LCAxNDYsIDEzLCAyNywgMTcwLCA0LCAyMTIsIDEyMiwgMTMsIAorICAgIDI3LCAxNzAsIDQsIDIwNywgODMsIDEzLCAyNywgMTcwLCA0LCA2NiwgMTMsIDI3LCAxNzAsIDQsIDIwMywgMTY4LCAxMywgCisgICAgMjcsIDE3MCwgNCwgMjAxLCAxNDcsIDEzLCAyNywgMTcwLCA0LCAyMDAsIDE5NSwgMTMsIDI3LCAxNzAsIDQsIDIwMCwgMTIzLCAKKyAgICAxMywgMjcsIDE3MCwgNCwgMTk5LCAxNTcsIDEzLCA0MywgNiwgNjIsIDEzLCA0MywgNiwgMjUwLCAxMDMsIDEzLCA0MywgNiwgCisgICAgMjQ3LCAyMjMsIDEzLCA0MywgNiwgMjQyLCAxNTMsIDEzLCA0MywgNiwgNzIsIDEzLCA0MywgNiwgMjM4LCA1LCAxMywgNDMsIAorICAgIDYsIDIzNiwgMTU2LCAxMywgNDMsIDYsIDIzNCwgMjQ3LCAxMywgNDMsIDYsIDcwLCAxMywgNDMsIDYsIDIyNywgMjUxLCAxMywgCisgICAgNDMsIDYsIDIyNywgMTE4LCAxMywgNDMsIDYsIDE1NiwgMTMsIDQzLCA2LCAyMjMsIDI0MywgMTMsIDQzLCA2LCAyMjAsIAorICAgIDIxNCwgMTMsIDQzLCA2LCA3NCwgMTMsIDQzLCA2LCAyMTYsIDIyNiwgMTMsIDQzLCA2LCAyMTQsIDE2NywgMTMsIDQzLCA2LCAKKyAgICAxNDYsIDEzLCA0MywgNiwgMjEyLCAxMjIsIDEzLCA0MywgNiwgMjA3LCA4MywgMTMsIDQzLCA2LCA2NiwgMTMsIDQzLCA2LCAKKyAgICAyMDMsIDE2OCwgMTMsIDQzLCA2LCAyMDEsIDE0NywgMTMsIDQzLCA2LCAyMDAsIDE5NSwgMTMsIDQzLCA2LCAyMDAsIDEyMywgCisgICAgMTMsIDQzLCA2LCAxOTksIDE1NywgMTMsIDQzLCA0LCA2MiwgMTMsIDQzLCA0LCAyNTAsIDEwMywgMTMsIDQzLCA0LCAyNDcsIAorICAgIDIyMywgMTMsIDQzLCA0LCAyNDIsIDE1MywgMTMsIDQzLCA0LCA3MiwgMTMsIDQzLCA0LCAyMzgsIDUsIDEzLCA0MywgNCwgCisgICAgMjM2LCAxNTYsIDEzLCA0MywgNCwgMjM0LCAyNDcsIDEzLCA0MywgNCwgNzAsIDEzLCA0MywgNCwgMjI3LCAyNTEsIDEzLCAKKyAgICA0MywgNCwgMjI3LCAxMTgsIDEzLCA0MywgNCwgMTU2LCAxMywgNDMsIDQsIDIyMywgMjQzLCAxMywgNDMsIDQsIDIyMCwgCisgICAgMjE0LCAxMywgNDMsIDQsIDc0LCAxMywgNDMsIDQsIDIxNiwgMjI2LCAxMywgNDMsIDQsIDIxNCwgMTY3LCAxMywgNDMsIDQsIAorICAgIDE0NiwgMTMsIDQzLCA0LCAyMTIsIDEyMiwgMTMsIDQzLCA0LCAyMDcsIDgzLCAxMywgNDMsIDQsIDY2LCAxMywgNDMsIDQsIAorICAgIDIwMywgMTY4LCAxMywgNDMsIDQsIDIwMSwgMTQ3LCAxMywgNDMsIDQsIDIwMCwgMTk1LCAxMywgNDMsIDQsIDIwMCwgMTIzLCAKKyAgICAxMywgNDMsIDQsIDE5OSwgMTU3LCAxMywgNDMsIDI3LCA2LCA2MiwgMTMsIDQzLCAyNywgNiwgMjUwLCAxMDMsIDEzLCA0MywgCisgICAgMjcsIDYsIDI0NywgMjIzLCAxMywgNDMsIDI3LCA2LCAyNDIsIDE1MywgMTMsIDQzLCAyNywgNiwgNzIsIDEzLCA0MywgMjcsIAorICAgIDYsIDIzOCwgNSwgMTMsIDQzLCAyNywgNiwgMjM2LCAxNTYsIDEzLCA0MywgMjcsIDYsIDIzNCwgMjQ3LCAxMywgNDMsIDI3LCAKKyAgICA2LCA3MCwgMTMsIDQzLCAyNywgNiwgMjI3LCAyNTEsIDEzLCA0MywgMjcsIDYsIDIyNywgMTE4LCAxMywgNDMsIDI3LCA2LCAKKyAgICAxNTYsIDEzLCA0MywgMjcsIDYsIDIyMywgMjQzLCAxMywgNDMsIDI3LCA2LCAyMjAsIDIxNCwgMTMsIDQzLCAyNywgNiwgNzQsIAorICAgIDEzLCA0MywgMjcsIDYsIDIxNiwgMjI2LCAxMywgNDMsIDI3LCA2LCAyMTQsIDE2NywgMTMsIDQzLCAyNywgNiwgMTQ2LCAxMywgCisgICAgNDMsIDI3LCA2LCAyMTIsIDEyMiwgMTMsIDQzLCAyNywgNiwgMjA3LCA4MywgMTMsIDQzLCAyNywgNiwgNjYsIDEzLCA0MywgCisgICAgMjcsIDYsIDIwMywgMTY4LCAxMywgNDMsIDI3LCA2LCAyMDEsIDE0NywgMTMsIDQzLCAyNywgNiwgMjAwLCAxOTUsIDEzLCAKKyAgICA0MywgMjcsIDYsIDIwMCwgMTIzLCAxMywgNDMsIDI3LCA2LCAxOTksIDE1NywgMTMsIDQzLCAyNywgNCwgNjIsIDEzLCA0MywgCisgICAgMjcsIDQsIDI1MCwgMTAzLCAxMywgNDMsIDI3LCA0LCAyNDcsIDIyMywgMTMsIDQzLCAyNywgNCwgMjQyLCAxNTMsIDEzLCAKKyAgICA0MywgMjcsIDQsIDcyLCAxMywgNDMsIDI3LCA0LCAyMzgsIDUsIDEzLCA0MywgMjcsIDQsIDIzNiwgMTU2LCAxMywgNDMsIAorICAgIDI3LCA0LCAyMzQsIDI0NywgMTMsIDQzLCAyNywgNCwgNzAsIDEzLCA0MywgMjcsIDQsIDIyNywgMjUxLCAxMywgNDMsIDI3LCAKKyAgICA0LCAyMjcsIDExOCwgMTMsIDQzLCAyNywgNCwgMTU2LCAxMywgNDMsIDI3LCA0LCAyMjMsIDI0MywgMTMsIDQzLCAyNywgNCwgCisgICAgMjIwLCAyMTQsIDEzLCA0MywgMjcsIDQsIDc0LCAxMywgNDMsIDI3LCA0LCAyMTYsIDIyNiwgMTMsIDQzLCAyNywgNCwgMjE0LCAKKyAgICAxNjcsIDEzLCA0MywgMjcsIDQsIDE0NiwgMTMsIDQzLCAyNywgNCwgMjEyLCAxMjIsIDEzLCA0MywgMjcsIDQsIDIwNywgODMsIAorICAgIDEzLCA0MywgMjcsIDQsIDY2LCAxMywgNDMsIDI3LCA0LCAyMDMsIDE2OCwgMTMsIDQzLCAyNywgNCwgMjAxLCAxNDcsIDEzLCAKKyAgICA0MywgMjcsIDQsIDIwMCwgMTk1LCAxMywgNDMsIDI3LCA0LCAyMDAsIDEyMywgMTMsIDQzLCAyNywgNCwgMTk5LCAxNTcsIAorICAgIDEzLCA0MywgMzksIDYsIDYyLCAxMywgNDMsIDM5LCA2LCAyNTAsIDEwMywgMTMsIDQzLCAzOSwgNiwgMjQ3LCAyMjMsIDEzLCAKKyAgICA0MywgMzksIDYsIDI0MiwgMTUzLCAxMywgNDMsIDM5LCA2LCA3MiwgMTMsIDQzLCAzOSwgNiwgMjM4LCA1LCAxMywgNDMsIAorICAgIDM5LCA2LCAyMzYsIDE1NiwgMTMsIDQzLCAzOSwgNiwgMjM0LCAyNDcsIDEzLCA0MywgMzksIDYsIDcwLCAxMywgNDMsIDM5LCAKKyAgICA2LCAyMjcsIDI1MSwgMTMsIDQzLCAzOSwgNiwgMjI3LCAxMTgsIDEzLCA0MywgMzksIDYsIDE1NiwgMTMsIDQzLCAzOSwgNiwgCisgICAgMjIzLCAyNDMsIDEzLCA0MywgMzksIDYsIDIyMCwgMjE0LCAxMywgNDMsIDM5LCA2LCA3NCwgMTMsIDQzLCAzOSwgNiwgMjE2LCAKKyAgICAyMjYsIDEzLCA0MywgMzksIDYsIDIxNCwgMTY3LCAxMywgNDMsIDM5LCA2LCAxNDYsIDEzLCA0MywgMzksIDYsIDIxMiwgCisgICAgMTIyLCAxMywgNDMsIDM5LCA2LCAyMDcsIDgzLCAxMywgNDMsIDM5LCA2LCA2NiwgMTMsIDQzLCAzOSwgNiwgMjAzLCAxNjgsIAorICAgIDEzLCA0MywgMzksIDYsIDIwMSwgMTQ3LCAxMywgNDMsIDM5LCA2LCAyMDAsIDE5NSwgMTMsIDQzLCAzOSwgNiwgMjAwLCAKKyAgICAxMjMsIDEzLCA0MywgMzksIDYsIDE5OSwgMTU3LCAxMywgNDMsIDM5LCA0LCA2MiwgMTMsIDQzLCAzOSwgNCwgMjUwLCAxMDMsIAorICAgIDEzLCA0MywgMzksIDQsIDI0NywgMjIzLCAxMywgNDMsIDM5LCA0LCAyNDIsIDE1MywgMTMsIDQzLCAzOSwgNCwgNzIsIDEzLCAKKyAgICA0MywgMzksIDQsIDIzOCwgNSwgMTMsIDQzLCAzOSwgNCwgMjM2LCAxNTYsIDEzLCA0MywgMzksIDQsIDIzNCwgMjQ3LCAxMywgCisgICAgNDMsIDM5LCA0LCA3MCwgMTMsIDQzLCAzOSwgNCwgMjI3LCAyNTEsIDEzLCA0MywgMzksIDQsIDIyNywgMTE4LCAxMywgNDMsIAorICAgIDM5LCA0LCAxNTYsIDEzLCA0MywgMzksIDQsIDIyMywgMjQzLCAxMywgNDMsIDM5LCA0LCAyMjAsIDIxNCwgMTMsIDQzLCAzOSwgCisgICAgNCwgNzQsIDEzLCA0MywgMzksIDQsIDIxNiwgMjI2LCAxMywgNDMsIDM5LCA0LCAyMTQsIDE2NywgMTMsIDQzLCAzOSwgNCwgCisgICAgMTQ2LCAxMywgNDMsIDM5LCA0LCAyMTIsIDEyMiwgMTMsIDQzLCAzOSwgNCwgMjA3LCA4MywgMTMsIDQzLCAzOSwgNCwgNjYsIAorICAgIDEzLCA0MywgMzksIDQsIDIwMywgMTY4LCAxMywgNDMsIDM5LCA0LCAyMDEsIDE0NywgMTMsIDQzLCAzOSwgNCwgMjAwLCAKKyAgICAxOTUsIDEzLCA0MywgMzksIDQsIDIwMCwgMTIzLCAxMywgNDMsIDM5LCA0LCAxOTksIDE1NywgMTMsIDQzLCAyNywgMzksIDYsIAorICAgIDYyLCAxMywgNDMsIDI3LCAzOSwgNiwgMjUwLCAxMDMsIDEzLCA0MywgMjcsIDM5LCA2LCAyNDcsIDIyMywgMTMsIDQzLCAyNywgCisgICAgMzksIDYsIDI0MiwgMTUzLCAxMywgNDMsIDI3LCAzOSwgNiwgNzIsIDEzLCA0MywgMjcsIDM5LCA2LCAyMzgsIDUsIDEzLCAKKyAgICA0MywgMjcsIDM5LCA2LCAyMzYsIDE1NiwgMTMsIDQzLCAyNywgMzksIDYsIDIzNCwgMjQ3LCAxMywgNDMsIDI3LCAzOSwgNiwgCisgICAgNzAsIDEzLCA0MywgMjcsIDM5LCA2LCAyMjcsIDI1MSwgMTMsIDQzLCAyNywgMzksIDYsIDIyNywgMTE4LCAxMywgNDMsIDI3LCAKKyAgICAzOSwgNiwgMTU2LCAxMywgNDMsIDI3LCAzOSwgNiwgMjIzLCAyNDMsIDEzLCA0MywgMjcsIDM5LCA2LCAyMjAsIDIxNCwgMTMsIAorICAgIDQzLCAyNywgMzksIDYsIDc0LCAxMywgNDMsIDI3LCAzOSwgNiwgMjE2LCAyMjYsIDEzLCA0MywgMjcsIDM5LCA2LCAyMTQsIAorICAgIDE2NywgMTMsIDQzLCAyNywgMzksIDYsIDE0NiwgMTMsIDQzLCAyNywgMzksIDYsIDIxMiwgMTIyLCAxMywgNDMsIDI3LCAzOSwgCisgICAgNiwgMjA3LCA4MywgMTMsIDQzLCAyNywgMzksIDYsIDY2LCAxMywgNDMsIDI3LCAzOSwgNiwgMjAzLCAxNjgsIDEzLCA0MywgCisgICAgMjcsIDM5LCA2LCAyMDEsIDE0NywgMTMsIDQzLCAyNywgMzksIDYsIDIwMCwgMTk1LCAxMywgNDMsIDI3LCAzOSwgNiwgMjAwLCAKKyAgICAxMjMsIDEzLCA0MywgMjcsIDM5LCA2LCAxOTksIDE1NywgMTMsIDQzLCAyNywgMzksIDQsIDYyLCAxMywgNDMsIDI3LCAzOSwgCisgICAgNCwgMjUwLCAxMDMsIDEzLCA0MywgMjcsIDM5LCA0LCAyNDcsIDIyMywgMTMsIDQzLCAyNywgMzksIDQsIDI0MiwgMTUzLCAKKyAgICAxMywgNDMsIDI3LCAzOSwgNCwgNzIsIDEzLCA0MywgMjcsIDM5LCA0LCAyMzgsIDUsIDEzLCA0MywgMjcsIDM5LCA0LCAyMzYsIAorICAgIDE1NiwgMTMsIDQzLCAyNywgMzksIDQsIDIzNCwgMjQ3LCAxMywgNDMsIDI3LCAzOSwgNCwgNzAsIDEzLCA0MywgMjcsIDM5LCAKKyAgICA0LCAyMjcsIDI1MSwgMTMsIDQzLCAyNywgMzksIDQsIDIyNywgMTE4LCAxMywgNDMsIDI3LCAzOSwgNCwgMTU2LCAxMywgNDMsIAorICAgIDI3LCAzOSwgNCwgMjIzLCAyNDMsIDEzLCA0MywgMjcsIDM5LCA0LCAyMjAsIDIxNCwgMTMsIDQzLCAyNywgMzksIDQsIDc0LCAKKyAgICAxMywgNDMsIDI3LCAzOSwgNCwgMjE2LCAyMjYsIDEzLCA0MywgMjcsIDM5LCA0LCAyMTQsIDE2NywgMTMsIDQzLCAyNywgMzksIAorICAgIDQsIDE0NiwgMTMsIDQzLCAyNywgMzksIDQsIDIxMiwgMTIyLCAxMywgNDMsIDI3LCAzOSwgNCwgMjA3LCA4MywgMTMsIDQzLCAKKyAgICAyNywgMzksIDQsIDY2LCAxMywgNDMsIDI3LCAzOSwgNCwgMjAzLCAxNjgsIDEzLCA0MywgMjcsIDM5LCA0LCAyMDEsIDE0NywgCisgICAgMTMsIDQzLCAyNywgMzksIDQsIDIwMCwgMTk1LCAxMywgNDMsIDI3LCAzOSwgNCwgMjAwLCAxMjMsIDEzLCA0MywgMjcsIDM5LCAKKyAgICA0LCAxOTksIDE1NywgMTMsIDIyMSwgOTMsIDYsIDYyLCAxMywgMjIxLCA5MywgNiwgMjUwLCAxMDMsIDEzLCAyMjEsIDkzLCAKKyAgICA2LCAyNDcsIDIyMywgMTMsIDIyMSwgOTMsIDYsIDI0MiwgMTUzLCAxMywgMjIxLCA5MywgNiwgNzIsIDEzLCAyMjEsIDkzLCAKKyAgICA2LCAyMzgsIDUsIDEzLCAyMjEsIDkzLCA2LCAyMzYsIDE1NiwgMTMsIDIyMSwgOTMsIDYsIDIzNCwgMjQ3LCAxMywgMjIxLCAKKyAgICA5MywgNiwgNzAsIDEzLCAyMjEsIDkzLCA2LCAyMjcsIDI1MSwgMTMsIDIyMSwgOTMsIDYsIDIyNywgMTE4LCAxMywgMjIxLCAKKyAgICA5MywgNiwgMTU2LCAxMywgMjIxLCA5MywgNiwgMjIzLCAyNDMsIDEzLCAyMjEsIDkzLCA2LCAyMjAsIDIxNCwgMTMsIDIyMSwgCisgICAgOTMsIDYsIDc0LCAxMywgMjIxLCA5MywgNiwgMjE2LCAyMjYsIDEzLCAyMjEsIDkzLCA2LCAyMTQsIDE2NywgMTMsIDIyMSwgCisgICAgOTMsIDYsIDE0NiwgMTMsIDIyMSwgOTMsIDYsIDIxMiwgMTIyLCAxMywgMjIxLCA5MywgNiwgMjA3LCA4MywgMTMsIDIyMSwgCisgICAgOTMsIDYsIDY2LCAxMywgMjIxLCA5MywgNiwgMjAzLCAxNjgsIDEzLCAyMjEsIDkzLCA2LCAyMDEsIDE0NywgMTMsIDIyMSwgCisgICAgOTMsIDYsIDIwMCwgMTk1LCAxMywgMjIxLCA5MywgNiwgMjAwLCAxMjMsIDEzLCAyMjEsIDkzLCA2LCAxOTksIDE1NywgMTMsIAorICAgIDIyMSwgOTMsIDQsIDYyLCAxMywgMjIxLCA5MywgNCwgMjUwLCAxMDMsIDEzLCAyMjEsIDkzLCA0LCAyNDcsIDIyMywgMTMsIAorICAgIDIyMSwgOTMsIDQsIDI0MiwgMTUzLCAxMywgMjIxLCA5MywgNCwgNzIsIDEzLCAyMjEsIDkzLCA0LCAyMzgsIDUsIDEzLCAKKyAgICAyMjEsIDkzLCA0LCAyMzYsIDE1NiwgMTMsIDIyMSwgOTMsIDQsIDIzNCwgMjQ3LCAxMywgMjIxLCA5MywgNCwgNzAsIDEzLCAKKyAgICAyMjEsIDkzLCA0LCAyMjcsIDI1MSwgMTMsIDIyMSwgOTMsIDQsIDIyNywgMTE4LCAxMywgMjIxLCA5MywgNCwgMTU2LCAxMywgCisgICAgMjIxLCA5MywgNCwgMjIzLCAyNDMsIDEzLCAyMjEsIDkzLCA0LCAyMjAsIDIxNCwgMTMsIDIyMSwgOTMsIDQsIDc0LCAxMywgCisgICAgMjIxLCA5MywgNCwgMjE2LCAyMjYsIDEzLCAyMjEsIDkzLCA0LCAyMTQsIDE2NywgMTMsIDIyMSwgOTMsIDQsIDE0NiwgMTMsIAorICAgIDIyMSwgOTMsIDQsIDIxMiwgMTIyLCAxMywgMjIxLCA5MywgNCwgMjA3LCA4MywgMTMsIDIyMSwgOTMsIDQsIDY2LCAxMywgCisgICAgMjIxLCA5MywgNCwgMjAzLCAxNjgsIDEzLCAyMjEsIDkzLCA0LCAyMDEsIDE0NywgMTMsIDIyMSwgOTMsIDQsIDIwMCwgMTk1LCAKKyAgICAxMywgMjIxLCA5MywgNCwgMjAwLCAxMjMsIDEzLCAyMjEsIDkzLCA0LCAxOTksIDE1NywgMTMsIDM5LCA0LCAyNDAsIDE4MSwgCisgICAgNzAsIDEzLCAzOSwgNCwgMjQwLCAxODEsIDIyNywgMjUxLCAxMywgMjcsIDYsIDI1MSwgMTEyLCAxMywgMjcsIDYsIDI0OCwgCisgICAgMjA4LCAxMywgMjcsIDYsIDIzNiwgNjAsIDEzLCAyNywgNiwgMjQxLCAxMzYsIDEzLCAyNywgNiwgMjM4LCAxMjQsIDEzLCAKKyAgICAyNywgNiwgMTk5LCA4MCwgMTMsIDI3LCA2LCAyMzgsIDc5LCAxMywgMjcsIDYsIDIwNiwgODgsIDEzLCAyNywgNiwgMjI4LCAKKyAgICA0MSwgMTMsIDI3LCA2LCAyMjcsIDU0LCAxMywgMjcsIDYsIDIyNSwgODcsIDEzLCAyNywgNiwgMjIxLCA0MSwgMTMsIDI3LCAKKyAgICA2LCAyMTgsIDEzMywgMTMsIDI3LCA2LCAyMDAsIDE2OSwgMTMsIDI3LCA2LCAyMTcsIDgxLCAxMywgMjcsIDYsIDIxNSwgCisgICAgMjA0LCAxMywgMjcsIDYsIDIxMywgOTAsIDEzLCAyNywgNiwgMjA2LCA4OSwgOTksIDEzLCAyNywgNiwgMjA5LCAxNjMsIDEzLCAKKyAgICAyNywgNiwgMjA2LCAyMjEsIDEzLCAyNywgNiwgMjAzLCAyMjAsIDEzLCAyNywgNiwgMjE1LCAyMjksIDEzLCAyNywgNiwgCisgICAgMjQ2LCAyMzYsIDEzLCAyNywgNiwgMjE0LCAyMzUsIDEzLCAyNywgNiwgMjE3LCA4MywgMTMsIDI3LCAyMjAsIDE1MiwgMTMsIAorICAgIDI3LCA0LCAyNTEsIDExMiwgMTMsIDI3LCA0LCAyNDgsIDIwOCwgMTMsIDI3LCA0LCAyMzYsIDYwLCAxMywgMjcsIDQsIDI0MSwgCisgICAgMTM2LCAxMywgMjcsIDQsIDIzOCwgMTI0LCAxMywgMjcsIDQsIDE5OSwgODAsIDEzLCAyNywgNCwgMjM4LCA3OSwgMTMsIDI3LCAKKyAgICA0LCAyMDYsIDg4LCAxMywgMjcsIDQsIDIyOCwgNDEsIDEzLCAyNywgNCwgMjI3LCA1NCwgMTMsIDI3LCA0LCAyMjUsIDg3LCAKKyAgICAxMywgMjcsIDQsIDIyMSwgNDEsIDEzLCAyNywgNCwgMjE4LCAxMzMsIDEzLCAyNywgNCwgMjAwLCAxNjksIDEzLCAyNywgNCwgCisgICAgMjE3LCA4MSwgMTMsIDI3LCA0LCAyMTUsIDIwNCwgMTMsIDI3LCA0LCAyMTMsIDkwLCAxMywgMjcsIDQsIDQ3LCAyMDksIAorICAgIDE2MywgMTMsIDI3LCA0LCAyMDksIDE2MywgMTMsIDI3LCA0LCAyMDYsIDIyMSwgMTMsIDI3LCA0LCAyMDMsIDIyMCwgMTMsIAorICAgIDI3LCA0LCAyMTUsIDIyOSwgMTMsIDI3LCA0LCAyNDYsIDIzNiwgMTMsIDI3LCA0LCAyMTQsIDIzNSwgMTMsIDI3LCA0LCAKKyAgICAyMTcsIDgzLCAxMywgMjcsIDIxNiwgMTA4LCAyNDEsIDQ4LCAxMywgMjcsIDIzOCwgMTI1LCA5OSwgMTMsIDI3LCAyMDYsIAorICAgIDg5LCA5OSwgMTMsIDI3LCAyMjcsIDU1LCA5OSwgMTMsIDI3LCAyMTUsIDIzMCwgOTksIDEzLCAyNywgMjEzLCA5MSwgOTksIAorICAgIDEzLCAyNywgMjE1LCAyMDUsIDk5LCAxMywgMzksIDYsIDI1MSwgMTEyLCAxMywgMzksIDYsIDI0OCwgMjA4LCAxMywgMzksIAorICAgIDYsIDIzNiwgNjAsIDEzLCAzOSwgNiwgMjQxLCAxMzYsIDEzLCAzOSwgNiwgMjM4LCAxMjQsIDEzLCAzOSwgNiwgMTk5LCA4MCwgCisgICAgMTMsIDM5LCA2LCAyMzgsIDc5LCAxMywgMzksIDYsIDIwNiwgODgsIDEzLCAzOSwgNiwgMjI4LCA0MSwgMTMsIDM5LCA2LCAKKyAgICAyMjcsIDU0LCAxMywgMzksIDYsIDIyNSwgODcsIDEzLCAzOSwgNiwgMjIxLCA0MSwgMTMsIDM5LCA2LCAyMTgsIDEzMywgMTMsIAorICAgIDM5LCA2LCAyMDAsIDE2OSwgMTMsIDM5LCA2LCAyMTcsIDgxLCAxMywgMzksIDYsIDIxNSwgMjA0LCAxMywgMzksIDYsIDIxMywgCisgICAgOTAsIDEzLCAzOSwgNiwgMjA2LCA4OSwgOTksIDEzLCAzOSwgNiwgMjA5LCAxNjMsIDEzLCAzOSwgNiwgMjA2LCAyMjEsIDEzLCAKKyAgICAzOSwgNiwgMjAzLCAyMjAsIDEzLCAzOSwgNiwgMjE1LCAyMjksIDEzLCAzOSwgNiwgMjQ2LCAyMzYsIDEzLCAzOSwgNiwgCisgICAgMjE0LCAyMzUsIDEzLCAzOSwgNiwgMjE3LCA4MywgMTMsIDM5LCAyMjAsIDE1MiwgMTMsIDM5LCA0LCAyNTEsIDExMiwgMTMsIAorICAgIDM5LCA0LCAyNDgsIDIwOCwgMTMsIDM5LCA0LCAyMzYsIDYwLCAxMywgMzksIDQsIDI0MSwgMTM2LCAxMywgMzksIDQsIDIzOCwgCisgICAgMTI0LCAxMywgMzksIDQsIDE5OSwgODAsIDEzLCAzOSwgNCwgMjM4LCA3OSwgMTMsIDM5LCA0LCAyMDYsIDg4LCAxMywgMzksIAorICAgIDQsIDIyOCwgNDEsIDEzLCAzOSwgNCwgMjI3LCA1NCwgMTMsIDM5LCA0LCAyMjUsIDg3LCAxMywgMzksIDQsIDIyMSwgNDEsIAorICAgIDEzLCAzOSwgNCwgMjE4LCAxMzMsIDEzLCAzOSwgNCwgMjAwLCAxNjksIDEzLCAzOSwgNCwgMjE3LCA4MSwgMTMsIDM5LCA0LCAKKyAgICAyMTUsIDIwNCwgMTMsIDM5LCA0LCAyMTMsIDkwLCAxMywgMzksIDQsIDQ3LCAyMDksIDE2MywgMTMsIDM5LCA0LCAyMDksIAorICAgIDE2MywgMTMsIDM5LCA0LCAyMDYsIDIyMSwgMTMsIDM5LCA0LCAyMDMsIDIyMCwgMTMsIDM5LCA0LCAyMTUsIDIyOSwgMTMsIAorICAgIDM5LCA0LCAyNDYsIDIzNiwgMTMsIDM5LCA0LCAyMTQsIDIzNSwgMTMsIDM5LCA0LCAyMTcsIDgzLCAxMywgMzksIDIxNiwgCisgICAgMTA4LCAyNDEsIDQ4LCAxMywgMzksIDIzOCwgMTI1LCA5OSwgMTMsIDM5LCAyMDYsIDg5LCA5OSwgMTMsIDM5LCAyMjcsIDU1LCAKKyAgICA5OSwgMTMsIDM5LCAyMTUsIDIzMCwgOTksIDEzLCAzOSwgMjEzLCA5MSwgOTksIDEzLCAzOSwgMjE1LCAyMDUsIDk5LCAxMywgCisgICAgMjcsIDM5LCA2LCAyNTEsIDExMiwgMTMsIDI3LCAzOSwgNiwgMjQ4LCAyMDgsIDEzLCAyNywgMzksIDYsIDIzNiwgNjAsIDEzLCAKKyAgICAyNywgMzksIDYsIDI0MSwgMTM2LCAxMywgMjcsIDM5LCA2LCAyMzgsIDEyNCwgMTMsIDI3LCAzOSwgNiwgMTk5LCA4MCwgMTMsIAorICAgIDI3LCAzOSwgNiwgMjM4LCA3OSwgMTMsIDI3LCAzOSwgNiwgMjA2LCA4OCwgMTMsIDI3LCAzOSwgNiwgMjI4LCA0MSwgMTMsIAorICAgIDI3LCAzOSwgNiwgMjI3LCA1NCwgMTMsIDI3LCAzOSwgNiwgMjI1LCA4NywgMTMsIDI3LCAzOSwgNiwgMjIxLCA0MSwgMTMsIAorICAgIDI3LCAzOSwgNiwgMjE4LCAxMzMsIDEzLCAyNywgMzksIDYsIDIwMCwgMTY5LCAxMywgMjcsIDM5LCA2LCAyMTcsIDgxLCAxMywgCisgICAgMjcsIDM5LCA2LCAyMTUsIDIwNCwgMTMsIDI3LCAzOSwgNiwgMjEzLCA5MCwgMTMsIDI3LCAzOSwgNiwgMjA2LCA4OSwgOTksIAorICAgIDEzLCAyNywgMzksIDYsIDIwOSwgMTYzLCAxMywgMjcsIDM5LCA2LCAyMDYsIDIyMSwgMTMsIDI3LCAzOSwgNiwgMjAzLCAKKyAgICAyMjAsIDEzLCAyNywgMzksIDYsIDIxNSwgMjI5LCAxMywgMjcsIDM5LCA2LCAyNDYsIDIzNiwgMTMsIDI3LCAzOSwgNiwgCisgICAgMjE0LCAyMzUsIDEzLCAyNywgMzksIDYsIDIxNywgODMsIDEzLCAyNywgMzksIDIyMCwgMTUyLCAxMywgMjcsIDM5LCA0LCAKKyAgICAyNTEsIDExMiwgMTMsIDI3LCAzOSwgNCwgMjQ4LCAyMDgsIDEzLCAyNywgMzksIDQsIDIzNiwgNjAsIDEzLCAyNywgMzksIDQsIAorICAgIDI0MSwgMTM2LCAxMywgMjcsIDM5LCA0LCAyMzgsIDEyNCwgMTMsIDI3LCAzOSwgNCwgMTk5LCA4MCwgMTMsIDI3LCAzOSwgNCwgCisgICAgMjM4LCA3OSwgMTMsIDI3LCAzOSwgNCwgMjA2LCA4OCwgMTMsIDI3LCAzOSwgNCwgMjI4LCA0MSwgMTMsIDI3LCAzOSwgNCwgCisgICAgMjI3LCA1NCwgMTMsIDI3LCAzOSwgNCwgMjI1LCA4NywgMTMsIDI3LCAzOSwgNCwgMjIxLCA0MSwgMTMsIDI3LCAzOSwgNCwgCisgICAgMjE4LCAxMzMsIDEzLCAyNywgMzksIDQsIDIwMCwgMTY5LCAxMywgMjcsIDM5LCA0LCAyMTcsIDgxLCAxMywgMjcsIDM5LCA0LCAKKyAgICAyMTUsIDIwNCwgMTMsIDI3LCAzOSwgNCwgMjEzLCA5MCwgMTMsIDI3LCAzOSwgNCwgNDcsIDIwOSwgMTYzLCAxMywgMjcsIAorICAgIDM5LCA0LCAyMDksIDE2MywgMTMsIDI3LCAzOSwgNCwgMjA2LCAyMjEsIDEzLCAyNywgMzksIDQsIDIwMywgMjIwLCAxMywgCisgICAgMjcsIDM5LCA0LCAyMTUsIDIyOSwgMTMsIDI3LCAzOSwgNCwgMjQ2LCAyMzYsIDEzLCAyNywgMzksIDQsIDIxNCwgMjM1LCAKKyAgICAxMywgMjcsIDM5LCA0LCAyMTcsIDgzLCAxMywgMjcsIDM5LCAyMTYsIDEwOCwgMjQxLCA0OCwgMTMsIDI3LCAzOSwgMjM4LCAKKyAgICAxMjUsIDk5LCAxMywgMjcsIDM5LCAyMDYsIDg5LCA5OSwgMTMsIDI3LCAzOSwgMjI3LCA1NSwgOTksIDEzLCAyNywgMzksIAorICAgIDIxNSwgMjMwLCA5OSwgMTMsIDI3LCAzOSwgMjEzLCA5MSwgOTksIDEzLCAyNywgMzksIDIxNSwgMjA1LCA5OSwgMTMsIDQzLCAKKyAgICAyNywgNiwgMjUxLCAxMTIsIDEzLCA0MywgMjcsIDYsIDI0OCwgMjA4LCAxMywgNDMsIDI3LCA2LCAyMzYsIDYwLCAxMywgNDMsIAorICAgIDI3LCA2LCAyNDEsIDEzNiwgMTMsIDQzLCAyNywgNiwgMjM4LCAxMjQsIDEzLCA0MywgMjcsIDYsIDE5OSwgODAsIDEzLCA0MywgCisgICAgMjcsIDYsIDIzOCwgNzksIDEzLCA0MywgMjcsIDYsIDIwNiwgODgsIDEzLCA0MywgMjcsIDYsIDIyOCwgNDEsIDEzLCA0MywgCisgICAgMjcsIDYsIDIyNywgNTQsIDEzLCA0MywgMjcsIDYsIDIyNSwgODcsIDEzLCA0MywgMjcsIDYsIDIyMSwgNDEsIDEzLCA0MywgCisgICAgMjcsIDYsIDIxOCwgMTMzLCAxMywgNDMsIDI3LCA2LCAyMDAsIDE2OSwgMTMsIDQzLCAyNywgNiwgMjE3LCA4MSwgMTMsIDQzLCAKKyAgICAyNywgNiwgMjE1LCAyMDQsIDEzLCA0MywgMjcsIDYsIDIxMywgOTAsIDEzLCA0MywgMjcsIDYsIDIwNiwgODksIDk5LCAxMywgCisgICAgNDMsIDI3LCA2LCAyMDksIDE2MywgMTMsIDQzLCAyNywgNiwgMjA2LCAyMjEsIDEzLCA0MywgMjcsIDYsIDIwMywgMjIwLCAKKyAgICAxMywgNDMsIDI3LCA2LCAyMTUsIDIyOSwgMTMsIDQzLCAyNywgNiwgMjQ2LCAyMzYsIDEzLCA0MywgMjcsIDYsIDIxNCwgCisgICAgMjM1LCAxMywgNDMsIDI3LCA2LCAyMTcsIDgzLCAxMywgNDMsIDI3LCAyMjAsIDE1MiwgMTMsIDQzLCAyNywgNCwgMjUxLCAKKyAgICAxMTIsIDEzLCA0MywgMjcsIDQsIDI0OCwgMjA4LCAxMywgNDMsIDI3LCA0LCAyMzYsIDYwLCAxMywgNDMsIDI3LCA0LCAyNDEsIAorICAgIDEzNiwgMTMsIDQzLCAyNywgNCwgMjM4LCAxMjQsIDEzLCA0MywgMjcsIDQsIDE5OSwgODAsIDEzLCA0MywgMjcsIDQsIDIzOCwgCisgICAgNzksIDEzLCA0MywgMjcsIDQsIDIwNiwgODgsIDEzLCA0MywgMjcsIDQsIDIyOCwgNDEsIDEzLCA0MywgMjcsIDQsIDIyNywgCisgICAgNTQsIDEzLCA0MywgMjcsIDQsIDIyNSwgODcsIDEzLCA0MywgMjcsIDQsIDIyMSwgNDEsIDEzLCA0MywgMjcsIDQsIDIxOCwgCisgICAgMTMzLCAxMywgNDMsIDI3LCA0LCAyMDAsIDE2OSwgMTMsIDQzLCAyNywgNCwgMjE3LCA4MSwgMTMsIDQzLCAyNywgNCwgMjE1LCAKKyAgICAyMDQsIDEzLCA0MywgMjcsIDQsIDIxMywgOTAsIDEzLCA0MywgMjcsIDQsIDQ3LCAyMDksIDE2MywgMTMsIDQzLCAyNywgNCwgCisgICAgMjA5LCAxNjMsIDEzLCA0MywgMjcsIDQsIDIwNiwgMjIxLCAxMywgNDMsIDI3LCA0LCAyMDMsIDIyMCwgMTMsIDQzLCAyNywgCisgICAgNCwgMjE1LCAyMjksIDEzLCA0MywgMjcsIDQsIDI0NiwgMjM2LCAxMywgNDMsIDI3LCA0LCAyMTQsIDIzNSwgMTMsIDQzLCAKKyAgICAyNywgNCwgMjE3LCA4MywgMTMsIDQzLCAyNywgMjE2LCAxMDgsIDI0MSwgNDgsIDEzLCA0MywgMjcsIDIzOCwgMTI1LCA5OSwgCisgICAgMTMsIDQzLCAyNywgMjA2LCA4OSwgOTksIDEzLCA0MywgMjcsIDIyNywgNTUsIDk5LCAxMywgNDMsIDI3LCAyMTUsIDIzMCwgCisgICAgOTksIDEzLCA0MywgMjcsIDIxMywgOTEsIDk5LCAxMywgNDMsIDI3LCAyMTUsIDIwNSwgOTksIDEzLCA0MywgMjcsIDM5LCA2LCAKKyAgICAyNTEsIDExMiwgMTMsIDQzLCAyNywgMzksIDYsIDI0OCwgMjA4LCAxMywgNDMsIDI3LCAzOSwgNiwgMjM2LCA2MCwgMTMsIAorICAgIDQzLCAyNywgMzksIDYsIDI0MSwgMTM2LCAxMywgNDMsIDI3LCAzOSwgNiwgMjM4LCAxMjQsIDEzLCA0MywgMjcsIDM5LCA2LCAKKyAgICAxOTksIDgwLCAxMywgNDMsIDI3LCAzOSwgNiwgMjM4LCA3OSwgMTMsIDQzLCAyNywgMzksIDYsIDIwNiwgODgsIDEzLCA0MywgCisgICAgMjcsIDM5LCA2LCAyMjgsIDQxLCAxMywgNDMsIDI3LCAzOSwgNiwgMjI3LCA1NCwgMTMsIDQzLCAyNywgMzksIDYsIDIyNSwgCisgICAgODcsIDEzLCA0MywgMjcsIDM5LCA2LCAyMjEsIDQxLCAxMywgNDMsIDI3LCAzOSwgNiwgMjE4LCAxMzMsIDEzLCA0MywgMjcsIAorICAgIDM5LCA2LCAyMDAsIDE2OSwgMTMsIDQzLCAyNywgMzksIDYsIDIxNywgODEsIDEzLCA0MywgMjcsIDM5LCA2LCAyMTUsIDIwNCwgCisgICAgMTMsIDQzLCAyNywgMzksIDYsIDIxMywgOTAsIDEzLCA0MywgMjcsIDM5LCA2LCAyMDYsIDg5LCA5OSwgMTMsIDQzLCAyNywgCisgICAgMzksIDYsIDIwOSwgMTYzLCAxMywgNDMsIDI3LCAzOSwgNiwgMjA2LCAyMjEsIDEzLCA0MywgMjcsIDM5LCA2LCAyMDMsIAorICAgIDIyMCwgMTMsIDQzLCAyNywgMzksIDYsIDIxNSwgMjI5LCAxMywgNDMsIDI3LCAzOSwgNiwgMjQ2LCAyMzYsIDEzLCA0MywgCisgICAgMjcsIDM5LCA2LCAyMTQsIDIzNSwgMTMsIDQzLCAyNywgMzksIDYsIDIxNywgODMsIDEzLCA0MywgMjcsIDM5LCAyMjAsIAorICAgIDE1MiwgMTMsIDQzLCAyNywgMzksIDQsIDI1MSwgMTEyLCAxMywgNDMsIDI3LCAzOSwgNCwgMjQ4LCAyMDgsIDEzLCA0MywgCisgICAgMjcsIDM5LCA0LCAyMzYsIDYwLCAxMywgNDMsIDI3LCAzOSwgNCwgMjQxLCAxMzYsIDEzLCA0MywgMjcsIDM5LCA0LCAyMzgsIAorICAgIDEyNCwgMTMsIDQzLCAyNywgMzksIDQsIDE5OSwgODAsIDEzLCA0MywgMjcsIDM5LCA0LCAyMzgsIDc5LCAxMywgNDMsIDI3LCAKKyAgICAzOSwgNCwgMjA2LCA4OCwgMTMsIDQzLCAyNywgMzksIDQsIDIyOCwgNDEsIDEzLCA0MywgMjcsIDM5LCA0LCAyMjcsIDU0LCAKKyAgICAxMywgNDMsIDI3LCAzOSwgNCwgMjI1LCA4NywgMTMsIDQzLCAyNywgMzksIDQsIDIyMSwgNDEsIDEzLCA0MywgMjcsIDM5LCAKKyAgICA0LCAyMTgsIDEzMywgMTMsIDQzLCAyNywgMzksIDQsIDIwMCwgMTY5LCAxMywgNDMsIDI3LCAzOSwgNCwgMjE3LCA4MSwgMTMsIAorICAgIDQzLCAyNywgMzksIDQsIDIxNSwgMjA0LCAxMywgNDMsIDI3LCAzOSwgNCwgMjEzLCA5MCwgMTMsIDQzLCAyNywgMzksIDQsIAorICAgIDQ3LCAyMDksIDE2MywgMTMsIDQzLCAyNywgMzksIDQsIDIwOSwgMTYzLCAxMywgNDMsIDI3LCAzOSwgNCwgMjA2LCAyMjEsIAorICAgIDEzLCA0MywgMjcsIDM5LCA0LCAyMDMsIDIyMCwgMTMsIDQzLCAyNywgMzksIDQsIDIxNSwgMjI5LCAxMywgNDMsIDI3LCAzOSwgCisgICAgNCwgMjQ2LCAyMzYsIDEzLCA0MywgMjcsIDM5LCA0LCAyMTQsIDIzNSwgMTMsIDQzLCAyNywgMzksIDQsIDIxNywgODMsIDEzLCAKKyAgICA0MywgMjcsIDM5LCAyMTYsIDEwOCwgMjQxLCA0OCwgMTMsIDQzLCAyNywgMzksIDIzOCwgMTI1LCA5OSwgMTMsIDQzLCAyNywgCisgICAgMzksIDIwNiwgODksIDk5LCAxMywgNDMsIDI3LCAzOSwgMjI3LCA1NSwgOTksIDEzLCA0MywgMjcsIDM5LCAyMTUsIDIzMCwgCisgICAgOTksIDEzLCA0MywgMjcsIDM5LCAyMTMsIDkxLCA5OSwgMTMsIDQzLCAyNywgMzksIDIxNSwgMjA1LCA5OSwgMTMsIDI3LCA2LCAKKyAgICAyNDEsIDQyLCAxMywgMjcsIDQsIDI0MSwgNDIsIDEzLCAyNywgMTcsIDE5OSwgODEsIDEzLCAyNywgMTcsIDEwMiwgMTMsIAorICAgIDI3LCAxNywgMTA1LCAxMywgMjcsIDE3LCAxNDcsIDEzLCAyNywgMTcsIDE0OSwgMTMsIDI3LCAxNywgMTY0LCAxMywgMjcsIAorICAgIDE3LCAxODcsIDEzLCAyNywgMTcsIDIxMCwgMTM1LCAxMywgMjcsIDE3LCAxOTIsIDEzLCAyNywgMTcsIDIxOSwgMTEzLCAxMywgCisgICAgMTc1LCAxNywgMTk5LCA4MSwgMTMsIDE3NSwgMTcsIDEwMiwgMTMsIDE3NSwgMTcsIDEwNSwgMTMsIDE3NSwgMTcsIDE0NywgCisgICAgMTMsIDE3NSwgMTcsIDE0OSwgMTMsIDE3NSwgMTcsIDE2NCwgMTMsIDE3NSwgMTcsIDE4NywgMTMsIDE3NSwgMTcsIDIxMCwgCisgICAgMTM1LCAxMywgMTc1LCAxNywgMTkyLCAxMywgMTc1LCAxNywgMjE5LCAxMTMsIDEzLCA0MywgMTcsIDE5OSwgODEsIDEzLCAKKyAgICA0MywgMTcsIDEwMiwgMTMsIDQzLCAxNywgMTA1LCAxMywgNDMsIDE3LCAxNDcsIDEzLCA0MywgMTcsIDE0OSwgMTMsIDQzLCAKKyAgICAxNywgMTY0LCAxMywgNDMsIDE3LCAxODcsIDEzLCA0MywgMTcsIDIxMCwgMTM1LCAxMywgNDMsIDE3LCAxOTIsIDEzLCA0MywgCisgICAgMTcsIDIxOSwgMTEzLCAxMywgNDMsIDI3LCAxNywgMTk5LCA4MSwgMTMsIDQzLCAyNywgMTcsIDEwMiwgMTMsIDQzLCAyNywgCisgICAgMTcsIDEwNSwgMTMsIDQzLCAyNywgMTcsIDE0NywgMTMsIDQzLCAyNywgMTcsIDE0OSwgMTMsIDQzLCAyNywgMTcsIDE2NCwgCisgICAgMTMsIDQzLCAyNywgMTcsIDE4NywgMTMsIDQzLCAyNywgMTcsIDIxMCwgMTM1LCAxMywgNDMsIDI3LCAxNywgMTkyLCAxMywgCisgICAgNDMsIDI3LCAxNywgMjE5LCAxMTMsIDEzLCAyMjEsIDkzLCAxNywgMTk5LCA4MSwgMTMsIDIyMSwgOTMsIDE3LCAxMDIsIDEzLCAKKyAgICAyMjEsIDkzLCAxNywgMTA1LCAxMywgMjIxLCA5MywgMTcsIDE0NywgMTMsIDIyMSwgOTMsIDE3LCAxNDksIDEzLCAyMjEsIAorICAgIDkzLCAxNywgMTY0LCAxMywgMjIxLCA5MywgMTcsIDE4NywgMTMsIDIyMSwgOTMsIDE3LCAyMTAsIDEzNSwgMTMsIDIyMSwgCisgICAgOTMsIDE3LCAxOTIsIDEzLCAyMjEsIDkzLCAxNywgMjE5LCAxMTMsIDIzLCAxMzEsIDIyOCwgMTAzLCAyMywgMjM0LCAxOTYsIAorICAgIDIyOCwgMTAzLCAyMywgMjM0LCAxOTIsIDIyOCwgMTAzLCAyMywgMjM0LCAxODEsIDIyOCwgMTAzLCAyMywgMjM0LCAxODUsIAorICAgIDIyOCwgMTAzLCAyMywgMjM0LCAxOTgsIDIyOCwgMTAzLCAyMywgMTMxLCAxMjQsIDI0OCwgMjE5LCAyMywgMjM0LCAxOTYsIAorICAgIDEyNCwgMjQ4LCAyMTksIDIzLCAxMzEsIDE1MywgMjAzLCAyNTMsIDEyNCwgMjQ4LCAyMTksIDIzLCAxMzEsIDEyNCwgMjEzLCAKKyAgICAyMjAsIDIyNiwgOTEsIDIzLCAxMzEsIDEyNCwgMjQyLCAyMDAsIDIzLCAxMzEsIDEyNCwgMjM0LCA1MCwgMjMsIDEzMSwgCisgICAgMTI0LCAyMzQsIDUxLCAyMjQsIDU5LCAyMywgMjM0LCAxOTYsIDEyNCwgMjM0LCA1MiwgMjMsIDEzMSwgMTI0LCAyMjEsIAorICAgIDIwNCwgMjMsIDIzNCwgMTk2LCAxMjQsIDIyMSwgMjA0LCAyMywgMTMxLCAxMjQsIDEwMSwgMjQ4LCAyMTksIDIzLCAxMzEsIAorICAgIDEyNCwgMTAxLCAyMTMsIDIyMCwgMjI2LCA5MCwgMjMsIDEzMSwgMTI0LCAxMDEsIDIzNCwgNTAsIDIzLCAxMzEsIDEyNCwgCisgICAgMTE1LCAxMDEsIDIzNCwgNTAsIDIzLCAxMzEsIDEyNCwgMjM0LCA1MSwgMTAxLCAyMDMsIDIyOCwgMjMsIDEzMSwgMTI0LCAKKyAgICAxMDEsIDI0MywgNTcsIDIzLCAxMzEsIDEyNCwgMTAxLCAyNDMsIDU4LCAxMjQsIDI0OCwgMjE5LCAyMywgMTMxLCAxMjQsIAorICAgIDEwMSwgMjQzLCA1OCwgMTAxLCAyNDgsIDIxOSwgMjMsIDEzMSwgMTI0LCAxMDEsIDI0MywgNTgsIDI0MiwgMjAwLCAyMywgCisgICAgMTMxLCAxMjQsIDEwMSwgMjQzLCA1OCwgMjM0LCA1MCwgMjMsIDEzMSwgMTI0LCAxMDEsIDI0MiwgMjMxLCAyMywgMjM0LCAKKyAgICAxOTYsIDEyNCwgMTAxLCAyNDIsIDIzMSwgMjMsIDEzMSwgMTAxLCAyNDgsIDIyMCwgMTE5LCAyMjgsIDEwMywgMjMsIDEzMSwgCisgICAgMTI0LCAyNDgsIDIyMCwgMTE5LCAyMjEsIDIwNCwgMjMsIDEzMSwgMTI0LCAxMDEsIDIwNiwgMzQsIDIzLCAyMzQsIDE5NiwgCisgICAgMTI0LCAxMDEsIDIwNiwgMzQsIDIzLCAxMzEsIDEyNCwgMTAxLCAyMDgsIDY4LCAxNTMsIDI0OCwgMjE5LCAyMywgMTMxLCAKKyAgICAxMjQsIDEwMSwgMjQ4LCAyMjAsIDE1MywgMjA4LCA2NywgMjMsIDEzMSwgMTI0LCAxMDEsIDE1MywgMjQ4LCAyMTksIDIzLCAKKyAgICAxMzEsIDEyNCwgMTAxLCAyMzQsIDUxLCAyMDgsIDIwMiwgMTUzLCAyMDksIDE3NCwgMjMsIDEzMSwgMTI0LCAxMTUsIDEwMSwgCisgICAgMjM0LCA1MSwgMTUzLCAyMDksIDE3NCwgMjMsIDEzMSwgMTI0LCAxMTUsIDEwMSwgMjM0LCA1MSwgMTUzLCAyNDMsIDU3LCAKKyAgICAyMywgMTMxLCAxMjQsIDIzNCwgNTEsIDEwMSwgMTE1LCAxNTMsIDIwOSwgMTc0LCAyMywgMTMxLCAxMjQsIDEwMSwgMTE1LCAKKyAgICAyMDgsIDIwMiwgMTUzLCAyMzYsIDIzMywgMjMsIDEzMSwgMTI0LCAxMDEsIDE1MywgMjQyLCAyMDAsIDIzLCAxMzEsIDEyNCwgCisgICAgMTAxLCAxNTMsIDI0NiwgMTU0LCAyMywgMTMxLCAxMjQsIDEwMSwgMTUzLCAyMzMsIDE4NSwgMjMsIDEzMSwgMTI0LCAxMDEsIAorICAgIDE1MywgMjM0LCA1MCwgMjMsIDEzMSwgMTUzLCAyNDgsIDIwNiwgMTI0LCAxMDEsIDIwOCwgNjcsIDIzLCAxMzEsIDEyNCwgCisgICAgMTAxLCAyNDMsIDU4LCAxNTMsIDIwOSwgMTc0LCAyMywgMTMxLCAxMjQsIDEwMSwgMjQzLCA1OCwgMTUzLCAyMDksIDE3NSwgCisgICAgMjQzLCA1NywgMjMsIDEzMSwgMTI0LCAxMDEsIDI0MywgNTgsIDE1MywgMjA5LCAxNzUsIDI0OCwgMjE5LCAyMywgMTMxLCAKKyAgICAxMDEsIDE1MywgMjMzLCAxODYsIDEyNCwgMjAzLCAyMjgsIDIzLCAxMzEsIDEyNCwgMTUzLCAyMzMsIDE4NiwgMTAxLCAyMDMsIAorICAgIDIyOCwgMjMsIDEzMSwgMTI0LCAxMDEsIDI0MywgNTgsIDIzNCwgNTEsIDE1MywgMjA5LCAxNzQsIDIzLCAxMzEsIDEyNCwgCisgICAgMTAxLCAyNDIsIDIzMiwgMTUzLCAyMDksIDE3NCwgMjMsIDEzMSwgMTI0LCAxMDEsIDI0MywgNTgsIDE1MywgMjM2LCAyMzMsIAorICAgIDIzLCAxMzEsIDEyNCwgMTAxLCAyNDMsIDU4LCAyNDIsIDIwMSwgMTUzLCAyMzYsIDIzMywgMjMsIDEzMSwgMTAxLCAxNTMsIAorICAgIDI0MiwgMjAxLCAxMjQsIDIwMywgMjI4LCAyMywgMTMxLCAxMjQsIDE1MywgMjQyLCAyMDEsIDEwMSwgMjAzLCAyMjgsIDIzLCAKKyAgICAxMzEsIDEwMSwgMTUzLCA0NCwgMTI0LCAyMDMsIDIyOCwgMjMsIDEzMSwgMTAxLCAxNTMsIDQ0LCAxMjQsIDIzNCwgNTAsIAorICAgIDIzLCAxMzEsIDEyNCwgMTUzLCAyNTEsIDY5LCAyMTYsIDI1NSwgMTAxLCAyMDMsIDIyOCwgMjMsIDEzMSwgMTI0LCAxNTMsIAorICAgIDI1MSwgNjksIDIyOCwgMTE4LCAxMDEsIDIwMywgMjI4LCAyMywgMTMxLCAxMjQsIDE1MywgNDQsIDEwMSwgMjAzLCAyMjgsIAorICAgIDIzLCAxMzEsIDEyNCwgMTAxLCAxNTMsIDI0MywgNTgsIDIzNCwgNTAsIDIzLCAxMzEsIDEyNCwgMTAxLCAxNTMsIDI1MSwgCisgICAgNjksIDIxNiwgMjU0LCAyMywgMTMxLCAxMjQsIDEwMSwgMTUzLCAyNTEsIDY4LCAyMywgMTMxLCAxMDEsIDE1MywgMjUxLCAKKyAgICA2OSwgMjE2LCAyNTUsIDEyNCwgMjAzLCAyMjgsIDIzLCAxMzEsIDEwMSwgMTUzLCAyNTEsIDY5LCAyMTYsIDI1NSwgMTI0LCAKKyAgICAyNDIsIDIzMSwgMjMsIDEzMSwgMTAxLCAxNTMsIDI1MSwgNjksIDEyNCwgMjAzLCAyMjgsIDIzLCAxMzEsIDEyNCwgMTUzLCAKKyAgICAyMzMsIDE4NiwgMTAxLCAyMzQsIDUwLCAyMywgMjM0LCAxODcsIDIzNiwgMjI5LCAyMzcsIDgxLCAyMywgMjM0LCAxODcsIAorICAgIDIzNiwgMjI5LCAyMzcsIDgyLCAyNDgsIDIxOSwgMjMsIDIzNCwgMTg3LCAyMzYsIDIyOSwgMjM3LCA4MiwgMjM0LCA1MCwgCisgICAgMjMsIDIzNCwgMTg3LCAyMzYsIDIyOSwgMjM3LCA4MiwgMjQzLCA1NywgMjMsIDIzNCwgMTg3LCAyMzYsIDIyOSwgMjM3LCAKKyAgICA4MiwgMjQzLCA1OCwgMjA4LCAyMDksIDIzLCAyMzQsIDE5NCwgMjM2LCAyMjksIDIzNywgODIsIDI0MywgNTcsIDIzLCAxMzEsIAorICAgIDIzNiwgMjI5LCAyMzcsIDgyLCAyNDMsIDU4LCAyNDgsIDIxOSwgMjMsIDIzNCwgMTg1LCAyMzYsIDIyOSwgMjM3LCA4MiwgCisgICAgMjQzLCA1NywgMjMsIDIzNCwgMTg3LCAyMzcsIDYxLCAyMzcsIDgyLCAyMDgsIDIwMSwgMjMsIDIzNCwgMTg3LCAyMzQsIAorICAgIDExOCwgMjM3LCA2MSwgMjM3LCA4MiwgMjA4LCAyMDEsIDIzLCAyMzQsIDE4NywgMjM3LCA2MSwgMjM3LCA4MiwgMjA4LCAKKyAgICAyMDIsIDIzNiwgMjI5LCAyNDgsIDIxOSwgMjMsIDIzNCwgMTg3LCAyMzQsIDExOCwgMjM3LCA2MSwgMjM3LCA4MiwgMjA4LCAKKyAgICAyMDIsIDIzNiwgMjI5LCAyNDgsIDIxOSwgMjMsIDIzNCwgMTg3LCAyMzcsIDYxLCAyMzcsIDgyLCAyMDgsIDIwMiwgMjQ4LCAKKyAgICAyMTksIDIzLCAyMzQsIDE4NywgMjM0LCAxMTgsIDIzNywgNjEsIDIzNywgODIsIDIwOCwgMjAyLCAyNDgsIDIxOSwgMjMsIAorICAgIDIzNCwgMTg3LCAyMzcsIDYxLCAyMzcsIDgyLCAyMDgsIDIwMiwgMTUzLCAyMzYsIDIzMywgMjMsIDIzNCwgMTkyLCAyMzcsIAorICAgIDYxLCAyMzcsIDgyLCAyMDgsIDIwMSwgMjMsIDIzNCwgMTkyLCAyMzcsIDYxLCAyMzcsIDgyLCAyMDgsIDIwMiwgMjE3LCA1MywgCisgICAgMjMsIDIzNCwgMTg1LCAyMzcsIDYxLCAyMzcsIDgyLCAyMDgsIDIwMiwgMjE3LCA1MywgMjMsIDIzNCwgMTgxLCAyMzcsIDYxLCAKKyAgICAyMzcsIDgyLCAyMDgsIDIwMSwgMjMsIDIzNCwgMTg3LCAyMzcsIDYxLCAyMzcsIDgyLCAyMDgsIDIwMiwgMjM0LCA1MCwgMjMsIAorICAgIDIzNCwgMTg3LCAyMzcsIDYxLCAyMzcsIDgyLCAyMDgsIDIwMiwgMjM0LCA1MSwgMTUzLCAyMDksIDE3NCwgMjMsIDIzNCwgCisgICAgMTg3LCAyMzcsIDYxLCAyMzcsIDgyLCAyMDgsIDIwMiwgMjM0LCA1MSwgMjE4LCAyNDIsIDIwNiwgMzQsIDIzLCAyMzQsIAorICAgIDE4NiwgMjMsIDIzNCwgMTg3LCAyNDgsIDIwNiwgMjE2LCAxNzcsIDIzNywgMTgxLCAyMywgMjM0LCAxODcsIDIzNCwgMTE3LCAKKyAgICAyMywgMjM0LCAxODcsIDE1MywgMjA5LCAxNzQsIDIzLCAyMzQsIDE4NywgMjM0LCAxMTgsIDE1MywgMjA5LCAxNzQsIDIzLCAKKyAgICAyMzQsIDE4NywgMTUzLCAyNDgsIDIxOSwgMjMsIDIzNCwgMTg3LCAxNTMsIDIzNiwgMjMzLCAyMywgMjM0LCAxODcsIDIwOCwgCisgICAgMjEwLCAxMjQsIDE1MywgMjA5LCAxNzQsIDIzLCAyMzQsIDE4NywgMjA4LCAyMTAsIDI0NywgNTUsIDIzLCAyMzQsIDE4NywgCisgICAgMjA4LCAyMTAsIDI0NywgNTYsIDE1MywgMjA5LCAxNzQsIDIzLCAyMzQsIDE4NywgMjA4LCAyMTAsIDI0NywgNTYsIDE1MywgCisgICAgMjA5LCAxNzUsIDI0OCwgMjE5LCAyMywgMjM0LCAxODcsIDIwOCwgMjEwLCAyMjQsIDE0NywgMjMsIDIzNCwgMTkzLCAyMywgCisgICAgMjM0LCAxOTQsIDE1MywgMjA5LCAxNzQsIDIzLCAyMzQsIDE5NCwgMjE4LCAyNDIsIDIwNiwgMzQsIDIzLCAyMzQsIDE5NCwgCisgICAgMTUzLCAyMzYsIDIzMywgMjMsIDIzNCwgMTgzLCAyNDIsIDE5NywgMjMsIDIzNCwgMTgyLCAyMywgMjM0LCAxOTIsIDIxNywgCisgICAgNTMsIDIzLCAyMzQsIDE5MSwgMjMsIDIzNCwgMTkyLCAxNzYsIDE1MywgMjA5LCAxNzQsIDIzLCAyMzQsIDE5MiwgMTUzLCAKKyAgICAyMDksIDE3NCwgMjMsIDIzNCwgMTkyLCAxNzYsIDIxOCwgMjQyLCAyMDYsIDM0LCAyMywgMjM0LCAxOTIsIDIxOCwgMjQyLCAKKyAgICAyMDYsIDM0LCAyMywgMjM0LCAxOTIsIDE3NiwgMTUzLCAyMzYsIDIzMywgMjMsIDIzNCwgMTkyLCAxNTMsIDIzNiwgMjMzLCAKKyAgICAyMywgMjM0LCAxOTAsIDIxNywgNTMsIDIzLCAyMzQsIDE4OSwgMjMsIDIzNCwgMTk1LCAyMywgMjM0LCAxODAsIDIzLCAyMzQsIAorICAgIDE4MSwgMTUzLCAyMDksIDE3NCwgMjMsIDIzNCwgMTgxLCAyMTgsIDI0MiwgMjA2LCAzNCwgMjMsIDIzNCwgMTgxLCAxNTMsIAorICAgIDIzNiwgMjMzLCAyMywgMjM0LCAxODUsIDIxNywgNTMsIDIzLCAyMzQsIDE4NSwgMTc2LCAxNTMsIDIzNiwgMjMzLCAyMywgCisgICAgMjM0LCAxODQsIDIzLCAyMzQsIDE4NSwgMjA5LCA1MywgMjMsIDIzNCwgMTg1LCAxNzYsIDE1MywgMjA5LCAxNzQsIDIzLCAKKyAgICAyMzQsIDE4NSwgMTUzLCAyMDksIDE3NCwgMjMsIDIzNCwgMTg1LCAxNzYsIDIxOCwgMjQyLCAyMDYsIDM0LCAyMywgMjM0LCAKKyAgICAxODUsIDIxOCwgMjQyLCAyMDYsIDM0LCAyMywgMjM0LCAxODUsIDE1MywgMjA5LCAxNzUsIDIwNSwgMTQwLCAyMjgsIDEwMywgCisgICAgMjMsIDIzNCwgMTg1LCAxNTMsIDI0OCwgMjA2LCAxMDEsIDIxMywgMjYsIDIzLCAyMzQsIDE5NywgMjMsIDEzMSwgMTI0LCAKKyAgICAxMDEsIDIxMywgMjYsIDIzLCAyMzQsIDE5NiwgMTI0LCAxMDEsIDIxMywgMjYsIDIzLCAyMzQsIDE4NSwgMTI0LCAxMDEsIAorICAgIDIxMywgMjYsIDIzLCAyMzQsIDE5OCwgMTI0LCAxMDEsIDIxMywgMjYsIDIzLCAyMzQsIDE4NSwgMjI0LCAxNDcsIDIzLCAKKyAgICAxMzEsIDEyNCwgMTAxLCAyMTMsIDI3LCAyNDgsIDIxOSwgMjMsIDEzMSwgMTI0LCAxMDEsIDIxMywgMjcsIDI0MywgNTcsIAorICAgIDIzLCAyMzQsIDE4NSwgMTI0LCAxMDEsIDIxMywgMjcsIDI0MywgNTcsIDIzLCAxMzEsIDIyNCwgMTQ4LCAyMzksIDE2NywgCisgICAgMjMsIDEzMSwgMjI0LCAxNDgsIDEyNywgMjEzLCAyMiwgMjA4LCA2NywgMjMsIDEzMSwgMjI0LCAxNDgsIDEyNywgMjEzLCAKKyAgICAyMiwgMjQyLCAxODcsIDIzLCAxMzEsIDIyNCwgMTQ4LCAxMjcsIDIxNywgNywgMjQ2LCAxNTQsIDIzLCAxMzEsIDIyNCwgCisgICAgMTQ4LCAyMDMsIDIyOCwgMjMsIDEzMSwgMTUzLCAyMDMsIDI1MywgMjI0LCAxNDgsIDIwMywgMjI4LCAyMywgMjM0LCAxOTYsIAorICAgIDIyNCwgMTQ4LCAyMDMsIDIyOCwgMjMsIDIzNCwgMTgxLCAyMjQsIDE0OCwgMjAzLCAyMjgsIDIzLCAyMzQsIDE5OCwgMjI0LCAKKyAgICAxNDgsIDIwMywgMjI4LCAyMywgMTMxLCAyMjQsIDE0OCwgMjEzLCAyMjAsIDIyNiwgOTEsIDIzLCAxMzEsIDIyNCwgMTQ4LCAKKyAgICAyNDgsIDIxOSwgMjMsIDEzMSwgMjI0LCAxNDgsIDIwNSwgMTQxLCAyMDYsIDM0LCAyMywgMTMxLCAyMjQsIDE0OCwgMjA2LCAKKyAgICAzNCwgMjMsIDIzNCwgMTg1LCAyMjQsIDE0OCwgMjA2LCAzNCwgMjMsIDEzMSwgMjI0LCAxNDgsIDEyNCwgMjA2LCAzNCwgMjMsIAorICAgIDIzNCwgMTg1LCAyMjQsIDE0OCwgMTI0LCAyMDYsIDM0LCAyMywgMjM0LCAxOTgsIDIyNCwgMTQ4LCAxMjQsIDE1MywgMTI0LCAKKyAgICAxNTMsIDIxNiwgMjU0LCAyMywgMjM0LCAxOTgsIDIyNCwgMTQ4LCAxMjQsIDE1MywgMTI0LCAyMDYsIDM0LCAyMywgMTMxLCAKKyAgICAyMjQsIDE0OCwgMjI4LCAxMDMsIDIzLCAyMzQsIDE5NiwgMjI0LCAxNDgsIDIyOCwgMTAzLCAyMywgMjM0LCAxODUsIDIyNCwgCisgICAgMTQ4LCAyMjgsIDEwMywgMjMsIDIzNCwgMTk4LCAyMjQsIDE0OCwgMjI4LCAxMDMsIDIzLCAxMzEsIDEyNCwgMTAxLCAyMjQsIAorICAgIDE0NywgMjMsIDIzNCwgMTk2LCAxMjQsIDEwMSwgMjI0LCAxNDcsIDIzLCAyMzQsIDE4NSwgMTI0LCAxMDEsIDIyNCwgMTQ3LCAKKyAgICAyMywgMjM0LCAxODUsIDIxMywgMjYsIDIzLCAyMzQsIDE5OCwgMTI0LCAxMDEsIDIyNCwgMTQ3LCAyMywgMTMxLCAxMjQsIAorICAgIDEwMSwgMjQyLCAyMzUsIDIyNCwgMTQ3LCAyMywgMjM0LCAxOTYsIDEyNCwgMTAxLCAyNDIsIDIzNSwgMjI0LCAxNDcsIDIzLCAKKyAgICAxMzEsIDIxMywgMjcsIDIzOSwgMTY3LCAyMywgMjM0LCAxODUsIDIxMywgMjcsIDEyNywgMTI0LCAxNTMsIDIzMywgMTg3LCAKKyAgICAyMjEsIDIwNCwgMjMsIDIzNCwgMTk4LCAyMTMsIDI3LCAxMjcsIDEwMSwgMTUzLCAxMjQsIDI0MiwgMjM0LCAyMywgMTMxLCAKKyAgICAyMTMsIDI3LCAyMDMsIDIyOCwgMjMsIDEzMSwgMjEzLCAyNywgMjEzLCAyMjAsIDIyNiwgOTEsIDIzLCAxMzEsIDIxMywgMjcsIAorICAgIDIyNCwgMTQ3LCAyMywgMjM0LCAxOTYsIDIxMywgMjcsIDIyNCwgMTQ3LCAyMywgMjM0LCAxODEsIDIxMywgMjcsIDIyNCwgCisgICAgMTQ3LCAyMywgMjM0LCAxOTgsIDIxMywgMjcsIDIyNCwgMTQ3LCAyMywgMTMxLCAyMTMsIDI3LCAyMjEsIDIwNCwgMjMsIAorICAgIDEzMSwgMjEzLCAyNywgMTAxLCAyNDMsIDU3LCAyMywgMTMxLCAyMTMsIDI3LCAxMDEsIDIxMywgMjIwLCAyMjYsIDkwLCAyMywgCisgICAgMTMxLCAyMTMsIDI3LCAyMjgsIDEwMywgMjMsIDEzMSwgMjEzLCAyNywgMjA2LCAzNCwgMjMsIDIzNCwgMTgzLCAyMTMsIDI3LCAKKyAgICAyMDYsIDM0LCAyMywgMTMxLCAxMjQsIDIxMywgMjcsIDIyNCwgMTQ3LCAyMywgMjM0LCAxOTYsIDEyNCwgMjEzLCAyNywgCisgICAgMjI0LCAxNDcsIDIzLCAyMzQsIDE5MCwgMTI0LCAyMTMsIDI3LCAyMjQsIDE0OCwgMjE3LCA3OCwgMjMsIDIzNCwgMTgzLCAKKyAgICAxMjQsIDIxMywgMjcsIDIyNCwgMTQ4LCAyMTYsIDI1NCwgMjMsIDIzNCwgMTgzLCAxMjQsIDIxMywgMjcsIDIyNCwgMTQ4LCAKKyAgICAyMjgsIDExNywgMjMsIDIzNCwgMTgzLCAxMjQsIDIxMywgMjcsIDIyNCwgMTQ4LCAyMDMsIDI1MiwgMjMsIDIzNCwgMTkyLCAKKyAgICAxMjQsIDIxMywgMjcsIDIyNCwgMTQ3LCAyMywgMjM0LCAxODUsIDEyNCwgMjEzLCAyNywgMjI0LCAxNDcsIDIzLCAyMzQsIAorICAgIDE5OCwgMTI0LCAyMTMsIDI3LCAyMjQsIDE0OCwgMjE2LCAyNTQsIDIzLCAyMzQsIDE5OCwgMTI0LCAyMTMsIDI3LCAyMjQsIAorICAgIDE0NywgMjMsIDEzMSwgMTAxLCAyMzksIDE2NywgMjMsIDIzNCwgMTg1LCAyMjEsIDIwNCwgMjMsIDEzMSwgMTAxLCAyMDMsIAorICAgIDIyOCwgMjMsIDIzNCwgMTk2LCAxMDEsIDIwMywgMjI4LCAyMywgMTMxLCAxMDEsIDIxMywgMjIwLCAyMjYsIDkxLCAyMywgCisgICAgMTMxLCAxMDEsIDExNSwgMTUzLCAyMDksIDE3NCwgMjMsIDIzNCwgMTgzLCAxMDEsIDIwNiwgMzQsIDIzLCAxMzEsIDEwMSwgCisgICAgMTUzLCAyMjQsIDE0NywgMjMsIDEzMSwgMTAxLCAyMjQsIDE0NywgMjMsIDEzMSwgMTAxLCAyMTMsIDI3LCAyMjQsIDE0NywgCisgICAgMjMsIDIzNCwgMTk2LCAxMDEsIDIxMywgMjcsIDIyNCwgMTQ3LCAyMywgMjM0LCAxOTAsIDEwMSwgMjEzLCAyNywgMjI0LCAKKyAgICAxNDgsIDIxNywgNzgsIDIzLCAyMzQsIDE5MiwgMTAxLCAyMTMsIDI3LCAyMjQsIDE0NywgMjMsIDIzNCwgMTg1LCAxMDEsIAorICAgIDIxMywgMjcsIDIyNCwgMTQ3LCAyMywgMjM0LCAxOTgsIDEwMSwgMjEzLCAyNywgMjI0LCAxNDgsIDIxNiwgMjU0LCAyMywgCisgICAgMjM0LCAxOTgsIDEwMSwgMjEzLCAyNywgMjI0LCAxNDgsIDIyOCwgMTE3LCAyMywgMjM0LCAxOTgsIDEwMSwgMjEzLCAyNywgCisgICAgMjI0LCAxNDcsIDIzLCAyMzQsIDE5NiwgMTAxLCAyMTMsIDI3LCAyMjQsIDE0OCwgMjQ4LCAyMTksIDIzLCAyMzQsIDE5NCwgCisgICAgMTAxLCAyMTMsIDI3LCAyMjQsIDE0OCwgMjQzLCA1NywgMjMsIDIzNCwgMTk0LCAxMDEsIDIxMywgMjcsIDIyNCwgMTQ4LCAKKyAgICAyNDMsIDU4LCAyMDksIDE3NCwgMjMsIDIzNCwgMTgzLCAxMDEsIDIxMywgMjcsIDIyNCwgMTQ4LCAyNDMsIDU4LCAyMTYsIAorICAgIDI1NCwgMjMsIDIzNCwgMTgzLCAxMDEsIDIxMywgMjcsIDIyNCwgMTQ4LCAyNDMsIDU4LCAyMjgsIDExNywgMjMsIDIzNCwgCisgICAgMTgzLCAxMDEsIDIxMywgMjcsIDIyNCwgMTQ4LCAyNDMsIDU3LCAyMywgMjM0LCAxODUsIDEyNCwgMjM0LCA1MCwgMjMsIAorICAgIDEzMSwgMTI0LCAxNTMsIDIwOSwgMTc0LCAyMywgMjM0LCAxODUsIDEyNCwgMTUzLCAyMDksIDE3NCwgMjMsIDEzMSwgMTI0LCAKKyAgICAxNTMsIDIwOSwgMTc1LCAxNTMsIDI0MSwgNzAsIDIzLCAxMzEsIDEyNCwgMTUzLCAyMDksIDE3NSwgMTUzLCAyNDMsIDU3LCAKKyAgICAyMywgMTMxLCAxMjQsIDE1MywgMjA5LCAxNzUsIDE1MywgMjQ4LCAyMTksIDIzLCAxMzEsIDEyNCwgMTUzLCAyMDksIDE3NSwgCisgICAgMTI0LCAyNDgsIDIxOSwgMjMsIDEzMSwgMTI0LCAxNTMsIDIwOSwgMTc1LCAyNDgsIDk2LCAyNDgsIDIxOSwgMjMsIDEzMSwgCisgICAgMTI0LCAxNTMsIDIwOSwgMTc1LCAxMjQsIDIzNCwgNTIsIDIzLCAxMzEsIDEyNCwgMTUzLCAyMzYsIDIzNCwgMTI0LCAyMDgsIAorICAgIDY3LCAyMywgMTMxLCAxMjQsIDE1MywgMjM2LCAyMzQsIDEyNCwgMjQ4LCAyMTksIDIzLCAxMzEsIDEyNCwgMTUzLCAxMTcsIAorICAgIDIzLCAxMzEsIDEyNCwgMTUzLCAyNDIsIDE5NywgMjMsIDEzMSwgMTI0LCAxNTMsIDI0MiwgMTkwLCAxNTMsIDIyOCwgNzMsIAorICAgIDIzLCAyMzQsIDE5NCwgMTI0LCAxNTMsIDI0MiwgMTkwLCAxNTMsIDIyOCwgNzMsIDIzLCAxMzEsIDEyNCwgMTUzLCAyNDIsIAorICAgIDE5MCwgMTUzLCAyMDMsIDI1MiwgMjMsIDEzMSwgMTI0LCAxNTMsIDI0NiwgMTU1LCAyMywgMjM0LCAxOTIsIDEyNCwgMjA2LCAKKyAgICAzNCwgMjMsIDIzNCwgMTkyLCAxMjQsIDE1MywgMjE3LCA1MywgMjMsIDIzNCwgMTg1LCAxMjQsIDE1MywgMjE3LCA1MywgMjMsIAorICAgIDIzNCwgMTg1LCAxMjQsIDE1MywgMjI1LCA3MCwgMjMsIDIzNCwgMTg1LCAxMjQsIDIwNiwgMzQsIDIzLCAyMzQsIDE4NSwgCisgICAgMTI0LCAxNTMsIDIwOSwgNTMsIDIzLCAyMzQsIDE5OCwgMTI0LCAxNTMsIDIxNiwgMjU0LCAyMywgMjM0LCAxOTgsIDEyNCwgCisgICAgMTUzLCAyMjgsIDExNywgMjMsIDIzNCwgMTk4LCAxMjQsIDIwNiwgMzQsIDIzLCAxMzEsIDIwNiwgMzQsIDIzLCAxMzEsIAorICAgIDE1MywgMjM0LCAxMTcsIDIzLCAxMzEsIDE1MywgMjA5LCAxNzUsIDI0MSwgNzAsIDIzLCAxMzEsIDE1MywgMjA5LCAxNzUsIAorICAgIDI0MywgNTcsIDIzLCAxMzEsIDE1MywgMjA5LCAxNzUsIDI0OCwgMjE5LCAyMywgMTMxLCAxNTMsIDIzNiwgMjMzLCAyMywgCisgICAgMTMxLCAxNTMsIDI0OCwgMjA2LCAxMjQsIDIyMSwgMjA0LCAyMywgMTMxLCAxNTMsIDI0OCwgMjA2LCAxMDEsIDIxMywgMjYsIAorICAgIDIzLCAxMzEsIDE1MywgMjQ4LCAyMDYsIDIxMywgMjcsIDIyNCwgMTQ3LCAyMywgMTMxLCAxNTMsIDIwMywgMjUzLCAxMjAsIAorICAgIDIzNywgODEsIDIzLCAxMzEsIDE1MywgMTE5LCAxMjAsIDIzNywgODEsIDIzLCAxMzEsIDE1MywgMjAzLCAyNTMsIDEyNiwgCisgICAgMjM3LCA4MSwgMjMsIDEzMSwgMTUzLCAyMDMsIDI1MywgMjM2LCAyMjksIDIzNywgODEsIDIzLCAxMzEsIDE1MywgMTE5LCAKKyAgICAyMzYsIDIyOSwgMjEzLCAyMjAsIDIyNiwgOTAsIDIzLCAyMzQsIDE4OCwgMjMsIDEzMSwgMjM0LCAxMTcsIDIzLCAyMDUsIAorICAgIDE0MiwgMjA5LCAxMzgsIDIzLCAyMDUsIDE0MiwgMjIxLCAyMCwgMjMsIDIwNSwgMTQyLCAyNDgsIDIwNSwgMjMsIDIzNSwgCisgICAgNzgsIDIwOSwgMTM4LCAyMywgMjM1LCA3OCwgMjIxLCAyMCwgMjMsIDIzNSwgNzgsIDI0OCwgMjA1LCAyMywgMjA4LCA1MiwgCisgICAgMjA5LCAxMzgsIDIzLCAyMDgsIDUyLCAyMjEsIDIwLCAyMywgMjA4LCA1MiwgMjQ4LCAyMDUsIDIzLCAyNDgsIDQ0LCAyMDksIAorICAgIDEzOCwgMjMsIDI0OCwgNDQsIDIyMSwgMjAsIDIzLCAyNDgsIDQ0LCAyNDgsIDIwNSwgMjMsIDIxMiwgMTczLCAyMDksIDEzOCwgCisgICAgMjMsIDIxMiwgMTczLCAyMjEsIDIwLCAyMywgMjEyLCAxNzMsIDI0OCwgMjA1LCAyMywgMjA3LCAyMDMsIDIwNywgMTE2LCAKKyAgICAyMywgMjA3LCAyMDMsIDI0OCwgMjA1LCAyMywgMjA4LCAxODksIDIyNSwgNzEsIDIwOSwgMTM4LCAyMywgMjA4LCAxODksIDQsIAorICAgIDIwOSwgMTM4LCAyMywgMjA4LCAxODksIDIyNSwgNzEsIDIyMSwgMjAsIDIzLCAyMDgsIDE4OSwgNCwgMjIxLCAyMCwgMjMsIAorICAgIDIwOCwgMTg5LCAyMTAsIDE1MCwgMjMsIDIzNywgMzUsIDIyNSwgNzEsIDIwOSwgMTM4LCAyMywgMjM3LCAzNSwgNCwgMjA5LCAKKyAgICAxMzgsIDIzLCAyMzcsIDM1LCAyMjUsIDcxLCAyMjEsIDIwLCAyMywgMjM3LCAzNSwgNCwgMjIxLCAyMCwgMjMsIDIzNywgMzUsIAorICAgIDIxMCwgMTUwLCAyMywgMjA4LCAxODksIDIzNywgMzUsIDI1MSwgMTA2LCAyMywgMjIxLCA1MSwgMTE1LCAxMjcsIDIyNSwgCisgICAgNzAsIDIzLCAyMjEsIDUxLCAxMTUsIDEyNywgMjA5LCA1MywgMjMsIDIyMSwgNTEsIDExNSwgMjEwLCAxNTAsIDIzLCAyMjEsIAorICAgIDUxLCAxMjcsIDIxMCwgMTUwLCAyMywgMjIxLCA1MSwgMTE1LCAxMjcsIDI1MSwgMTA3LCAyMjUsIDcwLCAyMywgMjIxLCA1MSwgCisgICAgMTE1LCAxMjcsIDI1MSwgMTA3LCAyMDksIDUzLCAyMywgMjIxLCA1MSwgMjA5LCAxNzUsIDIwNSwgMTg2LCAyMDksIDE3NSwgCisgICAgMjExLCAyMTYsIDIzLCAyMjEsIDUwLCAyMzcsIDg3LCAyNDMsIDQ3LCAyMywgMjIxLCA1MiwgMjM3LCA4NywgMjQzLCA0NywgCisgICAgMjMsIDIyMSwgNTAsIDIwOSwgMTM5LCAyMDgsIDY4LCAyMDksIDUzLCAyMywgMjIxLCA1MCwgMjA5LCAxMzksIDIwOCwgNjgsIAorICAgIDIyMiwgNjUsIDIzLCAyMjEsIDUwLCAyMDksIDEzOSwgMjA4LCA2OCwgMjI1LCA3MCwgMjMsIDIyMSwgNTAsIDIwOSwgMTM5LCAKKyAgICAyMDgsIDY4LCAyMjUsIDY4LCAyMywgMjIxLCA1MCwgMjA5LCAxMzksIDIwMCwgMjIwLCAyMzcsIDM4LCAyMywgMjIxLCA1MCwgCisgICAgNTMsIDIwOCwgNjcsIDIzLCAyMjEsIDUwLCA1MywgMjAwLCAyMjAsIDIzNywgMzgsIDIzLCAyMjEsIDUwLCA1MywgMjUxLCAKKyAgICAxMDYsIDIzLCAyMjEsIDUwLCA1MywgMjUxLCAxMDcsIDIwMCwgMjIwLCAyMzcsIDM4LCAyMywgMjIxLCA1MCwgMjQyLCAyMzQsIAorICAgIDIzLCAyMjEsIDUwLCAyMDUsIDgzLCAyMDgsIDY4LCAyMjEsIDU0LCAyMywgMjIxLCA1MCwgMjA1LCA4MywgMjAwLCAyMjAsIAorICAgIDIzNywgMzgsIDIzLCAyMjEsIDUwLCAyMDUsIDgzLCAyNTEsIDEwNiwgMjMsIDIyMSwgNTAsIDIwNSwgODMsIDI1MSwgMTA3LCAKKyAgICAyMDAsIDIyMCwgMjM3LCAzOCwgMjMsIDIyMSwgNTAsIDI0OCwgMjIzLCAyMDksIDUzLCAyMywgMjIxLCA1MCwgMjQ4LCAyMjMsIAorICAgIDIyMiwgNjUsIDIzLCAyMjEsIDUwLCAyNDgsIDIyMywgMjI1LCA3MCwgMjMsIDIyMSwgNTAsIDI0MywgMTYsIDIwOSwgNTMsIAorICAgIDIzLCAyMjEsIDUwLCAyNDMsIDE2LCAyMjIsIDY1LCAyMywgMjIxLCA1MCwgMjQzLCAxNiwgMjI1LCA3MCwgMjMsIDIyMSwgCisgICAgNTAsIDI0MywgMTYsIDIxMiwgMjI2LCAyMywgMjIxLCA1MCwgMjQ3LCA3LCAyMDksIDUzLCAyMywgMjIxLCA1MCwgMjQ3LCA3LCAKKyAgICAyMjIsIDY1LCAyMywgMjIxLCA1MCwgMjQ3LCA3LCAyMjUsIDcwLCAyMywgMjIxLCA1MCwgMTAwLCAyMDksIDUzLCAyMywgCisgICAgMjIxLCA1MCwgMTAwLCAyMjIsIDY1LCAyMywgMjIxLCA1MCwgMTAwLCAyMjUsIDcwLCAyMywgMjIxLCA1MCwgMTk5LCAyNywgCisgICAgMjA5LCA1MywgMjMsIDIyMSwgNTAsIDE5OSwgMjcsIDIyMiwgNjUsIDIzLCAyMjEsIDUwLCAxOTksIDI3LCAyMjUsIDcwLCAKKyAgICAyMywgMjIxLCA1MCwgMjE2LCA2OSwgMjA5LCA1MywgMjMsIDIyMSwgNTAsIDIxNiwgNjksIDIyMiwgNjUsIDIzLCAyMjEsIAorICAgIDUwLCAyMTYsIDY5LCAyMjUsIDcwLCAyMywgMjA1LCAxMTIsIDIxMiwgMjI0LCAyMDksIDEzOCwgMjMsIDIwNSwgMTEyLCAKKyAgICAyMTIsIDIyNCwgMjM5LCAxNzUsIDIzLCAyMDUsIDExMiwgMjEyLCAyMjQsIDI1MSwgMTA2LCAyMywgMjA1LCAxMTIsIDIxMiwgCisgICAgMjI1LCAyMDksIDEzOCwgMjMsIDIwNSwgMTEyLCAyMTIsIDIyNSwgMjM5LCAxNzUsIDIzLCAyMDUsIDExMiwgMjEyLCAyMjUsIAorICAgIDI1MSwgMTA2LCAyMywgMjA1LCAxMTIsIDIxMCwgOTUsIDIzLCAyMDUsIDExMiwgMjUwLCAyMTUsIDIwOCwgMjE4LCAyMDksIAorICAgIDEzOCwgMjMsIDIwNSwgMTEyLCAyNTAsIDIxNSwgMjA4LCAyMTgsIDIzOSwgMTc1LCAyMywgMjA1LCAxMTIsIDI1MCwgMjE1LCAKKyAgICAyMDgsIDIxOCwgMjA1LCA4MiwgMjMsIDIyMSwgNTMsIDI1MCwgMTE2LCAyMDksIDUzLCAyMywgMjIxLCA1MywgMjUwLCAxMTYsIAorICAgIDIyMiwgNjUsIDIzLCAyMjEsIDUzLCAyNTAsIDExNiwgMjI1LCA3MCwgMjMsIDIyMSwgNTMsIDI1MCwgMTE2LCAyMjUsIDY4LCAKKyAgICAyMywgMjIxLCA1MywgMjA1LCAxMzYsIDIwOSwgNTMsIDIzLCAyMjEsIDUzLCAyMDUsIDEzNiwgMjIyLCA2NSwgMjMsIDIyMSwgCisgICAgNTMsIDIwNSwgMTM2LCAyMjUsIDcwLCAyMywgMjIxLCA1MywgMjA1LCAxMzYsIDIyNSwgNjgsIDIzLCAyMjEsIDUzLCAyNDgsIAorICAgIDIwNiwgMjUwLCAxMTYsIDIwOSwgNTMsIDIzLCAyMjEsIDUzLCAyNDgsIDIwNiwgMjUwLCAxMTYsIDIyMiwgNjUsIDIzLCAKKyAgICAyMjEsIDUzLCAyNDgsIDIwNiwgMjUwLCAxMTYsIDIyNSwgNzAsIDIzLCAyMjEsIDUzLCAyNDgsIDIwNiwgMjUwLCAxMTYsIAorICAgIDIyNSwgNjgsIDIzLCAyMjEsIDUzLCAyNDgsIDIwNiwgMjA1LCAxMzYsIDIwOSwgNTMsIDIzLCAyMjEsIDUzLCAyNDgsIDIwNiwgCisgICAgMjA1LCAxMzYsIDIyMiwgNjUsIDIzLCAyMjEsIDUzLCAyNDgsIDIwNiwgMjA1LCAxMzYsIDIyNSwgNzAsIDIzLCAyMjEsIDUzLCAKKyAgICAyNDgsIDIwNiwgMjA1LCAxMzYsIDIyNSwgNjgsIDIzLCAyMjEsIDUyLCAyMDksIDEzOSwgMjA4LCA2OCwgMjA5LCA1MywgMjMsIAorICAgIDIyMSwgNTIsIDIwOSwgMTM5LCAyMDgsIDY4LCAyMjIsIDY1LCAyMywgMjIxLCA1MiwgMjA5LCAxMzksIDIwOCwgNjgsIDIyNSwgCisgICAgNzAsIDIzLCAyMjEsIDUyLCAyMDksIDEzOSwgMjA4LCA2OCwgMjI1LCA2OCwgMjMsIDIyMSwgNTIsIDIwOSwgMTM5LCAyMDAsIAorICAgIDIyMCwgMjM3LCAzOCwgMjMsIDIyMSwgNTIsIDUzLCAyMDgsIDY3LCAyMywgMjIxLCA1MiwgNTMsIDIwMCwgMjIwLCAyMzcsIAorICAgIDM4LCAyMywgMjIxLCA1MiwgNTMsIDI1MSwgMTA2LCAyMywgMjIxLCA1MiwgNTMsIDI1MSwgMTA3LCAyMDAsIDIyMCwgMjM3LCAKKyAgICAzOCwgMjMsIDIyMSwgNTIsIDI0MiwgMjM0LCAyMywgMjIxLCA1MiwgMjA1LCA4MywgMjA4LCA2OCwgMjIxLCA1NCwgMjMsIAorICAgIDIyMSwgNTIsIDIwNSwgODMsIDIwMCwgMjIwLCAyMzcsIDM4LCAyMywgMjIxLCA1MiwgMjA1LCA4MywgMjUxLCAxMDcsIDIyMSwgCisgICAgNTQsIDIzLCAyMjEsIDUyLCAyMDUsIDgzLCAyNTEsIDEwNywgMjAwLCAyMjAsIDIzNywgMzgsIDIzLCAyMjEsIDUyLCAyNDgsIAorICAgIDIyMiwgMjMsIDIyMSwgNTIsIDI0MywgMTYsIDIwOSwgNTMsIDIzLCAyMjEsIDUyLCAyNDMsIDE2LCAyMjIsIDY1LCAyMywgCisgICAgMjIxLCA1MiwgMjQzLCAxNiwgMjI1LCA3MCwgMjMsIDIyMSwgNTIsIDI0NywgNiwgMjMsIDIyMSwgNTIsIDEwMCwgMjA5LCAKKyAgICA1MywgMjMsIDIyMSwgNTIsIDEwMCwgMjIyLCA2NSwgMjMsIDIyMSwgNTIsIDEwMCwgMjI1LCA3MCwgMjMsIDIyMSwgNTIsIAorICAgIDE5OSwgMjcsIDIwOSwgNTMsIDIzLCAyMjEsIDUyLCAxOTksIDI3LCAyMjIsIDY1LCAyMywgMjIxLCA1MiwgMTk5LCAyNywgCisgICAgMjI1LCA3MCwgMjMsIDIyMSwgNTIsIDIxNiwgNjksIDIwOSwgNTMsIDIzLCAyMjEsIDUyLCAyMTYsIDY5LCAyMjIsIDY1LCAKKyAgICAyMywgMjIxLCA1MiwgMjE2LCA2OSwgMjI1LCA3MCwgMjMsIDIwNSwgMTEzLCAyMTIsIDIyNSwgMjA5LCAxMzgsIDIzLCAyMDUsIAorICAgIDExMywgMjEyLCAyMjUsIDIzOSwgMTc1LCAyMywgMjA1LCAxMTMsIDIxMiwgMjI1LCAyNTEsIDEwNiwgMjMsIDIwNSwgMTEzLCAKKyAgICAyMTIsIDIyNCwgMjA5LCAxMzgsIDIzLCAyMDUsIDExMywgMjEyLCAyMjQsIDIzOSwgMTc1LCAyMywgMjA1LCAxMTMsIDIxMiwgCisgICAgMjI0LCAyNTEsIDEwNiwgMjMsIDIwNSwgMTEzLCAyMTAsIDk1LCAyMywgMjIxLCA1MCwgMjQyLCAxOTAsIDIxNCwgODgsIAorICAgIDIwOSwgNTMsIDIzLCAyMjEsIDUwLCAyNDIsIDE5MCwgMjE0LCA4OCwgMjIyLCA2NSwgMjMsIDIyMSwgNTAsIDI0MiwgMTkwLCAKKyAgICAyMTQsIDg4LCAyMjUsIDcwLCAyMywgMjIxLCA1MCwgMjQyLCAxOTAsIDIxNCwgODgsIDIyNSwgNjgsIDIzLCAyMjEsIDUwLCAKKyAgICAyNDIsIDE5MCwgMjM0LCAyMTIsIDIwOSwgNTMsIDIzLCAyMjEsIDUwLCAyNDIsIDE5MCwgMjM0LCAyMTIsIDIyMiwgNjUsIAorICAgIDIzLCAyMjEsIDUwLCAyNDIsIDE5MCwgMjM0LCAyMTIsIDIyNSwgNzAsIDIzLCAyMjEsIDUwLCAyNDIsIDE5MCwgMjM0LCAKKyAgICAyMTIsIDIyNSwgNjgsIDIzLCAyMjEsIDUwLCAyNDIsIDE5MCwgMjA2LCA0MCwgMjQ2LCAxNTYsIDIwOSwgNTMsIDIzLCAyMjEsIAorICAgIDUwLCAyNDIsIDE5MCwgMjA2LCA0MCwgMjQ2LCAxNTYsIDIyMiwgNjUsIDIzLCAyMjEsIDUwLCAyMzMsIDg1LCAyMDksIDUzLCAKKyAgICAyMywgMjIxLCA1MCwgMjMzLCA4NSwgMjIyLCA2NSwgMjMsIDIyMSwgNTAsIDIzMywgODUsIDIyNSwgNzAsIDIzLCAyMjEsIAorICAgIDUwLCAyMjQsIDc1LCAyMDksIDUzLCAyMywgMjIxLCA1MCwgMjI0LCA3NSwgMjIyLCA2NSwgMjMsIDIyMSwgNTAsIDIyNCwgCisgICAgNzUsIDIyNSwgNzAsIDIzLCAyMjEsIDUwLCAyMjQsIDc1LCA0LCAyMzksIDE3NSwgMjMsIDIyMSwgNTAsIDIwMSwgNzgsIAorICAgIDI0MiwgMTkwLCA1MywgMjA5LCA1MywgMjMsIDIyMSwgNTAsIDIwMSwgNzgsIDI0MiwgMTkwLCA1MywgMjIyLCA2NSwgMjMsIAorICAgIDIyMSwgNTAsIDIwMSwgNzgsIDI0MiwgMTkwLCA1MywgMjI1LCA3MCwgMjMsIDIyMSwgNTAsIDIwMSwgNzgsIDI0MiwgMTkwLCAKKyAgICAyMDUsIDgzLCAyMDksIDUzLCAyMywgMjIxLCA1MCwgMjAxLCA3OCwgMjQyLCAxOTAsIDIwNSwgODMsIDIyMiwgNjUsIDIzLCAKKyAgICAyMjEsIDUwLCAyMDEsIDc4LCAyNDIsIDE5MCwgMjA1LCA4MywgMjI1LCA3MCwgMjMsIDIyMSwgNTAsIDI0MiwgMTkwLCAyMDYsIAorICAgIDk4LCAyMDgsIDY3LCAyMywgMjIxLCA1MCwgMjQyLCAxODgsIDI0MiwgMjM1LCAyMDksIDUzLCAyMywgMjIxLCA1MCwgMjQyLCAKKyAgICAxODgsIDI0MiwgMjM1LCAyMjIsIDY1LCAyMywgMjEyLCAyMjQsIDIwOSwgMTM4LCAyMywgMjEyLCAyMjQsIDIzOSwgMTc1LCAKKyAgICAyMywgMjEyLCAyMjQsIDI1MSwgMTA4LCAyMywgMjIxLCA1MCwgMjEwLCA5NSwgMjMsIDIyMSwgNTAsIDI0MiwgMTkwLCAyMzQsIAorICAgIDQ0LCAyMzYsIDIwMCwgMjAxLCAxMDIsIDIzLCAyMjEsIDUwLCAyMzMsIDg1LCAyMzQsIDQ0LCAyMzYsIDIwMCwgMjAxLCAKKyAgICAxMDIsIDIzLCAyMjEsIDUwLCAyMjQsIDc1LCAyMzQsIDQ0LCAyMzYsIDIwMCwgMjAxLCAxMDIsIDIzLCAyMjEsIDUwLCAyMDEsIAorICAgIDc4LCAyMzQsIDQ0LCAyMzYsIDIwMCwgMjAxLCAxMDIsIDIzLCAyMTIsIDIyNCwgMjA5LCAxMzksIDIzNCwgNDQsIDIzNiwgCisgICAgMjAwLCAyMDEsIDEwMiwgMjMsIDIxMiwgMjI0LCA1MywgMjM0LCA0NCwgMjM2LCAyMDAsIDIwMSwgMTAyLCAyMywgMjEyLCAKKyAgICAyMjQsIDI1MSwgMTA3LCAyMzQsIDQ0LCAyMzYsIDIwMCwgMjAxLCAxMDIsIDIzLCAyMjEsIDUwLCAyNDIsIDE5MCwgMjM0LCAKKyAgICA0NCwgMjQ2LCAyNDMsIDIzLCAyMjEsIDUwLCAyMzMsIDg1LCAyMzQsIDQ0LCAyNDYsIDI0MywgMjMsIDIyMSwgNTAsIDIyNCwgCisgICAgNzUsIDIzNCwgNDQsIDI0NiwgMjQzLCAyMywgMjIxLCA1MCwgMjAxLCA3OCwgMjM0LCA0NCwgMjQ2LCAyNDMsIDIzLCAyMTIsIAorICAgIDIyNCwgMjA5LCAxMzksIDIzNCwgNDQsIDI0NiwgMjQzLCAyMywgMjEyLCAyMjQsIDUzLCAyMzQsIDQ0LCAyNDYsIDI0MywgCisgICAgMjMsIDIxMiwgMjI0LCAyNTEsIDEwNywgMjM0LCA0NCwgMjQ2LCAyNDMsIDIzLCAyMjEsIDUwLCAyMDEsIDc4LCAyNDEsIDcxLCAKKyAgICAyMTYsIDkxLCAyMDksIDUzLCAyMywgMjIxLCA1MCwgMjAxLCA3OCwgMjQxLCA3MSwgMjE2LCA5MSwgMjIyLCA2NSwgMjMsIAorICAgIDIyMSwgNTAsIDIwMSwgNzgsIDI0MSwgNzEsIDIxNiwgOTEsIDIyNSwgNzAsIDIzLCAyMjEsIDUyLCAyNDIsIDE5MCwgMjM0LCAKKyAgICA0NCwgMjQ3LCA2NSwgMjA5LCA1MywgMjMsIDIyMSwgNTIsIDI0MiwgMTkwLCAyMzQsIDQ0LCAyNDcsIDY1LCAyMjUsIDcwLCAKKyAgICAyMywgMjIxLCA1MiwgMjMzLCA4NSwgMjM0LCA0NCwgMjQ3LCA2NSwgNCwgMjM5LCAxNzUsIDIzLCAyMjEsIDUyLCAyMzMsIAorICAgIDg1LCAyMzQsIDQ0LCAyNDcsIDY1LCAyMjUsIDcxLCAyMzksIDE3NSwgMjMsIDIyMSwgNTIsIDIzMywgODUsIDIzNCwgNDQsIAorICAgIDI0NywgNjUsIDQsIDIwNSwgODIsIDIzLCAyMjEsIDUyLCAyMzMsIDg1LCAyMzQsIDQ0LCAyNDcsIDY1LCAyMjUsIDcxLCAKKyAgICAyMDUsIDgyLCAyMywgMjIxLCA1MiwgMjI0LCA3NSwgMjM0LCA0NCwgMjQ3LCA2NSwgNCwgMjA5LCAxMzgsIDIzLCAyMjEsIAorICAgIDUyLCAyMjQsIDc1LCAyMzQsIDQ0LCAyNDcsIDY1LCAyMjUsIDcxLCAyMDksIDEzOCwgMjMsIDIyMSwgNTIsIDIyNCwgNzUsIAorICAgIDIzNCwgNDQsIDI0NywgNjUsIDQsIDIzOSwgMTc1LCAyMywgMjIxLCA1MiwgMjI0LCA3NSwgMjM0LCA0NCwgMjQ3LCA2NSwgCisgICAgMjI1LCA3MSwgMjM5LCAxNzUsIDIzLCAyMjEsIDUyLCAyMDEsIDc4LCAyMzQsIDQ0LCAyNDcsIDY1LCAyMDksIDUzLCAyMywgCisgICAgMjIxLCA1MiwgMjAxLCA3OCwgMjM0LCA0NCwgMjQ3LCA2NSwgMjI1LCA3MCwgMjMsIDIxMiwgMjI1LCAyMDksIDEzOSwgMjM0LCAKKyAgICA0NCwgMjQ3LCA2NCwgMjMsIDIxMiwgMjI1LCA1MywgMjM0LCA0NCwgMjQ3LCA2NCwgMjMsIDIxMiwgMjI1LCAyNTEsIDEwNywgCisgICAgMjM0LCA0NCwgMjQ3LCA2NCwgMjMsIDIyMSwgNTIsIDI0MiwgMTkwLCAyMzQsIDQ0LCAyMzcsIDMyLCAyMDksIDUzLCAyMywgCisgICAgMjIxLCA1MiwgMjQyLCAxOTAsIDIzNCwgNDQsIDIzNywgMzIsIDIyNSwgNzAsIDIzLCAyMjEsIDUyLCAyMzMsIDg1LCAyMzQsIAorICAgIDQ0LCAyMzcsIDMyLCA0LCAyMzksIDE3NSwgMjMsIDIyMSwgNTIsIDIzMywgODUsIDIzNCwgNDQsIDIzNywgMzIsIDIyNSwgCisgICAgNzEsIDIzOSwgMTc1LCAyMywgMjIxLCA1MiwgMjMzLCA4NSwgMjM0LCA0NCwgMjM3LCAzMiwgMjA1LCA4MywgNCwgMjA1LCAKKyAgICA4MiwgMjMsIDIyMSwgNTIsIDIzMywgODUsIDIzNCwgNDQsIDIzNywgMzIsIDIwNSwgODMsIDIyNSwgNzEsIDIwNSwgODIsIAorICAgIDIzLCAyMjEsIDUyLCAyMjQsIDc1LCAyMzQsIDQ0LCAyMzcsIDMyLCA0LCAyMDksIDEzOCwgMjMsIDIyMSwgNTIsIDIyNCwgCisgICAgNzUsIDIzNCwgNDQsIDIzNywgMzIsIDIyNSwgNzEsIDIwOSwgMTM4LCAyMywgMjIxLCA1MiwgMjI0LCA3NSwgMjM0LCA0NCwgCisgICAgMjM3LCAzMiwgNCwgMjM5LCAxNzUsIDIzLCAyMjEsIDUyLCAyMjQsIDc1LCAyMzQsIDQ0LCAyMzcsIDMyLCAyMjUsIDcxLCAKKyAgICAyMzksIDE3NSwgMjMsIDIyMSwgNTIsIDIwMSwgNzgsIDIzNCwgNDQsIDIzNywgMzIsIDIwOSwgNTMsIDIzLCAyMjEsIDUyLCAKKyAgICAyMDEsIDc4LCAyMzQsIDQ0LCAyMzcsIDMyLCAyMjUsIDcwLCAyMywgMjEyLCAyMjUsIDIwOSwgMTM5LCAyMzQsIDQ0LCAyMzcsIAorICAgIDMxLCAyMywgMjEyLCAyMjUsIDUzLCAyMzQsIDQ0LCAyMzcsIDMxLCAyMywgMjEyLCAyMjUsIDI1MSwgMTA3LCAyMzQsIDQ0LCAKKyAgICAyMzcsIDMxLCAyMywgMjIxLCA1MiwgMjQyLCAxOTAsIDIwOSwgNTMsIDIzLCAyMjEsIDUyLCAyNDIsIDE5MCwgMjIyLCA2NSwgCisgICAgMjMsIDIyMSwgNTIsIDI0MiwgMTkwLCAyMjUsIDcwLCAyMywgMjIxLCA1MiwgMjQyLCAxOTAsIDIyNSwgNjgsIDIzLCAyMjEsIAorICAgIDUyLCAyNDIsIDE5MCwgMjQ2LCA3NCwgMjMsIDIyMSwgNTIsIDIzMywgODUsIDIwOSwgNTMsIDIzLCAyMjEsIDUyLCAyMjQsIAorICAgIDc1LCAyMDksIDUzLCAyMywgMjIxLCA1MiwgMjAxLCA3OCwgMjA5LCA0MSwgMjMsIDIyMSwgNTIsIDIwMSwgNzgsIDIwOSwgCisgICAgNTMsIDIzLCAyMjEsIDUyLCAyMDEsIDc4LCAyMjUsIDcwLCAyMywgMjEyLCAyMjUsIDIwOSwgMTM4LCAyMywgMjEyLCAyMjUsIAorICAgIDIzOSwgMTc1LCAyMywgMjEyLCAyMjUsIDI1MSwgMTA2LCAyMywgMjIxLCA1MiwgMjEwLCA5NiwgMjE2LCAxMjAsIDIzLCAKKyAgICAyMjEsIDUwLCAyNTAsIDIxNSwgMjQ2LCAxNTYsIDQsIDIwOSwgMTM4LCAyMywgMjIxLCA1MCwgMjUwLCAyMTUsIDI0NiwgCisgICAgMTU2LCAyMjIsIDY2LCAyMDksIDEzOCwgMjMsIDIyMSwgNTAsIDI1MCwgMjE1LCAyNDYsIDE1NiwgNCwgMjM5LCAxNzUsIDIzLCAKKyAgICAyMjEsIDUwLCAyNTAsIDIxNSwgMjQ2LCAxNTYsIDIyMiwgNjYsIDIzOSwgMTc1LCAyMywgMjIxLCA1MiwgMjUwLCAyMTUsIAorICAgIDI0NiwgMTU2LCAyMzQsIDQ0LCAyMDEsIDEwMywgNCwgMjA5LCAxMzgsIDIzLCAyMjEsIDUyLCAyNTAsIDIxNSwgMjQ2LCAKKyAgICAxNTYsIDIzNCwgNDQsIDIwMSwgMTAzLCAyMjIsIDY2LCAyMDksIDEzOCwgMjMsIDIyMSwgNTIsIDI1MCwgMjE1LCAyNDYsIAorICAgIDE1NiwgMjM0LCA0NCwgMjAxLCAxMDMsIDIyNSwgNzEsIDIwOSwgMTM4LCAyMywgMjIxLCA1MiwgMjUwLCAyMTUsIDI0NiwgCisgICAgMTU2LCAyMzQsIDQ0LCAyMDEsIDEwMywgNCwgMjM5LCAxNzUsIDIzLCAyMjEsIDUyLCAyNTAsIDIxNSwgMjQ2LCAxNTYsIAorICAgIDIzNCwgNDQsIDIwMSwgMTAzLCAyMjIsIDY2LCAyMzksIDE3NSwgMjMsIDIyMSwgNTIsIDI1MCwgMjE1LCAyNDYsIDE1NiwgCisgICAgMjM0LCA0NCwgMjAxLCAxMDMsIDIyNSwgNzEsIDIzOSwgMTc1LCAyMywgMjIxLCA1MCwgMjAwLCAyMjAsIDI0NiwgMTU2LCAKKyAgICAyMzYsIDIwMCwgMjA5LCAxMzgsIDIzLCAyMjEsIDUwLCAyMDAsIDIyMCwgMjQ2LCAxNTYsIDIzNiwgMjAwLCAyMzksIDE3NSwgCisgICAgMjMsIDIyMSwgNTIsIDIwMCwgMjIwLCAyNDYsIDE1NiwgMjM0LCA0NCwgMjAxLCAxMDMsIDIwOSwgMTM4LCAyMywgMjIxLCAKKyAgICA1MiwgMjAwLCAyMjAsIDI0NiwgMTU2LCAyMzQsIDQ0LCAyMDEsIDEwMywgMjM5LCAxNzUsIDIzLCAyMjEsIDUwLCAyMzcsIAorICAgIDg3LCAyNDYsIDE1MywgMjA5LCAxMzgsIDIzLCAyMjEsIDUwLCAyMzcsIDg3LCAyNDYsIDE1MywgMjM5LCAxNzUsIDIzLCAKKyAgICAyMjEsIDUyLCAyMzcsIDg3LCAyNDYsIDE1MywgMjM0LCA0NCwgMjAxLCAxMDMsIDIwOSwgMTM4LCAyMywgMjIxLCA1MiwgCisgICAgMjM3LCA4NywgMjQ2LCAxNTMsIDIzNCwgNDQsIDIwMSwgMTAzLCAyMzksIDE3NSwgMjMsIDIzOSwgOTgsIDI1MCwgMjAzLCAKKyAgICAyMDksIDUzLCAyMywgMjM5LCA5OCwgMjUwLCAyMDMsIDIyNSwgNzAsIDIzLCAyMzksIDk4LCAyMzcsIDE2MSwgMjMsIDIzOSwgCisgICAgOTgsIDIwOSwgNTYsIDIzLCAyMzksIDk4LCAyMDYsIDE1OSwgMjMsIDIzOSwgOTgsIDIxMywgMTQ3LCAyMywgMjM5LCA5OCwgCisgICAgMjA5LCAxNDQsIDIzLCAyMzksIDk4LCAyMDksIDE0NSwgMjUxLCAxMDYsIDIzLCAyMzksIDk4LCAyMzgsIDUyLCAyMTcsIDgsIAorICAgIDIwNSwgMjM0LCAyMywgMjM5LCA5OCwgMjM1LCA4OCwgMjMsIDIzNCwgMTM2LCAyMywgMjM0LCAxMzcsIDIxMywgMzEsIDIzLCAKKyAgICAyMzQsIDEzNywgMjIxLCA1MCwgMjA4LCA2NywgMjMsIDIzNCwgMTM3LCAyMjEsIDUwLCAyMDUsIDIzNywgMjMsIDIzNCwgCisgICAgMTM3LCAyMjEsIDUyLCAyMDgsIDY3LCAyMywgMjM0LCAxMzcsIDIyMSwgNTAsIDI0MiwgMTg5LCAyMywgMjM0LCAxMzcsIAorICAgIDIyMSwgNTIsIDI0MiwgMTg5LCAyMywgMjM0LCAxMzcsIDIyMSwgNTUsIDI0NiwgMTU1LCAyMywgMjM3LCAxOTAsIDI0MSwgOSwgCisgICAgMjE1LCA3MCwgMjE4LCAyMTcsIDIzNiwgMjM0LCAyMDUsIDIzNSwgMjMsIDIzNywgMTkwLCAyNDEsIDksIDIxNSwgNzAsIAorICAgIDIxOCwgMjE3LCAxMTUsIDIxNywgMzQsIDIzOSwgMTY3LCAyMywgMjM3LCAxOTAsIDI0MSwgOSwgMjE1LCA3MCwgMjE4LCAKKyAgICAyMTcsIDExNSwgMjE3LCAzNCwgMTI3LCAyMDUsIDIzNSwgMjMsIDIzOCwgMjEsIDIwOCwgNjgsIDIwMywgMjI4LCAyMywgCisgICAgMjM4LCAyMSwgMjA4LCA2OCwgMjIwLCA5LCAyMywgMjM4LCAyMSwgMjA4LCA2OCwgMjM5LCAxNjcsIDIzLCAyMzksIDE1NCwgCisgICAgMjM4LCAyMSwgMjIwLCAxMCwgMjM5LCAxNjcsIDIzLCAyMzksIDE1NCwgMjM4LCAyMSwgMTI3LCAyMjAsIDksIDIzLCAyMzksIAorICAgIDE1NCwgMjM4LCAyMSwgMTE1LCAyMjAsIDksIDIzLCAyMzksIDE1NCwgMjM4LCAyMSwgMjIwLCAxMCwgMjAzLCAyMjgsIDIzLCAKKyAgICAyMzYsIDI0NywgMjIwLCA5LCAyMywgMjM2LCAyNDcsIDI0MywgNDcsIDIzLCAyMzYsIDI0NywgMjAwLCAyMjMsIDIzLCAyMzgsIAorICAgIDE2LCAyMTcsIDUzLCAyMywgMjM4LCAxNiwgMjA4LCAxODgsIDIzLCAyMzgsIDE2LCAyNDYsIDEwOSwgMjMsIDIzOCwgMjMsIAorICAgIDI0OCwgMTM1LCAyMDksIDEzOCwgMjMsIDIzOCwgMjMsIDI0OCwgMTM1LCAyMjEsIDIwLCAyMywgMjM4LCAxNiwgMTY3LCAKKyAgICAyMTcsIDUzLCAyMywgMjM4LCAxNiwgMjAxLCAyOCwgMjE3LCA1MywgMjMsIDIzOCwgMTYsIDE2NywgMjQ2LCAxMDksIDIzLCAKKyAgICAyMzgsIDE2LCAyMDEsIDI2LCAyMjEsIDU0LCAyMywgMjM4LCAyMywgMjAxLCA5LCAyMywgMjM4LCAxNywgMjAzLCAyMjgsIAorICAgIDIzLCAyMzgsIDE3LCAyMzksIDE2NywgMjMsIDIzOCwgMTcsIDIzNywgMTgsIDIzLCAyMzgsIDE5LCAyMDgsIDY3LCAyMywgCisgICAgMjM4LCAxOSwgMjA4LCA2OCwgMjM5LCAxNzUsIDIzLCAyMzgsIDE5LCAyMDgsIDY4LCAyNTEsIDEwNiwgMjMsIDIzOCwgMjAsIAorICAgIDIwOCwgNjcsIDIzLCAyMzgsIDIwLCAyMDgsIDY4LCAyMzksIDE3NSwgMjMsIDIzOCwgMjAsIDIwOCwgNjgsIDI1MSwgMTA2LCAKKyAgICAyMywgMjM4LCAxOSwgMjQyLCAxODcsIDIzLCAyMzgsIDIwLCAyNDIsIDE4NywgMjMsIDIzOCwgMTksIDI0NiwgMTUwLCAyMywgCisgICAgMjQ3LCAyLCAyMTQsIDIxNSwgMjMsIDI0NywgMiwgMjIwLCA5LCAyMywgMjQ3LCAyLCAyMDcsIDI0OCwgMjMsIDIwNiwgMTYwLCAKKyAgICAyNDcsIDIsIDIzNCwgNTksIDIzLCAyMDYsIDE2MCwgMjQ3LCAyLCAyMjEsIDIwNCwgMjMsIDIwNiwgMTYwLCAyNDcsIDIsIAorICAgIDIyNCwgNTksIDIzLCAyMzksIDE5LCAyMywgMjE4LCAyMTcsIDIyMCwgOSwgMjMsIDIxOCwgMjE3LCAyNDMsIDQ3LCAyMywgCisgICAgMjE4LCAyMTcsIDIwMCwgMjIxLCAyMywgMjE4LCAyMTcsIDIwMSwgMjMsIDIzLCAyNTEsIDE2NywgMjQ4LCAxMjgsIDIxNiwgCisgICAgMjU0LCAyMywgMjUxLCAxNjcsIDIwNywgMjQ3LCAyMjgsIDExNywgMjMsIDI1MSwgMTY3LCAyNDgsIDEzMCwgNCwgMjEyLCAKKyAgICAyMjMsIDIzLCAyNTEsIDE2NywgMjA3LCAyNDksIDQsIDIxMiwgMjIzLCAyMywgMjQ4LCA1OSwgMjI4LCA4OSwgMjMsIDI0OCwgCisgICAgNTksIDIzOCwgNDEsIDIzLCAyMjEsIDU5LCAyNDYsIDExMCwgMjIwLCA5LCAyMywgMjIxLCA1OSwgMjQ2LCAxMTAsIDIzNiwgCisgICAgMjMzLCAyMywgMjIxLCA1OSwgMjQ2LCAxMTAsIDI0MywgNDcsIDIzLCAyMjEsIDU5LCAyMDksIDQ4LCAyMywgMjIxLCA1OSwgCisgICAgMjA5LCA0OSwgMjAwLCAyMjMsIDIzLCAyMjEsIDU5LCAyMDksIDQ5LCAyMTcsIDUzLCAyMywgMjIxLCA1OSwgMjM2LCAxOTYsIAorICAgIDIzLCAyMjEsIDU5LCAyMzYsIDE5NywgMjAwLCAyMjMsIDIzLCAyMjEsIDU5LCAyMzYsIDE5NywgMjE3LCA1MywgMjMsIDIyMSwgCisgICAgNTksIDE3NiwgMjQ2LCAxNTUsIDIzLCAyMjEsIDU5LCAxNzYsIDIzNiwgMjMzLCAyMywgMjIxLCA1OSwgMTc2LCAyMDAsIAorICAgIDIyMywgMjMsIDIyMSwgNTksIDE3NiwgMjE2LCAyNDcsIDIzLCAyMjEsIDU5LCAxNzYsIDIxNiwgMjQ4LCAyMDAsIDIyMywgCisgICAgMjMsIDIyMSwgNTksIDE3NiwgMjE2LCAyNDgsIDIwMCwgNTgsIDIzLCAyMjEsIDU5LCAxNzYsIDIxMywgMTc1LCAyMywgMjIxLCAKKyAgICA1OSwgMTc2LCAyMTMsIDE3NiwgMjAwLCAyMjMsIDIzLCAyMjEsIDU5LCAxNzYsIDIxMywgMTc2LCAyMDAsIDU4LCAyMywgCisgICAgMjIxLCA1OSwgMjI2LCAxMjksIDIzLCAyMjEsIDU5LCAyMjYsIDEzMCwgMjM2LCAyMzMsIDIzLCAyMjEsIDU5LCAyMjYsIAorICAgIDEzMCwgMjAwLCAyMjMsIDIzLCAyMjEsIDU5LCAyMDYsIDE1OSwgMjMsIDIyMSwgNTksIDIwNiwgMTYwLCAyMzYsIDIzMywgCisgICAgMjMsIDIyMSwgNTksIDIwNiwgMTYwLCAyMDcsIDI0OCwgMjMsIDIyNCwgMTYxLCAyMTUsIDE3LCAyMDUsIDE4MiwgMjMsIAorICAgIDIyNCwgMTYzLCAyMjQsIDU0LCAxMTksIDIwMywgMjI0LCAyMywgMjI0LCAxNjMsIDIwMywgMjI1LCAxMTksIDIyNCwgNTMsIAorICAgIDIzLCAyMjEsIDU5LCAyNDMsIDE0LCAyMywgMjIxLCA1OSwgMjAwLCAyMjIsIDIwOSwgMTM4LCAyMywgMjIxLCA1OSwgMjAwLCAKKyAgICAyMjIsIDIzOSwgMTc1LCAyMywgMjA1LCAxNjQsIDIwOCwgODcsIDIxNiwgMjU1LCAyMzcsIDE2MywgMjMsIDIwNSwgMTY0LCAKKyAgICAyMjQsIDIwNiwgMjI0LCAxNjAsIDIzLCAyMDUsIDE2NCwgMjA1LCAyMjQsIDI0OCwgMjA2LCAyMjQsIDE2MCwgMjMsIDIwNSwgCisgICAgMTY0LCAyMDUsIDIyNCwgMjA1LCAxNDAsIDIyOCwgNzQsIDIyMSwgNTgsIDIzLCAyMDUsIDE2NCwgMjI4LCA3NCwgMjIxLCAKKyAgICA1OSwgMjEzLCAxNDcsIDIzLCAyMDUsIDE2NCwgMjIxLCA0OSwgMjUxLCAxOTEsIDI0NywgMywgMjMsIDIwNSwgMTY0LCAyNDcsIAorICAgIDU2LCAyMDgsIDg3LCAyMTYsIDI1NCwgMjMsIDIwNSwgMTY0LCAyNDcsIDU2LCAyMjgsIDc0LCAyMjEsIDU4LCAyMywgMjA2LCAKKyAgICAxODYsIDIzLCAyMDYsIDE4NywgMjIxLCA1NCwgMjMsIDIwNiwgMTg3LCAyMTcsIDc5LCAyMDUsIDE2MywgMjMsIDIwNiwgCisgICAgMTg3LCAyMTcsIDc5LCAyMDUsIDE2NCwgMjIxLCA1NCwgMjMsIDIwNiwgMTg3LCAyMTcsIDc5LCAyMjQsIDE2MCwgMjMsIAorICAgIDIwNiwgMTg3LCAyMTcsIDc5LCAyMjQsIDE2MSwgMjIxLCA1NCwgMjMsIDIwNiwgMTg3LCAyNDgsIDE1MSwgMjI0LCAxNjAsIAorICAgIDIzLCAyMjEsIDUwLCAyMjcsIDIzMSwgMjMsIDIyMSwgNTIsIDIyNywgMjMxLCAyMywgMjIwLCAzMSwgMjMsIDIzNCwgMjIxLCAKKyAgICAyMywgMjM4LCA0NCwgMjMsIDIwOSwgMjMzLCAyMzQsIDQ5LCAyMDgsIDIxOSwgMjMsIDIwOSwgMjMzLCAyMzQsIDQ5LCAyMTUsIAorICAgIDY5LCAyMywgMjAxLCAxMDEsIDIwOSwgMjMzLCAyMzQsIDQ5LCAyMjEsIDU3LCAyMywgMjM3LCAzMCwgMjA5LCAyMzMsIDIzNCwgCisgICAgNDksIDIyMSwgNTcsIDIzLCAyMDksIDIzMywgMjA1LCAyMzYsIDIzNiwgMjAxLCAyMDEsIDEwNywgMjMsIDIwNSwgMTQ3LCAKKyAgICAyMDgsIDY4LCAyMDgsIDU2LCAyMywgMjA1LCAxNDcsIDI0MiwgMTg4LCAyNDgsIDIyMiwgMjMsIDIwNSwgMTQ4LCAyMDQsIAorICAgIDE0NCwgMjMsIDIwMywgMjI1LCAyNDgsIDExOSwgMjA1LCAyMzYsIDIzNiwgMjAxLCAyMzQsIDQ5LCAyMjcsIDE2MCwgMjMsIAorICAgIDIyNCwgMTg4LCAyNDYsIDc1LCAyMywgMjI0LCAxODgsIDIyNSwgMSwgMjMsIDIyNCwgMTg4LCAyMjUsIDAsIDIzLCAyMjQsIAorICAgIDE4OCwgMjI0LCAyNTUsIDIzLCAyMjQsIDE4OCwgMjI0LCAyNTQsIDIzLCAyMjQsIDE4OCwgMjI0LCAyNTMsIDIzLCAyMjQsIAorICAgIDE4OCwgMjI0LCAyNTIsIDIzLCAyMjQsIDE4OCwgMjI0LCAyNTEsIDIzLCAyMzcsIDg2LCAyMywgMjI0LCAxMDYsIDIwOCwgCisgICAgMjQ0LCAyMywgMjI0LCAxMDcsIDIwOCwgMjQ0LCAyMywgMjI0LCAxMDgsIDIzNCwgMTEzLCAyMywgMjI0LCAxMDgsIDIwMSwgCisgICAgMjQsIDIzLCAyMjQsIDEwOCwgMjQxLCAxMjMsIDIzLCAyMjQsIDEwOCwgMjM0LCAxMzcsIDIyMCwgMzEsIDIzLCAyMjQsIAorICAgIDEwOCwgMjA1LCAxNDksIDIzLCAyMjQsIDEwOCwgMjI0LCAxODcsIDI0MSwgNDEsIDIzLCAyNDYsIDcwLCAyMywgMjM2LCAKKyAgICAxODMsIDIwOCwgNzYsIDIzLCAyMTAsIDE2NywgMjMsIDI0NiwgNzksIDIzLCAyMTYsIDExNSwgMjMsIDIzNywgOTYsIDIyMSwgCisgICAgMTE4LCAyMywgMjM3LCA5NiwgMjIxLCAxMTcsIDIzLCAyMzcsIDk2LCAyMjEsIDExNiwgMjMsIDIzNywgOTYsIDIyMSwgMTE1LCAKKyAgICAyMywgMjM3LCA5NiwgMjIxLCAxMTQsIDIzLCAyMTIsIDIyNywgMjIxLCAxMTgsIDIzLCAyMTIsIDIyNywgMjIxLCAxMTcsIAorICAgIDIzLCAyMTIsIDIyNywgMjIxLCAxMTYsIDIzLCAyMTIsIDIyNywgMjIxLCAxMTUsIDIzLCAyMTIsIDIyNywgMjIxLCAxMTQsIAorICAgIDIzLCAyMTIsIDIyNywgMjIxLCAxMTMsIDIzLCAyMTIsIDIyNywgMjIxLCAxMTIsIDIzLCAyMTIsIDIyNywgMjIxLCAxMTEsIAorICAgIDIzLCAyMTIsIDIyNywgMjIxLCAxMjUsIDIzLCAyMTIsIDIyNywgMjIxLCAxMjQsIDIzLCAyMTIsIDIyNywgMjIxLCAxMjMsIAorICAgIDIzLCAyMTIsIDIyNywgMjIxLCAxMjIsIDIzLCAyMTIsIDIyNywgMjIxLCAxMjEsIDIzLCAyMTIsIDIyNywgMjIxLCAxMjAsIAorICAgIDIzLCAyMTIsIDIyNywgMjIxLCAxMTksIDM4LCAxMTYsIDEsIDI1MCwgMTA0LCAzOCwgMTE2LCAxLCAyNDgsIDI0LCAzOCwgCisgICAgMTE2LCAxLCAyMDMsIDU3LCAzOCwgMTE2LCAxLCAyMzUsIDEzMCwgMzgsIDExNiwgMSwgMjQwLCAyMDYsIDM4LCAxMTYsIDEsIAorICAgIDIwMCwgMjMsIDM4LCAxMTYsIDEsIDE5OSwgNjEsIDM4LCAxMTYsIDEsIDE5OSwgODYsIDM4LCAxMTYsIDEsIDIyNywgMjU1LCAKKyAgICAzOCwgMTE2LCAxLCA4MiwgMjI3LCAyNTUsIDM4LCAxMTYsIDEsIDcwLCAzOCwgMTE2LCAxLCAyNDAsIDIyNiwgMzgsIDExNiwgCisgICAgMSwgMjI3LCA3NCwgMzgsIDExNiwgMSwgMjI0LCAxNDAsIDM4LCAxMTYsIDEsIDIyMCwgMjE4LCAzOCwgMTE2LCAxLCAyMjAsIAorICAgIDEyMCwgMzgsIDExNiwgMSwgMjE3LCA2NSwgMzgsIDExNiwgMSwgMjE1LCA5MywgMzgsIDExNiwgMSwgMjEzLCAxOCwgMzgsIAorICAgIDExNiwgMSwgMjA5LCA1OCwgMzgsIDExNiwgMSwgMjA0LCAxNzEsIDM4LCAxMTYsIDEsIDIwNCwgMTYsIDM4LCAxMTYsIDEsIAorICAgIDIzNiwgMjA0LCAzOCwgMTE2LCAxLCAyMzQsIDk1LCAzOCwgMTE2LCAxLCAyMDksIDIyMywgMzgsIDExNiwgMSwgMjA1LCAxMSwgCisgICAgMzgsIDExNiwgMSwgMjQ2LCAxOTgsIDM4LCAxMTYsIDEsIDIxMCwgMTE0LCAzOCwgMTE2LCAxLCAyMDAsIDI5LCAzOCwgMTE2LCAKKyAgICAxLCAyMDAsIDMxLCAzOCwgMTE2LCAxLCAyMDAsIDYzLCAzOCwgMTE2LCAxLCAxOTksIDIxMSwgMzgsIDExNiwgMSwgNCwgCisgICAgMTk5LCAxODEsIDM4LCAxMTYsIDEsIDE5OSwgMjQ1LCAzOCwgMTE2LCAxLCAyMjgsIDQwLCA0LCAxOTksIDE4MSwgMzgsIAorICAgIDExNiwgMSwgMjQ4LCAxNzUsIDE5OSwgMTgxLCAzOCwgMTE2LCAxLCAyMjgsIDQwLCAyNDgsIDE3NSwgMTk5LCAxODEsIDM4LCAKKyAgICAxMTYsIDEsIDIzNywgNjMsIDc4LCA3NywgNSwgMjIzLCAyNDIsIDIyNiwgMTYzLCA3OCwgNzcsIDUsIDIyMywgMjM4LCAxNjEsIAorICAgIDc4LCA3NywgNSwgMjIzLCAyMzYsIDIyNiwgMTUsIDc4LCA3NywgNSwgMjIzLCAxMTIsIDIyNywgNSwgNzgsIDc3LCA1LCAKKyAgICAyMjMsIDgyLCAyMjcsIDgsIDc4LCA3NywgNSwgMjIzLCAxMDEsIDIyNiwgNjgsIDc4LCA3NywgNSwgMjIzLCAxMjksIDIyNiwgCisgICAgODgsIDc4LCA3NywgNSwgMjIyLCAyNTQsIDIyNiwgOSwgNzgsIDc3LCA1LCAyMjMsIDIzMywgMjAxLCAzMSwgNzgsIDc3LCA1LCAKKyAgICAyMjMsIDIzMSwgMjAxLCAxMTQsIDc4LCA3NywgNSwgMjIzLCAyMjksIDIwMCwgMjE2LCA3OCwgNzcsIDUsIDIyMywgNTEsIAorICAgIDIwMSwgNTcsIDc4LCA3NywgNSwgMjIzLCA1OSwgMjAxLCA2NCwgNzgsIDc3LCA1LCAyMjMsIDYzLCAyMDAsIDI0NCwgNzgsIAorICAgIDc3LCA1LCAyMjMsIDEzMiwgMjAxLCAwLCA3OCwgNzcsIDUsIDIyMiwgMjM5LCAyMDAsIDIxMiwgNzgsIDc3LCA1LCAyMjMsIAorICAgIDM0LCAyMDEsIDU1LCA3OCwgNzcsIDUsIDIyMywgMTE2LCAyMDAsIDIwMCwgNzgsIDc3LCA1LCAyMjMsIDEyOCwgMjAwLCAKKyAgICAyMDIsIDc4LCA3NywgNSwgMjIzLCAzOCwgMjAwLCAyMDEsIDc4LCA3NywgNSwgMjIzLCAyMjcsIDIyMSwgMTY0LCA3OCwgNzcsIAorICAgIDUsIDIyMywgMjI1LCAyMjIsIDE4MCwgNzgsIDc3LCA1LCAyMjMsIDIyMywgMjIxLCAxNCwgNzgsIDc3LCA1LCAyMjMsIDExOCwgCisgICAgMjIyLCA0MCwgNzgsIDc3LCA1LCAyMjMsIDgzLCAyMjEsIDEwNiwgNzgsIDc3LCA1LCAyMjMsIDIzLCAyMjEsIDM4LCA3OCwgCisgICAgNzcsIDUsIDIyMiwgMjQ0LCAyMjEsIDMyLCA3OCwgNzcsIDUsIDIyMywgMjIxLCAyNDgsIDE4OCwgNzgsIDc3LCA1LCAyMjMsIAorICAgIDIxOCwgMjQ5LCAxMzYsIDc4LCA3NywgNSwgMjIzLCAyMTYsIDI0OCwgMzYsIDc4LCA3NywgNSwgMjIzLCAyNywgMjQ4LCAKKyAgICAyNTIsIDc4LCA3NywgNSwgMjIzLCA4MCwgMjQ5LCA4LCA3OCwgNzcsIDUsIDIyMywgNzQsIDI0OCwgMTExLCA3OCwgNzcsIDUsIAorICAgIDIyMywgMzksIDI0OCwgMTI0LCA3OCwgNzcsIDUsIDIyMywgMjA2LCA3MCwgNzgsIDc3LCA1LCAyMjMsIDIwNCwgNjIsIDc4LCAKKyAgICA3NywgNSwgMjIzLCAyMDIsIDY2LCA3OCwgNzcsIDUsIDIyMywgMTQsIDIzOCwgMjU1LCA3OCwgNzcsIDUsIDIyMywgNzcsIAorICAgIDcyLCA3OCwgNzcsIDUsIDIyMywgMTIsIDIxNywgNjMsIDc4LCA3NywgNSwgMjIzLCAzMCwgNzQsIDc4LCA3NywgNSwgMjIzLCAKKyAgICA0MCwgMjM4LCAyMzQsIDc4LCA3NywgNSwgMjIzLCA0NiwgMjI4LCAxMTcsIDc4LCA3NywgNSwgMjIzLCA0MiwgMjI4LCAxMTcsIAorICAgIDc4LCA3NywgNSwgMjIyLCAyMzgsIDI1MSwgODUsIDc4LCA3NywgNSwgMjIyLCAyNTUsIDIzOCwgMTc5LCA3OCwgNzcsIDUsIAorICAgIDIyMywgMTkxLCAyMDksIDE4MiwgNzgsIDc3LCA1LCAyMjMsIDE4OSwgMjEyLCA2NCwgNzgsIDc3LCA1LCAyMjMsIDE4NywgCisgICAgMjA4LCAyNCwgNzgsIDc3LCA1LCAyMjMsIDE1LCAyMTEsIDE5MCwgNzgsIDc3LCA1LCAyMjMsIDYxLCAyMTEsIDIwMiwgNzgsIAorICAgIDc3LCA1LCAyMjMsIDQxLCAyMDksIDEwLCA3OCwgNzcsIDUsIDIyMywgOTgsIDIwOSwgMjksIDc4LCA3NywgNSwgMjIyLCAKKyAgICAyMzcsIDIwOSwgMTgxLCA3OCwgNzcsIDUsIDIyMywgMTc3LCAyMjQsIDIxMCwgNzgsIDc3LCA1LCAyMjMsIDE3NSwgMTk0LCAKKyAgICA3OCwgNzcsIDUsIDIyMywgMTczLCAyMjQsIDQyLCA3OCwgNzcsIDUsIDIyMywgOTMsIDIyNSwgMzIsIDc4LCA3NywgNSwgCisgICAgMjIzLCAxMDQsIDIyNSwgNDAsIDc4LCA3NywgNSwgMjIzLCAxMjMsIDIyNCwgNzgsIDc4LCA3NywgNSwgMjIzLCAyNCwgMjI0LCAKKyAgICAxMTAsIDc4LCA3NywgNSwgMjIzLCA2NywgMTY4LCAyMjUsIDQwLCA3OCwgNzcsIDUsIDIyMywgMTk5LCAyNDEsIDc2LCA3OCwgCisgICAgNzcsIDUsIDIyMywgMTk2LCAyNDIsIDU4LCA3OCwgNzcsIDUsIDIyMywgMTkzLCAyMzksIDEzNywgNzgsIDc3LCA1LCAyMjMsIAorICAgIDg4LCAyNDEsIDE2MSwgNzgsIDc3LCA1LCAyMjIsIDI1MywgMjQwLCAxODcsIDc4LCA3NywgNSwgMjIyLCAyNTIsIDI0MCwgCisgICAgMjExLCA3OCwgNzcsIDUsIDIyMywgMTg1LCAyMDYsIDE1LCA3OCwgNzcsIDUsIDIyMywgMTgyLCAyMDcsIDM2LCA3OCwgNzcsIAorICAgIDUsIDIyMywgMTgwLCAyMDQsIDIxNSwgNzgsIDc3LCA1LCAyMjMsIDg2LCAyMDYsIDE5MCwgNzgsIDc3LCA1LCAyMjMsIDEyMiwgCisgICAgMjA2LCAyMDEsIDc4LCA3NywgNSwgMjIzLCA3MywgMjA1LCAxNjEsIDc4LCA3NywgNSwgMjIzLCAxMDgsIDEzOCwgNzgsIDc3LCAKKyAgICA1LCAyMjMsIDE3MSwgMjI3LCAyMDcsIDc4LCA3NywgNSwgMjIzLCAxNjgsIDIyNywgMjQ4LCA3OCwgNzcsIDUsIDIyMywgCisgICAgMTY2LCAyMjcsIDE0NywgNzgsIDc3LCA1LCAyMjMsIDIwLCAyMjcsIDIyNSwgNzgsIDc3LCA1LCAyMjMsIDY0LCAyMjcsIAorICAgIDIyNywgNzgsIDc3LCA1LCAyMjMsIDE3LCAyMjcsIDE1NiwgNzgsIDc3LCA1LCAyMjMsIDExNCwgMjI3LCAxNjYsIDc4LCA3NywgCisgICAgNSwgMjIzLCAyLCAxNjgsIDIyNywgMTY2LCA3OCwgNzcsIDUsIDIyMywgMTY0LCAyMDAsIDksIDc4LCA3NywgNSwgMjIzLCAKKyAgICAxNjEsIDE4MywgNzgsIDc3LCA1LCAyMjMsIDE1OSwgMTk5LCAyMTEsIDc4LCA3NywgNSwgMjIzLCA2OCwgMjAwLCA0OCwgNzgsIAorICAgIDc3LCA1LCAyMjMsIDk3LCAyMDAsIDUxLCA3OCwgNzcsIDUsIDIyMywgMzYsIDE5OSwgMjMwLCA3OCwgNzcsIDUsIDIyMywgCisgICAgNTYsIDE5OSwgMjQ1LCA3OCwgNzcsIDUsIDIyMywgMTU1LCAyMzcsIDExMiwgNzgsIDc3LCA1LCAyMjMsIDE1MywgMjM3LCAKKyAgICAxOTUsIDc4LCA3NywgNSwgMjIzLCAxNTEsIDIzNiwgMTg5LCA3OCwgNzcsIDUsIDIyMywgOTksIDIzNywgMTQwLCA3OCwgNzcsIAorICAgIDUsIDIyMywgMTAyLCAyMzcsIDE0NywgNzgsIDc3LCA1LCAyMjMsIDQ0LCAyMzcsIDIsIDc4LCA3NywgNSwgMjIzLCA4OSwgCisgICAgMjM3LCAxMywgNzgsIDc3LCA1LCAyMjIsIDIzNiwgMjM2LCAxODgsIDc4LCA3NywgNSwgMjIzLCA3NiwgMjM3LCAxNjgsIDc4LCAKKyAgICA3NywgNSwgMjIzLCAxNDksIDIxOSwgMTE4LCA3OCwgNzcsIDUsIDIyMywgMTQ3LCAyMjAsIDEzNCwgNzgsIDc3LCA1LCAyMjMsIAorICAgIDE0NSwgMjE4LCA4OSwgNzgsIDc3LCA1LCAyMjMsIDYwLCAyMjAsIDI0LCA3OCwgNzcsIDUsIDIyMywgOCwgMjE4LCAyMzQsIAorICAgIDc4LCA3NywgNSwgMjIzLCAxLCAyMzQsIDc1LCA3OCwgNzcsIDUsIDIyMywgMTQwLCAxNDQsIDc4LCA3NywgNSwgMjIyLCAKKyAgICAyNDcsIDIzMywgOTcsIDc4LCA3NywgNSwgMjIzLCAxNDMsIDIzNCwgMTIwLCA3OCwgNzcsIDUsIDIyMywgODEsIDIzNCwgCisgICAgMTM5LCA3OCwgNzcsIDUsIDIyMywgMTM4LCAyMzMsIDE4OCwgNzgsIDc3LCA1LCAyMjMsIDM3LCAyMzMsIDIwNywgNzgsIDc3LCAKKyAgICA1LCAyMjMsIDk0LCAyMzQsIDExOSwgNzgsIDc3LCA1LCAyMjMsIDQ5LCAyMzMsIDE4MSwgNzgsIDc3LCA1LCAyMjMsIDEyNCwgCisgICAgMjM0LCA1MywgNzgsIDc3LCA1LCAyMjMsIDQ3LCAyMzQsIDIwMiwgNzgsIDc3LCA1LCAyMjMsIDkwLCAyMzMsIDg0LCA3OCwgCisgICAgNzcsIDUsIDIyMywgMTI1LCAyMzQsIDEwNSwgNzgsIDc3LCA1LCAyMjIsIDI0MCwgMjMzLCAxOTEsIDc4LCA3NywgNSwgMjIzLCAKKyAgICAxMzEsIDIzMywgOTYsIDc4LCA3NywgNSwgMjIzLCA4NywgMjE5LCAyMTgsIDc4LCA3NywgNSwgMjIzLCAxMzYsIDIxOSwgCisgICAgMjMyLCA3OCwgNzcsIDUsIDIyMywgOTUsIDIxOSwgMjE1LCA3OCwgNzcsIDUsIDIyMywgNjIsIDIxOSwgMjI2LCA3OCwgNzcsIAorICAgIDUsIDIyMywgMzEsIDIxOSwgMjI3LCA3OCwgNzcsIDUsIDIyMywgMjEsIDIxOSwgMjE2LCA3OCwgNzcsIDUsIDIyMywgNTcsIAorICAgIDIxOSwgMjE3LCA3OCwgNzcsIDUsIDIyMywgMTgsIDIxOSwgMjMxLCA3OCwgNzcsIDUsIDIyMywgNTAsIDIxOSwgMjE0LCA3OCwgCisgICAgNzcsIDUsIDIyMywgOTEsIDE2OCwgMjE5LCAyMjcsIDc4LCA3NywgNSwgMjIzLCA3MSwgMTY4LCAyMTksIDIxNiwgNzgsIDc3LCAKKyAgICA1LCAyMjIsIDI1MCwgMTY4LCAyMTksIDIxNywgNzgsIDc3LCA1LCAyMjMsIDIyLCAyMzUsIDE2MSwgNzgsIDc3LCA1LCAyMjMsIAorICAgIDY2LCAyMzYsIDg5LCA3OCwgNzcsIDUsIDIyMywgOSwgMjM1LCA1MCwgNzgsIDc3LCA1LCAyMjIsIDI0MywgMjM2LCA3LCA3OCwgCisgICAgNzcsIDUsIDIyMywgMTEsIDIzNSwgMzYsIDc4LCA3NywgNSwgMjIzLCAxMCwgMjM1LCA0NiwgNzgsIDc3LCA1LCAyMjIsIAorICAgIDI0OSwgMjE5LCAyMzcsIDc4LCA3NywgNSwgMjIzLCAxMjAsIDIxOSwgMTc0LCA3OCwgNzcsIDUsIDIyMywgMCwgMjE5LCAKKyAgICAxNjMsIDc4LCA3NywgNSwgMjIzLCAxMDksIDIxNSwgMjA0LCA3OCwgNzcsIDUsIDIyMywgNzgsIDE3MiwgNzgsIDc3LCA1LCAKKyAgICAyMjMsIDEyNywgMjE0LCAyMjQsIDc4LCA3NywgNSwgMjIzLCA5NiwgMjE2LCA2MSwgNzgsIDc3LCA1LCAyMjMsIDEyNiwgCisgICAgMjE2LCA3MywgNzgsIDc3LCA1LCAyMjMsIDc1LCAyMTUsIDgxLCA3OCwgNzcsIDUsIDIyMywgMTExLCAyMTUsIDEwNiwgNzgsIAorICAgIDc3LCA1LCAyMjMsIDMyLCAyMjIsIDk1LCA3OCwgNzcsIDUsIDIyMywgMTE1LCAyMjIsIDExMCwgNzgsIDc3LCA1LCAyMjMsIAorICAgIDU1LCAyMjIsIDg5LCA3OCwgNzcsIDUsIDIyMywgMTMwLCAyMjIsIDEwMiwgNzgsIDc3LCA1LCAyMjIsIDI0NSwgMjIyLCAKKyAgICAxMDIsIDc4LCA3NywgNSwgMjIzLCAxMDUsIDIyMiwgMTAzLCA3OCwgNzcsIDUsIDIyMywgNSwgMjIyLCA5MCwgNzgsIDc3LCAKKyAgICA1LCAyMjMsIDMsIDIyMiwgOTEsIDc4LCA3NywgNSwgMjIyLCAyNDYsIDIyMiwgODMsIDc4LCA3NywgNSwgMjIzLCAxNiwgCisgICAgMTY4LCAyMjIsIDEwMywgNzgsIDc3LCA1LCAyMjMsIDcyLCAxNjgsIDIyMiwgOTAsIDc4LCA3NywgNSwgMjIzLCAzNSwgMTY4LCAKKyAgICAyMjIsIDkxLCA3OCwgNzcsIDUsIDIyMywgNDUsIDIyNiwgNDIsIDc4LCA3NywgNSwgMjIzLCA4NSwgMjI2LCA1MCwgNzgsIAorICAgIDc3LCA1LCAyMjMsIDEwMywgMjI2LCAzOCwgNzgsIDc3LCA1LCAyMjMsIDEzNCwgMjI2LCA0NSwgNzgsIDc3LCA1LCAyMjMsIAorICAgIDY5LCAyMjYsIDQ2LCA3OCwgNzcsIDUsIDIyMywgNjUsIDIyNiwgNDAsIDc4LCA3NywgNSwgMjIzLCAxOSwgMjI2LCA0MSwgCisgICAgNzgsIDc3LCA1LCAyMjMsIDUzLCAyMzYsIDI0LCA3OCwgNzcsIDUsIDIyMywgMTIxLCAyMzYsIDMyLCA3OCwgNzcsIDUsIAorICAgIDIyMywgMjksIDIzNiwgMTksIDc4LCA3NywgNSwgMjIzLCA4NCwgMjM2LCAyOCwgNzgsIDc3LCA1LCAyMjMsIDcwLCAyMzYsIAorICAgIDI5LCA3OCwgNzcsIDUsIDIyMywgMTA2LCAyMzYsIDIwLCA3OCwgNzcsIDUsIDIyMywgMTA3LCAyMzYsIDIyLCA3OCwgNzcsIAorICAgIDUsIDIyMywgNiwgMjEzLCAyNTIsIDc4LCA3NywgNSwgMjIzLCA1NCwgMjIwLCA2MCwgNzgsIDc3LCA1LCAyMjMsIDQ4LCAKKyAgICAyMjAsIDc1LCA3OCwgNzcsIDUsIDIyMywgNTIsIDIyMCwgNDIsIDc4LCA3NywgNSwgMjIyLCAyNDIsIDIyMCwgNjYsIDc4LCAKKyAgICA3NywgNSwgMjIzLCA1OCwgMjIwLCA2NywgNzgsIDc3LCA1LCAyMjMsIDExMCwgMjIwLCA0NywgNzgsIDc3LCA1LCAyMjMsIAorICAgIDExMywgMjIwLCA1MSwgNzgsIDc3LCA1LCAyMjMsIDI1LCAyMTksIDk4LCA3OCwgNzcsIDUsIDIyMiwgMjQxLCAyMTksIDY4LCAKKyAgICA3OCwgNzcsIDUsIDIyMywgMjgsIDIxOSwgODksIDc4LCA3NywgNSwgMjIzLCA0MywgMjE5LCA3MiwgNzgsIDc3LCA1LCAyMjIsIAorICAgIDI1MSwgMjAyLCAyMzQsIDc4LCA3NywgNSwgMjIyLCAyNDgsIDIwMywgOTAsIDc4LCA3NywgNSwgMjIzLCAyNiwgMjAxLCAKKyAgICAxNjYsIDc4LCA3NywgNSwgMjIzLCA0LCAyMDMsIDU0LCA3OCwgNzcsIDUsIDIyMywgOTIsIDIwMywgNTksIDc4LCA3NywgNSwgCisgICAgMjIzLCAzMywgMjAyLCAxNzksIDc4LCA3NywgNSwgMjIzLCAxMDAsIDIwMiwgMTkzLCA3OCwgNzcsIDUsIDIyMywgMTMsIAorICAgIDIxOCwgMzUsIDc4LCA3NywgNSwgMjIzLCAxMTksIDIxOCwgNTQsIDc4LCA3NywgNSwgMjIzLCA3LCAyMTgsIDE3LCA3OCwgCisgICAgNzcsIDUsIDIyMywgNzksIDIxOCwgNDYsIDc4LCA3NywgNSwgMjIzLCAxMTcsIDIxOCwgMjQsIDc4LCA3NywgMTcsIDEwMiwgCisgICAgNzgsIDc3LCAxNywgMTA1LCA3OCwgNzcsIDE3LCAxNDcsIDc4LCA3NywgMTcsIDE0OSwgNzgsIDc3LCAxNywgMTY0LCA3OCwgCisgICAgNzcsIDE3LCAxODcsIDc4LCA3NywgMTcsIDIxMCwgMTM1LCA3OCwgNzcsIDE3LCAxOTIsIDc4LCA3NywgMTcsIDIxOSwgMTEzLCAKKyAgICA3OCwgNzcsIDM4LCA0MSwgMjA2LCAxODgsIDc4LCA3NywgMzgsIDQxLCAyMDYsIDE2MSwgNzgsIDc3LCAzOCwgNDEsIDIzMywgCisgICAgODAsIDc4LCA3NywgMzgsIDQxLCAyMDYsIDQ4LCA3OCwgNzcsIDM4LCA0MSwgMjA2LCAxNjcsIDIwNiwgNDgsIDc4LCA3NywgCisgICAgMzgsIDQxLCAyMzMsIDgzLCAyMDYsIDQ4LCA3OCwgNzcsIDM4LCA0MSwgMjIxLCAxNjcsIDI1MSwgMjI3LCA2LCAxLCAyNTEsIAorICAgIDEzMCwgMjUxLCAyMjcsIDYsIDEsIDI0MiwgNTUsIDI1MSwgMjI3LCA2LCAxLCAyMjUsIDE3MywgMjUxLCAyMjcsIDYsIDEsIAorICAgIDIyMSwgMTgwLCAyNTEsIDIyNywgNiwgMSwgMjQ5LCAxMzYsIDI1MSwgMjI3LCA2LCAxLCAyMDksIDEzMywgMjUxLCAyMjcsIAorICAgIDYsIDEsIDIxNiwgNzMsIDI1MSwgMjI3LCA2LCAxLCAyNDgsIDE5NiwgMjUxLCAyMjcsIDYsIDEsIDIxMywgMjUyLCAyNTEsIAorICAgIDIyNywgNiwgMSwgNzIsIDI1MSwgMjI3LCA2LCAxLCAyMzcsIDE5NSwgMjUxLCAyMjcsIDYsIDEsIDcwLCAyNTEsIDIyNywgNiwgCisgICAgMSwgNzQsIDI1MSwgMjI3LCA2LCAxLCAyNDEsIDEwMCwgMjUxLCAyMjcsIDYsIDEsIDIwMCwgMTAsIDI1MSwgMjI3LCA2LCAxLCAKKyAgICAyMDEsIDcyLCAyNTEsIDIyNywgNiwgMSwgMjE4LCA4OSwgMjUxLCAyMjcsIDYsIDEsIDIyNywgODYsIDI1MSwgMjI3LCA2LCAKKyAgICAxLCAxODMsIDI1MSwgMjI3LCA2LCAxLCA2NiwgMjUxLCAyMjcsIDYsIDEsIDIyNywgMTk5LCAyNTEsIDIyNywgNiwgMSwgCisgICAgMjQ2LCAyMzYsIDI1MSwgMjI3LCA2LCAxLCAxNDQsIDI1MSwgMjI3LCA2LCAxLCAyMTQsIDE1NywgMjUxLCAyMjcsIDYsIDEsIAorICAgIDIzNiwgODksIDI1MSwgMjI3LCA2LCAxLCAyMTgsIDYwLCAyNTEsIDIyNywgNiwgMSwgMjA0LCAyMTUsIDI1MSwgMjI3LCA2LCAKKyAgICAxLCAyMTksIDE1NCwgMjUxLCAyMjcsIDYsIDEsIDIwMywgOTAsIDI1MSwgMjI3LCA2LCAxLCAyMjYsIDIwNywgMjUxLCAyMjcsIAorICAgIDYsIDEsIDIzNiwgMjksIDI1MSwgMjI3LCA2LCAxLCAxOTksIDEwMywgMjUxLCAyMjcsIDYsIDEsIDIyNiwgNDEsIDI1MSwgCisgICAgMjI3LCA2LCAxLCAyMTAsIDExNCwgMjUxLCAyMjcsIDQsIDEsIDI1MSwgMTMwLCAyNTEsIDIyNywgNCwgMSwgMjQyLCA1NSwgCisgICAgMjUxLCAyMjcsIDQsIDEsIDIyNSwgMTczLCAyNTEsIDIyNywgNCwgMSwgMjIxLCAxODAsIDI1MSwgMjI3LCA0LCAxLCAyNDksIAorICAgIDEzNiwgMjUxLCAyMjcsIDQsIDEsIDIwOSwgMTMzLCAyNTEsIDIyNywgNCwgMSwgMjE2LCA3MywgMjUxLCAyMjcsIDQsIDEsIAorICAgIDI0OCwgMTk2LCAyNTEsIDIyNywgNCwgMSwgMjEzLCAyNTIsIDI1MSwgMjI3LCA0LCAxLCA3MiwgMjUxLCAyMjcsIDQsIDEsIAorICAgIDIzNywgMTk1LCAyNTEsIDIyNywgNCwgMSwgNzAsIDI1MSwgMjI3LCA0LCAxLCA3NCwgMjUxLCAyMjcsIDQsIDEsIDI0MSwgCisgICAgMTAwLCAyNTEsIDIyNywgNCwgMSwgMjAwLCAxMCwgMjUxLCAyMjcsIDQsIDEsIDIwMSwgNzIsIDI1MSwgMjI3LCA0LCAxLCAKKyAgICAyMTgsIDg5LCAyNTEsIDIyNywgNCwgMSwgMjI3LCA4NiwgMjUxLCAyMjcsIDQsIDEsIDE4MywgMjUxLCAyMjcsIDQsIDEsIAorICAgIDY2LCAyNTEsIDIyNywgNCwgMSwgMjI3LCAxOTksIDI1MSwgMjI3LCA0LCAxLCAyNDYsIDIzNiwgMjUxLCAyMjcsIDQsIDEsIAorICAgIDE0NCwgMjUxLCAyMjcsIDQsIDEsIDIxNCwgMTU3LCAyNTEsIDIyNywgNCwgMSwgMjM2LCA4OSwgMjUxLCAyMjcsIDQsIDEsIAorICAgIDIxOCwgNjAsIDI1MSwgMjI3LCA0LCAxLCAyMDQsIDIxNSwgMjUxLCAyMjcsIDQsIDEsIDIxOSwgMTU0LCAyNTEsIDIyNywgNCwgCisgICAgMSwgMjAzLCA5MCwgMjUxLCAyMjcsIDQsIDEsIDIyNiwgMjA3LCAyNTEsIDIyNywgNCwgMSwgMjM2LCAyOSwgMjUxLCAyMjcsIAorICAgIDQsIDEsIDE5OSwgMTAzLCAyNTEsIDIyNywgNCwgMSwgMjI2LCA0MSwgMjUxLCAyMjcsIDQsIDEsIDIxMCwgMTE0LCAyNTEsIAorICAgIDIyNywgMjUxLCAxMzEsIDIyNCwgMjUwLCAyNTEsIDIyNywgMjIsIDIyNCwgMjUwLCAyNTEsIDIyNywgMjM2LCAzLCA4MSwgCisgICAgMjUxLCAyMjcsIDIzNCwgMjAzLCAyNTEsIDIyNywgMTExLCAyMjEsIDEyNiwgMjUxLCAyMjcsIDIzNiwgNCwgMTExLCAyMjEsIAorICAgIDEyNiwgMjUxLCAyMjcsIDIxOCwgMTAwLCAyNTEsIDIyNywgMTcsIDE5OSwgODEsIDI1MSwgMjI3LCAxNywgMTAyLCAyNTEsIAorICAgIDIyNywgMTcsIDEwNSwgMjUxLCAyMjcsIDE3LCAxNDcsIDI1MSwgMjI3LCAxNywgMTQ5LCAyNTEsIDIyNywgMTcsIDE2NCwgCisgICAgMjUxLCAyMjcsIDE3LCAxODcsIDI1MSwgMjI3LCAxNywgMjEwLCAxMzUsIDI1MSwgMjI3LCAxNywgMTkyLCAyNTEsIDIyNywgCisgICAgMTcsIDIxOSwgMTEzLCAyNTEsIDIyNywgODIsIDIzOCwgNDMsIDgxLCAyNTEsIDIyNywgODIsIDIxNCwgNzksIDgxLCA5LCAKKyAgICAxMywgMjUxLCAxNDIsIDksIDEzLCAyNDgsIDI0MCwgOSwgMTMsIDIyNywgMjI0LCA5LCAxMywgMjQyLCAyOSwgOSwgMTMsIAorICAgIDIwMSwgNzIsIDksIDEzLCAxOTksIDEwNSwgOSwgMTMsIDIzNCwgMjI0LCA5LCAxMywgMjA3LCA5LCA5LCAxMywgMjAwLCA0NiwgCisgICAgOSwgMTMsIDIyNywgODYsIDksIDEzLCAyMjUsIDkxLCA5LCAxMywgMjIyLCA2MSwgOSwgMTMsIDIxOCwgMjI3LCA5LCAxMywgCisgICAgMjExLCAxODYsIDksIDEzLCAyNTEsIDE3MSwgOSwgMTMsIDIzNywgMTM0LCA5LCAxMywgMjEyLCA1NiwgOSwgMTMsIDIxNCwgCisgICAgMTUyLCA5LCAxMywgMjEzLCAxNTQsIDksIDEzLCAyMTAsIDYxLCA5LCAxMywgMjA2LCAxODMsIDksIDEzLCAyMDYsIDEwMiwgCisgICAgOSwgMTMsIDIyNiwgMjAzLCA5LCAxMywgMjA2LCAxMTQsIDksIDEzLCAyNDIsIDUyLCA5LCAxMywgMTk5LCAxMDgsIDksIDEzLCAKKyAgICAyMzUsIDE5NCwgOSwgMTMsIDI0MCwgMTgxLCAyNDgsIDI0MCwgOSwgMTMsIDI0MCwgMTgxLCAyMTgsIDIyNywgOSwgMTMsIAorICAgIDI0MCwgMTgxLCAyMzcsIDEzNCwgOSwgMTMsIDI0MCwgMTgxLCAyMTQsIDE1MiwgOSwgMTMsIDgyLCAyNDgsIDI0MCwgOSwgCisgICAgMTMsIDgyLCAyMjcsIDIyNCwgOSwgMTMsIDgyLCAyMzQsIDExNSwgOSwgMTMsIDgyLCAyMzQsIDIyNCwgOSwgMTMsIDgyLCAKKyAgICAyMDAsIDQ2LCA5LCAxMywgODIsIDIyNywgODYsIDksIDEzLCA4MiwgMjI1LCA5MSwgOSwgMTMsIDgyLCAyMjIsIDYxLCA5LCAKKyAgICAxMywgODIsIDIxOCwgMjI3LCA5LCAxMywgODIsIDIxMSwgMTg2LCA5LCAxMywgODIsIDI1MSwgMTcxLCA5LCAxMywgODIsIAorICAgIDIzNywgMTM0LCA5LCAxMywgODIsIDIxMiwgNTYsIDksIDEzLCA4MiwgMjE0LCAxNTIsIDksIDEzLCA4MiwgMjEwLCA2MSwgOSwgCisgICAgMTMsIDgyLCAyMDYsIDE4MywgOSwgMTMsIDgyLCAyMDYsIDEwMiwgOSwgMTMsIDgyLCAyMjYsIDIwMywgOSwgMTMsIDgyLCAKKyAgICAyNDIsIDUyLCA5LCAxMywgODIsIDIzNSwgMTk0LCA5LCAxMywgMjA3LCA1LCAyMjcsIDIyNCwgOSwgMTMsIDIwNywgNSwgCisgICAgMjM0LCAyMjQsIDksIDEzLCAyMDcsIDUsIDIwMCwgNDYsIDksIDEzLCAyMDcsIDUsIDIyNSwgOTEsIDksIDEzLCAyMDcsIDUsIAorICAgIDIxOCwgMjI3LCA5LCAxMywgMjA3LCA1LCAyMTEsIDE4NiwgOSwgMTMsIDIwNywgNSwgMjUxLCAxNzEsIDksIDEzLCAyMDcsIAorICAgIDUsIDIxMiwgNTYsIDksIDEzLCAyMDcsIDUsIDIxNCwgMTUyLCA5LCAxMywgMjA3LCA1LCAyMTAsIDYxLCA5LCAxMywgMjA3LCAKKyAgICA1LCAyMjYsIDIwMywgOSwgMTMsIDIwNywgNSwgMjQyLCA1MiwgOSwgMTMsIDIwNywgNSwgMjM1LCAxOTQsIDksIDEzLCAyMDcsIAorICAgIDUsIDI0MCwgMTgxLCAyMTgsIDIyNywgOSwgMTMsIDIwNywgNSwgMjQwLCAxODEsIDIxNCwgMTUyLCA5LCAxMywgMjA4LCA1NSwgCisgICAgMjQ4LCAyNDAsIDksIDEzLCAyMDgsIDU1LCAyMjcsIDIyNCwgOSwgMTMsIDIwOCwgNTUsIDIzNCwgMTE1LCA5LCAxMywgMjA4LCAKKyAgICA1NSwgMjM0LCAyMjQsIDksIDEzLCAyMDgsIDU1LCAyMDcsIDksIDksIDEzLCAyMDgsIDU1LCAyMDAsIDQ2LCA5LCAxMywgCisgICAgMjA4LCA1NSwgMjI3LCA4NiwgOSwgMTMsIDIwOCwgNTUsIDIyMiwgNjEsIDksIDEzLCAyMDgsIDU1LCAyMTgsIDIyNywgOSwgCisgICAgMTMsIDIwOCwgNTUsIDIxMSwgMTg2LCA5LCAxMywgMjA4LCA1NSwgMjUxLCAxNzEsIDksIDEzLCAyMDgsIDU1LCAyMzcsIAorICAgIDEzNCwgOSwgMTMsIDIwOCwgNTUsIDIxMiwgNTYsIDksIDEzLCAyMDgsIDU1LCAyMTQsIDE1MiwgOSwgMTMsIDIwOCwgNTUsIAorICAgIDIxMCwgNjEsIDksIDEzLCAyMDgsIDU1LCAyMDYsIDE4MywgOSwgMTMsIDIwOCwgNTUsIDIwNiwgMTAyLCA5LCAxMywgMjA4LCAKKyAgICA1NSwgMjI2LCAyMDMsIDksIDEzLCAyMDgsIDU1LCAyNDIsIDUyLCA5LCAxMywgMjA4LCA1NSwgMTk5LCAxMDgsIDksIDEzLCAKKyAgICAyMDgsIDU1LCAyMzUsIDE5NCwgOSwgMTMsIDIwOCwgNTUsIDI0MCwgMTgxLCAyNDgsIDI0MCwgOSwgMTMsIDIwOCwgNTUsIAorICAgIDI0MCwgMTgxLCAyMzcsIDEzNCwgOSwgMTMsIDIyNCwgNzMsIDI1MSwgMTQyLCA5LCAxMywgMjI0LCA3MywgMjQ4LCAyNDAsIAorICAgIDksIDEzLCAyMjQsIDczLCAyMjcsIDIyNCwgOSwgMTMsIDIyNCwgNzMsIDI0MiwgMjksIDksIDEzLCAyMjQsIDczLCAyMzQsIAorICAgIDExNSwgOSwgMTMsIDIyNCwgNzMsIDIwMSwgNzIsIDksIDEzLCAyMjQsIDczLCAxOTksIDEwNSwgOSwgMTMsIDIyNCwgNzMsIAorICAgIDIzNCwgMjI0LCA5LCAxMywgMjI0LCA3MywgMjA3LCA5LCA5LCAxMywgMjI0LCA3MywgMjAwLCA0NiwgOSwgMTMsIDIyNCwgCisgICAgNzMsIDIyNSwgOTEsIDksIDEzLCAyMjQsIDczLCAyMjIsIDYxLCA5LCAxMywgMjI0LCA3MywgMjE4LCAyMjcsIDksIDEzLCAKKyAgICAyMjQsIDczLCAyMTEsIDE4NiwgOSwgMTMsIDIyNCwgNzMsIDI1MSwgMTcxLCA5LCAxMywgMjI0LCA3MywgMjM3LCAxMzQsIDksIAorICAgIDEzLCAyMjQsIDczLCAyMTIsIDU2LCA5LCAxMywgMjI0LCA3MywgMjE0LCAxNTIsIDksIDEzLCAyMjQsIDczLCAyMTMsIDE1NCwgCisgICAgOSwgMTMsIDIyNCwgNzMsIDIxMCwgNjEsIDksIDEzLCAyMjQsIDczLCAyMDYsIDE4MywgOSwgMTMsIDIyNCwgNzMsIDIwNiwgCisgICAgMTAyLCA5LCAxMywgMjI0LCA3MywgMjI2LCAyMDMsIDksIDEzLCAyMjQsIDczLCAyMDYsIDExNCwgOSwgMTMsIDIyNCwgNzMsIAorICAgIDI0MiwgNTIsIDksIDEzLCAyMjQsIDczLCAxOTksIDEwOCwgOSwgMTMsIDIyNCwgNzMsIDIzNSwgMTk0LCA5LCAxMywgMTc1LCAKKyAgICAyNDgsIDI0MCwgOSwgMTMsIDE3NSwgMjI3LCAyMjQsIDksIDEzLCAxNzUsIDI0MiwgMjksIDksIDEzLCAxNzUsIDIwMSwgNzIsIAorICAgIDksIDEzLCAxNzUsIDE5OSwgMTA1LCA5LCAxMywgMTc1LCAyMzQsIDIyNCwgOSwgMTMsIDE3NSwgMjA3LCA5LCA5LCAxMywgCisgICAgMTc1LCAyMDAsIDQ2LCA5LCAxMywgMTc1LCAyMjUsIDkxLCA5LCAxMywgMTc1LCAyMjIsIDYxLCA5LCAxMywgMTc1LCAyMTgsIAorICAgIDIyNywgOSwgMTMsIDE3NSwgMjExLCAxODYsIDksIDEzLCAxNzUsIDI1MSwgMTcxLCA5LCAxMywgMTc1LCAyMzcsIDEzNCwgOSwgCisgICAgMTMsIDE3NSwgMjEyLCA1NiwgOSwgMTMsIDE3NSwgMjE0LCAxNTIsIDksIDEzLCAxNzUsIDIxMywgMTU0LCA5LCAxMywgMTc1LCAKKyAgICAyMTAsIDYxLCA5LCAxMywgMTc1LCAyMDYsIDE4MywgOSwgMTMsIDE3NSwgMjA2LCAxMDIsIDksIDEzLCAxNzUsIDIyNiwgCisgICAgMjAzLCA5LCAxMywgMTc1LCAyMDYsIDExNCwgOSwgMTMsIDE3NSwgMjQyLCA1MiwgOSwgMTMsIDE3NSwgMTk5LCAxMDgsIDksIAorICAgIDEzLCAxNzUsIDIzNSwgMTk0LCA5LCAxMywgMjE3LCA0NCwgODQsIDMsIDE1NSwgMywgMjA2LCAyMjMsIDksIDEzLCAyMTcsIAorICAgIDQ0LCAxNTUsIDMsIDI0MiwgMjksIDIyMiwgMjAwLCAxMDMsIDIzOSwgMTQsIDIwMSwgMTYsIDIyMiwgMjAwLCAxMDMsIDIwOCwgCisgICAgMjU0LCAyMDEsIDE2LCAyMjIsIDIwMCwgMTAzLCAyMDEsIDQ4LCAyMDEsIDE2LCAyMjIsIDIwMCwgMTAzLCAxNTcsIDIwMSwgCisgICAgMTYsIDIyMiwgMjAwLCAxMDMsIDIxMywgMTcwLCAyMzksIDE1OCwgMjIyLCAyMDAsIDEwMywgMjM1LCA2NCwgMjM5LCAxNTgsIAorICAgIDIyMiwgMjAwLCAxMDMsIDY0LCAyMzksIDE1OCwgMjIyLCAyMDAsIDEwMywgMTEyLCA3NiwgMjQ3LCAxOSwgMjIyLCAyMDAsIAorICAgIDEwMywgMTIwLCA3NiwgMjQ3LCAxOSwgMjIyLCAyMDAsIDEwMywgMTI2LCA3NiwgMjQ3LCAxOSwgMjIyLCAyMDAsIDEwMywgCisgICAgMjM2LCAyMjksIDc2LCAyNDcsIDE5LCAyMjIsIDIwMCwgMTAzLCAyMzcsIDYxLCA3NiwgMjQ3LCAxOSwgMjIyLCAyMDAsIAorICAgIDEwMywgMjA5LCAxMDYsIDc2LCAyNDcsIDE5LCAyMjIsIDIwMCwgMTAzLCAyMTAsIDEzNiwgNzYsIDI0NywgMTksIDIyMiwgCisgICAgMjAwLCAxMDMsIDIzOCwgMjMyLCA3NiwgMjQ3LCAxOSwgMjIyLCAyMDAsIDEwMywgMjE5LCAxMTQsIDc2LCAyNDcsIDE5LCAKKyAgICAyMjIsIDIwMCwgMTAzLCAxMTIsIDc2LCAyNDksIDg5LCAyMjIsIDIwMCwgMTAzLCAxMjAsIDc2LCAyNDksIDg5LCAyMjIsIAorICAgIDIwMCwgMTAzLCAxMjYsIDc2LCAyNDksIDg5LCAyMjIsIDIwMCwgMTAzLCAyMzYsIDIyOSwgNzYsIDI0OSwgODksIDIyMiwgCisgICAgMjAwLCAxMDMsIDIzNywgNjEsIDc2LCAyNDksIDg5LCAyMjIsIDIwMCwgMTAzLCAyMDksIDEwNiwgNzYsIDI0OSwgODksIAorICAgIDIyMiwgMjAwLCAxMDMsIDIxMCwgMTM2LCA3NiwgMjQ5LCA4OSwgMjIyLCAyMDAsIDEwMywgMjM4LCAyMzIsIDc2LCAyNDksIAorICAgIDg5LCAyMjIsIDIwMCwgMTAzLCAyMTksIDExNCwgNzYsIDI0OSwgODksIDIyMiwgMjAwLCAxMDMsIDExMiwgNzYsIDI0NiwgCisgICAgMTUyLCAyMjIsIDIwMCwgMTAzLCAxMjAsIDc2LCAyNDYsIDE1MiwgMjIyLCAyMDAsIDEwMywgMTI2LCA3NiwgMjQ2LCAxNTIsIAorICAgIDIyMiwgMjAwLCAxMDMsIDIzNiwgMjI5LCA3NiwgMjQ2LCAxNTIsIDIyMiwgMjAwLCAxMDMsIDIzNywgNjEsIDc2LCAyNDYsIAorICAgIDE1MiwgMjIyLCAyMDAsIDEwMywgMjA5LCAxMDYsIDc2LCAyNDYsIDE1MiwgMjIyLCAyMDAsIDEwMywgMjEwLCAxMzYsIDc2LCAKKyAgICAyNDYsIDE1MiwgMjIyLCAyMDAsIDEwMywgMjM4LCAyMzIsIDc2LCAyNDYsIDE1MiwgMjIyLCAyMDAsIDEwMywgMjE5LCAxMTQsIAorICAgIDc2LCAyNDYsIDE1MiwgMjIyLCAyMDAsIDEwMywgMjE1LCAxMTYsIDIyMiwgMjAwLCAxMDMsIDIxNywgMzEsIDIyMiwgMjAwLCAKKyAgICAxMDMsIDI0OSwgOTAsIDIyMiwgMjAwLCAxMDMsIDI0NiwgMTkzLCAyMjIsIDIwMCwgMTAzLCAyMDgsIDE5OSwgMjIyLCAyMDAsIAorICAgIDEwMywgMjA3LCAyMzAsIDIyMiwgMjAwLCAxMDMsIDI1MCwgMTI2LCAyMjIsIDIwMCwgMTAzLCAyMDEsIDcsIDIyMiwgMjAwLCAKKyAgICAxMDMsIDIyNywgMTU5LCAyMjIsIDIwMCwgMTAzLCAyNDksIDEyOSwgMTY2LCAxMDMsIDIzMywgMTc3LCAyNDksIDEyOSwgCisgICAgMTY2LCAxMDMsIDIzMywgMTc1LCAxNjYsIDEwMywgMjMzLCAxNzQsIDE2NiwgMTAzLCAyMzMsIDE3MywgMTY2LCAxMDMsIAorICAgIDIzMywgMTcyLCAxNjYsIDEwMywgMjMzLCAxNzEsIDE2NiwgMTAzLCAyMzMsIDE3MCwgMTY2LCAxMDMsIDIzMywgMTY5LCAKKyAgICAxNjYsIDEwMywgMjMzLCAxNjgsIDE2NiwgMTAzLCAyMzMsIDE2NywgMTY2LCAxMDMsIDIzMywgMTY2LCAxNjYsIDEwMywgCisgICAgMjMzLCAxNjUsIDE2NiwgMTAzLCAyMzMsIDE2NCwgMTY2LCAxMDMsIDIzMywgMTYzLCAxNjYsIDEwMywgMjMzLCAxNjIsIAorICAgIDE2NiwgMTAzLCAyMzMsIDE2MSwgMTY2LCAxMDMsIDIzMywgMTYwLCAxNjYsIDEwMywgMjMzLCAxNTksIDE2NiwgMTAzLCAKKyAgICAyMzMsIDE1OCwgMTY2LCAxMDMsIDIzMywgMTU3LCAxNjYsIDEwMywgMjMzLCAxNTYsIDE2NiwgMTAzLCAyMzMsIDE1NSwgCisgICAgMTY2LCAxMDMsIDIzMywgMTU0LCAxNjYsIDEwMywgMjMzLCAxNTMsIDE2NiwgMTAzLCAyMzMsIDE1MiwgMTY2LCAxMDMsIAorICAgIDIzMywgMTUxLCAxNjYsIDEwMywgMjMzLCAxNTAsIDE2NiwgMTAzLCAyMzMsIDE0OSwgMTY2LCAxMDMsIDIzMywgMTQ4LCAKKyAgICAxNjYsIDEwMywgMjMzLCAxNDcsIDE2NiwgMTAzLCAyMzMsIDE0NiwgMTY2LCAxMDMsIDIzMywgMTQ1LCAxNjYsIDEwMywgCisgICAgMjMzLCAxNDQsIDE2NiwgMTAzLCAyMzMsIDE0MywgMTY2LCAxMDMsIDIzMywgMTQyLCAxNjYsIDEwMywgMjMzLCAxNDEsIAorICAgIDE2NiwgMTAzLCAyMzMsIDE0MCwgMTY2LCAxMDMsIDIzMywgMTM5LCAxNjYsIDEwMywgMjMzLCAxMzgsIDE2NiwgMTAzLCAKKyAgICAyMzMsIDEzNywgMTY2LCAxMDMsIDIzMywgMTM2LCAxNjYsIDEwMywgMjMzLCAxMzUsIDE2NiwgMTAzLCAyMzMsIDEzNCwgCisgICAgMTY2LCAxMDMsIDIzMywgMTMzLCAxNjYsIDEwMywgMjMzLCAxMzIsIDE2NiwgMTAzLCAyMzMsIDEzMSwgMTY2LCAxMDMsIAorICAgIDIzMywgMTMwLCAxNjYsIDEwMywgMjMzLCAxMjksIDE2NiwgMTAzLCAyMzMsIDEyOCwgMTY2LCAxMDMsIDIzMywgMTI3LCAKKyAgICAxNjYsIDEwMywgODMsIDI0OSwgMTI5LCAxNjYsIDEwMywgMjAzLCA0MSwgMTY2LCAxMDMsIDIwMywgNDAsIDE2NiwgMTAzLCAKKyAgICAyMDMsIDM5LCAxNjYsIDEwMywgMjAzLCAzOCwgMTY2LCAxMDMsIDIwMywgMzcsIDE2NiwgMTAzLCAyMDMsIDM2LCAxNjYsIAorICAgIDEwMywgMjAzLCAzNSwgMTY2LCAxMDMsIDIwMywgMzQsIDE2NiwgMTAzLCAyMDMsIDMzLCAxNjYsIDEwMywgMjAzLCAzMiwgCisgICAgMTY2LCAxMDMsIDIwMywgMzEsIDE2NiwgMTAzLCAyMDMsIDMwLCAxNjYsIDEwMywgMjAzLCAyOSwgMTY2LCAxMDMsIDIwMywgCisgICAgMjgsIDE2NiwgMTAzLCAyMDMsIDI3LCAxNjYsIDEwMywgMjAzLCAyNiwgMTY2LCAxMDMsIDIwMywgMjUsIDE2NiwgMTAzLCAKKyAgICAyMDMsIDI0LCAxNjYsIDEwMywgMjAzLCAyMywgMTY2LCAxMDMsIDIwMywgMjIsIDE2NiwgMTAzLCAyMDMsIDIxLCAxNjYsIAorICAgIDEwMywgMjAzLCAyMCwgMTY2LCAxMDMsIDIwMywgMTksIDE2NiwgMTAzLCAyMDMsIDE4LCAxNjYsIDEwMywgMjAzLCAxNywgCisgICAgMTY2LCAxMDMsIDIwMywgMTYsIDE2NiwgMTAzLCAyMDMsIDE1LCAxNjYsIDEwMywgMjAzLCAxNCwgMTY2LCAxMDMsIDIwMywgCisgICAgMTMsIDE2NiwgMTAzLCAyMDMsIDEyLCAxNjYsIDEwMywgMjAzLCAxMSwgMTY2LCAxMDMsIDIwMywgMTAsIDE2NiwgMTAzLCAKKyAgICAyMDMsIDksIDE2NiwgMTAzLCAyMDMsIDgsIDE2NiwgMTAzLCAyMDMsIDcsIDE2NiwgMTAzLCAyMDMsIDYsIDE2NiwgMTAzLCAKKyAgICAyMDMsIDUsIDE2NiwgMTAzLCAyMDMsIDQsIDE2NiwgMTAzLCAyMDMsIDMsIDE2NiwgMTAzLCAyMDMsIDIsIDE2NiwgMTAzLCAKKyAgICAyMDMsIDEsIDE2NiwgMTAzLCAyMDMsIDAsIDE2NiwgMTAzLCAyMDIsIDI1NSwgMTY2LCAxMDMsIDIwMiwgMjU0LCAxNjYsIAorICAgIDEwMywgMjAyLCAyNTMsIDE2NiwgMTAzLCAyMDIsIDI1MiwgMTY2LCAxMDMsIDIwMiwgMjUxLCAxNjYsIDEwMywgMjAyLCAKKyAgICAyNTAsIDE2NiwgMTAzLCAyMDIsIDI0OSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyNDksIDEyOSwgMjE1LCAxMjUsIDI0NywgCisgICAgMTM0LCAyNTEsIDI0NSwgNzYsIDIwOCwgMjQxLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDEyMCwgNzYsIDIwOCwgMjQxLCAyMTUsIAorICAgIDEyNSwgMjQ3LCAxMzQsIDEyNiwgNzYsIDIwOCwgMjQxLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIzNiwgMjI5LCA3NiwgMjA4LCAKKyAgICAyNDEsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjM3LCA2MSwgNzYsIDIwOCwgMjQxLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIwOSwgCisgICAgMTA2LCA3NiwgMjA4LCAyNDEsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjEwLCAxMzYsIDc2LCAyMDgsIDI0MSwgMjE1LCAxMjUsIAorICAgIDI0NywgMTM0LCAyMzgsIDIzMiwgNzYsIDIwOCwgMjQxLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIxOSwgMTE0LCA3NiwgMjA4LCAKKyAgICAyNDEsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjA2LCAxNjcsIDc2LCAyMDgsIDI0MSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMjcsIAorICAgIDI0NiwgNzYsIDIwOCwgMjQxLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIyNiwgOTQsIDc2LCAyMDgsIDI0MSwgMjE1LCAxMjUsIAorICAgIDI0NywgMTM0LCAyMTQsIDgxLCA3NiwgMjA4LCAyNDEsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjI2LCAxNDUsIDc2LCAyMDgsIAorICAgIDI0MSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyNTEsIDI0NSwgNzYsIDIzNCwgMTI1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDEyMCwgCisgICAgNzYsIDIzNCwgMTI1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDEyNiwgNzYsIDIzNCwgMTI1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIAorICAgIDIzNiwgMjI5LCA3NiwgMjM0LCAxMjUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjM3LCA2MSwgNzYsIDIzNCwgMTI1LCAyMTUsIAorICAgIDEyNSwgMjQ3LCAxMzQsIDIwOSwgMTA2LCA3NiwgMjM0LCAxMjUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjEwLCAxMzYsIDc2LCAKKyAgICAyMzQsIDEyNSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMzgsIDIzMiwgNzYsIDIzNCwgMTI1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIAorICAgIDIxOSwgMTE0LCA3NiwgMjM0LCAxMjUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjA2LCAxNjcsIDc2LCAyMzQsIDEyNSwgMjE1LCAKKyAgICAxMjUsIDI0NywgMTM0LCAyMjcsIDI0NiwgNzYsIDIzNCwgMTI1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIyNiwgOTQsIDc2LCAKKyAgICAyMzQsIDEyNSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMTQsIDgxLCA3NiwgMjM0LCAxMjUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgCisgICAgMjI2LCAxNDUsIDc2LCAyMzQsIDEyNSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMTMsIDE3MCwgMjI3LCAxNTksIDIxNSwgMTI1LCAKKyAgICAyNDcsIDEzNCwgMjUxLCAyNDUsIDc2LCAyNDEsIDYzLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDEyMCwgNzYsIDI0MSwgNjMsIAorICAgIDIxNSwgMTI1LCAyNDcsIDEzNCwgMTI2LCA3NiwgMjQxLCA2MywgMjE1LCAxMjUsIDI0NywgMTM0LCAyMzYsIDIyOSwgNzYsIAorICAgIDI0MSwgNjMsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjM3LCA2MSwgNzYsIDI0MSwgNjMsIDIxNSwgMTI1LCAyNDcsIDEzNCwgCisgICAgMjA5LCAxMDYsIDc2LCAyNDEsIDYzLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIxMCwgMTM2LCA3NiwgMjQxLCA2MywgMjE1LCAKKyAgICAxMjUsIDI0NywgMTM0LCAyMzgsIDIzMiwgNzYsIDI0MSwgNjMsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjE5LCAxMTQsIDc2LCAKKyAgICAyNDEsIDYzLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIwNiwgMTY3LCA3NiwgMjQxLCA2MywgMjE1LCAxMjUsIDI0NywgMTM0LCAKKyAgICAyMjcsIDI0NiwgNzYsIDI0MSwgNjMsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjI2LCA5NCwgNzYsIDI0MSwgNjMsIDIxNSwgCisgICAgMTI1LCAyNDcsIDEzNCwgMjE0LCA4MSwgNzYsIDI0MSwgNjMsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjI2LCAxNDUsIDc2LCAKKyAgICAyNDEsIDYzLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDYzLCAyMjcsIDE1OSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyNTEsIDI0NSwgCisgICAgNzYsIDI0NiwgOTUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMTIwLCA3NiwgMjQ2LCA5NSwgMjE1LCAxMjUsIDI0NywgMTM0LCAKKyAgICAxMjYsIDc2LCAyNDYsIDk1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIzNiwgMjI5LCA3NiwgMjQ2LCA5NSwgMjE1LCAxMjUsIAorICAgIDI0NywgMTM0LCAyMzcsIDYxLCA3NiwgMjQ2LCA5NSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMDksIDEwNiwgNzYsIDI0NiwgCisgICAgOTUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjEwLCAxMzYsIDc2LCAyNDYsIDk1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIzOCwgCisgICAgMjMyLCA3NiwgMjQ2LCA5NSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMTksIDExNCwgNzYsIDI0NiwgOTUsIDIxNSwgMTI1LCAKKyAgICAyNDcsIDEzNCwgMjA2LCAxNjcsIDc2LCAyNDYsIDk1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIyNywgMjQ2LCA3NiwgMjQ2LCAKKyAgICA5NSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMjYsIDk0LCA3NiwgMjQ2LCA5NSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMTQsIAorICAgIDgxLCA3NiwgMjQ2LCA5NSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMjYsIDE0NSwgNzYsIDI0NiwgOTUsIDIxNSwgMTI1LCAKKyAgICAyNDcsIDEzNCwgNjQsIDIyNywgMTU5LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIzNywgMCwgMjE1LCAxMjUsIDI0NywgMTM0LCAKKyAgICAyMDUsIDYwLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIwNSwgNDksIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjA1LCA0NiwgMjE1LCAKKyAgICAxMjUsIDI0NywgMTM0LCAyMDUsIDQ1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIwNSwgNDQsIDIxNSwgMTI1LCAyNDcsIDEzNCwgCisgICAgMjA1LCA0MywgMjE1LCAxMjUsIDI0NywgMTM0LCAyMDUsIDQyLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIwNSwgNDEsIDIxNSwgCisgICAgMTI1LCAyNDcsIDEzNCwgMjA1LCA0MCwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMDUsIDU5LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIAorICAgIDIwNSwgNTgsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjA1LCA1NywgMjE1LCAxMjUsIDI0NywgMTM0LCAyMDUsIDU2LCAyMTUsIAorICAgIDEyNSwgMjQ3LCAxMzQsIDIwNSwgNTUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjA1LCA1NCwgMjE1LCAxMjUsIDI0NywgMTM0LCAKKyAgICAyMDUsIDUzLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIwNSwgNTIsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjA1LCA1MSwgMjE1LCAKKyAgICAxMjUsIDI0NywgMTM0LCAyMDUsIDUwLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIwNSwgNDgsIDIxNSwgMTI1LCAyNDcsIDEzNCwgCisgICAgMjA1LCA0NywgMTcsIDE5OSwgODIsIDIzNiwgMTgzLCAyMDgsIDc2LCAxNywgMTk5LCA4MiwgMjQ2LCA3MCwgMTcsIDExMiwgCisgICAgMjQ2LCA3MCwgMTcsIDEyMCwgMjQ2LCA3MCwgMTcsIDEyNiwgMjQ2LCA3MCwgMTcsIDIzNiwgMjI5LCAyNDYsIDcwLCAxNywgCisgICAgMjM3LCA2MSwgMjQ2LCA3MCwgMTcsIDIwOSwgMTA2LCAyNDYsIDcwLCAxNywgMjEwLCAxMzYsIDI0NiwgNzAsIDE3LCAyMzgsIAorICAgIDIzMiwgMjQ2LCA3MCwgMTcsIDIxOSwgMTE0LCAyNDYsIDcwLCAyNDEsIDE3LCA0NCwgNDMsIDE3LCAxOTksIDgxLCAyNDEsIAorICAgIDE3LCAxODksIDQ0LCA0MywgMTcsIDE5OSwgODEsIDEwNiwgOCwgNiwgMSwgNjIsIDEwNiwgOCwgNiwgMSwgMjUwLCAxMDMsIAorICAgIDEwNiwgOCwgNiwgMSwgMjQ3LCAyMjMsIDEwNiwgOCwgNiwgMSwgMjQyLCAxNTMsIDEwNiwgOCwgNiwgMSwgNzIsIDEwNiwgOCwgCisgICAgNiwgMSwgMjM4LCA1LCAxMDYsIDgsIDYsIDEsIDIzNiwgMTU2LCAxMDYsIDgsIDYsIDEsIDIzNCwgMjQ3LCAxMDYsIDgsIDYsIAorICAgIDEsIDcwLCAxMDYsIDgsIDYsIDEsIDIyNywgMjUxLCAxMDYsIDgsIDYsIDEsIDIyNywgMTE4LCAxMDYsIDgsIDYsIDEsIDE1NiwgCisgICAgMTA2LCA4LCA2LCAxLCAyMjMsIDI0MywgMTA2LCA4LCA2LCAxLCAyMjAsIDIxNCwgMTA2LCA4LCA2LCAxLCA3NCwgMTA2LCA4LCAKKyAgICA2LCAxLCAyMTYsIDIyNiwgMTA2LCA4LCA2LCAxLCAyMTQsIDE2NywgMTA2LCA4LCA2LCAxLCAxNDYsIDEwNiwgOCwgNiwgMSwgCisgICAgMjEyLCAxMjIsIDEwNiwgOCwgNiwgMSwgMjA3LCA4MywgMTA2LCA4LCA2LCAxLCA2NiwgMTA2LCA4LCA2LCAxLCAyMDMsIAorICAgIDE2OCwgMTA2LCA4LCA2LCAxLCAyMDEsIDE0NywgMTA2LCA4LCA2LCAxLCAyMDAsIDE5NSwgMTA2LCA4LCA2LCAxLCAyMDAsIAorICAgIDEyMywgMTA2LCA4LCA2LCAxLCAxOTksIDE1NywgMjA1LCAxNDYsIDIxMCwgNTUsIDI0OCwgNjksIDgsIDYsIDEsIDIxMiwgCisgICAgMTIyLCA0NCwgMzksIDgsIDYsIDEsIDI0NywgMjIzLCA0NCwgMzksIDgsIDYsIDEsIDE0NiwgNDQsIDI0NywgNzcsIDQ0LCAKKyAgICAyMDAsIDE5NywgOTUsIDgsIDYsIDEsIDYyLCA5NSwgOCwgNiwgMSwgMjUwLCAxMDMsIDk1LCA4LCA2LCAxLCAyNDcsIDIyMywgCisgICAgOTUsIDgsIDYsIDEsIDI0MiwgMTUzLCA5NSwgOCwgNiwgMSwgNzIsIDk1LCA4LCA2LCAxLCAyMzgsIDUsIDk1LCA4LCA2LCAxLCAKKyAgICAyMzYsIDE1NiwgOTUsIDgsIDYsIDEsIDIzNCwgMjQ3LCA5NSwgOCwgNiwgMSwgNzAsIDk1LCA4LCA2LCAxLCAyMjcsIDI1MSwgCisgICAgOTUsIDgsIDYsIDEsIDIyNywgMTE4LCA5NSwgOCwgNiwgMSwgMTU2LCA5NSwgOCwgNiwgMSwgMjIzLCAyNDMsIDk1LCA4LCA2LCAKKyAgICAxLCAyMjAsIDIxNCwgOTUsIDgsIDYsIDEsIDc0LCA5NSwgOCwgNiwgMSwgMjE2LCAyMjYsIDk1LCA4LCA2LCAxLCAyMTQsIAorICAgIDE2NywgOTUsIDgsIDYsIDEsIDE0NiwgOTUsIDgsIDYsIDEsIDIxMiwgMTIyLCA5NSwgOCwgNiwgMSwgMjA3LCA4MywgOTUsIAorICAgIDgsIDYsIDEsIDY2LCA5NSwgOCwgNiwgMSwgMjAzLCAxNjgsIDk1LCA4LCA2LCAxLCAyMDEsIDE0NywgOTUsIDgsIDYsIDEsIAorICAgIDIwMCwgMTk1LCA5NSwgOCwgNiwgMSwgMjAwLCAxMjMsIDk1LCA4LCA2LCAxLCAxOTksIDE1NywgOTUsIDIzMywgNjksIDk1LCAKKyAgICAyMjAsIDIzOCwgOTUsIDIxMSwgMjA0LCA5NSwgMjA4LCAxODIsIDk1LCAyMTUsIDQ1LCA5NSwgMjAxLCA2NSwgMTg5LCA0NCwgCisgICAgOCwgNiwgMSwgNjIsIDE4OSwgNDQsIDgsIDYsIDEsIDI1MCwgMTAzLCAxODksIDQ0LCA4LCA2LCAxLCAyNDcsIDIyMywgMTg5LCAKKyAgICA0NCwgOCwgNiwgMSwgMjQyLCAxNTMsIDE4OSwgNDQsIDgsIDYsIDEsIDcyLCAxODksIDQ0LCA4LCA2LCAxLCAyMzgsIDUsIAorICAgIDE4OSwgNDQsIDgsIDYsIDEsIDIzNiwgMTU2LCAxODksIDQ0LCA4LCA2LCAxLCAyMzQsIDI0NywgMTg5LCA0NCwgOCwgNiwgMSwgCisgICAgNzAsIDE4OSwgNDQsIDgsIDYsIDEsIDIyNywgMjUxLCAxODksIDQ0LCA4LCA2LCAxLCAyMjcsIDExOCwgMTg5LCA0NCwgOCwgCisgICAgNiwgMSwgMTU2LCAxODksIDQ0LCA4LCA2LCAxLCAyMjMsIDI0MywgMTg5LCA0NCwgOCwgNiwgMSwgMjIwLCAyMTQsIDE4OSwgCisgICAgNDQsIDgsIDYsIDEsIDc0LCAxODksIDQ0LCA4LCA2LCAxLCAyMTYsIDIyNiwgMTg5LCA0NCwgOCwgNiwgMSwgMjE0LCAxNjcsIAorICAgIDE4OSwgNDQsIDgsIDYsIDEsIDE0NiwgMTg5LCA0NCwgOCwgNiwgMSwgMjEyLCAxMjIsIDE4OSwgNDQsIDgsIDYsIDEsIDIwNywgCisgICAgODMsIDE4OSwgNDQsIDgsIDYsIDEsIDY2LCAxODksIDQ0LCA4LCA2LCAxLCAyMDMsIDE2OCwgMTg5LCA0NCwgOCwgNiwgMSwgCisgICAgMjAxLCAxNDcsIDE4OSwgNDQsIDgsIDYsIDEsIDIwMCwgMTk1LCAxODksIDQ0LCA4LCA2LCAxLCAyMDAsIDEyMywgMTg5LCAKKyAgICA0NCwgOCwgNiwgMSwgMTk5LCAxNTcsIDIxMywgMjIwLCAyMjIsIDgyLCA1NCwgMjEzLCAyMjAsIDIyMiwgNzksIDU0LCAxODksIAorICAgIDk1LCA4LCA2LCAxLCA2MiwgMTg5LCA5NSwgOCwgNiwgMSwgMjUwLCAxMDMsIDE4OSwgOTUsIDgsIDYsIDEsIDI0NywgMjIzLCAKKyAgICAxODksIDk1LCA4LCA2LCAxLCAyNDIsIDE1MywgMTg5LCA5NSwgOCwgNiwgMSwgNzIsIDE4OSwgOTUsIDgsIDYsIDEsIDIzOCwgCisgICAgNSwgMTg5LCA5NSwgOCwgNiwgMSwgMjM2LCAxNTYsIDE4OSwgOTUsIDgsIDYsIDEsIDIzNCwgMjQ3LCAxODksIDk1LCA4LCA2LCAKKyAgICAxLCA3MCwgMTg5LCA5NSwgOCwgNiwgMSwgMjI3LCAyNTEsIDE4OSwgOTUsIDgsIDYsIDEsIDIyNywgMTE4LCAxODksIDk1LCAKKyAgICA4LCA2LCAxLCAxNTYsIDE4OSwgOTUsIDgsIDYsIDEsIDIyMywgMjQzLCAxODksIDk1LCA4LCA2LCAxLCAyMjAsIDIxNCwgCisgICAgMTg5LCA5NSwgOCwgNiwgMSwgNzQsIDE4OSwgOTUsIDgsIDYsIDEsIDIxNiwgMjI2LCAxODksIDk1LCA4LCA2LCAxLCAyMTQsIAorICAgIDE2NywgMTg5LCA5NSwgOCwgNiwgMSwgMTQ2LCAxODksIDk1LCA4LCA2LCAxLCAyMTIsIDEyMiwgMTg5LCA5NSwgOCwgNiwgMSwgCisgICAgMjA3LCA4MywgMTg5LCA5NSwgOCwgNiwgMSwgNjYsIDE4OSwgOTUsIDgsIDYsIDEsIDIwMywgMTY4LCAxODksIDk1LCA4LCA2LCAKKyAgICAxLCAyMDEsIDE0NywgMTg5LCA5NSwgOCwgNiwgMSwgMjAwLCAxOTUsIDE4OSwgOTUsIDgsIDYsIDEsIDIwMCwgMTIzLCAxODksIAorICAgIDk1LCA4LCA2LCAxLCAxOTksIDE1NywgMjQyLCAyMzIsIDE4OSwgOTUsIDgsIDYsIDEsIDIxNiwgMjI2LCAxODksIDk1LCAKKyAgICAyMzIsIDIzMywgMTg5LCA5NSwgMTcyLCAxODksIDk1LCAyMTIsIDY0LCAxODksIDk1LCAyNTIsIDg5LCAxODksIDk1LCAyMDEsIAorICAgIDY1LCA1MiwgMjQwLCAyMzAsIDk1LCAyNDYsIDEzNiwgOTUsIDI0MywgMjYsIDk1LCAyMzYsIDIxMCwgOTUsIDIzMiwgMjI0LCAKKyAgICA5NSwgMjIwLCA3LCA5NSwgMjE5LCAyNTUsIDk1LCAyMTcsIDk4LCA5NSwgMjA5LCA1LCA5NSwgMTE1LCAzLCAyMzgsIDQzLCAKKyAgICA4MSwgOTUsIDIwMiwgMTY5LCA5NSwgMTI2LCAyNDIsIDE1MywgOTUsIDIxMSwgMTk2LCAyMTEsIDIwOSwgOTUsIDEyMCwgCisgICAgMjI3LCAxMTgsIDk1LCAyMzYsIDIyOSwgMjI3LCAxMTgsIDk1LCAyMzgsIDIzMiwgMjI3LCAxMTgsIDk1LCAyMzcsIDYxLCAKKyAgICAyMTUsIDEwMCwgMTAyLCA5NSwgMjEwLCAxMzYsIDIxNSwgMTAwLCAxMDIsIDk1LCAyMDQsIDE0OSwgMjE1LCAxMDAsIDEwNSwgCisgICAgOTUsIDIwOSwgOTMsIDIxNiwgMjI2LCA5NSwgMTEyLCAyMzMsIDgzLCAyMDQsIDE2MCwgMjE2LCAyMjYsIDk1LCA4LCA0LCAxLCAKKyAgICAyNDIsIDE1MywgOTUsIDIzNCwgMTQyLCA5NSwgMjM0LCAxNDEsIDk1LCAyMzQsIDc0LCA5NSwgMjI0LCA2NiwgOTUsIDIwOSwgCisgICAgMjAxLCA5NSwgMjA0LCAyNCwgOTUsIDIwMiwgMTkwLCAyMTMsIDE2MiwgMjI4LCAxMDAsIDE2LCAxLCA2MiwgMjEzLCAxNjIsIAorICAgIDIyOCwgMTAwLCAxNiwgMSwgMjUwLCAxMDMsIDIxMywgMTYyLCAyMjgsIDEwMCwgMTYsIDEsIDI0NywgMjIzLCAyMTMsIDE2MiwgCisgICAgMjI4LCAxMDAsIDE2LCAxLCAyNDIsIDE1MywgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgMSwgNzIsIDIxMywgMTYyLCAyMjgsIAorICAgIDEwMCwgMTYsIDEsIDIzOCwgNSwgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgMSwgMjM2LCAxNTYsIDIxMywgMTYyLCAyMjgsIAorICAgIDEwMCwgMTYsIDEsIDIzNCwgMjQ3LCAyMTMsIDE2MiwgMjI4LCAxMDAsIDE2LCAxLCA3MCwgMjEzLCAxNjIsIDIyOCwgMTAwLCAKKyAgICAxNiwgMSwgMjI3LCAyNTEsIDIxMywgMTYyLCAyMjgsIDEwMCwgMTYsIDEsIDIyNywgMTE4LCAyMTMsIDE2MiwgMjI4LCAxMDAsIAorICAgIDE2LCAxLCAxNTYsIDIxMywgMTYyLCAyMjgsIDEwMCwgMTYsIDEsIDIyMywgMjQzLCAyMTMsIDE2MiwgMjI4LCAxMDAsIDE2LCAKKyAgICAxLCAyMjAsIDIxNCwgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgMSwgNzQsIDIxMywgMTYyLCAyMjgsIDEwMCwgMTYsIDEsIAorICAgIDIxNiwgMjI2LCAyMTMsIDE2MiwgMjI4LCAxMDAsIDE2LCAxLCAyMTQsIDE2NywgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgMSwgCisgICAgMTQ2LCAyMTMsIDE2MiwgMjI4LCAxMDAsIDE2LCAxLCAyMTIsIDEyMiwgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgMSwgMjA3LCAKKyAgICA4MywgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgMSwgNjYsIDIxMywgMTYyLCAyMjgsIDEwMCwgMTYsIDEsIDIwMywgMTY4LCAKKyAgICAyMTMsIDE2MiwgMjI4LCAxMDAsIDE2LCAxLCAyMDEsIDE0NywgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgMSwgMjAwLCAxOTUsIAorICAgIDIxMywgMTYyLCAyMjgsIDEwMCwgMTYsIDEsIDIwMCwgMTIzLCAyMTMsIDE2MiwgMjI4LCAxMDAsIDE2LCAxLCAxOTksIDE1NywgCisgICAgNTIsIDE3NywgMjMzLCAyMDEsIDk1LCA2OSwgMjI2LCA3NiwgOTUsIDY5LCAyMTIsIDY0LCA5NSwgMTIsIDIwMywgMjQ0LCAKKyAgICAyMzAsIDE2OSwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNzMsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTgxLCA5NSwgNjksIAorICAgIDI0MSwgMTc1LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE4OCwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNzUsIDk1LCAxMiwgCisgICAgMjAzLCAyNDQsIDIzMCwgMTQ3LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE3NCwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAKKyAgICAxODcsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTYxLCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE1NCwgOTUsIDEyLCAyMDMsIAorICAgIDI0NCwgMjMwLCAxNjMsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTg0LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE3MCwgCisgICAgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxODYsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTYyLCA5NSwgMTIsIDIwMywgMjQ0LCAKKyAgICAyMzAsIDE4NSwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNDgsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTUzLCA5NSwgMTIsIAorICAgIDIwMywgMjQ0LCAyMzAsIDE0NiwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNzYsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgCisgICAgMTc4LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE1NiwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNjcsIDk1LCAxMiwgMjAzLCAKKyAgICAyNDQsIDIzMCwgMTY1LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE5MSwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxOTAsIAorICAgIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTQ0LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE3MSwgOTUsIDEyLCAyMDMsIDI0NCwgCisgICAgMjMwLCAxODksIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTgwLCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE2NiwgOTUsIDEyLCAKKyAgICAyMDMsIDI0NCwgMjMwLCAxNDUsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTY4LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIAorICAgIDE1MCwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNDksIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTc5LCA5NSwgMTIsIDIwMywgCisgICAgMjQ0LCAyMzAsIDE1NywgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNTksIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTYwLCAKKyAgICA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE1MiwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxODMsIDk1LCAxMiwgMjAzLCAyNDQsIAorICAgIDIzMCwgMTc3LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE0MywgMjA1LCAxNDYsIDIxMCwgNTUsIDI0OCwgNjksIDEyLCAKKyAgICAyMDMsIDI0NCwgMjMwLCAxNTgsIDIwNSwgMTQ2LCAyMTAsIDU1LCAyNDgsIDY5LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTkwLCAKKyAgICAyMDUsIDE0NiwgMjEwLCA1NSwgMjQ4LCA2OSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE4OCwgMjA1LCAxNDYsIDIxMCwgNTUsIAorICAgIDI0OCwgNjksIDEyLCAyMDMsIDI0NCwgMjMwLCAxNzIsIDIwNSwgMTQ2LCAyMTAsIDU1LCAyNDgsIDY5LCAxMiwgMjAzLCAKKyAgICAyNDQsIDIzMCwgMTU1LCAyMDUsIDE0NiwgMjEwLCA1NSwgMjQ4LCA2OSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE2OCwgMjA1LCAKKyAgICAxNDYsIDIxMCwgNTUsIDI0OCwgNjksIDEyLCAyMDMsIDI0NCwgMjMwLCAxNTEsIDIwNSwgMTQ2LCAyMTAsIDU1LCAyNDgsIAorICAgIDY5LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTgyLCAyMDUsIDE0NiwgMjEwLCA1NSwgMjQ4LCA2OSwgMTIsIDIwMywgMjQ0LCAKKyAgICAyMzAsIDE2NCwgNDQsIDE5OCwgMTk4LCAyNTEsIDIyMywgNDQsIDE5OCwgMTk4LCAyNTEsIDI0OSwgMjQyLCAxNjQsIDIzNywgCisgICAgMTEsIDI0NiwgMTEwLCAyMDQsIDksIDIxOSwgMTMwLCAzLCAyMDgsIDEwNiwgMjA3LCAyMjMsIDExOSwgMjIxLCA2MiwgMjA3LCAKKyAgICAyMjIsIDI0NiwgMTQwLCAyNTAsIDE1NiwgMjM5LCAxMTEsIDIwNywgMjIxLCAxMTksIDI0OCwgMjUsIDIxMywgMjIxLCAyNDgsIAorICAgIDUxLCAyNTAsIDE1NiwgMjE5LCAxMjksIDIwMSwgODMsIDIwMSwgNzcsIDIwMiwgMTg0LCAyMjEsIDE3MiwgMjAxLCA2NywgCisgICAgMjM5LCAxOCwgMjM1LCAxMjQsIDIzOCwgNTksIDIzOSwgMTgsIDIzNSwgMTI0LCAyNTEsIDkyLCAyMzksIDE4LCAyMzUsIAorICAgIDEyNCwgMjUwLCAxNzQsIDIzNSwgMTI0LCAzLCAyMjIsIDMxLCAyMjAsIDgsIDIyMSwgODIsIDk5LCAyMDEsIDY5LCAyNDIsIAorICAgIDI0NCwgMjIxLCA4MiwgOTksIDIzNywgNzMsIDIxNCwgODgsIDIyMSwgODIsIDk5LCAyMDEsIDY5LCAyMzUsIDE1NywgMjIxLCAKKyAgICA4MiwgOTksIDIzNiwgMTgzLCAyMjEsIDgyLCA5OSwgMjAxLCA5NywgMjM1LCAxNTcsIDIyMSwgODIsIDk5LCAyMjUsIDY0LCAKKyAgICAyMTQsIDg4LCAyMjEsIDgyLCA5OSwgMjAxLCA5NywgMjQyLCAyNDQsIDIyMSwgODIsIDk5LCAyNDIsIDI0NCwgMjIxLCA4MSwgCisgICAgMjIwLCA4LCAyMjEsIDgyLCAzLCAyMzcsIDE4OSwgMjM3LCA3MywgMjE0LCA4OCwgMjIxLCA4MiwgMywgMjM3LCAxODksIAorICAgIDIyNSwgNjQsIDIxNCwgODgsIDIyMSwgODIsIDMsIDIzNywgMTg5LCAyMzYsIDE4MywgMjIxLCA4MiwgMywgMjM3LCAxODksIAorICAgIDIwNywgMjI5LCAzLCAyMzcsIDE4OSwgMjM1LCAxMjEsIDIwOCwgMTA5LCAyMDksIDI1NSwgMjA4LCAxMDksIDIwNiwgOTQsIAorICAgIDYzLCAyMzksIDE0NSwgNjQsIDIwNywgMjI4LCA2NCwgMjA3LCAyMjksIDMsIDQsIDI0NiwgMTAxLCA2NCwgMjA3LCAyMjksIAorICAgIDI0OCwgMjM3LCAyNDYsIDEwMSwgNjQsIDIwNywgMjI5LCAyNDgsIDIzNywgMjQ2LCAxMDIsIDMsIDIxMywgMjIyLCAyNDYsIAorICAgIDEwMiwgMywgMjEzLCAyMjIsIDI0NiwgMTAyLCAzLCAyMDksIDM1LCAyNDYsIDEwMiwgMywgMjI0LCAxOTMsIDI0NiwgMTAyLCAKKyAgICAzLCAyMDUsIDE1MCwgMjM3LCAxMiwgMjAxLCAxNywgMjQ4LCAxMjgsIDIzNywgMTg5LCAyMzMsIDExOCwgMjQwLCAyMDAsIAorICAgIDIwNywgMTYsIDI0OCwgMSwgMjQ2LCAyNDIsIDIxMSwgMTg4LCAyMzgsIDUzLCAyMDUsIDEwOCwgMjQxLCAxNjksIDIwNSwgCisgICAgMTA4LCAyMTYsIDE3NywgMjA1LCAxMDgsIDI0NywgMTgzLCAyMzMsIDExOCwgMjE2LCAyOSwgMjA0LCAyMDUsIDI0NiwgMjQ2LCAKKyAgICAyNDgsIDEzMSwgMjEyLCAyMzIsIDIzNCwgNzMsIDIwNywgMjI2LCAyNDgsIDEzMSwgMjM5LCAyMiwgNzYsIDIyMiwgMTg5LCAKKyAgICAyMzksIDIyLCA3NiwgMjEzLCA4MywgMjM0LCAxMDAsIDIzNiwgMjI5LCAyMjUsIDM2LCAyNDYsIDEwMCwgMjIyLCAxNjIsIAorICAgIDIyNSwgMzUsIDIzNywgMTcyLCAyMjUsIDM1LCAyMjUsIDM2LCAyMzcsIDE5LCAyMjgsIDExOCwgMjAxLCAxNiwgMjIwLCAKKyAgICAyNDcsIDIwNSwgMTc4LCAyNTAsIDEzOCwgMjM1LCA4MSwgMjIyLCA0OSwgMjAxLCA4MSwgMjA2LCAyMzksIDIyNSwgNSwgCisgICAgMjQ5LCA4NSwgMjE1LCAxNTcsIDIxMywgMTcwLCAyNTEsIDEwLCAyMzUsIDY0LCAyNTEsIDEwLCAyMTYsIDY3LCAyMTYsIDcwLCAKKyAgICAyNDYsIDI0NywgMjA4LCA2MCwgMjM0LCAyMDgsIDIwOSwgNjgsIDc2LCAyMTUsIDEzNywgMjIyLCA3MiwgMjE3LCA3OSwgCisgICAgMjQ4LCAxMTIsIDIxNSwgNTcsIDIyNSwgMTYsIDIxMywgODQsIDI0MiwgMjUwLCAyMTMsIDg0LCAyNDksIDk3LCAyNDMsIDI5LCAKKyAgICAyMTMsIDgzLCAyNDIsIDE5MiwgMjYsIDIxMywgODMsIDIwOCwgOTQsIDI0OCwgODIsIDIwOCwgMjQwLCAyNDgsIDYyLCAyMzYsIAorICAgIDIwOSwgMjM2LCAyMDUsIDIxMiwgMjUzLCAyMDcsIDE3OSwgMjE1LCA1OSwgMjQyLCA3LCAyMTcsIDEyMywgMjA3LCAxOTcsIAorICAgIDIzNiwgMjA2LCAyMDksIDIyNiwgMjM3LCA3MiwgMjQ3LCAxNzcsIDMsIDIwNywgMTcyLCAyNDEsIDExMiwgMjA5LCAyMywgCisgICAgMjMyLCAyMzIsIDI0MiwgMjQ4LCAyMTAsIDczLCAyMzIsIDIzMSwgMjMyLCAyMzIsIDI0MiwgMjQ4LCAyMzksIDE3MCwgMjQzLCAKKyAgICAyOCwgMjQ2LCAyMDgsIDE0OCwgMjQ3LCAxNDgsIDIyNCwgOTMsIDI0MiwgMTgzLCAyMzMsIDE5MCwgMjE1LCA2MSwgMjA5LCAKKyAgICAyMzksIDI0OCwgMjE4LCAyNDgsIDc4LCAyMTUsIDYyLCA3NiwgMjM3LCAxLCAyNDMsIDI3LCAyMzYsIDI0NiwgMjYsIDIyNiwgCisgICAgOTUsIDIwNiwgMTk4LCAyMDEsIDMsIDIzNCwgMTc3LCAyMTIsIDQxLCAyNDgsIDk1LCAyNiwgMjQyLCAyMDIsIDIwMSwgMTMsIAorICAgIDIzNSwgMTI4LCAyNDYsIDg4LCAyMzUsIDEyOCwgMjA1LCA2MywgMjM5LCAxNTEsIDI0OCwgMjQ4LCAyMjEsIDMwLCAyNDYsIAorICAgIDExNywgMjQ4LCAyNDgsIDIyMSwgMjksIDI0OSwgMTMyLCAyNDgsIDk0LCAyMzYsIDI0NiwgMjYsIDIyNiwgOTYsIDMsIDIxNSwgCisgICAgMTI2LCAyNDgsIDk1LCAzLCAyMTUsIDc0LCAyNDMsIDE3LCAyMTUsIDc2LCAyMTMsIDg1LCAyMDAsIDIyNywgMjE1LCAyMCwgCisgICAgMjQ4LCAxNTksIDI0NywgMTc2LCAyMjcsIDI0NSwgMjQ2LCAyMDAsIDIwNSwgMTA4LCAyMzcsIDE1NSwgMjQ2LCAxOTksIAorICAgIDIzNywgNzUsIDIzNywgNzYsIDIwOCwgMjM4LCAyNDksIDk2LCAyMTYsIDEwNSwgMjE1LCA3NSwgMjQzLCA2NSwgMjQ5LCA5NywgCisgICAgMjA2LCAyNDMsIDIwNSwgMTA4LCAyNDIsIDIzMiwgMjM3LCA0NywgMjE1LCAxNTgsIDI0MSwgMTY2LCAyMjcsIDIzNiwgMjQwLCAKKyAgICAxOTMsIDI0NywgMTIzLCAyMDgsIDU5LCAyMDEsIDE3LCAyNDYsIDIyNCwgMjIxLCA4MiwgMjAyLCAyMjEsIDI0NywgNDIsIAorICAgIDIxMSwgMjIyLCAyMTEsIDI0OSwgMjM1LCA4NywgMjQ3LCAxNDQsIDIzNCwgMTI4LCAzLCAyMDUsIDIyNCwgMjE3LCA3OSwgCisgICAgMjA2LCAxMDcsIDIyNSwgMjgsIDI0OCwgODgsIDc2LCAyMzcsIDIzLCAyMjEsIDE3NCwgMjIyLCA2OSwgMjEzLCAxNDIsIAorICAgIDIxMywgODUsIDMyLCAyMjYsIDIxMywgMywgMjI3LCAyNDQsIDIwOCwgMzAsIDIyMSwgMjA4LCAyMjQsIDIyOSwgMjA5LCA2NiwgCisgICAgMjQzLCAzNCwgMjI2LCA5MiwgMjQ5LCA0LCAyNTAsIDE4NCwgMzIsIDIxOCwgMjA0LCAyNDksIDQsIDI0MSwgMTE4LCAzMiwgCisgICAgMjE4LCAyMDQsIDIzNywgOTAsIDIzNiwgMjE0LCAyNTEsIDIyNiwgMjA2LCA5LCAyNDcsIDEyNCwgMjMzLCAxMjAsIDIzNywgCisgICAgMTIxLCAyMDEsIDM3LCAyMTIsIDI0MywgMjQ2LCA4OSwgMjM3LCA2NywgMjE1LCA5MSwgMjYsIDIzNywgNzEsIDIyMSwgMjA4LCAKKyAgICAyMjEsIDQ4LCAyNDcsIDE2MiwgMjQ2LCAxNTksIDIzNCwgMTMyLCAyNTAsIDE5MywgMjE2LCAxODAsIDIwNSwgMTU4LCAyMzQsIAorICAgIDE1NywgMjQ2LCAxNDUsIDIwNiwgMTU4LCAyMDYsIDEwLCAyNDYsIDEzMSwgMjQ4LCAxMjEsIDIxNiwgMjIsIDI1MCwgMTkxLCAKKyAgICAyMDIsIDIzMCwgMjM2LCA2MywgMjQxLCAxMCwgMjM0LCA0NSwgMjA5LCA1OSwgMjIyLCAyMzAsIDI0OCwgMTcxLCAyMzYsIAorICAgIDY0LCAyNDEsIDU2LCAyNDgsIDgxLCAyMzcsIDI1LCAyMTUsIDEyNSwgMjQ3LCAxMzIsIDMyLCAyMTgsIDIwOSwgMjIxLCAyMSwgCisgICAgMzIsIDIxOCwgMjA0LCAyMTEsIDIzNSwgMjM1LCAzNCwgMzIsIDIyNiwgMjEyLCAyMDUsIDM5LCAyMDIsIDIxMCwgMzIsIAorICAgIDIxMSwgMjE0LCAyMTIsIDE1NSwgMjEwLCAxMiwgMywgMjExLCAyNTIsIDIwNiwgMTYzLCAyMTMsIDI0MSwgMjYsIDI0OSwgCisgICAgOTcsIDIwOSwgODUsIDI2LCAyMDksIDg1LCAyNDgsIDEwNSwgMjQ5LCA1OSwgMjYsIDIzMywgMTgzLCAyNDYsIDI0OCwgMjM3LCAKKyAgICA1MywgMjA5LCAzNCwgMjEyLCAxNTYsIDIwNywgMjAyLCAyMDgsIDIwNSwgMjIyLCA2OSwgMjA1LCA2NCwgMjMzLCAxMjEsIAorICAgIDIxMywgMjQyLCAyNTEsIDkzLCAyMzYsIDI1NCwgMjEyLCAxNjksIDIzNiwgMjU0LCAyMDcsIDE3NCwgMjAxLCA1MywgMjI0LCAKKyAgICAxOTgsIDIzNSwgMTA3LCAyMTMsIDI0MywgMjIxLCA2OSwgMjEzLCAyNDMsIDI0NywgMTM1LCAyNDIsIDI0MSwgMjQ5LCA1NiwgCisgICAgMjYsIDI0OSwgOTcsIDIwMiwgMTgzLCAyMzcsIDExMSwgMjMzLCAyMDQsIDIwOCwgODgsIDI2LCAyNDksIDk3LCAyMzIsIAorICAgIDIzMiwgMjMzLCAyMDQsIDIwOCwgODgsIDI2LCAyMTQsIDIxNywgMjA3LCAyMywgMjA2LCAxNjMsIDIxNiwgMTk4LCAyNiwgCisgICAgMjQ5LCA5NywgMjA5LCAzNiwgMjQ3LCAxNDAsIDIyMSwgNjMsIDI0NywgMTYwLCAyNDksIDcsIDMsIDIwNCwgOSwgMjQ4LCAKKyAgICAyNywgMjQzLCA0OCwgMjMzLCAxMTAsIDI0OCwgMjUsIDI0NiwgMTM5LCAyNDEsIDEyMiwgMjMzLCAxMTAsIDI0OCwgMjYsIAorICAgIDI0NiwgMTI5LCAyNDgsIDI2LCAyNDEsIDExNCwgMjQxLCAxMTUsIDIyOCwgMTksIDIyMCwgMTE4LCAyMTYsIDExMSwgMjA4LCAKKyAgICAxMTksIDIzMywgMTEwLCAyNDgsIDI2LCAyMzMsIDExMCwgMywgMjM2LCA0NywgMjE3LCAxMTUsIDI0OCwgMjYsIDIyNywgCisgICAgMjM2LCAyMTUsIDY3LCAyMTcsIDExNCwgMjM4LCA1OCwgMjE1LCA2NywgMjE3LCAxMTQsIDIzMywgMTE5LCAyNDksIDgxLCAKKyAgICAyNTAsIDEyOCwgMjA2LCAxNzEsIDIyMiwgMjMwLCAyMzMsIDExNSwgMjI0LCA2MCwgMjMzLCAxMTUsIDI0MywgMzIsIDIwOCwgCisgICAgNzIsIDIxMSwgMjIxLCAyNDEsIDEyNSwgMjA4LCA3MiwgMjM3LCAxNzgsIDIyOCwgMCwgMjI1LCA3NiwgMjI3LCAyMzYsIAorICAgIDI0NywgMTEzLCAyMzgsIDU4LCAyNDcsIDExMywgNjQsIDIxNiwgNDEsIDYzLCAyMTYsIDQxLCAyMDEsIDc1LCA2NCwgMjM3LCAKKyAgICA1MywgMjAxLCA3NSwgNjMsIDIzNywgNTMsIDIxMiwgMjMxLCA2MywgMjEyLCAyMzEsIDIyNSwgMTY4LCAyNDksIDExNSwgCisgICAgMjEzLCAyNDEsIDI2LCAyMDksIDIwNCwgMjQ4LCA4NiwgMjYsIDQ4LCAyNTEsIDg4LCAyMzgsIDE4NSwgNjcsIDIzNywgNjIsIAorICAgIDIwNCwgMTI2LCAyMzgsIDE4NSwgNjcsIDIzNywgNjIsIDIwNCwgMTIzLCAyMzgsIDE4NSwgNjcsIDIzNywgNjIsIDIwNCwgCisgICAgMTIxLCAyMzgsIDE4NSwgNjcsIDIzNywgNjIsIDIwNCwgMTE5LCAyMzgsIDE4NSwgNjcsIDIzNywgNjIsIDIwNCwgMTE3LCAKKyAgICAyMTMsIDIwNCwgMjIxLCA2MCwgMjE2LCAyMzUsIDIwMSwgODMsIDI0OCwgMzEsIDI0MiwgMjU1LCAyMDYsIDIsIDIyNCwgCisgICAgMjQ1LCAyMTMsIDI0NCwgMjQ3LCAxMTEsIDIzOSwgMTU4LCAyNDIsIDI0MCwgMjAxLCA0MCwgMjA5LCA0MywgMjA5LCA0MSwgCisgICAgMjMzLCAxMjAsIDIxMywgMjE2LCAyMzUsIDExMiwgMjEwLCA1OSwgMjIxLCAxMDAsIDIxMiwgMjM1LCAyNDYsIDIzNCwgMjQwLCAKKyAgICAyMDAsIDIxNSwgMTY4LCAyNDgsIDEyMiwgMjM4LCAyMDEsIDIxNywgMTI2LCAyMDgsIDIxOCwgMjEwLCA1NCwgMjQ4LCAzMCwgCisgICAgMjUxLCA1MSwgMjMzLCAxODksIDIyNSwgMTYxLCAyNDgsIDI0NiwgMjM3LCA3MSwgMjA1LCA2MywgMjM3LCA3MSwgMjQ4LCAKKyAgICAxMjksIDIwNCwgMTgyLCAyMzQsIDE1NSwgMjQ2LCAyMzUsIDI0OSwgMTMyLCAyNDYsIDIzNSwgMjM2LCAxOTksIDI0OSwgCisgICAgMTMyLCAyNDYsIDIzNSwgMjQ4LCAxNjIsIDIxNiwgNDMsIDIyNiwgODYsIDIxNSwgODAsIDIzOSwgMTQ4LCAyNDcsIDE2NCwgCisgICAgMjQ5LCAxMjAsIDI0NywgMTY0LCAyNDAsIDE5MiwgMjIxLCA2MSwgMjM3LCAxODksIDI0MywgMCwgMjM3LCAxODksIDIwNiwgCisgICAgMywgMjM3LCAxODksIDIxMywgMjQ1LCAyMzcsIDE4OSwgMjQ3LCAxMTIsIDIzNywgMTg5LCAyMzksIDE1OSwgMjM3LCAxODksIAorICAgIDIwOCwgMjAzLCAyMDEsIDQwLCAyMzMsIDEyMSwgMjM3LCAxODksIDIyMSwgMTAxLCAyMzcsIDE4OSwgMjQwLCAyMDEsIDIzNywgCisgICAgMTg5LCAyMTUsIDE2OSwgMjM3LCAxODksIDIzNiwgMjAzLCAyMzcsIDE4OSwgMjM0LCAyMDUsIDIzNywgMTg5LCAyMDAsIAorICAgIDI1MywgMjM3LCAxODksIDI0OSwgMiwgMjM3LCAxODksIDIxNiwgMTU5LCAyMzcsIDE4OSwgMjE1LCAxNjksIDIxOCwgMjE2LCAKKyAgICAyMTYsIDg1LCAyMTUsIDcsIDI0NiwgMjE5LCAyMzgsIDE1LCAyMzgsIDIyLCAyMzksIDIxLCAyMTgsIDIxNiwgMjIxLCA1OCwgCisgICAgMjA1LCAxNjMsIDY0LCAxMTUsIDIxNSwgOTYsIDI0OSwgMTI3LCAyMjgsIDEwMywgNjQsIDEyNywgMjE1LCA5NiwgMjQ5LCAKKyAgICAxMjcsIDIyOCwgMTAzLCA2NCwgNDksIDIxNSwgOTYsIDI0OSwgMTI3LCAyMjgsIDEwMywgNjQsIDUxLCAyMTUsIDk2LCAyNDksIAorICAgIDEyNywgMjI4LCAxMDMsIDIzNywgNjUsIDIzNCwgMjAwLCA1NCwgMjAxLCA3NSwgMjM0LCAyMDAsIDU0LCAyMTcsIDk5LCAKKyAgICAyMzQsIDIwMCwgNTQsIDIwNiwgMzMsIDExNSwgNTQsIDIwNiwgMzMsIDEyNywgNTQsIDI0NiwgMTMwLCAyMzQsIDE3NSwgNTQsIAorICAgIDE3NiwgMjM0LCAxNzUsIDU0LCAyNDIsIDIyNiwgMjAwLCAyNDksIDIzNCwgMTU3LCAyMzgsIDE4LCAyMjAsIDMwLCAyMDcsIAorICAgIDgyLCAyMjcsIDIyNiwgMjM5LCAxNTMsIDIyNiwgMTQ4LCAyNDgsIDE3MywgMjAwLCAyNDksIDI0NiwgMTAzLCAyMTQsIDE5OCwgCisgICAgMjM0LCAxNzksIDIxNSwgNTgsIDIyMiwgMTcwLCAyMTAsIDUsIDI1MCwgMTUxLCAyMTAsIDUsIDIzNCwgNTgsIDIxMCwgNSwgCisgICAgMjAwLCAyNDksIDIxMiwgMTAsIDIwMCwgMjQ5LCAyNDgsIDEwNCwgMjM2LCAyNTIsIDI0NywgMjQ5LCAyMjgsIDExOCwgMjA5LCAKKyAgICAxNTUsIDI0NywgMjQ4LCAyMjgsIDExOCwgMjA5LCAxNTUsIDI0OCwgNzYsIDIzNSwgMTQwLCAyMjIsIDE4MCwgMjAwLCAyNTAsIAorICAgIDIzNywgMTY5LCAyMjIsIDE4MSwgMjYsIDIwMCwgMjUxLCAyMzMsIDE5OCwgMjM0LCAxNzQsIDEyMCwgMjIyLCA0MSwgMjMzLCAKKyAgICAxOTgsIDIzNCwgMTc0LCAxMjAsIDIwMCwgMjQ4LCAyMzMsIDE5OCwgMjM0LCAxNzQsIDIxNSwgODgsIDIxNywgMTEzLCAyMDAsIAorICAgIDI1MSwgMywgMjQ4LCAxMSwgMjM5LCAxOSwgMjQ4LCA1MiwgMywgMjAzLCA1MCwgMjE2LCAxMSwgMywgMjQ4LCAxMzMsIDIzNCwgCisgICAgMjIxLCAyMjIsIDE4MSwgMywgMjM1LCA0NywgMjE1LCAyMDUsIDIyMiwgMTY2LCAyMjIsIDE4MSwgMywgMjA0LCAxOTEsIAorICAgIDIxNywgOTEsIDIyMiwgMTgwLCAyMTcsIDkxLCAyMDAsIDI1MCwgMjQ5LCAxMzEsIDI0MywgNDksIDIwMCwgMjM0LCAyMTUsIAorICAgIDEyLCAyMjcsIDIzNiwgMjE3LCAxMDksIDIyNywgMjM2LCAyMzUsIDExMSwgMjM1LCAxNjksIDI0OSwgMTMyLCAyNTEsIDc0LCAKKyAgICAyMzgsIDI3LCAyNTEsIDEzMiwgMjUxLCAxMzMsIDIyMSwgOTEsIDIyOCwgMTIzLCAyMDksIDgwLCAyMjgsIDkyLCAyNDEsIAorICAgIDExMSwgMjE2LCAxMCwgMjM1LCA0MSwgMjQyLCAxMiwgMjI0LCAxNTksIDIyMCwgMTQyLCAyMTUsIDg3LCAyMzcsIDE5MCwgCisgICAgMjIyLCAxMzAsIDIzNCwgMjIwLCAyNDksIDc1LCAyMTUsIDkwLCAyMDcsIDEwMiwgMjE1LCAxNjEsIDIyNiwgMTMwLCA4MSwgCisgICAgMjI0LCA2MCwgMjI0LCAyMzYsIDIxMywgMjYsIDIzNiwgNSwgMjA4LCA3OCwgMjI2LCAxMjksIDI0OCwgODcsIDI0MywgMiwgCisgICAgMywgMjM0LCAxMjcsIDIwMSwgNjAsIDI0OSwgMCwgMjM0LCAxMjcsIDI0OCwgNDYsIDIzNCwgMTI3LCAxMjAsIDIzNCwgMTI1LCAKKyAgICAyMDgsIDIzNiwgMjM0LCAxMjcsIDIzNSwgNTcsIDIzNCwgMTI3LCAyMzQsIDEyOCwgMywgNDgsIDI0OCwgMTI3LCAyMzQsIAorICAgIDEyNywgMjM1LCA2NCwgMjM0LCAxMjcsIDIwMCwgNDQsIDIzNCwgMTI3LCAyMTQsIDE5OSwgMjM0LCAxMjcsIDIzNCwgMTI4LCAKKyAgICAzLCAyMTMsIDg1LCAyMTMsIDk5LCAyMzQsIDEyNSwgMjM0LCAxMjgsIDI0MSwgMTY2LCAyNDEsIDY1LCAyMTAsIDg2LCAzLCAKKyAgICAzNSwgNzMsIDIyOCwgNzMsIDIzOCwgMjA0LCAxNjIsIDI0OCwgMjMsIDI1MSwgNzMsIDk5LCAyNDgsIDExMywgMjA5LCA3MSwgCisgICAgOTksIDI0NiwgODEsIDk5LCAyMDgsIDIxMiwgMjA3LCAxODEsIDk5LCAyMzksIDE0NSwgMjQxLCAyNDUsIDk5LCAyMTUsIAorICAgIDE2MiwgNzYsIDIxNSwgODEsIDIzNywgMzcsIDI0OCwgMTg1LCAyNDAsIDIzMSwgOTksIDIwOCwgMjI4LCAyNDksIDk2LCAKKyAgICAyMDYsIDUyLCAyNDksIDk2LCA2NCwgMjM3LCAyNCwgMjMzLCA4MywgMjE1LCA5NCwgOTksIDIyMSwgMTA1LCAyNDksIDExMywgCisgICAgMjQyLCAxOTUsIDIzOCwgNDUsIDgwLCAyNDAsIDE5NCwgNTQsIDI0MiwgMjQ2LCAyNDcsIDEzMywgMjQ5LCA4MCwgMywgMjAwLCAKKyAgICA0MiwgNTQsIDI0OSwgODAsIDMsIDI0MCwgMTk0LCA1NCwgMjQ5LCA4MCwgMywgMjM4LCA2MSwgNTQsIDI0OSwgODAsIDMsIAorICAgIDIxNSwgNTYsIDU0LCAyMjEsIDEwNSwgMywgMjAxLCAxMSwgMjQ3LCAxNiwgMywgMTgyLCAyMDUsIDEwNCwgMjYsIDIwMCwgCisgICAgNDIsIDU0LCAyMTEsIDE5OSwgMjE2LCA5LCAyNDMsIDcwLCAyNDgsIDUwLCAyMjEsIDE2MiwgMjM3LCAyOSwgMjQwLCAyNTMsIAorICAgIDIxNywgMzcsIDI0MSwgMiwgMjM5LCAxMDYsIDIzNywgOTcsIDIzNywgOSwgMTc2LCAyMzcsIDk3LCAyMzcsIDksIDIxNiwgCisgICAgMTk2LCAzLCAyNDIsIDE5OCwgMjE2LCAxOTYsIDIzNywgMTgyLCAyMDMsIDIyOCwgMjQ3LCAxNzAsIDIwNiwgMTk3LCAyNDcsIAorICAgIDE3MCwgMjQ3LCAxMzQsIDIyOCwgMTAzLCAyNDcsIDE2LCAzLCAxODIsIDIwNSwgMTAzLCAyNDcsIDE2LCAzLCAxOTEsIDIwNSwgCisgICAgMTAzLCAyNDksIDc3LCAyNDcsIDE1LCAyNDYsIDExNiwgMjE0LCAxOTQsIDIxMiwgMjIxLCAyMTQsIDE5NCwgMjE2LCAxMzMsIAorICAgIDIwOCwgNjgsIDIxMiwgMTYzLCAyMDUsIDk1LCAyMTIsIDE2MywgMjQ4LCAxMDksIDIwNywgMjEsIDIyNSwgMzMsIDIxOCwgCisgICAgMjA3LCAyMTgsIDIwOCwgMywgMjQxLCAxNjUsIDI0MywgMSwgMjQ2LCAxMTAsIDI0OCwgMTEwLCAxNzYsIDI0OCwgMTEwLCAKKyAgICAyMzUsIDY0LCAyNDgsIDExMCwgMjQ4LCAxMjcsIDI0OCwgMTEwLCAyMTcsIDMyLCAyNDgsIDExMCwgMjQ4LCAxMDcsIDIyMCwgCisgICAgMTM2LCAyNDksIDExNywgMjExLCAyMDcsIDIyMiwgNDIsIDIwNiwgMTc2LCAyMTMsIDE4NCwgMjE2LCAxOTQsIDIzNywgMTUyLCAKKyAgICAyMjIsIDIzMCwgMjExLCAyNDgsIDI1MSwgNDgsIDIxNCwgMjE4LCAyNTEsIDIzMiwgMjI0LCA2MiwgMjQ3LCAwLCAyMjIsIAorICAgIDU0LCAyMTYsIDI1MywgMjA1LCAxMTEsIDIyOCwgMTE0LCAyMDUsIDExMSwgMjE2LCAyMDMsIDIzOSwgNzQsIDk5LCAyMjgsIAorICAgIDExMSwgMjM4LCAxNDQsIDIzOCwgMTQ1LCAzLCAxOTEsIDU1LCA1NiwgMjQ2LCAxMTAsIDIyMiwgMTk1LCAzLCAyMjQsIDUyLCAKKyAgICAyMzcsIDUzLCAyNDYsIDExMCwgMjIyLCAxOTUsIDMsIDIxMywgMjIwLCAyMzcsIDUzLCAxNzYsIDIyMiwgMTk1LCAzLCAyMTMsIAorICAgIDIyMCwgMjM3LCA1MywgMTc2LCAyMjIsIDE5NSwgMywgMjI0LCA1MiwgMjM3LCA1MywgMjE1LCA2NCwgMjE1LCA2NSwgMjMzLCAKKyAgICAxMjQsIDIyMCwgNCwgMjIxLCAxMzQsIDIxNSwgMjEzLCAyMjEsIDEzNCwgMjE1LCAyMTQsIDMsIDg3LCA1NSwgMjUwLCAxNTYsIAorICAgIDIyNSwgMjgsIDIwMiwgMjMzLCAyMjEsIDEzMywgMjIxLCAxMzQsIDIxNSwgMjE0LCAyMTcsIDExNiwgMjE4LCAyNDIsIDIyMSwgCisgICAgMTM0LCAyMTUsIDIxMiwgMjUxLCA0OSwgMywgMjQ5LCA2NiwgMjQ3LCAxNjIsIDI0NywgMTYzLCAzLCAyMzcsIDQ2LCAyMDIsIAorICAgIDIzMCwgMjQ3LCAxNjIsIDIwNiwgMTczLCAyMTMsIDIzNiwgMjAyLCAyMjksIDIzNywgOTAsIDIxNCwgMjUwLCAyMTUsIDcxLCAKKyAgICAyMDgsIDg5LCAyMTUsIDMzLCAyNDksIDYsIDIwNCwgMTQ1LCA4NywgMjUwLCAxOTksIDI0NiwgMTEyLCA4NywgMjYsIDk4LCAKKyAgICAxNzYsIDI0NiwgMTU2LCAyNTAsIDE5OSwgMjQ2LCAxMTIsIDg3LCAyNiwgOTgsIDE3NiwgMjQ2LCAxNTYsIDI1MCwgMjAwLCAKKyAgICAzLCA0NCwgMTEyLCAyMTYsIDI0MiwgMjQ2LCAxMTIsIDE5MSwgMjYsIDE4MiwgMTc2LCAyNDYsIDE1NiwgMjUwLCAxOTksIAorICAgIDI1MSwgNDcsIDE5MSwgMjYsIDE4MiwgMTc2LCAyNDYsIDE1NiwgMjUwLCAxOTksIDEyOCwgMjQ4LCA0OSwgOTksIDEyMiwgCisgICAgMjQ4LCA0OSwgOTksIDIwOCwgMjMzLCAzLCAyNDcsIDE1NSwgOTcsIDIwOCwgMjMyLCAyMDgsIDIzMywgMywgMTEyLCAyMDksIAorICAgIDEsIDIwMSwgNzcsIDIwOCwgMjMzLCAzLCAxMjYsIDIwOSwgMSwgMjAxLCA3NiwgMjQ5LCA0OSwgMjM4LCAyMDQsIDIxNSwgCisgICAgMTE4LCAyMjUsIDIzLCAyMjIsIDIwNywgMjM1LCAxMjgsIDIxMywgNDEsIDIyMiwgMjA3LCAyMzUsIDEyOCwgMjI0LCAxMDQsIAorICAgIDMsIDIyOCwgODQsIDIxNiwgNDcsIDI0NiwgMTEwLCAyMjQsIDEwNCwgMywgMjI2LCAyMTQsIDIyNiwgMjE0LCAyMjQsIDEwMywgCisgICAgMTc2LCAyMjQsIDEwMywgMjQ4LCAyMzAsIDI0OCwgMjMxLCAzLCAyNDcsIDE1NSwgOTcsIDI0OCwgMTA4LCAyMjQsIDE2NywgCisgICAgOTksIDIxMywgMjM3LCAyNDcsIDI0MywgMjQ5LCAxMzAsIDMsIDk4LCA1NSwgNTYsIDIzOCwgMTcxLCAzLCA5OCwgNTUsIDU2LCAKKyAgICAyMTcsIDc5LCAzLCAyMzgsIDQzLCAxMzQsIDMsIDQ5LCA1MSwgNTUsIDU2LCAyMDksIDksIDMsIDg3LCA1NSwgNTYsIDIwNSwgCisgICAgMTU4LCAzLCAxODIsIDU1LCA1NiwgMjE4LCAyNDIsIDExMiwgMjAzLCAyNTMsIDIzOCwgMjMwLCA5OSwgMjI2LCAyMTEsIAorICAgIDIwNiwgMTY2LCAyMjgsIDc4LCAxNiwgMzYsIDgsIDYsIDIyNCwgMjM1LCAyMjgsIDc4LCAxNiwgMzYsIDgsIDQsIDIyNCwgCisgICAgMjM1LCAyMjgsIDc4LCAxNiwgMzYsIDIxOCwgOTQsIDIyOCwgNzgsIDE2LCAzNiwgMjA3LCAxMTYsIDIyOCwgNzgsIDE2LCAKKyAgICAzNiwgOCwgMjI0LCAyMzUsIDIzNywgNzcsIDIzOCwgMjA0LCAyMDUsIDE1MywgMjAwLCAyMjUsIDIzNCwgMjA2LCAyMTgsIAorICAgIDc3LCAyNiwgMjQ4LCAxMTUsIDIzMywgMjA1LCAyMTUsIDE0MywgMjIxLCAyMDcsIDIwNiwgMTc0LCAyNDIsIDIxNiwgMjQ5LCAKKyAgICA5NywgMjA5LCAxMDYsIDIxNSwgOTgsIDIwOCwgMTEwLCAzLCAxMDEsIDI0MCwgMTgyLCAyMjcsIDIzNiwgMTYsIDM2LCAyNDgsIAorICAgIDI0MywgMjA1LCA5MywgMjM4LCAxODcsIDYzLCA1MiwgMjQ3LCAyNDMsIDY0LCA1MiwgMjQ3LCAyNDMsIDIyNSwgNzEsIDIxMywgCisgICAgMTcwLCAyNDYsIDE1NSwgMjI1LCA3MSwgMjQ4LCAxMjcsIDI0NiwgMTU1LCAyMjUsIDcxLCAyMTcsIDMyLCAyNDEsIDY0LCAKKyAgICAyMjUsIDcxLCAyNDgsIDEyNywgMjQxLCA2NCwgNCwgMjE3LCAzMiwgMjQxLCA2NCwgNCwgMjQ4LCAxMjcsIDI0MSwgNjQsIAorICAgIDIwMywgMjI3LCAyMTMsIDE3MCwgMjA1LCA5OCwgMjM5LCAxNjYsIDIxMywgMTcwLCAyMDUsIDk4LCAyMDMsIDIyNywgNCwgCisgICAgMjEzLCAxNzAsIDIwNSwgOTgsIDIzOSwgMTY2LCA0LCAyMTMsIDE3MCwgMjA1LCA5OCwgMjI0LCA1NCwgNTEsIDIxMCwgMTAxLCAKKyAgICA2NCwgMjQ2LCAxNTUsIDIwMywgMjI1LCA1MSwgMjEwLCAxMDEsIDY0LCAyNDYsIDE1NSwgNDQsIDI0MiwgMjM1LCAyMTUsIAorICAgIDg0LCAyNDIsIDIzNSwgMjE1LCA4NSwgMywgMjM0LCAyMTIsIDU3LCAyNDIsIDIzNSwgMjE1LCA4NCwgMjE4LCAyMTEsIDQ5LCAKKyAgICAyMTAsIDE3MCwgMywgMTI2LCAyNDAsIDE4MCwgMjE4LCAyMTEsIDUxLCAyMTAsIDE3MCwgMywgMTI2LCAyNDAsIDE4MCwgMTYsIAorICAgIDM2LCAyMjIsIDE0NCwgMjQ3LCAyMiwgNjQsIDgsIDI0MiwgMjM0LCA4MCwgOCwgMjQyLCAyMzQsIDI0NywgNjAsIDI0MiwgCisgICAgMjM0LCAyMTcsIDg3LCA5OSwgMjM5LCAxNjksIDc2LCAyMTYsIDcxLCAyMjcsIDEwMywgMjIxLCA3NCwgMjA3LCAxMTAsIAorICAgIDIyMiwgMzcsIDMsIDIxOSwgMTE0LCAyNDgsIDY1LCAyNDgsIDgzLCA3NiwgMjMzLCAzNSwgMjQ2LCAxMTQsIDIzNywgMTkwLCAKKyAgICAxMTIsIDIxNywgMTMyLCAyNDYsIDExNCwgMjM3LCAxOTAsIDEyMCwgMjE3LCAxMzIsIDI0NiwgMTE0LCAyMzcsIDE5MCwgCisgICAgMTI2LCAyMTcsIDEzMiwgMjQ2LCAxMTQsIDIzNywgMTkwLCAyMzYsIDIyOSwgMjE3LCAxMzIsIDI0NiwgMTE0LCAyMzcsIAorICAgIDE5MCwgMjM3LCA2MSwgMjE3LCAxMzIsIDI0NiwgMTE0LCAyMzcsIDE5MCwgMjA5LCAxMDYsIDIxNywgMTMyLCAyNDYsIDExNCwgCisgICAgMjM3LCAxOTAsIDIxMCwgMTM2LCAyMTcsIDEzMiwgMjQ2LCAxMTQsIDIzNywgMTkwLCAyMzgsIDIzMiwgMjE3LCAxMzIsIAorICAgIDI0NiwgMTE0LCAyMzcsIDE5MCwgMjE5LCAxMTQsIDIxNywgMTMyLCAyNDYsIDExNCwgMjM3LCAxOTAsIDIwNiwgMTY3LCAKKyAgICAyMTcsIDEzMiwgMjQ2LCAxMTQsIDIzNywgMTkwLCAyMzgsIDIwMCwgMjE3LCAxMzIsIDI0NiwgMTE0LCAyMzcsIDE5MCwgCisgICAgMjA0LCAxNjUsIDIxNywgMTMyLCAyNDYsIDExNCwgMjM3LCAxOTAsIDIxNywgNzIsIDI0NiwgMTE0LCAyMzcsIDE5MCwgMjA0LCAKKyAgICAxMzksIDI0NiwgMTE0LCAyMzcsIDE5MCwgMjA2LCAzOSwgMjQ2LCAxMTQsIDIzNywgMTkwLCAyMzYsIDIyNSwgMjQ2LCAxMTQsIAorICAgIDIzNywgMTkwLCAyMzcsIDU5LCAyNDYsIDExNCwgMjM3LCAxOTAsIDIwOSwgMTAyLCAyNDYsIDExNCwgMjM3LCAxOTAsIDIxMCwgCisgICAgMTM0LCAyNDYsIDExNCwgMjM3LCAxOTAsIDIzOCwgMjMxLCAyNDYsIDExNCwgMjM3LCAxOTAsIDIxOSwgMTEyLCAyNDYsIAorICAgIDExNCwgMjM3LCAxOTAsIDIwNiwgMTY1LCAyNDYsIDExNCwgMjM3LCAxOTAsIDIzOCwgMTk4LCAyNDYsIDExNCwgMjM3LCAKKyAgICAxOTAsIDIwNCwgMTYzLCA1MSwgMjA4LCAyMzIsIDUxLCAyMDgsIDIzMywgMywgMTEyLCAyMDksIDEsIDIwMSwgNzcsIDUxLCAKKyAgICAyMDgsIDIzMywgMywgMTI2LCAyMDksIDEsIDIwMSwgNzYsIDI0OCwgMTgsIDI0OCwgMTksIDMsIDIwOSwgMSwgMjAxLCA3NiwgCisgICAgMjEzLCAyNSwgMjQ4LCAyMzAsIDI0OCwgMTEwLCAyNDcsIDE1MywgMjIyLCAxNjcsIDI0NiwgMTEzLCA2MywgMjA5LCA4MSwgCisgICAgMjYsIDI0MiwgMjMzLCAyMTgsIDI0MiwgMjE1LCAxNDksIDIzMywgMTk3LCAyMjIsIDE4MSwgMjI4LCAxMTgsIDI0NywgMjUxLCAKKyAgICAyMDcsIDI0MiwgMjI0LCAyMjgsIDIwOSwgNjksIDIxNywgMzQsIDIwOCwgMTk0LCAyNDEsIDI1MCwgMjA3LCAyMjQsIDIwOCwgCisgICAgMjIxLCAyMDgsIDIyMiwgMjAxLCA2MSwgMjI3LCAxNDgsIDIyMiwgMTgxLCAyNDIsIDExLCA0OSwgMjM0LCAyMDAsIDIwNiwgCisgICAgMTc2LCAyMTMsIDE4NCwgMjA2LCAxNzYsIDIxMywgMTg1LCAzLCAyMTYsIDE5NSwgNTEsIDIzNCwgMjAwLCAyMDYsIDE3NiwgCisgICAgMjEzLCAxODQsIDY0LCAyMDUsIDEzOSwgMjA2LCAxNzUsIDYzLCAyMDUsIDEzOSwgMjA2LCAxNzUsIDIwNiwgMTc2LCAyMTcsIAorICAgIDc5LCAyMDUsIDE1OCwgNzYsIDIyMSwgMTMwLCAyNDYsIDEzNCwgMjIxLCAxMzQsIDIxNSwgMjEzLCAyNDksIDEzMCwgNzYsIAorICAgIDIzOCwgMTQ0LCAyMDgsIDExNSwgMjM4LCAxNDQsIDIzOCwgMTQ1LCAzLCAyMjQsIDE5MywgMjM3LCAxNiwgMjM4LCAxNDQsIAorICAgIDIxNiwgNDgsIDExOSwgMjA4LCAxMTUsIDIzOCwgMTQ0LCAyMjQsIDE2NiwgMjE2LCAxMzIsIDYzLCAyMTQsIDE5NCwgMjI0LCAKKyAgICA1NCwgNDksIDIxNiwgNDYsIDIyNCwgNTQsIDQ5LCAyNDksIDkyLCAyMTYsIDQ3LCAyMjQsIDU0LCA0OSwgMjM2LCAyMzEsIAorICAgIDIxNiwgNDcsIDIyNCwgNTQsIDQ5LCAyMTYsIDE4OSwgMjI0LCA1NCwgNDksIDI0MiwgMjQ5LCA0OSwgMjAwLCAyMTksIDIzNCwgCisgICAgMTk5LCAyMDQsIDE4NSwgMjE3LCA5OSwgMjM0LCAyMDAsIDU0LCAyMTMsIDIyMCwgMjM0LCAyMDAsIDMsIDIzNywgODIsIAorICAgIDIwOCwgMjExLCAyMTMsIDEwNSwgMjEzLCAyMjAsIDIzNCwgMjAwLCAzLCAyMzcsIDgyLCAyMDgsIDIxMSwgMjEzLCAxMDUsIAorICAgIDIwNiwgMzMsIDExNSwgNTQsIDIxMywgMTA1LCAyMDYsIDMzLCAxMjcsIDU0LCAyMTMsIDEwNSwgMjAyLCAyMzIsIDIzNCwgCisgICAgMTk5LCAyMTMsIDEwNSwgMjM0LCAyMDAsIDMsIDEwMSwgMjM3LCA4NywgMjM4LCAzMiwgMjEzLCAyMjAsIDIzNCwgMjAwLCAzLCAKKyAgICAyMTYsIDExMCwgMjQ4LCAyMDYsIDEwMSwgMjYsIDIxMywgMjcsIDIzNywgODEsIDY0LCAxMjcsIDIxNSwgOTYsIDQ5LCAyMzQsIAorICAgIDIwMCwgMjI4LCAxMDMsIDIwOSwgMTczLCA2NCwgNDksIDIxNSwgOTYsIDIyOCwgMTAzLCAyMDksIDE3MywgNjQsIDUxLCAKKyAgICAyMTUsIDk2LCAyMjgsIDEwMywgMjA5LCAxNzMsIDYzLCA0OSwgMjE1LCA5NiwgMjI4LCAxMDMsIDIwOSwgMTczLCA2MywgNTEsIAorICAgIDIxNSwgOTYsIDIyOCwgMTAzLCA2MywgNDksIDIxNSwgOTYsIDI0OSwgMTI3LCAyMjgsIDEwMywgNjMsIDUxLCAyMTUsIDk2LCAKKyAgICAyNDksIDEyNywgMjI4LCAxMDMsIDIwOSwgMTczLCA2NCwgMTE1LCAyMTUsIDk2LCAyMjgsIDEwMywgMjA5LCAxNzMsIDY0LCAKKyAgICAxMjcsIDIxNSwgOTYsIDIyOCwgMTAzLCAyMDksIDE3MywgNjMsIDExNSwgMjE1LCA5NiwgMjI4LCAxMDMsIDIwOSwgMTczLCAKKyAgICA2MywgMTI3LCAyMTUsIDk2LCAyMjgsIDEwMywgNjMsIDExNSwgMjE1LCA5NiwgMjQ5LCAxMjcsIDIyOCwgMTAzLCA2MywgCisgICAgMTI3LCAyMTUsIDk2LCAyNDksIDEyNywgMjI4LCAxMDMsIDYzLCAyMzQsIDEyNywgMjQxLCAxMTAsIDI0MywgNzAsIDIyNiwgCisgICAgMjEzLCAyNiwgMjIxLCA2MCwgMTI2LCAyMjAsIDEyLCAyNDMsIDY5LCAyMTUsIDgsIDIxNSwgMTA0LCAyNDcsIDE3MiwgNjMsIAorICAgIDIzNCwgMTY1LCAyMTAsIDU1LCAyMzcsIDI5LCAyNDAsIDI1MywgNjQsIDIzNCwgMTY1LCAyMTAsIDU1LCAyMzcsIDI5LCAKKyAgICAyNDAsIDI1MywgMjA5LCAyMywgMjEwLCA1NSwgMjM3LCAyOSwgMjQwLCAyNTMsIDIwNiwgMjM1LCAyNDcsIDExNywgMjAxLCAKKyAgICA2LCAyMjYsIDIxMiwgMTEyLCAyNDcsIDI0NCwgMjIxLCA2MCwgMTIwLCAyNDcsIDI0NCwgMjIxLCA2MCwgMTI2LCAyNDcsIAorICAgIDI0NCwgMjIxLCA2MCwgMjA1LCAxMzAsIDQwLCAyMTYsIDksIDI0MywgNzAsIDIzNCwgMTY1LCAyNDAsIDI1MywgMjExLCAKKyAgICAyMDksIDIxNSwgOSwgMjMyLCAyMjUsIDIzNywgMTUyLCAyMzIsIDIyNSwgMjE3LCAzNywgMjQxLCAzLCAyMzIsIDIyNSwgCisgICAgMjQwLCAyMDUsIDMsIDIwNiwgMTI2LCAyNDAsIDIwNSwgMywgMjA2LCAxMjcsIDI2LCAyMTUsIDE5OCwgMjQwLCAyMDUsIDMsIAorICAgIDIxNSwgMTk4LCAyMzYsIDIxNiwgMywgMjE1LCAxOTgsIDIzNiwgMjE2LCAzLCAyMDUsIDIzOCwgMjM2LCAyMTYsIDMsIDI1MSwgCisgICAgODYsIDIwMCwgMTk1LCA2MywgMjM3LCA5LCAyMzcsIDksIDE3NiwgMjM3LCA5LCAyNDcsIDEzNCwgMTI0LCAyNDAsIDIzOCwgCisgICAgMjQ3LCAxMzQsIDIzNywgOTcsIDI0OCwgNzgsIDIzNywgOTcsIDI0NywgMTg1LCAyMzgsIDE4MSwgMjE4LCAyMDksIDIzOCwgCisgICAgMTgxLCAyMTgsIDIxMCwgMjE2LCAxOTUsIDIzOCwgMTgxLCAyMTgsIDIxMCwgMjE2LCAyMDEsIDIxOCwgMjA5LCAyMTgsIAorICAgIDIxMCwgMjE2LCAxOTUsIDIxOCwgMjEwLCAyMTYsIDIwMSwgMjM4LCAxODEsIDI0MCwgMjA0LCAyMzgsIDE4MSwgMjE2LCAKKyAgICAxOTUsIDIzOCwgMTgxLCAyMTYsIDE5MywgMjQwLCAyMDQsIDIxNiwgMTk1LCAyMTYsIDE5MywgMjAxLCA4NywgMjA4LCAyMTgsIAorICAgIDIxOCwgMjEwLCAyMTYsIDIwMSwgMjA4LCAyMTgsIDI0NywgMTcxLCAyMTYsIDIwMSwgMjQxLCAxMTAsIDIwMSwgMTUsIDIyMSwgCisgICAgMTU5LCAyMjIsIDEyMCwgMjE2LCAyNDQsIDI0NiwgMTEyLCA1MSwgMjYsIDQ5LCAyMTAsIDE3MCwgMjUwLCAxOTksIDI0NywgCisgICAgMTU1LCAyMDAsIDE5NSwgMjI4LCAxMDksIDIzNywgMywgMjA5LCA5MCwgOTksIDI0MSwgMTY0LCAyMzcsIDMsIDIwOSwgOTAsIAorICAgIDk5LCAyNDMsIDcxLCA0MCwgMjI2LCAyMTQsIDIxMiwgMjQ0LCAyMjAsIDQsIDIxNiwgMTk2LCAzLCA0NCwgMjA2LCAxMjYsIAorICAgIDIwOCwgODAsIDI0NywgMTUsIDI0MiwgNDEsIDIyNiwgOTUsIDIyNCwgMTYwLCAyMDgsIDIzMSwgMjM0LCAxMzcsIDIyOCwgCisgICAgMTE4LCAyMDksIDE1NSwgMTI2LCAyMTMsIDE5NSwgNTYsIDEyNiwgMjEzLCAxOTUsIDU3LCAxMjYsIDIxMywgMTk1LCAyMjUsIAorICAgIDI4LCAxMjYsIDIxMywgMTk1LCAyMTMsIDQ2LCA0OSwgMjA4LCAyMjgsIDI0OCwgMzUsIDUxLCAyMDgsIDIyOCwgMjQ4LCAzNSwgCisgICAgMTIwLCAyMDgsIDIyOCwgMjQ4LCAzNCwgMTI2LCAyMDgsIDIyOCwgMjQ4LCAzNCwgNDksIDIwNiwgNTIsIDI0OCwgMzUsIDUxLCAKKyAgICAyMDYsIDUyLCAyNDgsIDM1LCA0OSwgMjUxLCA3MywgMjQ4LCAzNSwgNTEsIDI1MSwgNzMsIDI0OCwgMzUsIDIyMSwgODYsIAorICAgIDI0OCwgMzUsIDIyNCwgMTk0LCAyMjEsIDg2LCAyNDgsIDM1LCAyMjQsIDE5NCwgMjIxLCA4NSwgMjQ5LCA5NCwgMTAwLCAzLCAKKyAgICAyNDksIDkzLCAyNDksIDk0LCAxMzUsIDIwMCwgMTk1LCAyNDksIDk0LCAxMDAsIDMsIDEzNSwgMjAwLCAxOTUsIDI0OSwgOTQsIAorICAgIDI3LCAxMzUsIDIwMCwgMTk1LCAyNDksIDk0LCAxMDAsIDMsIDI3LCAxMzUsIDIwMCwgMTk1LCAxNjIsIDI0NywgNywgODEsIAorICAgIDI0OSwgOTQsIDEwMCwgMywgMjcsIDI0NywgNiwgMjAwLCAyMzMsIDIyMiwgMTY0LCAyMjEsIDY1LCAyMzYsIDE4NCwgMjA1LCAKKyAgICAxODAsIDIwNSwgMTM1LCAyMDgsIDEwMSwgNzYsIDIyNCwgMjA4LCAyMDksIDE1NiwgNzYsIDIyNywgMjM3LCAyMjEsIDQ2LCAKKyAgICAyMzUsIDYxLCAyMzcsIDE4OSwgMjM1LCA2MSwgMjM3LCAxOTAsIDMsIDIwOSwgNDcsIDIzOCwgMTUsIDIzNywgMTkwLCAzLCAKKyAgICAyMDYsIDE5MywgNzYsIDIyNywgMTUwLCAyMDksIDQ3LCAyMzcsIDE5MCwgMywgMTc2LCAyMjEsIDU4LCAyMDksIDQ3LCAyMzcsIAorICAgIDE5MCwgMywgMTc2LCAyMjEsIDU5LCAyNiwgMjA5LCA0NywgMjM4LCAxNSwgMjA5LCA0NywgMjM3LCAxOTAsIDMsIDE3NiwgCisgICAgMjIxLCA1OSwgMjYsIDI0NiwgODMsIDIwNywgMTgwLCAyMDksIDQ3LCAyMzcsIDE5MCwgMywgMTc2LCAyMjEsIDU5LCAyNiwgCisgICAgMjA2LCAwLCAyMzgsIDE1LCAyMDksIDQ3LCAyMzcsIDE5MCwgMywgMjM0LCAyMTEsIDIwOSwgNDcsIDIzNywgMTkwLCAzLCAKKyAgICAyMzMsIDEyMywgMjAxLCA4LCAyMzcsIDE4OSwgMjA5LCA0NywgMjM3LCAxOTAsIDMsIDIwOSwgNDcsIDIzOCwgMTUsIDIzNywgCisgICAgMTkwLCAyMTEsIDI0MCwgMjQxLCAxNDQsIDIzNywgMSwgMjEzLCAxNDUsIDIzNywgMTg5LCAyMDksIDQ3LCAyMzcsIDE5MCwgCisgICAgMywgMjM0LCAxMjYsIDIzOCwgMTUsIDIwOSwgNDcsIDIzNywgMTkwLCAzLCAyMDcsIDIyNCwgMjA5LCA0NiwgMjM3LCAxODksIAorICAgIDIyMCwgMTAsIDIzNywgMTg5LCAyMzgsIDM0LCAyMzcsIDE4OSwgMjA0LCAzLCAyMzcsIDE4OSwgMjM3LCAxOTAsIDMsIDI0NiwgCisgICAgODMsIDIwNywgMTgwLCAyMTYsIDM5LCAyMzcsIDE4OSwgMjQzLCA2MiwgMjM3LCAxODksIDI0MywgNjMsIDIzNywgMTg5LCAKKyAgICAyMjYsIDEyOCwgMjM3LCAxODksIDIzNywgMTkwLCAyMDYsIDM2LCAzNSwgMjI2LCAxMjksIDIyNiwgMTI4LCAyMzcsIDE5MCwgCisgICAgMywgMjA5LCA0NywgMjM4LCAxNSwgMjI2LCAxMjgsIDIzNywgMTkwLCAzLCAyNDYsIDExMCwgMjM4LCAxNSwgMjM3LCAxOTAsIAorICAgIDMsIDIwOCwgMzEsIDIwNSwgMTYzLCAyMzcsIDE5MCwgMywgMjA4LCAzMSwgMjA1LCAxNjQsIDI2LCAyMDEsIDgsIDIzOCwgCisgICAgMjIsIDIzNywgMTkwLCAzLCAyMDgsIDMxLCAyMDUsIDE2NCwgMjYsIDIwNiwgMCwgMjM4LCAxNSwgMjQxLCA0LCAyMzcsIAorICAgIDE4OSwgMjAwLCAyMzIsIDIzNywgMTg5LCAyNTEsIDY3LCAyMzcsIDE4OSwgMjE1LCA1NSwgMjM3LCAxODksIDI0MiwgMjE4LCAKKyAgICAyMzcsIDE4OSwgMjE2LCAxMywgMjM3LCAxODksIDIzNywgMTkwLCAzLCAyMjQsIDc3LCA3NiwgMjA1LCA3NSwgMjQxLCA0LCAKKyAgICAyNDcsIDI0NywgMjEzLCAxNDUsIDIzNywgMTg5LCAyMzYsIDE5NSwgMjM3LCAxOTAsIDMsIDE3NiwgMjIxLCA1OCwgMjUxLCAKKyAgICA2NSwgMjM3LCAxODksIDIzNywgMTQ1LCAyMzcsIDE4OSwgMjAxLCA2MiwgMjM3LCAxODksIDIwOSwgNzAsIDIzNywgMTg5LCAKKyAgICAyMDUsIDIxOCwgMjM3LCAxODksIDIzNSwgNjIsIDIzNywgMTg5LCAyMjQsIDYzLCAyNDIsIDIxOCwgMjM3LCAxODksIDIzNywgCisgICAgMTkwLCAzLCAxNzYsIDIyMSwgNTgsIDIzMywgNzIsIDIzNywgMTg5LCAyMzcsIDE5MCwgMywgMTc2LCAyMjEsIDU5LCAyNiwgCisgICAgMjQ2LCA4MywgMjA3LCAxODAsIDIzNywgMTkwLCAyMTEsIDIxMSwgMjI4LCAxMTgsIDIzNywgMTQ2LCAyNTAsIDE2MiwgMjM3LCAKKyAgICAxODksIDIzNywgMjEsIDIzNywgMTg5LCAyMDksIDcxLCAyMzcsIDE4OSwgMjQwLCAyMzEsIDIzNywgMTg5LCAyMzcsIDE5MCwgCisgICAgMjAxLCAzLCAyMjEsIDU4LCAyMzcsIDE5MCwgMywgMjIyLCA2OCwgMjIyLCAxMzIsIDIzNSwgNjEsIDI0NywgMTEyLCAyMzcsIAorICAgIDE5MCwgMywgMjA5LCA0NywgMjM4LCAxNSwgMjQ3LCAxMTIsIDIzNywgMTkwLCAzLCAyMDYsIDE5MywgNzYsIDIyNywgMTUwLCAKKyAgICAyMDksIDQ3LCAyNDcsIDExMiwgMjM3LCAxOTAsIDMsIDE3NiwgMjIxLCA1OCwgMjA5LCA0NywgMjQ3LCAxMTIsIDIzNywgCisgICAgMTkwLCAzLCAyMzQsIDEyNiwgMjM4LCAxNSwgMjQ3LCAxMTIsIDIzNywgMTkwLCAzLCAyMDAsIDIxNywgMjA5LCA0OCwgMjI2LCAKKyAgICAxMjgsIDI0NywgMTEyLCAyMzcsIDE5MCwgMywgMjQ2LCAxMTAsIDIzOCwgMTUsIDIxNSwgNTUsIDI0NywgMTEyLCAyMzcsIAorICAgIDE4OSwgMjQyLCAyMTgsIDI0NywgMTEyLCAyMzcsIDE4OSwgMjAxLCA2MiwgMjQ3LCAxMTIsIDIzNywgMTg5LCAyMDksIDY0LCAKKyAgICAyMzYsIDE5NSwgMjM3LCAxODksIDIwOSwgNjQsIDIwOSwgNDcsIDIzNywgMTg5LCAyMDMsIDIyMiwgMjM3LCAxODksIDIzNywgCisgICAgMTkwLCAzLCAyMTIsIDI0MiwgMjM4LCAxNSwgMjM3LCAxOTAsIDMsIDIxOCwgMjQyLCAyMzUsIDEwNCwgMjM1LCAyNDAsIAorICAgIDIzNywgMTkwLCAzLCAyMTcsIDk5LCAyMzUsIDI0MCwgMjE2LCAxMSwgMjQ4LCA4NCwgMjQxLCAxNTksIDIxMSwgMTg5LCAKKyAgICAyMjEsIDEwMCwgMjM0LCAxMjksIDIyMSwgMTAwLCAyMDgsIDIzNCwgMjIxLCAxMDAsIDIzNCwgMTY3LCAyMTYsIDExLCAyMTMsIAorICAgIDIxOSwgMTEyLCAyMzQsIDE5OSwgMjE2LCAxMSwgMjEzLCAyMTksIDI0OCwgOTYsIDIzNCwgMTc1LCAyMjgsIDExOCwgMjQ3LCAKKyAgICA2MiwgMjE2LCAxMSwgMjM2LCAxOTQsIDIxNiwgMTEsIDMsIDIxNSwgNTUsIDIzNywgMTg5LCAyMTYsIDExLCAzLCAyMzcsIAorICAgIDEwLCAyMzQsIDE3NCwgMTU3LCAyMDEsIDQ4LCAyMTUsIDk2LCAyMjUsIDM1LCAyMDgsIDI1NCwgMjAxLCA0OCwgMjE1LCA5NiwgCisgICAgMjI1LCAzNSwgMTU3LCAyMzksIDE0LCAyMTUsIDk2LCAyMjUsIDM1LCAyMDgsIDI1NCwgMjM5LCAxNCwgMjE1LCA5NiwgMjI1LCAKKyAgICAzNSwgMjA0LCAxODUsIDE1NywgMjAxLCA0OCwgMjE1LCA5NiwgMjI1LCAzNSwgMjA0LCAxODUsIDIwOCwgMjU0LCAyMDEsIAorICAgIDQ4LCAyMTUsIDk2LCAyMjUsIDM1LCAyMDQsIDE4NSwgMTU3LCAyMzksIDE0LCAyMTUsIDk2LCAyMjUsIDM1LCAyMDQsIDE4NSwgCisgICAgMjA4LCAyNTQsIDIzOSwgMTQsIDIxNSwgOTYsIDIyNSwgMzUsIDE1NywgMjAxLCA0OCwgMjE1LCA5NiwgMjAyLCAyMTYsIAorICAgIDIyNSwgMzUsIDIwOCwgMjU0LCAyMDEsIDQ4LCAyMTUsIDk2LCAyMDIsIDIxNiwgMjI1LCAzNSwgMTU3LCAyMzksIDE0LCAKKyAgICAyMTUsIDk2LCAyMDIsIDIxNiwgMjI1LCAzNSwgMjA4LCAyNTQsIDIzOSwgMTQsIDIxNSwgOTYsIDIwMiwgMjE2LCAyMjUsIAorICAgIDM1LCA4MCwgMTU3LCAyMDEsIDQ4LCAyMTUsIDk2LCAyMDIsIDIxNiwgMjI1LCAzNSwgODAsIDIwOCwgMjU0LCAyMDEsIDQ4LCAKKyAgICAyMTUsIDk2LCAyMDIsIDIxNiwgMjI1LCAzNSwgODAsIDE1NywgMjM5LCAxNCwgMjE1LCA5NiwgMjAyLCAyMTYsIDIyNSwgMzUsIAorICAgIDgwLCAyMDgsIDI1NCwgMjM5LCAxNCwgMjE1LCA5NiwgMjAyLCAyMTYsIDIyNSwgMzUsIDE1NywgMjAxLCA0OCwgMjE1LCA5NiwgCisgICAgMjQ4LCAzMiwgMjA4LCAyNTQsIDIwMSwgNDgsIDIxNSwgOTYsIDI0OCwgMzIsIDE1NywgMjM5LCAxNCwgMjE1LCA5NiwgMjQ4LCAKKyAgICAzMiwgMjA4LCAyNTQsIDIzOSwgMTQsIDIxNSwgOTYsIDI0OCwgMzIsIDgwLCAxNTcsIDIwMSwgNDgsIDIxNSwgOTYsIDI0OCwgCisgICAgMzIsIDgwLCAyMDgsIDI1NCwgMjAxLCA0OCwgMjE1LCA5NiwgMjQ4LCAzMiwgODAsIDE1NywgMjM5LCAxNCwgMjE1LCA5NiwgCisgICAgMjQ4LCAzMiwgODAsIDIwOCwgMjU0LCAyMzksIDE0LCAyMTUsIDk2LCAyNDgsIDMyLCAyMzMsIDE5NiwgMjE0LCA3MiwgNTIsIAorICAgIDIxNywgMjEsIDIzMywgMTk2LCAyMTQsIDcyLCA1MiwgMjE3LCAyMiwgMjI4LCAxMTgsIDYzLCAyMDgsIDE5MywgMjA5LCAxOCwgCisgICAgMjE0LCA3MiwgNTIsIDIxNywgMjEsIDIwOSwgMTgsIDIxNCwgNzIsIDUyLCAyMTcsIDIyLCAyMjgsIDExOCwgNjMsIDIwOCwgCisgICAgMTkzLCA5OCwgMjEyLCAyNDgsIDE4MiwgMjEyLCAyNDgsIDg3LCAyMTIsIDI0OCwgMTkxLCAyMTIsIDI0OCwgMTM1LCAzMywgCisgICAgMjM4LCA4MiwgMjE3LCAyMSwgODAsIDEzNSwgMzMsIDIzOCwgODIsIDIxNywgMjEsIDMzLCAxNzYsIDIzOCwgODIsIDIxNywgCisgICAgMjEsIDgwLCAzMywgMTc2LCAyMzgsIDgyLCAyMTcsIDIxLCA4MCwgMjUxLCA5MCwgMjE3LCAyMSwgMjA3LCAxODMsIDI1MSwgCisgICAgOTAsIDIxNywgMjEsIDQzLCA4MCwgNTMsIDIwNCwgMTg1LCAyNDYsIDcxLCAyMTQsIDYzLCAxMzQsIDIxNywgMjEsIDQzLCAKKyAgICA4MCwgNTMsIDI0NiwgNzEsIDIxNCwgNjMsIDEzNCwgMjE3LCAyMSwgNDMsIDgwLCAxMjgsIDUzLCAyNDYsIDcxLCAyMTQsIAorICAgIDYzLCAxMzQsIDIxNywgMjEsIDgwLCAyMjgsIDU5LCAyMTcsIDIxLCA0MywgMjI4LCA1OSwgMjE3LCAyMSwgODAsIDQzLCAKKyAgICAyMjgsIDU5LCAyMTcsIDIxLCAyMDIsIDI0NiwgODAsIDIwOSwgMTYsIDIwMiwgMjQ2LCA4MCwgMjEzLCAxMDYsIDIwOSwgMTYsIAorICAgIDI0NywgNSwgMjQ4LCAxMjEsIDIxMywgMTA2LCAyNDcsIDUsIDI0OCwgMTIxLCAyMTIsIDI0OCwgMjM0LCAxMTAsIDIwOCwgCisgICAgOTYsIDIyNCwgMTAxLCAyMTMsIDIyNSwgMjQ3LCAxMzUsIDIzNCwgNTUsIDIwNSwgMTIzLCAyMzQsIDU1LCAyMDUsIDEyNCwgCisgICAgMywgMjQ4LCAyMSwgMjE4LCAyMTYsIDIwNSwgMTIzLCAyMjIsIDEzLCAxNjIsIDIxMywgMjI2LCAyMDgsIDEwMiwgMjA1LCAKKyAgICAxMjEsIDIwNSwgMTIyLCAyNDcsIDEzNSwgMjQ3LCAyNTIsIDIxNywgNzUsIDI0NywgMjUyLCAyMDUsIDcxLCAyNDcsIDI1MywgCisgICAgMjA4LCA3NiwgMjIxLCAxNjMsIDI1MSwgOTQsIDIzNywgNzgsIDIzOCwgMTY0LCAyMTUsIDg4LCAyNDcsIDEzNSwgMjE3LCAKKyAgICA3NSwgMjE1LCA4OCwgMjQ3LCAxMzUsIDIwNiwgMjExLCAyMTcsIDc1LCAyMDYsIDIxMSwgMjUwLCAxMjcsIDIxNywgNzUsIAorICAgIDI1MCwgMTI3LCAyMTMsIDE3NywgMjAzLCA1MSwgMjQxLCAxNDAsIDIwNSwgNjIsIDI1MCwgMTk0LCAyMjQsIDY4LCAyMDUsIAorICAgIDEyOSwgMjIxLCA5NCwgMjIxLCA2NCwgMjEzLCAyMjQsIDIwNywgMTk2LCAyMTMsIDIyNCwgMjIxLCA2NCwgMjQ3LCAxODQsIAorICAgIDI1MSwgMjA3LCAyMDUsIDEyMCwgMjEwLCAxNywgMjEyLCAyMTgsIDIwOCwgMjI2LCAyMzMsIDE3NywgMjA1LCAxMjcsIDIyNCwgCisgICAgMTk2LCA4MywgMjA1LCAxMjcsIDIyNCwgMTk2LCAyNDMsIDQ5LCA1NCwgMjE1LCA4OCwgMjQ3LCAxMTksIDIxMywgOTksIAorICAgIDIyNCwgMTk2LCAyMDUsIDk1LCAyMzcsIDU0LCAyMTcsIDc5LCAyMTUsIDY2LCAyNDAsIDE4NSwgMjE4LCAyNDIsIDIzOCwgCisgICAgMTUwLCA1NCwgMjA5LCA0NSwgOTksIDIxOCwgMjQyLCAyMDksIDQ1LCA5OSwgMjE0LCAxOTMsIDIyNCwgMTQ5LCAyMjgsIAorICAgIDExOCwgMjI4LCA5LCAyMTUsIDEzNCwgOTksIDI0MCwgMjEyLCAyMTgsIDIxNSwgMjI0LCAxNDksIDk5LCAyMTUsIDYwLCAKKyAgICAyMDEsIDgzLCA5OSwgMjE4LCAyMzEsIDIwMSwgODMsIDk5LCAyNDgsIDE4NCwgMjE4LCAyNDIsIDI0OCwgMTgzLCAyNDgsIAorICAgIDE4MiwgMjIxLCA2NCwgMjQ4LCAxODIsIDIxNiwgNjMsIDIxOCwgMjQyLCAyMTYsIDYyLCAyNDYsIDIyNiwgMjQyLCAyMjcsIAorICAgIDIyMiwgMzYsIDk5LCAyMDAsIDI0NywgOTksIDIxMywgMTE1LCAyNDksIDEzMiwgOTksIDIwNSwgMTgxLCAyMDEsIDgzLCAKKyAgICAyNDYsIDEwNywgMjA5LCAyMzEsIDI0OSwgNTIsIDI0OSwgNTAsIDIxNiwgOTYsIDI0MywgMzMsIDI0MiwgMTgxLCAyNDksIAorICAgIDExMCwgMjQ2LCAxMzUsIDQ5LCAyMjQsIDMyLCAyMDUsIDk5LCAzLCAyMTIsIDIxOSwgMjQzLCAxNCwgMjE0LCAyNTMsIDU0LCAKKyAgICA0NCwgMjI4LCA5MiwgMjA4LCAyNTUsIDI0OCwgNzUsIDk5LCAyMzUsIDEzOSwgOTksIDI0MywgNywgMjYsIDIyNSwgODEsIAorICAgIDIwOSwgNzEsIDI1MSwgMjQ4LCAyMDksIDI1MywgMjQ5LCAxMDksIDI0OCwgMjI5LCAyNDgsIDIzMCwgMjQ4LCAyNTMsIDIxNSwgCisgICAgMTM0LCA3NiwgMjAwLCAyMzEsIDIxNywgMTI5LCA1NCwgMjA5LCAyNTMsIDIwNSwgNzIsIDIzNCwgMjA3LCAyNiwgMjAwLCAKKyAgICAyMjUsIDIxMCwgMzAsIDIxNywgMTA0LCAyMzksIDE0MiwgMjIxLCA2OCwgMjEzLCAyMjUsIDIwNSwgMTMxLCAyMjEsIDcwLCAKKyAgICAyNDgsIDEyMCwgMjAzLCAyMjcsIDIyMSwgMTc0LCAyNTEsIDE2NCwgMjAzLCAyMjcsIDI1MSwgMTY0LCAyMDMsIDIyNywgNCwgCisgICAgMjUxLCAxNjQsIDQsIDI1MSwgMTY0LCAyMTgsIDIyMCwgMjUxLCAxNjQsIDI1MSwgMTY1LCAyNDEsIDEyNCwgMjUxLCAxNjUsIAorICAgIDI1MCwgMjA1LCAyMTEsIDI0NywgMjE3LCA3NSwgMjM3LCA3OCwgMjM4LCAxNjQsIDI0MSwgNTQsIDIyNCwgMTAxLCAyMTYsIAorICAgIDk5LCAyMTAsIDE3LCAyMTEsIDIxNSwgMjIxLCA3MCwgMjExLCAyMTUsIDI0NywgMTQ2LCAxMzksIDE2LCAzNiwgMjE0LCA2OCwgCisgICAgMTM5LCAxNiwgMzYsIDI1MSwgMTY2LCAxMzksIDE2LCAzNiwgMjM3LCA3NywgMTM5LCAxNiwgMzYsIDIzOSwgMTcsIDEzOSwgCisgICAgMTYsIDM2LCAyMDEsIDgyLCAxMzksIDE2LCAzNiwgMjUwLCAyNTUsIDEzOSwgMTYsIDM2LCAyNTEsIDAsIDIxMywgMTY0LCAKKyAgICAxMzksIDE2LCAzNiwgMjUxLCAwLCAyMTMsIDE2MywgMTM5LCAxNiwgMzYsIDI1MSwgMCwgMjAyLCAxOTksIDEzOSwgMTYsIAorICAgIDM2LCAyNTEsIDAsIDIwMiwgMTk4LCAxMzksIDE2LCAzNiwgMjAyLCAyMTMsIDEzOSwgMTYsIDM2LCAyMDIsIDIxMiwgMTM5LCAKKyAgICAxNiwgMzYsIDIwMiwgMjExLCAxMzksIDE2LCAzNiwgMjA3LCAyMzUsIDEzOSwgMTYsIDM2LCAyMTUsIDIyMSwgMjA3LCAyMzUsIAorICAgIDEzOSwgMTYsIDM2LCA2MywgMjA3LCAyMzUsIDEzOSwgMTYsIDM2LCAyMjIsIDM1LCAyMDgsIDEwLCAxMzksIDE2LCAzNiwgCisgICAgMjIyLCAzNSwgMjA4LCA5LCAxMzksIDE2LCAzNiwgMjIyLCAzNSwgMjA4LCA4LCAxMzksIDE2LCAzNiwgMjQ2LCAxNTgsIAorICAgIDEzOSwgMTYsIDM2LCAyMTIsIDI3LCAxMzksIDE2LCAzNiwgMjE5LCAxMDEsIDEzOSwgMTYsIDM2LCAyMDIsIDE5NywgMTM5LCAKKyAgICAxNiwgMzYsIDIwMiwgMTk2LCAxMzksIDE2LCAzNiwgMjEyLCAyNDksIDIxMiwgMjcsIDEzOSwgMTYsIDM2LCAyMTIsIDI0OSwgCisgICAgMjEyLCAyNiwgMTM5LCAxNiwgMzYsIDIzNSwgMTA4LCAxMzksIDE2LCAzNiwgMjA5LCAxNTIsIDEzOSwgMTYsIDM2LCAyMjgsIAorICAgIDMyLCAyMTcsIDI4LCAxMzksIDE2LCAzNiwgMjI4LCAzMiwgMjE3LCAyNywgMTM5LCAxNiwgMzYsIDI0MiwgMjM5LCA3NiwgCisgICAgMjI4LCAzMSwgMTM5LCAxNiwgMzYsIDIxMywgMTYwLCA3NiwgMjI4LCAzMSwgMTM5LCAxNiwgMzYsIDI0MywgMjQsIDIxNywgCisgICAgMjgsIDEzOSwgMTYsIDM2LCAyMjgsIDMwLCAyMTcsIDI4LCAxMzksIDE2LCAzNiwgMjA4LCAxMSwgNzYsIDI0MywgMjMsIAorICAgIDEzOSwgMTYsIDM2LCAyNDIsIDIzOSwgNzYsIDI0MywgMjMsIDEzOSwgMTYsIDM2LCAyNDIsIDIzOSwgNzYsIDI0MywgMjIsIAorICAgIDEzOSwgMTYsIDM2LCAyNDMsIDI0LCAyNTEsIDQxLCAxMzksIDE2LCAzNiwgMjEyLCAyOCwgNzYsIDI0MywgMjQsIDI1MSwgCisgICAgNDEsIDEzOSwgMTYsIDM2LCAyMDgsIDExLCA3NiwgMjEyLCAyOCwgNzYsIDI0MywgMjMsIDEzOSwgMTYsIDM2LCAyMDMsIDQ2LCAKKyAgICAxMzksIDE2LCAzNiwgMjA1LCAyMzEsIDIxNywgMjgsIDEzOSwgMTYsIDM2LCAyMjUsIDM5LCAyMTcsIDI4LCAxMzksIDE2LCAKKyAgICAzNiwgMjUxLCA0MCwgMjE3LCAyOCwgMTM5LCAxNiwgMzYsIDIwOCwgMTEsIDc2LCAyNTEsIDM5LCAxMzksIDE2LCAzNiwgCisgICAgMjEyLCAyOCwgNzYsIDI1MSwgMzksIDEzOSwgMTYsIDM2LCAyMDgsIDExLCA3NiwgMjEyLCAyOCwgNzYsIDI1MSwgMzksIAorICAgIDEzOSwgMTYsIDM2LCAyMDIsIDIxNCwgNzYsIDI1MSwgMzksIDEzOSwgMTYsIDM2LCAyMTMsIDE2MCwgNzYsIDI1MSwgMzksIAorICAgIDEzOSwgMTYsIDM2LCAyMTMsIDE2MCwgNzYsIDI1MSwgMzgsIDEzOSwgMTYsIDM2LCAyMTMsIDE1OSwgMTM5LCAxNiwgMzYsIAorICAgIDIxMywgMTU4LCAxMzksIDE2LCAzNiwgMjEzLCAxNTcsIDEzOSwgMTYsIDM2LCAyMTMsIDE1NiwgMTM5LCAxNiwgMzYsIDI1MSwgCisgICAgMTI3LCAxMzksIDE2LCAzNiwgMjUxLCAxMjYsIDEzOSwgMTYsIDM2LCAyMjIsIDE1NSwgMTM5LCAxNiwgMzYsIDIxMiwgMzQsIAorICAgIDEzOSwgMTYsIDM2LCAyNTAsIDE5OCwgMTM5LCAxNiwgMzYsIDIxMywgMTg3LCAxMzksIDE2LCAzNiwgMjEzLCAxODYsIDEzOSwgCisgICAgMTYsIDM2LCAyNTAsIDEzMCwgMTM5LCAxNiwgMzYsIDI0OCwgMTUzLCAyMTcsIDI4LCAxMzksIDE2LCAzNiwgMjA2LCAyMzAsIAorICAgIDEzOSwgMTYsIDM2LCAyMDYsIDIyOSwgMTM5LCAxNiwgMzYsIDIxNCwgNzQsIDIyNCwgMTg1LCAxMzksIDE2LCAzNiwgMjQ4LCAKKyAgICAxMDEsIDEzOSwgMTYsIDM2LCAyNDgsIDEwMCwgMTM5LCAxNiwgMzYsIDI0OCwgOTksIDEzOSwgMTYsIDM2LCAyNTEsIDEwMywgCisgICAgMTM5LCAxNiwgMzYsIDIxNywgMTAzLCAxMzksIDE2LCAzNiwgMjA4LCAyMTQsIDEzOSwgMTYsIDM2LCAyMDUsIDIyOSwgMTM5LCAKKyAgICAxNiwgMzYsIDIzNSwgMzAsIDEzOSwgMTYsIDM2LCAyMDEsIDcwLCAxMzksIDE2LCAzNiwgMjE1LCA1NCwgMTM5LCAxNiwgMzYsIAorICAgIDI0NywgMTY3LCAxMzksIDE2LCAzNiwgMjA0LCAxNzcsIDEzOSwgMTYsIDM2LCAyNDcsIDEzNywgMjIxLCA3NSwgMTM5LCAxNiwgCisgICAgMzYsIDIxMSwgMjI1LCA3NiwgMjI3LCAxNTIsIDEzOSwgMTYsIDM2LCAyNDcsIDE4MSwgMTM5LCAxNiwgMzYsIDIwNSwgOTIsIAorICAgIDEzOSwgMTYsIDM2LCAyMDgsIDEwNywgMjA1LCA5MiwgMTM5LCAxNiwgMzYsIDIyNCwgMTAwLCAxMzksIDE2LCAzNiwgMjA5LCAKKyAgICAyNywgMTM5LCAxNiwgMzYsIDIwMywgMjA2LCAxMzksIDE2LCAzNiwgMjMzLCAxMjEsIDIzOSwgMTIxLCAxMzksIDE2LCAzNiwgCisgICAgMjUwLCAxNzYsIDEzOSwgMTYsIDM2LCAyMTUsIDYyLCAyNTAsIDE3NiwgMTM5LCAxNiwgMzYsIDI0OCwgNTMsIDEzOSwgMTYsIAorICAgIDM2LCAyMTUsIDUzLCAyNDgsIDUzLCAxMzksIDE2LCAzNiwgMjUxLCAxMDAsIDEzOSwgMTYsIDM2LCAyMDgsIDYzLCAyMDcsIAorICAgIDIxNiwgMjA4LCA2MiwgMTM5LCAxNiwgMzYsIDIwOCwgNjMsIDIwNywgMjE2LCAyMDgsIDYxLCAxMzksIDE2LCAzNiwgMjA4LCAKKyAgICA3LCAxMzksIDE2LCAzNiwgMjE1LCAyNiwgMTM5LCAxNiwgMzYsIDI0MCwgMjQ4LCAxMzksIDE2LCAzNiwgMjQwLCAyNTAsIAorICAgIDEzOSwgMTYsIDM2LCAyNDAsIDI0OSwgMTM5LCAxNiwgMzYsIDIxNCwgMjAyLCAxMzksIDE2LCAzNiwgMjE0LCAxOTEsIDEzOSwgCisgICAgMTYsIDM2LCAyNDIsIDIyNSwgMTM5LCAxNiwgMzYsIDI0MiwgMjI0LCAxMzksIDE2LCAzNiwgMjQyLCAyMjMsIDEzOSwgMTYsIAorICAgIDM2LCAyNDIsIDIyMiwgMTM5LCAxNiwgMzYsIDI0MiwgMjIxLCAxMzksIDE2LCAzNiwgMjUxLCAxNDEsIDEzOSwgMTYsIDM2LCAKKyAgICAyNDksIDUzLCA3NiwgMjIyLCAxMzcsIDEzOSwgMTYsIDM2LCAyNDksIDUzLCA3NiwgMjAzLCA3OCwgMTM5LCAxNiwgMzYsIAorICAgIDIxMywgMTEzLCAxMzksIDE2LCAzNiwgMjMzLCAxMTMsIDEzOSwgMTYsIDM2LCAyMTksIDEyOSwgMTM5LCAxNiwgMzYsIDI0MSwgCisgICAgMjMyLCAxMzksIDE2LCAzNiwgMjIxLCA4OSwgMTM5LCAxNiwgMzYsIDE2NywgMjM5LCAxNTYsIDEzOSwgMTYsIDM2LCAxNjcsIAorICAgIDIxNywgMSwgNjMsIDIyNSwgMjMsIDIyOCwgMTUsIDUxLCAyMDUsIDk4LCA2MywgMjAzLCAyMjcsIDIyOCwgMTUsIDUxLCAKKyAgICAyMDUsIDk4LCA2MywgMjEzLCA0MSwgMjI4LCAxNSwgNTEsIDIwNSwgOTgsIDYzLCAyMzksIDE2NiwgMjI4LCAxNSwgNTEsIAorICAgIDIwNSwgOTgsIDYzLCAyMDksIDY0LCA0LCAyNDYsIDE1NSwgMjIyLCA2NiwgMjcsIDY0LCAyNDYsIDE1NSwgMjcsIDY0LCAKKyAgICAyNDYsIDE1NSwgODAsIDY0LCAyNDYsIDE1NSwgMjAyLCAyNDYsIDgwLCA2NCwgMjQ2LCAxNTUsIDIzOCwgMjYsIDgwLCA2NCwgCisgICAgMjQ2LCAxNTUsIDY0LCAyNDYsIDE1NiwgMjQzLCA0NSwgNjMsIDQsIDI0NiwgMTU1LCAyMTIsIDIyMSwgMjA2LCAyMzEsIDYzLCAKKyAgICAyMDUsIDIyNiwgMjA4LCAxOTMsIDYzLCAyMDksIDY0LCA0LCAyMDgsIDE5MywgMTYyLCA2NCwgMjA4LCAxOTMsIDIyMiwgNjYsIAorICAgIDY0LCAyMDgsIDE5MywgMjcsIDY0LCAyMDgsIDE5MywgODAsIDY0LCAyMDgsIDE5MywgMjAyLCAyNDYsIDgwLCA2NCwgMjA4LCAKKyAgICAxOTMsIDIzOCwgMjYsIDgwLCA2NCwgMjA4LCAxOTMsIDY0LCA1MiwgMjQzLCA0NSwgNjMsIDIwMiwgMjQ2LCA0LCAyMDgsIAorICAgIDE5MywgNjQsIDUyLCAyNDMsIDQ1LCA2MywgMjIyLCA2NiwgMjA4LCAxOTMsIDUyLCAyMDYsIDIzMSwgNjMsIDIwNSwgMjI2LCAKKyAgICAyNDEsIDY0LCA2MywgMjAyLCAyNDYsIDQsIDI0MSwgNjQsIDYzLCAyMjIsIDY2LCA0LCAyNDEsIDY0LCA2NCwgMjQxLCA2NSwgCisgICAgMjQzLCA0NSwgNjMsIDIwMiwgMjQ2LCA0LCAyNDEsIDY0LCA2NCwgMjQxLCA2NSwgMjQzLCA0NSwgNjMsIDIyMiwgNjYsIAorICAgIDI0MSwgNjQsIDI0MSwgNjUsIDIwNiwgMjMxLCA2MywgMjA1LCAyMjYsIDIyNCwgNDksIDYzLCAyMDIsIDI0NiwgNCwgMjI0LCAKKyAgICA0OSwgNjMsIDIyMiwgNjYsIDQsIDIyNCwgNDksIDY0LCAyMjQsIDUwLCAyNDMsIDQ1LCA2MywgNCwgMjI0LCA0OSwgMjA2LCAKKyAgICA3NywgMzEsIDI0MiwgMjM0LCAxNjIsIDMxLCAyNDIsIDIzNCwgMjIyLCA2NiwgMzEsIDI0MiwgMjM0LCAyNywgMzEsIDI0MiwgCisgICAgMjM0LCAyMDIsIDI0NiwgMjcsIDMxLCAyNDIsIDIzNCwgMjAyLCAyNDYsIDgwLCAzMSwgMjQyLCAyMzQsIDIzOCwgMjYsIDgwLCAKKyAgICAzMSwgMjQyLCAyMzQsIDIwNiwgNzcsIDIxMiwgMjQsIDE2MiwgMjEyLCAyNCwgMjIyLCA2NiwgMjEyLCAyNCwgMjcsIDIxMiwgCisgICAgMjQsIDgwLCAyMTIsIDI0LCAyMDIsIDI0NiwgODAsIDIxMiwgMjQsIDIzOCwgMjYsIDgwLCAyMTIsIDI0LCAxNjIsIDIzNywgCisgICAgNjEsIDIwOCwgMjA3LCAyNTAsIDE2NSwgMjIyLCA2NiwgMjM3LCA2MSwgMjA4LCAyMDcsIDI1MCwgMTY1LCAyNywgMjM3LCAKKyAgICA2MSwgMjA4LCAyMDcsIDI1MCwgMTY1LCA4MCwgMjM3LCA2MSwgMjA4LCAyMDcsIDI1MCwgMTY1LCAyMDIsIDI0NiwgODAsIAorICAgIDIzNywgNjEsIDIwOCwgMjA3LCAyNTAsIDE2NSwgMjM4LCAyNiwgODAsIDIzNywgNjEsIDIwOCwgMjA3LCAyNTAsIDE2NSwgCisgICAgMTYyLCAyMDksIDEwNiwgMjA4LCAyMDcsIDI1MCwgMTY1LCAyMjIsIDY2LCAyMDksIDEwNiwgMjA4LCAyMDcsIDI1MCwgMTY1LCAKKyAgICAyNywgMjA5LCAxMDYsIDIwOCwgMjA3LCAyNTAsIDE2NSwgODAsIDIwOSwgMTA2LCAyMDgsIDIwNywgMjUwLCAxNjUsIDIwMiwgCisgICAgMjQ2LCA4MCwgMjA5LCAxMDYsIDIwOCwgMjA3LCAyNTAsIDE2NSwgMjM4LCAyNiwgODAsIDIwOSwgMTA2LCAyMDgsIDIwNywgCisgICAgMjUwLCAxNjUsIDE2MiwgMjM4LCAyMzIsIDIwOCwgMjA3LCAyNTAsIDE2NSwgMjIyLCA2NiwgMjM4LCAyMzIsIDIwOCwgMjA3LCAKKyAgICAyNTAsIDE2NSwgMjcsIDIzOCwgMjMyLCAyMDgsIDIwNywgMjUwLCAxNjUsIDgwLCAyMzgsIDIzMiwgMjA4LCAyMDcsIDI1MCwgCisgICAgMTY1LCAyMDIsIDI0NiwgODAsIDIzOCwgMjMyLCAyMDgsIDIwNywgMjUwLCAxNjUsIDE2MiwgMTI2LCAyMTUsIDk4LCA2MywgCisgICAgMjA4LCAxMDksIDIyMiwgNjYsIDEyNiwgMjE1LCA5OCwgNjMsIDIwOCwgMTA5LCAxMjYsIDIxNSwgOTgsIDYzLCAyMDgsIAorICAgIDEwOSwgMjIyLCA2NiwgMTI2LCAyMTUsIDk4LCAyMTUsIDE1NSwgMjA4LCAxMDksIDE2MiwgMjM2LCAyMjksIDIxNSwgOTgsIAorICAgIDYzLCAyMDgsIDEwOSwgMjIyLCA2NiwgMjM2LCAyMjksIDIxNSwgOTgsIDYzLCAyMDgsIDEwOSwgMjM2LCAyMjksIDIxNSwgCisgICAgOTgsIDYzLCAyMDgsIDEwOSwgMjIyLCA2NiwgMjM2LCAyMjksIDIxNSwgOTgsIDIxNSwgMTU1LCAyMDgsIDEwOSwgMjEzLCAKKyAgICAxMDYsIDE2MiwgMjM2LCAyMjksIDIxNSwgOTgsIDIxNSwgMTU1LCAyMDgsIDEwOSwgMTYyLCAyMzcsIDYxLCAyMTUsIDk4LCAKKyAgICA2MywgMjA4LCAxMDksIDgwLCAyMzcsIDYxLCAyMTUsIDk4LCA2MywgMjA4LCAxMDksIDIyMiwgNjYsIDIwOSwgMTA2LCAyMTUsIAorICAgIDk4LCA2MywgMjA4LCAxMDksIDgwLCAyMDksIDEwNiwgMjE1LCA5OCwgNjMsIDIwOCwgMTA5LCAyMDksIDEwNiwgMjE1LCA5OCwgCisgICAgMjE1LCAxNTUsIDIwOCwgMTA5LCAyMjIsIDY2LCAyMzgsIDIzMiwgMjE1LCA5OCwgNjMsIDIwOCwgMTA5LCA4MCwgMjM4LCAKKyAgICAyMzIsIDIxNSwgOTgsIDYzLCAyMDgsIDEwOSwgMjAyLCAyNDYsIDgwLCAyMzgsIDIzMiwgMjE1LCA5OCwgNjMsIDIwOCwgCisgICAgMTA5LCA4MCwgMjM4LCAyMzIsIDIxNSwgOTgsIDIxNSwgMTU1LCAyMDgsIDEwOSwgMTYyLCAyMDQsIDE2NSwgMjE1LCA5OCwgCisgICAgNjMsIDIwOCwgMTA5LCA4MCwgMjA0LCAxNjUsIDIxNSwgOTgsIDYzLCAyMDgsIDEwOSwgODAsIDIwNCwgMTY1LCAyMTUsIDk4LCAKKyAgICAyMTUsIDE1NSwgMjA4LCAxMDksIDk4LCA1NSwgMywgNCwgMjA1LCA5OSwgMjUwLCAyMDIsIDE4MiwgNTUsIDMsIDQsIDIwNSwgCisgICAgOTksIDI1MCwgMjAyLCA4NywgNTUsIDMsIDQsIDIwNSwgOTksIDI1MCwgMjAyLCAxOTEsIDU1LCAzLCA0LCAyMDUsIDk5LCAKKyAgICAyNTAsIDIwMiwgOTgsIDU1LCAzLCAyMjIsIDY2LCAyMDUsIDk5LCAyNTAsIDIwMiwgMTgyLCA1NSwgMywgMjIyLCA2NiwgCisgICAgMjA1LCA5OSwgMjUwLCAyMDIsIDg3LCA1NSwgMywgMjIyLCA2NiwgMjA1LCA5OSwgMjUwLCAyMDIsIDE5MSwgNTUsIDMsIAorICAgIDIyMiwgNjYsIDIwNSwgOTksIDI1MCwgMjAyLCA5OCwgNTUsIDMsIDIyNSwgNzEsIDIwNSwgOTksIDI1MCwgMjAyLCAxODIsIAorICAgIDU1LCAzLCAyMjUsIDcxLCAyMDUsIDk5LCAyNTAsIDIwMiwgODcsIDU1LCAzLCAyMjUsIDcxLCAyMDUsIDk5LCAyNTAsIDIwMiwgCisgICAgMTkxLCA1NSwgMywgMjI1LCA3MSwgMjA1LCA5OSwgMjUwLCAyMDIsIDk4LCA1NSwgMywgNCwgMjM4LCAxMTgsIDI1MCwgMjAyLCAKKyAgICAxODIsIDU1LCAzLCA0LCAyMzgsIDExOCwgMjUwLCAyMDIsIDg3LCA1NSwgMywgNCwgMjM4LCAxMTgsIDI1MCwgMjAyLCAxOTEsIAorICAgIDU1LCAzLCA0LCAyMzgsIDExOCwgMjUwLCAyMDIsIDk4LCA1NSwgMywgMjM4LCAxMTgsIDI1MCwgMjAyLCAxODIsIDU1LCAzLCAKKyAgICAyMzgsIDExOCwgMjUwLCAyMDIsIDg3LCA1NSwgMywgMjM4LCAxMTgsIDI1MCwgMjAyLCAxOTEsIDU1LCAzLCAyMzgsIDExOCwgCisgICAgMjUwLCAyMDIsIDgwLCA5OCwgNTUsIDMsIDIzOCwgMTE4LCAyNTAsIDIwMiwgODAsIDE4MiwgNTUsIDMsIDIzOCwgMTE4LCAKKyAgICAyNTAsIDIwMiwgODAsIDg3LCA1NSwgMywgMjM4LCAxMTgsIDI1MCwgMjAyLCA4MCwgMTkxLCA1NSwgMywgMjM4LCAxMTgsIAorICAgIDI1MCwgMjAyLCA4MCwgOTgsIDU1LCAzLCAyMjUsIDcxLCAyMzgsIDExOCwgMjUwLCAyMDIsIDgwLCAxODIsIDU1LCAzLCAKKyAgICAyMjUsIDcxLCAyMzgsIDExOCwgMjUwLCAyMDIsIDgwLCA4NywgNTUsIDMsIDIyNSwgNzEsIDIzOCwgMTE4LCAyNTAsIDIwMiwgCisgICAgODAsIDE5MSwgNTUsIDMsIDIyNSwgNzEsIDIzOCwgMTE4LCAyNTAsIDIwMiwgOTgsIDIwNSwgOTcsIDU1LCAzLCAyMjAsIAorICAgIDEyNCwgMjEwLCA5OSwgMTgyLCAyMDUsIDk3LCA1NSwgMywgMjIwLCAxMjQsIDIxMCwgOTksIDg3LCAyMDUsIDk3LCA1NSwgMywgCisgICAgMjIwLCAxMjQsIDIxMCwgOTksIDE5MSwgMjA1LCA5NywgNTUsIDMsIDIyMCwgMTI0LCAyMTAsIDk5LCA5OCwgMjA1LCA5NywgCisgICAgNTUsIDMsIDIyMiwgNjYsIDIxMCwgOTksIDE4MiwgMjA1LCA5NywgNTUsIDMsIDIyMiwgNjYsIDIxMCwgOTksIDg3LCAyMDUsIAorICAgIDk3LCA1NSwgMywgMjIyLCA2NiwgMjEwLCA5OSwgMTkxLCAyMDUsIDk3LCA1NSwgMywgMjIyLCA2NiwgMjEwLCA5OSwgOTgsIAorICAgIDIwNSwgOTcsIDU1LCAzLCAyNywgMjEwLCA5OSwgMTgyLCAyMDUsIDk3LCA1NSwgMywgMjcsIDIxMCwgOTksIDg3LCAyMDUsIAorICAgIDk3LCA1NSwgMywgMjcsIDIxMCwgOTksIDE5MSwgMjA1LCA5NywgNTUsIDMsIDI3LCAyMTAsIDk5LCA5OCwgMjA1LCA5NywgCisgICAgNTUsIDMsIDgwLCAyMTAsIDk5LCAxODIsIDIwNSwgOTcsIDU1LCAzLCA4MCwgMjEwLCA5OSwgODcsIDIwNSwgOTcsIDU1LCAzLCAKKyAgICA4MCwgMjEwLCA5OSwgMTkxLCAyMDUsIDk3LCA1NSwgMywgODAsIDIxMCwgOTksIDk4LCAyMDUsIDk3LCA1NSwgMywgMjAyLCAKKyAgICAyNDYsIDgwLCAyMTAsIDk5LCAxODIsIDIwNSwgOTcsIDU1LCAzLCAyMDIsIDI0NiwgODAsIDIxMCwgOTksIDg3LCAyMDUsIAorICAgIDk3LCA1NSwgMywgMjAyLCAyNDYsIDgwLCAyMTAsIDk5LCAxOTEsIDIwNSwgOTcsIDU1LCAzLCAyMDIsIDI0NiwgODAsIDIxMCwgCisgICAgOTksIDk4LCAyMzcsIDg1LCA0OCwgMTgyLCAyMzcsIDg1LCA0OCwgODcsIDIzNywgODUsIDQ4LCAxOTEsIDIzNywgODUsIDQ4LCAKKyAgICA5OCwgOTUsIDQ4LCAxODIsIDk1LCA0OCwgODcsIDk1LCA0OCwgMTkxLCA5NSwgNDgsIDk4LCAyNDMsIDcyLCA0OCwgMTgyLCAKKyAgICAyNDMsIDcyLCA0OCwgODcsIDI0MywgNzIsIDQ4LCAxOTEsIDI0MywgNzIsIDQ4LCA5OCwgODAsIDI0MywgNzIsIDQ4LCAxODIsIAorICAgIDgwLCAyNDMsIDcyLCA0OCwgODcsIDgwLCAyNDMsIDcyLCA0OCwgMTkxLCA4MCwgMjQzLCA3MiwgNDgsIDk4LCA4MCwgNDgsIAorICAgIDE4MiwgODAsIDQ4LCA4NywgODAsIDQ4LCAxOTEsIDgwLCA0OCwgOTgsIDQzLCA0OCwgMTgyLCA0MywgNDgsIDg3LCA0MywgCisgICAgNDgsIDE5MSwgNDMsIDQ4LCAxNTcsIDIwMSwgNDgsIDQzLCA0OCwgMTU3LCAyMzksIDE0LCA0MywgNDgsIDIwOCwgMjU0LCAKKyAgICAyMzksIDE0LCA0MywgNDgsIDIwOCwgMjU0LCAyMDEsIDQ4LCA0MywgNDgsIDQ5LCA1MSwgNDMsIDQ4LCAxMTUsIDEyNywgNDMsIAorICAgIDQ4LCAyMDEsIDI3LCA5OCwgMTYyLCAxNTQsIDQ4LCAyMDEsIDI3LCAxODIsIDE2MiwgMTU0LCA0OCwgMjAxLCAyNywgODcsIAorICAgIDE2MiwgMTU0LCA0OCwgMjAxLCAyNywgMTkxLCAxNjIsIDE1NCwgNDgsIDIwMSwgMjcsIDE1NywgMjAxLCA0OCwgMTYyLCAKKyAgICAxNTQsIDQ4LCAyMDEsIDI3LCAxNTcsIDIzOSwgMTQsIDE2MiwgMTU0LCA0OCwgMjAxLCAyNywgMjA4LCAyNTQsIDIzOSwgMTQsIAorICAgIDE2MiwgMTU0LCA0OCwgMjAxLCAyNywgMjA4LCAyNTQsIDIwMSwgNDgsIDE2MiwgMTU0LCA0OCwgMjAxLCAyNywgOTgsIDE1NCwgCisgICAgNDgsIDIwMSwgMjcsIDE4MiwgMTU0LCA0OCwgMjAxLCAyNywgODcsIDE1NCwgNDgsIDIwMSwgMjcsIDE5MSwgMTU0LCA0OCwgCisgICAgMjAxLCAyNywgMTU3LCAyMDEsIDQ4LCAxNTQsIDQ4LCAyMDEsIDI3LCAxNTcsIDIzOSwgMTQsIDE1NCwgNDgsIDIwMSwgMjcsIAorICAgIDIwOCwgMjU0LCAyMzksIDE0LCAxNTQsIDQ4LCAyMDEsIDI3LCAyMDgsIDI1NCwgMjAxLCA0OCwgMTU0LCA0OCwgMjAxLCAyNywgCisgICAgOTgsIDIyMiwgNjYsIDE1NCwgNDgsIDIwMSwgMjcsIDE4MiwgMjIyLCA2NiwgMTU0LCA0OCwgMjAxLCAyNywgODcsIDIyMiwgCisgICAgNjYsIDE1NCwgNDgsIDIwMSwgMjcsIDE5MSwgMjIyLCA2NiwgMTU0LCA0OCwgMjAxLCAyNywgMTU3LCAyMDEsIDQ4LCAyMjIsIAorICAgIDY2LCAxNTQsIDQ4LCAyMDEsIDI3LCAxNTcsIDIzOSwgMTQsIDIyMiwgNjYsIDE1NCwgNDgsIDIwMSwgMjcsIDIwOCwgMjU0LCAKKyAgICAyMzksIDE0LCAyMjIsIDY2LCAxNTQsIDQ4LCAyMDEsIDI3LCAyMDgsIDI1NCwgMjAxLCA0OCwgMjIyLCA2NiwgMTU0LCA0OCwgCisgICAgMjAxLCAyNywgOTgsIDgwLCAxNTQsIDQ4LCAyMDEsIDI3LCAxODIsIDgwLCAxNTQsIDQ4LCAyMDEsIDI3LCA4NywgODAsIAorICAgIDE1NCwgNDgsIDIwMSwgMjcsIDE5MSwgODAsIDE1NCwgNDgsIDIwMSwgMjcsIDE1NywgMjAxLCA0OCwgODAsIDE1NCwgNDgsIAorICAgIDIwMSwgMjcsIDE1NywgMjM5LCAxNCwgODAsIDE1NCwgNDgsIDIwMSwgMjcsIDIwOCwgMjU0LCAyMzksIDE0LCA4MCwgMTU0LCAKKyAgICA0OCwgMjAxLCAyNywgMjA4LCAyNTQsIDIwMSwgNDgsIDgwLCAxNTQsIDQ4LCAyMDEsIDI3LCA5OCwgMjAyLCAyNDYsIDgwLCAKKyAgICAxNTQsIDQ4LCAyMDEsIDI3LCAxODIsIDIwMiwgMjQ2LCA4MCwgMTU0LCA0OCwgMjAxLCAyNywgODcsIDIwMiwgMjQ2LCA4MCwgCisgICAgMTU0LCA0OCwgMjAxLCAyNywgMTkxLCAyMDIsIDI0NiwgODAsIDE1NCwgNDgsIDIwMSwgMjcsIDE1NywgMjAxLCA0OCwgMjAyLCAKKyAgICAyNDYsIDgwLCAxNTQsIDQ4LCAyMDEsIDI3LCAxNTcsIDIzOSwgMTQsIDIwMiwgMjQ2LCA4MCwgMTU0LCA0OCwgMjAxLCAyNywgCisgICAgMjA4LCAyNTQsIDIzOSwgMTQsIDIwMiwgMjQ2LCA4MCwgMTU0LCA0OCwgMjAxLCAyNywgMjA4LCAyNTQsIDIwMSwgNDgsIAorICAgIDIwMiwgMjQ2LCA4MCwgMTU0LCA0OCwgOTgsIDIwNSwgOTksIDI1MCwgMjAyLCAxODIsIDIwNSwgOTksIDI1MCwgMjAyLCA4NywgCisgICAgMjA1LCA5OSwgMjUwLCAyMDIsIDE5MSwgMjA1LCA5OSwgMjUwLCAyMDIsIDk4LCA2NCwgNTUsIDIwMSwgNSwgMjA1LCA5OSwgCisgICAgMjUwLCAyMDIsIDE4MiwgNjQsIDU1LCAyMDEsIDUsIDIwNSwgOTksIDI1MCwgMjAyLCA4NywgNjQsIDU1LCAyMDEsIDUsIAorICAgIDIwNSwgOTksIDI1MCwgMjAyLCAxOTEsIDY0LCA1NSwgMjAxLCA1LCAyMDUsIDk5LCAyNTAsIDIwMiwgOTgsIDU1LCAzLCAKKyAgICAyMTgsIDIxMSwgMjA3LCA2LCAxODIsIDU1LCAzLCAyMTgsIDIxMSwgMjA3LCA2LCA4NywgNTUsIDMsIDIxOCwgMjExLCAyMDcsIAorICAgIDYsIDE5MSwgNTUsIDMsIDIxOCwgMjExLCAyMDcsIDYsIDgwLCA1NSwgMjEwLCAxMDAsIDIwMSwgMjUsIDEwMiwgODAsIDU1LCAKKyAgICAyMTAsIDEwMCwgMjAxLCAyNSwgMTIwLCAyMDYsIDcxLCA4MCwgNTUsIDIxMCwgMTAwLCAyMDEsIDI1LCAxMTIsIDIzNCwgCisgICAgMjEzLCA4MCwgNTUsIDIxMCwgMTAwLCAyMDEsIDI1LCAxMTIsIDIwNiwgNzQsIDk4LCAyNDgsIDkwLCA2NCwgNDgsIDg3LCAKKyAgICAyNDgsIDkzLCAyMTAsIDEwMiwgNjQsIDQ4LCA5OCwgMjA1LCAxNTgsIDIxMCwgMTAyLCA2NCwgNDgsIDg3LCAyMDUsIDE1OCwgCisgICAgMjEwLCAxMDIsIDY0LCA0OCwgOTgsIDIyNSwgMjIsIDY0LCA0OCwgODcsIDIxMywgNDAsIDY0LCA0OCwgOTgsIDIxMywgNDAsIAorICAgIDY0LCA0OCwgODcsIDIyNSwgMjIsIDY0LCA0OCwgOTgsIDI0OSwgMTI4LCAyMTAsIDEwMSwgNjQsIDQ4LCA4NywgMjQ5LCAKKyAgICAxMjgsIDIxMCwgMTAxLCA2NCwgNDgsIDk4LCAyMzYsIDE5OCwgMjEwLCAxMDEsIDY0LCA0OCwgODcsIDIzNiwgMTk4LCAyMTAsIAorICAgIDEwMSwgNjQsIDQ4LCA2NCwgNTUsIDIxMCwgMTAwLCAyMDEsIDI1LCAxMDIsIDY0LCA1NSwgMjEwLCAxMDAsIDIwMSwgMjUsIAorICAgIDEyMCwgMjA2LCA3MSwgMTk5LCAyMywgMjM3LCAxODksIDIyMSwgMTA0LCAyMzcsIDE4OSwgMjM3LCAxOTAsIDMsIDIwNiwgCisgICAgOTQsIDIyMCwgMTYsIDIzNywgMTg5LCAyMDYsIDc2LCAyMzcsIDE4OSwgMjM3LCAxOTAsIDMsIDIzNCwgMTM1LCAyMTIsIAorICAgIDI1MSwgMjM3LCAxODksIDIzMywgOTEsIDIzNywgMTg5LCAyLCA3NiwgMjA2LCAxMDcsIDIzMywgMTIzLCAyNDcsIDE2OSwgCisgICAgMjIyLCA3NywgMjM0LCAxOTksIDIxMywgMjIwLCAyNDksIDEzMCwgNzYsIDIzNCwgMTk5LCAyMjUsIDI3LCAyMzcsIDY2LCAKKyAgICAyMTMsIDQ1LCAyMzcsIDY2LCAyMzQsIDE3MywgMjM0LCAyMDAsIDMsIDEyNCwgMjYsIDEwMSwgMjM3LCA4MiwgMjQyLCAyMzEsIAorICAgIDIzNywgMTkwLCAzLCAyNDIsIDI1NCwgMjM0LCAxNTcsIDI0NiwgOTksIDIzNywgMTg5LCAyMjAsIDExMywgMjM3LCAxODksIAorICAgIDIxMiwgMjQyLCAyMTcsIDc5LCAyMDYsIDEwNywgMjM3LCAzMiwgMjI1LCA1NywgMjM5LCAxNDcsIDIzNywgMTg5LCAyMjMsIAorICAgIDI1MywgMjM3LCAxODksIDIzNywgMTkwLCAyMTYsIDE3NiwgMjA5LCAzOSwgMjM3LCAxODksIDIxNSwgMjQsIDIwMCwgMjUwLCAKKyAgICAyMTAsIDE3MywgMjE1LCAxMywgMjIyLCAxODEsIDIyOCwgMTE4LCAyMDQsIDE3MywgMjIxLCA3MiwgMjQ2LCAxOTksIDIwOSwgCisgICAgMjI0LCAyMTYsIDExLCAyNDAsIDE5OCwgMjQ3LCAxMTYsIDIyNywgMTQyLCAyMzcsIDEyNiwgMjIxLCAxMjksIDIxNiwgMzQsIAorICAgIDIwMCwgMjI0LCAyMDEsIDgzLCAyMTUsIDg2LCAyMzQsIDE3OCwgMjAxLCAxOSwgMjM3LCAyNCwgMjM5LCAxNDMsIDMsIDIzOSwgCisgICAgMTQxLCAyNDYsIDExNywgMjM1LCAxMjcsIDIwNCwgMjAxLCAyMzUsIDEyOCwgMjA4LCAyMDYsIDIzNSwgMTE0LCAyMjAsIDEzLCAKKyAgICAyMTMsIDQ3LCAyMzcsIDczLCAyMTUsIDEzNCwgMjIyLCA2OSwgMjExLCAxOTYsIDIxNSwgMTM0LCAyMjIsIDY5LCAyMDYsIAorICAgIDc1LCAyMTUsIDEzNCwgMjIyLCA2OSwgMjQ4LCA3NywgMjM1LCAxMjIsIDIyMiwgMTQxLCAyNTAsIDE5MiwgMjAzLCAyNDMsIAorICAgIDI0MiwgMjM4LCAyNTAsIDExOCwgMjQyLCAyMDgsIDI0OSwgMTIxLCAyMTUsIDU5LCAyNDcsIDEyMCwgMjQ5LCAxMDgsIDI0OCwgCisgICAgNjIsIDIzNSwgNjQsIDIxMiwgMzIsIDIxMCwgOTMsIDIxNiwgMTYzLCA3NiwgMjM3LCAxLCAyMDgsIDI4LCAyMzcsIDQzLCAKKyAgICAyMzgsIDI0NiwgMjM1LCAxMjksIDc2LCAyMjEsIDE3MywgMjE2LCA2OCwgMjI2LCAxMjQsIDIxNiwgMTYwLCAyNDIsIDI1MSwgCisgICAgMjI0LCAxNjQsIDIzNywgMTg5LCAyMTEsIDIxMywgMjA0LCAxOTAsIDIwMywgMjQ1LCAyMzcsIDE4OSwgMjM5LCAyNCwgMjM5LCAKKyAgICAxMzMsIDI0OSwgNTUsIDIxMCwgODAsIDIxNiwgMjM3LCAyMzYsIDIyMSwgMjM3LCAxODksIDI0NywgMjQ1LCAyNDEsIDE1OCwgCisgICAgMjM1LCA5NywgMjI0LCAxNDMsIDIxMywgOTIsIDIwOSwgMjI2LCAyMDgsIDE4NywgMjQ2LCAyNTUsIDIwMSwgNTksIDEyLCAKKyAgICAxNSwgMjMyLCAyMjEsIDEyLCAxNSwgMjMyLCAyMjAsIDEyLCAxNSwgMjMyLCAyMTksIDEyLCAxNSwgMjMyLCAyMTgsIDEyLCAKKyAgICAxNSwgMjMyLCAyMTcsIDEyLCAxNSwgMjMyLCAyMTYsIDEyLCAxNSwgMjMyLCAyMTUsIDEyLCAxNSwgMjMyLCAyMTQsIDEyLCAKKyAgICAxNSwgMjMyLCAyMTMsIDEyLCAxNSwgMjMyLCAyMTIsIDEyLCAxNSwgMjMyLCAyMTEsIDEyLCAxNSwgMjMyLCAyMTAsIDEyLCAKKyAgICAxNSwgMjMyLCAyMDksIDEyLCAxNSwgMjMyLCAyMDgsIDEyLCAxNSwgMjMyLCAyMDcsIDEyLCAxNSwgMjMyLCAyMDYsIDEyLCAKKyAgICAxNSwgMjMyLCAyMDUsIDEyLCAxNSwgMjMyLCAyMDQsIDEyLCAxNSwgMjMyLCAyMDMsIDEyLCAxNSwgMjMyLCAyMDIsIDEyLCAKKyAgICAxNSwgMjMyLCAyMDEsIDEyLCAxNSwgMjMyLCAyMDAsIDEyLCAxNSwgMjMyLCAxOTksIDEyLCAxNSwgMjMyLCAxOTgsIDEyLCAKKyAgICAxNSwgMjMyLCAxOTcsIDEyLCAxNSwgMjMyLCAxOTYsIDEyLCAxNSwgMjMyLCAxOTUsIDEyLCAxNSwgMjMyLCAxOTQsIDEyLCAKKyAgICAxNSwgMjMyLCAxOTMsIDEyLCAxNSwgMjMyLCAxOTIsIDEyLCAxNSwgMjMyLCAxOTEsIDEyLCAxNSwgMjMyLCAxOTAsIDEyLCAKKyAgICAxNSwgMjMyLCAxODksIDEyLCAxNSwgMjMyLCAxODgsIDEyLCAxNSwgMjMyLCAxODcsIDEyLCAxNSwgMjMyLCAxODYsIDEyLCAKKyAgICAxNSwgMjMyLCAxODUsIDEyLCAxNSwgMjMyLCAxODQsIDEyLCAxNSwgMjMyLCAxODMsIDEyLCAxNSwgMjMyLCAxODIsIDEyLCAKKyAgICAxNSwgMjMyLCAxODEsIDEyLCAxNSwgMjMyLCAxODAsIDEyLCAxNSwgMjMyLCAxNzksIDEyLCAxNSwgMjMyLCAxNzgsIDEyLCAKKyAgICAxNSwgMjMyLCAxNzcsIDEyLCAxNSwgMjMyLCAxNzYsIDEyLCAxNSwgMjMyLCAxNzUsIDEyLCAxNSwgMjMyLCAxNzQsIDEyLCAKKyAgICAxNSwgMjMyLCAxNzMsIDEyLCAxNSwgMjMyLCAxNzIsIDEyLCAxNSwgMjMyLCAxNzEsIDEyLCAxNSwgMjMyLCAxNzAsIDEyLCAKKyAgICAxNSwgMjMyLCAxNjksIDEyLCAxNSwgMjMyLCAxNjgsIDEyLCAxNSwgMjMyLCAxNjcsIDEyLCAxNSwgMjMyLCAxNjYsIDEyLCAKKyAgICAxNSwgMjMyLCAxNjUsIDEyLCAxNSwgMjMyLCAxNjQsIDEyLCAxNSwgMjMyLCAxNjMsIDEyLCAxNSwgMjMyLCAxNjIsIDEyLCAKKyAgICAxNSwgMjMyLCAxNjEsIDEyLCAxNSwgMjMyLCAxNjAsIDEyLCAxNSwgMjMyLCAxNTksIDEyLCAxNSwgMjMyLCAxNTgsIDEyLCAKKyAgICAxNSwgMjMyLCAxNTcsIDEyLCAxNSwgMjMyLCAxNTYsIDEyLCAxNSwgMjMyLCAxNTUsIDEyLCAxNSwgMjMyLCAxNTQsIDEyLCAKKyAgICAxNSwgMjMyLCAxNTMsIDEyLCAxNSwgMjMyLCAxNTIsIDEyLCAxNSwgMjMyLCAxNTEsIDEyLCAxNSwgMjMyLCAxNTAsIDEyLCAKKyAgICAxNSwgMjMyLCAxNDksIDEyLCAxNSwgMjMyLCAxNDgsIDEyLCAxNSwgMjMyLCAxNDcsIDEyLCAxNSwgMjMyLCAxNDYsIDEyLCAKKyAgICAxNSwgMjMyLCAxNDUsIDEyLCAxNSwgMjMyLCAxNDQsIDEyLCAxNSwgMjMyLCAxNDMsIDEyLCAxNSwgMjMyLCAxNDIsIDEyLCAKKyAgICAxNSwgMjMyLCAxNDEsIDEyLCAxNSwgMjMyLCAxNDAsIDEyLCAxNSwgMjMyLCAxMzksIDEyLCAxNSwgMjMyLCAxMzgsIDEyLCAKKyAgICAxNSwgMjMyLCAxMzcsIDEyLCAxNSwgMjMyLCAxMzYsIDEyLCAxNSwgMjMyLCAxMzUsIDEyLCAxNSwgMjMyLCAxMzQsIDEyLCAKKyAgICAxNSwgMjMyLCAxMzMsIDEyLCAxNSwgMjMyLCAxMzIsIDEyLCAxNSwgMjMyLCAxMzEsIDEyLCAxNSwgMjMyLCAxMzAsIDEyLCAKKyAgICAxNSwgMjMyLCAxMjksIDEyLCAxNSwgMjMyLCAxMjgsIDEyLCAxNSwgMjMyLCAxMjcsIDEyLCAxNSwgMjMyLCAxMjYsIDEyLCAKKyAgICAxNSwgMjMyLCAxMjUsIDEyLCAxNSwgMjMyLCAxMjQsIDEyLCAxNSwgMjMyLCAxMjMsIDEyLCAxNSwgMjMyLCAxMjIsIDEyLCAKKyAgICAxNSwgMjMyLCAxMjEsIDEyLCAxNSwgMjMyLCAxMjAsIDEyLCAxNSwgMjMyLCAxMTksIDEyLCAxNSwgMjMyLCAxMTgsIDEyLCAKKyAgICAxNSwgMjMyLCAxMTcsIDEyLCAxNSwgMjMyLCAxMTYsIDEyLCAxNSwgMjMyLCAxMTUsIDEyLCAxNSwgMjMyLCAxMTQsIDEyLCAKKyAgICAxNSwgMjMyLCAxMTMsIDEyLCAxNSwgMjMyLCAxMTIsIDEyLCAxNSwgMjMyLCAxMTEsIDEyLCAxNSwgMjMyLCAxMTAsIDEyLCAKKyAgICAxNSwgMjMyLCAxMDksIDEyLCAxNSwgMjMyLCAxMDgsIDEyLCAxNSwgMjMyLCAxMDcsIDEyLCAxNSwgMjMyLCAxMDYsIDEyLCAKKyAgICAxNSwgMjMyLCAxMDUsIDEyLCAxNSwgMjMyLCAxMDQsIDEyLCAxNSwgMjMyLCAxMDMsIDEyLCAxNSwgMjMyLCAxMDIsIDEyLCAKKyAgICAxNSwgMjMyLCAxMDEsIDEyLCAxNSwgMjMyLCAxMDAsIDEyLCAxNSwgMjMyLCA5OSwgMTIsIDE1LCAyMzIsIDk4LCAxMiwgMTUsIAorICAgIDIzMiwgOTcsIDEyLCAxNSwgMjMyLCA5NiwgMTIsIDE1LCAyMzIsIDk1LCAxMiwgMTUsIDIzMiwgOTQsIDEyLCAxNSwgMjMyLCAKKyAgICA5MywgMTIsIDE1LCAyMzIsIDkyLCAxMiwgMTUsIDIzMiwgOTEsIDEyLCAxNSwgMjMyLCA5MCwgMTIsIDE1LCAyMzIsIDg5LCAKKyAgICAxMiwgMTUsIDIzMiwgODgsIDEyLCAxNSwgMjMyLCA4NywgMTIsIDE1LCAyMzIsIDg2LCAxMiwgMTUsIDIzMiwgODUsIDEyLCAKKyAgICAxNSwgMjMyLCA4NCwgMTIsIDE1LCAyMzIsIDgzLCAxMiwgMTUsIDIzMiwgODIsIDEyLCAxNSwgMjMyLCA4MSwgMTIsIDE1LCAKKyAgICAyMzIsIDgwLCAxMiwgMTUsIDIzMiwgNzksIDEyLCAxNSwgMjMyLCA3OCwgMTIsIDE1LCAyMzIsIDc3LCAxMiwgMTUsIDIzMiwgCisgICAgNzYsIDEyLCAxNSwgMjMyLCA3NSwgMTIsIDE1LCAyMzIsIDc0LCAxMiwgMTUsIDIzMiwgNzMsIDEyLCAxNSwgMjMyLCA3MiwgCisgICAgMTIsIDE1LCAyMzIsIDcxLCAxMiwgMTUsIDIzMiwgNzAsIDEyLCAxNSwgMjMyLCA2OSwgMTIsIDE1LCAyMzIsIDY4LCAxMiwgCisgICAgMTUsIDIzMiwgNjcsIDEyLCAxNSwgMjMyLCA2NiwgMTIsIDE1LCAyMzIsIDY1LCAxMiwgMTUsIDIzMiwgNjQsIDEyLCAxNSwgCisgICAgMjMyLCA2MywgMTIsIDE1LCAyMzIsIDYyLCAxMiwgMTUsIDIzMiwgNjEsIDEyLCAxNSwgMjMyLCA2MCwgMTIsIDE1LCAyMzIsIAorICAgIDU5LCAxMiwgMTUsIDIzMiwgNTgsIDEyLCAxNSwgMjMyLCA1NywgMTIsIDE1LCAyMzIsIDU2LCAxMiwgMTUsIDIzMiwgNTUsIAorICAgIDEyLCAxNSwgMjMyLCA1NCwgMTIsIDE1LCAyMzIsIDUzLCAxMiwgMTUsIDIzMiwgNTIsIDEyLCAxNSwgMjMyLCA1MSwgMTIsIAorICAgIDE1LCAyMzIsIDUwLCAxMiwgMTUsIDIzMiwgNDksIDEyLCAxNSwgMjMyLCA0OCwgMTIsIDE1LCAyMzIsIDQ3LCAxMiwgMTUsIAorICAgIDIzMiwgNDYsIDEyLCAxNSwgMjMyLCA0NSwgMTIsIDE1LCAyMzIsIDQ0LCAxMiwgMTUsIDIzMiwgNDMsIDEyLCAxNSwgMjMyLCAKKyAgICA0MiwgMTIsIDE1LCAyMzIsIDQxLCAxMiwgMTUsIDIzMiwgNDAsIDEyLCAxNSwgMjMyLCAzOSwgMTIsIDE1LCAyMzIsIDM4LCAKKyAgICAxMiwgMTUsIDIzMiwgMzcsIDEyLCAxNSwgMjMyLCAzNiwgMTIsIDE1LCAyMzIsIDM1LCAxMiwgMTUsIDIzMiwgMzQsIDEyLCAKKyAgICAxNSwgMjMyLCAzMywgMTIsIDE1LCAyMzIsIDMyLCAxMiwgMTUsIDIzMiwgMzEsIDEyLCAxNSwgMjMyLCAzMCwgMTIsIDE1LCAKKyAgICAyMzIsIDI5LCAxMiwgMTUsIDIzMiwgMjgsIDEyLCAxNSwgMjMyLCAyNywgMTIsIDE1LCAyMzIsIDI2LCAxMiwgMTUsIDIzMiwgCisgICAgMjUsIDEyLCAxNSwgMjMyLCAyNCwgMTIsIDE1LCAyMzIsIDIzLCAxMiwgMTUsIDIzMiwgMjIsIDEyLCAxNSwgMjMyLCAyMSwgCisgICAgMTIsIDE1LCAyMzIsIDIwLCAxMiwgMTUsIDIzMiwgMTksIDEyLCAxNSwgMjMyLCAxOCwgMTIsIDE1LCAyMzIsIDE3LCAxMiwgCisgICAgMTUsIDIzMiwgMTYsIDEyLCAxNSwgMjMyLCAxNSwgMTIsIDE1LCAyMzIsIDE0LCAxMiwgMTUsIDIzMiwgMTMsIDEyLCAxNSwgCisgICAgMjMyLCAxMiwgMTIsIDE1LCAyMzIsIDExLCAxMiwgMTUsIDIzMiwgMTAsIDEyLCAxNSwgMjMyLCA5LCAxMiwgMTUsIDIzMiwgCisgICAgOCwgMTIsIDE1LCAyMzIsIDcsIDEyLCAxNSwgMjMyLCA2LCAxMiwgMTUsIDIzMiwgNSwgMTIsIDE1LCAyMzIsIDQsIDEyLCAKKyAgICAxNSwgMjMyLCAzLCAxMiwgMTUsIDIzMiwgMiwgMTIsIDE1LCAyMzIsIDEsIDEyLCAxNSwgMjMyLCAwLCAxMiwgMTUsIDIzMSwgCisgICAgMjU1LCAxMiwgMTUsIDIzMSwgMjU0LCAxMiwgMTUsIDIzMSwgMjUzLCAxMiwgMTUsIDIzMSwgMjUyLCAxMiwgMTUsIDIzMSwgCisgICAgMjUxLCAxMiwgMTUsIDIzMSwgMjUwLCAxMiwgMTUsIDIzMSwgMjQ5LCAxMiwgMTUsIDIzMSwgMjQ4LCAxMiwgMTUsIDIzMSwgCisgICAgMjQ3LCAxMiwgMTUsIDIzMSwgMjQ2LCAxMiwgMTUsIDIzMSwgMjQ1LCAxMiwgMTUsIDIzMSwgMjQ0LCAxMiwgMTUsIDIzMSwgCisgICAgMjQzLCAxMiwgMTUsIDIzMSwgMjQyLCAxMiwgMTUsIDIzMSwgMjQxLCAxMiwgMTUsIDIzMSwgMjQwLCAxMiwgMTUsIDIzMSwgCisgICAgMjM5LCAxMiwgMTUsIDIzMSwgMjM4LCAxMiwgMTUsIDIzMSwgMjM3LCAxMiwgMTUsIDIzMSwgMjM2LCAxMiwgMTUsIDIzMSwgCisgICAgMjM1LCAxMiwgMTUsIDIzMSwgMjM0LCAxMiwgMTUsIDIzMSwgMjMzLCAxMiwgMTUsIDIzMSwgMjMyLCAxMiwgMTUsIDIzMSwgCisgICAgMjMxLCAxMiwgMTUsIDIzMSwgMjMwLCAxMiwgMTUsIDIzMSwgMjI5LCAxMiwgMTUsIDIzMSwgMjI4LCAxMiwgMTUsIDIzMSwgCisgICAgMjI3LCAxMiwgMTUsIDIzMSwgMjI2LCAxMiwgMTUsIDIzMSwgMjI1LCAxMiwgMTUsIDIzMSwgMjI0LCAxMiwgMTUsIDIzMSwgCisgICAgMjIzLCAxMiwgMTUsIDIzMSwgMjIyLCAxMiwgMTUsIDIzMSwgMjIxLCAxMiwgMTUsIDIzMSwgMjIwLCAxMiwgMTUsIDIzMSwgCisgICAgMjE5LCAxMiwgMTUsIDIzMSwgMjE4LCAxMiwgMTUsIDIzMSwgMjE3LCAxMiwgMTUsIDIzMSwgMjE2LCAxMiwgMTUsIDIzMSwgCisgICAgMjE1LCAxMiwgMTUsIDIzMSwgMjE0LCAxMiwgMTUsIDIzMSwgMjEzLCAxMiwgMTUsIDIzMSwgMjEyLCAxMiwgMTUsIDIzMSwgCisgICAgMjExLCAxMiwgMTUsIDIzMSwgMjEwLCAxMiwgMTUsIDIzMSwgMjA5LCAxMiwgMTUsIDIzMSwgMjA4LCAxMiwgMTUsIDIzMSwgCisgICAgMjA3LCAxMiwgMTUsIDIzMSwgMjA2LCAxMiwgMTUsIDIzMSwgMjA1LCAxMiwgMTUsIDIzMSwgMjA0LCAxMiwgMTUsIDIzMSwgCisgICAgMjAzLCAxMiwgMTUsIDIzMSwgMjAyLCAxMiwgMTUsIDIzMSwgMjAxLCAxMiwgMTUsIDIzMSwgMjAwLCAxMiwgMTUsIDIzMSwgCisgICAgMTk5LCAxMiwgMTUsIDIzMSwgMTk4LCAxMiwgMTUsIDIzMSwgMTk3LCAxMiwgMTUsIDIzMSwgMTk2LCAxMiwgMTUsIDIzMSwgCisgICAgMTk1LCAxMiwgMTUsIDIzMSwgMTk0LCAxMiwgMTUsIDIzMSwgMTkzLCAxMiwgMTUsIDIzMSwgMTkyLCAxMiwgMTUsIDIzMSwgCisgICAgMTkxLCAxMiwgMTUsIDIzMSwgMTkwLCAxMiwgMTUsIDIzMSwgMTg5LCAxMiwgMTUsIDIzMSwgMTg4LCAxMiwgMTUsIDIzMSwgCisgICAgMTg3LCAxMiwgMTUsIDIzMSwgMTg2LCAxMiwgMTUsIDIzMSwgMTg1LCAxMiwgMTUsIDIzMSwgMTg0LCAxMiwgMTUsIDIzMSwgCisgICAgMTgzLCAxMiwgMTUsIDIzMSwgMTgyLCAxMiwgMTUsIDIzMSwgMTgxLCAxMiwgMTUsIDIzMSwgMTgwLCAxMiwgMTUsIDIzMSwgCisgICAgMTc5LCAxMiwgMTUsIDIzMSwgMTc4LCAxMiwgMTUsIDIzMSwgMTc3LCAxMiwgMTUsIDIzMSwgMTc2LCAxMiwgMTUsIDIzMSwgCisgICAgMTc1LCAxMiwgMTUsIDIzMSwgMTc0LCAxMiwgMTUsIDIzMSwgMTczLCAxMiwgMTUsIDIzMSwgMTcyLCAxMiwgMTUsIDIzMSwgCisgICAgMTcxLCAxMiwgMTUsIDIzMSwgMTcwLCAxMiwgMTUsIDIzMSwgMTY5LCAxMiwgMTUsIDIzMSwgMTY4LCAxMiwgMTUsIDIzMSwgCisgICAgMTY3LCAxMiwgMTUsIDIzMSwgMTY2LCAxMiwgMTUsIDIzMSwgMTY1LCAxMiwgMTUsIDIzMSwgMTY0LCAxMiwgMTUsIDIzMSwgCisgICAgMTYzLCAxMiwgMTUsIDIzMSwgMTYyLCAxMiwgMTUsIDIzMSwgMTYxLCAxMiwgMTUsIDIzMSwgMTYwLCAxMiwgMTUsIDIzMSwgCisgICAgMTU5LCAxMiwgMTUsIDIzMSwgMTU4LCAxMiwgMTUsIDIzMSwgMTU3LCAxMiwgMTUsIDIzMSwgMTU2LCAxMiwgMTUsIDIzMSwgCisgICAgMTU1LCAxMiwgMTUsIDIzMSwgMTU0LCAxMiwgMTUsIDIzMSwgMTUzLCAxMiwgMTUsIDIzMSwgMTUyLCAxMiwgMTUsIDIzMSwgCisgICAgMTUxLCAxMiwgMTUsIDIzMSwgMTUwLCAxMiwgMTUsIDIzMSwgMTQ5LCAxMiwgMTUsIDIzMSwgMTQ4LCAxMiwgMTUsIDIzMSwgCisgICAgMTQ3LCAxMiwgMTUsIDIzMSwgMTQ2LCAxMiwgMTUsIDIzMSwgMTQ1LCAxMiwgMTUsIDIzMSwgMTQ0LCAxMiwgMTUsIDIzMSwgCisgICAgMTQzLCAxMiwgMTUsIDIzMSwgMTQyLCAxMiwgMTUsIDIzMSwgMTQxLCAxMiwgMTUsIDIzMSwgMTQwLCAxMiwgMTUsIDIzMSwgCisgICAgMTM5LCAxMiwgMTUsIDIzMSwgMTM4LCAxMiwgMTUsIDIzMSwgMTM3LCAxMiwgMTUsIDIzMSwgMTM2LCAxMiwgMTUsIDIzMSwgCisgICAgMTM1LCAxMiwgMTUsIDIzMSwgMTM0LCAxMiwgMTUsIDIzMSwgMTMzLCAxMiwgMTUsIDIzMSwgMTMyLCAxMiwgMTUsIDIzMSwgCisgICAgMTMxLCAxMiwgMTUsIDIzMSwgMTMwLCAxMiwgMTUsIDIzMSwgMTI5LCAxMiwgMTUsIDIzMSwgMTI4LCAxMiwgMTUsIDIzMSwgCisgICAgMTI3LCAxMiwgMTUsIDIzMSwgMTI2LCAxMiwgMTUsIDIzMSwgMTI1LCAxMiwgMTUsIDIzMSwgMTI0LCAxMiwgMTUsIDIzMSwgCisgICAgMTIzLCAxMiwgMTUsIDIzMSwgMTIyLCAxMiwgMTUsIDIzMSwgMTIxLCAxMiwgMTUsIDIzMSwgMTIwLCAxMiwgMTUsIDIzMSwgCisgICAgMTE5LCAxMiwgMTUsIDIzMSwgMTE4LCAxMiwgMTUsIDIzMSwgMTE3LCAxMiwgMTUsIDIzMSwgMTE2LCAxMiwgMTUsIDIzMSwgCisgICAgMTE1LCAxMiwgMTUsIDIzMSwgMTE0LCAxMiwgMTUsIDIzMSwgMTEzLCAxMiwgMTUsIDIzMSwgMTEyLCAxMiwgMTUsIDIzMSwgCisgICAgMTExLCAxMiwgMTUsIDIzMSwgMTEwLCAxMiwgMTUsIDIzMSwgMTA5LCAxMiwgMTUsIDIzMSwgMTA4LCAxMiwgMTUsIDIzMSwgCisgICAgMTA3LCAxMiwgMTUsIDIzMSwgMTA2LCAxMiwgMTUsIDIzMSwgMTA1LCAxMiwgMTUsIDIzMSwgMTA0LCAxMiwgMTUsIDIzMSwgCisgICAgMTAzLCAxMiwgMTUsIDIzMSwgMTAyLCAxMiwgMTUsIDIzMSwgMTAxLCAxMiwgMTUsIDIzMSwgMTAwLCAxMiwgMTUsIDIzMSwgCisgICAgOTksIDEyLCAxNSwgMjMxLCA5OCwgMTIsIDE1LCAyMzEsIDk3LCAxMiwgMTUsIDIzMSwgOTYsIDEyLCAxNSwgMjMxLCA5NSwgCisgICAgMTIsIDE1LCAyMzEsIDk0LCAxMiwgMTUsIDIzMSwgOTMsIDEyLCAxNSwgMjMxLCA5MiwgMTIsIDE1LCAyMzEsIDkxLCAxMiwgCisgICAgMTUsIDIzMSwgOTAsIDEyLCAxNSwgMjMxLCA4OSwgMTIsIDE1LCAyMzEsIDg4LCAxMiwgMTUsIDIzMSwgODcsIDEyLCAxNSwgCisgICAgMjMxLCA4NiwgMTIsIDE1LCAyMzEsIDg1LCAxMiwgMTUsIDIzMSwgODQsIDEyLCAxNSwgMjMxLCA4MywgMTIsIDE1LCAyMzEsIAorICAgIDgyLCAxMiwgMTUsIDIzMSwgODEsIDEyLCAxNSwgMjMxLCA4MCwgMTIsIDE1LCAyMzEsIDc5LCAxMiwgMTUsIDIzMSwgNzgsIAorICAgIDEyLCAxNSwgMjMxLCA3NywgMTIsIDE1LCAyMzEsIDc2LCAxMiwgMTUsIDIzMSwgNzUsIDEyLCAxNSwgMjMxLCA3NCwgMTIsIAorICAgIDE1LCAyMzEsIDczLCAxMiwgMTUsIDIzMSwgNzIsIDEyLCAxNSwgMjMxLCA3MSwgMTIsIDE1LCAyMzEsIDcwLCAxMiwgMTUsIAorICAgIDIzMSwgNjksIDEyLCAxNSwgMjMxLCA2OCwgMTIsIDE1LCAyMzEsIDY3LCAxMiwgMTUsIDIzMSwgNjYsIDEyLCAxNSwgMjMxLCAKKyAgICA2NSwgMTIsIDE1LCAyMzEsIDY0LCAxMiwgMTUsIDIzMSwgNjMsIDEyLCAxNSwgMjMxLCA2MiwgMTIsIDE1LCAyMzEsIDYxLCAKKyAgICAxMiwgMTUsIDIzMSwgNjAsIDEyLCAxNSwgMjMxLCA1OSwgMTIsIDE1LCAyMzEsIDU4LCAxMiwgMTUsIDIzMSwgNTcsIDEyLCAKKyAgICAxNSwgMjMxLCA1NiwgMTIsIDE1LCAyMzEsIDU1LCAxMiwgMTUsIDIzMSwgNTQsIDEyLCAxNSwgMjMxLCA1MywgMTIsIDE1LCAKKyAgICAyMzEsIDUyLCAxMiwgMTUsIDIzMSwgNTEsIDEyLCAxNSwgMjMxLCA1MCwgMTIsIDE1LCAyMzEsIDQ5LCAxMiwgMTUsIDIzMSwgCisgICAgNDgsIDEyLCAxNSwgMjMxLCA0NywgMTIsIDE1LCAyMzEsIDQ2LCAxMiwgMTUsIDIzMSwgNDUsIDEyLCAxNSwgMjMxLCA0NCwgCisgICAgMTIsIDE1LCAyMzEsIDQzLCAxMiwgMTUsIDIzMSwgNDIsIDEyLCAxNSwgMjMxLCA0MSwgMTIsIDE1LCAyMzEsIDQwLCAxMiwgCisgICAgMTUsIDIzMSwgMzksIDEyLCAxNSwgMjMxLCAzOCwgMTIsIDE1LCAyMzEsIDM3LCAxMiwgMTUsIDIzMSwgMzYsIDEyLCAxNSwgCisgICAgMjMxLCAzNSwgMTIsIDE1LCAyMzEsIDM0LCAxMiwgMTUsIDIzMSwgMzMsIDEyLCAxNSwgMjMxLCAzMiwgMTIsIDE1LCAyMzEsIAorICAgIDMxLCAxMiwgMTUsIDIzMSwgMzAsIDEyLCAxNSwgMjMxLCAyOSwgMTIsIDE1LCAyMzEsIDI4LCAxMiwgMTUsIDIzMSwgMjcsIAorICAgIDEyLCAxNSwgMjMxLCAyNiwgMTIsIDE1LCAyMzEsIDI1LCAxMiwgMTUsIDIzMSwgMjQsIDEyLCAxNSwgMjMxLCAyMywgMTIsIAorICAgIDE1LCAyMzEsIDIyLCAxMiwgMTUsIDIzMSwgMjEsIDEyLCAxNSwgMjMxLCAyMCwgMTIsIDE1LCAyMzEsIDE5LCAxMiwgMTUsIAorICAgIDIzMSwgMTgsIDEyLCAxNSwgMjMxLCAxNywgMTIsIDE1LCAyMzEsIDE2LCAxMiwgMTUsIDIzMSwgMTUsIDEyLCAxNSwgMjMxLCAKKyAgICAxNCwgMTIsIDE1LCAyMzEsIDEzLCAxMiwgMTUsIDIzMSwgMTIsIDEyLCAxNSwgMjMxLCAxMSwgMTIsIDE1LCAyMzEsIDEwLCAKKyAgICAxMiwgMTUsIDIzMSwgOSwgMTIsIDE1LCAyMzEsIDgsIDEyLCAxNSwgMjMxLCA3LCAxMiwgMTUsIDIzMSwgNiwgMTIsIDE1LCAKKyAgICAyMzEsIDUsIDEyLCAxNSwgMjMxLCA0LCAxMiwgMTUsIDIzMSwgMywgMTIsIDE1LCAyMzEsIDIsIDEyLCAxNSwgMjMxLCAxLCAKKyAgICAxMiwgMTUsIDIzMSwgMCwgMTIsIDE1LCAyMzAsIDI1NSwgMTIsIDE1LCAyMzAsIDI1NCwgMTIsIDE1LCAyMzAsIDI1MywgMTIsIAorICAgIDE1LCAyMzAsIDI1MiwgMTIsIDE1LCAyMzAsIDI1MSwgMTIsIDE1LCAyMzAsIDI1MCwgMTIsIDE1LCAyMzAsIDI0OSwgMTIsIAorICAgIDE1LCAyMzAsIDI0OCwgMTIsIDE1LCAyMzAsIDI0NywgMTIsIDE1LCAyMzAsIDI0NiwgMTIsIDE1LCAyMzAsIDI0NSwgMTIsIAorICAgIDE1LCAyMzAsIDI0NCwgMTIsIDE1LCAyMzAsIDI0MywgMTIsIDE1LCAyMzAsIDI0MiwgMTIsIDE1LCAyMzAsIDI0MSwgMTIsIAorICAgIDE1LCAyMzAsIDI0MCwgMTIsIDE1LCAyMzAsIDIzOSwgMTIsIDE1LCAyMzAsIDIzOCwgMTIsIDE1LCAyMzAsIDIzNywgMTIsIAorICAgIDE1LCAyMzAsIDIzNiwgMTIsIDE1LCAyMzAsIDIzNSwgMTIsIDE1LCAyMzAsIDIzNCwgMTIsIDE1LCAyMzAsIDIzMywgMTIsIAorICAgIDE1LCAyMzAsIDIzMiwgMTIsIDE1LCAyMzAsIDIzMSwgMTIsIDE1LCAyMzAsIDIzMCwgMTIsIDE1LCAyMzAsIDIyOSwgMTIsIAorICAgIDE1LCAyMzAsIDIyOCwgMTIsIDE1LCAyMzAsIDIyNywgMTIsIDE1LCAyMzAsIDIyNiwgMTIsIDE1LCAyMzAsIDIyNSwgMTIsIAorICAgIDE1LCAyMzAsIDIyNCwgMTIsIDE1LCAyMzAsIDIyMywgMTIsIDE1LCAyMzAsIDIyMiwgMTIsIDE1LCAyMzAsIDIyMSwgMTIsIAorICAgIDE1LCAyMzAsIDIyMCwgMTIsIDE1LCAyMzAsIDIxOSwgMTIsIDE1LCAyMzAsIDIxOCwgMTIsIDE1LCAyMzAsIDIxNywgMTIsIAorICAgIDE1LCAyMzAsIDIxNiwgMTIsIDE1LCAyMzAsIDIxNSwgMTIsIDE1LCAyMzAsIDIxNCwgMTIsIDE1LCAyMzAsIDIxMywgMTIsIAorICAgIDE1LCAyMzAsIDIxMiwgMTIsIDE1LCAyMzAsIDIxMSwgMTIsIDE1LCAyMzAsIDIxMCwgMTIsIDE1LCAyMzAsIDIwOSwgMTIsIAorICAgIDE1LCAyMzAsIDIwOCwgMTIsIDE1LCAyMzAsIDIwNywgMTIsIDE1LCAyMzAsIDIwNiwgMTIsIDE1LCAyMzAsIDIwNSwgMTIsIAorICAgIDE1LCAyMzAsIDIwNCwgMTIsIDE1LCAyMzAsIDIwMywgMTIsIDE1LCAyMzAsIDIwMiwgMTIsIDE1LCAyMzAsIDIwMSwgMTIsIAorICAgIDE1LCAyMzAsIDIwMCwgMTIsIDE1LCAyMzAsIDE5OSwgMTIsIDE1LCAyMzAsIDE5OCwgMTIsIDE1LCAyMzAsIDE5NywgMTIsIAorICAgIDE1LCAyMzAsIDE5NiwgMTIsIDE1LCAyMzAsIDE5NSwgMTIsIDE1LCAyMzAsIDE5NCwgMTIsIDE1LCAyMzAsIDE5MywgMTIsIAorICAgIDE1LCAyMzAsIDE5MiwgMjI1LCA3NywgMjA3LCAxMywgMTY1LCAyMDgsIDI0NCwgMTY1LCAyMzgsIDQzLCA4MSwgMTY1LCAKKyAgICAyMTQsIDYzLCA4MSwgMTY1LCA0MSwgNTQsIDE2NSwgMjQwLCAxOTQsIDU0LCAxNjUsIDIxNiwgMjcsIDU0LCAxNjUsIDI1MSwgCisgICAgODksIDE2NSwgMjUxLCAxMywgMTY1LCA0OSwgMjE2LCAxMTUsIDE2NSwgNTEsIDIxNiwgMTE1LCAxNjUsIDI1MCwgMTY1LCAKKyAgICAxNjUsIDkzLCA1NCwgMTY1LCAyNDYsIDcwLCAxNjUsIDIzMywgMzIsIDE2NSwgMjM2LCAxODMsIDIwOCwgNzYsIDE2NSwgCisgICAgMjA5LCAxNiwgMTY1LCAxNywgMTk5LCA4MSwgMTY1LCAxNywgMTAyLCAxNjUsIDE3LCAxMDUsIDE2NSwgMTcsIDE0NywgMTY1LCAKKyAgICAxNywgMTQ5LCAxNjUsIDE3LCAxNjQsIDE2NSwgMTcsIDE4NywgMTY1LCAxNywgMjEwLCAxMzUsIDE2NSwgMTcsIDE5MiwgCisgICAgMTY1LCAxNywgMjE5LCAxMTMsIDE2NSwgMjQ2LCA3OSwgMTY1LCAyMTAsIDE2NywgMTY1LCAyMjQsIDI0MSwgNTQsIDE2NSwgCisgICAgMjM4LCAxMjIsIDU0LCAxNjUsIDIzNSwgNjcsIDU0LCAxNjUsIDIxNCwgNzksIDgxLCAxNjUsIDI0NiwgNjgsIDI1MCwgMTU1LCAKKyAgICAxNjUsIDgsIDYsIDEsIDYyLCAxNjUsIDgsIDYsIDEsIDI1MCwgMTAzLCAxNjUsIDgsIDYsIDEsIDI0NywgMjIzLCAxNjUsIDgsIAorICAgIDYsIDEsIDI0MiwgMTUzLCAxNjUsIDgsIDYsIDEsIDcyLCAxNjUsIDgsIDYsIDEsIDIzOCwgNSwgMTY1LCA4LCA2LCAxLCAKKyAgICAyMzYsIDE1NiwgMTY1LCA4LCA2LCAxLCAyMzQsIDI0NywgMTY1LCA4LCA2LCAxLCA3MCwgMTY1LCA4LCA2LCAxLCAyMjcsIAorICAgIDI1MSwgMTY1LCA4LCA2LCAxLCAyMjcsIDExOCwgMTY1LCA4LCA2LCAxLCAxNTYsIDE2NSwgOCwgNiwgMSwgMjIzLCAyNDMsIAorICAgIDE2NSwgOCwgNiwgMSwgMjIwLCAyMTQsIDE2NSwgOCwgNiwgMSwgNzQsIDE2NSwgOCwgNiwgMSwgMjE2LCAyMjYsIDE2NSwgOCwgCisgICAgNiwgMSwgMjE0LCAxNjcsIDE2NSwgOCwgNiwgMSwgMTQ2LCAxNjUsIDgsIDYsIDEsIDIxMiwgMTIyLCAxNjUsIDgsIDYsIDEsIAorICAgIDIwNywgODMsIDE2NSwgOCwgNiwgMSwgNjYsIDE2NSwgOCwgNiwgMSwgMjAzLCAxNjgsIDE2NSwgOCwgNiwgMSwgMjAxLCAKKyAgICAxNDcsIDE2NSwgOCwgNiwgMSwgMjAwLCAxOTUsIDE2NSwgOCwgNiwgMSwgMjAwLCAxMjMsIDE2NSwgOCwgNiwgMSwgMTk5LCAKKyAgICAxNTcsIDE2NSwgNDksIDUyLCAxNTksIDE2NSwgMjEzLCAxMDYsIDIwOSwgMTYsIDE2NSwgNTEsIDUyLCAxNTksIDE2NSwgCisgICAgMjQ2LCAxNDcsIDI1MSwgMjUxLCAxNjUsIDEyOCwgMjI0LCAxNzYsIDE2NSwgMjM1LCA3NCwgMjUxLCAyNTEsIDE2NSwgOCwgCisgICAgNCwgMSwgNjIsIDE2NSwgOCwgNCwgMSwgMjUwLCAxMDMsIDE2NSwgOCwgNCwgMSwgMjQ3LCAyMjMsIDE2NSwgOCwgNCwgMSwgCisgICAgMjQyLCAxNTMsIDE2NSwgOCwgNCwgMSwgNzIsIDE2NSwgOCwgNCwgMSwgMjM4LCA1LCAxNjUsIDgsIDQsIDEsIDIzNiwgMTU2LCAKKyAgICAxNjUsIDgsIDQsIDEsIDIzNCwgMjQ3LCAxNjUsIDgsIDQsIDEsIDcwLCAxNjUsIDgsIDQsIDEsIDIyNywgMjUxLCAxNjUsIDgsIAorICAgIDQsIDEsIDIyNywgMTE4LCAxNjUsIDgsIDQsIDEsIDE1NiwgMTY1LCA4LCA0LCAxLCAyMjMsIDI0MywgMTY1LCA4LCA0LCAxLCAKKyAgICAyMjAsIDIxNCwgMTY1LCA4LCA0LCAxLCA3NCwgMTY1LCA4LCA0LCAxLCAyMTYsIDIyNiwgMTY1LCA4LCA0LCAxLCAyMTQsIAorICAgIDE2NywgMTY1LCA4LCA0LCAxLCAxNDYsIDE2NSwgOCwgNCwgMSwgMjEyLCAxMjIsIDE2NSwgOCwgNCwgMSwgMjA3LCA4MywgCisgICAgMTY1LCA4LCA0LCAxLCA2NiwgMTY1LCA4LCA0LCAxLCAyMDMsIDE2OCwgMTY1LCA4LCA0LCAxLCAyMDEsIDE0NywgMTY1LCA4LCAKKyAgICA0LCAxLCAyMDAsIDE5NSwgMTY1LCA4LCA0LCAxLCAyMDAsIDEyMywgMTY1LCA4LCA0LCAxLCAxOTksIDE1NywgMTY1LCA0OSwgCisgICAgMjQyLCAxOTYsIDE1OSwgMTY1LCA4MywgMjI0LCAxNzYsIDE2NSwgNTEsIDI0MiwgMTk2LCAxNTksIDE2NSwgMjA1LCAyNDAsIAorICAgIDI0NywgMTU3LCAyMDcsIDEzLCA1OCwgMjExLCA5NiwgNTgsIDIxMSwgODUsIDU4LCAyMTEsIDc0LCA1OCwgMjExLCA2MiwgCisgICAgNTgsIDIxMSwgNTEsIDU4LCAyMTEsIDQwLCA1OCwgMjExLCAyOSwgNTgsIDIxMSwgMTgsIDU4LCAyMTEsIDcsIDU4LCAyMTAsIAorICAgIDI1NSwgNTgsIDIxMCwgMjU0LCA1OCwgMjEwLCAyNTMsIDU4LCAyMTAsIDI1MiwgNTgsIDIxMCwgMjUwLCA1OCwgMjEwLCAKKyAgICAyNDksIDU4LCAyMTAsIDI0OCwgNTgsIDIxMCwgMjQ3LCA1OCwgMjEwLCAyNDYsIDU4LCAyMTAsIDI0NSwgNTgsIDIxMCwgCisgICAgMjQ0LCA1OCwgMjEwLCAyNDMsIDU4LCAyMTAsIDI0MiwgNTgsIDIxMCwgMjQxLCA1OCwgMjEwLCAyMzksIDU4LCAyMTAsIAorICAgIDIzOCwgNTgsIDIxMCwgMjM3LCA1OCwgMjEwLCAyMzYsIDU4LCAyMTAsIDIzNSwgNTgsIDIxMCwgMjM0LCA1OCwgMjEwLCAKKyAgICAyMzMsIDU4LCAyMTAsIDIzMiwgNTgsIDIxMCwgMjMxLCA1OCwgMjEwLCAyMzAsIDU4LCAyMTAsIDIyOCwgNTgsIDIxMCwgCisgICAgMjI3LCA1OCwgMjEwLCAyMjYsIDU4LCAyMTAsIDIyNSwgNTgsIDIxMCwgMjI0LCA1OCwgMjEwLCAyMjMsIDU4LCAyMTAsIAorICAgIDIyMiwgNTgsIDIxMCwgMjIxLCA1OCwgMjEwLCAyMjAsIDU4LCAyMTAsIDIxOSwgNTgsIDIxMCwgMjE3LCA1OCwgMjEwLCAKKyAgICAyMTYsIDU4LCAyMTAsIDIxNSwgNTgsIDIxMCwgMjE0LCA1OCwgMjEwLCAyMTMsIDU4LCAyMTAsIDIxMiwgNTgsIDIxMCwgCisgICAgMjExLCA1OCwgMjEwLCAyMTAsIDU4LCAyMTAsIDIwOSwgNTgsIDIxMCwgMjA4LCA1OCwgMjEwLCAyMDYsIDU4LCAyMTAsIAorICAgIDIwNSwgNTgsIDIxMCwgMjA0LCA1OCwgMjEwLCAyMDMsIDU4LCAyMTAsIDIwMiwgNTgsIDIxMCwgMjAxLCA1OCwgMjEwLCAKKyAgICAyMDAsIDU4LCAyMTAsIDE5OSwgNTgsIDIxMCwgMTk4LCA1OCwgMjEwLCAxOTcsIDU4LCAyMTAsIDE5NSwgNTgsIDIxMCwgCisgICAgMTk0LCA1OCwgMjEwLCAxOTMsIDU4LCAyMTAsIDE5MiwgNTgsIDIxMCwgMTkxLCA1OCwgMjEwLCAxOTAsIDU4LCAyMTAsIAorICAgIDE4OSwgNTgsIDIxMCwgMTg4LCA1OCwgMjEwLCAxODcsIDU4LCAyMTAsIDE4NiwgNTgsIDIxMCwgMTg0LCA1OCwgMjEwLCAKKyAgICAxODMsIDU4LCAyMTAsIDE4MiwgNTgsIDIxMCwgMTgxLCA1OCwgMjEwLCAxODAsIDU4LCAyMTAsIDE3OSwgNTgsIDIxMCwgCisgICAgMTc4LCA1OCwgMjEwLCAxNzcsIDU4LCAyMTAsIDE3NiwgNTgsIDIxMCwgMTc1LCA1OCwgMjExLCAxNzIsIDU4LCAyMTEsIAorICAgIDE3MSwgNTgsIDIxMSwgMTcwLCA1OCwgMjExLCAxNjksIDU4LCAyMTEsIDE2OCwgNTgsIDIxMSwgMTY3LCA1OCwgMjExLCAKKyAgICAxNjYsIDU4LCAyMTEsIDE2NSwgNTgsIDIxMSwgMTY0LCA1OCwgMjExLCAxNjMsIDU4LCAyMTEsIDE2MSwgNTgsIDIxMSwgCisgICAgMTYwLCA1OCwgMjExLCAxNTksIDU4LCAyMTEsIDE1OCwgNTgsIDIxMSwgMTU3LCA1OCwgMjExLCAxNTYsIDU4LCAyMTEsIAorICAgIDE1NSwgNTgsIDIxMSwgMTU0LCA1OCwgMjExLCAxNTMsIDU4LCAyMTEsIDE1MiwgNTgsIDIxMSwgMTUwLCA1OCwgMjExLCAKKyAgICAxNDksIDU4LCAyMTEsIDE0OCwgNTgsIDIxMSwgMTQ3LCA1OCwgMjExLCAxNDYsIDU4LCAyMTEsIDE0NSwgNTgsIDIxMSwgCisgICAgMTQ0LCA1OCwgMjExLCAxNDMsIDU4LCAyMTEsIDE0MiwgNTgsIDIxMSwgMTQxLCA1OCwgMjExLCAxMzksIDU4LCAyMTEsIAorICAgIDEzOCwgNTgsIDIxMSwgMTM3LCA1OCwgMjExLCAxMzYsIDU4LCAyMTEsIDEzNSwgNTgsIDIxMSwgMTM0LCA1OCwgMjExLCAKKyAgICAxMzMsIDU4LCAyMTEsIDEzMiwgNTgsIDIxMSwgMTMxLCA1OCwgMjExLCAxMzAsIDU4LCAyMTEsIDEyOCwgNTgsIDIxMSwgCisgICAgMTI3LCA1OCwgMjExLCAxMjYsIDU4LCAyMTEsIDEyNSwgNTgsIDIxMSwgMTI0LCA1OCwgMjExLCAxMjMsIDU4LCAyMTEsIAorICAgIDEyMiwgNTgsIDIxMSwgMTIxLCA1OCwgMjExLCAxMjAsIDU4LCAyMTEsIDExOSwgNTgsIDIxMSwgMTE3LCA1OCwgMjExLCAKKyAgICAxMTYsIDU4LCAyMTEsIDExNSwgNTgsIDIxMSwgMTE0LCA1OCwgMjExLCAxMTMsIDU4LCAyMTEsIDExMiwgNTgsIDIxMSwgCisgICAgMTExLCA1OCwgMjExLCAxMTAsIDU4LCAyMTEsIDEwOSwgNTgsIDIxMSwgMTA4LCA1OCwgMjExLCAxMDYsIDU4LCAyMTEsIAorICAgIDEwNSwgNTgsIDIxMSwgMTA0LCA1OCwgMjExLCAxMDMsIDU4LCAyMTEsIDEwMiwgNTgsIDIxMSwgMTAxLCA1OCwgMjExLCAKKyAgICAxMDAsIDU4LCAyMTEsIDk5LCA1OCwgMjExLCA5OCwgNTgsIDIxMSwgOTcsIDU4LCAyMTEsIDk1LCA1OCwgMjExLCA5NCwgNTgsIAorICAgIDIxMSwgOTMsIDU4LCAyMTEsIDkyLCA1OCwgMjExLCA5MSwgNTgsIDIxMSwgOTAsIDU4LCAyMTEsIDg5LCA1OCwgMjExLCA4OCwgCisgICAgNTgsIDIxMSwgODcsIDU4LCAyMTEsIDg2LCA1OCwgMjExLCA4NCwgNTgsIDIxMSwgODMsIDU4LCAyMTEsIDgyLCA1OCwgMjExLCAKKyAgICA4MSwgNTgsIDIxMSwgODAsIDU4LCAyMTEsIDc5LCA1OCwgMjExLCA3OCwgNTgsIDIxMSwgNzcsIDU4LCAyMTEsIDc2LCA1OCwgCisgICAgMjExLCA3NSwgNTgsIDIxMSwgNzMsIDU4LCAyMTEsIDcyLCA1OCwgMjExLCA3MSwgNTgsIDIxMSwgNzAsIDU4LCAyMTEsIDY5LCAKKyAgICA1OCwgMjExLCA2OCwgNTgsIDIxMSwgNjcsIDU4LCAyMTEsIDY2LCA1OCwgMjExLCA2NSwgNTgsIDIxMSwgNjQsIDU4LCAyMTEsIAorICAgIDYxLCA1OCwgMjExLCA2MCwgNTgsIDIxMSwgNTksIDU4LCAyMTEsIDU4LCA1OCwgMjExLCA1NywgNTgsIDIxMSwgNTYsIDU4LCAKKyAgICAyMTEsIDU1LCA1OCwgMjExLCA1NCwgNTgsIDIxMSwgNTMsIDU4LCAyMTEsIDUyLCA1OCwgMjExLCA1MCwgNTgsIDIxMSwgNDksIAorICAgIDU4LCAyMTEsIDQ4LCA1OCwgMjExLCA0NywgNTgsIDIxMSwgNDYsIDU4LCAyMTEsIDQ1LCA1OCwgMjExLCA0NCwgNTgsIDIxMSwgCisgICAgNDMsIDU4LCAyMTEsIDQyLCA1OCwgMjExLCA0MSwgNTgsIDIxMSwgMzksIDU4LCAyMTEsIDM4LCA1OCwgMjExLCAzNywgNTgsIAorICAgIDIxMSwgMzYsIDU4LCAyMTEsIDM1LCA1OCwgMjExLCAzNCwgNTgsIDIxMSwgMzMsIDU4LCAyMTEsIDMyLCA1OCwgMjExLCAzMSwgCisgICAgNTgsIDIxMSwgMzAsIDU4LCAyMTEsIDI4LCA1OCwgMjExLCAyNywgNTgsIDIxMSwgMjYsIDU4LCAyMTEsIDI1LCA1OCwgMjExLCAKKyAgICAyNCwgNTgsIDIxMSwgMjMsIDU4LCAyMTEsIDIyLCA1OCwgMjExLCAyMSwgNTgsIDIxMSwgMjAsIDU4LCAyMTEsIDE5LCA1OCwgCisgICAgMjExLCAxNywgNTgsIDIxMSwgMTYsIDU4LCAyMTEsIDE1LCA1OCwgMjExLCAxNCwgNTgsIDIxMSwgMTMsIDU4LCAyMTEsIDEyLCAKKyAgICA1OCwgMjExLCAxMSwgNTgsIDIxMSwgMTAsIDU4LCAyMTEsIDksIDU4LCAyMTEsIDgsIDU4LCAyMTEsIDYsIDU4LCAyMTEsIDUsIAorICAgIDU4LCAyMTEsIDQsIDU4LCAyMTEsIDMsIDU4LCAyMTEsIDIsIDU4LCAyMTEsIDEsIDU4LCAyMTEsIDAsIDIxOCwgOTcsIDIxOCwgCisgICAgOTksIDIwOCwgMTA1LCA3NiwgMjM0LCAxMzMsIDIwOSwgMTksIDIwOCwgMTA1LCA3NiwgMjA2LCAxMjYsIDIwOCwgMjYsIAorICAgIDIzOCwgMTcxLCA3NiwgMjA2LCAxMjYsIDIzOCwgNzEsIDIzOCwgMTcxLCA3NiwgMjA1LCAxMTgsIDIzOCwgMTM0LCAyMzgsIAorICAgIDE1OCwgMjM4LCAxNTksIDI1MSwgMjQzLCAyNTEsIDI0NCwgMjUxLCAxMzksIDI0OCwgMjMzLCAyNDksIDEyMywgMjQ4LCA0MiwgCisgICAgMTcxLCAyMDcsIDE5LCAyMzMsIDE3NywgMjA3LCAxOSwgMjMzLCAxMDIsIDIwNywgMjQsIDIyNCwgMTc3LCAyMzcsIDEzOCwgCisgICAgMjIwLCA4LCAyMjQsIDE3NiwgMjM4LCAxNzEsIDc2LCAyMjQsIDE3NiwgMjI0LCAyMjUsIDIxOSwgNDcsIDIzOCwgMTM3LCAKKyAgICAyMjQsIDE3NywgMjA3LCAxOSwgODMsIDIwNywgMTksIDIwMSwgMTY4LCAyMzYsIDI0MiwgMjM3LCAxMzgsIDIzNywgMTE2LCAKKyAgICAyNDcsIDEyMSwgMjEzLCAxMDksIDI0MiwgMjUyLCAyMTAsIDI5LCAyMTYsIDI1NCwgMjI0LCAxMDIsIDEwMiwgMjA5LCAyOSwgCisgICAgMjEwLCAyOSwgMjI4LCAxMTcsIDIyNCwgMTAyLCAxOTksIDgxLCAyMDksIDE4MiwgMjQxLCAyMzksIDIyNCwgMTY3LCAyMzgsIAorICAgIDk2LCAyNDAsIDIyMSwgMjQxLCAxMDcsIDI0MywgMzQsIDEwMiwgMjQxLCAyMjgsIDI0MSwgMTA3LCAyNDMsIDM0LCAxMDUsIAorICAgIDI0MSwgMjI3LCAyNDEsIDEwNywgMjQzLCAzNCwgMTQ3LCAyNDEsIDIyNiwgMjQxLCAxMDcsIDI0MywgMzQsIDE0OSwgMjQxLCAKKyAgICAyMjUsIDE4OSwgMjUxLCAyNDMsIDIyMCwgMTQwLCAyMDcsIDEwOSwgMjI4LCAxODAsIDIwNywgMTEzLCAyMzgsIDE3MSwgNzYsIAorICAgIDIwNSwgMTE5LCAyNDgsIDEzNCwgMjM4LCA3OCwgMjQ3LCAxNTYsIDI0NywgMTU4LCAyMzgsIDE3MSwgNzYsIDIyMiwgNjUsIAorICAgIDIzOCwgMTM1LCAyMDgsIDAsIDIwOCwgMTcsIDIzOCwgOTYsIDIzOCwgOTcsIDIyOCwgOTIsIDIxMCwgMTU1LCAxNDksIDIzNywgCisgICAgOTcsIDIxMCwgMTU0LCAyMzYsIDE5MywgMjI4LCA5MiwgMjEwLCAxNTUsIDE0NywgMjM1LCA1OCwgMjEwLCAxNTQsIDIzNSwgCisgICAgNTUsIDIyOCwgOTIsIDIxMCwgMTU1LCAxMDUsIDIxMywgMTgxLCAyMTAsIDE1NCwgMjEyLCAxODAsIDIyOCwgOTIsIDIxMCwgCisgICAgMTU1LCAxMDIsIDIwMywgMjQwLCAyMTAsIDE1NCwgMjAzLCAxOTcsIDIwOCwgMjQ3LCAyNDEsIDE0NiwgMjQxLCAxNDgsIAorICAgIDIxNiwgMTk5LCAyNDcsIDIwLCAyMTYsIDIwMSwgMTIyLCAyMTcsIDEyOCwgMjE1LCAxOCwgMjMzLCAxODAsIDI0OCwgNjEsIAorICAgIDIxNiwgMTcsIDIzNCwgOTksIDI0OCwgNzQsIDIxOCwgMjQyLCAyNDgsIDYxLCAyMzQsIDk5LCAyMjAsIDEwMywgMjI4LCAKKyAgICAxMDMsIDIyOCwgMTA1LCAyMjAsIDIsIDIyNCwgMTc2LCAyMjAsIDI1LCAyMDgsIDEwNSwgNzYsIDIxMSwgMTc3LCAyNTAsIAorICAgIDIyOCwgMjA4LCAxNzksIDIzOCwgMTcxLCA3NiwgMjExLCAxNzcsIDI1MCwgMjI4LCAyMzgsIDk5LCAxNzEsIDIwNywgMjAsIAorICAgIDIxMCwgMTQxLCAyMzMsIDE3NywgMjA3LCAyMCwgMjEwLCAxNDEsIDIzMywgOTksIDE3MSwgMjA3LCAyMCwgMywgMjI3LCAKKyAgICAxMzAsIDIzMywgMTc3LCAyMDcsIDIwLCAzLCAyMjcsIDEzMCwgMjMzLCAxMDAsIDIyNCwgMTc3LCAyMDcsIDIwLCAyMTAsIAorICAgIDE0MSwgODMsIDIwNywgMjAsIDIxMCwgMTQxLCAyMDEsIDE2NywgMjE2LCAxMDgsIDIyNCwgMTc3LCAyMzYsIDIzMywgMjE2LCAKKyAgICAxMDgsIDIyNCwgMTc3LCAyMzksIDE2NywgMjE1LCAxMjQsIDIxNiwgMTA4LCAyMjQsIDE3NywgMjQ5LCAxMjIsIDIxNiwgCisgICAgMTA4LCAyMjQsIDE3NywgMjAzLCAyMjgsIDIxNSwgMTE5LCAyMTMsIDEwNiwgMjI0LCAxNzcsIDIzNywgMTM4LCAyMTMsIAorICAgIDEwNiwgMjI4LCAxMDMsIDIxMywgODgsIDIwOSwgMTM5LCAyMTAsIDI5LCAxMDUsIDIwOSwgMTM2LCAyMDgsIDE4MSwgMjA5LCAKKyAgICAxMzksIDIxMCwgMjksIDE0NywgMjA5LCAxMzUsIDIwOCwgMTgwLCAyNDEsIDEwNywgMjQzLCAzNCwgMjA4LCA0OSwgMjQxLCAKKyAgICAyMjMsIDIxNSwgNCwgMjAzLCAxOTYsIDEwMiwgMjE1LCA0LCAyMDMsIDE5NCwgMjE0LCAyMjMsIDIxNSwgNCwgMjAzLCAxOTYsIAorICAgIDEwNSwgMjE1LCA0LCAyMDMsIDE5MywgMjE0LCAyMjIsIDIxMCwgMTQyLCAyMDUsIDExNywgMjA4LCAxMDQsIDIwOCwgMzIsIAorICAgIDI0NywgMTU3LCAyNDcsIDIwLCAyNDcsIDk1LCAyMjIsIDI0LCAyMDEsIDEwNiwgMjIwLCAyMzIsIDIwOCwgMTA1LCA3NiwgCisgICAgMjM1LCA0MywgMjUwLCAyMjgsIDIwOCwgMTA1LCA3NiwgMjE0LCAyNDEsIDI1MCwgMjI4LCAyMDgsIDI0NiwgMjM4LCAxNzEsIAorICAgIDc2LCAyMzUsIDQzLCAyNTAsIDIyOCwgMjM4LCAxNzEsIDc2LCAyMTQsIDI0MSwgMjUwLCAyMjgsIDIzOCwgMTMyLCAyMDgsIAorICAgIDEwNSwgNzYsIDIwOCwgNDksIDIwOSwgNSwgMjA5LCAxMzksIDIzNSwgNzksIDE3MSwgMjI4LCA1MiwgMjEwLCAxMTksIDIwOSwgCisgICAgMTM5LCAxNzEsIDIyOCwgNTIsIDIxMSwgMjE3LCAyNDMsIDM0LCAyMTAsIDE1MSwgMjI4LCA1MiwgMjQyLCAyMTUsIDIwOCwgCisgICAgNTAsIDIwNiwgMTUyLCAyMDgsIDEyMywgMjE3LCA0NSwgMjA3LCA5OCwgMjQ2LCA2OSwgMjE3LCAxMywgMjE1LCA1LCAyMjIsIAorICAgIDIzLCAyMTUsIDEwOSwgMjUxLCA5LCAyMTQsIDI1NSwgMjQ2LCA2OSwgMjUxLCAyNSwgMjIwLCA5MSwgMjA5LCAxOTEsIDgsIAorICAgIDYsIDEsIDIzNSwgMTk5LCA4LCA0LCAxLCAyMzUsIDE5OSwgMjQ3LCAzOSwgMjUxLCAxMTgsIDIwNywgMTAzLCAyMDgsIDYsIAorICAgIDI0NiwgODAsIDIwOSwgODYsIDIyNSwgMjgsIDIyNywgNjMsIDEsIDIyNCwgMTI5LCAyMjUsIDc1LCAxLCAyMzcsIDE0LCAKKyAgICAyMzcsIDUsIDIyNSwgNzUsIDEsIDIzNywgMTQsIDIzNywgMTUwLCAyMjUsIDc1LCAxLCAyMTMsIDEsIDIyNSwgNzUsIDEsIAorICAgIDIyNCwgMTEwLCA3OSwgMTM0LCAyNDgsIDE0NiwgMjEwLCA0LCAyMzUsIDE2MiwgMjIxLCAyMjksIDIxMywgOTYsIDIzNiwgCisgICAgMTcwLCAyMzYsIDE2OSwgMjM2LCAxNjgsIDIyMCwgMjM0LCAxOTgsIDI0MCwgMTk4LCAyNDEsIDE5OCwgMjQzLCAyMjQsIDQ2LCAKKyAgICAyMTMsIDksIDIyNCwgNDgsIDIxMywgMTEsIDIxNiwgNzYsIDIyNCwgNDUsIDIxMywgOCwgMjE5LCAxNywgMjIxLCAxNDAsIAorICAgIDIwMSwgMiwgMjI0LCA0NywgMjEzLCAxMCwgMjM2LCAxOTIsIDIxNiwgNzUsIDIwMSwgNTQsIDIzOCwgMTk0LCAyMzYsIDE4MCwgCisgICAgMjIxLCAyMTAsIDIxNywgNzksIDIwMywgMTk4LCA5OSwgMjIxLCAyMTAsIDI0MSwgMjQ1LCA5OSwgOTgsIDIwNSwgOTcsIDU1LCAKKyAgICAzLCA1MywgODMsIDk3LCA4NywgMjA1LCA5NywgNTUsIDMsIDUzLCA4MywgOTcsIDExLCA1LCAyMjgsIDEwLCA4MSwgMjE1LCAKKyAgICAxOSwgMjM2LCAyNDIsIDM2LCA4MywgNTEsIDY0LCAyMjQsIDI0NywgMTU5LCAyMDIsIDE2OCwgMjAyLCA1NywgMjAxLCAyNDUsIAorICAgIDIwMSwgMjM0LCAyMDEsIDIyMywgMjAxLCAyMTIsIDIwMSwgMjAxLCAyMDEsIDE5MCwgMjAxLCAxNzksIDIwMiwgMTY3LCAKKyAgICAyMDIsIDE1NiwgMjAyLCAxNDUsIDIwMiwgMTM0LCAyMDIsIDEyMywgMjAyLCAxMTIsIDIwMiwgMTAxLCAyNDcsIDIyOCwgCisgICAgMjE3LCAzMCwgODEsIDI0OCwgMTE0LCAxOTgsIDI0MiwgMTAsIDIsIDIxOCwgMTA2LCAyMDYsIDE1NSwgMTAsIDIsIDIxOCwgCisgICAgMTA2LCAxMTksIDIxOCwgMTA2LCAyNDgsIDQsIDExOSwgMjQ4LCAzLCA2MSwgMzIsIDE2LCAyMzYsIDE5MSwgMjA5LCA4MiwgCisgICAgMjQ2LCAxOTYsIDIwMywgNjksIDIwMiwgOTAsIDIwMiwgNzksIDIwMiwgNjgsIDIwMiwgNTYsIDIwMiwgNDUsIDIwMiwgMzQsIAorICAgIDIwMiwgMjMsIDIwMiwgMTIsIDIwMiwgMSwgMjAxLCAyNDksIDIwMSwgMjQ4LCAyMDEsIDI0NywgMjAxLCAyNDYsIDIwMSwgCisgICAgMjQ0LCAyMDEsIDI0MywgMjAxLCAyNDIsIDIwMSwgMjQxLCAyMDEsIDI0MCwgMjAxLCAyMzksIDIwMSwgMjM4LCAyMDEsIAorICAgIDIzNywgMjAxLCAyMzYsIDIwMSwgMjM1LCAyMDEsIDIzMywgMjAxLCAyMzIsIDIwMSwgMjMxLCAyMDEsIDIzMCwgMjAxLCAKKyAgICAyMjksIDIwMSwgMjI4LCAyMDEsIDIyNywgMjAxLCAyMjYsIDIwMSwgMjI1LCAyMDEsIDIyNCwgMjAxLCAyMjIsIDIwMSwgCisgICAgMjIxLCAyMDEsIDIyMCwgMjAxLCAyMTksIDIwMSwgMjE4LCAyMDEsIDIxNywgMjAxLCAyMTYsIDIwMSwgMjE1LCAyMDEsIAorICAgIDIxNCwgMjAxLCAyMTMsIDIwMSwgMjExLCAyMDEsIDIxMCwgMjAxLCAyMDksIDIwMSwgMjA4LCAyMDEsIDIwNywgMjAxLCAKKyAgICAyMDYsIDIwMSwgMjA1LCAyMDEsIDIwNCwgMjAxLCAyMDMsIDIwMSwgMjAyLCAyMDEsIDIwMCwgMjAxLCAxOTksIDIwMSwgCisgICAgMTk4LCAyMDEsIDE5NywgMjAxLCAxOTYsIDIwMSwgMTk1LCAyMDEsIDE5NCwgMjAxLCAxOTMsIDIwMSwgMTkyLCAyMDEsIAorICAgIDE5MSwgMjAxLCAxODksIDIwMSwgMTg4LCAyMDEsIDE4NywgMjAxLCAxODYsIDIwMSwgMTg1LCAyMDEsIDE4NCwgMjAxLCAKKyAgICAxODMsIDIwMSwgMTgyLCAyMDEsIDE4MSwgMjAxLCAxODAsIDIwMSwgMTc4LCAyMDEsIDE3NywgMjAxLCAxNzYsIDIwMSwgCisgICAgMTc1LCAyMDEsIDE3NCwgMjAxLCAxNzMsIDIwMSwgMTcyLCAyMDEsIDE3MSwgMjAxLCAxNzAsIDIwMSwgMTY5LCAyMDIsIAorICAgIDE2NiwgMjAyLCAxNjUsIDIwMiwgMTY0LCAyMDIsIDE2MywgMjAyLCAxNjIsIDIwMiwgMTYxLCAyMDIsIDE2MCwgMjAyLCAKKyAgICAxNTksIDIwMiwgMTU4LCAyMDIsIDE1NywgMjAyLCAxNTUsIDIwMiwgMTU0LCAyMDIsIDE1MywgMjAyLCAxNTIsIDIwMiwgCisgICAgMTUxLCAyMDIsIDE1MCwgMjAyLCAxNDksIDIwMiwgMTQ4LCAyMDIsIDE0NywgMjAyLCAxNDYsIDIwMiwgMTQ0LCAyMDIsIAorICAgIDE0MywgMjAyLCAxNDIsIDIwMiwgMTQxLCAyMDIsIDE0MCwgMjAyLCAxMzksIDIwMiwgMTM4LCAyMDIsIDEzNywgMjAyLCAKKyAgICAxMzYsIDIwMiwgMTM1LCAyMDIsIDEzMywgMjAyLCAxMzIsIDIwMiwgMTMxLCAyMDIsIDEzMCwgMjAyLCAxMjksIDIwMiwgCisgICAgMTI4LCAyMDIsIDEyNywgMjAyLCAxMjYsIDIwMiwgMTI1LCAyMDIsIDEyNCwgMjAyLCAxMjIsIDIwMiwgMTIxLCAyMDIsIAorICAgIDEyMCwgMjAyLCAxMTksIDIwMiwgMTE4LCAyMDIsIDExNywgMjAyLCAxMTYsIDIwMiwgMTE1LCAyMDIsIDExNCwgMjAyLCAKKyAgICAxMTMsIDIwMiwgMTExLCAyMDIsIDExMCwgMjAyLCAxMDksIDIwMiwgMTA4LCAyMDIsIDEwNywgMjAyLCAxMDYsIDIwMiwgCisgICAgMTA1LCAyMDIsIDEwNCwgMjAyLCAxMDMsIDIwMiwgMTAyLCAyMDIsIDEwMCwgMjAyLCA5OSwgMjAyLCA5OCwgMjAyLCA5NywgCisgICAgMjAyLCA5NiwgMjAyLCA5NSwgMjAyLCA5NCwgMjAyLCA5MywgMjAyLCA5MiwgMjAyLCA5MSwgMjAyLCA4OSwgMjAyLCA4OCwgCisgICAgMjAyLCA4NywgMjAyLCA4NiwgMjAyLCA4NSwgMjAyLCA4NCwgMjAyLCA4MywgMjAyLCA4MiwgMjAyLCA4MSwgMjAyLCA4MCwgCisgICAgMjAyLCA3OCwgMjAyLCA3NywgMjAyLCA3NiwgMjAyLCA3NSwgMjAyLCA3NCwgMjAyLCA3MywgMjAyLCA3MiwgMjAyLCA3MSwgCisgICAgMjAyLCA3MCwgMjAyLCA2OSwgMjAyLCA2NywgMjAyLCA2NiwgMjAyLCA2NSwgMjAyLCA2NCwgMjAyLCA2MywgMjAyLCA2MiwgCisgICAgMjAyLCA2MSwgMjAyLCA2MCwgMjAyLCA1OSwgMjAyLCA1OCwgMjAyLCA1NSwgMjAyLCA1NCwgMjAyLCA1MywgMjAyLCA1MiwgCisgICAgMjAyLCA1MSwgMjAyLCA1MCwgMjAyLCA0OSwgMjAyLCA0OCwgMjAyLCA0NywgMjAyLCA0NiwgMjAyLCA0NCwgMjAyLCA0MywgCisgICAgMjAyLCA0MiwgMjAyLCA0MSwgMjAyLCA0MCwgMjAyLCAzOSwgMjAyLCAzOCwgMjAyLCAzNywgMjAyLCAzNiwgMjAyLCAzNSwgCisgICAgMjAyLCAzMywgMjAyLCAzMiwgMjAyLCAzMSwgMjAyLCAzMCwgMjAyLCAyOSwgMjAyLCAyOCwgMjAyLCAyNywgMjAyLCAyNiwgCisgICAgMjAyLCAyNSwgMjAyLCAyNCwgMjAyLCAyMiwgMjAyLCAyMSwgMjAyLCAyMCwgMjAyLCAxOSwgMjAyLCAxOCwgMjAyLCAxNywgCisgICAgMjAyLCAxNiwgMjAyLCAxNSwgMjAyLCAxNCwgMjAyLCAxMywgMjAyLCAxMSwgMjAyLCAxMCwgMjAyLCA5LCAyMDIsIDgsIAorICAgIDIwMiwgNywgMjAyLCA2LCAyMDIsIDUsIDIwMiwgNCwgMjAyLCAzLCAyMDIsIDIsIDIwMiwgMCwgMjAxLCAyNTUsIDIwMSwgCisgICAgMjU0LCAyMDEsIDI1MywgMjAxLCAyNTIsIDIwMSwgMjUxLCAyMDEsIDI1MCwgOCwgNiwgMSwgMzUsIDMsIDIyMiwgMjI5LCAKKyAgICAyNiwgMjM1LCA3MywgOCwgNCwgMSwgMzUsIDMsIDIyMiwgMjI5LCAyNiwgMjM1LCA3MywgOCwgNiwgMSwgMTk3LCAzLCA4MywgCisgICAgMjI0LCAxNzcsIDU3LCA4LCA0LCAxLCAxOTcsIDMsIDgzLCAyMjQsIDE3NywgNTcsIDgsIDYsIDEsIDE5NywgMywgODMsIAorICAgIDIyNCwgMTc3LCAyNDgsIDIyOCwgMjYsIDIzNSwgNzMsIDgsIDQsIDEsIDE5NywgMywgODMsIDIyNCwgMTc3LCAyNDgsIDIyOCwgCisgICAgMjYsIDIzNSwgNzMsIDgsIDYsIDEsIDE5NywgMywgODMsIDIyNCwgMTc3LCAyNDgsIDIyOCwgMjYsIDE2OSwgOCwgNCwgMSwgCisgICAgMTk3LCAzLCA4MywgMjI0LCAxNzcsIDI0OCwgMjI4LCAyNiwgMTY5LCA4LCA2LCAxLCAxOTcsIDMsIDI0NiwgMTQ3LCAyNiwgCisgICAgMjIyLCAyMjgsIDgsIDQsIDEsIDE5NywgMywgMjQ2LCAxNDcsIDI2LCAyMjIsIDIyOCwgOCwgNiwgMSwgMTk3LCAzLCAyNDYsIAorICAgIDE0NywgMjYsIDI0NywgMTI1LCA4LCA0LCAxLCAxOTcsIDMsIDI0NiwgMTQ3LCAyNiwgMjQ3LCAxMjUsIDgsIDYsIDEsIDIzMywgCisgICAgMTksIDMsIDIyMiwgMjI5LCAyNiwgMjM1LCA3MywgOCwgNCwgMSwgMjMzLCAxOSwgMywgMjIyLCAyMjksIDI2LCAyMzUsIDczLCAKKyAgICA4LCA0LCAxLCAyMzMsIDE5LCAzLCA3MywgODgsIDI2LCAxNjksIDgsIDQsIDEsIDIyMCwgMCwgMywgMjA1LCAyNDEsIDU2LCAKKyAgICA4LCA2LCAxLCAxNjMsIDMsIDgzLCAyMjQsIDE3NywgNTcsIDgsIDQsIDEsIDE2MywgMywgODMsIDIyNCwgMTc3LCA1NywgOCwgCisgICAgNiwgMSwgMTYzLCAzLCA4MywgMjI0LCAxNzcsIDI0OCwgMjI4LCAyNiwgMjM1LCA3MywgOCwgNCwgMSwgMTYzLCAzLCA4MywgCisgICAgMjI0LCAxNzcsIDI0OCwgMjI4LCAyNiwgMjM1LCA3MywgOCwgNiwgMSwgMTYzLCAzLCA4MywgMjI0LCAxNzcsIDI0OCwgMjI4LCAKKyAgICAyNiwgMTY5LCA4LCA0LCAxLCAxNjMsIDMsIDgzLCAyMjQsIDE3NywgMjQ4LCAyMjgsIDI2LCAxNjksIDgsIDYsIDEsIDIxMiwgCisgICAgMTIzLCAzLCA4MywgMjI0LCAxNzcsIDU3LCA4LCA0LCAxLCAyMTIsIDEyMywgMywgODMsIDIyNCwgMTc3LCA1NywgOCwgNiwgCisgICAgMSwgMTA4LCAzLCAyMjIsIDIyOSwgMjYsIDIzNSwgNzMsIDgsIDQsIDEsIDEwOCwgMywgMjIyLCAyMjksIDI2LCAyMzUsIDczLCAKKyAgICA4LCA2LCAxLCAzNSwgMywgMjE3LCAxMTEsIDI2LCAxNjksIDgsIDQsIDEsIDM1LCAzLCAyMTcsIDExMSwgMjYsIDE2OSwgOCwgCisgICAgNiwgMSwgMzUsIDMsIDIxNywgMTExLCAyNiwgMjA1LCAyNDAsIDgsIDQsIDEsIDM1LCAzLCAyMTcsIDExMSwgMjYsIDIwNSwgCisgICAgMjQwLCA4LCA2LCAxLCAxOTcsIDMsIDIxNywgMTExLCAyNiwgMTY5LCA4LCA0LCAxLCAxOTcsIDMsIDIxNywgMTExLCAyNiwgCisgICAgMTY5LCA4LCA2LCAxLCAxOTcsIDMsIDIxNywgMTExLCAyNiwgMjA1LCAyNDAsIDgsIDQsIDEsIDE5NywgMywgMjE3LCAxMTEsIAorICAgIDI2LCAyMDUsIDI0MCwgOCwgNiwgMSwgMTk3LCAzLCA3MywgODgsIDI2LCAxNjksIDgsIDQsIDEsIDE5NywgMywgNzMsIDg4LCAKKyAgICAyNiwgMTY5LCA4LCA2LCAxLCAxOTcsIDMsIDczLCA4OCwgMjYsIDIwNSwgMjQwLCA4LCA0LCAxLCAxOTcsIDMsIDczLCA4OCwgCisgICAgMjYsIDIwNSwgMjQwLCA4LCA0LCAxLCAyMzMsIDE5LCAzLCA3MywgODgsIDI2LCAyMzUsIDczLCA4LCA0LCAxLCAyMzMsIDE5LCAKKyAgICAzLCA3MywgODgsIDI2LCAyMDUsIDI0MCwgOCwgNiwgMSwgMjMzLCAxOSwgMywgMjE3LCAxMTEsIDI2LCAxNjksIDgsIDQsIDEsIAorICAgIDIzMywgMTksIDMsIDIxNywgMTExLCAyNiwgNzMsIDg4LCAyNiwgMTY5LCA4LCA2LCAxLCAyMzMsIDE5LCAzLCAyMTcsIDExMSwgCisgICAgMjYsIDIwNSwgMjQwLCA4LCA0LCAxLCAyMzMsIDE5LCAzLCAyMTcsIDExMSwgMjYsIDczLCA4OCwgMjYsIDIwNSwgMjQwLCA4LCAKKyAgICA2LCAxLCAyMjcsIDI1MiwgMywgMjA1LCAyNDAsIDgsIDQsIDEsIDIyNywgMjUyLCAzLCA3MywgODgsIDI2LCAyMDUsIDI0MCwgCisgICAgOCwgNiwgMSwgMjI1LCAxOTMsIDMsIDIwNSwgMjQwLCA4LCA0LCAxLCAyMjUsIDE5MywgMywgMjA1LCAyNDAsIDgsIDYsIDEsIAorICAgIDIyMywgMjQ0LCAzLCAyMDUsIDI0MCwgOCwgNCwgMSwgMjIzLCAyNDQsIDMsIDIwNSwgMjQwLCA4LCA2LCAxLCAyMTQsIDMzLCAKKyAgICAzLCAyMDUsIDI0MCwgOCwgNCwgMSwgMjE0LCAzMywgMywgMjA1LCAyNDAsIDgsIDYsIDEsIDEwOCwgMywgMjE3LCAxMTEsIAorICAgIDI2LCAxNjksIDgsIDQsIDEsIDEwOCwgMywgMjE3LCAxMTEsIDI2LCAxNjksIDgsIDYsIDEsIDEwOCwgMywgMjE3LCAxMTEsIAorICAgIDI2LCAyMDUsIDI0MCwgOCwgNCwgMSwgMTA4LCAzLCAyMTcsIDExMSwgMjYsIDIwNSwgMjQwLCA4LCA2LCAxLCAxMDgsIDMsIAorICAgIDIyMiwgMjI5LCAyNiwgMTY5LCA4LCA0LCAxLCAxMDgsIDMsIDIyMiwgMjI5LCAyNiwgMTY5LCA4LCA2LCAxLCAxMDgsIDMsIAorICAgIDIyMiwgMjI5LCAyNiwgMjA1LCAyNDAsIDgsIDQsIDEsIDEwOCwgMywgMjIyLCAyMjksIDI2LCAyMDUsIDI0MCwgOCwgNCwgMSwgCisgICAgMjUxLCAyMjIsIDMsIDIzNSwgNzMsIDgsIDQsIDEsIDE3NiwgMTYzLCAzLCAyMzUsIDczLCA4LCA0LCAxLCAxNzYsIDE2MywgCisgICAgMywgMTY5LCA4LCA0LCAxLCAyMDQsIDE4NSwgMjAzLCAxNjksIDMsIDIzNSwgNzMsIDgsIDQsIDEsIDIwNCwgMTg1LCAyMDMsIAorICAgIDE2OSwgMywgMTY5LCA4LCA0LCAxLCAyMTEsIDIxOSwgMywgMjM1LCA3MywgOCwgNCwgMSwgMjExLCAyMTksIDMsIDE2OSwgOCwgCisgICAgNCwgMSwgMjMzLCAxODYsIDIxMSwgMjE5LCAzLCAyMzUsIDczLCA4LCA0LCAxLCAyMzMsIDE4NiwgMjExLCAyMTksIDMsIAorICAgIDE2OSwgOSwgMjEwLCAxNTEsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDI1MSwgMTQyLCA5LCAyMTAsIDE1MSwgOTAsIDMsIAorICAgIDIzNCwgMjA0LCA4OCwgMywgMjAxLCA3MiwgOSwgMjEwLCAxNTEsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDE0MCwgMjIyLCAKKyAgICAxODcsIDksIDIxMCwgMTUxLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAyMTcsIDEyMSwgOSwgMjEwLCAxNTEsIDkwLCAzLCAKKyAgICAyMzQsIDIwNCwgODgsIDMsIDY2LCA5LCAyMTAsIDE1MSwgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMTk5LCAyMTEsIDksIAorICAgIDIxMCwgMTUxLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCA3MiwgOSwgMjEwLCAxNTEsIDkwLCAzLCAyMzQsIDIwNCwgODgsIAorICAgIDMsIDI1MSwgMjIxLCA5LCAyMTAsIDE1MSwgMjE4LCAyMjgsIDMsIDIyNiwgMjUyLCAxODUsIDEsIDIyNiwgMTgyLCA0NSwgCisgICAgMTExLCAyMjcsIDExOCwgNDUsIDExMSwgMjE5LCAyNTUsIDQ1LCAxMTEsIDI0NywgMjIzLCA0NSwgMTExLCAyMTgsIDYyLCAKKyAgICA0NSwgMTExLCAyMDUsIDAsIDQ1LCAxMTEsIDIxOSwgMjIsIDQ1LCAxMTEsIDIwNywgODMsIDQ1LCAxMTEsIDIyMCwgMjE0LCAKKyAgICA0NSwgMTExLCAyMTYsIDIyNiwgNDUsIDExMSwgMjIzLCAyNDMsIDQ1LCAxMTEsIDIwMCwgMTIzLCA0NSwgMTExLCAxNDYsIAorICAgIDQ1LCAxMTEsIDE1NiwgNDUsIDExMSwgMjAzLCAxNjgsIDQ1LCAxMTEsIDIyNCwgMTMwLCA0NSwgMTExLCAyMjQsIDEzOSwgCisgICAgNDUsIDExMSwgMjEyLCAyMTYsIDQ1LCAxMTEsIDIxOSwgNCwgNDUsIDExMSwgMjI3LCAyNTEsIDQ1LCAxMTEsIDIxMCwgMTE2LCAKKyAgICA0NSwgMTExLCAyMDgsIDE4MiwgNDUsIDExMSwgMjEyLCAxMjIsIDQ1LCAxMTEsIDIzNCwgMjQ3LCA0NSwgMTExLCAyMjYsIAorICAgIDMwLCA0NSwgNSwgMjI3LCAxMDUsIDQ1LCA1LCAyMjYsIDE2MywgNDUsIDUsIDIyNiwgMTUwLCA0NSwgNSwgMjI2LCAxNSwgCisgICAgNDUsIDUsIDIyNSwgMjM2LCA0NSwgNSwgMjI3LCA4LCA0NSwgNSwgMjI3LCA1LCA0NSwgNSwgMjI3LCA4MiwgNDUsIDUsIAorICAgIDIyNiwgODgsIDQ1LCA1LCAyMjYsIDY4LCA0NSwgNSwgMjI3LCAyNiwgNDUsIDUsIDIxOSwgMjUyLCA0NSwgNSwgMjE5LCAKKyAgICAyMDEsIDQ1LCA1LCAyMTksIDE5NywgNDUsIDUsIDIxOSwgMTY2LCA0NSwgNSwgMjE5LCAxNTgsIDQ1LCA1LCAyMTksIDI0MCwgCisgICAgNDUsIDUsIDIxOSwgMjM4LCA0NSwgNSwgMjE5LCAyNDksIDQ1LCA1LCAyMTksIDE3OCwgNDUsIDUsIDIxOSwgMTczLCA0NSwgCisgICAgNSwgMjE5LCAyNDIsIDQ1LCA1LCAyNDcsIDE4OSwgNDUsIDUsIDI0NiwgMTczLCA0NSwgNSwgMjQ2LCAxNjMsIDQ1LCA1LCAKKyAgICAyNDIsIDIxNCwgNDUsIDUsIDI0MiwgMTc4LCA0NSwgNSwgMjQ3LCA3NiwgNDUsIDUsIDI0NywgNjgsIDQ1LCA1LCAyNDcsIAorICAgIDE3OCwgNDUsIDUsIDI0NiwgOTEsIDQ1LCA1LCAyNDMsIDMwLCA0NSwgNSwgMjQ3LCAxMDksIDQ1LCA1LCAyMTgsIDU5LCA0NSwgCisgICAgNSwgMjE4LCA0MSwgNDUsIDUsIDIxOCwgMzYsIDQ1LCA1LCAyMTgsIDE5LCA0NSwgNSwgMjE4LCAxMSwgNDUsIDUsIDIxOCwgCisgICAgNTAsIDQ1LCA1LCAyMTgsIDQ5LCA0NSwgNSwgMjE4LCA1NiwgNDUsIDUsIDIxOCwgMjYsIDQ1LCA1LCAyMTgsIDIzLCA0NSwgCisgICAgNSwgMjE4LCA1MywgNDUsIDUsIDIwNCwgMjUyLCA0NSwgNSwgMjA0LCAyMzIsIDQ1LCA1LCAyMDQsIDIzMSwgNDUsIDUsIAorICAgIDIwNCwgMjIwLCA0NSwgNSwgMjA0LCAyMTcsIDQ1LCA1LCAyMDQsIDI0OCwgNDUsIDUsIDIwNCwgMjQ3LCA0NSwgNSwgMjA0LCAKKyAgICAyNTEsIDQ1LCA1LCAyMDQsIDIzMCwgNDUsIDUsIDIwNCwgMjI5LCA0NSwgNSwgMjA0LCAyNTAsIDQ1LCA1LCAyMTksIDIwLCAKKyAgICA0NSwgNSwgMjE5LCA2LCA0NSwgNSwgMjE5LCA1LCA0NSwgNSwgMjE4LCAyNDUsIDQ1LCA1LCAyMTgsIDI0NCwgNDUsIDUsIAorICAgIDIxOSwgMTYsIDQ1LCA1LCAyMTksIDE1LCA0NSwgNSwgMjE5LCAxOSwgNDUsIDUsIDIxOCwgMjQ3LCA0NSwgNSwgMjE4LCAKKyAgICAyNDYsIDQ1LCA1LCAyMTksIDE4LCA0NSwgNSwgMjA3LCAzMiwgNDUsIDUsIDIwNiwgMTUsIDQ1LCA1LCAyMDUsIDI1NSwgNDUsIAorICAgIDUsIDIwNCwgMjE1LCA0NSwgNSwgMjA0LCAxNzYsIDQ1LCA1LCAyMDYsIDIwMSwgNDUsIDUsIDIwNiwgMTkwLCA0NSwgNSwgCisgICAgMjA3LCA4LCA0NSwgNSwgMTM4LCA0NSwgNSwgMjA1LCAxNjEsIDQ1LCA1LCAyMDYsIDIyMSwgNDUsIDUsIDIyMCwgMTU3LCAKKyAgICA0NSwgNSwgMjE5LCAxNTAsIDQ1LCA1LCAyMTksIDEyNSwgNDUsIDUsIDIxOCwgMTMzLCA0NSwgNSwgMjE4LCA3NCwgNDUsIDUsIAorICAgIDIyMCwgMzQsIDQ1LCA1LCAyMjAsIDI5LCA0NSwgNSwgMjIwLCAxNDMsIDQ1LCA1LCAyMTgsIDI0MSwgNDUsIDUsIDIxOCwgCisgICAgMjI5LCA0NSwgNSwgMjIwLCAxMTYsIDQ1LCA1LCAyMTYsIDIxMCwgNDUsIDUsIDIxNSwgMjA0LCA0NSwgNSwgMjE1LCAxNjYsIAorICAgIDQ1LCA1LCAyMTQsIDIyNCwgNDUsIDUsIDIxNCwgMTkwLCA0NSwgNSwgMjE2LCA3MywgNDUsIDUsIDIxNiwgNjEsIDQ1LCA1LCAKKyAgICAyMTYsIDE5MCwgNDUsIDUsIDIxNSwgMTA2LCA0NSwgNSwgMjE1LCA4MSwgNDUsIDUsIDIxNiwgODcsIDQ1LCA1LCAyMjIsIAorICAgIDIzMywgNDUsIDUsIDIyMSwgMjExLCA0NSwgNSwgMjIxLCAxODEsIDQ1LCA1LCAyMjEsIDQxLCA0NSwgNSwgMjIwLCAyNDMsIAorICAgIDQ1LCA1LCAyMjIsIDc2LCA0NSwgNSwgMjIyLCA2NCwgNDUsIDUsIDIyMiwgMTk4LCA0NSwgNSwgMjIxLCAxMzYsIDQ1LCA1LCAKKyAgICAyMjEsIDg3LCA0NSwgNSwgMjIyLCAxMjMsIDQ1LCA1LCAyMDAsIDEwOSwgNDUsIDUsIDIwMCwgOSwgNDUsIDUsIDIwMCwgMCwgCisgICAgNDUsIDUsIDE5OSwgMjExLCA0NSwgNSwgMTk5LCAxNzksIDQ1LCA1LCAyMDAsIDUxLCA0NSwgNSwgMjAwLCA0OCwgNDUsIDUsIAorICAgIDIwMCwgODgsIDQ1LCA1LCAxOTksIDI0NSwgNDUsIDUsIDE5OSwgMjMwLCA0NSwgNSwgMjAwLCA2MSwgNDUsIDUsIDIxMywgCisgICAgMjQ4LCA0NSwgNSwgMjEzLCA4OCwgNDUsIDUsIDIxMywgMzMsIDQ1LCA1LCAyMTIsIDE3NSwgNDUsIDUsIDIxMiwgMTQzLCAKKyAgICA0NSwgNSwgMjEzLCAxOTAsIDQ1LCA1LCAyMTMsIDE2NywgNDUsIDUsIDIxMywgMjI5LCA0NSwgNSwgMjEzLCAxLCA0NSwgNSwgCisgICAgMjEyLCAyMzgsIDQ1LCA1LCAyMTMsIDE5OSwgNDUsIDUsIDIyNSwgMTc1LCA0NSwgNSwgMjI0LCAyMTAsIDQ1LCA1LCAyMjQsIAorICAgIDE5MiwgNDUsIDUsIDIyNCwgNDIsIDQ1LCA1LCAyMjQsIDEzLCA0NSwgNSwgMjI1LCA0MCwgNDUsIDUsIDIyNSwgMzIsIDQ1LCAKKyAgICA1LCAyMjUsIDE0OSwgNDUsIDUsIDIyNCwgMTEwLCA0NSwgNSwgMjI0LCA3OCwgNDUsIDUsIDIyNSwgNTgsIDQ1LCA1LCAyMDMsIAorICAgIDg5LCA0NSwgNSwgMjAyLCAyMzQsIDQ1LCA1LCAyMDIsIDIxOSwgNDUsIDUsIDIwMSwgMTY2LCA0NSwgNSwgMjAxLCAxNTksIAorICAgIDQ1LCA1LCAyMDMsIDU5LCA0NSwgNSwgMjAzLCA1NCwgNDUsIDUsIDIwMywgODUsIDQ1LCA1LCAyMDIsIDE5MywgNDUsIDUsIAorICAgIDIwMiwgMTc5LCA0NSwgNSwgMjAzLCA2NSwgNDUsIDUsIDIyNCwgMTI4LCA0NSwgNSwgMjI0LCAxMjMsIDQ1LCA1LCAyMjQsIAorICAgIDEyMiwgNDUsIDUsIDIyNCwgMTE5LCA0NSwgNSwgMjI0LCAxMTgsIDQ1LCA1LCAyMjQsIDEyNSwgNDUsIDUsIDIyNCwgMTI0LCAKKyAgICA0NSwgNSwgMjI0LCAxMjcsIDQ1LCA1LCAyMjQsIDEyMSwgNDUsIDUsIDIyNCwgMTIwLCA0NSwgNSwgMjI0LCAxMjYsIDQ1LCAKKyAgICA1LCAyMjQsIDEzNywgNDUsIDUsIDIyNCwgMTMyLCA0NSwgNSwgMjI0LCAxMzEsIDQ1LCA1LCAyMjQsIDExNSwgNDUsIDUsIAorICAgIDIyNCwgMTE0LCA0NSwgNSwgMjI0LCAxMzQsIDQ1LCA1LCAyMjQsIDEzMywgNDUsIDUsIDIyNCwgMTM2LCA0NSwgNSwgMjI0LCAKKyAgICAxMTcsIDQ1LCA1LCAyMjQsIDExNiwgNDUsIDUsIDIyNCwgMTM1LCA0NSwgNSwgMjEyLCAyMTQsIDQ1LCA1LCAyMTIsIDIwMywgCisgICAgNDUsIDUsIDIxMiwgMjAyLCA0NSwgNSwgMjEyLCAxOTUsIDQ1LCA1LCAyMTIsIDE4OCwgNDUsIDUsIDIxMiwgMjEwLCA0NSwgCisgICAgNSwgMjEyLCAyMDksIDQ1LCA1LCAyMTIsIDIxMywgNDUsIDUsIDIxMiwgMjAxLCA0NSwgNSwgMjEyLCAyMDAsIDQ1LCA1LCAKKyAgICAyMTIsIDIxMiwgNDUsIDUsIDIxOSwgMiwgNDUsIDUsIDIxOCwgMjUzLCA0NSwgNSwgMjE4LCAyNTIsIDQ1LCA1LCAyMTgsIAorICAgIDI0OSwgNDUsIDUsIDIxOCwgMjQ4LCA0NSwgNSwgMjE4LCAyNTUsIDQ1LCA1LCAyMTgsIDI1NCwgNDUsIDUsIDIxOSwgMSwgCisgICAgNDUsIDUsIDIxOCwgMjUxLCA0NSwgNSwgMjE4LCAyNTAsIDQ1LCA1LCAyMTksIDAsIDQ1LCA1LCAyMjcsIDI0NywgNDUsIDUsIAorICAgIDIyNywgMjA3LCA0NSwgNSwgMjI3LCAyMDAsIDQ1LCA1LCAyMjcsIDE0NywgNDUsIDUsIDIyNywgMTI4LCA0NSwgNSwgMjI3LCAKKyAgICAyMjcsIDQ1LCA1LCAyMjcsIDIyNSwgNDUsIDUsIDIyNywgMjQxLCA0NSwgNSwgMjI3LCAxNjYsIDQ1LCA1LCAyMjcsIDE1NiwgCisgICAgNDUsIDUsIDIyNywgMjM0LCA0NSwgNSwgMjEwLCAxMDksIDQ1LCA1LCAyMTAsIDMzLCA0NSwgNSwgMjEwLCAyOCwgNDUsIDUsIAorICAgIDIwOSwgMjIwLCA0NSwgNSwgMjA5LCAyMDMsIDQ1LCA1LCAyMTAsIDY1LCA0NSwgNSwgMjEwLCA2MywgNDUsIDUsIDIxMCwgCisgICAgOTgsIDQ1LCA1LCAyMTAsIDgsIDQ1LCA1LCAyMTAsIDIsIDQ1LCA1LCAyMTAsIDc0LCA0NSwgNSwgMjA4LCAxNzgsIDQ1LCA1LCAKKyAgICAyMDgsIDE0NywgNDUsIDUsIDIwOCwgMTQzLCA0NSwgNSwgMjA4LCAxMzQsIDQ1LCA1LCAyMDgsIDEzMSwgNDUsIDUsIDIwOCwgCisgICAgMTUzLCA0NSwgNSwgMjA4LCAxNTIsIDQ1LCA1LCAyMDgsIDE3NywgNDUsIDUsIDIwOCwgMTM5LCA0NSwgNSwgMjA4LCAxMzgsIAorICAgIDQ1LCA1LCAyMDgsIDE1NSwgNDUsIDUsIDIxMiwgNjEsIDQ1LCA1LCAyMDksIDE4MiwgNDUsIDUsIDIwOSwgMTYxLCA0NSwgNSwgCisgICAgMjA4LCAyNCwgNDUsIDUsIDIwNywgMTkzLCA0NSwgNSwgMjExLCAyMDIsIDQ1LCA1LCAyMTEsIDE5MCwgNDUsIDUsIDIxMiwgCisgICAgNDYsIDQ1LCA1LCAyMDksIDI5LCA0NSwgNSwgMjA5LCAxMCwgNDUsIDUsIDIxMSwgMjQzLCA0NSwgNSwgMjM0LCAyMzMsIDQ1LCAKKyAgICA1LCAyMzQsIDc1LCA0NSwgNSwgMjM0LCA1NCwgNDUsIDUsIDIzMywgOTcsIDQ1LCA1LCAyMzMsIDcxLCA0NSwgNSwgMjM0LCAKKyAgICAxMzksIDQ1LCA1LCAyMzQsIDEyMCwgNDUsIDUsIDIzNCwgMjIzLCA0NSwgNSwgMjMzLCAyMDcsIDQ1LCA1LCAyMzMsIDE4OCwgCisgICAgNDUsIDUsIDIzNCwgMTUwLCA0NSwgNSwgMjI2LCAyOSwgNDUsIDUsIDIyNiwgMjgsIDQ1LCA1LCAyMjYsIDIzLCA0NSwgNSwgCisgICAgMjI2LCAyMiwgNDUsIDUsIDIyNiwgMTksIDQ1LCA1LCAyMjYsIDE4LCA0NSwgNSwgMjI2LCAyNSwgNDUsIDUsIDIyNiwgMjQsIAorICAgIDQ1LCA1LCAyMjYsIDI3LCA0NSwgNSwgMjI2LCAyMSwgNDUsIDUsIDIyNiwgMjAsIDQ1LCA1LCAyMjYsIDI2LCA0NSwgNSwgCisgICAgMjA5LCAyMjcsIDE0MywgMTExLCAyLCAyMDAsIDc0LCAxNDMsIDExMSwgMiwgMjEzLCAyMTgsIDE0MywgMTExLCAyLCAyMTMsIAorICAgIDEzNCwgMTE4LCAxLCAyMDQsIDEwMiwgODYsIDExMSwgMiwgMjQ2LCA4NiwgMTYxLCA4NiwgMTExLCAyLCAyNDYsIDg2LCAKKyAgICAyMjYsIDIwNywgODYsIDExMSwgMiwgMjQ2LCA4NiwgMjI2LCA4OCwgODYsIDExMSwgMiwgMjQ2LCA4NiwgMjI2LCAxNzgsIAorICAgIDg2LCAxMTEsIDIsIDI0NiwgODYsIDIxOSwgMTc4LCA4NiwgMTExLCAyLCAyNDYsIDg2LCAyNDcsIDE5MCwgODYsIDExMSwgMiwgCisgICAgMjQ2LCA4NiwgMjQ3LCAzNywgODYsIDExMSwgMiwgMjQ2LCA4NiwgMjQ2LCA5MSwgODYsIDExMSwgMiwgMjQ2LCA4NiwgMjQ2LCAKKyAgICAyMTAsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDIxOCwgMjYsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDI0MiwgNTgsIDg2LCAxMTEsIAorICAgIDIsIDI0NiwgODYsIDIwNCwgMjQxLCA4NiwgMTExLCAyLCAyNDYsIDg2LCAyNDAsIDIxMSwgODYsIDExMSwgMiwgMjQ2LCA4NiwgCisgICAgMjA0LCAyMzYsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDE4OCwgODYsIDExMSwgMiwgMjQ2LCA4NiwgMjA3LCAzNiwgODYsIAorICAgIDExMSwgMiwgMjQ2LCA4NiwgMjA2LCAxMjIsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDEzOCwgODYsIDExMSwgMiwgMjQ2LCA4NiwgCisgICAgMjA2LCA2MSwgODYsIDExMSwgMiwgMjQ2LCA4NiwgMjE4LCAyNDEsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDI0OSwgMTM2LCAKKyAgICA4NiwgMTExLCAyLCAyNDYsIDg2LCAyMTUsIDI0NSwgODYsIDExMSwgMiwgMjQ2LCA4NiwgMjE1LCAxMDYsIDg2LCAxMTEsIDIsIAorICAgIDI0NiwgODYsIDIxNSwgMjE3LCA4NiwgMTExLCAyLCAyNDYsIDg2LCAyMjEsIDEzNiwgODYsIDExMSwgMiwgMjQ2LCA4NiwgCisgICAgMTk5LCAyNDUsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDIxMywgMSwgODYsIDExMSwgMiwgMjQ2LCA4NiwgMjI0LCAxMTAsIDg2LCAKKyAgICAxMTEsIDIsIDI0NiwgODYsIDIwMiwgMTkzLCA4NiwgMTExLCAyLCAyNDYsIDg2LCAyMTAsIDExNCwgODYsIDExMSwgMiwgCisgICAgMjQ2LCA4NiwgMjA4LCAxNzksIDg2LCAxMTEsIDIsIDI0NiwgODYsIDIxMiwgNjQsIDg2LCAxMTEsIDIsIDI0NiwgODYsIAorICAgIDE0NCwgODYsIDExMSwgMiwgMjQ2LCA4NiwgMTk0LCA4NiwgMjIsIDIsIDI0NiwgODYsIDIxNCwgMTU5LCA4NiwgMjI4LCAKKyAgICAxMDQsIDIyLCAyLCAyNDYsIDg2LCAyMTQsIDk3LCA4NiwgMjI4LCAxMDQsIDIyLCAyLCAyNDYsIDg2LCAyMTIsIDEzMSwgODYsIAorICAgIDIyOCwgMTA0LCAyMiwgMiwgMjQ2LCA4NiwgMjEyLCAxMjQsIDg2LCAyMjgsIDEwNCwgMjIsIDIsIDI0NiwgODYsIDIxNCwgCisgICAgMTM5LCA4NiwgMjIsIDIsIDIxNywgODYsIDg2LCAyMiwgMiwgMjUyLCA5OSwgMTc3LCAxLCAyNDgsIDE4MSwgMjE5LCAyNTMsIAorICAgIDE3NywgMSwgMjQ4LCAxODEsIDIxOSwgMjAxLCAxNzcsIDEsIDI0OCwgMTgxLCAyMTksIDE2NiwgMTc3LCAxLCAyNDgsIDE4MSwgCisgICAgMjE5LCAyNDAsIDE3NywgMSwgMjQ4LCAxODEsIDIxOSwgMTc4LCA2OSwgMSwgMjQ4LCAxODEsIDIxOSwgMjUzLCA2OSwgMSwgCisgICAgMjQ4LCAxODEsIDIxOSwgMjAxLCA2OSwgMSwgMjQ4LCAxODEsIDIxOSwgMTY2LCA2OSwgMSwgMjQ4LCAxODEsIDIxOSwgMjQwLCAKKyAgICA2OSwgMSwgMjQ4LCAxODEsIDIxOSwgMTc4LCA2OSwgMSwgMjUxLCAxNjksIDI0NywgNzYsIDY5LCAxLCAyNTEsIDE2OSwgCisgICAgMjA0LCAyMTUsIDY5LCAxLCAyNTEsIDE2OSwgMTM4LCA2OSwgMSwgMjUxLCAxNjksIDIxNiwgMjI2LCA2NywgMSwgMjM4LCAKKyAgICAyOSwgMjM4LCAyOCwgMjQzLCAzOCwgMTUwLCAxNDgsIDY3LCAxLCAyMzgsIDI4LCAyMzgsIDI5LCAyNDMsIDM4LCAxNTAsIAorICAgIDE0OCwgCiB9OwogCiBzdGF0aWMgdW5zaWduZWQgY2hhciBwaHJhc2Vib29rX29mZnNldDFbXSA9IHsKQEAgLTE2NTMzLDIwICsxNzY0OSwyMCBAQAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDY3LCA2OCwgNjksIDcwLCA3MSwgNzIsIAogICAgIDczLCA3NCwgNzUsIDc2LCA3NywgNzgsIDc5LCA4MCwgODEsIDgyLCA4MywgODQsIDg1LCA4NiwgNTIsIDg3LCA1MiwgODgsIAotICAgIDg5LCA5MCwgOTEsIDkyLCA5MywgOTQsIDk1LCA5NiwgNTIsIDk3LCA1MiwgNTIsIDUyLCA1MiwgNTIsIDk4LCA5OSwgMTAwLCAKLSAgICAxMDEsIDEwMiwgMTAzLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgMTA0LCAxMDUsIDEwNiwgCi0gICAgMTA3LCAxMDgsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAotICAgIDEwOSwgMTEwLCAxMTEsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgODksIDkwLCA5MSwgOTIsIDkzLCA5NCwgOTUsIDk2LCA1MiwgOTcsIDUyLCA5OCwgNTIsIDUyLCA1MiwgOTksIDEwMCwgMTAxLCAKKyAgICAxMDIsIDEwMywgMTA0LCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgMTA1LCAxMDYsIDEwNywgCisgICAgMTA4LCAxMDksIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDExMCwgMTExLCAxMTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCi0gICAgNTIsIDExMiwgMTEzLCAxMTQsIDExNSwgNTIsIDUyLCA1MiwgMTE2LCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCAxMTMsIDExNCwgMTE1LCAxMTYsIDUyLCA1MiwgNTIsIDExNywgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgMTE4LCAxMTksIAorICAgIDEyMCwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKLSAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKLSAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKLSAgICA1MiwgNTIsIDExNywgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAxMTgsIDUyLCA1MiwgNTIsIAotICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAxMTksIDEyMCwgCi0gICAgMTIxLCAxMjIsIDEyMywgMTI0LCAxMjUsIDEyNiwgMTI3LCAxMjgsIDEyOSwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAotICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDEzMCwgNTIsIDUyLCA1MiwgNTIsIDUyLCAxMzEsIDUyLCAxMzIsIDEzMywgMTM0LCAKLSAgICAxMzUsIDEzNiwgMTM3LCAxMzgsIDEzOSwgMTQwLCAxNDEsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgMTIxLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDEyMiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDEyMywgMTI0LCAKKyAgICAxMjUsIDEyNiwgMTI3LCAxMjgsIDEyOSwgMTMwLCAxMzEsIDEzMiwgMTMzLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDEzNCwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDEzNSwgMTM2LCA1MiwgNTIsIDUyLCA1MiwgMTM3LCA1MiwgMTM4LCAxMzksIDE0MCwgCisgICAgMTQxLCAxNDIsIDE0MywgMTQ0LCAxNDUsIDE0NiwgMTQ3LCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKQEAgLTE2NTYwLDcgKzE3Njc2LDcgQEAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKLSAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDE0MiwgMTQzLCAxNDQsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgMTQ4LCAxNDksIDE1MCwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCkBAIC0xNjcxNyw3ICsxNzgzMyw3IEBACiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCi0gICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDE0NSwgMTQ2LCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgMTUxLCAxNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIApAQCAtMTY3MzEsOCArMTc4NDcsOCBAQAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAotICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgMTQ3LCAxNDgsIDE0OSwgCi0gICAgMTUwLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgMTUzLCAxNTQsIDE1NSwgCisgICAgMTU2LCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIApAQCAtMTY3NjgsMTIxNCArMTc4ODQsMTIxNyBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDMsIDYsIDksIDExLCAxNCwgMTcsIDE5LCAyMSwgMjQsIDI3LCAyOSwgMzEsIAogICAgIDMzLCAzNSwgMzksIDQxLCA0NCwgNDYsIDQ4LCA1MCwgNTIsIDU0LCA1NiwgNTksIDYxLCA2NCwgNjYsIDY4LCA3MSwgNzQsIAogICAgIDc3LCA4MCwgODQsIDg4LCA5MywgOTgsIDEwMywgMTA3LCAxMTIsIDExNywgMTIyLCAxMjYsIDEzMSwgMTM2LCAxNDAsIDE0NSwgCi0gICAgMTUwLCAxNTQsIDE1OSwgMTY0LCAxNjgsIDE3MiwgMTc3LCAxODEsIDE4NiwgMTkxLCAxOTYsIDIwMSwgMjA2LCAyMDksIAotICAgIDIxMywgMjE2LCAyMjAsIDIyMywgMjI3LCAyMzEsIDIzNiwgMjQxLCAyNDYsIDI1MCwgMjU1LCAyNjAsIDI2NSwgMjY5LCAKLSAgICAyNzQsIDI3OSwgMjgzLCAyODgsIDI5MywgMjk3LCAzMDIsIDMwNywgMzExLCAzMTUsIDMyMCwgMzI0LCAzMjksIDMzNCwgCi0gICAgMzM5LCAzNDQsIDM0OSwgMzUzLCAzNTYsIDM2MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzYyLCAzNjYsIDM3MSwgCi0gICAgMzc0LCAzNzcsIDM4MCwgMzgzLCAzODYsIDM4OSwgMzkxLCAzOTQsIDQwMCwgNDA4LCA0MTEsIDQxNSwgNDE4LCA0MjAsIAotICAgIDQyMywgNDI2LCA0MjksIDQzMiwgNDM2LCA0MzksIDQ0MiwgNDQ1LCA0NDcsIDQ1MCwgNDU2LCA0NjQsIDQ3MSwgNDc4LCAKLSAgICA0ODUsIDQ5MCwgNDk3LCA1MDMsIDUxMCwgNTE3LCA1MjQsIDUzMiwgNTM3LCA1NDUsIDU1MiwgNTU4LCA1NjUsIDU3MiwgCi0gICAgNTgwLCA1ODcsIDU5NSwgNjAzLCA2MDgsIDYxNiwgNjIzLCA2MjksIDYzNiwgNjQzLCA2NTAsIDY1MywgNjU5LCA2NjYsIAotICAgIDY3MiwgNjc5LCA2ODYsIDY5MywgNjk4LCA3MDQsIDcxMSwgNzE3LCA3MjQsIDczMSwgNzM4LCA3NDYsIDc1MSwgNzU5LCAKLSAgICA3NjYsIDc3MiwgNzc5LCA3ODYsIDc5NCwgODAxLCA4MDksIDgxNywgODIyLCA4MzAsIDgzNywgODQzLCA4NTAsIDg1NywgCi0gICAgODY0LCA4NjcsIDg3MywgODgwLCA4ODYsIDg5MywgOTAwLCA5MDcsIDkxMiwgOTIwLCA5MjcsIDkzNCwgOTQxLCA5NDgsIAotICAgIDk1NSwgOTYyLCA5NjksIDk3NiwgOTg0LCA5OTIsIDEwMDAsIDEwMDgsIDEwMTYsIDEwMjQsIDEwMzIsIDEwNDAsIDEwNDcsIAotICAgIDEwNTQsIDEwNjEsIDEwNjgsIDEwNzUsIDEwODIsIDEwODksIDEwOTYsIDExMDMsIDExMTAsIDExMTcsIDExMjQsIDExMzIsIAotICAgIDExNDAsIDExNDgsIDExNTYsIDExNjQsIDExNzIsIDExODAsIDExODgsIDExOTYsIDEyMDQsIDEyMTEsIDEyMTgsIDEyMjYsIAotICAgIDEyMzQsIDEyNDIsIDEyNTAsIDEyNTgsIDEyNjYsIDEyNzQsIDEyODIsIDEyOTAsIDEyOTYsIDEzMDEsIDEzMDYsIDEzMTQsIAotICAgIDEzMjIsIDEzMzAsIDEzMzgsIDEzNDMsIDEzNTAsIDEzNTcsIDEzNjUsIDEzNzMsIDEzODEsIDEzODksIDEzOTgsIDE0MDcsIAotICAgIDE0MTQsIDE0MjEsIDE0MjgsIDE0MzUsIDE0NDMsIDE0NTEsIDE0NTksIDE0NjcsIDE0NzgsIDE0ODMsIDE0ODgsIDE0OTUsIAotICAgIDE1MDIsIDE1MDksIDE1MTYsIDE1MjMsIDE1MzAsIDE1MzUsIDE1NDAsIDE1NDcsIDE1NTQsIDE1NjIsIDE1NzAsIDE1NzgsIAotICAgIDE1ODYsIDE1OTMsIDE2MDAsIDE2MDgsIDE2MTYsIDE2MjQsIDE2MzIsIDE2NDAsIDE2NDgsIDE2NTYsIDE2NjQsIDE2NzIsIAotICAgIDE2ODAsIDE2ODcsIDE2OTQsIDE3MDEsIDE3MDgsIDE3MTUsIDE3MjIsIDE3MjksIDE3MzYsIDE3NDQsIDE3NTIsIDE3NTksIAotICAgIDE3NjYsIDE3NzMsIDE3ODAsIDE3ODgsIDE3OTYsIDE4MDQsIDE4MTIsIDE4MjAsIDE4MjcsIDE4MzQsIDE4NDIsIDE4NTAsIAotICAgIDE4NTgsIDE4NjYsIDE4NzEsIDE4NzcsIDE4ODMsIDE4OTAsIDE4OTcsIDE5MDIsIDE5MDcsIDE5MTIsIDE5MTksIDE5MjYsIAotICAgIDE5MzMsIDE5NDAsIDE5NDgsIDE5NTYsIDE5NjMsIDE5NjksIDE5NzQsIDE5NzksIDE5ODYsIDE5OTMsIDIwMDAsIDIwMDUsIAotICAgIDIwMTAsIDIwMTUsIDIwMjIsIDIwMjksIDIwMzYsIDIwNDMsIDIwNTAsIDIwNTcsIDIwNjUsIDIwNzUsIDIwODMsIDIwOTAsIAotICAgIDIwOTcsIDIxMDIsIDIxMDcsIDIxMTQsIDIxMjEsIDIxMjUsIDIxMzAsIDIxMzUsIDIxNDAsIDIxNDgsIDIxNTcsIDIxNjQsIAotICAgIDIxNzEsIDIxODAsIDIxODcsIDIxOTQsIDIxOTksIDIyMDYsIDIyMTMsIDIyMjAsIDIyMjcsIDIyMzQsIDIyMzksIDIyNDYsIAotICAgIDIyNTMsIDIyNjEsIDIyNjYsIDIyNzEsIDIyNzYsIDIyODYsIDIyOTAsIDIyOTYsIDIzMDIsIDIzMDgsIDIzMTQsIDIzMjIsIAotICAgIDIzMzUsIDIzNDMsIDIzNDgsIDIzNTgsIDIzNjMsIDIzNjgsIDIzNzgsIDIzODMsIDIzOTAsIDIzOTcsIDI0MDUsIDI0MTMsIAotICAgIDI0MjAsIDI0MjcsIDI0MzQsIDI0NDEsIDI0NTEsIDI0NjEsIDI0NzAsIDI0NzksIDI0ODksIDI0OTksIDI1MDksIDI1MTksIAotICAgIDI1MjUsIDI1MzUsIDI1NDUsIDI1NTUsIDI1NjUsIDI1NzMsIDI1ODEsIDI1ODgsIDI1OTUsIDI2MDMsIDI2MTEsIDI2MTksIAotICAgIDI2MjcsIDI2MzQsIDI2NDEsIDI2NTEsIDI2NjEsIDI2NjksIDI2NzcsIDI2ODUsIDI2OTAsIDI3MDAsIDI3MDUsIDI3MTIsIAotICAgIDI3MTksIDI3MjQsIDI3MjksIDI3MzcsIDI3NDUsIDI3NTUsIDI3NjUsIDI3NzIsIDI3NzksIDI3ODgsIDI3OTcsIDI4MDUsIAotICAgIDI4MTMsIDI4MjIsIDI4MzEsIDI4MzksIDI4NDcsIDI4NTYsIDI4NjUsIDI4NzQsIDI4ODMsIDI4OTMsIDI5MDMsIDI5MTEsIAotICAgIDI5MTksIDI5MjgsIDI5MzcsIDI5NDYsIDI5NTUsIDI5NjUsIDI5NzUsIDI5ODMsIDI5OTEsIDMwMDAsIDMwMDksIDMwMTgsIAotICAgIDMwMjcsIDMwMzYsIDMwNDUsIDMwNTAsIDMwNTUsIDMwNjMsIDMwNzEsIDMwODEsIDMwODksIDMwOTQsIDMwOTksIDMxMDYsIAotICAgIDMxMTMsIDMxMjAsIDMxMjcsIDMxMzQsIDMxNDEsIDMxNTEsIDMxNjEsIDMxNzEsIDMxODEsIDMxODgsIDMxOTUsIDMyMDUsIAotICAgIDMyMTUsIDMyMjMsIDMyMzEsIDMyMzksIDMyNDcsIDMyNTUsIDMyNjIsIDMyNjksIDMyNzYsIDMyODIsIDMyODksIDMyOTYsIAotICAgIDMzMDMsIDMzMTIsIDMzMjIsIDMzMzIsIDMzMzksIDMzNDYsIDMzNTIsIDMzNTcsIDMzNjQsIDMzNzAsIDMzNzYsIDMzODMsIAotICAgIDMzOTAsIDM0MDEsIDM0MTEsIDM0MTgsIDM0MjUsIDM0MzIsIDM0MzksIDM0NDUsIDM0NTAsIDM0NTcsIDM0NjMsIDM0NjgsIAotICAgIDM0NzYsIDM0ODQsIDM0OTEsIDM0OTcsIDM1MDIsIDM1MDksIDM1MTQsIDM1MjEsIDM1MzAsIDM1MzksIDM1NDgsIDM1NTUsIAotICAgIDM1NjEsIDM1NjcsIDM1NzIsIDM1NzksIDM1ODYsIDM1OTMsIDM2MDAsIDM2MDcsIDM2MTIsIDM2MTcsIDM2MjYsIDM2MzQsIAotICAgIDM2NDMsIDM2NDgsIDM2NTUsIDM2NjYsIDM2NzMsIDM2ODEsIDM2OTAsIDM2OTYsIDM3MDIsIDM3MDgsIDM3MTUsIDM3MjAsIAotICAgIDM3MjYsIDM3MzcsIDM3NDYsIDM3NTUsIDM3NjMsIDM3NzEsIDM3ODEsIDM3ODYsIDM3OTMsIDM4MDAsIDM4MDUsIDM4MTcsIAotICAgIDM4MjYsIDM4MzQsIDM4NDEsIDM4NTAsIDM4NTUsIDM4NjAsIDM4NjcsIDM4NzQsIDM4ODEsIDM4ODgsIDM4OTQsIDM5MDMsIAotICAgIDM5MTEsIDM5MTYsIDM5MjQsIDM5MzAsIDM5MzgsIDM5NDYsIDM5NTIsIDM5NTgsIDM5NjQsIDM5NzEsIDM5NzksIDM5ODUsIAotICAgIDM5OTMsIDQwMDAsIDQwMDUsIDQwMTIsIDQwMjAsIDQwMzAsIDQwMzcsIDQwNDQsIDQwNTQsIDQwNjEsIDQwNjgsIDQwNzgsIAotICAgIDQwODUsIDQwOTIsIDQwOTksIDQxMDUsIDQxMTEsIDQxMjEsIDQxMzQsIDQxMzksIDQxNDYsIDQxNTEsIDQxNTUsIDQxNjEsIAotICAgIDQxNzAsIDQxNzcsIDQxODIsIDQxODcsIDQxOTEsIDQxOTYsIDQyMDIsIDQyMDYsIDQyMTIsIDQyMTgsIDQyMjQsIDQyMzAsIAotICAgIDQyMzgsIDQyNDMsIDQyNDgsIDQyNTMsIDQyNTgsIDQyNjQsIDQyNjYsIDQyNzEsIDQyNzUsIDQyODEsIDQyODcsIDQyOTMsIAotICAgIDQyOTgsIDQzMDUsIDQzMTIsIDQzMTgsIDQzMjUsIDQzMzMsIDQzNDEsIDQzNDYsIDQzNTEsIDQzNTUsIDQzNjAsIDQzNjIsIAotICAgIDQzNjQsIDQzNjcsIDQzNjksIDQzNzIsIDQzNzcsIDQzODIsIDQzODgsIDQzOTMsIDQzOTcsIDQ0MDEsIDQ0MDYsIDQ0MTUsIAotICAgIDQ0MjEsIDQ0MjYsIDQ0MzIsIDQ0MzcsIDQ0NDMsIDQ0NTEsIDQ0NTksIDQ0NjMsIDQ0NjcsIDQ0NzIsIDQ0NzgsIDQ0ODQsIAotICAgIDQ0OTAsIDQ0OTYsIDQ1MDEsIDQ1MDgsIDQ1MTYsIDQ1MjQsIDQ1MjksIDQ1MzUsIDQ1NDIsIDQ1NDksIDQ1NTYsIDQ1NjMsIAotICAgIDQ1NjcsIDQ1NzIsIDQ1NzcsIDQ1ODIsIDQ1ODcsIDQ1OTIsIDQ1OTUsIDQ1OTgsIDQ2MDEsIDQ2MDQsIDQ2MDcsIDQ2MTAsIAotICAgIDQ2MTQsIDQ2MTgsIDQ2MjQsIDQ2MjcsIDQ2MzIsIDQ2MzgsIDQ2NDQsIDQ2NDcsIDQ2NTIsIDQ2NTgsIDQ2NjIsIDQ2NjgsIAotICAgIDQ2NzQsIDQ2ODAsIDQ2ODYsIDQ2OTEsIDQ2OTYsIDQ3MDEsIDQ3MDQsIDQ3MTAsIDQ3MTUsIDQ3MjAsIDQ3MjQsIDQ3MjksIAotICAgIDQ3MzUsIDQ3NDEsIDQ3NDQsIDQ3NDgsIDQ3NTIsIDQ3NTYsIDQ3NTksIDQ3NjIsIDQ3NjcsIDQ3NzEsIDQ3NzgsIDQ3ODIsIAotICAgIDQ3ODgsIDQ3OTIsIDQ3OTgsIDQ4MDIsIDQ4MDYsIDQ4MTAsIDQ4MTUsIDQ4MjAsIDQ4MjcsIDQ4MzMsIDQ4NDAsIDQ4NDYsIAotICAgIDQ4NTIsIDQ4NTgsIDQ4NjEsIDQ4NjUsIDQ4NjksIDQ4NzMsIDQ4NzcsIDQ4ODIsIDQ4ODcsIDQ4OTEsIDQ4OTUsIDQ5MDEsIAotICAgIDQ5MDUsIDQ5MDksIDQ5MTQsIDQ5MjAsIDQ5MjUsIDQ5MzEsIDQ5MzUsIDQ5NDIsIDQ5NDcsIDQ5NTEsIDQ5NTYsIDQ5NjEsIAotICAgIDQ5NjcsIDQ5NzAsIDQ5NzQsIDQ5NzksIDQ5ODQsIDQ5OTMsIDQ5OTksIDUwMDQsIDUwMDgsIDUwMTMsIDUwMTcsIDUwMjIsIAotICAgIDUwMjYsIDUwMzAsIDUwMzUsIDUwMzksIDUwNDUsIDUwNTAsIDUwNTUsIDUwNjAsIDUwNjUsIDUwNzAsIDUwNzUsIDUwODEsIAotICAgIDUwODcsIDUwOTMsIDUwOTksIDUxMDQsIDUxMTAsIDUxMTYsIDUxMjIsIDUxMjcsIDUxMzIsIDUxMzksIDUxNDYsIDUxNTAsIAotICAgIDUxNTYsIDUxNjMsIDAsIDAsIDUxNzAsIDUxNzMsIDUxODIsIDUxOTEsIDUyMDIsIDUyMDYsIDAsIDAsIDAsIDAsIDUyMTEsIAotICAgIDUyMTQsIDUyMTksIDUyMjcsIDUyMzIsIDUyNDAsIDUyNDgsIDAsIDUyNTYsIDAsIDUyNjQsIDUyNzIsIDUyODAsIDUyOTEsIAotICAgIDUyOTYsIDUzMDEsIDUzMDYsIDUzMTEsIDUzMTYsIDUzMjEsIDUzMjYsIDUzMzEsIDUzMzYsIDUzNDEsIDUzNDYsIDUzNTEsIAotICAgIDUzNTYsIDUzNjEsIDUzNjYsIDUzNzEsIDAsIDUzNzYsIDUzODEsIDUzODYsIDUzOTEsIDUzOTYsIDU0MDEsIDU0MDYsIAotICAgIDU0MTEsIDU0MTksIDU0MjcsIDU0MzUsIDU0NDMsIDU0NTEsIDU0NTksIDU0NzAsIDU0NzUsIDU0ODAsIDU0ODUsIDU0OTAsIAotICAgIDU0OTUsIDU1MDAsIDU1MDUsIDU1MTAsIDU1MTUsIDU1MjAsIDU1MjUsIDU1MzAsIDU1MzUsIDU1NDAsIDU1NDUsIDU1NTAsIAotICAgIDU1NTUsIDU1NjEsIDU1NjYsIDU1NzEsIDU1NzYsIDU1ODEsIDU1ODYsIDU1OTEsIDU1OTYsIDU2MDQsIDU2MTIsIDU2MjAsIAotICAgIDU2MjgsIDU2MzYsIDU2NDEsIDU2NDUsIDU2NDksIDU2NTYsIDU2NjYsIDU2NzYsIDU2ODAsIDU2ODQsIDU2ODgsIDU2OTQsIAotICAgIDU3MDEsIDU3MDUsIDU3MTAsIDU3MTQsIDU3MTksIDU3MjMsIDU3MjgsIDU3MzIsIDU3MzcsIDU3NDIsIDU3NDcsIDU3NTIsIAotICAgIDU3NTcsIDU3NjIsIDU3NjcsIDU3NzIsIDU3NzcsIDU3ODIsIDU3ODcsIDU3OTIsIDU3OTcsIDU4MDIsIDU4MDcsIDU4MTEsIAotICAgIDU4MTUsIDU4MjEsIDU4MjUsIDU4MzAsIDU4MzYsIDU4NDQsIDU4NDksIDU4NTQsIDU4NjEsIDU4NjYsIDU4NzEsIDU4NzgsIAotICAgIDU4ODcsIDU4OTYsIDU5MDcsIDU5MTUsIDU5MjAsIDU5MjUsIDU5MzAsIDU5MzcsIDU5NDIsIDU5NDgsIDU5NTMsIDU5NTgsIAotICAgIDU5NjMsIDU5NjgsIDU5NzMsIDU5NzgsIDU5ODYsIDU5OTIsIDU5OTcsIDYwMDEsIDYwMDYsIDYwMTEsIDYwMTYsIDYwMjEsIAotICAgIDYwMjYsIDYwMzEsIDYwMzYsIDYwNDAsIDYwNDYsIDYwNTAsIDYwNTUsIDYwNjAsIDYwNjUsIDYwNjksIDYwNzQsIDYwNzksIAotICAgIDYwODQsIDYwODksIDYwOTMsIDYwOTgsIDYxMDIsIDYxMDcsIDYxMTIsIDYxMTcsIDYxMjIsIDYxMjgsIDYxMzMsIDYxMzksIAotICAgIDYxNDMsIDYxNDgsIDYxNTIsIDYxNTYsIDYxNjEsIDYxNjYsIDYxNzEsIDYxNzYsIDYxODEsIDYxODYsIDYxOTEsIDYxOTUsIAotICAgIDYyMDEsIDYyMDUsIDYyMTAsIDYyMTUsIDYyMjAsIDYyMjQsIDYyMjksIDYyMzQsIDYyMzksIDYyNDQsIDYyNDgsIDYyNTMsIAotICAgIDYyNTcsIDYyNjIsIDYyNjcsIDYyNzIsIDYyNzcsIDYyODMsIDYyODgsIDYyOTQsIDYyOTgsIDYzMDMsIDYzMDcsIDYzMTUsIAotICAgIDYzMjAsIDYzMjUsIDYzMzAsIDYzMzcsIDYzNDIsIDYzNDgsIDYzNTMsIDYzNTgsIDYzNjMsIDYzNjgsIDYzNzMsIDYzNzgsIAotICAgIDYzODYsIDYzOTIsIDYzOTcsIDY0MDIsIDY0MDcsIDY0MTIsIDY0MTcsIDY0MjMsIDY0MjksIDY0MzYsIDY0NDMsIDY0NTIsIAotICAgIDY0NjEsIDY0NjgsIDY0NzUsIDY0ODQsIDY0OTMsIDY0OTgsIDY1MDMsIDY1MDgsIDY1MTMsIDY1MTgsIDY1MjMsIDY1MjgsIAotICAgIDY1MzMsIDY1NDQsIDY1NTUsIDY1NjAsIDY1NjUsIDY1NzIsIDY1NzksIDY1ODcsIDY1OTUsIDY2MDAsIDY2MDUsIDY2MTAsIAotICAgIDY2MTUsIDY2MTksIDY2MjMsIDY2MjcsIDY2MzMsIDY2MzksIDY2NDMsIDY2NTAsIDY2NTUsIDY2NjUsIDY2NzUsIDY2ODEsIAotICAgIDY2ODcsIDY2OTUsIDY3MDMsIDY3MTEsIDY3MTksIDY3MjYsIDY3MzMsIDY3NDEsIDY3NDksIDY3NTcsIDY3NjUsIDY3NzMsIAotICAgIDY3ODEsIDY3ODksIDY3OTcsIDY4MDUsIDY4MTMsIDY4MjAsIDY4MjcsIDY4MzMsIDY4MzksIDY4NDcsIDY4NTUsIDY4NjIsIAotICAgIDY4NjksIDY4NzcsIDY4ODUsIDY4OTEsIDY4OTcsIDY5MDUsIDY5MTMsIDY5MjEsIDY5MjksIDY5MzUsIDY5NDEsIDY5NDksIAotICAgIDY5NTcsIDY5NjUsIDY5NzMsIDY5ODAsIDY5ODcsIDY5OTUsIDcwMDMsIDcwMTEsIDcwMTksIDcwMjQsIDcwMjksIDcwMzYsIAotICAgIDcwNDMsIDcwNTMsIDcwNjMsIDcwNjcsIDcwNzUsIDcwODMsIDcwOTAsIDcwOTcsIDcxMDUsIDcxMTMsIDcxMjAsIDcxMjcsIAotICAgIDcxMzUsIDcxNDMsIDcxNTAsIDcxNTcsIDcxNjUsIDcxNzMsIDcxNzgsIDcxODUsIDcxOTIsIDcxOTksIDcyMDYsIDcyMTIsIAotICAgIDcyMTgsIDcyMjYsIDcyMzQsIDcyMzksIDcyNDQsIDcyNTIsIDcyNjAsIDcyNjgsIDcyNzYsIDcyODQsIDcyOTIsIDcyOTksIAotICAgIDczMDYsIDczMTQsIDczMjIsIDczMzAsIDczMzgsIDczNDUsIDczNTIsIDczNTgsIDczNjQsIDczNzMsIDczODIsIDczODksIAotICAgIDczOTYsIDc0MDMsIDc0MTAsIDc0MTcsIDc0MjQsIDc0MzEsIDc0MzgsIDc0NDYsIDc0NTQsIDc0NjIsIDc0NzAsIDc0NzgsIAotICAgIDc0ODYsIDc0OTYsIDc1MDYsIDc1MTMsIDc1MjAsIDc1MjcsIDc1MzQsIDc1NDEsIDc1NDgsIDc1NTUsIDc1NjIsIDc1NjksIAotICAgIDc1NzYsIDc1ODMsIDc1OTAsIDc1OTcsIDc2MDQsIDc2MTEsIDc2MTgsIDc2MjUsIDc2MzIsIDc2MzksIDc2NDYsIDc2NTMsIAotICAgIDc2NjAsIDc2NjcsIDc2NzQsIDc2NzksIDc2ODQsIDc2ODksIDc2OTQsIDc2OTksIDc3MDQsIDc3MDksIDc3MTQsIDc3MTksIAotICAgIDc3MjQsIDc3MzAsIDc3MzYsIDc3NDQsIDc3NTIsIDc3NjAsIDc3NjgsIDc3NzYsIDc3ODQsIDc3OTIsIDc4MDAsIDc4MDgsIAotICAgIDc4MTYsIDc4MjEsIDc4MjYsIDc4MzEsIDc4MzYsIDc4NDQsIDAsIDc4NTIsIDc4NTcsIDc4NjIsIDc4NjcsIDc4NzIsIAotICAgIDc4NzcsIDc4ODIsIDc4ODcsIDc4OTIsIDc4OTYsIDc5MDEsIDc5MDYsIDc5MTEsIDc5MTYsIDc5MjEsIDc5MjYsIDc5MzEsIAotICAgIDc5MzYsIDc5NDEsIDc5NDYsIDc5NTEsIDc5NTYsIDc5NjEsIDc5NjYsIDc5NzEsIDc5NzYsIDc5ODEsIDc5ODYsIDc5OTEsIAotICAgIDc5OTYsIDgwMDEsIDgwMDYsIDgwMTEsIDgwMTYsIDgwMjEsIDgwMjYsIDgwMzEsIDgwMzYsIDAsIDAsIDgwNDEsIDgwNDgsIAotICAgIDgwNTEsIDgwNTUsIDgwNTksIDgwNjIsIDgwNjYsIDAsIDgwNzAsIDgwNzUsIDgwODAsIDgwODUsIDgwOTAsIDgwOTUsIAotICAgIDgxMDAsIDgxMDUsIDgxMTAsIDgxMTQsIDgxMTksIDgxMjQsIDgxMjksIDgxMzQsIDgxMzksIDgxNDQsIDgxNDksIDgxNTQsIAotICAgIDgxNTksIDgxNjQsIDgxNjksIDgxNzQsIDgxNzksIDgxODQsIDgxODksIDgxOTQsIDgxOTksIDgyMDQsIDgyMDksIDgyMTQsIAotICAgIDgyMTksIDgyMjQsIDgyMjksIDgyMzQsIDgyMzksIDgyNDQsIDgyNDksIDgyNTQsIDgyNTksIDAsIDgyNjYsIDgyNzEsIDAsIAotICAgIDAsIDgyNzQsIDgyODAsIDgyODYsIDAsIDgyOTAsIDgyOTUsIDgzMDAsIDgzMDUsIDgzMTIsIDgzMTksIDgzMjQsIDgzMjksIAotICAgIDgzMzQsIDgzMzksIDgzNDQsIDgzNDksIDgzNTQsIDgzNjEsIDgzNjYsIDgzNzMsIDgzODAsIDgzODUsIDgzOTIsIDgzOTcsIAotICAgIDg0MDIsIDg0MDcsIDg0MTQsIDg0MTksIDg0MjQsIDg0MzEsIDg0NDAsIDg0NDUsIDg0NTAsIDg0NTUsIDg0NjAsIDg0NjYsIAotICAgIDg0NzEsIDg0NzgsIDg0ODUsIDg0OTIsIDg0OTcsIDg1MDIsIDg1MDcsIDg1MTIsIDg1MTcsIDg1MjIsIDg1MzIsIDg1MzcsIAotICAgIDg1NDYsIDg1NTEsIDg1NTYsIDg1NjEsIDg1NjYsIDg1NzMsIDg1ODAsIDg1ODcsIDg1OTMsIDg1OTksIDg2MDYsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDg2MTMsIDg2MTcsIDg2MjEsIDg2MjUsIDg2MjksIDg2MzMsIDg2MzcsIDg2NDEsIDg2NDUsIAotICAgIDg2NDksIDg2NTMsIDg2NTgsIDg2NjIsIDg2NjYsIDg2NzEsIDg2NzUsIDg2ODAsIDg2ODQsIDg2ODgsIDg2OTIsIDg2OTcsIAotICAgIDg3MDEsIDg3MDYsIDg3MTAsIDg3MTQsIDg3MTgsIDg3MjIsIDAsIDAsIDAsIDAsIDAsIDg3MjYsIDg3MzMsIDg3NDEsIAotICAgIDg3NDgsIDg3NTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg3NTgsIDg3NjEsIDg3NjUsIDg3NzAsIAotICAgIDg3NzQsIDg3NzgsIDg3ODIsIDg3ODgsIDg3OTQsIDg3OTcsIDg4MDQsIDg4MTMsIDg4MTYsIDg4MTksIDg4MjQsIDg4MzAsIAotICAgIDg4MzQsIDg4NDIsIDg4NDgsIDg4NTQsIDg4NjIsIDg4NjYsIDg4NzEsIDg4ODIsIDg4ODcsIDg4OTEsIDg4OTUsIDg4OTksIAotICAgIDg5MDIsIDAsIDg5MDUsIDg5MTIsIDg5MTYsIDg5MjIsIDg5MjYsIDg5MzMsIDg5NDAsIDg5NDgsIDg5NTUsIDg5NjIsIAotICAgIDg5NjYsIDg5NzAsIDg5NzYsIDg5ODAsIDg5ODQsIDg5ODgsIDg5OTIsIDg5OTYsIDkwMDAsIDkwMDQsIDkwMDgsIDkwMTIsIAotICAgIDkwMTYsIDkwMjAsIDkwMjQsIDkwMjgsIDkwMzIsIDkwMzYsIDkwNDAsIDkwNDQsIDkwNTIsIDkwNjAsIDkwNzAsIDkwNzksIAotICAgIDkwODgsIDkwOTEsIDkwOTUsIDkwOTksIDkxMDMsIDkxMDcsIDkxMTEsIDkxMTUsIDkxMTksIDkxMjMsIDkxMjgsIDkxMzIsIAotICAgIDkxMzUsIDkxMzgsIDkxNDEsIDkxNDQsIDkxNDcsIDkxNTAsIDkxNTMsIDkxNTYsIDkxNjAsIDkxNjQsIDkxNjgsIDkxNzMsIAotICAgIDkxNzgsIDkxODQsIDkxODcsIDkxOTQsIDkyMDMsIDkyMDgsIDkyMTMsIDkyMjAsIDkyMjYsIDkyMzEsIDkyMzUsIDkyMzksIAotICAgIDkyNDMsIDkyNDcsIDkyNTEsIDkyNTUsIDkyNjAsIDkyNjQsIDkyNjksIDkyNzMsIDkyNzgsIDkyODMsIDkyOTAsIDkyOTYsIAotICAgIDkzMDIsIDkzMDgsIDkzMTMsIDkzMjIsIDkzMzEsIDkzMzYsIDkzNDMsIDkzNTAsIDkzNTcsIDkzNjQsIDkzNjgsIDkzNzIsIAotICAgIDkzNzYsIDkzODMsIDkzOTMsIDkzOTcsIDk0MDEsIDk0MDUsIDk0MTIsIDk0MjAsIDk0MjQsIDk0MjgsIDk0MzUsIDk0MzksIAotICAgIDk0NDMsIDk0NDcsIDk0NTQsIDk0NjEsIDk0NzMsIDk0NzcsIDk0ODEsIDk0ODUsIDk0OTUsIDk1MDQsIDk1MDgsIDk1MTYsIAotICAgIDk1MjMsIDk1MzAsIDk1MzksIDk1NTAsIDk1NTgsIDk1NjIsIDk1NzEsIDk1ODIsIDk1OTAsIDk2MDMsIDk2MTEsIDk2MTksIAotICAgIDk2MjcsIDk2MzUsIDk2NDEsIDk2NTAsIDk2NTcsIDk2NjEsIDk2NjksIDk2NzMsIDk2ODAsIDk2ODgsIDk2OTIsIDk2OTgsIAotICAgIDk3MDUsIDk3MTIsIDk3MTYsIDk3MjQsIDk3MjgsIDk3MzUsIDk3MzksIDk3NDcsIDk3NTEsIDk3NTksIDk3NjcsIDk3NzQsIAotICAgIDk3ODIsIDk3OTAsIDk3OTcsIDk4MDMsIDk4MDcsIDk4MTQsIDk4MjIsIDk4MjgsIDk4MzUsIDk4NDIsIDk4NDgsIDk4NTgsIAotICAgIDk4NjYsIDk4NzMsIDk4NzksIDk4ODMsIDk4ODYsIDk4OTAsIDk4OTYsIDk5MDQsIDk5MDgsIDk5MTQsIDk5MjAsIDk5MjcsIAotICAgIDk5MzQsIDk5MzcsIDk5NDQsIDk5NDksIDk5NTgsIDk5NjMsIDk5NjcsIDk5ODAsIDk5OTMsIDk5OTksIDEwMDA2LCAxMDAxMSwgCi0gICAgMTAwMTcsIDEwMDIyLCAxMDAyOCwgMTAwMzgsIDEwMDQ1LCAxMDA1NCwgMTAwNjQsIDEwMDcwLCAxMDA3NSwgMTAwODAsIAotICAgIDEwMDg0LCAxMDA4OCwgMTAwOTMsIDEwMDk4LCAxMDEwNCwgMTAxMTIsIDEwMTIwLCAxMDEzMSwgMTAxMzYsIDEwMTQ1LCAKLSAgICAxMDE1NCwgMTAxNjEsIDEwMTY3LCAxMDE3MywgMTAxNzksIDEwMTg1LCAxMDE5MSwgMTAxOTcsIDEwMjA0LCAxMDIxMCwgCi0gICAgMTAyMTcsIDEwMjI0LCAxMDIzMSwgMTAyMzgsIDEwMjQ0LCAxMDI1MiwgMTAyNjEsIDEwMjY4LCAxMDI3NiwgMTAyODQsIAotICAgIDEwMjkwLCAxMDI5NiwgMTAzMDIsIDEwMzEwLCAxMDMxOCwgMTAzMjgsIDEwMzM4LCAxMDM0MiwgMTAzNDgsIDEwMzU0LCAwLCAKLSAgICAxMDM2MCwgMTAzNjUsIDEwMzcwLCAxMDM3NywgMTAzODIsIDEwMzg3LCAxMDM5NCwgMTAzOTksIDEwNDA4LCAxMDQxMywgCi0gICAgMTA0MTgsIDEwNDIzLCAxMDQyOCwgMTA0MzMsIDEwNDQwLCAxMDQ0NSwgMTA0NTIsIDEwNDU3LCAxMDQ2MiwgMTA0NjcsIAotICAgIDEwNDcyLCAxMDQ3NywgMTA0ODMsIDEwNDg3LCAxMDQ5MiwgMTA0OTksIDEwNTA0LCAxMDUwOSwgMTA1MTQsIDEwNTE5LCAKLSAgICAxMDUyNCwgMTA1MzEsIDEwNTM4LCAxMDU0NSwgMTA1NTAsIDEwNTU1LCAxMDU2MSwgMTA1NjYsIDEwNTcxLCAxMDU3NywgCi0gICAgMTA1ODIsIDEwNTg3LCAxMDU5NSwgMTA2MDMsIDEwNjA4LCAxMDYxMywgMTA2MTksIDEwNjI0LCAxMDYyOSwgMTA2MzMsIAotICAgIDEwNjM5LCAxMDY0MywgMTA2NDcsIDEwNjUzLCAxMDY1OSwgMTA2NjQsIDEwNjY5LCAxMDY3NiwgMTA2ODMsIDEwNjg3LCAwLCAKLSAgICAwLCAxMDY5MSwgMTA2OTgsIDEwNzA1LCAxMDcxMiwgMTA3MjIsIDEwNzM0LCAxMDc0NSwgMTA3NjEsIDEwNzczLCAxMDc4NCwgCi0gICAgMTA3OTIsIDEwNzk5LCAxMDgwOSwgMTA4MjQsIDEwODM1LCAxMDg0MSwgMTA4NTAsIDEwODU4LCAxMDg2OSwgMTA4NzksIAotICAgIDEwODg3LCAxMDg5OCwgMTA5MDUsIDEwOTEzLCAxMDkyNCwgMTA5MzAsIDEwOTM2LCAxMDk0NCwgMTA5NTIsIDEwOTYwLCAKLSAgICAxMDk2NiwgMTA5NzYsIDEwOTg0LCAxMDk5NCwgMTEwMDQsIDExMDE3LCAxMTAzMSwgMTEwNDUsIDExMDU1LCAxMTA2NiwgCi0gICAgMTEwNzcsIDExMDkwLCAxMTEwMywgMTExMTcsIDExMTI5LCAxMTE0MSwgMTExNTQsIDExMTY3LCAxMTE3OSwgMTExOTIsIAotICAgIDExMjAxLCAxMTIwOSwgMTEyMTQsIDExMjE5LCAxMTIyNCwgMTEyMjksIDExMjM0LCAxMTIzOSwgMTEyNDQsIDExMjQ5LCAKLSAgICAxMTI1NCwgMTEyNTksIDExMjY0LCAxMTI2OSwgMTEyNzQsIDExMjc5LCAxMTI4NCwgMTEyODksIDExMjk0LCAxMTI5OSwgCi0gICAgMTEzMDQsIDExMzA5LCAxMTMxNCwgMTEzMTksIDExMzI0LCAxMTMyOSwgMTEzMzQsIDExMzM5LCAxMTM0NCwgMTEzNDksIAotICAgIDExMzU0LCAxMTM1OSwgMTEzNjQsIDExMzY5LCAxMTM3MywgMTEzNzgsIDExMzgzLCAxMTM4OCwgMTEzOTMsIDExMzk4LCAKLSAgICAxMTQwMiwgMTE0MDYsIDExNDEwLCAxMTQxNCwgMTE0MTgsIDExNDIyLCAxMTQyNiwgMTE0MzAsIDExNDM0LCAxMTQzOCwgCi0gICAgMTE0NDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExNDQ3LCAxMTQ1MiwgMTE0NTYsIAotICAgIDExNDYwLCAxMTQ2NCwgMTE0NjgsIDExNDcyLCAxMTQ3NiwgMTE0ODEsIDExNDg1LCAxMTQ5MCwgMTE0OTQsIDExNDk5LCAKLSAgICAxMTUwMywgMTE1MDcsIDExNTExLCAxMTUxNiwgMTE1MjAsIDExNTI1LCAxMTUzMCwgMTE1MzUsIDExNTM5LCAxMTU0NCwgCi0gICAgMTE1NDksIDExNTU0LCAxMTU1OSwgMTE1NjQsIDExNTY5LCAxMTU3NCwgMTE1NzksIDExNTg0LCAxMTU4OCwgMTE1OTMsIAotICAgIDExNjAwLCAxMTYwNCwgMTE2MDksIDExNjE0LCAxMTYxOCwgMTE2MjMsIDExNjI3LCAxMTYzNCwgMTE2NDEsIDExNjQ4LCAKLSAgICAxMTY1NSwgMTE2NjMsIDExNjcxLCAxMTY4MCwgMTE2ODgsIDExNjk1LCAxMTcwMiwgMTE3MTAsIDExNzE2LCAxMTcyMiwgCi0gICAgMTE3MjgsIDExNzM0LCAxMTc0MSwgMTE3NDYsIDExNzUwLCAxMTc1NSwgMCwgMCwgMCwgMCwgMCwgMTE3NTksIDExNzY0LCAKLSAgICAxMTc2OSwgMTE3NzQsIDExNzc5LCAxMTc4NCwgMTE3ODksIDExNzk0LCAxMTc5OSwgMTE4MDQsIDExODA5LCAxMTgxNCwgCi0gICAgMTE4MTksIDExODI0LCAxMTgyOSwgMTE4MzQsIDExODM5LCAxMTg0NCwgMTE4NDksIDExODU0LCAxMTg1OSwgMTE4NjQsIAotICAgIDExODY5LCAxMTg3NCwgMTE4NzksIDExODg0LCAxMTg4OSwgMTE4OTcsIDExOTA0LCAxMTkxMCwgMTE5MTUsIDExOTIzLCAKLSAgICAxMTkzMCwgMTE5MzYsIDExOTQzLCAxMTk0OSwgMTE5NTQsIDExOTYxLCAxMTk2OCwgMTE5NzQsIDExOTc5LCAxMTk4NCwgCi0gICAgMTE5OTAsIDExOTk1LCAxMjAwMCwgMTIwMDYsIDAsIDAsIDEyMDExLCAxMjAxNywgMTIwMjMsIDEyMDI5LCAxMjAzNSwgCi0gICAgMTIwNDEsIDEyMDQ3LCAxMjA1MiwgMTIwNjAsIDEyMDY2LCAxMjA3MiwgMTIwNzgsIDEyMDg0LCAxMjA5MCwgMTIwOTgsIDAsIAotICAgIDEyMTA0LCAxMjEwOSwgMTIxMTQsIDEyMTE5LCAxMjEyNCwgMTIxMjksIDEyMTM0LCAxMjEzOSwgMTIxNDQsIDEyMTQ5LCAKLSAgICAxMjE1NCwgMTIxNTksIDEyMTY0LCAxMjE2OSwgMTIxNzQsIDEyMTc5LCAxMjE4NCwgMTIxODksIDEyMTk0LCAxMjE5OSwgCi0gICAgMTIyMDQsIDEyMjA5LCAxMjIxNCwgMTIyMTksIDEyMjI0LCAxMjIyOSwgMTIyMzQsIDEyMjM5LCAwLCAwLCAxMjI0NCwgMCwgCisgICAgMTUwLCAxNTQsIDE1OSwgMTY0LCAxNjgsIDE3MywgMTc4LCAxODIsIDE4NywgMTkyLCAxOTcsIDIwMiwgMjA3LCAyMTAsIAorICAgIDIxNCwgMjE3LCAyMjEsIDIyNCwgMjI4LCAyMzIsIDIzNywgMjQyLCAyNDcsIDI1MSwgMjU2LCAyNjEsIDI2NiwgMjcwLCAKKyAgICAyNzUsIDI4MCwgMjg0LCAyODksIDI5NCwgMjk4LCAzMDMsIDMwOCwgMzEyLCAzMTcsIDMyMiwgMzI2LCAzMzEsIDMzNiwgCisgICAgMzQxLCAzNDYsIDM1MSwgMzU1LCAzNTgsIDM2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzY0LCAzNjgsIDM3MywgCisgICAgMzc2LCAzNzksIDM4MiwgMzg1LCAzODgsIDM5MSwgMzkzLCAzOTYsIDQwMiwgNDEwLCA0MTMsIDQxNywgNDIwLCA0MjIsIAorICAgIDQyNSwgNDI4LCA0MzEsIDQzNCwgNDM4LCA0NDEsIDQ0NCwgNDQ3LCA0NDksIDQ1MiwgNDU4LCA0NjYsIDQ3MywgNDgwLCAKKyAgICA0ODcsIDQ5MiwgNDk5LCA1MDUsIDUxMiwgNTE5LCA1MjYsIDUzNCwgNTM5LCA1NDcsIDU1NCwgNTYwLCA1NjcsIDU3NCwgCisgICAgNTgyLCA1ODksIDU5NywgNjA1LCA2MTAsIDYxOCwgNjI1LCA2MzEsIDYzOCwgNjQ1LCA2NTIsIDY1NSwgNjYxLCA2NjgsIAorICAgIDY3NCwgNjgxLCA2ODgsIDY5NSwgNzAwLCA3MDcsIDcxNCwgNzIwLCA3MjcsIDczNCwgNzQxLCA3NDksIDc1NCwgNzYyLCAKKyAgICA3NjksIDc3NSwgNzgyLCA3ODksIDc5NywgODA0LCA4MTIsIDgyMCwgODI1LCA4MzMsIDg0MCwgODQ2LCA4NTMsIDg2MCwgCisgICAgODY3LCA4NzAsIDg3NiwgODgzLCA4ODksIDg5NiwgOTAzLCA5MTAsIDkxNSwgOTIzLCA5MzAsIDkzNywgOTQ0LCA5NTEsIAorICAgIDk1OCwgOTY1LCA5NzIsIDk3OSwgOTg3LCA5OTUsIDEwMDMsIDEwMTEsIDEwMTksIDEwMjcsIDEwMzUsIDEwNDMsIDEwNTAsIAorICAgIDEwNTcsIDEwNjQsIDEwNzEsIDEwNzgsIDEwODUsIDEwOTIsIDEwOTksIDExMDYsIDExMTMsIDExMjAsIDExMjcsIDExMzUsIAorICAgIDExNDMsIDExNTEsIDExNTksIDExNjcsIDExNzUsIDExODMsIDExOTEsIDExOTksIDEyMDcsIDEyMTQsIDEyMjEsIDEyMjksIAorICAgIDEyMzcsIDEyNDUsIDEyNTMsIDEyNjEsIDEyNjksIDEyNzcsIDEyODUsIDEyOTMsIDEyOTksIDEzMDQsIDEzMDksIDEzMTcsIAorICAgIDEzMjUsIDEzMzMsIDEzNDEsIDEzNDYsIDEzNTMsIDEzNjAsIDEzNjgsIDEzNzYsIDEzODQsIDEzOTIsIDE0MDEsIDE0MTAsIAorICAgIDE0MTcsIDE0MjQsIDE0MzEsIDE0MzgsIDE0NDYsIDE0NTQsIDE0NjIsIDE0NzAsIDE0ODEsIDE0ODYsIDE0OTEsIDE0OTgsIAorICAgIDE1MDUsIDE1MTIsIDE1MTksIDE1MjYsIDE1MzMsIDE1MzgsIDE1NDMsIDE1NTAsIDE1NTcsIDE1NjUsIDE1NzMsIDE1ODEsIAorICAgIDE1ODksIDE1OTYsIDE2MDMsIDE2MTEsIDE2MTksIDE2MjcsIDE2MzUsIDE2NDMsIDE2NTEsIDE2NTksIDE2NjcsIDE2NzUsIAorICAgIDE2ODMsIDE2OTAsIDE2OTcsIDE3MDQsIDE3MTEsIDE3MTgsIDE3MjUsIDE3MzIsIDE3MzksIDE3NDcsIDE3NTUsIDE3NjIsIAorICAgIDE3NjksIDE3NzYsIDE3ODMsIDE3OTEsIDE3OTksIDE4MDcsIDE4MTUsIDE4MjMsIDE4MzAsIDE4MzcsIDE4NDUsIDE4NTMsIAorICAgIDE4NjEsIDE4NjksIDE4NzUsIDE4ODEsIDE4ODcsIDE4OTQsIDE5MDEsIDE5MDYsIDE5MTEsIDE5MTYsIDE5MjMsIDE5MzAsIAorICAgIDE5MzcsIDE5NDQsIDE5NTIsIDE5NjAsIDE5NjcsIDE5NzMsIDE5NzgsIDE5ODMsIDE5OTAsIDE5OTcsIDIwMDQsIDIwMDksIAorICAgIDIwMTQsIDIwMTksIDIwMjYsIDIwMzMsIDIwNDAsIDIwNDcsIDIwNTQsIDIwNjEsIDIwNjksIDIwNzksIDIwODcsIDIwOTQsIAorICAgIDIxMDEsIDIxMDYsIDIxMTEsIDIxMTgsIDIxMjUsIDIxMjksIDIxMzQsIDIxMzksIDIxNDQsIDIxNTIsIDIxNjEsIDIxNjgsIAorICAgIDIxNzUsIDIxODQsIDIxOTEsIDIxOTgsIDIyMDMsIDIyMTAsIDIyMTcsIDIyMjQsIDIyMzEsIDIyMzgsIDIyNDMsIDIyNTAsIAorICAgIDIyNTcsIDIyNjUsIDIyNzAsIDIyNzUsIDIyODAsIDIyOTAsIDIyOTQsIDIzMDAsIDIzMDYsIDIzMTIsIDIzMTgsIDIzMjYsIAorICAgIDIzMzksIDIzNDcsIDIzNTIsIDIzNjIsIDIzNjcsIDIzNzIsIDIzODIsIDIzODcsIDIzOTQsIDI0MDEsIDI0MDksIDI0MTcsIAorICAgIDI0MjQsIDI0MzEsIDI0MzgsIDI0NDUsIDI0NTUsIDI0NjUsIDI0NzQsIDI0ODMsIDI0OTMsIDI1MDMsIDI1MTMsIDI1MjMsIAorICAgIDI1MjksIDI1MzksIDI1NDksIDI1NTksIDI1NjksIDI1NzcsIDI1ODUsIDI1OTIsIDI1OTksIDI2MDcsIDI2MTUsIDI2MjMsIAorICAgIDI2MzEsIDI2MzgsIDI2NDUsIDI2NTUsIDI2NjUsIDI2NzMsIDI2ODEsIDI2ODksIDI2OTQsIDI3MDQsIDI3MDksIDI3MTYsIAorICAgIDI3MjMsIDI3MjgsIDI3MzMsIDI3NDEsIDI3NDksIDI3NTksIDI3NjksIDI3NzYsIDI3ODMsIDI3OTIsIDI4MDEsIDI4MDksIAorICAgIDI4MTcsIDI4MjYsIDI4MzUsIDI4NDMsIDI4NTEsIDI4NjAsIDI4NjksIDI4NzgsIDI4ODcsIDI4OTcsIDI5MDcsIDI5MTUsIAorICAgIDI5MjMsIDI5MzIsIDI5NDEsIDI5NTAsIDI5NTksIDI5NjksIDI5NzksIDI5ODcsIDI5OTUsIDMwMDQsIDMwMTMsIDMwMjIsIAorICAgIDMwMzEsIDMwNDAsIDMwNDksIDMwNTQsIDMwNTksIDMwNjcsIDMwNzUsIDMwODUsIDMwOTMsIDMwOTgsIDMxMDMsIDMxMTAsIAorICAgIDMxMTcsIDMxMjQsIDMxMzEsIDMxMzgsIDMxNDUsIDMxNTUsIDMxNjUsIDMxNzUsIDMxODUsIDMxOTIsIDMxOTksIDMyMDksIAorICAgIDMyMTksIDMyMjcsIDMyMzUsIDMyNDMsIDMyNTEsIDMyNTksIDMyNjYsIDMyNzMsIDMyODAsIDMyODYsIDMyOTMsIDMzMDAsIAorICAgIDMzMDcsIDMzMTYsIDMzMjYsIDMzMzYsIDMzNDMsIDMzNTAsIDMzNTYsIDMzNjEsIDMzNjgsIDMzNzQsIDMzODAsIDMzODcsIAorICAgIDMzOTQsIDM0MDUsIDM0MTUsIDM0MjIsIDM0MjksIDM0MzYsIDM0NDMsIDM0NDksIDM0NTQsIDM0NjEsIDM0NjcsIDM0NzIsIAorICAgIDM0ODAsIDM0ODgsIDM0OTUsIDM1MDEsIDM1MDYsIDM1MTMsIDM1MTgsIDM1MjUsIDM1MzQsIDM1NDMsIDM1NTIsIDM1NTksIAorICAgIDM1NjUsIDM1NzEsIDM1NzYsIDM1ODMsIDM1OTAsIDM1OTcsIDM2MDQsIDM2MTEsIDM2MTYsIDM2MjEsIDM2MzAsIDM2MzgsIAorICAgIDM2NDcsIDM2NTIsIDM2NTksIDM2NzAsIDM2NzcsIDM2ODUsIDM2OTQsIDM3MDAsIDM3MDYsIDM3MTIsIDM3MTksIDM3MjQsIAorICAgIDM3MzAsIDM3NDEsIDM3NTAsIDM3NTksIDM3NjcsIDM3NzUsIDM3ODUsIDM3OTAsIDM3OTcsIDM4MDQsIDM4MDksIDM4MjEsIAorICAgIDM4MzAsIDM4MzgsIDM4NDUsIDM4NTQsIDM4NTksIDM4NjQsIDM4NzEsIDM4NzgsIDM4ODUsIDM4OTIsIDM4OTgsIDM5MDcsIAorICAgIDM5MTUsIDM5MjAsIDM5MjgsIDM5MzQsIDM5NDIsIDM5NTAsIDM5NTYsIDM5NjIsIDM5NjgsIDM5NzUsIDM5ODMsIDM5ODksIAorICAgIDM5OTcsIDQwMDQsIDQwMDksIDQwMTYsIDQwMjQsIDQwMzQsIDQwNDEsIDQwNDgsIDQwNTgsIDQwNjUsIDQwNzIsIDQwODIsIAorICAgIDQwODksIDQwOTYsIDQxMDMsIDQxMDksIDQxMTUsIDQxMjUsIDQxMzgsIDQxNDMsIDQxNTAsIDQxNTUsIDQxNTksIDQxNjUsIAorICAgIDQxNzQsIDQxODEsIDQxODYsIDQxOTEsIDQxOTUsIDQyMDAsIDQyMDYsIDQyMTAsIDQyMTYsIDQyMjIsIDQyMjgsIDQyMzQsIAorICAgIDQyNDIsIDQyNDcsIDQyNTIsIDQyNTcsIDQyNjIsIDQyNjgsIDQyNzAsIDQyNzUsIDQyNzksIDQyODUsIDQyOTEsIDQyOTcsIAorICAgIDQzMDIsIDQzMDksIDQzMTYsIDQzMjIsIDQzMjksIDQzMzcsIDQzNDUsIDQzNTAsIDQzNTUsIDQzNTksIDQzNjQsIDQzNjYsIAorICAgIDQzNjgsIDQzNzEsIDQzNzMsIDQzNzYsIDQzODEsIDQzODYsIDQzOTIsIDQzOTcsIDQ0MDEsIDQ0MDYsIDQ0MTEsIDQ0MjAsIAorICAgIDQ0MjYsIDQ0MzEsIDQ0MzcsIDQ0NDIsIDQ0NDgsIDQ0NTYsIDQ0NjQsIDQ0NjgsIDQ0NzIsIDQ0NzcsIDQ0ODMsIDQ0ODksIAorICAgIDQ0OTUsIDQ1MDEsIDQ1MDYsIDQ1MTMsIDQ1MjEsIDQ1MjksIDQ1MzQsIDQ1NDAsIDQ1NDcsIDQ1NTQsIDQ1NjEsIDQ1NjgsIAorICAgIDQ1NzIsIDQ1NzcsIDQ1ODIsIDQ1ODcsIDQ1OTIsIDQ1OTcsIDQ2MDAsIDQ2MDMsIDQ2MDYsIDQ2MDksIDQ2MTIsIDQ2MTUsIAorICAgIDQ2MTksIDQ2MjMsIDQ2MjksIDQ2MzIsIDQ2MzcsIDQ2NDMsIDQ2NDksIDQ2NTIsIDQ2NTcsIDQ2NjMsIDQ2NjcsIDQ2NzMsIAorICAgIDQ2NzksIDQ2ODUsIDQ2OTEsIDQ2OTYsIDQ3MDEsIDQ3MDYsIDQ3MDksIDQ3MTUsIDQ3MjAsIDQ3MjUsIDQ3MjksIDQ3MzQsIAorICAgIDQ3NDAsIDQ3NDYsIDQ3NDksIDQ3NTMsIDQ3NTcsIDQ3NjEsIDQ3NjQsIDQ3NjcsIDQ3NzIsIDQ3NzYsIDQ3ODMsIDQ3ODcsIAorICAgIDQ3OTMsIDQ3OTcsIDQ4MDMsIDQ4MDcsIDQ4MTEsIDQ4MTUsIDQ4MjAsIDQ4MjUsIDQ4MzIsIDQ4MzgsIDQ4NDUsIDQ4NTEsIAorICAgIDQ4NTcsIDQ4NjMsIDQ4NjYsIDQ4NzAsIDQ4NzQsIDQ4NzgsIDQ4ODIsIDQ4ODcsIDQ4OTIsIDQ4OTYsIDQ5MDAsIDQ5MDYsIAorICAgIDQ5MTAsIDQ5MTQsIDQ5MTksIDQ5MjUsIDQ5MzAsIDQ5MzYsIDQ5NDAsIDQ5NDcsIDQ5NTIsIDQ5NTYsIDQ5NjEsIDQ5NjYsIAorICAgIDQ5NzIsIDQ5NzUsIDQ5NzksIDQ5ODQsIDQ5ODksIDQ5OTgsIDUwMDQsIDUwMDksIDUwMTMsIDUwMTgsIDUwMjIsIDUwMjcsIAorICAgIDUwMzEsIDUwMzUsIDUwNDAsIDUwNDQsIDUwNTAsIDUwNTUsIDUwNjAsIDUwNjUsIDUwNzAsIDUwNzUsIDUwODAsIDUwODYsIAorICAgIDUwOTIsIDUwOTgsIDUxMDQsIDUxMDksIDUxMTUsIDUxMjEsIDUxMjcsIDUxMzIsIDUxMzcsIDUxNDQsIDUxNTEsIDUxNTUsIAorICAgIDUxNjEsIDUxNjgsIDAsIDAsIDUxNzUsIDUxNzgsIDUxODcsIDUxOTYsIDUyMDcsIDUyMTEsIDAsIDAsIDAsIDAsIDUyMTYsIAorICAgIDUyMTksIDUyMjQsIDUyMzIsIDUyMzcsIDUyNDUsIDUyNTMsIDAsIDUyNjEsIDAsIDUyNjksIDUyNzcsIDUyODUsIDUyOTYsIAorICAgIDUzMDEsIDUzMDYsIDUzMTEsIDUzMTYsIDUzMjEsIDUzMjYsIDUzMzEsIDUzMzYsIDUzNDEsIDUzNDYsIDUzNTEsIDUzNTYsIAorICAgIDUzNjEsIDUzNjYsIDUzNzEsIDUzNzYsIDAsIDUzODEsIDUzODYsIDUzOTEsIDUzOTYsIDU0MDEsIDU0MDYsIDU0MTEsIAorICAgIDU0MTYsIDU0MjQsIDU0MzIsIDU0NDAsIDU0NDgsIDU0NTYsIDU0NjQsIDU0NzUsIDU0ODAsIDU0ODUsIDU0OTAsIDU0OTUsIAorICAgIDU1MDAsIDU1MDUsIDU1MTAsIDU1MTUsIDU1MjAsIDU1MjUsIDU1MzAsIDU1MzUsIDU1NDAsIDU1NDUsIDU1NTAsIDU1NTUsIAorICAgIDU1NjAsIDU1NjYsIDU1NzEsIDU1NzYsIDU1ODEsIDU1ODYsIDU1OTEsIDU1OTYsIDU2MDEsIDU2MDksIDU2MTcsIDU2MjUsIAorICAgIDU2MzMsIDU2NDEsIDU2NDYsIDU2NTAsIDU2NTQsIDU2NjEsIDU2NzEsIDU2ODEsIDU2ODUsIDU2ODksIDU2OTMsIDU2OTksIAorICAgIDU3MDYsIDU3MTAsIDU3MTUsIDU3MTksIDU3MjQsIDU3MjgsIDU3MzMsIDU3MzcsIDU3NDIsIDU3NDcsIDU3NTIsIDU3NTcsIAorICAgIDU3NjIsIDU3NjcsIDU3NzIsIDU3NzcsIDU3ODIsIDU3ODcsIDU3OTIsIDU3OTcsIDU4MDIsIDU4MDcsIDU4MTIsIDU4MTYsIAorICAgIDU4MjAsIDU4MjYsIDU4MzAsIDU4MzUsIDU4NDEsIDU4NDksIDU4NTQsIDU4NTksIDU4NjYsIDU4NzEsIDU4NzYsIDU4ODMsIAorICAgIDU4OTIsIDU5MDEsIDU5MTIsIDU5MjAsIDU5MjUsIDU5MzAsIDU5MzUsIDU5NDIsIDU5NDcsIDU5NTMsIDU5NTgsIDU5NjMsIAorICAgIDU5NjgsIDU5NzMsIDU5NzgsIDU5ODMsIDU5OTEsIDU5OTcsIDYwMDIsIDYwMDYsIDYwMTEsIDYwMTYsIDYwMjEsIDYwMjYsIAorICAgIDYwMzEsIDYwMzYsIDYwNDEsIDYwNDUsIDYwNTEsIDYwNTUsIDYwNjAsIDYwNjUsIDYwNzAsIDYwNzQsIDYwNzksIDYwODQsIAorICAgIDYwODksIDYwOTQsIDYwOTgsIDYxMDMsIDYxMDcsIDYxMTIsIDYxMTcsIDYxMjIsIDYxMjcsIDYxMzMsIDYxMzgsIDYxNDQsIAorICAgIDYxNDgsIDYxNTMsIDYxNTcsIDYxNjEsIDYxNjYsIDYxNzEsIDYxNzYsIDYxODEsIDYxODYsIDYxOTEsIDYxOTYsIDYyMDAsIAorICAgIDYyMDYsIDYyMTAsIDYyMTUsIDYyMjAsIDYyMjUsIDYyMjksIDYyMzQsIDYyMzksIDYyNDQsIDYyNDksIDYyNTMsIDYyNTgsIAorICAgIDYyNjIsIDYyNjcsIDYyNzIsIDYyNzcsIDYyODIsIDYyODgsIDYyOTMsIDYyOTksIDYzMDMsIDYzMDgsIDYzMTIsIDYzMjAsIAorICAgIDYzMjUsIDYzMzAsIDYzMzUsIDYzNDIsIDYzNDcsIDYzNTMsIDYzNTgsIDYzNjMsIDYzNjgsIDYzNzMsIDYzNzgsIDYzODMsIAorICAgIDYzOTEsIDYzOTcsIDY0MDIsIDY0MDcsIDY0MTIsIDY0MTcsIDY0MjIsIDY0MjgsIDY0MzQsIDY0NDEsIDY0NDgsIDY0NTcsIAorICAgIDY0NjYsIDY0NzMsIDY0ODAsIDY0ODksIDY0OTgsIDY1MDMsIDY1MDgsIDY1MTMsIDY1MTgsIDY1MjMsIDY1MjgsIDY1MzMsIAorICAgIDY1MzgsIDY1NDksIDY1NjAsIDY1NjUsIDY1NzAsIDY1NzcsIDY1ODQsIDY1OTIsIDY2MDAsIDY2MDUsIDY2MTAsIDY2MTUsIAorICAgIDY2MjAsIDY2MjQsIDY2MjgsIDY2MzIsIDY2MzgsIDY2NDQsIDY2NDgsIDY2NTUsIDY2NjAsIDY2NzAsIDY2ODAsIDY2ODYsIAorICAgIDY2OTIsIDY3MDAsIDY3MDgsIDY3MTYsIDY3MjQsIDY3MzEsIDY3MzgsIDY3NDYsIDY3NTQsIDY3NjIsIDY3NzAsIDY3NzgsIAorICAgIDY3ODYsIDY3OTQsIDY4MDIsIDY4MTAsIDY4MTgsIDY4MjUsIDY4MzIsIDY4MzgsIDY4NDQsIDY4NTIsIDY4NjAsIDY4NjcsIAorICAgIDY4NzQsIDY4ODIsIDY4OTAsIDY4OTYsIDY5MDIsIDY5MTAsIDY5MTgsIDY5MjYsIDY5MzQsIDY5NDAsIDY5NDYsIDY5NTQsIAorICAgIDY5NjIsIDY5NzAsIDY5NzgsIDY5ODUsIDY5OTIsIDcwMDAsIDcwMDgsIDcwMTYsIDcwMjQsIDcwMjksIDcwMzQsIDcwNDEsIAorICAgIDcwNDgsIDcwNTgsIDcwNjgsIDcwNzIsIDcwODAsIDcwODgsIDcwOTUsIDcxMDIsIDcxMTAsIDcxMTgsIDcxMjUsIDcxMzIsIAorICAgIDcxNDAsIDcxNDgsIDcxNTUsIDcxNjIsIDcxNzAsIDcxNzgsIDcxODMsIDcxOTAsIDcxOTcsIDcyMDQsIDcyMTEsIDcyMTcsIAorICAgIDcyMjMsIDcyMzEsIDcyMzksIDcyNDQsIDcyNDksIDcyNTcsIDcyNjUsIDcyNzMsIDcyODEsIDcyODksIDcyOTcsIDczMDQsIAorICAgIDczMTEsIDczMTksIDczMjcsIDczMzUsIDczNDMsIDczNTAsIDczNTcsIDczNjMsIDczNjksIDczNzgsIDczODcsIDczOTQsIAorICAgIDc0MDEsIDc0MDgsIDc0MTUsIDc0MjIsIDc0MjksIDc0MzYsIDc0NDMsIDc0NTEsIDc0NTksIDc0NjcsIDc0NzUsIDc0ODMsIAorICAgIDc0OTEsIDc1MDEsIDc1MTEsIDc1MTgsIDc1MjUsIDc1MzIsIDc1MzksIDc1NDYsIDc1NTMsIDc1NjAsIDc1NjcsIDc1NzQsIAorICAgIDc1ODEsIDc1ODgsIDc1OTUsIDc2MDIsIDc2MDksIDc2MTYsIDc2MjMsIDc2MzAsIDc2MzcsIDc2NDQsIDc2NTEsIDc2NTgsIAorICAgIDc2NjUsIDc2NzIsIDc2NzksIDc2ODQsIDc2ODksIDc2OTQsIDc2OTksIDc3MDQsIDc3MDksIDc3MTQsIDc3MTksIDc3MjQsIAorICAgIDc3MjksIDc3MzUsIDc3NDEsIDc3NDksIDc3NTcsIDc3NjUsIDc3NzMsIDc3ODEsIDc3ODksIDc3OTcsIDc4MDUsIDc4MTMsIAorICAgIDc4MjEsIDc4MjYsIDc4MzEsIDc4MzYsIDc4NDEsIDc4NDksIDAsIDc4NTcsIDc4NjIsIDc4NjcsIDc4NzIsIDc4NzcsIAorICAgIDc4ODIsIDc4ODcsIDc4OTIsIDc4OTcsIDc5MDEsIDc5MDYsIDc5MTEsIDc5MTYsIDc5MjEsIDc5MjYsIDc5MzEsIDc5MzYsIAorICAgIDc5NDEsIDc5NDYsIDc5NTEsIDc5NTYsIDc5NjEsIDc5NjYsIDc5NzEsIDc5NzYsIDc5ODEsIDc5ODYsIDc5OTEsIDc5OTYsIAorICAgIDgwMDEsIDgwMDYsIDgwMTEsIDgwMTYsIDgwMjEsIDgwMjYsIDgwMzEsIDgwMzYsIDgwNDEsIDAsIDAsIDgwNDYsIDgwNTMsIAorICAgIDgwNTYsIDgwNjAsIDgwNjQsIDgwNjcsIDgwNzEsIDAsIDgwNzUsIDgwODAsIDgwODUsIDgwOTAsIDgwOTUsIDgxMDAsIAorICAgIDgxMDUsIDgxMTAsIDgxMTUsIDgxMTksIDgxMjQsIDgxMjksIDgxMzQsIDgxMzksIDgxNDQsIDgxNDksIDgxNTQsIDgxNTksIAorICAgIDgxNjQsIDgxNjksIDgxNzQsIDgxNzksIDgxODQsIDgxODksIDgxOTQsIDgxOTksIDgyMDQsIDgyMDksIDgyMTQsIDgyMTksIAorICAgIDgyMjQsIDgyMjksIDgyMzQsIDgyMzksIDgyNDQsIDgyNDksIDgyNTQsIDgyNTksIDgyNjQsIDAsIDgyNzEsIDgyNzYsIDAsIAorICAgIDAsIDgyNzksIDgyODUsIDgyOTEsIDAsIDgyOTUsIDgzMDAsIDgzMDUsIDgzMTAsIDgzMTcsIDgzMjQsIDgzMjksIDgzMzQsIAorICAgIDgzMzksIDgzNDQsIDgzNDksIDgzNTQsIDgzNTksIDgzNjYsIDgzNzEsIDgzNzgsIDgzODUsIDgzOTAsIDgzOTcsIDg0MDIsIAorICAgIDg0MDcsIDg0MTIsIDg0MTksIDg0MjQsIDg0MjksIDg0MzYsIDg0NDUsIDg0NTAsIDg0NTUsIDg0NjAsIDg0NjUsIDg0NzEsIAorICAgIDg0NzYsIDg0ODMsIDg0OTAsIDg0OTcsIDg1MDIsIDg1MDcsIDg1MTIsIDg1MTcsIDg1MjIsIDg1MjcsIDg1MzcsIDg1NDIsIAorICAgIDg1NTEsIDg1NTYsIDg1NjEsIDg1NjYsIDg1NzEsIDg1NzgsIDg1ODUsIDg1OTIsIDg1OTgsIDg2MDQsIDg2MTEsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDg2MTgsIDg2MjIsIDg2MjYsIDg2MzAsIDg2MzQsIDg2MzgsIDg2NDIsIDg2NDYsIDg2NTAsIAorICAgIDg2NTQsIDg2NTgsIDg2NjMsIDg2NjcsIDg2NzEsIDg2NzYsIDg2ODAsIDg2ODUsIDg2ODksIDg2OTMsIDg2OTcsIDg3MDIsIAorICAgIDg3MDYsIDg3MTEsIDg3MTUsIDg3MTksIDg3MjMsIDg3MjcsIDAsIDAsIDAsIDAsIDAsIDg3MzEsIDg3MzgsIDg3NDYsIAorICAgIDg3NTMsIDg3NTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg3NjMsIDg3NjYsIDg3NzAsIDg3NzUsIAorICAgIDg3NzksIDg3ODMsIDg3ODcsIDg3OTMsIDg3OTksIDg4MDIsIDg4MDksIDg4MTgsIDg4MjEsIDg4MjQsIDg4MjksIDg4MzUsIAorICAgIDg4MzksIDg4NDcsIDg4NTMsIDg4NTksIDg4NjcsIDg4NzEsIDg4NzYsIDg4ODcsIDg4OTIsIDg4OTYsIDg5MDAsIDg5MDQsIAorICAgIDg5MDcsIDAsIDg5MTAsIDg5MTcsIDg5MjEsIDg5MjcsIDg5MzEsIDg5MzgsIDg5NDUsIDg5NTMsIDg5NjAsIDg5NjcsIAorICAgIDg5NzEsIDg5NzUsIDg5ODEsIDg5ODUsIDg5ODksIDg5OTMsIDg5OTcsIDkwMDEsIDkwMDUsIDkwMDksIDkwMTMsIDkwMTcsIAorICAgIDkwMjEsIDkwMjUsIDkwMjksIDkwMzMsIDkwMzcsIDkwNDEsIDkwNDUsIDkwNDksIDkwNTcsIDkwNjUsIDkwNzUsIDkwODQsIAorICAgIDkwOTMsIDkwOTYsIDkxMDAsIDkxMDQsIDkxMDgsIDkxMTIsIDkxMTYsIDkxMjAsIDkxMjQsIDkxMjgsIDkxMzMsIDkxMzcsIAorICAgIDkxNDAsIDkxNDMsIDkxNDYsIDkxNDksIDkxNTIsIDkxNTUsIDkxNTgsIDkxNjEsIDkxNjUsIDkxNjksIDkxNzMsIDkxNzgsIAorICAgIDkxODMsIDkxODksIDkxOTIsIDkxOTksIDkyMDgsIDkyMTMsIDkyMTgsIDkyMjUsIDkyMzEsIDkyMzYsIDkyNDAsIDkyNDQsIAorICAgIDkyNDgsIDkyNTIsIDkyNTYsIDkyNjAsIDkyNjUsIDkyNjksIDkyNzQsIDkyNzgsIDkyODMsIDkyODgsIDkyOTUsIDkzMDEsIAorICAgIDkzMDcsIDkzMTMsIDkzMTgsIDkzMjcsIDkzMzYsIDkzNDEsIDkzNDgsIDkzNTUsIDkzNjIsIDkzNjksIDkzNzMsIDkzNzcsIAorICAgIDkzODEsIDkzODgsIDkzOTgsIDk0MDIsIDk0MDYsIDk0MTAsIDk0MTcsIDk0MjUsIDk0MjksIDk0MzMsIDk0NDAsIDk0NDQsIAorICAgIDk0NDgsIDk0NTIsIDk0NTksIDk0NjYsIDk0NzgsIDk0ODIsIDk0ODYsIDk0OTAsIDk1MDAsIDk1MDksIDk1MTMsIDk1MjEsIAorICAgIDk1MjgsIDk1MzUsIDk1NDQsIDk1NTUsIDk1NjMsIDk1NjcsIDk1NzYsIDk1ODcsIDk1OTUsIDk2MDgsIDk2MTYsIDk2MjQsIAorICAgIDk2MzIsIDk2NDAsIDk2NDYsIDk2NTUsIDk2NjIsIDk2NjYsIDk2NzQsIDk2NzgsIDk2ODUsIDk2OTMsIDk2OTcsIDk3MDMsIAorICAgIDk3MTAsIDk3MTcsIDk3MjEsIDk3MjksIDk3MzMsIDk3NDAsIDk3NDQsIDk3NTIsIDk3NTYsIDk3NjQsIDk3NzIsIDk3NzksIAorICAgIDk3ODcsIDk3OTUsIDk4MDIsIDk4MDgsIDk4MTIsIDk4MTksIDk4MjcsIDk4MzMsIDk4NDAsIDk4NDcsIDk4NTMsIDk4NjMsIAorICAgIDk4NzEsIDk4NzgsIDk4ODQsIDk4ODgsIDk4OTEsIDk4OTUsIDk5MDEsIDk5MDksIDk5MTMsIDk5MTksIDk5MjUsIDk5MzIsIAorICAgIDk5MzksIDk5NDIsIDk5NDksIDk5NTQsIDk5NjMsIDk5NjgsIDk5NzIsIDk5ODUsIDk5OTgsIDEwMDA0LCAxMDAxMSwgCisgICAgMTAwMTYsIDEwMDIyLCAxMDAyNywgMTAwMzMsIDEwMDQzLCAxMDA1MCwgMTAwNTksIDEwMDY5LCAxMDA3NSwgMTAwODAsIAorICAgIDEwMDg1LCAxMDA4OSwgMTAwOTMsIDEwMDk4LCAxMDEwMywgMTAxMDksIDEwMTE3LCAxMDEyNSwgMTAxMzYsIDEwMTQxLCAKKyAgICAxMDE1MCwgMTAxNTksIDEwMTY2LCAxMDE3MiwgMTAxNzgsIDEwMTg0LCAxMDE5MCwgMTAxOTYsIDEwMjAyLCAxMDIwOSwgCisgICAgMTAyMTUsIDEwMjIyLCAxMDIyOSwgMTAyMzYsIDEwMjQzLCAxMDI0OSwgMTAyNTcsIDEwMjY2LCAxMDI3MywgMTAyODEsIAorICAgIDEwMjg5LCAxMDI5NSwgMTAzMDEsIDEwMzA3LCAxMDMxNSwgMTAzMjMsIDEwMzMzLCAxMDM0MywgMTAzNDcsIDEwMzUzLCAKKyAgICAxMDM1OSwgMCwgMTAzNjUsIDEwMzcwLCAxMDM3NSwgMTAzODIsIDEwMzg3LCAxMDM5MiwgMTAzOTksIDEwNDA0LCAxMDQxMywgCisgICAgMTA0MTgsIDEwNDIzLCAxMDQyOCwgMTA0MzMsIDEwNDM4LCAxMDQ0NSwgMTA0NTAsIDEwNDU3LCAxMDQ2MiwgMTA0NjcsIAorICAgIDEwNDcyLCAxMDQ3NywgMTA0ODIsIDEwNDg4LCAxMDQ5MiwgMTA0OTcsIDEwNTA0LCAxMDUwOSwgMTA1MTQsIDEwNTE5LCAKKyAgICAxMDUyNCwgMTA1MjksIDEwNTM2LCAxMDU0MywgMTA1NTAsIDEwNTU1LCAxMDU2MCwgMTA1NjYsIDEwNTcxLCAxMDU3NiwgCisgICAgMTA1ODIsIDEwNTg3LCAxMDU5MiwgMTA2MDAsIDEwNjA4LCAxMDYxMywgMTA2MTgsIDEwNjI0LCAxMDYyOSwgMTA2MzQsIAorICAgIDEwNjM4LCAxMDY0NCwgMTA2NDgsIDEwNjUyLCAxMDY1OCwgMTA2NjQsIDEwNjY5LCAxMDY3NCwgMTA2ODEsIDEwNjg4LCAKKyAgICAxMDY5MiwgMCwgMCwgMTA2OTYsIDEwNzAzLCAxMDcxMCwgMTA3MTcsIDEwNzI3LCAxMDczOSwgMTA3NTAsIDEwNzY2LCAKKyAgICAxMDc3OCwgMTA3ODksIDEwNzk3LCAxMDgwNCwgMTA4MTQsIDEwODI5LCAxMDg0MCwgMTA4NDYsIDEwODU1LCAxMDg2MywgCisgICAgMTA4NzQsIDEwODg0LCAxMDg5MiwgMTA5MDMsIDEwOTEwLCAxMDkxOCwgMTA5MjksIDEwOTM1LCAxMDk0MSwgMTA5NDksIAorICAgIDEwOTU3LCAxMDk2NSwgMTA5NzEsIDEwOTgxLCAxMDk4OSwgMTA5OTksIDExMDA5LCAxMTAyMiwgMTEwMzYsIDExMDUwLCAKKyAgICAxMTA2MCwgMTEwNzEsIDExMDgyLCAxMTA5NSwgMTExMDgsIDExMTIyLCAxMTEzNCwgMTExNDYsIDExMTU5LCAxMTE3MiwgCisgICAgMTExODQsIDExMTk3LCAxMTIwNiwgMTEyMTQsIDExMjE5LCAxMTIyNCwgMTEyMjksIDExMjM0LCAxMTIzOSwgMTEyNDQsIAorICAgIDExMjQ5LCAxMTI1NCwgMTEyNTksIDExMjY0LCAxMTI2OSwgMTEyNzQsIDExMjc5LCAxMTI4NCwgMTEyODksIDExMjk0LCAKKyAgICAxMTI5OSwgMTEzMDQsIDExMzA5LCAxMTMxNCwgMTEzMTksIDExMzI0LCAxMTMyOSwgMTEzMzQsIDExMzM5LCAxMTM0NCwgCisgICAgMTEzNDksIDExMzU0LCAxMTM1OSwgMTEzNjQsIDExMzY5LCAxMTM3NCwgMTEzNzgsIDExMzgzLCAxMTM4OCwgMTEzOTMsIAorICAgIDExMzk4LCAxMTQwMywgMTE0MDcsIDExNDExLCAxMTQxNSwgMTE0MTksIDExNDIzLCAxMTQyNywgMTE0MzEsIDExNDM1LCAKKyAgICAxMTQzOSwgMTE0NDMsIDExNDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTQ1MiwgCisgICAgMTE0NTcsIDExNDYxLCAxMTQ2NSwgMTE0NjksIDExNDczLCAxMTQ3NywgMTE0ODEsIDExNDg2LCAxMTQ5MCwgMTE0OTUsIAorICAgIDExNDk5LCAxMTUwNCwgMTE1MDgsIDExNTEyLCAxMTUxNiwgMTE1MjEsIDExNTI1LCAxMTUzMCwgMTE1MzUsIDExNTQwLCAKKyAgICAxMTU0NCwgMTE1NDksIDExNTU0LCAxMTU1OSwgMTE1NjQsIDExNTY5LCAxMTU3NCwgMTE1NzksIDExNTg0LCAxMTU4OSwgCisgICAgMTE1OTMsIDExNTk3LCAxMTYwNCwgMTE2MDgsIDExNjEzLCAxMTYxNywgMTE2MjEsIDExNjI2LCAxMTYzMCwgMTE2MzcsIAorICAgIDExNjQ0LCAxMTY1MSwgMTE2NTgsIDExNjY2LCAxMTY3NCwgMTE2ODMsIDExNjkxLCAxMTY5OCwgMTE3MDUsIDExNzEzLCAKKyAgICAxMTcxOSwgMTE3MjUsIDExNzMxLCAxMTczNywgMTE3NDQsIDExNzQ5LCAxMTc1MywgMTE3NTgsIDAsIDAsIDAsIDAsIDAsIAorICAgIDExNzYyLCAxMTc2NywgMTE3NzIsIDExNzc3LCAxMTc4MiwgMTE3ODcsIDExNzkyLCAxMTc5NywgMTE4MDIsIDExODA3LCAKKyAgICAxMTgxMiwgMTE4MTcsIDExODIyLCAxMTgyNywgMTE4MzIsIDExODM3LCAxMTg0MiwgMTE4NDcsIDExODUyLCAxMTg1NywgCisgICAgMTE4NjIsIDExODY3LCAxMTg3MiwgMTE4NzcsIDExODgyLCAxMTg4NywgMTE4OTIsIDExOTAwLCAxMTkwNywgMTE5MTMsIAorICAgIDExOTE4LCAxMTkyNiwgMTE5MzMsIDExOTM5LCAxMTk0NiwgMTE5NTIsIDExOTU3LCAxMTk2NCwgMTE5NzEsIDExOTc3LCAKKyAgICAxMTk4MiwgMTE5ODcsIDExOTkzLCAxMTk5OCwgMTIwMDMsIDEyMDA5LCAwLCAwLCAxMjAxNCwgMTIwMjAsIDEyMDI2LCAKKyAgICAxMjAzMiwgMTIwMzgsIDEyMDQ0LCAxMjA1MCwgMTIwNTUsIDEyMDYzLCAxMjA2OSwgMTIwNzUsIDEyMDgxLCAxMjA4NywgCisgICAgMTIwOTMsIDEyMTAxLCAwLCAxMjEwNywgMTIxMTIsIDEyMTE3LCAxMjEyMiwgMTIxMjcsIDEyMTMyLCAxMjEzNywgMTIxNDIsIAorICAgIDEyMTQ3LCAxMjE1MiwgMTIxNTcsIDEyMTYyLCAxMjE2NywgMTIxNzIsIDEyMTc3LCAxMjE4MiwgMTIxODcsIDEyMTkyLCAKKyAgICAxMjE5NywgMTIyMDIsIDEyMjA3LCAxMjIxMiwgMTIyMTcsIDEyMjIyLCAxMjIyNywgMTIyMzIsIDEyMjM3LCAxMjI0MiwgMCwgCisgICAgMCwgMTIyNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMjUxLCAxMjI2MCwgCisgICAgMTIyNjgsIDEyMjc1LCAxMjI4MywgMTIyOTUsIDEyMzAyLCAxMjMwOSwgMTIzMTYsIDEyMzI4LCAxMjMzOSwgMTIzNDYsIAorICAgIDEyMzU0LCAxMjM2MCwgMTIzNjUsIDEyMzczLCAxMjM4MSwgMTIzODksIDEyMzk1LCAxMjQwNSwgMTI0MTMsIDAsIDEyNDIwLCAKKyAgICAxMjQyOCwgMTI0MzYsIDEyNDQ1LCAxMjQ1NCwgMTI0NjcsIDEyNDczLCAxMjQ3OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI0ODUsIDEyNDkyLCAxMjQ5NywgMTI1MDIsIAorICAgIDEyNTA3LCAxMjUxNSwgMTI1MjMsIDEyNTMwLCAxMjUzNywgMTI1NDQsIDEyNTUxLCAxMjU1OCwgMTI1NjUsIDEyNTcyLCAKKyAgICAxMjU3OCwgMTI1ODYsIDEyNTkyLCAxMjU5NywgMTI2MDIsIDEyNjA3LCAxMjYxMiwgMTI2MTcsIDEyNjIyLCAxMjYyNywgCisgICAgMTI2MzIsIDEyNjM3LCAxMjY0MiwgMTI2NDcsIDEyNjUyLCAxMjY1NiwgMTI2NjAsIDEyNjY0LCAxMjY2OSwgMTI2NzUsIAorICAgIDEyNjgxLCAxMjY4NywgMTI2OTIsIDEyNjk3LCAxMjcwMiwgMTI3MDcsIDEyNzEzLCAxMjcyMiwgMTI3MzAsIDEyNzM2LCAKKyAgICAxMjc0NCwgMTI3NTAsIDEyNzU0LCAxMjc1OCwgMTI3NjIsIDEyNzY3LCAxMjc3MCwgMTI3NzQsIDEyNzc3LCAxMjc4MSwgCisgICAgMTI3ODQsIDEyNzg4LCAxMjc5MiwgMTI3OTYsIDEyODAxLCAxMjgwNiwgMTI4MDksIDEyODEzLCAxMjgxOCwgMTI4MjMsIAorICAgIDEyODI2LCAxMjgzMCwgMTI4MzMsIDEyODM3LCAxMjg0MSwgMTI4NDUsIDEyODQ5LCAxMjg1MywgMTI4NTcsIDEyODYxLCAKKyAgICAxMjg2NSwgMTI4NjksIDEyODczLCAxMjg3NywgMTI4ODEsIDEyODg1LCAxMjg4OSwgMTI4OTMsIDEyODk3LCAxMjkwMSwgCisgICAgMTI5MDUsIDEyOTA4LCAxMjkxMiwgMTI5MTUsIDEyOTE5LCAxMjkyMywgMTI5MjcsIDEyOTMwLCAxMjkzMywgMTI5MzcsIAorICAgIDEyOTQxLCAxMjk0NCwgMTI5NDgsIDEyOTUyLCAxMjk1NiwgMTI5NjAsIDEyOTY0LCAxMjk2OCwgMTI5NzEsIDEyOTc2LCAKKyAgICAxMjk4MSwgMTI5ODUsIDEyOTg5LCAxMjk5NCwgMTI5OTgsIDEzMDAzLCAxMzAwNywgMTMwMTIsIDEzMDE3LCAxMzAyMywgCisgICAgMTMwMjksIDEzMDM1LCAxMzAzOSwgMTMwNDQsIDEzMDUwLCAxMzA1NiwgMTMwNjAsIDEzMDY1LCAxMzA2OSwgMTMwNzUsIAorICAgIDEzMDgwLCAxMzA4MywgMTMwODksIDEzMDk1LCAxMzEwMCwgMTMxMDUsIDEzMTEyLCAxMzExNywgMTMxMjIsIDEzMTI2LCAKKyAgICAxMzEzMCwgMTMxMzQsIDEzMTM4LCAxMzE0MiwgMTMxNDYsIDEzMTUwLCAxMzE1NCwgMTMxNTksIDEzMTY0LCAxMzE2OSwgCisgICAgMTMxNzUsIDEzMTc4LCAxMzE4MiwgMTMxODYsIDEzMTg5LCAxMzE5MiwgMTMxOTUsIDEzMTk4LCAxMzIwMSwgMTMyMDQsIAorICAgIDEzMjA4LCAxMzIxMSwgMTMyMTUsIDEzMjE5LCAxMzIyNiwgMTMyMzEsIDEzMjM1LCAxMzIzOSwgMTMyNDMsIDEzMjQ3LCAKKyAgICAxMzI1MSwgMTMyNTcsIDEzMjYxLCAxMzI2NSwgMTMyNjksIDEzMjczLCAxMzI3OSwgMTMyODMsIDEzMjg3LCAxMzI5MCwgCisgICAgMTMyOTQsIDEzMjk4LCAwLCAxMzMwMiwgMTMzMDUsIDEzMzA5LCAxMzMxMiwgMTMzMTYsIDEzMzE5LCAxMzMyMywgMTMzMjcsIAorICAgIDAsIDAsIDEzMzMxLCAxMzMzNCwgMCwgMCwgMTMzMzgsIDEzMzQxLCAxMzM0NSwgMTMzNDgsIDEzMzUyLCAxMzM1NiwgCisgICAgMTMzNjAsIDEzMzY0LCAxMzM2OCwgMTMzNzIsIDEzMzc2LCAxMzM4MCwgMTMzODQsIDEzMzg4LCAxMzM5MiwgMTMzOTYsIAorICAgIDEzNDAwLCAxMzQwNCwgMTM0MDgsIDEzNDEyLCAxMzQxNiwgMTM0MjAsIDAsIDEzNDIzLCAxMzQyNiwgMTM0MzAsIDEzNDM0LCAKKyAgICAxMzQzOCwgMTM0NDEsIDEzNDQ0LCAwLCAxMzQ0OCwgMCwgMCwgMCwgMTM0NTEsIDEzNDU1LCAxMzQ1OSwgMTM0NjMsIDAsIDAsIAorICAgIDEzNDY2LCAxMzQ3MCwgMTM0NzQsIDEzNDc5LCAxMzQ4MywgMTM0ODgsIDEzNDkyLCAxMzQ5NywgMTM1MDIsIDAsIDAsIAorICAgIDEzNTA4LCAxMzUxMiwgMCwgMCwgMTM1MTcsIDEzNTIxLCAxMzUyNiwgMTM1MzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEzNTM2LCAwLCAwLCAwLCAwLCAxMzU0MiwgMTM1NDYsIDAsIDEzNTUwLCAxMzU1NCwgMTM1NTksIDEzNTY0LCAxMzU2OSwgMCwgCisgICAgMCwgMTM1NzUsIDEzNTc5LCAxMzU4MiwgMTM1ODUsIDEzNTg4LCAxMzU5MSwgMTM1OTQsIDEzNTk3LCAxMzYwMSwgMTM2MDQsIAorICAgIDEzNjA4LCAxMzYxNiwgMTM2MjUsIDEzNjI5LCAxMzYzMywgMTM2MzksIDEzNjQ1LCAxMzY1MSwgMTM2NTcsIDEzNjcxLCAKKyAgICAxMzY3OCwgMTM2ODEsIDAsIDAsIDAsIDAsIDAsIDEzNjg1LCAxMzY5MiwgMTM2OTcsIDAsIDEzNzAyLCAxMzcwNiwgMTM3MTEsIAorICAgIDEzNzE1LCAxMzcyMCwgMTM3MjQsIDAsIDAsIDAsIDAsIDEzNzI5LCAxMzczNCwgMCwgMCwgMTM3MzksIDEzNzQ0LCAxMzc0OSwgCisgICAgMTM3NTMsIDEzNzU4LCAxMzc2MywgMTM3NjgsIDEzNzczLCAxMzc3OCwgMTM3ODMsIDEzNzg4LCAxMzc5MywgMTM3OTgsIAorICAgIDEzODAzLCAxMzgwOCwgMTM4MTMsIDEzODE4LCAxMzgyMywgMTM4MjgsIDEzODMzLCAxMzgzOCwgMTM4NDMsIDAsIDEzODQ3LCAKKyAgICAxMzg1MSwgMTM4NTYsIDEzODYxLCAxMzg2NiwgMTM4NzAsIDEzODc0LCAwLCAxMzg3OSwgMTM4ODMsIDAsIDEzODg4LCAKKyAgICAxMzg5MywgMCwgMTM4OTgsIDEzOTAzLCAwLCAwLCAxMzkwNywgMCwgMTM5MTIsIDEzOTE4LCAxMzkyMywgMTM5MjksIAorICAgIDEzOTM0LCAwLCAwLCAwLCAwLCAxMzk0MCwgMTM5NDYsIDAsIDAsIDEzOTUyLCAxMzk1OCwgMTM5NjQsIDAsIDAsIDAsIAorICAgIDEzOTY5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzk3NCwgMTM5NzksIDEzOTg0LCAxMzk4OSwgMCwgMTM5OTQsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDEzOTk5LCAxNDAwNCwgMTQwMDgsIDE0MDEyLCAxNDAxNiwgMTQwMjAsIDE0MDI0LCAxNDAyOCwgCisgICAgMTQwMzMsIDE0MDM3LCAxNDA0MiwgMTQwNDYsIDE0MDUwLCAxNDA1NCwgMTQwNTgsIDE0MDY0LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxNDA2OSwgMTQwNzQsIDE0MDc5LCAwLCAxNDA4NCwgMTQwODgsIDE0MDkzLCAxNDA5NywgMTQxMDIsIAorICAgIDE0MTA2LCAxNDExMSwgMTQxMTYsIDE0MTIxLCAwLCAxNDEyNywgMTQxMzEsIDE0MTM2LCAwLCAxNDE0MiwgMTQxNDYsIAorICAgIDE0MTUxLCAxNDE1NSwgMTQxNjAsIDE0MTY1LCAxNDE3MCwgMTQxNzUsIDE0MTgwLCAxNDE4NSwgMTQxOTAsIDE0MTk1LCAKKyAgICAxNDIwMCwgMTQyMDUsIDE0MjEwLCAxNDIxNSwgMTQyMjAsIDE0MjI1LCAxNDIzMCwgMTQyMzUsIDE0MjQwLCAxNDI0NSwgMCwgCisgICAgMTQyNDksIDE0MjUzLCAxNDI1OCwgMTQyNjMsIDE0MjY4LCAxNDI3MiwgMTQyNzYsIDAsIDE0MjgxLCAxNDI4NSwgMCwgCisgICAgMTQyOTAsIDE0Mjk1LCAxNDMwMCwgMTQzMDUsIDE0MzEwLCAwLCAwLCAxNDMxNCwgMTQzMTksIDE0MzI0LCAxNDMzMCwgCisgICAgMTQzMzUsIDE0MzQxLCAxNDM0NiwgMTQzNTIsIDE0MzU4LCAxNDM2NSwgMCwgMTQzNzIsIDE0Mzc3LCAxNDM4MywgMCwgCisgICAgMTQzOTAsIDE0Mzk1LCAxNDQwMSwgMCwgMCwgMTQ0MDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDE0NDEwLCAxNDQxNiwgMTQ0MjIsIDE0NDI4LCAwLCAwLCAxNDQzNSwgMTQ0NDAsIDE0NDQ0LCAxNDQ0OCwgCisgICAgMTQ0NTIsIDE0NDU2LCAxNDQ2MCwgMTQ0NjQsIDE0NDY5LCAxNDQ3MywgMTQ0NzgsIDE0NDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxNDQ4OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0OTMsIDE0NDk4LCAxNDUwMywgMCwgMTQ1MDgsIDE0NTEyLCAKKyAgICAxNDUxNywgMTQ1MjEsIDE0NTI2LCAxNDUzMCwgMTQ1MzUsIDE0NTQwLCAwLCAwLCAxNDU0NSwgMTQ1NDksIDAsIDAsIAorICAgIDE0NTU0LCAxNDU1OCwgMTQ1NjMsIDE0NTY3LCAxNDU3MiwgMTQ1NzcsIDE0NTgyLCAxNDU4NywgMTQ1OTIsIDE0NTk3LCAKKyAgICAxNDYwMiwgMTQ2MDcsIDE0NjEyLCAxNDYxNywgMTQ2MjIsIDE0NjI3LCAxNDYzMiwgMTQ2MzcsIDE0NjQyLCAxNDY0NywgCisgICAgMTQ2NTIsIDE0NjU3LCAwLCAxNDY2MSwgMTQ2NjUsIDE0NjcwLCAxNDY3NSwgMTQ2ODAsIDE0Njg0LCAxNDY4OCwgMCwgCisgICAgMTQ2OTMsIDE0Njk3LCAwLCAxNDcwMiwgMTQ3MDcsIDE0NzEyLCAxNDcxNywgMTQ3MjIsIDAsIDAsIDE0NzI2LCAxNDczMSwgCisgICAgMTQ3MzYsIDE0NzQyLCAxNDc0NywgMTQ3NTMsIDE0NzU4LCAxNDc2NCwgMTQ3NzAsIDAsIDAsIDE0Nzc3LCAxNDc4MiwgMCwgCisgICAgMCwgMTQ3ODgsIDE0NzkzLCAxNDc5OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ4MDQsIDE0ODExLCAwLCAwLCAwLCAwLCAKKyAgICAxNDgxOCwgMTQ4MjMsIDAsIDE0ODI4LCAxNDgzMywgMTQ4MzksIDE0ODQ1LCAxNDg1MSwgMCwgMCwgMTQ4NTgsIDE0ODYzLCAKKyAgICAxNDg2NywgMTQ4NzEsIDE0ODc1LCAxNDg3OSwgMTQ4ODMsIDE0ODg3LCAxNDg5MiwgMTQ4OTYsIDE0OTAxLCAxNDkwNSwgCisgICAgMTQ5MTAsIDE0OTE3LCAxNDkyNCwgMTQ5MzEsIDE0OTM4LCAxNDk0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTQ5NTIsIDE0OTU2LCAwLCAxNDk2MCwgMTQ5NjMsIDE0OTY3LCAxNDk3MCwgMTQ5NzQsIDE0OTc3LCAwLCAwLCAwLCAKKyAgICAxNDk4MSwgMTQ5ODQsIDE0OTg4LCAwLCAxNDk5MiwgMTQ5OTUsIDE0OTk5LCAxNTAwMywgMCwgMCwgMCwgMTUwMDYsIAorICAgIDE1MDEwLCAwLCAxNTAxNCwgMCwgMTUwMTgsIDE1MDIyLCAwLCAwLCAwLCAxNTAyNiwgMTUwMzAsIDAsIDAsIDAsIDE1MDM0LCAKKyAgICAxNTAzNywgMTUwNDEsIDAsIDAsIDAsIDE1MDQ0LCAxNTA0NywgMTUwNTAsIDE1MDU0LCAxNTA1OCwgMTUwNjEsIDE1MDY1LCAKKyAgICAxNTA2OSwgMTUwNzMsIDE1MDc3LCAxNTA4MSwgMTUwODUsIDAsIDAsIDAsIDAsIDE1MDg4LCAxNTA5MywgMTUwOTcsIAorICAgIDE1MTAyLCAxNTEwNiwgMCwgMCwgMCwgMTUxMTEsIDE1MTE1LCAxNTEyMCwgMCwgMTUxMjUsIDE1MTI5LCAxNTEzNCwgCisgICAgMTUxMzksIDAsIDAsIDE1MTQzLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTE0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTUxNTIsIDE1MTU2LCAxNTE1OSwgMTUxNjIsIDE1MTY1LCAxNTE2OCwgMTUxNzEsIDE1MTc0LCAKKyAgICAxNTE3OCwgMTUxODEsIDE1MTg1LCAxNTE4OSwgMTUxOTQsIDE1MTk5LCAxNTIwMywgMTUyMDcsIDE1MjExLCAxNTIxNSwgCisgICAgMTUyMTksIDE1MjI0LCAxNTIyOCwgMCwgMCwgMCwgMCwgMCwgMTUyMzEsIDE1MjM3LCAxNTI0MSwgMTUyNDUsIDAsIDE1MjQ5LCAKKyAgICAxNTI1MiwgMTUyNTYsIDE1MjU5LCAxNTI2MywgMTUyNjYsIDE1MjcwLCAxNTI3NCwgMCwgMTUyNzgsIDE1MjgxLCAxNTI4NSwgCisgICAgMCwgMTUyODksIDE1MjkyLCAxNTI5NiwgMTUzMDAsIDE1MzAzLCAxNTMwNywgMTUzMTEsIDE1MzE1LCAxNTMxOSwgMTUzMjMsIAorICAgIDE1MzI3LCAxNTMzMSwgMTUzMzUsIDE1MzM5LCAxNTM0MywgMTUzNDcsIDE1MzUxLCAxNTM1NSwgMTUzNTksIDE1MzYzLCAKKyAgICAxNTM2NywgMTUzNzEsIDE1Mzc1LCAwLCAxNTM3OCwgMTUzODEsIDE1Mzg1LCAxNTM4OSwgMTUzOTMsIDE1Mzk2LCAxNTM5OSwgCisgICAgMTU0MDMsIDE1NDA3LCAxNTQxMCwgMTU0MTQsIDE1NDE4LCAxNTQyMiwgMTU0MjYsIDE1NDMwLCAxNTQzNCwgMCwgMCwgMCwgCisgICAgMTU0MzcsIDE1NDQxLCAxNTQ0NiwgMTU0NTAsIDE1NDU1LCAxNTQ1OSwgMTU0NjQsIDE1NDY5LCAwLCAxNTQ3NSwgMTU0NzksIAorICAgIDE1NDg0LCAwLCAxNTQ4OSwgMTU0OTMsIDE1NDk4LCAxNTUwMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU1MDcsIDE1NTExLCAKKyAgICAwLCAxNTUxNywgMTU1MjEsIDE1NTI1LCAwLCAwLCAwLCAwLCAwLCAxNTUyOSwgMTU1MzQsIDE1NTM5LCAxNTU0NCwgMCwgMCwgCisgICAgMTU1NTAsIDE1NTU0LCAxNTU1NywgMTU1NjAsIDE1NTYzLCAxNTU2NiwgMTU1NjksIDE1NTcyLCAxNTU3NiwgMTU1NzksIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1NTgzLCAxNTU5NiwgMTU2MDgsIDE1NjIwLCAxNTYzMiwgMTU2NDQsIDE1NjU2LCAKKyAgICAxNTY2OCwgMTU2NzIsIDE1Njc5LCAxNTY4NCwgMTU2ODksIDAsIDE1Njk0LCAxNTY5OCwgMTU3MDMsIDE1NzA3LCAxNTcxMiwgCisgICAgMTU3MTYsIDE1NzIxLCAxNTcyNiwgMCwgMTU3MzEsIDE1NzM1LCAxNTc0MCwgMCwgMTU3NDUsIDE1NzQ5LCAxNTc1NCwgCisgICAgMTU3NTksIDE1NzYzLCAxNTc2OCwgMTU3NzMsIDE1Nzc4LCAxNTc4MywgMTU3ODgsIDE1NzkzLCAxNTc5OCwgMTU4MDMsIAorICAgIDE1ODA4LCAxNTgxMywgMTU4MTgsIDE1ODIzLCAxNTgyOCwgMTU4MzMsIDE1ODM4LCAxNTg0MywgMTU4NDgsIDE1ODUzLCAwLCAKKyAgICAxNTg1NywgMTU4NjEsIDE1ODY2LCAxNTg3MSwgMTU4NzYsIDE1ODgwLCAxNTg4NCwgMTU4ODksIDE1ODk0LCAxNTg5OCwgMCwgCisgICAgMTU5MDMsIDE1OTA4LCAxNTkxMywgMTU5MTgsIDE1OTIzLCAwLCAwLCAxNTkyNywgMTU5MzIsIDE1OTM3LCAxNTk0MywgCisgICAgMTU5NDgsIDE1OTU0LCAxNTk1OSwgMTU5NjUsIDE1OTcxLCAwLCAxNTk3OCwgMTU5ODMsIDE1OTg5LCAwLCAxNTk5NSwgCisgICAgMTYwMDAsIDE2MDA2LCAxNjAxMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTYwMTcsIDE2MDIyLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxNjAyOSwgMCwgMTYwMzQsIDE2MDQwLCAxNjA0NiwgMTYwNTIsIDAsIDAsIDE2MDU5LCAxNjA2NCwgMTYwNjgsIAorICAgIDE2MDcyLCAxNjA3NiwgMTYwODAsIDE2MDg0LCAxNjA4OCwgMTYwOTMsIDE2MDk3LCAwLCAxNjEwMiwgMTYxMDcsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2MTEyLCAxNjExNiwgMTYxMjAsIDAsIDE2MTI0LCAxNjEyNywgCisgICAgMTYxMzEsIDE2MTM0LCAxNjEzOCwgMTYxNDEsIDE2MTQ1LCAxNjE0OSwgMCwgMTYxNTMsIDE2MTU2LCAxNjE2MCwgMCwgCisgICAgMTYxNjQsIDE2MTY3LCAxNjE3MSwgMTYxNzUsIDE2MTc4LCAxNjE4MiwgMTYxODYsIDE2MTkwLCAxNjE5NCwgMTYxOTgsIAorICAgIDE2MjAyLCAxNjIwNiwgMTYyMTAsIDE2MjE0LCAxNjIxOCwgMTYyMjIsIDE2MjI2LCAxNjIzMCwgMTYyMzQsIDE2MjM4LCAKKyAgICAxNjI0MiwgMTYyNDYsIDE2MjUwLCAxNjI1MywgMTYyNTcsIDE2MjYwLCAxNjI2NCwgMTYyNjgsIDE2MjcyLCAxNjI3NSwgCisgICAgMTYyNzgsIDE2MjgyLCAxNjI4NiwgMTYyODksIDE2MjkzLCAxNjI5NywgMTYzMDEsIDE2MzA1LCAxNjMwOSwgMTYzMTMsIAorICAgIDE2MzE2LCAwLCAwLCAxNjMyMCwgMTYzMjQsIDE2MzI5LCAxNjMzMywgMTYzMzgsIDE2MzQyLCAxNjM0NywgMTYzNTIsIDAsIAorICAgIDE2MzU4LCAxNjM2MiwgMTYzNjcsIDAsIDE2MzcyLCAxNjM3NiwgMTYzODEsIDE2Mzg2LCAxNjM5MCwgMTYzOTUsIDAsIDAsIAorICAgIDAsIDAsIDE2Mzk5LCAxNjQwNSwgMTY0MTEsIDE2NDE3LCAxNjQyMywgMTY0MjksIDE2NDM1LCAxNjQ0MSwgMTY0NDcsIAorICAgIDE2NDUzLCAxNjQ1OSwgMTY0NjUsIDE2NDcxLCAxNjQ3NiwgMTY0ODEsIDE2NDg2LCAwLCAwLCAxNjQ5MiwgMTY0OTYsIAorICAgIDE2NDk5LCAxNjUwMiwgMTY1MDUsIDE2NTA4LCAxNjUxMSwgMTY1MTQsIDE2NTE4LCAxNjUyMSwgMTY1MjUsIDE2NTI5LCAKKyAgICAxNjUzNCwgMTY1MzksIDE2NTQ1LCAxNjU1MSwgMTY1NTcsIDE2NTYzLCAxNjU2OSwgMTY1NzUsIDE2NTc5LCAxNjU4NSwgCisgICAgMTY1OTEsIDE2NTk3LCAxNjYwMiwgMTY2MDgsIDAsIDAsIDE2NjE0LCAxNjYxOCwgMCwgMTY2MjIsIDE2NjI2LCAxNjYzMCwgCisgICAgMTY2MzQsIDE2NjM4LCAxNjY0MiwgMTY2NDYsIDE2NjUwLCAxNjY1NCwgMTY2NTgsIDE2NjYyLCAxNjY2NiwgMTY2NzAsIAorICAgIDE2Njc0LCAxNjY3OCwgMTY2ODIsIDE2Njg2LCAxNjY5MCwgMCwgMCwgMCwgMTY2OTQsIDE2NzAwLCAxNjcwNiwgMTY3MTIsIAorICAgIDE2NzE4LCAxNjcyNCwgMTY3MzAsIDE2NzM2LCAxNjc0MiwgMTY3NDgsIDE2NzU0LCAxNjc2MCwgMTY3NjgsIDE2Nzc0LCAKKyAgICAxNjc4MCwgMTY3ODYsIDE2NzkyLCAxNjc5OCwgMTY4MDQsIDE2ODEwLCAxNjgxNiwgMTY4MjIsIDE2ODI4LCAxNjgzNCwgMCwgCisgICAgMTY4NDAsIDE2ODQ2LCAxNjg1MiwgMTY4NTgsIDE2ODY0LCAxNjg3MCwgMTY4NzQsIDE2ODgwLCAxNjg4NCwgMCwgMTY4ODgsIAorICAgIDAsIDAsIDE2ODk0LCAxNjg5OCwgMTY5MDQsIDE2OTEwLCAxNjkxNiwgMTY5MjAsIDE2OTI2LCAwLCAwLCAwLCAxNjkzMCwgMCwgCisgICAgMCwgMCwgMCwgMTY5MzQsIDE2OTM5LCAxNjk0NiwgMTY5NTMsIDE2OTYwLCAxNjk2NywgMCwgMTY5NzQsIDAsIDE2OTgxLCAKKyAgICAxNjk4NiwgMTY5OTEsIDE2OTk4LCAxNzAwNSwgMTcwMTQsIDE3MDI1LCAxNzAzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcwMzksIAorICAgIDE3MDQ1LCAxNzA1MCwgMTcwNTUsIDE3MDYwLCAxNzA2NSwgMTcwNzAsIDE3MDc1LCAxNzA4MSwgMTcwODYsIDAsIDAsIAorICAgIDE3MDkyLCAxNzA5OSwgMTcxMDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MTExLCAxNzExOCwgCisgICAgMTcxMjUsIDE3MTMyLCAxNzEzOSwgMTcxNDYsIDE3MTUzLCAxNzE2MCwgMTcxNjcsIDE3MTc0LCAxNzE4MSwgMTcxODgsIAorICAgIDE3MTk1LCAxNzIwMiwgMTcyMDksIDE3MjE2LCAxNzIyMywgMTcyMzAsIDE3MjM3LCAxNzI0NCwgMTcyNTEsIDE3MjU4LCAKKyAgICAxNzI2NSwgMTcyNzIsIDE3Mjc5LCAxNzI4NiwgMTcyOTMsIDE3MzAwLCAxNzMwNywgMTczMTQsIDE3MzIxLCAxNzMyOCwgCisgICAgMTczMzUsIDE3MzQxLCAxNzM0OCwgMTczNTUsIDE3MzYwLCAxNzM2NywgMTczNzIsIDE3Mzc5LCAxNzM4NiwgMTczOTMsIAorICAgIDE3NDAwLCAxNzQwNywgMTc0MTQsIDE3NDIwLCAxNzQyNywgMTc0MzIsIDE3NDM4LCAxNzQ0NSwgMTc0NTIsIDE3NDU5LCAKKyAgICAxNzQ2NSwgMTc0NzIsIDE3NDc5LCAxNzQ4NiwgMTc0OTIsIDE3NDk5LCAwLCAwLCAwLCAwLCAxNzUwNCwgMTc1MTEsIAorICAgIDE3NTE3LCAxNzUyNCwgMTc1MzAsIDE3NTM5LCAxNzU0OCwgMTc1NTMsIDE3NTU4LCAxNzU2MywgMTc1NzAsIDE3NTc3LCAKKyAgICAxNzU4NCwgMTc1OTEsIDE3NTk2LCAxNzYwMSwgMTc2MDYsIDE3NjExLCAxNzYxNiwgMTc2MjAsIDE3NjI0LCAxNzYyOCwgCisgICAgMTc2MzIsIDE3NjM2LCAxNzY0MCwgMTc2NDUsIDE3NjQ5LCAxNzY1NCwgMTc2NTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDE3NjY0LCAxNzY2OSwgMCwgMTc2NzYsIDAsIDAsIDE3NjgzLCAxNzY4OCwgMCwgMTc2OTMsIDAsIAorICAgIDAsIDE3NzAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzcwNSwgMTc3MTAsIDE3NzE0LCAxNzcyMSwgMCwgMTc3MjgsIDE3NzMzLCAKKyAgICAxNzczOCwgMTc3NDMsIDE3NzUwLCAxNzc1NywgMTc3NjQsIDAsIDE3NzcxLCAxNzc3NiwgMTc3ODEsIDAsIDE3Nzg4LCAwLCAKKyAgICAxNzc5NSwgMCwgMCwgMTc4MDAsIDE3ODA3LCAwLCAxNzgxNCwgMTc4MTgsIDE3ODI1LCAxNzgyOSwgMTc4MzQsIDE3ODQyLCAKKyAgICAxNzg0OCwgMTc4NTQsIDE3ODU5LCAxNzg2NSwgMTc4NzEsIDE3ODc3LCAxNzg4MiwgMCwgMTc4ODgsIDE3ODk2LCAxNzkwMywgCisgICAgMCwgMCwgMTc5MTAsIDE3OTE1LCAxNzkyMSwgMTc5MjYsIDE3OTMyLCAwLCAxNzkzOCwgMCwgMTc5NDMsIDE3OTUwLCAKKyAgICAxNzk1NywgMTc5NjQsIDE3OTcxLCAxNzk3NiwgMCwgMCwgMTc5ODAsIDE3OTg1LCAxNzk4OSwgMTc5OTMsIDE3OTk3LCAKKyAgICAxODAwMSwgMTgwMDUsIDE4MDA5LCAxODAxNCwgMTgwMTgsIDAsIDAsIDE4MDIzLCAxODAyOSwgMTgwMzUsIDE4MDQyLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxODA0OSwgMTgwNTMsIDE4MDY0LCAxODA3OSwgMTgwOTQsIDE4MTA0LCAxODExNSwgCisgICAgMTgxMjgsIDE4MTM5LCAxODE0NSwgMTgxNTMsIDE4MTYzLCAxODE2OSwgMTgxNzcsIDE4MTgxLCAxODE4NywgMTgxOTMsIAorICAgIDE4MjAxLCAxODIxMSwgMTgyMTksIDE4MjMyLCAxODIzOCwgMTgyNDYsIDE4MjU0LCAxODI2NiwgMTgyNzMsIDE4MjgxLCAKKyAgICAxODI4OSwgMTgyOTcsIDE4MzA1LCAxODMxMywgMTgzMjEsIDE4MzMxLCAxODMzNSwgMTgzMzgsIDE4MzQxLCAxODM0NCwgCisgICAgMTgzNDcsIDE4MzUwLCAxODM1MywgMTgzNTcsIDE4MzYwLCAxODM2NCwgMTgzNjgsIDE4MzcyLCAxODM3NiwgMTgzODAsIAorICAgIDE4Mzg0LCAxODM4OCwgMTgzOTMsIDE4Mzk3LCAxODQwMiwgMTg0MDcsIDE4NDEzLCAxODQyMywgMTg0MzcsIDE4NDQ3LCAKKyAgICAxODQ1MywgMTg0NTksIDE4NDY3LCAxODQ3NSwgMTg0ODMsIDE4NDkxLCAxODQ5NywgMTg1MDMsIDE4NTA2LCAxODUxMCwgCisgICAgMTg1MTQsIDE4NTE4LCAxODUyMiwgMTg1MjYsIDE4NTMwLCAwLCAxODUzNCwgMTg1MzgsIDE4NTQyLCAxODU0NiwgMTg1NTAsIAorICAgIDE4NTU0LCAxODU1OCwgMTg1NjIsIDE4NTY2LCAxODU3MCwgMTg1NzQsIDE4NTc3LCAxODU4MCwgMTg1ODQsIDE4NTg4LCAKKyAgICAxODU5MiwgMTg1OTUsIDE4NTk5LCAxODYwMywgMTg2MDcsIDE4NjExLCAxODYxNSwgMTg2MTksIDE4NjIzLCAxODYyNywgCisgICAgMTg2MzAsIDE4NjM0LCAxODYzNywgMTg2NDEsIDE4NjQ1LCAxODY0OSwgMTg2NTIsIDE4NjU1LCAxODY1OSwgMTg2NjUsIAorICAgIDE4NjY5LCAwLCAwLCAwLCAwLCAxODY3MywgMTg2NzgsIDE4NjgyLCAxODY4NywgMTg2OTEsIDE4Njk2LCAxODcwMSwgCisgICAgMTg3MDcsIDE4NzEyLCAxODcxOCwgMTg3MjIsIDE4NzI3LCAxODczMSwgMTg3MzYsIDE4NzQ2LCAxODc1MiwgMTg3NTgsIAorICAgIDE4NzY1LCAxODc3NSwgMTg3ODEsIDE4Nzg1LCAxODc4OSwgMTg3OTUsIDE4ODAxLCAxODgwOSwgMTg4MTUsIDE4ODIzLCAKKyAgICAxODgzMSwgMTg4MzksIDE4ODQ5LCAxODg1NywgMTg4NjcsIDE4ODcyLCAxODg3OCwgMTg4ODQsIDE4ODkwLCAxODg5NiwgCisgICAgMTg5MDIsIDE4OTA4LCAwLCAxODkxNCwgMTg5MjAsIDE4OTI2LCAxODkzMiwgMTg5MzgsIDE4OTQ0LCAxODk1MCwgMTg5NTYsIAorICAgIDE4OTYyLCAxODk2OCwgMTg5NzQsIDE4OTc5LCAxODk4NCwgMTg5OTAsIDE4OTk2LCAxOTAwMiwgMTkwMDcsIDE5MDEzLCAKKyAgICAxOTAxOSwgMTkwMjUsIDE5MDMxLCAxOTAzNywgMTkwNDMsIDE5MDQ5LCAxOTA1NSwgMTkwNjAsIDE5MDY2LCAxOTA3MSwgCisgICAgMTkwNzcsIDE5MDgzLCAxOTA4OSwgMTkwOTQsIDE5MDk5LCAxOTEwNSwgMTkxMTMsIDE5MTIwLCAwLCAxOTEyOCwgMTkxMzUsIAorICAgIDE5MTQ4LCAxOTE1NSwgMTkxNjIsIDE5MTcwLCAxOTE3OCwgMTkxODQsIDE5MTkwLCAxOTE5NiwgMTkyMDYsIDE5MjExLCAKKyAgICAxOTIxNywgMTkyMjcsIDE5MjM3LCAwLCAxOTI0NywgMTkyNTcsIDE5MjY1LCAxOTI3NywgMTkyODksIDE5Mjk1LCAxOTMwOSwgCisgICAgMTkzMjQsIDE5MzI5LCAxOTMzNCwgMTkzNDIsIDE5MzUwLCAxOTM1OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMTkzNjYsIDE5MzY5LCAxOTM3MywgMTkzNzcsIDE5MzgxLCAxOTM4NSwgMTkzODksIDE5MzkzLCAxOTM5NywgCisgICAgMTk0MDEsIDE5NDA1LCAxOTQwOSwgMTk0MTMsIDE5NDE3LCAxOTQyMSwgMTk0MjUsIDE5NDI5LCAxOTQzMywgMTk0MzcsIAorICAgIDE5NDQxLCAxOTQ0NSwgMTk0NDgsIDE5NDUxLCAxOTQ1NSwgMTk0NTksIDE5NDYzLCAxOTQ2NiwgMTk0NjksIDE5NDczLCAKKyAgICAxOTQ3NiwgMTk0ODAsIDE5NDg0LCAxOTQ4NywgMTk0OTEsIDE5NDk0LCAxOTQ5OSwgMTk1MDIsIDE5NTA2LCAxOTUwOSwgCisgICAgMTk1MTMsIDE5NTE2LCAxOTUyMSwgMTk1MjQsIDE5NTI4LCAxOTUzNSwgMTk1NDAsIDE5NTQ0LCAxOTU0OSwgMTk1NTMsIAorICAgIDE5NTU4LCAxOTU2MiwgMTk1NjcsIDE5NTc0LCAxOTU4MCwgMTk1ODUsIDE5NTg5LCAxOTU5MywgMTk1OTcsIDE5NjAxLCAKKyAgICAxOTYwNSwgMTk2MTAsIDE5NjE2LCAxOTYyMiwgMTk2MjcsIDE5NjMzLCAxOTYzNywgMTk2NDAsIDE5NjQzLCAxOTY0NiwgCisgICAgMTk2NDksIDE5NjUyLCAxOTY1NSwgMTk2NTksIDE5NjYyLCAxOTY2NiwgMTk2NzIsIDE5Njc2LCAxOTY4MCwgMTk2ODQsIAorICAgIDE5Njg4LCAxOTY5MiwgMTk2OTYsIDE5NzAwLCAxOTcwNCwgMTk3MDksIDE5NzEzLCAxOTcxOCwgMTk3MjMsIDE5NzI5LCAKKyAgICAxOTczNCwgMTk3NDAsIDE5NzQ2LCAxOTc1MiwgMTk3NTgsIDE5NzY0LCAxOTc3MSwgMTk3NzgsIDE5Nzg1LCAxOTc5MywgCisgICAgMTk4MDIsIDE5ODExLCAxOTgyMiwgMTk4MzIsIDE5ODQyLCAxOTg1MywgMTk4NjQsIDE5ODc0LCAxOTg4NCwgMTk4OTQsIAorICAgIDE5OTA0LCAxOTkxNCwgMTk5MjQsIDE5OTM0LCAxOTk0NCwgMTk5NTIsIDE5OTU5LCAxOTk2NSwgMTk5NzIsIDE5OTc3LCAKKyAgICAxOTk4MywgMTk5ODksIDE5OTk1LCAyMDAwMSwgMjAwMDcsIDIwMDEzLCAyMDAxOCwgMjAwMjQsIDIwMDMwLCAyMDAzNiwgCisgICAgMjAwNDIsIDIwMDQ3LCAyMDA1NSwgMjAwNjIsIDIwMDY4LCAyMDA3NSwgMjAwODMsIDIwMDg5LCAyMDA5NSwgMjAxMDEsIAorICAgIDIwMTA3LCAyMDExNSwgMjAxMjMsIDIwMTMzLCAyMDE0MSwgMjAxNDksIDIwMTU1LCAyMDE2MCwgMjAxNjUsIDIwMTcwLCAKKyAgICAyMDE3NSwgMjAxODAsIDIwMTg1LCAyMDE5MSwgMjAxOTYsIDIwMjAyLCAyMDIwOCwgMjAyMTQsIDIwMjIwLCAyMDIyNywgCisgICAgMjAyMzIsIDIwMjM4LCAyMDI0MywgMjAyNDgsIDIwMjUzLCAyMDI1OCwgMjAyNjMsIDIwMjY4LCAyMDI3MywgMjAyNzgsIAorICAgIDIwMjgzLCAyMDI4OCwgMjAyOTMsIDIwMjk4LCAyMDMwMywgMjAzMDgsIDIwMzEzLCAyMDMxOCwgMjAzMjMsIDIwMzI4LCAKKyAgICAyMDMzMywgMjAzMzgsIDIwMzQzLCAyMDM0OCwgMjAzNTMsIDIwMzU4LCAyMDM2MywgMjAzNjgsIDIwMzczLCAyMDM3OCwgCisgICAgMjAzODMsIDIwMzg4LCAyMDM5MywgMjAzOTgsIDIwNDAzLCAyMDQwOCwgMjA0MTMsIDIwNDE4LCAyMDQyMywgMCwgMjA0MjgsIAorICAgIDAsIDAsIDAsIDAsIDAsIDIwNDMzLCAwLCAwLCAyMDQzOCwgMjA0NDIsIDIwNDQ2LCAyMDQ1MCwgMjA0NTQsIDIwNDU4LCAKKyAgICAyMDQ2MiwgMjA0NjYsIDIwNDcwLCAyMDQ3NCwgMjA0NzgsIDIwNDgyLCAyMDQ4NiwgMjA0OTAsIDIwNDk0LCAyMDQ5OCwgCisgICAgMjA1MDIsIDIwNTA2LCAyMDUxMCwgMjA1MTQsIDIwNTE4LCAyMDUyMiwgMjA1MjYsIDIwNTMwLCAyMDUzNCwgMjA1MzgsIAorICAgIDIwNTQyLCAyMDU0NiwgMjA1NTAsIDIwNTU0LCAyMDU1OCwgMjA1NjIsIDIwNTY2LCAyMDU3MCwgMjA1NzQsIDIwNTc4LCAKKyAgICAyMDU4MiwgMjA1ODYsIDIwNTkwLCAyMDU5NCwgMjA1OTgsIDIwNjAyLCAyMDYwOCwgMjA2MTIsIDIwNjE3LCAyMDYyMiwgCisgICAgMjA2MjYsIDIwNjMxLCAyMDYzNiwgMjA2NDAsIDIwNjQ0LCAyMDY0OCwgMjA2NTIsIDIwNjU2LCAyMDY2MCwgMjA2NjQsIAorICAgIDIwNjY4LCAyMDY3MiwgMjA2NzYsIDIwNjgwLCAyMDY4NCwgMjA2ODgsIDIwNjkyLCAyMDY5NiwgMjA3MDAsIDIwNzA0LCAKKyAgICAyMDcwOCwgMjA3MTIsIDIwNzE2LCAyMDcyMCwgMjA3MjQsIDIwNzI4LCAyMDczMiwgMjA3MzYsIDIwNzQwLCAyMDc0NCwgCisgICAgMjA3NDgsIDIwNzUyLCAyMDc1NiwgMjA3NjAsIDIwNzY0LCAyMDc2OCwgMjA3NzIsIDIwNzc2LCAyMDc4MCwgMjA3ODQsIAorICAgIDIwNzg4LCAyMDc5MiwgMjA3OTYsIDIwODAwLCAyMDgwNCwgMjA4MDgsIDIwODEyLCAyMDgxNiwgMjA4MjAsIDIwODI0LCAKKyAgICAyMDgyOCwgMjA4MzIsIDIwODM2LCAyMDg0MCwgMjA4NDQsIDIwODQ4LCAyMDg1MiwgMjA4NTYsIDIwODYwLCAyMDg2NCwgCisgICAgMjA4NjgsIDIwODcyLCAyMDg3NiwgMjA4ODAsIDIwODg0LCAyMDg4OCwgMjA4OTIsIDIwODk2LCAyMDkwMCwgMjA5MDQsIAorICAgIDIwOTA4LCAyMDkxMiwgMjA5MTYsIDIwOTIwLCAyMDkyNCwgMjA5MjgsIDIwOTMyLCAyMDkzNiwgMjA5NDAsIDIwOTQ0LCAKKyAgICAyMDk0OCwgMjA5NTIsIDIwOTU2LCAyMDk2MCwgMjA5NjQsIDIwOTY4LCAyMDk3MiwgMjA5NzYsIDIwOTgwLCAyMDk4NCwgCisgICAgMjA5ODgsIDIwOTkyLCAyMDk5NiwgMjEwMDAsIDIxMDA0LCAyMTAwOCwgMjEwMTIsIDIxMDE2LCAyMTAyMCwgMjEwMjQsIAorICAgIDIxMDI3LCAyMTAzMSwgMjEwMzQsIDIxMDM4LCAyMTA0MiwgMjEwNDUsIDIxMDQ5LCAyMTA1MywgMjEwNTYsIDIxMDYwLCAKKyAgICAyMTA2NCwgMjEwNjgsIDIxMDcyLCAyMTA3NSwgMjEwNzksIDIxMDgzLCAyMTA4NywgMjEwOTEsIDIxMDk1LCAyMTA5OSwgCisgICAgMjExMDIsIDIxMTA2LCAyMTExMCwgMjExMTQsIDIxMTE4LCAyMTEyMiwgMjExMjYsIDIxMTMwLCAyMTEzNCwgMjExMzgsIAorICAgIDIxMTQyLCAyMTE0NiwgMjExNTAsIDIxMTU0LCAyMTE1OCwgMjExNjIsIDIxMTY2LCAyMTE3MCwgMjExNzQsIDIxMTc4LCAKKyAgICAyMTE4MiwgMjExODYsIDIxMTkwLCAyMTE5NCwgMjExOTgsIDIxMjAyLCAyMTIwNiwgMjEyMTAsIDIxMjE0LCAyMTIxOCwgCisgICAgMjEyMjIsIDIxMjI2LCAyMTIzMCwgMjEyMzQsIDIxMjM4LCAyMTI0MiwgMjEyNDYsIDIxMjUwLCAyMTI1NCwgMjEyNTgsIAorICAgIDIxMjYyLCAyMTI2NiwgMjEyNzAsIDIxMjc0LCAyMTI3OCwgMjEyODIsIDIxMjg2LCAyMTI5MCwgMjEyOTQsIDIxMjk4LCAKKyAgICAyMTMwMiwgMjEzMDYsIDIxMzEwLCAyMTMxNCwgMjEzMTgsIDIxMzIyLCAyMTMyNiwgMjEzMzAsIDIxMzM0LCAyMTMzOCwgCisgICAgMjEzNDIsIDIxMzQ2LCAyMTM1MCwgMjEzNTQsIDIxMzU4LCAyMTM2MiwgMjEzNjYsIDIxMzcwLCAyMTM3NCwgMjEzNzgsIAorICAgIDIxMzgyLCAyMTM4NiwgMjEzOTAsIDIxMzk0LCAyMTM5OCwgMjE0MDIsIDIxNDA2LCAyMTQxMCwgMjE0MTQsIDIxNDE4LCAKKyAgICAyMTQyMiwgMjE0MjYsIDIxNDMwLCAyMTQzNCwgMjE0MzgsIDIxNDQyLCAyMTQ0NiwgMjE0NTAsIDIxNDU0LCAyMTQ1OCwgCisgICAgMjE0NjIsIDIxNDY2LCAyMTQ3MCwgMjE0NzQsIDIxNDc4LCAyMTQ4MiwgMjE0ODYsIDIxNDkwLCAyMTQ5NCwgMjE0OTgsIAorICAgIDIxNTAyLCAyMTUwNiwgMjE1MTAsIDIxNTE0LCAyMTUxOCwgMjE1MjIsIDIxNTI2LCAyMTUzMCwgMjE1MzQsIDIxNTM4LCAKKyAgICAyMTU0MiwgMjE1NDYsIDIxNTUwLCAyMTU1NCwgMjE1NTgsIDIxNTYyLCAyMTU2NiwgMjE1NzAsIDIxNTc0LCAyMTU3OCwgCisgICAgMjE1ODIsIDIxNTg2LCAyMTU5MCwgMjE1OTQsIDIxNTk4LCAyMTYwMiwgMjE2MDYsIDIxNjEwLCAyMTYxNCwgMjE2MTgsIAorICAgIDIxNjIyLCAyMTYyNiwgMjE2MzAsIDIxNjM0LCAyMTYzOCwgMjE2NDIsIDIxNjQ2LCAyMTY1MCwgMjE2NTQsIDIxNjU3LCAKKyAgICAyMTY2MSwgMjE2NjUsIDIxNjY5LCAyMTY3MywgMjE2NzcsIDIxNjgxLCAyMTY4NSwgMjE2ODgsIDIxNjkyLCAyMTY5NiwgCisgICAgMjE3MDAsIDIxNzA0LCAyMTcwOCwgMjE3MTIsIDIxNzE2LCAyMTcyMCwgMjE3MjQsIDIxNzI4LCAyMTczMiwgMjE3MzYsIAorICAgIDIxNzQwLCAyMTc0NCwgMjE3NDgsIDIxNzUxLCAyMTc1NSwgMjE3NTksIDIxNzYzLCAyMTc2NywgMjE3NzEsIDIxNzc1LCAKKyAgICAyMTc3OSwgMjE3ODMsIDIxNzg3LCAyMTc5MSwgMjE3OTUsIDIxNzk5LCAyMTgwMywgMjE4MDcsIDIxODExLCAyMTgxNSwgCisgICAgMjE4MTksIDIxODIzLCAyMTgyNywgMjE4MzEsIDIxODM1LCAyMTgzOSwgMjE4NDMsIDIxODQ3LCAyMTg1MSwgMjE4NTUsIAorICAgIDIxODU5LCAyMTg2MywgMjE4NjcsIDIxODcxLCAyMTg3NSwgMjE4NzksIDIxODgzLCAyMTg4NywgMjE4OTEsIDIxODk1LCAKKyAgICAyMTg5OSwgMjE5MDMsIDIxOTA3LCAyMTkxMSwgMjE5MTUsIDIxOTE5LCAyMTkyMywgMjE5MjcsIDIxOTMxLCAyMTkzNSwgCisgICAgMjE5MzksIDAsIDIxOTQzLCAyMTk0NywgMjE5NTEsIDIxOTU1LCAwLCAwLCAyMTk1OSwgMjE5NjMsIDIxOTY3LCAyMTk3MSwgCisgICAgMjE5NzUsIDIxOTc5LCAyMTk4MywgMCwgMjE5ODcsIDAsIDIxOTkxLCAyMTk5NSwgMjE5OTksIDIyMDAzLCAwLCAwLCAKKyAgICAyMjAwNywgMjIwMTEsIDIyMDE1LCAyMjAxOSwgMjIwMjMsIDIyMDI3LCAyMjAzMSwgMjIwMzUsIDIyMDM5LCAyMjA0MywgCisgICAgMjIwNDcsIDIyMDUxLCAyMjA1NSwgMjIwNTksIDIyMDYzLCAyMjA2NywgMjIwNzEsIDIyMDc1LCAyMjA3OSwgMjIwODMsIAorICAgIDIyMDg3LCAyMjA5MSwgMjIwOTUsIDIyMDk4LCAyMjEwMiwgMjIxMDYsIDIyMTEwLCAyMjExNCwgMjIxMTgsIDIyMTIyLCAKKyAgICAyMjEyNiwgMjIxMzAsIDIyMTM0LCAyMjEzOCwgMjIxNDIsIDIyMTQ2LCAyMjE1MCwgMjIxNTQsIDIyMTU4LCAyMjE2MiwgCisgICAgMjIxNjYsIDAsIDIyMTcwLCAyMjE3NCwgMjIxNzgsIDIyMTgyLCAwLCAwLCAyMjE4NiwgMjIxODksIDIyMTkzLCAyMjE5NywgCisgICAgMjIyMDEsIDIyMjA1LCAyMjIwOSwgMjIyMTMsIDIyMjE3LCAyMjIyMSwgMjIyMjUsIDIyMjI5LCAyMjIzMywgMjIyMzcsIAorICAgIDIyMjQxLCAyMjI0NSwgMjIyNDksIDIyMjU0LCAyMjI1OSwgMjIyNjQsIDIyMjcwLCAyMjI3NiwgMjIyODEsIDIyMjg2LCAKKyAgICAyMjI5MiwgMjIyOTUsIDIyMjk5LCAyMjMwMywgMjIzMDcsIDIyMzExLCAyMjMxNSwgMjIzMTksIDIyMzIzLCAwLCAyMjMyNywgCisgICAgMjIzMzEsIDIyMzM1LCAyMjMzOSwgMCwgMCwgMjIzNDMsIDIyMzQ3LCAyMjM1MSwgMjIzNTUsIDIyMzU5LCAyMjM2MywgCisgICAgMjIzNjcsIDAsIDIyMzcxLCAwLCAyMjM3NSwgMjIzNzksIDIyMzgzLCAyMjM4NywgMCwgMCwgMjIzOTEsIDIyMzk1LCAKKyAgICAyMjM5OSwgMjI0MDMsIDIyNDA3LCAyMjQxMSwgMjI0MTUsIDIyNDE5LCAyMjQyMywgMjI0MjgsIDIyNDMzLCAyMjQzOCwgCisgICAgMjI0NDQsIDIyNDUwLCAyMjQ1NSwgMCwgMjI0NjAsIDIyNDY0LCAyMjQ2OCwgMjI0NzIsIDIyNDc2LCAyMjQ4MCwgMjI0ODQsIAorICAgIDIyNDg4LCAyMjQ5MiwgMjI0OTYsIDIyNTAwLCAyMjUwNCwgMjI1MDgsIDIyNTEyLCAyMjUxNiwgMjI1MjAsIDIyNTI0LCAKKyAgICAyMjUyNywgMjI1MzEsIDIyNTM1LCAyMjUzOSwgMjI1NDMsIDIyNTQ3LCAyMjU1MSwgMjI1NTUsIDIyNTU5LCAyMjU2MywgCisgICAgMjI1NjcsIDIyNTcxLCAyMjU3NSwgMjI1NzksIDIyNTgzLCAyMjU4NywgMjI1OTEsIDIyNTk1LCAyMjU5OSwgMjI2MDMsIAorICAgIDIyNjA3LCAyMjYxMSwgMjI2MTUsIDIyNjE5LCAyMjYyMywgMjI2MjcsIDIyNjMxLCAyMjYzNSwgMjI2MzksIDIyNjQzLCAKKyAgICAyMjY0NywgMjI2NTEsIDIyNjU1LCAyMjY1OSwgMjI2NjMsIDIyNjY3LCAyMjY3MSwgMjI2NzUsIDIyNjc5LCAyMjY4MywgMCwgCisgICAgMjI2ODcsIDIyNjkxLCAyMjY5NSwgMjI2OTksIDAsIDAsIDIyNzAzLCAyMjcwNywgMjI3MTEsIDIyNzE1LCAyMjcxOSwgCisgICAgMjI3MjMsIDIyNzI3LCAyMjczMSwgMjI3MzUsIDIyNzM5LCAyMjc0MywgMjI3NDcsIDIyNzUxLCAyMjc1NSwgMjI3NTksIAorICAgIDIyNzYzLCAyMjc2NywgMjI3NzEsIDIyNzc1LCAyMjc3OSwgMjI3ODMsIDIyNzg3LCAyMjc5MSwgMjI3OTUsIDIyNzk5LCAKKyAgICAyMjgwMywgMjI4MDcsIDIyODExLCAyMjgxNSwgMjI4MTksIDIyODIzLCAyMjgyNywgMjI4MzEsIDIyODM1LCAyMjgzOSwgCisgICAgMjI4NDMsIDIyODQ3LCAyMjg1MSwgMjI4NTUsIDIyODU5LCAyMjg2MywgMjI4NjcsIDIyODcxLCAyMjg3NSwgMjI4NzksIAorICAgIDIyODgzLCAyMjg4NywgMjI4OTEsIDIyODk1LCAyMjg5OSwgMjI5MDMsIDIyOTA3LCAyMjkxMSwgMjI5MTUsIDIyOTE5LCAKKyAgICAyMjkyMywgMjI5MjcsIDIyOTMwLCAyMjkzNCwgMjI5MzgsIDIyOTQyLCAyMjk0NiwgMjI5NTAsIDIyOTU0LCAyMjk1OCwgCisgICAgMjI5NjIsIDIyOTY2LCAwLCAwLCAyMjk3MCwgMjI5NzksIDIyOTg1LCAyMjk5MCwgMjI5OTQsIDIyOTk3LCAyMzAwMiwgCisgICAgMjMwMDUsIDIzMDA4LCAyMzAxMSwgMjMwMTYsIDIzMDIwLCAyMzAyNSwgMjMwMjgsIDIzMDMxLCAyMzAzNCwgMjMwMzcsIAorICAgIDIzMDQwLCAyMzA0MywgMjMwNDcsIDIzMDUwLCAyMzA1NCwgMjMwNTgsIDIzMDYyLCAyMzA2NiwgMjMwNzAsIDIzMDc0LCAKKyAgICAyMzA3OCwgMjMwODIsIDIzMDg2LCAyMzA5MCwgMjMwOTQsIDAsIDAsIDAsIDIzMTAwLCAyMzEwNiwgMjMxMTAsIDIzMTE0LCAKKyAgICAyMzExOCwgMjMxMjQsIDIzMTI4LCAyMzEzMiwgMjMxMzYsIDIzMTQyLCAyMzE0NiwgMjMxNTAsIDIzMTU0LCAyMzE2MCwgCisgICAgMjMxNjQsIDIzMTY4LCAyMzE3MiwgMjMxNzgsIDIzMTg0LCAyMzE5MCwgMjMxOTgsIDIzMjA0LCAyMzIxMCwgMjMyMTYsIAorICAgIDIzMjIyLCAyMzIyOCwgMCwgMCwgMCwgMCwgMCwgMCwgMjMyMzQsIDIzMjM3LCAyMzI0MCwgMjMyNDMsIDIzMjQ2LCAyMzI0OSwgCisgICAgMjMyNTMsIDIzMjU3LCAyMzI2MCwgMjMyNjQsIDIzMjY4LCAyMzI3MiwgMjMyNzYsIDIzMjgwLCAyMzI4MywgMjMyODcsIAorICAgIDIzMjkxLCAyMzI5NSwgMjMyOTksIDIzMzAzLCAyMzMwNiwgMjMzMTAsIDIzMzE0LCAyMzMxOCwgMjMzMjIsIDIzMzI2LCAKKyAgICAyMzMyOSwgMjMzMzMsIDIzMzM3LCAyMzM0MSwgMjMzNDUsIDIzMzQ4LCAyMzM1MiwgMjMzNTYsIDIzMzYwLCAyMzM2NCwgCisgICAgMjMzNjgsIDIzMzcyLCAyMzM3NiwgMjMzODAsIDIzMzg0LCAyMzM4OCwgMjMzOTIsIDIzMzk2LCAyMzQwMCwgMjM0MDQsIAorICAgIDIzNDA4LCAyMzQxMiwgMjM0MTYsIDIzNDIwLCAyMzQyNCwgMjM0MjgsIDIzNDMyLCAyMzQzNiwgMjM0NDAsIDIzNDQ0LCAKKyAgICAyMzQ0OCwgMjM0NTIsIDIzNDU2LCAyMzQ2MCwgMjM0NjQsIDIzNDY4LCAyMzQ3MiwgMjM0NzYsIDIzNDgwLCAyMzQ4NCwgCisgICAgMjM0ODgsIDIzNDkyLCAyMzQ5NiwgMjM1MDAsIDIzNTA0LCAyMzUwOCwgMjM1MTIsIDIzNTE2LCAyMzUyMCwgMjM1MjQsIAorICAgIDIzNTI4LCAyMzUzMiwgMjM1MzYsIDIzNTQwLCAyMzU0MywgMjM1NDcsIDIzNTUxLCAyMzU1NSwgMjM1NTksIDIzNTYzLCAwLCAKKyAgICAwLCAyMzU2NywgMjM1NzIsIDIzNTc3LCAyMzU4MiwgMjM1ODcsIDIzNTkyLCAwLCAwLCAyMzU5NywgMjM2MDEsIDIzNjA0LCAKKyAgICAyMzYwOCwgMjM2MTEsIDIzNjE1LCAyMzYxOCwgMjM2MjIsIDIzNjI4LCAyMzYzMywgMjM2MzcsIDIzNjQwLCAyMzY0NCwgCisgICAgMjM2NDgsIDIzNjU0LCAyMzY1OCwgMjM2NjQsIDIzNjY4LCAyMzY3NCwgMjM2NzgsIDIzNjg0LCAyMzY4OCwgMjM2OTQsIAorICAgIDIzNzAwLCAyMzcwNCwgMjM3MTAsIDIzNzE0LCAyMzcyMCwgMjM3MjYsIDIzNzMwLCAyMzczNiwgMjM3NDIsIDIzNzQ2LCAKKyAgICAyMzc1MSwgMjM3NTksIDIzNzY3LCAyMzc3NCwgMjM3NzksIDIzNzg0LCAyMzc5MywgMjM3OTksIDIzODA3LCAyMzgxMiwgCisgICAgMjM4MTgsIDIzODIyLCAyMzgyNiwgMjM4MzAsIDIzODM0LCAyMzgzOCwgMjM4NDIsIDIzODQ2LCAyMzg1MCwgMjM4NTQsIAorICAgIDIzODU4LCAyMzg2NCwgMjM4NjksIDIzODc0LCAyMzg3NywgMjM4ODEsIDIzODg1LCAyMzg5MSwgMjM4OTUsIDIzOTAxLCAKKyAgICAyMzkwNSwgMjM5MTEsIDIzOTE1LCAyMzkyMSwgMjM5MjUsIDIzOTMxLCAyMzkzNSwgMjM5NDEsIDIzOTQ1LCAyMzk1MSwgCisgICAgMjM5NTcsIDIzOTYxLCAyMzk2NywgMjM5NzIsIDIzOTc2LCAyMzk4MCwgMjM5ODQsIDIzOTg4LCAyMzk5MSwgMjM5OTUsIAorICAgIDI0MDAxLCAyNDAwNiwgMjQwMTEsIDI0MDE1LCAyNDAxOSwgMjQwMjMsIDI0MDI5LCAyNDAzMywgMjQwMzksIDI0MDQzLCAKKyAgICAyNDA0OSwgMjQwNTIsIDI0MDU3LCAyNDA2MSwgMjQwNjcsIDI0MDcxLCAyNDA3NywgMjQwODEsIDI0MDg3LCAyNDA5MywgCisgICAgMjQwOTcsIDI0MTAxLCAyNDEwNSwgMjQxMDksIDI0MTEzLCAyNDExNywgMjQxMjEsIDI0MTI1LCAyNDEyOSwgMjQxMzMsIAorICAgIDI0MTM3LCAyNDE0MywgMjQxNDYsIDI0MTUwLCAyNDE1NCwgMjQxNjAsIDI0MTY0LCAyNDE3MCwgMjQxNzQsIDI0MTgwLCAKKyAgICAyNDE4NCwgMjQxOTAsIDI0MTk0LCAyNDIwMCwgMjQyMDQsIDI0MjEwLCAyNDIxNCwgMjQyMjAsIDI0MjI2LCAyNDIzMCwgCisgICAgMjQyMzQsIDI0MjQwLCAyNDI0NiwgMjQyNTIsIDI0MjU4LCAyNDI2MiwgMjQyNjYsIDI0MjcwLCAyNDI3NCwgMjQyNzgsIAorICAgIDI0MjgyLCAyNDI4OCwgMjQyOTIsIDI0Mjk2LCAyNDMwMCwgMjQzMDYsIDI0MzEwLCAyNDMxNiwgMjQzMjAsIDI0MzI2LCAKKyAgICAyNDMzMCwgMjQzMzYsIDI0MzQwLCAyNDM0NiwgMjQzNTAsIDI0MzU2LCAyNDM2MCwgMjQzNjYsIDI0MzcyLCAyNDM3NiwgCisgICAgMjQzODIsIDI0Mzg2LCAyNDM5MCwgMjQzOTQsIDI0Mzk4LCAyNDQwMiwgMjQ0MDYsIDI0NDEyLCAyNDQxNSwgMjQ0MTksIAorICAgIDI0NDIzLCAyNDQyOSwgMjQ0MzMsIDI0NDM5LCAyNDQ0MywgMjQ0NDksIDI0NDUzLCAyNDQ1OSwgMjQ0NjMsIDI0NDY5LCAKKyAgICAyNDQ3MywgMjQ0NzksIDI0NDgzLCAyNDQ4OSwgMjQ0OTUsIDI0NDk5LCAyNDUwNSwgMjQ1MDksIDI0NTE1LCAyNDUyMSwgCisgICAgMjQ1MjUsIDI0NTI5LCAyNDUzMywgMjQ1MzcsIDI0NTQxLCAyNDU0NSwgMjQ1NTEsIDI0NTU0LCAyNDU1OCwgMjQ1NjIsIAorICAgIDI0NTY4LCAyNDU3MiwgMjQ1NzgsIDI0NTgyLCAyNDU4OCwgMjQ1OTQsIDI0NTk4LCAyNDYwMywgMjQ2MDcsIDI0NjExLCAKKyAgICAyNDYxNSwgMjQ2MTksIDI0NjIzLCAyNDYyNywgMjQ2MzEsIDI0NjM3LCAyNDY0MCwgMjQ2NDQsIDI0NjQ4LCAyNDY1NCwgCisgICAgMjQ2NTgsIDI0NjY0LCAyNDY2OCwgMjQ2NzQsIDI0Njc4LCAyNDY4NCwgMjQ2ODgsIDI0Njk0LCAyNDY5OCwgMjQ3MDQsIAorICAgIDI0NzA4LCAyNDcxNCwgMjQ3MTcsIDI0NzIyLCAyNDcyNiwgMjQ3MzAsIDI0NzM0LCAyNDczOCwgMjQ3NDIsIDI0NzQ2LCAKKyAgICAyNDc1MCwgMjQ3NTYsIDI0NzYwLCAyNDc2NCwgMjQ3NjgsIDI0Nzc0LCAyNDc3OCwgMjQ3ODQsIDI0Nzg4LCAyNDc5NCwgCisgICAgMjQ3OTgsIDI0ODA0LCAyNDgwOCwgMjQ4MTQsIDI0ODE4LCAyNDgyNCwgMjQ4MjgsIDI0ODM0LCAyNDg0MCwgMjQ4NDQsIAorICAgIDI0ODUwLCAyNDg1NCwgMjQ4NjAsIDI0ODY2LCAyNDg3MiwgMjQ4NzgsIDI0ODg0LCAyNDg5MCwgMjQ4OTYsIDI0OTAyLCAKKyAgICAyNDkwNiwgMjQ5MTAsIDI0OTE0LCAyNDkxOCwgMjQ5MjIsIDI0OTI2LCAyNDkzMCwgMjQ5MzQsIDI0OTQwLCAyNDk0NCwgCisgICAgMjQ5NTAsIDI0OTU0LCAyNDk2MCwgMjQ5NjQsIDI0OTcwLCAyNDk3NCwgMjQ5ODAsIDI0OTg0LCAyNDk5MCwgMjQ5OTQsIAorICAgIDI1MDAwLCAyNTAwNCwgMjUwMDgsIDI1MDEyLCAyNTAxNiwgMjUwMjAsIDI1MDI0LCAyNTAyOCwgMjUwMzQsIDI1MDM3LCAKKyAgICAyNTA0MSwgMjUwNDUsIDI1MDUxLCAyNTA1NSwgMjUwNjEsIDI1MDY1LCAyNTA3MSwgMjUwNzUsIDI1MDgxLCAyNTA4NSwgCisgICAgMjUwOTEsIDI1MDk1LCAyNTEwMSwgMjUxMDUsIDI1MTExLCAyNTExNywgMjUxMjEsIDI1MTI3LCAyNTEzMywgMjUxMzksIAorICAgIDI1MTQzLCAyNTE0OSwgMjUxNTUsIDI1MTU5LCAyNTE2MywgMjUxNjcsIDI1MTcxLCAyNTE3NSwgMjUxODEsIDI1MTg1LCAKKyAgICAyNTE4OSwgMjUxOTQsIDI1MTk4LCAyNTIwNCwgMjUyMDcsIDI1MjEyLCAyNTIxNiwgMjUyMjAsIDI1MjI0LCAyNTIyOCwgCisgICAgMjUyMzIsIDI1MjM2LCAyNTI0MCwgMjUyNDQsIDI1MjQ4LCAyNTI1MiwgMjUyNTgsIDI1MjYyLCAyNTI2NiwgMjUyNzIsIAorICAgIDI1Mjc2LCAyNTI4MiwgMjUyODYsIDI1MjkyLCAyNTI5NiwgMjUzMDAsIDI1MzA0LCAyNTMwOCwgMjUzMTIsIDI1MzE4LCAKKyAgICAyNTMyMiwgMjUzMjYsIDI1MzMwLCAyNTMzNCwgMjUzMzgsIDI1MzQyLCAyNTM0NiwgMjUzNTAsIDI1MzU0LCAyNTM1OCwgCisgICAgMjUzNjQsIDI1MzcwLCAyNTM3NiwgMjUzODIsIDI1Mzg4LCAyNTM5MywgMjUzOTksIDI1NDA1LCAyNTQxMSwgMjU0MTUsIAorICAgIDI1NDE5LCAyNTQyMywgMjU0MjcsIDI1NDMxLCAyNTQzNSwgMjU0MzksIDI1NDQzLCAyNTQ0NywgMjU0NTEsIDI1NDU1LCAKKyAgICAyNTQ1OSwgMjU0NjMsIDI1NDY5LCAyNTQ3NSwgMjU0ODEsIDI1NDg3LCAyNTQ5MSwgMjU0OTUsIDI1NDk5LCAyNTUwMywgCisgICAgMjU1MDcsIDI1NTExLCAyNTUxNSwgMjU1MTksIDI1NTIzLCAyNTUyOSwgMjU1MzUsIDI1NTQxLCAyNTU0NywgMjU1NTMsIAorICAgIDI1NTU5LCAyNTU2NSwgMjU1NzEsIDI1NTc3LCAyNTU4MSwgMjU1ODUsIDI1NTg5LCAyNTU5MywgMjU1OTcsIDI1NjAxLCAKKyAgICAyNTYwNSwgMjU2MTEsIDI1NjE3LCAyNTYyMywgMjU2MjksIDI1NjM1LCAyNTY0MSwgMjU2NDcsIDI1NjUzLCAyNTY1OSwgCisgICAgMjU2NjQsIDI1NjY5LCAyNTY3NCwgMjU2NzksIDI1Njg1LCAyNTY5MSwgMjU2OTcsIDI1NzAzLCAyNTcwOSwgMjU3MTUsIAorICAgIDI1NzIxLCAyNTcyNiwgMjU3MzIsIDI1NzM4LCAyNTc0NCwgMjU3NDksIDI1NzU1LCAyNTc2MSwgMjU3NjcsIDI1NzcyLCAKKyAgICAyNTc3NywgMjU3ODIsIDI1Nzg3LCAyNTc5MiwgMjU3OTcsIDI1ODAyLCAyNTgwNywgMjU4MTIsIDI1ODE3LCAyNTgyMiwgCisgICAgMjU4MjcsIDI1ODMyLCAyNTgzNywgMjU4NDIsIDI1ODQ3LCAyNTg1MiwgMjU4NTcsIDI1ODYyLCAyNTg2NywgMjU4NzIsIAorICAgIDI1ODc3LCAyNTg4MiwgMjU4ODcsIDI1ODkyLCAyNTg5NywgMjU5MDIsIDI1OTA3LCAyNTkxMiwgMjU5MTcsIDI1OTIyLCAKKyAgICAyNTkyNywgMjU5MzIsIDI1OTM3LCAyNTk0MiwgMjU5NDcsIDI1OTUyLCAyNTk1NywgMjU5NjIsIDI1OTY3LCAyNTk3MiwgCisgICAgMjU5NzcsIDI1OTgxLCAyNTk4NiwgMjU5OTEsIDI1OTk2LCAyNjAwMSwgMjYwMDYsIDI2MDExLCAyNjAxNiwgMjYwMjEsIAorICAgIDI2MDI2LCAyNjAzMSwgMjYwMzYsIDI2MDQxLCAyNjA0NiwgMjYwNTEsIDI2MDU2LCAyNjA2MSwgMjYwNjYsIDI2MDcxLCAKKyAgICAyNjA3NiwgMjYwODEsIDI2MDg2LCAyNjA5MSwgMjYwOTYsIDI2MTAxLCAyNjEwNiwgMjYxMTAsIDI2MTE1LCAyNjEyMCwgCisgICAgMjYxMjUsIDI2MTMwLCAyNjEzNSwgMjYxMzksIDI2MTQ0LCAyNjE0OSwgMjYxNTQsIDI2MTU5LCAyNjE2NCwgMjYxNjgsIAorICAgIDI2MTczLCAyNjE3OSwgMjYxODQsIDI2MTg5LCAyNjE5NCwgMjYxOTksIDI2MjA1LCAyNjIxMCwgMjYyMTUsIDI2MjIwLCAKKyAgICAyNjIyNSwgMjYyMzAsIDI2MjM1LCAyNjI0MCwgMjYyNDUsIDI2MjUwLCAyNjI1NSwgMjYyNjAsIDI2MjY1LCAyNjI2OSwgCisgICAgMjYyNzQsIDI2Mjc5LCAyNjI4NCwgMjYyODksIDI2Mjk0LCAyNjI5OSwgMjYzMDQsIDI2MzA5LCAyNjMxNCwgMjYzMTksIAorICAgIDI2MzI0LCAyNjMyOSwgMjYzMzQsIDI2MzM5LCAyNjM0NCwgMjYzNDksIDI2MzU0LCAyNjM1OSwgMjYzNjQsIDI2MzY5LCAKKyAgICAyNjM3NCwgMjYzNzksIDI2Mzg0LCAyNjM4OSwgMjYzOTQsIDI2Mzk5LCAyNjQwNCwgMjY0MDksIDI2NDE0LCAyNjQxOSwgCisgICAgMjY0MjQsIDI2NDMwLCAyNjQzNSwgMjY0NDAsIDI2NDQ1LCAyNjQ1MCwgMjY0NTUsIDI2NDYwLCAyNjQ2NSwgMjY0NzAsIAorICAgIDI2NDc1LCAyNjQ4MCwgMjY0ODUsIDI2NDkwLCAyNjQ5NSwgMjY1MDAsIDI2NTA1LCAyNjUxMCwgMjY1MTUsIDI2NTIwLCAKKyAgICAyNjUyNSwgMjY1MzAsIDI2NTM1LCAyNjU0MCwgMjY1NDUsIDI2NTUwLCAyNjU1NSwgMjY1NjAsIDI2NTY1LCAyNjU3MCwgCisgICAgMjY1NzUsIDI2NTgwLCAyNjU4NSwgMjY1OTAsIDI2NTk1LCAyNjYwMCwgMjY2MDUsIDI2NjEwLCAyNjYxNSwgMjY2MjAsIAorICAgIDI2NjI2LCAyNjYzMCwgMjY2MzQsIDI2NjM4LCAyNjY0MiwgMjY2NDYsIDI2NjUwLCAyNjY1NCwgMjY2NTgsIDI2NjY0LCAKKyAgICAyNjY3MCwgMjY2NzYsIDI2NjgyLCAyNjY4OCwgMjY2OTQsIDI2NzAwLCAyNjcwNywgMjY3MTMsIDI2NzE4LCAyNjcyMywgCisgICAgMjY3MjgsIDI2NzMzLCAyNjczOCwgMjY3NDMsIDI2NzQ4LCAyNjc1MywgMjY3NTgsIDI2NzYzLCAyNjc2OCwgMjY3NzMsIAorICAgIDI2Nzc4LCAyNjc4MywgMjY3ODgsIDI2NzkzLCAyNjc5OCwgMjY4MDMsIDI2ODA4LCAyNjgxMywgMjY4MTgsIDI2ODIzLCAKKyAgICAyNjgyOCwgMjY4MzMsIDI2ODM4LCAyNjg0MywgMjY4NDgsIDI2ODUzLCAwLCAwLCAwLCAyNjg2MCwgMjY4NzEsIDI2ODc2LCAKKyAgICAyNjg4NCwgMjY4ODksIDI2ODk0LCAyNjg5OSwgMjY5MDgsIDI2OTEzLCAyNjkxOSwgMjY5MjUsIDI2OTMxLCAyNjkzNiwgCisgICAgMjY5NDIsIDI2OTQ4LCAyNjk1MiwgMjY5NTcsIDI2OTYyLCAyNjk3MiwgMjY5NzcsIDI2OTgyLCAyNjk4OSwgMjY5OTQsIAorICAgIDI2OTk5LCAyNzAwOCwgMjcwMTMsIDI3MDIyLCAyNzAyOSwgMjcwMzYsIDI3MDQzLCAyNzA1MCwgMjcwNjEsIDI3MDY4LCAKKyAgICAyNzA3MywgMjcwODMsIDI3MDg3LCAyNzA5NCwgMjcwOTksIDI3MTA2LCAyNzExMiwgMjcxMTksIDI3MTI4LCAyNzEzNSwgCisgICAgMjcxNDIsIDI3MTUxLCAyNzE1OCwgMjcxNjMsIDI3MTY4LCAyNzE3OSwgMjcxODYsIDI3MTkxLCAyNzIwMiwgMjcyMDksIAorICAgIDI3MjE0LCAyNzIxOSwgMjcyMjcsIDI3MjM2LCAyNzI0MywgMjcyNTAsIDI3MjYwLCAyNzI2NSwgMjcyNzAsIDI3Mjc1LCAKKyAgICAyNzI4NCwgMjcyOTIsIDI3Mjk3LCAyNzMwMiwgMjczMDcsIDI3MzEyLCAyNzMxNywgMjczMjIsIDI3MzI3LCAyNzMzMiwgCisgICAgMjczMzcsIDI3MzQyLCAyNzM0NywgMjczNTMsIDI3MzU5LCAyNzM2NSwgMjczNzAsIDI3Mzc1LCAyNzM4MCwgMjczODUsIAorICAgIDI3MzkwLCAyNzM5NSwgMjc0MDQsIDI3NDEzLCAyNzQyMiwgMjc0MzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3NDQwLCAKKyAgICAyNzQ0NCwgMjc0NDgsIDI3NDUyLCAyNzQ1NiwgMjc0NjEsIDI3NDY2LCAyNzQ3MSwgMjc0NzYsIDI3NDgwLCAyNzQ4NCwgCisgICAgMjc0ODksIDI3NDkzLCAwLCAyNzQ5NywgMjc1MDEsIDI3NTA2LCAyNzUxMSwgMjc1MTUsIDI3NTIwLCAyNzUyNSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjc1MzAsIDI3NTM0LCAyNzUzOCwgMjc1NDIsIDI3NTQ2LCAyNzU1MSwgCisgICAgMjc1NTYsIDI3NTYxLCAyNzU2NiwgMjc1NzAsIDI3NTc0LCAyNzU3OSwgMjc1ODMsIDI3NTg3LCAyNzU5MiwgMjc1OTYsIAorICAgIDI3NjAxLCAyNzYwNiwgMjc2MTAsIDI3NjE1LCAyNzYyMCwgMjc2MjUsIDI3NjMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAyNzYzNiwgMjc2NDAsIDI3NjQ0LCAyNzY0OCwgMjc2NTIsIDI3NjU3LCAyNzY2MiwgMjc2NjcsIDI3NjcyLCAyNzY3NiwgCisgICAgMjc2ODAsIDI3Njg1LCAyNzY4OSwgMjc2OTMsIDI3Njk4LCAyNzcwMiwgMjc3MDcsIDI3NzEyLCAyNzcxNiwgMjc3MjEsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3NzI2LCAyNzczMCwgMjc3MzQsIDI3NzM4LCAyNzc0MiwgCisgICAgMjc3NDcsIDI3NzUyLCAyNzc1NywgMjc3NjIsIDI3NzY2LCAyNzc3MCwgMjc3NzUsIDI3Nzc5LCAwLCAyNzc4MywgMjc3ODcsIAorICAgIDI3NzkyLCAwLCAyNzc5NywgMjc4MDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3ODA3LCAyNzgxMCwgCisgICAgMjc4MTQsIDI3ODE4LCAyNzgyMiwgMjc4MjYsIDI3ODMwLCAyNzgzNCwgMjc4MzgsIDI3ODQyLCAyNzg0NiwgMjc4NTAsIAorICAgIDI3ODU0LCAyNzg1OCwgMjc4NjIsIDI3ODY2LCAyNzg3MCwgMjc4NzQsIDI3ODc3LCAyNzg4MSwgMjc4ODUsIDI3ODg5LCAKKyAgICAyNzg5MywgMjc4OTcsIDI3OTAxLCAyNzkwNSwgMjc5MDksIDI3OTEzLCAyNzkxNywgMjc5MjEsIDI3OTI1LCAyNzkyOSwgCisgICAgMjc5MzMsIDI3OTM2LCAyNzkzOSwgMjc5NDMsIDI3OTQ5LCAyNzk1NSwgMjc5NjEsIDI3OTY3LCAyNzk3MywgMjc5NzksIAorICAgIDI3OTg1LCAyNzk5MSwgMjc5OTcsIDI4MDAzLCAyODAwOSwgMjgwMTUsIDI4MDIxLCAyODAyNywgMjgwMzYsIDI4MDQ1LCAKKyAgICAyODA1MSwgMjgwNTcsIDI4MDYzLCAyODA2OCwgMjgwNzIsIDI4MDc3LCAyODA4MiwgMjgwODcsIDI4MDkxLCAyODA5NiwgCisgICAgMjgxMDEsIDI4MTA2LCAyODExMCwgMjgxMTUsIDI4MTE5LCAyODEyNCwgMjgxMjksIDI4MTM0LCAyODEzOSwgMjgxNDMsIAorICAgIDI4MTQ3LCAyODE1MSwgMjgxNTUsIDI4MTU5LCAyODE2MywgMjgxNjcsIDI4MTcxLCAyODE3NSwgMjgxNzksIDI4MTg1LCAKKyAgICAyODE4OSwgMjgxOTMsIDI4MTk3LCAyODIwMSwgMjgyMDUsIDI4MjEzLCAyODIxOSwgMjgyMjMsIDI4MjI5LCAyODIzMywgCisgICAgMjgyMzksIDI4MjQzLCAwLCAwLCAyODI0NywgMjgyNTEsIDI4MjU0LCAyODI1NywgMjgyNjAsIDI4MjYzLCAyODI2NiwgCisgICAgMjgyNjksIDI4MjczLCAyODI3NiwgMCwgMCwgMCwgMCwgMCwgMCwgMjgyODAsIDI4Mjg4LCAyODI5NiwgMjgzMDQsIDI4MzEyLCAKKyAgICAyODMyMCwgMjgzMjgsIDI4MzM2LCAyODM0NCwgMjgzNTIsIDAsIDAsIDAsIDAsIDAsIDAsIDI4MzYwLCAyODM2MywgMjgzNjYsIAorICAgIDI4MzY5LCAyODM3NCwgMjgzNzcsIDI4MzgyLCAyODM4OSwgMjgzOTcsIDI4NDAyLCAyODQwOSwgMjg0MTIsIDI4NDE5LCAKKyAgICAyODQyNiwgMjg0MzMsIDAsIDI4NDM3LCAyODQ0MSwgMjg0NDQsIDI4NDQ3LCAyODQ1MCwgMjg0NTMsIDI4NDU2LCAyODQ1OSwgCisgICAgMjg0NjMsIDI4NDY2LCAwLCAwLCAwLCAwLCAwLCAwLCAyODQ3MCwgMjg0NzMsIDI4NDc2LCAyODQ3OSwgMjg0ODIsIDI4NDg1LCAKKyAgICAyODQ4OSwgMjg0OTMsIDI4NDk3LCAyODUwMCwgMjg1MDQsIDI4NTA4LCAyODUxMSwgMjg1MTUsIDI4NTE5LCAyODUyMiwgCisgICAgMjg1MjUsIDI4NTI5LCAyODUzMywgMjg1MzcsIDI4NTQxLCAyODU0NSwgMjg1NDksIDI4NTUyLCAyODU1NiwgMjg1NjAsIAorICAgIDI4NTY0LCAyODU2NywgMjg1NzEsIDI4NTc1LCAyODU3OSwgMjg1ODMsIDI4NTg3LCAyODU5MSwgMjg1OTUsIDI4NTk5LCAKKyAgICAyODYwNiwgMjg2MTEsIDI4NjE2LCAyODYyMSwgMjg2MjYsIDI4NjMyLCAyODYzOCwgMjg2NDQsIDI4NjUwLCAyODY1NSwgCisgICAgMjg2NjEsIDI4NjY3LCAyODY3MiwgMjg2NzgsIDI4Njg0LCAyODY5MCwgMjg2OTYsIDI4NzAyLCAyODcwNywgMjg3MTMsIAorICAgIDI4NzE4LCAyODcyNCwgMjg3MzAsIDI4NzM2LCAyODc0MiwgMjg3NDgsIDI4NzUzLCAyODc1OCwgMjg3NjQsIDI4NzcwLCAKKyAgICAyODc3NSwgMjg3ODEsIDI4Nzg2LCAyODc5MiwgMjg3OTcsIDI4ODAyLCAyODgwOCwgMjg4MTQsIDI4ODIwLCAyODgyNiwgCisgICAgMjg4MzIsIDI4ODM4LCAyODg0NCwgMjg4NTAsIDI4ODU2LCAyODg2MiwgMjg4NjgsIDI4ODc0LCAyODg3OSwgMjg4ODQsIAorICAgIDI4ODkwLCAyODg5NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjg5MDIsIDI4OTExLCAyODkyMCwgMjg5MjgsIDI4OTM2LCAKKyAgICAyODk0NiwgMjg5NTQsIDI4OTYzLCAyODk3MCwgMjg5NzcsIDI4OTg0LCAyODk5MiwgMjkwMDAsIDI5MDA4LCAyOTAxNiwgCisgICAgMjkwMjQsIDI5MDMyLCAyOTA0MCwgMjkwNDgsIDI5MDU1LCAyOTA2MywgMjkwNzEsIDI5MDc5LCAyOTA4NywgMjkwOTUsIAorICAgIDI5MTA1LCAyOTExNSwgMjkxMjUsIDI5MTM1LCAyOTE0NSwgMjkxNTUsIDI5MTY1LCAyOTE3NSwgMjkxODUsIDI5MTk1LCAKKyAgICAyOTIwNSwgMjkyMTUsIDI5MjI1LCAyOTIzNSwgMjkyNDMsIDI5MjUxLCAyOTI2MSwgMjkyNjksIDAsIDAsIDAsIDAsIDAsIAorICAgIDI5Mjc5LCAyOTI4MywgMjkyODcsIDI5MjkxLCAyOTI5NSwgMjkyOTksIDI5MzAzLCAyOTMwNywgMjkzMTEsIDI5MzE1LCAKKyAgICAyOTMxOSwgMjkzMjMsIDI5MzI3LCAyOTMzMSwgMjkzMzUsIDI5MzM5LCAyOTM0MywgMjkzNDcsIDI5MzUxLCAyOTM1NSwgCisgICAgMjkzNTksIDI5MzYzLCAyOTM2NywgMjkzNzEsIDI5Mzc3LCAyOTM4MSwgMjkzODcsIDI5MzkxLCAyOTM5NywgMjk0MDEsIAorICAgIDI5NDA3LCAyOTQxMSwgMjk0MTUsIDI5NDE5LCAyOTQyMywgMjk0MjcsIDI5NDMxLCAyOTQzNywgMjk0NDMsIDI5NDQ5LCAKKyAgICAyOTQ1NSwgMjk0NjEsIDI5NDY3LCAyOTQ3MywgMjk0NzksIDI5NDg1LCAyOTQ5MSwgMjk0OTcsIDI5NTA0LCAyOTUxMCwgCisgICAgMjk1MTYsIDI5NTIyLCAyOTUyNiwgMjk1MzAsIDI5NTM0LCAyOTUzOCwgMjk1NDIsIDI5NTQ2LCAyOTU1MCwgMjk1NTYsIAorICAgIDI5NTYyLCAyOTU2OCwgMjk1NzMsIDI5NTgwLCAyOTU4NSwgMjk1OTAsIDI5NTk2LCAyOTYwMSwgMjk2MDgsIDI5NjE1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyOTYyMiwgMjk2MjgsIDI5NjMyLCAyOTYzNywgMjk2NDIsIDI5NjQ3LCAKKyAgICAyOTY1MiwgMjk2NTcsIDI5NjYyLCAyOTY2NywgMjk2NzIsIDI5Njc3LCAyOTY4MiwgMjk2ODcsIDI5NjkyLCAyOTY5NywgCisgICAgMjk3MDEsIDI5NzA1LCAyOTcxMCwgMjk3MTUsIDI5NzIwLCAyOTcyNCwgMjk3MjgsIDI5NzMzLCAyOTczNywgMjk3NDIsIAorICAgIDI5NzQ3LCAyOTc1MiwgMjk3NTcsIDI5NzYxLCAyOTc2NiwgMCwgMjk3NzEsIDI5Nzc2LCAyOTc4MSwgMjk3ODYsIDI5NzkyLCAKKyAgICAyOTc5OCwgMjk4MDQsIDI5ODEwLCAyOTgxNSwgMjk4MjAsIDI5ODI2LCAyOTgzMywgMCwgMCwgMCwgMCwgMjk4NDAsIAorICAgIDI5ODQ1LCAyOTg1MSwgMjk4NTcsIDI5ODYzLCAyOTg2OCwgMjk4NzMsIDI5ODc4LCAyOTg4NCwgMjk4ODksIDI5ODk0LCAKKyAgICAyOTg5OSwgMCwgMCwgMCwgMCwgMjk5MDQsIDAsIDAsIDAsIDI5OTA5LCAyOTkxNCwgMjk5MTksIDI5OTI0LCAyOTkyOCwgCisgICAgMjk5MzIsIDI5OTM2LCAyOTk0MCwgMjk5NDQsIDI5OTQ4LCAyOTk1MywgMjk5NTcsIDI5OTYyLCAyOTk2NywgMjk5NzMsIAorICAgIDI5OTc5LCAyOTk4NSwgMjk5OTEsIDI5OTk2LCAzMDAwMiwgMzAwMDgsIDMwMDEzLCAzMDAxOCwgMzAwMjQsIDMwMDI5LCAKKyAgICAzMDAzNSwgMzAwNDEsIDMwMDQ2LCAzMDA1MiwgMzAwNTgsIDMwMDY0LCAzMDA2OSwgMzAwNzQsIDMwMDc5LCAzMDA4NSwgCisgICAgMzAwOTEsIDMwMDk2LCAzMDEwMiwgMzAxMDcsIDMwMTEzLCAzMDExOCwgMzAxMjQsIDAsIDAsIDMwMTMwLCAzMDEzNiwgCisgICAgMzAxNDIsIDMwMTQ4LCAzMDE1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzAxNjAsIDMwMTY5LCAKKyAgICAzMDE3OCwgMzAxODYsIDMwMTk1LCAzMDIwNCwgMzAyMTIsIDMwMjIxLCAzMDIzMCwgMzAyMzksIDMwMjQ4LCAzMDI1NiwgCisgICAgMzAyNjUsIDMwMjc0LCAzMDI4MiwgMzAyOTEsIDMwMzAwLCAzMDMwOCwgMzAzMTcsIDMwMzI2LCAzMDMzNCwgMzAzNDIsIAorICAgIDMwMzUxLCAzMDM1OSwgMzAzNjcsIDMwMzc2LCAzMDM4NCwgMzAzOTMsIDMwNDAyLCAzMDQxMCwgMzA0MTksIDMwNDI4LCAKKyAgICAzMDQzNiwgMzA0NDQsIDMwNDUzLCAzMDQ2MiwgMzA0NzAsIDMwNDc5LCAzMDQ4OCwgMzA0OTcsIDMwNTA2LCAzMDUxNSwgCisgICAgMzA1MjQsIDMwNTMzLCAwLCAwLCAwLCAwLCAzMDU0MiwgMzA1NTIsIDMwNTYxLCAzMDU3MCwgMzA1NzgsIDMwNTg3LCAKKyAgICAzMDU5NSwgMzA2MDQsIDMwNjEyLCAzMDYyMSwgMzA2MzAsIDMwNjM5LCAzMDY0OCwgMzA2NTcsIDMwNjY2LCAzMDY3NSwgCisgICAgMzA2ODQsIDMwNjkzLCAzMDcwMiwgMzA3MTEsIDMwNzIwLCAzMDcyOSwgMzA3MzgsIDMwNzQ3LCAzMDc1NiwgMzA3NjQsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDMwNzcyLCAzMDc4MCwgMzA3ODcsIDMwNzk0LCAzMDgwMSwgMzA4MDgsIDMwODE1LCAzMDgyMiwgCisgICAgMzA4MzAsIDMwODM3LCAzMDg0NSwgMCwgMCwgMCwgMzA4NTMsIDMwODYxLCAzMDg2OSwgMzA4NzMsIDMwODc5LCAzMDg4NSwgCisgICAgMzA4OTEsIDMwODk3LCAzMDkwMywgMzA5MDksIDMwOTE1LCAzMDkyMSwgMzA5MjcsIDMwOTMzLCAzMDkzOSwgMzA5NDUsIAorICAgIDMwOTUxLCAzMDk1NywgMzA5NjMsIDMwOTY3LCAzMDk3MywgMzA5NzksIDMwOTg1LCAzMDk5MSwgMzA5OTcsIDMxMDAzLCAKKyAgICAzMTAwOSwgMzEwMTUsIDMxMDIxLCAzMTAyNywgMzEwMzMsIDMxMDM5LCAzMTA0NSwgMzEwNTEsIDMxMDU3LCAzMTA2MSwgCisgICAgMzEwNjYsIDMxMDcxLCAzMTA3NiwgMzEwODAsIDMxMDg1LCAzMTA4OSwgMzEwOTQsIDMxMDk5LCAzMTEwNCwgMzExMDgsIAorICAgIDMxMTEzLCAzMTExOCwgMzExMjMsIDMxMTI4LCAzMTEzMywgMzExMzcsIDMxMTQyLCAzMTE0NiwgMzExNTEsIDMxMTU2LCAKKyAgICAzMTE2MCwgMzExNjQsIDMxMTY5LCAzMTE3NCwgMzExNzksIDMxMTg0LCAwLCAwLCAzMTE5MCwgMzExOTQsIDMxMjAxLCAKKyAgICAzMTIwNiwgMzEyMTIsIDMxMjE4LCAzMTIyMywgMzEyMjksIDMxMjM1LCAzMTI0MCwgMzEyNDYsIDMxMjUyLCAzMTI1OCwgCisgICAgMzEyNjQsIDMxMjcwLCAzMTI3NSwgMzEyODAsIDMxMjg2LCAzMTI5MSwgMzEyOTcsIDMxMzAyLCAzMTMwOCwgMzEzMTQsIAorICAgIDMxMzIwLCAzMTMyNiwgMzEzMzAsIDMxMzM1LCAzMTM0MCwgMzEzNDYsIDMxMzUyLCAzMTM1NywgMzEzNjMsIDMxMzY5LCAKKyAgICAzMTM3MywgMzEzNzgsIDMxMzgzLCAzMTM4OCwgMzEzOTMsIDMxMzk3LCAzMTQwMiwgMzE0MDcsIDMxNDEzLCAzMTQxOSwgCisgICAgMzE0MjUsIDMxNDMwLCAzMTQzNSwgMzE0MzksIDMxNDQ0LCAzMTQ0OCwgMzE0NTMsIDMxNDU3LCAzMTQ2MiwgMzE0NjcsIAorICAgIDMxNDcyLCAzMTQ3NywgMzE0ODQsIDMxNDkxLCAzMTQ5NywgMzE1MDcsIDMxNTE2LCAzMTUyMywgMzE1MjksIDMxNTQwLCAKKyAgICAzMTU0NSwgMzE1NTEsIDAsIDMxNTU3LCAzMTU2MiwgMzE1NjcsIDMxNTc1LCAzMTU4MSwgMzE1ODksIDMxNTk0LCAzMTYwMCwgCisgICAgMzE2MDYsIDMxNjEyLCAzMTYxNywgMzE2MjMsIDMxNjI4LCAzMTYzNSwgMzE2NDEsIDMxNjQ2LCAzMTY1MiwgMzE2NTgsIAorICAgIDMxNjY0LCAzMTY3MSwgMzE2NzgsIDMxNjg1LCAzMTY5MCwgMzE2OTUsIDMxNzAyLCAzMTcwOSwgMzE3MTYsIDMxNzIzLCAKKyAgICAzMTczMCwgMCwgMCwgMzE3MzcsIDMxNzQ0LCAzMTc1MSwgMzE3NTcsIDMxNzYzLCAzMTc2OSwgMzE3NzUsIDMxNzgxLCAKKyAgICAzMTc4NywgMzE3OTQsIDMxODAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTgwNywgMzE4MTMsIDMxODE4LCAzMTgyMywgMzE4MjgsIAorICAgIDMxODMzLCAzMTgzOCwgMzE4NDMsIDMxODQ5LCAzMTg1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMzE4NjAsIDMxODY1LCAzMTg3MCwgCisgICAgMzE4NzUsIDMxODgwLCAzMTg4NSwgMzE4OTAsIDMxODk5LCAzMTkwNiwgMzE5MTEsIDMxOTE2LCAzMTkyMSwgMzE5MjYsIAorICAgIDMxOTMxLCAwLCAwLCAzMTkzNiwgMzE5NDMsIDMxOTQ2LCAzMTk0OSwgMzE5NTIsIDMxOTU3LCAzMTk2MSwgMzE5NjcsIAorICAgIDMxOTcxLCAzMTk3NiwgMzE5ODMsIDMxOTkxLCAzMTk5NSwgMzIwMDAsIDMyMDA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjI0OCwgMTIyNTcsIDEyMjY1LCAKLSAgICAxMjI3MiwgMTIyODAsIDEyMjkyLCAxMjI5OSwgMTIzMDYsIDEyMzEzLCAxMjMyNSwgMTIzMzYsIDEyMzQzLCAxMjM1MSwgCi0gICAgMTIzNTcsIDEyMzYyLCAxMjM3MCwgMTIzNzgsIDEyMzg2LCAxMjM5MiwgMTI0MDIsIDEyNDEwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjAwOSwgMzIwMTUsIDMyMDIxLCAzMjAyNSwgMzIwMjksIDMyMDMzLCAKKyAgICAzMjAzNywgMzIwNDMsIDMyMDQ3LCAzMjA1MywgMzIwNTcsIDMyMDYzLCAzMjA2OSwgMzIwNzcsIDMyMDgzLCAzMjA5MSwgCisgICAgMzIwOTUsIDMyMDk5LCAzMjEwMywgMzIxMDksIDMyMTEyLCAzMjExOCwgMzIxMjIsIDMyMTI4LCAzMjEzMiwgMzIxMzYsIAorICAgIDMyMTQyLCAzMjE0NiwgMzIxNTIsIDMyMTU2LCAzMjE2MiwgMzIxNzAsIDMyMTc4LCAzMjE4NiwgMzIxOTIsIDMyMTk2LCAKKyAgICAzMjIwMiwgMzIyMDYsIDMyMjEyLCAzMjIxNSwgMzIyMTgsIDMyMjI0LCAzMjIyOCwgMzIyMzQsIDMyMjM3LCAzMjI0MCwgCisgICAgMzIyNDQsIDMyMjQ3LCAzMjI1MSwgMzIyNTcsIDMyMjYzLCAzMjI2NywgMzIyNzAsIDMyMjc0LCAzMjI3OSwgMzIyODQsIAorICAgIDMyMjkxLCAzMjI5NiwgMzIzMDMsIDMyMzEwLCAzMjMxOSwgMzIzMjYsIDMyMzM1LCAzMjM0MCwgMzIzNDcsIDMyMzU0LCAKKyAgICAzMjM2MywgMzIzNjgsIDMyMzc1LCAzMjM4MCwgMzIzODYsIDMyMzkyLCAzMjM5OCwgMzI0MDQsIDMyNDEwLCAzMjQxNiwgMCwgCisgICAgMCwgMCwgMCwgMzI0MjIsIDMyNDI2LCAzMjQyOSwgMzI0MzIsIDMyNDM1LCAzMjQzOCwgMzI0NDEsIDMyNDQ0LCAzMjQ0OCwgCisgICAgMzI0NTEsIDMyNDU1LCAzMjQ1OCwgMzI0NjEsIDMyNDY0LCAzMjQ2OSwgMzI0NzQsIDMyNDc5LCAzMjQ4MiwgMzI0ODcsIAorICAgIDMyNDkyLCAzMjQ5NywgMzI1MDIsIDMyNTA5LCAzMjUxNCwgMzI1MTksIDMyNTI0LCAzMjUyOSwgMzI1MzYsIDMyNTQyLCAKKyAgICAzMjU0OCwgMzI1NTQsIDMyNTYwLCAzMjU2NiwgMzI1NzUsIDMyNTg0LCAzMjU5MCwgMzI1OTYsIDMyNjA0LCAzMjYxMiwgCisgICAgMzI2MjEsIDMyNjMwLCAzMjYzOCwgMzI2NDYsIDMyNjU1LCAzMjY2NCwgMCwgMCwgMCwgMzI2NzIsIDMyNjc3LCAzMjY4MiwgCisgICAgMzI2ODcsIDMyNjkxLCAzMjY5NSwgMzI2OTksIDMyNzA0LCAzMjcwOCwgMzI3MTIsIDMyNzE3LCAzMjcyMSwgMzI3MjYsIAorICAgIDMyNzMxLCAzMjczNiwgMzI3NDEsIDMyNzQ2LCAzMjc1MSwgMzI3NTYsIDMyNzYxLCAzMjc2NiwgMzI3NzAsIDMyNzc0LCAKKyAgICAzMjc3OSwgMzI3ODQsIDMyNzg5LCAzMjc5MywgMzI3OTcsIDMyODAyLCAzMjgwNiwgMzI4MTEsIDMyODE2LCAzMjgyMSwgCisgICAgMzI4MjUsIDMyODMxLCAzMjgzNywgMzI4NDMsIDMyODQ5LCAzMjg1NSwgMzI4NjEsIDMyODY3LCAzMjg3MywgMzI4NzksIAorICAgIDMyODg0LCAzMjg4OSwgMzI4OTYsIDMyOTA0LCAzMjkwOSwgMzI5MTQsIDMyOTE5LCAzMjkyMywgMzI5MjcsIDMyOTMxLCAKKyAgICAzMjkzNSwgMzI5MzksIDMyOTQzLCAzMjk0OCwgMzI5NTIsIDMyOTU3LCAzMjk2MSwgMzI5NjYsIDMyOTcxLCAzMjk3NiwgCisgICAgMzI5ODIsIDMyOTg4LCAzMjk5MiwgMzI5OTgsIDMzMDAyLCAzMzAwOCwgMzMwMTQsIDMzMDE5LCAzMzAyNiwgMzMwMzAsIAorICAgIDMzMDM2LCAzMzA0MCwgMzMwNDYsIDMzMDUxLCAzMzA1OCwgMzMwNjUsIDMzMDcwLCAzMzA3NywgMzMwODIsIDMzMDg3LCAKKyAgICAzMzA5MiwgMzMwOTksIDMzMTAzLCAzMzEwOSwgMzMxMTYsIDMzMTIzLCAzMzEyOCwgMzMxMzUsIDMzMTQyLCAzMzE0NiwgCisgICAgMzMxNTIsIDMzMTU3LCAzMzE2MSwgMzMxNjcsIDMzMTcyLCAzMzE3NywgMzMxODIsIDMzMTg3LCAzMzE5MSwgMzMxOTUsIAorICAgIDMzMjAwLCAzMzIwNSwgMzMyMTIsIDMzMjE4LCAzMzIyMywgMzMyMzAsIDMzMjM1LCAzMzI0MiwgMzMyNDcsIDMzMjU3LCAKKyAgICAzMzI2MywgMzMyNjksIDMzMjczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMzI3NywgMzMyODYsIDMzMjkzLCAzMzMwMCwgCisgICAgMzMzMDcsIDMzMzExLCAzMzMxNiwgMzMzMjEsIDMzMzI2LCAzMzMzMSwgMzMzMzYsIDMzMzQxLCAzMzM0NiwgMzMzNTEsIAorICAgIDMzMzU2LCAzMzM2MSwgMzMzNjYsIDMzMzcxLCAzMzM3NSwgMzMzNzksIDMzMzg0LCAzMzM4OSwgMzMzOTQsIDMzMzk5LCAKKyAgICAzMzQwNCwgMzM0MDksIDMzNDEzLCAzMzQxOCwgMzM0MjMsIDMzNDI4LCAzMzQzMywgMzM0MzcsIDMzNDQyLCAzMzQ0NiwgCisgICAgMzM0NTAsIDMzNDU1LCAzMzQ2MCwgMzM0NjUsIDMzNDcwLCAzMzQ3NSwgMzM0NzksIDMzNDg1LCAzMzQ5MiwgMzM0OTgsIAorICAgIDMzNTAzLCAzMzUwOCwgMzM1MTQsIDMzNTE5LCAzMzUyNSwgMzM1MzAsIDMzNTM2LCAzMzU0MiwgMzM1NDcsIDMzNTUzLCAKKyAgICAzMzU1OSwgMzM1NjQsIDMzNTcwLCAzMzU3NiwgMzM1ODIsIDMzNTg3LCAwLCAwLCAwLCAzMzU5MiwgMzM1OTgsIDMzNjA4LCAKKyAgICAzMzYxNCwgMzM2MjIsIDMzNjI4LCAzMzYzMywgMzM2MzcsIDMzNjQxLCAzMzY0NSwgMzM2NDksIDMzNjUzLCAzMzY1NywgCisgICAgMzM2NjIsIDMzNjY2LCAwLCAwLCAwLCAzMzY3MSwgMzM2NzYsIDMzNjgxLCAzMzY4NiwgMzM2OTMsIDMzNjk5LCAzMzcwNSwgCisgICAgMzM3MTEsIDMzNzE3LCAzMzcyMywgMzM3MjksIDMzNzM2LCAzMzc0MiwgMzM3NDksIDMzNzU1LCAzMzc2MiwgMzM3NjksIAorICAgIDMzNzc2LCAzMzc4MywgMzM3OTAsIDMzNzk3LCAzMzgwNCwgMzM4MTEsIDMzODE4LCAzMzgyNSwgMzM4MzIsIDMzODM5LCAKKyAgICAzMzg0NiwgMzM4NTMsIDMzODYwLCAzMzg2NywgMzM4NzQsIDMzODgxLCAzMzg4OCwgMzM4OTUsIDMzOTAyLCAzMzkwOSwgCisgICAgMzM5MTYsIDMzOTIzLCAzMzkzMCwgMzM5MzcsIDMzOTQ0LCAzMzk1MSwgMzM5NTgsIDMzOTY2LCAzMzk3NCwgMzM5ODIsIAorICAgIDMzOTg4LCAzMzk5NCwgMzQwMDAsIDM0MDA4LCAzNDAxNywgMzQwMjQsIDM0MDMxLCAzNDAzNywgMzQwNDQsIDM0MDUxLCAKKyAgICAzNDA1OCwgMzQwNjYsIDM0MDczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjQxNywgMTI0MjMsIDEyNDI4LCAKLSAgICAxMjQzMywgMTI0MzgsIDEyNDQzLCAxMjQ0OCwgMTI0NTMsIDEyNDU4LCAxMjQ2MywgMTI0NjgsIDEyNDczLCAxMjQ3OCwgCi0gICAgMTI0ODMsIDEyNDg3LCAxMjQ5MSwgMTI0OTUsIDEyNTAwLCAxMjUwNiwgMTI1MTIsIDEyNTE4LCAxMjUyMywgMTI1MjgsIAotICAgIDEyNTMzLCAxMjUzOCwgMTI1NDQsIDEyNTUzLCAxMjU2MSwgMTI1NjcsIDEyNTc1LCAxMjU4MSwgMTI1ODUsIDEyNTg5LCAKLSAgICAxMjU5MywgMTI1OTgsIDEyNjAxLCAxMjYwNSwgMTI2MDgsIDEyNjEyLCAxMjYxNSwgMTI2MTksIDEyNjIzLCAxMjYyNywgCi0gICAgMTI2MzIsIDEyNjM3LCAxMjY0MCwgMTI2NDQsIDEyNjQ5LCAxMjY1NCwgMTI2NTcsIDEyNjYxLCAxMjY2NCwgMTI2NjgsIAotICAgIDEyNjcyLCAxMjY3NiwgMTI2ODAsIDEyNjg0LCAxMjY4OCwgMTI2OTIsIDEyNjk2LCAxMjcwMCwgMTI3MDQsIDEyNzA4LCAKLSAgICAxMjcxMiwgMTI3MTYsIDEyNzIwLCAxMjcyNCwgMTI3MjgsIDEyNzMyLCAxMjczNiwgMTI3NDAsIDEyNzQ0LCAxMjc0NywgCi0gICAgMTI3NTEsIDEyNzU1LCAxMjc1OSwgMTI3NjIsIDEyNzY1LCAxMjc2OSwgMTI3NzMsIDEyNzc3LCAxMjc4MSwgMTI3ODUsIAotICAgIDEyNzg5LCAxMjc5MywgMTI3OTcsIDEyODAxLCAxMjgwNCwgMTI4MDksIDEyODE0LCAxMjgxOCwgMTI4MjIsIDEyODI3LCAKLSAgICAxMjgzMSwgMTI4MzYsIDEyODQwLCAxMjg0NSwgMTI4NTAsIDEyODU2LCAxMjg2MiwgMTI4NjgsIDEyODcyLCAxMjg3NywgCi0gICAgMTI4ODMsIDEyODg5LCAxMjg5MywgMTI4OTgsIDEyOTAyLCAxMjkwOCwgMTI5MTMsIDEyOTE2LCAxMjkyMiwgMTI5MjgsIAotICAgIDEyOTMzLCAxMjkzOCwgMTI5NDUsIDEyOTUwLCAxMjk1NSwgMTI5NTksIDEyOTYzLCAxMjk2NywgMTI5NzEsIDEyOTc1LCAKLSAgICAxMjk3OSwgMTI5ODMsIDEyOTg3LCAxMjk5MiwgMTI5OTcsIDEzMDAyLCAxMzAwOCwgMTMwMTEsIDEzMDE1LCAxMzAxOSwgCi0gICAgMTMwMjIsIDEzMDI1LCAxMzAyOCwgMTMwMzEsIDEzMDM0LCAxMzAzNywgMTMwNDEsIDEzMDQ0LCAxMzA0OCwgMTMwNTIsIAotICAgIDEzMDU5LCAxMzA2NCwgMTMwNjgsIDEzMDcyLCAxMzA3NiwgMTMwODAsIDEzMDg0LCAxMzA5MCwgMTMwOTQsIDEzMDk4LCAKLSAgICAxMzEwMiwgMTMxMDYsIDEzMTEyLCAxMzExNiwgMTMxMjAsIDEzMTIzLCAxMzEyNywgMTMxMzEsIDAsIDEzMTM1LCAxMzEzOCwgCi0gICAgMTMxNDIsIDEzMTQ1LCAxMzE0OSwgMTMxNTIsIDEzMTU2LCAxMzE2MCwgMCwgMCwgMTMxNjQsIDEzMTY3LCAwLCAwLCAKLSAgICAxMzE3MSwgMTMxNzQsIDEzMTc4LCAxMzE4MSwgMTMxODUsIDEzMTg5LCAxMzE5MywgMTMxOTcsIDEzMjAxLCAxMzIwNSwgCi0gICAgMTMyMDksIDEzMjEzLCAxMzIxNywgMTMyMjEsIDEzMjI1LCAxMzIyOSwgMTMyMzMsIDEzMjM3LCAxMzI0MSwgMTMyNDUsIAotICAgIDEzMjQ5LCAxMzI1MywgMCwgMTMyNTcsIDEzMjYwLCAxMzI2NCwgMTMyNjgsIDEzMjcyLCAxMzI3NSwgMTMyNzgsIDAsIAotICAgIDEzMjgyLCAwLCAwLCAwLCAxMzI4NiwgMTMyOTAsIDEzMjk0LCAxMzI5OCwgMCwgMCwgMTMzMDEsIDEzMzA1LCAxMzMwOSwgCi0gICAgMTMzMTQsIDEzMzE4LCAxMzMyMywgMTMzMjcsIDEzMzMyLCAxMzMzNywgMCwgMCwgMTMzNDMsIDEzMzQ3LCAwLCAwLCAKLSAgICAxMzM1MiwgMTMzNTYsIDEzMzYxLCAxMzM2NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMzNzEsIDAsIDAsIDAsIDAsIAotICAgIDEzMzc3LCAxMzM4MSwgMCwgMTMzODUsIDEzMzg5LCAxMzM5NCwgMTMzOTksIDEzNDA0LCAwLCAwLCAxMzQxMCwgMTM0MTQsIAotICAgIDEzNDE3LCAxMzQyMCwgMTM0MjMsIDEzNDI2LCAxMzQyOSwgMTM0MzIsIDEzNDM2LCAxMzQzOSwgMTM0NDMsIDEzNDUxLCAKLSAgICAxMzQ2MCwgMTM0NjQsIDEzNDY4LCAxMzQ3NCwgMTM0ODAsIDEzNDg2LCAxMzQ5MiwgMTM1MDYsIDEzNTEzLCAxMzUxNiwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTM1MjAsIDEzNTI3LCAxMzUzMiwgMCwgMTM1MzcsIDEzNTQxLCAxMzU0NiwgMTM1NTAsIDEzNTU1LCAKLSAgICAxMzU1OSwgMCwgMCwgMCwgMCwgMTM1NjQsIDEzNTY5LCAwLCAwLCAxMzU3NCwgMTM1NzksIDEzNTg0LCAxMzU4OCwgMTM1OTMsIAotICAgIDEzNTk4LCAxMzYwMywgMTM2MDgsIDEzNjEzLCAxMzYxOCwgMTM2MjMsIDEzNjI4LCAxMzYzMywgMTM2MzgsIDEzNjQzLCAKLSAgICAxMzY0OCwgMTM2NTMsIDEzNjU4LCAxMzY2MywgMTM2NjgsIDEzNjczLCAxMzY3OCwgMCwgMTM2ODMsIDEzNjg3LCAxMzY5MiwgCi0gICAgMTM2OTcsIDEzNzAyLCAxMzcwNiwgMTM3MTAsIDAsIDEzNzE1LCAxMzcyMCwgMCwgMTM3MjUsIDEzNzMwLCAwLCAxMzczNSwgCi0gICAgMTM3NDAsIDAsIDAsIDEzNzQ0LCAwLCAxMzc0OSwgMTM3NTUsIDEzNzYwLCAxMzc2NiwgMTM3NzEsIDAsIDAsIDAsIDAsIAotICAgIDEzNzc3LCAxMzc4MywgMCwgMCwgMTM3ODksIDEzNzk1LCAxMzgwMSwgMCwgMCwgMCwgMTM4MDYsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDEzODExLCAxMzgxNiwgMTM4MjEsIDEzODI2LCAwLCAxMzgzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM4MzYsIAotICAgIDEzODQxLCAxMzg0NSwgMTM4NDksIDEzODUzLCAxMzg1NywgMTM4NjEsIDEzODY1LCAxMzg3MCwgMTM4NzQsIDEzODc5LCAKLSAgICAxMzg4MywgMTM4ODcsIDEzODkxLCAxMzg5NSwgMTM5MDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEzOTA2LCAxMzkxMSwgMTM5MTYsIDAsIDEzOTIxLCAxMzkyNSwgMTM5MzAsIDEzOTM0LCAxMzkzOSwgMTM5NDMsIDEzOTQ4LCAKLSAgICAxMzk1MywgMTM5NTgsIDAsIDEzOTY0LCAxMzk2OCwgMTM5NzMsIDAsIDEzOTc5LCAxMzk4MywgMTM5ODgsIDEzOTkyLCAKLSAgICAxMzk5NywgMTQwMDIsIDE0MDA3LCAxNDAxMiwgMTQwMTcsIDE0MDIyLCAxNDAyNywgMTQwMzIsIDE0MDM3LCAxNDA0MiwgCi0gICAgMTQwNDcsIDE0MDUyLCAxNDA1NywgMTQwNjIsIDE0MDY3LCAxNDA3MiwgMTQwNzcsIDE0MDgyLCAwLCAxNDA4NywgMTQwOTEsIAotICAgIDE0MDk2LCAxNDEwMSwgMTQxMDYsIDE0MTEwLCAxNDExNCwgMCwgMTQxMTksIDE0MTI0LCAwLCAxNDEyOSwgMTQxMzQsIAotICAgIDE0MTM5LCAxNDE0NCwgMTQxNDksIDAsIDAsIDE0MTUzLCAxNDE1OCwgMTQxNjMsIDE0MTY5LCAxNDE3NCwgMTQxODAsIAotICAgIDE0MTg1LCAxNDE5MSwgMTQxOTcsIDE0MjA0LCAwLCAxNDIxMSwgMTQyMTYsIDE0MjIyLCAwLCAxNDIyOSwgMTQyMzQsIAotICAgIDE0MjQwLCAwLCAwLCAxNDI0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQyNDksIAotICAgIDE0MjU1LCAxNDI2MSwgMTQyNjcsIDAsIDAsIDE0Mjc0LCAxNDI3OSwgMTQyODMsIDE0Mjg3LCAxNDI5MSwgMTQyOTUsIAotICAgIDE0Mjk5LCAxNDMwMywgMTQzMDgsIDE0MzEyLCAxNDMxNywgMTQzMjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MzI3LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxNDMzMiwgMTQzMzYsIDE0MzQwLCAwLCAxNDM0NCwgMTQzNDcsIDE0MzUxLCAxNDM1NCwgCi0gICAgMTQzNTgsIDE0MzYxLCAxNDM2NSwgMTQzNjksIDAsIDAsIDE0MzczLCAxNDM3NiwgMCwgMCwgMTQzODAsIDE0MzgzLCAKLSAgICAxNDM4NywgMTQzOTAsIDE0Mzk0LCAxNDM5OCwgMTQ0MDIsIDE0NDA2LCAxNDQxMCwgMTQ0MTQsIDE0NDE4LCAxNDQyMiwgCi0gICAgMTQ0MjYsIDE0NDMwLCAxNDQzNCwgMTQ0MzgsIDE0NDQyLCAxNDQ0NiwgMTQ0NTAsIDE0NDU0LCAxNDQ1OCwgMTQ0NjIsIDAsIAotICAgIDE0NDY2LCAxNDQ2OSwgMTQ0NzMsIDE0NDc3LCAxNDQ4MSwgMTQ0ODQsIDE0NDg3LCAwLCAxNDQ5MSwgMTQ0OTUsIDAsIAotICAgIDE0NDk5LCAxNDUwMywgMTQ1MDcsIDE0NTExLCAxNDUxNSwgMCwgMCwgMTQ1MTgsIDE0NTIyLCAxNDUyNiwgMTQ1MzEsIAotICAgIDE0NTM1LCAxNDU0MCwgMTQ1NDQsIDE0NTQ5LCAxNDU1NCwgMCwgMCwgMTQ1NjAsIDE0NTY0LCAwLCAwLCAxNDU2OSwgCi0gICAgMTQ1NzMsIDE0NTc4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDU4MiwgMTQ1ODgsIDAsIDAsIDAsIDAsIDE0NTk0LCAKLSAgICAxNDU5OCwgMCwgMTQ2MDIsIDE0NjA2LCAxNDYxMSwgMTQ2MTYsIDE0NjIxLCAwLCAwLCAxNDYyNywgMTQ2MzEsIDE0NjM0LCAKLSAgICAxNDYzNywgMTQ2NDAsIDE0NjQzLCAxNDY0NiwgMTQ2NDksIDE0NjUzLCAxNDY1NiwgMTQ2NjAsIDE0NjYzLCAxNDY2NywgCi0gICAgMTQ2NzMsIDE0Njc5LCAxNDY4NSwgMTQ2OTEsIDE0Njk3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDcwMywgCi0gICAgMTQ3MDcsIDAsIDE0NzExLCAxNDcxNCwgMTQ3MTgsIDE0NzIxLCAxNDcyNSwgMTQ3MjgsIDAsIDAsIDAsIDE0NzMyLCAKLSAgICAxNDczNSwgMTQ3MzksIDAsIDE0NzQzLCAxNDc0NiwgMTQ3NTAsIDE0NzU0LCAwLCAwLCAwLCAxNDc1NywgMTQ3NjEsIDAsIAotICAgIDE0NzY1LCAwLCAxNDc2OSwgMTQ3NzMsIDAsIDAsIDAsIDE0Nzc3LCAxNDc4MSwgMCwgMCwgMCwgMTQ3ODUsIDE0Nzg5LCAKLSAgICAxNDc5MywgMCwgMCwgMCwgMTQ3OTYsIDE0Nzk5LCAxNDgwMiwgMTQ4MDYsIDE0ODEwLCAxNDgxNCwgMTQ4MTgsIDE0ODIyLCAKLSAgICAxNDgyNiwgMTQ4MzAsIDE0ODM0LCAxNDgzOCwgMCwgMCwgMCwgMCwgMTQ4NDEsIDE0ODQ2LCAxNDg1MCwgMTQ4NTUsIAotICAgIDE0ODU5LCAwLCAwLCAwLCAxNDg2NCwgMTQ4NjgsIDE0ODczLCAwLCAxNDg3OCwgMTQ4ODIsIDE0ODg3LCAxNDg5MiwgMCwgMCwgCi0gICAgMTQ4OTYsIDAsIDAsIDAsIDAsIDAsIDAsIDE0ODk5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxNDkwNSwgMTQ5MDksIDE0OTEyLCAxNDkxNSwgMTQ5MTgsIDE0OTIxLCAxNDkyNCwgMTQ5MjcsIDE0OTMxLCAxNDkzNCwgCi0gICAgMTQ5MzgsIDE0OTQyLCAxNDk0NywgMTQ5NTIsIDE0OTU2LCAxNDk2MCwgMTQ5NjQsIDE0OTY4LCAxNDk3MiwgMTQ5NzcsIAotICAgIDE0OTgxLCAwLCAwLCAwLCAwLCAwLCAxNDk4NCwgMTQ5OTAsIDE0OTk0LCAxNDk5OCwgMCwgMTUwMDIsIDE1MDA1LCAxNTAwOSwgCi0gICAgMTUwMTIsIDE1MDE2LCAxNTAxOSwgMTUwMjMsIDE1MDI3LCAwLCAxNTAzMSwgMTUwMzQsIDE1MDM4LCAwLCAxNTA0MiwgCi0gICAgMTUwNDUsIDE1MDQ5LCAxNTA1MywgMTUwNTYsIDE1MDYwLCAxNTA2NCwgMTUwNjgsIDE1MDcyLCAxNTA3NiwgMTUwODAsIAotICAgIDE1MDg0LCAxNTA4OCwgMTUwOTIsIDE1MDk2LCAxNTEwMCwgMTUxMDQsIDE1MTA4LCAxNTExMiwgMTUxMTYsIDE1MTIwLCAKLSAgICAxNTEyNCwgMTUxMjgsIDAsIDE1MTMyLCAxNTEzNSwgMTUxMzksIDE1MTQzLCAxNTE0NywgMTUxNTAsIDE1MTUzLCAxNTE1NywgCi0gICAgMTUxNjEsIDE1MTY1LCAxNTE2OSwgMTUxNzMsIDE1MTc3LCAxNTE4MSwgMTUxODUsIDE1MTg5LCAwLCAwLCAwLCAxNTE5MiwgCi0gICAgMTUxOTYsIDE1MjAxLCAxNTIwNSwgMTUyMTAsIDE1MjE0LCAxNTIxOSwgMTUyMjQsIDAsIDE1MjMwLCAxNTIzNCwgMTUyMzksIAotICAgIDAsIDE1MjQ0LCAxNTI0OCwgMTUyNTMsIDE1MjU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTI2MiwgMTUyNjYsIDAsIAotICAgIDE1MjcyLCAxNTI3NiwgMTUyODAsIDAsIDAsIDAsIDAsIDAsIDE1Mjg0LCAxNTI4OSwgMTUyOTQsIDE1Mjk5LCAwLCAwLCAKLSAgICAxNTMwNSwgMTUzMDksIDE1MzEyLCAxNTMxNSwgMTUzMTgsIDE1MzIxLCAxNTMyNCwgMTUzMjcsIDE1MzMxLCAxNTMzNCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUzMzgsIDE1MzUxLCAxNTM2MywgMTUzNzUsIDE1Mzg3LCAxNTM5OSwgMTU0MTEsIAotICAgIDE1NDIzLCAwLCAxNTQyNywgMTU0MzEsIDE1NDM1LCAwLCAxNTQzOSwgMTU0NDIsIDE1NDQ2LCAxNTQ0OSwgMTU0NTMsIAotICAgIDE1NDU2LCAxNTQ2MCwgMTU0NjQsIDAsIDE1NDY4LCAxNTQ3MSwgMTU0NzUsIDAsIDE1NDc5LCAxNTQ4MiwgMTU0ODYsIAotICAgIDE1NDkwLCAxNTQ5MywgMTU0OTcsIDE1NTAxLCAxNTUwNSwgMTU1MDksIDE1NTEzLCAxNTUxNywgMTU1MjEsIDE1NTI1LCAKLSAgICAxNTUyOSwgMTU1MzMsIDE1NTM3LCAxNTU0MSwgMTU1NDUsIDE1NTQ5LCAxNTU1MywgMTU1NTcsIDE1NTYxLCAxNTU2NSwgMCwgCi0gICAgMTU1NjksIDE1NTcyLCAxNTU3NiwgMTU1ODAsIDE1NTg0LCAxNTU4NywgMTU1OTAsIDE1NTk0LCAxNTU5OCwgMTU2MDIsIDAsIAotICAgIDE1NjA2LCAxNTYxMCwgMTU2MTQsIDE1NjE4LCAxNTYyMiwgMCwgMCwgMTU2MjUsIDE1NjI5LCAxNTYzMywgMTU2MzgsIAotICAgIDE1NjQyLCAxNTY0NywgMTU2NTEsIDE1NjU2LCAxNTY2MSwgMCwgMTU2NjcsIDE1NjcxLCAxNTY3NiwgMCwgMTU2ODEsIAotICAgIDE1Njg1LCAxNTY5MCwgMTU2OTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1Njk5LCAxNTcwMywgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTU3MDksIDAsIDE1NzEzLCAxNTcxOCwgMTU3MjMsIDE1NzI4LCAwLCAwLCAxNTczNCwgMTU3MzgsIDE1NzQxLCAKLSAgICAxNTc0NCwgMTU3NDcsIDE1NzUwLCAxNTc1MywgMTU3NTYsIDE1NzYwLCAxNTc2MywgMCwgMTU3NjcsIDE1NzcxLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTc3NSwgMTU3NzksIDE1NzgzLCAwLCAxNTc4NywgMTU3OTAsIAotICAgIDE1Nzk0LCAxNTc5NywgMTU4MDEsIDE1ODA0LCAxNTgwOCwgMTU4MTIsIDAsIDE1ODE2LCAxNTgxOSwgMTU4MjMsIDAsIAotICAgIDE1ODI3LCAxNTgzMCwgMTU4MzQsIDE1ODM4LCAxNTg0MSwgMTU4NDUsIDE1ODQ5LCAxNTg1MywgMTU4NTcsIDE1ODYxLCAKLSAgICAxNTg2NSwgMTU4NjksIDE1ODczLCAxNTg3NywgMTU4ODEsIDE1ODg1LCAxNTg4OSwgMTU4OTMsIDE1ODk3LCAxNTkwMSwgCi0gICAgMTU5MDUsIDE1OTA5LCAxNTkxMywgMTU5MTcsIDE1OTIxLCAxNTkyNCwgMTU5MjgsIDE1OTMyLCAxNTkzNiwgMTU5MzksIAotICAgIDE1OTQyLCAxNTk0NiwgMTU5NTAsIDE1OTU0LCAxNTk1OCwgMTU5NjIsIDE1OTY2LCAxNTk3MCwgMTU5NzQsIDE1OTc4LCAKLSAgICAxNTk4MSwgMCwgMCwgMTU5ODUsIDE1OTg5LCAxNTk5NCwgMTU5OTgsIDE2MDAzLCAxNjAwNywgMTYwMTIsIDE2MDE3LCAwLCAKLSAgICAxNjAyMywgMTYwMjcsIDE2MDMyLCAwLCAxNjAzNywgMTYwNDEsIDE2MDQ2LCAxNjA1MSwgMTYwNTUsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDE2MDYwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjA2NiwgMTYwNzIsIDE2MDc3LCAxNjA4MiwgMTYwODcsIAotICAgIDAsIDAsIDE2MDkzLCAxNjA5NywgMTYxMDAsIDE2MTAzLCAxNjEwNiwgMTYxMDksIDE2MTEyLCAxNjExNSwgMTYxMTksIAotICAgIDE2MTIyLCAxNjEyNiwgMTYxMzAsIDE2MTM1LCAxNjE0MCwgMTYxNDYsIDE2MTUyLCAwLCAwLCAwLCAxNjE1OCwgMTYxNjIsIAotICAgIDE2MTY4LCAxNjE3NCwgMTYxODAsIDE2MTg1LCAxNjE5MSwgMCwgMCwgMTYxOTcsIDE2MjAxLCAwLCAxNjIwNSwgMTYyMDksIAotICAgIDE2MjEzLCAxNjIxNywgMTYyMjEsIDE2MjI1LCAxNjIyOSwgMTYyMzMsIDE2MjM3LCAxNjI0MSwgMTYyNDUsIDE2MjQ5LCAKLSAgICAxNjI1MywgMTYyNTcsIDE2MjYxLCAxNjI2NSwgMTYyNjksIDE2MjczLCAwLCAwLCAwLCAxNjI3NywgMTYyODMsIDE2Mjg5LCAKLSAgICAxNjI5NSwgMTYzMDEsIDE2MzA3LCAxNjMxMywgMTYzMTksIDE2MzI1LCAxNjMzMSwgMTYzMzcsIDE2MzQzLCAxNjM1MSwgCi0gICAgMTYzNTcsIDE2MzYzLCAxNjM2OSwgMTYzNzUsIDE2MzgxLCAxNjM4NywgMTYzOTMsIDE2Mzk5LCAxNjQwNSwgMTY0MTEsIAotICAgIDE2NDE3LCAwLCAxNjQyMywgMTY0MjksIDE2NDM1LCAxNjQ0MSwgMTY0NDcsIDE2NDUzLCAxNjQ1NywgMTY0NjMsIDE2NDY3LCAKLSAgICAwLCAxNjQ3MSwgMCwgMCwgMTY0NzcsIDE2NDgxLCAxNjQ4NywgMTY0OTMsIDE2NDk5LCAxNjUwMywgMTY1MDksIDAsIDAsIDAsIAotICAgIDE2NTEzLCAwLCAwLCAwLCAwLCAxNjUxNywgMTY1MjIsIDE2NTI5LCAxNjUzNiwgMTY1NDMsIDE2NTUwLCAwLCAxNjU1NywgMCwgCi0gICAgMTY1NjQsIDE2NTY5LCAxNjU3NCwgMTY1ODEsIDE2NTg4LCAxNjU5NywgMTY2MDgsIDE2NjE3LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxNjYyMiwgMTY2MjgsIDE2NjMzLCAxNjYzOCwgMTY2NDMsIDE2NjQ4LCAxNjY1MywgMTY2NTgsIDE2NjY0LCAxNjY2OSwgMCwgCi0gICAgMCwgMTY2NzUsIDE2NjgyLCAxNjY4OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY2OTQsIDE2NzAxLCAKLSAgICAxNjcwOCwgMTY3MTUsIDE2NzIyLCAxNjcyOSwgMTY3MzYsIDE2NzQzLCAxNjc1MCwgMTY3NTcsIDE2NzY0LCAxNjc3MSwgCi0gICAgMTY3NzgsIDE2Nzg1LCAxNjc5MiwgMTY3OTksIDE2ODA2LCAxNjgxMywgMTY4MjAsIDE2ODI3LCAxNjgzNCwgMTY4NDEsIAotICAgIDE2ODQ4LCAxNjg1NSwgMTY4NjIsIDE2ODY5LCAxNjg3NiwgMTY4ODMsIDE2ODkwLCAxNjg5NywgMTY5MDQsIDE2OTExLCAKLSAgICAxNjkxOCwgMTY5MjQsIDE2OTMxLCAxNjkzOCwgMTY5NDMsIDE2OTUwLCAxNjk1NSwgMTY5NjIsIDE2OTY5LCAxNjk3NiwgCi0gICAgMTY5ODMsIDE2OTkwLCAxNjk5NywgMTcwMDMsIDE3MDEwLCAxNzAxNSwgMTcwMjEsIDE3MDI4LCAxNzAzNSwgMTcwNDIsIAotICAgIDE3MDQ4LCAxNzA1NSwgMTcwNjIsIDE3MDY5LCAxNzA3NSwgMTcwODIsIDAsIDAsIDAsIDAsIDE3MDg3LCAxNzA5NCwgCi0gICAgMTcxMDAsIDE3MTA3LCAxNzExMywgMTcxMjIsIDE3MTMxLCAxNzEzNiwgMTcxNDEsIDE3MTQ2LCAxNzE1MywgMTcxNjAsIAotICAgIDE3MTY3LCAxNzE3NCwgMTcxNzksIDE3MTg0LCAxNzE4OSwgMTcxOTQsIDE3MTk5LCAxNzIwMywgMTcyMDcsIDE3MjExLCAKLSAgICAxNzIxNSwgMTcyMTksIDE3MjIzLCAxNzIyOCwgMTcyMzIsIDE3MjM3LCAxNzI0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTcyNDcsIDE3MjUyLCAwLCAxNzI1OSwgMCwgMCwgMTcyNjYsIDE3MjcxLCAwLCAxNzI3NiwgMCwgCi0gICAgMCwgMTcyODMsIDAsIDAsIDAsIDAsIDAsIDAsIDE3Mjg4LCAxNzI5MywgMTcyOTcsIDE3MzA0LCAwLCAxNzMxMSwgMTczMTYsIAotICAgIDE3MzIxLCAxNzMyNiwgMTczMzMsIDE3MzQwLCAxNzM0NywgMCwgMTczNTQsIDE3MzU5LCAxNzM2NCwgMCwgMTczNzEsIDAsIAotICAgIDE3Mzc4LCAwLCAwLCAxNzM4MywgMTczOTAsIDAsIDE3Mzk3LCAxNzQwMSwgMTc0MDgsIDE3NDEyLCAxNzQxNywgMTc0MjUsIAotICAgIDE3NDMxLCAxNzQzNywgMTc0NDIsIDE3NDQ4LCAxNzQ1NCwgMTc0NjAsIDE3NDY1LCAwLCAxNzQ3MSwgMTc0NzksIDE3NDg2LCAKLSAgICAwLCAwLCAxNzQ5MywgMTc0OTgsIDE3NTA0LCAxNzUwOSwgMTc1MTUsIDAsIDE3NTIxLCAwLCAxNzUyNywgMTc1MzQsIAotICAgIDE3NTQxLCAxNzU0OCwgMTc1NTUsIDE3NTYwLCAwLCAwLCAxNzU2NCwgMTc1NjksIDE3NTczLCAxNzU3NywgMTc1ODEsIAotICAgIDE3NTg1LCAxNzU4OSwgMTc1OTMsIDE3NTk4LCAxNzYwMiwgMCwgMCwgMTc2MDcsIDE3NjEzLCAxNzYxOSwgMTc2MjYsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3NjMzLCAxNzYzNywgMTc2NDgsIDE3NjYzLCAxNzY3OCwgMTc2ODgsIDE3Njk5LCAKLSAgICAxNzcxMiwgMTc3MjMsIDE3NzI5LCAxNzczNywgMTc3NDcsIDE3NzUzLCAxNzc2MSwgMTc3NjUsIDE3NzcxLCAxNzc3NywgCi0gICAgMTc3ODUsIDE3Nzk1LCAxNzgwMywgMTc4MTYsIDE3ODIyLCAxNzgzMCwgMTc4MzgsIDE3ODUwLCAxNzg1NywgMTc4NjUsIAotICAgIDE3ODczLCAxNzg4MSwgMTc4ODksIDE3ODk3LCAxNzkwNSwgMTc5MTUsIDE3OTE5LCAxNzkyMiwgMTc5MjUsIDE3OTI4LCAKLSAgICAxNzkzMSwgMTc5MzQsIDE3OTM3LCAxNzk0MSwgMTc5NDQsIDE3OTQ4LCAxNzk1MiwgMTc5NTYsIDE3OTYwLCAxNzk2NCwgCi0gICAgMTc5NjgsIDE3OTcyLCAxNzk3NywgMTc5ODEsIDE3OTg2LCAxNzk5MSwgMTc5OTcsIDE4MDA3LCAxODAyMSwgMTgwMzEsIAotICAgIDE4MDM3LCAxODA0MywgMTgwNTEsIDE4MDU5LCAxODA2NywgMTgwNzUsIDE4MDgxLCAxODA4NywgMTgwOTAsIDE4MDk0LCAKLSAgICAxODA5OCwgMTgxMDIsIDE4MTA2LCAxODExMCwgMTgxMTQsIDAsIDE4MTE4LCAxODEyMiwgMTgxMjYsIDE4MTMwLCAxODEzNCwgCi0gICAgMTgxMzgsIDE4MTQyLCAxODE0NiwgMTgxNTAsIDE4MTU0LCAxODE1OCwgMTgxNjIsIDE4MTY1LCAxODE2OSwgMTgxNzMsIAotICAgIDE4MTc3LCAxODE4MCwgMTgxODQsIDE4MTg4LCAxODE5MiwgMTgxOTYsIDE4MjAwLCAxODIwNCwgMTgyMDgsIDE4MjEyLCAKLSAgICAxODIxNSwgMTgyMTksIDE4MjIzLCAxODIyNywgMTgyMzEsIDE4MjM1LCAxODIzOCwgMTgyNDEsIDE4MjQ1LCAxODI1MSwgCi0gICAgMTgyNTUsIDAsIDAsIDAsIDAsIDE4MjU5LCAxODI2NCwgMTgyNjgsIDE4MjczLCAxODI3NywgMTgyODIsIDE4Mjg3LCAKLSAgICAxODI5MywgMTgyOTgsIDE4MzA0LCAxODMwOCwgMTgzMTMsIDE4MzE3LCAxODMyMiwgMTgzMzIsIDE4MzM4LCAxODM0NCwgCi0gICAgMTgzNTEsIDE4MzYxLCAxODM2NywgMTgzNzEsIDE4Mzc1LCAxODM4MSwgMTgzODcsIDE4Mzk1LCAxODQwMSwgMTg0MDksIAotICAgIDE4NDE3LCAxODQyNSwgMTg0MzUsIDE4NDQzLCAxODQ1MywgMTg0NTgsIDE4NDY0LCAxODQ3MCwgMTg0NzYsIDE4NDgyLCAKLSAgICAxODQ4OCwgMTg0OTQsIDAsIDE4NTAwLCAxODUwNiwgMTg1MTIsIDE4NTE4LCAxODUyNCwgMTg1MzAsIDE4NTM2LCAxODU0MiwgCi0gICAgMTg1NDgsIDE4NTU0LCAxODU2MCwgMTg1NjYsIDE4NTcxLCAxODU3NywgMTg1ODMsIDE4NTg5LCAxODU5NCwgMTg2MDAsIAotICAgIDE4NjA2LCAxODYxMiwgMTg2MTgsIDE4NjI0LCAxODYzMCwgMTg2MzYsIDE4NjQyLCAxODY0NywgMTg2NTMsIDE4NjU5LCAKLSAgICAxODY2NSwgMTg2NzEsIDE4Njc3LCAxODY4MiwgMTg2ODcsIDE4NjkzLCAxODcwMSwgMTg3MDgsIDAsIDE4NzE2LCAxODcyMywgCi0gICAgMTg3MzYsIDE4NzQzLCAxODc1MCwgMTg3NTgsIDE4NzY2LCAxODc3MiwgMTg3NzgsIDE4Nzg0LCAxODc5NCwgMTg3OTksIAotICAgIDE4ODA1LCAxODgxNSwgMTg4MjUsIDAsIDE4ODM1LCAxODg0NSwgMTg4NTMsIDE4ODY1LCAxODg3NywgMTg4ODMsIDE4ODk3LCAKLSAgICAxODkxMiwgMTg5MTcsIDE4OTIyLCAxODkzMCwgMTg5MzgsIDE4OTQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAxODk1NCwgMTg5NTcsIDE4OTYxLCAxODk2NSwgMTg5NjksIDE4OTczLCAxODk3NywgMTg5ODEsIDE4OTg1LCAKLSAgICAxODk4OSwgMTg5OTMsIDE4OTk3LCAxOTAwMSwgMTkwMDUsIDE5MDA5LCAxOTAxMywgMTkwMTcsIDE5MDIxLCAxOTAyNSwgCi0gICAgMTkwMjksIDE5MDMzLCAxOTAzNywgMTkwNDAsIDE5MDQ0LCAxOTA0OCwgMTkwNTIsIDE5MDU1LCAxOTA1OCwgMTkwNjIsIAotICAgIDE5MDY2LCAxOTA3MCwgMTkwNzQsIDE5MDc3LCAxOTA4MSwgMTkwODQsIDE5MDg5LCAxOTA5MiwgMTkwOTYsIDE5MDk5LCAKLSAgICAxOTEwMywgMTkxMDYsIDE5MTExLCAxOTExNCwgMTkxMTgsIDE5MTI1LCAxOTEzMCwgMTkxMzQsIDE5MTM5LCAxOTE0MywgCi0gICAgMTkxNDgsIDE5MTUyLCAxOTE1NywgMTkxNjQsIDE5MTcwLCAxOTE3NSwgMTkxNzksIDE5MTgzLCAxOTE4NywgMTkxOTEsIAotICAgIDE5MTk1LCAxOTIwMCwgMTkyMDYsIDE5MjEyLCAxOTIxNywgMTkyMjMsIDE5MjI3LCAxOTIzMCwgMTkyMzMsIDE5MjM2LCAKLSAgICAxOTIzOSwgMTkyNDIsIDE5MjQ1LCAxOTI0OSwgMTkyNTIsIDE5MjU2LCAxOTI2MiwgMTkyNjYsIDE5MjcwLCAxOTI3NCwgCi0gICAgMTkyNzgsIDE5MjgyLCAxOTI4NiwgMTkyOTAsIDE5Mjk0LCAxOTI5OSwgMTkzMDMsIDE5MzA4LCAxOTMxMywgMTkzMTksIAotICAgIDE5MzI0LCAxOTMzMCwgMTkzMzYsIDE5MzQyLCAxOTM0OCwgMTkzNTQsIDE5MzYyLCAxOTM2OSwgMTkzNzcsIDE5Mzg1LCAKLSAgICAxOTM5NCwgMTk0MDMsIDE5NDE0LCAxOTQyNCwgMTk0MzQsIDE5NDQ1LCAxOTQ1NiwgMTk0NjYsIDE5NDc2LCAxOTQ4NiwgCi0gICAgMTk0OTYsIDE5NTA2LCAxOTUxNiwgMTk1MjYsIDE5NTM2LCAxOTU0NCwgMTk1NTEsIDE5NTU3LCAxOTU2NCwgMTk1NjksIAotICAgIDE5NTc1LCAxOTU4MSwgMTk1ODcsIDE5NTkzLCAxOTU5OSwgMTk2MDUsIDE5NjExLCAxOTYxNywgMTk2MjMsIDE5NjI5LCAKLSAgICAxOTYzNSwgMTk2NDAsIDE5NjQ4LCAxOTY1NSwgMTk2NjEsIDE5NjY4LCAxOTY3NiwgMTk2ODIsIDE5Njg4LCAxOTY5NCwgCi0gICAgMTk3MDAsIDE5NzA4LCAxOTcxNiwgMTk3MjYsIDE5NzM0LCAxOTc0MiwgMTk3NDgsIDE5NzUzLCAxOTc1OCwgMTk3NjMsIAotICAgIDE5NzY4LCAxOTc3MywgMTk3NzgsIDE5Nzg0LCAxOTc4OSwgMTk3OTUsIDE5ODAxLCAxOTgwNywgMTk4MTMsIDE5ODIwLCAKLSAgICAxOTgyNSwgMTk4MzEsIDE5ODM2LCAxOTg0MSwgMTk4NDYsIDE5ODUxLCAxOTg1NiwgMTk4NjEsIDE5ODY2LCAxOTg3MSwgCi0gICAgMTk4NzYsIDE5ODgxLCAxOTg4NiwgMTk4OTEsIDE5ODk2LCAxOTkwMSwgMTk5MDYsIDE5OTExLCAxOTkxNiwgMTk5MjEsIAotICAgIDE5OTI2LCAxOTkzMSwgMTk5MzYsIDE5OTQxLCAxOTk0NiwgMTk5NTEsIDE5OTU2LCAxOTk2MSwgMTk5NjYsIDE5OTcxLCAKLSAgICAxOTk3NiwgMTk5ODEsIDE5OTg2LCAxOTk5MSwgMTk5OTYsIDIwMDAxLCAyMDAwNiwgMjAwMTEsIDIwMDE2LCAwLCAyMDAyMSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMjAwMjYsIDAsIDAsIDIwMDMxLCAyMDAzNSwgMjAwMzksIDIwMDQzLCAyMDA0NywgMjAwNTEsIAotICAgIDIwMDU1LCAyMDA1OSwgMjAwNjMsIDIwMDY3LCAyMDA3MSwgMjAwNzUsIDIwMDc5LCAyMDA4MywgMjAwODcsIDIwMDkxLCAKLSAgICAyMDA5NSwgMjAwOTksIDIwMTAzLCAyMDEwNywgMjAxMTEsIDIwMTE1LCAyMDExOSwgMjAxMjMsIDIwMTI3LCAyMDEzMSwgCi0gICAgMjAxMzUsIDIwMTM5LCAyMDE0MywgMjAxNDcsIDIwMTUxLCAyMDE1NSwgMjAxNTksIDIwMTYzLCAyMDE2NywgMjAxNzEsIAotICAgIDIwMTc1LCAyMDE3OSwgMjAxODMsIDIwMTg3LCAyMDE5MSwgMjAxOTUsIDIwMjAxLCAyMDIwNSwgMjAyMTAsIDIwMjE1LCAKLSAgICAyMDIxOSwgMjAyMjQsIDIwMjI5LCAyMDIzMywgMjAyMzcsIDIwMjQxLCAyMDI0NSwgMjAyNDksIDIwMjUzLCAyMDI1NywgCi0gICAgMjAyNjEsIDIwMjY1LCAyMDI2OSwgMjAyNzMsIDIwMjc3LCAyMDI4MSwgMjAyODUsIDIwMjg5LCAyMDI5MywgMjAyOTcsIAotICAgIDIwMzAxLCAyMDMwNSwgMjAzMDksIDIwMzEzLCAyMDMxNywgMjAzMjEsIDIwMzI1LCAyMDMyOSwgMjAzMzMsIDIwMzM3LCAKLSAgICAyMDM0MSwgMjAzNDUsIDIwMzQ5LCAyMDM1MywgMjAzNTcsIDIwMzYxLCAyMDM2NSwgMjAzNjksIDIwMzczLCAyMDM3NywgCi0gICAgMjAzODEsIDIwMzg1LCAyMDM4OSwgMjAzOTMsIDIwMzk3LCAyMDQwMSwgMjA0MDUsIDIwNDA5LCAyMDQxMywgMjA0MTcsIAotICAgIDIwNDIxLCAyMDQyNSwgMjA0MjksIDIwNDMzLCAyMDQzNywgMjA0NDEsIDIwNDQ1LCAyMDQ0OSwgMjA0NTMsIDIwNDU3LCAKLSAgICAyMDQ2MSwgMjA0NjUsIDIwNDY5LCAyMDQ3MywgMjA0NzcsIDIwNDgxLCAyMDQ4NSwgMjA0ODksIDIwNDkzLCAyMDQ5NywgCi0gICAgMjA1MDEsIDIwNTA1LCAyMDUwOSwgMjA1MTMsIDIwNTE3LCAyMDUyMSwgMjA1MjUsIDIwNTI5LCAyMDUzMywgMjA1MzcsIAotICAgIDIwNTQxLCAyMDU0NSwgMjA1NDksIDIwNTUzLCAyMDU1NywgMjA1NjEsIDIwNTY1LCAyMDU2OSwgMjA1NzMsIDIwNTc3LCAKLSAgICAyMDU4MSwgMjA1ODUsIDIwNTg5LCAyMDU5MywgMjA1OTcsIDIwNjAxLCAyMDYwNSwgMjA2MDksIDIwNjEzLCAyMDYxNywgCi0gICAgMjA2MjAsIDIwNjI0LCAyMDYyNywgMjA2MzEsIDIwNjM1LCAyMDYzOCwgMjA2NDIsIDIwNjQ2LCAyMDY0OSwgMjA2NTMsIAotICAgIDIwNjU3LCAyMDY2MSwgMjA2NjUsIDIwNjY4LCAyMDY3MiwgMjA2NzYsIDIwNjgwLCAyMDY4NCwgMjA2ODgsIDIwNjkyLCAKLSAgICAyMDY5NSwgMjA2OTksIDIwNzAzLCAyMDcwNywgMjA3MTEsIDIwNzE1LCAyMDcxOSwgMjA3MjMsIDIwNzI3LCAyMDczMSwgCi0gICAgMjA3MzUsIDIwNzM5LCAyMDc0MywgMjA3NDcsIDIwNzUxLCAyMDc1NSwgMjA3NTksIDIwNzYzLCAyMDc2NywgMjA3NzEsIAotICAgIDIwNzc1LCAyMDc3OSwgMjA3ODMsIDIwNzg3LCAyMDc5MSwgMjA3OTUsIDIwNzk5LCAyMDgwMywgMjA4MDcsIDIwODExLCAKLSAgICAyMDgxNSwgMjA4MTksIDIwODIzLCAyMDgyNywgMjA4MzEsIDIwODM1LCAyMDgzOSwgMjA4NDMsIDIwODQ3LCAyMDg1MSwgCi0gICAgMjA4NTUsIDIwODU5LCAyMDg2MywgMjA4NjcsIDIwODcxLCAyMDg3NSwgMjA4NzksIDIwODgzLCAyMDg4NywgMjA4OTEsIAotICAgIDIwODk1LCAyMDg5OSwgMjA5MDMsIDIwOTA3LCAyMDkxMSwgMjA5MTUsIDIwOTE5LCAyMDkyMywgMjA5MjcsIDIwOTMxLCAKLSAgICAyMDkzNSwgMjA5MzksIDIwOTQzLCAyMDk0NywgMjA5NTEsIDIwOTU1LCAyMDk1OSwgMjA5NjMsIDIwOTY3LCAyMDk3MSwgCi0gICAgMjA5NzUsIDIwOTc5LCAyMDk4MywgMjA5ODcsIDIwOTkxLCAyMDk5NSwgMjA5OTksIDIxMDAzLCAyMTAwNywgMjEwMTEsIAotICAgIDIxMDE1LCAyMTAxOSwgMjEwMjMsIDIxMDI3LCAyMTAzMSwgMjEwMzUsIDIxMDM5LCAyMTA0MywgMjEwNDcsIDIxMDUxLCAKLSAgICAyMTA1NSwgMjEwNTksIDIxMDYzLCAyMTA2NywgMjEwNzEsIDIxMDc1LCAyMTA3OSwgMjEwODMsIDIxMDg3LCAyMTA5MSwgCi0gICAgMjEwOTUsIDIxMDk5LCAyMTEwMywgMjExMDcsIDIxMTExLCAyMTExNSwgMjExMTksIDIxMTIzLCAyMTEyNywgMjExMzEsIAotICAgIDIxMTM1LCAyMTEzOSwgMjExNDMsIDIxMTQ3LCAyMTE1MSwgMjExNTUsIDIxMTU5LCAyMTE2MywgMjExNjcsIDIxMTcxLCAKLSAgICAyMTE3NSwgMjExNzksIDIxMTgzLCAyMTE4NywgMjExOTEsIDIxMTk1LCAyMTE5OSwgMjEyMDMsIDIxMjA3LCAyMTIxMSwgCi0gICAgMjEyMTUsIDIxMjE5LCAyMTIyMywgMjEyMjcsIDIxMjMxLCAyMTIzNSwgMjEyMzksIDIxMjQzLCAyMTI0NywgMjEyNTAsIAotICAgIDIxMjU0LCAyMTI1OCwgMjEyNjIsIDIxMjY2LCAyMTI3MCwgMjEyNzQsIDIxMjc4LCAyMTI4MiwgMjEyODYsIDIxMjkwLCAKLSAgICAyMTI5NCwgMjEyOTgsIDIxMzAyLCAyMTMwNiwgMjEzMTAsIDIxMzE0LCAyMTMxOCwgMjEzMjIsIDIxMzI2LCAyMTMzMCwgCi0gICAgMjEzMzQsIDIxMzM4LCAyMTM0MiwgMjEzNDUsIDIxMzQ5LCAyMTM1MywgMjEzNTcsIDIxMzYxLCAyMTM2NSwgMjEzNjksIAotICAgIDIxMzczLCAyMTM3NywgMjEzODEsIDIxMzg1LCAyMTM4OSwgMjEzOTMsIDIxMzk3LCAyMTQwMSwgMjE0MDUsIDIxNDA5LCAKLSAgICAyMTQxMywgMjE0MTcsIDIxNDIxLCAyMTQyNSwgMjE0MjksIDIxNDMzLCAyMTQzNywgMjE0NDEsIDIxNDQ1LCAyMTQ0OSwgCi0gICAgMjE0NTMsIDIxNDU3LCAyMTQ2MSwgMjE0NjUsIDIxNDY5LCAyMTQ3MywgMjE0NzcsIDIxNDgxLCAyMTQ4NSwgMjE0ODksIAotICAgIDIxNDkzLCAyMTQ5NywgMjE1MDEsIDIxNTA1LCAyMTUwOSwgMjE1MTMsIDIxNTE3LCAyMTUyMSwgMjE1MjUsIDIxNTI5LCAKLSAgICAyMTUzMywgMCwgMjE1MzcsIDIxNTQxLCAyMTU0NSwgMjE1NDksIDAsIDAsIDIxNTUzLCAyMTU1NywgMjE1NjEsIDIxNTY1LCAKLSAgICAyMTU2OSwgMjE1NzMsIDIxNTc3LCAwLCAyMTU4MSwgMCwgMjE1ODUsIDIxNTg5LCAyMTU5MywgMjE1OTcsIDAsIDAsIAotICAgIDIxNjAxLCAyMTYwNSwgMjE2MDksIDIxNjEzLCAyMTYxNywgMjE2MjEsIDIxNjI1LCAyMTYyOSwgMjE2MzMsIDIxNjM3LCAKLSAgICAyMTY0MSwgMjE2NDUsIDIxNjQ5LCAyMTY1MywgMjE2NTcsIDIxNjYxLCAyMTY2NSwgMjE2NjksIDIxNjczLCAyMTY3NywgCi0gICAgMjE2ODEsIDIxNjg1LCAyMTY4OSwgMjE2OTIsIDIxNjk2LCAyMTcwMCwgMjE3MDQsIDIxNzA4LCAyMTcxMiwgMjE3MTYsIAotICAgIDIxNzIwLCAyMTcyNCwgMjE3MjgsIDIxNzMyLCAyMTczNiwgMjE3NDAsIDIxNzQ0LCAyMTc0OCwgMjE3NTIsIDIxNzU2LCAKLSAgICAyMTc2MCwgMCwgMjE3NjQsIDIxNzY4LCAyMTc3MiwgMjE3NzYsIDAsIDAsIDIxNzgwLCAyMTc4NCwgMjE3ODgsIDIxNzkyLCAKLSAgICAyMTc5NiwgMjE4MDAsIDIxODA0LCAyMTgwOCwgMjE4MTIsIDIxODE2LCAyMTgyMCwgMjE4MjQsIDIxODI4LCAyMTgzMiwgCi0gICAgMjE4MzYsIDIxODQwLCAyMTg0NCwgMjE4NDksIDIxODU0LCAyMTg1OSwgMjE4NjUsIDIxODcxLCAyMTg3NiwgMjE4ODEsIAotICAgIDIxODg3LCAyMTg5MCwgMjE4OTQsIDIxODk4LCAyMTkwMiwgMjE5MDYsIDIxOTEwLCAyMTkxNCwgMjE5MTgsIDAsIDIxOTIyLCAKLSAgICAyMTkyNiwgMjE5MzAsIDIxOTM0LCAwLCAwLCAyMTkzOCwgMjE5NDIsIDIxOTQ2LCAyMTk1MCwgMjE5NTQsIDIxOTU4LCAKLSAgICAyMTk2MiwgMCwgMjE5NjYsIDAsIDIxOTcwLCAyMTk3NCwgMjE5NzgsIDIxOTgyLCAwLCAwLCAyMTk4NiwgMjE5OTAsIAotICAgIDIxOTk0LCAyMTk5OCwgMjIwMDIsIDIyMDA2LCAyMjAxMCwgMjIwMTQsIDIyMDE4LCAyMjAyMywgMjIwMjgsIDIyMDMzLCAKLSAgICAyMjAzOSwgMjIwNDUsIDIyMDUwLCAwLCAyMjA1NSwgMjIwNTksIDIyMDYzLCAyMjA2NywgMjIwNzEsIDIyMDc1LCAyMjA3OSwgCi0gICAgMjIwODMsIDIyMDg3LCAyMjA5MSwgMjIwOTUsIDIyMDk5LCAyMjEwMywgMjIxMDcsIDIyMTExLCAyMjExNSwgMjIxMTksIAotICAgIDIyMTIyLCAyMjEyNiwgMjIxMzAsIDIyMTM0LCAyMjEzOCwgMjIxNDIsIDIyMTQ2LCAyMjE1MCwgMjIxNTQsIDIyMTU4LCAKLSAgICAyMjE2MiwgMjIxNjYsIDIyMTcwLCAyMjE3NCwgMjIxNzgsIDIyMTgyLCAyMjE4NiwgMjIxOTAsIDIyMTk0LCAyMjE5OCwgCi0gICAgMjIyMDIsIDIyMjA2LCAyMjIxMCwgMjIyMTQsIDIyMjE4LCAyMjIyMiwgMjIyMjYsIDIyMjMwLCAyMjIzNCwgMjIyMzgsIAotICAgIDIyMjQyLCAyMjI0NiwgMjIyNTAsIDIyMjU0LCAyMjI1OCwgMjIyNjIsIDIyMjY2LCAyMjI3MCwgMjIyNzQsIDIyMjc4LCAwLCAKLSAgICAyMjI4MiwgMjIyODYsIDIyMjkwLCAyMjI5NCwgMCwgMCwgMjIyOTgsIDIyMzAyLCAyMjMwNiwgMjIzMTAsIDIyMzE0LCAKLSAgICAyMjMxOCwgMjIzMjIsIDIyMzI2LCAyMjMzMCwgMjIzMzQsIDIyMzM4LCAyMjM0MiwgMjIzNDYsIDIyMzUwLCAyMjM1NCwgCi0gICAgMjIzNTgsIDIyMzYyLCAyMjM2NiwgMjIzNzAsIDIyMzc0LCAyMjM3OCwgMjIzODIsIDIyMzg2LCAyMjM5MCwgMjIzOTQsIAotICAgIDIyMzk4LCAyMjQwMiwgMjI0MDYsIDIyNDEwLCAyMjQxNCwgMjI0MTgsIDIyNDIyLCAyMjQyNiwgMjI0MzAsIDIyNDM0LCAKLSAgICAyMjQzOCwgMjI0NDIsIDIyNDQ2LCAyMjQ1MCwgMjI0NTQsIDIyNDU4LCAyMjQ2MiwgMjI0NjYsIDIyNDcwLCAyMjQ3NCwgCi0gICAgMjI0NzgsIDIyNDgyLCAyMjQ4NiwgMjI0OTAsIDIyNDk0LCAyMjQ5OCwgMjI1MDIsIDIyNTA2LCAyMjUxMCwgMjI1MTQsIAotICAgIDIyNTE4LCAyMjUyMiwgMjI1MjUsIDIyNTI5LCAyMjUzMywgMjI1MzcsIDIyNTQxLCAyMjU0NSwgMjI1NDksIDIyNTUzLCAKLSAgICAyMjU1NywgMjI1NjEsIDAsIDAsIDIyNTY1LCAyMjU3NCwgMjI1ODAsIDIyNTg1LCAyMjU4OSwgMjI1OTIsIDIyNTk3LCAKLSAgICAyMjYwMCwgMjI2MDMsIDIyNjA2LCAyMjYxMSwgMjI2MTUsIDIyNjIwLCAyMjYyMywgMjI2MjYsIDIyNjI5LCAyMjYzMiwgCi0gICAgMjI2MzUsIDIyNjM4LCAyMjY0MiwgMjI2NDUsIDIyNjQ5LCAyMjY1MywgMjI2NTcsIDIyNjYxLCAyMjY2NSwgMjI2NjksIAotICAgIDIyNjczLCAyMjY3NywgMjI2ODEsIDIyNjg1LCAyMjY4OSwgMCwgMCwgMCwgMjI2OTUsIDIyNzAxLCAyMjcwNSwgMjI3MDksIAotICAgIDIyNzEzLCAyMjcxOSwgMjI3MjMsIDIyNzI3LCAyMjczMSwgMjI3MzcsIDIyNzQxLCAyMjc0NSwgMjI3NDksIDIyNzU1LCAKLSAgICAyMjc1OSwgMjI3NjMsIDIyNzY3LCAyMjc3MywgMjI3NzksIDIyNzg1LCAyMjc5MywgMjI3OTksIDIyODA1LCAyMjgxMSwgCi0gICAgMjI4MTcsIDIyODIzLCAwLCAwLCAwLCAwLCAwLCAwLCAyMjgyOSwgMjI4MzIsIDIyODM1LCAyMjgzOCwgMjI4NDEsIDIyODQ0LCAKLSAgICAyMjg0OCwgMjI4NTIsIDIyODU1LCAyMjg1OSwgMjI4NjMsIDIyODY3LCAyMjg3MSwgMjI4NzUsIDIyODc4LCAyMjg4MiwgCi0gICAgMjI4ODYsIDIyODkwLCAyMjg5NCwgMjI4OTgsIDIyOTAyLCAyMjkwNiwgMjI5MTAsIDIyOTE0LCAyMjkxOCwgMjI5MjIsIAotICAgIDIyOTI1LCAyMjkyOSwgMjI5MzMsIDIyOTM3LCAyMjk0MSwgMjI5NDUsIDIyOTQ5LCAyMjk1MywgMjI5NTcsIDIyOTYxLCAKLSAgICAyMjk2NSwgMjI5NjksIDIyOTczLCAyMjk3NywgMjI5ODEsIDIyOTg1LCAyMjk4OSwgMjI5OTMsIDIyOTk3LCAyMzAwMSwgCi0gICAgMjMwMDQsIDIzMDA4LCAyMzAxMiwgMjMwMTYsIDIzMDIwLCAyMzAyNCwgMjMwMjgsIDIzMDMyLCAyMzAzNiwgMjMwNDAsIAotICAgIDIzMDQ0LCAyMzA0OCwgMjMwNTIsIDIzMDU2LCAyMzA2MCwgMjMwNjQsIDIzMDY4LCAyMzA3MiwgMjMwNzYsIDIzMDgwLCAKLSAgICAyMzA4NCwgMjMwODgsIDIzMDkyLCAyMzA5NiwgMjMxMDAsIDIzMTA0LCAyMzEwOCwgMjMxMTIsIDIzMTE2LCAyMzEyMCwgCi0gICAgMjMxMjQsIDIzMTI4LCAyMzEzMiwgMjMxMzYsIDIzMTM5LCAyMzE0MywgMjMxNDcsIDIzMTUxLCAyMzE1NSwgMjMxNTksIDAsIAotICAgIDAsIDIzMTYzLCAyMzE2OCwgMjMxNzMsIDIzMTc4LCAyMzE4MywgMjMxODgsIDAsIDAsIDIzMTkzLCAyMzE5NywgMjMyMDAsIAotICAgIDIzMjA0LCAyMzIwNywgMjMyMTEsIDIzMjE0LCAyMzIxOCwgMjMyMjQsIDIzMjI5LCAyMzIzMywgMjMyMzYsIDIzMjQwLCAKLSAgICAyMzI0NCwgMjMyNDksIDIzMjUzLCAyMzI1OCwgMjMyNjIsIDIzMjY3LCAyMzI3MSwgMjMyNzYsIDIzMjgwLCAyMzI4NSwgCi0gICAgMjMyOTEsIDIzMjk1LCAyMzMwMCwgMjMzMDQsIDIzMzA5LCAyMzMxNSwgMjMzMTksIDIzMzI1LCAyMzMzMSwgMjMzMzUsIAotICAgIDIzMzQwLCAyMzM0OCwgMjMzNTYsIDIzMzYzLCAyMzM2OCwgMjMzNzMsIDIzMzgyLCAyMzM4OCwgMjMzOTYsIDIzNDAxLCAKLSAgICAyMzQwNywgMjM0MTEsIDIzNDE1LCAyMzQxOSwgMjM0MjMsIDIzNDI3LCAyMzQzMSwgMjM0MzUsIDIzNDM5LCAyMzQ0MywgCi0gICAgMjM0NDcsIDIzNDUzLCAyMzQ1OCwgMjM0NjMsIDIzNDY2LCAyMzQ3MCwgMjM0NzQsIDIzNDc5LCAyMzQ4MywgMjM0ODgsIAotICAgIDIzNDkyLCAyMzQ5NywgMjM1MDEsIDIzNTA2LCAyMzUxMCwgMjM1MTUsIDIzNTE5LCAyMzUyNCwgMjM1MjgsIDIzNTMzLCAKLSAgICAyMzUzOSwgMjM1NDMsIDIzNTQ4LCAyMzU1MywgMjM1NTcsIDIzNTYxLCAyMzU2NSwgMjM1NjksIDIzNTcyLCAyMzU3NiwgCi0gICAgMjM1ODIsIDIzNTg3LCAyMzU5MiwgMjM1OTYsIDIzNjAwLCAyMzYwNCwgMjM2MDksIDIzNjEzLCAyMzYxOCwgMjM2MjIsIAotICAgIDIzNjI3LCAyMzYzMCwgMjM2MzQsIDIzNjM4LCAyMzY0MywgMjM2NDcsIDIzNjUyLCAyMzY1NiwgMjM2NjEsIDIzNjY3LCAKLSAgICAyMzY3MSwgMjM2NzUsIDIzNjc5LCAyMzY4MywgMjM2ODcsIDIzNjkxLCAyMzY5NSwgMjM2OTksIDIzNzAzLCAyMzcwNywgCi0gICAgMjM3MTEsIDIzNzE3LCAyMzcyMCwgMjM3MjQsIDIzNzI4LCAyMzczMywgMjM3MzcsIDIzNzQyLCAyMzc0NiwgMjM3NTEsIAotICAgIDIzNzU1LCAyMzc2MCwgMjM3NjQsIDIzNzY5LCAyMzc3MywgMjM3NzgsIDIzNzgyLCAyMzc4NywgMjM3OTMsIDIzNzk3LCAKLSAgICAyMzgwMSwgMjM4MDcsIDIzODEzLCAyMzgxOSwgMjM4MjUsIDIzODI5LCAyMzgzMywgMjM4MzcsIDIzODQxLCAyMzg0NSwgCi0gICAgMjM4NDksIDIzODU1LCAyMzg1OSwgMjM4NjMsIDIzODY3LCAyMzg3MiwgMjM4NzYsIDIzODgxLCAyMzg4NSwgMjM4OTAsIAotICAgIDIzODk0LCAyMzg5OSwgMjM5MDMsIDIzOTA4LCAyMzkxMiwgMjM5MTcsIDIzOTIxLCAyMzkyNiwgMjM5MzIsIDIzOTM2LCAKLSAgICAyMzk0MiwgMjM5NDYsIDIzOTUwLCAyMzk1NCwgMjM5NTgsIDIzOTYyLCAyMzk2NiwgMjM5NzIsIDIzOTc1LCAyMzk3OSwgCi0gICAgMjM5ODMsIDIzOTg4LCAyMzk5MiwgMjM5OTcsIDI0MDAxLCAyNDAwNiwgMjQwMTAsIDI0MDE1LCAyNDAxOSwgMjQwMjQsIAotICAgIDI0MDI4LCAyNDAzMywgMjQwMzcsIDI0MDQyLCAyNDA0OCwgMjQwNTIsIDI0MDU3LCAyNDA2MSwgMjQwNjcsIDI0MDczLCAKLSAgICAyNDA3NywgMjQwODEsIDI0MDg1LCAyNDA4OSwgMjQwOTMsIDI0MDk3LCAyNDEwMywgMjQxMDcsIDI0MTExLCAyNDExNSwgCi0gICAgMjQxMjAsIDI0MTI0LCAyNDEyOSwgMjQxMzMsIDI0MTM4LCAyNDE0NCwgMjQxNDgsIDI0MTUzLCAyNDE1NywgMjQxNjEsIAotICAgIDI0MTY1LCAyNDE2OSwgMjQxNzMsIDI0MTc3LCAyNDE4MSwgMjQxODcsIDI0MTkxLCAyNDE5NSwgMjQxOTksIDI0MjA0LCAKLSAgICAyNDIwOCwgMjQyMTMsIDI0MjE3LCAyNDIyMiwgMjQyMjYsIDI0MjMxLCAyNDIzNSwgMjQyNDAsIDI0MjQ0LCAyNDI0OSwgCi0gICAgMjQyNTMsIDI0MjU4LCAyNDI2MSwgMjQyNjUsIDI0MjY5LCAyNDI3MywgMjQyNzcsIDI0MjgxLCAyNDI4NSwgMjQyODksIAotICAgIDI0MjkzLCAyNDI5OSwgMjQzMDMsIDI0MzA3LCAyNDMxMSwgMjQzMTYsIDI0MzIwLCAyNDMyNSwgMjQzMjksIDI0MzM0LCAKLSAgICAyNDMzOCwgMjQzNDMsIDI0MzQ3LCAyNDM1MiwgMjQzNTYsIDI0MzYxLCAyNDM2NSwgMjQzNzAsIDI0Mzc2LCAyNDM3OSwgCi0gICAgMjQzODQsIDI0Mzg4LCAyNDM5MywgMjQzOTksIDI0NDA1LCAyNDQxMSwgMjQ0MTcsIDI0NDIzLCAyNDQyOSwgMjQ0MzUsIAotICAgIDI0NDM5LCAyNDQ0MywgMjQ0NDcsIDI0NDUxLCAyNDQ1NSwgMjQ0NTksIDI0NDYzLCAyNDQ2NywgMjQ0NzIsIDI0NDc2LCAKLSAgICAyNDQ4MSwgMjQ0ODUsIDI0NDkwLCAyNDQ5NCwgMjQ0OTksIDI0NTAzLCAyNDUwOCwgMjQ1MTIsIDI0NTE3LCAyNDUyMSwgCi0gICAgMjQ1MjYsIDI0NTMwLCAyNDUzNCwgMjQ1MzgsIDI0NTQyLCAyNDU0NiwgMjQ1NTAsIDI0NTU0LCAyNDU2MCwgMjQ1NjMsIAotICAgIDI0NTY3LCAyNDU3MSwgMjQ1NzYsIDI0NTgwLCAyNDU4NSwgMjQ1ODksIDI0NTk0LCAyNDU5OCwgMjQ2MDMsIDI0NjA3LCAKLSAgICAyNDYxMiwgMjQ2MTYsIDI0NjIxLCAyNDYyNSwgMjQ2MzAsIDI0NjM2LCAyNDY0MCwgMjQ2NDYsIDI0NjUxLCAyNDY1NywgCi0gICAgMjQ2NjEsIDI0NjY3LCAyNDY3MiwgMjQ2NzYsIDI0NjgwLCAyNDY4NCwgMjQ2ODgsIDI0NjkyLCAyNDY5NywgMjQ3MDEsIAotICAgIDI0NzA1LCAyNDcxMCwgMjQ3MTQsIDI0NzE5LCAyNDcyMiwgMjQ3MjYsIDI0NzMwLCAyNDczNCwgMjQ3MzgsIDI0NzQyLCAKLSAgICAyNDc0NiwgMjQ3NTAsIDI0NzU0LCAyNDc1OCwgMjQ3NjIsIDI0NzY2LCAyNDc3MSwgMjQ3NzUsIDI0Nzc5LCAyNDc4NSwgCi0gICAgMjQ3ODksIDI0Nzk1LCAyNDc5OSwgMjQ4MDUsIDI0ODA5LCAyNDgxMywgMjQ4MTcsIDI0ODIxLCAyNDgyNSwgMjQ4MzAsIAotICAgIDI0ODM0LCAyNDgzOCwgMjQ4NDIsIDI0ODQ2LCAyNDg1MCwgMjQ4NTQsIDI0ODU4LCAyNDg2MiwgMjQ4NjYsIDI0ODcwLCAKLSAgICAyNDg3NiwgMjQ4ODIsIDI0ODg4LCAyNDg5NCwgMjQ5MDAsIDI0OTA1LCAyNDkxMSwgMjQ5MTcsIDI0OTIzLCAyNDkyNywgCi0gICAgMjQ5MzEsIDI0OTM1LCAyNDkzOSwgMjQ5NDMsIDI0OTQ3LCAyNDk1MSwgMjQ5NTUsIDI0OTU5LCAyNDk2MywgMjQ5NjcsIAotICAgIDI0OTcxLCAyNDk3NSwgMjQ5ODAsIDI0OTg1LCAyNDk5MCwgMjQ5OTUsIDI0OTk5LCAyNTAwMywgMjUwMDcsIDI1MDExLCAKLSAgICAyNTAxNSwgMjUwMTksIDI1MDIzLCAyNTAyNywgMjUwMzEsIDI1MDM3LCAyNTA0MywgMjUwNDksIDI1MDU1LCAyNTA2MSwgCi0gICAgMjUwNjcsIDI1MDczLCAyNTA3OSwgMjUwODUsIDI1MDg5LCAyNTA5MywgMjUwOTcsIDI1MTAxLCAyNTEwNSwgMjUxMDksIAotICAgIDI1MTEzLCAyNTExOSwgMjUxMjUsIDI1MTMxLCAyNTEzNywgMjUxNDMsIDI1MTQ5LCAyNTE1NSwgMjUxNjEsIDI1MTY3LCAKLSAgICAyNTE3MiwgMjUxNzcsIDI1MTgyLCAyNTE4NywgMjUxOTMsIDI1MTk5LCAyNTIwNSwgMjUyMTEsIDI1MjE3LCAyNTIyMywgCi0gICAgMjUyMjksIDI1MjM1LCAyNTI0MSwgMjUyNDcsIDI1MjUzLCAyNTI1OCwgMjUyNjQsIDI1MjcwLCAyNTI3NiwgMjUyODEsIAotICAgIDI1Mjg2LCAyNTI5MSwgMjUyOTYsIDI1MzAxLCAyNTMwNiwgMjUzMTEsIDI1MzE2LCAyNTMyMSwgMjUzMjYsIDI1MzMxLCAKLSAgICAyNTMzNiwgMjUzNDEsIDI1MzQ2LCAyNTM1MSwgMjUzNTYsIDI1MzYxLCAyNTM2NiwgMjUzNzEsIDI1Mzc2LCAyNTM4MSwgCi0gICAgMjUzODYsIDI1MzkxLCAyNTM5NiwgMjU0MDEsIDI1NDA2LCAyNTQxMSwgMjU0MTYsIDI1NDIxLCAyNTQyNiwgMjU0MzEsIAotICAgIDI1NDM2LCAyNTQ0MSwgMjU0NDYsIDI1NDUxLCAyNTQ1NiwgMjU0NjEsIDI1NDY2LCAyNTQ3MSwgMjU0NzYsIDI1NDgxLCAKLSAgICAyNTQ4NiwgMjU0OTAsIDI1NDk1LCAyNTUwMCwgMjU1MDUsIDI1NTEwLCAyNTUxNSwgMjU1MjAsIDI1NTI1LCAyNTUzMCwgCi0gICAgMjU1MzUsIDI1NTQwLCAyNTU0NSwgMjU1NTAsIDI1NTU1LCAyNTU2MCwgMjU1NjUsIDI1NTcwLCAyNTU3NSwgMjU1ODAsIAotICAgIDI1NTg1LCAyNTU5MCwgMjU1OTUsIDI1NjAwLCAyNTYwNSwgMjU2MTAsIDI1NjE1LCAyNTYyMCwgMjU2MjUsIDI1NjMwLCAKLSAgICAyNTYzNSwgMjU2NDAsIDI1NjQ1LCAyNTY0OSwgMjU2NTQsIDI1NjU5LCAyNTY2NCwgMjU2NjksIDI1Njc0LCAyNTY3OCwgCi0gICAgMjU2ODMsIDI1Njg5LCAyNTY5NCwgMjU2OTksIDI1NzA0LCAyNTcwOSwgMjU3MTUsIDI1NzIwLCAyNTcyNSwgMjU3MzAsIAotICAgIDI1NzM1LCAyNTc0MCwgMjU3NDUsIDI1NzUwLCAyNTc1NSwgMjU3NjAsIDI1NzY1LCAyNTc3MCwgMjU3NzUsIDI1NzgwLCAKLSAgICAyNTc4NSwgMjU3OTAsIDI1Nzk1LCAyNTgwMCwgMjU4MDUsIDI1ODEwLCAyNTgxNSwgMjU4MjAsIDI1ODI1LCAyNTgzMCwgCi0gICAgMjU4MzUsIDI1ODQwLCAyNTg0NSwgMjU4NTAsIDI1ODU1LCAyNTg2MCwgMjU4NjUsIDI1ODcwLCAyNTg3NSwgMjU4ODAsIAotICAgIDI1ODg1LCAyNTg5MCwgMjU4OTUsIDI1OTAwLCAyNTkwNSwgMjU5MTAsIDI1OTE1LCAyNTkyMCwgMjU5MjUsIDI1OTMwLCAKLSAgICAyNTkzNSwgMjU5NDEsIDI1OTQ2LCAyNTk1MSwgMjU5NTYsIDI1OTYxLCAyNTk2NiwgMjU5NzEsIDI1OTc2LCAyNTk4MSwgCi0gICAgMjU5ODYsIDI1OTkxLCAyNTk5NiwgMjYwMDEsIDI2MDA2LCAyNjAxMSwgMjYwMTYsIDI2MDIxLCAyNjAyNiwgMjYwMzEsIAotICAgIDI2MDM2LCAyNjA0MSwgMjYwNDYsIDI2MDUxLCAyNjA1NiwgMjYwNjEsIDI2MDY2LCAyNjA3MSwgMjYwNzYsIDI2MDgxLCAKLSAgICAyNjA4NiwgMjYwOTEsIDI2MDk2LCAyNjEwMSwgMjYxMDYsIDI2MTExLCAyNjExNiwgMjYxMjEsIDI2MTI2LCAyNjEzMSwgCi0gICAgMjYxMzcsIDI2MTQxLCAyNjE0NSwgMjYxNDksIDI2MTUzLCAyNjE1NywgMjYxNjEsIDI2MTY1LCAyNjE2OSwgMjYxNzUsIAotICAgIDI2MTgxLCAyNjE4NywgMjYxOTMsIDI2MTk5LCAyNjIwNSwgMjYyMTEsIDI2MjE4LCAyNjIyNCwgMjYyMjksIDI2MjM0LCAKLSAgICAyNjIzOSwgMjYyNDQsIDI2MjQ5LCAyNjI1NCwgMjYyNTksIDI2MjY0LCAyNjI2OSwgMjYyNzQsIDI2Mjc5LCAyNjI4NCwgCi0gICAgMjYyODksIDI2Mjk0LCAyNjI5OSwgMjYzMDQsIDI2MzA5LCAyNjMxNCwgMjYzMTksIDI2MzI0LCAyNjMyOSwgMjYzMzQsIAotICAgIDI2MzM5LCAyNjM0NCwgMjYzNDksIDI2MzU0LCAyNjM1OSwgMjYzNjQsIDAsIDAsIDAsIDI2MzcxLCAyNjM4MSwgMjYzODUsIAotICAgIDI2MzkyLCAyNjM5NiwgMjY0MDAsIDI2NDA0LCAyNjQxMiwgMjY0MTYsIDI2NDIxLCAyNjQyNiwgMjY0MzEsIDI2NDM1LCAKLSAgICAyNjQ0MCwgMjY0NDUsIDI2NDQ4LCAyNjQ1MiwgMjY0NTYsIDI2NDY1LCAyNjQ2OSwgMjY0NzMsIDI2NDc5LCAyNjQ4MywgCi0gICAgMjY0ODcsIDI2NDk1LCAyNjQ5OSwgMjY1MDcsIDI2NTEzLCAyNjUxOSwgMjY1MjUsIDI2NTMxLCAyNjU0MSwgMjY1NDcsIAotICAgIDI2NTUxLCAyNjU2MCwgMjY1NjMsIDI2NTY5LCAyNjU3MywgMjY1NzksIDI2NTg0LCAyNjU5MCwgMjY1OTgsIDI2NjA0LCAKLSAgICAyNjYwOSwgMjY2MTYsIDI2NjIxLCAyNjYyNSwgMjY2MjksIDI2NjM5LCAyNjY0NSwgMjY2NDksIDI2NjU5LCAyNjY2NSwgCi0gICAgMjY2NjksIDI2NjczLCAyNjY4MCwgMjY2ODgsIDI2Njk0LCAyNjcwMCwgMjY3MDksIDI2NzEzLCAyNjcxNywgMjY3MjEsIAotICAgIDI2NzI5LCAyNjczNiwgMjY3NDAsIDI2NzQ0LCAyNjc0OCwgMjY3NTIsIDI2NzU2LCAyNjc2MCwgMjY3NjQsIDI2NzY4LCAKLSAgICAyNjc3MiwgMjY3NzYsIDI2NzgwLCAyNjc4NSwgMjY3OTAsIDI2Nzk1LCAyNjc5OSwgMjY4MDMsIDI2ODA3LCAyNjgxMSwgCi0gICAgMjY4MTUsIDI2ODE5LCAyNjgyNywgMjY4MzUsIDI2ODQzLCAyNjg1MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjY4NTksIAotICAgIDI2ODYzLCAyNjg2NywgMjY4NzEsIDI2ODc1LCAyNjg4MCwgMjY4ODUsIDI2ODkwLCAyNjg5NSwgMjY5MDAsIDI2OTA0LCAKLSAgICAyNjkwOSwgMjY5MTMsIDAsIDI2OTE3LCAyNjkyMiwgMjY5MjcsIDI2OTMyLCAyNjkzNiwgMjY5NDEsIDI2OTQ2LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjk1MSwgMjY5NTUsIDI2OTU5LCAyNjk2MywgMjY5NjcsIDI2OTcyLCAKLSAgICAyNjk3NywgMjY5ODIsIDI2OTg3LCAyNjk5MiwgMjY5OTYsIDI3MDAxLCAyNzAwNSwgMjcwMDksIDI3MDE0LCAyNzAxOSwgCi0gICAgMjcwMjQsIDI3MDI5LCAyNzAzMywgMjcwMzgsIDI3MDQzLCAyNzA0OCwgMjcwNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDI3MDU5LCAyNzA2MywgMjcwNjcsIDI3MDcxLCAyNzA3NSwgMjcwODAsIDI3MDg1LCAyNzA5MCwgMjcwOTUsIDI3MTAwLCAKLSAgICAyNzEwNCwgMjcxMDksIDI3MTEzLCAyNzExNywgMjcxMjIsIDI3MTI3LCAyNzEzMiwgMjcxMzcsIDI3MTQxLCAyNzE0NiwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcxNTEsIDI3MTU1LCAyNzE1OSwgMjcxNjMsIDI3MTY3LCAKLSAgICAyNzE3MiwgMjcxNzcsIDI3MTgyLCAyNzE4NywgMjcxOTIsIDI3MTk2LCAyNzIwMSwgMjcyMDUsIDAsIDI3MjA5LCAyNzIxNCwgCi0gICAgMjcyMTksIDAsIDI3MjI0LCAyNzIyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcyMzQsIDI3MjM3LCAKLSAgICAyNzI0MSwgMjcyNDUsIDI3MjQ5LCAyNzI1MywgMjcyNTcsIDI3MjYxLCAyNzI2NSwgMjcyNjksIDI3MjczLCAyNzI3NywgCi0gICAgMjcyODEsIDI3Mjg1LCAyNzI4OSwgMjcyOTMsIDI3Mjk3LCAyNzMwMSwgMjczMDQsIDI3MzA4LCAyNzMxMiwgMjczMTYsIAotICAgIDI3MzIwLCAyNzMyNCwgMjczMjgsIDI3MzMyLCAyNzMzNiwgMjczNDAsIDI3MzQ0LCAyNzM0OCwgMjczNTIsIDI3MzU2LCAKLSAgICAyNzM2MCwgMjczNjMsIDI3MzY3LCAyNzM3MSwgMjczNzcsIDI3MzgzLCAyNzM4OSwgMjczOTUsIDI3NDAxLCAyNzQwNywgCi0gICAgMjc0MTMsIDI3NDE5LCAyNzQyNSwgMjc0MzEsIDI3NDM3LCAyNzQ0MywgMjc0NDksIDI3NDU1LCAyNzQ2NCwgMjc0NzMsIAotICAgIDI3NDc5LCAyNzQ4NSwgMjc0OTEsIDI3NDk2LCAyNzUwMCwgMjc1MDUsIDI3NTEwLCAyNzUxNSwgMjc1MTksIDI3NTI0LCAKLSAgICAyNzUyOSwgMjc1MzQsIDI3NTM4LCAyNzU0MywgMjc1NDcsIDI3NTUyLCAyNzU1NywgMjc1NjIsIDI3NTY3LCAyNzU3MSwgCi0gICAgMjc1NzUsIDI3NTc5LCAyNzU4MywgMjc1ODcsIDI3NTkxLCAyNzU5NSwgMjc1OTksIDI3NjAzLCAyNzYwNywgMjc2MTMsIAotICAgIDI3NjE3LCAyNzYyMSwgMjc2MjUsIDI3NjI5LCAyNzYzMywgMjc2NDEsIDI3NjQ3LCAyNzY1MSwgMjc2NTcsIDI3NjYxLCAKLSAgICAyNzY2NywgMjc2NzEsIDAsIDAsIDI3Njc1LCAyNzY3OSwgMjc2ODIsIDI3Njg1LCAyNzY4OCwgMjc2OTEsIDI3Njk0LCAKLSAgICAyNzY5NywgMjc3MDEsIDI3NzA0LCAwLCAwLCAwLCAwLCAwLCAwLCAyNzcwOCwgMjc3MTYsIDI3NzI0LCAyNzczMiwgMjc3NDAsIAotICAgIDI3NzQ4LCAyNzc1NiwgMjc3NjQsIDI3NzcyLCAyNzc4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMjc3ODgsIDI3NzkxLCAyNzc5NCwgCi0gICAgMjc3OTcsIDI3ODAyLCAyNzgwNSwgMjc4MTAsIDI3ODE3LCAyNzgyNSwgMjc4MzAsIDI3ODM3LCAyNzg0MCwgMjc4NDcsIAotICAgIDI3ODU0LCAyNzg2MSwgMCwgMjc4NjUsIDI3ODY5LCAyNzg3MiwgMjc4NzUsIDI3ODc4LCAyNzg4MSwgMjc4ODQsIDI3ODg3LCAKLSAgICAyNzg5MSwgMjc4OTQsIDAsIDAsIDAsIDAsIDAsIDAsIDI3ODk4LCAyNzkwMSwgMjc5MDQsIDI3OTA3LCAyNzkxMCwgMjc5MTMsIAotICAgIDI3OTE3LCAyNzkyMSwgMjc5MjUsIDI3OTI5LCAyNzkzMywgMjc5MzcsIDI3OTQwLCAyNzk0NCwgMjc5NDgsIDI3OTUxLCAKLSAgICAyNzk1NSwgMjc5NTksIDI3OTYzLCAyNzk2NywgMjc5NzEsIDI3OTc1LCAyNzk3OSwgMjc5ODIsIDI3OTg2LCAyNzk5MCwgCi0gICAgMjc5OTQsIDI3OTk3LCAyODAwMSwgMjgwMDUsIDI4MDA5LCAyODAxMywgMjgwMTcsIDI4MDIxLCAyODAyNSwgMjgwMjksIAotICAgIDI4MDM2LCAyODA0MSwgMjgwNDYsIDI4MDUxLCAyODA1NiwgMjgwNjIsIDI4MDY4LCAyODA3NCwgMjgwODAsIDI4MDg1LCAKLSAgICAyODA5MSwgMjgwOTcsIDI4MTAyLCAyODEwOCwgMjgxMTQsIDI4MTIwLCAyODEyNiwgMjgxMzIsIDI4MTM3LCAyODE0MywgCi0gICAgMjgxNDgsIDI4MTU0LCAyODE2MCwgMjgxNjYsIDI4MTcyLCAyODE3OCwgMjgxODMsIDI4MTg4LCAyODE5NCwgMjgyMDAsIAotICAgIDI4MjA1LCAyODIxMSwgMjgyMTYsIDI4MjIyLCAyODIyNywgMjgyMzIsIDI4MjM4LCAyODI0NCwgMjgyNTAsIDI4MjU2LCAKLSAgICAyODI2MiwgMjgyNjgsIDI4Mjc0LCAyODI4MCwgMjgyODYsIDI4MjkyLCAyODI5OCwgMjgzMDQsIDI4MzA5LCAyODMxNCwgCi0gICAgMjgzMjAsIDI4MzI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyODMzMiwgMjgzNDEsIDI4MzUwLCAyODM1OCwgMjgzNjYsIAotICAgIDI4Mzc2LCAyODM4NCwgMjgzOTMsIDI4NDAwLCAyODQwNywgMjg0MTQsIDI4NDIyLCAyODQzMCwgMjg0MzgsIDI4NDQ2LCAKLSAgICAyODQ1NCwgMjg0NjIsIDI4NDcwLCAyODQ3OCwgMjg0ODUsIDI4NDkzLCAyODUwMSwgMjg1MDksIDI4NTE3LCAyODUyNSwgCi0gICAgMjg1MzUsIDI4NTQ1LCAyODU1NSwgMjg1NjUsIDI4NTc1LCAyODU4NSwgMjg1OTUsIDI4NjA1LCAyODYxNSwgMjg2MjUsIAotICAgIDI4NjM1LCAyODY0NSwgMjg2NTUsIDI4NjY1LCAyODY3MywgMjg2ODEsIDI4NjkxLCAyODY5OSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMjg3MDksIDI4NzEzLCAyODcxNywgMjg3MjEsIDI4NzI1LCAyODcyOSwgMjg3MzMsIDI4NzM3LCAyODc0MSwgMjg3NDUsIAotICAgIDI4NzQ5LCAyODc1MywgMjg3NTcsIDI4NzYxLCAyODc2NSwgMjg3NjksIDI4NzczLCAyODc3NywgMjg3ODEsIDI4Nzg1LCAKLSAgICAyODc4OSwgMjg3OTMsIDI4Nzk3LCAyODgwMSwgMjg4MDcsIDI4ODExLCAyODgxNywgMjg4MjEsIDI4ODI3LCAyODgzMSwgCi0gICAgMjg4MzcsIDI4ODQxLCAyODg0NSwgMjg4NDksIDI4ODUzLCAyODg1NywgMjg4NjEsIDI4ODY3LCAyODg3MywgMjg4NzksIAotICAgIDI4ODg1LCAyODg5MSwgMjg4OTcsIDI4OTAyLCAyODkwOCwgMjg5MTQsIDI4OTIwLCAyODkyNiwgMjg5MzMsIDI4OTM5LCAKLSAgICAyODk0NCwgMjg5NDksIDI4OTUzLCAyODk1NywgMjg5NjEsIDI4OTY1LCAyODk2OSwgMjg5NzMsIDI4OTc3LCAyODk4MywgCi0gICAgMjg5ODksIDI4OTk1LCAyOTAwMCwgMjkwMDcsIDI5MDEyLCAyOTAxNywgMjkwMjMsIDI5MDI4LCAyOTAzNSwgMjkwNDIsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI5MDQ4LCAyOTA1NCwgMjkwNTgsIDI5MDYzLCAyOTA2OCwgMjkwNzMsIAotICAgIDI5MDc4LCAyOTA4MywgMjkwODgsIDI5MDkzLCAyOTA5OCwgMjkxMDMsIDI5MTA4LCAyOTExMywgMjkxMTgsIDI5MTIzLCAKLSAgICAyOTEyOCwgMjkxMzIsIDI5MTM3LCAyOTE0MiwgMjkxNDcsIDI5MTUxLCAyOTE1NSwgMjkxNjAsIDI5MTY1LCAyOTE3MCwgCi0gICAgMjkxNzUsIDI5MTgwLCAyOTE4NSwgMjkxODksIDI5MTk0LCAwLCAyOTE5OSwgMjkyMDQsIDI5MjA5LCAyOTIxNCwgMjkyMjAsIAotICAgIDI5MjI2LCAyOTIzMiwgMjkyMzgsIDI5MjQzLCAyOTI0OCwgMjkyNTQsIDI5MjYxLCAwLCAwLCAwLCAwLCAyOTI2OCwgCi0gICAgMjkyNzMsIDI5Mjc5LCAyOTI4NSwgMjkyOTEsIDI5Mjk3LCAyOTMwMiwgMjkzMDcsIDI5MzEzLCAyOTMxOSwgMjkzMjQsIAotICAgIDI5MzI5LCAwLCAwLCAwLCAwLCAyOTMzNCwgMCwgMCwgMCwgMjkzMzksIDI5MzQ0LCAyOTM0OSwgMjkzNTQsIDI5MzU4LCAKLSAgICAyOTM2MiwgMjkzNjYsIDI5MzcwLCAyOTM3NCwgMjkzNzgsIDI5MzgzLCAyOTM4NywgMjkzOTIsIDI5Mzk3LCAyOTQwMywgCi0gICAgMjk0MDksIDI5NDE1LCAyOTQyMSwgMjk0MjYsIDI5NDMyLCAyOTQzOCwgMjk0NDQsIDI5NDQ5LCAyOTQ1NSwgMjk0NjAsIAotICAgIDI5NDY2LCAyOTQ3MiwgMjk0NzcsIDI5NDgzLCAyOTQ4OSwgMjk0OTUsIDI5NTAxLCAyOTUwNiwgMjk1MTEsIDI5NTE3LCAKLSAgICAyOTUyMywgMjk1MjgsIDI5NTM0LCAyOTUzOSwgMjk1NDUsIDI5NTUwLCAyOTU1NiwgMCwgMCwgMjk1NjIsIDI5NTY4LCAKLSAgICAyOTU3NCwgMjk1ODAsIDI5NTg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyOTU5MiwgMjk2MDEsIAotICAgIDI5NjEwLCAyOTYxOCwgMjk2MjcsIDI5NjM2LCAyOTY0NCwgMjk2NTMsIDI5NjYyLCAyOTY3MSwgMjk2ODAsIDI5Njg4LCAKLSAgICAyOTY5NywgMjk3MDYsIDI5NzE0LCAyOTcyMywgMjk3MzIsIDI5NzQxLCAyOTc1MCwgMjk3NTksIDI5NzY4LCAyOTc3NiwgCi0gICAgMjk3ODUsIDI5NzkzLCAyOTgwMSwgMjk4MTAsIDI5ODE4LCAyOTgyNywgMjk4MzYsIDI5ODQ1LCAyOTg1NCwgMjk4NjMsIAotICAgIDI5ODcyLCAyOTg4MCwgMjk4ODksIDI5ODk4LCAyOTkwNiwgMjk5MTUsIDI5OTI0LCAyOTkzMywgMjk5NDIsIDI5OTUxLCAKLSAgICAyOTk2MCwgMjk5NjksIDAsIDAsIDAsIDAsIDI5OTc4LCAyOTk4OCwgMjk5OTcsIDMwMDA2LCAzMDAxNCwgMzAwMjMsIAotICAgIDMwMDMxLCAzMDA0MCwgMzAwNDgsIDMwMDU3LCAzMDA2NiwgMzAwNzUsIDMwMDg0LCAzMDA5MywgMzAxMDIsIDMwMTExLCAKLSAgICAzMDEyMCwgMzAxMjksIDMwMTM4LCAzMDE0NywgMzAxNTYsIDMwMTY1LCAzMDE3NCwgMzAxODMsIDMwMTkyLCAzMDIwMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMzAyMDgsIDMwMjE2LCAzMDIyMywgMzAyMzAsIDMwMjM3LCAzMDI0NCwgMzAyNTEsIDMwMjU4LCAKLSAgICAzMDI2NiwgMzAyNzMsIDMwMjgxLCAwLCAwLCAwLCAzMDI4OSwgMzAyOTcsIDMwMzA1LCAzMDMwOSwgMzAzMTUsIDMwMzIxLCAKLSAgICAzMDMyNywgMzAzMzMsIDMwMzM5LCAzMDM0NSwgMzAzNTEsIDMwMzU3LCAzMDM2MywgMzAzNjksIDMwMzc1LCAzMDM4MSwgCi0gICAgMzAzODcsIDMwMzkzLCAzMDM5OSwgMzA0MDMsIDMwNDA5LCAzMDQxNSwgMzA0MjEsIDMwNDI3LCAzMDQzMywgMzA0MzksIAotICAgIDMwNDQ1LCAzMDQ1MSwgMzA0NTcsIDMwNDYzLCAzMDQ2OSwgMzA0NzUsIDMwNDgxLCAzMDQ4NywgMzA0OTMsIDMwNDk3LCAKLSAgICAzMDUwMiwgMzA1MDcsIDMwNTEyLCAzMDUxNiwgMzA1MjEsIDMwNTI1LCAzMDUzMCwgMzA1MzUsIDMwNTQwLCAzMDU0NSwgCi0gICAgMzA1NTAsIDMwNTU1LCAzMDU2MCwgMzA1NjUsIDMwNTcwLCAzMDU3NCwgMzA1NzksIDMwNTg0LCAzMDU4OSwgMzA1OTQsIAotICAgIDMwNTk4LCAzMDYwMiwgMzA2MDcsIDMwNjEyLCAzMDYxNywgMzA2MjIsIDAsIDAsIDMwNjI4LCAzMDYzMiwgMzA2MzksIAotICAgIDMwNjQ0LCAzMDY1MCwgMzA2NTYsIDMwNjYxLCAzMDY2NywgMzA2NzMsIDMwNjc4LCAzMDY4NCwgMzA2OTAsIDMwNjk2LCAKLSAgICAzMDcwMiwgMzA3MDgsIDMwNzEzLCAzMDcxOCwgMzA3MjQsIDMwNzI5LCAzMDczNSwgMzA3NDAsIDMwNzQ2LCAzMDc1MiwgCi0gICAgMzA3NTgsIDMwNzY0LCAzMDc2OSwgMzA3NzQsIDMwNzc5LCAzMDc4NSwgMzA3OTEsIDMwNzk2LCAzMDgwMiwgMzA4MDgsIAotICAgIDMwODEyLCAzMDgxNywgMzA4MjIsIDMwODI3LCAzMDgzMiwgMzA4MzcsIDMwODQyLCAzMDg0NywgMzA4NTMsIDMwODU5LCAKLSAgICAzMDg2NSwgMzA4NzAsIDMwODc1LCAzMDg3OSwgMzA4ODQsIDMwODg4LCAzMDg5MywgMzA4OTcsIDMwOTAyLCAzMDkwNywgCi0gICAgMzA5MTIsIDMwOTE3LCAzMDkyNCwgMzA5MzEsIDMwOTM4LCAzMDk0OCwgMzA5NTcsIDMwOTY0LCAzMDk3MCwgMzA5ODEsIAotICAgIDMwOTg2LCAzMDk5MiwgMCwgMzA5OTgsIDMxMDAzLCAzMTAwOCwgMzEwMTYsIDMxMDIyLCAzMTAzMCwgMzEwMzUsIDMxMDQxLCAKLSAgICAzMTA0NywgMzEwNTMsIDMxMDU4LCAzMTA2NCwgMzEwNjksIDMxMDc2LCAzMTA4MiwgMzEwODcsIDMxMDkzLCAzMTA5OSwgCi0gICAgMzExMDUsIDMxMTEyLCAzMTExOSwgMzExMjYsIDMxMTMxLCAzMTEzNiwgMzExNDMsIDMxMTUwLCAzMTE1NywgMzExNjQsIAotICAgIDMxMTcxLCAwLCAwLCAzMTE3OCwgMzExODUsIDMxMTkyLCAzMTE5OCwgMzEyMDQsIDMxMjEwLCAzMTIxNiwgMzEyMjIsIAotICAgIDMxMjI4LCAzMTIzNSwgMzEyNDEsIDAsIDAsIDAsIDAsIDAsIDAsIDMxMjQ4LCAzMTI1NCwgMzEyNTksIDMxMjY0LCAzMTI2OSwgCi0gICAgMzEyNzQsIDMxMjc5LCAzMTI4NCwgMzEyOTAsIDMxMjk1LCAwLCAwLCAwLCAwLCAwLCAwLCAzMTMwMSwgMzEzMDYsIDMxMzExLCAKLSAgICAzMTMxNiwgMzEzMjEsIDMxMzI2LCAzMTMzMSwgMzEzNDAsIDMxMzQ3LCAzMTM1MiwgMzEzNTcsIDMxMzYyLCAzMTM2NywgCi0gICAgMzEzNzIsIDAsIDAsIDMxMzc3LCAzMTM4NCwgMzEzODcsIDMxMzkwLCAzMTM5MywgMzEzOTgsIDMxNDAyLCAzMTQwOCwgCi0gICAgMzE0MTIsIDMxNDE3LCAzMTQyNCwgMzE0MzIsIDMxNDM2LCAzMTQ0MSwgMzE0NDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM0MDgwLCAzNDA4OCwgMzQwOTYsIDM0MTA0LCAKKyAgICAzNDExMiwgMzQxMjIsIDM0MTMyLCAzNDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzQxNTIsIDM0MTU3LCAzNDE2MiwgCisgICAgMzQxNjcsIDM0MTcyLCAzNDE4MSwgMzQxOTIsIDM0MjAxLCAzNDIxMiwgMzQyMTgsIDM0MjMxLCAzNDIzNywgMzQyNDQsIAorICAgIDM0MjUxLCAzNDI1NiwgMzQyNjIsIDM0MjY4LCAzNDI3OSwgMzQyODgsIDM0Mjk1LCAzNDMwMiwgMzQzMTEsIDM0MzE4LCAKKyAgICAzNDMyNywgMzQzMzcsIDM0MzQ3LCAzNDM1NCwgMzQzNjEsIDM0MzY4LCAzNDM3OCwgMzQzODMsIDM0MzkxLCAzNDM5NywgCisgICAgMzQ0MDUsIDM0NDE0LCAzNDQxOSwgMzQ0MjYsIDM0NDMyLCAzNDQzNywgMCwgMzQ0NDIsIDM0NDQ4LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAzNDQ1NSwgMzQ0NjAsIDM0NDY2LCAzNDQ3MywgMzQ0ODEsIDM0NDg3LCAzNDQ5MywgMzQ0OTksIDM0NTA0LCAzNDUxMSwgCisgICAgMzQ1MTcsIDM0NTIzLCAzNDUyOSwgMzQ1MzcsIDM0NTQzLCAzNDU1MSwgMzQ1NTYsIDM0NTYyLCAzNDU2OCwgMzQ1NzUsIAorICAgIDM0NTgzLCAzNDU5MCwgMzQ1OTYsIDM0NjAzLCAzNDYxMCwgMzQ2MTYsIDM0NjIzLCAzNDYzMCwgMzQ2MzYsIDM0NjQxLCAKKyAgICAzNDY0NywgMzQ2NTUsIDM0NjY0LCAzNDY3MCwgMzQ2NzYsIDM0NjgyLCAzNDY4OCwgMzQ2OTYsIDM0NzAwLCAzNDcwNiwgCisgICAgMzQ3MTIsIDM0NzE4LCAzNDcyNCwgMzQ3MzAsIDM0NzM2LCAzNDc0MCwgMzQ3NDUsIDM0NzUwLCAzNDc1NywgMzQ3NjIsIAorICAgIDM0NzY2LCAzNDc3MiwgMzQ3NzcsIDM0NzgyLCAzNDc4NiwgMzQ3OTEsIDM0Nzk2LCAzNDgwMCwgMzQ4MDUsIDM0ODEwLCAKKyAgICAzNDgxNywgMzQ4MjEsIDM0ODI2LCAzNDgzMSwgMzQ4MzUsIDM0ODQwLCAzNDg0NCwgMzQ4NDksIDM0ODUzLCAzNDg1OSwgCisgICAgMzQ4NjQsIDM0ODcxLCAzNDg3NiwgMzQ4ODEsIDM0ODg1LCAzNDg5MCwgMzQ4OTUsIDM0OTAyLCAzNDkwNywgMzQ5MTMsIAorICAgIDM0OTE4LCAzNDkyMywgMzQ5MjgsIDM0OTMyLCAzNDkzNywgMzQ5NDQsIDM0OTUxLCAzNDk1NiwgMzQ5NjEsIDM0OTY1LCAKKyAgICAzNDk3MSwgMzQ5NzgsIDM0OTgzLCAzNDk4OCwgMzQ5OTMsIDM0OTk5LCAzNTAwNCwgMzUwMTAsIDM1MDE1LCAzNTAyMSwgCisgICAgMzUwMjcsIDM1MDMzLCAzNTA0MCwgMzUwNDcsIDM1MDU0LCAzNTA2MSwgMzUwNjgsIDM1MDc1LCAzNTA4MCwgMzUwODgsIAorICAgIDM1MDk3LCAzNTEwNiwgMzUxMTUsIDM1MTI0LCAzNTEzMywgMzUxNDIsIDM1MTU0LCAzNTE2MywgMzUxNzIsIDM1MTgxLCAKKyAgICAzNTE4OCwgMzUxOTMsIDM1MjAwLCAzNTIwOCwgMzUyMTYsIDM1MjIzLCAzNTIzMCwgMzUyMzcsIDM1MjQ0LCAzNTI1MiwgCisgICAgMzUyNjEsIDM1MjcwLCAzNTI3OSwgMzUyODgsIDM1Mjk3LCAzNTMwNiwgMzUzMTUsIDM1MzI0LCAzNTMzMywgMzUzNDIsIAorICAgIDM1MzUxLCAzNTM2MCwgMzUzNjksIDM1Mzc4LCAzNTM4NiwgMzUzOTUsIDM1NDA2LCAzNTQxNCwgMzU0MjMsIDM1NDM0LCAKKyAgICAzNTQ0MywgMzU0NTIsIDM1NDYxLCAzNTQ3MCwgMzU0NzgsIDM1NDg3LCAzNTQ5NCwgMzU0OTksIDM1NTA3LCAzNTUxMiwgCisgICAgMzU1MTksIDM1NTI0LCAzNTUzMywgMzU1MzksIDM1NTQ2LCAzNTU1MywgMzU1NTgsIDM1NTYzLCAzNTU3MSwgMzU1NzksIAorICAgIDM1NTg4LCAzNTU5NywgMzU2MDIsIDM1NjA5LCAzNTYyMCwgMzU2MjgsIDM1NjM3LCAzNTY0MywgMzU2NDksIDM1NjU0LCAKKyAgICAzNTY2MSwgMzU2NjYsIDM1Njc1LCAzNTY4MCwgMzU2ODUsIDM1NjkwLCAzNTY5NywgMzU3MDQsIDM1NzA5LCAzNTcxOCwgCisgICAgMzU3MjYsIDM1NzMxLCAzNTczNiwgMzU3NDMsIDM1NzUwLCAzNTc1NCwgMzU3NTgsIDM1NzYxLCAzNTc2NCwgMzU3NjcsIAorICAgIDM1NzcwLCAzNTc3MywgMzU3NzYsIDM1NzgzLCAzNTc4NiwgMzU3ODksIDM1Nzk0LCAzNTc5OCwgMzU4MDIsIDM1ODA2LCAKKyAgICAzNTgxMCwgMzU4MTQsIDM1ODIzLCAzNTgyOSwgMzU4MzUsIDM1ODQxLCAzNTg0OSwgMzU4NTcsIDM1ODYzLCAzNTg2OSwgCisgICAgMzU4NzYsIDM1ODgyLCAzNTg4NywgMzU4OTMsIDM1OTAwLCAzNTkwNiwgMzU5MTMsIDM1OTE5LCAzNTkyNywgMzU5MzMsIAorICAgIDM1OTQwLCAzNTk0NiwgMzU5NTIsIDM1OTU4LCAzNTk2NCwgMzU5NzAsIDM1OTc2LCAzNTk4NywgMzU5OTcsIDM2MDAzLCAKKyAgICAzNjAwOSwgMzYwMTksIDM2MDI1LCAzNjAzMywgMzYwNDEsIDM2MDQ5LCAwLCAwLCAwLCAwLCAwLCAzNjA1NCwgMzYwNTgsIAorICAgIDM2MDY1LCAzNjA3MiwgMzYwNzcsIDM2MDg2LCAzNjA5NCwgMzYxMDIsIDM2MTA5LCAzNjExNiwgMzYxMjMsIDM2MTMwLCAKKyAgICAzNjEzOCwgMzYxNDYsIDM2MTU2LCAzNjE2NiwgMzYxNzQsIDM2MTgyLCAzNjE5MCwgMzYxOTgsIDM2MjA3LCAzNjIxNiwgCisgICAgMzYyMjQsIDM2MjMyLCAzNjI0MSwgMzYyNTAsIDM2MjYwLCAzNjI3MCwgMzYyNzksIDM2Mjg4LCAzNjI5NiwgMzYzMDQsIAorICAgIDM2MzEyLCAzNjMyMCwgMzYzMzAsIDM2MzQwLCAzNjM0OCwgMzYzNTYsIDM2MzY0LCAzNjM3MiwgMzYzODAsIDM2Mzg4LCAKKyAgICAzNjM5NiwgMzY0MDQsIDM2NDEyLCAzNjQyMCwgMzY0MjgsIDM2NDM2LCAzNjQ0NSwgMzY0NTQsIDM2NDYzLCAzNjQ3MiwgCisgICAgMzY0ODIsIDM2NDkyLCAzNjQ5OSwgMzY1MDYsIDM2NTE0LCAzNjUyMiwgMzY1MzEsIDM2NTQwLCAzNjU0OCwgMzY1NTYsIAorICAgIDM2NTY4LCAzNjU4MCwgMzY1ODksIDM2NTk4LCAzNjYwNywgMzY2MTYsIDM2NjIzLCAzNjYzMCwgMzY2MzgsIDM2NjQ2LCAKKyAgICAzNjY1NCwgMzY2NjIsIDM2NjcwLCAzNjY3OCwgMzY2ODYsIDM2Njk0LCAzNjcwMywgMzY3MTIsIDM2NzIxLCAzNjczMCwgCisgICAgMzY3MzksIDM2NzQ4LCAzNjc1OCwgMzY3NjgsIDM2Nzc4LCAzNjc4OCwgMzY3OTcsIDM2ODA2LCAzNjgxMywgMzY4MjAsIAorICAgIDM2ODI4LCAzNjgzNiwgMzY4NDQsIDM2ODUyLCAzNjg2MCwgMzY4NjgsIDM2ODgwLCAzNjg5MiwgMzY5MDEsIDM2OTEwLCAKKyAgICAzNjkxOCwgMzY5MjYsIDM2OTM0LCAzNjk0MiwgMzY5NTMsIDM2OTY0LCAzNjk3NSwgMzY5ODYsIDM2OTk4LCAzNzAxMCwgCisgICAgMzcwMTgsIDM3MDI2LCAzNzAzNCwgMzcwNDIsIDM3MDUxLCAzNzA2MCwgMzcwNjksIDM3MDc4LCAzNzA4NiwgMzcwOTQsIAorICAgIDM3MTAyLCAzNzExMCwgMzcxMTgsIDM3MTI2LCAzNzEzNSwgMzcxNDQsIDM3MTU0LCAzNzE2NCwgMzcxNzIsIDM3MTgwLCAKKyAgICAzNzE4OCwgMzcxOTYsIDM3MjA0LCAzNzIxMiwgMzcyMTksIDM3MjI2LCAzNzIzNCwgMzcyNDIsIDM3MjUwLCAzNzI1OCwgCisgICAgMzcyNjYsIDM3Mjc0LCAzNzI4MiwgMzcyOTAsIDM3Mjk4LCAzNzMwNiwgMzczMTQsIDM3MzIyLCAzNzMzMCwgMzczMzgsIAorICAgIDM3MzQ2LCAzNzM1NCwgMzczNjMsIDM3MzcyLCAzNzM4MSwgMzczODksIDM3Mzk4LCAzNzQwNywgMzc0MTYsIDM3NDI1LCAKKyAgICAzNzQzNSwgMzc0NDQsIDM3NDUxLCAzNzQ1NiwgMzc0NjMsIDM3NDcwLCAzNzQ3OCwgMzc0ODYsIDM3NDk1LCAzNzUwNCwgCisgICAgMzc1MTQsIDM3NTI0LCAzNzUzNSwgMzc1NDYsIDM3NTU2LCAzNzU2NiwgMzc1NzYsIDM3NTg2LCAzNzU5NSwgMzc2MDQsIAorICAgIDM3NjE0LCAzNzYyNCwgMzc2MzUsIDM3NjQ2LCAzNzY1NiwgMzc2NjYsIDM3Njc2LCAzNzY4NiwgMzc2OTMsIDM3NzAwLCAKKyAgICAzNzcwOCwgMzc3MTYsIDM3NzIzLCAzNzczMCwgMzc3MzksIDM3NzQ4LCAzNzc1OCwgMzc3NjgsIDM3Nzc5LCAzNzc5MCwgCisgICAgMzc4MDAsIDM3ODEwLCAzNzgyMCwgMzc4MzAsIDM3ODM5LCAzNzg0OCwgMzc4NTYsIDM3ODY0LCAzNzg3MSwgMzc4NzgsIAorICAgIDM3ODg2LCAzNzg5NCwgMzc5MDMsIDM3OTEyLCAzNzkyMiwgMzc5MzIsIDM3OTQzLCAzNzk1NCwgMzc5NjQsIDM3OTc0LCAKKyAgICAzNzk4NCwgMzc5OTQsIDM4MDAzLCAzODAxMiwgMzgwMjIsIDM4MDMyLCAzODA0MywgMzgwNTQsIDM4MDY0LCAzODA3NCwgCisgICAgMzgwODQsIDM4MDk0LCAzODEwMSwgMzgxMDgsIDM4MTE2LCAzODEyNCwgMzgxMzMsIDM4MTQyLCAzODE1MiwgMzgxNjIsIAorICAgIDM4MTczLCAzODE4NCwgMzgxOTQsIDM4MjA0LCAzODIxNCwgMzgyMjQsIDM4MjMyLCAzODI0MCwgMzgyNDgsIDM4MjU2LCAKKyAgICAzODI2NSwgMzgyNzQsIDM4MjgyLCAzODI5MCwgMzgyOTcsIDM4MzA0LCAzODMxMSwgMzgzMTgsIDM4MzI2LCAzODMzNCwgCisgICAgMzgzNDIsIDM4MzUwLCAzODM2MSwgMzgzNzIsIDM4MzgzLCAzODM5NCwgMzg0MDUsIDM4NDE2LCAzODQyNCwgMzg0MzIsIAorICAgIDM4NDQzLCAzODQ1NCwgMzg0NjUsIDM4NDc2LCAzODQ4NywgMzg0OTgsIDM4NTA2LCAzODUxNCwgMzg1MjUsIDM4NTM2LCAKKyAgICAzODU0NywgMCwgMCwgMzg1NTgsIDM4NTY2LCAzODU3NCwgMzg1ODUsIDM4NTk2LCAzODYwNywgMCwgMCwgMzg2MTgsIAorICAgIDM4NjI2LCAzODYzNCwgMzg2NDUsIDM4NjU2LCAzODY2NywgMzg2NzgsIDM4Njg5LCAzODcwMCwgMzg3MDgsIDM4NzE2LCAKKyAgICAzODcyNywgMzg3MzgsIDM4NzQ5LCAzODc2MCwgMzg3NzEsIDM4NzgyLCAzODc5MCwgMzg3OTgsIDM4ODA5LCAzODgyMCwgCisgICAgMzg4MzEsIDM4ODQyLCAzODg1MywgMzg4NjQsIDM4ODcyLCAzODg4MCwgMzg4OTEsIDM4OTAyLCAzODkxMywgMzg5MjQsIAorICAgIDM4OTM1LCAzODk0NiwgMzg5NTQsIDM4OTYyLCAzODk3MywgMzg5ODQsIDM4OTk1LCAwLCAwLCAzOTAwNiwgMzkwMTQsIAorICAgIDM5MDIyLCAzOTAzMywgMzkwNDQsIDM5MDU1LCAwLCAwLCAzOTA2NiwgMzkwNzQsIDM5MDgyLCAzOTA5MywgMzkxMDQsIAorICAgIDM5MTE1LCAzOTEyNiwgMzkxMzcsIDAsIDM5MTQ4LCAwLCAzOTE1NiwgMCwgMzkxNjcsIDAsIDM5MTc4LCAzOTE4OSwgCisgICAgMzkxOTcsIDM5MjA1LCAzOTIxNiwgMzkyMjcsIDM5MjM4LCAzOTI0OSwgMzkyNjAsIDM5MjcxLCAzOTI3OSwgMzkyODcsIAorICAgIDM5Mjk4LCAzOTMwOSwgMzkzMjAsIDM5MzMxLCAzOTM0MiwgMzkzNTMsIDM5MzYxLCAzOTM2OSwgMzkzNzcsIDM5Mzg1LCAKKyAgICAzOTM5MywgMzk0MDEsIDM5NDA5LCAzOTQxNywgMzk0MjUsIDM5NDMzLCAzOTQ0MSwgMzk0NDksIDM5NDU3LCAwLCAwLCAKKyAgICAzOTQ2NSwgMzk0NzYsIDM5NDg3LCAzOTUwMSwgMzk1MTUsIDM5NTI5LCAzOTU0MywgMzk1NTcsIDM5NTcxLCAzOTU4MiwgCisgICAgMzk1OTMsIDM5NjA3LCAzOTYyMSwgMzk2MzUsIDM5NjQ5LCAzOTY2MywgMzk2NzcsIDM5Njg4LCAzOTY5OSwgMzk3MTMsIAorICAgIDM5NzI3LCAzOTc0MSwgMzk3NTUsIDM5NzY5LCAzOTc4MywgMzk3OTQsIDM5ODA1LCAzOTgxOSwgMzk4MzMsIDM5ODQ3LCAKKyAgICAzOTg2MSwgMzk4NzUsIDM5ODg5LCAzOTkwMCwgMzk5MTEsIDM5OTI1LCAzOTkzOSwgMzk5NTMsIDM5OTY3LCAzOTk4MSwgCisgICAgMzk5OTUsIDQwMDA2LCA0MDAxNywgNDAwMzEsIDQwMDQ1LCA0MDA1OSwgNDAwNzMsIDQwMDg3LCA0MDEwMSwgNDAxMDksIAorICAgIDQwMTE3LCA0MDEyOCwgNDAxMzYsIDAsIDQwMTQ3LCA0MDE1NSwgNDAxNjYsIDQwMTc0LCA0MDE4MiwgNDAxOTAsIDQwMTk4LCAKKyAgICA0MDIwNiwgNDAyMDksIDQwMjEyLCA0MDIxNSwgNDAyMTgsIDQwMjI0LCA0MDIzNSwgNDAyNDMsIDAsIDQwMjU0LCA0MDI2MiwgCisgICAgNDAyNzMsIDQwMjgxLCA0MDI4OSwgNDAyOTcsIDQwMzA1LCA0MDMxMywgNDAzMTksIDQwMzI1LCA0MDMzMSwgNDAzMzksIAorICAgIDQwMzQ3LCA0MDM1OCwgMCwgMCwgNDAzNjksIDQwMzc3LCA0MDM4OCwgNDAzOTYsIDQwNDA0LCA0MDQxMiwgMCwgNDA0MjAsIAorICAgIDQwNDI2LCA0MDQzMiwgNDA0MzgsIDQwNDQ2LCA0MDQ1NCwgNDA0NjUsIDQwNDc2LCA0MDQ4NCwgNDA0OTIsIDQwNTAwLCAKKyAgICA0MDUxMSwgNDA1MTksIDQwNTI3LCA0MDUzNSwgNDA1NDMsIDQwNTUxLCA0MDU1NywgNDA1NjMsIDAsIDAsIDQwNTY2LCAKKyAgICA0MDU3NywgNDA1ODUsIDAsIDQwNTk2LCA0MDYwNCwgNDA2MTUsIDQwNjIzLCA0MDYzMSwgNDA2MzksIDQwNjQ3LCA0MDY1NSwgCisgICAgNDA2NTgsIDAsIDQwNjYxLCA0MDY2NSwgNDA2NjksIDQwNjczLCA0MDY3NywgNDA2ODEsIDQwNjg1LCA0MDY4OSwgNDA2OTMsIAorICAgIDQwNjk3LCA0MDcwMSwgNDA3MDUsIDQwNzExLCA0MDcxNywgNDA3MjMsIDQwNzI2LCA0MDcyOSwgNDA3MzEsIDQwNzM1LCAKKyAgICA0MDczOSwgNDA3NDMsIDQwNzQ3LCA0MDc1MCwgNDA3NTQsIDQwNzU4LCA0MDc2NCwgNDA3NzAsIDQwNzc3LCA0MDc4NCwgCisgICAgNDA3ODksIDQwNzk0LCA0MDgwMCwgNDA4MDYsIDQwODA4LCA0MDgxMSwgNDA4MTMsIDQwODE3LCA0MDgyMSwgNDA4MjUsIAorICAgIDQwODI5LCA0MDgzMywgNDA4MzcsIDQwODQxLCA0MDg0NSwgNDA4NDksIDQwODU1LCA0MDg1OSwgNDA4NjMsIDQwODY5LCAKKyAgICA0MDg3NCwgNDA4ODEsIDQwODgzLCA0MDg4NiwgNDA4OTAsIDQwODk0LCA0MDg5OSwgNDA5MDUsIDQwOTA3LCA0MDkxNiwgCisgICAgNDA5MjUsIDQwOTI4LCA0MDkzMiwgNDA5MzQsIDQwOTM2LCA0MDkzOCwgNDA5NDEsIDQwOTQ3LCA0MDk0OSwgNDA5NTMsIAorICAgIDQwOTU3LCA0MDk2NCwgNDA5NzEsIDQwOTc1LCA0MDk4MCwgNDA5ODUsIDQwOTkwLCA0MDk5NSwgNDA5OTksIDQxMDAzLCAKKyAgICA0MTAwNiwgNDEwMTAsIDQxMDE0LCA0MTAyMSwgNDEwMjYsIDQxMDMwLCA0MTAzNCwgNDEwMzksIDQxMDQzLCA0MTA0NywgCisgICAgNDEwNTIsIDQxMDU3LCA0MTA2MSwgNDEwNjUsIDQxMDY5LCA0MTA3MSwgNDEwNzYsIDQxMDgxLCA0MTA4NSwgNDEwODksIAorICAgIDQxMDkzLCA0MTA5NywgMCwgNDExMDEsIDQxMTA1LCA0MTEwOSwgNDExMTUsIDQxMTIxLCA0MTEyNywgNDExMzMsIDQxMTQwLCAKKyAgICA0MTE0NywgNDExNTIsIDQxMTU3LCA0MTE2MSwgMCwgMCwgNDExNjcsIDQxMTcwLCA0MTE3MywgNDExNzYsIDQxMTgwLCAKKyAgICA0MTE4MywgNDExODcsIDQxMTkxLCA0MTE5NSwgNDEyMDAsIDQxMjA1LCA0MTIxMCwgNDEyMTcsIDQxMjIxLCA0MTIyNCwgCisgICAgNDEyMjcsIDQxMjMwLCA0MTIzMywgNDEyMzYsIDQxMjM5LCA0MTI0MywgNDEyNDYsIDQxMjUwLCA0MTI1NCwgNDEyNTgsIAorICAgIDQxMjYzLCA0MTI2OCwgMCwgNDEyNzMsIDQxMjc5LCA0MTI4NSwgNDEyOTEsIDQxMjk4LCA0MTMwNSwgNDEzMTIsIDQxMzE5LCAKKyAgICA0MTMyNSwgNDEzMzIsIDQxMzM5LCA0MTM0NiwgNDEzNTMsIDAsIDAsIDAsIDQxMzYwLCA0MTM2MywgNDEzNjYsIDQxMzY5LCAKKyAgICA0MTM3NCwgNDEzNzcsIDQxMzgwLCA0MTM4MywgNDEzODYsIDQxMzg5LCA0MTM5MiwgNDEzOTcsIDQxNDAwLCA0MTQwMywgCisgICAgNDE0MDYsIDQxNDA5LCA0MTQxMiwgNDE0MTcsIDQxNDIwLCA0MTQyMywgNDE0MjYsIDQxNDI5LCA0MTQzMiwgNDE0MzcsIAorICAgIDQxNDQwLCA0MTQ0MywgNDE0NDgsIDQxNDUzLCA0MTQ1NywgNDE0NjAsIDQxNDYzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MTQ2NiwgNDE0NzEsIDQxNDc2LCA0MTQ4MywgNDE0OTEsIDQxNDk2LCAKKyAgICA0MTUwMSwgNDE1MDUsIDQxNTA5LCA0MTUxNCwgNDE1MjEsIDQxNTI4LCA0MTUzMiwgNDE1MzcsIDQxNTQyLCA0MTU0NywgCisgICAgNDE1NTIsIDQxNTU5LCA0MTU2NCwgNDE1NjksIDQxNTc0LCA0MTU4MywgNDE1OTAsIDQxNTk3LCA0MTYwMSwgNDE2MDYsIAorICAgIDQxNjEyLCA0MTYxNywgNDE2MjQsIDQxNjMyLCA0MTY0MCwgNDE2NDQsIDQxNjQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MTY1MiwgNDE2NTYsIDQxNjY0LCA0MTY2OCwgNDE2NzIsIDQxNjc3LCA0MTY4MSwgCisgICAgNDE2ODUsIDQxNjg5LCA0MTY5MSwgNDE2OTUsIDQxNjk5LCA0MTcwMywgNDE3MDgsIDQxNzEyLCA0MTcxNiwgNDE3MjQsIAorICAgIDQxNzI3LCA0MTczMSwgNDE3MzQsIDQxNzM3LCA0MTc0MywgNDE3NDcsIDQxNzUwLCA0MTc1NiwgNDE3NjAsIDQxNzY0LCAKKyAgICA0MTc2OCwgNDE3NzEsIDQxNzc1LCA0MTc3OCwgNDE3ODIsIDQxNzg0LCA0MTc4NywgNDE3OTAsIDQxNzk0LCA0MTc5NiwgCisgICAgNDE4MDAsIDQxODAzLCA0MTgwNiwgNDE4MTEsIDQxODE2LCA0MTgyMywgNDE4MjYsIDQxODI5LCA0MTgzMywgNDE4MzgsIAorICAgIDQxODQxLCA0MTg0NCwgNDE4NDcsIDQxODUxLCA0MTg1NiwgNDE4NjAsIDQxODYzLCA0MTg2NSwgNDE4NjgsIDQxODcxLCAKKyAgICA0MTg3NCwgNDE4NzgsIDQxODgzLCA0MTg4NiwgNDE4OTAsIDQxODk0LCA0MTg5OCwgNDE5MDIsIDQxOTA3LCA0MTkxMywgCisgICAgNDE5MTgsIDQxOTIzLCA0MTkyOSwgNDE5MzQsIDQxOTM5LCA0MTk0MywgNDE5NDcsIDQxOTUyLCA0MTk1NiwgNDE5NjAsIAorICAgIDQxOTYzLCA0MTk2NSwgNDE5NzAsIDQxOTc2LCA0MTk4MywgNDE5OTAsIDQxOTk3LCA0MjAwNCwgNDIwMTEsIDQyMDE4LCAKKyAgICA0MjAyNSwgNDIwMzIsIDQyMDQwLCA0MjA0NywgNDIwNTUsIDQyMDYyLCA0MjA2OSwgNDIwNzcsIDQyMDg1LCA0MjA5MCwgCisgICAgNDIwOTUsIDQyMTAwLCA0MjEwNSwgNDIxMTAsIDQyMTE1LCA0MjEyMCwgNDIxMjYsIDQyMTMxLCA0MjEzNywgNDIxNDMsIAorICAgIDQyMTQ5LCA0MjE1NSwgNDIxNjEsIDQyMTY4LCA0MjE3NiwgNDIxODMsIDQyMTg5LCA0MjE5NSwgNDIyMDEsIDQyMjA3LCAKKyAgICA0MjIxMywgNDIyMTksIDQyMjI2LCA0MjIzMiwgNDIyMzksIDQyMjQ2LCA0MjI1MywgNDIyNjAsIDQyMjY3LCA0MjI3NSwgCisgICAgNDIyODQsIDQyMjkyLCA0MjMwMywgNDIzMTEsIDQyMzE5LCA0MjMyOCwgNDIzMzUsIDQyMzQ0LCA0MjM1MywgNDIzNjEsIAorICAgIDQyMzcwLCA0MjM3OCwgNDIzODIsIDAsIDAsIDAsIDAsIDQyMzg2LCA0MjM4OCwgNDIzOTAsIDQyMzkyLCA0MjM5NCwgCisgICAgNDIzOTcsIDQyNDAwLCA0MjQwNCwgNDI0MDgsIDQyNDEzLCA0MjQxOCwgNDI0MjIsIDQyNDI2LCA0MjQzMCwgNDI0MzQsIAorICAgIDQyNDM5LCA0MjQ0NCwgNDI0NDksIDQyNDU0LCA0MjQ1OSwgNDI0NjQsIDQyNDY5LCA0MjQ3NCwgNDI0NzksIDQyNDg0LCAKKyAgICA0MjQ5MCwgNDI0OTQsIDQyNDk4LCA0MjUwMywgNDI1MDgsIDQyNTEzLCA0MjUxOCwgNDI1MjIsIDQyNTI5LCA0MjUzNiwgCisgICAgNDI1NDMsIDQyNTUwLCA0MjU1NywgNDI1NjQsIDQyNTcxLCA0MjU3OCwgNDI1ODYsIDQyNTk4LCA0MjYwNCwgNDI2MTAsIAorICAgIDQyNjE3LCA0MjYyNCwgNDI2MzEsIDQyNjM4LCA0MjY0NSwgNDI2NTIsIDQyNjU5LCA0MjY2NiwgNDI2NzEsIDQyNjc3LCAKKyAgICA0MjY4MiwgNDI2ODcsIDQyNjkyLCA0MjY5NywgNDI3MDIsIDQyNzA5LCA0MjcxNiwgNDI3MjEsIDQyNzI3LCA0MjczMiwgCisgICAgNDI3MzUsIDQyNzM4LCA0Mjc0MSwgNDI3NDQsIDQyNzQ4LCA0Mjc1MiwgNDI3NTcsIDQyNzYyLCA0Mjc2OCwgNDI3NzQsIAorICAgIDQyNzc4LCA0Mjc4MiwgNDI3ODYsIDQyNzkwLCA0Mjc5NSwgNDI4MDAsIDQyODA0LCA0MjgwOCwgNDI4MTIsIDQyODE2LCAKKyAgICA0MjgyMSwgNDI4MjYsIDQyODI5LCA0MjgzMiwgNDI4MzUsIDQyODM4LCA0Mjg0NCwgNDI4NTEsIDQyODYyLCA0Mjg3MiwgCisgICAgNDI4NzYsIDQyODg0LCA0Mjg5MSwgNDI4OTksIDQyOTA4LCA0MjkxMiwgNDI5MTgsIDQyOTI0LCA0MjkyOCwgNDI5MzMsIAorICAgIDQyOTM4LCA0Mjk0NCwgNDI5NTAsIDQyOTU2LCA0Mjk2MywgNDI5NjcsIDQyOTcxLCA0Mjk3NiwgNDI5NzksIDQyOTgxLCAKKyAgICA0Mjk4NSwgNDI5ODksIDQyOTk3LCA0MzAwMSwgNDMwMDMsIDQzMDA1LCA0MzAwOSwgNDMwMTcsIDQzMDIyLCA0MzAyOCwgCisgICAgNDMwMzgsIDQzMDQ1LCA0MzA1MCwgNDMwNTQsIDQzMDU4LCA0MzA2MiwgNDMwNjUsIDQzMDY4LCA0MzA3MSwgNDMwNzUsIAorICAgIDQzMDc5LCA0MzA4MywgNDMwODcsIDQzMDkxLCA0MzA5NCwgNDMwOTgsIDQzMTAyLCA0MzEwNSwgNDMxMDcsIDQzMTEwLCAKKyAgICA0MzExMiwgNDMxMTYsIDQzMTIwLCA0MzEyMiwgNDMxMjgsIDQzMTMxLCA0MzEzNiwgNDMxNDAsIDQzMTQ0LCA0MzE0NiwgCisgICAgNDMxNDgsIDQzMTUwLCA0MzE1MywgNDMxNTcsIDQzMTYxLCA0MzE2NSwgNDMxNjksIDQzMTczLCA0MzE3OSwgNDMxODUsIAorICAgIDQzMTg3LCA0MzE4OSwgNDMxOTEsIDQzMTkzLCA0MzE5NiwgNDMxOTgsIDQzMjAyLCA0MzIwNCwgNDMyMDgsIDQzMjEyLCAKKyAgICA0MzIxOCwgNDMyMjIsIDQzMjI2LCA0MzIzMCwgNDMyMzQsIDQzMjM4LCA0MzI0NCwgNDMyNDgsIDQzMjU4LCA0MzI2OCwgCisgICAgNDMyNzIsIDQzMjc4LCA0MzI4NSwgNDMyODksIDQzMjkzLCA0MzI5NiwgNDMzMDEsIDQzMzA1LCA0MzMxMSwgNDMzMTUsIAorICAgIDQzMzI4LCA0MzMzNywgNDMzNDEsIDQzMzQ1LCA0MzM1MSwgNDMzNTUsIDQzMzU4LCA0MzM2MCwgNDMzNjMsIDQzMzY3LCAKKyAgICA0MzM3MSwgNDMzNzgsIDQzMzgyLCA0MzM4NiwgNDMzOTAsIDQzMzkzLCA0MzM5OCwgNDM0MDMsIDQzNDA5LCA0MzQxNSwgCisgICAgNDM0MjAsIDQzNDI1LCA0MzQzMywgNDM0NDEsIDQzNDQ1LCA0MzQ0OSwgNDM0NTEsIDQzNDU2LCA0MzQ2MCwgNDM0NjQsIAorICAgIDQzNDcyLCA0MzQ4MCwgNDM0ODcsIDQzNDk0LCA0MzUwMywgNDM1MTIsIDQzNTE4LCA0MzUyNCwgNDM1MzIsIDQzNTQwLCAKKyAgICA0MzU0MiwgNDM1NDQsIDQzNTUwLCA0MzU1NiwgNDM1NjMsIDQzNTcwLCA0MzU3NiwgNDM1ODIsIDQzNTg2LCA0MzU5MCwgCisgICAgNDM1OTcsIDQzNjA0LCA0MzYxMSwgNDM2MTgsIDQzNjI4LCA0MzYzOCwgNDM2NDYsIDQzNjU0LCA0MzY1NiwgNDM2NjAsIAorICAgIDQzNjY0LCA0MzY2OSwgNDM2NzQsIDQzNjgyLCA0MzY5MCwgNDM2OTMsIDQzNjk2LCA0MzY5OSwgNDM3MDIsIDQzNzA1LCAKKyAgICA0MzcxMCwgNDM3MTQsIDQzNzE5LCA0MzcyNCwgNDM3MjcsIDQzNzMwLCA0MzczMywgNDM3MzYsIDQzNzM5LCA0Mzc0MywgCisgICAgNDM3NDYsIDQzNzQ5LCA0Mzc1MiwgNDM3NTUsIDQzNzU3LCA0Mzc1OSwgNDM3NjEsIDQzNzYzLCA0Mzc3MSwgNDM3NzksIAorICAgIDQzNzg1LCA0Mzc4OSwgNDM3OTUsIDQzODA1LCA0MzgxMSwgNDM4MTcsIDQzODIzLCA0MzgzMSwgNDM4NDAsIDQzODUyLCAKKyAgICA0Mzg1NiwgNDM4NjAsIDQzODYyLCA0Mzg2OCwgNDM4NzAsIDQzODcyLCA0Mzg3NCwgNDM4NzYsIDQzODgyLCA0Mzg4NSwgCisgICAgNDM4OTEsIDQzODk3LCA0MzkwMSwgNDM5MDUsIDQzOTA5LCA0MzkxMiwgNDM5MTYsIDQzOTIwLCA0MzkyMiwgNDM5MzEsIAorICAgIDQzOTQwLCA0Mzk0NSwgNDM5NTAsIDQzOTU2LCA0Mzk2MiwgNDM5NjgsIDQzOTcxLCA0Mzk3NCwgNDM5NzcsIDQzOTgwLCAKKyAgICA0Mzk4MiwgNDM5ODcsIDQzOTkyLCA0Mzk5NywgNDQwMDMsIDQ0MDA5LCA0NDAxOCwgNDQwMjcsIDQ0MDM0LCA0NDA0MSwgCisgICAgNDQwNDgsIDQ0MDU1LCA0NDA2NSwgNDQwNzUsIDQ0MDg1LCA0NDA5NSwgNDQxMDUsIDQ0MTE1LCA0NDEyNCwgNDQxMzMsIAorICAgIDQ0MTQyLCA0NDE1MSwgNDQxNTksIDQ0MTcxLCA0NDE4MiwgNDQxOTgsIDQ0MjAxLCA0NDIwNywgNDQyMTMsIDQ0MjE5LCAKKyAgICA0NDIyNywgNDQyNDIsIDQ0MjU4LCA0NDI2NCwgNDQyNzAsIDQ0Mjc3LCA0NDI4MywgNDQyOTIsIDQ0Mjk5LCA0NDMxMywgCisgICAgNDQzMjgsIDQ0MzMzLCA0NDMzOSwgNDQzNDcsIDQ0MzUwLCA0NDM1MywgNDQzNTUsIDQ0MzU4LCA0NDM2MSwgNDQzNjMsIAorICAgIDQ0MzY1LCA0NDM2OSwgNDQzNzIsIDQ0Mzc1LCA0NDM3OCwgNDQzODEsIDQ0Mzg2LCA0NDM5MSwgNDQzOTYsIDQ0NDAxLCAKKyAgICA0NDQwNiwgNDQ0MDksIDQ0NDExLCA0NDQxMywgNDQ0MTUsIDQ0NDE5LCA0NDQyMywgNDQ0MjcsIDQ0NDMzLCA0NDQzOCwgCisgICAgNDQ0NDAsIDQ0NDQyLCA0NDQ0NywgNDQ0NTIsIDQ0NDU3LCA0NDQ2MiwgNDQ0NjcsIDQ0NDcyLCA0NDQ3NCwgNDQ0NzYsIAorICAgIDQ0NDg2LCA0NDQ5MCwgNDQ0OTgsIDQ0NTA3LCA0NDUwOSwgNDQ1MTQsIDQ0NTE5LCA0NDUyNywgNDQ1MzEsIDQ0NTMzLCAKKyAgICA0NDUzNywgNDQ1MzksIDQ0NTQzLCA0NDU0NywgNDQ1NTEsIDQ0NTUzLCA0NDU1NSwgNDQ1NTcsIDQ0NTY0LCA0NDU3MywgCisgICAgNDQ1ODIsIDQ0NTkxLCA0NDYwMCwgNDQ2MDksIDQ0NjE4LCA0NDYyNywgNDQ2MzYsIDQ0NjQ0LCA0NDY1MiwgNDQ2NjEsIAorICAgIDQ0NjcwLCA0NDY3OSwgNDQ2ODgsIDQ0Njk2LCA0NDcwNCwgNDQ3MTMsIDQ0NzIyLCA0NDczMSwgNDQ3NDEsIDQ0NzUwLCAKKyAgICA0NDc2MCwgNDQ3NjksIDQ0Nzc5LCA0NDc4NywgNDQ3OTYsIDQ0ODA2LCA0NDgxNSwgNDQ4MjUsIDQ0ODM0LCA0NDg0NCwgCisgICAgNDQ4NTIsIDQ0ODYxLCA0NDg3MCwgNDQ4NzksIDQ0ODg4LCA0NDg5NywgNDQ5MDYsIDQ0OTE2LCA0NDkyNSwgNDQ5MzQsIAorICAgIDQ0OTQzLCA0NDk1MywgNDQ5NjIsIDQ0OTcxLCA0NDk4MCwgNDQ5ODksIDQ0OTk5LCA0NTAwOSwgNDUwMTgsIDQ1MDI3LCAKKyAgICA0NTAzNSwgNDUwNDQsIDQ1MDUxLCA0NTA2MCwgNDUwNjksIDQ1MDgwLCA0NTA4OSwgNDUwOTksIDQ1MTA5LCA0NTExNiwgCisgICAgNDUxMjMsIDQ1MTMwLCA0NTEzOSwgNDUxNDgsIDQ1MTU3LCA0NTE2NiwgNDUxNzMsIDQ1MTc4LCA0NTE4NiwgNDUxOTEsIAorICAgIDQ1MTk0LCA0NTIwMSwgNDUyMDQsIDQ1MjA5LCA0NTIxNCwgNDUyMTcsIDQ1MjIwLCA0NTIyOCwgNDUyMzEsIDQ1MjM2LCAKKyAgICA0NTIzOSwgNDUyNDcsIDQ1MjUyLCA0NTI2MCwgNDUyNjMsIDQ1MjY2LCA0NTI2OSwgNDUyNzQsIDQ1Mjc5LCA0NTI4MiwgCisgICAgNDUyODUsIDQ1MjkzLCA0NTI5NiwgNDUzMDMsIDQ1MzEwLCA0NTMxNCwgNDUzMTgsIDQ1MzIzLCA0NTMyOCwgNDUzMzQsIAorICAgIDQ1MzM5LCA0NTM0NSwgNDUzNTEsIDQ1MzU2LCA0NTM2MiwgNDUzNzAsIDQ1Mzc2LCA0NTM4NCwgNDUzOTIsIDQ1Mzk4LCAKKyAgICA0NTQwNiwgNDU0MTQsIDQ1NDIyLCA0NTQzMCwgNDU0MzYsIDQ1NDQ0LCA0NTQ1MiwgNDU0NjAsIDQ1NDY0LCA0NTQ3MCwgCisgICAgNDU0ODQsIDQ1NDk4LCA0NTUwMiwgNDU1MDYsIDQ1NTEwLCA0NTUxNCwgNDU1MjQsIDQ1NTI4LCA0NTUzMywgNDU1MzgsIAorICAgIDQ1NTQ0LCA0NTU1MCwgNDU1NTYsIDQ1NTYyLCA0NTU3MiwgNDU1ODIsIDQ1NTkwLCA0NTYwMSwgNDU2MTIsIDQ1NjIwLCAKKyAgICA0NTYzMSwgNDU2NDIsIDQ1NjUwLCA0NTY2MSwgNDU2NzIsIDQ1NjgwLCA0NTY4OCwgNDU2OTgsIDQ1NzA4LCA0NTcxMSwgCisgICAgNDU3MTQsIDQ1NzE3LCA0NTcyMiwgNDU3MjYsIDQ1NzMyLCA0NTczOSwgNDU3NDYsIDQ1NzU0LCA0NTc2MSwgNDU3NjUsIAorICAgIDQ1NzY5LCA0NTc3MywgNDU3NzcsIDQ1Nzc5LCA0NTc4MywgNDU3ODcsIDQ1NzkyLCA0NTc5NywgNDU4MDQsIDQ1ODExLCAKKyAgICA0NTgxNCwgNDU4MjEsIDQ1ODIzLCA0NTgyNSwgNDU4MjksIDQ1ODMzLCA0NTgzOCwgNDU4NDQsIDQ1ODUwLCA0NTg1NiwgCisgICAgNDU4NjIsIDQ1ODcxLCA0NTg4MCwgNDU4ODksIDQ1ODkzLCA0NTg5NSwgNDU4OTksIDQ1OTA2LCA0NTkxMywgNDU5MjAsIAorICAgIDQ1OTI3LCA0NTkzNCwgNDU5MzcsIDQ1OTQyLCA0NTk0OCwgNDU5NTEsIDQ1OTU2LCA0NTk2MSwgMCwgNDU5NjYsIDQ1OTcwLCAKKyAgICA0NTk3NywgNDU5ODQsIDQ1OTkxLCA0NTk5OCwgNDYwMDIsIDQ2MDA2LCA0NjAxMCwgNDYwMTQsIDQ2MDIwLCA0NjAyNiwgCisgICAgNDYwMzEsIDQ2MDM3LCA0NjA0MywgNDYwNDksIDQ2MDU1LCA0NjA2MywgNDYwNzAsIDQ2MDc3LCA0NjA4NCwgNDYwOTEsIAorICAgIDQ2MDk2LCA0NjEwMiwgNDYxMTEsIDQ2MTE1LCA0NjEyMiwgNDYxMjYsIDQ2MTMwLCA0NjEzNiwgNDYxNDIsIDQ2MTQ4LCAKKyAgICA0NjE1NCwgNDYxNTgsIDQ2MTYyLCA0NjE2NSwgNDYxNjgsIDQ2MTcyLCA0NjE3OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDYxODYsIDQ2MTg5LCA0NjE5MywgCisgICAgNDYxOTcsIDQ2MjAzLCA0NjIwOSwgNDYyMTUsIDQ2MjIzLCA0NjIzMCwgNDYyMzQsIDQ2MjQyLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NjI0NywgNDYyNTAsIDQ2MjUzLCA0NjI1NiwgCisgICAgNDYyNTksIDQ2MjYyLCA0NjI2NSwgNDYyNjksIDQ2MjcyLCA0NjI3NiwgNDYyODAsIDQ2Mjg0LCA0NjI4OCwgNDYyOTIsIAorICAgIDQ2Mjk2LCA0NjMwMCwgNDYzMDQsIDQ2MzA4LCA0NjMxMiwgNDYzMTYsIDQ2MzIwLCA0NjMyMywgNDYzMjYsIDQ2MzI5LCAKKyAgICA0NjMzMiwgNDYzMzUsIDQ2MzM4LCA0NjM0MiwgNDYzNDUsIDQ2MzQ5LCA0NjM1MywgNDYzNTcsIDQ2MzYxLCA0NjM2NSwgCisgICAgNDYzNjksIDQ2MzczLCA0NjM3NywgNDYzODEsIDQ2Mzg1LCA0NjM4OSwgNDYzOTMsIDQ2Mzk5LCA0NjQwNSwgNDY0MTEsIAorICAgIDQ2NDE4LCA0NjQyNSwgNDY0MzIsIDQ2NDM5LCA0NjQ0NiwgNDY0NTMsIDQ2NDYwLCA0NjQ2NywgNDY0NzQsIDQ2NDgxLCAKKyAgICA0NjQ4OCwgNDY0OTUsIDQ2NTAyLCA0NjUwOSwgNDY1MTYsIDQ2NTIzLCA0NjUzMCwgNDY1MzUsIDQ2NTQxLCA0NjU0NywgCisgICAgNDY1NTMsIDQ2NTU4LCA0NjU2NCwgNDY1NzAsIDQ2NTc2LCA0NjU4MSwgNDY1ODcsIDQ2NTkzLCA0NjU5OCwgNDY2MDQsIAorICAgIDQ2NjEwLCA0NjYxNSwgNDY2MjEsIDQ2NjI3LCA0NjYzMiwgNDY2MzgsIDQ2NjQ0LCA0NjY0OSwgNDY2NTUsIDQ2NjYxLCAKKyAgICA0NjY2NywgNDY2NzMsIDQ2Njc5LCA0NjY4NCwgNDY2OTAsIDQ2Njk2LCA0NjcwMiwgNDY3MDcsIDQ2NzEzLCA0NjcxOSwgCisgICAgNDY3MjUsIDQ2NzMwLCA0NjczNiwgNDY3NDIsIDQ2NzQ3LCA0Njc1MywgNDY3NTksIDQ2NzY0LCA0Njc3MCwgNDY3NzYsIAorICAgIDQ2NzgxLCA0Njc4NywgNDY3OTMsIDQ2Nzk4LCA0NjgwNCwgNDY4MTAsIDQ2ODE2LCA0NjgyMiwgNDY4MjgsIDQ2ODMzLCAKKyAgICA0NjgzOSwgNDY4NDUsIDQ2ODUxLCA0Njg1NiwgNDY4NjIsIDQ2ODY4LCA0Njg3NCwgNDY4NzksIDQ2ODg1LCA0Njg5MSwgCisgICAgNDY4OTYsIDQ2OTAyLCA0NjkwOCwgNDY5MTMsIDQ2OTE5LCA0NjkyNSwgNDY5MzAsIDQ2OTM2LCA0Njk0MiwgNDY5NDcsIAorICAgIDQ2OTUzLCA0Njk1OSwgNDY5NjUsIDQ2OTcxLCA0Njk3NywgNDY5ODEsIDQ2OTg2LCA0Njk5MSwgNDY5OTYsIDQ3MDAxLCAKKyAgICA0NzAwNiwgNDcwMTEsIDQ3MDE2LCA0NzAyMSwgNDcwMjYsIDQ3MDMxLCA0NzAzNSwgNDcwMzksIDQ3MDQzLCA0NzA0NywgCisgICAgNDcwNTEsIDQ3MDU1LCA0NzA2MCwgNDcwNjQsIDQ3MDY5LCA0NzA3NCwgNDcwNzksIDQ3MDg0LCA0NzA4OSwgNDcwOTQsIAorICAgIDQ3MDk5LCA0NzEwOCwgNDcxMTcsIDQ3MTI2LCA0NzEzNSwgNDcxNDQsIDQ3MTUzLCA0NzE2MiwgNDcxNzEsIDQ3MTc4LCAKKyAgICA0NzE4NiwgNDcxOTQsIDQ3MjAxLCA0NzIwOCwgNDcyMTYsIDQ3MjI0LCA0NzIzMSwgNDcyMzgsIDQ3MjQ2LCA0NzI1NCwgCisgICAgNDcyNjEsIDQ3MjY4LCA0NzI3NiwgNDcyODQsIDQ3MjkxLCA0NzI5OCwgNDczMDYsIDQ3MzE1LCA0NzMyNCwgNDczMzIsIAorICAgIDQ3MzQxLCA0NzM1MCwgNDczNTcsIDQ3MzY0LCA0NzM3MiwgNDczODEsIDQ3MzkwLCA0NzM5OCwgNDc0MDcsIDQ3NDE2LCAKKyAgICA0NzQyMywgNDc0MzAsIDQ3NDM5LCA0NzQ0OCwgNDc0NTcsIDQ3NDY2LCA0NzQ3NSwgNDc0ODQsIDQ3NDkxLCA0NzQ5OCwgCisgICAgNDc1MDcsIDQ3NTE2LCA0NzUyNSwgNDc1MzQsIDQ3NTQzLCA0NzU1MiwgNDc1NTksIDQ3NTY2LCA0NzU3NSwgNDc1ODQsIAorICAgIDQ3NTkzLCA0NzYwMywgNDc2MTMsIDQ3NjIyLCA0NzYzMiwgNDc2NDIsIDQ3NjUyLCA0NzY2MiwgNDc2NzIsIDQ3NjgyLCAKKyAgICA0NzY5MSwgNDc3MDAsIDQ3NzA3LCA0NzcxNSwgNDc3MjMsIDQ3NzMxLCA0NzczOSwgNDc3NDQsIDQ3NzQ5LCA0Nzc1OCwgCisgICAgNDc3NjYsIDQ3NzczLCA0Nzc4MiwgNDc3OTAsIDQ3Nzk3LCA0NzgwNiwgNDc4MTQsIDQ3ODIxLCA0NzgzMCwgNDc4MzgsIAorICAgIDQ3ODQ1LCA0Nzg1NCwgNDc4NjIsIDQ3ODY5LCA0Nzg3OCwgNDc4ODYsIDQ3ODkzLCA0NzkwMywgNDc5MTIsIDQ3OTE5LCAKKyAgICA0NzkyOSwgNDc5MzgsIDQ3OTQ1LCA0Nzk1NSwgNDc5NjQsIDQ3OTcxLCA0Nzk4MCwgNDc5ODksIDQ3OTk4LCA0ODAwNywgCisgICAgNDgwMjEsIDQ4MDM1LCA0ODA0MiwgNDgwNDcsIDQ4MDUyLCA0ODA1NywgNDgwNjIsIDQ4MDY3LCA0ODA3MiwgNDgwNzcsIAorICAgIDQ4MDgyLCA0ODA5MCwgNDgwOTgsIDQ4MTA2LCA0ODExNCwgNDgxMTksIDQ4MTI2LCA0ODEzMywgNDgxNDAsIDQ4MTQ1LCAKKyAgICA0ODE1MywgNDgxNjAsIDQ4MTY4LCA0ODE3MiwgNDgxNzksIDQ4MTg1LCA0ODE5MiwgNDgxOTYsIDQ4MjAyLCA0ODIwOCwgCisgICAgNDgyMTQsIDQ4MjE4LCA0ODIyMSwgNDgyMjUsIDQ4MjI5LCA0ODIzNiwgNDgyNDIsIDQ4MjQ4LCA0ODI1NCwgNDgyNjAsIAorICAgIDQ4Mjc0LCA0ODI4NCwgNDgyOTgsIDQ4MzEyLCA0ODMxOCwgNDgzMjgsIDQ4MzQyLCA0ODM0NSwgNDgzNDgsIDQ4MzU1LCAKKyAgICA0ODM2MywgNDgzNjksIDQ4Mzc0LCA0ODM4MiwgNDgzOTQsIDQ4NDA2LCA0ODQxNCwgNDg0MTgsIDQ4NDIyLCA0ODQyNSwgCisgICAgNDg0MjgsIDQ4NDMyLCA0ODQzNiwgNDg0MzksIDQ4NDQyLCA0ODQ0NywgNDg0NTIsIDQ4NDU4LCA0ODQ2NCwgNDg0NjksIAorICAgIDQ4NDc0LCA0ODQ4MCwgNDg0ODYsIDQ4NDkxLCA0ODQ5NiwgNDg1MDEsIDQ4NTA2LCA0ODUxMiwgNDg1MTgsIDQ4NTIzLCAKKyAgICA0ODUyOCwgNDg1MzQsIDQ4NTQwLCA0ODU0NSwgNDg1NTAsIDQ4NTUzLCA0ODU1NiwgNDg1NjUsIDQ4NTY3LCA0ODU2OSwgCisgICAgNDg1NzIsIDQ4NTc2LCA0ODU4MiwgNDg1ODQsIDQ4NTg3LCA0ODU5NCwgNDg2MDEsIDQ4NjA5LCA0ODYxNywgNDg2MjcsIAorICAgIDQ4NjQxLCA0ODY0NiwgNDg2NTEsIDQ4NjU1LCA0ODY2MCwgNDg2NjgsIDQ4Njc2LCA0ODY4NSwgNDg2OTQsIDQ4NzAzLCAKKyAgICA0ODcxMiwgNDg3MTcsIDQ4NzIyLCA0ODcyOCwgNDg3MzQsIDQ4NzQwLCA0ODc0NiwgNDg3NDksIDQ4NzU1LCA0ODc2MSwgCisgICAgNDg3NzEsIDQ4NzgxLCA0ODc4OSwgNDg3OTcsIDQ4ODA2LCA0ODgxNSwgNDg4MTksIDQ4ODI3LCA0ODgzNSwgNDg4NDMsIAorICAgIDQ4ODUxLCA0ODg2MCwgNDg4NjksIDQ4ODc4LCA0ODg4NywgNDg4OTIsIDQ4ODk3LCA0ODkwMiwgNDg5MDcsIDQ4OTEyLCAKKyAgICA0ODkxOCwgNDg5MjQsIDQ4OTI5LCA0ODkzNSwgNDg5MzcsIDQ4OTM5LCA0ODk0MSwgNDg5NDMsIDQ4OTQ2LCA0ODk0OSwgCisgICAgNDg5NTEsIDQ4OTUzLCA0ODk1NSwgNDg5NTksIDQ4OTYzLCA0ODk2NSwgNDg5NjcsIDQ4OTcwLCA0ODk3MywgNDg5NzcsIAorICAgIDQ4OTgzLCA0ODk4OSwgNDg5OTEsIDQ4OTk4LCA0OTAwMiwgNDkwMDcsIDQ5MDEyLCA0OTAxNCwgNDkwMjQsIDQ5MDMwLCAKKyAgICA0OTAzNiwgNDkwNDIsIDQ5MDQ4LCA0OTA1NCwgNDkwNjAsIDQ5MDY1LCA0OTA2OCwgNDkwNzEsIDQ5MDc0LCA0OTA3NiwgCisgICAgNDkwNzgsIDQ5MDgyLCA0OTA4NiwgNDkwOTEsIDQ5MDk2LCA0OTEwMSwgNDkxMDQsIDQ5MTA4LCA0OTExMywgNDkxMTYsIAorICAgIDQ5MTIwLCA0OTEyNSwgNDkxMzAsIDQ5MTM1LCA0OTE0MCwgNDkxNDUsIDQ5MTUwLCA0OTE1NSwgNDkxNjAsIDQ5MTY1LCAKKyAgICA0OTE3MCwgNDkxNzUsIDQ5MTgwLCA0OTE4NiwgNDkxOTIsIDQ5MTk4LCA0OTIwMCwgNDkyMDMsIDQ5MjA1LCA0OTIwOCwgCisgICAgNDkyMTAsIDQ5MjEyLCA0OTIxNCwgNDkyMTYsIDQ5MjE4LCA0OTIyMCwgNDkyMjIsIDQ5MjI0LCA0OTIyNiwgNDkyMjgsIAorICAgIDQ5MjMwLCA0OTIzMiwgNDkyMzQsIDQ5MjM2LCA0OTIzOCwgNDkyNDAsIDQ5MjQyLCA0OTI0NywgNDkyNTIsIDQ5MjU3LCAKKyAgICA0OTI2MiwgNDkyNjcsIDQ5MjcyLCA0OTI3NywgNDkyODIsIDQ5Mjg3LCA0OTI5MiwgNDkyOTcsIDQ5MzAyLCA0OTMwNywgCisgICAgNDkzMTIsIDQ5MzE3LCA0OTMyMiwgNDkzMjcsIDQ5MzMyLCA0OTMzNywgNDkzNDIsIDQ5MzQ2LCA0OTM1MCwgNDkzNTQsIAorICAgIDQ5MzYwLCA0OTM2NiwgNDkzNzEsIDQ5Mzc2LCA0OTM4MSwgNDkzODcsIDQ5MzkzLCA0OTM5OCwgNDk0MDYsIDQ5NDE0LCAKKyAgICA0OTQyMiwgNDk0MzAsIDQ5NDM4LCA0OTQ0NiwgNDk0NTQsIDQ5NDYyLCA0OTQ2OCwgNDk0NzMsIDQ5NDc4LCA0OTQ4MywgCisgICAgNDk0ODYsIDQ5NDkwLCA0OTQ5NCwgNDk0OTgsIDQ5NTAyLCA0OTUwNiwgNDk1MTAsIDQ5NTE3LCA0OTUyNCwgNDk1MzIsIAorICAgIDQ5NTQwLCA0OTU0NSwgNDk1NTAsIDQ5NTU3LCA0OTU2NCwgNDk1NzEsIDQ5NTc4LCA0OTU4MSwgNDk1ODQsIDQ5NTg5LCAKKyAgICA0OTU5MSwgNDk1OTUsIDQ5NjAwLCA0OTYwMiwgNDk2MDQsIDQ5NjA2LCA0OTYwOCwgNDk2MTMsIDQ5NjE2LCA0OTYxOCwgCisgICAgNDk2MjMsIDQ5NjMwLCA0OTYzNywgNDk2NDAsIDQ5NjQ0LCA0OTY0OSwgNDk2NTQsIDQ5NjYyLCA0OTY2OCwgNDk2NzQsIAorICAgIDQ5Njg2LCA0OTY5MywgNDk3MDEsIDQ5NzA2LCA0OTcxMSwgNDk3MTcsIDQ5NzIwLCA0OTcyMywgNDk3MjgsIDQ5NzMwLCAKKyAgICA0OTczNCwgNDk3MzYsIDQ5NzM4LCA0OTc0MCwgNDk3NDIsIDQ5NzQ0LCA0OTc0NiwgNDk3NTEsIDQ5NzUzLCA0OTc1NSwgCisgICAgNDk3NTcsIDQ5NzU5LCA0OTc2MywgNDk3NjUsIDQ5NzY4LCA0OTc3MywgNDk3NzgsIDQ5NzgzLCA0OTc4OCwgNDk3OTQsIAorICAgIDQ5ODAwLCA0OTgwMiwgNDk4MDUsIDQ5ODEyLCA0OTgxOSwgNDk4MjYsIDQ5ODMzLCA0OTgzNywgNDk4NDEsIDQ5ODQzLCAKKyAgICA0OTg0NSwgNDk4NDksIDQ5ODU1LCA0OTg2MCwgNDk4NjIsIDQ5ODY2LCA0OTg3NSwgNDk4ODMsIDQ5ODkxLCA0OTg5NywgCisgICAgNDk5MDMsIDQ5OTA4LCA0OTkxNCwgNDk5MTksIDQ5OTIyLCA0OTkzNiwgNDk5MzksIDQ5OTQ0LCA0OTk0OSwgNDk5NTUsIAorICAgIDQ5OTY1LCA0OTk2NywgNDk5NzMsIDQ5OTc5LCA0OTk4MywgNDk5OTAsIDQ5OTk0LCA0OTk5NiwgNDk5OTgsIDUwMDAyLCAKKyAgICA1MDAwOCwgNTAwMTMsIDUwMDE5LCA1MDAyMSwgNTAwMjcsIDUwMDI5LCA1MDAzNSwgNTAwMzcsIDUwMDM5LCA1MDA0NCwgCisgICAgNTAwNDYsIDUwMDUwLCA1MDA1NSwgNTAwNTcsIDUwMDYyLCA1MDA2NywgNTAwNzEsIDUwMDc4LCA1MDA4OCwgNTAwOTMsIAorICAgIDUwMDk5LCA1MDEwMiwgNTAxMDgsIDUwMTExLCA1MDExNiwgNTAxMjEsIDUwMTI1LCA1MDEyNywgNTAxMjksIDUwMTMzLCAKKyAgICA1MDEzNywgNTAxNDEsIDUwMTQ1LCA1MDE1MCwgNTAxNTIsIDUwMTU3LCA1MDE2MCwgNTAxNjMsIDUwMTY2LCA1MDE3MCwgCisgICAgNTAxNzQsIDUwMTc5LCA1MDE4MywgNTAxODgsIDUwMTkzLCA1MDE5NywgNTAyMDIsIDUwMjA4LCA1MDIxMSwgNTAyMTcsIAorICAgIDUwMjIyLCA1MDIyNiwgNTAyMzEsIDUwMjM3LCA1MDI0MywgNTAyNTAsIDUwMjU2LCA1MDI2MywgNTAyNzAsIDUwMjcyLCAKKyAgICA1MDI3OSwgNTAyODMsIDUwMjg5LCA1MDI5NSwgNTAzMDAsIDUwMzA2LCA1MDMxMCwgNTAzMTUsIDUwMzE4LCA1MDMyMywgCisgICAgNTAzMjksIDUwMzM2LCA1MDM0NCwgNTAzNTEsIDUwMzYwLCA1MDM3MCwgNTAzNzcsIDUwMzgzLCA1MDM4NywgNTAzOTQsIAorICAgIDUwMzk5LCA1MDQwOCwgNTA0MTEsIDUwNDE0LCA1MDQyMywgNTA0MzMsIDUwNDQwLCA1MDQ0MiwgNTA0NDgsIDUwNDUzLCAKKyAgICA1MDQ1NSwgNTA0NTgsIDUwNDYyLCA1MDQ3MCwgNTA0NzksIDUwNDgyLCA1MDQ4NywgNTA0OTIsIDUwNTAwLCA1MDUwOCwgCisgICAgNTA1MTYsIDUwNTI0LCA1MDUzMCwgNTA1MzYsIDUwNTQyLCA1MDU1MCwgNTA1NTUsIDUwNTU4LCA1MDU2MiwgNTA1NjUsIAorICAgIDUwNTc3LCA1MDU4NywgNTA1OTgsIDUwNjA3LCA1MDYxOCwgNTA2MjgsIDUwNjM3LCA1MDY0MywgNTA2NTEsIDUwNjU1LCAKKyAgICA1MDY2MywgNTA2NjcsIDUwNjc1LCA1MDY4MiwgNTA2ODksIDUwNjk4LCA1MDcwNywgNTA3MTcsIDUwNzI3LCA1MDczNywgCisgICAgNTA3NDcsIDUwNzU2LCA1MDc2NSwgNTA3NzUsIDUwNzg1LCA1MDc5NCwgNTA4MDMsIDUwODA5LCA1MDgxNSwgNTA4MjEsIAorICAgIDUwODI3LCA1MDgzMywgNTA4MzksIDUwODQ2LCA1MDg1MiwgNTA4NTksIDUwODY2LCA1MDg3MiwgNTA4NzgsIDUwODg0LCAKKyAgICA1MDg5MCwgNTA4OTYsIDUwOTAyLCA1MDkwOSwgNTA5MTUsIDUwOTIyLCA1MDkyOSwgNTA5MzYsIDUwOTQzLCA1MDk1MCwgCisgICAgNTA5NTcsIDUwOTY0LCA1MDk3MSwgNTA5NzksIDUwOTg2LCA1MDk5NCwgNTEwMDIsIDUxMDA3LCA1MTAxMCwgNTEwMTQsIAorICAgIDUxMDE4LCA1MTAyNCwgNTEwMjcsIDUxMDMyLCA1MTAzOCwgNTEwNDMsIDUxMDQ3LCA1MTA1MiwgNTEwNTgsIDUxMDY1LCAKKyAgICA1MTA2OCwgNTEwNzUsIDUxMDgyLCA1MTA4NiwgNTEwOTQsIDUxMTAyLCA1MTEwNywgNTExMTMsIDUxMTE4LCA1MTEyMywgCisgICAgNTExMzAsIDUxMTM3LCA1MTE0NSwgNTExNTMsIDUxMTYyLCA1MTE2NiwgNTExNzUsIDUxMTgwLCA1MTE4NCwgNTExOTEsIAorICAgIDUxMTk1LCA1MTIwMSwgNTEyMDksIDUxMjE0LCA1MTIyMSwgNTEyMjUsIDUxMjMwLCA1MTIzNCwgNTEyMzksIDUxMjQzLCAKKyAgICA1MTI0OCwgNTEyNTMsIDUxMjYyLCA1MTI2NCwgNTEyNjcsIDUxMjcwLCA1MTI3NywgNTEyODQsIDUxMjkwLCA1MTI5OCwgCisgICAgNTEzMDQsIDUxMzExLCA1MTMxNiwgNTEzMTksIDUxMzI0LCA1MTMyOSwgNTEzMzQsIDUxMzQyLCA1MTM0NiwgNTEzNTMsIAorICAgIDUxMzYxLCA1MTM2OSwgNTEzNzQsIDUxMzc5LCA1MTM4NSwgNTEzOTAsIDUxMzk1LCA1MTQwMSwgNTE0MDYsIDUxNDA5LCAKKyAgICA1MTQxMywgNTE0MTcsIDUxNDI0LCA1MTQzNCwgNTE0MzksIDUxNDQ4LCA1MTQ1NywgNTE0NjMsIDUxNDY5LCA1MTQ3NCwgCisgICAgNTE0NzksIDUxNDg0LCA1MTQ4OSwgNTE0OTUsIDUxNTAxLCA1MTUwOSwgNTE1MTcsIDUxNTIzLCA1MTUyOSwgNTE1MzMsIAorICAgIDUxNTM3LCA1MTU0NCwgNTE1NTEsIDUxNTU3LCA1MTU2MCwgNTE1NjMsIDUxNTY3LCA1MTU3MSwgNTE1NzUsIDUxNTgwLCAKKyAgICA1MTU4NiwgNTE1OTIsIDUxNTk5LCA1MTYwNiwgNTE2MTEsIDUxNjE1LCA1MTYxOSwgNTE2MjMsIDUxNjI3LCA1MTYzMSwgCisgICAgNTE2MzUsIDUxNjM5LCA1MTY0MywgNTE2NDcsIDUxNjUxLCA1MTY1NSwgNTE2NTksIDUxNjYzLCA1MTY2NywgNTE2NzEsIAorICAgIDUxNjc1LCA1MTY3OSwgNTE2ODMsIDUxNjg3LCA1MTY5MSwgNTE2OTUsIDUxNjk5LCA1MTcwMywgNTE3MDcsIDUxNzExLCAKKyAgICA1MTcxNSwgNTE3MTksIDUxNzIzLCA1MTcyNywgNTE3MzEsIDUxNzM1LCA1MTczOSwgNTE3NDMsIDUxNzQ3LCA1MTc1MSwgCisgICAgNTE3NTUsIDUxNzU5LCA1MTc2MywgNTE3NjcsIDUxNzcxLCA1MTc3NSwgNTE3NzksIDUxNzgzLCA1MTc4NywgNTE3OTEsIAorICAgIDUxNzk1LCA1MTc5OSwgNTE4MDMsIDUxODA3LCA1MTgxMSwgNTE4MTUsIDUxODE5LCA1MTgyMywgNTE4MjcsIDUxODMxLCAKKyAgICA1MTgzNSwgNTE4MzksIDUxODQzLCA1MTg0NywgNTE4NTEsIDUxODU1LCA1MTg1OSwgNTE4NjMsIDUxODY3LCA1MTg3MSwgCisgICAgNTE4NzUsIDUxODc5LCA1MTg4MywgNTE4ODcsIDUxODkxLCA1MTg5NSwgNTE4OTksIDUxOTAzLCA1MTkwNywgNTE5MTEsIAorICAgIDUxOTE1LCA1MTkxOSwgNTE5MjMsIDUxOTI3LCA1MTkzMSwgNTE5MzUsIDUxOTM5LCA1MTk0MywgNTE5NDcsIDUxOTUxLCAKKyAgICA1MTk1NSwgNTE5NTksIDUxOTYzLCA1MTk2NywgNTE5NzEsIDUxOTc1LCA1MTk3OSwgNTE5ODMsIDUxOTg3LCA1MTk5MSwgCisgICAgNTE5OTUsIDUxOTk5LCA1MjAwMywgNTIwMDcsIDUyMDExLCA1MjAxNSwgNTIwMTksIDUyMDIzLCA1MjAyNywgNTIwMzEsIAorICAgIDUyMDM1LCA1MjAzOSwgNTIwNDMsIDUyMDQ3LCA1MjA1MSwgNTIwNTUsIDUyMDU5LCA1MjA2MywgNTIwNjcsIDUyMDcxLCAKKyAgICA1MjA3NSwgNTIwNzksIDUyMDgzLCA1MjA4NywgNTIwOTEsIDUyMDk1LCA1MjA5OSwgNTIxMDMsIDUyMTA3LCA1MjExMSwgCisgICAgNTIxMTUsIDUyMTE5LCA1MjEyMywgNTIxMjcsIDUyMTMxLCA1MjEzNSwgNTIxMzksIDUyMTQzLCA1MjE0NywgNTIxNTEsIAorICAgIDUyMTU1LCA1MjE1OSwgNTIxNjMsIDUyMTY3LCA1MjE3MSwgNTIxNzUsIDUyMTc5LCA1MjE4MywgNTIxODcsIDUyMTkxLCAKKyAgICA1MjE5NSwgNTIxOTksIDUyMjAzLCA1MjIwNywgNTIyMTEsIDUyMjE1LCA1MjIxOSwgNTIyMjMsIDUyMjI3LCA1MjIzMSwgCisgICAgNTIyMzUsIDUyMjM5LCA1MjI0MywgNTIyNDcsIDUyMjUxLCA1MjI1NSwgNTIyNTksIDUyMjYzLCA1MjI2NywgNTIyNzEsIAorICAgIDUyMjc1LCA1MjI3OSwgNTIyODMsIDUyMjg3LCA1MjI5MSwgNTIyOTUsIDUyMjk5LCA1MjMwMywgNTIzMDcsIDUyMzExLCAKKyAgICA1MjMxNSwgNTIzMTksIDUyMzIzLCA1MjMyNywgNTIzMzEsIDUyMzM1LCA1MjMzOSwgNTIzNDMsIDUyMzQ3LCA1MjM1MSwgCisgICAgNTIzNTUsIDUyMzU5LCA1MjM2MywgNTIzNjcsIDUyMzcxLCA1MjM3NSwgNTIzNzksIDUyMzgzLCA1MjM4NywgNTIzOTEsIAorICAgIDUyMzk1LCA1MjM5OSwgNTI0MDMsIDUyNDA3LCA1MjQxMSwgNTI0MTUsIDUyNDE5LCA1MjQyMywgNTI0MjcsIDUyNDMxLCAKKyAgICA1MjQzNSwgNTI0MzksIDUyNDQzLCA1MjQ0NywgNTI0NTEsIDUyNDU1LCA1MjQ1OSwgNTI0NjMsIDUyNDY3LCA1MjQ3MSwgCisgICAgNTI0NzUsIDUyNDc5LCA1MjQ4MywgNTI0ODcsIDUyNDkxLCA1MjQ5NSwgNTI0OTksIDUyNTAzLCA1MjUwNywgNTI1MTEsIAorICAgIDUyNTE1LCA1MjUxOSwgNTI1MjMsIDUyNTI3LCA1MjUzMSwgNTI1MzUsIDUyNTM5LCA1MjU0MywgNTI1NDcsIDUyNTUxLCAKKyAgICA1MjU1NSwgNTI1NTksIDUyNTYzLCA1MjU2NywgNTI1NzEsIDUyNTc1LCA1MjU3OSwgNTI1ODMsIDUyNTg3LCA1MjU5MSwgCisgICAgNTI1OTUsIDUyNTk5LCA1MjYwMywgNTI2MDcsIDUyNjExLCA1MjYxNSwgNTI2MTksIDUyNjIzLCA1MjYyNywgNTI2MzEsIAorICAgIDUyNjM1LCA1MjY0MiwgNTI2NTAsIDUyNjU2LCA1MjY2MiwgNTI2NjksIDUyNjc2LCA1MjY4MiwgNTI2ODgsIDUyNjk0LCAKKyAgICA1MjcwMCwgNTI3MDQsIDUyNzA4LCA1MjcxMywgNTI3MTgsIDUyNzI0LCA1MjczMCwgNTI3MzgsIDUyNzQ1LCA1Mjc1MCwgCisgICAgNTI3NTUsIDUyNzYzLCA1Mjc3MiwgNTI3NzksIDUyNzg5LCA1MjgwMCwgNTI4MDMsIDUyODA2LCA1MjgxMCwgNTI4MTQsIAorICAgIDUyODIxLCA1MjgyOCwgNTI4MzksIDUyODUwLCA1Mjg1OSwgNTI4NjgsIDUyODc0LCA1Mjg4MCwgNTI4ODcsIDUyODk0LCAKKyAgICA1MjkwMywgNTI5MTMsIDUyOTI0LCA1MjkzNCwgNTI5NDQsIDUyOTU0LCA1Mjk2NSwgNTI5NzYsIDUyOTg2LCA1Mjk5NywgCisgICAgNTMwMDcsIDUzMDE3LCA1MzAyNiwgNTMwMzYsIDUzMDQ2LCA1MzA1NiwgNTMwNjYsIDUzMDczLCA1MzA4MCwgNTMwODcsIAorICAgIDUzMDk0LCA1MzEwNCwgNTMxMTQsIDUzMTIyLCA1MzEzMCwgNTMxMzcsIDUzMTQ0LCA1MzE1MSwgNTMxNTgsIDUzMTY1LCAKKyAgICA1MzE3MCwgNTMxNzUsIDUzMTgxLCA1MzE4OSwgNTMxOTgsIDUzMjA2LCA1MzIxNCwgNTMyMjIsIDUzMjMwLCA1MzIzOCwgCisgICAgNTMyNDYsIDUzMjU0LCA1MzI2MiwgNTMyNzEsIDUzMjgwLCA1MzI4OSwgNTMyOTgsIDUzMzA3LCA1MzMxNiwgNTMzMjUsIAorICAgIDUzMzM0LCA1MzM0MywgNTMzNTIsIDUzMzYxLCA1MzM3MCwgNTMzNzksIDUzMzg4LCA1MzM5NywgNTM0MDYsIDUzNDIwLCAKKyAgICA1MzQzNSwgNTM0NDksIDUzNDY0LCA1MzQ3OCwgNTM0OTIsIDUzNTA2LCA1MzUyMCwgNTM1MzAsIDUzNTQxLCA1MzU1MSwgCisgICAgNTM1NjIsIDUzNTc3LCA1MzU5MiwgNTM2MDAsIDUzNjA2LCA1MzYxMywgNTM2MjAsIDUzNjI3LCA1MzYzNCwgNTM2MzksIAorICAgIDUzNjQ1LCA1MzY1MCwgNTM2NTUsIDUzNjYxLCA1MzY2NiwgNTM2NzEsIDUzNjc2LCA1MzY4MSwgNTM2ODYsIDUzNjkzLCAKKyAgICA1MzY5OSwgNTM3MDcsIDUzNzEyLCA1MzcxNywgNTM3MjEsIDUzNzI1LCA1MzczMywgNTM3NDEsIDUzNzQ5LCA1Mzc1NywgCisgICAgNTM3NjQsIDUzNzcxLCA1Mzc4NCwgNTM3OTcsIDUzODEwLCA1MzgyMywgNTM4MzEsIDUzODM5LCA1Mzg0NSwgNTM4NTEsIAorICAgIDUzODU4LCA1Mzg2NSwgNTM4NzIsIDUzODc5LCA1Mzg4MywgNTM4ODgsIDUzODk2LCA1MzkwNCwgNTM5MTIsIDUzOTE5LCAKKyAgICA1MzkyMywgNTM5MzEsIDUzOTM5LCA1Mzk0MywgNTM5NDcsIDUzOTUyLCA1Mzk1OSwgNTM5NjcsIDUzOTc1LCA1Mzk5NCwgCisgICAgNTQwMTMsIDU0MDMyLCA1NDA1MSwgNTQwNzAsIDU0MDg5LCA1NDEwOCwgNTQxMjcsIDU0MTMzLCA1NDE0MCwgNTQxNDksIAorICAgIDU0MTU3LCA1NDE2NSwgNTQxNzEsIDU0MTc0LCA1NDE3NywgNTQxODIsIDU0MTg1LCA1NDIwNSwgNTQyMTIsIDU0MjE4LCAKKyAgICA1NDIyNCwgNTQyMjgsIDU0MjMxLCA1NDIzNCwgNTQyMzcsIDU0MjQ5LCA1NDI2MywgNTQyNzAsIDU0Mjc3LCA1NDI4MCwgCisgICAgNTQyODQsIDU0Mjg3LCA1NDI5MiwgNTQyOTcsIDU0MzAyLCA1NDMwOCwgNTQzMTcsIDU0MzI0LCA1NDMzMSwgNTQzMzksIAorICAgIDU0MzQ2LCA1NDM1MywgNTQzNTYsIDU0MzYyLCA1NDM2OCwgNTQzNzEsIDU0Mzc0LCA1NDM3OSwgNTQzODQsIDU0MzkwLCAKKyAgICA1NDM5NiwgNTQ0MDAsIDU0NDA1LCA1NDQxMiwgNTQ0MTYsIDU0NDIyLCA1NDQyNiwgNTQ0MzAsIDU0NDM4LCA1NDQ1MCwgCisgICAgNTQ0NTksIDU0NDYzLCA1NDQ2NSwgNTQ0NzQsIDU0NDgzLCA1NDQ4OSwgNTQ0OTIsIDU0NDk4LCA1NDUwNCwgNTQ1MDksIAorICAgIDU0NTE0LCA1NDUxOSwgNTQ1MjQsIDU0NTI5LCA1NDUzNCwgNTQ1MzYsIDU0NTQyLCA1NDU0NywgNTQ1NTUsIDU0NTU5LCAKKyAgICA1NDU2NSwgNTQ1NjgsIDU0NTcyLCA1NDU3OSwgNTQ1ODYsIDU0NTg4LCA1NDU5MCwgNTQ1OTYsIDU0NjAyLCA1NDYwOCwgCisgICAgNTQ2MTcsIDU0NjI2LCA1NDYzMywgNTQ2NDAsIDU0NjQ2LCA1NDY1MywgNTQ2NTgsIDU0NjYzLCA1NDY2OCwgNTQ2NzQsIAorICAgIDU0NjgwLCA1NDY4NSwgNTQ2OTIsIDU0Njk2LCA1NDcwMCwgNTQ3MTMsIDU0NzI2LCA1NDczOCwgNTQ3NDcsIDU0NzUzLCAKKyAgICA1NDc2MCwgNTQ3NjUsIDU0NzcwLCA1NDc3NSwgNTQ3ODAsIDU0Nzg1LCA1NDc4NywgNTQ3OTQsIDU0ODAyLCA1NDgxMCwgCisgICAgNTQ4MTgsIDU0ODI1LCA1NDgzMywgNTQ4MzksIDU0ODQ0LCA1NDg1MCwgNTQ4NTYsIDU0ODYyLCA1NDg2OSwgNTQ4NzUsIAorICAgIDU0ODgzLCA1NDg5MSwgNTQ4OTksIDU0OTA3LCA1NDkxNSwgNTQ5MjEsIDU0OTI3LCA1NDkzNiwgNTQ5NDAsIDU0OTQ5LCAKKyAgICA1NDk1OCwgNTQ5NjcsIDU0OTc1LCA1NDk3OSwgNTQ5ODUsIDU0OTkyLCA1NDk5OSwgNTUwMDMsIDU1MDA5LCA1NTAxNywgCisgICAgNTUwMjMsIDU1MDI4LCA1NTAzNCwgNTUwMzksIDU1MDQ0LCA1NTA1MSwgNTUwNTgsIDU1MDYzLCA1NTA2OCwgNTUwNzYsIAorICAgIDU1MDg0LCA1NTA5NCwgNTUxMDQsIDU1MTExLCA1NTExOCwgNTUxMjIsIDU1MTI2LCA1NTEzOCwgNTUxNDQsIDU1MTUxLCAKKyAgICA1NTE1NiwgNTUxNjEsIDU1MTY4LCA1NTE3NSwgNTUxODEsIDU1MTg3LCA1NTE5NywgNTUyMDQsIDU1MjEyLCA1NTIyMCwgCisgICAgNTUyMjksIDU1MjM2LCA1NTI0MiwgNTUyNDksIDU1MjU1LCA1NTI2MywgNTUyNzEsIDU1Mjc5LCA1NTI4NywgNTUyOTMsIAorICAgIDU1Mjk4LCA1NTMwOCwgNTUzMTksIDU1MzI2LCA1NTMzNSwgNTUzNDEsIDU1MzQ2LCA1NTM1MSwgNTUzNjEsIDU1MzY4LCAKKyAgICA1NTM3NCwgNTUzODAsIDU1Mzg4LCA1NTM5MywgNTU0MDAsIDU1NDA3LCA1NTQxOCwgNTU0MjUsIDU1NDMyLCA1NTQzOSwgCisgICAgNTU0NDYsIDU1NDUzLCA1NTQ2MSwgNTU0NjksIDU1NDgyLCA1NTQ5NSwgNTU1MDcsIDU1NTE5LCA1NTUzMywgNTU1NDcsIAorICAgIDU1NTUzLCA1NTU1OSwgNTU1NjgsIDU1NTc3LCA1NTU4NCwgNTU1OTEsIDU1NjAwLCA1NTYwOSwgNTU2MTgsIDU1NjI3LCAKKyAgICA1NTYzNSwgNTU2NDMsIDU1NjUzLCA1NTY2MywgNTU2NzcsIDU1NjkxLCA1NTcwMCwgNTU3MDksIDU1NzIyLCA1NTczNSwgCisgICAgNTU3NDQsIDU1NzUzLCA1NTc2NCwgNTU3NzUsIDU1NzgxLCA1NTc4NywgNTU3OTYsIDU1ODA1LCA1NTgxMCwgNTU4MTUsIAorICAgIDU1ODIzLCA1NTgyOSwgNTU4MzUsIDU1ODQzLCA1NTg1MSwgNTU4NjQsIDU1ODc3LCA1NTg4MSwgNTU4ODUsIDU1ODkzLCAKKyAgICA1NTkwMSwgNTU5MDgsIDU1OTE2LCA1NTkyNCwgNTU5MzMsIDU1OTQyLCA1NTk0OCwgNTU5NTQsIDU1OTYxLCA1NTk2OCwgCisgICAgNTU5NzUsIDU1OTgyLCA1NTk5MSwgNTYwMDAsIDU2MDAzLCA1NjAwNiwgNTYwMTEsIDU2MDE2LCA1NjAyMiwgNTYwMjgsIAorICAgIDU2MDM1LCA1NjA0MiwgNTYwNTMsIDU2MDY0LCA1NjA3MSwgNTYwNzgsIDU2MDg2LCA1NjA5NCwgNTYxMDIsIDU2MTEwLCAKKyAgICA1NjExOCwgNTYxMjYsIDU2MTMyLCA1NjEzOCwgNTYxNDIsIDU2MTQ2LCA1NjE1NCwgNTYxNjIsIDU2MTY3LCA1NjE3MiwgCisgICAgNTYxNzcsIDU2MTgyLCA1NjE4OCwgNTYyMDIsIDU2MjA5LCA1NjIxNiwgNTYyMjAsIDU2MjIyLCA1NjIyNCwgNTYyMjksIAorICAgIDU2MjM0LCA1NjIzOSwgNTYyNDQsIDU2MjUyLCA1NjI1OSwgNTYyNjYsIDU2Mjc0LCA1NjI4NiwgNTYyOTQsIDU2MzAyLCAKKyAgICA1NjMxMywgNTYzMTcsIDU2MzIxLCA1NjMyNywgNTYzMzUsIDU2MzQ4LCA1NjM1NSwgNTYzNjIsIDU2MzY5LCA1NjM3NSwgCisgICAgNTYzODIsIDU2MzkxLCA1NjQwMCwgNTY0MDYsIDU2NDEyLCA1NjQxOCwgNTY0MjgsIDU2NDM4LCA1NjQ0NiwgNTY0NTUsIAorICAgIDU2NDYwLCA1NjQ2MywgNTY0NjgsIDU2NDczLCA1NjQ3OCwgNTY0ODQsIDU2NDkwLCA1NjQ5NCwgNTY0OTcsIDU2NTAwLCAKKyAgICA1NjUwMywgNTY1MDgsIDU2NTEzLCA1NjUxOSwgNTY1MjUsIDU2NTI5LCA1NjUzMywgNTY1NDAsIDU2NTQ3LCA1NjU1NCwgCisgICAgNTY1NjEsIDU2NTY4LCA1NjU3NSwgNTY1ODUsIDU2NTk1LCA1NjYwMiwgNTY2MDksIDU2NjE3LCA1NjYyNSwgNTY2MjksIAorICAgIDU2NjM0LCA1NjYzOSwgNTY2NDUsIDU2NjUxLCA1NjY1NCwgNTY2NTcsIDU2NjYwLCA1NjY2MywgNTY2NjgsIDU2NjczLCAKKyAgICA1NjY3OCwgNTY2ODMsIDU2Njg4LCA1NjY5MywgNTY2OTcsIDU2NzAxLCA1NjcwNSwgNTY3MTAsIDU2NzE1LCA1NjcxOSwgCisgICAgNTY3MjMsIDU2NzI5LCA1NjczMywgNTY3MzksIDU2NzQ0LCA1Njc1MSwgNTY3NTksIDU2NzY2LCA1Njc3NCwgNTY3ODEsIAorICAgIDU2Nzg5LCA1Njc5OCwgNTY4MDUsIDU2ODE1LCA1NjgyNiwgNTY4MzIsIDU2ODQxLCA1Njg0NywgNTY4NTYsIDU2ODY1LCAKKyAgICA1Njg3MSwgNTY4NzcsIDU2ODgxLCA1Njg4NSwgNTY4OTQsIDU2OTAzLCA1NjkxMCwgNTY5MTcsIDU2OTI2LCA1NjkzNSwgCisgICAgNTY5NDEsIDU2OTQ3LCA1Njk1NCwgNTY5NTksIDU2OTYzLCA1Njk2NywgNTY5NzIsIDU2OTc3LCA1Njk4MiwgNTY5OTAsIAorICAgIDU2OTk4LCA1NzAwMSwgNTcwMDUsIDU3MDE0LCA1NzAyNCwgNTcwMzMsIDU3MDQzLCA1NzA1NCwgNTcwNjcsIDU3MDcxLCAKKyAgICA1NzA3NSwgNTcwNzksIDU3MDgzLCA1NzA4OCwgNTcwOTMsIDU3MDk5LCA1NzEwNSwgNTcxMTIsIDU3MTE5LCA1NzEyNSwgCisgICAgNTcxMzEsIDU3MTM3LCA1NzE0MywgNTcxNTEsIDU3MTU5LCA1NzE2NiwgNTcxNzMsIDU3MTgwLCAwLCAwLCA1NzE4NywgCisgICAgNTcxOTYsIDU3MjA1LCA1NzIxNSwgNTcyMjUsIDU3MjM0LCA1NzI0MywgNTcyNTIsIDU3MjYxLCA1NzI2NywgNTcyNzIsIAorICAgIDU3MjgxLCA1NzI5MSwgNTczMDAsIDU3MzEwLCA1NzMxNywgNTczMjQsIDU3MzMxLCA1NzMzOCwgNTczNDMsIDU3MzQ4LCAKKyAgICA1NzM1MywgNTczNTgsIDU3MzY2LCA1NzM3NSwgNTczODMsIDU3MzkyLCA1NzM5NiwgNTc0MDAsIDU3NDA0LCA1NzQwOCwgCisgICAgNTc0MTgsIDAsIDAsIDU3NDIxLCA1NzQzMCwgNTc0MzksIDU3NDQ4LCA1NzQ1NywgNTc0NjMsIDU3NDY5LCA1NzQ3NSwgCisgICAgNTc0ODEsIDU3NDkxLCA1NzUwMSwgNTc1MTEsIDU3NTIxLCA1NzUzMSwgNTc1NDEsIDU3NTUxLCA1NzU2MSwgNTc1NjgsIAorICAgIDU3NTc1LCA1NzU4MiwgNTc1ODksIDU3NTk2LCA1NzYwMywgNTc2MTAsIDU3NjE3LCA1NzYyMywgNTc2MjksIDU3NjM1LCAKKyAgICA1NzY0MSwgNTc2NDcsIDU3NjUzLCA1NzY1OSwgNTc2NjUsIDU3Njc2LCAwLCAwLCAwLCA1NzY4NiwgNTc2OTMsIDU3Njk2LCAKKyAgICA1NzcwMCwgNTc3MDQsIDU3NzA5LCA1NzcxNCwgNTc3MTksIDU3NzIyLCA1NzczMSwgNTc3NDAsIDU3NzQ5LCAwLCA1Nzc1OCwgCisgICAgNTc3NjQsIDU3NzcwLCA1Nzc3OCwgNTc3ODgsIDU3Nzk1LCA1NzgwNCwgNTc4MDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3ODEyLCA1NzgyMSwgCisgICAgNTc4MzAsIDU3ODM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1Nzg0OCwgCisgICAgNTc4NTMsIDU3ODU4LCA1Nzg2MywgNTc4NjgsIDU3ODczLCA1Nzg3OCwgNTc4ODMsIDU3ODg4LCA1Nzg5MywgNTc4OTgsIAorICAgIDU3OTA0LCA1NzkwOCwgNTc5MTMsIDU3OTE4LCA1NzkyMywgNTc5MjgsIDU3OTMzLCA1NzkzOCwgNTc5NDMsIDU3OTQ4LCAKKyAgICA1Nzk1MywgNTc5NTgsIDU3OTYzLCA1Nzk2OCwgNTc5NzMsIDU3OTc4LCA1Nzk4MywgNTc5ODgsIDU3OTkzLCA1Nzk5OCwgCisgICAgNTgwMDMsIDU4MDA4LCA1ODAxMywgNTgwMTgsIDU4MDI0LCA1ODAyOSwgNTgwMzUsIDU4MDQ0LCA1ODA0OSwgNTgwNTcsIAorICAgIDU4MDY0LCA1ODA3MywgNTgwNzgsIDU4MDgzLCA1ODA4OCwgNTgwOTQsIDAsIDU4MTAxLCA1ODEwNiwgNTgxMTEsIDU4MTE2LCAKKyAgICA1ODEyMSwgNTgxMjYsIDU4MTMxLCA1ODEzNiwgNTgxNDEsIDU4MTQ2LCA1ODE1MSwgNTgxNTcsIDU4MTYxLCA1ODE2NiwgCisgICAgNTgxNzEsIDU4MTc2LCA1ODE4MSwgNTgxODYsIDU4MTkxLCA1ODE5NiwgNTgyMDEsIDU4MjA2LCA1ODIxMSwgNTgyMTYsIAorICAgIDU4MjIxLCA1ODIyNiwgNTgyMzEsIDU4MjM2LCA1ODI0MSwgNTgyNDYsIDU4MjUxLCA1ODI1NiwgNTgyNjEsIDU4MjY2LCAKKyAgICA1ODI3MSwgNTgyNzcsIDU4MjgyLCA1ODI4OCwgNTgyOTcsIDU4MzAyLCA1ODMxMCwgNTgzMTcsIDU4MzI2LCA1ODMzMSwgCisgICAgNTgzMzYsIDU4MzQxLCA1ODM0NywgMCwgNTgzNTQsIDU4MzYyLCA1ODM3MCwgNTgzNzksIDU4Mzg2LCA1ODM5NCwgNTg0MDAsIAorICAgIDU4NDA5LCA1ODQxNywgNTg0MjUsIDU4NDMzLCA1ODQ0MSwgNTg0NDksIDU4NDU3LCA1ODQ2MiwgNTg0NjksIDU4NDc1LCAKKyAgICA1ODQ4MiwgNTg0OTAsIDU4NDk3LCA1ODUwNCwgNTg1MTIsIDU4NTE4LCA1ODUyNCwgNTg1MzEsIDU4NTM4LCA1ODU0OCwgCisgICAgNTg1NTgsIDU4NTY1LCA1ODU3MiwgNTg1NzcsIDU4NTg3LCA1ODU5NywgNTg2MDIsIDU4NjA3LCA1ODYxMiwgNTg2MTcsIAorICAgIDU4NjIyLCA1ODYyNywgNTg2MzIsIDU4NjM3LCA1ODY0MiwgNTg2NDcsIDU4NjUyLCA1ODY1NywgNTg2NjIsIDU4NjY3LCAKKyAgICA1ODY3MiwgNTg2NzcsIDU4NjgyLCA1ODY4NywgNTg2OTIsIDU4Njk3LCA1ODcwMiwgNTg3MDcsIDU4NzEyLCA1ODcxNywgCisgICAgNTg3MjIsIDU4NzI3LCA1ODczMiwgNTg3MzcsIDU4NzQyLCA1ODc0NywgNTg3NTEsIDU4NzU1LCA1ODc2MCwgNTg3NjUsIAorICAgIDU4NzcwLCA1ODc3NSwgNTg3ODAsIDU4Nzg1LCA1ODc5MCwgNTg3OTUsIDU4ODAwLCA1ODgwNSwgNTg4MTAsIDU4ODE1LCAKKyAgICA1ODgyMCwgNTg4MjUsIDU4ODMwLCA1ODgzNSwgNTg4NDAsIDU4ODQ1LCA1ODg1MiwgNTg4NTksIDU4ODY2LCA1ODg3MywgCisgICAgNTg4ODAsIDU4ODg3LCA1ODg5NCwgNTg5MDEsIDU4OTA4LCA1ODkxNSwgNTg5MjIsIDU4OTI5LCA1ODkzNiwgNTg5NDMsIAorICAgIDU4OTQ4LCA1ODk1MywgNTg5NjAsIDU4OTY3LCA1ODk3NCwgNTg5ODEsIDU4OTg4LCA1ODk5NSwgNTkwMDIsIDU5MDA5LCAKKyAgICA1OTAxNiwgNTkwMjMsIDU5MDMwLCA1OTAzNywgNTkwNDMsIDU5MDQ5LCA1OTA1NSwgNTkwNjEsIDU5MDY4LCA1OTA3NSwgCisgICAgNTkwODIsIDU5MDg5LCA1OTA5NiwgNTkxMDMsIDU5MTEwLCA1OTExNywgNTkxMjQsIDU5MTMxLCA1OTEzOSwgNTkxNDcsIAorICAgIDU5MTU1LCA1OTE2MywgNTkxNzEsIDU5MTc5LCA1OTE4NywgNTkxOTUsIDU5MTk5LCA1OTIwNSwgNTkyMTEsIDU5MjE1LCAKKyAgICA1OTIyMSwgNTkyMjcsIDU5MjMzLCA1OTI0MCwgNTkyNDcsIDU5MjU0LCA1OTI2MSwgNTkyNjYsIDU5MjcyLCA1OTI3OCwgCisgICAgNTkyODUsIDAsIDAsIDAsIDAsIDAsIDU5MjkyLCA1OTMwMCwgNTkzMDksIDU5MzE4LCA1OTMyNiwgNTkzMzIsIDU5MzM3LCAKKyAgICA1OTM0MiwgNTkzNDcsIDU5MzUyLCA1OTM1NywgNTkzNjIsIDU5MzY3LCA1OTM3MiwgNTkzNzcsIDU5MzgyLCA1OTM4NywgCisgICAgNTkzOTIsIDU5Mzk3LCA1OTQwMiwgNTk0MDcsIDU5NDEyLCA1OTQxNywgNTk0MjIsIDU5NDI3LCA1OTQzMiwgNTk0MzcsIAorICAgIDU5NDQyLCA1OTQ0NywgNTk0NTIsIDU5NDU3LCA1OTQ2MiwgNTk0NjcsIDU5NDcyLCA1OTQ3NywgNTk0ODIsIDU5NDg3LCAKKyAgICA1OTQ5MiwgNTk0OTcsIDU5NTAyLCA1OTUwNywgNTk1MTIsIDU5NTE3LCA1OTUyMiwgNTk1MjcsIDAsIDU5NTMyLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA1OTUzNywgMCwgMCwgNTk1NDIsIDU5NTQ2LCA1OTU1MSwgNTk1NTYsIDU5NTYxLCA1OTU2NiwgNTk1NzUsIAorICAgIDU5NTgwLCA1OTU4NSwgNTk1OTAsIDU5NTk1LCA1OTYwMCwgNTk2MDUsIDU5NjEwLCA1OTYxNSwgNTk2MjIsIDU5NjI3LCAKKyAgICA1OTYzMiwgNTk2NDEsIDU5NjQ4LCA1OTY1MywgNTk2NTgsIDU5NjYzLCA1OTY3MCwgNTk2NzUsIDU5NjgyLCA1OTY4NywgCisgICAgNTk2OTIsIDU5Njk5LCA1OTcwNiwgNTk3MTEsIDU5NzE2LCA1OTcyMSwgNTk3MjgsIDU5NzM1LCA1OTc0MCwgNTk3NDUsIAorICAgIDU5NzUwLCA1OTc1NSwgNTk3NjAsIDU5NzY3LCA1OTc3NCwgNTk3NzksIDU5Nzg0LCA1OTc4OSwgNTk3OTQsIDU5Nzk5LCAKKyAgICA1OTgwNCwgNTk4MDksIDU5ODE0LCA1OTgxOSwgNTk4MjQsIDU5ODI5LCA1OTgzNiwgNTk4NDEsIDU5ODQ2LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA1OTg1MSwgNTk4NTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU5ODYzLCA1OTg2OCwgNTk4NzIsIDU5ODc2LCA1OTg4MCwgNTk4ODQsIDU5ODg4LCA1OTg5MiwgNTk4OTYsIDU5OTAwLCAKKyAgICA1OTkwNCwgNTk5MDgsIDU5OTE0LCA1OTkxOCwgNTk5MjIsIDU5OTI2LCA1OTkzMCwgNTk5MzQsIDU5OTM4LCA1OTk0MiwgCisgICAgNTk5NDYsIDU5OTUwLCA1OTk1NCwgNTk5NTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5OTYyLCA1OTk2NiwgCisgICAgNTk5NzAsIDU5OTc0LCA1OTk3OCwgNTk5ODIsIDU5OTg2LCAwLCA1OTk5MCwgNTk5OTQsIDU5OTk4LCA2MDAwMiwgNjAwMDYsIAorICAgIDYwMDEwLCA2MDAxNCwgMCwgNjAwMTgsIDYwMDIyLCA2MDAyNiwgNjAwMzAsIDYwMDM0LCA2MDAzOCwgNjAwNDIsIDAsIAorICAgIDYwMDQ2LCA2MDA1MCwgNjAwNTQsIDYwMDU4LCA2MDA2MiwgNjAwNjYsIDYwMDcwLCAwLCA2MDA3NCwgNjAwNzgsIDYwMDgyLCAKKyAgICA2MDA4NiwgNjAwOTAsIDYwMDk0LCA2MDA5OCwgMCwgNjAxMDIsIDYwMTA2LCA2MDExMCwgNjAxMTQsIDYwMTE4LCA2MDEyMiwgCisgICAgNjAxMjYsIDAsIDYwMTMwLCA2MDEzNCwgNjAxMzgsIDYwMTQyLCA2MDE0NiwgNjAxNTAsIDYwMTU0LCAwLCA2MDE1OCwgCisgICAgNjAxNjIsIDYwMTY2LCA2MDE3MCwgNjAxNzQsIDYwMTc4LCA2MDE4MiwgMCwgNjAxODYsIDYwMTkxLCA2MDE5NiwgNjAyMDEsIAorICAgIDYwMjA2LCA2MDIxMSwgNjAyMTYsIDYwMjIwLCA2MDIyNSwgNjAyMzAsIDYwMjM1LCA2MDIzOSwgNjAyNDQsIDYwMjQ5LCAKKyAgICA2MDI1NCwgNjAyNTksIDYwMjYzLCA2MDI2OCwgNjAyNzMsIDYwMjc4LCA2MDI4MywgNjAyODgsIDYwMjkzLCA2MDI5NywgCisgICAgNjAzMDIsIDYwMzA3LCA2MDMxNCwgNjAzMTksIDYwMzI0LCA2MDMzMCwgNjAzMzcsIDYwMzQ0LCA2MDM1MywgNjAzNjAsIAorICAgIDYwMzY5LCA2MDM3MywgNjAzNzcsIDYwMzgzLCA2MDM4OSwgNjAzOTUsIDYwNDAzLCA2MDQwOSwgNjA0MTMsIDYwNDE3LCAKKyAgICA2MDQyMSwgNjA0MjcsIDYwNDMzLCA2MDQzNywgNjA0MzksIDYwNDQzLCA2MDQ0OSwgNjA0NTEsIDYwNDU1LCA2MDQ1OCwgCisgICAgNjA0NjEsIDYwNDY3LCA2MDQ3MiwgNjA0NzYsIDYwNDgwLCA2MDQ4NSwgNjA0OTEsIDYwNDk2LCA2MDUwMSwgNjA1MDYsIAorICAgIDYwNTExLCA2MDUxOCwgNjA1MjUsIDYwNTMwLCA2MDUzNSwgNjA1NDAsIDYwNTQ1LCA2MDU1MCwgNjA1NTUsIDYwNTU5LCAKKyAgICA2MDU2MywgNjA1NzAsIDYwNTc3LCA2MDU4MywgNjA1ODcsIDYwNTkyLCA2MDU5NSwgNjA1OTksIDYwNjA2LCA2MDYxMCwgCisgICAgNjA2MTQsIDYwNjE4LCA2MDYyMiwgNjA2MjgsIDYwNjM0LCA2MDYzOCwgNjA2NDQsIDYwNjQ4LCA2MDY1MiwgNjA2NTgsIAorICAgIDYwNjYzLCA2MDY2OCwgNjA2NzAsIDYwNjczLCA2MDY3NywgNjA2ODMsIDYwNjg5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTQ1MCwgMzE0NTYsIDMxNDYyLCAzMTQ2NiwgMzE0NzAsIDMxNDc0LCAKLSAgICAzMTQ3OCwgMzE0ODQsIDMxNDg4LCAzMTQ5NCwgMzE0OTgsIDMxNTA0LCAzMTUxMCwgMzE1MTgsIDMxNTI0LCAzMTUzMiwgCi0gICAgMzE1MzYsIDMxNTQwLCAzMTU0NCwgMzE1NTAsIDMxNTUzLCAzMTU1OSwgMzE1NjMsIDMxNTY5LCAzMTU3MywgMzE1NzcsIAotICAgIDMxNTgzLCAzMTU4NywgMzE1OTMsIDMxNTk3LCAzMTYwMywgMzE2MTEsIDMxNjE5LCAzMTYyNywgMzE2MzMsIDMxNjM3LCAKLSAgICAzMTY0MywgMzE2NDcsIDMxNjUzLCAzMTY1NywgMzE2NjAsIDMxNjY2LCAzMTY3MCwgMzE2NzYsIDMxNjc5LCAzMTY4MiwgCi0gICAgMzE2ODYsIDMxNjkwLCAzMTY5NCwgMzE3MDAsIDMxNzA2LCAzMTcxMCwgMzE3MTMsIDMxNzE3LCAzMTcyMiwgMzE3MjcsIAotICAgIDMxNzM0LCAzMTczOSwgMzE3NDYsIDMxNzUzLCAzMTc2MiwgMzE3NjksIDMxNzc4LCAzMTc4MywgMzE3OTAsIDMxNzk3LCAKLSAgICAzMTgwNiwgMzE4MTEsIDMxODE4LCAzMTgyMywgMzE4MjksIDMxODM1LCAzMTg0MSwgMzE4NDcsIDMxODUzLCAzMTg1OSwgMCwgCi0gICAgMCwgMCwgMCwgMzE4NjUsIDMxODY5LCAzMTg3MiwgMzE4NzUsIDMxODc4LCAzMTg4MSwgMzE4ODQsIDMxODg3LCAzMTg5MSwgCi0gICAgMzE4OTQsIDMxODk4LCAzMTkwMSwgMzE5MDQsIDMxOTA3LCAzMTkxMiwgMzE5MTcsIDMxOTIyLCAzMTkyNSwgMzE5MzAsIAotICAgIDMxOTM1LCAzMTk0MCwgMzE5NDUsIDMxOTUyLCAzMTk1NywgMzE5NjIsIDMxOTY3LCAzMTk3MiwgMzE5NzksIDMxOTg1LCAKLSAgICAzMTk5MSwgMzE5OTcsIDMyMDAzLCAzMjAwOSwgMzIwMTgsIDMyMDI3LCAzMjAzMywgMzIwMzksIDMyMDQ3LCAzMjA1NSwgCi0gICAgMzIwNjQsIDMyMDczLCAzMjA4MSwgMzIwODksIDMyMDk4LCAzMjEwNywgMCwgMCwgMCwgMzIxMTUsIDMyMTIwLCAzMjEyNSwgCi0gICAgMzIxMzAsIDMyMTM0LCAzMjEzOCwgMzIxNDIsIDMyMTQ3LCAzMjE1MSwgMzIxNTUsIDMyMTYwLCAzMjE2NCwgMzIxNjksIAotICAgIDMyMTc0LCAzMjE3OSwgMzIxODQsIDMyMTg5LCAzMjE5NCwgMzIxOTksIDMyMjA0LCAzMjIwOSwgMzIyMTQsIDMyMjE4LCAKLSAgICAzMjIyMywgMzIyMjgsIDMyMjMzLCAzMjIzNywgMzIyNDEsIDMyMjQ2LCAzMjI1MSwgMzIyNTYsIDMyMjYxLCAzMjI2NiwgCi0gICAgMzIyNzAsIDMyMjc2LCAzMjI4MiwgMzIyODgsIDMyMjk0LCAzMjMwMCwgMzIzMDYsIDMyMzEyLCAzMjMxOCwgMzIzMjQsIAotICAgIDMyMzI5LCAzMjMzNCwgMzIzNDEsIDMyMzQ5LCAzMjM1NCwgMzIzNTksIDMyMzY0LCAzMjM2OCwgMzIzNzIsIDMyMzc2LCAKLSAgICAzMjM4MCwgMzIzODQsIDMyMzg4LCAzMjM5MywgMzIzOTcsIDMyNDAyLCAzMjQwNiwgMzI0MTEsIDMyNDE2LCAzMjQyMSwgCi0gICAgMzI0MjcsIDMyNDMzLCAzMjQzNywgMzI0NDMsIDMyNDQ3LCAzMjQ1MywgMzI0NTksIDMyNDY0LCAzMjQ3MSwgMzI0NzUsIAotICAgIDMyNDgxLCAzMjQ4NiwgMzI0OTMsIDMyNDk4LCAzMjUwNSwgMzI1MTIsIDMyNTE3LCAzMjUyNCwgMzI1MjksIDMyNTM0LCAKLSAgICAzMjUzOSwgMzI1NDYsIDMyNTUwLCAzMjU1NiwgMzI1NjMsIDMyNTcwLCAzMjU3NSwgMzI1ODIsIDMyNTg5LCAzMjU5MywgCi0gICAgMzI1OTksIDMyNjA0LCAzMjYwOSwgMzI2MTYsIDMyNjIxLCAzMjYyNiwgMzI2MzEsIDMyNjM2LCAzMjY0MCwgMzI2NDQsIAotICAgIDMyNjQ5LCAzMjY1NCwgMzI2NjEsIDMyNjY3LCAzMjY3MiwgMzI2NzksIDMyNjg0LCAzMjY5MSwgMzI2OTYsIDMyNzA2LCAKLSAgICAzMjcxMiwgMzI3MTgsIDMyNzIyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjcyNiwgMzI3MzUsIDMyNzQyLCAzMjc0OSwgCi0gICAgMzI3NTYsIDMyNzYwLCAzMjc2NSwgMzI3NzAsIDMyNzc1LCAzMjc4MCwgMzI3ODUsIDMyNzkwLCAzMjc5NSwgMzI4MDAsIAotICAgIDMyODA1LCAzMjgxMCwgMzI4MTUsIDMyODIwLCAzMjgyNSwgMzI4MjksIDMyODM0LCAzMjgzOSwgMzI4NDQsIDMyODQ5LCAKLSAgICAzMjg1NCwgMzI4NTksIDMyODYzLCAzMjg2OCwgMzI4NzMsIDMyODc4LCAzMjg4MywgMzI4ODcsIDMyODkyLCAzMjg5NywgCi0gICAgMzI5MDEsIDMyOTA2LCAzMjkxMSwgMzI5MTYsIDMyOTIxLCAzMjkyNiwgMzI5MzAsIDMyOTM2LCAzMjk0MywgMzI5NDksIAotICAgIDMyOTU0LCAzMjk1OSwgMzI5NjUsIDMyOTcwLCAzMjk3NiwgMzI5ODEsIDMyOTg3LCAzMjk5MywgMzI5OTgsIDMzMDA0LCAKLSAgICAzMzAxMCwgMzMwMTUsIDMzMDIxLCAzMzAyNywgMzMwMzMsIDMzMDM4LCAwLCAwLCAwLCAzMzA0MywgMzMwNDksIDMzMDU5LCAKLSAgICAzMzA2NSwgMzMwNzMsIDMzMDc5LCAzMzA4NCwgMzMwODgsIDMzMDkyLCAzMzA5NiwgMzMxMDAsIDMzMTA0LCAzMzEwOCwgCi0gICAgMzMxMTMsIDMzMTE3LCAwLCAwLCAwLCAzMzEyMiwgMzMxMjcsIDMzMTMyLCAzMzEzNywgMzMxNDQsIDMzMTUwLCAzMzE1NiwgCi0gICAgMzMxNjIsIDMzMTY4LCAzMzE3NCwgMzMxODAsIDMzMTg3LCAzMzE5MywgMzMyMDAsIDMzMjA3LCAzMzIxNCwgMzMyMjEsIAotICAgIDMzMjI4LCAzMzIzNSwgMzMyNDIsIDMzMjQ5LCAzMzI1NiwgMzMyNjMsIDMzMjcwLCAzMzI3NywgMzMyODQsIDMzMjkxLCAKLSAgICAzMzI5OCwgMzMzMDUsIDMzMzEyLCAzMzMxOSwgMzMzMjYsIDMzMzMzLCAzMzM0MCwgMzMzNDcsIDMzMzU0LCAzMzM2MSwgCi0gICAgMzMzNjgsIDMzMzc1LCAzMzM4MiwgMzMzODksIDMzMzk2LCAzMzQwMywgMzM0MTAsIDMzNDE4LCAzMzQyNiwgMzM0MzQsIAotICAgIDMzNDQwLCAzMzQ0NiwgMzM0NTIsIDMzNDYwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAzMzQ2OSwgMzM0NzcsIDMzNDg1LCAzMzQ5MywgMzM1MDEsIDMzNTExLCAzMzUyMSwgMzM1MzEsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDMzNTQxLCAzMzU0NiwgMzM1NTEsIDMzNTU2LCAzMzU2MSwgMzM1NzAsIDMzNTgxLCAzMzU5MCwgMzM2MDEsIAotICAgIDMzNjA3LCAzMzYyMCwgMzM2MjYsIDMzNjMzLCAzMzY0MCwgMzM2NDUsIDMzNjUxLCAzMzY1NywgMzM2NjgsIDMzNjc3LCAKLSAgICAzMzY4NCwgMzM2OTEsIDMzNzAwLCAzMzcwNywgMzM3MTYsIDMzNzI2LCAzMzczNiwgMzM3NDMsIDMzNzUwLCAzMzc1NywgCi0gICAgMzM3NjcsIDMzNzcyLCAzMzc4MCwgMzM3ODYsIDMzNzk0LCAzMzgwMywgMzM4MDgsIDMzODE1LCAzMzgyMSwgMzM4MjYsIDAsIAotICAgIDMzODMxLCAzMzgzNywgMCwgMCwgMCwgMCwgMCwgMCwgMzM4NDQsIDMzODQ5LCAzMzg1NSwgMzM4NjIsIDMzODcwLCAzMzg3NiwgCi0gICAgMzM4ODIsIDMzODg4LCAzMzg5MywgMzM5MDAsIDMzOTA2LCAzMzkxMiwgMzM5MTgsIDMzOTI2LCAzMzkzMiwgMzM5NDAsIAotICAgIDMzOTQ1LCAzMzk1MSwgMzM5NTcsIDMzOTY0LCAzMzk3MiwgMzM5NzksIDMzOTg1LCAzMzk5MiwgMzM5OTksIDM0MDA1LCAKLSAgICAzNDAxMiwgMzQwMTksIDM0MDI1LCAzNDAzMCwgMzQwMzYsIDM0MDQ0LCAzNDA1MywgMzQwNTksIDM0MDY1LCAzNDA3MSwgCi0gICAgMzQwNzcsIDM0MDg1LCAzNDA4OSwgMzQwOTUsIDM0MTAxLCAzNDEwNywgMzQxMTMsIDM0MTE5LCAzNDEyNSwgMzQxMjksIAotICAgIDM0MTM0LCAzNDEzOSwgMzQxNDYsIDM0MTUxLCAzNDE1NSwgMzQxNjEsIDM0MTY2LCAzNDE3MSwgMzQxNzUsIDM0MTgwLCAKLSAgICAzNDE4NSwgMzQxODksIDM0MTk0LCAzNDE5OSwgMzQyMDYsIDM0MjEwLCAzNDIxNSwgMzQyMjAsIDM0MjI0LCAzNDIyOSwgCi0gICAgMzQyMzMsIDM0MjM4LCAzNDI0MiwgMzQyNDgsIDM0MjUzLCAzNDI2MCwgMzQyNjUsIDM0MjcwLCAzNDI3NCwgMzQyNzksIAotICAgIDM0Mjg0LCAzNDI5MSwgMzQyOTYsIDM0MzAyLCAzNDMwNywgMzQzMTIsIDM0MzE3LCAzNDMyMSwgMzQzMjYsIDM0MzMzLCAKLSAgICAzNDM0MCwgMzQzNDUsIDM0MzUwLCAzNDM1NCwgMzQzNjAsIDM0MzY3LCAzNDM3MiwgMzQzNzcsIDM0MzgyLCAzNDM4OCwgCi0gICAgMzQzOTMsIDM0Mzk5LCAzNDQwNCwgMzQ0MTAsIDM0NDE2LCAzNDQyMiwgMzQ0MjksIDM0NDM2LCAzNDQ0MywgMzQ0NTAsIAotICAgIDM0NDU3LCAzNDQ2NCwgMzQ0NjksIDM0NDc3LCAzNDQ4NiwgMzQ0OTUsIDM0NTA0LCAzNDUxMywgMzQ1MjIsIDM0NTMxLCAKLSAgICAzNDU0MywgMzQ1NTIsIDM0NTYxLCAzNDU3MCwgMzQ1NzcsIDM0NTgyLCAzNDU4OSwgMzQ1OTcsIDM0NjA1LCAzNDYxMiwgCi0gICAgMzQ2MTksIDM0NjI2LCAzNDYzMywgMzQ2NDEsIDM0NjUwLCAzNDY1OSwgMzQ2NjgsIDM0Njc3LCAzNDY4NiwgMzQ2OTUsIAotICAgIDM0NzA0LCAzNDcxMywgMzQ3MjIsIDM0NzMxLCAzNDc0MCwgMzQ3NDksIDM0NzU4LCAzNDc2NywgMzQ3NzUsIDM0Nzg0LCAKLSAgICAzNDc5NSwgMzQ4MDMsIDM0ODEyLCAzNDgyMywgMzQ4MzIsIDM0ODQxLCAzNDg1MCwgMzQ4NTksIDM0ODY3LCAzNDg3NiwgCi0gICAgMzQ4ODMsIDM0ODg4LCAzNDg5NiwgMzQ5MDEsIDM0OTA4LCAzNDkxMywgMzQ5MjIsIDM0OTI4LCAzNDkzNSwgMzQ5NDIsIAotICAgIDM0OTQ3LCAzNDk1MiwgMzQ5NjAsIDM0OTY4LCAzNDk3NywgMzQ5ODYsIDM0OTkxLCAzNDk5OCwgMzUwMDksIDM1MDE3LCAKLSAgICAzNTAyNiwgMzUwMzIsIDM1MDM4LCAzNTA0MywgMzUwNTAsIDM1MDU1LCAzNTA2NCwgMzUwNjksIDM1MDc0LCAzNTA3OSwgCi0gICAgMzUwODYsIDM1MDkzLCAzNTA5OCwgMzUxMDcsIDM1MTE1LCAzNTEyMCwgMzUxMjUsIDM1MTMyLCAzNTEzOSwgMzUxNDMsIAotICAgIDM1MTQ3LCAzNTE1MCwgMzUxNTMsIDM1MTU2LCAzNTE1OSwgMzUxNjIsIDM1MTY1LCAzNTE3MiwgMzUxNzUsIDM1MTc4LCAKLSAgICAzNTE4MywgMzUxODcsIDM1MTkxLCAzNTE5NSwgMzUxOTksIDM1MjAzLCAzNTIxMiwgMzUyMTgsIDM1MjI0LCAzNTIzMCwgCi0gICAgMzUyMzgsIDM1MjQ2LCAzNTI1MiwgMzUyNTgsIDM1MjY1LCAzNTI3MSwgMzUyNzYsIDM1MjgyLCAzNTI4OSwgMzUyOTUsIAotICAgIDM1MzAyLCAzNTMwOCwgMzUzMTYsIDM1MzIxLCAzNTMyNywgMzUzMzMsIDM1MzM5LCAzNTM0NSwgMzUzNTEsIDM1MzU3LCAKLSAgICAzNTM2MywgMzUzNzQsIDM1Mzg0LCAzNTM5MCwgMzUzOTYsIDM1NDA2LCAzNTQxMiwgMzU0MjAsIDM1NDI4LCAzNTQzNiwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMzU0NDEsIDM1NDQ4LCAzNTQ1NSwgMzU0NjAsIDM1NDY5LCAzNTQ3NywgMzU0ODUsIDM1NDkyLCAKLSAgICAzNTQ5OSwgMzU1MDYsIDM1NTEzLCAzNTUyMSwgMzU1MjksIDM1NTM5LCAzNTU0OSwgMzU1NTcsIDM1NTY1LCAzNTU3MywgCi0gICAgMzU1ODEsIDM1NTkwLCAzNTU5OSwgMzU2MDcsIDM1NjE1LCAzNTYyNCwgMzU2MzMsIDM1NjQzLCAzNTY1MywgMzU2NjIsIAotICAgIDM1NjcxLCAzNTY3OSwgMzU2ODcsIDM1Njk1LCAzNTcwMywgMzU3MTMsIDM1NzIzLCAzNTczMSwgMzU3MzksIDM1NzQ3LCAKLSAgICAzNTc1NSwgMzU3NjMsIDM1NzcxLCAzNTc3OSwgMzU3ODcsIDM1Nzk1LCAzNTgwMywgMzU4MTEsIDM1ODE5LCAzNTgyOCwgCi0gICAgMzU4MzcsIDM1ODQ2LCAzNTg1NSwgMzU4NjUsIDM1ODc1LCAzNTg4MiwgMzU4ODksIDM1ODk3LCAzNTkwNSwgMzU5MTQsIAotICAgIDM1OTIzLCAzNTkzMSwgMzU5MzksIDM1OTUxLCAzNTk2MywgMzU5NzIsIDM1OTgxLCAzNTk5MCwgMzU5OTksIDM2MDA2LCAKLSAgICAzNjAxMywgMzYwMjEsIDM2MDI5LCAzNjAzNywgMzYwNDUsIDM2MDUzLCAzNjA2MSwgMzYwNjksIDM2MDc3LCAzNjA4NiwgCi0gICAgMzYwOTUsIDM2MTA0LCAzNjExMywgMzYxMjIsIDM2MTMxLCAzNjE0MSwgMzYxNTEsIDM2MTYxLCAzNjE3MSwgMzYxODAsIAotICAgIDM2MTg5LCAzNjE5NiwgMzYyMDMsIDM2MjExLCAzNjIxOSwgMzYyMjcsIDM2MjM1LCAzNjI0MywgMzYyNTEsIDM2MjYzLCAKLSAgICAzNjI3NSwgMzYyODQsIDM2MjkzLCAzNjMwMSwgMzYzMDksIDM2MzE3LCAzNjMyNSwgMzYzMzYsIDM2MzQ3LCAzNjM1OCwgCi0gICAgMzYzNjksIDM2MzgxLCAzNjM5MywgMzY0MDEsIDM2NDA5LCAzNjQxNywgMzY0MjUsIDM2NDM0LCAzNjQ0MywgMzY0NTIsIAotICAgIDM2NDYxLCAzNjQ2OSwgMzY0NzcsIDM2NDg1LCAzNjQ5MywgMzY1MDEsIDM2NTA5LCAzNjUxOCwgMzY1MjcsIDM2NTM3LCAKLSAgICAzNjU0NywgMzY1NTUsIDM2NTYzLCAzNjU3MSwgMzY1NzksIDM2NTg3LCAzNjU5NSwgMzY2MDIsIDM2NjA5LCAzNjYxNywgCi0gICAgMzY2MjUsIDM2NjMzLCAzNjY0MSwgMzY2NDksIDM2NjU3LCAzNjY2NSwgMzY2NzMsIDM2NjgxLCAzNjY4OSwgMzY2OTcsIAotICAgIDM2NzA1LCAzNjcxMywgMzY3MjEsIDM2NzI5LCAzNjczNywgMzY3NDYsIDM2NzU1LCAzNjc2NCwgMzY3NzIsIDM2NzgxLCAKLSAgICAzNjc5MCwgMzY3OTksIDM2ODA4LCAzNjgxOCwgMzY4MjcsIDM2ODMzLCAzNjgzOCwgMzY4NDUsIDM2ODUyLCAzNjg2MCwgCi0gICAgMzY4NjgsIDM2ODc3LCAzNjg4NiwgMzY4OTYsIDM2OTA2LCAzNjkxNywgMzY5MjgsIDM2OTM4LCAzNjk0OCwgMzY5NTgsIAotICAgIDM2OTY4LCAzNjk3NywgMzY5ODYsIDM2OTk2LCAzNzAwNiwgMzcwMTcsIDM3MDI4LCAzNzAzOCwgMzcwNDgsIDM3MDU4LCAKLSAgICAzNzA2OCwgMzcwNzUsIDM3MDgyLCAzNzA5MCwgMzcwOTgsIDM3MTA1LCAzNzExMiwgMzcxMjEsIDM3MTMwLCAzNzE0MCwgCi0gICAgMzcxNTAsIDM3MTYxLCAzNzE3MiwgMzcxODIsIDM3MTkyLCAzNzIwMiwgMzcyMTIsIDM3MjIxLCAzNzIzMCwgMzcyMzgsIAotICAgIDM3MjQ2LCAzNzI1MywgMzcyNjAsIDM3MjY4LCAzNzI3NiwgMzcyODUsIDM3Mjk0LCAzNzMwNCwgMzczMTQsIDM3MzI1LCAKLSAgICAzNzMzNiwgMzczNDYsIDM3MzU2LCAzNzM2NiwgMzczNzYsIDM3Mzg1LCAzNzM5NCwgMzc0MDQsIDM3NDE0LCAzNzQyNSwgCi0gICAgMzc0MzYsIDM3NDQ2LCAzNzQ1NiwgMzc0NjYsIDM3NDc2LCAzNzQ4MywgMzc0OTAsIDM3NDk4LCAzNzUwNiwgMzc1MTUsIAotICAgIDM3NTI0LCAzNzUzNCwgMzc1NDQsIDM3NTU1LCAzNzU2NiwgMzc1NzYsIDM3NTg2LCAzNzU5NiwgMzc2MDYsIDM3NjE0LCAKLSAgICAzNzYyMiwgMzc2MzAsIDM3NjM4LCAzNzY0NywgMzc2NTYsIDM3NjY0LCAzNzY3MiwgMzc2NzksIDM3Njg2LCAzNzY5MywgCi0gICAgMzc3MDAsIDM3NzA4LCAzNzcxNiwgMzc3MjQsIDM3NzMyLCAzNzc0MywgMzc3NTQsIDM3NzY1LCAzNzc3NiwgMzc3ODcsIAotICAgIDM3Nzk4LCAzNzgwNiwgMzc4MTQsIDM3ODI1LCAzNzgzNiwgMzc4NDcsIDM3ODU4LCAzNzg2OSwgMzc4ODAsIDM3ODg4LCAKLSAgICAzNzg5NiwgMzc5MDcsIDM3OTE4LCAzNzkyOSwgMCwgMCwgMzc5NDAsIDM3OTQ4LCAzNzk1NiwgMzc5NjcsIDM3OTc4LCAKLSAgICAzNzk4OSwgMCwgMCwgMzgwMDAsIDM4MDA4LCAzODAxNiwgMzgwMjcsIDM4MDM4LCAzODA0OSwgMzgwNjAsIDM4MDcxLCAKLSAgICAzODA4MiwgMzgwOTAsIDM4MDk4LCAzODEwOSwgMzgxMjAsIDM4MTMxLCAzODE0MiwgMzgxNTMsIDM4MTY0LCAzODE3MiwgCi0gICAgMzgxODAsIDM4MTkxLCAzODIwMiwgMzgyMTMsIDM4MjI0LCAzODIzNSwgMzgyNDYsIDM4MjU0LCAzODI2MiwgMzgyNzMsIAotICAgIDM4Mjg0LCAzODI5NSwgMzgzMDYsIDM4MzE3LCAzODMyOCwgMzgzMzYsIDM4MzQ0LCAzODM1NSwgMzgzNjYsIDM4Mzc3LCAwLCAKLSAgICAwLCAzODM4OCwgMzgzOTYsIDM4NDA0LCAzODQxNSwgMzg0MjYsIDM4NDM3LCAwLCAwLCAzODQ0OCwgMzg0NTYsIDM4NDY0LCAKLSAgICAzODQ3NSwgMzg0ODYsIDM4NDk3LCAzODUwOCwgMzg1MTksIDAsIDM4NTMwLCAwLCAzODUzOCwgMCwgMzg1NDksIDAsIAotICAgIDM4NTYwLCAzODU3MSwgMzg1NzksIDM4NTg3LCAzODU5OCwgMzg2MDksIDM4NjIwLCAzODYzMSwgMzg2NDIsIDM4NjUzLCAKLSAgICAzODY2MSwgMzg2NjksIDM4NjgwLCAzODY5MSwgMzg3MDIsIDM4NzEzLCAzODcyNCwgMzg3MzUsIDM4NzQzLCAzODc1MSwgCi0gICAgMzg3NTksIDM4NzY3LCAzODc3NSwgMzg3ODMsIDM4NzkxLCAzODc5OSwgMzg4MDcsIDM4ODE1LCAzODgyMywgMzg4MzEsIAotICAgIDM4ODM5LCAwLCAwLCAzODg0NywgMzg4NTgsIDM4ODY5LCAzODg4MywgMzg4OTcsIDM4OTExLCAzODkyNSwgMzg5MzksIAotICAgIDM4OTUzLCAzODk2NCwgMzg5NzUsIDM4OTg5LCAzOTAwMywgMzkwMTcsIDM5MDMxLCAzOTA0NSwgMzkwNTksIDM5MDcwLCAKLSAgICAzOTA4MSwgMzkwOTUsIDM5MTA5LCAzOTEyMywgMzkxMzcsIDM5MTUxLCAzOTE2NSwgMzkxNzYsIDM5MTg3LCAzOTIwMSwgCi0gICAgMzkyMTUsIDM5MjI5LCAzOTI0MywgMzkyNTcsIDM5MjcxLCAzOTI4MiwgMzkyOTMsIDM5MzA3LCAzOTMyMSwgMzkzMzUsIAotICAgIDM5MzQ5LCAzOTM2MywgMzkzNzcsIDM5Mzg4LCAzOTM5OSwgMzk0MTMsIDM5NDI3LCAzOTQ0MSwgMzk0NTUsIDM5NDY5LCAKLSAgICAzOTQ4MywgMzk0OTEsIDM5NDk5LCAzOTUxMCwgMzk1MTgsIDAsIDM5NTI5LCAzOTUzNywgMzk1NDgsIDM5NTU2LCAzOTU2NCwgCi0gICAgMzk1NzIsIDM5NTgwLCAzOTU4OCwgMzk1OTEsIDM5NTk0LCAzOTU5NywgMzk2MDAsIDM5NjA2LCAzOTYxNywgMzk2MjUsIDAsIAotICAgIDM5NjM2LCAzOTY0NCwgMzk2NTUsIDM5NjYzLCAzOTY3MSwgMzk2NzksIDM5Njg3LCAzOTY5NSwgMzk3MDEsIDM5NzA3LCAKLSAgICAzOTcxMywgMzk3MjEsIDM5NzI5LCAzOTc0MCwgMCwgMCwgMzk3NTEsIDM5NzU5LCAzOTc3MCwgMzk3NzgsIDM5Nzg2LCAKLSAgICAzOTc5NCwgMCwgMzk4MDIsIDM5ODA4LCAzOTgxNCwgMzk4MjAsIDM5ODI4LCAzOTgzNiwgMzk4NDcsIDM5ODU4LCAzOTg2NiwgCi0gICAgMzk4NzQsIDM5ODgyLCAzOTg5MywgMzk5MDEsIDM5OTA5LCAzOTkxNywgMzk5MjUsIDM5OTMzLCAzOTkzOSwgMzk5NDUsIDAsIAotICAgIDAsIDM5OTQ4LCAzOTk1OSwgMzk5NjcsIDAsIDM5OTc4LCAzOTk4NiwgMzk5OTcsIDQwMDA1LCA0MDAxMywgNDAwMjEsIAotICAgIDQwMDI5LCA0MDAzNywgNDAwNDAsIDAsIDQwMDQzLCA0MDA0NywgNDAwNTEsIDQwMDU1LCA0MDA1OSwgNDAwNjMsIDQwMDY3LCAKLSAgICA0MDA3MSwgNDAwNzUsIDQwMDc5LCA0MDA4MywgNDAwODcsIDQwMDkzLCA0MDA5OSwgNDAxMDUsIDQwMTA4LCA0MDExMSwgCi0gICAgNDAxMTMsIDQwMTE3LCA0MDEyMSwgNDAxMjUsIDQwMTI5LCA0MDEzMiwgNDAxMzYsIDQwMTQwLCA0MDE0NiwgNDAxNTIsIAotICAgIDQwMTU5LCA0MDE2NiwgNDAxNzEsIDQwMTc2LCA0MDE4MiwgNDAxODgsIDQwMTkwLCA0MDE5MywgNDAxOTUsIDQwMTk5LCAKLSAgICA0MDIwMywgNDAyMDcsIDQwMjExLCA0MDIxNSwgNDAyMTksIDQwMjIzLCA0MDIyNywgNDAyMzEsIDQwMjM3LCA0MDI0MSwgCi0gICAgNDAyNDUsIDQwMjUxLCA0MDI1NiwgNDAyNjMsIDQwMjY1LCA0MDI2OCwgNDAyNzIsIDQwMjc2LCA0MDI4MSwgNDAyODcsIAotICAgIDQwMjg5LCA0MDI5OCwgNDAzMDcsIDQwMzEwLCA0MDMxNCwgNDAzMTYsIDQwMzE4LCA0MDMyMCwgNDAzMjMsIDQwMzI5LCAKLSAgICA0MDMzMSwgNDAzMzUsIDQwMzM5LCA0MDM0NiwgNDAzNTMsIDQwMzU3LCA0MDM2MiwgNDAzNjcsIDQwMzcyLCA0MDM3NywgCi0gICAgNDAzODEsIDQwMzg1LCA0MDM4OCwgNDAzOTIsIDQwMzk2LCA0MDQwMywgNDA0MDgsIDQwNDEyLCA0MDQxNiwgNDA0MjEsIAotICAgIDQwNDI1LCA0MDQyOSwgNDA0MzQsIDQwNDM5LCA0MDQ0MywgNDA0NDcsIDQwNDUxLCA0MDQ1MywgNDA0NTgsIDQwNDYzLCAKLSAgICA0MDQ2NywgNDA0NzEsIDQwNDc1LCA0MDQ3OSwgMCwgNDA0ODMsIDQwNDg3LCA0MDQ5MSwgNDA0OTcsIDQwNTAzLCA0MDUwOSwgCi0gICAgNDA1MTUsIDQwNTIyLCA0MDUyOSwgNDA1MzQsIDQwNTM5LCA0MDU0MywgMCwgMCwgNDA1NDksIDQwNTUyLCA0MDU1NSwgCi0gICAgNDA1NTgsIDQwNTYyLCA0MDU2NSwgNDA1NjksIDQwNTczLCA0MDU3NywgNDA1ODIsIDQwNTg3LCA0MDU5MiwgNDA1OTksIAotICAgIDQwNjAzLCA0MDYwNiwgNDA2MDksIDQwNjEyLCA0MDYxNSwgNDA2MTgsIDQwNjIxLCA0MDYyNSwgNDA2MjgsIDQwNjMyLCAKLSAgICA0MDYzNiwgNDA2NDAsIDQwNjQ1LCA0MDY1MCwgMCwgNDA2NTUsIDQwNjYxLCA0MDY2NywgNDA2NzMsIDQwNjgwLCA0MDY4NywgCi0gICAgNDA2OTQsIDQwNzAxLCA0MDcwNywgNDA3MTQsIDQwNzIxLCA0MDcyOCwgNDA3MzQsIDAsIDAsIDAsIDQwNzQxLCA0MDc0NCwgCi0gICAgNDA3NDcsIDQwNzUwLCA0MDc1NSwgNDA3NTgsIDQwNzYxLCA0MDc2NCwgNDA3NjcsIDQwNzcwLCA0MDc3MywgNDA3NzgsIAotICAgIDQwNzgxLCA0MDc4NCwgNDA3ODcsIDQwNzkwLCA0MDc5MywgNDA3OTgsIDQwODAxLCA0MDgwNCwgNDA4MDcsIDQwODEwLCAKLSAgICA0MDgxMywgNDA4MTgsIDQwODIxLCA0MDgyNCwgNDA4MjksIDQwODM0LCA0MDgzOCwgNDA4NDEsIDQwODQ0LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MDg0NywgNDA4NTIsIDQwODU3LCA0MDg2NCwgCi0gICAgNDA4NzIsIDQwODc3LCA0MDg4MiwgNDA4ODYsIDQwODkwLCA0MDg5NSwgNDA5MDIsIDQwOTA5LCA0MDkxMywgNDA5MTgsIAotICAgIDQwOTIzLCA0MDkyOCwgNDA5MzMsIDQwOTQwLCA0MDk0NSwgNDA5NTAsIDQwOTU1LCA0MDk2NCwgNDA5NzEsIDQwOTc4LCAKLSAgICA0MDk4MiwgNDA5ODcsIDQwOTkzLCA0MDk5OCwgNDEwMDUsIDQxMDEzLCA0MTAyMSwgNDEwMjUsIDQxMDI5LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MTAzMywgNDEwMzcsIDQxMDQ1LCA0MTA0OSwgNDEwNTMsIAotICAgIDQxMDU4LCA0MTA2MiwgNDEwNjYsIDQxMDcwLCA0MTA3MiwgNDEwNzYsIDQxMDgwLCA0MTA4NCwgNDEwODksIDQxMDkzLCAKLSAgICA0MTA5NywgNDExMDUsIDQxMTA4LCA0MTExMiwgNDExMTUsIDQxMTE4LCA0MTEyNCwgNDExMjgsIDQxMTMxLCA0MTEzNywgCi0gICAgNDExNDEsIDQxMTQ1LCA0MTE0OSwgNDExNTIsIDQxMTU2LCA0MTE1OSwgNDExNjMsIDQxMTY1LCA0MTE2OCwgNDExNzEsIAotICAgIDQxMTc1LCA0MTE3NywgNDExODEsIDQxMTg0LCA0MTE4NywgNDExOTIsIDQxMTk3LCA0MTIwNCwgNDEyMDcsIDQxMjEwLCAKLSAgICA0MTIxNCwgNDEyMTksIDQxMjIyLCA0MTIyNSwgNDEyMjgsIDQxMjMyLCA0MTIzNywgNDEyNDEsIDQxMjQ0LCA0MTI0NiwgCi0gICAgNDEyNDksIDQxMjUyLCA0MTI1NSwgNDEyNTksIDQxMjY0LCA0MTI2NywgNDEyNzEsIDQxMjc1LCA0MTI3OSwgNDEyODMsIAotICAgIDQxMjg4LCA0MTI5NCwgNDEyOTksIDQxMzA0LCA0MTMxMCwgNDEzMTUsIDQxMzIwLCA0MTMyNCwgNDEzMjgsIDQxMzMzLCAKLSAgICA0MTMzNywgNDEzNDEsIDQxMzQ0LCA0MTM0NiwgNDEzNTEsIDQxMzU3LCA0MTM2NCwgNDEzNzEsIDQxMzc4LCA0MTM4NSwgCi0gICAgNDEzOTIsIDQxMzk5LCA0MTQwNiwgNDE0MTMsIDQxNDIxLCA0MTQyOCwgNDE0MzYsIDQxNDQzLCA0MTQ1MCwgNDE0NTgsIAotICAgIDQxNDY2LCA0MTQ3MSwgNDE0NzYsIDQxNDgxLCA0MTQ4NiwgNDE0OTEsIDQxNDk2LCA0MTUwMSwgNDE1MDcsIDQxNTEyLCAKLSAgICA0MTUxOCwgNDE1MjQsIDQxNTMwLCA0MTUzNiwgNDE1NDIsIDQxNTQ5LCA0MTU1NywgNDE1NjQsIDQxNTcwLCA0MTU3NiwgCi0gICAgNDE1ODIsIDQxNTg4LCA0MTU5NCwgNDE2MDAsIDQxNjA3LCA0MTYxMywgNDE2MjAsIDQxNjI3LCA0MTYzNCwgNDE2NDEsIAotICAgIDQxNjQ4LCA0MTY1NiwgNDE2NjUsIDQxNjczLCA0MTY4NCwgNDE2OTIsIDQxNzAwLCA0MTcwOSwgNDE3MTYsIDQxNzI1LCAKLSAgICA0MTczNCwgNDE3NDIsIDQxNzUxLCA0MTc1OSwgNDE3NjMsIDAsIDAsIDAsIDAsIDQxNzY3LCA0MTc2OSwgNDE3NzEsIAotICAgIDQxNzczLCA0MTc3NSwgNDE3NzgsIDQxNzgxLCA0MTc4NSwgNDE3ODksIDQxNzk0LCA0MTc5OSwgNDE4MDMsIDQxODA3LCAKLSAgICA0MTgxMSwgNDE4MTUsIDQxODIwLCA0MTgyNSwgNDE4MzAsIDQxODM1LCA0MTg0MCwgNDE4NDUsIDQxODUwLCA0MTg1NSwgCi0gICAgNDE4NjAsIDQxODY1LCA0MTg3MSwgNDE4NzUsIDQxODc5LCA0MTg4NCwgNDE4ODksIDQxODk0LCA0MTg5OSwgNDE5MDMsIAotICAgIDQxOTEwLCA0MTkxNywgNDE5MjQsIDQxOTMxLCA0MTkzOCwgNDE5NDUsIDQxOTUyLCA0MTk1OSwgNDE5NjcsIDQxOTc5LCAKLSAgICA0MTk4NSwgNDE5OTEsIDQxOTk4LCA0MjAwNSwgNDIwMTIsIDQyMDE5LCA0MjAyNiwgNDIwMzMsIDQyMDQwLCA0MjA0NywgCi0gICAgNDIwNTIsIDQyMDU4LCA0MjA2MywgNDIwNjgsIDQyMDczLCA0MjA3OCwgNDIwODMsIDQyMDkwLCA0MjA5NywgNDIxMDIsIAotICAgIDQyMTA4LCA0MjExMywgNDIxMTYsIDQyMTE5LCA0MjEyMiwgNDIxMjUsIDQyMTI5LCA0MjEzMywgNDIxMzgsIDQyMTQzLCAKLSAgICA0MjE0OSwgNDIxNTUsIDQyMTU5LCA0MjE2MywgNDIxNjcsIDQyMTcxLCA0MjE3NiwgNDIxODEsIDQyMTg1LCA0MjE4OSwgCi0gICAgNDIxOTMsIDQyMTk3LCA0MjIwMiwgNDIyMDcsIDQyMjEwLCA0MjIxMywgNDIyMTYsIDQyMjE5LCA0MjIyNSwgNDIyMzIsIAotICAgIDQyMjQzLCA0MjI1MywgNDIyNTcsIDQyMjY1LCA0MjI3MiwgNDIyODAsIDQyMjg5LCA0MjI5MywgNDIyOTksIDQyMzA1LCAKLSAgICA0MjMwOSwgNDIzMTQsIDQyMzE5LCA0MjMyNSwgNDIzMzEsIDQyMzM3LCA0MjM0NCwgNDIzNDgsIDQyMzUyLCA0MjM1NywgCi0gICAgNDIzNjAsIDQyMzYyLCA0MjM2NiwgNDIzNzAsIDQyMzc4LCA0MjM4MiwgNDIzODQsIDQyMzg2LCA0MjM5MCwgNDIzOTgsIAotICAgIDQyNDAzLCA0MjQwOSwgNDI0MTksIDQyNDI2LCA0MjQzMSwgNDI0MzUsIDQyNDM5LCA0MjQ0MywgNDI0NDYsIDQyNDQ5LCAKLSAgICA0MjQ1MiwgNDI0NTYsIDQyNDYwLCA0MjQ2NCwgNDI0NjgsIDQyNDcyLCA0MjQ3NSwgNDI0NzksIDQyNDgzLCA0MjQ4NiwgCi0gICAgNDI0ODgsIDQyNDkxLCA0MjQ5MywgNDI0OTcsIDQyNTAxLCA0MjUwMywgNDI1MDksIDQyNTEyLCA0MjUxNywgNDI1MjEsIAotICAgIDQyNTI1LCA0MjUyNywgNDI1MjksIDQyNTMxLCA0MjUzNCwgNDI1MzgsIDQyNTQyLCA0MjU0NiwgNDI1NTAsIDQyNTU0LCAKLSAgICA0MjU2MCwgNDI1NjYsIDQyNTY4LCA0MjU3MCwgNDI1NzIsIDQyNTc0LCA0MjU3NywgNDI1NzksIDQyNTgzLCA0MjU4NSwgCi0gICAgNDI1ODksIDQyNTkzLCA0MjU5OCwgNDI2MDIsIDQyNjA2LCA0MjYxMCwgNDI2MTQsIDQyNjE4LCA0MjYyNCwgNDI2MjgsIAotICAgIDQyNjM4LCA0MjY0OCwgNDI2NTIsIDQyNjU4LCA0MjY2NSwgNDI2NjksIDQyNjczLCA0MjY3NiwgNDI2ODEsIDQyNjg1LCAKLSAgICA0MjY5MSwgNDI2OTUsIDQyNzA4LCA0MjcxNywgNDI3MjEsIDQyNzI1LCA0MjczMSwgNDI3MzUsIDQyNzM4LCA0Mjc0MCwgCi0gICAgNDI3NDMsIDQyNzQ3LCA0Mjc1MSwgNDI3NTgsIDQyNzYyLCA0Mjc2NiwgNDI3NzAsIDQyNzczLCA0Mjc3OCwgNDI3ODMsIAotICAgIDQyNzg5LCA0Mjc5NSwgNDI4MDAsIDQyODA1LCA0MjgxMywgNDI4MjEsIDQyODI1LCA0MjgyOSwgNDI4MzEsIDQyODM2LCAKLSAgICA0Mjg0MCwgNDI4NDQsIDQyODUyLCA0Mjg2MCwgNDI4NjcsIDQyODc0LCA0Mjg4MywgNDI4OTIsIDQyODk4LCA0MjkwNCwgCi0gICAgNDI5MTIsIDQyOTIwLCA0MjkyMiwgNDI5MjQsIDQyOTMwLCA0MjkzNiwgNDI5NDMsIDQyOTUwLCA0Mjk1NiwgNDI5NjIsIAotICAgIDQyOTY2LCA0Mjk3MCwgNDI5NzcsIDQyOTg0LCA0Mjk5MSwgNDI5OTgsIDQzMDA4LCA0MzAxOCwgNDMwMjYsIDQzMDM0LCAKLSAgICA0MzAzNiwgNDMwNDAsIDQzMDQ0LCA0MzA0OSwgNDMwNTQsIDQzMDYyLCA0MzA3MCwgNDMwNzMsIDQzMDc2LCA0MzA3OSwgCi0gICAgNDMwODIsIDQzMDg1LCA0MzA5MCwgNDMwOTQsIDQzMDk5LCA0MzEwNCwgNDMxMDcsIDQzMTEwLCA0MzExMywgNDMxMTYsIAotICAgIDQzMTE5LCA0MzEyMywgNDMxMjYsIDQzMTI5LCA0MzEzMiwgNDMxMzUsIDQzMTM3LCA0MzEzOSwgNDMxNDEsIDQzMTQzLCAKLSAgICA0MzE1MSwgNDMxNTksIDQzMTY1LCA0MzE2OSwgNDMxNzUsIDQzMTg1LCA0MzE5MSwgNDMxOTcsIDQzMjAzLCA0MzIxMSwgCi0gICAgNDMyMjAsIDQzMjMyLCA0MzIzNiwgNDMyNDAsIDQzMjQyLCA0MzI0OCwgNDMyNTAsIDQzMjUyLCA0MzI1NCwgNDMyNTYsIAotICAgIDQzMjYyLCA0MzI2NSwgNDMyNzEsIDQzMjc3LCA0MzI4MSwgNDMyODUsIDQzMjg5LCA0MzI5MiwgNDMyOTYsIDQzMzAwLCAKLSAgICA0MzMwMiwgNDMzMTEsIDQzMzIwLCA0MzMyNSwgNDMzMzAsIDQzMzM2LCA0MzM0MiwgNDMzNDgsIDQzMzUxLCA0MzM1NCwgCi0gICAgNDMzNTcsIDQzMzYwLCA0MzM2MiwgNDMzNjcsIDQzMzcyLCA0MzM3NywgNDMzODMsIDQzMzg5LCA0MzM5OCwgNDM0MDcsIAotICAgIDQzNDE0LCA0MzQyMSwgNDM0MjgsIDQzNDM1LCA0MzQ0NSwgNDM0NTUsIDQzNDY1LCA0MzQ3NSwgNDM0ODUsIDQzNDk1LCAKLSAgICA0MzUwNCwgNDM1MTMsIDQzNTIyLCA0MzUzMSwgNDM1MzksIDQzNTUxLCA0MzU2MiwgNDM1NzgsIDQzNTgxLCA0MzU4NywgCi0gICAgNDM1OTMsIDQzNTk5LCA0MzYwNywgNDM2MjIsIDQzNjM4LCA0MzY0NCwgNDM2NTAsIDQzNjU3LCA0MzY2MywgNDM2NzIsIAotICAgIDQzNjc5LCA0MzY5MywgNDM3MDgsIDQzNzEzLCA0MzcxOSwgNDM3MjcsIDQzNzMwLCA0MzczMywgNDM3MzUsIDQzNzM4LCAKLSAgICA0Mzc0MSwgNDM3NDMsIDQzNzQ1LCA0Mzc0OSwgNDM3NTIsIDQzNzU1LCA0Mzc1OCwgNDM3NjEsIDQzNzY2LCA0Mzc3MSwgCi0gICAgNDM3NzYsIDQzNzgxLCA0Mzc4NiwgNDM3ODksIDQzNzkxLCA0Mzc5MywgNDM3OTUsIDQzNzk5LCA0MzgwMywgNDM4MDcsIAotICAgIDQzODEzLCA0MzgxOCwgNDM4MjAsIDQzODIyLCA0MzgyNywgNDM4MzIsIDQzODM3LCA0Mzg0MiwgNDM4NDcsIDQzODUyLCAKLSAgICA0Mzg1NCwgNDM4NTYsIDQzODY2LCA0Mzg3MCwgNDM4NzgsIDQzODg3LCA0Mzg4OSwgNDM4OTQsIDQzODk5LCA0MzkwNywgCi0gICAgNDM5MTEsIDQzOTEzLCA0MzkxNywgNDM5MTksIDQzOTIzLCA0MzkyNywgNDM5MzEsIDQzOTMzLCA0MzkzNSwgNDM5MzcsIAotICAgIDQzOTQ0LCA0Mzk1MywgNDM5NjIsIDQzOTcxLCA0Mzk4MCwgNDM5ODksIDQzOTk4LCA0NDAwNywgNDQwMTYsIDQ0MDI0LCAKLSAgICA0NDAzMiwgNDQwNDEsIDQ0MDUwLCA0NDA1OSwgNDQwNjgsIDQ0MDc2LCA0NDA4NCwgNDQwOTMsIDQ0MTAyLCA0NDExMSwgCi0gICAgNDQxMjEsIDQ0MTMwLCA0NDE0MCwgNDQxNDksIDQ0MTU5LCA0NDE2NywgNDQxNzYsIDQ0MTg2LCA0NDE5NSwgNDQyMDUsIAotICAgIDQ0MjE0LCA0NDIyNCwgNDQyMzIsIDQ0MjQxLCA0NDI1MCwgNDQyNTksIDQ0MjY4LCA0NDI3NywgNDQyODYsIDQ0Mjk2LCAKLSAgICA0NDMwNSwgNDQzMTQsIDQ0MzIzLCA0NDMzMywgNDQzNDIsIDQ0MzUxLCA0NDM2MCwgNDQzNjksIDQ0Mzc5LCA0NDM4OSwgCi0gICAgNDQzOTgsIDQ0NDA3LCA0NDQxNSwgNDQ0MjQsIDQ0NDMxLCA0NDQ0MCwgNDQ0NDksIDQ0NDYwLCA0NDQ2OSwgNDQ0NzksIAotICAgIDQ0NDg5LCA0NDQ5NiwgNDQ1MDMsIDQ0NTEwLCA0NDUxOSwgNDQ1MjgsIDQ0NTM3LCA0NDU0NiwgNDQ1NTMsIDQ0NTU4LCAKLSAgICA0NDU2NiwgNDQ1NzEsIDQ0NTc0LCA0NDU4MSwgNDQ1ODQsIDQ0NTg5LCA0NDU5NCwgNDQ1OTcsIDQ0NjAwLCA0NDYwOCwgCi0gICAgNDQ2MTEsIDQ0NjE2LCA0NDYxOSwgNDQ2MjcsIDQ0NjMyLCA0NDY0MCwgNDQ2NDMsIDQ0NjQ2LCA0NDY0OSwgNDQ2NTQsIAotICAgIDQ0NjU5LCA0NDY2MiwgNDQ2NjUsIDQ0NjczLCA0NDY3NiwgNDQ2ODMsIDQ0NjkwLCA0NDY5NCwgNDQ2OTgsIDQ0NzAzLCAKLSAgICA0NDcwOCwgNDQ3MTQsIDQ0NzE5LCA0NDcyNSwgNDQ3MzEsIDQ0NzM2LCA0NDc0MiwgNDQ3NTAsIDQ0NzU2LCA0NDc2NCwgCi0gICAgNDQ3NzIsIDQ0Nzc4LCA0NDc4NiwgNDQ3OTQsIDQ0ODAyLCA0NDgxMCwgNDQ4MTYsIDQ0ODI0LCA0NDgzMiwgNDQ4NDAsIAotICAgIDQ0ODQ0LCA0NDg1MCwgNDQ4NjQsIDQ0ODc4LCA0NDg4MiwgNDQ4ODYsIDQ0ODkwLCA0NDg5NCwgNDQ5MDQsIDQ0OTA4LCAKLSAgICA0NDkxMywgNDQ5MTgsIDQ0OTI0LCA0NDkzMCwgNDQ5MzYsIDQ0OTQyLCA0NDk1MiwgNDQ5NjIsIDQ0OTcwLCA0NDk4MSwgCi0gICAgNDQ5OTIsIDQ1MDAwLCA0NTAxMSwgNDUwMjIsIDQ1MDMwLCA0NTA0MSwgNDUwNTIsIDQ1MDYwLCA0NTA2OCwgNDUwNzgsIAotICAgIDQ1MDg4LCA0NTA5MSwgNDUwOTQsIDQ1MDk3LCA0NTEwMiwgNDUxMDYsIDQ1MTEyLCA0NTExOSwgNDUxMjYsIDQ1MTM0LCAKLSAgICA0NTE0MSwgNDUxNDUsIDQ1MTQ5LCA0NTE1MywgNDUxNTcsIDQ1MTU5LCA0NTE2MywgNDUxNjcsIDQ1MTcyLCA0NTE3NywgCi0gICAgNDUxODQsIDQ1MTkxLCA0NTE5NCwgNDUyMDEsIDQ1MjAzLCA0NTIwNSwgNDUyMDksIDQ1MjEzLCA0NTIxOCwgNDUyMjQsIAotICAgIDQ1MjMwLCA0NTIzNiwgNDUyNDIsIDQ1MjUxLCA0NTI2MCwgNDUyNjksIDQ1MjczLCA0NTI3NSwgNDUyNzksIDQ1Mjg2LCAKLSAgICA0NTI5MywgNDUzMDAsIDQ1MzA3LCA0NTMxNCwgNDUzMTcsIDQ1MzIyLCAwLCAwLCAwLCAwLCAwLCA0NTMyOCwgNDUzMzIsIAotICAgIDQ1MzM5LCA0NTM0NiwgNDUzNTMsIDQ1MzYwLCA0NTM2NCwgNDUzNjgsIDQ1MzcyLCA0NTM3NiwgNDUzODIsIDQ1Mzg4LCAKLSAgICA0NTM5MywgNDUzOTksIDQ1NDA1LCA0NTQxMSwgNDU0MTcsIDQ1NDI1LCA0NTQzMiwgNDU0MzksIDQ1NDQ2LCA0NTQ1MywgCi0gICAgNDU0NTgsIDQ1NDY0LCA0NTQ3MywgNDU0NzcsIDQ1NDg0LCA0NTQ4OCwgNDU0OTIsIDQ1NDk4LCA0NTUwNCwgNDU1MTAsIAotICAgIDQ1NTE2LCA0NTUyMCwgNDU1MjQsIDQ1NTI3LCA0NTUzMCwgNDU1MzQsIDQ1NTQxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NTU0OCwgNDU1NTEsIDQ1NTU1LCAKLSAgICA0NTU1OSwgNDU1NjUsIDQ1NTcxLCA0NTU3NywgNDU1ODUsIDQ1NTkyLCA0NTU5NiwgNDU2MDQsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ1NjA5LCA0NTYxMiwgNDU2MTUsIDQ1NjE4LCAKLSAgICA0NTYyMSwgNDU2MjQsIDQ1NjI3LCA0NTYzMSwgNDU2MzQsIDQ1NjM4LCA0NTY0MiwgNDU2NDYsIDQ1NjUwLCA0NTY1NCwgCi0gICAgNDU2NTgsIDQ1NjYyLCA0NTY2NiwgNDU2NzAsIDQ1Njc0LCA0NTY3OCwgNDU2ODIsIDQ1Njg1LCA0NTY4OCwgNDU2OTEsIAotICAgIDQ1Njk0LCA0NTY5NywgNDU3MDAsIDQ1NzA0LCA0NTcwNywgNDU3MTEsIDQ1NzE1LCA0NTcxOSwgNDU3MjMsIDQ1NzI3LCAKLSAgICA0NTczMSwgNDU3MzUsIDQ1NzM5LCA0NTc0MywgNDU3NDcsIDQ1NzUxLCA0NTc1NSwgNDU3NjEsIDQ1NzY3LCA0NTc3MywgCi0gICAgNDU3ODAsIDQ1Nzg3LCA0NTc5NCwgNDU4MDEsIDQ1ODA4LCA0NTgxNSwgNDU4MjIsIDQ1ODI5LCA0NTgzNiwgNDU4NDMsIAotICAgIDQ1ODUwLCA0NTg1NywgNDU4NjQsIDQ1ODcxLCA0NTg3OCwgNDU4ODUsIDQ1ODkyLCA0NTg5NywgNDU5MDMsIDQ1OTA5LCAKLSAgICA0NTkxNSwgNDU5MjAsIDQ1OTI2LCA0NTkzMiwgNDU5MzgsIDQ1OTQzLCA0NTk0OSwgNDU5NTUsIDQ1OTYwLCA0NTk2NiwgCi0gICAgNDU5NzIsIDQ1OTc3LCA0NTk4MywgNDU5ODksIDQ1OTk0LCA0NTk5OSwgNDYwMDUsIDQ2MDEwLCA0NjAxNiwgNDYwMjIsIAotICAgIDQ2MDI4LCA0NjAzNCwgNDYwNDAsIDQ2MDQ1LCA0NjA1MSwgNDYwNTcsIDQ2MDYzLCA0NjA2OCwgNDYwNzQsIDQ2MDgwLCAKLSAgICA0NjA4NiwgNDYwOTEsIDQ2MDk3LCA0NjEwMywgNDYxMDgsIDQ2MTE0LCA0NjEyMCwgNDYxMjUsIDQ2MTMxLCA0NjEzNywgCi0gICAgNDYxNDIsIDQ2MTQ3LCA0NjE1MywgNDYxNTgsIDQ2MTY0LCA0NjE3MCwgNDYxNzYsIDQ2MTgyLCA0NjE4OCwgNDYxOTMsIAotICAgIDQ2MTk5LCA0NjIwNSwgNDYyMTEsIDQ2MjE2LCA0NjIyMiwgNDYyMjgsIDQ2MjM0LCA0NjIzOSwgNDYyNDUsIDQ2MjUxLCAKLSAgICA0NjI1NiwgNDYyNjIsIDQ2MjY4LCA0NjI3MywgNDYyNzksIDQ2Mjg1LCA0NjI5MCwgNDYyOTUsIDQ2MzAxLCA0NjMwNiwgCi0gICAgNDYzMTIsIDQ2MzE4LCA0NjMyNCwgNDYzMzAsIDQ2MzM2LCA0NjM0MCwgNDYzNDUsIDQ2MzUwLCA0NjM1NSwgNDYzNjAsIAotICAgIDQ2MzY1LCA0NjM3MCwgNDYzNzUsIDQ2MzgwLCA0NjM4NSwgNDYzOTAsIDQ2Mzk0LCA0NjM5OCwgNDY0MDIsIDQ2NDA2LCAKLSAgICA0NjQxMCwgNDY0MTQsIDQ2NDE5LCA0NjQyMywgNDY0MjgsIDQ2NDMzLCA0NjQzOCwgNDY0NDMsIDQ2NDQ4LCA0NjQ1MywgCi0gICAgNDY0NTgsIDQ2NDY3LCA0NjQ3NiwgNDY0ODUsIDQ2NDk0LCA0NjUwMywgNDY1MTIsIDQ2NTIxLCA0NjUzMCwgNDY1MzcsIAotICAgIDQ2NTQ1LCA0NjU1MywgNDY1NjAsIDQ2NTY3LCA0NjU3NSwgNDY1ODMsIDQ2NTkwLCA0NjU5NywgNDY2MDUsIDQ2NjEzLCAKLSAgICA0NjYyMCwgNDY2MjcsIDQ2NjM1LCA0NjY0MywgNDY2NTAsIDQ2NjU3LCA0NjY2NSwgNDY2NzQsIDQ2NjgzLCA0NjY5MSwgCi0gICAgNDY3MDAsIDQ2NzA5LCA0NjcxNiwgNDY3MjMsIDQ2NzMxLCA0Njc0MCwgNDY3NDksIDQ2NzU3LCA0Njc2NiwgNDY3NzUsIAotICAgIDQ2NzgyLCA0Njc4OSwgNDY3OTgsIDQ2ODA3LCA0NjgxNiwgNDY4MjUsIDQ2ODM0LCA0Njg0MywgNDY4NTAsIDQ2ODU3LCAKLSAgICA0Njg2NiwgNDY4NzUsIDQ2ODg0LCA0Njg5MywgNDY5MDIsIDQ2OTExLCA0NjkxOCwgNDY5MjUsIDQ2OTM0LCA0Njk0MywgCi0gICAgNDY5NTIsIDQ2OTYyLCA0Njk3MiwgNDY5ODEsIDQ2OTkxLCA0NzAwMSwgNDcwMTEsIDQ3MDIxLCA0NzAzMSwgNDcwNDEsIAotICAgIDQ3MDUwLCA0NzA1OSwgNDcwNjYsIDQ3MDc0LCA0NzA4MiwgNDcwOTAsIDQ3MDk4LCA0NzEwMywgNDcxMDgsIDQ3MTE3LCAKLSAgICA0NzEyNSwgNDcxMzIsIDQ3MTQxLCA0NzE0OSwgNDcxNTYsIDQ3MTY1LCA0NzE3MywgNDcxODAsIDQ3MTg5LCA0NzE5NywgCi0gICAgNDcyMDQsIDQ3MjEzLCA0NzIyMSwgNDcyMjgsIDQ3MjM3LCA0NzI0NSwgNDcyNTIsIDQ3MjYyLCA0NzI3MSwgNDcyNzgsIAotICAgIDQ3Mjg4LCA0NzI5NywgNDczMDQsIDQ3MzE0LCA0NzMyMywgNDczMzAsIDQ3MzM5LCA0NzM0OCwgNDczNTcsIDQ3MzY2LCAKLSAgICA0NzM4MCwgNDczOTQsIDQ3NDAxLCA0NzQwNiwgNDc0MTEsIDQ3NDE2LCA0NzQyMSwgNDc0MjYsIDQ3NDMxLCA0NzQzNiwgCi0gICAgNDc0NDEsIDQ3NDQ5LCA0NzQ1NywgNDc0NjUsIDQ3NDczLCA0NzQ3OCwgNDc0ODUsIDQ3NDkyLCA0NzQ5OSwgNDc1MDQsIAotICAgIDQ3NTEyLCA0NzUxOSwgNDc1MjcsIDQ3NTMxLCA0NzUzOCwgNDc1NDQsIDQ3NTUxLCA0NzU1NSwgNDc1NjEsIDQ3NTY3LCAKLSAgICA0NzU3MywgNDc1NzcsIDQ3NTgwLCA0NzU4NCwgNDc1ODgsIDQ3NTk1LCA0NzYwMSwgNDc2MDcsIDQ3NjEzLCA0NzYxOSwgCi0gICAgNDc2MzMsIDQ3NjQzLCA0NzY1NywgNDc2NzEsIDQ3Njc3LCA0NzY4NywgNDc3MDEsIDQ3NzA0LCA0NzcwNywgNDc3MTQsIAotICAgIDQ3NzIyLCA0NzcyOCwgNDc3MzMsIDQ3NzQxLCA0Nzc1MywgNDc3NjUsIDQ3NzczLCA0Nzc3NywgNDc3ODEsIDQ3Nzg0LCAKLSAgICA0Nzc4NywgNDc3OTEsIDQ3Nzk1LCA0Nzc5OCwgNDc4MDEsIDQ3ODA2LCA0NzgxMSwgNDc4MTcsIDQ3ODIzLCA0NzgyOCwgCi0gICAgNDc4MzMsIDQ3ODM5LCA0Nzg0NSwgNDc4NTAsIDQ3ODU1LCA0Nzg2MCwgNDc4NjUsIDQ3ODcxLCA0Nzg3NywgNDc4ODIsIAotICAgIDQ3ODg3LCA0Nzg5MywgNDc4OTksIDQ3OTA0LCA0NzkwOSwgNDc5MTIsIDQ3OTE1LCA0NzkyNCwgNDc5MjYsIDQ3OTI4LCAKLSAgICA0NzkzMSwgNDc5MzUsIDQ3OTQxLCA0Nzk0MywgNDc5NDYsIDQ3OTUzLCA0Nzk2MCwgNDc5NjgsIDQ3OTc2LCA0Nzk4NiwgCi0gICAgNDgwMDAsIDQ4MDA1LCA0ODAxMCwgNDgwMTQsIDQ4MDE5LCA0ODAyNywgNDgwMzUsIDQ4MDQ0LCA0ODA1MywgNDgwNjIsIAotICAgIDQ4MDcxLCA0ODA3NiwgNDgwODEsIDQ4MDg3LCA0ODA5MywgNDgwOTksIDQ4MTA1LCA0ODEwOCwgNDgxMTQsIDQ4MTIwLCAKLSAgICA0ODEzMCwgNDgxNDAsIDQ4MTQ4LCA0ODE1NiwgNDgxNjUsIDQ4MTc0LCA0ODE3OCwgNDgxODYsIDQ4MTk0LCA0ODIwMiwgCi0gICAgNDgyMTAsIDQ4MjE5LCA0ODIyOCwgNDgyMzcsIDQ4MjQ2LCA0ODI1MSwgNDgyNTYsIDQ4MjYxLCA0ODI2NiwgNDgyNzEsIAotICAgIDQ4Mjc3LCA0ODI4MywgNDgyODgsIDQ4Mjk0LCA0ODI5NiwgNDgyOTgsIDQ4MzAwLCA0ODMwMiwgNDgzMDUsIDQ4MzA4LCAKLSAgICA0ODMxMCwgNDgzMTIsIDQ4MzE0LCA0ODMxOCwgNDgzMjIsIDQ4MzI0LCA0ODMyNiwgNDgzMjksIDQ4MzMyLCA0ODMzNiwgCi0gICAgNDgzNDIsIDQ4MzQ4LCA0ODM1MCwgNDgzNTcsIDQ4MzYxLCA0ODM2NiwgNDgzNzEsIDQ4MzczLCA0ODM4MywgNDgzODksIAotICAgIDQ4Mzk1LCA0ODQwMSwgNDg0MDcsIDQ4NDEzLCA0ODQxOSwgNDg0MjQsIDQ4NDI3LCA0ODQzMCwgNDg0MzMsIDQ4NDM1LCAKLSAgICA0ODQzNywgNDg0NDEsIDQ4NDQ1LCA0ODQ1MCwgNDg0NTUsIDQ4NDYwLCA0ODQ2MywgNDg0NjcsIDQ4NDcyLCA0ODQ3NSwgCi0gICAgNDg0NzksIDQ4NDg0LCA0ODQ4OSwgNDg0OTQsIDQ4NDk5LCA0ODUwNCwgNDg1MDksIDQ4NTE0LCA0ODUxOSwgNDg1MjQsIAotICAgIDQ4NTI5LCA0ODUzNCwgNDg1MzksIDQ4NTQ1LCA0ODU1MSwgNDg1NTcsIDQ4NTU5LCA0ODU2MiwgNDg1NjQsIDQ4NTY3LCAKLSAgICA0ODU2OSwgNDg1NzEsIDQ4NTczLCA0ODU3NSwgNDg1NzcsIDQ4NTc5LCA0ODU4MSwgNDg1ODMsIDQ4NTg1LCA0ODU4NywgCi0gICAgNDg1ODksIDQ4NTkxLCA0ODU5MywgNDg1OTUsIDQ4NTk3LCA0ODU5OSwgNDg2MDEsIDQ4NjA2LCA0ODYxMSwgNDg2MTYsIAotICAgIDQ4NjIxLCA0ODYyNiwgNDg2MzEsIDQ4NjM2LCA0ODY0MSwgNDg2NDYsIDQ4NjUxLCA0ODY1NiwgNDg2NjEsIDQ4NjY2LCAKLSAgICA0ODY3MSwgNDg2NzYsIDQ4NjgxLCA0ODY4NiwgNDg2OTEsIDQ4Njk2LCA0ODcwMSwgNDg3MDUsIDQ4NzA5LCA0ODcxMywgCi0gICAgNDg3MTksIDQ4NzI1LCA0ODczMCwgNDg3MzUsIDQ4NzQwLCA0ODc0NiwgNDg3NTIsIDQ4NzU3LCA0ODc2NSwgNDg3NzMsIAotICAgIDQ4NzgxLCA0ODc4OSwgNDg3OTcsIDQ4ODA1LCA0ODgxMywgNDg4MjEsIDQ4ODI3LCA0ODgzMiwgNDg4MzcsIDQ4ODQyLCAKLSAgICA0ODg0NSwgNDg4NDksIDQ4ODUzLCA0ODg1NywgNDg4NjEsIDQ4ODY1LCA0ODg2OSwgNDg4NzYsIDQ4ODgzLCA0ODg5MSwgCi0gICAgNDg4OTksIDQ4OTA0LCA0ODkwOSwgNDg5MTYsIDQ4OTIzLCA0ODkzMCwgNDg5MzcsIDQ4OTQwLCA0ODk0MywgNDg5NDgsIAotICAgIDQ4OTUwLCA0ODk1NCwgNDg5NTksIDQ4OTYxLCA0ODk2MywgNDg5NjUsIDQ4OTY3LCA0ODk3MiwgNDg5NzUsIDQ4OTc3LCAKLSAgICA0ODk4MiwgNDg5ODksIDQ4OTk2LCA0ODk5OSwgNDkwMDMsIDQ5MDA4LCA0OTAxMywgNDkwMjEsIDQ5MDI3LCA0OTAzMywgCi0gICAgNDkwNDUsIDQ5MDUyLCA0OTA2MCwgNDkwNjUsIDQ5MDcwLCA0OTA3NiwgNDkwNzksIDQ5MDgyLCA0OTA4NywgNDkwODksIAotICAgIDQ5MDkzLCA0OTA5NSwgNDkwOTcsIDQ5MDk5LCA0OTEwMSwgNDkxMDMsIDQ5MTA1LCA0OTExMCwgNDkxMTIsIDQ5MTE0LCAKLSAgICA0OTExNiwgNDkxMTgsIDQ5MTIyLCA0OTEyNCwgNDkxMjcsIDQ5MTMyLCA0OTEzNywgNDkxNDIsIDQ5MTQ3LCA0OTE1MywgCi0gICAgNDkxNTksIDQ5MTYxLCA0OTE2NCwgNDkxNzEsIDQ5MTc4LCA0OTE4NSwgNDkxOTIsIDQ5MTk2LCA0OTIwMCwgNDkyMDIsIAotICAgIDQ5MjA0LCA0OTIwOCwgNDkyMTQsIDQ5MjE5LCA0OTIyMSwgNDkyMjUsIDQ5MjM0LCA0OTI0MiwgNDkyNTAsIDQ5MjU2LCAKLSAgICA0OTI2MiwgNDkyNjcsIDQ5MjczLCA0OTI3OCwgNDkyODEsIDQ5Mjk1LCA0OTI5OCwgNDkzMDMsIDQ5MzA4LCA0OTMxNCwgCi0gICAgNDkzMjQsIDQ5MzI2LCA0OTMzMiwgNDkzMzgsIDQ5MzQyLCA0OTM0OSwgNDkzNTMsIDQ5MzU1LCA0OTM1NywgNDkzNjEsIAotICAgIDQ5MzY3LCA0OTM3MiwgNDkzNzgsIDQ5MzgwLCA0OTM4NiwgNDkzODgsIDQ5Mzk0LCA0OTM5NiwgNDkzOTgsIDQ5NDAzLCAKLSAgICA0OTQwNSwgNDk0MDksIDQ5NDE0LCA0OTQxNiwgNDk0MjEsIDQ5NDI2LCA0OTQzMCwgNDk0MzcsIDQ5NDQ3LCA0OTQ1MiwgCi0gICAgNDk0NTgsIDQ5NDYxLCA0OTQ2NywgNDk0NzAsIDQ5NDc1LCA0OTQ4MCwgNDk0ODQsIDQ5NDg2LCA0OTQ4OCwgNDk0OTIsIAotICAgIDQ5NDk2LCA0OTUwMCwgNDk1MDQsIDQ5NTA5LCA0OTUxMSwgNDk1MTYsIDQ5NTE5LCA0OTUyMiwgNDk1MjUsIDQ5NTI5LCAKLSAgICA0OTUzMywgNDk1MzgsIDQ5NTQyLCA0OTU0NywgNDk1NTIsIDQ5NTU2LCA0OTU2MSwgNDk1NjcsIDQ5NTcwLCA0OTU3NiwgCi0gICAgNDk1ODEsIDQ5NTg1LCA0OTU5MCwgNDk1OTYsIDQ5NjAyLCA0OTYwOSwgNDk2MTUsIDQ5NjIyLCA0OTYyOSwgNDk2MzEsIAotICAgIDQ5NjM4LCA0OTY0MiwgNDk2NDgsIDQ5NjU0LCA0OTY1OSwgNDk2NjUsIDQ5NjY5LCA0OTY3NCwgNDk2NzcsIDQ5NjgyLCAKLSAgICA0OTY4OCwgNDk2OTUsIDQ5NzAzLCA0OTcxMCwgNDk3MTksIDQ5NzI5LCA0OTczNiwgNDk3NDIsIDQ5NzQ2LCA0OTc1MywgCi0gICAgNDk3NTgsIDQ5NzY3LCA0OTc3MCwgNDk3NzMsIDQ5NzgyLCA0OTc5MiwgNDk3OTksIDQ5ODAxLCA0OTgwNywgNDk4MTIsIAotICAgIDQ5ODE0LCA0OTgxNywgNDk4MjEsIDQ5ODI5LCA0OTgzOCwgNDk4NDEsIDQ5ODQ2LCA0OTg1MSwgNDk4NTksIDQ5ODY3LCAKLSAgICA0OTg3NSwgNDk4ODMsIDQ5ODg5LCA0OTg5NSwgNDk5MDEsIDQ5OTA5LCA0OTkxNCwgNDk5MTcsIDQ5OTIxLCA0OTkyNCwgCi0gICAgNDk5MzYsIDQ5OTQ2LCA0OTk1NywgNDk5NjYsIDQ5OTc3LCA0OTk4NywgNDk5OTYsIDUwMDAyLCA1MDAxMCwgNTAwMTQsIAotICAgIDUwMDIyLCA1MDAyNiwgNTAwMzQsIDUwMDQxLCA1MDA0OCwgNTAwNTcsIDUwMDY2LCA1MDA3NiwgNTAwODYsIDUwMDk2LCAKLSAgICA1MDEwNiwgNTAxMTUsIDUwMTI0LCA1MDEzNCwgNTAxNDQsIDUwMTUzLCA1MDE2MiwgNTAxNjgsIDUwMTc0LCA1MDE4MCwgCi0gICAgNTAxODYsIDUwMTkyLCA1MDE5OCwgNTAyMDUsIDUwMjExLCA1MDIxOCwgNTAyMjUsIDUwMjMxLCA1MDIzNywgNTAyNDMsIAotICAgIDUwMjQ5LCA1MDI1NSwgNTAyNjEsIDUwMjY4LCA1MDI3NCwgNTAyODEsIDUwMjg4LCA1MDI5NSwgNTAzMDIsIDUwMzA5LCAKLSAgICA1MDMxNiwgNTAzMjMsIDUwMzMwLCA1MDMzOCwgNTAzNDUsIDUwMzUzLCA1MDM2MSwgNTAzNjYsIDUwMzY5LCA1MDM3MywgCi0gICAgNTAzNzcsIDUwMzgzLCA1MDM4NiwgNTAzOTEsIDUwMzk3LCA1MDQwMiwgNTA0MDYsIDUwNDExLCA1MDQxNywgNTA0MjQsIAotICAgIDUwNDI3LCA1MDQzNCwgNTA0NDEsIDUwNDQ1LCA1MDQ1MywgNTA0NjEsIDUwNDY2LCA1MDQ3MiwgNTA0NzcsIDUwNDgyLCAKLSAgICA1MDQ4OSwgNTA0OTYsIDUwNTA0LCA1MDUxMiwgNTA1MjEsIDUwNTI1LCA1MDUzNCwgNTA1MzksIDUwNTQzLCA1MDU1MCwgCi0gICAgNTA1NTQsIDUwNTYwLCA1MDU2OCwgNTA1NzMsIDUwNTgwLCA1MDU4NCwgNTA1ODksIDUwNTkzLCA1MDU5OCwgNTA2MDIsIAotICAgIDUwNjA3LCA1MDYxMiwgNTA2MjEsIDUwNjIzLCA1MDYyNiwgNTA2MjksIDUwNjM2LCA1MDY0MywgNTA2NDksIDUwNjU3LCAKLSAgICA1MDY2MywgNTA2NzAsIDUwNjc1LCA1MDY3OCwgNTA2ODMsIDUwNjg4LCA1MDY5MywgNTA3MDEsIDUwNzA1LCA1MDcxMiwgCi0gICAgNTA3MjAsIDUwNzI4LCA1MDczMywgNTA3MzgsIDUwNzQ0LCA1MDc0OSwgNTA3NTQsIDUwNzYwLCA1MDc2NSwgNTA3NjgsIAotICAgIDUwNzcyLCA1MDc3NiwgNTA3ODMsIDUwNzkzLCA1MDc5OCwgNTA4MDcsIDUwODE2LCA1MDgyMiwgNTA4MjgsIDUwODMzLCAKLSAgICA1MDgzOCwgNTA4NDMsIDUwODQ4LCA1MDg1NCwgNTA4NjAsIDUwODY4LCA1MDg3NiwgNTA4ODIsIDUwODg4LCA1MDg5MiwgCi0gICAgNTA4OTYsIDUwOTAzLCA1MDkxMCwgNTA5MTYsIDUwOTE5LCA1MDkyMiwgNTA5MjYsIDUwOTMwLCA1MDkzNCwgNTA5MzksIAotICAgIDUwOTQ1LCA1MDk1MSwgNTA5NTgsIDUwOTY1LCA1MDk3MCwgNTA5NzQsIDUwOTc4LCA1MDk4MiwgNTA5ODYsIDUwOTkwLCAKLSAgICA1MDk5NCwgNTA5OTgsIDUxMDAyLCA1MTAwNiwgNTEwMTAsIDUxMDE0LCA1MTAxOCwgNTEwMjIsIDUxMDI2LCA1MTAzMCwgCi0gICAgNTEwMzQsIDUxMDM4LCA1MTA0MiwgNTEwNDYsIDUxMDUwLCA1MTA1NCwgNTEwNTgsIDUxMDYyLCA1MTA2NiwgNTEwNzAsIAotICAgIDUxMDc0LCA1MTA3OCwgNTEwODIsIDUxMDg2LCA1MTA5MCwgNTEwOTQsIDUxMDk4LCA1MTEwMiwgNTExMDYsIDUxMTEwLCAKLSAgICA1MTExNCwgNTExMTgsIDUxMTIyLCA1MTEyNiwgNTExMzAsIDUxMTM0LCA1MTEzOCwgNTExNDIsIDUxMTQ2LCA1MTE1MCwgCi0gICAgNTExNTQsIDUxMTU4LCA1MTE2MiwgNTExNjYsIDUxMTcwLCA1MTE3NCwgNTExNzgsIDUxMTgyLCA1MTE4NiwgNTExOTAsIAotICAgIDUxMTk0LCA1MTE5OCwgNTEyMDIsIDUxMjA2LCA1MTIxMCwgNTEyMTQsIDUxMjE4LCA1MTIyMiwgNTEyMjYsIDUxMjMwLCAKLSAgICA1MTIzNCwgNTEyMzgsIDUxMjQyLCA1MTI0NiwgNTEyNTAsIDUxMjU0LCA1MTI1OCwgNTEyNjIsIDUxMjY2LCA1MTI3MCwgCi0gICAgNTEyNzQsIDUxMjc4LCA1MTI4MiwgNTEyODYsIDUxMjkwLCA1MTI5NCwgNTEyOTgsIDUxMzAyLCA1MTMwNiwgNTEzMTAsIAotICAgIDUxMzE0LCA1MTMxOCwgNTEzMjIsIDUxMzI2LCA1MTMzMCwgNTEzMzQsIDUxMzM4LCA1MTM0MiwgNTEzNDYsIDUxMzUwLCAKLSAgICA1MTM1NCwgNTEzNTgsIDUxMzYyLCA1MTM2NiwgNTEzNzAsIDUxMzc0LCA1MTM3OCwgNTEzODIsIDUxMzg2LCA1MTM5MCwgCi0gICAgNTEzOTQsIDUxMzk4LCA1MTQwMiwgNTE0MDYsIDUxNDEwLCA1MTQxNCwgNTE0MTgsIDUxNDIyLCA1MTQyNiwgNTE0MzAsIAotICAgIDUxNDM0LCA1MTQzOCwgNTE0NDIsIDUxNDQ2LCA1MTQ1MCwgNTE0NTQsIDUxNDU4LCA1MTQ2MiwgNTE0NjYsIDUxNDcwLCAKLSAgICA1MTQ3NCwgNTE0NzgsIDUxNDgyLCA1MTQ4NiwgNTE0OTAsIDUxNDk0LCA1MTQ5OCwgNTE1MDIsIDUxNTA2LCA1MTUxMCwgCi0gICAgNTE1MTQsIDUxNTE4LCA1MTUyMiwgNTE1MjYsIDUxNTMwLCA1MTUzNCwgNTE1MzgsIDUxNTQyLCA1MTU0NiwgNTE1NTAsIAotICAgIDUxNTU0LCA1MTU1OCwgNTE1NjIsIDUxNTY2LCA1MTU3MCwgNTE1NzQsIDUxNTc4LCA1MTU4MiwgNTE1ODYsIDUxNTkwLCAKLSAgICA1MTU5NCwgNTE1OTgsIDUxNjAyLCA1MTYwNiwgNTE2MTAsIDUxNjE0LCA1MTYxOCwgNTE2MjIsIDUxNjI2LCA1MTYzMCwgCi0gICAgNTE2MzQsIDUxNjM4LCA1MTY0MiwgNTE2NDYsIDUxNjUwLCA1MTY1NCwgNTE2NTgsIDUxNjYyLCA1MTY2NiwgNTE2NzAsIAotICAgIDUxNjc0LCA1MTY3OCwgNTE2ODIsIDUxNjg2LCA1MTY5MCwgNTE2OTQsIDUxNjk4LCA1MTcwMiwgNTE3MDYsIDUxNzEwLCAKLSAgICA1MTcxNCwgNTE3MTgsIDUxNzIyLCA1MTcyNiwgNTE3MzAsIDUxNzM0LCA1MTczOCwgNTE3NDIsIDUxNzQ2LCA1MTc1MCwgCi0gICAgNTE3NTQsIDUxNzU4LCA1MTc2MiwgNTE3NjYsIDUxNzcwLCA1MTc3NCwgNTE3NzgsIDUxNzgyLCA1MTc4NiwgNTE3OTAsIAotICAgIDUxNzk0LCA1MTc5OCwgNTE4MDIsIDUxODA2LCA1MTgxMCwgNTE4MTQsIDUxODE4LCA1MTgyMiwgNTE4MjYsIDUxODMwLCAKLSAgICA1MTgzNCwgNTE4MzgsIDUxODQyLCA1MTg0NiwgNTE4NTAsIDUxODU0LCA1MTg1OCwgNTE4NjIsIDUxODY2LCA1MTg3MCwgCi0gICAgNTE4NzQsIDUxODc4LCA1MTg4MiwgNTE4ODYsIDUxODkwLCA1MTg5NCwgNTE4OTgsIDUxOTAyLCA1MTkwNiwgNTE5MTAsIAotICAgIDUxOTE0LCA1MTkxOCwgNTE5MjIsIDUxOTI2LCA1MTkzMCwgNTE5MzQsIDUxOTM4LCA1MTk0MiwgNTE5NDYsIDUxOTUwLCAKLSAgICA1MTk1NCwgNTE5NTgsIDUxOTYyLCA1MTk2NiwgNTE5NzAsIDUxOTc0LCA1MTk3OCwgNTE5ODIsIDUxOTg2LCA1MTk5MCwgCi0gICAgNTE5OTQsIDUyMDAxLCA1MjAwOSwgNTIwMTUsIDUyMDIxLCA1MjAyOCwgNTIwMzUsIDUyMDQxLCA1MjA0NywgNTIwNTMsIAotICAgIDUyMDU5LCA1MjA2MywgNTIwNjcsIDUyMDcyLCA1MjA3NywgNTIwODMsIDUyMDg5LCA1MjA5NywgNTIxMDQsIDUyMTA5LCAKLSAgICA1MjExNCwgNTIxMjIsIDUyMTMxLCA1MjEzOCwgNTIxNDgsIDUyMTU5LCA1MjE2MiwgNTIxNjUsIDUyMTY5LCA1MjE3MywgCi0gICAgNTIxODAsIDUyMTg3LCA1MjE5OCwgNTIyMDksIDUyMjE4LCA1MjIyNywgNTIyMzMsIDUyMjM5LCA1MjI0NiwgNTIyNTMsIAotICAgIDUyMjYyLCA1MjI3MiwgNTIyODMsIDUyMjkzLCA1MjMwMywgNTIzMTMsIDUyMzI0LCA1MjMzNSwgNTIzNDUsIDUyMzU2LCAKLSAgICA1MjM2NiwgNTIzNzYsIDUyMzg1LCA1MjM5NSwgNTI0MDUsIDUyNDE1LCA1MjQyNSwgNTI0MzIsIDUyNDM5LCA1MjQ0NiwgCi0gICAgNTI0NTMsIDUyNDYzLCA1MjQ3MywgNTI0ODEsIDUyNDg5LCA1MjQ5NiwgNTI1MDMsIDUyNTEwLCA1MjUxNywgNTI1MjQsIAotICAgIDUyNTI5LCA1MjUzNCwgNTI1NDAsIDUyNTQ4LCA1MjU1NywgNTI1NjUsIDUyNTczLCA1MjU4MSwgNTI1ODksIDUyNTk3LCAKLSAgICA1MjYwNSwgNTI2MTMsIDUyNjIxLCA1MjYzMCwgNTI2MzksIDUyNjQ4LCA1MjY1NywgNTI2NjYsIDUyNjc1LCA1MjY4NCwgCi0gICAgNTI2OTMsIDUyNzAyLCA1MjcxMSwgNTI3MjAsIDUyNzI5LCA1MjczOCwgNTI3NDcsIDUyNzU2LCA1Mjc2NSwgNTI3NzksIAotICAgIDUyNzk0LCA1MjgwOCwgNTI4MjMsIDUyODM3LCA1Mjg1MSwgNTI4NjUsIDUyODc5LCA1Mjg4OSwgNTI5MDAsIDUyOTEwLCAKLSAgICA1MjkyMSwgNTI5MzYsIDUyOTUxLCA1Mjk1OSwgNTI5NjUsIDUyOTcyLCA1Mjk3OSwgNTI5ODYsIDUyOTkzLCA1Mjk5OCwgCi0gICAgNTMwMDQsIDUzMDA5LCA1MzAxNCwgNTMwMjAsIDUzMDI1LCA1MzAzMCwgNTMwMzUsIDUzMDQwLCA1MzA0NSwgNTMwNTIsIAotICAgIDUzMDU4LCA1MzA2NiwgNTMwNzEsIDUzMDc2LCA1MzA4MCwgNTMwODQsIDUzMDkyLCA1MzEwMCwgNTMxMDgsIDUzMTE2LCAKLSAgICA1MzEyMywgNTMxMzAsIDUzMTQzLCA1MzE1NiwgNTMxNjksIDUzMTgyLCA1MzE5MCwgNTMxOTgsIDUzMjA0LCA1MzIxMCwgCi0gICAgNTMyMTcsIDUzMjI0LCA1MzIzMSwgNTMyMzgsIDUzMjQyLCA1MzI0NywgNTMyNTUsIDUzMjYzLCA1MzI3MSwgNTMyNzgsIAotICAgIDUzMjgyLCA1MzI5MCwgNTMyOTgsIDUzMzAyLCA1MzMwNiwgNTMzMTEsIDUzMzE4LCA1MzMyNiwgNTMzMzQsIDUzMzUzLCAKLSAgICA1MzM3MiwgNTMzOTEsIDUzNDEwLCA1MzQyOSwgNTM0NDgsIDUzNDY3LCA1MzQ4NiwgNTM0OTIsIDUzNDk5LCA1MzUwOCwgCi0gICAgNTM1MTYsIDUzNTI0LCA1MzUzMCwgNTM1MzMsIDUzNTM2LCA1MzU0MSwgNTM1NDQsIDUzNTY0LCA1MzU3MSwgNTM1NzcsIAotICAgIDUzNTgzLCA1MzU4NywgNTM1OTAsIDUzNTkzLCA1MzU5NiwgNTM2MDgsIDUzNjIyLCA1MzYyOSwgNTM2MzYsIDUzNjM5LCAKLSAgICA1MzY0MywgNTM2NDYsIDUzNjUxLCA1MzY1NiwgNTM2NjEsIDUzNjY3LCA1MzY3NiwgNTM2ODMsIDUzNjkwLCA1MzY5OCwgCi0gICAgNTM3MDUsIDUzNzEyLCA1MzcxNSwgNTM3MjEsIDUzNzI3LCA1MzczMCwgNTM3MzMsIDUzNzM4LCA1Mzc0MywgNTM3NDksIAotICAgIDUzNzU1LCA1Mzc1OSwgNTM3NjQsIDUzNzcxLCA1Mzc3NSwgNTM3ODEsIDUzNzg1LCA1Mzc4OSwgNTM3OTcsIDUzODA5LCAKLSAgICA1MzgxOCwgNTM4MjIsIDUzODI0LCA1MzgzMywgNTM4NDIsIDUzODQ4LCA1Mzg1MSwgNTM4NTcsIDUzODYzLCA1Mzg2OCwgCi0gICAgNTM4NzMsIDUzODc4LCA1Mzg4MywgNTM4ODgsIDUzODkzLCA1Mzg5NSwgNTM5MDEsIDUzOTA2LCA1MzkxNCwgNTM5MTgsIAotICAgIDUzOTI0LCA1MzkyNywgNTM5MzEsIDUzOTM4LCA1Mzk0NSwgNTM5NDcsIDUzOTQ5LCA1Mzk1NSwgNTM5NjEsIDUzOTY3LCAKLSAgICA1Mzk3NiwgNTM5ODUsIDUzOTkyLCA1Mzk5OSwgNTQwMDUsIDU0MDEyLCA1NDAxNywgNTQwMjIsIDU0MDI3LCA1NDAzMywgCi0gICAgNTQwMzksIDU0MDQ0LCA1NDA1MSwgNTQwNTUsIDU0MDU5LCA1NDA3MiwgNTQwODUsIDU0MDk3LCA1NDEwNiwgNTQxMTIsIAotICAgIDU0MTE5LCA1NDEyNCwgNTQxMjksIDU0MTM0LCA1NDEzOSwgNTQxNDQsIDU0MTQ2LCA1NDE1MywgNTQxNjEsIDU0MTY5LCAKLSAgICA1NDE3NywgNTQxODQsIDU0MTkyLCA1NDE5OCwgNTQyMDMsIDU0MjA5LCA1NDIxNSwgNTQyMjEsIDU0MjI4LCA1NDIzNCwgCi0gICAgNTQyNDIsIDU0MjUwLCA1NDI1OCwgNTQyNjYsIDU0Mjc0LCA1NDI4MCwgNTQyODYsIDU0Mjk1LCA1NDI5OSwgNTQzMDgsIAotICAgIDU0MzE3LCA1NDMyNiwgNTQzMzQsIDU0MzM4LCA1NDM0NCwgNTQzNTEsIDU0MzU4LCA1NDM2MiwgNTQzNjgsIDU0Mzc2LCAKLSAgICA1NDM4MiwgNTQzODcsIDU0MzkzLCA1NDM5OCwgNTQ0MDMsIDU0NDEwLCA1NDQxNywgNTQ0MjIsIDU0NDI3LCA1NDQzNSwgCi0gICAgNTQ0NDMsIDU0NDUzLCA1NDQ2MywgNTQ0NzAsIDU0NDc3LCA1NDQ4MSwgNTQ0ODUsIDU0NDk3LCA1NDUwMywgNTQ1MTAsIAotICAgIDU0NTE1LCA1NDUyMCwgNTQ1MjcsIDU0NTM0LCA1NDU0MCwgNTQ1NDYsIDU0NTU2LCA1NDU2MywgNTQ1NzEsIDU0NTc5LCAKLSAgICA1NDU4OCwgNTQ1OTUsIDU0NjAxLCA1NDYwOCwgNTQ2MTQsIDU0NjIyLCA1NDYzMCwgNTQ2MzgsIDU0NjQ2LCA1NDY1MiwgCi0gICAgNTQ2NTcsIDU0NjY3LCA1NDY3OCwgNTQ2ODUsIDU0Njk0LCA1NDcwMCwgNTQ3MDUsIDU0NzEwLCA1NDcyMCwgNTQ3MjcsIAotICAgIDU0NzMzLCA1NDczOSwgNTQ3NDcsIDU0NzUyLCA1NDc1OSwgNTQ3NjYsIDU0Nzc3LCA1NDc4NCwgNTQ3OTEsIDU0Nzk4LCAKLSAgICA1NDgwNSwgNTQ4MTIsIDU0ODIwLCA1NDgyOCwgNTQ4NDEsIDU0ODU0LCA1NDg2NiwgNTQ4NzgsIDU0ODkyLCA1NDkwNiwgCi0gICAgNTQ5MTIsIDU0OTE4LCA1NDkyNywgNTQ5MzYsIDU0OTQzLCA1NDk1MCwgNTQ5NTksIDU0OTY4LCA1NDk3NywgNTQ5ODYsIAotICAgIDU0OTk0LCA1NTAwMiwgNTUwMTIsIDU1MDIyLCA1NTAzNiwgNTUwNTAsIDU1MDU5LCA1NTA2OCwgNTUwODEsIDU1MDk0LCAKLSAgICA1NTEwMywgNTUxMTIsIDU1MTIzLCA1NTEzNCwgNTUxNDAsIDU1MTQ2LCA1NTE1NSwgNTUxNjQsIDU1MTY5LCA1NTE3NCwgCi0gICAgNTUxODIsIDU1MTg4LCA1NTE5NCwgNTUyMDIsIDU1MjEwLCA1NTIyMywgNTUyMzYsIDU1MjQwLCA1NTI0NCwgNTUyNTIsIAotICAgIDU1MjYwLCA1NTI2NywgNTUyNzUsIDU1MjgzLCA1NTI5MiwgNTUzMDEsIDU1MzA3LCA1NTMxMywgNTUzMjAsIDU1MzI3LCAKLSAgICA1NTMzNCwgNTUzNDEsIDU1MzUwLCA1NTM1OSwgNTUzNjIsIDU1MzY1LCA1NTM3MCwgNTUzNzUsIDU1MzgxLCA1NTM4NywgCi0gICAgNTUzOTQsIDU1NDAxLCA1NTQxMiwgNTU0MjMsIDU1NDMwLCA1NTQzNywgNTU0NDUsIDU1NDUzLCA1NTQ2MSwgNTU0NjksIAotICAgIDU1NDc3LCA1NTQ4NSwgNTU0OTEsIDU1NDk3LCA1NTUwMSwgNTU1MDUsIDU1NTEzLCA1NTUyMSwgNTU1MjYsIDU1NTMxLCAKLSAgICA1NTUzNiwgNTU1NDEsIDU1NTQ3LCA1NTU2MSwgNTU1NjgsIDU1NTc1LCA1NTU3OSwgNTU1ODEsIDU1NTgzLCA1NTU4OCwgCi0gICAgNTU1OTMsIDU1NTk4LCA1NTYwMiwgNTU2MTAsIDU1NjE3LCA1NTYyNCwgNTU2MzIsIDU1NjQ0LCA1NTY1MiwgNTU2NjAsIAotICAgIDU1NjcxLCA1NTY3NSwgNTU2NzksIDU1Njg1LCA1NTY5MywgNTU3MDYsIDU1NzEzLCA1NTcyMCwgNTU3MjcsIDU1NzMzLCAKLSAgICA1NTc0MCwgNTU3NDksIDU1NzU4LCA1NTc2NCwgNTU3NzAsIDU1Nzc2LCA1NTc4NiwgNTU3OTYsIDU1ODA0LCA1NTgxMywgCi0gICAgNTU4MTgsIDU1ODIxLCA1NTgyNiwgNTU4MzEsIDU1ODM2LCA1NTg0MiwgNTU4NDgsIDU1ODUyLCA1NTg1NSwgNTU4NTgsIAotICAgIDU1ODYxLCA1NTg2NiwgNTU4NzEsIDU1ODc3LCA1NTg4MywgNTU4ODcsIDU1ODkxLCA1NTg5OCwgNTU5MDUsIDU1OTEyLCAKLSAgICA1NTkxOSwgNTU5MjYsIDU1OTMzLCA1NTk0MywgNTU5NTMsIDU1OTYwLCA1NTk2NywgNTU5NzUsIDU1OTgzLCA1NTk4NywgCi0gICAgNTU5OTIsIDU1OTk3LCA1NjAwMywgNTYwMDksIDU2MDEyLCA1NjAxNSwgNTYwMTgsIDU2MDIxLCA1NjAyNiwgNTYwMzEsIAotICAgIDU2MDM2LCA1NjA0MSwgNTYwNDYsIDU2MDUxLCA1NjA1NSwgNTYwNTksIDU2MDYzLCA1NjA2OCwgNTYwNzMsIDU2MDc3LCAKLSAgICA1NjA4MSwgNTYwODcsIDU2MDkxLCA1NjA5NywgNTYxMDIsIDU2MTA5LCA1NjExNywgNTYxMjQsIDU2MTMyLCA1NjEzOSwgCi0gICAgNTYxNDcsIDU2MTU2LCA1NjE2MywgNTYxNzMsIDU2MTg0LCA1NjE5MCwgNTYxOTksIDU2MjA1LCA1NjIxNCwgNTYyMjMsIAotICAgIDU2MjI5LCA1NjIzNSwgNTYyMzksIDU2MjQzLCA1NjI1MiwgNTYyNjEsIDU2MjY4LCA1NjI3NSwgNTYyODQsIDU2MjkzLCAKLSAgICA1NjI5OSwgNTYzMDUsIDU2MzEyLCA1NjMxNywgNTYzMjEsIDU2MzI1LCA1NjMzMCwgNTYzMzUsIDU2MzQwLCA1NjM0OCwgCi0gICAgNTYzNTYsIDU2MzU5LCA1NjM2MywgNTYzNzIsIDU2MzgyLCA1NjM5MSwgNTY0MDEsIDU2NDEyLCA1NjQyNSwgNTY0MjksIAotICAgIDU2NDMzLCA1NjQzNywgNTY0NDEsIDU2NDQ2LCA1NjQ1MSwgNTY0NTcsIDU2NDYzLCA1NjQ3MCwgNTY0NzcsIDU2NDgzLCAKLSAgICA1NjQ4OSwgNTY0OTUsIDU2NTAxLCA1NjUwOSwgNTY1MTcsIDU2NTI0LCA1NjUzMSwgNTY1MzgsIDAsIDAsIDU2NTQ1LCAKLSAgICA1NjU1NCwgNTY1NjMsIDU2NTczLCA1NjU4MywgNTY1OTIsIDU2NjAxLCA1NjYxMCwgNTY2MTksIDU2NjI1LCA1NjYzMCwgCi0gICAgNTY2MzksIDU2NjQ5LCA1NjY1OCwgNTY2NjgsIDU2Njc1LCA1NjY4MiwgNTY2ODksIDU2Njk2LCA1NjcwMSwgNTY3MDYsIAotICAgIDU2NzExLCA1NjcxNiwgNTY3MjQsIDU2NzMzLCA1Njc0MSwgNTY3NTAsIDU2NzU0LCA1Njc1OCwgNTY3NjIsIDU2NzY2LCAKLSAgICA1Njc3NiwgMCwgMCwgNTY3NzksIDU2Nzg4LCA1Njc5NywgNTY4MDYsIDU2ODE1LCA1NjgyMSwgNTY4MjcsIDU2ODMzLCAKLSAgICA1NjgzOSwgNTY4NDksIDU2ODU5LCA1Njg2OSwgNTY4NzksIDU2ODg5LCA1Njg5OSwgNTY5MDksIDU2OTE5LCA1NjkyNiwgCi0gICAgNTY5MzMsIDU2OTQwLCA1Njk0NywgNTY5NTQsIDU2OTYxLCA1Njk2OCwgNTY5NzUsIDU2OTgxLCA1Njk4NywgNTY5OTMsIAotICAgIDU2OTk5LCA1NzAwNSwgNTcwMTEsIDU3MDE3LCA1NzAyMywgNTcwMzQsIDAsIDAsIDAsIDU3MDQ0LCA1NzA1MSwgNTcwNTQsIAotICAgIDU3MDU4LCA1NzA2MiwgNTcwNjcsIDU3MDcyLCA1NzA3NywgNTcwODAsIDU3MDg5LCA1NzA5OCwgNTcxMDcsIDAsIDU3MTE2LCAKLSAgICA1NzEyMiwgNTcxMjgsIDU3MTM2LCA1NzE0NiwgNTcxNTMsIDU3MTYyLCA1NzE2NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTcxNzAsIDU3MTc5LCAKLSAgICA1NzE4OCwgNTcxOTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3MjA2LCAKLSAgICA1NzIxMSwgNTcyMTYsIDU3MjIxLCA1NzIyNiwgNTcyMzEsIDU3MjM2LCA1NzI0MSwgNTcyNDYsIDU3MjUxLCA1NzI1NiwgCi0gICAgNTcyNjIsIDU3MjY2LCA1NzI3MSwgNTcyNzYsIDU3MjgxLCA1NzI4NiwgNTcyOTEsIDU3Mjk2LCA1NzMwMSwgNTczMDYsIAotICAgIDU3MzExLCA1NzMxNiwgNTczMjEsIDU3MzI2LCA1NzMzMSwgNTczMzYsIDU3MzQxLCA1NzM0NiwgNTczNTEsIDU3MzU2LCAKLSAgICA1NzM2MSwgNTczNjYsIDU3MzcxLCA1NzM3NiwgNTczODIsIDU3Mzg3LCA1NzM5MywgNTc0MDIsIDU3NDA3LCA1NzQxNSwgCi0gICAgNTc0MjIsIDU3NDMxLCA1NzQzNiwgNTc0NDEsIDU3NDQ2LCA1NzQ1MiwgMCwgNTc0NTksIDU3NDY0LCA1NzQ2OSwgNTc0NzQsIAotICAgIDU3NDc5LCA1NzQ4NCwgNTc0ODksIDU3NDk0LCA1NzQ5OSwgNTc1MDQsIDU3NTA5LCA1NzUxNSwgNTc1MTksIDU3NTI0LCAKLSAgICA1NzUyOSwgNTc1MzQsIDU3NTM5LCA1NzU0NCwgNTc1NDksIDU3NTU0LCA1NzU1OSwgNTc1NjQsIDU3NTY5LCA1NzU3NCwgCi0gICAgNTc1NzksIDU3NTg0LCA1NzU4OSwgNTc1OTQsIDU3NTk5LCA1NzYwNCwgNTc2MDksIDU3NjE0LCA1NzYxOSwgNTc2MjQsIAotICAgIDU3NjI5LCA1NzYzNSwgNTc2NDAsIDU3NjQ2LCA1NzY1NSwgNTc2NjAsIDU3NjY4LCA1NzY3NSwgNTc2ODQsIDU3Njg5LCAKLSAgICA1NzY5NCwgNTc2OTksIDU3NzA1LCAwLCA1NzcxMiwgNTc3MjAsIDU3NzI4LCA1NzczNywgNTc3NDQsIDU3NzUyLCA1Nzc1OCwgCi0gICAgNTc3NjcsIDU3Nzc1LCA1Nzc4MywgNTc3OTEsIDU3Nzk5LCA1NzgwNywgNTc4MTUsIDU3ODIwLCA1NzgyNywgNTc4MzMsIAotICAgIDU3ODQwLCA1Nzg0OCwgNTc4NTUsIDU3ODYyLCA1Nzg3MCwgNTc4NzYsIDU3ODgyLCA1Nzg4OSwgNTc4OTYsIDU3OTA2LCAKLSAgICA1NzkxNiwgNTc5MjMsIDU3OTMwLCA1NzkzNSwgNTc5NDUsIDU3OTU1LCA1Nzk2MCwgNTc5NjUsIDU3OTcwLCA1Nzk3NSwgCi0gICAgNTc5ODAsIDU3OTg1LCA1Nzk5MCwgNTc5OTUsIDU4MDAwLCA1ODAwNSwgNTgwMTAsIDU4MDE1LCA1ODAyMCwgNTgwMjUsIAotICAgIDU4MDMwLCA1ODAzNSwgNTgwNDAsIDU4MDQ1LCA1ODA1MCwgNTgwNTUsIDU4MDYwLCA1ODA2NSwgNTgwNzAsIDU4MDc1LCAKLSAgICA1ODA4MCwgNTgwODUsIDU4MDkwLCA1ODA5NSwgNTgxMDAsIDU4MTA1LCA1ODEwOSwgNTgxMTMsIDU4MTE4LCA1ODEyMywgCi0gICAgNTgxMjgsIDU4MTMzLCA1ODEzOCwgNTgxNDMsIDU4MTQ4LCA1ODE1MywgNTgxNTgsIDU4MTYzLCA1ODE2OCwgNTgxNzMsIAotICAgIDU4MTc4LCA1ODE4MywgNTgxODgsIDU4MTkzLCA1ODE5OCwgNTgyMDMsIDU4MjEwLCA1ODIxNywgNTgyMjQsIDU4MjMxLCAKLSAgICA1ODIzOCwgNTgyNDUsIDU4MjUyLCA1ODI1OSwgNTgyNjYsIDU4MjczLCA1ODI4MCwgNTgyODcsIDU4Mjk0LCA1ODMwMSwgCi0gICAgNTgzMDYsIDU4MzExLCA1ODMxOCwgNTgzMjUsIDU4MzMyLCA1ODMzOSwgNTgzNDYsIDU4MzUzLCA1ODM2MCwgNTgzNjcsIAotICAgIDU4Mzc0LCA1ODM4MSwgNTgzODgsIDU4Mzk1LCA1ODQwMSwgNTg0MDcsIDU4NDEzLCA1ODQxOSwgNTg0MjYsIDU4NDMzLCAKLSAgICA1ODQ0MCwgNTg0NDcsIDU4NDU0LCA1ODQ2MSwgNTg0NjgsIDU4NDc1LCA1ODQ4MiwgNTg0ODksIDU4NDk3LCA1ODUwNSwgCi0gICAgNTg1MTMsIDU4NTIxLCA1ODUyOSwgNTg1MzcsIDU4NTQ1LCA1ODU1MywgNTg1NTcsIDU4NTYzLCA1ODU2OSwgNTg1NzMsIAotICAgIDU4NTc5LCA1ODU4NSwgNTg1OTEsIDU4NTk4LCA1ODYwNSwgNTg2MTIsIDU4NjE5LCA1ODYyNCwgNTg2MzAsIDU4NjM2LCAKLSAgICA1ODY0MywgMCwgMCwgMCwgMCwgMCwgNTg2NTAsIDU4NjU4LCA1ODY2NywgNTg2NzYsIDU4Njg0LCA1ODY5MCwgNTg2OTUsIAotICAgIDU4NzAwLCA1ODcwNSwgNTg3MTAsIDU4NzE1LCA1ODcyMCwgNTg3MjUsIDU4NzMwLCA1ODczNSwgNTg3NDAsIDU4NzQ1LCAKLSAgICA1ODc1MCwgNTg3NTUsIDU4NzYwLCA1ODc2NSwgNTg3NzAsIDU4Nzc1LCA1ODc4MCwgNTg3ODUsIDU4NzkwLCA1ODc5NSwgCi0gICAgNTg4MDAsIDU4ODA1LCA1ODgxMCwgNTg4MTUsIDU4ODIwLCA1ODgyNSwgNTg4MzAsIDU4ODM1LCA1ODg0MCwgNTg4NDUsIAotICAgIDU4ODUwLCA1ODg1NSwgNTg4NjAsIDU4ODY1LCA1ODg3MCwgNTg4NzUsIDU4ODgwLCA1ODg4NSwgMCwgNTg4OTAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDU4ODk1LCAwLCAwLCA1ODkwMCwgNTg5MDQsIDU4OTA5LCA1ODkxNCwgNTg5MTksIDU4OTI0LCA1ODkzMywgCi0gICAgNTg5MzgsIDU4OTQzLCA1ODk0OCwgNTg5NTMsIDU4OTU4LCA1ODk2MywgNTg5NjgsIDU4OTczLCA1ODk4MCwgNTg5ODUsIAotICAgIDU4OTkwLCA1ODk5OSwgNTkwMDYsIDU5MDExLCA1OTAxNiwgNTkwMjEsIDU5MDI4LCA1OTAzMywgNTkwNDAsIDU5MDQ1LCAKLSAgICA1OTA1MCwgNTkwNTcsIDU5MDY0LCA1OTA2OSwgNTkwNzQsIDU5MDc5LCA1OTA4NiwgNTkwOTMsIDU5MDk4LCA1OTEwMywgCi0gICAgNTkxMDgsIDU5MTEzLCA1OTExOCwgNTkxMjUsIDU5MTMyLCA1OTEzNywgNTkxNDIsIDU5MTQ3LCA1OTE1MiwgNTkxNTcsIAotICAgIDU5MTYyLCA1OTE2NywgNTkxNzIsIDU5MTc3LCA1OTE4MiwgNTkxODcsIDU5MTk0LCA1OTE5OSwgNTkyMDQsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDU5MjA5LCA1OTIxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTkyMjEsIDU5MjI2LCA1OTIzMCwgNTkyMzQsIDU5MjM4LCA1OTI0MiwgNTkyNDYsIDU5MjUwLCA1OTI1NCwgNTkyNTgsIAotICAgIDU5MjYyLCA1OTI2NiwgNTkyNzIsIDU5Mjc2LCA1OTI4MCwgNTkyODQsIDU5Mjg4LCA1OTI5MiwgNTkyOTYsIDU5MzAwLCAKLSAgICA1OTMwNCwgNTkzMDgsIDU5MzEyLCA1OTMxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTkzMjAsIDU5MzI0LCAKLSAgICA1OTMyOCwgNTkzMzIsIDU5MzM2LCA1OTM0MCwgNTkzNDQsIDAsIDU5MzQ4LCA1OTM1MiwgNTkzNTYsIDU5MzYwLCA1OTM2NCwgCi0gICAgNTkzNjgsIDU5MzcyLCAwLCA1OTM3NiwgNTkzODAsIDU5Mzg0LCA1OTM4OCwgNTkzOTIsIDU5Mzk2LCA1OTQwMCwgMCwgCi0gICAgNTk0MDQsIDU5NDA4LCA1OTQxMiwgNTk0MTYsIDU5NDIwLCA1OTQyNCwgNTk0MjgsIDAsIDU5NDMyLCA1OTQzNiwgNTk0NDAsIAotICAgIDU5NDQ0LCA1OTQ0OCwgNTk0NTIsIDU5NDU2LCAwLCA1OTQ2MCwgNTk0NjQsIDU5NDY4LCA1OTQ3MiwgNTk0NzYsIDU5NDgwLCAKLSAgICA1OTQ4NCwgMCwgNTk0ODgsIDU5NDkyLCA1OTQ5NiwgNTk1MDAsIDU5NTA0LCA1OTUwOCwgNTk1MTIsIDAsIDU5NTE2LCAKLSAgICA1OTUyMCwgNTk1MjQsIDU5NTI4LCA1OTUzMiwgNTk1MzYsIDU5NTQwLCAwLCA1OTU0NCwgNTk1NDksIDU5NTU0LCA1OTU1OSwgCi0gICAgNTk1NjQsIDU5NTY5LCA1OTU3NCwgNTk1NzgsIDU5NTgzLCA1OTU4OCwgNTk1OTMsIDU5NTk3LCA1OTYwMiwgNTk2MDcsIAotICAgIDU5NjEyLCA1OTYxNywgNTk2MjEsIDU5NjI2LCA1OTYzMSwgNTk2MzYsIDU5NjQxLCA1OTY0NiwgNTk2NTEsIDU5NjU1LCAKLSAgICA1OTY2MCwgNTk2NjUsIDU5NjcyLCA1OTY3NywgNTk2ODIsIDU5Njg4LCA1OTY5NSwgNTk3MDIsIDU5NzExLCA1OTcxOCwgCi0gICAgNTk3MjcsIDU5NzMxLCA1OTczNSwgNTk3NDEsIDU5NzQ3LCA1OTc1MywgNTk3NjEsIDU5NzY3LCA1OTc3MSwgNTk3NzUsIAotICAgIDU5Nzc5LCA1OTc4NSwgNTk3OTEsIDU5Nzk1LCA1OTc5NywgNTk4MDEsIDU5ODA3LCA1OTgwOSwgNTk4MTMsIDU5ODE2LCAKLSAgICA1OTgxOSwgNTk4MjUsIDU5ODMwLCA1OTgzNCwgNTk4MzgsIDU5ODQzLCA1OTg0OSwgNTk4NTQsIDU5ODU5LCA1OTg2NCwgCi0gICAgNTk4NjksIDU5ODc2LCA1OTg4MywgNTk4ODgsIDU5ODkzLCA1OTg5OCwgNTk5MDMsIDU5OTA4LCA1OTkxMywgNTk5MTcsIAotICAgIDU5OTIxLCA1OTkyOCwgNTk5MzUsIDU5OTQxLCA1OTk0NSwgNTk5NTAsIDU5OTUzLCA1OTk1NywgNTk5NjQsIDU5OTY4LCAKLSAgICA1OTk3MiwgNTk5NzYsIDU5OTgwLCA1OTk4NiwgNTk5OTIsIDU5OTk2LCA2MDAwMiwgNjAwMDYsIDYwMDEwLCA2MDAxNiwgCi0gICAgNjAwMjEsIDYwMDI2LCA2MDAyOCwgNjAwMzEsIDYwMDM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA2MDA0MSwgNjAwNDUsIDYwMDQ5LCA2MDA1NCwgNjAwNTksIDYwMDY0LCA2MDA2OCwgNjAwNzIsIDYwMDc2LCA2MDA4MSwgCi0gICAgNjAwODYsIDYwMDkwLCA2MDA5NCwgNjAwOTgsIDYwMTAyLCA2MDEwNywgNjAxMTIsIDYwMTE3LCA2MDEyMiwgNjAxMjYsIAotICAgIDYwMTMwLCA2MDEzNSwgNjAxNDAsIDYwMTQ1LCA2MDE1MCwgNjAxNTQsIDAsIDYwMTU4LCA2MDE2MiwgNjAxNjYsIDYwMTcwLCAKLSAgICA2MDE3NCwgNjAxNzgsIDYwMTgyLCA2MDE4NywgNjAxOTIsIDYwMTk2LCA2MDIwMSwgNjAyMDYsIDYwMjE1LCA2MDIxOSwgCi0gICAgNjAyMjMsIDYwMjI3LCA2MDIzNCwgNjAyMzgsIDYwMjQzLCA2MDI0OCwgNjAyNTIsIDYwMjU2LCA2MDI2MiwgNjAyNjcsIAotICAgIDYwMjcyLCA2MDI3NywgNjAyODIsIDYwMjg2LCA2MDI5MCwgNjAyOTQsIDYwMjk4LCA2MDMwMiwgNjAzMDcsIDYwMzEyLCAKLSAgICA2MDMxNiwgNjAzMjAsIDYwMzI1LCA2MDMzMCwgNjAzMzUsIDYwMzM5LCA2MDM0MywgNjAzNDgsIDYwMzUzLCA2MDM1OSwgCi0gICAgNjAzNjUsIDYwMzY5LCA2MDM3NSwgNjAzODEsIDYwMzg1LCA2MDM5MSwgNjAzOTcsIDYwNDAyLCA2MDQwNywgNjA0MTEsIAotICAgIDYwNDE3LCA2MDQyMSwgNjA0MjUsIDYwNDMxLCA2MDQzNywgNjA0NDIsIDYwNDQ3LCA2MDQ1MSwgNjA0NTUsIDYwNDYzLCAKLSAgICA2MDQ2OSwgNjA0NzUsIDYwNDgxLCA2MDQ4NiwgNjA0OTEsIDYwNDk2LCA2MDUwMiwgNjA1MDYsIDYwNTEyLCA2MDUxNiwgCi0gICAgNjA1MjAsIDYwNTI2LCA2MDUzMiwgNjA1MzgsIDYwNTQ0LCA2MDU1MCwgNjA1NTYsIDYwNTYyLCA2MDU2OCwgNjA1NzQsIAotICAgIDYwNTgwLCA2MDU4NiwgNjA1OTIsIDYwNTk2LCA2MDYwMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNjA2MDgsIDYwNjExLCA2MDYxNSwgNjA2MTksIDYwNjIzLCA2MDYyNywgNjA2MzAsIDYwNjMzLCA2MDYzNywgNjA2NDEsIAotICAgIDYwNjQ1LCA2MDY0OSwgNjA2NTIsIDYwNjU3LCA2MDY2MSwgNjA2NjUsIDYwNjY5LCA2MDY3NCwgNjA2NzgsIDYwNjgyLCAKLSAgICA2MDY4NiwgNjA2OTAsIDYwNjk2LCA2MDcwMiwgNjA3MDYsIDYwNzEwLCA2MDcxNCwgNjA3MTgsIDYwNzIyLCA2MDcyNiwgCi0gICAgNjA3MzAsIDYwNzM0LCA2MDczOCwgNjA3NDIsIDYwNzQ2LCA2MDc1MiwgNjA3NTYsIDYwNzYwLCA2MDc2NCwgNjA3NjgsIAotICAgIDYwNzcyLCA2MDc3NiwgNjA3ODAsIDYwNzg0LCA2MDc4OCwgNjA3OTIsIDYwNzk2LCA2MDgwMCwgNjA4MDQsIDYwODA4LCAKLSAgICA2MDgxMiwgNjA4MTYsIDYwODIyLCA2MDgyOCwgNjA4MzMsIDYwODM4LCA2MDg0MiwgNjA4NDYsIDYwODUwLCA2MDg1NCwgCi0gICAgNjA4NTgsIDYwODYyLCA2MDg2NiwgNjA4NzAsIDYwODc0LCA2MDg3OCwgNjA4ODIsIDYwODg2LCA2MDg5MCwgNjA4OTQsIAotICAgIDYwODk4LCA2MDkwMiwgNjA5MDYsIDYwOTEwLCA2MDkxNCwgNjA5MTgsIDYwOTIyLCA2MDkyNiwgNjA5MzAsIDYwOTM0LCAKLSAgICA2MDk0MCwgNjA5NDQsIDYwOTQ4LCA2MDk1MiwgNjA5NTYsIDYwOTYwLCA2MDk2NCwgNjA5NjgsIDYwOTcyLCA2MDk3NywgCi0gICAgNjA5ODQsIDYwOTg4LCA2MDk5MiwgNjA5OTYsIDYxMDAwLCA2MTAwNCwgNjEwMDgsIDYxMDEyLCA2MTAxNiwgNjEwMjAsIAotICAgIDYxMDI0LCA2MTAyOCwgNjEwMzIsIDYxMDM5LCA2MTA0MywgNjEwNDksIDYxMDUzLCA2MTA1NywgNjEwNjEsIDYxMDY1LCAKLSAgICA2MTA2OSwgNjEwNzIsIDYxMDc2LCA2MTA4MCwgNjEwODQsIDYxMDg4LCA2MTA5MiwgNjEwOTYsIDYxMTAwLCA2MTEwNCwgCi0gICAgNjExMDgsIDYxMTEyLCA2MTExNiwgNjExMjAsIDYxMTI0LCA2MTEyOCwgNjExMzIsIDYxMTM2LCA2MTE0MCwgNjExNDQsIAotICAgIDYxMTQ4LCA2MTE1MiwgNjExNTYsIDYxMTYwLCA2MTE2NCwgNjExNjgsIDYxMTcyLCA2MTE3NiwgNjExODAsIDYxMTg0LCAKLSAgICA2MTE4OCwgNjExOTIsIDYxMTk2LCA2MTIwMCwgNjEyMDYsIDYxMjEwLCA2MTIxNCwgNjEyMTgsIDYxMjIyLCA2MTIyNiwgCi0gICAgNjEyMzAsIDYxMjM0LCA2MTIzOCwgNjEyNDIsIDYxMjQ2LCA2MTI1MCwgNjEyNTQsIDYxMjU4LCA2MTI2MiwgNjEyNjYsIAotICAgIDYxMjcwLCA2MTI3NCwgNjEyNzgsIDYxMjgyLCA2MTI4NiwgNjEyOTAsIDYxMjk0LCA2MTI5OCwgNjEzMDIsIDYxMzA2LCAKLSAgICA2MTMxMCwgNjEzMTQsIDYxMzIyLCA2MTMyNiwgNjEzMzAsIDYxMzM0LCA2MTMzOCwgNjEzNDIsIDYxMzQ4LCA2MTM1MiwgCi0gICAgNjEzNTYsIDYxMzYwLCA2MTM2NCwgNjEzNjgsIDYxMzcyLCA2MTM3NiwgNjEzODAsIDYxMzg0LCA2MTM4OCwgNjEzOTIsIAotICAgIDYxMzk2LCA2MTQwMCwgNjE0MDYsIDYxNDEwLCA2MTQxNCwgNjE0MTgsIDYxNDIyLCA2MTQyNiwgNjE0MzAsIDYxNDM0LCAKLSAgICA2MTQzOCwgNjE0NDIsIDYxNDQ2LCA2MTQ1MCwgNjE0NTQsIDYxNDU4LCA2MTQ2MiwgNjE0NjYsIDYxNDcwLCA2MTQ3NCwgCi0gICAgNjE0NzgsIDYxNDgyLCA2MTQ4NiwgNjE0OTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxNDk0LCA2MTUwMywgNjE1MTEsIDYxNTIyLCA2MTUzMiwgCi0gICAgNjE1NDAsIDYxNTQ5LCA2MTU1OCwgNjE1NjgsIDYxNTgwLCA2MTU5MiwgNjE2MDQsIDAsIDAsIDAsIDAsIDYxNjEwLCAKLSAgICA2MTYxMywgNjE2MTYsIDYxNjIxLCA2MTYyNCwgNjE2MzEsIDYxNjM1LCA2MTYzOSwgNjE2NDMsIDYxNjQ3LCA2MTY1MSwgCi0gICAgNjE2NTYsIDYxNjYxLCA2MTY2NSwgNjE2NjksIDYxNjc0LCA2MTY3OSwgNjE2ODQsIDYxNjg5LCA2MTY5MiwgNjE2OTUsIAotICAgIDYxNzAxLCA2MTcwNywgNjE3MTIsIDYxNzE3LCA2MTcyNCwgNjE3MzEsIDYxNzM1LCA2MTczOSwgNjE3NDMsIDYxNzUxLCAKLSAgICA2MTc1NywgNjE3NjQsIDYxNzY5LCA2MTc3NCwgNjE3NzksIDYxNzg0LCA2MTc4OSwgNjE3OTQsIDYxNzk5LCA2MTgwNSwgCi0gICAgNjE4MTAsIDYxODE2LCA2MTgyMSwgNjE4MjYsIDYxODMxLCA2MTgzNiwgNjE4NDIsIDYxODQ3LCA2MTg1MSwgNjE4NTcsIAotICAgIDYxODY4LCA2MTg3OCwgNjE4OTMsIDYxOTAzLCA2MTkwNywgNjE5MTcsIDYxOTIzLCA2MTkyOSwgNjE5MzUsIDYxOTQwLCAKLSAgICA2MTk0MywgNjE5NDgsIDYxOTUyLCAwLCA2MTk1OCwgNjE5NjIsIDYxOTY1LCA2MTk2OSwgNjE5NzIsIDYxOTc2LCA2MTk3OSwgCi0gICAgNjE5ODMsIDYxOTg2LCA2MTk5MCwgNjE5OTMsIDYxOTk2LCA2MjAwMCwgNjIwMDQsIDYyMDA4LCA2MjAxMiwgNjIwMTYsIAotICAgIDYyMDIwLCA2MjAyNCwgNjIwMjgsIDYyMDMyLCA2MjAzNiwgNjIwNDAsIDYyMDQ0LCA2MjA0OCwgNjIwNTIsIDYyMDU2LCAKLSAgICA2MjA2MCwgNjIwNjQsIDYyMDY4LCA2MjA3MiwgNjIwNzYsIDYyMDgwLCA2MjA4NCwgNjIwODgsIDYyMDkzLCA2MjA5NywgCi0gICAgNjIxMDEsIDYyMTA1LCA2MjEwOSwgNjIxMTIsIDYyMTE2LCA2MjEyMCwgNjIxMjQsIDYyMTI4LCA2MjEzMiwgNjIxMzYsIAotICAgIDYyMTM5LCA2MjE0MywgNjIxNDYsIDYyMTUwLCA2MjE1NCwgNjIxNTgsIDYyMTYyLCA2MjE2NiwgNjIxNzAsIDYyMTc0LCAKLSAgICA2MjE3OCwgNjIxODIsIDYyMTg2LCA2MjE5MCwgNjIxOTQsIDYyMTk3LCA2MjIwMSwgNjIyMDUsIDYyMjA5LCA2MjIxMywgCi0gICAgNjIyMTcsIDYyMjIwLCA2MjIyNSwgNjIyMjksIDYyMjM0LCA2MjIzOCwgNjIyNDIsIDYyMjQ2LCA2MjI1MCwgNjIyNTQsIAotICAgIDYyMjU4LCA2MjI2MywgNjIyNjcsIDYyMjcxLCA2MjI3NSwgNjIyNzksIDYyMjgzLCA2MjI4NywgNjIyOTEsIDAsIDAsIAotICAgIDYyMjk2LCA2MjMwNCwgNjIzMTIsIDYyMzE5LCA2MjMyNiwgNjIzMzAsIDYyMzM2LCA2MjM0MSwgNjIzNDYsIDYyMzUwLCAKLSAgICA2MjM1MywgNjIzNTcsIDYyMzYwLCA2MjM2NCwgNjIzNjcsIDYyMzcxLCA2MjM3NCwgNjIzNzgsIDYyMzgxLCA2MjM4NCwgCi0gICAgNjIzODgsIDYyMzkyLCA2MjM5NiwgNjI0MDAsIDYyNDA0LCA2MjQwOCwgNjI0MTIsIDYyNDE2LCA2MjQyMCwgNjI0MjQsIAotICAgIDYyNDI4LCA2MjQzMiwgNjI0MzYsIDYyNDQwLCA2MjQ0NCwgNjI0NDgsIDYyNDUyLCA2MjQ1NiwgNjI0NjAsIDYyNDY0LCAKLSAgICA2MjQ2OCwgNjI0NzIsIDYyNDc2LCA2MjQ4MSwgNjI0ODUsIDYyNDg5LCA2MjQ5MywgNjI0OTcsIDYyNTAwLCA2MjUwNCwgCi0gICAgNjI1MDgsIDYyNTEyLCA2MjUxNiwgNjI1MjAsIDYyNTI0LCA2MjUyNywgNjI1MzEsIDYyNTM0LCA2MjUzOCwgNjI1NDIsIAotICAgIDYyNTQ2LCA2MjU1MCwgNjI1NTQsIDYyNTU4LCA2MjU2MiwgNjI1NjYsIDYyNTcwLCA2MjU3NCwgNjI1NzgsIDYyNTgyLCAKLSAgICA2MjU4NSwgNjI1ODksIDYyNTkzLCA2MjU5NywgNjI2MDEsIDYyNjA1LCA2MjYwOCwgNjI2MTMsIDYyNjE3LCA2MjYyMiwgCi0gICAgNjI2MjYsIDYyNjMwLCA2MjYzNCwgNjI2MzgsIDYyNjQyLCA2MjY0NiwgNjI2NTEsIDYyNjU1LCA2MjY1OSwgNjI2NjMsIAotICAgIDYyNjY3LCA2MjY3MSwgNjI2NzUsIDYyNjc5LCA2MjY4NCwgNjI2ODgsIDYyNjkyLCA2MjY5NiwgNjI3MDAsIDYyNzA0LCAKLSAgICA2MjcxMSwgNjI3MTUsIDYyNzIxLCAwLCAwLCAwLCAwLCAwLCA2MjcyNiwgNjI3MzEsIDYyNzM2LCA2Mjc0MSwgNjI3NDYsIAotICAgIDYyNzUxLCA2Mjc1NiwgNjI3NjEsIDYyNzY1LCA2Mjc3MCwgNjI3NzUsIDYyNzgwLCA2Mjc4NSwgNjI3OTAsIDYyNzk1LCAKLSAgICA2MjgwMCwgNjI4MDUsIDYyODEwLCA2MjgxNCwgNjI4MTksIDYyODI0LCA2MjgyOCwgNjI4MzIsIDYyODM2LCA2Mjg0MCwgCi0gICAgNjI4NDUsIDYyODUwLCA2Mjg1NSwgNjI4NjAsIDYyODY1LCA2Mjg3MCwgNjI4NzUsIDYyODgwLCA2Mjg4NSwgNjI4OTAsIAotICAgIDYyODk0LCA2Mjg5OCwgNjI5MDMsIDYyOTA4LCA2MjkxMywgNjI5MTgsIDAsIDAsIDAsIDYyOTIzLCA2MjkyNywgNjI5MzEsIAotICAgIDYyOTM1LCA2MjkzOSwgNjI5NDMsIDYyOTQ3LCA2Mjk1MSwgNjI5NTUsIDYyOTU5LCA2Mjk2MywgNjI5NjcsIDYyOTcxLCAKLSAgICA2Mjk3NSwgNjI5NzksIDYyOTgzLCA2Mjk4NywgNjI5OTEsIDYyOTk1LCA2Mjk5OSwgNjMwMDMsIDYzMDA3LCA2MzAxMSwgCi0gICAgNjMwMTUsIDYzMDE5LCA2MzAyMywgNjMwMjcsIDYzMDMxLCA2MzAzNSwgNjMwMzksIDYzMDQzLCA2MzA0NiwgNjMwNTAsIAotICAgIDYzMDUzLCA2MzA1NywgNjMwNjEsIDYzMDY0LCA2MzA2OCwgNjMwNzIsIDYzMDc1LCA2MzA3OSwgNjMwODMsIDYzMDg3LCAKLSAgICA2MzA5MSwgNjMwOTQsIDYzMDk4LCA2MzEwMiwgNjMxMDYsIDYzMTEwLCA2MzExNCwgNjMxMTgsIDYzMTIxLCA2MzEyNCwgCi0gICAgNjMxMjgsIDYzMTMyLCA2MzEzNiwgNjMxNDAsIDYzMTQ0LCA2MzE0OCwgNjMxNTIsIDYzMTU2LCA2MzE2MCwgNjMxNjQsIAotICAgIDYzMTY4LCA2MzE3MiwgNjMxNzYsIDYzMTgwLCA2MzE4NCwgNjMxODgsIDYzMTkyLCA2MzE5NiwgNjMyMDAsIDYzMjA0LCAKLSAgICA2MzIwOCwgNjMyMTIsIDYzMjE2LCA2MzIyMCwgNjMyMjQsIDYzMjI4LCA2MzIzMiwgNjMyMzYsIDYzMjQwLCA2MzI0NCwgCi0gICAgNjMyNDgsIDYzMjUyLCA2MzI1NiwgNjMyNjAsIDYzMjY0LCA2MzI2OCwgNjMyNzIsIDYzMjc2LCA2MzI4MCwgNjMyODQsIAotICAgIDYzMjg4LCAwLCA2MzI5MiwgNjMyOTgsIDYzMzA0LCA2MzMwOSwgNjMzMTQsIDYzMzE5LCA2MzMyNSwgNjMzMzEsIDYzMzM2LCAKLSAgICA2MzM0MiwgNjMzNDgsIDYzMzU0LCA2MzM2MCwgNjMzNjYsIDYzMzcyLCA2MzM3OCwgNjMzODQsIDYzMzg5LCA2MzM5NCwgCi0gICAgNjMzOTksIDYzNDA0LCA2MzQwOSwgNjM0MTQsIDYzNDE5LCA2MzQyNCwgNjM0MjksIDYzNDM0LCA2MzQzOSwgNjM0NDQsIAotICAgIDYzNDQ5LCA2MzQ1NCwgNjM0NTksIDYzNDY0LCA2MzQ2OSwgNjM0NzQsIDYzNDc5LCA2MzQ4NCwgNjM0OTAsIDYzNDk2LCAKLSAgICA2MzUwMiwgNjM1MDgsIDYzNTEzLCA2MzUxOCwgMCwgMCwgMCwgMCwgMCwgNjM1MjMsIDYzNTI4LCA2MzUzMywgNjM1MzgsIAotICAgIDYzNTQzLCA2MzU0OCwgNjM1NTMsIDYzNTU4LCA2MzU2MywgNjM1NjgsIDYzNTczLCA2MzU3OCwgNjM1ODMsIDYzNTg4LCAKLSAgICA2MzU5MywgNjM1OTgsIDYzNjAzLCA2MzYwOCwgNjM2MTIsIDYzNjE3LCA2MzYyMiwgNjM2MjcsIDYzNjMyLCA2MzYzNywgCi0gICAgNjM2NDIsIDYzNjQ3LCA2MzY1MiwgNjM2NTcsIDYzNjYyLCA2MzY2NywgNjM2NzIsIDYzNjc3LCA2MzY4MiwgNjM2ODcsIAotICAgIDYzNjkyLCA2MzY5NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjM3MDIsIDYzNzA3LCA2MzcxMiwgCi0gICAgNjM3MTcsIDYzNzIxLCA2MzcyNiwgNjM3MzAsIDYzNzM1LCA2Mzc0MCwgNjM3NDUsIDYzNzUwLCA2Mzc1NSwgNjM3NjAsIAotICAgIDYzNzY1LCA2Mzc3MCwgNjM3NzUsIDYzNzgwLCA2Mzc4NCwgNjM3ODgsIDYzNzkyLCA2Mzc5NiwgNjM4MDAsIDYzODA0LCAKLSAgICA2MzgwOCwgNjM4MTIsIDYzODE2LCA2MzgyMCwgNjM4MjQsIDYzODI4LCA2MzgzMiwgNjM4MzYsIDYzODQxLCA2Mzg0NiwgCi0gICAgNjM4NTEsIDYzODU2LCA2Mzg2MSwgNjM4NjYsIDYzODcxLCA2Mzg3NiwgNjM4ODEsIDYzODg2LCA2Mzg5MSwgNjM4OTYsIAotICAgIDYzOTAxLCA2MzkwNiwgNjM5MTEsIDYzOTE3LCAwLCA2MzkyNCwgNjM5MjcsIDYzOTMwLCA2MzkzMywgNjM5MzYsIDYzOTM5LCAKLSAgICA2Mzk0MiwgNjM5NDYsIDYzOTQ5LCA2Mzk1MywgNjM5NTcsIDYzOTYxLCA2Mzk2NSwgNjM5NjksIDYzOTczLCA2Mzk3NywgCi0gICAgNjM5ODEsIDYzOTg1LCA2Mzk4OSwgNjM5OTMsIDYzOTk3LCA2NDAwMSwgNjQwMDUsIDY0MDA5LCA2NDAxMywgNjQwMTcsIAotICAgIDY0MDIxLCA2NDAyNSwgNjQwMjksIDY0MDMzLCA2NDAzNywgNjQwNDEsIDY0MDQ1LCA2NDA0OSwgNjQwNTMsIDY0MDU3LCAKLSAgICA2NDA2MSwgNjQwNjUsIDY0MDY5LCA2NDA3MywgNjQwNzcsIDY0MDg2LCA2NDA5NSwgNjQxMDQsIDY0MTEzLCA2NDEyMiwgCi0gICAgNjQxMzEsIDY0MTQwLCA2NDE0OSwgNjQxNTIsIDY0MTU3LCA2NDE2MiwgNjQxNjcsIDY0MTcyLCA2NDE3NywgNjQxODIsIAotICAgIDY0MTg4LCA2NDE5MywgNjQxOTksIDY0MjAzLCA2NDIwOCwgNjQyMTMsIDY0MjE4LCA2NDIyMywgNjQyMjgsIDY0MjMyLCAKLSAgICA2NDIzNiwgNjQyNDAsIDY0MjQ0LCA2NDI0OCwgNjQyNTIsIDY0MjU2LCA2NDI2MCwgNjQyNjQsIDY0MjY4LCA2NDI3MiwgCi0gICAgNjQyNzYsIDY0MjgwLCA2NDI4NCwgNjQyODksIDY0Mjk0LCA2NDI5OSwgNjQzMDQsIDY0MzA5LCA2NDMxNCwgNjQzMTksIAotICAgIDY0MzI0LCA2NDMyOSwgNjQzMzQsIDY0MzM5LCA2NDM0NCwgNjQzNDksIDY0MzU0LCA2NDM2MCwgNjQzNjYsIDY0MzcxLCAKLSAgICA2NDM3NiwgNjQzNzksIDY0MzgyLCA2NDM4NSwgNjQzODgsIDY0MzkxLCA2NDM5NCwgNjQzOTgsIDY0NDAxLCA2NDQwNSwgCi0gICAgNjQ0MDksIDY0NDEzLCA2NDQxNywgNjQ0MjEsIDY0NDI1LCA2NDQyOSwgNjQ0MzMsIDY0NDM3LCA2NDQ0MSwgNjQ0NDUsIAotICAgIDY0NDQ5LCA2NDQ1MywgNjQ0NTcsIDY0NDYxLCA2NDQ2NSwgNjQ0NjksIDY0NDczLCA2NDQ3NywgNjQ0ODEsIDY0NDg1LCAKLSAgICA2NDQ4OSwgNjQ0OTMsIDY0NDk3LCA2NDUwMSwgNjQ1MDUsIDY0NTA5LCA2NDUxMywgNjQ1MTcsIDY0NTIxLCA2NDUyNSwgCi0gICAgNjQ1MjksIDY0NTMzLCA2NDUzNywgNjQ1NDEsIDY0NTQ1LCA2NDU0OSwgNjQ1NTMsIDY0NTU3LCA2NDU2MSwgNjQ1NjUsIAotICAgIDY0NTcwLCA2NDU3NiwgNjQ1ODEsIDY0NTg3LCA2NDU5MSwgNjQ1OTYsIDY0NjAxLCA2NDYwNiwgNjQ2MTEsIDY0NjE2LCAKLSAgICA2NDYyMSwgNjQ2MjcsIDY0NjMyLCA2NDYzOCwgNjQ2NDIsIDY0NjQ5LCA2NDY1NiwgNjQ2NjMsIDY0NjcwLCA2NDY3NywgCi0gICAgNjQ2ODQsIDY0NjkxLCA2NDY5OCwgNjQ3MDUsIDY0NzEyLCA2NDcxOSwgNjQ3MjYsIDY0NzI5LCA2NDczMiwgNjQ3MzUsIAotICAgIDY0NzQwLCA2NDc0MywgNjQ3NDYsIDY0NzQ5LCA2NDc1MiwgNjQ3NTUsIDY0NzU4LCA2NDc2MiwgNjQ3NjYsIDY0NzcwLCAKLSAgICA2NDc3NCwgNjQ3NzgsIDY0NzgyLCA2NDc4NiwgNjQ3OTAsIDY0Nzk0LCA2NDc5OCwgNjQ4MDIsIDY0ODA2LCA2NDgxMCwgCi0gICAgNjQ4MTMsIDY0ODE3LCA2NDgyMSwgNjQ4MjUsIDY0ODI5LCA2NDgzMywgNjQ4MzYsIDY0ODQwLCA2NDg0NCwgNjQ4NDgsIAotICAgIDY0ODUyLCA2NDg1NSwgNjQ4NTksIDY0ODYzLCA2NDg2NywgNjQ4NzEsIDY0ODc0LCA2NDg3OCwgNjQ4ODIsIDY0ODg2LCAKLSAgICA2NDg5MCwgNjQ4OTQsIDY0ODk4LCA2NDkwMiwgNjQ5MDYsIDY0OTEwLCA2NDkxNCwgMCwgNjQ5MTgsIDY0OTIxLCA2NDkyNCwgCi0gICAgNjQ5MjcsIDY0OTMwLCA2NDkzMywgNjQ5MzYsIDY0OTM5LCA2NDk0MiwgNjQ5NDUsIDY0OTQ4LCA2NDk1MSwgNjQ5NTQsIAotICAgIDY0OTU3LCA2NDk2MCwgNjQ5NjMsIDY0OTY2LCA2NDk2OSwgNjQ5NzIsIDY0OTc1LCA2NDk3OCwgNjQ5ODEsIDY0OTg0LCAKLSAgICA2NDk4NywgNjQ5OTAsIDY0OTkzLCA2NDk5NiwgNjQ5OTksIDY1MDAyLCA2NTAwNSwgNjUwMDgsIDY1MDExLCA2NTAxNCwgCi0gICAgNjUwMTcsIDY1MDIwLCA2NTAyMywgNjUwMjYsIDY1MDI5LCA2NTAzMiwgNjUwMzUsIDY1MDM4LCA2NTA0MSwgNjUwNDQsIAotICAgIDY1MDQ3LCA2NTA1MCwgNjUwNTMsIDY1MDU2LCA2NTA1OSwgNjUwNjIsIDY1MDY1LCA2NTA2OCwgNjUwNzEsIDY1MDc0LCAKLSAgICA2NTA3NywgNjUwODAsIDY1MDgzLCA2NTA4NiwgNjUwODksIDY1MDkyLCA2NTA5NSwgNjUwOTgsIDY1MTAxLCA2NTEwNCwgCi0gICAgNjUxMDcsIDY1MTEwLCA2NTExMywgNjUxMTYsIDY1MTE5LCA2NTEyMiwgNjUxMjUsIDY1MTI4LCA2NTEzMSwgNjUxMzQsIAotICAgIDY1MTM3LCA2NTE0MCwgNjUxNDMsIDY1MTQ2LCA2NTE0OSwgNjUxNTIsIDY1MTU1LCA2NTE1OCwgNjUxNjEsIDY1MTY0LCAKLSAgICA2NTE2NywgNjUxNzAsIDY1MTczLCA2NTE3NiwgNjUxNzksIDY1MTgyLCA2NTE5MSwgNjUxOTksIDY1MjA3LCA2NTIxNSwgCi0gICAgNjUyMjMsIDY1MjMxLCA2NTIzOSwgNjUyNDgsIDY1MjU2LCA2NTI2NSwgNjUyNzQsIDY1MjgzLCA2NTI5MiwgNjUzMDEsIAotICAgIDY1MzEwLCA2NTMxOSwgNjUzMjgsIDY1MzM3LCA2NTM0NiwgNjUzNTUsIDY1MzY0LCA2NTM3MywgNjUzODIsIDY1MzkxLCAKLSAgICA2NTQwMCwgNjU0MDMsIDY1NDA2LCA2NTQwOSwgNjU0MTEsIDY1NDE0LCA2NTQxNywgNjU0MjAsIDY1NDI1LCA2NTQzMCwgCi0gICAgNjU0MzMsIDY1NDQwLCA2NTQ0NywgNjU0NTQsIDY1NDYxLCA2NTQ2NCwgNjU0NjksIDY1NDcyLCA2NTQ3NiwgNjU0NzgsIAotICAgIDY1NDgwLCA2NTQ4MywgNjU0ODYsIDY1NDg5LCA2NTQ5MiwgNjU0OTUsIDY1NDk4LCA2NTUwMSwgNjU1MDYsIDY1NTExLCAKLSAgICA2NTUxNCwgNjU1MTcsIDY1NTIwLCA2NTUyMywgNjU1MjYsIDY1NTI5LCA2NTUzMiwgNjU1MzYsIDY1NTM5LCA2NTU0MiwgCi0gICAgNjU1NDUsIDY1NTQ4LCA2NTU1MSwgNjU1NTYsIDY1NTU5LCA2NTU2MiwgNjU1NjUsIDY1NTcwLCA2NTU3NSwgNjU1ODAsIAotICAgIDY1NTg1LCA2NTU5MCwgNjU1OTUsIDY1NjAwLCA2NTYwNSwgNjU2MTAsIDY1NjE4LCA2NTYyMCwgNjU2MjMsIDY1NjI2LCAKLSAgICA2NTYyOSwgNjU2MzIsIDY1NjM3LCA2NTY0NSwgNjU2NDgsIDY1NjUxLCA2NTY1NSwgNjU2NTgsIDY1NjYxLCA2NTY2NCwgCi0gICAgNjU2NjksIDY1NjcyLCA2NTY3NSwgNjU2ODAsIDY1NjgzLCA2NTY4NiwgNjU2OTEsIDY1Njk0LCA2NTY5NywgNjU3MDIsIAotICAgIDY1NzA3LCA2NTcxMiwgNjU3MTUsIDY1NzE4LCA2NTcyMSwgNjU3MjQsIDY1NzMwLCA2NTczMywgNjU3MzYsIDY1NzM5LCAKLSAgICA2NTc0MSwgNjU3NDQsIDY1NzQ3LCA2NTc1MCwgNjU3NTUsIDY1NzU4LCA2NTc2MSwgNjU3NjQsIDY1NzY3LCA2NTc3MCwgCi0gICAgNjU3NzUsIDY1Nzc4LCA2NTc4MSwgNjU3ODQsIDY1Nzg3LCA2NTc5MCwgNjU3OTMsIDY1Nzk2LCA2NTc5OSwgNjU4MDIsIAotICAgIDY1ODA4LCA2NTgxMywgNjU4MjEsIDY1ODI5LCA2NTgzNywgNjU4NDUsIDY1ODUzLCA2NTg2MSwgNjU4NzAsIDY1ODc4LCAKLSAgICA2NTg4NywgNjU4OTYsIDY1OTA1LCA2NTkxNCwgNjU5MjMsIDY1OTMyLCA2NTk0MSwgNjU5NTAsIDY1OTU5LCA2NTk2OCwgCi0gICAgNjU5NzcsIDY1OTg2LCA2NTk5NSwgNjYwMDQsIDY2MDEzLCA2NjAyMiwgNjYwMzEsIDY2MDQwLCA2NjA0OSwgNjYwNTgsIAotICAgIDY2MDY3LCA2NjA3NiwgNjYwODUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDYwNjkzLCA2MDY5NywgNjA3MDEsIDYwNzA2LCA2MDcxMSwgNjA3MTYsIDYwNzIwLCA2MDcyNCwgNjA3MjgsIAorICAgIDYwNzMzLCA2MDczOCwgNjA3NDIsIDYwNzQ2LCA2MDc1MCwgNjA3NTQsIDYwNzU5LCA2MDc2NCwgNjA3NjksIDYwNzc0LCAKKyAgICA2MDc3OCwgNjA3ODIsIDYwNzg3LCA2MDc5MiwgNjA3OTcsIDYwODAyLCA2MDgwNiwgMCwgNjA4MTAsIDYwODE0LCA2MDgxOCwgCisgICAgNjA4MjIsIDYwODI2LCA2MDgzMCwgNjA4MzQsIDYwODM5LCA2MDg0NCwgNjA4NDgsIDYwODUzLCA2MDg1OCwgNjA4NjcsIAorICAgIDYwODcxLCA2MDg3NSwgNjA4NzksIDYwODg2LCA2MDg5MCwgNjA4OTUsIDYwOTAwLCA2MDkwNCwgNjA5MDgsIDYwOTE0LCAKKyAgICA2MDkxOSwgNjA5MjQsIDYwOTI5LCA2MDkzNCwgNjA5MzgsIDYwOTQyLCA2MDk0NiwgNjA5NTAsIDYwOTU0LCA2MDk1OSwgCisgICAgNjA5NjQsIDYwOTY4LCA2MDk3MiwgNjA5NzcsIDYwOTgyLCA2MDk4NywgNjA5OTEsIDYwOTk1LCA2MTAwMCwgNjEwMDUsIAorICAgIDYxMDExLCA2MTAxNywgNjEwMjEsIDYxMDI3LCA2MTAzMywgNjEwMzcsIDYxMDQzLCA2MTA0OSwgNjEwNTQsIDYxMDU5LCAKKyAgICA2MTA2MywgNjEwNjksIDYxMDczLCA2MTA3NywgNjEwODMsIDYxMDg5LCA2MTA5NCwgNjEwOTksIDYxMTAzLCA2MTEwNywgCisgICAgNjExMTUsIDYxMTIxLCA2MTEyNywgNjExMzMsIDYxMTM4LCA2MTE0MywgNjExNDgsIDYxMTU0LCA2MTE1OCwgNjExNjQsIAorICAgIDYxMTY4LCA2MTE3MiwgNjExNzgsIDYxMTg0LCA2MTE5MCwgNjExOTYsIDYxMjAyLCA2MTIwOCwgNjEyMTQsIDYxMjIwLCAKKyAgICA2MTIyNiwgNjEyMzIsIDYxMjM4LCA2MTI0NCwgNjEyNDgsIDYxMjU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA2MTI2MCwgNjEyNjMsIDYxMjY3LCA2MTI3MSwgNjEyNzUsIDYxMjc5LCA2MTI4MiwgNjEyODUsIDYxMjg5LCAKKyAgICA2MTI5MywgNjEyOTcsIDYxMzAxLCA2MTMwNCwgNjEzMDksIDYxMzEzLCA2MTMxNywgNjEzMjEsIDYxMzI2LCA2MTMzMCwgCisgICAgNjEzMzQsIDYxMzM4LCA2MTM0MiwgNjEzNDgsIDYxMzU0LCA2MTM1OCwgNjEzNjIsIDYxMzY2LCA2MTM3MCwgNjEzNzQsIAorICAgIDYxMzc4LCA2MTM4MiwgNjEzODYsIDYxMzkwLCA2MTM5NCwgNjEzOTgsIDYxNDA0LCA2MTQwOCwgNjE0MTIsIDYxNDE2LCAKKyAgICA2MTQyMCwgNjE0MjQsIDYxNDI4LCA2MTQzMiwgNjE0MzYsIDYxNDQwLCA2MTQ0NCwgNjE0NDgsIDYxNDUyLCA2MTQ1NiwgCisgICAgNjE0NjAsIDYxNDY0LCA2MTQ2OCwgNjE0NzQsIDYxNDgwLCA2MTQ4NSwgNjE0OTAsIDYxNDk0LCA2MTQ5OCwgNjE1MDIsIAorICAgIDYxNTA2LCA2MTUxMCwgNjE1MTQsIDYxNTE4LCA2MTUyMiwgNjE1MjYsIDYxNTMwLCA2MTUzNCwgNjE1MzgsIDYxNTQyLCAKKyAgICA2MTU0NiwgNjE1NTAsIDYxNTU0LCA2MTU1OCwgNjE1NjIsIDYxNTY2LCA2MTU3MCwgNjE1NzQsIDYxNTc4LCA2MTU4MiwgCisgICAgNjE1ODYsIDYxNTkyLCA2MTU5NiwgNjE2MDAsIDYxNjA0LCA2MTYwOCwgNjE2MTIsIDYxNjE2LCA2MTYyMCwgNjE2MjQsIAorICAgIDYxNjI5LCA2MTYzNiwgNjE2NDAsIDYxNjQ0LCA2MTY0OCwgNjE2NTIsIDYxNjU2LCA2MTY2MCwgNjE2NjQsIDYxNjY4LCAKKyAgICA2MTY3MiwgNjE2NzYsIDYxNjgwLCA2MTY4NCwgNjE2OTEsIDYxNjk1LCA2MTcwMSwgNjE3MDUsIDYxNzA5LCA2MTcxMywgCisgICAgNjE3MTcsIDYxNzIxLCA2MTcyNCwgNjE3MjgsIDYxNzMyLCA2MTczNiwgNjE3NDAsIDYxNzQ0LCA2MTc0OCwgNjE3NTIsIAorICAgIDYxNzU2LCA2MTc2MCwgNjE3NjQsIDYxNzY4LCA2MTc3MiwgNjE3NzYsIDYxNzgwLCA2MTc4NCwgNjE3ODgsIDYxNzkyLCAKKyAgICA2MTc5NiwgNjE4MDAsIDYxODA0LCA2MTgwOCwgNjE4MTIsIDYxODE2LCA2MTgyMCwgNjE4MjQsIDYxODI4LCA2MTgzMiwgCisgICAgNjE4MzYsIDYxODQwLCA2MTg0NCwgNjE4NDgsIDYxODUyLCA2MTg1OCwgNjE4NjIsIDYxODY2LCA2MTg3MCwgNjE4NzQsIAorICAgIDYxODc4LCA2MTg4MiwgNjE4ODYsIDYxODkwLCA2MTg5NCwgNjE4OTgsIDYxOTAyLCA2MTkwNiwgNjE5MTAsIDYxOTE0LCAKKyAgICA2MTkxOCwgNjE5MjIsIDYxOTI2LCA2MTkzMCwgNjE5MzQsIDYxOTM4LCA2MTk0MiwgNjE5NDYsIDYxOTUwLCA2MTk1NCwgCisgICAgNjE5NTgsIDYxOTYyLCA2MTk2NiwgNjE5NzQsIDYxOTc4LCA2MTk4MiwgNjE5ODYsIDYxOTkwLCA2MTk5NCwgNjIwMDAsIAorICAgIDYyMDA0LCA2MjAwOCwgNjIwMTIsIDYyMDE2LCA2MjAyMCwgNjIwMjQsIDYyMDI4LCA2MjAzMiwgNjIwMzYsIDYyMDQwLCAKKyAgICA2MjA0NCwgNjIwNDgsIDYyMDUyLCA2MjA1OCwgNjIwNjIsIDYyMDY2LCA2MjA3MCwgNjIwNzQsIDYyMDc4LCA2MjA4MiwgCisgICAgNjIwODYsIDYyMDkwLCA2MjA5NCwgNjIwOTgsIDYyMTAyLCA2MjEwNiwgNjIxMTAsIDYyMTE0LCA2MjExOCwgNjIxMjIsIAorICAgIDYyMTI2LCA2MjEzMCwgNjIxMzQsIDYyMTM4LCA2MjE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjIxNDYsIDYyMTU1LCA2MjE2MywgNjIxNzQsIDYyMTg0LCAKKyAgICA2MjE5MiwgNjIyMDEsIDYyMjEwLCA2MjIyMCwgNjIyMzIsIDYyMjQ0LCA2MjI1NiwgMCwgMCwgMCwgMCwgNjIyNjIsIAorICAgIDYyMjY1LCA2MjI2OCwgNjIyNzMsIDYyMjc2LCA2MjI4MywgNjIyODcsIDYyMjkxLCA2MjI5NSwgNjIyOTksIDYyMzAzLCAKKyAgICA2MjMwOCwgNjIzMTMsIDYyMzE3LCA2MjMyMSwgNjIzMjYsIDYyMzMxLCA2MjMzNiwgNjIzNDEsIDYyMzQ0LCA2MjM0NywgCisgICAgNjIzNTMsIDYyMzU5LCA2MjM2NCwgNjIzNjksIDYyMzc2LCA2MjM4MywgNjIzODcsIDYyMzkxLCA2MjM5NSwgNjI0MDMsIAorICAgIDYyNDA5LCA2MjQxNiwgNjI0MjEsIDYyNDI2LCA2MjQzMSwgNjI0MzYsIDYyNDQxLCA2MjQ0NiwgNjI0NTEsIDYyNDU3LCAKKyAgICA2MjQ2MiwgNjI0NjgsIDYyNDczLCA2MjQ3OCwgNjI0ODMsIDYyNDg4LCA2MjQ5NCwgNjI0OTksIDYyNTAzLCA2MjUwOSwgCisgICAgNjI1MjAsIDYyNTMwLCA2MjU0NSwgNjI1NTUsIDYyNTU5LCA2MjU2OSwgNjI1NzUsIDYyNTgxLCA2MjU4NywgNjI1OTIsIAorICAgIDYyNTk1LCA2MjYwMCwgNjI2MDQsIDAsIDYyNjEwLCA2MjYxNCwgNjI2MTcsIDYyNjIxLCA2MjYyNCwgNjI2MjgsIDYyNjMxLCAKKyAgICA2MjYzNSwgNjI2MzgsIDYyNjQyLCA2MjY0NSwgNjI2NDgsIDYyNjUyLCA2MjY1NiwgNjI2NjAsIDYyNjY0LCA2MjY2OCwgCisgICAgNjI2NzIsIDYyNjc2LCA2MjY4MCwgNjI2ODQsIDYyNjg4LCA2MjY5MiwgNjI2OTYsIDYyNzAwLCA2MjcwNCwgNjI3MDgsIAorICAgIDYyNzEyLCA2MjcxNiwgNjI3MjAsIDYyNzI0LCA2MjcyOCwgNjI3MzIsIDYyNzM2LCA2Mjc0MCwgNjI3NDUsIDYyNzQ5LCAKKyAgICA2Mjc1MywgNjI3NTcsIDYyNzYxLCA2Mjc2NCwgNjI3NjgsIDYyNzcxLCA2Mjc3NSwgNjI3NzksIDYyNzgzLCA2Mjc4NywgCisgICAgNjI3OTAsIDYyNzk0LCA2Mjc5NywgNjI4MDEsIDYyODA1LCA2MjgwOSwgNjI4MTMsIDYyODE3LCA2MjgyMSwgNjI4MjUsIAorICAgIDYyODI5LCA2MjgzMywgNjI4MzcsIDYyODQxLCA2Mjg0NSwgNjI4NDgsIDYyODUyLCA2Mjg1NiwgNjI4NjAsIDYyODY0LCAKKyAgICA2Mjg2OCwgNjI4NzEsIDYyODc2LCA2Mjg4MCwgNjI4ODUsIDYyODg5LCA2Mjg5MywgNjI4OTcsIDYyOTAxLCA2MjkwNSwgCisgICAgNjI5MDksIDYyOTE0LCA2MjkxOCwgNjI5MjIsIDYyOTI2LCA2MjkzMCwgNjI5MzQsIDYyOTM4LCA2Mjk0MiwgMCwgMCwgCisgICAgNjI5NDcsIDYyOTU1LCA2Mjk2MywgNjI5NzAsIDYyOTc3LCA2Mjk4MSwgNjI5ODcsIDYyOTkyLCA2Mjk5NywgNjMwMDEsIAorICAgIDYzMDA0LCA2MzAwOCwgNjMwMTEsIDYzMDE1LCA2MzAxOCwgNjMwMjIsIDYzMDI1LCA2MzAyOSwgNjMwMzIsIDYzMDM1LCAKKyAgICA2MzAzOSwgNjMwNDMsIDYzMDQ3LCA2MzA1MSwgNjMwNTUsIDYzMDU5LCA2MzA2MywgNjMwNjcsIDYzMDcxLCA2MzA3NSwgCisgICAgNjMwNzksIDYzMDgzLCA2MzA4NywgNjMwOTEsIDYzMDk1LCA2MzA5OSwgNjMxMDMsIDYzMTA3LCA2MzExMSwgNjMxMTUsIAorICAgIDYzMTE5LCA2MzEyMywgNjMxMjcsIDYzMTMyLCA2MzEzNiwgNjMxNDAsIDYzMTQ0LCA2MzE0OCwgNjMxNTEsIDYzMTU1LCAKKyAgICA2MzE1OCwgNjMxNjIsIDYzMTY2LCA2MzE3MCwgNjMxNzQsIDYzMTc3LCA2MzE4MSwgNjMxODQsIDYzMTg4LCA2MzE5MiwgCisgICAgNjMxOTYsIDYzMjAwLCA2MzIwNCwgNjMyMDgsIDYzMjEyLCA2MzIxNiwgNjMyMjAsIDYzMjI0LCA2MzIyOCwgNjMyMzIsIAorICAgIDYzMjM1LCA2MzIzOSwgNjMyNDMsIDYzMjQ3LCA2MzI1MSwgNjMyNTUsIDYzMjU4LCA2MzI2MywgNjMyNjcsIDYzMjcyLCAKKyAgICA2MzI3NiwgNjMyODAsIDYzMjg0LCA2MzI4OCwgNjMyOTIsIDYzMjk2LCA2MzMwMSwgNjMzMDUsIDYzMzA5LCA2MzMxMywgCisgICAgNjMzMTcsIDYzMzIxLCA2MzMyNSwgNjMzMjksIDYzMzM0LCA2MzMzOCwgNjMzNDIsIDYzMzQ2LCA2MzM1MCwgNjMzNTQsIAorICAgIDYzMzYxLCA2MzM2NSwgNjMzNzEsIDAsIDAsIDAsIDAsIDAsIDYzMzc2LCA2MzM4MSwgNjMzODYsIDYzMzkxLCA2MzM5NiwgCisgICAgNjM0MDEsIDYzNDA2LCA2MzQxMSwgNjM0MTUsIDYzNDIwLCA2MzQyNSwgNjM0MzAsIDYzNDM1LCA2MzQ0MCwgNjM0NDUsIAorICAgIDYzNDUwLCA2MzQ1NSwgNjM0NjAsIDYzNDY0LCA2MzQ2OSwgNjM0NzQsIDYzNDc5LCA2MzQ4MywgNjM0ODcsIDYzNDkxLCAKKyAgICA2MzQ5NiwgNjM1MDEsIDYzNTA2LCA2MzUxMSwgNjM1MTYsIDYzNTIxLCA2MzUyNiwgNjM1MzEsIDYzNTM2LCA2MzU0MSwgCisgICAgNjM1NDUsIDYzNTQ5LCA2MzU1NCwgNjM1NTksIDYzNTY0LCA2MzU2OSwgMCwgMCwgMCwgNjM1NzQsIDYzNTc4LCA2MzU4MiwgCisgICAgNjM1ODYsIDYzNTkwLCA2MzU5NCwgNjM1OTgsIDYzNjAyLCA2MzYwNiwgNjM2MTAsIDYzNjE0LCA2MzYxOCwgNjM2MjIsIAorICAgIDYzNjI2LCA2MzYzMCwgNjM2MzQsIDYzNjM4LCA2MzY0MiwgNjM2NDYsIDYzNjUwLCA2MzY1NCwgNjM2NTgsIDYzNjYyLCAKKyAgICA2MzY2NiwgNjM2NzAsIDYzNjc0LCA2MzY3OCwgNjM2ODIsIDYzNjg2LCA2MzY5MCwgNjM2OTQsIDYzNjk3LCA2MzcwMSwgCisgICAgNjM3MDQsIDYzNzA4LCA2MzcxMiwgNjM3MTUsIDYzNzE5LCA2MzcyMywgNjM3MjYsIDYzNzMwLCA2MzczNCwgNjM3MzgsIAorICAgIDYzNzQyLCA2Mzc0NSwgNjM3NDksIDYzNzUzLCA2Mzc1NywgNjM3NjEsIDYzNzY1LCA2Mzc2OSwgNjM3NzIsIDYzNzc1LCAKKyAgICA2Mzc3OSwgNjM3ODMsIDYzNzg3LCA2Mzc5MSwgNjM3OTUsIDYzNzk5LCA2MzgwMywgNjM4MDcsIDYzODExLCA2MzgxNSwgCisgICAgNjM4MTksIDYzODIzLCA2MzgyNywgNjM4MzEsIDYzODM1LCA2MzgzOSwgNjM4NDMsIDYzODQ3LCA2Mzg1MSwgNjM4NTUsIAorICAgIDYzODU5LCA2Mzg2MywgNjM4NjcsIDYzODcxLCA2Mzg3NSwgNjM4NzksIDYzODgzLCA2Mzg4NywgNjM4OTEsIDYzODk1LCAKKyAgICA2Mzg5OSwgNjM5MDMsIDYzOTA3LCA2MzkxMSwgNjM5MTUsIDYzOTE5LCA2MzkyMywgNjM5MjcsIDYzOTMxLCA2MzkzNSwgCisgICAgNjM5MzksIDAsIDYzOTQzLCA2Mzk0OSwgNjM5NTUsIDYzOTYwLCA2Mzk2NSwgNjM5NzAsIDYzOTc2LCA2Mzk4MiwgNjM5ODcsIAorICAgIDYzOTkzLCA2Mzk5OSwgNjQwMDUsIDY0MDExLCA2NDAxNywgNjQwMjMsIDY0MDI5LCA2NDAzNSwgNjQwNDAsIDY0MDQ1LCAKKyAgICA2NDA1MCwgNjQwNTUsIDY0MDYwLCA2NDA2NSwgNjQwNzAsIDY0MDc1LCA2NDA4MCwgNjQwODUsIDY0MDkwLCA2NDA5NSwgCisgICAgNjQxMDAsIDY0MTA1LCA2NDExMCwgNjQxMTUsIDY0MTIwLCA2NDEyNSwgNjQxMzAsIDY0MTM1LCA2NDE0MSwgNjQxNDcsIAorICAgIDY0MTUzLCA2NDE1OSwgNjQxNjQsIDY0MTY5LCAwLCAwLCAwLCAwLCAwLCA2NDE3NCwgNjQxNzksIDY0MTg0LCA2NDE4OSwgCisgICAgNjQxOTQsIDY0MTk5LCA2NDIwNCwgNjQyMDksIDY0MjE0LCA2NDIxOSwgNjQyMjQsIDY0MjI5LCA2NDIzNCwgNjQyMzksIAorICAgIDY0MjQ0LCA2NDI0OSwgNjQyNTQsIDY0MjU5LCA2NDI2NCwgNjQyNjksIDY0Mjc0LCA2NDI3OSwgNjQyODQsIDY0Mjg5LCAKKyAgICA2NDI5NCwgNjQyOTksIDY0MzA0LCA2NDMwOSwgNjQzMTQsIDY0MzE5LCA2NDMyNCwgNjQzMjksIDY0MzM0LCA2NDMzOSwgCisgICAgNjQzNDQsIDY0MzQ5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NDM1NCwgNjQzNTksIDY0MzY0LCAKKyAgICA2NDM2OSwgNjQzNzMsIDY0Mzc4LCA2NDM4MiwgNjQzODcsIDY0MzkyLCA2NDM5NywgNjQ0MDIsIDY0NDA3LCA2NDQxMiwgCisgICAgNjQ0MTcsIDY0NDIyLCA2NDQyNywgNjQ0MzIsIDY0NDM2LCA2NDQ0MCwgNjQ0NDQsIDY0NDQ4LCA2NDQ1MiwgNjQ0NTYsIAorICAgIDY0NDYwLCA2NDQ2NCwgNjQ0NjgsIDY0NDcyLCA2NDQ3NiwgNjQ0ODAsIDY0NDg0LCA2NDQ4OCwgNjQ0OTMsIDY0NDk4LCAKKyAgICA2NDUwMywgNjQ1MDgsIDY0NTEzLCA2NDUxOCwgNjQ1MjMsIDY0NTI4LCA2NDUzMywgNjQ1MzgsIDY0NTQzLCA2NDU0OCwgCisgICAgNjQ1NTMsIDY0NTU4LCA2NDU2MywgNjQ1NjksIDAsIDY0NTc2LCA2NDU4MCwgNjQ1ODQsIDY0NTg4LCA2NDU5MiwgNjQ1OTYsIAorICAgIDY0NjAwLCA2NDYwNSwgNjQ2MDksIDY0NjE0LCA2NDYxOSwgNjQ2MjQsIDY0NjI5LCA2NDYzNCwgNjQ2MzksIDY0NjQ0LCAKKyAgICA2NDY0OSwgNjQ2NTQsIDY0NjU5LCA2NDY2NCwgNjQ2NjksIDY0Njc0LCA2NDY3OSwgNjQ2ODQsIDY0Njg5LCA2NDY5NCwgCisgICAgNjQ2OTksIDY0NzA0LCA2NDcwOSwgNjQ3MTQsIDY0NzE5LCA2NDcyNCwgNjQ3MjksIDY0NzM0LCA2NDczOSwgNjQ3NDQsIAorICAgIDY0NzQ5LCA2NDc1NCwgNjQ3NTksIDY0NzY0LCA2NDc2OSwgNjQ3NzgsIDY0Nzg3LCA2NDc5NiwgNjQ4MDUsIDY0ODE0LCAKKyAgICA2NDgyMywgNjQ4MzIsIDY0ODQxLCA2NDg0NCwgNjQ4NDksIDY0ODU0LCA2NDg1OSwgNjQ4NjQsIDY0ODY5LCA2NDg3NCwgCisgICAgNjQ4ODAsIDY0ODg1LCA2NDg5MSwgNjQ4OTUsIDY0OTAwLCA2NDkwNSwgNjQ5MTAsIDY0OTE1LCA2NDkyMCwgNjQ5MjQsIAorICAgIDY0OTI4LCA2NDkzMiwgNjQ5MzYsIDY0OTQwLCA2NDk0NCwgNjQ5NDgsIDY0OTUyLCA2NDk1NiwgNjQ5NjAsIDY0OTY0LCAKKyAgICA2NDk2OCwgNjQ5NzIsIDY0OTc2LCA2NDk4MSwgNjQ5ODYsIDY0OTkxLCA2NDk5NiwgNjUwMDEsIDY1MDA2LCA2NTAxMSwgCisgICAgNjUwMTYsIDY1MDIxLCA2NTAyNiwgNjUwMzEsIDY1MDM2LCA2NTA0MSwgNjUwNDYsIDY1MDUyLCA2NTA1OCwgNjUwNjMsIAorICAgIDY1MDY4LCA2NTA3MiwgNjUwNzYsIDY1MDgwLCA2NTA4NCwgNjUwODgsIDY1MDkyLCA2NTA5NywgNjUxMDEsIDY1MTA2LCAKKyAgICA2NTExMSwgNjUxMTYsIDY1MTIxLCA2NTEyNiwgNjUxMzEsIDY1MTM2LCA2NTE0MSwgNjUxNDYsIDY1MTUxLCA2NTE1NiwgCisgICAgNjUxNjEsIDY1MTY2LCA2NTE3MSwgNjUxNzYsIDY1MTgxLCA2NTE4NiwgNjUxOTEsIDY1MTk2LCA2NTIwMSwgNjUyMDYsIAorICAgIDY1MjExLCA2NTIxNiwgNjUyMjEsIDY1MjI2LCA2NTIzMSwgNjUyMzYsIDY1MjQxLCA2NTI0NiwgNjUyNTEsIDY1MjU2LCAKKyAgICA2NTI2MSwgNjUyNjYsIDY1MjcxLCA2NTI3NiwgNjUyODEsIDY1Mjg2LCA2NTI5MSwgNjUyOTYsIDY1MzAxLCA2NTMwNiwgCisgICAgNjUzMTEsIDY1MzE3LCA2NTMyMiwgNjUzMjgsIDY1MzMyLCA2NTMzNywgNjUzNDIsIDY1MzQ3LCA2NTM1MiwgNjUzNTcsIAorICAgIDY1MzYyLCA2NTM2OCwgNjUzNzMsIDY1Mzc5LCA2NTM4MywgNjUzOTAsIDY1Mzk3LCA2NTQwNCwgNjU0MTEsIDY1NDE4LCAKKyAgICA2NTQyNSwgNjU0MzIsIDY1NDM5LCA2NTQ0NiwgNjU0NTMsIDY1NDYwLCA2NTQ2NywgNjU0NzAsIDY1NDczLCA2NTQ3NiwgCisgICAgNjU0ODEsIDY1NDg0LCA2NTQ4NywgNjU0OTAsIDY1NDkzLCA2NTQ5NiwgNjU0OTksIDY1NTAzLCA2NTUwNywgNjU1MTEsIAorICAgIDY1NTE1LCA2NTUxOSwgNjU1MjMsIDY1NTI3LCA2NTUzMSwgNjU1MzUsIDY1NTM5LCA2NTU0MywgNjU1NDcsIDY1NTUxLCAKKyAgICA2NTU1NCwgNjU1NTcsIDY1NTYxLCA2NTU2NSwgNjU1NjksIDY1NTczLCA2NTU3NiwgNjU1ODAsIDY1NTg0LCA2NTU4OCwgCisgICAgNjU1OTIsIDY1NTk1LCA2NTU5OSwgNjU2MDMsIDY1NjA3LCA2NTYxMSwgNjU2MTQsIDY1NjE4LCA2NTYyMiwgNjU2MjYsIAorICAgIDY1NjMwLCA2NTYzNCwgNjU2MzgsIDY1NjQyLCA2NTY0NiwgNjU2NTAsIDY1NjU0LCAwLCA2NTY1OCwgNjU2NjEsIDY1NjY0LCAKKyAgICA2NTY2NywgNjU2NzAsIDY1NjczLCA2NTY3NiwgNjU2NzksIDY1NjgyLCA2NTY4NSwgNjU2ODgsIDY1NjkxLCA2NTY5NCwgCisgICAgNjU2OTcsIDY1NzAwLCA2NTcwMywgNjU3MDYsIDY1NzA5LCA2NTcxMiwgNjU3MTUsIDY1NzE4LCA2NTcyMSwgNjU3MjQsIAorICAgIDY1NzI3LCA2NTczMCwgNjU3MzMsIDY1NzM2LCA2NTczOSwgNjU3NDIsIDY1NzQ1LCA2NTc0OCwgNjU3NTEsIDY1NzU0LCAKKyAgICA2NTc1NywgNjU3NjAsIDY1NzYzLCA2NTc2NiwgNjU3NjksIDY1NzcyLCA2NTc3NSwgNjU3NzgsIDY1NzgxLCA2NTc4NCwgCisgICAgNjU3ODcsIDY1NzkwLCA2NTc5MywgNjU3OTYsIDY1Nzk5LCA2NTgwMiwgNjU4MDUsIDY1ODA4LCA2NTgxMSwgNjU4MTQsIAorICAgIDY1ODE3LCA2NTgyMCwgNjU4MjMsIDY1ODI2LCA2NTgyOSwgNjU4MzIsIDY1ODM1LCA2NTgzOCwgNjU4NDEsIDY1ODQ0LCAKKyAgICA2NTg0NywgNjU4NTAsIDY1ODUzLCA2NTg1NiwgNjU4NTksIDY1ODYyLCA2NTg2NSwgNjU4NjgsIDY1ODcxLCA2NTg3NCwgCisgICAgNjU4NzcsIDY1ODgwLCA2NTg4MywgNjU4ODYsIDY1ODg5LCA2NTg5MiwgNjU4OTUsIDY1ODk4LCA2NTkwMSwgNjU5MDQsIAorICAgIDY1OTA3LCA2NTkxMCwgNjU5MTMsIDY1OTE2LCA2NTkxOSwgNjU5MjIsIDY1OTMxLCA2NTkzOSwgNjU5NDcsIDY1OTU1LCAKKyAgICA2NTk2MywgNjU5NzEsIDY1OTc5LCA2NTk4OCwgNjU5OTYsIDY2MDA1LCA2NjAxNCwgNjYwMjMsIDY2MDMyLCA2NjA0MSwgCisgICAgNjYwNTAsIDY2MDU5LCA2NjA2OCwgNjYwNzcsIDY2MDg2LCA2NjA5NSwgNjYxMDQsIDY2MTEzLCA2NjEyMiwgNjYxMzEsIAorICAgIDY2MTQwLCA2NjE0MywgNjYxNDYsIDY2MTQ5LCA2NjE1MSwgNjYxNTQsIDY2MTU3LCA2NjE2MCwgNjYxNjUsIDY2MTcwLCAKKyAgICA2NjE3MywgNjYxODAsIDY2MTg3LCA2NjE5NCwgNjYyMDEsIDY2MjA0LCA2NjIwOSwgNjYyMTEsIDY2MjE1LCA2NjIxNywgCisgICAgNjYyMTksIDY2MjIyLCA2NjIyNSwgNjYyMjgsIDY2MjMxLCA2NjIzNCwgNjYyMzcsIDY2MjQwLCA2NjI0NSwgNjYyNTAsIAorICAgIDY2MjUzLCA2NjI1NiwgNjYyNTksIDY2MjYyLCA2NjI2NSwgNjYyNjgsIDY2MjcxLCA2NjI3NSwgNjYyNzgsIDY2MjgxLCAKKyAgICA2NjI4NCwgNjYyODcsIDY2MjkwLCA2NjI5NSwgNjYyOTgsIDY2MzAxLCA2NjMwNCwgNjYzMDksIDY2MzE0LCA2NjMxOSwgCisgICAgNjYzMjQsIDY2MzI5LCA2NjMzNCwgNjYzMzksIDY2MzQ0LCA2NjM1MCwgNjYzNTgsIDY2MzYwLCA2NjM2MywgNjYzNjYsIAorICAgIDY2MzY5LCA2NjM3MiwgNjYzNzgsIDY2Mzg2LCA2NjM4OSwgNjYzOTIsIDY2Mzk3LCA2NjQwMCwgNjY0MDMsIDY2NDA2LCAKKyAgICA2NjQxMSwgNjY0MTQsIDY2NDE3LCA2NjQyMiwgNjY0MjUsIDY2NDI4LCA2NjQzMywgNjY0MzYsIDY2NDM5LCA2NjQ0NCwgCisgICAgNjY0NDksIDY2NDU0LCA2NjQ1NywgNjY0NjAsIDY2NDYzLCA2NjQ2NiwgNjY0NzIsIDY2NDc1LCA2NjQ3OCwgNjY0ODEsIAorICAgIDY2NDgzLCA2NjQ4NiwgNjY0ODksIDY2NDkyLCA2NjQ5NywgNjY1MDAsIDY2NTAzLCA2NjUwNiwgNjY1MDksIDY2NTEyLCAKKyAgICA2NjUxNywgNjY1MjAsIDY2NTIzLCA2NjUyNiwgNjY1MjksIDY2NTMyLCA2NjUzNSwgNjY1MzgsIDY2NTQxLCA2NjU0NCwgCisgICAgNjY1NTAsIDY2NTU1LCA2NjU2MywgNjY1NzEsIDY2NTc5LCA2NjU4NywgNjY1OTUsIDY2NjAzLCA2NjYxMiwgNjY2MjAsIAorICAgIDY2NjI5LCA2NjYzOCwgNjY2NDcsIDY2NjU2LCA2NjY2NSwgNjY2NzQsIDY2NjgzLCA2NjY5MiwgNjY3MDEsIDY2NzEwLCAKKyAgICA2NjcxOSwgNjY3MjgsIDY2NzM3LCA2Njc0NiwgNjY3NTUsIDY2NzY0LCA2Njc3MywgNjY3ODIsIDY2NzkxLCA2NjgwMCwgCisgICAgNjY4MDksIDY2ODE4LCA2NjgyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC0xNzk5NCwzMDUgKzE5MTEzLDMwNSBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDY2MDg4LCA2NjA5NywgNjYxMDYsIDY2MTE3LCA2NjEyNCwgNjYxMjksIDY2MTM0LCA2NjE0MSwgNjYxNDgsIDY2MTU0LCAKLSAgICA2NjE1OSwgNjYxNjQsIDY2MTY5LCA2NjE3NCwgNjYxODEsIDY2MTg2LCA2NjE5MSwgNjYxOTYsIDY2MjA3LCA2NjIxMiwgCi0gICAgNjYyMTcsIDY2MjI0LCA2NjIyOSwgNjYyMzYsIDY2MjQxLCA2NjI0NiwgNjYyNTMsIDY2MjYwLCA2NjI2NywgNjYyNzYsIAotICAgIDY2Mjg1LCA2NjI5MCwgNjYyOTUsIDY2MzAwLCA2NjMwNywgNjYzMTIsIDY2MzIyLCA2NjMyOSwgNjYzMzQsIDY2MzM5LCAKLSAgICA2NjM0NCwgNjYzNDksIDY2MzU0LCA2NjM1OSwgNjYzNjgsIDY2Mzc1LCA2NjM4MiwgNjYzODcsIDY2Mzk0LCA2NjM5OSwgCi0gICAgNjY0MDYsIDY2NDE1LCA2NjQyNiwgNjY0MzEsIDY2NDQwLCA2NjQ0NSwgNjY0NTIsIDY2NDYxLCA2NjQ3MCwgNjY0NzUsIAotICAgIDY2NDgwLCA2NjQ4NywgNjY0OTMsIDY2NTAwLCA2NjUwNywgNjY1MTEsIDY2NTE1LCA2NjUxOCwgNjY1MjIsIDY2NTI2LCAKLSAgICA2NjUzMCwgNjY1MzQsIDY2NTM4LCA2NjU0MiwgNjY1NDYsIDY2NTQ5LCA2NjU1MywgNjY1NTcsIDY2NTYxLCA2NjU2NSwgCi0gICAgNjY1NjksIDY2NTczLCA2NjU3NiwgNjY1ODAsIDY2NTg0LCA2NjU4NywgNjY1OTEsIDY2NTk1LCA2NjU5OSwgNjY2MDMsIAotICAgIDY2NjA3LCA2NjYxMSwgNjY2MTUsIDY2NjE5LCA2NjYyMywgNjY2MjcsIDY2NjMxLCA2NjYzNSwgNjY2MzksIDY2NjQzLCAKLSAgICA2NjY0NywgNjY2NTEsIDY2NjU1LCA2NjY1OSwgNjY2NjMsIDY2NjY3LCA2NjY3MSwgNjY2NzUsIDY2Njc5LCA2NjY4MywgCi0gICAgNjY2ODcsIDY2NjkxLCA2NjY5NSwgNjY2OTksIDY2NzAzLCA2NjcwNywgNjY3MTEsIDY2NzE1LCA2NjcxOSwgNjY3MjMsIAotICAgIDY2NzI3LCA2NjczMSwgNjY3MzUsIDY2NzM5LCA2Njc0MywgNjY3NDcsIDY2NzUxLCA2Njc1NSwgNjY3NTksIDY2NzYzLCAKLSAgICA2Njc2NiwgNjY3NzAsIDY2Nzc0LCA2Njc3OCwgNjY3ODIsIDY2Nzg2LCA2Njc5MCwgNjY3OTQsIDY2Nzk4LCA2NjgwMiwgCi0gICAgNjY4MDYsIDY2ODEwLCA2NjgxNCwgNjY4MTgsIDY2ODIyLCA2NjgyNiwgNjY4MzAsIDY2ODM0LCA2NjgzOCwgNjY4NDIsIAotICAgIDY2ODQ2LCA2Njg1MCwgNjY4NTQsIDY2ODU4LCA2Njg2MiwgNjY4NjYsIDY2ODcwLCA2Njg3NCwgNjY4NzgsIDY2ODgyLCAKLSAgICA2Njg4NiwgNjY4OTAsIDY2ODk0LCA2Njg5OCwgNjY5MDIsIDY2OTA2LCA2NjkxMCwgNjY5MTQsIDY2OTE4LCA2NjkyMiwgCi0gICAgNjY5MjYsIDY2OTMwLCA2NjkzNCwgNjY5MzgsIDY2OTQyLCA2Njk0NiwgNjY5NTAsIDY2OTU0LCA2Njk1OCwgNjY5NjIsIAotICAgIDY2OTY2LCA2Njk3MCwgNjY5NzQsIDY2OTc4LCA2Njk4MiwgNjY5ODYsIDY2OTkwLCA2Njk5NCwgNjY5OTgsIDY3MDAyLCAKLSAgICA2NzAwNiwgNjcwMTAsIDY3MDE0LCA2NzAxOCwgNjcwMjIsIDY3MDI2LCA2NzAzMCwgNjcwMzQsIDY3MDM4LCA2NzA0MiwgCi0gICAgNjcwNDYsIDY3MDUwLCA2NzA1NCwgNjcwNTgsIDY3MDYyLCA2NzA2NiwgNjcwNzAsIDY3MDc0LCA2NzA3OCwgNjcwODIsIAotICAgIDY3MDg2LCA2NzA5MCwgNjcwOTQsIDY3MDk4LCA2NzEwMiwgNjcxMDYsIDY3MTEwLCA2NzExNCwgNjcxMTgsIDY3MTIyLCAKLSAgICA2NzEyNiwgNjcxMzAsIDY3MTM0LCA2NzEzOCwgNjcxNDIsIDY3MTQ2LCA2NzE1MCwgNjcxNTQsIDY3MTU4LCA2NzE2MiwgCi0gICAgNjcxNjYsIDY3MTcwLCA2NzE3NCwgNjcxNzgsIDY3MTgyLCA2NzE4NiwgNjcxOTAsIDY3MTk0LCA2NzE5OCwgNjcyMDIsIAotICAgIDY3MjA2LCA2NzIxMCwgNjcyMTQsIDY3MjE4LCA2NzIyMiwgNjcyMjYsIDY3MjMwLCA2NzIzNCwgNjcyMzcsIDY3MjQxLCAKLSAgICA2NzI0NSwgNjcyNDksIDY3MjUzLCA2NzI1NywgNjcyNjEsIDY3MjY1LCA2NzI2OSwgNjcyNzMsIDY3Mjc3LCA2NzI4MSwgCi0gICAgNjcyODUsIDY3Mjg5LCA2NzI5MywgNjcyOTcsIDY3MzAxLCA2NzMwNSwgNjczMDksIDY3MzEzLCA2NzMxNywgNjczMjEsIAotICAgIDY3MzI1LCA2NzMyOSwgNjczMzMsIDY3MzM3LCA2NzM0MSwgNjczNDUsIDY3MzQ5LCA2NzM1MywgNjczNTcsIDY3MzYxLCAKLSAgICA2NzM2NSwgNjczNjksIDY3MzczLCA2NzM3NywgNjczODEsIDY3Mzg1LCA2NzM4OSwgNjczOTMsIDY3Mzk3LCA2NzQwMSwgCi0gICAgNjc0MDUsIDY3NDA5LCA2NzQxMywgNjc0MTcsIDY3NDIxLCA2NzQyNSwgNjc0MjksIDY3NDMzLCA2NzQzNywgNjc0NDEsIAotICAgIDY3NDQ1LCA2NzQ0OSwgNjc0NTMsIDY3NDU3LCA2NzQ2MSwgNjc0NjUsIDY3NDY5LCA2NzQ3MywgNjc0NzcsIDY3NDgxLCAKLSAgICA2NzQ4NSwgNjc0ODksIDY3NDkzLCA2NzQ5NywgNjc1MDEsIDY3NTA1LCA2NzUwOSwgNjc1MTMsIDY3NTE3LCA2NzUyMSwgCi0gICAgNjc1MjUsIDY3NTI5LCA2NzUzMywgNjc1MzcsIDY3NTQxLCA2NzU0NSwgNjc1NDksIDY3NTUzLCA2NzU1NywgNjc1NjEsIAotICAgIDY3NTY1LCA2NzU2OSwgNjc1NzMsIDY3NTc3LCA2NzU4MSwgNjc1ODUsIDY3NTg5LCA2NzU5MywgNjc1OTcsIDY3NjAxLCAKLSAgICA2NzYwNSwgNjc2MDksIDY3NjEzLCA2NzYxNywgNjc2MjEsIDY3NjI1LCA2NzYyOSwgNjc2MzMsIDY3NjM3LCA2NzY0MSwgCi0gICAgNjc2NDUsIDY3NjQ5LCA2NzY1MywgNjc2NTcsIDY3NjYxLCA2NzY2NSwgNjc2NjksIDY3NjczLCA2NzY3NywgNjc2ODEsIAotICAgIDY3Njg1LCA2NzY4OSwgNjc2OTMsIDY3Njk3LCA2NzcwMCwgNjc3MDQsIDY3NzA4LCA2NzcxMiwgNjc3MTYsIDY3NzIwLCAKLSAgICA2NzcyNCwgNjc3MjgsIDY3NzMyLCA2NzczNiwgNjc3NDAsIDY3NzQ0LCA2Nzc0OCwgNjc3NTIsIDY3NzU2LCA2Nzc2MCwgCi0gICAgNjc3NjQsIDY3NzY4LCA2Nzc3MiwgNjc3NzYsIDY3NzgwLCA2Nzc4NCwgNjc3ODgsIDY3NzkyLCA2Nzc5NiwgNjc4MDAsIAotICAgIDY3ODA0LCA2NzgwOCwgNjc4MTIsIDY3ODE2LCA2NzgyMCwgNjc4MjQsIDY3ODI4LCA2NzgzMiwgNjc4MzYsIDY3ODQwLCAKLSAgICA2Nzg0NCwgNjc4NDgsIDY3ODUyLCA2Nzg1NiwgNjc4NjAsIDY3ODY0LCA2Nzg2OCwgNjc4NzIsIDY3ODc2LCA2Nzg4MCwgCi0gICAgNjc4ODQsIDY3ODg4LCA2Nzg5MiwgNjc4OTYsIDY3OTAwLCA2NzkwNCwgNjc5MDgsIDY3OTEyLCA2NzkxNiwgNjc5MjAsIAotICAgIDY3OTI0LCA2NzkyOCwgNjc5MzIsIDY3OTM2LCA2Nzk0MCwgNjc5NDQsIDY3OTQ4LCA2Nzk1MiwgNjc5NTYsIDY3OTYwLCAKLSAgICA2Nzk2NCwgNjc5NjgsIDY3OTcyLCA2Nzk3NiwgNjc5ODAsIDY3OTg0LCA2Nzk4OCwgNjc5OTIsIDY3OTk2LCA2ODAwMCwgCi0gICAgNjgwMDQsIDY4MDA4LCA2ODAxMiwgNjgwMTYsIDY4MDIwLCA2ODAyNCwgNjgwMjgsIDY4MDMyLCA2ODAzNiwgNjgwNDAsIAotICAgIDY4MDQ0LCA2ODA0OCwgNjgwNTIsIDY4MDU2LCA2ODA2MCwgNjgwNjQsIDY4MDY4LCA2ODA3MiwgNjgwNzYsIDY4MDgwLCAKLSAgICA2ODA4NCwgNjgwODgsIDY4MDkyLCA2ODA5NiwgNjgxMDAsIDY4MTA0LCA2ODEwOCwgNjgxMTIsIDY4MTE2LCA2ODEyMCwgCi0gICAgNjgxMjQsIDY4MTI4LCA2ODEzMiwgNjgxMzYsIDY4MTQwLCA2ODE0NCwgNjgxNDgsIDY4MTUyLCA2ODE1NiwgNjgxNjAsIAotICAgIDY4MTY0LCA2ODE2OCwgNjgxNzIsIDY4MTc2LCA2ODE4MCwgNjgxODQsIDY4MTg4LCA2ODE5MiwgNjgxOTYsIDY4MjAwLCAKLSAgICA2ODIwNCwgNjgyMDgsIDY4MjEyLCA2ODIxNiwgNjgyMjAsIDY4MjI0LCA2ODIyOCwgNjgyMzIsIDY4MjM2LCA2ODI0MCwgCi0gICAgNjgyNDQsIDY4MjQ4LCA2ODI1MiwgNjgyNTYsIDY4MjYwLCA2ODI2NCwgNjgyNjgsIDY4MjcyLCA2ODI3NiwgNjgyODAsIAotICAgIDY4Mjg0LCA2ODI4OCwgNjgyOTIsIDY4Mjk2LCA2ODMwMCwgNjgzMDQsIDY4MzA4LCA2ODMxMiwgNjgzMTYsIDY4MzIwLCAKLSAgICA2ODMyNCwgNjgzMjgsIDY4MzMyLCA2ODMzNiwgNjgzNDAsIDY4MzQ0LCA2ODM0OCwgNjgzNTIsIDY4MzU2LCA2ODM2MCwgCi0gICAgNjgzNjQsIDY4MzY4LCA2ODM3MiwgNjgzNzYsIDY4MzgwLCA2ODM4NCwgNjgzODgsIDY4MzkyLCA2ODM5NiwgNjg0MDAsIAotICAgIDY4NDA0LCA2ODQwOCwgNjg0MTIsIDY4NDE2LCA2ODQyMCwgNjg0MjQsIDY4NDI4LCA2ODQzMiwgNjg0MzYsIDY4NDQwLCAKLSAgICA2ODQ0NCwgNjg0NDgsIDY4NDUyLCA2ODQ1NiwgNjg0NjAsIDY4NDY0LCA2ODQ2OCwgNjg0NzIsIDY4NDc2LCA2ODQ4MCwgCi0gICAgNjg0ODQsIDY4NDg4LCA2ODQ5MiwgNjg0OTYsIDY4NTAwLCA2ODUwNCwgNjg1MDgsIDY4NTEyLCA2ODUxNiwgNjg1MjAsIAotICAgIDY4NTI0LCA2ODUyOCwgNjg1MzIsIDY4NTM2LCA2ODU0MCwgNjg1NDQsIDY4NTQ4LCA2ODU1MiwgNjg1NTUsIDY4NTU5LCAKLSAgICA2ODU2MywgNjg1NjcsIDY4NTcxLCA2ODU3NSwgNjg1NzksIDY4NTgzLCA2ODU4NywgNjg1OTEsIDY4NTk1LCA2ODU5OSwgCi0gICAgNjg2MDMsIDY4NjA3LCA2ODYxMSwgNjg2MTUsIDY4NjE5LCA2ODYyMywgNjg2MjcsIDY4NjMxLCA2ODYzNSwgNjg2MzksIAotICAgIDY4NjQzLCA2ODY0NywgNjg2NTEsIDY4NjU1LCA2ODY1OSwgNjg2NjMsIDY4NjY3LCA2ODY3MSwgNjg2NzUsIDY4Njc5LCAKLSAgICA2ODY4MywgNjg2ODcsIDY4NjkxLCA2ODY5NSwgNjg2OTksIDY4NzAzLCA2ODcwNywgNjg3MTEsIDY4NzE1LCA2ODcxOSwgCi0gICAgNjg3MjMsIDY4NzI3LCA2ODczMSwgNjg3MzUsIDY4NzM5LCA2ODc0MywgNjg3NDcsIDY4NzUxLCA2ODc1NSwgNjg3NTksIAotICAgIDY4NzYzLCA2ODc2NywgNjg3NzEsIDY4Nzc1LCA2ODc3OSwgNjg3ODMsIDY4Nzg3LCA2ODc5MSwgNjg3OTUsIDY4Nzk5LCAKLSAgICA2ODgwMywgNjg4MDcsIDY4ODExLCA2ODgxNSwgNjg4MTksIDY4ODIzLCA2ODgyNywgNjg4MzEsIDY4ODM1LCA2ODgzOSwgCi0gICAgNjg4NDMsIDY4ODQ3LCA2ODg1MSwgNjg4NTUsIDY4ODU5LCA2ODg2MywgNjg4NjcsIDY4ODcxLCA2ODg3NSwgNjg4NzksIAotICAgIDY4ODgzLCA2ODg4NywgNjg4OTEsIDY4ODk1LCA2ODg5OSwgNjg5MDMsIDY4OTA3LCA2ODkxMSwgNjg5MTUsIDY4OTE5LCAKLSAgICA2ODkyMywgNjg5MjcsIDY4OTMxLCA2ODkzNSwgNjg5MzksIDY4OTQzLCA2ODk0NywgNjg5NTEsIDY4OTU1LCA2ODk1OSwgCi0gICAgNjg5NjMsIDY4OTY3LCA2ODk3MSwgNjg5NzUsIDY4OTc5LCA2ODk4MywgNjg5ODcsIDY4OTkxLCA2ODk5NSwgNjg5OTksIAotICAgIDY5MDAzLCA2OTAwNywgNjkwMTAsIDY5MDE0LCA2OTAxOCwgNjkwMjIsIDY5MDI2LCA2OTAzMCwgNjkwMzQsIDY5MDM4LCAKLSAgICA2OTA0MiwgNjkwNDYsIDY5MDUwLCA2OTA1NCwgNjkwNTgsIDY5MDYyLCA2OTA2NiwgNjkwNzAsIDY5MDc0LCA2OTA3OCwgCi0gICAgNjkwODIsIDY5MDg2LCA2OTA5MCwgNjkwOTQsIDY5MDk4LCA2OTEwMiwgNjkxMDYsIDY5MTEwLCA2OTExNCwgNjkxMTgsIAotICAgIDY5MTIyLCA2OTEyNiwgNjkxMzAsIDY5MTM0LCA2OTEzOCwgNjkxNDIsIDY5MTQ2LCA2OTE1MCwgNjkxNTQsIDY5MTU4LCAKLSAgICA2OTE2MiwgNjkxNjYsIDY5MTcwLCA2OTE3NCwgNjkxNzgsIDY5MTgyLCA2OTE4NiwgNjkxOTAsIDY5MTk0LCA2OTE5OCwgCi0gICAgNjkyMDIsIDY5MjA2LCA2OTIxMCwgNjkyMTQsIDY5MjE4LCA2OTIyMiwgNjkyMjYsIDY5MjMwLCA2OTIzNCwgNjkyMzgsIAotICAgIDY5MjQyLCA2OTI0NiwgNjkyNTAsIDY5MjU0LCA2OTI1OCwgNjkyNjIsIDY5MjY2LCA2OTI3MCwgNjkyNzQsIDY5Mjc4LCAKLSAgICA2OTI4MiwgNjkyODYsIDY5MjkwLCA2OTI5NCwgNjkyOTgsIDY5MzAyLCA2OTMwNiwgNjkzMTAsIDY5MzE0LCA2OTMxOCwgCi0gICAgNjkzMjIsIDY5MzI2LCA2OTMzMCwgNjkzMzQsIDY5MzM4LCA2OTM0MiwgNjkzNDYsIDY5MzUwLCA2OTM1NCwgNjkzNTgsIAotICAgIDY5MzYyLCA2OTM2NiwgNjkzNzAsIDY5Mzc0LCA2OTM3OCwgNjkzODIsIDY5Mzg2LCA2OTM5MCwgNjkzOTQsIDY5Mzk4LCAKLSAgICA2OTQwMiwgNjk0MDYsIDY5NDEwLCA2OTQxNCwgNjk0MTgsIDY5NDIyLCA2OTQyNiwgNjk0MzAsIDY5NDM0LCA2OTQzOCwgCi0gICAgNjk0NDIsIDY5NDQ2LCA2OTQ1MCwgNjk0NTQsIDY5NDU4LCA2OTQ2MiwgNjk0NjYsIDY5NDcwLCA2OTQ3NCwgNjk0NzgsIAotICAgIDY5NDgyLCA2OTQ4NiwgNjk0OTAsIDY5NDk0LCA2OTQ5OCwgNjk1MDIsIDY5NTA2LCA2OTUxMCwgNjk1MTQsIDY5NTE4LCAKLSAgICA2OTUyMiwgNjk1MjYsIDY5NTMwLCA2OTUzNCwgNjk1MzgsIDY5NTQyLCA2OTU0NiwgNjk1NTAsIDY5NTU0LCA2OTU1OCwgCi0gICAgNjk1NjIsIDY5NTY2LCA2OTU3MCwgNjk1NzQsIDY5NTc4LCA2OTU4MiwgNjk1ODYsIDY5NTkwLCA2OTU5NCwgNjk1OTgsIAotICAgIDY5NjAyLCA2OTYwNiwgNjk2MTAsIDY5NjEzLCA2OTYxNywgNjk2MjEsIDY5NjI1LCA2OTYyOSwgNjk2MzMsIDY5NjM3LCAKLSAgICA2OTY0MSwgNjk2NDUsIDY5NjQ5LCA2OTY1MywgNjk2NTcsIDY5NjYxLCA2OTY2NSwgNjk2NjksIDY5NjczLCA2OTY3NywgCi0gICAgNjk2ODEsIDY5Njg1LCA2OTY4OSwgNjk2OTMsIDY5Njk3LCA2OTcwMSwgNjk3MDUsIDY5NzA5LCA2OTcxMywgNjk3MTcsIAotICAgIDY5NzIxLCA2OTcyNSwgNjk3MjksIDY5NzMzLCA2OTczNywgNjk3NDEsIDY5NzQ1LCA2OTc0OSwgNjk3NTMsIDY5NzU3LCAKLSAgICA2OTc2MSwgNjk3NjUsIDY5NzY5LCA2OTc3MywgNjk3NzcsIDY5NzgxLCA2OTc4NSwgNjk3ODksIDY5NzkzLCA2OTc5NywgCi0gICAgNjk4MDEsIDY5ODA1LCA2OTgwOSwgNjk4MTMsIDY5ODE3LCA2OTgyMSwgNjk4MjUsIDY5ODI5LCA2OTgzMywgNjk4MzcsIAotICAgIDY5ODQxLCA2OTg0NSwgNjk4NDksIDY5ODUzLCA2OTg1NywgNjk4NjEsIDY5ODY1LCA2OTg2OSwgNjk4NzMsIDY5ODc3LCAKLSAgICA2OTg4MSwgNjk4ODUsIDY5ODg5LCA2OTg5MywgNjk4OTcsIDY5OTAxLCA2OTkwNSwgNjk5MDksIDY5OTEzLCA2OTkxNywgCi0gICAgNjk5MjEsIDY5OTI1LCA2OTkyOSwgNjk5MzMsIDY5OTM3LCA2OTk0MSwgNjk5NDUsIDY5OTQ5LCA2OTk1MywgNjk5NTcsIAotICAgIDY5OTYxLCA2OTk2NSwgNjk5NjksIDY5OTczLCA2OTk3NywgNjk5ODEsIDY5OTg1LCA2OTk4OSwgNjk5OTMsIDY5OTk3LCAKLSAgICA3MDAwMSwgNzAwMDUsIDcwMDA5LCA3MDAxMywgNzAwMTcsIDcwMDIxLCA3MDAyNSwgNzAwMjksIDcwMDMzLCA3MDAzNywgCi0gICAgNzAwNDEsIDcwMDQ1LCA3MDA0OSwgNzAwNTMsIDcwMDU3LCA3MDA2MSwgNzAwNjUsIDcwMDY5LCA3MDA3MywgNzAwNzcsIAotICAgIDcwMDgxLCA3MDA4NSwgNzAwODksIDcwMDkzLCA3MDA5NywgNzAxMDEsIDcwMTA1LCA3MDEwOSwgNzAxMTMsIDcwMTE3LCAKLSAgICA3MDEyMSwgNzAxMjUsIDcwMTI5LCA3MDEzMywgNzAxMzcsIDcwMTQxLCA3MDE0NSwgNzAxNDksIDcwMTUzLCA3MDE1NywgCi0gICAgNzAxNjEsIDcwMTY1LCA3MDE2OSwgNzAxNzMsIDcwMTc3LCA3MDE4MSwgNzAxODUsIDcwMTg5LCA3MDE5MywgNzAxOTcsIAotICAgIDcwMjAxLCA3MDIwNSwgNzAyMDksIDcwMjEzLCA3MDIxNywgNzAyMjEsIDcwMjI1LCA3MDIyOSwgNzAyMzMsIDcwMjM3LCAKLSAgICA3MDI0MSwgNzAyNDUsIDcwMjQ5LCA3MDI1MywgNzAyNTcsIDcwMjYxLCA3MDI2NSwgNzAyNjksIDcwMjczLCA3MDI3NywgCi0gICAgNzAyODEsIDcwMjg1LCA3MDI4OSwgNzAyOTMsIDcwMjk3LCA3MDMwMSwgNzAzMDUsIDcwMzA5LCA3MDMxMywgNzAzMTcsIAotICAgIDcwMzIxLCA3MDMyNSwgNzAzMjksIDcwMzMzLCA3MDMzNywgNzAzNDEsIDcwMzQ1LCA3MDM0OSwgNzAzNTMsIDcwMzU3LCAKLSAgICA3MDM2MSwgNzAzNjUsIDcwMzY5LCA3MDM3MywgNzAzNzcsIDcwMzgxLCA3MDM4NSwgNzAzODksIDcwMzkzLCA3MDM5NywgCi0gICAgNzA0MDEsIDcwNDA1LCA3MDQwOSwgNzA0MTMsIDcwNDE3LCA3MDQyMSwgNzA0MjUsIDcwNDI5LCA3MDQzMywgNzA0MzcsIAotICAgIDcwNDQxLCA3MDQ0NSwgNzA0NDksIDcwNDUzLCA3MDQ1NywgNzA0NjEsIDcwNDY1LCA3MDQ2OSwgNzA0NzMsIDcwNDc3LCAKLSAgICA3MDQ4MSwgNzA0ODUsIDcwNDg5LCA3MDQ5MywgNzA0OTcsIDcwNTAxLCA3MDUwNSwgNzA1MDksIDcwNTEzLCA3MDUxNywgCi0gICAgNzA1MjEsIDcwNTI1LCA3MDUyOSwgNzA1MzMsIDcwNTM3LCA3MDU0MSwgNzA1NDUsIDcwNTQ5LCA3MDU1MywgNzA1NTcsIAotICAgIDcwNTYxLCA3MDU2NSwgNzA1NjksIDcwNTczLCA3MDU3NywgNzA1ODEsIDcwNTg1LCA3MDU4OSwgNzA1OTMsIDcwNTk3LCAKLSAgICA3MDYwMSwgNzA2MDUsIDcwNjA5LCA3MDYxMywgNzA2MTcsIDcwNjIxLCA3MDYyNSwgNzA2MjksIDcwNjMzLCA3MDYzNywgCi0gICAgNzA2NDEsIDcwNjQ1LCA3MDY0OSwgNzA2NTMsIDcwNjU3LCA3MDY2MSwgNzA2NjUsIDcwNjY5LCA3MDY3MywgNzA2NzcsIAotICAgIDcwNjgxLCA3MDY4NSwgNzA2ODksIDcwNjkzLCA3MDY5NywgNzA3MDEsIDcwNzA1LCA3MDcwOSwgNzA3MTMsIDcwNzE3LCAKLSAgICA3MDcyMSwgNzA3MjUsIDcwNzI5LCA3MDczMywgNzA3MzcsIDcwNzQxLCA3MDc0NSwgNzA3NDksIDcwNzUzLCA3MDc1NywgCi0gICAgNzA3NjEsIDcwNzY1LCA3MDc2OSwgNzA3NzMsIDcwNzc3LCA3MDc4MSwgNzA3ODUsIDcwNzg5LCA3MDc5MywgNzA3OTcsIAotICAgIDcwODAxLCA3MDgwNSwgNzA4MDksIDcwODEzLCA3MDgxNywgNzA4MjEsIDcwODI1LCA3MDgyOSwgNzA4MzMsIDcwODM3LCAKLSAgICA3MDg0MSwgNzA4NDUsIDcwODQ5LCA3MDg1MywgNzA4NTcsIDcwODYxLCA3MDg2NSwgNzA4NjksIDcwODczLCA3MDg3NywgCi0gICAgNzA4ODEsIDcwODg1LCA3MDg4OSwgNzA4OTMsIDcwODk3LCA3MDkwMSwgNzA5MDUsIDcwOTA5LCA3MDkxMywgNzA5MTcsIAotICAgIDcwOTIxLCA3MDkyNSwgNzA5MjksIDcwOTMzLCA3MDkzNywgNzA5NDEsIDcwOTQ1LCA3MDk0OSwgNzA5NTMsIDcwOTU3LCAKLSAgICA3MDk2MSwgNzA5NjUsIDcwOTY5LCA3MDk3MywgNzA5NzcsIDcwOTgxLCA3MDk4NSwgNzA5ODksIDcwOTkzLCA3MDk5NywgCi0gICAgNzEwMDEsIDcxMDA1LCA3MTAwOSwgNzEwMTMsIDcxMDE3LCA3MTAyMSwgNzEwMjUsIDcxMDI5LCA3MTAzMywgNzEwMzcsIAotICAgIDcxMDQxLCA3MTA0NSwgNzEwNDksIDcxMDUzLCA3MTA1NywgNzEwNjEsIDcxMDY1LCA3MTA2OSwgNzEwNzMsIDcxMDc3LCAKLSAgICA3MTA4MSwgNzEwODUsIDcxMDg5LCA3MTA5MywgNzEwOTcsIDcxMTAxLCA3MTEwNSwgNzExMDksIDcxMTEzLCA3MTExNywgCi0gICAgNzExMjEsIDcxMTI1LCA3MTEyOSwgNzExMzMsIDcxMTM3LCA3MTE0MSwgNzExNDUsIDcxMTQ5LCA3MTE1MywgMCwgMCwgMCwgCi0gICAgNzExNTcsIDcxMTYxLCA3MTE2NSwgNzExNjksIDcxMTczLCA3MTE3NywgNzExODEsIDcxMTg1LCA3MTE4OSwgNzExOTMsIAotICAgIDcxMTk3LCA3MTIwMSwgNzEyMDUsIDcxMjA5LCA3MTIxMywgNzEyMTcsIDcxMjIxLCA3MTIyNSwgNzEyMjksIDcxMjMzLCAKLSAgICA3MTIzNywgNzEyNDEsIDcxMjQ1LCA3MTI0OSwgNzEyNTMsIDcxMjU3LCA3MTI2MSwgNzEyNjUsIDcxMjY5LCA3MTI3MywgCi0gICAgNzEyNzcsIDcxMjgxLCA3MTI4NSwgNzEyODksIDcxMjkzLCA3MTI5NywgNzEzMDEsIDcxMzA1LCA3MTMwOSwgNzEzMTMsIAotICAgIDcxMzE3LCA3MTMyMSwgNzEzMjUsIDcxMzI5LCA3MTMzMywgNzEzMzcsIDcxMzQxLCA3MTM0NSwgNzEzNDksIDcxMzUzLCAKLSAgICA3MTM1NywgNzEzNjEsIDcxMzY1LCA3MTM2OSwgNzEzNzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcxMzc3LCAKLSAgICA3MTM4MiwgNzEzODYsIDcxMzkxLCA3MTM5NiwgNzE0MDEsIDcxNDA2LCA3MTQxMSwgNzE0MTUsIDcxNDIwLCA3MTQyNSwgCi0gICAgNzE0MzAsIDcxNDM1LCA3MTQ0MCwgNzE0NDUsIDcxNDUwLCA3MTQ1NCwgNzE0NTksIDcxNDY0LCA3MTQ2OSwgNzE0NzQsIAotICAgIDcxNDc5LCA3MTQ4NCwgNzE0ODgsIDcxNDkzLCA3MTQ5OCwgNzE1MDMsIDcxNTA4LCA3MTUxMywgNzE1MTcsIDcxNTIyLCAKLSAgICA3MTUyNiwgNzE1MzEsIDcxNTM1LCA3MTU0MCwgNzE1NDQsIDcxNTQ4LCA3MTU1MiwgNzE1NTcsIDcxNTYyLCA3MTU2NywgCi0gICAgNzE1NzUsIDcxNTgzLCA3MTU5MSwgNzE1OTksIDcxNjA3LCA3MTYxNSwgNzE2MjEsIDcxNjI5LCA3MTYzMywgNzE2MzcsIAotICAgIDcxNjQxLCA3MTY0NSwgNzE2NDksIDcxNjUzLCA3MTY1NywgNzE2NjEsIDcxNjY1LCA3MTY2OSwgNzE2NzMsIDcxNjc3LCAKLSAgICA3MTY4MSwgNzE2ODUsIDcxNjg5LCA3MTY5MywgNzE2OTcsIDcxNzAxLCA3MTcwNSwgNzE3MDksIDcxNzEzLCA3MTcxNywgCi0gICAgNzE3MjEsIDcxNzI1LCA3MTcyOSwgNzE3MzMsIDcxNzM3LCA3MTc0MSwgNzE3NDUsIDcxNzQ5LCA3MTc1MywgNzE3NTcsIAotICAgIDcxNzYxLCA3MTc2NSwgNzE3NjksIDcxNzczLCA3MTc3NiwgNzE3ODAsIDcxNzg0LCA3MTc4OCwgNzE3OTIsIDcxNzk2LCAKLSAgICA3MTgwMCwgNzE4MDQsIDcxODA4LCA3MTgxMiwgNzE4MTYsIDcxODIwLCA3MTgyNCwgNzE4MjgsIDcxODMyLCA3MTgzNiwgCi0gICAgNzE4NDAsIDcxODQ0LCA3MTg0OCwgNzE4NTIsIDcxODU2LCA3MTg2MCwgNzE4NjQsIDcxODY4LCA3MTg3MiwgNzE4NzYsIAotICAgIDcxODgwLCA3MTg4NCwgNzE4ODgsIDcxODkyLCA3MTg5NiwgNzE5MDAsIDcxOTA0LCA3MTkwOCwgNzE5MTIsIDcxOTE2LCAKLSAgICA3MTkyMCwgNzE5MjMsIDcxOTI3LCA3MTkzMSwgNzE5MzQsIDcxOTM4LCA3MTk0MiwgNzE5NDYsIDcxOTQ5LCA3MTk1MywgCi0gICAgNzE5NTcsIDcxOTYxLCA3MTk2NSwgNzE5NjksIDcxOTczLCA3MTk3NywgNzE5ODEsIDcxOTg1LCA3MTk4OSwgNzE5OTMsIAotICAgIDcxOTk3LCA3MjAwMSwgNzIwMDUsIDcyMDA5LCA3MjAxMywgNzIwMTcsIDcyMDIxLCA3MjAyNSwgNzIwMjksIDcyMDMzLCAKLSAgICA3MjAzNywgNzIwNDEsIDcyMDQ1LCA3MjA0OCwgNzIwNTEsIDcyMDU1LCA3MjA1OSwgNzIwNjMsIDcyMDY2LCA3MjA3MCwgCi0gICAgNzIwNzQsIDcyMDc4LCA3MjA4MiwgNzIwODYsIDcyMDkwLCA3MjA5NCwgNzIwOTgsIDcyMTAyLCA3MjEwNiwgNzIxMTAsIAotICAgIDcyMTE0LCA3MjExOCwgNzIxMjIsIDcyMTI2LCA3MjEzMCwgNzIxMzQsIDcyMTM4LCA3MjE0MiwgNzIxNDYsIDcyMTUwLCAKLSAgICA3MjE1NCwgNzIxNTgsIDcyMTYyLCA3MjE2NiwgNzIxNzAsIDcyMTc0LCA3MjE3OCwgNzIxODIsIDcyMTg2LCA3MjE5MCwgCi0gICAgNzIxOTQsIDcyMTk4LCA3MjIwMiwgNzIyMDYsIDcyMjEwLCA3MjIxNCwgNzIyMTgsIDcyMjIxLCA3MjIyNSwgNzIyMjksIAotICAgIDcyMjMzLCA3MjIzNywgNzIyNDEsIDcyMjQ1LCA3MjI0OSwgNzIyNTMsIDcyMjU3LCA3MjI2MSwgNzIyNjUsIDcyMjY5LCAKLSAgICA3MjI3MywgNzIyNzcsIDcyMjgxLCA3MjI4NSwgNzIyODksIDcyMjkzLCA3MjI5NywgNzIzMDEsIDcyMzA1LCA3MjMwOSwgCi0gICAgNzIzMTMsIDcyMzE3LCA3MjMyMSwgNzIzMjUsIDcyMzI5LCA3MjMzMywgNzIzMzcsIDcyMzQxLCA3MjM0NSwgNzIzNDksIAotICAgIDcyMzUzLCA3MjM1NywgNzIzNjEsIDcyMzY1LCA3MjM2OCwgNzIzNzIsIDcyMzc2LCA3MjM4MCwgNzIzODQsIDcyMzg4LCAKLSAgICA3MjM5MiwgNzIzOTYsIDcyNDAwLCA3MjQwNCwgNzI0MDgsIDcyNDEyLCA3MjQxNiwgNzI0MjAsIDcyNDI0LCA3MjQyOCwgCi0gICAgNzI0MzIsIDcyNDM1LCA3MjQzOSwgNzI0NDMsIDcyNDQ3LCA3MjQ1MSwgNzI0NTUsIDcyNDU5LCA3MjQ2MywgNzI0NjcsIAotICAgIDcyNDcxLCA3MjQ3NSwgNzI0NzksIDcyNDgzLCA3MjQ4NywgNzI0OTEsIDcyNDk1LCA3MjQ5OSwgNzI1MDMsIDcyNTA3LCAKLSAgICA3MjUxMSwgNzI1MTUsIDcyNTE5LCA3MjUyMiwgNzI1MjYsIDcyNTMwLCA3MjUzNCwgNzI1MzgsIDcyNTQyLCA3MjU0NiwgCi0gICAgNzI1NTAsIDcyNTU0LCA3MjU1OCwgNzI1NjIsIDcyNTY2LCA3MjU3MCwgNzI1NzQsIDcyNTc4LCA3MjU4MiwgNzI1ODYsIAotICAgIDcyNTkwLCA3MjU5NCwgNzI1OTgsIDcyNjAyLCA3MjYwNiwgNzI2MTAsIDcyNjE0LCA3MjYxOCwgNzI2MjIsIDcyNjI2LCAKLSAgICA3MjYzMCwgNzI2MzQsIDcyNjM4LCA3MjY0MiwgNzI2NDYsIDcyNjUwLCA3MjY1NCwgNzI2NTgsIDcyNjYyLCA3MjY2NiwgCi0gICAgNzI2NzAsIDcyNjc0LCA3MjY3OCwgNzI2ODIsIDcyNjg2LCA3MjY5MCwgNzI2OTQsIDcyNjk3LCA3MjcwMiwgNzI3MDYsIAotICAgIDcyNzEyLCA3MjcxNywgNzI3MjMsIDcyNzI3LCA3MjczMSwgNzI3MzUsIDcyNzM5LCA3Mjc0MywgNzI3NDcsIDcyNzUxLCAKLSAgICA3Mjc1NSwgNzI3NTksIDcyNzYzLCA3Mjc2NywgNzI3NzEsIDcyNzc1LCA3Mjc3OSwgNzI3ODIsIDcyNzg1LCA3Mjc4OCwgCi0gICAgNzI3OTEsIDcyNzk0LCA3Mjc5NywgNzI4MDEsIDcyODA0LCA3MjgwOCwgNzI4MTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcyODE5LCA3MjgyNCwgNzI4MjksIDcyODM0LCA3MjgzOSwgCi0gICAgNzI4NDYsIDcyODUzLCA3Mjg1OCwgNzI4NjMsIDcyODY4LCA3Mjg3MywgNzI4ODAsIDcyODg3LCA3Mjg5NCwgNzI5MDEsIAotICAgIDcyOTA4LCA3MjkxNSwgNzI5MjUsIDcyOTM1LCA3Mjk0MiwgNzI5NDksIDcyOTU2LCA3Mjk2MywgNzI5NjksIDcyOTc1LCAKLSAgICA3Mjk4NCwgNzI5OTMsIDczMDAwLCA3MzAwNywgNzMwMTgsIDczMDI5LCA3MzAzNCwgNzMwMzksIDczMDQ2LCA3MzA1MywgCi0gICAgNzMwNjAsIDczMDY3LCA3MzA3NCwgNzMwODEsIDczMDg4LCA3MzA5NSwgNzMxMDEsIDczMTA3LCA3MzExMywgNzMxMTksIAotICAgIDczMTI2LCA3MzEzMywgNzMxMzgsIDczMTQyLCA3MzE0OSwgNzMxNTYsIDczMTYzLCA3MzE2NywgNzMxNzQsIDczMTc4LCAKLSAgICA3MzE4MywgNzMxODcsIDczMTkzLCA3MzE5OCwgNzMyMDQsIDczMjA5LCA3MzIxMywgNzMyMTcsIDczMjIwLCA3MzIyMywgCi0gICAgNzMyMjgsIDczMjMzLCA3MzIzOCwgNzMyNDMsIDczMjQ4LCA3MzI1MywgNzMyNTgsIDczMjYzLCA3MzI2OCwgNzMyNzMsIAotICAgIDczMjgxLCA3MzI4OSwgNzMyOTQsIDczMjk5LCA3MzMwNCwgNzMzMDksIDczMzE0LCA3MzMxOSwgNzMzMjQsIDczMzI5LCAKLSAgICA3MzMzNCwgNzMzMzksIDczMzQ0LCA3MzM0OSwgNzMzNTQsIDczMzU5LCA3MzM2NSwgNzMzNzEsIDczMzc3LCA3MzM4MywgCi0gICAgNzMzODgsIDczMzk0LCA3MzM5NywgNzM0MDAsIDczNDAzLCA3MzQwNywgNzM0MTEsIDczNDE1LCA3MzQxOSwgNzM0MjIsIAotICAgIDczNDI2LCA3MzQyOSwgNzM0MzMsIDczNDM2LCA3MzQ0MCwgNzM0NDQsIDczNDQ4LCA3MzQ1MiwgNzM0NTYsIDczNDYwLCAKLSAgICA3MzQ2NCwgNzM0NjgsIDczNDcyLCA3MzQ3NiwgNzM0ODAsIDczNDg0LCA3MzQ4OCwgNzM0OTIsIDczNDk2LCA3MzUwMCwgCi0gICAgNzM1MDQsIDczNTA4LCA3MzUxMiwgNzM1MTYsIDczNTIwLCA3MzUyNCwgNzM1MjcsIDczNTMxLCA3MzUzNSwgNzM1MzksIAotICAgIDczNTQzLCA3MzU0NywgNzM1NTEsIDczNTU1LCA3MzU1OSwgNzM1NjMsIDczNTY3LCA3MzU3MSwgNzM1NzUsIDczNTc5LCAKLSAgICA3MzU4MywgNzM1ODcsIDczNTkxLCA3MzU5NSwgNzM1OTksIDczNjAzLCA3MzYwNywgNzM2MTEsIDczNjE1LCA3MzYxOSwgCi0gICAgNzM2MjMsIDczNjI3LCA3MzYzMSwgNzM2MzUsIDczNjM5LCA3MzY0MywgNzM2NDcsIDczNjUxLCA3MzY1NSwgNzM2NTgsIAotICAgIDczNjYyLCA3MzY2NiwgNzM2NzAsIDczNjc0LCA3MzY3OCwgNzM2ODIsIDczNjg2LCA3MzY5MCwgNzM2OTQsIDczNjk4LCAKLSAgICA3MzcwMiwgNzM3MDYsIDczNzExLCA3MzcxNiwgNzM3MTksIDczNzI0LCA3MzcyNywgNzM3MzAsIDczNzMzLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA3MzczNywgNzM3NDYsIDczNzU1LCA3Mzc2NCwgNzM3NzMsIDczNzgyLCA3Mzc5MSwgNzM4MDAsIAotICAgIDczODA5LCA3MzgxNywgNzM4MjQsIDczODMyLCA3MzgzOSwgNzM4NDcsIDczODU3LCA3Mzg2NiwgNzM4NzYsIDczODg1LCAKLSAgICA3Mzg5NSwgNzM5MDMsIDczOTEwLCA3MzkxOCwgNzM5MjUsIDczOTMzLCA3MzkzOCwgNzM5NDMsIDczOTQ5LCA3Mzk1OCwgCi0gICAgNzM5NjQsIDczOTcwLCA3Mzk3NywgNzM5ODYsIDczOTk0LCA3NDAwMiwgNzQwMTAsIDc0MDE3LCA3NDAyNCwgNzQwMzEsIAotICAgIDc0MDM4LCA3NDA0MywgNzQwNDgsIDc0MDUzLCA3NDA1OCwgNzQwNjMsIDc0MDY4LCA3NDA3MywgNzQwNzgsIDc0MDg2LCAKLSAgICA3NDA5NCwgNzQxMDAsIDc0MTA1LCA3NDExMCwgNzQxMTUsIDc0MTIwLCA3NDEyNSwgNzQxMzAsIDc0MTM1LCA3NDE0MCwgCi0gICAgNzQxNDUsIDc0MTU0LCA3NDE2MywgNzQxNjgsIDc0MTczLCA3NDE4MywgNzQxOTMsIDc0MjAwLCA3NDIwNywgNzQyMTYsIAotICAgIDc0MjI1LCA3NDIzNywgNzQyNDksIDc0MjU1LCA3NDI2MSwgNzQyNjksIDc0Mjc3LCA3NDI4NywgNzQyOTcsIDc0MzA0LCAKLSAgICA3NDMxMSwgNzQzMTYsIDc0MzIxLCA3NDMzMywgNzQzNDUsIDc0MzUzLCA3NDM2MSwgNzQzNzEsIDc0MzgxLCA3NDM5MywgCi0gICAgNzQ0MDUsIDc0NDE0LCA3NDQyMywgNzQ0MzAsIDc0NDM3LCA3NDQ0NCwgNzQ0NTEsIDc0NDYwLCA3NDQ2OSwgNzQ0NzQsIAotICAgIDc0NDc5LCA3NDQ4NiwgNzQ0OTMsIDc0NTAwLCA3NDUwNywgNzQ1MTksIDc0NTMxLCA3NDUzNiwgNzQ1NDEsIDc0NTQ2LCAKLSAgICA3NDU1MSwgNzQ1NTYsIDc0NTYxLCA3NDU2NiwgNzQ1NzEsIDc0NTc1LCA3NDU4MCwgNzQ1ODUsIDc0NTkwLCA3NDU5NSwgCi0gICAgNzQ2MDAsIDc0NjA2LCA3NDYxMSwgNzQ2MTYsIDc0NjIzLCA3NDYzMCwgNzQ2MzcsIDc0NjQ0LCA3NDY1MSwgNzQ2NjAsIAotICAgIDc0NjY5LCA3NDY3NSwgNzQ2ODEsIDc0Njg3LCA3NDY5MywgNzQ2OTksIDc0NzA1LCA3NDcxMiwgNzQ3MTksIDc0NzI2LCAKLSAgICA3NDczMCwgNzQ3MzcsIDc0NzQyLCA3NDc0NywgNzQ3NTQsIDc0NzY3LCA3NDc3MywgNzQ3ODEsIDc0Nzg5LCA3NDc5NiwgCi0gICAgNzQ4MDMsIDc0ODEyLCA3NDgyMSwgNzQ4MjgsIDc0ODM1LCA3NDg0MiwgNzQ4NDksIDc0ODU2LCA3NDg2MywgNzQ4NzAsIAotICAgIDc0ODc3LCA3NDg4NCwgNzQ4OTEsIDc0OTAwLCA3NDkwOSwgNzQ5MTgsIDc0OTI3LCA3NDkzNiwgNzQ5NDUsIDc0OTU0LCAKLSAgICA3NDk2MywgNzQ5NzIsIDc0OTgxLCA3NDk4OCwgNzQ5OTUsIDc1MDAxLCAwLCAwLCA3NTAwOSwgNzUwMTYsIDc1MDIzLCAKLSAgICA3NTAzMSwgNzUwMzYsIDc1MDQxLCA3NTA0NiwgNzUwNTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDY2ODMwLCA2NjgzOSwgNjY4NDgsIDY2ODU5LCA2Njg2NiwgNjY4NzEsIDY2ODc2LCA2Njg4MywgNjY4OTAsIDY2ODk2LCAKKyAgICA2NjkwMSwgNjY5MDYsIDY2OTExLCA2NjkxNiwgNjY5MjMsIDY2OTI4LCA2NjkzMywgNjY5MzgsIDY2OTQ5LCA2Njk1NCwgCisgICAgNjY5NTksIDY2OTY2LCA2Njk3MSwgNjY5NzgsIDY2OTgzLCA2Njk4OCwgNjY5OTUsIDY3MDAyLCA2NzAwOSwgNjcwMTgsIAorICAgIDY3MDI3LCA2NzAzMiwgNjcwMzcsIDY3MDQyLCA2NzA0OSwgNjcwNTQsIDY3MDY0LCA2NzA3MSwgNjcwNzYsIDY3MDgxLCAKKyAgICA2NzA4NiwgNjcwOTEsIDY3MDk2LCA2NzEwMSwgNjcxMTAsIDY3MTE3LCA2NzEyNCwgNjcxMjksIDY3MTM2LCA2NzE0MSwgCisgICAgNjcxNDgsIDY3MTU3LCA2NzE2OCwgNjcxNzMsIDY3MTgyLCA2NzE4NywgNjcxOTQsIDY3MjAzLCA2NzIxMiwgNjcyMTcsIAorICAgIDY3MjIyLCA2NzIyOSwgNjcyMzUsIDY3MjQyLCA2NzI0OSwgNjcyNTMsIDY3MjU3LCA2NzI2MCwgNjcyNjQsIDY3MjY4LCAKKyAgICA2NzI3MiwgNjcyNzYsIDY3MjgwLCA2NzI4NCwgNjcyODgsIDY3MjkxLCA2NzI5NSwgNjcyOTksIDY3MzAzLCA2NzMwNywgCisgICAgNjczMTEsIDY3MzE1LCA2NzMxOCwgNjczMjIsIDY3MzI2LCA2NzMyOSwgNjczMzMsIDY3MzM3LCA2NzM0MSwgNjczNDUsIAorICAgIDY3MzQ5LCA2NzM1MywgNjczNTcsIDY3MzYxLCA2NzM2NSwgNjczNjksIDY3MzczLCA2NzM3NywgNjczODEsIDY3Mzg1LCAKKyAgICA2NzM4OSwgNjczOTMsIDY3Mzk3LCA2NzQwMSwgNjc0MDUsIDY3NDA5LCA2NzQxMywgNjc0MTcsIDY3NDIxLCA2NzQyNSwgCisgICAgNjc0MjksIDY3NDMzLCA2NzQzNywgNjc0NDEsIDY3NDQ1LCA2NzQ0OSwgNjc0NTMsIDY3NDU3LCA2NzQ2MSwgNjc0NjUsIAorICAgIDY3NDY5LCA2NzQ3MywgNjc0NzcsIDY3NDgxLCA2NzQ4NSwgNjc0ODksIDY3NDkzLCA2NzQ5NywgNjc1MDEsIDY3NTA1LCAKKyAgICA2NzUwOCwgNjc1MTIsIDY3NTE2LCA2NzUyMCwgNjc1MjQsIDY3NTI4LCA2NzUzMiwgNjc1MzYsIDY3NTQwLCA2NzU0NCwgCisgICAgNjc1NDgsIDY3NTUyLCA2NzU1NiwgNjc1NjAsIDY3NTY0LCA2NzU2OCwgNjc1NzIsIDY3NTc2LCA2NzU4MCwgNjc1ODQsIAorICAgIDY3NTg4LCA2NzU5MiwgNjc1OTYsIDY3NjAwLCA2NzYwNCwgNjc2MDgsIDY3NjEyLCA2NzYxNiwgNjc2MjAsIDY3NjI0LCAKKyAgICA2NzYyOCwgNjc2MzIsIDY3NjM2LCA2NzY0MCwgNjc2NDQsIDY3NjQ4LCA2NzY1MiwgNjc2NTYsIDY3NjYwLCA2NzY2NCwgCisgICAgNjc2NjgsIDY3NjcyLCA2NzY3NiwgNjc2ODAsIDY3Njg0LCA2NzY4OCwgNjc2OTIsIDY3Njk2LCA2NzcwMCwgNjc3MDQsIAorICAgIDY3NzA4LCA2NzcxMiwgNjc3MTYsIDY3NzIwLCA2NzcyNCwgNjc3MjgsIDY3NzMyLCA2NzczNiwgNjc3NDAsIDY3NzQ0LCAKKyAgICA2Nzc0OCwgNjc3NTIsIDY3NzU2LCA2Nzc2MCwgNjc3NjQsIDY3NzY4LCA2Nzc3MiwgNjc3NzYsIDY3NzgwLCA2Nzc4NCwgCisgICAgNjc3ODgsIDY3NzkyLCA2Nzc5NiwgNjc4MDAsIDY3ODA0LCA2NzgwOCwgNjc4MTIsIDY3ODE2LCA2NzgyMCwgNjc4MjQsIAorICAgIDY3ODI4LCA2NzgzMiwgNjc4MzYsIDY3ODQwLCA2Nzg0NCwgNjc4NDgsIDY3ODUyLCA2Nzg1NiwgNjc4NjAsIDY3ODY0LCAKKyAgICA2Nzg2OCwgNjc4NzIsIDY3ODc2LCA2Nzg4MCwgNjc4ODQsIDY3ODg4LCA2Nzg5MiwgNjc4OTYsIDY3OTAwLCA2NzkwNCwgCisgICAgNjc5MDgsIDY3OTEyLCA2NzkxNiwgNjc5MjAsIDY3OTI0LCA2NzkyOCwgNjc5MzIsIDY3OTM2LCA2Nzk0MCwgNjc5NDQsIAorICAgIDY3OTQ4LCA2Nzk1MiwgNjc5NTYsIDY3OTYwLCA2Nzk2NCwgNjc5NjgsIDY3OTcyLCA2Nzk3NiwgNjc5NzksIDY3OTgzLCAKKyAgICA2Nzk4NywgNjc5OTEsIDY3OTk1LCA2Nzk5OSwgNjgwMDMsIDY4MDA3LCA2ODAxMSwgNjgwMTUsIDY4MDE5LCA2ODAyMywgCisgICAgNjgwMjcsIDY4MDMxLCA2ODAzNSwgNjgwMzksIDY4MDQzLCA2ODA0NywgNjgwNTEsIDY4MDU1LCA2ODA1OSwgNjgwNjMsIAorICAgIDY4MDY3LCA2ODA3MSwgNjgwNzUsIDY4MDc5LCA2ODA4MywgNjgwODcsIDY4MDkxLCA2ODA5NSwgNjgwOTksIDY4MTAzLCAKKyAgICA2ODEwNywgNjgxMTEsIDY4MTE1LCA2ODExOSwgNjgxMjMsIDY4MTI3LCA2ODEzMSwgNjgxMzUsIDY4MTM5LCA2ODE0MywgCisgICAgNjgxNDcsIDY4MTUxLCA2ODE1NSwgNjgxNTksIDY4MTYzLCA2ODE2NywgNjgxNzEsIDY4MTc1LCA2ODE3OSwgNjgxODMsIAorICAgIDY4MTg3LCA2ODE5MSwgNjgxOTUsIDY4MTk5LCA2ODIwMywgNjgyMDcsIDY4MjExLCA2ODIxNSwgNjgyMTksIDY4MjIzLCAKKyAgICA2ODIyNywgNjgyMzEsIDY4MjM1LCA2ODIzOSwgNjgyNDMsIDY4MjQ3LCA2ODI1MSwgNjgyNTUsIDY4MjU5LCA2ODI2MywgCisgICAgNjgyNjcsIDY4MjcxLCA2ODI3NSwgNjgyNzksIDY4MjgzLCA2ODI4NywgNjgyOTEsIDY4Mjk1LCA2ODI5OSwgNjgzMDMsIAorICAgIDY4MzA3LCA2ODMxMSwgNjgzMTUsIDY4MzE5LCA2ODMyMywgNjgzMjcsIDY4MzMxLCA2ODMzNSwgNjgzMzksIDY4MzQzLCAKKyAgICA2ODM0NywgNjgzNTEsIDY4MzU1LCA2ODM1OSwgNjgzNjMsIDY4MzY3LCA2ODM3MSwgNjgzNzUsIDY4Mzc5LCA2ODM4MywgCisgICAgNjgzODcsIDY4MzkxLCA2ODM5NSwgNjgzOTksIDY4NDAzLCA2ODQwNywgNjg0MTEsIDY4NDE1LCA2ODQxOSwgNjg0MjMsIAorICAgIDY4NDI3LCA2ODQzMSwgNjg0MzUsIDY4NDM5LCA2ODQ0MiwgNjg0NDYsIDY4NDUwLCA2ODQ1NCwgNjg0NTgsIDY4NDYyLCAKKyAgICA2ODQ2NiwgNjg0NzAsIDY4NDc0LCA2ODQ3OCwgNjg0ODIsIDY4NDg2LCA2ODQ5MCwgNjg0OTQsIDY4NDk4LCA2ODUwMiwgCisgICAgNjg1MDYsIDY4NTEwLCA2ODUxNCwgNjg1MTgsIDY4NTIyLCA2ODUyNiwgNjg1MzAsIDY4NTM0LCA2ODUzOCwgNjg1NDIsIAorICAgIDY4NTQ2LCA2ODU1MCwgNjg1NTQsIDY4NTU4LCA2ODU2MiwgNjg1NjYsIDY4NTcwLCA2ODU3NCwgNjg1NzgsIDY4NTgyLCAKKyAgICA2ODU4NiwgNjg1OTAsIDY4NTk0LCA2ODU5OCwgNjg2MDIsIDY4NjA2LCA2ODYxMCwgNjg2MTQsIDY4NjE4LCA2ODYyMiwgCisgICAgNjg2MjYsIDY4NjMwLCA2ODYzNCwgNjg2MzgsIDY4NjQyLCA2ODY0NiwgNjg2NTAsIDY4NjU0LCA2ODY1OCwgNjg2NjIsIAorICAgIDY4NjY2LCA2ODY3MCwgNjg2NzQsIDY4Njc4LCA2ODY4MiwgNjg2ODYsIDY4NjkwLCA2ODY5NCwgNjg2OTgsIDY4NzAyLCAKKyAgICA2ODcwNiwgNjg3MTAsIDY4NzE0LCA2ODcxOCwgNjg3MjIsIDY4NzI2LCA2ODczMCwgNjg3MzQsIDY4NzM4LCA2ODc0MiwgCisgICAgNjg3NDYsIDY4NzUwLCA2ODc1NCwgNjg3NTgsIDY4NzYyLCA2ODc2NiwgNjg3NzAsIDY4Nzc0LCA2ODc3OCwgNjg3ODIsIAorICAgIDY4Nzg2LCA2ODc5MCwgNjg3OTQsIDY4Nzk4LCA2ODgwMSwgNjg4MDUsIDY4ODA5LCA2ODgxMywgNjg4MTcsIDY4ODIxLCAKKyAgICA2ODgyNSwgNjg4MjksIDY4ODMzLCA2ODgzNywgNjg4NDEsIDY4ODQ1LCA2ODg0OSwgNjg4NTMsIDY4ODU3LCA2ODg2MSwgCisgICAgNjg4NjUsIDY4ODY5LCA2ODg3MywgNjg4NzcsIDY4ODgxLCA2ODg4NSwgNjg4ODksIDY4ODkzLCA2ODg5NywgNjg5MDEsIAorICAgIDY4OTA1LCA2ODkwOSwgNjg5MTMsIDY4OTE3LCA2ODkyMSwgNjg5MjUsIDY4OTI5LCA2ODkzMywgNjg5MzcsIDY4OTQxLCAKKyAgICA2ODk0NSwgNjg5NDksIDY4OTUzLCA2ODk1NywgNjg5NjEsIDY4OTY1LCA2ODk2OSwgNjg5NzMsIDY4OTc3LCA2ODk4MSwgCisgICAgNjg5ODUsIDY4OTg5LCA2ODk5MywgNjg5OTcsIDY5MDAxLCA2OTAwNSwgNjkwMDksIDY5MDEzLCA2OTAxNywgNjkwMjEsIAorICAgIDY5MDI1LCA2OTAyOSwgNjkwMzMsIDY5MDM3LCA2OTA0MCwgNjkwNDQsIDY5MDQ4LCA2OTA1MiwgNjkwNTYsIDY5MDYwLCAKKyAgICA2OTA2NCwgNjkwNjgsIDY5MDcyLCA2OTA3NiwgNjkwODAsIDY5MDg0LCA2OTA4OCwgNjkwOTIsIDY5MDk2LCA2OTEwMCwgCisgICAgNjkxMDQsIDY5MTA4LCA2OTExMiwgNjkxMTYsIDY5MTIwLCA2OTEyNCwgNjkxMjgsIDY5MTMyLCA2OTEzNiwgNjkxNDAsIAorICAgIDY5MTQ0LCA2OTE0OCwgNjkxNTIsIDY5MTU2LCA2OTE2MCwgNjkxNjQsIDY5MTY4LCA2OTE3MiwgNjkxNzYsIDY5MTgwLCAKKyAgICA2OTE4NCwgNjkxODgsIDY5MTkyLCA2OTE5NiwgNjkyMDAsIDY5MjA0LCA2OTIwOCwgNjkyMTIsIDY5MjE2LCA2OTIyMCwgCisgICAgNjkyMjQsIDY5MjI4LCA2OTIzMiwgNjkyMzYsIDY5MjQwLCA2OTI0NCwgNjkyNDgsIDY5MjUyLCA2OTI1NiwgNjkyNjAsIAorICAgIDY5MjY0LCA2OTI2OCwgNjkyNzIsIDY5Mjc2LCA2OTI4MCwgNjkyODQsIDY5Mjg4LCA2OTI5MiwgNjkyOTUsIDY5Mjk5LCAKKyAgICA2OTMwMywgNjkzMDcsIDY5MzExLCA2OTMxNSwgNjkzMTksIDY5MzIzLCA2OTMyNywgNjkzMzEsIDY5MzM1LCA2OTMzOSwgCisgICAgNjkzNDMsIDY5MzQ3LCA2OTM1MSwgNjkzNTUsIDY5MzU5LCA2OTM2MywgNjkzNjcsIDY5MzcxLCA2OTM3NSwgNjkzNzksIAorICAgIDY5MzgzLCA2OTM4NywgNjkzOTEsIDY5Mzk1LCA2OTM5OSwgNjk0MDMsIDY5NDA3LCA2OTQxMSwgNjk0MTUsIDY5NDE5LCAKKyAgICA2OTQyMywgNjk0MjcsIDY5NDMxLCA2OTQzNSwgNjk0MzksIDY5NDQzLCA2OTQ0NywgNjk0NTEsIDY5NDU1LCA2OTQ1OSwgCisgICAgNjk0NjMsIDY5NDY3LCA2OTQ3MSwgNjk0NzUsIDY5NDc5LCA2OTQ4MywgNjk0ODcsIDY5NDkxLCA2OTQ5NSwgNjk0OTksIAorICAgIDY5NTAzLCA2OTUwNywgNjk1MTEsIDY5NTE1LCA2OTUxOSwgNjk1MjMsIDY5NTI3LCA2OTUzMSwgNjk1MzUsIDY5NTM5LCAKKyAgICA2OTU0MywgNjk1NDcsIDY5NTUxLCA2OTU1NSwgNjk1NTksIDY5NTYzLCA2OTU2NywgNjk1NzEsIDY5NTc1LCA2OTU3OSwgCisgICAgNjk1ODMsIDY5NTg3LCA2OTU5MSwgNjk1OTUsIDY5NTk5LCA2OTYwMywgNjk2MDcsIDY5NjExLCA2OTYxNSwgNjk2MTksIAorICAgIDY5NjIzLCA2OTYyNywgNjk2MzEsIDY5NjM1LCA2OTYzOSwgNjk2NDMsIDY5NjQ3LCA2OTY1MSwgNjk2NTUsIDY5NjU5LCAKKyAgICA2OTY2MywgNjk2NjcsIDY5NjcxLCA2OTY3NSwgNjk2NzksIDY5NjgzLCA2OTY4NywgNjk2OTEsIDY5Njk1LCA2OTY5OSwgCisgICAgNjk3MDMsIDY5NzA3LCA2OTcxMSwgNjk3MTUsIDY5NzE5LCA2OTcyMywgNjk3MjcsIDY5NzMxLCA2OTczNSwgNjk3MzksIAorICAgIDY5NzQzLCA2OTc0NywgNjk3NTAsIDY5NzU0LCA2OTc1OCwgNjk3NjIsIDY5NzY2LCA2OTc3MCwgNjk3NzQsIDY5Nzc4LCAKKyAgICA2OTc4MiwgNjk3ODYsIDY5NzkwLCA2OTc5NCwgNjk3OTgsIDY5ODAyLCA2OTgwNiwgNjk4MTAsIDY5ODE0LCA2OTgxOCwgCisgICAgNjk4MjIsIDY5ODI2LCA2OTgzMCwgNjk4MzQsIDY5ODM4LCA2OTg0MiwgNjk4NDYsIDY5ODUwLCA2OTg1NCwgNjk4NTgsIAorICAgIDY5ODYyLCA2OTg2NiwgNjk4NzAsIDY5ODc0LCA2OTg3OCwgNjk4ODIsIDY5ODg2LCA2OTg5MCwgNjk4OTQsIDY5ODk4LCAKKyAgICA2OTkwMiwgNjk5MDYsIDY5OTEwLCA2OTkxNCwgNjk5MTgsIDY5OTIyLCA2OTkyNiwgNjk5MzAsIDY5OTM0LCA2OTkzOCwgCisgICAgNjk5NDIsIDY5OTQ2LCA2OTk1MCwgNjk5NTQsIDY5OTU4LCA2OTk2MiwgNjk5NjYsIDY5OTcwLCA2OTk3NCwgNjk5NzgsIAorICAgIDY5OTgyLCA2OTk4NiwgNjk5OTAsIDY5OTk0LCA2OTk5OCwgNzAwMDIsIDcwMDA2LCA3MDAxMCwgNzAwMTQsIDcwMDE4LCAKKyAgICA3MDAyMiwgNzAwMjYsIDcwMDMwLCA3MDAzNCwgNzAwMzgsIDcwMDQyLCA3MDA0NiwgNzAwNTAsIDcwMDU0LCA3MDA1OCwgCisgICAgNzAwNjIsIDcwMDY2LCA3MDA3MCwgNzAwNzQsIDcwMDc4LCA3MDA4MiwgNzAwODYsIDcwMDkwLCA3MDA5NCwgNzAwOTgsIAorICAgIDcwMTAyLCA3MDEwNiwgNzAxMTAsIDcwMTE0LCA3MDExOCwgNzAxMjIsIDcwMTI2LCA3MDEzMCwgNzAxMzQsIDcwMTM4LCAKKyAgICA3MDE0MiwgNzAxNDYsIDcwMTUwLCA3MDE1NCwgNzAxNTgsIDcwMTYyLCA3MDE2NiwgNzAxNzAsIDcwMTc0LCA3MDE3OCwgCisgICAgNzAxODIsIDcwMTg2LCA3MDE5MCwgNzAxOTQsIDcwMTk4LCA3MDIwMiwgNzAyMDYsIDcwMjEwLCA3MDIxNCwgNzAyMTgsIAorICAgIDcwMjIyLCA3MDIyNiwgNzAyMzAsIDcwMjM0LCA3MDIzOCwgNzAyNDIsIDcwMjQ2LCA3MDI1MCwgNzAyNTQsIDcwMjU4LCAKKyAgICA3MDI2MiwgNzAyNjYsIDcwMjcwLCA3MDI3NCwgNzAyNzgsIDcwMjgyLCA3MDI4NiwgNzAyOTAsIDcwMjk0LCA3MDI5OCwgCisgICAgNzAzMDIsIDcwMzA2LCA3MDMxMCwgNzAzMTQsIDcwMzE4LCA3MDMyMiwgNzAzMjYsIDcwMzMwLCA3MDMzNCwgNzAzMzgsIAorICAgIDcwMzQyLCA3MDM0NiwgNzAzNTAsIDcwMzUzLCA3MDM1NywgNzAzNjEsIDcwMzY1LCA3MDM2OSwgNzAzNzMsIDcwMzc3LCAKKyAgICA3MDM4MSwgNzAzODUsIDcwMzg5LCA3MDM5MywgNzAzOTcsIDcwNDAxLCA3MDQwNSwgNzA0MDksIDcwNDEzLCA3MDQxNywgCisgICAgNzA0MjEsIDcwNDI1LCA3MDQyOSwgNzA0MzMsIDcwNDM3LCA3MDQ0MSwgNzA0NDUsIDcwNDQ5LCA3MDQ1MywgNzA0NTcsIAorICAgIDcwNDYxLCA3MDQ2NSwgNzA0NjksIDcwNDczLCA3MDQ3NywgNzA0ODEsIDcwNDg1LCA3MDQ4OSwgNzA0OTMsIDcwNDk3LCAKKyAgICA3MDUwMSwgNzA1MDUsIDcwNTA5LCA3MDUxMywgNzA1MTcsIDcwNTIxLCA3MDUyNSwgNzA1MjksIDcwNTMzLCA3MDUzNywgCisgICAgNzA1NDEsIDcwNTQ1LCA3MDU0OSwgNzA1NTMsIDcwNTU3LCA3MDU2MSwgNzA1NjUsIDcwNTY5LCA3MDU3MywgNzA1NzcsIAorICAgIDcwNTgxLCA3MDU4NSwgNzA1ODksIDcwNTkzLCA3MDU5NywgNzA2MDEsIDcwNjA1LCA3MDYwOSwgNzA2MTMsIDcwNjE3LCAKKyAgICA3MDYyMSwgNzA2MjUsIDcwNjI5LCA3MDYzMywgNzA2MzcsIDcwNjQxLCA3MDY0NSwgNzA2NDksIDcwNjUzLCA3MDY1NywgCisgICAgNzA2NjEsIDcwNjY1LCA3MDY2OSwgNzA2NzMsIDcwNjc3LCA3MDY4MSwgNzA2ODUsIDcwNjg5LCA3MDY5MywgNzA2OTcsIAorICAgIDcwNzAxLCA3MDcwNSwgNzA3MDksIDcwNzEzLCA3MDcxNywgNzA3MjEsIDcwNzI1LCA3MDcyOSwgNzA3MzMsIDcwNzM3LCAKKyAgICA3MDc0MSwgNzA3NDUsIDcwNzQ5LCA3MDc1MywgNzA3NTcsIDcwNzYxLCA3MDc2NSwgNzA3NjksIDcwNzczLCA3MDc3NywgCisgICAgNzA3ODEsIDcwNzg1LCA3MDc4OSwgNzA3OTMsIDcwNzk3LCA3MDgwMSwgNzA4MDUsIDcwODA5LCA3MDgxMywgNzA4MTcsIAorICAgIDcwODIxLCA3MDgyNSwgNzA4MjksIDcwODMzLCA3MDgzNywgNzA4NDEsIDcwODQ1LCA3MDg0OSwgNzA4NTMsIDcwODU3LCAKKyAgICA3MDg2MSwgNzA4NjUsIDcwODY5LCA3MDg3MywgNzA4NzcsIDcwODgxLCA3MDg4NSwgNzA4ODksIDcwODkzLCA3MDg5NywgCisgICAgNzA5MDEsIDcwOTA1LCA3MDkwOSwgNzA5MTMsIDcwOTE3LCA3MDkyMSwgNzA5MjUsIDcwOTI5LCA3MDkzMywgNzA5MzcsIAorICAgIDcwOTQxLCA3MDk0NSwgNzA5NDksIDcwOTUzLCA3MDk1NywgNzA5NjEsIDcwOTY1LCA3MDk2OSwgNzA5NzMsIDcwOTc3LCAKKyAgICA3MDk4MSwgNzA5ODUsIDcwOTg5LCA3MDk5MywgNzA5OTcsIDcxMDAxLCA3MTAwNSwgNzEwMDksIDcxMDEzLCA3MTAxNywgCisgICAgNzEwMjEsIDcxMDI1LCA3MTAyOSwgNzEwMzMsIDcxMDM3LCA3MTA0MSwgNzEwNDUsIDcxMDQ5LCA3MTA1MywgNzEwNTcsIAorICAgIDcxMDYxLCA3MTA2NSwgNzEwNjksIDcxMDczLCA3MTA3NywgNzEwODEsIDcxMDg1LCA3MTA4OSwgNzEwOTMsIDcxMDk3LCAKKyAgICA3MTEwMSwgNzExMDUsIDcxMTA5LCA3MTExMywgNzExMTcsIDcxMTIxLCA3MTEyNSwgNzExMjksIDcxMTMzLCA3MTEzNywgCisgICAgNzExNDEsIDcxMTQ1LCA3MTE0OSwgNzExNTMsIDcxMTU3LCA3MTE2MSwgNzExNjUsIDcxMTY5LCA3MTE3MywgNzExNzcsIAorICAgIDcxMTgxLCA3MTE4NSwgNzExODksIDcxMTkzLCA3MTE5NywgNzEyMDEsIDcxMjA1LCA3MTIwOSwgNzEyMTMsIDcxMjE3LCAKKyAgICA3MTIyMSwgNzEyMjUsIDcxMjI5LCA3MTIzMywgNzEyMzcsIDcxMjQxLCA3MTI0NSwgNzEyNDksIDcxMjUzLCA3MTI1NywgCisgICAgNzEyNjEsIDcxMjY1LCA3MTI2OSwgNzEyNzMsIDcxMjc3LCA3MTI4MSwgNzEyODUsIDcxMjg5LCA3MTI5MywgNzEyOTcsIAorICAgIDcxMzAxLCA3MTMwNSwgNzEzMDksIDcxMzEzLCA3MTMxNywgNzEzMjEsIDcxMzI1LCA3MTMyOSwgNzEzMzMsIDcxMzM3LCAKKyAgICA3MTM0MSwgNzEzNDUsIDcxMzQ5LCA3MTM1MywgNzEzNTcsIDcxMzYxLCA3MTM2NSwgNzEzNjksIDcxMzczLCA3MTM3NywgCisgICAgNzEzODEsIDcxMzg1LCA3MTM4OSwgNzEzOTMsIDcxMzk3LCA3MTQwMSwgNzE0MDUsIDcxNDA5LCA3MTQxMywgNzE0MTcsIAorICAgIDcxNDIxLCA3MTQyNSwgNzE0MjksIDcxNDMzLCA3MTQzNywgNzE0NDEsIDcxNDQ1LCA3MTQ0OSwgNzE0NTMsIDcxNDU3LCAKKyAgICA3MTQ2MSwgNzE0NjUsIDcxNDY5LCA3MTQ3MywgNzE0NzcsIDcxNDgxLCA3MTQ4NSwgNzE0ODksIDcxNDkzLCA3MTQ5NywgCisgICAgNzE1MDEsIDcxNTA1LCA3MTUwOSwgNzE1MTMsIDcxNTE3LCA3MTUyMSwgNzE1MjUsIDcxNTI5LCA3MTUzMywgNzE1MzcsIAorICAgIDcxNTQxLCA3MTU0NSwgNzE1NDksIDcxNTUzLCA3MTU1NywgNzE1NjEsIDcxNTY1LCA3MTU2OSwgNzE1NzMsIDcxNTc3LCAKKyAgICA3MTU4MSwgNzE1ODUsIDcxNTg5LCA3MTU5MywgNzE1OTcsIDcxNjAxLCA3MTYwNSwgNzE2MDksIDcxNjEzLCA3MTYxNywgCisgICAgNzE2MjEsIDcxNjI1LCA3MTYyOSwgNzE2MzMsIDcxNjM3LCA3MTY0MSwgNzE2NDUsIDcxNjQ5LCA3MTY1MywgNzE2NTcsIAorICAgIDcxNjYxLCA3MTY2NSwgNzE2NjksIDcxNjczLCA3MTY3NywgNzE2ODEsIDcxNjg1LCA3MTY4OSwgNzE2OTMsIDcxNjk3LCAKKyAgICA3MTcwMSwgNzE3MDUsIDcxNzA5LCA3MTcxMywgNzE3MTcsIDcxNzIxLCA3MTcyNSwgNzE3MjksIDcxNzMzLCA3MTczNywgCisgICAgNzE3NDEsIDcxNzQ1LCA3MTc0OSwgNzE3NTMsIDcxNzU3LCA3MTc2MSwgNzE3NjUsIDcxNzY5LCA3MTc3MywgNzE3NzcsIAorICAgIDcxNzgxLCA3MTc4NSwgNzE3ODksIDcxNzkzLCA3MTc5NywgNzE4MDEsIDcxODA1LCA3MTgwOSwgNzE4MTMsIDcxODE3LCAKKyAgICA3MTgyMSwgNzE4MjUsIDcxODI5LCA3MTgzMywgNzE4MzcsIDcxODQxLCA3MTg0NSwgNzE4NDksIDcxODUzLCA3MTg1NywgCisgICAgNzE4NjEsIDcxODY1LCA3MTg2OSwgNzE4NzMsIDcxODc3LCA3MTg4MSwgNzE4ODUsIDcxODg5LCA3MTg5MywgMCwgMCwgMCwgCisgICAgNzE4OTcsIDcxOTAxLCA3MTkwNSwgNzE5MDksIDcxOTEzLCA3MTkxNywgNzE5MjEsIDcxOTI1LCA3MTkyOSwgNzE5MzMsIAorICAgIDcxOTM3LCA3MTk0MSwgNzE5NDUsIDcxOTQ5LCA3MTk1MywgNzE5NTcsIDcxOTYxLCA3MTk2NSwgNzE5NjksIDcxOTczLCAKKyAgICA3MTk3NywgNzE5ODEsIDcxOTg1LCA3MTk4OSwgNzE5OTMsIDcxOTk3LCA3MjAwMSwgNzIwMDUsIDcyMDA5LCA3MjAxMywgCisgICAgNzIwMTcsIDcyMDIxLCA3MjAyNSwgNzIwMjksIDcyMDMzLCA3MjAzNywgNzIwNDEsIDcyMDQ1LCA3MjA0OSwgNzIwNTMsIAorICAgIDcyMDU3LCA3MjA2MSwgNzIwNjUsIDcyMDY5LCA3MjA3MywgNzIwNzcsIDcyMDgxLCA3MjA4NSwgNzIwODksIDcyMDkzLCAKKyAgICA3MjA5NywgNzIxMDEsIDcyMTA1LCA3MjEwOSwgNzIxMTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcyMTE3LCAKKyAgICA3MjEyMiwgNzIxMjYsIDcyMTMxLCA3MjEzNiwgNzIxNDEsIDcyMTQ2LCA3MjE1MSwgNzIxNTUsIDcyMTYwLCA3MjE2NSwgCisgICAgNzIxNzAsIDcyMTc1LCA3MjE4MCwgNzIxODUsIDcyMTkwLCA3MjE5NCwgNzIxOTgsIDcyMjAyLCA3MjIwNywgNzIyMTIsIAorICAgIDcyMjE3LCA3MjIyMiwgNzIyMjYsIDcyMjMxLCA3MjIzNiwgNzIyNDEsIDcyMjQ2LCA3MjI1MSwgNzIyNTUsIDcyMjYwLCAKKyAgICA3MjI2NCwgNzIyNjksIDcyMjczLCA3MjI3OCwgNzIyODIsIDcyMjg2LCA3MjI5MCwgNzIyOTUsIDcyMzAwLCA3MjMwNSwgCisgICAgNzIzMTMsIDcyMzIxLCA3MjMyOSwgNzIzMzcsIDcyMzQ0LCA3MjM1MiwgNzIzNTgsIDcyMzY2LCA3MjM3MCwgNzIzNzQsIAorICAgIDcyMzc4LCA3MjM4MiwgNzIzODYsIDcyMzkwLCA3MjM5NCwgNzIzOTgsIDcyNDAyLCA3MjQwNiwgNzI0MTAsIDcyNDE0LCAKKyAgICA3MjQxOCwgNzI0MjIsIDcyNDI2LCA3MjQzMCwgNzI0MzQsIDcyNDM4LCA3MjQ0MiwgNzI0NDYsIDcyNDUwLCA3MjQ1NCwgCisgICAgNzI0NTgsIDcyNDYyLCA3MjQ2NiwgNzI0NzAsIDcyNDc0LCA3MjQ3OCwgNzI0ODIsIDcyNDg2LCA3MjQ5MCwgNzI0OTQsIAorICAgIDcyNDk4LCA3MjUwMiwgNzI1MDYsIDcyNTEwLCA3MjUxMywgNzI1MTcsIDcyNTIxLCA3MjUyNSwgNzI1MjksIDcyNTMzLCAKKyAgICA3MjUzNywgNzI1NDEsIDcyNTQ1LCA3MjU0OSwgNzI1NTMsIDcyNTU3LCA3MjU2MSwgNzI1NjUsIDcyNTY5LCA3MjU3MywgCisgICAgNzI1NzcsIDcyNTgxLCA3MjU4NSwgNzI1ODksIDcyNTkzLCA3MjU5NywgNzI2MDEsIDcyNjA1LCA3MjYwOSwgNzI2MTMsIAorICAgIDcyNjE3LCA3MjYyMSwgNzI2MjUsIDcyNjI5LCA3MjYzMywgNzI2MzcsIDcyNjQxLCA3MjY0NSwgNzI2NDksIDcyNjUzLCAKKyAgICA3MjY1NywgNzI2NjAsIDcyNjY0LCA3MjY2OCwgNzI2NzEsIDcyNjc1LCA3MjY3OSwgNzI2ODMsIDcyNjg2LCA3MjY5MCwgCisgICAgNzI2OTQsIDcyNjk4LCA3MjcwMiwgNzI3MDYsIDcyNzEwLCA3MjcxNCwgNzI3MTgsIDcyNzIyLCA3MjcyNiwgNzI3MzAsIAorICAgIDcyNzM0LCA3MjczOCwgNzI3NDEsIDcyNzQ1LCA3Mjc0OSwgNzI3NTMsIDcyNzU3LCA3Mjc2MSwgNzI3NjUsIDcyNzY5LCAKKyAgICA3Mjc3MywgNzI3NzcsIDcyNzgxLCA3Mjc4NCwgNzI3ODcsIDcyNzkxLCA3Mjc5NSwgNzI3OTksIDcyODAyLCA3MjgwNSwgCisgICAgNzI4MDksIDcyODEzLCA3MjgxNywgNzI4MjEsIDcyODI1LCA3MjgyOSwgNzI4MzMsIDcyODM3LCA3Mjg0MSwgNzI4NDUsIAorICAgIDcyODQ5LCA3Mjg1MywgNzI4NTcsIDcyODYxLCA3Mjg2NSwgNzI4NjksIDcyODczLCA3Mjg3NywgNzI4ODEsIDcyODg1LCAKKyAgICA3Mjg4OSwgNzI4OTMsIDcyODk3LCA3MjkwMSwgNzI5MDUsIDcyOTA5LCA3MjkxMywgNzI5MTcsIDcyOTIxLCA3MjkyNSwgCisgICAgNzI5MjksIDcyOTMzLCA3MjkzNywgNzI5NDEsIDcyOTQ1LCA3Mjk0OSwgNzI5NTMsIDcyOTU2LCA3Mjk2MCwgNzI5NjQsIAorICAgIDcyOTY4LCA3Mjk3MiwgNzI5NzYsIDcyOTgwLCA3Mjk4NCwgNzI5ODgsIDcyOTkyLCA3Mjk5NiwgNzMwMDAsIDczMDA0LCAKKyAgICA3MzAwOCwgNzMwMTIsIDczMDE2LCA3MzAyMCwgNzMwMjQsIDczMDI4LCA3MzAzMiwgNzMwMzYsIDczMDQwLCA3MzA0NCwgCisgICAgNzMwNDgsIDczMDUyLCA3MzA1NiwgNzMwNjAsIDczMDY0LCA3MzA2OCwgNzMwNzIsIDczMDc2LCA3MzA4MCwgNzMwODQsIAorICAgIDczMDg4LCA3MzA5MiwgNzMwOTYsIDczMTAwLCA3MzEwMywgNzMxMDcsIDczMTExLCA3MzExNSwgNzMxMTksIDczMTIzLCAKKyAgICA3MzEyNywgNzMxMzEsIDczMTM1LCA3MzEzOSwgNzMxNDMsIDczMTQ3LCA3MzE1MSwgNzMxNTUsIDczMTU5LCA3MzE2MywgCisgICAgNzMxNjcsIDczMTcwLCA3MzE3NCwgNzMxNzgsIDczMTgyLCA3MzE4NiwgNzMxOTAsIDczMTk0LCA3MzE5OCwgNzMyMDIsIAorICAgIDczMjA2LCA3MzIxMCwgNzMyMTQsIDczMjE4LCA3MzIyMiwgNzMyMjYsIDczMjMwLCA3MzIzNCwgNzMyMzgsIDczMjQyLCAKKyAgICA3MzI0NiwgNzMyNTAsIDczMjU0LCA3MzI1NywgNzMyNjEsIDczMjY1LCA3MzI2OSwgNzMyNzMsIDczMjc3LCA3MzI4MSwgCisgICAgNzMyODUsIDczMjg5LCA3MzI5MywgNzMyOTcsIDczMzAxLCA3MzMwNSwgNzMzMDksIDczMzEzLCA3MzMxNywgNzMzMjEsIAorICAgIDczMzI1LCA3MzMyOSwgNzMzMzMsIDczMzM3LCA3MzM0MSwgNzMzNDUsIDczMzQ5LCA3MzM1MywgNzMzNTcsIDczMzYxLCAKKyAgICA3MzM2NSwgNzMzNjksIDczMzczLCA3MzM3NywgNzMzODEsIDczMzg1LCA3MzM4OSwgNzMzOTMsIDczMzk3LCA3MzQwMSwgCisgICAgNzM0MDUsIDczNDA5LCA3MzQxMywgNzM0MTcsIDczNDIxLCA3MzQyNSwgNzM0MjksIDczNDMyLCA3MzQzNywgNzM0NDEsIAorICAgIDczNDQ3LCA3MzQ1MiwgNzM0NTgsIDczNDYyLCA3MzQ2NiwgNzM0NzAsIDczNDc0LCA3MzQ3OCwgNzM0ODIsIDczNDg2LCAKKyAgICA3MzQ5MCwgNzM0OTQsIDczNDk4LCA3MzUwMiwgNzM1MDYsIDczNTEwLCA3MzUxNCwgNzM1MTcsIDczNTIwLCA3MzUyMywgCisgICAgNzM1MjYsIDczNTI5LCA3MzUzMiwgNzM1MzYsIDczNTM5LCA3MzU0MywgNzM1NDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDczNTU0LCA3MzU1OSwgNzM1NjQsIDczNTY5LCA3MzU3NCwgCisgICAgNzM1ODEsIDczNTg4LCA3MzU5MywgNzM1OTgsIDczNjAzLCA3MzYwOCwgNzM2MTUsIDczNjIyLCA3MzYyOSwgNzM2MzYsIAorICAgIDczNjQzLCA3MzY1MCwgNzM2NjAsIDczNjcwLCA3MzY3NywgNzM2ODQsIDczNjkxLCA3MzY5OCwgNzM3MDQsIDczNzEwLCAKKyAgICA3MzcxOSwgNzM3MjgsIDczNzM1LCA3Mzc0MiwgNzM3NTMsIDczNzY0LCA3Mzc2OSwgNzM3NzQsIDczNzgxLCA3Mzc4OCwgCisgICAgNzM3OTUsIDczODAyLCA3MzgwOSwgNzM4MTYsIDczODIzLCA3MzgzMCwgNzM4MzYsIDczODQyLCA3Mzg0OCwgNzM4NTQsIAorICAgIDczODYxLCA3Mzg2OCwgNzM4NzMsIDczODc3LCA3Mzg4NCwgNzM4OTEsIDczODk4LCA3MzkwMiwgNzM5MDksIDczOTEzLCAKKyAgICA3MzkxOCwgNzM5MjIsIDczOTI4LCA3MzkzMywgNzM5MzksIDczOTQ0LCA3Mzk0OCwgNzM5NTIsIDczOTU1LCA3Mzk1OCwgCisgICAgNzM5NjMsIDczOTY4LCA3Mzk3MywgNzM5NzgsIDczOTgzLCA3Mzk4OCwgNzM5OTMsIDczOTk4LCA3NDAwMywgNzQwMDgsIAorICAgIDc0MDE2LCA3NDAyNCwgNzQwMjksIDc0MDM0LCA3NDAzOSwgNzQwNDQsIDc0MDQ5LCA3NDA1NCwgNzQwNTksIDc0MDY0LCAKKyAgICA3NDA2OSwgNzQwNzQsIDc0MDc5LCA3NDA4NCwgNzQwODksIDc0MDk0LCA3NDEwMCwgNzQxMDYsIDc0MTEyLCA3NDExOCwgCisgICAgNzQxMjMsIDc0MTI5LCA3NDEzMiwgNzQxMzUsIDc0MTM4LCA3NDE0MiwgNzQxNDYsIDc0MTUwLCA3NDE1NCwgNzQxNTcsIAorICAgIDc0MTYxLCA3NDE2NCwgNzQxNjcsIDc0MTcwLCA3NDE3NCwgNzQxNzgsIDc0MTgyLCA3NDE4NiwgNzQxOTAsIDc0MTk0LCAKKyAgICA3NDE5OCwgNzQyMDIsIDc0MjA2LCA3NDIxMCwgNzQyMTQsIDc0MjE4LCA3NDIyMiwgNzQyMjYsIDc0MjMwLCA3NDIzNCwgCisgICAgNzQyMzgsIDc0MjQyLCA3NDI0NiwgNzQyNTAsIDc0MjU0LCA3NDI1OCwgNzQyNjEsIDc0MjY1LCA3NDI2OSwgNzQyNzMsIAorICAgIDc0Mjc3LCA3NDI4MSwgNzQyODUsIDc0Mjg5LCA3NDI5MywgNzQyOTcsIDc0MzAxLCA3NDMwNSwgNzQzMDksIDc0MzEzLCAKKyAgICA3NDMxNywgNzQzMjEsIDc0MzI1LCA3NDMyOSwgNzQzMzMsIDc0MzM3LCA3NDM0MSwgNzQzNDUsIDc0MzQ5LCA3NDM1MywgCisgICAgNzQzNTcsIDc0MzYwLCA3NDM2NCwgNzQzNjgsIDc0MzcyLCA3NDM3NiwgNzQzODAsIDc0Mzg0LCA3NDM4OCwgNzQzOTEsIAorICAgIDc0Mzk1LCA3NDM5OSwgNzQ0MDMsIDc0NDA3LCA3NDQxMSwgNzQ0MTUsIDc0NDE5LCA3NDQyMywgNzQ0MjcsIDc0NDMxLCAKKyAgICA3NDQzNSwgNzQ0MzksIDc0NDQ0LCA3NDQ0OSwgNzQ0NTIsIDc0NDU3LCA3NDQ2MCwgNzQ0NjMsIDc0NDY2LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA3NDQ3MCwgNzQ0NzksIDc0NDg4LCA3NDQ5NywgNzQ1MDYsIDc0NTE1LCA3NDUyNCwgNzQ1MzMsIAorICAgIDc0NTQyLCA3NDU1MCwgNzQ1NTcsIDc0NTY1LCA3NDU3MiwgNzQ1ODAsIDc0NTkwLCA3NDU5OSwgNzQ2MDksIDc0NjE4LCAKKyAgICA3NDYyOCwgNzQ2MzYsIDc0NjQzLCA3NDY1MSwgNzQ2NTgsIDc0NjY2LCA3NDY3MSwgNzQ2NzYsIDc0NjgyLCA3NDY5MSwgCisgICAgNzQ2OTcsIDc0NzAzLCA3NDcxMCwgNzQ3MTksIDc0NzI3LCA3NDczNSwgNzQ3NDMsIDc0NzUwLCA3NDc1NywgNzQ3NjQsIAorICAgIDc0NzcxLCA3NDc3NiwgNzQ3ODEsIDc0Nzg2LCA3NDc5MSwgNzQ3OTYsIDc0ODAxLCA3NDgwNiwgNzQ4MTEsIDc0ODE5LCAKKyAgICA3NDgyNywgNzQ4MzMsIDc0ODM5LCA3NDg0NCwgNzQ4NDksIDc0ODU0LCA3NDg1OSwgNzQ4NjQsIDc0ODY5LCA3NDg3NCwgCisgICAgNzQ4NzksIDc0ODg4LCA3NDg5NywgNzQ5MDIsIDc0OTA3LCA3NDkxNywgNzQ5MjcsIDc0OTM0LCA3NDk0MSwgNzQ5NTAsIAorICAgIDc0OTU5LCA3NDk3MSwgNzQ5ODMsIDc0OTg5LCA3NDk5NSwgNzUwMDMsIDc1MDExLCA3NTAyMSwgNzUwMzEsIDc1MDM4LCAKKyAgICA3NTA0NSwgNzUwNTAsIDc1MDU1LCA3NTA2NywgNzUwNzksIDc1MDg3LCA3NTA5NSwgNzUxMDUsIDc1MTE1LCA3NTEyNywgCisgICAgNzUxMzksIDc1MTQ4LCA3NTE1NywgNzUxNjQsIDc1MTcxLCA3NTE3OCwgNzUxODUsIDc1MTk0LCA3NTIwMywgNzUyMDgsIAorICAgIDc1MjEzLCA3NTIyMCwgNzUyMjcsIDc1MjM0LCA3NTI0MSwgNzUyNTMsIDc1MjY1LCA3NTI3MCwgNzUyNzUsIDc1MjgwLCAKKyAgICA3NTI4NSwgNzUyOTAsIDc1Mjk1LCA3NTMwMCwgNzUzMDUsIDc1MzA5LCA3NTMxNCwgNzUzMTksIDc1MzI0LCA3NTMyOSwgCisgICAgNzUzMzQsIDc1MzQwLCA3NTM0NSwgNzUzNTAsIDc1MzU3LCA3NTM2NCwgNzUzNzEsIDc1Mzc4LCA3NTM4NSwgNzUzOTQsIAorICAgIDc1NDAzLCA3NTQwOSwgNzU0MTUsIDc1NDIxLCA3NTQyNywgNzU0MzQsIDc1NDQxLCA3NTQ0OCwgNzU0NTUsIDc1NDYyLCAKKyAgICA3NTQ2NiwgNzU0NzMsIDc1NDc4LCA3NTQ4MywgNzU0OTAsIDc1NTAzLCA3NTUwOSwgNzU1MTcsIDc1NTI1LCA3NTUzMiwgCisgICAgNzU1MzksIDc1NTQ4LCA3NTU1NywgNzU1NjQsIDc1NTcxLCA3NTU3OCwgNzU1ODUsIDc1NTkyLCA3NTU5OSwgNzU2MDYsIAorICAgIDc1NjEzLCA3NTYyMCwgNzU2MjcsIDc1NjM2LCA3NTY0NSwgNzU2NTQsIDc1NjYzLCA3NTY3MiwgNzU2ODEsIDc1NjkwLCAKKyAgICA3NTY5OSwgNzU3MDgsIDc1NzE3LCA3NTcyNCwgNzU3MzEsIDc1NzM3LCA3NTc0NSwgMCwgNzU3NTEsIDc1NzU4LCA3NTc2NSwgCisgICAgNzU3NzMsIDc1Nzc4LCA3NTc4MywgNzU3ODgsIDc1NzkzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA3NTA1NiwgNzUwNjMsIDc1MDcwLCA3NTA3NiwgNzUwODQsIDc1MDkyLCA3NTEwMCwgNzUxMDgsIDc1MTE2LCAKLSAgICA3NTEyNCwgNzUxMzAsIDc1MTM2LCA3NTE0MywgNzUxNDksIDc1MTU1LCA3NTE2MSwgNzUxNjgsIDc1MTc1LCA3NTE4MiwgCi0gICAgNzUxODksIDc1MTk2LCA3NTIwMywgNzUyMTAsIDc1MjE3LCA3NTIyNCwgNzUyMzEsIDc1MjM4LCA3NTI0NSwgNzUyNTIsIAotICAgIDc1MjU5LCA3NTI2NSwgNzUyNzIsIDc1Mjc5LCA3NTI4NiwgNzUyOTMsIDc1MzAwLCA3NTMwNywgNzUzMTQsIDc1MzIxLCAKLSAgICA3NTMyOCwgNzUzMzUsIDc1MzQyLCA3NTM0OSwgNzUzNTYsIDc1MzYzLCA3NTM3MCwgNzUzNzcsIDc1Mzg0LCA3NTM5MSwgCi0gICAgNzUzOTksIDc1NDA3LCA3NTQxNSwgNzU0MjMsIDAsIDAsIDAsIDAsIDc1NDMxLCA3NTQzOSwgNzU0NDcsIDc1NDU1LCAKLSAgICA3NTQ2MywgNzU0NzEsIDc1NDc5LCA3NTQ4NSwgNzU0OTEsIDc1NDk3LCAwLCAwLCAwLCAwLCAwLCAwLCA3NTUwMywgNzU1MDcsIAotICAgIDc1NTEyLCA3NTUxNywgNzU1MjIsIDc1NTI3LCA3NTUzMiwgNzU1MzcsIDc1NTQyLCA3NTU0NywgNzU1NTIsIDc1NTU3LCAKLSAgICA3NTU2MiwgNzU1NjYsIDc1NTcxLCA3NTU3NiwgNzU1ODAsIDc1NTg1LCA3NTU5MCwgNzU1OTUsIDc1NjAwLCA3NTYwNSwgCi0gICAgNzU2MTAsIDc1NjE1LCA3NTYxOSwgNzU2MjQsIDc1NjI5LCA3NTYzNCwgNzU2MzksIDc1NjQzLCA3NTY0NywgNzU2NTEsIAotICAgIDc1NjU1LCA3NTY1OSwgNzU2NjMsIDc1NjY4LCA3NTY3MywgNzU2NzgsIDc1NjgzLCA3NTY4OCwgNzU2OTUsIDc1NzAxLCAKLSAgICA3NTcwNiwgNzU3MTEsIDc1NzE2LCA3NTcyMSwgNzU3MjcsIDc1NzM0LCA3NTc0MCwgNzU3NDcsIDc1NzU0LCA3NTc2MSwgCi0gICAgNzU3NjYsIDc1NzczLCA3NTc3OSwgNzU3ODQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc1NzkwLCA3NTc5NSwgNzU4MDAsIAotICAgIDc1ODA0LCA3NTgwOSwgNzU4MTMsIDc1ODE4LCA3NTgyMiwgNzU4MjcsIDc1ODMyLCA3NTgzOCwgNzU4NDMsIDc1ODQ5LCAKLSAgICA3NTg1MywgNzU4NTgsIDc1ODYzLCA3NTg2NywgNzU4NzIsIDc1ODc3LCA3NTg4MSwgNzU4ODYsIDc1ODkxLCA3NTg5NiwgCi0gICAgNzU5MDEsIDc1OTA2LCA3NTkxMSwgNzU5MTYsIDc1OTIxLCA3NTkyNiwgNzU5MzEsIDc1OTM2LCA3NTk0MSwgNzU5NDYsIAotICAgIDc1OTUxLCA3NTk1NiwgNzU5NjEsIDc1OTY2LCA3NTk3MSwgNzU5NzYsIDc1OTgwLCA3NTk4NSwgNzU5OTAsIDc1OTk1LCAKLSAgICA3NTk5OSwgNzYwMDMsIDc2MDA4LCA3NjAxMywgNzYwMTgsIDc2MDIzLCA3NjAyOCwgNzYwMzMsIDc2MDM3LCA3NjA0MiwgCi0gICAgNzYwNDgsIDc2MDU0LCA3NjA1OSwgNzYwNjUsIDc2MDcwLCA3NjA3NiwgNzYwODIsIDc2MDg5LCA3NjA5NSwgNzYxMDIsIAotICAgIDc2MTA3LCA3NjExMywgNzYxMTksIDc2MTI0LCA3NjEzMCwgNzYxMzYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDc2MTQxLCA3NjE0NSwgNzYxNTAsIDc2MTU1LCA3NjE1OSwgNzYxNjMsIDc2MTY3LCA3NjE3MSwgNzYxNzUsIDc2MTc5LCAKLSAgICA3NjE4NCwgNzYxODgsIDAsIDAsIDAsIDAsIDAsIDAsIDc2MTkzLCA3NjE5OCwgNzYyMDIsIDc2MjA2LCA3NjIxMCwgNzYyMTQsIAotICAgIDc2MjE4LCA3NjIyMiwgNzYyMjcsIDc2MjMxLCA3NjIzNiwgNzYyNDAsIDc2MjQ0LCA3NjI0OCwgNzYyNTMsIDc2MjU3LCAKLSAgICA3NjI2MiwgNzYyNjcsIDc2MjcyLCA3NjI3OCwgNzYyODQsIDc2MjkxLCA3NjI5NiwgNzYzMDEsIDc2MzA3LCA3NjMxMSwgCi0gICAgNzYzMTYsIDc2MzE5LCA3NjMyMiwgNzYzMjYsIDAsIDAsIDc2MzMxLCA3NjMzOCwgNzYzNDQsIDc2MzUwLCA3NjM1NiwgCi0gICAgNzYzNjIsIDc2MzY4LCA3NjM3NCwgNzYzODEsIDc2Mzg3LCA3NjM5NCwgNzY0MDAsIDc2NDA3LCA3NjQxNCwgNzY0MjEsIAotICAgIDc2NDI4LCA3NjQzNSwgNzY0NDIsIDc2NDQ5LCA3NjQ1NiwgNzY0NjMsIDc2NDcwLCA3NjQ3NiwgNzY0ODMsIDc2NDg5LCAKLSAgICA3NjQ5NiwgNzY1MDMsIDc2NTEwLCA3NjUxNiwgNzY1MjMsIDc2NTMwLCA3NjUzNywgNzY1NDMsIDc2NTUwLCA3NjU1NywgCi0gICAgNzY1NjMsIDc2NTcwLCA3NjU3NiwgNzY1ODMsIDc2NTkwLCA3NjU5NiwgNzY2MDIsIDc2NjA5LCA3NjYxNSwgNzY2MjIsIAotICAgIDc2NjI5LCA3NjYzOCwgNzY2NDUsIDc2NjUyLCA3NjY1NiwgNzY2NjEsIDc2NjY2LCA3NjY3MSwgNzY2NzYsIDc2NjgxLCAKLSAgICA3NjY4NSwgNzY2OTAsIDc2Njk0LCA3NjY5OSwgNzY3MDQsIDc2NzA5LCA3NjcxNCwgNzY3MTksIDc2NzI0LCA3NjcyOCwgCi0gICAgNzY3MzMsIDc2NzM3LCA3Njc0MiwgNzY3NDcsIDc2NzUyLCA3Njc1NywgNzY3NjEsIDc2NzY2LCA3Njc3MSwgNzY3NzYsIAotICAgIDc2NzgyLCA3Njc4NywgNzY3OTMsIDc2Nzk5LCA3NjgwNSwgNzY4MTEsIDc2ODE3LCA3NjgyMiwgNzY4MjgsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc2ODMyLCA3NjgzNywgNzY4NDEsIDc2ODQ1LCA3Njg0OSwgNzY4NTMsIDc2ODU3LCAKLSAgICA3Njg2MSwgNzY4NjUsIDc2ODY5LCA3Njg3MywgNzY4NzcsIDc2ODgxLCA3Njg4NSwgNzY4ODksIDc2ODkzLCA3Njg5NywgCi0gICAgNzY5MDEsIDc2OTA1LCA3NjkwOSwgNzY5MTMsIDc2OTE3LCA3NjkyMSwgNzY5MjUsIDc2OTI5LCA3NjkzMywgNzY5MzcsIAotICAgIDc2OTQxLCA3Njk0NSwgNzY5NDksIDAsIDAsIDAsIDc2OTUzLCA3Njk1NywgNzY5NjEsIDc2OTY1LCA3Njk2OSwgNzY5NzIsIAotICAgIDc2OTc4LCA3Njk4MSwgNzY5ODUsIDc2OTg4LCA3Njk5NCwgNzcwMDAsIDc3MDA4LCA3NzAxMSwgNzcwMTUsIDc3MDE4LCAKLSAgICA3NzAyMSwgNzcwMjcsIDc3MDMzLCA3NzAzNywgNzcwNDMsIDc3MDQ3LCA3NzA1MSwgNzcwNTcsIDc3MDYxLCA3NzA2NywgCi0gICAgNzcwNzMsIDc3MDc3LCA3NzA4MSwgNzcwODcsIDc3MDkxLCA3NzA5NywgNzcxMDMsIDc3MTA3LCA3NzExMywgNzcxMTcsIAotICAgIDc3MTIzLCA3NzEyNywgNzcxMzAsIDc3MTM2LCA3NzE0MCwgNzcxNDYsIDc3MTQ5LCA3NzE1MiwgNzcxNTYsIDc3MTYyLCAKLSAgICA3NzE2NiwgNzcxNzAsIDc3MTc2LCA3NzE4MiwgNzcxODYsIDc3MTg5LCA3NzE5NSwgNzcyMDAsIDc3MjA1LCA3NzIxMCwgCi0gICAgNzcyMTcsIDc3MjIyLCA3NzIyOSwgNzcyMzQsIDc3MjQxLCA3NzI0NiwgNzcyNTEsIDc3MjU2LCA3NzI2MSwgNzcyNjQsIAotICAgIDc3MjY4LCA3NzI3MiwgNzcyNzcsIDc3MjgyLCA3NzI4NywgNzcyOTIsIDc3Mjk3LCA3NzMwMiwgNzczMDcsIDc3MzEyLCAKLSAgICA3NzMxOSwgNzczMjQsIDAsIDc3MzMxLCA3NzMzNCwgNzczMzgsIDc3MzQxLCA3NzM0NCwgNzczNDcsIDc3MzUwLCA3NzM1MywgCi0gICAgNzczNTYsIDc3MzYwLCA3NzM2MywgMCwgMCwgMCwgMCwgNzczNjcsIDc3Mzc0LCA3NzM3OSwgNzczODUsIDc3MzkxLCAKLSAgICA3NzM5NywgNzc0MDMsIDc3NDA5LCA3NzQxNSwgNzc0MjIsIDc3NDI5LCA3NzQzNiwgNzc0NDMsIDc3NDUwLCA3NzQ1NywgCi0gICAgNzc0NjQsIDc3NDcxLCA3NzQ3OCwgNzc0ODUsIDc3NDkyLCA3NzQ5OCwgNzc1MDQsIDc3NTEwLCA3NzUxNiwgNzc1MjIsIAotICAgIDc3NTI4LCA3NzUzNSwgNzc1NDEsIDc3NTQ4LCA3NzU1NSwgNzc1NjIsIDc3NTY5LCA3NzU3NiwgMCwgNzc1ODMsIDc3NTg3LCAKLSAgICA3NzU5MSwgNzc1OTUsIDc3NTk5LCA3NzYwNCwgNzc2MDgsIDc3NjEyLCA3NzYxNywgNzc2MjIsIDc3NjI3LCA3NzYzMiwgCi0gICAgNzc2MzcsIDc3NjQyLCA3NzY0NywgNzc2NTIsIDc3NjU3LCA3NzY2MiwgNzc2NjcsIDc3NjcyLCA3NzY3NywgNzc2ODIsIAotICAgIDc3Njg3LCA3NzY5MiwgNzc2OTcsIDc3NzAyLCA3NzcwNywgNzc3MTEsIDc3NzE2LCA3NzcyMSwgNzc3MjYsIDc3NzMxLCAKLSAgICA3NzczNiwgNzc3NDAsIDc3NzQ1LCA3Nzc0OSwgNzc3NTQsIDc3NzU5LCA3Nzc2NCwgNzc3NjksIDc3Nzc0LCA3Nzc3OCwgCi0gICAgNzc3ODQsIDc3Nzg5LCA3Nzc5NSwgNzc4MDEsIDc3ODA2LCA3NzgxMiwgNzc4MTcsIDc3ODIzLCA3NzgyOSwgNzc4MzUsIAotICAgIDc3ODQwLCA3Nzg0NiwgNzc4NTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc3ODU4LCA3Nzg2NCwgNzc4NzAsIAotICAgIDc3ODc2LCA3Nzg4MywgNzc4ODksIDc3ODk1LCA3NzkwMSwgNzc5MDcsIDc3OTEzLCA3NzkxOCwgNzc5MjMsIDc3OTI5LCAKLSAgICA3NzkzNiwgMCwgMCwgNzc5NDMsIDc3OTQ4LCA3Nzk1MiwgNzc5NTYsIDc3OTYwLCA3Nzk2NCwgNzc5NjgsIDc3OTcyLCAKLSAgICA3Nzk3NywgNzc5ODEsIDAsIDAsIDc3OTg2LCA3Nzk5MiwgNzc5OTgsIDc4MDA1LCA3ODAxMywgNzgwMTksIDc4MDI1LCAKLSAgICA3ODAzMSwgNzgwMzcsIDc4MDQzLCA3ODA0OSwgNzgwNTUsIDc4MDYxLCA3ODA2NywgNzgwNzMsIDc4MDc5LCA3ODA4NSwgCi0gICAgNzgwOTEsIDc4MDk2LCA3ODEwMiwgNzgxMDgsIDc4MTE1LCA3ODEyMSwgNzgxMjcsIDc4MTMzLCA3ODE0MCwgNzgxNDcsIAotICAgIDc4MTU0LCA3ODE2MCwgNzgxNjUsIDc4MTcwLCA3ODE3NiwgNzgxODQsIDc4MTkxLCA3ODE5OCwgNzgyMDYsIDc4MjE0LCAKLSAgICA3ODIyMSwgNzgyMjgsIDc4MjM1LCA3ODI0MiwgNzgyNDksIDc4MjU2LCA3ODI2MywgNzgyNzAsIDc4Mjc3LCA3ODI4NCwgCi0gICAgNzgyOTEsIDc4Mjk4LCA3ODMwNSwgNzgzMTIsIDc4MzE5LCA3ODMyNiwgNzgzMzMsIDc4MzQwLCA3ODM0NywgNzgzNTQsIAotICAgIDc4MzYwLCA3ODM2NiwgNzgzNzMsIDc4MzgwLCA3ODM4NywgNzgzOTQsIDc4NDAxLCA3ODQwOCwgNzg0MTUsIDc4NDIyLCAKLSAgICA3ODQyOSwgNzg0MzYsIDc4NDQzLCA3ODQ1MCwgNzg0NTcsIDc4NDY0LCA3ODQ3MSwgNzg0NzgsIDc4NDg1LCA3ODQ5MiwgCi0gICAgNzg0OTksIDc4NTA2LCA3ODUxMywgNzg1MjAsIDc4NTI3LCA3ODUzNCwgNzg1NDAsIDc4NTQ2LCA3ODU1MywgNzg1NTksIAotICAgIDc4NTY0LCA3ODU3MCwgNzg1NzUsIDc4NTgwLCA3ODU4NSwgNzg1OTIsIDc4NTk4LCA3ODYwNCwgNzg2MTAsIDc4NjE2LCAKLSAgICA3ODYyMiwgNzg2MjgsIDc4NjM0LCA3ODY0MiwgNzg2NTAsIDc4NjU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3ODY2NiwgNzg2NzIsIDc4Njc4LCA3ODY4NCwgCi0gICAgNzg2OTIsIDc4NzAwLCA3ODcwNiwgNzg3MTIsIDc4NzE5LCA3ODcyNiwgNzg3MzMsIDc4NzQwLCA3ODc0NywgNzg3NTQsIAotICAgIDc4NzYxLCA3ODc2OCwgNzg3NzUsIDc4NzgzLCA3ODc5MSwgNzg3OTksIDc4ODA3LCA3ODgxNSwgNzg4MjEsIDc4ODI5LCAKLSAgICA3ODgzNSwgNzg4NDMsIDc4ODUyLCA3ODg2MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzg4NjYsIDc4ODcwLCAKLSAgICA3ODg3NCwgNzg4NzgsIDc4ODgyLCA3ODg4NiwgMCwgMCwgNzg4OTAsIDc4ODk0LCA3ODg5OCwgNzg5MDIsIDc4OTA2LCAKLSAgICA3ODkxMCwgMCwgMCwgNzg5MTQsIDc4OTE4LCA3ODkyMiwgNzg5MjYsIDc4OTMwLCA3ODkzNCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNzg5MzgsIDc4OTQyLCA3ODk0NiwgNzg5NTAsIDc4OTU0LCA3ODk1OCwgNzg5NjIsIDAsIDc4OTY2LCAKLSAgICA3ODk3MCwgNzg5NzQsIDc4OTc4LCA3ODk4MiwgNzg5ODYsIDc4OTkwLCAwLCA3ODk5NCwgNzkwMDEsIDc5MDA3LCA3OTAxMywgCi0gICAgNzkwMTksIDc5MDI2LCA3OTAzMywgNzkwNDIsIDc5MDUzLCA3OTA2MywgNzkwNzIsIDc5MDgwLCA3OTA4OCwgNzkwOTYsIAotICAgIDc5MTAyLCA3OTExMCwgNzkxMTcsIDc5MTI0LCA3OTEzMywgNzkxNDQsIDc5MTUyLCA3OTE2MiwgNzkxNjgsIDc5MTc4LCAKLSAgICA3OTE4NywgNzkxOTIsIDc5MjAwLCA3OTIwOSwgNzkyMTQsIDc5MjIzLCA3OTIzMCwgNzkyNDAsIDc5MjUyLCA3OTI1NywgCi0gICAgNzkyNjQsIDc5MjcxLCA3OTI3NiwgNzkyODYsIDc5Mjk2LCA3OTMwNiwgNzkzMTYsIDc5MzMxLCA3OTM0NCwgNzkzNTUsIAotICAgIDc5MzYzLCA3OTM2OCwgNzkzNzksIDc5Mzg4LCA3OTM5NSwgNzk0MDIsIDc5NDA4LCA3OTQxNCwgNzk0MTksIDc5NDI2LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3OTQzMiwgNzk0MzYsIDc5NDQwLCA3OTQ0NCwgNzk0NDgsIDc5NDUyLCAKLSAgICA3OTQ1NywgNzk0NjIsIDc5NDY2LCA3OTQ3MSwgNzk0NzYsIDc5NDgxLCA3OTQ4NiwgNzk0OTEsIDc5NDk1LCA3OTUwMCwgCi0gICAgNzk1MDUsIDc5NTEwLCA3OTUxNSwgNzk1MjAsIDc5NTI1LCA3OTUzMCwgNzk1MzUsIDc5NTQwLCA3OTU0NSwgNzk1NTAsIAotICAgIDc5NTU0LCA3OTU1OSwgNzk1NjQsIDc5NTY5LCA3OTU3NCwgNzk1NzksIDc5NTg0LCA3OTU4OSwgNzk1OTQsIDc5NTk5LCAKLSAgICA3OTYwNCwgNzk2MDksIDc5NjE0LCA3OTYxOSwgNzk2MjQsIDc5NjI5LCA3OTYzNCwgNzk2MzksIDc5NjQ0LCA3OTY0OSwgCi0gICAgNzk2NTMsIDc5NjU4LCA3OTY2MywgNzk2NjgsIDc5NjczLCA3OTY3OCwgNzk2ODMsIDc5Njg4LCA3OTY5MywgNzk2OTgsIAotICAgIDc5NzAzLCA3OTcwOCwgNzk3MTMsIDc5NzE4LCA3OTcyMywgNzk3MjgsIDc5NzMzLCA3OTczOCwgNzk3NDMsIDc5NzQ4LCAKLSAgICA3OTc1MywgNzk3NTgsIDc5NzYzLCA3OTc2OCwgNzk3NzMsIDc5Nzc4LCA3OTc4MywgNzk3ODgsIDc5NzkzLCA3OTc5OCwgCi0gICAgNzk4MDMsIDc5ODA4LCA3OTgxMywgNzk4MTgsIDc5ODIyLCA3OTgyOSwgNzk4MzYsIDc5ODQzLCA3OTg1MCwgNzk4NTYsIAotICAgIDc5ODYzLCA3OTg3MCwgNzk4NzcsIDc5ODg0LCA3OTg5MSwgNzk4OTgsIDc5OTA1LCA3OTkxMiwgNzk5MTksIDc5OTI2LCAKLSAgICA3OTkzMiwgNzk5MzksIDc5OTQ2LCA3OTk1MywgNzk5NjAsIDc5OTY3LCA3OTk3NCwgNzk5ODEsIDc5OTg4LCA3OTk5NSwgCi0gICAgODAwMDIsIDgwMDA5LCA4MDAxOCwgODAwMjcsIDgwMDM2LCA4MDA0NSwgODAwNTQsIDgwMDYzLCA4MDA3MiwgODAwODEsIAotICAgIDgwMDg5LCA4MDA5NywgODAxMDUsIDgwMTEzLCA4MDEyMSwgODAxMjksIDgwMTM3LCA4MDE0NSwgODAxNTEsIDgwMTU5LCAwLCAKLSAgICAwLCA4MDE2NywgODAxNzQsIDgwMTgwLCA4MDE4NiwgODAxOTIsIDgwMTk4LCA4MDIwNCwgODAyMTAsIDgwMjE3LCA4MDIyMywgCisgICAgMCwgMCwgNzU3OTgsIDc1ODA1LCA3NTgxMiwgNzU4MTgsIDc1ODI2LCA3NTgzNCwgNzU4NDIsIDc1ODUwLCA3NTg1OCwgCisgICAgNzU4NjYsIDc1ODcyLCA3NTg3OCwgNzU4ODUsIDc1ODkxLCA3NTg5NywgNzU5MDMsIDc1OTEwLCA3NTkxNywgNzU5MjQsIAorICAgIDc1OTMxLCA3NTkzOCwgNzU5NDUsIDc1OTUyLCA3NTk1OSwgNzU5NjYsIDc1OTczLCA3NTk4MCwgNzU5ODcsIDc1OTk0LCAKKyAgICA3NjAwMSwgNzYwMDcsIDc2MDE0LCA3NjAyMSwgNzYwMjgsIDc2MDM1LCA3NjA0MiwgNzYwNDksIDc2MDU2LCA3NjA2MywgCisgICAgNzYwNzAsIDc2MDc3LCA3NjA4NCwgNzYwOTEsIDc2MDk4LCA3NjEwNSwgNzYxMTIsIDc2MTE5LCA3NjEyNiwgNzYxMzMsIAorICAgIDc2MTQxLCA3NjE0OSwgNzYxNTcsIDc2MTY1LCAwLCAwLCAwLCAwLCA3NjE3MywgNzYxODEsIDc2MTg5LCA3NjE5NywgCisgICAgNzYyMDUsIDc2MjEzLCA3NjIyMSwgNzYyMjcsIDc2MjMzLCA3NjIzOSwgMCwgMCwgMCwgMCwgMCwgMCwgNzYyNDUsIDc2MjQ5LCAKKyAgICA3NjI1NCwgNzYyNTksIDc2MjY0LCA3NjI2OSwgNzYyNzQsIDc2Mjc5LCA3NjI4NCwgNzYyODksIDc2Mjk0LCA3NjI5OSwgCisgICAgNzYzMDMsIDc2MzA3LCA3NjMxMiwgNzYzMTcsIDc2MzIxLCA3NjMyNiwgNzYzMzEsIDc2MzM2LCA3NjM0MSwgNzYzNDYsIAorICAgIDc2MzUxLCA3NjM1NiwgNzYzNjAsIDc2MzY1LCA3NjM2OSwgNzYzNzQsIDc2Mzc5LCA3NjM4MywgNzYzODcsIDc2MzkxLCAKKyAgICA3NjM5NSwgNzYzOTksIDc2NDAzLCA3NjQwOCwgNzY0MTMsIDc2NDE4LCA3NjQyMywgNzY0MjgsIDc2NDM1LCA3NjQ0MSwgCisgICAgNzY0NDYsIDc2NDUxLCA3NjQ1NiwgNzY0NjEsIDc2NDY3LCA3NjQ3NCwgNzY0ODAsIDc2NDg3LCA3NjQ5NCwgNzY1MDEsIAorICAgIDc2NTA2LCA3NjUxMywgNzY1MTksIDc2NTI0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NjUzMCwgNzY1MzUsIDc2NTQwLCAKKyAgICA3NjU0NCwgNzY1NDksIDc2NTUzLCA3NjU1OCwgNzY1NjIsIDc2NTY3LCA3NjU3MiwgNzY1NzgsIDc2NTgzLCA3NjU4OSwgCisgICAgNzY1OTMsIDc2NTk4LCA3NjYwMywgNzY2MDcsIDc2NjEyLCA3NjYxNywgNzY2MjEsIDc2NjI2LCA3NjYzMSwgNzY2MzYsIAorICAgIDc2NjQxLCA3NjY0NiwgNzY2NTEsIDc2NjU2LCA3NjY2MSwgNzY2NjYsIDc2NjcxLCA3NjY3NiwgNzY2ODEsIDc2Njg2LCAKKyAgICA3NjY5MSwgNzY2OTYsIDc2NzAxLCA3NjcwNiwgNzY3MTEsIDc2NzE1LCA3NjcxOSwgNzY3MjQsIDc2NzI5LCA3NjczNCwgCisgICAgNzY3MzgsIDc2NzQyLCA3Njc0NywgNzY3NTEsIDc2NzU2LCA3Njc2MSwgNzY3NjYsIDc2NzcxLCA3Njc3NSwgNzY3ODAsIAorICAgIDc2Nzg2LCA3Njc5MiwgNzY3OTcsIDc2ODAzLCA3NjgwOCwgNzY4MTQsIDc2ODIwLCA3NjgyNywgNzY4MzMsIDc2ODQwLCAKKyAgICA3Njg0NSwgNzY4NTEsIDc2ODU3LCA3Njg2MiwgNzY4NjgsIDc2ODc0LCA3Njg3OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNzY4ODQsIDc2ODg4LCA3Njg5MywgNzY4OTgsIDc2OTAyLCA3NjkwNiwgNzY5MTAsIDc2OTE0LCA3NjkxOCwgNzY5MjIsIAorICAgIDc2OTI3LCA3NjkzMSwgMCwgMCwgMCwgMCwgMCwgMCwgNzY5MzYsIDc2OTQxLCA3Njk0NSwgNzY5NDksIDc2OTUzLCA3Njk1NywgCisgICAgNzY5NjEsIDc2OTY1LCA3Njk3MCwgNzY5NzQsIDc2OTc5LCA3Njk4MywgNzY5ODcsIDc2OTkxLCA3Njk5NSwgNzY5OTksIAorICAgIDc3MDA0LCA3NzAwOSwgNzcwMTQsIDc3MDIwLCA3NzAyNiwgNzcwMzMsIDc3MDM4LCA3NzA0MywgNzcwNDksIDc3MDUzLCAKKyAgICA3NzA1OCwgNzcwNjEsIDc3MDY0LCA3NzA2OCwgMCwgMCwgNzcwNzMsIDc3MDgwLCA3NzA4NiwgNzcwOTIsIDc3MDk4LCAKKyAgICA3NzEwNCwgNzcxMTAsIDc3MTE2LCA3NzEyMywgNzcxMjksIDc3MTM2LCA3NzE0MiwgNzcxNDksIDc3MTU2LCA3NzE2MywgCisgICAgNzcxNzAsIDc3MTc3LCA3NzE4NCwgNzcxOTEsIDc3MTk4LCA3NzIwNSwgNzcyMTEsIDc3MjE3LCA3NzIyNCwgNzcyMzAsIAorICAgIDc3MjM3LCA3NzI0NCwgNzcyNTEsIDc3MjU3LCA3NzI2MywgNzcyNzAsIDc3Mjc3LCA3NzI4MywgNzcyOTAsIDc3Mjk3LCAKKyAgICA3NzMwMywgNzczMTAsIDc3MzE2LCA3NzMyMywgNzczMzAsIDc3MzM2LCA3NzM0MiwgNzczNDksIDc3MzU1LCA3NzM2MiwgCisgICAgNzczNjksIDc3Mzc4LCA3NzM4NSwgNzczOTIsIDc3Mzk2LCA3NzQwMSwgNzc0MDYsIDc3NDExLCA3NzQxNiwgNzc0MjAsIAorICAgIDc3NDI0LCA3NzQyOSwgNzc0MzMsIDc3NDM4LCA3NzQ0MywgNzc0NDgsIDc3NDUzLCA3NzQ1OCwgNzc0NjIsIDc3NDY2LCAKKyAgICA3NzQ3MSwgNzc0NzUsIDc3NDgwLCA3NzQ4NSwgNzc0OTAsIDc3NDk1LCA3NzQ5OSwgNzc1MDQsIDc3NTA5LCA3NzUxNCwgCisgICAgNzc1MjAsIDc3NTI1LCA3NzUzMSwgNzc1MzcsIDc3NTQzLCA3NzU0OSwgNzc1NTUsIDc3NTYwLCA3NzU2NiwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzc1NzAsIDc3NTc1LCA3NzU3OSwgNzc1ODMsIDc3NTg3LCA3NzU5MSwgNzc1OTUsIAorICAgIDc3NTk5LCA3NzYwMywgNzc2MDcsIDc3NjExLCA3NzYxNSwgNzc2MTksIDc3NjIzLCA3NzYyNywgNzc2MzEsIDc3NjM1LCAKKyAgICA3NzYzOSwgNzc2NDMsIDc3NjQ3LCA3NzY1MSwgNzc2NTUsIDc3NjU5LCA3NzY2MywgNzc2NjcsIDc3NjcxLCA3NzY3NSwgCisgICAgNzc2NzksIDc3NjgzLCA3NzY4NywgMCwgMCwgMCwgNzc2OTEsIDc3Njk2LCA3NzcwMSwgNzc3MDYsIDc3NzExLCA3NzcxNSwgCisgICAgNzc3MjIsIDc3NzI2LCA3NzczMSwgNzc3MzUsIDc3NzQyLCA3Nzc0OSwgNzc3NTgsIDc3NzYyLCA3Nzc2NywgNzc3NzEsIAorICAgIDc3Nzc1LCA3Nzc4MiwgNzc3ODksIDc3Nzk0LCA3NzgwMSwgNzc4MDYsIDc3ODExLCA3NzgxOCwgNzc4MjMsIDc3ODMwLCAKKyAgICA3NzgzNywgNzc4NDIsIDc3ODQ3LCA3Nzg1NCwgNzc4NTksIDc3ODY2LCA3Nzg3MywgNzc4NzgsIDc3ODg1LCA3Nzg5MCwgCisgICAgNzc4OTcsIDc3OTAxLCA3NzkwNSwgNzc5MTIsIDc3OTE3LCA3NzkyNCwgNzc5MjgsIDc3OTMyLCA3NzkzNywgNzc5NDQsIAorICAgIDc3OTQ4LCA3Nzk1MywgNzc5NjAsIDc3OTY3LCA3Nzk3MiwgNzc5NzYsIDc3OTgzLCA3Nzk4OSwgNzc5OTUsIDc4MDAxLCAKKyAgICA3ODAwOSwgNzgwMTUsIDc4MDIzLCA3ODAyOSwgNzgwMzcsIDc4MDQzLCA3ODA0OSwgNzgwNTUsIDc4MDYxLCA3ODA2NSwgCisgICAgNzgwNzAsIDc4MDc1LCA3ODA4MSwgNzgwODcsIDc4MDkzLCA3ODA5OSwgNzgxMDUsIDc4MTExLCA3ODExNywgNzgxMjMsIAorICAgIDc4MTMxLCA3ODEzNywgMCwgNzgxNDUsIDc4MTQ5LCA3ODE1NCwgNzgxNTgsIDc4MTYyLCA3ODE2NiwgNzgxNzAsIDc4MTc0LCAKKyAgICA3ODE3OCwgNzgxODMsIDc4MTg3LCAwLCAwLCAwLCAwLCA3ODE5MiwgNzgyMDAsIDc4MjA2LCA3ODIxMiwgNzgyMTgsIAorICAgIDc4MjI0LCA3ODIzMCwgNzgyMzYsIDc4MjQyLCA3ODI0OSwgNzgyNTYsIDc4MjYzLCA3ODI3MCwgNzgyNzcsIDc4Mjg0LCAKKyAgICA3ODI5MSwgNzgyOTgsIDc4MzA1LCA3ODMxMiwgNzgzMTksIDc4MzI1LCA3ODMzMSwgNzgzMzcsIDc4MzQzLCA3ODM0OSwgCisgICAgNzgzNTUsIDc4MzYyLCA3ODM2OCwgNzgzNzUsIDc4MzgyLCA3ODM4OSwgNzgzOTYsIDc4NDAzLCAwLCA3ODQxMCwgNzg0MTQsIAorICAgIDc4NDE4LCA3ODQyMiwgNzg0MjYsIDc4NDMxLCA3ODQzNSwgNzg0MzksIDc4NDQ0LCA3ODQ0OSwgNzg0NTQsIDc4NDU5LCAKKyAgICA3ODQ2NCwgNzg0NjksIDc4NDc0LCA3ODQ3OSwgNzg0ODQsIDc4NDg5LCA3ODQ5NCwgNzg0OTksIDc4NTA0LCA3ODUwOSwgCisgICAgNzg1MTQsIDc4NTE5LCA3ODUyNCwgNzg1MjgsIDc4NTMzLCA3ODUzNywgNzg1NDIsIDc4NTQ3LCA3ODU1MiwgNzg1NTcsIAorICAgIDc4NTYyLCA3ODU2NiwgNzg1NzEsIDc4NTc1LCA3ODU4MCwgNzg1ODQsIDc4NTg5LCA3ODU5NCwgNzg1OTksIDc4NjAzLCAKKyAgICA3ODYwOSwgNzg2MTQsIDc4NjIwLCA3ODYyNiwgNzg2MzEsIDc4NjM3LCA3ODY0MiwgNzg2NDgsIDc4NjU0LCA3ODY2MCwgCisgICAgNzg2NjUsIDc4NjcxLCA3ODY3NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzg2ODIsIDc4Njg4LCA3ODY5NCwgCisgICAgNzg3MDAsIDc4NzA3LCA3ODcxMywgNzg3MTksIDc4NzI1LCA3ODczMSwgNzg3MzcsIDc4NzQyLCA3ODc0NywgNzg3NTMsIAorICAgIDc4NzYwLCAwLCAwLCA3ODc2NywgNzg3NzIsIDc4Nzc2LCA3ODc4MCwgNzg3ODQsIDc4Nzg4LCA3ODc5MiwgNzg3OTYsIAorICAgIDc4ODAxLCA3ODgwNSwgMCwgMCwgNzg4MTAsIDc4ODE2LCA3ODgyMiwgNzg4MjksIDc4ODM3LCA3ODg0MywgNzg4NDksIAorICAgIDc4ODU1LCA3ODg2MSwgNzg4NjcsIDc4ODczLCA3ODg3OSwgNzg4ODUsIDc4ODkxLCA3ODg5NywgNzg5MDMsIDc4OTA4LCAKKyAgICA3ODkxNCwgNzg5MTksIDc4OTI1LCA3ODkzMSwgNzg5MzgsIDc4OTQ0LCA3ODk1MCwgNzg5NTYsIDc4OTYzLCA3ODk3MCwgCisgICAgNzg5NzcsIDc4OTgzLCA3ODk4OCwgNzg5OTMsIDc4OTk5LCA3OTAwNywgNzkwMTQsIDc5MDIxLCA3OTAyOSwgNzkwMzcsIAorICAgIDc5MDQ0LCA3OTA1MSwgNzkwNTgsIDc5MDY1LCA3OTA3MiwgNzkwNzksIDc5MDg2LCA3OTA5MywgNzkxMDAsIDc5MTA3LCAKKyAgICA3OTExNCwgNzkxMjEsIDc5MTI4LCA3OTEzNSwgNzkxNDIsIDc5MTQ5LCA3OTE1NiwgNzkxNjMsIDc5MTcwLCA3OTE3NywgCisgICAgNzkxODMsIDc5MTg5LCA3OTE5NiwgNzkyMDMsIDc5MjEwLCA3OTIxNywgNzkyMjQsIDc5MjMxLCA3OTIzOCwgNzkyNDUsIAorICAgIDc5MjUyLCA3OTI1OSwgNzkyNjYsIDc5MjczLCA3OTI4MCwgNzkyODcsIDc5Mjk0LCA3OTMwMSwgNzkzMDgsIDc5MzE1LCAKKyAgICA3OTMyMiwgNzkzMjksIDc5MzM2LCA3OTM0MywgNzkzNTAsIDc5MzU3LCA3OTM2MywgNzkzNjksIDc5Mzc2LCA3OTM4MiwgCisgICAgNzkzODcsIDc5MzkzLCA3OTM5OCwgNzk0MDMsIDc5NDA4LCA3OTQxNSwgNzk0MjEsIDc5NDI3LCA3OTQzMywgNzk0MzksIAorICAgIDc5NDQ1LCA3OTQ1MSwgNzk0NTcsIDc5NDY1LCA3OTQ3MywgNzk0ODEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc5NDg5LCA3OTQ5NSwgNzk1MDEsIDc5NTA3LCAKKyAgICA3OTUxNSwgNzk1MjMsIDc5NTI5LCA3OTUzNSwgNzk1NDIsIDc5NTQ5LCA3OTU1NiwgNzk1NjMsIDc5NTcwLCA3OTU3NywgCisgICAgNzk1ODQsIDc5NTkxLCA3OTU5OCwgNzk2MDYsIDc5NjE0LCA3OTYyMiwgNzk2MzAsIDc5NjM4LCA3OTY0NCwgNzk2NTIsIAorICAgIDc5NjU4LCA3OTY2NiwgNzk2NzUsIDc5NjgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3OTY4OSwgNzk2OTMsIAorICAgIDc5Njk3LCA3OTcwMSwgNzk3MDUsIDc5NzA5LCAwLCAwLCA3OTcxMywgNzk3MTcsIDc5NzIxLCA3OTcyNSwgNzk3MjksIAorICAgIDc5NzMzLCAwLCAwLCA3OTczNywgNzk3NDEsIDc5NzQ1LCA3OTc0OSwgNzk3NTMsIDc5NzU3LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA3OTc2MSwgNzk3NjUsIDc5NzY5LCA3OTc3MywgNzk3NzcsIDc5NzgxLCA3OTc4NSwgMCwgNzk3ODksIAorICAgIDc5NzkzLCA3OTc5NywgNzk4MDEsIDc5ODA1LCA3OTgwOSwgNzk4MTMsIDAsIDc5ODE3LCA3OTgyNCwgNzk4MzAsIDc5ODM2LCAKKyAgICA3OTg0MiwgNzk4NDksIDc5ODU2LCA3OTg2NSwgNzk4NzcsIDc5ODg3LCA3OTg5NiwgNzk5MDQsIDc5OTEyLCA3OTkyMCwgCisgICAgNzk5MjYsIDc5OTM0LCA3OTk0MSwgNzk5NDgsIDc5OTU3LCA3OTk2OCwgNzk5NzYsIDc5OTg2LCA3OTk5MiwgODAwMDIsIAorICAgIDgwMDExLCA4MDAxNiwgODAwMjQsIDgwMDMzLCA4MDAzOCwgODAwNDcsIDgwMDU0LCA4MDA2NCwgODAwNzYsIDgwMDgxLCAKKyAgICA4MDA4OCwgODAwOTUsIDgwMTAwLCA4MDExMCwgODAxMjAsIDgwMTMwLCA4MDE0MCwgODAxNTUsIDgwMTY4LCA4MDE3OSwgCisgICAgODAxODcsIDgwMTkyLCA4MDIwNCwgODAyMTMsIDgwMjIwLCA4MDIyNywgODAyMzMsIDgwMjM5LCA4MDI0NCwgODAyNTEsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgwMjU3LCA4MDI2MSwgODAyNjUsIDgwMjY5LCA4MDI3MywgODAyNzcsIAorICAgIDgwMjgyLCA4MDI4NywgODAyOTEsIDgwMjk2LCA4MDMwMSwgODAzMDYsIDgwMzExLCA4MDMxNiwgODAzMjAsIDgwMzI1LCAKKyAgICA4MDMzMCwgODAzMzUsIDgwMzQwLCA4MDM0NSwgODAzNDksIDgwMzU0LCA4MDM1OSwgODAzNjQsIDgwMzY5LCA4MDM3NCwgCisgICAgODAzNzgsIDgwMzgzLCA4MDM4OCwgODAzOTMsIDgwMzk4LCA4MDQwMiwgODA0MDcsIDgwNDEyLCA4MDQxNywgODA0MjIsIAorICAgIDgwNDI3LCA4MDQzMiwgODA0MzcsIDgwNDQyLCA4MDQ0NywgODA0NTIsIDgwNDU3LCA4MDQ2MiwgODA0NjcsIDgwNDcyLCAKKyAgICA4MDQ3NywgODA0ODIsIDgwNDg3LCA4MDQ5MiwgODA0OTcsIDgwNTAyLCA4MDUwNywgODA1MTIsIDgwNTE3LCA4MDUyMiwgCisgICAgODA1MjcsIDgwNTMyLCA4MDUzNywgODA1NDIsIDgwNTQ3LCA4MDU1MiwgODA1NTcsIDgwNTYyLCA4MDU2NywgODA1NzIsIAorICAgIDgwNTc3LCA4MDU4MiwgODA1ODcsIDgwNTkyLCA4MDU5NywgODA2MDIsIDgwNjA3LCA4MDYxMiwgODA2MTcsIDgwNjIyLCAKKyAgICA4MDYyNywgODA2MzIsIDgwNjM3LCA4MDY0MiwgODA2NDYsIDgwNjUzLCA4MDY2MCwgODA2NjcsIDgwNjc0LCA4MDY4MCwgCisgICAgODA2ODYsIDgwNjkzLCA4MDcwMCwgODA3MDcsIDgwNzE0LCA4MDcyMSwgODA3MjgsIDgwNzM1LCA4MDc0MiwgODA3NDksIAorICAgIDgwNzU1LCA4MDc2MiwgODA3NjksIDgwNzc2LCA4MDc4MywgODA3OTAsIDgwNzk3LCA4MDgwNCwgODA4MTEsIDgwODE4LCAKKyAgICA4MDgyNSwgODA4MzIsIDgwODQxLCA4MDg1MCwgODA4NTksIDgwODY4LCA4MDg3NywgODA4ODYsIDgwODk1LCA4MDkwNCwgCisgICAgODA5MTIsIDgwOTIwLCA4MDkyOCwgODA5MzYsIDgwOTQ0LCA4MDk1MiwgODA5NjAsIDgwOTY4LCA4MDk3NCwgODA5ODIsIDAsIAorICAgIDAsIDgwOTkwLCA4MDk5NywgODEwMDMsIDgxMDA5LCA4MTAxNSwgODEwMjEsIDgxMDI3LCA4MTAzMywgODEwNDAsIDgxMDQ2LCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKQEAgLTE4MzAwLDYxOCArMTk0MTksNjM0IEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODAyMzAsIDgwMjM0LCA4MDIzOCwgODAyNDIsIAotICAgIDgwMjQ2LCA4MDI1MCwgODAyNTQsIDgwMjU4LCA4MDI2MiwgODAyNjYsIDgwMjcwLCA4MDI3NCwgODAyNzgsIDgwMjgyLCAKLSAgICA4MDI4NiwgODAyOTAsIDgwMjk0LCA4MDI5OCwgODAzMDIsIDgwMzA2LCA4MDMxMCwgODAzMTQsIDgwMzE4LCAwLCAwLCAwLCAKLSAgICAwLCA4MDMyMiwgODAzMjYsIDgwMzMwLCA4MDMzNCwgODAzMzgsIDgwMzQyLCA4MDM0NiwgODAzNTAsIDgwMzU0LCA4MDM1OCwgCi0gICAgODAzNjIsIDgwMzY2LCA4MDM3MCwgODAzNzQsIDgwMzc4LCA4MDM4MiwgODAzODYsIDgwMzkwLCA4MDM5NCwgODAzOTgsIAotICAgIDgwNDAyLCA4MDQwNiwgODA0MTAsIDgwNDE0LCA4MDQxOCwgODA0MjIsIDgwNDI2LCA4MDQzMCwgODA0MzQsIDgwNDM4LCAKLSAgICA4MDQ0MiwgODA0NDYsIDgwNDUwLCA4MDQ1NCwgODA0NTgsIDgwNDYyLCA4MDQ2NiwgODA0NzAsIDgwNDc0LCA4MDQ3OCwgCi0gICAgODA0ODIsIDgwNDg2LCA4MDQ5MCwgODA0OTQsIDgwNDk4LCA4MDUwMiwgODA1MDYsIDgwNTEwLCA4MDUxNCwgMCwgMCwgMCwgCi0gICAgMCwgODA1MTgsIDgwNTIyLCA4MDUyNiwgODA1MzAsIDgwNTM0LCA4MDUzOCwgODA1NDIsIDgwNTQ2LCA4MDU1MCwgODA1NTQsIAotICAgIDgwNTU4LCA4MDU2MiwgODA1NjYsIDgwNTcwLCA4MDU3NCwgODA1NzgsIDgwNTgyLCA4MDU4NiwgODA1OTAsIDgwNTk0LCAKLSAgICA4MDU5OCwgODA2MDIsIDgwNjA2LCA4MDYxMCwgODA2MTQsIDgwNjE4LCA4MDYyMiwgODA2MjYsIDgwNjMwLCA4MDYzNCwgCi0gICAgODA2MzgsIDgwNjQyLCA4MDY0NiwgODA2NTAsIDgwNjU0LCA4MDY1OCwgODA2NjIsIDgwNjY2LCA4MDY3MCwgODA2NzQsIAotICAgIDgwNjc4LCA4MDY4MiwgODA2ODYsIDgwNjkwLCA4MDY5NCwgODA2OTgsIDgwNzAyLCA4MDcwNiwgODA3MTAsIDgwNzE0LCAKLSAgICA4MDcxOCwgODA3MjIsIDgwNzI2LCA4MDczMCwgODA3MzQsIDgwNzM4LCA4MDc0MiwgODA3NDYsIDgwNzUwLCA4MDc1NCwgCi0gICAgODA3NTgsIDgwNzYyLCA4MDc2NiwgODA3NzAsIDgwNzc0LCA4MDc3OCwgODA3ODIsIDgwNzg2LCA4MDc5MCwgODA3OTQsIAotICAgIDgwNzk4LCA4MDgwMiwgODA4MDYsIDgwODEwLCA4MDgxNCwgODA4MTgsIDgwODIyLCA4MDgyNiwgODA4MzAsIDgwODM0LCAKLSAgICA4MDgzOCwgODA4NDIsIDgwODQ2LCA4MDg1MCwgODA4NTQsIDgwODU4LCA4MDg2MiwgODA4NjYsIDgwODcwLCA4MDg3NCwgCi0gICAgODA4NzgsIDgwODgyLCA4MDg4NiwgODA4OTAsIDgwODk0LCA4MDg5OCwgODA5MDIsIDgwOTA2LCA4MDkxMCwgODA5MTQsIAotICAgIDgwOTE4LCA4MDkyMiwgODA5MjYsIDgwOTMwLCA4MDkzNCwgODA5MzgsIDgwOTQyLCA4MDk0NiwgODA5NTAsIDgwOTU0LCAKLSAgICA4MDk1OCwgODA5NjIsIDgwOTY2LCA4MDk3MCwgODA5NzQsIDgwOTc4LCA4MDk4MiwgODA5ODYsIDgwOTkwLCA4MDk5NCwgCi0gICAgODA5OTgsIDgxMDAyLCA4MTAwNiwgODEwMTAsIDgxMDE0LCA4MTAxOCwgODEwMjIsIDgxMDI2LCA4MTAzMCwgODEwMzQsIAotICAgIDgxMDM4LCA4MTA0MiwgODEwNDYsIDgxMDUwLCA4MTA1NCwgODEwNTgsIDgxMDYyLCA4MTA2NiwgODEwNzAsIDgxMDc0LCAKLSAgICA4MTA3OCwgODEwODIsIDgxMDg2LCA4MTA5MCwgODEwOTQsIDgxMDk4LCA4MTEwMiwgODExMDYsIDgxMTEwLCA4MTExNCwgCi0gICAgODExMTgsIDgxMTIyLCA4MTEyNiwgODExMzAsIDgxMTM0LCA4MTEzOCwgODExNDIsIDgxMTQ2LCA4MTE1MCwgODExNTQsIAotICAgIDgxMTU4LCA4MTE2MiwgODExNjYsIDgxMTcwLCA4MTE3NCwgODExNzgsIDgxMTgyLCA4MTE4NiwgODExOTAsIDgxMTk0LCAKLSAgICA4MTE5OCwgODEyMDIsIDgxMjA2LCA4MTIxMCwgODEyMTQsIDgxMjE4LCA4MTIyMiwgODEyMjYsIDgxMjMwLCA4MTIzNCwgCi0gICAgODEyMzgsIDgxMjQyLCA4MTI0NiwgODEyNTAsIDgxMjU0LCA4MTI1OCwgODEyNjIsIDgxMjY2LCA4MTI3MCwgODEyNzQsIAotICAgIDgxMjc4LCA4MTI4MiwgODEyODYsIDgxMjkwLCA4MTI5NCwgODEyOTgsIDgxMzAyLCA4MTMwNiwgODEzMTAsIDgxMzE0LCAKLSAgICA4MTMxOCwgODEzMjIsIDgxMzI2LCA4MTMzMCwgODEzMzQsIDgxMzM4LCA4MTM0MiwgODEzNDYsIDgxMzUwLCA4MTM1NCwgCi0gICAgODEzNTgsIDgxMzYyLCA4MTM2NiwgODEzNzAsIDgxMzc0LCA4MTM3OCwgODEzODIsIDgxMzg2LCA4MTM5MCwgODEzOTQsIAotICAgIDgxMzk4LCA4MTQwMiwgODE0MDYsIDgxNDEwLCA4MTQxNCwgODE0MTgsIDgxNDIyLCA4MTQyNiwgODE0MzAsIDgxNDM0LCAKLSAgICA4MTQzOCwgODE0NDIsIDgxNDQ2LCA4MTQ1MCwgODE0NTQsIDgxNDU4LCA4MTQ2MiwgODE0NjYsIDgxNDcwLCA4MTQ3NCwgCi0gICAgODE0NzgsIDgxNDgyLCA4MTQ4NiwgODE0OTAsIDgxNDk0LCA4MTQ5OCwgODE1MDIsIDgxNTA2LCA4MTUxMCwgODE1MTQsIAotICAgIDgxNTE4LCA4MTUyMiwgODE1MjYsIDgxNTMwLCA4MTUzNCwgODE1MzgsIDgxNTQyLCA4MTU0NiwgODE1NTAsIDgxNTU0LCAKLSAgICA4MTU1OCwgODE1NjIsIDgxNTY2LCA4MTU3MCwgODE1NzQsIDgxNTc4LCA4MTU4MiwgODE1ODYsIDgxNTkwLCA4MTU5NCwgCi0gICAgODE1OTgsIDgxNjAyLCA4MTYwNiwgODE2MTAsIDgxNjE0LCA4MTYxOCwgODE2MjIsIDgxNjI2LCA4MTYzMCwgODE2MzQsIAotICAgIDgxNjM4LCA4MTY0MiwgODE2NDYsIDgxNjUwLCA4MTY1NCwgODE2NTgsIDgxNjYyLCA4MTY2NiwgODE2NzAsIDgxNjc0LCAKLSAgICA4MTY3OCwgODE2ODIsIDgxNjg2LCA4MTY5MCwgODE2OTQsIDgxNjk4LCA4MTcwMiwgODE3MDYsIDgxNzEwLCA4MTcxNCwgCi0gICAgODE3MTgsIDgxNzIyLCA4MTcyNiwgODE3MzAsIDgxNzM0LCA4MTczOCwgODE3NDIsIDgxNzQ2LCA4MTc1MCwgODE3NTQsIAotICAgIDgxNzU4LCA4MTc2MiwgODE3NjYsIDgxNzcwLCA4MTc3NCwgODE3NzgsIDgxNzgyLCA4MTc4NiwgODE3OTAsIDgxNzk0LCAKLSAgICA4MTc5OCwgODE4MDIsIDgxODA2LCA4MTgxMCwgODE4MTQsIDgxODE4LCA4MTgyMiwgODE4MjYsIDgxODMwLCA4MTgzNCwgCi0gICAgODE4MzgsIDgxODQyLCA4MTg0NiwgODE4NTAsIDgxODU0LCA4MTg1OCwgODE4NjIsIDgxODY2LCA4MTg3MCwgODE4NzQsIAotICAgIDgxODc4LCA4MTg4MiwgODE4ODYsIDgxODkwLCA4MTg5NCwgODE4OTgsIDgxOTAyLCA4MTkwNiwgODE5MTAsIDgxOTE0LCAKLSAgICA4MTkxOCwgODE5MjIsIDgxOTI2LCA4MTkzMCwgODE5MzQsIDgxOTM4LCA4MTk0MiwgODE5NDYsIDgxOTUwLCA4MTk1NCwgCi0gICAgODE5NTgsIDgxOTYyLCA4MTk2NiwgODE5NzAsIDgxOTc0LCA4MTk3OCwgMCwgMCwgODE5ODIsIDgxOTg2LCA4MTk5MCwgCi0gICAgODE5OTQsIDgxOTk4LCA4MjAwMiwgODIwMDYsIDgyMDEwLCA4MjAxNCwgODIwMTgsIDgyMDIyLCA4MjAyNiwgODIwMzAsIAotICAgIDgyMDM0LCA4MjAzOCwgODIwNDIsIDgyMDQ2LCA4MjA1MCwgODIwNTQsIDgyMDU4LCA4MjA2MiwgODIwNjYsIDgyMDcwLCAKLSAgICA4MjA3NCwgODIwNzgsIDgyMDgyLCA4MjA4NiwgODIwOTAsIDgyMDk0LCA4MjA5OCwgODIxMDIsIDgyMTA2LCA4MjExMCwgCi0gICAgODIxMTQsIDgyMTE4LCA4MjEyMiwgODIxMjYsIDgyMTMwLCA4MjEzNCwgODIxMzgsIDgyMTQyLCA4MjE0NiwgODIxNTAsIAotICAgIDgyMTU0LCA4MjE1OCwgODIxNjIsIDgyMTY2LCA4MjE3MCwgODIxNzQsIDgyMTc4LCA4MjE4MiwgODIxODYsIDgyMTkwLCAKLSAgICA4MjE5NCwgODIxOTgsIDgyMjAyLCA4MjIwNiwgODIyMTAsIDgyMjE0LCA4MjIxOCwgODIyMjIsIDgyMjI2LCA4MjIzMCwgCi0gICAgODIyMzQsIDgyMjM4LCA4MjI0MiwgODIyNDYsIDgyMjUwLCA4MjI1NCwgODIyNTgsIDgyMjYyLCA4MjI2NiwgODIyNzAsIAotICAgIDgyMjc0LCA4MjI3OCwgODIyODIsIDgyMjg2LCA4MjI5MCwgODIyOTQsIDgyMjk4LCA4MjMwMiwgODIzMDYsIDgyMzEwLCAKLSAgICA4MjMxNCwgODIzMTgsIDgyMzIyLCA4MjMyNiwgODIzMzAsIDgyMzM0LCA4MjMzOCwgODIzNDIsIDgyMzQ2LCA4MjM1MCwgCi0gICAgODIzNTQsIDgyMzU4LCA4MjM2MiwgODIzNjYsIDgyMzcwLCA4MjM3NCwgODIzNzgsIDgyMzgyLCA4MjM4NiwgODIzOTAsIAotICAgIDgyMzk0LCA4MjM5OCwgODI0MDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgyNDA2LCAKLSAgICA4MjQxMSwgODI0MTYsIDgyNDIxLCA4MjQyNiwgODI0MzEsIDgyNDM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA4MjQ0NCwgODI0NTEsIDgyNDU4LCA4MjQ2NSwgODI0NzIsIDAsIDAsIDAsIDAsIDAsIDgyNDc5LCA4MjQ4NiwgCi0gICAgODI0OTMsIDgyNTAzLCA4MjUwOSwgODI1MTUsIDgyNTIxLCA4MjUyNywgODI1MzMsIDgyNTM5LCA4MjU0NiwgODI1NTIsIAotICAgIDgyNTU4LCA4MjU2NCwgODI1NzMsIDgyNTgyLCA4MjU5NCwgODI2MDYsIDgyNjEyLCA4MjYxOCwgODI2MjQsIDgyNjMxLCAKLSAgICA4MjYzOCwgODI2NDUsIDgyNjUyLCA4MjY1OSwgMCwgODI2NjYsIDgyNjczLCA4MjY4MCwgODI2ODgsIDgyNjk1LCAwLCAKLSAgICA4MjcwMiwgMCwgODI3MDksIDgyNzE2LCAwLCA4MjcyMywgODI3MzEsIDAsIDgyNzM4LCA4Mjc0NSwgODI3NTIsIDgyNzU5LCAKLSAgICA4Mjc2NiwgODI3NzMsIDgyNzgwLCA4Mjc4NywgODI3OTQsIDgyODAxLCA4MjgwNiwgODI4MTMsIDgyODIwLCA4MjgyNiwgCi0gICAgODI4MzIsIDgyODM4LCA4Mjg0NCwgODI4NTAsIDgyODU2LCA4Mjg2MiwgODI4NjgsIDgyODc0LCA4Mjg4MCwgODI4ODYsIAotICAgIDgyODkyLCA4Mjg5OCwgODI5MDQsIDgyOTEwLCA4MjkxNiwgODI5MjIsIDgyOTI4LCA4MjkzNCwgODI5NDAsIDgyOTQ2LCAKLSAgICA4Mjk1MiwgODI5NTgsIDgyOTY0LCA4Mjk3MCwgODI5NzYsIDgyOTgyLCA4Mjk4OCwgODI5OTQsIDgzMDAwLCA4MzAwNiwgCi0gICAgODMwMTIsIDgzMDE4LCA4MzAyNCwgODMwMzAsIDgzMDM2LCA4MzA0MiwgODMwNDgsIDgzMDU0LCA4MzA2MCwgODMwNjYsIAotICAgIDgzMDcyLCA4MzA3OCwgODMwODQsIDgzMDkwLCA4MzA5NiwgODMxMDIsIDgzMTA4LCA4MzExNCwgODMxMjAsIDgzMTI2LCAKLSAgICA4MzEzMiwgODMxMzgsIDgzMTQ0LCA4MzE1MCwgODMxNTYsIDgzMTYyLCA4MzE2OCwgODMxNzQsIDgzMTgwLCA4MzE4NiwgCi0gICAgODMxOTIsIDgzMTk4LCA4MzIwNCwgODMyMTAsIDgzMjE2LCA4MzIyMiwgODMyMjgsIDgzMjM0LCA4MzI0MCwgODMyNDYsIAotICAgIDgzMjUyLCA4MzI1OCwgODMyNjQsIDgzMjcwLCA4MzI3NiwgODMyODQsIDgzMjkyLCA4MzI5OCwgODMzMDQsIDgzMzEwLCAKLSAgICA4MzMxNiwgODMzMjUsIDgzMzM0LCA4MzM0MiwgODMzNTAsIDgzMzU4LCA4MzM2NiwgODMzNzQsIDgzMzgyLCA4MzM5MCwgCi0gICAgODMzOTgsIDgzNDA1LCA4MzQxMiwgODM0MjMsIDgzNDM0LCA4MzQzOCwgODM0NDIsIDgzNDQ3LCA4MzQ1MiwgODM0NTcsIAotICAgIDgzNDYyLCA4MzQ3MCwgODM0NzgsIDgzNDg0LCA4MzQ5MCwgODM0OTcsIDgzNTA0LCA4MzUxMSwgODM1MTUsIDgzNTIxLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MzUyNywgODM1MzMsIDgzNTM5LCAKLSAgICA4MzU0NSwgODM1NTEsIDgzNTU2LCA4MzU2MSwgODM1NjcsIDgzNTczLCA4MzU3OSwgODM1ODUsIDgzNTk0LCA4MzYwMCwgCi0gICAgODM2MDYsIDgzNjE0LCA4MzYyMiwgODM2MzAsIDgzNjM4LCA4MzY0MywgODM2NDgsIDgzNjUzLCA4MzY1OCwgODM2NzEsIAotICAgIDgzNjg0LCA4MzY5NSwgODM3MDYsIDgzNzE4LCA4MzczMCwgODM3NDIsIDgzNzU0LCA4Mzc2NSwgODM3NzYsIDgzNzg4LCAKLSAgICA4MzgwMCwgODM4MTIsIDgzODI0LCA4MzgzNSwgODM4NDYsIDgzODU3LCA4Mzg3NCwgODM4OTEsIDgzOTA4LCA4MzkxNSwgCi0gICAgODM5MjIsIDgzOTI5LCA4MzkzNiwgODM5NDcsIDgzOTU4LCA4Mzk2OSwgODM5ODIsIDgzOTkzLCA4NDAwMSwgODQwMDksIAotICAgIDg0MDE4LCA4NDAyNiwgODQwMzYsIDg0MDQ0LCA4NDA1MiwgODQwNjAsIDg0MDY5LCA4NDA3NywgODQwODcsIDg0MDk1LCAKLSAgICA4NDEwMywgODQxMTEsIDg0MTIxLCA4NDEyOSwgODQxMzYsIDg0MTQzLCA4NDE1MCwgODQxNTcsIDg0MTY1LCA4NDE3MywgCi0gICAgODQxODEsIDg0MTg5LCA4NDE5NywgODQyMDYsIDg0MjE0LCA4NDIyMiwgODQyMzAsIDg0MjM4LCA4NDI0NiwgODQyNTUsIAotICAgIDg0MjYzLCA4NDI3MSwgODQyNzksIDg0Mjg3LCA4NDI5NSwgODQzMDMsIDg0MzExLCA4NDMxOSwgODQzMjcsIDg0MzM1LCAKLSAgICA4NDM0NCwgODQzNTIsIDg0MzYyLCA4NDM3MCwgODQzNzgsIDg0Mzg2LCA4NDM5NiwgODQ0MDQsIDg0NDEyLCA4NDQyMCwgCi0gICAgODQ0MjgsIDg0NDM3LCA4NDQ0NiwgODQ0NTQsIDg0NDY0LCA4NDQ3MiwgODQ0ODAsIDg0NDg4LCA4NDQ5NywgODQ1MDUsIAotICAgIDg0NTE1LCA4NDUyMywgODQ1MzAsIDg0NTM3LCA4NDU0NSwgODQ1NTIsIDg0NTYxLCA4NDU2OCwgODQ1NzYsIDg0NTg0LCAKLSAgICA4NDU5MywgODQ2MDEsIDg0NjExLCA4NDYxOSwgODQ2MjcsIDg0NjM1LCA4NDY0NSwgODQ2NTMsIDg0NjYwLCA4NDY2NywgCi0gICAgODQ2NzUsIDg0NjgyLCA4NDY5MSwgODQ2OTgsIDg0NzA4LCA4NDcxOCwgODQ3MjksIDg0NzM4LCA4NDc0NywgODQ3NTYsIAotICAgIDg0NzY1LCA4NDc3NCwgODQ3ODQsIDg0Nzk2LCA4NDgwOCwgODQ4MTksIDg0ODMxLCA4NDg0NCwgODQ4NTUsIDg0ODY0LCAKLSAgICA4NDg3MywgODQ4ODEsIDg0ODkwLCA4NDkwMCwgODQ5MDgsIDg0OTE3LCA4NDkyNiwgODQ5MzQsIDg0OTQzLCA4NDk1MywgCi0gICAgODQ5NjEsIDg0OTcwLCA4NDk3OSwgODQ5ODcsIDg0OTk2LCA4NTAwNiwgODUwMTQsIDg1MDI0LCA4NTAzMiwgODUwNDIsIAotICAgIDg1MDUwLCA4NTA1OCwgODUwNjcsIDg1MDc1LCA4NTA4NSwgODUwOTMsIDg1MTAxLCA4NTExMSwgODUxMTksIDg1MTI2LCAKLSAgICA4NTEzMywgODUxNDIsIDg1MTUxLCA4NTE1OSwgODUxNjgsIDg1MTc4LCA4NTE4NiwgODUxOTcsIDg1MjA1LCA4NTIxMywgCi0gICAgODUyMjAsIDg1MjI4LCA4NTIzNywgODUyNDQsIDg1MjU1LCA4NTI2NiwgODUyNzgsIDg1Mjg5LCA4NTMwMSwgODUzMDksIAotICAgIDg1MzE3LCA4NTMyNiwgODUzMzQsIDg1MzQzLCA4NTM1MSwgODUzNTksIDg1MzY4LCA4NTM3NiwgODUzODUsIDg1MzkzLCAKLSAgICA4NTQwMCwgODU0MDcsIDg1NDE0LCA4NTQyMSwgODU0MjksIDg1NDM3LCA4NTQ0NSwgODU0NTMsIDg1NDYyLCA4NTQ3MCwgCi0gICAgODU0NzgsIDg1NDg3LCA4NTQ5NSwgODU1MDMsIDg1NTExLCA4NTUyMCwgODU1MjgsIDg1NTM2LCA4NTU0NCwgODU1NTIsIAotICAgIDg1NTYwLCA4NTU2OCwgODU1NzYsIDg1NTg0LCA4NTU5MiwgODU2MDEsIDg1NjA5LCA4NTYxNywgODU2MjUsIDg1NjMzLCAKLSAgICA4NTY0MSwgODU2NTAsIDg1NjU5LCA4NTY2NywgODU2NzUsIDg1NjgzLCA4NTY5MiwgODU3MDAsIDg1NzA5LCA4NTcxNiwgCi0gICAgODU3MjMsIDg1NzMxLCA4NTczOCwgODU3NDYsIDg1NzU0LCA4NTc2MywgODU3NzEsIDg1NzgwLCA4NTc4OCwgODU3OTYsIAotICAgIDg1ODA2LCA4NTgxMywgODU4MjAsIDg1ODI4LCA4NTgzNSwgODU4NDMsIDg1ODU0LCA4NTg2NiwgODU4NzQsIDg1ODgzLCAKLSAgICA4NTg5MSwgODU5MDAsIDg1OTA4LCA4NTkxNywgODU5MjUsIDg1OTM0LCA4NTk0MiwgODU5NTEsIDg1OTYwLCA4NTk2OCwgCi0gICAgODU5NzYsIDg1OTg0LCA4NTk5MywgODYwMDAsIDg2MDA4LCA4NjAxNywgODYwMjYsIDg2MDM1LCA4NjA0NSwgODYwNTMsIAotICAgIDg2MDYzLCA4NjA3MSwgODYwODEsIDg2MDg5LCA4NjA5OSwgODYxMDcsIDg2MTE3LCA4NjEyNSwgODYxMzQsIDg2MTQxLCAKLSAgICA4NjE1MCwgODYxNTcsIDg2MTY3LCA4NjE3NSwgODYxODUsIDg2MTkzLCA4NjIwMywgODYyMTEsIDg2MjE5LCA4NjIyNywgCi0gICAgODYyMzYsIDg2MjQ0LCA4NjI1MywgODYyNjIsIDg2MjcxLCA4NjI4MCwgODYyOTAsIDg2Mjk4LCA4NjMwOCwgODYzMTYsIAotICAgIDg2MzI2LCA4NjMzNCwgODYzNDQsIDg2MzUyLCA4NjM2MiwgODYzNzAsIDg2Mzc5LCA4NjM4NiwgODYzOTUsIDg2NDAyLCAKLSAgICA4NjQxMiwgODY0MjAsIDg2NDMwLCA4NjQzOCwgODY0NDgsIDg2NDU2LCA4NjQ2NCwgODY0NzIsIDg2NDgxLCA4NjQ4OSwgCi0gICAgODY0OTgsIDg2NTA3LCA4NjUxNiwgODY1MjUsIDg2NTMzLCA4NjU0MSwgODY1NTAsIDg2NTU4LCA4NjU2NywgODY1NzYsIAotICAgIDg2NTg0LCA4NjU5MiwgODY2MDAsIDg2NjA5LCA4NjYxNywgODY2MjUsIDg2NjM0LCA4NjY0MiwgODY2NTAsIDg2NjU4LCAKLSAgICA4NjY2NiwgODY2NzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg2Njc2LCAKLSAgICA4NjY4NiwgODY2OTYsIDg2NzA2LCA4NjcxNiwgODY3MjcsIDg2NzM3LCA4Njc0NywgODY3NTgsIDg2NzY3LCA4Njc3NiwgCi0gICAgODY3ODUsIDg2Nzk2LCA4NjgwNiwgODY4MTYsIDg2ODI4LCA4NjgzOCwgODY4NDgsIDg2ODU4LCA4Njg2OCwgODY4NzgsIAotICAgIDg2ODg4LCA4Njg5OCwgODY5MDgsIDg2OTE4LCA4NjkyOCwgODY5MzgsIDg2OTQ5LCA4Njk2MCwgODY5NzAsIDg2OTgwLCAKLSAgICA4Njk5MiwgODcwMDMsIDg3MDE0LCA4NzAyNCwgODcwMzQsIDg3MDQ0LCA4NzA1NCwgODcwNjQsIDg3MDc0LCA4NzA4NCwgCi0gICAgODcwOTYsIDg3MTA2LCA4NzExNiwgODcxMjgsIDg3MTM5LCA4NzE1MCwgODcxNjAsIDg3MTcwLCA4NzE4MCwgODcxOTAsIAotICAgIDg3MjAyLCA4NzIxMiwgODcyMjIsIDg3MjMzLCA4NzI0NCwgODcyNTQsIDg3MjY0LCA4NzI3MywgODcyODIsIDg3MjkxLCAKLSAgICA4NzMwMCwgODczMDksIDg3MzE5LCAwLCAwLCA4NzMyOSwgODczMzksIDg3MzQ5LCA4NzM1OSwgODczNjksIDg3MzgxLCAKLSAgICA4NzM5MSwgODc0MDEsIDg3NDEzLCA4NzQyMywgODc0MzUsIDg3NDQ0LCA4NzQ1MywgODc0NjQsIDg3NDc0LCA4NzQ4NiwgCi0gICAgODc0OTcsIDg3NTEwLCA4NzUyMCwgODc1MzIsIDg3NTQxLCA4NzU1MiwgODc1NjMsIDg3NTc2LCA4NzU4NiwgODc1OTYsIAotICAgIDg3NjA2LCA4NzYxNiwgODc2MjYsIDg3NjM1LCA4NzY0NCwgODc2NTMsIDg3NjYyLCA4NzY3MiwgODc2ODIsIDg3NjkyLCAKLSAgICA4NzcwMiwgODc3MTIsIDg3NzIyLCA4NzczMiwgODc3NDIsIDg3NzUyLCA4Nzc2MiwgODc3NzIsIDg3NzgyLCA4Nzc5MSwgCi0gICAgODc4MDAsIDg3ODA5LCA4NzgxOSwgODc4MjksIDg3ODM5LCA4Nzg0OSwgODc4NTksIDg3ODcwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MTA1MywgODEwNTcsIDgxMDYxLCA4MTA2NSwgCisgICAgODEwNjksIDgxMDczLCA4MTA3NywgODEwODEsIDgxMDg1LCA4MTA4OSwgODEwOTMsIDgxMDk3LCA4MTEwMSwgODExMDUsIAorICAgIDgxMTA5LCA4MTExMywgODExMTcsIDgxMTIxLCA4MTEyNSwgODExMjksIDgxMTMzLCA4MTEzNywgODExNDEsIDAsIDAsIDAsIAorICAgIDAsIDgxMTQ1LCA4MTE0OSwgODExNTMsIDgxMTU3LCA4MTE2MSwgODExNjUsIDgxMTY5LCA4MTE3MywgODExNzcsIDgxMTgxLCAKKyAgICA4MTE4NSwgODExODksIDgxMTkzLCA4MTE5NywgODEyMDEsIDgxMjA1LCA4MTIwOSwgODEyMTMsIDgxMjE3LCA4MTIyMSwgCisgICAgODEyMjUsIDgxMjI5LCA4MTIzMywgODEyMzcsIDgxMjQxLCA4MTI0NSwgODEyNDksIDgxMjUzLCA4MTI1NywgODEyNjEsIAorICAgIDgxMjY1LCA4MTI2OSwgODEyNzMsIDgxMjc3LCA4MTI4MSwgODEyODUsIDgxMjg5LCA4MTI5MywgODEyOTcsIDgxMzAxLCAKKyAgICA4MTMwNSwgODEzMDksIDgxMzEzLCA4MTMxNywgODEzMjEsIDgxMzI1LCA4MTMyOSwgODEzMzMsIDgxMzM3LCAwLCAwLCAwLCAKKyAgICAwLCA4MTM0MSwgODEzNDUsIDgxMzQ5LCA4MTM1MywgODEzNTcsIDgxMzYxLCA4MTM2NSwgODEzNjksIDgxMzczLCA4MTM3NywgCisgICAgODEzODEsIDgxMzg1LCA4MTM4OSwgODEzOTMsIDgxMzk3LCA4MTQwMSwgODE0MDUsIDgxNDA5LCA4MTQxMywgODE0MTcsIAorICAgIDgxNDIxLCA4MTQyNSwgODE0MjksIDgxNDMzLCA4MTQzNywgODE0NDEsIDgxNDQ1LCA4MTQ0OSwgODE0NTMsIDgxNDU3LCAKKyAgICA4MTQ2MSwgODE0NjUsIDgxNDY5LCA4MTQ3MywgODE0NzcsIDgxNDgxLCA4MTQ4NSwgODE0ODksIDgxNDkzLCA4MTQ5NywgCisgICAgODE1MDEsIDgxNTA1LCA4MTUwOSwgODE1MTMsIDgxNTE3LCA4MTUyMSwgODE1MjUsIDgxNTI5LCA4MTUzMywgODE1MzcsIAorICAgIDgxNTQxLCA4MTU0NSwgODE1NDksIDgxNTUzLCA4MTU1NywgODE1NjEsIDgxNTY1LCA4MTU2OSwgODE1NzMsIDgxNTc3LCAKKyAgICA4MTU4MSwgODE1ODUsIDgxNTg5LCA4MTU5MywgODE1OTcsIDgxNjAxLCA4MTYwNSwgODE2MDksIDgxNjEzLCA4MTYxNywgCisgICAgODE2MjEsIDgxNjI1LCA4MTYyOSwgODE2MzMsIDgxNjM3LCA4MTY0MSwgODE2NDUsIDgxNjQ5LCA4MTY1MywgODE2NTcsIAorICAgIDgxNjYxLCA4MTY2NSwgODE2NjksIDgxNjczLCA4MTY3NywgODE2ODEsIDgxNjg1LCA4MTY4OSwgODE2OTMsIDgxNjk3LCAKKyAgICA4MTcwMSwgODE3MDUsIDgxNzA5LCA4MTcxMywgODE3MTcsIDgxNzIxLCA4MTcyNSwgODE3MjksIDgxNzMzLCA4MTczNywgCisgICAgODE3NDEsIDgxNzQ1LCA4MTc0OSwgODE3NTMsIDgxNzU3LCA4MTc2MSwgODE3NjUsIDgxNzY5LCA4MTc3MywgODE3NzcsIAorICAgIDgxNzgxLCA4MTc4NSwgODE3ODksIDgxNzkzLCA4MTc5NywgODE4MDEsIDgxODA1LCA4MTgwOSwgODE4MTMsIDgxODE3LCAKKyAgICA4MTgyMSwgODE4MjUsIDgxODI5LCA4MTgzMywgODE4MzcsIDgxODQxLCA4MTg0NSwgODE4NDksIDgxODUzLCA4MTg1NywgCisgICAgODE4NjEsIDgxODY1LCA4MTg2OSwgODE4NzMsIDgxODc3LCA4MTg4MSwgODE4ODUsIDgxODg5LCA4MTg5MywgODE4OTcsIAorICAgIDgxOTAxLCA4MTkwNSwgODE5MDksIDgxOTEzLCA4MTkxNywgODE5MjEsIDgxOTI1LCA4MTkyOSwgODE5MzMsIDgxOTM3LCAKKyAgICA4MTk0MSwgODE5NDUsIDgxOTQ5LCA4MTk1MywgODE5NTcsIDgxOTYxLCA4MTk2NSwgODE5NjksIDgxOTczLCA4MTk3NywgCisgICAgODE5ODEsIDgxOTg1LCA4MTk4OSwgODE5OTMsIDgxOTk3LCA4MjAwMSwgODIwMDUsIDgyMDA5LCA4MjAxMywgODIwMTcsIAorICAgIDgyMDIxLCA4MjAyNSwgODIwMjksIDgyMDMzLCA4MjAzNywgODIwNDEsIDgyMDQ1LCA4MjA0OSwgODIwNTMsIDgyMDU3LCAKKyAgICA4MjA2MSwgODIwNjUsIDgyMDY5LCA4MjA3MywgODIwNzcsIDgyMDgxLCA4MjA4NSwgODIwODksIDgyMDkzLCA4MjA5NywgCisgICAgODIxMDEsIDgyMTA1LCA4MjEwOSwgODIxMTMsIDgyMTE3LCA4MjEyMSwgODIxMjUsIDgyMTI5LCA4MjEzMywgODIxMzcsIAorICAgIDgyMTQxLCA4MjE0NSwgODIxNDksIDgyMTUzLCA4MjE1NywgODIxNjEsIDgyMTY1LCA4MjE2OSwgODIxNzMsIDgyMTc3LCAKKyAgICA4MjE4MSwgODIxODUsIDgyMTg5LCA4MjE5MywgODIxOTcsIDgyMjAxLCA4MjIwNSwgODIyMDksIDgyMjEzLCA4MjIxNywgCisgICAgODIyMjEsIDgyMjI1LCA4MjIyOSwgODIyMzMsIDgyMjM3LCA4MjI0MSwgODIyNDUsIDgyMjQ5LCA4MjI1MywgODIyNTcsIAorICAgIDgyMjYxLCA4MjI2NSwgODIyNjksIDgyMjczLCA4MjI3NywgODIyODEsIDgyMjg1LCA4MjI4OSwgODIyOTMsIDgyMjk3LCAKKyAgICA4MjMwMSwgODIzMDUsIDgyMzA5LCA4MjMxMywgODIzMTcsIDgyMzIxLCA4MjMyNSwgODIzMjksIDgyMzMzLCA4MjMzNywgCisgICAgODIzNDEsIDgyMzQ1LCA4MjM0OSwgODIzNTMsIDgyMzU3LCA4MjM2MSwgODIzNjUsIDgyMzY5LCA4MjM3MywgODIzNzcsIAorICAgIDgyMzgxLCA4MjM4NSwgODIzODksIDgyMzkzLCA4MjM5NywgODI0MDEsIDgyNDA1LCA4MjQwOSwgODI0MTMsIDgyNDE3LCAKKyAgICA4MjQyMSwgODI0MjUsIDgyNDI5LCA4MjQzMywgODI0MzcsIDgyNDQxLCA4MjQ0NSwgODI0NDksIDgyNDUzLCA4MjQ1NywgCisgICAgODI0NjEsIDgyNDY1LCA4MjQ2OSwgODI0NzMsIDgyNDc3LCA4MjQ4MSwgODI0ODUsIDgyNDg5LCA4MjQ5MywgODI0OTcsIAorICAgIDgyNTAxLCA4MjUwNSwgODI1MDksIDgyNTEzLCA4MjUxNywgODI1MjEsIDgyNTI1LCA4MjUyOSwgODI1MzMsIDgyNTM3LCAKKyAgICA4MjU0MSwgODI1NDUsIDgyNTQ5LCA4MjU1MywgODI1NTcsIDgyNTYxLCA4MjU2NSwgODI1NjksIDgyNTczLCA4MjU3NywgCisgICAgODI1ODEsIDgyNTg1LCA4MjU4OSwgODI1OTMsIDgyNTk3LCA4MjYwMSwgODI2MDUsIDgyNjA5LCA4MjYxMywgODI2MTcsIAorICAgIDgyNjIxLCA4MjYyNSwgODI2MjksIDgyNjMzLCA4MjYzNywgODI2NDEsIDgyNjQ1LCA4MjY0OSwgODI2NTMsIDgyNjU3LCAKKyAgICA4MjY2MSwgODI2NjUsIDgyNjY5LCA4MjY3MywgODI2NzcsIDgyNjgxLCA4MjY4NSwgODI2ODksIDgyNjkzLCA4MjY5NywgCisgICAgODI3MDEsIDgyNzA1LCA4MjcwOSwgODI3MTMsIDgyNzE3LCA4MjcyMSwgODI3MjUsIDgyNzI5LCA4MjczMywgODI3MzcsIAorICAgIDgyNzQxLCA4Mjc0NSwgODI3NDksIDgyNzUzLCA4Mjc1NywgODI3NjEsIDgyNzY1LCA4Mjc2OSwgODI3NzMsIDgyNzc3LCAKKyAgICA4Mjc4MSwgODI3ODUsIDgyNzg5LCA4Mjc5MywgODI3OTcsIDgyODAxLCAwLCAwLCA4MjgwNSwgODI4MDksIDgyODEzLCAKKyAgICA4MjgxNywgODI4MjEsIDgyODI1LCA4MjgyOSwgODI4MzMsIDgyODM3LCA4Mjg0MSwgODI4NDUsIDgyODQ5LCA4Mjg1MywgCisgICAgODI4NTcsIDgyODYxLCA4Mjg2NSwgODI4NjksIDgyODczLCA4Mjg3NywgODI4ODEsIDgyODg1LCA4Mjg4OSwgODI4OTMsIAorICAgIDgyODk3LCA4MjkwMSwgODI5MDUsIDgyOTA5LCA4MjkxMywgODI5MTcsIDgyOTIxLCA4MjkyNSwgODI5MjksIDgyOTMzLCAKKyAgICA4MjkzNywgODI5NDEsIDgyOTQ1LCA4Mjk0OSwgODI5NTMsIDgyOTU3LCA4Mjk2MSwgODI5NjUsIDgyOTY5LCA4Mjk3MywgCisgICAgODI5NzcsIDgyOTgxLCA4Mjk4NSwgODI5ODksIDgyOTkzLCA4Mjk5NywgODMwMDEsIDgzMDA1LCA4MzAwOSwgODMwMTMsIAorICAgIDgzMDE3LCA4MzAyMSwgODMwMjUsIDgzMDI5LCA4MzAzMywgODMwMzcsIDgzMDQxLCA4MzA0NSwgODMwNDksIDgzMDUzLCAKKyAgICA4MzA1NywgODMwNjEsIDgzMDY1LCA4MzA2OSwgODMwNzMsIDgzMDc3LCA4MzA4MSwgODMwODUsIDgzMDg5LCA4MzA5MywgCisgICAgODMwOTcsIDgzMTAxLCA4MzEwNSwgODMxMDksIDgzMTEzLCA4MzExNywgODMxMjEsIDgzMTI1LCA4MzEyOSwgODMxMzMsIAorICAgIDgzMTM3LCA4MzE0MSwgODMxNDUsIDgzMTQ5LCA4MzE1MywgODMxNTcsIDgzMTYxLCA4MzE2NSwgODMxNjksIDgzMTczLCAKKyAgICA4MzE3NywgODMxODEsIDgzMTg1LCA4MzE4OSwgODMxOTMsIDgzMTk3LCA4MzIwMSwgODMyMDUsIDgzMjA5LCA4MzIxMywgCisgICAgODMyMTcsIDgzMjIxLCA4MzIyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODMyMjksIAorICAgIDgzMjM0LCA4MzIzOSwgODMyNDQsIDgzMjQ5LCA4MzI1NCwgODMyNjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDgzMjY3LCA4MzI3NCwgODMyODEsIDgzMjg4LCA4MzI5NSwgMCwgMCwgMCwgMCwgMCwgODMzMDIsIDgzMzA5LCAKKyAgICA4MzMxNiwgODMzMjYsIDgzMzMyLCA4MzMzOCwgODMzNDQsIDgzMzUwLCA4MzM1NiwgODMzNjIsIDgzMzY5LCA4MzM3NSwgCisgICAgODMzODEsIDgzMzg3LCA4MzM5NiwgODM0MDUsIDgzNDE3LCA4MzQyOSwgODM0MzUsIDgzNDQxLCA4MzQ0NywgODM0NTQsIAorICAgIDgzNDYxLCA4MzQ2OCwgODM0NzUsIDgzNDgyLCAwLCA4MzQ4OSwgODM0OTYsIDgzNTAzLCA4MzUxMSwgODM1MTgsIDAsIAorICAgIDgzNTI1LCAwLCA4MzUzMiwgODM1MzksIDAsIDgzNTQ2LCA4MzU1NCwgMCwgODM1NjEsIDgzNTY4LCA4MzU3NSwgODM1ODIsIAorICAgIDgzNTg5LCA4MzU5NiwgODM2MDMsIDgzNjEwLCA4MzYxNywgODM2MjQsIDgzNjI5LCA4MzYzNiwgODM2NDMsIDgzNjQ5LCAKKyAgICA4MzY1NSwgODM2NjEsIDgzNjY3LCA4MzY3MywgODM2NzksIDgzNjg1LCA4MzY5MSwgODM2OTcsIDgzNzAzLCA4MzcwOSwgCisgICAgODM3MTUsIDgzNzIxLCA4MzcyNywgODM3MzMsIDgzNzM5LCA4Mzc0NSwgODM3NTEsIDgzNzU3LCA4Mzc2MywgODM3NjksIAorICAgIDgzNzc1LCA4Mzc4MSwgODM3ODcsIDgzNzkzLCA4Mzc5OSwgODM4MDUsIDgzODExLCA4MzgxNywgODM4MjMsIDgzODI5LCAKKyAgICA4MzgzNSwgODM4NDEsIDgzODQ3LCA4Mzg1MywgODM4NTksIDgzODY1LCA4Mzg3MSwgODM4NzcsIDgzODgzLCA4Mzg4OSwgCisgICAgODM4OTUsIDgzOTAxLCA4MzkwNywgODM5MTMsIDgzOTE5LCA4MzkyNSwgODM5MzEsIDgzOTM3LCA4Mzk0MywgODM5NDksIAorICAgIDgzOTU1LCA4Mzk2MSwgODM5NjcsIDgzOTczLCA4Mzk3OSwgODM5ODUsIDgzOTkxLCA4Mzk5NywgODQwMDMsIDg0MDA5LCAKKyAgICA4NDAxNSwgODQwMjEsIDg0MDI3LCA4NDAzMywgODQwMzksIDg0MDQ1LCA4NDA1MSwgODQwNTcsIDg0MDYzLCA4NDA2OSwgCisgICAgODQwNzUsIDg0MDgxLCA4NDA4NywgODQwOTMsIDg0MDk5LCA4NDEwNywgODQxMTUsIDg0MTIxLCA4NDEyNywgODQxMzMsIAorICAgIDg0MTM5LCA4NDE0OCwgODQxNTcsIDg0MTY1LCA4NDE3MywgODQxODEsIDg0MTg5LCA4NDE5NywgODQyMDUsIDg0MjEzLCAKKyAgICA4NDIyMSwgODQyMjgsIDg0MjM1LCA4NDI0NiwgODQyNTcsIDg0MjYxLCA4NDI2NSwgODQyNzAsIDg0Mjc1LCA4NDI4MCwgCisgICAgODQyODUsIDg0MjkzLCA4NDMwMSwgODQzMDcsIDg0MzEzLCA4NDMyMCwgODQzMjcsIDg0MzM0LCA4NDMzOCwgODQzNDQsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg0MzUwLCA4NDM1NiwgODQzNjIsIAorICAgIDg0MzY4LCA4NDM3NCwgODQzNzksIDg0Mzg0LCA4NDM5MCwgODQzOTYsIDg0NDAyLCA4NDQwOCwgODQ0MTcsIDg0NDIzLCAKKyAgICA4NDQyOSwgODQ0MzcsIDg0NDQ1LCA4NDQ1MywgODQ0NjEsIDg0NDY2LCA4NDQ3MSwgODQ0NzYsIDg0NDgxLCA4NDQ5NCwgCisgICAgODQ1MDcsIDg0NTE4LCA4NDUyOSwgODQ1NDEsIDg0NTUzLCA4NDU2NSwgODQ1NzcsIDg0NTg4LCA4NDU5OSwgODQ2MTEsIAorICAgIDg0NjIzLCA4NDYzNSwgODQ2NDcsIDg0NjU4LCA4NDY2OSwgODQ2ODAsIDg0Njk3LCA4NDcxNCwgODQ3MzEsIDg0NzM4LCAKKyAgICA4NDc0NSwgODQ3NTIsIDg0NzU5LCA4NDc3MCwgODQ3ODEsIDg0NzkyLCA4NDgwNSwgODQ4MTYsIDg0ODI0LCA4NDgzMiwgCisgICAgODQ4NDEsIDg0ODQ5LCA4NDg1OSwgODQ4NjcsIDg0ODc1LCA4NDg4MywgODQ4OTIsIDg0OTAwLCA4NDkxMCwgODQ5MTgsIAorICAgIDg0OTI2LCA4NDkzNCwgODQ5NDQsIDg0OTUyLCA4NDk1OSwgODQ5NjYsIDg0OTczLCA4NDk4MCwgODQ5ODgsIDg0OTk2LCAKKyAgICA4NTAwNCwgODUwMTIsIDg1MDIwLCA4NTAyOSwgODUwMzcsIDg1MDQ1LCA4NTA1MywgODUwNjEsIDg1MDY5LCA4NTA3OCwgCisgICAgODUwODYsIDg1MDk0LCA4NTEwMiwgODUxMTAsIDg1MTE4LCA4NTEyNiwgODUxMzQsIDg1MTQyLCA4NTE1MCwgODUxNTgsIAorICAgIDg1MTY3LCA4NTE3NSwgODUxODUsIDg1MTkzLCA4NTIwMSwgODUyMDksIDg1MjE5LCA4NTIyNywgODUyMzUsIDg1MjQzLCAKKyAgICA4NTI1MSwgODUyNjAsIDg1MjY5LCA4NTI3NywgODUyODcsIDg1Mjk1LCA4NTMwMywgODUzMTEsIDg1MzIwLCA4NTMyOCwgCisgICAgODUzMzgsIDg1MzQ2LCA4NTM1MywgODUzNjAsIDg1MzY4LCA4NTM3NSwgODUzODQsIDg1MzkxLCA4NTM5OSwgODU0MDcsIAorICAgIDg1NDE2LCA4NTQyNCwgODU0MzQsIDg1NDQyLCA4NTQ1MCwgODU0NTgsIDg1NDY4LCA4NTQ3NiwgODU0ODMsIDg1NDkwLCAKKyAgICA4NTQ5OCwgODU1MDUsIDg1NTE0LCA4NTUyMSwgODU1MzEsIDg1NTQxLCA4NTU1MiwgODU1NjEsIDg1NTcwLCA4NTU3OSwgCisgICAgODU1ODgsIDg1NTk3LCA4NTYwNywgODU2MTksIDg1NjMxLCA4NTY0MiwgODU2NTQsIDg1NjY3LCA4NTY3OCwgODU2ODcsIAorICAgIDg1Njk2LCA4NTcwNCwgODU3MTMsIDg1NzIzLCA4NTczMSwgODU3NDAsIDg1NzQ5LCA4NTc1NywgODU3NjYsIDg1Nzc2LCAKKyAgICA4NTc4NCwgODU3OTMsIDg1ODAyLCA4NTgxMCwgODU4MTksIDg1ODI5LCA4NTgzNywgODU4NDcsIDg1ODU1LCA4NTg2NSwgCisgICAgODU4NzMsIDg1ODgxLCA4NTg5MCwgODU4OTgsIDg1OTA4LCA4NTkxNiwgODU5MjQsIDg1OTM0LCA4NTk0MiwgODU5NDksIAorICAgIDg1OTU2LCA4NTk2NSwgODU5NzQsIDg1OTgyLCA4NTk5MSwgODYwMDEsIDg2MDA5LCA4NjAyMCwgODYwMjgsIDg2MDM2LCAKKyAgICA4NjA0MywgODYwNTEsIDg2MDYwLCA4NjA2NywgODYwNzgsIDg2MDg5LCA4NjEwMSwgODYxMTIsIDg2MTI0LCA4NjEzMiwgCisgICAgODYxNDAsIDg2MTQ5LCA4NjE1NywgODYxNjYsIDg2MTc0LCA4NjE4MiwgODYxOTEsIDg2MTk5LCA4NjIwOCwgODYyMTYsIAorICAgIDg2MjIzLCA4NjIzMCwgODYyMzcsIDg2MjQ0LCA4NjI1MiwgODYyNjAsIDg2MjY4LCA4NjI3NiwgODYyODUsIDg2MjkzLCAKKyAgICA4NjMwMSwgODYzMTAsIDg2MzE4LCA4NjMyNiwgODYzMzQsIDg2MzQzLCA4NjM1MSwgODYzNTksIDg2MzY3LCA4NjM3NSwgCisgICAgODYzODMsIDg2MzkxLCA4NjM5OSwgODY0MDcsIDg2NDE1LCA4NjQyNCwgODY0MzIsIDg2NDQwLCA4NjQ0OCwgODY0NTYsIAorICAgIDg2NDY0LCA4NjQ3MywgODY0ODIsIDg2NDkwLCA4NjQ5OCwgODY1MDYsIDg2NTE1LCA4NjUyMywgODY1MzIsIDg2NTM5LCAKKyAgICA4NjU0NiwgODY1NTQsIDg2NTYxLCA4NjU2OSwgODY1NzcsIDg2NTg2LCA4NjU5NCwgODY2MDMsIDg2NjExLCA4NjYxOSwgCisgICAgODY2MjksIDg2NjM2LCA4NjY0MywgODY2NTEsIDg2NjU4LCA4NjY2NiwgODY2NzcsIDg2Njg5LCA4NjY5NywgODY3MDYsIAorICAgIDg2NzE0LCA4NjcyMywgODY3MzEsIDg2NzQwLCA4Njc0OCwgODY3NTcsIDg2NzY1LCA4Njc3NCwgODY3ODMsIDg2NzkxLCAKKyAgICA4Njc5OSwgODY4MDcsIDg2ODE2LCA4NjgyMywgODY4MzEsIDg2ODQwLCA4Njg0OSwgODY4NTgsIDg2ODY4LCA4Njg3NiwgCisgICAgODY4ODYsIDg2ODk0LCA4NjkwNCwgODY5MTIsIDg2OTIyLCA4NjkzMCwgODY5NDAsIDg2OTQ4LCA4Njk1NywgODY5NjQsIAorICAgIDg2OTczLCA4Njk4MCwgODY5OTAsIDg2OTk4LCA4NzAwOCwgODcwMTYsIDg3MDI2LCA4NzAzNCwgODcwNDIsIDg3MDUwLCAKKyAgICA4NzA1OSwgODcwNjcsIDg3MDc2LCA4NzA4NSwgODcwOTQsIDg3MTAzLCA4NzExMywgODcxMjEsIDg3MTMxLCA4NzEzOSwgCisgICAgODcxNDksIDg3MTU3LCA4NzE2NywgODcxNzUsIDg3MTg1LCA4NzE5MywgODcyMDIsIDg3MjA5LCA4NzIxOCwgODcyMjUsIAorICAgIDg3MjM1LCA4NzI0MywgODcyNTMsIDg3MjYxLCA4NzI3MSwgODcyNzksIDg3Mjg3LCA4NzI5NSwgODczMDQsIDg3MzEyLCAKKyAgICA4NzMyMSwgODczMzAsIDg3MzM5LCA4NzM0OCwgODczNTYsIDg3MzY0LCA4NzM3MywgODczODEsIDg3MzkwLCA4NzM5OSwgCisgICAgODc0MDcsIDg3NDE1LCA4NzQyMywgODc0MzIsIDg3NDQwLCA4NzQ0OCwgODc0NTcsIDg3NDY1LCA4NzQ3MywgODc0ODEsIAorICAgIDg3NDg5LCA4NzQ5NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODc0OTksIAorICAgIDg3NTA5LCA4NzUxOSwgODc1MjksIDg3NTM5LCA4NzU1MCwgODc1NjAsIDg3NTcwLCA4NzU4MSwgODc1OTAsIDg3NTk5LCAKKyAgICA4NzYwOCwgODc2MTksIDg3NjI5LCA4NzYzOSwgODc2NTEsIDg3NjYxLCA4NzY3MSwgODc2ODEsIDg3NjkxLCA4NzcwMSwgCisgICAgODc3MTEsIDg3NzIxLCA4NzczMSwgODc3NDEsIDg3NzUxLCA4Nzc2MSwgODc3NzIsIDg3NzgzLCA4Nzc5MywgODc4MDMsIAorICAgIDg3ODE1LCA4NzgyNiwgODc4MzcsIDg3ODQ3LCA4Nzg1NywgODc4NjcsIDg3ODc3LCA4Nzg4NywgODc4OTcsIDg3OTA3LCAKKyAgICA4NzkxOSwgODc5MjksIDg3OTM5LCA4Nzk1MSwgODc5NjIsIDg3OTczLCA4Nzk4MywgODc5OTMsIDg4MDAzLCA4ODAxMywgCisgICAgODgwMjUsIDg4MDM1LCA4ODA0NSwgODgwNTYsIDg4MDY3LCA4ODA3NywgODgwODcsIDg4MDk2LCA4ODEwNSwgODgxMTQsIAorICAgIDg4MTIzLCA4ODEzMiwgODgxNDIsIDAsIDAsIDg4MTUyLCA4ODE2MiwgODgxNzIsIDg4MTgyLCA4ODE5MiwgODgyMDQsIAorICAgIDg4MjE0LCA4ODIyNCwgODgyMzYsIDg4MjQ2LCA4ODI1OCwgODgyNjcsIDg4Mjc2LCA4ODI4NywgODgyOTcsIDg4MzA5LCAKKyAgICA4ODMyMCwgODgzMzMsIDg4MzQzLCA4ODM1NSwgODgzNjQsIDg4Mzc1LCA4ODM4NiwgODgzOTksIDg4NDA5LCA4ODQxOSwgCisgICAgODg0MjksIDg4NDM5LCA4ODQ0OSwgODg0NTgsIDg4NDY3LCA4ODQ3NiwgODg0ODUsIDg4NDk1LCA4ODUwNSwgODg1MTUsIAorICAgIDg4NTI1LCA4ODUzNSwgODg1NDUsIDg4NTU1LCA4ODU2NSwgODg1NzUsIDg4NTg1LCA4ODU5NSwgODg2MDUsIDg4NjE0LCAKKyAgICA4ODYyMywgODg2MzIsIDg4NjQyLCA4ODY1MiwgODg2NjIsIDg4NjcyLCA4ODY4MiwgODg2OTMsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg3ODgwLCA4Nzg5NSwgODc5MTAsIDg3OTE2LCA4NzkyMiwgODc5MjgsIAotICAgIDg3OTM0LCA4Nzk0MCwgODc5NDYsIDg3OTUyLCA4Nzk1OCwgODc5NjYsIDg3OTcwLCA4Nzk3MywgMCwgMCwgODc5ODEsIAotICAgIDg3OTg0LCA4Nzk4NywgODc5OTAsIDg3OTkzLCA4Nzk5NiwgODc5OTksIDg4MDAyLCA4ODAwNSwgODgwMDgsIDg4MDExLCAKLSAgICA4ODAxNCwgODgwMTcsIDg4MDIwLCA4ODAyMywgODgwMjYsIDg4MDI5LCA4ODAzNywgODgwNDYsIDg4MDU3LCA4ODA2NSwgCi0gICAgODgwNzMsIDg4MDgyLCA4ODA5MSwgODgxMDIsIDg4MTE0LCAwLCAwLCAwLCAwLCAwLCAwLCA4ODEyNCwgODgxMjksIDg4MTM0LCAKLSAgICA4ODE0MSwgODgxNDgsIDg4MTU0LCA4ODE2MCwgODgxNjUsIDg4MTcwLCA4ODE3NSwgODgxODEsIDg4MTg3LCA4ODE5MywgCi0gICAgODgxOTksIDg4MjA1LCA4ODIxMiwgODgyMTksIDg4MjI5LCA4ODIzOSwgODgyNDksIDg4MjU4LCA4ODI2OSwgODgyNzgsIAotICAgIDg4Mjg3LCA4ODI5NywgODgzMDcsIDg4MzE5LCA4ODMzMSwgODgzNDIsIDg4MzUzLCA4ODM2NCwgODgzNzUsIDg4Mzg1LCAKLSAgICA4ODM5NSwgODg0MDUsIDg4NDE1LCA4ODQyNiwgODg0MzcsIDg4NDQxLCA4ODQ0NiwgODg0NTUsIDg4NDY0LCA4ODQ2OCwgCi0gICAgODg0NzIsIDg4NDc2LCA4ODQ4MSwgODg0ODYsIDg4NDkxLCA4ODQ5NiwgODg0OTksIDg4NTAzLCAwLCA4ODUwOCwgODg1MTEsIAotICAgIDg4NTE0LCA4ODUxOCwgODg1MjIsIDg4NTI3LCA4ODUzMSwgODg1MzUsIDg4NTQwLCA4ODU0NSwgODg1NTIsIDg4NTU5LCAKLSAgICA4ODU2MiwgODg1NjUsIDg4NTY4LCA4ODU3MSwgODg1NzQsIDg4NTc4LCA4ODU4MiwgMCwgODg1ODYsIDg4NTkxLCA4ODU5NSwgCi0gICAgODg1OTksIDAsIDAsIDAsIDAsIDg4NjA0LCA4ODYwOSwgODg2MTYsIDg4NjIxLCA4ODYyNiwgMCwgODg2MzEsIDg4NjM2LCAKLSAgICA4ODY0MSwgODg2NDYsIDg4NjUxLCA4ODY1NiwgODg2NjEsIDg4NjY2LCA4ODY3MSwgODg2NzYsIDg4NjgxLCA4ODY4NywgCi0gICAgODg2OTYsIDg4NzA1LCA4ODcxNCwgODg3MjMsIDg4NzMzLCA4ODc0MywgODg3NTMsIDg4NzYzLCA4ODc3MiwgODg3ODEsIAotICAgIDg4NzkwLCA4ODc5OSwgODg4MDQsIDg4ODA5LCA4ODgxNSwgODg4MjEsIDg4ODI3LCA4ODgzMywgODg4NDEsIDg4ODQ5LCAKLSAgICA4ODg1NSwgODg4NjEsIDg4ODY3LCA4ODg3MywgODg4NzksIDg4ODg1LCA4ODg5MSwgODg4OTcsIDg4OTAyLCA4ODkwNywgCi0gICAgODg5MTIsIDg4OTE3LCA4ODkyMiwgODg5MjcsIDg4OTMyLCA4ODkzNywgODg5NDMsIDg4OTQ5LCA4ODk1NSwgODg5NjEsIAotICAgIDg4OTY3LCA4ODk3MywgODg5NzksIDg4OTg1LCA4ODk5MSwgODg5OTcsIDg5MDAzLCA4OTAwOSwgODkwMTUsIDg5MDIxLCAKLSAgICA4OTAyNywgODkwMzMsIDg5MDM5LCA4OTA0NSwgODkwNTEsIDg5MDU3LCA4OTA2MywgODkwNjksIDg5MDc1LCA4OTA4MSwgCi0gICAgODkwODcsIDg5MDkzLCA4OTA5OSwgODkxMDUsIDg5MTExLCA4OTExNywgODkxMjMsIDg5MTI5LCA4OTEzNSwgODkxNDEsIAotICAgIDg5MTQ3LCA4OTE1MywgODkxNTksIDg5MTY1LCA4OTE3MSwgODkxNzcsIDg5MTgzLCA4OTE4OSwgODkxOTUsIDg5MjAxLCAKLSAgICA4OTIwNywgODkyMTMsIDg5MjE5LCA4OTIyNSwgODkyMzEsIDg5MjM3LCA4OTI0MywgODkyNDksIDg5MjU1LCA4OTI2MSwgCi0gICAgODkyNjcsIDg5MjczLCA4OTI3OSwgODkyODUsIDg5MjkxLCA4OTI5NywgODkzMDIsIDg5MzA3LCA4OTMxMiwgODkzMTcsIAotICAgIDg5MzIzLCA4OTMyOSwgODkzMzUsIDg5MzQxLCA4OTM0NywgODkzNTMsIDg5MzU5LCA4OTM2NSwgODkzNzEsIDg5Mzc3LCAKLSAgICA4OTM4NCwgODkzOTEsIDg5Mzk2LCA4OTQwMSwgODk0MDYsIDg5NDExLCA4OTQyMywgODk0MzUsIDg5NDQ3LCA4OTQ1OSwgCi0gICAgODk0NzIsIDg5NDg1LCA4OTQ5MywgMCwgMCwgODk1MDEsIDAsIDg5NTA5LCA4OTUxMywgODk1MTcsIDg5NTIwLCA4OTUyNCwgCi0gICAgODk1MjgsIDg5NTMxLCA4OTUzNCwgODk1MzgsIDg5NTQyLCA4OTU0NSwgODk1NDgsIDg5NTUxLCA4OTU1NCwgODk1NTksIAotICAgIDg5NTYyLCA4OTU2NiwgODk1NjksIDg5NTcyLCA4OTU3NSwgODk1NzgsIDg5NTgxLCA4OTU4NCwgODk1ODgsIDg5NTkxLCAKLSAgICA4OTU5NSwgODk1OTgsIDg5NjAxLCA4OTYwNSwgODk2MDksIDg5NjEzLCA4OTYxNywgODk2MjIsIDg5NjI3LCA4OTYzMywgCi0gICAgODk2MzksIDg5NjQ1LCA4OTY1MCwgODk2NTYsIDg5NjYyLCA4OTY2OCwgODk2NzMsIDg5Njc5LCA4OTY4NSwgODk2OTAsIAotICAgIDg5Njk2LCA4OTcwMiwgODk3MDcsIDg5NzEzLCA4OTcxOSwgODk3MjQsIDg5NzI5LCA4OTczNSwgODk3NDAsIDg5NzQ2LCAKLSAgICA4OTc1MiwgODk3NTgsIDg5NzY0LCA4OTc3MCwgODk3NzQsIDg5Nzc5LCA4OTc4MywgODk3ODgsIDg5NzkyLCA4OTc5NywgCi0gICAgODk4MDIsIDg5ODA4LCA4OTgxNCwgODk4MjAsIDg5ODI1LCA4OTgzMSwgODk4MzcsIDg5ODQzLCA4OTg0OCwgODk4NTQsIAotICAgIDg5ODYwLCA4OTg2NSwgODk4NzEsIDg5ODc3LCA4OTg4MiwgODk4ODgsIDg5ODk0LCA4OTg5OSwgODk5MDQsIDg5OTEwLCAKLSAgICA4OTkxNSwgODk5MjEsIDg5OTI3LCA4OTkzMywgODk5MzksIDg5OTQ1LCA4OTk1MCwgODk5NTQsIDg5OTU5LCA4OTk2MiwgCi0gICAgODk5NjcsIDg5OTcyLCA4OTk3OCwgODk5ODMsIDg5OTg4LCA4OTk5MiwgODk5OTcsIDkwMDAyLCA5MDAwNywgOTAwMTIsIAotICAgIDkwMDE3LCA5MDAyMiwgOTAwMjcsIDkwMDMyLCA5MDAzOCwgOTAwNDQsIDkwMDUwLCA5MDA1OCwgOTAwNjIsIDkwMDY2LCAKLSAgICA5MDA3MCwgOTAwNzQsIDkwMDc4LCA5MDA4MiwgOTAwODcsIDkwMDkyLCA5MDA5NywgOTAxMDIsIDkwMTA3LCA5MDExMiwgCi0gICAgOTAxMTcsIDkwMTIyLCA5MDEyNywgOTAxMzIsIDkwMTM3LCA5MDE0MiwgOTAxNDcsIDkwMTUxLCA5MDE1NiwgOTAxNjEsIAotICAgIDkwMTY2LCA5MDE3MSwgOTAxNzYsIDkwMTgwLCA5MDE4NSwgOTAxOTAsIDkwMTk1LCA5MDIwMCwgOTAyMDQsIDkwMjA5LCAKLSAgICA5MDIxNCwgOTAyMTksIDkwMjI0LCA5MDIyOCwgOTAyMzMsIDkwMjM4LCA5MDI0MywgOTAyNDgsIDkwMjUzLCA5MDI1OCwgCi0gICAgOTAyNjMsIDkwMjY4LCA5MDI3MywgOTAyODAsIDkwMjg3LCA5MDI5MSwgOTAyOTYsIDkwMzAxLCA5MDMwNiwgOTAzMTEsIAotICAgIDkwMzE2LCA5MDMyMSwgOTAzMjYsIDkwMzMxLCA5MDMzNiwgOTAzNDEsIDkwMzQ2LCA5MDM1MSwgOTAzNTYsIDkwMzYxLCAKLSAgICA5MDM2NiwgOTAzNzEsIDkwMzc2LCA5MDM4MSwgOTAzODYsIDkwMzkxLCA5MDM5NiwgOTA0MDEsIDkwNDA2LCA5MDQxMSwgCi0gICAgOTA0MTYsIDkwNDIxLCA5MDQyNiwgOTA0MzEsIDkwNDM2LCAwLCAwLCAwLCA5MDQ0MSwgOTA0NDUsIDkwNDUwLCA5MDQ1NCwgCi0gICAgOTA0NTksIDkwNDY0LCAwLCAwLCA5MDQ2OCwgOTA0NzMsIDkwNDc4LCA5MDQ4MiwgOTA0ODcsIDkwNDkyLCAwLCAwLCAKLSAgICA5MDQ5NywgOTA1MDIsIDkwNTA2LCA5MDUxMSwgOTA1MTYsIDkwNTIxLCAwLCAwLCA5MDUyNiwgOTA1MzEsIDkwNTM2LCAwLCAKLSAgICAwLCAwLCA5MDU0MCwgOTA1NDQsIDkwNTQ4LCA5MDU1MiwgOTA1NTUsIDkwNTU5LCA5MDU2MywgMCwgOTA1NjcsIDkwNTczLCAKLSAgICA5MDU3NiwgOTA1NzksIDkwNTgyLCA5MDU4NSwgOTA1ODksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkwNTkzLCAKLSAgICA5MDU5OSwgOTA2MDUsIDkwNjExLCA5MDYxNywgMCwgMCwgOTA2MjEsIDkwNjI3LCA5MDYzMywgOTA2MzksIDkwNjQ1LCAKLSAgICA5MDY1MSwgOTA2NTgsIDkwNjY1LCA5MDY3MiwgOTA2NzksIDkwNjg2LCA5MDY5MywgMCwgOTA3MDAsIDkwNzA3LCA5MDcxNCwgCi0gICAgOTA3MjAsIDkwNzI3LCA5MDczNCwgOTA3NDEsIDkwNzQ4LCA5MDc1NCwgOTA3NjEsIDkwNzY4LCA5MDc3NSwgOTA3ODIsIAotICAgIDkwNzg5LCA5MDc5NiwgOTA4MDMsIDkwODEwLCA5MDgxNywgOTA4MjMsIDkwODMwLCA5MDgzNywgOTA4NDQsIDkwODUxLCAKLSAgICA5MDg1OCwgOTA4NjUsIDkwODcyLCAwLCA5MDg3OSwgOTA4ODYsIDkwODkzLCA5MDkwMCwgOTA5MDcsIDkwOTE0LCA5MDkyMSwgCi0gICAgOTA5MjgsIDkwOTM1LCA5MDk0MiwgOTA5NDksIDkwOTU2LCA5MDk2MywgOTA5NzAsIDkwOTc2LCA5MDk4MywgOTA5OTAsIAotICAgIDkwOTk3LCA5MTAwNCwgMCwgOTEwMTEsIDkxMDE4LCAwLCA5MTAyNSwgOTEwMzIsIDkxMDM5LCA5MTA0NiwgOTEwNTMsIAotICAgIDkxMDYwLCA5MTA2NywgOTEwNzQsIDkxMDgxLCA5MTA4OCwgOTEwOTUsIDkxMTAyLCA5MTEwOSwgOTExMTYsIDkxMTIzLCAwLCAKLSAgICAwLCA5MTEyOSwgOTExMzQsIDkxMTM5LCA5MTE0NCwgOTExNDksIDkxMTU0LCA5MTE1OSwgOTExNjQsIDkxMTY5LCA5MTE3NCwgCi0gICAgOTExNzksIDkxMTg0LCA5MTE4OSwgOTExOTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkxMTk5LCA5MTIwNiwgCi0gICAgOTEyMTMsIDkxMjIwLCA5MTIyNywgOTEyMzQsIDkxMjQxLCA5MTI0OCwgOTEyNTUsIDkxMjYyLCA5MTI2OSwgOTEyNzYsIAotICAgIDkxMjgzLCA5MTI5MCwgOTEyOTcsIDkxMzA0LCA5MTMxMSwgOTEzMTgsIDkxMzI1LCA5MTMzMiwgOTEzNDAsIDkxMzQ4LCAKLSAgICA5MTM1NSwgOTEzNjIsIDkxMzY3LCA5MTM3NSwgOTEzODMsIDkxMzkwLCA5MTM5NywgOTE0MDIsIDkxNDA5LCA5MTQxNCwgCi0gICAgOTE0MTksIDkxNDI2LCA5MTQzMSwgOTE0MzYsIDkxNDQxLCA5MTQ0OSwgOTE0NTQsIDkxNDU5LCA5MTQ2NiwgOTE0NzEsIAotICAgIDkxNDc2LCA5MTQ4MywgOTE0OTAsIDkxNDk1LCA5MTUwMCwgOTE1MDUsIDkxNTEwLCA5MTUxNSwgOTE1MjAsIDkxNTI1LCAKLSAgICA5MTUzMCwgOTE1MzUsIDkxNTQyLCA5MTU0NywgOTE1NTQsIDkxNTU5LCA5MTU2NCwgOTE1NjksIDkxNTc0LCA5MTU3OSwgCi0gICAgOTE1ODQsIDkxNTg5LCA5MTU5NCwgOTE1OTksIDkxNjA0LCA5MTYwOSwgOTE2MTYsIDkxNjIzLCA5MTYzMCwgOTE2MzcsIAotICAgIDkxNjQzLCA5MTY0OCwgOTE2NTUsIDkxNjYwLCA5MTY2NSwgOTE2NzQsIDkxNjgxLCA5MTY5MCwgOTE2OTcsIDkxNzAyLCAKLSAgICA5MTcwNywgOTE3MTUsIDkxNzIwLCA5MTcyNSwgOTE3MzAsIDkxNzM1LCA5MTc0MCwgOTE3NDcsIDkxNzUyLCA5MTc1NywgCi0gICAgOTE3NjIsIDkxNzY3LCA5MTc3MiwgOTE3NzksIDkxNzg2LCA5MTc5MywgOTE4MDAsIDkxODA3LCA5MTgxNCwgOTE4MjEsIAotICAgIDkxODI4LCA5MTgzNSwgOTE4NDIsIDkxODQ5LCA5MTg1NiwgOTE4NjMsIDkxODcwLCA5MTg3NywgOTE4ODQsIDkxODkxLCAKLSAgICA5MTg5OCwgOTE5MDUsIDkxOTEyLCA5MTkxOSwgOTE5MjYsIDkxOTMzLCA5MTk0MCwgOTE5NDcsIDkxOTU0LCA5MTk2MSwgCi0gICAgOTE5NjgsIDAsIDAsIDAsIDAsIDAsIDkxOTc1LCA5MTk4MywgOTE5OTEsIDAsIDAsIDAsIDAsIDkxOTk2LCA5MjAwMCwgCi0gICAgOTIwMDQsIDkyMDA4LCA5MjAxMiwgOTIwMTYsIDkyMDIwLCA5MjAyNSwgOTIwMjksIDkyMDM0LCA5MjAzOSwgOTIwNDQsIAotICAgIDkyMDQ5LCA5MjA1NCwgOTIwNTksIDkyMDY0LCA5MjA2OSwgOTIwNzQsIDkyMDc5LCA5MjA4NSwgOTIwOTEsIDkyMDk3LCAKLSAgICA5MjEwNCwgOTIxMTEsIDkyMTE4LCA5MjEyNSwgOTIxMzIsIDkyMTM5LCA5MjE0NSwgOTIxNTEsIDkyMTU3LCA5MjE2NCwgCi0gICAgOTIxNzEsIDkyMTc4LCA5MjE4NSwgOTIxOTIsIDkyMTk5LCA5MjIwNiwgOTIyMTMsIDkyMjIwLCA5MjIyNywgOTIyMzQsIAotICAgIDkyMjQxLCA5MjI0OCwgOTIyNTUsIDAsIDAsIDAsIDkyMjYyLCA5MjI3MCwgOTIyNzgsIDkyMjg2LCA5MjI5NCwgOTIzMDIsIAotICAgIDkyMzEyLCA5MjMyMiwgOTIzMzAsIDkyMzM4LCA5MjM0NiwgOTIzNTQsIDkyMzYyLCA5MjM2OCwgOTIzNzUsIDkyMzg0LCAKLSAgICA5MjM5MywgOTI0MDIsIDkyNDExLCA5MjQyMCwgOTI0MjksIDkyNDM5LCA5MjQ1MCwgOTI0NjAsIDkyNDcxLCA5MjQ4MCwgCi0gICAgOTI0ODksIDkyNDk4LCA5MjUwOCwgOTI1MTksIDkyNTI5LCA5MjU0MCwgOTI1NTEsIDkyNTYwLCA5MjU2OCwgOTI1NzQsIAotICAgIDkyNTgwLCA5MjU4NiwgOTI1OTIsIDkyNjAwLCA5MjYwOCwgOTI2MTQsIDkyNjIxLCA5MjYzMSwgOTI2MzgsIDkyNjQ1LCAKLSAgICA5MjY1MiwgOTI2NTksIDkyNjY2LCA5MjY3NiwgOTI2ODMsIDkyNjkwLCA5MjY5OCwgOTI3MDYsIDkyNzE1LCA5MjcyNCwgCi0gICAgOTI3MzMsIDkyNzQyLCA5Mjc1MSwgOTI3NTksIDkyNzY4LCA5Mjc3NywgOTI3ODYsIDkyNzkwLCA5Mjc5NywgOTI4MDIsIAotICAgIDkyODA3LCA5MjgxMSwgOTI4MTUsIDkyODE5LCA5MjgyMywgOTI4MjgsIDkyODMzLCA5MjgzOSwgOTI4NDUsIDkyODQ5LCAKLSAgICA5Mjg1NSwgOTI4NTksIDkyODYzLCA5Mjg2NywgOTI4NzEsIDkyODc1LCA5Mjg3OSwgOTI4ODUsIDkyODg5LCA5Mjg5NCwgMCwgCi0gICAgMCwgMCwgOTI4OTgsIDkyOTAzLCA5MjkwOCwgOTI5MTMsIDkyOTE4LCA5MjkyNSwgOTI5MzAsIDkyOTM1LCA5Mjk0MCwgCi0gICAgOTI5NDUsIDkyOTUwLCA5Mjk1NSwgMCwgMCwgMCwgMCwgOTI5NjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg4NzAzLCA4ODcxOCwgODg3MzMsIDg4NzM5LCA4ODc0NSwgODg3NTEsIAorICAgIDg4NzU3LCA4ODc2MywgODg3NjksIDg4Nzc1LCA4ODc4MSwgODg3ODksIDg4NzkzLCA4ODc5NiwgMCwgMCwgODg4MDQsIAorICAgIDg4ODA3LCA4ODgxMCwgODg4MTMsIDg4ODE2LCA4ODgxOSwgODg4MjIsIDg4ODI1LCA4ODgyOCwgODg4MzEsIDg4ODM0LCAKKyAgICA4ODgzNywgODg4NDAsIDg4ODQzLCA4ODg0NiwgODg4NDksIDg4ODUyLCA4ODg2MCwgODg4NjksIDg4ODgwLCA4ODg4OCwgCisgICAgODg4OTYsIDg4OTA1LCA4ODkxNCwgODg5MjUsIDg4OTM3LCAwLCAwLCAwLCAwLCAwLCAwLCA4ODk0NywgODg5NTIsIDg4OTU3LCAKKyAgICA4ODk2NCwgODg5NzEsIDg4OTc3LCA4ODk4MywgODg5ODgsIDg4OTkzLCA4ODk5OCwgODkwMDQsIDg5MDEwLCA4OTAxNiwgCisgICAgODkwMjIsIDg5MDI4LCA4OTAzNSwgODkwNDIsIDg5MDUyLCA4OTA2MiwgODkwNzIsIDg5MDgxLCA4OTA5MiwgODkxMDEsIAorICAgIDg5MTEwLCA4OTEyMCwgODkxMzAsIDg5MTQyLCA4OTE1NCwgODkxNjUsIDg5MTc2LCA4OTE4NywgODkxOTgsIDg5MjA4LCAKKyAgICA4OTIxOCwgODkyMjgsIDg5MjM4LCA4OTI0OSwgODkyNjAsIDg5MjY0LCA4OTI2OSwgODkyNzgsIDg5Mjg3LCA4OTI5MSwgCisgICAgODkyOTUsIDg5Mjk5LCA4OTMwNCwgODkzMDksIDg5MzE0LCA4OTMxOSwgODkzMjIsIDg5MzI2LCAwLCA4OTMzMSwgODkzMzQsIAorICAgIDg5MzM3LCA4OTM0MSwgODkzNDUsIDg5MzUwLCA4OTM1NCwgODkzNTgsIDg5MzYzLCA4OTM2OCwgODkzNzUsIDg5MzgyLCAKKyAgICA4OTM4NSwgODkzODgsIDg5MzkxLCA4OTM5NCwgODkzOTcsIDg5NDAxLCA4OTQwNSwgMCwgODk0MDksIDg5NDE0LCA4OTQxOCwgCisgICAgODk0MjIsIDAsIDAsIDAsIDAsIDg5NDI3LCA4OTQzMiwgODk0MzksIDg5NDQ0LCA4OTQ0OSwgMCwgODk0NTQsIDg5NDU5LCAKKyAgICA4OTQ2NCwgODk0NjksIDg5NDc0LCA4OTQ3OSwgODk0ODQsIDg5NDg5LCA4OTQ5NCwgODk0OTksIDg5NTA0LCA4OTUxMCwgCisgICAgODk1MTksIDg5NTI4LCA4OTUzNywgODk1NDYsIDg5NTU2LCA4OTU2NiwgODk1NzYsIDg5NTg2LCA4OTU5NSwgODk2MDQsIAorICAgIDg5NjEzLCA4OTYyMiwgODk2MjcsIDg5NjMyLCA4OTYzOCwgODk2NDQsIDg5NjUwLCA4OTY1NiwgODk2NjQsIDg5NjcyLCAKKyAgICA4OTY3OCwgODk2ODQsIDg5NjkwLCA4OTY5NiwgODk3MDIsIDg5NzA4LCA4OTcxNCwgODk3MjAsIDg5NzI1LCA4OTczMCwgCisgICAgODk3MzUsIDg5NzQwLCA4OTc0NSwgODk3NTAsIDg5NzU1LCA4OTc2MCwgODk3NjYsIDg5NzcyLCA4OTc3OCwgODk3ODQsIAorICAgIDg5NzkwLCA4OTc5NiwgODk4MDIsIDg5ODA4LCA4OTgxNCwgODk4MjAsIDg5ODI2LCA4OTgzMiwgODk4MzgsIDg5ODQ0LCAKKyAgICA4OTg1MCwgODk4NTYsIDg5ODYyLCA4OTg2OCwgODk4NzQsIDg5ODgwLCA4OTg4NiwgODk4OTIsIDg5ODk4LCA4OTkwNCwgCisgICAgODk5MTAsIDg5OTE2LCA4OTkyMiwgODk5MjgsIDg5OTM0LCA4OTk0MCwgODk5NDYsIDg5OTUyLCA4OTk1OCwgODk5NjQsIAorICAgIDg5OTcwLCA4OTk3NiwgODk5ODIsIDg5OTg4LCA4OTk5NCwgOTAwMDAsIDkwMDA2LCA5MDAxMiwgOTAwMTgsIDkwMDI0LCAKKyAgICA5MDAzMCwgOTAwMzYsIDkwMDQyLCA5MDA0OCwgOTAwNTQsIDkwMDYwLCA5MDA2NiwgOTAwNzIsIDkwMDc4LCA5MDA4NCwgCisgICAgOTAwOTAsIDkwMDk2LCA5MDEwMiwgOTAxMDgsIDkwMTE0LCA5MDEyMCwgOTAxMjUsIDkwMTMwLCA5MDEzNSwgOTAxNDAsIAorICAgIDkwMTQ2LCA5MDE1MiwgOTAxNTgsIDkwMTY0LCA5MDE3MCwgOTAxNzYsIDkwMTgyLCA5MDE4OCwgOTAxOTQsIDkwMjAwLCAKKyAgICA5MDIwNywgOTAyMTQsIDkwMjE5LCA5MDIyNCwgOTAyMjksIDkwMjM0LCA5MDI0NiwgOTAyNTgsIDkwMjcwLCA5MDI4MiwgCisgICAgOTAyOTUsIDkwMzA4LCA5MDMxNiwgMCwgMCwgOTAzMjQsIDAsIDkwMzMyLCA5MDMzNiwgOTAzNDAsIDkwMzQzLCA5MDM0NywgCisgICAgOTAzNTEsIDkwMzU0LCA5MDM1NywgOTAzNjEsIDkwMzY1LCA5MDM2OCwgOTAzNzEsIDkwMzc0LCA5MDM3NywgOTAzODIsIAorICAgIDkwMzg1LCA5MDM4OSwgOTAzOTIsIDkwMzk1LCA5MDM5OCwgOTA0MDEsIDkwNDA0LCA5MDQwNywgOTA0MTEsIDkwNDE0LCAKKyAgICA5MDQxOCwgOTA0MjEsIDkwNDI0LCA5MDQyOCwgOTA0MzIsIDkwNDM2LCA5MDQ0MCwgOTA0NDUsIDkwNDUwLCA5MDQ1NiwgCisgICAgOTA0NjIsIDkwNDY4LCA5MDQ3MywgOTA0NzksIDkwNDg1LCA5MDQ5MSwgOTA0OTYsIDkwNTAyLCA5MDUwOCwgOTA1MTMsIAorICAgIDkwNTE5LCA5MDUyNSwgOTA1MzAsIDkwNTM2LCA5MDU0MiwgOTA1NDcsIDkwNTUzLCA5MDU1OSwgOTA1NjQsIDkwNTcwLCAKKyAgICA5MDU3NiwgOTA1ODIsIDkwNTg4LCA5MDU5NCwgOTA1OTgsIDkwNjAzLCA5MDYwNywgOTA2MTIsIDkwNjE2LCA5MDYyMSwgCisgICAgOTA2MjYsIDkwNjMyLCA5MDYzOCwgOTA2NDQsIDkwNjQ5LCA5MDY1NSwgOTA2NjEsIDkwNjY3LCA5MDY3MiwgOTA2NzgsIAorICAgIDkwNjg0LCA5MDY4OSwgOTA2OTUsIDkwNzAxLCA5MDcwNiwgOTA3MTIsIDkwNzE4LCA5MDcyMywgOTA3MjksIDkwNzM1LCAKKyAgICA5MDc0MCwgOTA3NDYsIDkwNzUyLCA5MDc1OCwgOTA3NjQsIDkwNzcwLCA5MDc3NSwgOTA3NzksIDkwNzg0LCA5MDc4NywgCisgICAgOTA3OTIsIDkwNzk3LCA5MDgwMywgOTA4MDgsIDkwODEzLCA5MDgxNywgOTA4MjIsIDkwODI3LCA5MDgzMiwgOTA4MzcsIAorICAgIDkwODQyLCA5MDg0NywgOTA4NTIsIDkwODU3LCA5MDg2MywgOTA4NjksIDkwODc1LCA5MDg4MywgOTA4ODcsIDkwODkxLCAKKyAgICA5MDg5NSwgOTA4OTksIDkwOTAzLCA5MDkwNywgOTA5MTIsIDkwOTE3LCA5MDkyMiwgOTA5MjcsIDkwOTMyLCA5MDkzNywgCisgICAgOTA5NDIsIDkwOTQ3LCA5MDk1MiwgOTA5NTcsIDkwOTYyLCA5MDk2NywgOTA5NzIsIDkwOTc2LCA5MDk4MCwgOTA5ODUsIAorICAgIDkwOTkwLCA5MDk5NSwgOTEwMDAsIDkxMDA0LCA5MTAwOSwgOTEwMTQsIDkxMDE5LCA5MTAyNCwgOTEwMjgsIDkxMDMzLCAKKyAgICA5MTAzOCwgOTEwNDMsIDkxMDQ4LCA5MTA1MiwgOTEwNTcsIDkxMDYyLCA5MTA2NywgOTEwNzIsIDkxMDc3LCA5MTA4MiwgCisgICAgOTEwODcsIDkxMDkyLCA5MTA5NywgOTExMDQsIDkxMTExLCA5MTExNSwgOTExMjAsIDkxMTI1LCA5MTEzMCwgOTExMzUsIAorICAgIDkxMTQwLCA5MTE0NSwgOTExNTAsIDkxMTU1LCA5MTE2MCwgOTExNjUsIDkxMTcwLCA5MTE3NSwgOTExODAsIDkxMTg1LCAKKyAgICA5MTE5MCwgOTExOTUsIDkxMjAwLCA5MTIwNSwgOTEyMTAsIDkxMjE1LCA5MTIyMCwgOTEyMjUsIDkxMjMwLCA5MTIzNSwgCisgICAgOTEyNDAsIDkxMjQ1LCA5MTI1MCwgOTEyNTUsIDkxMjYwLCAwLCAwLCAwLCA5MTI2NSwgOTEyNjksIDkxMjc0LCA5MTI3OCwgCisgICAgOTEyODMsIDkxMjg4LCAwLCAwLCA5MTI5MiwgOTEyOTcsIDkxMzAyLCA5MTMwNiwgOTEzMTEsIDkxMzE2LCAwLCAwLCAKKyAgICA5MTMyMSwgOTEzMjYsIDkxMzMwLCA5MTMzNSwgOTEzNDAsIDkxMzQ1LCAwLCAwLCA5MTM1MCwgOTEzNTUsIDkxMzYwLCAwLCAKKyAgICAwLCAwLCA5MTM2NCwgOTEzNjgsIDkxMzcyLCA5MTM3NiwgOTEzNzksIDkxMzgzLCA5MTM4NywgMCwgOTEzOTEsIDkxMzk3LCAKKyAgICA5MTQwMCwgOTE0MDMsIDkxNDA2LCA5MTQwOSwgOTE0MTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkxNDE3LCAKKyAgICA5MTQyMywgOTE0MjksIDkxNDM1LCA5MTQ0MSwgMCwgMCwgOTE0NDUsIDkxNDUxLCA5MTQ1NywgOTE0NjMsIDkxNDY5LCAKKyAgICA5MTQ3NSwgOTE0ODIsIDkxNDg5LCA5MTQ5NiwgOTE1MDMsIDkxNTEwLCA5MTUxNywgMCwgOTE1MjQsIDkxNTMxLCA5MTUzOCwgCisgICAgOTE1NDQsIDkxNTUxLCA5MTU1OCwgOTE1NjUsIDkxNTcyLCA5MTU3OCwgOTE1ODUsIDkxNTkyLCA5MTU5OSwgOTE2MDYsIAorICAgIDkxNjEyLCA5MTYxOSwgOTE2MjYsIDkxNjMzLCA5MTY0MCwgOTE2NDYsIDkxNjUzLCA5MTY2MCwgOTE2NjcsIDkxNjc0LCAKKyAgICA5MTY4MSwgOTE2ODgsIDkxNjk1LCAwLCA5MTcwMiwgOTE3MDksIDkxNzE2LCA5MTcyMywgOTE3MzAsIDkxNzM3LCA5MTc0NCwgCisgICAgOTE3NTEsIDkxNzU4LCA5MTc2NSwgOTE3NzIsIDkxNzc5LCA5MTc4NiwgOTE3OTMsIDkxNzk5LCA5MTgwNiwgOTE4MTMsIAorICAgIDkxODIwLCA5MTgyNywgMCwgOTE4MzQsIDkxODQxLCAwLCA5MTg0OCwgOTE4NTUsIDkxODYyLCA5MTg2OSwgOTE4NzYsIAorICAgIDkxODgzLCA5MTg5MCwgOTE4OTcsIDkxOTA0LCA5MTkxMSwgOTE5MTgsIDkxOTI1LCA5MTkzMiwgOTE5MzksIDkxOTQ2LCAwLCAKKyAgICAwLCA5MTk1MiwgOTE5NTcsIDkxOTYyLCA5MTk2NywgOTE5NzIsIDkxOTc3LCA5MTk4MiwgOTE5ODcsIDkxOTkyLCA5MTk5NywgCisgICAgOTIwMDIsIDkyMDA3LCA5MjAxMiwgOTIwMTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkyMDIyLCA5MjAyOSwgCisgICAgOTIwMzYsIDkyMDQzLCA5MjA1MCwgOTIwNTcsIDkyMDY0LCA5MjA3MSwgOTIwNzgsIDkyMDg1LCA5MjA5MiwgOTIwOTksIAorICAgIDkyMTA2LCA5MjExMywgOTIxMjAsIDkyMTI3LCA5MjEzNCwgOTIxNDEsIDkyMTQ4LCA5MjE1NSwgOTIxNjMsIDkyMTcxLCAKKyAgICA5MjE3OCwgOTIxODUsIDkyMTkwLCA5MjE5OCwgOTIyMDYsIDkyMjEzLCA5MjIyMCwgOTIyMjUsIDkyMjMyLCA5MjIzNywgCisgICAgOTIyNDIsIDkyMjQ5LCA5MjI1NCwgOTIyNTksIDkyMjY0LCA5MjI3MiwgOTIyNzcsIDkyMjgyLCA5MjI4OSwgOTIyOTQsIAorICAgIDkyMjk5LCA5MjMwNiwgOTIzMTMsIDkyMzE4LCA5MjMyMywgOTIzMjgsIDkyMzMzLCA5MjMzOCwgOTIzNDMsIDkyMzQ4LCAKKyAgICA5MjM1MywgOTIzNTgsIDkyMzY1LCA5MjM3MCwgOTIzNzcsIDkyMzgyLCA5MjM4NywgOTIzOTIsIDkyMzk3LCA5MjQwMiwgCisgICAgOTI0MDcsIDkyNDEyLCA5MjQxNywgOTI0MjIsIDkyNDI3LCA5MjQzMiwgOTI0MzksIDkyNDQ2LCA5MjQ1MywgOTI0NjAsIAorICAgIDkyNDY2LCA5MjQ3MSwgOTI0NzgsIDkyNDgzLCA5MjQ4OCwgOTI0OTcsIDkyNTA0LCA5MjUxMywgOTI1MjAsIDkyNTI1LCAKKyAgICA5MjUzMCwgOTI1MzgsIDkyNTQzLCA5MjU0OCwgOTI1NTMsIDkyNTU4LCA5MjU2MywgOTI1NzAsIDkyNTc1LCA5MjU4MCwgCisgICAgOTI1ODUsIDkyNTkwLCA5MjU5NSwgOTI2MDIsIDkyNjA5LCA5MjYxNiwgOTI2MjMsIDkyNjMwLCA5MjYzNywgOTI2NDQsIAorICAgIDkyNjUxLCA5MjY1OCwgOTI2NjUsIDkyNjcyLCA5MjY3OSwgOTI2ODYsIDkyNjkzLCA5MjcwMCwgOTI3MDcsIDkyNzE0LCAKKyAgICA5MjcyMSwgOTI3MjgsIDkyNzM1LCA5Mjc0MiwgOTI3NDksIDkyNzU2LCA5Mjc2MywgOTI3NzAsIDkyNzc3LCA5Mjc4NCwgCisgICAgOTI3OTEsIDAsIDAsIDAsIDAsIDAsIDkyNzk4LCA5MjgwNiwgOTI4MTQsIDAsIDAsIDAsIDAsIDkyODE5LCA5MjgyMywgCisgICAgOTI4MjcsIDkyODMxLCA5MjgzNSwgOTI4MzksIDkyODQzLCA5Mjg0OCwgOTI4NTIsIDkyODU3LCA5Mjg2MiwgOTI4NjcsIAorICAgIDkyODcyLCA5Mjg3NywgOTI4ODIsIDkyODg3LCA5Mjg5MiwgOTI4OTcsIDkyOTAyLCA5MjkwOCwgOTI5MTQsIDkyOTIwLCAKKyAgICA5MjkyNywgOTI5MzQsIDkyOTQxLCA5Mjk0OCwgOTI5NTUsIDkyOTYyLCA5Mjk2OCwgOTI5NzQsIDkyOTgwLCA5Mjk4NywgCisgICAgOTI5OTQsIDkzMDAxLCA5MzAwOCwgOTMwMTUsIDkzMDIyLCA5MzAyOSwgOTMwMzYsIDkzMDQzLCA5MzA1MCwgOTMwNTcsIAorICAgIDkzMDY0LCA5MzA3MSwgOTMwNzgsIDAsIDAsIDAsIDkzMDg1LCA5MzA5MywgOTMxMDEsIDkzMTA5LCA5MzExNywgOTMxMjUsIAorICAgIDkzMTM1LCA5MzE0NSwgOTMxNTMsIDkzMTYxLCA5MzE2OSwgOTMxNzcsIDkzMTg1LCA5MzE5MSwgOTMxOTgsIDkzMjA3LCAKKyAgICA5MzIxNiwgOTMyMjUsIDkzMjM0LCA5MzI0MywgOTMyNTIsIDkzMjYyLCA5MzI3MywgOTMyODMsIDkzMjk0LCA5MzMwMywgCisgICAgOTMzMTIsIDkzMzIxLCA5MzMzMSwgOTMzNDIsIDkzMzUyLCA5MzM2MywgOTMzNzQsIDkzMzgzLCA5MzM5MSwgOTMzOTcsIAorICAgIDkzNDAzLCA5MzQwOSwgOTM0MTUsIDkzNDIzLCA5MzQzMSwgOTM0MzcsIDkzNDQ0LCA5MzQ1NCwgOTM0NjEsIDkzNDY4LCAKKyAgICA5MzQ3NSwgOTM0ODIsIDkzNDg5LCA5MzQ5OSwgOTM1MDYsIDkzNTEzLCA5MzUyMSwgOTM1MjksIDkzNTM4LCA5MzU0NywgCisgICAgOTM1NTYsIDkzNTY1LCA5MzU3NCwgOTM1ODIsIDkzNTkxLCA5MzYwMCwgOTM2MDksIDkzNjEzLCA5MzYyMCwgOTM2MjUsIAorICAgIDkzNjMwLCA5MzYzNCwgOTM2MzgsIDkzNjQyLCA5MzY0NiwgOTM2NTEsIDkzNjU2LCA5MzY2MiwgOTM2NjgsIDkzNjcyLCAKKyAgICA5MzY3OCwgOTM2ODIsIDkzNjg2LCA5MzY5MCwgOTM2OTQsIDkzNjk4LCA5MzcwMiwgOTM3MDgsIDkzNzEyLCA5MzcxNywgCisgICAgOTM3MjEsIDkzNzI1LCAwLCA5MzcyOCwgOTM3MzMsIDkzNzM4LCA5Mzc0MywgOTM3NDgsIDkzNzU1LCA5Mzc2MCwgOTM3NjUsIAorICAgIDkzNzcwLCA5Mzc3NSwgOTM3ODAsIDkzNzg1LCAwLCAwLCAwLCAwLCA5Mzc5MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTI5NjYsIDkyOTczLCA5Mjk4MiwgOTI5OTEsIDkyOTk4LCAKLSAgICA5MzAwNSwgOTMwMTIsIDkzMDE5LCA5MzAyNiwgOTMwMzMsIDkzMDM5LCA5MzA0NiwgOTMwNTMsIDkzMDYwLCA5MzA2NywgCi0gICAgOTMwNzQsIDkzMDgxLCA5MzA4OCwgOTMwOTUsIDkzMTA0LCA5MzExMSwgOTMxMTgsIDkzMTI1LCA5MzEzMiwgOTMxMzksIAotICAgIDkzMTQ2LCA5MzE1MywgOTMxNjAsIDkzMTY5LCA5MzE3NiwgOTMxODMsIDkzMTkwLCA5MzE5NywgOTMyMDQsIDkzMjExLCAKLSAgICA5MzIyMCwgOTMyMjcsIDkzMjM0LCA5MzI0MSwgOTMyNDgsIDkzMjU3LCA5MzI2NCwgOTMyNzEsIDkzMjc4LCA5MzI4NiwgCi0gICAgOTMyOTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkzNzk2LCA5MzgwMywgOTM4MTIsIDkzODIxLCAKKyAgICA5MzgyOCwgOTM4MzUsIDkzODQyLCA5Mzg0OSwgOTM4NTYsIDkzODYzLCA5Mzg2OSwgOTM4NzYsIDkzODgzLCA5Mzg5MCwgCisgICAgOTM4OTcsIDkzOTA0LCA5MzkxMSwgOTM5MTgsIDkzOTI1LCA5MzkzNCwgOTM5NDEsIDkzOTQ4LCA5Mzk1NSwgOTM5NjIsIAorICAgIDkzOTY5LCA5Mzk3NiwgOTM5ODMsIDkzOTkwLCA5Mzk5OSwgOTQwMDYsIDk0MDEzLCA5NDAyMCwgOTQwMjcsIDk0MDM0LCAKKyAgICA5NDA0MSwgOTQwNTAsIDk0MDU3LCA5NDA2NCwgOTQwNzEsIDk0MDc4LCA5NDA4NywgOTQwOTQsIDk0MTAxLCA5NDEwOCwgCisgICAgOTQxMTYsIDk0MTI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MzMwNCwgOTMzMDgsIDkzMzEyLCA5MzMxNywgOTMzMjIsIAotICAgIDkzMzI3LCA5MzMzMiwgOTMzMzYsIDkzMzQxLCA5MzM0NiwgOTMzNTEsIDkzMzU2LCA5MzM2MSwgOTMzNjYsIDkzMzcwLCAKLSAgICA5MzM3NSwgOTMzODAsIDkzMzg1LCA5MzM5MCwgOTMzOTQsIDkzMzk5LCA5MzQwNCwgOTM0MDgsIDkzNDEyLCA5MzQxNywgCi0gICAgOTM0MjIsIDkzNDI3LCA5MzQzMiwgOTM0MzcsIDAsIDAsIDAsIDkzNDQyLCA5MzQ0NiwgOTM0NTEsIDkzNDU2LCA5MzQ2MCwgCi0gICAgOTM0NjUsIDkzNDY5LCA5MzQ3NCwgOTM0NzksIDkzNDg0LCA5MzQ4OSwgOTM0OTQsIDkzNDk4LCA5MzUwMywgOTM1MDgsIAotICAgIDkzNTEzLCA5MzUxOCwgOTM1MjIsIDkzNTI3LCA5MzUzMSwgOTM1MzYsIDkzNTQxLCA5MzU0NiwgOTM1NTEsIDkzNTU2LCAKLSAgICA5MzU2MSwgOTM1NjUsIDkzNTY5LCA5MzU3NCwgOTM1NzksIDkzNTg0LCA5MzU4OSwgOTM1OTQsIDkzNTk5LCA5MzYwNCwgCi0gICAgOTM2MDksIDkzNjE0LCA5MzYxOSwgOTM2MjQsIDkzNjI5LCA5MzYzNCwgOTM2MzksIDkzNjQ0LCA5MzY0OSwgOTM2NTQsIAotICAgIDkzNjU5LCA5MzY2NCwgOTM2NjksIDkzNjc0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA5MzY3OSwgOTM2ODUsIDkzNjkwLCA5MzY5NSwgOTM3MDAsIDkzNzA1LCA5MzcxMCwgOTM3MTUsIDkzNzIxLCA5MzcyNiwgCi0gICAgOTM3MzIsIDkzNzM4LCA5Mzc0NCwgOTM3NTAsIDkzNzU2LCA5Mzc2MiwgOTM3NjgsIDkzNzc0LCA5Mzc4MCwgOTM3ODYsIAotICAgIDkzNzkzLCA5MzgwMCwgOTM4MDcsIDkzODE1LCA5MzgyMywgOTM4MzEsIDkzODM5LCA5Mzg0NywgMCwgMCwgMCwgMCwgCi0gICAgOTM4NTUsIDkzODU5LCA5Mzg2NCwgOTM4NjksIDkzODc0LCA5Mzg3OCwgOTM4ODMsIDkzODg4LCA5Mzg5MywgOTM4OTgsIAotICAgIDkzOTAyLCA5MzkwNiwgOTM5MTEsIDkzOTE2LCA5MzkyMSwgOTM5MjYsIDkzOTMwLCA5MzkzNSwgOTM5NDAsIDkzOTQ1LCAKLSAgICA5Mzk1MCwgOTM5NTUsIDkzOTYwLCA5Mzk2NCwgOTM5NjksIDkzOTc0LCA5Mzk3OSwgOTM5ODQsIDkzOTg5LCA5Mzk5NCwgCi0gICAgOTM5OTksIDk0MDA0LCA5NDAwOSwgOTQwMTQsIDk0MDE5LCA5NDAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgOTQwMzEsIDk0MDM2LCA5NDA0MSwgOTQwNDYsIDk0MDUxLCA5NDA1NiwgOTQwNjEsIDk0MDY2LCA5NDA3MSwgCi0gICAgOTQwNzYsIDk0MDgxLCA5NDA4NiwgOTQwOTEsIDk0MDk2LCA5NDEwMSwgOTQxMDYsIDk0MTExLCA5NDExNiwgOTQxMjEsIAotICAgIDk0MTI2LCA5NDEzMSwgOTQxMzYsIDk0MTQxLCA5NDE0NiwgOTQxNTEsIDk0MTU2LCA5NDE2MSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgOTQxNjgsIDk0MTc0LCA5NDE4MCwgOTQxODYsIDk0MTkyLCA5NDE5NywgOTQyMDMsIDk0MjA5LCA5NDIxNSwgOTQyMjEsIAotICAgIDk0MjI2LCA5NDIzMiwgOTQyMzgsIDk0MjQ0LCA5NDI1MCwgOTQyNTYsIDk0MjYyLCA5NDI2OCwgOTQyNzQsIDk0MjgwLCAKLSAgICA5NDI4NSwgOTQyOTEsIDk0Mjk3LCA5NDMwMywgOTQzMDksIDk0MzE1LCA5NDMyMCwgOTQzMjYsIDk0MzMyLCA5NDMzNywgCi0gICAgOTQzNDMsIDk0MzQ5LCA5NDM1NSwgOTQzNjEsIDk0MzY3LCA5NDM3MywgOTQzNzksIDk0Mzg0LCA5NDM5MCwgOTQzOTcsIAotICAgIDk0NDA0LCA5NDQxMSwgOTQ0MTgsIDAsIDAsIDAsIDAsIDAsIDk0NDI1LCA5NDQzMCwgOTQ0MzUsIDk0NDQwLCA5NDQ0NSwgCi0gICAgOTQ0NTAsIDk0NDU1LCA5NDQ2MCwgOTQ0NjUsIDk0NDcwLCA5NDQ3NSwgOTQ0ODAsIDk0NDg1LCA5NDQ5MCwgOTQ0OTUsIAotICAgIDk0NTAwLCA5NDUwNSwgOTQ1MTAsIDk0NTE1LCA5NDUyMCwgOTQ1MjUsIDk0NTMwLCA5NDUzNSwgOTQ1NDAsIDk0NTQ1LCAKLSAgICA5NDU1MCwgOTQ1NTUsIDk0NTU5LCA5NDU2MywgOTQ1NjcsIDAsIDk0NTcyLCA5NDU3OCwgOTQ1ODMsIDk0NTg4LCA5NDU5MywgCi0gICAgOTQ1OTgsIDk0NjA0LCA5NDYxMCwgOTQ2MTYsIDk0NjIyLCA5NDYyOCwgOTQ2MzQsIDk0NjQwLCA5NDY0NiwgOTQ2NTIsIAotICAgIDk0NjU4LCA5NDY2NCwgOTQ2NzAsIDk0Njc2LCA5NDY4MSwgOTQ2ODcsIDk0NjkzLCA5NDY5OSwgOTQ3MDUsIDk0NzEwLCAKLSAgICA5NDcxNiwgOTQ3MjIsIDk0NzI3LCA5NDczMywgOTQ3MzksIDk0NzQ1LCA5NDc1MSwgOTQ3NTcsIDk0NzYzLCA5NDc2OSwgCi0gICAgOTQ3NzUsIDk0NzgxLCAwLCAwLCAwLCAwLCA5NDc4NiwgOTQ3OTIsIDk0Nzk4LCA5NDgwNCwgOTQ4MTAsIDk0ODE2LCAKLSAgICA5NDgyMiwgOTQ4MjgsIDk0ODM0LCA5NDg0MSwgOTQ4NDYsIDk0ODUxLCA5NDg1NywgOTQ4NjMsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk0MTM0LCA5NDEzOCwgOTQxNDIsIDk0MTQ3LCAKKyAgICA5NDE1MiwgOTQxNTcsIDk0MTYyLCA5NDE2NiwgOTQxNzEsIDk0MTc2LCA5NDE4MSwgOTQxODYsIDk0MTkxLCA5NDE5NiwgCisgICAgOTQyMDAsIDk0MjA1LCA5NDIxMCwgOTQyMTUsIDk0MjIwLCA5NDIyNCwgOTQyMjksIDk0MjM0LCA5NDIzOCwgOTQyNDMsIAorICAgIDk0MjQ4LCA5NDI1MywgOTQyNTgsIDk0MjYzLCA5NDI2OCwgMCwgMCwgMCwgOTQyNzMsIDk0Mjc3LCA5NDI4MiwgOTQyODcsIAorICAgIDk0MjkxLCA5NDI5NiwgOTQzMDAsIDk0MzA1LCA5NDMxMCwgOTQzMTUsIDk0MzIwLCA5NDMyNSwgOTQzMjksIDk0MzM0LCAKKyAgICA5NDMzOSwgOTQzNDQsIDk0MzQ5LCA5NDM1NCwgOTQzNTksIDk0MzYzLCA5NDM2OCwgOTQzNzMsIDk0Mzc4LCA5NDM4MywgCisgICAgOTQzODgsIDk0MzkzLCA5NDM5NywgOTQ0MDEsIDk0NDA2LCA5NDQxMSwgOTQ0MTYsIDk0NDIxLCA5NDQyNiwgOTQ0MzEsIAorICAgIDk0NDM2LCA5NDQ0MSwgOTQ0NDYsIDk0NDUxLCA5NDQ1NiwgOTQ0NjEsIDk0NDY2LCA5NDQ3MSwgOTQ0NzYsIDk0NDgxLCAKKyAgICA5NDQ4NiwgOTQ0OTEsIDk0NDk2LCA5NDUwMSwgOTQ1MDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDk0NTExLCA5NDUxNywgOTQ1MjIsIDk0NTI3LCA5NDUzMiwgOTQ1MzcsIDk0NTQyLCA5NDU0NywgOTQ1NTMsIAorICAgIDk0NTU4LCA5NDU2NCwgOTQ1NzAsIDk0NTc2LCA5NDU4MiwgOTQ1ODgsIDk0NTk0LCA5NDYwMCwgOTQ2MDYsIDk0NjEyLCAKKyAgICA5NDYxOCwgOTQ2MjUsIDk0NjMyLCA5NDYzOSwgOTQ2NDcsIDk0NjU1LCA5NDY2MywgOTQ2NzEsIDk0Njc5LCAwLCAwLCAwLCAKKyAgICAwLCA5NDY4NywgOTQ2OTEsIDk0Njk2LCA5NDcwMSwgOTQ3MDYsIDk0NzEwLCA5NDcxNSwgOTQ3MjAsIDk0NzI1LCA5NDczMCwgCisgICAgOTQ3MzQsIDk0NzM4LCA5NDc0MywgOTQ3NDgsIDk0NzUzLCA5NDc1OCwgOTQ3NjIsIDk0NzY3LCA5NDc3MiwgOTQ3NzcsIAorICAgIDk0NzgyLCA5NDc4NywgOTQ3OTIsIDk0Nzk2LCA5NDgwMSwgOTQ4MDYsIDk0ODExLCA5NDgxNiwgOTQ4MjEsIDk0ODI2LCAKKyAgICA5NDgzMSwgOTQ4MzYsIDk0ODQxLCA5NDg0NiwgOTQ4NTEsIDk0ODU3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA5NDg2MywgOTQ4NjgsIDk0ODczLCA5NDg3OCwgOTQ4ODMsIDk0ODg4LCA5NDg5MywgOTQ4OTgsIDk0OTAzLCAKKyAgICA5NDkwOCwgOTQ5MTMsIDk0OTE4LCA5NDkyMywgOTQ5MjgsIDk0OTMzLCA5NDkzOCwgOTQ5NDMsIDk0OTQ4LCA5NDk1MywgCisgICAgOTQ5NTgsIDk0OTYzLCA5NDk2OCwgOTQ5NzMsIDk0OTc4LCA5NDk4MywgOTQ5ODgsIDk0OTkzLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5NTAwMCwgOTUwMDYsIDk1MDEyLCA5NTAxOCwgOTUwMjQsIDk1MDI5LCA5NTAzNSwgOTUwNDEsIDk1MDQ3LCA5NTA1MywgCisgICAgOTUwNTgsIDk1MDY0LCA5NTA3MCwgOTUwNzYsIDk1MDgyLCA5NTA4OCwgOTUwOTQsIDk1MTAwLCA5NTEwNiwgOTUxMTIsIAorICAgIDk1MTE3LCA5NTEyMywgOTUxMjksIDk1MTM1LCA5NTE0MSwgOTUxNDcsIDk1MTUyLCA5NTE1OCwgOTUxNjQsIDk1MTY5LCAKKyAgICA5NTE3NSwgOTUxODEsIDk1MTg3LCA5NTE5MywgOTUxOTksIDk1MjA1LCA5NTIxMSwgOTUyMTYsIDk1MjIyLCA5NTIyOSwgCisgICAgOTUyMzYsIDk1MjQzLCA5NTI1MCwgMCwgMCwgMCwgMCwgMCwgOTUyNTcsIDk1MjYyLCA5NTI2NywgOTUyNzIsIDk1Mjc3LCAKKyAgICA5NTI4MiwgOTUyODcsIDk1MjkyLCA5NTI5NywgOTUzMDIsIDk1MzA3LCA5NTMxMiwgOTUzMTcsIDk1MzIyLCA5NTMyNywgCisgICAgOTUzMzIsIDk1MzM3LCA5NTM0MiwgOTUzNDcsIDk1MzUyLCA5NTM1NywgOTUzNjIsIDk1MzY3LCA5NTM3MiwgOTUzNzcsIAorICAgIDk1MzgyLCA5NTM4NywgOTUzOTEsIDk1Mzk1LCA5NTM5OSwgMCwgOTU0MDQsIDk1NDEwLCA5NTQxNSwgOTU0MjAsIDk1NDI1LCAKKyAgICA5NTQzMCwgOTU0MzYsIDk1NDQyLCA5NTQ0OCwgOTU0NTQsIDk1NDYwLCA5NTQ2NiwgOTU0NzIsIDk1NDc4LCA5NTQ4NCwgCisgICAgOTU0OTAsIDk1NDk2LCA5NTUwMiwgOTU1MDgsIDk1NTEzLCA5NTUxOSwgOTU1MjUsIDk1NTMwLCA5NTUzNiwgOTU1NDEsIAorICAgIDk1NTQ3LCA5NTU1MywgOTU1NTgsIDk1NTY0LCA5NTU3MCwgOTU1NzYsIDk1NTgyLCA5NTU4NywgOTU1OTMsIDk1NTk5LCAKKyAgICA5NTYwNSwgOTU2MTEsIDAsIDAsIDAsIDAsIDk1NjE2LCA5NTYyMiwgOTU2MjgsIDk1NjM0LCA5NTY0MCwgOTU2NDYsIAorICAgIDk1NjUyLCA5NTY1OCwgOTU2NjQsIDk1NjcxLCA5NTY3NiwgOTU2ODEsIDk1Njg3LCA5NTY5MywgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTQ4NjksIDk0ODc1LCA5NDg4MSwgOTQ4ODcsIDk0ODk0LCAKLSAgICA5NDkwMCwgOTQ5MDcsIDk0OTE0LCA5NDkyMSwgOTQ5MjgsIDk0OTM2LCA5NDk0MywgOTQ5NTEsIDk0OTU3LCA5NDk2MywgCi0gICAgOTQ5NjksIDk0OTc1LCA5NDk4MSwgOTQ5ODcsIDk0OTkzLCA5NDk5OSwgOTUwMDUsIDk1MDExLCA5NTAxNywgOTUwMjMsIAotICAgIDk1MDI5LCA5NTAzNSwgOTUwNDEsIDk1MDQ3LCA5NTA1MywgOTUwNTksIDk1MDY1LCA5NTA3MSwgOTUwNzcsIDk1MDgzLCAKLSAgICA5NTA4OSwgOTUwOTUsIDk1MTAxLCA5NTEwNywgOTUxMTMsIDk1MTE5LCA5NTEyNSwgOTUxMzEsIDk1MTM3LCA5NTE0NCwgCi0gICAgOTUxNTAsIDk1MTU3LCA5NTE2NCwgOTUxNzEsIDk1MTc4LCA5NTE4NiwgOTUxOTMsIDk1MjAxLCA5NTIwNywgOTUyMTMsIAotICAgIDk1MjE5LCA5NTIyNSwgOTUyMzEsIDk1MjM3LCA5NTI0MywgOTUyNDksIDk1MjU1LCA5NTI2MSwgOTUyNjcsIDk1MjczLCAKLSAgICA5NTI3OSwgOTUyODUsIDk1MjkxLCA5NTI5NywgOTUzMDMsIDk1MzA5LCA5NTMxNSwgOTUzMjEsIDk1MzI3LCA5NTMzMywgCi0gICAgOTUzMzksIDk1MzQ1LCA5NTM1MSwgOTUzNTcsIDk1MzYzLCA5NTM2OSwgOTUzNzQsIDk1Mzc5LCA5NTM4NCwgOTUzODksIAotICAgIDk1Mzk0LCA5NTM5OSwgOTU0MDQsIDk1NDA5LCA5NTQxNCwgOTU0MTksIDk1NDI0LCA5NTQyOSwgOTU0MzQsIDk1NDM5LCAKLSAgICA5NTQ0NCwgOTU0NDksIDk1NDU0LCA5NTQ1OSwgOTU0NjQsIDk1NDY5LCA5NTQ3NCwgOTU0NzksIDk1NDg0LCA5NTQ4OSwgCi0gICAgOTU0OTQsIDk1NDk5LCA5NTUwNCwgOTU1MDksIDk1NTE0LCA5NTUxOSwgOTU1MjQsIDk1NTI5LCA5NTUzNCwgOTU1MzksIAotICAgIDk1NTQ0LCA5NTU0OSwgOTU1NTQsIDk1NTU5LCA5NTU2NCwgOTU1NjksIDk1NTc0LCA5NTU3OSwgOTU1ODQsIDk1NTg5LCAKLSAgICA5NTU5NCwgOTU1OTksIDk1NjA0LCA5NTYwOSwgOTU2MTQsIDk1NjE5LCA5NTYyNCwgOTU2MjksIDk1NjM0LCA5NTYzOSwgCi0gICAgOTU2NDQsIDk1NjQ5LCA5NTY1NCwgOTU2NTksIDk1NjY0LCA5NTY2OSwgOTU2NzQsIDk1Njc5LCA5NTY4NCwgOTU2ODksIAotICAgIDk1Njk0LCA5NTY5OSwgOTU3MDQsIDk1NzA5LCA5NTcxMywgOTU3MTcsIDk1NzIxLCA5NTcyNSwgOTU3MjksIDk1NzMzLCAKLSAgICA5NTczNywgOTU3NDIsIDk1NzQ3LCAwLCAwLCA5NTc1MiwgOTU3NTcsIDk1NzYxLCA5NTc2NSwgOTU3NjksIDk1NzczLCAKLSAgICA5NTc3NywgOTU3ODEsIDk1Nzg2LCA5NTc5MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTU2OTksIDk1NzA1LCA5NTcxMSwgOTU3MTcsIDk1NzI0LCAKKyAgICA5NTczMCwgOTU3MzcsIDk1NzQ0LCA5NTc1MSwgOTU3NTgsIDk1NzY2LCA5NTc3MywgOTU3ODEsIDk1Nzg3LCA5NTc5MywgCisgICAgOTU3OTksIDk1ODA1LCA5NTgxMSwgOTU4MTcsIDk1ODIzLCA5NTgyOSwgOTU4MzUsIDk1ODQxLCA5NTg0NywgOTU4NTMsIAorICAgIDk1ODU5LCA5NTg2NSwgOTU4NzEsIDk1ODc3LCA5NTg4MywgOTU4ODksIDk1ODk1LCA5NTkwMSwgOTU5MDcsIDk1OTEzLCAKKyAgICA5NTkxOSwgOTU5MjUsIDk1OTMxLCA5NTkzNywgOTU5NDMsIDk1OTQ5LCA5NTk1NSwgOTU5NjEsIDk1OTY3LCA5NTk3NCwgCisgICAgOTU5ODAsIDk1OTg3LCA5NTk5NCwgOTYwMDEsIDk2MDA4LCA5NjAxNiwgOTYwMjMsIDk2MDMxLCA5NjAzNywgOTYwNDMsIAorICAgIDk2MDQ5LCA5NjA1NSwgOTYwNjEsIDk2MDY3LCA5NjA3MywgOTYwNzksIDk2MDg1LCA5NjA5MSwgOTYwOTcsIDk2MTAzLCAKKyAgICA5NjEwOSwgOTYxMTUsIDk2MTIxLCA5NjEyNywgOTYxMzMsIDk2MTM5LCA5NjE0NSwgOTYxNTEsIDk2MTU3LCA5NjE2MywgCisgICAgOTYxNjksIDk2MTc1LCA5NjE4MSwgOTYxODcsIDk2MTkzLCA5NjE5OSwgOTYyMDQsIDk2MjA5LCA5NjIxNCwgOTYyMTksIAorICAgIDk2MjI0LCA5NjIyOSwgOTYyMzQsIDk2MjM5LCA5NjI0NCwgOTYyNDksIDk2MjU0LCA5NjI1OSwgOTYyNjQsIDk2MjY5LCAKKyAgICA5NjI3NCwgOTYyNzksIDk2Mjg0LCA5NjI4OSwgOTYyOTQsIDk2Mjk5LCA5NjMwNCwgOTYzMDksIDk2MzE0LCA5NjMxOSwgCisgICAgOTYzMjQsIDk2MzI5LCA5NjMzNCwgOTYzMzksIDk2MzQ0LCA5NjM0OSwgOTYzNTQsIDk2MzU5LCA5NjM2NCwgOTYzNjksIAorICAgIDk2Mzc0LCA5NjM3OSwgOTYzODQsIDk2Mzg5LCA5NjM5NCwgOTYzOTksIDk2NDA0LCA5NjQwOSwgOTY0MTQsIDk2NDE5LCAKKyAgICA5NjQyNCwgOTY0MjksIDk2NDM0LCA5NjQzOSwgOTY0NDQsIDk2NDQ5LCA5NjQ1NCwgOTY0NTksIDk2NDY0LCA5NjQ2OSwgCisgICAgOTY0NzQsIDk2NDc5LCA5NjQ4NCwgOTY0ODksIDk2NDk0LCA5NjQ5OSwgOTY1MDQsIDk2NTA5LCA5NjUxNCwgOTY1MTksIAorICAgIDk2NTI0LCA5NjUyOSwgOTY1MzQsIDk2NTM5LCA5NjU0MywgOTY1NDcsIDk2NTUxLCA5NjU1NSwgOTY1NTksIDk2NTYzLCAKKyAgICA5NjU2NywgOTY1NzIsIDk2NTc3LCAwLCAwLCA5NjU4MiwgOTY1ODcsIDk2NTkxLCA5NjU5NSwgOTY1OTksIDk2NjAzLCAKKyAgICA5NjYwNywgOTY2MTEsIDk2NjE2LCA5NjYyMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTY2MjUsIDk2NjMwLCA5NjYzNiwgOTY2NDIsIAorICAgIDk2NjQ4LCA5NjY1NCwgOTY2NjAsIDk2NjY2LCA5NjY3MSwgOTY2NzcsIDk2NjgyLCA5NjY4OCwgOTY2OTMsIDk2Njk4LCAKKyAgICA5NjcwNCwgOTY3MTAsIDk2NzE1LCA5NjcyMCwgOTY3MjUsIDk2NzMwLCA5NjczNiwgOTY3NDEsIDk2NzQ3LCA5Njc1MywgCisgICAgOTY3NTksIDk2NzY1LCA5Njc3MSwgOTY3NzcsIDk2NzgzLCA5Njc4OSwgOTY3OTUsIDk2ODAwLCA5NjgwNiwgOTY4MTIsIAorICAgIDk2ODE4LCA5NjgyNCwgMCwgMCwgMCwgMCwgOTY4MzAsIDk2ODM1LCA5Njg0MSwgOTY4NDcsIDk2ODUzLCA5Njg1OSwgCisgICAgOTY4NjUsIDk2ODcxLCA5Njg3NiwgOTY4ODIsIDk2ODg3LCA5Njg5MywgOTY4OTgsIDk2OTAzLCA5NjkwOSwgOTY5MTUsIAorICAgIDk2OTIwLCA5NjkyNSwgOTY5MzAsIDk2OTM1LCA5Njk0MSwgOTY5NDYsIDk2OTUyLCA5Njk1OCwgOTY5NjQsIDk2OTcwLCAKKyAgICA5Njk3NiwgOTY5ODIsIDk2OTg4LCA5Njk5NCwgOTcwMDAsIDk3MDA1LCA5NzAxMSwgOTcwMTcsIDk3MDIzLCA5NzAyOSwgMCwgCisgICAgMCwgMCwgMCwgOTcwMzUsIDk3MDM5LCA5NzA0NCwgOTcwNDksIDk3MDU0LCA5NzA1OSwgOTcwNjQsIDk3MDY5LCA5NzA3NCwgCisgICAgOTcwNzgsIDk3MDgzLCA5NzA4OCwgOTcwOTMsIDk3MDk4LCA5NzEwMiwgOTcxMDcsIDk3MTEyLCA5NzExNywgOTcxMjIsIAorICAgIDk3MTI3LCA5NzEzMiwgOTcxMzYsIDk3MTQxLCA5NzE0NSwgOTcxNTAsIDk3MTU1LCA5NzE2MCwgOTcxNjUsIDk3MTcwLCAKKyAgICA5NzE3NSwgOTcxODAsIDk3MTg1LCA5NzE4OSwgOTcxOTQsIDk3MTk5LCA5NzIwNCwgOTcyMDksIDk3MjE0LCA5NzIxOSwgCisgICAgOTcyMjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk3MjI5LCA5NzIzNiwgOTcyNDMsIDk3MjUwLCA5NzI1NywgOTcyNjQsIAorICAgIDk3MjcxLCA5NzI3OCwgOTcyODUsIDk3MjkyLCA5NzI5OSwgOTczMDYsIDk3MzEzLCA5NzMyMCwgOTczMjcsIDk3MzM0LCAKKyAgICA5NzM0MSwgOTczNDgsIDk3MzU1LCA5NzM2MiwgOTczNjksIDk3Mzc2LCA5NzM4MywgOTczOTAsIDk3Mzk3LCA5NzQwNCwgCisgICAgOTc0MTEsIDk3NDE4LCA5NzQyNSwgOTc0MzIsIDk3NDM5LCA5NzQ0NiwgOTc0NTMsIDk3NDYwLCA5NzQ2NywgOTc0NzQsIAorICAgIDk3NDgxLCA5NzQ4OCwgOTc0OTUsIDk3NTAyLCA5NzUwOSwgOTc1MTYsIDk3NTIzLCA5NzUzMCwgOTc1MzcsIDk3NTQ0LCAKKyAgICA5NzU1MSwgOTc1NTgsIDk3NTY1LCA5NzU3MiwgOTc1NzksIDk3NTg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA5NzU5MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgOTU3OTUsIDk1Nzk5LCA5NTgwNCwgOTU4MDksIDk1ODE0LCA5NTgxOSwgOTU4MjQsIDk1ODI5LCA5NTgzNCwgOTU4MzgsIAotICAgIDk1ODQzLCA5NTg0OCwgOTU4NTMsIDk1ODU4LCA5NTg2MiwgOTU4NjcsIDk1ODcyLCA5NTg3NywgOTU4ODIsIDk1ODg3LCAKLSAgICA5NTg5MiwgOTU4OTcsIDk1OTAyLCA5NTkwNiwgOTU5MTEsIDk1OTE2LCA5NTkyMSwgOTU5MjYsIDk1OTMxLCA5NTkzNiwgCi0gICAgOTU5NDEsIDk1OTQ2LCA5NTk1MCwgOTU5NTUsIDk1OTYwLCA5NTk2NSwgOTU5NzAsIDk1OTc1LCA5NTk4MCwgOTU5ODUsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk1OTkwLCA5NTk5NywgOTYwMDQsIDk2MDExLCA5NjAxOCwgOTYwMjUsIDk2MDMyLCAKLSAgICA5NjAzOSwgOTYwNDYsIDk2MDUzLCA5NjA2MCwgOTYwNjcsIDk2MDc0LCA5NjA4MSwgOTYwODgsIDk2MDk1LCA5NjEwMiwgCi0gICAgOTYxMDksIDk2MTE2LCA5NjEyMywgOTYxMzAsIDk2MTM3LCA5NjE0NCwgOTYxNTEsIDk2MTU4LCA5NjE2NSwgOTYxNzIsIAotICAgIDk2MTc5LCA5NjE4NiwgOTYxOTMsIDk2MjAwLCA5NjIwNywgOTYyMTQsIDk2MjIxLCA5NjIyOCwgOTYyMzUsIDk2MjQyLCAKLSAgICA5NjI0OSwgOTYyNTYsIDk2MjYzLCA5NjI3MCwgOTYyNzcsIDk2Mjg0LCA5NjI5MSwgOTYyOTgsIDk2MzA1LCA5NjMxMiwgCi0gICAgOTYzMTksIDk2MzI2LCA5NjMzMywgOTYzNDAsIDk2MzQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA5NjM1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOTc2MDAsIDk3NjA1LCA5NzYxMCwgOTc2MTUsIDk3NjIwLCA5NzYyNSwgOTc2MzAsIDk3NjM1LCA5NzY0MCwgCisgICAgOTc2NDUsIDk3NjUwLCA5NzY1NSwgOTc2NjAsIDk3NjY1LCA5NzY3MCwgOTc2NzUsIDk3NjgwLCA5NzY4NSwgOTc2OTAsIAorICAgIDk3Njk1LCA5NzcwMCwgOTc3MDUsIDk3NzEwLCA5NzcxNSwgOTc3MjAsIDk3NzI1LCA5NzczMCwgOTc3MzUsIDk3NzQwLCAKKyAgICA5Nzc0NSwgOTc3NTAsIDk3NzU1LCA5Nzc2MCwgOTc3NjUsIDk3NzcwLCA5Nzc3NSwgOTc3ODAsIDk3Nzg1LCA5Nzc5MCwgCisgICAgOTc3OTUsIDk3ODAwLCA5NzgwNSwgOTc4MTAsIDk3ODE1LCA5NzgyMCwgOTc4MjUsIDk3ODMwLCA5NzgzNSwgOTc4NDAsIAorICAgIDk3ODQ1LCA5Nzg1MCwgOTc4NTUsIDk3ODYwLCA5Nzg2NSwgOTc4NzAsIDk3ODc1LCA5Nzg4MCwgOTc4ODUsIDk3ODkwLCAKKyAgICA5Nzg5NSwgOTc5MDAsIDk3OTA1LCA5NzkxMCwgOTc5MTUsIDk3OTIwLCA5NzkyNSwgOTc5MzAsIDk3OTM1LCA5Nzk0MCwgCisgICAgOTc5NDUsIDk3OTUwLCA5Nzk1NSwgOTc5NjAsIDk3OTY1LCA5Nzk3MCwgOTc5NzUsIDk3OTgwLCA5Nzk4NSwgOTc5OTAsIAorICAgIDk3OTk1LCA5ODAwMCwgOTgwMDUsIDk4MDEwLCA5ODAxNSwgOTgwMjAsIDk4MDI1LCA5ODAzMCwgOTgwMzUsIDk4MDQwLCAKKyAgICA5ODA0NSwgOTgwNTAsIDk4MDU1LCA5ODA2MCwgOTgwNjUsIDk4MDcwLCA5ODA3NSwgOTgwODAsIDk4MDg1LCA5ODA5MCwgCisgICAgOTgwOTUsIDk4MTAwLCA5ODEwNSwgOTgxMTAsIDk4MTE1LCA5ODEyMCwgOTgxMjUsIDk4MTMwLCA5ODEzNSwgOTgxNDAsIAorICAgIDk4MTQ1LCA5ODE1MCwgOTgxNTUsIDk4MTYwLCA5ODE2NSwgOTgxNzAsIDk4MTc1LCA5ODE4MCwgOTgxODUsIDk4MTkwLCAKKyAgICA5ODE5NSwgOTgyMDAsIDk4MjA1LCA5ODIxMCwgOTgyMTUsIDk4MjIwLCA5ODIyNSwgOTgyMzAsIDk4MjM1LCA5ODI0MCwgCisgICAgOTgyNDUsIDk4MjUwLCA5ODI1NSwgOTgyNjAsIDk4MjY1LCA5ODI3MCwgOTgyNzUsIDk4MjgwLCA5ODI4NSwgOTgyOTAsIAorICAgIDk4Mjk1LCA5ODMwMCwgOTgzMDUsIDk4MzEwLCA5ODMxNSwgOTgzMjAsIDk4MzI1LCA5ODMzMCwgOTgzMzUsIDk4MzQwLCAKKyAgICA5ODM0NSwgOTgzNTAsIDk4MzU1LCA5ODM2MCwgOTgzNjUsIDk4MzcwLCA5ODM3NSwgOTgzODAsIDk4Mzg1LCA5ODM5MCwgCisgICAgOTgzOTUsIDk4NDAwLCA5ODQwNSwgOTg0MTAsIDk4NDE1LCA5ODQyMCwgOTg0MjUsIDk4NDMwLCA5ODQzNSwgOTg0NDAsIAorICAgIDk4NDQ1LCA5ODQ1MCwgOTg0NTUsIDk4NDYwLCA5ODQ2NSwgOTg0NzAsIDk4NDc1LCA5ODQ4MCwgOTg0ODUsIDk4NDkwLCAKKyAgICA5ODQ5NSwgOTg1MDAsIDk4NTA1LCA5ODUxMCwgOTg1MTUsIDk4NTIwLCA5ODUyNSwgOTg1MzAsIDk4NTM1LCA5ODU0MCwgCisgICAgOTg1NDUsIDk4NTUwLCA5ODU1NSwgOTg1NjAsIDk4NTY1LCA5ODU3MCwgOTg1NzUsIDk4NTgwLCA5ODU4NSwgOTg1OTAsIAorICAgIDk4NTk1LCA5ODYwMCwgOTg2MDUsIDk4NjEwLCA5ODYxNSwgOTg2MjAsIDk4NjI1LCA5ODYzMCwgOTg2MzUsIDk4NjQwLCAKKyAgICA5ODY0NSwgOTg2NTAsIDk4NjU1LCA5ODY2MCwgOTg2NjUsIDk4NjcwLCA5ODY3NSwgOTg2ODAsIDk4Njg1LCA5ODY5MCwgCisgICAgOTg2OTUsIDk4NzAwLCA5ODcwNSwgOTg3MTAsIDk4NzE1LCA5ODcyMCwgOTg3MjUsIDk4NzMwLCA5ODczNSwgOTg3NDAsIAorICAgIDk4NzQ1LCA5ODc1MCwgOTg3NTUsIDk4NzYwLCA5ODc2NSwgOTg3NzAsIDk4Nzc1LCA5ODc4MCwgOTg3ODUsIDk4NzkwLCAKKyAgICA5ODc5NSwgOTg4MDAsIDk4ODA1LCA5ODgxMCwgOTg4MTUsIDk4ODIwLCA5ODgyNSwgOTg4MzAsIDk4ODM1LCA5ODg0MCwgCisgICAgOTg4NDUsIDk4ODUwLCA5ODg1NSwgOTg4NjAsIDk4ODY1LCA5ODg3MCwgOTg4NzUsIDk4ODgwLCA5ODg4NSwgOTg4OTAsIAorICAgIDk4ODk1LCA5ODkwMCwgOTg5MDUsIDk4OTEwLCA5ODkxNSwgOTg5MjAsIDk4OTI1LCA5ODkzMCwgOTg5MzUsIDk4OTQwLCAKKyAgICA5ODk0NSwgOTg5NTAsIDk4OTU1LCA5ODk2MCwgOTg5NjUsIDk4OTcwLCA5ODk3NSwgOTg5ODAsIDk4OTg1LCA5ODk5MCwgCisgICAgOTg5OTUsIDk5MDAwLCA5OTAwNSwgOTkwMTAsIDk5MDE1LCA5OTAyMCwgOTkwMjUsIDk5MDMwLCA5OTAzNSwgOTkwNDAsIAorICAgIDk5MDQ1LCA5OTA1MCwgOTkwNTUsIDk5MDYwLCA5OTA2NSwgOTkwNzAsIDk5MDc1LCA5OTA4MCwgOTkwODUsIDk5MDkwLCAKKyAgICA5OTA5NSwgOTkxMDAsIDk5MTA1LCA5OTExMCwgOTkxMTUsIDk5MTIwLCA5OTEyNSwgOTkxMzAsIDk5MTM1LCA5OTE0MCwgCisgICAgOTkxNDUsIDk5MTUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5OTE1NSwgOTkxNjEsIDk5MTY4LCA5OTE3NSwgCisgICAgOTkxODEsIDk5MTg4LCA5OTE5NSwgOTkyMDIsIDk5MjA5LCA5OTIxNSwgOTkyMjIsIDk5MjI5LCA5OTIzNiwgOTkyNDMsIAorICAgIDk5MjUwLCA5OTI1NywgOTkyNjQsIDk5MjcxLCA5OTI3OCwgOTkyODUsIDk5MjkyLCA5OTI5OSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOTkzMDYsIDk5MzExLCA5OTMxNiwgOTkzMjEsIDk5MzI2LCA5OTMzMSwgOTkzMzYsIDk5MzQxLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA5NjM2MSwgOTYzNjYsIDk2MzcxLCA5NjM3NiwgOTYzODEsIDk2Mzg2LCA5NjM5MSwgOTYzOTYsIDk2NDAxLCAKLSAgICA5NjQwNiwgOTY0MTEsIDk2NDE2LCA5NjQyMSwgOTY0MjYsIDk2NDMxLCA5NjQzNiwgOTY0NDEsIDk2NDQ2LCA5NjQ1MSwgCi0gICAgOTY0NTYsIDk2NDYxLCA5NjQ2NiwgOTY0NzEsIDk2NDc2LCA5NjQ4MSwgOTY0ODYsIDk2NDkxLCA5NjQ5NiwgOTY1MDEsIAotICAgIDk2NTA2LCA5NjUxMSwgOTY1MTYsIDk2NTIxLCA5NjUyNiwgOTY1MzEsIDk2NTM2LCA5NjU0MSwgOTY1NDYsIDk2NTUxLCAKLSAgICA5NjU1NiwgOTY1NjEsIDk2NTY2LCA5NjU3MSwgOTY1NzYsIDk2NTgxLCA5NjU4NiwgOTY1OTEsIDk2NTk2LCA5NjYwMSwgCi0gICAgOTY2MDYsIDk2NjExLCA5NjYxNiwgOTY2MjEsIDk2NjI2LCA5NjYzMSwgOTY2MzYsIDk2NjQxLCA5NjY0NiwgOTY2NTEsIAotICAgIDk2NjU2LCA5NjY2MSwgOTY2NjYsIDk2NjcxLCA5NjY3NiwgOTY2ODEsIDk2Njg2LCA5NjY5MSwgOTY2OTYsIDk2NzAxLCAKLSAgICA5NjcwNiwgOTY3MTEsIDk2NzE2LCA5NjcyMSwgOTY3MjYsIDk2NzMxLCA5NjczNiwgOTY3NDEsIDk2NzQ2LCA5Njc1MSwgCi0gICAgOTY3NTYsIDk2NzYxLCA5Njc2NiwgOTY3NzEsIDk2Nzc2LCA5Njc4MSwgOTY3ODYsIDk2NzkxLCA5Njc5NiwgOTY4MDEsIAotICAgIDk2ODA2LCA5NjgxMSwgOTY4MTYsIDk2ODIxLCA5NjgyNiwgOTY4MzEsIDk2ODM2LCA5Njg0MSwgOTY4NDYsIDk2ODUxLCAKLSAgICA5Njg1NiwgOTY4NjEsIDk2ODY2LCA5Njg3MSwgOTY4NzYsIDk2ODgxLCA5Njg4NiwgOTY4OTEsIDk2ODk2LCA5NjkwMSwgCi0gICAgOTY5MDYsIDk2OTExLCA5NjkxNiwgOTY5MjEsIDk2OTI2LCA5NjkzMSwgOTY5MzYsIDk2OTQxLCA5Njk0NiwgOTY5NTEsIAotICAgIDk2OTU2LCA5Njk2MSwgOTY5NjYsIDk2OTcxLCA5Njk3NiwgOTY5ODEsIDk2OTg2LCA5Njk5MSwgOTY5OTYsIDk3MDAxLCAKLSAgICA5NzAwNiwgOTcwMTEsIDk3MDE2LCA5NzAyMSwgOTcwMjYsIDk3MDMxLCA5NzAzNiwgOTcwNDEsIDk3MDQ2LCA5NzA1MSwgCi0gICAgOTcwNTYsIDk3MDYxLCA5NzA2NiwgOTcwNzEsIDk3MDc2LCA5NzA4MSwgOTcwODYsIDk3MDkxLCA5NzA5NiwgOTcxMDEsIAotICAgIDk3MTA2LCA5NzExMSwgOTcxMTYsIDk3MTIxLCA5NzEyNiwgOTcxMzEsIDk3MTM2LCA5NzE0MSwgOTcxNDYsIDk3MTUxLCAKLSAgICA5NzE1NiwgOTcxNjEsIDk3MTY2LCA5NzE3MSwgOTcxNzYsIDk3MTgxLCA5NzE4NiwgOTcxOTEsIDk3MTk2LCA5NzIwMSwgCi0gICAgOTcyMDYsIDk3MjExLCA5NzIxNiwgOTcyMjEsIDk3MjI2LCA5NzIzMSwgOTcyMzYsIDk3MjQxLCA5NzI0NiwgOTcyNTEsIAotICAgIDk3MjU2LCA5NzI2MSwgOTcyNjYsIDk3MjcxLCA5NzI3NiwgOTcyODEsIDk3Mjg2LCA5NzI5MSwgOTcyOTYsIDk3MzAxLCAKLSAgICA5NzMwNiwgOTczMTEsIDk3MzE2LCA5NzMyMSwgOTczMjYsIDk3MzMxLCA5NzMzNiwgOTczNDEsIDk3MzQ2LCA5NzM1MSwgCi0gICAgOTczNTYsIDk3MzYxLCA5NzM2NiwgOTczNzEsIDk3Mzc2LCA5NzM4MSwgOTczODYsIDk3MzkxLCA5NzM5NiwgOTc0MDEsIAotICAgIDk3NDA2LCA5NzQxMSwgOTc0MTYsIDk3NDIxLCA5NzQyNiwgOTc0MzEsIDk3NDM2LCA5NzQ0MSwgOTc0NDYsIDk3NDUxLCAKLSAgICA5NzQ1NiwgOTc0NjEsIDk3NDY2LCA5NzQ3MSwgOTc0NzYsIDk3NDgxLCA5NzQ4NiwgOTc0OTEsIDk3NDk2LCA5NzUwMSwgCi0gICAgOTc1MDYsIDk3NTExLCA5NzUxNiwgOTc1MjEsIDk3NTI2LCA5NzUzMSwgOTc1MzYsIDk3NTQxLCA5NzU0NiwgOTc1NTEsIAotICAgIDk3NTU2LCA5NzU2MSwgOTc1NjYsIDk3NTcxLCA5NzU3NiwgOTc1ODEsIDk3NTg2LCA5NzU5MSwgOTc1OTYsIDk3NjAxLCAKLSAgICA5NzYwNiwgOTc2MTEsIDk3NjE2LCA5NzYyMSwgOTc2MjYsIDk3NjMxLCA5NzYzNiwgOTc2NDEsIDk3NjQ2LCA5NzY1MSwgCi0gICAgOTc2NTYsIDk3NjYxLCA5NzY2NiwgOTc2NzEsIDk3Njc2LCA5NzY4MSwgOTc2ODYsIDk3NjkxLCA5NzY5NiwgOTc3MDEsIAotICAgIDk3NzA2LCA5NzcxMSwgOTc3MTYsIDk3NzIxLCA5NzcyNiwgOTc3MzEsIDk3NzM2LCA5Nzc0MSwgOTc3NDYsIDk3NzUxLCAKLSAgICA5Nzc1NiwgOTc3NjEsIDk3NzY2LCA5Nzc3MSwgOTc3NzYsIDk3NzgxLCA5Nzc4NiwgOTc3OTEsIDk3Nzk2LCA5NzgwMSwgCi0gICAgOTc4MDYsIDk3ODExLCA5NzgxNiwgOTc4MjEsIDk3ODI2LCA5NzgzMSwgOTc4MzYsIDk3ODQxLCA5Nzg0NiwgOTc4NTEsIAotICAgIDk3ODU2LCA5Nzg2MSwgOTc4NjYsIDk3ODcxLCA5Nzg3NiwgOTc4ODEsIDk3ODg2LCA5Nzg5MSwgOTc4OTYsIDk3OTAxLCAKLSAgICA5NzkwNiwgOTc5MTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk3OTE2LCA5NzkyMiwgOTc5MjksIDk3OTM2LCAKLSAgICA5Nzk0MiwgOTc5NDksIDk3OTU2LCA5Nzk2MywgOTc5NzAsIDk3OTc2LCA5Nzk4MywgOTc5OTAsIDk3OTk3LCA5ODAwNCwgCi0gICAgOTgwMTEsIDk4MDE4LCA5ODAyNSwgOTgwMzIsIDk4MDM5LCA5ODA0NiwgOTgwNTMsIDk4MDYwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA5ODA2NywgOTgwNzIsIDk4MDc3LCA5ODA4MiwgOTgwODcsIDk4MDkyLCA5ODA5NywgOTgxMDIsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDk5MzQ2LCA5OTM1MCwgOTkzNTQsIDk5MzU4LCA5OTM2MiwgOTkzNjYsIDAsIDAsIDk5MzcxLCAKKyAgICAwLCA5OTM3NiwgOTkzODAsIDk5Mzg1LCA5OTM5MCwgOTkzOTUsIDk5NDAwLCA5OTQwNCwgOTk0MDksIDk5NDE0LCA5OTQxOSwgCisgICAgOTk0MjQsIDk5NDI4LCA5OTQzMywgOTk0MzgsIDk5NDQzLCA5OTQ0OCwgOTk0NTIsIDk5NDU3LCA5OTQ2MiwgOTk0NjcsIAorICAgIDk5NDcyLCA5OTQ3NiwgOTk0ODEsIDk5NDg2LCA5OTQ5MSwgOTk0OTYsIDk5NTAxLCA5OTUwNiwgOTk1MTEsIDk5NTE2LCAKKyAgICA5OTUyMSwgOTk1MjYsIDk5NTMxLCA5OTUzNiwgOTk1NDEsIDk5NTQ2LCA5OTU1MSwgOTk1NTYsIDk5NTYxLCA5OTU2NSwgCisgICAgOTk1NzAsIDk5NTc1LCA5OTU4MCwgOTk1ODUsIDAsIDk5NTkwLCA5OTU5NSwgMCwgMCwgMCwgOTk2MDAsIDAsIDAsIDk5NjA1LCAKKyAgICA5OTYxMCwgOTk2MTcsIDk5NjI0LCA5OTYzMSwgOTk2MzgsIDk5NjQ1LCA5OTY1MiwgOTk2NTksIDk5NjY2LCA5OTY3MywgCisgICAgOTk2ODAsIDk5Njg3LCA5OTY5NCwgOTk3MDEsIDk5NzA4LCA5OTcxNSwgOTk3MjIsIDk5NzI5LCA5OTczNiwgOTk3NDMsIAorICAgIDk5NzUwLCA5OTc1NywgMCwgOTk3NjQsIDk5NzcxLCA5OTc3NywgOTk3ODMsIDk5Nzg5LCA5OTc5NiwgOTk4MDMsIDk5ODExLCAKKyAgICA5OTgxOSwgOTk4MjgsIDk5ODMzLCA5OTgzOCwgOTk4NDMsIDk5ODQ4LCA5OTg1MywgOTk4NTgsIDk5ODYzLCA5OTg2OCwgCisgICAgOTk4NzMsIDk5ODc4LCA5OTg4MywgOTk4ODgsIDk5ODkzLCA5OTg5OSwgOTk5MDQsIDk5OTA5LCA5OTkxNCwgOTk5MTksIAorICAgIDk5OTI0LCA5OTkyOSwgOTk5MzQsIDk5OTM5LCA5OTk0NCwgOTk5NTAsIDk5OTU2LCA5OTk2MCwgOTk5NjQsIDk5OTY4LCAKKyAgICA5OTk3MiwgOTk5NzYsIDk5OTgxLCA5OTk4NiwgOTk5OTIsIDk5OTk3LCAxMDAwMDMsIDEwMDAwOCwgMTAwMDEzLCAxMDAwMTgsIAorICAgIDEwMDAyNCwgMTAwMDI5LCAxMDAwMzQsIDEwMDAzOSwgMTAwMDQ0LCAxMDAwNDksIDEwMDA1NSwgMTAwMDYwLCAxMDAwNjYsIAorICAgIDEwMDA3MSwgMTAwMDc3LCAxMDAwODIsIDEwMDA4OCwgMTAwMDkzLCAxMDAwOTksIDEwMDEwNCwgMTAwMTA5LCAxMDAxMTQsIAorICAgIDEwMDExOSwgMTAwMTI0LCAxMDAxMjksIDEwMDEzNCwgMTAwMTQwLCAxMDAxNDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEwMDE1MCwgMTAwMTU0LCAxMDAxNTgsIDEwMDE2MiwgMTAwMTY2LCAxMDAxNzIsIDEwMDE3NiwgMTAwMTgxLCAxMDAxODYsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDk4MTA3LCA5ODExMSwgOTgxMTUsIDk4MTE5LCA5ODEyMywgOTgxMjcsIDAsIDAsIDk4MTMyLCAKLSAgICAwLCA5ODEzNywgOTgxNDEsIDk4MTQ2LCA5ODE1MSwgOTgxNTYsIDk4MTYxLCA5ODE2NiwgOTgxNzEsIDk4MTc2LCA5ODE4MSwgCi0gICAgOTgxODYsIDk4MTkwLCA5ODE5NSwgOTgyMDAsIDk4MjA1LCA5ODIxMCwgOTgyMTUsIDk4MjIwLCA5ODIyNSwgOTgyMzAsIAotICAgIDk4MjM1LCA5ODIzOSwgOTgyNDQsIDk4MjQ5LCA5ODI1NCwgOTgyNTksIDk4MjY0LCA5ODI2OSwgOTgyNzQsIDk4Mjc5LCAKLSAgICA5ODI4NCwgOTgyODksIDk4Mjk0LCA5ODI5OSwgOTgzMDQsIDk4MzA5LCA5ODMxNCwgOTgzMTksIDk4MzI0LCA5ODMyOCwgCi0gICAgOTgzMzMsIDk4MzM4LCA5ODM0MywgOTgzNDgsIDAsIDk4MzUzLCA5ODM1OCwgMCwgMCwgMCwgOTgzNjMsIDAsIDAsIDk4MzY4LCAKLSAgICA5ODM3MywgOTgzODAsIDk4Mzg3LCA5ODM5NCwgOTg0MDEsIDk4NDA4LCA5ODQxNSwgOTg0MjIsIDk4NDI5LCA5ODQzNiwgCi0gICAgOTg0NDMsIDk4NDUwLCA5ODQ1NywgOTg0NjQsIDk4NDcxLCA5ODQ3OCwgOTg0ODUsIDk4NDkyLCA5ODQ5OSwgOTg1MDYsIAotICAgIDk4NTEzLCA5ODUyMCwgMCwgOTg1MjcsIDk4NTM0LCA5ODU0MCwgOTg1NDYsIDk4NTUyLCA5ODU1OSwgOTg1NjYsIDk4NTc0LCAKLSAgICA5ODU4MiwgOTg1OTEsIDk4NTk2LCA5ODYwMSwgOTg2MDYsIDk4NjExLCA5ODYxNiwgOTg2MjEsIDk4NjI2LCA5ODYzMSwgCi0gICAgOTg2MzYsIDk4NjQxLCA5ODY0NiwgOTg2NTEsIDk4NjU2LCA5ODY2MiwgOTg2NjcsIDk4NjcyLCA5ODY3NywgOTg2ODIsIAotICAgIDk4Njg3LCA5ODY5MiwgOTg2OTcsIDk4NzAyLCA5ODcwNywgOTg3MTMsIDk4NzE5LCA5ODcyMywgOTg3MjcsIDk4NzMxLCAKLSAgICA5ODczNSwgOTg3MzksIDk4NzQ0LCA5ODc0OSwgOTg3NTUsIDk4NzYwLCA5ODc2NiwgOTg3NzEsIDk4Nzc2LCA5ODc4MSwgCi0gICAgOTg3ODcsIDk4NzkyLCA5ODc5NywgOTg4MDIsIDk4ODA3LCA5ODgxMiwgOTg4MTgsIDk4ODIzLCA5ODgyOSwgOTg4MzQsIAotICAgIDk4ODQwLCA5ODg0NSwgOTg4NTEsIDk4ODU2LCA5ODg2MiwgOTg4NjcsIDk4ODcyLCA5ODg3NywgOTg4ODIsIDk4ODg3LCAKLSAgICA5ODg5MiwgOTg4OTcsIDk4OTAzLCA5ODkwOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTg5MTMsIDk4OTE3LCA5ODkyMSwgCi0gICAgOTg5MjUsIDk4OTI5LCA5ODkzNSwgOTg5MzksIDk4OTQ0LCA5ODk0OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTg5NTUsIDk4OTYwLCA5ODk2NSwgOTg5NzAsIAotICAgIDk4OTc1LCA5ODk4MCwgOTg5ODUsIDk4OTkwLCA5ODk5NSwgOTkwMDAsIDk5MDA1LCA5OTAxMCwgOTkwMTUsIDk5MDIwLCAKLSAgICA5OTAyNSwgOTkwMzAsIDk5MDM1LCA5OTA0MCwgOTkwNDUsIDAsIDk5MDUwLCA5OTA1NSwgMCwgMCwgMCwgMCwgMCwgOTkwNjAsIAotICAgIDk5MDY0LCA5OTA2OCwgOTkwNzMsIDk5MDc4LCA5OTA4NCwgOTkwODksIDk5MDk0LCA5OTA5OSwgOTkxMDQsIDk5MTA5LCAKLSAgICA5OTExNCwgOTkxMTksIDk5MTI0LCA5OTEyOSwgOTkxMzQsIDk5MTM5LCA5OTE0NCwgOTkxNDksIDk5MTU0LCA5OTE1OSwgCi0gICAgOTkxNjQsIDk5MTY5LCA5OTE3NCwgOTkxNzksIDk5MTg0LCA5OTE4OSwgOTkxOTQsIDk5MTk4LCA5OTIwMywgOTkyMDgsIAotICAgIDk5MjE0LCA5OTIxOCwgMCwgMCwgMCwgOTkyMjIsIDk5MjI4LCA5OTIzMiwgOTkyMzcsIDk5MjQyLCA5OTI0NywgOTkyNTEsIAotICAgIDk5MjU2LCA5OTI2MCwgOTkyNjUsIDk5MjcwLCA5OTI3NCwgOTkyNzksIDk5Mjg0LCA5OTI4OCwgOTkyOTIsIDk5Mjk3LCAKLSAgICA5OTMwMiwgOTkzMDYsIDk5MzExLCA5OTMxNiwgOTkzMjAsIDk5MzI1LCA5OTMzMCwgOTkzMzUsIDk5MzQwLCA5OTM0NSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgOTkzNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk5MzU1LCAKLSAgICA5OTM2MCwgOTkzNjUsIDk5MzcwLCA5OTM3NSwgOTkzODAsIDk5Mzg2LCA5OTM5MiwgOTkzOTgsIDk5NDAzLCA5OTQwOCwgCi0gICAgOTk0MTQsIDk5NDIwLCA5OTQyNiwgOTk0MzIsIDk5NDM4LCA5OTQ0NCwgOTk0NTAsIDk5NDU2LCA5OTQ2MiwgOTk0NjgsIAotICAgIDk5NDc0LCA5OTQ4MCwgOTk0ODUsIDk5NDkxLCA5OTQ5NywgOTk1MDMsIDk5NTA5LCA5OTUxNSwgOTk1MjAsIDk5NTI2LCAKLSAgICA5OTUzMiwgOTk1MzgsIDk5NTQyLCA5OTU0NiwgOTk1NTAsIDk5NTU0LCA5OTU1OCwgOTk1NjMsIDk5NTY4LCA5OTU3MiwgCi0gICAgOTk1NzYsIDk5NTgxLCA5OTU4NiwgOTk1OTEsIDk5NTk2LCA5OTYwMSwgOTk2MDYsIDk5NjExLCA5OTYxOCwgOTk2MjMsIAotICAgIDk5NjI3LCA5OTYzMiwgOTk2MzcsIDk5NjQyLCA5OTY0NiwgMCwgMCwgMCwgMCwgOTk2NTEsIDk5NjU5LCA5OTY2NiwgCi0gICAgOTk2NzIsIDk5Njc4LCA5OTY4MiwgOTk2ODYsIDk5NjkwLCA5OTY5NCwgOTk2OTgsIDk5NzAyLCA5OTcwNywgOTk3MTEsIAotICAgIDk5NzE2LCA5OTcyMSwgOTk3MjYsIDk5NzMxLCA5OTczNiwgOTk3NDEsIDk5NzQ2LCAwLCAwLCA5OTc1MSwgOTk3NTcsIAotICAgIDk5NzYzLCA5OTc2OSwgOTk3NzYsIDk5NzgzLCA5OTc5MCwgOTk3OTcsIDk5ODA0LCA5OTgxMSwgOTk4MTcsIDk5ODIzLCAKLSAgICA5OTgyOSwgOTk4MzYsIDk5ODQzLCA5OTg1MCwgOTk4NTcsIDk5ODY0LCA5OTg3MSwgOTk4NzgsIDk5ODg1LCA5OTg5MiwgCi0gICAgOTk4OTksIDk5OTA2LCA5OTkxMywgOTk5MjAsIDk5OTI3LCA5OTkzNCwgOTk5NDIsIDk5OTUwLCA5OTk1OCwgOTk5NjcsIAotICAgIDk5OTc2LCA5OTk4NSwgOTk5OTQsIDEwMDAwMywgMTAwMDEyLCAxMDAwMTksIDEwMDAyNiwgMTAwMDMzLCAxMDAwNDEsIAotICAgIDEwMDA0OSwgMTAwMDU3LCAxMDAwNjUsIDEwMDA3MywgMTAwMDgxLCAxMDAwODksIDEwMDA5MywgMTAwMDk4LCAxMDAxMDMsIAotICAgIDAsIDEwMDEwOSwgMTAwMTE0LCAwLCAwLCAwLCAwLCAwLCAxMDAxMTksIDEwMDEyNSwgMTAwMTMyLCAxMDAxMzcsIDEwMDE0MiwgCi0gICAgMTAwMTQ2LCAxMDAxNTEsIDEwMDE1NiwgMCwgMTAwMTYxLCAxMDAxNjYsIDEwMDE3MSwgMCwgMTAwMTc2LCAxMDAxODEsIAotICAgIDEwMDE4NiwgMTAwMTkxLCAxMDAxOTYsIDEwMDIwMSwgMTAwMjA2LCAxMDAyMTEsIDEwMDIxNiwgMTAwMjIxLCAxMDAyMjYsIAotICAgIDEwMDIzMSwgMTAwMjM1LCAxMDAyNDAsIDEwMDI0NSwgMTAwMjUwLCAxMDAyNTQsIDEwMDI1OCwgMTAwMjYzLCAxMDAyNjgsIAotICAgIDEwMDI3MywgMTAwMjc4LCAxMDAyODMsIDEwMDI4OCwgMTAwMjkzLCAxMDAyOTcsIDEwMDMwMiwgMCwgMCwgMCwgMCwgCi0gICAgMTAwMzA3LCAxMDAzMTMsIDEwMDMxOCwgMCwgMCwgMCwgMCwgMTAwMzIzLCAxMDAzMjcsIDEwMDMzMSwgMTAwMzM1LCAKLSAgICAxMDAzMzksIDEwMDM0MywgMTAwMzQ4LCAxMDAzNTMsIDEwMDM1OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAwMzY1LCAKLSAgICAxMDAzNzEsIDEwMDM3OCwgMTAwMzg0LCAxMDAzOTEsIDEwMDM5NywgMTAwNDAzLCAxMDA0MDksIDEwMDQxNiwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTAwNDIyLCAxMDA0MzAsIDEwMDQzOCwgMTAwNDQ2LCAxMDA0NTQsIDEwMDQ2MiwgMTAwNDcwLCAKLSAgICAxMDA0NzgsIDEwMDQ4NiwgMTAwNDk0LCAxMDA1MDIsIDEwMDUxMCwgMTAwNTE4LCAxMDA1MjYsIDEwMDUzNCwgMTAwNTQyLCAKLSAgICAxMDA1NTAsIDEwMDU1OCwgMTAwNTY2LCAxMDA1NzQsIDEwMDU4MiwgMTAwNTkwLCAxMDA1OTgsIDEwMDYwNiwgMTAwNjE0LCAKLSAgICAxMDA2MjIsIDEwMDYzMCwgMTAwNjM4LCAxMDA2NDYsIDEwMDY1NCwgMTAwNjYxLCAxMDA2NjksIDEwMDY3NywgMTAwNjg0LCAKLSAgICAxMDA2OTEsIDEwMDY5OCwgMTAwNzA1LCAxMDA3MTIsIDEwMDcxOSwgMTAwNzI2LCAxMDA3MzMsIDEwMDc0MCwgMTAwNzQ3LCAKLSAgICAxMDA3NTQsIDEwMDc2MSwgMTAwNzY4LCAxMDA3NzUsIDEwMDc4MiwgMTAwNzg5LCAxMDA3OTYsIDEwMDgwMywgMTAwODEwLCAKLSAgICAxMDA4MTcsIDEwMDgyNCwgMTAwODMxLCAxMDA4MzgsIDEwMDg0NSwgMTAwODUyLCAxMDA4NTksIDEwMDg2NiwgMTAwODczLCAKLSAgICAxMDA4ODAsIDEwMDg4NiwgMTAwODkzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDA5MDAsIDEwMDkwNSwgMTAwOTEwLCAKLSAgICAxMDA5MTUsIDEwMDkyMCwgMTAwOTI1LCAxMDA5MzAsIDEwMDkzNSwgMTAwOTQwLCAxMDA5NDUsIDEwMDk1MCwgMTAwOTU1LCAKLSAgICAxMDA5NjAsIDEwMDk2NSwgMTAwOTcwLCAxMDA5NzUsIDEwMDk4MCwgMTAwOTg1LCAxMDA5OTAsIDEwMDk5NSwgMTAxMDAwLCAKLSAgICAxMDEwMDUsIDEwMTAxMCwgMTAxMDE1LCAxMDEwMjAsIDEwMTAyNSwgMTAxMDMwLCAxMDEwMzUsIDEwMTA0MCwgMTAxMDQ1LCAKLSAgICAxMDEwNTAsIDEwMTA1NSwgMTAxMDYwLCAxMDEwNjUsIDEwMTA3MCwgMTAxMDc1LCAxMDEwODAsIDEwMTA4NSwgMTAxMDkxLCAKLSAgICAwLCAwLCAwLCAwLCAxMDEwOTcsIDEwMTEwMSwgMTAxMTA1LCAxMDExMTAsIDEwMTExNSwgMTAxMTIxLCAxMDExMjcsIAotICAgIDEwMTEzMywgMTAxMTQzLCAxMDExNTIsIDEwMTE1OCwgMTAxMTY1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMDExNzMsIDEwMTE3NywgMTAxMTgyLCAxMDExODcsIDEwMTE5MiwgMTAxMTk3LCAxMDEyMDIsIDEwMTIwNywgMTAxMjEyLCAKLSAgICAxMDEyMTYsIDEwMTIyMSwgMTAxMjI1LCAxMDEyMzAsIDEwMTIzNCwgMTAxMjM5LCAxMDEyNDMsIDEwMTI0OCwgMTAxMjUzLCAKLSAgICAxMDEyNTgsIDEwMTI2MywgMTAxMjY4LCAxMDEyNzMsIDEwMTI3OCwgMTAxMjgzLCAxMDEyODgsIDEwMTI5MywgMTAxMjk4LCAKLSAgICAxMDEzMDMsIDEwMTMwOCwgMTAxMzEzLCAxMDEzMTgsIDEwMTMyMywgMTAxMzI4LCAxMDEzMzMsIDEwMTMzOCwgMTAxMzQzLCAKLSAgICAxMDEzNDgsIDEwMTM1MywgMTAxMzU4LCAxMDEzNjMsIDEwMTM2OCwgMTAxMzczLCAxMDEzNzgsIDEwMTM4MywgMTAxMzg4LCAKLSAgICAxMDEzOTMsIDEwMTM5OCwgMTAxNDAzLCAxMDE0MDgsIDEwMTQxMywgMTAxNDE4LCAxMDE0MjMsIDEwMTQyOCwgMTAxNDMzLCAKLSAgICAwLCAwLCAwLCAxMDE0MzgsIDEwMTQ0MywgMTAxNDUyLCAxMDE0NjAsIDEwMTQ2OSwgMTAxNDc4LCAxMDE0ODksIDEwMTUwMCwgCi0gICAgMTAxNTA3LCAxMDE1MTQsIDEwMTUyMSwgMTAxNTI4LCAxMDE1MzUsIDEwMTU0MiwgMTAxNTQ5LCAxMDE1NTYsIDEwMTU2MywgCi0gICAgMTAxNTcwLCAxMDE1NzcsIDEwMTU4NCwgMTAxNTkxLCAxMDE1OTgsIDEwMTYwNSwgMTAxNjEyLCAxMDE2MTksIDEwMTYyNiwgCi0gICAgMTAxNjMzLCAxMDE2NDAsIDEwMTY0NywgMCwgMCwgMTAxNjU0LCAxMDE2NjAsIDEwMTY2NiwgMTAxNjcyLCAxMDE2NzgsIAotICAgIDEwMTY4NSwgMTAxNjkyLCAxMDE3MDAsIDEwMTcwOCwgMTAxNzE1LCAxMDE3MjIsIDEwMTcyOSwgMTAxNzM2LCAxMDE3NDMsIAotICAgIDEwMTc1MCwgMTAxNzU3LCAxMDE3NjQsIDEwMTc3MSwgMTAxNzc4LCAxMDE3ODUsIDEwMTc5MiwgMTAxNzk5LCAxMDE4MDYsIAotICAgIDEwMTgxMywgMTAxODIwLCAxMDE4MjcsIDEwMTgzNCwgMCwgMCwgMCwgMCwgMCwgMTAxODQxLCAxMDE4NDcsIDEwMTg1MywgCi0gICAgMTAxODU5LCAxMDE4NjUsIDEwMTg3MiwgMTAxODc5LCAxMDE4ODcsIDEwMTg5NSwgMTAxOTAyLCAxMDE5MDksIDEwMTkxNiwgCi0gICAgMTAxOTIzLCAxMDE5MzAsIDEwMTkzNywgMTAxOTQ0LCAxMDE5NTEsIDEwMTk1OCwgMTAxOTY1LCAxMDE5NzIsIDEwMTk3OSwgCi0gICAgMTAxOTg2LCAxMDE5OTMsIDEwMjAwMCwgMTAyMDA3LCAxMDIwMTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMjAyMSwgCi0gICAgMTAyMDI4LCAxMDIwMzcsIDEwMjA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAyMDU3LCAKLSAgICAxMDIwNjMsIDEwMjA2OSwgMTAyMDc1LCAxMDIwODEsIDEwMjA4OCwgMTAyMDk1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMDIxMDMsIDEwMjExMCwgMTAyMTE3LCAxMDIxMjUsIDEwMjEzMiwgMTAyMTM5LCAxMDIxNDYsIDEwMjE1MywgMTAyMTYxLCAKLSAgICAxMDIxNjksIDEwMjE3NywgMTAyMTg1LCAxMDIxOTMsIDEwMjIwMSwgMTAyMjA5LCAxMDIyMTcsIDEwMjIyNSwgMTAyMjMzLCAKLSAgICAxMDIyNDEsIDEwMjI0OSwgMTAyMjU3LCAxMDIyNjUsIDEwMjI3MywgMTAyMjgxLCAxMDIyODksIDEwMjI5NywgMTAyMzA1LCAKLSAgICAxMDIzMTMsIDEwMjMyMSwgMTAyMzI5LCAxMDIzMzcsIDEwMjM0NSwgMTAyMzUzLCAxMDIzNjEsIDEwMjM2OSwgMTAyMzc3LCAKLSAgICAxMDIzODUsIDEwMjM5MywgMTAyNDAxLCAxMDI0MDksIDEwMjQxNywgMTAyNDI1LCAxMDI0MzMsIDEwMjQ0MSwgMTAyNDQ5LCAKLSAgICAxMDI0NTcsIDEwMjQ2NSwgMTAyNDczLCAxMDI0ODEsIDEwMjQ4OSwgMTAyNDk3LCAxMDI1MDUsIDEwMjUxMywgMTAyNTIxLCAKLSAgICAxMDI1MjksIDEwMjUzNywgMTAyNTQ1LCAxMDI1NTMsIDEwMjU2MSwgMTAyNTY5LCAxMDI1NzcsIDEwMjU4NSwgMTAyNTkzLCAKLSAgICAxMDI2MDEsIDEwMjYwOSwgMTAyNjE3LCAxMDI2MjUsIDEwMjYzMywgMTAyNjQxLCAxMDI2NDksIDEwMjY1NywgMTAyNjY1LCAKLSAgICAxMDI2NzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMjY4MSwgMTAyNjg2LCAxMDI2OTIsIDEwMjY5OCwgMTAyNzA0LCAKLSAgICAxMDI3MTAsIDEwMjcxNiwgMTAyNzIyLCAxMDI3MjgsIDEwMjczNCwgMTAyNzM5LCAxMDI3NDYsIDEwMjc1MiwgMTAyNzU4LCAKLSAgICAxMDI3NjQsIDEwMjc3MCwgMTAyNzc2LCAxMDI3ODEsIDEwMjc4NywgMTAyNzkzLCAxMDI3OTksIDEwMjgwNSwgMTAyODExLCAKLSAgICAxMDI4MTcsIDEwMjgyMywgMTAyODI5LCAxMDI4MzUsIDEwMjg0MSwgMTAyODQ2LCAxMDI4NTIsIDEwMjg2MCwgMTAyODY4LCAKLSAgICAxMDI4NzQsIDEwMjg4MCwgMTAyODg2LCAxMDI4OTIsIDEwMjkwMCwgMTAyOTA2LCAxMDI5MTIsIDEwMjkxOCwgMTAyOTI0LCAKLSAgICAxMDI5MzAsIDEwMjkzNiwgMTAyOTQxLCAxMDI5NDcsIDEwMjk1NSwgMTAyOTYzLCAxMDI5NjksIDEwMjk3NSwgMTAyOTgxLCAKLSAgICAxMDI5ODgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMjk5NCwgMTAyOTk5LCAxMDMwMDUsIAotICAgIDEwMzAxMSwgMTAzMDE3LCAxMDMwMjMsIDEwMzAyOSwgMTAzMDM1LCAxMDMwNDEsIDEwMzA0NywgMTAzMDUyLCAxMDMwNTksIAotICAgIDEwMzA2NSwgMTAzMDcxLCAxMDMwNzcsIDEwMzA4MywgMTAzMDg5LCAxMDMwOTQsIDEwMzEwMCwgMTAzMTA2LCAxMDMxMTIsIAotICAgIDEwMzExOCwgMTAzMTI0LCAxMDMxMzAsIDEwMzEzNiwgMTAzMTQyLCAxMDMxNDgsIDEwMzE1NCwgMTAzMTU5LCAxMDMxNjUsIAotICAgIDEwMzE3MywgMTAzMTgxLCAxMDMxODcsIDEwMzE5MywgMTAzMTk5LCAxMDMyMDUsIDEwMzIxMywgMTAzMjE5LCAxMDMyMjUsIAotICAgIDEwMzIzMSwgMTAzMjM3LCAxMDMyNDMsIDEwMzI0OSwgMTAzMjU0LCAxMDMyNjAsIDEwMzI2OCwgMTAzMjc2LCAxMDMyODIsIAotICAgIDEwMzI4OCwgMTAzMjk0LCAxMDMzMDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMzMwNywgMTAzMzExLCAxMDMzMTUsIAotICAgIDEwMzMyMCwgMTAzMzI1LCAxMDMzMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEwMDE5MiwgMTAwMTk3LCAxMDAyMDIsIDEwMDIwNywgMTAwMjEyLCAxMDAyMTcsIDEwMDIyMiwgMTAwMjI3LCAxMDAyMzIsIAorICAgIDEwMDIzNywgMTAwMjQyLCAxMDAyNDcsIDEwMDI1MiwgMTAwMjU3LCAxMDAyNjIsIDEwMDI2NywgMTAwMjcyLCAxMDAyNzcsIAorICAgIDEwMDI4MiwgMCwgMTAwMjg3LCAxMDAyOTIsIDAsIDAsIDAsIDAsIDAsIDEwMDI5NywgMTAwMzAxLCAxMDAzMDUsIDEwMDMxMCwgCisgICAgMTAwMzE1LCAxMDAzMjEsIDEwMDMyNiwgMTAwMzMxLCAxMDAzMzYsIDEwMDM0MSwgMTAwMzQ2LCAxMDAzNTEsIDEwMDM1NiwgCisgICAgMTAwMzYxLCAxMDAzNjYsIDEwMDM3MSwgMTAwMzc2LCAxMDAzODEsIDEwMDM4NiwgMTAwMzkxLCAxMDAzOTYsIDEwMDQwMSwgCisgICAgMTAwNDA2LCAxMDA0MTEsIDEwMDQxNiwgMTAwNDIxLCAxMDA0MjYsIDEwMDQzMSwgMTAwNDM1LCAxMDA0NDAsIDEwMDQ0NSwgCisgICAgMTAwNDUxLCAxMDA0NTUsIDAsIDAsIDAsIDEwMDQ1OSwgMTAwNDY1LCAxMDA0NjksIDEwMDQ3NCwgMTAwNDc5LCAxMDA0ODQsIAorICAgIDEwMDQ4OCwgMTAwNDkzLCAxMDA0OTcsIDEwMDUwMiwgMTAwNTA3LCAxMDA1MTEsIDEwMDUxNiwgMTAwNTIxLCAxMDA1MjUsIAorICAgIDEwMDUyOSwgMTAwNTM0LCAxMDA1MzksIDEwMDU0MywgMTAwNTQ4LCAxMDA1NTMsIDEwMDU1OCwgMTAwNTYzLCAxMDA1NjgsIAorICAgIDEwMDU3MywgMTAwNTc4LCAxMDA1ODMsIDAsIDAsIDAsIDAsIDAsIDEwMDU4OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAwNTkzLCAxMDA1OTgsIDEwMDYwMywgMTAwNjA4LCAxMDA2MTMsIDEwMDYxOCwgCisgICAgMTAwNjI0LCAxMDA2MzAsIDEwMDYzNiwgMTAwNjQxLCAxMDA2NDYsIDEwMDY1MSwgMTAwNjU3LCAxMDA2NjMsIDEwMDY2OSwgCisgICAgMTAwNjc1LCAxMDA2ODEsIDEwMDY4NiwgMTAwNjkyLCAxMDA2OTgsIDEwMDcwNCwgMTAwNzEwLCAxMDA3MTYsIDEwMDcyMSwgCisgICAgMTAwNzI3LCAxMDA3MzMsIDEwMDczOSwgMTAwNzQ1LCAxMDA3NTEsIDEwMDc1NiwgMTAwNzYyLCAxMDA3NjgsIDEwMDc3NCwgCisgICAgMTAwNzc5LCAxMDA3ODQsIDEwMDc4OSwgMTAwNzk0LCAxMDA3OTksIDEwMDgwNSwgMTAwODExLCAxMDA4MTYsIDEwMDgyMSwgCisgICAgMTAwODI2LCAxMDA4MzIsIDEwMDgzOCwgMTAwODQzLCAxMDA4NDksIDEwMDg1NSwgMTAwODYxLCAxMDA4NjksIDEwMDg3NSwgCisgICAgMTAwODgwLCAxMDA4ODYsIDEwMDg5MiwgMTAwODk4LCAxMDA5MDMsIDAsIDAsIDAsIDAsIDEwMDkwOSwgMTAwOTE4LCAKKyAgICAxMDA5MjYsIDEwMDkzMywgMTAwOTQwLCAxMDA5NDUsIDEwMDk1MCwgMTAwOTU1LCAxMDA5NjAsIDEwMDk2NSwgMTAwOTcwLCAKKyAgICAxMDA5NzYsIDEwMDk4MSwgMTAwOTg3LCAxMDA5OTMsIDEwMDk5OSwgMTAxMDA1LCAxMDEwMTEsIDEwMTAxNywgMTAxMDIzLCAKKyAgICAwLCAwLCAxMDEwMjksIDEwMTAzNiwgMTAxMDQzLCAxMDEwNTAsIDEwMTA1OCwgMTAxMDY2LCAxMDEwNzQsIDEwMTA4MiwgCisgICAgMTAxMDkwLCAxMDEwOTgsIDEwMTEwNSwgMTAxMTEyLCAxMDExMTksIDEwMTEyNywgMTAxMTM1LCAxMDExNDMsIDEwMTE1MSwgCisgICAgMTAxMTU5LCAxMDExNjcsIDEwMTE3NSwgMTAxMTgzLCAxMDExOTEsIDEwMTE5OSwgMTAxMjA3LCAxMDEyMTUsIDEwMTIyMywgCisgICAgMTAxMjMxLCAxMDEyMzksIDEwMTI0OCwgMTAxMjU3LCAxMDEyNjYsIDEwMTI3NiwgMTAxMjg2LCAxMDEyOTYsIDEwMTMwNiwgCisgICAgMTAxMzE2LCAxMDEzMjYsIDEwMTMzNCwgMTAxMzQyLCAxMDEzNTAsIDEwMTM1OSwgMTAxMzY4LCAxMDEzNzcsIDEwMTM4NiwgCisgICAgMTAxMzk1LCAxMDE0MDQsIDEwMTQxMywgMTAxNDE3LCAxMDE0MjIsIDEwMTQyNywgMCwgMTAxNDMzLCAxMDE0MzgsIDAsIDAsIAorICAgIDAsIDAsIDAsIDEwMTQ0MywgMTAxNDQ5LCAxMDE0NTYsIDEwMTQ2MSwgMTAxNDY2LCAxMDE0NzAsIDEwMTQ3NSwgMTAxNDgwLCAKKyAgICAwLCAxMDE0ODUsIDEwMTQ5MCwgMTAxNDk1LCAwLCAxMDE1MDAsIDEwMTUwNSwgMTAxNTEwLCAxMDE1MTUsIDEwMTUyMCwgCisgICAgMTAxNTI1LCAxMDE1MzAsIDEwMTUzNSwgMTAxNTQwLCAxMDE1NDUsIDEwMTU1MCwgMTAxNTU0LCAxMDE1NTgsIDEwMTU2MywgCisgICAgMTAxNTY4LCAxMDE1NzMsIDEwMTU3NywgMTAxNTgxLCAxMDE1ODYsIDEwMTU5MCwgMTAxNTk1LCAxMDE2MDAsIDEwMTYwNSwgCisgICAgMTAxNjEwLCAxMDE2MTUsIDEwMTYxOSwgMTAxNjI0LCAwLCAwLCAwLCAwLCAxMDE2MjksIDEwMTYzNSwgMTAxNjQwLCAwLCAwLCAKKyAgICAwLCAwLCAxMDE2NDUsIDEwMTY0OSwgMTAxNjUzLCAxMDE2NTcsIDEwMTY2MSwgMTAxNjY1LCAxMDE2NzAsIDEwMTY3NSwgCisgICAgMTAxNjgxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDE2ODcsIDEwMTY5MywgMTAxNzAwLCAxMDE3MDYsIDEwMTcxMywgCisgICAgMTAxNzE5LCAxMDE3MjUsIDEwMTczMSwgMTAxNzM4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDE3NDQsIDEwMTc1MiwgCisgICAgMTAxNzYwLCAxMDE3NjgsIDEwMTc3NiwgMTAxNzg0LCAxMDE3OTIsIDEwMTgwMCwgMTAxODA4LCAxMDE4MTYsIDEwMTgyNCwgCisgICAgMTAxODMyLCAxMDE4NDAsIDEwMTg0OCwgMTAxODU2LCAxMDE4NjQsIDEwMTg3MiwgMTAxODgwLCAxMDE4ODgsIDEwMTg5NiwgCisgICAgMTAxOTA0LCAxMDE5MTIsIDEwMTkyMCwgMTAxOTI4LCAxMDE5MzYsIDEwMTk0NCwgMTAxOTUyLCAxMDE5NjAsIDEwMTk2OCwgCisgICAgMTAxOTc2LCAxMDE5ODMsIDEwMTk5MSwgMTAxOTk5LCAxMDIwMDYsIDEwMjAxMywgMTAyMDIwLCAxMDIwMjcsIDEwMjAzNCwgCisgICAgMTAyMDQxLCAxMDIwNDgsIDEwMjA1NSwgMTAyMDYyLCAxMDIwNjksIDEwMjA3NiwgMTAyMDgzLCAxMDIwOTAsIDEwMjA5NywgCisgICAgMTAyMTA0LCAxMDIxMTEsIDEwMjExOCwgMTAyMTI1LCAxMDIxMzIsIDEwMjEzOSwgMTAyMTQ2LCAxMDIxNTMsIDEwMjE2MCwgCisgICAgMTAyMTY3LCAxMDIxNzQsIDEwMjE4MSwgMTAyMTg4LCAxMDIxOTUsIDEwMjIwMiwgMTAyMjA4LCAxMDIyMTUsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMzMzNywgMTAzMzQxLCAxMDMzNDUsIDEwMzM0OSwgMTAzMzUzLCAxMDMzNTcsIAotICAgIDEwMzM2MSwgMTAzMzY2LCAxMDMzNzAsIDEwMzM3NSwgMTAzMzgwLCAxMDMzODUsIDEwMzM5MCwgMTAzMzk1LCAxMDM0MDAsIAotICAgIDEwMzQwNSwgMTAzNDEwLCAxMDM0MTUsIDEwMzQyMCwgMTAzNDI2LCAxMDM0MzIsIDEwMzQzOCwgMTAzNDQ1LCAxMDM0NTIsIAotICAgIDEwMzQ1OSwgMTAzNDY2LCAxMDM0NzMsIDEwMzQ4MCwgMTAzNDg3LCAxMDM0OTQsIDEwMzUwMSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTAyMjIyLCAxMDIyMjcsIDEwMjIzMiwgMTAyMjM3LCAxMDIyNDIsIDEwMjI0NywgMTAyMjUyLCAKKyAgICAxMDIyNTcsIDEwMjI2MiwgMTAyMjY3LCAxMDIyNzIsIDEwMjI3NywgMTAyMjgyLCAxMDIyODcsIDEwMjI5MiwgMTAyMjk3LCAKKyAgICAxMDIzMDIsIDEwMjMwNywgMTAyMzEyLCAxMDIzMTcsIDEwMjMyMiwgMTAyMzI3LCAxMDIzMzIsIDEwMjMzNywgMTAyMzQyLCAKKyAgICAxMDIzNDcsIDEwMjM1MiwgMTAyMzU3LCAxMDIzNjIsIDEwMjM2NywgMTAyMzcyLCAxMDIzNzcsIDEwMjM4MiwgMTAyMzg3LCAKKyAgICAxMDIzOTIsIDEwMjM5NywgMTAyNDAyLCAxMDI0MDcsIDEwMjQxMywgMCwgMCwgMCwgMCwgMTAyNDE5LCAxMDI0MjMsIAorICAgIDEwMjQyNywgMTAyNDMyLCAxMDI0MzcsIDEwMjQ0MywgMTAyNDQ5LCAxMDI0NTUsIDEwMjQ2NSwgMTAyNDc0LCAxMDI0ODAsIAorICAgIDEwMjQ4NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAyNDk1LCAxMDI0OTksIDEwMjUwNCwgMTAyNTA5LCAKKyAgICAxMDI1MTQsIDEwMjUxOSwgMTAyNTI0LCAxMDI1MjksIDEwMjUzNCwgMTAyNTM4LCAxMDI1NDMsIDEwMjU0NywgMTAyNTUyLCAKKyAgICAxMDI1NTYsIDEwMjU2MSwgMTAyNTY1LCAxMDI1NzAsIDEwMjU3NSwgMTAyNTgwLCAxMDI1ODUsIDEwMjU5MCwgMTAyNTk1LCAKKyAgICAxMDI2MDAsIDEwMjYwNSwgMTAyNjEwLCAxMDI2MTUsIDEwMjYyMCwgMTAyNjI1LCAxMDI2MzAsIDEwMjYzNSwgMTAyNjQwLCAKKyAgICAxMDI2NDUsIDEwMjY1MCwgMTAyNjU1LCAxMDI2NjAsIDEwMjY2NSwgMTAyNjcwLCAxMDI2NzUsIDEwMjY4MCwgMTAyNjg1LCAKKyAgICAxMDI2OTAsIDEwMjY5NSwgMTAyNzAwLCAxMDI3MDUsIDEwMjcxMCwgMTAyNzE1LCAxMDI3MjAsIDEwMjcyNSwgMTAyNzMwLCAKKyAgICAxMDI3MzUsIDEwMjc0MCwgMTAyNzQ1LCAxMDI3NTAsIDEwMjc1NSwgMCwgMCwgMCwgMTAyNzYwLCAxMDI3NjUsIDEwMjc3NCwgCisgICAgMTAyNzgyLCAxMDI3OTEsIDEwMjgwMCwgMTAyODExLCAxMDI4MjIsIDEwMjgyOSwgMTAyODM2LCAxMDI4NDMsIDEwMjg1MCwgCisgICAgMTAyODU3LCAxMDI4NjQsIDEwMjg3MSwgMTAyODc4LCAxMDI4ODUsIDEwMjg5MiwgMTAyODk5LCAxMDI5MDYsIDEwMjkxMywgCisgICAgMTAyOTIwLCAxMDI5MjcsIDEwMjkzNCwgMTAyOTQxLCAxMDI5NDgsIDEwMjk1NSwgMTAyOTYyLCAxMDI5NjksIDAsIDAsIAorICAgIDEwMjk3NiwgMTAyOTgyLCAxMDI5ODgsIDEwMjk5NCwgMTAzMDAwLCAxMDMwMDcsIDEwMzAxNCwgMTAzMDIyLCAxMDMwMzAsIAorICAgIDEwMzAzNywgMTAzMDQ0LCAxMDMwNTEsIDEwMzA1OCwgMTAzMDY1LCAxMDMwNzIsIDEwMzA3OSwgMTAzMDg2LCAxMDMwOTMsIAorICAgIDEwMzEwMCwgMTAzMTA3LCAxMDMxMTQsIDEwMzEyMSwgMTAzMTI4LCAxMDMxMzUsIDEwMzE0MiwgMTAzMTQ5LCAxMDMxNTYsIAorICAgIDAsIDAsIDAsIDAsIDAsIDEwMzE2MywgMTAzMTY5LCAxMDMxNzUsIDEwMzE4MSwgMTAzMTg3LCAxMDMxOTQsIDEwMzIwMSwgCisgICAgMTAzMjA5LCAxMDMyMTcsIDEwMzIyNCwgMTAzMjMxLCAxMDMyMzgsIDEwMzI0NSwgMTAzMjUyLCAxMDMyNTksIDEwMzI2NiwgCisgICAgMTAzMjczLCAxMDMyODAsIDEwMzI4NywgMTAzMjk0LCAxMDMzMDEsIDEwMzMwOCwgMTAzMzE1LCAxMDMzMjIsIDEwMzMyOSwgCisgICAgMTAzMzM2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDMzNDMsIDEwMzM1MCwgMTAzMzU5LCAxMDMzNjksIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMzM3OSwgMTAzMzg1LCAxMDMzOTEsIDEwMzM5NywgMTAzNDAzLCAxMDM0MTAsIAorICAgIDEwMzQxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAzNDI1LCAxMDM0MzIsIDEwMzQzOSwgMTAzNDQ3LCAxMDM0NTQsIAorICAgIDEwMzQ2MSwgMTAzNDY4LCAxMDM0NzUsIDEwMzQ4MywgMTAzNDkxLCAxMDM0OTksIDEwMzUwNywgMTAzNTE1LCAxMDM1MjMsIAorICAgIDEwMzUzMSwgMTAzNTM5LCAxMDM1NDcsIDEwMzU1NSwgMTAzNTYzLCAxMDM1NzEsIDEwMzU3OSwgMTAzNTg3LCAxMDM1OTUsIAorICAgIDEwMzYwMywgMTAzNjExLCAxMDM2MTksIDEwMzYyNywgMTAzNjM1LCAxMDM2NDMsIDEwMzY1MSwgMTAzNjU5LCAxMDM2NjcsIAorICAgIDEwMzY3NSwgMTAzNjgzLCAxMDM2OTEsIDEwMzY5OSwgMTAzNzA3LCAxMDM3MTUsIDEwMzcyMywgMTAzNzMxLCAxMDM3MzksIAorICAgIDEwMzc0NywgMTAzNzU1LCAxMDM3NjMsIDEwMzc3MSwgMTAzNzc5LCAxMDM3ODcsIDEwMzc5NSwgMTAzODAzLCAxMDM4MTEsIAorICAgIDEwMzgxOSwgMTAzODI3LCAxMDM4MzUsIDEwMzg0MywgMTAzODUxLCAxMDM4NTksIDEwMzg2NywgMTAzODc1LCAxMDM4ODMsIAorICAgIDEwMzg5MSwgMTAzODk5LCAxMDM5MDcsIDEwMzkxNSwgMTAzOTIzLCAxMDM5MzEsIDEwMzkzOSwgMTAzOTQ3LCAxMDM5NTUsIAorICAgIDEwMzk2MywgMTAzOTcxLCAxMDM5NzksIDEwMzk4NywgMTAzOTk1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDQwMDMsIAorICAgIDEwNDAwOCwgMTA0MDE0LCAxMDQwMjAsIDEwNDAyNiwgMTA0MDMyLCAxMDQwMzgsIDEwNDA0NCwgMTA0MDUwLCAxMDQwNTYsIAorICAgIDEwNDA2MSwgMTA0MDY4LCAxMDQwNzQsIDEwNDA4MCwgMTA0MDg2LCAxMDQwOTIsIDEwNDA5OCwgMTA0MTAzLCAxMDQxMDksIAorICAgIDEwNDExNSwgMTA0MTIxLCAxMDQxMjcsIDEwNDEzMywgMTA0MTM5LCAxMDQxNDUsIDEwNDE1MSwgMTA0MTU3LCAxMDQxNjMsIAorICAgIDEwNDE2OCwgMTA0MTc0LCAxMDQxODIsIDEwNDE5MCwgMTA0MTk2LCAxMDQyMDIsIDEwNDIwOCwgMTA0MjE0LCAxMDQyMjIsIAorICAgIDEwNDIyOCwgMTA0MjM0LCAxMDQyNDAsIDEwNDI0NiwgMTA0MjUyLCAxMDQyNTgsIDEwNDI2MywgMTA0MjY5LCAxMDQyNzcsIAorICAgIDEwNDI4NSwgMTA0MjkxLCAxMDQyOTcsIDEwNDMwMywgMTA0MzEwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxMDQzMTYsIDEwNDMyMSwgMTA0MzI3LCAxMDQzMzMsIDEwNDMzOSwgMTA0MzQ1LCAxMDQzNTEsIDEwNDM1NywgCisgICAgMTA0MzYzLCAxMDQzNjksIDEwNDM3NCwgMTA0MzgxLCAxMDQzODcsIDEwNDM5MywgMTA0Mzk5LCAxMDQ0MDUsIDEwNDQxMSwgCisgICAgMTA0NDE2LCAxMDQ0MjIsIDEwNDQyOCwgMTA0NDM0LCAxMDQ0NDAsIDEwNDQ0NiwgMTA0NDUyLCAxMDQ0NTgsIDEwNDQ2NCwgCisgICAgMTA0NDcwLCAxMDQ0NzYsIDEwNDQ4MSwgMTA0NDg3LCAxMDQ0OTUsIDEwNDUwMywgMTA0NTA5LCAxMDQ1MTUsIDEwNDUyMSwgCisgICAgMTA0NTI3LCAxMDQ1MzUsIDEwNDU0MSwgMTA0NTQ3LCAxMDQ1NTMsIDEwNDU1OSwgMTA0NTY1LCAxMDQ1NzEsIDEwNDU3NiwgCisgICAgMTA0NTgyLCAxMDQ1OTAsIDEwNDU5OCwgMTA0NjA0LCAxMDQ2MTAsIDEwNDYxNiwgMTA0NjIzLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxMDQ2MjksIDEwNDYzMywgMTA0NjM3LCAxMDQ2NDIsIDEwNDY0NywgMTA0NjUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAxMDM1MDgsIDEwMzUxMiwgMTAzNTE2LCAxMDM1MjAsIDEwMzUyNCwgMTAzNTI4LCAxMDM1MzEsIDEwMzUzNSwgCi0gICAgMTAzNTM4LCAxMDM1NDIsIDEwMzU0NSwgMTAzNTQ5LCAxMDM1NTMsIDEwMzU1OCwgMTAzNTYyLCAxMDM1NjcsIDEwMzU3MCwgCi0gICAgMTAzNTc0LCAxMDM1NzcsIDEwMzU4MSwgMTAzNTg0LCAxMDM1ODgsIDEwMzU5MiwgMTAzNTk2LCAxMDM2MDAsIDEwMzYwNCwgCi0gICAgMTAzNjA4LCAxMDM2MTIsIDEwMzYxNiwgMTAzNjIwLCAxMDM2MjQsIDEwMzYyOCwgMTAzNjMyLCAxMDM2MzYsIDEwMzY0MCwgCi0gICAgMTAzNjQ0LCAxMDM2NDgsIDEwMzY1MiwgMTAzNjU2LCAxMDM2NjAsIDEwMzY2MywgMTAzNjY3LCAxMDM2NzEsIDEwMzY3NSwgCi0gICAgMTAzNjc4LCAxMDM2ODEsIDEwMzY4NSwgMTAzNjg5LCAxMDM2OTMsIDEwMzY5NywgMTAzNzAxLCAxMDM3MDUsIDEwMzcwOCwgCi0gICAgMTAzNzEyLCAxMDM3MTgsIDEwMzcyNCwgMTAzNzMwLCAxMDM3MzUsIDEwMzc0MiwgMTAzNzQ2LCAxMDM3NTEsIDEwMzc1NSwgCi0gICAgMTAzNzYwLCAxMDM3NjUsIDEwMzc3MSwgMTAzNzc2LCAxMDM3ODIsIDEwMzc4NiwgMTAzNzkxLCAxMDM3OTUsIDEwMzgwMCwgCi0gICAgMTAzODAzLCAxMDM4MDYsIDEwMzgxMCwgMTAzODE1LCAxMDM4MjEsIDEwMzgyNiwgMTAzODMyLCAwLCAwLCAwLCAwLCAKLSAgICAxMDM4MzcsIDEwMzg0MCwgMTAzODQzLCAxMDM4NDYsIDEwMzg0OSwgMTAzODUyLCAxMDM4NTUsIDEwMzg1OSwgMTAzODYyLCAKLSAgICAxMDM4NjYsIDEwMzg3MCwgMTAzODc0LCAxMDM4NzgsIDEwMzg4MiwgMTAzODg2LCAxMDM4OTAsIDEwMzg5NCwgMTAzODk4LCAKLSAgICAxMDM5MDIsIDEwMzkwNywgMTAzOTEyLCAxMDM5MTYsIDEwMzkxOSwgMTAzOTIyLCAxMDM5MjUsIDEwMzkyOCwgMTAzOTMxLCAKLSAgICAxMDM5MzQsIDEwMzkzOCwgMTAzOTQxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMDM5NDUsIDEwMzk0OSwgMTAzOTU0LCAxMDM5NTksIDEwMzk2NCwgMTAzOTY4LCAxMDM5NzMsIDEwMzk3NywgMTAzOTgyLCAKLSAgICAxMDM5ODYsIDEwMzk5MSwgMTAzOTk1LCAxMDQwMDAsIDEwNDAwNCwgMTA0MDA5LCAxMDQwMTMsIDEwNDAxOCwgMTA0MDIzLCAKLSAgICAxMDQwMjgsIDEwNDAzMywgMTA0MDM4LCAxMDQwNDMsIDEwNDA0OCwgMTA0MDUzLCAxMDQwNTgsIDEwNDA2MywgMTA0MDY4LCAKLSAgICAxMDQwNzMsIDEwNDA3OCwgMTA0MDgzLCAxMDQwODgsIDEwNDA5MywgMTA0MDk4LCAxMDQxMDMsIDEwNDEwOCwgMTA0MTEzLCAKLSAgICAxMDQxMTgsIDEwNDEyMiwgMTA0MTI3LCAxMDQxMzIsIDEwNDEzNywgMTA0MTQxLCAxMDQxNDUsIDEwNDE1MCwgMTA0MTU1LCAKLSAgICAxMDQxNjAsIDEwNDE2NSwgMTA0MTcwLCAxMDQxNzUsIDEwNDE3OSwgMTA0MTg1LCAxMDQxOTAsIDEwNDE5NiwgMTA0MjAxLCAKLSAgICAxMDQyMDcsIDEwNDIxMiwgMTA0MjE4LCAxMDQyMjMsIDEwNDIyOSwgMTA0MjM0LCAxMDQyMzksIDEwNDI0NCwgMTA0MjQ5LCAKLSAgICAxMDQyNTMsIDEwNDI1OCwgMTA0MjY0LCAxMDQyNjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEwNDI3MywgMTA0MjgwLCAxMDQyODcsIDEwNDI5NCwgMTA0MzAxLCAxMDQzMDgsIDEwNDMxNSwgMTA0MzIyLCAxMDQzMjksIAotICAgIDEwNDMzNiwgMTA0MzQzLCAxMDQzNTAsIDEwNDM1NywgMTA0MzY0LCAxMDQzNzEsIDEwNDM3OCwgMTA0Mzg1LCAxMDQzOTIsIAotICAgIDEwNDM5OSwgMTA0NDA2LCAxMDQ0MTMsIDEwNDQyMCwgMTA0NDI3LCAxMDQ0MzQsIDEwNDQ0MSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTA0NDQ4LCAxMDQ0NTUsIDEwNDQ2MSwgMTA0NDY3LCAxMDQ0NzMsIDEwNDQ3OSwgMTA0NDg1LCAxMDQ0OTEsIAotICAgIDEwNDQ5OCwgMTA0NTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAxMDQ1MTEsIDEwNDUxNiwgMTA0NTIxLCAxMDQ1MjYsIDEwNDUzMSwgCi0gICAgMTA0NTM1LCAxMDQ1MzksIDEwNDU0MywgMTA0NTQ4LCAxMDQ1NTMsIDEwNDU1OCwgMTA0NTYzLCAxMDQ1NjgsIDEwNDU3MywgCi0gICAgMTA0NTc4LCAxMDQ1ODMsIDEwNDU4OCwgMTA0NTkzLCAxMDQ1OTgsIDEwNDYwMywgMTA0NjA4LCAxMDQ2MTMsIDEwNDYxOCwgCi0gICAgMTA0NjIzLCAxMDQ2MjgsIDEwNDYzMywgMTA0NjM4LCAxMDQ2NDMsIDEwNDY0OCwgMTA0NjUzLCAxMDQ2NTgsIDEwNDY2MywgCi0gICAgMTA0NjY4LCAxMDQ2NzMsIDEwNDY3OCwgMTA0NjgzLCAxMDQ2ODgsIDEwNDY5MywgMTA0Njk4LCAxMDQ3MDMsIDEwNDcwOCwgCi0gICAgMTA0NzEzLCAxMDQ3MTksIDEwNDcyNCwgMTA0NzMwLCAxMDQ3MzUsIDEwNDc0MSwgMTA0NzQ2LCAxMDQ3NTIsIDEwNDc1OCwgCi0gICAgMTA0NzYyLCAxMDQ3NjcsIDEwNDc3MSwgMCwgMTA0Nzc1LCAxMDQ3ODAsIDEwNDc4NCwgMTA0Nzg4LCAxMDQ3OTIsIAotICAgIDEwNDc5NiwgMTA0ODAwLCAxMDQ4MDQsIDEwNDgwOSwgMTA0ODEzLCAxMDQ4MTgsIDEwNDgyMywgMTA0ODI3LCAxMDQ4MzIsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNDgzNywgMTA0ODQxLCAxMDQ4NDUsIDEwNDg0OSwgCi0gICAgMTA0ODUzLCAxMDQ4NTcsIDEwNDg2MSwgMTA0ODY2LCAxMDQ4NzEsIDEwNDg3NiwgMTA0ODgxLCAxMDQ4ODYsIDEwNDg5MSwgCi0gICAgMTA0ODk2LCAxMDQ5MDEsIDEwNDkwNiwgMTA0OTExLCAxMDQ5MTYsIDEwNDkyMSwgMTA0OTI2LCAxMDQ5MzEsIDEwNDkzNiwgCi0gICAgMTA0OTQxLCAxMDQ5NDYsIDEwNDk1MSwgMTA0OTU1LCAxMDQ5NjAsIDEwNDk2NSwgMTA0OTcwLCAxMDQ5NzQsIDEwNDk3OSwgCi0gICAgMTA0OTg0LCAxMDQ5ODksIDEwNDk5NCwgMTA0OTk4LCAxMDUwMDMsIDEwNTAwOCwgMTA1MDEzLCAxMDUwMTgsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDEwNTAyMywgMTA1MDI3LCAxMDUwMzEsIDEwNTAzNSwgMTA1MDM4LCAxMDUwNDIsIDEwNTA0NSwgCi0gICAgMTA1MDQ5LCAxMDUwNTIsIDEwNTA1NiwgMTA1MDYwLCAxMDUwNjUsIDEwNTA2OSwgMTA1MDc0LCAxMDUwNzcsIDEwNTA4MSwgCi0gICAgMTA1MDg0LCAxMDUwODgsIDEwNTA5MSwgMTA1MDk1LCAxMDUwOTksIDEwNTEwMywgMTA1MTA3LCAxMDUxMTEsIDEwNTExNSwgCi0gICAgMTA1MTE5LCAxMDUxMjMsIDEwNTEyNywgMTA1MTMxLCAxMDUxMzUsIDEwNTEzOSwgMTA1MTQzLCAxMDUxNDcsIDEwNTE1MSwgCi0gICAgMTA1MTU1LCAxMDUxNTksIDEwNTE2MywgMTA1MTY3LCAxMDUxNzAsIDEwNTE3NCwgMTA1MTc4LCAxMDUxODIsIDEwNTE4NSwgCi0gICAgMTA1MTg4LCAxMDUxOTIsIDEwNTE5NiwgMTA1MjAwLCAxMDUyMDQsIDEwNTIwOCwgMTA1MjEyLCAxMDUyMTYsIDEwNTIxOSwgCi0gICAgMTA1MjI0LCAxMDUyMjgsIDEwNTIzMywgMTA1MjM3LCAxMDUyNDIsIDEwNTI0NywgMTA1MjUzLCAxMDUyNTgsIDEwNTI2NCwgCi0gICAgMTA1MjY4LCAxMDUyNzMsIDEwNTI3NywgMTA1MjgyLCAxMDUyODYsIDEwNTI5MCwgMTA1Mjk0LCAxMDUyOTgsIDEwNTMwMSwgCi0gICAgMTA1MzA0LCAxMDUzMDgsIDEwNTMxMiwgMTA1MzE1LCAxMDUzMTksIDEwNTMyMywgMTA1MzI3LCAxMDUzMzQsIDAsIDAsIAotICAgIDEwNTMzOCwgMTA1MzQyLCAxMDUzNDUsIDEwNTM0OCwgMTA1MzUxLCAxMDUzNTQsIDEwNTM1NywgMTA1MzYwLCAxMDUzNjQsIAotICAgIDEwNTM2NywgMTA1MzcxLCAxMDUzNzQsIDEwNTM3OCwgMTA1MzgxLCAxMDUzODUsIDEwNTM5MCwgMCwgMTA1Mzk1LCAKLSAgICAxMDU0MDAsIDEwNTQwNSwgMTA1NDEwLCAxMDU0MTUsIDEwNTQyMCwgMTA1NDI1LCAxMDU0MzEsIDEwNTQzNiwgMTA1NDQyLCAKLSAgICAxMDU0NDgsIDEwNTQ1NCwgMTA1NDYwLCAxMDU0NjYsIDEwNTQ3MiwgMTA1NDc4LCAxMDU0ODQsIDEwNTQ5MCwgMTA1NDk2LCAKLSAgICAxMDU1MDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNTUxMCwgMTA1NTE0LCAxMDU1MTksIDEwNTUyMywgCi0gICAgMTA1NTI3LCAxMDU1MzEsIDEwNTUzNiwgMTA1NTQwLCAxMDU1NDUsIDEwNTU0OSwgMTA1NTU0LCAxMDU1NTksIDEwNTU2NCwgCi0gICAgMTA1NTY5LCAxMDU1NzQsIDEwNTU3OSwgMTA1NTg0LCAxMDU1ODksIDAsIDEwNTU5NCwgMTA1NTk5LCAxMDU2MDQsIAotICAgIDEwNTYwOSwgMTA1NjE0LCAxMDU2MTksIDEwNTYyNCwgMTA1NjI5LCAxMDU2MzQsIDEwNTYzOSwgMTA1NjQ0LCAxMDU2NDksIAotICAgIDEwNTY1NCwgMTA1NjU4LCAxMDU2NjMsIDEwNTY2OCwgMTA1NjczLCAxMDU2NzgsIDEwNTY4MiwgMTA1Njg2LCAxMDU2OTEsIAotICAgIDEwNTY5NiwgMTA1NzAxLCAxMDU3MDYsIDEwNTcxMCwgMTA1NzE1LCAxMDU3MjEsIDEwNTcyNiwgMTA1NzMyLCAxMDU3MzcsIAotICAgIDEwNTc0MiwgMTA1NzQ4LCAxMDU3NTMsIDEwNTc1OSwgMTA1NzY0LCAxMDU3NjksIDEwNTc3NCwgMTA1Nzc5LCAxMDU3ODMsIAotICAgIDEwNTc4OCwgMTA1Nzk0LCAxMDU3OTksIDEwNTgwNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA0NjU5LCAxMDQ2NjMsIAorICAgIDEwNDY2NywgMTA0NjcxLCAxMDQ2NzUsIDEwNDY3OSwgMTA0NjgzLCAxMDQ2ODgsIDEwNDY5MiwgMTA0Njk3LCAxMDQ3MDIsIAorICAgIDEwNDcwNywgMTA0NzEyLCAxMDQ3MTcsIDEwNDcyMiwgMTA0NzI3LCAxMDQ3MzIsIDEwNDczNywgMTA0NzQyLCAxMDQ3NDgsIAorICAgIDEwNDc1NCwgMTA0NzYwLCAxMDQ3NjcsIDEwNDc3NCwgMTA0NzgxLCAxMDQ3ODgsIDEwNDc5NSwgMTA0ODAyLCAxMDQ4MDksIAorICAgIDEwNDgxNiwgMTA0ODIzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAxMDU4MTAsIDEwNTgxNCwgMTA1ODE4LCAxMDU4MjIsIDEwNTgyNiwgMTA1ODMwLCAxMDU4MzUsIDAsIAotICAgIDEwNTg0MCwgMCwgMTA1ODQ1LCAxMDU4NTAsIDEwNTg1NSwgMTA1ODYwLCAwLCAxMDU4NjUsIDEwNTg3MCwgMTA1ODc1LCAKLSAgICAxMDU4ODAsIDEwNTg4NSwgMTA1ODkwLCAxMDU4OTUsIDEwNTkwMCwgMTA1OTA1LCAxMDU5MTAsIDEwNTkxNSwgMTA1OTIwLCAKLSAgICAxMDU5MjUsIDEwNTkyOSwgMTA1OTM0LCAwLCAxMDU5MzksIDEwNTk0NCwgMTA1OTQ4LCAxMDU5NTIsIDEwNTk1NywgCi0gICAgMTA1OTYyLCAxMDU5NjcsIDEwNTk3MiwgMTA1OTc2LCAxMDU5ODEsIDEwNTk4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMTA1OTkxLCAKLSAgICAxMDU5OTUsIDEwNjAwMCwgMTA2MDA0LCAxMDYwMDksIDEwNjAxMywgMTA2MDE4LCAxMDYwMjIsIDEwNjAyNywgMTA2MDMxLCAKLSAgICAxMDYwMzYsIDEwNjA0MCwgMTA2MDQ1LCAxMDYwNTAsIDEwNjA1NSwgMTA2MDYwLCAxMDYwNjUsIDEwNjA3MCwgMTA2MDc1LCAKLSAgICAxMDYwODAsIDEwNjA4NSwgMTA2MDkwLCAxMDYwOTUsIDEwNjEwMCwgMTA2MTA1LCAxMDYxMTAsIDEwNjExNSwgMTA2MTIwLCAKLSAgICAxMDYxMjUsIDEwNjEzMCwgMTA2MTM1LCAxMDYxNDAsIDEwNjE0NSwgMTA2MTUwLCAxMDYxNTUsIDEwNjE1OSwgMTA2MTY0LCAKLSAgICAxMDYxNjksIDEwNjE3NCwgMTA2MTc5LCAxMDYxODMsIDEwNjE4NywgMTA2MTkyLCAxMDYxOTcsIDEwNjIwMiwgMTA2MjA3LCAKLSAgICAxMDYyMTIsIDEwNjIxNiwgMTA2MjIxLCAxMDYyMjcsIDEwNjIzMiwgMTA2MjM4LCAxMDYyNDMsIDEwNjI0OSwgMTA2MjU0LCAKLSAgICAxMDYyNjAsIDEwNjI2NSwgMTA2MjcxLCAxMDYyNzYsIDAsIDAsIDAsIDAsIDAsIDEwNjI4MSwgMTA2Mjg2LCAxMDYyOTAsIAotICAgIDEwNjI5NCwgMTA2Mjk4LCAxMDYzMDIsIDEwNjMwNiwgMTA2MzEwLCAxMDYzMTUsIDEwNjMxOSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTA2MzI0LCAxMDYzMzEsIDEwNjMzNiwgMTA2MzQxLCAwLCAxMDYzNDYsIDEwNjM1MCwgMTA2MzU1LCAxMDYzNTksIAotICAgIDEwNjM2NCwgMTA2MzY4LCAxMDYzNzMsIDEwNjM3OCwgMCwgMCwgMTA2MzgzLCAxMDYzODgsIDAsIDAsIDEwNjM5MywgCi0gICAgMTA2Mzk4LCAxMDY0MDMsIDEwNjQwNywgMTA2NDEyLCAxMDY0MTcsIDEwNjQyMiwgMTA2NDI3LCAxMDY0MzIsIDEwNjQzNywgCi0gICAgMTA2NDQyLCAxMDY0NDcsIDEwNjQ1MiwgMTA2NDU3LCAxMDY0NjIsIDEwNjQ2NywgMTA2NDcyLCAxMDY0NzcsIDEwNjQ4MiwgCi0gICAgMTA2NDg3LCAxMDY0OTIsIDEwNjQ5NywgMCwgMTA2NTAyLCAxMDY1MDYsIDEwNjUxMSwgMTA2NTE2LCAxMDY1MjEsIAotICAgIDEwNjUyNSwgMTA2NTI5LCAwLCAxMDY1MzQsIDEwNjUzOSwgMCwgMTA2NTQ0LCAxMDY1NDksIDEwNjU1NCwgMTA2NTU5LCAKLSAgICAxMDY1NjQsIDAsIDAsIDEwNjU2OCwgMTA2NTczLCAxMDY1NzgsIDEwNjU4NCwgMTA2NTg5LCAxMDY1OTUsIDEwNjYwMCwgCi0gICAgMTA2NjA2LCAxMDY2MTIsIDAsIDAsIDEwNjYxOSwgMTA2NjI1LCAwLCAwLCAxMDY2MzEsIDEwNjYzNywgMTA2NjQzLCAwLCAwLCAKLSAgICAxMDY2NDgsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNjY1MiwgMCwgMCwgMCwgMCwgMCwgMTA2NjU5LCAxMDY2NjQsIDEwNjY3MSwgCi0gICAgMTA2Njc5LCAxMDY2ODUsIDEwNjY5MSwgMTA2Njk3LCAwLCAwLCAxMDY3MDQsIDEwNjcxMCwgMTA2NzE1LCAxMDY3MjAsIAotICAgIDEwNjcyNSwgMTA2NzMwLCAxMDY3MzUsIDAsIDAsIDAsIDEwNjc0MCwgMTA2NzQ1LCAxMDY3NTAsIDEwNjc1NiwgMTA2NzYyLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDQ4MzAsIDEwNDgzNCwgMTA0ODM4LCAxMDQ4NDIsIAorICAgIDEwNDg0NiwgMTA0ODUwLCAxMDQ4NTMsIDEwNDg1NywgMTA0ODYwLCAxMDQ4NjQsIDEwNDg2NywgMTA0ODcxLCAxMDQ4NzUsIAorICAgIDEwNDg4MCwgMTA0ODg0LCAxMDQ4ODksIDEwNDg5MiwgMTA0ODk2LCAxMDQ4OTksIDEwNDkwMywgMTA0OTA2LCAxMDQ5MTAsIAorICAgIDEwNDkxNCwgMTA0OTE4LCAxMDQ5MjIsIDEwNDkyNiwgMTA0OTMwLCAxMDQ5MzQsIDEwNDkzOCwgMTA0OTQyLCAxMDQ5NDYsIAorICAgIDEwNDk1MCwgMTA0OTU0LCAxMDQ5NTgsIDEwNDk2MiwgMTA0OTY2LCAxMDQ5NzAsIDEwNDk3NCwgMTA0OTc4LCAxMDQ5ODEsIAorICAgIDEwNDk4NCwgMTA0OTg4LCAxMDQ5OTIsIDEwNDk5NiwgMTA0OTk5LCAxMDUwMDIsIDEwNTAwNiwgMTA1MDA5LCAxMDUwMTMsIAorICAgIDEwNTAxNywgMTA1MDIxLCAxMDUwMjUsIDEwNTAyOCwgMTA1MDMyLCAxMDUwMzgsIDEwNTA0NCwgMTA1MDUwLCAxMDUwNTUsIAorICAgIDEwNTA2MiwgMTA1MDY2LCAxMDUwNzEsIDEwNTA3NSwgMTA1MDgwLCAxMDUwODUsIDEwNTA5MSwgMTA1MDk2LCAxMDUxMDIsIAorICAgIDEwNTEwNiwgMTA1MTExLCAxMDUxMTUsIDEwNTEyMCwgMTA1MTIzLCAxMDUxMjYsIDEwNTEzMCwgMTA1MTM1LCAxMDUxNDEsIAorICAgIDEwNTE0NiwgMTA1MTUyLCAwLCAwLCAwLCAwLCAxMDUxNTcsIDEwNTE2MCwgMTA1MTYzLCAxMDUxNjYsIDEwNTE2OSwgCisgICAgMTA1MTcyLCAxMDUxNzUsIDEwNTE3OSwgMTA1MTgyLCAxMDUxODYsIDEwNTE5MCwgMTA1MTk0LCAxMDUxOTgsIDEwNTIwMiwgCisgICAgMTA1MjA2LCAxMDUyMTAsIDEwNTIxNCwgMTA1MjE4LCAxMDUyMjIsIDEwNTIyNywgMTA1MjMyLCAxMDUyMzYsIDEwNTIzOSwgCisgICAgMTA1MjQyLCAxMDUyNDUsIDEwNTI0OCwgMTA1MjUxLCAxMDUyNTQsIDEwNTI1OCwgMTA1MjYxLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDUyNjUsIDEwNTI2OSwgMTA1Mjc0LCAxMDUyNzksIDEwNTI4NCwgCisgICAgMTA1Mjg4LCAxMDUyOTMsIDEwNTI5NywgMTA1MzAyLCAxMDUzMDYsIDEwNTMxMSwgMTA1MzE1LCAxMDUzMjAsIDEwNTMyNCwgCisgICAgMTA1MzI5LCAxMDUzMzMsIDEwNTMzOCwgMTA1MzQzLCAxMDUzNDgsIDEwNTM1MywgMTA1MzU4LCAxMDUzNjMsIDEwNTM2OCwgCisgICAgMTA1MzczLCAxMDUzNzgsIDEwNTM4MywgMTA1Mzg4LCAxMDUzOTMsIDEwNTM5OCwgMTA1NDAzLCAxMDU0MDgsIDEwNTQxMywgCisgICAgMTA1NDE4LCAxMDU0MjMsIDEwNTQyOCwgMTA1NDMzLCAxMDU0MzcsIDEwNTQ0MSwgMTA1NDQ2LCAxMDU0NTEsIDEwNTQ1NiwgCisgICAgMTA1NDYwLCAxMDU0NjQsIDEwNTQ2OSwgMTA1NDczLCAxMDU0NzgsIDEwNTQ4MywgMTA1NDg4LCAxMDU0OTMsIDEwNTQ5NywgCisgICAgMTA1NTAzLCAxMDU1MDgsIDEwNTUxNCwgMTA1NTE5LCAxMDU1MjUsIDEwNTUzMCwgMTA1NTM2LCAxMDU1NDEsIDEwNTU0NywgCisgICAgMTA1NTUyLCAxMDU1NTcsIDEwNTU2MiwgMTA1NTY3LCAxMDU1NzEsIDEwNTU3NiwgMTA1NTgyLCAxMDU1ODYsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNTU5MSwgMTA1NTk4LCAxMDU2MDUsIDEwNTYxMiwgMTA1NjE5LCAKKyAgICAxMDU2MjYsIDEwNTYzMywgMTA1NjQwLCAxMDU2NDcsIDEwNTY1NCwgMTA1NjYxLCAxMDU2NjgsIDEwNTY3NSwgMTA1NjgyLCAKKyAgICAxMDU2ODksIDEwNTY5NiwgMTA1NzAzLCAxMDU3MTAsIDEwNTcxNywgMTA1NzI0LCAxMDU3MzEsIDEwNTczOCwgMTA1NzQ1LCAKKyAgICAxMDU3NTIsIDEwNTc1OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA1NzY2LCAxMDU3NzMsIDEwNTc3OSwgMTA1Nzg1LCAKKyAgICAxMDU3OTEsIDEwNTc5NywgMTA1ODAzLCAxMDU4MDksIDEwNTgxNiwgMTA1ODIyLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDU4MjksIAorICAgIDEwNTgzNCwgMTA1ODM5LCAxMDU4NDQsIDEwNTg0OSwgMTA1ODUzLCAxMDU4NTcsIDEwNTg2MSwgMTA1ODY2LCAxMDU4NzEsIAorICAgIDEwNTg3NiwgMTA1ODgxLCAxMDU4ODYsIDEwNTg5MSwgMTA1ODk2LCAxMDU5MDEsIDEwNTkwNiwgMTA1OTExLCAxMDU5MTYsIAorICAgIDEwNTkyMSwgMTA1OTI2LCAxMDU5MzEsIDEwNTkzNiwgMTA1OTQxLCAxMDU5NDYsIDEwNTk1MSwgMTA1OTU2LCAxMDU5NjEsIAorICAgIDEwNTk2NiwgMTA1OTcxLCAxMDU5NzYsIDEwNTk4MSwgMTA1OTg2LCAxMDU5OTEsIDEwNTk5NiwgMTA2MDAxLCAxMDYwMDYsIAorICAgIDEwNjAxMSwgMTA2MDE2LCAxMDYwMjEsIDEwNjAyNiwgMTA2MDMxLCAxMDYwMzcsIDEwNjA0MiwgMTA2MDQ4LCAxMDYwNTMsIAorICAgIDEwNjA1OSwgMTA2MDY0LCAxMDYwNzAsIDEwNjA3NiwgMTA2MDgwLCAxMDYwODUsIDEwNjA4OSwgMCwgMTA2MDkzLCAKKyAgICAxMDYwOTgsIDEwNjEwMiwgMTA2MTA2LCAxMDYxMTAsIDEwNjExNCwgMTA2MTE4LCAxMDYxMjIsIDEwNjEyNywgMTA2MTMxLCAKKyAgICAxMDYxMzYsIDEwNjE0MSwgMTA2MTQ1LCAxMDYxNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEwNjE1NSwgMTA2MTU5LCAxMDYxNjMsIDEwNjE2NywgMTA2MTcxLCAxMDYxNzUsIDEwNjE3OSwgMTA2MTg0LCAxMDYxODksIAorICAgIDEwNjE5NCwgMTA2MTk5LCAxMDYyMDQsIDEwNjIwOSwgMTA2MjE0LCAxMDYyMTksIDEwNjIyNCwgMTA2MjI5LCAxMDYyMzQsIAorICAgIDEwNjIzOSwgMTA2MjQ0LCAxMDYyNDksIDEwNjI1NCwgMTA2MjU5LCAxMDYyNjQsIDEwNjI2OCwgMTA2MjcyLCAxMDYyNzcsIAorICAgIDEwNjI4MiwgMTA2Mjg3LCAxMDYyOTEsIDEwNjI5NiwgMTA2MzAwLCAxMDYzMDUsIDEwNjMxMCwgMTA2MzE0LCAxMDYzMTksIAorICAgIDEwNjMyNCwgMTA2MzI5LCAxMDYzMzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNjMzOSwgMTA2MzQzLCAKKyAgICAxMDYzNDcsIDEwNjM1MSwgMTA2MzU0LCAxMDYzNTgsIDEwNjM2MSwgMTA2MzY1LCAxMDYzNjgsIDEwNjM3MiwgMTA2Mzc2LCAKKyAgICAxMDYzODEsIDEwNjM4NSwgMTA2MzkwLCAxMDYzOTMsIDEwNjM5NywgMTA2NDAwLCAxMDY0MDQsIDEwNjQwNywgMTA2NDExLCAKKyAgICAxMDY0MTUsIDEwNjQxOSwgMTA2NDIzLCAxMDY0MjcsIDEwNjQzMSwgMTA2NDM1LCAxMDY0MzksIDEwNjQ0MywgMTA2NDQ3LCAKKyAgICAxMDY0NTEsIDEwNjQ1NSwgMTA2NDU5LCAxMDY0NjMsIDEwNjQ2NywgMTA2NDcxLCAxMDY0NzUsIDEwNjQ3OSwgMTA2NDgyLCAKKyAgICAxMDY0ODUsIDEwNjQ4OSwgMTA2NDkzLCAxMDY0OTcsIDEwNjUwMCwgMTA2NTAzLCAxMDY1MDcsIDEwNjUxMCwgMTA2NTE0LCAKKyAgICAxMDY1MTgsIDEwNjUyMiwgMTA2NTI2LCAxMDY1MzAsIDEwNjUzMywgMTA2NTM4LCAxMDY1NDIsIDEwNjU0NywgMTA2NTUxLCAKKyAgICAxMDY1NTYsIDEwNjU2MSwgMTA2NTY3LCAxMDY1NzIsIDEwNjU3OCwgMTA2NTgyLCAxMDY1ODcsIDEwNjU5MSwgMTA2NTk2LCAKKyAgICAxMDY2MDAsIDEwNjYwNCwgMTA2NjA4LCAxMDY2MTIsIDEwNjYxNSwgMTA2NjE4LCAxMDY2MjIsIDEwNjYyNiwgMTA2NjI5LCAKKyAgICAxMDY2MzMsIDEwNjYzNywgMTA2NjQxLCAxMDY2NDgsIDAsIDAsIDEwNjY1MiwgMTA2NjU2LCAxMDY2NTksIDEwNjY2MiwgCisgICAgMTA2NjY1LCAxMDY2NjgsIDEwNjY3MSwgMTA2Njc0LCAxMDY2NzgsIDEwNjY4MSwgMTA2Njg1LCAxMDY2ODgsIDEwNjY5MiwgCisgICAgMTA2Njk1LCAxMDY2OTksIDEwNjcwNCwgMCwgMTA2NzA5LCAxMDY3MTQsIDEwNjcxOSwgMTA2NzI0LCAxMDY3MjksIAorICAgIDEwNjczNCwgMTA2NzM5LCAxMDY3NDUsIDEwNjc1MCwgMTA2NzU2LCAxMDY3NjIsIDEwNjc2OCwgMTA2Nzc0LCAxMDY3ODAsIAorICAgIDEwNjc4NiwgMTA2NzkyLCAxMDY3OTgsIDEwNjgwNCwgMTA2ODEwLCAxMDY4MTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDEwNjgyNCwgMTA2ODI4LCAxMDY4MzMsIDEwNjgzNywgMTA2ODQxLCAxMDY4NDUsIDEwNjg1MCwgMTA2ODU0LCAKKyAgICAxMDY4NTksIDEwNjg2MywgMTA2ODY4LCAxMDY4NzMsIDEwNjg3OCwgMTA2ODgzLCAxMDY4ODgsIDEwNjg5MywgMTA2ODk4LCAKKyAgICAxMDY5MDMsIDAsIDEwNjkwOCwgMTA2OTEzLCAxMDY5MTgsIDEwNjkyMywgMTA2OTI4LCAxMDY5MzMsIDEwNjkzOCwgCisgICAgMTA2OTQzLCAxMDY5NDgsIDEwNjk1MywgMTA2OTU4LCAxMDY5NjMsIDEwNjk2NywgMTA2OTcxLCAxMDY5NzYsIDEwNjk4MSwgCisgICAgMTA2OTg2LCAxMDY5OTEsIDEwNjk5NSwgMTA2OTk5LCAxMDcwMDQsIDEwNzAwOCwgMTA3MDEzLCAxMDcwMTgsIDEwNzAyMiwgCisgICAgMTA3MDI3LCAxMDcwMzMsIDEwNzAzOCwgMTA3MDQ0LCAxMDcwNDksIDEwNzA1NCwgMTA3MDYwLCAxMDcwNjUsIDEwNzA3MSwgCisgICAgMTA3MDc2LCAxMDcwODEsIDEwNzA4NiwgMTA3MDkxLCAxMDcwOTUsIDEwNzEwMCwgMTA3MTA2LCAxMDcxMTEsIDEwNzExNywgCisgICAgMTA3MTIyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcxMjcsIDEwNzEzMSwgCisgICAgMTA3MTM1LCAxMDcxMzksIDEwNzE0MywgMTA3MTQ3LCAxMDcxNTIsIDAsIDEwNzE1NywgMCwgMTA3MTYyLCAxMDcxNjcsIAorICAgIDEwNzE3MiwgMTA3MTc3LCAwLCAxMDcxODIsIDEwNzE4NywgMTA3MTkyLCAxMDcxOTcsIDEwNzIwMiwgMTA3MjA3LCAKKyAgICAxMDcyMTIsIDEwNzIxNywgMTA3MjIyLCAxMDcyMjcsIDEwNzIzMiwgMTA3MjM3LCAxMDcyNDEsIDEwNzI0NSwgMTA3MjUwLCAKKyAgICAwLCAxMDcyNTUsIDEwNzI2MCwgMTA3MjY0LCAxMDcyNjgsIDEwNzI3MywgMTA3Mjc3LCAxMDcyODIsIDEwNzI4NywgCisgICAgMTA3MjkxLCAxMDcyOTYsIDEwNzMwMSwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3MzA2LCAxMDczMTAsIDEwNzMxNSwgMTA3MzE5LCAKKyAgICAxMDczMjQsIDEwNzMyOCwgMTA3MzMzLCAxMDczMzcsIDEwNzM0MiwgMTA3MzQ2LCAxMDczNTEsIDEwNzM1NSwgMTA3MzYwLCAKKyAgICAxMDczNjUsIDEwNzM3MCwgMTA3Mzc1LCAxMDczODAsIDEwNzM4NSwgMTA3MzkwLCAxMDczOTUsIDEwNzQwMCwgMTA3NDA1LCAKKyAgICAxMDc0MTAsIDEwNzQxNSwgMTA3NDIwLCAxMDc0MjUsIDEwNzQzMCwgMTA3NDM1LCAxMDc0NDAsIDEwNzQ0NSwgMTA3NDUwLCAKKyAgICAxMDc0NTUsIDEwNzQ2MCwgMTA3NDY1LCAxMDc0NjksIDEwNzQ3MywgMTA3NDc4LCAxMDc0ODMsIDEwNzQ4OCwgMTA3NDkzLCAKKyAgICAxMDc0OTcsIDEwNzUwMSwgMTA3NTA2LCAxMDc1MTAsIDEwNzUxNSwgMTA3NTIwLCAxMDc1MjUsIDEwNzUyOSwgMTA3NTM0LCAKKyAgICAxMDc1NDAsIDEwNzU0NSwgMTA3NTUxLCAxMDc1NTYsIDEwNzU2MiwgMTA3NTY3LCAxMDc1NzMsIDEwNzU3OCwgMTA3NTg0LCAKKyAgICAxMDc1ODksIDAsIDAsIDAsIDAsIDAsIDEwNzU5NCwgMTA3NTk5LCAxMDc2MDMsIDEwNzYwNywgMTA3NjExLCAxMDc2MTUsIAorICAgIDEwNzYxOSwgMTA3NjIzLCAxMDc2MjgsIDEwNzYzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3NjM3LCAxMDc2NDQsIDEwNzY0OSwgCisgICAgMTA3NjU0LCAwLCAxMDc2NTksIDEwNzY2MywgMTA3NjY4LCAxMDc2NzIsIDEwNzY3NywgMTA3NjgxLCAxMDc2ODYsIAorICAgIDEwNzY5MSwgMCwgMCwgMTA3Njk2LCAxMDc3MDEsIDAsIDAsIDEwNzcwNiwgMTA3NzExLCAxMDc3MTYsIDEwNzcyMCwgCisgICAgMTA3NzI1LCAxMDc3MzAsIDEwNzczNSwgMTA3NzQwLCAxMDc3NDUsIDEwNzc1MCwgMTA3NzU1LCAxMDc3NjAsIDEwNzc2NSwgCisgICAgMTA3NzcwLCAxMDc3NzUsIDEwNzc4MCwgMTA3Nzg1LCAxMDc3OTAsIDEwNzc5NSwgMTA3ODAwLCAxMDc4MDUsIDEwNzgxMCwgCisgICAgMCwgMTA3ODE0LCAxMDc4MTgsIDEwNzgyMywgMTA3ODI4LCAxMDc4MzMsIDEwNzgzNywgMTA3ODQxLCAwLCAxMDc4NDYsIAorICAgIDEwNzg1MCwgMCwgMTA3ODU1LCAxMDc4NjAsIDEwNzg2NSwgMTA3ODcwLCAxMDc4NzUsIDAsIDAsIDEwNzg3OSwgMTA3ODg0LCAKKyAgICAxMDc4ODksIDEwNzg5NSwgMTA3OTAwLCAxMDc5MDYsIDEwNzkxMSwgMTA3OTE3LCAxMDc5MjMsIDAsIDAsIDEwNzkzMCwgCisgICAgMTA3OTM2LCAwLCAwLCAxMDc5NDIsIDEwNzk0OCwgMTA3OTU0LCAwLCAwLCAxMDc5NTksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEwNzk2MywgMCwgMCwgMCwgMCwgMCwgMTA3OTcwLCAxMDc5NzUsIDEwNzk4MiwgMTA3OTkwLCAxMDc5OTYsIDEwODAwMiwgCisgICAgMTA4MDA4LCAwLCAwLCAxMDgwMTUsIDEwODAyMSwgMTA4MDI2LCAxMDgwMzEsIDEwODAzNiwgMTA4MDQxLCAxMDgwNDYsIDAsIAorICAgIDAsIDAsIDEwODA1MSwgMTA4MDU2LCAxMDgwNjEsIDEwODA2NiwgMTA4MDcyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDgwNzcsIDEwODA4MCwgMTA4MDg0LCAxMDgwODcsIDEwODA5MSwgCisgICAgMTA4MDk0LCAxMDgwOTgsIDEwODEwMiwgMTA4MTA3LCAxMDgxMTEsIDEwODExNiwgMTA4MTE5LCAxMDgxMjMsIDEwODEyNiwgCisgICAgMTA4MTMwLCAxMDgxMzMsIDEwODEzNywgMTA4MTQxLCAxMDgxNDUsIDEwODE0OSwgMTA4MTUzLCAxMDgxNTcsIDEwODE2MSwgCisgICAgMTA4MTY1LCAxMDgxNjksIDEwODE3MywgMTA4MTc3LCAxMDgxODEsIDEwODE4NSwgMTA4MTg5LCAxMDgxOTMsIDEwODE5NywgCisgICAgMTA4MjAxLCAxMDgyMDUsIDEwODIwOSwgMTA4MjEzLCAxMDgyMTYsIDEwODIyMCwgMTA4MjIzLCAxMDgyMjcsIDEwODIzMSwgCisgICAgMTA4MjM1LCAxMDgyMzgsIDEwODI0MiwgMTA4MjQ1LCAxMDgyNDksIDEwODI1MywgMTA4MjU2LCAxMDgyNjAsIDEwODI2NCwgCisgICAgMTA4MjY4LCAxMDgyNzIsIDEwODI3NiwgMTA4Mjc5LCAxMDgyODQsIDEwODI4OCwgMTA4MjkzLCAxMDgyOTcsIDEwODMwMiwgCisgICAgMTA4MzA3LCAxMDgzMTMsIDEwODMxOCwgMTA4MzI0LCAxMDgzMjgsIDEwODMzMywgMTA4MzM3LCAxMDgzNDIsIDEwODM0NiwgCisgICAgMTA4MzUwLCAxMDgzNTQsIDEwODM1OCwgMTA4MzYyLCAxMDgzNjYsIDEwODM3MSwgMTA4Mzc0LCAxMDgzNzcsIDEwODM4MCwgCisgICAgMTA4Mzg0LCAxMDgzODcsIDEwODM5MiwgMTA4Mzk2LCAxMDg0MDAsIDEwODQwMywgMTA4NDA2LCAxMDg0MDksIDEwODQxMiwgCisgICAgMTA4NDE1LCAxMDg0MTgsIDEwODQyMiwgMTA4NDI1LCAwLCAxMDg0MjksIDAsIDEwODQzMywgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTA4NDM3LCAxMDg0NDEsIDEwODQ0NSwgMTA4NDUwLCAxMDg0NTQsIDEwODQ1OSwgMTA4NDYzLCAKKyAgICAxMDg0NjgsIDEwODQ3MywgMTA4NDc5LCAxMDg0ODQsIDEwODQ5MCwgMTA4NDk0LCAxMDg0OTksIDEwODUwMywgMTA4NTA4LCAKKyAgICAxMDg1MTIsIDEwODUxNywgMTA4NTIyLCAxMDg1MjcsIDEwODUzMiwgMTA4NTM3LCAxMDg1NDIsIDEwODU0NywgMTA4NTUyLCAKKyAgICAxMDg1NTcsIDEwODU2MiwgMTA4NTY3LCAxMDg1NzIsIDEwODU3NywgMTA4NTgyLCAxMDg1ODcsIDEwODU5MiwgMTA4NTk3LCAKKyAgICAxMDg2MDIsIDEwODYwNiwgMTA4NjEwLCAxMDg2MTUsIDEwODYyMCwgMTA4NjI1LCAxMDg2MjksIDEwODYzMywgMTA4NjM4LCAKKyAgICAxMDg2NDIsIDEwODY0NywgMTA4NjUyLCAxMDg2NTcsIDEwODY2MiwgMTA4NjY2LCAxMDg2NzIsIDEwODY3NywgMTA4NjgzLCAKKyAgICAxMDg2ODgsIDEwODY5NCwgMTA4NzAwLCAxMDg3MDcsIDEwODcxMywgMTA4NzIwLCAxMDg3MjUsIDEwODczMiwgMTA4NzM4LCAKKyAgICAxMDg3NDMsIDEwODc1MCwgMTA4NzU2LCAxMDg3NjEsIDEwODc2NiwgMTA4NzcxLCAxMDg3NzYsIDEwODc4MSwgMTA4Nzg2LCAKKyAgICAxMDg3OTAsIDEwODc5NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA4Nzk5LCAxMDg4MDQsIDEwODgwOCwgMTA4ODEyLCAKKyAgICAxMDg4MTYsIDEwODgyMCwgMTA4ODI0LCAxMDg4MjgsIDEwODgzMywgMTA4ODM3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAxMDY3NjcsIDEwNjc3MSwgMTA2Nzc1LCAxMDY3ODAsIDEwNjc4NCwgMTA2Nzg5LCAxMDY3OTMsIDEwNjc5OCwgCi0gICAgMTA2ODAzLCAxMDY4MDksIDEwNjgxNCwgMTA2ODIwLCAxMDY4MjQsIDEwNjgyOSwgMTA2ODMzLCAxMDY4MzgsIDEwNjg0MiwgCi0gICAgMTA2ODQ3LCAxMDY4NTIsIDEwNjg1NywgMTA2ODYyLCAxMDY4NjcsIDEwNjg3MiwgMTA2ODc3LCAxMDY4ODIsIDEwNjg4NywgCi0gICAgMTA2ODkyLCAxMDY4OTcsIDEwNjkwMiwgMTA2OTA3LCAxMDY5MTIsIDEwNjkxNywgMTA2OTIyLCAxMDY5MjcsIDEwNjkzMiwgCi0gICAgMTA2OTM3LCAxMDY5NDEsIDEwNjk0NiwgMTA2OTUxLCAxMDY5NTYsIDEwNjk2MCwgMTA2OTY0LCAxMDY5NjksIDEwNjk3NCwgCi0gICAgMTA2OTc5LCAxMDY5ODQsIDEwNjk4OSwgMTA2OTk0LCAxMDY5OTgsIDEwNzAwNCwgMTA3MDA5LCAxMDcwMTUsIDEwNzAyMCwgCi0gICAgMTA3MDI2LCAxMDcwMzIsIDEwNzAzOSwgMTA3MDQ1LCAxMDcwNTIsIDEwNzA1NywgMTA3MDY0LCAxMDcwNzAsIDEwNzA3NSwgCi0gICAgMTA3MDgyLCAxMDcwODgsIDEwNzA5MywgMTA3MDk4LCAxMDcxMDMsIDEwNzEwOCwgMTA3MTEzLCAxMDcxMTgsIDEwNzEyMiwgCi0gICAgMTA3MTI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcxMzEsIDEwNzEzNiwgMTA3MTQwLCAxMDcxNDQsIDEwNzE0OCwgCi0gICAgMTA3MTUyLCAxMDcxNTYsIDEwNzE2MCwgMTA3MTY1LCAxMDcxNjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwODg0MiwgMTA4ODQ1LCAxMDg4NDksIDEwODg1MiwgCisgICAgMTA4ODU2LCAxMDg4NTksIDEwODg2MywgMTA4ODY3LCAxMDg4NzIsIDEwODg3NiwgMTA4ODgxLCAxMDg4ODQsIDEwODg4OCwgCisgICAgMTA4ODkxLCAxMDg4OTUsIDEwODg5OCwgMTA4OTAyLCAxMDg5MDYsIDEwODkxMCwgMTA4OTE0LCAxMDg5MTgsIDEwODkyMiwgCisgICAgMTA4OTI2LCAxMDg5MzAsIDEwODkzNCwgMTA4OTM4LCAxMDg5NDIsIDEwODk0NiwgMTA4OTUwLCAxMDg5NTQsIDEwODk1OCwgCisgICAgMTA4OTYyLCAxMDg5NjYsIDEwODk3MCwgMTA4OTczLCAxMDg5NzYsIDEwODk4MCwgMTA4OTg0LCAxMDg5ODgsIDEwODk5MSwgCisgICAgMTA4OTk0LCAxMDg5OTgsIDEwOTAwMSwgMTA5MDA1LCAxMDkwMDksIDEwOTAxMywgMTA5MDE3LCAxMDkwMjAsIDEwOTAyNSwgCisgICAgMTA5MDI5LCAxMDkwMzQsIDEwOTAzOCwgMTA5MDQzLCAxMDkwNDgsIDAsIDAsIDEwOTA1NCwgMTA5MDU4LCAxMDkwNjMsIAorICAgIDEwOTA2NywgMTA5MDcyLCAxMDkwNzYsIDEwOTA4MCwgMTA5MDg0LCAxMDkwODgsIDEwOTA5MiwgMTA5MDk2LCAxMDkwOTksIAorICAgIDEwOTEwMywgMTA5MTA4LCAxMDkxMTIsIDEwOTExNywgMTA5MTIyLCAxMDkxMjcsIDEwOTEzNCwgMTA5MTQ2LCAxMDkxNTgsIAorICAgIDEwOTE3MCwgMTA5MTgzLCAxMDkxOTcsIDEwOTIwNCwgMTA5MjE0LCAxMDkyMjIsIDEwOTIzMSwgMTA5MjQwLCAxMDkyNDksIAorICAgIDEwOTI1OSwgMTA5MjcwLCAxMDkyODIsIDEwOTI4OSwgMTA5Mjk2LCAxMDkzMDQsIDEwOTMwOSwgMTA5MzE1LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcxNzQsIDEwNzE3NywgMTA3MTgxLCAxMDcxODQsIDEwNzE4OCwgCi0gICAgMTA3MTkxLCAxMDcxOTUsIDEwNzE5OSwgMTA3MjA0LCAxMDcyMDgsIDEwNzIxMywgMTA3MjE2LCAxMDcyMjAsIDEwNzIyMywgCi0gICAgMTA3MjI3LCAxMDcyMzAsIDEwNzIzNCwgMTA3MjM4LCAxMDcyNDIsIDEwNzI0NiwgMTA3MjUwLCAxMDcyNTQsIDEwNzI1OCwgCi0gICAgMTA3MjYyLCAxMDcyNjYsIDEwNzI3MCwgMTA3Mjc0LCAxMDcyNzgsIDEwNzI4MiwgMTA3Mjg2LCAxMDcyOTAsIDEwNzI5NCwgCi0gICAgMTA3Mjk4LCAxMDczMDIsIDEwNzMwNiwgMTA3MzA5LCAxMDczMTMsIDEwNzMxNywgMTA3MzIxLCAxMDczMjQsIDEwNzMyNywgCi0gICAgMTA3MzMxLCAxMDczMzUsIDEwNzMzOSwgMTA3MzQzLCAxMDczNDcsIDEwNzM1MSwgMTA3MzU0LCAxMDczNTksIDEwNzM2MywgCi0gICAgMTA3MzY4LCAxMDczNzIsIDEwNzM3NywgMTA3MzgyLCAwLCAwLCAxMDczODgsIDEwNzM5MiwgMTA3Mzk3LCAxMDc0MDEsIAotICAgIDEwNzQwNiwgMTA3NDEwLCAxMDc0MTQsIDEwNzQxOCwgMTA3NDIyLCAxMDc0MjYsIDEwNzQzMCwgMTA3NDMzLCAxMDc0MzcsIAotICAgIDEwNzQ0MiwgMTA3NDQ2LCAxMDc0NTEsIDEwNzQ1NiwgMTA3NDYxLCAxMDc0NjgsIDEwNzQ4MCwgMTA3NDkyLCAxMDc1MDQsIAotICAgIDEwNzUxNywgMTA3NTMxLCAxMDc1MzgsIDEwNzU0OCwgMTA3NTU2LCAxMDc1NjUsIDEwNzU3NCwgMTA3NTgzLCAxMDc1OTMsIAotICAgIDEwNzYwNCwgMTA3NjE2LCAxMDc2MjMsIDEwNzYzMCwgMTA3NjM4LCAxMDc2NDMsIDEwNzY0OSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA5MzIyLCAxMDkzMjYsIDEwOTMzMSwgMTA5MzM1LCAxMDkzNDAsIDEwOTM0NCwgCisgICAgMTA5MzQ5LCAxMDkzNTQsIDEwOTM2MCwgMTA5MzY1LCAxMDkzNzEsIDEwOTM3NSwgMTA5MzgwLCAxMDkzODQsIDEwOTM4OSwgCisgICAgMTA5MzkzLCAxMDkzOTgsIDEwOTQwMywgMTA5NDA4LCAxMDk0MTMsIDEwOTQxOCwgMTA5NDIzLCAxMDk0MjgsIDEwOTQzMywgCisgICAgMTA5NDM4LCAxMDk0NDMsIDEwOTQ0OCwgMTA5NDUzLCAxMDk0NTgsIDEwOTQ2MywgMTA5NDY4LCAxMDk0NzMsIDEwOTQ3OCwgCisgICAgMTA5NDgzLCAxMDk0ODcsIDEwOTQ5MSwgMTA5NDk2LCAxMDk1MDEsIDEwOTUwNiwgMTA5NTEwLCAxMDk1MTQsIDEwOTUxOSwgCisgICAgMTA5NTIzLCAxMDk1MjgsIDEwOTUzMywgMTA5NTM4LCAxMDk1NDMsIDEwOTU0NywgMTA5NTUyLCAxMDk1NTgsIDEwOTU2MywgCisgICAgMTA5NTY5LCAxMDk1NzQsIDEwOTU4MCwgMTA5NTg2LCAxMDk1OTMsIDEwOTU5OSwgMTA5NjA2LCAxMDk2MTEsIDEwOTYxNywgCisgICAgMTA5NjIyLCAxMDk2MjgsIDEwOTYzMywgMTA5NjM4LCAxMDk2NDMsIDEwOTY0OCwgMTA5NjUyLCAxMDk2NTcsIDEwOTY2MiwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA5NjY3LCAxMDk2NzIsIDEwOTY3NiwgMTA5NjgwLCAxMDk2ODQsIAorICAgIDEwOTY4OCwgMTA5NjkyLCAxMDk2OTYsIDEwOTcwMSwgMTA5NzA1LCAwLCAwLCAwLCAwLCAwLCAwLCAxMDk3MTAsIDEwOTcxNiwgCisgICAgMTA5NzIxLCAxMDk3MjgsIDEwOTczNiwgMTA5NzQzLCAxMDk3NTEsIDEwOTc2MCwgMTA5NzY1LCAxMDk3NzQsIDEwOTc3OSwgCisgICAgMTA5Nzg3LCAxMDk3OTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEwOTgwNywgMTA5ODExLCAxMDk4MTYsIDEwOTgyMCwgMTA5ODI1LCAxMDk4MjksIDEwOTgzNCwgMTA5ODM4LCAxMDk4NDMsIAorICAgIDEwOTg0NywgMTA5ODUyLCAxMDk4NTYsIDEwOTg2MSwgMTA5ODY2LCAxMDk4NzEsIDEwOTg3NiwgMTA5ODgxLCAxMDk4ODYsIAorICAgIDEwOTg5MSwgMTA5ODk2LCAxMDk5MDEsIDEwOTkwNiwgMTA5OTExLCAxMDk5MTYsIDEwOTkyMSwgMTA5OTI2LCAxMDk5MzEsIAorICAgIDEwOTkzNiwgMTA5OTQxLCAxMDk5NDYsIDEwOTk1MCwgMTA5OTU0LCAxMDk5NTksIDEwOTk2NCwgMTA5OTY5LCAxMDk5NzMsIAorICAgIDEwOTk3NywgMTA5OTgyLCAxMDk5ODYsIDEwOTk5MSwgMTA5OTk2LCAxMTAwMDEsIDExMDAwNSwgMTEwMDEwLCAxMTAwMTUsIAorICAgIDExMDAyMCwgMTEwMDI2LCAxMTAwMzEsIDExMDAzNywgMTEwMDQyLCAxMTAwNDgsIDExMDA1MywgMTEwMDU5LCAxMTAwNjQsIAorICAgIDExMDA3MCwgMTEwMDc1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTAwODAsIDExMDA4NSwgMTEwMDg5LCAxMTAwOTMsIAorICAgIDExMDA5NywgMTEwMTAxLCAxMTAxMDUsIDExMDEwOSwgMTEwMTE0LCAxMTAxMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDEwNzY1NiwgMTA3NjYwLCAxMDc2NjUsIDEwNzY2OSwgMTA3Njc0LCAxMDc2NzgsIDEwNzY4MywgCi0gICAgMTA3Njg4LCAxMDc2OTQsIDEwNzY5OSwgMTA3NzA1LCAxMDc3MDksIDEwNzcxNCwgMTA3NzE4LCAxMDc3MjMsIDEwNzcyNywgCi0gICAgMTA3NzMyLCAxMDc3MzcsIDEwNzc0MiwgMTA3NzQ3LCAxMDc3NTIsIDEwNzc1NywgMTA3NzYyLCAxMDc3NjcsIDEwNzc3MiwgCi0gICAgMTA3Nzc3LCAxMDc3ODIsIDEwNzc4NywgMTA3NzkyLCAxMDc3OTcsIDEwNzgwMiwgMTA3ODA3LCAxMDc4MTIsIDEwNzgxNywgCi0gICAgMTA3ODIyLCAxMDc4MjYsIDEwNzgzMSwgMTA3ODM2LCAxMDc4NDEsIDEwNzg0NSwgMTA3ODQ5LCAxMDc4NTQsIDEwNzg1OSwgCi0gICAgMTA3ODY0LCAxMDc4NjksIDEwNzg3NCwgMTA3ODc5LCAxMDc4ODMsIDEwNzg4OCwgMTA3ODk0LCAxMDc4OTksIDEwNzkwNSwgCi0gICAgMTA3OTEwLCAxMDc5MTYsIDEwNzkyMiwgMTA3OTI5LCAxMDc5MzUsIDEwNzk0MiwgMTA3OTQ3LCAxMDc5NTMsIDEwNzk1OCwgCi0gICAgMTA3OTY0LCAxMDc5NjksIDEwNzk3NCwgMTA3OTc5LCAxMDc5ODQsIDEwNzk4OCwgMTA3OTkzLCAxMDc5OTgsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwODAwMywgMTA4MDA4LCAxMDgwMTIsIDEwODAxNiwgMTA4MDIwLCAxMDgwMjQsIAotICAgIDEwODAyOCwgMTA4MDMyLCAxMDgwMzcsIDEwODA0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTEwMTIzLCAKKyAgICAxMTAxMjcsIDExMDEzMiwgMTEwMTM3LCAxMTAxNDEsIDExMDE0NiwgMTEwMTUzLCAxMTAxNTcsIDExMDE2MiwgMTEwMTY3LCAKKyAgICAxMTAxNzEsIDExMDE3NiwgMTEwMTgxLCAxMTAxODYsIDExMDE5MSwgMTEwMTk1LCAxMTAyMDAsIDExMDIwNSwgMTEwMjA5LCAKKyAgICAxMTAyMTMsIDExMDIxOCwgMTEwMjIzLCAxMTAyMjgsIDExMDIzNSwgMTEwMjQwLCAxMTAyNDUsIDAsIDAsIDAsIDExMDI1MCwgCisgICAgMTEwMjU2LCAxMTAyNjMsIDExMDI3MiwgMTEwMjc3LCAxMTAyODMsIDExMDI4OCwgMTEwMjk0LCAxMTAyOTksIDExMDMwNSwgCisgICAgMTEwMzEwLCAxMTAzMTYsIDExMDMyMSwgMTEwMzI3LCAxMTAzMzMsIDAsIDAsIDAsIDAsIDExMDMzOCwgMTEwMzQzLCAKKyAgICAxMTAzNDcsIDExMDM1MSwgMTEwMzU1LCAxMTAzNTksIDExMDM2MywgMTEwMzY3LCAxMTAzNzIsIDExMDM3NiwgMTEwMzgxLCAKKyAgICAxMTAzODYsIDExMDM5MSwgMTEwMzk3LCAxMTA0MDIsIDExMDQwNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTA4MDQ2LCAxMDgwNTAsIDEwODA1NSwgMTA4MDU5LCAxMDgwNjQsIDEwODA2OCwgMTA4MDczLCAxMDgwNzcsIDEwODA4MiwgCi0gICAgMTA4MDg2LCAxMDgwOTEsIDEwODA5NSwgMTA4MTAwLCAxMDgxMDUsIDEwODExMCwgMTA4MTE1LCAxMDgxMjAsIDEwODEyNSwgCi0gICAgMTA4MTMwLCAxMDgxMzUsIDEwODE0MCwgMTA4MTQ1LCAxMDgxNTAsIDEwODE1NSwgMTA4MTYwLCAxMDgxNjUsIDEwODE3MCwgCi0gICAgMTA4MTc1LCAxMDgxODAsIDEwODE4NSwgMTA4MTkwLCAxMDgxOTQsIDEwODE5OSwgMTA4MjA0LCAxMDgyMDksIDEwODIxMywgCi0gICAgMTA4MjE3LCAxMDgyMjIsIDEwODIyNywgMTA4MjMyLCAxMDgyMzcsIDEwODI0MiwgMTA4MjQ2LCAxMDgyNTEsIDEwODI1NiwgCi0gICAgMTA4MjYxLCAxMDgyNjcsIDEwODI3MiwgMTA4Mjc4LCAxMDgyODMsIDEwODI4OSwgMTA4Mjk0LCAxMDgzMDAsIDEwODMwNSwgCi0gICAgMTA4MzExLCAxMDgzMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwODMyMSwgMTA4MzI2LCAxMDgzMzAsIDEwODMzNCwgCi0gICAgMTA4MzM4LCAxMDgzNDIsIDEwODM0NiwgMTA4MzUwLCAxMDgzNTUsIDEwODM1OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA4MzY0LCAKLSAgICAxMDgzNjgsIDEwODM3MywgMTA4Mzc4LCAxMDgzODMsIDEwODM4OCwgMTA4Mzk1LCAxMDgzOTksIDEwODQwNCwgMTA4NDA5LCAKLSAgICAxMDg0MTMsIDEwODQxOCwgMTA4NDIzLCAxMDg0MjgsIDEwODQzMywgMTA4NDM4LCAxMDg0NDMsIDEwODQ0OCwgMTA4NDUyLCAKLSAgICAxMDg0NTYsIDEwODQ2MSwgMTA4NDY2LCAxMDg0NzEsIDEwODQ3OCwgMTA4NDgzLCAxMDg0ODgsIDAsIDAsIDAsIDEwODQ5MywgCi0gICAgMTA4NTAwLCAxMDg1MDcsIDEwODUxNiwgMTA4NTIxLCAxMDg1MjcsIDEwODUzMiwgMTA4NTM4LCAxMDg1NDMsIDEwODU0OSwgCi0gICAgMTA4NTU0LCAxMDg1NjAsIDEwODU2NSwgMTA4NTcxLCAxMDg1NzcsIDAsIDAsIDAsIDAsIDEwODU4MiwgMTA4NTg3LCAKLSAgICAxMDg1OTEsIDEwODU5NSwgMTA4NTk5LCAxMDg2MDMsIDEwODYwNywgMTA4NjExLCAxMDg2MTYsIDEwODYyMCwgMTA4NjI1LCAKLSAgICAxMDg2MzAsIDEwODYzNSwgMTA4NjQxLCAxMDg2NDYsIDEwODY1MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC0xODkyNCwxNzUgKzIwMDU5LDE5NSBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDExMDQxMiwgMTEwNDIwLCAxMTA0MjcsIDExMDQzNSwgMTEwNDQzLCAxMTA0NTAsIDExMDQ1OCwgCisgICAgMTEwNDY2LCAxMTA0NzQsIDExMDQ4MSwgMTEwNDg4LCAxMTA0OTYsIDExMDUwNCwgMTEwNTEyLCAxMTA1MjAsIDExMDUyOCwgCisgICAgMTEwNTM2LCAxMTA1NDQsIDExMDU1MiwgMTEwNTYwLCAxMTA1NjgsIDExMDU3NiwgMTEwNTg0LCAxMTA1OTIsIDExMDYwMCwgCisgICAgMTEwNjA4LCAxMTA2MTYsIDExMDYyNCwgMTEwNjMyLCAxMTA2NDAsIDExMDY0OCwgMTEwNjU2LCAxMTA2NjQsIDExMDY3MiwgCisgICAgMTEwNjc5LCAxMTA2ODcsIDExMDY5NSwgMTEwNzAyLCAxMTA3MTAsIDExMDcxOCwgMTEwNzI2LCAxMTA3MzMsIDExMDc0MCwgCisgICAgMTEwNzQ4LCAxMTA3NTYsIDExMDc2NCwgMTEwNzcyLCAxMTA3ODAsIDExMDc4OCwgMTEwNzk2LCAxMTA4MDQsIDExMDgxMiwgCisgICAgMTEwODIwLCAxMTA4MjgsIDExMDgzNiwgMTEwODQ0LCAxMTA4NTIsIDExMDg2MCwgMTEwODY4LCAxMTA4NzYsIDExMDg4NCwgCisgICAgMTEwODkyLCAxMTA5MDAsIDExMDkwOCwgMTEwOTE2LCAxMTA5MjMsIDExMDkyOSwgMTEwOTM1LCAxMTA5NDEsIDExMDk0NywgCisgICAgMTEwOTUzLCAxMTA5NTksIDExMDk2NiwgMTEwOTcyLCAxMTA5NzksIDExMDk4NiwgMTEwOTkzLCAxMTEwMDAsIDExMTAwNywgCisgICAgMTExMDE0LCAxMTEwMjEsIDExMTAyOCwgMTExMDM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMTEwNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDEwODY1NiwgMTA4NjY0LCAxMDg2NzEsIDEwODY3OSwgMTA4Njg3LCAxMDg2OTQsIDEwODcwMiwgCi0gICAgMTA4NzEwLCAxMDg3MTgsIDEwODcyNSwgMTA4NzMyLCAxMDg3NDAsIDEwODc0OCwgMTA4NzU2LCAxMDg3NjQsIDEwODc3MiwgCi0gICAgMTA4NzgwLCAxMDg3ODgsIDEwODc5NiwgMTA4ODA0LCAxMDg4MTIsIDEwODgyMCwgMTA4ODI4LCAxMDg4MzYsIDEwODg0NCwgCi0gICAgMTA4ODUyLCAxMDg4NjAsIDEwODg2OCwgMTA4ODc2LCAxMDg4ODQsIDEwODg5MiwgMTA4OTAwLCAxMDg5MDgsIDEwODkxNiwgCi0gICAgMTA4OTIzLCAxMDg5MzEsIDEwODkzOSwgMTA4OTQ2LCAxMDg5NTQsIDEwODk2MiwgMTA4OTcwLCAxMDg5NzcsIDEwODk4NCwgCi0gICAgMTA4OTkyLCAxMDkwMDAsIDEwOTAwOCwgMTA5MDE2LCAxMDkwMjQsIDEwOTAzMiwgMTA5MDQwLCAxMDkwNDgsIDEwOTA1NiwgCi0gICAgMTA5MDY0LCAxMDkwNzIsIDEwOTA4MCwgMTA5MDg4LCAxMDkwOTYsIDEwOTEwNCwgMTA5MTEyLCAxMDkxMjAsIDEwOTEyOCwgCi0gICAgMTA5MTM2LCAxMDkxNDQsIDEwOTE1MiwgMTA5MTYwLCAxMDkxNjcsIDEwOTE3MywgMTA5MTc5LCAxMDkxODUsIDEwOTE5MSwgCi0gICAgMTA5MTk3LCAxMDkyMDMsIDEwOTIxMCwgMTA5MjE2LCAxMDkyMjMsIDEwOTIzMCwgMTA5MjM3LCAxMDkyNDQsIDEwOTI1MSwgCi0gICAgMTA5MjU4LCAxMDkyNjUsIDEwOTI3MiwgMTA5Mjc5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMDkyODYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDExMTA0OCwgMTExMDU2LCAxMTEwNjQsIDExMTA3MiwgMTExMDgwLCAxMTEwODksIDExMTA5OCwgMTExMTA3LCAKKyAgICAxMTExMTYsIDExMTEyNCwgMTExMTMzLCAxMTExNDIsIDExMTE1MSwgMTExMTYwLCAxMTExNjksIDExMTE3OCwgMTExMTg3LCAKKyAgICAxMTExOTUsIDExMTIwNCwgMTExMjEzLCAxMTEyMjIsIDExMTIzMSwgMTExMjM5LCAxMTEyNDcsIDExMTI1NSwgMTExMjYzLCAKKyAgICAxMTEyNzEsIDExMTI4MCwgMTExMjg5LCAxMTEyOTksIDExMTMwOSwgMTExMzE5LCAxMTEzMjksIDExMTMzOSwgMTExMzQ4LCAKKyAgICAxMTEzNTgsIDExMTM2OCwgMTExMzc4LCAxMTEzODksIDExMTM5OSwgMTExNDExLCAxMTE0MjMsIDExMTQzNCwgMTExNDQ4LCAKKyAgICAxMTE0NTksIDExMTQ2OSwgMTExNDgxLCAxMTE0OTIsIDExMTUwMiwgMTExNTE0LCAxMTE1MjYsIDExMTUzNywgMTExNTQ4LCAKKyAgICAxMTE1NTgsIDExMTU2OCwgMTExNTgwLCAxMTE1OTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMTYwMywgMTExNjA2LCAKKyAgICAxMTE2MTAsIDExMTYxMywgMTExNjE3LCAxMTE2MjAsIDExMTYyNCwgMTExNjI4LCAxMTE2MzMsIDAsIDExMTYzNywgCisgICAgMTExNjQwLCAxMTE2NDQsIDExMTY0NywgMTExNjUxLCAxMTE2NTQsIDExMTY1OCwgMTExNjYyLCAxMTE2NjYsIDExMTY3MCwgCisgICAgMTExNjc0LCAxMTE2NzgsIDExMTY4MiwgMTExNjg2LCAxMTE2OTAsIDExMTY5NCwgMTExNjk4LCAxMTE3MDIsIDExMTcwNiwgCisgICAgMTExNzEwLCAxMTE3MTQsIDExMTcxOCwgMTExNzIyLCAxMTE3MjYsIDExMTcyOSwgMTExNzMyLCAxMTE3MzYsIDExMTc0MCwgCisgICAgMTExNzQ0LCAxMTE3NDcsIDExMTc1MCwgMTExNzU0LCAxMTE3NTcsIDExMTc2MSwgMTExNzY1LCAxMTE3NjksIDExMTc3MywgCisgICAgMTExNzc2LCAxMTE3ODEsIDExMTc4NSwgMTExNzkwLCAxMTE3OTQsIDExMTc5OSwgMTExODA0LCAxMTE4MTAsIDAsIAorICAgIDExMTgxNSwgMTExODE5LCAxMTE4MjQsIDExMTgyOCwgMTExODMzLCAxMTE4MzcsIDExMTg0MSwgMTExODQ1LCAxMTE4NDksIAorICAgIDExMTg1MywgMTExODU2LCAxMTE4NjAsIDExMTg2NSwgMTExODcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMTE4NzUsIDExMTg3OSwgMTExODgyLCAxMTE4ODUsIDExMTg4OCwgMTExODkxLCAxMTE4OTQsIDExMTg5NywgMTExOTAxLCAKKyAgICAxMTE5MDQsIDExMTkwOCwgMTExOTExLCAxMTE5MTQsIDExMTkxNywgMTExOTIwLCAxMTE5MjMsIDExMTkyNiwgMTExOTMwLCAKKyAgICAxMTE5MzMsIDExMTkzNywgMTExOTQxLCAxMTE5NDUsIDExMTk0OSwgMTExOTUzLCAxMTE5NTcsIDExMTk2MSwgMTExOTY1LCAKKyAgICAxMTE5NjksIDExMTk3MywgMCwgMCwgMCwgMTExOTc5LCAxMTE5ODQsIDExMTk4OSwgMTExOTkzLCAxMTE5OTgsIDExMjAwMywgCisgICAgMTEyMDA4LCAxMTIwMTMsIDExMjAxOCwgMTEyMDIzLCAxMTIwMjgsIDExMjAzMywgMTEyMDM4LCAxMTIwNDMsIDExMjA0NywgCisgICAgMTEyMDUxLCAxMTIwNTYsIDExMjA2MSwgMTEyMDY1LCAxMTIwNzAsIDExMjA3NSwgMTEyMDgwLCAxMTIwODUsIDExMjA5MCwgCisgICAgMTEyMDk1LCAxMTIxMDAsIDExMjEwNCwgMTEyMTA5LCAxMTIxMTMsIDExMjExOCwgMTEyMTIzLCAxMTIxMjcsIDAsIDAsIAorICAgIDExMjEzMSwgMTEyMTM3LCAxMTIxNDQsIDExMjE1MSwgMTEyMTU4LCAxMTIxNjUsIDExMjE3MiwgMTEyMTc5LCAxMTIxODYsIAorICAgIDExMjE5MywgMTEyMjAwLCAxMTIyMDcsIDExMjIxMywgMTEyMjE5LCAxMTIyMjYsIDExMjIzMywgMTEyMjM5LCAxMTIyNDYsIAorICAgIDExMjI1MywgMTEyMjYwLCAxMTIyNjcsIDExMjI3NCwgMCwgMTEyMjgxLCAxMTIyODcsIDExMjI5NCwgMTEyMzAwLCAKKyAgICAxMTIzMDcsIDExMjMxNCwgMTEyMzIwLCAxMTIzMjYsIDExMjMzMiwgMTEyMzM3LCAxMTIzNDIsIDExMjM0NywgMTEyMzUyLCAKKyAgICAxMTIzNTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDEwOTI5MiwgMTA5MzAwLCAxMDkzMDgsIDEwOTMxNywgMTA5MzI1LCAxMDkzMzQsIDEwOTM0MywgMTA5MzUyLCAKLSAgICAxMDkzNjEsIDEwOTM2OSwgMTA5Mzc4LCAxMDkzODcsIDEwOTM5NiwgMTA5NDA1LCAxMDk0MTQsIDEwOTQyMywgMTA5NDMyLCAKLSAgICAxMDk0NDEsIDEwOTQ1MCwgMTA5NDU5LCAxMDk0NjgsIDEwOTQ3NywgMTA5NDg1LCAxMDk0OTMsIDEwOTUwMSwgMTA5NTA5LCAKLSAgICAxMDk1MTcsIDEwOTUyNiwgMTA5NTM1LCAxMDk1NDUsIDEwOTU1NSwgMTA5NTY1LCAxMDk1NzUsIDEwOTU4NSwgMTA5NTk0LCAKLSAgICAxMDk2MDQsIDEwOTYxNCwgMTA5NjI0LCAxMDk2MzUsIDEwOTY0NSwgMTA5NjU3LCAxMDk2NjksIDEwOTY4MCwgMTA5Njk0LCAKLSAgICAxMDk3MDUsIDEwOTcxNSwgMTA5NzI3LCAxMDk3MzgsIDEwOTc0OCwgMTA5NzYwLCAxMDk3NzIsIDEwOTc4MywgMTA5Nzk0LCAKLSAgICAxMDk4MDQsIDEwOTgxNCwgMTA5ODI2LCAxMDk4MzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwOTg0OSwgMTA5ODUyLCAKLSAgICAxMDk4NTcsIDEwOTg2MywgMTA5ODcxLCAxMDk4NzYsIDEwOTg4MiwgMTA5ODkwLCAxMDk4OTYsIDEwOTkwMiwgMTA5OTA2LCAKLSAgICAxMDk5MTAsIDEwOTkxNywgMTA5OTI2LCAxMDk5MzMsIDEwOTk0MiwgMTA5OTQ4LCAxMDk5NTcsIDEwOTk2NCwgMTA5OTcxLCAKLSAgICAxMDk5NzgsIDEwOTk4OCwgMTA5OTk0LCAxMDk5OTgsIDExMDAwNSwgMTEwMDE0LCAxMTAwMjQsIDExMDAzMSwgMTEwMDM4LCAKLSAgICAxMTAwNDIsIDExMDA0NiwgMTEwMDUzLCAxMTAwNjMsIDExMDA2NywgMTEwMDc0LCAxMTAwODEsIDExMDA4OCwgMTEwMDk0LCAKLSAgICAxMTAxMDEsIDExMDEwOCwgMTEwMTE1LCAxMTAxMjIsIDExMDEyNiwgMTEwMTMwLCAxMTAxMzQsIDExMDE0MSwgMTEwMTQ1LCAKLSAgICAxMTAxNTIsIDExMDE1OSwgMTEwMTczLCAxMTAxODIsIDExMDE4NiwgMTEwMTkwLCAxMTAxOTQsIDExMDIwMSwgMTEwMjA1LCAKLSAgICAxMTAyMDksIDExMDIxMywgMTEwMjIxLCAxMTAyMjksIDExMDI0OCwgMTEwMjU4LCAxMTAyNzgsIDExMDI4MiwgMTEwMjg2LCAKLSAgICAxMTAyOTAsIDExMDI5NCwgMTEwMjk4LCAxMTAzMDIsIDExMDMwNiwgMTEwMzEzLCAxMTAzMTcsIDExMDMyMCwgMTEwMzI0LCAKLSAgICAxMTAzMjgsIDExMDMzNCwgMTEwMzQxLCAxMTAzNTAsIDExMDM1NCwgMTEwMzYzLCAxMTAzNzIsIDExMDM4MCwgMTEwMzg0LCAKLSAgICAxMTAzOTEsIDExMDM5NSwgMTEwMzk5LCAxMTA0MDMsIDExMDQwNywgMTEwNDE4LCAxMTA0MjcsIDExMDQzNiwgMTEwNDQ1LCAKLSAgICAxMTA0NTQsIDExMDQ2NiwgMTEwNDc1LCAxMTA0ODQsIDExMDQ5MywgMTEwNTAxLCAxMTA1MTAsIDExMDUyMiwgMTEwNTMxLCAKLSAgICAxMTA1NDAsIDExMDU0OSwgMTEwNTYxLCAxMTA1NzAsIDExMDU3OSwgMTEwNTkxLCAxMTA2MDAsIDExMDYwOSwgMTEwNjIxLCAKLSAgICAxMTA2MzAsIDExMDYzNCwgMTEwNjM4LCAxMTA2NDIsIDExMDY0NiwgMTEwNjUwLCAxMTA2NTQsIDExMDY1OCwgMTEwNjY1LCAKLSAgICAxMTA2NjksIDExMDY3MywgMTEwNjg0LCAxMTA2ODgsIDExMDY5MiwgMTEwNjk5LCAxMTA3MDUsIDExMDcxMSwgMTEwNzE1LCAKLSAgICAxMTA3MjIsIDExMDcyNiwgMTEwNzMwLCAxMTA3MzQsIDExMDczOCwgMTEwNzQyLCAxMTA3NDYsIDExMDc1MiwgMTEwNzYwLCAKLSAgICAxMTA3NjQsIDExMDc2OCwgMTEwNzcxLCAxMTA3NzcsIDExMDc4NywgMTEwNzkxLCAxMTA4MDMsIDExMDgxMCwgMTEwODE3LCAKLSAgICAxMTA4MjQsIDExMDgzMSwgMTEwODM3LCAxMTA4NDEsIDExMDg0NSwgMTEwODQ5LCAxMTA4NTMsIDExMDg2MCwgMTEwODY5LCAKLSAgICAxMTA4NzYsIDExMDg4NCwgMTEwODkyLCAxMTA4OTgsIDExMDkwMiwgMTEwOTA2LCAxMTA5MTAsIDExMDkxNCwgMTEwOTIwLCAKLSAgICAxMTA5MjksIDExMDk0MSwgMTEwOTQ4LCAxMTA5NTUsIDExMDk2NCwgMTEwOTc1LCAxMTA5ODEsIDExMDk5MCwgMTEwOTk5LCAKLSAgICAxMTEwMDYsIDExMTAxNSwgMTExMDIyLCAxMTEwMjksIDExMTAzOSwgMTExMDQ2LCAxMTEwNTMsIDExMTA2MCwgMTExMDY3LCAKLSAgICAxMTEwNzEsIDExMTA3NywgMTExMDgxLCAxMTEwOTIsIDExMTEwMCwgMTExMTA5LCAxMTExMjEsIDExMTEyOCwgMTExMTM1LCAKLSAgICAxMTExNDUsIDExMTE1MiwgMTExMTYyLCAxMTExNjksIDExMTE3OSwgMTExMTg2LCAxMTExOTMsIDExMTIwMywgMTExMjEwLCAKLSAgICAxMTEyMTcsIDExMTIyNywgMTExMjM0LCAxMTEyNDYsIDExMTI1NSwgMTExMjYyLCAxMTEyNjksIDExMTI3NiwgMTExMjg1LCAKLSAgICAxMTEyOTUsIDExMTMwOCwgMTExMzE1LCAxMTEzMjUsIDExMTMzNSwgMTExMzQyLCAxMTEzNTEsIDExMTM2NCwgMTExMzcxLCAKLSAgICAxMTEzNzgsIDExMTM4NSwgMTExMzk1LCAxMTE0MDUsIDExMTQxMiwgMTExNDIyLCAxMTE0MjksIDExMTQzNiwgMTExNDQ2LCAKLSAgICAxMTE0NTIsIDExMTQ1OSwgMTExNDY2LCAxMTE0NzMsIDExMTQ4MywgMTExNDkwLCAxMTE0OTcsIDExMTUwNCwgMTExNTEwLCAKLSAgICAxMTE1MTcsIDExMTUyNywgMTExNTM0LCAxMTE1MzgsIDExMTU0NiwgMTExNTUwLCAxMTE1NjIsIDExMTU2NiwgMTExNTgwLCAKLSAgICAxMTE1ODQsIDExMTU4OCwgMTExNTkyLCAxMTE1OTYsIDExMTYwMiwgMTExNjA5LCAxMTE2MTcsIDExMTYyMSwgMTExNjI1LCAKLSAgICAxMTE2MjksIDExMTYzMywgMTExNjQwLCAxMTE2NDQsIDExMTY1MCwgMTExNjU2LCAxMTE2NjQsIDExMTY2OCwgMTExNjc1LCAKLSAgICAxMTE2ODMsIDExMTY4NywgMTExNjkxLCAxMTE2OTcsIDExMTcwMSwgMTExNzEwLCAxMTE3MTksIDExMTcyNiwgMTExNzM2LCAKLSAgICAxMTE3NDIsIDExMTc0NiwgMTExNzUwLCAxMTE3NTgsIDExMTc2NSwgMTExNzcyLCAxMTE3NzgsIDExMTc4MiwgMTExNzkwLCAKLSAgICAxMTE3OTQsIDExMTgwMSwgMTExODEzLCAxMTE4MjAsIDExMTgzMCwgMTExODM2LCAxMTE4NDAsIDExMTg0OSwgMTExODU2LCAKLSAgICAxMTE4NjUsIDExMTg2OSwgMTExODczLCAxMTE4ODAsIDExMTg4NCwgMTExODg4LCAxMTE4OTIsIDExMTg5NiwgMTExODk5LCAKLSAgICAxMTE5MDUsIDExMTkxMSwgMTExOTE1LCAxMTE5MTksIDExMTkyNiwgMTExOTMzLCAxMTE5NDAsIDExMTk0NywgMTExOTU0LCAKLSAgICAxMTE5NjEsIDExMTk2OCwgMTExOTc1LCAxMTE5ODEsIDExMTk4NSwgMTExOTg5LCAxMTE5OTYsIDExMjAwMywgMTEyMDEwLCAKLSAgICAxMTIwMTcsIDExMjAyNCwgMTEyMDI4LCAxMTIwMzEsIDExMjAzNiwgMTEyMDQwLCAxMTIwNDQsIDExMjA1MywgMTEyMDYyLCAKLSAgICAxMTIwNjYsIDExMjA3MCwgMTEyMDc2LCAxMTIwODIsIDExMjA5OSwgMTEyMTA1LCAxMTIxMDksIDExMjExOCwgMTEyMTIyLCAKLSAgICAxMTIxMjYsIDExMjEzMywgMTEyMTQxLCAxMTIxNDksIDExMjE1NSwgMTEyMTU5LCAxMTIxNjMsIDExMjE2NywgMTEyMTcxLCAKLSAgICAxMTIxNzQsIDExMjE4MCwgMTEyMTg3LCAxMTIxOTcsIDExMjIwNCwgMTEyMjExLCAxMTIyMTgsIDExMjIyNCwgMTEyMjMxLCAKLSAgICAxMTIyMzgsIDExMjI0NSwgMTEyMjUyLCAxMTIyNTksIDExMjI2OCwgMTEyMjc1LCAxMTIyODcsIDExMjI5NCwgMTEyMzAxLCAKLSAgICAxMTIzMTEsIDExMjMyMiwgMTEyMzI5LCAxMTIzMzYsIDExMjM0MywgMTEyMzUwLCAxMTIzNTcsIDExMjM2NCwgMTEyMzcxLCAKLSAgICAxMTIzNzgsIDExMjM4NSwgMTEyMzkyLCAxMTI0MDIsIDExMjQxMiwgMTEyNDIyLCAxMTI0MjksIDExMjQzOSwgMTEyNDQ2LCAKLSAgICAxMTI0NTMsIDExMjQ2MCwgMTEyNDY3LCAxMTI0NzQsIDExMjQ4MSwgMTEyNDg4LCAxMTI0OTUsIDExMjUwMiwgMTEyNTA5LCAKLSAgICAxMTI1MTYsIDExMjUyMywgMTEyNTMwLCAxMTI1MzYsIDExMjU0MywgMTEyNTUwLCAxMTI1NTksIDExMjU2NiwgMTEyNTczLCAKLSAgICAxMTI1NzcsIDExMjU4NSwgMTEyNTg5LCAxMTI1OTMsIDExMjU5NywgMTEyNjAxLCAxMTI2MDUsIDExMjYxMiwgMTEyNjE2LCAKLSAgICAxMTI2MjUsIDExMjYyOSwgMTEyNjM2LCAxMTI2NDQsIDExMjY0OCwgMTEyNjUyLCAxMTI2NTYsIDExMjY2OSwgMTEyNjg1LCAKLSAgICAxMTI2ODksIDExMjY5MywgMTEyNzAwLCAxMTI3MDYsIDExMjcxMywgMTEyNzE3LCAxMTI3MjEsIDExMjcyNSwgMTEyNzI5LCAKLSAgICAxMTI3MzMsIDExMjc0MCwgMTEyNzQ0LCAxMTI3NjIsIDExMjc2NiwgMTEyNzcwLCAxMTI3NzcsIDExMjc4MSwgMTEyNzg1LCAKLSAgICAxMTI3OTEsIDExMjc5NSwgMTEyNzk5LCAxMTI4MDcsIDExMjgxMSwgMTEyODE1LCAxMTI4MTksIDExMjgyMywgMTEyODI5LCAKLSAgICAxMTI4NDAsIDExMjg0OSwgMTEyODU4LCAxMTI4NjUsIDExMjg3MiwgMTEyODgzLCAxMTI4OTAsIDExMjg5NywgMTEyOTA0LCAKLSAgICAxMTI5MTEsIDExMjkxOCwgMTEyOTI1LCAxMTI5MzIsIDExMjk0MiwgMTEyOTQ4LCAxMTI5NTUsIDExMjk2NSwgMTEyOTc0LCAKLSAgICAxMTI5ODEsIDExMjk5MCwgMTEzMDAwLCAxMTMwMDcsIDExMzAxNCwgMTEzMDIxLCAxMTMwMjgsIDExMzA0MCwgMTEzMDQ3LCAKLSAgICAxMTMwNTQsIDExMzA2MSwgMTEzMDY4LCAxMTMwNzUsIDExMzA4NSwgMTEzMDkyLCAxMTMwOTksIDExMzEwOSwgMTEzMTIyLCAKLSAgICAxMTMxMzQsIDExMzE0MSwgMTEzMTUxLCAxMTMxNTgsIDExMzE2NSwgMTEzMTcyLCAxMTMxODcsIDExMzE5MywgMTEzMjAxLCAKLSAgICAxMTMyMTEsIDExMzIyMSwgMTEzMjI4LCAxMTMyMzUsIDExMzI0MSwgMTEzMjQ1LCAxMTMyNTIsIDExMzI2MiwgMTEzMjY4LCAKLSAgICAxMTMyODEsIDExMzI4NSwgMTEzMjg5LCAxMTMyOTYsIDExMzMwMCwgMTEzMzA3LCAxMTMzMTcsIDExMzMyMSwgMTEzMzI1LCAKLSAgICAxMTMzMjksIDExMzMzMywgMTEzMzM3LCAxMTMzNDQsIDExMzM0OCwgMTEzMzU1LCAxMTMzNjIsIDExMzM2OSwgMTEzMzc4LCAKLSAgICAxMTMzODcsIDExMzM5NywgMTEzNDA0LCAxMTM0MTEsIDExMzQxOCwgMTEzNDI4LCAxMTM0MzUsIDExMzQ0NSwgMTEzNDUyLCAKLSAgICAxMTM0NjIsIDExMzQ2OSwgMTEzNDc2LCAxMTM0ODYsIDExMzQ5NiwgMTEzNTAzLCAxMTM1MDksIDExMzUxNywgMTEzNTI1LCAKLSAgICAxMTM1MzEsIDExMzUzNywgMTEzNTQxLCAxMTM1NDUsIDExMzU1MiwgMTEzNTYwLCAxMTM1NjYsIDExMzU3MCwgMTEzNTc0LCAKLSAgICAxMTM1NzgsIDExMzU4NSwgMTEzNTk3LCAxMTM2MDAsIDExMzYwNywgMTEzNjEzLCAxMTM2MTcsIDExMzYyMSwgMTEzNjI1LCAKLSAgICAxMTM2MjksIDExMzYzMywgMTEzNjM3LCAxMTM2NDEsIDExMzY0NSwgMTEzNjQ5LCAxMTM2NTMsIDExMzY2MCwgMTEzNjY0LCAKLSAgICAxMTM2NzAsIDExMzY3NCwgMTEzNjc4LCAxMTM2ODIsIDExMzY4OCwgMTEzNjk1LCAxMTM3MDIsIDExMzcwOSwgMTEzNzIxLCAKLSAgICAxMTM3MjksIDExMzczMywgMTEzNzM5LCAxMTM3NDgsIDExMzc1NSwgMTEzNzYxLCAxMTM3NjUsIDExMzc2OSwgMTEzNzczLCAKLSAgICAxMTM3NzksIDExMzc4OCwgMTEzNzk2LCAxMTM4MDAsIDExMzgwNiwgMTEzODEwLCAxMTM4MTQsIDExMzgxOCwgMTEzODI0LCAKLSAgICAxMTM4MzEsIDExMzgzNywgMTEzODQxLCAxMTM4NDcsIDExMzg1MSwgMTEzODU1LCAxMTM4NjQsIDExMzg3NiwgMTEzODgwLCAKLSAgICAxMTM4ODcsIDExMzg5NCwgMTEzOTA0LCAxMTM5MTEsIDExMzkyMywgMTEzOTMwLCAxMTM5MzcsIDExMzk0NCwgMTEzOTU1LCAKLSAgICAxMTM5NjUsIDExMzk3OCwgMTEzOTg4LCAxMTM5OTUsIDExMzk5OSwgMTE0MDAzLCAxMTQwMDcsIDExNDAxMSwgMTE0MDIwLCAKLSAgICAxMTQwMjksIDExNDAzOCwgMTE0MDU1LCAxMTQwNjQsIDExNDA3MCwgMTE0MDc3LCAxMTQwODUsIDExNDA5OCwgMTE0MTAyLCAKLSAgICAxMTQxMTEsIDExNDEyMCwgMTE0MTI5LCAxMTQxMzgsIDExNDE0OSwgMTE0MTU4LCAxMTQxNjcsIDExNDE3NiwgMTE0MTg1LCAKLSAgICAxMTQxOTQsIDExNDIwMywgMTE0MjEzLCAxMTQyMTYsIDExNDIyMCwgMTE0MjI0LCAxMTQyMjgsIDExNDIzMiwgMTE0MjM2LCAKLSAgICAxMTQyNDIsIDExNDI0OSwgMTE0MjU2LCAxMTQyNjMsIDExNDI2OSwgMTE0Mjc1LCAxMTQyODIsIDExNDI4OCwgMTE0Mjk1LCAKLSAgICAxMTQzMDMsIDExNDMwNywgMTE0MzE0LCAxMTQzMjEsIDExNDMyOCwgMTE0MzM2LCAxMTQzNDAsIDExNDM0NCwgMTE0MzQ4LCAKLSAgICAxMTQzNTIsIDExNDM1NiwgMTE0MzYyLCAxMTQzNjYsIDExNDM3MiwgMTE0Mzc5LCAxMTQzODYsIDExNDM5MiwgMTE0Mzk5LCAKLSAgICAxMTQ0MDYsIDExNDQxMywgMTE0NDIwLCAxMTQ0MjcsIDExNDQzNCwgMTE0NDQxLCAxMTQ0NDgsIDExNDQ1NSwgMTE0NDYyLCAKLSAgICAxMTQ0NjksIDExNDQ3NiwgMTE0NDgzLCAxMTQ0OTAsIDExNDQ5NiwgMTE0NTAwLCAxMTQ1MDksIDExNDUxMywgMTE0NTE3LCAKLSAgICAxMTQ1MjEsIDExNDUyNSwgMTE0NTMxLCAxMTQ1MzgsIDExNDU0NSwgMTE0NTUyLCAxMTQ1NTksIDExNDU2NiwgMTE0NTcyLCAKLSAgICAxMTQ1ODAsIDExNDU4NCwgMTE0NTg4LCAxMTQ1OTIsIDExNDU5NiwgMTE0NjAyLCAxMTQ2MTksIDExNDYzNiwgMTE0NjQwLCAKLSAgICAxMTQ2NDQsIDExNDY0OCwgMTE0NjUyLCAxMTQ2NTYsIDExNDY2MCwgMTE0NjY2LCAxMTQ2NzMsIDExNDY3NywgMTE0NjgzLCAKLSAgICAxMTQ2OTAsIDExNDY5NywgMTE0NzA0LCAxMTQ3MTEsIDExNDcxOCwgMTE0NzI3LCAxMTQ3MzQsIDExNDc0MSwgMTE0NzQ4LCAKLSAgICAxMTQ3NTUsIDExNDc1OSwgMTE0NzYzLCAxMTQ3NjksIDExNDc4MSwgMTE0Nzg1LCAxMTQ3ODksIDExNDc5OCwgMTE0ODAyLCAKLSAgICAxMTQ4MDYsIDExNDgxMCwgMTE0ODE2LCAxMTQ4MjAsIDExNDgyNCwgMTE0ODMzLCAxMTQ4MzcsIDExNDg0MSwgMTE0ODQ1LCAKLSAgICAxMTQ4NTIsIDExNDg1NiwgMTE0ODYwLCAxMTQ4NjQsIDExNDg2OCwgMTE0ODcyLCAxMTQ4NzYsIDExNDg4MCwgMTE0ODg0LCAKLSAgICAxMTQ4OTAsIDExNDg5NywgMTE0OTA0LCAxMTQ5MTAsIDExNDkxNCwgMTE0OTMxLCAxMTQ5MzcsIDExNDk0MSwgMTE0OTQ3LCAKLSAgICAxMTQ5NTMsIDExNDk1OSwgMTE0OTY1LCAxMTQ5NzEsIDExNDk3NywgMTE0OTgxLCAxMTQ5ODUsIDExNDk4OSwgMTE0OTk1LCAKLSAgICAxMTQ5OTksIDExNTAwNSwgMTE1MDA5LCAxMTUwMTMsIDExNTAyMCwgMTE1MDI3LCAxMTUwNDQsIDExNTA0OCwgMTE1MDUyLCAKLSAgICAxMTUwNTYsIDExNTA2MCwgMTE1MDY0LCAxMTUwNzYsIDExNTA3OSwgMTE1MDg0LCAxMTUwODksIDExNTEwNCwgMTE1MTE0LCAKLSAgICAxMTUxMjYsIDExNTEzMCwgMTE1MTM0LCAxMTUxMzgsIDExNTE0NCwgMTE1MTUxLCAxMTUxNTgsIDExNTE2OCwgMTE1MTgwLCAKLSAgICAxMTUxODYsIDExNTE5MiwgMTE1MjAxLCAxMTUyMDUsIDExNTIwOSwgMTE1MjE2LCAxMTUyMjYsIDExNTIzMywgMTE1MjM5LCAKLSAgICAxMTUyNDMsIDExNTI0NywgMTE1MjU0LCAxMTUyNjAsIDExNTI2NCwgMTE1MjcwLCAxMTUyNzQsIDExNTI4MiwgMTE1Mjg4LCAKLSAgICAxMTUyOTIsIDExNTMwMCwgMTE1MzA5LCAxMTUzMTYsIDExNTMyMiwgMTE1MzI5LCAxMTUzMzYsIDExNTM0NiwgMTE1MzU2LCAKLSAgICAxMTUzNjAsIDExNTM2NCwgMTE1MzY4LCAxMTUzNzIsIDExNTM3OCwgMTE1Mzg1LCAxMTUzOTEsIDExNTM5OCwgMTE1NDA1LCAKLSAgICAxMTU0MTIsIDExNTQyMSwgMTE1NDI4LCAxMTU0MzUsIDExNTQ0MSwgMTE1NDQ4LCAxMTU0NTUsIDExNTQ2MiwgMTE1NDY5LCAKLSAgICAxMTU0NzYsIDExNTQ4MywgMTE1NDg5LCAxMTU0OTYsIDExNTUwMywgMTE1NTEwLCAxMTU1MTksIDExNTUyNiwgMTE1NTMzLCAKLSAgICAxMTU1MzcsIDExNTU0MywgMTE1NTQ3LCAxMTU1NTMsIDExNTU2MCwgMTE1NTY3LCAxMTU1NzQsIDExNTU3OCwgMTE1NTgyLCAKLSAgICAxMTU1ODYsIDExNTU5MCwgMTE1NTk0LCAxMTU2MDEsIDExNTYwNSwgMTE1NjA5LCAxMTU2MTUsIDExNTYyMywgMTE1NjI3LCAKLSAgICAxMTU2MzEsIDExNTYzNSwgMTE1NjM5LCAxMTU2NDYsIDExNTY1MCwgMTE1NjU0LCAxMTU2NjIsIDExNTY2NiwgMTE1NjcwLCAKLSAgICAxMTU2NzQsIDExNTY3OCwgMTE1Njg0LCAxMTU2ODgsIDExNTY5MiwgMTE1Njk4LCAxMTU3MDUsIDExNTcxMSwgMTE1NzE4LCAKLSAgICAxMTU3MzAsIDExNTczNCwgMTE1NzQxLCAxMTU3NDgsIDExNTc1NSwgMTE1NzYyLCAxMTU3NzQsIDExNTc4MSwgMTE1Nzg1LCAKLSAgICAxMTU3ODksIDExNTc5MywgMTE1ODAwLCAxMTU4MDcsIDExNTgxNCwgMTE1ODIxLCAxMTU4MzEsIDExNTgzOCwgMTE1ODQ0LCAKLSAgICAxMTU4NTEsIDExNTg1OCwgMTE1ODY1LCAxMTU4NzIsIDExNTg4MSwgMTE1ODkxLCAxMTU4OTgsIDExNTkwMiwgMTE1OTA5LCAKLSAgICAxMTU5MTMsIDExNTkxNywgMTE1OTIxLCAxMTU5MjgsIDExNTkzNSwgMTE1OTQ1LCAxMTU5NTEsIDExNTk1NSwgMTE1OTY0LCAKLSAgICAxMTU5NjgsIDExNTk3NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMTEyMzYyLCAxMTIzNjUsIDExMjM3MCwgMTEyMzc2LCAxMTIzODQsIDExMjM4OSwgMTEyMzk1LCAxMTI0MDMsIAorICAgIDExMjQwOSwgMTEyNDE1LCAxMTI0MTksIDExMjQyMywgMTEyNDMwLCAxMTI0MzksIDExMjQ0NiwgMTEyNDU1LCAxMTI0NjEsIAorICAgIDExMjQ3MCwgMTEyNDc3LCAxMTI0ODQsIDExMjQ5MSwgMTEyNTAxLCAxMTI1MDcsIDExMjUxMSwgMTEyNTE4LCAxMTI1MjcsIAorICAgIDExMjUzNywgMTEyNTQ0LCAxMTI1NTEsIDExMjU1NSwgMTEyNTU5LCAxMTI1NjYsIDExMjU3NiwgMTEyNTgwLCAxMTI1ODcsIAorICAgIDExMjU5NCwgMTEyNjAxLCAxMTI2MDcsIDExMjYxNCwgMTEyNjIxLCAxMTI2MjgsIDExMjYzNSwgMTEyNjM5LCAxMTI2NDMsIAorICAgIDExMjY0NywgMTEyNjU0LCAxMTI2NTgsIDExMjY2NSwgMTEyNjcyLCAxMTI2ODYsIDExMjY5NSwgMTEyNjk5LCAxMTI3MDMsIAorICAgIDExMjcwNywgMTEyNzE0LCAxMTI3MTgsIDExMjcyMiwgMTEyNzI2LCAxMTI3MzQsIDExMjc0MiwgMTEyNzYxLCAxMTI3NzEsIAorICAgIDExMjc5MSwgMTEyNzk1LCAxMTI3OTksIDExMjgwMywgMTEyODA3LCAxMTI4MTEsIDExMjgxNSwgMTEyODE5LCAxMTI4MjYsIAorICAgIDExMjgzMCwgMTEyODMzLCAxMTI4MzcsIDExMjg0MSwgMTEyODQ3LCAxMTI4NTQsIDExMjg2MywgMTEyODY3LCAxMTI4NzYsIAorICAgIDExMjg4NSwgMTEyODkzLCAxMTI4OTcsIDExMjkwNCwgMTEyOTA4LCAxMTI5MTIsIDExMjkxNiwgMTEyOTIwLCAxMTI5MzEsIAorICAgIDExMjk0MCwgMTEyOTQ5LCAxMTI5NTgsIDExMjk2NywgMTEyOTc5LCAxMTI5ODgsIDExMjk5NywgMTEzMDA2LCAxMTMwMTQsIAorICAgIDExMzAyMywgMTEzMDM1LCAxMTMwNDQsIDExMzA1MiwgMTEzMDYxLCAxMTMwNzMsIDExMzA4MiwgMTEzMDkxLCAxMTMxMDMsIAorICAgIDExMzExMiwgMTEzMTIxLCAxMTMxMzMsIDExMzE0MiwgMTEzMTQ2LCAxMTMxNTAsIDExMzE1NCwgMTEzMTU4LCAxMTMxNjIsIAorICAgIDExMzE2NiwgMTEzMTcwLCAxMTMxNzcsIDExMzE4MSwgMTEzMTg1LCAxMTMxOTYsIDExMzIwMCwgMTEzMjA0LCAxMTMyMTEsIAorICAgIDExMzIxNywgMTEzMjIzLCAxMTMyMjcsIDExMzIzNCwgMTEzMjM4LCAxMTMyNDIsIDExMzI0NiwgMTEzMjUwLCAxMTMyNTQsIAorICAgIDExMzI1OCwgMTEzMjY0LCAxMTMyNzIsIDExMzI3NiwgMTEzMjgwLCAxMTMyODMsIDExMzI4OSwgMTEzMjk5LCAxMTMzMDMsIAorICAgIDExMzMxNSwgMTEzMzIyLCAxMTMzMjksIDExMzMzNiwgMTEzMzQzLCAxMTMzNDksIDExMzM1MywgMTEzMzU3LCAxMTMzNjEsIAorICAgIDExMzM2NSwgMTEzMzcyLCAxMTMzODEsIDExMzM4OCwgMTEzMzk2LCAxMTM0MDQsIDExMzQxMCwgMTEzNDE0LCAxMTM0MTgsIAorICAgIDExMzQyMiwgMTEzNDI2LCAxMTM0MzIsIDExMzQ0MSwgMTEzNDUzLCAxMTM0NjAsIDExMzQ2NywgMTEzNDc2LCAxMTM0ODcsIAorICAgIDExMzQ5MywgMTEzNTAyLCAxMTM1MTEsIDExMzUxOCwgMTEzNTI3LCAxMTM1MzQsIDExMzU0MCwgMTEzNTUwLCAxMTM1NTcsIAorICAgIDExMzU2NCwgMTEzNTcxLCAxMTM1NzgsIDExMzU4MiwgMTEzNTg4LCAxMTM1OTIsIDExMzYwMywgMTEzNjExLCAxMTM2MjAsIAorICAgIDExMzYzMiwgMTEzNjM5LCAxMTM2NDYsIDExMzY1NiwgMTEzNjYzLCAxMTM2NzMsIDExMzY4MCwgMTEzNjkwLCAxMTM2OTcsIAorICAgIDExMzcwNCwgMTEzNzE0LCAxMTM3MjEsIDExMzcyOCwgMTEzNzM3LCAxMTM3NDQsIDExMzc1NiwgMTEzNzY1LCAxMTM3NzIsIAorICAgIDExMzc3OSwgMTEzNzg2LCAxMTM3OTUsIDExMzgwNSwgMTEzODE4LCAxMTM4MjUsIDExMzgzNCwgMTEzODQ0LCAxMTM4NTEsIAorICAgIDExMzg2MCwgMTEzODczLCAxMTM4ODAsIDExMzg4NywgMTEzODk0LCAxMTM5MDQsIDExMzkxNCwgMTEzOTIwLCAxMTM5MzAsIAorICAgIDExMzkzNywgMTEzOTQ0LCAxMTM5NTQsIDExMzk2MCwgMTEzOTY3LCAxMTM5NzQsIDExMzk4MSwgMTEzOTkxLCAxMTM5OTgsIAorICAgIDExNDAwNSwgMTE0MDEyLCAxMTQwMTgsIDExNDAyNSwgMTE0MDM1LCAxMTQwNDIsIDExNDA0NiwgMTE0MDU0LCAxMTQwNTgsIAorICAgIDExNDA3MCwgMTE0MDc0LCAxMTQwODgsIDExNDA5MiwgMTE0MDk2LCAxMTQxMDAsIDExNDEwNCwgMTE0MTEwLCAxMTQxMTcsIAorICAgIDExNDEyNSwgMTE0MTI5LCAxMTQxMzMsIDExNDEzNywgMTE0MTQxLCAxMTQxNDgsIDExNDE1MiwgMTE0MTU4LCAxMTQxNjQsIAorICAgIDExNDE3MiwgMTE0MTc2LCAxMTQxODMsIDExNDE5MSwgMTE0MTk1LCAxMTQxOTksIDExNDIwNSwgMTE0MjA5LCAxMTQyMTgsIAorICAgIDExNDIyNywgMTE0MjM0LCAxMTQyNDQsIDExNDI1MCwgMTE0MjU0LCAxMTQyNTgsIDExNDI2NiwgMTE0MjczLCAxMTQyODAsIAorICAgIDExNDI4NiwgMTE0MjkwLCAxMTQyOTgsIDExNDMwMiwgMTE0MzA5LCAxMTQzMjEsIDExNDMyOCwgMTE0MzM4LCAxMTQzNDQsIAorICAgIDExNDM0OCwgMTE0MzU3LCAxMTQzNjQsIDExNDM3MywgMTE0Mzc3LCAxMTQzODEsIDExNDM4OCwgMTE0MzkyLCAxMTQzOTYsIAorICAgIDExNDQwMCwgMTE0NDA0LCAxMTQ0MDcsIDExNDQxMywgMTE0NDE5LCAxMTQ0MjMsIDExNDQyNywgMTE0NDM0LCAxMTQ0NDEsIAorICAgIDExNDQ0OCwgMTE0NDU1LCAxMTQ0NjIsIDExNDQ2OSwgMTE0NDc2LCAxMTQ0ODMsIDExNDQ4OSwgMTE0NDkzLCAxMTQ0OTcsIAorICAgIDExNDUwNCwgMTE0NTExLCAxMTQ1MTgsIDExNDUyNSwgMTE0NTMyLCAxMTQ1MzYsIDExNDUzOSwgMTE0NTQ0LCAxMTQ1NDgsIAorICAgIDExNDU1MiwgMTE0NTYxLCAxMTQ1NzAsIDExNDU3NCwgMTE0NTc4LCAxMTQ1ODQsIDExNDU5MCwgMTE0NjA3LCAxMTQ2MTMsIAorICAgIDExNDYxNywgMTE0NjI2LCAxMTQ2MzAsIDExNDYzNCwgMTE0NjQxLCAxMTQ2NDksIDExNDY1NywgMTE0NjYzLCAxMTQ2NjcsIAorICAgIDExNDY3MSwgMTE0Njc1LCAxMTQ2NzksIDExNDY4MiwgMTE0Njg4LCAxMTQ2OTUsIDExNDcwNSwgMTE0NzEyLCAxMTQ3MTksIAorICAgIDExNDcyNiwgMTE0NzMyLCAxMTQ3MzksIDExNDc0NiwgMTE0NzUzLCAxMTQ3NjAsIDExNDc2NywgMTE0Nzc2LCAxMTQ3ODMsIAorICAgIDExNDc5NSwgMTE0ODAyLCAxMTQ4MDksIDExNDgxOSwgMTE0ODMwLCAxMTQ4MzcsIDExNDg0NCwgMTE0ODUxLCAxMTQ4NTgsIAorICAgIDExNDg2NSwgMTE0ODcyLCAxMTQ4NzksIDExNDg4NiwgMTE0ODkzLCAxMTQ5MDAsIDExNDkxMCwgMTE0OTIwLCAxMTQ5MzAsIAorICAgIDExNDkzNywgMTE0OTQ3LCAxMTQ5NTQsIDExNDk2MSwgMTE0OTY4LCAxMTQ5NzUsIDExNDk4MiwgMTE0OTg5LCAxMTQ5OTYsIAorICAgIDExNTAwMywgMTE1MDEwLCAxMTUwMTcsIDExNTAyNCwgMTE1MDMxLCAxMTUwMzgsIDExNTA0NCwgMTE1MDUxLCAxMTUwNTgsIAorICAgIDExNTA2NywgMTE1MDc0LCAxMTUwODEsIDExNTA4NSwgMTE1MDkzLCAxMTUwOTcsIDExNTEwMSwgMTE1MTA1LCAxMTUxMDksIAorICAgIDExNTExMywgMTE1MTIwLCAxMTUxMjQsIDExNTEzMywgMTE1MTM3LCAxMTUxNDQsIDExNTE1MiwgMTE1MTU2LCAxMTUxNjAsIAorICAgIDExNTE2NCwgMTE1MTc3LCAxMTUxOTMsIDExNTE5NywgMTE1MjAxLCAxMTUyMDgsIDExNTIxNCwgMTE1MjIxLCAxMTUyMjUsIAorICAgIDExNTIyOSwgMTE1MjMzLCAxMTUyMzcsIDExNTI0MSwgMTE1MjQ4LCAxMTUyNTIsIDExNTI3MCwgMTE1Mjc0LCAxMTUyNzgsIAorICAgIDExNTI4NSwgMTE1Mjg5LCAxMTUyOTMsIDExNTI5OSwgMTE1MzAzLCAxMTUzMDcsIDExNTMxNSwgMTE1MzE5LCAxMTUzMjMsIAorICAgIDExNTMyNiwgMTE1MzMwLCAxMTUzMzYsIDExNTM0NywgMTE1MzU2LCAxMTUzNjUsIDExNTM3MiwgMTE1Mzc5LCAxMTUzOTAsIAorICAgIDExNTM5NywgMTE1NDA0LCAxMTU0MTEsIDExNTQxOCwgMTE1NDI1LCAxMTU0MzIsIDExNTQzOSwgMTE1NDQ5LCAxMTU0NTUsIAorICAgIDExNTQ2MiwgMTE1NDcyLCAxMTU0ODEsIDExNTQ4OCwgMTE1NDk3LCAxMTU1MDcsIDExNTUxNCwgMTE1NTIxLCAxMTU1MjgsIAorICAgIDExNTUzNSwgMTE1NTQ3LCAxMTU1NTQsIDExNTU2MSwgMTE1NTY4LCAxMTU1NzUsIDExNTU4MiwgMTE1NTkyLCAxMTU1OTksIAorICAgIDExNTYwNiwgMTE1NjE2LCAxMTU2MjksIDExNTY0MSwgMTE1NjQ4LCAxMTU2NTgsIDExNTY2NSwgMTE1NjcyLCAxMTU2NzksIAorICAgIDExNTY5MywgMTE1Njk5LCAxMTU3MDcsIDExNTcxNywgMTE1NzI3LCAxMTU3MzQsIDExNTc0MSwgMTE1NzQ3LCAxMTU3NTEsIAorICAgIDExNTc1OCwgMTE1NzY4LCAxMTU3NzQsIDExNTc4NywgMTE1NzkxLCAxMTU3OTUsIDExNTgwMiwgMTE1ODA2LCAxMTU4MTMsIAorICAgIDExNTgyMywgMTE1ODI3LCAxMTU4MzEsIDExNTgzNSwgMTE1ODM5LCAxMTU4NDMsIDExNTg1MCwgMTE1ODU0LCAxMTU4NjEsIAorICAgIDExNTg2OCwgMTE1ODc1LCAxMTU4ODQsIDExNTg5MywgMTE1OTAzLCAxMTU5MTAsIDExNTkxNywgMTE1OTI0LCAxMTU5MzQsIAorICAgIDExNTk0MSwgMTE1OTUxLCAxMTU5NTgsIDExNTk2OCwgMTE1OTc1LCAxMTU5ODIsIDExNTk5MiwgMTE2MDAyLCAxMTYwMDksIAorICAgIDExNjAxNSwgMTE2MDIzLCAxMTYwMzEsIDExNjAzNywgMTE2MDQzLCAxMTYwNDcsIDExNjA1MSwgMTE2MDU4LCAxMTYwNjYsIAorICAgIDExNjA3MiwgMTE2MDc2LCAxMTYwODAsIDExNjA4NCwgMTE2MDkxLCAxMTYxMDMsIDExNjEwNiwgMTE2MTEzLCAxMTYxMTksIAorICAgIDExNjEyMywgMTE2MTI3LCAxMTYxMzEsIDExNjEzNSwgMTE2MTM5LCAxMTYxNDMsIDExNjE0NywgMTE2MTUxLCAxMTYxNTUsIAorICAgIDExNjE1OSwgMTE2MTY2LCAxMTYxNzAsIDExNjE3NiwgMTE2MTgwLCAxMTYxODQsIDExNjE4OCwgMTE2MTk0LCAxMTYyMDEsIAorICAgIDExNjIwOCwgMTE2MjE1LCAxMTYyMjYsIDExNjIzNCwgMTE2MjM4LCAxMTYyNDQsIDExNjI1MywgMTE2MjYwLCAxMTYyNjYsIAorICAgIDExNjI2OSwgMTE2MjczLCAxMTYyNzcsIDExNjI4MywgMTE2MjkyLCAxMTYzMDAsIDExNjMwNCwgMTE2MzEwLCAxMTYzMTQsIAorICAgIDExNjMxOCwgMTE2MzIyLCAxMTYzMjgsIDExNjMzNSwgMTE2MzQxLCAxMTYzNDUsIDExNjM1MSwgMTE2MzU1LCAxMTYzNTksIAorICAgIDExNjM2OCwgMTE2MzgwLCAxMTYzODQsIDExNjM5MSwgMTE2Mzk4LCAxMTY0MDgsIDExNjQxNSwgMTE2NDI3LCAxMTY0MzQsIAorICAgIDExNjQ0MSwgMTE2NDQ4LCAxMTY0NTksIDExNjQ2OSwgMTE2NDgyLCAxMTY0OTIsIDExNjQ5OSwgMTE2NTAzLCAxMTY1MDcsIAorICAgIDExNjUxMSwgMTE2NTE1LCAxMTY1MjQsIDExNjUzMywgMTE2NTQyLCAxMTY1NTksIDExNjU2OCwgMTE2NTc0LCAxMTY1ODEsIAorICAgIDExNjU4OSwgMTE2NjAyLCAxMTY2MDYsIDExNjYxNSwgMTE2NjI0LCAxMTY2MzMsIDExNjY0MiwgMTE2NjUzLCAxMTY2NjIsIAorICAgIDExNjY3MCwgMTE2Njc5LCAxMTY2ODgsIDExNjY5NywgMTE2NzA2LCAxMTY3MTYsIDExNjcxOSwgMTE2NzIzLCAxMTY3MjcsIAorICAgIDExNjczMSwgMTE2NzM1LCAxMTY3MzksIDExNjc0NSwgMTE2NzUyLCAxMTY3NTksIDExNjc2NiwgMTE2NzcyLCAxMTY3NzgsIAorICAgIDExNjc4NSwgMTE2NzkxLCAxMTY3OTgsIDExNjgwNiwgMTE2ODEwLCAxMTY4MTcsIDExNjgyNCwgMTE2ODMxLCAxMTY4MzksIAorICAgIDExNjg0MywgMTE2ODQ3LCAxMTY4NTEsIDExNjg1NSwgMTE2ODU5LCAxMTY4NjUsIDExNjg2OSwgMTE2ODc1LCAxMTY4ODIsIAorICAgIDExNjg4OSwgMTE2ODk1LCAxMTY5MDIsIDExNjkwOSwgMTE2OTE2LCAxMTY5MjMsIDExNjkzMCwgMTE2OTM3LCAxMTY5NDQsIAorICAgIDExNjk1MSwgMTE2OTU4LCAxMTY5NjUsIDExNjk3MiwgMTE2OTc5LCAxMTY5ODYsIDExNjk5MywgMTE2OTk5LCAxMTcwMDMsIAorICAgIDExNzAxMiwgMTE3MDE2LCAxMTcwMjAsIDExNzAyNCwgMTE3MDI4LCAxMTcwMzQsIDExNzA0MSwgMTE3MDQ4LCAxMTcwNTUsIAorICAgIDExNzA2MiwgMTE3MDY5LCAxMTcwNzUsIDExNzA4MywgMTE3MDg3LCAxMTcwOTEsIDExNzA5NSwgMTE3MDk5LCAxMTcxMDUsIAorICAgIDExNzEyMiwgMTE3MTM5LCAxMTcxNDMsIDExNzE0NywgMTE3MTUxLCAxMTcxNTUsIDExNzE1OSwgMTE3MTYzLCAxMTcxNjksIAorICAgIDExNzE3NiwgMTE3MTgwLCAxMTcxODYsIDExNzE5MywgMTE3MjAwLCAxMTcyMDcsIDExNzIxNCwgMTE3MjIxLCAxMTcyMzAsIAorICAgIDExNzIzNywgMTE3MjQ0LCAxMTcyNTEsIDExNzI1OCwgMTE3MjYyLCAxMTcyNjYsIDExNzI3MiwgMTE3Mjg0LCAxMTcyODgsIAorICAgIDExNzI5MiwgMTE3MzAxLCAxMTczMDUsIDExNzMwOSwgMTE3MzEzLCAxMTczMTksIDExNzMyMywgMTE3MzI3LCAxMTczMzYsIAorICAgIDExNzM0MCwgMTE3MzQ0LCAxMTczNDgsIDExNzM1NSwgMTE3MzU5LCAxMTczNjMsIDExNzM2NywgMTE3MzcxLCAxMTczNzUsIAorICAgIDExNzM3OSwgMTE3MzgzLCAxMTczODcsIDExNzM5MywgMTE3NDAwLCAxMTc0MDcsIDExNzQxMywgMTE3NDE3LCAxMTc0MzQsIAorICAgIDExNzQ0MCwgMTE3NDQ0LCAxMTc0NTAsIDExNzQ1NiwgMTE3NDYyLCAxMTc0NjgsIDExNzQ3NCwgMTE3NDgwLCAxMTc0ODQsIAorICAgIDExNzQ4OCwgMTE3NDkyLCAxMTc0OTgsIDExNzUwMiwgMTE3NTA4LCAxMTc1MTIsIDExNzUxNiwgMTE3NTIzLCAxMTc1MzAsIAorICAgIDExNzU0NywgMTE3NTUxLCAxMTc1NTUsIDExNzU1OSwgMTE3NTYzLCAxMTc1NjcsIDExNzU3OSwgMTE3NTgyLCAxMTc1ODcsIAorICAgIDExNzU5MiwgMTE3NjA3LCAxMTc2MTcsIDExNzYyOSwgMTE3NjMzLCAxMTc2MzcsIDExNzY0MSwgMTE3NjQ3LCAxMTc2NTQsIAorICAgIDExNzY2MSwgMTE3NjcxLCAxMTc2ODMsIDExNzY4OSwgMTE3Njk1LCAxMTc3MDQsIDExNzcwOCwgMTE3NzEyLCAxMTc3MTksIAorICAgIDExNzcyOSwgMTE3NzM2LCAxMTc3NDIsIDExNzc0NiwgMTE3NzUwLCAxMTc3NTcsIDExNzc2MywgMTE3NzY3LCAxMTc3NzMsIAorICAgIDExNzc3NywgMTE3Nzg1LCAxMTc3OTEsIDExNzc5NSwgMTE3ODAzLCAxMTc4MTEsIDExNzgxOCwgMTE3ODI0LCAxMTc4MzEsIAorICAgIDExNzgzOCwgMTE3ODQ4LCAxMTc4NTgsIDExNzg2MiwgMTE3ODY2LCAxMTc4NzAsIDExNzg3NCwgMTE3ODgwLCAxMTc4ODcsIAorICAgIDExNzg5MywgMTE3OTAwLCAxMTc5MDcsIDExNzkxNCwgMTE3OTIzLCAxMTc5MzAsIDExNzkzNywgMTE3OTQzLCAxMTc5NTAsIAorICAgIDExNzk1NywgMTE3OTY0LCAxMTc5NzEsIDExNzk3OCwgMTE3OTg1LCAxMTc5OTEsIDExNzk5OCwgMTE4MDA1LCAxMTgwMTIsIAorICAgIDExODAyMSwgMTE4MDI4LCAxMTgwMzUsIDExODAzOSwgMTE4MDQ1LCAxMTgwNDksIDExODA1NSwgMTE4MDYyLCAxMTgwNjksIAorICAgIDExODA3NiwgMTE4MDgwLCAxMTgwODQsIDExODA4OCwgMTE4MDkyLCAxMTgwOTYsIDExODEwMywgMTE4MTA3LCAxMTgxMTEsIAorICAgIDExODExNywgMTE4MTI1LCAxMTgxMjksIDExODEzMywgMTE4MTM3LCAxMTgxNDEsIDExODE0OCwgMTE4MTUyLCAxMTgxNTYsIAorICAgIDExODE2NCwgMTE4MTY4LCAxMTgxNzIsIDExODE3NiwgMTE4MTgwLCAxMTgxODYsIDExODE5MCwgMTE4MTk0LCAxMTgyMDAsIAorICAgIDExODIwNywgMTE4MjEzLCAxMTgyMjAsIDExODIzMiwgMTE4MjM2LCAxMTgyNDMsIDExODI1MCwgMTE4MjU3LCAxMTgyNjQsIAorICAgIDExODI3NiwgMTE4MjgzLCAxMTgyODcsIDExODI5MSwgMTE4Mjk1LCAxMTgzMDIsIDExODMwOSwgMTE4MzE2LCAxMTgzMjMsIAorICAgIDExODMzMywgMTE4MzQwLCAxMTgzNDYsIDExODM1MywgMTE4MzYwLCAxMTgzNjcsIDExODM3NCwgMTE4MzgzLCAxMTgzOTMsIAorICAgIDExODQwMCwgMTE4NDA0LCAxMTg0MTEsIDExODQxNSwgMTE4NDE5LCAxMTg0MjMsIDExODQzMCwgMTE4NDM3LCAxMTg0NDcsIAorICAgIDExODQ1MywgMTE4NDU3LCAxMTg0NjYsIDExODQ3MCwgMTE4NDc3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTU5NzksIDExNTk4NSwgMTE1OTkxLCAxMTU5OTgsIDExNjAwNSwgCi0gICAgMTE2MDEyLCAxMTYwMTksIDExNjAyNiwgMTE2MDMzLCAxMTYwMzksIDExNjA0NiwgMTE2MDUzLCAxMTYwNjAsIDExNjA2NywgCi0gICAgMTE2MDc0LCAxMTYwODEsIDExNjA4NywgMTE2MDkzLCAxMTYwOTksIDExNjEwNSwgMTE2MTExLCAxMTYxMTcsIDExNjEyMywgCi0gICAgMTE2MTI5LCAxMTYxMzUsIDExNjE0MiwgMTE2MTQ5LCAxMTYxNTYsIDExNjE2MywgMTE2MTcwLCAxMTYxNzcsIDExNjE4MywgCi0gICAgMTE2MTg5LCAxMTYxOTUsIDExNjIwMiwgMTE2MjA5LCAxMTYyMTUsIDExNjIyMSwgMTE2MjMwLCAxMTYyMzcsIDExNjI0NCwgCi0gICAgMTE2MjUxLCAxMTYyNTgsIDExNjI2NSwgMTE2MjcyLCAxMTYyNzgsIDExNjI4NCwgMTE2MjkwLCAxMTYyOTksIDExNjMwNiwgCi0gICAgMTE2MzEzLCAxMTYzMjQsIDExNjMzNSwgMTE2MzQxLCAxMTYzNDcsIDExNjM1MywgMTE2MzYyLCAxMTYzNjksIDExNjM3NiwgCi0gICAgMTE2Mzg2LCAxMTYzOTYsIDExNjQwNywgMTE2NDE4LCAxMTY0MzAsIDExNjQ0MywgMTE2NDU0LCAxMTY0NjUsIDExNjQ3NywgCi0gICAgMTE2NDkwLCAxMTY1MDEsIDExNjUxMiwgMTE2NTIzLCAxMTY1MzQsIDExNjU0NSwgMTE2NTU3LCAxMTY1NjUsIDExNjU3MywgCi0gICAgMTE2NTgyLCAxMTY1OTEsIDExNjYwMCwgMTE2NjA2LCAxMTY2MTIsIDExNjYxOCwgMTE2NjI1LCAxMTY2MzUsIDExNjY0MiwgCi0gICAgMTE2NjUyLCAxMTY2NTcsIDExNjY2MiwgMTE2NjY4LCAxMTY2NzQsIDExNjY4MiwgMTE2NjkwLCAxMTY2OTksIDExNjcxMCwgCi0gICAgMTE2NzIxLCAxMTY3MjksIDExNjczNywgMTE2NzQ2LCAxMTY3NTUsIDExNjc2MywgMTE2NzcwLCAxMTY3NzgsIDExNjc4NiwgCi0gICAgMTE2NzkzLCAxMTY4MDAsIDExNjgwOSwgMTE2ODE4LCAxMTY4MjcsIDExNjgzNiwgMTE2ODQ1LCAwLCAxMTY4NTQsIAotICAgIDExNjg2NSwgMTE2ODcyLCAxMTY4ODAsIDExNjg4OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE2ODk2LCAKLSAgICAxMTY5MDUsIDExNjkxMiwgMTE2OTE5LCAxMTY5MjgsIDExNjkzNSwgMTE2OTQyLCAxMTY5NDksIDExNjk1OSwgMTE2OTY2LCAKLSAgICAxMTY5NzMsIDExNjk4MCwgMTE2OTg4LCAxMTY5OTUsIDExNzAwMiwgMTE3MDA5LCAxMTcwMjAsIDExNzAyNywgMTE3MDM0LCAKLSAgICAxMTcwNDEsIDExNzA0OCwgMTE3MDU1LCAxMTcwNjQsIDExNzA3MSwgMTE3MDc3LCAxMTcwODQsIDExNzA5MywgMTE3MTAwLCAKLSAgICAxMTcxMDcsIDExNzExNCwgMTE3MTI0LCAxMTcxMzEsIDExNzEzOCwgMTE3MTQ4LCAxMTcxNTgsIDExNzE2NSwgMTE3MTcyLCAKLSAgICAxMTcxNzksIDExNzE4NiwgMTE3MTkzLCAxMTcyMDAsIDExNzIwOSwgMTE3MjE2LCAxMTcyMjMsIDExNzIyOSwgMTE3MjM3LCAKLSAgICAxMTcyNDYsIDExNzI1NSwgMTE3MjY2LCAxMTcyNzUsIDExNzI4NCwgMTE3MjkzLCAxMTczMDIsIDExNzMxMSwgMTE3MzE4LCAKLSAgICAxMTczMjUsIDExNzMzNCwgMTE3MzQ2LCAxMTczNTYsIDExNzM2MywgMTE3MzcwLCAxMTczODAsIDExNzM5MCwgMTE3Mzk5LCAKLSAgICAxMTc0MDksIDExNzQxNiwgMTE3NDI2LCAxMTc0MzMsIDExNzQ0MCwgMTE3NDQ3LCAxMTc0NTcsIDExNzQ2NywgMTE3NDc0LCAKLSAgICAxMTc0ODEsIDExNzQ5MSwgMTE3NDk3LCAxMTc1MDgsIDExNzUxNywgMTE3NTI3LCAxMTc1MzUsIDExNzU0OCwgMTE3NTU1LCAKLSAgICAxMTc1NjEsIDExNzU2OSwgMTE3NTc2LCAxMTc1ODYsIDExNzU5MCwgMTE3NTk0LCAxMTc1OTgsIDExNzYwMiwgMTE3NjA2LCAKLSAgICAxMTc2MTAsIDExNzYxNCwgMTE3NjIzLCAxMTc2MjcsIDExNzYzNCwgMTE3NjM4LCAxMTc2NDIsIDExNzY0NiwgMTE3NjUwLCAKLSAgICAxMTc2NTQsIDExNzY1OCwgMTE3NjYyLCAxMTc2NjYsIDExNzY3MCwgMTE3Njc0LCAxMTc2NzgsIDExNzY4MiwgMTE3Njg2LCAKLSAgICAxMTc2OTAsIDExNzY5NCwgMTE3Njk4LCAxMTc3MDIsIDExNzcwNiwgMTE3NzEwLCAxMTc3MTcsIDExNzcyNCwgMTE3NzM0LCAKLSAgICAxMTc3NDcsIDExNzc1NywgMTE3NzYxLCAxMTc3NjUsIDExNzc2OSwgMTE3NzczLCAxMTc3NzcsIDExNzc4MSwgMTE3Nzg1LCAKLSAgICAxMTc3ODksIDExNzc5MywgMTE3Nzk3LCAxMTc4MDEsIDExNzgwOCwgMTE3ODE1LCAxMTc4MjYsIDExNzgzMywgMTE3ODQwLCAKLSAgICAxMTc4NDcsIDExNzg1NCwgMTE3ODYxLCAxMTc4NjgsIDExNzg3NSwgMTE3ODc5LCAxMTc4ODMsIDExNzg5MCwgMTE3ODk3LCAKLSAgICAxMTc5MDQsIDExNzkxMywgMTE3OTIwLCAxMTc5MzMsIDExNzk0MywgMTE3OTUwLCAxMTc5NTcsIDExNzk2MSwgMTE3OTY1LCAKLSAgICAxMTc5NzQsIDExNzk4MSwgMTE3OTg4LCAxMTc5OTUsIDExODAwOCwgMTE4MDE1LCAxMTgwMjIsIDExODAzMiwgMTE4MDQyLCAKLSAgICAxMTgwNTEsIDExODA1OCwgMTE4MDY1LCAxMTgwNzIsIDExODA3OSwgMTE4MDg2LCAxMTgwOTMsIDExODEwMywgMTE4MTA5LCAKLSAgICAxMTgxMTcsIDExODEyNCwgMTE4MTMyLCAxMTgxMzksIDExODE1MCwgMTE4MTU3LCAxMTgxNjMsIDExODE3MCwgMTE4MTc3LCAKLSAgICAxMTgxODQsIDExODE5MSwgMTE4MjAxLCAxMTgyMTEsIDExODIxOCwgMTE4MjI1LCAxMTgyMzQsIDExODI0MiwgMTE4MjQ4LCAKLSAgICAxMTgyNTUsIDExODI2MiwgMTE4MjY5LCAxMTgyNzYsIDExODI4MCwgMTE4MjkwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTg0ODEsIDExODQ4NywgCisgICAgMTE4NDkzLCAxMTg1MDAsIDExODUwNywgMTE4NTE0LCAxMTg1MjEsIDExODUyOCwgMTE4NTM1LCAxMTg1NDEsIDExODU0OCwgCisgICAgMTE4NTU1LCAxMTg1NjIsIDExODU2OSwgMTE4NTc2LCAxMTg1ODMsIDExODU4OSwgMTE4NTk1LCAxMTg2MDEsIDExODYwNywgCisgICAgMTE4NjEzLCAxMTg2MTksIDExODYyNSwgMTE4NjMxLCAxMTg2MzcsIDExODY0NCwgMTE4NjUxLCAxMTg2NTgsIDExODY2NSwgCisgICAgMTE4NjcyLCAxMTg2NzksIDExODY4NSwgMTE4NjkxLCAxMTg2OTcsIDExODcwNCwgMTE4NzExLCAxMTg3MTcsIDExODcyMywgCisgICAgMTE4NzMyLCAxMTg3MzksIDExODc0NiwgMTE4NzUzLCAxMTg3NjAsIDExODc2NywgMTE4Nzc0LCAxMTg3ODAsIDExODc4NiwgCisgICAgMTE4NzkyLCAxMTg4MDEsIDExODgwOCwgMTE4ODE1LCAxMTg4MjYsIDExODgzNywgMTE4ODQzLCAxMTg4NDksIDExODg1NSwgCisgICAgMTE4ODY0LCAxMTg4NzEsIDExODg3OCwgMTE4ODg4LCAxMTg4OTgsIDExODkwOSwgMTE4OTIwLCAxMTg5MzIsIDExODk0NSwgCisgICAgMTE4OTU2LCAxMTg5NjcsIDExODk3OSwgMTE4OTkyLCAxMTkwMDMsIDExOTAxNCwgMTE5MDI1LCAxMTkwMzYsIDExOTA0NywgCisgICAgMTE5MDU5LCAxMTkwNjcsIDExOTA3NSwgMTE5MDg0LCAxMTkwOTMsIDExOTEwMiwgMTE5MTA4LCAxMTkxMTQsIDExOTEyMCwgCisgICAgMTE5MTI3LCAxMTkxMzcsIDExOTE0NCwgMTE5MTU0LCAxMTkxNTksIDExOTE2NCwgMTE5MTcwLCAxMTkxNzYsIDExOTE4NCwgCisgICAgMTE5MTkyLCAxMTkyMDEsIDExOTIxMiwgMTE5MjIzLCAxMTkyMzEsIDExOTIzOSwgMTE5MjQ4LCAxMTkyNTcsIDExOTI2NSwgCisgICAgMTE5MjcyLCAxMTkyODAsIDExOTI4OCwgMTE5Mjk1LCAxMTkzMDIsIDExOTMxMSwgMTE5MzIwLCAxMTkzMjksIDExOTMzOCwgCisgICAgMTE5MzQ3LCAwLCAxMTkzNTYsIDExOTM2NywgMTE5Mzc0LCAxMTkzODIsIDExOTM5MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTE5Mzk4LCAxMTk0MDcsIDExOTQxNCwgMTE5NDIxLCAxMTk0MzAsIDExOTQzNywgMTE5NDQ0LCAKKyAgICAxMTk0NTEsIDExOTQ2MSwgMTE5NDY4LCAxMTk0NzUsIDExOTQ4MiwgMTE5NDkwLCAxMTk0OTcsIDExOTUwNCwgMTE5NTExLCAKKyAgICAxMTk1MjIsIDExOTUyOSwgMTE5NTM2LCAxMTk1NDMsIDExOTU1MCwgMTE5NTU3LCAxMTk1NjYsIDExOTU3MywgMTE5NTc5LCAKKyAgICAxMTk1ODYsIDExOTU5NSwgMTE5NjAyLCAxMTk2MDksIDExOTYxNiwgMTE5NjI2LCAxMTk2MzMsIDExOTY0MCwgMTE5NjUwLCAKKyAgICAxMTk2NjAsIDExOTY2NywgMTE5Njc0LCAxMTk2ODEsIDExOTY4OCwgMTE5Njk1LCAxMTk3MDIsIDExOTcxMSwgMTE5NzE4LCAKKyAgICAxMTk3MjUsIDExOTczMSwgMTE5NzM5LCAxMTk3NDgsIDExOTc1NywgMTE5NzY4LCAxMTk3NzYsIDExOTc4NSwgMTE5Nzk0LCAKKyAgICAxMTk4MDMsIDExOTgxMiwgMTE5ODE5LCAxMTk4MjYsIDExOTgzNSwgMTE5ODQ3LCAxMTk4NTcsIDExOTg2NCwgMTE5ODcxLCAKKyAgICAxMTk4ODEsIDExOTg5MSwgMTE5OTAwLCAxMTk5MTAsIDExOTkxNywgMTE5OTI3LCAxMTk5MzQsIDExOTk0MSwgMTE5OTQ4LCAKKyAgICAxMTk5NTgsIDExOTk2OCwgMTE5OTc1LCAxMTk5ODIsIDExOTk5MiwgMTE5OTk4LCAxMjAwMDksIDEyMDAxOCwgMTIwMDI4LCAKKyAgICAxMjAwMzYsIDEyMDA0OSwgMTIwMDU2LCAxMjAwNjIsIDEyMDA3MCwgMTIwMDc3LCAxMjAwODcsIDEyMDA5MSwgMTIwMDk1LCAKKyAgICAxMjAwOTksIDEyMDEwMywgMTIwMTA3LCAxMjAxMTEsIDEyMDExNSwgMTIwMTI0LCAxMjAxMjgsIDEyMDEzNSwgMTIwMTM5LCAKKyAgICAxMjAxNDMsIDEyMDE0NywgMTIwMTUxLCAxMjAxNTUsIDEyMDE1OSwgMTIwMTYzLCAxMjAxNjcsIDEyMDE3MSwgMTIwMTc1LCAKKyAgICAxMjAxNzksIDEyMDE4MywgMTIwMTg3LCAxMjAxOTEsIDEyMDE5NSwgMTIwMTk5LCAxMjAyMDMsIDEyMDIwNywgMTIwMjExLCAKKyAgICAxMjAyMTgsIDEyMDIyNSwgMTIwMjM1LCAxMjAyNDgsIDEyMDI1OCwgMTIwMjYyLCAxMjAyNjYsIDEyMDI3MCwgMTIwMjc0LCAKKyAgICAxMjAyNzgsIDEyMDI4MiwgMTIwMjg2LCAxMjAyOTAsIDEyMDI5NCwgMTIwMjk4LCAxMjAzMDIsIDEyMDMwOSwgMTIwMzE2LCAKKyAgICAxMjAzMjcsIDEyMDMzNCwgMTIwMzQwLCAxMjAzNDcsIDEyMDM1NCwgMTIwMzYxLCAxMjAzNjgsIDEyMDM3NSwgMTIwMzc5LCAKKyAgICAxMjAzODMsIDEyMDM5MCwgMTIwMzk3LCAxMjA0MDQsIDEyMDQxMywgMTIwNDIwLCAxMjA0MzMsIDEyMDQ0MywgMTIwNDUwLCAKKyAgICAxMjA0NTcsIDEyMDQ2MSwgMTIwNDY1LCAxMjA0NzQsIDEyMDQ4MSwgMTIwNDg4LCAxMjA0OTUsIDEyMDUwOCwgMTIwNTE1LCAKKyAgICAxMjA1MjIsIDEyMDUzMiwgMTIwNTQyLCAxMjA1NTEsIDEyMDU1OCwgMTIwNTY1LCAxMjA1NzIsIDEyMDU3OSwgMTIwNTg2LCAKKyAgICAxMjA1OTMsIDEyMDYwMywgMTIwNjA5LCAxMjA2MTcsIDEyMDYyNCwgMTIwNjMyLCAxMjA2MzksIDEyMDY1MCwgMTIwNjU3LCAKKyAgICAxMjA2NjMsIDEyMDY3MCwgMTIwNjc3LCAxMjA2ODQsIDEyMDY5MSwgMTIwNzAxLCAxMjA3MTEsIDEyMDcxOCwgMTIwNzI1LCAKKyAgICAxMjA3MzQsIDEyMDc0MiwgMTIwNzQ4LCAxMjA3NTUsIDEyMDc2MiwgMTIwNzY5LCAxMjA3NzYsIDEyMDc4MCwgMTIwNzkwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKQEAgLTE5MTAwLDEyNiArMjAyNTUsMTI2IEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE4MzAwLCAxMTgzMDQsIDExODMwOCwgMTE4MzEyLCAKLSAgICAxMTgzMTYsIDExODMyMCwgMTE4MzI0LCAxMTgzMjgsIDExODMzMiwgMTE4MzM2LCAxMTgzNDAsIDExODM0NCwgMTE4MzQ4LCAKLSAgICAxMTgzNTIsIDExODM1NiwgMTE4MzYwLCAxMTgzNjQsIDExODM2OCwgMTE4MzcyLCAxMTgzNzYsIDExODM4MCwgMTE4Mzg0LCAKLSAgICAxMTgzODgsIDExODM5MiwgMTE4Mzk2LCAxMTg0MDAsIDExODQwNCwgMTE4NDA4LCAxMTg0MTIsIDExODQxNiwgMTE4NDIwLCAKLSAgICAxMTg0MjQsIDExODQyOCwgMTE4NDMyLCAxMTg0MzYsIDExODQ0MCwgMTE4NDQ0LCAxMTg0NDgsIDExODQ1MiwgMTE4NDU2LCAKLSAgICAxMTg0NjAsIDExODQ2NCwgMTE4NDY4LCAxMTg0NzIsIDExODQ3NiwgMTE4NDgwLCAxMTg0ODQsIDExODQ4OCwgMTE4NDkyLCAKLSAgICAxMTg0OTYsIDExODUwMCwgMTE4NTA0LCAxMTg1MDgsIDExODUxMiwgMTE4NTE2LCAxMTg1MjAsIDExODUyNCwgMTE4NTI4LCAKLSAgICAxMTg1MzIsIDExODUzNiwgMTE4NTQwLCAxMTg1NDQsIDExODU0OCwgMTE4NTUyLCAxMTg1NTYsIDExODU2MCwgMTE4NTY0LCAKLSAgICAxMTg1NjgsIDExODU3MiwgMTE4NTc2LCAxMTg1ODAsIDExODU4NCwgMTE4NTg4LCAxMTg1OTIsIDExODU5NiwgMTE4NjAwLCAKLSAgICAxMTg2MDQsIDExODYwOCwgMTE4NjEyLCAxMTg2MTYsIDExODYyMCwgMTE4NjI0LCAxMTg2MjgsIDExODYzMiwgMTE4NjM2LCAKLSAgICAxMTg2NDAsIDExODY0NCwgMTE4NjQ4LCAxMTg2NTIsIDExODY1NiwgMTE4NjYwLCAxMTg2NjQsIDExODY2OCwgMTE4NjcyLCAKLSAgICAxMTg2NzYsIDExODY4MCwgMTE4Njg0LCAxMTg2ODgsIDExODY5MiwgMTE4Njk2LCAxMTg3MDAsIDExODcwNCwgMTE4NzA4LCAKLSAgICAxMTg3MTIsIDExODcxNiwgMTE4NzIwLCAxMTg3MjQsIDExODcyOCwgMTE4NzMyLCAxMTg3MzYsIDExODc0MCwgMTE4NzQ0LCAKLSAgICAxMTg3NDgsIDExODc1MiwgMTE4NzU2LCAxMTg3NjAsIDExODc2NCwgMTE4NzY4LCAxMTg3NzIsIDExODc3NiwgMTE4NzgwLCAKLSAgICAxMTg3ODQsIDExODc4OCwgMTE4NzkyLCAxMTg3OTYsIDExODgwMCwgMTE4ODA0LCAxMTg4MDgsIDExODgxMiwgMTE4ODE2LCAKLSAgICAxMTg4MjAsIDExODgyNCwgMTE4ODI4LCAxMTg4MzIsIDExODgzNiwgMTE4ODQwLCAxMTg4NDQsIDExODg0OCwgMTE4ODUyLCAKLSAgICAxMTg4NTYsIDExODg2MCwgMTE4ODY0LCAxMTg4NjgsIDExODg3MiwgMTE4ODc2LCAxMTg4ODAsIDExODg4NCwgMTE4ODg4LCAKLSAgICAxMTg4OTIsIDExODg5NiwgMTE4OTAwLCAxMTg5MDQsIDExODkwOCwgMTE4OTEyLCAxMTg5MTYsIDExODkyMCwgMTE4OTI0LCAKLSAgICAxMTg5MjgsIDExODkzMiwgMTE4OTM2LCAxMTg5NDAsIDExODk0NCwgMTE4OTQ4LCAxMTg5NTIsIDExODk1NiwgMTE4OTYwLCAKLSAgICAxMTg5NjQsIDExODk2OCwgMTE4OTcyLCAxMTg5NzYsIDExODk4MCwgMTE4OTg0LCAxMTg5ODgsIDExODk5MiwgMTE4OTk2LCAKLSAgICAxMTkwMDAsIDExOTAwNCwgMTE5MDA4LCAxMTkwMTIsIDExOTAxNiwgMTE5MDIwLCAxMTkwMjQsIDExOTAyOCwgMTE5MDMyLCAKLSAgICAxMTkwMzYsIDExOTA0MCwgMTE5MDQ0LCAxMTkwNDgsIDExOTA1MiwgMTE5MDU2LCAxMTkwNjAsIDExOTA2NCwgMTE5MDY4LCAKLSAgICAxMTkwNzIsIDExOTA3NiwgMTE5MDgwLCAxMTkwODQsIDExOTA4OCwgMTE5MDkyLCAxMTkwOTYsIDExOTEwMCwgMTE5MTA0LCAKLSAgICAxMTkxMDgsIDExOTExMiwgMTE5MTE2LCAxMTkxMjAsIDExOTEyNCwgMTE5MTI4LCAxMTkxMzIsIDExOTEzNiwgMTE5MTQwLCAKLSAgICAxMTkxNDQsIDExOTE0OCwgMTE5MTUyLCAxMTkxNTYsIDExOTE2MCwgMTE5MTY0LCAxMTkxNjgsIDExOTE3MiwgMTE5MTc2LCAKLSAgICAxMTkxODAsIDExOTE4NCwgMTE5MTg4LCAxMTkxOTIsIDExOTE5NiwgMTE5MjAwLCAxMTkyMDQsIDExOTIwOCwgMTE5MjEyLCAKLSAgICAxMTkyMTYsIDExOTIyMCwgMTE5MjI0LCAxMTkyMjgsIDExOTIzMiwgMTE5MjM2LCAxMTkyNDAsIDExOTI0NCwgMTE5MjQ4LCAKLSAgICAxMTkyNTIsIDExOTI1NiwgMTE5MjYwLCAxMTkyNjQsIDExOTI2OCwgMTE5MjcyLCAxMTkyNzYsIDExOTI4MCwgMTE5Mjg0LCAKLSAgICAxMTkyODgsIDExOTI5MiwgMTE5Mjk2LCAxMTkzMDAsIDExOTMwNCwgMTE5MzA4LCAxMTkzMTIsIDExOTMxNiwgMTE5MzIwLCAKLSAgICAxMTkzMjQsIDExOTMyOCwgMTE5MzMyLCAxMTkzMzYsIDExOTM0MCwgMTE5MzQ0LCAxMTkzNDgsIDExOTM1MiwgMTE5MzU2LCAKLSAgICAxMTkzNjAsIDExOTM2NCwgMTE5MzY4LCAxMTkzNzIsIDExOTM3NiwgMTE5MzgwLCAxMTkzODQsIDExOTM4OCwgMTE5MzkyLCAKLSAgICAxMTkzOTYsIDExOTQwMCwgMTE5NDA0LCAxMTk0MDgsIDExOTQxMiwgMTE5NDE2LCAxMTk0MjAsIDExOTQyNCwgMTE5NDI4LCAKLSAgICAxMTk0MzIsIDExOTQzNiwgMTE5NDQwLCAxMTk0NDQsIDExOTQ0OCwgMTE5NDUyLCAxMTk0NTYsIDExOTQ2MCwgMTE5NDY0LCAKLSAgICAxMTk0NjgsIDExOTQ3MiwgMTE5NDc2LCAxMTk0ODAsIDExOTQ4NCwgMTE5NDg4LCAxMTk0OTIsIDExOTQ5NiwgMTE5NTAwLCAKLSAgICAxMTk1MDQsIDExOTUwOCwgMTE5NTEyLCAxMTk1MTYsIDExOTUyMCwgMTE5NTI0LCAxMTk1MjgsIDExOTUzMiwgMTE5NTM2LCAKLSAgICAxMTk1NDAsIDExOTU0NCwgMTE5NTQ4LCAxMTk1NTIsIDExOTU1NiwgMTE5NTYwLCAxMTk1NjQsIDExOTU2OCwgMTE5NTcyLCAKLSAgICAxMTk1NzYsIDExOTU4MCwgMTE5NTg0LCAxMTk1ODgsIDExOTU5MiwgMTE5NTk2LCAxMTk2MDAsIDExOTYwNCwgMTE5NjA4LCAKLSAgICAxMTk2MTIsIDExOTYxNiwgMTE5NjIwLCAxMTk2MjQsIDExOTYyOCwgMTE5NjMyLCAxMTk2MzYsIDExOTY0MCwgMTE5NjQ0LCAKLSAgICAxMTk2NDgsIDExOTY1MiwgMTE5NjU2LCAxMTk2NjAsIDExOTY2NCwgMTE5NjY4LCAxMTk2NzIsIDExOTY3NiwgMTE5NjgwLCAKLSAgICAxMTk2ODQsIDExOTY4OCwgMTE5NjkyLCAxMTk2OTYsIDExOTcwMCwgMTE5NzA0LCAxMTk3MDgsIDExOTcxMiwgMTE5NzE2LCAKLSAgICAxMTk3MjAsIDExOTcyNCwgMTE5NzI4LCAxMTk3MzIsIDExOTczNiwgMTE5NzQwLCAxMTk3NDQsIDExOTc0OCwgMTE5NzUyLCAKLSAgICAxMTk3NTYsIDExOTc2MCwgMTE5NzY0LCAxMTk3NjgsIDExOTc3MiwgMTE5Nzc2LCAxMTk3ODAsIDExOTc4NCwgMTE5Nzg4LCAKLSAgICAxMTk3OTIsIDExOTc5NiwgMTE5ODAwLCAxMTk4MDQsIDExOTgwOCwgMTE5ODEyLCAxMTk4MTYsIDExOTgyMCwgMTE5ODI0LCAKLSAgICAxMTk4MjgsIDExOTgzMiwgMTE5ODM2LCAxMTk4NDAsIDExOTg0NCwgMTE5ODQ4LCAxMTk4NTIsIDExOTg1NiwgMTE5ODYwLCAKLSAgICAxMTk4NjQsIDExOTg2OCwgMTE5ODcyLCAxMTk4NzYsIDExOTg4MCwgMTE5ODg0LCAxMTk4ODgsIDExOTg5MiwgMTE5ODk2LCAKLSAgICAxMTk5MDAsIDExOTkwNCwgMTE5OTA4LCAxMTk5MTIsIDExOTkxNiwgMTE5OTIwLCAxMTk5MjQsIDExOTkyOCwgMTE5OTMyLCAKLSAgICAxMTk5MzYsIDExOTk0MCwgMTE5OTQ0LCAxMTk5NDgsIDExOTk1MiwgMTE5OTU2LCAxMTk5NjAsIDExOTk2NCwgMTE5OTY4LCAKLSAgICAxMTk5NzIsIDExOTk3NiwgMTE5OTgwLCAxMTk5ODQsIDExOTk4OCwgMTE5OTkyLCAxMTk5OTYsIDEyMDAwMCwgMTIwMDA0LCAKLSAgICAxMjAwMDgsIDEyMDAxMiwgMTIwMDE2LCAxMjAwMjAsIDEyMDAyNCwgMTIwMDI4LCAxMjAwMzIsIDEyMDAzNiwgMTIwMDQwLCAKLSAgICAxMjAwNDQsIDEyMDA0OCwgMTIwMDUyLCAxMjAwNTYsIDEyMDA2MCwgMTIwMDY0LCAxMjAwNjgsIDEyMDA3MiwgMTIwMDc2LCAKLSAgICAxMjAwODAsIDEyMDA4NCwgMTIwMDg4LCAxMjAwOTIsIDEyMDA5NiwgMTIwMTAwLCAxMjAxMDQsIDEyMDEwOCwgMTIwMTEyLCAKLSAgICAxMjAxMTYsIDEyMDEyMCwgMTIwMTI0LCAxMjAxMjgsIDEyMDEzMiwgMTIwMTM2LCAxMjAxNDAsIDEyMDE0NCwgMTIwMTQ4LCAKLSAgICAxMjAxNTIsIDEyMDE1NiwgMTIwMTYwLCAxMjAxNjQsIDEyMDE2OCwgMTIwMTcyLCAxMjAxNzYsIDEyMDE4MCwgMTIwMTg0LCAKLSAgICAxMjAxODgsIDEyMDE5MiwgMTIwMTk2LCAxMjAyMDAsIDEyMDIwNCwgMTIwMjA4LCAxMjAyMTIsIDEyMDIxNiwgMTIwMjIwLCAKLSAgICAxMjAyMjQsIDEyMDIyOCwgMTIwMjMyLCAxMjAyMzYsIDEyMDI0MCwgMTIwMjQ0LCAxMjAyNDgsIDEyMDI1MiwgMTIwMjU2LCAKLSAgICAxMjAyNjAsIDEyMDI2NCwgMTIwMjY4LCAxMjAyNzIsIDEyMDI3NiwgMTIwMjgwLCAxMjAyODQsIDEyMDI4OCwgMTIwMjkyLCAKLSAgICAxMjAyOTYsIDEyMDMwMCwgMTIwMzA0LCAxMjAzMDgsIDEyMDMxMiwgMTIwMzE2LCAxMjAzMjAsIDEyMDMyNCwgMTIwMzI4LCAKLSAgICAxMjAzMzIsIDEyMDMzNiwgMTIwMzQwLCAxMjAzNDQsIDEyMDM0OCwgMTIwMzUyLCAxMjAzNTYsIDEyMDM2MCwgMTIwMzY0LCAKLSAgICAxMjAzNjgsIDEyMDM3MiwgMTIwMzc2LCAxMjAzODAsIDEyMDM4NCwgMTIwMzg4LCAxMjAzOTIsIDEyMDM5NiwgMTIwNDAwLCAKLSAgICAxMjA0MDQsIDEyMDQwOCwgMTIwNDEyLCAxMjA0MTYsIDEyMDQyMCwgMTIwNDI0LCAxMjA0MjgsIDEyMDQzMiwgMTIwNDM2LCAKLSAgICAxMjA0NDAsIDEyMDQ0NCwgMTIwNDQ4LCAxMjA0NTIsIDEyMDQ1NiwgMTIwNDYwLCAxMjA0NjQsIDEyMDQ2OCwgMTIwNDcyLCAKLSAgICAxMjA0NzYsIDEyMDQ4MCwgMTIwNDg0LCAxMjA0ODgsIDEyMDQ5MiwgMTIwNDk2LCAxMjA1MDAsIDEyMDUwNCwgMTIwNTA4LCAKLSAgICAxMjA1MTIsIDEyMDUxNiwgMTIwNTIwLCAxMjA1MjQsIDEyMDUyOCwgMTIwNTMyLCAxMjA1MzYsIDEyMDU0MCwgMTIwNTQ0LCAKLSAgICAxMjA1NDgsIDEyMDU1MiwgMTIwNTU2LCAxMjA1NjAsIDEyMDU2NCwgMTIwNTY4LCAxMjA1NzIsIDEyMDU3NiwgMTIwNTgwLCAKLSAgICAxMjA1ODQsIDEyMDU4OCwgMTIwNTkyLCAxMjA1OTYsIDEyMDYwMCwgMTIwNjA0LCAxMjA2MDgsIDEyMDYxMiwgMTIwNjE2LCAKLSAgICAxMjA2MjAsIDEyMDYyNCwgMTIwNjI4LCAxMjA2MzIsIDEyMDYzNiwgMTIwNjQwLCAxMjA2NDQsIDEyMDY0OCwgMTIwNjUyLCAKLSAgICAxMjA2NTYsIDEyMDY2MCwgMTIwNjY0LCAxMjA2NjgsIDEyMDY3MiwgMTIwNjc2LCAxMjA2ODAsIDEyMDY4NCwgMTIwNjg4LCAKLSAgICAxMjA2OTIsIDEyMDY5NiwgMTIwNzAwLCAxMjA3MDQsIDEyMDcwOCwgMTIwNzEyLCAxMjA3MTYsIDEyMDcyMCwgMTIwNzI0LCAKLSAgICAxMjA3MjgsIDEyMDczMiwgMTIwNzM2LCAxMjA3NDAsIDEyMDc0NCwgMTIwNzQ4LCAxMjA3NTIsIDEyMDc1NiwgMTIwNzYwLCAKLSAgICAxMjA3NjQsIDEyMDc2OCwgMTIwNzcyLCAxMjA3NzYsIDEyMDc4MCwgMTIwNzg0LCAxMjA3ODgsIDEyMDc5MiwgMTIwNzk2LCAKLSAgICAxMjA4MDAsIDEyMDgwNCwgMTIwODA4LCAxMjA4MTIsIDEyMDgxNiwgMTIwODIwLCAxMjA4MjQsIDEyMDgyOCwgMTIwODMyLCAKLSAgICAxMjA4MzYsIDEyMDg0MCwgMTIwODQ0LCAxMjA4NDgsIDEyMDg1MiwgMTIwODU2LCAxMjA4NjAsIDEyMDg2NCwgMTIwODY4LCAKLSAgICAxMjA4NzIsIDEyMDg3NiwgMTIwODgwLCAxMjA4ODQsIDEyMDg4OCwgMTIwODkyLCAxMjA4OTYsIDEyMDkwMCwgMTIwOTA0LCAKLSAgICAxMjA5MDgsIDEyMDkxMiwgMTIwOTE2LCAxMjA5MjAsIDEyMDkyNCwgMTIwOTI4LCAxMjA5MzIsIDEyMDkzNiwgMTIwOTQwLCAKLSAgICAxMjA5NDQsIDEyMDk0OCwgMTIwOTUyLCAxMjA5NTYsIDEyMDk2MCwgMTIwOTY0LCAxMjA5NjgsIDEyMDk3MiwgMTIwOTc2LCAKLSAgICAxMjA5ODAsIDEyMDk4NCwgMTIwOTg4LCAxMjA5OTIsIDEyMDk5NiwgMTIxMDAwLCAxMjEwMDQsIDEyMTAwOCwgMTIxMDEyLCAKLSAgICAxMjEwMTYsIDEyMTAyMCwgMTIxMDI0LCAxMjEwMjgsIDEyMTAzMiwgMTIxMDM2LCAxMjEwNDAsIDEyMTA0NCwgMTIxMDQ4LCAKLSAgICAxMjEwNTIsIDEyMTA1NiwgMTIxMDYwLCAxMjEwNjQsIDEyMTA2OCwgMTIxMDcyLCAxMjEwNzYsIDEyMTA4MCwgMTIxMDg0LCAKLSAgICAxMjEwODgsIDEyMTA5MiwgMTIxMDk2LCAxMjExMDAsIDEyMTEwNCwgMTIxMTA4LCAxMjExMTIsIDEyMTExNiwgMTIxMTIwLCAKLSAgICAxMjExMjQsIDEyMTEyOCwgMTIxMTMyLCAxMjExMzYsIDEyMTE0MCwgMTIxMTQ0LCAxMjExNDgsIDEyMTE1MiwgMTIxMTU2LCAKLSAgICAxMjExNjAsIDEyMTE2NCwgMTIxMTY4LCAxMjExNzIsIDEyMTE3NiwgMTIxMTgwLCAxMjExODQsIDEyMTE4OCwgMTIxMTkyLCAKLSAgICAxMjExOTYsIDEyMTIwMCwgMTIxMjA0LCAxMjEyMDgsIDEyMTIxMiwgMTIxMjE2LCAxMjEyMjAsIDEyMTIyNCwgMTIxMjI4LCAKLSAgICAxMjEyMzIsIDEyMTIzNiwgMTIxMjQwLCAxMjEyNDQsIDEyMTI0OCwgMTIxMjUyLCAxMjEyNTYsIDEyMTI2MCwgMTIxMjY0LCAKLSAgICAxMjEyNjgsIDEyMTI3MiwgMTIxMjc2LCAxMjEyODAsIDEyMTI4NCwgMTIxMjg4LCAxMjEyOTIsIDEyMTI5NiwgMTIxMzAwLCAKLSAgICAxMjEzMDQsIDEyMTMwOCwgMTIxMzEyLCAxMjEzMTYsIDEyMTMyMCwgMTIxMzI0LCAxMjEzMjgsIDEyMTMzMiwgMTIxMzM2LCAKLSAgICAxMjEzNDAsIDEyMTM0NCwgMTIxMzQ4LCAxMjEzNTIsIDEyMTM1NiwgMTIxMzYwLCAxMjEzNjQsIDEyMTM2OCwgMTIxMzcyLCAKLSAgICAxMjEzNzYsIDEyMTM4MCwgMTIxMzg0LCAxMjEzODgsIDEyMTM5MiwgMTIxMzk2LCAxMjE0MDAsIDEyMTQwNCwgMTIxNDA4LCAKLSAgICAxMjE0MTIsIDEyMTQxNiwgMTIxNDIwLCAxMjE0MjQsIDEyMTQyOCwgMTIxNDMyLCAxMjE0MzYsIDEyMTQ0MCwgMTIxNDQ0LCAKLSAgICAxMjE0NDgsIDEyMTQ1MiwgMTIxNDU2LCAxMjE0NjAsIDEyMTQ2NCwgMTIxNDY4LCAxMjE0NzIsIDEyMTQ3NiwgMTIxNDgwLCAKLSAgICAxMjE0ODQsIDEyMTQ4OCwgMTIxNDkyLCAxMjE0OTYsIDEyMTUwMCwgMTIxNTA0LCAxMjE1MDgsIDEyMTUxMiwgMTIxNTE2LCAKLSAgICAxMjE1MjAsIDEyMTUyNCwgMTIxNTI4LCAxMjE1MzIsIDEyMTUzNiwgMTIxNTQwLCAxMjE1NDQsIDEyMTU0OCwgMTIxNTUyLCAKLSAgICAxMjE1NTYsIDEyMTU2MCwgMTIxNTY0LCAxMjE1NjgsIDEyMTU3MiwgMTIxNTc2LCAxMjE1ODAsIDEyMTU4NCwgMTIxNTg4LCAKLSAgICAxMjE1OTIsIDEyMTU5NiwgMTIxNjAwLCAxMjE2MDQsIDEyMTYwOCwgMTIxNjEyLCAxMjE2MTYsIDEyMTYyMCwgMTIxNjI0LCAKLSAgICAxMjE2MjgsIDEyMTYzMiwgMTIxNjM2LCAxMjE2NDAsIDEyMTY0NCwgMTIxNjQ4LCAxMjE2NTIsIDEyMTY1NiwgMTIxNjYwLCAKLSAgICAxMjE2NjQsIDEyMTY2OCwgMTIxNjcyLCAxMjE2NzYsIDEyMTY4MCwgMTIxNjg0LCAxMjE2ODgsIDEyMTY5MiwgMTIxNjk2LCAKLSAgICAxMjE3MDAsIDEyMTcwNCwgMTIxNzA4LCAxMjE3MTIsIDEyMTcxNiwgMTIxNzIwLCAxMjE3MjQsIDEyMTcyOCwgMTIxNzMyLCAKLSAgICAxMjE3MzYsIDEyMTc0MCwgMTIxNzQ0LCAxMjE3NDgsIDEyMTc1MiwgMTIxNzU2LCAxMjE3NjAsIDEyMTc2NCwgMTIxNzY4LCAKLSAgICAxMjE3NzIsIDEyMTc3NiwgMTIxNzgwLCAxMjE3ODQsIDEyMTc4OCwgMTIxNzkyLCAxMjE3OTYsIDEyMTgwMCwgMTIxODA0LCAKLSAgICAxMjE4MDgsIDEyMTgxMiwgMTIxODE2LCAxMjE4MjAsIDEyMTgyNCwgMTIxODI4LCAxMjE4MzIsIDEyMTgzNiwgMTIxODQwLCAKLSAgICAxMjE4NDQsIDEyMTg0OCwgMTIxODUyLCAxMjE4NTYsIDEyMTg2MCwgMTIxODY0LCAxMjE4NjgsIDEyMTg3MiwgMTIxODc2LCAKLSAgICAxMjE4ODAsIDEyMTg4NCwgMTIxODg4LCAxMjE4OTIsIDEyMTg5NiwgMTIxOTAwLCAxMjE5MDQsIDEyMTkwOCwgMTIxOTEyLCAKLSAgICAxMjE5MTYsIDEyMTkyMCwgMTIxOTI0LCAxMjE5MjgsIDEyMTkzMiwgMTIxOTM2LCAxMjE5NDAsIDEyMTk0NCwgMTIxOTQ4LCAKLSAgICAxMjE5NTIsIDEyMTk1NiwgMTIxOTYwLCAxMjE5NjQsIDEyMTk2OCwgMTIxOTcyLCAxMjE5NzYsIDEyMTk4MCwgMTIxOTg0LCAKLSAgICAxMjE5ODgsIDEyMTk5MiwgMTIxOTk2LCAxMjIwMDAsIDEyMjAwNCwgMTIyMDA4LCAxMjIwMTIsIDEyMjAxNiwgMTIyMDIwLCAKLSAgICAxMjIwMjQsIDEyMjAyOCwgMTIyMDMyLCAxMjIwMzYsIDEyMjA0MCwgMTIyMDQ0LCAxMjIwNDgsIDEyMjA1MiwgMTIyMDU2LCAKLSAgICAxMjIwNjAsIDEyMjA2NCwgMTIyMDY4LCAxMjIwNzIsIDEyMjA3NiwgMTIyMDgwLCAxMjIwODQsIDEyMjA4OCwgMTIyMDkyLCAKLSAgICAxMjIwOTYsIDEyMjEwMCwgMTIyMTA0LCAxMjIxMDgsIDEyMjExMiwgMTIyMTE2LCAxMjIxMjAsIDEyMjEyNCwgMTIyMTI4LCAKLSAgICAxMjIxMzIsIDEyMjEzNiwgMTIyMTQwLCAxMjIxNDQsIDEyMjE0OCwgMTIyMTUyLCAxMjIxNTYsIDEyMjE2MCwgMTIyMTY0LCAKLSAgICAxMjIxNjgsIDEyMjE3MiwgMTIyMTc2LCAxMjIxODAsIDEyMjE4NCwgMTIyMTg4LCAxMjIxOTIsIDEyMjE5NiwgMTIyMjAwLCAKLSAgICAxMjIyMDQsIDEyMjIwOCwgMTIyMjEyLCAxMjIyMTYsIDEyMjIyMCwgMTIyMjI0LCAxMjIyMjgsIDEyMjIzMiwgMTIyMjM2LCAKLSAgICAxMjIyNDAsIDEyMjI0NCwgMTIyMjQ4LCAxMjIyNTIsIDEyMjI1NiwgMTIyMjYwLCAxMjIyNjQsIDEyMjI2OCwgMTIyMjcyLCAKLSAgICAxMjIyNzYsIDEyMjI4MCwgMTIyMjg0LCAxMjIyODgsIDEyMjI5MiwgMTIyMjk2LCAxMjIzMDAsIDEyMjMwNCwgMTIyMzA4LCAKLSAgICAxMjIzMTIsIDEyMjMxNiwgMTIyMzIwLCAxMjIzMjQsIDEyMjMyOCwgMTIyMzMyLCAxMjIzMzYsIDEyMjM0MCwgMTIyMzQ0LCAKLSAgICAxMjIzNDgsIDEyMjM1MiwgMTIyMzU2LCAxMjIzNjAsIDEyMjM2NCwgMTIyMzY4LCAxMjIzNzIsIDEyMjM3NiwgMTIyMzgwLCAKLSAgICAxMjIzODQsIDEyMjM4OCwgMTIyMzkyLCAxMjIzOTYsIDEyMjQwMCwgMTIyNDA0LCAxMjI0MDgsIDEyMjQxMiwgMTIyNDE2LCAKLSAgICAxMjI0MjAsIDEyMjQyNCwgMTIyNDI4LCAxMjI0MzIsIDEyMjQzNiwgMTIyNDQwLCAxMjI0NDQsIDEyMjQ0OCwgMTIyNDUyLCAKLSAgICAxMjI0NTYsIDEyMjQ2MCwgMTIyNDY0LCAxMjI0NjgsIDEyMjQ3MiwgMTIyNDc2LCAxMjI0ODAsIDEyMjQ4NCwgMTIyNDg4LCAKLSAgICAxMjI0OTIsIDEyMjQ5NiwgMTIyNTAwLCAxMjI1MDQsIDEyMjUwOCwgMTIyNTEyLCAxMjI1MTYsIDEyMjUyMCwgMTIyNTI0LCAKLSAgICAxMjI1MjgsIDEyMjUzMiwgMTIyNTM2LCAxMjI1NDAsIDEyMjU0NCwgMTIyNTQ4LCAxMjI1NTIsIDEyMjU1NiwgMTIyNTYwLCAKLSAgICAxMjI1NjQsIDEyMjU2OCwgMTIyNTcyLCAxMjI1NzYsIDEyMjU4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIwODAwLCAKKyAgICAxMjA4MDQsIDEyMDgwOCwgMTIwODEyLCAxMjA4MTYsIDEyMDgyMCwgMTIwODI0LCAxMjA4MjgsIDEyMDgzMiwgMTIwODM2LCAKKyAgICAxMjA4NDAsIDEyMDg0NCwgMTIwODQ4LCAxMjA4NTIsIDEyMDg1NiwgMTIwODYwLCAxMjA4NjQsIDEyMDg2OCwgMTIwODcyLCAKKyAgICAxMjA4NzYsIDEyMDg4MCwgMTIwODg0LCAxMjA4ODgsIDEyMDg5MiwgMTIwODk2LCAxMjA5MDAsIDEyMDkwNCwgMTIwOTA4LCAKKyAgICAxMjA5MTIsIDEyMDkxNiwgMTIwOTIwLCAxMjA5MjQsIDEyMDkyOCwgMTIwOTMyLCAxMjA5MzYsIDEyMDk0MCwgMTIwOTQ0LCAKKyAgICAxMjA5NDgsIDEyMDk1MiwgMTIwOTU2LCAxMjA5NjAsIDEyMDk2NCwgMTIwOTY4LCAxMjA5NzIsIDEyMDk3NiwgMTIwOTgwLCAKKyAgICAxMjA5ODQsIDEyMDk4OCwgMTIwOTkyLCAxMjA5OTYsIDEyMTAwMCwgMTIxMDA0LCAxMjEwMDgsIDEyMTAxMiwgMTIxMDE2LCAKKyAgICAxMjEwMjAsIDEyMTAyNCwgMTIxMDI4LCAxMjEwMzIsIDEyMTAzNiwgMTIxMDQwLCAxMjEwNDQsIDEyMTA0OCwgMTIxMDUyLCAKKyAgICAxMjEwNTYsIDEyMTA2MCwgMTIxMDY0LCAxMjEwNjgsIDEyMTA3MiwgMTIxMDc2LCAxMjEwODAsIDEyMTA4NCwgMTIxMDg4LCAKKyAgICAxMjEwOTIsIDEyMTA5NiwgMTIxMTAwLCAxMjExMDQsIDEyMTEwOCwgMTIxMTEyLCAxMjExMTYsIDEyMTEyMCwgMTIxMTI0LCAKKyAgICAxMjExMjgsIDEyMTEzMiwgMTIxMTM2LCAxMjExNDAsIDEyMTE0NCwgMTIxMTQ4LCAxMjExNTIsIDEyMTE1NiwgMTIxMTYwLCAKKyAgICAxMjExNjQsIDEyMTE2OCwgMTIxMTcyLCAxMjExNzYsIDEyMTE4MCwgMTIxMTg0LCAxMjExODgsIDEyMTE5MiwgMTIxMTk2LCAKKyAgICAxMjEyMDAsIDEyMTIwNCwgMTIxMjA4LCAxMjEyMTIsIDEyMTIxNiwgMTIxMjIwLCAxMjEyMjQsIDEyMTIyOCwgMTIxMjMyLCAKKyAgICAxMjEyMzYsIDEyMTI0MCwgMTIxMjQ0LCAxMjEyNDgsIDEyMTI1MiwgMTIxMjU2LCAxMjEyNjAsIDEyMTI2NCwgMTIxMjY4LCAKKyAgICAxMjEyNzIsIDEyMTI3NiwgMTIxMjgwLCAxMjEyODQsIDEyMTI4OCwgMTIxMjkyLCAxMjEyOTYsIDEyMTMwMCwgMTIxMzA0LCAKKyAgICAxMjEzMDgsIDEyMTMxMiwgMTIxMzE2LCAxMjEzMjAsIDEyMTMyNCwgMTIxMzI4LCAxMjEzMzIsIDEyMTMzNiwgMTIxMzQwLCAKKyAgICAxMjEzNDQsIDEyMTM0OCwgMTIxMzUyLCAxMjEzNTYsIDEyMTM2MCwgMTIxMzY0LCAxMjEzNjgsIDEyMTM3MiwgMTIxMzc2LCAKKyAgICAxMjEzODAsIDEyMTM4NCwgMTIxMzg4LCAxMjEzOTIsIDEyMTM5NiwgMTIxNDAwLCAxMjE0MDQsIDEyMTQwOCwgMTIxNDEyLCAKKyAgICAxMjE0MTYsIDEyMTQyMCwgMTIxNDI0LCAxMjE0MjgsIDEyMTQzMiwgMTIxNDM2LCAxMjE0NDAsIDEyMTQ0NCwgMTIxNDQ4LCAKKyAgICAxMjE0NTIsIDEyMTQ1NiwgMTIxNDYwLCAxMjE0NjQsIDEyMTQ2OCwgMTIxNDcyLCAxMjE0NzYsIDEyMTQ4MCwgMTIxNDg0LCAKKyAgICAxMjE0ODgsIDEyMTQ5MiwgMTIxNDk2LCAxMjE1MDAsIDEyMTUwNCwgMTIxNTA4LCAxMjE1MTIsIDEyMTUxNiwgMTIxNTIwLCAKKyAgICAxMjE1MjQsIDEyMTUyOCwgMTIxNTMyLCAxMjE1MzYsIDEyMTU0MCwgMTIxNTQ0LCAxMjE1NDgsIDEyMTU1MiwgMTIxNTU2LCAKKyAgICAxMjE1NjAsIDEyMTU2NCwgMTIxNTY4LCAxMjE1NzIsIDEyMTU3NiwgMTIxNTgwLCAxMjE1ODQsIDEyMTU4OCwgMTIxNTkyLCAKKyAgICAxMjE1OTYsIDEyMTYwMCwgMTIxNjA0LCAxMjE2MDgsIDEyMTYxMiwgMTIxNjE2LCAxMjE2MjAsIDEyMTYyNCwgMTIxNjI4LCAKKyAgICAxMjE2MzIsIDEyMTYzNiwgMTIxNjQwLCAxMjE2NDQsIDEyMTY0OCwgMTIxNjUyLCAxMjE2NTYsIDEyMTY2MCwgMTIxNjY0LCAKKyAgICAxMjE2NjgsIDEyMTY3MiwgMTIxNjc2LCAxMjE2ODAsIDEyMTY4NCwgMTIxNjg4LCAxMjE2OTIsIDEyMTY5NiwgMTIxNzAwLCAKKyAgICAxMjE3MDQsIDEyMTcwOCwgMTIxNzEyLCAxMjE3MTYsIDEyMTcyMCwgMTIxNzI0LCAxMjE3MjgsIDEyMTczMiwgMTIxNzM2LCAKKyAgICAxMjE3NDAsIDEyMTc0NCwgMTIxNzQ4LCAxMjE3NTIsIDEyMTc1NiwgMTIxNzYwLCAxMjE3NjQsIDEyMTc2OCwgMTIxNzcyLCAKKyAgICAxMjE3NzYsIDEyMTc4MCwgMTIxNzg0LCAxMjE3ODgsIDEyMTc5MiwgMTIxNzk2LCAxMjE4MDAsIDEyMTgwNCwgMTIxODA4LCAKKyAgICAxMjE4MTIsIDEyMTgxNiwgMTIxODIwLCAxMjE4MjQsIDEyMTgyOCwgMTIxODMyLCAxMjE4MzYsIDEyMTg0MCwgMTIxODQ0LCAKKyAgICAxMjE4NDgsIDEyMTg1MiwgMTIxODU2LCAxMjE4NjAsIDEyMTg2NCwgMTIxODY4LCAxMjE4NzIsIDEyMTg3NiwgMTIxODgwLCAKKyAgICAxMjE4ODQsIDEyMTg4OCwgMTIxODkyLCAxMjE4OTYsIDEyMTkwMCwgMTIxOTA0LCAxMjE5MDgsIDEyMTkxMiwgMTIxOTE2LCAKKyAgICAxMjE5MjAsIDEyMTkyNCwgMTIxOTI4LCAxMjE5MzIsIDEyMTkzNiwgMTIxOTQwLCAxMjE5NDQsIDEyMTk0OCwgMTIxOTUyLCAKKyAgICAxMjE5NTYsIDEyMTk2MCwgMTIxOTY0LCAxMjE5NjgsIDEyMTk3MiwgMTIxOTc2LCAxMjE5ODAsIDEyMTk4NCwgMTIxOTg4LCAKKyAgICAxMjE5OTIsIDEyMTk5NiwgMTIyMDAwLCAxMjIwMDQsIDEyMjAwOCwgMTIyMDEyLCAxMjIwMTYsIDEyMjAyMCwgMTIyMDI0LCAKKyAgICAxMjIwMjgsIDEyMjAzMiwgMTIyMDM2LCAxMjIwNDAsIDEyMjA0NCwgMTIyMDQ4LCAxMjIwNTIsIDEyMjA1NiwgMTIyMDYwLCAKKyAgICAxMjIwNjQsIDEyMjA2OCwgMTIyMDcyLCAxMjIwNzYsIDEyMjA4MCwgMTIyMDg0LCAxMjIwODgsIDEyMjA5MiwgMTIyMDk2LCAKKyAgICAxMjIxMDAsIDEyMjEwNCwgMTIyMTA4LCAxMjIxMTIsIDEyMjExNiwgMTIyMTIwLCAxMjIxMjQsIDEyMjEyOCwgMTIyMTMyLCAKKyAgICAxMjIxMzYsIDEyMjE0MCwgMTIyMTQ0LCAxMjIxNDgsIDEyMjE1MiwgMTIyMTU2LCAxMjIxNjAsIDEyMjE2NCwgMTIyMTY4LCAKKyAgICAxMjIxNzIsIDEyMjE3NiwgMTIyMTgwLCAxMjIxODQsIDEyMjE4OCwgMTIyMTkyLCAxMjIxOTYsIDEyMjIwMCwgMTIyMjA0LCAKKyAgICAxMjIyMDgsIDEyMjIxMiwgMTIyMjE2LCAxMjIyMjAsIDEyMjIyNCwgMTIyMjI4LCAxMjIyMzIsIDEyMjIzNiwgMTIyMjQwLCAKKyAgICAxMjIyNDQsIDEyMjI0OCwgMTIyMjUyLCAxMjIyNTYsIDEyMjI2MCwgMTIyMjY0LCAxMjIyNjgsIDEyMjI3MiwgMTIyMjc2LCAKKyAgICAxMjIyODAsIDEyMjI4NCwgMTIyMjg4LCAxMjIyOTIsIDEyMjI5NiwgMTIyMzAwLCAxMjIzMDQsIDEyMjMwOCwgMTIyMzEyLCAKKyAgICAxMjIzMTYsIDEyMjMyMCwgMTIyMzI0LCAxMjIzMjgsIDEyMjMzMiwgMTIyMzM2LCAxMjIzNDAsIDEyMjM0NCwgMTIyMzQ4LCAKKyAgICAxMjIzNTIsIDEyMjM1NiwgMTIyMzYwLCAxMjIzNjQsIDEyMjM2OCwgMTIyMzcyLCAxMjIzNzYsIDEyMjM4MCwgMTIyMzg0LCAKKyAgICAxMjIzODgsIDEyMjM5MiwgMTIyMzk2LCAxMjI0MDAsIDEyMjQwNCwgMTIyNDA4LCAxMjI0MTIsIDEyMjQxNiwgMTIyNDIwLCAKKyAgICAxMjI0MjQsIDEyMjQyOCwgMTIyNDMyLCAxMjI0MzYsIDEyMjQ0MCwgMTIyNDQ0LCAxMjI0NDgsIDEyMjQ1MiwgMTIyNDU2LCAKKyAgICAxMjI0NjAsIDEyMjQ2NCwgMTIyNDY4LCAxMjI0NzIsIDEyMjQ3NiwgMTIyNDgwLCAxMjI0ODQsIDEyMjQ4OCwgMTIyNDkyLCAKKyAgICAxMjI0OTYsIDEyMjUwMCwgMTIyNTA0LCAxMjI1MDgsIDEyMjUxMiwgMTIyNTE2LCAxMjI1MjAsIDEyMjUyNCwgMTIyNTI4LCAKKyAgICAxMjI1MzIsIDEyMjUzNiwgMTIyNTQwLCAxMjI1NDQsIDEyMjU0OCwgMTIyNTUyLCAxMjI1NTYsIDEyMjU2MCwgMTIyNTY0LCAKKyAgICAxMjI1NjgsIDEyMjU3MiwgMTIyNTc2LCAxMjI1ODAsIDEyMjU4NCwgMTIyNTg4LCAxMjI1OTIsIDEyMjU5NiwgMTIyNjAwLCAKKyAgICAxMjI2MDQsIDEyMjYwOCwgMTIyNjEyLCAxMjI2MTYsIDEyMjYyMCwgMTIyNjI0LCAxMjI2MjgsIDEyMjYzMiwgMTIyNjM2LCAKKyAgICAxMjI2NDAsIDEyMjY0NCwgMTIyNjQ4LCAxMjI2NTIsIDEyMjY1NiwgMTIyNjYwLCAxMjI2NjQsIDEyMjY2OCwgMTIyNjcyLCAKKyAgICAxMjI2NzYsIDEyMjY4MCwgMTIyNjg0LCAxMjI2ODgsIDEyMjY5MiwgMTIyNjk2LCAxMjI3MDAsIDEyMjcwNCwgMTIyNzA4LCAKKyAgICAxMjI3MTIsIDEyMjcxNiwgMTIyNzIwLCAxMjI3MjQsIDEyMjcyOCwgMTIyNzMyLCAxMjI3MzYsIDEyMjc0MCwgMTIyNzQ0LCAKKyAgICAxMjI3NDgsIDEyMjc1MiwgMTIyNzU2LCAxMjI3NjAsIDEyMjc2NCwgMTIyNzY4LCAxMjI3NzIsIDEyMjc3NiwgMTIyNzgwLCAKKyAgICAxMjI3ODQsIDEyMjc4OCwgMTIyNzkyLCAxMjI3OTYsIDEyMjgwMCwgMTIyODA0LCAxMjI4MDgsIDEyMjgxMiwgMTIyODE2LCAKKyAgICAxMjI4MjAsIDEyMjgyNCwgMTIyODI4LCAxMjI4MzIsIDEyMjgzNiwgMTIyODQwLCAxMjI4NDQsIDEyMjg0OCwgMTIyODUyLCAKKyAgICAxMjI4NTYsIDEyMjg2MCwgMTIyODY0LCAxMjI4NjgsIDEyMjg3MiwgMTIyODc2LCAxMjI4ODAsIDEyMjg4NCwgMTIyODg4LCAKKyAgICAxMjI4OTIsIDEyMjg5NiwgMTIyOTAwLCAxMjI5MDQsIDEyMjkwOCwgMTIyOTEyLCAxMjI5MTYsIDEyMjkyMCwgMTIyOTI0LCAKKyAgICAxMjI5MjgsIDEyMjkzMiwgMTIyOTM2LCAxMjI5NDAsIDEyMjk0NCwgMTIyOTQ4LCAxMjI5NTIsIDEyMjk1NiwgMTIyOTYwLCAKKyAgICAxMjI5NjQsIDEyMjk2OCwgMTIyOTcyLCAxMjI5NzYsIDEyMjk4MCwgMTIyOTg0LCAxMjI5ODgsIDEyMjk5MiwgMTIyOTk2LCAKKyAgICAxMjMwMDAsIDEyMzAwNCwgMTIzMDA4LCAxMjMwMTIsIDEyMzAxNiwgMTIzMDIwLCAxMjMwMjQsIDEyMzAyOCwgMTIzMDMyLCAKKyAgICAxMjMwMzYsIDEyMzA0MCwgMTIzMDQ0LCAxMjMwNDgsIDEyMzA1MiwgMTIzMDU2LCAxMjMwNjAsIDEyMzA2NCwgMTIzMDY4LCAKKyAgICAxMjMwNzIsIDEyMzA3NiwgMTIzMDgwLCAxMjMwODQsIDEyMzA4OCwgMTIzMDkyLCAxMjMwOTYsIDEyMzEwMCwgMTIzMTA0LCAKKyAgICAxMjMxMDgsIDEyMzExMiwgMTIzMTE2LCAxMjMxMjAsIDEyMzEyNCwgMTIzMTI4LCAxMjMxMzIsIDEyMzEzNiwgMTIzMTQwLCAKKyAgICAxMjMxNDQsIDEyMzE0OCwgMTIzMTUyLCAxMjMxNTYsIDEyMzE2MCwgMTIzMTY0LCAxMjMxNjgsIDEyMzE3MiwgMTIzMTc2LCAKKyAgICAxMjMxODAsIDEyMzE4NCwgMTIzMTg4LCAxMjMxOTIsIDEyMzE5NiwgMTIzMjAwLCAxMjMyMDQsIDEyMzIwOCwgMTIzMjEyLCAKKyAgICAxMjMyMTYsIDEyMzIyMCwgMTIzMjI0LCAxMjMyMjgsIDEyMzIzMiwgMTIzMjM2LCAxMjMyNDAsIDEyMzI0NCwgMTIzMjQ4LCAKKyAgICAxMjMyNTIsIDEyMzI1NiwgMTIzMjYwLCAxMjMyNjQsIDEyMzI2OCwgMTIzMjcyLCAxMjMyNzYsIDEyMzI4MCwgMTIzMjg0LCAKKyAgICAxMjMyODgsIDEyMzI5MiwgMTIzMjk2LCAxMjMzMDAsIDEyMzMwNCwgMTIzMzA4LCAxMjMzMTIsIDEyMzMxNiwgMTIzMzIwLCAKKyAgICAxMjMzMjQsIDEyMzMyOCwgMTIzMzMyLCAxMjMzMzYsIDEyMzM0MCwgMTIzMzQ0LCAxMjMzNDgsIDEyMzM1MiwgMTIzMzU2LCAKKyAgICAxMjMzNjAsIDEyMzM2NCwgMTIzMzY4LCAxMjMzNzIsIDEyMzM3NiwgMTIzMzgwLCAxMjMzODQsIDEyMzM4OCwgMTIzMzkyLCAKKyAgICAxMjMzOTYsIDEyMzQwMCwgMTIzNDA0LCAxMjM0MDgsIDEyMzQxMiwgMTIzNDE2LCAxMjM0MjAsIDEyMzQyNCwgMTIzNDI4LCAKKyAgICAxMjM0MzIsIDEyMzQzNiwgMTIzNDQwLCAxMjM0NDQsIDEyMzQ0OCwgMTIzNDUyLCAxMjM0NTYsIDEyMzQ2MCwgMTIzNDY0LCAKKyAgICAxMjM0NjgsIDEyMzQ3MiwgMTIzNDc2LCAxMjM0ODAsIDEyMzQ4NCwgMTIzNDg4LCAxMjM0OTIsIDEyMzQ5NiwgMTIzNTAwLCAKKyAgICAxMjM1MDQsIDEyMzUwOCwgMTIzNTEyLCAxMjM1MTYsIDEyMzUyMCwgMTIzNTI0LCAxMjM1MjgsIDEyMzUzMiwgMTIzNTM2LCAKKyAgICAxMjM1NDAsIDEyMzU0NCwgMTIzNTQ4LCAxMjM1NTIsIDEyMzU1NiwgMTIzNTYwLCAxMjM1NjQsIDEyMzU2OCwgMTIzNTcyLCAKKyAgICAxMjM1NzYsIDEyMzU4MCwgMTIzNTg0LCAxMjM1ODgsIDEyMzU5MiwgMTIzNTk2LCAxMjM2MDAsIDEyMzYwNCwgMTIzNjA4LCAKKyAgICAxMjM2MTIsIDEyMzYxNiwgMTIzNjIwLCAxMjM2MjQsIDEyMzYyOCwgMTIzNjMyLCAxMjM2MzYsIDEyMzY0MCwgMTIzNjQ0LCAKKyAgICAxMjM2NDgsIDEyMzY1MiwgMTIzNjU2LCAxMjM2NjAsIDEyMzY2NCwgMTIzNjY4LCAxMjM2NzIsIDEyMzY3NiwgMTIzNjgwLCAKKyAgICAxMjM2ODQsIDEyMzY4OCwgMTIzNjkyLCAxMjM2OTYsIDEyMzcwMCwgMTIzNzA0LCAxMjM3MDgsIDEyMzcxMiwgMTIzNzE2LCAKKyAgICAxMjM3MjAsIDEyMzcyNCwgMTIzNzI4LCAxMjM3MzIsIDEyMzczNiwgMTIzNzQwLCAxMjM3NDQsIDEyMzc0OCwgMTIzNzUyLCAKKyAgICAxMjM3NTYsIDEyMzc2MCwgMTIzNzY0LCAxMjM3NjgsIDEyMzc3MiwgMTIzNzc2LCAxMjM3ODAsIDEyMzc4NCwgMTIzNzg4LCAKKyAgICAxMjM3OTIsIDEyMzc5NiwgMTIzODAwLCAxMjM4MDQsIDEyMzgwOCwgMTIzODEyLCAxMjM4MTYsIDEyMzgyMCwgMTIzODI0LCAKKyAgICAxMjM4MjgsIDEyMzgzMiwgMTIzODM2LCAxMjM4NDAsIDEyMzg0NCwgMTIzODQ4LCAxMjM4NTIsIDEyMzg1NiwgMTIzODYwLCAKKyAgICAxMjM4NjQsIDEyMzg2OCwgMTIzODcyLCAxMjM4NzYsIDEyMzg4MCwgMTIzODg0LCAxMjM4ODgsIDEyMzg5MiwgMTIzODk2LCAKKyAgICAxMjM5MDAsIDEyMzkwNCwgMTIzOTA4LCAxMjM5MTIsIDEyMzkxNiwgMTIzOTIwLCAxMjM5MjQsIDEyMzkyOCwgMTIzOTMyLCAKKyAgICAxMjM5MzYsIDEyMzk0MCwgMTIzOTQ0LCAxMjM5NDgsIDEyMzk1MiwgMTIzOTU2LCAxMjM5NjAsIDEyMzk2NCwgMTIzOTY4LCAKKyAgICAxMjM5NzIsIDEyMzk3NiwgMTIzOTgwLCAxMjM5ODQsIDEyMzk4OCwgMTIzOTkyLCAxMjM5OTYsIDEyNDAwMCwgMTI0MDA0LCAKKyAgICAxMjQwMDgsIDEyNDAxMiwgMTI0MDE2LCAxMjQwMjAsIDEyNDAyNCwgMTI0MDI4LCAxMjQwMzIsIDEyNDAzNiwgMTI0MDQwLCAKKyAgICAxMjQwNDQsIDEyNDA0OCwgMTI0MDUyLCAxMjQwNTYsIDEyNDA2MCwgMTI0MDY0LCAxMjQwNjgsIDEyNDA3MiwgMTI0MDc2LCAKKyAgICAxMjQwODAsIDEyNDA4NCwgMTI0MDg4LCAxMjQwOTIsIDEyNDA5NiwgMTI0MTAwLCAxMjQxMDQsIDEyNDEwOCwgMTI0MTEyLCAKKyAgICAxMjQxMTYsIDEyNDEyMCwgMTI0MTI0LCAxMjQxMjgsIDEyNDEzMiwgMTI0MTM2LCAxMjQxNDAsIDEyNDE0NCwgMTI0MTQ4LCAKKyAgICAxMjQxNTIsIDEyNDE1NiwgMTI0MTYwLCAxMjQxNjQsIDEyNDE2OCwgMTI0MTcyLCAxMjQxNzYsIDEyNDE4MCwgMTI0MTg0LCAKKyAgICAxMjQxODgsIDEyNDE5MiwgMTI0MTk2LCAxMjQyMDAsIDEyNDIwNCwgMTI0MjA4LCAxMjQyMTIsIDEyNDIxNiwgMTI0MjIwLCAKKyAgICAxMjQyMjQsIDEyNDIyOCwgMTI0MjMyLCAxMjQyMzYsIDEyNDI0MCwgMTI0MjQ0LCAxMjQyNDgsIDEyNDI1MiwgMTI0MjU2LCAKKyAgICAxMjQyNjAsIDEyNDI2NCwgMTI0MjY4LCAxMjQyNzIsIDEyNDI3NiwgMTI0MjgwLCAxMjQyODQsIDEyNDI4OCwgMTI0MjkyLCAKKyAgICAxMjQyOTYsIDEyNDMwMCwgMTI0MzA0LCAxMjQzMDgsIDEyNDMxMiwgMTI0MzE2LCAxMjQzMjAsIDEyNDMyNCwgMTI0MzI4LCAKKyAgICAxMjQzMzIsIDEyNDMzNiwgMTI0MzQwLCAxMjQzNDQsIDEyNDM0OCwgMTI0MzUyLCAxMjQzNTYsIDEyNDM2MCwgMTI0MzY0LCAKKyAgICAxMjQzNjgsIDEyNDM3MiwgMTI0Mzc2LCAxMjQzODAsIDEyNDM4NCwgMTI0Mzg4LCAxMjQzOTIsIDEyNDM5NiwgMTI0NDAwLCAKKyAgICAxMjQ0MDQsIDEyNDQwOCwgMTI0NDEyLCAxMjQ0MTYsIDEyNDQyMCwgMTI0NDI0LCAxMjQ0MjgsIDEyNDQzMiwgMTI0NDM2LCAKKyAgICAxMjQ0NDAsIDEyNDQ0NCwgMTI0NDQ4LCAxMjQ0NTIsIDEyNDQ1NiwgMTI0NDYwLCAxMjQ0NjQsIDEyNDQ2OCwgMTI0NDcyLCAKKyAgICAxMjQ0NzYsIDEyNDQ4MCwgMTI0NDg0LCAxMjQ0ODgsIDEyNDQ5MiwgMTI0NDk2LCAxMjQ1MDAsIDEyNDUwNCwgMTI0NTA4LCAKKyAgICAxMjQ1MTIsIDEyNDUxNiwgMTI0NTIwLCAxMjQ1MjQsIDEyNDUyOCwgMTI0NTMyLCAxMjQ1MzYsIDEyNDU0MCwgMTI0NTQ0LCAKKyAgICAxMjQ1NDgsIDEyNDU1MiwgMTI0NTU2LCAxMjQ1NjAsIDEyNDU2NCwgMTI0NTY4LCAxMjQ1NzIsIDEyNDU3NiwgMTI0NTgwLCAKKyAgICAxMjQ1ODQsIDEyNDU4OCwgMTI0NTkyLCAxMjQ1OTYsIDEyNDYwMCwgMTI0NjA0LCAxMjQ2MDgsIDEyNDYxMiwgMTI0NjE2LCAKKyAgICAxMjQ2MjAsIDEyNDYyNCwgMTI0NjI4LCAxMjQ2MzIsIDEyNDYzNiwgMTI0NjQwLCAxMjQ2NDQsIDEyNDY0OCwgMTI0NjUyLCAKKyAgICAxMjQ2NTYsIDEyNDY2MCwgMTI0NjY0LCAxMjQ2NjgsIDEyNDY3MiwgMTI0Njc2LCAxMjQ2ODAsIDEyNDY4NCwgMTI0Njg4LCAKKyAgICAxMjQ2OTIsIDEyNDY5NiwgMTI0NzAwLCAxMjQ3MDQsIDEyNDcwOCwgMTI0NzEyLCAxMjQ3MTYsIDEyNDcyMCwgMTI0NzI0LCAKKyAgICAxMjQ3MjgsIDEyNDczMiwgMTI0NzM2LCAxMjQ3NDAsIDEyNDc0NCwgMTI0NzQ4LCAxMjQ3NTIsIDEyNDc1NiwgMTI0NzYwLCAKKyAgICAxMjQ3NjQsIDEyNDc2OCwgMTI0NzcyLCAxMjQ3NzYsIDEyNDc4MCwgMTI0Nzg0LCAxMjQ3ODgsIDEyNDc5MiwgMTI0Nzk2LCAKKyAgICAxMjQ4MDAsIDEyNDgwNCwgMTI0ODA4LCAxMjQ4MTIsIDEyNDgxNiwgMTI0ODIwLCAxMjQ4MjQsIDEyNDgyOCwgMTI0ODMyLCAKKyAgICAxMjQ4MzYsIDEyNDg0MCwgMTI0ODQ0LCAxMjQ4NDgsIDEyNDg1MiwgMTI0ODU2LCAxMjQ4NjAsIDEyNDg2NCwgMTI0ODY4LCAKKyAgICAxMjQ4NzIsIDEyNDg3NiwgMTI0ODgwLCAxMjQ4ODQsIDEyNDg4OCwgMTI0ODkyLCAxMjQ4OTYsIDEyNDkwMCwgMTI0OTA0LCAKKyAgICAxMjQ5MDgsIDEyNDkxMiwgMTI0OTE2LCAxMjQ5MjAsIDEyNDkyNCwgMTI0OTI4LCAxMjQ5MzIsIDEyNDkzNiwgMTI0OTQwLCAKKyAgICAxMjQ5NDQsIDEyNDk0OCwgMTI0OTUyLCAxMjQ5NTYsIDEyNDk2MCwgMTI0OTY0LCAxMjQ5NjgsIDEyNDk3MiwgMTI0OTc2LCAKKyAgICAxMjQ5ODAsIDEyNDk4NCwgMTI0OTg4LCAxMjQ5OTIsIDEyNDk5NiwgMTI1MDAwLCAxMjUwMDQsIDEyNTAwOCwgMTI1MDEyLCAKKyAgICAxMjUwMTYsIDEyNTAyMCwgMTI1MDI0LCAxMjUwMjgsIDEyNTAzMiwgMTI1MDM2LCAxMjUwNDAsIDEyNTA0NCwgMTI1MDQ4LCAKKyAgICAxMjUwNTIsIDEyNTA1NiwgMTI1MDYwLCAxMjUwNjQsIDEyNTA2OCwgMTI1MDcyLCAxMjUwNzYsIDEyNTA4MCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC0xOTIyOCw3MSArMjAzODMsNzIgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxMjI1ODQsIDEyMjU4OCwgMTIyNTkyLCAxMjI1OTYsIDEyMjYwMCwgMTIyNjA0LCAxMjI2MDgsIAotICAgIDEyMjYxMiwgMTIyNjE2LCAxMjI2MjAsIDEyMjYyNCwgMTIyNjI4LCAxMjI2MzIsIDEyMjYzNiwgMTIyNjQwLCAxMjI2NDQsIAotICAgIDEyMjY0OCwgMTIyNjUyLCAxMjI2NTYsIDEyMjY2MCwgMTIyNjY0LCAxMjI2NjgsIDEyMjY3MiwgMTIyNjc2LCAxMjI2ODAsIAotICAgIDEyMjY4NCwgMTIyNjg4LCAxMjI2OTIsIDEyMjY5NiwgMTIyNzAwLCAxMjI3MDQsIDEyMjcwOCwgMTIyNzEyLCAxMjI3MTYsIAotICAgIDEyMjcyMCwgMTIyNzI0LCAxMjI3MjgsIDEyMjczMiwgMTIyNzM2LCAxMjI3NDAsIDEyMjc0NCwgMTIyNzQ4LCAxMjI3NTIsIAotICAgIDEyMjc1NiwgMTIyNzYwLCAxMjI3NjQsIDEyMjc2OCwgMTIyNzcyLCAxMjI3NzYsIDEyMjc4MCwgMTIyNzg0LCAxMjI3ODgsIAotICAgIDEyMjc5MiwgMTIyNzk2LCAxMjI4MDAsIDEyMjgwNCwgMTIyODA4LCAxMjI4MTIsIDEyMjgxNiwgMTIyODIwLCAxMjI4MjQsIAotICAgIDEyMjgyOCwgMTIyODMyLCAxMjI4MzYsIDEyMjg0MCwgMTIyODQ0LCAxMjI4NDgsIDEyMjg1MiwgMTIyODU2LCAxMjI4NjAsIAotICAgIDEyMjg2NCwgMTIyODY4LCAxMjI4NzIsIDEyMjg3NiwgMTIyODgwLCAxMjI4ODQsIDEyMjg4OCwgMTIyODkyLCAxMjI4OTYsIAotICAgIDEyMjkwMCwgMTIyOTA0LCAxMjI5MDgsIDEyMjkxMiwgMTIyOTE2LCAxMjI5MjAsIDEyMjkyNCwgMTIyOTI4LCAxMjI5MzIsIAotICAgIDEyMjkzNiwgMTIyOTQwLCAxMjI5NDQsIDEyMjk0OCwgMTIyOTUyLCAxMjI5NTYsIDEyMjk2MCwgMTIyOTY0LCAxMjI5NjgsIAotICAgIDEyMjk3MiwgMTIyOTc2LCAxMjI5ODAsIDEyMjk4NCwgMTIyOTg4LCAxMjI5OTIsIDEyMjk5NiwgMTIzMDAwLCAxMjMwMDQsIAotICAgIDEyMzAwOCwgMTIzMDEyLCAxMjMwMTYsIDEyMzAyMCwgMTIzMDI0LCAxMjMwMjgsIDEyMzAzMiwgMTIzMDM2LCAxMjMwNDAsIAotICAgIDEyMzA0NCwgMTIzMDQ4LCAxMjMwNTIsIDEyMzA1NiwgMTIzMDYwLCAxMjMwNjQsIDEyMzA2OCwgMTIzMDcyLCAxMjMwNzYsIAotICAgIDEyMzA4MCwgMTIzMDg0LCAxMjMwODgsIDEyMzA5MiwgMTIzMDk2LCAxMjMxMDAsIDEyMzEwNCwgMTIzMTA4LCAxMjMxMTIsIAotICAgIDEyMzExNiwgMTIzMTIwLCAxMjMxMjQsIDEyMzEyOCwgMTIzMTMyLCAxMjMxMzYsIDEyMzE0MCwgMTIzMTQ0LCAxMjMxNDgsIAotICAgIDEyMzE1MiwgMTIzMTU2LCAxMjMxNjAsIDEyMzE2NCwgMTIzMTY4LCAxMjMxNzIsIDEyMzE3NiwgMTIzMTgwLCAxMjMxODQsIAotICAgIDEyMzE4OCwgMTIzMTkyLCAxMjMxOTYsIDEyMzIwMCwgMTIzMjA0LCAxMjMyMDgsIDEyMzIxMiwgMTIzMjE2LCAxMjMyMjAsIAotICAgIDEyMzIyNCwgMTIzMjI4LCAxMjMyMzIsIDEyMzIzNiwgMTIzMjQwLCAxMjMyNDQsIDEyMzI0OCwgMTIzMjUyLCAxMjMyNTYsIAotICAgIDEyMzI2MCwgMTIzMjY0LCAxMjMyNjgsIDEyMzI3MiwgMTIzMjc2LCAxMjMyODAsIDEyMzI4NCwgMTIzMjg4LCAxMjMyOTIsIAotICAgIDEyMzI5NiwgMTIzMzAwLCAxMjMzMDQsIDEyMzMwOCwgMTIzMzEyLCAxMjMzMTYsIDEyMzMyMCwgMTIzMzI0LCAxMjMzMjgsIAotICAgIDEyMzMzMiwgMTIzMzM2LCAxMjMzNDAsIDEyMzM0NCwgMTIzMzQ4LCAxMjMzNTIsIDEyMzM1NiwgMTIzMzYwLCAxMjMzNjQsIAotICAgIDEyMzM2OCwgMTIzMzcyLCAxMjMzNzYsIDEyMzM4MCwgMTIzMzg0LCAxMjMzODgsIDEyMzM5MiwgMTIzMzk2LCAxMjM0MDAsIAotICAgIDEyMzQwNCwgMTIzNDA4LCAxMjM0MTIsIDEyMzQxNiwgMTIzNDIwLCAxMjM0MjQsIDEyMzQyOCwgMTIzNDMyLCAxMjM0MzYsIAotICAgIDEyMzQ0MCwgMTIzNDQ0LCAxMjM0NDgsIDEyMzQ1MiwgMTIzNDU2LCAxMjM0NjAsIDEyMzQ2NCwgMTIzNDY4LCAxMjM0NzIsIAotICAgIDEyMzQ3NiwgMTIzNDgwLCAxMjM0ODQsIDEyMzQ4OCwgMTIzNDkyLCAxMjM0OTYsIDEyMzUwMCwgMTIzNTA0LCAxMjM1MDgsIAotICAgIDEyMzUxMiwgMTIzNTE2LCAxMjM1MjAsIDEyMzUyNCwgMTIzNTI4LCAxMjM1MzIsIDEyMzUzNiwgMTIzNTQwLCAxMjM1NDQsIAotICAgIDEyMzU0OCwgMTIzNTUyLCAxMjM1NTYsIDEyMzU2MCwgMTIzNTY0LCAxMjM1NjgsIDEyMzU3MiwgMTIzNTc2LCAxMjM1ODAsIAotICAgIDEyMzU4NCwgMTIzNTg4LCAxMjM1OTIsIDEyMzU5NiwgMTIzNjAwLCAxMjM2MDQsIDEyMzYwOCwgMTIzNjEyLCAxMjM2MTYsIAotICAgIDEyMzYyMCwgMTIzNjI0LCAxMjM2MjgsIDEyMzYzMiwgMTIzNjM2LCAxMjM2NDAsIDEyMzY0NCwgMTIzNjQ4LCAxMjM2NTIsIAotICAgIDEyMzY1NiwgMTIzNjYwLCAxMjM2NjQsIDEyMzY2OCwgMTIzNjcyLCAxMjM2NzYsIDEyMzY4MCwgMTIzNjg0LCAxMjM2ODgsIAotICAgIDEyMzY5MiwgMTIzNjk2LCAxMjM3MDAsIDEyMzcwNCwgMTIzNzA4LCAxMjM3MTIsIDEyMzcxNiwgMTIzNzIwLCAxMjM3MjQsIAotICAgIDEyMzcyOCwgMTIzNzMyLCAxMjM3MzYsIDEyMzc0MCwgMTIzNzQ0LCAxMjM3NDgsIDEyMzc1MiwgMTIzNzU2LCAxMjM3NjAsIAotICAgIDEyMzc2NCwgMTIzNzY4LCAxMjM3NzIsIDEyMzc3NiwgMTIzNzgwLCAxMjM3ODQsIDEyMzc4OCwgMTIzNzkyLCAxMjM3OTYsIAotICAgIDEyMzgwMCwgMTIzODA0LCAxMjM4MDgsIDEyMzgxMiwgMTIzODE2LCAxMjM4MjAsIDEyMzgyNCwgMTIzODI4LCAxMjM4MzIsIAotICAgIDEyMzgzNiwgMTIzODQwLCAxMjM4NDQsIDEyMzg0OCwgMTIzODUyLCAxMjM4NTYsIDEyMzg2MCwgMTIzODY0LCAxMjM4NjgsIAotICAgIDEyMzg3MiwgMTIzODc2LCAxMjM4ODAsIDEyMzg4NCwgMTIzODg4LCAxMjM4OTIsIDEyMzg5NiwgMTIzOTAwLCAxMjM5MDQsIAotICAgIDEyMzkwOCwgMTIzOTEyLCAxMjM5MTYsIDEyMzkyMCwgMTIzOTI0LCAxMjM5MjgsIDEyMzkzMiwgMTIzOTM2LCAxMjM5NDAsIAotICAgIDEyMzk0NCwgMTIzOTQ4LCAxMjM5NTIsIDEyMzk1NiwgMTIzOTYwLCAxMjM5NjQsIDEyMzk2OCwgMTIzOTcyLCAxMjM5NzYsIAotICAgIDEyMzk4MCwgMTIzOTg0LCAxMjM5ODgsIDEyMzk5MiwgMTIzOTk2LCAxMjQwMDAsIDEyNDAwNCwgMTI0MDA4LCAxMjQwMTIsIAotICAgIDEyNDAxNiwgMTI0MDIwLCAxMjQwMjQsIDEyNDAyOCwgMTI0MDMyLCAxMjQwMzYsIDEyNDA0MCwgMTI0MDQ0LCAxMjQwNDgsIAotICAgIDEyNDA1MiwgMTI0MDU2LCAxMjQwNjAsIDEyNDA2NCwgMTI0MDY4LCAxMjQwNzIsIDEyNDA3NiwgMTI0MDgwLCAxMjQwODQsIAotICAgIDEyNDA4OCwgMTI0MDkyLCAxMjQwOTYsIDEyNDEwMCwgMTI0MTA0LCAxMjQxMDgsIDEyNDExMiwgMTI0MTE2LCAxMjQxMjAsIAotICAgIDEyNDEyNCwgMTI0MTI4LCAxMjQxMzIsIDEyNDEzNiwgMTI0MTQwLCAxMjQxNDQsIDEyNDE0OCwgMTI0MTUyLCAxMjQxNTYsIAotICAgIDEyNDE2MCwgMTI0MTY0LCAxMjQxNjgsIDEyNDE3MiwgMTI0MTc2LCAxMjQxODAsIDEyNDE4NCwgMTI0MTg4LCAxMjQxOTIsIAotICAgIDEyNDE5NiwgMTI0MjAwLCAxMjQyMDQsIDEyNDIwOCwgMTI0MjEyLCAxMjQyMTYsIDEyNDIyMCwgMTI0MjI0LCAxMjQyMjgsIAotICAgIDEyNDIzMiwgMTI0MjM2LCAxMjQyNDAsIDEyNDI0NCwgMTI0MjQ4LCAxMjQyNTIsIDEyNDI1NiwgMTI0MjYwLCAxMjQyNjQsIAotICAgIDEyNDI2OCwgMTI0MjcyLCAxMjQyNzYsIDEyNDI4MCwgMTI0Mjg0LCAxMjQyODgsIDEyNDI5MiwgMTI0Mjk2LCAxMjQzMDAsIAotICAgIDEyNDMwNCwgMTI0MzA4LCAxMjQzMTIsIDEyNDMxNiwgMTI0MzI2LCAxMjQzMzAsIDEyNDMzNCwgMTI0MzM4LCAxMjQzNDIsIAotICAgIDEyNDM0NiwgMTI0MzUwLCAxMjQzNTQsIDEyNDM1OCwgMTI0MzYyLCAxMjQzNjYsIDEyNDM3MCwgMTI0Mzc1LCAxMjQzNzksIAotICAgIDEyNDM4MywgMTI0Mzg3LCAxMjQzOTEsIDEyNDM5NSwgMTI0Mzk5LCAxMjQ0MDMsIDEyNDQwNywgMTI0NDExLCAxMjQ0MTUsIAotICAgIDEyNDQxOSwgMTI0NDIzLCAxMjQ0MjcsIDEyNDQzMSwgMTI0NDM1LCAxMjQ0MzksIDEyNDQ0OCwgMTI0NDU3LCAxMjQ0NjEsIAotICAgIDEyNDQ2NSwgMTI0NDY5LCAxMjQ0NzMsIDEyNDQ3NywgMTI0NDgxLCAxMjQ0ODUsIDEyNDQ4OSwgMTI0NDkzLCAxMjQ0OTcsIAotICAgIDEyNDUwMSwgMTI0NTA1LCAxMjQ1MDksIDEyNDUxMywgMTI0NTE3LCAxMjQ1MjEsIDEyNDUyNSwgMTI0NTI5LCAxMjQ1MzMsIAotICAgIDEyNDUzNywgMTI0NTQxLCAxMjQ1NDUsIDEyNDU0OSwgMTI0NTUzLCAxMjQ1NTcsIDEyNDU2MSwgMTI0NTY1LCAxMjQ1NjksIAotICAgIDEyNDU3MywgMTI0NTc3LCAxMjQ1ODEsIDEyNDU4NSwgMTI0NTg5LCAxMjQ1OTMsIDEyNDU5NywgMTI0NjAxLCAxMjQ2MDUsIAotICAgIDEyNDYwOSwgMTI0NjEzLCAxMjQ2MTcsIDEyNDYyMSwgMTI0NjI1LCAxMjQ2MjksIDEyNDYzMywgMTI0NjM3LCAxMjQ2NDEsIAotICAgIDEyNDY0NSwgMTI0NjQ5LCAxMjQ2NTMsIDEyNDY1NywgMTI0NjYxLCAxMjQ2NjUsIDEyNDY2OSwgMTI0NjczLCAxMjQ2NzcsIAotICAgIDEyNDY4MSwgMTI0Njg1LCAxMjQ2ODksIDEyNDY5MywgMTI0Njk3LCAxMjQ3MDEsIDEyNDcwNSwgMTI0NzA5LCAxMjQ3MTMsIAotICAgIDEyNDcxNywgMTI0NzIxLCAxMjQ3MjUsIDEyNDcyOSwgMTI0NzMzLCAxMjQ3MzcsIDEyNDc0MSwgMTI0NzQ1LCAxMjQ3NDksIAotICAgIDEyNDc1MywgMTI0NzU3LCAxMjQ3NjEsIDEyNDc2NSwgMTI0NzY5LCAxMjQ3NzMsIDEyNDc3NywgMTI0NzgxLCAxMjQ3ODUsIAotICAgIDEyNDc4OSwgMTI0NzkzLCAxMjQ3OTcsIDEyNDgwMSwgMTI0ODA1LCAxMjQ4MDksIDEyNDgxMywgMTI0ODE3LCAxMjQ4MjEsIAotICAgIDEyNDgyNSwgMTI0ODI5LCAxMjQ4MzMsIDEyNDgzNywgMTI0ODQxLCAxMjQ4NDUsIDEyNDg0OSwgMTI0ODUzLCAxMjQ4NTcsIAotICAgIDEyNDg2MSwgMTI0ODY1LCAxMjQ4NjksIDEyNDg3MywgMTI0ODc3LCAxMjQ4ODEsIDEyNDg4NSwgMTI0ODg5LCAxMjQ4OTMsIAotICAgIDEyNDg5NywgMTI0OTAxLCAxMjQ5MDUsIDEyNDkwOSwgMTI0OTEzLCAxMjQ5MTcsIDEyNDkyMSwgMTI0OTI1LCAxMjQ5MjksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNTA4NCwgMTI1MDg4LCAxMjUwOTIsIDEyNTA5NiwgCisgICAgMTI1MTAwLCAxMjUxMDQsIDEyNTEwOCwgMTI1MTEyLCAxMjUxMTYsIDEyNTEyMCwgMTI1MTI0LCAxMjUxMjgsIDEyNTEzMiwgCisgICAgMTI1MTM2LCAxMjUxNDAsIDEyNTE0NCwgMTI1MTQ4LCAxMjUxNTIsIDEyNTE1NiwgMTI1MTYwLCAxMjUxNjQsIDEyNTE2OCwgCisgICAgMTI1MTcyLCAxMjUxNzYsIDEyNTE4MCwgMTI1MTg0LCAxMjUxODgsIDEyNTE5MiwgMTI1MTk2LCAxMjUyMDAsIDEyNTIwNCwgCisgICAgMTI1MjA4LCAxMjUyMTIsIDEyNTIxNiwgMTI1MjIwLCAxMjUyMjQsIDEyNTIyOCwgMTI1MjMyLCAxMjUyMzYsIDEyNTI0MCwgCisgICAgMTI1MjQ0LCAxMjUyNDgsIDEyNTI1MiwgMTI1MjU2LCAxMjUyNjAsIDEyNTI2NCwgMTI1MjY4LCAxMjUyNzIsIDEyNTI3NiwgCisgICAgMTI1MjgwLCAxMjUyODQsIDEyNTI4OCwgMTI1MjkyLCAxMjUyOTYsIDEyNTMwMCwgMTI1MzA0LCAxMjUzMDgsIDEyNTMxMiwgCisgICAgMTI1MzE2LCAxMjUzMjAsIDEyNTMyNCwgMTI1MzI4LCAxMjUzMzIsIDEyNTMzNiwgMTI1MzQwLCAxMjUzNDQsIDEyNTM0OCwgCisgICAgMTI1MzUyLCAxMjUzNTYsIDEyNTM2MCwgMTI1MzY0LCAxMjUzNjgsIDEyNTM3MiwgMTI1Mzc2LCAxMjUzODAsIDEyNTM4NCwgCisgICAgMTI1Mzg4LCAxMjUzOTIsIDEyNTM5NiwgMTI1NDAwLCAxMjU0MDQsIDEyNTQwOCwgMTI1NDEyLCAxMjU0MTYsIDEyNTQyMCwgCisgICAgMTI1NDI0LCAxMjU0MjgsIDEyNTQzMiwgMTI1NDM2LCAxMjU0NDAsIDEyNTQ0NCwgMTI1NDQ4LCAxMjU0NTIsIDEyNTQ1NiwgCisgICAgMTI1NDYwLCAxMjU0NjQsIDEyNTQ2OCwgMTI1NDcyLCAxMjU0NzYsIDEyNTQ4MCwgMTI1NDg0LCAxMjU0ODgsIDEyNTQ5MiwgCisgICAgMTI1NDk2LCAxMjU1MDAsIDEyNTUwNCwgMTI1NTA4LCAxMjU1MTIsIDEyNTUxNiwgMTI1NTIwLCAxMjU1MjQsIDEyNTUyOCwgCisgICAgMTI1NTMyLCAxMjU1MzYsIDEyNTU0MCwgMTI1NTQ0LCAxMjU1NDgsIDEyNTU1MiwgMTI1NTU2LCAxMjU1NjAsIDEyNTU2NCwgCisgICAgMTI1NTY4LCAxMjU1NzIsIDEyNTU3NiwgMTI1NTgwLCAxMjU1ODQsIDEyNTU4OCwgMTI1NTkyLCAxMjU1OTYsIDEyNTYwMCwgCisgICAgMTI1NjA0LCAxMjU2MDgsIDEyNTYxMiwgMTI1NjE2LCAxMjU2MjAsIDEyNTYyNCwgMTI1NjI4LCAxMjU2MzIsIDEyNTYzNiwgCisgICAgMTI1NjQwLCAxMjU2NDQsIDEyNTY0OCwgMTI1NjUyLCAxMjU2NTYsIDEyNTY2MCwgMTI1NjY0LCAxMjU2NjgsIDEyNTY3MiwgCisgICAgMTI1Njc2LCAxMjU2ODAsIDEyNTY4NCwgMTI1Njg4LCAxMjU2OTIsIDEyNTY5NiwgMTI1NzAwLCAxMjU3MDQsIDEyNTcwOCwgCisgICAgMTI1NzEyLCAxMjU3MTYsIDEyNTcyMCwgMTI1NzI0LCAxMjU3MjgsIDEyNTczMiwgMTI1NzM2LCAxMjU3NDAsIDEyNTc0NCwgCisgICAgMTI1NzQ4LCAxMjU3NTIsIDEyNTc1NiwgMTI1NzYwLCAxMjU3NjQsIDEyNTc2OCwgMTI1NzcyLCAxMjU3NzYsIDEyNTc4MCwgCisgICAgMTI1Nzg0LCAxMjU3ODgsIDEyNTc5MiwgMTI1Nzk2LCAxMjU4MDAsIDEyNTgwNCwgMTI1ODA4LCAxMjU4MTIsIDEyNTgxNiwgCisgICAgMTI1ODIwLCAxMjU4MjQsIDEyNTgyOCwgMTI1ODMyLCAxMjU4MzYsIDEyNTg0MCwgMTI1ODQ0LCAxMjU4NDgsIDEyNTg1MiwgCisgICAgMTI1ODU2LCAxMjU4NjAsIDEyNTg2NCwgMTI1ODY4LCAxMjU4NzIsIDEyNTg3NiwgMTI1ODgwLCAxMjU4ODQsIDEyNTg4OCwgCisgICAgMTI1ODkyLCAxMjU4OTYsIDEyNTkwMCwgMTI1OTA0LCAxMjU5MDgsIDEyNTkxMiwgMTI1OTE2LCAxMjU5MjAsIDEyNTkyNCwgCisgICAgMTI1OTI4LCAxMjU5MzIsIDEyNTkzNiwgMTI1OTQwLCAxMjU5NDQsIDEyNTk0OCwgMTI1OTUyLCAxMjU5NTYsIDEyNTk2MCwgCisgICAgMTI1OTY0LCAxMjU5NjgsIDEyNTk3MiwgMTI1OTc2LCAxMjU5ODAsIDEyNTk4NCwgMTI1OTg4LCAxMjU5OTIsIDEyNTk5NiwgCisgICAgMTI2MDAwLCAxMjYwMDQsIDEyNjAwOCwgMTI2MDEyLCAxMjYwMTYsIDEyNjAyMCwgMTI2MDI0LCAxMjYwMjgsIDEyNjAzMiwgCisgICAgMTI2MDM2LCAxMjYwNDAsIDEyNjA0NCwgMTI2MDQ4LCAxMjYwNTIsIDEyNjA1NiwgMTI2MDYwLCAxMjYwNjQsIDEyNjA2OCwgCisgICAgMTI2MDcyLCAxMjYwNzYsIDEyNjA4MCwgMTI2MDg0LCAxMjYwODgsIDEyNjA5MiwgMTI2MDk2LCAxMjYxMDAsIDEyNjEwNCwgCisgICAgMTI2MTA4LCAxMjYxMTIsIDEyNjExNiwgMTI2MTIwLCAxMjYxMjQsIDEyNjEyOCwgMTI2MTMyLCAxMjYxMzYsIDEyNjE0MCwgCisgICAgMTI2MTQ0LCAxMjYxNDgsIDEyNjE1MiwgMTI2MTU2LCAxMjYxNjAsIDEyNjE2NCwgMTI2MTY4LCAxMjYxNzIsIDEyNjE3NiwgCisgICAgMTI2MTgwLCAxMjYxODQsIDEyNjE4OCwgMTI2MTkyLCAxMjYxOTYsIDEyNjIwMCwgMTI2MjA0LCAxMjYyMDgsIDEyNjIxMiwgCisgICAgMTI2MjE2LCAxMjYyMjAsIDEyNjIyNCwgMTI2MjI4LCAxMjYyMzIsIDEyNjIzNiwgMTI2MjQwLCAxMjYyNDQsIDEyNjI0OCwgCisgICAgMTI2MjUyLCAxMjYyNTYsIDEyNjI2MCwgMTI2MjY0LCAxMjYyNjgsIDEyNjI3MiwgMTI2Mjc2LCAxMjYyODAsIDEyNjI4NCwgCisgICAgMTI2Mjg4LCAxMjYyOTIsIDEyNjI5NiwgMTI2MzAwLCAxMjYzMDQsIDEyNjMwOCwgMTI2MzEyLCAxMjYzMTYsIDEyNjMyMCwgCisgICAgMTI2MzI0LCAxMjYzMjgsIDEyNjMzMiwgMTI2MzM2LCAxMjYzNDAsIDEyNjM0NCwgMTI2MzQ4LCAxMjYzNTIsIDEyNjM1NiwgCisgICAgMTI2MzYwLCAxMjYzNjQsIDEyNjM2OCwgMTI2MzcyLCAxMjYzNzYsIDEyNjM4MCwgMTI2Mzg0LCAxMjYzODgsIDEyNjM5MiwgCisgICAgMTI2Mzk2LCAxMjY0MDAsIDEyNjQwNCwgMTI2NDA4LCAxMjY0MTIsIDEyNjQxNiwgMTI2NDIwLCAxMjY0MjQsIDEyNjQyOCwgCisgICAgMTI2NDMyLCAxMjY0MzYsIDEyNjQ0MCwgMTI2NDQ0LCAxMjY0NDgsIDEyNjQ1MiwgMTI2NDU2LCAxMjY0NjAsIDEyNjQ2NCwgCisgICAgMTI2NDY4LCAxMjY0NzIsIDEyNjQ3NiwgMTI2NDgwLCAxMjY0ODQsIDEyNjQ4OCwgMTI2NDkyLCAxMjY0OTYsIDEyNjUwMCwgCisgICAgMTI2NTA0LCAxMjY1MDgsIDEyNjUxMiwgMTI2NTE2LCAxMjY1MjAsIDEyNjUyNCwgMTI2NTI4LCAxMjY1MzIsIDEyNjUzNiwgCisgICAgMTI2NTQwLCAxMjY1NDQsIDEyNjU0OCwgMTI2NTUyLCAxMjY1NTYsIDEyNjU2MCwgMTI2NTY0LCAxMjY1NjgsIDEyNjU3MiwgCisgICAgMTI2NTc2LCAxMjY1ODAsIDEyNjU4NCwgMTI2NTg4LCAxMjY1OTIsIDEyNjU5NiwgMTI2NjAwLCAxMjY2MDQsIDEyNjYwOCwgCisgICAgMTI2NjEyLCAxMjY2MTYsIDEyNjYyMCwgMTI2NjI0LCAxMjY2MjgsIDEyNjYzMiwgMTI2NjM2LCAxMjY2NDAsIDEyNjY0NCwgCisgICAgMTI2NjQ4LCAxMjY2NTIsIDEyNjY1NiwgMTI2NjYwLCAxMjY2NjQsIDEyNjY2OCwgMTI2NjcyLCAxMjY2NzYsIDEyNjY4MCwgCisgICAgMTI2Njg0LCAxMjY2ODgsIDEyNjY5MiwgMTI2Njk2LCAxMjY3MDAsIDEyNjcwNCwgMTI2NzA4LCAxMjY3MTIsIDEyNjcxNiwgCisgICAgMTI2NzIwLCAxMjY3MjQsIDEyNjcyOCwgMTI2NzMyLCAxMjY3MzYsIDEyNjc0MCwgMTI2NzQ0LCAxMjY3NDgsIDEyNjc1MiwgCisgICAgMTI2NzU2LCAxMjY3NjAsIDEyNjc2NCwgMTI2NzY4LCAxMjY3NzIsIDEyNjc3NiwgMTI2NzgwLCAxMjY3ODQsIDEyNjc4OCwgCisgICAgMTI2NzkyLCAxMjY3OTYsIDEyNjgwMCwgMTI2ODA0LCAxMjY4MDgsIDEyNjgxMiwgMTI2ODE2LCAxMjY4MjYsIDEyNjgzMCwgCisgICAgMTI2ODM0LCAxMjY4MzgsIDEyNjg0MiwgMTI2ODQ2LCAxMjY4NTAsIDEyNjg1NCwgMTI2ODU4LCAxMjY4NjIsIDEyNjg2NiwgCisgICAgMTI2ODcwLCAxMjY4NzUsIDEyNjg3OSwgMTI2ODgzLCAxMjY4ODcsIDEyNjg5MSwgMTI2ODk1LCAxMjY4OTksIDEyNjkwMywgCisgICAgMTI2OTA3LCAxMjY5MTEsIDEyNjkxNSwgMTI2OTE5LCAxMjY5MjMsIDEyNjkyNywgMTI2OTMxLCAxMjY5MzUsIDEyNjkzOSwgCisgICAgMTI2OTQ4LCAxMjY5NTcsIDEyNjk2MSwgMTI2OTY1LCAxMjY5NjksIDEyNjk3MywgMTI2OTc3LCAxMjY5ODEsIDEyNjk4NSwgCisgICAgMTI2OTg5LCAxMjY5OTMsIDEyNjk5NywgMTI3MDAxLCAxMjcwMDUsIDEyNzAwOSwgMTI3MDEzLCAxMjcwMTcsIDEyNzAyMSwgCisgICAgMTI3MDI1LCAxMjcwMjksIDEyNzAzMywgMTI3MDM3LCAxMjcwNDEsIDEyNzA0NSwgMTI3MDQ5LCAxMjcwNTMsIDEyNzA1NywgCisgICAgMTI3MDYxLCAxMjcwNjUsIDEyNzA2OSwgMTI3MDczLCAxMjcwNzcsIDEyNzA4MSwgMTI3MDg1LCAxMjcwODksIDEyNzA5MywgCisgICAgMTI3MDk3LCAxMjcxMDEsIDEyNzEwNSwgMTI3MTA5LCAxMjcxMTMsIDEyNzExNywgMTI3MTIxLCAxMjcxMjUsIDEyNzEyOSwgCisgICAgMTI3MTMzLCAxMjcxMzcsIDEyNzE0MSwgMTI3MTQ1LCAxMjcxNDksIDEyNzE1MywgMTI3MTU3LCAxMjcxNjEsIDEyNzE2NSwgCisgICAgMTI3MTY5LCAxMjcxNzMsIDEyNzE3NywgMTI3MTgxLCAxMjcxODUsIDEyNzE4OSwgMTI3MTkzLCAxMjcxOTcsIDEyNzIwMSwgCisgICAgMTI3MjA1LCAxMjcyMDksIDEyNzIxMywgMTI3MjE3LCAxMjcyMjEsIDEyNzIyNSwgMTI3MjI5LCAxMjcyMzMsIDEyNzIzNywgCisgICAgMTI3MjQxLCAxMjcyNDUsIDEyNzI0OSwgMTI3MjUzLCAxMjcyNTcsIDEyNzI2MSwgMTI3MjY1LCAxMjcyNjksIDEyNzI3MywgCisgICAgMTI3Mjc3LCAxMjcyODEsIDEyNzI4NSwgMTI3Mjg5LCAxMjcyOTMsIDEyNzI5NywgMTI3MzAxLCAxMjczMDUsIDEyNzMwOSwgCisgICAgMTI3MzEzLCAxMjczMTcsIDEyNzMyMSwgMTI3MzI1LCAxMjczMjksIDEyNzMzMywgMTI3MzM3LCAxMjczNDEsIDEyNzM0NSwgCisgICAgMTI3MzQ5LCAxMjczNTMsIDEyNzM1NywgMTI3MzYxLCAxMjczNjUsIDEyNzM2OSwgMTI3MzczLCAxMjczNzcsIDEyNzM4MSwgCisgICAgMTI3Mzg1LCAxMjczODksIDEyNzM5MywgMTI3Mzk3LCAxMjc0MDEsIDEyNzQwNSwgMTI3NDA5LCAxMjc0MTMsIDEyNzQxNywgCisgICAgMTI3NDIxLCAxMjc0MjUsIDEyNzQyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC0xOTMwMCwxMjQgKzIwNDU2LDIxMCBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNDkzMywgMTI0OTQxLCAKLSAgICAxMjQ5NDksIDEyNDk1OSwgMTI0OTY5LCAxMjQ5NzcsIDEyNDk4MywgMTI0OTkxLCAxMjQ5OTksIDEyNTAwOSwgMTI1MDIxLCAKLSAgICAxMjUwMzMsIDEyNTAzOSwgMTI1MDQ3LCAxMjUwNTMsIDEyNTA1OSwgMTI1MDY1LCAxMjUwNzEsIDEyNTA3NywgMTI1MDgzLCAKLSAgICAxMjUwODksIDEyNTA5NSwgMTI1MTAxLCAxMjUxMDcsIDEyNTExMywgMTI1MTIxLCAxMjUxMjksIDEyNTEzNSwgMTI1MTQxLCAKLSAgICAxMjUxNDcsIDEyNTE1MywgMTI1MTYxLCAxMjUxNjksIDEyNTE3OCwgMTI1MTg0LCAxMjUxOTIsIDEyNTE5OCwgMTI1MjA0LCAKLSAgICAxMjUyMTAsIDEyNTIxNiwgMTI1MjIyLCAxMjUyMzAsIDEyNTIzOCwgMTI1MjQ0LCAxMjUyNTAsIDEyNTI1NiwgMTI1MjYyLCAKLSAgICAxMjUyNjgsIDEyNTI3NCwgMTI1MjgwLCAxMjUyODYsIDEyNTI5MiwgMTI1Mjk4LCAxMjUzMDQsIDEyNTMxMCwgMTI1MzE2LCAKLSAgICAxMjUzMjIsIDEyNTMyOCwgMTI1MzM0LCAxMjUzNDAsIDEyNTM0NiwgMTI1MzUyLCAxMjUzNjAsIDEyNTM2NiwgMTI1MzcyLCAKLSAgICAxMjUzODIsIDEyNTM5MCwgMTI1Mzk2LCAxMjU0MDIsIDEyNTQwOCwgMTI1NDE0LCAxMjU0MjAsIDEyNTQyNiwgMTI1NDMyLCAKLSAgICAxMjU0MzgsIDEyNTQ0NCwgMTI1NDUwLCAxMjU0NTYsIDEyNTQ2MiwgMTI1NDY4LCAxMjU0NzQsIDEyNTQ4MCwgMTI1NDg2LCAKLSAgICAxMjU0OTIsIDEyNTQ5OCwgMTI1NTA0LCAxMjU1MTAsIDEyNTUxNiwgMTI1NTIyLCAxMjU1MzAsIDEyNTUzNiwgMTI1NTQ0LCAKLSAgICAxMjU1NTIsIDEyNTU2MCwgMTI1NTY2LCAxMjU1NzIsIDEyNTU3OCwgMTI1NTg0LCAxMjU1OTAsIDEyNTU5OCwgMTI1NjA4LCAKLSAgICAxMjU2MTYsIDEyNTYyNCwgMTI1NjMwLCAxMjU2MzYsIDEyNTY0NCwgMTI1NjUyLCAxMjU2NTgsIDEyNTY2NiwgMTI1Njc0LCAKLSAgICAxMjU2ODIsIDEyNTY4OCwgMTI1Njk0LCAxMjU3MDAsIDEyNTcwNiwgMTI1NzEyLCAxMjU3MTgsIDEyNTcyNiwgMTI1NzM0LCAKLSAgICAxMjU3NDAsIDEyNTc0NiwgMTI1NzUyLCAxMjU3NTgsIDEyNTc2NCwgMTI1NzcyLCAxMjU3NzgsIDEyNTc4NCwgMTI1NzkwLCAKLSAgICAxMjU3OTYsIDEyNTgwMiwgMTI1ODA4LCAxMjU4MTYsIDEyNTgyMiwgMTI1ODI4LCAxMjU4MzQsIDEyNTg0MCwgMTI1ODQ4LCAKLSAgICAxMjU4NTYsIDEyNTg2MiwgMTI1ODY4LCAxMjU4NzQsIDEyNTg3OSwgMTI1ODg1LCAxMjU4OTEsIDEyNTg5OCwgMTI1OTAzLCAKLSAgICAxMjU5MDgsIDEyNTkxMywgMTI1OTE4LCAxMjU5MjMsIDEyNTkyOCwgMTI1OTMzLCAxMjU5MzgsIDEyNTk0MywgMTI1OTUyLCAKLSAgICAxMjU5NTksIDEyNTk2NCwgMTI1OTY5LCAxMjU5NzQsIDEyNTk4MSwgMTI1OTg2LCAxMjU5OTEsIDEyNTk5NiwgMTI2MDAzLCAKLSAgICAxMjYwMDgsIDEyNjAxMywgMTI2MDE4LCAxMjYwMjMsIDEyNjAyOCwgMTI2MDMzLCAxMjYwMzgsIDEyNjA0MywgMTI2MDQ4LCAKLSAgICAxMjYwNTMsIDEyNjA1OCwgMTI2MDY1LCAxMjYwNzAsIDEyNjA3NywgMTI2MDgyLCAxMjYwODcsIDEyNjA5NCwgMTI2MDk5LCAKLSAgICAxMjYxMDQsIDEyNjEwOSwgMTI2MTE0LCAxMjYxMTksIDEyNjEyNCwgMTI2MTI5LCAxMjYxMzQsIDEyNjEzOSwgMTI2MTQ0LCAKLSAgICAxMjYxNDksIDEyNjE1NCwgMTI2MTU5LCAxMjYxNjQsIDEyNjE2OSwgMTI2MTc0LCAxMjYxNzksIDEyNjE4NCwgMTI2MTg5LCAKLSAgICAxMjYxOTYsIDEyNjIwMSwgMTI2MjA2LCAxMjYyMTEsIDEyNjIxNiwgMTI2MjIxLCAxMjYyMjYsIDEyNjIzMSwgMTI2MjM2LCAKLSAgICAxMjYyNDEsIDEyNjI0NiwgMTI2MjUxLCAxMjYyNTYsIDEyNjI2MSwgMTI2MjY4LCAxMjYyNzMsIDEyNjI3OCwgMTI2Mjg1LCAKLSAgICAxMjYyOTAsIDEyNjI5NSwgMTI2MzAwLCAxMjYzMDUsIDEyNjMxMCwgMTI2MzE1LCAxMjYzMjAsIDEyNjMyNSwgMTI2MzMwLCAKLSAgICAxMjYzMzUsIDEyNjM0MiwgMTI2MzQ3LCAxMjYzNTIsIDEyNjM1NywgMTI2MzYyLCAxMjYzNjcsIDEyNjM3NCwgMTI2MzgxLCAKLSAgICAxMjYzODYsIDEyNjM5MSwgMTI2Mzk2LCAxMjY0MDEsIDEyNjQwNiwgMTI2NDExLCAxMjY0MTYsIDEyNjQyMSwgMTI2NDI2LCAKLSAgICAxMjY0MzEsIDEyNjQzNiwgMTI2NDQxLCAxMjY0NDYsIDEyNjQ1MSwgMTI2NDU2LCAxMjY0NjEsIDEyNjQ2NiwgMTI2NDcxLCAKLSAgICAxMjY0NzYsIDEyNjQ4MSwgMTI2NDg2LCAxMjY0OTEsIDEyNjQ5NiwgMTI2NTAxLCAxMjY1MDYsIDEyNjUxMSwgMTI2NTE2LCAKLSAgICAxMjY1MjEsIDEyNjUyNiwgMTI2NTMxLCAxMjY1MzYsIDEyNjU0MSwgMTI2NTQ2LCAxMjY1NTEsIDEyNjU1NiwgMTI2NTYxLCAKLSAgICAxMjY1NjgsIDEyNjU3MywgMTI2NTc4LCAxMjY1ODMsIDEyNjU4OCwgMTI2NTkzLCAxMjY1OTgsIDEyNjYwMywgMTI2NjA4LCAKLSAgICAxMjY2MTMsIDEyNjYxOCwgMTI2NjIzLCAxMjY2MjgsIDEyNjYzMywgMTI2NjM4LCAxMjY2NDMsIDEyNjY0OCwgMTI2NjUzLCAKLSAgICAxMjY2NTgsIDEyNjY2MywgMTI2NjY4LCAxMjY2NzMsIDEyNjY3OCwgMTI2NjgzLCAxMjY2ODgsIDEyNjY5MywgMTI2Njk4LCAKLSAgICAxMjY3MDMsIDEyNjcwOCwgMTI2NzEzLCAxMjY3MTgsIDEyNjcyMywgMTI2NzI4LCAxMjY3MzMsIDEyNjczOCwgMTI2NzQzLCAKLSAgICAxMjY3NDgsIDEyNjc1MywgMTI2NzU4LCAxMjY3NjMsIDEyNjc2OCwgMTI2NzczLCAxMjY3NzgsIDEyNjc4MywgMTI2Nzg4LCAKLSAgICAxMjY3OTMsIDEyNjc5OCwgMTI2ODAzLCAxMjY4MDgsIDEyNjgxMywgMTI2ODE4LCAxMjY4MjMsIDEyNjgyOCwgMTI2ODMzLCAKLSAgICAxMjY4MzgsIDEyNjg0MywgMTI2ODQ4LCAxMjY4NTMsIDEyNjg1OCwgMTI2ODY1LCAxMjY4NzAsIDEyNjg3NSwgMTI2ODgwLCAKLSAgICAxMjY4ODUsIDEyNjg5MCwgMTI2ODk1LCAxMjY5MDAsIDEyNjkwNSwgMTI2OTEwLCAxMjY5MTUsIDEyNjkyMCwgMTI2OTI1LCAKLSAgICAxMjY5MzAsIDEyNjkzNSwgMTI2OTQwLCAxMjY5NDUsIDEyNjk1MCwgMTI2OTU1LCAxMjY5NjAsIDEyNjk2NSwgMTI2OTcwLCAKLSAgICAxMjY5NzcsIDEyNjk4MiwgMTI2OTg3LCAxMjY5OTQsIDEyNjk5OSwgMTI3MDA0LCAxMjcwMDksIDEyNzAxNCwgMTI3MDE5LCAKLSAgICAxMjcwMjQsIDEyNzAyOSwgMTI3MDM0LCAxMjcwMzksIDEyNzA0NCwgMTI3MDQ5LCAxMjcwNTQsIDEyNzA1OSwgMTI3MDY0LCAKLSAgICAxMjcwNjksIDEyNzA3NCwgMTI3MDc5LCAxMjcwODQsIDEyNzA4OSwgMTI3MDk0LCAxMjcwOTksIDEyNzEwNCwgMTI3MTA5LCAKLSAgICAxMjcxMTQsIDEyNzExOSwgMTI3MTI0LCAxMjcxMjksIDEyNzEzNCwgMTI3MTM5LCAxMjcxNDQsIDEyNzE0OSwgMTI3MTU0LCAKLSAgICAxMjcxNTksIDEyNzE2NCwgMTI3MTY5LCAxMjcxNzQsIDEyNzE3OSwgMTI3MTg0LCAxMjcxODksIDEyNzE5NCwgMTI3MTk5LCAKLSAgICAxMjcyMDQsIDEyNzIwOSwgMTI3MjE2LCAxMjcyMjEsIDEyNzIyNiwgMTI3MjMzLCAxMjcyNDAsIDEyNzI0NSwgMTI3MjUwLCAKLSAgICAxMjcyNTUsIDEyNzI2MCwgMTI3MjY1LCAxMjcyNzAsIDEyNzI3NSwgMTI3MjgwLCAxMjcyODUsIDEyNzI5MCwgMTI3Mjk1LCAKLSAgICAxMjczMDAsIDEyNzMwNSwgMTI3MzEwLCAxMjczMTUsIDEyNzMyMCwgMTI3MzI1LCAxMjczMzAsIDEyNzMzNSwgMTI3MzQwLCAKLSAgICAxMjczNDUsIDEyNzM1MCwgMTI3MzU1LCAxMjczNjAsIDEyNzM2NSwgMTI3MzcyLCAxMjczNzcsIDEyNzM4MiwgMTI3Mzg3LCAKLSAgICAxMjczOTIsIDEyNzM5NywgMTI3NDAyLCAxMjc0MDcsIDEyNzQxMiwgMTI3NDE3LCAxMjc0MjIsIDEyNzQyNywgMTI3NDMyLCAKLSAgICAxMjc0MzcsIDEyNzQ0MiwgMTI3NDQ3LCAxMjc0NTIsIDEyNzQ1NywgMTI3NDYyLCAxMjc0NjksIDEyNzQ3NCwgMTI3NDc5LCAKLSAgICAxMjc0ODQsIDEyNzQ4OSwgMTI3NDk0LCAxMjc0OTksIDEyNzUwNCwgMTI3NTEwLCAxMjc1MTUsIDEyNzUyMCwgMTI3NTI1LCAKLSAgICAxMjc1MzAsIDEyNzUzNSwgMTI3NTQwLCAxMjc1NDUsIDEyNzU1MCwgMTI3NTU3LCAxMjc1NjQsIDEyNzU2OSwgMTI3NTc0LCAKLSAgICAxMjc1NzgsIDEyNzU4MywgMTI3NTg3LCAxMjc1OTEsIDEyNzU5NiwgMTI3NjAzLCAxMjc2MDgsIDEyNzYxMywgMTI3NjIyLCAKLSAgICAxMjc2MjcsIDEyNzYzMiwgMTI3NjM3LCAxMjc2NDIsIDEyNzY0OSwgMTI3NjU2LCAxMjc2NjEsIDEyNzY2NiwgMTI3NjcxLCAKLSAgICAxMjc2NzYsIDEyNzY4MywgMTI3Njg4LCAxMjc2OTMsIDEyNzY5OCwgMTI3NzAzLCAxMjc3MDgsIDEyNzcxMywgMTI3NzE4LCAKLSAgICAxMjc3MjMsIDEyNzcyOCwgMTI3NzMzLCAxMjc3MzgsIDEyNzc0MywgMTI3NzUwLCAxMjc3NTUsIDEyNzc2MCwgMTI3NzY1LCAKLSAgICAxMjc3NzAsIDEyNzc3NSwgMTI3Nzc5LCAxMjc3ODQsIDEyNzc4OSwgMTI3Nzk0LCAxMjc3OTksIDEyNzgwNCwgMTI3ODA5LCAKLSAgICAxMjc4MTQsIDEyNzgxOSwgMTI3ODI0LCAxMjc4MzAsIDEyNzgzNiwgMTI3ODQyLCAxMjc4NDgsIDEyNzg1NCwgMTI3ODYwLCAKLSAgICAxMjc4NjYsIDEyNzg3MiwgMTI3ODc4LCAxMjc4ODQsIDEyNzg5MCwgMTI3ODk2LCAxMjc5MDIsIDEyNzkwOCwgMTI3OTE0LCAKKyAgICAwLCAxMjc0MzMsIDEyNzQ0MSwgMTI3NDQ5LCAxMjc0NTksIDEyNzQ2OSwgMTI3NDc3LCAxMjc0ODMsIDEyNzQ5MSwgCisgICAgMTI3NDk5LCAxMjc1MDksIDEyNzUyMSwgMTI3NTMzLCAxMjc1MzksIDEyNzU0NywgMTI3NTUzLCAxMjc1NTksIDEyNzU2NSwgCisgICAgMTI3NTcxLCAxMjc1NzcsIDEyNzU4MywgMTI3NTg5LCAxMjc1OTUsIDEyNzYwMSwgMTI3NjA3LCAxMjc2MTMsIDEyNzYyMSwgCisgICAgMTI3NjI5LCAxMjc2MzUsIDEyNzY0MSwgMTI3NjQ3LCAxMjc2NTMsIDEyNzY2MSwgMTI3NjY5LCAxMjc2NzgsIDEyNzY4NCwgCisgICAgMTI3NjkyLCAxMjc2OTgsIDEyNzcwNCwgMTI3NzEwLCAxMjc3MTYsIDEyNzcyMiwgMTI3NzMwLCAxMjc3MzgsIDEyNzc0NCwgCisgICAgMTI3NzUwLCAxMjc3NTYsIDEyNzc2MiwgMTI3NzY4LCAxMjc3NzQsIDEyNzc4MCwgMTI3Nzg2LCAxMjc3OTIsIDEyNzc5OCwgCisgICAgMTI3ODA0LCAxMjc4MTAsIDEyNzgxNiwgMTI3ODIyLCAxMjc4MjgsIDEyNzgzNCwgMTI3ODQwLCAxMjc4NDYsIDEyNzg1MiwgCisgICAgMTI3ODYwLCAxMjc4NjYsIDEyNzg3MiwgMTI3ODgyLCAxMjc4OTAsIDEyNzg5NiwgMTI3OTAyLCAxMjc5MDgsIDEyNzkxNCwgCiAgICAgMTI3OTIwLCAxMjc5MjYsIDEyNzkzMiwgMTI3OTM4LCAxMjc5NDQsIDEyNzk1MCwgMTI3OTU2LCAxMjc5NjIsIDEyNzk2OCwgCi0gICAgMTI3OTczLCAxMjc5NzksIDEyNzk4NSwgMTI3OTkxLCAxMjc5OTcsIDEyODAwMywgMTI4MDA5LCAxMjgwMTUsIDEyODAyMSwgCi0gICAgMTI4MDI3LCAxMjgwMzMsIDEyODAzOSwgMTI4MDQ1LCAxMjgwNTEsIDEyODA1NywgMTI4MDYzLCAxMjgwNjksIDEyODA3NSwgCi0gICAgMTI4MDgxLCAxMjgwODcsIDEyODA5MywgMTI4MDk4LCAxMjgxMDQsIDEyODExMCwgMTI4MTE2LCAxMjgxMjIsIDEyODEyOCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI4MTM0LCAxMjgxMzksIDEyODE0NCwgMTI4MTQ5LCAxMjgxNTQsIDEyODE1OSwgCi0gICAgMTI4MTY0LCAxMjgxNjgsIDEyODE3MywgMTI4MTc4LCAxMjgxODMsIDEyODE4OCwgMTI4MTkzLCAxMjgxOTgsIDEyODIwMywgCi0gICAgMTI4MjA4LCAxMjgyMTMsIDEyODIxNywgMTI4MjIyLCAxMjgyMjYsIDEyODIzMSwgMTI4MjM2LCAxMjgyNDEsIDEyODI0NiwgCi0gICAgMTI4MjUxLCAxMjgyNTUsIDEyODI2MCwgMTI4MjY1LCAxMjgyNzAsIDEyODI3NSwgMTI4MjgwLCAwLCAxMjgyODUsIAotICAgIDEyODI5MCwgMTI4Mjk0LCAxMjgyOTgsIDEyODMwMiwgMTI4MzA2LCAxMjgzMTAsIDEyODMxNCwgMTI4MzE5LCAxMjgzMjMsIAotICAgIDAsIDAsIDAsIDAsIDEyODMyOCwgMTI4MzMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMjc5NzQsIDEyNzk4MCwgMTI3OTg2LCAxMjc5OTIsIDEyNzk5OCwgMTI4MDA0LCAxMjgwMTAsIDEyODAxNiwgMTI4MDIyLCAKKyAgICAxMjgwMzAsIDEyODAzNiwgMTI4MDQ0LCAxMjgwNTIsIDEyODA2MCwgMTI4MDY2LCAxMjgwNzIsIDEyODA3OCwgMTI4MDg0LCAKKyAgICAxMjgwOTAsIDEyODA5OCwgMTI4MTA4LCAxMjgxMTYsIDEyODEyNCwgMTI4MTMwLCAxMjgxMzYsIDEyODE0NCwgMTI4MTUyLCAKKyAgICAxMjgxNTgsIDEyODE2NiwgMTI4MTc0LCAxMjgxODIsIDEyODE4OCwgMTI4MTk0LCAxMjgyMDAsIDEyODIwNiwgMTI4MjEyLCAKKyAgICAxMjgyMTgsIDEyODIyNiwgMTI4MjM0LCAxMjgyNDAsIDEyODI0NiwgMTI4MjUyLCAxMjgyNTgsIDEyODI2NCwgMTI4MjcyLCAKKyAgICAxMjgyNzgsIDEyODI4NCwgMTI4MjkwLCAxMjgyOTYsIDEyODMwMiwgMTI4MzA4LCAxMjgzMTYsIDEyODMyMiwgMTI4MzI4LCAKKyAgICAxMjgzMzQsIDEyODM0MCwgMTI4MzQ4LCAxMjgzNTYsIDEyODM2MiwgMTI4MzY4LCAxMjgzNzQsIDEyODM3OSwgMTI4Mzg1LCAKKyAgICAxMjgzOTEsIDEyODM5OCwgMTI4NDAzLCAxMjg0MDgsIDEyODQxMywgMTI4NDE4LCAxMjg0MjMsIDEyODQyOCwgMTI4NDMzLCAKKyAgICAxMjg0MzgsIDEyODQ0MywgMTI4NDUyLCAxMjg0NTksIDEyODQ2NCwgMTI4NDY5LCAxMjg0NzQsIDEyODQ4MSwgMTI4NDg2LCAKKyAgICAxMjg0OTEsIDEyODQ5NiwgMTI4NTAzLCAxMjg1MDgsIDEyODUxMywgMTI4NTE4LCAxMjg1MjMsIDEyODUyOCwgMTI4NTMzLCAKKyAgICAxMjg1MzgsIDEyODU0MywgMTI4NTQ4LCAxMjg1NTMsIDEyODU1OCwgMTI4NTY1LCAxMjg1NzAsIDEyODU3NywgMTI4NTgyLCAKKyAgICAxMjg1ODcsIDEyODU5NCwgMTI4NTk5LCAxMjg2MDQsIDEyODYwOSwgMTI4NjE0LCAxMjg2MTksIDEyODYyNCwgMTI4NjI5LCAKKyAgICAxMjg2MzQsIDEyODYzOSwgMTI4NjQ0LCAxMjg2NDksIDEyODY1NCwgMTI4NjU5LCAxMjg2NjQsIDEyODY2OSwgMTI4Njc0LCAKKyAgICAxMjg2NzksIDEyODY4NCwgMTI4Njg5LCAxMjg2OTYsIDEyODcwMSwgMTI4NzA2LCAxMjg3MTEsIDEyODcxNiwgMTI4NzIxLCAKKyAgICAxMjg3MjYsIDEyODczMSwgMTI4NzM2LCAxMjg3NDEsIDEyODc0NiwgMTI4NzUxLCAxMjg3NTYsIDEyODc2MSwgMTI4NzY4LCAKKyAgICAxMjg3NzMsIDEyODc3OCwgMTI4Nzg1LCAxMjg3OTAsIDEyODc5NSwgMTI4ODAwLCAxMjg4MDUsIDEyODgxMCwgMTI4ODE1LCAKKyAgICAxMjg4MjAsIDEyODgyNSwgMTI4ODMwLCAxMjg4MzUsIDEyODg0MiwgMTI4ODQ3LCAxMjg4NTIsIDEyODg1NywgMTI4ODYyLCAKKyAgICAxMjg4NjcsIDEyODg3NCwgMTI4ODgxLCAxMjg4ODYsIDEyODg5MSwgMTI4ODk2LCAxMjg5MDEsIDEyODkwNiwgMTI4OTExLCAKKyAgICAxMjg5MTYsIDEyODkyMSwgMTI4OTI2LCAxMjg5MzEsIDEyODkzNiwgMTI4OTQxLCAxMjg5NDYsIDEyODk1MSwgMTI4OTU2LCAKKyAgICAxMjg5NjEsIDEyODk2NiwgMTI4OTcxLCAxMjg5NzYsIDEyODk4MSwgMTI4OTg2LCAxMjg5OTEsIDEyODk5NiwgMTI5MDAxLCAKKyAgICAxMjkwMDYsIDEyOTAxMSwgMTI5MDE2LCAxMjkwMjEsIDEyOTAyNiwgMTI5MDMxLCAxMjkwMzYsIDEyOTA0MSwgMTI5MDQ2LCAKKyAgICAxMjkwNTEsIDEyOTA1NiwgMTI5MDYxLCAxMjkwNjgsIDEyOTA3MywgMTI5MDc4LCAxMjkwODMsIDEyOTA4OCwgMTI5MDkzLCAKKyAgICAxMjkwOTgsIDEyOTEwMywgMTI5MTA4LCAxMjkxMTMsIDEyOTExOCwgMTI5MTIzLCAxMjkxMjgsIDEyOTEzMywgMTI5MTM4LCAKKyAgICAxMjkxNDMsIDEyOTE0OCwgMTI5MTUzLCAxMjkxNTgsIDEyOTE2MywgMTI5MTY4LCAxMjkxNzMsIDEyOTE3OCwgMTI5MTgzLCAKKyAgICAxMjkxODgsIDEyOTE5MywgMTI5MTk4LCAxMjkyMDMsIDEyOTIwOCwgMTI5MjEzLCAxMjkyMTgsIDEyOTIyMywgMTI5MjI4LCAKKyAgICAxMjkyMzMsIDEyOTIzOCwgMTI5MjQzLCAxMjkyNDgsIDEyOTI1MywgMTI5MjU4LCAxMjkyNjMsIDEyOTI2OCwgMTI5MjczLCAKKyAgICAxMjkyNzgsIDEyOTI4MywgMTI5Mjg4LCAxMjkyOTMsIDEyOTI5OCwgMTI5MzAzLCAxMjkzMDgsIDEyOTMxMywgMTI5MzE4LCAKKyAgICAxMjkzMjMsIDEyOTMyOCwgMTI5MzMzLCAxMjkzMzgsIDEyOTM0MywgMTI5MzQ4LCAxMjkzNTMsIDEyOTM1OCwgMTI5MzY1LCAKKyAgICAxMjkzNzAsIDEyOTM3NSwgMTI5MzgwLCAxMjkzODUsIDEyOTM5MCwgMTI5Mzk1LCAxMjk0MDAsIDEyOTQwNSwgMTI5NDEwLCAKKyAgICAxMjk0MTUsIDEyOTQyMCwgMTI5NDI1LCAxMjk0MzAsIDEyOTQzNSwgMTI5NDQwLCAxMjk0NDUsIDEyOTQ1MCwgMTI5NDU1LCAKKyAgICAxMjk0NjAsIDEyOTQ2NSwgMTI5NDcwLCAxMjk0NzcsIDEyOTQ4MiwgMTI5NDg3LCAxMjk0OTQsIDEyOTQ5OSwgMTI5NTA0LCAKKyAgICAxMjk1MDksIDEyOTUxNCwgMTI5NTE5LCAxMjk1MjQsIDEyOTUyOSwgMTI5NTM0LCAxMjk1MzksIDEyOTU0NCwgMTI5NTQ5LCAKKyAgICAxMjk1NTQsIDEyOTU1OSwgMTI5NTY0LCAxMjk1NjksIDEyOTU3NCwgMTI5NTc5LCAxMjk1ODQsIDEyOTU4OSwgMTI5NTk0LCAKKyAgICAxMjk1OTksIDEyOTYwNCwgMTI5NjA5LCAxMjk2MTQsIDEyOTYxOSwgMTI5NjI0LCAxMjk2MjksIDEyOTYzNCwgMTI5NjM5LCAKKyAgICAxMjk2NDQsIDEyOTY0OSwgMTI5NjU0LCAxMjk2NTksIDEyOTY2NCwgMTI5NjY5LCAxMjk2NzQsIDEyOTY3OSwgMTI5Njg0LCAKKyAgICAxMjk2ODksIDEyOTY5NCwgMTI5Njk5LCAxMjk3MDQsIDEyOTcwOSwgMTI5NzE2LCAxMjk3MjEsIDEyOTcyNiwgMTI5NzMzLCAKKyAgICAxMjk3NDAsIDEyOTc0NSwgMTI5NzUwLCAxMjk3NTUsIDEyOTc2MCwgMTI5NzY1LCAxMjk3NzAsIDEyOTc3NSwgMTI5NzgwLCAKKyAgICAxMjk3ODUsIDEyOTc5MCwgMTI5Nzk1LCAxMjk4MDAsIDEyOTgwNSwgMTI5ODEwLCAxMjk4MTUsIDEyOTgyMCwgMTI5ODI1LCAKKyAgICAxMjk4MzAsIDEyOTgzNSwgMTI5ODQwLCAxMjk4NDUsIDEyOTg1MCwgMTI5ODU1LCAxMjk4NjAsIDEyOTg2NSwgMTI5ODcyLCAKKyAgICAxMjk4NzcsIDEyOTg4MiwgMTI5ODg3LCAxMjk4OTIsIDEyOTg5NywgMTI5OTAyLCAxMjk5MDcsIDEyOTkxMiwgMTI5OTE3LCAKKyAgICAxMjk5MjIsIDEyOTkyNywgMTI5OTMyLCAxMjk5MzcsIDEyOTk0MiwgMTI5OTQ3LCAxMjk5NTIsIDEyOTk1NywgMTI5OTYyLCAKKyAgICAxMjk5NjksIDEyOTk3NCwgMTI5OTc5LCAxMjk5ODQsIDEyOTk4OSwgMTI5OTk0LCAxMjk5OTksIDEzMDAwNCwgMTMwMDEwLCAKKyAgICAxMzAwMTUsIDEzMDAyMCwgMTMwMDI1LCAxMzAwMzAsIDEzMDAzNSwgMTMwMDQwLCAxMzAwNDUsIDEzMDA1MCwgMTMwMDU3LCAKKyAgICAxMzAwNjQsIDEzMDA2OSwgMTMwMDc0LCAxMzAwNzgsIDEzMDA4MywgMTMwMDg3LCAxMzAwOTEsIDEzMDA5NiwgMTMwMTAzLCAKKyAgICAxMzAxMDgsIDEzMDExMywgMTMwMTIyLCAxMzAxMjcsIDEzMDEzMiwgMTMwMTM3LCAxMzAxNDIsIDEzMDE0OSwgMTMwMTU2LCAKKyAgICAxMzAxNjEsIDEzMDE2NiwgMTMwMTcxLCAxMzAxNzYsIDEzMDE4MywgMTMwMTg4LCAxMzAxOTMsIDEzMDE5OCwgMTMwMjAzLCAKKyAgICAxMzAyMDgsIDEzMDIxMywgMTMwMjE4LCAxMzAyMjMsIDEzMDIyOCwgMTMwMjMzLCAxMzAyMzgsIDEzMDI0MywgMTMwMjUwLCAKKyAgICAxMzAyNTQsIDEzMDI1OSwgMTMwMjY0LCAxMzAyNjksIDEzMDI3NCwgMTMwMjc4LCAxMzAyODMsIDEzMDI4OCwgMTMwMjkzLCAKKyAgICAxMzAyOTgsIDEzMDMwMywgMTMwMzA4LCAxMzAzMTMsIDEzMDMxOCwgMTMwMzIzLCAxMzAzMjksIDEzMDMzNSwgMTMwMzQxLCAKKyAgICAxMzAzNDcsIDEzMDM1MywgMTMwMzU4LCAxMzAzNjQsIDEzMDM3MCwgMTMwMzc2LCAxMzAzODIsIDEzMDM4OCwgMTMwMzk0LCAKKyAgICAxMzA0MDAsIDEzMDQwNiwgMTMwNDEyLCAxMzA0MTgsIDEzMDQyNCwgMTMwNDMwLCAxMzA0MzYsIDEzMDQ0MiwgMTMwNDQ4LCAKKyAgICAxMzA0NTQsIDEzMDQ2MCwgMTMwNDY2LCAxMzA0NzEsIDEzMDQ3NywgMTMwNDgzLCAxMzA0ODksIDEzMDQ5NSwgMTMwNTAxLCAKKyAgICAxMzA1MDcsIDEzMDUxMywgMTMwNTE5LCAxMzA1MjUsIDEzMDUzMSwgMTMwNTM3LCAxMzA1NDMsIDEzMDU0OSwgMTMwNTU1LCAKKyAgICAxMzA1NjEsIDEzMDU2NywgMTMwNTczLCAxMzA1NzksIDEzMDU4NSwgMTMwNTkxLCAxMzA1OTYsIDEzMDYwMiwgMTMwNjA4LCAKKyAgICAxMzA2MTQsIDEzMDYyMCwgMTMwNjI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzA2MzIsIDEzMDYzNywgMTMwNjQyLCAKKyAgICAxMzA2NDcsIDEzMDY1MiwgMTMwNjU3LCAxMzA2NjIsIDEzMDY2NiwgMTMwNjcxLCAxMzA2NzYsIDEzMDY4MSwgMTMwNjg2LCAKKyAgICAxMzA2OTEsIDEzMDY5NiwgMTMwNzAxLCAxMzA3MDYsIDEzMDcxMSwgMTMwNzE1LCAxMzA3MjAsIDEzMDcyNCwgMTMwNzI5LCAKKyAgICAxMzA3MzQsIDEzMDczOSwgMTMwNzQ0LCAxMzA3NDksIDEzMDc1MywgMTMwNzU4LCAxMzA3NjMsIDEzMDc2NywgMTMwNzcyLCAKKyAgICAxMzA3NzcsIDAsIDEzMDc4MiwgMTMwNzg3LCAxMzA3OTEsIDEzMDc5NSwgMTMwNzk5LCAxMzA4MDMsIDEzMDgwNywgCisgICAgMTMwODExLCAxMzA4MTYsIDEzMDgyMCwgMCwgMCwgMCwgMCwgMTMwODI1LCAxMzA4MjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyODMzNywgMTI4MzQ0LCAxMjgzNTAsIDEyODM1NywgMTI4MzY0LCAKLSAgICAxMjgzNzEsIDEyODM3OCwgMTI4Mzg1LCAxMjgzOTIsIDEyODM5OSwgMTI4NDA2LCAxMjg0MTMsIDEyODQyMCwgMTI4NDI3LCAKLSAgICAxMjg0MzQsIDEyODQ0MSwgMTI4NDQ4LCAxMjg0NTUsIDEyODQ2MSwgMTI4NDY4LCAxMjg0NzUsIDEyODQ4MiwgMTI4NDg4LCAKLSAgICAxMjg0OTUsIDEyODUwMSwgMTI4NTA3LCAxMjg1MTQsIDEyODUyMCwgMTI4NTI3LCAxMjg1MzMsIDAsIDAsIDEyODUzOSwgCi0gICAgMTI4NTQ3LCAxMjg1NTUsIDEyODU2NCwgMTI4NTczLCAxMjg1ODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEyODU5MCwgMTI4NTk1LCAxMjg2MDAsIDEyODYwNSwgMTI4NjEwLCAxMjg2MTUsIDEyODYyMCwgMTI4NjI1LCAxMjg2MzAsIAotICAgIDEyODYzNSwgMTI4NjQwLCAxMjg2NDUsIDEyODY1MCwgMTI4NjU1LCAxMjg2NjAsIDEyODY2NSwgMTI4NjcwLCAxMjg2NzUsIAotICAgIDEyODY4MCwgMTI4Njg1LCAxMjg2OTAsIDEyODY5NSwgMTI4NzAwLCAxMjg3MDUsIDEyODcxMCwgMTI4NzE1LCAxMjg3MjAsIAotICAgIDEyODcyNSwgMTI4NzMwLCAxMjg3MzUsIDEyODc0MCwgMTI4NzQ1LCAxMjg3NTAsIDEyODc1NSwgMTI4NzYwLCAxMjg3NjUsIAotICAgIDEyODc3MCwgMTI4Nzc1LCAxMjg3ODAsIDEyODc4NSwgMTI4NzkwLCAxMjg3OTUsIDEyODgwMCwgMTI4ODA1LCAxMjg4MTAsIAotICAgIDEyODgxNSwgMTI4ODIwLCAxMjg4MjUsIDEyODgzMCwgMTI4ODM3LCAxMjg4NDQsIDEyODg1MSwgMTI4ODU4LCAxMjg4NjUsIAotICAgIDEyODg3MiwgMTI4ODc5LCAxMjg4ODYsIDEyODg5NSwgMTI4OTAyLCAxMjg5MDksIDEyODkxNiwgMTI4OTIzLCAxMjg5MzAsIAotICAgIDEyODkzNywgMTI4OTQ0LCAxMjg5NTEsIDEyODk1OCwgMTI4OTY1LCAxMjg5NzIsIDEyODk3NywgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTI4OTg2LCAxMjg5OTEsIDEyODk5NSwgMTI4OTk5LCAxMjkwMDMsIDEyOTAwNywgMTI5MDExLCAKLSAgICAxMjkwMTUsIDEyOTAyMCwgMTI5MDI0LCAwLCAxMjkwMjksIDEyOTAzNCwgMTI5MDM5LCAxMjkwNDYsIDEyOTA1MSwgCi0gICAgMTI5MDU4LCAxMjkwNjUsIDAsIDEyOTA3MCwgMTI5MDc3LCAxMjkwODIsIDEyOTA4NywgMTI5MDk0LCAxMjkxMDEsIAotICAgIDEyOTEwNiwgMTI5MTExLCAxMjkxMTYsIDEyOTEyMSwgMTI5MTI2LCAxMjkxMzMsIDEyOTE0MCwgMTI5MTQ1LCAxMjkxNTAsIAotICAgIDEyOTE1NSwgMTI5MTY4LCAxMjkxNzcsIDEyOTE4NCwgMTI5MTkzLCAxMjkyMDIsIDAsIDAsIDAsIDAsIDAsIDEyOTIxMSwgCi0gICAgMTI5MjE4LCAxMjkyMjUsIDEyOTIzMiwgMTI5MjM5LCAxMjkyNDYsIDEyOTI1MywgMTI5MjYwLCAxMjkyNjcsIDEyOTI3NCwgCi0gICAgMTI5MjgxLCAxMjkyODgsIDEyOTI5NSwgMTI5MzAyLCAxMjkzMDksIDEyOTMxNiwgMTI5MzIzLCAxMjkzMzAsIDEyOTMzNywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMwODM0LCAxMzA4NDEsIAorICAgIDEzMDg0NywgMTMwODU0LCAxMzA4NjEsIDEzMDg2OCwgMTMwODc1LCAxMzA4ODIsIDEzMDg4OSwgMTMwODk2LCAxMzA5MDMsIAorICAgIDEzMDkxMCwgMTMwOTE3LCAxMzA5MjQsIDEzMDkzMSwgMTMwOTM4LCAxMzA5NDUsIDEzMDk1MiwgMTMwOTU4LCAxMzA5NjUsIAorICAgIDEzMDk3MiwgMTMwOTc5LCAxMzA5ODUsIDEzMDk5MiwgMTMwOTk4LCAxMzEwMDQsIDEzMTAxMSwgMTMxMDE3LCAxMzEwMjQsIAorICAgIDEzMTAzMCwgMCwgMCwgMTMxMDM2LCAxMzEwNDQsIDEzMTA1MiwgMTMxMDYxLCAxMzEwNzAsIDEzMTA3OSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTMxMDg3LCAxMzEwOTIsIDEzMTA5NywgMTMxMTAyLCAxMzExMDcsIDEzMTExMiwgMTMxMTE3LCAKKyAgICAxMzExMjIsIDEzMTEyNywgMTMxMTMyLCAxMzExMzcsIDEzMTE0MiwgMTMxMTQ3LCAxMzExNTIsIDEzMTE1NywgMTMxMTYyLCAKKyAgICAxMzExNjcsIDEzMTE3MiwgMTMxMTc3LCAxMzExODIsIDEzMTE4NywgMTMxMTkyLCAxMzExOTcsIDEzMTIwMiwgMTMxMjA3LCAKKyAgICAxMzEyMTIsIDEzMTIxNywgMTMxMjIyLCAxMzEyMjcsIDEzMTIzMiwgMTMxMjM3LCAxMzEyNDIsIDEzMTI0NywgMTMxMjUyLCAKKyAgICAxMzEyNTcsIDEzMTI2MiwgMTMxMjY3LCAxMzEyNzIsIDEzMTI3NywgMTMxMjgyLCAxMzEyODcsIDEzMTI5MiwgMTMxMjk3LCAKKyAgICAxMzEzMDIsIDEzMTMwNywgMTMxMzEyLCAxMzEzMTcsIDEzMTMyMiwgMTMxMzI3LCAxMzEzMzQsIDEzMTM0MSwgMTMxMzQ4LCAKKyAgICAxMzEzNTUsIDEzMTM2MiwgMTMxMzY5LCAxMzEzNzYsIDEzMTM4MywgMTMxMzkyLCAxMzEzOTksIDEzMTQwNiwgMTMxNDEzLCAKKyAgICAxMzE0MjAsIDEzMTQyNywgMTMxNDM0LCAxMzE0NDEsIDEzMTQ0OCwgMTMxNDU1LCAxMzE0NjIsIDEzMTQ2OSwgMTMxNDc0LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzE0ODMsIDEzMTQ4OCwgMTMxNDkyLCAxMzE0OTYsIDEzMTUwMCwgCisgICAgMTMxNTA0LCAxMzE1MDgsIDEzMTUxMiwgMTMxNTE3LCAxMzE1MjEsIDAsIDEzMTUyNiwgMTMxNTMxLCAxMzE1MzYsIAorICAgIDEzMTU0MywgMTMxNTQ4LCAxMzE1NTUsIDEzMTU2MiwgMCwgMTMxNTY3LCAxMzE1NzQsIDEzMTU3OSwgMTMxNTg0LCAKKyAgICAxMzE1OTEsIDEzMTU5OCwgMTMxNjAzLCAxMzE2MDgsIDEzMTYxMywgMTMxNjE4LCAxMzE2MjMsIDEzMTYzMCwgMTMxNjM3LCAKKyAgICAxMzE2NDIsIDEzMTY0NywgMTMxNjUyLCAxMzE2NjUsIDEzMTY3NCwgMTMxNjgxLCAxMzE2OTAsIDEzMTY5OSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTMxNzA4LCAxMzE3MTUsIDEzMTcyMiwgMTMxNzI5LCAxMzE3MzYsIDEzMTc0MywgMTMxNzUwLCAxMzE3NTcsIAorICAgIDEzMTc2NCwgMTMxNzcxLCAxMzE3NzgsIDEzMTc4NSwgMTMxNzkyLCAxMzE3OTksIDEzMTgwNiwgMTMxODEzLCAxMzE4MjAsIAorICAgIDEzMTgyNywgMTMxODM0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzE4NDEsIAorICAgIDEzMTg0NCwgMTMxODQ4LCAxMzE4NTIsIDEzMTg1NiwgMTMxODU5LCAxMzE4NjMsIDEzMTg2OCwgMTMxODcyLCAxMzE4NzYsIAorICAgIDEzMTg4MCwgMTMxODg0LCAxMzE4ODgsIDEzMTg5MywgMTMxODk4LCAxMzE5MDIsIDEzMTkwNiwgMTMxOTA5LCAxMzE5MTMsIAorICAgIDEzMTkxOCwgMTMxOTIzLCAxMzE5MjcsIDEzMTkzMSwgMTMxOTM0LCAxMzE5MzgsIDEzMTk0MiwgMTMxOTQ2LCAxMzE5NTAsIAorICAgIDEzMTk1NCwgMTMxOTU4LCAxMzE5NjIsIDEzMTk2NSwgMTMxOTY5LCAxMzE5NzMsIDEzMTk3NywgMTMxOTgxLCAxMzE5ODUsIAorICAgIDEzMTk4OSwgMTMxOTk1LCAxMzE5OTgsIDEzMjAwMiwgMTMyMDA2LCAxMzIwMTAsIDEzMjAxNCwgMTMyMDE4LCAxMzIwMjIsIAorICAgIDEzMjAyNiwgMTMyMDMwLCAxMzIwMzQsIDEzMjAzOSwgMTMyMDQ0LCAxMzIwNTAsIDEzMjA1NCwgMTMyMDU4LCAxMzIwNjIsIAorICAgIDEzMjA2NiwgMTMyMDcwLCAxMzIwNzQsIDEzMjA3OSwgMTMyMDgzLCAxMzIwODcsIDEzMjA5MSwgMTMyMDk1LCAxMzIwOTksIAorICAgIDEzMjEwNSwgMTMyMTA5LCAxMzIxMTMsIDEzMjExNywgMTMyMTIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMzIxMjUsIDEzMjEyOSwgMTMyMTMzLCAxMzIxMzksIDEzMjE0NSwgMTMyMTQ5LCAxMzIxNTQsIDEzMjE1OSwgMTMyMTY0LCAKKyAgICAxMzIxNjksIDEzMjE3MywgMTMyMTc4LCAxMzIxODMsIDEzMjE4OCwgMTMyMTkyLCAxMzIxOTcsIDEzMjIwMiwgMTMyMjA3LCAKKyAgICAxMzIyMTEsIDEzMjIxNiwgMTMyMjIxLCAxMzIyMjYsIDEzMjIzMSwgMTMyMjM2LCAxMzIyNDEsIDEzMjI0NiwgMTMyMjUxLCAKKyAgICAxMzIyNTUsIDEzMjI2MCwgMTMyMjY1LCAxMzIyNzAsIDEzMjI3NSwgMTMyMjgwLCAxMzIyODUsIDEzMjI5MCwgMTMyMjk1LCAKKyAgICAxMzIzMDAsIDEzMjMwNSwgMTMyMzEwLCAxMzIzMTcsIDEzMjMyMiwgMTMyMzI5LCAxMzIzMzQsIDEzMjMzOSwgMTMyMzQ0LCAKKyAgICAxMzIzNDksIDEzMjM1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMyMzU5LCAKKyAgICAxMzIzNjMsIDEzMjM2OSwgMTMyMzcyLCAxMzIzNzUsIDEzMjM3OSwgMTMyMzgzLCAxMzIzODcsIDEzMjM5MSwgMTMyMzk1LCAKKyAgICAxMzIzOTksIDEzMjQwMywgMTMyNDA5LCAxMzI0MTUsIDEzMjQyMSwgMTMyNDI3LCAxMzI0MzMsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyOTM0NCwgMTI5MzQ3LCAxMjkzNTEsIAotICAgIDEyOTM1NSwgMTI5MzU5LCAxMjkzNjIsIDEyOTM2NiwgMTI5MzcxLCAxMjkzNzUsIDEyOTM3OSwgMTI5MzgzLCAxMjkzODcsIAotICAgIDEyOTM5MSwgMTI5Mzk2LCAxMjk0MDEsIDEyOTQwNSwgMTI5NDA5LCAxMjk0MTMsIDEyOTQxNywgMTI5NDIyLCAxMjk0MjgsIAotICAgIDEyOTQzMiwgMTI5NDM2LCAxMjk0NDAsIDEyOTQ0NCwgMTI5NDQ4LCAxMjk0NTIsIDEyOTQ1NiwgMTI5NDYwLCAxMjk0NjQsIAotICAgIDEyOTQ2OCwgMTI5NDcxLCAxMjk0NzUsIDEyOTQ3OSwgMTI5NDgzLCAxMjk0ODcsIDEyOTQ5MSwgMTI5NDk1LCAxMjk1MDEsIAotICAgIDEyOTUwNCwgMTI5NTA4LCAxMjk1MTIsIDEyOTUxNiwgMTI5NTIwLCAxMjk1MjQsIDEyOTUyOCwgMTI5NTMyLCAxMjk1MzYsIAotICAgIDEyOTU0MCwgMTI5NTQ1LCAxMjk1NTAsIDEyOTU1NiwgMTI5NTYwLCAxMjk1NjQsIDEyOTU2OCwgMTI5NTcyLCAxMjk1NzYsIAotICAgIDEyOTU4MCwgMTI5NTg1LCAxMjk1ODksIDEyOTU5MywgMTI5NTk3LCAxMjk2MDEsIDEyOTYwNSwgMTI5NjExLCAxMjk2MTUsIAotICAgIDEyOTYxOSwgMTI5NjIzLCAxMjk2MjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyOTYzMSwgMTI5NjM1LCAKLSAgICAxMjk2MzksIDEyOTY0NSwgMTI5NjUxLCAxMjk2NTUsIDEyOTY2MCwgMTI5NjY1LCAxMjk2NzAsIDEyOTY3NSwgMTI5Njc5LCAKLSAgICAxMjk2ODQsIDEyOTY4OSwgMTI5Njk0LCAxMjk2OTgsIDEyOTcwMywgMTI5NzA4LCAxMjk3MTMsIDEyOTcxNywgMTI5NzIyLCAKLSAgICAxMjk3MjcsIDEyOTczMiwgMTI5NzM3LCAxMjk3NDIsIDEyOTc0NywgMTI5NzUyLCAxMjk3NTcsIDEyOTc2MSwgMTI5NzY2LCAKLSAgICAxMjk3NzEsIDEyOTc3NiwgMTI5NzgxLCAxMjk3ODYsIDEyOTc5MSwgMTI5Nzk2LCAxMjk4MDEsIDEyOTgwNiwgMTI5ODExLCAKLSAgICAxMjk4MTYsIDEyOTgyMywgMTI5ODI4LCAxMjk4MzUsIDEyOTg0MCwgMTI5ODQ1LCAxMjk4NTAsIDEyOTg1NSwgMTI5ODYwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjk4NjUsIDEyOTg2OSwgMTI5ODc1LCAKLSAgICAxMjk4NzgsIDEyOTg4MSwgMTI5ODg1LCAxMjk4ODksIDEyOTg5MywgMTI5ODk3LCAxMjk5MDEsIDEyOTkwNSwgMTI5OTA5LCAKLSAgICAxMjk5MTUsIDEyOTkyMSwgMTI5OTI3LCAxMjk5MzMsIDEyOTkzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMyNDM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzI0NDMsIDEzMjQ0NiwgCisgICAgMTMyNDQ5LCAxMzI0NTIsIDEzMjQ1NSwgMTMyNDU4LCAxMzI0NjEsIDEzMjQ2NCwgMTMyNDY3LCAxMzI0NzAsIDEzMjQ3MywgCisgICAgMTMyNDc2LCAxMzI0NzksIDEzMjQ4MiwgMTMyNDg1LCAxMzI0ODgsIDEzMjQ5MSwgMTMyNDk0LCAxMzI0OTcsIDEzMjUwMCwgCisgICAgMTMyNTAzLCAxMzI1MDYsIDEzMjUwOSwgMTMyNTEyLCAxMzI1MTUsIDEzMjUxOCwgMTMyNTIxLCAxMzI1MjQsIDEzMjUyNywgCisgICAgMTMyNTMwLCAxMzI1MzMsIDEzMjUzNiwgMTMyNTM5LCAxMzI1NDIsIDEzMjU0NSwgMTMyNTQ4LCAxMzI1NTEsIDEzMjU1NCwgCisgICAgMTMyNTU3LCAxMzI1NjAsIDEzMjU2MywgMTMyNTY2LCAxMzI1NjksIDEzMjU3MiwgMTMyNTc1LCAxMzI1NzgsIDEzMjU4MSwgCisgICAgMTMyNTg0LCAxMzI1ODcsIDEzMjU5MCwgMTMyNTkzLCAxMzI1OTYsIDEzMjU5OSwgMTMyNjAyLCAxMzI2MDUsIDEzMjYwOCwgCisgICAgMTMyNjExLCAxMzI2MTQsIDEzMjYxNywgMTMyNjIwLCAxMzI2MjMsIDEzMjYyNiwgMTMyNjI5LCAxMzI2MzIsIDEzMjYzNSwgCisgICAgMTMyNjM4LCAxMzI2NDEsIDEzMjY0NCwgMTMyNjQ3LCAxMzI2NTAsIDEzMjY1MywgMTMyNjU2LCAxMzI2NTksIDEzMjY2MiwgCisgICAgMTMyNjY1LCAxMzI2NjgsIDEzMjY3MSwgMTMyNjc0LCAxMzI2NzcsIDEzMjY4MCwgMTMyNjgzLCAxMzI2ODYsIDEzMjY4OSwgCisgICAgMTMyNjkyLCAxMzI2OTUsIDEzMjY5OCwgMTMyNzAxLCAxMzI3MDQsIDEzMjcwNywgMTMyNzEwLCAxMzI3MTMsIDEzMjcxNiwgCisgICAgMTMyNzE5LCAxMzI3MjIsIDEzMjcyNSwgMTMyNzI4LCAxMzI3MzEsIDEzMjczNCwgMTMyNzM3LCAxMzI3NDAsIDEzMjc0MywgCisgICAgMTMyNzQ2LCAxMzI3NDksIDEzMjc1MiwgMTMyNzU1LCAxMzI3NTgsIDEzMjc2MSwgMTMyNzY0LCAxMzI3NjcsIDEzMjc3MCwgCisgICAgMTMyNzczLCAxMzI3NzYsIDEzMjc3OSwgMTMyNzgyLCAxMzI3ODUsIDEzMjc4OCwgMTMyNzkxLCAxMzI3OTQsIDEzMjc5NywgCisgICAgMTMyODAwLCAxMzI4MDMsIDEzMjgwNiwgMTMyODA5LCAxMzI4MTIsIDEzMjgxNSwgMTMyODE4LCAxMzI4MjEsIDEzMjgyNCwgCisgICAgMTMyODI3LCAxMzI4MzAsIDEzMjgzMywgMTMyODM2LCAxMzI4MzksIDEzMjg0MiwgMTMyODQ1LCAxMzI4NDgsIDEzMjg1MSwgCisgICAgMTMyODU0LCAxMzI4NTcsIDEzMjg2MCwgMTMyODYzLCAxMzI4NjYsIDEzMjg2OSwgMTMyODcyLCAxMzI4NzUsIDEzMjg3OCwgCisgICAgMTMyODgxLCAxMzI4ODQsIDEzMjg4NywgMTMyODkwLCAxMzI4OTMsIDEzMjg5NiwgMTMyODk5LCAxMzI5MDIsIDEzMjkwNSwgCisgICAgMTMyOTA4LCAxMzI5MTEsIDEzMjkxNCwgMTMyOTE3LCAxMzI5MjAsIDEzMjkyMywgMTMyOTI2LCAxMzI5MjksIDEzMjkzMiwgCisgICAgMTMyOTM1LCAxMzI5MzgsIDEzMjk0MSwgMTMyOTQ0LCAxMzI5NDcsIDEzMjk1MCwgMTMyOTUzLCAxMzI5NTYsIDEzMjk1OSwgCisgICAgMTMyOTYyLCAxMzI5NjUsIDEzMjk2OCwgMTMyOTcxLCAxMzI5NzQsIDEzMjk3NywgMTMyOTgwLCAxMzI5ODMsIDEzMjk4NiwgCisgICAgMTMyOTg5LCAxMzI5OTIsIDEzMjk5NSwgMTMyOTk4LCAxMzMwMDEsIDEzMzAwNCwgMTMzMDA3LCAxMzMwMTAsIDEzMzAxMywgCisgICAgMTMzMDE2LCAxMzMwMTksIDEzMzAyMiwgMTMzMDI1LCAxMzMwMjgsIDEzMzAzMSwgMTMzMDM0LCAxMzMwMzcsIDEzMzA0MCwgCisgICAgMTMzMDQzLCAxMzMwNDYsIDEzMzA0OSwgMTMzMDUyLCAxMzMwNTUsIDEzMzA1OCwgMTMzMDYxLCAxMzMwNjQsIDEzMzA2NywgCisgICAgMTMzMDcwLCAxMzMwNzMsIDEzMzA3NiwgMTMzMDc5LCAxMzMwODIsIDEzMzA4NSwgMTMzMDg4LCAxMzMwOTEsIDEzMzA5NCwgCisgICAgMTMzMDk3LCAxMzMxMDAsIDEzMzEwMywgMTMzMTA2LCAxMzMxMDksIDEzMzExMiwgMTMzMTE1LCAxMzMxMTgsIDEzMzEyMSwgCisgICAgMTMzMTI0LCAxMzMxMjcsIDEzMzEzMCwgMTMzMTMzLCAxMzMxMzYsIDEzMzEzOSwgMTMzMTQyLCAxMzMxNDUsIDEzMzE0OCwgCisgICAgMTMzMTUxLCAxMzMxNTQsIDEzMzE1NywgMTMzMTYwLCAxMzMxNjMsIDEzMzE2NiwgMTMzMTY5LCAxMzMxNzIsIDEzMzE3NSwgCisgICAgMTMzMTc4LCAxMzMxODEsIDEzMzE4NCwgMTMzMTg3LCAxMzMxOTAsIDEzMzE5MywgMTMzMTk2LCAxMzMxOTksIDEzMzIwMiwgCisgICAgMTMzMjA1LCAxMzMyMDgsIDEzMzIxMSwgMTMzMjE0LCAxMzMyMTcsIDEzMzIyMCwgMTMzMjIzLCAxMzMyMjYsIDEzMzIyOSwgCisgICAgMTMzMjMyLCAxMzMyMzUsIDEzMzIzOCwgMTMzMjQxLCAxMzMyNDQsIDEzMzI0NywgMTMzMjUwLCAxMzMyNTMsIDEzMzI1NiwgCisgICAgMTMzMjU5LCAxMzMyNjIsIDEzMzI2NSwgMTMzMjY4LCAxMzMyNzEsIDEzMzI3NCwgMTMzMjc3LCAxMzMyODAsIDEzMzI4MywgCisgICAgMTMzMjg2LCAxMzMyODksIDEzMzI5MiwgMTMzMjk1LCAxMzMyOTgsIDEzMzMwMSwgMTMzMzA0LCAxMzMzMDcsIDEzMzMxMCwgCisgICAgMTMzMzEzLCAxMzMzMTYsIDEzMzMxOSwgMTMzMzIyLCAxMzMzMjUsIDEzMzMyOCwgMTMzMzMxLCAxMzMzMzQsIDEzMzMzNywgCisgICAgMTMzMzQwLCAxMzMzNDMsIDEzMzM0NiwgMTMzMzQ5LCAxMzMzNTIsIDEzMzM1NSwgMTMzMzU4LCAxMzMzNjEsIDEzMzM2NCwgCisgICAgMTMzMzY3LCAxMzMzNzAsIDEzMzM3MywgMTMzMzc2LCAxMzMzNzksIDEzMzM4MiwgMTMzMzg1LCAxMzMzODgsIDEzMzM5MSwgCisgICAgMTMzMzk0LCAxMzMzOTcsIDEzMzQwMCwgMTMzNDAzLCAxMzM0MDYsIDEzMzQwOSwgMTMzNDEyLCAxMzM0MTUsIDEzMzQxOCwgCisgICAgMTMzNDIxLCAxMzM0MjQsIDEzMzQyNywgMTMzNDMwLCAxMzM0MzMsIDEzMzQzNiwgMTMzNDM5LCAxMzM0NDIsIDEzMzQ0NSwgCisgICAgMTMzNDQ4LCAxMzM0NTEsIDEzMzQ1NCwgMTMzNDU3LCAxMzM0NjAsIDEzMzQ2MywgMTMzNDY2LCAxMzM0NjksIDEzMzQ3MiwgCisgICAgMTMzNDc1LCAxMzM0NzgsIDEzMzQ4MSwgMTMzNDg0LCAxMzM0ODcsIDEzMzQ5MCwgMTMzNDkzLCAxMzM0OTYsIDEzMzQ5OSwgCisgICAgMTMzNTAyLCAxMzM1MDUsIDEzMzUwOCwgMTMzNTExLCAxMzM1MTQsIDEzMzUxNywgMTMzNTIwLCAxMzM1MjMsIDEzMzUyNiwgCisgICAgMTMzNTI5LCAxMzM1MzIsIDEzMzUzNSwgMTMzNTM4LCAxMzM1NDEsIDEzMzU0NCwgMTMzNTQ3LCAxMzM1NTAsIDEzMzU1MywgCisgICAgMTMzNTU2LCAxMzM1NTksIDEzMzU2MiwgMTMzNTY1LCAxMzM1NjgsIDEzMzU3MSwgMTMzNTc0LCAxMzM1NzcsIDEzMzU4MCwgCisgICAgMTMzNTgzLCAxMzM1ODYsIDEzMzU4OSwgMTMzNTkyLCAxMzM1OTUsIDEzMzU5OCwgMTMzNjAxLCAxMzM2MDQsIDEzMzYwNywgCisgICAgMTMzNjEwLCAxMzM2MTMsIDEzMzYxNiwgMTMzNjE5LCAxMzM2MjIsIDEzMzYyNSwgMTMzNjI4LCAxMzM2MzEsIDEzMzYzNCwgCisgICAgMTMzNjM3LCAxMzM2NDAsIDEzMzY0MywgMTMzNjQ2LCAxMzM2NDksIDEzMzY1MiwgMTMzNjU1LCAxMzM2NTgsIDEzMzY2MSwgCisgICAgMTMzNjY0LCAxMzM2NjcsIDEzMzY3MCwgMTMzNjczLCAxMzM2NzYsIDEzMzY3OSwgMTMzNjgyLCAxMzM2ODUsIDEzMzY4OCwgCisgICAgMTMzNjkxLCAxMzM2OTQsIDEzMzY5NywgMTMzNzAwLCAxMzM3MDMsIDEzMzcwNiwgMTMzNzA5LCAxMzM3MTIsIDEzMzcxNSwgCisgICAgMTMzNzE4LCAxMzM3MjEsIDEzMzcyNCwgMTMzNzI3LCAxMzM3MzAsIDEzMzczMywgMTMzNzM2LCAxMzM3MzksIDEzMzc0MiwgCisgICAgMTMzNzQ1LCAxMzM3NDgsIDEzMzc1MSwgMTMzNzU0LCAxMzM3NTcsIDEzMzc2MCwgMTMzNzYzLCAxMzM3NjYsIDEzMzc2OSwgCisgICAgMTMzNzcyLCAxMzM3NzUsIDEzMzc3OCwgMTMzNzgxLCAxMzM3ODQsIDEzMzc4NywgMTMzNzkwLCAxMzM3OTMsIDEzMzc5NiwgCisgICAgMTMzNzk5LCAxMzM4MDIsIDEzMzgwNSwgMTMzODA4LCAxMzM4MTEsIDEzMzgxNCwgMTMzODE3LCAxMzM4MjAsIDEzMzgyMywgCisgICAgMTMzODI2LCAxMzM4MjksIDEzMzgzMiwgMTMzODM1LCAxMzM4MzgsIDEzMzg0MSwgMTMzODQ0LCAxMzM4NDcsIDEzMzg1MCwgCisgICAgMTMzODUzLCAxMzM4NTYsIDEzMzg1OSwgMTMzODYyLCAxMzM4NjUsIDEzMzg2OCwgMTMzODcxLCAxMzM4NzQsIDEzMzg3NywgCisgICAgMTMzODgwLCAxMzM4ODMsIDEzMzg4NiwgMTMzODg5LCAxMzM4OTIsIDEzMzg5NSwgMTMzODk4LCAxMzM5MDEsIDEzMzkwNCwgCisgICAgMTMzOTA3LCAxMzM5MTAsIDEzMzkxMywgMTMzOTE2LCAxMzM5MTksIDEzMzkyMiwgMTMzOTI1LCAxMzM5MjgsIDEzMzkzMSwgCisgICAgMTMzOTM0LCAxMzM5MzcsIDEzMzk0MCwgMTMzOTQzLCAxMzM5NDYsIDEzMzk0OSwgMTMzOTUyLCAxMzM5NTUsIDEzMzk1OCwgCisgICAgMTMzOTYxLCAxMzM5NjQsIDEzMzk2NywgMTMzOTcwLCAxMzM5NzMsIDEzMzk3NiwgMTMzOTc5LCAxMzM5ODIsIDEzMzk4NSwgCisgICAgMTMzOTg4LCAxMzM5OTEsIDEzMzk5NCwgMTMzOTk3LCAxMzQwMDAsIDEzNDAwMywgMTM0MDA2LCAxMzQwMDksIDEzNDAxMiwgCisgICAgMTM0MDE1LCAxMzQwMTgsIDEzNDAyMSwgMTM0MDI0LCAxMzQwMjcsIDEzNDAzMCwgMTM0MDMzLCAxMzQwMzYsIDEzNDAzOSwgCisgICAgMTM0MDQyLCAxMzQwNDUsIDEzNDA0OCwgMTM0MDUxLCAxMzQwNTQsIDEzNDA1NywgMTM0MDYwLCAxMzQwNjMsIDEzNDA2NiwgCisgICAgMTM0MDY5LCAxMzQwNzIsIDEzNDA3NSwgMTM0MDc4LCAxMzQwODEsIDEzNDA4NCwgMTM0MDg3LCAxMzQwOTAsIDEzNDA5MywgCisgICAgMTM0MDk2LCAxMzQwOTksIDEzNDEwMiwgMTM0MTA1LCAxMzQxMDgsIDEzNDExMSwgMTM0MTE0LCAxMzQxMTcsIDEzNDEyMCwgCisgICAgMTM0MTIzLCAxMzQxMjYsIDEzNDEyOSwgMTM0MTMyLCAxMzQxMzUsIDEzNDEzOCwgMTM0MTQxLCAxMzQxNDQsIDEzNDE0NywgCisgICAgMTM0MTUwLCAxMzQxNTMsIDEzNDE1NiwgMTM0MTU5LCAxMzQxNjIsIDEzNDE2NSwgMTM0MTY4LCAxMzQxNzEsIDEzNDE3NCwgCisgICAgMTM0MTc3LCAxMzQxODAsIDEzNDE4MywgMTM0MTg2LCAxMzQxODksIDEzNDE5MiwgMTM0MTk1LCAxMzQxOTgsIDEzNDIwMSwgCisgICAgMTM0MjA0LCAxMzQyMDcsIDEzNDIxMCwgMTM0MjEzLCAxMzQyMTYsIDEzNDIxOSwgMTM0MjIyLCAxMzQyMjUsIDEzNDIyOCwgCisgICAgMTM0MjMxLCAxMzQyMzQsIDEzNDIzNywgMTM0MjQwLCAxMzQyNDMsIDEzNDI0NiwgMTM0MjQ5LCAxMzQyNTIsIDEzNDI1NSwgCisgICAgMTM0MjU4LCAxMzQyNjEsIDEzNDI2NCwgMTM0MjY3LCAxMzQyNzAsIDEzNDI3MywgMTM0Mjc2LCAxMzQyNzksIDEzNDI4MiwgCisgICAgMTM0Mjg1LCAxMzQyODgsIDEzNDI5MSwgMTM0Mjk0LCAxMzQyOTcsIDEzNDMwMCwgMTM0MzAzLCAxMzQzMDYsIDEzNDMwOSwgCisgICAgMTM0MzEyLCAxMzQzMTUsIDEzNDMxOCwgMTM0MzIxLCAxMzQzMjQsIDEzNDMyNywgMTM0MzMwLCAxMzQzMzMsIDEzNDMzNiwgCisgICAgMTM0MzM5LCAxMzQzNDIsIDEzNDM0NSwgMTM0MzQ4LCAxMzQzNTEsIDEzNDM1NCwgMTM0MzU3LCAxMzQzNjAsIDEzNDM2MywgCisgICAgMTM0MzY2LCAxMzQzNjksIDEzNDM3MiwgMTM0Mzc1LCAxMzQzNzgsIDEzNDM4MSwgMTM0Mzg0LCAxMzQzODcsIDEzNDM5MCwgCisgICAgMTM0MzkzLCAxMzQzOTYsIDEzNDM5OSwgMTM0NDAyLCAxMzQ0MDUsIDEzNDQwOCwgMTM0NDExLCAxMzQ0MTQsIDEzNDQxNywgCisgICAgMTM0NDIwLCAxMzQ0MjMsIDEzNDQyNiwgMTM0NDI5LCAxMzQ0MzIsIDEzNDQzNSwgMTM0NDM4LCAxMzQ0NDEsIDEzNDQ0NCwgCisgICAgMTM0NDQ3LCAxMzQ0NTAsIDEzNDQ1MywgMTM0NDU2LCAxMzQ0NTksIDEzNDQ2MiwgMTM0NDY1LCAxMzQ0NjgsIDEzNDQ3MSwgCisgICAgMTM0NDc0LCAxMzQ0NzcsIDEzNDQ4MCwgMTM0NDgzLCAxMzQ0ODYsIDEzNDQ4OSwgMTM0NDkyLCAxMzQ0OTUsIDEzNDQ5OCwgCisgICAgMTM0NTAxLCAxMzQ1MDQsIDEzNDUwNywgMTM0NTEwLCAxMzQ1MTMsIDEzNDUxNiwgMTM0NTE5LCAxMzQ1MjIsIDEzNDUyNSwgCisgICAgMTM0NTI4LCAxMzQ1MzEsIDEzNDUzNCwgMTM0NTM3LCAxMzQ1NDAsIDEzNDU0MywgMTM0NTQ2LCAxMzQ1NDksIDEzNDU1MiwgCisgICAgMTM0NTU1LCAxMzQ1NTgsIDEzNDU2MSwgMTM0NTY0LCAxMzQ1NjcsIDEzNDU3MCwgMTM0NTczLCAxMzQ1NzYsIDEzNDU3OSwgCisgICAgMTM0NTgyLCAxMzQ1ODUsIDEzNDU4OCwgMTM0NTkxLCAxMzQ1OTQsIDEzNDU5NywgMTM0NjAwLCAxMzQ2MDMsIDEzNDYwNiwgCisgICAgMTM0NjA5LCAxMzQ2MTIsIDEzNDYxNSwgMTM0NjE4LCAxMzQ2MjEsIDEzNDYyNCwgMTM0NjI3LCAxMzQ2MzAsIDEzNDYzMywgCisgICAgMTM0NjM2LCAxMzQ2MzksIDEzNDY0MiwgMTM0NjQ1LCAxMzQ2NDgsIDEzNDY1MSwgMTM0NjU0LCAxMzQ2NTcsIDEzNDY2MCwgCisgICAgMTM0NjYzLCAxMzQ2NjYsIDEzNDY2OSwgMTM0NjcyLCAxMzQ2NzUsIDEzNDY3OCwgMTM0NjgxLCAxMzQ2ODQsIDEzNDY4NywgCisgICAgMTM0NjkwLCAxMzQ2OTMsIDEzNDY5NiwgMTM0Njk5LCAxMzQ3MDIsIDEzNDcwNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTM0NzA4LCAxMzQ3MTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyOTk0NSwgMTI5OTUwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKQEAgLTE5NDI2LDY1MCArMjA2NjgsNjgzIEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTM0NzE5LCAxMzQ3MjMsIDEzNDcyNywgMTM0NzMxLCAxMzQ3MzUsIDEzNDczOSwgMTM0NzQzLCAxMzQ3NDYsIDEzNDc1MCwgCisgICAgMTM0NzU0LCAxMzQ3NTgsIDEzNDc2MiwgMTM0NzY1LCAxMzQ3NzEsIDEzNDc3NywgMTM0NzgzLCAxMzQ3ODksIDEzNDc5NSwgCisgICAgMTM0Nzk5LCAxMzQ4MDUsIDEzNDgwOSwgMTM0ODEzLCAxMzQ4MTksIDEzNDgyMywgMTM0ODI3LCAxMzQ4MzEsIDEzNDgzNSwgCisgICAgMTM0ODM5LCAxMzQ4NDMsIDEzNDg0NywgMTM0ODUzLCAxMzQ4NTksIDEzNDg2NSwgMTM0ODcxLCAxMzQ4NzgsIDEzNDg4NSwgCisgICAgMTM0ODkyLCAxMzQ5MDIsIDEzNDkwOSwgMTM0OTE2LCAxMzQ5MjIsIDEzNDkyOCwgMTM0OTM0LCAxMzQ5NDAsIDEzNDk0OCwgCisgICAgMTM0OTU2LCAxMzQ5NjQsIDEzNDk3MiwgMTM0OTgxLCAxMzQ5ODcsIDEzNDk5NSwgMTM1MDAxLCAxMzUwMDgsIDEzNTAxNCwgCisgICAgMTM1MDIxLCAxMzUwMjcsIDEzNTAzNSwgMTM1MDM5LCAxMzUwNDMsIDEzNTA0OCwgMTM1MDU0LCAxMzUwNjAsIDEzNTA2OCwgCisgICAgMTM1MDc2LCAxMzUwODIsIDEzNTA4OSwgMTM1MDkyLCAxMzUwOTgsIDEzNTEwMiwgMTM1MTA1LCAxMzUxMDksIDEzNTExMiwgCisgICAgMTM1MTE1LCAxMzUxMTksIDEzNTEyNCwgMTM1MTI4LCAxMzUxMzIsIDEzNTEzOCwgMTM1MTQzLCAxMzUxNDksIDEzNTE1MywgCisgICAgMTM1MTU3LCAxMzUxNjAsIDEzNTE2NCwgMTM1MTY4LCAxMzUxNzMsIDEzNTE3NywgMTM1MTgyLCAxMzUxODYsIDEzNTE5MSwgCisgICAgMTM1MTk1LCAxMzUxOTksIDEzNTIwMywgMTM1MjA3LCAxMzUyMTEsIDEzNTIxNSwgMTM1MjE5LCAxMzUyMjMsIDEzNTIyOCwgCisgICAgMTM1MjMzLCAxMzUyMzgsIDEzNTI0MywgMTM1MjQ5LCAxMzUyNTUsIDEzNTI2MSwgMTM1MjY3LCAxMzUyNzMsIDAsIDAsIDAsIAorICAgIDAsIDAsIDEzNTI3OCwgMTM1Mjg2LCAxMzUyOTUsIDEzNTMwMywgMTM1MzEwLCAxMzUzMTgsIDEzNTMyNSwgMTM1MzMyLCAKKyAgICAxMzUzNDEsIDEzNTM0OCwgMTM1MzU1LCAxMzUzNjIsIDEzNTM3MCwgMCwgMCwgMCwgMTM1Mzc4LCAxMzUzODMsIDEzNTM5MCwgCisgICAgMTM1Mzk2LCAxMzU0MDMsIDEzNTQwOSwgMTM1NDE1LCAxMzU0MjEsIDEzNTQyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTM1NDMzLCAxMzU0MzgsIDEzNTQ0NSwgMTM1NDUxLCAxMzU0NTgsIDEzNTQ2NCwgMTM1NDcwLCAxMzU0NzYsIDEzNTQ4MiwgCisgICAgMTM1NDg4LCAwLCAwLCAxMzU0OTMsIDEzNTQ5OSwgMTM1NTA1LCAxMzU1MDgsIDEzNTUxNywgMTM1NTI0LCAxMzU1MzIsIAorICAgIDEzNTUzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI5OTU2LCAxMjk5NjAsIDEyOTk2NCwgMTI5OTY4LCAxMjk5NzIsIDEyOTk3NiwgCi0gICAgMTI5OTgwLCAxMjk5ODMsIDEyOTk4NywgMTI5OTkxLCAxMjk5OTUsIDEyOTk5OSwgMTMwMDAyLCAxMzAwMDgsIDEzMDAxMywgCi0gICAgMTMwMDE5LCAxMzAwMjUsIDEzMDAzMCwgMTMwMDM0LCAxMzAwNDAsIDEzMDA0NCwgMTMwMDQ4LCAxMzAwNTQsIDEzMDA1OCwgCi0gICAgMTMwMDYyLCAxMzAwNjYsIDEzMDA3MCwgMTMwMDc0LCAxMzAwNzgsIDEzMDA4MSwgMTMwMDg3LCAxMzAwOTMsIDEzMDA5OSwgCi0gICAgMTMwMTA1LCAxMzAxMTIsIDEzMDExOSwgMTMwMTI2LCAxMzAxMzYsIDEzMDE0MywgMTMwMTUwLCAxMzAxNTUsIDEzMDE2MCwgCi0gICAgMTMwMTY1LCAxMzAxNzAsIDEzMDE3NywgMTMwMTg0LCAxMzAxOTEsIDEzMDE5OCwgMTMwMjA3LCAxMzAyMTMsIDEzMDIyMCwgCi0gICAgMTMwMjI2LCAxMzAyMzMsIDEzMDIzOSwgMTMwMjQ2LCAxMzAyNTEsIDEzMDI1OCwgMTMwMjYyLCAxMzAyNjYsIDEzMDI3MSwgCi0gICAgMTMwMjc3LCAxMzAyODMsIDEzMDI5MCwgMTMwMjk3LCAxMzAzMDMsIDEzMDMxMCwgMTMwMzEzLCAxMzAzMTksIDEzMDMyMywgCi0gICAgMTMwMzI2LCAxMzAzMzAsIDEzMDMzMywgMTMwMzM2LCAxMzAzNDAsIDEzMDM0NSwgMTMwMzQ5LCAxMzAzNTMsIDEzMDM1OSwgCi0gICAgMTMwMzY0LCAxMzAzNzAsIDEzMDM3NCwgMTMwMzc4LCAxMzAzODEsIDEzMDM4NSwgMTMwMzg5LCAxMzAzOTQsIDEzMDM5OCwgCi0gICAgMTMwNDAzLCAxMzA0MDcsIDEzMDQxMiwgMTMwNDE2LCAxMzA0MjAsIDEzMDQyNCwgMTMwNDI4LCAxMzA0MzIsIDEzMDQzNiwgCi0gICAgMTMwNDQwLCAxMzA0NDQsIDEzMDQ0OSwgMTMwNDU0LCAxMzA0NTksIDEzMDQ2NCwgMTMwNDcwLCAxMzA0NzYsIDEzMDQ4MiwgCi0gICAgMTMwNDg4LCAxMzA0OTQsIDAsIDAsIDAsIDAsIDAsIDEzMDQ5OSwgMTMwNTA3LCAxMzA1MTYsIDEzMDUyNCwgMTMwNTMxLCAKLSAgICAxMzA1MzksIDEzMDU0NiwgMTMwNTUzLCAxMzA1NjIsIDEzMDU2OSwgMTMwNTc2LCAxMzA1ODMsIDEzMDU5MSwgMCwgMCwgMCwgCi0gICAgMTMwNTk5LCAxMzA2MDQsIDEzMDYxMSwgMTMwNjE3LCAxMzA2MjQsIDEzMDYzMCwgMTMwNjM2LCAxMzA2NDIsIDEzMDY0OCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMwNjU0LCAxMzA2NTksIDEzMDY2NiwgMTMwNjcyLCAxMzA2NzksIDEzMDY4NSwgCi0gICAgMTMwNjkxLCAxMzA2OTcsIDEzMDcwMywgMTMwNzA5LCAwLCAwLCAxMzA3MTQsIDEzMDcyMCwgMTMwNzI2LCAxMzA3MjksIAotICAgIDEzMDczOCwgMTMwNzQ1LCAxMzA3NTMsIDEzMDc2MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1NTQ2LCAKKyAgICAxMzU1NTEsIDEzNTU1NiwgMTM1NTYxLCAxMzU1NjgsIDEzNTU3NSwgMTM1NTgyLCAxMzU1ODksIDEzNTU5NCwgMTM1NTk5LCAKKyAgICAxMzU2MDQsIDEzNTYwOSwgMTM1NjE2LCAxMzU2MjEsIDEzNTYyOCwgMTM1NjM1LCAxMzU2NDAsIDEzNTY0NSwgMTM1NjUwLCAKKyAgICAxMzU2NTcsIDEzNTY2MiwgMTM1NjY3LCAxMzU2NzQsIDEzNTY4MSwgMTM1Njg2LCAxMzU2OTEsIDEzNTY5NiwgMTM1NzAzLCAKKyAgICAxMzU3MTAsIDEzNTcxNywgMTM1NzIyLCAxMzU3MjcsIDEzNTczNCwgMTM1NzQxLCAxMzU3NDgsIDEzNTc1NSwgMTM1NzYwLCAKKyAgICAxMzU3NjUsIDEzNTc3MCwgMTM1Nzc3LCAxMzU3ODIsIDEzNTc4NywgMTM1NzkyLCAxMzU3OTksIDEzNTgwOCwgMTM1ODE1LCAKKyAgICAxMzU4MjAsIDEzNTgyNSwgMTM1ODMwLCAxMzU4MzUsIDEzNTg0MCwgMTM1ODQ1LCAxMzU4NTQsIDEzNTg2MSwgMTM1ODY2LCAKKyAgICAxMzU4NzMsIDEzNTg4MCwgMTM1ODg1LCAxMzU4OTAsIDEzNTg5NSwgMTM1OTAyLCAxMzU5MDcsIDEzNTkxNCwgMTM1OTIxLCAKKyAgICAxMzU5MjYsIDEzNTkzMSwgMTM1OTM2LCAxMzU5NDMsIDEzNTk1MCwgMTM1OTU1LCAxMzU5NjAsIDEzNTk2NywgMTM1OTc0LCAKKyAgICAxMzU5ODEsIDEzNTk4NiwgMTM1OTkxLCAxMzU5OTYsIDEzNjAwMSwgMTM2MDA4LCAxMzYwMTcsIDEzNjAyNiwgMTM2MDMxLCAKKyAgICAxMzYwMzgsIDEzNjA0NywgMTM2MDUyLCAxMzYwNTcsIDEzNjA2MiwgMTM2MDY3LCAxMzYwNzQsIDEzNjA4MSwgMTM2MDg4LCAKKyAgICAxMzYwOTUsIDEzNjEwMCwgMTM2MTA1LCAxMzYxMTAsIDEzNjExNywgMTM2MTI0LCAxMzYxMzEsIDEzNjEzNiwgMTM2MTQxLCAKKyAgICAxMzYxNDgsIDEzNjE1MywgMTM2MTYwLCAxMzYxNjUsIDEzNjE3MiwgMTM2MTc3LCAxMzYxODQsIDEzNjE5MSwgMTM2MTk2LCAKKyAgICAxMzYyMDEsIDEzNjIwNiwgMTM2MjExLCAxMzYyMTYsIDEzNjIyMSwgMTM2MjI2LCAxMzYyMzEsIDEzNjIzNiwgMTM2MjQzLCAKKyAgICAxMzYyNTAsIDEzNjI1NywgMTM2MjY0LCAxMzYyNzEsIDEzNjI4MCwgMTM2Mjg1LCAxMzYyOTAsIDEzNjI5NywgMTM2MzA0LCAKKyAgICAxMzYzMDksIDEzNjMxNiwgMTM2MzIzLCAxMzYzMzAsIDEzNjMzNywgMTM2MzQ0LCAxMzYzNTEsIDEzNjM1NiwgMTM2MzYxLCAKKyAgICAxMzYzNjYsIDEzNjM3MSwgMTM2Mzc2LCAxMzYzODUsIDEzNjM5NCwgMTM2NDAzLCAxMzY0MTIsIDEzNjQyMSwgMTM2NDMwLCAKKyAgICAxMzY0MzksIDEzNjQ0OCwgMTM2NDUzLCAxMzY0NjQsIDEzNjQ3NSwgMTM2NDg0LCAxMzY0ODksIDEzNjQ5NCwgMTM2NDk5LCAKKyAgICAxMzY1MDQsIDEzNjUxMywgMTM2NTIwLCAxMzY1MjcsIDEzNjUzNCwgMTM2NTQxLCAxMzY1NDgsIDEzNjU1NSwgMTM2NTY0LCAKKyAgICAxMzY1NzMsIDEzNjU4NCwgMTM2NTkzLCAxMzY2MDQsIDEzNjYxMywgMTM2NjIwLCAxMzY2MjksIDEzNjY0MCwgMTM2NjQ5LCAKKyAgICAxMzY2NTgsIDEzNjY2NywgMTM2Njc2LCAxMzY2ODMsIDEzNjY5MCwgMTM2Njk3LCAxMzY3MDYsIDEzNjcxNSwgMTM2NzI2LCAKKyAgICAxMzY3MzUsIDEzNjc0NCwgMTM2NzU1LCAxMzY3NjAsIDEzNjc2NSwgMTM2Nzc2LCAxMzY3ODQsIDEzNjc5MywgMTM2ODAyLCAKKyAgICAxMzY4MTEsIDEzNjgyMiwgMTM2ODMxLCAxMzY4NDAsIDEzNjg1MSwgMTM2ODYyLCAxMzY4NzMsIDEzNjg4NCwgMTM2ODk1LCAKKyAgICAxMzY5MDYsIDEzNjkxMywgMTM2OTIwLCAxMzY5MjcsIDEzNjkzNCwgMTM2OTQ1LCAxMzY5NTQsIDEzNjk2MSwgMTM2OTY4LCAKKyAgICAxMzY5NzUsIDEzNjk4NiwgMTM2OTk3LCAxMzcwMDgsIDEzNzAxOSwgMTM3MDMwLCAxMzcwNDEsIDEzNzA1MiwgMTM3MDYzLCAKKyAgICAxMzcwNzAsIDEzNzA3NywgMTM3MDg2LCAxMzcwOTUsIDEzNzEwMiwgMTM3MTA5LCAxMzcxMTYsIDEzNzEyNSwgMTM3MTM0LCAKKyAgICAxMzcxNDMsIDEzNzE1MCwgMTM3MTU5LCAxMzcxNjgsIDEzNzE3NywgMTM3MTg0LCAxMzcxOTEsIDEzNzE5NiwgMTM3MjAyLCAKKyAgICAxMzcyMDksIDEzNzIxNiwgMTM3MjIzLCAxMzcyMzAsIDEzNzIzNywgMTM3MjQ0LCAxMzcyNTMsIDEzNzI2MiwgMTM3MjcxLCAKKyAgICAxMzcyODAsIDEzNzI4NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM3Mjk2LCAxMzczMDIsIDEzNzMwNywgCisgICAgMTM3MzEyLCAxMzczMTksIDEzNzMyNSwgMTM3MzMxLCAxMzczMzcsIDEzNzM0MywgMTM3MzQ5LCAxMzczNTUsIDEzNzM2MSwgCisgICAgMTM3MzY1LCAxMzczNjksIDEzNzM3NSwgMTM3MzgxLCAxMzczODcsIDEzNzM5MSwgMTM3Mzk2LCAxMzc0MDEsIDEzNzQwNSwgCisgICAgMTM3NDA5LCAxMzc0MTIsIDEzNzQxOCwgMTM3NDI0LCAxMzc0MzAsIDEzNzQzNiwgMTM3NDQyLCAxMzc0NDgsIDEzNzQ1NCwgCisgICAgMTM3NDYwLCAxMzc0NjYsIDEzNzQ3NiwgMTM3NDg2LCAxMzc0OTIsIDEzNzQ5OCwgMTM3NTA4LCAxMzc1MTgsIDEzNzUyNCwgCisgICAgMCwgMCwgMTM3NTMwLCAxMzc1MzgsIDEzNzU0MywgMTM3NTQ4LCAxMzc1NTQsIDEzNzU2MCwgMTM3NTY2LCAxMzc1NzIsIAorICAgIDEzNzU3OCwgMTM3NTg0LCAxMzc1OTEsIDEzNzU5OCwgMTM3NjA0LCAxMzc2MTAsIDEzNzYxNiwgMTM3NjIyLCAxMzc2MjgsIAorICAgIDEzNzYzNCwgMTM3NjQwLCAxMzc2NDYsIDEzNzY1MSwgMTM3NjU3LCAxMzc2NjMsIDEzNzY2OSwgMTM3Njc1LCAxMzc2ODEsIAorICAgIDEzNzY5MCwgMTM3Njk2LCAxMzc3MDEsIDEzNzcwOSwgMTM3NzE2LCAxMzc3MjMsIDEzNzczMiwgMTM3NzQxLCAxMzc3NTAsIAorICAgIDEzNzc1OSwgMTM3NzY4LCAxMzc3NzcsIDEzNzc4NiwgMTM3Nzk1LCAxMzc4MDUsIDEzNzgxNSwgMTM3ODIzLCAxMzc4MzEsIAorICAgIDEzNzg0MCwgMTM3ODQ5LCAxMzc4NTUsIDEzNzg2MSwgMTM3ODY3LCAxMzc4NzMsIDEzNzg4MSwgMTM3ODg5LCAxMzc4OTMsIAorICAgIDEzNzg5OSwgMTM3OTA0LCAxMzc5MTAsIDEzNzkxNiwgMTM3OTIyLCAxMzc5MjgsIDEzNzkzNCwgMTM3OTQzLCAxMzc5NDgsIAorICAgIDEzNzk1NSwgMTM3OTYwLCAxMzc5NjUsIDEzNzk3MCwgMTM3OTc2LCAxMzc5ODIsIDEzNzk4OCwgMTM3OTk1LCAxMzgwMDAsIAorICAgIDEzODAwNSwgMTM4MDEwLCAxMzgwMTUsIDEzODAyMCwgMTM4MDI2LCAxMzgwMzIsIDEzODAzOCwgMTM4MDQ0LCAxMzgwNTAsIAorICAgIDEzODA1NiwgMTM4MDYyLCAxMzgwNjgsIDEzODA3MywgMTM4MDc4LCAxMzgwODMsIDEzODA4OCwgMTM4MDkzLCAxMzgwOTgsIAorICAgIDEzODEwMywgMTM4MTA4LCAxMzgxMTQsIDEzODEyMCwgMTM4MTI1LCAxMzgxMzAsIDEzODEzNSwgMTM4MTQwLCAxMzgxNDUsIAorICAgIDEzODE1MSwgMTM4MTU4LCAxMzgxNjIsIDEzODE2NiwgMTM4MTcwLCAxMzgxNzQsIDEzODE3OCwgMTM4MTgyLCAxMzgxODYsIAorICAgIDEzODE5MCwgMTM4MTk4LCAxMzgyMDgsIDEzODIxMiwgMTM4MjE2LCAxMzgyMjIsIDEzODIyOCwgMTM4MjM0LCAxMzgyNDAsIAorICAgIDEzODI0NiwgMTM4MjUyLCAxMzgyNTgsIDEzODI2NCwgMTM4MjcwLCAxMzgyNzYsIDEzODI4MiwgMTM4Mjg4LCAxMzgyOTQsIAorICAgIDEzODMwMCwgMTM4MzA0LCAxMzgzMDgsIDEzODMxNSwgMTM4MzIxLCAxMzgzMjcsIDEzODMzMywgMTM4MzM4LCAxMzgzNDUsIAorICAgIDEzODM1MCwgMTM4MzU2LCAxMzgzNjIsIDEzODM2OCwgMTM4Mzc0LCAxMzgzNzksIDEzODM4MywgMTM4Mzg5LCAxMzgzOTMsIAorICAgIDEzODM5NywgMTM4NDAxLCAxMzg0MDcsIDEzODQxMywgMTM4NDE3LCAxMzg0MjMsIDEzODQyOSwgMTM4NDM1LCAxMzg0NDEsIAorICAgIDEzODQ0NywgMTM4NDU1LCAxMzg0NjMsIDEzODQ2OSwgMTM4NDc1LCAxMzg0ODEsIDEzODQ4NywgMTM4NDk5LCAxMzg1MTEsIAorICAgIDEzODUyNSwgMTM4NTM3LCAxMzg1NDksIDEzODU2MywgMTM4NTc3LCAxMzg1OTEsIDEzODU5NSwgMTM4NjAzLCAxMzg2MTEsIAorICAgIDEzODYxNiwgMTM4NjIwLCAxMzg2MjQsIDEzODYyOCwgMTM4NjMyLCAxMzg2MzYsIDEzODY0MCwgMTM4NjQ0LCAxMzg2NTAsIAorICAgIDEzODY1NiwgMTM4NjYyLCAxMzg2NjgsIDEzODY3NiwgMTM4Njg1LCAxMzg2OTIsIDEzODY5OSwgMTM4NzA3LCAxMzg3MTQsIAorICAgIDEzODcyNiwgMTM4NzM4LCAxMzg3NTAsIDEzODc2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM4NzY5LCAxMzg3NzYsIDEzODc4MywgMTM4NzkwLCAxMzg3OTcsIAorICAgIDEzODgwNCwgMTM4ODExLCAxMzg4MTgsIDEzODgyNSwgMTM4ODMyLCAxMzg4MzksIDEzODg0NiwgMTM4ODUzLCAxMzg4NjAsIAorICAgIDEzODg2NywgMTM4ODc0LCAxMzg4ODEsIDEzODg4OCwgMTM4ODk1LCAxMzg5MDIsIDEzODkwOSwgMTM4OTE2LCAxMzg5MjMsIAorICAgIDEzODkzMCwgMTM4OTM3LCAxMzg5NDQsIDEzODk1MSwgMTM4OTU4LCAxMzg5NjUsIDEzODk3MiwgMTM4OTc5LCAxMzg5ODYsIAorICAgIDEzODk5MywgMTM5MDAwLCAxMzkwMDcsIDEzOTAxNCwgMTM5MDIxLCAxMzkwMjgsIDEzOTAzNSwgMTM5MDQyLCAxMzkwNDksIAorICAgIDEzOTA1NiwgMTM5MDYzLCAxMzkwNzAsIDEzOTA3NywgMTM5MDg0LCAxMzkwOTEsIDEzOTA5OCwgMTM5MTA1LCAxMzkxMTIsIAorICAgIDEzOTExOSwgMTM5MTI2LCAxMzkxMzMsIDEzOTE0MCwgMTM5MTQ3LCAxMzkxNTQsIDEzOTE2MSwgMTM5MTY4LCAxMzkxNzUsIAorICAgIDEzOTE4MiwgMTM5MTg5LCAxMzkxOTYsIDEzOTIwMywgMTM5MjEwLCAxMzkyMTcsIDEzOTIyNCwgMTM5MjMxLCAxMzkyMzYsIAorICAgIDEzOTI0MSwgMTM5MjQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxMzA3NjcsIDEzMDc3MiwgMTMwNzc3LCAxMzA3ODIsIDEzMDc4OSwgMTMwNzk2LCAxMzA4MDMsIAotICAgIDEzMDgxMCwgMTMwODE1LCAxMzA4MjAsIDEzMDgyNSwgMTMwODMwLCAxMzA4MzcsIDEzMDg0MiwgMTMwODQ5LCAxMzA4NTYsIAotICAgIDEzMDg2MSwgMTMwODY2LCAxMzA4NzEsIDEzMDg3OCwgMTMwODgzLCAxMzA4ODgsIDEzMDg5NSwgMTMwOTAyLCAxMzA5MDcsIAotICAgIDEzMDkxMiwgMTMwOTE3LCAxMzA5MjQsIDEzMDkzMSwgMTMwOTM4LCAxMzA5NDMsIDEzMDk0OCwgMTMwOTU1LCAxMzA5NjIsIAotICAgIDEzMDk2OSwgMTMwOTc2LCAxMzA5ODEsIDEzMDk4NiwgMTMwOTkxLCAxMzA5OTgsIDEzMTAwMywgMTMxMDA4LCAxMzEwMTMsIAotICAgIDEzMTAyMCwgMTMxMDI5LCAxMzEwMzYsIDEzMTA0MSwgMTMxMDQ2LCAxMzEwNTEsIDEzMTA1NiwgMTMxMDYxLCAxMzEwNjYsIAotICAgIDEzMTA3NSwgMTMxMDgyLCAxMzEwODcsIDEzMTA5NCwgMTMxMTAxLCAxMzExMDYsIDEzMTExMSwgMTMxMTE2LCAxMzExMjMsIAotICAgIDEzMTEyOCwgMTMxMTM1LCAxMzExNDIsIDEzMTE0NywgMTMxMTUyLCAxMzExNTcsIDEzMTE2NCwgMTMxMTcxLCAxMzExNzYsIAotICAgIDEzMTE4MSwgMTMxMTg4LCAxMzExOTUsIDEzMTIwMiwgMTMxMjA3LCAxMzEyMTIsIDEzMTIxNywgMTMxMjIyLCAxMzEyMjksIAotICAgIDEzMTIzOCwgMTMxMjQ3LCAxMzEyNTIsIDEzMTI1OSwgMTMxMjY4LCAxMzEyNzMsIDEzMTI3OCwgMTMxMjgzLCAxMzEyODgsIAotICAgIDEzMTI5NSwgMTMxMzAyLCAxMzEzMDksIDEzMTMxNiwgMTMxMzIxLCAxMzEzMjYsIDEzMTMzMSwgMTMxMzM4LCAxMzEzNDUsIAotICAgIDEzMTM1MiwgMTMxMzU3LCAxMzEzNjIsIDEzMTM2OSwgMTMxMzc0LCAxMzEzODEsIDEzMTM4NiwgMTMxMzkzLCAxMzEzOTgsIAotICAgIDEzMTQwNSwgMTMxNDEyLCAxMzE0MTcsIDEzMTQyMiwgMTMxNDI3LCAxMzE0MzIsIDEzMTQzNywgMTMxNDQyLCAxMzE0NDcsIAotICAgIDEzMTQ1MiwgMTMxNDU3LCAxMzE0NjQsIDEzMTQ3MSwgMTMxNDc4LCAxMzE0ODUsIDEzMTQ5MiwgMTMxNTAxLCAxMzE1MDYsIAotICAgIDEzMTUxMSwgMTMxNTE4LCAxMzE1MjUsIDEzMTUzMCwgMTMxNTM3LCAxMzE1NDQsIDEzMTU1MSwgMTMxNTU4LCAxMzE1NjUsIAotICAgIDEzMTU3MiwgMTMxNTc3LCAxMzE1ODIsIDEzMTU4NywgMTMxNTkyLCAxMzE1OTcsIDEzMTYwNiwgMTMxNjE1LCAxMzE2MjQsIAotICAgIDEzMTYzMywgMTMxNjQyLCAxMzE2NTEsIDEzMTY2MCwgMTMxNjY5LCAxMzE2NzQsIDEzMTY4NSwgMTMxNjk2LCAxMzE3MDUsIAotICAgIDEzMTcxMCwgMTMxNzE1LCAxMzE3MjAsIDEzMTcyNSwgMTMxNzM0LCAxMzE3NDEsIDEzMTc0OCwgMTMxNzU1LCAxMzE3NjIsIAotICAgIDEzMTc2OSwgMTMxNzc2LCAxMzE3ODUsIDEzMTc5NCwgMTMxODA1LCAxMzE4MTQsIDEzMTgyNSwgMTMxODM0LCAxMzE4NDEsIAotICAgIDEzMTg1MCwgMTMxODYxLCAxMzE4NzAsIDEzMTg3OSwgMTMxODg4LCAxMzE4OTcsIDEzMTkwNCwgMTMxOTExLCAxMzE5MTgsIAotICAgIDEzMTkyNywgMTMxOTM2LCAxMzE5NDcsIDEzMTk1NiwgMTMxOTY1LCAxMzE5NzYsIDEzMTk4MSwgMTMxOTg2LCAxMzE5OTcsIAotICAgIDEzMjAwNSwgMTMyMDE0LCAxMzIwMjMsIDEzMjAzMiwgMTMyMDQzLCAxMzIwNTIsIDEzMjA2MSwgMTMyMDcyLCAxMzIwODMsIAotICAgIDEzMjA5NCwgMTMyMTA1LCAxMzIxMTYsIDEzMjEyNywgMTMyMTM0LCAxMzIxNDEsIDEzMjE0OCwgMTMyMTU1LCAxMzIxNjYsIAotICAgIDEzMjE3NSwgMTMyMTgyLCAxMzIxODksIDEzMjE5NiwgMTMyMjA3LCAxMzIyMTgsIDEzMjIyOSwgMTMyMjQwLCAxMzIyNTEsIAotICAgIDEzMjI2MiwgMTMyMjczLCAxMzIyODQsIDEzMjI5MSwgMTMyMjk4LCAxMzIzMDcsIDEzMjMxNiwgMTMyMzIzLCAxMzIzMzAsIAotICAgIDEzMjMzNywgMTMyMzQ2LCAxMzIzNTUsIDEzMjM2NCwgMTMyMzcxLCAxMzIzODAsIDEzMjM4OSwgMTMyMzk4LCAxMzI0MDUsIAotICAgIDEzMjQxMiwgMTMyNDE3LCAxMzI0MjMsIDEzMjQzMCwgMTMyNDM3LCAxMzI0NDQsIDEzMjQ1MSwgMTMyNDU4LCAxMzI0NjUsIAotICAgIDEzMjQ3NCwgMTMyNDgzLCAxMzI0OTIsIDEzMjUwMSwgMTMyNTA4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMzI1MTcsIDEzMjUyMywgMTMyNTI4LCAxMzI1MzMsIDEzMjU0MCwgMTMyNTQ2LCAxMzI1NTIsIDEzMjU1OCwgMTMyNTY0LCAKLSAgICAxMzI1NzAsIDEzMjU3NiwgMTMyNTgyLCAxMzI1ODYsIDEzMjU5MCwgMTMyNTk2LCAxMzI2MDIsIDEzMjYwOCwgMTMyNjEyLCAKLSAgICAxMzI2MTcsIDEzMjYyMiwgMTMyNjI2LCAxMzI2MzAsIDEzMjYzMywgMTMyNjM5LCAxMzI2NDUsIDEzMjY1MSwgMTMyNjU3LCAKLSAgICAxMzI2NjMsIDEzMjY2OSwgMTMyNjc1LCAxMzI2ODEsIDEzMjY4NywgMTMyNjk3LCAxMzI3MDcsIDEzMjcxMywgMTMyNzE5LCAKLSAgICAxMzI3MjksIDEzMjczOSwgMTMyNzQ1LCAwLCAwLCAxMzI3NTEsIDEzMjc1OSwgMTMyNzY0LCAxMzI3NjksIDEzMjc3NSwgCi0gICAgMTMyNzgxLCAxMzI3ODcsIDEzMjc5MywgMTMyNzk5LCAxMzI4MDUsIDEzMjgxMiwgMTMyODE5LCAxMzI4MjUsIDEzMjgzMSwgCi0gICAgMTMyODM3LCAxMzI4NDMsIDEzMjg0OSwgMTMyODU1LCAxMzI4NjEsIDEzMjg2NywgMTMyODcyLCAxMzI4NzgsIDEzMjg4NCwgCi0gICAgMTMyODkwLCAxMzI4OTYsIDEzMjkwMiwgMTMyOTExLCAxMzI5MTcsIDEzMjkyMiwgMTMyOTMwLCAxMzI5MzcsIDEzMjk0NCwgCi0gICAgMTMyOTUzLCAxMzI5NjIsIDEzMjk3MSwgMTMyOTgwLCAxMzI5ODksIDEzMjk5OCwgMTMzMDA3LCAxMzMwMTYsIDEzMzAyNiwgCi0gICAgMTMzMDM2LCAxMzMwNDQsIDEzMzA1MiwgMTMzMDYxLCAxMzMwNzAsIDEzMzA3NiwgMTMzMDgyLCAxMzMwODgsIDEzMzA5NCwgCi0gICAgMTMzMTAyLCAxMzMxMTAsIDEzMzExNCwgMTMzMTIwLCAxMzMxMjUsIDEzMzEzMSwgMTMzMTM3LCAxMzMxNDMsIDEzMzE0OSwgCi0gICAgMTMzMTU1LCAxMzMxNjQsIDEzMzE2OSwgMTMzMTc2LCAxMzMxODEsIDEzMzE4NiwgMTMzMTkxLCAxMzMxOTcsIDEzMzIwMywgCi0gICAgMTMzMjA5LCAxMzMyMTYsIDEzMzIyMSwgMTMzMjI2LCAxMzMyMzEsIDEzMzIzNiwgMTMzMjQxLCAxMzMyNDcsIDEzMzI1MywgCi0gICAgMTMzMjU5LCAxMzMyNjUsIDEzMzI3MSwgMTMzMjc3LCAxMzMyODMsIDEzMzI4OSwgMTMzMjk0LCAxMzMyOTksIDEzMzMwNCwgCi0gICAgMTMzMzA5LCAxMzMzMTQsIDEzMzMxOSwgMTMzMzI0LCAxMzMzMjksIDEzMzMzNSwgMTMzMzQxLCAxMzMzNDYsIDEzMzM1MSwgCi0gICAgMTMzMzU2LCAxMzMzNjEsIDEzMzM2NiwgMTMzMzcyLCAxMzMzNzksIDEzMzM4MywgMTMzMzg3LCAxMzMzOTEsIDEzMzM5NSwgCi0gICAgMTMzMzk5LCAxMzM0MDMsIDEzMzQwNywgMTMzNDExLCAxMzM0MTksIDEzMzQyOSwgMTMzNDMzLCAxMzM0MzcsIDEzMzQ0MywgCi0gICAgMTMzNDQ5LCAxMzM0NTUsIDEzMzQ2MSwgMTMzNDY3LCAxMzM0NzMsIDEzMzQ3OSwgMTMzNDg1LCAxMzM0OTEsIDEzMzQ5NywgCi0gICAgMTMzNTAzLCAxMzM1MDksIDEzMzUxNSwgMTMzNTIxLCAxMzM1MjUsIDEzMzUyOSwgMTMzNTM2LCAxMzM1NDIsIDEzMzU0OCwgCi0gICAgMTMzNTU0LCAxMzM1NTksIDEzMzU2NiwgMTMzNTcxLCAxMzM1NzcsIDEzMzU4MywgMTMzNTg5LCAxMzM1OTUsIDEzMzYwMCwgCi0gICAgMTMzNjA0LCAxMzM2MTAsIDEzMzYxNCwgMTMzNjE4LCAxMzM2MjIsIDEzMzYyOCwgMTMzNjM0LCAxMzM2MzgsIDEzMzY0NCwgCi0gICAgMTMzNjUwLCAxMzM2NTYsIDEzMzY2MiwgMTMzNjY4LCAxMzM2NzYsIDEzMzY4NCwgMTMzNjkwLCAxMzM2OTYsIDEzMzcwMiwgCi0gICAgMTMzNzA4LCAxMzM3MjAsIDEzMzczMiwgMTMzNzQ2LCAxMzM3NTgsIDEzMzc3MCwgMTMzNzg0LCAxMzM3OTgsIDEzMzgxMiwgCi0gICAgMTMzODE2LCAxMzM4MjQsIDEzMzgzMiwgMTMzODM3LCAxMzM4NDEsIDEzMzg0NSwgMTMzODQ5LCAxMzM4NTMsIDEzMzg1NywgCi0gICAgMTMzODYxLCAxMzM4NjUsIDEzMzg3MSwgMTMzODc3LCAxMzM4ODMsIDEzMzg4OSwgMTMzODk3LCAxMzM5MDYsIDEzMzkxMywgCi0gICAgMTMzOTIwLCAxMzM5MjgsIDEzMzkzNSwgMTMzOTQ3LCAxMzM5NTksIDEzMzk3MSwgMTMzOTgzLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzM5OTAsIDEzMzk5NywgCi0gICAgMTM0MDA0LCAxMzQwMTEsIDEzNDAxOCwgMTM0MDI1LCAxMzQwMzIsIDEzNDAzOSwgMTM0MDQ2LCAxMzQwNTMsIDEzNDA2MCwgCi0gICAgMTM0MDY3LCAxMzQwNzQsIDEzNDA4MSwgMTM0MDg4LCAxMzQwOTUsIDEzNDEwMiwgMTM0MTA5LCAxMzQxMTYsIDEzNDEyMywgCi0gICAgMTM0MTMwLCAxMzQxMzcsIDEzNDE0NCwgMTM0MTUxLCAxMzQxNTgsIDEzNDE2NSwgMTM0MTcyLCAxMzQxNzksIDEzNDE4NiwgCi0gICAgMTM0MTkzLCAxMzQyMDAsIDEzNDIwNywgMTM0MjE0LCAxMzQyMjEsIDEzNDIyOCwgMTM0MjM1LCAxMzQyNDIsIDEzNDI0OSwgCi0gICAgMTM0MjU2LCAxMzQyNjMsIDEzNDI3MCwgMTM0Mjc3LCAxMzQyODQsIDEzNDI5MSwgMTM0Mjk4LCAxMzQzMDUsIDEzNDMxMiwgCi0gICAgMTM0MzE5LCAxMzQzMjYsIDEzNDMzMywgMTM0MzQwLCAxMzQzNDcsIDEzNDM1NCwgMTM0MzYxLCAxMzQzNjgsIDEzNDM3NSwgCi0gICAgMTM0MzgyLCAxMzQzODksIDEzNDM5NiwgMTM0NDAzLCAxMzQ0MTAsIDEzNDQxNywgMTM0NDI0LCAxMzQ0MzEsIDEzNDQzOCwgCi0gICAgMTM0NDQ1LCAxMzQ0NTIsIDEzNDQ1NywgMTM0NDYyLCAxMzQ0NjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEzOTI1MCwgMTM5MjU1LCAxMzkyNjIsIDEzOTI2OSwgMTM5Mjc2LCAxMzkyODMsIDEzOTI4OCwgMTM5MjkzLCAxMzkzMDAsIAorICAgIDEzOTMwNSwgMTM5MzEwLCAxMzkzMTcsIDEzOTMyMiwgMTM5MzI3LCAxMzkzMzIsIDEzOTMzOSwgMTM5MzQ4LCAxMzkzNTMsIAorICAgIDEzOTM1OCwgMTM5MzYzLCAxMzkzNjgsIDEzOTM3MywgMTM5Mzc4LCAxMzkzODUsIDEzOTM5MCwgMTM5Mzk1LCAxMzk0MDAsIAorICAgIDEzOTQwNSwgMTM5NDEwLCAxMzk0MTUsIDEzOTQyMCwgMTM5NDI1LCAxMzk0MzAsIDEzOTQzNSwgMTM5NDQwLCAxMzk0NDUsIAorICAgIDEzOTQ1MSwgMTM5NDU2LCAxMzk0NjEsIDEzOTQ2NiwgMTM5NDcxLCAxMzk0NzYsIDEzOTQ4MSwgMTM5NDg2LCAxMzk0OTEsIAorICAgIDEzOTQ5NiwgMTM5NTA1LCAxMzk1MTAsIDEzOTUxOSwgMTM5NTI0LCAxMzk1MjksIDEzOTUzNCwgMTM5NTM5LCAxMzk1NDQsIAorICAgIDEzOTU0OSwgMTM5NTU0LCAxMzk1NjMsIDEzOTU2OCwgMTM5NTczLCAxMzk1NzgsIDEzOTU4MywgMTM5NTg4LCAxMzk1OTUsIAorICAgIDEzOTYwMCwgMTM5NjA3LCAxMzk2MTIsIDEzOTYxNywgMTM5NjIyLCAxMzk2MjcsIDEzOTYzMiwgMTM5NjM3LCAxMzk2NDIsIAorICAgIDEzOTY0NywgMTM5NjUyLCAxMzk2NTcsIDEzOTY2MiwgMTM5NjY3LCAxMzk2NzIsIDEzOTY3NywgMTM5NjgyLCAxMzk2ODcsIAorICAgIDEzOTY5MiwgMTM5Njk3LCAxMzk3MDIsIDEzOTcxMSwgMTM5NzE2LCAxMzk3MjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDEzOTcyNiwgMTM5NzM0LCAxMzk3NDIsIDEzOTc1MCwgMTM5NzU4LCAxMzk3NjYsIDEzOTc3NCwgMTM5NzgzLCAKKyAgICAxMzk3OTEsIDEzOTgwMCwgMTM5ODA4LCAxMzk4MTYsIDEzOTgyNCwgMTM5ODMyLCAxMzk4NDAsIDEzOTg0OCwgMTM5ODU3LCAKKyAgICAxMzk4NjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNDQ3MSwgMTM0NDc2LCAxMzQ0ODMsIDEzNDQ5MCwgMTM0NDk3LCAxMzQ1MDQsIAotICAgIDEzNDUwOSwgMTM0NTE0LCAxMzQ1MjEsIDEzNDUyNiwgMTM0NTMxLCAxMzQ1MzgsIDEzNDU0MywgMTM0NTQ4LCAxMzQ1NTMsIAotICAgIDEzNDU2MCwgMTM0NTY5LCAxMzQ1NzQsIDEzNDU3OSwgMTM0NTg0LCAxMzQ1ODksIDEzNDU5NCwgMTM0NTk5LCAxMzQ2MDYsIAotICAgIDEzNDYxMSwgMTM0NjE2LCAxMzQ2MjEsIDEzNDYyNiwgMTM0NjMxLCAxMzQ2MzYsIDEzNDY0MSwgMTM0NjQ2LCAxMzQ2NTEsIAotICAgIDEzNDY1NiwgMTM0NjYxLCAxMzQ2NjYsIDEzNDY3MiwgMTM0Njc3LCAxMzQ2ODIsIDEzNDY4NywgMTM0NjkyLCAxMzQ2OTcsIAotICAgIDEzNDcwMiwgMTM0NzA3LCAxMzQ3MTIsIDEzNDcxNywgMTM0NzI2LCAxMzQ3MzEsIDEzNDc0MCwgMTM0NzQ1LCAxMzQ3NTAsIAotICAgIDEzNDc1NSwgMTM0NzYwLCAxMzQ3NjUsIDEzNDc3MCwgMTM0Nzc1LCAxMzQ3ODQsIDEzNDc4OSwgMTM0Nzk0LCAxMzQ3OTksIAotICAgIDEzNDgwNCwgMTM0ODA5LCAxMzQ4MTYsIDEzNDgyMSwgMTM0ODI4LCAxMzQ4MzMsIDEzNDgzOCwgMTM0ODQzLCAxMzQ4NDgsIAotICAgIDEzNDg1MywgMTM0ODU4LCAxMzQ4NjMsIDEzNDg2OCwgMTM0ODczLCAxMzQ4NzgsIDEzNDg4MywgMTM0ODg4LCAxMzQ4OTMsIAotICAgIDEzNDg5OCwgMTM0OTAzLCAxMzQ5MDgsIDEzNDkxMywgMTM0OTE4LCAxMzQ5MjMsIDEzNDkzMiwgMTM0OTM3LCAxMzQ5NDIsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNDk0NywgMTM0OTU1LCAxMzQ5NjMsIDEzNDk3MSwgMTM0OTc5LCAKLSAgICAxMzQ5ODcsIDEzNDk5NSwgMTM1MDA0LCAxMzUwMTIsIDEzNTAyMSwgMTM1MDI5LCAxMzUwMzcsIDEzNTA0NSwgMTM1MDUzLCAKLSAgICAxMzUwNjEsIDEzNTA2OSwgMTM1MDc4LCAxMzUwODYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEzOTg3NCwgMTM5ODc4LCAxMzk4ODMsIDEzOTg4OCwgMTM5ODkzLCAxMzk4OTcsIDEzOTkwMiwgMTM5OTA3LCAxMzk5MTIsIAorICAgIDEzOTkxNiwgMTM5OTIxLCAxMzk5MjYsIDEzOTkzMCwgMTM5OTM1LCAxMzk5NDAsIDEzOTk0NCwgMTM5OTQ5LCAxMzk5NTQsIAorICAgIDEzOTk1OCwgMTM5OTYzLCAxMzk5NjgsIDEzOTk3MiwgMTM5OTc3LCAxMzk5ODIsIDEzOTk4NywgMTM5OTkyLCAxMzk5OTcsIAorICAgIDE0MDAwMSwgMTQwMDA2LCAxNDAwMTEsIDE0MDAxNiwgMTQwMDIwLCAxNDAwMjUsIDE0MDAzMCwgMTQwMDM1LCAxNDAwMzksIAorICAgIDE0MDA0NCwgMTQwMDQ5LCAxNDAwNTMsIDE0MDA1OCwgMTQwMDYzLCAxNDAwNjcsIDE0MDA3MiwgMTQwMDc3LCAxNDAwODEsIAorICAgIDE0MDA4NiwgMTQwMDkxLCAxNDAwOTUsIDE0MDEwMCwgMTQwMTA1LCAxNDAxMTAsIDE0MDExNSwgMTQwMTIwLCAxNDAxMjQsIAorICAgIDE0MDEyOSwgMTQwMTM0LCAxNDAxMzksIDE0MDE0MywgMTQwMTQ4LCAxNDAxNTMsIDE0MDE1OCwgMTQwMTYyLCAxNDAxNjcsIAorICAgIDE0MDE3MiwgMTQwMTc2LCAxNDAxODEsIDE0MDE4NiwgMTQwMTkwLCAxNDAxOTUsIDE0MDIwMCwgMTQwMjA0LCAxNDAyMDksIAorICAgIDE0MDIxNCwgMTQwMjE4LCAxNDAyMjMsIDE0MDIyOCwgMTQwMjMzLCAxNDAyMzgsIDE0MDI0MywgMTQwMjQ3LCAxNDAyNTIsIAorICAgIDE0MDI1NywgMTQwMjYyLCAxNDAyNjYsIDE0MDI3MSwgMCwgMTQwMjc2LCAxNDAyODAsIDE0MDI4NSwgMTQwMjkwLCAKKyAgICAxNDAyOTQsIDE0MDI5OSwgMTQwMzA0LCAxNDAzMDgsIDE0MDMxMywgMTQwMzE4LCAxNDAzMjIsIDE0MDMyNywgMTQwMzMyLCAKKyAgICAxNDAzMzYsIDE0MDM0MSwgMTQwMzQ2LCAxNDAzNTEsIDE0MDM1NiwgMTQwMzYxLCAxNDAzNjYsIDE0MDM3MiwgMTQwMzc4LCAKKyAgICAxNDAzODQsIDE0MDM4OSwgMTQwMzk1LCAxNDA0MDEsIDE0MDQwNywgMTQwNDEyLCAxNDA0MTgsIDE0MDQyNCwgMTQwNDI5LCAKKyAgICAxNDA0MzUsIDE0MDQ0MSwgMTQwNDQ2LCAxNDA0NTIsIDE0MDQ1OCwgMTQwNDYzLCAxNDA0NjksIDE0MDQ3NSwgMTQwNDgwLCAKKyAgICAxNDA0ODYsIDE0MDQ5MiwgMTQwNDk4LCAxNDA1MDQsIDE0MDUxMCwgMTQwNTE1LCAxNDA1MjEsIDE0MDUyNywgMTQwNTMzLCAKKyAgICAxNDA1MzgsIDE0MDU0NCwgMTQwNTUwLCAxNDA1NTYsIDE0MDU2MSwgMTQwNTY3LCAxNDA1NzMsIDE0MDU3OCwgMTQwNTg0LCAKKyAgICAxNDA1OTAsIDE0MDU5NSwgMTQwNjAxLCAxNDA2MDcsIDE0MDYxMiwgMTQwNjE4LCAxNDA2MjQsIDE0MDYyOSwgMTQwNjM1LCAKKyAgICAxNDA2NDEsIDE0MDY0NywgMTQwNjUzLCAxNDA2NTksIDAsIDE0MDY2MywgMTQwNjY4LCAwLCAwLCAxNDA2NzMsIDAsIDAsIAorICAgIDE0MDY3OCwgMTQwNjgzLCAwLCAwLCAxNDA2ODgsIDE0MDY5MywgMTQwNjk3LCAxNDA3MDIsIDAsIDE0MDcwNywgMTQwNzEyLCAKKyAgICAxNDA3MTcsIDE0MDcyMSwgMTQwNzI2LCAxNDA3MzEsIDE0MDczNiwgMTQwNzQxLCAxNDA3NDYsIDE0MDc1MCwgMTQwNzU1LCAKKyAgICAxNDA3NjAsIDAsIDE0MDc2NSwgMCwgMTQwNzcwLCAxNDA3NzUsIDE0MDc3OSwgMTQwNzg0LCAxNDA3ODksIDE0MDc5MywgCisgICAgMTQwNzk4LCAwLCAxNDA4MDMsIDE0MDgwOCwgMTQwODEzLCAxNDA4MTcsIDE0MDgyMiwgMTQwODI3LCAxNDA4MzEsIAorICAgIDE0MDgzNiwgMTQwODQxLCAxNDA4NDYsIDE0MDg1MSwgMTQwODU2LCAxNDA4NjEsIDE0MDg2NywgMTQwODczLCAxNDA4NzksIAorICAgIDE0MDg4NCwgMTQwODkwLCAxNDA4OTYsIDE0MDkwMiwgMTQwOTA3LCAxNDA5MTMsIDE0MDkxOSwgMTQwOTI0LCAxNDA5MzAsIAorICAgIDE0MDkzNiwgMTQwOTQxLCAxNDA5NDcsIDE0MDk1MywgMTQwOTU4LCAxNDA5NjQsIDE0MDk3MCwgMTQwOTc1LCAxNDA5ODEsIAorICAgIDE0MDk4NywgMTQwOTkzLCAxNDA5OTksIDE0MTAwNSwgMTQxMDEwLCAxNDEwMTYsIDE0MTAyMiwgMTQxMDI4LCAxNDEwMzMsIAorICAgIDE0MTAzOSwgMTQxMDQ1LCAxNDEwNTEsIDE0MTA1NiwgMTQxMDYyLCAxNDEwNjgsIDE0MTA3MywgMTQxMDc5LCAxNDEwODUsIAorICAgIDE0MTA5MCwgMTQxMDk2LCAxNDExMDIsIDE0MTEwNywgMTQxMTEzLCAxNDExMTksIDE0MTEyNCwgMTQxMTMwLCAxNDExMzYsIAorICAgIDE0MTE0MiwgMTQxMTQ4LCAxNDExNTQsIDE0MTE1OCwgMCwgMTQxMTYzLCAxNDExNjgsIDE0MTE3MiwgMTQxMTc3LCAwLCAwLCAKKyAgICAxNDExODIsIDE0MTE4NywgMTQxMTkyLCAxNDExOTYsIDE0MTIwMSwgMTQxMjA2LCAxNDEyMTAsIDE0MTIxNSwgMCwgCisgICAgMTQxMjIwLCAxNDEyMjUsIDE0MTIzMCwgMTQxMjM0LCAxNDEyMzksIDE0MTI0NCwgMTQxMjQ5LCAwLCAxNDEyNTQsIAorICAgIDE0MTI1OCwgMTQxMjYzLCAxNDEyNjgsIDE0MTI3MywgMTQxMjc3LCAxNDEyODIsIDE0MTI4NywgMTQxMjkyLCAxNDEyOTYsIAorICAgIDE0MTMwMSwgMTQxMzA2LCAxNDEzMTAsIDE0MTMxNSwgMTQxMzIwLCAxNDEzMjQsIDE0MTMyOSwgMTQxMzM0LCAxNDEzMzgsIAorICAgIDE0MTM0MywgMTQxMzQ4LCAxNDEzNTIsIDE0MTM1NywgMTQxMzYyLCAxNDEzNjcsIDE0MTM3MiwgMTQxMzc3LCAxNDEzODEsIAorICAgIDAsIDE0MTM4NiwgMTQxMzkxLCAxNDEzOTUsIDE0MTQwMCwgMCwgMTQxNDA1LCAxNDE0MDksIDE0MTQxNCwgMTQxNDE5LCAKKyAgICAxNDE0MjMsIDAsIDE0MTQyOCwgMCwgMCwgMCwgMTQxNDMyLCAxNDE0MzcsIDE0MTQ0MiwgMTQxNDQ2LCAxNDE0NTEsIAorICAgIDE0MTQ1NiwgMTQxNDYxLCAwLCAxNDE0NjYsIDE0MTQ3MCwgMTQxNDc1LCAxNDE0ODAsIDE0MTQ4NSwgMTQxNDg5LCAKKyAgICAxNDE0OTQsIDE0MTQ5OSwgMTQxNTA0LCAxNDE1MDgsIDE0MTUxMywgMTQxNTE4LCAxNDE1MjIsIDE0MTUyNywgMTQxNTMyLCAKKyAgICAxNDE1MzYsIDE0MTU0MSwgMTQxNTQ2LCAxNDE1NTAsIDE0MTU1NSwgMTQxNTYwLCAxNDE1NjQsIDE0MTU2OSwgMTQxNTc0LCAKKyAgICAxNDE1NzksIDE0MTU4NCwgMTQxNTg5LCAxNDE1OTQsIDE0MTYwMCwgMTQxNjA2LCAxNDE2MTIsIDE0MTYxNywgMTQxNjIzLCAKKyAgICAxNDE2MjksIDE0MTYzNSwgMTQxNjQwLCAxNDE2NDYsIDE0MTY1MiwgMTQxNjU3LCAxNDE2NjMsIDE0MTY2OSwgMTQxNjc0LCAKKyAgICAxNDE2ODAsIDE0MTY4NiwgMTQxNjkxLCAxNDE2OTcsIDE0MTcwMywgMTQxNzA4LCAxNDE3MTQsIDE0MTcyMCwgMTQxNzI2LCAKKyAgICAxNDE3MzIsIDE0MTczOCwgMTQxNzQzLCAxNDE3NDksIDE0MTc1NSwgMTQxNzYxLCAxNDE3NjYsIDE0MTc3MiwgMTQxNzc4LCAKKyAgICAxNDE3ODQsIDE0MTc4OSwgMTQxNzk1LCAxNDE4MDEsIDE0MTgwNiwgMTQxODEyLCAxNDE4MTgsIDE0MTgyMywgMTQxODI5LCAKKyAgICAxNDE4MzUsIDE0MTg0MCwgMTQxODQ2LCAxNDE4NTIsIDE0MTg1NywgMTQxODYzLCAxNDE4NjksIDE0MTg3NSwgMTQxODgxLCAKKyAgICAxNDE4ODcsIDE0MTg5MSwgMTQxODk2LCAxNDE5MDEsIDE0MTkwNiwgMTQxOTEwLCAxNDE5MTUsIDE0MTkyMCwgMTQxOTI1LCAKKyAgICAxNDE5MjksIDE0MTkzNCwgMTQxOTM5LCAxNDE5NDMsIDE0MTk0OCwgMTQxOTUzLCAxNDE5NTcsIDE0MTk2MiwgMTQxOTY3LCAKKyAgICAxNDE5NzEsIDE0MTk3NiwgMTQxOTgxLCAxNDE5ODUsIDE0MTk5MCwgMTQxOTk1LCAxNDIwMDAsIDE0MjAwNSwgMTQyMDEwLCAKKyAgICAxNDIwMTQsIDE0MjAxOSwgMTQyMDI0LCAxNDIwMjksIDE0MjAzMywgMTQyMDM4LCAxNDIwNDMsIDE0MjA0OCwgMTQyMDUyLCAKKyAgICAxNDIwNTcsIDE0MjA2MiwgMTQyMDY2LCAxNDIwNzEsIDE0MjA3NiwgMTQyMDgwLCAxNDIwODUsIDE0MjA5MCwgMTQyMDk0LCAKKyAgICAxNDIwOTksIDE0MjEwNCwgMTQyMTA4LCAxNDIxMTMsIDE0MjExOCwgMTQyMTIzLCAxNDIxMjgsIDE0MjEzMywgMTQyMTM4LCAKKyAgICAxNDIxNDQsIDE0MjE1MCwgMTQyMTU2LCAxNDIxNjEsIDE0MjE2NywgMTQyMTczLCAxNDIxNzksIDE0MjE4NCwgMTQyMTkwLCAKKyAgICAxNDIxOTYsIDE0MjIwMSwgMTQyMjA3LCAxNDIyMTMsIDE0MjIxOCwgMTQyMjI0LCAxNDIyMzAsIDE0MjIzNSwgMTQyMjQxLCAKKyAgICAxNDIyNDcsIDE0MjI1MiwgMTQyMjU4LCAxNDIyNjQsIDE0MjI3MCwgMTQyMjc2LCAxNDIyODIsIDE0MjI4NywgMTQyMjkzLCAKKyAgICAxNDIyOTksIDE0MjMwNSwgMTQyMzEwLCAxNDIzMTYsIDE0MjMyMiwgMTQyMzI4LCAxNDIzMzMsIDE0MjMzOSwgMTQyMzQ1LCAKKyAgICAxNDIzNTAsIDE0MjM1NiwgMTQyMzYyLCAxNDIzNjcsIDE0MjM3MywgMTQyMzc5LCAxNDIzODQsIDE0MjM5MCwgMTQyMzk2LCAKKyAgICAxNDI0MDEsIDE0MjQwNywgMTQyNDEzLCAxNDI0MTksIDE0MjQyNSwgMTQyNDMxLCAxNDI0MzYsIDE0MjQ0MiwgMTQyNDQ4LCAKKyAgICAxNDI0NTQsIDE0MjQ1OSwgMTQyNDY1LCAxNDI0NzEsIDE0MjQ3NywgMTQyNDgyLCAxNDI0ODgsIDE0MjQ5NCwgMTQyNDk5LCAKKyAgICAxNDI1MDUsIDE0MjUxMSwgMTQyNTE2LCAxNDI1MjIsIDE0MjUyOCwgMTQyNTMzLCAxNDI1MzksIDE0MjU0NSwgMTQyNTUwLCAKKyAgICAxNDI1NTYsIDE0MjU2MiwgMTQyNTY4LCAxNDI1NzQsIDE0MjU4MCwgMTQyNTg1LCAxNDI1OTEsIDE0MjU5NywgMTQyNjAzLCAKKyAgICAxNDI2MDgsIDE0MjYxNCwgMTQyNjIwLCAxNDI2MjYsIDE0MjYzMSwgMTQyNjM3LCAxNDI2NDMsIDE0MjY0OCwgMTQyNjU0LCAKKyAgICAxNDI2NjAsIDE0MjY2NSwgMTQyNjcxLCAxNDI2NzcsIDE0MjY4MiwgMTQyNjg4LCAxNDI2OTQsIDE0MjY5OSwgMTQyNzA1LCAKKyAgICAxNDI3MTEsIDE0MjcxNywgMTQyNzIzLCAxNDI3MjksIDE0MjczNSwgMTQyNzQyLCAxNDI3NDksIDE0Mjc1NiwgMTQyNzYyLCAKKyAgICAxNDI3NjksIDE0Mjc3NiwgMTQyNzgzLCAxNDI3ODksIDE0Mjc5NiwgMTQyODAzLCAxNDI4MDksIDE0MjgxNiwgMTQyODIzLCAKKyAgICAxNDI4MjksIDE0MjgzNiwgMTQyODQzLCAxNDI4NDksIDE0Mjg1NiwgMTQyODYzLCAxNDI4NjksIDE0Mjg3NiwgMTQyODgzLCAKKyAgICAxNDI4OTAsIDE0Mjg5NywgMTQyOTA0LCAxNDI5MTAsIDE0MjkxNywgMTQyOTI0LCAxNDI5MzEsIDE0MjkzNywgMTQyOTQ0LCAKKyAgICAxNDI5NTEsIDE0Mjk1OCwgMTQyOTY0LCAxNDI5NzEsIDE0Mjk3OCwgMTQyOTg0LCAxNDI5OTEsIDE0Mjk5OCwgMTQzMDA0LCAKKyAgICAxNDMwMTEsIDE0MzAxOCwgMTQzMDI0LCAxNDMwMzEsIDE0MzAzOCwgMTQzMDQ0LCAxNDMwNTEsIDE0MzA1OCwgMTQzMDY1LCAKKyAgICAxNDMwNzIsIDE0MzA3OSwgMTQzMDg0LCAxNDMwOTAsIDE0MzA5NiwgMTQzMTAyLCAxNDMxMDcsIDE0MzExMywgMTQzMTE5LCAKKyAgICAxNDMxMjUsIDE0MzEzMCwgMTQzMTM2LCAxNDMxNDIsIDE0MzE0NywgMTQzMTUzLCAxNDMxNTksIDE0MzE2NCwgMTQzMTcwLCAKKyAgICAxNDMxNzYsIDE0MzE4MSwgMTQzMTg3LCAxNDMxOTMsIDE0MzE5OCwgMTQzMjA0LCAxNDMyMTAsIDE0MzIxNiwgMTQzMjIyLCAKKyAgICAxNDMyMjgsIDE0MzIzMywgMTQzMjM5LCAxNDMyNDUsIDE0MzI1MSwgMTQzMjU2LCAxNDMyNjIsIDE0MzI2OCwgMTQzMjc0LCAKKyAgICAxNDMyNzksIDE0MzI4NSwgMTQzMjkxLCAxNDMyOTYsIDE0MzMwMiwgMTQzMzA4LCAxNDMzMTMsIDE0MzMxOSwgMTQzMzI1LCAKKyAgICAxNDMzMzAsIDE0MzMzNiwgMTQzMzQyLCAxNDMzNDcsIDE0MzM1MywgMTQzMzU5LCAxNDMzNjUsIDE0MzM3MSwgMTQzMzc3LCAKKyAgICAxNDMzODMsIDAsIDAsIDE0MzM5MCwgMTQzMzk1LCAxNDM0MDAsIDE0MzQwNSwgMTQzNDEwLCAxNDM0MTUsIDE0MzQyMCwgCisgICAgMTQzNDI1LCAxNDM0MzAsIDE0MzQzNSwgMTQzNDQwLCAxNDM0NDUsIDE0MzQ1MCwgMTQzNDU1LCAxNDM0NjAsIDE0MzQ2NSwgCisgICAgMTQzNDcwLCAxNDM0NzUsIDE0MzQ4MSwgMTQzNDg2LCAxNDM0OTEsIDE0MzQ5NiwgMTQzNTAxLCAxNDM1MDYsIDE0MzUxMSwgCisgICAgMTQzNTE2LCAxNDM1MjAsIDE0MzUyNSwgMTQzNTMwLCAxNDM1MzUsIDE0MzU0MCwgMTQzNTQ1LCAxNDM1NTAsIDE0MzU1NSwgCisgICAgMTQzNTYwLCAxNDM1NjUsIDE0MzU3MCwgMTQzNTc1LCAxNDM1ODAsIDE0MzU4NSwgMTQzNTkwLCAxNDM1OTUsIDE0MzYwMCwgCisgICAgMTQzNjA1LCAxNDM2MTEsIDE0MzYxNiwgMTQzNjIxLCAxNDM2MjYsIDE0MzYzMSwgMTQzNjM2LCAxNDM2NDEsIDE0MzY0NiwgCisgICAgMTQzNjUyLCAxNDM2NTcsIDE0MzY2MiwgMTQzNjY3LCAxNDM2NzIsIDE0MzY3NywgMTQzNjgyLCAxNDM2ODcsIDE0MzY5MiwgCisgICAgMTQzNjk3LCAxNDM3MDIsIDE0MzcwNywgMTQzNzEyLCAxNDM3MTcsIDE0MzcyMiwgMTQzNzI3LCAxNDM3MzIsIDE0MzczNywgCisgICAgMTQzNzQyLCAxNDM3NDcsIDE0Mzc1MiwgMTQzNzU3LCAxNDM3NjIsIDE0Mzc2NywgMTQzNzczLCAxNDM3NzgsIDE0Mzc4MywgCisgICAgMTQzNzg4LCAxNDM3OTMsIDE0Mzc5OCwgMTQzODAzLCAxNDM4MDgsIDE0MzgxMiwgMTQzODE3LCAxNDM4MjIsIDE0MzgyNywgCisgICAgMTQzODMyLCAxNDM4MzcsIDE0Mzg0MiwgMTQzODQ3LCAxNDM4NTIsIDE0Mzg1NywgMTQzODYyLCAxNDM4NjcsIDE0Mzg3MiwgCisgICAgMTQzODc3LCAxNDM4ODIsIDE0Mzg4NywgMTQzODkyLCAxNDM4OTcsIDE0MzkwMywgMTQzOTA4LCAxNDM5MTMsIDE0MzkxOCwgCisgICAgMTQzOTIzLCAxNDM5MjgsIDE0MzkzMywgMTQzOTM4LCAxNDM5NDQsIDE0Mzk0OSwgMTQzOTU0LCAxNDM5NTksIDE0Mzk2NCwgCisgICAgMTQzOTY5LCAxNDM5NzQsIDE0Mzk4MCwgMTQzOTg2LCAxNDM5OTIsIDE0Mzk5OCwgMTQ0MDA0LCAxNDQwMTAsIDE0NDAxNiwgCisgICAgMTQ0MDIyLCAxNDQwMjgsIDE0NDAzNCwgMTQ0MDQwLCAxNDQwNDYsIDE0NDA1MiwgMTQ0MDU4LCAxNDQwNjQsIDE0NDA3MCwgCisgICAgMTQ0MDc2LCAxNDQwODMsIDE0NDA4OSwgMTQ0MDk1LCAxNDQxMDEsIDE0NDEwNywgMTQ0MTEzLCAxNDQxMTksIDE0NDEyNSwgCisgICAgMTQ0MTMwLCAxNDQxMzYsIDE0NDE0MiwgMTQ0MTQ4LCAxNDQxNTQsIDE0NDE2MCwgMTQ0MTY2LCAxNDQxNzIsIDE0NDE3OCwgCisgICAgMTQ0MTg0LCAxNDQxOTAsIDE0NDE5NiwgMTQ0MjAyLCAxNDQyMDgsIDE0NDIxNCwgMTQ0MjIwLCAxNDQyMjYsIDE0NDIzMiwgCisgICAgMTQ0MjM5LCAxNDQyNDUsIDE0NDI1MSwgMTQ0MjU3LCAxNDQyNjMsIDE0NDI2OSwgMTQ0Mjc1LCAxNDQyODEsIDE0NDI4OCwgCisgICAgMTQ0Mjk0LCAxNDQzMDAsIDE0NDMwNiwgMTQ0MzEyLCAxNDQzMTgsIDE0NDMyNCwgMTQ0MzMwLCAxNDQzMzYsIDE0NDM0MiwgCisgICAgMTQ0MzQ4LCAxNDQzNTQsIDE0NDM2MCwgMTQ0MzY2LCAxNDQzNzIsIDE0NDM3OCwgMTQ0Mzg0LCAxNDQzOTAsIDE0NDM5NiwgCisgICAgMTQ0NDAyLCAxNDQ0MDgsIDE0NDQxNCwgMTQ0NDIwLCAxNDQ0MjYsIDE0NDQzMywgMTQ0NDM5LCAxNDQ0NDUsIDE0NDQ1MSwgCisgICAgMTQ0NDU3LCAxNDQ0NjMsIDE0NDQ2OSwgMTQ0NDc1LCAxNDQ0ODAsIDE0NDQ4NiwgMTQ0NDkyLCAxNDQ0OTgsIDE0NDUwNCwgCisgICAgMTQ0NTEwLCAxNDQ1MTYsIDE0NDUyMiwgMTQ0NTI4LCAxNDQ1MzQsIDE0NDU0MCwgMTQ0NTQ2LCAxNDQ1NTIsIDE0NDU1OCwgCisgICAgMTQ0NTY0LCAxNDQ1NzAsIDE0NDU3NiwgMTQ0NTgyLCAxNDQ1ODksIDE0NDU5NSwgMTQ0NjAxLCAxNDQ2MDcsIDE0NDYxMywgCisgICAgMTQ0NjE5LCAxNDQ2MjUsIDE0NDYzMSwgMTQ0NjM4LCAxNDQ2NDQsIDE0NDY1MCwgMTQ0NjU2LCAxNDQ2NjIsIDE0NDY2OCwgCisgICAgMTQ0Njc0LCAxNDQ2ODEsIDE0NDY4OCwgMTQ0Njk1LCAxNDQ3MDIsIDE0NDcwOSwgMTQ0NzE2LCAxNDQ3MjMsIDE0NDczMCwgCisgICAgMTQ0NzM3LCAxNDQ3NDQsIDE0NDc1MSwgMTQ0NzU4LCAxNDQ3NjUsIDE0NDc3MiwgMTQ0Nzc5LCAxNDQ3ODYsIDE0NDc5MywgCisgICAgMTQ0ODAxLCAxNDQ4MDgsIDE0NDgxNSwgMTQ0ODIyLCAxNDQ4MjksIDE0NDgzNiwgMTQ0ODQzLCAxNDQ4NTAsIDE0NDg1NiwgCisgICAgMTQ0ODYzLCAxNDQ4NzAsIDE0NDg3NywgMTQ0ODg0LCAxNDQ4OTEsIDE0NDg5OCwgMTQ0OTA1LCAxNDQ5MTIsIDE0NDkxOSwgCisgICAgMTQ0OTI2LCAxNDQ5MzMsIDE0NDk0MCwgMTQ0OTQ3LCAxNDQ5NTQsIDE0NDk2MSwgMTQ0OTY4LCAxNDQ5NzUsIDE0NDk4MywgCisgICAgMTQ0OTkwLCAxNDQ5OTcsIDE0NTAwNCwgMTQ1MDExLCAxNDUwMTgsIDE0NTAyNSwgMTQ1MDMyLCAxNDUwNDAsIDE0NTA0NywgCisgICAgMTQ1MDU0LCAxNDUwNjEsIDE0NTA2OCwgMTQ1MDc1LCAxNDUwODIsIDE0NTA4NywgMCwgMCwgMTQ1MDkyLCAxNDUwOTcsIAorICAgIDE0NTEwMSwgMTQ1MTA1LCAxNDUxMDksIDE0NTExMywgMTQ1MTE3LCAxNDUxMjEsIDE0NTEyNiwgMTQ1MTMwLCAxNDUxMzUsIAorICAgIDE0NTE0MCwgMTQ1MTQ0LCAxNDUxNDgsIDE0NTE1MiwgMTQ1MTU2LCAxNDUxNjAsIDE0NTE2NCwgMTQ1MTY5LCAxNDUxNzMsIAorICAgIDE0NTE3OCwgMTQ1MTgzLCAxNDUxODcsIDE0NTE5MSwgMTQ1MTk1LCAxNDUxOTksIDE0NTIwMywgMTQ1MjA3LCAxNDUyMTIsIAorICAgIDE0NTIxNiwgMTQ1MjIxLCAxNDUyMjcsIDE0NTIzMiwgMTQ1MjM3LCAxNDUyNDIsIDE0NTI0NywgMTQ1MjUyLCAxNDUyNTcsIAorICAgIDE0NTI2MywgMTQ1MjY4LCAxNDUyNzQsIDE0NTI4MCwgMTQ1Mjg1LCAxNDUyOTAsIDE0NTI5NSwgMTQ1MzAwLCAxNDUzMDUsIAorICAgIDE0NTMxMCwgMTQ1MzE2LCAxNDUzMjEsIDE0NTMyNywgMTQ1MzMxLCAxNDUzMzYsIDE0NTM0MSwgMTQ1MzQ2LCAxNDUzNTEsIAorICAgIDE0NTM1NiwgMTQ1MzYxLCAxNDUzNjcsIDE0NTM3NSwgMTQ1MzgyLCAxNDUzODcsIDE0NTM5MiwgMTQ1Mzk5LCAxNDU0MDUsIAorICAgIDE0NTQxMCwgMTQ1NDE2LCAxNDU0MjIsIDE0NTQzMCwgMTQ1NDM2LCAxNDU0NDMsIDE0NTQ1MSwgMTQ1NDU3LCAxNDU0NjYsIAorICAgIDE0NTQ3NSwgMTQ1NDgzLCAxNDU0OTEsIDE0NTQ5NywgMTQ1NTA0LCAxNDU1MTIsIDE0NTUyMCwgMTQ1NTI2LCAxNDU1MzMsIAorICAgIDE0NTU0MiwgMTQ1NTUxLCAxNDU1NTgsIDE0NTU2OSwgMTQ1NTc5LCAxNDU1ODksIDE0NTU5OSwgMTQ1NjA5LCAxNDU2MTYsIAorICAgIDE0NTYyMywgMTQ1NjMwLCAxNDU2MzcsIDE0NTY0NiwgMTQ1NjU1LCAxNDU2NjYsIDE0NTY3NywgMTQ1Njg2LCAxNDU2OTUsIAorICAgIDE0NTcwNiwgMTQ1NzE1LCAxNDU3MjQsIDE0NTczNSwgMTQ1NzQ0LCAxNDU3NTMsIDE0NTc2MSwgMTQ1NzY5LCAxNDU3ODAsIAorICAgIDE0NTc5MSwgMTQ1Nzk5LCAxNDU4MDgsIDE0NTgxNywgMTQ1ODI0LCAxNDU4MzUsIDE0NTg0NiwgMTQ1ODU1LCAxNDU4NjQsIAorICAgIDE0NTg3MSwgMTQ1ODgwLCAxNDU4ODksIDE0NTg5OCwgMTQ1OTA5LCAxNDU5MTgsIDE0NTkyOCwgMTQ1OTM3LCAxNDU5NDYsIAorICAgIDE0NTk1NywgMTQ1OTcwLCAxNDU5ODUsIDE0NTk5NiwgMTQ2MDA5LCAxNDYwMjEsIDE0NjAzMCwgMTQ2MDQxLCAxNDYwNTIsIAorICAgIDE0NjA2MSwgMTQ2MDcyLCAxNDYwODYsIDE0NjEwMSwgMTQ2MTA0LCAxNDYxMTMsIDE0NjExOCwgMTQ2MTI0LCAxNDYxMzIsIAorICAgIDE0NjEzOCwgMTQ2MTQ0LCAxNDYxNTMsIDE0NjE2MCwgMTQ2MTcwLCAxNDYxODIsIDE0NjE4OSwgMTQ2MTkyLCAxNDYxOTgsIAorICAgIDE0NjIwNSwgMTQ2MjExLCAxNDYyMTYsIDE0NjIxOSwgMTQ2MjI0LCAxNDYyMjcsIDE0NjIzNCwgMTQ2MjQwLCAxNDYyNDgsIAorICAgIDE0NjI1NSwgMTQ2MjYyLCAxNDYyNjgsIDE0NjI3MywgMTQ2Mjc2LCAxNDYyNzksIDE0NjI4MiwgMTQ2Mjg4LCAxNDYyOTUsIAorICAgIDE0NjMwMSwgMTQ2MzA2LCAxNDYzMTMsIDE0NjMxNiwgMTQ2MzIxLCAxNDYzMjgsIDE0NjMzNCwgMTQ2MzQyLCAxNDYzNDksIAorICAgIDE0NjM1OSwgMTQ2MzY4LCAxNDYzNzEsIDE0NjM3NywgMTQ2Mzg0LCAxNDYzOTEsIDE0NjM5OCwgMTQ2NDAzLCAxNDY0MTEsIAorICAgIDE0NjQxOSwgMTQ2NDI4LCAxNDY0MzQsIDE0NjQ0MywgMTQ2NDUyLCAxNDY0NjEsIDE0NjQ2NywgMTQ2NDc2LCAxNDY0ODMsIAorICAgIDE0NjQ5MCwgMTQ2NDk3LCAxNDY1MDUsIDE0NjUxMSwgMTQ2NTE5LCAxNDY1MjUsIDE0NjUzMiwgMTQ2NTM5LCAxNDY1NDcsIAorICAgIDE0NjU1OCwgMTQ2NTY4LCAxNDY1NzQsIDE0NjU4MSwgMTQ2NTg4LCAxNDY1OTUsIDE0NjYwMSwgMTQ2NjA4LCAxNDY2MTUsIAorICAgIDE0NjYyMCwgMTQ2NjI3LCAxNDY2MzUsIDE0NjY0NCwgMTQ2NjUwLCAxNDY2NjIsIDE0NjY3MywgMTQ2Njc5LCAxNDY2ODcsIAorICAgIDE0NjY5MywgMTQ2NzAwLCAxNDY3MDcsIDE0NjcxNCwgMTQ2NzIwLCAxNDY3MjcsIDE0NjczNiwgMTQ2NzQyLCAxNDY3NDgsIAorICAgIDE0Njc1NSwgMTQ2NzYyLCAxNDY3NzAsIDE0Njc4MCwgMTQ2NzkwLCAxNDY4MDAsIDE0NjgxMCwgMTQ2ODE4LCAxNDY4MjYsIAorICAgIDE0NjgzNiwgMTQ2ODQ0LCAxNDY4NDksIDE0Njg1NCwgMTQ2ODU5LCAxNDY4NjUsIDE0Njg3MiwgMTQ2ODc5LCAxNDY4ODUsIAorICAgIDE0Njg5MSwgMTQ2ODk2LCAxNDY5MDMsIDE0NjkxMSwgMTQ2OTIxLCAxNDY5MjksIDE0NjkzNywgMTQ2OTQ3LCAxNDY5NTcsIAorICAgIDE0Njk2NSwgMTQ2OTc1LCAxNDY5ODUsIDE0Njk5NywgMTQ3MDA5LCAxNDcwMjEsIDE0NzAzMSwgMTQ3MDM3LCAxNDcwNDMsIAorICAgIDE0NzA1MCwgMTQ3MDU5LCAxNDcwNjgsIDE0NzA3NywgMTQ3MDg2LCAxNDcwOTYsIDE0NzEwNSwgMTQ3MTE0LCAxNDcxMjMsIAorICAgIDE0NzEyOCwgMTQ3MTM0LCAxNDcxNDMsIDE0NzE1MywgMTQ3MTYyLCAxNDcxNjgsIDE0NzE3NCwgMTQ3MTgxLCAxNDcxODgsIAorICAgIDE0NzE5NSwgMTQ3MjAxLCAxNDcyMDgsIDE0NzIxNSwgMTQ3MjIyLCAxNDcyMjgsIDE0NzIzMiwgMTQ3MjM3LCAxNDcyNDQsIAorICAgIDE0NzI1MSwgMTQ3MjU4LCAxNDcyNjMsIDE0NzI3MSwgMTQ3Mjc5LCAxNDcyODgsIDE0NzI5NiwgMTQ3MzAzLCAxNDczMTEsIAorICAgIDE0NzMyMCwgMTQ3MzMwLCAxNDczMzMsIDE0NzMzNywgMTQ3MzQyLCAxNDczNDcsIDE0NzM1MiwgMTQ3MzU3LCAxNDczNjIsIAorICAgIDE0NzM2NywgMTQ3MzcyLCAxNDczNzcsIDE0NzM4MiwgMTQ3Mzg3LCAxNDczOTIsIDE0NzM5NywgMTQ3NDAyLCAxNDc0MDcsIAorICAgIDE0NzQxMiwgMTQ3NDE3LCAxNDc0MjIsIDE0NzQyOSwgMTQ3NDM1LCAxNDc0NDIsIDE0NzQ0OCwgMTQ3NDUzLCAxNDc0NjAsIAorICAgIDE0NzQ2NiwgMTQ3NDczLCAxNDc0NzksIDE0NzQ4NCwgMTQ3NDkxLCAxNDc0OTgsIDE0NzUwNSwgMTQ3NTExLCAxNDc1MTcsIAorICAgIDE0NzUyNiwgMTQ3NTM1LCAxNDc1NDYsIDE0NzU1MywgMTQ3NTYwLCAxNDc1NjksIDE0NzU3OCwgMTQ3NTg3LCAxNDc1OTYsIAorICAgIDE0NzYwNSwgMTQ3NjExLCAxNDc2MTksIDE0NzYyNSwgMTQ3NjM1LCAxNDc2NDAsIDE0NzY0OSwgMTQ3NjU4LCAxNDc2NjUsIAorICAgIDE0NzY3NiwgMTQ3NjgzLCAxNDc2OTAsIDE0NzY5NywgMTQ3NzA0LCAxNDc3MTEsIDE0NzcxOCwgMTQ3NzI1LCAxNDc3MzIsIAorICAgIDE0NzczOSwgMTQ3NzQ2LCAxNDc3NTIsIDE0Nzc1OCwgMTQ3NzY0LCAxNDc3NzEsIDE0Nzc3OCwgMTQ3Nzg1LCAxNDc3OTIsIAorICAgIDE0Nzc5OSwgMTQ3ODA2LCAxNDc4MTMsIDE0NzgyMCwgMTQ3ODI3LCAxNDc4MzQsIDE0Nzg0MSwgMTQ3ODQ4LCAxNDc4NTMsIAorICAgIDE0Nzg2MiwgMTQ3ODcxLCAxNDc4ODAsIDE0Nzg4NywgMTQ3ODk0LCAxNDc5MDEsIDE0NzkwOCwgMTQ3OTE1LCAxNDc5MjIsIAorICAgIDE0NzkyOSwgMTQ3OTM2LCAxNDc5NDUsIDE0Nzk1NCwgMTQ3OTYzLCAxNDc5NzIsIDE0Nzk4MSwgMTQ3OTkwLCAxNDc5OTksIAorICAgIDE0ODAwOCwgMTQ4MDE3LCAxNDgwMjYsIDE0ODAzNSwgMTQ4MDQ0LCAxNDgwNTMsIDE0ODA1OSwgMTQ4MDY3LCAxNDgwNzMsIAorICAgIDE0ODA4MywgMTQ4MDg4LCAxNDgwOTcsIDE0ODEwNiwgMTQ4MTE1LCAxNDgxMjYsIDE0ODEzMSwgMTQ4MTM4LCAxNDgxNDUsIAorICAgIDE0ODE1MiwgMTQ4MTU3LCAxNDgxNjMsIDE0ODE2OSwgMTQ4MTc1LCAxNDgxODIsIDE0ODE4OSwgMTQ4MTk2LCAxNDgyMDMsIAorICAgIDE0ODIxMCwgMTQ4MjE3LCAxNDgyMjQsIDE0ODIzMSwgMTQ4MjM4LCAxNDgyNDUsIDE0ODI1MiwgMTQ4MjU5LCAxNDgyNjQsIAorICAgIDE0ODI3MywgMTQ4MjgyLCAxNDgyOTEsIDE0ODMwMCwgMTQ4MzA5LCAxNDgzMTgsIDE0ODMyNywgMTQ4MzM2LCAxNDgzNDcsIAorICAgIDE0ODM1OCwgMTQ4MzY1LCAxNDgzNzIsIDE0ODM3OSwgMTQ4Mzg2LCAxNDgzOTMsIDE0ODQwMCwgMTQ4NDA4LCAxNDg0MTgsIAorICAgIDE0ODQyOCwgMTQ4NDM4LCAxNDg0NDksIDE0ODQ2MCwgMTQ4NDcxLCAxNDg0ODAsIDE0ODQ4OSwgMTQ4NDk4LCAxNDg1MDMsIAorICAgIDE0ODUwOCwgMTQ4NTEzLCAxNDg1MTgsIDE0ODUyOSwgMTQ4NTQwLCAxNDg1NTEsIDE0ODU2MiwgMTQ4NTczLCAxNDg1ODMsIAorICAgIDE0ODU5NCwgMTQ4NjAzLCAxNDg2MTIsIDE0ODYyMSwgMTQ4NjMwLCAxNDg2MzksIDE0ODY0NywgMTQ4NjU2LCAxNDg2NjcsIAorICAgIDE0ODY3OCwgMTQ4Njg5LCAxNDg3MDAsIDE0ODcxMSwgMTQ4NzIzLCAxNDg3MzYsIDE0ODc0OCwgMTQ4NzYxLCAxNDg3NzMsIAorICAgIDE0ODc4NiwgMTQ4Nzk4LCAxNDg4MTEsIDE0ODgyMiwgMTQ4ODMzLCAxNDg4NDIsIDE0ODg1MCwgMTQ4ODU5LCAxNDg4NzAsIAorICAgIDE0ODg4MSwgMTQ4ODkzLCAxNDg5MDYsIDE0ODkyMCwgMTQ4OTM1LCAxNDg5NDcsIDE0ODk2MCwgMTQ4OTcyLCAxNDg5ODUsIAorICAgIDE0ODk5NiwgMTQ5MDA3LCAxNDkwMTYsIDE0OTAyNCwgMTQ5MDMzLCAxNDkwNDAsIDE0OTA0NywgMTQ5MDU0LCAxNDkwNjEsIAorICAgIDE0OTA2OCwgMTQ5MDc1LCAxNDkwODIsIDE0OTA4OSwgMTQ5MDk2LCAxNDkxMDMsIDE0OTEwOCwgMTQ5MTEzLCAxNDkxMTgsIAorICAgIDE0OTEyNSwgMTQ5MTM1LCAxNDkxNDYsIDE0OTE1NiwgMTQ5MTY3LCAxNDkxODEsIDE0OTE5NiwgMTQ5MjExLCAxNDkyMjUsIAorICAgIDE0OTI0MCwgMTQ5MjU1LCAxNDkyNjYsIDE0OTI3NywgMTQ5MjkwLCAxNDkzMDMsIDE0OTMxMiwgMTQ5MzIxLCAxNDkzMzQsIAorICAgIDE0OTM0NywgMTQ5MzU0LCAxNDkzNjEsIDE0OTM2NiwgMTQ5MzcxLCAxNDkzNzYsIDE0OTM4MSwgMTQ5Mzg2LCAxNDkzOTMsIAorICAgIDE0OTQwMiwgMTQ5NDA3LCAxNDk0MTAsIDE0OTQxNSwgMTQ5NDIyLCAxNDk0MjksIDE0OTQzNiwgMTQ5NDQzLCAxNDk0NTAsIAorICAgIDE0OTQ1NywgMTQ5NDcwLCAxNDk0ODQsIDE0OTQ5OSwgMTQ5NTA2LCAxNDk1MTMsIDE0OTUyMCwgMTQ5NTI5LCAxNDk1MzcsIAorICAgIDE0OTU0NSwgMTQ5NTU0LCAxNDk1NTksIDE0OTU2NCwgMTQ5NTY5LCAxNDk1NzQsIDE0OTU3OSwgMTQ5NTg0LCAxNDk1OTEsIAorICAgIDE0OTU5OCwgMTQ5NjA0LCAxNDk2MTEsIDE0OTYxNywgMTQ5NjI0LCAxNDk2MjksIDE0OTYzNCwgMTQ5NjM5LCAxNDk2NDQsIAorICAgIDE0OTY0OSwgMTQ5NjU2LCAxNDk2NjMsIDE0OTY2OCwgMTQ5Njc1LCAxNDk2ODIsIDE0OTY4NywgMTQ5NjkyLCAxNDk2OTcsIAorICAgIDE0OTcwMiwgMTQ5NzA3LCAxNDk3MTIsIDE0OTcxOSwgMTQ5NzI2LCAxNDk3MzMsIDE0OTczNiwgMTQ5NzQxLCAxNDk3NDYsIAorICAgIDE0OTc1MSwgMTQ5NzU2LCAxNDk3NjMsIDE0OTc3MCwgMTQ5Nzc4LCAxNDk3ODYsIDE0OTc5MSwgMTQ5Nzk2LCAxNDk4MDMsIAorICAgIDE0OTgxMCwgMTQ5ODE3LCAxNDk4MjIsIDE0OTgyOSwgMTQ5ODM2LCAxNDk4NDEsIDE0OTg0OCwgMTQ5ODU1LCAxNDk4NjEsIAorICAgIDE0OTg2NywgMTQ5ODczLCAxNDk4NzksIDE0OTg4NywgMTQ5ODk1LCAxNDk5MDEsIDE0OTkwOSwgMTQ5OTE3LCAxNDk5MjIsIAorICAgIDE0OTkyOSwgMTQ5OTM2LCAxNDk5NDEsIDE0OTk0OCwgMTQ5OTU1LCAxNDk5NjIsIDE0OTk3MCwgMTQ5OTc4LCAxNDk5ODMsIAorICAgIDE0OTk5MCwgMTQ5OTk3LCAxNTAwMDYsIDE1MDAxMywgMTUwMDIyLCAxNTAwMzMsIDE1MDA0MiwgMTUwMDUxLCAxNTAwNjAsIAorICAgIDE1MDA2OSwgMTUwMDcyLCAxNTAwNzcsIDE1MDA4NCwgMTUwMDkzLCAxNTAxMDAsIDE1MDEwOSwgMTUwMTE2LCAxNTAxMjEsIAorICAgIDE1MDEyNiwgMTUwMTI5LCAxNTAxMzIsIDE1MDEzNSwgMTUwMTQyLCAxNTAxNDksIDE1MDE1OCwgMTUwMTY3LCAxNTAxNzYsIAorICAgIDE1MDE4MywgMTUwMTkwLCAxNTAxOTUsIDE1MDIwOCwgMTUwMjEzLCAxNTAyMTgsIDE1MDIyMywgMTUwMjI4LCAxNTAyMzMsIAorICAgIDE1MDIzOCwgMTUwMjQzLCAxNTAyNDgsIDE1MDI1MSwgMTUwMjU2LCAxNTAyNjEsIDE1MDI2NiwgMTUwMjcxLCAxNTAyNzYsIAorICAgIDE1MDI4MywgMTUwMjg4LCAxNTAyOTUsIDE1MDI5OCwgMTUwMzAzLCAxNTAzMDYsIDE1MDMwOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUwMzEyLCAxNTAzMTcsIDE1MDMyMiwgMTUwMzI3LCAxNTAzMzIsIDAsIAorICAgIDE1MDMzNywgMTUwMzQyLCAxNTAzNDcsIDE1MDM1MiwgMTUwMzU3LCAxNTAzNjIsIDE1MDM2NywgMTUwMzcyLCAxNTAzNzcsIAorICAgIDE1MDM4MiwgMTUwMzg3LCAxNTAzOTIsIDE1MDM5NywgMTUwNDAyLCAxNTA0MDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE1MDQxMiwgMTUwNDE3LCAxNTA0MjIsIDE1MDQyNywgMTUwNDMyLCAxNTA0MzcsIDE1MDQ0MiwgMCwgMTUwNDQ3LCAKKyAgICAxNTA0NTIsIDE1MDQ1NywgMTUwNDYzLCAxNTA0NjcsIDE1MDQ3MiwgMTUwNDc3LCAxNTA0ODIsIDE1MDQ4NywgMTUwNDkyLCAKKyAgICAxNTA0OTcsIDE1MDUwMiwgMTUwNTA3LCAxNTA1MTIsIDE1MDUxNywgMTUwNTIyLCAxNTA1MjcsIDAsIDAsIDE1MDUzMiwgCisgICAgMTUwNTM3LCAxNTA1NDIsIDE1MDU0NywgMTUwNTUyLCAxNTA1NTcsIDE1MDU2MiwgMCwgMTUwNTY3LCAxNTA1NzIsIDAsIAorICAgIDE1MDU3OCwgMTUwNTgzLCAxNTA1OTEsIDE1MDU5OCwgMTUwNjA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUwOTUsIDEzNTA5OSwgMTM1MTA0LCAxMzUxMDksIDEzNTExNCwgMTM1MTE4LCAKLSAgICAxMzUxMjMsIDEzNTEyOCwgMTM1MTMzLCAxMzUxMzcsIDEzNTE0MiwgMTM1MTQ3LCAxMzUxNTEsIDEzNTE1NiwgMTM1MTYxLCAKLSAgICAxMzUxNjUsIDEzNTE3MCwgMTM1MTc1LCAxMzUxNzksIDEzNTE4MywgMTM1MTg4LCAxMzUxOTIsIDEzNTE5NywgMTM1MjAyLCAKLSAgICAxMzUyMDcsIDEzNTIxMiwgMTM1MjE3LCAxMzUyMjEsIDEzNTIyNiwgMTM1MjMxLCAxMzUyMzYsIDEzNTI0MCwgMTM1MjQ1LCAKLSAgICAxMzUyNTAsIDEzNTI1NSwgMTM1MjU5LCAxMzUyNjQsIDEzNTI2OSwgMTM1MjczLCAxMzUyNzgsIDEzNTI4MywgMTM1Mjg3LCAKLSAgICAxMzUyOTIsIDEzNTI5NywgMTM1MzAxLCAxMzUzMDUsIDEzNTMxMCwgMTM1MzE0LCAxMzUzMTksIDEzNTMyNCwgMTM1MzI5LCAKLSAgICAxMzUzMzQsIDEzNTMzOSwgMTM1MzQzLCAxMzUzNDgsIDEzNTM1MywgMTM1MzU4LCAxMzUzNjIsIDEzNTM2NywgMTM1MzcyLCAKLSAgICAxMzUzNzcsIDEzNTM4MSwgMTM1Mzg2LCAxMzUzOTEsIDEzNTM5NSwgMTM1NDAwLCAxMzU0MDUsIDEzNTQwOSwgMTM1NDE0LCAKLSAgICAxMzU0MTksIDEzNTQyMywgMTM1NDI3LCAxMzU0MzIsIDEzNTQzNiwgMTM1NDQxLCAxMzU0NDYsIDEzNTQ1MSwgMTM1NDU2LCAKLSAgICAxMzU0NjEsIDEzNTQ2NSwgMTM1NDcwLCAxMzU0NzUsIDEzNTQ4MCwgMTM1NDg0LCAxMzU0ODksIDAsIDEzNTQ5NCwgCi0gICAgMTM1NDk4LCAxMzU1MDMsIDEzNTUwOCwgMTM1NTEyLCAxMzU1MTcsIDEzNTUyMiwgMTM1NTI2LCAxMzU1MzEsIDEzNTUzNiwgCi0gICAgMTM1NTQwLCAxMzU1NDQsIDEzNTU0OSwgMTM1NTUzLCAxMzU1NTgsIDEzNTU2MywgMTM1NTY4LCAxMzU1NzMsIDEzNTU3OCwgCi0gICAgMTM1NTgzLCAxMzU1ODksIDEzNTU5NSwgMTM1NjAxLCAxMzU2MDYsIDEzNTYxMiwgMTM1NjE4LCAxMzU2MjQsIDEzNTYyOSwgCi0gICAgMTM1NjM1LCAxMzU2NDEsIDEzNTY0NiwgMTM1NjUyLCAxMzU2NTgsIDEzNTY2MywgMTM1NjY5LCAxMzU2NzUsIDEzNTY4MCwgCi0gICAgMTM1Njg1LCAxMzU2OTEsIDEzNTY5NiwgMTM1NzAyLCAxMzU3MDgsIDEzNTcxNCwgMTM1NzIwLCAxMzU3MjYsIDEzNTczMSwgCi0gICAgMTM1NzM3LCAxMzU3NDMsIDEzNTc0OSwgMTM1NzU0LCAxMzU3NjAsIDEzNTc2NiwgMTM1NzcyLCAxMzU3NzcsIDEzNTc4MywgCi0gICAgMTM1Nzg5LCAxMzU3OTQsIDEzNTgwMCwgMTM1ODA2LCAxMzU4MTEsIDEzNTgxNywgMTM1ODIzLCAxMzU4MjgsIDEzNTgzMywgCi0gICAgMTM1ODM5LCAxMzU4NDQsIDEzNTg1MCwgMTM1ODU2LCAxMzU4NjIsIDEzNTg2OCwgMTM1ODc0LCAwLCAxMzU4NzgsIAotICAgIDEzNTg4MywgMCwgMCwgMTM1ODg4LCAwLCAwLCAxMzU4OTMsIDEzNTg5OCwgMCwgMCwgMTM1OTAzLCAxMzU5MDgsIDEzNTkxMiwgCi0gICAgMTM1OTE3LCAwLCAxMzU5MjIsIDEzNTkyNiwgMTM1OTMxLCAxMzU5MzUsIDEzNTk0MCwgMTM1OTQ1LCAxMzU5NTAsIAotICAgIDEzNTk1NSwgMTM1OTYwLCAxMzU5NjQsIDEzNTk2OSwgMTM1OTc0LCAwLCAxMzU5NzksIDAsIDEzNTk4NCwgMTM1OTg5LCAKLSAgICAxMzU5OTMsIDEzNTk5OCwgMTM2MDAzLCAxMzYwMDcsIDEzNjAxMiwgMCwgMTM2MDE3LCAxMzYwMjIsIDEzNjAyNywgCi0gICAgMTM2MDMxLCAxMzYwMzUsIDEzNjA0MCwgMTM2MDQ0LCAxMzYwNDksIDEzNjA1NCwgMTM2MDU5LCAxMzYwNjQsIDEzNjA2OSwgCi0gICAgMTM2MDc0LCAxMzYwODAsIDEzNjA4NiwgMTM2MDkyLCAxMzYwOTcsIDEzNjEwMywgMTM2MTA5LCAxMzYxMTUsIDEzNjEyMCwgCi0gICAgMTM2MTI2LCAxMzYxMzIsIDEzNjEzNywgMTM2MTQzLCAxMzYxNDksIDEzNjE1NCwgMTM2MTYwLCAxMzYxNjYsIDEzNjE3MSwgCi0gICAgMTM2MTc2LCAxMzYxODIsIDEzNjE4NywgMTM2MTkzLCAxMzYxOTksIDEzNjIwNSwgMTM2MjExLCAxMzYyMTcsIDEzNjIyMiwgCi0gICAgMTM2MjI4LCAxMzYyMzQsIDEzNjI0MCwgMTM2MjQ1LCAxMzYyNTEsIDEzNjI1NywgMTM2MjYzLCAxMzYyNjgsIDEzNjI3NCwgCi0gICAgMTM2MjgwLCAxMzYyODUsIDEzNjI5MSwgMTM2Mjk3LCAxMzYzMDIsIDEzNjMwOCwgMTM2MzE0LCAxMzYzMTksIDEzNjMyNCwgCi0gICAgMTM2MzMwLCAxMzYzMzUsIDEzNjM0MSwgMTM2MzQ3LCAxMzYzNTMsIDEzNjM1OSwgMTM2MzY1LCAxMzYzNjksIDAsIAotICAgIDEzNjM3NCwgMTM2Mzc5LCAxMzYzODMsIDEzNjM4OCwgMCwgMCwgMTM2MzkzLCAxMzYzOTgsIDEzNjQwMywgMTM2NDA3LCAKLSAgICAxMzY0MTIsIDEzNjQxNywgMTM2NDIxLCAxMzY0MjYsIDAsIDEzNjQzMSwgMTM2NDM1LCAxMzY0NDAsIDEzNjQ0NCwgCi0gICAgMTM2NDQ5LCAxMzY0NTQsIDEzNjQ1OSwgMCwgMTM2NDY0LCAxMzY0NjgsIDEzNjQ3MywgMTM2NDc4LCAxMzY0ODMsIAotICAgIDEzNjQ4NywgMTM2NDkyLCAxMzY0OTcsIDEzNjUwMiwgMTM2NTA2LCAxMzY1MTEsIDEzNjUxNiwgMTM2NTIwLCAxMzY1MjUsIAotICAgIDEzNjUzMCwgMTM2NTM0LCAxMzY1MzksIDEzNjU0NCwgMTM2NTQ4LCAxMzY1NTIsIDEzNjU1NywgMTM2NTYxLCAxMzY1NjYsIAotICAgIDEzNjU3MSwgMTM2NTc2LCAxMzY1ODEsIDEzNjU4NiwgMTM2NTkwLCAwLCAxMzY1OTUsIDEzNjYwMCwgMTM2NjA0LCAKLSAgICAxMzY2MDksIDAsIDEzNjYxNCwgMTM2NjE4LCAxMzY2MjMsIDEzNjYyOCwgMTM2NjMyLCAwLCAxMzY2MzcsIDAsIDAsIDAsIAotICAgIDEzNjY0MSwgMTM2NjQ1LCAxMzY2NTAsIDEzNjY1NCwgMTM2NjU5LCAxMzY2NjQsIDEzNjY2OSwgMCwgMTM2Njc0LCAKLSAgICAxMzY2NzgsIDEzNjY4MywgMTM2Njg4LCAxMzY2OTMsIDEzNjY5NywgMTM2NzAyLCAxMzY3MDcsIDEzNjcxMiwgMTM2NzE2LCAKLSAgICAxMzY3MjEsIDEzNjcyNiwgMTM2NzMwLCAxMzY3MzUsIDEzNjc0MCwgMTM2NzQ0LCAxMzY3NDksIDEzNjc1NCwgMTM2NzU4LCAKLSAgICAxMzY3NjIsIDEzNjc2NywgMTM2NzcxLCAxMzY3NzYsIDEzNjc4MSwgMTM2Nzg2LCAxMzY3OTEsIDEzNjc5NiwgMTM2ODAxLCAKLSAgICAxMzY4MDcsIDEzNjgxMywgMTM2ODE5LCAxMzY4MjQsIDEzNjgzMCwgMTM2ODM2LCAxMzY4NDIsIDEzNjg0NywgMTM2ODUzLCAKLSAgICAxMzY4NTksIDEzNjg2NCwgMTM2ODcwLCAxMzY4NzYsIDEzNjg4MSwgMTM2ODg3LCAxMzY4OTMsIDEzNjg5OCwgMTM2OTAzLCAKLSAgICAxMzY5MDksIDEzNjkxNCwgMTM2OTIwLCAxMzY5MjYsIDEzNjkzMiwgMTM2OTM4LCAxMzY5NDQsIDEzNjk0OSwgMTM2OTU1LCAKLSAgICAxMzY5NjEsIDEzNjk2NywgMTM2OTcyLCAxMzY5NzgsIDEzNjk4NCwgMTM2OTkwLCAxMzY5OTUsIDEzNzAwMSwgMTM3MDA3LCAKLSAgICAxMzcwMTIsIDEzNzAxOCwgMTM3MDI0LCAxMzcwMjksIDEzNzAzNSwgMTM3MDQxLCAxMzcwNDYsIDEzNzA1MSwgMTM3MDU3LCAKLSAgICAxMzcwNjIsIDEzNzA2OCwgMTM3MDc0LCAxMzcwODAsIDEzNzA4NiwgMTM3MDkyLCAxMzcwOTYsIDEzNzEwMSwgMTM3MTA2LCAKLSAgICAxMzcxMTEsIDEzNzExNSwgMTM3MTIwLCAxMzcxMjUsIDEzNzEzMCwgMTM3MTM0LCAxMzcxMzksIDEzNzE0NCwgMTM3MTQ4LCAKLSAgICAxMzcxNTMsIDEzNzE1OCwgMTM3MTYyLCAxMzcxNjcsIDEzNzE3MiwgMTM3MTc2LCAxMzcxODAsIDEzNzE4NSwgMTM3MTg5LCAKLSAgICAxMzcxOTQsIDEzNzE5OSwgMTM3MjA0LCAxMzcyMDksIDEzNzIxNCwgMTM3MjE4LCAxMzcyMjMsIDEzNzIyOCwgMTM3MjMzLCAKLSAgICAxMzcyMzcsIDEzNzI0MiwgMTM3MjQ3LCAxMzcyNTIsIDEzNzI1NiwgMTM3MjYxLCAxMzcyNjYsIDEzNzI3MCwgMTM3Mjc1LCAKLSAgICAxMzcyODAsIDEzNzI4NCwgMTM3Mjg5LCAxMzcyOTQsIDEzNzI5OCwgMTM3MzAyLCAxMzczMDcsIDEzNzMxMSwgMTM3MzE2LCAKLSAgICAxMzczMjEsIDEzNzMyNiwgMTM3MzMxLCAxMzczMzYsIDEzNzM0MSwgMTM3MzQ3LCAxMzczNTMsIDEzNzM1OSwgMTM3MzY0LCAKLSAgICAxMzczNzAsIDEzNzM3NiwgMTM3MzgyLCAxMzczODcsIDEzNzM5MywgMTM3Mzk5LCAxMzc0MDQsIDEzNzQxMCwgMTM3NDE2LCAKLSAgICAxMzc0MjEsIDEzNzQyNywgMTM3NDMzLCAxMzc0MzgsIDEzNzQ0MywgMTM3NDQ5LCAxMzc0NTQsIDEzNzQ2MCwgMTM3NDY2LCAKLSAgICAxMzc0NzIsIDEzNzQ3OCwgMTM3NDg0LCAxMzc0ODksIDEzNzQ5NSwgMTM3NTAxLCAxMzc1MDcsIDEzNzUxMiwgMTM3NTE4LCAKLSAgICAxMzc1MjQsIDEzNzUzMCwgMTM3NTM1LCAxMzc1NDEsIDEzNzU0NywgMTM3NTUyLCAxMzc1NTgsIDEzNzU2NCwgMTM3NTY5LCAKLSAgICAxMzc1NzUsIDEzNzU4MSwgMTM3NTg2LCAxMzc1OTEsIDEzNzU5NywgMTM3NjAyLCAxMzc2MDgsIDEzNzYxNCwgMTM3NjIwLCAKLSAgICAxMzc2MjYsIDEzNzYzMiwgMTM3NjM3LCAxMzc2NDMsIDEzNzY0OSwgMTM3NjU1LCAxMzc2NjAsIDEzNzY2NiwgMTM3NjcyLCAKLSAgICAxMzc2NzgsIDEzNzY4MywgMTM3Njg5LCAxMzc2OTUsIDEzNzcwMCwgMTM3NzA2LCAxMzc3MTIsIDEzNzcxNywgMTM3NzIzLCAKLSAgICAxMzc3MjksIDEzNzczNCwgMTM3NzM5LCAxMzc3NDUsIDEzNzc1MCwgMTM3NzU2LCAxMzc3NjIsIDEzNzc2OCwgMTM3Nzc0LCAKLSAgICAxMzc3ODAsIDEzNzc4NSwgMTM3NzkxLCAxMzc3OTcsIDEzNzgwMywgMTM3ODA4LCAxMzc4MTQsIDEzNzgyMCwgMTM3ODI2LCAKLSAgICAxMzc4MzEsIDEzNzgzNywgMTM3ODQzLCAxMzc4NDgsIDEzNzg1NCwgMTM3ODYwLCAxMzc4NjUsIDEzNzg3MSwgMTM3ODc3LCAKLSAgICAxMzc4ODIsIDEzNzg4NywgMTM3ODkzLCAxMzc4OTgsIDEzNzkwNCwgMTM3OTEwLCAxMzc5MTYsIDEzNzkyMiwgMTM3OTI4LCAKLSAgICAxMzc5MzQsIDEzNzk0MSwgMTM3OTQ4LCAxMzc5NTUsIDEzNzk2MSwgMTM3OTY4LCAxMzc5NzUsIDEzNzk4MiwgMTM3OTg4LCAKLSAgICAxMzc5OTUsIDEzODAwMiwgMTM4MDA4LCAxMzgwMTUsIDEzODAyMiwgMTM4MDI4LCAxMzgwMzUsIDEzODA0MiwgMTM4MDQ4LCAKLSAgICAxMzgwNTQsIDEzODA2MSwgMTM4MDY3LCAxMzgwNzQsIDEzODA4MSwgMTM4MDg4LCAxMzgwOTUsIDEzODEwMiwgMTM4MTA4LCAKLSAgICAxMzgxMTUsIDEzODEyMiwgMTM4MTI5LCAxMzgxMzUsIDEzODE0MiwgMTM4MTQ5LCAxMzgxNTYsIDEzODE2MiwgMTM4MTY5LCAKLSAgICAxMzgxNzYsIDEzODE4MiwgMTM4MTg5LCAxMzgxOTYsIDEzODIwMiwgMTM4MjA5LCAxMzgyMTYsIDEzODIyMiwgMTM4MjI4LCAKLSAgICAxMzgyMzUsIDEzODI0MSwgMTM4MjQ4LCAxMzgyNTUsIDEzODI2MiwgMTM4MjY5LCAxMzgyNzYsIDEzODI4MSwgMTM4Mjg3LCAKLSAgICAxMzgyOTMsIDEzODI5OSwgMTM4MzA0LCAxMzgzMTAsIDEzODMxNiwgMTM4MzIyLCAxMzgzMjcsIDEzODMzMywgMTM4MzM5LCAKLSAgICAxMzgzNDQsIDEzODM1MCwgMTM4MzU2LCAxMzgzNjEsIDEzODM2NywgMTM4MzczLCAxMzgzNzgsIDEzODM4MywgMTM4Mzg5LCAKLSAgICAxMzgzOTQsIDEzODQwMCwgMTM4NDA2LCAxMzg0MTIsIDEzODQxOCwgMTM4NDI0LCAxMzg0MjksIDEzODQzNSwgMTM4NDQxLCAKLSAgICAxMzg0NDcsIDEzODQ1MiwgMTM4NDU4LCAxMzg0NjQsIDEzODQ3MCwgMTM4NDc1LCAxMzg0ODEsIDEzODQ4NywgMTM4NDkyLCAKLSAgICAxMzg0OTgsIDEzODUwNCwgMTM4NTA5LCAxMzg1MTUsIDEzODUyMSwgMTM4NTI2LCAxMzg1MzEsIDEzODUzNywgMTM4NTQyLCAKLSAgICAxMzg1NDgsIDEzODU1NCwgMTM4NTYwLCAxMzg1NjYsIDEzODU3MiwgMTM4NTc4LCAwLCAwLCAxMzg1ODUsIDEzODU5MCwgCi0gICAgMTM4NTk1LCAxMzg2MDAsIDEzODYwNSwgMTM4NjEwLCAxMzg2MTUsIDEzODYyMCwgMTM4NjI1LCAxMzg2MzAsIDEzODYzNSwgCi0gICAgMTM4NjQwLCAxMzg2NDUsIDEzODY1MCwgMTM4NjU1LCAxMzg2NjAsIDEzODY2NSwgMTM4NjcwLCAxMzg2NzYsIDEzODY4MSwgCi0gICAgMTM4Njg2LCAxMzg2OTEsIDEzODY5NiwgMTM4NzAxLCAxMzg3MDYsIDEzODcxMSwgMTM4NzE1LCAxMzg3MjAsIDEzODcyNSwgCi0gICAgMTM4NzMwLCAxMzg3MzUsIDEzODc0MCwgMTM4NzQ1LCAxMzg3NTAsIDEzODc1NSwgMTM4NzYwLCAxMzg3NjUsIDEzODc3MCwgCi0gICAgMTM4Nzc1LCAxMzg3ODAsIDEzODc4NSwgMTM4NzkwLCAxMzg3OTUsIDEzODgwMCwgMTM4ODA2LCAxMzg4MTEsIDEzODgxNiwgCi0gICAgMTM4ODIxLCAxMzg4MjYsIDEzODgzMSwgMTM4ODM2LCAxMzg4NDEsIDEzODg0NywgMTM4ODUyLCAxMzg4NTcsIDEzODg2MiwgCi0gICAgMTM4ODY3LCAxMzg4NzIsIDEzODg3NywgMTM4ODgyLCAxMzg4ODcsIDEzODg5MiwgMTM4ODk3LCAxMzg5MDIsIDEzODkwNywgCi0gICAgMTM4OTEyLCAxMzg5MTcsIDEzODkyMiwgMTM4OTI3LCAxMzg5MzIsIDEzODkzNywgMTM4OTQyLCAxMzg5NDcsIDEzODk1MiwgCi0gICAgMTM4OTU3LCAxMzg5NjIsIDEzODk2OCwgMTM4OTczLCAxMzg5NzgsIDEzODk4MywgMTM4OTg4LCAxMzg5OTMsIDEzODk5OCwgCi0gICAgMTM5MDAzLCAxMzkwMDcsIDEzOTAxMiwgMTM5MDE3LCAxMzkwMjIsIDEzOTAyNywgMTM5MDMyLCAxMzkwMzcsIDEzOTA0MiwgCi0gICAgMTM5MDQ3LCAxMzkwNTIsIDEzOTA1NywgMTM5MDYyLCAxMzkwNjcsIDEzOTA3MiwgMTM5MDc3LCAxMzkwODIsIDEzOTA4NywgCi0gICAgMTM5MDkyLCAxMzkwOTgsIDEzOTEwMywgMTM5MTA4LCAxMzkxMTMsIDEzOTExOCwgMTM5MTIzLCAxMzkxMjgsIDEzOTEzMywgCi0gICAgMTM5MTM5LCAxMzkxNDQsIDEzOTE0OSwgMTM5MTU0LCAxMzkxNTksIDEzOTE2NCwgMTM5MTY5LCAxMzkxNzUsIDEzOTE4MSwgCi0gICAgMTM5MTg3LCAxMzkxOTMsIDEzOTE5OSwgMTM5MjA1LCAxMzkyMTEsIDEzOTIxNywgMTM5MjIzLCAxMzkyMjksIDEzOTIzNSwgCi0gICAgMTM5MjQxLCAxMzkyNDcsIDEzOTI1MywgMTM5MjU5LCAxMzkyNjUsIDEzOTI3MSwgMTM5Mjc4LCAxMzkyODQsIDEzOTI5MCwgCi0gICAgMTM5Mjk2LCAxMzkzMDIsIDEzOTMwOCwgMTM5MzE0LCAxMzkzMjAsIDEzOTMyNSwgMTM5MzMxLCAxMzkzMzcsIDEzOTM0MywgCi0gICAgMTM5MzQ5LCAxMzkzNTUsIDEzOTM2MSwgMTM5MzY3LCAxMzkzNzMsIDEzOTM3OSwgMTM5Mzg1LCAxMzkzOTEsIDEzOTM5NywgCi0gICAgMTM5NDAzLCAxMzk0MDksIDEzOTQxNSwgMTM5NDIxLCAxMzk0MjcsIDEzOTQzNCwgMTM5NDQwLCAxMzk0NDYsIDEzOTQ1MiwgCi0gICAgMTM5NDU4LCAxMzk0NjQsIDEzOTQ3MCwgMTM5NDc2LCAxMzk0ODMsIDEzOTQ4OSwgMTM5NDk1LCAxMzk1MDEsIDEzOTUwNywgCi0gICAgMTM5NTEzLCAxMzk1MTksIDEzOTUyNSwgMTM5NTMxLCAxMzk1MzcsIDEzOTU0MywgMTM5NTQ5LCAxMzk1NTUsIDEzOTU2MSwgCi0gICAgMTM5NTY3LCAxMzk1NzMsIDEzOTU3OSwgMTM5NTg1LCAxMzk1OTEsIDEzOTU5NywgMTM5NjAzLCAxMzk2MDksIDEzOTYxNSwgCi0gICAgMTM5NjIxLCAxMzk2MjgsIDEzOTYzNCwgMTM5NjQwLCAxMzk2NDYsIDEzOTY1MiwgMTM5NjU4LCAxMzk2NjQsIDEzOTY3MCwgCi0gICAgMTM5Njc1LCAxMzk2ODEsIDEzOTY4NywgMTM5NjkzLCAxMzk2OTksIDEzOTcwNSwgMTM5NzExLCAxMzk3MTcsIDEzOTcyMywgCi0gICAgMTM5NzI5LCAxMzk3MzUsIDEzOTc0MSwgMTM5NzQ3LCAxMzk3NTMsIDEzOTc1OSwgMTM5NzY1LCAxMzk3NzEsIDEzOTc3NywgCi0gICAgMTM5Nzg0LCAxMzk3OTAsIDEzOTc5NiwgMTM5ODAyLCAxMzk4MDgsIDEzOTgxNCwgMTM5ODIwLCAxMzk4MjYsIDEzOTgzMywgCi0gICAgMTM5ODM5LCAxMzk4NDUsIDEzOTg1MSwgMTM5ODU3LCAxMzk4NjMsIDEzOTg2OSwgMTM5ODc2LCAxMzk4ODMsIDEzOTg5MCwgCi0gICAgMTM5ODk3LCAxMzk5MDQsIDEzOTkxMSwgMTM5OTE4LCAxMzk5MjUsIDEzOTkzMiwgMTM5OTM5LCAxMzk5NDYsIDEzOTk1MywgCi0gICAgMTM5OTYwLCAxMzk5NjcsIDEzOTk3NCwgMTM5OTgxLCAxMzk5ODgsIDEzOTk5NiwgMTQwMDAzLCAxNDAwMTAsIDE0MDAxNywgCi0gICAgMTQwMDI0LCAxNDAwMzEsIDE0MDAzOCwgMTQwMDQ1LCAxNDAwNTEsIDE0MDA1OCwgMTQwMDY1LCAxNDAwNzIsIDE0MDA3OSwgCi0gICAgMTQwMDg2LCAxNDAwOTMsIDE0MDEwMCwgMTQwMTA3LCAxNDAxMTQsIDE0MDEyMSwgMTQwMTI4LCAxNDAxMzUsIDE0MDE0MiwgCi0gICAgMTQwMTQ5LCAxNDAxNTYsIDE0MDE2MywgMTQwMTcwLCAxNDAxNzgsIDE0MDE4NSwgMTQwMTkyLCAxNDAxOTksIDE0MDIwNiwgCi0gICAgMTQwMjEzLCAxNDAyMjAsIDE0MDIyNywgMTQwMjM1LCAxNDAyNDIsIDE0MDI0OSwgMTQwMjU2LCAxNDAyNjMsIDE0MDI3MCwgCi0gICAgMTQwMjc3LCAxNDAyODIsIDAsIDAsIDE0MDI4NywgMTQwMjkyLCAxNDAyOTYsIDE0MDMwMCwgMTQwMzA0LCAxNDAzMDgsIAotICAgIDE0MDMxMiwgMTQwMzE2LCAxNDAzMjEsIDE0MDMyNSwgMTQwMzMwLCAxNDAzMzUsIDE0MDMzOSwgMTQwMzQzLCAxNDAzNDcsIAotICAgIDE0MDM1MSwgMTQwMzU1LCAxNDAzNTksIDE0MDM2NCwgMTQwMzY4LCAxNDAzNzMsIDE0MDM3OCwgMTQwMzgyLCAxNDAzODYsIAotICAgIDE0MDM5MCwgMTQwMzk0LCAxNDAzOTgsIDE0MDQwMiwgMTQwNDA3LCAxNDA0MTEsIDE0MDQxNiwgMTQwNDIyLCAxNDA0MjcsIAotICAgIDE0MDQzMiwgMTQwNDM3LCAxNDA0NDIsIDE0MDQ0NywgMTQwNDUyLCAxNDA0NTgsIDE0MDQ2MywgMTQwNDY5LCAxNDA0NzUsIAotICAgIDE0MDQ4MCwgMTQwNDg1LCAxNDA0OTAsIDE0MDQ5NSwgMTQwNTAwLCAxNDA1MDUsIDE0MDUxMSwgMTQwNTE2LCAxNDA1MjIsIAotICAgIDE0MDUyNiwgMTQwNTMxLCAxNDA1MzYsIDE0MDU0MSwgMTQwNTQ2LCAxNDA1NTEsIDE0MDU1NiwgMTQwNTYyLCAxNDA1NzAsIAotICAgIDE0MDU3NywgMTQwNTgyLCAxNDA1ODcsIDE0MDU5NCwgMTQwNjAwLCAxNDA2MDUsIDE0MDYxMSwgMTQwNjE3LCAxNDA2MjUsIAotICAgIDE0MDYzMSwgMTQwNjM4LCAxNDA2NDYsIDE0MDY1MiwgMTQwNjYxLCAxNDA2NzAsIDE0MDY3OCwgMTQwNjg2LCAxNDA2OTIsIAotICAgIDE0MDY5OSwgMTQwNzA3LCAxNDA3MTUsIDE0MDcyMSwgMTQwNzI4LCAxNDA3MzcsIDE0MDc0NiwgMTQwNzUzLCAxNDA3NjQsIAotICAgIDE0MDc3NCwgMTQwNzg0LCAxNDA3OTQsIDE0MDgwNCwgMTQwODExLCAxNDA4MTgsIDE0MDgyNSwgMTQwODMyLCAxNDA4NDEsIAotICAgIDE0MDg1MCwgMTQwODYxLCAxNDA4NzIsIDE0MDg4MSwgMTQwODkwLCAxNDA5MDEsIDE0MDkxMCwgMTQwOTE5LCAxNDA5MzAsIAotICAgIDE0MDkzOSwgMTQwOTQ4LCAxNDA5NTYsIDE0MDk2NCwgMTQwOTc1LCAxNDA5ODYsIDE0MDk5NCwgMTQxMDAzLCAxNDEwMTIsIAotICAgIDE0MTAxOSwgMTQxMDMwLCAxNDEwNDEsIDE0MTA1MCwgMTQxMDU5LCAxNDEwNjYsIDE0MTA3NSwgMTQxMDg0LCAxNDEwOTMsIAotICAgIDE0MTEwNCwgMTQxMTEzLCAxNDExMjMsIDE0MTEzMiwgMTQxMTQxLCAxNDExNTIsIDE0MTE2NSwgMTQxMTgwLCAxNDExOTEsIAotICAgIDE0MTIwNCwgMTQxMjE2LCAxNDEyMjUsIDE0MTIzNiwgMTQxMjQ3LCAxNDEyNTYsIDE0MTI2NywgMTQxMjgxLCAxNDEyOTYsIAotICAgIDE0MTI5OSwgMTQxMzA4LCAxNDEzMTMsIDE0MTMxOSwgMTQxMzI3LCAxNDEzMzMsIDE0MTMzOSwgMTQxMzQ4LCAxNDEzNTUsIAotICAgIDE0MTM2NSwgMTQxMzc3LCAxNDEzODQsIDE0MTM4NywgMTQxMzkzLCAxNDE0MDAsIDE0MTQwNiwgMTQxNDExLCAxNDE0MTQsIAotICAgIDE0MTQxOSwgMTQxNDIyLCAxNDE0MjksIDE0MTQzNSwgMTQxNDQzLCAxNDE0NTAsIDE0MTQ1NywgMTQxNDYzLCAxNDE0NjgsIAotICAgIDE0MTQ3MSwgMTQxNDc0LCAxNDE0NzcsIDE0MTQ4MywgMTQxNDkwLCAxNDE0OTYsIDE0MTUwMSwgMTQxNTA4LCAxNDE1MTEsIAotICAgIDE0MTUxNiwgMTQxNTIzLCAxNDE1MjksIDE0MTUzNywgMTQxNTQ0LCAxNDE1NTQsIDE0MTU2MywgMTQxNTY2LCAxNDE1NzIsIAotICAgIDE0MTU3OSwgMTQxNTg2LCAxNDE1OTMsIDE0MTU5OCwgMTQxNjA2LCAxNDE2MTQsIDE0MTYyMywgMTQxNjI5LCAxNDE2MzgsIAotICAgIDE0MTY0NywgMTQxNjU2LCAxNDE2NjIsIDE0MTY3MSwgMTQxNjc4LCAxNDE2ODUsIDE0MTY5MiwgMTQxNzAwLCAxNDE3MDYsIAotICAgIDE0MTcxNCwgMTQxNzIwLCAxNDE3MjcsIDE0MTczNCwgMTQxNzQyLCAxNDE3NTMsIDE0MTc2MywgMTQxNzY5LCAxNDE3NzYsIAotICAgIDE0MTc4MywgMTQxNzkwLCAxNDE3OTYsIDE0MTgwMywgMTQxODEwLCAxNDE4MTUsIDE0MTgyMiwgMTQxODMwLCAxNDE4MzksIAotICAgIDE0MTg0NSwgMTQxODU3LCAxNDE4NjgsIDE0MTg3NCwgMTQxODgyLCAxNDE4ODgsIDE0MTg5NSwgMTQxOTAyLCAxNDE5MDksIAotICAgIDE0MTkxNSwgMTQxOTIyLCAxNDE5MzEsIDE0MTkzNywgMTQxOTQzLCAxNDE5NTAsIDE0MTk1NywgMTQxOTY1LCAxNDE5NzUsIAotICAgIDE0MTk4NSwgMTQxOTk1LCAxNDIwMDUsIDE0MjAxMywgMTQyMDIxLCAxNDIwMzEsIDE0MjAzOSwgMTQyMDQ0LCAxNDIwNDksIAotICAgIDE0MjA1NCwgMTQyMDYwLCAxNDIwNjcsIDE0MjA3NCwgMTQyMDgwLCAxNDIwODYsIDE0MjA5MSwgMTQyMDk4LCAxNDIxMDYsIAotICAgIDE0MjExNiwgMTQyMTI0LCAxNDIxMzIsIDE0MjE0MiwgMTQyMTUyLCAxNDIxNjAsIDE0MjE3MCwgMTQyMTgwLCAxNDIxOTIsIAotICAgIDE0MjIwNCwgMTQyMjE2LCAxNDIyMjYsIDE0MjIzMiwgMTQyMjM4LCAxNDIyNDUsIDE0MjI1NCwgMTQyMjYzLCAxNDIyNzIsIAotICAgIDE0MjI4MSwgMTQyMjkxLCAxNDIzMDAsIDE0MjMwOSwgMTQyMzE4LCAxNDIzMjMsIDE0MjMyOSwgMTQyMzM4LCAxNDIzNDgsIAotICAgIDE0MjM1NywgMTQyMzYzLCAxNDIzNjksIDE0MjM3NiwgMTQyMzgzLCAxNDIzOTAsIDE0MjM5NiwgMTQyNDAzLCAxNDI0MTAsIAotICAgIDE0MjQxNywgMTQyNDIzLCAxNDI0MjcsIDE0MjQzMiwgMTQyNDM5LCAxNDI0NDYsIDE0MjQ1MywgMTQyNDU4LCAxNDI0NjYsIAotICAgIDE0MjQ3NCwgMTQyNDgzLCAxNDI0OTEsIDE0MjQ5OCwgMTQyNTA2LCAxNDI1MTUsIDE0MjUyNSwgMTQyNTI4LCAxNDI1MzIsIAotICAgIDE0MjUzNywgMTQyNTQyLCAxNDI1NDcsIDE0MjU1MiwgMTQyNTU3LCAxNDI1NjIsIDE0MjU2NywgMTQyNTcyLCAxNDI1NzcsIAotICAgIDE0MjU4MiwgMTQyNTg3LCAxNDI1OTIsIDE0MjU5NywgMTQyNjAyLCAxNDI2MDcsIDE0MjYxMiwgMTQyNjE3LCAxNDI2MjQsIAotICAgIDE0MjYzMCwgMTQyNjM3LCAxNDI2NDMsIDE0MjY0OCwgMTQyNjU1LCAxNDI2NjEsIDE0MjY2OCwgMTQyNjc0LCAxNDI2NzksIAotICAgIDE0MjY4NiwgMTQyNjkzLCAxNDI3MDAsIDE0MjcwNiwgMTQyNzEyLCAxNDI3MjEsIDE0MjczMCwgMTQyNzQxLCAxNDI3NDgsIAotICAgIDE0Mjc1NSwgMTQyNzY0LCAxNDI3NzMsIDE0Mjc4MiwgMTQyNzkxLCAxNDI4MDAsIDE0MjgwNiwgMTQyODE0LCAxNDI4MjAsIAotICAgIDE0MjgzMCwgMTQyODM1LCAxNDI4NDQsIDE0Mjg1MywgMTQyODYwLCAxNDI4NzEsIDE0Mjg3OCwgMTQyODg1LCAxNDI4OTIsIAotICAgIDE0Mjg5OSwgMTQyOTA2LCAxNDI5MTMsIDE0MjkyMCwgMTQyOTI3LCAxNDI5MzQsIDE0Mjk0MSwgMTQyOTQ3LCAxNDI5NTMsIAotICAgIDE0Mjk1OSwgMTQyOTY2LCAxNDI5NzMsIDE0Mjk4MCwgMTQyOTg3LCAxNDI5OTQsIDE0MzAwMSwgMTQzMDA4LCAxNDMwMTUsIAotICAgIDE0MzAyMiwgMTQzMDI5LCAxNDMwMzYsIDE0MzA0MywgMTQzMDQ4LCAxNDMwNTcsIDE0MzA2NiwgMTQzMDc1LCAxNDMwODIsIAotICAgIDE0MzA4OSwgMTQzMDk2LCAxNDMxMDMsIDE0MzExMCwgMTQzMTE3LCAxNDMxMjQsIDE0MzEzMSwgMTQzMTQwLCAxNDMxNDksIAotICAgIDE0MzE1OCwgMTQzMTY3LCAxNDMxNzYsIDE0MzE4NSwgMTQzMTk0LCAxNDMyMDMsIDE0MzIxMiwgMTQzMjIxLCAxNDMyMzAsIAotICAgIDE0MzIzOSwgMTQzMjQ4LCAxNDMyNTQsIDE0MzI2MiwgMTQzMjY4LCAxNDMyNzgsIDE0MzI4MywgMTQzMjkyLCAxNDMzMDEsIAotICAgIDE0MzMxMCwgMTQzMzIxLCAxNDMzMjYsIDE0MzMzMywgMTQzMzQwLCAxNDMzNDcsIDE0MzM1MiwgMTQzMzU4LCAxNDMzNjQsIAotICAgIDE0MzM3MCwgMTQzMzc3LCAxNDMzODQsIDE0MzM5MSwgMTQzMzk4LCAxNDM0MDUsIDE0MzQxMiwgMTQzNDE5LCAxNDM0MjYsIAotICAgIDE0MzQzMywgMTQzNDQwLCAxNDM0NDcsIDE0MzQ1NCwgMTQzNDU5LCAxNDM0NjgsIDE0MzQ3NywgMTQzNDg2LCAxNDM0OTUsIAotICAgIDE0MzUwNCwgMTQzNTEzLCAxNDM1MjIsIDE0MzUzMSwgMTQzNTQyLCAxNDM1NTMsIDE0MzU2MCwgMTQzNTY3LCAxNDM1NzQsIAotICAgIDE0MzU4MSwgMTQzNTg4LCAxNDM1OTUsIDE0MzYwMywgMTQzNjEzLCAxNDM2MjMsIDE0MzYzMywgMTQzNjQ0LCAxNDM2NTUsIAotICAgIDE0MzY2NiwgMTQzNjc1LCAxNDM2ODQsIDE0MzY5MywgMTQzNjk4LCAxNDM3MDMsIDE0MzcwOCwgMTQzNzEzLCAxNDM3MjQsIAotICAgIDE0MzczNSwgMTQzNzQ2LCAxNDM3NTcsIDE0Mzc2OCwgMTQzNzc4LCAxNDM3ODksIDE0Mzc5OCwgMTQzODA3LCAxNDM4MTYsIAotICAgIDE0MzgyNSwgMTQzODM0LCAxNDM4NDIsIDE0Mzg1MSwgMTQzODYyLCAxNDM4NzMsIDE0Mzg4NCwgMTQzODk1LCAxNDM5MDYsIAotICAgIDE0MzkxOCwgMTQzOTMxLCAxNDM5NDMsIDE0Mzk1NiwgMTQzOTY4LCAxNDM5ODEsIDE0Mzk5MywgMTQ0MDA2LCAxNDQwMTcsIAotICAgIDE0NDAyOCwgMTQ0MDM3LCAxNDQwNDUsIDE0NDA1NCwgMTQ0MDY1LCAxNDQwNzYsIDE0NDA4OCwgMTQ0MTAxLCAxNDQxMTUsIAotICAgIDE0NDEzMCwgMTQ0MTQyLCAxNDQxNTUsIDE0NDE2NywgMTQ0MTgwLCAxNDQxOTEsIDE0NDIwMiwgMTQ0MjExLCAxNDQyMTksIAotICAgIDE0NDIyOCwgMTQ0MjM1LCAxNDQyNDIsIDE0NDI0OSwgMTQ0MjU2LCAxNDQyNjMsIDE0NDI3MCwgMTQ0Mjc3LCAxNDQyODQsIAotICAgIDE0NDI5MSwgMTQ0Mjk4LCAxNDQzMDMsIDE0NDMwOCwgMTQ0MzEzLCAxNDQzMjAsIDE0NDMzMCwgMTQ0MzQxLCAxNDQzNTEsIAotICAgIDE0NDM2MiwgMTQ0Mzc2LCAxNDQzOTEsIDE0NDQwNiwgMTQ0NDIwLCAxNDQ0MzUsIDE0NDQ1MCwgMTQ0NDYxLCAxNDQ0NzIsIAotICAgIDE0NDQ4NSwgMTQ0NDk4LCAxNDQ1MDcsIDE0NDUxNiwgMTQ0NTI5LCAxNDQ1NDIsIDE0NDU0OSwgMTQ0NTU2LCAxNDQ1NjEsIAotICAgIDE0NDU2NiwgMTQ0NTcxLCAxNDQ1NzYsIDE0NDU4MSwgMTQ0NTg4LCAxNDQ1OTcsIDE0NDYwMiwgMTQ0NjA1LCAxNDQ2MTAsIAotICAgIDE0NDYxNywgMTQ0NjI0LCAxNDQ2MzEsIDE0NDYzOCwgMTQ0NjQ1LCAxNDQ2NTIsIDE0NDY2NSwgMTQ0Njc5LCAxNDQ2OTQsIAotICAgIDE0NDcwMSwgMTQ0NzA4LCAxNDQ3MTUsIDE0NDcyNCwgMTQ0NzMyLCAxNDQ3NDAsIDE0NDc0OSwgMTQ0NzU0LCAxNDQ3NTksIAotICAgIDE0NDc2NCwgMTQ0NzY5LCAxNDQ3NzQsIDE0NDc3OSwgMTQ0Nzg2LCAxNDQ3OTMsIDE0NDc5OSwgMTQ0ODA2LCAxNDQ4MTIsIAotICAgIDE0NDgxOSwgMTQ0ODI0LCAxNDQ4MjksIDE0NDgzNCwgMTQ0ODM5LCAxNDQ4NDQsIDE0NDg1MSwgMTQ0ODU4LCAxNDQ4NjMsIAotICAgIDE0NDg3MCwgMTQ0ODc3LCAxNDQ4ODIsIDE0NDg4NywgMTQ0ODkyLCAxNDQ4OTcsIDE0NDkwMiwgMTQ0OTA3LCAxNDQ5MTQsIAotICAgIDE0NDkyMSwgMTQ0OTI4LCAxNDQ5MzEsIDE0NDkzNiwgMTQ0OTQxLCAxNDQ5NDYsIDE0NDk1MSwgMTQ0OTU4LCAxNDQ5NjUsIAotICAgIDE0NDk3MywgMTQ0OTgxLCAxNDQ5ODYsIDE0NDk5MSwgMTQ0OTk4LCAxNDUwMDUsIDE0NTAxMiwgMTQ1MDE3LCAxNDUwMjQsIAotICAgIDE0NTAzMSwgMTQ1MDM2LCAxNDUwNDMsIDE0NTA1MCwgMTQ1MDU2LCAxNDUwNjIsIDE0NTA2OCwgMTQ1MDc0LCAxNDUwODIsIAotICAgIDE0NTA5MCwgMTQ1MDk2LCAxNDUxMDQsIDE0NTExMiwgMTQ1MTE3LCAxNDUxMjQsIDE0NTEzMSwgMTQ1MTM2LCAxNDUxNDMsIAotICAgIDE0NTE1MCwgMTQ1MTU3LCAxNDUxNjUsIDE0NTE3MywgMTQ1MTc4LCAxNDUxODUsIDE0NTE5MiwgMTQ1MjAxLCAxNDUyMDgsIAotICAgIDE0NTIxNywgMTQ1MjI4LCAxNDUyMzcsIDE0NTI0NiwgMTQ1MjU1LCAxNDUyNjQsIDE0NTI2NywgMTQ1MjcyLCAxNDUyNzksIAotICAgIDE0NTI4OCwgMTQ1Mjk1LCAxNDUzMDQsIDE0NTMxMSwgMTQ1MzE2LCAxNDUzMjEsIDE0NTMyNCwgMTQ1MzI3LCAxNDUzMzAsIAotICAgIDE0NTMzNywgMTQ1MzQ0LCAxNDUzNTMsIDE0NTM2MiwgMTQ1MzcxLCAxNDUzNzgsIDE0NTM4NSwgMTQ1MzkwLCAxNDU0MDMsIAotICAgIDE0NTQwOCwgMTQ1NDEzLCAxNDU0MTgsIDE0NTQyMywgMTQ1NDI4LCAxNDU0MzMsIDE0NTQzOCwgMTQ1NDQzLCAxNDU0NDYsIAotICAgIDE0NTQ1MSwgMTQ1NDU2LCAxNDU0NjEsIDE0NTQ2NiwgMTQ1NDcxLCAxNDU0NzgsIDE0NTQ4MywgMTQ1NDkwLCAxNDU0OTMsIAotICAgIDE0NTQ5OCwgMTQ1NTAxLCAxNDU1MDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDE0NTUwNywgMTQ1NTEyLCAxNDU1MTcsIDE0NTUyMiwgMTQ1NTI3LCAwLCAxNDU1MzIsIDE0NTUzNywgMTQ1NTQyLCAKLSAgICAxNDU1NDcsIDE0NTU1MiwgMTQ1NTU3LCAxNDU1NjIsIDE0NTU2NywgMTQ1NTcyLCAxNDU1NzcsIDE0NTU4MiwgMTQ1NTg3LCAKLSAgICAxNDU1OTIsIDE0NTU5NywgMTQ1NjAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDU2MDcsIDE0NTYxNCwgMTQ1NjIwLCAKLSAgICAxNDU2MjcsIDE0NTYzNCwgMTQ1NjQxLCAxNDU2NDgsIDE0NTY1NSwgMTQ1NjYyLCAxNDU2NjksIDE0NTY3NiwgMTQ1NjgzLCAKLSAgICAxNDU2OTAsIDE0NTY5NywgMTQ1NzA0LCAxNDU3MTEsIDE0NTcxOCwgMTQ1NzI1LCAxNDU3MzIsIDE0NTczOSwgMTQ1NzQ2LCAKLSAgICAxNDU3NTMsIDE0NTc2MCwgMTQ1NzY3LCAxNDU3NzQsIDE0NTc4MSwgMTQ1Nzg4LCAxNDU3OTUsIDE0NTgwMiwgMTQ1ODA5LCAKLSAgICAxNDU4MTYsIDE0NTgyMywgMTQ1ODMwLCAxNDU4MzcsIDE0NTg0NCwgMTQ1ODUwLCAxNDU4NTYsIDE0NTg2MiwgMTQ1ODY5LCAKLSAgICAxNDU4NzUsIDE0NTg4MiwgMTQ1ODg4LCAxNDU4OTUsIDE0NTkwMiwgMTQ1OTA5LCAxNDU5MTYsIDE0NTkyMywgMTQ1OTMwLCAKLSAgICAxNDU5MzcsIDE0NTk0NCwgMTQ1OTUxLCAxNDU5NTgsIDE0NTk2NSwgMTQ1OTcyLCAxNDU5NzksIDE0NTk4NiwgMTQ1OTkzLCAKLSAgICAxNDYwMDAsIDE0NjAwNywgMTQ2MDE0LCAxNDYwMjEsIDE0NjAyOCwgMTQ2MDM2LCAxNDYwNDMsIDE0NjA1MCwgMTQ2MDU3LCAKLSAgICAxNDYwNjQsIDE0NjA3MSwgMTQ2MDc4LCAxNDYwODUsIDE0NjA5MiwgMTQ2MDk5LCAxNDYxMDYsIDE0NjExMywgMTQ2MTIwLCAKLSAgICAxNDYxMjYsIDE0NjEzMywgMTQ2MTQwLCAxNDYxNDcsIDE0NjE1NCwgMTQ2MTYxLCAxNDYxNjgsIDE0NjE3NSwgMTQ2MTgzLCAKLSAgICAxNDYxOTAsIDE0NjE5NiwgMTQ2MjAzLCAxNDYyMTAsIDE0NjIxNywgMTQ2MjI0LCAxNDYyMzEsIDE0NjIzOCwgMTQ2MjQ1LCAKLSAgICAxNDYyNTIsIDE0NjI1OSwgMTQ2MjY2LCAxNDYyNzMsIDE0NjI4MCwgMTQ2Mjg3LCAxNDYyOTQsIDE0NjMwMSwgMTQ2MzA4LCAKLSAgICAxNDYzMTUsIDE0NjMyMiwgMTQ2MzI5LCAxNDYzMzYsIDE0NjM0MiwgMTQ2MzQ5LCAxNDYzNTYsIDE0NjM2MywgMTQ2MzcwLCAKLSAgICAxNDYzNzcsIDE0NjM4NCwgMTQ2MzkxLCAxNDYzOTgsIDE0NjQwNSwgMTQ2NDEyLCAxNDY0MTksIDE0NjQyNiwgMTQ2NDMzLCAKLSAgICAxNDY0NDAsIDE0NjQ0NywgMTQ2NDU0LCAxNDY0NjEsIDE0NjQ2OCwgMTQ2NDc1LCAxNDY0ODIsIDE0NjQ4OSwgMTQ2NDk2LCAKLSAgICAxNDY1MDQsIDE0NjUxMiwgMTQ2NTIwLCAxNDY1MjcsIDE0NjUzNCwgMTQ2NTQxLCAxNDY1NDgsIDE0NjU1NSwgMTQ2NTYyLCAKLSAgICAxNDY1NjksIDE0NjU3NiwgMTQ2NTgzLCAxNDY1OTAsIDE0NjU5NiwgMTQ2NjAzLCAxNDY2MTAsIDE0NjYxNywgMTQ2NjI0LCAKLSAgICAxNDY2MzEsIDE0NjYzOCwgMTQ2NjQ1LCAxNDY2NTIsIDE0NjY1OSwgMTQ2NjY2LCAxNDY2NzMsIDE0NjY4MCwgMTQ2Njg3LCAKLSAgICAxNDY2OTQsIDE0NjcwMiwgMTQ2NzEwLCAxNDY3MTgsIDE0NjcyNSwgMTQ2NzMyLCAxNDY3MzksIDE0Njc0NiwgMTQ2NzUzLCAKLSAgICAxNDY3NjAsIDE0Njc2NywgMTQ2Nzc0LCAxNDY3ODEsIDE0Njc4OCwgMTQ2Nzk1LCAxNDY4MDIsIDE0NjgwOSwgMTQ2ODE2LCAKLSAgICAxNDY4MjMsIDE0NjgzMCwgMTQ2ODM3LCAxNDY4NDQsIDE0Njg1MSwgMTQ2ODU4LCAxNDY4NjUsIDE0Njg3MiwgMTQ2ODc5LCAKLSAgICAxNDY4ODYsIDE0Njg5MywgMTQ2OTAwLCAxNDY5MDcsIDE0NjkxNCwgMTQ2OTIxLCAxNDY5MjgsIDE0NjkzNSwgMTQ2OTQyLCAKLSAgICAxNDY5NDksIDE0Njk1NiwgMTQ2OTYzLCAxNDY5NzAsIDE0Njk3NywgMCwgMCwgMTQ2OTg0LCAxNDY5ODgsIDE0Njk5MiwgCi0gICAgMTQ2OTk2LCAxNDcwMDAsIDE0NzAwNCwgMTQ3MDA4LCAxNDcwMTMsIDE0NzAxNywgMTQ3MDIyLCAxNDcwMjgsIDE0NzAzNCwgCi0gICAgMTQ3MDQwLCAxNDcwNDYsIDE0NzA1NCwgMTQ3MDYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAxNDcwNjgsIDE0NzA3MiwgMTQ3MDc2LCAxNDcwODAsIDAsIDE0NzA4NCwgMTQ3MDg4LCAxNDcwOTIsIAotICAgIDE0NzA5NiwgMTQ3MTAwLCAxNDcxMDQsIDE0NzEwOCwgMTQ3MTEyLCAxNDcxMTYsIDE0NzEyMCwgMTQ3MTI0LCAxNDcxMjgsIAotICAgIDE0NzEzMiwgMTQ3MTM2LCAxNDcxNDAsIDE0NzE0NCwgMTQ3MTQ4LCAxNDcxNTIsIDE0NzE1NiwgMTQ3MTYwLCAxNDcxNjQsIAotICAgIDE0NzE2OCwgMTQ3MTcyLCAxNDcxNzYsIDE0NzE4MiwgMTQ3MTg4LCAxNDcxOTQsIDAsIDE0NzIwMCwgMTQ3MjA1LCAwLCAKLSAgICAxNDcyMTAsIDAsIDAsIDE0NzIxNSwgMCwgMTQ3MjIwLCAxNDcyMjUsIDE0NzIzMCwgMTQ3MjM1LCAxNDcyNDAsIDE0NzI0NSwgCi0gICAgMTQ3MjUwLCAxNDcyNTUsIDE0NzI2MCwgMTQ3MjY1LCAwLCAxNDcyNzAsIDE0NzI3NSwgMTQ3MjgwLCAxNDcyODUsIDAsIAotICAgIDE0NzI5MCwgMCwgMTQ3Mjk1LCAwLCAwLCAwLCAwLCAwLCAwLCAxNDczMDAsIDAsIDAsIDAsIDAsIDE0NzMwNiwgMCwgCi0gICAgMTQ3MzEyLCAwLCAxNDczMTgsIDAsIDE0NzMyNCwgMTQ3MzMwLCAxNDczMzYsIDAsIDE0NzM0MiwgMTQ3MzQ4LCAwLCAKLSAgICAxNDczNTQsIDAsIDAsIDE0NzM2MCwgMCwgMTQ3MzY2LCAwLCAxNDczNzIsIDAsIDE0NzM3OCwgMCwgMTQ3Mzg2LCAwLCAKLSAgICAxNDczOTQsIDE0NzQwMCwgMCwgMTQ3NDA2LCAwLCAwLCAxNDc0MTIsIDE0NzQxOCwgMTQ3NDI0LCAxNDc0MzAsIDAsIAotICAgIDE0NzQzNiwgMTQ3NDQyLCAxNDc0NDgsIDE0NzQ1NCwgMTQ3NDYwLCAxNDc0NjYsIDE0NzQ3MiwgMCwgMTQ3NDc4LCAKLSAgICAxNDc0ODQsIDE0NzQ5MCwgMTQ3NDk2LCAwLCAxNDc1MDIsIDE0NzUwOCwgMTQ3NTE0LCAxNDc1MjAsIDAsIDE0NzUyOCwgMCwgCi0gICAgMTQ3NTM2LCAxNDc1NDIsIDE0NzU0OCwgMTQ3NTU0LCAxNDc1NjAsIDE0NzU2NiwgMTQ3NTcyLCAxNDc1NzgsIDE0NzU4NCwgCi0gICAgMTQ3NTkwLCAwLCAxNDc1OTYsIDE0NzYwMiwgMTQ3NjA4LCAxNDc2MTQsIDE0NzYyMCwgMTQ3NjI2LCAxNDc2MzIsIAotICAgIDE0NzYzOCwgMTQ3NjQ0LCAxNDc2NTAsIDE0NzY1NiwgMTQ3NjYyLCAxNDc2NjgsIDE0NzY3NCwgMTQ3NjgwLCAxNDc2ODYsIAotICAgIDE0NzY5MiwgMCwgMCwgMCwgMCwgMCwgMTQ3Njk4LCAxNDc3MDMsIDE0NzcwOCwgMCwgMTQ3NzEzLCAxNDc3MTgsIDE0NzcyMywgCi0gICAgMTQ3NzI4LCAxNDc3MzMsIDAsIDE0NzczOCwgMTQ3NzQzLCAxNDc3NDgsIDE0Nzc1MywgMTQ3NzU4LCAxNDc3NjMsIAotICAgIDE0Nzc2OCwgMTQ3NzczLCAxNDc3NzgsIDE0Nzc4MywgMTQ3Nzg4LCAxNDc3OTMsIDE0Nzc5OCwgMTQ3ODAzLCAxNDc4MDgsIAotICAgIDE0NzgxMywgMTQ3ODE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTA2MTIsIDE1MDYxOSwgMTUwNjI1LCAxNTA2MzIsIDE1MDYzOSwgCisgICAgMTUwNjQ2LCAxNTA2NTMsIDE1MDY2MCwgMTUwNjY3LCAxNTA2NzQsIDE1MDY4MSwgMTUwNjg4LCAxNTA2OTUsIDE1MDcwMiwgCisgICAgMTUwNzA5LCAxNTA3MTYsIDE1MDcyMywgMTUwNzMwLCAxNTA3MzcsIDE1MDc0NCwgMTUwNzUxLCAxNTA3NTgsIDE1MDc2NSwgCisgICAgMTUwNzcyLCAxNTA3NzksIDE1MDc4NiwgMTUwNzkzLCAxNTA4MDAsIDE1MDgwNywgMTUwODE0LCAxNTA4MjEsIDE1MDgyOCwgCisgICAgMTUwODM1LCAxNTA4NDIsIDE1MDg0OSwgMTUwODU1LCAxNTA4NjEsIDE1MDg2NywgMTUwODc0LCAxNTA4ODAsIDE1MDg4NywgCisgICAgMTUwODkzLCAxNTA5MDAsIDE1MDkwNywgMTUwOTE0LCAxNTA5MjEsIDE1MDkyOCwgMTUwOTM1LCAxNTA5NDIsIDE1MDk0OSwgCisgICAgMTUwOTU2LCAxNTA5NjMsIDE1MDk3MCwgMTUwOTc3LCAxNTA5ODQsIDE1MDk5MSwgMTUwOTk3LCAxNTEwMDQsIDE1MTAxMSwgCisgICAgMTUxMDE4LCAxNTEwMjUsIDE1MTAzMiwgMTUxMDQwLCAxNTEwNDcsIDE1MTA1NCwgMTUxMDYxLCAxNTEwNjgsIDE1MTA3NSwgCisgICAgMTUxMDgyLCAxNTEwODksIDE1MTA5NiwgMTUxMTAzLCAxNTExMTAsIDE1MTExNywgMTUxMTI0LCAxNTExMzAsIDE1MTEzNywgCisgICAgMTUxMTQ0LCAxNTExNTEsIDE1MTE1OCwgMTUxMTY1LCAxNTExNzIsIDE1MTE3OSwgMTUxMTg3LCAxNTExOTQsIDE1MTIwMCwgCisgICAgMTUxMjA3LCAxNTEyMTQsIDE1MTIyMSwgMTUxMjI4LCAxNTEyMzUsIDE1MTI0MiwgMTUxMjQ5LCAxNTEyNTYsIDE1MTI2MywgCisgICAgMTUxMjcwLCAxNTEyNzcsIDE1MTI4NCwgMTUxMjkxLCAxNTEyOTgsIDE1MTMwNSwgMTUxMzEyLCAxNTEzMTksIDE1MTMyNiwgCisgICAgMTUxMzMzLCAxNTEzNDAsIDE1MTM0NiwgMTUxMzUzLCAxNTEzNjAsIDE1MTM2NywgMTUxMzc0LCAxNTEzODEsIDE1MTM4OCwgCisgICAgMTUxMzk1LCAxNTE0MDIsIDE1MTQwOSwgMTUxNDE2LCAxNTE0MjMsIDE1MTQzMCwgMTUxNDM3LCAxNTE0NDQsIDE1MTQ1MSwgCisgICAgMTUxNDU4LCAxNTE0NjUsIDE1MTQ3MiwgMTUxNDc5LCAxNTE0ODYsIDE1MTQ5MywgMTUxNTAwLCAxNTE1MDgsIDE1MTUxNiwgCisgICAgMTUxNTI0LCAxNTE1MzEsIDE1MTUzOCwgMTUxNTQ1LCAxNTE1NTIsIDE1MTU1OSwgMTUxNTY2LCAxNTE1NzMsIDE1MTU4MCwgCisgICAgMTUxNTg3LCAxNTE1OTQsIDE1MTYwMCwgMTUxNjA3LCAxNTE2MTQsIDE1MTYyMSwgMTUxNjI4LCAxNTE2MzUsIDE1MTY0MiwgCisgICAgMTUxNjQ5LCAxNTE2NTYsIDE1MTY2MywgMTUxNjcwLCAxNTE2NzcsIDE1MTY4NCwgMTUxNjkxLCAxNTE2OTgsIDE1MTcwNiwgCisgICAgMTUxNzE0LCAxNTE3MjIsIDE1MTcyOSwgMTUxNzM2LCAxNTE3NDMsIDE1MTc1MCwgMTUxNzU3LCAxNTE3NjQsIDE1MTc3MSwgCisgICAgMTUxNzc4LCAxNTE3ODUsIDE1MTc5MiwgMTUxNzk5LCAxNTE4MDYsIDE1MTgxMywgMTUxODIwLCAxNTE4MjcsIDE1MTgzNCwgCisgICAgMTUxODQxLCAxNTE4NDgsIDE1MTg1NSwgMTUxODYyLCAxNTE4NjksIDE1MTg3NiwgMTUxODgzLCAxNTE4OTAsIDE1MTg5NywgCisgICAgMTUxOTA0LCAxNTE5MTEsIDE1MTkxOCwgMTUxOTI1LCAxNTE5MzIsIDE1MTkzOSwgMTUxOTQ2LCAxNTE5NTMsIDE1MTk2MCwgCisgICAgMTUxOTY3LCAxNTE5NzQsIDE1MTk4MSwgMCwgMCwgMTUxOTg4LCAxNTE5OTIsIDE1MTk5NiwgMTUyMDAwLCAxNTIwMDQsIAorICAgIDE1MjAwOCwgMTUyMDEyLCAxNTIwMTcsIDE1MjAyMSwgMTUyMDI2LCAxNTIwMzIsIDE1MjAzOCwgMTUyMDQ0LCAxNTIwNTAsIAorICAgIDE1MjA1OCwgMTUyMDY2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTIwNzIsIAorICAgIDE1MjA3OCwgMTUyMDg0LCAxNTIwOTAsIDE1MjA5NiwgMTUyMTAyLCAxNTIxMDgsIDE1MjExNCwgMTUyMTIwLCAxNTIxMjYsIAorICAgIDE1MjEzMSwgMTUyMTM3LCAxNTIxNDIsIDE1MjE0NywgMTUyMTUzLCAxNTIxNTksIDE1MjE2NSwgMTUyMTcxLCAxNTIxNzcsIAorICAgIDE1MjE4MiwgMTUyMTg3LCAxNTIxOTMsIDE1MjE5OSwgMTUyMjA0LCAxNTIyMTAsIDE1MjIxNiwgMTUyMjIyLCAxNTIyMjgsIAorICAgIDE1MjIzNCwgMTUyMjQwLCAxNTIyNDYsIDE1MjI1MiwgMTUyMjU4LCAxNTIyNjQsIDE1MjI3MCwgMTUyMjc2LCAxNTIyODIsIAorICAgIDE1MjI4OCwgMTUyMjk0LCAxNTIzMDAsIDE1MjMwNiwgMTUyMzEyLCAxNTIzMTgsIDE1MjMyNCwgMTUyMzI5LCAxNTIzMzUsIAorICAgIDE1MjM0MCwgMTUyMzQ1LCAxNTIzNTEsIDE1MjM1NywgMTUyMzYzLCAxNTIzNjksIDE1MjM3NSwgMTUyMzgwLCAxNTIzODUsIAorICAgIDE1MjM5MSwgMTUyMzk3LCAxNTI0MDIsIDE1MjQwOCwgMTUyNDE0LCAxNTI0MjAsIDE1MjQyNiwgMTUyNDMyLCAxNTI0MzgsIAorICAgIDE1MjQ0NCwgMTUyNDUwLCAxNTI0NTYsIDE1MjQ2MiwgMTUyNDY4LCAxNTI0NzQsIDE1MjQ3OSwgMTUyNDg0LCAxNTI0ODgsIAorICAgIDE1MjQ5MywgMTUyNTAwLCAwLCAwLCAwLCAwLCAwLCAxNTI1MDQsIDE1MjUwOSwgMTUyNTEzLCAxNTI1MTcsIDE1MjUyMSwgCisgICAgMTUyNTI1LCAxNTI1MjksIDE1MjUzMywgMTUyNTM4LCAxNTI1NDIsIDAsIDAsIDAsIDAsIDE1MjU0NywgMTUyNTUzLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDc4MjMsIDE0NzgzMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTQ3ODQxLCAxNDc4NDgsIDE0Nzg1NSwgMTQ3ODYyLCAxNDc4NjgsIDE0Nzg3NSwgMTQ3ODgyLCAKLSAgICAxNDc4ODgsIDE0Nzg5NSwgMTQ3OTAyLCAxNDc5MDksIDE0NzkxNywgMTQ3OTI1LCAxNDc5MzMsIDE0Nzk0MSwgMTQ3OTQ5LCAKLSAgICAxNDc5NTcsIDE0Nzk2NCwgMTQ3OTcxLCAxNDc5NzgsIDE0Nzk4NiwgMTQ3OTk0LCAxNDgwMDIsIDE0ODAxMCwgMTQ4MDE4LCAKLSAgICAxNDgwMjYsIDE0ODAzMywgMTQ4MDQwLCAxNDgwNDcsIDE0ODA1NSwgMTQ4MDYzLCAxNDgwNzEsIDE0ODA3OSwgMTQ4MDg3LCAKLSAgICAxNDgwOTUsIDE0ODEwMCwgMTQ4MTA1LCAxNDgxMTAsIDE0ODExNSwgMTQ4MTIwLCAxNDgxMjUsIDE0ODEzMCwgMTQ4MTM1LCAKLSAgICAxNDgxNDAsIDAsIDAsIDAsIDAsIDE0ODE0NSwgMTQ4MTUxLCAxNDgxNTUsIDE0ODE1OSwgMTQ4MTYzLCAxNDgxNjcsIAotICAgIDE0ODE3MSwgMTQ4MTc1LCAxNDgxNzksIDE0ODE4MywgMTQ4MTg3LCAxNDgxOTEsIDE0ODE5NSwgMTQ4MTk5LCAxNDgyMDMsIAotICAgIDE0ODIwNywgMTQ4MjExLCAxNDgyMTUsIDE0ODIxOSwgMTQ4MjIzLCAxNDgyMjcsIDE0ODIzMSwgMTQ4MjM1LCAxNDgyMzksIAotICAgIDE0ODI0MywgMTQ4MjQ3LCAxNDgyNTEsIDE0ODI1NSwgMTQ4MjU5LCAxNDgyNjMsIDE0ODI2NywgMTQ4MjcxLCAxNDgyNzUsIAotICAgIDE0ODI3OSwgMTQ4MjgzLCAxNDgyODcsIDE0ODI5MSwgMTQ4Mjk1LCAxNDgyOTksIDE0ODMwMywgMTQ4MzA3LCAxNDgzMTEsIAotICAgIDE0ODMxNSwgMTQ4MzE5LCAxNDgzMjMsIDE0ODMyNywgMTQ4MzMxLCAxNDgzMzUsIDE0ODMzOSwgMTQ4MzQzLCAxNDgzNDcsIAotICAgIDE0ODM1MiwgMTQ4MzU2LCAxNDgzNjAsIDE0ODM2NCwgMTQ4MzY4LCAxNDgzNzIsIDE0ODM3NiwgMTQ4MzgwLCAxNDgzODQsIAotICAgIDE0ODM4OCwgMTQ4MzkyLCAxNDgzOTYsIDE0ODQwMCwgMTQ4NDA0LCAxNDg0MDgsIDE0ODQxMiwgMTQ4NDE2LCAxNDg0MjAsIAotICAgIDE0ODQyNCwgMTQ4NDI4LCAxNDg0MzIsIDE0ODQzNiwgMTQ4NDQwLCAxNDg0NDQsIDE0ODQ0OCwgMTQ4NDUyLCAxNDg0NTYsIAotICAgIDE0ODQ2MCwgMTQ4NDY0LCAxNDg0NjgsIDE0ODQ3MiwgMTQ4NDc2LCAxNDg0ODAsIDE0ODQ4NCwgMTQ4NDg4LCAxNDg0OTIsIAotICAgIDE0ODQ5NiwgMTQ4NTAwLCAxNDg1MDQsIDE0ODUwOCwgMTQ4NTEyLCAxNDg1MTYsIDE0ODUyMCwgMTQ4NTI0LCAxNDg1MjgsIAotICAgIDE0ODUzMiwgMTQ4NTM2LCAxNDg1NDAsIDE0ODU0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTQ4NTQ4LCAxNDg1NTQsIDE0ODU2MywgMTQ4NTcxLCAxNDg1NzksIDE0ODU4OCwgMTQ4NTk3LCAxNDg2MDYsIDE0ODYxNSwgCi0gICAgMTQ4NjI0LCAxNDg2MzMsIDE0ODY0MiwgMTQ4NjUxLCAxNDg2NjAsIDE0ODY2OSwgMCwgMCwgMTQ4Njc4LCAxNDg2ODcsIAotICAgIDE0ODY5NSwgMTQ4NzAzLCAxNDg3MTIsIDE0ODcyMSwgMTQ4NzMwLCAxNDg3MzksIDE0ODc0OCwgMTQ4NzU3LCAxNDg3NjYsIAotICAgIDE0ODc3NSwgMTQ4Nzg0LCAxNDg3OTMsIDE0ODgwMiwgMCwgMTQ4ODEwLCAxNDg4MTksIDE0ODgyNywgMTQ4ODM1LCAKLSAgICAxNDg4NDQsIDE0ODg1MywgMTQ4ODYyLCAxNDg4NzEsIDE0ODg4MCwgMTQ4ODg5LCAxNDg4OTgsIDE0ODkwNywgMTQ4OTE2LCAKLSAgICAxNDg5MjUsIDE0ODkzNCwgMCwgMTQ4OTQxLCAxNDg5NTAsIDE0ODk1OCwgMTQ4OTY2LCAxNDg5NzUsIDE0ODk4NCwgCi0gICAgMTQ4OTkzLCAxNDkwMDIsIDE0OTAxMSwgMTQ5MDIwLCAxNDkwMjksIDE0OTAzOCwgMTQ5MDQ3LCAxNDkwNTYsIDE0OTA2NSwgCi0gICAgMTQ5MDcyLCAxNDkwNzgsIDE0OTA4NCwgMTQ5MDkwLCAxNDkwOTYsIDE0OTEwMiwgMTQ5MTA4LCAxNDkxMTQsIDE0OTEyMCwgCi0gICAgMTQ5MTI2LCAxNDkxMzIsIDE0OTEzOCwgMTQ5MTQ0LCAxNDkxNTAsIDE0OTE1NiwgMTQ5MTYyLCAxNDkxNjgsIDE0OTE3NCwgCi0gICAgMTQ5MTgwLCAxNDkxODYsIDE0OTE5MiwgMTQ5MTk4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDkyMDQsIAotICAgIDE0OTIxMSwgMTQ5MjE2LCAxNDkyMjAsIDE0OTIyNCwgMTQ5MjI4LCAxNDkyMzMsIDE0OTIzOCwgMTQ5MjQzLCAxNDkyNDgsIAotICAgIDE0OTI1MywgMTQ5MjU4LCAxNDkyNjUsIDAsIDAsIDAsIDE0OTI3MywgMTQ5Mjc4LCAxNDkyODQsIDE0OTI5MCwgMTQ5Mjk2LCAKLSAgICAxNDkzMDEsIDE0OTMwNywgMTQ5MzEzLCAxNDkzMTksIDE0OTMyNCwgMTQ5MzMwLCAxNDkzMzYsIDE0OTM0MSwgMTQ5MzQ3LCAKLSAgICAxNDkzNTMsIDE0OTM1OCwgMTQ5MzY0LCAxNDkzNzAsIDE0OTM3NSwgMTQ5MzgwLCAxNDkzODYsIDE0OTM5MSwgMTQ5Mzk3LCAKLSAgICAxNDk0MDMsIDE0OTQwOSwgMTQ5NDE1LCAxNDk0MjEsIDE0OTQzMSwgMTQ5NDM4LCAxNDk0NDQsIDE0OTQ0NywgMCwgCi0gICAgMTQ5NDUwLCAxNDk0NTUsIDE0OTQ2MSwgMTQ5NDY3LCAxNDk0NzMsIDE0OTQ3OCwgMTQ5NDg0LCAxNDk0OTAsIDE0OTQ5NiwgCi0gICAgMTQ5NTAxLCAxNDk1MDcsIDE0OTUxMywgMTQ5NTE4LCAxNDk1MjQsIDE0OTUzMCwgMTQ5NTM1LCAxNDk1NDEsIDE0OTU0NywgCi0gICAgMTQ5NTUyLCAxNDk1NTcsIDE0OTU2MywgMTQ5NTY4LCAxNDk1NzQsIDE0OTU4MCwgMTQ5NTg2LCAxNDk1OTIsIDE0OTU5OCwgCi0gICAgMTQ5NjAxLCAxNDk2MDQsIDE0OTYwNywgMTQ5NjEwLCAxNDk2MTMsIDE0OTYxNiwgMTQ5NjIyLCAxNDk2MjksIDE0OTYzNiwgCi0gICAgMTQ5NjQzLCAxNDk2NDksIDE0OTY1NiwgMTQ5NjYzLCAxNDk2NzAsIDE0OTY3NiwgMTQ5NjgzLCAxNDk2OTAsIDE0OTY5NiwgCi0gICAgMTQ5NzAzLCAxNDk3MTAsIDE0OTcxNiwgMTQ5NzIzLCAxNDk3MzAsIDE0OTczNiwgMTQ5NzQyLCAxNDk3NDksIDE0OTc1NSwgCi0gICAgMTQ5NzYyLCAxNDk3NjksIDE0OTc3NiwgMTQ5NzgzLCAxNDk3OTAsIDE0OTc5NSwgMCwgMCwgMCwgMCwgMTQ5ODAwLCAKLSAgICAxNDk4MDYsIDE0OTgxMywgMTQ5ODIwLCAxNDk4MjcsIDE0OTgzMywgMTQ5ODQwLCAxNDk4NDcsIDE0OTg1NCwgMTQ5ODYwLCAKLSAgICAxNDk4NjcsIDE0OTg3NCwgMTQ5ODgwLCAxNDk4ODcsIDE0OTg5NCwgMTQ5OTAwLCAxNDk5MDcsIDE0OTkxNCwgMTQ5OTIwLCAKLSAgICAxNDk5MjYsIDE0OTkzMywgMTQ5OTM5LCAxNDk5NDYsIDE0OTk1MywgMTQ5OTYwLCAxNDk5NjcsIDE0OTk3NCwgMTQ5OTgzLCAKLSAgICAxNDk5ODcsIDE0OTk5MCwgMTQ5OTk0LCAxNDk5OTgsIDE1MDAwMiwgMTUwMDA1LCAxNTAwMDgsIDE1MDAxMSwgMTUwMDE0LCAKLSAgICAxNTAwMTcsIDE1MDAyMCwgMTUwMDIzLCAxNTAwMjYsIDE1MDAyOSwgMTUwMDM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTAwMzgsIDE1MDA0NSwgCi0gICAgMTUwMDUzLCAxNTAwNjEsIDE1MDA2OSwgMTUwMDc2LCAxNTAwODQsIDE1MDA5MiwgMTUwMTAwLCAxNTAxMDcsIDE1MDExNSwgCi0gICAgMTUwMTIzLCAxNTAxMzAsIDE1MDEzOCwgMTUwMTQ2LCAxNTAxNTMsIDE1MDE2MSwgMTUwMTY5LCAxNTAxNzYsIDE1MDE4MywgCi0gICAgMTUwMTkxLCAxNTAxOTgsIDE1MDIwNiwgMTUwMjE0LCAxNTAyMjIsIDE1MDIzMCwgMTUwMjM4LCAxNTAyNDIsIDE1MDI0NiwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUwMjUwLCAxNTAyNTYsIDE1MDI2MiwgMTUwMjY4LCAKLSAgICAxNTAyNzIsIDE1MDI3OCwgMTUwMjg0LCAxNTAyOTAsIDE1MDI5NiwgMTUwMzAyLCAxNTAzMDgsIDE1MDMxNCwgMTUwMzIwLCAKLSAgICAxNTAzMjYsIDE1MDMzMiwgMTUwMzM4LCAxNTAzNDQsIDE1MDM1MCwgMTUwMzU2LCAxNTAzNjIsIDE1MDM2OCwgMTUwMzc0LCAKLSAgICAxNTAzODAsIDE1MDM4NiwgMTUwMzkyLCAxNTAzOTgsIDE1MDQwNCwgMTUwNDEwLCAxNTA0MTYsIDE1MDQyMiwgMTUwNDI4LCAKLSAgICAxNTA0MzQsIDE1MDQ0MCwgMTUwNDQ2LCAxNTA0NTIsIDE1MDQ1OCwgMTUwNDY0LCAxNTA0NzAsIDE1MDQ3NiwgMTUwNDgyLCAKLSAgICAxNTA0ODgsIDE1MDQ5NCwgMTUwNTAwLCAwLCAwLCAwLCAwLCAwLCAxNTA1MDYsIDE1MDUxNywgMTUwNTI4LCAxNTA1MzksIAotICAgIDE1MDU1MCwgMTUwNTYxLCAxNTA1NzIsIDE1MDU4MywgMTUwNTk0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTA2MDUsIAotICAgIDE1MDYwOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUyNTU5LCAxNTI1NjMsIDE1MjU2NywgMTUyNTcxLCAKKyAgICAwLCAxNTI1NzUsIDE1MjU3OSwgMTUyNTgzLCAxNTI1ODcsIDE1MjU5MSwgMTUyNTk1LCAxNTI1OTksIDE1MjYwMywgCisgICAgMTUyNjA3LCAxNTI2MTEsIDE1MjYxNSwgMTUyNjE5LCAxNTI2MjMsIDE1MjYyNywgMTUyNjMxLCAxNTI2MzUsIDE1MjYzOSwgCisgICAgMTUyNjQzLCAxNTI2NDcsIDE1MjY1MSwgMTUyNjU1LCAxNTI2NTksIDE1MjY2MywgMTUyNjY3LCAxNTI2NzMsIDE1MjY3OSwgCisgICAgMTUyNjg1LCAwLCAxNTI2OTEsIDE1MjY5NiwgMCwgMTUyNzAxLCAwLCAwLCAxNTI3MDYsIDAsIDE1MjcxMSwgMTUyNzE2LCAKKyAgICAxNTI3MjEsIDE1MjcyNiwgMTUyNzMxLCAxNTI3MzYsIDE1Mjc0MSwgMTUyNzQ2LCAxNTI3NTEsIDE1Mjc1NiwgMCwgCisgICAgMTUyNzYxLCAxNTI3NjYsIDE1Mjc3MSwgMTUyNzc2LCAwLCAxNTI3ODEsIDAsIDE1Mjc4NiwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTUyNzkxLCAwLCAwLCAwLCAwLCAxNTI3OTcsIDAsIDE1MjgwMywgMCwgMTUyODA5LCAwLCAxNTI4MTUsIDE1MjgyMSwgCisgICAgMTUyODI3LCAwLCAxNTI4MzMsIDE1MjgzOSwgMCwgMTUyODQ1LCAwLCAwLCAxNTI4NTEsIDAsIDE1Mjg1NywgMCwgMTUyODYzLCAKKyAgICAwLCAxNTI4NjksIDAsIDE1Mjg3NywgMCwgMTUyODg1LCAxNTI4OTEsIDAsIDE1Mjg5NywgMCwgMCwgMTUyOTAzLCAxNTI5MDksIAorICAgIDE1MjkxNSwgMTUyOTIxLCAwLCAxNTI5MjcsIDE1MjkzMywgMTUyOTM5LCAxNTI5NDUsIDE1Mjk1MSwgMTUyOTU3LCAKKyAgICAxNTI5NjMsIDAsIDE1Mjk2OSwgMTUyOTc1LCAxNTI5ODEsIDE1Mjk4NywgMCwgMTUyOTkzLCAxNTI5OTksIDE1MzAwNSwgCisgICAgMTUzMDExLCAwLCAxNTMwMTksIDAsIDE1MzAyNywgMTUzMDMzLCAxNTMwMzksIDE1MzA0NSwgMTUzMDUxLCAxNTMwNTcsIAorICAgIDE1MzA2MywgMTUzMDY5LCAxNTMwNzUsIDE1MzA4MSwgMCwgMTUzMDg3LCAxNTMwOTMsIDE1MzA5OSwgMTUzMTA1LCAKKyAgICAxNTMxMTEsIDE1MzExNywgMTUzMTIzLCAxNTMxMjksIDE1MzEzNSwgMTUzMTQxLCAxNTMxNDcsIDE1MzE1MywgMTUzMTU5LCAKKyAgICAxNTMxNjUsIDE1MzE3MSwgMTUzMTc3LCAxNTMxODMsIDAsIDAsIDAsIDAsIDAsIDE1MzE4OSwgMTUzMTk0LCAxNTMxOTksIDAsIAorICAgIDE1MzIwNCwgMTUzMjA5LCAxNTMyMTQsIDE1MzIxOSwgMTUzMjI0LCAwLCAxNTMyMjksIDE1MzIzNCwgMTUzMjM5LCAKKyAgICAxNTMyNDQsIDE1MzI0OSwgMTUzMjU0LCAxNTMyNTksIDE1MzI2NCwgMTUzMjY5LCAxNTMyNzQsIDE1MzI3OSwgMTUzMjg0LCAKKyAgICAxNTMyODksIDE1MzI5NCwgMTUzMjk5LCAxNTMzMDQsIDE1MzMwOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUzMzE0LCAxNTMzMjQsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MzMzMiwgMTUzMzM5LCAxNTMzNDYsIDE1MzM1MywgCisgICAgMTUzMzU5LCAxNTMzNjYsIDE1MzM3MywgMTUzMzc5LCAxNTMzODYsIDE1MzM5MywgMTUzNDAwLCAxNTM0MDgsIDE1MzQxNiwgCisgICAgMTUzNDI0LCAxNTM0MzIsIDE1MzQ0MCwgMTUzNDQ4LCAxNTM0NTUsIDE1MzQ2MiwgMTUzNDY5LCAxNTM0NzcsIDE1MzQ4NSwgCisgICAgMTUzNDkzLCAxNTM1MDEsIDE1MzUwOSwgMTUzNTE3LCAxNTM1MjQsIDE1MzUzMSwgMTUzNTM4LCAxNTM1NDYsIDE1MzU1NCwgCisgICAgMTUzNTYyLCAxNTM1NzAsIDE1MzU3OCwgMTUzNTg2LCAxNTM1OTEsIDE1MzU5NiwgMTUzNjAxLCAxNTM2MDYsIDE1MzYxMSwgCisgICAgMTUzNjE2LCAxNTM2MjEsIDE1MzYyNiwgMTUzNjMxLCAwLCAwLCAwLCAwLCAxNTM2MzYsIDE1MzY0MiwgMTUzNjQ2LCAKKyAgICAxNTM2NTAsIDE1MzY1NCwgMTUzNjU4LCAxNTM2NjIsIDE1MzY2NiwgMTUzNjcwLCAxNTM2NzQsIDE1MzY3OCwgMTUzNjgyLCAKKyAgICAxNTM2ODYsIDE1MzY5MCwgMTUzNjk0LCAxNTM2OTgsIDE1MzcwMiwgMTUzNzA2LCAxNTM3MTAsIDE1MzcxNCwgMTUzNzE4LCAKKyAgICAxNTM3MjIsIDE1MzcyNiwgMTUzNzMwLCAxNTM3MzQsIDE1MzczOCwgMTUzNzQyLCAxNTM3NDYsIDE1Mzc1MCwgMTUzNzU0LCAKKyAgICAxNTM3NTgsIDE1Mzc2MiwgMTUzNzY2LCAxNTM3NzAsIDE1Mzc3NCwgMTUzNzc4LCAxNTM3ODIsIDE1Mzc4NiwgMTUzNzkwLCAKKyAgICAxNTM3OTQsIDE1Mzc5OCwgMTUzODAyLCAxNTM4MDYsIDE1MzgxMCwgMTUzODE0LCAxNTM4MTgsIDE1MzgyMiwgMTUzODI2LCAKKyAgICAxNTM4MzAsIDE1MzgzNCwgMTUzODM4LCAxNTM4NDMsIDE1Mzg0NywgMTUzODUxLCAxNTM4NTUsIDE1Mzg1OSwgMTUzODYzLCAKKyAgICAxNTM4NjcsIDE1Mzg3MSwgMTUzODc1LCAxNTM4NzksIDE1Mzg4MywgMTUzODg3LCAxNTM4OTEsIDE1Mzg5NSwgMTUzODk5LCAKKyAgICAxNTM5MDMsIDE1MzkwNywgMTUzOTExLCAxNTM5MTUsIDE1MzkxOSwgMTUzOTIzLCAxNTM5MjcsIDE1MzkzMSwgMTUzOTM1LCAKKyAgICAxNTM5MzksIDE1Mzk0MywgMTUzOTQ3LCAxNTM5NTEsIDE1Mzk1NSwgMTUzOTU5LCAxNTM5NjMsIDE1Mzk2NywgMTUzOTcxLCAKKyAgICAxNTM5NzUsIDE1Mzk3OSwgMTUzOTgzLCAxNTM5ODcsIDE1Mzk5MSwgMTUzOTk1LCAxNTM5OTksIDE1NDAwMywgMTU0MDA3LCAKKyAgICAxNTQwMTEsIDE1NDAxNSwgMTU0MDE5LCAxNTQwMjMsIDE1NDAyNywgMTU0MDMxLCAxNTQwMzUsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE1NDAzOSwgMTU0MDQ1LCAxNTQwNTQsIDE1NDA2MiwgMTU0MDcwLCAxNTQwNzksIDE1NDA4OCwgCisgICAgMTU0MDk3LCAxNTQxMDYsIDE1NDExNSwgMTU0MTI0LCAxNTQxMzMsIDE1NDE0MiwgMTU0MTUxLCAxNTQxNjAsIDAsIDAsIAorICAgIDE1NDE2OSwgMTU0MTc4LCAxNTQxODYsIDE1NDE5NCwgMTU0MjAzLCAxNTQyMTIsIDE1NDIyMSwgMTU0MjMwLCAxNTQyMzksIAorICAgIDE1NDI0OCwgMTU0MjU3LCAxNTQyNjYsIDE1NDI3NSwgMTU0Mjg0LCAxNTQyOTMsIDAsIDE1NDMwMSwgMTU0MzEwLCAKKyAgICAxNTQzMTgsIDE1NDMyNiwgMTU0MzM1LCAxNTQzNDQsIDE1NDM1MywgMTU0MzYyLCAxNTQzNzEsIDE1NDM4MCwgMTU0Mzg5LCAKKyAgICAxNTQzOTgsIDE1NDQwNywgMTU0NDE2LCAxNTQ0MjUsIDAsIDE1NDQzMiwgMTU0NDQxLCAxNTQ0NDksIDE1NDQ1NywgCisgICAgMTU0NDY2LCAxNTQ0NzUsIDE1NDQ4NCwgMTU0NDkzLCAxNTQ1MDIsIDE1NDUxMSwgMTU0NTIwLCAxNTQ1MjksIDE1NDUzOCwgCisgICAgMTU0NTQ3LCAxNTQ1NTYsIDE1NDU2MywgMTU0NTY5LCAxNTQ1NzUsIDE1NDU4MSwgMTU0NTg3LCAxNTQ1OTMsIDE1NDU5OSwgCisgICAgMTU0NjA1LCAxNTQ2MTEsIDE1NDYxNywgMTU0NjIzLCAxNTQ2MjksIDE1NDYzNSwgMTU0NjQxLCAxNTQ2NDcsIDE1NDY1MywgCisgICAgMTU0NjU5LCAxNTQ2NjUsIDE1NDY3MSwgMTU0Njc3LCAxNTQ2ODMsIDE1NDY4OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTU0Njk1LCAxNTQ3MDIsIDE1NDcwNywgMTU0NzExLCAxNTQ3MTUsIDE1NDcxOSwgMTU0NzI0LCAxNTQ3MjksIAorICAgIDE1NDczNCwgMTU0NzM5LCAxNTQ3NDQsIDE1NDc0OSwgMTU0NzU2LCAwLCAwLCAwLCAxNTQ3NjQsIDE1NDc2OSwgMTU0Nzc1LCAKKyAgICAxNTQ3ODEsIDE1NDc4NywgMTU0NzkyLCAxNTQ3OTgsIDE1NDgwNCwgMTU0ODEwLCAxNTQ4MTUsIDE1NDgyMSwgMTU0ODI3LCAKKyAgICAxNTQ4MzIsIDE1NDgzOCwgMTU0ODQ0LCAxNTQ4NDksIDE1NDg1NSwgMTU0ODYxLCAxNTQ4NjYsIDE1NDg3MiwgMTU0ODc4LCAKKyAgICAxNTQ4ODMsIDE1NDg4OSwgMTU0ODk1LCAxNTQ5MDEsIDE1NDkwNywgMTU0OTEzLCAxNTQ5MjQsIDE1NDkzMSwgMTU0OTM3LCAKKyAgICAxNTQ5NDAsIDAsIDE1NDk0MywgMTU0OTQ4LCAxNTQ5NTQsIDE1NDk2MCwgMTU0OTY2LCAxNTQ5NzEsIDE1NDk3NywgCisgICAgMTU0OTgzLCAxNTQ5ODksIDE1NDk5NCwgMTU1MDAwLCAxNTUwMDYsIDE1NTAxMSwgMTU1MDE3LCAxNTUwMjMsIDE1NTAyOCwgCisgICAgMTU1MDM0LCAxNTUwNDAsIDE1NTA0NSwgMTU1MDUxLCAxNTUwNTcsIDE1NTA2MiwgMTU1MDY4LCAxNTUwNzQsIDE1NTA4MCwgCisgICAgMTU1MDg2LCAxNTUwOTIsIDE1NTA5NSwgMTU1MDk4LCAxNTUxMDEsIDE1NTEwNCwgMTU1MTA3LCAxNTUxMTAsIDE1NTExNiwgCisgICAgMTU1MTIzLCAxNTUxMzAsIDE1NTEzNywgMTU1MTQzLCAxNTUxNTAsIDE1NTE1NywgMTU1MTY0LCAxNTUxNzAsIDE1NTE3NywgCisgICAgMTU1MTg0LCAxNTUxOTAsIDE1NTE5NywgMTU1MjA0LCAxNTUyMTAsIDE1NTIxNywgMTU1MjI0LCAxNTUyMzAsIDE1NTIzNywgCisgICAgMTU1MjQ0LCAxNTUyNTAsIDE1NTI1NywgMTU1MjY0LCAxNTUyNzEsIDE1NTI3OCwgMTU1Mjg1LCAxNTUyOTAsIDAsIDAsIDAsIAorICAgIDAsIDE1NTI5NSwgMTU1MzAxLCAxNTUzMDgsIDE1NTMxNSwgMTU1MzIyLCAxNTUzMjgsIDE1NTMzNSwgMTU1MzQyLCAKKyAgICAxNTUzNDksIDE1NTM1NSwgMTU1MzYyLCAxNTUzNjksIDE1NTM3NSwgMTU1MzgyLCAxNTUzODksIDE1NTM5NSwgMTU1NDAyLCAKKyAgICAxNTU0MDksIDE1NTQxNSwgMTU1NDIyLCAxNTU0MjksIDE1NTQzNSwgMTU1NDQyLCAxNTU0NDksIDE1NTQ1NiwgMTU1NDYzLCAKKyAgICAxNTU0NzAsIDE1NTQ3OSwgMTU1NDgzLCAxNTU0ODYsIDE1NTQ5MCwgMTU1NDk0LCAxNTU0OTgsIDE1NTUwMSwgMTU1NTA0LCAKKyAgICAxNTU1MDcsIDE1NTUxMCwgMTU1NTEzLCAxNTU1MTYsIDE1NTUxOSwgMTU1NTIyLCAxNTU1MjUsIDE1NTUzMSwgMTU1NTM0LCAKKyAgICAxNTU1MzgsIDE1NTU0MywgMTU1NTQ3LCAxNTU1NTIsIDE1NTU1NywgMTU1NTYzLCAxNTU1NjksIDE1NTU3NSwgMTU1NTgwLCAKKyAgICAxNTU1ODgsIDE1NTU5NCwgMTU1NTk3LCAxNTU2MDAsIDE1NTYwMywgMTU1NjA2LCAxNTU2MDksIDE1NTYxMiwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTU1NjE1LCAxNTU2MjIsIDE1NTYzMCwgMTU1NjM4LCAxNTU2NDYsIDE1NTY1MywgMTU1NjYxLCAKKyAgICAxNTU2NjksIDE1NTY3NywgMTU1Njg0LCAxNTU2OTIsIDE1NTcwMCwgMTU1NzA3LCAxNTU3MTUsIDE1NTcyMywgMTU1NzMwLCAKKyAgICAxNTU3MzgsIDE1NTc0NiwgMTU1NzUzLCAxNTU3NjEsIDE1NTc2OSwgMTU1Nzc2LCAxNTU3ODQsIDE1NTc5MiwgMTU1ODAwLCAKKyAgICAxNTU4MDgsIDE1NTgxNiwgMTU1ODIwLCAxNTU4MjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE1NTgyOCwgMTU1ODM0LCAxNTU4NDAsIDE1NTg0NiwgMTU1ODUwLCAxNTU4NTYsIDE1NTg2MiwgMTU1ODY4LCAxNTU4NzQsIAorICAgIDE1NTg4MCwgMTU1ODg2LCAxNTU4OTIsIDE1NTg5OCwgMTU1OTA0LCAxNTU5MTAsIDE1NTkxNiwgMTU1OTIyLCAxNTU5MjgsIAorICAgIDE1NTkzNCwgMTU1OTQwLCAxNTU5NDYsIDE1NTk1MiwgMTU1OTU4LCAxNTU5NjQsIDE1NTk3MCwgMTU1OTc2LCAxNTU5ODIsIAorICAgIDE1NTk4OCwgMTU1OTk0LCAxNTYwMDAsIDE1NjAwNiwgMTU2MDEyLCAxNTYwMTgsIDE1NjAyNCwgMTU2MDMwLCAxNTYwMzYsIAorICAgIDE1NjA0MiwgMTU2MDQ4LCAxNTYwNTQsIDE1NjA2MCwgMTU2MDY2LCAxNTYwNzIsIDE1NjA3OCwgMTU2MDg0LCAwLCAwLCAwLCAKKyAgICAwLCAxNTYwOTAsIDE1NjEwMSwgMTU2MTEyLCAxNTYxMjMsIDE1NjEzNCwgMTU2MTQ1LCAxNTYxNTYsIDE1NjE2NywgCisgICAgMTU2MTc4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTYxODksIDE1NjE5NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUwNjEzLCAxNTA2MTUsIDE1MDYxNywgMTUwNjIxLCAxNTA2MjYsIDE1MDYzMSwgCi0gICAgMTUwNjMzLCAxNTA2MzksIDE1MDY0NCwgMTUwNjQ2LCAxNTA2NTIsIDE1MDY1NiwgMTUwNjU4LCAxNTA2NjIsIDE1MDY2OCwgCi0gICAgMTUwNjc0LCAxNTA2ODAsIDE1MDY4NSwgMTUwNjkwLCAxNTA2OTcsIDE1MDcwNCwgMTUwNzExLCAxNTA3MTYsIDE1MDcyMywgCi0gICAgMTUwNzMwLCAxNTA3MzcsIDE1MDc0MSwgMTUwNzQ4LCAxNTA3NTcsIDE1MDc2NiwgMTUwNzczLCAxNTA3NzgsIDE1MDc4MiwgCi0gICAgMTUwNzg2LCAxNTA3ODgsIDE1MDc5MSwgMTUwNzk0LCAxNTA4MDEsIDE1MDgwOCwgMTUwODE4LCAxNTA4MjMsIDE1MDgyOCwgCi0gICAgMTUwODMzLCAxNTA4MzgsIDE1MDg0MCwgMTUwODQ2LCAxNTA4NTAsIDE1MDg1MiwgMTUwODU0LCAxNTA4NTYsIDE1MDg1OCwgCi0gICAgMTUwODYyLCAxNTA4NjYsIDE1MDg3MCwgMTUwODcyLCAxNTA4NzYsIDE1MDg3OCwgMTUwODgyLCAxNTA4ODQsIDE1MDg4NiwgCi0gICAgMTUwODg4LCAxNTA4OTAsIDE1MDg5NSwgMTUwOTAwLCAxNTA5MDIsIDE1MDkwOCwgMTUwOTEyLCAxNTA5MTYsIDE1MDkyNCwgCi0gICAgMTUwOTI2LCAxNTA5MjgsIDE1MDkzMCwgMTUwOTMyLCAxNTA5MzQsIDE1MDkzNiwgMTUwOTM4LCAxNTA5NDAsIDE1MDk0MiwgCi0gICAgMTUwOTQ0LCAxNTA5NDgsIDE1MDk1MiwgMTUwOTU0LCAxNTA5NTYsIDE1MDk1OCwgMTUwOTYwLCAxNTA5NjIsIDE1MDk2NywgCi0gICAgMTUwOTczLCAxNTA5NzcsIDE1MDk4MSwgMTUwOTg1LCAxNTA5ODksIDE1MDk5NCwgMTUwOTk4LCAxNTEwMDAsIDE1MTAwMiwgCi0gICAgMTUxMDA2LCAxNTEwMTIsIDE1MTAxNCwgMTUxMDE2LCAxNTEwMTgsIDE1MTAyMiwgMTUxMDMxLCAxNTEwMzcsIDE1MTA0MSwgCi0gICAgMTUxMDQ1LCAxNTEwNDcsIDE1MTA0OSwgMTUxMDUyLCAxNTEwNTQsIDE1MTA1NiwgMTUxMDU4LCAxNTEwNjIsIDE1MTA2NCwgCi0gICAgMTUxMDY4LCAxNTEwNzMsIDE1MTA3NSwgMTUxMDgwLCAxNTEwODYsIDE1MTA5MywgMTUxMDk3LCAxNTExMDEsIDE1MTEwNSwgCi0gICAgMTUxMTA5LCAxNTExMTUsIDE1MTExOSwgMTUxMTI3LCAxNTExMzQsIDE1MTEzNiwgMTUxMTM4LCAxNTExNDIsIDE1MTE0NiwgCi0gICAgMTUxMTQ4LCAxNTExNTIsIDE1MTE1NiwgMTUxMTU4LCAxNTExNjIsIDE1MTE2NCwgMTUxMTY4LCAxNTExNzIsIDE1MTE3NiwgCi0gICAgMTUxMTgwLCAxNTExODQsIDE1MTE4OCwgMTUxMTkyLCAxNTExOTYsIDE1MTIwMiwgMTUxMjA2LCAxNTEyMTAsIDE1MTIyMSwgCi0gICAgMTUxMjI2LCAxNTEyMzAsIDE1MTIzNCwgMTUxMjQwLCAxNTEyNDQsIDE1MTI0OCwgMTUxMjUyLCAxNTEyNTksIDE1MTI2NiwgCi0gICAgMTUxMjcwLCAxNTEyNzQsIDE1MTI3OCwgMTUxMjgyLCAxNTEyODYsIDE1MTI5MywgMTUxMjk1LCAxNTEyOTksIDE1MTMwMSwgCi0gICAgMTUxMzAzLCAxNTEzMDcsIDE1MTMxMSwgMTUxMzE1LCAxNTEzMTcsIDE1MTMyMSwgMTUxMzI1LCAxNTEzMjksIDE1MTMzMywgCi0gICAgMTUxMzM3LCAxNTEzMzksIDE1MTM0MywgMTUxMzQ1LCAxNTEzNTEsIDE1MTM1NCwgMTUxMzU5LCAxNTEzNjEsIDE1MTM2MywgCi0gICAgMTUxMzY2LCAxNTEzNjgsIDE1MTM3MCwgMTUxMzczLCAxNTEzODAsIDE1MTM4NywgMTUxMzk0LCAxNTEzOTksIDE1MTQwMywgCi0gICAgMTUxNDA1LCAxNTE0MDcsIDE1MTQwOSwgMTUxNDEzLCAxNTE0MTUsIDE1MTQxOSwgMTUxNDIzLCAxNTE0MjcsIDE1MTQyOSwgCi0gICAgMTUxNDMzLCAxNTE0MzUsIDE1MTQzOSwgMTUxNDQzLCAxNTE0NTAsIDE1MTQ1MiwgMTUxNDYxLCAxNTE0NzAsIDE1MTQ3OSwgCi0gICAgMTUxNDg1LCAxNTE0ODcsIDE1MTQ5MiwgMTUxNDk2LCAxNTE1MDAsIDE1MTUwMiwgMTUxNTA4LCAxNTE1MTIsIDE1MTUxNCwgCi0gICAgMTUxNTE4LCAxNTE1MjIsIDE1MTUyNCwgMTUxNTI4LCAxNTE1MzMsIDE1MTUzNywgMTUxNTQzLCAxNTE1NDksIDE1MTU1MSwgCi0gICAgMTUxNTUzLCAxNTE1NTksIDE1MTU2MSwgMTUxNTY1LCAxNTE1NjksIDE1MTU3MSwgMTUxNTc1LCAxNTE1NzcsIDE1MTU4MSwgCi0gICAgMTUxNTg1LCAxNTE1ODksIDE1MTU5MiwgMTUxNTk1LCAxNTE2MDAsIDE1MTYwNSwgMTUxNjA3LCAxNTE2MTAsIDE1MTYxMiwgCi0gICAgMTUxNjE5LCAxNTE2MjMsIDE1MTYyNSwgMTUxNjMyLCAxNTE2MzksIDE1MTY0NiwgMTUxNjUzLCAxNTE2NjAsIDE1MTY2MiwgCi0gICAgMTUxNjY0LCAxNTE2NjYsIDE1MTY3MCwgMTUxNjcyLCAxNTE2NzQsIDE1MTY3NiwgMTUxNjc4LCAxNTE2ODAsIDE1MTY4MiwgCi0gICAgMTUxNjg0LCAxNTE2ODYsIDE1MTY4OCwgMTUxNjkwLCAxNTE2OTIsIDE1MTY5NCwgMTUxNjk2LCAxNTE2OTgsIDE1MTcwMCwgCi0gICAgMTUxNzAyLCAxNTE3MDQsIDE1MTcwNiwgMTUxNzA4LCAxNTE3MTAsIDE1MTcxMiwgMTUxNzE0LCAxNTE3MTgsIDE1MTcyMCwgCi0gICAgMTUxNzIyLCAxNTE3MjQsIDE1MTcyOCwgMTUxNzMwLCAxNTE3MzQsIDE1MTczNiwgMTUxNzM4LCAxNTE3NDIsIDE1MTc0NiwgCi0gICAgMTUxNzUyLCAxNTE3NTQsIDE1MTc1NiwgMTUxNzU4LCAxNTE3NjAsIDE1MTc2NCwgMTUxNzY4LCAxNTE3NzAsIDE1MTc3NCwgCi0gICAgMTUxNzc4LCAxNTE3ODIsIDE1MTc4NiwgMTUxNzkwLCAxNTE3OTQsIDE1MTc5OCwgMTUxODAyLCAxNTE4MDYsIDE1MTgxMCwgCi0gICAgMTUxODE0LCAxNTE4MTgsIDE1MTgyMiwgMTUxODI2LCAxNTE4MzAsIDE1MTgzNCwgMTUxODM4LCAxNTE4NDIsIDE1MTg0NCwgCi0gICAgMTUxODQ2LCAxNTE4NDgsIDE1MTg1MCwgMTUxODUyLCAxNTE4NTQsIDE1MTg1NiwgMTUxODY0LCAxNTE4NzIsIDE1MTg4MCwgCi0gICAgMTUxODg4LCAxNTE4OTMsIDE1MTg5OCwgMTUxOTAzLCAxNTE5MDcsIDE1MTkxMSwgMTUxOTE2LCAxNTE5MjAsIDE1MTkyMiwgCi0gICAgMTUxOTI2LCAxNTE5MjgsIDE1MTkzMCwgMTUxOTMyLCAxNTE5MzQsIDE1MTkzNiwgMTUxOTM4LCAxNTE5NDAsIDE1MTk0NCwgCi0gICAgMTUxOTQ2LCAxNTE5NDgsIDE1MTk1MCwgMTUxOTU0LCAxNTE5NTgsIDE1MTk2MiwgMTUxOTY2LCAxNTE5NzAsIDE1MTk3MiwgCi0gICAgMTUxOTc4LCAxNTE5ODQsIDE1MTk4NiwgMTUxOTg4LCAxNTE5OTAsIDE1MTk5MiwgMTUxOTk0LCAxNTIwMDMsIDE1MjAxMCwgCi0gICAgMTUyMDE3LCAxNTIwMjEsIDE1MjAyOCwgMTUyMDMzLCAxNTIwNDAsIDE1MjA0OSwgMTUyMDU0LCAxNTIwNTgsIDE1MjA2MiwgCi0gICAgMTUyMDY0LCAxNTIwNjgsIDE1MjA3MCwgMTUyMDc0LCAxNTIwNzgsIDE1MjA4MCwgMTUyMDg0LCAxNTIwODgsIDE1MjA5MiwgCi0gICAgMTUyMDk0LCAxNTIwOTYsIDE1MjEwMiwgMTUyMTA0LCAxNTIxMDYsIDE1MjEwOCwgMTUyMTEyLCAxNTIxMTYsIDE1MjExOCwgCi0gICAgMTUyMTIyLCAxNTIxMjQsIDE1MjEyNiwgMTUyMTI5LCAxNTIxMzMsIDE1MjEzNSwgMTUyMTM5LCAxNTIxNDEsIDE1MjE0MywgCi0gICAgMTUyMTQ4LCAxNTIxNTAsIDE1MjE1NCwgMTUyMTU4LCAxNTIxNjEsIDE1MjE2NSwgMTUyMTY5LCAxNTIxNzMsIDE1MjE3NywgCi0gICAgMTUyMTgxLCAxNTIxODUsIDE1MjE4OSwgMTUyMTk0LCAxNTIxOTgsIDE1MjIwMiwgMTUyMjExLCAxNTIyMTYsIDE1MjIxOSwgCi0gICAgMTUyMjIxLCAxNTIyMjQsIDE1MjIyNywgMTUyMjMyLCAxNTIyMzQsIDE1MjIzNywgMTUyMjQyLCAxNTIyNDYsIDE1MjI0OSwgCi0gICAgMTUyMjUzLCAxNTIyNTcsIDE1MjI2MCwgMTUyMjY1LCAxNTIyNjksIDE1MjI3MywgMTUyMjc3LCAxNTIyODEsIDE1MjI4NywgCi0gICAgMTUyMjkzLCAxNTIyOTksIDE1MjMwNSwgMTUyMzEwLCAxNTIzMjAsIDE1MjMyMiwgMTUyMzI2LCAxNTIzMjgsIDE1MjMzMCwgCi0gICAgMTUyMzM0LCAxNTIzMzgsIDE1MjM0MCwgMTUyMzQ0LCAxNTIzNDksIDE1MjM1NCwgMTUyMzYwLCAxNTIzNjIsIDE1MjM2NiwgCi0gICAgMTUyMzcwLCAxNTIzNzYsIDE1MjM4MiwgMTUyMzg2LCAxNTIzODgsIDE1MjM5MCwgMTUyMzk0LCAxNTIzOTYsIDE1MjQwMCwgCi0gICAgMTUyNDA0LCAxNTI0MDgsIDE1MjQxMCwgMTUyNDEyLCAxNTI0MTksIDE1MjQyMywgMTUyNDI2LCAxNTI0MzAsIDE1MjQzNCwgCi0gICAgMTUyNDM4LCAxNTI0NDAsIDE1MjQ0NCwgMTUyNDQ2LCAxNTI0NDgsIDE1MjQ1MiwgMTUyNDU0LCAxNTI0NTgsIDE1MjQ2MiwgCi0gICAgMTUyNDY4LCAxNTI0NzIsIDE1MjQ3NiwgMTUyNDgwLCAxNTI0ODIsIDE1MjQ4NSwgMTUyNDg5LCAxNTI0OTUsIDE1MjUwNCwgCi0gICAgMTUyNTEzLCAxNTI1MjEsIDE1MjUyOSwgMTUyNTMxLCAxNTI1MzUsIDE1MjUzNywgMTUyNTQxLCAxNTI1NTIsIDE1MjU1NiwgCi0gICAgMTUyNTYyLCAxNTI1NjgsIDE1MjU3MywgMTUyNTc1LCAxNTI1ODAsIDE1MjU4NCwgMTUyNTg2LCAxNTI1ODgsIDE1MjU5MCwgCi0gICAgMTUyNTk0LCAxNTI1OTgsIDE1MjYwMiwgMTUyNjA3LCAxNTI2MTcsIDE1MjYzMiwgMTUyNjQyLCAxNTI2NTIsIDE1MjY1NiwgCi0gICAgMTUyNjYwLCAxNTI2NjYsIDE1MjY2OCwgMTUyNjc2LCAxNTI2ODQsIDE1MjY4NiwgMTUyNjkwLCAxNTI2OTYsIDE1MjcwMiwgCi0gICAgMTUyNzA5LCAxNTI3MTYsIDE1MjcxOCwgMTUyNzIwLCAxNTI3MjMsIDE1MjcyNSwgMTUyNzMxLCAxNTI3MzMsIDE1MjczNiwgCi0gICAgMTUyNzQwLCAxNTI3NDYsIDE1Mjc1MiwgMTUyNzYzLCAxNTI3NjksIDE1Mjc3NSwgMTUyNzgzLCAxNTI3ODcsIDE1Mjc5NSwgCi0gICAgMTUyODAzLCAxNTI4MDksIDE1MjgxNSwgMTUyODIyLCAxNTI4MjQsIDE1MjgyOCwgMTUyODMwLCAxNTI4MzIsIDE1MjgzNywgCi0gICAgMTUyODM5LCAxNTI4NDEsIDE1Mjg0MywgMTUyODQ1LCAxNTI4NDksIDE1Mjg1OSwgMTUyODY1LCAxNTI4NjksIDE1Mjg3MywgCi0gICAgMTUyODc3LCAxNTI4ODMsIDE1Mjg4OSwgMTUyODk1LCAxNTI5MDEsIDE1MjkwNiwgMTUyOTExLCAxNTI5MTcsIDE1MjkyMywgCi0gICAgMTUyOTMwLCAxNTI5MzcsIDE1Mjk0NSwgMTUyOTUzLCAxNTI5NTgsIDE1Mjk2NiwgMTUyOTcwLCAxNTI5NzksIDE1Mjk4OCwgCi0gICAgMTUyOTk0LCAxNTI5OTgsIDE1MzAwMiwgMTUzMDA2LCAxNTMwMDksIDE1MzAxNCwgMTUzMDE2LCAxNTMwMTgsIDE1MzAyMCwgCi0gICAgMTUzMDI3LCAxNTMwMzIsIDE1MzAzOSwgMTUzMDQ2LCAxNTMwNTMsIDE1MzA2MSwgMTUzMDY5LCAxNTMwNzcsIDE1MzA4NSwgCi0gICAgMTUzMDkzLCAxNTMxMDEsIDE1MzEwOSwgMTUzMTE3LCAxNTMxMjUsIDE1MzEzMSwgMTUzMTM3LCAxNTMxNDMsIDE1MzE0OSwgCi0gICAgMTUzMTU1LCAxNTMxNjEsIDE1MzE2NywgMTUzMTczLCAxNTMxNzksIDE1MzE4NSwgMTUzMTkxLCAxNTMxOTcsIDE1MzIwMCwgCi0gICAgMTUzMjA5LCAxNTMyMTgsIDE1MzIyMCwgMTUzMjI3LCAxNTMyMzEsIDE1MzIzMywgMTUzMjM1LCAxNTMyMzksIDE1MzI0NSwgCi0gICAgMTUzMjQ5LCAxNTMyNTEsIDE1MzI2MSwgMTUzMjY3LCAxNTMyNzEsIDE1MzI3MywgMTUzMjc3LCAwLCAxNTMyNzksIAotICAgIDE1MzI4NiwgMTUzMjkzLCAxNTMzMDAsIDE1MzMwNSwgMTUzMzEwLCAxNTMzMTksIDE1MzMyNSwgMTUzMzMwLCAxNTMzMzQsIAotICAgIDE1MzMzOSwgMTUzMzQzLCAxNTMzNTAsIDE1MzM1NCwgMTUzMzU3LCAxNTMzNjIsIDE1MzM2OSwgMTUzMzc2LCAxNTMzODEsIAotICAgIDE1MzM4NiwgMTUzMzkxLCAxNTMzOTgsIDE1MzQwNywgMTUzNDE4LCAxNTM0MjQsIDE1MzQzMCwgMTUzNDM2LCAxNTM0NDYsIAotICAgIDE1MzQ2MSwgMTUzNDcwLCAxNTM0NzgsIDE1MzQ4NiwgMTUzNDk0LCAxNTM1MDIsIDE1MzUxMCwgMTUzNTE4LCAxNTM1MjYsIAotICAgIDE1MzUzNCwgMTUzNTQyLCAxNTM1NTAsIDE1MzU1OCwgMCwgMTUzNTY2LCAxNTM1NzAsIDE1MzU3NSwgMTUzNTgwLCAKLSAgICAxNTM1ODIsIDE1MzU4NiwgMTUzNTk1LCAxNTM2MDQsIDE1MzYxMiwgMTUzNjE2LCAxNTM2MjAsIDE1MzYyNSwgMTUzNjMwLCAKLSAgICAxNTM2MzUsIDE1MzYzNywgMTUzNjQyLCAxNTM2NDYsIDE1MzY0OCwgMTUzNjUyLCAxNTM2NTYsIDE1MzY2MiwgMTUzNjY3LCAKLSAgICAxNTM2NzUsIDE1MzY4MCwgMTUzNjg1LCAxNTM2OTAsIDE1MzY5NywgMTUzNzAwLCAxNTM3MDIsIDE1MzcwNSwgMTUzNzEwLCAKLSAgICAxNTM3MTYsIDE1MzcyMCwgMTUzNzI0LCAxNTM3MzAsIDE1MzczNiwgMTUzNzM4LCAxNTM3NDIsIDE1Mzc0NiwgMTUzNzUwLCAKLSAgICAxNTM3NTQsIDE1Mzc1OCwgMTUzNzYwLCAxNTM3NjIsIDE1Mzc2NCwgMTUzNzY2LCAxNTM3NzIsIDE1Mzc3OCwgMTUzNzgyLCAKLSAgICAxNTM3ODQsIDE1Mzc4NiwgMTUzNzg4LCAxNTM3OTcsIDE1MzgwMSwgMTUzODA4LCAxNTM4MTUsIDE1MzgxNywgMTUzODIwLCAKLSAgICAxNTM4MjQsIDE1MzgzMCwgMTUzODM0LCAxNTM4MzgsIDE1Mzg0MCwgMTUzODQ4LCAxNTM4NTIsIDE1Mzg1NiwgMTUzODYxLCAKLSAgICAxNTM4NjYsIDE1Mzg3MSwgMTUzODc2LCAxNTM4ODEsIDE1Mzg4NiwgMTUzODkxLCAxNTM4OTYsIDE1MzkwMSwgMTUzOTA2LCAKLSAgICAxNTM5MTAsIDE1MzkxNiwgMTUzOTIwLCAxNTM5MjYsIDE1MzkzMSwgMTUzOTM4LCAxNTM5NDQsIDE1Mzk1MiwgMTUzOTU2LCAKLSAgICAxNTM5NjMsIDE1Mzk2NywgMTUzOTcxLCAxNTM5NzUsIDE1Mzk4MCwgMTUzOTg1LCAxNTM5ODcsIDE1Mzk5MSwgMTU0MDAwLCAKLSAgICAxNTQwMDgsIDE1NDAxNiwgMTU0MDI5LCAxNTQwNDIsIDE1NDA1NSwgMTU0MDYyLCAxNTQwNjksIDE1NDA3MywgMTU0MDgyLCAKLSAgICAxNTQwOTAsIDE1NDA5NCwgMTU0MTAzLCAxNTQxMTAsIDE1NDExNCwgMTU0MTE4LCAxNTQxMjIsIDE1NDEyNiwgMTU0MTMzLCAKLSAgICAxNTQxMzcsIDE1NDE0MSwgMTU0MTQ1LCAxNTQxNDksIDE1NDE1NiwgMTU0MTY1LCAxNTQxNzQsIDE1NDE4MSwgMTU0MTkzLCAKLSAgICAxNTQyMDUsIDE1NDIwOSwgMTU0MjEzLCAxNTQyMTcsIDE1NDIyMSwgMTU0MjI1LCAxNTQyMjksIDE1NDIzNywgMTU0MjQ1LCAKLSAgICAxNTQyNTMsIDE1NDI1NywgMTU0MjYxLCAxNTQyNjUsIDE1NDI2OSwgMTU0MjczLCAxNTQyNzcsIDE1NDI4MywgMTU0Mjg5LCAKLSAgICAxNTQyOTMsIDE1NDMwNCwgMTU0MzEyLCAxNTQzMTYsIDE1NDMyMCwgMTU0MzI0LCAxNTQzMjgsIDE1NDMzNCwgMTU0MzQxLCAKLSAgICAxNTQzNTIsIDE1NDM2MiwgMTU0MzcyLCAxNTQzODMsIDE1NDM5MiwgMTU0NDAzLCAxNTQ0MDksIDE1NDQxNSwgMTU0NDIxLCAKLSAgICAxNTQ0MjcsIDE1NDQzMywgMTU0NDM3LCAxNTQ0NDQsIDE1NDQ1MywgMTU0NDYwLCAxNTQ0NjYsIDE1NDQ3MCwgMTU0NDc0LCAKLSAgICAxNTQ0NzgsIDE1NDQ4NywgMTU0NDk5LCAxNTQ1MDMsIDE1NDUxMCwgMTU0NTE3LCAxNTQ1MjQsIDE1NDUzMiwgMTU0NTM5LCAKLSAgICAxNTQ1NDcsIDE1NDU1NiwgMTU0NTY2LCAxNTQ1NzUsIDE1NDU4NSwgMTU0NTk0LCAxNTQ2MDQsIDE1NDYxMywgMTU0NjIzLCAKLSAgICAxNTQ2MzMsIDE1NDY0NCwgMTU0NjU0LCAxNTQ2NjUsIDE1NDY3MiwgMTU0NjgwLCAxNTQ2ODcsIDE1NDY5NSwgMTU0NzAzLCAKLSAgICAxNTQ3MTIsIDE1NDcyMCwgMTU0NzI5LCAxNTQ3MzYsIDE1NDc0OCwgMTU0NzU1LCAxNTQ3NjcsIDE1NDc3MCwgMTU0NzczLCAKLSAgICAxNTQ3NzYsIDE1NDc3OSwgMTU0Nzg1LCAxNTQ3OTIsIDE1NDc5OCwgMTU0ODA1LCAxNTQ4MTAsIDE1NDgxNiwgMTU0ODI4LCAKLSAgICAxNTQ4MzgsIDE1NDg0OSwgMTU0ODU0LCAxNTQ4NTksIDE1NDg2NSwgMTU0ODcwLCAxNTQ4NzcsIDE1NDg4MSwgMTU0ODg3LCAKLSAgICAxNTQ4ODksIDE1NDg5MSwgMTU0ODk1LCAxNTQ4OTksIDE1NDkwMywgMTU0OTEyLCAxNTQ5MTQsIDE1NDkxNiwgMTU0OTE5LCAKLSAgICAxNTQ5MjEsIDE1NDkyMywgMTU0OTI3LCAxNTQ5MjksIDE1NDkzMywgMTU0OTM1LCAxNTQ5MzksIDE1NDk0MSwgMTU0OTQzLCAKLSAgICAxNTQ5NDcsIDE1NDk1MSwgMTU0OTU3LCAxNTQ5NTksIDE1NDk2MywgMTU0OTY1LCAxNTQ5NjksIDE1NDk3MywgMTU0OTc3LCAKLSAgICAxNTQ5ODEsIDE1NDk4MywgMTU0OTg1LCAxNTQ5ODksIDE1NDk5MywgMTU0OTk3LCAxNTUwMDEsIDE1NTAwMywgMTU1MDA1LCAKLSAgICAxNTUwMDcsIDE1NTAxMywgMTU1MDE4LCAxNTUwMjEsIDE1NTAyOSwgMTU1MDM3LCAxNTUwMzksIDE1NTA0NCwgMTU1MDQ3LCAKLSAgICAxNTUwNTIsIDE1NTA2MywgMTU1MDcwLCAxNTUwNzUsIDE1NTA4MCwgMTU1MDgyLCAxNTUwODYsIDE1NTA4OCwgMTU1MDkyLCAKLSAgICAxNTUwOTQsIDE1NTA5OCwgMTU1MTAyLCAxNTUxMDUsIDE1NTEwOCwgMTU1MTEwLCAxNTUxMTMsIDE1NTExNSwgMTU1MTE5LCAKLSAgICAxNTUxMjEsIDE1NTEyMywgMTU1MTI1LCAxNTUxMjksIDE1NTEzMSwgMTU1MTM1LCAxNTUxMzgsIDE1NTE0NSwgMTU1MTQ4LCAKLSAgICAxNTUxNTMsIDE1NTE1NiwgMTU1MTU5LCAxNTUxNjQsIDE1NTE2OCwgMTU1MTcyLCAxNTUxNzYsIDE1NTE3OCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU1MTgzLCAxNTUxODgsIDE1NTE5MCwgMTU1MTk0LCAKLSAgICAxNTUxOTYsIDE1NTIwMCwgMTU1MjA0LCAxNTUyMTAsIDE1NTIxNCwgMTU1MjE5LCAxNTUyMjIsIDE1NTIyNiwgMTU1MjMwLCAKLSAgICAwLCAwLCAwLCAxNTUyMzQsIDE1NTIzNiwgMTU1MjQyLCAxNTUyNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDE1NTI1MCwgMTU1MjU1LCAxNTUyNjAsIDE1NTI2NSwgMTU1MjcwLCAxNTUyNzUsIDE1NTI4MCwgMTU1Mjg3LCAKLSAgICAxNTUyOTQsIDE1NTMwMSwgMTU1MzA4LCAxNTUzMTMsIDE1NTMxOCwgMTU1MzIzLCAxNTUzMjgsIDE1NTMzNSwgMTU1MzQxLCAKLSAgICAxNTUzNDgsIDE1NTM1NSwgMTU1MzYyLCAxNTUzNjcsIDE1NTM3MiwgMTU1Mzc3LCAxNTUzODIsIDE1NTM4NywgMTU1Mzk0LCAKLSAgICAxNTU0MDEsIDE1NTQwNiwgMTU1NDExLCAxNTU0MTgsIDE1NTQyNSwgMTU1NDMzLCAxNTU0NDEsIDE1NTQ0OCwgMTU1NDU1LCAKLSAgICAxNTU0NjMsIDE1NTQ3MSwgMTU1NDc5LCAxNTU0ODYsIDE1NTQ5NiwgMTU1NTA3LCAxNTU1MTIsIDE1NTUxOSwgMTU1NTI2LCAKLSAgICAxNTU1MzMsIDE1NTU0MSwgMTU1NTQ5LCAxNTU1NjAsIDE1NTU2OCwgMTU1NTc2LCAxNTU1ODQsIDE1NTU4OSwgMTU1NTk0LCAKLSAgICAxNTU1OTksIDE1NTYwNCwgMTU1NjA5LCAxNTU2MTQsIDE1NTYxOSwgMTU1NjI0LCAxNTU2MjksIDE1NTYzNCwgMTU1NjM5LCAKLSAgICAxNTU2NDQsIDE1NTY1MSwgMTU1NjU2LCAxNTU2NjEsIDE1NTY2OCwgMTU1NjczLCAxNTU2NzgsIDE1NTY4MywgMTU1Njg4LCAKLSAgICAxNTU2OTMsIDE1NTY5OCwgMTU1NzAzLCAxNTU3MDgsIDE1NTcxMywgMTU1NzE4LCAxNTU3MjMsIDE1NTcyOCwgMTU1NzM1LCAKLSAgICAxNTU3NDMsIDE1NTc0OCwgMTU1NzUzLCAxNTU3NjAsIDE1NTc2NSwgMTU1NzcwLCAxNTU3NzUsIDE1NTc4MiwgMTU1Nzg3LCAKLSAgICAxNTU3OTQsIDE1NTc5OSwgMTU1ODA2LCAxNTU4MTEsIDE1NTgyMCwgMTU1ODI5LCAxNTU4MzQsIDE1NTgzOSwgMTU1ODQ0LCAKLSAgICAxNTU4NDksIDE1NTg1NCwgMTU1ODU5LCAxNTU4NjQsIDE1NTg2OSwgMTU1ODc0LCAxNTU4NzksIDE1NTg4NCwgMTU1ODg5LCAKLSAgICAxNTU4OTQsIDE1NTkwMiwgMTU1OTEwLCAxNTU5MTUsIDE1NTkyMCwgMTU1OTI1LCAxNTU5MzAsIDE1NTkzNSwgMTU1OTQxLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTU5NDcsIDE1NTk1NSwgMTU1OTYzLCAxNTU5NzEsIAotICAgIDE1NTk3OSwgMTU1OTg1LCAxNTU5OTEsIDE1NTk5NSwgMTU1OTk5LCAxNTYwMDUsIDE1NjAxMSwgMTU2MDIwLCAxNTYwMjQsIAotICAgIDE1NjAyOSwgMTU2MDM1LCAxNTYwMzksIDE1NjA0NCwgMTU2MDQ4LCAxNTYwNTIsIDE1NjA1OCwgMTU2MDY0LCAxNTYwNzQsIAotICAgIDE1NjA4MywgMTU2MDg2LCAxNTYwOTEsIDE1NjA5NywgMTU2MTAzLCAxNTYxMTQsIDE1NjEyNCwgMTU2MTI4LCAxNTYxMzMsIAotICAgIDE1NjEzOSwgMTU2MTQ1LCAxNTYxNTQsIDE1NjE1OSwgMTU2MTYzLCAxNTYxNjgsIDE1NjE3MiwgMTU2MTc4LCAxNTYxODQsIAotICAgIDE1NjE5MCwgMTU2MTk0LCAxNTYxOTcsIDE1NjIwMSwgMTU2MjA0LCAxNTYyMDcsIDE1NjIxMiwgMTU2MjE3LCAxNTYyMjQsIAotICAgIDE1NjIzMiwgMTU2MjM5LCAxNTYyNDYsIDE1NjI1NSwgMTU2MjY0LCAxNTYyNzEsIDE1NjI3OSwgMTU2Mjg2LCAxNTYyOTMsIAotICAgIDE1NjMwMiwgMTU2MzExLCAxNTYzMTgsIDE1NjMyNiwgMTU2MzMzLCAxNTYzNDAsIDE1NjM0OSwgMTU2MzU2LCAxNTYzNjQsIAotICAgIDE1NjM3MCwgMTU2Mzc5LCAxNTYzODcsIDE1NjM5NiwgMTU2NDAzLCAxNTY0MTMsIDE1NjQyNCwgMTU2NDMyLCAxNTY0NDAsIAotICAgIDE1NjQ0OSwgMTU2NDU3LCAxNTY0NjUsIDE1NjQ3NCwgMTU2NDgyLCAxNTY0OTIsIDE1NjUwMSwgMTU2NTA5LCAxNTY1MTcsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1NjUyNiwgMTU2NTM0LCAKLSAgICAxNTY1NDIsIDE1NjU1MCwgMTU2NTU4LCAxNTY1NjcsIDE1NjU3NiwgMTU2NTg1LCAxNTY1OTQsIDE1NjYwMywgMTU2NjEyLCAKLSAgICAxNTY2MjEsIDAsIDAsIDAsIDAsIDE1NjYzMCwgMTU2NjM4LCAxNTY2NDYsIDE1NjY1NCwgMTU2NjYyLCAxNTY2NjksIAotICAgIDE1NjY3NiwgMTU2NjgzLCAxNTY2OTAsIDE1NjY5OCwgMTU2NzA2LCAxNTY3MTQsIDE1NjcyMiwgMTU2NzMyLCAxNTY3NDIsIAotICAgIDE1Njc1MiwgMTU2NzYyLCAxNTY3NzEsIDE1Njc4MCwgMTU2Nzg5LCAxNTY3OTgsIDE1NjgwNywgMTU2ODE2LCAxNTY4MjUsIAotICAgIDE1NjgzNCwgMTU2ODQyLCAxNTY4NTAsIDE1Njg1OCwgMTU2ODY2LCAxNTY4NzQsIDE1Njg4MiwgMTU2ODkwLCAxNTY4OTgsIAotICAgIDE1NjkwOCwgMTU2OTE4LCAxNTY5MjgsIDE1NjkzOCwgMTU2OTQyLCAxNTY5NDYsIDE1Njk1MCwgMTU2OTU0LCAxNTY5NTcsIAotICAgIDE1Njk2MCwgMTU2OTYzLCAxNTY5NjYsIDE1Njk3MCwgMTU2OTc0LCAxNTY5NzgsIDE1Njk4MiwgMTU2OTg3LCAxNTY5OTIsIAotICAgIDE1Njk5NywgMTU3MDAyLCAxNTcwMDUsIDE1NzAwOCwgMTU3MDExLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTcwMTQsIAotICAgIDE1NzAxNywgMTU3MDIwLCAxNTcwMjMsIDE1NzAyNiwgMTU3MDMxLCAxNTcwMzYsIDE1NzA0MiwgMTU3MDQ4LCAxNTcwNTIsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE1NzA1NiwgMTU3MDYyLCAxNTcwNjgsIDE1NzA3NCwgMTU3MDgwLCAxNTcwODgsIDE1NzA5NiwgCi0gICAgMTU3MTA1LCAxNTcxMTQsIDE1NzExOSwgMTU3MTI0LCAxNTcxMjksIDE1NzEzNCwgMTU3MTQxLCAxNTcxNDgsIDE1NzE1NiwgCi0gICAgMTU3MTY0LCAxNTcxNzEsIDE1NzE3OCwgMTU3MTg1LCAxNTcxOTIsIDE1NzIwMSwgMTU3MjEwLCAxNTcyMjAsIDE1NzIzMCwgCi0gICAgMTU3MjM2LCAxNTcyNDIsIDE1NzI0OCwgMTU3MjU0LCAxNTcyNjIsIDE1NzI3MCwgMTU3Mjc5LCAxNTcyODgsIDE1NzI5NiwgCi0gICAgMTU3MzA0LCAxNTczMTIsIDE1NzMyMCwgMTU3MzMwLCAxNTczNDAsIDE1NzM1MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTU3MzYyLCAxNTczNjcsIDE1NzM3MiwgMTU3Mzc3LCAxNTczODIsIDE1NzM5MSwgMTU3NDAwLCAxNTc0MDksIDE1NzQxOCwgCi0gICAgMTU3NDI1LCAxNTc0MzIsIDE1NzQzOSwgMTU3NDQ2LCAxNTc0NTMsIDE1NzQ2MiwgMTU3NDcxLCAxNTc0ODAsIDE1NzQ4NSwgCi0gICAgMTU3NDkyLCAxNTc0OTksIDE1NzUwNiwgMTU3NTExLCAxNTc1MTYsIDE1NzUyMSwgMTU3NTI2LCAxNTc1MzMsIDE1NzU0MCwgCi0gICAgMTU3NTQ3LCAxNTc1NTQsIDE1NzU2MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU3NTcwLCAxNTc1NzQsIDE1NzU3OCwgMTU3NTgzLCAxNTc1ODcsIAotICAgIDE1NzU5MSwgMTU3NTk2LCAxNTc2MDAsIDE1NzYwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU2MTk5LCAKKyAgICAxNTYyMDEsIDE1NjIwMywgMTU2MjA3LCAxNTYyMTIsIDE1NjIxNywgMTU2MjE5LCAxNTYyMjUsIDE1NjIzMCwgMTU2MjMyLCAKKyAgICAxNTYyMzgsIDE1NjI0MiwgMTU2MjQ0LCAxNTYyNDgsIDE1NjI1NCwgMTU2MjYwLCAxNTYyNjYsIDE1NjI3MSwgMTU2Mjc2LCAKKyAgICAxNTYyODMsIDE1NjI5MCwgMTU2Mjk3LCAxNTYzMDIsIDE1NjMwOSwgMTU2MzE2LCAxNTYzMjMsIDE1NjMyNywgMTU2MzM0LCAKKyAgICAxNTYzNDMsIDE1NjM1MiwgMTU2MzU5LCAxNTYzNjQsIDE1NjM2OCwgMTU2MzcyLCAxNTYzNzQsIDE1NjM3NywgMTU2MzgwLCAKKyAgICAxNTYzODcsIDE1NjM5NCwgMTU2NDA0LCAxNTY0MDksIDE1NjQxNCwgMTU2NDE5LCAxNTY0MjQsIDE1NjQyNiwgMTU2NDMyLCAKKyAgICAxNTY0MzYsIDE1NjQzOCwgMTU2NDQwLCAxNTY0NDIsIDE1NjQ0NCwgMTU2NDQ4LCAxNTY0NTIsIDE1NjQ1NiwgMTU2NDU4LCAKKyAgICAxNTY0NjIsIDE1NjQ2NCwgMTU2NDY4LCAxNTY0NzAsIDE1NjQ3MiwgMTU2NDc0LCAxNTY0NzYsIDE1NjQ4MSwgMTU2NDg2LCAKKyAgICAxNTY0ODgsIDE1NjQ5NCwgMTU2NDk4LCAxNTY1MDIsIDE1NjUxMCwgMTU2NTEyLCAxNTY1MTQsIDE1NjUxNiwgMTU2NTE4LCAKKyAgICAxNTY1MjAsIDE1NjUyMiwgMTU2NTI0LCAxNTY1MjYsIDE1NjUyOCwgMTU2NTMwLCAxNTY1MzQsIDE1NjUzOCwgMTU2NTQwLCAKKyAgICAxNTY1NDIsIDE1NjU0NCwgMTU2NTQ2LCAxNTY1NDgsIDE1NjU1MywgMTU2NTU5LCAxNTY1NjMsIDE1NjU2NywgMTU2NTcxLCAKKyAgICAxNTY1NzUsIDE1NjU4MCwgMTU2NTg0LCAxNTY1ODYsIDE1NjU4OCwgMTU2NTkyLCAxNTY1OTgsIDE1NjYwMCwgMTU2NjAyLCAKKyAgICAxNTY2MDQsIDE1NjYwOCwgMTU2NjE3LCAxNTY2MjMsIDE1NjYyNywgMTU2NjMxLCAxNTY2MzMsIDE1NjYzNSwgMTU2NjM4LCAKKyAgICAxNTY2NDAsIDE1NjY0MiwgMTU2NjQ0LCAxNTY2NDgsIDE1NjY1MCwgMTU2NjU0LCAxNTY2NTksIDE1NjY2MSwgMTU2NjY2LCAKKyAgICAxNTY2NzIsIDE1NjY3OSwgMTU2NjgzLCAxNTY2ODcsIDE1NjY5MSwgMTU2Njk1LCAxNTY3MDEsIDE1NjcwNSwgMTU2NzEzLCAKKyAgICAxNTY3MjAsIDE1NjcyMiwgMTU2NzI0LCAxNTY3MjgsIDE1NjczMiwgMTU2NzM0LCAxNTY3MzgsIDE1Njc0MiwgMTU2NzQ0LCAKKyAgICAxNTY3NDgsIDE1Njc1MCwgMTU2NzU0LCAxNTY3NTgsIDE1Njc2MiwgMTU2NzY2LCAxNTY3NzAsIDE1Njc3NCwgMTU2Nzc4LCAKKyAgICAxNTY3ODIsIDE1Njc4OCwgMTU2NzkyLCAxNTY3OTYsIDE1NjgwNywgMTU2ODEyLCAxNTY4MTYsIDE1NjgyMCwgMTU2ODI2LCAKKyAgICAxNTY4MzAsIDE1NjgzNCwgMTU2ODM4LCAxNTY4NDUsIDE1Njg1MiwgMTU2ODU2LCAxNTY4NjAsIDE1Njg2NCwgMTU2ODY4LCAKKyAgICAxNTY4NzIsIDE1Njg3OSwgMTU2ODgxLCAxNTY4ODUsIDE1Njg4NywgMTU2ODg5LCAxNTY4OTMsIDE1Njg5NywgMTU2OTAxLCAKKyAgICAxNTY5MDMsIDE1NjkwNywgMTU2OTExLCAxNTY5MTUsIDE1NjkxOSwgMTU2OTIzLCAxNTY5MjUsIDE1NjkyOSwgMTU2OTMxLCAKKyAgICAxNTY5MzcsIDE1Njk0MCwgMTU2OTQ1LCAxNTY5NDcsIDE1Njk0OSwgMTU2OTUyLCAxNTY5NTQsIDE1Njk1NiwgMTU2OTU5LCAKKyAgICAxNTY5NjYsIDE1Njk3MywgMTU2OTgwLCAxNTY5ODUsIDE1Njk4OSwgMTU2OTkxLCAxNTY5OTMsIDE1Njk5NSwgMTU2OTk5LCAKKyAgICAxNTcwMDEsIDE1NzAwNSwgMTU3MDA5LCAxNTcwMTMsIDE1NzAxNSwgMTU3MDE5LCAxNTcwMjEsIDE1NzAyNSwgMTU3MDI5LCAKKyAgICAxNTcwMzYsIDE1NzAzOCwgMTU3MDQ3LCAxNTcwNTYsIDE1NzA2NSwgMTU3MDcxLCAxNTcwNzMsIDE1NzA3OCwgMTU3MDgyLCAKKyAgICAxNTcwODYsIDE1NzA4OCwgMTU3MDk0LCAxNTcwOTgsIDE1NzEwMCwgMTU3MTA0LCAxNTcxMDgsIDE1NzExMCwgMTU3MTE0LCAKKyAgICAxNTcxMTksIDE1NzEyMywgMTU3MTI5LCAxNTcxMzUsIDE1NzEzNywgMTU3MTM5LCAxNTcxNDUsIDE1NzE0NywgMTU3MTUxLCAKKyAgICAxNTcxNTUsIDE1NzE1NywgMTU3MTYxLCAxNTcxNjMsIDE1NzE2NywgMTU3MTcxLCAxNTcxNzUsIDE1NzE3OCwgMTU3MTgxLCAKKyAgICAxNTcxODYsIDE1NzE5MSwgMTU3MTkzLCAxNTcxOTYsIDE1NzE5OCwgMTU3MjA1LCAxNTcyMDksIDE1NzIxMSwgMTU3MjE4LCAKKyAgICAxNTcyMjUsIDE1NzIzMiwgMTU3MjM5LCAxNTcyNDYsIDE1NzI0OCwgMTU3MjUwLCAxNTcyNTIsIDE1NzI1NiwgMTU3MjU4LCAKKyAgICAxNTcyNjAsIDE1NzI2MiwgMTU3MjY0LCAxNTcyNjYsIDE1NzI2OCwgMTU3MjcwLCAxNTcyNzIsIDE1NzI3NCwgMTU3Mjc2LCAKKyAgICAxNTcyNzgsIDE1NzI4MCwgMTU3MjgyLCAxNTcyODQsIDE1NzI4NiwgMTU3Mjg4LCAxNTcyOTAsIDE1NzI5MiwgMTU3Mjk0LCAKKyAgICAxNTcyOTYsIDE1NzI5OCwgMTU3MzAwLCAxNTczMDQsIDE1NzMwNiwgMTU3MzA4LCAxNTczMTAsIDE1NzMxNCwgMTU3MzE2LCAKKyAgICAxNTczMjAsIDE1NzMyMiwgMTU3MzI0LCAxNTczMjgsIDE1NzMzMiwgMTU3MzM4LCAxNTczNDAsIDE1NzM0MiwgMTU3MzQ0LCAKKyAgICAxNTczNDYsIDE1NzM1MCwgMTU3MzU0LCAxNTczNTYsIDE1NzM2MCwgMTU3MzY0LCAxNTczNjgsIDE1NzM3MiwgMTU3Mzc2LCAKKyAgICAxNTczODAsIDE1NzM4NCwgMTU3Mzg4LCAxNTczOTIsIDE1NzM5NiwgMTU3NDAwLCAxNTc0MDQsIDE1NzQwOCwgMTU3NDEyLCAKKyAgICAxNTc0MTYsIDE1NzQyMCwgMTU3NDI0LCAxNTc0MjgsIDE1NzQzMCwgMTU3NDMyLCAxNTc0MzQsIDE1NzQzNiwgMTU3NDM4LCAKKyAgICAxNTc0NDAsIDE1NzQ0MiwgMTU3NDUwLCAxNTc0NTgsIDE1NzQ2NiwgMTU3NDc0LCAxNTc0NzksIDE1NzQ4NCwgMTU3NDg5LCAKKyAgICAxNTc0OTMsIDE1NzQ5NywgMTU3NTAyLCAxNTc1MDYsIDE1NzUwOCwgMTU3NTEyLCAxNTc1MTQsIDE1NzUxNiwgMTU3NTE4LCAKKyAgICAxNTc1MjAsIDE1NzUyMiwgMTU3NTI0LCAxNTc1MjYsIDE1NzUzMCwgMTU3NTMyLCAxNTc1MzQsIDE1NzUzNiwgMTU3NTQwLCAKKyAgICAxNTc1NDQsIDE1NzU0OCwgMTU3NTUyLCAxNTc1NTYsIDE1NzU1OCwgMTU3NTY0LCAxNTc1NzAsIDE1NzU3MiwgMTU3NTc0LCAKKyAgICAxNTc1NzYsIDE1NzU3OCwgMTU3NTgwLCAxNTc1ODksIDE1NzU5NiwgMTU3NjAzLCAxNTc2MDcsIDE1NzYxNCwgMTU3NjE5LCAKKyAgICAxNTc2MjYsIDE1NzYzNSwgMTU3NjQwLCAxNTc2NDQsIDE1NzY0OCwgMTU3NjUwLCAxNTc2NTQsIDE1NzY1NiwgMTU3NjYwLCAKKyAgICAxNTc2NjQsIDE1NzY2NiwgMTU3NjcwLCAxNTc2NzQsIDE1NzY3OCwgMTU3NjgwLCAxNTc2ODIsIDE1NzY4OCwgMTU3NjkwLCAKKyAgICAxNTc2OTIsIDE1NzY5NCwgMTU3Njk4LCAxNTc3MDIsIDE1NzcwNCwgMTU3NzA4LCAxNTc3MTAsIDE1NzcxMiwgMTU3NzE1LCAKKyAgICAxNTc3MTksIDE1NzcyMSwgMTU3NzI1LCAxNTc3MjcsIDE1NzcyOSwgMTU3NzM0LCAxNTc3MzYsIDE1Nzc0MCwgMTU3NzQ0LCAKKyAgICAxNTc3NDcsIDE1Nzc1MSwgMTU3NzU1LCAxNTc3NTksIDE1Nzc2MywgMTU3NzY3LCAxNTc3NzEsIDE1Nzc3NSwgMTU3NzgwLCAKKyAgICAxNTc3ODQsIDE1Nzc4OCwgMTU3Nzk3LCAxNTc4MDIsIDE1NzgwNSwgMTU3ODA3LCAxNTc4MTAsIDE1NzgxMywgMTU3ODE4LCAKKyAgICAxNTc4MjAsIDE1NzgyMywgMTU3ODI4LCAxNTc4MzIsIDE1NzgzNSwgMTU3ODM5LCAxNTc4NDMsIDE1Nzg0NiwgMTU3ODUxLCAKKyAgICAxNTc4NTUsIDE1Nzg1OSwgMTU3ODYzLCAxNTc4NjcsIDE1Nzg3MywgMTU3ODc5LCAxNTc4ODUsIDE1Nzg5MSwgMTU3ODk2LCAKKyAgICAxNTc5MDYsIDE1NzkwOCwgMTU3OTEyLCAxNTc5MTQsIDE1NzkxNiwgMTU3OTIwLCAxNTc5MjQsIDE1NzkyNiwgMTU3OTMwLCAKKyAgICAxNTc5MzUsIDE1Nzk0MCwgMTU3OTQ2LCAxNTc5NDgsIDE1Nzk1MiwgMTU3OTU2LCAxNTc5NjIsIDE1Nzk2OCwgMTU3OTcyLCAKKyAgICAxNTc5NzQsIDE1Nzk3NiwgMTU3OTgwLCAxNTc5ODIsIDE1Nzk4NiwgMTU3OTkwLCAxNTc5OTQsIDE1Nzk5NiwgMTU3OTk4LCAKKyAgICAxNTgwMDUsIDE1ODAwOSwgMTU4MDEyLCAxNTgwMTYsIDE1ODAyMCwgMTU4MDI0LCAxNTgwMjYsIDE1ODAzMCwgMTU4MDMyLCAKKyAgICAxNTgwMzQsIDE1ODAzOCwgMTU4MDQwLCAxNTgwNDQsIDE1ODA0OCwgMTU4MDU0LCAxNTgwNTgsIDE1ODA2MiwgMTU4MDY2LCAKKyAgICAxNTgwNjgsIDE1ODA3MSwgMTU4MDc1LCAxNTgwODEsIDE1ODA5MCwgMTU4MDk5LCAxNTgxMDcsIDE1ODExNSwgMTU4MTE3LCAKKyAgICAxNTgxMjEsIDE1ODEyMywgMTU4MTI3LCAxNTgxMzgsIDE1ODE0MiwgMTU4MTQ4LCAxNTgxNTQsIDE1ODE1OSwgMTU4MTYxLCAKKyAgICAxNTgxNjYsIDE1ODE3MCwgMTU4MTcyLCAxNTgxNzQsIDE1ODE3NiwgMTU4MTgwLCAxNTgxODQsIDE1ODE4OCwgMTU4MTkzLCAKKyAgICAxNTgyMDMsIDE1ODIxOCwgMTU4MjI4LCAxNTgyMzgsIDE1ODI0MiwgMTU4MjQ2LCAxNTgyNTIsIDE1ODI1NCwgMTU4MjYyLCAKKyAgICAxNTgyNzAsIDE1ODI3MiwgMTU4Mjc2LCAxNTgyODIsIDE1ODI4OCwgMTU4Mjk1LCAxNTgzMDIsIDE1ODMwNCwgMTU4MzA2LCAKKyAgICAxNTgzMDksIDE1ODMxMSwgMTU4MzE3LCAxNTgzMTksIDE1ODMyMiwgMTU4MzI2LCAxNTgzMzIsIDE1ODMzOCwgMTU4MzQ5LCAKKyAgICAxNTgzNTUsIDE1ODM2MSwgMTU4MzY5LCAxNTgzNzMsIDE1ODM4MSwgMTU4Mzg5LCAxNTgzOTUsIDE1ODQwMSwgMTU4NDA4LCAKKyAgICAxNTg0MTAsIDE1ODQxNCwgMTU4NDE2LCAxNTg0MTgsIDE1ODQyMywgMTU4NDI1LCAxNTg0MjcsIDE1ODQyOSwgMTU4NDMxLCAKKyAgICAxNTg0MzUsIDE1ODQ0NSwgMTU4NDUxLCAxNTg0NTUsIDE1ODQ1OSwgMTU4NDYzLCAxNTg0NjksIDE1ODQ3NSwgMTU4NDgxLCAKKyAgICAxNTg0ODcsIDE1ODQ5MiwgMTU4NDk3LCAxNTg1MDMsIDE1ODUwOSwgMTU4NTE2LCAxNTg1MjMsIDE1ODUzMSwgMTU4NTM5LCAKKyAgICAxNTg1NDQsIDE1ODU1MiwgMTU4NTU2LCAxNTg1NjUsIDE1ODU3NCwgMTU4NTgwLCAxNTg1ODQsIDE1ODU4OCwgMTU4NTkyLCAKKyAgICAxNTg1OTUsIDE1ODYwMCwgMTU4NjAyLCAxNTg2MDQsIDE1ODYwNiwgMTU4NjEzLCAxNTg2MTgsIDE1ODYyNSwgMTU4NjMyLCAKKyAgICAxNTg2MzksIDE1ODY0NywgMTU4NjU1LCAxNTg2NjMsIDE1ODY3MSwgMTU4Njc5LCAxNTg2ODcsIDE1ODY5NSwgMTU4NzAzLCAKKyAgICAxNTg3MTEsIDE1ODcxNywgMTU4NzIzLCAxNTg3MjksIDE1ODczNSwgMTU4NzQxLCAxNTg3NDcsIDE1ODc1MywgMTU4NzU5LCAKKyAgICAxNTg3NjUsIDE1ODc3MSwgMTU4Nzc3LCAxNTg3ODMsIDE1ODc4NiwgMTU4Nzk1LCAxNTg4MDQsIDE1ODgwNiwgMTU4ODEzLCAKKyAgICAxNTg4MTcsIDE1ODgxOSwgMTU4ODIxLCAxNTg4MjUsIDE1ODgzMSwgMTU4ODM1LCAxNTg4MzcsIDE1ODg0NywgMTU4ODUzLCAKKyAgICAxNTg4NTcsIDE1ODg1OSwgMTU4ODYzLCAxNTg4NjUsIDE1ODg2OSwgMTU4ODc2LCAxNTg4ODMsIDE1ODg5MCwgMTU4ODk1LCAKKyAgICAxNTg5MDAsIDE1ODkwOSwgMTU4OTE1LCAxNTg5MjAsIDE1ODkyNCwgMTU4OTI5LCAxNTg5MzMsIDE1ODk0MCwgMTU4OTQ0LCAKKyAgICAxNTg5NDcsIDE1ODk1MiwgMTU4OTU5LCAxNTg5NjYsIDE1ODk3MSwgMTU4OTc2LCAxNTg5ODEsIDE1ODk4OCwgMTU4OTk3LCAKKyAgICAxNTkwMDgsIDE1OTAxNCwgMTU5MDIwLCAxNTkwMjYsIDE1OTAzNiwgMTU5MDUxLCAxNTkwNjAsIDE1OTA2OCwgMTU5MDc2LCAKKyAgICAxNTkwODQsIDE1OTA5MiwgMTU5MTAwLCAxNTkxMDgsIDE1OTExNiwgMTU5MTI0LCAxNTkxMzIsIDE1OTE0MCwgMTU5MTQ4LCAKKyAgICAxNTkxNTYsIDE1OTE1OSwgMTU5MTYzLCAxNTkxNjgsIDE1OTE3MywgMTU5MTc1LCAxNTkxNzksIDE1OTE4OCwgMTU5MTk3LCAKKyAgICAxNTkyMDUsIDE1OTIwOSwgMTU5MjEzLCAxNTkyMTgsIDE1OTIyMywgMTU5MjI4LCAxNTkyMzAsIDE1OTIzNSwgMTU5MjM5LCAKKyAgICAxNTkyNDEsIDE1OTI0NSwgMTU5MjQ5LCAxNTkyNTUsIDE1OTI2MCwgMTU5MjY4LCAxNTkyNzMsIDE1OTI3OCwgMTU5MjgzLCAKKyAgICAxNTkyOTAsIDE1OTI5MywgMTU5Mjk1LCAxNTkyOTgsIDE1OTMwMywgMTU5MzA5LCAxNTkzMTMsIDE1OTMxNywgMTU5MzIzLCAKKyAgICAxNTkzMjksIDE1OTMzMSwgMTU5MzM1LCAxNTkzMzksIDE1OTM0MywgMTU5MzQ3LCAxNTkzNTEsIDE1OTM1MywgMTU5MzU1LCAKKyAgICAxNTkzNTcsIDE1OTM1OSwgMTU5MzY1LCAxNTkzNzEsIDE1OTM3NSwgMTU5Mzc3LCAxNTkzNzksIDE1OTM4MSwgMTU5MzkwLCAKKyAgICAxNTkzOTQsIDE1OTQwMSwgMTU5NDA4LCAxNTk0MTAsIDE1OTQxMywgMTU5NDE3LCAxNTk0MjMsIDE1OTQyNywgMTU5NDMxLCAKKyAgICAxNTk0MzMsIDE1OTQ0MSwgMTU5NDQ1LCAxNTk0NDksIDE1OTQ1NCwgMTU5NDU5LCAxNTk0NjQsIDE1OTQ2OSwgMTU5NDc0LCAKKyAgICAxNTk0NzksIDE1OTQ4NCwgMTU5NDg5LCAxNTk0OTQsIDE1OTQ5OSwgMTU5NTAzLCAxNTk1MDksIDE1OTUxMywgMTU5NTE5LCAKKyAgICAxNTk1MjQsIDE1OTUzMSwgMTU5NTM3LCAxNTk1NDUsIDE1OTU0OSwgMTU5NTU2LCAxNTk1NjAsIDE1OTU2NCwgMTU5NTY4LCAKKyAgICAxNTk1NzMsIDE1OTU3OCwgMTU5NTgwLCAxNTk1ODQsIDE1OTU5MywgMTU5NjAxLCAxNTk2MDksIDE1OTYyMiwgMTU5NjM1LCAKKyAgICAxNTk2NDgsIDE1OTY1NSwgMTU5NjYyLCAxNTk2NjYsIDE1OTY3NSwgMTU5NjgzLCAxNTk2ODcsIDE1OTY5NiwgMTU5NzAzLCAKKyAgICAxNTk3MDcsIDE1OTcxMSwgMTU5NzE1LCAxNTk3MTksIDE1OTcyNiwgMTU5NzMwLCAxNTk3MzQsIDE1OTczOCwgMTU5NzQyLCAKKyAgICAxNTk3NDksIDE1OTc1OCwgMTU5NzY3LCAxNTk3NzQsIDE1OTc4NiwgMTU5Nzk4LCAxNTk4MDIsIDE1OTgwNiwgMTU5ODEwLCAKKyAgICAxNTk4MTQsIDE1OTgxOCwgMTU5ODIyLCAxNTk4MzAsIDE1OTgzOCwgMTU5ODQ2LCAxNTk4NTAsIDE1OTg1NCwgMTU5ODU4LCAKKyAgICAxNTk4NjIsIDE1OTg2NiwgMTU5ODcwLCAxNTk4NzYsIDE1OTg4MiwgMTU5ODg2LCAxNTk4OTcsIDE1OTkwNSwgMTU5OTA5LCAKKyAgICAxNTk5MTMsIDE1OTkxNywgMTU5OTIxLCAxNTk5MjcsIDE1OTkzNCwgMTU5OTQ1LCAxNTk5NTUsIDE1OTk2NSwgMTU5OTc2LCAKKyAgICAxNTk5ODUsIDE1OTk5NiwgMTYwMDAyLCAxNjAwMDgsIDE2MDAxNCwgMTYwMDIwLCAxNjAwMjYsIDE2MDAzMCwgMTYwMDM3LCAKKyAgICAxNjAwNDYsIDE2MDA1MywgMTYwMDU5LCAxNjAwNjMsIDE2MDA2NywgMTYwMDcxLCAxNjAwODAsIDE2MDA5MiwgMTYwMDk2LCAKKyAgICAxNjAxMDMsIDE2MDExMCwgMTYwMTE3LCAxNjAxMjUsIDE2MDEzMiwgMTYwMTQwLCAxNjAxNDksIDE2MDE1OSwgMTYwMTY4LCAKKyAgICAxNjAxNzgsIDE2MDE4NywgMTYwMTk3LCAxNjAyMDYsIDE2MDIxNiwgMTYwMjI2LCAxNjAyMzcsIDE2MDI0NywgMTYwMjU4LCAKKyAgICAxNjAyNjUsIDE2MDI3MywgMTYwMjgwLCAxNjAyODgsIDE2MDI5NiwgMTYwMzA1LCAxNjAzMTMsIDE2MDMyMiwgMTYwMzI5LCAKKyAgICAxNjAzNDEsIDE2MDM0OCwgMTYwMzYwLCAxNjAzNjMsIDE2MDM2NiwgMTYwMzY5LCAxNjAzNzIsIDE2MDM3OCwgMTYwMzg1LCAKKyAgICAxNjAzOTEsIDE2MDM5OCwgMTYwNDAzLCAxNjA0MDksIDE2MDQyMSwgMTYwNDMxLCAxNjA0NDIsIDE2MDQ0NywgMTYwNDUyLCAKKyAgICAxNjA0NTgsIDE2MDQ2MywgMTYwNDcwLCAxNjA0NzQsIDE2MDQ4MCwgMTYwNDgyLCAxNjA0ODQsIDE2MDQ4OCwgMTYwNDkyLCAKKyAgICAxNjA0OTYsIDE2MDUwNSwgMTYwNTA3LCAxNjA1MDksIDE2MDUxMiwgMTYwNTE0LCAxNjA1MTYsIDE2MDUyMCwgMTYwNTIyLCAKKyAgICAxNjA1MjYsIDE2MDUyOCwgMTYwNTMyLCAxNjA1MzQsIDE2MDUzNiwgMTYwNTQwLCAxNjA1NDQsIDE2MDU1MCwgMTYwNTUyLCAKKyAgICAxNjA1NTYsIDE2MDU1OCwgMTYwNTYyLCAxNjA1NjYsIDE2MDU3MCwgMTYwNTc0LCAxNjA1NzYsIDE2MDU3OCwgMTYwNTgyLCAKKyAgICAxNjA1ODYsIDE2MDU5MCwgMTYwNTk0LCAxNjA1OTYsIDE2MDU5OCwgMTYwNjAwLCAxNjA2MDYsIDE2MDYxMSwgMTYwNjE0LCAKKyAgICAxNjA2MjIsIDE2MDYzMCwgMTYwNjMyLCAxNjA2MzcsIDE2MDY0MCwgMTYwNjQ1LCAxNjA2NTYsIDE2MDY2MywgMTYwNjY4LCAKKyAgICAxNjA2NzMsIDE2MDY3NSwgMTYwNjc5LCAxNjA2ODEsIDE2MDY4NSwgMTYwNjg3LCAxNjA2OTEsIDE2MDY5NSwgMTYwNjk4LCAKKyAgICAxNjA3MDEsIDE2MDcwMywgMTYwNzA2LCAxNjA3MDgsIDE2MDcxMiwgMTYwNzE0LCAxNjA3MTYsIDE2MDcxOCwgMTYwNzIyLCAKKyAgICAxNjA3MjQsIDE2MDcyOCwgMTYwNzMxLCAxNjA3MzgsIDE2MDc0MSwgMTYwNzQ2LCAxNjA3NDksIDE2MDc1MiwgMTYwNzU3LCAKKyAgICAxNjA3NjEsIDE2MDc2NSwgMTYwNzY5LCAxNjA3NzEsIDE2MDc3NiwgMTYwNzc5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxNjA3ODMsIDE2MDc4OCwgMTYwNzkwLCAxNjA3OTQsIDE2MDc5NiwgMTYwODAwLCAxNjA4MDQsIAorICAgIDE2MDgxMCwgMTYwODE0LCAxNjA4MTksIDE2MDgyMiwgMTYwODI2LCAxNjA4MzAsIDAsIDAsIDAsIDE2MDgzNCwgMTYwODM2LCAKKyAgICAxNjA4NDIsIDE2MDg0NiwgMTYwODUwLCAxNjA4NTIsIDE2MDg1NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTYwODU4LCAxNjA4NjMsIDE2MDg2OCwgMTYwODczLCAxNjA4NzgsIDE2MDg4MywgMTYwODg4LCAxNjA4OTUsIDE2MDkwMiwgCisgICAgMTYwOTA5LCAxNjA5MTYsIDE2MDkyMSwgMTYwOTI2LCAxNjA5MzEsIDE2MDkzNiwgMTYwOTQzLCAxNjA5NDksIDE2MDk1NiwgCisgICAgMTYwOTYzLCAxNjA5NzAsIDE2MDk3NSwgMTYwOTgwLCAxNjA5ODUsIDE2MDk5MCwgMTYwOTk1LCAxNjEwMDIsIDE2MTAwOSwgCisgICAgMTYxMDE0LCAxNjEwMTksIDE2MTAyNiwgMTYxMDMzLCAxNjEwNDEsIDE2MTA0OSwgMTYxMDU2LCAxNjEwNjMsIDE2MTA3MSwgCisgICAgMTYxMDc5LCAxNjEwODcsIDE2MTA5NCwgMTYxMTA0LCAxNjExMTUsIDE2MTEyMCwgMTYxMTI3LCAxNjExMzQsIDE2MTE0MSwgCisgICAgMTYxMTQ5LCAxNjExNTcsIDE2MTE2OCwgMTYxMTc2LCAxNjExODQsIDE2MTE5MiwgMTYxMTk3LCAxNjEyMDIsIDE2MTIwNywgCisgICAgMTYxMjEyLCAxNjEyMTcsIDE2MTIyMiwgMTYxMjI3LCAxNjEyMzIsIDE2MTIzNywgMTYxMjQyLCAxNjEyNDcsIDE2MTI1MiwgCisgICAgMTYxMjU5LCAxNjEyNjQsIDE2MTI2OSwgMTYxMjc2LCAxNjEyODEsIDE2MTI4NiwgMTYxMjkxLCAxNjEyOTYsIDE2MTMwMSwgCisgICAgMTYxMzA2LCAxNjEzMTEsIDE2MTMxNiwgMTYxMzIxLCAxNjEzMjYsIDE2MTMzMSwgMTYxMzM2LCAxNjEzNDMsIDE2MTM1MSwgCisgICAgMTYxMzU2LCAxNjEzNjEsIDE2MTM2OCwgMTYxMzczLCAxNjEzNzgsIDE2MTM4MywgMTYxMzkwLCAxNjEzOTUsIDE2MTQwMiwgCisgICAgMTYxNDA3LCAxNjE0MTQsIDE2MTQxOSwgMTYxNDI4LCAxNjE0MzcsIDE2MTQ0MiwgMTYxNDQ3LCAxNjE0NTIsIDE2MTQ1NywgCisgICAgMTYxNDYyLCAxNjE0NjcsIDE2MTQ3MiwgMTYxNDc3LCAxNjE0ODIsIDE2MTQ4NywgMTYxNDkyLCAxNjE0OTcsIDE2MTUwMiwgCisgICAgMTYxNTEwLCAxNjE1MTgsIDE2MTUyMywgMTYxNTI4LCAxNjE1MzMsIDE2MTUzOCwgMTYxNTQzLCAxNjE1NDksIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2MTU1NSwgMTYxNTYzLCAxNjE1NzEsIDE2MTU3OSwgMTYxNTg3LCAKKyAgICAxNjE1OTMsIDE2MTU5OSwgMTYxNjAzLCAxNjE2MDcsIDE2MTYxMywgMTYxNjE5LCAxNjE2MjgsIDE2MTYzMiwgMTYxNjM3LCAKKyAgICAxNjE2NDMsIDE2MTY0NywgMTYxNjUyLCAxNjE2NTYsIDE2MTY2MCwgMTYxNjY2LCAxNjE2NzIsIDE2MTY4MiwgMTYxNjkxLCAKKyAgICAxNjE2OTQsIDE2MTY5OSwgMTYxNzA1LCAxNjE3MTEsIDE2MTcyMiwgMTYxNzMyLCAxNjE3MzYsIDE2MTc0MSwgMTYxNzQ3LCAKKyAgICAxNjE3NTMsIDE2MTc2MiwgMTYxNzY3LCAxNjE3NzEsIDE2MTc3NiwgMTYxNzgwLCAxNjE3ODYsIDE2MTc5MiwgMTYxNzk4LCAKKyAgICAxNjE4MDIsIDE2MTgwNSwgMTYxODA5LCAxNjE4MTIsIDE2MTgxNSwgMTYxODIwLCAxNjE4MjUsIDE2MTgzMiwgMTYxODQwLCAKKyAgICAxNjE4NDcsIDE2MTg1NCwgMTYxODYzLCAxNjE4NzIsIDE2MTg3OSwgMTYxODg3LCAxNjE4OTQsIDE2MTkwMSwgMTYxOTEwLCAKKyAgICAxNjE5MTksIDE2MTkyNiwgMTYxOTM0LCAxNjE5NDEsIDE2MTk0OCwgMTYxOTU3LCAxNjE5NjQsIDE2MTk3MiwgMTYxOTc4LCAKKyAgICAxNjE5ODcsIDE2MTk5NSwgMTYyMDA0LCAxNjIwMTEsIDE2MjAyMSwgMTYyMDMyLCAxNjIwNDAsIDE2MjA0OCwgMTYyMDU3LCAKKyAgICAxNjIwNjUsIDE2MjA3MywgMTYyMDgyLCAxNjIwOTAsIDE2MjEwMCwgMTYyMTA5LCAxNjIxMTcsIDE2MjEyNSwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTYyMTM0LCAxNjIxNDIsIDE2MjE1MCwgCisgICAgMTYyMTU4LCAxNjIxNjYsIDE2MjE3NSwgMTYyMTg0LCAxNjIxOTMsIDE2MjIwMiwgMTYyMjExLCAxNjIyMjAsIDE2MjIyOSwgCisgICAgMCwgMCwgMCwgMCwgMTYyMjM4LCAxNjIyNDYsIDE2MjI1NCwgMTYyMjYyLCAxNjIyNzAsIDE2MjI3NywgMTYyMjg0LCAKKyAgICAxNjIyOTEsIDE2MjI5OCwgMTYyMzA2LCAxNjIzMTQsIDE2MjMyMiwgMTYyMzMwLCAxNjIzNDAsIDE2MjM1MCwgMTYyMzYwLCAKKyAgICAxNjIzNzAsIDE2MjM3OSwgMTYyMzg4LCAxNjIzOTcsIDE2MjQwNiwgMTYyNDE1LCAxNjI0MjQsIDE2MjQzMywgMTYyNDQyLCAKKyAgICAxNjI0NTAsIDE2MjQ1OCwgMTYyNDY2LCAxNjI0NzQsIDE2MjQ4MiwgMTYyNDkwLCAxNjI0OTgsIDE2MjUwNiwgMTYyNTE2LCAKKyAgICAxNjI1MjYsIDE2MjUzNiwgMTYyNTQ2LCAxNjI1NTAsIDE2MjU1NCwgMTYyNTU4LCAxNjI1NjIsIDE2MjU2NSwgMTYyNTY4LCAKKyAgICAxNjI1NzEsIDE2MjU3NCwgMTYyNTc4LCAxNjI1ODIsIDE2MjU4NiwgMTYyNTkwLCAxNjI1OTUsIDE2MjYwMCwgMTYyNjA1LCAKKyAgICAxNjI2MTAsIDE2MjYxMywgMTYyNjE2LCAxNjI2MTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2MjYyMiwgMTYyNjI1LCAKKyAgICAxNjI2MjgsIDE2MjYzMSwgMTYyNjM0LCAxNjI2MzksIDE2MjY0NCwgMTYyNjUwLCAxNjI2NTYsIDE2MjY2MCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMTYyNjY0LCAxNjI2NzAsIDE2MjY3NiwgMTYyNjgyLCAxNjI2ODgsIDE2MjY5NiwgMTYyNzA0LCAxNjI3MTMsIAorICAgIDE2MjcyMiwgMTYyNzI3LCAxNjI3MzIsIDE2MjczNywgMTYyNzQyLCAxNjI3NDksIDE2Mjc1NiwgMTYyNzY0LCAxNjI3NzIsIAorICAgIDE2Mjc3OSwgMTYyNzg2LCAxNjI3OTMsIDE2MjgwMCwgMTYyODA5LCAxNjI4MTgsIDE2MjgyOCwgMTYyODM4LCAxNjI4NDQsIAorICAgIDE2Mjg1MCwgMTYyODU2LCAxNjI4NjIsIDE2Mjg3MCwgMTYyODc4LCAxNjI4ODcsIDE2Mjg5NiwgMTYyOTA0LCAxNjI5MTIsIAorICAgIDE2MjkyMCwgMTYyOTI4LCAxNjI5MzgsIDE2Mjk0OCwgMTYyOTU5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjI5NzAsIAorICAgIDE2Mjk3NSwgMTYyOTgwLCAxNjI5ODUsIDE2Mjk5MCwgMTYyOTk5LCAxNjMwMDgsIDE2MzAxNywgMTYzMDI2LCAxNjMwMzMsIAorICAgIDE2MzA0MCwgMTYzMDQ3LCAxNjMwNTQsIDE2MzA2MSwgMTYzMDcwLCAxNjMwNzksIDE2MzA4OCwgMTYzMDkzLCAxNjMxMDAsIAorICAgIDE2MzEwNywgMTYzMTE0LCAxNjMxMTksIDE2MzEyNCwgMTYzMTI5LCAxNjMxMzQsIDE2MzE0MSwgMTYzMTQ4LCAxNjMxNTUsIAorICAgIDE2MzE2MiwgMTYzMTY5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTc2MTAsIDE1NzYxMiwgCi0gICAgMTU3NjE2LCAxNTc2MTgsIDE1NzYyMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU3NjI0LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjMxNzgsIDE2MzE4MiwgMTYzMTg2LCAxNjMxOTEsIDE2MzE5NSwgMTYzMTk5LCAKKyAgICAxNjMyMDQsIDE2MzIwOCwgMTYzMjEyLCAxNjMyMTgsIDE2MzIyNCwgMTYzMjMxLCAxNjMyMzUsIDE2MzIzOSwgMTYzMjQxLCAKKyAgICAwLCAxNjMyNTEsIDE2MzI1OCwgMTYzMjYyLCAxNjMyNjYsIDE2MzI3NiwgMTYzMjgwLCAxNjMyODQsIDE2MzI4OCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTYzMjkyLCAwLCAwLCAxNjMyOTYsIDE2MzI5OCwgMTYzMzAwLCAxNjMzMDYsIDE2MzMxMCwgCisgICAgMTYzMzEyLCAxNjMzMTgsIDE2MzMyMCwgMTYzMzIyLCAxNjMzMjYsIDE2MzMyOCwgMTYzMzMyLCAwLCAxNjMzMzQsIAorICAgIDE2MzMzOCwgMTYzMzQzLCAxNjMzNDcsIDE2MzM1MSwgMTYzMzUzLCAxNjMzNTcsIDE2MzM1OSwgMTYzMzY1LCAxNjMzNzEsIAorICAgIDE2MzM3NywgMTYzMzgxLCAwLCAwLCAwLCAwLCAxNjMzODcsIDE2MzM4OSwgMTYzMzkxLCAxNjMzOTMsIDE2MzM5NSwgCisgICAgMTYzMzk3LCAxNjMzOTksIDE2MzQwMywgMTYzNDA3LCAxNjM0MTQsIDE2MzQxOCwgMTYzNDIwLCAxNjM0MjUsIDE2MzQyNywgCisgICAgMTYzNDI5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjM0MzEsIDE2MzQzMywgMTYzNDM3LCAxNjM0MzksIDE2MzQ0MSwgCisgICAgMTYzNDQ1LCAxNjM0NDcsIDE2MzQ0OSwgMTYzNDUxLCAxNjM0NTMsIDE2MzQ1NSwgMTYzNDU5LCAxNjM0NjEsIDE2MzQ2MywgCisgICAgMTYzNDY1LCAxNjM0NjcsIDE2MzQ2OSwgMTYzNDcxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjM0NzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1NzYyOCwgMTU3NjMyLCAxNTc2MzYsIDE1NzY0MCwgCi0gICAgMTU3NjQ0LCAxNTc2NDgsIDE1NzY1MiwgMTU3NjU2LCAxNTc2NjAsIDE1NzY2NCwgMTU3NjY4LCAxNTc2NzIsIDE1NzY3NiwgCi0gICAgMTU3NjgwLCAxNTc2ODQsIDE1NzY4OCwgMTU3NjkyLCAxNTc2OTYsIDE1NzcwMCwgMTU3NzA0LCAxNTc3MDgsIDE1NzcxMiwgCi0gICAgMTU3NzE2LCAxNTc3MjAsIDE1NzcyNCwgMTU3NzI4LCAxNTc3MzIsIDE1NzczNiwgMTU3NzQwLCAxNTc3NDQsIDE1Nzc0OCwgCi0gICAgMTU3NzUyLCAxNTc3NTYsIDE1Nzc2MCwgMTU3NzY0LCAxNTc3NjgsIDE1Nzc3MiwgMTU3Nzc2LCAxNTc3ODAsIDE1Nzc4NCwgCi0gICAgMTU3Nzg4LCAxNTc3OTIsIDE1Nzc5NiwgMTU3ODAwLCAxNTc4MDQsIDE1NzgwOCwgMTU3ODEyLCAxNTc4MTYsIDE1NzgyMCwgCi0gICAgMTU3ODI0LCAxNTc4MjgsIDE1NzgzMiwgMTU3ODM2LCAxNTc4NDAsIDE1Nzg0NCwgMTU3ODQ4LCAxNTc4NTIsIDE1Nzg1NiwgCi0gICAgMTU3ODYwLCAxNTc4NjQsIDE1Nzg2OCwgMTU3ODcyLCAxNTc4NzYsIDE1Nzg4MCwgMTU3ODg0LCAxNTc4ODgsIDE1Nzg5MiwgCi0gICAgMTU3ODk2LCAxNTc5MDAsIDE1NzkwNCwgMTU3OTA4LCAxNTc5MTIsIDE1NzkxNiwgMTU3OTIwLCAxNTc5MjQsIDE1NzkyOCwgCi0gICAgMTU3OTMyLCAxNTc5MzYsIDE1Nzk0MCwgMTU3OTQ0LCAxNTc5NDgsIDE1Nzk1MiwgMTU3OTU2LCAxNTc5NjAsIDE1Nzk2NCwgCi0gICAgMTU3OTY4LCAxNTc5NzIsIDE1Nzk3NiwgMTU3OTgwLCAxNTc5ODQsIDE1Nzk4OCwgMTU3OTkyLCAxNTc5OTYsIDE1ODAwMCwgCi0gICAgMTU4MDA0LCAxNTgwMDgsIDE1ODAxMiwgMTU4MDE2LCAxNTgwMjAsIDE1ODAyNCwgMTU4MDI4LCAxNTgwMzIsIDE1ODAzNiwgCi0gICAgMTU4MDQwLCAxNTgwNDQsIDE1ODA0OCwgMTU4MDUyLCAxNTgwNTYsIDE1ODA2MCwgMTU4MDY0LCAxNTgwNjgsIDE1ODA3MiwgCi0gICAgMTU4MDc2LCAxNTgwODAsIDE1ODA4NCwgMTU4MDg4LCAxNTgwOTIsIDE1ODA5NiwgMTU4MTAwLCAxNTgxMDQsIDE1ODEwOCwgCi0gICAgMTU4MTEyLCAxNTgxMTYsIDE1ODEyMCwgMTU4MTI0LCAxNTgxMjgsIDE1ODEzMiwgMTU4MTM2LCAxNTgxNDAsIDE1ODE0NCwgCi0gICAgMTU4MTQ4LCAxNTgxNTIsIDE1ODE1NiwgMTU4MTYwLCAxNTgxNjQsIDE1ODE2OCwgMTU4MTcyLCAxNTgxNzYsIDE1ODE4MCwgCi0gICAgMTU4MTg0LCAxNTgxODgsIDE1ODE5MiwgMTU4MTk2LCAxNTgyMDAsIDE1ODIwNCwgMTU4MjA4LCAxNTgyMTIsIDE1ODIxNiwgCi0gICAgMTU4MjIwLCAxNTgyMjQsIDE1ODIyOCwgMTU4MjMyLCAxNTgyMzYsIDE1ODI0MCwgMTU4MjQ0LCAxNTgyNDgsIDE1ODI1MiwgCi0gICAgMTU4MjU2LCAxNTgyNjAsIDE1ODI2NCwgMTU4MjY4LCAxNTgyNzIsIDE1ODI3NiwgMTU4MjgwLCAxNTgyODQsIDE1ODI4OCwgCi0gICAgMTU4MjkyLCAxNTgyOTYsIDE1ODMwMCwgMTU4MzA0LCAxNTgzMDgsIDE1ODMxMiwgMTU4MzE2LCAxNTgzMjAsIDE1ODMyNCwgCi0gICAgMTU4MzI4LCAxNTgzMzIsIDE1ODMzNiwgMTU4MzQwLCAxNTgzNDQsIDE1ODM0OCwgMTU4MzUyLCAxNTgzNTYsIDE1ODM2MCwgCi0gICAgMTU4MzY0LCAxNTgzNjgsIDE1ODM3MiwgMTU4Mzc2LCAxNTgzODAsIDE1ODM4NCwgMTU4Mzg4LCAxNTgzOTIsIDE1ODM5NiwgCi0gICAgMTU4NDAwLCAxNTg0MDQsIDE1ODQwOCwgMTU4NDEyLCAxNTg0MTYsIDE1ODQyMCwgMTU4NDI0LCAxNTg0MjgsIDE1ODQzMiwgCi0gICAgMTU4NDM2LCAxNTg0NDAsIDE1ODQ0NCwgMTU4NDQ4LCAxNTg0NTIsIDE1ODQ1NiwgMTU4NDYwLCAxNTg0NjQsIDE1ODQ2OCwgCi0gICAgMTU4NDcyLCAxNTg0NzYsIDE1ODQ4MCwgMTU4NDg0LCAxNTg0ODgsIDE1ODQ5MiwgMTU4NDk2LCAxNTg1MDAsIDE1ODUwNCwgCi0gICAgMTU4NTA4LCAxNTg1MTIsIDE1ODUxNiwgMTU4NTIwLCAxNTg1MjQsIDE1ODUyOCwgMTU4NTMyLCAxNTg1MzYsIDE1ODU0MCwgCi0gICAgMTU4NTQ0LCAxNTg1NDgsIDE1ODU1MiwgMTU4NTU2LCAxNTg1NjAsIDE1ODU2NCwgMTU4NTY4LCAxNTg1NzIsIDE1ODU3NiwgCi0gICAgMTU4NTgwLCAxNTg1ODQsIDE1ODU4OCwgMTU4NTkyLCAxNTg1OTYsIDE1ODYwMCwgMTU4NjA0LCAxNTg2MDgsIDE1ODYxMiwgCi0gICAgMTU4NjE2LCAxNTg2MjAsIDE1ODYyNCwgMTU4NjI4LCAxNTg2MzIsIDE1ODYzNiwgMTU4NjQwLCAxNTg2NDQsIDE1ODY0OCwgCi0gICAgMTU4NjUyLCAxNTg2NTYsIDE1ODY2MCwgMTU4NjY0LCAxNTg2NjgsIDE1ODY3MiwgMTU4Njc2LCAxNTg2ODAsIDE1ODY4NCwgCi0gICAgMTU4Njg4LCAxNTg2OTIsIDE1ODY5NiwgMTU4NzAwLCAxNTg3MDQsIDE1ODcwOCwgMTU4NzEyLCAxNTg3MTYsIDE1ODcyMCwgCi0gICAgMTU4NzI0LCAxNTg3MjgsIDE1ODczMiwgMTU4NzM2LCAxNTg3NDAsIDE1ODc0NCwgMTU4NzQ4LCAxNTg3NTIsIDE1ODc1NiwgCi0gICAgMTU4NzYwLCAxNTg3NjQsIDE1ODc2OCwgMTU4NzcyLCAxNTg3NzYsIDE1ODc4MCwgMTU4Nzg0LCAxNTg3ODgsIDE1ODc5MiwgCi0gICAgMTU4Nzk2LCAxNTg4MDAsIDE1ODgwNCwgMTU4ODA4LCAxNTg4MTIsIDE1ODgxNiwgMTU4ODIwLCAxNTg4MjQsIDE1ODgyOCwgCi0gICAgMTU4ODMyLCAxNTg4MzYsIDE1ODg0MCwgMTU4ODQ0LCAxNTg4NDgsIDE1ODg1MiwgMTU4ODU2LCAxNTg4NjAsIDE1ODg2NCwgCi0gICAgMTU4ODY4LCAxNTg4NzIsIDE1ODg3NiwgMTU4ODgwLCAxNTg4ODQsIDE1ODg4OCwgMTU4ODkyLCAxNTg4OTYsIDE1ODkwMCwgCi0gICAgMTU4OTA0LCAxNTg5MDgsIDE1ODkxMiwgMTU4OTE2LCAxNTg5MjAsIDE1ODkyNCwgMTU4OTI4LCAxNTg5MzIsIDE1ODkzNiwgCi0gICAgMTU4OTQwLCAxNTg5NDQsIDE1ODk0OCwgMTU4OTUyLCAxNTg5NTYsIDE1ODk2MCwgMTU4OTY0LCAxNTg5NjgsIDE1ODk3MiwgCi0gICAgMTU4OTc2LCAxNTg5ODAsIDE1ODk4NCwgMTU4OTg4LCAxNTg5OTIsIDE1ODk5NiwgMTU5MDAwLCAxNTkwMDQsIDE1OTAwOCwgCi0gICAgMTU5MDEyLCAxNTkwMTYsIDE1OTAyMCwgMTU5MDI0LCAxNTkwMjgsIDE1OTAzMiwgMTU5MDM2LCAxNTkwNDAsIDE1OTA0NCwgCi0gICAgMTU5MDQ4LCAxNTkwNTIsIDE1OTA1NiwgMTU5MDYwLCAxNTkwNjQsIDE1OTA2OCwgMTU5MDcyLCAxNTkwNzYsIDE1OTA4MCwgCi0gICAgMTU5MDg0LCAxNTkwODgsIDE1OTA5MiwgMTU5MDk2LCAxNTkxMDAsIDE1OTEwNCwgMTU5MTA4LCAxNTkxMTIsIDE1OTExNiwgCi0gICAgMTU5MTIwLCAxNTkxMjQsIDE1OTEyOCwgMTU5MTMyLCAxNTkxMzYsIDE1OTE0MCwgMTU5MTQ0LCAxNTkxNDgsIDE1OTE1MiwgCi0gICAgMTU5MTU2LCAxNTkxNjAsIDE1OTE2NCwgMTU5MTY4LCAxNTkxNzIsIDE1OTE3NiwgMTU5MTgwLCAxNTkxODQsIDE1OTE4OCwgCi0gICAgMTU5MTkyLCAxNTkxOTYsIDE1OTIwMCwgMTU5MjA0LCAxNTkyMDgsIDE1OTIxMiwgMTU5MjE2LCAxNTkyMjAsIDE1OTIyNCwgCi0gICAgMTU5MjI4LCAxNTkyMzIsIDE1OTIzNiwgMTU5MjQwLCAxNTkyNDQsIDE1OTI0OCwgMTU5MjUyLCAxNTkyNTYsIDE1OTI2MCwgCi0gICAgMTU5MjY0LCAxNTkyNjgsIDE1OTI3MiwgMTU5Mjc2LCAxNTkyODAsIDE1OTI4NCwgMTU5Mjg4LCAxNTkyOTIsIDE1OTI5NiwgCi0gICAgMTU5MzAwLCAxNTkzMDQsIDE1OTMwOCwgMTU5MzEyLCAxNTkzMTYsIDE1OTMyMCwgMTU5MzI0LCAxNTkzMjgsIDE1OTMzMiwgCi0gICAgMTU5MzM2LCAxNTkzNDAsIDE1OTM0NCwgMTU5MzQ4LCAxNTkzNTIsIDE1OTM1NiwgMTU5MzYwLCAxNTkzNjQsIDE1OTM2OCwgCi0gICAgMTU5MzcyLCAxNTkzNzYsIDE1OTM4MCwgMTU5Mzg0LCAxNTkzODgsIDE1OTM5MiwgMTU5Mzk2LCAxNTk0MDAsIDE1OTQwNCwgCi0gICAgMTU5NDA4LCAxNTk0MTIsIDE1OTQxNiwgMTU5NDIwLCAxNTk0MjQsIDE1OTQyOCwgMTU5NDMyLCAxNTk0MzYsIDE1OTQ0MCwgCi0gICAgMTU5NDQ0LCAxNTk0NDgsIDE1OTQ1MiwgMTU5NDU2LCAxNTk0NjAsIDE1OTQ2NCwgMTU5NDY4LCAxNTk0NzIsIDE1OTQ3NiwgCi0gICAgMTU5NDgwLCAxNTk0ODQsIDE1OTQ4OCwgMTU5NDkyLCAxNTk0OTYsIDE1OTUwMCwgMTU5NTA0LCAxNTk1MDgsIDE1OTUxMiwgCi0gICAgMTU5NTE2LCAxNTk1MjAsIDE1OTUyNCwgMTU5NTI4LCAxNTk1MzIsIDE1OTUzNiwgMTU5NTQwLCAxNTk1NDQsIDE1OTU0OCwgCi0gICAgMTU5NTUyLCAxNTk1NTYsIDE1OTU2MCwgMTU5NTY0LCAxNTk1NjgsIDE1OTU3MiwgMTU5NTc2LCAxNTk1ODAsIDE1OTU4NCwgCi0gICAgMTU5NTg4LCAxNTk1OTIsIDE1OTU5NiwgMTU5NjAwLCAxNTk2MDQsIDE1OTYwOCwgMTU5NjEyLCAxNTk2MTYsIDE1OTYyMCwgCi0gICAgMTU5NjI0LCAxNTk2MjgsIDE1OTYzMiwgMTU5NjM2LCAxNTk2NDAsIDE1OTY0NCwgMTU5NjQ4LCAxNTk2NTIsIDE1OTY1NiwgCi0gICAgMTU5NjYwLCAxNTk2NjQsIDE1OTY2OCwgMTU5NjcyLCAxNTk2NzYsIDE1OTY4MCwgMTU5Njg0LCAxNTk2ODgsIDE1OTY5MiwgCi0gICAgMTU5Njk2LCAxNTk3MDAsIDE1OTcwNCwgMTU5NzA4LCAxNTk3MTIsIDE1OTcxNiwgMTU5NzIwLCAxNTk3MjQsIDE1OTcyOCwgCi0gICAgMTU5NzMyLCAxNTk3MzYsIDE1OTc0MCwgMTU5NzQ0LCAxNTk3NDgsIDE1OTc1MiwgMTU5NzU2LCAxNTk3NjAsIDE1OTc2NCwgCi0gICAgMTU5NzY4LCAxNTk3NzIsIDE1OTc3NiwgMTU5NzgwLCAxNTk3ODQsIDE1OTc4OCwgMTU5NzkyLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxNjM0NzcsIDE2MzQ4MSwgMTYzNDg1LCAxNjM0ODksIDE2MzQ5MywgMTYzNDk3LCAxNjM1MDEsIDE2MzUwNSwgCisgICAgMTYzNTA5LCAxNjM1MTMsIDE2MzUxNywgMTYzNTIxLCAxNjM1MjUsIDE2MzUyOSwgMTYzNTMzLCAxNjM1MzcsIDE2MzU0MSwgCisgICAgMTYzNTQ1LCAxNjM1NDksIDE2MzU1MywgMTYzNTU3LCAxNjM1NjEsIDE2MzU2NSwgMTYzNTY5LCAxNjM1NzMsIDE2MzU3NywgCisgICAgMTYzNTgxLCAxNjM1ODUsIDE2MzU4OSwgMTYzNTkzLCAxNjM1OTcsIDE2MzYwMSwgMTYzNjA1LCAxNjM2MDksIDE2MzYxMywgCisgICAgMTYzNjE3LCAxNjM2MjEsIDE2MzYyNSwgMTYzNjI5LCAxNjM2MzMsIDE2MzYzNywgMTYzNjQxLCAxNjM2NDUsIDE2MzY0OSwgCisgICAgMTYzNjUzLCAxNjM2NTcsIDE2MzY2MSwgMTYzNjY1LCAxNjM2NjksIDE2MzY3MywgMTYzNjc3LCAxNjM2ODEsIDE2MzY4NSwgCisgICAgMTYzNjg5LCAxNjM2OTMsIDE2MzY5NywgMTYzNzAxLCAxNjM3MDUsIDE2MzcwOSwgMTYzNzEzLCAxNjM3MTcsIDE2MzcyMSwgCisgICAgMTYzNzI1LCAxNjM3MjksIDE2MzczMywgMTYzNzM3LCAxNjM3NDEsIDE2Mzc0NSwgMTYzNzQ5LCAxNjM3NTMsIDE2Mzc1NywgCisgICAgMTYzNzYxLCAxNjM3NjUsIDE2Mzc2OSwgMTYzNzczLCAxNjM3NzcsIDE2Mzc4MSwgMTYzNzg1LCAxNjM3ODksIDE2Mzc5MywgCisgICAgMTYzNzk3LCAxNjM4MDEsIDE2MzgwNSwgMTYzODA5LCAxNjM4MTMsIDE2MzgxNywgMTYzODIxLCAxNjM4MjUsIDE2MzgyOSwgCisgICAgMTYzODMzLCAxNjM4MzcsIDE2Mzg0MSwgMTYzODQ1LCAxNjM4NDksIDE2Mzg1MywgMTYzODU3LCAxNjM4NjEsIDE2Mzg2NSwgCisgICAgMTYzODY5LCAxNjM4NzMsIDE2Mzg3NywgMTYzODgxLCAxNjM4ODUsIDE2Mzg4OSwgMTYzODkzLCAxNjM4OTcsIDE2MzkwMSwgCisgICAgMTYzOTA1LCAxNjM5MDksIDE2MzkxMywgMTYzOTE3LCAxNjM5MjEsIDE2MzkyNSwgMTYzOTI5LCAxNjM5MzMsIDE2MzkzNywgCisgICAgMTYzOTQxLCAxNjM5NDUsIDE2Mzk0OSwgMTYzOTUzLCAxNjM5NTcsIDE2Mzk2MSwgMTYzOTY1LCAxNjM5NjksIDE2Mzk3MywgCisgICAgMTYzOTc3LCAxNjM5ODEsIDE2Mzk4NSwgMTYzOTg5LCAxNjM5OTMsIDE2Mzk5NywgMTY0MDAxLCAxNjQwMDUsIDE2NDAwOSwgCisgICAgMTY0MDEzLCAxNjQwMTcsIDE2NDAyMSwgMTY0MDI1LCAxNjQwMjksIDE2NDAzMywgMTY0MDM3LCAxNjQwNDEsIDE2NDA0NSwgCisgICAgMTY0MDQ5LCAxNjQwNTMsIDE2NDA1NywgMTY0MDYxLCAxNjQwNjUsIDE2NDA2OSwgMTY0MDczLCAxNjQwNzcsIDE2NDA4MSwgCisgICAgMTY0MDg1LCAxNjQwODksIDE2NDA5MywgMTY0MDk3LCAxNjQxMDEsIDE2NDEwNSwgMTY0MTA5LCAxNjQxMTMsIDE2NDExNywgCisgICAgMTY0MTIxLCAxNjQxMjUsIDE2NDEyOSwgMTY0MTMzLCAxNjQxMzcsIDE2NDE0MSwgMTY0MTQ1LCAxNjQxNDksIDE2NDE1MywgCisgICAgMTY0MTU3LCAxNjQxNjEsIDE2NDE2NSwgMTY0MTY5LCAxNjQxNzMsIDE2NDE3NywgMTY0MTgxLCAxNjQxODUsIDE2NDE4OSwgCisgICAgMTY0MTkzLCAxNjQxOTcsIDE2NDIwMSwgMTY0MjA1LCAxNjQyMDksIDE2NDIxMywgMTY0MjE3LCAxNjQyMjEsIDE2NDIyNSwgCisgICAgMTY0MjI5LCAxNjQyMzMsIDE2NDIzNywgMTY0MjQxLCAxNjQyNDUsIDE2NDI0OSwgMTY0MjUzLCAxNjQyNTcsIDE2NDI2MSwgCisgICAgMTY0MjY1LCAxNjQyNjksIDE2NDI3MywgMTY0Mjc3LCAxNjQyODEsIDE2NDI4NSwgMTY0Mjg5LCAxNjQyOTMsIDE2NDI5NywgCisgICAgMTY0MzAxLCAxNjQzMDUsIDE2NDMwOSwgMTY0MzEzLCAxNjQzMTcsIDE2NDMyMSwgMTY0MzI1LCAxNjQzMjksIDE2NDMzMywgCisgICAgMTY0MzM3LCAxNjQzNDEsIDE2NDM0NSwgMTY0MzQ5LCAxNjQzNTMsIDE2NDM1NywgMTY0MzYxLCAxNjQzNjUsIDE2NDM2OSwgCisgICAgMTY0MzczLCAxNjQzNzcsIDE2NDM4MSwgMTY0Mzg1LCAxNjQzODksIDE2NDM5MywgMTY0Mzk3LCAxNjQ0MDEsIDE2NDQwNSwgCisgICAgMTY0NDA5LCAxNjQ0MTMsIDE2NDQxNywgMTY0NDIxLCAxNjQ0MjUsIDE2NDQyOSwgMTY0NDMzLCAxNjQ0MzcsIDE2NDQ0MSwgCisgICAgMTY0NDQ1LCAxNjQ0NDksIDE2NDQ1MywgMTY0NDU3LCAxNjQ0NjEsIDE2NDQ2NSwgMTY0NDY5LCAxNjQ0NzMsIDE2NDQ3NywgCisgICAgMTY0NDgxLCAxNjQ0ODUsIDE2NDQ4OSwgMTY0NDkzLCAxNjQ0OTcsIDE2NDUwMSwgMTY0NTA1LCAxNjQ1MDksIDE2NDUxMywgCisgICAgMTY0NTE3LCAxNjQ1MjEsIDE2NDUyNSwgMTY0NTI5LCAxNjQ1MzMsIDE2NDUzNywgMTY0NTQxLCAxNjQ1NDUsIDE2NDU0OSwgCisgICAgMTY0NTUzLCAxNjQ1NTcsIDE2NDU2MSwgMTY0NTY1LCAxNjQ1NjksIDE2NDU3MywgMTY0NTc3LCAxNjQ1ODEsIDE2NDU4NSwgCisgICAgMTY0NTg5LCAxNjQ1OTMsIDE2NDU5NywgMTY0NjAxLCAxNjQ2MDUsIDE2NDYwOSwgMTY0NjEzLCAxNjQ2MTcsIDE2NDYyMSwgCisgICAgMTY0NjI1LCAxNjQ2MjksIDE2NDYzMywgMTY0NjM3LCAxNjQ2NDEsIDE2NDY0NSwgMTY0NjQ5LCAxNjQ2NTMsIDE2NDY1NywgCisgICAgMTY0NjYxLCAxNjQ2NjUsIDE2NDY2OSwgMTY0NjczLCAxNjQ2NzcsIDE2NDY4MSwgMTY0Njg1LCAxNjQ2ODksIDE2NDY5MywgCisgICAgMTY0Njk3LCAxNjQ3MDEsIDE2NDcwNSwgMTY0NzA5LCAxNjQ3MTMsIDE2NDcxNywgMTY0NzIxLCAxNjQ3MjUsIDE2NDcyOSwgCisgICAgMTY0NzMzLCAxNjQ3MzcsIDE2NDc0MSwgMTY0NzQ1LCAxNjQ3NDksIDE2NDc1MywgMTY0NzU3LCAxNjQ3NjEsIDE2NDc2NSwgCisgICAgMTY0NzY5LCAxNjQ3NzMsIDE2NDc3NywgMTY0NzgxLCAxNjQ3ODUsIDE2NDc4OSwgMTY0NzkzLCAxNjQ3OTcsIDE2NDgwMSwgCisgICAgMTY0ODA1LCAxNjQ4MDksIDE2NDgxMywgMTY0ODE3LCAxNjQ4MjEsIDE2NDgyNSwgMTY0ODI5LCAxNjQ4MzMsIDE2NDgzNywgCisgICAgMTY0ODQxLCAxNjQ4NDUsIDE2NDg0OSwgMTY0ODUzLCAxNjQ4NTcsIDE2NDg2MSwgMTY0ODY1LCAxNjQ4NjksIDE2NDg3MywgCisgICAgMTY0ODc3LCAxNjQ4ODEsIDE2NDg4NSwgMTY0ODg5LCAxNjQ4OTMsIDE2NDg5NywgMTY0OTAxLCAxNjQ5MDUsIDE2NDkwOSwgCisgICAgMTY0OTEzLCAxNjQ5MTcsIDE2NDkyMSwgMTY0OTI1LCAxNjQ5MjksIDE2NDkzMywgMTY0OTM3LCAxNjQ5NDEsIDE2NDk0NSwgCisgICAgMTY0OTQ5LCAxNjQ5NTMsIDE2NDk1NywgMTY0OTYxLCAxNjQ5NjUsIDE2NDk2OSwgMTY0OTczLCAxNjQ5NzcsIDE2NDk4MSwgCisgICAgMTY0OTg1LCAxNjQ5ODksIDE2NDk5MywgMTY0OTk3LCAxNjUwMDEsIDE2NTAwNSwgMTY1MDA5LCAxNjUwMTMsIDE2NTAxNywgCisgICAgMTY1MDIxLCAxNjUwMjUsIDE2NTAyOSwgMTY1MDMzLCAxNjUwMzcsIDE2NTA0MSwgMTY1MDQ1LCAxNjUwNDksIDE2NTA1MywgCisgICAgMTY1MDU3LCAxNjUwNjEsIDE2NTA2NSwgMTY1MDY5LCAxNjUwNzMsIDE2NTA3NywgMTY1MDgxLCAxNjUwODUsIDE2NTA4OSwgCisgICAgMTY1MDkzLCAxNjUwOTcsIDE2NTEwMSwgMTY1MTA1LCAxNjUxMDksIDE2NTExMywgMTY1MTE3LCAxNjUxMjEsIDE2NTEyNSwgCisgICAgMTY1MTI5LCAxNjUxMzMsIDE2NTEzNywgMTY1MTQxLCAxNjUxNDUsIDE2NTE0OSwgMTY1MTUzLCAxNjUxNTcsIDE2NTE2MSwgCisgICAgMTY1MTY1LCAxNjUxNjksIDE2NTE3MywgMTY1MTc3LCAxNjUxODEsIDE2NTE4NSwgMTY1MTg5LCAxNjUxOTMsIDE2NTE5NywgCisgICAgMTY1MjAxLCAxNjUyMDUsIDE2NTIwOSwgMTY1MjEzLCAxNjUyMTcsIDE2NTIyMSwgMTY1MjI1LCAxNjUyMjksIDE2NTIzMywgCisgICAgMTY1MjM3LCAxNjUyNDEsIDE2NTI0NSwgMTY1MjQ5LCAxNjUyNTMsIDE2NTI1NywgMTY1MjYxLCAxNjUyNjUsIDE2NTI2OSwgCisgICAgMTY1MjczLCAxNjUyNzcsIDE2NTI4MSwgMTY1Mjg1LCAxNjUyODksIDE2NTI5MywgMTY1Mjk3LCAxNjUzMDEsIDE2NTMwNSwgCisgICAgMTY1MzA5LCAxNjUzMTMsIDE2NTMxNywgMTY1MzIxLCAxNjUzMjUsIDE2NTMyOSwgMTY1MzMzLCAxNjUzMzcsIDE2NTM0MSwgCisgICAgMTY1MzQ1LCAxNjUzNDksIDE2NTM1MywgMTY1MzU3LCAxNjUzNjEsIDE2NTM2NSwgMTY1MzY5LCAxNjUzNzMsIDE2NTM3NywgCisgICAgMTY1MzgxLCAxNjUzODUsIDE2NTM4OSwgMTY1MzkzLCAxNjUzOTcsIDE2NTQwMSwgMTY1NDA1LCAxNjU0MDksIDE2NTQxMywgCisgICAgMTY1NDE3LCAxNjU0MjEsIDE2NTQyNSwgMTY1NDI5LCAxNjU0MzMsIDE2NTQzNywgMTY1NDQxLCAxNjU0NDUsIDE2NTQ0OSwgCisgICAgMTY1NDUzLCAxNjU0NTcsIDE2NTQ2MSwgMTY1NDY1LCAxNjU0NjksIDE2NTQ3MywgMTY1NDc3LCAxNjU0ODEsIDE2NTQ4NSwgCisgICAgMTY1NDg5LCAxNjU0OTMsIDE2NTQ5NywgMTY1NTAxLCAxNjU1MDUsIDE2NTUwOSwgMTY1NTEzLCAxNjU1MTcsIDE2NTUyMSwgCisgICAgMTY1NTI1LCAxNjU1MjksIDE2NTUzMywgMTY1NTM3LCAxNjU1NDEsIDE2NTU0NSwgMTY1NTQ5LCAxNjU1NTMsIDE2NTU1NywgCisgICAgMTY1NTYxLCAxNjU1NjUsIDE2NTU2OSwgMTY1NTczLCAxNjU1NzcsIDE2NTU4MSwgMTY1NTg1LCAxNjU1ODksIDE2NTU5MywgCisgICAgMTY1NTk3LCAxNjU2MDEsIDE2NTYwNSwgMTY1NjA5LCAxNjU2MTMsIDE2NTYxNywgMTY1NjIxLCAxNjU2MjUsIDE2NTYyOSwgCisgICAgMTY1NjMzLCAxNjU2MzcsIDE2NTY0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC0yMDA3OCwzMTg2ICsyMTM1MywzMjc5IEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTU5Nzk2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTk4MDAsIDE1OTgwMywgMTU5ODA3LCAxNTk4MTEsIAotICAgIDE1OTgxNCwgMTU5ODE4LCAxNTk4MjIsIDE1OTgyNSwgMTU5ODI4LCAxNTk4MzIsIDE1OTgzNiwgMTU5ODM5LCAxNTk4NDIsIAotICAgIDE1OTg0NSwgMTU5ODQ4LCAxNTk4NTMsIDE1OTg1NiwgMTU5ODYwLCAxNTk4NjMsIDE1OTg2NiwgMTU5ODY5LCAxNTk4NzIsIAotICAgIDE1OTg3NSwgMTU5ODc4LCAxNTk4ODIsIDE1OTg4NSwgMTU5ODg5LCAxNTk4OTIsIDE1OTg5NSwgMTU5ODk5LCAxNTk5MDMsIAotICAgIDE1OTkwNywgMTU5OTExLCAxNTk5MTYsIDE1OTkyMSwgMTU5OTI3LCAxNTk5MzMsIDE1OTkzOSwgMTU5OTQ0LCAxNTk5NTAsIAotICAgIDE1OTk1NiwgMTU5OTYyLCAxNTk5NjcsIDE1OTk3MywgMTU5OTc5LCAxNTk5ODQsIDE1OTk5MCwgMTU5OTk2LCAxNjAwMDEsIAotICAgIDE2MDAwNywgMTYwMDEzLCAxNjAwMTgsIDE2MDAyMywgMTYwMDI5LCAxNjAwMzQsIDE2MDA0MCwgMTYwMDQ2LCAxNjAwNTIsIAotICAgIDE2MDA1OCwgMTYwMDY0LCAxNjAwNjgsIDE2MDA3MywgMTYwMDc3LCAxNjAwODIsIDE2MDA4NiwgMTYwMDkxLCAxNjAwOTYsIAotICAgIDE2MDEwMiwgMTYwMTA4LCAxNjAxMTQsIDE2MDExOSwgMTYwMTI1LCAxNjAxMzEsIDE2MDEzNywgMTYwMTQyLCAxNjAxNDgsIAotICAgIDE2MDE1NCwgMTYwMTU5LCAxNjAxNjUsIDE2MDE3MSwgMTYwMTc2LCAxNjAxODIsIDE2MDE4OCwgMTYwMTkzLCAxNjAxOTgsIAotICAgIDE2MDIwNCwgMTYwMjA5LCAxNjAyMTUsIDE2MDIyMSwgMTYwMjI3LCAxNjAyMzMsIDE2MDIzOSwgMTYwMjQ0LCAxNjAyNDgsIAotICAgIDE2MDI1MywgMTYwMjU2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjU2NDUsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDE2NTY0OSwgMTY1NjUyLCAxNjU2NTYsIDE2NTY2MCwgMTY1NjYzLCAxNjU2NjcsIDE2NTY3MSwgMTY1Njc0LCAKKyAgICAxNjU2NzcsIDE2NTY4MSwgMTY1Njg1LCAxNjU2ODgsIDE2NTY5MSwgMTY1Njk0LCAxNjU2OTcsIDE2NTcwMiwgMTY1NzA1LCAKKyAgICAxNjU3MDksIDE2NTcxMiwgMTY1NzE1LCAxNjU3MTgsIDE2NTcyMSwgMTY1NzI0LCAxNjU3MjcsIDE2NTczMSwgMTY1NzM0LCAKKyAgICAxNjU3MzgsIDE2NTc0MSwgMTY1NzQ0LCAxNjU3NDgsIDE2NTc1MiwgMTY1NzU2LCAxNjU3NjAsIDE2NTc2NSwgMTY1NzcwLCAKKyAgICAxNjU3NzYsIDE2NTc4MiwgMTY1Nzg4LCAxNjU3OTMsIDE2NTc5OSwgMTY1ODA1LCAxNjU4MTEsIDE2NTgxNiwgMTY1ODIyLCAKKyAgICAxNjU4MjgsIDE2NTgzMywgMTY1ODM5LCAxNjU4NDUsIDE2NTg1MCwgMTY1ODU2LCAxNjU4NjIsIDE2NTg2NywgMTY1ODczLCAKKyAgICAxNjU4NzksIDE2NTg4NCwgMTY1ODkwLCAxNjU4OTYsIDE2NTkwMiwgMTY1OTA4LCAxNjU5MTQsIDE2NTkxOCwgMTY1OTIzLCAKKyAgICAxNjU5MjcsIDE2NTkzMiwgMTY1OTM2LCAxNjU5NDEsIDE2NTk0NiwgMTY1OTUyLCAxNjU5NTgsIDE2NTk2NCwgMTY1OTY5LCAKKyAgICAxNjU5NzUsIDE2NTk4MSwgMTY1OTg3LCAxNjU5OTIsIDE2NTk5OCwgMTY2MDA0LCAxNjYwMDksIDE2NjAxNSwgMTY2MDIxLCAKKyAgICAxNjYwMjYsIDE2NjAzMiwgMTY2MDM4LCAxNjYwNDMsIDE2NjA0OSwgMTY2MDU1LCAxNjYwNjAsIDE2NjA2NiwgMTY2MDcyLCAKKyAgICAxNjYwNzgsIDE2NjA4NCwgMTY2MDkwLCAxNjYwOTUsIDE2NjA5OSwgMTY2MTA0LCAxNjYxMDcsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2MDI2MCwgMTYwMjYzLCAxNjAyNjYsIDE2MDI2OSwgCi0gICAgMTYwMjcyLCAxNjAyNzUsIDE2MDI3OCwgMTYwMjgxLCAxNjAyODQsIDE2MDI4NywgMTYwMjkwLCAxNjAyOTMsIDE2MDI5NiwgCi0gICAgMTYwMjk5LCAxNjAzMDIsIDE2MDMwNSwgMTYwMzA4LCAxNjAzMTEsIDE2MDMxNCwgMTYwMzE3LCAxNjAzMjAsIDE2MDMyMywgCi0gICAgMTYwMzI2LCAxNjAzMjksIDE2MDMzMiwgMTYwMzM1LCAxNjAzMzgsIDE2MDM0MSwgMTYwMzQ0LCAxNjAzNDcsIDE2MDM1MCwgCi0gICAgMTYwMzUzLCAxNjAzNTYsIDE2MDM1OSwgMTYwMzYyLCAxNjAzNjUsIDE2MDM2OCwgMTYwMzcxLCAxNjAzNzQsIDE2MDM3NywgCi0gICAgMTYwMzgwLCAxNjAzODMsIDE2MDM4NiwgMTYwMzg5LCAxNjAzOTIsIDE2MDM5NSwgMTYwMzk4LCAxNjA0MDEsIDE2MDQwNCwgCi0gICAgMTYwNDA3LCAxNjA0MTAsIDE2MDQxMywgMTYwNDE2LCAxNjA0MTksIDE2MDQyMiwgMTYwNDI1LCAxNjA0MjgsIDE2MDQzMSwgCi0gICAgMTYwNDM0LCAxNjA0MzcsIDE2MDQ0MCwgMTYwNDQzLCAxNjA0NDYsIDE2MDQ0OSwgMTYwNDUyLCAxNjA0NTUsIDE2MDQ1OCwgCi0gICAgMTYwNDYxLCAxNjA0NjQsIDE2MDQ2NywgMTYwNDcwLCAxNjA0NzMsIDE2MDQ3NiwgMTYwNDc5LCAxNjA0ODIsIDE2MDQ4NSwgCi0gICAgMTYwNDg4LCAxNjA0OTEsIDE2MDQ5NCwgMTYwNDk3LCAxNjA1MDAsIDE2MDUwMywgMTYwNTA2LCAxNjA1MDksIDE2MDUxMiwgCi0gICAgMTYwNTE1LCAxNjA1MTgsIDE2MDUyMSwgMTYwNTI0LCAxNjA1MjcsIDE2MDUzMCwgMTYwNTMzLCAxNjA1MzYsIDE2MDUzOSwgCi0gICAgMTYwNTQyLCAxNjA1NDUsIDE2MDU0OCwgMTYwNTUxLCAxNjA1NTQsIDE2MDU1NywgMTYwNTYwLCAxNjA1NjMsIDE2MDU2NiwgCi0gICAgMTYwNTY5LCAxNjA1NzIsIDE2MDU3NSwgMTYwNTc4LCAxNjA1ODEsIDE2MDU4NCwgMTYwNTg3LCAxNjA1OTAsIDE2MDU5MywgCi0gICAgMTYwNTk2LCAxNjA1OTksIDE2MDYwMiwgMTYwNjA1LCAxNjA2MDgsIDE2MDYxMSwgMTYwNjE0LCAxNjA2MTcsIDE2MDYyMCwgCi0gICAgMTYwNjIzLCAxNjA2MjYsIDE2MDYyOSwgMTYwNjMyLCAxNjA2MzUsIDE2MDYzOCwgMTYwNjQxLCAxNjA2NDQsIDE2MDY0NywgCi0gICAgMTYwNjUwLCAxNjA2NTMsIDE2MDY1NiwgMTYwNjU5LCAxNjA2NjIsIDE2MDY2NSwgMTYwNjY4LCAxNjA2NzEsIDE2MDY3NCwgCi0gICAgMTYwNjc3LCAxNjA2ODAsIDE2MDY4MywgMTYwNjg2LCAxNjA2ODksIDE2MDY5MiwgMTYwNjk1LCAxNjA2OTgsIDE2MDcwMSwgCi0gICAgMTYwNzA0LCAxNjA3MDcsIDE2MDcxMCwgMTYwNzEzLCAxNjA3MTYsIDE2MDcxOSwgMTYwNzIyLCAxNjA3MjUsIDE2MDcyOCwgCi0gICAgMTYwNzMxLCAxNjA3MzQsIDE2MDczNywgMTYwNzQwLCAxNjA3NDMsIDE2MDc0NiwgMTYwNzQ5LCAxNjA3NTIsIDE2MDc1NSwgCi0gICAgMTYwNzU4LCAxNjA3NjEsIDE2MDc2NCwgMTYwNzY3LCAxNjA3NzAsIDE2MDc3MywgMTYwNzc2LCAxNjA3NzksIDE2MDc4MiwgCi0gICAgMTYwNzg1LCAxNjA3ODgsIDE2MDc5MSwgMTYwNzk0LCAxNjA3OTcsIDE2MDgwMCwgMTYwODAzLCAxNjA4MDYsIDE2MDgwOSwgCi0gICAgMTYwODEyLCAxNjA4MTUsIDE2MDgxOCwgMTYwODIxLCAxNjA4MjQsIDE2MDgyNywgMTYwODMwLCAxNjA4MzMsIDE2MDgzNiwgCi0gICAgMTYwODM5LCAxNjA4NDIsIDE2MDg0NSwgMTYwODQ4LCAxNjA4NTEsIDE2MDg1NCwgMTYwODU3LCAxNjA4NjAsIDE2MDg2MywgCi0gICAgMTYwODY2LCAxNjA4NjksIDE2MDg3MiwgMTYwODc1LCAxNjA4NzgsIDE2MDg4MSwgMTYwODg0LCAxNjA4ODcsIDE2MDg5MCwgCi0gICAgMTYwODkzLCAxNjA4OTYsIDE2MDg5OSwgMTYwOTAyLCAxNjA5MDUsIDE2MDkwOCwgMTYwOTExLCAxNjA5MTQsIDE2MDkxNywgCi0gICAgMTYwOTIwLCAxNjA5MjMsIDE2MDkyNiwgMTYwOTI5LCAxNjA5MzIsIDE2MDkzNSwgMTYwOTM4LCAxNjA5NDEsIDE2MDk0NCwgCi0gICAgMTYwOTQ3LCAxNjA5NTAsIDE2MDk1MywgMTYwOTU2LCAxNjA5NTksIDE2MDk2MiwgMTYwOTY1LCAxNjA5NjgsIDE2MDk3MSwgCi0gICAgMTYwOTc0LCAxNjA5NzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2MDk4MCwgCi0gICAgMTYwOTgyLCAxNjA5ODQsIDE2MDk4OSwgMTYwOTkxLCAxNjA5OTYsIDE2MDk5OCwgMTYxMDAzLCAxNjEwMDUsIDE2MTAxMCwgCi0gICAgMTYxMDEyLCAxNjEwMTQsIDE2MTAxNiwgMTYxMDE4LCAxNjEwMjAsIDE2MTAyMiwgMTYxMDI0LCAxNjEwMjYsIDE2MTAyOCwgCi0gICAgMTYxMDMxLCAxNjEwMzUsIDE2MTAzNywgMTYxMDM5LCAxNjEwNDMsIDE2MTA0NywgMTYxMDUyLCAxNjEwNTQsIDE2MTA1NiwgCi0gICAgMTYxMDU4LCAxNjEwNjIsIDE2MTA2NSwgMTYxMDY3LCAxNjEwNzEsIDE2MTA3MywgMTYxMDc3LCAxNjEwNzksIDE2MTA4MywgCi0gICAgMTYxMDg2LCAxNjEwODgsIDE2MTA5MiwgMTYxMDk2LCAxNjEwOTgsIDE2MTEwNCwgMTYxMTA2LCAxNjExMTEsIDE2MTExMywgCi0gICAgMTYxMTE4LCAxNjExMjAsIDE2MTEyNSwgMTYxMTI3LCAxNjExMzIsIDE2MTEzNCwgMTYxMTM3LCAxNjExMzksIDE2MTE0MywgCi0gICAgMTYxMTQ1LCAxNjExNTIsIDE2MTE1NCwgMTYxMTU2LCAxNjExNTgsIDE2MTE2MywgMTYxMTY1LCAxNjExNjcsIDE2MTE2OSwgCi0gICAgMTYxMTcxLCAxNjExNzMsIDE2MTE3OCwgMTYxMTgyLCAxNjExODQsIDE2MTE4OSwgMTYxMTkzLCAxNjExOTUsIDE2MTIwMCwgCi0gICAgMTYxMjA0LCAxNjEyMDYsIDE2MTIxMSwgMTYxMjE1LCAxNjEyMTcsIDE2MTIxOSwgMTYxMjIxLCAxNjEyMjMsIDE2MTIyNywgCi0gICAgMTYxMjI5LCAxNjEyMzQsIDE2MTIzNiwgMTYxMjQyLCAxNjEyNDQsIDE2MTI1MCwgMTYxMjUyLCAxNjEyNTQsIDE2MTI1NiwgCi0gICAgMTYxMjYwLCAxNjEyNjIsIDE2MTI2OSwgMTYxMjcxLCAxNjEyNzgsIDE2MTI4MCwgMTYxMjg1LCAxNjEyOTEsIDE2MTI5MywgCi0gICAgMTYxMjk5LCAxNjEzMDYsIDE2MTMwOCwgMTYxMzE0LCAxNjEzMTksIDE2MTMyMSwgMTYxMzI3LCAxNjEzMzMsIDE2MTMzNSwgCi0gICAgMTYxMzQxLCAxNjEzNDcsIDE2MTM0OSwgMTYxMzU1LCAxNjEzNTksIDE2MTM2MSwgMTYxMzY2LCAxNjEzNjgsIDE2MTM3MCwgCi0gICAgMTYxMzc1LCAxNjEzNzcsIDE2MTM3OSwgMTYxMzg1LCAxNjEzODcsIDE2MTM5MiwgMTYxMzk2LCAxNjEzOTgsIDE2MTQwMywgCi0gICAgMTYxNDA3LCAxNjE0MDksIDE2MTQxNSwgMTYxNDE3LCAxNjE0MjEsIDE2MTQyMywgMTYxNDI3LCAxNjE0MjksIDE2MTQzNiwgCi0gICAgMTYxNDQzLCAxNjE0NDUsIDE2MTQ1MiwgMTYxNDU5LCAxNjE0NjEsIDE2MTQ2NiwgMTYxNDY4LCAxNjE0NzUsIDE2MTQ3NywgCi0gICAgMTYxNDgyLCAxNjE0ODQsIDE2MTQ5MCwgMTYxNDkyLCAxNjE0OTYsIDE2MTQ5OCwgMTYxNTA0LCAxNjE1MDYsIDE2MTUxMCwgCi0gICAgMTYxNTEyLCAxNjE1MTgsIDE2MTUyMCwgMTYxNTIyLCAxNjE1MjQsIDE2MTUyOSwgMTYxNTM0LCAxNjE1MzYsIDE2MTUzOCwgCi0gICAgMTYxNTQ4LCAxNjE1NTIsIDE2MTU1OSwgMTYxNTY2LCAxNjE1NzEsIDE2MTU3NiwgMTYxNTg4LCAxNjE1OTAsIDE2MTU5MiwgCi0gICAgMTYxNTk0LCAxNjE1OTYsIDE2MTU5OCwgMTYxNjAwLCAxNjE2MDIsIDE2MTYwNCwgMTYxNjA2LCAxNjE2MDgsIDE2MTYxMCwgCi0gICAgMTYxNjEyLCAxNjE2MTQsIDE2MTYxNiwgMTYxNjE4LCAxNjE2MjAsIDE2MTYyMiwgMTYxNjI0LCAxNjE2MjYsIDE2MTYyOCwgCi0gICAgMTYxNjMwLCAxNjE2MzYsIDE2MTY0MywgMTYxNjQ4LCAxNjE2NTYsIDE2MTY2NCwgMTYxNjY5LCAxNjE2ODAsIDE2MTY4MiwgCi0gICAgMTYxNjg0LCAxNjE2ODYsIDE2MTY4OCwgMTYxNjkwLCAxNjE2OTIsIDE2MTY5NCwgMTYxNjk2LCAxNjE2OTgsIDE2MTcwMCwgCi0gICAgMTYxNzAyLCAxNjE3MDQsIDE2MTcwNiwgMTYxNzA4LCAxNjE3MTAsIDE2MTcxMiwgMTYxNzE3LCAxNjE3MTksIDE2MTcyMSwgCi0gICAgMTYxNzI3LCAxNjE3MzksIDE2MTc1MCwgMTYxNzUyLCAxNjE3NTQsIDE2MTc1NiwgMTYxNzU4LCAxNjE3NjAsIDE2MTc2MiwgCi0gICAgMTYxNzY0LCAxNjE3NjYsIDE2MTc2OCwgMTYxNzcwLCAxNjE3NzIsIDE2MTc3NCwgMTYxNzc2LCAxNjE3NzgsIDE2MTc4MCwgCi0gICAgMTYxNzgyLCAxNjE3ODQsIDE2MTc4NiwgMTYxNzg4LCAxNjE3OTAsIDE2MTc5MiwgMTYxNzk0LCAxNjE3OTYsIDE2MTc5OCwgCi0gICAgMTYxODAwLCAxNjE4MDIsIDE2MTgwNCwgMTYxODA2LCAxNjE4MDgsIDE2MTgxMCwgMTYxODEyLCAxNjE4MTQsIDE2MTgxNiwgCi0gICAgMTYxODE4LCAxNjE4MjAsIDE2MTgyMiwgMTYxODI0LCAxNjE4MjYsIDE2MTgyOCwgMTYxODMwLCAxNjE4MzIsIDE2MTgzNCwgCi0gICAgMTYxODM2LCAxNjE4MzgsIDE2MTg0MCwgMTYxODQyLCAxNjE4NDQsIDE2MTg0NiwgMTYxODQ4LCAxNjE4NTAsIDE2MTg1MiwgCi0gICAgMTYxODU0LCAxNjE4NTYsIDE2MTg1OCwgMTYxODYwLCAxNjE4NjIsIDE2MTg2NCwgMTYxODY2LCAxNjE4NjgsIDE2MTg3MCwgCi0gICAgMTYxODcyLCAxNjE4NzQsIDE2MTg3NiwgMTYxODc4LCAxNjE4ODAsIDE2MTg4MiwgMTYxODg0LCAxNjE4ODYsIDE2MTg4OCwgCi0gICAgMTYxODkwLCAxNjE4OTIsIDE2MTg5NCwgMTYxODk2LCAxNjE4OTgsIDE2MTkwMCwgMTYxOTAyLCAxNjE5MDQsIDE2MTkwNiwgCi0gICAgMTYxOTA4LCAxNjE5MTAsIDE2MTkxMiwgMTYxOTE0LCAxNjE5MTYsIDE2MTkxOCwgMTYxOTIwLCAxNjE5MjIsIDE2MTkyNCwgCi0gICAgMTYxOTI2LCAxNjE5MjgsIDE2MTkzMCwgMTYxOTMyLCAxNjE5MzQsIDE2MTkzNiwgMTYxOTM4LCAxNjE5NDAsIDE2MTk0MiwgCi0gICAgMTYxOTQ0LCAxNjE5NDYsIDE2MTk0OCwgMTYxOTUwLCAxNjE5NTIsIDE2MTk1NCwgMTYxOTU2LCAxNjE5NTgsIDE2MTk2MCwgCi0gICAgMTYxOTYyLCAxNjE5NjQsIDE2MTk2NiwgMTYxOTY4LCAxNjE5NzAsIDE2MTk3MiwgMTYxOTc0LCAxNjE5NzYsIDE2MTk3OCwgCi0gICAgMTYxOTgwLCAxNjE5ODIsIDE2MTk4NCwgMTYxOTg2LCAxNjE5ODgsIDE2MTk5MCwgMTYxOTkyLCAxNjE5OTQsIDE2MTk5NiwgCi0gICAgMTYxOTk4LCAxNjIwMDAsIDE2MjAwMiwgMTYyMDA0LCAxNjIwMDYsIDE2MjAwOCwgMTYyMDEwLCAxNjIwMTIsIDE2MjAxNCwgCi0gICAgMTYyMDE2LCAxNjIwMTgsIDE2MjAyMCwgMTYyMDIyLCAxNjIwMjQsIDE2MjAyNiwgMTYyMDI4LCAxNjIwMzAsIDE2MjAzMiwgCi0gICAgMTYyMDM0LCAxNjIwMzYsIDE2MjAzOCwgMTYyMDQwLCAxNjIwNDIsIDE2MjA0NCwgMTYyMDQ2LCAxNjIwNDgsIDE2MjA1MCwgCi0gICAgMTYyMDUyLCAxNjIwNTQsIDE2MjA1NiwgMTYyMDU4LCAxNjIwNjAsIDE2MjA2MiwgMTYyMDY0LCAxNjIwNjYsIDE2MjA2OCwgCi0gICAgMTYyMDcwLCAxNjIwNzIsIDE2MjA3NCwgMTYyMDc2LCAxNjIwNzgsIDE2MjA4MCwgMTYyMDgyLCAxNjIwODQsIDE2MjA4NiwgCi0gICAgMTYyMDg4LCAxNjIwOTAsIDE2MjA5MiwgMTYyMDk0LCAxNjIwOTYsIDE2MjA5OCwgMTYyMTAwLCAxNjIxMDIsIDE2MjEwNCwgCi0gICAgMTYyMTA2LCAxNjIxMDgsIDE2MjExMCwgMTYyMTEyLCAxNjIxMTQsIDE2MjExNiwgMTYyMTE4LCAxNjIxMjAsIDE2MjEyMiwgCi0gICAgMTYyMTI0LCAxNjIxMjYsIDE2MjEyOCwgMTYyMTMwLCAxNjIxMzIsIDE2MjEzNCwgMTYyMTM2LCAxNjIxMzgsIDE2MjE0MCwgCi0gICAgMTYyMTQyLCAxNjIxNDQsIDE2MjE0NiwgMTYyMTQ4LCAxNjIxNTAsIDE2MjE1MiwgMTYyMTU0LCAxNjIxNTYsIDE2MjE1OCwgCi0gICAgMTYyMTYwLCAxNjIxNjIsIDE2MjE2NCwgMTYyMTY2LCAxNjIxNjgsIDE2MjE3MCwgMTYyMTcyLCAxNjIxNzQsIDE2MjE3NiwgCi0gICAgMTYyMTc4LCAxNjIxODAsIDE2MjE4MiwgMTYyMTg0LCAxNjIxODYsIDE2MjE4OCwgMTYyMTkwLCAxNjIxOTIsIDE2MjE5NCwgCi0gICAgMTYyMTk2LCAxNjIxOTgsIDE2MjIwMCwgMTYyMjAyLCAxNjIyMDQsIDE2MjIwNiwgMTYyMjA4LCAxNjIyMTAsIDE2MjIxMiwgCi0gICAgMTYyMjE0LCAxNjIyMTYsIDE2MjIxOCwgMTYyMjIwLCAxNjIyMjIsIDE2MjIyNCwgMTYyMjI2LCAxNjIyMjgsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDE2MjIzMCwgMTYyMjQwLCAxNjIyNTAsIDE2MjI1OSwgMTYyMjY4LCAxNjIyODEsIDE2MjI5NCwgMTYyMzA2LCAKLSAgICAxNjIzMTgsIDE2MjMyOCwgMTYyMzM4LCAxNjIzNDgsIDE2MjM1OCwgMTYyMzY5LCAxNjIzODAsIDE2MjM5MCwgMTYyMzk5LCAKLSAgICAxNjI0MDgsIDE2MjQxNywgMTYyNDMwLCAxNjI0NDMsIDE2MjQ1NSwgMTYyNDY3LCAxNjI0NzcsIDE2MjQ4NywgMTYyNDk3LCAKLSAgICAxNjI1MDcsIDE2MjUxNiwgMTYyNTI1LCAxNjI1MzUsIDE2MjU0NSwgMTYyNTU0LCAxNjI1NjMsIDE2MjU3MywgMTYyNTgzLCAKLSAgICAxNjI1OTIsIDE2MjYwMSwgMTYyNjExLCAxNjI2MjEsIDE2MjYzMiwgMTYyNjQzLCAxNjI2NTMsIDE2MjY2NiwgMTYyNjc3LCAKLSAgICAxNjI2OTEsIDE2MjY5OSwgMTYyNzEwLCAxNjI3MTgsIDE2MjcyNiwgMTYyNzM0LCAxNjI3NDIsIDE2Mjc1MCwgMTYyNzU4LCAKLSAgICAxNjI3NjcsIDE2Mjc3NiwgMTYyNzg2LCAxNjI3OTYsIDE2MjgwNSwgMTYyODE0LCAxNjI4MjQsIDE2MjgzNCwgMTYyODQyLCAKLSAgICAxNjI4NTAsIDE2Mjg1NywgMTYyODY3LCAxNjI4NzYsIDE2Mjg4NCwgMTYyODkxLCAxNjI5MDEsIDE2MjkxMCwgMTYyOTIxLCAKLSAgICAxNjI5MzIsIDE2Mjk0NCwgMTYyOTU1LCAxNjI5NjUsIDE2Mjk3NiwgMTYyOTg2LCAxNjI5OTcsIDE2MzAwNSwgMTYzMDA5LCAKLSAgICAxNjMwMTMsIDE2MzAxNywgMTYzMDIxLCAxNjMwMjUsIDE2MzAyOSwgMTYzMDMzLCAxNjMwMzcsIDE2MzA0MSwgMTYzMDQ1LCAKLSAgICAxNjMwNDksIDE2MzA1MywgMTYzMDU2LCAxNjMwNTksIDE2MzA2MywgMTYzMDY3LCAxNjMwNzEsIDE2MzA3NSwgMTYzMDc5LCAKLSAgICAxNjMwODMsIDE2MzA4NywgMTYzMDkxLCAxNjMwOTQsIDE2MzA5OCwgMTYzMTAyLCAxNjMxMDYsIDE2MzExMCwgMTYzMTE0LCAKLSAgICAxNjMxMTgsIDE2MzEyMiwgMTYzMTI2LCAxNjMxMzAsIDE2MzEzNCwgMTYzMTM4LCAxNjMxNDIsIDE2MzE0NiwgMTYzMTUwLCAKLSAgICAxNjMxNTQsIDE2MzE1OCwgMTYzMTYyLCAxNjMxNjYsIDE2MzE3MCwgMTYzMTc0LCAxNjMxNzgsIDE2MzE4MiwgMTYzMTg2LCAKLSAgICAxNjMxOTAsIDE2MzE5NCwgMTYzMTk4LCAxNjMyMDIsIDE2MzIwNiwgMTYzMjEwLCAxNjMyMTQsIDE2MzIxOCwgMTYzMjIyLCAKLSAgICAxNjMyMjYsIDE2MzIzMCwgMTYzMjM0LCAxNjMyMzgsIDE2MzI0MiwgMTYzMjQ2LCAxNjMyNTAsIDE2MzI1NCwgMTYzMjU4LCAKLSAgICAxNjMyNjIsIDE2MzI2NiwgMTYzMjcwLCAxNjMyNzQsIDE2MzI3OCwgMTYzMjgyLCAxNjMyODYsIDE2MzI5MCwgMTYzMjk0LCAKLSAgICAxNjMyOTgsIDE2MzMwMiwgMTYzMzA2LCAxNjMzMTAsIDE2MzMxNCwgMTYzMzE4LCAxNjMzMjIsIDE2MzMyNiwgMTYzMzMwLCAKLSAgICAxNjMzMzQsIDE2MzMzOCwgMTYzMzQyLCAxNjMzNDYsIDE2MzM1MCwgMTYzMzU0LCAxNjMzNTgsIDE2MzM2MiwgMTYzMzY2LCAKLSAgICAxNjMzNzAsIDE2MzM3NCwgMTYzMzc4LCAxNjMzODIsIDE2MzM4NiwgMTYzMzkwLCAxNjMzOTQsIDE2MzM5OCwgMTYzNDAxLCAKLSAgICAxNjM0MDUsIDE2MzQwOSwgMTYzNDEzLCAxNjM0MTcsIDE2MzQyMSwgMTYzNDI1LCAxNjM0MjksIDE2MzQzMywgMTYzNDM3LCAKLSAgICAxNjM0NDEsIDE2MzQ0NSwgMTYzNDQ5LCAxNjM0NTMsIDE2MzQ1NywgMTYzNDYxLCAxNjM0NjUsIDE2MzQ2OSwgMTYzNDczLCAKLSAgICAxNjM0NzcsIDE2MzQ4MSwgMTYzNDg1LCAxNjM0ODksIDE2MzQ5MywgMTYzNDk3LCAxNjM1MDEsIDE2MzUwNSwgMTYzNTA5LCAKLSAgICAxNjM1MTMsIDE2MzUxNywgMTYzNTIxLCAxNjM1MjUsIDE2MzUyOSwgMTYzNTMzLCAxNjM1MzcsIDE2MzU0MSwgMTYzNTQ1LCAKLSAgICAxNjM1NDksIDE2MzU1MywgMTYzNTU3LCAxNjM1NjEsIDE2MzU2NSwgMTYzNTY5LCAxNjM1NzMsIDE2MzU3NywgMTYzNTgxLCAKLSAgICAxNjM1ODUsIDE2MzU4OSwgMTYzNTkzLCAxNjM1OTcsIDE2MzYwMSwgMTYzNjA1LCAxNjM2MDksIDE2MzYxMywgMTYzNjE3LCAKLSAgICAxNjM2MjEsIDE2MzYyNSwgMTYzNjI5LCAxNjM2MzMsIDE2MzYzNywgMTYzNjQxLCAxNjM2NDUsIDE2MzY0OSwgMTYzNjUzLCAKLSAgICAxNjM2NTcsIDE2MzY2MSwgMTYzNjY1LCAxNjM2NjksIDE2MzY3MywgMTYzNjc3LCAxNjM2ODEsIDE2MzY4NSwgMTYzNjg5LCAKLSAgICAxNjM2OTMsIDE2MzY5NywgMTYzNzAxLCAxNjM3MDUsIDE2MzcwOSwgMTYzNzEzLCAxNjM3MTcsIDE2MzcyMSwgMTYzNzI1LCAKLSAgICAxNjM3MjksIDE2MzczMywgMTYzNzM3LCAxNjM3NDEsIDE2Mzc0NSwgMTYzNzQ5LCAxNjM3NTMsIDE2Mzc1NywgMTYzNzYxLCAKLSAgICAxNjM3NjUsIDE2Mzc2OSwgMTYzNzczLCAxNjM3NzcsIDE2Mzc4MSwgMTYzNzg1LCAxNjM3ODksIDE2Mzc5MywgMTYzNzk3LCAKLSAgICAxNjM4MDEsIDE2MzgwNSwgMTYzODA5LCAxNjM4MTMsIDE2MzgxNywgMTYzODIxLCAxNjM4MjUsIDE2MzgyOSwgMTYzODMzLCAKLSAgICAxNjM4MzcsIDE2Mzg0MSwgMTYzODQ1LCAxNjM4NDksIDE2Mzg1MywgMTYzODU3LCAxNjM4NjEsIDE2Mzg2NSwgMTYzODY5LCAKLSAgICAxNjM4NzMsIDE2Mzg3NywgMTYzODgxLCAxNjM4ODUsIDE2Mzg4OSwgMTYzODkzLCAxNjM4OTcsIDE2MzkwMSwgMTYzOTA1LCAKLSAgICAxNjM5MDksIDE2MzkxMywgMTYzOTE3LCAxNjM5MjEsIDE2MzkyNSwgMTYzOTI5LCAxNjM5MzMsIDE2MzkzNywgMTYzOTQxLCAKLSAgICAxNjM5NDUsIDE2Mzk0OSwgMTYzOTUzLCAxNjM5NTcsIDE2Mzk2MSwgMTYzOTY1LCAxNjM5NjksIDE2Mzk3MywgMTYzOTc3LCAKLSAgICAxNjM5ODEsIDE2Mzk4NSwgMTYzOTg5LCAxNjM5OTMsIDE2Mzk5NywgMTY0MDAxLCAxNjQwMDUsIDE2NDAwOSwgMTY0MDEzLCAKLSAgICAxNjQwMTcsIDE2NDAyMSwgMTY0MDI1LCAxNjQwMjksIDE2NDAzMywgMTY0MDM3LCAxNjQwNDEsIDE2NDA0NSwgMTY0MDQ5LCAKLSAgICAxNjQwNTMsIDE2NDA1NywgMTY0MDYxLCAxNjQwNjUsIDE2NDA2OSwgMTY0MDczLCAxNjQwNzcsIDE2NDA4MSwgMTY0MDg1LCAKLSAgICAxNjQwODksIDE2NDA5MywgMTY0MDk3LCAxNjQxMDEsIDE2NDEwNSwgMTY0MTA5LCAxNjQxMTMsIDE2NDExNywgMTY0MTIxLCAKLSAgICAxNjQxMjUsIDE2NDEyOSwgMTY0MTMzLCAxNjQxMzcsIDE2NDE0MSwgMTY0MTQ1LCAxNjQxNDksIDE2NDE1MywgMTY0MTU3LCAKLSAgICAxNjQxNjEsIDE2NDE2NSwgMTY0MTcwLCAxNjQxNzUsIDE2NDE4MCwgMTY0MTg0LCAxNjQxOTAsIDE2NDE5NywgMTY0MjA0LCAKLSAgICAxNjQyMTEsIDE2NDIxOCwgMTY0MjI1LCAxNjQyMzIsIDE2NDIzOSwgMTY0MjQ2LCAxNjQyNTMsIDE2NDI2MCwgMTY0MjY3LCAKLSAgICAxNjQyNzQsIDE2NDI4MSwgMTY0Mjg4LCAxNjQyOTUsIDE2NDMwMiwgMTY0MzA4LCAxNjQzMTUsIDE2NDMyMiwgMTY0MzI5LCAKLSAgICAxNjQzMzYsIDE2NDM0MywgMTY0MzUwLCAxNjQzNTcsIDE2NDM2NCwgMTY0MzcxLCAxNjQzNzgsIDE2NDM4NSwgMTY0MzkyLCAKLSAgICAxNjQzOTksIDE2NDQwNiwgMTY0NDEyLCAxNjQ0MTksIDE2NDQyNiwgMTY0NDM1LCAxNjQ0NDQsIDE2NDQ1MywgMTY0NDYyLCAKLSAgICAxNjQ0NjcsIDE2NDQ3MiwgMTY0NDc4LCAxNjQ0ODQsIDE2NDQ5MCwgMTY0NDk2LCAxNjQ1MDIsIDE2NDUwOCwgMTY0NTE0LCAKLSAgICAxNjQ1MjAsIDE2NDUyNiwgMTY0NTMyLCAxNjQ1MzgsIDE2NDU0NCwgMTY0NTQ5LCAxNjQ1NTUsIDE2NDU2NSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTY2MTExLCAxNjYxMTQsIDE2NjExNywgMTY2MTIwLCAxNjYxMjMsIDE2NjEyNiwgMTY2MTI5LCAxNjYxMzIsIAorICAgIDE2NjEzNSwgMTY2MTM4LCAxNjYxNDEsIDE2NjE0NCwgMTY2MTQ3LCAxNjYxNTAsIDE2NjE1MywgMTY2MTU2LCAxNjYxNTksIAorICAgIDE2NjE2MiwgMTY2MTY1LCAxNjYxNjgsIDE2NjE3MSwgMTY2MTc0LCAxNjYxNzcsIDE2NjE4MCwgMTY2MTgzLCAxNjYxODYsIAorICAgIDE2NjE4OSwgMTY2MTkyLCAxNjYxOTUsIDE2NjE5OCwgMTY2MjAxLCAxNjYyMDQsIDE2NjIwNywgMTY2MjEwLCAxNjYyMTMsIAorICAgIDE2NjIxNiwgMTY2MjE5LCAxNjYyMjIsIDE2NjIyNSwgMTY2MjI4LCAxNjYyMzEsIDE2NjIzNCwgMTY2MjM3LCAxNjYyNDAsIAorICAgIDE2NjI0MywgMTY2MjQ2LCAxNjYyNDksIDE2NjI1MiwgMTY2MjU1LCAxNjYyNTgsIDE2NjI2MSwgMTY2MjY0LCAxNjYyNjcsIAorICAgIDE2NjI3MCwgMTY2MjczLCAxNjYyNzYsIDE2NjI3OSwgMTY2MjgyLCAxNjYyODUsIDE2NjI4OCwgMTY2MjkxLCAxNjYyOTQsIAorICAgIDE2NjI5NywgMTY2MzAwLCAxNjYzMDMsIDE2NjMwNiwgMTY2MzA5LCAxNjYzMTIsIDE2NjMxNSwgMTY2MzE4LCAxNjYzMjEsIAorICAgIDE2NjMyNCwgMTY2MzI3LCAxNjYzMzAsIDE2NjMzMywgMTY2MzM2LCAxNjYzMzksIDE2NjM0MiwgMTY2MzQ1LCAxNjYzNDgsIAorICAgIDE2NjM1MSwgMTY2MzU0LCAxNjYzNTcsIDE2NjM2MCwgMTY2MzYzLCAxNjYzNjYsIDE2NjM2OSwgMTY2MzcyLCAxNjYzNzUsIAorICAgIDE2NjM3OCwgMTY2MzgxLCAxNjYzODQsIDE2NjM4NywgMTY2MzkwLCAxNjYzOTMsIDE2NjM5NiwgMTY2Mzk5LCAxNjY0MDIsIAorICAgIDE2NjQwNSwgMTY2NDA4LCAxNjY0MTEsIDE2NjQxNCwgMTY2NDE3LCAxNjY0MjAsIDE2NjQyMywgMTY2NDI2LCAxNjY0MjksIAorICAgIDE2NjQzMiwgMTY2NDM1LCAxNjY0MzgsIDE2NjQ0MSwgMTY2NDQ0LCAxNjY0NDcsIDE2NjQ1MCwgMTY2NDUzLCAxNjY0NTYsIAorICAgIDE2NjQ1OSwgMTY2NDYyLCAxNjY0NjUsIDE2NjQ2OCwgMTY2NDcxLCAxNjY0NzQsIDE2NjQ3NywgMTY2NDgwLCAxNjY0ODMsIAorICAgIDE2NjQ4NiwgMTY2NDg5LCAxNjY0OTIsIDE2NjQ5NSwgMTY2NDk4LCAxNjY1MDEsIDE2NjUwNCwgMTY2NTA3LCAxNjY1MTAsIAorICAgIDE2NjUxMywgMTY2NTE2LCAxNjY1MTksIDE2NjUyMiwgMTY2NTI1LCAxNjY1MjgsIDE2NjUzMSwgMTY2NTM0LCAxNjY1MzcsIAorICAgIDE2NjU0MCwgMTY2NTQzLCAxNjY1NDYsIDE2NjU0OSwgMTY2NTUyLCAxNjY1NTUsIDE2NjU1OCwgMTY2NTYxLCAxNjY1NjQsIAorICAgIDE2NjU2NywgMTY2NTcwLCAxNjY1NzMsIDE2NjU3NiwgMTY2NTc5LCAxNjY1ODIsIDE2NjU4NSwgMTY2NTg4LCAxNjY1OTEsIAorICAgIDE2NjU5NCwgMTY2NTk3LCAxNjY2MDAsIDE2NjYwMywgMTY2NjA2LCAxNjY2MDksIDE2NjYxMiwgMTY2NjE1LCAxNjY2MTgsIAorICAgIDE2NjYyMSwgMTY2NjI0LCAxNjY2MjcsIDE2NjYzMCwgMTY2NjMzLCAxNjY2MzYsIDE2NjYzOSwgMTY2NjQyLCAxNjY2NDUsIAorICAgIDE2NjY0OCwgMTY2NjUxLCAxNjY2NTQsIDE2NjY1NywgMTY2NjYwLCAxNjY2NjMsIDE2NjY2NiwgMTY2NjY5LCAxNjY2NzIsIAorICAgIDE2NjY3NSwgMTY2Njc4LCAxNjY2ODEsIDE2NjY4NCwgMTY2Njg3LCAxNjY2OTAsIDE2NjY5MywgMTY2Njk2LCAxNjY2OTksIAorICAgIDE2NjcwMiwgMTY2NzA1LCAxNjY3MDgsIDE2NjcxMSwgMTY2NzE0LCAxNjY3MTcsIDE2NjcyMCwgMTY2NzIzLCAxNjY3MjYsIAorICAgIDE2NjcyOSwgMTY2NzMyLCAxNjY3MzUsIDE2NjczOCwgMTY2NzQxLCAxNjY3NDQsIDE2Njc0NywgMTY2NzUwLCAxNjY3NTMsIAorICAgIDE2Njc1NiwgMTY2NzU5LCAxNjY3NjIsIDE2Njc2NSwgMTY2NzY4LCAxNjY3NzEsIDE2Njc3NCwgMTY2Nzc3LCAxNjY3ODAsIAorICAgIDE2Njc4MywgMTY2Nzg2LCAxNjY3ODksIDE2Njc5MiwgMTY2Nzk1LCAxNjY3OTgsIDE2NjgwMSwgMTY2ODA0LCAxNjY4MDcsIAorICAgIDE2NjgxMCwgMTY2ODEzLCAxNjY4MTYsIDE2NjgxOSwgMTY2ODIyLCAxNjY4MjUsIDE2NjgyOCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY2ODMxLCAxNjY4MzMsIDE2NjgzNSwgMTY2ODQwLCAxNjY4NDIsIAorICAgIDE2Njg0NywgMTY2ODQ5LCAxNjY4NTQsIDE2Njg1NiwgMTY2ODYxLCAxNjY4NjMsIDE2Njg2NSwgMTY2ODY3LCAxNjY4NjksIAorICAgIDE2Njg3MSwgMTY2ODczLCAxNjY4NzUsIDE2Njg3NywgMTY2ODc5LCAxNjY4ODIsIDE2Njg4NiwgMTY2ODg4LCAxNjY4OTAsIAorICAgIDE2Njg5NCwgMTY2ODk4LCAxNjY5MDMsIDE2NjkwNSwgMTY2OTA3LCAxNjY5MDksIDE2NjkxMywgMTY2OTE2LCAxNjY5MTgsIAorICAgIDE2NjkyMiwgMTY2OTI0LCAxNjY5MjgsIDE2NjkzMCwgMTY2OTM0LCAxNjY5MzcsIDE2NjkzOSwgMTY2OTQzLCAxNjY5NDcsIAorICAgIDE2Njk0OSwgMTY2OTU1LCAxNjY5NTcsIDE2Njk2MiwgMTY2OTY0LCAxNjY5NjksIDE2Njk3MSwgMTY2OTc2LCAxNjY5NzgsIAorICAgIDE2Njk4MywgMTY2OTg1LCAxNjY5ODgsIDE2Njk5MCwgMTY2OTk0LCAxNjY5OTYsIDE2NzAwMywgMTY3MDA1LCAxNjcwMDcsIAorICAgIDE2NzAwOSwgMTY3MDE0LCAxNjcwMTYsIDE2NzAxOCwgMTY3MDIwLCAxNjcwMjIsIDE2NzAyNCwgMTY3MDI5LCAxNjcwMzMsIAorICAgIDE2NzAzNSwgMTY3MDQwLCAxNjcwNDQsIDE2NzA0NiwgMTY3MDUxLCAxNjcwNTUsIDE2NzA1NywgMTY3MDYyLCAxNjcwNjYsIAorICAgIDE2NzA2OCwgMTY3MDcwLCAxNjcwNzIsIDE2NzA3NCwgMTY3MDc4LCAxNjcwODAsIDE2NzA4NSwgMTY3MDg3LCAxNjcwOTMsIAorICAgIDE2NzA5NSwgMTY3MTAxLCAxNjcxMDMsIDE2NzEwNSwgMTY3MTA3LCAxNjcxMTEsIDE2NzExMywgMTY3MTIwLCAxNjcxMjIsIAorICAgIDE2NzEyOSwgMTY3MTMxLCAxNjcxMzYsIDE2NzE0MiwgMTY3MTQ0LCAxNjcxNTAsIDE2NzE1NywgMTY3MTU5LCAxNjcxNjUsIAorICAgIDE2NzE3MCwgMTY3MTcyLCAxNjcxNzgsIDE2NzE4NCwgMTY3MTg2LCAxNjcxOTIsIDE2NzE5OCwgMTY3MjAwLCAxNjcyMDYsIAorICAgIDE2NzIxMCwgMTY3MjEyLCAxNjcyMTcsIDE2NzIxOSwgMTY3MjIxLCAxNjcyMjYsIDE2NzIyOCwgMTY3MjMwLCAxNjcyMzYsIAorICAgIDE2NzIzOCwgMTY3MjQzLCAxNjcyNDcsIDE2NzI0OSwgMTY3MjU0LCAxNjcyNTgsIDE2NzI2MCwgMTY3MjY2LCAxNjcyNjgsIAorICAgIDE2NzI3MiwgMTY3Mjc0LCAxNjcyNzgsIDE2NzI4MCwgMTY3Mjg3LCAxNjcyOTQsIDE2NzI5NiwgMTY3MzAzLCAxNjczMTAsIAorICAgIDE2NzMxMiwgMTY3MzE3LCAxNjczMTksIDE2NzMyNiwgMTY3MzI4LCAxNjczMzMsIDE2NzMzNSwgMTY3MzQxLCAxNjczNDMsIAorICAgIDE2NzM0NywgMTY3MzQ5LCAxNjczNTUsIDE2NzM1NywgMTY3MzYxLCAxNjczNjMsIDE2NzM2OSwgMTY3MzcxLCAxNjczNzMsIAorICAgIDE2NzM3NSwgMTY3MzgwLCAxNjczODUsIDE2NzM4NywgMTY3Mzg5LCAxNjczOTksIDE2NzQwNCwgMTY3NDExLCAxNjc0MTgsIAorICAgIDE2NzQyMywgMTY3NDI4LCAxNjc0NDAsIDE2NzQ0MiwgMTY3NDQ0LCAxNjc0NDYsIDE2NzQ0OCwgMTY3NDUwLCAxNjc0NTIsIAorICAgIDE2NzQ1NCwgMTY3NDU2LCAxNjc0NTgsIDE2NzQ2MCwgMTY3NDYyLCAxNjc0NjQsIDE2NzQ2NiwgMTY3NDY4LCAxNjc0NzAsIAorICAgIDE2NzQ3MiwgMTY3NDc0LCAxNjc0NzYsIDE2NzQ3OCwgMTY3NDgwLCAxNjc0ODIsIDE2NzQ4OCwgMTY3NDk1LCAxNjc1MDAsIAorICAgIDE2NzUwOCwgMTY3NTE2LCAxNjc1MjEsIDE2NzUzMiwgMTY3NTM0LCAxNjc1MzYsIDE2NzUzOCwgMTY3NTQwLCAxNjc1NDIsIAorICAgIDE2NzU0NCwgMTY3NTQ2LCAxNjc1NDgsIDE2NzU1MCwgMTY3NTUyLCAxNjc1NTQsIDE2NzU1NiwgMTY3NTU4LCAxNjc1NjAsIAorICAgIDE2NzU2MiwgMTY3NTY0LCAxNjc1NjksIDE2NzU3MSwgMTY3NTczLCAxNjc1NzksIDE2NzU5MSwgMTY3NjAyLCAxNjc2MDQsIAorICAgIDE2NzYwNiwgMTY3NjA4LCAxNjc2MTAsIDE2NzYxMiwgMTY3NjE0LCAxNjc2MTYsIDE2NzYxOCwgMTY3NjIwLCAxNjc2MjIsIAorICAgIDE2NzYyNCwgMTY3NjI2LCAxNjc2MjgsIDE2NzYzMCwgMTY3NjMyLCAxNjc2MzQsIDE2NzYzNiwgMTY3NjM4LCAxNjc2NDAsIAorICAgIDE2NzY0MiwgMTY3NjQ0LCAxNjc2NDYsIDE2NzY0OCwgMTY3NjUwLCAxNjc2NTIsIDE2NzY1NCwgMTY3NjU2LCAxNjc2NTgsIAorICAgIDE2NzY2MCwgMTY3NjYyLCAxNjc2NjQsIDE2NzY2NiwgMTY3NjY4LCAxNjc2NzAsIDE2NzY3MiwgMTY3Njc0LCAxNjc2NzYsIAorICAgIDE2NzY3OCwgMTY3NjgwLCAxNjc2ODIsIDE2NzY4NCwgMTY3Njg2LCAxNjc2ODgsIDE2NzY5MCwgMTY3NjkyLCAxNjc2OTQsIAorICAgIDE2NzY5NiwgMTY3Njk4LCAxNjc3MDAsIDE2NzcwMiwgMTY3NzA0LCAxNjc3MDYsIDE2NzcwOCwgMTY3NzEwLCAxNjc3MTIsIAorICAgIDE2NzcxNCwgMTY3NzE2LCAxNjc3MTgsIDE2NzcyMCwgMTY3NzIyLCAxNjc3MjQsIDE2NzcyNiwgMTY3NzI4LCAxNjc3MzAsIAorICAgIDE2NzczMiwgMTY3NzM0LCAxNjc3MzYsIDE2NzczOCwgMTY3NzQwLCAxNjc3NDIsIDE2Nzc0NCwgMTY3NzQ2LCAxNjc3NDgsIAorICAgIDE2Nzc1MCwgMTY3NzUyLCAxNjc3NTQsIDE2Nzc1NiwgMTY3NzU4LCAxNjc3NjAsIDE2Nzc2MiwgMTY3NzY0LCAxNjc3NjYsIAorICAgIDE2Nzc2OCwgMTY3NzcwLCAxNjc3NzIsIDE2Nzc3NCwgMTY3Nzc2LCAxNjc3NzgsIDE2Nzc4MCwgMTY3NzgyLCAxNjc3ODQsIAorICAgIDE2Nzc4NiwgMTY3Nzg4LCAxNjc3OTAsIDE2Nzc5MiwgMTY3Nzk0LCAxNjc3OTYsIDE2Nzc5OCwgMTY3ODAwLCAxNjc4MDIsIAorICAgIDE2NzgwNCwgMTY3ODA2LCAxNjc4MDgsIDE2NzgxMCwgMTY3ODEyLCAxNjc4MTQsIDE2NzgxNiwgMTY3ODE4LCAxNjc4MjAsIAorICAgIDE2NzgyMiwgMTY3ODI0LCAxNjc4MjYsIDE2NzgyOCwgMTY3ODMwLCAxNjc4MzIsIDE2NzgzNCwgMTY3ODM2LCAxNjc4MzgsIAorICAgIDE2Nzg0MCwgMTY3ODQyLCAxNjc4NDQsIDE2Nzg0NiwgMTY3ODQ4LCAxNjc4NTAsIDE2Nzg1MiwgMTY3ODU0LCAxNjc4NTYsIAorICAgIDE2Nzg1OCwgMTY3ODYwLCAxNjc4NjIsIDE2Nzg2NCwgMTY3ODY2LCAxNjc4NjgsIDE2Nzg3MCwgMTY3ODcyLCAxNjc4NzQsIAorICAgIDE2Nzg3NiwgMTY3ODc4LCAxNjc4ODAsIDE2Nzg4MiwgMTY3ODg0LCAxNjc4ODYsIDE2Nzg4OCwgMTY3ODkwLCAxNjc4OTIsIAorICAgIDE2Nzg5NCwgMTY3ODk2LCAxNjc4OTgsIDE2NzkwMCwgMTY3OTAyLCAxNjc5MDQsIDE2NzkwNiwgMTY3OTA4LCAxNjc5MTAsIAorICAgIDE2NzkxMiwgMTY3OTE0LCAxNjc5MTYsIDE2NzkxOCwgMTY3OTIwLCAxNjc5MjIsIDE2NzkyNCwgMTY3OTI2LCAxNjc5MjgsIAorICAgIDE2NzkzMCwgMTY3OTMyLCAxNjc5MzQsIDE2NzkzNiwgMTY3OTM4LCAxNjc5NDAsIDE2Nzk0MiwgMTY3OTQ0LCAxNjc5NDYsIAorICAgIDE2Nzk0OCwgMTY3OTUwLCAxNjc5NTIsIDE2Nzk1NCwgMTY3OTU2LCAxNjc5NTgsIDE2Nzk2MCwgMTY3OTYyLCAxNjc5NjQsIAorICAgIDE2Nzk2NiwgMTY3OTY4LCAxNjc5NzAsIDE2Nzk3MiwgMTY3OTc0LCAxNjc5NzYsIDE2Nzk3OCwgMTY3OTgwLCAxNjc5ODIsIAorICAgIDE2Nzk4NCwgMTY3OTg2LCAxNjc5ODgsIDE2Nzk5MCwgMTY3OTkyLCAxNjc5OTQsIDE2Nzk5NiwgMTY3OTk4LCAxNjgwMDAsIAorICAgIDE2ODAwMiwgMTY4MDA0LCAxNjgwMDYsIDE2ODAwOCwgMTY4MDEwLCAxNjgwMTIsIDE2ODAxNCwgMTY4MDE2LCAxNjgwMTgsIAorICAgIDE2ODAyMCwgMTY4MDIyLCAxNjgwMjQsIDE2ODAyNiwgMTY4MDI4LCAxNjgwMzAsIDE2ODAzMiwgMTY4MDM0LCAxNjgwMzYsIAorICAgIDE2ODAzOCwgMTY4MDQwLCAxNjgwNDIsIDE2ODA0NCwgMTY4MDQ2LCAxNjgwNDgsIDE2ODA1MCwgMTY4MDUyLCAxNjgwNTQsIAorICAgIDE2ODA1NiwgMTY4MDU4LCAxNjgwNjAsIDE2ODA2MiwgMTY4MDY0LCAxNjgwNjYsIDE2ODA2OCwgMTY4MDcwLCAxNjgwNzIsIAorICAgIDE2ODA3NCwgMTY4MDc2LCAxNjgwNzgsIDE2ODA4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY4MDgyLCAxNjgwOTIsIDE2ODEwMiwgCisgICAgMTY4MTExLCAxNjgxMjAsIDE2ODEzMywgMTY4MTQ2LCAxNjgxNTgsIDE2ODE3MCwgMTY4MTgwLCAxNjgxOTAsIDE2ODIwMCwgCisgICAgMTY4MjEwLCAxNjgyMjEsIDE2ODIzMiwgMTY4MjQyLCAxNjgyNTEsIDE2ODI2MCwgMTY4MjY5LCAxNjgyODIsIDE2ODI5NSwgCisgICAgMTY4MzA3LCAxNjgzMTksIDE2ODMyOSwgMTY4MzM5LCAxNjgzNDksIDE2ODM1OSwgMTY4MzY4LCAxNjgzNzcsIDE2ODM4NywgCisgICAgMTY4Mzk3LCAxNjg0MDYsIDE2ODQxNSwgMTY4NDI1LCAxNjg0MzUsIDE2ODQ0NCwgMTY4NDUzLCAxNjg0NjMsIDE2ODQ3MywgCisgICAgMTY4NDg0LCAxNjg0OTUsIDE2ODUwNSwgMTY4NTE4LCAxNjg1MjksIDE2ODU0MywgMTY4NTUxLCAxNjg1NjIsIDE2ODU3MCwgCisgICAgMTY4NTc4LCAxNjg1ODYsIDE2ODU5NCwgMTY4NjAyLCAxNjg2MTAsIDE2ODYxOSwgMTY4NjI4LCAxNjg2MzgsIDE2ODY0OCwgCisgICAgMTY4NjU3LCAxNjg2NjYsIDE2ODY3NiwgMTY4Njg2LCAxNjg2OTQsIDE2ODcwMiwgMTY4NzA5LCAxNjg3MTksIDE2ODcyOCwgCisgICAgMTY4NzM2LCAxNjg3NDMsIDE2ODc1MywgMTY4NzYyLCAxNjg3NzMsIDE2ODc4NCwgMTY4Nzk2LCAxNjg4MDcsIDE2ODgxNywgCisgICAgMTY4ODI4LCAxNjg4MzgsIDE2ODg0OSwgMTY4ODU3LCAxNjg4NjEsIDE2ODg2NSwgMTY4ODY5LCAxNjg4NzMsIDE2ODg3NywgCisgICAgMTY4ODgxLCAxNjg4ODUsIDE2ODg4OSwgMTY4ODkzLCAxNjg4OTcsIDE2ODkwMSwgMTY4OTA1LCAxNjg5MDgsIDE2ODkxMSwgCisgICAgMTY4OTE1LCAxNjg5MTksIDE2ODkyMywgMTY4OTI3LCAxNjg5MzEsIDE2ODkzNSwgMTY4OTM5LCAxNjg5NDMsIDE2ODk0NywgCisgICAgMTY4OTUxLCAxNjg5NTUsIDE2ODk1OSwgMTY4OTYzLCAxNjg5NjcsIDE2ODk3MSwgMTY4OTc1LCAxNjg5NzksIDE2ODk4MywgCisgICAgMTY4OTg3LCAxNjg5OTEsIDE2ODk5NSwgMTY4OTk5LCAxNjkwMDMsIDE2OTAwNywgMTY5MDExLCAxNjkwMTUsIDE2OTAxOSwgCisgICAgMTY5MDIzLCAxNjkwMjcsIDE2OTAzMSwgMTY5MDM1LCAxNjkwMzksIDE2OTA0MywgMTY5MDQ3LCAxNjkwNTEsIDE2OTA1NSwgCisgICAgMTY5MDU5LCAxNjkwNjMsIDE2OTA2NywgMTY5MDcxLCAxNjkwNzUsIDE2OTA3OSwgMTY5MDgzLCAxNjkwODcsIDE2OTA5MSwgCisgICAgMTY5MDk1LCAxNjkwOTksIDE2OTEwMywgMTY5MTA3LCAxNjkxMTEsIDE2OTExNSwgMTY5MTE5LCAxNjkxMjMsIDE2OTEyNywgCisgICAgMTY5MTMxLCAxNjkxMzUsIDE2OTEzOSwgMTY5MTQzLCAxNjkxNDcsIDE2OTE1MSwgMTY5MTU1LCAxNjkxNTksIDE2OTE2MywgCisgICAgMTY5MTY3LCAxNjkxNzEsIDE2OTE3NSwgMTY5MTc5LCAxNjkxODMsIDE2OTE4NywgMTY5MTkxLCAxNjkxOTUsIDE2OTE5OSwgCisgICAgMTY5MjAzLCAxNjkyMDcsIDE2OTIxMSwgMTY5MjE1LCAxNjkyMTksIDE2OTIyMywgMTY5MjI3LCAxNjkyMzEsIDE2OTIzNSwgCisgICAgMTY5MjM5LCAxNjkyNDMsIDE2OTI0NywgMTY5MjUxLCAxNjkyNTQsIDE2OTI1OCwgMTY5MjYyLCAxNjkyNjYsIDE2OTI3MCwgCisgICAgMTY5Mjc0LCAxNjkyNzgsIDE2OTI4MiwgMTY5Mjg2LCAxNjkyOTAsIDE2OTI5NCwgMTY5Mjk4LCAxNjkzMDIsIDE2OTMwNiwgCisgICAgMTY5MzEwLCAxNjkzMTQsIDE2OTMxOCwgMTY5MzIyLCAxNjkzMjYsIDE2OTMzMCwgMTY5MzM0LCAxNjkzMzgsIDE2OTM0MiwgCisgICAgMTY5MzQ2LCAxNjkzNTAsIDE2OTM1NCwgMTY5MzU4LCAxNjkzNjIsIDE2OTM2NiwgMTY5MzcwLCAxNjkzNzQsIDE2OTM3OCwgCisgICAgMTY5MzgyLCAxNjkzODYsIDE2OTM5MCwgMTY5Mzk0LCAxNjkzOTgsIDE2OTQwMiwgMTY5NDA2LCAxNjk0MTAsIDE2OTQxNCwgCisgICAgMTY5NDE4LCAxNjk0MjIsIDE2OTQyNiwgMTY5NDMwLCAxNjk0MzQsIDE2OTQzOCwgMTY5NDQyLCAxNjk0NDYsIDE2OTQ1MCwgCisgICAgMTY5NDU0LCAxNjk0NTgsIDE2OTQ2MiwgMTY5NDY2LCAxNjk0NzAsIDE2OTQ3NCwgMTY5NDc4LCAxNjk0ODIsIDE2OTQ4NiwgCisgICAgMTY5NDkwLCAxNjk0OTQsIDE2OTQ5OCwgMTY5NTAyLCAxNjk1MDYsIDE2OTUxMCwgMTY5NTE0LCAxNjk1MTgsIDE2OTUyMiwgCisgICAgMTY5NTI2LCAxNjk1MzAsIDE2OTUzNCwgMTY5NTM4LCAxNjk1NDIsIDE2OTU0NiwgMTY5NTUwLCAxNjk1NTQsIDE2OTU1OCwgCisgICAgMTY5NTYyLCAxNjk1NjYsIDE2OTU3MCwgMTY5NTc0LCAxNjk1NzgsIDE2OTU4MiwgMTY5NTg2LCAxNjk1OTAsIDE2OTU5NCwgCisgICAgMTY5NTk4LCAxNjk2MDIsIDE2OTYwNiwgMTY5NjEwLCAxNjk2MTQsIDE2OTYxOCwgMTY5NjIyLCAxNjk2MjYsIDE2OTYzMCwgCisgICAgMTY5NjM0LCAxNjk2MzgsIDE2OTY0MiwgMTY5NjQ2LCAxNjk2NTAsIDE2OTY1NCwgMTY5NjU4LCAxNjk2NjIsIDE2OTY2NiwgCisgICAgMTY5NjcwLCAxNjk2NzQsIDE2OTY3OCwgMTY5NjgyLCAxNjk2ODYsIDE2OTY5MCwgMTY5Njk0LCAxNjk2OTgsIDE2OTcwMiwgCisgICAgMTY5NzA2LCAxNjk3MTAsIDE2OTcxNCwgMTY5NzE4LCAxNjk3MjIsIDE2OTcyNiwgMTY5NzMwLCAxNjk3MzQsIDE2OTczOCwgCisgICAgMTY5NzQyLCAxNjk3NDYsIDE2OTc1MCwgMTY5NzU0LCAxNjk3NTgsIDE2OTc2MiwgMTY5NzY2LCAxNjk3NzAsIDE2OTc3NCwgCisgICAgMTY5Nzc4LCAxNjk3ODIsIDE2OTc4NiwgMTY5NzkwLCAxNjk3OTQsIDE2OTc5OCwgMTY5ODAyLCAxNjk4MDYsIDE2OTgxMCwgCisgICAgMTY5ODE0LCAxNjk4MTgsIDE2OTgyMiwgMTY5ODI2LCAxNjk4MzAsIDE2OTgzNCwgMTY5ODM4LCAxNjk4NDIsIDE2OTg0NiwgCisgICAgMTY5ODUwLCAxNjk4NTQsIDE2OTg1OCwgMTY5ODYyLCAxNjk4NjYsIDE2OTg3MCwgMTY5ODc0LCAxNjk4NzgsIDE2OTg4MiwgCisgICAgMTY5ODg2LCAxNjk4OTAsIDE2OTg5NCwgMTY5ODk4LCAxNjk5MDIsIDE2OTkwNiwgMTY5OTEwLCAxNjk5MTQsIDE2OTkxOCwgCisgICAgMTY5OTIyLCAxNjk5MjYsIDE2OTkzMCwgMTY5OTM0LCAxNjk5MzgsIDE2OTk0MiwgMTY5OTQ2LCAxNjk5NTAsIDE2OTk1NCwgCisgICAgMTY5OTU4LCAxNjk5NjIsIDE2OTk2NiwgMTY5OTcwLCAxNjk5NzQsIDE2OTk3OCwgMTY5OTgyLCAxNjk5ODYsIDE2OTk5MCwgCisgICAgMTY5OTk0LCAxNjk5OTgsIDE3MDAwMiwgMTcwMDA2LCAxNzAwMTAsIDE3MDAxNCwgMTcwMDE4LCAxNzAwMjMsIDE3MDAyOCwgCisgICAgMTcwMDMzLCAxNzAwMzcsIDE3MDA0MywgMTcwMDUwLCAxNzAwNTcsIDE3MDA2NCwgMTcwMDcxLCAxNzAwNzgsIDE3MDA4NSwgCisgICAgMTcwMDkyLCAxNzAwOTksIDE3MDEwNiwgMTcwMTEzLCAxNzAxMjAsIDE3MDEyNywgMTcwMTM0LCAxNzAxNDAsIDE3MDE0NywgCisgICAgMTcwMTU0LCAxNzAxNjAsIDE3MDE2NywgMTcwMTc0LCAxNzAxODEsIDE3MDE4OCwgMTcwMTk1LCAxNzAyMDIsIDE3MDIwOSwgCisgICAgMTcwMjE2LCAxNzAyMjMsIDE3MDIzMCwgMTcwMjM3LCAxNzAyNDQsIDE3MDI1MSwgMTcwMjU4LCAxNzAyNjQsIDE3MDI3MCwgCisgICAgMTcwMjc3LCAxNzAyODYsIDE3MDI5NSwgMTcwMzA0LCAxNzAzMTMsIDE3MDMxOCwgMTcwMzIzLCAxNzAzMjksIDE3MDMzNSwgCisgICAgMTcwMzQxLCAxNzAzNDcsIDE3MDM1MywgMTcwMzU5LCAxNzAzNjUsIDE3MDM3MSwgMTcwMzc3LCAxNzAzODMsIDE3MDM4OSwgCisgICAgMTcwMzk1LCAxNzA0MDAsIDE3MDQwNiwgMTcwNDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKIH07CiAKIC8qIG5hbWUtPmNvZGUgZGljdGlvbmFyeSAqLwogc3RhdGljIHVuc2lnbmVkIGludCBjb2RlX2hhc2hbXSA9IHsKLSAgICA3NDIyNCwgNDg1MSwgMTI1MTM4LCA3ODE1NiwgNzg0OTksIDcyMzkxLCA3OTI5LCA2NjkxMCwgMTk0NjgyLCAxMjc3NjYsIAorICAgIDc0MjI0LCA0ODUxLCAxMjUxMzgsIDc4MTU2LCA3ODQ5OSwgNzIzOTEsIDc5MjksIDg5OTksIDE5NDY4MiwgMTI3NzY2LCAKICAgICA3ODUwMCwgNjY0ODAsIDY0MDM4LCA0MjgzMywgNzQ1MjksIDEyMDY0LCA3MjM4NSwgNTk2LCA5ODM4MjEsIDY5ODUwLCAKLSAgICAxMzE5MiwgODY1MSwgMTIwMjE3LCAxMjY1NDIsIDEyMDIxOCwgMTI5OTUsIDY0ODY1LCAxMzczLCAxMTk4NTYsIDExMzc1MiwgCisgICAgMTMxOTIsIDg2NTEsIDEyMDIxNywgNjY3ODksIDEyMDIxOCwgMTI5OTUsIDY0ODY1LCAxMzczLCA3MDc0MCwgMTEzNzUyLCAKICAgICA1ODE2LCAxMTkwNjcsIDY0ODEwLCA0MjMxLCA2ODI1LCA0Mjg5NywgNDIzMywgNDIzNCwgNDIzMiwgMTIwODg5LCA3NDQxNSwgCi0gICAgMTIwMjEwLCA2Mzg0LCA3MDM1MSwgNzgxMDgsIDg4NTEsIDY3Njk4LCAxMjg1NTMsIDgyOTU0LCA0MTYwMSwgODg3NCwgCi0gICAgNzIzOTIsIDc3NDgsIDEyNTA4MywgMCwgMTI3MDI2LCAxMjc5MzksIDQxNjAzLCA5Nzg0LCAwLCA5MTg4LCA0MTYwMCwgMCwgCi0gICAgMTIwNjE4LCAxMjgzNDMsIDE0NTcsIDM1MzUsIDEyODYzNSwgNjM4MSwgMCwgMCwgNjUyNDAsIDExOTUxLCAwLCAzNDA0LCAKLSAgICA5ODMwNzksIDcwNDg3LCA3MjQxMSwgMTc1OSwgMTIwODUzLCA0MTA3NiwgNjgzODMsIDY5OTcyLCAxMTkyMDUsIDY2NTc3LCAKLSAgICA5NDAxNCwgMTI3NzY0LCA2NTg1OSwgMCwgNzQwNCwgMCwgMCwgNjk5NzAsIDEyODM4NywgNjU5MDgsIDk4MzQsIDMwNTUsIAotICAgIDk4NTIsIDEyODM2MCwgNjUyODgsIDEyMTI5MSwgMTEzOTgsIDAsIDkyNDE3LCA5MzAxNiwgMTI4MzgwLCAxMjczMzcsIDYwMywgCi0gICAgNzQzOTgsIDQzNTQ4LCAwLCA3MTg2NSwgOTE3ODI0LCAzMzUwLCAxMjA4MTcsIDY0MzE4LCAxOTQ2OTgsIDc4MTIxLCAzMzkwLCAKLSAgICA3NDQ4MywgNDMyNjUsIDkyMzk5LCA5MTc4MzAsIDc4NTczLCAxMTg4MDMsIDE5MTksIDM0MDAsIDEyMDY1MSwgODMyOTYsIAotICAgIDExNjQ3LCA4MzI5OCwgNjY0NDYsIDY0MTQxLCA4NTYyLCAyMTIxLCA2NDEzOCwgNDA0MywgODcxMiwgNjQxMzQsIDY0MTMzLCAKLSAgICAxMTI5NywgOTgzNjg4LCA5ODMxNTIsIDExOTY2LCA2NDEyOCwgNjYyODYsIDkzMDQyLCAxMjg4MzAsIDY0MTMyLCAxMDg2NywgCi0gICAgNjQxMzAsIDY0MTI5LCAxMjEyNTUsIDQzMzc0LCA5Nzc5LCAyNzY0LCA2NjAwMiwgMTAxNjcsIDk0NzEsIDgzNDU4LCAKLSAgICA2NjAyMSwgNzQ1MDksIDAsIDU0NTcsIDU0NDAsIDg4NTcsIDkzOTgxLCA2NTI4MiwgMjg0MywgNTM1NSwgNjg4NTgsIAotICAgIDk4MzM0MiwgNjk5NzEsIDUxOTQsIDExNjU3LCA0Mzk4NCwgMTI4MjkyLCAxMTM3MjQsIDEyODg3MiwgMCwgMCwgNzIzOTMsIAotICAgIDEwNzE3LCA2NDU3MCwgNTYzMCwgNTM5NiwgNjQxNDMsIDEwNjgyLCA4MzMwMCwgMTA2MDIsIDgwMCwgNDI0OTksIDY2MTg2LCAKLSAgICAwLCAwLCA2NDkzMCwgMTE2MzEsIDY0MTQ2LCA2NDE0NSwgNjQxNDQsIDc2MiwgMTMxNzIsIDc1MDA4LCA3NzkyOCwgNDM5MjksIAotICAgIDEwOTA2LCAxMzUzLCA2OTYwLCA4MzAzMiwgMTI4Nzc5LCA1ODI4LCA4NzI0LCA5MTc4MDYsIDg5MzMsIDE2MDEsIDQyMjQ0LCAKLSAgICA4NTgsIDcwODAsIDY0MTA5LCA2NDEwOCwgODA5MCwgNzA0NTUsIDcyMzg4LCA3NDYwNiwgNTg3LCA5MTc5MDcsIDgyOTcxLCAKLSAgICAwLCAwLCAwLCA3ODIxNCwgMjc1MCwgNzQyMTgsIDU1NiwgNjQxNTgsIDY0MTU3LCA3ODcwNywgMTIyMTMsIDgzMjkwLCAKLSAgICAyNzYwLCA4MzI4NCwgODMyODUsIDc4NzA4LCA4MzI4NywgNjQxNTYsIDY0MTU1LCA0MjQ5NiwgODMyODMsIDY0MTUxLCAKLSAgICA2NDE1MCwgMTI2NzksIDEwMDUzLCAxMDQyMSwgMTEwOTMsIDY0MTUzLCA2NDE1MiwgMTI1MDE2LCAwLCA0ODM5LCA2ODUyNywgCi0gICAgMCwgMTg3NCwgMTE5MDE2LCAxMjAwOTEsIDY1NzcsIDY0MTI1LCA2NDEyNCwgNjQxMjMsIDAsIDEyNzUzMSwgOTI1MzQsIAotICAgIDcwMDcsIDc1OTAsIDY1NDQzLCA5MDM2LCA3ODg0NywgNjQxMjIsIDY2Mzg5LCA2NjYwOSwgMTIxMzQ3LCA2NDExNywgCi0gICAgNjQxMTYsIDYyODcsIDY0MTE0LCAyNzI1LCA2NDEyMCwgNjQxMTksIDQzOTgxLCA0MjEyOCwgMTI3ODQyLCAxMTc3LCAKLSAgICA2NTYwMSwgMTIzMjIsIDY0MTA2LCA2OTY0MCwgOTI4OTUsIDY0MTAyLCA3ODU5LCAxOTQ1LCA2NDA5OSwgMCwgMTA0NTMsIAotICAgIDY0MTA0LCA3MTg4LCA3OTk3LCAwLCA3Mzg5LCA5ODMxNjEsIDg3MDUsIDY0MDk3LCA2NDA5NiwgOTU3MSwgNTI4LCAKLSAgICAxMjg1NDUsIDQ0MDE3LCAxMTQyOSwgNzEzNDcsIDAsIDk4MzA3NywgMTIwODY0LCA3Mzg0MSwgODMzMzksIDgzMzQwLCAKLSAgICA5MDU2LCA2NDMxMywgNjE4OCwgNzQzNjAsIDYxNTUsIDY0MDY4LCAxODIzLCA2NDA2NiwgNjQwNjUsIDY0MDcyLCA2NDA3MSwgCi0gICAgNjMsIDcyMzMsIDkyMjEyLCA3MjQxNCwgNDE5MDQsIDY2MzksIDY0MDY0LCA5ODM3NzUsIDEyODM0NCwgMTIxMzg4LCAxMTc2LCAKLSAgICAxMTg5NTksIDEyNzkzMCwgODE2MiwgMTI3MDE5LCAxMjgxOTcsIDkyNzQ3LCAxMjA1MTksIDQyOTMxLCA2NjI0MiwgMTE0MTUsIAotICAgIDQzMzMsIDk4NTUsIDY0MTEyLCA2NDY0MiwgMCwgNTM4OCwgMCwgMTIxMjcxLCA5ODM2NDksIDc3MTQsIDY2MjIyLCA2OTkwMiwgCisgICAgMTAwNDEzLCA2Mzg0LCA3MDM1MSwgNzgxMDgsIDg4NTEsIDY3Njk4LCAxMjg1NTMsIDgyOTU0LCA0MTYwMSwgODg3NCwgCisgICAgNzIzOTIsIDc3NDgsIDEyNTA4MywgMCwgMTI3MDI2LCAxMjc5MzksIDQxNjAzLCA5Nzg0LCAwLCA5MTg4LCA0MTYwMCwgCisgICAgOTgzOTgxLCAxMjA2MTgsIDEyODM0MywgMTQ1NywgMzUzNSwgMTI4NjM1LCA2MzgxLCAxMDA4NzIsIDY2Nzk3LCA2NTI0MCwgCisgICAgMTE5NTEsIDAsIDM0MDQsIDk4MzA3OSwgNzA0ODcsIDcyNDExLCAxNzU5LCAxMjA4NTMsIDQxMDc2LCA2ODM4MywgNjk5NzIsIAorICAgIDExOTIwNSwgNjY1NzcsIDk0MDE0LCAxMjc3NjQsIDY1ODU5LCAxMjUyNTMsIDc0MDQsIDEyNTI0OCwgMTI4MzA4LCA2OTk3MCwgCisgICAgMTIwNjQ4LCA2NTkwOCwgOTgzNCwgMzA1NSwgMjIzNCwgMTI4MzYwLCA2NTI4OCwgMTIxMjkxLCAxMTM5OCwgMCwgOTI0MTcsIAorICAgIDkzMDE2LCAxMjgzODAsIDEyNzMzNywgNjAzLCA3NDM5OCwgNDM1NDgsIDAsIDcxODY1LCAxMjkzNjYsIDMzNTAsIDEyMDgxNywgCisgICAgNjQzMTgsIDEyMDY5OSwgNzgxMjEsIDMzOTAsIDc0NDgzLCA0MzI2NSwgOTIzOTksIDkxNzgzMCwgNzg1NzMsIDExODgwMywgCisgICAgMTkxOSwgMzQwMCwgMTIwNjUxLCA4MzI5NiwgMTE2NDcsIDgzMjk4LCA2NjQ0NiwgNjQxNDEsIDg1NjIsIDIxMjEsIDY0MTM4LCAKKyAgICA0MDQzLCA4NzEyLCA2NDEzNCwgNjQxMzMsIDExMjk3LCA5ODM2ODgsIDk4MzE1MiwgMTE5NjYsIDY0MTI4LCA2NjI4NiwgCisgICAgOTMwNDIsIDEyODgzMCwgNjQxMzIsIDEwODY3LCA2NDEzMCwgNjQxMjksIDEyMTI1NSwgNDMzNzQsIDk3NzksIDI3NjQsIAorICAgIDY2MDAyLCAxMDE2NywgOTQ3MSwgODM0NTgsIDY2MDIxLCA3NDUwOSwgOTgzMzA4LCA1NDU3LCA1NDQwLCA4ODU3LCA5Mzk4MSwgCisgICAgNjUyODIsIDI4NDMsIDUzNTUsIDY4ODU4LCAxMDA1MzAsIDY5OTcxLCA1MTk0LCAxMTY1NywgNDM5ODQsIDEyODI5MiwgCisgICAgMTAwNTI5LCAxMjg4NzIsIDAsIDk4MzkwNywgNzIzOTMsIDEwNzE3LCA2NDU3MCwgNTYzMCwgNTM5NiwgNjQxNDMsIDEwNjgyLCAKKyAgICA4MzMwMCwgMTA2MDIsIDgwMCwgNDI0OTksIDY2MTg2LCAwLCAxMjgxNDYsIDY0OTMwLCAxMTYzMSwgNjQxNDYsIDY0MTQ1LCAKKyAgICA2NDE0NCwgNzYyLCAxMzE3MiwgNzUwMDgsIDc3OTI4LCA0MzkyOSwgMTA5MDYsIDEzNTMsIDY5NjAsIDgzMDMyLCAxMDA0MjMsIAorICAgIDU4MjgsIDg3MjQsIDEyMjkxNiwgODkzMywgMTYwMSwgNDIyNDQsIDg1OCwgNzA4MCwgNjQxMDksIDY0MTA4LCA4MDkwLCAKKyAgICA3MDQ1NSwgNzIzODgsIDc0NjA2LCA1ODcsIDE5NDY0OSwgODI5NzEsIDk4MzgwOCwgMTI5MzQ1LCAxOTQ3OTUsIDc4MjE0LCAKKyAgICAyNzUwLCA3NDIxOCwgNTU2LCA2NDE1OCwgNjQxNTcsIDc4NzA3LCAxMjIxMywgODMyOTAsIDI3NjAsIDgzMjg0LCA4MzI4NSwgCisgICAgNzc5MzQsIDgzMjg3LCA2NDE1NiwgNjQxNTUsIDQyNDk2LCA4MzI4MywgNjQxNTEsIDY0MTUwLCAxMjY3OSwgMTAwNTMsIAorICAgIDEwNDIxLCAxMTA5MywgNjQxNTMsIDY0MTUyLCAxMjUwMTYsIDAsIDQ4MzksIDY4NTI3LCAxMjUwOTEsIDE4NzQsIDExOTAxNiwgCisgICAgMTIwMDkxLCA2NTc3LCA2NDEyNSwgNjQxMjQsIDY0MTIzLCAxMjAxODgsIDEyNzUzMSwgOTI1MzQsIDcwMDcsIDc1OTAsIAorICAgIDY1NDQzLCA5MDM2LCA3ODg0NywgNjQxMjIsIDY2Mzg5LCA2NjYwOSwgMTIxMzQ3LCA2NDExNywgNjQxMTYsIDYyODcsIAorICAgIDY0MTE0LCAyNzI1LCA2NDEyMCwgNjQxMTksIDQzOTgxLCA0MjEyOCwgMTI3ODQyLCAxMTc3LCA2NTYwMSwgMTIzMjIsIAorICAgIDY0MTA2LCA2OTY0MCwgOTI4OTUsIDY0MTAyLCA3ODU5LCAxOTQ1LCA2NDA5OSwgOTgzNDgyLCAxMDQ1MywgNjQxMDQsIAorICAgIDcxODgsIDc5OTcsIDEyODYwMCwgNzM4OSwgOTgzMTYxLCA4NzA1LCA2NDA5NywgNjQwOTYsIDk1NzEsIDUyOCwgMTI4NTQ1LCAKKyAgICA0NDAxNywgMTE0MjksIDcxMzQ3LCAwLCA5ODMwNzcsIDEyMDg2NCwgNzM4NDEsIDgzMzM5LCA4MzM0MCwgOTA1NiwgNjQzMTMsIAorICAgIDYxODgsIDc0MzYwLCA2MTU1LCA2NDA2OCwgMTgyMywgNjQwNjYsIDY0MDY1LCA2NDA3MiwgNjQwNzEsIDYzLCA3MjMzLCAKKyAgICA3NDk1MywgNzI0MTQsIDQxOTA0LCA2NjM5LCA2NDA2NCwgOTgzNzc1LCAxMjgzNDQsIDEyMTM4OCwgMTE3NiwgMTE4OTU5LCAKKyAgICAxMjc5MzAsIDgxNjIsIDEyNzAxOSwgMTI4MTk3LCA5Mjc0NywgMTIwNTE5LCA0MjkzMSwgNjYyNDIsIDExNDE1LCA0MzMzLCAKKyAgICA5ODU1LCA2NDExMiwgNjQ2NDIsIDAsIDUzODgsIDk4MzQwNSwgMTIxMjcxLCA5MTc5MDcsIDc3MTQsIDY2MjIyLCA2OTkwMiwgCiAgICAgNzc2OCwgNzI0MDMsIDQxOTksIDY0NzA4LCA2NTA2NCwgNzAxMTcsIDAsIDg3MDgsIDk1NjAsIDY0MDc3LCA2NDA3NiwgCi0gICAgODk5NiwgNDk5MiwgNDQ3MSwgNDI2MjIsIDY0MDc5LCA2NDA3OCwgOTIxNzksIDcxODc4LCAxMjY1NzAsIDEyMTI1NiwgCi0gICAgNjQ2MTUsIDQxOTE1LCAwLCAxMjA3NSwgNDIwNDEsIDE5NDgyNSwgNTE3NCwgOTgzMjE3LCAwLCAxMjc1NTcsIDMxMjMsIAotICAgIDEyNTEwMCwgMTI2ODUsIDExOTIxNiwgODQwOCwgNjQ3MDQsIDgzMzI4LCAwLCA5MjIzLCAwLCA0MTYxNiwgNjc5OTksIAotICAgIDczNzk3LCA4MzMyNywgMTExNiwgNzUwNjcsIDQzMDQ5LCA3MTM2LCA0MzA1MCwgODU0OCwgMTIwNDg1LCAwLCA3NTAzMSwgCi0gICAgOTE3NjIyLCAxMjgxNjgsIDEzMTE1LCA0MzY3NSwgNjQwOTEsIDkzMjIsIDgzMzM4LCA4MzMzMSwgNjQwOTUsIDY0MDk0LCAKLSAgICA4MTExLCA2NjI0NywgNDIzMzIsIDY0MDg5LCA2NDA4OCwgNjE5OSwgNjcyNDksIDY2Mzk4LCAxMTQzNCwgNjQwODMsIAotICAgIDY0MDgyLCAxMTMyOSwgNzczNywgNjQwODcsIDY0MDg2LCA2NDA4NSwgNjQwODQsIDgzMDMzLCA5OTI3LCA0MTMzNSwgNDExOCwgCi0gICAgMTc5NywgODMzMTIsIDQxMzM0LCAwLCA0NiwgNDM0NDgsIDgzMzA5LCAyOTgsIDgzMzAzLCA4MzMwNCwgODMzMDUsIDQyNjI3LCAKLSAgICAxMjUwMTEsIDMyLCA2MTg3LCA4MzAzNywgMTE0OTUsIDExNDU5LCAzNjY1LCA4MzAzNiwgNDI4NzEsIDAsIDE5OTIzLCAKLSAgICA3NDMzNSwgMCwgMTI3MTkyLCA2NjIzOSwgNDIyNjQsIDY0NDAzLCA0NDEyLCA3MjQwLCA4MzMxNCwgNzE0NDQsIDk4MzQ2OCwgCi0gICAgNjU3NTgsIDEyNzUwLCA0MTgxLCA4NTQ0LCA4MzQ2MSwgNjgwNTMsIDgzNDA3LCAxMjAxOTgsIDY5ODA5LCA2MTgxLCAKLSAgICA2NTAxNCwgOTgzNDIyLCAxMjg0ODQsIDk4MzE5NiwgMzYzOSwgMTE5NTg4LCAxMTg4NTEsIDgzMDM5LCAxMTg5MDQsIAotICAgIDEwMDczLCAxMjAyMDYsIDgzMDM4LCAxMjcxODYsIDY4NDA5LCA0Mjg0NCwgNzQ5OCwgMTA5OCwgOTI1NjUsIDEyMDIwNSwgMCwgCi0gICAgMTI4OTE1LCAxMDIwNywgODc4OSwgOTMwNzAsIDEyMDMzOCwgOTI5NzMsIDEyODMyNSwgOTIzNCwgOTE3ODk1LCA2MTgyLCAKLSAgICA5ODM0NzUsIDY1MDU4LCAxMjAzMTksIDk4MzQ4MCwgNjgwNjQsIDkxNzgzMSwgNTQ3MSwgOTQ2MSwgNTU3MywgMTE4OTM2LCAKLSAgICA1NDczLCA0NCwgMCwgNjYyNDQsIDk0MDcyLCAwLCA2NjIzOCwgMTI4NDQsIDY2ODk0LCAxNjIyLCA3NzY3LCAxOTAwLCAKLSAgICA0MTMzOSwgMTE0NTgsIDExOTA2MSwgMCwgNjU4MSwgNTU3NiwgMTI4NjE4LCA0Mzg1NSwgNDEzMzcsIDAsIDQxNjMxLCAKLSAgICA4OTQ3LCA2ODM5MCwgNjk2ODMsIDQxNjk0LCA5ODM4NDgsIDcyMzk2LCA3OTA4LCAwLCAxMDQwOCwgNjU3OSwgOTE3ODcyLCAKLSAgICA2NDYxOCwgMCwgMTIwMTQ3LCAyMTM4LCA2NTgzLCA3NzYxLCA3MDAwNSwgMTIwNTA0LCAxOTQ4MjgsIDEyODk2MSwgNTA1OCwgCi0gICAgNDEwMTAsIDk5OTIsIDEyODI5OSwgNTA1NywgOTE3OTQxLCAwLCA3NDUzOCwgNTA1NCwgMTE4OTUxLCAxOTQ5NzEsIDc4NjA2LCAKLSAgICAwLCAxNDM3LCA0MTYxNywgNjU4LCAzNDk3LCAxMjg1MDksIDc0ODYsIDUwNjEsIDUwNjAsIDQyMzUsIDEyNzg3OCwgCi0gICAgMTI4MzIyLCAxMjg1MjksIDEyMTEzLCA0MjM2LCA0NzI3LCAxMjg0ODcsIDAsIDc2OTMsIDEwNzQ5LCAxMjAzMzIsIDc0ODgsIAotICAgIDU3NzMsIDk3OCwgMTI4MTM0LCA5ODM2OTksIDQxNjE5LCAxMDIzOSwgNjg2MTEsIDcxODY0LCA2NjIwOSwgMTI3MjMzLCAKLSAgICA3NDEzNSwgOTc0OCwgOTgzOTU2LCAxMjc1MjQsIDAsIDk4MzMxNiwgMTk0Njc2LCAxOTQ2NzUsIDEyODA4MSwgMCwgCi0gICAgOTgzMzEzLCA5ODMzMDIsIDAsIDEyNzg2NSwgMCwgOTI3NzYsIDkzNDEsIDc4ODIxLCAyMzc5LCAxMTMyNSwgOTE3OTAyLCAKLSAgICA2NDY2OCwgNjc4NTQsIDgxMjUsIDEyMDU0NSwgNjc0MywgODMxNjQsIDkxNzk0MCwgMjM2OSwgODM0MDYsIDk4MzMyMywgCi0gICAgMTI3OTY2LCAxMTkyMzUsIDcxODY4LCA3MzkzNiwgNzAwOCwgNDM2NjAsIDEyMDM0NiwgMCwgNDM4NDEsIDIzNjcsIAotICAgIDEyNzgyNywgOTgzODU3LCAyNjQsIDIzNzUsIDgwNjAsIDYxOTQsIDExOTg1OCwgMTg0NCwgMTE5MDg0LCAxMjkwNDksIAotICAgIDYwMTksIDEyODk3NSwgMCwgNjk2MSwgMCwgNzA0MzUsIDY3MTcxLCA4ODAwLCAxMjczMzIsIDQyODYyLCA0NDYzLCA2NTU4MSwgCi0gICAgNjE5MiwgMTE5NjEwLCA0Mjc3MSwgMCwgOTIzMzMsIDcyNSwgNjUwNDIsIDkzMDE0LCAxMjA4MDAsIDc0OTQyLCAxMjg5MiwgCi0gICAgMCwgNjcxNDksIDc0ODk5LCA3MzkzMSwgMCwgMTIwNDk1LCAxMjcyNjEsIDEyMjI0LCA5ODMxMjgsIDEyOTA2MSwgNTA3NCwgCi0gICAgNTA3MywgMTIxMTY0LCA4OTgzLCAxMTg5ODEsIDc0NDkzLCA3MTIzMSwgNTA3MiwgNzQ1NDcsIDYxOTgsIDExNjE0LCAwLCAKLSAgICAxOTYsIDk4MzE1NCwgMCwgOTgzOTM2LCA0OTI5LCAxMjAzNDIsIDEyOTE0NSwgMCwgMTI3OTg3LCAxMjE0NTUsIDQyODQ3LCAKLSAgICA5Mjk1MywgMCwgNjc3NTQsIDQ5MzQsIDk4Mzk4MSwgNDEzMjMsIDk3NTgsIDAsIDkyMjg5LCA3MDE4MSwgNDI1ODQsIDAsIAotICAgIDQzMjksIDQxMzIxLCA0OTc5LCAzMDQ4LCA3NzUyLCA0MTMyMCwgOTgzMDQyLCA2NDY2NywgMTI4MTksIDk4Mzg3MCwgNTA3MSwgCi0gICAgMTI3OTE1LCAzNjQyLCA2NzMzNCwgNTA3MCwgMTAwNDIsIDExMzgxMywgMzk4NywgNTA2OCwgOTgzNDYwLCA4OTA5LCAKLSAgICA3ODY1MCwgNzg2NDksIDY5OTE3LCAxMDYzNiwgNzM5ODEsIDExODA2LCA0MzE2NywgNDUzMSwgMTI0NSwgOTEwNSwgNjY0NjMsIAotICAgIDQ5MjEsIDEyMDIxOSwgNDkyNiwgNjU1NDQsIDczODg0LCAxMjEzNTksIDEyODAyOCwgMCwgNjQ3MDksIDgzMjY5LCAKLSAgICAxMjg4NTQsIDc4ODgwLCA0OTIyLCAzMjUsIDk5MiwgMTE5NTY4LCA0OTI1LCAxMjcyMTgsIDAsIDk1MjYsIDQ5MjAsIAotICAgIDEyODYxNywgOTQ4LCAwLCAxMjAyMDgsIDQ5MzAsIDEyNzg1NywgOTIxNzUsIDEyMDI3NSwgNDkzMywgMTEzNzc5LCAKLSAgICAxMjEwNDksIDExODk4NSwgNDkyOCwgOTgzMTQ5LCA4MzUxNCwgNzQ3NzAsIDEyMDE5NCwgMTI2NTQ4LCA3MjIsIDE5NDkzNCwgCi0gICAgMTk5MDgsIDEyNjM3LCAxMjc0ODUsIDgyOTk5LCA4NzUzLCAxNTA5LCAwLCA1NDY4LCA5NTExLCA0MzQ5MywgMTI3NDc3LCAKLSAgICAxNjcyLCA2MjA1LCAxMDg2NCwgNzQ1ODYsIDEyNzQ4MCwgNzAxMDMsIDkyNjk0LCA3ODU1NSwgMTI3NDY4LCA3Mzg2MywgCi0gICAgMTI2NTc3LCA2ODMzNiwgNDE2MDcsIDEyMDExNSwgMTY3OSwgMTIwMTE2LCAxMjAxODAsIDkyNzYxLCAxMjc0NjIsIDcwMDUsIAotICAgIDQxNjA5LCA5NTgwLCA3MDQzMSwgNDAxLCA2OTk0OSwgNDM3NzksIDY5NjgsIDU3NjEsIDM0MiwgODU1MywgMTI3OTAwLCAKLSAgICA4MTQzLCAxMjcxMTUsIDExOTgzLCA5MjI0OSwgNjI0LCA3NDUwOCwgNDA1NywgNDM3ODgsIDUwNzgsIDc0MjU4LCAxMjQ3OCwgCi0gICAgMCwgNTA3NiwgMTI4NzAyLCA4Mjk5MSwgMCwgODI5NSwgNjg1LCA5MDI1LCAxNTI0LCAxMjYxOCwgMCwgNTUzOSwgMTI5MTgyLCAKLSAgICA5MjUyMywgNzE0MzUsIDcxMzgsIDEyMDU1MiwgNDM1MDQsIDE5NDYxMSwgNjY5MTQsIDY1Nzk0LCAxMjUyMCwgODA1OCwgCi0gICAgOTczMiwgOTI0ODAsIDUwODAsIDY0Nzc1LCA1MDM2LCA1MDM1LCAxMjA1OTAsIDQyNjA0LCA5ODM2NTYsIDAsIDgwNzQsIAotICAgIDI3NSwgMTMyOTEsIDE5MDcsIDc4ODM4LCA0NDMyLCAxMjEzMTMsIDUwMzMsIDEyMDM0MSwgMTIwODE4LCA0ODM2LCAzODg4LCAKLSAgICA3Mzc5MiwgMTA3MjksIDY0NTQ2LCAxMjcyNjIsIDQzNzA0LCAxMjcyNjQsIDkyOTU3LCA2NzU4OCwgNjgwNjEsIDEyNDk4MywgCi0gICAgNzAzNjAsIDg4NTgsIDY0MDksIDc2NjMsIDEyMDI1MiwgMTI4MTAwLCAxMTkwMDcsIDAsIDY2MzIxLCA5NDA1MiwgMTI4MTQsIAotICAgIDEyNzI0OCwgMzQzMiwgMTAyMTgsIDAsIDYwOTQsIDc2NDEsIDQyNDQ1LCAxMjg3OTIsIDkyNDg3LCA0MjQwNiwgMTY3NiwgCi0gICAgNjczNjIsIDc0ODYyLCA2NzM2NSwgNTAzMCwgNjczNjQsIDExODgxMCwgMTk1MDA4LCA3Mzg2OSwgOTYyMiwgMTEzNzYzLCAKLSAgICA2OTk0NCwgNjc4NywgNjczNjEsIDk4MzI3MCwgMCwgNjgzMTksIDEwNTQ0LCAxMjkxOSwgNzE0ODQsIDcyMzk3LCAwLCAwLCAKLSAgICA2OTkwNiwgMTIwNzg5LCA5ODMwNDEsIDk0NywgNjc2OTUsIDY3MzY3LCAxMjg1MjgsIDEwOTY5LCA2NzIyOCwgNzYxMywgCi0gICAgOTI1NjIsIDExOTkzNiwgNDc5NSwgMTE5OTMwLCA3MDE4LCA3Mzc2LCAxMjAxODEsIDEyMDE5MiwgMTIwMjY4LCAwLCAKLSAgICA0MzU2NywgNzQwNTYsIDEyMDI2NiwgMTE4MzMsIDExOTkxOSwgNzIxNiwgNjUyMzIsIDcyMTcsIDI1MSwgNzIxOCwgNzg5NSwgCi0gICAgNDM5NSwgNDM1MzgsIDExOTkyNiwgMTE5ODM0LCAxMTk5MjgsIDcyMTMsIDY4NDc2LCA3MjE0LCA3MjE1LCA1ODc5LCAKLSAgICA3NDE0MSwgODg4MCwgNzY4NSwgNjY0NTksIDEyMDE3MywgNjU1NDAsIDY3MzU5LCA2MjUsIDgxODcsIDQyODYxLCAxMTEzLCAKLSAgICA3MjM2LCA3OTE1LCAzNjMwLCAxMjAxNzYsIDgxNzksIDcwMTYzLCA2Nzg4NiwgOTMxNiwgMTA5ODAsIDI0ODksIDY1NjI0LCAKLSAgICA4MTUwLCAxMzU5LCA2NzY1MiwgNzA0NjQsIDEyNzMzMCwgNzM3NTYsIDUwNDIsIDUwNDEsIDQyNzY5LCAxMjA4NCwgCi0gICAgMTI3MzI0LCAxMjczMjEsIDc0NDEwLCAxMjczMTksIDEyNzMyMCwgMTI3MzE3LCAxMjEyODQsIDEyNzMxNSwgMTIyODMsIAotICAgIDE2MTYsIDM3OTUsIDY3NzMyLCA4Nzk1LCA2NjI0NSwgMCwgMCwgMCwgMTEzOCwgNzM5MDUsIDEyNjc3LCAxMjgyODAsIAotICAgIDY3NzI0LCAzMjM5LCA2Njg5MywgMTI4ODE4LCAwLCA4NDMxLCAwLCA0MjE2NCwgNzEyMjksIDExNzc4LCAxMjYyMCwgNjgyNiwgCi0gICAgNzM3NzMsIDcwMTY5LCA1MDQwLCAxMjc5NjksIDAsIDY3MDk0LCA3ODQyMCwgMCwgNTAzOSwgOTgzMjQxLCA3ODQxOCwgMCwgCi0gICAgNTAzOCwgMCwgOTgzODYyLCAxMzE4NCwgNDM5NjAsIDEyMDkzMSwgNjQ2NDgsIDAsIDkzNTksIDc4NDE2LCA5MTc2MjMsIAotICAgIDEyODc3MCwgNjUxNTcsIDY2NjIsIDAsIDcwMTgyLCAzODYzLCA3MzkwOSwgNDgzNSwgNTUyNjYsIDQzNDMyLCAxMjc4MjIsIAotICAgIDQzMDksIDcxMjcsIDE5NDU2OSwgMCwgMTk0NTY4LCAxMzAxLCAwLCA0MjU4OSwgNTY5LCAxMjg4MDQsIDczODEzLCA3MTEsIAotICAgIDQzODksIDcxMzMsIDEyMDY0MywgNzM4ODAsIDExNjEwLCAxMTM2OCwgMCwgMTk0NTcwLCA0MTMzMSwgMTAwNiwgNzQyNDAsIAotICAgIDY3MjI0LCAxNTUwLCA4MjAxLCA3MDQ1MywgNzYyNywgNTQ5OSwgNTAzMSwgNzc5MDgsIDQyNzM4LCA2NTc4NCwgNDM5NTcsIAotICAgIDY1MjY3LCAzNzU4LCAwLCA2NTc4MSwgNjQ3MzQsIDY3MjIyLCAyNDQwLCA0Mzk1NSwgNzA3ODcsIDg0NDksIDAsIDUwMDgsIAotICAgIDk4MzU3MiwgMjExOCwgMTI2NTA4LCAxMjEyMSwgODI1NSwgNTUxMiwgNzM4NzUsIDIxMjgsIDIxMzAsIDIxMzEsIDIxMjYsIAotICAgIDIxMzMsIDExMTksIDEyMTI1MCwgMjExNCwgMjExNiwgMjQ1NSwgMTEzNzk4LCAyMTIyLCAyMTIzLCAyMTI0LCAyMTI1LCAKLSAgICAxMjc0ODYsIDg3MTQsIDk4MzgyMCwgMjExMywgMTk1MDQ5LCAyMTE1LCAxMjgxNzcsIDEyNzkwNywgNDM3MTMsIDUwNTIsIAotICAgIDY2MjIwLCA1ODIxLCA2MTg2LCA2NTc3OCwgNjU3NzUsIDUwNTEsIDY1NzczLCAxNDI5LCA0MjY0NywgNTA1MCwgMzAyLCAKLSAgICAzODgsIDQxMTE1LCA3MzUsIDY2MzcsIDU5MDcsIDY1MDg4LCAwLCAxMjcyNiwgNzQ1OTQsIDkxMTcsIDk4MzE4MSwgMTIwMDMsIAotICAgIDU1MTMsIDUxMDksIDUwNTMsIDc0MjMwLCA1NTEwLCA3ODQ1MSwgMCwgNzg0NDcsIDI0NzAsIDc4NDM3LCAwLCAxOTI1LCAKLSAgICA3MTI1MSwgOTIyMzcsIDc0ODA3LCA5ODMwNjIsIDUwNDgsIDUwNDcsIDE5NDgzNywgOTgzMzgwLCA3NDIwMSwgOTIzMTMsIAotICAgIDE5NDgwMiwgNzQ0OTcsIDgyOTgyLCA4MDg5LCA2OTI5LCA2MzksIDgyOTgxLCA2ODE3OSwgNjQ0NDIsIDcwMTgwLCA4Mjk4NCwgCi0gICAgNDU5OSwgNDE0MDIsIDY2NzQsIDQzMzk3LCA0MzI5NCwgMTQ3NiwgNjQ4LCAwLCA2NTgxOSwgMzIzMywgMCwgNDE3ODIsIAotICAgIDY5NTEsIDk0MDE3LCAxMjkxOTcsIDM1MzAsIDk3NTAsIDEyODMxNywgMTIwOTkxLCA2NjU2LCA0MjYxOCwgNzAxNzUsIAotICAgIDUwNDYsIDg1MTIsIDY1ODU2LCA3NDI2MSwgODk2NywgMCwgNTA0NSwgNDIwMjYsIDE5MTYsIDc5ODYsIDUwNDQsIDEyMDU1NiwgCi0gICAgOTAwNiwgMTMxMjgsIDUwNDMsIDEyMTMzNSwgNzg1MywgNjc4MDgsIDc0MDA0LCA5NjY5LCAxMjM0MSwgMTI3MDMsIDg0MDIsIAotICAgIDEyODg4MywgMTE5MDcwLCA3MDE3NCwgNDE3NTAsIDM1ODYsIDY0NTA4LCA0MzE0OCwgMCwgMTI3OTcxLCAxMTk2MDYsIAotICAgIDY3OTgzLCAxMzI5NiwgNTE3LCAwLCAxMjg0NjcsIDE5NDk0NiwgNDE1MjgsIDEyMywgNjU0NTQsIDAsIDEyMTMyNiwgCi0gICAgNzQ0NzgsIDEwNTMxLCA3Nzg0LCA0MTUyNiwgMTA4MjksIDczOTkxLCA4MDU3LCAxMTI2LCA3Mzg5NSwgMTk0ODU3LCAKLSAgICAxOTQ1OTEsIDAsIDM5MjUsIDQyNTEsIDgwNjksIDEwNTE3LCA3MTExMiwgNDg5LCA3MTExMCwgNDI1MCwgOTIyNjYsIAotICAgIDEyMDQ1MiwgNDMxNTEsIDk4MzE3OCwgOTI3MzgsIDY2MjAwLCAwLCAwLCAxMjUwMjYsIDc0Mjk4LCAxMjg4NzksIDk4MzQ3NiwgCi0gICAgODcxMSwgNjE4MywgODM0NDgsIDk4Mzk1MiwgNzI0MDIsIDEyMDQ0OCwgNzYyMywgMTE4OTI1LCA2NjM3NiwgOTIzNSwgCi0gICAgMTI3NjAsIDc0MTc2LCA2OTY2MiwgNjY0NDUsIDQzNTQwLCAxMDA2MiwgMzc0MywgMTE1MTQsIDExMDc4LCAwLCAxMjEzNiwgCi0gICAgMCwgMTI2NTk3LCAxMjA0MzQsIDE5NDg1MCwgNzcyNiwgMTk1MDk1LCAxOTkyMiwgMjY3LCAzMzkzLCA0MjE5OCwgMTM3MSwgCi0gICAgMTk0ODQ5LCA2OTIzMywgMjQ1OCwgMCwgNjIwMSwgMCwgNDEwNzQsIDQyNjYsIDEwNjUyLCA0MTYxMiwgNDEwNzcsIDM0MDIsIAotICAgIDkwNTAsIDMzOTgsIDEyODQyNCwgOTgzMzUwLCAwLCAzMzkxLCA0MTA3NSwgMjQ3NiwgMCwgMTI4MDE3LCAwLCAxMDYyNSwgCi0gICAgMTI5MTA2LCAxMjc2NywgMTMwMTcsIDc4NzQzLCA2NDI2MSwgNjQ5MzQsIDcwMTUyLCAxMzAxNCwgMTMwMTMsIDEyMTE5OCwgCi0gICAgNjY3MywgMCwgMCwgMTIxMzI0LCAxMjQzOCwgMCwgOTgzMzQ0LCA4MzEwNiwgNzExMjgsIDEyMDA2MiwgOTA1MywgMTMwMTUsIAotICAgIDc0NTIzLCAwLCA3MDQsIDY2MjE1LCA2MTk1LCA3NDk0OSwgNjY2MCwgNzg3NTgsIDkxNzc2MCwgNzQ4NjEsIDQyMjEyLCAKLSAgICAxMjYyOSwgMTE0MzUsIDAsIDU1MjU2LCA2NTUzOCwgNjczNDMsIDEyMTQzNywgMTI5MDg2LCA0Mzg3NiwgOTI5NDEsIAotICAgIDY1NDQ4LCA3ODEwMCwgMTI5NDgsIDExOTAwMSwgMTI4NTk1LCA0Mzk0OSwgMTIwMDQ4LCA3ODA5OSwgMTI3MDg1LCAwLCAKLSAgICAxMjgzMjAsIDQyODcsIDgyNzYsIDQ5MDIsIDExMzEsIDk4MzYwNiwgNzg0NTgsIDY2NzI4LCAxODE2LCA0Mzk1MiwgNDI1MzMsIAotICAgIDE2OCwgNDI4NDUsIDQ4OTgsIDY0Mjk4LCA0Mzk1MCwgNzgxMDUsIDQ5MDEsIDE4MjEsIDQzOTUxLCA1NzgsIDM2NTMsIAotICAgIDEyODk0NiwgNzkxLCA5MTYyLCA2OTc3LCA3NDE5NiwgNzg4ODksIDcwMTYwLCAwLCA3MzczMSwgODM1NCwgNDM1OTAsIAotICAgIDExOTMwMywgOTgzNDUxLCA3NTU3LCAxMTkxMDgsIDY3Mzc4LCA4MjM0LCA3MjQxLCAxMjg2MDgsIDExMzczNSwgMTE5MTY3LCAKLSAgICAxOTQ5OTYsIDEyODExLCA2NTkyNSwgMzk0NiwgNzgwNzgsIDEwOTk4LCA3ODA4MCwgNjczLCAxOTQ4NjcsIDY0Mzk3LCAKLSAgICAxMjgyNzYsIDc0NTk5LCA3ODQ0OSwgODg5MCwgMTk0OTc3LCAxOTQ5NzYsIDI0NDgsIDc4MDg1LCAxMDI2NywgODQyNCwgCi0gICAgMjQ1MiwgNzgwODMsIDY3MjE3LCA4NzI5LCA3ODQ1NiwgMCwgNzg0NSwgMTI2NTY0LCA3MTMwMiwgNDQwOCwgNDEyMiwgCi0gICAgNjc3MiwgMTEwMzksIDg3MjMsIDY1ODk2LCA3MTMxMCwgMTE5MzAyLCA3MzEsIDExOTMwNCwgNzE5MDQsIDI0MzgsIDY0ODU1LCAKLSAgICAxMTkzMDAsIDExOTI5OSwgMTE3NSwgMCwgNDIxMzUsIDM3MywgMTE5MTcyLCAyMTE5LCAxMTQ1NywgMTE1MjEsIDc3MjMsIAotICAgIDEyODYzOSwgMCwgMCwgNDE5NTIsIDkzMDIzLCA1MjczLCAyMTI3LCA1MjY5LCA2MzM3LCA1MjAyLCAyNDA0LCA1MjY3LCAKLSAgICA0MjgyMywgMTEyOTEsIDE5OTE1LCA1Mjc3LCAxMjk2MywgNzAzMjAsIDYxODksIDQxMjUsIDEzMTQsIDEyMTMzLCAxMjAzNDAsIAotICAgIDExODg3MywgMTI3MSwgOTgzNjQwLCAxMjkxMTIsIDY2MDI0LCA0MTQ4MiwgMzg2NCwgOTIwNCwgMCwgMzg3OSwgMCwgCi0gICAgMTI5NzgsIDQxNjYsIDQ1NzQsIDEyODExMSwgNzU2NywgNzQ1OSwgNzgxMjgsIDQxMzkwLCA1Mzg0LCA0MTg4MiwgNjc2NDcsIAotICAgIDcwMTU0LCA1NzU5LCAxOTQ4NjksIDEyMTQxMywgNDEzODgsIDY0NDQ2LCA0MTM5MiwgNjQyODgsIDQxMzg3LCA2NzIwMSwgCi0gICAgODcwNiwgNTU1MiwgNjg4MzcsIDcwMCwgMCwgNTU1MywgMCwgNzA4OCwgNTM1NiwgNzQ5OSwgNjgwMDcsIDY2NTk2LCAKLSAgICA3NDA2NiwgNjcyNTEsIDEwMjYzLCA1NTU0LCAwLCAxMjM0NCwgMTAzMTEsIDc4MTEzLCA2NjY1LCAxMTExNSwgMTIxMDM1LCAKLSAgICA3NjE4LCA4NTE3LCAxMTQ1NSwgNzg0NDAsIDY0NjMyLCA2NDQ0NywgNTU1NSwgNzgwODgsIDc4MDkzLCA3ODA5MSwgMCwgCi0gICAgNDI4MDMsIDY1MDMzLCA5MTQzLCA2NjY4LCA2NzI4OCwgNjc5OTUsIDE5NTA2OSwgNjU2LCAxOTUwNzEsIDY1MDM3LCA0NTc3LCAKLSAgICA2NDYyNCwgMCwgMCwgNzE5MTIsIDE5NDkwOCwgNDI2OSwgNzM4ODUsIDkxNzc3NSwgNDI4NDYsIDY5NjQ0LCA5NTAsIDAsIAotICAgIDkyMjczLCA2NjU4MCwgNzc5OTIsIDY2NjgzLCAxMDU1NCwgMTE5MDA4LCAxMTkxMjEsIDY4MzIsIDUwOTgsIDkxNzc2OCwgCi0gICAgMTk0NjY4LCA3MDQwMywgNTA5NywgNDkzNSwgOTg0OCwgMTAzODEsIDAsIDY3Mjk2LCA5Mjg5NiwgMzY1MSwgMCwgNjcyOTQsIAotICAgIDcwODQ4LCA1MTAyLCA1MTAxLCAxMDI2OSwgMTI5ODMsIDgxMzgsIDQ1MTcsIDE5MzIsIDUxMDAsIDE0MzksIDEyMDkzLCAKLSAgICAxMjQ3LCAxMDAzNCwgMTIxMzQwLCA1MDk5LCA3ODM3MywgMTQ0MSwgNDIwODcsIDMwNjMsIDY1MCwgMTE5OTUzLCA3ODM4LCAKLSAgICAwLCAxMjg2NTUsIDE5NTA0MCwgMTE5MTQyLCA5MDMxLCA3MDgyOSwgNzg0MjcsIDkwNzgsIDg1NDUsIDY2MzU2LCAxMjg3OTksIAotICAgIDE5NDkyMywgOTE1NCwgOTExOCwgMTI2NTQzLCAxMTk1ODYsIDI2NzYsIDIyNzcsIDEyODQyMiwgNjgyMzcsIDYxOTAsIAotICAgIDg1OTksIDEyNTExOCwgNjk5MTgsIDEwNzk1LCA5ODU3LCA3MDE0LCA5ODU2LCAxOTUwMzMsIDcxOTAzLCAxMjEyOSwgCi0gICAgMTI2NjUxLCA4NDgxLCA4MzA2OCwgNjIwMiwgNjc3MTEsIDEwOTIwLCAxMTM3MjYsIDUyMDMsIDE5NTAzOSwgMTk1MDM4LCAKLSAgICA1MTA4LCA1MTA3LCA2NTgxOCwgNjYwMTksIDk3NjIsIDExMjA1LCA1NTQxLCA3NDc3MiwgMCwgMTI2MTMsIDUyODQsIDY2NTcsIAotICAgIDIwNywgMTIxMjA2LCA0Mjc1LCA3NDgxOSwgODU0LCA2ODE0NywgNzQzODEsIDY2ODE2LCA3ODc4NiwgNTEwMywgMTI3ODYxLCAKLSAgICA2NDM0OCwgNDEzNjgsIDQzOTc0LCA0ODgsIDY5ODExLCAwLCA3MTMzOSwgMTAxNTcsIDE5NDYxMiwgNDMwMzQsIDExNDM4LCAKLSAgICA2NDY3NCwgMCwgNzAxNTgsIDY4NDMxLCA0MTc3MSwgNTEwNiwgNjY2OSwgODUwNCwgNjUxNTQsIDY5ODEzLCA0MTM2NywgCi0gICAgNTEwNSwgNjUyNjYsIDY5NzIwLCA2NDc2LCA1MTA0LCA5ODM3NDksIDMwNCwgMzE3NiwgNzg4NzEsIDcwMTQ5LCA5MzIsIAotICAgIDExMzY4MywgNjU2NywgMjM4LCA2OTY1NiwgNzg0MzIsIDE5NDU5NSwgMTk5MDUsIDQzODUwLCAxOTUwMTUsIDc4ODcwLCAKLSAgICA0MTA0NCwgNjc2NDAsIDY3MzAyLCA0MjA1NSwgOTkxMiwgNjU5MzksIDEwNjcwLCA3NDA5MywgMTMyNzMsIDAsIDEyNTUyLCAKLSAgICA5MzAzOSwgODgwMywgMzA5LCA2NjIyLCA4MTUxLCAxMDg1OCwgNzg3MDYsIDY3NjM2LCA3MDE3MSwgMTI1NjgsIDEyNzkxNywgCi0gICAgMTI1NTMsIDEwODE0LCA0MzI3NSwgNjk1MCwgOTcxMiwgNjg2ODAsIDQzOTcwLCAxMjY1MzUsIDY1MTY1LCA5MjcyNSwgMCwgCi0gICAgNjY0NjYsIDEyNDk4NiwgMTI3Nzg0LCAwLCA2NjcyNSwgNjE5MSwgMTEzNTEsIDEwNDM3LCAxMTMxNiwgNjc2MzQsIDQzNzYzLCAKKyAgICA4OTk2LCA0OTkyLCA0NDcxLCA0MjYyMiwgNjQwNzksIDY0MDc4LCA5MjE3OSwgNzE4NzgsIDEwMDM3NywgMTIxMjU2LCAKKyAgICA2NDYxNSwgNDE5MTUsIDEwMDM3NSwgMTIwNzUsIDQyMDQxLCAxMjUwODQsIDUxNzQsIDk4MzIxNywgMTAwMzcyLCA3NDE4NiwgCisgICAgMzEyMywgMTI1MTAwLCAxMjY4NSwgMTE5MjE2LCA4NDA4LCA2NDcwNCwgODMzMjgsIDEyMjg5MSwgOTIyMywgMCwgNDE2MTYsIAorICAgIDY3OTk5LCA3Mzc5NywgODMzMjcsIDExMTYsIDc1MDY3LCA0MzA0OSwgNzEzNiwgNDMwNTAsIDg1NDgsIDEyMDQ4NSwgCisgICAgOTgzODcxLCA3NTAzMSwgOTE3NjIyLCAxMjgxNjgsIDEzMTE1LCA0MzY3NSwgNjQwOTEsIDkzMjIsIDgzMzM4LCA4MzMzMSwgCisgICAgNjQwOTUsIDY0MDk0LCA4MTExLCA2NjI0NywgNDIzMzIsIDY0MDg5LCA2NDA4OCwgNjE5OSwgNjcyNDksIDY2Mzk4LCAKKyAgICAxMTQzNCwgNjQwODMsIDY0MDgyLCAxMTMyOSwgNzczNywgNjQwODcsIDY0MDg2LCA2NDA4NSwgNjQwODQsIDgzMDMzLCAKKyAgICA5OTI3LCA0MTMzNSwgNDExOCwgMTc5NywgODMzMTIsIDQxMzM0LCAwLCA0NiwgNDM0NDgsIDc4NTkxLCAyOTgsIDgzMzAzLCAKKyAgICA4MzMwNCwgODMzMDUsIDQyNjI3LCAxMjUwMTEsIDMyLCA2MTg3LCA4MzAzNywgMTE0OTUsIDExNDU5LCAzNjY1LCA4MzAzNiwgCisgICAgNDI4NzEsIDExODkwMiwgMTk5MjMsIDc0MzM1LCAwLCAxMjcxOTIsIDY2MjM5LCA0MjI2NCwgNjQ0MDMsIDQ0MTIsIDcyNDAsIAorICAgIDgzMzE0LCA3MTQ0NCwgMTE5MzIxLCA2NTc1OCwgMTI3NTAsIDQxODEsIDg1NDQsIDgzNDYxLCA2ODA1MywgODM0MDcsIAorICAgIDEyMDE5OCwgNjk4MDksIDYxODEsIDY1MDE0LCAxMDA3NTAsIDEyODQ4NCwgOTgzMTk2LCAzNjM5LCAxMTk1ODgsIDExODg1MSwgCisgICAgODMwMzksIDExODkwNCwgMTAwNzMsIDEyMDIwNiwgODMwMzgsIDEyNzE4NiwgNjg0MDksIDQyODQ0LCA3NDk4LCAxMDk4LCAKKyAgICA5MjU2NSwgMTIwMjA1LCA5MTc3NzMsIDEyODkxNSwgMTAyMDcsIDg3ODksIDkzMDcwLCAxMjAzMzgsIDkyOTczLCAxMjgzMjUsIAorICAgIDkyMzQsIDkxNzg5NSwgNjE4MiwgOTgzNDc1LCA2NTA1OCwgMTIwMzE5LCA5ODMyMTEsIDY4MDY0LCA5MTc4MzEsIDU0NzEsIAorICAgIDk0NjEsIDU1NzMsIDExODkzNiwgNTQ3MywgNDQsIDAsIDY2MjQ0LCA5NDA3MiwgMCwgNjYyMzgsIDEyODQ0LCA2Njg5NCwgCisgICAgMTYyMiwgNzc2NywgMTkwMCwgNDEzMzksIDExNDU4LCAxMTkwNjEsIDk4MzE4MywgNjU4MSwgNTU3NiwgMTI4NjE4LCAKKyAgICA0Mzg1NSwgNDEzMzcsIDk4Mzc3MiwgNDE2MzEsIDg5NDcsIDY4MzkwLCA2OTY4MywgNDE2OTQsIDkxNzc4NywgNzIzOTYsIAorICAgIDc5MDgsIDAsIDEwNDA4LCA2NTc5LCAxMjc4OTAsIDY0NjE4LCAwLCAxMjAxNDcsIDIxMzgsIDY1ODMsIDc3NjEsIDcwMDA1LCAKKyAgICAxMjA1MDQsIDE5NDgyOCwgNjY4MDIsIDUwNTgsIDQxMDEwLCA5OTkyLCAxMjgyOTksIDUwNTcsIDY5ODkyLCAwLCA3NDUzOCwgCisgICAgNTA1NCwgMTE4OTUxLCAxOTQ5NzEsIDc4NjA2LCAwLCAxNDM3LCA0MTYxNywgNjU4LCAzNDk3LCA3MTM2NSwgNzQ4NiwgCisgICAgNTA2MSwgNTA2MCwgNDIzNSwgMTI3ODc4LCAxMjgzMjIsIDEyODUyOSwgMTIxMTMsIDQyMzYsIDQ3MjcsIDEyODQ4NywgMCwgCisgICAgNzY5MywgMTA3NDksIDEyMDMzMiwgNzQ4OCwgNTc3MywgOTc4LCAxMjgxMzQsIDEyODY5MywgNDE2MTksIDEwMjM5LCAKKyAgICA2ODYxMSwgNzE4NjQsIDY2MjA5LCAxMjcyMzMsIDc0MTM1LCA5NzQ4LCAxMDAzODMsIDEyNzUyNCwgMTI1MjE4LCA5ODMzMTYsIAorICAgIDE5NDY3NiwgMTk0Njc1LCAxMjgwODEsIDcwNjgxLCAxMDAzODUsIDcyODExLCA4MzM1NCwgMTI3ODY1LCAxMjA5OTksIAorICAgIDkyNzc2LCA5MzQxLCA3ODgyMSwgMjM3OSwgMTEzMjUsIDEwMDM4NiwgNjQ2NjgsIDY3ODU0LCA4MTI1LCAxMjA1NDUsIAorICAgIDY3NDMsIDgzMTY0LCA5MTc5NDAsIDIzNjksIDgzNDA2LCA5ODMzMjMsIDEyNzk2NiwgMTAwNTQzLCA3MTg2OCwgNzM5MzYsIAorICAgIDcwMDgsIDQzNjYwLCAxMjAzNDYsIDAsIDQzODQxLCAyMzY3LCAxMjc4MjcsIDEyODI3NSwgMjY0LCAyMzc1LCA4MDYwLCAKKyAgICA2MTk0LCAxMTk4NTgsIDE4NDQsIDExOTA4NCwgMTI5MDQ5LCA2MDE5LCAxMjg5NzUsIDk4MzU1NywgNjk2MSwgMCwgNzA0MzUsIAorICAgIDY3MTcxLCA4ODAwLCAxMjczMzIsIDQyODYyLCA0NDYzLCA2NTU4MSwgNjE5MiwgMTAwNzQ0LCA0Mjc3MSwgMTI3OTgzLCAKKyAgICA5MjMzMywgNzI1LCA2NTA0MiwgOTMwMTQsIDEyMDgwMCwgNzQ5NDIsIDEyODkyLCAxMjUyMTIsIDY3MTQ5LCA3NDg5OSwgCisgICAgNzM5MzEsIDAsIDEyMDQ5NSwgMTI3MjYxLCAxMjIyNCwgOTgzMTI4LCAxMjkwNjEsIDUwNzQsIDUwNzMsIDEyMTE2NCwgCisgICAgODk4MywgMTE4OTgxLCA3NDQ5MywgNzA3MjMsIDUwNzIsIDc0NTQ3LCA2MTk4LCAxMTYxNCwgMTI1MjUxLCAxOTYsIAorICAgIDk4MzE1NCwgMTI4ODA1LCAxMjgyNjMsIDQ5MjksIDEyMDM0MiwgMTI5MTQ1LCAxMDA3OTQsIDEwMDc0NywgMTIxNDU1LCAKKyAgICA0Mjg0NywgOTI5NTMsIDAsIDY3NzU0LCA0OTM0LCAxMjgzMzgsIDQxMzIzLCA5NzU4LCAxMjgyMTEsIDkyMjg5LCA3MDE4MSwgCisgICAgNDI1ODQsIDAsIDQzMjksIDQxMzIxLCA0OTc5LCAzMDQ4LCA3NzUyLCA0MTMyMCwgOTE3OTUyLCA2NDY2NywgMTI4MTksIAorICAgIDk4MzU5NywgNTA3MSwgMTI3OTE1LCAzNjQyLCA2NzMzNCwgNTA3MCwgMTAwNDIsIDExMzgxMywgMzk4NywgNTA2OCwgCisgICAgOTgzNDYwLCA4OTA5LCA3ODY1MCwgNzg2NDksIDY5OTE3LCAxMDYzNiwgNzM5ODEsIDExODA2LCA0MzE2NywgNDUzMSwgCisgICAgMTI0NSwgOTEwNSwgNjY0NjMsIDQ5MjEsIDEyMDIxOSwgNDkyNiwgNjU1NDQsIDczODg0LCAxMjEzNTksIDEyMTI2NywgCisgICAgMTI3OTcyLCA2NDcwOSwgODMyNjksIDEyODg1NCwgNzg4ODAsIDQ5MjIsIDMyNSwgOTkyLCAxMTk1NjgsIDQ5MjUsIAorICAgIDEyNzIxOCwgOTgzMDU5LCA5NTI2LCA0OTIwLCAxMjg2MTcsIDk0OCwgMCwgNzA3MDYsIDQ5MzAsIDEyNzg1NywgOTIxNzUsIAorICAgIDExOTg4NiwgNDkzMywgMTEzNzc5LCAxMjEwNDksIDExODk4NSwgNDkyOCwgOTgzMTQ5LCA4MzUxNCwgNzQ3NzAsIDEyMDE5NCwgCisgICAgMTI2NTQ4LCA3MjIsIDE5NDkzNCwgMTk5MDgsIDEyNjM3LCAxMjc0ODUsIDgyOTk5LCA4NzUzLCAxNTA5LCAxMjUyNjQsIAorICAgIDU0NjgsIDk1MTEsIDQzNDkzLCAxMjc0NzcsIDE2NzIsIDYyMDUsIDEwODY0LCA3NDU4NiwgMTI3NDgwLCA3MDEwMywgCisgICAgOTI2OTQsIDc4NTU1LCAxMjc0NjgsIDczODYzLCAxMjY1NzcsIDY4MzM2LCA0MTYwNywgOTI2MjcsIDE2NzksIDEyMDExNiwgCisgICAgMTIwMTgwLCA3ODgzNywgMTI3NDYyLCA3MDA1LCA0MTYwOSwgOTU4MCwgNzA0MzEsIDQwMSwgNjk5NDksIDQzNzc5LCA2OTY4LCAKKyAgICA1NzYxLCAzNDIsIDg1NTMsIDkyMjU2LCA4MTQzLCAxMjA5NzksIDExOTgzLCA3NDIwOCwgNjI0LCA3NDUwOCwgNDA1NywgCisgICAgNDM3ODgsIDUwNzgsIDc0MjU4LCAxMjQ3OCwgMTIwMjUwLCA1MDc2LCAxMjg3MDIsIDgyOTkxLCAwLCA4Mjk1LCA2ODUsIAorICAgIDkwMjUsIDE1MjQsIDEyNjE4LCAwLCA1NTM5LCAxMDA5MDcsIDkyNTIzLCA3MTQzNSwgNzEzOCwgMTIwNTUyLCA0MzUwNCwgCisgICAgMTI1MTk3LCA2NjkxNCwgNjU3OTQsIDEyNTIwLCA4MDU4LCA5NzMyLCA5MjQ4MCwgNTA4MCwgNjQ3NzUsIDUwMzYsIDUwMzUsIAorICAgIDEwMDQyOSwgNDI2MDQsIDEwMDQyOCwgMCwgODA3NCwgMjc1LCAxMzI5MSwgMTkwNywgNzQzNzAsIDQ0MzIsIDEyMTMxMywgCisgICAgNTAzMywgMTIwMzQxLCAxMjA4MTgsIDQ4MzYsIDM4ODgsIDczNzkyLCAxMDcyOSwgNjQ1NDYsIDEyNzI2MiwgNDM3MDQsIAorICAgIDEyNzI2NCwgOTI5NTcsIDIyNzQsIDY4MDYxLCAxMDA0MjIsIDcwMzYwLCA4ODU4LCA2NDA5LCA3NjYzLCA3ODA2OSwgCisgICAgMTI4MTAwLCAxMTkwMDcsIDEwMDQyNCwgNjYzMjEsIDk0MDUyLCAxMjgxNCwgMTI3MjQ4LCAzNDMyLCAxMDIxOCwgMCwgCisgICAgNjA5NCwgNzY0MSwgNDI0NDUsIDEyODc5MiwgOTI0ODcsIDQyNDA2LCAxNjc2LCA2NzM2MiwgNzQ4NjIsIDY3MzY1LCA1MDMwLCAKKyAgICA2NzM2NCwgMTE4ODEwLCAxOTUwMDgsIDczODY5LCA5NjIyLCAxMTM3NjMsIDY5OTQ0LCA2Nzg3LCA2NzM2MSwgMTk0OTMwLCAKKyAgICAwLCA2ODMxOSwgMTA1NDQsIDEyOTE5LCA3MTQ4NCwgNzIzOTcsIDk4MzY0MSwgMCwgNjk5MDYsIDEwMDg1NywgOTgzMDQxLCAKKyAgICA5NDcsIDY3Njk1LCA2NzM2NywgMTI4NTI4LCAxMDk2OSwgNjcyMjgsIDc2MTMsIDkyNTYyLCAxMTk5MzYsIDQ3OTUsIAorICAgIDEwMDQzMSwgNzAxOCwgNzM3NiwgMTIwMTgxLCAxMjAxOTIsIDEyMDI2OCwgMTIwMTg5LCA0MzU2NywgNzQwNTYsIDEyMDI2NiwgCisgICAgMTE4MzMsIDExOTkxOSwgNzIxNiwgNjUyMzIsIDcyMTcsIDI1MSwgNzIxOCwgNzg5NSwgNDM5NSwgNDM1MzgsIDEwMDQzMywgCisgICAgMTAwODYwLCAxMTk5MjgsIDcyMTMsIDY4NDc2LCA3MjE0LCA3MjE1LCA1ODc5LCA3NDE0MSwgODg4MCwgNzY4NSwgNjY0NTksIAorICAgIDEyMDE3MywgNjU1NDAsIDY3MzU5LCA2MjUsIDgxODcsIDQyODYxLCAxMTEzLCA3MjM2LCA3OTE1LCAzNjMwLCAxMjAxNzYsIAorICAgIDgxNzksIDcwMTYzLCA2Nzg4NiwgOTMxNiwgMTA5ODAsIDI0ODksIDY1NjI0LCA4MTUwLCAxMzU5LCA2NzY1MiwgNzA0NjQsIAorICAgIDEyNzMzMCwgNzM3NTYsIDUwNDIsIDUwNDEsIDQyNzY5LCAxMjA4NCwgMTI3MzI0LCAxMjczMjEsIDc0NDEwLCAxMjczMTksIAorICAgIDEyNzMyMCwgMTI3MzE3LCAxMjEyODQsIDEyNzMxNSwgMTIyODMsIDE2MTYsIDM3OTUsIDY3NzMyLCA4Nzk1LCA2NjI0NSwgCisgICAgMTIwODM4LCAwLCAwLCAxMTM4LCA3MzkwNSwgMTI2NzcsIDEyODI4MCwgNjc3MjQsIDMyMzksIDY2ODkzLCAxMjg4MTgsIAorICAgIDE5NDYyNCwgODQzMSwgMCwgNDIxNjQsIDcxMjI5LCAxMTc3OCwgMTI2MjAsIDY4MjYsIDczNzczLCA3MDE2OSwgNTA0MCwgCisgICAgMTI3OTY5LCAwLCA2NzA5NCwgNzg0MjAsIDEyNzAzNiwgNTAzOSwgOTgzMjQxLCA3ODQxOCwgOTgzOTM2LCA1MDM4LCAKKyAgICA5MTc5OTAsIDk4Mzg2MiwgMTMxODQsIDQzOTYwLCA3MDY5NSwgNjQ2NDgsIDEyNjY0MSwgOTM1OSwgNzg0MTYsIDkxNzYyMywgCisgICAgMTI4NzcwLCA2NTE1NywgNjY2MiwgMTAwNjA0LCA3MDE4MiwgMzg2MywgNzM5MDksIDQ4MzUsIDU1MjY2LCA0MzQzMiwgCisgICAgMTI3ODIyLCA0MzA5LCA3MTI3LCAxMTg4NDEsIDEyOTA3NCwgMTk0NTY4LCAxMzAxLCAwLCA0MjU4OSwgNTY5LCAxMjg4MDQsIAorICAgIDczODEzLCA3MTEsIDQzODksIDcxMzMsIDEyMDY0MywgNzM4ODAsIDExNjEwLCAxMTM2OCwgMCwgMTI4NDM2LCA0MTMzMSwgCisgICAgMTAwNiwgNzQyNDAsIDY3MjI0LCAxNTUwLCA4MjAxLCA3MDQ1MywgNzYyNywgNTQ5OSwgNTAzMSwgNzc5MDgsIDQyNzM4LCAKKyAgICA2NTc4NCwgNDM5NTcsIDY1MjY3LCAzNzU4LCA5ODM4NDQsIDY1NzgxLCA2NDczNCwgNjcyMjIsIDI0NDAsIDQzOTU1LCAKKyAgICA3MDc4NywgODQ0OSwgOTgzNjg0LCA1MDA4LCA5ODM1NzIsIDIxMTgsIDEyMjg5NiwgMTIxMjEsIDgyNTUsIDU1MTIsIAorICAgIDczODc1LCAyMTI4LCAyMTMwLCAyMTMxLCAyMTI2LCAyMTMzLCAxMTE5LCAxMjEyNTAsIDIxMTQsIDIxMTYsIDI0NTUsIAorICAgIDExMzc5OCwgMjEyMiwgMjEyMywgMjEyNCwgMjEyNSwgMTI3NDg2LCA4NzE0LCA5ODM4MjAsIDIxMTMsIDE5NTA0OSwgMjExNSwgCisgICAgMTI4MTc3LCAxMjc3NDgsIDQzNzEzLCA1MDUyLCA2NjIyMCwgNTgyMSwgNjE4NiwgNjU3NzgsIDY1Nzc1LCA1MDUxLCAKKyAgICA2NTc3MywgMTQyOSwgNDI2NDcsIDUwNTAsIDMwMiwgMzg4LCA0MTExNSwgNzM1LCA2NjM3LCA1OTA3LCA2NTA4OCwgMCwgCisgICAgMTI3MjYsIDc0NTk0LCA5MTE3LCA5ODMxODEsIDEyMDAzLCA1NTEzLCA1MTA5LCA1MDUzLCA3NDIzMCwgNTUxMCwgNzg0NTEsIAorICAgIDAsIDc4NDQ3LCAyNDcwLCA3ODQzNywgMCwgMTkyNSwgNzEyNTEsIDkyMjM3LCA3NDgwNywgOTgzMDYyLCA1MDQ4LCA1MDQ3LCAKKyAgICAxOTQ4MzcsIDEyMTI3NSwgNzQyMDEsIDc4NzQzLCAxOTQ4MDIsIDc0NDk3LCA2NTkzMywgODA4OSwgNjkyOSwgNjM5LCAKKyAgICA4Mjk4MSwgNjgxNzksIDY0NDQyLCA3MDE4MCwgODI5ODQsIDQ1OTksIDQxNDAyLCA2Njc0LCA0MzM5NywgNDMyOTQsIDE0NzYsIAorICAgIDY0OCwgMCwgNjU4MTksIDMyMzMsIDAsIDQxNzgyLCA2OTUxLCA3NDMwNiwgMTI5MTk3LCAzNTMwLCA5NzUwLCAxMjgzMTcsIAorICAgIDEyMDk5MSwgNjY1NiwgNDI2MTgsIDcwMTc1LCA1MDQ2LCA4NTEyLCA2NTg1NiwgNzQyNjEsIDg5NjcsIDEwMDUxNiwgNTA0NSwgCisgICAgNDIwMjYsIDE5MTYsIDc5ODYsIDUwNDQsIDEyMDU1NiwgOTAwNiwgMTMxMjgsIDUwNDMsIDEyMTMzNSwgNzg1MywgNjc4MDgsIAorICAgIDc0MDA0LCA5NjY5LCAxMjM0MSwgMTI3MDMsIDg0MDIsIDEyODg4MywgMTE5MDcwLCA3MDE3NCwgNDE3NTAsIDM1ODYsIAorICAgIDY0NTA4LCA0MzE0OCwgMCwgMTI3OTcxLCAxMTk2MDYsIDY3OTgzLCAxMzI5NiwgNTE3LCA5ODM4NzgsIDEyNTAxNywgCisgICAgMTAwNTY1LCA0MTUyOCwgMTIzLCA2NTQ1NCwgMTI3MjE1LCAxMjEzMjYsIDc0NDc4LCAxMDUzMSwgNzc4NCwgNDE1MjYsIAorICAgIDEwODI5LCA3Mzk5MSwgODA1NywgMTEyNiwgNzM4OTUsIDEwMDgwMywgMTk0NTkxLCA5ODMzNzksIDM5MjUsIDQyNTEsIAorICAgIDgwNjksIDEwNTE3LCA3MTExMiwgNDg5LCA3MTExMCwgNDI1MCwgOTIyNjYsIDEyMDQ1MiwgNDMxNTEsIDk4MzE3OCwgCisgICAgOTI3MzgsIDY2MjAwLCA5ODM2MjYsIDEyNzkwNSwgMTI1MDI2LCA3NDI5OCwgMTI4ODc5LCAxMjY2MjUsIDg3MTEsIDYxODMsIAorICAgIDgzNDQ4LCA5ODM5NTIsIDcyNDAyLCAxMjA0NDgsIDc2MjMsIDEwMDgwOSwgNjYzNzYsIDkyMzUsIDEyNzYwLCA3NDE3NiwgCisgICAgNjk2NjIsIDY2NDQ1LCA0MzU0MCwgMTAwNjIsIDM3NDMsIDExNTE0LCAxMTA3OCwgMCwgMTIxMzYsIDk4Mzc5OSwgMTI2NTk3LCAKKyAgICAxMjA0MzQsIDExOTA1MiwgNzcyNiwgMTk1MDk1LCAxOTkyMiwgMjY3LCAzMzkzLCA0MjE5OCwgMTM3MSwgMTIyOTE5LCAKKyAgICA2OTIzMywgMjQ1OCwgMTAwNDM1LCA2MjAxLCAwLCA0MTA3NCwgNDI2NiwgMTA2NTIsIDQxNjEyLCA0MTA3NywgMzQwMiwgCisgICAgOTA1MCwgMzM5OCwgMTI4NDI0LCAxMjcwODMsIDE5NDg5NCwgMzM5MSwgNDEwNzUsIDI0NzYsIDEyOTEyOSwgNzQ5OTAsIDAsIAorICAgIDEwNjI1LCA3MDcxNSwgMTI3NjcsIDEzMDE3LCA3ODc0MSwgNjQyNjEsIDY0OTM0LCA3MDE1MiwgMTMwMTQsIDEzMDEzLCAKKyAgICAxMjExOTgsIDY2NzMsIDAsIDAsIDEyMTMyNCwgMTI0MzgsIDAsIDk4MzM0NCwgODMxMDYsIDcxMTI4LCAxMjAwNjIsIDkwNTMsIAorICAgIDEzMDE1LCA3NDUyMywgMCwgNzA0LCA2NjIxNSwgNjE5NSwgNzQ5NDksIDY2NjAsIDc4NzU4LCA5MTc3NjAsIDc0ODYxLCAKKyAgICA0MjIxMiwgMTI2MjksIDExNDM1LCAwLCA1NTI1NiwgNjU1MzgsIDY2ODA5LCAxMjE0MzcsIDEyOTA4NiwgNDM4NzYsIAorICAgIDkyOTQxLCA2NTQ0OCwgNzgxMDAsIDEyOTQ4LCAxMTkwMDEsIDExOTkyNiwgNDM5NDksIDEyMDA0OCwgNzgwOTksIDEyNzA4NSwgCisgICAgMTI3OTY0LCAxMjgzMjAsIDQyODcsIDgyNzYsIDQ5MDIsIDExMzEsIDk4MzYwNiwgNzg0NTgsIDY2NzI4LCAxODE2LCAKKyAgICA0Mzk1MiwgNDI1MzMsIDE2OCwgNDI4NDUsIDQ4OTgsIDY0Mjk4LCA0Mzk1MCwgNzgxMDUsIDQ5MDEsIDE4MjEsIDQzOTUxLCAKKyAgICA1NzgsIDM2NTMsIDEwMDQ3NiwgNzkxLCA5MTYyLCA2OTc3LCA3NDE5NiwgNzg4ODksIDcwMTYwLCAwLCA3MzczMSwgODM1NCwgCisgICAgNDM1OTAsIDExOTMwMywgOTgzNDUxLCA3NTU3LCAxMTkxMDgsIDY3Mzc4LCA4MjM0LCA3MjQxLCAxMjg2MDgsIDExMzczNSwgCisgICAgMTE5MTY3LCAxOTQ5OTYsIDEyODExLCA2NTkyNSwgMzk0NiwgNzgwNzgsIDEwOTk4LCA2NjgwNywgNjczLCAxOTQ4NjcsIAorICAgIDY0Mzk3LCAxMTkyMzUsIDc0NTk5LCA3ODQ0OSwgODg5MCwgMTk0OTc3LCAxMTkzMjIsIDI0NDgsIDc4MDg1LCAxMDI2NywgCisgICAgODQyNCwgMjQ1MiwgNzgwODMsIDY3MjE3LCA4NzI5LCA3ODQ1NiwgMCwgNzg0NSwgMTI1MTE3LCA3MTMwMiwgNDQwOCwgCisgICAgNDEyMiwgNjc3MiwgMTEwMzksIDg3MjMsIDY1ODk2LCA3MTMxMCwgMTE5MzAyLCA3MzEsIDExOTMwNCwgNzE5MDQsIDI0MzgsIAorICAgIDY0ODU1LCAxMTkzMDAsIDExOTI5OSwgMTE3NSwgMTI5MTM2LCA0MjEzNSwgMzczLCAxMTkxNzIsIDIxMTksIDExNDU3LCAKKyAgICAxMTUyMSwgNzcyMywgMTI4NjM5LCAxMjUyNDIsIDAsIDQxOTUyLCA5MzAyMywgNTI3MywgMjEyNywgNTI2OSwgNjMzNywgCisgICAgNTIwMiwgMjQwNCwgNTI2NywgNDI4MjMsIDExMjkxLCAxOTkxNSwgNTI3NywgMTI5NjMsIDcwMzIwLCA2MTg5LCA0MTI1LCAKKyAgICAxMzE0LCAxMjEzMywgMTIwMzQwLCAxMTg4NzMsIDEyNzEsIDk4MzU1NiwgMTI5MTEyLCA2NjAyNCwgNDE0ODIsIDI0MzQsIAorICAgIDkyMDQsIDkxNzU1OCwgMzg3OSwgMTk0ODY4LCAxMjk3OCwgNDE2NiwgNDU3NCwgMTI4MTExLCA3NTY3LCA3NDU5LCA3ODEyOCwgCisgICAgNDEzOTAsIDUzODQsIDQxODgyLCA2NzY0NywgNzAxNTQsIDU3NTksIDE5NDg2OSwgMTIxNDEzLCA0MTM4OCwgNjQ0NDYsIAorICAgIDQxMzkyLCA2NDI4OCwgNDEzODcsIDY3MjAxLCA4NzA2LCA1NTUyLCA2ODgzNywgNzAwLCAwLCA1NTUzLCAwLCA3MDg4LCAKKyAgICA1MzU2LCA3NDk5LCA2ODAwNywgNjY1OTYsIDc0MDY2LCA2NzI1MSwgMTAyNjMsIDU1NTQsIDAsIDEyMzQ0LCAxMDMxMSwgCisgICAgNzgxMTMsIDY2NjUsIDExMTE1LCAxMjEwMzUsIDc2MTgsIDg1MTcsIDExNDU1LCA3ODQ0MCwgNjQ2MzIsIDY0NDQ3LCA1NTU1LCAKKyAgICA3ODA4OCwgNjY4MTAsIDc4MDkxLCAwLCA0MjgwMywgNjUwMzMsIDkxNDMsIDY2NjgsIDY3Mjg4LCA2Nzk5NSwgMTk0OTg2LCAKKyAgICA2NTYsIDEyODU3NCwgNjUwMzcsIDQ1NzcsIDY0NjI0LCAxMjkzNTQsIDEyMDI2NCwgNzE5MTIsIDE5NDkwOCwgNDI2OSwgCisgICAgNzM4ODUsIDkxNzc3NSwgNDI4NDYsIDY5NjQ0LCA5NTAsIDE5NTA4NSwgOTIyNzMsIDY2NTgwLCA3Nzk5MiwgNjY2ODMsIAorICAgIDEwNTU0LCAzNDE3LCAxMDEwNTcsIDY4MzIsIDUwOTgsIDkxNzc2OCwgMTk0NjY4LCA3MDQwMywgNTA5NywgNDkzNSwgOTg0OCwgCisgICAgMTAzODEsIDAsIDY3Mjk2LCA3Mjc5OCwgMzY1MSwgMCwgNjcyOTQsIDcwODQ4LCA1MTAyLCA1MTAxLCAxMDI2OSwgMTI5ODMsIAorICAgIDgxMzgsIDQ1MTcsIDE5MzIsIDUxMDAsIDE0MzksIDEyMDkzLCAxMjQ3LCAxMDAzNCwgMTIxMzQwLCA1MDk5LCA3ODM3MywgCisgICAgMTQ0MSwgNDIwODcsIDMwNjMsIDY1MCwgMTE5OTUzLCA3ODM4LCA5ODM2NjksIDEyODY1NSwgMTk1MDQwLCAxMTkxNDIsIAorICAgIDkwMzEsIDcwODI5LCA3ODQyNywgOTA3OCwgODU0NSwgNjYzNTYsIDEyODc5OSwgMTk0OTIzLCA5MTU0LCA5MTE4LCAKKyAgICAxMjY1NDMsIDExOTU4NiwgMjY3NiwgMjI3NywgMTI4NDIyLCA2ODIzNywgNjE5MCwgODU5OSwgMTI1MTE4LCA2OTkxOCwgCisgICAgMTA3OTUsIDk4NTcsIDcwMTQsIDk4NTYsIDE5NTAzMywgNzE5MDMsIDEyMTI5LCAxMjY2NTEsIDg0ODEsIDgzMDY4LCA2MjAyLCAKKyAgICA2NzcxMSwgMTA5MjAsIDExMzcyNiwgNTIwMywgMTk1MDM5LCAxMjkzMjgsIDUxMDgsIDUxMDcsIDY1ODE4LCA2NjAxOSwgCisgICAgOTc2MiwgMTEyMDUsIDU1NDEsIDc0NzcyLCAwLCAxMjYxMywgNTI4NCwgNjY1NywgMjA3LCAxMjEyMDYsIDQyNzUsIDc0ODE5LCAKKyAgICA4NTQsIDY4MTQ3LCA3NDM4MSwgNjY4MTYsIDc4Nzg2LCA1MTAzLCAxMjc4NjEsIDY0MzQ4LCA0MTM2OCwgNDM5NzQsIDQ4OCwgCisgICAgNjk4MTEsIDEwMDkxMSwgNzEzMzksIDEwMTU3LCAxOTQ2MTIsIDQzMDM0LCAxMTQzOCwgNjQ2NzQsIDAsIDcwMTU4LCAKKyAgICA2ODQzMSwgNDE3NzEsIDUxMDYsIDY2NjksIDg1MDQsIDY1MTU0LCA2OTgxMywgNDEzNjcsIDUxMDUsIDY1MjY2LCA2OTcyMCwgCisgICAgNjQ3NiwgNTEwNCwgMTk0NzM0LCAzMDQsIDMxNzYsIDc4ODcxLCA3MDE0OSwgOTMyLCAxMTM2ODMsIDY1NjcsIDIzOCwgCisgICAgNjk2NTYsIDc4NDMyLCAxOTQ1OTUsIDE5OTA1LCA0Mzg1MCwgMTk1MDE1LCA3ODg3MCwgNDEwNDQsIDY3NjQwLCA2NzMwMiwgCisgICAgNDIwNTUsIDk5MTIsIDY1OTM5LCAxMDY3MCwgNzQwOTMsIDEzMjczLCAwLCAxMjU1MiwgOTMwMzksIDg4MDMsIDMwOSwgCisgICAgNjYyMiwgODE1MSwgMTA4NTgsIDc4NzA2LCA2NzYzNiwgNzAxNzEsIDEyNTY4LCAxMjc5MTcsIDEyNTUzLCAxMDgxNCwgCisgICAgNDMyNzUsIDY5NTAsIDk3MTIsIDY4NjgwLCA0Mzk3MCwgMTI2NTM1LCA2NTE2NSwgOTI3MjUsIDk4MzgyMiwgNjY0NjYsIAorICAgIDEyNDk4NiwgMTI3Nzg0LCAxMjg1MzQsIDY2NzI1LCA2MTkxLCAxMTM1MSwgMTA0MzcsIDExMzE2LCA2NzYzNCwgNDM3NjMsIAogICAgIDAsIDQxNzU0LCA2NzYzNSwgOTM3MCwgMjcyMCwgMTk0NjAwLCA2ODQ2MiwgODIzMiwgMTE4ODE3LCAxMjEwNTYsIDMyMjIsIAotICAgIDEyMTQzOSwgMTIxMTM3LCAwLCA2NjY2MywgOTgzMDQ3LCA5MzA2NywgMTA4MzQsIDk4MzEyNywgMCwgNjU3MzIsIDk0MDk1LCAKLSAgICA5MTc1NDcsIDkyNjgyLCA2NzY3OSwgMTIwNzM0LCA2NzMwOSwgNzc4MSwgNDEzODMsIDY0NTY4LCA2NzMxMSwgMTIwNzM4LCAKKyAgICAxMjE0MzksIDEyMTEzNywgMCwgNjY2NjMsIDEyNzkyOCwgOTMwNjcsIDEwODM0LCAxMjc1NDcsIDAsIDY1NzMyLCA5NDA5NSwgCisgICAgOTE3NTQ3LCA5MjY4MiwgNjc2NzksIDEwMTAyMSwgNjczMDksIDc3ODEsIDQxMzgzLCA2NDU2OCwgNjczMTEsIDEyMDczOCwgCiAgICAgMTIwNzcsIDc0NDMzLCA2NDU4NiwgOTE3NjIwLCA0MjM5NiwgNTUyNTUsIDM0NzUsIDY3MjYwLCAyNDc5LCA2NzMwNiwgCiAgICAgMzYzMiwgMTIwNzI4LCAxMDY5OCwgODM3NiwgMzY0OCwgNjcyNjMsIDc0ODQ0LCA2NzYzOSwgMzYzNiwgNjc4OTQsIDM2NTAsIAotICAgIDg4MzcsIDY1MjI5LCAxODQzLCA0MjI4MywgNDMyNTAsIDQxNTYyLCA5MTAwLCA3NDU0OCwgNjg4MjYsIDM2NDAsIDEyNzE5MCwgCi0gICAgNDIzMjEsIDcyODQsIDkyODgwLCAxMTg5ODcsIDE5NDk1MCwgMTk0OTQ5LCA3NDExNSwgMTk0OTUxLCAxMjY2NDksIAotICAgIDE5NDk1MywgNDIwODAsIDI1MjksIDAsIDk4Mzc4NCwgNjYwMTAsIDQyMDgzLCA3NDk1MiwgNjgzOTgsIDE5NDk1NywgCi0gICAgNjc2MTksIDY2MzY3LCAxOTQ5NTgsIDk2MzQsIDkyMzgwLCA5OTg4LCAwLCA0MTA2OCwgMCwgNDI5NSwgNjUyNjQsIDY4MDA2LCAKLSAgICAwLCA2NzgzNSwgMCwgNzg1LCA4MjM2LCAxMjg2NDcsIDkwMjcsIDY4MTYwLCA2NzYyMywgNjQzODMsIDEyMDI2NSwgOTI1LCAKLSAgICAxMjcxNTYsIDAsIDQxOTg1LCA0MTA3MSwgOTU4NiwgMTIwOTg4LCA0MTk4NCwgOTIxNywgMTI4MzcyLCA5MjUxMCwgOTIyMTgsIAotICAgIDkxODYsIDIwNjcsIDQwMTYsIDk4MzgwMywgMCwgMzgxLCAxMjkzNiwgMCwgNDIwNzcsIDkyOTg1LCA2OTg4MCwgNTE4NCwgCi0gICAgNDIwNzgsIDE5NDYwNywgMTA4MTAsIDEyODUzMSwgNDU4NSwgMTk5NDMsIDU4NjAsIDY3NjMzLCAxMjEzMzQsIDEyNzEwNCwgCi0gICAgODEyLCAzNjE1LCA3MjQwMSwgNTE3OCwgNDQwMDAsIDkyNDM2LCA3ODgwNywgNTE4OCwgNzQyODcsIDY3NjI5LCAzNjA1LCAKLSAgICAxMDY5MiwgMTE2NiwgNjQ0MjksIDQyNjM5LCA5MjQsIDEyNzc5MywgNjc2MzEsIDQyNjE2LCAxMjA2NzAsIDI0NDIsIAotICAgIDEwNzAzLCA2NzMxNywgNjc2MzIsIDY3MzE2LCAxMjc3MSwgMTI3MzYsIDEyNzUzLCA2NjcwOCwgNzM5MzMsIDY3NjI2LCAKLSAgICA0MjQwMSwgMTk0ODY1LCA2OTg3MiwgMTI3MzczLCA0MjI4OCwgMTI3NTEsIDc0OTA2LCA4NTQyLCAxMzE0NSwgMTk0OTYzLCAKLSAgICAyNDY4LCA2NjcwNiwgNDEyOTQsIDM2MjYsIDM4ODMsIDY0Mzg4LCA0MjQ3OSwgNzEyMjAsIDQxMTE3LCAwLCA5MjU4MCwgCi0gICAgMTI4NjI0LCA3NDkzOSwgNjc2MjQsIDEyNzk3NiwgMTI5MCwgMCwgNjU1ODUsIDI3MTUsIDgwNiwgNjUyMDgsIDQxODg0LCAKLSAgICA5MTc4ODMsIDEzMTgsIDY0NzMxLCA3ODAwNCwgMCwgMCwgNjYzMjUsIDM0NjUsIDI0MDUsIDkyNDAsIDk4Mzg1OCwgMTI3NTYsIAotICAgIDY1MjU5LCAwLCA5ODM3ODEsIDEyNzUyLCA1ODMzLCAxNDMyLCAxMTI0NiwgNDE4ODMsIDczOTEyLCA5Nzk5LCA5MTc4OTMsIAotICAgIDQxODg2LCAyNDgwLCAxMjc5MDYsIDIwNjIsIDY3MzI2LCA2NDk0LCA1NTM3LCA3ODY1NiwgMCwgMTk0NTg3LCAxMjQ5NjksIAotICAgIDEyMTEsIDAsIDEyMDk3MSwgNjcyNjksIDExODgzMiwgMTIzMTgsIDEyOTAyNCwgMTEzNzk2LCA2ODAwNSwgMTA2MjIsIAotICAgIDk4Mzc3OSwgMCwgNjg4MjEsIDY1NjYsIDcxMTk1LCAwLCA3Mzc4MCwgMTE5MTk2LCA2NDg2NCwgMCwgNzg2NjAsIDAsIAotICAgIDgyODQsIDEzMDgxLCAxMTkyMDYsIDM1ODksIDQyMDUxLCA0MDM1LCA2NDkyLCA4MzAwMywgNDI2NSwgNjY0MiwgMzk3NywgCi0gICAgNzQxODYsIDQxNzc4LCA4MzYsIDkyOTQ3LCAyNDg4LCAxMjUwOTYsIDQ1ODIsIDAsIDcxNDI2LCA0MTc3NywgMTI5MjYsIAotICAgIDk4MzM3OSwgNzUyOCwgMTA1NTAsIDExMzc2MSwgOTI3MDYsIDk4Mzk1NSwgMTA5NjEsIDkzOTc3LCAxMzc0LCA2NDg3OCwgCi0gICAgMTE5MDE0LCA2NzcyMCwgNDIzODksIDQxMzc0LCAyMjg2LCA5MTc2MDQsIDc4NDkyLCA0MTM3NywgMTI3OTA5LCAxOTUwNDcsIAotICAgIDQwMCwgMTI1OTcsIDEyMDU4NiwgMTI4MDk3LCAxMjkwNzEsIDY2NjEsIDkxNzk2MSwgNjQ4MjcsIDAsIDczODE3LCAzOTAsIAotICAgIDAsIDcxMzAxLCAxMjcyOTIsIDM0NzMsIDc3MTgsIDExMzc1NSwgNjg4MTQsIDAsIDU1Mjg1LCA3Mzc4NCwgNjYzOTQsIDAsIAotICAgIDExOTY5LCAxMjA0NjEsIDEyNzg0MSwgNjM2NSwgMTg4NywgNjc2MywgOTI1NTEsIDgwODAsIDcwMDYsIDAsIDExODkwMiwgCi0gICAgNjc1NywgNjQzNTEsIDE1NDQsIDY3MTU2LCA2NzY2LCA2NDY3NywgMTIwNzE2LCA2NzA4OCwgNjE0NiwgNzQwMzEsIDc3MSwgCi0gICAgMTIwNjgyLCAwLCAxMjgxMiwgMTMxNjgsIDQyMjcyLCAxMjIwMCwgNjY0MjMsIDc5MDQsIDAsIDk1MywgMTI5MTcsIAotICAgIDExOTU2MCwgMTIzMDAsIDY3MDg5LCAxMTQ5MSwgOTcyNCwgMTAzNDEsIDk4Mzc3MywgOTUyNCwgNzQ5MCwgMTEzODksIAotICAgIDc0ODksIDMzNzksIDAsIDc0ODcsIDE5NDYyNCwgNDcxLCA3NDg0LCA3NDgyLCA2NzUzLCA3NDgwLCA1NzY0LCA3NDc4LCAKLSAgICA3NDc3LCA2NTAxLCA3NDc1LCA2OTE4LCA3NDczLCA3NDcyLCAyNDc0LCA3NDcwLCA3NDY4LCAxMDIzMiwgMTA2MTUsIAotICAgIDEwMjEzLCAxMjcyODgsIDkyMzU3LCAxMDA0OSwgMTE4MzQsIDM1NDQsIDk4Mzc4NSwgNjAxNywgNjUzMTEsIDc0OTM1LCAKLSAgICAxMjAyMTYsIDEzMzA2LCAxMDUzMywgNzg3MCwgNzM5NDksIDc2MjUsIDE5NDg4MiwgMTIwNTQ0LCAwLCAxMjc5NTAsIAotICAgIDkyNjYwLCA5ODMzNTYsIDc3ODg5LCAwLCAxOTk2MSwgMjQ3MiwgNDI2NjUsIDkyMzQxLCAxMjExMzMsIDIxMzksIDQyNTYsIAotICAgIDEyMDc3NiwgNzQzODAsIDQzODM2LCA0MjY3NSwgNDI2NTgsIDEyODQ1LCA2NjY2LCA3MDUwOCwgNjUxMzgsIDExOTM1NSwgCi0gICAgNjc4NjIsIDAsIDY1NjcxLCA3MDgzLCAxMjAwMDgsIDgwNjYsIDc2NzgsIDc0ODY1LCAxMjUxMzQsIDEyMDMyMSwgMTI3MjgzLCAKLSAgICA5ODMzOTYsIDcxODYsIDAsIDEyMDU1NSwgMCwgNDQ1LCAxMjA1NjYsIDY2ODQ5LCAxMjUxNDEsIDAsIDgzMzAsIDAsIDAsIAotICAgIDQyNzk3LCAxMTM3MzYsIDEyMDIxNSwgODMwMDEsIDM5MDIsIDAsIDE3NzAsIDQzOTU5LCAxMjUwNjcsIDE1NjAsIDQzOTU4LCAKLSAgICA5MjE2NywgNDU4NCwgNzM4NDMsIDAsIDExNzEyLCAxMDg2NiwgNjcwOTIsIDExMTgsIDcxMzM0LCA3NDg4OCwgMCwgMTA4MSwgCi0gICAgNzQzNiwgMTExNDcsIDcyNTIsIDcwMDkzLCA1OTk2LCA2OTkyMSwgNDkwMywgNjgxNDIsIDQxMzg2LCA1MTYyLCAxMTkxODksIAotICAgIDEzMzAsIDEyODYxMywgNzEzOSwgMCwgMTIwNDcsIDQxMzg0LCAwLCAwLCAxODQ4LCA0MzM0LCA2MzI0LCA0MTk3NSwgCi0gICAgNjQ3NzcsIDEwNjc0LCAxMjMwOCwgMTIxODYsIDAsIDAsIDk4Mzc0MSwgMTI3MTUsIDY4MDAyLCAxOTQ1NzYsIDgzMjU2LCAKLSAgICAyMDE4LCA2NjY3MiwgNDE5NzksIDY2Njg1LCAxMTkxNTcsIDY4MDAwLCA3ODQ5MCwgMCwgMTI2OTg0LCA2ODAwMSwgOTMzNCwgCi0gICAgOTI3MDUsIDcwODAwLCA3MDEwMSwgNzk3NSwgMCwgNzc5NTcsIDAsIDQzNDk0LCA0ODg0LCA2NjU5NywgNjk3MzIsIDAsIAotICAgIDEyMTAxMCwgNjMxMywgNjU1MTMsIDY5ODU3LCAwLCAwLCAwLCAyMzQ1LCA0MzY5NywgNDYzLCAwLCAxMjc4OTAsIDY4MTc4LCAKLSAgICAzMTE3LCA1NDYwLCAxMjE0MjMsIDEyODcxNywgOTgzMzg5LCAwLCA0MjI3OSwgMTI3MTQyLCAxMjY1MDMsIDc4NDE1LCAKLSAgICA5ODMyMjgsIDY4NTI0LCA5ODMzODYsIDEzMjQ4LCAxMjUwMjcsIDk4Mzg0MywgNDM5NTYsIDEyODQxNSwgOTgzMTUzLCAKLSAgICAxMjEwMDksIDU2NjMsIDcxMTIwLCAxMjg0NzIsIDEyODk1OCwgMCwgMjQ4MiwgMTQ3MSwgMTk0NTgzLCAxMTM3NDcsIAotICAgIDQyMjQ3LCAxMjM3OCwgNzM5MjUsIDY5NjY0LCA3MTQyNywgMTIzNzQsIDEyMTM1NywgMTI3MDY3LCAwLCAxMTg4MjgsIAotICAgIDI0NjAsIDcxODgyLCAxMTk0NCwgMTIzNzYsIDkyMzQyLCA2NDY3OSwgOTI4OTMsIDEyMzgwLCAxMDU1NywgNjQ0NzMsIAotICAgIDU4NzAsIDExMTIyLCAyMDI0LCAxMjcxODAsIDk4MzM5MSwgNzE4NzksIDUzOSwgMCwgMTIwMzAyLCA3MDEyMCwgMzg1MywgCi0gICAgNjUxODAsIDEyNzkyMywgMTIwNzk2LCAxMjAyNDUsIDkyMzI0LCAwLCA4NjU5LCAwLCAxMjQ3NCwgNjcyNDEsIDk1MDMsIAotICAgIDE5NDk2OSwgMjQ3OCwgMTIwMjQ4LCA0MTYyLCAwLCA0MjYwLCAxMjk1MywgNjk2MzMsIDgyOTY2LCAxMjQ3MCwgOTI2NDAsIAotICAgIDc0MTg5LCAyNzQyLCAxMjQ3NiwgMTE3OTgsIDEwOTQ2LCAxMjczMTAsIDUwMDAsIDExMzY4NywgOTgzNTc5LCAxMjgxOTAsIAotICAgIDY5NjcyLCA4MjEzLCA0MzgyNCwgNzc3MSwgNjE2MSwgNjgwMTgsIDY3MDksIDE5NDk2NywgNzg4ODUsIDExOTI0MywgCi0gICAgNjgyMzUsIDEyMDU4MiwgNzg1NDcsIDExMzcwOSwgMTAzMDEsIDEwMzMzLCAxMDM5NywgMTE5MDQ0LCAwLCA3Mzc5MSwgMCwgCi0gICAgODMwMzAsIDAsIDEyMTQ4MiwgMTE5MTIzLCA0MDE0LCAxMjg0MiwgNzM5NTIsIDEyMDE1LCAxMjcyOTAsIDgyNzUsIDM4OTMsIAotICAgIDc0OTAzLCAxMjA5MjcsIDEyMjEwLCA3MjIxLCA0MjE0NywgNzQ4NjgsIDc0NTUwLCA3MTIxNSwgNjQ3NDcsIDExODg0MSwgCi0gICAgMTI4MDg2LCAxMjUxNiwgNDQ0NCwgMCwgOTIyNzEsIDc0NTM3LCAxMDg5MiwgODIzMSwgMCwgNjQ3MywgNDE5NjgsIDc4Mzg4LCAKLSAgICA0MTk3MywgMzU5MSwgNDE5NjksIDgzMDA4LCAyNDUzLCAxMTg4OTksIDkyNjY2LCA2NDcwNSwgNzEwNjgsIDAsIDEwMzQ5LCAKLSAgICAxMDQxMywgNDM1OTEsIDQxOTYyLCAzMjAyLCA3NDM1MywgMTI5MTc1LCA4MzE2LCAxMjkxNzQsIDAsIDk0MDYwLCA2ODcsIAotICAgIDkzMDU1LCAxMjkwNzQsIDAsIDE4NDAsIDEyNzgwOSwgNjg2NzEsIDExMTIxLCA0ODgzLCAyODUsIDQ3MjMsIDExMTc1LCAKLSAgICA5MjY5MiwgNDQ1OSwgNzQ1NzcsIDQyOTIxLCA0MTcyMCwgMTEwODksIDI0MCwgMTk5MDYsIDAsIDQyMzIzLCA3NDY0MCwgCi0gICAgOTc0MywgMTIwMjMyLCAxMzEzNCwgOTMwNjUsIDEyODk1NiwgNjU5MzEsIDkyNTc5LCAxMjgzMjksIDQyNjM0LCA5ODMzNDUsIAotICAgIDQzNDM3LCAzMDgxLCAxMTQ2MywgMTIwMTU0LCAwLCAxOTUwMTMsIDEwNDQ1LCAxMjEzMjIsIDkyOTY5LCA2NjcxNywgMjYxNCwgCi0gICAgOTEyNSwgNzExMjUsIDE3MjksIDEyOTAzNCwgNzI0MjAsIDY1MjIxLCA2Mzg4MywgNDMzMzQsIDY0ODUyLCAxMjQ5MjksIAotICAgIDY1MTk0LCA2NjIwMSwgMCwgNjY1NzgsIDUwMDEsIDQxODc5LCA3NDQyNywgNDEyMSwgNTAwMywgODg0LCA2NjcwMCwgCi0gICAgNjM4NzksIDQ5NDMsIDUxNTAsIDczODg5LCA3Mzc2NCwgNDAzOSwgNjQzLCAzMDg2LCA5MjUzMywgNDI0NDgsIDQyMjk5LCAKLSAgICA1OCwgMTIwMDg0LCA5MTc5NTIsIDEyMDA4MywgNjM4NzMsIDg0OTEsIDAsIDAsIDk4MzYyMywgNDUzMCwgNDI0MDksIDcxMjYsIAotICAgIDE5NDU3NSwgMjcyMSwgMTIwMDczLCAxMTkwOTYsIDE5OTI5LCAxMTg5NDEsIDEyODc5NywgOTI5NzUsIDQyNDIsIDQyNjQsIAotICAgIDEyMDA3NywgMTIwNTMwLCA2NjE3OSwgNDI0MTIsIDY1OTQxLCAxMzExNCwgNjQ1MjIsIDEwNzQwLCAzMDk0LCA5ODMxOTksIAotICAgIDk3NTQsIDExOTEwMiwgNDQzNywgNzM5NDgsIDEyNzA3NCwgOTgzMjQwLCA1NTI4MCwgNDIxNzQsIDEyNzk1NCwgNDI0MzAsIAotICAgIDAsIDk4MzQ1MiwgNDIzNTUsIDY2MDI2LCA0MzA2LCA0MTM4MCwgNjg0MzIsIDkyNTg2LCA2ODMxNCwgNjY2NjcsIDExOTM1MSwgCi0gICAgMTk0OTgyLCAxMjExNzIsIDQyMjAwLCA0MjU2NiwgNzAwMDAsIDEyODkyOCwgNTA4OCwgNjk0OCwgMCwgODUyNCwgMTI1MDQwLCAKLSAgICAwLCAxMjM4NSwgMCwgNzQ5MjYsIDY5NjQ2LCAxMzg2LCA2NDU4MCwgMTE0ODAsIDYxMTYsIDY1MDM5LCA2NTAzOCwgMTIzOTIsIAotICAgIDY1MDM2LCA4MDY0LCAxMjc1NTgsIDEyMTAxLCA1ODIyLCAxMTkwMDQsIDIwODAsIDcxMCwgNzc5OTksIDExNjYzLCAxNjY2LCAKLSAgICA0MjA5MSwgMTE5NjU3LCAxMjM4MywgNDM2NzEsIDQyMDkyLCA2ODQxOCwgNDI4OSwgMTI3ODk3LCA2Mzg5NiwgMTIwNjEsIAotICAgIDQyMDk2LCA0MzYyMSwgMzM2MiwgMTIzNzcsIDExOTkzNCwgOTgzODM0LCA2ODQ0OSwgNzQ2MSwgNzM5MDEsIDEyNDQsIDMzMSwgCi0gICAgNzM3ODYsIDEyNjgzLCAxMDY2MiwgMCwgODExMiwgMCwgNjU4NTIsIDc0NjI5LCAxMjM3OSwgMTI3MTA3LCA5MjkzMCwgCi0gICAgNDE5NjQsIDQyMjA4LCA2Mzg0MywgMjA4NCwgNDE5NjUsIDcwMDg5LCA2NTg2NiwgNDMyNywgMCwgNjM4NDAsIDY2NDEzLCAKLSAgICA0MTIyMCwgMTMwMzIsIDkyOTgwLCA1ODQsIDEyOTMzLCA0MzE3NywgMTIzNzMsIDY5ODU1LCAxMzAwMCwgMTM1MSwgMjkzNSwgCi0gICAgODY5OCwgMTI2NjUsIDAsIDE5MzAsIDAsIDc4MjI5LCAxMjQyNywgNjY1MTQsIDY5ODU5LCAxMzAzMSwgMCwgNjM5MDEsIDAsIAotICAgIDM2NTcsIDExOTYxMSwgNjUyMDIsIDYwMDAsIDExMzc4NiwgMTI0MjYsIDEyMTA1OCwgMTE5OTM1LCA0MTc0MCwgMTI0MjgsIAotICAgIDQxMjgzLCA0MTkxNiwgMTE5MjEwLCAxMjgzMTgsIDAsIDEyNDI5LCA2NzI3LCA5ODM5NDgsIDc1NjIsIDEyNTEyOSwgNTE3MCwgCi0gICAgOTgzOTE1LCA0MTc1NSwgNjc2LCAwLCA2NjcwNCwgNjY2NjQsIDk5NzgsIDY2NDkxLCAzNTM2LCAwLCA5NzUyLCA5MjM5NywgCi0gICAgNjE2MiwgNzgzMjAsIDY5MjI4LCAxMDExMywgNDE4MjksIDY1ODg2LCA1MTU5LCAxMjQyMiwgNDE4MzIsIDQzOSwgMzA3MiwgCi0gICAgOTE3ODI4LCA0MjIwNywgNzQ1NDksIDExNzk2LCA0MDk3MCwgNDE4MzAsIDEyNTAyMSwgNzAxNTEsIDgzMDgsIDkxNzc5NywgCi0gICAgNzA4MDcsIDExOTI1OCwgNjc4NjQsIDExMzY5NiwgOTE3ODAwLCAxMjMzNiwgNDEzNSwgNjcyMzEsIDM0MSwgMjcyNywgCi0gICAgNDEyOSwgMzUzOSwgMCwgNjM4NjEsIDAsIDc5MTMsIDAsIDYzODU5LCA0MTMxLCA2Mzg2OCwgMTI5MDg1LCA2Mzg2NywgCisgICAgODgzNywgNjUyMjksIDE4NDMsIDQyMjgzLCA0MzI1MCwgNDE1NjIsIDkxMDAsIDc0NTQ4LCA2ODgyNiwgMzY0MCwgOTI0MTEsIAorICAgIDQyMzIxLCA3Mjg0LCA5Mjg4MCwgMTE4OTg3LCAxOTQ3ODMsIDEwMDg5NywgNzQxMTUsIDE5NDk1MSwgMTI1MTk5LCAKKyAgICAxOTQ5NTMsIDQyMDgwLCAyNTI5LCA5ODM5MDksIDk4MzQ3MSwgNjYwMTAsIDQyMDgzLCA3NDk1MiwgNjgzOTgsIDE5NDk1NywgCisgICAgNjc2MTksIDY2MzY3LCAxMDA4OTksIDk2MzQsIDkyMzgwLCA5OTg4LCAwLCA0MTA2OCwgMCwgNDI5NSwgNjUyNjQsIDY4MDA2LCAKKyAgICAwLCA2NzgzNSwgMTAwOTAwLCA3ODUsIDgyMzYsIDEyODY0NywgOTAyNywgNjgxNjAsIDY3NjIzLCA2NDM4MywgMTIwMjY1LCAKKyAgICA5MjUsIDEyNzE1NiwgMCwgNDE5ODUsIDQxMDcxLCA5NTg2LCAxMjA5ODgsIDQxOTg0LCA5MjE3LCAxMjgzNzIsIDkyNTEwLCAKKyAgICA5MjIxOCwgOTE4NiwgMjA2NywgNDAxNiwgMTI4ODQ4LCAxMjkxODIsIDM4MSwgMTI5MzYsIDk4MzczNiwgNDIwNzcsIAorICAgIDkyOTg1LCA2OTg4MCwgNTE4NCwgNDIwNzgsIDE5NDYwNywgMTA4MTAsIDEyODUzMSwgNDU4NSwgMTk5NDMsIDU4NjAsIAorICAgIDY3NjMzLCAxMjEzMzQsIDEyNzEwNCwgODEyLCAzNjE1LCA3MjQwMSwgNTE3OCwgNDQwMDAsIDkyNDM2LCA3ODgwNywgNTE4OCwgCisgICAgNzQyODcsIDY3NjI5LCAzNjA1LCAxMDY5MiwgMTE2NiwgNjQ0MjksIDQyNjM5LCA5MjQsIDEyNzc5MywgNjc2MzEsIDQyNjE2LCAKKyAgICAxMjA2NzAsIDI0NDIsIDEwNzAzLCA2NzMxNywgNjc2MzIsIDY3MzE2LCAxMjc3MSwgMTI3MzYsIDEyNzUzLCA2NjcwOCwgCisgICAgNzM5MzMsIDY3NjI2LCA0MjQwMSwgMTk0ODY1LCA2OTg3MiwgMTI3MzczLCA0MjI4OCwgMTI3NTEsIDc0OTA2LCA4NTQyLCAKKyAgICAxMzE0NSwgMTk0OTYzLCAyNDY4LCA2NjcwNiwgNDEyOTQsIDM2MjYsIDM4ODMsIDY0Mzg4LCA0MjQ3OSwgNzEyMjAsIAorICAgIDQxMTE3LCAxMDA4OTMsIDkyNTgwLCAxMjg2MjQsIDc0OTM5LCA2NzYyNCwgMTI3OTc2LCAxMjkwLCAxMDA1OTEsIDY1NTg1LCAKKyAgICAyNzE1LCA4MDYsIDY1MjA4LCA0MTg4NCwgOTE3ODgzLCAxMzE4LCA2NDczMSwgNzgwMDQsIDAsIDAsIDY2MzI1LCAzNDY1LCAKKyAgICAyNDA1LCA5MjQwLCA5ODM4NTgsIDEyNzU2LCA2NTI1OSwgMCwgOTgzNzgxLCAxMjc1MiwgNTgzMywgMTQzMiwgMTEyNDYsIAorICAgIDQxODgzLCA3MzkxMiwgOTc5OSwgOTE3ODkzLCA0MTg4NiwgMjQ4MCwgMTI3OTA2LCAyMDYyLCA2NzMyNiwgNjQ5NCwgNTUzNywgCisgICAgNzg2NTYsIDk4MzI3NSwgNzA2NjEsIDEyNDk2OSwgMTIxMSwgMCwgMTIwOTcxLCA2NzI2OSwgMTE4ODMyLCAxMjMxOCwgCisgICAgMTI5MDI0LCAxMTM3OTYsIDY4MDA1LCAxMDYyMiwgOTgzNzc5LCAwLCA2ODgyMSwgNjU2NiwgNzExOTUsIDAsIDczNzgwLCAKKyAgICAxMTkxOTYsIDY0ODY0LCAwLCA3ODY2MCwgMTI5MDUyLCA4Mjg0LCAxMzA4MSwgMTE5MjA2LCAzNTg5LCA0MjA1MSwgNDAzNSwgCisgICAgNjQ5MiwgODMwMDMsIDQyNjUsIDY2NDIsIDM5NzcsIDcyNzQzLCA0MTc3OCwgODM2LCA5Mjk0NywgMjQ4OCwgMTI1MDk2LCAKKyAgICA0NTgyLCAwLCA3MTQyNiwgNDE3NzcsIDEyOTI2LCA3MjcwOCwgNzUyOCwgMTA1NTAsIDExMzc2MSwgOTI3MDYsIDk4Mzk1NSwgCisgICAgMTA5NjEsIDkzOTc3LCAxMzc0LCA2NDg3OCwgMTE5MDE0LCA2NzcyMCwgNDIzODksIDIyNzMsIDIyODYsIDkxNzYwNCwgCisgICAgNzg0OTIsIDQxMzc3LCAxMjc5MDksIDE5NTA0NywgNDAwLCAxMjU5NywgMTAwNDgyLCAxMjgwOTcsIDEyOTA3MSwgNjY2MSwgCisgICAgOTE3OTYxLCA2NDgyNywgMCwgNzM4MTcsIDM5MCwgMTE5NjE3LCA3MTMwMSwgMTI3MjkyLCAzNDczLCA3NzE4LCAxMTM3NTUsIAorICAgIDY2NzQyLCAxMjUxMzksIDU1Mjg1LCA3Mzc4NCwgNjYzOTQsIDAsIDExOTY5LCAxMjA0NjEsIDEyNzg0MSwgNjM2NSwgMTg4NywgCisgICAgNjc2MywgOTI1NTEsIDgwODAsIDcwMDYsIDAsIDkyNzYzLCA2NzU3LCA2NDM1MSwgMTU0NCwgNjcxNTYsIDY3NjYsIDY0Njc3LCAKKyAgICAxMjA3MTYsIDY3MDg4LCA2MTQ2LCA3NDAzMSwgNzcxLCAxMjA2ODIsIDE5NDY1MCwgMTI4MTIsIDEzMTY4LCA0MjI3MiwgCisgICAgMTIyMDAsIDY2NDIzLCA3OTA0LCAxMjg3MTUsIDk1MywgMTI5MTcsIDcyNzA0LCAxMjMwMCwgNjcwODksIDExNDkxLCA5NzI0LCAKKyAgICAxMDM0MSwgOTgzNzczLCA5NTI0LCA3NDkwLCAxMTM4OSwgNzQ4OSwgMzM3OSwgMTI4Nzc1LCA3NDg3LCA3MjcxNiwgNDcxLCAKKyAgICA3NDg0LCA3NDgyLCA2NzUzLCA3NDgwLCA1NzY0LCA3NDc4LCA3NDc3LCA2NTAxLCA3NDc1LCA2OTE4LCA3NDczLCA3NDcyLCAKKyAgICAyNDc0LCA3NDcwLCA3NDY4LCAxMDIzMiwgMTA2MTUsIDEwMjEzLCAxMjcyODgsIDkyMzU3LCAxMDA0OSwgMTE4MzQsIDM1NDQsIAorICAgIDk4MzM5MCwgNjAxNywgNjUzMTEsIDc0OTM1LCAxMjAyMTYsIDEzMzA2LCAxMDUzMywgNzg3MCwgNzM5NDksIDc2MjUsIAorICAgIDEwMDkzNiwgMTIwNTQ0LCAwLCAxMjc5NTAsIDkyNjYwLCA5ODMzNTYsIDc3ODg5LCAwLCAxOTk2MSwgMjQ3MiwgNDI2NjUsIAorICAgIDkyMzQxLCAxMjExMzMsIDIxMzksIDQyNTYsIDEyMDc3NiwgNzQzODAsIDQzODM2LCA0MjY3NSwgNDI2NTgsIDEyODQ1LCAKKyAgICA2NjY2LCA3MDUwOCwgNjUxMzgsIDExOTM1NSwgNjc4NjIsIDAsIDY1NjcxLCA3MDgzLCAxMjAwMDgsIDgwNjYsIDc2NzgsIAorICAgIDc0ODY1LCAxMjUxMzQsIDEyMDMyMSwgMTI3MjgzLCAxMjc4NzIsIDcxODYsIDcyNzUxLCAxMjA1NTUsIDcyNzYzLCA0NDUsIAorICAgIDExOTAyOCwgNjY4NDksIDEyNTAzMSwgOTE3ODQwLCA4MzMwLCAwLCAxMjUwMTgsIDQyNzk3LCAxMTM3MzYsIDEyMDIxNSwgCisgICAgODMwMDEsIDM5MDIsIDAsIDE3NzAsIDQzOTU5LCAxMDEwMzksIDE1NjAsIDQzOTU4LCA5MjE2NywgNDU4NCwgNzM4NDMsIAorICAgIDEyMjkxMSwgMTE3MTIsIDEwODY2LCA2NzA5MiwgMTExOCwgNzEzMzQsIDc0ODg4LCA5ODM0NzYsIDEwODEsIDc0MzYsIAorICAgIDExMTQ3LCA3MjUyLCA3MDA5MywgNTk5NiwgNjk5MjEsIDQ5MDMsIDY4MTQyLCA0MTM4NiwgNTE2MiwgMTE5MTg5LCAxMzMwLCAKKyAgICAxMjY2MDAsIDcxMzksIDAsIDEyMDQ3LCA3Njc1LCA5ODM4NDcsIDEyODc5NywgMTg0OCwgNDMzNCwgNjMyNCwgNDE5NzUsIAorICAgIDY0Nzc3LCAxMDY3NCwgMTIzMDgsIDEyMTg2LCAwLCAxMTM3OTUsIDcyODA3LCAxMjcxNSwgNjgwMDIsIDE5NDU3NiwgCisgICAgODMyNTYsIDIwMTgsIDY2NjcyLCA0MTk3OSwgNjY2ODUsIDExOTE1NywgNjgwMDAsIDc4NDkwLCAxMjkxNDAsIDEyNjk4NCwgCisgICAgNjgwMDEsIDkzMzQsIDkyNzA1LCA3MDgwMCwgNzAxMDEsIDc5NzUsIDEwMDkxMCwgNzc5NTcsIDkyMTQsIDQzNDk0LCA0ODg0LCAKKyAgICA2NjU5NywgNjk3MzIsIDAsIDkyOTU4LCA2MzEzLCA2NTUxMywgNjk4NTcsIDEwMDkwOCwgMTI3Nzk5LCAxMjg3NTcsIDIzNDUsIAorICAgIDQzNjk3LCA0NjMsIDAsIDEyMTI4MSwgNjgxNzgsIDMxMTcsIDU0NjAsIDEyMTQyMywgMTI3OTU1LCA5ODMzODksIDAsIAorICAgIDQyMjc5LCAxMjcxNDIsIDEyNjUwMywgNzg0MTUsIDk4MzIyOCwgODIyMSwgOTgzMzg2LCAxMzI0OCwgMTI1MDI3LCAKKyAgICA5ODM4NDMsIDQzOTU2LCAxMjg0MTUsIDEyOTA5MywgMTIxMDA5LCA1NjYzLCA3MTEyMCwgMTI4NDcyLCAxMjg5NTgsIAorICAgIDEyNzg1NCwgMjQ4MiwgMTQ3MSwgMTk0NTgzLCAxMTM3NDcsIDQyMjQ3LCAxMjM3OCwgNzM5MjUsIDY5NjY0LCA3MTQyNywgCisgICAgMTIzNzQsIDEyMTM1NywgMTI3MDY3LCAwLCAxMTg4MjgsIDI0NjAsIDcxODgyLCAxMTk0NCwgMTIzNzYsIDkyMzQyLCAKKyAgICA2NDY3OSwgOTI4OTMsIDEyMzgwLCAxMDU1NywgNjQ0NzMsIDU4NzAsIDExMTIyLCAyMDI0LCAxMjcxODAsIDk4MzM5MSwgCisgICAgNzE4NzksIDUzOSwgMTAwOTMzLCAxMDA5MzIsIDcwMTIwLCAzODUzLCA2NTE4MCwgNzI3MzAsIDEwMDkzOSwgMTAwOTM4LCAKKyAgICA5MjMyNCwgOTgzNzQyLCA4NjU5LCAwLCAxMjQ3NCwgNjcyNDEsIDk1MDMsIDEwMDk0MSwgMjQ3OCwgMTAwOTQzLCA0MTYyLCAKKyAgICAxMDA5NDUsIDQyNjAsIDEyOTUzLCA2OTYzMywgODI5NjYsIDEyNDcwLCA5MjY0MCwgNzQxODksIDI3NDIsIDEyNDc2LCAKKyAgICAxMTc5OCwgMTA5NDYsIDEyNzMxMCwgNTAwMCwgMTEzNjg3LCA5ODM1NzksIDEyODE5MCwgNjk2NzIsIDgyMTMsIDQzODI0LCAKKyAgICA3NzcxLCA2MTYxLCA2ODAxOCwgNjcwOSwgOTIyNDksIDc4ODg1LCAxMTkyNDMsIDY4MjM1LCA4MzM4OCwgNzg1NDcsIAorICAgIDEwMDkyMSwgMTAzMDEsIDEwMzMzLCAxMDM5NywgMTAwOTI1LCAxMDA5MjgsIDczNzkxLCAxMjAyMzgsIDgzMDMwLCAwLCAKKyAgICAxMjE0ODIsIDExOTEyMywgNDAxNCwgMTI4NDIsIDczOTUyLCAxMjAxNSwgMTI3MjkwLCA4Mjc1LCAzODkzLCA3NDkwMywgCisgICAgMTIwOTI3LCAxMjIxMCwgNzIyMSwgNDIxNDcsIDc0ODY4LCA3NDU1MCwgNzEyMTUsIDY0NzQ3LCAxMDA5MTksIDEyODA4NiwgCisgICAgMTI1MTYsIDQ0NDQsIDAsIDkyMjcxLCA3NDUzNywgMTA4OTIsIDgyMzEsIDAsIDY0NzMsIDQxOTY4LCA3ODM4OCwgNDE5NzMsIAorICAgIDM1OTEsIDQxOTY5LCA4MzAwOCwgMjQ1MywgMTE4ODk5LCA5MjY2NiwgNjQ3MDUsIDcxMDY4LCAwLCAxMDM0OSwgMTA0MTMsIAorICAgIDQzNTkxLCA0MTk2MiwgMzIwMiwgNzQzNTMsIDEyOTE3NSwgODMxNiwgMTI5MTc0LCAwLCA5NDA2MCwgNjg3LCA5MzA1NSwgCisgICAgMTAwNzA1LCAwLCAxODQwLCAxMjEyMjQsIDY4NjcxLCAxMTEyMSwgNDg4MywgMjg1LCA0NzIzLCAxMTE3NSwgOTI2OTIsIAorICAgIDQ0NTksIDc0NTc3LCA0MjkyMSwgNDE3MjAsIDExMDg5LCAyNDAsIDE5OTA2LCA5MTc3NzAsIDQyMzIzLCA3NDY0MCwgOTc0MywgCisgICAgMTIwMjMyLCAxMzEzNCwgOTMwNjUsIDEyODk1NiwgNjU5MzEsIDkyNTc5LCAxMjgzMjksIDQyNjM0LCA5ODMzNDUsIDQzNDM3LCAKKyAgICAzMDgxLCAxMTQ2MywgMTIwMTU0LCAwLCAxOTQ1NjcsIDEwNDQ1LCAxMjEzMjIsIDkyOTY5LCA2NjcxNywgMjYxNCwgOTEyNSwgCisgICAgNzExMjUsIDE3MjksIDEyOTAzNCwgNzI0MjAsIDY1MjIxLCA2Mzg4MywgNDMzMzQsIDY0ODUyLCAxMDA5MTUsIDY1MTk0LCAKKyAgICA2NjIwMSwgMTAwOTE2LCA2NjU3OCwgNTAwMSwgNDE4NzksIDc0NDI3LCA0MTIxLCA1MDAzLCA4ODQsIDY2NzAwLCA2Mzg3OSwgCisgICAgNDk0MywgNTE1MCwgNzM4ODksIDczNzY0LCA0MDM5LCA2NDMsIDMwODYsIDkyNTMzLCA0MjQ0OCwgNDIyOTksIDU4LCAKKyAgICAxMjAwODQsIDEwMDM1NSwgMTAxMDI2LCA2Mzg3MywgODQ5MSwgMTk0NjQzLCAxMDA4OTEsIDk4MzYyMywgNDUzMCwgNDI0MDksIAorICAgIDcxMjYsIDEwMDg5NCwgMjcyMSwgMTIwMDczLCAxMTkwOTYsIDE5OTI5LCAxMTg5NDEsIDEyNzMyNiwgOTI5NzUsIDQyNDIsIAorICAgIDQyNjQsIDEyMDA3NywgMTAwOTAyLCA2NjE3OSwgNDI0MTIsIDY1OTQxLCAxMzExNCwgNjQ1MjIsIDEwNzQwLCAzMDk0LCAKKyAgICAxMjAyMjUsIDk3NTQsIDExOTEwMiwgNDQzNywgNzM5NDgsIDEyNzA3NCwgMTE5MTg2LCA1NTI4MCwgNDIxNzQsIDEyNzk1NCwgCisgICAgNDI0MzAsIDEyNzgzNSwgOTgzNDUyLCA0MjM1NSwgNjYwMjYsIDQzMDYsIDQxMzgwLCA2ODQzMiwgOTI1ODYsIDY4MzE0LCAKKyAgICA2NjY2NywgMTE5MzUxLCAxMDA2NzcsIDEyMTE3MiwgNDIyMDAsIDQyNTY2LCA3MDAwMCwgMTAwODgxLCA1MDg4LCA2OTQ4LCAKKyAgICAwLCA4NTI0LCA3MjczNiwgMCwgMTIzODUsIDkxNzg1NSwgNzQ5MjYsIDY5NjQ2LCAxMzg2LCA2NDU4MCwgMTE0ODAsIDYxMTYsIAorICAgIDY1MDM5LCA2NTAzOCwgMTIzOTIsIDY1MDM2LCA4MDY0LCAxMjc1NTgsIDEyMTAxLCA1ODIyLCAxMTkwMDQsIDIwODAsIDcxMCwgCisgICAgNzc5OTksIDExNjYzLCAxNjY2LCA0MjA5MSwgNzQwNjcsIDEyMzgzLCA0MzY3MSwgNDIwOTIsIDY4NDE4LCA0Mjg5LCAKKyAgICAxMDA4ODUsIDYzODk2LCAxMjA2MSwgNDIwOTYsIDQzNjIxLCAzMzYyLCAxMjM3NywgMTE5OTM0LCAxMjg1ODYsIDY4NDQ5LCAKKyAgICA3NDYxLCA3MzkwMSwgMTI0NCwgMzMxLCA3Mzc4NiwgMTI2ODMsIDEwNjYyLCAxMjg3NzgsIDgxMTIsIDAsIDY1ODUyLCAKKyAgICA3NDYyOSwgMTIzNzksIDEyNzEwNywgOTI5MzAsIDQxOTY0LCA0MjIwOCwgNjM4NDMsIDIwODQsIDQxOTY1LCA3MDA4OSwgCisgICAgNjU4NjYsIDQzMjcsIDYzODQ4LCA2Mzg0MCwgNjY0MTMsIDQxMjIwLCAxMzAzMiwgOTI5ODAsIDU4NCwgMTI5MzMsIDQzMTc3LCAKKyAgICAxMjM3MywgNjk4NTUsIDEzMDAwLCAxMzUxLCAyOTM1LCA4Njk4LCAxMjY2NSwgMTAwODc3LCAxOTMwLCAxMDA4NzksIAorICAgIDc4MjI5LCAxMjQyNywgNjY1MTQsIDY5ODU5LCAxMzAzMSwgMTAwNTcxLCA2MzkwMSwgMTAwNTg3LCAzNjU3LCAxMTk2MTEsIAorICAgIDY1MjAyLCA2MDAwLCAxMTM3ODYsIDEyNDI2LCAxMjEwNTgsIDc0MDEzLCA0MTc0MCwgMTI0MjgsIDQxMjgzLCA0MTkxNiwgCisgICAgMTE5MjEwLCAxMjgzMTgsIDAsIDEyNDI5LCA2NzI3LCAxMDA4NzMsIDc1NjIsIDEwMDg1MywgNTE3MCwgNzgyNDksIDQxNzU1LCAKKyAgICA2NzYsIDEwMDg1NiwgNjY3MDQsIDY2NjY0LCA5OTc4LCA2NjQ5MSwgMzUzNiwgODMwNDcsIDk3NTIsIDkyMzk3LCA2MTYyLCAKKyAgICA3ODMyMCwgNjkyMjgsIDEwMTEzLCA0MTgyOSwgNjU4ODYsIDUxNTksIDEyNDIyLCA0MTgzMiwgNDM5LCAzMDcyLCA5MTc4MjgsIAorICAgIDQyMjA3LCA3NDU0OSwgMTE3OTYsIDQwOTcwLCA0MTgzMCwgMTI1MDIxLCA3MDE1MSwgODMwOCwgMTAwNjk0LCA3MDgwNywgCisgICAgMTE5MjU4LCA2Nzg2NCwgMTEzNjk2LCA5MTc4MDAsIDEyMzM2LCA0MTM1LCA2NzIzMSwgMzQxLCAyNzI3LCA0MTI5LCAzNTM5LCAKKyAgICAxMDA4NjEsIDYzODYxLCA3MDY4MywgNzkxMywgMTAwNzY2LCA2Mzg1OSwgNDEzMSwgNjM4NjgsIDEwMDM2NiwgNjM4NjcsIAogICAgIDQxMzMsIDExMzcxLCAyMTAsIDQ2MDAsIDk4Mzg5NywgNzQ1NjAsIDQxMzcsIDgwODIsIDc4NTA2LCAxMTkwNjIsIDc4NTA0LCAKICAgICA2NzA0LCA0NTkxLCAxMjgwMjksIDQzODczLCAxMjA3NTMsIDk2ODAsIDEyOTM3LCAxMjA2MjMsIDU2MSwgMTIxNTksIDE5NSwgCiAgICAgNjgzMjEsIDQxNTAxLCAxOTQ1ODEsIDQyMDMxLCA1NzE5LCA3MTcyLCA0MjY4NywgODM2OCwgMTI4MzA2LCA0MTQ5OSwgCi0gICAgOTMwNjgsIDcxMDQ3LCA0MjI0MiwgNDE0OTgsIDkxNzc5NCwgNDIwMjUsIDc4NTY1LCA2NTgwNSwgNDI0NjMsIDY3MTgyLCAKKyAgICA5MzA2OCwgNzEwNDcsIDQyMjQyLCA0MTQ5OCwgMTI4MTc4LCA0MjAyNSwgNzg1NjUsIDY1ODA1LCA0MjQ2MywgNjcxODIsIAogICAgIDI5MjQsIDY3MTgzLCAxMjA1MTAsIDAsIDk4Mzk3MiwgOTI3NjYsIDczOTQxLCA2NzE4NiwgNDIzMzAsIDY3MTg3LCAzOTY5LCAKLSAgICAxMjE0MDUsIDAsIDcxNjksIDE5OTIsIDk2NTIsIDczOTc3LCA3MjQ2LCA0MjA4NiwgMTI2NjE1LCAyMjE5LCAxMjEzNDksIDAsIAotICAgIDEyODgwMSwgNjcxODAsIDEyNzU2OSwgMzI3LCAxMjEyNzcsIDkwNDIsIDkxNzc3NywgOTE3Nzc2LCA2NTE0OCwgMTI0MzMsIAotICAgIDkxNzc4MSwgMTIwMjIyLCA4MzEyOSwgMTI0MzEsIDg2NjgsIDEyNDM0LCA2NzE5NCwgMTEzODEyLCA1OTk5LCA3NTAxMywgCi0gICAgNzcxMiwgMTI0MzIsIDEyODI0MywgNDM2NTMsIDE3MjYsIDEwMTUsIDc0MDc5LCA4MjEyLCAxMjgwNjUsIDExMzc1NCwgCi0gICAgNDI0MjMsIDExOTA2NiwgMTk0NjEzLCA3MjM5OCwgNjY3MDksIDEyMTA2MSwgODgxMSwgOTI3LCA5MjUzMiwgMCwgMTI0MzYsIAotICAgIDEyMDA4NywgNDIwMjEsIDAsIDY3NjQ0LCAxMjk5LCAxMjI0MCwgNDIzNTAsIDY1MTQzLCAwLCAxOTUwMTYsIDEyNzk3MiwgCi0gICAgNzgxOTcsIDExMzQ4LCAwLCA3ODAzNywgOTE5NCwgOTgzMTg0LCAwLCAxOTkxNCwgMTIxNzksIDEyODc0MCwgMjI5NiwgCi0gICAgMTI4OTMyLCA2MzgzNiwgNjM4MzIsIDkxNzc3MywgMTA5NjcsIDYzODE2LCAyNTk0LCAzNDQ0LCA2MzgxNywgMTExNzgsIAotICAgIDkxNzU4NCwgNDE1MDMsIDEyNzQ3OCwgMTEyNjUsIDY4Mjk1LCAxMjA3NTYsIDE5NDkyMiwgNjcyODUsIDU2NjQsIDM5NzIsIAotICAgIDEyMDg5MSwgMTI4NTgzLCAxMjk0MDgsIDY3Mjg0LCAxMjQxNiwgOTE3NzY0LCAxMTk2MDgsIDEwODE2LCA5MTc3NjksIAotICAgIDExMjEwLCAxMjQxOCwgODU4NiwgMzg4MiwgODUzMiwgOTE3NzcxLCAxNTczLCA2ODA4MSwgMTE5ODQ3LCA0NTk2LCA2NjMzOSwgCi0gICAgMTI0MTcsIDY2MDAxLCA2NTM0MywgMTI2NDkxLCAxMjQxNCwgODI4NywgNjgyMTksIDE5NTAxNywgNjgxMDgsIDExNDMsIAotICAgIDExOTE2OSwgMTE5ODQ2LCAxMjQxNSwgNjYyNiwgNDI3NjMsIDkxNzU5NCwgMTE4ODg0LCA5MDIxLCAxMjA3ODMsIDExOTkzMSwgCi0gICAgMTE3MjQsIDEyNzc4NywgMCwgNzExMjIsIDEyNjYxOSwgMCwgOTgzNjYxLCA4MDI3LCAxMDk5NywgOTE3MSwgMTI3NDEsIAotICAgIDExNDAwLCA0Mzk0MywgMTk0Nzk5LCA2NjgzMywgMTI4MjM5LCA5ODM3MDcsIDkyNTU3LCA5Mzk3NiwgMTI3NTIzLCAKLSAgICAxMjAxOTAsIDEzMjQsIDY3NjA4LCAxMjgyMTQsIDQyMzY4LCA5ODM4NzMsIDc3MTUsIDM4ODEsIDQxNDg3LCAxMjExOCwgCi0gICAgNDI1MTQsIDY4NjUxLCAxMjgyMTAsIDEyODU5NCwgMzAwOSwgNDE0NzYsIDQxNDg5LCA2OTgyNSwgMzAwNywgMTQ0OCwgCi0gICAgMzAxOCwgMTk0ODA5LCAzODg5LCA4NTIxLCA1MDgzLCA1MDgyLCAxMTk4NTksIDc4MjU1LCA4NTE5LCAxMjEyMjYsIDMwMTQsIAotICAgIDUwODEsIDY1ODUzLCAxMjA3MTUsIDE5NDk5MiwgNjgwMTQsIDY5OTUxLCA1MDc5LCA2NDgwMiwgNDIyMTAsIDQ1OTcsIAotICAgIDY1NTMyLCAxMTgyOCwgMTIwMTg1LCAxMjM3MSwgMTExMDUsIDg0MDcsIDY3MTYzLCAxMDgwNSwgODUxOCwgMTA3NzksIAotICAgIDEyMDE4OCwgNzEzMDMsIDEyMTI0MCwgMTIzNjcsIDQyMTcwLCAwLCA2NzI5MCwgNjI5LCAxOTI0LCAxMjcwOTgsIDEyMDM3LCAKLSAgICA2NzE1OCwgNTk4NywgODQ2MiwgODAwNSwgMTIzNjUsIDYzOTMzLCA2OTczNSwgMTIwODE1LCAxMjM2OSwgMTA2NDksIAotICAgIDY3OTgxLCA1MDc3LCAxMjAxNzQsIDEwODgwLCA2MzkyNywgNTA3NSwgMTIxMTA5LCAxMjczMDAsIDY1MDc1LCAwLCAxMTAwNywgCi0gICAgNzA4NTEsIDY2NjU5LCA5MjYwNywgOTE3OTMzLCA2NjY4NCwgMTI4MDYzLCAzNDM0LCA0OTU0LCAxOTA0LCA5MjY3OSwgCi0gICAgNTI2NiwgMTI2OTgwLCA1MjcyLCAxMDQ5OSwgNDUwNywgOTU3OCwgNjM5MjMsIDEyMDE3NywgNzk3OSwgMCwgOTgzMSwgMCwgCi0gICAgMTk0OTI2LCA0NjEsIDk4MDMsIDQyMjgyLCA0NTA0LCAxNTA1LCAxMjc4OTMsIDYzMjUsIDUyNzYsIDQzMDIxLCAxMjA0ODgsIAotICAgIDAsIDU1MjM2LCA5MjY1OSwgNjY0NjEsIDUxNzcsIDQxMzI0LCAxMjA1NSwgODcyMiwgMTIwODA1LCA0MTMyNywgOTgzNzMyLCAKLSAgICA2NjY5NSwgNDExNCwgNDA5LCA0MzgzLCA4OTAwLCA4OTQ4LCA0MTMyNSwgNzQ5MzAsIDcyMSwgMTAxODIsIDkxMDgsIAotICAgIDcxMzExLCAwLCAxMTkxODUsIDQyMjI5LCA3NDk2MywgMTIxMDE0LCA1OTk4LCAwLCA0MjM1MywgNzQ4MjUsIDAsIDEyNTg3LCAKLSAgICA5NDEwNCwgNzg1NzEsIDc0ODg5LCA3MTMyOCwgMTI4OTU1LCA0MTU3NiwgNDIyMTUsIDc4NTcwLCA3NDAzNywgMCwgODU3OCwgCi0gICAgNTk5NSwgNzU3MywgNDE1NzUsIDc0Nzg5LCA3NDc1MiwgNjM5NDQsIDYzOTQ5LCA2NDc2NywgMjY3MCwgNDE2NywgMTk0Nzk2LCAKLSAgICAxMTcyMywgMCwgNzQxMjAsIDEyNjY0MiwgNjUwNzYsIDkzOCwgNDM0MTQsIDczODU0LCAxMTczNywgOTcyMSwgMCwgNjcxNzksIAotICAgIDY3MTY4LCAxMTc0MiwgMjQxOSwgNjcxNzcsIDExNDkzLCAxMjMzNCwgOTI0OTQsIDQxNTMsIDEyMzAyLCAxMDc5MywgNTI1MCwgCi0gICAgMTI0MDcsIDExOTc4LCA0NDA0LCA5MTg5LCAxMjQwMSwgNDIwMDcsIDU3NzUsIDY3NTksIDY1ODA2LCA0Mzk5NywgMCwgCi0gICAgNDIwMDIsIDEyNDA0LCA2ODA5MiwgNzQ5MjgsIDQ5NDAsIDEyNDEwLCA3NjgzLCAxMTY3LCA3MzcyOSwgNDk4MywgMTIwNTA3LCAKLSAgICA4NjEsIDY3Njk5LCA3NDg4MCwgNjgyOTcsIDk4MzgwNywgNDM3NTcsIDQzMzcwLCAxMjkyOTgsIDAsIDExOTU2LCAxMjQ5NjcsIAotICAgIDEyMTI2MywgNzA4MTUsIDk2MTYsIDY2MzEsIDkyMzM4LCAxMjgxNiwgNDM3NTksIDQyMjE4LCAxMjcxMCwgNjg2NzQsIAotICAgIDEyNzIxLCA0MTAxLCA2NjE4NSwgMCwgNTk5MiwgNzYxNiwgMTk1MDQ0LCAwLCAxMjU3NywgOTMwMTcsIDEyODI4OSwgODUzLCAKKyAgICAxMDEwNzIsIDk4Mzk2MSwgNzE2OSwgMTk5MiwgOTY1MiwgNzM5NzcsIDcyNDYsIDQyMDg2LCAxMjY2MTUsIDIyMTksIAorICAgIDEyMTM0OSwgMCwgMTI4ODAxLCA2NzE4MCwgMTI3NTY5LCAzMjcsIDEyMTI3NywgOTA0MiwgMTIwODQzLCA5MTc3NzYsIAorICAgIDY1MTQ4LCAxMjQzMywgOTE3NzgxLCAxMjAyMjIsIDc0MjA2LCAxMjQzMSwgODY2OCwgMTI0MzQsIDY3MTk0LCAxMTM4MTIsIAorICAgIDU5OTksIDc1MDEzLCA3NzEyLCAxMjQzMiwgMTIwODg1LCA0MzY1MywgMTcyNiwgMTAxNSwgNzQwNzksIDgyMTIsIDEyODA2NSwgCisgICAgMTEzNzU0LCA0MjQyMywgMTE5MDY2LCAxOTQ2MTMsIDcyMzk4LCA2NjcwOSwgMTIxMDYxLCA4ODExLCA5MjcsIDkyNTMyLCAKKyAgICA5ODM2MzcsIDEyNDM2LCAxMDEwNTYsIDQyMDIxLCAxOTQ2MTAsIDY3NjQ0LCAxMjk5LCAxMjI0MCwgNDIzNTAsIDY1MTQzLCAKKyAgICAxMDEwNTgsIDE5NTAxNiwgMTAwNTY2LCA3ODE5NywgMTEzNDgsIDAsIDc4MDM3LCA5MTk0LCAxMDA4NzAsIDAsIDE5OTE0LCAKKyAgICAxMjE3OSwgMTAwNTY5LCAyMjk2LCAxMDA1OTYsIDYzODM2LCA2MzgzMiwgNzI3OTMsIDEwOTY3LCA2MzgxNiwgMjU5NCwgCisgICAgMzQ0NCwgNjM4MTcsIDExMTc4LCA5MTc1ODQsIDQxNTAzLCAxMjAwODcsIDExMjY1LCA2ODI5NSwgMTIwNzU2LCAxMDA2MDAsIAorICAgIDY3Mjg1LCA1NjY0LCAzOTcyLCAxMDA5ODUsIDEyODU4MywgMTI5NDA4LCA2NzI4NCwgMTI0MTYsIDkxNzc2NCwgMTE5NjA4LCAKKyAgICAxMDgxNiwgMTI3Mjg5LCAxMTIxMCwgMTI0MTgsIDg1ODYsIDM4ODIsIDg1MzIsIDkxNzc3MSwgMTU3MywgNjgwODEsIAorICAgIDExOTg0NywgNDU5NiwgNjYzMzksIDEyNDE3LCA2NjAwMSwgNjUzNDMsIDEyNjQ5MSwgMTI0MTQsIDgyODcsIDY4MjE5LCAKKyAgICAxOTUwMTcsIDY4MTA4LCAxMTQzLCAxMTkxNjksIDExOTg0NiwgMTI0MTUsIDY2MjYsIDQyNzYzLCA5MTc1OTQsIDExODg4NCwgCisgICAgOTAyMSwgMTIwNzgzLCAxMTk5MzEsIDExNzI0LCAxMjc3ODcsIDEyMDE5MSwgNzExMjIsIDEyNjYxOSwgMCwgOTgzNjYxLCAKKyAgICA4MDI3LCAxMDk5NywgOTE3MSwgMTI3NDEsIDExNDAwLCA0Mzk0MywgMTAwNjc0LCA2NjgzMywgMTAwODA1LCAxMjc3NzksIAorICAgIDkyNTU3LCA5Mzk3NiwgMTE5ODQ0LCAxMjAxOTAsIDEzMjQsIDY3NjA4LCAxMjgyMTQsIDQyMzY4LCAxMDEwNjIsIDc3MTUsIAorICAgIDIyNzEsIDQxNDg3LCAxMjExOCwgNDI1MTQsIDY4NjUxLCAxMjgyMTAsIDEyODU5NCwgMzAwOSwgNDE0NzYsIDQxNDg5LCAKKyAgICA2OTgyNSwgMzAwNywgMTQ0OCwgMzAxOCwgMTk0ODA3LCAzODg5LCA4NTIxLCA1MDgzLCA1MDgyLCAxMTk4NTksIDc4MjU1LCAKKyAgICA4NTE5LCA3MjcxMSwgMzAxNCwgNTA4MSwgNjU4NTMsIDEyMDcxNSwgMTk0OTkyLCA2ODAxNCwgNjk5NTEsIDUwNzksIAorICAgIDY0ODAyLCA0MjIxMCwgNDU5NywgNjU1MzIsIDExODI4LCAxMjAxODUsIDEyMzcxLCAxMTEwNSwgODQwNywgNjcxNjMsIAorICAgIDEwODA1LCA4NTE4LCAxMDc3OSwgMTAwODAxLCA3MTMwMywgMTIxMjQwLCAxMjM2NywgNDIxNzAsIDEyODIxNSwgNjcyOTAsIAorICAgIDYyOSwgMTkyNCwgMTI3MDk4LCAxMjAzNywgNjcxNTgsIDU5ODcsIDg0NjIsIDgwMDUsIDEyMzY1LCA2MzkzMywgNjk3MzUsIAorICAgIDEwMDg4OCwgMTIzNjksIDEwNjQ5LCA2Nzk4MSwgNTA3NywgMTIwMTc0LCAxMDg4MCwgNjM5MjcsIDUwNzUsIDEyMTEwOSwgCisgICAgMTI3MzAwLCA2NTA3NSwgMCwgMTEwMDcsIDcwODUxLCA2NjY1OSwgOTI2MDcsIDEwMDYwNywgNjY2ODQsIDEyODA2MywgCisgICAgMzQzNCwgNDk1NCwgMTkwNCwgOTI2NzksIDUyNjYsIDEyNjk4MCwgNTI3MiwgMTA0OTksIDQ1MDcsIDk1NzgsIDYzOTIzLCAKKyAgICAxMjAxNzcsIDc5NzksIDAsIDk4MzEsIDAsIDEyMDU4OSwgNDYxLCA5ODAzLCA0MjI4MiwgNDUwNCwgMTUwNSwgMTI3ODkzLCAKKyAgICA2MzI1LCA1Mjc2LCA0MzAyMSwgMTIwNDg4LCAwLCA1NTIzNiwgOTI2NTksIDY2NDYxLCA1MTc3LCA0MTMyNCwgMTIwNTUsIAorICAgIDg3MjIsIDEyMDgwNSwgNDEzMjcsIDEyOTMzMiwgNjY2OTUsIDQxMTQsIDQwOSwgNDM4MywgODkwMCwgODk0OCwgNDEzMjUsIAorICAgIDc0OTMwLCA3MjEsIDEwMTgyLCA5MTA4LCA3MTMxMSwgMCwgMzQxOSwgNDIyMjksIDc0OTYzLCAxMDA2MjcsIDU5OTgsIDAsIAorICAgIDQyMzUzLCA3NDgyNSwgMCwgMTI1ODcsIDk0MTA0LCA3ODU3MSwgNzQ4ODksIDcxMzI4LCAxMDA2MjksIDQxNTc2LCA0MjIxNSwgCisgICAgNzg1NzAsIDc0MDM3LCAwLCA4NTc4LCA1OTk1LCA3NTczLCA0MTU3NSwgNzQ3ODksIDc0NzUyLCA2Mzk0NCwgNjM5NDksIAorICAgIDY0NzY3LCAyNjcwLCA0MTY3LCAxOTQ3OTYsIDExNzIzLCA5ODM0MzksIDc0MTIwLCAxMTkwMDAsIDY1MDc2LCA5MzgsIAorICAgIDQzNDE0LCA3Mzg1NCwgMTE3MzcsIDk3MjEsIDk4MzI2MiwgNjcxNzksIDY3MTY4LCAxMTc0MiwgMjQxOSwgNjcxNzcsIAorICAgIDExNDkzLCAxMjMzNCwgOTI0OTQsIDQxNTMsIDEyMzAyLCAxMDc5MywgNTI1MCwgMTI0MDcsIDExOTc4LCA0NDA0LCA5MTg5LCAKKyAgICAxMjQwMSwgNDIwMDcsIDU3NzUsIDY3NTksIDY1ODA2LCA0Mzk5NywgMTIyOTIyLCA0MjAwMiwgMTI0MDQsIDY4MDkyLCAKKyAgICA3NDkyOCwgNDk0MCwgMTI0MTAsIDc2ODMsIDExNjcsIDczNzI5LCA0OTgzLCAxMjA1MDcsIDg2MSwgNjc2OTksIDc0ODgwLCAKKyAgICA2ODI5NywgOTgzODA3LCA0Mzc1NywgNDMzNzAsIDEyOTI5OCwgMTI4MzA3LCAxMTk1NiwgMTI0OTY3LCAxMjEyNjMsIAorICAgIDcwODE1LCA5NjE2LCA2NjMxLCA5MjMzOCwgMTI4MTYsIDQzNzU5LCA0MjIxOCwgMTI3MTAsIDY4Njc0LCAxMjcyMSwgNDEwMSwgCisgICAgNjYxODUsIDk4MzI2OSwgNTk5MiwgNzYxNiwgMTk1MDQ0LCA5ODMzOTIsIDEyNTc3LCA5MzAxNywgMTAwODgwLCA4NTMsIAogICAgIDQyNjkzLCAxOTQ2NDcsIDExOTAyNywgOTgzMjg0LCA1MDE2LCA0MzUzNSwgNjM4OTMsIDQyODM1LCA5NDkxLCA5MTc5MTMsIAotICAgIDAsIDkxNzkxNCwgMCwgMTI3MTIsIDcxMDUsIDEyNzgwNywgNjUwNjAsIDY2ODc1LCA5OTAwLCA3NzUwLCA5MTc5NDYsIAorICAgIDEwMDg3NSwgOTE3OTE0LCAwLCAxMjcxMiwgNzEwNSwgMTI3ODA3LCA2NTA2MCwgNjY4NzUsIDk5MDAsIDc3NTAsIDkxNzk0NiwgCiAgICAgMTI3ODk2LCA3NDYxOSwgMTE5MjY1LCA5ODM1ODcsIDY0Nzc4LCAxMjU4NSwgMTA1NjUsIDEyODE1MSwgMTIxNzcsIAotICAgIDExOTg0MywgOTgzMjYwLCAwLCA3NzgyNCwgMCwgNDkwMCwgMTI3ODc0LCAxMjg3OCwgOTI2MzAsIDg5ODQsIDQxMTksIAorICAgIDExOTg0MywgMTE4ODkxLCAwLCA3NzgyNCwgMCwgNDkwMCwgMTI1MjQ1LCAxMjg3OCwgOTI2MzAsIDg5ODQsIDQxMTksIAogICAgIDc0NzY4LCA4OTcxLCA3ODU5MywgNDMxMTMsIDk3MDIsIDY2ODUyLCAxMTAyNSwgOTI0NSwgMTMwNDgsIDQ5MjcsIDQxMzgsIAotICAgIDc0MTg1LCA5MjQ4MSwgOTI3MTAsIDEyMzk3LCA3NzgyNywgMTE5MDQwLCAxMzA1NCwgMTIzOTQsIDAsIDAsIDE5NDk1NCwgCi0gICAgMTMwNTMsIDExODk3NCwgMzk0OCwgMTA3ODEsIDE1NDYsIDAsIDUwMTAsIDE2ODAsIDEwNTA3LCA3ODU5MCwgNzg1ODMsIAotICAgIDkyNDMxLCAxMjEwMzcsIDEyNjY0NCwgMTk0OTE1LCA3MjY3LCAxMjc0NzksIDc0ODMzLCAxMjgxODEsIDU5OTMsIDI4MTksIAotICAgIDEyODc4OCwgMTI3MDYsIDcxMDYzLCAxODkzLCA3MjY2LCA2MzkxNSwgNzI2NCwgNzI2NSwgMCwgMTM2MywgOTgzNTgwLCAKLSAgICA0MjkyMywgNjM5MTAsIDYzOTk2LCAzMDc3LCAxMjAwMTgsIDAsIDE1MTIsIDY5OTI5LCAxMjU4OSwgNDE0NzksIDEyODMxMywgCi0gICAgNzEwNDgsIDQzMzM5LCA3Mzc3NiwgOTgzNiwgMTIwNzI3LCA5ODM5MDksIDQxNDgxLCA0MzMzNSwgNzgzMiwgNDIzNDMsIAotICAgIDMwOTAsIDQzMzM3LCA4MTcsIDE2NjQsIDE4NTAsIDgzMTc3LCAzMDc5LCAxMTM0MCwgNDI0MDgsIDQyNDQ3LCA3NDkzMiwgCi0gICAgNzQwNDQsIDQyMzA3LCAxMjM4NiwgNDIzMDQsIDkxNzU1NSwgODM0MjgsIDEyMzg5LCAxMjEwNzksIDkyMzY2LCA0MTk5NiwgCi0gICAgMTE1MjYsIDYzOTg1LCA1ODY0LCAxMTQ3LCA0Mzg0OSwgNDI4ODcsIDE5ODcsIDkyNzE4LCA1NDgwLCA3ODU4LCAxMTY1MywgCi0gICAgNDExNiwgMTIzOTEsIDY2MTkzLCAxMjEzODMsIDQ5MzksIDEyMzg0LCAwLCAxMjc3NzgsIDQxNjg2LCA2MzkwNSwgMTE5NjAxLCAKLSAgICA3MDI4NSwgNjczOTgsIDEyODgyMCwgMTI2NDksIDEyMDAyMiwgMCwgODI0NywgNTA3LCA5MSwgMjA0MiwgMTIwNzc1LCAKLSAgICA0MzY0MywgMTIxNDQ1LCA2NjAyOCwgMTAwMzYsIDQxODQ0LCAxMTk4MTMsIDc3NCwgMTE5ODI5LCA3Nzg0MCwgMTE5ODE1LCAKLSAgICA1OTk0LCAxMjUzOSwgMCwgNzgzNzUsIDEyMDU5NywgMTE5ODMzLCA5ODMxMDUsIDc4Mzc3LCA5ODMyMzcsIDkxNzYyOCwgCi0gICAgNzcxOSwgNjAyNiwgMjQ4NiwgMTI4MzEyLCAxMTk4MDgsIDE2MiwgMCwgNjUyMTksIDQxMDczLCA5Njg3LCA0MTY4MSwgCi0gICAgNjMwNCwgMTE5ODEyLCA2NjE5NiwgMTk0ODgxLCA1MjYyLCAwLCA1NTIzMywgMTI2ODEsIDQyMzc5LCAwLCA3NTM0LCAKLSAgICAxMjIxOSwgMjIyNiwgNzA0OTksIDQyODEwLCAxMDQ5MiwgMTIxNTEwLCAxMjExNDgsIDEyMTUwOSwgNDMxMTksIDAsIAotICAgIDc4NTM3LCAxMjQwMywgMjUwMCwgNzAxNDUsIDgzMjQ2LCA0ODk5LCAxMjcyOSwgOTgzMzk5LCAxOTQ2MTksIDc0MTEzLCAKKyAgICA3NDE4NSwgOTI0ODEsIDkyNzEwLCAxMjM5NywgNzc4MjcsIDExOTA0MCwgMTMwNTQsIDEyMzk0LCA2NjE4MiwgMCwgCisgICAgMTk0OTM3LCAxMzA1MywgMTE4OTc0LCAzOTQ4LCAxMDc4MSwgMTU0NiwgMCwgNTAxMCwgMTY4MCwgMTA1MDcsIDc4NTkwLCAKKyAgICA3ODU4MywgOTI0MzEsIDEyMTAzNywgMTI2NjQ0LCAxOTQ5MTUsIDcyNjcsIDEyNzQ3OSwgNzQ4MzMsIDEyODE4MSwgNTk5MywgCisgICAgMjgxOSwgMTI4Nzg4LCAxMjcwNiwgNzEwNjMsIDE4OTMsIDcyNjYsIDYzOTE1LCA3MjY0LCA3MjY1LCA5ODM2NzMsIDEzNjMsIAorICAgIDk4MzU4MCwgNDI5MjMsIDEzMTA5LCA2Mzk5NiwgMzA3NywgMTIwMDE4LCAwLCAxNTEyLCA2OTkyOSwgMTI1ODksIDQxNDc5LCAKKyAgICAxMDEwMzEsIDcxMDQ4LCA0MzMzOSwgNzM3NzYsIDk4MzYsIDExOTYwNywgOTE3ODE3LCA0MTQ4MSwgNDMzMzUsIDc4MzIsIAorICAgIDQyMzQzLCAzMDkwLCA0MzMzNywgODE3LCAxNjY0LCAxODUwLCA4MzE3NywgMzA3OSwgMTEzNDAsIDQyNDA4LCA0MjQ0NywgCisgICAgNzQ5MzIsIDc0MDQ0LCA0MjMwNywgMTIzODYsIDQyMzA0LCA5MTc1NTUsIDgzNDI4LCAxMjM4OSwgMTIxMDc5LCA5MjM2NiwgCisgICAgNDE5OTYsIDExNTI2LCA2Mzk4NSwgNTg2NCwgMTE0NywgNDM4NDksIDQyODg3LCAxOTg3LCA5MjcxOCwgNTQ4MCwgNzg1OCwgCisgICAgMTE2NTMsIDQxMTYsIDEyMzkxLCA2NjE5MywgMTIxMzgzLCA0OTM5LCAxMjM4NCwgMTIwMTg0LCAxMjc3NzgsIDQxNjg2LCAKKyAgICA2MzkwNSwgMTE5NjAxLCA3MDI4NSwgNjczOTgsIDEwMDg4NCwgMTI2NDksIDEyMDAyMiwgMCwgODI0NywgNTA3LCA5MSwgCisgICAgMjA0MiwgMTIwNzc1LCA0MzY0MywgMTIxNDQ1LCA2NjAyOCwgMTAwMzYsIDQxODQ0LCA3MDY4MCwgNzc0LCAxMTk4MjksIAorICAgIDc3ODQwLCAxMTk4MTUsIDU5OTQsIDEyNTM5LCAwLCA3ODM3NSwgMTIwNTk3LCAxMTk4MzMsIDk4MzEwNSwgNzgzNzcsIAorICAgIDkxNzgyMywgOTE3NjI4LCA3NzE5LCA2MDI2LCAyNDg2LCAxMDEwMTksIDExOTgwOCwgMTYyLCAwLCA2NTIxOSwgNDEwNzMsIAorICAgIDk2ODcsIDQxNjgxLCA2MzA0LCAxMTk4MTIsIDY2MTk2LCAxMTkwODksIDUyNjIsIDAsIDU1MjMzLCAxMjY4MSwgNDIzNzksIAorICAgIDAsIDc1MzQsIDEyMjE5LCAyMjI2LCA3MDQ5OSwgNDI4MTAsIDEwNDkyLCAxMjE1MTAsIDEyMTE0OCwgMTIxNTA5LCA0MzExOSwgCisgICAgMCwgNzg1MzcsIDEyNDAzLCAyNTAwLCA3MDE0NSwgODMyNDYsIDQ4OTksIDEyNzI5LCA5ODMzOTksIDE5NDYxOSwgNzQxMTMsIAogICAgIDIzNDMsIDQxMDMsIDE5OTQ2LCA3NDExMiwgNzc4NTEsIDEzMTEyLCAxMjkwNDYsIDc0ODM0LCAxMjg1OSwgNzAwODcsIAogICAgIDEyMDE0OCwgNjYzNjksIDU4NjEsIDEyNzc1OCwgMTE5OTksIDEyNDAwLCA0MzY0MSwgMTI4MTgzLCAxMjY0NSwgNTE0NiwgCiAgICAgMTEzMjAsIDY4NDEwLCA2NzQ4LCA2NTA0MCwgMTk0Nzg2LCA2NDE4NCwgMTI5NzQsIDY0MTgzLCA2NzYxMywgMTIwNjQ1LCAKLSAgICA1MTQ3LCAxMjUwMTksIDAsIDc0NTI0LCAxMjgzNTYsIDE5MjgsIDAsIDY3NjQ5LCA1OTkxLCAzNDQ1LCA2NzYwOSwgNDk3NiwgCi0gICAgNjQxNzYsIDAsIDY3NjEwLCA4MjQxLCAwLCA3Nzg2OCwgNDIwNiwgMCwgNzg2NjIsIDEyOTAyOSwgMTI4Mjk4LCA2NzI3NywgCi0gICAgMTAxMzgsIDY3MjM4LCAxMjg3ODUsIDg4OTcsIDEyMDIzNCwgMTQyMiwgODM1NywgNDEyNCwgNzc4NjIsIDY1ODM2LCAKLSAgICAxMjA2NDEsIDEyNzkyNiwgNzc4NTksIDAsIDEyMDkzMCwgMTEyMywgOTYzLCA0MTU1MywgMTAxMjAsIDEyNDA1LCAxMjAxNTAsIAotICAgIDkyNjY0LCAzOTgsIDEzMjc4LCA5NzIzLCA2MzY2LCAxMjAzMTEsIDc5NDUsIDEyOTEyNiwgNDQwMiwgOTk3MCwgMTI0MDIsIAotICAgIDkzMDYyLCA0MjM5MiwgMTMwNSwgMTI0MDgsIDkyMzg0LCA0NDAwNywgMTI4NTYzLCAxMjcyMTYsIDQxNDY0LCAxMjQxMSwgCi0gICAgMTI5NjksIDY3MjY4LCA0MTQ2NSwgMTIxMDkyLCA4NTI4LCAxNTc1LCAwLCA2Mzk1NSwgMTY1LCAzMDI0LCA0MTQ2NywgCi0gICAgMTE5MTYzLCA3MDExOSwgOTA5MywgMTI4NTM1LCA2ODMzLCA5MjU3NCwgNjM5NTgsIDAsIDkxNDgsIDk2OTIsIDQwOTYsIDUzLCAKLSAgICA4Mjk2LCA2NzUwLCA2Njg1NSwgMTI4NDEwLCA5NTk0LCAxMjAzMDgsIDEyMDkzOCwgNDM1MjcsIDEyMTE5MiwgNzI3LCAKLSAgICA3NDE5MiwgOTMwNjAsIDU4MDUsIDAsIDY3MjYsIDAsIDQyMTc2LCAxMjM3MCwgMTE2NTUsIDExOTA5NSwgMTA1OTEsIDIyODAsIAotICAgIDk4MzIzNCwgMTIzNzIsIDEyMDY0MiwgMTIwMzA3LCA3MTIwOSwgOTIzNDMsIDk4Mzg3MiwgMTIzNjYsIDEwOTYzLCA2MDY2LCAKLSAgICAxMzI5LCAwLCAzMDUyLCA5MjIwLCAxMjEwNDUsIDY0NDc4LCAxOTQ3MDEsIDEwODAzLCA0MTMyLCAxMjAzMDYsIDY4NDc0LCAKLSAgICA5MjQ3MywgOTgzMjQ3LCAxMjA3MTIsIDc0ODM3LCAxMjAxNTUsIDE0OTksIDAsIDgwNTUsIDQyNzQwLCA2Mzk2NSwgCi0gICAgMTIwMzA1LCA2Mzk2MiwgNzQwNDIsIDg5MjQsIDQzMTIzLCA1OTg4LCAzNjYwLCA2Mzk2OSwgMTE3ODEsIDQyNzE4LCA4Nzg4LCAKLSAgICAxMzU3LCA2NDg1MSwgNjU3NDMsIDkyODk0LCA4Nzc0LCA3MDMzNywgMTI3MDg2LCA5OTQxLCAxMjAxNzIsIDkyNzQ4LCAKLSAgICAxOTMzLCA2OTY1NSwgOTU2NCwgMTIwMDE2LCA5MjQzNSwgNzM4NjYsIDAsIDEyMTI0MSwgMjQ4NywgNjc2MTQsIDMxMjEsIAotICAgIDE4MDQsIDMzMTEsIDY3NjE1LCA3MDA4MSwgNzgzMDIsIDEyMjIwLCA2NzYxNiwgOTI3NjksIDEyMDAyMCwgMTk0NTk0LCAKLSAgICA2ODIwMCwgNjY3NSwgMTI4MTQ0LCAwLCA2NzU5MiwgMTIwNjg1LCAwLCA2NDc3MSwgMTE5OCwgOTEzMiwgMCwgNjQ2MTksIAotICAgIDUxMCwgNjQ2NjMsIDAsIDEyMTUwMCwgNDU2MSwgMjEwMSwgMTM5OCwgOTE3OTcyLCA5MjU1NCwgNzQwMzQsIDQxNTY5LCAKLSAgICA5MjY4NCwgMTE0MDYsIDgxNjcsIDEyMTI3LCAxMjA1MDUsIDg0MCwgOTgzMjgzLCA2OTk5MiwgNzEwMSwgNjk2NywgMCwgCi0gICAgMTk0ODk4LCA5Nzk2LCAxMjcwMDAsIDMzMywgNjk4OTEsIDAsIDgxNDQsIDIxMTcsIDAsIDEyMTE1NSwgMTI0MDYsIAotICAgIDkxNzk3MCwgMTk5MzEsIDY2Mzg4LCA2Njc4LCA3NzY5LCA5ODMxMjQsIDEyNjIxLCAwLCAxMjczNjYsIDEwMjI3LCA0NzY0LCAKLSAgICA0MzEwMSwgOTk4MSwgMCwgNDA5ODYsIDQxMjcsIDY2NDg3LCA5ODM1NzYsIDQyMjAyLCAxMjc1NCwgMTk1MDIxLCA5ODMxOTEsIAotICAgIDAsIDk0MDk3LCA2NzU5NCwgMjA0OCwgMTI5NDQsIDQwNTAsIDY3NTk1LCA5MTc5NjcsIDQzMTAyLCAxMDU4MSwgMTExODQsIAotICAgIDQ1MzMsIDEyNzIxMiwgNzQwMDMsIDY0OTAsIDAsIDEyMDM4LCAwLCAwLCA2ODIyNSwgNjU0NjEsIDk3OTgsIDY5NzA0LCAKLSAgICAxMjg5MTIsIDE5NDgsIDY5ODQxLCAwLCA5NTIsIDEyODIzNSwgMTI1MTA3LCA5ODMzNTQsIDcwMjk2LCA2NDQ5LCA5NDk0LCAKLSAgICAxMjAzMTMsIDAsIDQzMDk4LCA0ODQzLCA4MTQyLCA2NDE2MCwgNDA5OCwgNjQxNzAsIDk4MzM0MSwgMCwgMzQzNiwgCi0gICAgMTE5OTczLCAwLCAxMjgxNywgNjc1OTcsIDY2NzYsIDM5MzAsIDQyNjE1LCA2NjQwNywgNjk5OTEsIDY3NTk4LCAwLCAwLCAwLCAKLSAgICA2NTU5MSwgNDE1ODEsIDY1OTE2LCAxNDUzLCAxOTQ5OTMsIDEyMTQ1OCwgMTI3ODU5LCA4NTAwLCA0MjIyMiwgMTIwMTQyLCAKLSAgICA3Mzc0MywgMTIwNDAwLCA0MzE3LCAxMTU0MywgNjc2NzYsIDY0Njc2LCAwLCAxMjc4MzMsIDY3NjA2LCAxMTkwODMsIAotICAgIDEyMTA4MywgNDIyMTcsIDEzMTAyLCAwLCA2NjAwMywgNjY3MiwgMCwgMCwgNjY4ODAsIDc3OTEyLCA2Mzg0MSwgOTYxMywgCi0gICAgOTAwMSwgNDUyNiwgMTEyNzQsIDY3NjAxLCA2NDUyMCwgNjQyMTAsIDY2NjQsIDc4NzA0LCA0MjA1NiwgMTAyMjgsIDY0OTU3LCAKLSAgICAxMTI4MSwgMCwgMzgwNywgMTQ2OSwgNjY2NDAsIDY1MzgxLCA0MjE5NywgNDk4OCwgNDIzNzIsIDAsIDk1OTgsIDkwNCwgCi0gICAgMzUyLCA0MjIyNSwgMTQ1MSwgODA2MSwgODQ1MywgNDEzNCwgODM0ODUsIDY3MjIzLCA2NjU3NiwgMTI3OTE2LCAxMjc4MzEsIAotICAgIDEwNTIwLCA4NTc1LCA5OTYwLCAxMjAxLCAxMjcyODksIDEyODQ2LCAxMjcyOTEsIDY4MDQwLCAxMTkxOSwgNjQ5NjIsIAotICAgIDEyNzA4MSwgNDM3MzksIDEyNzI4MSwgODUxMSwgOTQ2MCwgODIzLCAxMTU4NywgMTIzMDUsIDAsIDY0Njk1LCAxMjczMDUsIAotICAgIDEyMzg3LCAxMjUzLCAxMzE4MywgNjU3NjYsIDUwMCwgNDI3ODMsIDY1NzY1LCA2NDIwOCwgNjQzNjksIDY1NzYwLCA2NTc2MSwgCi0gICAgNzAzMzQsIDExNjA2LCA2NDc4NCwgMTE3MDIsIDY2NDk4LCA5ODIxLCA2NDMwNCwgMTI3MzY5LCA1MTUyLCAxMTA0OCwgCi0gICAgNzUzMywgNjgzNjYsIDY0NDEwLCA5MjMwNSwgMCwgNDMyMywgNzAyNzYsIDkyNjY5LCA3MTMzMiwgMTIwMTU4LCA0MjU4NywgCi0gICAgNDIyMTQsIDQxMzk0LCAxMTE4OCwgNDc2MywgNDExMiwgMTE4OTM1LCAwLCA1MjYwLCA0MzE0MywgOTQwMzgsIDMyNiwgCi0gICAgMTIwMTMxLCA2ODQyMywgMTE5MjE4LCAxMDc3MSwgMjg3NiwgNzQwNzQsIDkyNTMwLCAxMjg0NjAsIDQxMzk4LCA3MzgyLCAKLSAgICA5ODAyLCAxMjcwNzcsIDEyNzA3NiwgNDUzLCA0MTM5NiwgMTIwNTI0LCAxMzE1OSwgMTIxNDAsIDk1NzIsIDk4MzEzMiwgCi0gICAgNzAwMywgMTk0ODgzLCA0MjMzNCwgNzcwNCwgMTI1MDY5LCAxMjUwMjAsIDQzMTQ0LCA0MTIzLCA4NDk0LCA0MzE0NiwgCi0gICAgOTk3NywgMCwgMTIxMjgzLCA2NTc1OSwgMTA3NjUsIDY0MDYxLCA0NDY1LCA5ODA4LCA2NDA1NiwgNjU1ODIsIDQxMjYsIDAsIAotICAgIDk1MjEsIDk1ODksIDY0NzU1LCAwLCA2NDAyMCwgMTI2NjA0LCAxMDQ2NCwgMCwgOTI5NjgsIDE5NDYxMCwgNjQ1MTQsIAotICAgIDExNTI4LCA2NDAyNCwgMTI4MDcyLCA2NzksIDY0MDEzLCA5ODM1NTUsIDU4NTAsIDc1OCwgNzUzNiwgMTIwNTM4LCA5MjIzNCwgCi0gICAgNDE0NDEsIDEwNjkzLCA2NDAwNiwgNzUwNDQsIDY0MDA1LCA0MDU4LCAxMTkwMTksIDEyNjQ4NywgNjQ2NjAsIDEyODE3NiwgCi0gICAgMTE5MDUwLCAwLCA5ODMwNjksIDExMzksIDQzMjk4LCA2NDAyNywgNjQwMjksIDg5NzAsIDAsIDk5MzQsIDEyODY4NSwgCi0gICAgMTA3NzQsIDY3MTA0LCA0MjIwMSwgMTI0MjEsIDEyODIxNiwgMTI3MDA2LCAxODUyLCAzMDU3LCA2NDA0NiwgNzM3NDQsIAotICAgIDY0MDM0LCA2NDAzOSwgNjgwNjUsIDAsIDk4MzY5MCwgOTI5MTMsIDkyMzIyLCA3NjQ1LCAxMjg1NCwgNzQzMzgsIDM0OTYsIAotICAgIDAsIDEyMTMyMywgMTEzNzEwLCA5MTAyLCA2MjcsIDEyNzc5NSwgNjE1OCwgODMyNywgNzQ1NTMsIDY2NjMyLCAxMjQxOSwgCi0gICAgMTMzMDksIDExNTcwLCAxMjc4MTEsIDE5OTYwLCAxMTY5NiwgMCwgMTAxOCwgMTE4OTcwLCAxMjkwNzUsIDE5NDg5NywgCi0gICAgMTY4MiwgNDM4NjMsIDE5NDg5NiwgNDI3NTYsIDY3NjUsIDE5NDkwNiwgNjc3MTcsIDc0MzU4LCA3MzgxNCwgMTE0MTIsIAotICAgIDY3NjgsIDEwNzI4LCAxMTk5ODIsIDcxMzE2LCA3MTA5OSwgNDMzMTEsIDY0OTY2LCAxMTU3NywgMTI3ODMyLCA0MzA0MCwgCi0gICAgMTgzMywgMTE1NzYsIDcwMDU0LCA3NDc3OSwgMCwgMTg1LCA2NTA4NSwgNzQ1MzMsIDY0NzU0LCAxMTkzMzQsIDc1MzUsIAotICAgIDgwODUsIDQyNTI1LCAxMTk5NDQsIDk3NDksIDQxNzAxLCA2MTMxLCAxOTQ5LCA0MTE3LCA3ODQ3LCAxMjA0ODksIDEyMDk5NywgCi0gICAgNjQ0ODMsIDY1NjkzLCA5ODM3MTEsIDk4MzQ5NSwgMTI4NjE1LCA2OTY5NSwgNDIyNDAsIDEyODU4NywgMTIxMzUyLCAKLSAgICA0Mjg2NCwgMTI2NDk4LCA0MzE2OCwgNDE4NjgsIDExODQsIDAsIDgxNSwgMTE0ODQsIDEyNzUzNSwgNjc4NDAsIDk4MzY1MSwgCi0gICAgMCwgNjYxOTcsIDk4MzQ3NCwgMTA5ODYsIDY0NjgzLCAxMjg1NDksIDEyODQ1NCwgMzQ1NSwgMTI2NTMwLCAwLCA5ODc5LCAwLCAKLSAgICAwLCA0MTU4LCA3MDMwNywgNjgxNjYsIDAsIDEyODA5MSwgMCwgMCwgNjk2NDUsIDMzMiwgMTE4ODA4LCA4MzM2OCwgNTE0MiwgCi0gICAgMjQwNywgNjk2NDMsIDQyMTk5LCAwLCA5MjQwNCwgNzQzNzMsIDgzMzcyLCA1NTIxNywgNzE0NTcsIDYzODcwLCA0MzE2MywgCi0gICAgMCwgMCwgMTI5ODUsIDQyODY3LCAxODM0LCAxMjAzODcsIDkyNDYxLCA2OTgxNywgMTA5NDAsIDY1MjQ5LCA3MDM4NSwgCi0gICAgODY2MiwgMTIwMzI0LCAwLCAyNjUyLCAxMjA1MjcsIDcxNjQsIDEwNzg0LCAxOTUwOTMsIDY3Njc0LCAwLCA4MzM1OSwgCi0gICAgOTI0ODIsIDE5NDc0OSwgNzQ1NjIsIDkxNzUwNSwgMTgyOCwgNzQ0NzQsIDEyMDAxOSwgNjgwNzgsIDg1MzEsIDEyNDk5LCAKLSAgICA2MjgwLCAxMjMyNCwgNzI0MzQsIDY1MjM4LCA2ODM3NCwgNDgzMiwgNjU1NzMsIDQzODUxLCA2Mjc5LCAxMjUwOCwgMTI5MDQsIAotICAgIDEyNTAyLCA5MTYxLCAxMjg1NTUsIDE2MjAsIDExMjQ3LCAzNjAxLCAxMjEzMDEsIDgzMzUzLCA2NzI0NiwgNjA5LCAxMTU1NSwgCi0gICAgODM0NTYsIDEyNDk2LCAxMTk4MCwgNzQxODEsIDQzNDMsIDEyNTA1LCA4Mjk2MCwgMTI3ODYzLCAwLCAxMTM3NywgMjM5LCAKLSAgICAxMjgxMTQsIDYzNywgMCwgMTI4Njc4LCA0MjY3MSwgMCwgOTMwMzIsIDgzMDk1LCA0MzU2NSwgNzEzMDYsIDEyNjQ5MywgCi0gICAgMTI2OTYsIDEyODI1NiwgOTE3NjAwLCA5NDA2MiwgMTI5MjksIDAsIDcxMiwgMCwgNDE5NywgOTgzMjA2LCA0MjgxOCwgCi0gICAgMTI2NjMyLCA3MDMwNiwgMTIwNDkwLCA3MDMzMywgMTE5MTM3LCAxNTA2LCA0MzU2MiwgMTE5OTEzLCA5MjQ5MSwgNjgwNzYsIAotICAgIDEyNjUxLCAxMjA5MTcsIDY0NjI4LCA3NDUxNywgMTIwNTgsIDc0MDg0LCAxOTQ2MzMsIDc0OTQsIDAsIDQ5MjQsIDY1NTkyLCAKLSAgICAxMTg4NDQsIDE5NDgyMywgMTI3MDg4LCAzNTUsIDk3MTksIDEyNzA4NywgMTMwNjYsIDY0Nzk2LCAxMjEwNzcsIDk4MzI5NywgCi0gICAgMTIwMzMsIDQyMTc4LCAxOTQ3NTQsIDY5NzYwLCA0MjU3MSwgOTI2MzUsIDExNDMwLCAwLCA3MDI5OSwgMTIxNTA4LCAKLSAgICAxMjQ5NTEsIDY4MzI0LCAzMTc4LCAxMjY0ODgsIDEyODYzMywgOTI3MDQsIDkxNzU2NiwgOTA4MCwgMTIwOTQzLCA2NzY5NywgCi0gICAgMTk1MTAxLCA2ODIwOSwgNzI0MTgsIDExMDgyLCA3MTQ4NSwgNTY5OSwgODMzNzMsIDY2MDAwLCA5NDg4LCA2NTE2NiwgCi0gICAgMTE5MTEyLCA3MDQ3NywgMTExNzAsIDY4NjYyLCAxMjgxMjAsIDcxMzEzLCAwLCA1MjY1LCA2OTIzNSwgODMzODQsIDExNDg3LCAKLSAgICA2Nzg1OCwgMTI0NjQsIDk4MzM2NSwgNDMwNDUsIDk4MzgzMSwgNzAzNDUsIDQzMzQ1LCA5ODMyNzYsIDEwNzcwLCAxMTg5OTQsIAotICAgIDY4MDcsIDQ2NSwgOTgyOSwgNjk5OTcsIDc0MzQ4LCAwLCA0MzM0NiwgODExNiwgNzk1LCAxMjAzNTIsIDcyNDEyLCAxMjQ2MiwgCi0gICAgMTA5MzAsIDEwODMxLCAxMjEzMjAsIDExODk1MiwgNjQzNjIsIDc0MzM0LCA5MzA1NiwgODMwNDcsIDk4MzkzMywgMTI0NjgsIAotICAgIDg2MDcsIDEwMDgsIDExODk0OCwgMTAwOTIsIDEyNTEyMiwgMTI4ODUxLCA2Nzg1NSwgNTUyNTcsIDczNzcxLCAxNzY2LCAKLSAgICAxMTI4MiwgMTE5OTYsIDE4MjAsIDQ1NDcsIDAsIDExMjAyLCAxMjAyNDMsIDEyODM0NSwgMTMyMjMsIDc0OTM0LCA2NDU5NSwgCisgICAgNTE0NywgMTI1MDE5LCA5MTc2MjQsIDc0NTI0LCAxMjgzNTYsIDE5MjgsIDAsIDY3NjQ5LCA1OTkxLCAzNDQ1LCA2NzYwOSwgCisgICAgNDk3NiwgNjQxNzYsIDc0OTY2LCA2NzYxMCwgODI0MSwgOTgzOTAwLCA3Nzg2OCwgNDIwNiwgMTI3MzUyLCA3ODY2MiwgCisgICAgMTI5MDI5LCAxMjgyOTgsIDY3Mjc3LCAxMDEzOCwgNjcyMzgsIDEyODc4NSwgODg5NywgMTIwMjM0LCAxNDIyLCA4MzU3LCAKKyAgICA0MTI0LCA3Nzg2MiwgNjU4MzYsIDEyMDY0MSwgMTI3OTI2LCA3Nzg1OSwgMTAwOTEyLCAxMjA5MzAsIDExMjMsIDk2MywgCisgICAgNDE1NTMsIDEwMTIwLCAxMjQwNSwgMTIwMTUwLCA5MjY2NCwgMzk4LCAxMzI3OCwgOTcyMywgNjM2NiwgMTIwMzExLCA3OTQ1LCAKKyAgICAxMjkxMjYsIDQ0MDIsIDk5NzAsIDEyNDAyLCA5MzA2MiwgNDIzOTIsIDEzMDUsIDEyNDA4LCA5MjM4NCwgNDQwMDcsIAorICAgIDEyODQ2NSwgMTI3MjE2LCA0MTQ2NCwgMTI0MTEsIDEyOTY5LCA2NzI2OCwgNDE0NjUsIDEyMTA5MiwgODUyOCwgMTU3NSwgMCwgCisgICAgNjM5NTUsIDE2NSwgMzAyNCwgNDE0NjcsIDExOTE2MywgNzAxMTksIDkwOTMsIDEwMDYyMCwgNjgzMywgOTI1NzQsIDYzOTU4LCAKKyAgICAxMjA5MzEsIDkxNDgsIDk2OTIsIDQwOTYsIDUzLCA4Mjk2LCA2NzUwLCA2Njg1NSwgMTI4NDEwLCA5NTk0LCAxMjAzMDgsIAorICAgIDEyMDkzOCwgNDM1MjcsIDEwMDYxMSwgNzI3LCA3NDE5MiwgOTMwNjAsIDU4MDUsIDAsIDY3MjYsIDEyNzM4NywgNDIxNzYsIAorICAgIDEyMzcwLCAxMTY1NSwgMTE5MDk1LCAxMDU5MSwgMjI4MCwgOTgzMjM0LCAxMjM3MiwgMTIwNjQyLCAxMjAzMDcsIDcxMjA5LCAKKyAgICA5MjM0MywgOTgzODcyLCAxMjM2NiwgMTA5NjMsIDYwNjYsIDEzMjksIDAsIDMwNTIsIDkyMjAsIDEyMTA0NSwgNjQ0NzgsIAorICAgIDE5NDcwMSwgMTA4MDMsIDQxMzIsIDEyMDMwNiwgNjg0NzQsIDkyNDczLCAxMDA4NzYsIDExODkyMywgNzQ4MzcsIDEyMDE1NSwgCisgICAgMTQ5OSwgMTIxMjk5LCA4MDU1LCA0Mjc0MCwgNjM5NjUsIDc0MzM4LCA2Mzk2MiwgNzQwNDIsIDg5MjQsIDQzMTIzLCA1OTg4LCAKKyAgICAzNjYwLCA2Mzk2OSwgMTE3ODEsIDQyNzE4LCA4Nzg4LCAxMzU3LCA2NDg1MSwgNjU3NDMsIDkyODk0LCA4Nzc0LCA3MDMzNywgCisgICAgMTI3MDg2LCA5OTQxLCAxMjAxNzIsIDkyNzQ4LCAxOTMzLCA2OTY1NSwgOTU2NCwgMTIwMDE2LCA5MjQzNSwgNzM4NjYsIAorICAgIDk4MzkzMiwgMTIxMjQxLCAyNDg3LCA2NzYxNCwgMzEyMSwgMTgwNCwgMzMxMSwgNjc2MTUsIDcwMDgxLCA3ODMwMiwgCisgICAgMTIyMjAsIDY3NjE2LCA5Mjc2OSwgMTIwMDIwLCAxOTQ1OTQsIDY4MjAwLCA2Njc1LCAxMjgxNDQsIDk4MzI4MiwgNjc1OTIsIAorICAgIDEyMDY4NSwgMCwgNjQ3NzEsIDExOTgsIDkxMzIsIDk4MzcwOSwgNjQ2MTksIDUxMCwgNjQ2NjMsIDk0MDMzLCAxMjE1MDAsIAorICAgIDQ1NjEsIDIxMDEsIDEzOTgsIDE5NTA1MSwgOTI1NTQsIDc0MDM0LCA0MTU2OSwgOTI2ODQsIDExNDA2LCA4MTY3LCAxMjEyNywgCisgICAgMTIwNTA1LCA4NDAsIDk4MzI4MywgNjk5OTIsIDcxMDEsIDY5NjcsIDAsIDE5NDg5OCwgOTc5NiwgMTI3MDAwLCAzMzMsIAorICAgIDY5ODkxLCAxMjcxNDUsIDgxNDQsIDIxMTcsIDAsIDcwNzEyLCAxMjQwNiwgOTE3OTcwLCAxOTkzMSwgNjYzODgsIDY2NzgsIAorICAgIDc3NjksIDk4MzEyNCwgMTI2MjEsIDAsIDEyNzM2NiwgMTAyMjcsIDQ3NjQsIDQzMTAxLCA5OTgxLCA3NDE1NywgNDA5ODYsIAorICAgIDQxMjcsIDY2NDg3LCA5ODM1NzYsIDQyMjAyLCAxMjc1NCwgMTk1MDIxLCA5ODMxOTEsIDEwMDYyOCwgOTQwOTcsIDY3NTk0LCAKKyAgICAyMDQ4LCAxMjk0NCwgNDA1MCwgNjc1OTUsIDkxNzk2NywgNDMxMDIsIDEwNTgxLCAxMTE4NCwgNDUzMywgMTI3MjEyLCAKKyAgICA3NDAwMywgNjQ5MCwgOTgzODU3LCAxMjAzOCwgMCwgMCwgNjgyMjUsIDY1NDYxLCA5Nzk4LCA2OTcwNCwgMTI4OTEyLCAKKyAgICAxOTQ4LCA2OTg0MSwgMCwgOTUyLCAxMjgyMzUsIDEyNTEwNywgOTgzMzU0LCA3MDI5NiwgNjQ0OSwgOTQ5NCwgMTIwMzEzLCAKKyAgICA3MDczOCwgNDMwOTgsIDQ4NDMsIDgxNDIsIDY0MTYwLCA0MDk4LCA2NDE3MCwgMTI4ODcxLCA5MTc2MjEsIDM0MzYsIAorICAgIDY2NzgwLCAwLCAxMjgxNywgNjc1OTcsIDY2NzYsIDM5MzAsIDQyNjE1LCA2NjQwNywgNjk5OTEsIDY3NTk4LCA5ODMzMzYsIAorICAgIDAsIDAsIDY1NTkxLCA0MTU4MSwgNjU5MTYsIDE0NTMsIDEyMTE4OSwgMTIxNDU4LCAxMjc4NTksIDg1MDAsIDQyMjIyLCAKKyAgICAxMDEwNDcsIDczNzQzLCAxMjAxNDMsIDQzMTcsIDExNTQzLCA2NzY3NiwgNjQ2NzYsIDEwMDY5NywgMTI3ODMzLCA2NzYwNiwgCisgICAgMTE5MDgzLCAxMjEwODMsIDQyMjE3LCAxMzEwMiwgMTI4NzM2LCA2NjAwMywgNjY3MiwgMCwgMCwgNjY4ODAsIDc3OTEyLCAKKyAgICA2Mzg0MSwgOTYxMywgOTAwMSwgNDUyNiwgMTEyNzQsIDY3NjAxLCA2NDUyMCwgNjQyMTAsIDY2NjQsIDc4NzA0LCA0MjA1NiwgCisgICAgMTAyMjgsIDY0OTU3LCAxMTI4MSwgMTI4MzEyLCAzODA3LCAxNDY5LCA2NjY0MCwgNjUzODEsIDQyMTk3LCA0OTg4LCAKKyAgICA0MjM3MiwgNzI3ODYsIDk1OTgsIDkwNCwgMzUyLCA0MjIyNSwgMTQ1MSwgODA2MSwgODQ1MywgNDEzNCwgODM0ODUsIAorICAgIDY3MjIzLCA2NjU3NiwgMTI3OTE2LCAxMjc1NjgsIDEwNTIwLCA4NTc1LCA5OTYwLCAxMjAxLCAxMjUyMzUsIDEyODQ2LCAKKyAgICAxMjcyOTEsIDY4MDQwLCAxMTkxOSwgNjQ5NjIsIDEwMDY5NSwgNDM3MzksIDEwMTA0MSwgODUxMSwgOTQ2MCwgODIzLCAKKyAgICAxMTU4NywgMTIzMDUsIDAsIDY0Njk1LCAxMjczMDUsIDEyMzg3LCAxMjUzLCAxMzE4MywgNjU3NjYsIDUwMCwgNDI3ODMsIAorICAgIDY1NzY1LCA2NDIwOCwgNjQzNjksIDY1NzYwLCA2NTc2MSwgNzAzMzQsIDExNjA2LCA2NDc4NCwgMTE3MDIsIDY2NDk4LCAKKyAgICA5ODIxLCA2NDMwNCwgMTI3MzY5LCA1MTUyLCAxMTA0OCwgNzUzMywgNjgzNjYsIDY0NDEwLCA5MjMwNSwgMTI3ODUyLCAKKyAgICA0MzIzLCA3MDI3NiwgOTI2NjksIDcxMzMyLCAxMjAxNTgsIDQyNTg3LCA0MjIxNCwgNDEzOTQsIDExMTg4LCA0NzYzLCAKKyAgICA0MTEyLCAxMTg5MzUsIDAsIDUyNjAsIDQzMTQzLCA5NDAzOCwgMzI2LCAxMjAxMzEsIDY4NDIzLCAxMTkyMTgsIDEwNzcxLCAKKyAgICAyODc2LCA3NDA3NCwgOTI1MzAsIDEyODQ2MCwgNDEzOTgsIDczODIsIDk4MDIsIDEyNzA3NywgMTI3MDc2LCA0NTMsIAorICAgIDQxMzk2LCAxMjA1MjQsIDEzMTU5LCAxMjE0MCwgOTU3MiwgMTI5MDg1LCA3MDAzLCAxOTQ4ODMsIDQyMzM0LCA3NzA0LCAKKyAgICAxMjUwNjksIDEyNTAyMCwgNDMxNDQsIDQxMjMsIDg0OTQsIDQzMTQ2LCA5OTc3LCAwLCAxMjEyODMsIDY1NzU5LCAxMDc2NSwgCisgICAgNjQwNjEsIDQ0NjUsIDk4MDgsIDY0MDU2LCA2NTU4MiwgNDEyNiwgMCwgOTUyMSwgOTU4OSwgNjQ3NTUsIDEyNTIwMCwgCisgICAgNjQwMjAsIDEyNjYwNCwgMTA0NjQsIDE5NDk4MCwgOTI5NjgsIDcyODQ3LCA2NDUxNCwgMTE1MjgsIDY0MDI0LCAxMjgwNzIsIAorICAgIDY3OSwgNjQwMTMsIDEyOTMxNCwgNTg1MCwgNzU4LCA3NTM2LCAxMjA1MzgsIDkyMjM0LCA0MTQ0MSwgMTA2OTMsIDY0MDA2LCAKKyAgICA3NTA0NCwgNjQwMDUsIDQwNTgsIDExOTAxOSwgMTI2NDg3LCA2NDY2MCwgMTI4MTc2LCAxMTkwNTAsIDAsIDE5NTAyMywgCisgICAgMTEzOSwgNDMyOTgsIDY0MDI3LCA2NDAyOSwgODk3MCwgMCwgOTkzNCwgMTI4Njg1LCAxMDc3NCwgNjcxMDQsIDQyMjAxLCAKKyAgICAxMjQyMSwgMTE5MTA5LCAxMjUyNzAsIDE4NTIsIDMwNTcsIDY0MDQ2LCA3Mzc0NCwgNjQwMzQsIDY0MDM5LCA2ODA2NSwgCisgICAgMTI3MDc1LCA5ODM2OTAsIDcyNzczLCA5MjMyMiwgNzY0NSwgMTI4NTQsIDcyNzcyLCAzNDk2LCAwLCAxMjEzMjMsIAorICAgIDExMzcxMCwgOTEwMiwgNjI3LCAxMjc3OTUsIDYxNTgsIDgzMjcsIDc0NTUzLCA2NjYzMiwgMTI0MTksIDEzMzA5LCAxMTU3MCwgCisgICAgMTI3ODExLCAxOTk2MCwgMTE2OTYsIDkyOTEzLCAxMDE4LCAxMTg5NzAsIDEyOTA3NSwgMTk0ODk3LCAxNjgyLCA0Mzg2MywgCisgICAgMTk0ODk2LCA0Mjc1NiwgNjc2NSwgMTk0OTA2LCA2NzcxNywgNzQzNTgsIDczODE0LCAxMTQxMiwgNjc2OCwgMTA3MjgsIAorICAgIDExOTk4MiwgNzEzMTYsIDcxMDk5LCA0MzMxMSwgNjQ5NjYsIDExNTc3LCAxMjc4MzIsIDQzMDQwLCAxODMzLCAxMTU3NiwgCisgICAgNzAwNTQsIDc0Nzc5LCAwLCAxODUsIDY1MDg1LCA3NDUzMywgNjQ3NTQsIDExOTMzNCwgNzUzNSwgODA4NSwgNDI1MjUsIAorICAgIDExOTk0NCwgOTc0OSwgNDE3MDEsIDYxMzEsIDE5NDksIDQxMTcsIDc4NDcsIDEyMDQ4OSwgMTIwOTk3LCA2NDQ4MywgCisgICAgNjU2OTMsIDk4MzcxMSwgMTI3MTIwLCA3NDI4OCwgNjk2OTUsIDQyMjQwLCAxMjg1ODcsIDEyMTM1MiwgNDI4NjQsIAorICAgIDEwMTAzNywgNDMxNjgsIDQxODY4LCAxMTg0LCAxMjEyODUsIDgxNSwgMTE0ODQsIDEyNzUzNSwgNjc4NDAsIDk4MzY1MSwgCisgICAgMTI5MzQwLCA2NjE5NywgOTgzNDc0LCAxMDk4NiwgNjQ2ODMsIDEyODU0OSwgMTI4NDU0LCAzNDU1LCAxMjY1MzAsIAorICAgIDExOTY2NCwgOTg3OSwgMCwgOTgzMjE1LCA0MTU4LCA3MDMwNywgNjgxNjYsIDAsIDEyODA5MSwgMTk0OTgyLCAwLCA2Njc5OSwgCisgICAgMzMyLCAxMTg4MDgsIDgzMzY4LCA1MTQyLCAyNDA3LCA2OTY0MywgNDIxOTksIDkyMzg2LCA5MjQwNCwgNzQzNzMsIDgzMzcyLCAKKyAgICA1NTIxNywgNzE0NTcsIDYzODcwLCA0MzE2MywgMCwgOTE3NzYzLCAxMjk4NSwgNDI4NjcsIDE4MzQsIDEyMDM4NywgOTI0NjEsIAorICAgIDY5ODE3LCAxMDk0MCwgNjUyNDksIDcwMzg1LCA4NjYyLCAxMjAzMjQsIDAsIDI2NTIsIDEyMDUyNywgNzE2NCwgMTA3ODQsIAorICAgIDE5NTA5MywgNjc2NzQsIDkxNzk0MiwgODMzNTksIDkyNDgyLCAxOTQ3NDksIDc0NTYyLCA5MTc1MDUsIDE4MjgsIDc0NDc0LCAKKyAgICAxMjAwMTksIDY4MDc4LCA4NTMxLCAxMjQ5OSwgNjI4MCwgMTIzMjQsIDcyNDM0LCA2NTIzOCwgNjgzNzQsIDQ4MzIsIAorICAgIDY1NTczLCA0Mzg1MSwgNjI3OSwgMTI1MDgsIDEyOTA0LCAxMjUwMiwgOTE2MSwgMTI4NTU1LCAxNjIwLCAxMTI0NywgMzYwMSwgCisgICAgMTIxMzAxLCA4MzM1MywgNjcyNDYsIDYwOSwgMTE1NTUsIDgzNDU2LCAxMjQ5NiwgMTE5ODAsIDc0MTgxLCA0MzQzLCAKKyAgICAxMjUwNSwgODI5NjAsIDEyNzg2MywgMTI1MjU4LCAxMTM3NywgMjM5LCAxMjgxMTQsIDYzNywgMCwgMTI4Njc4LCA0MjY3MSwgCisgICAgMCwgOTMwMzIsIDgzMDk1LCA0MzU2NSwgNzEzMDYsIDEyNjQ5MywgNzI5OCwgMTI4MjU2LCA5MTc2MDAsIDk0MDYyLCAKKyAgICAxMjkyOSwgMCwgNzEyLCAwLCA0MTk3LCA5ODMyMDYsIDQyODE4LCAxMjY2MzIsIDcwMzA2LCAxMjA0OTAsIDcwMzMzLCAKKyAgICAxMTkxMzcsIDE1MDYsIDQzNTYyLCAxMTk5MTMsIDkyNDkxLCA2ODA3NiwgMTI2NTEsIDEyMDkxNywgNjQ2MjgsIDc0NTE3LCAKKyAgICAxMjA1OCwgNzQwODQsIDE5NDYzMywgNzQ5NCwgMTI4NzgwLCA0OTI0LCA2NTU5MiwgMTE4ODQ0LCAxOTQ4MjMsIDEyNzA4OCwgCisgICAgMzU1LCA5NzE5LCA2Njc2MiwgMTMwNjYsIDY0Nzk2LCA3ODY2MywgOTgzMjk3LCAxMjAzMywgNDIxNzgsIDE5NDc1NCwgCisgICAgNjk3NjAsIDQyNTcxLCA5MjYzNSwgMTE0MzAsIDAsIDcwMjk5LCAxMjE1MDgsIDEyNDk1MSwgNjgzMjQsIDMxNzgsIAorICAgIDEyNjQ4OCwgMTI4NjMzLCA5MjcwNCwgOTE3NTY2LCA5MDgwLCAxMjA5NDMsIDY3Njk3LCAxOTUxMDEsIDY4MjA5LCA3MjQxOCwgCisgICAgMTEwODIsIDcxNDg1LCA1Njk5LCA4MzM3MywgNjYwMDAsIDk0ODgsIDY1MTY2LCAxMTkxMTIsIDcwNDc3LCAxMTE3MCwgCisgICAgNjg2NjIsIDEwMDUwNSwgNzEzMTMsIDAsIDUyNjUsIDY5MjM1LCA4MzM4NCwgMTE0ODcsIDY3ODU4LCAxMjQ2NCwgOTgzMzY1LCAKKyAgICA0MzA0NSwgOTgzMjAxLCA3MDM0NSwgNDMzNDUsIDEyMDY1NywgMTA3NzAsIDExODk5NCwgNjgwNywgNDY1LCA5ODI5LCAKKyAgICA2OTk5NywgNzQzNDgsIDEyMTQwMywgNDMzNDYsIDgxMTYsIDc5NSwgMTIwMzUyLCA3MjQxMiwgMTI0NjIsIDEwOTMwLCAKKyAgICAxMDgzMSwgMTIxMzIwLCAxMTg5NTIsIDY0MzYyLCA3NDMzNCwgOTMwNTYsIDEwMTEyLCA5ODM5MzMsIDEyNDY4LCA4NjA3LCAKKyAgICAxMDA4LCAxMTg5NDgsIDEwMDkyLCAxMjA1MzksIDEyODg1MSwgNjc4NTUsIDU1MjU3LCA3Mzc3MSwgMTc2NiwgMTEyODIsIAorICAgIDExOTk2LCAxODIwLCA0NTQ3LCAxMDA3MDksIDExMjAyLCAxMjAyNDMsIDEyODM0NSwgMTMyMjMsIDc0OTM0LCA2NDU5NSwgCiAgICAgMTI3Mjk0LCA4MzM3NCwgNjg0ODksIDQzNDUsIDEyNjE2LCA5MTc3ODQsIDEyODk0NywgOTgzMTU1LCA3NDQ2NywgMCwgCi0gICAgOTgzODE5LCAxMjgyOTEsIDUzODIsIDEyNzc3OSwgMCwgNjcyMzMsIDExOTA2MCwgNjQ5NTMsIDU0MDYsIDE5OTIwLCAKLSAgICA2OTg5NywgNjY1MTAsIDM1OTAsIDE5NDgzNSwgMTEzMCwgOTE3NzY2LCAxMjA5NzcsIDQyMDE2LCAxMTgyMywgNDMwMjMsIAotICAgIDEyMTAwMiwgMTE4ODk2LCA3NzQyLCAxMjczNzQsIDEzMjgwLCA3MTMyMywgOTMyNiwgNzM4MjYsIDUzMTAsIDQzNTA5LCAKLSAgICA3ODU4NCwgOTIyMjksIDg5NTksIDQzNTg5LCA2NzQ3LCA2NjcyMywgNjQ3NTcsIDg1NjgsIDE5NDY4NCwgMTIwNDk2LCAKLSAgICA3MzgxNiwgODMwNjAsIDEyODQxOCwgNDI2NzAsIDAsIDExNjIxLCAxMjQ2MCwgMTMyNiwgMTIwNjMxLCA4MzM5MywgNDMwNjMsIAorICAgIDczOTU1LCAxMjgyOTEsIDUzODIsIDEyMTM5MCwgMCwgNjcyMzMsIDExOTA2MCwgNjQ5NTMsIDU0MDYsIDE5OTIwLCA2OTg5NywgCisgICAgNjY1MTAsIDM1OTAsIDE5NDgzNSwgMTEzMCwgMTI4Njg5LCAxMjA5NzcsIDQyMDE2LCAxMTgyMywgNDMwMjMsIDEyMTAwMiwgCisgICAgMTE4ODk2LCA3NzQyLCAxMjczNzQsIDEzMjgwLCA3MTMyMywgOTMyNiwgNzM4MjYsIDUzMTAsIDQzNTA5LCA3ODU4NCwgCisgICAgOTIyMjksIDg5NTksIDQzNTg5LCA2NzQ3LCA2NjcyMywgNjQ3NTcsIDg1NjgsIDE5NDY4NCwgMTIwNDk2LCA3MzgxNiwgCisgICAgODMwNjAsIDEyODQxOCwgNDI2NzAsIDEyNzUzOSwgMTE2MjEsIDEyNDYwLCAxMzI2LCAxMjA2MzEsIDgzMzkzLCA0MzA2MywgCiAgICAgNDMyMzksIDY1Njc4LCAxOTQ4NDAsIDczOTE3LCA3ODQzLCA2OTc4MywgMTE2ODksIDU0MTAsIDU3ODMsIDEwNDY4LCA4NDAzLCAKICAgICA1NDAwLCAxMTU5NCwgMTIwNDA1LCA2ODMzMywgODMzOTAsIDEwNDkxLCA2OTg0MiwgNjQ0MTIsIDAsIDEyODAxMiwgNTU4NywgCiAgICAgNDI4NjUsIDY0NDA0LCA4MjY4LCA0OTIzLCA2NTA4NiwgODk4MSwgMTIzODIsIDQyMTMzLCAxMjA3NTUsIDk3MDYsIDY5NzM4LCAKLSAgICA3MDI5NCwgNjY2MTAsIDEwNDYxLCAxMjEwMywgMCwgODY0MiwgODMzODgsIDQyNzY2LCA4MzM4NywgMjIxMCwgOTk4MywgCi0gICAgMTI4Njg5LCA5NDAwOSwgMCwgMCwgMCwgNzM5OCwgNDE1MTUsIDAsIDExODAyLCA4MDQxLCAxNDYxLCA5MTAsIDExOTEzMywgCi0gICAgMCwgNjc0OSwgMzY1OCwgOTM5NjQsIDEyMDUyNSwgMCwgNzYxNywgMTk0ODQxLCAxMjg4OCwgMTI3OTgzLCA2NzY2OCwgCi0gICAgMTMxNDMsIDAsIDkxOTMsIDExMDk3LCA1NzAzLCAxMjgyNDcsIDQxNTE3LCA0MTUwNCwgNDE1MTksIDEwMDE2LCA2NDMwNSwgCi0gICAgMCwgNjU4NjQsIDYyMywgNzgxLCA2NzAsIDEwNjYwLCA1NzY5LCA2MTMsIDc1NDMsIDEyMDI3OSwgNDc3LCA0MTA4MywgCi0gICAgOTI1MjEsIDAsIDU5MiwgMTU3OCwgMTI0NTksIDQzNDQ5LCAwLCAwLCA4MjI1LCAxMjExOTEsIDY1NCwgMTEzNDUsIDY1MywgCi0gICAgNjUyLCAwLCA2NDcsIDgzMjY2LCA2MzMsIDEyMDc0NCwgOTgzODA5LCAxMjY0NzIsIDEyNDgwLCA0MzI0MywgMTk0OTA5LCAKLSAgICAzOSwgMTI0ODcsIDEyMTI0NywgMTIwNTI5LCA3NDE5OSwgMTI0ODIsIDAsIDEyNDg5LCAxMTk2MDcsIDMxOTUsIDU1NTAsIAotICAgIDEyOTEyMSwgNzg5NywgMTI3MDg5LCAxMjAzLCA3NDM5NiwgMTgxMywgNjQ1NDQsIDQxMzExLCAxMjA5MCwgOTgzNjM0LCAKLSAgICAyODc3LCAxMjE1MTgsIDcwNDk2LCAxNjc1LCA2OTg0MCwgMCwgMCwgMTE5MDc4LCAxMDA3MCwgMTA1OTUsIDAsIDExOTA3NywgCi0gICAgMTk0Nzc3LCAxMjExNjIsIDY3MTcwLCAxMjA3OTAsIDExODc4NywgNDMyNDQsIDkyMjMzLCA5MTc4MzUsIDk4MzkxNiwgCi0gICAgMTE5NTYxLCA5ODMwNzgsIDE5NDkxNCwgMTk0OTIxLCAxMjgxNjAsIDk5MzksIDAsIDk4MzE1MSwgNzc4NjAsIDEyODk0OCwgCi0gICAgODM0NDAsIDI3MCwgMCwgMTA3MTQsIDExODk4MywgNzI0MzcsIDAsIDExOTk0MiwgMTE5MzM4LCA2NTM3MiwgNzM4MDMsIAotICAgIDc0MDM4LCA2ODI1MSwgNjI3MywgNjY2NzksIDM2NCwgOTU5NSwgNzE0NDAsIDAsIDAsIDcwNywgMTk0ODM5LCAxMjg0MDksIAotICAgIDkyODIsIDExMTYzLCAyMjQsIDEyODU4OCwgNjg2NzAsIDkzMzIsIDQ5NjYsIDY4Njc3LCAxOTQ1ODYsIDY4NjQ0LCAKLSAgICA5ODMxMzEsIDM4NDEsIDY3MzU3LCA2NzM0MSwgMTA3MzIsIDY4NjQwLCA4NTAsIDQ5NzIsIDEyNzE4MSwgMTI4OTAsIDI5MDksIAotICAgIDY4NjE5LCA0NDAwOCwgNjg2MjcsIDEyMDY5OSwgMTE1NDQsIDEwMjAzLCA5NjA4LCAwLCA5MTc5NDMsIDExOTYyLCAKLSAgICAxMjEzOTcsIDEyNTA3LCAxMTk2LCA2NzY4NCwgNjcxMDAsIDc3NywgMTIwMTg3LCA0Mzc1LCA2NTI3MSwgNjc2NzgsIDAsIAotICAgIDEyMTk4LCA5MTc4ODcsIDY0ODI0LCAxMTkzNDMsIDEyNzI0MywgOTQ1NCwgNjM3NzgsIDg2NTgsIDQyNTI4LCA3MDA3MywgCi0gICAgMjcwNSwgMTI4NjgwLCA0MTUyMCwgMTk1MDk4LCAxMjAzNzksIDExOTg2LCA3NzY1LCA0MjUwMiwgODI4MCwgNzQ1MjAsIAotICAgIDI3MDEsIDAsIDEyMDI0MCwgNTc2NywgMCwgMTk1MDE4LCA5ODA5LCA4MzUzLCA2Mzc0NywgNjY3MDEsIDYzNzcyLCAKLSAgICAxMjEyMzMsIDYzNzQ1LCAxNzQ4LCA2Mzc3MCwgMTIxNDE5LCAxMjEwNzgsIDAsIDY1NTQyLCA2Mzc2NiwgNTUyNDQsIDMwNjEsIAotICAgIDc4NjA5LCA2Mzc2NCwgNjM3ODcsIDkwNjcsIDYwOTYsIDAsIDc2OTQsIDAsIDcyNTcsIDYzNzY4LCAzNDg1LCAxMjk4NywgCi0gICAgMTI3NzgxLCAxMjc1MjIsIDEyMDYyOCwgNjM4MDcsIDE1OTEsIDAsIDYzODYsIDYzNzgzLCAxMjA5OTAsIDEyNTA0MSwgCi0gICAgOTI1MzUsIDAsIDAsIDY4MjQ5LCA3NDU3NSwgMTI3MDEwLCA2NTcxOSwgMTMwODMsIDY0NTc0LCA2NTAxMiwgMTIxNDUyLCAKKyAgICA3MDI5NCwgNjY2MTAsIDEwNDYxLCAxMjEwMywgMCwgODY0MiwgNzA3MDEsIDQyNzY2LCA4MzM4NywgMjIxMCwgOTk4MywgCisgICAgMTE5OTYzLCA5NDAwOSwgMTI5Mjk5LCAwLCAxMjg4MTAsIDczOTgsIDQxNTE1LCA5ODM4ODAsIDExODAyLCA4MDQxLCAxNDYxLCAKKyAgICA5MTAsIDExOTEzMywgOTgzMzI3LCA2NzQ5LCAzNjU4LCA5Mzk2NCwgMTIwNTI1LCAxMjczNjMsIDc2MTcsIDE5NDg0MSwgCisgICAgMTI4ODgsIDEwMDUwMSwgNjc2NjgsIDEzMTQzLCAxMjc5NzUsIDkxOTMsIDExMDk3LCA1NzAzLCAxMjgyNDcsIDQxNTE3LCAKKyAgICA0MTUwNCwgNDE1MTksIDEwMDE2LCA2NDMwNSwgOTgzNTkzLCA2NTg2NCwgNjIzLCA3ODEsIDY3MCwgMTA2NjAsIDU3NjksIAorICAgIDYxMywgNzU0MywgMTAwNzg3LCA0NzcsIDQxMDgzLCA5MjUyMSwgMTk0NTkzLCA1OTIsIDE1NzgsIDEyNDU5LCA0MzQ0OSwgCisgICAgMTI4NjI4LCAwLCA4MjI1LCAxMjExOTEsIDY1NCwgMTEzNDUsIDY1MywgNjUyLCAwLCA2NDcsIDgzMjY2LCA2MzMsIAorICAgIDEyMDc0NCwgNzI3ODgsIDEyNjQ3MiwgMTI0ODAsIDQzMjQzLCAxOTQ5MDksIDM5LCAxMjQ4NywgMTIxMjQ3LCAxMjA1MjksIAorICAgIDc0MTk5LCAxMjQ4MiwgOTgzNzcwLCAxMjQ4OSwgMTAwOTE3LCAzMTk1LCA1NTUwLCAxMjgxNzIsIDc4OTcsIDEyNzA4OSwgCisgICAgMTIwMywgNzQzOTYsIDE4MTMsIDY0NTQ0LCA0MTMxMSwgMTIwOTAsIDk4MzYzNCwgMjg3NywgMTIxNTE4LCA3MDQ5NiwgCisgICAgMTY3NSwgNjk4NDAsIDAsIDAsIDExOTA3OCwgMTAwNzAsIDEwNTk1LCAwLCAxMTkwNzcsIDE5NDc3NywgMTIxMTYyLCAKKyAgICA2NzE3MCwgMTIwNzkwLCAxMTg3ODcsIDQzMjQ0LCA5MjIzMywgOTE3ODM1LCAxMjUxOTMsIDExOTU2MSwgOTgzMDc4LCAKKyAgICAxOTQ5MTQsIDE5NDkyMSwgMTI4MTYwLCA5OTM5LCAxMjE1MTEsIDEyNTE5NSwgNzc4NjAsIDEyODk0OCwgODM0NDAsIDI3MCwgCisgICAgOTgzMzA5LCAxMDcxNCwgMTE4OTgzLCA3MjQzNywgMCwgMTE5OTQyLCAxMTkzMzgsIDY1MzcyLCA3MzgwMywgNzQwMzgsIAorICAgIDY4MjUxLCA2MjczLCA2NjY3OSwgMzY0LCA5NTk1LCA3MTQ0MCwgMCwgMCwgNzA3LCAxMTk2NDksIDEwMDQwMCwgOTI4MiwgCisgICAgMTExNjMsIDIyNCwgNzI3OTksIDY4NjcwLCA5MzMyLCA0OTY2LCA2ODY3NywgNzA2NzQsIDY4NjQ0LCAxMjcyMTQsIDM4NDEsIAorICAgIDY3MzU3LCA2NzM0MSwgMTA3MzIsIDY4NjQwLCA4NTAsIDQ5NzIsIDEyNzE4MSwgMTI4OTAsIDI5MDksIDY4NjE5LCA0NDAwOCwgCisgICAgNjg2MjcsIDEwMTAyMywgMTE1NDQsIDEwMjAzLCA5NjA4LCAwLCA5MTc5NDMsIDExOTYyLCAxMjEzOTcsIDEyNTA3LCAxMTk2LCAKKyAgICA2NzY4NCwgNjcxMDAsIDc3NywgMTIwMTg3LCA0Mzc1LCA2NTI3MSwgNjc2NzgsIDEwMTAyNCwgMTIxOTgsIDkxNzg4NywgCisgICAgNjQ4MjQsIDExOTM0MywgMTI2NjA4LCA5NDU0LCA2Mzc3OCwgODY1OCwgNDI1MjgsIDcwMDczLCAyNzA1LCAxMjg2ODAsIAorICAgIDQxNTIwLCAxOTUwOTgsIDEyMDM3OSwgMTE5ODYsIDc3NjUsIDQyNTAyLCA4MjgwLCA3NDUyMCwgMjcwMSwgOTgzMzMzLCAKKyAgICAxMjAyNDAsIDU3NjcsIDAsIDE5NTAxOCwgOTgwOSwgODM1MywgNjM3NDcsIDY2NzAxLCA2Mzc3MiwgMTIxMjMzLCA2Mzc0NSwgCisgICAgMTc0OCwgNjM3NzAsIDEyMTQxOSwgMTIxMDc4LCAwLCA2NTU0MiwgNjM3NjYsIDU1MjQ0LCAzMDYxLCA3ODYwOSwgNjM3NjQsIAorICAgIDYzNzg3LCA5MDY3LCA2MDk2LCAwLCA3Njk0LCA5ODM3NzYsIDcyNTcsIDYzNzY4LCAzNDg1LCAxMjk4NywgMTI3NzgxLCAKKyAgICAxMjc1MjIsIDEyMDYyOCwgNjM4MDcsIDE1OTEsIDEyNzE0MCwgNjM4NiwgNjM3ODMsIDEyMDk5MCwgMTI1MDQxLCA5MjUzNSwgCisgICAgMTIyODg0LCAwLCA2ODI0OSwgNzQ1NzUsIDEwMDk5NywgNjU3MTksIDEzMDgzLCA2NDU3NCwgNjUwMTIsIDEyMTQ1MiwgCiAgICAgMTY0MCwgMTI0OTUsIDY2NjkxLCA3NjI0LCAzMTM4LCAxMDk5NiwgMTExNzEsIDE5MjIsIDEyNzI3NSwgMTI0OTgsIDEwOTg3LCAKLSAgICA2OTkzNiwgNjk5MzksIDM4OTQsIDY1NTQzLCAxMjkxODMsIDE5NDg0MiwgMTI4MTEyLCA0OTMsIDAsIDQzMTk3LCAxNzE3LCAKLSAgICA0MjI4LCA0NzksIDEwMzAzLCA3NDAyMCwgMCwgOTE3OTM1LCAxMDMzNSwgMzUyMCwgOTE3OTMyLCAxMjQ5MCwgNjQzMTUsIAotICAgIDkyMTcwLCAxMjcwMzksIDEyNDkzLCA2MjMzLCA0MjY4MSwgMTAwMiwgMTI0OTEsIDgzNTE5LCA2NDkxMSwgODM1MjEsIAotICAgIDIwOTYsIDY1MTIwLCA4MzUxNiwgNzgyMTksIDgzMjcwLCA4Mzc4LCAxMTYzMiwgNjg4MzgsIDY2MjEzLCA2Mzg2NCwgCi0gICAgNjYyMjEsIDY2MjI2LCA2NjIyOSwgMTMyMTgsIDY2MjMxLCA2NjIxNiwgODUwNywgNjYyMzYsIDY2MjExLCA2NjIxOCwgCi0gICAgOTI2NzIsIDY2MjQwLCA3ODA0MSwgNjYyMzMsIDg5MjgsIDk4MzU1MiwgNzkwOSwgNjYyMzQsIDExNjA1LCA2Mzc1OSwgCi0gICAgMTI3MzA4LCA2NjIwOCwgNjczMzksIDEzMDAyLCA2MzgwMywgMjQ0LCAxMTU0MiwgMTI4OTgsIDEyNDk0LCA3Mzc2MSwgCi0gICAgMTI0OTIsIDEyNjY5LCA5NDA3MCwgMCwgNzQxNTMsIDEyMDMxMCwgMTI4Mjc4LCAxMjA2ODAsIDQ4ODIsIDEzMDQwLCAKLSAgICA5ODMzNjIsIDg2MTIsIDQ4ODUsIDc0MDUzLCAxMjc4MzAsIDEzMDQyLCA0ODgwLCA2NDY2MiwgMjQyOSwgMTM2MCwgMjQ4LCAKLSAgICAxMjkwNjYsIDYzNzk3LCA5MjM5NCwgNDIzNTgsIDAsIDcyOTIsIDAsIDYzNzU2LCA0Mjc4NiwgNjY2OTMsIDAsIDE4NzAsIAotICAgIDc4MDQwLCA0NzAsIDc4MDM4LCA3ODAzNSwgNzgwMzYsIDcwMDI4LCA3ODAzNCwgNDU3OSwgNjkyMzIsIDAsIDEyNTExLCAKLSAgICA3NDQ1MywgMTI1MTQsIDAsIDcxMTMwLCA3MjM5LCA3MDAxLCA4NjIzLCA5NDAxMSwgMTI1MTM3LCAxMjgwNDgsIDczNzgsIAotICAgIDEyNTEyLCAxMTYxNSwgNjEwNCwgMCwgMTIwOTAwLCA2NTksIDYwOTgsIDAsIDEyMjM0LCA4MzUxMSwgNjczNTgsIDgzMTEsIAotICAgIDEyNTEwLCA3NjY5LCAxMzAzOSwgODM1MDksIDEyNTEzLCAxMDIwMiwgMTI0NzEsIDAsIDg3NDcsIDEyMTM4NSwgNzAxOTMsIAotICAgIDEyODM1NCwgMjMyMywgMCwgMjMxOSwgNzc5MTcsIDEyNDc3LCA3NzkxNiwgMjMxMSwgNzY2NiwgNDQxNSwgMjM3LCA2MjgxLCAKLSAgICAxMjcyODAsIDk4MzMxMSwgODMwMjAsIDIzMDksIDEzMTIsIDgxNzMsIDgzMDEzLCAxMjQ2OSwgODMwMTUsIDc4NTA1LCAKLSAgICA2NDMzNSwgMTA2MDksIDgzMDExLCA3ODAwNiwgOTM5NywgMTE1MjQsIDkzOTUsIDkzOTYsIDkzOTMsIDkzOTQsIDkzOTEsIAotICAgIDkzOTIsIDkzODksIDYyMDksIDkzODcsIDkzODgsIDQ5MzIsIDkzODYsIDkzODMsIDkzODQsIDY3NDAsIDEyNzk5MCwgCi0gICAgNjU0NTEsIDgxODUsIDEyODkzMSwgMTk0ODQzLCA0MzAyNCwgNDMzMzYsIDY3NjU5LCAyMzEzLCAxMjgxNjcsIDc5NDgsIAotICAgIDkyMzYsIDc3OTQyLCAwLCAwLCAxMDU3MCwgNDM0NzMsIDYyODksIDEwNDg0LCA4MzAwNiwgODMwMDcsIDExOTk4LCAxMjA4MiwgCi0gICAgMTA5MjQsIDMxNDcsIDgzMDA0LCA2NjQwNiwgMTI1MjQsIDExOTA4MSwgMjMxMCwgMTE4MTgsIDkzODEsIDkzODIsIDkzNzksIAotICAgIDkzODAsIDkzNzcsIDkzNzgsIDkzNzUsIDkzNzYsIDE2ODMsIDkzNzQsIDk4Mzc3OCwgOTM3MiwgMTI0NDQsIDc0MjU2LCAwLCAKLSAgICAxMzAxNiwgODIxMCwgMTIxMDYyLCA0MjAyOSwgMTEwNzksIDEyMzMxLCA0MzQ1MSwgNDIwMzIsIDg3NDQsIDcyNiwgMCwgCi0gICAgMTIwNjMwLCA0MTU1LCAxMjEwOTAsIDEyMDcwNCwgNDIwMzAsIDUwMDcsIDEyNTIyLCA0MzA4OCwgMCwgNDk1MSwgMTEzODI2LCAKLSAgICAxMjcyMTcsIDk4MzIwMiwgOTkyMiwgNDMzMDksIDExMjExLCAxMjUyNSwgOTgzNDczLCAxMjAxNiwgNjU3NzAsIDk1NDgsIAotICAgIDY3NjY1LCA0MDMsIDc4MjMwLCAxMjUwMywgMTk0Njg5LCAxMjcxOTEsIDExMDMwLCA0MzkxNiwgOTI1NjcsIDY1NjkxLCAKLSAgICA2Mzk5OCwgMTgxOSwgMTA0OTYsIDAsIDAsIDExOTkyMCwgMCwgMTI5MTQzLCAxMjEwNzIsIDEyNTA2LCA5ODM4MzgsIAotICAgIDExMTQ2LCA3MTQ3NywgMTI1MDAsIDQ0MDIzLCAxMjUwOSwgNjQzOTMsIDc4ODMwLCAzMzg5LCAxMDU4OSwgNjYwOCwgCi0gICAgMTEyMDgsIDEyMDIzNiwgNzgzOTUsIDc4Mzk0LCA3NDA2OSwgNzE0NDYsIDc4MzkxLCAzNjA4LCA4MjgxLCAxMTM3MzIsIAotICAgIDExMDcsIDExMzc0NSwgOTA3NiwgODg2MiwgNjk3NDMsIDQxMDUyLCAxMzA4NCwgNjQ3NjYsIDQzMjE3LCA3ODAzLCAxMzIyMiwgCi0gICAgNzQxNjUsIDc0NzgyLCA0MzQ5OSwgODU0NiwgMTE1NTMsIDYzOTk1LCAxMzE3NywgOTA0MywgNjMwMywgMTEzNjY0LCA0OTgsIAotICAgIDY0NDcxLCA3Nzk4NywgOTI5NzQsIDEyNTI5LCA4MDQyLCA0Mzg5OSwgMjM0NCwgMTI1MjgsIDgwMzEsIDI0MTQsIDc0NTA2LCAKLSAgICA2OTcxOSwgMzIzMSwgOTE3ODM2LCA2NDIyLCA2NjUxMiwgNjk2NTMsIDEyNTMwLCAyNTM3LCA3ODQwNSwgNDE0MjksIAotICAgIDEyNjU4LCAxMzAzNiwgNjU3NzIsIDAsIDc4NzM4LCA0MTQzMywgNDcxOSwgNDY5LCA5MTc4MTAsIDQzNjMsIDMzMTMsIAotICAgIDQxNDI4LCA3ODQwNywgMjAyMywgMTc3MiwgNzgyMjQsIDc4MjI1LCA2NTcwNiwgMTAwNTEsIDY0ODEyLCA3ODIyMCwgCi0gICAgNzQyMzcsIDk5MjAsIDEyMjE1LCA4Mjk3OCwgNDkzMSwgMTk1MSwgMTI0OTcsIDExOTM2MywgOTYwNywgNzAzNjgsIDk2NjMsIAotICAgIDY2ODM4LCAxMTk2MzQsIDY1MDMsIDQxMTEwLCA5ODM0NjcsIDE0OTEsIDY2ODQ3LCAxMjkxNjksIDEyNzMwNCwgNDEwNjEsIAotICAgIDcwNDU0LCAxOTQ4MzgsIDEyNzE4NywgNjUwMjYsIDQxOTkzLCA0MTUwOSwgMTEwNDUsIDY1MDI4LCA3MTE4MSwgNjY0NzYsIAotICAgIDQxMTA4LCA5NzM4LCA0MTk5NSwgMTA3NSwgMTk1OCwgMTI1MzUsIDQxOTkyLCA0MTUwNiwgMTI3MDAyLCA0MTY4NywgMCwgCi0gICAgMTIwNzE3LCAxMjc3NzYsIDk5NDAsIDEyNzI5OSwgNzY5MiwgOTgzODMzLCA4MDA4LCA0MTEzMSwgMzMwLCA4NTY2LCAKLSAgICA2NTA4MywgNjgzOSwgOTgxNiwgMTI2NTE3LCAxMjUzMiwgNzg1NTAsIDc4NTQ2LCAzNTA4LCAxMjcwNTgsIDQzMjM1LCAKLSAgICAxMjAzNTEsIDEyNzI5OCwgNjQxMzksIDc4MjMxLCA2NDExLCAxMjkxMCwgNjc3MTAsIDY2NjQ0LCAxMzAyOCwgNjczNywgCi0gICAgMTI1MzcsIDAsIDQzNTA2LCA2NDEzNiwgMTI1MzYsIDIzNTAsIDEzMDI5LCA3ODIzMywgMTIwOTE0LCA0Mzg5NywgMTMwMzAsIAotICAgIDY3MDIsIDQ1MjcsIDcxMjUwLCAxMjUzOCwgMTI4ODEwLCA5ODM2NDUsIDY1NTk5LCA2NTcxNywgOTk2NiwgOTMwNDYsIAotICAgIDQ5NDgsIDEyNDg0LCA0MDMyLCAxMjExNzcsIDEyNjIzLCAwLCA2MjA3LCA5ODMyMjUsIDYxMTcsIDY1OTMwLCA4NDEyLCAKLSAgICAxMjcxODMsIDc0MzgsIDEyOTYsIDIzMjUsIDQxNTExLCAxMjEwMjAsIDEwMTQ5LCA3NDExOCwgMCwgMTIwMjMzLCAxMjQ4MSwgCi0gICAgMTIxMjgwLCAxMjQ4OCwgNjY3MTMsIDAsIDQxNTU2LCA2NDQxNCwgMTE4ODAyLCAyMzU0LCA0MjYxOSwgNzM3NjYsIAotICAgIDExOTI0NCwgNjI5NSwgOTAxLCA0MTUxMCwgNzk1MywgMCwgNjUwMzIsIDQxNTEzLCAxMjAyMDksIDExOTI3LCA2NjU4NCwgCi0gICAgNzg1NTksIDc4NTYwLCA3ODU1NywgNzE0NTksIDgzMDM0LCA2NzYwMywgODQ4LCA5ODY4LCA2NzIyMCwgNjQyNCwgNzg1NjgsIAotICAgIDY3MjI2LCA2OTkyMiwgNzAxOTAsIDc4NTYzLCA3ODU2NCwgMjM1MiwgNjcyMTksIDg5MywgNjQ1NzYsIDExMjg5LCAxNDA3LCAKLSAgICA2Nzk3MywgOTgzMTkzLCAxMzAyNiwgNjc2MiwgNzg1NzksIDcwMTkyLCAxMzAyMywgODkwMywgOTc3NywgNjY3MTUsIDE4NzEsIAotICAgIDgwOTksIDEyNzk4NCwgMCwgMTM0MywgOTE3OTk5LCAxMjA3ODQsIDkzMjUsIDY4MTgsIDYyODMsIDExNzM4LCAwLCA3MjQzNiwgCi0gICAgMTEzNzEzLCAxMTc0MSwgOTE3OTg2LCA3NTA0MywgOTIxNiwgODI2MywgMTEyNzksIDgzMDIzLCA4MzAyNCwgODMwMjUsIAotICAgIDEzMDIxLCA2NDQ5NCwgMzEzNiwgMTk0NzU4LCAxOTQ3NTcsIDE5NDc2MCwgMTMwMjIsIDQyNzM3LCA5OTU2LCAwLCA0Mzk1NCwgCi0gICAgNzQ1NTIsIDEwMDE0LCAwLCA0MTI2MCwgMTE5MzQwLCAxMzAyMCwgMTAwMjQsIDE5NDc2NCwgNzQ1ODMsIDc0MzQwLCAKLSAgICA2OTY4MSwgMCwgNDMwMDEsIDgwMjksIDAsIDAsIDk4Mzc4MCwgMzMzNSwgMTE5MzQxLCA5MjA5LCA5Nzc2LCAxMjA1MjYsIAotICAgIDE5NDc0OCwgNTIxNSwgNDI2NDQsIDMzMzMsIDE2MzIsIDE5NDc1MSwgNjQ4NDksIDMzNDIsIDc4NTgyLCA1MzYzLCAxMjk1NywgCi0gICAgNzg1ODEsIDQxNTYsIDAsIDEyNzMyOSwgNjQyMSwgNzgwMzksIDE2MTEsIDc4NTg5LCAxMzAxOCwgNzQyNTcsIDc4NTg4LCAKLSAgICA3NDU0MiwgMzMzNywgNDUzNywgNjc4OTUsIDExNzM2LCAwLCA2ODYwOCwgNjQ4MiwgNDIxNCwgNzM3OTAsIDExOTQ1LCAKLSAgICA0MzkyNSwgMTMwNDYsIDg4MzgsIDQyNSwgNDAyNSwgMTA3MDksIDc4NTk1LCAyMTA4LCAyMzkyLCAxMzA0NywgOTI3NDUsIDAsIAotICAgIDY4MTksIDEzMDQ5LCA2NDk5LCA5MjI0MywgMTI0MjQsIDY4NjE0LCA2NTgyNywgMTMwNTAsIDk5MjQsIDE5NDc0NSwgNjUwNywgCisgICAgNjk5MzYsIDY5OTM5LCAzODk0LCA2NTU0MywgMTI5MTgzLCAxOTQ4NDIsIDEyMDc5MywgNDkzLCAxMTg5MjUsIDQzMTk3LCAKKyAgICAxNzE3LCA0MjI4LCA0NzksIDEwMzAzLCA3NDAyMCwgMCwgOTE3OTM1LCAxMDMzNSwgMzUyMCwgOTE3OTMyLCAxMjQ5MCwgCisgICAgNjQzMTUsIDkyMTcwLCAxMjcwMzksIDEyNDkzLCA2MjMzLCA0MjY4MSwgMTAwMiwgMTI0OTEsIDgzNTE5LCA2NDkxMSwgCisgICAgODM1MjEsIDIwOTYsIDY1MTIwLCA4MzUxNiwgNzgyMTksIDgzMjcwLCA4Mzc4LCAxMTYzMiwgNjg4MzgsIDY2MjEzLCAKKyAgICA2Mzg2NCwgNjYyMjEsIDY2MjI2LCA2NjIyOSwgMTMyMTgsIDY2MjMxLCA2NjIxNiwgODUwNywgNjYyMzYsIDY2MjExLCAKKyAgICA2NjIxOCwgOTI2NzIsIDY2MjQwLCA3ODA0MSwgNjYyMzMsIDg5MjgsIDk4MzU1MiwgNzkwOSwgNjYyMzQsIDExNjA1LCAKKyAgICA2Mzc1OSwgMTI3MzA4LCA2NjIwOCwgNjczMzksIDEzMDAyLCA2MzgwMywgMjQ0LCAxMTU0MiwgMTI4OTgsIDEyNDk0LCAKKyAgICA3Mzc2MSwgMTI0OTIsIDEyNjY5LCA5NDA3MCwgMCwgNzQxNTMsIDEyMDMxMCwgMTI2NTEzLCAxMjA0NzIsIDQ4ODIsIAorICAgIDEzMDQwLCA5ODMzNjIsIDg2MTIsIDQ4ODUsIDc0MDUzLCAxMjc4MzAsIDEzMDQyLCA0ODgwLCA2NDY2MiwgMjQyOSwgMTM2MCwgCisgICAgMjQ4LCAxMDEwMTgsIDYzNzkzLCA5MjM5NCwgNDIzNTgsIDAsIDcyOTIsIDEwMTAxNywgNjM3NTYsIDQyNzg2LCA2NjY5MywgCisgICAgOTE3NTk4LCAxODcwLCA3ODA0MCwgNDcwLCA3ODAzOCwgNzgwMzUsIDc4MDM2LCA3MDAyOCwgNzgwMzQsIDQ1NzksIDY5MjMyLCAKKyAgICAwLCAxMjUxMSwgNzQ0NTMsIDEyNTE0LCA5ODM5NDcsIDcwNjU2LCA3MjM5LCA3MDAxLCA4NjIzLCA5NDAxMSwgMTI1MTM3LCAKKyAgICAxMjgwNDgsIDczNzgsIDEyNTEyLCAxMTYxNSwgNjEwNCwgMTAxMDExLCAxMjA5MDAsIDY1OSwgNjA5OCwgMTAwOTQ4LCAKKyAgICAxMjIzNCwgODM1MTEsIDY3MzU4LCA4MzExLCAxMjUxMCwgNzY2OSwgMTMwMzksIDgzNTA5LCAxMjUxMywgMTAyMDIsIAorICAgIDEyNDcxLCAwLCA4NzQ3LCAxMjEzODUsIDcwMTkzLCAxMDA5NDYsIDIzMjMsIDEyODE0NywgMjMxOSwgNzc5MTcsIDEyNDc3LCAKKyAgICA3NzkxNiwgMjMxMSwgNzY2NiwgNDQxNSwgMjM3LCA2MjgxLCAxMjcyODAsIDEwMDk0MCwgODMwMjAsIDIzMDksIDEzMTIsIAorICAgIDgxNzMsIDgzMDEzLCAxMjQ2OSwgODMwMTUsIDc4NTA1LCA2NDMzNSwgMTA2MDksIDgzMDExLCA3ODAwNiwgOTM5NywgCisgICAgMTE1MjQsIDkzOTUsIDkzOTYsIDkzOTMsIDkzOTQsIDkzOTEsIDkzOTIsIDkzODksIDYyMDksIDkzODcsIDkzODgsIDQ5MzIsIAorICAgIDkzODYsIDkzODMsIDkzODQsIDY3NDAsIDEyNzk5MCwgNjU0NTEsIDgxODUsIDEyODkzMSwgMTk0ODQzLCA0MzAyNCwgCisgICAgNDMzMzYsIDY3NjU5LCAyMzEzLCA3NDQ0NiwgNzk0OCwgOTIzNiwgNzc5NDIsIDEyODg5OSwgMCwgMTA1NzAsIDQzNDczLCAKKyAgICA2Mjg5LCAxMDQ4NCwgODMwMDYsIDgzMDA3LCAxMTk5OCwgMTIwODIsIDEwOTI0LCAzMTQ3LCA4MzAwNCwgNjY0MDYsIAorICAgIDEyNTI0LCAxMTkwODEsIDIzMTAsIDExODE4LCA5MzgxLCA5MzgyLCA5Mzc5LCA5MzgwLCA5Mzc3LCA5Mzc4LCA5Mzc1LCAKKyAgICA5Mzc2LCAxNjgzLCA5Mzc0LCA5ODM3NzgsIDkzNzIsIDEyNDQ0LCA3NDI1NiwgMCwgMTMwMTYsIDgyMTAsIDEyMTA2MiwgCisgICAgNDIwMjksIDExMDc5LCAxMjMzMSwgNDM0NTEsIDQyMDMyLCA4NzQ0LCA3MjYsIDAsIDEyMDYzMCwgNDE1NSwgMTIxMDkwLCAKKyAgICAxMjA3MDQsIDQyMDMwLCA1MDA3LCAxMjUyMiwgNDMwODgsIDAsIDQ5NTEsIDExMzgyNiwgMTI3MjE3LCA5ODMyMDIsIDk5MjIsIAorICAgIDQzMzA5LCAxMTIxMSwgMTI1MjUsIDE5NTAzNSwgMTIwMTYsIDY1NzcwLCA5NTQ4LCA2NzY2NSwgNDAzLCA3ODIzMCwgCisgICAgMTEwMjEsIDE5NDY4OSwgMTI1MjUwLCAxMTAzMCwgNDM5MTYsIDkyNTY3LCA2NTY5MSwgNjM5OTgsIDE4MTksIDEwNDk2LCAwLCAKKyAgICAxOTQ2NTcsIDExOTkyMCwgMCwgMTI5MTQzLCAxMjEwNzIsIDEyNTA2LCAxOTQ2MDUsIDExMTQ2LCA3MTQ3NywgMTI1MDAsIAorICAgIDQ0MDIzLCAxMjUwOSwgNjQzOTMsIDc4ODMwLCAzMzg5LCAxMDU4OSwgNjYwOCwgMTEyMDgsIDEyMDIzNiwgNzgzOTUsIAorICAgIDc4Mzk0LCA3NDA2OSwgNzE0NDYsIDc4MzkxLCAzNjA4LCA4MjgxLCAxMTM3MzIsIDExMDcsIDExMzc0NSwgOTA3NiwgODg2MiwgCisgICAgNjk3NDMsIDQxMDUyLCAxMzA4NCwgNjQ3NjYsIDQzMjE3LCA3ODAzLCAxMzIyMiwgNzQxNjUsIDc0NzgyLCA0MzQ5OSwgCisgICAgODU0NiwgMTE1NTMsIDYzOTk1LCAxMzE3NywgOTA0MywgNjMwMywgMTEzNjY0LCA0OTgsIDY0NDcxLCA3Nzk4NywgOTI5NzQsIAorICAgIDEyNTI5LCA4MDQyLCA0Mzg5OSwgMjM0NCwgMTI1MjgsIDgwMzEsIDI0MTQsIDc0NTA2LCA2OTcxOSwgMzIzMSwgMTk0NTY5LCAKKyAgICA2NDIyLCA2NjUxMiwgNjk2NTMsIDEyNTMwLCAyNTM3LCA3ODQwNSwgNDE0MjksIDEyNjU4LCAxMzAzNiwgNjU3NzIsIDAsIAorICAgIDc4NzM4LCA0MTQzMywgNDcxOSwgNDY5LCA5MTc4MTAsIDQzNjMsIDMzMTMsIDQxNDI4LCA3ODQwNywgMjAyMywgMTc3MiwgCisgICAgNzgyMjQsIDc4MjI1LCA2NTcwNiwgMTAwNTEsIDY0ODEyLCA3ODIyMCwgNzQyMzcsIDk5MjAsIDEyMjE1LCA4Mjk3OCwgCisgICAgNDkzMSwgMTk1MSwgMTI0OTcsIDExOTM2MywgOTYwNywgNzAzNjgsIDk2NjMsIDY2ODM4LCAxMTk2MzQsIDY1MDMsIDQxMTEwLCAKKyAgICAxMjUyMzIsIDE0OTEsIDY2ODQ3LCAxMjkxNjksIDEyNzMwNCwgNDEwNjEsIDcwNDU0LCAxOTQ4MzgsIDEyMTAxNCwgNjUwMjYsIAorICAgIDQxOTkzLCA0MTUwOSwgMTEwNDUsIDY1MDI4LCA3MTE4MSwgNjY0NzYsIDQxMTA4LCA5NzM4LCA0MTk5NSwgMTA3NSwgMTk1OCwgCisgICAgMTI1MzUsIDQxOTkyLCA0MTUwNiwgMTI3MDAyLCA0MTY4NywgMTI3Mzk4LCAxMjA3MTcsIDEyNzc3NiwgOTk0MCwgMTAwNDE5LCAKKyAgICA3NjkyLCAxMjA2ODAsIDgwMDgsIDQxMTMxLCAzMzAsIDg1NjYsIDY1MDgzLCA2ODM5LCA5ODE2LCAxMjY1MTcsIDEyNTMyLCAKKyAgICA3ODU1MCwgNzg1NDYsIDM1MDgsIDEyNzA1OCwgNDMyMzUsIDEyMDM1MSwgMTI3Mjk4LCA2NDEzOSwgNzgyMzEsIDY0MTEsIAorICAgIDEyOTEwLCA2NzcxMCwgNjY2NDQsIDEzMDI4LCA2NzM3LCAxMjUzNywgMTAwNDE3LCA0MzUwNiwgNjQxMzYsIDEyNTM2LCAKKyAgICAyMzUwLCAxMzAyOSwgNzgyMzMsIDEyMDkxNCwgNDM4OTcsIDEzMDMwLCA2NzAyLCA0NTI3LCA3MTI1MCwgMTI1MzgsIAorICAgIDEwMDQxNiwgMTI5MzUyLCA2NTU5OSwgNjU3MTcsIDk5NjYsIDkzMDQ2LCA0OTQ4LCAxMjQ4NCwgNDAzMiwgMTIxMTc3LCAKKyAgICAxMjYyMywgMTIwMjA3LCA2MjA3LCAxOTQ3MjYsIDYxMTcsIDY1OTMwLCA4NDEyLCAxMjcxODMsIDc0MzgsIDEyOTYsIDIzMjUsIAorICAgIDQxNTExLCAxMjEwMjAsIDEwMTQ5LCA3NDExOCwgMCwgMTE5NjI1LCAxMjQ4MSwgMTIxMjgwLCAxMjQ4OCwgNjY3MTMsIDAsIAorICAgIDQxNTU2LCA2NDQxNCwgMTE4ODAyLCAyMzU0LCA0MjYxOSwgNzM3NjYsIDcyNzU3LCA2Mjk1LCA5MDEsIDQxNTEwLCA3OTUzLCAKKyAgICA5ODM0NjUsIDY1MDMyLCA0MTUxMywgMTIwMjA5LCAxMTkyNywgNjY1ODQsIDc4NTU5LCA3ODU2MCwgNzg1NTcsIDcxNDU5LCAKKyAgICA4MzAzNCwgNjc2MDMsIDg0OCwgOTg2OCwgNjcyMjAsIDY0MjQsIDc4NTY4LCA2NzIyNiwgNjk5MjIsIDcwMTkwLCA3ODU2MywgCisgICAgNzg1NjQsIDIzNTIsIDY3MjE5LCA4OTMsIDY0NTc2LCAxMTI4OSwgMTQwNywgNjc5NzMsIDk4MzE5MywgMTMwMjYsIDY3NjIsIAorICAgIDc4NTc5LCA3MDE5MiwgMTMwMjMsIDg5MDMsIDk3NzcsIDY2NzE1LCAxODcxLCA4MDk5LCAxMjc5ODQsIDEyOTM2NywgMTM0MywgCisgICAgMTI4NDM4LCAxMjA3ODQsIDkzMjUsIDY4MTgsIDYyODMsIDExNzM4LCAxMjAyMTAsIDcyNDM2LCAxMTM3MTMsIDExNzQxLCAKKyAgICAxMjkxOTYsIDc1MDQzLCA5MjE2LCA4MjYzLCAxMTI3OSwgODMwMjMsIDgzMDI0LCA4MzAyNSwgMTMwMjEsIDY0NDk0LCAKKyAgICAzMTM2LCAxOTQ3NTgsIDE5NDc1NywgMTk0NzYwLCAxMzAyMiwgNDI3MzcsIDk5NTYsIDEwMDc0NiwgNDM5NTQsIDc0NTUyLCAKKyAgICAxMDAxNCwgMCwgNDEyNjAsIDExOTM0MCwgMTMwMjAsIDEwMDI0LCAxOTQ3NjQsIDc0NTgzLCA3NDM0MCwgNjk2ODEsIDAsIAorICAgIDQzMDAxLCA4MDI5LCAwLCA5ODM2MzksIDk4Mzc4MCwgMzMzNSwgMTE5MzQxLCA5MjA5LCA5Nzc2LCAxMjA1MjYsIDEyODQwNCwgCisgICAgNTIxNSwgNDI2NDQsIDMzMzMsIDE2MzIsIDE5NDc1MSwgNjQ4NDksIDMzNDIsIDc4NTgyLCA1MzYzLCAxMjk1NywgNzg1ODEsIAorICAgIDQxNTYsIDAsIDEyNzMyOSwgNjQyMSwgNzgwMzksIDE2MTEsIDc4NTg5LCAxMzAxOCwgNzQyNTcsIDc4NTg4LCA3NDU0MiwgCisgICAgMzMzNywgNDUzNywgNjc4OTUsIDExNzM2LCA5ODM3ODksIDY4NjA4LCA2NDgyLCA0MjE0LCA3Mzc5MCwgMTE5NDUsIDQzOTI1LCAKKyAgICAxMzA0NiwgODgzOCwgNDI1LCA0MDI1LCAxMDcwOSwgNzg1OTUsIDIxMDgsIDIzOTIsIDEzMDQ3LCA5Mjc0NSwgMTI1MDQwLCAKKyAgICA2ODE5LCAxMzA0OSwgNjQ5OSwgOTIyNDMsIDEyNDI0LCA2ODYxNCwgNjU4MjcsIDEzMDUwLCA5OTI0LCAxMjgzNzgsIDY1MDcsIAogICAgIDEyNzkxOSwgOTQwNzMsIDEyODA2OSwgMzI3NywgODkyOSwgNDk0NywgNDEwNTUsIDAsIDE5NDcyMiwgMTk0NzIxLCAKICAgICAxOTQ3MjQsIDEzMDQ1LCA2NDYyNiwgNjYwMzQsIDc3NTEsIDE5NDcyNywgODM3MSwgMTIxMDM2LCAzOTk3LCAxMjgwNiwgCiAgICAgODc2OCwgMTMwNDQsIDAsIDEyNDIwLCA0MDI0LCAxMjgwMDAsIDQxMDU0LCAxMDc4LCA5NzU3LCA2OTczNiwgNDEwNTcsIAotICAgIDY4MzA3LCA5MTc4NDIsIDAsIDAsIDk4Mzc5MSwgOTIyMTAsIDkyNDExLCAxMjkzMDMsIDQxNDk2LCAwLCA5MTY1LCAxNTcyLCAKLSAgICAxMTkxMSwgMTI0OTkwLCAxMTg4NDIsIDIzNDYsIDEzMjcwLCA4OTU4LCAwLCA5NjQ2LCAzNzczLCA0MzE4MywgNjQwMSwgCi0gICAgNTgzMSwgMCwgMTIwODY1LCAxMzA0MywgODA1NiwgNzAxMDgsIDY1NjgxLCAyMDgsIDEyNzM4MiwgNDE1MTQsIDAsIAotICAgIDEyMTA0OCwgOTgzODg0LCAxMDY5OSwgNjQwOCwgOTIyMjcsIDc4MjUsIDU2NjEsIDgyOTcyLCA4Mjk3MywgMzYwMywgCi0gICAgNDExMDksIDIzOTgsIDM1NDgsIDgyOTY5LCA4Mjk3MCwgMTE5OTMzLCA4Mjk2NCwgMzExNSwgOTkxOCwgMTI3ODIzLCA4Mjk0LCAKLSAgICA0MjkxMiwgMCwgMTI3Mjg3LCAxOTQ3MjYsIDQ4NzYsIDY1ODA0LCAwLCAwLCA0MzQ2OCwgMTIxMjIxLCA0MTU1OCwgNDE0NzEsIAotICAgIDczOTUwLCA4MTU4LCA5OTQ0LCA0MTQ3MiwgMTIwMjk4LCAxMzA1MSwgNzg2ODksIDMxNDMsIDE5NDY3NCwgNjcwMSwgCi0gICAgNDE1NTksIDE4OTYsIDY1MjE1LCAxMzA1MiwgMTk0NjgwLCA1NjY1LCA3ODU5NCwgMTE5MDcxLCA3MDI1LCA2Mzk3NCwgMCwgCi0gICAgNzQzNTIsIDc0MTYxLCA0MTU0LCA5ODYzLCA0MzU1MCwgMTIzMTAsIDU2NjIsIDQyMzgyLCAxNTY0LCA3MzkyNCwgMTEyMSwgCi0gICAgNzgzMTksIDYzOTU5LCAwLCA5OTQyLCAxMzIzMSwgOTgzNTc4LCA2NDc1MiwgNDczMiwgMTk0NjY2LCAxMTU5NiwgNzgxNDIsIAotICAgIDY1MTg3LCAxNjI2LCA2Mzk4MywgMTAxMTAsIDY0NzcyLCA0MjAyNCwgNjQyMCwgNDIwMjgsIDkyMjk0LCAxMDUwOSwgMjc5NSwgCi0gICAgNDkxMCwgMTI5MTkzLCA2OTIzMSwgNjQ3NTMsIDYyNzUsIDkzOTU3LCAxMTg4MzAsIDYzOTc4LCAxMTA0NCwgMzIyOSwgCi0gICAgNjQyMywgNDI3NzQsIDAsIDAsIDY4NTI2LCAxMjgyMywgMjMzMSwgMTI3Nzg4LCA3MDg1LCA2MTM3LCAwLCA3NTI0LCAKLSAgICAxMjA3MjEsIDkxNzgwOSwgODM0NiwgMTI4NDM4LCA4MzM4LCAxMjgzMTUsIDY1MDQzLCA3Nzk4MiwgODIyLCA3MDQxMiwgCi0gICAgOTkwMywgNjQ3MjEsIDQyNzIyLCA2OTg3NywgODI5NTYsIDc4NjU1LCA2Njg4MiwgODI5NTksIDc4NDg0LCA0MTI2NSwgCi0gICAgNTMxMSwgMTc5NSwgOTY1LCAxMTg3OTEsIDEwNTg3LCA0Mzk2MiwgMTEyNzgsIDc4NjMyLCA3NDExMSwgMTI4MDk1LCAKLSAgICAxMjk0NiwgMTIxMDc2LCA3MTkyMSwgMTIwMzQ5LCA2Mjk0LCAzMTQ0LCAxMTM3MDYsIDEyNzk2NywgNjUwMTksIDc0MDc4LCAKLSAgICA3Mzk5MCwgNjUxMTEsIDk4Mzk2MCwgNzQ4LCA0MTA2NywgMjMzMCwgNTM1LCAzMTQ4LCAxMjM3NSwgNzg3OTksIDE5NDYyOSwgCi0gICAgMTA1NTYsIDI0NzUsIDEyMzg4LCA0ODg5LCA4OTY4LCA2Nzg2MywgMzU5MywgNzQwNzYsIDgyOTQ5LCAyMzQyLCA4Mjk1MSwgCi0gICAgODI5NDQsIDY1MjA2LCA0ODk0LCA4Mjk0NywgNDg5MCwgMTIxMDU5LCA2NDQzMywgNTgxLCA0ODkzLCA0MjkyOSwgNjU3MSwgCi0gICAgNjU1NDUsIDQ4ODgsIDQxNTcsIDc4MDQ4LCA3ODA0OSwgNjQ2NTEsIDc4MDQ3LCAwLCAxMDExOSwgNjQxNSwgNDI4OTMsIDAsIAotICAgIDY5NzAyLCA5ODM5MzcsIDAsIDExMzc1LCA2NDc0NiwgMjMzMiwgNzgwNjMsIDQxMiwgNzgwNjEsIDQyOTI4LCA0Mjg4MCwgCi0gICAgNDM1ODcsIDEyMTA5OCwgMCwgMCwgNzA0NjEsIDY1MTk3LCA3ODA2NiwgMTIyMDMsIDc4MDY0LCA3ODA2NSwgODkxMywgCi0gICAgNjU4NTQsIDQ4NzUsIDY1ODExLCA3NTAyNCwgMTIwMzg5LCA3MTg1NCwgOTM0NCwgODgyNiwgOTI5MTYsIDEyMDM5NSwgCi0gICAgMTMxMDQsIDY3ODI4LCAxMTk5NywgMTIwMzkzLCA3ODA3NSwgMCwgMzEzNCwgODMwOTYsIDY1Njk2LCA3MjQzMiwgMTIxNDEyLCAKLSAgICA2NjIxNywgMTIxMTkwLCA4MzM0LCA5Mjc1NSwgODMyMDcsIDM0NDksIDEyMTI2NCwgMTMxMDAsIDc4NDE0LCA3ODQxMywgCi0gICAgODMyMTYsIDY2NDA1LCA3MDQzMCwgODMwODksIDgzMjAzLCAxMjcyNTAsIDE5MDgsIDEyMDE2NywgNDMyOCwgMTA3MzQsIAotICAgIDEyNzAxNCwgODMxOTgsIDY3ODI1LCA3ODA0LCA3ODI3MiwgMTA4MTEsIDYyNTAsIDExMzM5LCA0OTE0LCAxMTM2NywgCi0gICAgODM1MTAsIDc4MDU0LCA0OTE3LCA3NDUxNiwgNzQyMDgsIDY0Mjg1LCA0OTEyLCA1NDY0LCAxMjc4MzYsIDgzMTAwLCAyMzYxLCAKLSAgICA3OTcxLCA3ODA3MiwgNzgwNzMsIDU1MjQzLCA3ODA3MSwgOTgzNTc1LCA4MDg2LCA3NDMxNywgNjcwNywgODMxOSwgMjMxMiwgCi0gICAgNDA5NzcsIDEwOTYwLCA0MDk2MiwgODMwNSwgMTI1NzMsIDcxMTMxLCA0MDk4MCwgOTgzOTY0LCAxMzIwMiwgMTI3ODE2LCAKLSAgICAxMjU4MiwgNzgyODIsIDk4MzA0OCwgNjk4NTYsIDQyNDM4LCA1NTIyMSwgNjI4OCwgNzgyODAsIDEyNzk0NiwgNTY1MywgCi0gICAgNDI0MDAsIDEwODkxLCA3Njk4LCA1NjU4LCA3MDQwMSwgNzAwMzksIDAsIDcwNDYwLCA0OTEzLCA3MTA2MCwgMTI4NTYyLCAKLSAgICA3MTMzMywgNDIzMjYsIDEyMTExOSwgMTI3MjgsIDkyNjg1LCA0MjQ3OCwgMjMyNywgMCwgMTI1NjMsIDQyMjg3LCAxMjcwNSwgCi0gICAgMTIwODI5LCA4MzA4MSwgMTI1ODgsIDg4MjEsIDYxNTMsIDI4NjcsIDgzMDg1LCA2NjMxMiwgNjk4LCA4MzA3NiwgODMwODcsIAotICAgIDEwMzU2LCA3MDAxNywgMTI4NTcwLCA2NTEsIDEyNjQxLCA4MzEzOCwgMTI1MDk4LCAxMjA3MTAsIDEyOTA2NCwgNDE1NTIsIAotICAgIDY1MTE1LCA3ODQ2NSwgNzg0NjcsIDc4NDYzLCA3NDkwNSwgMTI3NTE2LCA3ODQ2MSwgOTI5NjAsIDY2OTI3LCA2NDk0NSwgCi0gICAgNDcxNiwgNDMyNzcsIDEyMDkzMiwgNzg0NzQsIDEyMzQwLCAxMjA1NjgsIDEyMDkyOCwgMTk0NzAwLCA1NTI2NCwgNDEyMTEsIAotICAgIDEyMDY3NiwgODcwMywgNTQ2MiwgODMxOTUsIDgzMTg1LCAxMDEwMSwgMCwgNzAwNDksIDg0NzksIDQxNTEsIDQxOTMzLCAKLSAgICA4MzE4OSwgMCwgNjYyNTQsIDEyMDgyMSwgNjg0OTcsIDAsIDEyODY1NCwgMTEzNzk5LCA4MzE1OSwgNzQwNTAsIDQyNjUxLCAKLSAgICAxMjczNzEsIDAsIDAsIDgzMjI1LCA4MzIxOCwgMTIyNzgsIDc1MDExLCAxMjg0MDUsIDAsIDI3MDAsIDEyNTc2LCA3ODQyLCAKLSAgICAxMjg5OSwgODMxNTUsIDAsIDI2OTksIDEyOTMwNCwgNzM4NDUsIDI5ODUsIDgzMTQ5LCA2ODY0OCwgODMxNDYsIDEyMTkyLCAKLSAgICAxMTkzMTQsIDAsIDY2NDg5LCA5ODI3LCAxMTkzMTAsIDg2MDksIDExOTMwOCwgNjc0MjYsIDExOTMwNiwgMTE0ODEsIAotICAgIDQxMjEwLCAxMTkzMDUsIDAsIDM1LCA3MDgzOCwgNjc0MzEsIDY2Njk0LCA2ODQ3OSwgNzg0NzcsIDY3NDI4LCA0MzU5NiwgCi0gICAgNjA5MCwgNjQyNTcsIDc4MTIsIDEwNTM0LCAwLCA3ODQ4NSwgNzM4NDgsIDY3OTc1LCA0MjcyLCA3ODMyMSwgNDA5NjcsIAotICAgIDQwOTY0LCA5MTc4MjUsIDEyNzA0LCA3ODQ4NywgNDMzMDYsIDAsIDY0NDk3LCAxMjEzOCwgNzkzMCwgMCwgMjI5MiwgCi0gICAgNjgyMTYsIDE5NDg3MSwgMTIxMzkwLCA1MjQ0LCA0MTg5LCA5MjY5NywgNjc1OTYsIDEyNzUwNCwgNDE4OCwgMTg3OSwgCi0gICAgNzA0NjMsIDk2OCwgMCwgNDM3NDMsIDAsIDg4NzMsIDIyNzksIDEyNzEwMCwgOTE3ODI3LCA2NTU1NSwgMTI1NzQsIDAsIAotICAgIDkyNzQ5LCA5Mjc1MywgNzQ0OTAsIDEyNzA5OSwgMTE4MzgsIDc1MDAxLCAwLCAwLCA0MjY4MiwgMTI1NzgsIDEyNzIwLCAwLCAKLSAgICA0MTIyNywgMCwgMTIzNDYsIDEyNzEwMSwgNjQ4NDgsIDY5OTUwLCA5MTc5NTAsIDcyNTEsIDAsIDEyMDM4MiwgMTE4ODUwLCAKKyAgICA2ODMwNywgOTE3ODQyLCAxMjc4OTcsIDAsIDk4Mzc5MSwgOTIyMTAsIDcyNzM1LCAxMjkzMDMsIDQxNDk2LCAxOTQ1NzQsIAorICAgIDkxNjUsIDE1NzIsIDExOTExLCAxMjQ5OTAsIDExODg0MiwgMjM0NiwgMTMyNzAsIDg5NTgsIDk4MzQxNiwgOTY0NiwgMzc3MywgCisgICAgNDMxODMsIDY0MDEsIDU4MzEsIDE5NDcyMywgMTIwODY1LCAxMzA0MywgODA1NiwgNzAxMDgsIDY1NjgxLCAyMDgsIAorICAgIDEyNzM4MiwgNDE1MTQsIDEyMTEyNCwgMTIxMDQ4LCA5ODM4ODQsIDEwNjk5LCA2NDA4LCA5MjIyNywgNzgyNSwgNTY2MSwgCisgICAgODI5NzIsIDgyOTczLCAzNjAzLCA0MTEwOSwgMjM5OCwgMzU0OCwgODI5NjksIDgyOTcwLCAxMTk5MzMsIDgyOTY0LCAzMTE1LCAKKyAgICA5OTE4LCA3MjcyMywgODI5NCwgNDI5MTIsIDE5NDc0NSwgMTI1MTg1LCAxMjY0ODMsIDQ4NzYsIDY1ODA0LCAwLCAxMDA1ODMsIAorICAgIDQzNDY4LCAxMjEyMjEsIDQxNTU4LCA0MTQ3MSwgNzM5NTAsIDgxNTgsIDk5NDQsIDQxNDcyLCAxMjAyOTgsIDEzMDUxLCAKKyAgICA3ODY4OSwgMzE0MywgMTk0Njc0LCA2NzAxLCA0MTU1OSwgMTg5NiwgNjUyMTUsIDEzMDUyLCAxMTk5MzAsIDU2NjUsIAorICAgIDc4NTk0LCA4MzEyOSwgNzAyNSwgNjM5NzQsIDEwMDQ2NCwgNzQzNTIsIDc0MTYxLCA0MTU0LCA5ODYzLCA0MzU1MCwgCisgICAgMTIzMTAsIDU2NjIsIDQyMzgyLCAxNTY0LCA3MzkyNCwgMTEyMSwgNzgzMTksIDYzOTU5LCA5ODMxODQsIDk5NDIsIDEzMjMxLCAKKyAgICA5ODMyNTAsIDY0NzUyLCA0NzMyLCAxOTQ2NjYsIDExNTk2LCA3ODE0MiwgNjUxODcsIDE2MjYsIDYzOTgzLCAxMDExMCwgCisgICAgNjQ3NzIsIDQyMDI0LCA2NDIwLCA0MjAyOCwgOTIyOTQsIDEwNTA5LCAyNzk1LCA0OTEwLCAxMjkxOTMsIDY5MjMxLCAKKyAgICA2NDc1MywgNjI3NSwgOTM5NTcsIDExODgzMCwgNjM5NzgsIDExMDQ0LCAzMjI5LCA2NDIzLCA0Mjc3NCwgMTAwNDU1LCAwLCAKKyAgICA2ODUyNiwgMTI4MjMsIDIzMzEsIDEyNzc4OCwgNzA4NSwgNjEzNywgMCwgNzUyNCwgMTIwNzIxLCAxMTM3MDMsIDgzNDYsIAorICAgIDc4ODAyLCA4MzM4LCAxMjgzMTUsIDY1MDQzLCA3Nzk4MiwgODIyLCA3MDQxMiwgOTkwMywgNjQ3MjEsIDQyNzIyLCA2OTg3NywgCisgICAgODI5NTYsIDc4NjU1LCA2Njg4MiwgODI5NTksIDc4NDg0LCA0MTI2NSwgNTMxMSwgMTc5NSwgOTY1LCAxMTg3OTEsIDEwNTg3LCAKKyAgICA0Mzk2MiwgMTEyNzgsIDc4NjMyLCA3NDExMSwgMTI4MDk1LCAxMjk0NiwgMTIxMDc2LCA3MTkyMSwgMTIwMzQ5LCA2Mjk0LCAKKyAgICAzMTQ0LCAxMTM3MDYsIDEyNzk2NywgNjUwMTksIDc0MDc4LCA3Mzk5MCwgNjUxMTEsIDkxNzk1NCwgNzQ4LCA0MTA2NywgCisgICAgMjMzMCwgNTM1LCAzMTQ4LCAxMjM3NSwgNzg3OTksIDEyOTMxMywgMTA1NTYsIDI0NzUsIDEyMzg4LCA0ODg5LCA4OTY4LCAKKyAgICA2Nzg2MywgMzU5MywgNzQwNzYsIDcyNzUwLCAyMzQyLCA4Mjk1MSwgODI5NDQsIDY1MjA2LCA0ODk0LCA4Mjk0NywgNDg5MCwgCisgICAgMTIxMDU5LCA2NDQzMywgNTgxLCA0ODkzLCA0MjkyOSwgNjU3MSwgNjU1NDUsIDQ4ODgsIDQxNTcsIDc4MDQ4LCA3MDczNSwgCisgICAgNjQ2NTEsIDc4MDQ3LCA5MTc4MDYsIDEwMTE5LCA2NDE1LCA0Mjg5MywgOTgzMDY4LCA2OTcwMiwgOTgzOTM3LCAwLCAKKyAgICAxMTM3NSwgNjQ3NDYsIDIzMzIsIDc4MDYzLCA0MTIsIDc4MDYxLCA0MjkyOCwgNDI4ODAsIDQzNTg3LCAxMjEwOTgsIDAsIDAsIAorICAgIDcwNDYxLCA2NTE5NywgNzgwNjYsIDEyMjAzLCA3ODA2NCwgNzgwNjUsIDg5MTMsIDY1ODU0LCA0ODc1LCA2NTgxMSwgCisgICAgNzUwMjQsIDEyMDM4OSwgNzE4NTQsIDkzNDQsIDg4MjYsIDkyOTE2LCAxMjAzOTUsIDEzMTA0LCA2NzgyOCwgMTE5OTcsIAorICAgIDEyMDM5MywgNzgwNzUsIDAsIDMxMzQsIDgzMDk2LCA2NTY5NiwgNzI0MzIsIDEwMDYzMSwgNjYyMTcsIDEyMTE5MCwgODMzNCwgCisgICAgOTI3NTUsIDgzMjA3LCAzNDQ5LCA4MzIxNCwgMTMxMDAsIDc4NDE0LCA3ODQxMywgODMyMTYsIDY2NDA1LCA3MDQzMCwgCisgICAgODMwODksIDgzMjAzLCAxMjcyNTAsIDE5MDgsIDEyMDE2NywgNDMyOCwgMTA3MzQsIDEyNzAxNCwgNzA3MDksIDY3ODI1LCAKKyAgICA3ODA0LCA3ODI3MiwgMTA4MTEsIDYyNTAsIDExMzM5LCA0OTE0LCAxMTM2NywgODM1MTAsIDc4MDU0LCA0OTE3LCA3MDY4NiwgCisgICAgNzI4MTYsIDY0Mjg1LCA0OTEyLCA1NDY0LCAxMjc4MzYsIDgzMTAwLCAyMzYxLCA3OTcxLCA3ODA3MiwgNzgwNzMsIDU1MjQzLCAKKyAgICA3ODA3MSwgMTk0NjkzLCA4MDg2LCA3NDMxNywgNjcwNywgODMxOSwgMjMxMiwgNDA5NzcsIDEwOTYwLCA0MDk2MiwgODMwNSwgCisgICAgMTI1NzMsIDcxMTMxLCA0MDk4MCwgOTgzOTY0LCAxMzIwMiwgMTI3ODE2LCAxMjU4MiwgNzgyODIsIDk4MzA0OCwgNjk4NTYsIAorICAgIDQyNDM4LCA1NTIyMSwgNjI4OCwgNzgyODAsIDEyNzk0NiwgNTY1MywgNDI0MDAsIDEwODkxLCA3Njk4LCA1NjU4LCA3MDQwMSwgCisgICAgNzAwMzksIDAsIDcwNDYwLCA0OTEzLCA3MTA2MCwgMTI4NTYyLCA3MTMzMywgNDIzMjYsIDEyMTExOSwgMTI3MjgsIDkyNjg1LCAKKyAgICA0MjQ3OCwgMjMyNywgMCwgMTI1NjMsIDQyMjg3LCAxMjcwNSwgMTAwNDgzLCA4MzA4MSwgMTI1ODgsIDg4MjEsIDYxNTMsIAorICAgIDI4NjcsIDgzMDg1LCA2NjMxMiwgNjk4LCA4MzA3NiwgODMwODcsIDEwMzU2LCA3MDAxNywgMTI4NTcwLCA2NTEsIDEyNjQxLCAKKyAgICA3MjgwOSwgMTI1MDk4LCAxMDA2MzksIDEyOTA2NCwgNDE1NTIsIDY1MTE1LCA3ODQ2NSwgNzg0NjcsIDc4NDYzLCA3NDkwNSwgCisgICAgMTI3NTE2LCA3ODQ2MSwgOTI5NjAsIDY2OTI3LCA2NDk0NSwgNDcxNiwgNDMyNzcsIDcyNzQ1LCA3ODQ3NCwgMTIzNDAsIAorICAgIDEyMDU2OCwgNzA3MjEsIDcwNzE5LCA1NTI2NCwgNDEyMTEsIDEyMDY3NiwgODcwMywgNTQ2MiwgODMxOTUsIDgzMTg1LCAKKyAgICAxMDEwMSwgMTIwNDQxLCA3MDA0OSwgODQ3OSwgNDE1MSwgNDE5MzMsIDgzMTg5LCAwLCA2NjI1NCwgMTIwODIxLCA2ODQ5NywgCisgICAgMCwgMTI4NjU0LCAxMTM3OTksIDgzMTU5LCA3NDA1MCwgNDI2NTEsIDEyNzM3MSwgMCwgMCwgODMyMjUsIDgzMjE4LCAKKyAgICAxMjI3OCwgNzA3MTYsIDEyODQwNSwgMCwgMjcwMCwgMTI1NzYsIDc4NDIsIDEyODk5LCA4MzE1NSwgMCwgMjY5OSwgCisgICAgMTI5MzA0LCA3MjcxOCwgMjk4NSwgODMxNDksIDY4NjQ4LCA4MzE0NiwgMTIxOTIsIDExOTMxNCwgMTI5MDYyLCA2NjQ4OSwgCisgICAgOTgyNywgMTE5MzEwLCA4NjA5LCAxMTkzMDgsIDY3NDI2LCAxMTkzMDYsIDExNDgxLCA0MTIxMCwgMTE5MzA1LCAxMjUyMDcsIAorICAgIDM1LCA3MDgzOCwgNjc0MzEsIDY2Njk0LCA2ODQ3OSwgNzg0NzcsIDY3NDI4LCA0MzU5NiwgNjA5MCwgNjQyNTcsIDc4MTIsIAorICAgIDEwNTM0LCAwLCA3ODQ4NSwgNzM4NDgsIDY3OTc1LCA0MjcyLCA3ODMyMSwgNDA5NjcsIDQwOTY0LCAxMjQ5ODMsIDEyNzA0LCAKKyAgICA3ODQ4NywgNDMzMDYsIDAsIDY0NDk3LCAxMjEzOCwgNzkzMCwgMCwgMjI5MiwgNjgyMTYsIDE5NDg3MSwgNzI3MzcsIDUyNDQsIAorICAgIDQxODksIDkyNjk3LCA2NzU5NiwgMTI3NTA0LCA0MTg4LCAxODc5LCA3MDQ2MywgOTY4LCAwLCA0Mzc0MywgOTgzNjg1LCAKKyAgICA4ODczLCAyMjc5LCAxMjcxMDAsIDkxNzgyNywgNjU1NTUsIDEyNTc0LCAxMjExMDMsIDkyNzQ5LCA5Mjc1MywgNzQ0OTAsIAorICAgIDEyNzA5OSwgMTE4MzgsIDY2Nzg3LCAwLCAxMjA2NjQsIDQyNjgyLCAxMjU3OCwgMTI3MjAsIDk4MzY5OCwgNDEyMjcsIAorICAgIDcyNzY1LCAxMjM0NiwgMTI3MTAxLCA2NDg0OCwgNjk5NTAsIDkxNzk1MCwgNzI1MSwgMTEzNzkyLCAxMjAzODIsIDExODg1MCwgCiAgICAgMTE5MTQxLCAxMjg0NjEsIDY2MDE1LCA2NzMzMiwgOTU5LCA4ODg1LCAxMjU2NCwgNjY0NTcsIDc4ODA4LCA5NDY5LCA5NjMyLCAKLSAgICA5MjIzMSwgNzQ3NjEsIDY0MzIzLCAxMjczMzUsIDEyODg0MiwgMCwgMTExMzIsIDMxMCwgMTIwOTI0LCA0MTI4MSwgMTA5NzYsIAotICAgIDAsIDcxMzI1LCAxMjgzNjQsIDc0MjY2LCAxMDA1NCwgNjQ5NywgODU3NCwgOTE3ODIzLCA5MDEyLCAxOTk1OCwgNzQ0MjAsIAotICAgIDY1MDg5LCAxMzIxNSwgMTI3MzAsIDY1MTYzLCA2NDI2MCwgMzc0LCA0MzE5NSwgODE2LCA5Mjc4MywgMCwgODMxOTEsIAotICAgIDQxOTM0LCA3NDY1LCA3NDYxNSwgOTI3NTIsIDEyNzg5NSwgNDcxNSwgNjEwMSwgNzEwODksIDQxOTM2LCA4Mjk2NywgNDg3OSwgCi0gICAgNDM5NjUsIDY1NDQ2LCAwLCAzMDcsIDEyNzE0NywgOTU4NSwgNTM3NCwgMTI3OTYyLCAxMjgwNTksIDAsIDEyOTE4OSwgCi0gICAgMTI2NjE4LCAxMjAzOTAsIDc0OTUzLCA2NTU2NywgMTIwNjE0LCAxOTI5LCAxMjA5ODQsIDEyMTQyLCAxOTQ2OTYsIDEyMjM2LCAKLSAgICA0MTQxOSwgMTk0NjE4LCAxMjA2MTAsIDEyOTgyLCA3NTAwMywgNTM3OCwgNzUwMDQsIDEyMDk1NywgNDE0MjEsIDc1MDA1LCAKLSAgICA0NDYyLCAwLCAxMjY1OTksIDEyODA5MiwgODIxLCAwLCAyNDk4LCA1ODAwLCAxMjAxNTcsIDY3NzU4LCAxNzYwLCAyNDIxLCAKLSAgICA0NDY5LCAyMzI0LCA4MjgsIDM2MTEsIDc4NDAwLCA3NTcsIDExODUsIDAsIDc4NzcwLCA0MzU5NywgMTA2MjgsIDc0ODA4LCAKLSAgICA2ODg0OSwgNzk5OSwgNDM5NzEsIDExMjE3LCAxMjEyMjQsIDEwNjM0LCAxMDk0MiwgNzcxMywgMjM0OCwgMCwgNjQzNzQsIAotICAgIDQzODAsIDEyODI4NCwgODMwNjEsIDk5ODIsIDY0MzI0LCA0MTI0MCwgODYyLCA2NDQ2OCwgNzg0NjIsIDE4MTAsIDM2NzMsIAotICAgIDUxMzcsIDE5NDYxNywgMCwgNzI3NywgNjU2MjIsIDY1MDY5LCA3NTY2LCA2NDY4OCwgNjcxNDMsIDE5NDU5MiwgNzQ5NTcsIAotICAgIDQzOTEyLCAxMjgzODUsIDQ3NDgsIDkyMjI4LCAxMjkxODUsIDE5NDYwMSwgNDIyNjAsIDU4NzEsIDExOTA3NSwgMTIxMjc4LCAKLSAgICA3NDU3NiwgNDQwMTksIDE5NDcyMCwgMTI4MTg5LCAzOTY3LCA3MTA5OCwgMTMxMzcsIDg3NzUsIDEyNzk0NSwgMCwgMjk2MywgCi0gICAgOTE3Nzg1LCA4NDEwLCA0NDU0LCA3MjMsIDgzMDg0LCA5NjYsIDQ0NDksIDkyMzMwLCA5MjIzOCwgNzUwMjIsIDc4MTksIAotICAgIDIzMjAsIDE5NDU4OSwgMzM5LCA0OTY4LCAxOTQ1OTAsIDEyMDM5OSwgODA3NSwgNTUyNzYsIDgzMDU3LCA4MDQ3LCAwLCAKLSAgICA3ODgyNywgMTI2MzQsIDQxNTQyLCA3ODc4MCwgNzQ2NiwgNjcwNSwgMTIxNzQsIDQyNjEwLCAxMjQ5MzQsIDc0NDUyLCAKLSAgICA5ODM3NjMsIDE1ODQsIDY2NjQ1LCA2MDQ1LCA2NzI5LCAxMjA2NDAsIDY1MjE4LCAxMTU1OSwgMTk0OTgzLCA3ODA2MiwgCi0gICAgNzUzNywgMTI0OTkxLCAxMTM3MCwgMTI1MDkzLCAxMDMzMCwgNzg3OTgsIDEwMzk0LCA5MjIzNiwgNzQxOTQsIDAsIAotICAgIDEyNzkyOSwgOTc4MCwgMCwgMTExMTcsIDc0OTkzLCA3Nzk1MCwgNjcwOTEsIDcwNzQsIDkyNjQ4LCAxOTQ1NzksIDE5NDU4MiwgCi0gICAgMTE0MTQsIDY4NzgxLCAyNTMxLCAxMzAzNCwgMTI5MTU5LCAwLCA0MjExLCAxMjU5LCA3NTE3LCA3MDg2NiwgNzAxOTgsIAotICAgIDgzMTIyLCA0MDk5NiwgMTMwMzcsIDcwOTIsIDY0MSwgNTIxOSwgODMxMjUsIDE5NDU2NiwgMTEwNjQsIDQxMTI5LCAKLSAgICAxMjEyNTMsIDQyODUwLCAxMzAzNSwgOTA3NSwgOTIzODcsIDU0NjYsIDc0MjkzLCA3NDUzMCwgNjQwOTgsIDY1NzkzLCAKLSAgICA0NTM1LCAxMjEyNjcsIDQyNzEsIDc4NDE3LCAxMjcwNTksIDY3NjksIDQxNDEwLCAxMjcyNTcsIDY0MjYyLCA2NzY3LCAKLSAgICA0MTQwNywgNjYyNzMsIDkxNzgxNiwgNjc1NSwgMTE4ODY0LCA5MDQ2LCAxMjA4ODYsIDEyNjYwOCwgNzA4MzAsIDAsIAotICAgIDgzMjMyLCAwLCA2NzY3NSwgOTgzNjk0LCA4MzIzNCwgMTIxMjU0LCA2NDMzOCwgMjU2MywgMTMwMzMsIDI0NywgODMyMjksIAotICAgIDAsIDEyMzM4LCA0NjUxLCA2NzM1NSwgMTEyNzAsIDAsIDc0NjMwLCAxMTkzMywgNzAxMDcsIDAsIDQxOTAzLCA0MzQ0NywgCi0gICAgMTEwMDEsIDczODI3LCA0MjI1NSwgODMyNDMsIDgzMjM4LCA2OTgyMSwgNDE5MDUsIDY3MzUwLCAwLCAxMDc3NSwgOTc5MywgCi0gICAgNTAwOSwgMTI4Nzc0LCA0MjI2OSwgNjQ1ODcsIDk4MzA2MywgNDI1MzUsIDY5ODEyLCA2NDUyOSwgNDE0MDgsIDQyODUzLCAKLSAgICAzODc3LCAxMjA3OTUsIDQyNjc0LCA4MTQ3LCA0MzU2NiwgMTE5MDIxLCA2NzM0MiwgMTAyMzYsIDY1OTE4LCA0Mzc4MiwgCi0gICAgNzg3NjksIDc4MDYwLCA2NDUwNiwgNjk2NTIsIDExODkyMSwgNDc0NywgODMyNTEsIDY5ODQ0LCA0MzIwMCwgNTgzMiwgCi0gICAgNzEyMDgsIDgzMjUwLCA1MTQxLCA0MjYwMCwgNzE4NjYsIDQzMjAzLCAxMjcyMDgsIDEyMDEyOSwgNDMyODYsIDAsIAotICAgIDEyODIxMSwgNDM3NzgsIDc2NTcsIDQxMzA1LCA3MTEzMiwgNDM3ODEsIDExMzAzLCA2NTU0NywgMTI4NjA5LCA3MDMxLCAKLSAgICA4NTksIDEyODQ4OCwgODMyNjIsIDgzMjM3LCA2MDU5LCAxMjY5ODUsIDU1MjM1LCAxOTQ4MTcsIDg1MzUsIDEyODYzOCwgCi0gICAgNjUxOTYsIDEyNTA4NCwgNjYwMzIsIDExNDg4LCAxMjA0ODEsIDEyMDc4NiwgNDIyMzMsIDY0MTQwLCA5OTQ2LCA3NjY3LCAKLSAgICAxOTQ3OTIsIDExODIyLCAxMjg1OTEsIDExMTM1LCA5ODM2MDAsIDAsIDE3ODgsIDE1NzksIDEyMDQ4MiwgNzEyOTgsIDAsIAotICAgIDk4MzQ2MSwgMCwgOTAyOCwgMTE5NTcxLCA2OTIzNCwgNzEwNjEsIDkyNTQ1LCAxMjg1LCA2NDg4MiwgNDEyNDIsIDcwMDg2LCAKLSAgICA4MzExMSwgMTI2NDAsIDgzMTEyLCA3NDAxLCAwLCAxMjYyNSwgNjgxOTgsIDAsIDcwMDgyLCAzOTQwLCA0MTU5NywgNDM3NTQsIAotICAgIDMzOTYsIDEyNjQyLCA4NjY1LCA5ODM2MTAsIDk4MzYwOSwgMTI2MzAsIDE2NTMsIDkxNzgxNSwgMTAxNTMsIDAsIDYxNjYsIAotICAgIDcwODI1LCAxMTg5ODksIDEyOTQwOSwgODgxNSwgNjY2NzMsIDY1MDQ2LCA5Mjg1LCA5MTMsIDQyMjU5LCAxMTE4MCwgCi0gICAgMTE5MzE4LCAyMTQyLCA2ODQ1NCwgNDI0ODUsIDk0MDEyLCA3ODc4LCA4MjExLCA0MjI5MywgNjQzNzcsIDEyMDQ3OCwgCi0gICAgOTI2NDMsIDEyMTExOCwgMTk0NjczLCAxMjAzMiwgMCwgOTcyNSwgOTgzNDkxLCA3ODQzMSwgNTI2MywgMTI4MTgsIDc4NDMwLCAKLSAgICA0MTkzOSwgMTAwMjIsIDY1Mzg3LCA3ODQxOSwgNDI3NzcsIDEwMTM5LCA5ODAsIDQzNjk4LCA2NTM4NiwgMjIwOCwgNjg4NDgsIAotICAgIDQzNzAxLCA0MzE5OCwgNzE4NCwgOTI1NDIsIDEyODQyMywgMTI4ODc1LCAxMDA4NSwgNzQ5NzksIDAsIDY3Mzk0LCA2NjM0LCAKLSAgICA5MjM3MywgMTI1MDg1LCA4MzQxMywgODA3MiwgMTE5MzIxLCA0MzcwMCwgMCwgODg3MiwgNzc4MywgOTE3OTkxLCAxMjM5OCwgCi0gICAgODIzNywgMCwgMCwgMTIzOTUsIDAsIDEyNjk3NywgNzQ4OTEsIDk5MTQsIDIyMTcsIDkyMzIzLCA3Mzk3NSwgNjM2NywgCi0gICAgNjM1MSwgNjY2ODgsIDkyNzQwLCA2ODc2NiwgMCwgNjQ3MzUsIDQxMjQzLCA5MjE5OSwgNzgwOCwgMTgyOSwgMTI2NTQxLCAKLSAgICA0MTkzNywgNDM1OCwgNDMyNzIsIDYzNTMsIDAsIDAsIDEyMDQyMiwgOTMwNDUsIDE3MTAsIDEyMDE0MCwgMCwgNjU2MDcsIAotICAgIDY3MjM0LCA0OSwgNjYyNywgMCwgNjI1OCwgMTA2ODMsIDc4NjcyLCA5NzQxLCA3ODMyOSwgNTY0OSwgNzg0NDEsIDQzNDQzLCAKLSAgICA2NDQxOCwgMTY0MywgNjUyMTMsIDg0MDUsIDM0NzAsIDY3MjQ0LCAxMzIxMywgNDI0NTIsIDc4MzMxLCA3ODAxMywgNzg0NDUsIAotICAgIDEyNTEyNCwgMTA3MiwgNzg0NTcsIDc4NDUyLCA3ODQ1NCwgNjU3NiwgNDE5ODgsIDQxMTMyLCA2NTY3NSwgMTA4MCwgCi0gICAgNzA4MjQsIDk4ODYsIDU1MjI1LCAxMTAxLCA2ODQwNCwgMTIzMDksIDU1MjI3LCA3MTA4MiwgMTI2MzIsIDEwODYsIDE4NjksIAotICAgIDc4Njg1LCA3NjgwLCAwLCA2NTQ1OCwgMTIwNzE0LCAxMjYzOSwgMzM4MCwgODEyMywgMTA5MSwgMTI2MzgsIDc5NzcsIAotICAgIDQ1MDEsIDQxMDk5LCAwLCA2NjMwOSwgMTIwMTQxLCA5Mjc1OCwgMTQ5NCwgMTEzNzE2LCAxMjY2MTMsIDAsIDExNjkzLCAKLSAgICA3MTI1NSwgMTA0OTQsIDkyNjU1LCA2NTg3MiwgMTIzNjMsIDExMzg2LCAxMTM3MjcsIDAsIDAsIDc4NzcxLCA2NDU4MiwgMCwgCi0gICAgNzM3OTQsIDY3Mzk1LCA4MDIyLCAxMjA5ODksIDEyMDQ2MiwgNzQxMDYsIDEyNDEzLCA2Njg4MywgOTE3OTk0LCA5MzAzNSwgCi0gICAgNzUwMDcsIDU1NzAsIDE4ODEsIDcyMTAsIDEyMDQyNSwgMTAxMiwgNDM3NTIsIDAsIDEyMDcwOSwgNzIwOCwgNjY0NDIsIAorICAgIDkyMjMxLCA3NDc2MSwgNjQzMjMsIDEyNzMzNSwgNzQxMDIsIDIyNjYsIDExMTMyLCAzMTAsIDEyMDkyNCwgNDEyODEsIAorICAgIDEwOTc2LCAxMDEwNjksIDcxMzI1LCAxMjUyNzksIDc0MjY2LCAxMDA1NCwgNjQ5NywgODU3NCwgMTAxMDg3LCA5MDEyLCAKKyAgICAxOTk1OCwgNzQ0MjAsIDY1MDg5LCAxMzIxNSwgMTI3MzAsIDY1MTYzLCA2NDI2MCwgMzc0LCA0MzE5NSwgODE2LCA5Mjc4MywgCisgICAgMCwgODMxOTEsIDQxOTM0LCA3NDY1LCA3NDYxNSwgOTI3NTIsIDcwNjY2LCA0NzE1LCA2MTAxLCA3MTA4OSwgNDE5MzYsIAorICAgIDgyOTY3LCA0ODc5LCA0Mzk2NSwgNjU0NDYsIDAsIDMwNywgMTI3MTQ3LCA5NTg1LCA1Mzc0LCAxMjc5NjIsIDEyODA1OSwgCisgICAgMTAwNDcyLCAxMjkxODksIDEwMDQ3MSwgMTIwMzkwLCA3MDcyNywgNjU1NjcsIDEwMDk2NCwgMTkyOSwgMTIwOTg0LCAKKyAgICAxMjE0MiwgMTk0Njk2LCAxMjIzNiwgNDE0MTksIDE5NDYxOCwgMTIwNjEwLCAxMjk4MiwgNzUwMDMsIDUzNzgsIDc1MDA0LCAKKyAgICAxMjA5NTcsIDQxNDIxLCA3NTAwNSwgNDQ2MiwgMCwgMTI2NTk5LCAxMjgwOTIsIDgyMSwgMTI1MDMwLCAyNDk4LCA1ODAwLCAKKyAgICAxMDA4MzQsIDY3NzU4LCAxNzYwLCAyNDIxLCA0NDY5LCAyMzI0LCA4MjgsIDM2MTEsIDc4NDAwLCA3NTcsIDExODUsIAorICAgIDEyODI3NCwgNzg3NzAsIDQzNTk3LCAxMDYyOCwgNzQ4MDgsIDY4ODQ5LCA3OTk5LCA0Mzk3MSwgMTEyMTcsIDEwMDg0OSwgCisgICAgMTA2MzQsIDEwOTQyLCA3NzEzLCAyMzQ4LCAwLCA2NDM3NCwgNDM4MCwgMTI4Mjg0LCA4MzA2MSwgOTk4MiwgNjQzMjQsIAorICAgIDQxMjQwLCA4NjIsIDY0NDY4LCA3ODQ2MiwgMTgxMCwgMzY3MywgNTEzNywgMTk0NjE3LCAxMjA0ODEsIDcyNzcsIDY1NjIyLCAKKyAgICA2NTA2OSwgNzU2NiwgNjQ2ODgsIDY3MTQzLCAxOTQ1OTIsIDc0OTU3LCA0MzkxMiwgMTAwODI1LCA0NzQ4LCA5MjIyOCwgCisgICAgMTAwODI2LCAxMDA4MjksIDQyMjYwLCA1ODcxLCAxMTkwNzUsIDEyMTI3OCwgNzQ1NzYsIDQ0MDE5LCAxOTQ3MjAsIAorICAgIDEyODE4OSwgMzk2NywgNzEwOTgsIDEzMTM3LCA4Nzc1LCAxMjc5NDUsIDAsIDI5NjMsIDkxNzc4NSwgODQxMCwgNDQ1NCwgCisgICAgNzIzLCA4MzA4NCwgOTY2LCA0NDQ5LCA5MjMzMCwgOTIyMzgsIDc1MDIyLCA3ODE5LCAyMzIwLCAxMjkzMTIsIDMzOSwgCisgICAgNDk2OCwgMTk0NTkwLCAxMjAzOTksIDgwNzUsIDU1Mjc2LCA4MzA1NywgODA0NywgMTk1MDUwLCA3ODgyNywgMTI2MzQsIAorICAgIDQxNTQyLCA3ODc4MCwgNzQ2NiwgNjcwNSwgMTIxNzQsIDQyNjEwLCAxMjQ5MzQsIDc0NDUyLCAxMjA0ODIsIDE1ODQsIAorICAgIDY2NjQ1LCA2MDQ1LCA2NzI5LCA3ODQxNywgNjUyMTgsIDExNTU5LCAxOTQ5ODMsIDc4MDYyLCA3NTM3LCAxMjQ5OTEsIAorICAgIDExMzcwLCAxMjUwOTMsIDEwMzMwLCA3ODc5OCwgMTAzOTQsIDkyMjM2LCA3NDE5NCwgMTAwODA4LCAxMjc5MjksIDk3ODAsIAorICAgIDAsIDExMTE3LCA3NDk5MywgNzc5NTAsIDY3MDkxLCA3MDc0LCA5MjY0OCwgMTk0NTc5LCAxMDA0OTUsIDExNDE0LCA2ODc4MSwgCisgICAgMjUzMSwgMTMwMzQsIDEwMDgxOSwgMTI4NTIzLCA0MjExLCAxMjU5LCA3NTE3LCA3MDg2NiwgNzAxOTgsIDgzMTIyLCAKKyAgICA0MDk5NiwgMTMwMzcsIDcwOTIsIDY0MSwgNTIxOSwgODMxMjUsIDE5NDU2NiwgMTEwNjQsIDQxMTI5LCAxMDA0OTYsIAorICAgIDQyODUwLCAxMzAzNSwgOTA3NSwgOTIzODcsIDU0NjYsIDc0MjkzLCA3NDUzMCwgNjQwOTgsIDY1NzkzLCA0NTM1LCAKKyAgICAxMDA0OTEsIDQyNzEsIDcyODgxLCAxMDA3OTgsIDY3NjksIDQxNDEwLCAxMDA3OTksIDY0MjYyLCA2NzY3LCA0MTQwNywgCisgICAgNjYyNzMsIDkxNzgxNiwgNjc1NSwgMTE4ODY0LCA5MDQ2LCAxMDEwODYsIDcyODAzLCA3MDgzMCwgMCwgODMyMzIsIDAsIAorICAgIDY3Njc1LCA5ODM2OTQsIDgzMjM0LCAxMDA1MzQsIDY0MzM4LCAyNTYzLCAxMzAzMywgMjQ3LCA4MzIyOSwgMTAwNzkxLCAKKyAgICAxMjMzOCwgNDY1MSwgNjczNTUsIDExMjcwLCAwLCA3NDYzMCwgMTE5MzMsIDcwMTA3LCAwLCA0MTkwMywgNDM0NDcsIAorICAgIDExMDAxLCA3MzgyNywgNDIyNTUsIDgzMjQzLCA4MzIzOCwgNjk4MjEsIDQxOTA1LCA2NzM1MCwgMTAwODA2LCAxMDc3NSwgCisgICAgOTc5MywgNTAwOSwgMTI4Nzc0LCA0MjI2OSwgNjQ1ODcsIDk4MzA2MywgNDI1MzUsIDY5ODEyLCA2NDUyOSwgNDE0MDgsIAorICAgIDQyODUzLCAzODc3LCAxMjA3OTUsIDQyNjc0LCA4MTQ3LCA0MzU2NiwgMTE5MDIxLCA2NzM0MiwgMTAyMzYsIDY1OTE4LCAKKyAgICA0Mzc4MiwgNzg3NjksIDc4MDYwLCA2NDUwNiwgNjk2NTIsIDEwMDc4MSwgNDc0NywgODMyNTEsIDY5ODQ0LCA0MzIwMCwgCisgICAgNTgzMiwgNzEyMDgsIDgzMjUwLCA1MTQxLCA0MjYwMCwgNzE4NjYsIDQzMjAzLCAxMjcyMDgsIDEwMDU0MSwgNDMyODYsIAorICAgIDEyNjQ5NCwgMTIwNzg5LCA0Mzc3OCwgNzY1NywgNDEzMDUsIDcxMTMyLCA0Mzc4MSwgMTEzMDMsIDY1NTQ3LCAxMjg2MDksIAorICAgIDcwMzEsIDg1OSwgOTIzMTMsIDgzMjYyLCA4MzIzNywgNjA1OSwgMTI2OTg1LCA1NTIzNSwgMTk0ODE3LCA4NTM1LCAKKyAgICAxMjg2MzgsIDY1MTk2LCAxMjI5MTAsIDY2MDMyLCAxMTQ4OCwgNzI4MzgsIDEwMDc4OCwgNDIyMzMsIDY0MTQwLCA5OTQ2LCAKKyAgICA3NjY3LCAxMDA1NDksIDExODIyLCAxMjgzNDksIDExMTM1LCA5ODM2MDAsIDAsIDE3ODgsIDE1NzksIDEwMDUwNywgNzEyOTgsIAorICAgIDAsIDkxNzUzNywgOTgzODM5LCA5MDI4LCAxMTk1NzEsIDY5MjM0LCA3MTA2MSwgOTI1NDUsIDEyODUsIDY0ODgyLCA0MTI0MiwgCisgICAgNzAwODYsIDgzMTExLCAxMjY0MCwgODMxMTIsIDc0MDEsIDEwMDc2NywgMTI2MjUsIDY4MTk4LCA4MzE4NCwgNzAwODIsIAorICAgIDM5NDAsIDQxNTk3LCA3Mjk2LCAzMzk2LCAxMjY0MiwgODY2NSwgOTgzNjEwLCAxMjAyMDgsIDEyNjMwLCAxNjUzLCAKKyAgICAxMDA1NjcsIDEwMTUzLCAxMDA3NzcsIDYxNjYsIDcwODI1LCAxMTg5ODksIDEyOTQwOSwgODgxNSwgNjY2NzMsIDY1MDQ2LCAKKyAgICA5Mjg1LCA5MTMsIDQyMjU5LCAxMTE4MCwgMTE5MzE4LCAyMTQyLCA2ODQ1NCwgNDI0ODUsIDk0MDEyLCA3ODc4LCA4MjExLCAKKyAgICA0MjI5MywgNjQzNzcsIDEyMDQ3OCwgOTI2NDMsIDEyMTExOCwgMTk0NjczLCAxMjAzMiwgMTAwNzcxLCA5NzI1LCAxMDA3NzMsIAorICAgIDc4NDMxLCA1MjYzLCAxMjgxOCwgNzg0MzAsIDQxOTM5LCAxMDAyMiwgNjUzODcsIDc4NDE5LCA0Mjc3NywgMTAxMzksIDk4MCwgCisgICAgNDM2OTgsIDY1Mzg2LCAyMjA4LCA2ODg0OCwgNDM3MDEsIDQzMTk4LCA3MTg0LCA5MjU0MiwgMTI4NDIzLCAxMDA1MjcsIAorICAgIDEwMDg1LCA3NDk3OSwgMCwgNjczOTQsIDY2MzQsIDkyMzczLCAxMjUwODUsIDgzNDEzLCA4MDcyLCAxMDA3NTIsIDQzNzAwLCAKKyAgICAxMjgyMDIsIDczMDQsIDc3ODMsIDkxNzk5MSwgMTIzOTgsIDgyMzcsIDE5NDg5MywgMCwgMTIzOTUsIDEyMDI3OSwgCisgICAgMTI2OTc3LCA3NDg5MSwgOTkxNCwgMjIxNywgOTIzMjMsIDczOTc1LCA2MzY3LCA2MzUxLCA2NjY4OCwgOTI3NDAsIDY4NzY2LCAKKyAgICA5ODM4NDgsIDY0NzM1LCA0MTI0MywgOTIxOTksIDc4MDgsIDE4MjksIDEyNjU0MSwgNDE5MzcsIDQzNTgsIDQzMjcyLCAKKyAgICA2MzUzLCAwLCAwLCAxMjA0MjIsIDkzMDQ1LCAxNzEwLCAxMjAxNDAsIDAsIDY1NjA3LCA2NzIzNCwgNDksIDY2MjcsIAorICAgIDk4MzEyMCwgNjI1OCwgMTA2ODMsIDc4NjcyLCA5NzQxLCA3ODMyOSwgNTY0OSwgNzg0NDEsIDQzNDQzLCA2NDQxOCwgMTY0MywgCisgICAgNjUyMTMsIDg0MDUsIDM0NzAsIDY3MjQ0LCAxMzIxMywgNDI0NTIsIDc4MzMxLCA3ODAxMywgNzg0NDUsIDEyNTEyNCwgCisgICAgMTA3MiwgNzg0NTcsIDc4NDUyLCA3ODQ1NCwgNjU3NiwgNDE5ODgsIDQxMTMyLCA2NTY3NSwgMTA4MCwgNzA4MjQsIDk4ODYsIAorICAgIDU1MjI1LCAxMTAxLCA2ODQwNCwgMTIzMDksIDU1MjI3LCA3MTA4MiwgMTI2MzIsIDEwODYsIDE4NjksIDc4Njg1LCA3NjgwLCAKKyAgICAxMDEwOTMsIDY1NDU4LCAxMjA3MTQsIDEyNjM5LCAzMzgwLCA4MTIzLCAxMDkxLCAxMjYzOCwgNzk3NywgNDUwMSwgNDEwOTksIAorICAgIDAsIDY2MzA5LCAxMjAxNDEsIDkyNzU4LCAxNDk0LCAxMTM3MTYsIDEyNjYxMywgMCwgMTE2OTMsIDcxMjU1LCAxMDQ5NCwgCisgICAgOTI2NTUsIDY1ODcyLCAxMjM2MywgMTEzODYsIDExMzcyNywgMTI4Nzg5LCAwLCA3ODc3MSwgNjQ1ODIsIDEwMTA5OCwgCisgICAgNzM3OTQsIDY3Mzk1LCA4MDIyLCAxMDEwOTksIDEyMDQ2MiwgNzQxMDYsIDEyNDEzLCA2Njg4MywgOTE3OTk0LCA5MzAzNSwgCisgICAgNzUwMDcsIDU1NzAsIDE4ODEsIDcyMTAsIDEyMDQyNSwgMTAxMiwgNDM3NTIsIDAsIDEwMTA5NCwgNzIwOCwgNjY0NDIsIAogICAgIDU1NjksIDE5NTAwNywgNDIzMzksIDkyOTk3LCA2MDYzLCA2Nzg4OCwgNjk5ODEsIDExOTU5NCwgNjA1MywgNjU2MDIsIDAsIAotICAgIDkyMjAxLCA2NDcyNywgOTE2MCwgNzAzMDEsIDAsIDkyOTA1LCA5MjE4MCwgMTA1MDMsIDcwMzg3LCAzNDIzLCAzODcwLCAKLSAgICA0Mjc5LCA4NDkwLCAxMjAxMTQsIDQzMTksIDY0Nzg2LCA4NjAyLCAxMjAxMTAsIDExMzI2LCA5MjIwNCwgOTgzMTE2LCAwLCAKLSAgICA3NDk2MSwgNzgzMzMsIDEyMDExNywgMTIwMTE4LCAxMjAwOTksIDkyMzg1LCA2NTA4NywgNTU3MSwgMzY3NCwgOTc0MCwgCi0gICAgOTEyMSwgNTU2OCwgNzE0NjQsIDEyMDEwOCwgNDIwODUsIDEwMTA3LCA0MjE1OSwgNDI4NzAsIDExMzcwMCwgNTg5LCA3MDUwLCAKLSAgICA5ODM4MDAsIDQzMjgxLCAxMDIzMywgNDEyNjMsIDY2MjUxLCA2NTcyOSwgNjYyNTMsIDEyNjQ5NywgNzQwOTksIDQyNjQ1LCAKLSAgICA5MjMzMSwgMTIxMzU4LCA4NTgzLCAxMjExMjMsIDU4NDcsIDY5MjgsIDEyODA3NCwgMCwgMCwgMCwgMCwgNjY1OTIsIAotICAgIDEyMjA0LCA5MTc5NjIsIDE5OTY2LCA3Nzg1NiwgNDI1NjEsIDEyMDYyNiwgMTI5MTcwLCA2Njg1NCwgODEyMCwgNzAzMTEsIAotICAgIDE5NDU4NSwgMCwgNzAzMDgsIDQxMDYzLCAxMjA0MTcsIDEwNjY0LCAwLCA4MzY5LCAwLCA0NTUxLCAxOTQ5NjQsIDMzNjksIAotICAgIDc0OTcxLCAxMjEwOTQsIDk2NzMsIDY2MzM0LCA2NTU4MCwgMTA0NzgsIDExODk2MCwgMTI1MTcsIDU1NywgOTQ1NywgCi0gICAgMTIwMzQsIDY4NDk2LCA2MzU1LCAxMjUxOSwgNDEwMDQsIDAsIDc0OTM3LCA3NDA5NCwgOTE3ODg4LCAxMjUwNjAsIDc3OTcwLCAKLSAgICA5MjE3MSwgMTI3MjE5LCAxMjgxNzUsIDEyMTExLCAzOTI3LCAwLCAxMjUxNSwgMTQ3NCwgNjc4OTMsIDU0OTIsIDY5MjMsIAotICAgIDkyMjgxLCAxMDQ0MSwgNzM4MzYsIDAsIDQzOTkwLCA1NDkzLCAwLCA3NDMxOSwgMCwgNjY2MzUsIDEyMDE5LCAwLCAxNjE4LCAKLSAgICAwLCAxMjA0NzQsIDk2NDUsIDEwNDMwLCAxMjY2MzYsIDU4NTMsIDEzMDYzLCAxMDM2MywgOTgzODk4LCAxMjk1NiwgCi0gICAgMTEzNjY2LCAxMjA3MjksIDExMzE0LCA5MTc1ODIsIDEyMDYwLCAxMjg2NDgsIDc4MzkyLCAxMjgyNiwgNjMyOSwgMCwgCi0gICAgMTA1MTQsIDY1NTE3LCA3NDM5NSwgMjcwNywgODMwOSwgMCwgMTI3MDU0LCA3ODM5OCwgNDM1NzAsIDI2OTcsIDQzNDIwLCAKLSAgICA3ODM5NiwgNjgyNDcsIDI2OTUsIDQyMTcxLCA3MDgwOSwgNjgzMzQsIDAsIDY3NjE3LCAxMTg5NzEsIDAsIDI2OTMsIAotICAgIDEyMTI1LCAxMjc2NiwgMTIwNDA5LCAxMTY0LCAxMTM3MjksIDcwMjgzLCA0MTkxOCwgNzc4NDksIDY3MTUwLCA4Njg3LCAKLSAgICA2NjAwOSwgMTIxNzgsIDcwNTMsIDkyNTQwLCA3NDY5LCAwLCA1MjQ4LCAxMjIxOCwgNjk5ODgsIDY0MjcsIDQyODg0LCAKLSAgICA0MTEyMywgMTExNzYsIDAsIDQyODczLCA0MTEyNiwgOTk5MSwgNDExMjgsIDc0MzcxLCAxMjcwMzEsIDk4MzkzMiwgOTg3MywgCi0gICAgMCwgNDI4NzcsIDc5OTQsIDY0NzYyLCAyMDUzLCA0Mjg0MywgNjU5MSwgOTM0MCwgMTI4ODQxLCAxNTg5LCAxMjg2OTEsIAotICAgIDI5NiwgNjc3MTIsIDc4ODUyLCAxMjE0MDksIDY3ODQxLCA3NDM3MCwgMTI4NTA0LCA4OTIyLCAxMjgwNjgsIDQzODI5LCAKLSAgICAxMjcwMCwgNzQ4MzYsIDAsIDEyNTc5LCAwLCAxMjU3NSwgNjQxNiwgNTY1NiwgMjg5MSwgMTMyNjIsIDY1NTkwLCA1Mjk5LCAKLSAgICA3ODgzNywgMTE0NzMsIDU0NDksIDEyNTIsIDEyNzMyOCwgNzg0MDQsIDQxNDMxLCA3NDM2OSwgNjUzNzMsIDUyOTUsIAotICAgIDkxNzU2OSwgNjgzMjAsIDEyMjMsIDE2NDIsIDE3NCwgNzgzOTksIDg4MywgNDE2MSwgMTI2OTEsIDQyNjAzLCA0MTQxMywgCi0gICAgMzIxMiwgNDE0NTksIDMyMTEsIDc0ODEwLCA0MTQyNSwgNzQ1OTgsIDc4NDEyLCA3NDQ1MCwgOTcyOCwgMzg0NiwgODA3MCwgCi0gICAgNjE1MCwgNjYzNiwgNDM3MCwgMTI4NjE5LCAxMjkxNTgsIDc0MTc4LCA3NDU4NywgNzQxMTcsIDE5NTA5NCwgMCwgMTEzNzQ4LCAKLSAgICA0OTg2LCAxMjE4OSwgMTI3NTEyLCA2NzY0OCwgMTIwNDk5LCA5NDAwMSwgNDI1NywgMTIxMDQsIDcxMTc2LCA2MjIwLCAKLSAgICA5MDA0LCA2NTU2MSwgOTgzODgxLCA3Nzk0OSwgMCwgNjgxMzUsIDkxNzU3NiwgNzc5NDYsIDgzNDUzLCA2OTY3OSwgNjk2ODQsIAotICAgIDk4OTAsIDc4NTYxLCAxMjk3MSwgNzg0NTMsIDkyNTU2LCA3Mzg5OCwgMTE5NzksIDcwMDUxLCA3MTg5NywgODM0NTEsIDAsIAotICAgIDk2MzUsIDEyNjAwLCA4ODcxLCA2NzM2NiwgNjg0OTEsIDAsIDY0NjksIDc0MjI3LCAxMTg5MDAsIDY1MzA0LCA0Njc5LCAKLSAgICAxMDIzMCwgNjQzMDAsIDY0ODY3LCAzNDI3LCA0MjQwLCA2NzM3NiwgNjczNzUsIDY3Mzc0LCA2NzM3MywgNDI5MTYsIAotICAgIDEyOTE1NSwgMTI4Mjc5LCA2NzM3NywgNzI4MiwgNzg3MjgsIDY1NzMzLCA0NDQ1LCA2NzM3MiwgNjczNzEsIDM0OTQsIAotICAgIDY3MzY5LCA2NTU1LCAxMjkxNDgsIDc3OTc2LCAwLCAwLCA3ODU2NiwgMCwgOTgzMTg5LCA2NTg5OCwgOTgzMjQ2LCA2NTMxMiwgCi0gICAgNTQ0NywgMCwgMTI4OTUsIDY1NTkzLCA0MDEwLCA4MzE1NCwgNDExMDYsIDc0MzU3LCA2NDQ0OCwgOTM5OTQsIDQxMTA1LCAKLSAgICA3NDExNCwgNjU4MjAsIDYyMzIsIDY4MjMzLCAxMjY2MjUsIDAsIDQzNjA4LCAxMTkwOTEsIDc4MTE4LCA2NTM4LCA0MzM1LCAKKyAgICA5MjIwMSwgNjQ3MjcsIDkxNjAsIDcwMzAxLCAxOTUwNzEsIDkyOTA1LCA5MjE4MCwgMTA1MDMsIDcwMzg3LCAzNDIzLCAKKyAgICAzODcwLCA0Mjc5LCA4NDkwLCAxMjAxMTQsIDQzMTksIDY0Nzg2LCA4NjAyLCAxMjAxMTAsIDExMzI2LCA5MjIwNCwgCisgICAgOTgzMTE2LCAxMjEwODQsIDc0OTYxLCA3ODMzMywgMTE5MTMyLCAxMjAxMTgsIDEyMDA5OSwgOTIzODUsIDY1MDg3LCA1NTcxLCAKKyAgICAzNjc0LCA5NzQwLCA5MTIxLCA1NTY4LCA3MTQ2NCwgMTIwMTA4LCA0MjA4NSwgMTAxMDcsIDQyMTU5LCA0Mjg3MCwgCisgICAgMTEzNzAwLCA1ODksIDcwNTAsIDk4MzgwMCwgNDMyODEsIDEwMjMzLCA0MTI2MywgNjYyNTEsIDY1NzI5LCA2NjI1MywgCisgICAgMTI2NDk3LCA3NDA5OSwgNDI2NDUsIDkyMzMxLCAxMjEzNTgsIDg1ODMsIDEyMTEyMywgNTg0NywgNjkyOCwgMTI4MDc0LCAwLCAKKyAgICAwLCAwLCAwLCA2NjU5MiwgMTIyMDQsIDkxNzk2MiwgMTk5NjYsIDc3ODU2LCA0MjU2MSwgMTIwNjI2LCAxMjkxNzAsIAorICAgIDY2ODU0LCA4MTIwLCA3MDMxMSwgMTI5MTU0LCAwLCA3MDMwOCwgNDEwNjMsIDEyMDQxNywgMTA2NjQsIDAsIDgzNjksIAorICAgIDEyODI3OCwgNDU1MSwgMTIyOTEyLCAzMzY5LCA3NDk3MSwgMTIxMDk0LCA5NjczLCA2NjMzNCwgNjU1ODAsIDEwNDc4LCAKKyAgICAxMTg5NjAsIDEyNTE3LCA1NTcsIDk0NTcsIDEyMDM0LCA2ODQ5NiwgNjM1NSwgMTI1MTksIDQxMDA0LCAwLCA3NDkzNywgCisgICAgNzQwOTQsIDEyNDk0OCwgMTAwNDc4LCA3Nzk3MCwgOTIxNzEsIDEyNzIxOSwgMTI1MjU0LCAxMjExMSwgMzkyNywgMTE5ODgwLCAKKyAgICAxMjUxNSwgMTQ3NCwgNjc4OTMsIDU0OTIsIDY5MjMsIDkyMjgxLCAxMDQ0MSwgNjY3OTgsIDk4MzgzMSwgNDM5OTAsIDU0OTMsIAorICAgIDk4MzYxOCwgNzExMzAsIDkxNzc2NiwgNjY2MzUsIDEyMDE5LCAwLCAxNjE4LCAwLCAxMjA0NzQsIDk2NDUsIDEwNDMwLCAKKyAgICAxMjY2MzYsIDU4NTMsIDEzMDYzLCAxMDM2MywgOTgzODk4LCAxMjk1NiwgMTEzNjY2LCAxMjA3MjksIDExMzE0LCAxMjUyNzEsIAorICAgIDEyMDYwLCAxMjg2NDgsIDc4MzkyLCAxMjgyNiwgNjMyOSwgMTk1MDk3LCAxMDUxNCwgNjU1MTcsIDc0Mzk1LCAyNzA3LCAKKyAgICA4MzA5LCAwLCAxMjcwNTQsIDc4Mzk4LCA0MzU3MCwgMjY5NywgNDM0MjAsIDc4Mzk2LCA2ODI0NywgMjY5NSwgNDIxNzEsIAorICAgIDcwODA5LCA2ODMzNCwgOTgzNDQ0LCA2NzYxNywgMTE4OTcxLCAwLCAyNjkzLCAxMjEyNSwgMTI3NjYsIDEyMDQwOSwgMTE2NCwgCisgICAgMTEzNzI5LCA3MDI4MywgNDE5MTgsIDc3ODQ5LCA2NzE1MCwgODY4NywgNjYwMDksIDEyMTc4LCA3MDUzLCA5MjU0MCwgCisgICAgNzQ2OSwgNzI3OTUsIDUyNDgsIDEyMjE4LCA2OTk4OCwgNjQyNywgNDI4ODQsIDQxMTIzLCAxMTE3NiwgMCwgNDI4NzMsIAorICAgIDQxMTI2LCA5OTkxLCA0MTEyOCwgNzA3MDMsIDEyNzAzMSwgMTI2NTA4LCA5ODczLCAwLCA0Mjg3NywgNzk5NCwgNjQ3NjIsIAorICAgIDIwNTMsIDQyODQzLCA2NTkxLCA5MzQwLCAxMjg4NDEsIDE1ODksIDEyODY5MSwgMjk2LCA2NzcxMiwgNzg4NTIsIDEyMTQwOSwgCisgICAgNjc4NDEsIDcxMzE0LCAxMjg1MDQsIDg5MjIsIDEyODA2OCwgNDM4MjksIDEyNzAwLCA3NDgzNiwgMCwgMTI1NzksIDAsIAorICAgIDEyNTc1LCA2NDE2LCA1NjU2LCAyODkxLCAxMzI2MiwgNjU1OTAsIDUyOTksIDcwNzMyLCAxMTQ3MywgNTQ0OSwgMTI1MiwgCisgICAgMTI3MzI4LCA3ODQwNCwgNDE0MzEsIDc0MzY5LCA2NTM3MywgNTI5NSwgOTE3NTY5LCA2ODMyMCwgMTIyMywgMTY0MiwgMTc0LCAKKyAgICA3ODM5OSwgODgzLCA0MTYxLCAxMjY5MSwgNDI2MDMsIDQxNDEzLCAzMjEyLCA0MTQ1OSwgMzIxMSwgNzQ4MTAsIDQxNDI1LCAKKyAgICA3NDU5OCwgNzg0MTIsIDc0NDUwLCA5NzI4LCAzODQ2LCA4MDcwLCA2MTUwLCA2NjM2LCA0MzcwLCAxMjg2MTksIDEyOTE1OCwgCisgICAgNzQxNzgsIDc0NTg3LCA3NDExNywgMTk1MDk0LCAwLCAxMTM3NDgsIDQ5ODYsIDEyMTg5LCAxMTk1OTksIDY3NjQ4LCAKKyAgICAxMjA0OTksIDk0MDAxLCA0MjU3LCAxMjEwNCwgNzExNzYsIDYyMjAsIDkwMDQsIDY1NTYxLCA5ODM4ODEsIDc3OTQ5LCAwLCAKKyAgICA2ODEzNSwgOTE3NTc2LCA3Nzk0NiwgODM0NTMsIDY5Njc5LCA2OTY4NCwgOTg5MCwgNzg1NjEsIDEyOTcxLCA3ODQ1MywgCisgICAgOTI1NTYsIDczODk4LCAxMTk3OSwgNzAwNTEsIDcxODk3LCA4MzQ1MSwgMTI3MTg3LCA5NjM1LCAxMjYwMCwgODg3MSwgCisgICAgNjczNjYsIDY4NDkxLCAwLCA2NDY5LCA3NDIyNywgMTE4OTAwLCA2NTMwNCwgNDY3OSwgMTAyMzAsIDY0MzAwLCA2NDg2NywgCisgICAgMzQyNywgNDI0MCwgNjczNzYsIDY3Mzc1LCA2NzM3NCwgNjczNzMsIDQyOTE2LCAxMjkxNTUsIDEyNzQ4OSwgNjczNzcsIAorICAgIDcyODIsIDc4NzI4LCA2NTczMywgNDQ0NSwgNjczNzIsIDY3MzcxLCAzNDk0LCA2NzM2OSwgMzQxNiwgMTI5MTQ4LCA3Nzk3NiwgCisgICAgMTk1MDEwLCA5ODMxOTIsIDc4NTY2LCAwLCAxMjcwNDcsIDY1ODk4LCA5ODMyNDYsIDY1MzEyLCA1NDQ3LCAxMDA4OTUsIAorICAgIDEyODk1LCA2NDM4MiwgNDAxMCwgODMxNTQsIDQxMTA2LCA3NDM1NywgNjQ0NDgsIDkzOTk0LCA0MTEwNSwgNzA2NzcsIAorICAgIDY1ODIwLCA2MjMyLCA2ODIzMywgMTAxMTA0LCAxMDExMDMsIDQzNjA4LCAxMDExMDUsIDc4MTE4LCA2NTM4LCA0MzM1LCAKICAgICA3ODM2NCwgMzk0MSwgNDExMjIsIDExMDYxLCA3ODM2MywgNjQ4OTIsIDkxMTMsIDE5NTQsIDEyMTU1LCA5ODM2NzQsIAotICAgIDQyODc4LCAxMTUwMCwgNjc0MDUsIDEyODE1MiwgNzQ1NzgsIDAsIDY1ODMyLCAxMjg2NjcsIDAsIDcwNzg5LCA2NzMzMywgCi0gICAgMTE5MjMwLCA0NTg2LCAwLCAzNTAsIDEwOTUxLCAwLCA1MDksIDY3MzM2LCA5ODM4NzksIDkyMzA3LCAwLCAwLCA1MTMzLCAKLSAgICA2NzM4MiwgMCwgOTUwMCwgMCwgNDk1NywgNjQ3NDEsIDI0MjIsIDIyMTIsIDk4MzA4MCwgNjczODEsIDY3MzgwLCAyNDk2LCAKLSAgICAxMTUxNiwgOTQ0LCA2NzgxNywgMzg5MCwgMTIxNjgsIDE0MzgsIDY3ODEzLCA2ODMzNSwgNzAwMDMsIDQxOTQ3LCAxMjIwLCAKLSAgICAxMjA4MjgsIDc0OTQ2LCA3MDg1NCwgNzQwNTgsIDE1NzEsIDQyNjMwLCA0MTk0OSwgNDI4MDUsIDgyNzAsIDk0MywgNTY0LCAKLSAgICAwLCAzMTIsIDQxOTgwLCA5ODM5NDQsIDEyODI5NSwgNzA3OTcsIDg4NzcsIDI2OSwgNDQyOSwgNjI3MiwgOTYxNywgMTQ2MCwgCi0gICAgNjk1NCwgNzg2NTcsIDQxMTIwLCA2NTEyMSwgMTA4NjIsIDYwNjAsIDQxMTE5LCA0MTQxNiwgNzQzNTUsIDQxNzMsIDAsIAotICAgIDgyOTQ4LCAwLCAxOTA2LCAxMjExNjksIDExNTMyLCA3NDA3MywgMTI3MzM4LCAwLCAxOTg1LCA2Mjk2LCA5NTgyLCA3NTA3MSwgCi0gICAgNjQyODcsIDEyODQwNiwgNzgxMTUsIDExNDI4LCAxNzMwLCAyNDU3LCA5MTc4MDgsIDE5OTE4LCAxMDQ2OSwgMCwgNjgwODgsIAotICAgIDc3MDMsIDg4NDAsIDgwMzUsIDEyMDcxMSwgMCwgOTIyMzAsIDk4MzM1NywgNjEyOSwgMTI4NDM3LCA3ODU4NiwgMTI4MjY4LCAKLSAgICAwLCA3ODc0LCA4NjgxLCAxMTkwOTIsIDExMjA2LCAxMzEzNiwgMCwgMCwgNzAxMDIsIDYzODg2LCA3MDQ1MCwgOTYwNSwgCi0gICAgNzEzMDgsIDEzMjIwLCA2NzM0OCwgNjczNTQsIDU1MTQsIDc0OTYwLCA5MjI4LCA2NzM0OSwgNjczNTYsIDY3MzQ2LCA1MjQwLCAKLSAgICA5ODExLCAxMDAxMiwgMzA5NiwgMCwgMCwgNzQ1MjYsIDY2Njc2LCA2NTg3MywgMCwgMTI4MTc5LCAwLCA5NTAxLCAxMjA4MzIsIAotICAgIDEyNzIsIDY0NTM2LCA2NTQ2NSwgNjQ2NTQsIDc0NjcsIDAsIDE0NjcsIDEwMTU4LCAxMDA0MCwgMCwgOTUxOSwgNjg3NTksIAotICAgIDcwMzEyLCAxOTUwODUsIDY4ODIwLCAxMjE5MywgNzA0MDAsIDEyNzI0MCwgMTIxMzczLCAwLCA5ODMzNTUsIDE5OTM1LCAKLSAgICAxMjA3MzMsIDkyMTYyLCA2ODgwMSwgMTI3OTU1LCA4MzEzMywgOTMwNTcsIDUyNzUsIDEyMDE5NSwgMTI4NjMyLCA4NjM3LCAKLSAgICA0MzY4MiwgMCwgMzc4OSwgNjM4ODAsIDExNDcxLCA0MzU1NCwgNjU4NjIsIDExNDc0LCA2NjMzMiwgNjY2MDMsIDY4Nzg0LCAKLSAgICAyNDI2LCAxMjA0MiwgOTIxOTQsIDk4MzkxMSwgOTUzNywgMzk2MSwgMTIxMTUsIDc3OTUzLCAyNjA1LCA0NTAwLCA2NDU2MSwgCi0gICAgNTUyMjQsIDQ5ODEsIDc0NjQ0LCAwLCA0MTY0NiwgMTE2NjcsIDQyNjg2LCA3NDk5MSwgNDIzNjIsIDY0Njg2LCA0NDk5LCAKLSAgICA0MTY0OSwgNzU4OSwgMTI4Nzc2LCAwLCAzMjM3LCAwLCA2Njg5NSwgNjgyOTYsIDg1NDEsIDc4Mjk4LCA3MDAzNCwgNDE4NjYsIAotICAgIDAsIDk4MzgxNCwgOTQwNTYsIDExMTc0LCA2OTkyNCwgNDM1NTUsIDI4MjMsIDk1NTksIDEwMDYwLCA0MTk0MCwgODI5OSwgCi0gICAgNDE5NDUsIDcxMzIsIDQxOTQxLCAzMzA4LCA3MTkwLCA2NDg4MCwgODYxNCwgNjUyMjAsIDQxNDkzLCAxMjg2NzksIDQxNjk5LCAKLSAgICAxMDc2MiwgNDM3ODAsIDEyOTk5LCAxMTkyNDUsIDEyODQ5NCwgODEwNiwgNDEyOCwgMCwgNjI3NCwgNDQ5NCwgOTgzMDgyLCAKLSAgICA0MDEyLCAxMDM5NSwgOTgzNTkxLCA0MzYzMywgNjU0NDcsIDc4MjYwLCAxMjA5NzMsIDExMDA0LCA2OTUsIDczOSwgNjk2LCAKLSAgICA3NjExLCAxMjEwNzMsIDQyNzU1LCA3NDgwMiwgOTIyNywgNzUwNiwgNzUxMCwgNjk5MzcsIDY5MSwgNzM4LCA3NTExLCAKLSAgICA3NTEyLCA3NTE1LCAzODY4LCA2ODgsIDQxODQ3LCA2OTAsIDI1NDgsIDczNywgOTc0LCA4MDAzLCA3NDA2LCAxMjczNTMsIAotICAgIDEyMDE2NiwgMTI4Njg4LCAzOTg1LCA2NjQyNSwgNjU4NjAsIDQxODUxLCA3MDUxLCA2OTc3NywgNDY4MiwgNzE4NzMsIAotICAgIDEyODA5LCA2NDA2LCA0Njg1LCA5MjUwNSwgMTA4NzksIDEwMzQ3LCA0NjgwLCA2MzQxLCAwLCAzODUxLCA4MTMyLCA3NDMyNSwgCi0gICAgMTE5MjYzLCAxMjA4NTUsIDEyNzk0OCwgNDE5NTgsIDExOTE3NiwgOTE3OTA4LCAxOTQ4NTUsIDAsIDQyNjU3LCA3MTA3NSwgCi0gICAgNzY0MywgNDIzNzMsIDExNzE0LCA2NzU4NywgNDM1NjgsIDk4MzE3NSwgMTE3MTcsIDc2NTAsIDEwNTk0LCA2NDk1MSwgCi0gICAgNzY0NywgNzY0OSwgMTI4MTU1LCA3NjQ2LCAwLCA3ODA4MiwgOTY1MSwgMTI2NDc1LCAzODkxLCAxMjcyMDUsIDAsIDIzMzcsIAorICAgIDQyODc4LCAxMTUwMCwgNjc0MDUsIDEyODE1MiwgNzQ1NzgsIDAsIDY1ODMyLCAxMjY5NzgsIDAsIDcwNzg5LCA2NzMzMywgCisgICAgMTE5MjMwLCA0NTg2LCAxOTQ5MjIsIDM1MCwgMTA5NTEsIDEwMTA4MSwgNTA5LCA2NzMzNiwgMTAwOTA0LCA5MjMwNywgCisgICAgMTAwOTAzLCAwLCA1MTMzLCA2NzM4MiwgMTI4ODI3LCA5NTAwLCAxMDA5MDYsIDQ5NTcsIDY0NzQxLCAyNDIyLCAyMjEyLCAKKyAgICA5ODMwODAsIDY3MzgxLCA2NzM4MCwgMjQ5NiwgMTE1MTYsIDk0NCwgNjc4MTcsIDM4OTAsIDEyMTY4LCAxNDM4LCA2NzgxMywgCisgICAgNjgzMzUsIDcwMDAzLCA0MTk0NywgMTIyMCwgMTIwODI4LCA3NDk0NiwgNzA4NTQsIDc0MDU4LCAxNTcxLCA0MjYzMCwgCisgICAgNDE5NDksIDQyODA1LCA4MjcwLCA5NDMsIDU2NCwgMCwgMzEyLCA0MTk4MCwgOTgzOTQ0LCAxMjgyOTUsIDcwNzk3LCA4ODc3LCAKKyAgICAyNjksIDQ0MjksIDYyNzIsIDk2MTcsIDE0NjAsIDY5NTQsIDc4NjU3LCA0MTEyMCwgNjUxMjEsIDEwODYyLCA2MDYwLCAKKyAgICA0MTExOSwgNDE0MTYsIDc0MzU1LCA0MTczLCAwLCA4Mjk0OCwgMCwgMTkwNiwgMTIxMTY5LCAxMTUzMiwgNzQwNzMsIAorICAgIDEwMTA2OCwgMTAxMDY3LCAxOTg1LCA2Mjk2LCA5NTgyLCA3NTA3MSwgNjQyODcsIDEyODQwNiwgNzA3MTcsIDExNDI4LCAKKyAgICAxNzMwLCAyNDU3LCA5MTc4MDgsIDE5OTE4LCAxMDQ2OSwgMTAxMDc2LCA2ODA4OCwgNzcwMywgODg0MCwgODAzNSwgCisgICAgMTIwNzExLCAxOTQ2MDIsIDkyMjMwLCA5ODMzNTcsIDYxMjksIDEyNzA2NSwgNzg1ODYsIDEyODI2OCwgMTk0OTY1LCA3ODc0LCAKKyAgICA4NjgxLCA3MjgwMCwgMTEyMDYsIDEzMTM2LCAwLCAxMjkzMDUsIDcwMTAyLCA2Mzg4NiwgNzA0NTAsIDk2MDUsIDcxMzA4LCAKKyAgICAxMzIyMCwgNjczNDgsIDY3MzU0LCA1NTE0LCA3NDk2MCwgOTIyOCwgNjczNDksIDY3MzU2LCA2NzM0NiwgNTI0MCwgOTgxMSwgCisgICAgMTAwMTIsIDMwOTYsIDkxNzgwOSwgMCwgNzQ1MjYsIDY2Njc2LCA2NTg3MywgMTk0NjA4LCAxMjgxNzksIDEwMDkxOCwgCisgICAgOTUwMSwgMTIwMjc1LCAxMjcyLCA2NDUzNiwgNjU0NjUsIDY0NjU0LCA3NDY3LCAxMDA5MjAsIDE0NjcsIDEwMTU4LCAKKyAgICAxMDA0MCwgNzQwOTYsIDk1MTksIDY4NzU5LCA3MDMxMiwgMTAxMDUyLCA2ODgyMCwgMTIxOTMsIDcwNDAwLCAxMjcyNDAsIAorICAgIDEyMTM3MywgNzI4MTcsIDk4MzM1NSwgMTk5MzUsIDEyMDczMywgOTIxNjIsIDY4ODAxLCAxMDA2ODIsIDgzMTMzLCA5MzA1NywgCisgICAgNTI3NSwgMTAxMDYzLCAxMjg2MzIsIDg2MzcsIDQzNjgyLCAxMjg1NzYsIDM3ODksIDYzODgwLCAxMTQ3MSwgNDM1NTQsIAorICAgIDY1ODYyLCAxMTQ3NCwgNjYzMzIsIDY2NjAzLCA2ODc4NCwgMjQyNiwgMTIwNDIsIDkyMTk0LCAxMjExODcsIDk1MzcsIAorICAgIDM5NjEsIDEyMTE1LCA3Nzk1MywgMjYwNSwgNDUwMCwgNjQ1NjEsIDU1MjI0LCA0OTgxLCA3NDY0NCwgMCwgNDE2NDYsIAorICAgIDExNjY3LCA0MjY4NiwgNzQ5OTEsIDQyMzYyLCA2NDY4NiwgNDQ5OSwgNDE2NDksIDc1ODksIDEyODc3NiwgMTI4MjcxLCAKKyAgICAzMjM3LCAwLCA2Njg5NSwgNjgyOTYsIDg1NDEsIDc4Mjk4LCA3MDAzNCwgNDE4NjYsIDAsIDEyNzUwOSwgOTQwNTYsIAorICAgIDExMTc0LCA2OTkyNCwgNDM1NTUsIDI4MjMsIDk1NTksIDEwMDYwLCA0MTk0MCwgODI5OSwgNDE5NDUsIDcxMzIsIDQxOTQxLCAKKyAgICAzMzA4LCA3MTkwLCA2NDg4MCwgODYxNCwgNjUyMjAsIDQxNDkzLCAxMjg2NzksIDQxNjk5LCAxMDc2MiwgNDM3ODAsIAorICAgIDEyOTk5LCAxMTkyNDUsIDcwNjg5LCA4MTA2LCA0MTI4LCA5ODM3NTEsIDYyNzQsIDQ0OTQsIDk4MzA4MiwgNDAxMiwgCisgICAgMTAzOTUsIDk4MzU5MSwgNDM2MzMsIDY1NDQ3LCA3ODI2MCwgMTIwOTczLCAxMTAwNCwgNjk1LCA3MzksIDY5NiwgNzYxMSwgCisgICAgMTIxMDczLCA0Mjc1NSwgNzQ4MDIsIDkyMjcsIDc1MDYsIDc1MTAsIDY5OTM3LCA2OTEsIDczOCwgNzUxMSwgNzUxMiwgCisgICAgNzUxNSwgMzg2OCwgNjg4LCA0MTg0NywgNjkwLCAyNTQ4LCA3MzcsIDk3NCwgODAwMywgNzQwNiwgMTI3MzUzLCAxMjAxNjYsIAorICAgIDEyODY4OCwgMzk4NSwgNjY0MjUsIDY1ODYwLCA0MTg1MSwgNzA1MSwgNjk3NzcsIDQ2ODIsIDcxODczLCAxMjgwOSwgNjQwNiwgCisgICAgNDY4NSwgOTI1MDUsIDEwODc5LCAxMDM0NywgNDY4MCwgNjM0MSwgMTI1MjE3LCAzODUxLCA4MTMyLCA3NDMyNSwgMTE5MjYzLCAKKyAgICAxMjA4NTUsIDEyNzk0OCwgNDE5NTgsIDExOTE3NiwgOTE3OTA4LCAxOTQ4NTUsIDAsIDQyNjU3LCA3MTA3NSwgNzY0MywgCisgICAgNDIzNzMsIDExNzE0LCA2NzU4NywgNDM1NjgsIDk4MzE3NSwgMTE3MTcsIDc2NTAsIDEwNTk0LCA2NDk1MSwgNzY0NywgCisgICAgNzY0OSwgMTI4MTU1LCA3NjQ2LCAwLCA3ODA4MiwgOTY1MSwgMTI2NDc1LCAzODkxLCAxMjcyMDUsIDk4MzgwMywgMjMzNywgCiAgICAgMTczNSwgNzQzMjQsIDExMTM0LCAyMzYzLCAxMjEwMDgsIDkyNDQzLCA0MzU2MSwgNjc3MDYsIDEyODAzMiwgNzQxNDYsIAogICAgIDE4NjAsIDc0OTUsIDc1ODAsIDU4MTIsIDc0OTcsIDc1ODQsIDExOTE0MCwgMTI3ODUzLCA3ODc1MywgMTIwMzQ3LCA3NzI3LCAKLSAgICAwLCA4NDk4LCA2OTgxOCwgODk0OSwgMzA2NSwgNDI3MTksIDcxMzUsIDE1NjksIDkyMzc1LCAxMjUzNCwgMTIxMjQsIDc2OTAsIAotICAgIDAsIDEyNTMzLCA5ODM3OTYsIDY0MTgsIDQ1NDMsIDc4MDg2LCA2OTY5LCAxMjg0NDQsIDc0ODAwLCA3MTA1MSwgNjc5NzQsIAotICAgIDEwODU5LCAxMjg2NTAsIDk4MzgwMSwgNjM4OTQsIDEyMDc2MCwgMTIyODIsIDY2MTkyLCA5ODM1ODMsIDc0NTkyLCA4ODUwLCAKLSAgICA3NDI3NSwgOTIzOCwgMTA2MTcsIDY4MDYzLCA5MTc5MDksIDkyNjI1LCA5MTc4MDEsIDEyNzkxLCAwLCA5NDA2OSwgCi0gICAgMTI3ODQzLCA0NDQ3LCA3MTA2NSwgMTI3OTMsIDEyOTAwLCA5MjM3NywgMTA5NTAsIDk4MzQ0OSwgNzQ2MzksIDEyNzkwLCAKLSAgICA0MTQwMCwgMTE5MTI4LCA2NjYwNywgMTI3OTIsIDQyMjMyLCAxMTkyMzksIDE3NDQsIDEyNzg5LCAxMDM2NiwgMTIzMTcsIAotICAgIDQxMzEwLCAxMjA3MzAsIDQxMzk5LCAwLCAwLCA1NTI1OCwgMCwgMTI2OTAsIDEyNzc2MywgMCwgNDM2NzIsIDEyNzg0MCwgCi0gICAgNDE2NTIsIDI5NzQsIDkwMTAsIDExMzE1LCA5ODM4MDgsIDI3OCwgMTIxMjA0LCA0MTQwNSwgNDM4NzEsIDAsIDEwMDc3LCAKLSAgICA2Mzg1MywgNzQ1NTcsIDQyNTg2LCAwLCAwLCA2MDAyLCA2NzMzNSwgNDM1NTMsIDExMTg5LCA2NzMzOCwgNjczMzcsIAotICAgIDEyNzg3LCA0MTMwOCwgNzkzNCwgNjUzMDYsIDEyMDI2MywgMTIwOTQwLCA5NDA0MiwgODY0NiwgMTI4MjU3LCA3NzgyOSwgCi0gICAgNzEzNjAsIDAsIDY0MTMsIDY1NTAsIDExMzc1OSwgMTk0MCwgMjgwOSwgNDM2MzcsIDIyMCwgNjUxOTMsIDQzNTUxLCAKLSAgICAxMDY3OCwgMTAwNDQsIDY4ODQxLCAxMjgxMjEsIDk4MzgxNiwgNjgyOTAsIDY0MDMsIDU3MDcsIDEwMzkzLCAxMjc1MzIsIDAsIAotICAgIDY2NjE0LCAwLCAwLCAwLCAxMDI5NywgMCwgMzc0MiwgNjczMzEsIDM5NTksIDAsIDEyMDQ2NiwgMCwgMjQ2NywgNjg4MDYsIAotICAgIDYwMDMsIDYzODQ0LCA2NjYzLCA4MDQwLCA5ODMyMjAsIDQzNzU4LCA0MTgyLCA3ODE3MSwgNDY3NiwgMTIwNTAxLCA5MjEwLCAKLSAgICAwLCAyNTEwLCAwLCAxMDIwOCwgNzgxNjgsIDkyMzYxLCAxMTU0MCwgNDM1NDYsIDY2OTIsIDY4MzcsIDQxMDYwLCAxMjgwMTgsIAotICAgIDQ2NjgsIDkwODMsIDAsIDAsIDc4MTQ0LCAxNTU5LCA2MzgzMSwgOTY3NywgNjczNDAsIDY3MzQ3LCA2NTI1NiwgNjczNDUsIAotICAgIDY3MzQ0LCA5ODMzNTIsIDk4MzI2NiwgMzY1LCAxMjA1NiwgNDMwMjcsIDEyMDQyMywgNDE3MTYsIDEyODIzNiwgNjczNTIsIAotICAgIDY3MzUxLCA1NTE2LCAyODQ1LCA3NzE3LCA4MDM2LCA0MTcxNywgNjczNTMsIDU0NCwgMTIwNDUsIDYyNzgsIDc0NjMyLCAKLSAgICA1NTE1LCAxMjkxODYsIDEyMDg4NCwgOTgzMDUxLCA2NTMzOSwgNDMyMjEsIDIyMTEsIDAsIDU1MTcsIDcwMTE2LCA3NDIyNSwgCi0gICAgNzQ4NDEsIDY3ODg0LCAxMjg0MTQsIDY3ODkwLCA2Nzg4NSwgNjc4ODAsIDY3ODgxLCA2Nzg4MiwgNjc4ODMsIDEyMDE5OSwgCi0gICAgMTE4ODgzLCA2Nzg3OSwgMTI3MTg4LCAxOTAyLCA2Nzg4NywgOTYzOCwgMTI5NzYsIDEyNjU0NiwgMTI0ODMsIDEyMzY4LCAKLSAgICA0MTc2OSwgNDI3MjYsIDQxNzY1LCA3MzYxLCA2NjY3LCA2Nzg3NCwgNzU1NiwgNjc4NzgsIDc0MzUxLCAxMTI2NCwgOTg5LCAKLSAgICA0MjY3NywgNjc4ODksIDkzMDQwLCAxMzExLCAxMjg5NDksIDQzMjYsIDExMDAwLCA2MzgyNCwgMTMwNjgsIDEwOTMyLCAKLSAgICAxMjg4ODAsIDY5MTcsIDc4MTU1LCAxMjA4MzcsIDk0OSwgNzc4ODIsIDkxNzk2OCwgNjE0OCwgODYwNSwgNDIyNTMsIAotICAgIDc4MTc3LCA2NjkwNiwgMCwgNDI3MTUsIDcxNDMyLCA3MDI4MiwgOTgzMzczLCA2Mzg3MSwgMCwgNDE3OTYsIDEyNjksIAotICAgIDY1MzAsIDEyMTQxNCwgNjUwNTcsIDcwNDkzLCA1MTQ0LCAxMjIyMSwgNDI3MTYsIDY4Mjk5LCA0NDMxLCA0MzMxLCAKLSAgICA5ODM3MjksIDEyODY3NSwgNDE4MzQsIDUyNzksIDEyMTM2MiwgMTAzMzYsIDgzMTIsIDAsIDQyNzAxLCA5Mjk1OSwgMCwgCi0gICAgNzgxNjUsIDY2MDM2LCA3MDE2NiwgMTIwOTM3LCA2NDI4LCA0MjI3MCwgOTgzNzI2LCA5ODM1OTYsIDQzMDU5LCA0MjY2NiwgCi0gICAgNTI1NiwgMTA2NywgMjU1LCAxMjEzMSwgMTI4NzQyLCA5NDkzLCA3NDk5MCwgNDEwMTQsIDExNzkzLCAxOTQ5MjAsIAotICAgIDEyMTE5NSwgNzQzOTQsIDQzNDYwLCAxMDY1MywgNDI3MjMsIDk4Mzg1NCwgMTE5NjMyLCA3MDQyNywgNjU2MCwgNzAxNiwgCi0gICAgNzQyNzQsIDY5OTg2LCA0MzU1NiwgMzkyOSwgNjc5NzcsIDY2MTQsIDI3NjgsIDkyNTA0LCA5NzQ2LCA1MTM1LCAxMTgxMSwgCi0gICAgMTI3OTYsIDExOTUzLCAwLCA2OTc2MSwgNTEzOSwgMzQ2LCA3NDMwMywgNjMwNSwgMTI3OTUsIDQ2NzUsIDUxNjgsIDc4NTUyLCAKKyAgICA5ODM2NTgsIDg0OTgsIDY5ODE4LCA4OTQ5LCAzMDY1LCA0MjcxOSwgNzEzNSwgMTU2OSwgOTIzNzUsIDEyNTM0LCAxMjEyNCwgCisgICAgNzY5MCwgMCwgMTI1MzMsIDk4Mzc5NiwgNjQxOCwgNDU0MywgNzgwODYsIDY5NjksIDEyODQ0NCwgNzQ4MDAsIDcxMDUxLCAKKyAgICA2Nzk3NCwgMTA4NTksIDEyODY1MCwgOTgzODAxLCA2Mzg5NCwgMTIwNzYwLCAxMjI4MiwgNjYxOTIsIDk4MzU4MywgNzQ1OTIsIAorICAgIDg4NTAsIDc0Mjc1LCA5MjM4LCAxMDYxNywgNjgwNjMsIDkxNzkwOSwgOTI2MjUsIDkxNzgwMSwgMTI3OTEsIDEyODk3NiwgCisgICAgOTQwNjksIDEyNzg0MywgNDQ0NywgNzEwNjUsIDEyNzkzLCAxMjkwMCwgOTIzNzcsIDEwOTUwLCAxMDA4NzgsIDc0NjM5LCAKKyAgICAxMjc5MCwgNDE0MDAsIDExOTEyOCwgNjY2MDcsIDEyNzkyLCA0MjIzMiwgMTE5MjM5LCAxNzQ0LCAxMjc4OSwgMTAzNjYsIAorICAgIDEyMzE3LCA0MTMxMCwgMTAwODY1LCA0MTM5OSwgMTAwODIyLCAxMjY2NDksIDU1MjU4LCAwLCAxMjY5MCwgMTIwMDgzLCAwLCAKKyAgICA0MzY3MiwgMTI3ODQwLCA0MTY1MiwgMjk3NCwgOTAxMCwgMTEzMTUsIDExOTY1OCwgMjc4LCAxMjEyMDQsIDQxNDA1LCAKKyAgICA0Mzg3MSwgMTAwODY3LCAxMDA3NywgNjM4NTMsIDcwNjY3LCA0MjU4NiwgOTE3ODg2LCA3NDExNCwgNjAwMiwgNjczMzUsIAorICAgIDQzNTUzLCAxMTE4OSwgNjczMzgsIDY3MzM3LCAxMjc4NywgNDEzMDgsIDc5MzQsIDY1MzA2LCAxMjAyNjMsIDEyMDk0MCwgCisgICAgOTQwNDIsIDg2NDYsIDEyODI1NywgNzc4MjksIDcxMzYwLCAwLCA2NDEzLCA2NTUwLCAxMTM3NTksIDE5NDAsIDI4MDksIAorICAgIDQzNjM3LCAyMjAsIDY1MTkzLCA0MzU1MSwgMTA2NzgsIDEwMDQ0LCA2ODg0MSwgMTI4MTIxLCA5ODMzNTAsIDY4MjkwLCAKKyAgICA2NDAzLCA1NzA3LCAxMDM5MywgMTI3NTMyLCAwLCA2NjYxNCwgMCwgMTIyOTIxLCAxMjc5MTIsIDEwMjk3LCAxOTUwNTcsIAorICAgIDM3NDIsIDY3MzMxLCAzOTU5LCAwLCAxMjA0NjYsIDAsIDI0NjcsIDY4ODA2LCA2MDAzLCA2Mzg0NCwgNjY2MywgODA0MCwgCisgICAgOTgzMjIwLCA0Mzc1OCwgNDE4MiwgNzgxNzEsIDQ2NzYsIDEyMDUwMSwgOTIxMCwgMCwgMjUxMCwgMCwgMTAyMDgsIDc4MTY4LCAKKyAgICA5MjM2MSwgMTE1NDAsIDQzNTQ2LCA2NjkyLCA2ODM3LCA0MTA2MCwgMTAxMDk3LCA0NjY4LCA5MDgzLCA5ODMyNDQsIDAsIAorICAgIDc4MTQ0LCAxNTU5LCA2MzgzMSwgOTY3NywgNjczNDAsIDY3MzQ3LCA2NTI1NiwgNjczNDUsIDY3MzQ0LCA5ODMzNTIsIAorICAgIDk4MzI2NiwgMzY1LCAxMjA1NiwgNDMwMjcsIDEyMDQyMywgNDE3MTYsIDEyMDI1OCwgNjczNTIsIDY3MzUxLCA1NTE2LCAKKyAgICAyODQ1LCA3NzE3LCA4MDM2LCA0MTcxNywgNjczNTMsIDU0NCwgMTIwNDUsIDYyNzgsIDc0NjMyLCA1NTE1LCAxMjkxODYsIAorICAgIDEyMDg4NCwgOTgzMDUxLCA2NTMzOSwgNDMyMjEsIDIyMTEsIDEyMDU0MSwgNTUxNywgNzAxMTYsIDc0MjI1LCA3NDg0MSwgCisgICAgNjc4ODQsIDEyODQxNCwgNjc4OTAsIDY3ODg1LCA2Nzg4MCwgNjc4ODEsIDY3ODgyLCA2Nzg4MywgMTIwMTk5LCAxMTg4ODMsIAorICAgIDY3ODc5LCAxMjE0NDgsIDE5MDIsIDY3ODg3LCA5NjM4LCAxMjk3NiwgNzQzOTQsIDEyNDgzLCAxMjM2OCwgNDE3NjksIAorICAgIDQyNzI2LCA0MTc2NSwgNzM2MSwgNjY2NywgNjc4NzQsIDc1NTYsIDY3ODc4LCA3NDM1MSwgMTEyNjQsIDk4OSwgNDI2NzcsIAorICAgIDY3ODg5LCA5MzA0MCwgMTMxMSwgMTAwODgyLCA0MzI2LCAxMTAwMCwgNjM4MjQsIDEzMDY4LCAxMDkzMiwgMTAwNjQzLCAKKyAgICA2OTE3LCA3ODE1NSwgMTIwODM3LCA5NDksIDc3ODgyLCA5MTc5NjgsIDYxNDgsIDg2MDUsIDQyMjUzLCA3ODE3NywgNjY5MDYsIAorICAgIDEwMDY0NCwgNDI3MTUsIDcxNDMyLCA3MDI4MiwgMTAwNjQ3LCA2Mzg3MSwgMTI4Mjk2LCA0MTc5NiwgMTI2OSwgNjUzMCwgCisgICAgMTAxMDQ5LCA2NTA1NywgNzA0OTMsIDUxNDQsIDEyMjIxLCA0MjcxNiwgNjgyOTksIDQ0MzEsIDQzMzEsIDEwMTA0NSwgCisgICAgMTI4Njc1LCA0MTgzNCwgNTI3OSwgMTIxMzYyLCAxMDMzNiwgODMxMiwgMCwgNDI3MDEsIDkyOTU5LCAwLCA3ODE2NSwgCisgICAgNjYwMzYsIDcwMTY2LCAxMDAzODcsIDY0MjgsIDQyMjcwLCA5ODM3MjYsIDk4MzE2MywgNDMwNTksIDQyNjY2LCA1MjU2LCAKKyAgICAxMDY3LCAyNTUsIDEyMTMxLCAxMjg3NDIsIDk0OTMsIDczODk0LCA0MTAxNCwgMTE3OTMsIDEyNjQ2NywgNzg3NDAsIAorICAgIDcwNzI4LCA0MzQ2MCwgMTA2NTMsIDQyNzIzLCAxMjUyMTYsIDEwMDY1OCwgNzA0MjcsIDY1NjAsIDcwMTYsIDc0Mjc0LCAKKyAgICA2OTk4NiwgNDM1NTYsIDM5MjksIDY3OTc3LCA2NjE0LCAyNzY4LCA5MjUwNCwgOTc0NiwgNTEzNSwgMTE4MTEsIDEyNzk2LCAKKyAgICAxMTk1MywgMTI3MzgwLCA2OTc2MSwgNTEzOSwgMzQ2LCA3NDMwMywgNjMwNSwgMTI3OTUsIDQ2NzUsIDUxNjgsIDc4NTUyLCAKICAgICA0Mzg0NSwgNzQzMTUsIDc0MzYxLCA4MjUzLCA4ODE3LCAxMTM2LCA5MTc5MzEsIDQzNTYzLCA5MjIzMiwgMTI4OTE0LCAKLSAgICA2NjQxMCwgNzM5MiwgODIzMCwgOTM2NSwgNzExOTQsIDEyNzEwOSwgOTgzNjA3LCA2NjkxNSwgMTI4NDAyLCA0MDQxLCAwLCAKKyAgICA2NjQxMCwgNzM5MiwgODIzMCwgOTM2NSwgNzExOTQsIDEyNzEwOSwgMTk0ODc4LCA2NjkxNSwgMTI4NDAyLCA0MDQxLCAwLCAKICAgICAyMzU3LCA0MzI0MCwgMTI3ODYsIDIyOSwgNDM4MzQsIDExOTg4NCwgNDQwMDQsIDcxNDIsIDExOTg4MSwgMTIzNTAsIAogICAgIDY1NTU0LCAxMTk4ODIsIDcxMzA1LCAxMTk4NzYsIDEyNzg1LCA2Mzg2MywgNDM3OTUsIDc3NzAsIDEwNzEyLCA2NDg1MywgCiAgICAgMTI2ODYsIDQzODMxLCA0MjM3NSwgNjU3ODAsIDEyNDk0NCwgNjYzNTIsIDEwNDcwLCA3MTExOSwgMTEwNTksIDEwNzkxLCAKLSAgICA5MTc5NDQsIDQ1MCwgMTE5MzI4LCAxMjcyNTQsIDEwNDMyLCAxMjA5NywgNTQ1MCwgNjQ2OTEsIDEyMzMsIDAsIDQ0MDA5LCAKKyAgICA3MjcyNCwgNDUwLCAxMTkzMjgsIDEyNzI1NCwgMTA0MzIsIDEyMDk3LCA1NDUwLCA2NDY5MSwgMTIzMywgMCwgNDQwMDksIAogICAgIDc4Mjg0LCA2NjMzOCwgNjYzOTUsIDkxNzgzMiwgMTgzOSwgMTE4Nzk5LCA5ODMyMTksIDEwOTI3LCAxNzAxLCA5ODM2NjQsIAogICAgIDIzODgsIDQxNzQ5LCA0MTc2MSwgNTQ1MywgODM2MSwgMTE5ODY1LCA4OTUsIDU0NDQsIDQxNzYzLCA2NDg4OSwgNzE0MywgCi0gICAgOTI0OTMsIDc4Njc3LCA5ODMxMzcsIDkyNDI5LCA2OTk4MywgNjY0MzIsIDg4MDEsIDMwNTMsIDQzNDAsIDk4MzA0NCwgCi0gICAgMTI4MDEzLCA2NTgxMiwgMTIwNjc1LCA3MDAwMSwgNDE4MjQsIDY3OTg1LCAxMjAyMDMsIDkyNjAwLCAxMjcwNTMsIDQyNzAwLCAKLSAgICAxOTQ4MDUsIDEyNzk4MCwgMTk0ODA3LCA3ODY3NiwgOTIzNTYsIDE5NDgwOCwgMTI3ODQ0LCAwLCA0NDkzLCA0MzM2LCAKLSAgICAxMjkxNzEsIDIzMTQsIDQzNjAyLCA3ODgyNiwgMTE5MzI1LCAxOTQ4MTEsIDQyNDM5LCA2NDYzOCwgNDIzMjcsIDQzNTI4LCAKKyAgICA5MjQ5MywgNzg2NzcsIDk4MzEzNywgOTI0MjksIDY5OTgzLCA2NjQzMiwgODgwMSwgMzA1MywgNDM0MCwgMTk0ODQ5LCAKKyAgICAxMjUxODksIDY1ODEyLCAxMDA2MzMsIDcwMDAxLCA0MTgyNCwgNjc5ODUsIDEyMDIwMywgOTI2MDAsIDEyNzA1MywgNDI3MDAsIAorICAgIDE5NDgwNSwgMTI3NDAzLCAxMjgwNDAsIDc4Njc2LCA5MjM1NiwgMTk0ODA4LCAxMjc4NDQsIDAsIDQ0OTMsIDQzMzYsIAorICAgIDEyOTE3MSwgMjMxNCwgNDM2MDIsIDQxODA4LCAxMTkzMjUsIDE5NDgxMSwgNDI0MzksIDY0NjM4LCA0MjMyNywgNDM1MjgsIAogICAgIDQ0ODksIDY4NzUwLCAxMjUxMTYsIDE5NDc5MywgMTkxMiwgNDIzODUsIDEwMzA2LCAxMDM3MCwgMCwgMTk0NzYxLCA4ODY3LCAKICAgICAxMDI1MCwgMTAyNTgsIDI3MTIsIDE2MzUsIDcxMDY0LCAxNDEwLCA3ODc2MywgOTgzMjUyLCAxMTg4NzgsIDk4MzU2NywgCi0gICAgMTI4NzE1LCA5OTE5LCAxMjA1MjgsIDU1OSwgMTI4MTU3LCA0MTgyNSwgMTIxMjc0LCA3NDY0MSwgNDg5MiwgNzQwMTYsIAorICAgIDEwMDk4OCwgOTkxOSwgMTIwNTI4LCA1NTksIDEyODE1NywgNDE4MjUsIDEyMTI3NCwgNzQ2NDEsIDQ4OTIsIDc0MDE2LCAKICAgICAxMjE1MDIsIDY1NDIsIDQxOTU3LCAxMjg4NjUsIDU3NzcsIDEyNzE2NywgNzU5LCA2NTc0OSwgMjA3OSwgNjUyNDgsIAotICAgIDEyNzg4LCA2NDQ4NywgNjQ1NTIsIDkzMDYzLCAxMDIyMywgNDIwNjIsIDEyMTI3OSwgMCwgNzQyNDYsIDM2NjgsIDY1NzU0LCAKKyAgICAxMjc4OCwgNjQ0ODcsIDY0NTUyLCA5MzA2MywgMTAyMjMsIDQyMDYyLCAxMDA2NDAsIDAsIDc0MjQ2LCAzNjY4LCA2NTc1NCwgCiAgICAgNDM1NjAsIDEyMjI2LCA2Nzk5MSwgNjUxNDksIDIzNDAsIDQxOTU5LCA3MTQ2MywgMTk0Nzg1LCAxOTQ3ODgsIDQzNjE4LCAKLSAgICA2NTc0NywgMTA5MzcsIDI5NjIsIDAsIDIzMjEsIDM1ODcsIDY1NzQ1LCA2NzIzNiwgODkyMSwgOTk1MiwgMTI4OTQxLCAwLCAKLSAgICA0MjcxNCwgOTk1MSwgNDM0MDksIDE5NDc3MCwgMjk0OSwgNjYwMTIsIDE5NDc3NSwgMTk0Nzc0LCAyOTU4LCA2ODM1OSwgCi0gICAgNDE4MjAsIDIzMDAsIDIzOTUsIDEyMDA2MSwgOTk3NiwgMTIwMDQzLCAxMjAwNTAsIDcxODk2LCA2ODIyMCwgMTI4MTQzLCAKKyAgICA2NTc0NywgMTA5MzcsIDI5NjIsIDEyMTE3MSwgMjMyMSwgMzU4NywgNjU3NDUsIDY3MjM2LCA4OTIxLCA5OTUyLCAxMjg5NDEsIAorICAgIDAsIDQyNzE0LCA5OTUxLCA0MzQwOSwgMTAwNjY4LCAyOTQ5LCA2NjAxMiwgMTk0NTgyLCAxOTQ3NzQsIDI5NTgsIDY4MzU5LCAKKyAgICA0MTgyMCwgMjMwMCwgMjM5NSwgMTIwMDYxLCA5OTc2LCAxMDA5NzUsIDEyMDA1MCwgNzE4OTYsIDY4MjIwLCAxMjgxNDMsIAogICAgIDQyODA5LCA0MjgwNywgNzA3OTgsIDY2MjkwLCAxMDE5OCwgNDE1MCwgNjQzNzEsIDgzMTgsIDQxNzkwLCA2Nzk3NiwgCi0gICAgNDE4OTgsIDIzNjAsIDQxNzk0LCA5MTc5NDIsIDcwNzk2LCA5MjE2MywgOTMwMzMsIDAsIDI0MTgsIDk4MzA5OCwgMjQxMSwgCi0gICAgMTEzMzYsIDc5OSwgNjM4MjMsIDEwMjc2LCAxMDMwOCwgMTAzNzIsIDkxNzU0MSwgNDE3NzIsIDQyODEzLCAyMzE3LCAKKyAgICA0MTg5OCwgMjM2MCwgNDE3OTQsIDEwMDY2MywgNzA3OTYsIDkyMTYzLCA5MzAzMywgOTgzNjQ4LCAyNDE4LCA5ODMwOTgsIAorICAgIDI0MTEsIDExMzM2LCA3OTksIDYzODIzLCAxMDI3NiwgMTAzMDgsIDEwMzcyLCAxOTQ2MDQsIDQxNzcyLCA0MjgxMywgMjMxNywgCiAgICAgMTAyNjAsIDExODk4MCwgNTUyODQsIDc4Njg2LCAxMjcxNzcsIDEwMzg0LCAxOTQ3OTQsIDEyMTE0NywgMTI5MTExLCA3NzUzLCAKLSAgICAyMzUxLCA2NjU1LCA2NDQ4OSwgNjk5MzEsIDcwMTk5LCA3Nzg3MiwgNDQ0MywgNDI3NzksIDIzMCwgMCwgNjgwNjcsIAorICAgIDIzNTEsIDY2NTUsIDY0NDg5LCA2OTkzMSwgNzAxOTksIDc3ODcyLCA0NDQzLCA0Mjc3OSwgMjMwLCAxMjcwMTUsIDY4MDY3LCAKICAgICA0MzU0OSwgNDg1NSwgNDIxNTAsIDY1NzM5LCA1NDQxLCA0MTg5NiwgMTAyODgsIDEwMzIwLCAwLCA4NTUsIDcwNDYsIDYxMDksIAogICAgIDY1MDQ1LCA2MzgzOSwgNzgxOTgsIDIwNDksIDEwMDk4LCA5MTc3NzksIDc0MTQ1LCAxMjc5NDMsIDEwMjY0LCAxMDI4MCwgCi0gICAgOTE4NCwgMTAzNzYsIDcwMTMsIDQ0NjcsIDc4Njg0LCA5MTc1NTQsIDkyMjYwLCA0MTg4NywgMCwgNDg2MiwgOTczNSwgCisgICAgOTE4NCwgMTAzNzYsIDcwMTMsIDQ0NjcsIDc4Njg0LCA5MTc1NTQsIDkyMjYwLCA0MTg4NywgMTAxMDI1LCA0ODYyLCA5NzM1LCAKICAgICA2NTM3LCAxMjA1OTEsIDc0Mjg2LCAzOTE0LCA5MjE3OCwgNjg4MjMsIDkwNjUsIDEyOTYxLCAwLCAxMjA0NTYsIDkyMjUzLCAKLSAgICAxMjgyMDQsIDI4OSwgMTI4NzE0LCA0Njk0LCAxMTQyMCwgNDY5MCwgMCwgMTIwNTE0LCA5MTc5NzgsIDQ2OTMsIDczODkzLCAKLSAgICA0MjcyNCwgNjk5NzcsIDQ2ODgsIDEyMDQ1NCwgMTI4NTA3LCAwLCA2Nzk5NCwgODIzOCwgMzExMCwgMTIwMTYyLCAzNTY1LCAKLSAgICAxMjAxNjMsIDY1MjgsIDc4Mzg3LCA0MzAzNSwgNjk4OTgsIDIxOCwgOTgzODUwLCAxNTIwLCAwLCA0Nzg2LCA5ODMxNjgsIAotICAgIDQzMjI1LCA0NjAyLCA5MjQwMCwgNzgxNjcsIDEwMDg4LCA2NTQ4LCAxMjExNTcsIDEyMDE1NiwgNDM5NzgsIDg5ODgsIAotICAgIDg4ODgsIDkyNzI0LCA3NDgxMiwgNjk3MDksIDk4Mzk2NywgMTA2NjYsIDAsIDczOTAyLCA2OTc0MCwgMTIxNDM2LCAwLCAKLSAgICA5OTc1LCAxMTM3MDQsIDExOTkwMiwgNDY4OSwgODkzMiwgMCwgNjU1NjAsIDExOTIwOSwgNzQ0NDEsIDc4ODEwLCAwLCAwLCAKLSAgICA2Nzk4NywgMCwgMTI4ODI4LCAwLCA2Nzk4OSwgMTE5MDI5LCAxMDA2NSwgODIwNywgNzE5MDAsIDkyNjEzLCAxMjgwMTEsIAotICAgIDEyMTAyOCwgNjYyLCAxMjg3MjAsIDkyNDQsIDE5NDg2MywgODMxODMsIDExOTI2MSwgOTgzNDMwLCAwLCAxMjA5MDEsIAotICAgIDkxNzgzOCwgNDE5MjksIDAsIDcxMDg0LCA2NjY3NCwgNDE5MjYsIDY5OTk0LCAxMjA0NDMsIDEwNTEzLCA2NDYzNywgCi0gICAgMTk0ODYyLCA2ODAxMywgNTIsIDEzMTE4LCA2NDc1LCAxOTUwMDQsIDgzNDc5LCAxMjA5NSwgMTAyMjUsIDQ4MTIsIDkyNTc4LCAKLSAgICAxMjg0ODYsIDY3OTkyLCA3NDA4NSwgMCwgMzk3OCwgMTI4NDI1LCA5MTc5NDUsIDc0MDE1LCAxMTU4MiwgOTI3NjgsIAotICAgIDEyMjgxLCAxMjcwNDMsIDY1NDQsIDEzMjQxLCA5Mzk2MSwgNjk3ODIsIDEyNTAxNCwgMTk0ODYwLCAxMTc2NSwgNjUyNTgsIAotICAgIDEwMzY5LCAwLCAxNTg1LCA3MTkyLCAxMDI0OSwgNDIyLCAxNTAwLCAyMDM2LCA5ODYsIDE5NDg1OSwgNjQzOTQsIDU3ODEsIAotICAgIDU1OTksIDY0Mjk0LCAyNDk0LCAxMjA0NTAsIDQ4NjEsIDc0MDIxLCA2NDMzNCwgNzgyMDMsIDEyNzgwOCwgMCwgODM0NDQsIAotICAgIDY1MTAyLCA4OTYxLCA2NTg0MiwgMTAyNDMsIDEwMjQ1LCA3MTkwNywgMTIwNDEwLCAwLCAxMjA0NTMsIDY0ODIxLCA5NDc4LCAKLSAgICAyNTA4LCA5MjY4MywgMCwgMjAyLCAxMjgyNDYsIDc0MTMxLCAxMjQyLCA2NTUxNCwgMTIxMTcwLCA2Mzk0MCwgMTIxMzYzLCAKLSAgICA2NDUzMywgNzE4ODMsIDEyMDQ0NiwgNjc4NDIsIDExOTkwLCA5MjQwNSwgNjM5MzksIDQzMzc1LCA2NTQ0MCwgMjUwNCwgMCwgCi0gICAgNzg2NzEsIDY0ODI5LCA5MzAyMCwgNjk0MywgOTE3OTM0LCA1ODU5LCAwLCAyODU4LCA5ODMzNjMsIDc0Mjk0LCA5ODM5MTQsIAotICAgIDY5MjM5LCAwLCA2Nzg3MSwgMTI5OTIsIDI3NTMsIDE5MzYsIDcwMDc4LCA2NzcwMSwgMjc1MSwgMTI2NjIsIDI3NjMsIAotICAgIDg5NTMsIDY0NzAxLCAxMDczMSwgMTI5MjIsIDcwNTIsIDkxNzgzOSwgNjY0MjQsIDYzOTkyLCAwLCA2MzkyMCwgNzQxMjgsIAotICAgIDI4NTYsIDExOTkxMCwgNDcsIDY5OTA4LCA3MTA1MywgNjU4NTgsIDE5NDgwNiwgMCwgNjc4MjksIDc4OTksIDAsIDg0MTcsIAotICAgIDQzNzk4LCA3MDcyLCA3NDE5NSwgMCwgNDAzMywgMTIxMjg5LCA0Mzk5MiwgMTIxMDgxLCAwLCAyMTIsIDY0NjAwLCAxOTAzLCAKLSAgICAxMjMyMCwgODM0ODQsIDEyMDg5NCwgMTk0NTYzLCAwLCA4OTE1LCAyNzU5LCA5NDUsIDY2ODksIDkzMDY0LCAwLCAwLCAKLSAgICAxMTg3OTgsIDEyOTEsIDc0ODI4LCAwLCAxMjA0MzUsIDk1MzEsIDEzMTU1LCA4NTA1LCA2ODM3OSwgMTIwNjIsIDEyODE5OCwgCi0gICAgMTIxMjE2LCA2NTQ4NywgOTIxODksIDQxODM3LCAxMjA2MTEsIDgyNDYsIDEyODg3NCwgOTMwNjYsIDAsIDEyMDQzMywgMCwgCi0gICAgNjM5MzUsIDczOTYyLCAxMjA4MDYsIDY0Nzg3LCA0MzUyNCwgMCwgNjQ0MjYsIDk4MzA5MiwgMTk0OTQ4LCA5MTc4NjYsIAotICAgIDkxNzc4OCwgNjU2NjQsIDY2OTMsIDk4NDMsIDAsIDg2NzQsIDExOTg4NywgMTI4ODEyLCA5MjcxNSwgNzA3ODgsIDEzMjAsIAotICAgIDEyMTQ2MSwgMTY3MywgNDgxMSwgOTIzODMsIDU5ODYsIDkzMzgsIDMwNDYsIDc0NDgwLCA1OTg1LCA5MTc5MjgsIDExOTU5OCwgCi0gICAgOTgyMCwgMTE5ODkyLCAxMjE4NywgOTgzODQxLCA3MTA0MSwgNTk4NCwgMCwgNDMzMDgsIDQzOTMsIDY3NjUwLCA5ODMyMjcsIAotICAgIDAsIDc0ODIyLCAwLCA3NDgyNiwgNjQ3MzMsIDk4MzIxNCwgMTI3ODk4LCAzNDkxLCA2NzE0NiwgMTIxMTQyLCAxMjgyMTksIAotICAgIDM1MTQsIDY1NDg1LCA3MjQyOCwgNzQ5MiwgMTI4ODYwLCA3NDYwNSwgOTI0ODMsIDc1MTQsIDk4MzM2OSwgMTI2NTg1LCAKLSAgICAxOTQ3MzEsIDc1MDIsIDc1ODcsIDY4MzUzLCA2MzkyMSwgMTIxMTc4LCA2MzkyNSwgMTIwMTYxLCA3NjEwLCAyMTksIAotICAgIDEyODE1OCwgNzg3MjIsIDY5MiwgNDM1ODgsIDY4NDg1LCA0MTYzNSwgNDMyNDEsIDk2ODgsIDcxNDcsIDk1MzUsIDAsIAotICAgIDkzOTkxLCAwLCA2NDUzMCwgMCwgNjQ2MTAsIDExODA0LCAwLCA3MTQ5LCA3NDUzLCAwLCA4MDEzLCA2NjM5NiwgOTIzMDEsIAotICAgIDAsIDg4OTUsIDUyNTMsIDcwMDI1LCA1NDU4LCA5MTc2MjksIDI4NjYsIDEyOTA0NSwgMTI3ODYwLCAxMTA5OCwgNjg0MzMsIAotICAgIDY3MDAsIDEyMDQ4NCwgMCwgMTIwNTgzLCAxOTQ4MjQsIDg5NjIsIDc3OTYwLCA5NjQxLCA0MzY5NCwgNzA1OSwgOTgzNjc3LCAKLSAgICA2Mzk5NywgOTYwNCwgNzg3MDAsIDc0NDEsIDYzODI2LCA2Nzk3MCwgODM0MzUsIDY0MzkyLCA5MjYyNiwgOTgzNjg3LCAKLSAgICAyODQ0LCA3NDYxMCwgNDE5NzQsIDY3Mzk3LCAxMjEzOSwgNjc5NzEsIDAsIDAsIDMzNTgsIDY1Mjk1LCA5ODM4OTksIDMxMDQsIAotICAgIDE5NDczNCwgMCwgMTIxMzA0LCA5ODMyMzUsIDUzMDgsIDgzNDM0LCAyOTAsIDAsIDEyMTMzOCwgMjg2MiwgMjc5MiwgCi0gICAgMTk1MDg4LCA5Mjk2MywgNzc5ODQsIDMyNjgsIDY2NTkxLCAwLCA2NTUyLCA0MjM2NywgNzAzNSwgMTIwNTU4LCAwLCAwLCAKLSAgICAxODE0LCA3ODQ2NCwgMTAyNDAsIDY2Mjg1LCA3NDMwNSwgMTI4MzgyLCA3NDUyOCwgNjU5MDMsIDcxNDU0LCA0MjY0NiwgCi0gICAgNzYwNiwgMjU5MSwgMjgzNywgNDM0MSwgNDM1MTMsIDY0NDgyLCA5MjUyNCwgODE2MywgNjUyNzAsIDAsIDc3OTMyLCAwLCAKLSAgICA5MTEyLCA3NDQzMSwgODYzLCA5NDkwLCA3NTAzNywgMTI4MzQ5LCA0MzMyMywgMTIwNTEzLCAxMTk4OTcsIDkwNzEsIAorICAgIDEyODIwNCwgMjg5LCAxMDEwMjksIDQ2OTQsIDExNDIwLCA0NjkwLCAxMjI4OTksIDEwMDc4OSwgOTE3OTc4LCA0NjkzLCAKKyAgICA3Mzg5MywgNDI3MjQsIDY5OTc3LCA0Njg4LCAxMjA0NTQsIDEyODUwNywgOTgzODEzLCA2Nzk5NCwgODIzOCwgMzExMCwgCisgICAgMTIwMTYyLCAzNTY1LCAxMjAxNjMsIDY1MjgsIDc4Mzg3LCA0MzAzNSwgNjk4OTgsIDIxOCwgOTgzODUwLCAxNTIwLCAwLCAKKyAgICA0Nzg2LCA5ODMxNjgsIDQzMjI1LCA0NjAyLCA5MjQwMCwgNzgxNjcsIDEwMDg4LCA2NTQ4LCAxMjExNTcsIDEyMDE1NiwgCisgICAgNDM5NzgsIDg5ODgsIDg4ODgsIDY1NzI3LCA3NDgxMiwgNjk3MDksIDk4Mzk2NywgMTA2NjYsIDAsIDczOTAyLCA2OTc0MCwgCisgICAgMTIxNDM2LCAwLCA5OTc1LCAxMTM3MDQsIDExOTkwMiwgNDY4OSwgODkzMiwgMTI1MjM4LCA2NTU2MCwgMTE5MjA5LCAKKyAgICA3NDQ0MSwgNzg4MTAsIDEyMjg4MSwgMTI4NzA3LCA2Nzk4NywgMCwgMTIxMDIxLCAwLCA2Nzk4OSwgMTE5MDI5LCAxMDA2NSwgCisgICAgODIwNywgNzE5MDAsIDkyNjEzLCAxMjgwMTEsIDEwMTA5MCwgNjYyLCAxMjUyMjEsIDkyNDQsIDE5NDg2MywgODMxODMsIAorICAgIDExOTI2MSwgOTgzNDMwLCA5MTc4ODksIDEyMDkwMSwgOTE3ODM4LCA0MTkyOSwgMCwgNzEwODQsIDY2Njc0LCA0MTkyNiwgCisgICAgNjk5OTQsIDEyMDQ0MywgMTA1MTMsIDY0NjM3LCAxOTQ4NjIsIDY4MDEzLCA1MiwgMTMxMTgsIDY0NzUsIDE5NTAwNCwgCisgICAgODM0NzksIDEyMDk1LCAxMDIyNSwgNDgxMiwgOTI1NzgsIDEyODQ4NiwgNjc5OTIsIDc0MDg1LCAwLCAzOTc4LCAxMjg0MjUsIAorICAgIDkxNzk0NSwgNzQwMTUsIDExNTgyLCA5Mjc2OCwgMTIyODEsIDEyNzA0MywgNjU0NCwgMTMyNDEsIDkzOTYxLCA2OTc4MiwgCisgICAgMTI1MDE0LCAxMjg4MDgsIDExNzY1LCA2NTI1OCwgMTAzNjksIDk4MzQ5OCwgMTU4NSwgNzE5MiwgMTAyNDksIDQyMiwgCisgICAgMTUwMCwgMjAzNiwgOTg2LCAxOTQ4NTksIDY0Mzk0LCA1NzgxLCA1NTk5LCA2NDI5NCwgMjQ5NCwgMTIwNDUwLCA0ODYxLCAKKyAgICA3NDAyMSwgNjQzMzQsIDc4MjAzLCAxMjc4MDgsIDAsIDcyODcxLCA2NTEwMiwgODk2MSwgNjU4NDIsIDEwMjQzLCAxMDI0NSwgCisgICAgNzE5MDcsIDEyMDQxMCwgMTAwNjcxLCAxMjA0NTMsIDY0ODIxLCA5NDc4LCAyNTA4LCA5MjY4MywgMCwgMjAyLCAxMjgyNDYsIAorICAgIDc0MTMxLCAxMjQyLCA2NTUxNCwgMTIxMTcwLCA2Mzk0MCwgMTIxMzYzLCA2NDUzMywgNzE4ODMsIDEyMDQ0NiwgNjc4NDIsIAorICAgIDExOTkwLCA5MjQwNSwgNjM5MzksIDQzMzc1LCA2NTQ0MCwgMjUwNCwgMCwgNzg2NzEsIDY0ODI5LCA5MzAyMCwgNjk0MywgCisgICAgOTE3OTM0LCA1ODU5LCA5ODM5ODAsIDI4NTgsIDk4MzM2MywgNjY3ODEsIDk4MzkxNCwgNjkyMzksIDk4MzM4MCwgNjc4NzEsIAorICAgIDEyOTkyLCAyNzUzLCAxOTM2LCA3MDA3OCwgNjc3MDEsIDI3NTEsIDEyNjYyLCAyNzYzLCA4OTUzLCA2NDcwMSwgMTA3MzEsIAorICAgIDEyOTIyLCA3MDUyLCA5MTc4MzksIDY2NDI0LCA2Mzk5MiwgMCwgNjM5MjAsIDc0MTI4LCAyODU2LCAxMTk5MTAsIDQ3LCAKKyAgICA2OTkwOCwgNzEwNTMsIDY1ODU4LCAxMDA4NjMsIDEyOTAzMywgNjc4MjksIDc4OTksIDk4MzU3NSwgODQxNywgNDM3OTgsIAorICAgIDcwNzIsIDc0MTk1LCAwLCA0MDMzLCAxMjEyODksIDQzOTkyLCAxMjEwODEsIDk4MzMxNSwgMjEyLCA2NDYwMCwgMTkwMywgCisgICAgMTIzMjAsIDgzNDg0LCAxMjA4OTQsIDE5NDU2MywgMTAwOTc5LCA4OTE1LCAyNzU5LCA5NDUsIDY2ODksIDkzMDY0LCAwLCAKKyAgICA5ODM3NTYsIDExODc5OCwgMTI5MSwgNzQ4MjgsIDAsIDEyMDQzNSwgOTUzMSwgMTMxNTUsIDg1MDUsIDY4Mzc5LCAxMjA2MiwgCisgICAgMTIxMjUzLCAxMjEyMTYsIDY1NDg3LCA5MjE4OSwgNDE4MzcsIDEyMDYxMSwgODI0NiwgMTI4ODc0LCA5MzA2NiwgMTAwNjgwLCAKKyAgICAxMjA0MzMsIDE5NDU3MCwgNjM5MzUsIDczOTYyLCAxMjA4MDYsIDY0Nzg3LCA0MzUyNCwgMTIxNDMxLCA2NDQyNiwgCisgICAgOTgzMDkyLCAxOTQ5NDgsIDIyMzAsIDkxNzc4OCwgNjU2NjQsIDY2OTMsIDk4NDMsIDAsIDg2NzQsIDEwMDg2OSwgMTIwODU4LCAKKyAgICA5MjcxNSwgNzA3ODgsIDEzMjAsIDEyMTQ2MSwgMTY3MywgNDgxMSwgOTIzODMsIDU5ODYsIDkzMzgsIDMwNDYsIDc0NDgwLCAKKyAgICA1OTg1LCA5MTc5MjgsIDExOTU5OCwgOTgyMCwgMTE5ODkyLCAxMjE4NywgOTgzODQxLCA3MTA0MSwgNTk4NCwgMCwgNDMzMDgsIAorICAgIDQzOTMsIDY3NjUwLCAxMTM3ODcsIDEyNzAxMywgNzQ4MjIsIDAsIDc0ODI2LCA2NDczMywgOTgzMjE0LCAxMjc4OTgsIAorICAgIDM0OTEsIDY3MTQ2LCAxMjExNDIsIDEyODIxOSwgMzUxNCwgNjU0ODUsIDcyNDI4LCA3NDkyLCAxMjg4NjAsIDc0NjA1LCAKKyAgICA3Mjc2OCwgNzUxNCwgOTgzMzY5LCAxMjY1ODUsIDE5NDczMSwgNzUwMiwgNzU4NywgNjgzNTMsIDYzOTIxLCAxMjExNzgsIAorICAgIDYzOTI1LCAxMjAxNjEsIDc2MTAsIDIxOSwgMTI4MTU4LCA3ODcyMiwgNjkyLCA0MzU4OCwgNjg0ODUsIDQxNjM1LCA0MzI0MSwgCisgICAgOTY4OCwgNzE0NywgOTUzNSwgMTk0OTg5LCA5Mzk5MSwgOTgzOTQ1LCA2NDUzMCwgMCwgNjQ2MTAsIDExODA0LCA5MTc5MTgsIAorICAgIDcxNDksIDc0NTMsIDExOTU2MCwgODAxMywgNjYzOTYsIDkyMzAxLCAwLCA4ODk1LCA1MjUzLCA3MDAyNSwgNTQ1OCwgCisgICAgMTk0NjUxLCAyODY2LCAxMTg4MDUsIDEyNzg2MCwgMTEwOTgsIDY4NDMzLCA2NzAwLCAxMjA0ODQsIDEyOTMwOCwgMTIwNTgzLCAKKyAgICAxOTQ4MjQsIDg5NjIsIDc3OTYwLCA5NjQxLCA0MzY5NCwgNzA1OSwgOTgzNjc3LCA2Mzk5NywgOTYwNCwgNzg3MDAsIDc0NDEsIAorICAgIDYzODI2LCA2Nzk3MCwgODM0MzUsIDY0MzkyLCA5MjYyNiwgOTgzNjg3LCAyODQ0LCA3NDYxMCwgNDE5NzQsIDY3Mzk3LCAKKyAgICAxMjEzOSwgNjc5NzEsIDEyNzE2NiwgOTgzODM0LCAzMzU4LCA2NTI5NSwgOTgzMjkyLCAzMTA0LCAxMDA3NzksIDAsIAorICAgIDEyMTMwNCwgOTgzMjM1LCA1MzA4LCA4MzQzNCwgMjkwLCAwLCAxMjEzMzgsIDI4NjIsIDI3OTIsIDkyNDgzLCA5Mjk2MywgCisgICAgNzc5ODQsIDMyNjgsIDY2NTkxLCAwLCA2NTUyLCA0MjM2NywgNzAzNSwgMTIwNTU4LCAxMDEwMDgsIDkxNzk3MSwgMTgxNCwgCisgICAgNzg0NjQsIDEwMjQwLCA2NjI4NSwgNzQzMDUsIDEyODM4MiwgNzQ1MjgsIDY1OTAzLCA3MTQ1NCwgNDI2NDYsIDc2MDYsIAorICAgIDI1OTEsIDI4MzcsIDQzNDEsIDQzNTEzLCA2NDQ4MiwgOTI1MjQsIDgxNjMsIDY1MjcwLCAxOTQ4MjUsIDc3OTMyLCAwLCAKKyAgICA5MTEyLCA3MjcyMSwgODYzLCA5NDkwLCA3NTAzNywgMTI4MDM3LCA0MzMyMywgMTIwNTEzLCAxMTk4OTcsIDkwNzEsIAogICAgIDY4MDU0LCAwLCAzNjU0LCA3Nzg5LCA5NjM3LCAxMjExMzYsIDI1MzUsIDY1NTA0LCA3NjUzLCA0MDk5MywgOTI0MTUsIAogICAgIDY2NTg3LCAxMjQ5ODcsIDAsIDkyNDAxLCA0MzkyNywgMTEwMDYsIDEyOTI3LCA3ODA3LCA4MDczLCAxMjA5ODAsIDEwNjI5LCAKLSAgICAxMjc4NjksIDc0MDg4LCAzMDU2LCAxMDgyMywgMTI3MjY3LCA5MjM5MSwgODc2MiwgMTA1MDgsIDY5Njg5LCA3Mzc3MCwgCi0gICAgNDM5NjksIDQzMTkzLCAxMDczNywgMzQ2MywgMTIwOTc1LCA5ODMzNTEsIDY2NjMzLCA4Njk1LCA0ODE1LCAxMTMyMiwgCi0gICAgNTgxMSwgMTIzNDUsIDcwNDksIDExODgxMSwgNTE5NSwgMTk1MDgxLCAwLCA2NjYzOSwgOTI5MzksIDAsIDAsIDEyODA0MSwgCi0gICAgNjc5MDMsIDY3NzM5LCAxMjYyLCAxMjAxNjUsIDY1NjEsIDE5OTM5LCAxMjg2NzMsIDAsIDEyNzMxOCwgMTE5OTA2LCAKLSAgICA3MDMwMCwgMCwgOTgzMDk3LCAwLCA5ODM2NjcsIDExOTkwNywgNjQ2MTIsIDExOTkxLCAxMjA2NTQsIDAsIDkyOTQzLCAKLSAgICAxNTAyLCA5MTc1NjgsIDEyNzk4OCwgOTEwNywgMTI3MzE2LCA1NzAyLCAzNjU1LCA2NzY2MSwgODQzMCwgMCwgNzEyMjMsIAotICAgIDEyMDc1OCwgMCwgNzQwNTcsIDk2MDMsIDEyODA3OSwgNTI1NCwgMTIwNzQyLCA3NzI0LCA3NDM4OCwgNjgzNzUsIDEwNzk2LCAKLSAgICA1MTI5LCAwLCA3MDgxNiwgNTkwLCA3NTc5LCA1NjE0LCA1ODkzLCA5MjI4MCwgMTE3MjAsIDkyNDk2LCAxMTcyMSwgNzA4MDQsIAotICAgIDQ3OTgsIDEyMTQ2OCwgMTE5MzE2LCA2NjAzOCwgNDc5MywgNjc4NTEsIDExNzI2LCAxMjc1NDEsIDc0MjA0LCA2ODYxMCwgCi0gICAgNjg4MjQsIDY4NjI2LCA4OTQsIDMwMCwgMTIwODc1LCAxMjMwNiwgNjYyMzUsIDgwMDQsIDAsIDExOTU3NCwgMjU2MiwgCi0gICAgNzAxNTYsIDEyMDg1NiwgNDI1MDMsIDkyOTAwLCAxMTY1MiwgOTE3ODEzLCA5MTc3OTksIDExOTI0MSwgNjQ2OTksIAotICAgIDEyNjU2OSwgNTA5NiwgNTA5NSwgMjg2MywgMzQyNCwgOTIyNDQsIDEwNDU0LCA0MjUzMCwgNTA5NCwgNzA4NzMsIDAsIAotICAgIDEzMTU2LCAxMjkwNTcsIDEwODMyLCA1MDkzLCAwLCA2OTg1MiwgNzI0MzAsIDUwOTIsIDEwNzA4LCAxMTMyNywgMCwgNTA5MSwgCi0gICAgMTc2LCAwLCA5MTUzLCA0MTA0LCA3ODU5OSwgNzg2MDEsIDEyMTUsIDQyNzEyLCA1NzQ0LCAxMjI3MiwgOTgzMiwgMTE3NzcsIAotICAgIDcxMjk5LCA2NjgxNywgNDI4ODEsIDAsIDg5ODAsIDExODk4OCwgNjc4NjEsIDg4NDQsIDcyMDksIDAsIDAsIDQyNzgsIAotICAgIDEyODgwOSwgMCwgMTE5MTYwLCA3MDgyMSwgOTA3NCwgNDM0OCwgMCwgNjU1NTgsIDY1OTQ2LCA4MTEzLCA3MDg3LCA1MjU1LCAKLSAgICAxNzg2LCA2NjEsIDEyODExNiwgMCwgOTE3OTI1LCA3NDQyMywgNzEzNDUsIDU4NiwgNzQ0MTQsIDY0MzU5LCAxMjY3LCAKLSAgICAxMjgyNjksIDY1NDY4LCAxOTQ5NjYsIDY1NzMxLCAwLCA3MjQwNSwgMzYyMSwgOTI5MzIsIDY2NjY2LCA2NDIxMSwgMCwgCi0gICAgNjU2MiwgMTI5MjgsIDE5NDkwNCwgMTIyOCwgNjU0OTAsIDExMzgzLCAwLCAxMjc5NTMsIDcwMzQzLCAxNzE0LCA3NDQwNiwgCi0gICAgMTIwNzUxLCAwLCAxMjExMTMsIDk4Mzk3NiwgNjYyMjUsIDcwMTEwLCA3MDg2NywgNDI2NjAsIDExNDM2LCAyMDcwLCA2NCwgCi0gICAgMTIwNjk0LCAxMjEwMjUsIDEwMjkxLCAxMDMyMywgMjgyNiwgMTEzODA5LCAxMjY1MTAsIDAsIDQyMDA4LCA5NzA4LCAKLSAgICA0MjcxMCwgMCwgNDIwMTEsIDQxOTk5LCA5MjE2NCwgMTIyMDYsIDU4MzksIDE3MDIsIDEyNDAsIDc0MDY1LCA2Mjg2LCAKLSAgICA5Njg5LCA5ODM5NjksIDY1ODMzLCA3Nzg0OCwgMCwgMTc2NSwgMCwgMTI4NjIyLCA2NTU4OCwgOTIzNTAsIDk4MzI4MSwgMCwgCi0gICAgODQwMSwgOTgzOTI0LCA0MjAxNCwgMTI3MzA3LCA3MDMwLCAxMjA5NjksIDEwNDc5LCA2NDk1OSwgMjg1MiwgMCwgMTIxMjI1LCAKLSAgICAwLCA3MDgxOSwgMTI4NTg2LCA5MTc5NTEsIDY5NjMsIDEyNjcwNCwgMTI2NjcsIDY0NTQwLCA3NDc4NiwgMTAxNDcsIAotICAgIDEyOTM1LCAxMjc1NjgsIDEyNjQ4MywgMTIxMjgxLCAwLCAwLCA3ODc1NywgMCwgMTEzODE1LCAxMjEzMDIsIDAsIDk5OTQsIAotICAgIDEyNDY3LCAyODY0LCA2NDcxOSwgMTE0OCwgMTA0MzUsIDExNDYyLCA0MTY3NSwgNzA4NCwgMjc2NSwgNzg0NjYsIDQzMzgyLCAKLSAgICAwLCAxMjA3MTksIDEyODE4OCwgOTI1MTYsIDY2NjYyLCAwLCA3ODEzMywgOTM2NCwgMTk0Njg1LCA3NDQxNiwgMTI3Nzk3LCAKLSAgICAwLCA3Nzk4OCwgMjYzLCAxMDQ0OSwgNDEyODgsIDAsIDQxODM5LCA3ODM4NSwgOTgzNzQyLCA3MDMxMywgMTI5MTQwLCAKLSAgICA2OTMxLCA2OTcyMiwgNDMyNjEsIDcxNzcsIDcwMTA1LCA5MjY1MiwgMCwgMCwgNDI2MiwgMTAyODUsIDEwNzIyLCA0MjAyMCwgCi0gICAgMTI2NTc1LCA2ODA2LCA2OTkyLCA0MjAxOSwgMCwgNDEyOTAsIDk4MzcxNiwgNzUwLCAwLCA3MTMwNCwgMTAxNjMsIDYzOTEzLCAKLSAgICA3MTMwMCwgNzAzMiwgNTk1NCwgNjQ5MzEsIDQzMTQsIDEyODYwMCwgMTk4LCA2ODQ1MywgNzMwLCAxMjAwOTQsIDYzOTA3LCAKLSAgICA3Nzk5MywgNzA4MTgsIDEzMTY1LCA3MTA3LCA3NDE3MSwgNDI4MDQsIDY3OCwgODI0MCwgNzgwMTUsIDEyNTAwNSwgNDEzNzgsIAotICAgIDExMDA4LCA2OTM4LCA3MDAyNiwgOTI2MzcsIDIwOTcsIDY2MjQ2LCAxMjA1NjAsIDcwODIzLCAxOTQ5OTAsIDk4MzYwNCwgCi0gICAgMzg5MiwgNjg2MzIsIDY5NjQyLCA2NzEyLCA2NjA0NSwgNDE0NzAsIDY0ODA1LCAwLCA5ODMyMTMsIDEyNjUxMSwgNjQ4MDEsIAotICAgIDEyNzgxOCwgNDk3LCAxMjEwMCwgNTk1MywgOTI2NjcsIDc3OTYsIDY5NjY5LCA0MzI1NCwgNzM4MzEsIDAsIDEwMjkzLCAKLSAgICA1OTUyLCAxMjgxLCA0Mzc0NywgMCwgMTIxMzk5LCAxMDY3NywgNjA0LCA0MTA5NywgOTE4MiwgMTg1OSwgMCwgOTI2MDMsIAotICAgIDM0MjUsIDEyNzQ4OCwgMTI2NTIzLCAyODM2LCA5ODM3MzgsIDAsIDk3MDcsIDExMzcxOCwgNDMyMDIsIDAsIDAsIDY1MTk5LCAKLSAgICAxNzM4LCAxMjgzMTEsIDY3NzA3LCAyODMyLCA5MjcwMiwgOTY3MCwgMTExMDEsIDAsIDY2Mzc0LCA5MTc5NTYsIDExOTU1MiwgCi0gICAgMjgyMiwgNjgxMjIsIDQ0MzYsIDkyNTE5LCA5ODMwODEsIDczNzUyLCA3MDMwNSwgNjQ4NzIsIDkyMzQwLCAxMzMxLCAwLCAwLCAKLSAgICAxMjEzNzcsIDEyNzA4LCA5MTc5NTQsIDUwOTAsIDUwODksIDEyNzk3NywgOTE3OTUzLCAxMTkxMDksIDAsIDcwODI2LCAzMTksIAotICAgIDExODg0NywgNDM0NzksIDk0NzcsIDAsIDAsIDUwODcsIDc0ODg2LCA3NjQwLCA5NiwgNTA4NiwgOTgzNTk3LCA5MjM3OSwgMCwgCi0gICAgNTA4NSwgNjQyODYsIDkyNjY1LCAxMTM3MTcsIDQxNDIyLCAxMTk2MTcsIDExOTkwMSwgNDIzNTYsIDM3NzIsIDExOTA0MiwgCi0gICAgMCwgNTAxMSwgMCwgOTgzMzI5LCAxMjY1ODcsIDAsIDEyMDY5OCwgMTE4ODc0LCA2Njc3LCA3NjAxLCAwLCA1OTEsIDY0NDE5LCAKLSAgICAxMTg5NTMsIDkyMjYyLCAxMTg4OTUsIDcwNzk5LCA3MDA4NCwgMCwgMTA5MzksIDYxMDYsIDY5MzMsIDQxMjcxLCA2NzYwLCAKLSAgICA3MTM0MywgNDUzNCwgNDEyNzAsIDEyODg3NiwgNjcxMzgsIDY1NTc0LCAxOTQ5NDcsIDkyMjQsIDY3MTQwLCAzNjcxLCAKLSAgICA4OTc2LCA2NzEzOSwgMCwgNDEyNzUsIDYzNzIsIDgyOTk3LCA1NTI2MSwgNzk2MywgNjM3MSwgMCwgNTY4LCA5MjM2OCwgCi0gICAgNDEyNzMsIDEyMTQ0OCwgNzQ1MzEsIDY3MjgsIDAsIDk3MTUsIDEyOTI5NywgODI1OCwgMTE3NTMsIDc0ODIwLCAwLCA5NjAyLCAKLSAgICAxMTg5MTksIDQyLCAxMTE5MSwgNDM2ODgsIDY4MjQzLCAwLCA3NDU4LCAwLCAwLCA2NTM4NSwgNjcxMzUsIDY3MTM0LCAKLSAgICAxMTk1OCwgMTExNjUsIDkxNzgyMiwgMTI1MDg3LCA2MjU0LCA0MjcyMSwgNjYzMzYsIDgwNDUsIDExNTUwLCAxOTUwNjQsIAotICAgIDY3MTMyLCA2NzEzMSwgNDI4NTgsIDExNzg5LCA2NTg2OCwgNTU1NywgMTAxMzMsIDk3MzcsIDEzMTA5LCAwLCA5NDY3LCAKLSAgICA1NTU4LCA4ODc4LCA0Mzg0NCwgMTk1MDM2LCA3NDUxLCA2NzA2LCAxMDE0NiwgMCwgOTA4NiwgNjQ1NjYsIDk4MzE4NSwgCi0gICAgNjQ1ODQsIDc0MzcsIDc0NTQsIDEyNTk0LCA3Mzc0OSwgNjgzNjIsIDQ1NDYsIDc3MzEsIDAsIDcwMDQ4LCA3NDI0MywgCi0gICAgMTI1MDkyLCAzODA1LCAwLCA2NzEyOCwgNDQwMDEsIDQxMDA4LCAxMjgwNTIsIDYzMDcsIDE5OTQ5LCA2NzEyOSwgNzU0NCwgCi0gICAgMTI0OTg5LCA0MzQ2OSwgMTIxMDk1LCA5ODM3MzUsIDEwMTUyLCA2NDQyMiwgNjUwOTEsIDY3MTI0LCA3NjAyLCA2NDcyOSwgCi0gICAgMCwgNDM1MjEsIDAsIDQyMzAyLCA0MzcxMSwgNDM1MjMsIDQxNDQ3LCA1NTU5LCA2ODQ4MywgODcwNCwgMjM5NywgNTU1NiwgCi0gICAgMCwgMCwgMCwgOTAxMSwgOTYzMCwgMTExNjYsIDAsIDkzOTk4LCA1NTA2LCA5MjQ5OCwgMTkxMSwgNjY2NTIsIDY3Njg2LCAKKyAgICAxMDEwMDQsIDc0MDg4LCAzMDU2LCAxMDgyMywgMTI3MjY3LCA5MjM5MSwgODc2MiwgMTA1MDgsIDY5Njg5LCA3Mzc3MCwgCisgICAgNDM5NjksIDQzMTkzLCAxMDczNywgMzQ2MywgNzI4NTgsIDE5NDc5MCwgNjY2MzMsIDg2OTUsIDQ4MTUsIDExMzIyLCA1ODExLCAKKyAgICAxMjM0NSwgNzA0OSwgMTE4ODExLCA1MTk1LCAxOTUwODEsIDE5NDk1OCwgNjY2MzksIDkyOTM5LCA4MzE5MywgMTIxMDEwLCAKKyAgICAxMjgwNDEsIDY3OTAzLCA2NzczOSwgMTI2MiwgMTIwMTY1LCA2NTYxLCAxOTkzOSwgMTI4NjczLCAwLCAxMjczMTgsIAorICAgIDExOTkwNiwgNzAzMDAsIDAsIDk4MzA5NywgMCwgOTgzNjY3LCAxMTk5MDcsIDY0NjEyLCAxMTk5MSwgMTIwNjU0LCAKKyAgICA5MTc4NjYsIDkyOTQzLCAxNTAyLCA5MTc1NjgsIDEyNzk4OCwgOTEwNywgMTIyOTA0LCA1NzAyLCAzNjU1LCA2NzY2MSwgCisgICAgODQzMCwgMCwgNzEyMjMsIDEyMDc1OCwgMTE4OTYzLCA3NDA1NywgOTYwMywgMTI4MDc5LCA1MjU0LCAxMjA3NDIsIDc3MjQsIAorICAgIDc0Mzg4LCA2ODM3NSwgMTA3OTYsIDUxMjksIDAsIDcwODE2LCA1OTAsIDc1NzksIDU2MTQsIDU4OTMsIDkyMjgwLCAxMTcyMCwgCisgICAgOTI0OTYsIDExNzIxLCA3MDgwNCwgNDc5OCwgMTIxNDY4LCAxMTkzMTYsIDY2MDM4LCA0NzkzLCA2Nzg1MSwgMTE3MjYsIAorICAgIDEyNzU0MSwgNzQyMDQsIDY4NjEwLCA2ODgyNCwgNjg2MjYsIDg5NCwgMzAwLCAxMjA4NzUsIDEyMzA2LCA2NjIzNSwgODAwNCwgCisgICAgMTI3MTg5LCAxMTk1NzQsIDI1NjIsIDcwMTU2LCAxMjA4NTYsIDQyNTAzLCA5MjkwMCwgMTE2NTIsIDkxNzgxMywgOTE3Nzk5LCAKKyAgICAxMTkyNDEsIDY0Njk5LCAxMjY1NjksIDUwOTYsIDUwOTUsIDI4NjMsIDM0MjQsIDkyMjQ0LCAxMDQ1NCwgNDI1MzAsIDUwOTQsIAorICAgIDcwODczLCAwLCAxMzE1NiwgMTI5MDU3LCAxMDgzMiwgNTA5MywgMTk0ODM5LCA2OTg1MiwgNzI0MzAsIDUwOTIsIDEwNzA4LCAKKyAgICAxMTMyNywgMCwgNTA5MSwgMTc2LCAxMTM4MTAsIDkxNTMsIDQxMDQsIDc4NTk5LCA3ODYwMSwgMTIxNSwgNDI3MTIsIDU3NDQsIAorICAgIDEyMjcyLCA5ODMyLCAxMTc3NywgNzEyOTksIDY2ODE3LCA0Mjg4MSwgOTgzNzg1LCA4OTgwLCAxMTg5ODgsIDY3ODYxLCAKKyAgICA4ODQ0LCA3MjA5LCA5ODM3NDEsIDAsIDQyNzgsIDEyODgwOSwgMCwgMTE5MTYwLCA3MDgyMSwgOTA3NCwgNDM0OCwgCisgICAgOTE3ODcyLCA2NTU1OCwgNjU5NDYsIDgxMTMsIDcwODcsIDUyNTUsIDE3ODYsIDY2MSwgMTI4MTE2LCA5MTc4NTcsIAorICAgIDkxNzkyNSwgNzQ0MjMsIDcxMzQ1LCA1ODYsIDc0NDE0LCA2NDM1OSwgMTI2NywgMTI4MjY5LCA2NTQ2OCwgMTI1MjM0LCAKKyAgICA2NTczMSwgOTgzODk5LCA3MjQwNSwgMzYyMSwgOTI5MzIsIDY2NjY2LCA2NDIxMSwgMTI5MzUxLCA2NTYyLCAxMjkyOCwgCisgICAgMTIxMzA2LCAxMjI4LCA2NTQ5MCwgMTEzODMsIDAsIDEyNzk1MywgNzAzNDMsIDE3MTQsIDc0NDA2LCAxMjA3NTEsIDAsIAorICAgIDEyMTExMywgMTI3Mzg5LCA2NjIyNSwgNzAxMTAsIDcwODY3LCA0MjY2MCwgMTE0MzYsIDIwNzAsIDY0LCAxMjA2OTQsIAorICAgIDEyMTAyNSwgMTAyOTEsIDEwMzIzLCAyODI2LCAxMDA1MjYsIDEyNjUxMCwgMTI3NTU3LCA0MjAwOCwgOTcwOCwgNDI3MTAsIAorICAgIDAsIDQyMDExLCA0MTk5OSwgOTIxNjQsIDEyMjA2LCA1ODM5LCAxNzAyLCAxMjQwLCA3NDA2NSwgNjI4NiwgOTY4OSwgCisgICAgOTgzOTY5LCA2NTgzMywgNzc4NDgsIDAsIDE3NjUsIDk4MzMwMSwgMTI4NjIyLCA2NTU4OCwgOTIzNTAsIDk4MzI4MSwgMCwgCisgICAgODQwMSwgOTgzOTI0LCA0MjAxNCwgMTI1MjMwLCA3MDMwLCAxMjA5NjksIDEwNDc5LCA2NDk1OSwgMjg1MiwgNzI3MjgsIAorICAgIDEyMTIyNSwgMCwgNzA4MTksIDExOTg4NywgMTI1MjI3LCA2OTYzLCAxMjY3MDQsIDEyNjY3LCA2NDU0MCwgNzQ3ODYsIAorICAgIDEwMTQ3LCAxMjkzNSwgMTI3NDAxLCAxMTkxODUsIDcyODEyLCA3MTI2NSwgMTI4Nzc5LCA3ODc1NywgMCwgMTEzODE1LCAKKyAgICAxMjEzMDIsIDEyMjg5MiwgOTk5NCwgMTI0NjcsIDI4NjQsIDY0NzE5LCAxMTQ4LCAxMDQzNSwgMTE0NjIsIDQxNjc1LCAKKyAgICA3MDg0LCAyNzY1LCA3ODQ2NiwgNDMzODIsIDk4MzgxNSwgMTIwNzE5LCAxMjgxODgsIDkyNTE2LCA2NjY2MiwgMCwgNzgxMzMsIAorICAgIDkzNjQsIDE5NDY4NSwgNzQ0MTYsIDEyNzc5NywgMCwgNzc5ODgsIDI2MywgMTA0NDksIDQxMjg4LCAwLCA0MTgzOSwgCisgICAgNzgzODUsIDEwMDY5MywgNzAzMTMsIDEyNzQ3NiwgNjkzMSwgNjk3MjIsIDQzMjYxLCA3MTc3LCA3MDEwNSwgOTI2NTIsIAorICAgIDExOTg5NSwgMCwgNDI2MiwgMTAyODUsIDEwNzIyLCA0MjAyMCwgMTI2NTc1LCA2ODA2LCA2OTkyLCA0MjAxOSwgMTk1MDU2LCAKKyAgICA0MTI5MCwgOTgzNzE2LCA3NTAsIDEyMTA4OCwgNzEzMDQsIDEwMTYzLCA2MzkxMywgNzEzMDAsIDcwMzIsIDU5NTQsIAorICAgIDY0OTMxLCA0MzE0LCAxMDA2MzYsIDE5OCwgNjg0NTMsIDczMCwgMTAwNjM1LCA2MzkwNywgNzc5OTMsIDcwODE4LCAxMzE2NSwgCisgICAgNzEwNywgNzQxNzEsIDQyODA0LCA2NzgsIDgyNDAsIDc4MDE1LCAxMjUwMDUsIDQxMzc4LCAxMTAwOCwgNjkzOCwgNzAwMjYsIAorICAgIDkyNjM3LCAyMDk3LCA2NjI0NiwgMTIwNTYwLCA3MDgyMywgMTk0OTkwLCA5ODM2MDQsIDM4OTIsIDY4NjMyLCA2OTY0MiwgCisgICAgNjcxMiwgNjYwNDUsIDQxNDcwLCA2NDgwNSwgMCwgOTgzMjEzLCAxMjY1MTEsIDY0ODAxLCAxMjc4MTgsIDQ5NywgMTIxMDAsIAorICAgIDU5NTMsIDkyNjY3LCA3Nzk2LCA2OTY2OSwgNDMyNTQsIDczODMxLCAxMjgyNDMsIDEwMjkzLCA1OTUyLCAxMjgxLCA0Mzc0NywgCisgICAgMCwgMTIxMzk5LCAxMDY3NywgNjA0LCA0MTA5NywgOTE4MiwgMTg1OSwgMCwgNzI4NTYsIDM0MjUsIDEyNzQ4OCwgNzI3MjUsIAorICAgIDI4MzYsIDk4MzczOCwgMCwgOTcwNywgNzA3NDIsIDQzMjAyLCAwLCAwLCA2NTE5OSwgMTczOCwgMTE5ODkxLCA2NzcwNywgCisgICAgMjgzMiwgOTI3MDIsIDk2NzAsIDExMTAxLCA5ODM3OTUsIDY2Mzc0LCAxMDA3MDQsIDExOTU1MiwgMjgyMiwgNjgxMjIsIAorICAgIDQ0MzYsIDkyNTE5LCA5ODMwODEsIDczNzUyLCA3MDMwNSwgNjQ4NzIsIDkyMzQwLCAxMzMxLCA5MTc5NTUsIDk4MzcwNiwgCisgICAgMTIxMzc3LCAxMjcwOCwgMTI5MzMzLCA1MDkwLCA1MDg5LCAxMjc5NzcsIDMyMDAsIDEwMDk4NCwgMCwgNzA4MjYsIDMxOSwgCisgICAgMTE4ODQ3LCA0MzQ3OSwgOTQ3NywgMCwgMTk0ODgxLCA1MDg3LCA3NDg4NiwgNzY0MCwgOTYsIDUwODYsIDEyNzc2MywgCisgICAgOTIzNzksIDAsIDUwODUsIDY0Mjg2LCA5MjY2NSwgMTEzNzE3LCA0MTQyMiwgMTAwNzEwLCAxMTk5MDEsIDQyMzU2LCAzNzcyLCAKKyAgICAxMTkwNDIsIDExOTkwOSwgNTAxMSwgMTk0ODgyLCAxOTQ3NDIsIDEyNjU4NywgMCwgMTIwNjk4LCAxMTg4NzQsIDY2NzcsIAorICAgIDc2MDEsIDE5NDcyNSwgNTkxLCA2NDQxOSwgMTE4OTUzLCA5MjI2MiwgMTE4ODk1LCA3MDc5OSwgNzAwODQsIDEyNTExMSwgCisgICAgMTA5MzksIDYxMDYsIDY5MzMsIDQxMjcxLCA2NzYwLCA3MTM0MywgNDUzNCwgNDEyNzAsIDEyODg3NiwgNjcxMzgsIDY1NTc0LCAKKyAgICAxOTQ5NDcsIDkyMjQsIDY3MTQwLCAzNjcxLCA4OTc2LCA2NzEzOSwgMCwgNDEyNzUsIDYzNzIsIDgyOTk3LCA1NTI2MSwgCisgICAgNzk2MywgNjM3MSwgMCwgNTY4LCA5MjM2OCwgNDEyNzMsIDEyMDMyMiwgNzQ1MzEsIDY3MjgsIDk4MzYwOSwgOTcxNSwgCisgICAgMTIwOTc1LCA4MjU4LCAxMTc1MywgNzQ4MjAsIDk4Mzk2NSwgOTYwMiwgMTE4OTE5LCA0MiwgMTExOTEsIDQzNjg4LCAKKyAgICA2ODI0MywgMCwgNzQ1OCwgNzM5NzIsIDk4Mzk2MCwgNjUzODUsIDY3MTM1LCA2NzEzNCwgMTE5NTgsIDExMTY1LCAxOTQ2OTgsIAorICAgIDEyNTA4NywgNjI1NCwgNDI3MjEsIDY2MzM2LCA4MDQ1LCAxMTU1MCwgMTk1MDY0LCA2NzEzMiwgMTI2OTYsIDQyODU4LCAKKyAgICAxMTc4OSwgNjU4NjgsIDU1NTcsIDEwMTMzLCA5NzM3LCA3MzAwLCAwLCA5NDY3LCA1NTU4LCA4ODc4LCA0Mzg0NCwgCisgICAgMTk1MDM2LCA3NDUxLCA2NzA2LCAxMDE0NiwgMTAwNzYyLCA5MDg2LCA2NDU2NiwgOTgzMTg1LCA2NDU4NCwgNzQzNywgCisgICAgNzQ1NCwgMTI1OTQsIDczNzQ5LCA2ODM2MiwgNDU0NiwgNzczMSwgMCwgNzAwNDgsIDc0MjQzLCAxMjUwOTIsIDM4MDUsIDAsIAorICAgIDY3MTI4LCA0NDAwMSwgNDEwMDgsIDEyODA1MiwgNjMwNywgMTk5NDksIDY3MTI5LCA3NTQ0LCAxMjQ5ODksIDQzNDY5LCAKKyAgICAxMjEwOTUsIDk4MzczNSwgMTAxNTIsIDY0NDIyLCA2NTA5MSwgNjcxMjQsIDc2MDIsIDY0NzI5LCAwLCA0MzUyMSwgCisgICAgMTIwNzcyLCA0MjMwMiwgNDM3MTEsIDQzNTIzLCA0MTQ0NywgNTU1OSwgNjg0ODMsIDg3MDQsIDIzOTcsIDU1NTYsIDAsIDAsIAorICAgIDY2ODAxLCA5MDExLCA5NjMwLCAxMTE2NiwgMCwgOTM5OTgsIDU1MDYsIDkyNDk4LCAxOTExLCA2NjY1MiwgNjc2ODYsIAogICAgIDk5NjEsIDg4NDUsIDY2Njk4LCA2ODMyNSwgMTA3OTIsIDg4ODksIDEyMTQwMiwgMjA5OCwgMCwgNjQ3NTEsIDcwMzA5LCAKLSAgICA2NjYyMiwgMTI2NjI2LCAwLCA3NDM2NCwgNjg4MTYsIDEyOTE1MiwgOTgzODA1LCA0MjkwOSwgNzU1MiwgNzAwOTIsIAotICAgIDE5NDU2NywgNjUzODQsIDcyMjMsIDQ1NTksIDkzMDE1LCAxOTU2LCA0MzEzOCwgNzAyNCwgNjU3MjgsIDQzNDkwLCAxMjEwLCAKLSAgICAxOTUwNzcsIDY1MTc1LCAxMDE4NCwgNDMxNDAsIDQzNjU0LCAwLCA5ODMyMzMsIDEyNTA0NSwgMzgsIDg1MzMsIDY2NjY5LCAKLSAgICAxMTkxMjQsIDk4MzI5NSwgOTgzNzkyLCAwLCA0MzU3LCAwLCA3MDI4OSwgOTE3ODYzLCA3NDIzMywgOTk2NywgNzg4ODQsIAotICAgIDQyODYwLCAxMTk4MzgsIDEwOTQxLCA2NTcyMSwgNjk2MiwgMCwgODMyNzksIDExMzgwOCwgMCwgMTEwMTQsIDEyMDEyNiwgCi0gICAgODk0MiwgMTIwMDAsIDY5MjI0LCA5MjI2NywgMTI4NTM2LCAxMTk3NCwgNjczNjMsIDQyNzcyLCA0MjY1MCwgMTE2NTAsIAotICAgIDUwMTMsIDkyNjYzLCA2ODgxMCwgNjYyMTAsIDExODkxNCwgNjYxMywgOTI0NzYsIDAsIDExMTkzLCA5ODM3NzAsIDAsIAotICAgIDY0NzE0LCA3MTQ3OSwgNzA4MDIsIDEyMTYyLCAxMjEyMCwgNDM0NzYsIDk4Mzc2NiwgMTEwMjQsIDc0ODExLCA2NjIyOCwgCi0gICAgMTA1NjMsIDkyOTU0LCAxMjcxOTYsIDQzNTIyLCAyNDYyLCA5Mjk1NSwgMTgzNywgMTI1MDg2LCA2Mzk3MiwgNjk1NywgMCwgCi0gICAgMTEzODIwLCA0OTUyLCA2NTcxOCwgNjQ0MDUsIDU1MDQsIDY1NzIwLCA2NTcxNCwgNjU3MTUsIDY1NzE2LCAxMjgwMjYsIAotICAgIDc1MDE2LCAxMjcxMTksIDMxMDksIDYzOTc1LCA3NDAyOCwgMTI3MjEzLCA4MTA3LCA2NzE1NCwgMTEyNywgNDU1LCAwLCAKLSAgICA2Mzk2OCwgMTI3ODM1LCAzNDgzLCAxMTk1OTMsIDE5ODksIDk4MzE3NiwgNjk2NzgsIDkxMDQsIDM1MDMsIDY1Mzc1LCAKLSAgICA2ODMwMCwgNjY5NCwgNDI2MzMsIDE4NjQsIDAsIDc0MzA2LCA0MTQ0NiwgMjU0MCwgNzczNiwgMTIxNDM0LCA3NDA2NCwgCisgICAgNjY2MjIsIDEyNjYyNiwgMCwgNzA3MjQsIDY4ODE2LCAxMjkxNTIsIDEyNDk1MywgNDI5MDksIDc1NTIsIDcwMDkyLCAKKyAgICAxMjc0OTAsIDY1Mzg0LCA3MjIzLCA0NTU5LCA5MzAxNSwgMTk1NiwgNDMxMzgsIDcwMjQsIDY1NzI4LCA0MzQ5MCwgMTIxMCwgCisgICAgMTk1MDc3LCA2NTE3NSwgMTAxODQsIDQzMTQwLCA0MzY1NCwgOTE3OTAyLCAxMjg1NTgsIDEyNTA0NSwgMzgsIDg1MzMsIAorICAgIDY2NjY5LCAxMTkxMjQsIDk4MzI5NSwgOTgzNzkyLCAwLCA0MzU3LCAwLCA3MDI4OSwgOTE3ODYzLCA3NDIzMywgOTk2NywgCisgICAgNzg4ODQsIDQyODYwLCAxMTkzMjMsIDEwOTQxLCA2NTcyMSwgNjk2MiwgMCwgODMyNzksIDExMzgwOCwgMCwgMTEwMTQsIAorICAgIDEyMDEyNiwgODk0MiwgMTIwMDAsIDY5MjI0LCA5MjI2NywgMTI4NTM2LCAxMTk3NCwgNjczNjMsIDQyNzcyLCA0MjY1MCwgCisgICAgMTE2NTAsIDUwMTMsIDkyNjYzLCA2ODgxMCwgNjYyMTAsIDExODkxNCwgNjYxMywgOTI0NzYsIDAsIDExMTkzLCAxOTQ2NzcsIAorICAgIDcyNzU0LCA2NDcxNCwgNzE0NzksIDcwODAyLCAxMjE2MiwgMTIxMjAsIDQzNDc2LCA5ODM3NjYsIDExMDI0LCA3NDgxMSwgCisgICAgNjYyMjgsIDEwNTYzLCA5Mjk1NCwgMTI3MTk2LCA0MzUyMiwgMjQ2MiwgOTI5NTUsIDE4MzcsIDEyNTA4NiwgNjM5NzIsIAorICAgIDY5NTcsIDAsIDExMzgyMCwgNDk1MiwgNjU3MTgsIDY0NDA1LCA1NTA0LCA2NTcyMCwgNjU3MTQsIDY1NzE1LCA2NTcxNiwgCisgICAgNzI4NzcsIDc1MDE2LCAxMjcxMTksIDMxMDksIDYzOTc1LCA3NDAyOCwgMTI3MjEzLCA4MTA3LCA2NzE1NCwgMTEyNywgNDU1LCAKKyAgICAwLCA2Mzk2OCwgNzI4NjAsIDM0ODMsIDExOTU5MywgMTk4OSwgOTgzMTc2LCA2OTY3OCwgOTEwNCwgMzUwMywgNjUzNzUsIAorICAgIDY4MzAwLCA2Njk0LCA0MjYzMywgMTg2NCwgMCwgNzI4MTAsIDQxNDQ2LCAyNTQwLCA3NzM2LCAxMjE0MzQsIDc0MDY0LCAKICAgICAxMjg2MDEsIDEwNTIxLCA3MDc4NiwgNDIxNzMsIDk3MDUsIDc0MTI0LCA4NjA0LCA2OTU1LCAxMDkxNiwgNDM2ODQsIDYxNDksIAogICAgIDM4ODcsIDE5OTU2LCAxNDExLCAyODI0LCAwLCAxMDEwNiwgMTI3ODYyLCAxNDAzLCAxMjUwNTMsIDEzNDcsIDk2MzEsIAotICAgIDc0NDQ0LCA5ODM3NTMsIDEyNzk5NywgOTI5NTEsIDc0ODk3LCA4NjQwLCAwLCAyNTgsIDE2NTQsIDAsIDAsIDk4MzQ3OSwgCi0gICAgNDMzMTQsIDAsIDAsIDQwNDIsIDExNDc4LCAyODczLCA2Mzk3NywgMTE1MjIsIDQxNjY4LCA4NTQ5LCAxMDg2MSwgMTIxMDUzLCAKLSAgICA2Mzk3NiwgNzAzNzcsIDY4NjIzLCA2NzA4MiwgNjcwODEsIDQxMzkxLCA2NzA4NCwgODM0NjUsIDM3NiwgNjk4NywgOTIyMSwgCi0gICAgMCwgMCwgODgyMywgMTI4Njk3LCAxMjk0MywgNjUxODUsIDQxODY5LCAxMjYxOSwgMTI4MDY3LCAxMDE1NCwgOTgzMDQzLCAKLSAgICA3NDQzOSwgMjAzOSwgMCwgNzQ0NiwgMTY4NCwgNjM5NzksIDEwOTc0LCA0NTgsIDEyMDYyMCwgODI5NTAsIDY5NzkxLCAKLSAgICAxMjcxNjEsIDExOTE2LCA2NTAxNiwgMCwgNjk2NzEsIDQyMTE1LCAxMjEwNTcsIDEyMjg4LCA3ODA1NywgNjcwODAsIDE0OTMsIAotICAgIDQyMTExLCA3NTUzLCA0MDk3LCAxMjgxOTksIDEzMDgwLCAwLCA2NTgwOCwgNjYxMCwgNjAzMCwgODA1OSwgNzUwOCwgCi0gICAgMTMxMzEsIDY3MDc0LCA2NzA3MywgMTI4NTA2LCA4Nzk0LCA0MTI3OCwgNDE2MjksIDEyMTU0LCA3NTA3MywgNDEyNzcsIAotICAgIDY0NjU4LCA5ODM0NTYsIDY0MzgwLCA2NjI1LCA0MjkxMSwgMTk5MDQsIDAsIDEyMTMwNSwgNzExOTMsIDY1MzcxLCA3MDc4LCAKLSAgICAxMjg2OTksIDgzMywgMTI4MjI4LCA2MzY5LCAxOTQ4MTUsIDEwOTc5LCA0MTk1MywgOTgzMzcwLCA0MTQzNCwgNjA2MiwgMCwgCi0gICAgMCwgMTk5MTYsIDY5MTMsIDkzMywgMTM0MSwgOTg0MiwgNjcyMCwgNjU3NDQsIDcxMjAwLCA5ODM1OTIsIDEyMTIyMywgCi0gICAgMTI2NTY3LCA3NDA1LCAxMDEwNSwgNjU4MTAsIDAsIDQxNjMyLCA3NDkzLCA1NTI5MCwgOTI4OTAsIDQxNjIyLCAwLCAwLCAKLSAgICAxMTk1NTYsIDc0NTg0LCA3NjMyLCA5NzE2LCAxOTk1NCwgOTgwNSwgNTk5MCwgOTAwLCAwLCA2Mzk1NywgMTE5NjM4LCAwLCAKLSAgICAzNjEyLCAwLCA2NDM3NiwgOTM5ODcsIDUzODksIDkyNTk3LCAwLCA2NTkzOCwgMjgzOSwgOTYyMSwgNTgyLCAwLCA3NDM2OCwgCi0gICAgMzc0OSwgNjk0OSwgNzU2OSwgNzQwNjEsIDgzMjIyLCA4MzIyMywgNjk1NiwgNDQwMywgMTk5NjIsIDY1NTU5LCAzMjk5LCAKLSAgICAxMjEwMDUsIDE5NDkzOSwgMTE5MTI3LCA5MDAyLCAwLCA3NDM3MiwgNzQyMzYsIDg0NzgsIDc1OTgsIDU0NiwgNDI0NjksIAotICAgIDY1NTY5LCAxOTE4LCA5NTQyLCA0NzIsIDc3MTYsIDEwMzE5LCAxMDM4MywgNjk5NiwgNDMwNzcsIDYzOTUyLCA4NDI1LCAKLSAgICAzNjAyLCA4MzI4LCAxMTc2NCwgODMxOTksIDgzMjAwLCA2NTA2NSwgNDExODMsIDEyOTA3LCAxMDI3MSwgMTAyODcsIDY4NCwgCi0gICAgNDM1MjUsIDEyNzk5NiwgMjg1NCwgODMyMTQsIDQ1OTIsIDY1NzU1LCA4MzIxNywgNjcxMjAsIDExOTYzLCA0MzYyMCwgCi0gICAgNjcxMTcsIDc4MjQ5LCA2NzEyMywgNjcxMjIsIDY3MTIxLCA5ODgxLCA0MzExNSwgNjU3NTcsIDM0MTUsIDY5Njc3LCAKLSAgICA2NzExNiwgODY0OCwgMTI4Mzc3LCA2NzQxLCA0MzA0NywgMTE5OTAwLCAxMzE4MCwgNzgwNzcsIDQxOCwgMTIwNjUzLCAKLSAgICA2NDQ5NSwgMTAyOTUsIDEwMzI3LCAxMDM5MSwgNDE3NTIsIDY2ODQ2LCA4NjQxLCA0MTQ0OSwgODMxOTQsIDc0MTAwLCAKLSAgICA4MzE4NiwgMTA5MTEsIDY5NDIsIDEyMDg3OSwgMTAyNCwgNDI4NDksIDQxNzUxLCA2OTc3NiwgODk0MSwgOTgzNTU2LCAKLSAgICA0NTU0LCA2Njg5MiwgOTAyMywgMTE2ODUsIDEyMTQ3NiwgOTkyOCwgNjcxMDksIDY2ODY1LCAxMTQzNywgNDM3NDEsIAotICAgIDY3MTEzLCA2NzExMiwgNjM5NjcsIDEyOTA1NiwgNDEyMDYsIDEyNjI0LCA5MDQ5LCA0MTE4NSwgNDMxNjYsIDEyMTI3NSwgCi0gICAgODE1OSwgOTI2MTksIDExNjg2LCA3MTQ3OCwgNjUyMjQsIDQ1NjUsIDQ2NTUsIDExOTU1MywgMTI5MDkwLCA5MjE4MywgCi0gICAgNjQ1MjMsIDEwMzQzLCAxMDQwNywgOTI3NjQsIDY2NjcxLCAxMTQ2NiwgMCwgMTI4MDAzLCA0Mjg5MCwgNzQwMTMsIDEyMDUwLCAKLSAgICA2ODIwMSwgMjg2MCwgMCwgMTI3OTM0LCA3MDgyOCwgNDI3OTIsIDU3NDMsIDEwNDI0LCAxMjA2NSwgNDI4NzIsIDEyMTQwMSwgCi0gICAgNDM4NzUsIDY3MTAzLCA4ODc1LCAwLCA2NzEwMiwgNjcxMDUsIDc1MzEsIDEyODQ3LCAyNDEzLCAxMTg5MTcsIDY3NDA0LCAKLSAgICA5NjIsIDAsIDEyODU1LCA0MTE5NiwgNDI1NjQsIDEyNzk3NSwgMTU4MiwgOTgzNzE1LCA1NTA4LCAwLCAxMjA5MDQsIAotICAgIDc0NTg4LCAxMDgwMSwgNjk4NzYsIDkyMzU0LCAxMTkyMDcsIDcxNzMsIDQ5NiwgMTA0MzksIDQzMTMsIDY0NjA3LCA2OTYzOCwgCi0gICAgNzg2MCwgMTI4MDQ5LCA5MDYsIDQyNzkzLCAyODQyLCA2NDA1LCA2NDcyMiwgMTMxMzIsIDc5OCwgNjQ2OTQsIDEyODAxLCAKLSAgICA4NDA2LCAxMTUzLCA4MzI2MywgNjQ3ODgsIDgzMjY1LCA4MDU0LCA5MTc0LCA2NzA4NywgNjcwODYsIDk5NjQsIDY3MDk2LCAKLSAgICA0MTYxMSwgNDY0MiwgNjY1NzQsIDExNTU2LCA0MjUxMiwgMCwgNzg4NTcsIDQyMDg5LCA3NDYxMywgOTAwOCwgMCwgCi0gICAgMTI2NTkyLCAxOTUwOTYsIDQyMDc5LCA4MzI0OCwgNzc5MjQsIDQyNTEzLCA3NzkyNywgNDI4NDIsIDczOTg1LCA2NTI4NSwgCi0gICAgNjgzMzgsIDgzMjM5LCA4MzI0MCwgODMyNDEsIDgzMjQyLCA5ODM1OTAsIDExMzM1LCA2NDA2OSwgNDIwOTMsIDM5MjAsIAotICAgIDkxNzg2OSwgMCwgMTExMTAsIDgzMjU1LCA0NTgwLCA0MTk2NywgODMyNTgsIDY0Mzg0LCA4MzI1MiwgODMyNTMsIDMwMjEsIAotICAgIDQyMDA0LCA5ODMwOTYsIDgzMjQ5LCA0MjMxNywgNDE5OTgsIDAsIDY5NDYsIDE5NDc1NSwgOTI5NjcsIDEyODQ1NSwgCisgICAgNzQ0NDQsIDE5NDk0NiwgMTI3OTk3LCA5Mjk1MSwgNzQ4OTcsIDg2NDAsIDEwMDk3NiwgMjU4LCAxNjU0LCAwLCAwLCAKKyAgICA5ODM0NzksIDQzMzE0LCAxMjc5ODcsIDcwNjk5LCA0MDQyLCAxMTQ3OCwgMjg3MywgNjM5NzcsIDExNTIyLCA0MTY2OCwgCisgICAgODU0OSwgMTA4NjEsIDEyMTA1MywgNjM5NzYsIDcwMzc3LCA2ODYyMywgNjcwODIsIDY3MDgxLCA0MTM5MSwgNjcwODQsIAorICAgIDY3NTg4LCAzNzYsIDY5ODcsIDkyMjEsIDAsIDAsIDg4MjMsIDEyODY5NywgMTI5NDMsIDY1MTg1LCA0MTg2OSwgMTI2MTksIAorICAgIDEyODA2NywgMTAxNTQsIDkxNzkyMSwgNzQ0MzksIDIwMzksIDAsIDc0NDYsIDE2ODQsIDYzOTc5LCAxMDk3NCwgNDU4LCAKKyAgICA3MjgzMSwgODI5NTAsIDY5NzkxLCAxMjcxNjEsIDExOTE2LCA2NTAxNiwgMCwgNjk2NzEsIDQyMTE1LCAxMjEwNTcsIAorICAgIDEyMjg4LCA3ODA1NywgNjcwODAsIDE0OTMsIDQyMTExLCA3NTUzLCA0MDk3LCAxMjgxOTksIDEzMDgwLCAwLCA2NTgwOCwgCisgICAgNjYxMCwgNjAzMCwgODA1OSwgNzUwOCwgMTMxMzEsIDY3MDc0LCA2NzA3MywgMTI4NTA2LCA4Nzk0LCA0MTI3OCwgNDE2MjksIAorICAgIDEyMTU0LCA3NTA3MywgNDEyNzcsIDY0NjU4LCAxMjgxMTIsIDY0MzgwLCA2NjI1LCA0MjkxMSwgMTk5MDQsIDAsIDEyMTMwNSwgCisgICAgNzExOTMsIDY1MzcxLCA3MDc4LCAxMjg2OTksIDgzMywgMTI4MjI4LCA2MzY5LCAxOTQ4MTUsIDEwOTc5LCA0MTk1MywgCisgICAgMTk0OTM1LCA0MTQzNCwgNjA2MiwgMCwgMCwgMTk5MTYsIDY5MTMsIDkzMywgMTM0MSwgOTg0MiwgNjcyMCwgNjU3NDQsIAorICAgIDcxMjAwLCAxMjg2NDUsIDEyMTIyMywgMTIxMjQ1LCA3NDA1LCAxMDEwNSwgNjU4MTAsIDAsIDQxNjMyLCA3NDkzLCA1NTI5MCwgCisgICAgOTI4OTAsIDQxNjIyLCA3MDcwNCwgMCwgMTE5NTU2LCA3NDU4NCwgNzYzMiwgOTcxNiwgMTk5NTQsIDk4MDUsIDU5OTAsIAorICAgIDkwMCwgMTAwNzU3LCA2Mzk1NywgMTE5NjM4LCA5ODM5NzcsIDM2MTIsIDcwNjg3LCA2NDM3NiwgOTM5ODcsIDUzODksIAorICAgIDkyNTk3LCAwLCA2NTkzOCwgMjgzOSwgOTYyMSwgNTgyLCAwLCA3NDM2OCwgMzc0OSwgNjk0OSwgNzU2OSwgNzQwNjEsIAorICAgIDgzMjIyLCA4MzIyMywgNjk1NiwgNDQwMywgMTk5NjIsIDY1NTU5LCAzMjk5LCA2NTY4NiwgMTI4NTYxLCAxMTkxMjcsIAorICAgIDkwMDIsIDk4MzQyMiwgNzQzNzIsIDc0MjM2LCA4NDc4LCA3NTk4LCA1NDYsIDQyNDY5LCA2NTU2OSwgMTkxOCwgOTU0MiwgCisgICAgNDcyLCA3NzE2LCAxMDMxOSwgMTAzODMsIDY5OTYsIDQzMDc3LCA2Mzk1MiwgODQyNSwgMzYwMiwgODMyOCwgMTE3NjQsIAorICAgIDgzMTk5LCA4MzIwMCwgNjUwNjUsIDQxMTgzLCAxMjkwNywgMTAyNzEsIDEwMjg3LCA2ODQsIDQzNTI1LCAxMDA1MzEsIAorICAgIDI4NTQsIDY2NzQ3LCA0NTkyLCA2NTc1NSwgODMyMTcsIDY3MTIwLCAxMTk2MywgNDM2MjAsIDY3MTE3LCA2NjczNiwgCisgICAgNjcxMjMsIDY3MTIyLCA2NzEyMSwgOTg4MSwgNDMxMTUsIDY1NzU3LCAzNDE1LCA2OTY3NywgNjcxMTYsIDg2NDgsIAorICAgIDEwMDk5NSwgNjc0MSwgNDMwNDcsIDEwMDQ2MCwgMTMxODAsIDc4MDc3LCA0MTgsIDY2NzU0LCA2NDQ5NSwgMTAyOTUsIAorICAgIDEwMzI3LCAxMDM5MSwgNDE3NTIsIDY2ODQ2LCA4NjQxLCA0MTQ0OSwgODMxOTQsIDc0MTAwLCA4MzE4NiwgMTA5MTEsIAorICAgIDY5NDIsIDEyMDg3OSwgMTAyNCwgNDI4NDksIDQxNzUxLCA2OTc3NiwgODk0MSwgMTAxMDMyLCA0NTU0LCA2Njg5MiwgOTAyMywgCisgICAgMTE2ODUsIDEyMTQ3NiwgOTkyOCwgNjcxMDksIDY2ODY1LCAxMTQzNywgNDM3NDEsIDY3MTEzLCA2NzExMiwgNjM5NjcsIAorICAgIDEyOTA1NiwgNDEyMDYsIDEyNjI0LCA5MDQ5LCA0MTE4NSwgNDMxNjYsIDEwMDg0MCwgODE1OSwgOTI2MTksIDExNjg2LCAKKyAgICA3MTQ3OCwgNjUyMjQsIDQ1NjUsIDQ2NTUsIDExOTU1MywgMTI5MDkwLCA5MjE4MywgNjQ1MjMsIDEwMzQzLCAxMDQwNywgCisgICAgOTI3NjQsIDY2NjcxLCAxMTQ2NiwgMCwgMTAwODM3LCA0Mjg5MCwgNzI4NDQsIDIyNjEsIDY4MjAxLCAyODYwLCAwLCAKKyAgICAxMjc5MzQsIDcwODI4LCA0Mjc5MiwgNTc0MywgMTA0MjQsIDEyMDY1LCA0Mjg3MiwgMTIxNDAxLCA0Mzg3NSwgNjcxMDMsIAorICAgIDg4NzUsIDAsIDY3MTAyLCA2NzEwNSwgNzUzMSwgMTI4NDcsIDI0MTMsIDEwMDUyMiwgNjc0MDQsIDk2MiwgOTE3ODE0LCAKKyAgICAxMjg1NSwgNDExOTYsIDQyNTY0LCAxMDEwMDksIDE1ODIsIDEwMDg0MiwgNTUwOCwgMTAwNDkyLCAxMjA5MDQsIDc0NTg4LCAKKyAgICAxMDgwMSwgNjk4NzYsIDkyMzU0LCAxMTkyMDcsIDcxNzMsIDQ5NiwgMTA0MzksIDQzMTMsIDY0NjA3LCA2OTYzOCwgNzg2MCwgCisgICAgMTI4MDQ5LCA5MDYsIDQyNzkzLCAyODQyLCA2NDA1LCA2NDcyMiwgMTMxMzIsIDc5OCwgNjQ2OTQsIDEyODAxLCA4NDA2LCAKKyAgICAxMTUzLCA4MzI2MywgNjQ3ODgsIDgzMjY1LCA4MDU0LCA5MTc0LCA2NzA4NywgNjcwODYsIDk5NjQsIDY3MDk2LCA0MTYxMSwgCisgICAgNDY0MiwgNjY1NzQsIDExNTU2LCA0MjUxMiwgMCwgNzg4NTcsIDQyMDg5LCA3NDYxMywgOTAwOCwgMCwgMTAxMDI4LCAKKyAgICAxMDA0NjgsIDQyMDc5LCA4MzI0OCwgNzc5MjQsIDQyNTEzLCA3NzkyNywgNDI4NDIsIDczOTg1LCA2NTI4NSwgNjgzMzgsIAorICAgIDgzMjM5LCA4MzI0MCwgODMyNDEsIDgzMjQyLCA5ODM1OTAsIDExMzM1LCA2NDA2OSwgNDIwOTMsIDM5MjAsIDEwMDUwNCwgCisgICAgMTAwODUwLCAxMTExMCwgODMyNTUsIDQ1ODAsIDQxOTY3LCA4MzI1OCwgNjQzODQsIDgzMjUyLCA4MzI1MywgMzAyMSwgCisgICAgNDIwMDQsIDk4MzA5NiwgODMyNDksIDQyMzE3LCA0MTk5OCwgMTI4NzU2LCA2OTQ2LCAxOTQ3NTUsIDkyOTY3LCAxMjg0NTUsIAogICAgIDEyODE5MywgNjUyMDQsIDAsIDY4MTEzLCA0MjY5MCwgOTg4MCwgNDIwMTAsIDc0ODI0LCA2NDU4OSwgMTAxMTEsIDY0ODc1LCAKLSAgICAxMjc4ODAsIDY4MDM1LCA0Mzk5OCwgMTEzNjAsIDgzMjMzLCA3NDE4MiwgODMyMzUsIDgzMjI4LCA0MjE0OSwgODMyMzAsIAorICAgIDEyNzg4MCwgNjgwMzUsIDQzOTk4LCAxMTM2MCwgODMyMzMsIDc0MTgyLCA3MDY5MSwgODMyMjgsIDQyMTQ5LCA4MzIzMCwgCiAgICAgNjg1MDgsIDkxNzk5MywgNjQ5NDEsIDc3OTE5LCAxMjA0MjEsIDEyODA3NywgNzQ4ODUsIDU1MjQ3LCA0MTEwLCA2NjAwNSwgCiAgICAgNjk1OSwgMTA5MjksIDQyOTA3LCAxMjgwODAsIDY2NzAzLCA3NzkyMSwgODYxNywgNDE5ODIsIDYwMjUsIDY5MjQyLCAKLSAgICAxMjEwNjgsIDE5NDg1NCwgMTI1MTM5LCAwLCA5NTk3LCA0MjA5OSwgNDMxNzIsIDk4MzM3OCwgMTAxMTcsIDk4MzE2OSwgCi0gICAgOTIyOTcsIDQxNjM2LCAxOTQ4ODksIDczNzM4LCAxMjA2ODEsIDgzMDEsIDAsIDAsIDE4NywgMTI4MjM3LCA2NTY2OSwgCi0gICAgMTI4MzM5LCA0OTYzLCAwLCA2ODc2NSwgMCwgODk2NCwgNjU2NzYsIDc3NzUsIDk4Mzg0OSwgNDE5NDgsIDEyNTAwMywgMCwgCi0gICAgODMyMzYsIDQxOTQyLCA2NTQ0OSwgMzE2MCwgMTAwODEsIDEzMjI2LCA0MjEyMSwgNDI0NzUsIDQyNjYzLCAxMjA2MTYsIAotICAgIDQxNzY2LCA3NDk0OCwgNjU4ODIsIDc4ODQ5LCA0MTc2MCwgMTE4OSwgOTA1LCA0ODAsIDEwOTg1LCA0MTczMywgNjc4NTksIAotICAgIDk2MjksIDY3NDIsIDE3NDUsIDQzNjI1LCA3MzgzNSwgNzg4OCwgODM0MDUsIDM5ODAsIDcwMzczLCA0MjY1NiwgNDE1MDcsIAotICAgIDg4MDYsIDcwMjMsIDAsIDc0Mjc5LCA5NDQ3LCA3ODY1MSwgNzg2NywgNjkyMTgsIDYyMzYsIDEyNzE2MiwgMCwgMTA1MDUsIAotICAgIDEyNjYzOCwgMTI4NTEsIDgzNDg5LCAzNDgsIDU0NzQsIDEyMTM4MiwgMzEwMywgMCwgNDE3NTMsIDcxMTA5LCAxMjg2MDQsIAotICAgIDAsIDc4ODQ0LCA3ODg0NSwgNDE3MzksIDc4ODQzLCA0MjUxNSwgMTA5MzEsIDQxNzU2LCA0MzM0NywgNDI1NjAsIDUzOTEsIAotICAgIDQxNzQ2LCAxMTkxNDcsIDkyNTkxLCA0MTI1OSwgNTU2MSwgNjk5MzAsIDI2OTEsIDY4NzUyLCA2NTU1MywgNzkzMywgNTU2MiwgCi0gICAgNjk4MDAsIDEyODI2NSwgNDEyNjIsIDEyODE0NiwgNjQ0MjEsIDc0ODQ2LCA0MTI1MSwgMTI3MjQyLCAwLCAzOTc5LCAKLSAgICA3MTI0OCwgMTk0ODk5LCA2ODMzMSwgOTE3OTEyLCA2ODg0NywgOTgzNjk3LCA4MzM4MiwgNzQ2MzMsIDQxMjY2LCA2ODgzNiwgCi0gICAgNjY1NjYsIDEyODgzNiwgMTA1ODUsIDY1NzQxLCA0MTczNywgMjI3NSwgMjY2NiwgMTIxMjMyLCA0MTczOCwgODMxLCA0MTksIAotICAgIDEzMTI2LCAxMDcxNiwgODM0MDAsIDQyODIyLCAwLCA2NDM0LCA3NDg1NywgNjkzOSwgNzc2NiwgNjQzMiwgMTI4MTA2LCAKLSAgICA2OTkzMiwgOTE2LCA3NjksIDQxNzQyLCAxMTk2OCwgNzQ4MDUsIDY0MzMsIDU1NjMsIDU0NywgMTk0MywgNjQzOSwgNTU2MCwgCi0gICAgNDk5NCwgNDg3LCAxMjY1MzcsIDQ0OTcsIDM3NTQsIDgzMDcyLCA4MzEwNSwgOTAzOSwgMCwgNDE3NzYsIDAsIDg3MTYsIAotICAgIDE1OTUsIDQxNjE1LCAxMjEwMDEsIDAsIDc0MjYwLCA3NDg2MCwgNDI4NTQsIDQzMjE5LCA4MzMxMSwgMTIxMTA3LCAxMjE4NSwgCi0gICAgMTEzODEwLCA3MDA3MiwgNjgzNTUsIDY4MzU3LCA2ODQyMSwgNDI4NTYsIDg2MzQsIDAsIDExOTk4OCwgNDIwOSwgNzUwNTcsIAotICAgIDY4ODMyLCA2NTg3OSwgNDE1MzgsIDY1NjEyLCA2ODgyMiwgNjY5LCA1Njc5LCA2ODgxMywgNjg4MTUsIDY4ODExLCA2ODgxMiwgCi0gICAgNjg4MDQsIDU2NzgsIDExODIxLCA2ODgwMiwgNjcxMSwgNDYwLCAxMjE1MTMsIDAsIDk4MzQ2MywgNzAxMTQsIDEyMDc0NywgCi0gICAgMTk0NzE4LCAxMjE1MTksIDc4MDUwLCAxMTkwMjIsIDAsIDEyMTUxNSwgMTIxNTE0LCA3NzgyLCA5MDQ0LCA0OTc0LCAKLSAgICAxMTc2MCwgNzg0OTQsIDc1NzcsIDY1NzExLCA0MTkxMiwgMTIxNiwgMCwgMTI3MDE3LCA1NzkyLCAxMjY2NDMsIDEyODMxOSwgCi0gICAgNzg1MDEsIDAsIDI5MzMsIDEyMjQ0LCA5ODM3MDIsIDU2ODMsIDkxNzg5NiwgMTIwODk1LCA3ODExOSwgMTU0OSwgMCwgCi0gICAgOTgzMjIzLCAxMjAzOTgsIDU2ODIsIDYyMDYsIDg2NzAsIDEwMjU2LCA1NjgwLCA2OTkzNSwgMTAwMDEsIDY3MjM3LCAKLSAgICA2OTc2OCwgMTQ0OSwgMTAyNDEsIDc4MjkwLCAxMTk1ODcsIDE5NDg5MSwgMTA1NTIsIDY0MzQyLCA0MTkyMiwgNzAzMzAsIAotICAgIDg1ODQsIDY4MDMwLCA1NTY3LCAyNzE3LCA4MzE3OSwgNzE0NDgsIDU1NjQsIDQyODg2LCA0MTkwOCwgNDI4ODIsIDU1NjUsIAotICAgIDkxNzYxMSwgMTIwODgxLCAwLCA2NTcwOCwgNjU3MDksIDU1NjYsIDY5ODAzLCA2NTcwNCwgNjU3MDUsIDExOTA0LCA0Mjg3NSwgCi0gICAgNDMzNzMsIDQyNTM5LCA1OTQyLCA4NDY4LCAxMjA1NjEsIDEwMzYxLCAxMDQyNSwgNjU2OTcsIDY1Njk4LCA2NTY5OSwgCi0gICAgNjgwNTIsIDY2NTk4LCAxMTA1OTIsIDY0NjY0LCAxMDY0NywgNzg3MDIsIDc4NzAzLCA3ODY5MCwgNDU3LCA3ODUwMiwgCi0gICAgNjU3MDEsIDE5MzQsIDQzMDA2LCA4MzI4MCwgODgwMiwgNzg3MTAsIDY1MTMwLCAxMTc0NywgNzg3MDksIDYwODcsIDc4NzA1LCAKLSAgICA3ODcxNiwgNDE3NTcsIDc4NzExLCA4MDQzLCA4OTUwLCA2NTY5NCwgNjQ0ODUsIDQzNTM0LCAxMDQ1NywgMCwgMTE5NjEsIAotICAgIDc4NzI1LCA2Njg1MCwgNzg3MjMsIDc4NzIwLCA3ODcyMSwgMTI3ODk5LCA2NTUxNSwgOTQ5OSwgMTAwMzUsIDEzMDY5LCAKKyAgICAxMjEwNjgsIDEyODk3OSwgMTIxMzk4LCA5MTc5NzksIDk1OTcsIDQyMDk5LCA0MzE3MiwgOTgzMzc4LCAxMDExNywgNzA3MzMsIAorICAgIDkyMjk3LCA0MTYzNiwgMTk0ODg5LCA3MzczOCwgOTI3MjQsIDgzMDEsIDAsIDAsIDE4NywgMTI4MjM3LCA2NTY2OSwgCisgICAgMTI4MzM5LCA0OTYzLCAxMjc5OTYsIDY4NzY1LCAxMjgxOTgsIDg5NjQsIDY1Njc2LCA3Nzc1LCAxOTQ3NjMsIDQxOTQ4LCAKKyAgICAxMjUwMDMsIDAsIDgzMjM2LCA0MTk0MiwgNjU0NDksIDMxNjAsIDEwMDgxLCAxMzIyNiwgNDIxMjEsIDQyNDc1LCA0MjY2MywgCisgICAgMTIwNjE2LCA0MTc2NiwgNzQ5NDgsIDY1ODgyLCA3ODg0OSwgNDE3NjAsIDExODksIDkwNSwgNDgwLCAxMDk4NSwgNDE3MzMsIAorICAgIDY3ODU5LCA5NjI5LCA2NzQyLCAxNzQ1LCA0MzYyNSwgNzM4MzUsIDc4ODgsIDgzNDA1LCAzOTgwLCA3MDM3MywgNDI2NTYsIAorICAgIDQxNTA3LCA4ODA2LCA3MDIzLCA3MjczNCwgNzQyNzksIDk0NDcsIDcwNzAyLCA3ODY3LCA2OTIxOCwgNjIzNiwgMTI3MTYyLCAKKyAgICA5ODM2MDgsIDEwNTA1LCAxMjY2MzgsIDEyODUxLCA4MzQ4OSwgMzQ4LCA1NDc0LCAxMjEzODIsIDMxMDMsIDAsIDQxNzUzLCAKKyAgICA3MTEwOSwgMTI4NjA0LCAwLCA3ODg0NCwgNzg4NDUsIDQxNzM5LCA3ODg0MywgNDI1MTUsIDEwOTMxLCA0MTc1NiwgNDMzNDcsIAorICAgIDQyNTYwLCA1MzkxLCA0MTc0NiwgMTAwOTY3LCA5MjU5MSwgNDEyNTksIDU1NjEsIDY5OTMwLCAyNjkxLCA2ODc1MiwgCisgICAgNjU1NTMsIDc5MzMsIDU1NjIsIDY5ODAwLCAxMjgyNjUsIDQxMjYyLCAxMDA4MjMsIDY0NDIxLCA3NDg0NiwgNDEyNTEsIAorICAgIDEyNzI0MiwgMCwgMzk3OSwgNzEyNDgsIDEyOTQxNSwgNjgzMzEsIDkxNzkxMiwgNjg4NDcsIDk4MzY5NywgODMzODIsIAorICAgIDc0NjMzLCA0MTI2NiwgNjg4MzYsIDY2NTY2LCAxMjg4MzYsIDEwNTg1LCA2NTc0MSwgNDE3MzcsIDIyNzUsIDI2NjYsIAorICAgIDEyMTIzMiwgNDE3MzgsIDgzMSwgNDE5LCAxMzEyNiwgMTA3MTYsIDgzNDAwLCA0MjgyMiwgMCwgNjQzNCwgNzQ4NTcsIAorICAgIDY5MzksIDc3NjYsIDY0MzIsIDEyODEwNiwgNjk5MzIsIDkxNiwgNzY5LCA0MTc0MiwgMTE5NjgsIDc0ODA1LCA2NDMzLCAKKyAgICA1NTYzLCA1NDcsIDE5NDMsIDY0MzksIDU1NjAsIDQ5OTQsIDQ4NywgMTI2NTM3LCA0NDk3LCAzNzU0LCA4MzA3MiwgODMxMDUsIAorICAgIDkwMzksIDcwNjc4LCA0MTc3NiwgMTI3MzkxLCA4NzE2LCAxNTk1LCA0MTYxNSwgNzQ0MzEsIDEyODkwMiwgNzQyNjAsIAorICAgIDc0ODYwLCA0Mjg1NCwgNDMyMTksIDgzMzExLCAxMjExMDcsIDEyMTg1LCAxMTM3MjQsIDcwMDcyLCA2ODM1NSwgNjgzNTcsIAorICAgIDY4NDIxLCA0Mjg1NiwgODYzNCwgMCwgMTE5OTg4LCA0MjA5LCA3NTA1NywgNjg4MzIsIDY1ODc5LCA0MTUzOCwgNjU2MTIsIAorICAgIDY4ODIyLCA2NjksIDU2NzksIDY4ODEzLCA2ODgxNSwgNjg4MTEsIDY4ODEyLCA2ODgwNCwgNTY3OCwgMTE4MjEsIDY4ODAyLCAKKyAgICA2NzExLCA0NjAsIDEyMTUxMywgMCwgOTgzNDYzLCA3MDExNCwgMTIwNzQ3LCAxOTQ3MTgsIDEyMTUxOSwgNzgwNTAsIAorICAgIDExOTAyMiwgOTgzODI5LCAxMjE1MTUsIDEyMTUxNCwgNzc4MiwgOTA0NCwgNDk3NCwgMTE3NjAsIDc4NDk0LCA3NTc3LCAKKyAgICA2NTcxMSwgNDE5MTIsIDEyMTYsIDEyNTA4OCwgMTAwNDExLCA1NzkyLCAxMjEzNjQsIDEwMDM5MywgNzg1MDEsIDAsIDI5MzMsIAorICAgIDEyMjQ0LCA5ODM3MDIsIDU2ODMsIDEwMDM5MiwgMTAwMzk3LCA3ODExOSwgMTU0OSwgNzA2NzAsIDEwMDQxNSwgMTIwMzk4LCAKKyAgICA1NjgyLCA2MjA2LCA4NjcwLCAxMDI1NiwgNTY4MCwgNjk5MzUsIDEwMDAxLCA2NzIzNywgNjk3NjgsIDE0NDksIDEwMjQxLCAKKyAgICA3ODI5MCwgNzA3MDgsIDE5NDg5MSwgMTA1NTIsIDY0MzQyLCA0MTkyMiwgNzAzMzAsIDg1ODQsIDY4MDMwLCA1NTY3LCAKKyAgICAyNzE3LCA2ODgxNCwgNzE0NDgsIDU1NjQsIDQyODg2LCA0MTkwOCwgNDI4ODIsIDU1NjUsIDkxNzYxMSwgMTIwODgxLCAwLCAKKyAgICA2NTcwOCwgNjU3MDksIDU1NjYsIDY5ODAzLCA2NTcwNCwgNjU3MDUsIDExOTA0LCA0Mjg3NSwgNDMzNzMsIDQyNTM5LCAKKyAgICA1OTQyLCA4NDY4LCAxMDA3MjksIDEwMzYxLCAxMDQyNSwgNjU2OTcsIDY1Njk4LCA2NTY5OSwgNjgwNTIsIDY2NTk4LCAKKyAgICAxMDA2ODYsIDY0NjY0LCAxMDY0NywgNzg3MDIsIDc4NzAzLCA3ODY5MCwgNDU3LCA3ODUwMiwgNjU3MDEsIDE5MzQsIAorICAgIDQzMDA2LCA4MzI4MCwgODgwMiwgNzg3MTAsIDY1MTMwLCAxMTc0NywgNzg3MDksIDYwODcsIDc4NzA1LCA3ODcxNiwgCisgICAgNDE3NTcsIDc4NzExLCA4MDQzLCA4OTUwLCA2NTY5NCwgNjQ0ODUsIDQzNTM0LCAxMDQ1NywgMTI4NTUyLCAxMTk2MSwgCisgICAgNzg3MjUsIDY2ODUwLCA3ODcyMywgNzg3MjAsIDc4NzIxLCAxMTk4OTgsIDY1NTE1LCA5NDk5LCAxMDAzNSwgMTMwNjksIAogICAgIDcxMzA5LCAwLCA5ODg5LCA2ODE4NCwgNDI4MDYsIDEyNTA2MSwgNzI1NiwgMCwgNjgwOTQsIDE2NjcsIDQyMTYxLCAKLSAgICAxMjA5ODEsIDQyNDI4LCAwLCA2OTM0LCAwLCAxMDgwMiwgNjQ4NjEsIDY1NTYsIDc4MzkwLCAwLCA4MTAxLCAzNjEwLCAKKyAgICAxMDA5NTgsIDQyNDI4LCAwLCA2OTM0LCAxMDA3MDIsIDEwODAyLCA2NDg2MSwgNjU1NiwgNzgzOTAsIDAsIDgxMDEsIDM2MTAsIAogICAgIDY4NDIwLCA0MTc0OCwgNDk5NSwgOTU1LCA2NTkwNywgMTE5MjA4LCA1MzUwLCA2NDMzOSwgNzgzMDYsIDY0NTQ5LCAxMDg3NSwgCi0gICAgMTI1MDUyLCA1NDc3LCA2NTY5MiwgMCwgMTI4NTMyLCAxMjAzOTcsIDEyODk2LCAxMDQ1NiwgNjgyOTgsIDAsIDM4NzQsIDAsIAotICAgIDAsIDk4MzYxOSwgMTIwMzMxLCAxMjg3NzMsIDExMzY2NSwgNjU2MDMsIDgzMjcyLCA2NTY4NywgMCwgNDEwMzgsIDc0MDA5LCAKLSAgICA5MjA3LCA0MjIzOSwgODUzNiwgNzg3NDAsIDc4MzI0LCA3ODcyNiwgNzQ0MzIsIDcyNCwgODMwNTgsIDE0NTUsIDc4NzQ5LCAKLSAgICA3MTgzLCA2NDU4MywgNzg3NDcsIDY4NDQzLCA0MTc1LCA3ODc0MSwgNDM2MTQsIDY5ODAxLCA5MzksIDc1MDIxLCA0MzUyMCwgCi0gICAgNjg2MTMsIDc0NTY5LCA5MTc5NTgsIDAsIDcwMTY4LCA3ODc2NCwgNzg3NjAsIDEwNzg4LCA2MDg4LCA3ODc1OSwgNzg3NTUsIAotICAgIDE5MCwgMTE5ODk5LCAxMjU5MywgMCwgODE4OCwgNjQ0MDgsIDAsIDQ0MTcsIDEyMTMwMywgOTIyNjEsIDYzNzAsIDEyNTEyOCwgCi0gICAgNzgyNywgNjg0NDEsIDY5NjUsIDEyODU4MSwgMTI4ODY4LCAxMzIwMSwgMTI4MjA1LCA2OTg5NiwgNzg4NjgsIDc0MzgyLCAKLSAgICAxMTg0MSwgNzkxOCwgNzM5ODgsIDAsIDExMzY2OCwgOTE3ODg0LCAxNzI4LCA5ODM3MDUsIDQzNzY0LCAxNzgsIDEyOTcyLCAKLSAgICA3NDYyMCwgMTEzNjcxLCA3MTEwMywgMTExNjgsIDk4MzM4MywgMTEzNjcyLCA3ODMyNywgNzUwNDIsIDY1NjkwLCA4MzgyLCAKLSAgICA3MTEwNywgMTE5MDU0LCAxOTQ5NjgsIDkyNTIsIDkxNzg4OSwgNDY1MiwgNjgzNzEsIDAsIDEyMTMyNywgNzQwNzAsIAotICAgIDEzMDY1LCA5OTIzLCAxMDgwNiwgMTk0NTk2LCAxMTc2MywgNzAwMTYsIDEyMDY4OCwgNjcyMywgNzgxODcsIDAsIDY5OTMsIAotICAgIDcxMDQ0LCAxMjEzMTIsIDgzMzMsIDEyMTMyOSwgMCwgMTEzOTAsIDAsIDc0NDY0LCAwLCA5MjMyMCwgNzQwODAsIDk4MzMxNywgCi0gICAgNjk5MTEsIDExOTEwLCA5MjU1OSwgODI3OCwgODk2MywgNDAzNCwgMTI4NTYwLCA5ODMxMTMsIDY1MzQ0LCAxMjA1MTcsIAotICAgIDQxNzQ3LCAwLCAxMjgxMTAsIDg2NzcsIDAsIDEyNzA3LCA5MzUwLCA2NjAzNywgMTI4MTgwLCA4ODM2LCAxMjMxNSwgCi0gICAgMTI3NDcsIDgzMDAsIDE5NDU2MiwgMTI0OTg0LCA3NDkxLCA4ODU2LCA3MTM2MSwgMCwgNDMxNTAsIDEyNzc2OCwgMTIwNDA0LCAKLSAgICA2NTM4OSwgMTIwNDAyLCAxMjA0MDMsIDEwODEzLCAyNTkyLCAxMjg1MywgNDMyNjksIDcyNjMsIDgzMzA4LCA2NTM2LCAKLSAgICAxMjAyMzgsIDcxODkxLCA2NTUxNiwgMTIzMjEsIDEyMDM5MSwgMTIwMzg4LCA1NTI4NywgMTAwMDcsIDEyMDI0NiwgOTU4OCwgCi0gICAgNjg0OTQsIDE1OTYsIDEyMDM4MywgNDE5OTQsIDY1ODAxLCAxMjg4MDgsIDY4MzgsIDM1NjEsIDExOTg2NywgMCwgMTA2MTMsIAotICAgIDY2OTcsIDEyODA1LCA0MTkyOCwgNDA5ODEsIDEwODA0LCA3ODQwOSwgNTAwNiwgNjQzMjgsIDAsIDk5MzEsIDAsIDg4MjUsIAorICAgIDEyNTA1MiwgNTQ3NywgNjU2OTIsIDk4MzI3NiwgMTE5MDkyLCAxMjAzOTcsIDEyODk2LCAxMDQ1NiwgNjgyOTgsIDEyMTE5NSwgCisgICAgMzg3NCwgMCwgMTI1MjA0LCAxMDA5OTQsIDEyMDMzMSwgMTAwOTkzLCAxMDA2NzMsIDY1NjAzLCA4MzI3MiwgNjU2ODcsIDAsIAorICAgIDQxMDM4LCA3NDAwOSwgOTIwNywgNDIyMzksIDg1MzYsIDcwNjcxLCA3ODMyNCwgNzg3MjYsIDc0NDMyLCA3MjQsIDgzMDU4LCAKKyAgICAxNDU1LCA3ODc0OSwgNzE4MywgNjQ1ODMsIDc4NzQ3LCA2ODQ0MywgNDE3NSwgNzgzMjMsIDQzNjE0LCA2OTgwMSwgOTM5LCAKKyAgICA3NTAyMSwgNDM1MjAsIDY4NjEzLCA3NDU2OSwgOTE3OTU4LCAxOTQ2NTgsIDcwMTY4LCA3ODc2NCwgNzg3NjAsIDEwNzg4LCAKKyAgICA2MDg4LCA3ODc1OSwgNzg3NTUsIDE5MCwgMTE5ODk5LCAxMjU5MywgMTAwNzM1LCA4MTg4LCA2NDQwOCwgMCwgNDQxNywgCisgICAgMTIxMzAzLCA5MjI2MSwgNjM3MCwgMTAwNDM2LCA3ODI3LCA2ODQ0MSwgNjk2NSwgMTI4NTgxLCAxMjg4NjgsIDEzMjAxLCAKKyAgICAxMDA0MzAsIDY5ODk2LCA3ODg2OCwgNzQzODIsIDExODQxLCA3OTE4LCA3Mjc0MiwgMTAxMDA2LCAxMTM2NjgsIDkxNzg4NCwgCisgICAgMTcyOCwgOTgzNzA1LCA0Mzc2NCwgMTc4LCAxMjk3MiwgNzQ2MjAsIDExMzY3MSwgNzExMDMsIDExMTY4LCA5ODMzODMsIAorICAgIDExMzY3MiwgNzgzMjcsIDc1MDQyLCA2NTY5MCwgODM4MiwgNzExMDcsIDExOTA1NCwgMTAwMzgxLCA5MjUyLCAxMDAzNzksIAorICAgIDQ2NTIsIDY4MzcxLCAxMDAzODIsIDEyMTMyNywgNzQwNzAsIDEzMDY1LCA5OTIzLCAxMDgwNiwgMTk0NTk2LCAxMTc2MywgCisgICAgNzAwMTYsIDEyMDY4OCwgNjcyMywgNzgxODcsIDEwMDM4OCwgNjk5MywgNzEwNDQsIDEyMTMxMiwgODMzMywgMTIxMzI5LCAwLCAKKyAgICAxMTM5MCwgOTgzMTM2LCA3NDQ2NCwgMTI3OTEwLCA5MjMyMCwgNzQwODAsIDEwMDQ0MiwgNjk5MTEsIDExOTEwLCA5MjU1OSwgCisgICAgODI3OCwgODk2MywgNDAzNCwgMTI4NTYwLCA5ODMxMTMsIDY1MzQ0LCAxMjA1MTcsIDQxNzQ3LCAxMjgzNDIsIDEyODExMCwgCisgICAgODY3NywgMTIwNTY0LCAxMjcwNywgOTM1MCwgNjYwMzcsIDEyODE4MCwgODgzNiwgMTIzMTUsIDEyNzQ3LCA4MzAwLCAKKyAgICAxOTQ1NjIsIDEyNDk4NCwgNzQ5MSwgODg1NiwgNzEzNjEsIDEyNzkxMywgNDMxNTAsIDEyNzc2OCwgMTIwNDA0LCA2NTM4OSwgCisgICAgNjY3NzksIDY2Nzc3LCAxMDgxMywgMjU5MiwgMTI4NTMsIDQzMjY5LCA3MjYzLCA4MzMwOCwgNjUzNiwgMTAwOTYyLCAKKyAgICA3MTg5MSwgNjU1MTYsIDEyMzIxLCAxMjAzOTEsIDEyMDM4OCwgNTUyODcsIDIyMzcsIDEyMDI0NiwgOTU4OCwgNjg0OTQsIAorICAgIDE1OTYsIDEyMDM4MywgNDE5OTQsIDY1ODAxLCAxMDA4NzQsIDY4MzgsIDM1NjEsIDcyNzUzLCAwLCAxMDYxMywgNjY5NywgCisgICAgMTI4MDUsIDQxOTI4LCA0MDk4MSwgMTA4MDQsIDc4NDA5LCA1MDA2LCA2NDMyOCwgMTAwOTY2LCA5OTMxLCAwLCA4ODI1LCAKICAgICA3NDU1NSwgNjU5NDAsIDQzMjU5LCAxMjY1ODYsIDYxMDcsIDgzNDU1LCAxMTkxNzcsIDc3OTQxLCA3ODQwMSwgMTE5MjcwLCAKICAgICAxMTc4MywgMzM1LCAxMjAyMjcsIDY0Njg5LCA0MzgsIDQ1MTAsIDU3NjUsIDg3MjEsIDExOTU3MCwgMTE5MjI3LCA2MDkyLCAKLSAgICAxMjg0MCwgNDMxMTIsIDg4NzYsIDEyMDIzMSwgODA5NiwgMTAyODQsIDEyMDkzNSwgMCwgMCwgMTAzODAsIDg3MzMsIAotICAgIDEwMzE2LCA3MDEyMSwgNDE2MDIsIDkxNzU3NSwgOTIzMDgsIDc0ODMxLCA5Mzk4NCwgMCwgNjg0ODIsIDY1Mzk5LCAKLSAgICA5MTc4MjAsIDY0NTkxLCA0MjQwNSwgODM0NjYsIDEyMDgyMCwgODQzLCAxMTU0MSwgMTI4MzI2LCA3MDMyMSwgMjA2NSwgCi0gICAgNDE5MzUsIDc0NDk2LCA0MTkwMiwgMCwgOTgzMzA2LCAyMTUsIDQxMjU4LCA3Nzg3NSwgNDMxNTksIDE5NTMsIDk1NzksIAotICAgIDQxOTM4LCAxMjU2LCAzOTEwLCA5NDA3LCA2MjQyLCAwLCA4MzQ2NCwgNDEyNTcsIDQxOTAwLCA4Njc1LCAxMDcwMCwgODgwNSwgCi0gICAgMTc0MiwgMTEzNzIyLCA5MzMzLCA4MjAyLCA3MjM5OSwgMCwgOTgzMTk3LCAxMjcyNTIsIDAsIDczODgyLCA0OTksIAotICAgIDk4MzA0OSwgNDM0NjcsIDAsIDQzODE4LCA4MzQ4MiwgMTcxMiwgNTkzMiwgNzc4NDUsIDQxNzYyLCA5ODMxMDMsIDAsIAotICAgIDExOTY3LCAxNzc1LCAxMjUwMDYsIDc1MDA5LCAxMTExOCwgMTIxMzkxLCAxMjgwMDksIDk0NTgsIDkyOTM1LCA2NDcwLCAKLSAgICA5MTgwLCAxMjAzODAsIDQzMTc2LCAxMjgzMDcsIDAsIDQyNzgyLCAwLCAxMjQ5OTksIDk4MzEzNSwgMTI4MzA5LCA3Mzg0OSwgCi0gICAgMTIwNjY5LCA5NDE0LCA3NDY0NywgNzM3ODIsIDczOTY5LCA1NjUsIDQyNDg0LCA1Nzk0LCAyMDEsIDI2NjIsIDQyMjkyLCAKLSAgICAxOTQ4NzAsIDgyNTQsIDAsIDEwOTc1LCA0MzUxOCwgMTIwNjI1LCA3NDc2MywgMTAyMiwgNDEwOCwgMzg4MCwgNzQyNDcsIAotICAgIDEyNzE1MywgMCwgOTIyNjMsIDkxNzk4MCwgNzUwNywgOTgzMTE4LCA0MzE0OSwgNzEwNTksIDY1MDMxLCA3OTYxLCAxNjM2LCAKLSAgICAwLCA2NTAyOSwgNjUwMjQsIDExOTA5OSwgMTI0NzMsIDY1MzQsIDEyMDYzMywgOTksIDk4LCA5NywgNjgyMjYsIDY3NTg0LCAKLSAgICA0MDQ5LCA3NDE2MywgMTI3MDY1LCA3MDkwLCA4MzI3NCwgNzg5MiwgMTI3MDY0LCAxMDc3NywgOTE3ODAzLCA2NTMxMCwgCi0gICAgNjU1NjIsIDY2NTk5LCA2NjcyMiwgMTk0OTU1LCA4MDM5LCAzMzYzLCA2NjU5NCwgNDM0MzQsIDEyNzA2MiwgNzExOTEsIAotICAgIDEyNTk2LCA2NjU5NSwgNDIyNTgsIDQyNTcwLCA1NTkzLCAxMTkxNDgsIDEyMDUzNCwgOTI0MjUsIDEwMTAwLCA2MDYxLCAKLSAgICA2NDg1NCwgMTE5LCAxMTgsIDExNywgMTE2LCAxMjk5OCwgMTIyLCAxMjEsIDEyMCwgMTExLCAxMTAsIDEwOSwgMTA4LCAxMTUsIAotICAgIDExNCwgMTEzLCAxMTIsIDEwMywgMTAyLCAxMDEsIDEwMCwgMTA3LCAxMDYsIDEwNSwgMTA0LCA2NDM2LCA3Mzk3NCwgNTM0LCAKLSAgICA0MTIxMiwgNjc3MTMsIDE1MzYsIDY0MDkzLCA3Mzk3MCwgNzc5MzAsIDEyMTA5MywgMCwgNjAyMCwgMTI3MTYsIDEyNzExMiwgCi0gICAgMTI3NDQsIDQ3NSwgMTIwMzk0LCAxMzI2NiwgMTI3ODEzLCAxMjcxMTEsIDc4ODQyLCA3MzkyNiwgNjYyOTEsIDEwNjQ1LCAKLSAgICAxMjEyLCA2NTQzLCA5ODMzMDksIDgxMzQsIDQyOTM1LCAyOTEzLCA3Mzg3MCwgMTI3MTEzLCAxODY2LCA5ODMyMjksIAotICAgIDcxODkyLCAxMjA5OTYsIDg5MjMsIDE2NDUsIDEyMDU5LCA2NjU4NSwgNzEyOTcsIDMxOTYsIDcyNDA0LCAxOTQ4MjcsIAotICAgIDU5MzUsIDEyNTAsIDEyNzA2NiwgODE3NCwgOTc4NywgNjczMywgOTg1OSwgNzkxNiwgOTg2MSwgOTg2MCwgNTI1OCwgMTg4MiwgCi0gICAgMTg5MiwgNjczMSwgMTA4ODIsIDQwNSwgMTE0NTQsIDczOTExLCAxMTM3ODcsIDczODE5LCA0MTE2OSwgODkzOSwgNDEyNDUsIAotICAgIDEyODc3NSwgNDExNzAsIDE0NTQsIDExMzY5LCA2NDc3LCAxMjE1NywgMTIwODYxLCAwLCAwLCA0MTE3MiwgNzg1NSwgMCwgCi0gICAgNzE0NzIsIDEwNDgwLCA0MzI1OCwgMTI2NTk2LCA3NzkzNiwgODI2NCwgMTI2MTAsIDk4MzMxMCwgNjQ1LCAxMjY2MTYsIAotICAgIDc2MDksIDQwOTczLCA2OTk0MywgNzM4MzMsIDY5OTQ4LCA1ODI0LCA5ODQsIDc3OTE4LCAxMDY4OCwgNTg1MSwgMCwgNzcyOSwgCi0gICAgNzM5ODIsIDEyMDUxOCwgODM0NzMsIDE5NTA4NiwgNDMzNjksIDk4MzE3NywgMTI4MTQwLCA2ODQxNSwgNzc4NjEsIDQ1MzgsIAotICAgIDkzOTc4LCA0MzE0MSwgOTgzNzY5LCA4Mjk3NiwgNzQyMTQsIDczODg2LCA2NzcwOSwgOTE3NTk5LCA3MTkxOCwgNDMwMDUsIAotICAgIDcxMTE0LCA5NTUyLCAwLCA3MDEyOSwgMTI5MTczLCAxMjk5NywgODM0NzcsIDAsIDEyODg5NywgMTk1MDMwLCAyMzgxLCAKLSAgICAxMjg4MywgMTA5OTQsIDEwNTI5LCA0MTkwNiwgMCwgNzQ2MTgsIDAsIDEyNDI1LCAxMDY2MSwgMTA4NTYsIDk2MTQsIDI0MjgsIAotICAgIDQxNDc4LCA4NTgyLCAxMDA2NCwgNzM5MzAsIDgyOTc3LCA3MDQzNywgMTIxMjUxLCA2NDg5NiwgMTE5MTYyLCAxOTUyLCAKLSAgICA5MjE4MSwgODQ1NSwgMTAwODIsIDExNTc1LCAxMjg0NTAsIDExOTU2NiwgMTI4MDkzLCAxMjgwOCwgMTIxODMsIDYxNDUsIAotICAgIDc1MDIwLCA2NDkyOSwgNzQ5ODUsIDcxOTE2LCA3NDk4NCwgNDMxODYsIDQyNTA5LCAwLCAzOTIyLCA5MTg3LCA4MzI3NywgCi0gICAgODMyNzgsIDEwMTkxLCA4MzI3MSwgMTE3NTIsIDMzNTMsIDkzNTgsIDk4MzQ2MiwgNzEzNjYsIDY2NjgwLCAxMjAwOTAsIAotICAgIDgyNDgsIDc5MzEsIDg1NTgsIDk3OTUsIDY4MzgwLCAxMjAwNDcsIDk4MzA1NiwgODM0NzAsIDEyMDA4MSwgMTE5MDUyLCAKLSAgICA0MTAyNywgMTIwMDg2LCA3MTQ0OSwgMTIwMDg4LCA3MzY2LCA3MDE5LCA3MDM3OCwgMCwgMTE3NTEsIDEyMDA3OCwgNzgyOTQsIAotICAgIDY0NjU3LCA4NjU3LCA4MzQ3MiwgODU5NCwgMTIwMDY4LCAwLCA5ODM3ODksIDEyMDA2OSwgMTIwMDcyLCAxMjAwNzEsIDAsIAotICAgIDExMzcxMSwgNDMxNTQsIDQxMDI5LCAxMTk5NTYsIDExMzMyLCA2NTM4MCwgNzcyOCwgOTQwNzcsIDExMjk0LCAwLCA2NjY2NSwgCi0gICAgNzg1MSwgMCwgODM3NSwgODY5OSwgMTI3OTQ5LCA0MjUyNCwgNjg0MTksIDkwODUsIDk0MDQxLCA3NTA0LCA5MzI3LCA2MTYwLCAKLSAgICA3Mzg0MiwgOTgzODY0LCAxOTQ5MjksIDgwODgsIDEyODkzNywgNzQwMTIsIDY2NTYyLCAwLCA0NDM5LCA2OTI2LCA3MjQyMywgCi0gICAgMTI5MjQsIDEyODIyNywgNDIzNjksIDQzNTAsIDY1NDkxLCA2NTE0NSwgOTA0MSwgNDM1NTksIDY0NTc3LCAxMDgyNiwgCi0gICAgMTI3NDc2LCAxMTI5NiwgOTgzMjg1LCA5ODM0MDksIDAsIDY1ODI1LCA5NTc3LCA2ODE5OSwgOTgzMzkzLCA2NDY3MCwgCi0gICAgOTgzMTIxLCA3ODA1NiwgNjc5MywgMTEyOTUsIDcwNDA5LCA3ODA1MywgNzM4NzIsIDc4MDU1LCAxMTk5OTMsIDEwOTAyLCAwLCAKLSAgICAwLCA3ODA3MCwgMTEyMDAsIDEwNDcyLCAyOTk1LCAxMjE0MzgsIDEyMDEzOCwgNjQ2ODIsIDIzNzEsIDc4MDY5LCAxMTg4OTMsIAotICAgIDI1OSwgMTAwOSwgNzA0MDUsIDI0MDIsIDIzMzMsIDY0NDAsIDE5NDc0MSwgMTEzNzU3LCA2NTEyNSwgNDEyNDQsIDcwNDA3LCAKLSAgICAxMzI3MSwgOTEwMywgMjI3OCwgOTgzMTQ2LCAxOTQ3MjgsIDEyOTEyMCwgMCwgMTAyMTksIDc0OTY4LCAxOTQ3NDAsIDAsIAotICAgIDY3NzE4LCA0MzE3OCwgMTI3MDcwLCA0MTI2MSwgMTE5MzYyLCA0MzY0MCwgODYxMywgMCwgOTQwNDksIDY3MzYsIDgzNDM5LCAKLSAgICA0MTQ5MiwgMTIwMDUsIDY5OTI3LCAxMjcwNjgsIDE4OTAsIDEyMDA1NiwgMCwgODM0NDMsIDAsIDcyOTMsIDc5OTEsIAotICAgIDc0MDUyLCAxMDU3OCwgMTIxMTQxLCA3ODA3NiwgMTI4NjIwLCA2NzM2OCwgNjk5MjgsIDcxODUwLCA3ODgwMCwgOTI2NTMsIAotICAgIDY0NDQ1LCA0MjY2OCwgNjYzNSwgMTI4MzA4LCA2MTY0LCA2NTE3MCwgNzQ5MzYsIDEyMTE4MiwgNzY3NiwgMTE2NjQsIDAsIAotICAgIDkzMDI1LCA2OTcwNywgOTMwMjIsIDExODgxMiwgMCwgNzEwOTYsIDEyODA0NSwgOTE3NSwgMTE5MjUsIDc4MDQ1LCA5MDg4LCAKLSAgICAxMTkxNDUsIDY0NTQ1LCAxMzk2LCAxMjA2NjQsIDc1NDYsIDM4NDcsIDcxMDg4LCA5MzAzNywgNDk4NSwgMTMyODgsIDY3MiwgCi0gICAgODA5OCwgNDMxOTYsIDE5NDc0NiwgMTIwNzIzLCAxMjgxMjYsIDQyNjU1LCA3NDA0MywgNjUwNzIsIDE1NzcsIDExNzcyLCAKLSAgICAxMzA0MSwgNTkyOCwgNDUyNSwgMTA2NTgsIDY1OTExLCAxMjY2LCAxMDE4MCwgMTk0NzExLCAxMjgzNzEsIDEyNjIyLCAKLSAgICAxMjcyMzQsIDEyNDk0OCwgMCwgMTIxMjE0LCAxMjcxMzksIDEzMzEwLCA3NzMsIDE5OTMzLCAxNTM5LCAwLCA3NDk2OSwgCi0gICAgNDI3MzEsIDY3OTcyLCA3NDk3MCwgNzEwNjYsIDk4MzIwMCwgMzA1MSwgNTg2MiwgNzgyMywgOTI0NzgsIDkyNzQ2LCAKLSAgICAxMjA0MTEsIDMyNTAsIDQzOTkxLCA2OTY4NywgNjY2NDksIDk1MTAsIDY2MjM3LCA5ODMzMDQsIDAsIDQxMDY2LCA2NDY3MywgCi0gICAgOTE3OTYzLCA5MjM4MSwgMTI4NjM2LCAzNTA1LCA4NzA3LCA3NDkyNSwgNjcyNSwgMTIwODAyLCAxMjEyOTYsIDc1MDQxLCAKLSAgICAzNDcxLCA2NjM5MSwgNTQ3OSwgODgyLCA2Njg2LCAxMTk1ODQsIDExNjEzLCAxMjA3NzIsIDQyNzU0LCA3NDYwOCwgCi0gICAgMTI1MDI5LCA4MzQzMywgMTIxMjM3LCAxMjA4NDUsIDAsIDgzNDMxLCAzMjI1LCA5MTc5OTYsIDQ0MzMsIDQxMTU2LCAKLSAgICA0Mzk3MywgNDMxNzMsIDE0NDMsIDQzODEsIDAsIDk4MzY0MiwgMTA5MjYsIDExNzU2LCAxMTc1NywgNjQ4NzksIDEyMTEwNiwgCi0gICAgNDI2NTQsIDEyNzg0OCwgMTMyMjcsIDEyMDMyMCwgMTAwMjEsIDUxNjAsIDEzODcsIDAsIDkyNjQ0LCA0MTQxOCwgMTI4OTMzLCAKLSAgICA2NTkxNCwgNjcyMSwgMjE3LCA5MTc5NTUsIDkxNzk2MCwgMTIxMDgyLCAxMDQ0MywgMTA3ODksIDQxMTU4LCAxMTkyNTcsIAotICAgIDQyNzQsIDExMTQzLCA0MTQ4MywgMCwgNDEyNTAsIDEyODkwNCwgNDIxNzksIDEyODM3NSwgNTkzMSwgMTE3NDQsIDExMjE1LCAKLSAgICA3NDQ0NiwgNDEyNTIsIDY2NjgyLCAwLCAxMTk2MzcsIDQxMjQ5LCAxMzY2LCA2NDYzNSwgNjUwNDcsIDEyNDY2LCA5ODM0NTgsIAotICAgIDEyMDgxMywgNDM5NywgMTI4MDM3LCAxMjgzMzYsIDQxMjk2LCA5NTQ1LCA0MTI5MSwgMTIwODkzLCAwLCA0MTQ4NSwgMzUxMSwgCi0gICAgNDEyODIsIDU5MjMsIDEwNDAwLCAwLCAxMjA0OTMsIDc2MCwgMCwgMTIwODgsIDU3ODYsIDY4MjUyLCA0MjI1NiwgMTE5ODY5LCAKLSAgICA2NzE0NSwgNDE3LCA0MTQ3NCwgMTE5NTYyLCA0MTU2NSwgNzQ5NjUsIDU5MzQsIDc0NTcyLCA2NjU4MywgNzQ5MDQsIAotICAgIDY0ODc3LCAyMjg0LCA2NDQ4MSwgNzg2MTQsIDY2MDEzLCA0MTk1NiwgNDM0NTUsIDY3MjQwLCAxOTQ2NTYsIDAsIDAsIAotICAgIDQyMjczLCA1ODE5LCAwLCAxMjgwNTYsIDAsIDExOTEyOSwgOTgzMTAwLCA2NTkxMCwgMTI3NzQ3LCAxMDI0NiwgMTIwODE2LCAKLSAgICA2NTc4NSwgMTIzNywgMTAyNzQsIDQ1NTIsIDExOTU3NiwgMTI4Mjg3LCAwLCAxMzc1LCA2NjcwNSwgNDM1NzMsIDY1MjYwLCAKLSAgICAzMzI5LCAwLCA0MjgxMSwgMTAzMTIsIDY5ODQ1LCAxMjA3OTQsIDc4NDAsIDAsIDQzNjMwLCAxMDI1MiwgMTE5MjQyLCAKLSAgICAxMjgxMDQsIDQzMTg1LCAwLCA0Mzk2LCAxOTUwNTEsIDExOTg4MCwgMTA3NjksIDk2NzYsIDExOTA0MSwgMCwgOTc1MywgCi0gICAgOTI3NjIsIDg5NDQsIDk4MzE2NCwgMCwgMTA0NzMsIDk4MzgyMywgMTIwNDcyLCA2MDcyLCA0MzAyNSwgMTAyOTksIAotICAgIDEyODQzNiwgNjg4NDUsIDEyMDYwOCwgNjYzMjYsIDY3NDEyLCA5Mjk1MiwgMCwgNDM4MTEsIDkzMzAsIDEyMDU5NiwgNzIyMiwgCisgICAgMTI4NDAsIDQzMTEyLCA4ODc2LCAxMjAyMzEsIDgwOTYsIDEwMjg0LCAxMjA5MzUsIDEwMDk3MCwgNzA3MTMsIDEwMzgwLCAKKyAgICA4NzMzLCAxMDMxNiwgNzAxMjEsIDQxNjAyLCA5MTc1NzUsIDkyMzA4LCA3NDgzMSwgOTM5ODQsIDk4MzgzMCwgNjg0ODIsIAorICAgIDY1Mzk5LCA5MTc4MjAsIDY0NTkxLCA0MjQwNSwgODM0NjYsIDEyMDgyMCwgODQzLCAxMTU0MSwgMTAwODEwLCA3MDMyMSwgCisgICAgMjA2NSwgNDE5MzUsIDc0NDk2LCA0MTkwMiwgMTI1MDYwLCA5ODMzMDYsIDIxNSwgNDEyNTgsIDc3ODc1LCA0MzE1OSwgCisgICAgMTk1MywgOTU3OSwgNDE5MzgsIDEyNTYsIDM5MTAsIDk0MDcsIDYyNDIsIDAsIDgzNDY0LCA0MTI1NywgNDE5MDAsIDg2NzUsIAorICAgIDEwNzAwLCA4ODA1LCAxNzQyLCAxMTM3MjIsIDkzMzMsIDgyMDIsIDcyMzk5LCAxMjEwMjcsIDk4MzE5NywgMTEzODA5LCAKKyAgICAxMDA5ODksIDczODgyLCA0OTksIDk4MzA0OSwgNDM0NjcsIDE5NDkyNywgNDM4MTgsIDgzNDgyLCAxNzEyLCA1OTMyLCAKKyAgICA3Nzg0NSwgNDE3NjIsIDEyOTM3MiwgMCwgMTE5NjcsIDE3NzUsIDEyNTAwNiwgNzUwMDksIDExMTE4LCAxMjEzOTEsIAorICAgIDEwMDk4MiwgOTQ1OCwgOTI5MzUsIDY0NzAsIDkxODAsIDEyMDM4MCwgNDMxNzYsIDEwMDQxNCwgMTAwOTg2LCA0Mjc4MiwgCisgICAgMTAwNDQwLCAxMDEwMzYsIDEwMTAzNSwgMTAwNTgxLCA3Mzg0OSwgMTAxMDQwLCA5NDE0LCA3NDY0NywgNzM3ODIsIDczOTY5LCAKKyAgICA1NjUsIDQyNDg0LCA1Nzk0LCAyMDEsIDI2NjIsIDQyMjkyLCAxMDEwNDQsIDgyNTQsIDEwMTA0NiwgMTA5NzUsIDQzNTE4LCAKKyAgICAxMDA5NTQsIDc0NzYzLCAxMDIyLCA0MTA4LCAzODgwLCA3NDI0NywgMTAwOTUxLCAxMDA5OTEsIDkyMjYzLCA5MTc5ODAsIAorICAgIDc1MDcsIDEwMDYzOCwgNDMxNDksIDcxMDU5LCA2NTAzMSwgNzk2MSwgMTYzNiwgMCwgNjUwMjksIDY1MDI0LCAxMTkwOTksIAorICAgIDEyNDczLCA2NTM0LCAxMjA2MzMsIDk5LCA5OCwgOTcsIDY4MjI2LCA2NzU4NCwgNDA0OSwgNzQxNjMsIDEwMDk1NSwgNzA5MCwgCisgICAgODMyNzQsIDc4OTIsIDEwMTAzMCwgMTA3NzcsIDkxNzgwMywgNjUzMTAsIDY1NTYyLCA2NjU5OSwgNjY3MjIsIDE5NDk1NSwgCisgICAgODAzOSwgMzM2MywgNjY1OTQsIDQzNDM0LCAxMDA5NjAsIDcxMTkxLCAxMjU5NiwgNjY1OTUsIDQyMjU4LCA0MjU3MCwgCisgICAgNTU5MywgMTE5MTQ4LCAxMjA1MzQsIDkyNDI1LCAxMDEwMCwgNjA2MSwgNjQ4NTQsIDExOSwgMTE4LCAxMTcsIDExNiwgCisgICAgMTI5OTgsIDEyMiwgMTIxLCAxMjAsIDExMSwgMTEwLCAxMDksIDEwOCwgMTE1LCAxMTQsIDExMywgMTEyLCAxMDMsIDEwMiwgCisgICAgMTAxLCAxMDAsIDEwNywgMTA2LCAxMDUsIDEwNCwgNjQzNiwgNzM5NzQsIDUzNCwgNDEyMTIsIDY3NzEzLCAxNTM2LCAKKyAgICA2NDA5MywgNzM5NzAsIDc3OTMwLCAxMjEwOTMsIDAsIDYwMjAsIDEyNzE2LCAxMjcxMTIsIDEyNzQ0LCA0NzUsIDEyMDM5NCwgCisgICAgMTMyNjYsIDEyNzgxMywgMTAxMDczLCA3ODg0MiwgNzA1MDMsIDY2MjkxLCAxMDY0NSwgMTIxMiwgNjU0MywgMTI1MjIwLCAKKyAgICA4MTM0LCA0MjkzNSwgMjkxMywgNzM4NzAsIDEyNzExMywgMTg2NiwgOTgzMjI5LCA3MTg5MiwgMTIwOTk2LCA4OTIzLCAKKyAgICAxNjQ1LCAxMjA1OSwgNjY1ODUsIDcxMjk3LCAzMTk2LCA3MjQwNCwgMTk0NzMzLCA1OTM1LCAxMjUwLCAxMjcwNjYsIDgxNzQsIAorICAgIDk3ODcsIDY3MzMsIDk4NTksIDc5MTYsIDk4NjEsIDk4NjAsIDUyNTgsIDE4ODIsIDE4OTIsIDY3MzEsIDEwODgyLCA0MDUsIAorICAgIDExNDU0LCA3MzkxMSwgMTAxMDIwLCA3MzgxOSwgNDExNjksIDg5MzksIDQxMjQ1LCA4MzQ2NSwgNDExNzAsIDE0NTQsIAorICAgIDExMzY5LCA2NDc3LCAxMjE1NywgMTIwODYxLCAwLCAwLCA0MTE3MiwgNzg1NSwgMTAwOTYxLCA3MTQ3MiwgMTA0ODAsIAorICAgIDQzMjU4LCAxMjY1OTYsIDc3OTM2LCA4MjY0LCAxMjYxMCwgOTgzMzEwLCA2NDUsIDEwMDk5MiwgNzYwOSwgNDA5NzMsIAorICAgIDY5OTQzLCA3MzgzMywgNjk5NDgsIDU4MjQsIDk4NCwgNzc5MTgsIDEwNjg4LCA1ODUxLCAxMDA4MzYsIDc3MjksIDczOTgyLCAKKyAgICAxMDEwMDEsIDgzNDczLCAxMDEwMDMsIDQzMzY5LCAxMDEwMDUsIDEwMDk3MywgNjg0MTUsIDc3ODYxLCA0NTM4LCA5Mzk3OCwgCisgICAgNDMxNDEsIDEwMDk3MiwgODI5NzYsIDc0MjE0LCA3Mzg4NiwgNjc3MDksIDkxNzU5OSwgNzE5MTgsIDQzMDA1LCA3MTExNCwgCisgICAgOTU1MiwgMCwgNzAxMjksIDEyOTE3MywgMTI5OTcsIDgzNDc3LCAxOTQ5NDMsIDEyODg5NywgMTAwNzM3LCAyMzgxLCAKKyAgICAxMjg4MywgMTA5OTQsIDEwNTI5LCA0MTkwNiwgMTAwOTgxLCA3NDYxOCwgMTAwOTgzLCAxMjQyNSwgMTA2NjEsIDEwODU2LCAKKyAgICA5NjE0LCAyNDI4LCA0MTQ3OCwgODU4MiwgMTAwNjQsIDczOTMwLCA4Mjk3NywgNzA0MzcsIDEyMTI1MSwgNjQ4OTYsIAorICAgIDEwMDk1NiwgMTk1MiwgOTIxODEsIDg0NTUsIDEwMDgyLCAxMTU3NSwgMTAwOTU3LCAxMTk1NjYsIDEwMDgxNywgMTI4MDgsIAorICAgIDEyMTgzLCA2MTQ1LCA3NTAyMCwgNjQ5MjksIDc0OTg1LCA3MTkxNiwgNzQ5ODQsIDQzMTg2LCA0MjUwOSwgMCwgMzkyMiwgCisgICAgOTE4NywgODMyNzcsIDgzMjc4LCAxMDE5MSwgODMyNzEsIDExNzUyLCAzMzUzLCA5MzU4LCAxMjg5ODAsIDcxMzY2LCAKKyAgICA2NjY4MCwgMTAwODEzLCA4MjQ4LCA3OTMxLCA4NTU4LCA5Nzk1LCA2ODM4MCwgMTAwODEyLCAxMDA5NzcsIDgzNDcwLCAKKyAgICAxMjAwODEsIDEwMDk3MSwgNDEwMjcsIDEwMDgxMSwgNzE0NDksIDEyMDA4OCwgNzM2NiwgNzAxOSwgNzAzNzgsIDAsIAorICAgIDExNzUxLCAxMjAwNzgsIDc4Mjk0LCA2NDY1NywgODY1NywgODM0NzIsIDg1OTQsIDEwMDk2OSwgMTAwOTY4LCAxMDA5NzgsIAorICAgIDEwMDgyMCwgMTAwOTE0LCAxMjAwNzEsIDAsIDExMzcxMSwgNDMxNTQsIDQxMDI5LCAxMTk5NTYsIDExMzMyLCA2NTM4MCwgCisgICAgNzcyOCwgOTQwNzcsIDExMjk0LCAxMDA5ODAsIDY2NjY1LCA3ODUxLCAwLCA4Mzc1LCA4Njk5LCAxMjEwOTcsIDQyNTI0LCAKKyAgICA2ODQxOSwgOTA4NSwgOTQwNDEsIDc1MDQsIDkzMjcsIDYxNjAsIDczODQyLCA5ODM4NjQsIDE5NDkyOSwgODA4OCwgNzA2OTgsIAorICAgIDc0MDEyLCA2NjU2MiwgMCwgNDQzOSwgNjkyNiwgNzI0MjMsIDEyOTI0LCAxMDA5NzQsIDQyMzY5LCA0MzUwLCA2NTQ5MSwgCisgICAgNjUxNDUsIDkwNDEsIDQzNTU5LCA2NDU3NywgMTA4MjYsIDEwMDk1OSwgMTEyOTYsIDk4MzI4NSwgOTgzNDA5LCAwLCAKKyAgICA2NTgyNSwgOTU3NywgNjgxOTksIDgyOTgyLCA2NDY3MCwgOTgzMTIxLCA3ODA1NiwgNjc5MywgMTEyOTUsIDcwNDA5LCAKKyAgICA3ODA1MywgNzM4NzIsIDc4MDU1LCAxMDA4MTUsIDEwOTAyLCAwLCAwLCA3ODA3MCwgMTEyMDAsIDEwNDcyLCAyOTk1LCAKKyAgICAxMDA5NTMsIDEyMDEzOCwgNjQ2ODIsIDIzNzEsIDcyNzIwLCAxMTg4OTMsIDI1OSwgMTAwOSwgNzA0MDUsIDI0MDIsIDIzMzMsIAorICAgIDY0NDAsIDEyNTI0NywgMTAwOTYzLCA2NTEyNSwgNDEyNDQsIDcwNDA3LCAxMzI3MSwgOTEwMywgMjI3OCwgOTgzMTQ2LCAKKyAgICAxOTQ3MjgsIDczMDEsIDk4MzY5MywgMTAyMTksIDc0OTY4LCAxOTQ3NDAsIDAsIDY3NzE4LCA0MzE3OCwgMTI3MDcwLCAKKyAgICA0MTI2MSwgMTE5MzYyLCA0MzY0MCwgODYxMywgMTk0ODk1LCA5NDA0OSwgNjczNiwgODM0MzksIDQxNDkyLCAxMjAwNSwgCisgICAgNjk5MjcsIDEyNzA2OCwgMTg5MCwgMTIwMDU2LCA5ODMzMDIsIDgzNDQzLCA5ODMwNDQsIDcyOTMsIDc5OTEsIDc0MDUyLCAKKyAgICAxMDU3OCwgMTIxMTQxLCA3ODA3NiwgMTI4NjIwLCA2NzM2OCwgNjk5MjgsIDcxODUwLCA3ODgwMCwgOTI2NTMsIDY0NDQ1LCAKKyAgICA0MjY2OCwgNjYzNSwgMTAwNzkyLCA2MTY0LCA2NTE3MCwgNzQ5MzYsIDEyMTE4MiwgNzY3NiwgMTE2NjQsIDEyODY4NCwgCisgICAgOTMwMjUsIDY5NzA3LCA5MzAyMiwgMTE4ODEyLCA5ODMyMzMsIDcxMDk2LCAxMjgwNDUsIDkxNzUsIDExOTI1LCA3ODA0NSwgCisgICAgOTA4OCwgMTE5MTQ1LCA2NDU0NSwgMTM5NiwgMTIwMjIwLCA3NTQ2LCAzODQ3LCA3MTA4OCwgOTMwMzcsIDQ5ODUsIDEzMjg4LCAKKyAgICA2NzIsIDgwOTgsIDQzMTk2LCAxMDA3OTYsIDEyMDcyMywgMTI4MTI2LCA0MjY1NSwgNzQwNDMsIDY1MDcyLCAxNTc3LCAKKyAgICAxMTc3MiwgMTMwNDEsIDU5MjgsIDQ1MjUsIDEwNjU4LCA2NTkxMSwgMTI2NiwgMTAxODAsIDE5NDcxMSwgMTI4MzcxLCAKKyAgICAxMjYyMiwgMTI3MjM0LCAxMjA1NjYsIDE5NDc5OCwgMTIxMjE0LCAxMjcxMzksIDEzMzEwLCA3NzMsIDE5OTMzLCAxNTM5LCAKKyAgICA5ODMzNTEsIDc0OTY5LCA0MjczMSwgNjc5NzIsIDc0OTcwLCA3MTA2NiwgOTgzMjAwLCAzMDUxLCA1ODYyLCA3ODIzLCAKKyAgICA5MjQ3OCwgOTI3NDYsIDEyMDQxMSwgMzI1MCwgNDM5OTEsIDY5Njg3LCA2NjY0OSwgOTUxMCwgNjYyMzcsIDk4MzMwNCwgCisgICAgMTk0NzQ4LCA0MTA2NiwgNjQ2NzMsIDkxNzk2MywgOTIzODEsIDEyODYzNiwgMzUwNSwgODcwNywgNzQ5MjUsIDY3MjUsIAorICAgIDEyMDgwMiwgMTIxMjk2LCA3NTA0MSwgMzQ3MSwgNjYzOTEsIDU0NzksIDg4MiwgNjY4NiwgMTE5NTg0LCAxMTYxMywgCisgICAgMTAxMTA2LCA0Mjc1NCwgNzQ2MDgsIDEyNTAyOSwgODM0MzMsIDEyMTIzNywgMTIwODQ1LCAwLCA4MzQzMSwgMzIyNSwgCisgICAgOTE3OTk2LCA0NDMzLCA0MTE1NiwgNDM5NzMsIDQzMTczLCAxNDQzLCA0MzgxLCAxMjc5NDksIDk4MzY0MiwgMTA5MjYsIAorICAgIDExNzU2LCAxMTc1NywgNjQ4NzksIDEyMTEwNiwgNDI2NTQsIDEyNzg0OCwgMTMyMjcsIDEyMDMyMCwgMTAwMjEsIDUxNjAsIAorICAgIDEzODcsIDk4MzczMCwgOTI2NDQsIDQxNDE4LCA2Njc0OSwgNjU5MTQsIDY3MjEsIDIxNywgNzI4MjksIDkxNzk2MCwgCisgICAgMTAwOTY1LCAxMDQ0MywgMTA3ODksIDQxMTU4LCAxMTkyNTcsIDQyNzQsIDExMTQzLCA0MTQ4MywgMCwgNDEyNTAsIAorICAgIDEyODU2MywgNDIxNzksIDEyODM3NSwgNTkzMSwgMTE3NDQsIDExMjE1LCA3MDY3NiwgNDEyNTIsIDY2NjgyLCA5ODM2ODAsIAorICAgIDExOTYzNywgNDEyNDksIDEzNjYsIDY0NjM1LCA2NTA0NywgMTI0NjYsIDc0MzE5LCAxMjA4MTMsIDQzOTcsIDEwMDQ0NSwgCisgICAgMTI4MzM2LCA0MTI5NiwgOTU0NSwgNDEyOTEsIDEyMDg5MywgMCwgNDE0ODUsIDM1MTEsIDQxMjgyLCA1OTIzLCAxMDQwMCwgCisgICAgMCwgMTIwNDkzLCA3NjAsIDEyNzE4OCwgMTIwODgsIDU3ODYsIDY4MjUyLCA0MjI1NiwgMTAwNDQ2LCA2NzE0NSwgNDE3LCAKKyAgICA0MTQ3NCwgMTE5NTYyLCA0MTU2NSwgNzQ5NjUsIDU5MzQsIDc0NTcyLCA2NjU4MywgNzQ5MDQsIDY0ODc3LCAyMjg0LCAKKyAgICA2NDQ4MSwgNzg2MTQsIDY2MDEzLCA0MTk1NiwgNDM0NTUsIDY3MjQwLCAxOTQ2NTYsIDAsIDEyNzE1MywgNDIyNzMsIDU4MTksIAorICAgIDAsIDEyODA1NiwgMCwgMTE5MTI5LCA5ODMxMDAsIDY1OTEwLCAxMjc3NDcsIDEwMjQ2LCAxMjA4MTYsIDY1Nzg1LCAxMjM3LCAKKyAgICAxMDI3NCwgNDU1MiwgMTE5NTc2LCAxMjgyODcsIDAsIDEzNzUsIDY2NzA1LCA0MzU3MywgNjUyNjAsIDMzMjksIDAsIAorICAgIDQyODExLCAxMDMxMiwgNjk4NDUsIDEyMDc5NCwgNzg0MCwgMCwgNDM2MzAsIDEwMjUyLCAxMTkyNDIsIDEyODEwNCwgCisgICAgNDMxODUsIDAsIDQzOTYsIDEwMDUzMiwgMTAwNTM1LCAxMDc2OSwgOTY3NiwgMTAwNTM2LCAxMDA1MzksIDk3NTMsIDkyNzYyLCAKKyAgICA4OTQ0LCA5ODMxNjQsIDEyMTQ1MCwgMTA0NzMsIDk4MzgyMywgMTAwNTQyLCA2MDcyLCA0MzAyNSwgMTAyOTksIDEwMDU0NiwgCisgICAgNjg4NDUsIDEwMDU0OCwgNjYzMjYsIDY3NDEyLCA5Mjk1MiwgNzI4MDgsIDQzODExLCA5MzMwLCAxMjA1OTYsIDcyMjIsIAogICAgIDEwMjgzLCAxMDMxNSwgMTAzNzksIDQ5OTYsIDEyNzkwMiwgMTMyODEsIDY2NTE3LCA3ODY1LCAxMDA4NywgNzgzNDMsIAogICAgIDc0OTM4LCA0MzMyNCwgMCwgMCwgNzU2NSwgNjYzNjMsIDEyOTUyLCA2NDgwNiwgNDMxODAsIDc0OTY3LCA3NDE0LCA3NzkyOSwgCi0gICAgNDM5ODIsIDc0Mjg4LCA2MjIsIDc0MDIzLCA4ODUsIDQzNDA1LCAxNjAyLCAwLCA5ODM3MzEsIDg1MiwgMCwgMTIxNjAsIAotICAgIDgzNDkxLCAxMDIxMiwgNjU0MzUsIDEyOTA5MiwgMTIwNzEsIDk2MDksIDEyMTU2LCA5MTc5ODMsIDkxNzk4NCwgNDM1ODYsIAorICAgIDQzOTgyLCA3MDc0MSwgNjIyLCA3NDAyMywgODg1LCA0MzQwNSwgMTYwMiwgMCwgNzEyNjcsIDg1MiwgMCwgMTIxNjAsIAorICAgIDgzNDkxLCAxMDIxMiwgNjU0MzUsIDEyNjYwMywgMTIwNzEsIDk2MDksIDEyMTU2LCA5MTc5ODMsIDkxNzk4NCwgNDM1ODYsIAogICAgIDExMDM1LCAxMDQxMSwgOTE3OTg4LCAxMDI1NSwgNjcxMCwgMTAyNzksIDQxOTQsIDEwMzc1LCA0Mzg1MywgMTI4NTk5LCAKICAgICA0MzE1LCAxMjY0NCwgODM0OTAsIDc3OTM3LCA0MzYzOSwgNDMzNDMsIDY3NDA4LCAxMjg5NDUsIDExNTAxLCA0MTE3NywgCi0gICAgMTIxMTgwLCAxMjg4NjYsIDQzNDMxLCAxMjcwOTcsIDkyNDEzLCA4NzE1LCAwLCA0MTE3OSwgOTgzMzU4LCA0MzMxMywgCi0gICAgMTIwMjMwLCA0MTE3NiwgMTI4NzgwLCA5OTQsIDk4MzA0NSwgODQ1MiwgNzc5NzMsIDczOTY2LCA2Njg5MCwgNzA4MTIsIAotICAgIDU5MjEsIDAsIDI1OTcsIDkyNDIzLCA1OTIyLCAxMTg5MDMsIDY2ODczLCA0MTg2LCA5MjUzMSwgMTE5OTY3LCAxMjcxMDUsIAotICAgIDY3MTgsIDEyNzAyOSwgNDQwNiwgNzQ2MDEsIDg0ODAsIDkxOTIsIDk3NDcsIDEyMTA0MCwgNDQxMywgOTIxOTYsIDQyMjY4LCAKLSAgICAzMTk4LCA1OTI0LCA1OTIwLCA5MjQ2OSwgNjkyMSwgNzgwODEsIDc0MDA3LCA0Mjg2OSwgODQxOCwgMTE2ODEsIDQzMTY5LCAKLSAgICAxMDE3NiwgMCwgNzQyLCA3NDg4MSwgMjg5MywgMTA3NzIsIDY1Mjc2LCA1OTM3LCAxOTE0LCAyNTUzLCAxMTY4MiwgNjc1NiwgCi0gICAgMTI1MTA0LCAxMjExMjYsIDgzNjMsIDAsIDI5OTMsIDc3NzIsIDM5MTYsIDQzMDEsIDEyMDQ5NCwgMTE0MSwgNDI0MDcsIAotICAgIDc0MTcsIDcxOCwgNzU3MiwgOTczLCAxMTk1OTksIDEyMDcxOCwgMzIzNSwgMjQxNSwgNDMxNjQsIDAsIDgwMTgsIDQyMzMzLCAKLSAgICA3NDc1NiwgMTA2NzUsIDY5MzcsIDQyNDg2LCA0MzM4MSwgNjUzOTAsIDEwMDY3LCAxMjA4NDksIDEyMDIsIDAsIDk4MzkxMCwgCi0gICAgNjU4NjMsIDAsIDY4NDg0LCA5NDAxMywgNzgxODIsIDY0NTQyLCAzMjYwLCA3MzgyOSwgNjUzODgsIDk5NDUsIDg0MTksIAotICAgIDc4MDQyLCA2NzM4LCAwLCA0MzY4MSwgNjk3MjgsIDIwNTksIDkyNDIyLCAwLCA1NTIzNywgMTQzMSwgMTE5MTk0LCA2NjU2NSwgCi0gICAgMTA4MjEsIDAsIDEyODA0LCAxMjgwNzYsIDgyMjksIDEyMzUsIDMzMDcsIDExNDcyLCA3ODA4OSwgNzgxODQsIDQ1NDQsIAotICAgIDcxMjI4LCA5MTc5ODIsIDEyOTE4OCwgMTc0MCwgNzgwOTcsIDg3NTgsIDk4NSwgMTI4NzIsIDY0NTExLCA3ODA5NCwgCi0gICAgMTIwNjgsIDc4MTAyLCA3MTIyNiwgMTAxNDEsIDc0OTIyLCA2Mzc2MSwgODc4NSwgNDQ3NiwgNjUwNzEsIDYzNzYzLCAKLSAgICAxMjY1NSwgODkwNywgOTE0NywgNzgxMDYsIDc4MTAzLCA3ODEwNCwgMTIwODk4LCAxMTk1NzIsIDEwNjY1LCA2NDYxNiwgCi0gICAgNDE1NzIsIDEyNzk3OSwgMTI3MTYwLCA5ODM1NTQsIDQxNTczLCA4MzE2MCwgMzkzMSwgMTIwMjk1LCA3NDE0MywgODMxNTYsIAotICAgIDgzMTU3LCA4MzE1OCwgNzg0NjAsIDExOTgyLCAwLCA4MzA2NywgMTI4MzgxLCA5MjcxMiwgNjQ0ODQsIDExOTI2NiwgCi0gICAgNDExNjcsIDAsIDQxNzM1LCA5NDAxOSwgNzE3LCAxMDc1NCwgODMxNjgsIDgzMTY5LCA3MjQxMywgODMxNjMsIDYzNzY3LCAKLSAgICA4MzE2NSwgMTc4MCwgNjkzNiwgMCwgODMxNjEsIDgxOSwgMTA2MTEsIDk2OTQsIDEyNjk3OCwgNzE0NzQsIDAsIDEyNzg3MSwgCi0gICAgMTI5MDY5LCA4MzQzLCA4MzQyLCA4MzQ1LCA4MzQ0LCA2NTc4LCA3MDA5LCA3NTIzLCA2OTIyLCA4MzQ4LCA4MzQ3LCA3NTI1LCAKLSAgICAzMzQ2LCA4MzM5LCAxMjgxNjUsIDEyODIwOCwgNTc1LCAyNjgsIDc4MTExLCA4NTYzLCA1NzU0LCAxMjAzNDMsIDQxNTQxLCAKLSAgICA2NTU2NSwgODMzNiwgNTkzNiwgNzI5MCwgNzgxMTcsIDgzMzcsIDgzNDEsIDMwOCwgMTEzODgsIDc1MjIsIDgzMTUxLCAKLSAgICA3ODEyMywgNjU0NjYsIDExMDkwLCA2OTUzLCAwLCA4MzM3NSwgNzQ5NzMsIDc4MTMyLCA1OTI2LCA2ODI1MCwgNzgxMzAsIAotICAgIDc4MTI2LCA3ODEyNywgNzgxMjQsIDc4MTI1LCA5MDM4LCA3ODg3LCA0MzQ1NiwgNzgzMCwgMTE2NTEsIDEzMDkzLCA2NDAwMiwgCi0gICAgOTgzNTU5LCA2NTc0MiwgMTI4NzQsIDExOTU5NywgMTE1OTAsIDAsIDc0MDQ4LCA2NzM3OSwgODU5NSwgOTgzNSwgOTE3OTQ3LCAKLSAgICA0MzcwMywgMTMwOTcsIDAsIDY0NjQzLCAxMzI4MywgMTI2OTcsIDc0OTc1LCAxMjM4MSwgMzQ4OCwgNTkzMywgMTAwMzMsIAotICAgIDcxMTAxLCA2NjI0MSwgNjU1NzAsIDExOTE1NCwgMTIyOTcsIDcxMjEyLCAxOTU1LCAxMjc5NzAsIDUzNDksIDQyNTM4LCAwLCAKLSAgICAxMjQ5MzIsIDc0MTEsIDk0NjIsIDEyODE1MCwgMCwgMTI4NDY1LCA0MzkyMCwgNDI3MzYsIDEyMTAxNywgNTc1NiwgCi0gICAgMTI4MzI0LCA3NjM4LCA0MTY0MiwgNDI3NjQsIDk4MzcxNywgNDMxMDksIDc2MzcsIDU3NTIsIDExMjEzLCA4MzQ4MSwgCi0gICAgNzM4MzIsIDEyODgyNywgODM0ODYsIDEyODIzMSwgNzgzMzQsIDkxNzk1NywgNzYzNiwgNjUxNzEsIDkxMjQsIDk4MzIxMCwgCi0gICAgNzg4OTIsIDEyMDc5OCwgMjkxLCAwLCA5ODMyMjEsIDIwMjcsIDY2MjMwLCAxMDA4MCwgNzgxMzYsIDEwNDAzLCA3MDg2OSwgCi0gICAgNDY0MCwgNjQ3MTMsIDEwMjI0LCAxMjA0MjksIDExMTgzLCAxMjA0MzEsIDEyMDQzMCwgMCwgMTI4MzUxLCAxMjc0ODksIAotICAgIDEyNzEzOCwgMCwgOTI0OTksIDAsIDExOTA5NCwgNzQyMTMsIDc4MjQsIDAsIDE5NDY0OCwgNDEyNzQsIDU3NzgsIDYzMDIsIAotICAgIDEyMTQzMiwgMCwgMTI2ODAsIDExOTEzMCwgMTQxNywgNjcyNDIsIDkzMDQxLCA5NDUyLCAxMjgxNTMsIDc0MzkzLCAxMTU1MiwgCi0gICAgMCwgMTI3ODU1LCAxMjgyMTcsIDY1MzkxLCAxMjg2MTQsIDEwMTcyLCA2NTQ1MywgNjM3ODksIDQxMjY0LCA3ODY1OCwgCi0gICAgNjQyNiwgNDY0MSwgOTE3OSwgNjQ4MTksIDU1Mjc4LCA0MTI1NSwgNDIwMzYsIDQxNDY5LCA0MTI2OSwgMTIwNDEyLCAKLSAgICA0MTI2NywgNDY0NiwgNjc3NTksIDg2NSwgNDIwMzQsIDc4Mjc0LCA3ODI3MywgNDY0NSwgNDIwMzMsIDc4MjcwLCAxMjc5ODIsIAotICAgIDk4MzE3MiwgNDM5NDgsIDE5NTEwMCwgNjg4NDAsIDc4Njc0LCAxNjU5LCA5MTksIDQyNzg0LCAxNjcxLCAxMjc4OTIsIAotICAgIDYwNjksIDkyMTksIDEyODU1OCwgMTY2MSwgMTMxMjAsIDYzNzg0LCA2OTgxOSwgMTAxNDAsIDk3MTMsIDExOTE0MywgMCwgCi0gICAgNzE0NjIsIDk0MDUwLCAyMzA2LCAxMDQ4NSwgMTE4OTQzLCA2MDY4LCAxMDYxMiwgMTk1MDk5LCAxMTk1NjcsIDY3NzA1LCAKLSAgICA5MjU2MSwgNDE0NjIsIDEyMDQ3MCwgMTk1MDc5LCA1NDIyLCAxMjgyMzQsIDk4MzYyOSwgMTI4NjExLCA4MzQ3NCwgMTAyMjksIAotICAgIDEwNjM1LCA4MjYsIDgzNDc1LCAxOTUwODIsIDEyNzAwMywgMTk1MDg0LCA3MTQ1NSwgNjQ4MywgOTIyMTEsIDE4MDgsIAotICAgIDc4NDgsIDExMzc4OCwgODEwMCwgNzgyMjcsIDcxMTk4LCA3ODY3MCwgMTMzMDEsIDc4NjY3LCA5NjY3LCA3ODY2NSwgCi0gICAgNjc3MDQsIDk4MzkyMSwgMTEwMDMsIDk5MDQsIDgzNDEwLCA5ODM5MTksIDEyMDY5MCwgOTE0NCwgMTA5MjEsIDkyOTkyLCAKLSAgICA3ODY4MCwgOTg0MCwgNjUxMzEsIDc4Njc4LCA3MTA5MiwgMTAzMTMsIDgzNDA4LCA4MzUwMCwgNjQzMjAsIDEwMjY1LCAKLSAgICA2NzI1MiwgMTA5NjIsIDY2OTA0LCA0MzAwOCwgODk0NSwgNzg2ODMsIDEyMDk5NSwgNDEsIDE5NTA3MiwgMTc5MiwgCi0gICAgMTIwNTE1LCAxOTUwNzMsIDg2NTUsIDY4MjU0LCA5MjU0NCwgNzc5NTEsIDEyMDY2LCA2NzI1OCwgMzg1LCA0MTUyLCAyNTg1LCAKLSAgICAxMjc4MDQsIDExOTA2OCwgMzEyNiwgOTE3ODUyLCA3Mzk4MywgMTA5NTcsIDEyNzAzNywgMTExNjAsIDExOTExNiwgCi0gICAgMTI3ODczLCAxMzE1NywgMCwgMTI4MDI0LCAzNTcwLCAxMjkxODcsIDc0NDMsIDExODgwNCwgNDQwMDYsIDY5OTcsIDY4MDA0LCAKLSAgICAxMjY2MzEsIDc4NzksIDg3MzksIDExMDc1LCA5MTc5NzEsIDY1MjE2LCA3MDE5NiwgNjk3OTUsIDI1OTMsIDg0NjMsIDc4MTAsIAotICAgIDEyODU0MywgNzgzOSwgOTI2MTIsIDc4ODA2LCA3NTA2NCwgOTY5MSwgNDQxMSwgNzg4MDIsIDEyMTIxOSwgMTIwODU0LCAKLSAgICA0MzQ0MiwgNjk4NTEsIDY1MjU0LCAxMDA2NiwgOTgzODg5LCA3MjQxOSwgMCwgMCwgMTMwNjEsIDgwMTYsIDc4Njg3LCAKLSAgICAxOTkzMiwgNjQ4MzEsIDAsIDExMzY4NCwgMTIzOTAsIDExOTE3MSwgMTYzNCwgNjgxMTUsIDY1MDcwLCAxMTA1NiwgCi0gICAgOTgzNTc0LCAxMTk5MjUsIDk4MzA5OSwgNDExNjUsIDExMzI4LCAxMjQ1MCwgOTgzODExLCA0MTE2NiwgMCwgMTI0NTYsIAotICAgIDExOTkxNCwgMTcxLCA1OTQxLCAxMjQ1MiwgMTk0NzA5LCAxMjQ1OCwgMTI1MzEsIDc4Nzc5LCA0MzAxMywgNjM4MDAsIAotICAgIDc0MTYyLCAxMTkzMjAsIDEyMDQ4MywgOTk2OSwgMTIwNzY3LCAxMjQ1NCwgNjM4MDYsIDQyMTMyLCAxMjA2MywgNzg0MjUsIAotICAgIDc4NDI0LCAzMjMwLCA2ODc3MywgOTgzNDk3LCA3NTAyNSwgNTIwOSwgMjk3LCA1ODEwLCA4NTIyLCA4NDE1LCAxMTk5MzcsIAotICAgIDc4NDI5LCA3ODQyOCwgNzA3NywgMjQ5NywgMTI4NjUxLCA5NjAsIDc0MTU2LCA2OTgxLCA5MjM3NCwgMTI5MzgsIDQyOTIsIAotICAgIDc4ODkzLCA3NDgxNSwgMTA1MTIsIDAsIDc0ODE0LCA3ODg3NSwgMTI3NTA1LCA3ODg3NiwgMjUwMywgNzM3NzgsIDE3NjIsIAotICAgIDY5Nzk0LCAyNDk1LCA3NDkxMSwgNTg0NCwgNjgwMzEsIDExODgzOCwgMTI3OTQ3LCAxMjY1NCwgNDY2MywgMTg5OSwgCi0gICAgNzg4NzcsIDI1MDcsIDY0MTIxLCA4NzI2LCA2NTU5NCwgOTI5NzIsIDAsIDExOTAwMCwgODg5MiwgNzg4NzIsIDkyMzM5LCAKLSAgICA3MTIzMiwgOTgzMDczLCA1NzgyLCA0MjAsIDEyNzM0OCwgOTE3ODcxLCA0Mzc5NiwgMTA3OTcsIDYzNzk0LCAwLCAxMjg1MzMsIAotICAgIDY0ODE0LCA2Mzc5NiwgNDM4NjEsIDAsIDY2NTgxLCAxMTkyMDQsIDQxNjA4LCAxMjg0NzksIDEyMTE0NCwgNjM3OTIsIAotICAgIDQ2NTksIDEyMDc4OCwgNzc5NzEsIDQzNjc2LCA3NDk0NCwgNjk2NzMsIDEyMTAyOSwgMTExMjksIDkyOTI5LCAzMjksIAotICAgIDc3OTY4LCA5MjcwNywgODM0OTYsIDczOTksIDAsIDQxMTg4LCAxMzI0NCwgNjc2OTIsIDQyMTY3LCA3NDM1LCA3ODE5MywgCi0gICAgNTM4MCwgMTE5MDg2LCA2OTIyNSwgMTE1NSwgMTEzNjUsIDQzMTI2LCA3Nzk3MiwgMCwgNjU2ODQsIDAsIDU2MDEsIDY1MTkyLCAKLSAgICA0Mjc2NSwgNjM3NTIsIDAsIDc5ODcsIDY5Njc2LCAxMTcyLCA2OTc5OSwgNjc4NiwgNDM2MDEsIDEyMDQ3NiwgNzQxMjYsIAotICAgIDU2MDMsIDAsIDQ0NzMsIDEyMTA4NSwgNzI0MjYsIDEyNDk0NywgNjUzNDcsIDY1MzQ2LCA2NTM0NSwgMTI4NTQ4LCAKLSAgICAxMTkyMTMsIDUzNDcsIDY5ODAyLCA5MTc5NzMsIDczODY4LCA3MDg1MiwgMTA1ODgsIDAsIDAsIDYzNzU1LCAxMjgyNzEsIAotICAgIDUzNDMsIDc4NDIyLCAxMjA2NjEsIDQ1NTUsIDUzNDEsIDgzNDU5LCA3MDA3MSwgNzQ5MTYsIDUzNTEsIDc4Njc1LCA0MzEwNCwgCi0gICAgNjUyNDQsIDEyMTM2NSwgNjQ1NDEsIDQyNTE5LCA2ODEzNCwgMTI4OTE2LCAxMjY5ODYsIDc0NzY1LCAxMjg5NzksIAotICAgIDEyNzUxMCwgNjYzOCwgMCwgNjUxMTMsIDI3MSwgNzQxODAsIDY1MzcwLCA4ODM1LCA2NTM2OCwgMTI2NTMsIDY1MzY2LCAKLSAgICA0MjE3MiwgNDEwODYsIDY1MzYzLCA2NTM2MiwgNjUzNjEsIDExOTEyLCA0MzQxMCwgMTEzMjMsIDY1MzU3LCAxMTgwMCwgCi0gICAgNjUzNTUsIDUzNDUsIDExMTAzLCA2NTM1MiwgNjUzNTEsIDc2MSwgNjUzNDksIDE5OTU5LCA2OTcxOCwgNjM4NTYsIAotICAgIDEyNjYzNSwgMjQyMywgNzQ1MTgsIDY0NjQ3LCA3Nzk1OSwgMTE5NTcsIDQ2OTksIDEyNjU3MywgMTI4NjcwLCA5ODM3ODcsIAotICAgIDAsIDY0NjA1LCAwLCA2ODA3NCwgOTgzOTc3LCA0OTE2LCAxMjg1NjgsIDM4MCwgMTA5NTgsIDY2NTYzLCA3Nzk1NSwgCi0gICAgNjk3NzMsIDk3NzMsIDEzMTY3LCAxMjkxOCwgNDEwOTYsIDczOTgwLCA2OTI0NSwgNzgyNTQsIDgzNDUwLCAxMDY4NCwgMCwgCi0gICAgMTI1MDYzLCA5MjkwNiwgNzk0NiwgMTI1NDEsIDgxODIsIDY3NTg2LCA2OTc4MCwgMCwgMTI4MjA3LCAwLCA5ODM2NTQsIAotICAgIDkwMDUsIDEyMjUsIDY2MzAsIDAsIDAsIDExODg1NCwgNjgwMTEsIDg4NDcsIDkyMzcxLCA2NTg3NiwgNTUzNSwgODMyOSwgCi0gICAgNzQ1OTAsIDEyNTAzNiwgOTI2MDksIDAsIDY2ODc0LCAzMTI3LCAyNTk1LCA2NTcxMywgNDIwMTMsIDEyMTIxMSwgNTYwNywgCi0gICAgNDEwODksIDEyODYyNiwgMCwgNzAyOTIsIDI2NjUsIDExMzA0LCA0Mzc1MSwgNzQyMDAsIDQ5NzAsIDg3NjQsIDEyMDQ1OSwgCi0gICAgODkzNCwgOTI3MjYsIDQxNTY2LCA0NDkyLCA2NzI3MSwgNjUwMTEsIDQxMDkwLCAwLCA4MzQxNywgMTE4OCwgNzI1NCwgCi0gICAgMTEwMCwgMCwgNjcyNzAsIDQxMDgxLCAyOTEyLCAxMTc0OSwgNjcyODIsIDY3MjgxLCA2NzI4MCwgMzU3MiwgMTAwMjMsIAotICAgIDQ5NTksIDEzMDc5LCAwLCA2NzI3NSwgOTcyOSwgMTI1MTEwLCAxMjEwNDIsIDY3Mjc4LCA0MzM2MSwgMTI3MzU1LCA2NzI3NiwgCi0gICAgMTE4MDMsIDc5OTYsIDk5MDcsIDQxNDUwLCAxMzMwNCwgODMzOTIsIDgzMzY5LCA0MTQ1MSwgODMzNzAsIDExMDk1LCA4MjczLCAKLSAgICA3NDMyMiwgMzQ1MSwgNzAyOTEsIDk3MiwgNDE0NTMsIDY4MTY0LCAxMTkzMjcsIDczODgzLCA2ODAyMiwgNzM5NDUsIAotICAgIDgzMzYzLCAyMjg4LCAxOTk1NSwgOTUzOCwgODMzNjYsIDY5ODA3LCAwLCAxMjkwOTUsIDAsIDgzMzgxLCAxMTM5NiwgCi0gICAgODMzODUsIDExMDE5LCAwLCAxMjg0MTYsIDEyMTIwNSwgNjgwMjAsIDQxMDc4LCA3MTM2NSwgMjYxLCA1OTI3LCA3NzkxLCAKLSAgICAxMjg2ODEsIDczNjIsIDAsIDEwNjk2LCA3MDEyNCwgNjA3MywgOTgzOCwgMTE4OTIwLCAwLCA2MDc1LCA5Mzk5NSwgMjgyLCAKLSAgICAxMTkxNzgsIDY0MzcsIDY4ODMwLCAxMjE0NTksIDk4MDEsIDY2Mzk5LCA3NDE3NywgMCwgOTE3OTU5LCAzNDc0LCA2NzI4NywgCi0gICAgMCwgNjcyODYsIDYwODEsIDgzNDY5LCA3ODg3NCwgNjcyODksIDY3MjgzLCA4MzQ3MSwgNzAwMDIsIDQyOTMwLCAwLCAKLSAgICA5MzAxMywgODc1MSwgMTE0OTksIDY3Mjk3LCA3ODE2LCAxMjYzNiwgNDY2NSwgMTI2MjgsIDQ2NzAsIDY3Mjk4LCAxMjAyNzIsIAotICAgIDY4MDE3LCA5NjQyLCAxMDkxMiwgOTU4LCA2NzI5MywgMTEzODcsIDY3MjkxLCA0NjY2LCA3MDc5MiwgNDkxNSwgNjc3MTUsIAotICAgIDQ2NjksIDAsIDY4MDk5LCAxMzI4NywgNDY2NCwgMTA4MzYsIDEyMDU1MCwgNzUwNTMsIDY5Nzc1LCAwLCA0MzU5NSwgNzQ1MCwgCi0gICAgMCwgOTE3ODc1LCA4NjY0LCA5Njk3LCAzNjA2LCA4MzQ0NiwgOTgzOTc4LCA5MTc4NzQsIDY0ODE1LCAxMDYzLCAxMjAyNTAsIAotICAgIDY3MzEyLCA5NzcyLCA3MjU1LCA4ODg2LCAxMzg5LCAxMjc5MzIsIDEyMDI1NywgMTIwMjU4LCAxMjAyNTksIDEyOTQxLCAKLSAgICA0MjY2MSwgODM0MzgsIDEyMDI1NSwgMTIwMjU2LCAxMjMwMSwgNjc4MzYsIDY5ODIwLCA0MTEwMiwgNjQ0MjgsIDEyMDI2MiwgCi0gICAgNjY2MDIsIDEyMDI2NCwgMTAxNywgNjY2MDAsIDUyMywgNTA1LCAxNDQ3LCA3NDQzNiwgMCwgNzAzNDAsIDgzNDM3LCA4NjA4LCAKLSAgICA0Mjc4OSwgMTIwNjEzLCA4MzQzNiwgMCwgNzE5MDYsIDExMzA3LCA2NjcwNywgNjczMDEsIDY3MzAwLCAxMTc0NSwgNzkxOSwgCi0gICAgNjczMDQsIDE2NDEsIDAsIDAsIDg5NjYsIDEyODkwMCwgNzQ5MTksIDU5MDgsIDcxODcwLCA2Nzg1MywgNjc0NCwgNjczMTAsIAotICAgIDE2OTksIDY3MzA4LCA2NzMwNywgNjczMTQsIDY3MzEzLCA2MzA2LCAxMDE2OSwgNzEzMjQsIDExOTI1MSwgMTAwNjgsIAotICAgIDM3NjYsIDIzODksIDY3MzA1LCAxMjA0NTUsIDY2MTEsIDI1NywgNDMxNzAsIDEzMTUzLCAwLCA0MjM4NiwgOTgzODE1LCAKLSAgICA5NDM2LCAyNTk5LCAwLCA2NDk2LCA5NDQ5LCA1OTMwLCAxMTQ3NiwgMTEwMzMsIDExNDQ3LCAxMDU0MSwgNTYyMiwgCi0gICAgMTIwNDM2LCA4NDc3LCAzNzYwLCAxNzE4LCA5NDQyLCA2NjQzMywgMzc3NiwgOTE3ODM3LCA0MTQzNSwgNDM1MiwgNjczMjQsIAotICAgIDI0MzUsIDcxMjExLCA1NjIxLCAxMjAzODUsIDQyMDEsIDM3NzgsIDQyMDMsIDQyMDIsIDQyMDUsIDQyMDQsIDEyMDQ0NywgCi0gICAgMzc2OCwgNDE3NzQsIDc2NSwgNDE0NDAsIDM3NjQsIDg0NzMsIDYzNzMsIDg0NjksIDEyMDQzOCwgMTI5NDcsIDQ1NjQsIAotICAgIDExOTA0OSwgNzQ2MjMsIDc0MjcxLCA3Mzc1MywgODM3NCwgMTI3MjAxLCAwLCA2ODI5LCA1MjI1LCA2NjkwMSwgMTI3Mzg1LCAKLSAgICAwLCAwLCAxMTk2MTUsIDY3MzE5LCA2NzMxOCwgMzE2MiwgNDM1MDcsIDExNzcxLCA2NzMyMiwgNjczMjEsIDY3MzIwLCAKLSAgICA0MjYxNCwgNTM1MywgNTYyNSwgNzQxNzksIDY3MzE1LCAwLCAxMDEwLCA2NDU3MiwgNDE3ODAsIDQyNjIzLCA2NDI3NywgCi0gICAgNjk5NDIsIDY5NTIsIDY3MzI5LCA2NzMyOCwgNjczMjcsIDI1OTAsIDU2MjksIDY1NTUyLCA3NTUxLCAxMDMyNSwgNTYzMiwgCi0gICAgMTA0NzEsIDEyMDAzOCwgMTIwMDI3LCAxMjAwMjgsIDEyMDAyNSwgNTYyOCwgMTIwMDMxLCA5NzAsIDEyMDAyOSwgNDc3MiwgCi0gICAgMjQwMCwgNTYyNywgMTIwMDE3LCA2NzMzMCwgMTIwMDIzLCA2NDI3NSwgMTIwMDIxLCA4Nzg2LCAxMTM2OTMsIDIwMywgCi0gICAgNzQzNjUsIDAsIDAsIDY5OTg1LCA3ODM1MCwgMTEzNzAzLCA2NDM3OCwgNDIwNTQsIDEyODU3NSwgMCwgNTU0LCAxMTk2NDksIAotICAgIDExMzU4LCA3MTE3MiwgMTIxODIsIDQyMDQ4LCAxMTA2NSwgMTI1MTE0LCA3Mzg5MSwgODM0MjMsIDgzMDE5LCA1Njk0LCAKLSAgICA3Njg5LCA2OTc5OCwgOTMyMywgNDMyNSwgMzA0NywgMTAzMTcsIDE3NSwgMTIwOTYyLCA5MzAyOSwgNjk3NjQsIDAsIDAsIAotICAgIDEyNDMsIDQyMTU0LCA1NDMxLCA2NjUyLCA5MTc1NjEsIDY3NzUzLCA0MzY1MSwgMTI5MTI5LCA2ODExOCwgNjgwOTMsIAotICAgIDExMjksIDEyNjU3NCwgMCwgNjU5MDAsIDE5ODYsIDc4NDYsIDc4ODA0LCA4NjYxLCA3NTA1OCwgNjUyNTUsIDkzOTkyLCAKLSAgICAzODQ1LCA0NDkwLCAxMTg5NjksIDY2NDksIDc0MTM2LCAxNDU2LCA3NTMwLCAxMTk3NywgNzI0OSwgODM2NiwgMCwgNzc1NiwgCi0gICAgMTIzNDIsIDEyMDY5NywgNTEsIDQxNTE2LCAwLCA4NTcwLCA5NTY4LCA3MTMxOCwgNDU2LCA3MDI2LCA4MTQ1LCAxMTY4LCAKLSAgICA5MjUxLCA5MDgyLCAxMTk5NjQsIDY0MDU1LCA0Mjc4MSwgMzg2NiwgMTIzMjMsIDQxNTEyLCA3MzgwNSwgNjgxMjEsIAotICAgIDkxNzg1MCwgNDE0OTQsIDkyMzE2LCA0NjYwLCA2NzExNCwgMTA0MDUsIDEyNzE5NSwgNzg4MDMsIDAsIDEyOTE3NiwgCi0gICAgNDIwNDAsIDczOTE4LCAxMTk2MjcsIDc5NDQsIDQxNDU0LCAxMjYwNSwgMCwgNDIyMDUsIDQxNDU1LCAyMzYsIDY0MDUxLCAKLSAgICA3ODg2NywgODIxNCwgODM0MjEsIDExMzc4NCwgMTIwMDM3LCA0MTQ1NywgOTgzOTcwLCAxMTk1ODksIDE5NjksIDIzODQsIAotICAgIDgwOTcsIDEyODAxOSwgNzQxMywgNjgwMTIsIDc4MDI5LCA4NzY2LCA0Mzg2NCwgNzgwNzksIDU4NTQsIDEyNTAwMCwgCi0gICAgMTA1ODMsIDAsIDExOTk4OSwgMTI3NTU2LCAxMDQxNiwgNjgwNzAsIDM4NzIsIDgzNDI0LCA5ODM4MzksIDg0MjksIAotICAgIDEyMTIzMCwgMTE4ODA2LCAyODM4LCA2NDI5LCAwLCA4MzQyNiwgMCwgMTI4NDc4LCAwLCAxOTQ2MjAsIDk0MDA1LCAxMTA5NiwgCi0gICAgODM0MjIsIDEwNTUzLCAxNjYyLCA4NDgzLCAxMjAzOTYsIDQzNjA1LCA1ODkyLCA0MzQxOCwgNjc4MTksIDczNzQyLCA2NiwgCi0gICAgNjUsIDY4LCA2NywgNzAsIDY5LCA3MiwgNzEsIDc0LCA3MywgNzYsIDc1LCA3OCwgNzcsIDgwLCA3OSwgODIsIDgxLCA4NCwgCi0gICAgODMsIDg2LCA4NSwgODgsIDg3LCA5MCwgODksIDExOTg2MiwgMTAzNTcsIDczODUsIDgxNzAsIDE3MDQsIDg1NTYsIAotICAgIDkxNzk3NSwgOTY1OSwgMCwgMCwgMCwgOTU1NiwgMCwgNDUwMywgMTEzNTMsIDk2NDcsIDEyNTAxNSwgNzgxODUsIDEyODk1OSwgCi0gICAgMCwgNzE0MzcsIDc4ODg2LCAwLCAwLCA3NDIyOSwgNjY1OTMsIDY0MzgsIDgzMzY0LCA5MTA5LCA3ODg4MiwgMTI4OSwgCi0gICAgNjQ1OTksIDExODkxNSwgNjgwMDksIDEyODMwMiwgNjU1MDcsIDI0NDcsIDExOTkxMSwgMTI4Njk0LCAxMjgwNDIsIAotICAgIDEyNjU0NSwgNjY1ODksIDAsIDYzMzQsIDEyODM2OSwgMCwgMTk5MzcsIDkxNzc5MywgMTMyMiwgOTIzNTksIDU2NzUsIDI1NCwgCi0gICAgMCwgMCwgNjk2ODYsIDQyNDI1LCA4OTE4LCA2NDAwMywgNTcxNiwgNDIzMTIsIDAsIDE5NDY5MiwgNjk3MiwgNDI4MjYsIAotICAgIDc0NDA5LCA0MjQ2NCwgMTIwNTY3LCA2Njg5OSwgNjcxNTUsIDc0Nzk2LCA2NDQwMCwgNjQ2OTMsIDEyODgwNSwgNjc2ODcsIAotICAgIDY1NDI5LCA5NTE1LCA0NDM1LCAwLCA0MjUyMiwgMCwgNjgwMDgsIDExNzg1LCA3NDEyLCA0Mzg2NywgNDE5NzgsIDE0MTIsIAotICAgIDQ1OTQsIDEzOTEsIDEwNTM2LCA4MDY3LCA5OTAxLCA3MTAzLCAxMjgyOTMsIDcxMDIsIDcxNDI4LCAxMjA3NDgsIDMxNDAsIAotICAgIDEyNzI3NiwgNzk2MCwgNDMyNzEsIDEyMTA5OSwgMTI1MTgsIDEwOTA5LCAxMjc1MDgsIDE0MjgsIDEyNDcyLCA2NzI1NCwgCi0gICAgNjcyNTMsIDc2OTksIDEyMzkzLCA2NzI1NywgMCwgNjcyNTYsIDY3MjU1LCA4MjIzLCAwLCA0MjYxLCAxMjE0NjAsIAotICAgIDEyMDkxMCwgNzQzMDgsIDk4MzgyNywgMTEzNzEyLCA2NzE1MywgOTgzNTcxLCAxMjgwNDYsIDQzNDE5LCA5ODM0NzEsIAotICAgIDY0NTU0LCAxMDU3NCwgMzg3OCwgNjc2OTEsIDQyMzUyLCAxNzUyLCA3Mzc4NSwgMTI4MTcxLCA0MjUwNiwgMTI4NTQxLCAKLSAgICAxMDE5OSwgOTE3ODY1LCAxMjUxNDIsIDY4MDIxLCA2NTkxOSwgMCwgNjY5NSwgNzIwLCAzMjQsIDAsIDEyOTAzNSwgNDM0MDYsIAotICAgIDk4MzczNiwgMTQ2NCwgNDA5ODUsIDAsIDc5NzQsIDAsIDQzNDc0LCA2ODA4MiwgNjQ0ODgsIDEyODk3NywgMTIwOTUxLCAKLSAgICA2NDA0MSwgNzQ3ODcsIDAsIDc4ODY1LCA5MjI1OCwgNjU1OTcsIDEyMTQxNiwgNzg4NjMsIDAsIDEzMDIsIDY2Mjg4LCAKLSAgICA3ODg2MSwgMTE5MTM0LCAwLCA2NzE1MiwgNTIwNCwgNzQ3NzQsIDQzNDA0LCAxMTgzNSwgMTIwOTIzLCAzOTk1LCA2ODM2MCwgCi0gICAgNjU2MDgsIDM3MTQsIDkyMTkwLCAxMjAwMjYsIDY3MjYyLCAxMDk5OSwgMTE3NTAsIDY3MjU5LCA0MzI1MSwgNjcyNjQsIAotICAgIDQzMzAxLCAwLCAxMjA1NTcsIDgxMzAsIDg2NzIsIDEwODQ1LCAxMTk2NCwgMTIxMjY4LCAxMjgwMTQsIDkyMTczLCAwLCAKLSAgICA2ODQ1NSwgNDI4NjMsIDczODM5LCAxMjc1MjksIDAsIDY3NzAwLCA5MTc4MTIsIDExMzcwMSwgNDM2NDUsIDQ2OCwgNjEyLCAKLSAgICAwLCA2NDQwMSwgNjY0NDgsIDY4Mzc2LCAwLCAxNjc0LCAwLCA1ODIzLCAxMjg2MjUsIDEyMjgwLCA3MDM2NywgNTQwLCAKLSAgICA3NDU2NCwgMTE5MDE3LCA2NjQyMiwgODQzMiwgNzg4NzMsIDExMDczLCAwLCA2NDMxNiwgMCwgMTIxMDcwLCA4MjAsIAorICAgIDEyMTE4MCwgMTI4ODY2LCA0MzQzMSwgMTI3MDk3LCA5MjQxMywgODcxNSwgOTgzMzk4LCA0MTE3OSwgOTgzMzU4LCA0MzMxMywgCisgICAgMTIwMjMwLCA0MTE3NiwgMTAxMDA3LCA5OTQsIDEwMDQ0OCwgODQ1MiwgNzc5NzMsIDczOTY2LCA2Njg5MCwgNzA4MTIsIAorICAgIDU5MjEsIDEwMDgwNCwgMjU5NywgNjY3NzYsIDU5MjIsIDExODkwMywgNjY4NzMsIDQxODYsIDkyNTMxLCA3Mzc0MSwgCisgICAgMTI3MTA1LCA2NzE4LCAxMjcwMjksIDQ0MDYsIDc0NjAxLCA4NDgwLCA5MTkyLCA5NzQ3LCAxMjEwNDAsIDQ0MTMsIDkyMTk2LCAKKyAgICA0MjI2OCwgMzE5OCwgNTkyNCwgNTkyMCwgOTI0NjksIDY5MjEsIDc4MDgxLCA3NDAwNywgNDI4NjksIDg0MTgsIDExNjgxLCAKKyAgICA0MzE2OSwgMTAxNzYsIDk4MzY0MCwgNzQyLCA3NDg4MSwgMjg5MywgMTA3NzIsIDY1Mjc2LCA1OTM3LCAxOTE0LCAyNTUzLCAKKyAgICAxMTY4MiwgNjc1NiwgMTI1MTA0LCAxMjExMjYsIDgzNjMsIDAsIDI5OTMsIDc3NzIsIDM5MTYsIDQzMDEsIDEwMDUxNywgCisgICAgMTE0MSwgNDI0MDcsIDc0MTcsIDcxOCwgNzU3MiwgOTczLCAxMDA1MDAsIDEyMDcxOCwgMzIzNSwgMjQxNSwgNDMxNjQsIAorICAgIDEyNTA5OSwgODAxOCwgNDIzMzMsIDc0NzU2LCAxMDY3NSwgNjkzNywgNDI0ODYsIDQzMzgxLCA2NTM5MCwgMTAwNjcsIAorICAgIDEwMDg2OCwgMTIwMiwgMTAwNTU3LCAxMjgzNjQsIDY1ODYzLCAxMTkyNTAsIDY4NDg0LCA5NDAxMywgNzgxODIsIDY0NTQyLCAKKyAgICAzMjYwLCA3MzgyOSwgNjUzODgsIDk5NDUsIDg0MTksIDc4MDQyLCA2NzM4LCAxMjI4ODIsIDQzNjgxLCA2OTcyOCwgMjA1OSwgCisgICAgOTI0MjIsIDEwMDUwMiwgNTUyMzcsIDE0MzEsIDEwMDUwMywgNjY1NjUsIDEwODIxLCAxMDA1MDgsIDEyODA0LCAxMDA1MTAsIAorICAgIDgyMjksIDEyMzUsIDMzMDcsIDExNDcyLCA3ODA4OSwgNzgxODQsIDQ1NDQsIDcxMjI4LCAxOTQ2MjYsIDEyOTE4OCwgMTc0MCwgCisgICAgNzgwOTcsIDg3NTgsIDk4NSwgMTI4NzIsIDY0NTExLCA3ODA5NCwgMTIwNjgsIDc4MTAyLCA3MTIyNiwgMTAxNDEsIDc0OTIyLCAKKyAgICA2Mzc2MSwgODc4NSwgNDQ3NiwgNjUwNzEsIDYzNzYzLCAxMjY1NSwgODkwNywgOTE0NywgNzgxMDYsIDc4MTAzLCA3ODEwNCwgCisgICAgMTIwODk4LCAxMTk1NzIsIDEwNjY1LCA2NDYxNiwgNDE1NzIsIDEyNzk3OSwgMTI3MTYwLCA5ODMxMjcsIDQxNTczLCAKKyAgICA4MzE2MCwgMzkzMSwgMTIwMjk1LCA3NDE0MywgODMxNTYsIDgzMTU3LCA4MzE1OCwgNzg0NjAsIDExOTgyLCA5ODM0ODMsIAorICAgIDgzMDY3LCAxMjgzODEsIDkyNzEyLCA2NDQ4NCwgMTE5MjY2LCA0MTE2NywgOTgzMzY2LCA0MTczNSwgOTQwMTksIDcxNywgCisgICAgMTA3NTQsIDcyNzQwLCA4MzE2OSwgNzI0MTMsIDgzMTYzLCA2Mzc2NywgODMxNjUsIDE3ODAsIDY5MzYsIDAsIDgzMTYxLCAKKyAgICA4MTksIDEwNjExLCA5Njk0LCAxMjUyMjgsIDcxNDc0LCAwLCAxMjc4NzEsIDEyOTA2OSwgODM0MywgODM0MiwgODM0NSwgCisgICAgODM0NCwgNjU3OCwgNzAwOSwgNzUyMywgNjkyMiwgODM0OCwgODM0NywgNzUyNSwgMzM0NiwgODMzOSwgMTI4MTY1LCAKKyAgICA3MjcwNSwgNTc1LCAyNjgsIDc4MTExLCA4NTYzLCA1NzU0LCAxMjAzNDMsIDQxNTQxLCA2NTU2NSwgODMzNiwgNTkzNiwgCisgICAgNzI5MCwgNzgxMTcsIDgzMzcsIDgzNDEsIDMwOCwgMTEzODgsIDc1MjIsIDgzMTUxLCA3ODEyMywgNjU0NjYsIDExMDkwLCAKKyAgICA2OTUzLCAxMjUyNDAsIDgzMzc1LCA3NDk3MywgNzgxMzIsIDU5MjYsIDY4MjUwLCA3ODEzMCwgNzgxMjYsIDc4MTI3LCAKKyAgICA3ODEyNCwgNzgxMjUsIDkwMzgsIDc4ODcsIDQzNDU2LCA3ODMwLCAxMTY1MSwgMTMwOTMsIDY0MDAyLCA5ODM1NTksIAorICAgIDY1NzQyLCAxMjg3NCwgMTAwNDczLCAxMTU5MCwgMTAwNDc1LCA3NDA0OCwgNjczNzksIDg1OTUsIDk4MzUsIDEwMDQ1NiwgCisgICAgNDM3MDMsIDEzMDk3LCAxMjcxOTcsIDY0NjQzLCAxMzI4MywgMTI2OTcsIDc0OTc1LCAxMjM4MSwgMzQ4OCwgNTkzMywgCisgICAgMTAwMzMsIDcxMTAxLCA2NjI0MSwgNjU1NzAsIDc4MzM2LCAxMjI5NywgNzEyMTIsIDE5NTUsIDEyNzk3MCwgNTM0OSwgCisgICAgNDI1MzgsIDAsIDEyNDkzMiwgNzQxMSwgOTQ2MiwgMTI4MTUwLCAxMDA0NTMsIDEwMDQ1MiwgNDM5MjAsIDQyNzM2LCAKKyAgICA3MDc0NywgNTc1NiwgMTI4MzI0LCA3NjM4LCA0MTY0MiwgNDI3NjQsIDEyMDQ0NCwgNDMxMDksIDc2MzcsIDU3NTIsIAorICAgIDExMjEzLCA4MzQ4MSwgNzM4MzIsIDEwMDQ2MywgODM0ODYsIDEwMDQ2NSwgNzgzMzQsIDEyMTAzNCwgNzYzNiwgNjUxNzEsIAorICAgIDkxMjQsIDkxNzk1NywgNzg4OTIsIDEyMDc5OCwgMjkxLCAwLCA4MzQ4OCwgMjAyNywgNjYyMzAsIDEwMDgwLCA3ODEzNiwgCisgICAgMTA0MDMsIDcwODY5LCA0NjQwLCA2NDcxMywgMTAyMjQsIDEyMDQyOSwgMTExODMsIDEyMDQzMSwgMTIwNDMwLCA5ODMyMjMsIAorICAgIDEyODM1MSwgNzI4NDUsIDEyNzEzOCwgMCwgOTI0OTksIDAsIDExOTA5NCwgNzQyMTMsIDc4MjQsIDAsIDE5NDY0OCwgCisgICAgNDEyNzQsIDU3NzgsIDYzMDIsIDEwMDM2NywgMCwgMTI2ODAsIDExOTEzMCwgMTQxNywgNjcyNDIsIDkzMDQxLCA5NDUyLCAKKyAgICAxMjgxNTMsIDc0MzkzLCAxMTU1MiwgMCwgMTI3ODU1LCAxMjEzODAsIDY1MzkxLCAxMjg2MTQsIDEwMTcyLCA2NTQ1MywgCisgICAgNjM3ODksIDQxMjY0LCA3ODY1OCwgNjQyNiwgNDY0MSwgOTE3OSwgNjQ4MTksIDU1Mjc4LCA0MTI1NSwgNDIwMzYsIDQxNDY5LCAKKyAgICA0MTI2OSwgMTIwNDEyLCA0MTI2NywgNDY0NiwgNjc3NTksIDg2NSwgNDIwMzQsIDc4Mjc0LCA3ODI3MywgNDY0NSwgNDIwMzMsIAorICAgIDc4MjcwLCAxMjc5ODIsIDk4MzE3MiwgNDM5NDgsIDE5NTEwMCwgNjg4NDAsIDc4Njc0LCAxNjU5LCA5MTksIDQyNzg0LCAKKyAgICAxNjcxLCAxMjc4OTIsIDYwNjksIDkyMTksIDEwMDQ2MSwgMTY2MSwgMTMxMjAsIDYzNzg0LCA2OTgxOSwgMTAxNDAsIDk3MTMsIAorICAgIDExOTE0MywgOTgzMzU5LCA3MTQ2MiwgOTQwNTAsIDIzMDYsIDEwNDg1LCAxMTg5NDMsIDYwNjgsIDEwNjEyLCAxOTUwOTksIAorICAgIDExOTU2NywgNjc3MDUsIDkyNTYxLCA0MTQ2MiwgMTIwNDcwLCAxOTUwNzksIDU0MjIsIDEyODIzNCwgOTgzNjI5LCAKKyAgICAxMjc3NzAsIDgzNDc0LCAxMDIyOSwgMTA2MzUsIDgyNiwgODM0NzUsIDE5NTA4MiwgOTI2MDMsIDEyMTE0OSwgNzE0NTUsIAorICAgIDY0ODMsIDkyMjExLCAxODA4LCA3ODQ4LCAxMTM3ODgsIDgxMDAsIDc4MjI3LCA3MTE5OCwgNzg2NzAsIDEzMzAxLCA3ODY2NywgCisgICAgOTY2NywgNzg2NjUsIDY3NzA0LCA5ODM5MjEsIDExMDAzLCA5OTA0LCA4MzQxMCwgOTgzOTE5LCAxMjA2OTAsIDkxNDQsIAorICAgIDEwOTIxLCA5Mjk5MiwgNzg2ODAsIDk4NDAsIDY1MTMxLCA3ODY3OCwgNzEwOTIsIDEwMzEzLCA4MzQwOCwgODM1MDAsIAorICAgIDY0MzIwLCAxMDI2NSwgNjcyNTIsIDEwOTYyLCA2NjkwNCwgNDMwMDgsIDg5NDUsIDc4NjgzLCAxMjA5OTUsIDQxLCAKKyAgICAxOTQ4NjYsIDE3OTIsIDEyMDUxNSwgMTk1MDczLCA4NjU1LCA2ODI1NCwgOTI1NDQsIDc3OTUxLCAxMjA2NiwgNjcyNTgsIAorICAgIDM4NSwgNDE1MiwgMjU4NSwgMTI3ODA0LCAxMTkwNjgsIDMxMjYsIDkxNzg1MiwgNzM5ODMsIDEwOTU3LCAxMjcwMzcsIAorICAgIDExMTYwLCAxMTkxMTYsIDEyNzg3MywgMTMxNTcsIDk4MzY0NSwgMTI4MDI0LCAzNTcwLCAxMjkxODcsIDc0NDMsIDExODgwNCwgCisgICAgNDQwMDYsIDY5OTcsIDY4MDA0LCAxMjY2MzEsIDc4NzksIDg3MzksIDExMDc1LCAxOTUwNDYsIDY1MjE2LCA3MDE5NiwgCisgICAgNjk3OTUsIDI1OTMsIDg0NjMsIDc4MTAsIDEyODU0MywgNzgzOSwgOTI2MTIsIDc4ODA2LCA3NTA2NCwgOTY5MSwgNDQxMSwgCisgICAgNzEyNzYsIDcyODM3LCAxMjA4NTQsIDQzNDQyLCA2OTg1MSwgNjUyNTQsIDEwMDY2LCAxMjI4OTcsIDcyNDE5LCAxMjE0MTEsIAorICAgIDEyMDg4NiwgMTMwNjEsIDgwMTYsIDc4Njg3LCAxOTkzMiwgNjQ4MzEsIDE5NDk3NSwgMTEzNjg0LCAxMjM5MCwgMTE5MTcxLCAKKyAgICAxNjM0LCA2ODExNSwgNjUwNzAsIDExMDU2LCA5ODM1NzQsIDExOTkyNSwgOTgzMDk5LCA0MTE2NSwgMTEzMjgsIDEyNDUwLCAKKyAgICA5ODM4MTEsIDQxMTY2LCA5Mzk3MSwgMTI0NTYsIDExOTE5NCwgMTcxLCA1OTQxLCAxMjQ1MiwgMTk0NzA5LCAxMjQ1OCwgCisgICAgMTI1MzEsIDc4Nzc5LCA0MzAxMywgNjM4MDAsIDc0MTYyLCAxMTkzMjAsIDEyMDQ4MywgOTk2OSwgMTIwNzY3LCAxMjQ1NCwgCisgICAgNjM4MDYsIDQyMTMyLCAxMjA2MywgNzg0MjUsIDc4NDI0LCAzMjMwLCA2ODc3MywgMTI4NTk1LCA3NTAyNSwgNTIwOSwgMjk3LCAKKyAgICA1ODEwLCA4NTIyLCA4NDE1LCAxMTk5MzcsIDc4NDI5LCA3ODQyOCwgNzA3NywgMjQ5NywgMTI4NjUxLCA5NjAsIDc0MTU2LCAKKyAgICA2OTgxLCA5MjM3NCwgMTI5MzgsIDQyOTIsIDc4ODkzLCA3NDgxNSwgMTA1MTIsIDAsIDcyODY2LCA3ODg3NSwgNzgwNDksIAorICAgIDcyODQxLCAyNTAzLCA3Mzc3OCwgMTc2MiwgNjk3OTQsIDI0OTUsIDc0OTExLCA1ODQ0LCA2ODAzMSwgMTE4ODM4LCAKKyAgICAxMjc5NDcsIDEyNjU0LCA0NjYzLCAxODk5LCA3ODg3NywgMjUwNywgNjQxMjEsIDg3MjYsIDY1NTk0LCA5Mjk3MiwgCisgICAgMTIwNDI0LCA3MTI3MiwgODg5MiwgNzg4NzIsIDkyMzM5LCA3MTIzMiwgOTgzMDczLCA1NzgyLCA0MjAsIDEyNzM0OCwgCisgICAgOTE3ODcxLCA0Mzc5NiwgMTA3OTcsIDYzNzk0LCAxOTQ5NjcsIDEyNTIyMywgNjQ4MTQsIDYzNzk2LCA0Mzg2MSwgMCwgCisgICAgNjY1ODEsIDExOTIwNCwgNDE2MDgsIDEyODQ3OSwgMTIxMTQ0LCA2Mzc5MiwgNDY1OSwgMTIwNzg4LCA3Nzk3MSwgNDM2NzYsIAorICAgIDc0OTQ0LCA2OTY3MywgMTIxMDI5LCAxMTEyOSwgOTI5MjksIDMyOSwgNzc5NjgsIDkyNzA3LCA4MzQ5NiwgNzM5OSwgMCwgCisgICAgNDExODgsIDEzMjQ0LCA2NzY5MiwgNDIxNjcsIDc0MzUsIDc4MTkzLCA1MzgwLCAxMTkwODYsIDY5MjI1LCAxMTU1LCAKKyAgICAxMTM2NSwgNDMxMjYsIDc3OTcyLCAxMjA4NjIsIDY1Njg0LCAwLCA1NjAxLCA2NTE5MiwgNDI3NjUsIDYzNzUyLCAwLCAKKyAgICA3OTg3LCA2OTY3NiwgMTE3MiwgNjk3OTksIDY3ODYsIDQzNjAxLCAxMjA0NzYsIDc0MTI2LCA1NjAzLCAwLCA0NDczLCAKKyAgICAxMjEwODUsIDcyNDI2LCAxMjQ5NDcsIDY1MzQ3LCA2NTM0NiwgNjUzNDUsIDEyODU0OCwgNjY3NDEsIDUzNDcsIDY5ODAyLCAKKyAgICA5MTc5NzMsIDczODY4LCA3MDg1MiwgMTA1ODgsIDAsIDEyODQyMCwgNjM3NTUsIDEyNjY0MywgNTM0MywgNzg0MjIsIAorICAgIDEyMDY2MSwgNDU1NSwgNTM0MSwgODM0NTksIDcwMDcxLCA3NDkxNiwgNTM1MSwgNzg2NzUsIDQzMTA0LCA2NTI0NCwgCisgICAgMTIxMzY1LCA2NDU0MSwgNDI1MTksIDY4MTM0LCAxMjg5MTYsIDEyNjk4NiwgNzQ3NjUsIDY2Nzg1LCAxMjc1MTAsIDY2MzgsIAorICAgIDEyOTM2MywgNjUxMTMsIDI3MSwgNzQxODAsIDY1MzcwLCA4ODM1LCA2NTM2OCwgMTI2NTMsIDY1MzY2LCA0MjE3MiwgCisgICAgNDEwODYsIDY1MzYzLCA2NTM2MiwgNjUzNjEsIDExOTEyLCA0MzQxMCwgMTEzMjMsIDY1MzU3LCAxMTgwMCwgNjUzNTUsIAorICAgIDUzNDUsIDExMTAzLCA2NTM1MiwgNjUzNTEsIDc2MSwgNjUzNDksIDE5OTU5LCA2OTcxOCwgNjM4NTYsIDEyNjYzNSwgMjQyMywgCisgICAgNzQ1MTgsIDY0NjQ3LCA3Nzk1OSwgMTE5NTcsIDQ2OTksIDEyNjU3MywgMTI4NjcwLCA5ODM3ODcsIDAsIDY0NjA1LCAwLCAKKyAgICA2ODA3NCwgMTI3MzA3LCA0OTE2LCAxMjg1NjgsIDM4MCwgMTA5NTgsIDY2NTYzLCA3Nzk1NSwgNjk3NzMsIDk3NzMsIAorICAgIDEzMTY3LCAxMjkxOCwgNDEwOTYsIDczOTgwLCA2OTI0NSwgNzgyNTQsIDY2NzM3LCAxMDY4NCwgMTIyOTEzLCAxMjUwNjMsIAorICAgIDkyOTA2LCA3OTQ2LCAxMjU0MSwgODE4MiwgNjc1ODYsIDY5NzgwLCAxMjk0MjIsIDEyODIwNywgOTgzNjQ0LCAxMjg2MTMsIAorICAgIDkwMDUsIDEyMjUsIDY2MzAsIDAsIDk4MzQ5MSwgMTE4ODU0LCA2ODAxMSwgODg0NywgOTIzNzEsIDY1ODc2LCA1NTM1LCAKKyAgICA4MzI5LCA3NDU5MCwgMTI1MDM2LCA5MjYwOSwgMCwgNjY4NzQsIDMxMjcsIDI1OTUsIDY1NzEzLCA0MjAxMywgMTIxMjExLCAKKyAgICA1NjA3LCA0MTA4OSwgMTI4NjI2LCA5ODMzOTYsIDcwMjkyLCAyNjY1LCAxMTMwNCwgNDM3NTEsIDc0MjAwLCA0OTcwLCAKKyAgICA4NzY0LCAxMjA0NTksIDg5MzQsIDkyNzI2LCA0MTU2NiwgNDQ5MiwgNjcyNzEsIDY1MDExLCA0MTA5MCwgMCwgODM0MTcsIAorICAgIDExODgsIDcyNTQsIDExMDAsIDEyOTE4MCwgNjcyNzAsIDQxMDgxLCAyOTEyLCAxMTc0OSwgNjcyODIsIDY3MjgxLCA2NzI4MCwgCisgICAgMzU3MiwgMTAwMjMsIDQ5NTksIDEzMDc5LCAxMjQ5NzgsIDY3Mjc1LCA5NzI5LCAxMjUxMTAsIDEyMTA0MiwgNjcyNzgsIAorICAgIDQzMzYxLCAxMjczNTUsIDY3Mjc2LCAxMTgwMywgNzk5NiwgOTkwNywgNDE0NTAsIDEzMzA0LCA4MzM5MiwgODMzNjksIAorICAgIDQxNDUxLCA4MzM3MCwgMTEwOTUsIDgyNzMsIDc0MzIyLCAzNDUxLCA3MDI5MSwgOTcyLCA0MTQ1MywgNjgxNjQsIDExOTMyNywgCisgICAgNzM4ODMsIDY4MDIyLCA3Mzk0NSwgODMzNjMsIDIyODgsIDE5OTU1LCA5NTM4LCA4MzM2NiwgNjk4MDcsIDEyNTI0NiwgCisgICAgMTI5MDk1LCAwLCA4MzM4MSwgMTEzOTYsIDgzMzg1LCAxMTAxOSwgMTIxMjE4LCAxMjg0MTYsIDEyMTIwNSwgNjgwMjAsIAorICAgIDQxMDc4LCA2Njc1OCwgMjYxLCA1OTI3LCA3NzkxLCAxMjg2ODEsIDczNjIsIDEyNTI1NiwgMTA2OTYsIDcwMTI0LCA2MDczLCAKKyAgICA5ODM4LCAxMTg5MjAsIDkxNzg3OCwgNjA3NSwgOTM5OTUsIDI4MiwgMTE5MTc4LCA2NDM3LCA2ODgzMCwgMTIxNDU5LCAKKyAgICA5ODAxLCA2NjM5OSwgNzQxNzcsIDY2NzkxLCA5MTc5NTksIDM0NzQsIDY3Mjg3LCAwLCA2NzI4NiwgNjA4MSwgODM0NjksIAorICAgIDc4ODc0LCA2NzI4OSwgNjcyODMsIDgzNDcxLCA3MDAwMiwgNDI5MzAsIDEyOTQxMywgOTMwMTMsIDg3NTEsIDExNDk5LCAKKyAgICA2NzI5NywgNzgxNiwgMTI2MzYsIDQ2NjUsIDEyNjI4LCA0NjcwLCA2NzI5OCwgMTIwMjcyLCA2ODAxNywgOTY0MiwgMTA5MTIsIAorICAgIDk1OCwgNjcyOTMsIDExMzg3LCA2NzI5MSwgNDY2NiwgNzA3OTIsIDQ5MTUsIDY3NzE1LCA0NjY5LCAwLCA2ODA5OSwgCisgICAgMTMyODcsIDQ2NjQsIDEwODM2LCAxMjA1NTAsIDc1MDUzLCA2OTc3NSwgMCwgNDM1OTUsIDc0NTAsIDc0MTczLCA5MTc4NzUsIAorICAgIDg2NjQsIDk2OTcsIDM2MDYsIDgzNDQ2LCA5ODM5NzgsIDkxNzg3NCwgNjQ4MTUsIDEwNjMsIDExOTA4OCwgNjczMTIsIAorICAgIDk3NzIsIDcyNTUsIDg4ODYsIDEzODksIDEwMDgzMywgMTIwMjU3LCAxMTkyMDIsIDEyMDI1OSwgMTI5NDEsIDQyNjYxLCAKKyAgICA4MzQzOCwgMTIwMjU1LCAxMDExMDEsIDEyMzAxLCA2NzgzNiwgNjk4MjAsIDQxMTAyLCA2NDQyOCwgMTIwMjYyLCA2NjYwMiwgCisgICAgNjY3ODgsIDEwMTcsIDY2NjAwLCA1MjMsIDUwNSwgMTQ0NywgNzQ0MzYsIDAsIDcwMzQwLCA2Njc5MywgODYwOCwgNDI3ODksIAorICAgIDcwODY4LCA4MzQzNiwgOTgzNDgwLCA3MTkwNiwgMTEzMDcsIDY2NzA3LCA2NzMwMSwgNjczMDAsIDExNzQ1LCA3OTE5LCAKKyAgICA2NzMwNCwgMTY0MSwgMTI2NTIzLCAwLCA4OTY2LCAxMjg5MDAsIDc0OTE5LCA1OTA4LCA3MTg3MCwgNjc4NTMsIDY3NDQsIAorICAgIDY3MzEwLCAxNjk5LCA2NzMwOCwgNjczMDcsIDY3MzE0LCA2NzMxMywgNjMwNiwgMTAxNjksIDcxMzI0LCAxMTkyNTEsIAorICAgIDEwMDY4LCAzNzY2LCAyMzg5LCA2NzMwNSwgMTIwNDU1LCA2NjExLCAyNTcsIDQzMTcwLCAxMzE1MywgMCwgNDIzODYsIAorICAgIDkxNzk3NCwgOTQzNiwgMjU5OSwgOTgzNzQ3LCA2NDk2LCA5NDQ5LCA1OTMwLCAxMTQ3NiwgMTEwMzMsIDExNDQ3LCAxMDU0MSwgCisgICAgNTYyMiwgMTIwNDM2LCA4NDc3LCAzNzYwLCAxNzE4LCA5NDQyLCA2NjQzMywgMzc3NiwgOTE3ODM3LCA0MTQzNSwgNDM1MiwgCisgICAgNjczMjQsIDI0MzUsIDcxMjExLCA1NjIxLCAxMjAzODUsIDQyMDEsIDM3NzgsIDQyMDMsIDQyMDIsIDQyMDUsIDQyMDQsIAorICAgIDEyMDQ0NywgMzc2OCwgNDE3NzQsIDc2NSwgNDE0NDAsIDM3NjQsIDg0NzMsIDYzNzMsIDg0NjksIDEyMDQzOCwgMTI5NDcsIAorICAgIDQ1NjQsIDEwMDQ3MCwgNzQ2MjMsIDc0MjcxLCA3Mzc1MywgODM3NCwgMTI3MjAxLCAwLCA2ODI5LCA1MjI1LCA2NjkwMSwgCisgICAgMTI3Mzg1LCAwLCAwLCAxMTk2MTUsIDY3MzE5LCA2NzMxOCwgMzE2MiwgNDM1MDcsIDExNzcxLCA2NzMyMiwgNjczMjEsIAorICAgIDY3MzIwLCA0MjYxNCwgNTM1MywgNTYyNSwgNzQxNzksIDY3MzE1LCAwLCAxMDEwLCA2NDU3MiwgNDE3ODAsIDQyNjIzLCAKKyAgICA2NDI3NywgNjk5NDIsIDY5NTIsIDY3MzI5LCA2NzMyOCwgNjczMjcsIDI1OTAsIDU2MjksIDY1NTUyLCA3NTUxLCAxMDMyNSwgCisgICAgNTYzMiwgMTA0NzEsIDEyMDAzOCwgMTIwMDI3LCAxMjAwMjgsIDEyMDAyNSwgNTYyOCwgMTIwMDMxLCA5NzAsIDEyMDAyOSwgCisgICAgNDc3MiwgMjQwMCwgNTYyNywgNzQzNjQsIDY3MzMwLCAxMjAwMjMsIDY0Mjc1LCAxMjAwMjEsIDg3ODYsIDExMzY5MywgMjAzLCAKKyAgICA3NDM2NSwgMCwgMCwgNjk5ODUsIDc4MzUwLCAxMDEwNjUsIDY0Mzc4LCA0MjA1NCwgMTI4NTc1LCAxOTQ5OTMsIDU1NCwgCisgICAgODM0MjIsIDExMzU4LCA3MTE3MiwgMTIxODIsIDQyMDQ4LCAxMTA2NSwgMTI1MTE0LCA3Mzg5MSwgODM0MjMsIDgzMDE5LCAKKyAgICA1Njk0LCA3Njg5LCA2Njc4NCwgOTMyMywgNDMyNSwgMzA0NywgMTAzMTcsIDE3NSwgMTIwOTYyLCA5MzAyOSwgNjk3NjQsIDAsIAorICAgIDEyMDYyNSwgMTI0MywgNDIxNTQsIDU0MzEsIDY2NTIsIDkxNzU2MSwgNjc3NTMsIDQzNjUxLCAxMjc4MDEsIDY4MTE4LCAKKyAgICA2ODA5MywgMTEyOSwgNzI4NDYsIDEwMDcwNywgNjU5MDAsIDE5ODYsIDc4NDYsIDc4ODA0LCA4NjYxLCA3NTA1OCwgNjUyNTUsIAorICAgIDkzOTkyLCAzODQ1LCA0NDkwLCAxMTg5NjksIDY2NDksIDc0MTM2LCAxNDU2LCA3NTMwLCAxMTk3NywgNzI0OSwgODM2NiwgCisgICAgOTgzNjEyLCA3NzU2LCAxMjM0MiwgMTIwNjk3LCA1MSwgNDE1MTYsIDAsIDg1NzAsIDk1NjgsIDcxMzE4LCA0NTYsIDcwMjYsIAorICAgIDgxNDUsIDExNjgsIDkyNTEsIDkwODIsIDExOTk2NCwgNjQwNTUsIDQyNzgxLCAzODY2LCAxMjMyMywgNDE1MTIsIDczODA1LCAKKyAgICA2ODEyMSwgOTE3ODUwLCA0MTQ5NCwgOTIzMTYsIDQ2NjAsIDY3MTE0LCAxMDQwNSwgMTI3MTk1LCA3ODgwMywgMTAwNDM5LCAKKyAgICAxMjkxNzYsIDQyMDQwLCA3MzkxOCwgMTE5NjI3LCA3OTQ0LCA0MTQ1NCwgMTI2MDUsIDAsIDQyMjA1LCA0MTQ1NSwgMjM2LCAKKyAgICA2NDA1MSwgNzg4NjcsIDgyMTQsIDgzNDIxLCAxMTM3ODQsIDEyMDAzNywgNDE0NTcsIDk4MzQ4MSwgMTE5NTg5LCAxOTY5LCAKKyAgICAyMzg0LCA4MDk3LCAxMjgwMTksIDc0MTMsIDY4MDEyLCA3MjgyMCwgODc2NiwgNDM4NjQsIDcyODI0LCA1ODU0LCAxMjUwMDAsIAorICAgIDEwNTgzLCAwLCAxMTk5ODksIDcyODE5LCAxMDQxNiwgNjgwNzAsIDM4NzIsIDgzNDI0LCAxMjczOTksIDg0MjksIDEyMTIzMCwgCisgICAgMTE4ODA2LCAyODM4LCA2NDI5LCAxMjEwNzcsIDgzNDI2LCA3MjgzNSwgMTAwNDIwLCAwLCAxOTQ2MjAsIDk0MDA1LCAKKyAgICAxMTA5NiwgODM0MjAsIDEwNTUzLCAxNjYyLCA4NDgzLCAxMjAzOTYsIDQzNjA1LCA1ODkyLCA0MzQxOCwgNjc4MTksIAorICAgIDczNzQyLCA2NiwgNjUsIDY4LCA2NywgNzAsIDY5LCA3MiwgNzEsIDc0LCA3MywgNzYsIDc1LCA3OCwgNzcsIDgwLCA3OSwgCisgICAgODIsIDgxLCA4NCwgODMsIDg2LCA4NSwgODgsIDg3LCA5MCwgODksIDExOTg2MiwgMTAzNTcsIDczODUsIDgxNzAsIDE3MDQsIAorICAgIDg1NTYsIDkxNzk3NSwgOTY1OSwgMCwgMTAwNzM2LCAwLCA5NTU2LCAwLCA0NTAzLCAxMTM1MywgOTY0NywgMTI1MDE1LCAKKyAgICA2ODI4OCwgMTI4OTU5LCA5MTc5NzYsIDcxNDM3LCA3ODg4NiwgOTgzMjg4LCA5ODM0OTYsIDc0MjI5LCA2NjU5MywgNjQzOCwgCisgICAgODMzNjQsIDkxMDksIDc4ODgyLCAxMjg5LCA2NDU5OSwgMTE4OTE1LCA2ODAwOSwgMTI4MzAyLCA2NTUwNywgMjQ0NywgCisgICAgMTE5OTExLCAxMjg2OTQsIDEyODA0MiwgMTI2NTQ1LCA2NjU4OSwgOTgzODc1LCA2MzM0LCAxMjgzNjksIDkxNzkxOSwgCisgICAgMTk5MzcsIDkxNzc5MywgMTMyMiwgOTIzNTksIDU2NzUsIDI1NCwgMTI0OTY0LCAwLCA2OTY4NiwgNDI0MjUsIDg5MTgsIAorICAgIDY0MDAzLCA1NzE2LCA0MjMxMiwgMTIwMDkwLCAxMDA1NTIsIDY5NzIsIDQyODI2LCA3NDQwOSwgNDI0NjQsIDEyMDU2NywgCisgICAgNjY4OTksIDY3MTU1LCA3NDc5NiwgNjQ0MDAsIDY0NjkzLCAxMjg0MzcsIDY3Njg3LCA2NTQyOSwgOTUxNSwgNDQzNSwgCisgICAgOTgzMzY3LCA0MjUyMiwgMCwgNjgwMDgsIDExNzg1LCA3NDEyLCA0Mzg2NywgNDE5NzgsIDE0MTIsIDQ1OTQsIDEzOTEsIAorICAgIDEwNTM2LCA4MDY3LCA5OTAxLCA3MTAzLCAxMjgyOTMsIDcxMDIsIDcxNDI4LCAxMjA3NDgsIDMxNDAsIDEyNzI3NiwgNzk2MCwgCisgICAgNDMyNzEsIDEyMTA5OSwgMTI1MTgsIDEwOTA5LCAxMjc1MDgsIDE0MjgsIDEyNDcyLCA2NzI1NCwgNjcyNTMsIDc2OTksIAorICAgIDEyMzkzLCA2NzI1NywgMCwgNjcyNTYsIDY3MjU1LCA4MjIzLCAwLCA0MjYxLCA3ODc4NCwgMTIwOTEwLCA3NDMwOCwgCisgICAgOTgzODI3LCAxMTM3MTIsIDY3MTUzLCAxMjUyNTIsIDcyNzQ0LCA0MzQxOSwgNzI3NDgsIDY0NTU0LCAxMDU3NCwgMzg3OCwgCisgICAgNjc2OTEsIDQyMzUyLCAxNzUyLCA3Mzc4NSwgMTI4MTcxLCA0MjUwNiwgMTI4NTQxLCAxMDE5OSwgOTE3ODY1LCAxMjUxNDIsIAorICAgIDY4MDIxLCA2NTkxOSwgMTI3MTAyLCA2Njk1LCA3MjAsIDMyNCwgMCwgMTI5MDM1LCA0MzQwNiwgMTI1MjY5LCAxNDY0LCAKKyAgICA0MDk4NSwgMCwgNzk3NCwgMCwgNDM0NzQsIDY4MDgyLCA2NDQ4OCwgMTI4OTc3LCAxMjA5NTEsIDM0MjAsIDc0Nzg3LCAwLCAKKyAgICA3ODg2NSwgOTIyNTgsIDY1NTk3LCAxMjE0MTYsIDc4ODYzLCAwLCAxMzAyLCA2NjI4OCwgNzg4NjEsIDExOTEzNCwgCisgICAgMTIwMjc0LCA2NzE1MiwgNTIwNCwgNzQ3NzQsIDQzNDA0LCAxMTgzNSwgMTIwOTIzLCAzOTk1LCA2ODM2MCwgNjU2MDgsIAorICAgIDM3MTQsIDkyMTkwLCAxMjAwMjYsIDY3MjYyLCAxMDk5OSwgMTE3NTAsIDY3MjU5LCA0MzI1MSwgNjcyNjQsIDQzMzAxLCAwLCAKKyAgICAxMjA1NTcsIDgxMzAsIDg2NzIsIDEwODQ1LCAxMTk2NCwgMTIxMjY4LCAxMjgwMTQsIDkyMTczLCAxMjA3MTAsIDY4NDU1LCAKKyAgICA0Mjg2MywgNzM4MzksIDExOTkyOSwgMCwgNjc3MDAsIDkxNzgxMiwgMTEzNzAxLCA0MzY0NSwgNDY4LCA2MTIsIDAsIAorICAgIDY0NDAxLCA2NjQ0OCwgNjgzNzYsIDEyODIwOCwgMTY3NCwgOTE3NTgxLCA1ODIzLCAxMjg2MjUsIDEyMjgwLCA3MDM2NywgCisgICAgNTQwLCA3NDU2NCwgMTE5MDE3LCA2NjQyMiwgODQzMiwgNzg4NzMsIDExMDczLCAwLCA2NDMxNiwgMCwgMTIxMDAxLCA4MjAsIAogICAgIDQxNzQxLCA5ODM0NzcsIDEyMDY2NywgMTI0OTgxLCA2NDY4NCwgMTI2OTkyLCAzMzU5LCA3ODAwLCA2OTkzNCwgNjUxNzcsIAogICAgIDYyMjYsIDM1MywgMTIzOTYsIDEyMTE3NiwgMTE5NjEyLCA2NDc0MiwgMTI4NjgyLCA3ODg3OSwgOTgzNDc4LCAxMjc5MzgsIAotICAgIDEyNDEyLCAxOTk0MSwgMCwgMTIwMjc3LCA3MDM1MiwgMTg4NCwgOTQ4MSwgNDI0MTgsIDcwMDU5LCA0MTE1NywgOTgzMTQyLCAKLSAgICAxMTk1LCA2NDg5OCwgNzkyNCwgMTE5ODcwLCA0MTE1MSwgMjAxMCwgNzE0MzAsIDQxMzI4LCA0MjM0NCwgMCwgMTI0MDksIDAsIAotICAgIDQzNjAsIDEyMTAyMywgOTczOSwgMTI4NTUwLCA2OTkzMywgNzM5MjEsIDkxNzYzMSwgNDI1MjEsIDg1MzksIDEyODYwNiwgMCwgCi0gICAgMTE4OTg2LCAxMjcxNDgsIDQ3ODgsIDEyMTM0NSwgNjgwMjMsIDY1NzM0LCA5ODM0NTcsIDQzNzkwLCAxMjAyNzQsIDEzMDc1LCAKLSAgICA3NDQyOSwgOTQwNjMsIDY0NTY5LCA0MzUzMiwgMTA4MzcsIDI0OTIsIDEyNzE5NywgMTE4OTAxLCA2ODYzNywgNDExMzYsIAotICAgIDQzNzg1LCAxMTgxMywgOTY0OSwgNDExNTQsIDExMzczMSwgNTEyOCwgNDAzOCwgNDExNDMsIDY1NjA0LCA2NDg1OSwgCi0gICAgNDE1OTIsIDY3NzEsIDE2NDgsIDU0MzUsIDY3Mjk1LCA2NzM0LCA0MTM0MywgMTE5ODQ4LCA2NTQzOSwgMTI3MDksIDY5ODYsIAotICAgIDkyMzY0LCA2ODAxNSwgMTIwNTMzLCA0MTM0OSwgNzAwMjEsIDEyNTgxLCAxMDM3NCwgNTE3NSwgMCwgNzM4MDYsIDEwMjU0LCAKLSAgICAxMTM2ODEsIDEwMjc4LCAxMDI2MiwgNjk4NTgsIDQxMzQ2LCAxMjA4NzAsIDYwNywgMCwgNjgxODIsIDEyODg0NiwgMTI5MjMsIAotICAgIDEwMzE0LCAxMDI4MiwgNjU0NzcsIDEwMzc4LCAxMjAyOTcsIDQwOTc2LCA4MjY1LCAxMjkxNDksIDc4NjM5LCA0MDk3NSwgCi0gICAgNTg0MCwgNDI4MzgsIDc0OTg3LCA0MDk3OCwgMTIxMzg2LCA5Mjk0NSwgMTI4MDIwLCAxMTk4MDksIDAsIDY2NDQ0LCAKLSAgICAxMDUzOCwgMTIwODEwLCAyNTUwLCAxMTk4MzYsIDY3NzksIDEyOTEzMCwgMCwgMzUyNSwgNjgyNCwgMTE4ODg2LCA5ODM1ODIsIAotICAgIDAsIDU2MTksIDY1ODIyLCAxMTM3NTEsIDExMzczOCwgNzQ1NSwgNzE0MjQsIDU2MTYsIDExNDg2LCA5NjU2LCAwLCAwLCAKLSAgICAxMDcyNywgNTYxNSwgMTIwODczLCAxMjA1NTEsIDQyMzgwLCA2NDg5NSwgNDM2OTMsIDY2NDUxLCA4MDgsIDU0NTUsIAotICAgIDExMzQ3LCAwLCAxMDI2LCA1NjIwLCAxOTQ4ODcsIDAsIDExMzUwLCA1NjE3LCAwLCA5MjI1LCA2NDYzOSwgMTI3MDczLCAKLSAgICA5MTQ1LCAxMjgwNjAsIDEzMzgsIDEyMDU4MSwgOTgzMTU4LCAxMjczOSwgNDYwMywgMzA4NCwgNzA0MDgsIDkyNDg0LCAKLSAgICA5ODU4LCA2MDM3LCA5ODM0NjUsIDM5NzQsIDc4MjEzLCAxMDI5MCwgOTgzNzA0LCAzMDgzLCAxMDMyMiwgMTI5MDQ4LCAKLSAgICAxMjkwMzAsIDc1MDM4LCA0MTAzNiwgNjY4OTcsIDAsIDQzMzIxLCA2NTYwNiwgMTI3MDcxLCA0MTAzMiwgNDIzODgsIDAsIAotICAgIDY0NzAwLCAxMDAxMSwgMTQ0NSwgNDA5NjEsIDAsIDExOTEwNSwgMCwgNDA5NjAsIDE5NDkwNywgNjc3MjcsIDEyNTEwNiwgCi0gICAgMjIyMywgNjQ5NTIsIDEwNDAyLCAxMjgzNTgsIDEyNTA0OSwgOTIzMDQsIDEwNjAzLCAwLCA5ODM0MDMsIDcxNDM4LCAwLCAKLSAgICA2NzE0LCAxMDA4MywgMTI3MDY5LCAxMjEwMTksIDc4MzY3LCA2OTk3NiwgMCwgNDM4NzIsIDkwNzMsIDQyNTg1LCA2NDMwMiwgCi0gICAgMTA3MDQsIDY1MDMwLCA0Nzg3LCAxMjkwMzEsIDc0ODI5LCAwLCA2NTQyMywgMTIxMzA2LCAxMjgxMTgsIDk1NzAsIDU1MjYwLCAKLSAgICA5NTI1LCAyNjg5LCA5MTc2MjYsIDY1NDI2LCAxOTQ4NzIsIDkxNzYyNCwgNDM3NDAsIDEyMTE2MywgNDA5NjYsIDEyMDAwOSwgCi0gICAgMTMyODYsIDM5OTgsIDQyNTk4LCA0MjU5NiwgNTAzLCA3MTQzMywgODczNSwgMjY5MCwgNjY0ODgsIDQyODM2LCAxMjcxNTAsIAotICAgIDQxOTU0LCA5MTc2MTUsIDE2NTIsIDc3MiwgNjY4OCwgODMxMCwgNjU0MjgsIDM0ODcsIDQzNDE2LCAzNTg1LCAxMDE5NCwgCi0gICAgNDMzMjAsIDExOTE1OSwgNzM5NTUsIDkyMzE1LCA2NDY4LCA0MTk3NiwgOTcyMCwgNzQ5NjQsIDExMTc5LCA0MTk3MCwgCi0gICAgNjYyNTUsIDU4MzYsIDEyMzU4LCAwLCA0MzU1LCA5MDQ4LCAxMjE4MCwgNjUwMjcsIDY0NjgwLCAxMzAzOCwgNDM2OTksIDAsIAotICAgIDQxNDg4LCAxMjgwODcsIDg1MjcsIDE5NDkxNywgMTIzNjIsIDEyNDM1LCAxMjM2MCwgNDEwNTMsIDMyNjYsIDAsIDEyMzU2LCAKLSAgICA4NjE2LCA0MTQ2NiwgNDI5MjQsIDIyMjcsIDExNDUwLCA5ODM2OTEsIDM2MzgsIDEyMzU0LCA2NzI5OSwgMzIxNiwgODMwOTksIAotICAgIDIzNTgsIDgzMDkyLCA4NjMzLCA3MTIwMSwgOTgzNzQ1LCAxMTkxODIsIDY5MjQ0LCA4MzA5MCwgNzAzNzUsIDExNzU5LCAKLSAgICAxOTQ5MDMsIDYzNjgsIDc0ODIzLCA2NzMwMywgNDE0MjMsIDgwNzgsIDEwNTA0LCA4MzEwNCwgNDE2OTgsIDQyMjM3LCAKLSAgICA5ODM0NTQsIDcwMDIsIDgzMTAxLCA0MTQzMCwgNDIyNjcsIDQxMDUxLCA0MTQ4NCwgMCwgNzE0NjcsIDQxMDUwLCA0MTQ3MywgCisgICAgMTI0MTIsIDE5OTQxLCAwLCAxMjAyNzcsIDcwMzUyLCAxODg0LCA5NDgxLCA0MjQxOCwgNzAwNTksIDQxMTU3LCAxOTUwNTgsIAorICAgIDExOTUsIDY0ODk4LCA3OTI0LCAxMTk4NzAsIDQxMTUxLCAyMDEwLCA3MTQzMCwgNDEzMjgsIDQyMzQ0LCAwLCAxMjQwOSwgCisgICAgMTIwNzEyLCA0MzYwLCAxMjEwMjMsIDk3MzksIDEyODU1MCwgNjk5MzMsIDczOTIxLCA5MTc2MzEsIDQyNTIxLCA4NTM5LCAKKyAgICAxMjg2MDYsIDAsIDExODk4NiwgMTI3MTQ4LCA0Nzg4LCAxMjEzNDUsIDY4MDIzLCA2NTczNCwgOTgzNDU3LCA0Mzc5MCwgCisgICAgMTE5ODY5LCAxMzA3NSwgNzQ0MjksIDk0MDYzLCA2NDU2OSwgNDM1MzIsIDEwODM3LCAyNDkyLCA3Mjc2MiwgMTE4OTAxLCAKKyAgICA2ODYzNywgNDExMzYsIDQzNzg1LCAxMTgxMywgOTY0OSwgNDExNTQsIDExMzczMSwgNTEyOCwgNDAzOCwgNDExNDMsIAorICAgIDY1NjA0LCA2NDg1OSwgNDE1OTIsIDY3NzEsIDE2NDgsIDU0MzUsIDY3Mjk1LCA2NzM0LCA0MTM0MywgMTE5ODQ4LCA2NTQzOSwgCisgICAgMTI3MDksIDY5ODYsIDY2NzYxLCA2ODAxNSwgMTIwNTMzLCA0MTM0OSwgNzAwMjEsIDEyNTgxLCAxMDM3NCwgNTE3NSwgMCwgCisgICAgNzM4MDYsIDEwMjU0LCAxMTM2ODEsIDEwMjc4LCAxMDI2MiwgNjk4NTgsIDQxMzQ2LCAxMjA4NzAsIDYwNywgOTgzNjIxLCAKKyAgICA2ODE4MiwgMTI4ODQ2LCAxMjkyMywgMTAzMTQsIDEwMjgyLCA2NTQ3NywgMTAzNzgsIDEyMDI5NywgNDA5NzYsIDgyNjUsIAorICAgIDEyOTE0OSwgNzg2MzksIDQwOTc1LCA1ODQwLCA0MjgzOCwgNzQ5ODcsIDQwOTc4LCA3ODE3NCwgOTI5NDUsIDEyODAyMCwgCisgICAgMTE5ODA5LCAxMjA4OTEsIDY2NDQ0LCAxMDUzOCwgMTIwODEwLCAyNTUwLCAxMTk4MzYsIDY3NzksIDEyOTA5MSwgOTE3ODE1LCAKKyAgICAzNTI1LCA2ODI0LCAxMTg4ODYsIDk4MzU4MiwgMTE5ODM4LCA1NjE5LCA2NTgyMiwgMTEzNzUxLCAxMTM3MzgsIDc0NTUsIAorICAgIDcxNDI0LCA1NjE2LCAxMTQ4NiwgOTY1NiwgMCwgMCwgMTA3MjcsIDU2MTUsIDEyMDg3MywgMTIwNTUxLCA0MjM4MCwgCisgICAgNjQ4OTUsIDQzNjkzLCA2NjQ1MSwgODA4LCA1NDU1LCAxMTM0NywgNzI3NjAsIDEwMjYsIDU2MjAsIDE5NDg4NywgMCwgCisgICAgMTEzNTAsIDU2MTcsIDcyOTksIDkyMjUsIDY0NjM5LCAxMjcwNzMsIDkxNDUsIDQxMzQ0LCAxMzM4LCAxMjA1ODEsIAorICAgIDk4MzE1OCwgMTI3MzksIDQ2MDMsIDMwODQsIDcwNDA4LCA5MjQ4NCwgOTg1OCwgNjAzNywgMTAwMzc2LCAzOTc0LCA3ODIxMywgCisgICAgMTAyOTAsIDk4MzcwNCwgMzA4MywgMTAzMjIsIDEyOTA0OCwgMTI5MDMwLCA3NTAzOCwgNDEwMzYsIDY2ODk3LCAxMDAzNzQsIAorICAgIDQzMzIxLCA2NTYwNiwgMTI3MDcxLCA0MTAzMiwgNDIzODgsIDEwMDYxOSwgNjQ3MDAsIDEwMDExLCAxNDQ1LCA0MDk2MSwgMCwgCisgICAgMTE5MTA1LCA5MTc5NjksIDQwOTYwLCAxOTQ5MDcsIDY3NzI3LCAxMjUxMDYsIDIyMjMsIDY0OTUyLCAxMDQwMiwgMTE5MjEzLCAKKyAgICAxMjUwNDksIDkyMzA0LCAxMDYwMywgMCwgOTgzNDAzLCA3MTQzOCwgMTI4NTAwLCA2NzE0LCAxMDA4MywgMTI3MDY5LCAKKyAgICAxMjEwMTksIDc4MzY3LCA2OTk3NiwgOTgzNjU1LCA0Mzg3MiwgOTA3MywgNDI1ODUsIDY0MzAyLCAxMDcwNCwgNjUwMzAsIAorICAgIDQ3ODcsIDEyMTI3OSwgNzQ4MjksIDAsIDY1NDIzLCA3NDk4OCwgMTI4MTE4LCA5NTcwLCA1NTI2MCwgOTUyNSwgMjY4OSwgCisgICAgOTE3NjI2LCA2NTQyNiwgMTk0ODcyLCA2Njc0MCwgNDM3NDAsIDEyMTE2MywgNDA5NjYsIDEyMDAwOSwgMTMyODYsIDM5OTgsIAorICAgIDQyNTk4LCA0MjU5NiwgNTAzLCA3MTQzMywgODczNSwgMjY5MCwgNjY0ODgsIDQyODM2LCAxMjcxNTAsIDQxOTU0LCAKKyAgICA5MTc2MTUsIDE2NTIsIDc3MiwgNjY4OCwgODMxMCwgNjU0MjgsIDM0ODcsIDQzNDE2LCAzNTg1LCAxMDE5NCwgNDMzMjAsIAorICAgIDcyNzU2LCA2Njc1NywgOTIzMTUsIDY0NjgsIDQxOTc2LCA5NzIwLCA3NDk2NCwgMTExNzksIDQxOTcwLCA2NjI1NSwgNTgzNiwgCisgICAgMTIzNTgsIDEyOTQyMSwgNDM1NSwgOTA0OCwgMTIxODAsIDY1MDI3LCA2NDY4MCwgMTMwMzgsIDQzNjk5LCAwLCA0MTQ4OCwgCisgICAgMTI4MDg3LCA4NTI3LCAxOTQ5MTcsIDEyMzYyLCAxMjQzNSwgMTIzNjAsIDQxMDUzLCAzMjY2LCAwLCAxMjM1NiwgODYxNiwgCisgICAgNDE0NjYsIDQyOTI0LCAyMjI3LCAxMTQ1MCwgMTIwNzM0LCAzNjM4LCAxMjM1NCwgNjcyOTksIDMyMTYsIDgzMDk5LCAyMzU4LCAKKyAgICA4MzA5MiwgODYzMywgNzEyMDEsIDk4Mzc0NSwgMTE5MTgyLCA2OTI0NCwgODMwOTAsIDcwMzc1LCAxMTc1OSwgMTk0OTAzLCAKKyAgICA2MzY4LCA3MjgzNCwgNjczMDMsIDQxNDIzLCA4MDc4LCAxMDUwNCwgODMxMDQsIDQxNjk4LCA0MjIzNywgOTgzNDU0LCAKKyAgICA3MDAyLCA4MzEwMSwgNDE0MzAsIDQyMjY3LCA0MTA1MSwgNDE0ODQsIDEyOTM2MiwgNzE0NjcsIDQxMDUwLCA4ODcyLCAKICAgICAxMDQ2NiwgMTMwOTksIDcxNDQ1LCA3MDM3MSwgMTIwODk3LCA2NDM1LCA3NDMzMSwgMTEzNjIsIDEyODk3MywgODMwODgsIAogICAgIDY1MzgyLCA5Mjc3MCwgNDE0MjAsIDgzMDgzLCAzNjI1LCA3NDkxNSwgNDE0MDksIDcxNDQxLCA2OTYzOSwgMjA0MSwgOTE3OCwgCi0gICAgOTY3MiwgNDE0MjcsIDQzNTQxLCA0MzMxNywgNzQ5MjQsIDAsIDEyODU1NywgNDE0MjQsIDkxNzU5OCwgMTIwNTQ2LCAwLCAKLSAgICAxMjgyMTIsIDAsIDQxNDE3LCAxMjYxLCAwLCAwLCAxMjEwMiwgMTE5NjYyLCA0MTQwMSwgMCwgMTI3NTM4LCAwLCA3ODI1MSwgCi0gICAgMTI0OTQzLCA0MjI5MCwgMzI3NSwgOTI0NzIsIDQyMzI5LCA2ODg1MCwgNzQ5MDEsIDAsIDEyNzk1MSwgOTIzODgsIDY5NjQ5LCAKLSAgICAxMDk4OSwgNzQyMzQsIDExMzc4MSwgMTA1OTgsIDc0MTAsIDI2NjksIDkwMywgMCwgMjkyMCwgMCwgMTI3MjMyLCA3NDYwMywgCi0gICAgNjQ1MDQsIDE5OTI4LCAwLCAxMjg0MTEsIDM5MTcsIDk4MzExOSwgMTE3MzIsIDAsIDk4MzE4MCwgNDE0NDgsIDQxNDYxLCAKLSAgICAxMjg4MjMsIDAsIDExMzcyMSwgMTEzNzU4LCA4ODE5LCAxMjY2MywgMCwgNDExODQsIDc0MDE0LCAyMzIsIDc0ODM1LCAKLSAgICAxMjA2NDYsIDkxNjgsIDY1Nzg2LCAwLCA4MzI5MywgMTIxMDA3LCA5MDk0LCA5ODM5MjYsIDExNzU4LCA2ODQyNSwgNzE4ODYsIAotICAgIDEwNjQsIDQyNDY3LCAxMjgwNDQsIDEwMTE1LCAxOTkyNCwgOTI3MTEsIDExMzY4MiwgNzg2MiwgNjQ1NTEsIDEzMjI0LCAKLSAgICA4NTE2LCA0MTg2MiwgNjY2NTAsIDc1NjEsIDc4NjE4LCA2OTc5MywgMTg3OCwgMCwgNzE0MzQsIDI5MTEsIDgzMDc0LCAKLSAgICA0MTE3OCwgNTQyNywgNjQ4MjMsIDgzMDYyLCA4MzA2NiwgMzc4NywgNDExNzQsIDgzMDU1LCA0MTQ1OCwgNjcxNDcsIAotICAgIDQxNDYzLCA0MjQxMywgMTEyOTIsIDI0MDYsIDc3NSwgMCwgNjU1ODQsIDY5OTIzLCA2MDc0LCA5NjE4LCA2ODA1NiwgCi0gICAgMTIxNDgwLCA0MzQ0MCwgNzQ1MzksIDE5NDkwMSwgNDE0MzYsIDM2NTYsIDkxNzgwNSwgMTIwNjAwLCA0MTQ1NiwgNjc2OTQsIAotICAgIDE1OTksIDExMzMzLCA4MzEzOSwgNjcwMywgODUxMywgODMxMzQsIDE2MTMsIDgzMTM2LCA2ODQ1NiwgMTI1OTgsIDgzMTMxLCAKLSAgICA4MzEzMiwgNzg3NDUsIDc0NTAwLCA0MTQ2MCwgMTAxNDUsIDEwNTQyLCA5OTM3LCA3ODc0NiwgNjcxNDQsIDk5MDUsIAotICAgIDgzMTQ1LCA2NTczMCwgODMxNDcsIDEyMDM3NCwgODQyNywgODMxNDIsIDU1MjQ2LCAxMjAzNzYsIDQyODk1LCAxMTQ5NywgCi0gICAgNjQ2ODcsIDc0MDA4LCA0MjU5MiwgMzg3MSwgOTgzNTg0LCAxMjgzMDUsIDkxMTEsIDU3NDEsIDgzMzI1LCAxMjA5ODcsIAotICAgIDEyMDM2NiwgMTE5MTExLCAxMTE1MCwgMCwgMTIwMzY4LCAxMjg4NTUsIDExNjQ4LCA4MzEyNiwgODMxMjcsIDgzMTI4LCAKLSAgICA0MTU4NywgNzAzOTEsIDgzMTIzLCA3MTEwOCwgNDIxMTMsIDk4MzU4OCwgMTI3MTU1LCAxMjE3MiwgODMxMjEsIDcxNDQzLCAKLSAgICA2NTI5OCwgNjU3MjMsIDY4Mjg5LCA3Mzg3MSwgNjU3MjQsIDc5MjgsIDEyMDM1NCwgOTgzMDk1LCA0MTU5NSwgNzM3MzAsIAotICAgIDY0NjcxLCA0MjExOCwgNzM4MzAsIDY2MDQyLCAxMDM1NSwgOTgzMTEwLCA3ODc1LCA5ODM2NjksIDQxNTk4LCAzOTkzLCAKLSAgICAxMjEyNjksIDE1NDUsIDQwOTcxLCA1MzYsIDEyNzA3NSwgNDMwMjksIDAsIDEyMTAwMCwgNjUxNzMsIDY1Mjg2LCAwLCAKLSAgICA3MDMzMSwgMTk1MDEyLCAwLCA5NDA2NSwgMCwgNDEzNzUsIDU0MDIsIDgzMDM1LCAxMjgxOTIsIDE2ODcsIDEyMDUwMywgCi0gICAgOTE3ODE3LCAwLCA3ODE5NCwgNjQzMjYsIDQwOTY5LCAxMDUyNiwgNzM3NDcsIDgzMjMsIDQwOTY4LCAxMzM5LCAxMTczMSwgCi0gICAgNzg3NTYsIDEyNzEwOCwgNjU0NjAsIDEyMjQyLCAxMjg1MTMsIDgwMjAsIDEwODQzLCAxMTU1NCwgOTE3ODY3LCAwLCA4MjY2LCAKLSAgICA0MTAwNiwgNjU3MjIsIDgzMDQxLCAxMDcxMCwgNzQwNDUsIDExODk0MiwgNjc2NjcsIDY0NTY3LCAxMTkxNTUsIDgzMzEzLCAKLSAgICAxMjg3NzgsIDcxODg5LCA2Nzg1NywgMTIwNjg3LCAwLCA5Mjk1OCwgMTE3NTUsIDY2MzA1LCA2ODMzMiwgMCwgMTA5MTcsIAotICAgIDkzOTc5LCAwLCAxMTI3MiwgMjA0MCwgNDEyNDcsIDQxMzI2LCAxOTUwNjAsIDE3NDEsIDQyMzcwLCAxMjI3LCA4MzExOSwgCi0gICAgODMxMjAsIDExNDEzLCAxMjY1ODMsIDgzMTE1LCA1MjgzLCAxNTg2LCA0OTc4LCA2ODA1MCwgMTk4NCwgMTE4MzAsIDQzODE5LCAKLSAgICA5MjI5MywgNDA5ODQsIDQyOTA0LCA5MzczLCAwLCAxMjkxNiwgNjI4NCwgMTk0ODg4LCA0MTY2MywgOTgzMDkzLCAwLCAKLSAgICA2ODMxMywgOTIzNywgOTM4NSwgNDE2NDgsIDAsIDEyODk1MywgMjI5OSwgNDE2NjYsIDE4MzAsIDczNzgzLCAyMDU2LCAKLSAgICA0MTI4NywgOTI2MTAsIDAsIDcxOTE3LCA0MjIxOSwgNjgwODYsIDEyMDMyNywgNDE5ODcsIDQxNjc2LCA5ODMwNTksIAotICAgIDEyMDgyMywgMTI2NTUzLCA0MTY3MCwgMCwgOTI1OTAsIDI3OTYsIDU1MjkxLCAxMTY4MywgOTkwMiwgNzQ1MjEsIDY3OTg4LCAKLSAgICAxMTQ1MSwgODI5OTUsIDc4ODU1LCA0MjYzMSwgMjM1OSwgNzE4OTAsIDY3ODQ0LCA3NDE2NCwgNDEyMzgsIDU0OCwgMTE0MDUsIAotICAgIDEzMTMzLCA2NDM2OCwgMTI3MjcwLCAxMjA5MjUsIDY2MjcyLCAzOTcsIDQzNjIyLCA0MjEzOSwgOTU0NywgOTU5MCwgCi0gICAgMTI4MjM4LCAxNjE0LCA0MzY2MSwgNjQzNTYsIDY2MzA3LCA2NjUxLCAxMzU4LCAxMjA4NzEsIDQyOCwgOTYyMCwgMTQ2NiwgCi0gICAgNzgxMTIsIDEwOTgyLCAxMTM3ODUsIDEzMzMsIDcxMDQsIDQwNywgNjQyNSwgMTI4ODM0LCA3NDI1MywgMTI3OTkzLCAwLCAwLCAKLSAgICA1ODA0LCAxMTk3NiwgODU1NCwgOTI3MjEsIDAsIDcwMTY3LCA5MDU3LCA0MjI5NCwgNDEyMTgsIDEyNTA5NywgMTIxMjkwLCAKLSAgICA3ODEzNywgMTg4MywgMTA5NTIsIDgwNDgsIDcwNDQzLCA0MTIyNSwgOTI2MjEsIDQyOTE1LCAxMjg2MTYsIDEyODUxMiwgCi0gICAgMTI4NjI5LCA0NDA3LCA3NDY0OCwgNjU4MDksIDExODM3LCAxOTQ4MjEsIDg0NDgsIDcxNDEsIDc0MTgzLCAxMjAzMzQsIAotICAgIDEyNjc1LCAxMjY1OSwgNzQ2MzQsIDQyMzYzLCAxMjA2MjQsIDY4MDc3LCA1NTI3MywgMTA3NjYsIDEyMDEyLCAyMzg2LCAKLSAgICA2NDczMiwgOTE3MCwgOTE3ODIxLCA5MTIzLCA2NDU4NSwgMTAyOTYsIDExOTE1OCwgNzE0MCwgMTA5NzcsIDEyNzM3OCwgCi0gICAgNDE2NCwgOTA4MSwgMCwgMTIwNTY5LCA0MjA0OSwgNDIwNDIsIDg3MDksIDEyODI4MywgMTI2NDc3LCAxMjA2MzcsIDQyNDE5LCAKLSAgICA2NDc5OSwgNDIwNDcsIDAsIDE5NDgyMCwgODQ3MCwgMTE4MDcsIDY1ODk3LCA1NzcsIDAsIDk4Mzc2MCwgNzQzMDAsIDAsIAotICAgIDY4MDg3LCA3NDg0MCwgMTI2NDc0LCAwLCAxMjg3OTEsIDkyMjI0LCA4NzM2LCAxNDE0LCA0MjY0MywgOTY4MywgNDM0ODYsIAotICAgIDc0MzQ0LCAwLCAyNTM2LCA5ODM5NDEsIDY2MzMwLCAxMjEyMzgsIDAsIDAsIDAsIDAsIDAsIDE5NDgzMCwgNjYzMTcsIAotICAgIDY5OTQ1LCA2NjMxNSwgMjEwNiwgNjc4MDksIDExMjczLCAxMjA5ODYsIDQzMDA0LCA3NTQxLCA4Mjk4OCwgMCwgOTYxLCAKLSAgICA2NDMwNywgNjYzMjQsIDY0OTA2LCAxMjUwODAsIDMxMDYsIDY1OTE3LCA0MTI4NCwgMTY5NiwgOTgzMTMwLCA4OTEsIAotICAgIDEyMTA1LCAwLCA0MjYyNCwgMTI4MDIsIDMyNjQsIDg4MjQsIDEzMjY4LCA0MzAwMywgMTA5MzYsIDEyMDg3OCwgMCwgMCwgCi0gICAgMTk0ODI2LCA5MjY4OCwgMzU2NiwgMjMyMiwgMTIwMzcxLCA3MDgzMSwgMTE0NDksIDEyODE4NywgNDI4NjgsIDQxMjg1LCAKLSAgICAzNTQ3LCAwLCAwLCAxMTM3NDYsIDk4MzQwMCwgNDMyMTYsIDYwODksIDc4NjgyLCA2ODQ5MCwgMTIwNTc4LCA0MTcwLCAKLSAgICAxMDI5LCAxMjc3NjEsIDEyNzAzNiwgMTE5MjI0LCA0MjM3NCwgMCwgNzQ0LCA5Mjg4MywgMTEzNzM5LCAwLCA2NTgyMywgCi0gICAgMTI3ODI2LCAxMTE4MiwgMzU1MSwgOTI5MzgsIDk4Mzg5MSwgNDYyMywgNTUyNjgsIDEyODczOCwgNDU5OCwgOTgzMTYyLCAKLSAgICA2NTEzNiwgMTI3MTM2LCAwLCAxMjgxNjksIDEwODUxLCAxMjA4NzYsIDYxNzksIDkyNjAyLCA2MTgwLCAwLCAxMTk1MiwgCi0gICAgNzQ1NzksIDc4NjQ4LCAxMTk3MiwgNzg2NDYsIDc4NjQ3LCA3ODY0NCwgNzg2NDUsIDE3NywgNzg2NDMsIDYxNzYsIAotICAgIDEyMDU4MCwgOTgzNjk2LCAxMjUxMzUsIDYxNzcsIDkwMjAsIDc4NjUyLCA3ODY1MywgNjE3OCwgMTIwMjQ5LCAxMjAyNDIsIAotICAgIDEyODAyNywgNjc2NzMsIDIyMTQsIDg3NTQsIDEyNzA1MSwgMTIwMjM3LCAyMTM3LCA0MzA4MSwgMTk0NjYzLCAxMTkxMTQsIAotICAgIDkxMzYsIDY2ODg5LCA0NDAxLCA0MTI4MCwgNzA4MDEsIDg5NzQsIDIzMDgsIDE5NDc1MCwgNzQxNDksIDEyODMyNywgMjMxOCwgCi0gICAgOTgzMTgzLCA2NjM2MSwgODE5OCwgNjU2MjYsIDY0MzYwLCAxMjYwMSwgNDI1MzYsIDQzOTMxLCAxMjA4MjcsIDQzOTMwLCAKLSAgICA5MjQ2MiwgNjk3MCwgNTQwNCwgNDMzMzIsIDM2NjcsIDc5MzYsIDEyOTI1LCAxMjY5ODksIDYzODUsIDEyODQ4MiwgCi0gICAgMTI4NDAzLCAxMTg5NDksIDEwODc0LCA2NTUwNSwgMTIwMDAyLCAxMjkxNTEsIDQyMDUzLCAyMDc1LCA0MjA1NywgMTEwODMsIAotICAgIDQyMDUyLCAwLCA2NzI2NiwgNjc2NTEsIDEyMTEwNCwgOTY2NSwgOTIzMDAsIDk4MzY2NiwgMTMxODEsIDkxNzYxNywgMCwgMCwgCi0gICAgNzAwODgsIDc0MTQ4LCAwLCA3MDQxOSwgMTIwMjI1LCAxMjAyMjksIDEyMDIyNCwgNzQxNzIsIDQxMTQ1LCA2NjQwNCwgCi0gICAgOTQwOTYsIDc0NDIyLCA0MTE0OCwgODY4MywgNzU5NCwgMTEzNjg2LCA3NTAzMywgMTE5MDkwLCAxMDg2OSwgNDM0NTgsIAotICAgIDQxMTQ2LCA5MjQwNywgMTE0NDEsIDEyMTQ1NiwgMzUxMiwgMTE5NjMzLCA5Mjk2NSwgODEwMywgNzgxNDAsIDEyMDg0NywgCi0gICAgNjUxODQsIDExNzgwLCA0MTU2MywgNDI3OTYsIDEyOTA1NSwgNjk3NDIsIDQxNTQ0LCA2NTE0NiwgNzEzMTQsIDAsIDc4MTA5LCAKLSAgICAxMjkxNzcsIDE5OTQyLCA5ODMyNDQsIDExODkwOCwgNzk4OCwgMTA0MzYsIDc0MjczLCAzMjcxLCA3MzgwNCwgNjQ3MTEsIDAsIAotICAgIDk0MDY0LCA5ODMwNzEsIDEyODY1MiwgMzgwNCwgMTMwNzAsIDExNTU3LCA0MjA0NCwgMCwgMTA5NSwgMCwgMzU5OSwgCi0gICAgMTI3Nzc0LCAwLCAxMjg4NjEsIDg1MTQsIDAsIDAsIDAsIDc0MzQ2LCA2NjY5NywgMCwgMTE2ODQsIDAsIDkyNDg2LCAKLSAgICA5MTc2MDMsIDAsIDQyMDQzLCA0MzIzMiwgNjY2NzcsIDc0OTI3LCA0MjA0NiwgNzQxNTcsIDQwMzYsIDEyNjQ4MSwgMCwgCi0gICAgMTI4MjEzLCAxOTQ4NjEsIDgzMzU1LCAxMTk1NCwgNzAzNDgsIDE0NTAsIDEyOTg2LCAxMzQwLCAwLCA2NTQ0MSwgOTI3MjIsIAotICAgIDAsIDAsIDEyNTExNywgMCwgOTE3NTQyLCA3MzgxMiwgODMwNTMsIDY1MzksIDkyOTQ4LCAxMjY2MDcsIDEyMDcwMiwgCi0gICAgOTIzOTAsIDAsIDEyMDQ5MiwgNDExOTAsIDM5NzMsIDExOTM2NSwgNDU3NSwgNDExOTMsIDc5ODIsIDQyOSwgOTE3OTc5LCAKLSAgICA3ODg5MSwgMCwgMTk0ODQ4LCA2NTc5MiwgMTI4NDA4LCA4MzI4MiwgNjQxNywgMTE4OTE4LCA3ODE3OCwgMCwgMTI4OTcwLCAKLSAgICAwLCAwLCA0OTE5LCAxMDU5MCwgMTI4NTU2LCA3NzU1LCAwLCA5Mjk0MiwgNjQ1NDgsIDEyMDUwNiwgMTYyMSwgMTAyMTQsIAotICAgIDY1MTI2LCA2ODI1MywgMTI3MDA0LCA5ODM2MTYsIDEyMTg4LCA5ODM2NjgsIDE2MTcsIDgwNTAsIDAsIDUwMTUsIDAsIAotICAgIDExOTE3NCwgNDI1OTAsIDcwMzU0LCAxNzU2LCA3ODE4MSwgMCwgNjU3NjgsIDYzNTIsIDQxODkyLCAwLCA3NTU1LCAxMzEwMywgCi0gICAgNTQwOCwgMjgxNywgMTIxNCwgNjk5MTksIDkyMzM1LCAxMjEyMDgsIDAsIDY4MjI0LCAxMjA4NzIsIDQxNzY0LCA3OTU3LCAKLSAgICA4Njg5LCA2NDcyMywgMTA1NiwgNDI4OTYsIDc0MTQ3LCAzNTU5LCA5ODM5MTgsIDU1Mjg2LCA3MDczLCA2NTg1MCwgMTIzMjcsIAotICAgIDcwODUzLCAxMTkwMjgsIDAsIDEyODEyMiwgMTI4NDQyLCAyMzQxLCA4NDUwLCA4NDg0LCA4NDc0LCAxOTQ4ODQsIDY4MzIyLCAKLSAgICA3MDA3OSwgODQ2MSwgNjc3MjEsIDEyMTUzLCAxMjc5OSwgMCwgNDM3MDksIDQzNzA4LCA5NDUxLCA3NTcxLCAxMzA3MywgCi0gICAgNDM4NDcsIDAsIDY4MSwgOTgzMjU0LCA3MDMsIDEyNzUxOCwgMzI3MiwgODc4MSwgMTI4OTQsIDcwMDc3LCAxMTcwOSwgCi0gICAgOTIyODgsIDcwNTE0LCA5ODM5MDAsIDgzMTc1LCA3MTQzNiwgMTEzMzgsIDEyMDc2OCwgMzI3NiwgMTI4OTY4LCA5MTc5ODksIAotICAgIDY1OTI4LCAwLCAxMjEzNjcsIDY1MDIxLCA2NDc5NSwgNzQ1NzQsIDAsIDEwMDQ3LCA3ODgxNCwgMzI2MiwgNzg4MTEsIAotICAgIDQyNzExLCAwLCAwLCA2ODQ3OCwgMTYzLCA1NzYsIDk4OTUsIDE2NTUsIDcwMTMxLCA3NDU5MSwgNzg4MTUsIDc4ODE2LCAKLSAgICA2Njg4OCwgMCwgMCwgNzA1MTMsIDEwMDM5LCAxMjA0MjYsIDU2MjYsIDU2MjMsIDU3MTcsIDU3NzYsIDQzNDg4LCA4MzQ5NywgCi0gICAgNjY4ODUsIDQxNTkxLCAxMTAzNiwgNjUyNTIsIDkyMzgyLCAwLCAwLCAxMjAxMTEsIDY3ODQ4LCAxMjgxMjgsIDk4MzU5NSwgCi0gICAgOTgzNDcyLCA4ODg3LCAxMjc1MjEsIDcyOTUsIDExMDMxLCA5ODMzMzYsIDQzMTU3LCAwLCA4OTQ2LCAxMDM0OCwgMTA0MTIsIAotICAgIDg3NTUsIDExOTE1MiwgMCwgNTcxOCwgMTMyMjEsIDAsIDAsIDc4MTM1LCA3MDUxNSwgOTE3NjE2LCA4ODEwLCA3NDQ5OSwgCi0gICAgNjg2LCAwLCA3MTM2MiwgNDYxOSwgMTE4OTU0LCA2NjU0LCA3Mzc2OSwgNzQ0MjYsIDAsIDEyMDQwLCA2NTY4OSwgMTAxMjgsIAotICAgIDY1MTE4LCA2ODAyOSwgMTE5MTUxLCA3NDIwNSwgOTI2NTEsIDEyODkwMiwgMjQwMSwgNjgxNDQsIDg3OTIsIDk4MzY0OCwgCi0gICAgNjgwNDQsIDY1NDU1LCAwLCA3NDMyOCwgMCwgNzQ1NjEsIDEyMDc2MywgMTI4ODYsIDEyMDk1MiwgNjY2MjQsIDEyNjU3OCwgCi0gICAgNDM1NTcsIDEwMzAwLCAxMDE2MSwgMTAzOTYsIDcxMjEwLCA3ODYwMiwgMTE4OTQ1LCA5OTg0LCA3Mzg1MSwgMzAxMCwgCi0gICAgNjQ0MSwgNzAzNDksIDE0NTgsIDQxNDc1LCA3MjQyOSwgOTM5NzUsIDEyNzkxMCwgMTE0NzksIDEyMTM1NSwgMTIwMzU2LCAKLSAgICA2MzUwLCAxMjg2NCwgNjk2NzQsIDcxNDczLCAxMDYxLCA2NDc4MCwgMjAwMSwgNDMxMTEsIDU1MjMwLCAxMjQ5NDYsIDQwNTIsIAotICAgIDExMzY3MywgNzYyNiwgMCwgMTIwOTA3LCAxMDQ1LCAwLCA1NjMxLCA0MTExMywgMTI3NTQ0LCAwLCA0MzcwNywgNzQxMjcsIAotICAgIDAsIDk4MzcxOCwgODQ4NiwgMCwgNzM3NTgsIDIzMzUsIDQzNjIsIDk4MzE5NSwgMTI2NTYxLCA2OTIyMSwgMTAyNSwgCi0gICAgMTI3Mjc3LCA0MjYyNSwgNzAzMjUsIDc4MDg0LCA0MTQ0MywgMCwgMTI4MjA2LCAwLCAxNzc0LCAxNTIzLCAxMjEzMzAsIAotICAgIDY4MDU5LCA0MTQ0NSwgNzgyMzYsIDExMjA3LCA4NTY3LCA0MTQ0MiwgMzk4OCwgNzQ4NDMsIDc4MjM3LCAxMTg5MTAsIDAsIAotICAgIDY1Mjc0LCA4NTY0LCA3ODE5OSwgNzgyMzgsIDEyNzUxNSwgMTIxMjcyLCAwLCA0MzQ0NiwgMCwgNjY1MTMsIDYyNTYsIAotICAgIDkxNzgwNywgNTc5LCA1NTIxOCwgMTAyMDYsIDc4MTk1LCA2Mzc1LCAyNjczLCA5ODM4ODYsIDExODE0LCAwLCA0NDg4LCAKLSAgICAxMjg3MTYsIDEyMDU1NCwgNjg0NTEsIDEwNDQ0LCAxMTg4NDYsIDEyNzMzNCwgMTE3OTksIDc0NDA3LCA2ODQ2NiwgNDQ4NywgCi0gICAgMTI3ODQ5LCA0MjgzMiwgMTAzMiwgMTIwMjY3LCA0MzQ1MCwgNzgyNTcsIDcyMDMsIDEyNDk5OCwgNjE0LCA3MDM2MSwgCi0gICAgMTI3MjE1LCAxMjA2MTUsIDExOTYyMiwgNzgyNjIsIDEyNzI3MSwgMTI3MzIzLCAwLCA0MzEyMSwgMTI3MjExLCAxMjgzNjYsIAotICAgIDkyNTEzLCAxMDUwLCA3NTQ5LCAxMjEyNjAsIDgyOTk0LCA5MzE0LCA3MDM2NSwgOTI4OTgsIDY4MDM5LCAxMjcwNjEsIAotICAgIDEwMDU3LCA3MDQzNCwgMTI3MzEzLCAxMjg1NzcsIDY2NTA0LCAxMjA5NjMsIDgyOTkyLCAyMzA3LCAxMjg0NTYsIDY0MzMzLCAKLSAgICAxMjczMTIsIDEyODIzMCwgNzM4NzMsIDk4MzcxMCwgOTQwMzUsIDAsIDEyNzk3MywgMTI4NzA4LCA3MDQ0NiwgMTAzNjAsIAotICAgIDY3NDYsIDEyMDQ3MywgOTIyNDUsIDQ0MCwgMCwgMTMwODUsIDkyMzMsIDc0MjE2LCAwLCAxMjc3ODUsIDk5NTcsIDEyODI4NSwgCi0gICAgNjY0NDcsIDgwNDYsIDY0OTYzLCA2NTc3NywgMTAxMjUsIDc0MjEyLCA0MjgxOSwgMTA5MTAsIDEyMDQyNCwgMTUyMSwgCi0gICAgOTg5NiwgOTM5NjUsIDEwNDg3LCA2OTg3OCwgMTI1MjcsIDY4NzM3LCA3OTcwLCAxMjUwNzMsIDEyODY2MCwgMCwgNjU3NjksIAotICAgIDUyNDMsIDk4NDksIDUyMzksIDY1NzcxLCAxMjE0MjksIDAsIDUyMzcsIDY5NzE0LCA2ODc1NiwgMTAxMDMsIDUyNDcsIAotICAgIDQ3NjksIDEyOTMwMiwgMTE4OTc3LCAxMjg3MywgMjI4MywgOTI5MzEsIDAsIDMwMDgsIDQ4OTYsIDEyODEwMiwgMTIwODcsIAotICAgIDAsIDU1MjMxLCA0MTEwMywgOTIyNTYsIDY0NTY1LCA0NzczLCAxMjA4NDYsIDc4NTQ5LCA3MDA3NCwgNDc3MCwgNjY4OTEsIAotICAgIDkxNzU2NywgODczMSwgNjUzNzgsIDY2OTExLCAxMjA2MTksIDkxMjIsIDEyODAzMywgMTI2NjAwLCA0Nzc0LCAzMDE5LCAKLSAgICA5OTk3LCAxMjgzNCwgMCwgOTQ1NiwgMTAyMTUsIDEyMDU0NywgMCwgNzg1NTYsIDAsIDEyMTMzMiwgNzQ3NzYsIDQyODEsIAotICAgIDQ3NjgsIDEyMDU3MiwgNDE1MzUsIDQwOTksIDkwMTcsIDY5OTkzLCA5ODM2OTIsIDc4MDk1LCAyMjI1LCA3ODA5NiwgCi0gICAgMTE4OTQ2LCAxMjEwOTcsIDAsIDc4MDk4LCAwLCA0MjgxNCwgODgwLCAwLCAxMTM3NjQsIDY2ODcwLCAyMTM0LCAwLCAKLSAgICAxMDExNiwgOTg3NywgOTIzMjksIDEyODk2MCwgMCwgNzA5NSwgODM3OSwgNzQxMTYsIDY3NzgsIDAsIDc4MDkwLCA4MjQzLCAKLSAgICAyNDI3LCAxMjgxNDEsIDcwOTMsIDAsIDExNTg1LCAxOTUwMDMsIDk5NjIsIDgyOTkwLCAxMjIyMywgMTI4NDg1LCA5MjQzMCwgCi0gICAgMTQzNCwgMTIwMjU0LCA1NjM3LCAxMTU3MywgMCwgMCwgMCwgMTk5NTEsIDgzMzg5LCA3NDQxOSwgMCwgMTk0Njg2LCAKLSAgICA1NTI4MywgMCwgNzAzNjMsIDc0NDM3LCAxMTU2LCA4NzQwLCA4MzI5NSwgMzc4MiwgNjQzMzEsIDAsIDQxMzcwLCAxMDE0LCAKLSAgICA4MjYxLCAxMjA5NTYsIDkxNzU5NiwgMTA4MzUsIDkxNzk2NiwgNjU1MzYsIDgzMjk0LCAxMjA0NjMsIDEyNTA1MSwgNzcwMiwgCi0gICAgMTE4ODI0LCAxMjg5NzYsIDQzMDEwLCA2NTc3OSwgNjU3ODMsIDExNTAsIDEwNTQ3LCA1NzAwLCAwLCAxMjA2MDMsIDY1MzgzLCAKLSAgICAyMzM5LCA0MjU5NCwgNTY5NywgMTE4Nzg4LCA3NTAxOCwgMTI4NTc2LCA3NDkyMywgNDIyNTcsIDU2OTYsIDkyNjc3LCAKLSAgICAxMjA0NjUsIDM4NjIsIDk2NDMsIDAsIDcwMTgzLCA3NjM0LCA2NTE2NywgOTg0NSwgMCwgMCwgNTcwMSwgOTcyMiwgNDE0OTAsIAotICAgIDEyODcxOSwgMTQyNiwgNjgyMTcsIDk4MzYxNCwgNjg0NDcsIDQyMjA0LCA1NTI3MCwgODU3MSwgNjc0MDMsIDc4MDY3LCAKLSAgICA0Mzg1OSwgNzg4MTgsIDkyNzE5LCA0MzE4MiwgMTIxODQsIDAsIDQyMDIyLCAwLCAxMDI4MSwgMCwgNTY1MCwgNDMxOTQsIAotICAgIDY0NzEyLCAxMDc0NCwgNzg4ODcsIDk5MCwgNTY0NywgMCwgNzM4NywgNzg3MzQsIDQxMTE0LCAxMTQ3NywgNTY0NiwgCi0gICAgMTI4NzksIDExMDE4LCAxMjgzNjIsIDM5NDUsIDkyNTg5LCA5ODM0NjYsIDE5NDk4OSwgNzg4ODMsIDAsIDc4MjEyLCAKLSAgICAxMjc3NDYsIDEwMjAsIDczNzYzLCA5ODM4MzUsIDc4NzMxLCA1NjQ4LCA2NDc0OCwgMTIwOTIwLCA3ODczMywgMTAyMDUsIAotICAgIDM1NDUsIDk4MzU4NSwgNjk4NCwgMTI4MDA4LCA3NDA1MSwgMTI4OTAxLCA0MzI0MiwgMTIwNDU4LCAyNjY3LCAxMjgxNzMsIAotICAgIDEyNTAzNywgMCwgOTkxMSwgMCwgNjUwMjAsIDEwMDk3LCAxMTkxNjYsIDEyNzE0NSwgOTgzNjYyLCAxMTg4MzYsIDk4Mzc0OCwgCi0gICAgNzgyMDgsIDExNDAsIDc4NDI2LCAwLCAxMDE1OSwgMCwgMCwgODEyOCwgMTI4NjQ0LCA2ODMyNiwgMTk0OTExLCAxODE1LCAKLSAgICAxOTkxMCwgODkwLCAxMjQ5MzUsIDMyNjcsIDkyMjkxLCAwLCAxMDEyMywgMTIxMzk4LCA0NDEwLCAxMDQxLCAxMDU3NiwgCi0gICAgNjM1NCwgOTI1ODEsIDU4MCwgNzQyMzIsIDk4Mzc0NiwgMTI4MzQ3LCAwLCAwLCAxMjgwOTgsIDE5OTM4LCA2NTkwNiwgCi0gICAgMTI3ODE5LCA5MTc4MTEsIDAsIDMyOTgsIDUzNzUsIDEwMTQyLCAwLCA4MjE1LCA5MjYzMywgNjEzNCwgNDEyNDYsIDY0NDAyLCAKLSAgICA5ODMxNDcsIDY5ODk5LCAxOTQ5MzgsIDAsIDEyMTQyNiwgNDEzODIsIDkxNzkyNywgMTI4NjUzLCA1MTczLCA2NTM0OCwgCi0gICAgNTI3LCAxMjExNzQsIDExMzc4MiwgNzg0NjksIDEyODI1MCwgNzg3OTcsIDExOTE1LCAwLCAwLCAxMDA3MiwgMCwgNDI2OTUsIAotICAgIDIzMjksIDQyMjUwLCAwLCAxMTE4NywgNjk2NjcsIDEyMjQ1LCAxNTY4LCA5NDAzMywgODM0NjAsIDAsIDExMzcwNSwgCi0gICAgOTE3OTEwLCAxMTIwMSwgOTI3MDgsIDc0NzY5LCAxMjY0NzAsIDY3NjgwLCA5MDY5LCA2MTQ0LCAwLCAxMTk4NDAsIDczODIyLCAKLSAgICAwLCAxMjgwMTAsIDY0OTE3LCA0MTUyMSwgMTE4OTM0LCA0OTQsIDEzMjUwLCA5MjI1MCwgNjUwOTgsIDYzNjQsIDk1NiwgCi0gICAgMTEzNzkyLCAxMjgzMCwgMTA0NjIsIDczNzQwLCA3MzczNCwgMCwgMCwgOTgzNzM5LCA2NjQ0OSwgMTMyNjMsIDc0MjgxLCAKLSAgICA2OTIxNywgMTMxNzEsIDEyNzc5NiwgMTIwNTY0LCAwLCA2Mzg4NSwgMTI3MjUxLCAxMDQ0LCA0MTI3NiwgMTI4MzYzLCAwLCAKLSAgICAwLCA0MjA2OCwgMTE3OTUsIDEyNDk4NSwgMCwgMTI3MjAyLCAwLCA0MjQ1MCwgMzkwNywgMCwgNjQ1MjYsIDExODI5LCAKLSAgICA2ODE5NywgMTIyOTUsIDAsIDExNDc1LCA3MDMyOSwgMzAyMCwgMTE1MzcsIDAsIDY2NDQxLCAxMjA3NjEsIDcwOTgsIAotICAgIDEyNTA3MSwgMCwgMTA1NywgNTY2LCA0MjY5NiwgMTI3MjM5LCAzMDE2LCA0MjI3NCwgNDM0NjQsIDY2NDkwLCAxMjkyMSwgCi0gICAgNjY1NzEsIDc4NDcyLCA3MTIwNywgMzAwNiwgNDYyMCwgMTI3MjM3LCA5ODMzMzAsIDAsIDAsIDY0NjU5LCAwLCAxMjc3NDksIAotICAgIDU1MjUzLCA2MzU3LCA2MzYyLCA4NjI2LCA3MTMzNywgMjIxNiwgOTA5MCwgNjUzNzcsIDQxNTk2LCAwLCA0MjkyMCwgMTY5OCwgCi0gICAgMCwgNjQ0NzcsIDkxNzg1MywgNDM4MTMsIDEwNTMsIDAsIDc4MjY5LCAwLCA5Mjk3NywgMTA1MiwgMTA1MSwgNDU5LCAxMDYwLCAKLSAgICA3NDM0OSwgNjY0NzksIDY3Njg5LCA2Njg3MSwgOTE3ODQ1LCA3MDMyNywgNDI0OTAsIDY4OSwgNjUwOCwgNDE2MywgNDIyOTgsIAotICAgIDg2MzksIDY2NjQxLCA0MjQ2LCAwLCA0MzUxNCwgMTIxMzAsIDk4MzMwOCwgNDIzMzcsIDY0NTk2LCA2NDM3NSwgNjY0ODEsIAotICAgIDEyNzg1MCwgOTgzMTQ0LCAxMjc4MjgsIDYzNTksIDAsIDQzNDcxLCA5ODM3NjgsIDAsIDgzMzQ1LCA3NTA2NSwgMCwgNjM1OCwgCi0gICAgNjM2MSwgMTkyNiwgNjM1NiwgOTI2MjcsIDc4OTgsIDgxMTAsIDEwOTM1LCAwLCAxMDA2OSwgNTgzMCwgMTI3NzczLCAKLSAgICA0MzY4NSwgNzQzMDcsIDAsIDQyOTEwLCA4MzMwMSwgODY5MywgNzg2MTEsIDExOTU2NSwgMTI4NjIxLCAxMjA0MTMsIAotICAgIDkyMTkyLCAxMjE0NTQsIDY1ODk0LCAxOTQ2OTQsIDAsIDY0Mjk2LCA5ODM2ODEsIDk4MzY0NCwgMTk0OTU5LCAxMTkxODcsIAotICAgIDIxMzUsIDExODM2LCAwLCAwLCA3ODg2OSwgNDIzMTMsIDU1NzksIDkyNDEyLCA3MDM4NCwgMTI5MTEzLCA0Mzg1NCwgCi0gICAgNzE5MTMsIDU1NzgsIDExODQwLCAxMjgxMTUsIDQyMDIzLCA2MjM0LCA1NjY5LCA5MjI3NSwgNzg2MjAsIDEyMTE3MSwgCi0gICAgNjg4MzMsIDkyMjU0LCA2ODIwMiwgNTU4MywgMCwgMCwgNDI0MjYsIDU1ODAsIDQyMjc2LCAyOTIzLCA4OTIsIDIyMjAsIAotICAgIDQyNDY1LCA0MTMzMCwgMTk0OTg3LCA1Nzk1LCA2NTUxMiwgNjg3NzQsIDY1NzAyLCA2ODc3MCwgMTIwODAxLCA2NTI1MSwgCi0gICAgNjgyMjgsIDY1NzEwLCAxMjgzOTksIDEyODQyOSwgNjc2NzIsIDY4NzgzLCA1MzcwLCA3MDQ2NSwgMjkzMSwgMTYzOCwgCi0gICAgMTA5NjYsIDEwMTg4LCA2NTg3OCwgMTE4ODQ4LCAwLCA2OTY5NCwgNjk4NzksIDc0NTg1LCA4MTcyLCA0MjAxNywgOTI3NTYsIAotICAgIDEwODQ0LCAxMjEwMTYsIDEyODE5NSwgOTI0MjQsIDYzNzQsIDExOTk5OCwgMTIxMDc1LCAyODYsIDc4MDIzLCAxMDYyLCAwLCAKLSAgICAxMTk5OTksIDAsIDczOTUsIDEyNzc4MywgMTA3MCwgNjQ5MDAsIDcxNTMsIDYwOTUsIDQxODY1LCAxOTQ2NDAsIDMwMTUsIAorICAgIDk2NzIsIDQxNDI3LCA0MzU0MSwgNDMzMTcsIDc0OTI0LCA5MTc3NzcsIDEyODU1NywgNDE0MjQsIDExOTU2MywgMTIwNTQ2LCAKKyAgICA5ODM4ODgsIDEyODIxMiwgMCwgNDE0MTcsIDEyNjEsIDAsIDEyODI2MSwgMTIxMDIsIDExOTY2MiwgNDE0MDEsIDEyODkzMiwgCisgICAgMTI3NTM4LCAxMTM3NjcsIDc4MjUxLCAxMjQ5NDMsIDQyMjkwLCAzMjc1LCA5MjQ3MiwgNDIzMjksIDY4ODUwLCA3NDkwMSwgCisgICAgMTIxMDA1LCAxMjc5NTEsIDkyMzg4LCA2OTY0OSwgMTA5ODksIDc0MjM0LCAxMTM3ODEsIDEwNTk4LCA3NDEwLCAyNjY5LCAKKyAgICA5MDMsIDE5NTA5MSwgMjkyMCwgMCwgMTI3MjMyLCA3NDYwMywgNjQ1MDQsIDE5OTI4LCAwLCAxMjg0MTEsIDM5MTcsIAorICAgIDc4MTg1LCAxMTczMiwgMTI4NTEyLCA3Mjc5NywgNDE0NDgsIDQxNDYxLCAxMjg4MjMsIDAsIDExMzcyMSwgMTEzNzU4LCAKKyAgICA4ODE5LCAxMjY2MywgMCwgNDExODQsIDc0MDE0LCAyMzIsIDc0ODM1LCAxMjA2NDYsIDkxNjgsIDY1Nzg2LCAwLCA4MzI5MywgCisgICAgMTIxMDA3LCA5MDk0LCA5MTc3OTQsIDExNzU4LCA2ODQyNSwgNzE4ODYsIDEwNjQsIDQyNDY3LCAxMjgwNDQsIDEwMTE1LCAKKyAgICAxOTkyNCwgOTI3MTEsIDExMzY4MiwgNzg2MiwgNjQ1NTEsIDEzMjI0LCA4NTE2LCA0MTg2MiwgNjY2NTAsIDc1NjEsIAorICAgIDc4NjE4LCA2OTc5MywgMTg3OCwgMTI4NjQxLCA3MTQzNCwgMjkxMSwgNzI3NTgsIDQxMTc4LCA1NDI3LCA2NDgyMywgCisgICAgNzg2MTUsIDgzMDY2LCAzNzg3LCA0MTE3NCwgODMwNTUsIDQxNDU4LCA2NzE0NywgNDE0NjMsIDQyNDEzLCAxMTI5MiwgCisgICAgMjQwNiwgNzc1LCAwLCA2NTU4NCwgNjk5MjMsIDYwNzQsIDk2MTgsIDY4MDU2LCAxMjE0ODAsIDQzNDQwLCA3NDUzOSwgCisgICAgMTk0OTAxLCA0MTQzNiwgMzY1NiwgOTE3ODA1LCAxMjA2MDAsIDQxNDU2LCA2NzY5NCwgMTU5OSwgMTEzMzMsIDgzMTM5LCAKKyAgICA2NzAzLCA4NTEzLCA4MzEzNCwgMTYxMywgODMxMzYsIDY4NDU2LCAxMjU5OCwgODMxMzEsIDgzMTMyLCA3ODc0NSwgNzQ1MDAsIAorICAgIDQxNDYwLCAxMDE0NSwgMTA1NDIsIDk5MzcsIDc4NzQ2LCA2NzE0NCwgOTkwNSwgODMxNDUsIDY1NzMwLCA4MzE0NywgCisgICAgMTIwMzc0LCA4NDI3LCA4MzE0MiwgNTUyNDYsIDEyMDM3NiwgNDI4OTUsIDExNDk3LCA2NDY4NywgNzQwMDgsIDQyNTkyLCAKKyAgICAzODcxLCA5ODM1ODQsIDEyODMwNSwgOTExMSwgNTc0MSwgODMzMjUsIDEyMDk4NywgMTIwMzY2LCAxMTkxMTEsIDExMTUwLCAKKyAgICAxOTQ4NzYsIDEyMDM2OCwgMTI4ODU1LCAxMTY0OCwgODMxMjYsIDgzMTI3LCA4MzEyOCwgNDE1ODcsIDcwMzkxLCA4MzEyMywgCisgICAgNzExMDgsIDQyMTEzLCA5MTc5NTYsIDEyNzE1NSwgMTIxNzIsIDgzMTIxLCA3MTQ0MywgNjUyOTgsIDY1NzIzLCA2ODI4OSwgCisgICAgNzM4NzEsIDY1NzI0LCA3OTI4LCAxMjAzNTQsIDk4MzA5NSwgNDE1OTUsIDczNzMwLCA2NDY3MSwgNDIxMTgsIDczODMwLCAKKyAgICA2NjA0MiwgMTAzNTUsIDEyMTUwMSwgNzg3NSwgMTAwMzkwLCA0MTU5OCwgMzk5MywgMTIxMjY5LCAxNTQ1LCA0MDk3MSwgCisgICAgNTM2LCA3Mjg3NCwgNDMwMjksIDAsIDEyMTAwMCwgNjUxNzMsIDY1Mjg2LCAxMjEyNTQsIDcwMzMxLCAxOTUwMTIsIDAsIAorICAgIDk0MDY1LCAwLCA0MTM3NSwgNTQwMiwgODMwMzUsIDEyODE5MiwgMTY4NywgMTIwNTAzLCAxMjg1NTksIDAsIDc4MTk0LCAKKyAgICA2NDMyNiwgNDA5NjksIDEwNTI2LCA3Mzc0NywgODMyMywgNDA5NjgsIDEzMzksIDExNzMxLCA3ODc1NiwgMTI3MTA4LCAKKyAgICA2NTQ2MCwgMTIyNDIsIDEyODUxMywgODAyMCwgMTA4NDMsIDExNTU0LCA5MTc4NjcsIDAsIDgyNjYsIDQxMDA2LCA2NTcyMiwgCisgICAgODMwNDEsIDEwNzEwLCA3NDA0NSwgMTE4OTQyLCA2NzY2NywgNjQ1NjcsIDExOTE1NSwgODMzMTMsIDcwNzI5LCA3MTg4OSwgCisgICAgNjc4NTcsIDEwMDU4MiwgMCwgOTI0MTgsIDExNzU1LCA2NjMwNSwgNjgzMzIsIDAsIDEwOTE3LCA5Mzk3OSwgMCwgMTEyNzIsIAorICAgIDIwNDAsIDQxMjQ3LCA0MTMyNiwgMTk1MDYwLCAxNzQxLCA0MjM3MCwgMTIyNywgODMxMTksIDgzMTIwLCAxMTQxMywgCisgICAgMTI2NTgzLCA4MzExNSwgNTI4MywgMTU4NiwgNDk3OCwgNjgwNTAsIDE5ODQsIDExODMwLCA0MzgxOSwgOTIyOTMsIDQwOTg0LCAKKyAgICA0MjkwNCwgOTM3MywgMCwgMTI5MTYsIDYyODQsIDE5NDg4OCwgNDE2NjMsIDEyNzg5NSwgOTgzMDQ1LCA2ODMxMywgOTIzNywgCisgICAgOTM4NSwgNDE2NDgsIDAsIDEyODk1MywgMjI5OSwgNDE2NjYsIDE4MzAsIDczNzgzLCAyMDU2LCA0MTI4NywgOTI2MTAsIAorICAgIDk4MzI5OSwgNzE5MTcsIDQyMjE5LCA2ODA4NiwgMTIwMzI3LCA0MTk4NywgNDE2NzYsIDEyNTIxOSwgNzI4NDAsIDEyNjU1MywgCisgICAgNDE2NzAsIDAsIDkyNTkwLCAyNzk2LCA1NTI5MSwgMTE2ODMsIDk5MDIsIDc0NTIxLCA2Nzk4OCwgMTE0NTEsIDgyOTk1LCAKKyAgICA3ODg1NSwgNDI2MzEsIDIzNTksIDcxODkwLCA2Nzg0NCwgNzQxNjQsIDQxMjM4LCA1NDgsIDExNDA1LCAxMzEzMywgNjQzNjgsIAorICAgIDEyNzI3MCwgMTIwOTI1LCA2NjI3MiwgMzk3LCA0MzYyMiwgNDIxMzksIDk1NDcsIDk1OTAsIDEyODIzOCwgMTYxNCwgCisgICAgNDM2NjEsIDY0MzU2LCA2NjMwNywgNjY1MSwgMTM1OCwgMTIwODcxLCA0MjgsIDk2MjAsIDE0NjYsIDc4MTEyLCAxMDk4MiwgCisgICAgMTEzNzg1LCAxMzMzLCA3MTA0LCA0MDcsIDY0MjUsIDEyODgzNCwgNzQyNTMsIDEyNzk5MywgMCwgOTgzMTUxLCA1ODA0LCAKKyAgICAxMTk3NiwgODU1NCwgOTI3MjEsIDAsIDcwMTY3LCA5MDU3LCA0MjI5NCwgNDEyMTgsIDEyNTA5NywgMTIxMjkwLCA3ODEzNywgCisgICAgMTg4MywgMTA5NTIsIDgwNDgsIDcwNDQzLCA0MTIyNSwgOTI2MjEsIDQyOTE1LCAxMjg2MTYsIDEyODMxOSwgMTI4NjI5LCAKKyAgICA0NDA3LCA3NDY0OCwgNjU4MDksIDExODM3LCAxOTQ4MjEsIDg0NDgsIDcxNDEsIDc0MTgzLCAxMjAzMzQsIDEyNjc1LCAKKyAgICAxMjY1OSwgNzQ2MzQsIDQyMzYzLCAxMjA2MjQsIDY4MDc3LCA1NTI3MywgMTA3NjYsIDEyMDEyLCAyMzg2LCA2NDczMiwgCisgICAgOTE3MCwgOTE3ODIxLCA5MTIzLCA2NDU4NSwgMTAyOTYsIDExOTE1OCwgNzE0MCwgMTA5NzcsIDEyNzM3OCwgNDE2NCwgCisgICAgOTA4MSwgMCwgMTIwNTY5LCA0MjA0OSwgNDIwNDIsIDg3MDksIDEyODI4MywgMTI2NDc3LCAxMjA2MzcsIDQyNDE5LCAKKyAgICA2NDc5OSwgNDIwNDcsIDEyOTQxNCwgMTk0ODIwLCA4NDcwLCAxMTgwNywgNjU4OTcsIDU3NywgMCwgMTI2NjE2LCA3NDMwMCwgCisgICAgMCwgNjgwODcsIDc0ODQwLCAxMjY0NzQsIDkxNzUzOSwgMTI4NzkxLCA5MjIyNCwgODczNiwgMTQxNCwgNDI2NDMsIDk2ODMsIAorICAgIDQzNDg2LCA3NDM0NCwgMCwgMjUzNiwgOTgzOTQxLCA2NjMzMCwgMTIxMjM4LCA3Mjg2OSwgMTIwNTYyLCAxMTk1NTgsIDAsIAorICAgIDAsIDEyNzgzMSwgNjYzMTcsIDY5OTQ1LCA2NjMxNSwgMjEwNiwgNjc4MDksIDExMjczLCAxMjA5ODYsIDQzMDA0LCA3NTQxLCAKKyAgICA4Mjk4OCwgMTk0NzM4LCA5NjEsIDY0MzA3LCA2NjMyNCwgNjQ5MDYsIDEyNTA4MCwgMzEwNiwgNjU5MTcsIDQxMjg0LCAKKyAgICAxNjk2LCA5ODMxMzAsIDg5MSwgMTIxMDUsIDAsIDQyNjI0LCAxMjgwMiwgMzI2NCwgODgyNCwgMTMyNjgsIDQzMDAzLCAKKyAgICAxMDkzNiwgMTE5MjU1LCAwLCAwLCAxOTQ4MjYsIDkyNjg4LCAzNTY2LCAyMzIyLCAxMjAzNzEsIDcwODMxLCAxMTQ0OSwgCisgICAgMTI4MTg3LCA0Mjg2OCwgNDEyODUsIDM1NDcsIDk4MzcxNywgMCwgMTEzNzQ2LCA5ODM0MDAsIDQzMjE2LCA2MDg5LCAKKyAgICA3ODY4MiwgNjg0OTAsIDEyMDU3OCwgNDE3MCwgMTAyOSwgMTI3NzYxLCAxMDAzODQsIDExOTIyNCwgNDIzNzQsIDk4MzU3MSwgCisgICAgNzQ0LCA5Mjg4MywgMTEzNzM5LCAxOTQ5MjQsIDY1ODIzLCAxMjc4MjYsIDExMTgyLCAzNTUxLCA5MjkzOCwgOTgzODkxLCAKKyAgICA0NjIzLCA1NTI2OCwgMTI4NzM4LCA0NTk4LCA5ODMxNjIsIDY1MTM2LCAxMjcxMzYsIDAsIDEyODE2OSwgMTA4NTEsIAorICAgIDEyMDg3NiwgNjE3OSwgOTI2MDIsIDYxODAsIDAsIDExOTUyLCA3NDU3OSwgNzg2NDgsIDExOTcyLCA3ODY0NiwgNzg2NDcsIAorICAgIDc4NjQ0LCA3ODY0NSwgMTc3LCA3ODY0MywgNjE3NiwgMTIwNTgwLCA5ODM2OTYsIDEyNTEzNSwgNjE3NywgOTAyMCwgCisgICAgNzg2NTIsIDc4NjUzLCA2MTc4LCAxMjAyNDksIDEyMDI0MiwgMTI4MDI3LCA2NzY3MywgMjIxNCwgODc1NCwgMTIyODk0LCAKKyAgICAxMDA2ODksIDIxMzcsIDQzMDgxLCAxOTQ2NjMsIDExOTExNCwgOTEzNiwgNjY4ODksIDQ0MDEsIDQxMjgwLCA3MDgwMSwgCisgICAgODk3NCwgMjMwOCwgMTk0NzUwLCA3NDE0OSwgMTAxMDUwLCAyMzE4LCAxMjA2OTMsIDY2MzYxLCA4MTk4LCA2NTYyNiwgCisgICAgNjQzNjAsIDEyNjAxLCA0MjUzNiwgNDM5MzEsIDEyMDgyNywgNDM5MzAsIDkyNDYyLCA2OTcwLCA1NDA0LCA0MzMzMiwgCisgICAgMzY2NywgNzkzNiwgMTI5MjUsIDEyNjk4OSwgNjM4NSwgMTI4NDgyLCAxMjg0MDMsIDcyODYxLCAxMDg3NCwgNjU1MDUsIAorICAgIDEyMDAwMiwgNzI3ODUsIDQyMDUzLCAyMDc1LCA0MjA1NywgMTEwODMsIDQyMDUyLCAwLCA2NzI2NiwgNjc2NTEsIDEyMTEwNCwgCisgICAgOTY2NSwgOTIzMDAsIDk4MzY2NiwgMTMxODEsIDkxNzYxNywgMCwgMTI4OTM3LCA3MDA4OCwgNzQxNDgsIDAsIDcwNDE5LCAKKyAgICA3Mjg2OCwgMTIwMjI5LCAxMjAyMjQsIDc0MTcyLCA0MTE0NSwgNjY0MDQsIDk0MDk2LCA3NDQyMiwgNDExNDgsIDg2ODMsIAorICAgIDc1OTQsIDExMzY4NiwgNzUwMzMsIDExOTA5MCwgMTA4NjksIDQzNDU4LCA0MTE0NiwgOTI0MDcsIDExNDQxLCAxMjE0NTYsIAorICAgIDM1MTIsIDExOTYzMywgOTI5NjUsIDgxMDMsIDc4MTQwLCAxMjA4NDcsIDY1MTg0LCAxMTc4MCwgNDE1NjMsIDQyNzk2LCAKKyAgICAxMjkwNTUsIDY5NzQyLCA0MTU0NCwgNjUxNDYsIDY2ODAzLCAwLCA3ODEwOSwgMTI5MTc3LCAxOTk0MiwgMTI2NjE4LCAKKyAgICAxMTg5MDgsIDc5ODgsIDEwNDM2LCA3NDI3MywgMzI3MSwgNzM4MDQsIDY0NzExLCAxMjA4MjQsIDk0MDY0LCA5ODMwNzEsIAorICAgIDEyODY1MiwgMzgwNCwgMTMwNzAsIDExNTU3LCA0MjA0NCwgMTIwODU5LCAxMDk1LCAwLCAzNTk5LCAxMjc3NzQsIDAsIAorICAgIDEyODg2MSwgODUxNCwgMCwgOTE3NTc5LCAwLCA3NDM0NiwgNjY2OTcsIDEyODM4NSwgMTE2ODQsIDk4MzE0OCwgOTI0ODYsIAorICAgIDkxNzYwMywgMCwgNDIwNDMsIDQzMjMyLCA2NjY3NywgNzQ5MjcsIDQyMDQ2LCA3Mjg2MiwgNDAzNiwgMTI2NDgxLCAKKyAgICAxMjkzNzMsIDEyODIxMywgMTk0ODYxLCA4MzM1NSwgMTE5NTQsIDcwMzQ4LCAxNDUwLCAxMjk4NiwgMTM0MCwgMCwgNjU0NDEsIAorICAgIDkyNzIyLCAwLCAxMjcwNjIsIDcyODY1LCAxMDA4MTgsIDkxNzU0MiwgNzM4MTIsIDcyODc1LCA2NTM5LCA3MzgzNiwgCisgICAgMTI2NjA3LCAxMjA3MDIsIDkyMzkwLCAwLCAxMjA0OTIsIDQxMTkwLCAzOTczLCAxMTkzNjUsIDQ1NzUsIDQxMTkzLCA3OTgyLCAKKyAgICA0MjksIDEyMjkwMywgNzg4OTEsIDEyNzg3NCwgMTk0ODQ4LCA2NTc5MiwgMTI4NDA4LCA4MzI4MiwgNjQxNywgMTE4OTE4LCAKKyAgICA3ODE3OCwgMCwgMTI4OTcwLCA2Njc4NiwgMCwgNDkxOSwgMTA1OTAsIDEyODA5MywgNzc1NSwgMCwgOTI5NDIsIDY0NTQ4LCAKKyAgICAxMjA1MDYsIDE2MjEsIDEwMjE0LCA2NTEyNiwgNjgyNTMsIDEyMDY4OSwgOTgzNjE2LCAxMjE4OCwgOTgzNjY4LCAxNjE3LCAKKyAgICA4MDUwLCAxOTUwMzEsIDUwMTUsIDAsIDExOTE3NCwgNDI1OTAsIDcwMzU0LCAxNzU2LCA3ODE4MSwgOTgzOTEwLCA2NTc2OCwgCisgICAgNjM1MiwgNDE4OTIsIDEyNTE4NiwgNzU1NSwgMTMxMDMsIDU0MDgsIDI4MTcsIDEyMTQsIDY5OTE5LCA5MjMzNSwgMTIxMjA4LCAKKyAgICAwLCA0MjkyNiwgMTIwODcyLCA0MTc2NCwgNzk1NywgODY4OSwgNjQ3MjMsIDEwNTYsIDQyODk2LCA3NDE0NywgMzU1OSwgCisgICAgMTE5MTYyLCA1NTI4NiwgNzA3MywgNjU4NTAsIDEyMzI3LCA3MDg1MywgMTEzNzIwLCAwLCAxMjgxMjIsIDcyNzYxLCAyMzQxLCAKKyAgICA4NDUwLCA4NDg0LCA4NDc0LCA3Mjg4NSwgNjgzMjIsIDcwMDc5LCA4NDYxLCA2NzcyMSwgMTIxNTMsIDEyNzk5LCAwLCAKKyAgICA0MzcwOSwgNDM3MDgsIDk0NTEsIDc1NzEsIDEzMDczLCA0Mzg0NywgMCwgNjgxLCA5ODMyNTQsIDcwMywgMTI3NTE4LCAKKyAgICAzMjcyLCA4NzgxLCAxMjg5NCwgNzAwNzcsIDExNzA5LCA5MjI4OCwgNzA1MTQsIDEyNzA1OSwgODMxNzUsIDcxNDM2LCAKKyAgICAxMTMzOCwgNzI3OTAsIDMyNzYsIDEyODk2OCwgMTIwMjMzLCA2NTkyOCwgMCwgMTIxMzY3LCA2NTAyMSwgNjQ3OTUsIAorICAgIDc0NTc0LCAwLCAxMDA0NywgNzg4MTQsIDMyNjIsIDc4ODExLCA0MjcxMSwgMCwgOTgzNDkwLCA2ODQ3OCwgMTYzLCA1NzYsIAorICAgIDk4OTUsIDE2NTUsIDcwMTMxLCA3NDU5MSwgNzg4MTUsIDc4ODE2LCA2Njg4OCwgMCwgMCwgNzA1MTMsIDEwMDM5LCAKKyAgICAxMjA0MjYsIDU2MjYsIDU2MjMsIDU3MTcsIDU3NzYsIDQzNDg4LCA4MzQ5NywgNjY4ODUsIDQxNTkxLCAxMTAzNiwgNjUyNTIsIAorICAgIDkyMzgyLCAwLCAwLCAxMjAxMTEsIDY3ODQ4LCAxMjczMDksIDk4MzU5NSwgOTgzNDcyLCA4ODg3LCAxMjc1MjEsIDcyOTUsIAorICAgIDExMDMxLCAxMjUyNTUsIDQzMTU3LCAxMDA0NTEsIDg5NDYsIDEwMzQ4LCAxMDQxMiwgODc1NSwgMTE5MTUyLCA2NzM0MywgCisgICAgNTcxOCwgMTMyMjEsIDk4MzM0MSwgOTgzMjc4LCA3ODEzNSwgNzA1MTUsIDkxNzYxNiwgODgxMCwgNzQ0OTksIDY4NiwgCisgICAgMTk0Nzc2LCA3MTM2MiwgNDYxOSwgMTE4OTU0LCA2NjU0LCA3Mzc2OSwgNzQ0MjYsIDEyNzUyMywgMTIwNDAsIDY1Njg5LCAKKyAgICAxMDEyOCwgNjUxMTgsIDY4MDI5LCAxMTkxNTEsIDc0MjA1LCA5MjY1MSwgMTI4MTM4LCAyNDAxLCA2ODE0NCwgODc5MiwgCisgICAgOTgzMTc5LCA2ODA0NCwgNjU0NTUsIDEyOTMxNSwgNzQzMjgsIDAsIDc0NTYxLCAxMjA3NjMsIDEyODg2LCAxMjA5NTIsIAorICAgIDY2NjI0LCAxMjY1NzgsIDQzNTU3LCAxMDMwMCwgMTAxNjEsIDEwMzk2LCA3MTIxMCwgNzg2MDIsIDc4Nzc0LCA5OTg0LCAKKyAgICA3Mzg1MSwgMzAxMCwgNjQ0MSwgNzAzNDksIDE0NTgsIDQxNDc1LCA3MjQyOSwgOTM5NzUsIDEwMDgxNCwgMTE0NzksIAorICAgIDEyMTM1NSwgMTIwMzU2LCA2MzUwLCAxMjg2NCwgNjk2NzQsIDcxNDczLCAxMDYxLCA2NDc4MCwgMjAwMSwgNDMxMTEsIAorICAgIDU1MjMwLCAxMDA0NTQsIDQwNTIsIDExMzY3MywgNzYyNiwgOTgzODkwLCAxMjA5MDcsIDEwNDUsIDE5NTA4NiwgNTYzMSwgCisgICAgNDExMTMsIDEyMDQ5NCwgMCwgNDM3MDcsIDc0MTI3LCAwLCA5ODM3MTgsIDg0ODYsIDAsIDczNzU4LCAyMzM1LCA0MzYyLCAKKyAgICA5ODMxOTUsIDEyNjU2MSwgNjkyMjEsIDEwMjUsIDEyNzI3NywgNDI2MjUsIDcwMzI1LCA3ODA4NCwgNDE0NDMsIDEyOTEzMCwgCisgICAgMTI4MjA2LCAwLCAxNzc0LCAxNTIzLCAxMjEzMzAsIDY4MDU5LCA0MTQ0NSwgNzgyMzYsIDExMjA3LCA4NTY3LCA0MTQ0MiwgCisgICAgMzk4OCwgNzQ4NDMsIDc4MjM3LCAxMTg5MTAsIDk4MzA2NywgNjUyNzQsIDg1NjQsIDc4MTk5LCA3ODIzOCwgMTI3NTE1LCAKKyAgICAxMjEyNzIsIDAsIDQzNDQ2LCA5ODMzNDYsIDY2NTEzLCA2MjU2LCA5MTc4MDcsIDU3OSwgNTUyMTgsIDEwMjA2LCA3ODE5NSwgCisgICAgNjM3NSwgMjY3MywgOTgzODg2LCAxMTgxNCwgMCwgNDQ4OCwgMTI4NzE2LCAxMjA1NTQsIDY4NDUxLCAxMDQ0NCwgMTE4ODQ2LCAKKyAgICAxMjczMzQsIDExNzk5LCA3NDQwNywgNjg0NjYsIDQ0ODcsIDEyNzg0OSwgNDI4MzIsIDEwMzIsIDEyMDI2NywgNDM0NTAsIAorICAgIDc4MjU3LCA3MjAzLCAxMjQ5OTgsIDYxNCwgNzAzNjEsIDEyNjYzMywgMTIwNjE1LCAxMTk2MjIsIDc4MjYyLCAxMjcyNzEsIAorICAgIDEyNzMyMywgMCwgNDMxMjEsIDEyNzIxMSwgMTI3MDAzLCA5MjUxMywgMTA1MCwgNzU0OSwgMTIxMjYwLCA4Mjk5NCwgOTMxNCwgCisgICAgNzAzNjUsIDkyODk4LCA2ODAzOSwgMTI3MDYxLCAxMDA1NywgNzA0MzQsIDEyNzMxMywgMTI4NTc3LCA2NjUwNCwgMTIwOTYzLCAKKyAgICA4Mjk5MiwgMjMwNywgMTI4NDU2LCA2NDMzMywgMTI3MzEyLCAxMTk5MDAsIDczODczLCA5ODMxMjYsIDk0MDM1LCA5ODMwODMsIAorICAgIDEyNzk3MywgMTI4NzA4LCA3MDQ0NiwgMTAzNjAsIDY3NDYsIDEyMDQ3MywgOTIyNDUsIDQ0MCwgMTI4ODI2LCAxMzA4NSwgCisgICAgOTIzMywgNzQyMTYsIDk4MzU2NiwgMTAxMDg5LCA5OTU3LCAxMjUyMTMsIDY2NDQ3LCA4MDQ2LCA2NDk2MywgNjU3NzcsIAorICAgIDEwMTI1LCA3NDIxMiwgNDI4MTksIDEwOTEwLCAxMDA0NjYsIDE1MjEsIDk4OTYsIDkzOTY1LCAxMDQ4NywgNjk4NzgsIAorICAgIDEyNTI3LCA2ODczNywgNzk3MCwgMTI1MDczLCAxMjg2NjAsIDczMDMsIDY1NzY5LCA1MjQzLCA5ODQ5LCA1MjM5LCA2NTc3MSwgCisgICAgMTIxNDI5LCAwLCA1MjM3LCA2OTcxNCwgNjg3NTYsIDEwMTAzLCA1MjQ3LCA0NzY5LCAxMjkzMDIsIDExODk3NywgMTI4NzMsIAorICAgIDIyODMsIDkyOTMxLCAxMDA1MjUsIDMwMDgsIDQ4OTYsIDEyODEwMiwgMTIwODcsIDk4MzI0MCwgNTUyMzEsIDQxMTAzLCAKKyAgICA3NTAxMSwgNjQ1NjUsIDQ3NzMsIDEyMDg0NiwgNzg1NDksIDcwMDc0LCA0NzcwLCA2Njg5MSwgOTE3NTY3LCA4NzMxLCAKKyAgICA2NTM3OCwgNjY5MTEsIDEyMDYxOSwgOTEyMiwgMTI4MDMzLCAxMTkwNzEsIDQ3NzQsIDMwMTksIDk5OTcsIDEyODM0LCAwLCAKKyAgICA5NDU2LCAxMDIxNSwgMTIwNTQ3LCAxMjA0MTMsIDc4NTU2LCAxMjY5OTAsIDEyMTMzMiwgNzQ3NzYsIDQyODEsIDQ3NjgsIAorICAgIDEyMDU3MiwgNDE1MzUsIDQwOTksIDkwMTcsIDY5OTkzLCA5ODM2OTIsIDc4MDk1LCAyMjI1LCA3ODA5NiwgMTE4OTQ2LCAKKyAgICAxMjAyNTIsIDAsIDc4MDk4LCAwLCA0MjgxNCwgODgwLCAxMjg5MjYsIDExMzc2NCwgNjY4NzAsIDIxMzQsIDEyNzM4OCwgCisgICAgMTAxMTYsIDk4NzcsIDcwNjc5LCAxMjg5NjAsIDAsIDcwOTUsIDgzNzksIDc0MTE2LCA2Nzc4LCAxMjExNTUsIDc4MDkwLCAKKyAgICA4MjQzLCAyNDI3LCAxMjgxNDEsIDcwOTMsIDk4Mzg3OSwgMTE1ODUsIDE5NTAwMywgOTk2MiwgODI5OTAsIDEyMjIzLCAKKyAgICAxMjg0ODUsIDkyNDMwLCAxNDM0LCAxMjAyNTQsIDU2MzcsIDExNTczLCAwLCAwLCAwLCAxOTk1MSwgODMzODksIDc0NDE5LCAKKyAgICAxMjg1MzAsIDE5NDY4NiwgNTUyODMsIDAsIDcwMzYzLCA3NDQzNywgMTE1NiwgODc0MCwgODMyOTUsIDM3ODIsIDY0MzMxLCAKKyAgICAwLCA0MTM3MCwgMTAxNCwgODI2MSwgMTIwOTU2LCA5MTc1OTYsIDEwODM1LCAxMjUyMzksIDY1NTM2LCA4MzI5NCwgCisgICAgMTIwNDYzLCAxMjUwNTEsIDc3MDIsIDExODgyNCwgNzMwMiwgNDMwMTAsIDY1Nzc5LCA2NTc4MywgMTE1MCwgMTA1NDcsIAorICAgIDU3MDAsIDAsIDEyMDYwMywgNjUzODMsIDIzMzksIDQyNTk0LCA1Njk3LCAxMTg3ODgsIDc1MDE4LCAxMjA0NzEsIDc0OTIzLCAKKyAgICA0MjI1NywgNTY5NiwgOTI2NzcsIDEyMDQ2NSwgMzg2MiwgOTY0MywgOTE3OTUxLCA3MDE4MywgNzYzNCwgNjUxNjcsIDk4NDUsIAorICAgIDAsIDAsIDU3MDEsIDk3MjIsIDQxNDkwLCAxMjg3MTksIDE0MjYsIDY4MjE3LCAxMjg2NjgsIDY4NDQ3LCA0MjIwNCwgCisgICAgNTUyNzAsIDg1NzEsIDY3NDAzLCA3ODA2NywgNDM4NTksIDc4ODE4LCA5MjcxOSwgNDMxODIsIDEyMTg0LCAwLCA0MjAyMiwgCisgICAgMCwgMTAyODEsIDkxNzc5OCwgNTY1MCwgNDMxOTQsIDY0NzEyLCAxMDc0NCwgNzg4ODcsIDk5MCwgNTY0NywgMCwgNzM4NywgCisgICAgNzg3MzQsIDQxMTE0LCAxMTQ3NywgNTY0NiwgMTI4NzksIDExMDE4LCAxMjgzNjIsIDM5NDUsIDkyNTg5LCA5ODM0NjYsIAorICAgIDcwNjY0LCA3ODg4MywgMTI4MTI4LCA3ODIxMiwgMTI3NzQ2LCAxMDIwLCA3Mzc2MywgOTgzODM1LCA3ODczMSwgNTY0OCwgCisgICAgNjQ3NDgsIDEyMDkyMCwgNDIyMzYsIDEwMjA1LCAzNTQ1LCAxMjkxMjEsIDY5ODQsIDEyNzc3MSwgNzQwNTEsIDEyODkwMSwgCisgICAgNDMyNDIsIDEyMDQ1OCwgMjY2NywgMTI4MTczLCAxMjUwMzcsIDE5NDc0NiwgOTkxMSwgMTIwNTkwLCA2NTAyMCwgMTAwOTcsIAorICAgIDExOTE2NiwgNzg2OTYsIDk4MzY2MiwgMTE4ODM2LCA5ODM3NDgsIDc4MjA4LCAxMTQwLCA3ODQyNiwgMTI4MjA1LCAxMDE1OSwgCisgICAgMCwgMCwgODEyOCwgNzI4NTcsIDY4MzI2LCAxOTQ5MTEsIDE4MTUsIDE5OTEwLCA4OTAsIDEyNDkzNSwgMzI2NywgOTIyOTEsIAorICAgIDkxNzYyOSwgMTAxMjMsIDcyODgyLCA0NDEwLCAxMDQxLCAxMDU3NiwgNjM1NCwgOTI1ODEsIDU4MCwgNzQyMzIsIDk4Mzc0NiwgCisgICAgMTI4MzQ3LCA3Mjg4NCwgMCwgMTI4MDk4LCAxOTkzOCwgNjU5MDYsIDEyNzgxOSwgNzI4ODMsIDEyODg1OCwgMzI5OCwgCisgICAgNTM3NSwgMTAxNDIsIDEwMDQyMSwgODIxNSwgOTI2MzMsIDYxMzQsIDQxMjQ2LCA2NDQwMiwgOTgzMTQ3LCA2OTg5OSwgCisgICAgMTk0OTM4LCA5ODM2MDIsIDEyMTQyNiwgNDEzODIsIDkxNzkyNiwgMTI4NjUzLCA1MTczLCA2NTM0OCwgNTI3LCAxMjExNzQsIAorICAgIDExMzc4MiwgNzg0NjksIDEyODI1MCwgNzg3OTcsIDExOTE1LCAxMjEzODYsIDAsIDEwMDcyLCAwLCA0MjY5NSwgMjMyOSwgCisgICAgNDIyNTAsIDAsIDExMTg3LCA2OTY2NywgMTIyNDUsIDE1NjgsIDY2ODA2LCA4MzQ2MCwgOTgzMTg5LCAxMTM3MDUsIAorICAgIDEyODUzMiwgMTEyMDEsIDkyNzA4LCA3NDc2OSwgMTI2NDcwLCA2NzY4MCwgOTA2OSwgNjE0NCwgMTIxMjQ2LCAxMTk4NDAsIAorICAgIDcwNzAwLCAxMjE0MzgsIDY2NzgzLCA2NDkxNywgNDE1MjEsIDExODkzNCwgNDk0LCAxMzI1MCwgOTIyNTAsIDY1MDk4LCAKKyAgICA2MzY0LCA5NTYsIDY2Nzk0LCAxMjgzMCwgMTA0NjIsIDczNzQwLCA3MzczNCwgMTI5MTA5LCAwLCA5ODM3MzksIDY2NDQ5LCAKKyAgICAxMzI2MywgNzQyODEsIDY5MjE3LCAxMzE3MSwgMTI3Nzk2LCA3MDcxNCwgMTAwOTQyLCA2Mzg4NSwgMTI3MjUxLCAxMDQ0LCAKKyAgICA0MTI3NiwgMTI4MzYzLCAwLCAwLCA0MjA2OCwgMTE3OTUsIDEyNDk4NSwgMCwgMTI3MjAyLCAwLCA0MjQ1MCwgMzkwNywgCisgICAgMTI0OTk1LCA2NDUyNiwgMTE4MjksIDY4MTk3LCAxMjI5NSwgMCwgMTE0NzUsIDcwMzI5LCAzMDIwLCAxMTUzNywgMCwgCisgICAgNjY0NDEsIDEyMDc2MSwgNzA5OCwgMTI1MDcxLCAwLCAxMDU3LCA1NjYsIDQyNjk2LCAxMjcyMzksIDMwMTYsIDQyMjc0LCAKKyAgICA0MzQ2NCwgNjY0OTAsIDEyOTIxLCA2NjU3MSwgNzg0NzIsIDcxMjA3LCAzMDA2LCA0NjIwLCAxMjcyMzcsIDk4MzMzMCwgCisgICAgMTIwMTA3LCAxMjkzNTAsIDY0NjU5LCA5MTc5MTcsIDEyNzc0OSwgNTUyNTMsIDYzNTcsIDYzNjIsIDg2MjYsIDcxMzM3LCAKKyAgICAyMjE2LCA5MDkwLCA2NTM3NywgNDE1OTYsIDAsIDQyOTIwLCAxNjk4LCAwLCA2NDQ3NywgOTE3ODUzLCA0MzgxMywgMTA1MywgCisgICAgMTAwNDMyLCA3ODI2OSwgMTAwNDM0LCA5Mjk3NywgMTA1MiwgMTA1MSwgNDU5LCAxMDYwLCA3NDM0OSwgNjY0NzksIDY3Njg5LCAKKyAgICA2Njg3MSwgOTE3ODQ1LCA3MDMyNywgNDI0OTAsIDY4OSwgNjUwOCwgNDE2MywgNDIyOTgsIDg2MzksIDY2NjQxLCA0MjQ2LCAKKyAgICAxMDA0NDksIDQzNTE0LCAxMjEzMCwgMTAwNDUwLCA0MjMzNywgNjQ1OTYsIDY0Mzc1LCA2NjQ4MSwgMTI3ODUwLCA5ODMxNDQsIAorICAgIDEyNzgyOCwgNjM1OSwgMCwgNDM0NzEsIDk4Mzc2OCwgMCwgODMzNDUsIDc1MDY1LCA5MTc5NTMsIDYzNTgsIDYzNjEsIAorICAgIDE5MjYsIDYzNTYsIDcyODU1LCA3ODk4LCA4MTEwLCAxMDkzNSwgMCwgMTAwNjksIDU4MzAsIDEwMDQyNSwgNDM2ODUsIAorICAgIDc0MzA3LCAxMDA0MjYsIDQyOTEwLCA4MzMwMSwgODY5MywgNzg2MTEsIDExOTU2NSwgMTI4NjIxLCAxMTk1ODcsIDkyMTkyLCAKKyAgICAxMjE0NTQsIDY1ODk0LCAxOTQ2OTQsIDAsIDY0Mjk2LCA5ODM2ODEsIDk4MzM5NCwgMTk0OTU5LCAxMTkxODcsIDIxMzUsIAorICAgIDExODM2LCAwLCAxMjkzNjEsIDc4ODY5LCA0MjMxMywgNTU3OSwgOTI0MTIsIDcwMzg0LCAxMjkxMTMsIDQzODU0LCA3MTkxMywgCisgICAgNTU3OCwgMTE4NDAsIDEyODExNSwgNDIwMjMsIDYyMzQsIDU2NjksIDkyMjc1LCA3ODYyMCwgMTAxMDM4LCA2ODgzMywgCisgICAgOTIyNTQsIDY4MjAyLCA1NTgzLCAwLCAwLCA0MjQyNiwgNTU4MCwgNDIyNzYsIDI5MjMsIDg5MiwgMjIyMCwgNDI0NjUsIAorICAgIDQxMzMwLCAxOTQ5NDUsIDU3OTUsIDY1NTEyLCA2ODc3NCwgNjU3MDIsIDY4NzcwLCAxMjA4MDEsIDY1MjUxLCA2ODIyOCwgCisgICAgNjU3MTAsIDEyODM5OSwgOTQxNzYsIDY3NjcyLCA2ODc4MywgNTM3MCwgNzA0NjUsIDI5MzEsIDE2MzgsIDEwOTY2LCAKKyAgICAxMDE4OCwgNjU4NzgsIDExODg0OCwgMCwgNjk2OTQsIDY5ODc5LCA3NDU4NSwgODE3MiwgNDIwMTcsIDkyNzU2LCAxMDg0NCwgCisgICAgMTIxMDE2LCAxMjgxOTUsIDkyNDI0LCA2Mzc0LCA5MjYzNiwgMTAwNDM4LCAyODYsIDc4MDIzLCAxMDYyLCAwLCAxMTk5OTksIAorICAgIDEwMDQzNywgNzM5NSwgMTI3NzgzLCAxMDcwLCA2NDkwMCwgNzE1MywgNjA5NSwgNDE4NjUsIDEyODkyOCwgMzAxNSwgCiAgICAgNjg3NDMsIDY4NzQwLCA1MjExLCA2ODgwNSwgNjQwMCwgNjg3NDksIDY4NzQ4LCA2ODc2MCwgODE4OSwgMTEyNzYsIDY4NzU0LCAKICAgICA3MDI4NCwgMzcyLCAxMjg4MjksIDY4NzYxLCAxMTM3ODMsIDQyMTAyLCA0MTU4NSwgMTI3NzUxLCAwLCA0MjEwMSwgMjc2LCAKICAgICA3ODQwMiwgNjc0MjcsIDMzLCA2NzQyNSwgNjc0MjQsIDkwMDcsIDY3NDMwLCA0MTU4OCwgNjYwMzMsIDQyNywgMTA3NjMsIAotICAgIDExODgxOSwgNzA4NzIsIDEyNzg4NCwgOTgzOTQzLCAxMDMxLCA2MjU3LCA5MjQ4OSwgNDIxMDQsIDAsIDk4Mzk4MCwgMjMyOCwgCi0gICAgNjY4MzcsIDEwNzEsIDQyODk5LCAxMjUwODgsIDc0ODQ4LCAxMjA4NTcsIDExMzc5MywgMTk0OTgxLCAxMDQ3LCAwLCAKLSAgICAxOTQ5NDMsIDQyOTA4LCAxMjg0ODAsIDY5NzIzLCAxMDY1MSwgNzAzNTYsIDAsIDEyNTExMywgNzI0MzMsIDY2ODI5LCAKLSAgICA3MDgxNywgNTcxMSwgNDE2MzMsIDEyMDk4LCA2NTU3MSwgOTE2NiwgMCwgNTcxMCwgMTI4NTUxLCA2NzkwLCA2NTE2OCwgCi0gICAgMTMyMTYsIDk4MzE1MCwgNjk3MTYsIDY5NzI2LCAwLCA2NDYxMSwgNDE2MjMsIDE5NTAwMSwgNTcxNSwgNjk2NTQsIDcxOTE1LCAKLSAgICAwLCA1NzEyLCAyNzYxLCA0MTYyMCwgNjgxMjQsIDMwNzQsIDU3MjIsIDAsIDg2NDMsIDY4NTI1LCAwLCAxMTg5MDYsIDI3NTcsIAotICAgIDExMDY3LCA5NzE4LCA2NjQxOSwgODkxMCwgMTA2ODksIDY0NzksIDAsIDAsIDcxMTczLCA3ODYwNywgOTE5NiwgNjk2NzAsIAotICAgIDEyNTA3MCwgMCwgMTI4MzM4LCAxMjAzMzUsIDExODkxMSwgMCwgOTQwNDMsIDEyOTE5NCwgMCwgMCwgMTIwMDEwLCA3Mzc5NSwgCi0gICAgODcwMSwgNjgxMzAsIDExOTYxNiwgMTIwNTIyLCAwLCA0MjQ3NywgMTk0OTk0LCAxMjEyMywgNDQ5NSwgNDM1NjksIDAsIAotICAgIDEyOTI5NiwgMCwgNjQ5NDYsIDEwOTkyLCAwLCA3NDU2NiwgNzAzMzYsIDExMzY4OCwgOTMxOCwgOTM5ODYsIDEzMjQ5LCAKLSAgICA0MjkwMiwgNzM4MDgsIDAsIDY1NDU3LCA0MjI0OSwgNzYzOSwgNDM5OTUsIDY3ODQ1LCA0MjY0MSwgNTQ1NCwgMCwgMCwgCi0gICAgNzAzNjYsIDEyMDAwNSwgMTE5NTg1LCAxMjEyMTIsIDUwODQsIDEyMTE4OSwgMTIxMTM0LCA3NTA2MiwgMCwgNzMzLCAKLSAgICA3NDY0NiwgNzgwMTQsIDY4NzY3LCA3ODQzNSwgMTEyMDQsIDAsIDkyMTgsIDE3MzEsIDAsIDkyOTM3LCA3MTA3MCwgNjc5OTAsIAotICAgIDk4MzEyNSwgMCwgMCwgNzAzMjMsIDEyMTM3MSwgOTI0OTIsIDUxNTUsIDEyMDAwMCwgNTM1OCwgOTgzNzQ0LCAwLCAKLSAgICA5MTc3NjcsIDY0NDI0LCA3MTIzNiwgMzg0MCwgNjQzMTQsIDQxNDMyLCAxMjEzMTYsIDc4MzE1LCA2ODQzMCwgNjc5ODAsIAotICAgIDQzMjUzLCA2NTk0MywgMCwgMzM3MSwgMTA5ODgsIDEyNzk2MCwgODc3MSwgMTQ3OSwgMCwgMCwgMTEwOSwgMTE1ODAsIAotICAgIDQzNjU3LCA2NDYwMSwgMTIyMDUsIDkyNzgyLCAwLCA2NDUwNywgODg2OCwgMzk5LCA2Nzk3OCwgNzQ4NDIsIDk4MzI4NiwgCi0gICAgMTIxMzM2LCAxMjE0OSwgMTMwODgsIDU1MSwgMCwgMTAxNTYsIDEyMTE5LCA5MjU3MiwgMTE4OTE2LCAyNTQ0LCA2NTA3NCwgCi0gICAgMTE5MjExLCA5ODMyOTgsIDAsIDc4MDExLCAzNTEsIDY4NzY0LCAwLCAxMjg3MTMsIDU1MjI5LCAwLCA3NDI2OCwgNzgwMDgsIAotICAgIDEyODA5NCwgMCwgNDIzNzcsIDAsIDAsIDAsIDExMzc2NywgNzQzMjAsIDkwMTMsIDQwNTQsIDAsIDE5NDU4MCwgMTEzNzQwLCAKLSAgICAwLCA3Mzk2MCwgNTU4NSwgNjU4ODEsIDI1NDksIDc0NDY5LCA3NDQ1NywgMTExMDQsIDU1ODQsIDgzNTgsIDEyNjQ3MywgCi0gICAgNjQyMTUsIDY2ODY0LCAxMDkxOSwgNzA0ODAsIDc5ODAsIDEyNjYwMSwgMTEzNjk4LCAyMjE4LCA0MTgwMCwgNTU4OSwgCi0gICAgODI5ODMsIDI2NjQsIDQxNjEzLCA1NTg2LCAxMTg4OTAsIDAsIDExMzU2LCAxMjExMjAsIDE5NDgzMywgNDM0NTIsIDY3MjQ1LCAKKyAgICAxMTg4MTksIDcwODcyLCAxMjc4ODQsIDEwMDk5MCwgMTAzMSwgNjI1NywgOTI0ODksIDQyMTA0LCAxMDAzOTYsIDEwMDM5NSwgCisgICAgMjMyOCwgNjY4MzcsIDEwNzEsIDQyODk5LCA3NDQxOCwgNzQ4NDgsIDEyMDg1NywgMTEzNzkzLCAxMDA0MDEsIDEwNDcsIAorICAgIDEwMDQwMywgMTAwNDAyLCA0MjkwOCwgMTAwNDA0LCA2OTcyMywgMTA2NTEsIDcwMzU2LCAxMDA0MDgsIDEyNTExMywgCisgICAgNzI0MzMsIDY2ODI5LCA3MDgxNywgNTcxMSwgNDE2MzMsIDEyMDk4LCA2NTU3MSwgOTE2NiwgMCwgNTcxMCwgMTI4NTUxLCAKKyAgICA2NzkwLCA2NTE2OCwgMTMyMTYsIDEwMDkzNSwgNjk3MTYsIDY5NzI2LCAwLCA2NDYxMSwgNDE2MjMsIDE5NTAwMSwgNTcxNSwgCisgICAgNjk2NTQsIDcxOTE1LCA5ODM3MjAsIDU3MTIsIDI3NjEsIDQxNjIwLCA2ODEyNCwgMzA3NCwgNTcyMiwgMTAwMzg5LCA4NjQzLCAKKyAgICA2ODUyNSwgMCwgMTE4OTA2LCAyNzU3LCAxMTA2NywgOTcxOCwgNjY0MTksIDg5MTAsIDEwNjg5LCA2NDc5LCAxMjUxOTYsIAorICAgIDEyOTE3OCwgNzExNzMsIDc4NjA3LCA5MTk2LCA2OTY3MCwgMTI1MDcwLCAwLCAxMjUxODQsIDEyMDMzNSwgMTE4OTExLCAKKyAgICA0MTY0NSwgOTQwNDMsIDEyOTE5NCwgMTI3MDg3LCAxMjg0ODAsIDExMzc3MCwgNzM3OTUsIDg3MDEsIDY4MTMwLCAxMTk2MTYsIAorICAgIDEyMDUyMiwgNDM3NTQsIDQyNDc3LCAxMDA0NTksIDEyMTIzLCA0NDk1LCA0MzU2OSwgMCwgMTI5Mjk2LCA3NDU1NywgCisgICAgNjQ5NDYsIDEwOTkyLCAwLCA3NDU2NiwgNzAzMzYsIDExMzY4OCwgOTMxOCwgOTM5ODYsIDEzMjQ5LCA0MjkwMiwgNzM4MDgsIAorICAgIDk4MzMzNSwgNjU0NTcsIDQyMjQ5LCA3NjM5LCA0Mzk5NSwgNjc4NDUsIDQyNjQxLCA1NDU0LCAwLCAwLCA3MDM2NiwgCisgICAgMTIwMDA1LCAxMDAzNjksIDEwMDM2OCwgNTA4NCwgMTAwMzcwLCAxMjExMzQsIDc1MDYyLCA5ODM0NjIsIDczMywgNzQ2NDYsIAorICAgIDc4MDE0LCA2ODc2NywgNzg0MzUsIDExMjA0LCAwLCA5MjE4LCAxNzMxLCAxMDAzODAsIDkyOTM3LCA3MTA3MCwgNjc5OTAsIAorICAgIDk4MzEyNSwgOTgzMzcwLCAwLCA3MDMyMywgMTIxMzcxLCA5MjQ5MiwgNTE1NSwgMTIwMDAwLCA1MzU4LCAxMjg1MTUsIAorICAgIDEyOTMxNiwgMTk0OTgxLCA2NDQyNCwgNzEyMzYsIDM4NDAsIDY0MzE0LCA0MTQzMiwgMTIxMzE2LCA3ODMxNSwgNjg0MzAsIAorICAgIDY3OTgwLCA0MzI1MywgNjU5NDMsIDEwMDM3MywgMzM3MSwgMTA5ODgsIDEwMDM3OCwgODc3MSwgMTQ3OSwgMTAwMzU3LCAKKyAgICAxMDAzNjAsIDExMDksIDExNTgwLCA0MzY1NywgNjQ2MDEsIDEyMjA1LCA5Mjc4MiwgMCwgNjQ1MDcsIDg4NjgsIDM5OSwgCisgICAgNjc5NzgsIDc0ODQyLCA5ODMyODYsIDEyMTMzNiwgMTIxNDksIDEzMDg4LCA1NTEsIDE5NDk3MiwgMTAxNTYsIDEyMTE5LCAKKyAgICA5MjU3MiwgMTE4OTE2LCAyNTQ0LCA2NTA3NCwgMTE5MjExLCAxMDAzNTQsIDEwMDM1MywgNzgwMTEsIDM1MSwgNjg3NjQsIAorICAgIDkxNzk4MSwgMTI4NzEzLCA1NTIyOSwgMCwgNzQyNjgsIDY2NzkwLCAxMjczMjcsIDEwMDM2MSwgNDIzNzcsIDEwMDM2MywgCisgICAgMTAwMzYyLCAxMDAzNjUsIDEwMDM2NCwgNzQzMjAsIDkwMTMsIDQwNTQsIDAsIDE5NDU4MCwgMTEzNzQwLCAzNDQ3LCAKKyAgICA3Mzk2MCwgNTU4NSwgNjU4ODEsIDI1NDksIDc0NDY5LCA3NDQ1NywgMTExMDQsIDU1ODQsIDgzNTgsIDEyNjQ3MywgNjQyMTUsIAorICAgIDY2ODY0LCAxMDkxOSwgNzA0ODAsIDc5ODAsIDEwMDcyMywgMTEzNjk4LCAyMjE4LCA0MTgwMCwgNTU4OSwgODI5ODMsIAorICAgIDI2NjQsIDQxNjEzLCA1NTg2LCAxMTg4OTAsIDc0NTIyLCAxMTM1NiwgMTIxMTIwLCAxMjgxNzUsIDQzNDUyLCA2NzI0NSwgCiAgICAgOTI5OTMsIDQyNTczLCA2Njg3OSwgODMzMjksIDY3ODEwLCA2OTc2NywgNzg3NTIsIDc0MzkyLCA4MTM1LCA2NDUwLCAKLSAgICAxMDA1NSwgNzc5OTYsIDExOTk0OCwgOTgzMTczLCAxMTkyMjUsIDU2NTcsIDAsIDk2MjYsIDEyMTQ1MywgNzc5OTQsIAotICAgIDEwMTc5LCA1NjU0LCAxMjkzOSwgOTI1NzMsIDEyMDc5OSwgNzE4NjAsIDAsIDU2NTIsIDEwOTQ1LCAxOTQ1OTksIDY2NDg2LCAKLSAgICAwLCAzNjYxLCA3ODYzLCAwLCA2ODA2OSwgOTgzNjc1LCA3MDMzMiwgMTI3MTk0LCA1NjU5LCAxOTQ2MDYsIDc4NjkyLCAKLSAgICA2NjcyOSwgNTY1NSwgOTgzNjI2LCA0MjE2OCwgMTIxMTMxLCAxMDU1LCA3MTE3MSwgNzE4ODgsIDY2MzEwLCA3NDAzMCwgCi0gICAgNzA1MTYsIDEyMTQ2LCA3MDM2MiwgNzM5NTYsIDExNjE4LCAwLCA0MjcyMCwgOTI5NDksIDEwMjcyLCAxMDMwNCwgMTAzNjgsIAotICAgIDQyNTE4LCA1OTQsIDEwMjQ0LCAxMDI0OCwgNzQwNywgNzQ5NzgsIDY0ODcwLCA3NDE5MSwgMzQ2NywgNzEwNzMsIDc4ODEsIAotICAgIDMzMzEsIDk0NiwgMTAyMzEsIDE0OTUsIDgxMzEsIDc0MzMwLCAwLCA5NTYyLCA2OTIyMiwgNjU5MjcsIDAsIDcwMDM2LCAKLSAgICA2OTY5NiwgNjk3NjksIDY0NjU2LCA5MTc5OTUsIDAsIDkyNDA5LCA3MDA1NiwgNTY2NiwgNjUyMjcsIDUzMTgsIDYzOTk0LCAKLSAgICAxMTk1OTYsIDkwOTEsIDEwNzk4LCA3ODY2NCwgNzg1MDgsIDEwMTg2LCA5ODMyNjUsIDc3MzIsIDk4MzcyNCwgNjQ1NTYsIDAsIAotICAgIDk4Mzk3OSwgNTY2OCwgNzQ0NDUsIDc0OTgyLCA3NDY0NSwgNTY3MCwgMTEzNzk1LCAxMjcyOTcsIDExODIwLCAyOTkyLCAKLSAgICA3ODI2LCA1NjY3LCAxOTk1MiwgMTIwODA3LCA3NDk4MSwgMTI3NDksIDc0NTUxLCA2Nzc1NywgMCwgNjY0OTYsIDQzNjEsIAotICAgIDExOTI2MCwgMTMwNiwgOTI4NiwgMTQ5NywgMTI4Mjg2LCA5NDAwNCwgNzAzNTksIDAsIDM1NzEsIDEzMjQ3LCA1ODc0LCAKLSAgICA3OTczLCA2NjM1MywgNjg0MzUsIDc4Mjc4LCA2Nzg5NiwgNDMxOTIsIDc0NjIxLCA3ODI2NSwgNTUzLCAxMTM3NjgsIAotICAgIDEyNzAxMiwgOTMwNTMsIDU4MjksIDAsIDQ1ODcsIDc4Mjg1LCA2NTkxMiwgMTk0OTE5LCAxMjc0NiwgMTI4NjcxLCA3MDMzOCwgCi0gICAgMTE5OTI0LCA1NjMzLCAxMTk5MjcsIDc0MjU5LCA5NDEwMiwgOTQwOTksIDY0OTA1LCA5NDEwNSwgOTUxMiwgOTQxMDMsIAotICAgIDEyNzQyLCA2NDQzLCA5ODM4MDYsIDAsIDkxMzUsIDEyODg2MywgNDE1NjQsIDEyMTUxNywgNTUyMTksIDEyODgzMiwgCi0gICAgOTgzODUxLCAxOTQ4NzcsIDEyMTQ4LCAwLCA3ODI5NywgMCwgNjQyNTYsIDAsIDExNjY5LCAwLCA1NjM0LCA0NTI0LCAKLSAgICAxMjg5MDMsIDEyNDkzNiwgMTI4MzkwLCA4MzIxNSwgMjQyNSwgNjUxODIsIDEyODc2OSwgNDM2MzYsIDUyMjEsIDc4NDEwLCAKLSAgICAzMjgsIDEyMTAzMSwgNjg3MzYsIDY5ODE1LCA1NjM2LCAxMTk5MTcsIDUzMjksIDEyMTI5MywgNTYzOCwgODMxNjYsIDc5NDAsIAotICAgIDY0OTM4LCA0MzIyMywgNDM3NjAsIDU2MzUsIDMzNzMsIDI5ODYsIDc4MjkyLCA3NDIyMywgMzQzNywgNjg3NjMsIDYyMDMsIAotICAgIDQyNDcsIDcxMTY5LCAxMTkyMCwgODI3NCwgNjgyNDAsIDk4MzY1OCwgMTY1NywgNDE1NjEsIDY4Nzc4LCA3ODI5NSwgNTYzOSwgCi0gICAgMjk1NCwgNTY2MCwgNTY0MCwgNzgzMDMsIDk4MzY4NSwgNzExNzksIDQyMjI3LCA2ODMwMSwgODMzMjIsIDQxNjM3LCAKLSAgICA2Nzg3MiwgMTIxMTA1LCA3ODMxMCwgNDE2MjUsIDQzMzYyLCA3ODMwOSwgMTIwNzEzLCAxMTcwNSwgNTY0MiwgMCwgNTQ4NiwgCi0gICAgMCwgNDM1NiwgMTE3MTAsIDAsIDEyMDUxLCA2OTkzOCwgMCwgNTY0MSwgODI1OSwgMTI2OTk0LCAxMDU4LCAwLCA2NzYzMCwgCi0gICAgMCwgMTI4OTI3LCAxMTQ0LCA3ODc1MCwgMTI3MjkzLCA0MjIyOCwgOTgzNzE0LCA3Mzg5MCwgMTE4OTcyLCAxMjczNTIsIAotICAgIDI4MDAsIDgzMjA5LCA1NjQ1LCA2NDk2NCwgODY1MiwgMjU0NywgNjY0ODQsIDQzNjM0LCAxMjEzNTYsIDU2MDgsIDY1ODkwLCAKLSAgICA0MzgwOCwgMTk0OTcyLCA2NzYyMSwgNjQ5MzIsIDkwMDAsIDcxMjA0LCA2NzIzNSwgOTI2NzMsIDE4NjUsIDEyODcwNiwgCi0gICAgNTYxMywgNjY0MDEsIDEyMTE0NSwgMCwgNTYxMCwgOTgzMjI2LCA3MTE5OSwgNjU4MjYsIDIwNjksIDAsIDEwNzg3LCAKLSAgICA0Mzk5OSwgMjk5NywgMTE5OTMyLCA1NjA5LCA3ODMxNiwgNjUzMTksIDc4MzEzLCAxMjMxNiwgNTg3NSwgMjQxMiwgODMyMDYsIAotICAgIDgxODYsIDk4MDcsIDc0MjY5LCA2NjI5NCwgMTMxMzAsIDY1ODc0LCA3MTg1NSwgNTgwNywgMTEzNjc4LCAxMDAzMCwgNTMwNiwgCi0gICAgMTIzNjQsIDExODg2MywgOTI5NzAsIDExNzA0LCA4MzIwMiwgOTI1ODMsIDEwMjExLCAwLCAxMjA1NzksIDAsIDEyMTA2MywgCi0gICAgMTE3MDYsIDk3MTAsIDEyNTAyMiwgODI5ODUsIDEyMDY1NSwgNDEzLCA2NTYyMywgNzExOCwgODMxNjcsIDkxMzMsIDc0MjYyLCAKLSAgICA5MTc5NjQsIDEwNDIsIDEyNTA2OCwgNjQ3NzksIDEyMTcxLCAxMTkyNDAsIDYxODUsIDY0Nzc2LCA0OTg0LCAxMjEyNjYsIAorICAgIDEwMDU1LCA3Nzk5NiwgMTAxMDMzLCA5ODMxNzMsIDExOTIyNSwgNTY1NywgMTAwNDQzLCA5NjI2LCAxMjE0NTMsIDc3OTk0LCAKKyAgICAxMDE3OSwgNTY1NCwgMTI5MzksIDkyNTczLCAxMjA3OTksIDcxODYwLCA5MTc5MzksIDU2NTIsIDEwOTQ1LCAxOTQ1OTksIAorICAgIDY2NDg2LCA5ODMzNjAsIDM2NjEsIDc4NjMsIDAsIDY4MDY5LCAxMDEwODQsIDcwMzMyLCAxMjcxOTQsIDU2NTksIDE5NDYwNiwgCisgICAgNzg2OTIsIDY2NzI5LCA1NjU1LCAxMjEwMTIsIDQyMTY4LCAxMjExMzEsIDEwNTUsIDcxMTcxLCA3MTg4OCwgNjYzMTAsIAorICAgIDc0MDMwLCA3MDUxNiwgMTIxNDYsIDcwMzYyLCA3Mzk1NiwgMTE2MTgsIDcyNzA5LCA0MjcyMCwgOTI5NDksIDEwMjcyLCAKKyAgICAxMDMwNCwgMTAzNjgsIDQyNTE4LCA1OTQsIDEwMjQ0LCAxMDI0OCwgNzQwNywgNzQ5NzgsIDY0ODcwLCA3NDE5MSwgMzQ2NywgCisgICAgNzEwNzMsIDc4ODEsIDMzMzEsIDk0NiwgMTAyMzEsIDE0OTUsIDgxMzEsIDc0MzMwLCAwLCA5NTYyLCA2OTIyMiwgNjU5MjcsIAorICAgIDE5NDk3OCwgNzAwMzYsIDY5Njk2LCA2OTc2OSwgNjQ2NTYsIDkxNzk5NSwgMCwgOTI0MDksIDcwMDU2LCA1NjY2LCA2NTIyNywgCisgICAgNTMxOCwgNjM5OTQsIDExOTU5NiwgOTA5MSwgMTA3OTgsIDc4NjY0LCA3ODUwOCwgMTAxODYsIDk4MzI2NSwgNzczMiwgCisgICAgOTgzNzI0LCA2NDU1NiwgMCwgOTgzOTc5LCA1NjY4LCA3NDQ0NSwgNzQ5ODIsIDc0NjQ1LCA1NjcwLCAxMDA4MzAsIAorICAgIDEyNzI5NywgMTE4MjAsIDI5OTIsIDc4MjYsIDU2NjcsIDE5OTUyLCAxMjA4MDcsIDc0OTgxLCAxMjc0OSwgNzQ1NTEsIAorICAgIDY3NzU3LCAyMjYzLCA2NjQ5NiwgNDM2MSwgMTE5MjYwLCAxMzA2LCA5Mjg2LCAxNDk3LCAxMjgyODYsIDk0MDA0LCA3MDM1OSwgCisgICAgMCwgMzU3MSwgMTMyNDcsIDU4NzQsIDc5NzMsIDY2MzUzLCA2ODQzNSwgNzgyNzgsIDY3ODk2LCA0MzE5MiwgNzQ2MjEsIAorICAgIDc4MjY1LCA1NTMsIDExMzc2OCwgMTI3MDEyLCA5MzA1MywgNTgyOSwgOTgzMjQ3LCA0NTg3LCA3ODI4NSwgNjU5MTIsIAorICAgIDE5NDkxOSwgMTI3NDYsIDcyODA2LCA3MDMzOCwgMTE5OTI0LCA1NjMzLCAxMTk5MjcsIDc0MjU5LCA5NDEwMiwgOTQwOTksIAorICAgIDY0OTA1LCA5NDEwNSwgOTUxMiwgOTQxMDMsIDEyNzQyLCA2NDQzLCA5ODM4MDYsIDAsIDkxMzUsIDEyODg2MywgNDE1NjQsIAorICAgIDEyMTUxNywgNTUyMTksIDEyODgzMiwgOTgzODUxLCAxMjgwMjYsIDEyMTQ4LCAwLCA3ODI5NywgMCwgNjQyNTYsIDExOTkxNCwgCisgICAgMTE2NjksIDAsIDU2MzQsIDQ1MjQsIDEyODkwMywgMTI0OTM2LCAxMjgzOTAsIDgzMjE1LCAyNDI1LCA2NTE4MiwgMTI4NzY5LCAKKyAgICA0MzYzNiwgNTIyMSwgNzg0MTAsIDMyOCwgMTIxMDMxLCA2ODczNiwgNjk4MTUsIDU2MzYsIDExOTkxNywgNTMyOSwgCisgICAgMTIxMjkzLCA1NjM4LCA4MzE2NiwgNzk0MCwgNjQ5MzgsIDQzMjIzLCA0Mzc2MCwgNTYzNSwgMzM3MywgMjk4NiwgNzgyOTIsIAorICAgIDc0MjIzLCAzNDM3LCA2ODc2MywgNjIwMywgNDI0NywgNzExNjksIDExOTIwLCA4Mjc0LCA2ODI0MCwgMTk0NzQxLCAxNjU3LCAKKyAgICA0MTU2MSwgNjg3NzgsIDc4Mjk1LCA1NjM5LCAyOTU0LCA1NjYwLCA1NjQwLCA3ODMwMywgMTIxNDIwLCA3MTE3OSwgNDIyMjcsIAorICAgIDY4MzAxLCA4MzE2OCwgNDE2MzcsIDY3ODcyLCAxMjExMDUsIDc4MzEwLCA0MTYyNSwgNDMzNjIsIDc4MzA5LCAxMDA3MzEsIAorICAgIDExNzA1LCA1NjQyLCAxMDA3MzIsIDU0ODYsIDEwMDczNCwgNDM1NiwgMTE3MTAsIDEwMDczOSwgMTIwNTEsIDY5OTM4LCAKKyAgICAxMDA3NDAsIDU2NDEsIDgyNTksIDEyNjk5NCwgMTA1OCwgMCwgNjc2MzAsIDEwMTAxNiwgMTI4OTI3LCAxMTQ0LCA3ODc1MCwgCisgICAgMTI3MjkzLCA0MjIyOCwgOTgzNzE0LCA3Mzg5MCwgMTE4OTcyLCAxMDA1NTAsIDI4MDAsIDgzMjA5LCA1NjQ1LCA2NDk2NCwgCisgICAgODY1MiwgMjU0NywgNjY0ODQsIDQzNjM0LCAxMjEzNTYsIDU2MDgsIDY1ODkwLCA0MzgwOCwgMTI4MzM1LCA2NzYyMSwgCisgICAgNjQ5MzIsIDkwMDAsIDcxMjA0LCA2NzIzNSwgOTI2NzMsIDE4NjUsIDEyODcwNiwgNTYxMywgNjY0MDEsIDEwMDcyMSwgCisgICAgMTAwNzI0LCA1NjEwLCAxMDA3MjYsIDcxMTk5LCA2NTgyNiwgMjA2OSwgMTAwNzMwLCAxMDc4NywgNDM5OTksIDI5OTcsIAorICAgIDExOTkzMiwgNTYwOSwgNzgzMTYsIDY1MzE5LCA3ODMxMywgMTIzMTYsIDU4NzUsIDI0MTIsIDgzMjA2LCA4MTg2LCA5ODA3LCAKKyAgICA3NDI2OSwgNjYyOTQsIDEzMTMwLCA2NTg3NCwgNzE4NTUsIDU4MDcsIDExMzY3OCwgMTAwMzAsIDUzMDYsIDEyMzY0LCAKKyAgICAxMTg4NjMsIDkyOTcwLCAxMTcwNCwgODMyMDIsIDkyNTgzLCAxMDIxMSwgMCwgMTIwNTc5LCAwLCAxMjEwNjMsIDExNzA2LCAKKyAgICA5NzEwLCAxMjUwMjIsIDgyOTg1LCAxMjA2NTUsIDQxMywgNjU2MjMsIDcxMTgsIDgzMTY3LCA5MTMzLCA3NDI2MiwgCisgICAgOTE3OTY0LCAxMDQyLCAxMjUwNjgsIDY0Nzc5LCAxMjE3MSwgMTE5MjQwLCA2MTg1LCA2NDc3NiwgNDk4NCwgODMxOTgsIAogICAgIDcwOCwgMTEzOTEsIDAsIDEyMjQxLCA5MjcyMCwgODMzOTksIDEzMDgsIDEyMTI1OCwgMjUzNCwgODEwLCAxMjUwODksIAotICAgIDEyMDkzMywgMTI4MDE2LCA3MTg0OSwgNzE4NjksIDE5MTcsIDMwMDAsIDEyNTE0MCwgMTIwMTg0LCAxMjA3MzksIDIzNjQsIAorICAgIDEyMDkzMywgMTI4MDE2LCA3MTg0OSwgNzE4NjksIDE5MTcsIDMwMDAsIDEyNTE0MCwgNzA2OTQsIDEyMDczOSwgMjM2NCwgCiAgICAgNjYzODcsIDc0NDcwLCA2NjYxOCwgNjU2ODAsIDY2NDExLCAxMDAyNywgNzE4NDEsIDEyODE1NCwgMTIzMzcsIDc0MjgzLCAKICAgICAxMjczNjgsIDk4MzE2NywgMjk4MCwgNzU1LCA2OTc3NCwgOTMxLCAxMzEyNCwgNjgwNjgsIDYzNjMsIDI3NDgsIDEyMTAyMiwgCi0gICAgMCwgNjUwNDEsIDkyMjc2LCA0NDAxMSwgODczMCwgMTk0OTk3LCAxMjc4NTQsIDc4MzEyLCA3Mjc0LCAxMTkyNTAsIDkyOTg4LCAKLSAgICA3Mjc1LCA3ODMwNCwgOTM1LCAxMjcwNTIsIDY1ODQwLCAzNzcsIDQyMzI1LCAxMTY0OSwgMTI3MzYzLCA2NTI1MywgNjQzMDEsIAorICAgIDAsIDY1MDQxLCA5MjI3NiwgNDQwMTEsIDg3MzAsIDE5NDk5NywgMTAwNzExLCA3ODMxMiwgNzI3NCwgMTAwNzEyLCA5Mjk4OCwgCisgICAgNzI3NSwgNzgzMDQsIDkzNSwgMTAwNzE5LCA2NTg0MCwgMzc3LCA0MjMyNSwgMTE2NDksIDEwMDQ4OSwgNjUyNTMsIDY0MzAxLCAKICAgICAxMjg4MzUsIDc4MzA4LCA0MjM0MSwgNjUyODQsIDI0MTcsIDAsIDEyODg0LCAxOTkxMiwgNzkwNywgMTA3NjgsIDc4MzAwLCAKLSAgICAxOTQ5OTgsIDE5NDkxMiwgMTA2NzMsIDY4Nzc5LCA3MjQ4LCA2ODc4NiwgNDM1MTUsIDE3ODEsIDU0OTYsIDM2MjcsIDYyLCAKLSAgICAxNjQ5LCA2Nzg3NiwgOTY0LCAxMjEwMzQsIDY2NDAzLCA3ODIyNiwgNjYzOTMsIDkyODk3LCA3MDM1NSwgNjY0MDksIDAsIAotICAgIDgzMzk4LCA0MzY4OSwgMTI3OTExLCAxMzE0MiwgNzg4MTIsIDQyNDE1LCA2NjU3NSwgNDU0MiwgNjk5MDksIDQzNTQ3LCAKLSAgICA4MzAyOCwgMCwgNzY3NywgMjk5MSwgNDk0NiwgNDI0NTQsIDExNTY1LCA3OTQ5LCAwLCA2OTc1OSwgMTEzNDEsIDQyNDk0LCAKLSAgICAzMDczLCA2NTYyNSwgOTcxNCwgMTE2OTIsIDQ2NTcsIDAsIDcwODEwLCA2NDc4LCA5ODk4LCA0MzY3MywgNjUyMzcsIDYyNDEsIAotICAgIDcxMDYsIDQ4NzcsIDEyOTEwOCwgNjIzOCwgMCwgMTA1NDgsIDEyNzA0OSwgNDQwOSwgMCwgMCwgNjQ3OTgsIDcwODA1LCAKLSAgICA1MzQ2LCAxMjgyNDAsIDk0MDQ3LCA2MjM3LCA0ODc0LCA2Njg1MSwgOTE3NiwgOTI4ODIsIDEyMTE1MywgNjUyMzEsIAotICAgIDY1ODg0LCAxMjY3OCwgNzg3NDgsIDExODkxMiwgMTEzNzgsIDQ0MDE4LCA0Mjc4NSwgMjQwOCwgMzI1MSwgMTEyMDMsIAotICAgIDk4MzE1OSwgNTY4NSwgMCwgMjQ2MSwgMTEwNTIsIDcwOTEsIDUzNDIsIDgzMTcsIDEyMTQ0NiwgNjgxNjMsIDUzNDAsIAotICAgIDEyMDU1OSwgMTI3ODIwLCA0MzYzNSwgNzM5MjgsIDEyNTAwMSwgNzEwNjksIDgzMzE4LCAwLCA4MzMxNywgNjU0ODIsIAotICAgIDEyMTM5NCwgOTE0MiwgMCwgNjg1MDYsIDAsIDEwOTM4LCAwLCAxMTg3OTAsIDExODIsIDI1NDIsIDQ4MjYsIDAsIDEyNjY0OCwgCi0gICAgNzI0MzgsIDUyOSwgODU4MCwgMTI3NDkwLCAwLCAxMDU4NiwgMTA3OTAsIDEwODM5LCA2NjAyMywgNDE1OTMsIDQxMjA3LCAKLSAgICA2ODc0NCwgOTgzODI1LCA0MTU5NCwgMjI1LCA0MjgyOCwgMCwgNjc4MjEsIDEyMTIwMCwgMTEzNzYsIDc0Mzc5LCAxMDcyMSwgCi0gICAgNjc2NjQsIDM0MzgsIDQyMDk3LCA2ODg2MiwgMTEwODQsIDMxOTQsIDQxODcwLCAyNjYsIDc4MzA1LCAxMjAxODMsIDQxODczLCAKLSAgICAxMjA1NzUsIDExMzI0LCAxMjA1MzEsIDAsIDg0MjAsIDY0OTE4LCAxMjg4MzksIDQxODcxLCA0MTMzOCwgMzczNCwgNzczNCwgCi0gICAgNDM2ODMsIDg3NTAsIDY2NjA1LCA2NjAxMSwgOTI1MTQsIDQwOTY1LCAxMjc5MzcsIDk4MzIxNiwgNTE2MSwgMTA1NzIsIAotICAgIDkxNzU1OCwgNDI5MDYsIDAsIDY0MzQ5LCA3Mjg3LCA0MjE2MiwgMTIwNDA2LCA5ODM2NDMsIDEyNjYwNSwgMTExNjcsIAotICAgIDY5MjIwLCAxMjM1OSwgNDM0MjksIDQxMzY5LCAxNjk3LCAxMjE5MSwgMCwgNjg2MzMsIDcyODYsIDAsIDY4NjM1LCAxMDAzMSwgCi0gICAgMTEzNzY2LCA5ODcwLCA2NzcyNiwgODYyMCwgNjU4MjQsIDkxNzg1NSwgMTE5MzgsIDEyMTMwOCwgNzI4NSwgOTgzNTU3LCAKLSAgICAxMTk1NzcsIDQyNjc4LCA2Njg0MiwgNDM2NzcsIDQxNTgzLCAwLCA2NTc5OSwgOTI2MjMsIDAsIDEyOTE2OCwgMTI4MjY3LCAKLSAgICA3ODE2OSwgNjYxOTksIDAsIDM2MDksIDY4NjI0LCA3MDI4MCwgODMyLCAxMjA2OTMsIDEyMDc3MCwgNzg0NzMsIDY2MDA3LCAKLSAgICA3ODQ3MSwgNjU3MDMsIDcxMjU2LCAxMjg1MTcsIDQyNzMyLCA1MTgwLCA5MjY5OSwgNDEzOTUsIDQxNTMwLCAxMTY5MSwgCi0gICAgNjQ3NzMsIDkyMjE0LCA3NDAwMiwgMTI3NzkwLCAxMjA1NDgsIDEyODY0NSwgNjM0OCwgMjQzLCAxMzIwMCwgMTIwMTYwLCAKLSAgICA2MDI0LCA5MjMwOSwgOTk3OSwgMTAwMzcsIDQxNTI5LCAxMDY0OCwgODUzOCwgNDM2ODcsIDAsIDkxNzg0NCwgNDI4NSwgCi0gICAgNjYxOTUsIDEyMTM3MCwgNDIzMCwgOTI4ODYsIDczNjcsIDQzMjU2LCA5MjM1MywgNzU2MywgNDIzNzYsIDk4MzI3MSwgCi0gICAgNjg0NDIsIDEyMDUxMiwgMCwgMCwgMjE0LCAxMjg1NzgsIDAsIDc0ODU2LCA2NTg5MywgMTIyMDgsIDk5NzMsIDEyODM4NiwgCi0gICAgNjYzMTEsIDY1NTg5LCAxMjgyNzcsIDI2MDMsIDAsIDcwMTU1LCA3ODYyMiwgNzAwNDcsIDEyNzI3MywgNjAyMiwgMTk1MDIzLCAKLSAgICAyODg0LCAwLCAxMTYyMCwgMCwgNDMsIDE5NTAyMCwgMTI2ODIsIDEwMTYsIDQxMTA3LCAwLCA0MTEyMSwgMzg4NSwgOTIsIAotICAgIDY1NDU2LCA2NDYwOCwgMCwgNzQ4MDEsIDcwODU1LCAyMDc0LCAxMTM3NDIsIDc4MjgzLCAwLCAxMjQ1MywgNzA4NDcsIAotICAgIDk4MzgyNiwgNzQyNDEsIDEyNjU2OCwgNjc5MSwgMTI0NTcsIDc4MjY4LCAwLCA2NjI3OCwgMCwgNzgyNzksIDAsIDAsIAotICAgIDkyMzU4LCA2NjYzNywgNzk5NSwgODc1OSwgNDM0MjEsIDc4Mjc3LCAxMjQ0OSwgMTI4NTUyLCA3MTIyNCwgNDM4NjgsIAotICAgIDg3NTIsIDMxOTcsIDQ3MjAsIDEwMTY1LCAxMTM3NjUsIDExOTI0OSwgMTEzNzE1LCAxMTU5NSwgNjQ4OTMsIDExODkwNSwgCi0gICAgNDM0MzUsIDEyNDk2NCwgMTI1MDMwLCA0OTkzLCAwLCA2MTY4LCAxMDkzNCwgMTk0NiwgNzQxLCAxMjA2NTAsIDU0OTQsIAotICAgIDQ2MzksIDEyNzU1OSwgMTk5MCwgMTExMDcsIDQ0OTgsIDc0MTY5LCA2NzczNiwgODMyNzMsIDEyNzI3MiwgNjk3MzQsIAotICAgIDI5NjAsIDczNzc5LCAwLCA4OTY5LCAxMjgxMTcsIDQzNDI0LCA3Mzk1OSwgMTI2NDY0LCAyOTUwLCAxMTk1NzksIDYyMTAsIAotICAgIDY1NzUzLCAzNzAsIDEyMTM2MCwgMCwgMCwgNDk1MywgMTk1MDA5LCAxMjEwNTQsIDExMzcwOCwgMCwgNjkyMzAsIDAsIAotICAgIDE5NTAxMCwgNjU2ODgsIDc0OTUxLCA1MDYzLCAzNTE3LCAyOTY0LCA0MzY2MywgOTE3NzYyLCA2MzQ0LCA3NDc5MSwgCi0gICAgMTA1NjYsIDEwMTQ0LCA2NjMzMywgODI1MiwgNzI5LCA2NjAxNiwgNzgyNTMsIDAsIDcxMzE3LCA2NDkyMywgMTIwNTcxLCAKLSAgICA0MzY2OSwgOTAzMiwgNzgyNjMsIDc4MjY0LCAwLCA0MTIxNSwgMCwgNjU4ODMsIDAsIDkxNzc3NCwgNzQ5MTQsIDM3NjEsIDAsIAotICAgIDAsIDcwMDY4LCAxMjA0MDgsIDEyOTEyLCAxMTkwMTIsIDM4NTAsIDEyODE5MSwgOTgzMjU2LCAxMjgzODksIDAsIDAsIDkwOCwgCi0gICAgMCwgODYxMSwgMTIxMzg0LCAwLCA3NDY0MiwgNDM2OTEsIDQxMTk3LCAwLCA4OTc4LCAxMjA1NDAsIDExOTEzNSwgNDE1ODYsIAotICAgIDEwNTI3LCA3MDQyNiwgOTE3ODQ4LCAzODQ4LCA3ODczOSwgNzQ5MTcsIDEyNzUzNiwgNjUyNDEsIDUzMzYsIDc0ODgzLCAKLSAgICAxMjg3ODYsIDY2MywgMCwgMTA3ODAsIDAsIDAsIDc4NzY3LCA5ODMyNTksIDEyNzE2MywgNjgxOTMsIDM0NywgMCwgCi0gICAgOTE3NTQ0LCA3ODc3NSwgNjQ2NzUsIDQxNTgyLCA3ODc3NCwgNzg3NDQsIDY1NTc5LCAxMjk4MCwgNjgwNDYsIDEyMTQzLCAKLSAgICA2OTY1NywgNzg1MTIsIDEyODQ5MywgMTExNTMsIDQxODA0LCA3ODUyMywgMCwgNzg1MjUsIDAsIDEyODg1OSwgNDE1ODQsIAotICAgIDEwNjgxLCAwLCAxMjA5NzksIDczOTM4LCA3Mzc4MSwgMTI4MDIyLCA0ODAwLCA2NjY2MSwgMCwgNjYzMDYsIDY0NzE1LCAKLSAgICA2NjM4NCwgOTUxOCwgNjYwOSwgMTA0MzQsIDcwODQ1LCAxMTMxOSwgMTA5NywgMTI4OTY0LCA5MTc1NjQsIDQxNzMwLCAKLSAgICAxMjkxODEsIDEyMTUwMSwgNzM4NDcsIDc0ODQ1LCA2NTE3MiwgNDE3MjgsIDQxNzIxLCAxOTQ3ODAsIDE5NDc2OSwgCi0gICAgMTIxNDk5LCA0MTIwMywgMTI3MDU2LCAxMzExMCwgNDE3MjYsIDE5NDg1NiwgNjcwNzcsIDEwMDAsIDY5NjUxLCAxMjc1MDksIAotICAgIDQxMTQwLCAxMjA5LCA3Mzk3OCwgMTI1MDU5LCA3Mzc1MCwgMTA3MywgNjMyMSwgNzc4NzgsIDQxMTM4LCA5ODM5NjgsIAotICAgIDY4MjEzLCA3ODAwMCwgMTIxNjcsIDExMTUsIDQxNjA1LCA5Nzk0LCAxMTk5MDQsIDY3NjcxLCA1NTI0OCwgMTIyMzcsIAotICAgIDc4Nzg3LCA2NjMxNCwgNjU4NywgOTI5MCwgNzg3ODIsIDc4NzgzLCA5MjMxLCA3ODc4MSwgMjk1OSwgNzkyNiwgMCwgCi0gICAgOTE3NjAxLCAxMjg4MzMsIDY0Mzk4LCA3MTEyNCwgMTE5OTcwLCAxMjMxMSwgMTE5MTgxLCA3ODc5NiwgNjg3NjgsIDc4Nzk0LCAKLSAgICA3ODc5NSwgNjg0MzQsIDc4NzkzLCA2NjY3MCwgMTEzNzk3LCAxMjg1NzksIDEyMjkwLCAxMjAxNjksIDEyOTA5MywgCi0gICAgMTE5ODczLCA0MjE0MiwgOTk2OCwgODIwNSwgMCwgNTEzMSwgMTEzNjk0LCA5NjI3LCA0MzY0NiwgNzg1NDIsIDc4NTM1LCAKLSAgICA5ODMyMTIsIDE5NDQsIDEyNDgsIDEwMTQ4LCAxMjc3NTUsIDExOTk5MCwgMTE5OTkxLCAxMjcwMSwgNzgzNzYsIDExMzA4LCAKLSAgICAxMTk5OTUsIDk4MzQ5MywgMTEzNzAyLCA2NjgzNiwgNjUzMDUsIDY1MTAwLCA0MDMxLCA0Mjc5NCwgMTIwMDAzLCA3MDc1LCAKLSAgICA4MTU0LCAxMTk5ODUsIDEyMDAwNywgNDE4MTcsIDczOTM0LCA0MjI3NSwgMTIwMDExLCAxMjAwMTIsIDc4NTI2LCAxMjAwMTQsIAotICAgIDEyMDAxNSwgNjA0MSwgMTIwNTIwLCA0MTg5OSwgOTgzMjg4LCA4MDAyLCAxMjgzNjcsIDQzNjQsIDczNzMyLCA5ODM1NzAsIAotICAgIDY0MzMyLCAxMjA5NzYsIDc4MTMsIDkwNjQsIDExOTk4NiwgMTAxMjQsIDc1MjYsIDg2MDEsIDcyODEsIDY4MjQ2LCA3Mjc5LCAKLSAgICAxMjA0MSwgMTQxOCwgMTA4ODUsIDEyNjczLCAxMjExNTIsIDEyMTM4MSwgOTY2MCwgOTE3OTI5LCAxMzAxMiwgNDU3MSwgCi0gICAgOTE3NTg4LCAwLCAxMTg5NDAsIDEyMDc4LCAyOTcwLCAxMjkxMjIsIDEwOTMzLCAwLCA3Nzg3MCwgMTIxMjQzLCA3Nzg0MSwgCi0gICAgMCwgNDE1OTksIDcwMTU5LCAxMjEzNDIsIDEyMDg4NSwgMTI5NTAsIDkyMTYwLCAzNDg2LCA5ODM5NzMsIDc4MzExLCA0MjM5LCAKLSAgICAxMjgwNzMsIDEyNzc5OSwgNjY1MTEsIDY4MDY2LCAyNjM3LCA2NDYyOSwgODQ2MCwgNjY4MzQsIDg0NzYsIDk4Mzk3NSwgMCwgCi0gICAgNjgzMTIsIDc4NDg5LCA2NTY3MywgMTAxOSwgNzg0OTUsIDQxNDgsIDAsIDEyMjg5LCAwLCA0MzE2LCAwLCAxMzExOSwgCi0gICAgODQ4OCwgNTQxMiwgNjYyNDMsIDk5MzUsIDkyNzc3LCA3Mzg2NCwgOTgzMjAzLCA0MTczNCwgODIwNiwgNzQwODEsIDkxNjMsIAotICAgIDMyODYsIDkwNzIsIDU4NjcsIDEzMzAyLCA3NjIyLCA3MTIwLCA0MTczNiwgOTI1NDYsIDQxNzMxLCAwLCA3NDAwLCA1NDE2LCAKLSAgICA2ODY2MywgMTE4OTI0LCAxMDgxNywgMCwgNDE1MzksIDEyNzI4NCwgNjY4NTMsIDczOTYzLCA0MTg1NSwgNDE4NjcsIAotICAgIDY1NTY0LCAxMTI3NywgNjU4OTIsIDExNTM2LCAxMDYyMCwgOTIyNzIsIDcxMTUsIDY2MDMwLCA3MzkzMiwgNTQ5OCwgCi0gICAgNjM4NzYsIDQxNTM2LCAwLCA2ODIwNCwgOTI1ODcsIDM0NTksIDg5OTcsIDE5NDcxOSwgOTI3MTQsIDAsIDEyNzc4MiwgCi0gICAgOTI1MTIsIDAsIDY2Mzc3LCA2OTc4MSwgMCwgMTI0OTcyLCA3ODUxMSwgMzE2MSwgMjk1LCA3MTI1NywgMCwgOTIyMjMsIAotICAgIDEyMTMyOCwgNzg3NDIsIDkwMTYsIDQzNDU0LCA2MzkwMywgNjM5MDIsIDQzNTAxLCA2ODIxMCwgMzk3MSwgOTgzOTU5LCAKLSAgICA3MDA2MywgMjk1MiwgNzg3NjUsIDExMDM4LCAxMDkwMSwgNjM5MDAsIDYzODk5LCA2Mzg5OCwgNjgwOTUsIDY2NywgMTIzMzIsIAotICAgIDYzODg3LCA2MDg2LCA0MTcyMiwgMCwgNTE3MiwgMCwgOTgzMjgwLCA0MTU5LCA5ODM1NjIsIDAsIDk4MTUsIDYzODg0LCAKLSAgICAxOTkzNCwgNjM4ODIsIDQxMTk4LCA4NTU1LCA2Mzg3OCwgNjM4NzcsIDQyNDYwLCA2MDUwLCA0MjcwOCwgNjM4ODEsIAotICAgIDYzODcyLCAxMjA5NDEsIDQyNDIxLCAxOTUwMzUsIDQxNzIzLCA2Mzg3NSwgNjM4NzQsIDExNDYwLCA3NDMyLCAxOTEzLCAKLSAgICA0MTkxMywgNjM4NTIsIDY2ODY5LCAxMjg5NzEsIDQyMzQ4LCA3Mzg5MiwgNjc1MiwgNDQ2LCA0MTkxMSwgMTI3OTAxLCAKLSAgICA2Mzg1MSwgNjM4NTAsIDQxOTEwLCAxMjg2MzcsIDYzODQ2LCAyOTcyLCAxMjkzMiwgNzI2MiwgNjk5NjgsIDYzODQ5LCAKLSAgICA2Mzg0OCwgNjM4NDcsIDExMzc0OSwgNjU3MCwgODMwMiwgNzI1OSwgNjM4NDIsIDQxNzgsIDEwNzQ2LCA3MjUwLCAxMzIxNCwgCi0gICAgMTAwNDEsIDgxMDUsIDYzODkyLCAxMjc3ODAsIDY5OTY5LCAxMTA1LCA0MTgwLCAxMjc3ODYsIDEyMDk0LCA5NDk3LCAwLCAKLSAgICA2Mzg5MSwgNjM4OTAsIDYzODg5LCA2Mzg4OCwgNTUzOCwgOTk4NywgMCwgOTI3MzksIDE2NzgsIDEzMjc0LCA1NTIsIAotICAgIDExODgzNCwgNDQwMTAsIDEwNzg1LCAwLCAxMTE5MiwgNDU1NywgNzQ0NTksIDkxNTksIDEwMTcxLCAxMzEyNSwgNjM4NjAsIAotICAgIDU1NDAsIDYzODU4LCA2Mzg2NSwgMjgxLCAxMzI0MiwgNjM4NjIsIDc0MTU0LCAwLCA1NTM2LCA2NTU2OCwgOTU3NCwgMTM4OCwgCi0gICAgNzE5MDIsIDAsIDEwNzcsIDE5NTAwMCwgNjUwOTksIDExNTMxLCA1ODM0LCAwLCAwLCA5MTc3ODksIDAsIDQyNzczLCAKLSAgICAxMjEzMzEsIDAsIDAsIDExOTIyMCwgMTIwOTEyLCAzNjYzLCAxMjcwMjcsIDExMTIsIDcwMzM1LCA4Njg2LCAxMjY2MTEsIAotICAgIDUzMzQsIDY1MDgxLCA0MzI0OSwgNzQ3NzgsIDEyNzk2OCwgMTEwNzcsIDEyNTAxNywgNjUwOSwgMCwgNTMyNywgNzg3NzYsIAotICAgIDE5OTA3LCA2Mzg2OSwgMzQ3OCwgNzU4MywgNzY3OSwgMjkwMywgMCwgMzAwMSwgMTE1OCwgODc0NSwgNDM3NDYsIDczNzQ4LCAKLSAgICA2Mzg2NiwgNzg2MjYsIDE5MTUsIDQ4NDYsIDY3NzU1LCA2NjM3MSwgMTE4OTg0LCA0MjEwNSwgMjk5MCwgMTIwMTI4LCA4MDUsIAotICAgIDY5MjM4LCA2NDQzOCwgMTIwNzAsIDg3NjAsIDExMTcsIDExMzc1MCwgMTIyMTIsIDEyMDEyMywgNjUxNzQsIDQyMzU3LCAKLSAgICA2MzgzNSwgNjM4MzQsIDk4Mzk0NywgNzgyNDAsIDEyMjI1LCA2MzgzOCwgNjM4MzcsIDk4Mzg1MywgNzAxNzMsIDYzODMzLCAKLSAgICA2MDQyLCA2NjM2MCwgODA4MywgMTI4MTY2LCA5ODM3MzMsIDYzODIxLCA2MzgyMCwgNjM4MTksIDYzODE4LCA5ODM5MDQsIAotICAgIDUyMjcsIDkwNDcsIDYzODIyLCA3NDc5NywgNjA5MSwgMCwgMTA2OTEsIDU2MCwgNTY0MywgODIyNiwgMTE5NTc4LCA2MzgxMiwgCi0gICAgNjM4MTEsIDYzODEwLCA2MzgwOSwgMjI4OSwgNjM4MTUsIDYzODE0LCA2MzgxMywgNjA0NywgMTU5NywgMTIwMTQzLCA3ODAsIAotICAgIDIwNiwgNzAxMjYsIDQ5MzYsIDY1MTQ3LCA4MTY4LCA2MzkzMCwgMjA3NiwgMTA5MywgOTg4MiwgNjM5MzQsIDIwODIsIAotICAgIDYzOTMyLCA3NTA1MCwgNjM5MjksIDM1NDYsIDE2MDUsIDc3OTM0LCA5ODA2LCA0MzQ3MiwgNzc5MzMsIDg0MDAsIDExMzQzLCAKLSAgICAyMDg2LCAwLCA2MzkyNiwgMjk4NCwgNTk2OCwgOTI4NywgMCwgNDYxOCwgNDIyMDksIDExMTM3LCAxMzE2OSwgNTI5MCwgCi0gICAgMjA4OSwgMTY5NSwgMTA3NDMsIDEwODgsIDYzODI1LCA3MjY4LCAxMDg0LCAxMDg1LCA2MzgyOSwgMTA4MywgMTAxMzEsIAotICAgIDcyODMsIDAsIDYzOTcwLCAxMjExNjUsIDEwOTIsIDQ3NTQsIDcyNzMsIDUyNTIsIDQ0MDE2LCA0MzYyNywgMTI3OTIxLCAKLSAgICAxMjg5MjAsIDc0MDgsIDExODA5LCA4MzIyMCwgMTIxMTgxLCAwLCAyOTY1LCA3MjU4LCA4ODA4LCA2NjU3MiwgMTA4OSwgCi0gICAgNDE4NywgNjM5MzcsIDQyMTE5LCA0MjEyMCwgMTExMDYsIDk0MCwgNTc4NywgMTAwOTksIDYzOTM4LCAwLCA3NDQ5NCwgCi0gICAgMTI0NjMsIDI5OTQsIDEyNTEzNiwgMTE4ODI3LCA2ODUyMiwgOTY2NCwgNzA4MzQsIDc3OTQwLCA2Nzg5MiwgNzc5MzgsIAotICAgIDc0MzQzLCA2NzM3MCwgMCwgNjYwLCAxMDEyNywgNjY2LCA5MDIyLCA1NTMyLCA0MzY2NywgNTUzMywgMTI1ODAsIDc4NTA3LCAKLSAgICA2MTE4LCAyMjIsIDk3OSwgMzg4NCwgOTgzMzk0LCA3NDE1MSwgODMyMjcsIDY1MDIsIDk4Mzg1NSwgMTEwODUsIDEyMTI2MSwgCi0gICAgNjM5NTEsIDEyNDY1LCA5MTc4NjIsIDAsIDEyODc4MiwgNjM5NDYsIDE3MDcsIDYzOTI0LCAxMjQ2MSwgNjM5NTAsIDYzODk3LCAKLSAgICA2Mzk0OCwgNjM5NDcsIDYzOTQ1LCA2MDM4LCA2Mzk0MywgNjM5NDIsIDY0Njg1LCA2Mzg5NSwgNjU4MzgsIDIyNzYsIDc3NzYsIAotICAgIDk0MDc2LCAxMjEwODYsIDkyNDY0LCAxMjA0NDQsIDY5NzMwLCA4MDEsIDQzMTY1LCAxNjkwLCA2MzkxOSwgNjM5MTgsIAotICAgIDYzOTE3LCAxMzI3NywgNDM2NTksIDEyOTUxLCAxMjA2MzgsIDk5MDYsIDIwNTQsIDIzMzQsIDc4NTE1LCA2MzkxNiwgNTQ4MywgCi0gICAgNjM5MTQsIDY5NzM3LCA2MzkxMSwgNTQ4NCwgNjM5MDksIDYzOTA4LCAyNTM5LCAxMjAxMDIsIDQzOTgwLCA1NDg1LCAwLCAKLSAgICA0MjY5NywgOTA2MSwgNTUzNCwgMTA2NzIsIDQ1MDIsIDY4MDU3LCAyNTMsIDAsIDY4MjA4LCAxMjA0MzksIDkyMDMsIAotICAgIDc0MjMxLCAwLCAxMTUzMCwgNjg2MzQsIDY4NjY4LCAxMjEyNDIsIDExMTI3LCAwLCAxMDQ3NCwgNDM0MjYsIDEzMjU3LCAKLSAgICA0MjM1NCwgMTI4MDk5LCA5ODM2OTgsIDcwMDQ0LCAxOTUwNjUsIDAsIDg0MTMsIDY2ODQxLCAwLCA1NjkzLCA3MjcyLCAwLCAKLSAgICAxMzIwOSwgNjQ0NzAsIDY1ODMxLCA3NDM1MCwgMTk1MDYzLCAwLCAwLCAwLCAxMjY2MzksIDEyMDA5NywgMCwgOTQwNzgsIAotICAgIDY2ODQwLCAxMjcxNjUsIDY2NjA4LCAzMTExLCA0MTg2MywgODgwNCwgNDI5MTMsIDc4MzQ3LCA3MjcwLCAwLCA2NjYwNiwgCi0gICAgNjYyOCwgMTA3NiwgNzQzMywgMTQzNiwgNzM4NDQsIDU1MjI2LCAxMjgzNTMsIDYzOTgyLCA3MzkzLCAxMjgwNywgNDM0MTMsIAotICAgIDYzOTA2LCAxNTk4LCA2MzkwNCwgNzExODcsIDcwMzkzLCA0MTcyOSwgNDQyMywgMTMwNywgMTEzNjkyLCAxMDUxNSwgCi0gICAgNDE1ODksIDEyODY5OCwgMTI4OTE4LCA2MjE4LCA5MjkxNywgMTQzMCwgMCwgMTI2NTEzLCAxMjA2MDYsIDc4NzU0LCA1NDEzLCAKLSAgICA3NjE5LCAzMjU1LCAzNDkzLCA3NDAzMiwgMTE1NDksIDEwNzM1LCA0MTc0MywgNzM5MzcsIDY4MDEsIDk4MzYzMywgNDUxOCwgCi0gICAgMTA5OTAsIDY1MDczLCA1MTY3LCA0NDgxLCAzNzcxLCA2NzA5MywgMjcxMCwgOTgzNTkzLCA2NjI3NywgNDE3MjQsIDY3NzE2LCAKLSAgICA0MzA3MywgNDE2OTAsIDEyNDc5LCA5ODM2MzUsIDgzODAsIDEyMTA3MSwgNzE4NTIsIDcwMDQ2LCAxNjI4LCAxMjEyMjksIAotICAgIDEyODgxNywgMTI5MDY3LCA2NTI2MiwgNjMzMywgMTA3ODMsIDExMTcyLCAxMjE0NzMsIDYzODU1LCA3MDg0MCwgMTEzNjc5LCAKLSAgICAwLCA1MzM5LCA3NDMyMywgMTIwOTQ2LCAxMzAwNCwgNjY4NDMsIDQ0NTcsIDAsIDEyNzc1NiwgMTk0ODE4LCAxMjcxMTYsIAotICAgIDU2ODQsIDg2NzgsIDEwOTE0LCA0MzYzMiwgNTY4OSwgNjU4MDcsIDcwODE0LCA2ODQ2NCwgMTI2MzMsIDEyODcwLCA2OTcwNSwgCi0gICAgNjUxODMsIDU2ODgsIDExOTI2LCA2MDMzLCA2MzEwLCA1Njg2LCAxMTkwNzYsIDc0MjUxLCAwLCAxMjA2NDcsIDEyODkzMCwgCi0gICAgNTAsIDEwNTU4LCA5ODcxLCA0MjYxMiwgNDM2NTUsIDc0NDAzLCA5ODM4MTgsIDc0Mjg0LCA2NjQ2OCwgNjY5MDUsIDEzMjU5LCAKLSAgICA0NDQ4LCAxMTkxNTAsIDEyMTQwNiwgODMzNDksIDcwMDQzLCAxMzIxLCAwLCAxMDY0MCwgMTE1MzksIDExNTEsIDEyMTE4NiwgCi0gICAgOTE3NjA3LCAxMjQ5NTgsIDEyNzA3OSwgNzExMDYsIDEyNzg1MiwgMCwgMCwgOTgzMDc1LCAxMjUwMSwgNjQ2MDQsIAotICAgIDEyODY1NywgMTE1MjcsIDExODg3MCwgODgxMiwgOTgzNzA2LCAxMTUzOCwgODY3MywgMTI2NTAsIDExMDIwLCAwLCA2NjQ2NywgCi0gICAgMjEwNSwgODA4NywgNzgxNjMsIDY5NjMyLCA5ODk0LCAxMjcxMzcsIDEyNzg1NiwgNjk5OTUsIDQ2MzYsIDU1MjYyLCAKLSAgICA3ODUxMywgNDUxNSwgMjM4MiwgMCwgMTI3MDU1LCA5ODM2OTUsIDExMzc4MCwgMCwgMTE4OTY4LCAxMjI3NywgMTIxMjM5LCAKLSAgICAxMTk5NSwgOTI1NTMsIDEyMTAwNiwgMTIxNTgsIDcwMTcwLCA4NzQxLCAxMDE5NywgNjg3ODAsIDkyNDI2LCAxMjEyODUsIAotICAgIDY1MzEsIDgzMDUxLCAxMjc4NDYsIDQ3MywgNDM0MTUsIDkyOTM2LCA5ODM2NTAsIDE4NzMsIDEwODcsIDEyNDk2NiwgMCwgCi0gICAgNzQyODAsIDc4NTI3LCA2NjQzOSwgNDMyMTgsIDk4MzEyMywgMTk0NzE2LCA3MjM3LCAxMjUwNCwgNzExMTMsIDEyNjU1OSwgCi0gICAgMTI4NzQ4LCAxMjA4ODcsIDk0ODksIDAsIDcwODQzLCA0Mzg0LCA3NDIyMCwgNjM4NDUsIDIwNTgsIDY5NzQxLCAxMzI5NSwgCi0gICAgNDMxOTEsIDEyODAzMCwgMTI4NTcxLCAxMTU0LCAzODU3LCAxMjA1LCAwLCAwLCA2MDU1LCAxMjk1OCwgMTIwNzA2LCAKLSAgICA3NDE2OCwgMTI4Mzg4LCA3MDg0NiwgNDQyMSwgMTA1OTIsIDAsIDQ5NSwgNjY0MDAsIDQxNzEyLCA3OTgzLCA3MDgzMywgCi0gICAgOTM5OTcsIDk4MzMzMiwgNjM0NywgNzg3MTUsIDc2NTQsIDQxNzEwLCA0MTk2LCAwLCA0MzcsIDQxNzA5LCA3Mzc3MiwgCi0gICAgNzA4MzIsIDAsIDk0NjUsIDEzMjkwLCAxMTkxODAsIDQ5OTcsIDY0MzA2LCAxMjEzMDksIDAsIDQ5OTksIDE5NDY0MiwgCi0gICAgNjc0MDEsIDEyNjU4MiwgNDcxMSwgMTIwNzY5LCAxMjA2MDIsIDI3MzksIDAsIDgwNDQsIDc0MzEzLCAxOTQ2NDMsIDQxNzg5LCAKLSAgICAxMjgxNDIsIDEwODA5LCA2NjI3OSwgMCwgMCwgMTc3OSwgNjYwMCwgNjYwMSwgNDE1NDMsIDUzMjUsIDY0MiwgNjQxODcsIAotICAgIDEzMDU4LCAxMjA0NDksIDEyODc1LCA5ODM4MDQsIDkyMTg2LCAxMzIyOSwgNzE4NDUsIDEwNTc1LCA0MzM5OSwgMTk0NTc3LCAKLSAgICAwLCA0MTc5MSwgMTEwNCwgMCwgOTgzNzI1LCAxMDY1NSwgOTgzMzM0LCA5ODM1NjEsIDEyMDE2NCwgMCwgMTA4MiwgCi0gICAgMTIxMDI0LCA4NDI4LCA2NTY5LCAwLCAwLCA3ODUzNCwgNjk4NDksIDY3ODMsIDE5NDY3MSwgMTI5OTMsIDgwNDksIDQxNTQ4LCAKLSAgICA0NDAyMSwgNjQ1OCwgNjQ3MjgsIDEyODg4MiwgNDc2MSwgNjM4MjgsIDQ3NjYsIDY0NjIzLCAxMjczLCA0MzQwNywgCi0gICAgMTIwNjc3LCAxMTg4NzYsIDE5NTA0NSwgNjkxMiwgMTMxMywgNjMyMiwgMTA0ODMsIDEyODYyNywgNDE1NDUsIDEyNjQ2NSwgCi0gICAgOTI0NDksIDAsIDExMjE2LCAxMjEzMDcsIDAsIDc4NjI0LCAzNDg0LCA3NDMzNywgMCwgMCwgODUwMywgNTEyMiwgNDE1MjcsIAotICAgIDcxOTEwLCA2NjMyMCwgNzAxNjEsIDc0OTA3LCAwLCAwLCA0MTUzNywgNjY0NTMsIDgzMDMsIDgyODIsIDExODE3LCA3Mzg1NywgCi0gICAgMTAwMDMsIDczODU5LCA2NTkwNCwgNzM2MywgMTY4NiwgMCwgNzAxMTUsIDExNDY3LCAzNjY0LCA2NTkyMSwgNjQyOTksIAotICAgIDEyNDkzOSwgMTI4NDYyLCAxMjgwMDEsIDQzMjQsIDEyNiwgNDIyNDYsIDc1MDMwLCA2OTk4NCwgNjc3MjUsIDY1OTI2LCAKLSAgICA3NzQ0LCA2ODg1OSwgNzQyNzcsIDY2MjgzLCA3ODA1MiwgNDM4MTcsIDY5NjYsIDQzODIyLCA4MTM2LCAwLCA2NTYwMCwgCi0gICAgMTYzMywgMCwgMTI2NjE0LCA0NzYyLCAxMTAzLCA3MDgyNywgNzAxNTcsIDQ3NjUsIDk4MzQ5NCwgMTMwNzgsIDAsIDQ3NjAsIAotICAgIDYzODI3LCAyMDUwLCAxMDg3MSwgNDMxOTksIDExMDIsIDE5NDY1MiwgNDIyMzYsIDEyODg2NywgMTI3MDcyLCAxMTU0NiwgCi0gICAgNzQ3OTQsIDMzNywgMTIxMTk2LCA0MjU5MSwgODYyNywgMTIyNzksIDExMTEsIDAsIDc1MDQ3LCA0NzA3LCA2ODIwNiwgCi0gICAgMTAxNDMsIDc4ODMsIDEyMTQ0NCwgNzg4MCwgNDUyMiwgODY0NSwgNTcwNCwgMTMwMTAsIDY5Nzk2LCA4MzA0LCA5Mjk4MiwgCi0gICAgMTk0Njg4LCAxMTk1NzUsIDIyOTMsIDcwMTk1LCA2NjY1NCwgMTI5MDc3LCA5MjY3NiwgMCwgMTMwMDgsIDEyMTE5NCwgCi0gICAgNDM4NSwgMTI4NzM2LCAxMzAxMSwgMTI1MDA0LCA5MjU2OSwgMTE5MTYxLCAxMzAwOSwgMTYwLCAyNjc3LCA3MDM4OCwgCi0gICAgOTgzMjgyLCA0MTc5MywgNjU3NjMsIDc0MjIxLCA3MDc5MCwgNDE3OTIsIDQyNzcwLCA5NDA1NCwgNjU3NjIsIDExODgyOSwgCi0gICAgNDM4MjEsIDU3MDksIDEyODI5NiwgNzEwNzYsIDQzODE2LCA5ODMwODcsIDk4Mzg5NiwgMTA3OSwgMzg2NywgNTcwOCwgMCwgCi0gICAgMCwgNDM3OTcsIDU3MDYsIDY0NzY4LCA1NzA1LCA4NzkxLCA0MDA1LCAxMjEwOTEsIDEwMjM3LCAxMDk5MSwgMTI4ODE2LCAKLSAgICA0MzQ1OSwgOTE3MywgOTE3NTgxLCA5MTc1ODAsIDEzMTcwLCAxMjU0MCwgMTI5MTc4LCA0MjYwNSwgMTIwNzY1LCAxMjY2MTcsIAotICAgIDY4NjQ3LCA5MTc1NzIsIDEwMDU4LCA2ODA1OCwgNzQ4NjcsIDY3NzMwLCAxMjcwNzgsIDMzMzksIDExNDQ4LCAxMTA2LCAKLSAgICA5MTc1OTEsIDkxNzU0MCwgOTE3NTkzLCAzMzQwLCA3NDAxNywgOTE3NTg2LCAxMjA5OTQsIDEyOTE0MSwgMTIwNTQxLCAKLSAgICAxMDYwNSwgMTMwOSwgNjM5NjYsIDEyMDc0MywgMTc1NCwgOTIyMjYsIDEzMjQ2LCA4NjQsIDk4MzE3MSwgMTE4OTI2LCAKLSAgICA4OTcyLCAxMTk5MTgsIDc4NDksIDEyMDA5MiwgODMxMzAsIDEzMjQwLCAxOTUwNjgsIDUxOTIsIDQzMzgsIDY3OTgyLCAKLSAgICAxMDk0OCwgNjY4MjUsIDEzMTk5LCA5MjU3NSwgMTIzNiwgMTMyMDgsIDEzMjYxLCAxMzE4OSwgMTMxODgsIDkzOTkzLCAKLSAgICA3MTg0NywgNzQ0MCwgMCwgMTIwMTUzLCA5NTUzLCAxNTkwLCA2Mzc3NywgNjM3NzYsIDEzMTc4LCA2Mzc4MiwgNjM3ODEsIAotICAgIDYzNzgwLCA2Mzc3OSwgMTU4MywgMTE5OTIzLCAxMzI2MCwgNDU1MCwgMTIwNTk4LCA2NDIwNSwgMTI5MTA3LCA3MTA3MSwgCi0gICAgNDE1MjIsIDQxNTIzLCA2ODUyMywgOTgzNzcyLCAxMTg5MjMsIDExMzU0LCA5NDA3MSwgMCwgNDI3OTUsIDAsIDExOTE5NSwgCi0gICAgMTEzOTQsIDE5NDY0NiwgMTMyMzYsIDEzMjcyLCAxMzE5NCwgMTMzNCwgNjk5MjYsIDQ0NzksIDExNzgsIDY1NTg2LCAKLSAgICA2ODMxMSwgNjY2ODEsIDExOTE5MywgNDYwMSwgMCwgMTI3ODg1LCA5ODM3NjUsIDY2ODI4LCAxMjg5NzIsIDEyNzgzOSwgCi0gICAgNzQ1ODAsIDY4MDksIDYzNzg2LCA2MDMxLCA2NzQwMiwgNjM3OTEsIDYzNzkwLCAxMTQ1LCA2Mzc4OCwgNzkxMCwgNjM3ODUsIAotICAgIDQzMTUzLCA3NTQsIDEwMTkyLCAxMzEwNSwgODE4MywgMTIwNzQxLCAyMDM3LCAwLCA2NDcxMCwgMTA3NDcsIDEyNSwgCi0gICAgMTIwODAzLCA2NDg5MCwgOTgzMDY0LCAxMjczNzYsIDAsIDQxNzE5LCA2Mzc1OCwgMzUyMywgMTA3NCwgMTMyNTgsIDk1MzYsIAotICAgIDcxMDU2LCAwLCA0NDI3LCA3NDI0MiwgNjM3NTcsIDQzMTQ1LCAxMjIxNywgNjM3NTQsIDQxNTMyLCAxMzQ5LCA2Mzc1MCwgCi0gICAgNjM3NDksIDEyOTAyNSwgMCwgMTI3OTI4LCA2Mzc1MywgNjM4MDIsIDQxMDg0LCAxMjA2MjIsIDY4MTMzLCA0MTkzMCwgCi0gICAgNjM4MDUsIDYzODA0LCAxMTE0MCwgNjM4MDEsIDQxMDgyLCA4MTQwLCA2Mzc5OCwgNjI2MCwgMCwgMTI4MzkxLCA5NDA3NCwgCi0gICAgNjM3OTMsIDExOTg4LCAzODk4LCA5MjI0NiwgMTAyMDEsIDEyMjM4LCA2Mzc5NSwgNDIxOTQsIDEwMzY3LCAxMjUyMSwgCi0gICAgMTA0MzEsIDQyMTE0LCA0MTkzMiwgMTA2OCwgMCwgMTI1MjMsIDEyOTQ1LCA5ODMzMzEsIDQyMjAzLCA3OTUwLCAzMTI0LCAKLSAgICA2Mzc3MSwgNDI3ODcsIDQzODYsIDExMTQ4LCA2OTczLCAyNzkzLCAxMjQ3NSwgMTI5MTgwLCA3NTA1NiwgNjM3NjksIDk1MzAsIAotICAgIDEyMTI0OCwgMTIyMzIsIDEzMTM1LCA4NTk2LCA1NjgxLCA2Mzc2MiwgNDU5NSwgNjM3NjAsIDc5MiwgMTEzNjc0LCA2NDgwMywgCi0gICAgMCwgODc0MiwgMTk1MDI5LCAxMTA1MywgMTI4Nzk2LCA2Mzc0NCwgMTI4MTA3LCAxMjg5NDIsIDc1ODgsIDYzNzQ4LCAxNjkzLCAKLSAgICA2Mzc0NiwgNDMyMDQsIDUwNTUsIDY4NDI2LCA0MjA2MywgMTA5MCwgNjg4MDMsIDEyMDc3OCwgMTE2NjUsIDc0MTMzLCAKLSAgICA0NTU4LCA2NTY4NSwgOTUyMywgOTgzNDUzLCA2Mzg1NywgNzEyMTYsIDExNTEzLCAwLCA2MTU3LCA2Mzc3NSwgNjM3NzQsIAotICAgIDYzNzczLCAxMzE5MSwgMTIxNzAsIDM1MDAsIDMxMzksIDY4MDcxLCAzMTcwLCAxMjQ4NSwgNDM4OTEsIDEwODcyLCA0Mzg5MiwgCi0gICAgMTMwMDYsIDQzOTMzLCAxMjAwNzQsIDAsIDk0MSwgMCwgMTI5MDc5LCAxMjA5NjcsIDY1NTQxLCAxMTA2MywgMCwgODIyOCwgCi0gICAgMCwgNDIwNjUsIDEyODM2OCwgNDM4ODksIDk0MDM5LCAxMjkyOTksIDkyNDU1LCA3Mzg2LCAwLCA2NDQ0NCwgNzAyOTUsIAotICAgIDExOTg2MywgNDM2MDMsIDk0MDc1LCA2NTM5NywgMjg4LCA4MzQwOSwgMCwgMCwgMTAwMjUsIDY5OTE1LCAyOTE4LCA2NjgyMCwgCi0gICAgNjUzMDAsIDExOTg3MSwgOTg4MywgNjQ3MjYsIDI3OTAsIDY1Mzk1LCAzNzkzLCA5ODM2MjAsIDEyNzgyOSwgNjUzOTMsIAotICAgIDEyMDU5MiwgNzQxMzgsIDgzNTA1LCA5Mjc1MSwgNzUwMTksIDc0MTM5LCA3ODc3NywgNjUzOTQsIDExNTQ4LCA1MjcwLCAKLSAgICA5ODMyMzgsIDY1Mzk2LCA3NDk5OCwgNjU4MTMsIDEzMjU2LCAxMjgyLCAxMjA3NzEsIDc1MDEyLCAwLCAxMDg4OCwgCi0gICAgMTIwOTM0LCA2NTI0MiwgMCwgMzMzMCwgMCwgMCwgNjgzNDAsIDAsIDAsIDcxMjAyLCAzMzA0LCA0Mjc1MywgOTI1ODgsIAotICAgIDcwMjk4LCA3NDY0MywgMTYyNywgMCwgMTI3NzY1LCAxOTQ3MzUsIDUzNzEsIDEzMTE2LCAwLCAxODI2LCAxMTg3OTQsIDAsIAotICAgIDQzMDk0LCA3MDAyMywgNDM2NTAsIDk0MDM3LCA2ODMxNywgOTAzNSwgMTExNDEsIDkxNzk3NywgMTI4MDA1LCAwLCA5MjIwNywgCi0gICAgNjgxMjUsIDc0ODk4LCAxNjQsIDY4MzA5LCA5NDA2NywgOTQwMDAsIDY5NTgsIDAsIDQzMTE2LCA2NzcxOSwgNzAwMTksIAotICAgIDEzMjQ1LCAwLCA2ODgwOCwgNjY4MTgsIDAsIDcwMDMxLCAxMTA5OSwgMTI2NjYsIDEzMTc1LCAxMzIwNywgMTIwNDE0LCAKLSAgICA2NjAxNCwgMTIwNDI4LCA3NDQ3LCA1OTI5LCAwLCA2NTUwOSwgMTI5MTkyLCA3NDQ5LCAxMTMwNiwgMCwgNzM5MjAsIDMxODAsIAotICAgIDEyNTEwMiwgNjM4MDgsIDkwNTQsIDk3MSwgMTMwNjIsIDcxMDkwLCAwLCA2NTE5NSwgMTAxNjQsIDkyMjUyLCA3NDQyOCwgCi0gICAgOTgzMzIxLCA3ODE0NiwgOTI2MTEsIDAsIDcwMjA0LCAwLCAxMDA0NSwgMTI4ODIsIDEzMjc1LCAyMzAzLCAxMTA1NywgCi0gICAgOTE3OTc2LCAxMzI3NiwgMTI1MTMzLCA0MTUyNSwgNzgxNTAsIDcyNzEsIDExNDQ0LCAxMjY0NzksIDEyNzkwNCwgMTIxMjAzLCAKLSAgICAxMjIyOSwgMTE2ODAsIDkyOTU2LCA0MzQxMSwgNzM3NTEsIDAsIDY0ODEzLCAxOTUwODksIDAsIDEwNDc2LCAzODU4LCAKLSAgICA2NDE3NSwgMzkzMiwgNjQ5NTgsIDEyMDQzMiwgOTgzNjc4LCA3Mzk4OSwgNjgxOTIsIDAsIDY5ODQ3LCAzNjksIDc0OTA4LCAKLSAgICA0MTc4NCwgMTE5MTc1LCA2NDE2MywgNzc5OTcsIDAsIDkyNjQ1LCA2NTQ3NCwgNDc5NiwgMTIyOTIsIDEyNjU5NSwgNjU0NzksIAotICAgIDEyODYzMSwgNDE3ODEsIDEwNDg2LCA0MTQ4MCwgNDMwMDIsIDk4OTksIDkyNjA4LCAwLCA0MDQsIDEyODIxLCAzNzQxLCAwLCAKLSAgICA1Nzg4LCA4MDkyLCA2ODIxMiwgNDEyMjIsIDE4MzEsIDY2MDIwLCAzOTgyLCAwLCA0Mzg4LCAxOTQ5MTMsIDc0NiwgCi0gICAgMTE4ODI2LCA3NDc4MywgMCwgMTIwMTgsIDY1Mjk0LCAxMjc1NDUsIDE5NDkyNSwgNjg4MzUsIDk4MzQ4OCwgNDQyMiwgCi0gICAgNDcwOCwgMzc5OSwgNzQyOTIsIDExOTM1NywgMTIxMTQ2LCA3NDQzMCwgMCwgMTE3MDAsIDQzNzQsIDEyMDM3NywgMTIxMTUxLCAKLSAgICAxMzY0LCAwLCA4MDM4LCAxMjA4ODMsIDkxNzU5NywgMTI4NjgsIDY5ODE0LCA3MDQyNSwgNjczNSwgNzM5NzksIDEzMTc0LCAKKyAgICAxOTQ5OTgsIDEwMDkyOSwgMTA2NzMsIDY4Nzc5LCA3MjQ4LCA2ODc4NiwgNDM1MTUsIDE3ODEsIDU0OTYsIDM2MjcsIDYyLCAKKyAgICAxNjQ5LCA2Nzg3NiwgOTY0LCAxMDA2OTYsIDY2NDAzLCA3ODIyNiwgNjYzOTMsIDkyODk3LCA3MDM1NSwgNjY0MDksIAorICAgIDk4MzQ4NCwgODMzOTgsIDQzNjg5LCAxMDA3MDEsIDEzMTQyLCA3ODgxMiwgNDI0MTUsIDY2NTc1LCA0NTQyLCA2OTkwOSwgCisgICAgNDM1NDcsIDgzMDI4LCAwLCA3Njc3LCAyOTkxLCA0OTQ2LCA0MjQ1NCwgMTE1NjUsIDc5NDksIDEyNzU0NSwgNjk3NTksIAorICAgIDExMzQxLCA0MjQ5NCwgMzA3MywgNjU2MjUsIDk3MTQsIDExNjkyLCA0NjU3LCAwLCA3MDgxMCwgNjQ3OCwgOTg5OCwgCisgICAgNDEwMzksIDY1MjM3LCA2MjQxLCA3MTA2LCA0ODc3LCAxMDA2ODEsIDYyMzgsIDEwMDY4MywgMTA1NDgsIDEwMDY4NSwgCisgICAgNDQwOSwgMTAwNjg3LCAxMDA2OTAsIDY0Nzk4LCA3MDgwNSwgNTM0NiwgMTI4MjQwLCA5NDA0NywgNjIzNywgNDg3NCwgCisgICAgNjY4NTEsIDkxNzYsIDkyODgyLCAxMjExNTMsIDY1MjMxLCA2NTg4NCwgMTI2NzgsIDc4NzQ4LCAxMTg5MTIsIDExMzc4LCAKKyAgICA0NDAxOCwgNDI3ODUsIDI0MDgsIDMyNTEsIDExMjAzLCA5ODMxNTksIDU2ODUsIDAsIDI0NjEsIDExMDUyLCA3MDkxLCAKKyAgICA1MzQyLCA4MzE3LCAxMjE0NDYsIDY4MTYzLCA1MzQwLCAxMjA1NTksIDEyNTIwNiwgNDM2MzUsIDczOTI4LCAxMjUwMDEsIAorICAgIDcxMDY5LCA4MzMxOCwgMCwgODMzMTcsIDY1NDgyLCAxMjEzOTQsIDkxNDIsIDk4MzE3NywgNjg1MDYsIDE5NTA4NCwgCisgICAgMTA5MzgsIDAsIDExODc5MCwgMTE4MiwgMjU0MiwgNDgyNiwgMCwgMTI2NjQ4LCA3MjQzOCwgNTI5LCA4NTgwLCA2Njc2OSwgCisgICAgMTI1MDU4LCAxMDU4NiwgMTA3OTAsIDEwODM5LCA2NjAyMywgNDE1OTMsIDQxMjA3LCA2ODc0NCwgMTIwNjIwLCA0MTU5NCwgCisgICAgMjI1LCA0MjgyOCwgOTgzNjMyLCA2NzgyMSwgMTIxMjAwLCAxMTM3NiwgNzI3MjksIDEwNzIxLCA2NzY2NCwgMzQzOCwgCisgICAgNDIwOTcsIDY4ODYyLCAxMTA4NCwgMzE5NCwgNDE4NzAsIDI2NiwgNzgzMDUsIDEyMDE4MywgNDE4NzMsIDcxMjcxLCAKKyAgICAxMTMyNCwgMTIwNTMxLCA5ODM5NzYsIDg0MjAsIDY0OTE4LCAxMjg4MzksIDQxODcxLCA0MTMzOCwgMzczNCwgNzczNCwgCisgICAgNDM2ODMsIDg3NTAsIDY2NjA1LCA2NjAxMSwgOTI1MTQsIDQwOTY1LCAxMDA2NzIsIDEwMDY3NSwgNTE2MSwgMTA1NzIsIAorICAgIDEwMDY3NiwgNDI5MDYsIDEwMDY3OCwgNjQzNDksIDcyODcsIDQyMTYyLCAxMDA2NjAsIDk4MzYxMywgMTI2NjA1LCAxMTE2NywgCisgICAgNjkyMjAsIDEyMzU5LCA0MzQyOSwgNDEzNjksIDE2OTcsIDEyMTkxLCAwLCA2ODYzMywgNzI4NiwgMTk0Njk1LCA2ODYzNSwgCisgICAgMTAwMzEsIDExMzc2NiwgOTg3MCwgNjc3MjYsIDg2MjAsIDY1ODI0LCAxMDA2NTEsIDExOTM4LCAxMDA2NTMsIDcyODUsIAorICAgIDEwMDY1NSwgMTAwNjU0LCA0MjY3OCwgNjY4NDIsIDQzNjc3LCA0MTU4MywgMCwgNjU3OTksIDkyNjIzLCA3MDY5MywgCisgICAgMTI4MTMxLCAxMjgyNjcsIDc4MTY5LCA2NjE5OSwgMTAwNjY0LCAzNjA5LCA2ODYyNCwgNzAyODAsIDgzMiwgMTAwNjY3LCAKKyAgICAxMjA3NzAsIDc4NDczLCA2NjAwNywgNzg0NzEsIDY1NzAzLCA3MTI1NiwgMTI4NTE3LCA0MjczMiwgNTE4MCwgOTI2OTksIAorICAgIDQxMzk1LCA0MTUzMCwgMTE2OTEsIDY0NzczLCA5MjIxNCwgNzQwMDIsIDEyNzc5MCwgMTIwNTQ4LCAxMjg0NzgsIDYzNDgsIAorICAgIDI0MywgMTMyMDAsIDEyMDE2MCwgNjAyNCwgOTIzMDksIDk5NzksIDEwMDM3LCA0MTUyOSwgMTA2NDgsIDg1MzgsIDQzNjg3LCAKKyAgICAxMjA4ODAsIDkxNzg0NCwgNDI4NSwgNjYxOTUsIDEyMTM3MCwgNDIzMCwgOTI4ODYsIDczNjcsIDQzMjU2LCA5MjM1MywgCisgICAgNzU2MywgNDIzNzYsIDk4MzI3MSwgNjg0NDIsIDEyMDUxMiwgMCwgMCwgMjE0LCAxMjg1NzgsIDAsIDc0ODU2LCA2NTg5MywgCisgICAgMTIyMDgsIDk5NzMsIDEyODM4NiwgNjYzMTEsIDY1NTg5LCAxMjgyNzcsIDI2MDMsIDEyNTIwNSwgNzAxNTUsIDc4NjIyLCAKKyAgICA3MDA0NywgMTI3MjczLCA2MDIyLCAxMDA0ODUsIDI4ODQsIDAsIDExNjIwLCAwLCA0MywgMTk1MDIwLCAxMjY4MiwgMTAxNiwgCisgICAgNDExMDcsIDAsIDQxMTIxLCAzODg1LCA5MiwgNjU0NTYsIDY0NjA4LCAwLCA3NDgwMSwgNzA4NTUsIDIwNzQsIDExMzc0MiwgCisgICAgNzgyODMsIDEyODczNywgMTI0NTMsIDcwODQ3LCA5ODM4MjYsIDc0MjQxLCAxMjY1NjgsIDY3OTEsIDEyNDU3LCA3ODI2OCwgCisgICAgMCwgNjYyNzgsIDk4MzYzMywgNzgyNzksIDAsIDEyNzkzMiwgOTIzNTgsIDY2NjM3LCA3OTk1LCA4NzU5LCA0MzQyMSwgCisgICAgNzgyNzcsIDEyNDQ5LCAxMjI5MDgsIDcxMjI0LCA0Mzg2OCwgODc1MiwgMzE5NywgNDcyMCwgMTAxNjUsIDExMzc2NSwgCisgICAgMTE5MjQ5LCAxMTM3MTUsIDExNTk1LCA2NDg5MywgMTE4OTA1LCA0MzQzNSwgODMzMDksIDEyMTQxNCwgNDk5MywgMTI5MzYwLCAKKyAgICA2MTY4LCAxMDkzNCwgMTk0NiwgNzQxLCAxMjA2NTAsIDU0OTQsIDQ2MzksIDcwNjY4LCAxOTkwLCAxMTEwNywgNDQ5OCwgCisgICAgNzQxNjksIDY3NzM2LCA3MDY1OCwgMTI3MjcyLCA2OTczNCwgMjk2MCwgNzM3NzksIDE5NTA3NiwgODk2OSwgMTI4MTE3LCAKKyAgICA0MzQyNCwgNzM5NTksIDEyNjQ2NCwgMjk1MCwgMTE5NTc5LCA2MjEwLCA2NTc1MywgMzcwLCAxMjEzNjAsIDk4MzY1NCwgCisgICAgMTIwOTI4LCA0OTUzLCAxOTUwMDksIDEyMTA1NCwgMTEzNzA4LCAxMjI4ODgsIDY5MjMwLCAwLCAxMjI5MDAsIDY1Njg4LCAKKyAgICA3NDk1MSwgNTA2MywgMzUxNywgMjk2NCwgNDM2NjMsIDkxNzc2MiwgNjM0NCwgNzQ3OTEsIDEwNTY2LCAxMDE0NCwgNjYzMzMsIAorICAgIDgyNTIsIDcyOSwgNjYwMTYsIDc4MjUzLCAwLCA3MTMxNywgNjQ5MjMsIDY2NzQ0LCA0MzY2OSwgOTAzMiwgNzgyNjMsIAorICAgIDc4MjY0LCAwLCA0MTIxNSwgMCwgNjU4ODMsIDk4Mzg3MywgOTE3Nzc0LCA3NDkxNCwgMzc2MSwgMCwgMCwgNzAwNjgsIAorICAgIDEyMDQwOCwgMTI5MTIsIDExOTAxMiwgMzg1MCwgMTI4MTkxLCAxMjcyODIsIDEyODM4OSwgMCwgOTgzMzQyLCA5MDgsIDAsIAorICAgIDg2MTEsIDEwMTA3NCwgOTgzNjk5LCA3NDY0MiwgNDM2OTEsIDQxMTk3LCAxMjg4MTIsIDg5NzgsIDEyMDU0MCwgMTE5MTM1LCAKKyAgICA0MTU4NiwgMTA1MjcsIDcwNDI2LCA5MTc4NDgsIDM4NDgsIDc4NzM5LCA3NDkxNywgMTI3NTM2LCA2NTI0MSwgNTMzNiwgCisgICAgNzQ4ODMsIDEyODc4NiwgNjYzLCAwLCAxMDc4MCwgMTI4Mzk1LCAwLCA3ODc2NywgMTE5NjI2LCAxMDA5MjIsIDY4MTkzLCAKKyAgICAzNDcsIDAsIDkxNzU0NCwgNzg3NzUsIDY0Njc1LCA0MTU4MiwgNzI3OTIsIDc4NzQ0LCA2NTU3OSwgMTI5ODAsIDY4MDQ2LCAKKyAgICAxMjE0MywgNjk2NTcsIDc4NTEyLCAxMjg0OTMsIDExMTUzLCA0MTgwNCwgNzg1MjMsIDExOTE2OCwgNzg1MjUsIDAsIAorICAgIDEyODg1OSwgNDE1ODQsIDEwNjgxLCAwLCAxMjAwOTQsIDczOTM4LCA3Mzc4MSwgMTI4MDIyLCA0ODAwLCA2NjY2MSwgCisgICAgMTI1MDM4LCA2NjMwNiwgNjQ3MTUsIDY2Mzg0LCA5NTE4LCA2NjA5LCAxMDQzNCwgNzA4NDUsIDExMzE5LCAxMDk3LCAKKyAgICAxMjg5NjQsIDkxNzU2NCwgNDE3MzAsIDEyOTE4MSwgOTI1MTIsIDczODQ3LCA3NDg0NSwgNjUxNzIsIDQxNzI4LCA0MTcyMSwgCisgICAgMTk0NzgwLCAxOTQ3NjksIDEyMTQ5OSwgNDEyMDMsIDEyNzA1NiwgMTMxMTAsIDQxNzI2LCAxMjkwNzIsIDY3MDc3LCAxMDAwLCAKKyAgICA2OTY1MSwgODM1MjAsIDQxMTQwLCAxMjA5LCA3Mzk3OCwgMTI1MDU5LCA3Mzc1MCwgMTA3MywgNjMyMSwgNzc4NzgsIAorICAgIDQxMTM4LCA5ODM5NjgsIDY4MjEzLCA3ODAwMCwgMTIxNjcsIDExMTUsIDQxNjA1LCA5Nzk0LCAxMTk5MDQsIDY3NjcxLCAKKyAgICA1NTI0OCwgMTIyMzcsIDc4Nzg3LCA2NjMxNCwgNjU4NywgOTI5MCwgNzg3ODIsIDc4NzgzLCA5MjMxLCA3ODc4MSwgMjk1OSwgCisgICAgNzkyNiwgMCwgOTE3NjAxLCAxMjg4MzMsIDY0Mzk4LCA3MTEyNCwgNzEyNzQsIDEyMzExLCAxMTkxODEsIDc4Nzk2LCAKKyAgICA2ODc2OCwgNzg3OTQsIDc4Nzk1LCA2ODQzNCwgNzg3OTMsIDY2NjcwLCAxMTM3OTcsIDEyODU3OSwgMTIyOTAsIDEyMDE2OSwgCisgICAgMTI4MjMzLCAxMTk4NzMsIDM5MzcsIDk5NjgsIDgyMDUsIDAsIDUxMzEsIDExMzY5NCwgOTYyNywgNDM2NDYsIDc4NTQyLCAKKyAgICA3ODUzNSwgOTgzMjEyLCAxOTQ0LCAxMjQ4LCAxMDE0OCwgMTI3NzU1LCAxMTk5OTAsIDExOTk5MSwgMTI3MDEsIDc4Mzc2LCAKKyAgICAxMTMwOCwgMTE5OTk1LCA5ODM0OTMsIDExMzcwMiwgNjY4MzYsIDY1MzA1LCA2NTEwMCwgNDAzMSwgNDI3OTQsIDEyMDAwMywgCisgICAgNzA3NSwgODE1NCwgMTE5OTg1LCAxMjAwMDcsIDQxODE3LCA3MzkzNCwgNDIyNzUsIDEyMDAxMSwgMTIwMDEyLCA3ODUyNiwgCisgICAgMTIwMDE0LCAxMjAwMTUsIDYwNDEsIDEyMDUyMCwgNDE4OTksIDk4MzI4NywgODAwMiwgMTI4MzY3LCA0MzY0LCA3MzczMiwgCisgICAgOTgzNTcwLCA2NDMzMiwgMTIwOTc2LCA3ODEzLCA5MDY0LCAxMTk5ODYsIDEwMTI0LCA3NTI2LCA4NjAxLCA3MjgxLCAKKyAgICA2ODI0NiwgNzI3OSwgMTIwNDEsIDE0MTgsIDEwODg1LCAxMjY3MywgMTAxMDgwLCAxMjEzODEsIDk2NjAsIDkxNzkyOSwgCisgICAgMTMwMTIsIDQ1NzEsIDEyODMzMSwgMCwgMTE4OTQwLCAxMjA3OCwgMjk3MCwgMTI5MTIyLCAxMDkzMywgMCwgNzc4NzAsIAorICAgIDEyMTI0MywgNzc4NDEsIDEwMDM1OCwgNDE1OTksIDcwMTU5LCAxMjEzNDIsIDEwMDcwNiwgMTI5NTAsIDkyMTYwLCAzNDg2LCAKKyAgICA5ODM5NzMsIDY2NzgyLCA0MjM5LCAxMjgwNzMsIDEyNjU5MiwgNjY1MTEsIDY4MDY2LCAyNjM3LCA2NDYyOSwgODQ2MCwgCisgICAgNjY4MzQsIDg0NzYsIDk4Mzk3NSwgOTE3OTg5LCA2ODMxMiwgNzg0ODksIDY1NjczLCAxMDE5LCA3ODQ5NSwgNDE0OCwgMCwgCisgICAgMTIyODksIDAsIDQzMTYsIDAsIDEzMTE5LCA4NDg4LCA1NDEyLCA2NjI0MywgOTkzNSwgOTI3NzcsIDczODY0LCA5ODMyMDMsIAorICAgIDQxNzM0LCA4MjA2LCA3NDA4MSwgOTE2MywgMzI4NiwgOTA3MiwgNTg2NywgMTMzMDIsIDc2MjIsIDcxMjAsIDQxNzM2LCAKKyAgICA5MjU0NiwgNDE3MzEsIDAsIDc0MDAsIDU0MTYsIDY4NjYzLCAxMTg5MjQsIDEwODE3LCAwLCA0MTUzOSwgMTI3Mjg0LCAKKyAgICA2Njg1MywgNzM5NjMsIDQxODU1LCA0MTg2NywgNjU1NjQsIDExMjc3LCA2NTg5MiwgMTE1MzYsIDEwNjIwLCA5MjI3MiwgCisgICAgNzExNSwgNjYwMzAsIDczOTMyLCA1NDk4LCA2Mzg3NiwgNDE1MzYsIDkxNzU4NywgNjY3MzgsIDkyNTg3LCAzNDU5LCA4OTk3LCAKKyAgICAxOTQ3MTksIDkyNzE0LCAxMjcyMzgsIDEzMDYwLCA3ODMwMSwgMCwgNjYzNzcsIDY5NzgxLCAxMjAxNTksIDEyNDk3MiwgCisgICAgNzg1MTEsIDMxNjEsIDI5NSwgNzEyNTcsIDAsIDkyMjIzLCAxMjEzMjgsIDc4NzQyLCA5MDE2LCA0MzQ1NCwgNjM5MDMsIAorICAgIDYzOTAyLCA0MzUwMSwgNjgyMTAsIDM5NzEsIDk4Mzk1OSwgNzAwNjMsIDI5NTIsIDc4NzY1LCAxMTAzOCwgMTA5MDEsIAorICAgIDYzOTAwLCA2Mzg5OSwgNjM4OTgsIDY4MDk1LCA2NjcsIDEyMzMyLCA2Mzg4NywgNjA4NiwgNDE3MjIsIDAsIDUxNzIsIDAsIAorICAgIDk4MzI4MCwgNDE1OSwgOTgzNTYyLCAwLCA5ODE1LCA2Mzg4NCwgMTk5MzQsIDYzODgyLCA0MTE5OCwgODU1NSwgNjM4NzgsIAorICAgIDYzODc3LCA0MjQ2MCwgNjA1MCwgNDI3MDgsIDYzODgxLCA2Mzg3MiwgMTIwOTQxLCA0MjQyMSwgMTI5MzM1LCA0MTcyMywgCisgICAgNjM4NzUsIDYzODc0LCAxMTQ2MCwgNzQzMiwgMTkxMywgNDE5MTMsIDYzODUyLCA2Njg2OSwgMTI4OTcxLCA0MjM0OCwgCisgICAgNzM4OTIsIDY3NTIsIDQ0NiwgNDE5MTEsIDEyNzkwMSwgNjM4NTEsIDYzODUwLCA0MTkxMCwgMTI4NjM3LCA2Mzg0NiwgCisgICAgMjk3MiwgMTI5MzIsIDcyNjIsIDY5OTY4LCA2Mzg0OSwgNDEzODQsIDYzODQ3LCAxMTM3NDksIDY1NzAsIDgzMDIsIDcyNTksIAorICAgIDYzODQyLCA0MTc4LCAxMDc0NiwgNzI1MCwgMTMyMTQsIDEwMDQxLCA4MTA1LCA2Mzg5MiwgMTI3NzgwLCA2OTk2OSwgMTEwNSwgCisgICAgNDE4MCwgMTI3Nzg2LCAxMjA5NCwgOTQ5NywgMTI4Mzk2LCA2Mzg5MSwgNjM4OTAsIDYzODg5LCA2Mzg4OCwgNTUzOCwgCisgICAgOTk4NywgMCwgOTI3MzksIDE2NzgsIDEzMjc0LCA1NTIsIDExODgzNCwgNDQwMTAsIDEwNzg1LCAwLCAxMTE5MiwgNDU1NywgCisgICAgNzQ0NTksIDkxNTksIDEwMTcxLCAxMzEyNSwgNjM4NjAsIDU1NDAsIDYzODU4LCA2Mzg2NSwgMjgxLCAxMzI0MiwgNjM4NjIsIAorICAgIDc0MTU0LCAxMjgzODcsIDU1MzYsIDY1NTY4LCA5NTc0LCAxMzg4LCA3MTkwMiwgOTgzOTE1LCAxMDc3LCAxOTUwMDAsIAorICAgIDY1MDk5LCAxMTUzMSwgNTgzNCwgMCwgOTE3NTQ5LCA5MTc3ODksIDAsIDQyNzczLCAxMjEzMzEsIDAsIDAsIDExOTIyMCwgCisgICAgMTIwOTEyLCAzNjYzLCAxMjcwMjcsIDExMTIsIDcwMzM1LCA4Njg2LCAxMjY2MTEsIDUzMzQsIDY1MDgxLCA0MzI0OSwgCisgICAgNzQ3NzgsIDEyNzk2OCwgMTEwNzcsIDkyNTE1LCA2NTA5LCAxMjAxMTcsIDUzMjcsIDc4Nzc2LCAxOTkwNywgNjM4NjksIAorICAgIDM0NzgsIDc1ODMsIDc2NzksIDI5MDMsIDAsIDMwMDEsIDExNTgsIDg3NDUsIDQzNzQ2LCA3Mzc0OCwgNjM4NjYsIDc4NjI2LCAKKyAgICAxOTE1LCA0ODQ2LCA2Nzc1NSwgNjYzNzEsIDExODk4NCwgNDIxMDUsIDI5OTAsIDEyMDEyOCwgODA1LCA2OTIzOCwgNjQ0MzgsIAorICAgIDEyMDcwLCA4NzYwLCAxMTE3LCAxMTM3NTAsIDEyMjEyLCAxMjAxMjMsIDY1MTc0LCA0MjM1NywgNjM4MzUsIDYzODM0LCAKKyAgICA5ODM1OTIsIDc4MjQwLCAxMjIyNSwgNjM4MzgsIDYzODM3LCAxMDA0NTgsIDcwMTczLCA2MzgzMywgNjA0MiwgNjYzNjAsIAorICAgIDgwODMsIDEyODE2NiwgOTgzNzMzLCA2MzgyMSwgNjM4MjAsIDYzODE5LCA2MzgxOCwgOTgzMzMyLCA1MjI3LCA5MDQ3LCAKKyAgICA2MzgyMiwgNzQ3OTcsIDYwOTEsIDk4MzMyMiwgMTA2OTEsIDU2MCwgNTY0MywgODIyNiwgMTE5NTc4LCA2MzgxMiwgNjM4MTEsIAorICAgIDYzODEwLCA2MzgwOSwgMjI4OSwgNjM4MTUsIDYzODE0LCA2MzgxMywgNjA0NywgMTU5NywgNzg4NzYsIDc4MCwgMjA2LCAKKyAgICA3MDEyNiwgNDkzNiwgNjUxNDcsIDgxNjgsIDYzOTMwLCAyMDc2LCAxMDkzLCA5ODgyLCA2MzkzNCwgMjA4MiwgNjM5MzIsIAorICAgIDc1MDUwLCA2MzkyOSwgMzU0NiwgMTYwNSwgNjY4MTEsIDk4MDYsIDQzNDcyLCA3NzkzMywgODQwMCwgMTEzNDMsIDIwODYsIAorICAgIDAsIDYzOTI2LCAyOTg0LCA1OTY4LCA5Mjg3LCA3Mjc5MSwgNDYxOCwgNDIyMDksIDExMTM3LCAxMzE2OSwgNTI5MCwgMjA4OSwgCisgICAgMTY5NSwgMTA3NDMsIDEwODgsIDYzODI1LCA3MjY4LCAxMDg0LCAxMDg1LCA2MzgyOSwgMTA4MywgMTAxMzEsIDcyODMsIAorICAgIDEyMDEwOSwgNjM5NzAsIDEyMTE2NSwgMTA5MiwgNDc1NCwgNzI3MywgNTI1MiwgNDQwMTYsIDQzNjI3LCAxMjc5MjEsIAorICAgIDEyODkyMCwgNzQwOCwgMTE4MDksIDgzMjIwLCAxMjExODEsIDE5NDcxNiwgMjk2NSwgNzI1OCwgODgwOCwgNjY1NzIsIAorICAgIDEwODksIDQxODcsIDYzOTM3LCA0MjExOSwgNDIxMjAsIDExMTA2LCA5NDAsIDU3ODcsIDEwMDk5LCA2MzkzOCwgOTgzODQ5LCAKKyAgICA3NDQ5NCwgMTI0NjMsIDI5OTQsIDEyNTEzNiwgMTE4ODI3LCA2ODUyMiwgOTY2NCwgNzA4MzQsIDc3OTQwLCA2Nzg5MiwgCisgICAgNzc5MzgsIDc0MzQzLCA2NzM3MCwgNzI3MTQsIDY2MCwgMTAxMjcsIDY2NiwgOTAyMiwgNTUzMiwgNDM2NjcsIDU1MzMsIAorICAgIDEyNTgwLCA3ODUwNywgNjExOCwgMjIyLCA5NzksIDM4ODQsIDk4MzMxOSwgNzI3MDYsIDgzMjI3LCA2NTAyLCA5ODM3NjIsIAorICAgIDExMDg1LCAxMjEyNjEsIDYzOTUxLCAxMjQ2NSwgOTE3ODYyLCAwLCAxMjg3ODIsIDYzOTQ2LCAxNzA3LCA2MzkyNCwgCisgICAgMTI0NjEsIDYzOTUwLCA2Mzg5NywgNjM5NDgsIDYzOTQ3LCA2Mzk0NSwgNjAzOCwgNjM5NDMsIDYzOTQyLCA2NDY4NSwgCisgICAgNjM4OTUsIDY1ODM4LCAyMjc2LCA3Nzc2LCA5NDA3NiwgMTIxMDg2LCA5MjQ2NCwgNjY3OTIsIDY5NzMwLCA4MDEsIDQzMTY1LCAKKyAgICAxNjkwLCA2MzkxOSwgNjM5MTgsIDYzOTE3LCAxMzI3NywgNDM2NTksIDEyOTUxLCAxMjA2MzgsIDk5MDYsIDIwNTQsIDIzMzQsIAorICAgIDY2ODAwLCA2MzkxNiwgNTQ4MywgNjM5MTQsIDY5NzM3LCA2MzkxMSwgNTQ4NCwgNjM5MDksIDYzOTA4LCAyNTM5LCAKKyAgICAxMjAxMDIsIDQzOTgwLCA1NDg1LCAxOTQ4NzMsIDQyNjk3LCA5MDYxLCA1NTM0LCAxMDY3MiwgNDUwMiwgNjgwNTcsIDI1MywgCisgICAgMCwgNjgyMDgsIDEyMDQzOSwgOTIwMywgNzQyMzEsIDEwMDcwOCwgMTE1MzAsIDY4NjM0LCA2ODY2OCwgMTIxMjQyLCAKKyAgICAxMTEyNywgMCwgMTA0NzQsIDQzNDI2LCAxMzI1NywgNDIzNTQsIDEyODA5OSwgMTIwMTA2LCA3MDA0NCwgMTI3MTEwLCAKKyAgICA2NjgwOCwgODQxMywgNjY4NDEsIDAsIDU2OTMsIDcyNzIsIDEyOTMwNywgMTMyMDksIDY0NDcwLCA2NTgzMSwgNzQzNTAsIAorICAgIDE5NTA2MywgMCwgMCwgMCwgMTEzNjY1LCAxMjAwOTcsIDEyNzk2MCwgOTQwNzgsIDY2ODQwLCAxMjcxNjUsIDY2NjA4LCAKKyAgICAzMTExLCA0MTg2MywgODgwNCwgNDI5MTMsIDc4MzQ3LCA3MjcwLCAwLCA2NjYwNiwgNjYyOCwgMTA3NiwgNzQzMywgMTQzNiwgCisgICAgNzM4NDQsIDU1MjI2LCAxMjgzNTMsIDYzOTgyLCA3MzkzLCAxMjgwNywgNDM0MTMsIDYzOTA2LCAxNTk4LCA2MzkwNCwgCisgICAgNzExODcsIDcwMzkzLCA0MTcyOSwgNDQyMywgMTMwNywgMTEzNjkyLCAxMDUxNSwgNDE1ODksIDEyODY5OCwgMTI4OTE4LCAKKyAgICA2MjE4LCA5MjkxNywgMTQzMCwgMCwgMTAwNzAwLCAxMjA2MDYsIDc4NzU0LCA1NDEzLCA3NjE5LCAzMjU1LCAzNDkzLCAKKyAgICA3NDAzMiwgMTE1NDksIDEwNzM1LCA0MTc0MywgNzM5MzcsIDY4MDEsIDEwMDc0MywgNDUxOCwgMTA5OTAsIDY1MDczLCAKKyAgICA1MTY3LCA0NDgxLCAzNzcxLCA2NzA5MywgMjcxMCwgOTE3ODQ3LCA2NjI3NywgNDE3MjQsIDY3NzE2LCA0MzA3MywgNDE2OTAsIAorICAgIDEyNDc5LCA5ODM2MzUsIDgzODAsIDEyMTA3MSwgNzE4NTIsIDcwMDQ2LCAxNjI4LCAxMjEyMjksIDEyODgxNywgMTI5MDY3LCAKKyAgICA2NTI2MiwgNjMzMywgMTA3ODMsIDExMTcyLCAxMjE0NzMsIDYzODU1LCA3MDg0MCwgMTEzNjc5LCAwLCA1MzM5LCA3NDMyMywgCisgICAgMTIwOTQ2LCAxMzAwNCwgNjY4NDMsIDQ0NTcsIDEwMDkwMSwgMTI3NzU2LCAxOTQ4MTgsIDEyNzExNiwgNTY4NCwgODY3OCwgCisgICAgMTA5MTQsIDQzNjMyLCA1Njg5LCA2NTgwNywgNzA4MTQsIDY4NDY0LCAxMjYzMywgMTI4NzAsIDY5NzA1LCA2NTE4MywgCisgICAgNTY4OCwgMTE5MjYsIDYwMzMsIDYzMTAsIDU2ODYsIDExOTA3NiwgNzQyNTEsIDEyODkwOCwgMTIwNjQ3LCAxMjg5MzAsIDUwLCAKKyAgICAxMDU1OCwgOTg3MSwgNDI2MTIsIDQzNjU1LCA3NDQwMywgOTgzODE4LCA3NDI4NCwgNjY0NjgsIDY2OTA1LCAxMzI1OSwgCisgICAgNDQ0OCwgMTE5MTUwLCAxMjE0MDYsIDgzMzQ5LCA3MDA0MywgMTMyMSwgMTAwOTg3LCAxMDY0MCwgMTE1MzksIDExNTEsIAorICAgIDEyMTE4NiwgOTE3NjA3LCAxMjQ5NTgsIDEyNzA3OSwgNzExMDYsIDExODk0OSwgMCwgOTgzOTIwLCA5ODMwNzUsIDEyNTAxLCAKKyAgICA2NDYwNCwgMTI4NjU3LCAxMTUyNywgMTE4ODcwLCA4ODEyLCAxMjUxNDEsIDExNTM4LCA4NjczLCAxMjY1MCwgMTEwMjAsIDAsIAorICAgIDY2NDY3LCAyMTA1LCA4MDg3LCA3MjcxMiwgNjk2MzIsIDk4OTQsIDEyNzEzNywgMTI3ODU2LCA2OTk5NSwgNDYzNiwgCisgICAgNTUyNjIsIDc4NTEzLCA0NTE1LCAyMzgyLCAwLCAxMjcwNTUsIDk4MzY5NSwgMTEzNzgwLCA5ODM0NTYsIDExODk2OCwgCisgICAgMTIyNzcsIDEyMTIzOSwgMTE5OTUsIDkyNTUzLCAxMjA2NzUsIDEyMTU4LCA3MDE3MCwgODc0MSwgMTAxOTcsIDY4NzgwLCAKKyAgICA5MjQyNiwgMTE5NjEwLCA2NTMxLCA4MzA1MSwgMTI3ODQ2LCA0NzMsIDQzNDE1LCA5MjkzNiwgMTI0OTQ5LCAxODczLCAKKyAgICAxMDg3LCAxMjQ5NjYsIDcxMjc1LCA3NDI4MCwgNzg1MjcsIDY2NDM5LCA0MzIxOCwgOTgzMTIzLCAxMjc3OTIsIDcyMzcsIAorICAgIDEyNTA0LCA3MTExMywgMTI2NTU5LCAxMjg3NDgsIDEyMDg4NywgOTQ4OSwgMTIwMDY5LCA3MDg0MywgNDM4NCwgNzQyMjAsIAorICAgIDYzODQ1LCAyMDU4LCA2OTc0MSwgMTMyOTUsIDQzMTkxLCAxMjgwMzAsIDEyODU3MSwgMTE1NCwgMzg1NywgMTIwNSwgCisgICAgMTI4OTU1LCAwLCA2MDU1LCAxMjk1OCwgMTIwNzA2LCA3NDE2OCwgMTI4Mzg4LCA3MDg0NiwgNDQyMSwgMTA1OTIsIDAsIAorICAgIDQ5NSwgNjY0MDAsIDQxNzEyLCA3OTgzLCA3MDgzMywgOTM5OTcsIDcwNjk2LCA2MzQ3LCA3ODcxNSwgNzY1NCwgNDE3MTAsIAorICAgIDQxOTYsIDE5NDcwNCwgNDM3LCA0MTcwOSwgNzM3NzIsIDcwODMyLCAwLCA5NDY1LCAxMzI5MCwgMTE5MTgwLCA0OTk3LCAKKyAgICA2NDMwNiwgMTIxMzA5LCAwLCA0OTk5LCAxOTQ2NDIsIDY3NDAxLCAxMjY1ODIsIDQ3MTEsIDEyMDc2OSwgMTAwNDY5LCAKKyAgICAyNzM5LCAwLCA4MDQ0LCA3NDMxMywgMTI4MjMwLCA0MTc4OSwgMTI4MTQyLCAxMDgwOSwgNjYyNzksIDEyODc0MCwgMCwgCisgICAgMTc3OSwgNjYwMCwgNjYwMSwgNDE1NDMsIDUzMjUsIDY0MiwgNjQxODcsIDEzMDU4LCAxMjA0NDksIDEyODc1LCA5ODM4MDQsIAorICAgIDkyMTg2LCAxMzIyOSwgNzE4NDUsIDEwNTc1LCA0MzM5OSwgMTAwNDY3LCAwLCA0MTc5MSwgMTEwNCwgMTI3OTIyLCAKKyAgICA5ODM3MjUsIDEwNjU1LCA5ODMzMzQsIDk4MzU2MSwgMTIwMTY0LCA2Mzk2MCwgMTA4MiwgMTIxMDI0LCA4NDI4LCA2NTY5LCAKKyAgICAxMjg0MjksIDAsIDc4NTM0LCA2OTg0OSwgNjc4MywgMTk0NjcxLCAxMjk5MywgODA0OSwgNDE1NDgsIDQ0MDIxLCA2NDU4LCAKKyAgICA2NDcyOCwgMTI4ODgyLCA0NzYxLCA2MzgyOCwgNDc2NiwgNjQ2MjMsIDEyNzMsIDQzNDA3LCAxMjA2NzcsIDExODg3NiwgCisgICAgMTk1MDQ1LCA2OTEyLCAxMzEzLCA2MzIyLCAxMDQ4MywgMTI4NjI3LCA0MTU0NSwgMTI2NDY1LCA5MjQ0OSwgMTI1MjA5LCAKKyAgICAxMTIxNiwgMTIxMzA3LCAxOTQ4NTEsIDc4NjI0LCAzNDg0LCA3NDMzNywgMCwgOTgzMjI1LCA4NTAzLCA1MTIyLCA0MTUyNywgCisgICAgNzE5MTAsIDY2MzIwLCA3MDE2MSwgNzQ5MDcsIDE5NDg1NiwgMCwgNDE1MzcsIDY2NDUzLCA4MzAzLCA4MjgyLCAxMTgxNywgCisgICAgNzM4NTcsIDEwMDAzLCA3Mzg1OSwgNjU5MDQsIDczNjMsIDE2ODYsIDEyMjkyMCwgNzAxMTUsIDExNDY3LCAzNjY0LCAKKyAgICA2NTkyMSwgNjQyOTksIDEyNDkzOSwgMTI4NDYyLCAxMjgwMDEsIDQzMjQsIDEyNiwgNDIyNDYsIDc1MDMwLCA2OTk4NCwgCisgICAgNjc3MjUsIDY1OTI2LCA3NzQ0LCA2ODg1OSwgNzQyNzcsIDY2MjgzLCA3ODA1MiwgNDM4MTcsIDY5NjYsIDQzODIyLCA4MTM2LCAKKyAgICAwLCA2NTYwMCwgMTYzMywgMTI4MzAxLCAxMjY2MTQsIDQ3NjIsIDExMDMsIDcwODI3LCA3MDE1NywgNDc2NSwgOTgzNDk0LCAKKyAgICAxMzA3OCwgOTgzMjcwLCA0NzYwLCA2MzgyNywgMjA1MCwgMTA4NzEsIDQzMTk5LCAxMTAyLCAxOTQ2NTIsIDY1NTUsIAorICAgIDEyODg2NywgMTI3MDcyLCAxMTU0NiwgNzQ3OTQsIDMzNywgMTIxMTk2LCA0MjU5MSwgODYyNywgMTIyNzksIDExMTEsIAorICAgIDk4Mzg1NiwgNzUwNDcsIDQ3MDcsIDY4MjA2LCAxMDE0MywgNzg4MywgMTIxNDQ0LCA3ODgwLCA0NTIyLCA4NjQ1LCA1NzA0LCAKKyAgICAxMzAxMCwgNjk3OTYsIDgzMDQsIDkyOTgyLCAxOTQ2ODgsIDExOTU3NSwgMjI5MywgNzAxOTUsIDY2NjU0LCAxMjkwNzcsIAorICAgIDkyNjc2LCAwLCAxMzAwOCwgMTIxMTk0LCA0Mzg1LCAxMDA0NjIsIDEzMDExLCAxMjUwMDQsIDkyNTY5LCAxMTkxNjEsIAorICAgIDEzMDA5LCAxNjAsIDI2NzcsIDcwMzg4LCAxMjc3ODUsIDQxNzkzLCA2NTc2MywgNzQyMjEsIDcwNzkwLCA0MTc5MiwgCisgICAgNDI3NzAsIDk0MDU0LCA2NTc2MiwgMTE4ODI5LCA0MzgyMSwgNTcwOSwgMTI1MjIyLCA3MTA3NiwgNDM4MTYsIDk4MzA4NywgCisgICAgMTk1MDA1LCAxMDc5LCAzODY3LCA1NzA4LCAwLCAwLCA0Mzc5NywgNTcwNiwgNjQ3NjgsIDU3MDUsIDg3OTEsIDQwMDUsIAorICAgIDEyMTA5MSwgMTAyMzcsIDEwOTkxLCAxMjg4MTYsIDQzNDU5LCA5MTczLCAxMjExNTIsIDEyMTIxOSwgMTMxNzAsIDEyNTQwLCAKKyAgICAxMjUyMzMsIDQyNjA1LCAxMjA3NjUsIDEyNjYxNywgNjg2NDcsIDkxNzU3MiwgMTAwNTgsIDY4MDU4LCA3NDg2NywgNjc3MzAsIAorICAgIDEyNzA3OCwgMzMzOSwgMTE0NDgsIDExMDYsIDkxNzU5MSwgOTE3NTQwLCAxMjgzMTEsIDMzNDAsIDc0MDE3LCA5MTc1ODYsIAorICAgIDEyMDk5NCwgMTI5MTQxLCA5Mjk3OSwgMTA2MDUsIDEzMDksIDYzOTY2LCAxMjA3NDMsIDE3NTQsIDkyMjI2LCAxMzI0NiwgCisgICAgODY0LCA5MTc1ODIsIDExODkyNiwgODk3MiwgMTAwNDQ0LCA3ODQ5LCAxMjAwOTIsIDgzMTMwLCAxMzI0MCwgMTk1MDY4LCAKKyAgICA1MTkyLCA0MzM4LCA2Nzk4MiwgMTA5NDgsIDY2ODI1LCAxMzE5OSwgOTI1NzUsIDEyMzYsIDEzMjA4LCAxMzI2MSwgMTMxODksIAorICAgIDEzMTg4LCA5Mzk5MywgNzE4NDcsIDc0NDAsIDAsIDEyMDE1MywgOTU1MywgMTU5MCwgNjM3NzcsIDYzNzc2LCAxMzE3OCwgCisgICAgNjM3ODIsIDYzNzgxLCA2Mzc4MCwgNjM3NzksIDE1ODMsIDExOTkyMywgMTMyNjAsIDQ1NTAsIDEyMDU5OCwgNjQyMDUsIAorICAgIDEyOTEwNywgNzEwNzEsIDQxNTIyLCA0MTUyMywgNjg1MjMsIDEyOTEwOCwgNjY3NTksIDExMzU0LCA5NDA3MSwgMCwgCisgICAgNDI3OTUsIDEyODA2MSwgMTE5MTk1LCAxMTM5NCwgMTk0NjQ2LCAxMzIzNiwgMTMyNzIsIDEzMTk0LCAxMzM0LCA2OTkyNiwgCisgICAgNDQ3OSwgMTE3OCwgNjU1ODYsIDY4MzExLCA2NjY4MSwgMTE5MTkzLCA0NjAxLCAwLCAxMjc4ODUsIDE5NTAzOCwgNjY4MjgsIAorICAgIDEyODk3MiwgMTI3ODM5LCA3NDU4MCwgNjgwOSwgNjM3ODYsIDYwMzEsIDY3NDAyLCA2Mzc5MSwgNjM3OTAsIDExNDUsIAorICAgIDYzNzg4LCA3OTEwLCA2Mzc4NSwgNDMxNTMsIDc1NCwgMTAxOTIsIDEzMTA1LCA4MTgzLCAxMjA3NDEsIDIwMzcsIDEyNTEyMiwgCisgICAgNjQ3MTAsIDEwNzQ3LCAxMjUsIDEyMDgwMywgNjQ4OTAsIDY2ODA1LCAxMjczNzYsIDAsIDQxNzE5LCA2Mzc1OCwgMzUyMywgCisgICAgMTA3NCwgMTMyNTgsIDk1MzYsIDcxMDU2LCAwLCA0NDI3LCA3NDI0MiwgNjM3NTcsIDQzMTQ1LCAxMjIxNywgNjM3NTQsIAorICAgIDQxNTMyLCAxMzQ5LCA2Mzc1MCwgNjM3NDksIDEyOTAyNSwgMTI4NzczLCAxMDEwMTQsIDYzNzUzLCA2MzgwMiwgNDEwODQsIAorICAgIDcyNzg0LCA2ODEzMywgNDE5MzAsIDYzODA1LCA2MzgwNCwgMTExNDAsIDYzODAxLCA0MTA4MiwgODE0MCwgNjM3OTgsIAorICAgIDYyNjAsIDc4ODI2LCAxMjgzOTEsIDY2NzY1LCAxMTQzOSwgMTE5ODgsIDM4OTgsIDkyMjQ2LCAxMDIwMSwgMTIyMzgsIAorICAgIDYzNzk1LCA0MjE5NCwgMTAzNjcsIDEyNTIxLCAxMDQzMSwgNDIxMTQsIDQxOTMyLCAxMDY4LCAwLCAxMjUyMywgMTI5NDUsIAorICAgIDk4MzMzMSwgNDIyMDMsIDc5NTAsIDMxMjQsIDYzNzcxLCA0Mjc4NywgNDM4NiwgMTExNDgsIDY5NzMsIDI3OTMsIDEyNDc1LCAKKyAgICAxMjUyNDEsIDc1MDU2LCA2Mzc2OSwgOTUzMCwgMTIxMjQ4LCAxMjIzMiwgMTMxMzUsIDg1OTYsIDU2ODEsIDYzNzYyLCAKKyAgICA0NTk1LCA2Mzc2MCwgNzkyLCAxMTM2NzQsIDY0ODAzLCAxMDA1MTIsIDg3NDIsIDE5NTAyOSwgMTEwNTMsIDEyODc5NiwgCisgICAgNjM3NDQsIDEyODEwNywgMTI4OTQyLCA3NTg4LCA2Mzc0OCwgMTY5MywgNjM3NDYsIDQzMjA0LCA1MDU1LCA2ODQyNiwgCisgICAgNDIwNjMsIDEwOTAsIDY4ODAzLCAxMjA3NzgsIDExNjY1LCA3NDEzMywgNDU1OCwgNjU2ODUsIDk1MjMsIDE5NTA1MywgCisgICAgNjM4NTcsIDcxMjE2LCAxMTUxMywgMCwgNjE1NywgNjM3NzUsIDYzNzc0LCA2Mzc3MywgMTMxOTEsIDEyMTcwLCAzNTAwLCAKKyAgICAzMTM5LCA2ODA3MSwgMzE3MCwgMTI0ODUsIDQzODkxLCAxMDg3MiwgNDM4OTIsIDEzMDA2LCA0MzkzMywgMTIwMDc0LCAKKyAgICAxMDA2NTAsIDk0MSwgMCwgMTI5MDc5LCAxMjA5NjcsIDY1NTQxLCAxMTA2MywgOTgzMTk4LCA4MjI4LCA3Mzk4OCwgNDIwNjUsIAorICAgIDEyMjg5MywgNDM4ODksIDk0MDM5LCAxMjcwNDEsIDkyNDU1LCA3Mzg2LCAwLCA2NDQ0NCwgNzAyOTUsIDExOTg2MywgCisgICAgNDM2MDMsIDk0MDc1LCA2NTM5NywgMjg4LCA4MzQwOSwgMCwgMCwgMTAwMjUsIDY5OTE1LCAyOTE4LCA2NjgyMCwgNjUzMDAsIAorICAgIDExOTg3MSwgOTg4MywgNjQ3MjYsIDI3OTAsIDY1Mzk1LCAzNzkzLCA5ODM2MjAsIDEyNzgyOSwgNjUzOTMsIDEyMDU5MiwgCisgICAgNzQxMzgsIDgzNTA1LCA5Mjc1MSwgNzUwMTksIDc0MTM5LCA3ODc3NywgNjUzOTQsIDExNTQ4LCA1MjcwLCAxMjgxNDksIAorICAgIDY1Mzk2LCA3NDk5OCwgNjU4MTMsIDEzMjU2LCAxMjgyLCAxMjA3NzEsIDc1MDEyLCAxMjAxNTcsIDEwODg4LCAxMjA5MzQsIAorICAgIDY1MjQyLCAwLCAzMzMwLCAxMjk0MTcsIDAsIDY4MzQwLCAxMjQ5MzEsIDk4MzYwNSwgNzEyMDIsIDMzMDQsIDQyNzUzLCAKKyAgICA5MjU4OCwgNzAyOTgsIDc0NjQzLCAxNjI3LCAxMjkxMjAsIDEyNzc2NSwgMTk0NzM1LCA1MzcxLCAxMzExNiwgOTgzNzc3LCAKKyAgICAxODI2LCAxMTg3OTQsIDk4MzQ5NywgNDMwOTQsIDcwMDIzLCA0MzY1MCwgOTQwMzcsIDY4MzE3LCA5MDM1LCAxMTE0MSwgCisgICAgOTE3OTc3LCAxMjgwMDUsIDAsIDcyNzMzLCA2ODEyNSwgNzQ4OTgsIDE2NCwgNjgzMDksIDk0MDY3LCA5NDAwMCwgNjk1OCwgCisgICAgMTAwNjM0LCA0MzExNiwgNjc3MTksIDcwMDE5LCAxMzI0NSwgMTAwNjM3LCA2ODgwOCwgNjY4MTgsIDEyODAwOSwgNzAwMzEsIAorICAgIDExMDk5LCAxMjY2NiwgMTMxNzUsIDEzMjA3LCAxMjA0MTQsIDY2MDE0LCAxMjA0MjgsIDc0NDcsIDU5MjksIDk4MzQ3MywgCisgICAgNjU1MDksIDEyOTE5MiwgNzQ0OSwgMTEzMDYsIDAsIDczOTIwLCAzMTgwLCAxMjUxMDIsIDYzODA4LCA5MDU0LCA5NzEsIAorICAgIDEzMDYyLCA3MTA5MCwgMCwgNjUxOTUsIDEwMTY0LCA5MjI1MiwgNzQ0MjgsIDk4MzMyMSwgNzgxNDYsIDkyNjExLCAwLCAKKyAgICA3MDIwNCwgMTI1MTI5LCAxMDA0NSwgMTI4ODIsIDEzMjc1LCAyMzAzLCAxMTA1NywgMTI0OTk0LCAxMzI3NiwgMTI1MTMzLCAKKyAgICA0MTUyNSwgNzgxNTAsIDcyNzEsIDExNDQ0LCAxMjY0NzksIDEyNzkwNCwgMTE5MDkxLCAxMjIyOSwgMTE2ODAsIDkyOTU2LCAKKyAgICA0MzQxMSwgNzM3NTEsIDAsIDY0ODEzLCAxOTUwODksIDk4MzQ5NSwgMTA0NzYsIDM4NTgsIDY0MTc1LCAzOTMyLCA2NDk1OCwgCisgICAgMTIwNDMyLCA5ODM2NzgsIDczOTg5LCA2ODE5MiwgMCwgNjk4NDcsIDM2OSwgNzQ5MDgsIDQxNzg0LCAxMTkxNzUsIDY0MTYzLCAKKyAgICA3Nzk5NywgNzI3MDcsIDkyNjQ1LCA2NTQ3NCwgNDc5NiwgMTIyOTIsIDEyNjU5NSwgNjU0NzksIDEyODYzMSwgNDE3ODEsIAorICAgIDEwNDg2LCA0MTQ4MCwgNDMwMDIsIDk4OTksIDkyNjA4LCA5ODM4NzAsIDQwNCwgMTI4MjEsIDM3NDEsIDAsIDU3ODgsIAorICAgIDgwOTIsIDY4MjEyLCA0MTIyMiwgMTgzMSwgNjYwMjAsIDM5ODIsIDAsIDQzODgsIDE5NDkxMywgNzQ2LCAxMTg4MjYsIAorICAgIDc0NzgzLCAwLCAxMjAxOCwgNjUyOTQsIDEyNDk0NiwgMTk0OTI1LCA2ODgzNSwgOTgzNDg4LCA0NDIyLCA0NzA4LCAzNzk5LCAKKyAgICA3NDI5MiwgMTE5MzU3LCAxMjExNDYsIDc0NDMwLCAwLCAxMTcwMCwgNDM3NCwgMTIwMzc3LCAxMjExNTEsIDEzNjQsIAorICAgIDk4MzMxNywgODAzOCwgMTIwODgzLCA5MTc1OTcsIDEyODY4LCA2OTgxNCwgNzA0MjUsIDY3MzUsIDczOTc5LCAxMzE3NCwgCiAgICAgNzM5NjgsIDEzMjI1LCAxOTQ5MDIsIDY5ODA4LCA2NTgzNSwgMCwgMjM2NSwgNzg0MSwgNzE0NzYsIDQyODU1LCAxMTg4NTYsIAotICAgIDQyODY2LCAwLCAwLCAxMjc5ODYsIDY2NDM4LCA0MTc4NSwgMTI2MTcsIDY0MTcyLCAxMzE3MywgNDM3MiwgMTE5MzU0LCAKLSAgICA5ODM5MjAsIDk4MzU2OCwgMTI4ODcxLCAxMjc4MjEsIDY3Njg1LCAxMjgwNjIsIDEyOTY1LCAzODQsIDY0NTEyLCAxMDQwNCwgCi0gICAgMTAzNDAsIDExOTM1MiwgMTU1NiwgNTI3NCwgMTMyMTAsIDEyMDEyNSwgMTAwMTcsIDk3MzMsIDQxNzg3LCA5ODMyNDUsIAotICAgIDEyMTE0OSwgNDEzNzMsIDY4NDg2LCAxMjMwMywgMTI4NDc2LCAxMzIzMiwgMTMyMzMsIDM0OSwgNDg2MywgNDEzNzEsIAotICAgIDExNjU2LCAwLCAxMjA3MDMsIDExOTg4MywgMTI4NjEsIDQzOTgsIDg1NDMsIDY1NjE4LCA5MjczNywgMTA5NiwgNDM4NTIsIAotICAgIDEyMTQzMywgNDI2ODgsIDEyNDQxLCAxMjM1NSwgMTE5MzQ4LCAxMTkzNDcsIDQzMTgsIDEwNDUyLCA5MjkwMiwgODAzMiwgCi0gICAgMTMyNDMsIDEzMjM3LCAxMjcxOSwgMTI2NjQ2LCAxMTkxMDEsIDEyMTE1NiwgNjQ4ODQsIDkyOTA5LCAxMTkzNDUsIDg1OTcsIAotICAgIDcxMTAwLCAxMjkwNjIsIDk4NjQsIDAsIDEyMDc4NSwgMTE5ODc0LCA5NDEwNywgMTMxOTUsIDQxNDUyLCA2NDk2MSwgNzcyMiwgCi0gICAgMCwgMTA0NTksIDExOTg3OCwgMTI0OTQ5LCAxMTk4NzksIDY2NTkwLCAxMjgxMjMsIDQxNTMzLCA2NjMzNywgMTI4NjYzLCAKLSAgICA5MjE4NCwgMCwgNDk2NSwgNDM0NDUsIDkxNzUzNiwgNjc4NTYsIDAsIDQzNjM4LCA3ODUzNiwgMTIxMTg3LCA2MjYxLCAKLSAgICAxMTkzNDIsIDQzMTQ3LCA2NjU3MCwgMTk1NywgMTA0MjAsIDk4MiwgMjc1NiwgMTMyOTIsIDEzMjA2LCAxMjUwNjQsIAotICAgIDkxNzc5NSwgMjkyNSwgNzM4MDksIDEzMDU2LCA5MjkxNCwgMTMyMTIsIDQzMjM4LCAxMjEzOTYsIDEzMTkwLCAxMzE4NywgCi0gICAgOTI1NDEsIDEzMTk4LCAxMTg3OTMsIDEyMTA4OSwgNTI0MiwgMTE5MTc5LCA2NDQ3NiwgMTY5NCwgODIxNiwgNzEzNjksIAotICAgIDY3NzAsIDQzMzMxLCAwLCA2NTYyMCwgOTgzNzI4LCA0MzU0NCwgMTI2NDY2LCAwLCA0MTQ0NCwgNjU2MjEsIDY5OTU1LCAKLSAgICA5MTk3LCA1MjQ2LCAxMTkxMDYsIDEzMTg1LCA5NzA5LCAxMjAzMjMsIDEyMDMyMiwgMTIzMTQsIDY1NjE2LCA1MjM4LCAKLSAgICA0MzgyNSwgNzEwODUsIDExOTMzNywgNTIzNiwgNDA5NzksIDk4MzE0MCwgNzE4NzQsIDgyODYsIDEyODUzNywgMzkzNiwgCi0gICAgMTE5MzMxLCAxMTY5OSwgNDEzNDcsIDY5NzM5LCAxMzIzNSwgODg0MiwgNDEyNDgsIDAsIDQzNzksIDEzMjM5LCAxMjY5MiwgCi0gICAgNzk2OSwgMTI3MjY2LCA3MjE5LCA3MTg3NSwgMTI4MjUxLCAxMjA1MDksIDkyOTA3LCA2NjIyNCwgNzM0LCAyOTc5LCAKLSAgICAxMjAzMDMsIDY1NjE5LCA5ODcyLCA5NTcsIDY0OTIxLCAxODQ2LCA2NjYzMSwgNDE0NzcsIDExOTI1NiwgNzExOTIsIAotICAgIDc0NTExLCA0MTc3MCwgMTY3MCwgNjQ0MiwgMTIwMzE3LCA0MjQ0NiwgNTM3OSwgMTIwMzE4LCA0MTE2MywgNzQ4MzIsIAotICAgIDExMTM2LCA3MTg3NiwgMTE1MDYsIDEyODM5NSwgNDI4NDEsIDEzMjY3LCAxMjg0MjEsIDAsIDQxNzc1LCAwLCA3MTMwLCAKLSAgICA0MTc3MywgMCwgMTA2NjMsIDcwMTMwLCAwLCA5ODM5NzQsIDYxNTEsIDEyMTEwLCA0MjY3MywgNjU1NzIsIDY1MjkzLCAKLSAgICA2NTI1MCwgMTMyNjUsIDEzMjY0LCA2NDUxOCwgMCwgNjEwMCwgMTI3OTY0LCA5MjY0NywgNTgwOCwgNjU5MjIsIDY3ODE0LCAKLSAgICAxMjk2NywgNjYwNDEsIDU2MTIsIDQ1ODMsIDcwMDA0LCA0MzM4NiwgNjgwOTcsIDY0NTc1LCAxMjY2MzcsIDExOTY1LCAKLSAgICAxOTQ5MzAsIDY4MzU4LCA3MTQ4MywgNjk3ODksIDQyNjUzLCA4MzE4MSwgNjgxMDIsIDk2OTgsIDc4MTQsIDcxMDQ1LCAKLSAgICAxMTk2NTEsIDEyODUxNCwgMCwgNDE5MjEsIDExODg1OCwgOTc1NiwgNjk4NSwgNjY0MTgsIDY2NjIxLCA3NDIxOSwgNjY0MTIsIAotICAgIDEyODgyMiwgMTE4OTk3LCA4MDEyLCA1Njc0LCAxMjM1MywgNjY0MjEsIDEyMzYxLCA1Njc3LCA1NTg4LCA5MjM0OCwgCi0gICAgNDE5MjUsIDEyODEyNCwgNDE5MjAsIDU2NzMsIDgzMTEzLCA1Njc2LCA0MTkyMywgMTI2OTQsIDExODk3OCwgNTY3MiwgCi0gICAgMTI5NCwgMCwgNzgwNTksIDk4Mzk2MiwgNDI1MTEsIDE3MjcsIDEyMDcyNSwgNDI0MzYsIDEyMTQwMCwgMTIxMTgzLCAwLCAKLSAgICA3NDIyMiwgODcxOCwgMzU1MCwgNzM2LCAxMDI2OCwgNDUwNSwgNTg3MywgNzQwOTAsIDU4MjYsIDU1MjMyLCA1ODEzLCAKLSAgICAxMjkwMzIsIDkyODg5LCA1ODQxLCA1ODM3LCA1NTIzNCwgMTk0ODY0LCAzMTA1LCAxMjgyOSwgNTgzOCwgNTc5NiwgMCwgCi0gICAgMTE5NTkyLCA1NzkzLCAwLCA1ODY2LCA1Nzk3LCA0MTAxMSwgNTg2NSwgOTMwMDksIDc5NTYsIDU5OCwgMCwgNjQ2NDksIAotICAgIDU4MDYsIDQyMzk4LCAwLCA5MDM3LCA1NjcxLCAxMjAwNDEsIDk4MzI1NywgODM0NzgsIDk4MzkyOSwgODMxODQsIDAsIDg0NywgCi0gICAgMTI4MjQyLCA5NTI5LCA4MzAxOCwgNjY2NTcsIDY5ODAsIDc4NDgzLCA0MzUxMCwgNzgxMjIsIDkyMjE5LCAwLCA2NzQxMSwgCi0gICAgNzg0ODYsIDgzMDE3LCAxMjcyNjAsIDEyMDAzOSwgNDI2ODMsIDcxODQ4LCA5ODMwNTUsIDcxMTQsIDEyNjUyMSwgMCwgCi0gICAgNDMxOTAsIDY1NDYzLCAxNTU0LCAwLCA0MjYxMSwgNDI1NjMsIDAsIDU2NTEsIDI5MjksIDY3OTIsIDQzMjAxLCA3NTA1OSwgCi0gICAgMTk5NjMsIDU2OTgsIDE5NDc2OCwgOTgzMjcyLCA5MjkzMywgNzE4ODcsIDU2NDQsIDEwMjkyLCA2NTU0NiwgNjk3MjcsIAotICAgIDY4MTQxLCA4MzcyLCAwLCA2NTExNiwgMCwgNzAzMDQsIDEwMTc1LCAxMDM4OCwgNDI3OTksIDk0MTAwLCA0MTAxMywgCi0gICAgMTA1NjgsIDAsIDk4MzYxOCwgMjg2OSwgOTE3ODQzLCA0MTAxNSwgNzQ0NzMsIDI3ODUsIDQzNjYsIDAsIDEwOTU0LCAKLSAgICA0MTgwMiwgOTgzNjUyLCA0MjYwOCwgNzg0NjgsIDk4ODQsIDQ3NTksIDczNzY4LCAxMjAyOTYsIDEwMjY2LCA0MTM1OSwgCi0gICAgMTE3MCwgNDMzNjUsIDY5ODEwLCA3MzkwOCwgMTYwOSwgOTAyLCA5Mjc3MywgNjM5MzYsIDgzMjQ3LCAxMTY2MSwgODEyMiwgCi0gICAgNTgxOCwgODMyNDUsIDAsIDM4NjEsIDk1NDAsIDExMDI4LCAyNTU0LCA1MTU4LCA1NzE0LCAyMjEzLCA5ODM5NjYsIDAsIAotICAgIDgwNywgNDMwNzksIDc4MDkyLCA3ODQ3NSwgOTc2LCA1NTExLCA2NDU1MywgMTIwODYzLCA0MjE1NSwgOTgzMzE5LCA0MTM1NiwgCi0gICAgNzQxMTAsIDExODgwMSwgNzEwNDMsIDEyMDA4MCwgODY3NiwgOTgzMjkzLCA5NDAwMiwgNTU4MiwgNDUxLCA2Mzk0MSwgCisgICAgNDI4NjYsIDEwMTA3NywgMCwgMTI3OTg2LCA2NjQzOCwgNDE3ODUsIDEyNjE3LCA2NDE3MiwgMTMxNzMsIDQzNzIsIAorICAgIDExOTM1NCwgMTk0OTQwLCA5ODM1NjgsIDEyNzI1MywgMTI3ODIxLCA2NzY4NSwgMTI4MDYyLCAxMjk2NSwgMzg0LCA2NDUxMiwgCisgICAgMTA0MDQsIDEwMzQwLCA0MTQ3MywgMTU1NiwgNTI3NCwgMTMyMTAsIDEyMDEyNSwgMTAwMTcsIDk3MzMsIDQxNzg3LCAKKyAgICA5ODMyNDUsIDcwNjg0LCA0MTM3MywgNjg0ODYsIDEyMzAzLCAxMjg0NzYsIDEzMjMyLCAxMzIzMywgMzQ5LCA0ODYzLCAKKyAgICA0MTM3MSwgMTE2NTYsIDk4MzY5MSwgMTIwNzAzLCAxMTk4ODMsIDEyODYxLCA0Mzk4LCA4NTQzLCA2NTYxOCwgOTI3MzcsIAorICAgIDEwOTYsIDQzODUyLCAxMjE0MzMsIDQyNjg4LCAxMjQ0MSwgMTIzNTUsIDExOTM0OCwgMTE5MzQ3LCA0MzE4LCAxMDQ1MiwgCisgICAgOTI5MDIsIDgwMzIsIDEzMjQzLCAxMzIzNywgMTI3MTksIDEyNjY0NiwgMTE5MTAxLCAxMjExNTYsIDY0ODg0LCA5MjkwOSwgCisgICAgMTE5MzQ1LCA4NTk3LCA3MTEwMCwgMTI3NTU5LCA5ODY0LCA5ODM5NDMsIDEyMDc4NSwgMTE5ODc0LCA5NDEwNywgMTMxOTUsIAorICAgIDQxNDUyLCA2NDk2MSwgNzcyMiwgMCwgMTA0NTksIDExOTg3OCwgNzI4MzAsIDExOTg3OSwgNjY1OTAsIDEyODEyMywgCisgICAgNDE1MzMsIDY2MzM3LCAxMjg2NjMsIDkyMTg0LCA5ODM4NjAsIDQ5NjUsIDQzNDQ1LCA5MTc1MzYsIDY3ODU2LCAwLCAKKyAgICA0MzYzOCwgNzg1MzYsIDcyNzE5LCA2MjYxLCAxMTkzNDIsIDQzMTQ3LCA2NjU3MCwgMTk1NywgMTA0MjAsIDk4MiwgMjc1NiwgCisgICAgMTMyOTIsIDEzMjA2LCAxMjUwNjQsIDkxNzc5NSwgMjkyNSwgNzM4MDksIDEzMDU2LCA5MjkxNCwgMTMyMTIsIDQzMjM4LCAKKyAgICAxMjEzOTYsIDEzMTkwLCAxMzE4NywgOTI1NDEsIDEzMTk4LCAxMTg3OTMsIDEyMTA4OSwgNTI0MiwgMTE5MTc5LCA2NDQ3NiwgCisgICAgMTY5NCwgODIxNiwgNzEzNjksIDY3NzAsIDQzMzMxLCAwLCA2NTYyMCwgMTk0NjI5LCA0MzU0NCwgMTAwNDQxLCAwLCAKKyAgICA0MTQ0NCwgNjU2MjEsIDY5OTU1LCA5MTk3LCA1MjQ2LCAxMTkxMDYsIDEzMTg1LCA5NzA5LCAxMjAzMjMsIDEwMDkyNCwgCisgICAgMTIzMTQsIDY1NjE2LCA1MjM4LCA0MzgyNSwgNzEwODUsIDExOTMzNywgNTIzNiwgNDA5NzksIDk4MzE0MCwgNzE4NzQsIAorICAgIDgyODYsIDEyMTI5MiwgMzkzNiwgMTE5MzMxLCAxMTY5OSwgNDEzNDcsIDY5NzM5LCAxMzIzNSwgODg0MiwgNDEyNDgsIAorICAgIDEwMDQ5MCwgNDM3OSwgMTMyMzksIDEyNjkyLCA3OTY5LCAxMjcyNjYsIDcyMTksIDcxODc1LCAxMjgyNTEsIDEyMDUwOSwgCisgICAgOTI5MDcsIDY2MjI0LCA3MzQsIDI5NzksIDEyMDMwMywgNjU2MTksIDk4NzIsIDk1NywgNjQ5MjEsIDE4NDYsIDY2NjMxLCAKKyAgICA0MTQ3NywgMTE5MjU2LCA3MTE5MiwgNzQ1MTEsIDQxNzcwLCAxNjcwLCA2NDQyLCAxMjAzMTcsIDQyNDQ2LCA1Mzc5LCAKKyAgICAxMjAzMTgsIDQxMTYzLCA3NDgzMiwgMTExMzYsIDcxODc2LCAxMTUwNiwgNjU5MzQsIDQyODQxLCAxMzI2NywgMTI4NDIxLCAKKyAgICAxMjQ5ODgsIDQxNzc1LCAwLCA3MTMwLCA0MTc3MywgOTE3ODg4LCAxMDY2MywgNzAxMzAsIDEyNTIyNSwgOTgzOTc0LCAKKyAgICA2MTUxLCAxMjExMCwgNDI2NzMsIDY1NTcyLCA2NTI5MywgNjUyNTAsIDEzMjY1LCAxMzI2NCwgNjQ1MTgsIDAsIDYxMDAsIAorICAgIDEwMDQ5MywgOTI2NDcsIDU4MDgsIDY1OTIyLCA2NzgxNCwgMTI5NjcsIDY2MDQxLCA1NjEyLCA0NTgzLCA3MDAwNCwgCisgICAgNDMzODYsIDY4MDk3LCA2NDU3NSwgMTI2NjM3LCAxMTk2NSwgNzA3MjAsIDY4MzU4LCA3MTQ4MywgNjk3ODksIDQyNjUzLCAKKyAgICA4MzE4MSwgNjgxMDIsIDk2OTgsIDc4MTQsIDcxMDQ1LCAxMTk2NTEsIDEyODUxNCwgOTE3OTE1LCA0MTkyMSwgMTE4ODU4LCAKKyAgICA5NzU2LCA2OTg1LCA2NjQxOCwgNjY2MjEsIDc0MjE5LCA2NjQxMiwgMTI4ODIyLCA3MDcxOCwgODAxMiwgNTY3NCwgMTIzNTMsIAorICAgIDY2NDIxLCAxMjM2MSwgNTY3NywgNTU4OCwgOTIzNDgsIDQxOTI1LCAxMjgxMjQsIDQxOTIwLCA1NjczLCA4MzExMywgNTY3NiwgCisgICAgNDE5MjMsIDEyNjk0LCAxMTg5NzgsIDU2NzIsIDEyOTQsIDEyMDg3OCwgNzgwNTksIDk4Mzk2MiwgNDI1MTEsIDE3MjcsIAorICAgIDEyMDcyNSwgNDI0MzYsIDEwMDQ5NywgMTIxMTgzLCAwLCA3NDIyMiwgODcxOCwgMzU1MCwgNzM2LCAxMDI2OCwgNDUwNSwgCisgICAgNTg3MywgNzQwOTAsIDU4MjYsIDU1MjMyLCA1ODEzLCAxMjAwODYsIDkyODg5LCA1ODQxLCA1ODM3LCA1NTIzNCwgMTk0ODY0LCAKKyAgICAzMTA1LCAxMjgyOSwgNTgzOCwgNTc5NiwgOTgzODQwLCAxMTk1OTIsIDU3OTMsIDAsIDU4NjYsIDU3OTcsIDQxMDExLCAKKyAgICA1ODY1LCA5MzAwOSwgNzk1NiwgNTk4LCA5ODMyNjAsIDY0NjQ5LCA1ODA2LCA0MjM5OCwgMCwgOTAzNywgNTY3MSwgCisgICAgMTIwMDQxLCA5ODMyNTcsIDgzNDc4LCA5ODM5MjksIDcxMjY2LCA5MTc2MTgsIDg0NywgMTI1MDY1LCA5NTI5LCA4MzAxOCwgCisgICAgNjY2NTcsIDY5ODAsIDc4NDgzLCA0MzUxMCwgNzgxMjIsIDkyMjE5LCAwLCA2NzQxMSwgNzg0ODYsIDgzMDE3LCAxMjcyNjAsIAorICAgIDEyMDAzOSwgNDI2ODMsIDcxODQ4LCAxMDEwOTUsIDcxMTQsIDEyNjUyMSwgMCwgNDMxOTAsIDY1NDYzLCAxNTU0LCA3MDY1NywgCisgICAgNDI2MTEsIDQyNTYzLCAxMDEwNzEsIDU2NTEsIDI5MjksIDY3OTIsIDQzMjAxLCA3NTA1OSwgMTk5NjMsIDU2OTgsIAorICAgIDE5NDc2OCwgMTIwNzMwLCA5MjkzMywgNzE4ODcsIDU2NDQsIDEwMjkyLCA2NTU0NiwgNjk3MjcsIDY4MTQxLCA4MzcyLCAKKyAgICAxMDA4MDAsIDY1MTE2LCAwLCA3MDMwNCwgMTAxNzUsIDEwMzg4LCA0Mjc5OSwgOTQxMDAsIDQxMDEzLCAxMDU2OCwgCisgICAgOTE3NTY1LCAxMjc0MDAsIDI4NjksIDkxNzg0MywgNDEwMTUsIDc0NDczLCAyNzg1LCA0MzY2LCAwLCAxMDk1NCwgNDE4MDIsIAorICAgIDk4MzY1MiwgNDI2MDgsIDc4NDY4LCA5ODg0LCA0NzU5LCA3Mzc2OCwgMTIwMjk2LCAxMDI2NiwgNDEzNTksIDExNzAsIAorICAgIDQzMzY1LCA2OTgxMCwgNzM5MDgsIDE2MDksIDkwMiwgOTI3NzMsIDYzOTM2LCA4MzI0NywgMTE2NjEsIDgxMjIsIDU4MTgsIAorICAgIDgzMjQ1LCAwLCAzODYxLCA5NTQwLCAxMTAyOCwgMjU1NCwgNTE1OCwgNTcxNCwgMjIxMywgOTgzOTY2LCAxMjEwMjgsIDgwNywgCisgICAgNDMwNzksIDc4MDkyLCA3ODQ3NSwgOTc2LCA1NTExLCA2NDU1MywgMTIwODYzLCA0MjE1NSwgMTI4OTUxLCA0MTM1NiwgCisgICAgNzQxMTAsIDExODgwMSwgNzEwNDMsIDEyMDA4MCwgODY3NiwgMTAwNTE5LCA5NDAwMiwgNTU4MiwgNDUxLCA2Mzk0MSwgCiAgICAgNTc5OCwgOTM0OSwgNDIwMTgsIDEyNzg1OCwgMTI4NTIxLCA3ODY4MSwgNDM2MDksIDU5MDYsIDEyMDU1MywgMTQ0MCwgMCwgCi0gICAgMTI4ODUzLCA3NDkzMywgNzAzNDIsIDExMDA1LCAxOTQ2OTksIDY2NjU2LCA2NjA0NCwgMTk0NjM2LCAxMjAwNzksIAotICAgIDEyODc5MywgMCwgNDMzOTMsIDEwMDk0LCA3MDE2NCwgMTE1MjksIDEwODU3LCA5Mjk0NCwgNjY0MzYsIDY1NDYsIDkzLCAKLSAgICA4MTAyLCA2NzMyMywgNjg0MDUsIDAsIDE5NDcxNCwgODE3MSwgMTE4ODg4LCAxMTkwOTcsIDgyOTk2LCA5MTc1NDMsIDM4MywgCi0gICAgNzE1NCwgNDE2NTYsIDQzNDk1LCA5NDA0MCwgNjcxNjIsIDUxODcsIDcxMjk2LCA3MTA4NiwgMTEyODYsIDY4NjIwLCAKLSAgICA2NDIxNywgMCwgNTIzMiwgMCwgNDEwMDksIDEyNzM3NywgNDEwMDUsIDk4MzgxMCwgMCwgMTI4NDcxLCA4MjkyLCAxMjUxMDgsIAotICAgIDQ5ODAsIDg4NjAsIDcxMDU0LCAxMDAyOCwgNjUyOTEsIDcwNzYsIDEzMTgyLCAxOTQ3MDUsIDc0OTEyLCAxMjc5NzQsIAotICAgIDEwNjMxLCAxMTI0NCwgNzk3MiwgNjgwNDIsIDc4Nzg1LCAwLCA3OTAwLCAxMjg1OTAsIDExMzA5LCAzODA2LCA0MTk4LCAKLSAgICA0MjcyNSwgMCwgNjc2NTYsIDk5OTUsIDAsIDkyNTUyLCAwLCAxMjkzMSwgMTIxMTEwLCA0MjY4NCwgNzQyODUsIDIwODgsIAotICAgIDY0MjEzLCA2NDM2NiwgNjUxNTYsIDg4MTQsIDQyMjM4LCA3NDc3MSwgMTI3OTIwLCAxOTQ3MTMsIDEyODM2LCAwLCAKLSAgICAxMTM4MDAsIDc0MzQyLCA4NTkzLCAwLCAwLCA2ODQ0NSwgMTMyNTUsIDEyMTMzMywgMTI4ODQzLCA3NDY0LCAwLCA2NTg2NSwgCi0gICAgMCwgMTk0NjUwLCAxMjcxNDQsIDkyMzk1LCA5MzQyLCAxMjA0NjQsIDcwMzc2LCA2NDUxNiwgMCwgNzg3OTIsIDEwMTI5LCAKLSAgICA0MTAwNywgNzQzNzUsIDk4MzcwMSwgNDA5OTUsIDEyMjA5LCA0MTAxMiwgODM1MDEsIDAsIDgzMjU3LCA2OTcyNCwgNDA5OTIsIAotICAgIDkyMjY0LCAxMTkxMzYsIDY4NjUzLCA0MzU1OCwgNTUyMiwgNzUwMjYsIDYxLCAxMjA5NTksIDc0MTA1LCAzNjMzLCAKLSAgICAxMjAwODIsIDY1MTYyLCA0MTIzNCwgMTIwODksIDc4MjgxLCA5NzcxLCA4MzI4MSwgMTMyNTEsIDEyODcwMSwgMCwgNjI2MiwgCi0gICAgMjc4NCwgNDI3NDMsIDcxMDc4LCA4MTI2LCA2NjQ4MywgMCwgMCwgNDQxLCA0MjYyMSwgMCwgMCwgNDEwMDIsIDQwOTk5LCAKLSAgICAxMTk2MjMsIDQzMjY2LCA3MTA4LCAxOTQ3NzksIDEwODkwLCA3NDQ4MSwgNjU4MzQsIDgzMjQsIDExODk0NCwgNjQ0MTcsIAotICAgIDc0ODE3LCAxMjc0NjUsIDY0NzM3LCA3NDg1MywgOTgzNjU5LCA4OTMwLCA2NjY3OCwgNjcyMTYsIDExOTMsIDEwMDU2LCAKLSAgICAxODAwLCAxMzI1MywgMTMyNTIsIDc4MjksIDEyMDk5MiwgMTIxMTc1LCA3NzQzLCA4MzUwMiwgMTI0OTk2LCA3NzkwNCwgCi0gICAgNzc5MTMsIDc3OTA1LCA5MDM0LCA2MDM5LCAxMjkxMzksIDEwMDc1LCAwLCA0MTAxOCwgNjU2ODMsIDEwMzM4LCA2NjQ2OSwgCi0gICAgMCwgMCwgMTk0NjM3LCA0MjgxNSwgOTI5ODQsIDQxOTY2LCAwLCAxMjc0NzEsIDAsIDExNzkyLCA0MzA2NCwgNDEwMjUsIAotICAgIDkxMSwgNzUzOSwgMCwgNDA5NjMsIDEyMDMzOSwgNjUxNTksIDY0MzkwLCAwLCA5ODMxNjAsIDU1MjAsIDExNjYyLCAKLSAgICAxMjc0NzMsIDY1MzMwLCA0MjgxMiwgOTgzMjE1LCAwLCAxMjMyNiwgNzEwODEsIDE5NDYzOCwgNDI4MDgsIDEyODMzNywgCi0gICAgOTM0OCwgNjQ5MDEsIDk4Mzg2MSwgOTgzODkyLCAxMjEwNTAsIDY2ODM5LCAwLCAwLCAxMjEwMDQsIDQzNzAyLCA5ODMxNDgsIAotICAgIDU4NTcsIDY1MzQyLCA5MjcyNywgMTE5MTIwLCA4MzUwMywgODY0NCwgMTIxMjI3LCA4MzMzMiwgMTExODYsIDc0Mjk2LCAKLSAgICA0MTkwOSwgMCwgNjY5MDAsIDI3OTEsIDY5NjYzLCAxODkxLCA2OTgyNCwgNjYzOTcsIDQxOTA3LCA2NjY0NywgMTE4OTM5LCAKLSAgICA4NzYxLCAxMjk0MiwgNTc0OCwgOTI3MTMsIDEwNzczLCA3MDg2OCwgODMxNzQsIDg3OTYsIDc4MTQ5LCA2NDEyLCAyMDYxLCAKLSAgICA4NTIwLCAxMzE0NiwgMTI3MDk2LCA2MzkzMSwgODMyNzUsIDY1OTAyLCAyODgyLCA4MzMzNCwgMCwgMTI4NDMsIDQ1MjAsIAotICAgIDEyMDM0NSwgOTI0NTksIDAsIDk4MzY2MCwgMCwgNzM4NjAsIDgzMzM1LCAwLCA2NDM0NSwgMCwgOTIwMSwgMTI4MzE0LCAKLSAgICA3MDg3MSwgMCwgOTE3ODY0LCA0MzY3OSwgMTIxMDI2LCA2NTExNywgOTIyNzAsIDAsIDEwNDI3LCAxMjE1MDYsIDM4NDQsIAotICAgIDY4NDIsIDk3NTUsIDExMTAsIDY2MTIsIDEyMjIyLCA5MzAzMCwgMTI4Nzg5LCA5ODM2MzgsIDkyOTI4LCA3ODMsIDE5NDkzNSwgCisgICAgMTI4ODUzLCA3NDkzMywgNzAzNDIsIDExMDA1LCAxOTQ2OTksIDY2NjU2LCA2NjA0NCwgMTk0NTg2LCAxMjAwNzksIAorICAgIDEyNzI0OSwgMTIwNzk3LCA0MzM5MywgMTAwOTQsIDcwMTY0LCAxMTUyOSwgMTA4NTcsIDkyOTQ0LCA2NjQzNiwgNjU0NiwgCisgICAgOTMsIDgxMDIsIDY3MzIzLCA2ODQwNSwgMCwgMTk0NzE0LCA4MTcxLCAxMTg4ODgsIDExOTA5NywgODI5OTYsIDkxNzU0MywgCisgICAgMzgzLCA3MTU0LCA0MTY1NiwgNDM0OTUsIDk0MDQwLCA2NzE2MiwgNTE4NywgNzEyOTYsIDcxMDg2LCAxMTI4NiwgNjg2MjAsIAorICAgIDY0MjE3LCAwLCA1MjMyLCAwLCA0MTAwOSwgMTI3Mzc3LCA0MTAwNSwgOTgzODEwLCA0MzIwNSwgMTIwODI5LCA4MjkyLCAKKyAgICAxMjUxMDgsIDQ5ODAsIDg4NjAsIDcxMDU0LCAxMDAyOCwgNjUyOTEsIDcwNzYsIDEzMTgyLCAxOTQ3MDUsIDc0OTEyLCAKKyAgICAxMjc5NzQsIDEwNjMxLCAxMTI0NCwgNzk3MiwgNjgwNDIsIDc4Nzg1LCAwLCA3OTAwLCAxMjg1OTAsIDExMzA5LCAzODA2LCAKKyAgICA0MTk4LCA0MjcyNSwgOTgzMzExLCA2NzY1NiwgOTk5NSwgMTIwMDcyLCA5MjU1MiwgMCwgMTI5MzEsIDEyMTExMCwgNDI2ODQsIAorICAgIDc0Mjg1LCAyMDg4LCA2NDIxMywgNjQzNjYsIDY1MTU2LCA4ODE0LCA0MjIzOCwgNzQ3NzEsIDEyNzkyMCwgMTk0NzEzLCAKKyAgICAxMjgzNiwgMTI1MjE0LCAxMTM4MDAsIDc0MzQyLCA4NTkzLCAxMjA2NDAsIDAsIDY4NDQ1LCAxMzI1NSwgMTIxMzMzLCAKKyAgICAxMjg4NDMsIDc0NjQsIDEwMTA2NiwgNjU4NjUsIDAsIDEyODUzNSwgMTI3MTQ0LCA5MjM5NSwgOTM0MiwgMTIwNDY0LCAKKyAgICA3MDM3NiwgNjQ1MTYsIDAsIDc4NzkyLCAxMDEyOSwgNDEwMDcsIDc0Mzc1LCA5ODM3MDEsIDQwOTk1LCAxMjIwOSwgNDEwMTIsIAorICAgIDgzNTAxLCAwLCA4MzI1NywgNjk3MjQsIDQwOTkyLCA5MjI2NCwgMTE5MTM2LCA2ODY1MywgNDM1NTgsIDU1MjIsIDc1MDI2LCAKKyAgICA2MSwgMTIwOTU5LCA3NDEwNSwgMzYzMywgMTIwMDgyLCA2NTE2MiwgNDEyMzQsIDEyMDg5LCA3ODI4MSwgOTc3MSwgODMyODEsIAorICAgIDEzMjUxLCAxMjg3MDEsIDAsIDYyNjIsIDI3ODQsIDQyNzQzLCA3MTA3OCwgODEyNiwgNjY0ODMsIDAsIDE5NDY2MiwgNDQxLCAKKyAgICA0MjYyMSwgNzA2NjAsIDAsIDQxMDAyLCA0MDk5OSwgMTE5NjIzLCA0MzI2NiwgNzEwOCwgMTk0Nzc5LCAxMDg5MCwgNzQ0ODEsIAorICAgIDY1ODM0LCA4MzI0LCAxMTg5NDQsIDY0NDE3LCA3NDgxNywgMTI3NDY1LCA2NDczNywgNzQ4NTMsIDk4MzY1OSwgODkzMCwgCisgICAgNjY2NzgsIDY3MjE2LCAxMTkzLCAxMDA1NiwgMTgwMCwgMTMyNTMsIDEzMjUyLCA3ODI5LCAxMjA5OTIsIDEyMTE3NSwgCisgICAgNzc0MywgODM1MDIsIDEyNDk5NiwgNzc5MDQsIDc3OTEzLCA3NzkwNSwgOTAzNCwgNjAzOSwgMTI5MTM5LCAxMDA3NSwgCisgICAgOTgzNzY1LCA0MTAxOCwgNjU2ODMsIDEwMzM4LCA2NjQ2OSwgMCwgMCwgMTk0NjM3LCA0MjgxNSwgOTI5ODQsIDQxOTY2LCAwLCAKKyAgICAxMjc0NzEsIDEyNTE4OCwgMTE3OTIsIDQzMDY0LCA0MTAyNSwgOTExLCA3NTM5LCA5ODM0ODcsIDQwOTYzLCAxMDA0NDcsIAorICAgIDY1MTU5LCA2NDM5MCwgMCwgOTgzMTYwLCA1NTIwLCAxMTY2MiwgMTI3NDczLCA2NTMzMCwgNDI4MTIsIDExOTkxMiwgCisgICAgMTI2NjQ3LCAxMjMyNiwgNzEwODEsIDE5NDYzOCwgNDI4MDgsIDEyODMzNywgOTM0OCwgNjQ5MDEsIDk4Mzg2MSwgOTgzODkyLCAKKyAgICAxMjEwNTAsIDY2ODM5LCAwLCAwLCAxMjEwMDQsIDQzNzAyLCAxMDA4MDcsIDU4NTcsIDY1MzQyLCA5MjcyNywgMTE5MTIwLCAKKyAgICA4MzUwMywgODY0NCwgMTIxMjI3LCA4MzMzMiwgMTExODYsIDc0Mjk2LCA0MTkwOSwgMCwgNjY5MDAsIDI3OTEsIDY5NjYzLCAKKyAgICAxODkxLCA2OTgyNCwgNjYzOTcsIDQxOTA3LCA2NjY0NywgMTE4OTM5LCA4NzYxLCAxMjk0MiwgNTc0OCwgOTI3MTMsIAorICAgIDEwNzczLCA3MDIwNiwgODMxNzQsIDg3OTYsIDc4MTQ5LCA2NDEyLCAyMDYxLCA4NTIwLCAxMzE0NiwgNzI4MDUsIDYzOTMxLCAKKyAgICA4MzI3NSwgNjU5MDIsIDI4ODIsIDgzMzM0LCAxMjgyODUsIDEyODQzLCA0NTIwLCAxMjAzNDUsIDkyNDU5LCAxMjkwOTIsIAorICAgIDk4MzY2MCwgMTIwMDY4LCA3Mzg2MCwgODMzMzUsIDEyODI4OSwgNjQzNDUsIDk4MzU1NCwgOTIwMSwgMTI4MzE0LCA3MDg3MSwgCisgICAgOTgzODA5LCA5MTc4NjQsIDQzNjc5LCAxMjEwMjYsIDY1MTE3LCA5MjI3MCwgOTgzNjM2LCAxMDQyNywgMTIxNTA2LCAzODQ0LCAKKyAgICA2ODQyLCA5NzU1LCAxMTEwLCA2NjEyLCAxMjIyMiwgOTMwMzAsIDEwMTA1MSwgOTgzNjM4LCA5MjkyOCwgNzgzLCAxMTk1NzcsIAogICAgIDkyMTg1LCAxMjcyMjEsIDczODU1LCA2ODAzMiwgNjUwNTYsIDM2MjAsIDQxMTgwLCA2ODM3OCwgNDU1NiwgNjc4MzksIAogICAgIDY4NDgwLCAxOTQ5MzMsIDc0MjUwLCAwLCA2NzY1NywgMTA1MTAsIDQzODIsIDY2NDgyLCA2NzgyMywgMCwgMTI3NTI3LCAKLSAgICA5MTc3LCA4OTAyLCA5Mzk1OCwgOTgzOSwgMTIwNzAwLCAxMjg5MSwgOTgzNzU1LCA5ODM2MzYsIDYzOTk5LCAyMDE2LCAKKyAgICA5MTc3LCA4OTAyLCA5Mzk1OCwgOTgzOSwgMTIwNzAwLCAxMjg5MSwgOTgzNzU1LCA5ODMyMzksIDYzOTk5LCAyMDE2LCAKICAgICA0MTkxNywgOTc4OCwgNjM5MjgsIDY3Njk2LCAxODYyLCA2NTgwMCwgOTE1NSwgNjY2MjMsIDk3ODYsIDY1MDgyLCA0MTkxOSwgCiAgICAgODU3OSwgNDE5MTQsIDc5ODEsIDAsIDY2MDE3LCA0NTA4LCA2NDg4MywgOTI0NTYsIDkyNTIyLCAxMjc4MTQsIDEyMDgzNCwgCiAgICAgNjQ1OTIsIDc0Mjc2LCA2NzY4OCwgNjc4NCwgNzg3ODgsIDY4MTgxLCAwLCA3MTIxOCwgMTEzODIxLCA2NjM2NiwgMTIxNDcsIAogICAgIDkwMjQsIDY2Mzc4LCA2NjQ3MiwgMTI0OTc2LCA2NDI4OSwgNjUyODksIDc4MTUxLCA2NjY1OCwgNzE5MzUsIDY0NTA5LCAKICAgICA3ODE1MiwgMTEzNjk3LCAxMjY1MDUsIDExMDUxLCAxOTQ5MjgsIDAsIDExMzU1LCA2NTg4NSwgMTIxMzE5LCAxMjc5NDEsIAotICAgIDQxMjE0LCAwLCAxMjI5OSwgMCwgNzUwMCwgNDUwNiwgNzc3MywgMCwgMCwgOTk2MywgNjg2NDksIDEyNjYwOSwgNDA0MCwgCi0gICAgMTIwNTcwLCA2MTY3LCA3NDUxOSwgNjM5MjIsIDY1OTQsIDk4Mzc0MCwgMCwgMCwgMzYyNCwgNDMwMzYsIDEyOTQ3MiwgCi0gICAgNjM4NywgNjM5OTAsIDE5OTQ3LCA2Mzk4OCwgNDE5NTUsIDEyNjk5MCwgNjM5OTMsIDEwNDQwLCA5NjExLCA2NTYwNSwgCi0gICAgNjgwMywgMTIwOTY4LCA3NzM4LCA2Mzk4NiwgMTE0NDYsIDYzOTg0LCA5MjY0MSwgMzQzNSwgNzgxNjQsIDQzODE0LCAKLSAgICA0MzgxMCwgNzAyOSwgNjQyNTgsIDQxMjkyLCAxMTg4OTgsIDEyNzQ4LCA0Mjc0MiwgOTUxNywgMTE1MTgsIDgzMjkyLCAKLSAgICA3ODc5MCwgOTgzMzgxLCA2Nzk5MywgNjM5NTYsIDQyNDU4LCA2Mzk1NCwgNjM5NTMsIDYzOTYwLCA5NTkxLCA0NTE2LCAKLSAgICAxMDIxNywgNjgzNzAsIDExNDY5LCA2OTY5NywgNDIzMDYsIDI3MjMsIDExODk0NywgMCwgOTIzMjUsIDAsIDY4MDc5LCAKLSAgICAxMjEzNDQsIDExMzk3LCAyODgwLCA3MDgwNiwgOTE3ODI5LCAyODcyLCAwLCA4MzMyMSwgMzQ5OCwgNDM3OCwgOTE3NTM5LCAKLSAgICA0MjcwLCAwLCA2NTU1MSwgNjgyMDUsIDY2MzMsIDQzMzg3LCAwLCA1MjMwLCAxOTQ5OTEsIDAsIDk4MzA0MCwgMTk0OTEwLCAKLSAgICAxMjEzOTIsIDgxNjEsIDM5MywgMTIwMTMsIDAsIDk4MzE5OCwgMTE5MTAzLCA0MTUsIDYzOTY0LCA2Mzk2MywgNDIzNDUsIAotICAgIDkyMzEwLCA1MTgzLCAxODc3LCA0MjQ5OCwgMCwgMjkyNywgNzEwNTgsIDYzOTYxLCA0NDcyLCA5ODMyOTksIDAsIDc4MTU5LCAKLSAgICA2OTY5OSwgMTI3MzAxLCA0MjM0MCwgNDc1NiwgMTI4MDc4LCA3MDgxLCAxMDczMCwgNzY5MSwgMTAzMzEsIDYzODMwLCAKLSAgICAxMTk2MjUsIDQyOTIyLCA0MjEwMywgODYyOCwgOTgxMywgNzg2NTQsIDQyNDUzLCAxNjA0LCA5NTY1LCAxMDUzOSwgNjk3MDEsIAotICAgIDY1NzY0LCA0MTQxNSwgNjU3NjcsIDEyOTE5NiwgODQ1NywgNDIzMDEsIDExMzcyLCA2NDg3MywgMTE5OTIsIDAsIDAsIAotICAgIDYzOTgwLCAxMTgwMSwgMzYyMiwgMTk1MDkyLCA2NDMzNiwgMTIwMTcsIDEwNDYzLCA2Mzk4MSwgNDk2NywgNjQxODksIAotICAgIDE5NjYsIDQzNjI4LCA5ODM5MDgsIDk4MzI5NCwgODMyNjcsIDEyMTA1MiwgNjM5NzEsIDQzNDcsIDQ0MTYsIDQyMDk4LCAKLSAgICAxMTAwOSwgMTA2OTQsIDYzOTczLCA0MDIsIDkyMjEzLCAxMzE0NywgMTI4NjkyLCA0MjEwMCwgNjQ2NDYsIDEzMjI4LCAwLCAKLSAgICA0MTg3NSwgMzUxNSwgNzQyNTIsIDExODA1LCA5ODMxNTcsIDExMzAyLCA2MjU5LCA0MzM5NSwgMCwgODMzMjMsIDE5NDY3MCwgCi0gICAgMTIwODM2LCA5MjM1MSwgNzQ4MTMsIDc0NDI1LCAxMTI5OSwgMTU2MSwgMTE4ODgxLCA5MjMxOCwgNjQ5NDIsIDkzMDIxLCAKLSAgICAxOTQ3MzMsIDcwNDExLCA3ODcxOCwgMTIxMTQwLCA3NDMwMSwgNjg4MjUsIDExMjgwLCAxMjg0ODksIDY5Nzg0LCA3NDA2MCwgCi0gICAgMTI4MzkyLCAwLCAxMTk2NjQsIDUxNDUsIDEyNDg2LCA2NTAxOCwgNjY1MTYsIDU0MDksIDEyNzM3OSwgMTI0OTg4LCA3NDAyLCAKLSAgICA1Mzk5LCA5Njg1LCA3NDA4OSwgNzk1MiwgNTQwMSwgMCwgNjY2MTYsIDY2ODMyLCA5Mjk2NiwgMTIwODUyLCA1NDA1LCAKLSAgICAxMjc4NzUsIDY0ODY2LCAxMjA5NjUsIDExOTU4MywgMTE5MTIyLCA3ODc4NCwgNzQyNDgsIDExMzMwLCAxOTQ3MjMsIAotICAgIDY0NjkwLCAzMjU0LCA5ODMxNjYsIDEyODk0NCwgOTI2OTYsIDQyMzkwLCA0MzY3OCwgMTk0NzI1LCAxMjkxMjcsIDY1MDc3LCAKLSAgICAxMjkwNTksIDYzODgsIDMzNTUsIDk1MDgsIDk4NjcsIDU3MjMsIDExNTIwLCA1NjExLCA4MzAyMSwgMzM3NywgMCwgMCwgCi0gICAgNzQzNTQsIDE5NDU3OCwgNzgyMjgsIDk4MzcyMiwgOTgzNzYyLCA0MjY5MSwgMTI3ODg2LCAxMjA5NDgsIDY4MDkxLCAKLSAgICAxMjg0MDQsIDc1MDIzLCAxMzc5LCAyNDYsIDc0NjQ5LCA5ODM3NjEsIDM3ODgsIDkyNTIwLCAxMTA0MSwgNjcyMDIsIAotICAgIDY2MzA0LCAwLCAxMjEyMTMsIDg5MTcsIDQyNDAzLCAzMDEsIDAsIDEyODUwMCwgMTI3MDQ2LCAwLCAwLCAxMTM4MjIsIAotICAgIDEwNjU2LCAxMjUwNDIsIDY1MjE0LCA5Mjk4NywgNDI1NjcsIDkyMjE3LCAxMzE2MywgOTgzMjA0LCAxMjA4MzEsIDc0NTk3LCAKLSAgICAzMTgyLCAwLCAwLCAwLCA2NTAzNCwgNjU4ODksIDQyMTY5LCA0NzU1LCA3NDI0NCwgMTk0NTc0LCAxMTQ0MywgOTgzNjAzLCAKLSAgICA2NjMxOSwgNjg0MSwgNjA4LCA2MDAsIDAsIDEyMTksIDM5MzQsIDY0MjA2LCAxMTQ4MywgNzQ1MTAsIDExOTExNywgNzQ0ODUsIAotICAgIDQyNDQyLCA2NTQ3MCwgOTgzOTA3LCA2NDIwMiwgMTMxNjAsIDc3NTksIDQyNDgyLCA0ODUsIDY5OTgyLCA3MDUwNSwgOTgyOCwgCi0gICAgMCwgNDM1MDUsIDQyMjgwLCAwLCA5MzUxLCA3Nzc4LCA2NDM3OSwgNzQ5NiwgNDI0MzEsIDY5MTYsIDEyMDgsIDAsIAotICAgIDExOTYzMSwgMTEwMDIsIDQyNDcwLCAwLCA2ODMxNSwgMCwgMCwgNzQwNDEsIDgzMTQ0LCA3MDA0NSwgNDM1MzksIDU0MTEsIAotICAgIDQyMTk2LCAwLCAwLCAwLCA5MTUwLCA2NjgzMSwgNDIzOTMsIDEzMDg2LCAxMzEwLCA2Njg0OCwgOTMzNywgMTIwNTIsIAotICAgIDEwNjQzLCA1NTI3MSwgMTI4OTUxLCAxMjE2NiwgMjU0NiwgMTk0NjgzLCAyMTMsIDExODg1MiwgNjU2MTEsIDgzMzE2LCAKLSAgICAxOTQ4MjIsIDE5NDc1NiwgNzQzMTAsIDY1NTQsIDk0MDU5LCAxMTkxNCwgNTQ1MiwgMCwgMCwgOTI3NzIsIDAsIDkxNzg4MCwgCi0gICAgMTk0NjgxLCA5MjU2MCwgMjcxMywgMTE5NTY0LCA5NjUwLCA0MzMzMCwgMTIxMDMzLCAxMjg1MDUsIDE0MDYsIDEyNTAwNywgCi0gICAgNDI5MjUsIDc0NjM4LCAxOTQ1OTMsIDY2MjU2LCA0MTQzLCAxMjgxMzYsIDE5NDc2MiwgNjU3NDgsIDQxNDEsIDk2ODIsIAotICAgIDY1Mjg3LCAxNTA4LCAxMjcwMTMsIDg3NzksIDEwNTY5LCA4NzI1LCAxMzI5OSwgNjY2MzgsIDY1NzUwLCA0MjI2MywgNDE0NSwgCi0gICAgNjM4MCwgNjU3NTEsIDY2NjEzLCA0Mzk5NCwgNjU3MzgsIDU1MjUwLCA5MTg1LCA5NTUwLCA0MjkzMiwgNDM0MDMsIDAsIDAsIAotICAgIDE5NDc4MywgNjU3MzYsIDQxOTUxLCA2NDgxNiwgNjU3NTYsIDk4MzIwNSwgMTI5NTUsIDEwNTk2LCAyODg4LCA4MzE5MCwgMCwgCi0gICAgMTIxMzU0LCA5NjU3LCA5MDE5LCAxMjExNTQsIDAsIDI4NzgsIDUzOTAsIDAsIDE5NDk2MSwgNjczMjUsIDY4Njc5LCAKLSAgICA0MzU1MiwgNzUwMSwgNjMyOCwgMTk0OTYwLCAxMDQyOSwgMTAzNjUsIDAsIDAsIDQxOTQ2LCA3NTAzLCA1MjM1LCA4MDMsIAotICAgIDY4MzgxLCAwLCAwLCA4OTg2LCA0MzgzOCwgMTA2MzIsIDExOTM0LCAxMTQ1MiwgMTMzMiwgMCwgMTk0OTcwLCAxMjY2NDcsIAotICAgIDAsIDExODg4NywgMTc5MSwgNTE5MSwgOTI4OCwgNjQ4MjIsIDI4OTIsIDgzMTkyLCA0MzM5NCwgNTU1LCAwLCAwLCA2NjY0NiwgCi0gICAgMTI4OTgwLCAxMTkwMDIsIDEzMTUxLCA3NDUxMiwgNzI4OSwgNzQwNTUsIDY0MTYxLCA4ODU0LCA2NDE2MiwgNTg1OCwgCi0gICAgNDE5MjcsIDEwNTgyLCAxMjA0NTcsIDE3ODQsIDEzNjEsIDEyMDkyMSwgMTIxNTE2LCA3OTA1LCAwLCA2NDg2OCwgMTI4ODEzLCAKLSAgICAxMzE1OCwgOTIxNjYsIDcyMTEsIDcxODg0LCA5MzcxLCA3Mzk3MywgMTI4NDQxLCA2ODI4LCAxNjI1LCA3NjY0LCAxMjg3NjgsIAotICAgIDEzNDIsIDY4NDQwLCA2NDE3MSwgOTI2NDIsIDEwOTAzLCA5ODM0OTYsIDAsIDkyNTI3LCAwLCA3MDQzOCwgNDQ4MiwgCi0gICAgNDE2MDYsIDEyODkzNCwgMTI1MDMzLCAxMjE0NzUsIDAsIDY0MzgxLCA5ODM5NDAsIDE5NDk3NCwgMTk1MDkwLCA0MjI0NSwgCi0gICAgMTI2NDY3LCA0MTk3MiwgMCwgNDQ0LCA5ODM0MzksIDkxMjcsIDY2Njg3LCA2NjYxOSwgMTI2NDg5LCA3ODAyNSwgMCwgCi0gICAgMTEzNDksIDQwOTkxLCA5MTc1NzAsIDAsIDcwMTc3LCAxMjA4MzAsIDAsIDExOTcsIDEyODI4MiwgMTE0OSwgNjgzMTYsIDAsIAotICAgIDk4MzI1OCwgNDA5OTAsIDQzNzY1LCAxMjEyNjIsIDM0OTIsIDkxNzkwNiwgMTE4Nzg0LCAxMjkwMjYsIDAsIDk4MzU2NiwgCi0gICAgMTI4MzgsIDY3MjA4LCAxOTk0OCwgNDE2NzcsIDMwOTksIDAsIDAsIDQxMDg3LCAwLCAwLCA5ODMyNjEsIDExOTA1OSwgCi0gICAgMTIwMzYsIDQxMzA5LCAxMjgxNjEsIDAsIDgxNTIsIDAsIDQxNTUwLCAxMjIyNywgOTgzNjEzLCAwLCAxMjgyOCwgMTI3NTExLCAKLSAgICA3NTAxNSwgMTIwOTY0LCAxMjA3MDgsIDAsIDAsIDEwMzg2LCA3NTA2OCwgMTE5OTU1LCAxMjczMDMsIDkyNjgwLCA5ODMxMzQsIAotICAgIDY4MTU0LCAxMjc4NzYsIDE3NDMsIDAsIDAsIDkyMjM5LCA2NTE4NiwgOTE3NTcxLCAwLCA5NjA2LCAwLCA3MDA1MiwgCi0gICAgNjQ0MzksIDEyODg2NCwgNjgwNjIsIDkyNjg2LCA5ODM4NzUsIDAsIDQzODY2LCAxMjg4ODEsIDAsIDMzOTUsIDkzNjIsIAotICAgIDEwODc4LCA0MzI2MCwgMCwgNzgzNjIsIDY0ODMwLCAwLCAxMjUwNDYsIDQxMDkxLCAzNDI2LCAxMzQ0LCA4ODcwLCAKLSAgICAxMjExMDAsIDcxMzQ0LCA0NzM1LCAxMTExMSwgNjExOSwgMTI4MjIsIDQyNjk5LCAwLCA5ODM4MjQsIDc0ODE4LCAxNDIzLCAKLSAgICAxMjg5MjMsIDQyNjM3LCA0MTA4MCwgMCwgMTIwMzksIDEwNTU5LCAxMjg2MzQsIDExODg5MiwgMCwgOTQ3MiwgNjc3MzQsIAotICAgIDExOTI5LCAxMjY1NTcsIDcxNzAsIDk1OTYsIDYxMzAsIDEyODgyNiwgNDM2MjksIDExNTc5LCA3MTQ3NSwgMCwgOTI1MDEsIAotICAgIDEyNTA4MSwgNzgwNDYsIDY2Njk5LCA2NDQ0MCwgMTAwNCwgOTI1ODQsIDE5NDczNiwgNDMyMzQsIDY2MDA4LCAxMjYyNywgMCwgCi0gICAgNjg0MTQsIDc0NjE0LCA0MzYxOSwgNDMzMDMsIDExMzAwLCA0MzMwNCwgOTY4NiwgNTg5MCwgMTE3NzYsIDc1NTgsIDcwMTA5LCAKLSAgICA2NTYyNywgMCwgMTA3MTgsIDEzMTU0LCAzNDYxLCA5MTM5LCAwLCA5ODMwOTQsIDAsIDExOTAyMywgNjUzNjUsIDczODc3LCAKLSAgICA2NTYyOCwgNzgwMTksIDExOTI3MiwgODMxMTgsIDQxNzA4LCAxMjg2MCwgMjY0MSwgMTIwNjksIDEwODM4LCA1NDAzLCAKLSAgICAxMDM1MiwgNzAwODUsIDEwMDYxLCA0MzIzNywgMTI1MDU3LCA1MTQwLCAyMDksIDEyODg0NywgNDE3MDQsIDQxMDU2LCAKLSAgICA0MzA3OCwgMTI3Nzg5LCAxMTg4MDksIDY3MjMyLCAxMDg5OSwgNjU0NjksIDcwMTI1LCAwLCAwLCAyNDEwLCA5OTMsIAotICAgIDgzMTE3LCAxMjA1ODksIDEyMDY4OSwgNzg2OTMsIDAsIDAsIDcyMzIsIDAsIDExOTI1MywgMTI0OTYzLCA3MTEwLCA3NDQ2MiwgCi0gICAgMjA2NiwgMTA0ODksIDQyMTY2LCA0MzQ2MywgMTA2NTksIDM2MDAsIDY4ODYzLCA0MjI0LCAxMzM2LCA0MTUxOCwgMTIxMzExLCAKLSAgICAwLCAwLCAwLCA0MTEzOSwgNjQ4MjAsIDkyNTM4LCAxMjk2NiwgNDExMzQsIDAsIDAsIDExOTE1MywgMTIwNDQxLCAyNzIsIAotICAgIDQyNjMsIDg3OTMsIDk4Mzg1NiwgMCwgNDE1MDIsIDEyODEzMywgOTgzLCAxMjU0OSwgMTI0OTQwLCAwLCAxMTkwLCA0MTA5LCAKLSAgICAxMzM1LCA4NDEsIDU4ODgsIDQxMzU4LCA2NDg2MywgOTU0NCwgNDM0ODEsIDAsIDEyMDkyNiwgNzAwMjcsIDIwOTksIDUxMjAsIAotICAgIDI0MDksIDc3OTksIDAsIDc0NDI0LCAwLCAxMjEwNDEsIDQ3MzEsIDkyMjc5LCA2NjYyOSwgMTI4MTI3LCA5MjUyNSwgMTI1NSwgCi0gICAgNDE0OSwgOTI0NywgNzQ5NzcsIDk5MTMsIDk4MzgyOCwgMTIxMTAxLCA2NDkxNCwgOTE3Nzg3LCA2NTEwMSwgMTEzNzE0LCAKLSAgICAxMTY5NCwgOTI0NzUsIDExNjkwLCA1ODM1LCAxMjcxNjQsIDY2NjI1LCAxMDg0MiwgNDEzNTQsIDQyMTIzLCA0MzA5NywgCi0gICAgMTE2ODgsIDY2NjM0LCAxMDk0LCAxOTQsIDY0NjkyLCA5MTc5MDAsIDgxODAsIDEyNTA1NSwgMCwgOTk3MiwgNzM4NjUsIAotICAgIDQ1MTksIDYxMTQsIDEwODk4LCA0MzA3MiwgOTI0NjUsIDAsIDkzOTYwLCA5ODMzMjQsIDEyNjU4MSwgMTA2OTUsIDAsIAotICAgIDc1NDAsIDAsIDg4MSwgNzg1NywgNjA2NywgNjUxNjQsIDAsIDkxNzg5NywgMTI5MTM0LCAxMzMxMSwgNjg0MDMsIDQxODU3LCAKLSAgICA2NDMyMSwgODM1OSwgODMyODYsIDEyNjg5LCA5ODMzMTIsIDExMjQ1LCAxMjgxMDUsIDk4MzMxNCwgNzE4NTksIDY4MTgzLCAKLSAgICA5ODM0MTUsIDE5NDgyOSwgMTI4NywgNTQzNiwgMCwgNzEwOTcsIDc0MTQyLCA5MjMyOCwgNzQxNTIsIDcwMjA1LCA2MDUxLCAKLSAgICAxMDQ5NywgNjk2NjgsIDg5ODUsIDEyMTA5LCA4Mjk2MiwgMTI4OTA4LCA5MzA0MywgMTIxMDEzLCAwLCAzNjUyLCAxMDUzNywgCi0gICAgMTIwMjgyLCAxMjc2LCAxMjA0NDAsIDY1NDksIDI3OSwgNzM3NDUsIDAsIDEyODY2NCwgODMyNDQsIDE0ODksIDAsIDAsIDAsIAotICAgIDM4OTksIDEwMDcsIDQyMTI0LCA0MzgyOCwgNDIxMjIsIDkyMzM3LCA5MjM2NywgMCwgMTE5ODUsIDEzNDUsIDc4NjAwLCAKLSAgICAxMTk4MzIsIDkxNzU2MywgODk1NiwgNDMwODMsIDk0MDU3LCA0MjEzOCwgNzg2MTAsIDEyOTEzMSwgNjQzMCwgNzg2MDgsIAotICAgIDc4NjA0LCA3ODYwNSwgNjI4NSwgNzg2MDMsIDc4NjEyLCA3ODYxMywgNjU5NDIsIDQ5MiwgODY4NSwgMTI4NDgxLCAKLSAgICAxMjEyNzAsIDAsIDc1MDI3LCA0MzcxMiwgMjU4MiwgMTE0NzAsIDY0NTM4LCA3NDQ0LCA3ODYxNSwgNzg2MTYsIDIyOTcsIDAsIAotICAgIDczODM3LCAxMTk4MjMsIDI1MjcsIDExOTgyNCwgMTk3LCAyNzk5LCA5MjU5NCwgNDE5NDQsIDgzMTUyLCA5OTMzLCA3NDAxMSwgCi0gICAgNjY1MTUsIDc2NywgNTUyNCwgNzAyOCwgMCwgOTIxNjgsIDExOTgyNywgMTE5ODE3LCA5Mjk1MCwgNzg2MzMsIDEwODk2LCAwLCAKLSAgICAxNzk5LCAxMjA0OTcsIDY5NzEsIDc0MzM2LCAxMjgzNDIsIDAsIDY1MzQwLCAxMTg5NzksIDQxNTUxLCAyNDM0LCA5NDAxOCwgCi0gICAgMTE4ODIzLCA2NTM1MywgMCwgNDYzMSwgMTE4OTk2LCAwLCA2NDA3LCAxMTM3MzcsIDYzMzgsIDQzMjE0LCAwLCA3NTcwLCAwLCAKLSAgICAzMTkyLCAxMjAzMzAsIDg0MTQsIDk4MzM5MiwgOTM5ODMsIDE5NTA0MywgMCwgMCwgOTE2NCwgNjY2MTIsIDkzOTU5LCAKLSAgICAzMTcxLCA2NjIzLCA0OTYxLCA2ODM5NiwgODg2LCA1NTIxNiwgODY1NCwgNzg4MzIsIDk5OTMsIDc0MzkwLCA2NDYwMywgCi0gICAgNzAwNjYsIDY5MjQxLCA5NTk5LCA3ODYyOSwgNDMwODQsIDc4NjI3LCA3ODYyOCwgNzg2MjUsIDIzOTksIDY5NjkzLCA4OTk0LCAKLSAgICAxMDk0NCwgNDEyMDgsIDk4MzcxMywgNDExNjgsIDgxNzgsIDc0ODU5LCAzMzY3LCA5MjMzNCwgNDI1MTAsIDc4NjQxLCAKLSAgICA3ODYzNiwgNjgwNCwgNzA0NzUsIDE5NDcsIDkxNzU3OSwgMCwgOTI2ODEsIDQyNzU5LCAxMTA2OCwgMTcwNSwgOTMzMSwgMCwgCi0gICAgNzQ3OTgsIDkxODEsIDY1MzU5LCAxMjUwNjUsIDgwMTcsIDExOTgzMSwgNjUwOTYsIDY2NzIwLCA2ODIyMywgNDM0NzUsIAotICAgIDkxNzU0OCwgNDkwOSwgMTIxMjYsIDEyNzU0MCwgMTIwNjk2LCA0OTA0LCA5Mjk2MSwgNDM1MDMsIDEzNjUsIDkyNTMsIAotICAgIDQyNzU3LCA0MzQzNiwgNzQ2MiwgMTI3NzcyLCAwLCAwLCA4MzE3MywgNjY4NDUsIDY0NDE1LCAxMjA1MDAsIDgzMTcyLCAKLSAgICA1Mzk4LCAxMjUwMzUsIDEyNzM4NiwgOTM5NTMsIDEyNzM2MiwgOTgzNzgyLCAxMTkwMTUsIDgzMTcxLCAxMjcwMDcsIDk0NzYsIAotICAgIDk4Mzg4NywgMTIwNjk1LCAxMjc2MywgMTI2NjAzLCAzNjI5LCAxMjA4NDQsIDEzMDA1LCAxMTE4MSwgMzYyOCwgMCwgMCwgCi0gICAgOTI1MDIsIDM0NjksIDQyMTA3LCA0MjExNiwgOTE3NTc4LCA2NDgwOSwgMjkyOCwgNDkwNSwgOTg1MywgODUxLCA5MDQwLCAKLSAgICAxMjAzNzIsIDY0NjY1LCA0MzA4NiwgOTExNCwgNDM4NzAsIDQyNTgzLCA5MzE1LCA0ODIyLCA0OTA2LCAzODUyLCAyODQ3LCAKLSAgICAxMTk4MjEsIDMyMzYsIDExMzE3LCAxMjUxLCA3Nzc3LCA0MTg1MiwgMTE0MTAsIDEwOTY0LCAwLCA0MzIyMiwgMTI2NDYsIAotICAgIDEyMDI2OSwgMTAyNTksIDk4NjUsIDY1ODIxLCA3NTA0NiwgNjAxOCwgNjgyOTMsIDEyNTAxMCwgMTIyNzYsIDExOTExMCwgCi0gICAgNjgzNzIsIDEyODI1NSwgOTIyNTksIDcxODkzLCAwLCAxMTk4MjgsIDEwNDY3LCAwLCAyNDQzLCAxMDkxOCwgNzgyMTcsIAotICAgIDc3OTQ3LCAxMDAxLCA5MjQxLCAxOTI3LCAwLCAxMjQ5NDIsIDczOTg3LCAxMjc4ODIsIDcxODk1LCA5MzAxMiwgNzk5MiwgCi0gICAgNzc5NDMsIDQzOTM5LCAxMjg2NywgMTI4NjQ5LCA4MjYwLCA3Nzk0NSwgNzUxOSwgMTE1MDUsIDEyMjc0LCA4OTA0LCA1MTgsIAotICAgIDY1ODU3LCAxMjgzNjEsIDEyODY3NCwgMTMyMDQsIDQzODcsIDg1NywgMTIxMjUyLCA2NTM2OSwgMCwgOTIzMzYsIDQzMTI1LCAKLSAgICAxMTg0MiwgMCwgNzEwNzIsIDEyMTQ2MiwgMCwgNTEzNiwgMTk2OCwgMTI4OTA2LCAxMjY2MjcsIDEzMzcsIDY0OTY3LCAKLSAgICAxNjI5LCAwLCA3OTYsIDY2NTA2LCAwLCA3NDEyMywgMTI4NzcsIDEyMDY0OSwgNDIzMTQsIDQzMzg4LCA0MzgyNiwgNDM5NDQsIAotICAgIDYxMjAsIDQ3OCwgNjUxNTEsIDY4MTI4LCAxMjgxNDcsIDQzMDgyLCA2MDE2LCAwLCA0MjI4NCwgNzE4OTQsIDQyNzYsIAotICAgIDEyMDYsIDM2MTksIDQxNjM4LCA2OTY5MSwgMzg0MywgMTIwMTEsIDg4NTMsIDMzNjEsIDAsIDQ5MCwgMTA3MTUsIDc1NzgsIAotICAgIDY4Mzg0LCA5Mjc1NCwgNjUzNTAsIDEwNTMwLCAxMjM0OCwgODY1MywgNjgyNDUsIDQyNDM1LCA2MTU0LCA5NTUxLCA2NTM1NCwgCi0gICAgNzg1MjIsIDc4NCwgNDIzOTcsIDMzNCwgMTIxMDg0LCA0MjQxNiwgNjUzNTYsIDY1MjczLCA0MzkzNywgNjk2NjYsIDQ0NDIsIAotICAgIDEwMzY0LCA0MzkzNSwgNzc4LCA0MTYyNiwgNDI0NTUsIDc5ODksIDc0MDYzLCAzMjI3LCA2OTkwNywgNDM5MzIsIDExMTAyLCAKLSAgICAyOTE1LCAxMTUwMiwgNDEwMjIsIDQxNzAyLCAxMDMwOSwgMTI3MDM1LCA3NTAzMiwgMTIwMjczLCA2OTc1LCAwLCA1NDE1LCAKLSAgICAxMjE3NiwgOTgzNzA5LCA3NDE5MywgMzQ2MiwgNDM5NDAsIDQyNjI5LCA3ODY5MSwgNzExNzUsIDQzOTQyLCAxMjcyNTYsIAotICAgIDk3NTksIDEyNzI1NSwgNzAwNTcsIDEyMTQ0MiwgODExNCwgNzg2OTgsIDc4Njk3LCA3ODY5NiwgNzg2OTUsIDg3MTAsIAotICAgIDQyNDk1LCAxMTg5NTYsIDcwMTg5LCA0MDUxLCAxMDQ2MCwgNDMzNjQsIDcxMjA2LCAxMzU2LCAxMjE2MSwgNDI3MTMsIAotICAgIDEyODg1NywgMTI3MjY4LCAxNjE5LCA5NzAzLCA0MzE1MiwgNDI0ODksIDQyMTEyLCA2NDQzNiwgMTg3NSwgMTA4MDgsIAotICAgIDQyMTA5LCAxMjAyODQsIDQxODYwLCA2NDg2MiwgMTMzMDUsIDY0OTA3LCA1Mjg5LCAxMzE0NCwgMTI4NjU4LCA5ODMyMjQsIAotICAgIDU1NzUsIDk2NzUsIDcxMTI5LCA1OTQwLCAyMjYsIDI2NDksIDYzMzYsIDk4MzI3OSwgOTI5NzksIDQzMjM2LCAzMzgyLCAKLSAgICA0MjQ0OSwgNjQ5OCwgMTY1OCwgMTE5MzYsIDc4MjMyLCAxMTM4MTQsIDExMjY5LCAxMDE1MSwgNzM3NTksIDQzMTAwLCAKLSAgICA2OTg4OCwgNjU1MDgsIDk4MzE0MywgMCwgMTIxNDUxLCA4OTM1LCA3ODIzNCwgMCwgOTgzNzU3LCAwLCA2MTYsIDc0NzUzLCAKLSAgICA2NTE3OCwgNDY4NCwgNzg3MDEsIDExOTY1MywgNzQ2MzEsIDEyNjU1MSwgMTI0OTkyLCA2MDQ4LCA3NDQ2MCwgNDIxMTAsIAorICAgIDQxMjE0LCAxMjkzMzEsIDEyMjk5LCAxMDEwNzUsIDc1MDAsIDQ1MDYsIDc3NzMsIDAsIDAsIDk5NjMsIDY4NjQ5LCAKKyAgICAxMjY2MDksIDQwNDAsIDEyMDU3MCwgNjE2NywgNzQ1MTksIDYzOTIyLCA2NTk0LCA5ODM3NDAsIDExMzczNCwgMTI3ODk5LCAKKyAgICAzNjI0LCA0MzAzNiwgMTI5NDcyLCA2Mzg3LCA2Mzk5MCwgMTk5NDcsIDYzOTg4LCA0MTk1NSwgMTEwNTkyLCA2Mzk5MywgCisgICAgMTA0NDAsIDk2MTEsIDY1NjA1LCA2ODAzLCAxMjA5NjgsIDc3MzgsIDYzOTg2LCAxMTQ0NiwgNjM5ODQsIDkyNjQxLCAzNDM1LCAKKyAgICA3ODE2NCwgNDM4MTQsIDQzODEwLCA3MDI5LCA2NDI1OCwgNDEyOTIsIDExODg5OCwgMTI3NDgsIDQyNzQyLCA5NTE3LCAKKyAgICAxMTUxOCwgODMyOTIsIDc4NzkwLCA5ODMzODEsIDY3OTkzLCA2Mzk1NiwgNDI0NTgsIDYzOTU0LCA2Mzk1MywgMTI1MDMsIAorICAgIDk1OTEsIDQ1MTYsIDEwMjE3LCA2ODM3MCwgMTE0NjksIDY5Njk3LCA0MjMwNiwgMjcyMywgMTE4OTQ3LCAwLCA5MjMyNSwgCisgICAgMTI1MDY3LCA2ODA3OSwgMTIxMzQ0LCAxMTM5NywgMjg4MCwgNzA4MDYsIDkxNzgyOSwgMjg3MiwgMCwgODMzMjEsIDM0OTgsIAorICAgIDQzNzgsIDEyODc0MywgNDI3MCwgMCwgNjU1NTEsIDY4MjA1LCA2NjMzLCA0MzM4NywgMCwgNTIzMCwgMTk0OTkxLCAwLCAKKyAgICA4MzMyMiwgMTI2NjEyLCAxMjEzOTIsIDgxNjEsIDM5MywgMTIwMTMsIDk4MzIyMSwgMTAwNTA5LCAxMTkxMDMsIDQxNSwgCisgICAgNjM5NjQsIDYzOTYzLCA0MjM0NSwgOTIzMTAsIDUxODMsIDE4NzcsIDQyNDk4LCAwLCAyOTI3LCA3MTA1OCwgNjM5NjEsIAorICAgIDQ0NzIsIDEwMTA1NCwgMCwgNzgxNTksIDY5Njk5LCAxMDEwNTUsIDQyMzQwLCA0NzU2LCAxMjgwNzgsIDcwODEsIDEwNzMwLCAKKyAgICA3NjkxLCAxMDMzMSwgNjM4MzAsIDgzNDUwLCA0MjkyMiwgNDIxMDMsIDg2MjgsIDk4MTMsIDc4NjU0LCA0MjQ1MywgMTYwNCwgCisgICAgOTU2NSwgMTA1MzksIDY5NzAxLCA2NTc2NCwgNDE0MTUsIDY1NzY3LCAxMDA1MDYsIDg0NTcsIDQyMzAxLCAxMTM3MiwgCisgICAgNjQ4NzMsIDExOTkyLCAxOTQ4NzQsIDEyOTMwNiwgNjM5ODAsIDExODAxLCAzNjIyLCAxMjg5MDQsIDY0MzM2LCAxMjAxNywgCisgICAgMTA0NjMsIDYzOTgxLCA0OTY3LCA2NDE4OSwgMTk2NiwgNDM2MjgsIDcyNzk0LCAxMDEwNjAsIDgzMjY3LCAxMjEwNTIsIAorICAgIDYzOTcxLCA0MzQ3LCA0NDE2LCA0MjA5OCwgMTEwMDksIDEwNjk0LCA2Mzk3MywgNDAyLCA5MjIxMywgMTMxNDcsIDEyODY5MiwgCisgICAgNDIxMDAsIDY0NjQ2LCAxMzIyOCwgMCwgNDE4NzUsIDM1MTUsIDc0MjUyLCAxMTgwNSwgOTgzMTU3LCAxMTMwMiwgNjI1OSwgCisgICAgNDMzOTUsIDk4MzM3MywgODMzMjMsIDEyODM1OCwgMTIwODM2LCA5MjM1MSwgNzQ4MTMsIDc0NDI1LCAxMTI5OSwgMTU2MSwgCisgICAgMTE4ODgxLCA5MjMxOCwgNjQ5NDIsIDkzMDIxLCAxMjcwNDksIDcwNDExLCA3ODcxOCwgMTAwOTMwLCA3NDMwMSwgNjg4MjUsIAorICAgIDExMjgwLCAxMjg0ODksIDY5Nzg0LCA3NDA2MCwgMTI4MzkyLCAxOTQ5ODgsIDcyNzUyLCA1MTQ1LCAxMjQ4NiwgNjUwMTgsIAorICAgIDY2NTE2LCA1NDA5LCAxMjczNzksIDExOTA1NywgNzQwMiwgNTM5OSwgOTY4NSwgNzQwODksIDc5NTIsIDU0MDEsIDEwMTA1MywgCisgICAgNjY2MTYsIDY2ODMyLCA5Mjk2NiwgMTIwODUyLCA1NDA1LCAxMjc4NzUsIDY0ODY2LCAxMjA5NjUsIDExOTU4MywgMTE5MTIyLCAKKyAgICAyMjM1LCA3NDI0OCwgMTEzMzAsIDEyOTEyMywgNjQ2OTAsIDMyNTQsIDk4MzE2NiwgMTI4OTQ0LCA5MjY5NiwgNDIzOTAsIAorICAgIDQzNjc4LCAxMDEwMDAsIDEyOTEyNywgNjUwNzcsIDEyOTA1OSwgNjM4OCwgMzM1NSwgOTUwOCwgOTg2NywgNTcyMywgCisgICAgMTE1MjAsIDU2MTEsIDgzMDIxLCAzMzc3LCAwLCA5ODM4NDUsIDc0MzU0LCAxOTQ1NzgsIDc4MjI4LCA5ODM3MjIsIAorICAgIDEyODM2OCwgNDI2OTEsIDEyNzg4NiwgMTIwOTQ4LCA2ODA5MSwgMTIxMTY2LCA3NTAyMywgMTM3OSwgMjQ2LCA3NDY0OSwgCisgICAgOTgzNzYxLCAzNzg4LCA5MjUyMCwgMTEwNDEsIDY3MjAyLCA2NjMwNCwgMCwgMTIxMjEzLCA4OTE3LCA0MjQwMywgMzAxLCAKKyAgICAxMTk5MzUsIDExOTgyNiwgMTI3MDQ2LCAwLCAwLCAxMTM4MjIsIDEwNjU2LCAxMjUwNDIsIDY1MjE0LCA5Mjk4NywgNDI1NjcsIAorICAgIDkyMjE3LCAxMzE2MywgOTgzMjA0LCAxMjA4MzEsIDc0NTk3LCAzMTgyLCA5ODM2MDcsIDk4MzkyNiwgMCwgNjUwMzQsIAorICAgIDY1ODg5LCA0MjE2OSwgNDc1NSwgNzQyNDQsIDc0NjMxLCAxMTQ0MywgOTgzNjAzLCA2NjMxOSwgNjg0MSwgNjA4LCA2MDAsIAorICAgIDAsIDEyMTksIDM5MzQsIDY0MjA2LCAxMTQ4MywgNzQ1MTAsIDExOTExNywgNzQ0ODUsIDQyNDQyLCA2NTQ3MCwgMTAwNTM4LCAKKyAgICA2NDIwMiwgMTMxNjAsIDc3NTksIDQyNDgyLCA0ODUsIDY5OTgyLCA3MDUwNSwgOTgyOCwgNzgzMTEsIDQzNTA1LCA0MjI4MCwgCisgICAgMCwgOTM1MSwgNzc3OCwgNjQzNzksIDc0OTYsIDQyNDMxLCA2OTE2LCAxMjA4LCAwLCAxMTk2MzEsIDExMDAyLCA0MjQ3MCwgCisgICAgMTI4OTEzLCA2ODMxNSwgOTgzODM4LCAxMjExNTksIDc0MDQxLCA4MzE0NCwgNzAwNDUsIDQzNTM5LCA1NDExLCA0MjE5NiwgCisgICAgMCwgMCwgMTI4OTQ5LCA5MTUwLCA2NjgzMSwgNDIzOTMsIDEzMDg2LCAxMzEwLCA2Njg0OCwgOTMzNywgMTIwNTIsIDEwNjQzLCAKKyAgICA1NTI3MSwgNzI3MjcsIDEyMTY2LCAyNTQ2LCAxOTQ2ODMsIDIxMywgMTE4ODUyLCA2NTYxMSwgODMzMTYsIDE5NDgyMiwgCisgICAgMTAwNzMzLCA3NDMxMCwgNjU1NCwgODMwNTMsIDExOTE0LCA1NDUyLCA5ODM2NDksIDAsIDkyNzcyLCAxMjc1NDQsIAorICAgIDkxNzg4MCwgMTk0NjgxLCA5MjU2MCwgMjcxMywgMTE5NTY0LCA5NjUwLCA0MzMzMCwgMTIxMDMzLCAxMjg1MDUsIDE0MDYsIAorICAgIDEyNTAwNywgNDI5MjUsIDc0NjM4LCAxMjUxOTAsIDY2MjU2LCA0MTQzLCAxMjgxMzYsIDE5NDc2MiwgNjU3NDgsIDQxNDEsIAorICAgIDk2ODIsIDY1Mjg3LCAxNTA4LCAxMDA1MzMsIDg3NzksIDEwNTY5LCA4NzI1LCAxMzI5OSwgNjY2MzgsIDY1NzUwLCA0MjI2MywgCisgICAgNDE0NSwgNjM4MCwgNjU3NTEsIDY2NjEzLCA0Mzk5NCwgNjU3MzgsIDU1MjUwLCA5MTg1LCA5NTUwLCA0MjkzMiwgNDM0MDMsIAorICAgIDEwMDYyMywgMTAwNjIyLCAxMDA2MjUsIDY1NzM2LCA0MTk1MSwgNjQ4MTYsIDY1NzU2LCA3MjczMSwgMTI5NTUsIDEwNTk2LCAKKyAgICAyODg4LCA4MzE5MCwgMCwgMTIxMzU0LCA5NjU3LCA5MDE5LCAxMjExNTQsIDAsIDI4NzgsIDUzOTAsIDEwMDY5OCwgCisgICAgMTk0OTYxLCA2NzMyNSwgNjg2NzksIDQzNTUyLCA3NTAxLCA2MzI4LCAxOTQ5NjAsIDEwNDI5LCAxMDM2NSwgOTgzNjMxLCAKKyAgICAxMjgyMTYsIDQxOTQ2LCA3NTAzLCA1MjM1LCA4MDMsIDY4MzgxLCAwLCAxMDA1NzUsIDg5ODYsIDQzODM4LCAxMDYzMiwgCisgICAgMTE5MzQsIDExNDUyLCAxMzMyLCAxMjA3MDksIDE5NDk3MCwgMTIwNjAyLCAwLCAxMTg4ODcsIDE3OTEsIDUxOTEsIDkyODgsIAorICAgIDY0ODIyLCAyODkyLCA4MzE5MiwgNDMzOTQsIDU1NSwgMTI5NDE4LCAxMjg0NzQsIDY2NjQ2LCAxMjgzMjcsIDExOTAwMiwgCisgICAgMTMxNTEsIDc0NTEyLCA3Mjg5LCA3MjczOSwgNjQxNjEsIDg4NTQsIDY0MTYyLCA1ODU4LCA0MTkyNywgMTA1ODIsIAorICAgIDEyMDQ1NywgMTc4NCwgMTM2MSwgMTIwOTIxLCAxMjE1MTYsIDc5MDUsIDAsIDY0ODY4LCAxMjg4MTMsIDEzMTU4LCA5MjE2NiwgCisgICAgNzIxMSwgNzE4ODQsIDkzNzEsIDczOTczLCAxMjg0NDEsIDY4MjgsIDE2MjUsIDc2NjQsIDEyNzgwOSwgMTM0MiwgNjg0NDAsIAorICAgIDY0MTcxLCA5MjY0MiwgMTA5MDMsIDk4MzQ0OSwgOTE3ODE4LCA5MjUyNywgMTI5Mzc0LCA3MDQzOCwgNDQ4MiwgNDE2MDYsIAorICAgIDEyODkzNCwgMTI1MDMzLCAxMjE0NzUsIDk4Mzg1NCwgNjQzODEsIDEwMDU0MCwgMTk0OTc0LCAxMDA2MTIsIDQyMjQ1LCAKKyAgICAxMDA2MTQsIDQxOTcyLCAxMDA2MTYsIDQ0NCwgMTAwNjE4LCA5MTI3LCA2NjY4NywgNjY2MTksIDEyNjQ4OSwgNzgwMjUsIAorICAgIDEyNjYwNiwgMTEzNDksIDQwOTkxLCA5MTc1NzAsIDEyOTEzMiwgNzAxNzcsIDEyMDgzMCwgOTgzNDUwLCAxMTk3LCAKKyAgICAxMjgyODIsIDExNDksIDY4MzE2LCAxMjgwMTAsIDk4MzI1OCwgNDA5OTAsIDQzNzY1LCAxMjEyNjIsIDM0OTIsIDkxNzkwNiwgCisgICAgMTE4Nzg0LCAxMjkwMjYsIDEyOTM0NiwgMTAwNTkyLCAxMjgzOCwgNjcyMDgsIDE5OTQ4LCA0MTY3NywgMzA5OSwgMTAwNTk4LCAKKyAgICAxMDA1OTcsIDQxMDg3LCAxMDA1OTksIDAsIDk4MzI2MSwgMTE5MDU5LCAxMjAzNiwgNDEzMDksIDEyNTIxMCwgMTAwNjAzLCAKKyAgICA4MTUyLCAxMDA2MDUsIDQxNTUwLCAxMjIyNywgMTAwNTQ1LCAxMDA2MDksIDEyODI4LCAxMjc1MTEsIDc1MDE1LCAxMjA5NjQsIAorICAgIDEyMDcwOCwgMCwgMTk0NjExLCAxMDM4NiwgNzUwNjgsIDExOTk1NSwgMTI3MzAzLCA5MjY4MCwgOTgzMTM0LCA2ODE1NCwgCisgICAgMTI3ODc2LCAxNzQzLCAxOTQ4NjAsIDAsIDkyMjM5LCA2NTE4NiwgOTE3NTcxLCAwLCA5NjA2LCAwLCA3MDA1MiwgNjQ0MzksIAorICAgIDEyODg2NCwgNjgwNjIsIDkyNjg2LCAxMDA1ODUsIDEwMDU4NCwgNDM4NjYsIDEwMDU4NiwgMTAwNTg5LCAzMzk1LCA5MzYyLCAKKyAgICAxMDg3OCwgNDMyNjAsIDAsIDc4MzYyLCA2NDgzMCwgMTAwODY2LCAxMjUwNDYsIDQxMDkxLCAzNDI2LCAxMzQ0LCA4ODcwLCAKKyAgICAxMjExMDAsIDcxMzQ0LCA0NzM1LCAxMTExMSwgNjExOSwgMTI4MjIsIDQyNjk5LCAxMjA3NDUsIDk4MzgyNCwgNzQ4MTgsIAorICAgIDE0MjMsIDEyODkyMywgNDI2MzcsIDQxMDgwLCA5ODMyMTAsIDEyMDM5LCAxMDU1OSwgMTI4NjM0LCAxMTg4OTIsIDE5NDkxMCwgCisgICAgOTQ3MiwgNjc3MzQsIDExOTI5LCAxMjY1NTcsIDcxNzAsIDk1OTYsIDYxMzAsIDEyNTI2OCwgNDM2MjksIDExNTc5LCAKKyAgICA3MTQ3NSwgMCwgOTI1MDEsIDEyNTA4MSwgNzgwNDYsIDY2Njk5LCA2NDQ0MCwgMTAwNCwgOTI1ODQsIDE5NDczNiwgNDMyMzQsIAorICAgIDY2MDA4LCAxMjYyNywgMCwgNjg0MTQsIDc0NjE0LCA0MzYxOSwgNDMzMDMsIDExMzAwLCA0MzMwNCwgOTY4NiwgNTg5MCwgCisgICAgMTE3NzYsIDc1NTgsIDcwMTA5LCA2NTYyNywgNzI4NzYsIDEwNzE4LCAxMzE1NCwgMzQ2MSwgOTEzOSwgNzQ5NDcsIAorICAgIDk4MzA5NCwgMCwgMTE5MDIzLCA2NTM2NSwgNzM4NzcsIDY1NjI4LCA3ODAxOSwgMTE5MjcyLCA4MzExOCwgNDE3MDgsIAorICAgIDEyODYwLCAyNjQxLCAxMjA2OSwgMTA4MzgsIDU0MDMsIDEwMzUyLCA3MDA4NSwgMTAwNjEsIDQzMjM3LCAxMjUwNTcsIAorICAgIDUxNDAsIDIwOSwgMTI4ODQ3LCA0MTcwNCwgNDEwNTYsIDQzMDc4LCAxMjc3ODksIDExODgwOSwgNjcyMzIsIDEwODk5LCAKKyAgICA2NTQ2OSwgNzAxMjUsIDEwMDU3NCwgMTAwNTczLCAyNDEwLCA5OTMsIDgzMTE3LCAxMDA1NzcsIDEwMDU4MCwgNzg2OTMsIAorICAgIDEwMDU2MCwgMTAwNTU5LCA3MjMyLCAwLCAxMTkyNTMsIDEyNDk2MywgNzExMCwgNzQ0NjIsIDIwNjYsIDEwNDg5LCA0MjE2NiwgCisgICAgNDM0NjMsIDEwNjU5LCAzNjAwLCA2ODg2MywgNDIyNCwgMTMzNiwgNDE1MTgsIDEyMTMxMSwgMCwgOTE3NTg5LCA5ODM3OTQsIAorICAgIDQxMTM5LCA2NDgyMCwgOTI1MzgsIDEyOTY2LCA0MTEzNCwgMTAwNTUzLCAxMDA1NTYsIDEwMDU1NSwgMTAwNTU4LCAyNzIsIAorICAgIDQyNjMsIDg3OTMsIDk4MzM4NSwgMCwgNDE1MDIsIDEyODEzMywgOTgzLCAxMjU0OSwgMTAwNTYzLCAxMDA1NjIsIDExOTAsIAorICAgIDQxMDksIDEzMzUsIDg0MSwgNTg4OCwgNDEzNTgsIDY0ODYzLCA5NTQ0LCA0MzQ4MSwgMCwgMTIwOTI2LCA3MDAyNywgMjA5OSwgCisgICAgNTEyMCwgMjQwOSwgNzc5OSwgOTgzOTU0LCA3NDQyNCwgOTgzODk2LCAxMjEwNDEsIDQ3MzEsIDkyMjc5LCA2NjYyOSwgCisgICAgMTI4MTI3LCA5MjUyNSwgMTI1NSwgNDE0OSwgOTI0NywgNzQ5NzcsIDk5MTMsIDk4MzgyOCwgMTAxMDI3LCA2NDkxNCwgCisgICAgMTI1MDAyLCA2NTEwMSwgMTEzNzE0LCAxMTY5NCwgOTI0NzUsIDExNjkwLCA1ODM1LCAxMjcwOTYsIDY2NjI1LCAxMDg0MiwgCisgICAgNDEzNTQsIDQyMTIzLCA0MzA5NywgMTE2ODgsIDY2NjM0LCAxMDk0LCAxOTQsIDY0NjkyLCA5MTc5MDAsIDgxODAsIAorICAgIDEyNTA1NSwgOTgzOTEyLCA5OTcyLCA3Mzg2NSwgNDUxOSwgNjExNCwgMTA4OTgsIDQzMDcyLCA5MjQ2NSwgMCwgOTM5NjAsIAorICAgIDk4MzMyNCwgNzQwNTUsIDEwNjk1LCAxMjkwNTgsIDc1NDAsIDAsIDg4MSwgNzg1NywgNjA2NywgNjUxNjQsIDkxNzk0OSwgCisgICAgOTE3ODk3LCAxMjgzMjYsIDEzMzExLCA2ODQwMywgNDE4NTcsIDY0MzIxLCA4MzU5LCA4MzI4NiwgMTI2ODksIDk4MzMxMiwgCisgICAgMTEyNDUsIDEyODEwNSwgOTgzMzE0LCA3MTg1OSwgNjgxODMsIDk4MzQxNSwgMTk0ODI5LCAxMjg3LCA1NDM2LCA5ODMwNjUsIAorICAgIDcxMDk3LCA3NDE0MiwgOTIzMjgsIDc0MTUyLCA3MDIwNSwgNjA1MSwgMTA0OTcsIDY5NjY4LCA4OTg1LCAxMjEwOSwgCisgICAgODI5NjIsIDEyNzM5NywgOTMwNDMsIDEyMTAxMywgMCwgMzY1MiwgMTA1MzcsIDEyMDI4MiwgMTI3NiwgMTIwNDQwLCA2NTQ5LCAKKyAgICAyNzksIDczNzQ1LCAxMjc4MjMsIDEyODY2NCwgODMyNDQsIDE0ODksIDEyMDYyMiwgMCwgMCwgMzg5OSwgMTAwNywgNDIxMjQsIAorICAgIDQzODI4LCA0MjEyMiwgOTIzMzcsIDkyMzY3LCAxMjUxODcsIDExOTg1LCAxMzQ1LCA3ODYwMCwgMTE5ODMyLCA5MTc1NjMsIAorICAgIDg5NTYsIDQzMDgzLCA5NDA1NywgNDIxMzgsIDc4NjEwLCAxMjkxMzEsIDY0MzAsIDc4NjA4LCA3ODYwNCwgNzg2MDUsIAorICAgIDYyODUsIDc4NjAzLCA3ODYxMiwgNzg2MTMsIDY1OTQyLCA0OTIsIDg2ODUsIDEyODQ4MSwgMTIxMjcwLCAwLCA3NTAyNywgCisgICAgNDM3MTIsIDI1ODIsIDExNDcwLCA2NDUzOCwgNzQ0NCwgNzI4NjMsIDc4NjE2LCAyMjk3LCAxMjkzNDEsIDczODM3LCAKKyAgICAxMTk4MjMsIDI1MjcsIDExOTgyNCwgMTk3LCAyNzk5LCA5MjU5NCwgNDE5NDQsIDgzMTUyLCA5OTMzLCA3NDAxMSwgNjY1MTUsIAorICAgIDc2NywgNTUyNCwgNzAyOCwgMTk1MDY1LCA5MjE2OCwgMTE5ODI3LCAxMTk4MTcsIDkyOTUwLCA3ODYzMywgMTA4OTYsIAorICAgIDYzOTEwLCAxNzk5LCAxMjA0OTcsIDY5NzEsIDc0MzM2LCA3MDczMSwgMCwgNjUzNDAsIDExODk3OSwgNDE1NTEsIDIyNjIsIAorICAgIDk0MDE4LCAxMTg4MjMsIDY1MzUzLCAxMDA0NzksIDQ2MzEsIDExODk5NiwgMTk1MDI3LCA2NDA3LCAxMTM3MzcsIDYzMzgsIAorICAgIDQzMjE0LCAxMjcxNjMsIDc1NzAsIDEyMTAxNywgMzE5MiwgMTIwMzMwLCA4NDE0LCA5ODMzODgsIDkzOTgzLCAxOTUwNDMsIAorICAgIDAsIDAsIDkxNjQsIDY2NjEyLCA5Mzk1OSwgMzE3MSwgNjYyMywgNDk2MSwgNjgzOTYsIDg4NiwgNTUyMTYsIDg2NTQsIAorICAgIDc4ODMyLCA5OTkzLCA3NDM5MCwgNjQ2MDMsIDcwMDY2LCA2OTI0MSwgOTU5OSwgNzg2MjksIDQzMDg0LCA3ODYyNywgCisgICAgNzg2MjgsIDc4NjI1LCAyMzk5LCA2OTY5MywgODk5NCwgMTA5NDQsIDQxMjA4LCA5ODM3MTMsIDQxMTY4LCA4MTc4LCAKKyAgICA3NDg1OSwgMzM2NywgOTIzMzQsIDQyNTEwLCA3ODY0MSwgNzg2MzYsIDY4MDQsIDcwNDc1LCAxOTQ3LCA3Mjc3MCwgMCwgCisgICAgOTI2ODEsIDQyNzU5LCAxMTA2OCwgMTcwNSwgOTMzMSwgMCwgNzQ3OTgsIDkxODEsIDY1MzU5LCA3MjcyMiwgODAxNywgCisgICAgMTE5ODMxLCA2NTA5NiwgNjY3MjAsIDY4MjIzLCA0MzQ3NSwgOTE3NTQ4LCA0OTA5LCAxMjEyNiwgMTI3NTQwLCAxMDEwMTUsIAorICAgIDQ5MDQsIDkyOTYxLCA0MzUwMywgMTM2NSwgOTI1MywgNDI3NTcsIDQzNDM2LCA3NDYyLCAxMjc3NzIsIDAsIDAsIDgzMTczLCAKKyAgICA2Njg0NSwgNjQ0MTUsIDEyMDUwMCwgODMxNzIsIDUzOTgsIDEyNTAzNSwgMTI3Mzg2LCA5Mzk1MywgMTI3MzYyLCA5ODM3ODIsIAorICAgIDExOTAxNSwgODMxNzEsIDEyNzAwNywgOTQ3NiwgOTgzMDY2LCAxMjA2OTUsIDEyNzYzLCAxMDA1MjMsIDM2MjksIDEyMDg0NCwgCisgICAgMTMwMDUsIDExMTgxLCAzNjI4LCAxMTk4MzQsIDAsIDkyNTAyLCAzNDY5LCA0MjEwNywgNDIxMTYsIDkxNzU3OCwgNjQ4MDksIAorICAgIDI5MjgsIDQ5MDUsIDk4NTMsIDg1MSwgOTA0MCwgMTIwMzcyLCA2NDY2NSwgNDMwODYsIDkxMTQsIDQzODcwLCA0MjU4MywgCisgICAgOTMxNSwgNDgyMiwgNDkwNiwgMzg1MiwgMjg0NywgMTE5ODIxLCAzMjM2LCAxMTMxNywgMTI1MSwgNzc3NywgNDE4NTIsIAorICAgIDExNDEwLCAxMDk2NCwgMCwgNDMyMjIsIDEyNjQ2LCAxMjAyNjksIDEwMjU5LCA5ODY1LCA2NTgyMSwgNzUwNDYsIDYwMTgsIAorICAgIDY4MjkzLCAxMjUwMTAsIDEyMjc2LCAxMTkxMTAsIDY4MzcyLCAxMjgyNTUsIDkyMjU5LCA3MTg5MywgMTE5ODEzLCAKKyAgICAxMTk4MjgsIDEwNDY3LCA5ODM4MTQsIDI0NDMsIDEwOTE4LCA3ODIxNywgNzc5NDcsIDEwMDEsIDkyNDEsIDE5MjcsIDAsIAorICAgIDEyNDk0MiwgNzM5ODcsIDEyNzg4MiwgNzE4OTUsIDkzMDEyLCA3OTkyLCA3Nzk0MywgNDM5MzksIDEyODY3LCAxMjg2NDksIAorICAgIDgyNjAsIDc3OTQ1LCA3NTE5LCAxMTUwNSwgMTIyNzQsIDg5MDQsIDUxOCwgNjU4NTcsIDEyODM2MSwgMTI4Njc0LCAxMzIwNCwgCisgICAgNDM4NywgODU3LCAxMjEyNTIsIDY1MzY5LCAwLCA5MjMzNiwgNDMxMjUsIDExODQyLCAwLCA3MTA3MiwgMTIxNDYyLCAwLCAKKyAgICA1MTM2LCAxOTY4LCAxMjg5MDYsIDEyNjYyNywgMTMzNywgNjQ5NjcsIDE2MjksIDAsIDc5NiwgNjY1MDYsIDEyODQ0MiwgCisgICAgNzQxMjMsIDEyODc3LCAxMjA2NDksIDQyMzE0LCA0MzM4OCwgNDM4MjYsIDQzOTQ0LCA2MTIwLCA0NzgsIDY1MTUxLCAKKyAgICA2ODEyOCwgMTE5MDQ0LCA0MzA4MiwgNjAxNiwgMCwgNDIyODQsIDcxODk0LCA0Mjc2LCAxMjA2LCAzNjE5LCA0MTYzOCwgCisgICAgNjk2OTEsIDM4NDMsIDEyMDExLCA4ODUzLCAzMzYxLCA4MzE3OSwgNDkwLCAxMDcxNSwgNzU3OCwgNjgzODQsIDkyNzU0LCAKKyAgICA2NTM1MCwgMTA1MzAsIDEyMzQ4LCA4NjUzLCA2ODI0NSwgNDI0MzUsIDYxNTQsIDk1NTEsIDY1MzU0LCA3ODUyMiwgNzg0LCAKKyAgICA0MjM5NywgMzM0LCA3MjczMiwgNDI0MTYsIDY1MzU2LCA2NTI3MywgNDM5MzcsIDY5NjY2LCA0NDQyLCAxMDM2NCwgNDM5MzUsIAorICAgIDc3OCwgNDE2MjYsIDQyNDU1LCA3OTg5LCA3NDA2MywgMzIyNywgNjk5MDcsIDQzOTMyLCAxMTEwMiwgMjkxNSwgMTE1MDIsIAorICAgIDQxMDIyLCA0MTcwMiwgMTAzMDksIDEyNzAzNSwgNzUwMzIsIDEyMDI3MywgNjk3NSwgMTI4NzkzLCA1NDE1LCAxMjE3NiwgCisgICAgMTIwNjUzLCA3NDE5MywgMzQ2MiwgNDM5NDAsIDQyNjI5LCA3ODY5MSwgNzExNzUsIDQzOTQyLCAxMjcyNTYsIDk3NTksIAorICAgIDEyNzI1NSwgNzAwNTcsIDEyMTQ0MiwgODExNCwgNzg2OTgsIDc4Njk3LCA3NDgyMywgNzg2OTUsIDg3MTAsIDQyNDk1LCAKKyAgICAxMTg5NTYsIDcwMTg5LCA0MDUxLCAxMDQ2MCwgNDMzNjQsIDcxMjA2LCAxMzU2LCAxMjE2MSwgNDI3MTMsIDEyODg1NywgCisgICAgMTI3MjY4LCAxNjE5LCA5NzAzLCA0MzE1MiwgNDI0ODksIDQyMTEyLCA2NDQzNiwgMTg3NSwgMTA4MDgsIDQyMTA5LCAKKyAgICAxMjAyODQsIDQxODYwLCA2NDg2MiwgMTMzMDUsIDY0OTA3LCA1Mjg5LCAxMzE0NCwgMTI4NjU4LCA5ODMyMjQsIDU1NzUsIAorICAgIDk2NzUsIDcxMTI5LCA1OTQwLCAyMjYsIDI2NDksIDYzMzYsIDk4MzI3OSwgNjU1OTMsIDQzMjM2LCAzMzgyLCA0MjQ0OSwgCisgICAgNjQ5OCwgMTY1OCwgMTE5MzYsIDc4MjMyLCAxMDA0MDksIDExMjY5LCAxMDE1MSwgNzM3NTksIDQzMTAwLCA2OTg4OCwgCisgICAgNjU1MDgsIDEyOTQxMSwgMCwgMTIxNDUxLCA4OTM1LCA3ODIzNCwgMTI5MzM3LCAxMjA0NTEsIDAsIDYxNiwgNzQ3NTMsIAorICAgIDY1MTc4LCA0Njg0LCA3ODcwMSwgMTE5NjUzLCAyMjM2LCAxMjY1NTEsIDEyNDk5MiwgNjA0OCwgNzQ0NjAsIDQyMTEwLCAKICAgICA3Mzk2NSwgMTA4NzAsIDg1NTcsIDExMDU0LCA2ODY2NCwgNzUwNTEsIDk2ODEsIDQ0NzUsIDY3NDI5LCA0MTE0MiwgMjEwMCwgCi0gICAgMTI1MDI0LCAxMjA3MzEsIDYwMzUsIDczNzk2LCA3NjUxLCA2ODQ2LCA2NDQ0MywgOTgzOTU3LCA5ODMyOTYsIDkxNzk4NywgCisgICAgMTI1MDI0LCAxMjA3MzEsIDYwMzUsIDczNzk2LCA3NjUxLCA2ODQ2LCA2NDQ0MywgOTgzOTU3LCAxOTQ5NDEsIDkxNzk4NywgCiAgICAgMCwgMTE4OTY2LCA3NDE0NCwgNDA5OTcsIDY4NDg4LCAxMDM5MiwgMTAzMjgsIDQwOTk4LCA0MzQ2MiwgNzQ0ODgsIDcxMTgyLCAKLSAgICA5ODAwLCA4OTc5LCAwLCAxMzMwNywgNDEwMDAsIDAsIDUxMTQsIDY0ODcsIDMzODYsIDEyOTA5NCwgMTAzNDQsIDAsIDUxMTUsIAotICAgIDUzOTQsIDQzMjQ2LCA3ODI0MywgNTExMywgNjY1MDUsIDQxMjAwLCAxMjg1ODIsIDQ0MjUsIDE5NDY2OSwgMCwgMCwgCi0gICAgNDMwNzQsIDczNzk5LCAxMjkwNzYsIDc4MTQ3LCA1MTEyLCAxMjE3MywgNzg1NDUsIDEyODc3MSwgNjY4MjQsIDY1MzM4LCAKLSAgICA5ODM2NzYsIDAsIDExOTU4MiwgNDQ3NCwgMTI4OTM2LCA0MzA5MywgNDM5NjQsIDE1ODcsIDAsIDEyNzM3MiwgNjQ0NzUsIAotICAgIDExOTIxNywgMTM2OSwgOTgzNjcyLCA5OTU5LCA3OTI3LCA0Mzk2MywgNDU2MCwgMTIwNzkzLCA2NzgxMSwgOTIyNzcsIAotICAgIDk4MzYyMSwgNjQ5NDgsIDQ0MzAsIDQzOTYxLCA0MjYwMSwgNDUxNCwgNjY0MzQsIDkzOTU1LCA4MTk0LCA2NTQ2MiwgCi0gICAgMTA2MjYsIDEwOTY1LCAxMjA5MDUsIDg4OTMsIDk4MzMwMywgMTI1NDIsIDAsIDY1MzQxLCA2NzcwMywgNjU4MjksIDc5MjUsIAotICAgIDExOTgyMiwgMTA0NzUsIDExMzgyNSwgMTI3MDExLCAxMzUyLCAxMTA2OSwgNzcwNywgMTI3NTYwLCAxMjY0ODYsIDY1Mjc5LCAKLSAgICAxMjcxMDIsIDY4MjA3LCA3NDk1NiwgNzA5OSwgNjA0MCwgNjc2ODEsIDEwMDcxLCA3ODU1NCwgOTMzNiwgNDM3NTAsIAotICAgIDEyMTA3NCwgODg5OSwgNzc5OCwgNjQ0NzQsIDY0MjU5LCA2OTg3MywgNjUxODgsIDc4MjAsIDQzMDE4LCAxMjcwODIsIAotICAgIDEyODg5OCwgNzc0NiwgMTQ5MiwgNzg1NTEsIDEwODg0LCA3NTA3NSwgNjY4NjYsIDUxMjcsIDExMjg1LCA0MjUwMSwgNTQ5NSwgCi0gICAgNDI3MywgNDMwOTUsIDQxNDI2LCAxMDg0OSwgNTczMCwgMjk5OSwgNjM0MiwgNjg2MzYsIDc0MzA0LCAzNzEsIDY0MzczLCAKLSAgICA2MDIzLCAxNjksIDU0OTcsIDExNzA4LCA3NTAyOCwgMTI4NjAzLCA2MzIzLCAxMjkwNjUsIDgyMjQsIDEyODQxNywgODkzOCwgCi0gICAgNjA0MywgMTI3MzgsIDEyMDY3MSwgOTgzMDc2LCA1MzIxLCA2ODY0NSwgMTk0Nzk4LCAxMjAyNTEsIDI1ODksIDc0MzMyLCAKLSAgICAxNjg5LCA3ODAyLCA0NjgzLCA3NDMxOCwgNDI3MDQsIDkyOTQwLCAxMTkwNSwgOTgzNjE1LCAwLCAxMjg1MTYsIDEyODE2MywgCi0gICAgNzQ1MTMsIDYwNDksIDAsIDQwMjcsIDgzNCwgMTE4OTYyLCAxODAzLCA5ODM4MjIsIDE1MDMsIDc4MzM2LCAxMjcxNzMsIAotICAgIDcxMzEyLCA1NzMxLCAxMzgxLCAyMzg3LCAxMjY2MTAsIDcwODA4LCA4Mjg5LCA2NDUyNSwgNjU4MTcsIDI4ODEsIDQzMTQyLCAKLSAgICAwLCA5NjAxLCAyODc5LCA5NjY4LCA5NzY2LCAwLCA1NzI5LCAxMjkxMTAsIDcxMjMwLCA2MDM2LCA2NDg4MSwgNDAyNiwgCi0gICAgOTM2MSwgMTI3MDkxLCAyODg3LCA3MDM4OSwgMzUyNiwgNjI5OCwgMTE5ODUxLCA3Nzg5NywgMTIwMDk1LCA3ODUxOSwgCi0gICAgMTE4OTY0LCA4NTcyLCA2MDIxLCA3Nzg5NiwgMTI4Mjg4LCA3MTE3NCwgNDMxNTUsIDAsIDcxMTk3LCAzMTQ2LCAxMDk1OSwgCi0gICAgOTQ4MywgODMyMTksIDc3ODkzLCAxMDk4MSwgMTY2LCA5MTc4NDEsIDg2MzUsIDkxNzg0MCwgMTA2MjMsIDQwOCwgMTE5MDU4LCAKLSAgICAxMjc1MDcsIDEzMjk4LCAxMjcyNTMsIDc0MjYsIDQxNjQxLCAxMjcxNywgOTgzNzk1LCA3NjA3LCAxMDYzOSwgNDMzOTYsIAotICAgIDEyOTMwMCwgMTE5MDg5LCA0MTY0MywgNzQxMzQsIDk4MzA1NCwgODcxMywgNDE2NDAsIDEwMjIxLCA0MTY0NSwgNjYyOTMsIAotICAgIDY2NDUsIDY0NiwgNjY3MjYsIDY2NzExLCA0MjEyOSwgNjgyNTUsIDc3OTAxLCAzNDcyLCA4Njk3LCAwLCAxMjA5MzYsIAotICAgIDEyMTA2OSwgMCwgMTE4ODU5LCAwLCA1ODA5LCAxOTUwLCAxMTkzNTYsIDkyNDMyLCA2ODMzOSwgMTI4OTQzLCA0MjEzNiwgCi0gICAgMTIxNDQwLCAwLCAwLCAwLCAzMjQ3LCA5MjQwMiwgNjUwMTcsIDEyODc5NCwgNjg0MjgsIDY2NjY4LCAwLCAxMjExMTIsIAotICAgIDEwOTgzLCAwLCAxMjg3ODcsIDAsIDQxNTY3LCAxMTk4NTIsIDAsIDAsIDc4NDQ2LCAxMTk4NTMsIDEyNzkyMiwgMCwgODI4NSwgCi0gICAgMTI2NTE2LCA0NTA5LCAxMjEwNDMsIDY2NDcxLCAxMjIxNiwgMTI4ODA2LCA0MDk4OCwgODMyMjEsIDc0ODA5LCA0MTcyNywgCi0gICAgMCwgNDI4NDgsIDIzOTYsIDEyODA4MywgMTk0ODkyLCA3NDAxOCwgOTE3NTM4LCA2NDk0MCwgNzAyNywgMzg4NiwgMCwgCisgICAgOTgwMCwgODk3OSwgMTE5MTU2LCAxMzMwNywgNDEwMDAsIDAsIDUxMTQsIDY0ODcsIDMzODYsIDcwNzMwLCAxMDM0NCwgCisgICAgMTI1MDMyLCA1MTE1LCA1Mzk0LCA0MzI0NiwgNzgyNDMsIDUxMTMsIDY2NTA1LCA0MTIwMCwgMTI4NTgyLCA0NDI1LCAKKyAgICAxOTQ2NjksIDEwMDQwNSwgMCwgNDMwNzQsIDczNzk5LCAxMjkwNzYsIDc4MTQ3LCA1MTEyLCAxMjE3MywgMzQ0NiwgCisgICAgMTI4NzcxLCA2NjgyNCwgNjUzMzgsIDEyODk2OSwgMCwgMTE5NTgyLCA0NDc0LCAxMjg5MzYsIDQzMDkzLCA2MjgyLCAxNTg3LCAKKyAgICAwLCAxMDA1NTQsIDY0NDc1LCAxMTkyMTcsIDEzNjksIDk4MzY3MiwgOTk1OSwgNzkyNywgNDM5NjMsIDQ1NjAsIDY2OTEwLCAKKyAgICA2NzgxMSwgOTIyNzcsIDEyMDYxNCwgNjQ5NDgsIDQ0MzAsIDQzOTYxLCA0MjYwMSwgNDUxNCwgNjY0MzQsIDkzOTU1LCAKKyAgICA4MTk0LCA2NTQ2MiwgMTA2MjYsIDEwOTY1LCAxMjA5MDUsIDg4OTMsIDk4MzMwMywgMTI1NDIsIDE5NDg1NywgNjUzNDEsIAorICAgIDY3NzAzLCA2NTgyOSwgNzkyNSwgMTE5ODIyLCAxMDQ3NSwgMTEzODI1LCAxMjcwMTEsIDEzNTIsIDExMDY5LCA3NzA3LCAKKyAgICAxMjc1NjAsIDEyNjQ4NiwgNjUyNzksIDEwMDQwNywgNjgyMDcsIDc0OTU2LCA3MDk5LCA2MDQwLCA2NzY4MSwgMTAwNzEsIAorICAgIDc4NTU0LCA5MzM2LCA0Mzc1MCwgMTIxMDc0LCA4ODk5LCA3Nzk4LCA2NDQ3NCwgNjQyNTksIDY5ODczLCA2NTE4OCwgNzgyMCwgCisgICAgNDMwMTgsIDEwMDQxMCwgMTI4ODk4LCA3NzQ2LCAxNDkyLCA3ODU1MSwgMTA4ODQsIDc1MDc1LCA2Njg2NiwgNTEyNywgCisgICAgMTEyODUsIDQyNTAxLCA1NDk1LCA0MjczLCA0MzA5NSwgNDE0MjYsIDEwODQ5LCA1NzMwLCAyOTk5LCA2MzQyLCA2ODYzNiwgCisgICAgNzQzMDQsIDM3MSwgNjQzNzMsIDYwMjMsIDE2OSwgNTQ5NywgMTE3MDgsIDc1MDI4LCAxMjg2MDMsIDYzMjMsIDEyOTA2NSwgCisgICAgODIyNCwgMTI4NDE3LCA4OTM4LCA2MDQzLCAxMjczOCwgMTIwNjcxLCA5ODMwNzYsIDUzMjEsIDY4NjQ1LCA2NTUzLCAKKyAgICAxMjAyNTEsIDI1ODksIDc0MzMyLCAxNjg5LCA3ODAyLCA0NjgzLCA3NDMxOCwgNDI3MDQsIDkyOTQwLCAxMTkwNSwgCisgICAgOTgzNjE1LCAwLCAxMjg1MTYsIDEyNzAxNywgNzQ1MTMsIDYwNDksIDEyODIzOSwgNDAyNywgODM0LCAxMTg5NjIsIDE4MDMsIAorICAgIDEyODEyMCwgMTUwMywgNzI3NjksIDEyNzE3MywgNzEzMTIsIDU3MzEsIDEzODEsIDIzODcsIDEyNjYxMCwgNzA4MDgsIAorICAgIDgyODksIDY0NTI1LCA2NTgxNywgMjg4MSwgNDMxNDIsIDAsIDk2MDEsIDI4NzksIDk2NjgsIDk3NjYsIDAsIDU3MjksIAorICAgIDEyOTExMCwgNzEyMzAsIDYwMzYsIDY0ODgxLCA0MDI2LCA5MzYxLCAxMjcwOTEsIDI4ODcsIDcwMzg5LCAzNTI2LCA2Mjk4LCAKKyAgICAxMTk4NTEsIDc3ODk3LCAxMjAwOTUsIDc4NTE5LCAxMTg5NjQsIDg1NzIsIDYwMjEsIDc3ODk2LCAxMjgyODgsIDcxMTc0LCAKKyAgICA0MzE1NSwgOTgzODE2LCA3MTE5NywgMzE0NiwgMTA5NTksIDk0ODMsIDgzMjE5LCA3Nzg5MywgMTA5ODEsIDE2NiwgCisgICAgOTE3ODQxLCA4NjM1LCAxMjg3MTQsIDEwNjIzLCA0MDgsIDEwMDQ4MCwgMTI3NTA3LCAxMzI5OCwgMTI2NTE4LCA3NDI2LCAKKyAgICA0MTY0MSwgMTI3MTcsIDEyMDY1OCwgNzYwNywgMTA2MzksIDQzMzk2LCAxMjkzMDAsIDExOTA1MywgNDE2NDMsIDc0MTM0LCAKKyAgICA5ODMwNTQsIDg3MTMsIDQxNjQwLCAxMDIyMSwgOTg1MiwgNjYyOTMsIDY2NDUsIDY0NiwgNjY3MjYsIDY2NzExLCA0MjEyOSwgCisgICAgNjgyNTUsIDc3OTAxLCAzNDcyLCA4Njk3LCAwLCAxMjA5MzYsIDEyMTA2OSwgMTI5MTY4LCAxMTg4NTksIDEyNTIwMywgCisgICAgNTgwOSwgMTk1MCwgMTE5MzU2LCA5MjQzMiwgNjgzMzksIDEyODk0MywgNDIxMzYsIDEyMTQ0MCwgMCwgMCwgMCwgMzI0NywgCisgICAgOTI0MDIsIDY1MDE3LCAxMjg3OTQsIDY4NDI4LCA2NjY2OCwgMTk0ODg0LCAxMjExMTIsIDEwOTgzLCA5MTc3NjcsIAorICAgIDEyODcwMCwgMCwgNDE1NjcsIDExOTg1MiwgMCwgMCwgNzg0NDYsIDExOTg1MywgMTI3OTA3LCAwLCA4Mjg1LCAxMjY1MTYsIAorICAgIDQ1MDksIDEyMTA0MywgNjY0NzEsIDEyMjE2LCAxMjg4MDYsIDQwOTg4LCA4MzIyMSwgNzQ4MDksIDQxNzI3LCA5MTc4MjUsIAorICAgIDQyODQ4LCAyMzk2LCAxMjgwODMsIDE5NDg5MiwgNzQwMTgsIDkxNzUzOCwgNjQ5NDAsIDcwMjcsIDM4ODYsIDk4MzI1OSwgCiAgICAgNDI0NTcsIDkyODg4LCA4MzI5OSwgOTk2LCA2ODEyMywgOTQwNTgsIDQyNDksIDkyNDEwLCA2OTY1MCwgMTE3MDcsIDgyMjIsIAotICAgIDczODI1LCA3OTM5LCA3MTIxMywgOTI0NjAsIDEyNzgwMSwgMTIxNDA4LCAxMjgzNTksIDg1MzQsIDY5ODUzLCA0MDk4MywgMCwgCi0gICAgMTIxNDIxLCAwLCA3MjAxLCAxMjU2MSwgMTIwODY2LCA0MjM3MSwgMTI1NTgsIDE1NDAsIDkxNzU0OSwgMTAwNTIsIDQwOTgyLCAKLSAgICAxMTk4NDEsIDAsIDE0ODgsIDcxMTc3LCAwLCAxOTQ4MzEsIDkxNzU1OSwgMTI4NDAxLCAwLCAxNTYzLCAxMjgwMzQsIDk2MTksIAotICAgIDEyMDg0MCwgOTE3OTA1LCAxMjA5NTQsIDEyNzg3MiwgNzEzNjMsIDM1NjAsIDc3OTcsIDYwNzAsIDEwMDA2LCAxMjg5MjIsIAotICAgIDI5MjIsIDYwODIsIDcwMTQ3LCA2NTAwOSwgOTgzOTQyLCAxMjU2NywgNjY3MTIsIDAsIDQxNDEyLCAxMjgxMzEsIDExOTU5MSwgCi0gICAgMzYwNywgOTIwMCwgMTAwNDYsIDk2MTIsIDQyMTUzLCA4MjE4LCA5NDg1LCAwLCAyMDMyLCA3ODM1NCwgODM0NjIsIAotICAgIDExOTEzMSwgMCwgMCwgNjc4MjYsIDQzMDg1LCA2MDU3LCA1MDgsIDkzOTY4LCA5Mjk4OSwgNjc5NjgsIDAsIDkyMTk4LCAwLCAKLSAgICAxMjg4MzEsIDYzOCwgNjA4MywgMTE5MDcyLCAxMjQ5NTAsIDAsIDIzMDUsIDc4MzQ4LCA2ODA5NiwgOTE3NzcyLCA2MDU2LCAKLSAgICA2NjU5LCA2Nzk2OSwgOTgzMjkwLCA2MDg1LCAwLCAwLCAzOTE1LCA0MTYzNCwgMCwgNDE2MzksIDYzOTEyLCAxMTk0MSwgCi0gICAgOTgzNzgzLCA0MDI4LCAxNzg3LCA0MjE4MCwgNDMwOTYsIDQzNzUzLCAzMjQ5LCAxNzY4LCA5Mzk4MiwgMTIzMjgsIDUwMSwgCi0gICAgOTM5ODUsIDEwNjAxLCAwLCA1ODMsIDAsIDQxOTc3LCAwLCA2NjAwNCwgNjY0MTYsIDY1MDUsIDc0MDEwLCA5ODMyNTAsIAotICAgIDEzMDY0LCA1NTI2NywgMTE5MTEzLCA2NTAwLCA1NTI2LCA2NTA0OSwgMCwgMTI5OTAsIDAsIDkyMzc2LCAxMjc0NSwgOTY3OCwgCi0gICAgMTIxMTA4LCAxMjA1ODcsIDk4NjksIDgzMTUwLCAxNzcxLCAxMjg5NjUsIDg5MzYsIDkyOTY0LCAwLCA0MjA4LCA3ODM0MSwgCi0gICAgNzg1NjcsIDc4MzQyLCA2Nzc0MiwgOTgzMjA4LCA3NDEwMSwgMTI4NjA1LCAxMTc2MiwgMCwgNzAwOTYsIDY4MzUsIDY4MDEwLCAKLSAgICA2NjQ3NSwgMTIwMjYwLCA1MDI3LCA3ODE3MiwgMTI4ODc4LCAxMTk4MzAsIDUwNjksIDczNzM2LCA1MDI4LCA5ODk3LCAKLSAgICA5Mjc3NCwgNzM3MzksIDUwMjYsIDk4MzI1NSwgNjg2MzksIDYzMzEsIDEwMDc5LCA4OTMxLCAwLCAxNDE1LCA4ODY2LCAKLSAgICA0MTkwMSwgNzQ3OTAsIDc4MTM4LCAxMTkzNjEsIDk4MzU2NCwgNDMxMDYsIDUwMjksIDY1MzA5LCAxNTgwLCAzNTk4LCAKLSAgICA2ODQyNCwgNDEwNzAsIDc3OTAzLCA3NjU4LCAzNDQwLCA3ODIxNSwgMTU2MiwgMTI4NjU2LCAxMjcxNzUsIDExOTM1OCwgCi0gICAgMTcxNiwgOTgzNjc5LCAxMDYwMCwgNzg1NTgsIDYyMCwgNDEwMDEsIDYwMjgsIDcwNDQ1LCA0Mjg5MiwgMCwgNzExMTYsIAotICAgIDUwMjQsIDc0OTQ1LCA0MTAwMywgNjgxMzcsIDUwMjUsIDY5ODkyLCA5ODMyMDksIDc1MDM5LCAxMTg4ODUsIDEyNzk1NiwgCisgICAgNzM4MjUsIDc5MzksIDcxMjEzLCA5MjQ2MCwgNzI3NDcsIDY3MTMxLCAxMjgzNTksIDg1MzQsIDY5ODUzLCA0MDk4MywgMCwgCisgICAgMTIxNDIxLCAwLCA3MjAxLCAxMjU2MSwgMTIwODY2LCA0MjM3MSwgMTE4NDQsIDE1NDAsIDE5NDgyNywgMTAwNTIsIDQwOTgyLCAKKyAgICAxMTk4NDEsIDAsIDE0ODgsIDcxMTc3LCAwLCAxOTQ4MzEsIDkxNzU1OSwgMTI4NDAxLCAxOTQ5MjAsIDE1NjMsIDEyODAzNCwgCisgICAgOTYxOSwgMTIwODQwLCAxMjk0MTYsIDEyMDk1NCwgMTIxNDYwLCA3MTM2MywgMzU2MCwgNzc5NywgNjA3MCwgMTAwMDYsIAorICAgIDEyODkyMiwgMjkyMiwgNjA4MiwgNzAxNDcsIDY1MDA5LCA5ODM5NDIsIDEyNTY3LCA2NjcxMiwgMCwgNDE0MTIsIDc4NjUxLCAKKyAgICAxMTk1OTEsIDM2MDcsIDkyMDAsIDEwMDQ2LCA5NjEyLCA0MjE1MywgODIxOCwgOTQ4NSwgNjY3NjQsIDIwMzIsIDc4MzU0LCAKKyAgICA4MzQ2MiwgMTE5MTMxLCAwLCAwLCA2NzgyNiwgNDMwODUsIDYwNTcsIDUwOCwgOTM5NjgsIDkyOTg5LCA2Nzk2OCwgCisgICAgOTE3OTQxLCA5MjE5OCwgMCwgMTI4ODMxLCA2MzgsIDYwODMsIDExOTA3MiwgMTI0OTUwLCA3MDE0NCwgMjMwNSwgNzgzNDgsIAorICAgIDY4MDk2LCA5MTc3NzIsIDYwNTYsIDY2NTksIDY3OTY5LCA5ODMyOTAsIDYwODUsIDAsIDAsIDM5MTUsIDQxNjM0LCAKKyAgICAxMjgyMjcsIDQxNjM5LCA2MzkxMiwgMTE5NDEsIDk4Mzc4MywgNDAyOCwgMTc4NywgNDIxODAsIDQzMDk2LCA0Mzc1MywgCisgICAgMzI0OSwgMTc2OCwgOTM5ODIsIDEyMzI4LCA1MDEsIDkzOTg1LCAxMDYwMSwgOTgzMjk0LCA1ODMsIDExOTM1MiwgNDE5NzcsIAorICAgIDAsIDY2MDA0LCA2NjQxNiwgNjUwNSwgNzQwMTAsIDkxNzgzMywgMTMwNjQsIDU1MjY3LCAxMTkxMTMsIDY1MDAsIDU1MjYsIAorICAgIDY1MDQ5LCAxMjgwMjgsIDEyOTkwLCA5ODM5MDEsIDkyMzc2LCAxMjc0NSwgOTY3OCwgMTIxMTA4LCAxMjA1ODcsIDk4NjksIAorICAgIDgzMTUwLCAxNzcxLCAxMjg5NjUsIDg5MzYsIDkyOTY0LCAxMjUyNzMsIDQyMDgsIDc4MzQxLCA3ODU2NywgNzgzNDIsIAorICAgIDY3NzQyLCA5ODMyMDgsIDc0MTAxLCAxMjg2MDUsIDExNzYyLCAxMjkzMTcsIDcwMDk2LCA2ODM1LCA2ODAxMCwgNjY0NzUsIAorICAgIDEyMDI2MCwgNTAyNywgNzgxNzIsIDEyODg3OCwgMTE5ODMwLCA1MDY5LCA3MzczNiwgNTAyOCwgOTg5NywgOTI3NzQsIAorICAgIDczNzM5LCA1MDI2LCA5ODMyNTUsIDY4NjM5LCA2MzMxLCAxMDA3OSwgODkzMSwgMCwgMTQxNSwgODg2NiwgNDE5MDEsIAorICAgIDc0NzkwLCA3ODEzOCwgMTE5MzYxLCA5ODM1NjQsIDQzMTA2LCA1MDI5LCA2NTMwOSwgMTU4MCwgMzU5OCwgNjg0MjQsIAorICAgIDQxMDcwLCA3NzkwMywgNzY1OCwgMzQ0MCwgNzgyMTUsIDE1NjIsIDEyODY1NiwgMTI3MTc1LCAxMTkzNTgsIDE3MTYsIAorICAgIDk4MzY3OSwgMTA2MDAsIDc4NTU4LCA2MjAsIDQxMDAxLCA2MDI4LCA3MDQ0NSwgNDI4OTIsIDk4MzMxMywgNzExMTYsIAorICAgIDUwMjQsIDc0OTQ1LCA0MTAwMywgNjgxMzcsIDUwMjUsIDcyOTcsIDkxNzgyNCwgNzUwMzksIDExODg4NSwgMTI3OTU2LCAKICAgICA2NTU1NywgMCwgNzQ1NDEsIDEyODkyNCwgMTE1OTksIDEyODIwOSwgMTE2MDIsIDYyNDMsIDExNTc0LCAxMTU4MSwgMTE1OTcsIAogICAgIDExNTk4LCA2MjUzLCA2MTA1LCAxMTU4NCwgNzAyNzMsIDExNTY5LCA2NTI3NSwgODkwNiwgNDM5NDUsIDU3NTUsIDI2MzYsIAogICAgIDcxMjAzLCAxMDgxNSwgMTE2MTksIDIzMDEsIDQxNTQwLCA3ODE1LCAxMTYxNiwgNjk3OSwgMTIwODAsIDc3MjEsIDExNjA0LCAKLSAgICA3ODY5LCAxNTkyLCAwLCA0MjE1MiwgNzg0OTgsIDQxMDQ4LCA5MTc3NjMsIDgyOSwgMCwgOTI0MDYsIDE5OTUwLCA2Njg4NiwgCi0gICAgNjQxMzEsIDY2MTYsIDAsIDExODg3NSwgMTA5NTMsIDM5MSwgMCwgNjk3ODUsIDQ4MiwgNDIyOTYsIDExNTg4LCAwLCAKLSAgICA0MzYwNiwgNzExODUsIDY4Mzk3LCA2NjM3MCwgNzQyODIsIDQyMzM1LCA2OTc4NiwgNzI0MjEsIDgyOTk4LCA3NTM4LCAKLSAgICA1MzE1LCA4MzM2NywgNDI0OTEsIDkyOTAxLCA0MjA2MSwgMTI4MDAyLCA0NTc2LCAwLCA2ODQxNywgNDM4MDksIDQyNzcsIDAsIAotICAgIDM1NjMsIDY0NDcyLCA0MjMzOCwgMzY4LCA0MjA1OCwgMzk2MCwgMTEwNDMsIDExMzM3LCA3ODIwOSwgMTIwMjQ0LCA2Mzk4OSwgCi0gICAgMzk1OCwgMTIxMzIsIDE4NDksIDAsIDk5MjEsIDQyNDUxLCA0MjUzLCA0MTE0NywgNDIwNjQsIDExOTU5LCA0MjQwNCwgCi0gICAgNDExNjAsIDEyMTQ4MSwgMzYxOCwgNzgzMzgsIDE5NDkyNCwgNDMzMDAsIDUxNTYsIDkyNjI5LCA3MDM1MCwgOTI5LCA2ODI3LCAKLSAgICA0MjAzNSwgNDI0MzcsIDE1NTUsIDAsIDg2OTEsIDY2NDM1LCAyMjE1LCA0MTY2MiwgOTQwMTAsIDExOTI2MiwgMCwgCi0gICAgMTI4ODI0LCA5Mzk1MiwgNDU3OCwgNjQ1MTMsIDQxNjY0LCA5ODM3MzQsIDQyNTc4LCA3MTA0OSwgNDE2NjEsIDc4MzUxLCAKLSAgICA0MzI2NywgOTM1NiwgMCwgMTk0ODgwLCA5ODM0MDEsIDEyODYsIDEwMTY2LCA5ODMxMTcsIDAsIDY0NzA3LCAxMjg5MjUsIAotICAgIDQyNDc2LCA3NzMwLCAxMTE1NiwgMTI4NTIyLCA0MjQ4MywgMTI5MDgzLCA3NDk0MCwgNDIzMjQsIDQyMjkxLCAxMDAyMCwgCi0gICAgNDMzNTksIDAsIDY2NDEsIDUyNSwgNDE2MjcsIDkxNzkyMywgODc2MywgMTI4MzA0LCA0MTYyOCwgNTMzLCAxMTkzMSwgCi0gICAgNjUyMjUsIDgzMjEsIDQyNTA0LCA0MjU4MSwgMCwgNjkxNSwgNDIzMTAsIDQzNzcsIDg1NTksIDEyODMyMSwgODU4NywgCi0gICAgMTIxMzE4LCAxMzE5MywgNjQzNTAsIDExNjY2LCA4Njc5LCA0MTkyNCwgMTU3NiwgNzczNSwgOTIzOTgsIDAsIDczODQwLCAKLSAgICA4MzE1MywgMTEzNzQsIDc4MDQzLCAxMDg4OSwgNDM0NjEsIDc3NTcsIDQyNDYyLCAxMjAyMjYsIDEwMDI5LCA2NjQ5MywgCi0gICAgMjcxOCwgNDE2OCwgNDM5MDQsIDEzMzA4LCAxMjAxMTIsIDAsIDExNzksIDQ0NDAsIDQzOTAyLCA3Nzk0OCwgMzYzLCAKLSAgICAxMTAxNSwgNDM5MDMsIDc3OTQ0LCA0Mzg1NywgODMwNDksIDY2NjkyLCAxMjA4MjYsIDAsIDY2NDkyLCA2NTkzLCA2NDYyNSwgCi0gICAgNDE5NjMsIDkyMTc3LCAxMTkzMjksIDAsIDEwMDEzLCA2NDQzNCwgNzUwMTAsIDEyNzA5NSwgOTQ5MiwgMTE3ODIsIDY0MzgyLCAKLSAgICAxMjgzMywgNzc4MzAsIDAsIDEyOTcsIDQxNjMwLCA2MzAsIDEyMDk2MCwgOTgzOTIzLCAxMjA3NzQsIDcwMTY1LCAxMDQzLCAKLSAgICA0MzY1MiwgNjYyMjMsIDEwMDkwLCAwLCAxMjQ5NDUsIDMxMywgMTIxNDgzLCA0MTg4MSwgMTk0NjU4LCA0MjMxMSwgNzQ0NSwgCi0gICAgNDM5MDYsIDU3NTAsIDEwNzU5LCA5NDE5LCA1NTIyMiwgOTQwNSwgMTEyNjgsIDQyOTE5LCA5Mzk4LCA4NTI2LCA5Mzk5LCAKLSAgICA5NDIyLCA0Mzg5NCwgNjY0OTUsIDY5OTkwLCA5ODM4ODUsIDkyOTkwLCA0MTcxOCwgMTA3MDcsIDE2MDMsIDk4MzcwMywgCi0gICAgMTE5MDAzLCAwLCA2MzEsIDc3OTUyLCA2OTcwMywgMTMxNjEsIDY1MjcyLCA3MTA2NywgMTA1NDYsIDc0MjEwLCA3ODEwMSwgCi0gICAgMTE2MDAsIDc3OTYxLCAyNzk3LCA0MzkyNCwgNDI0MjcsIDMwNiwgNzE0LCAzMDU4LCA0MjM4MSwgNzc5NjIsIDEyNzA4MCwgCi0gICAgMTIzNTEsIDQyMzk1LCAwLCAxMTYwNywgMTI3NTI4LCAxMTE5OCwgNjY4MjEsIDc3OTY3LCA5MTU3LCA3Mzc2NSwgNjYzNjQsIAotICAgIDQyNDMzLCA3Nzk2NCwgNzYwMywgMTI4MDMsIDE4MCwgNDIxNDEsIDAsIDEyMDYxMiwgNjY0OTQsIDEyNjc0LCA4MjQ0LCAKLSAgICAzNjIsIDkyNDM5LCA0Mzg5MCwgODAzNywgNDM3NzcsIDExNTM1LCAxMjY1MzksIDQzODkzLCA1MTg1LCA3MTY1LCA1NTIxLCAKLSAgICAxMDMzNCwgMjA5MywgNzEzMjksIDEwMzAyLCAxMjUxMzEsIDEwMTA0LCAxMDI3LCA1MTgxLCAxMjg0MzUsIDUxMTcsIAotICAgIDEwNTIzLCAxNDQ2LCA0MjMyMCwgNjg0NSwgOTkxLCA1MTg5LCA0MjQ3MiwgNDE2NDcsIDEyMDEwNSwgMTcyMiwgNTU4MSwgCi0gICAgNDI4OTgsIDM0MDUsIDAsIDE5NDY0NCwgNTUyMywgNDM5MTUsIDQyNjIwLCA5MjQ0NywgNzQ5NDMsIDk1NDksIDAsIDEwNTQ5LCAKLSAgICA0MzkyMywgOTY2MSwgNDI5MzMsIDc0ODg0LCA3NzkxMCwgNzgwNjgsIDQzOTIxLCAwLCA3MTE4NCwgOTgzMDcwLCA0MTk5MSwgCi0gICAgOTgzODkzLCAwLCA3NjMwLCA5ODQ2LCA3Njg0LCAxMDM1MCwgMTI4NDUzLCAxMTc0LCA3Nzk4MSwgNDI3MzMsIDc3OTc4LCAKLSAgICA3Nzk4MCwgNjY0ODUsIDc3OTc3LCA0MjI3NywgNzc5NzQsIDQyNDU2LCA0MzkwOSwgNzQ0MzgsIDEyMzMwLCAxMjgyNzIsIDAsIAotICAgIDQyNDE3LCA0MjM4MywgNjY2MzAsIDQxMzQ0LCA2MjkzLCAwLCA2NjI1MiwgNDM5MDgsIDc0NDQzLCAxMjc4OTQsIDEwMjA5LCAKLSAgICA4MzEzLCA0MTk1LCA3NDQzNSwgMTMxNiwgNjY2OTAsIDc1MDcyLCA2MzMyLCA2NDg5NCwgOTgzMTU2LCA2NTg3MSwgNjcyNTAsIAotICAgIDE3MzYsIDk4MzY4NCwgMzkwMSwgMTIyMjgsIDEyMDE1MSwgNjUyMDAsIDMzODMsIDEwNDQ2LCA3ODI0MSwgNjkzLCA5MTMwLCAKLSAgICAzMTQsIDY0MTQ5LCA0MjQyMCwgMTE5NDksIDEyNzIwMCwgMTIwMTUyLCAxMTAyNiwgMTIwNTE2LCA1MzMyLCA2OTQwLCAKLSAgICA2NDE1NCwgMTI2MzUsIDEyNDk4MCwgNDI3MDYsIDE3NTEsIDI3MywgODE2NSwgMTMxNjYsIDgzMzA3LCA3ODg0MCwgNzEzNjgsIAotICAgIDEyODI0LCA0MzkxMSwgNDUyOCwgNTMyMCwgNjMwMSwgNDM2NjIsIDYxMzMsIDkzMzksIDk0NjMsIDQyMzQ2LCAxMDkyMiwgCi0gICAgNjQ1NjAsIDM3NTcsIDAsIDAsIDc0MzAyLCA2NTg2OSwgNzM3NjAsIDI1NjksIDc0OTc2LCAyMzI2LCA2NTc0MCwgMjU2NSwgCi0gICAgNDI0NTksIDc1OTYsIDc5MjEsIDk4Mzg2OCwgNzM4NjIsIDEyNzk4MSwgNDE4NDgsIDI1NjcsIDY2MDA2LCA5MjYyMiwgCi0gICAgNDA0NCwgOTI2NDYsIDQzOTUzLCAxMjIzMywgOTgzODcxLCAxMDIzLCA0NzQsIDE5NDk0MCwgMTE5ODE4LCAwLCAwLCAKKyAgICA3ODY5LCAxNTkyLCAwLCA0MjE1MiwgNzg0OTgsIDQxMDQ4LCAxMjY0NjYsIDgyOSwgMCwgOTI0MDYsIDE5OTUwLCA2Njg4NiwgCisgICAgNjQxMzEsIDY2MTYsIDEyMDc5NiwgMTE4ODc1LCAxMDk1MywgMzkxLCA5ODMxMDMsIDY5Nzg1LCA0ODIsIDQyMjk2LCAKKyAgICAxMTU4OCwgMTI4NTkxLCA0MzYwNiwgNzExODUsIDY4Mzk3LCA2NjM3MCwgNzQyODIsIDQyMzM1LCA2OTc4NiwgMTIwNTAsIAorICAgIDgyOTk4LCA3NTM4LCA1MzE1LCA4MzM2NywgNDI0OTEsIDkyOTAxLCA0MjA2MSwgMTI4MDAyLCA0NTc2LCAwLCA2ODQxNywgCisgICAgNDM4MDksIDQyNzcsIDAsIDM1NjMsIDY0NDcyLCA0MjMzOCwgMzY4LCA0MjA1OCwgMzk2MCwgMTEwNDMsIDExMzM3LCAKKyAgICA3ODIwOSwgMTIwMjQ0LCA2Mzk4OSwgMzk1OCwgMTIxMzIsIDE4NDksIDEyNzMzOCwgOTkyMSwgNDI0NTEsIDQyNTMsIAorICAgIDQxMTQ3LCA0MjA2NCwgMTE5NTksIDQyNDA0LCA0MTE2MCwgMTIxNDgxLCAzNjE4LCA3ODMzOCwgOTM5NTYsIDQzMzAwLCAKKyAgICA1MTU2LCA5MjYyOSwgNzAzNTAsIDkyOSwgNjgyNywgNDIwMzUsIDQyNDM3LCAxNTU1LCA2Nzg0NywgODY5MSwgNjY0MzUsIAorICAgIDIyMTUsIDQxNjYyLCA5NDAxMCwgMTE5MjYyLCAwLCAxMjg4MjQsIDkzOTUyLCA0NTc4LCA2NDUxMywgNDE2NjQsIDk4MzczNCwgCisgICAgNDI1NzgsIDcxMDQ5LCA0MTY2MSwgNzgzNTEsIDQzMjY3LCA5MzU2LCAwLCAxOTQ4ODAsIDk4MzQwMSwgMTI4NiwgMTAxNjYsIAorICAgIDk4MzExNywgMCwgNjQ3MDcsIDEyODkyNSwgNDI0NzYsIDc3MzAsIDExMTU2LCAxMjg1MjIsIDQyNDgzLCAxMjkwODMsIAorICAgIDc0OTQwLCA0MjMyNCwgNDIyOTEsIDEwMDIwLCA0MzM1OSwgNzI4MjcsIDY2NDEsIDUyNSwgNDE2MjcsIDkxNzkyMywgODc2MywgCisgICAgMTI4MzA0LCA0MTYyOCwgNTMzLCAxMTkzMSwgNjUyMjUsIDgzMjEsIDQyNTA0LCA0MjU4MSwgMCwgNjkxNSwgNDIzMTAsIAorICAgIDQzNzcsIDg1NTksIDEyODMyMSwgODU4NywgMTIxMzE4LCAxMzE5MywgNjQzNTAsIDExNjY2LCA4Njc5LCA0MTkyNCwgMTU3NiwgCisgICAgNzczNSwgOTIzOTgsIDAsIDczODQwLCA4MzE1MywgMTEzNzQsIDc4MDQzLCAxMDg4OSwgNDM0NjEsIDc3NTcsIDQyNDYyLCAKKyAgICAxMjAyMjYsIDEwMDI5LCA2NjQ5MywgMjcxOCwgNDE2OCwgNDM5MDQsIDEzMzA4LCAxMjAxMTIsIDAsIDExNzksIDQ0NDAsIAorICAgIDQzOTAyLCA3Nzk0OCwgMzYzLCAxMTAxNSwgNDM5MDMsIDc3OTQ0LCA0Mzg1NywgODMwNDksIDY2NjkyLCAxMjA4MjYsIDAsIAorICAgIDY2NDkyLCA2NTkzLCA2NDYyNSwgNDE5NjMsIDkyMTc3LCAxMTkzMjksIDExMzc5NCwgMTAwMTMsIDY0NDM0LCA3NTAxMCwgCisgICAgMTI3MDk1LCA5NDkyLCAxMTc4MiwgOTIxMiwgMTI4MzMsIDc3ODMwLCA3MDY5MiwgMTI5NywgNDE2MzAsIDYzMCwgMTIwOTYwLCAKKyAgICA5ODM5MjMsIDEyMDc3NCwgNzAxNjUsIDEwNDMsIDQzNjUyLCA2NjIyMywgMTAwOTAsIDEyNTI0OSwgMTI0OTQ1LCAzMTMsIAorICAgIDEyMTQ4MywgNDE4ODEsIDE5NDU3NSwgNDIzMTEsIDc0NDUsIDQzOTA2LCA1NzUwLCAxMDc1OSwgOTQxOSwgNTUyMjIsIAorICAgIDk0MDUsIDExMjY4LCA0MjkxOSwgOTM5OCwgODUyNiwgOTM5OSwgOTQyMiwgNDM4OTQsIDY2NDk1LCA2OTk5MCwgOTgzODg1LCAKKyAgICA5Mjk5MCwgNDE3MTgsIDEwNzA3LCAxNjAzLCA5ODM3MDMsIDExOTAwMywgMTAxMDYxLCA2MzEsIDc3OTUyLCA2OTcwMywgCisgICAgMTMxNjEsIDY1MjcyLCA3MTA2NywgMTA1NDYsIDc0MjEwLCA3ODEwMSwgMTE2MDAsIDc3OTYxLCAyNzk3LCA0MzkyNCwgCisgICAgNDI0MjcsIDMwNiwgNzE0LCAzMDU4LCA0MjM4MSwgNzc5NjIsIDEyNzA4MCwgMTIzNTEsIDQyMzk1LCAwLCAxMTYwNywgCisgICAgMTI3NTI4LCAxMTE5OCwgNjY4MjEsIDc3OTY3LCA5MTU3LCA3Mzc2NSwgNjYzNjQsIDQyNDMzLCA3Nzk2NCwgNzYwMywgCisgICAgMTI4MDMsIDE4MCwgNDIxNDEsIDAsIDEyMDYxMiwgNjY0OTQsIDEyNjc0LCA4MjQ0LCAzNjIsIDkyNDM5LCA0Mzg5MCwgCisgICAgODAzNywgNDM3NzcsIDExNTM1LCAxMjY1MzksIDQzODkzLCA1MTg1LCA3MTY1LCA1NTIxLCAxMDMzNCwgMjA5MywgNzEzMjksIAorICAgIDEwMzAyLCAxMjUxMzEsIDEwMTA0LCAxMDI3LCA1MTgxLCAxMjg0MzUsIDUxMTcsIDEwNTIzLCAxNDQ2LCA0MjMyMCwgNjg0NSwgCisgICAgOTkxLCA1MTg5LCA0MjQ3MiwgNDE2NDcsIDEyMDEwNSwgMTcyMiwgNTU4MSwgNDI4OTgsIDM0MDUsIDAsIDE5NDY0NCwgCisgICAgNTUyMywgNDM5MTUsIDQyNjIwLCA5MjQ0NywgNzQ5NDMsIDk1NDksIDAsIDEwNTQ5LCA0MzkyMywgOTY2MSwgNDI5MzMsIAorICAgIDc0ODg0LCA3NzkxMCwgNzgwNjgsIDQzOTIxLCAwLCA3MTE4NCwgOTgzMDcwLCA0MTk5MSwgMTI5MzY5LCAwLCA3NjMwLCAKKyAgICA5ODQ2LCA3Njg0LCAxMDM1MCwgMTI4NDUzLCAxMTc0LCA3Nzk4MSwgNDI3MzMsIDc3OTc4LCA3Nzk4MCwgNjY0ODUsIAorICAgIDc3OTc3LCA0MjI3NywgNzc5NzQsIDQyNDU2LCA0MzkwOSwgNzQ0MzgsIDEyMzMwLCAxMjgyNzIsIDAsIDQyNDE3LCA0MjM4MywgCisgICAgNjY2MzAsIDM0MDcsIDYyOTMsIDAsIDY2MjUyLCA0MzkwOCwgNzQ0NDMsIDEyNzg5NCwgMTAyMDksIDgzMTMsIDQxOTUsIAorICAgIDc0NDM1LCAxMzE2LCA2NjY5MCwgNzUwNzIsIDYzMzIsIDY0ODk0LCA5ODMxNTYsIDY1ODcxLCA2NzI1MCwgMTczNiwgCisgICAgMTIxMDA2LCAzOTAxLCAxMjIyOCwgMTIwMTUxLCA2NTIwMCwgMzM4MywgMTA0NDYsIDc4MjQxLCA2OTMsIDkxMzAsIDMxNCwgCisgICAgNjQxNDksIDQyNDIwLCAxMTk0OSwgMTI3MjAwLCAxMjAxNTIsIDExMDI2LCAxMjA1MTYsIDUzMzIsIDY5NDAsIDY0MTU0LCAKKyAgICAxMjYzNSwgMTI0OTgwLCA0MjcwNiwgMTc1MSwgMjczLCA4MTY1LCAxMzE2NiwgODMzMDcsIDc4ODQwLCA3MTM2OCwgMTI4MjQsIAorICAgIDQzOTExLCA0NTI4LCA1MzIwLCA2MzAxLCA0MzY2MiwgNjEzMywgOTMzOSwgOTQ2MywgNDIzNDYsIDEwOTIyLCA2NDU2MCwgCisgICAgMzc1NywgMCwgOTQwNTksIDc0MzAyLCA2NTg2OSwgNzM3NjAsIDI1NjksIDc0OTc2LCAyMzI2LCA2NTc0MCwgMjU2NSwgCisgICAgNDI0NTksIDc1OTYsIDc5MjEsIDEyNjU2NywgNzM4NjIsIDEyNzk4MSwgNDE4NDgsIDI1NjcsIDY2MDA2LCA5MjYyMiwgCisgICAgNDA0NCwgOTI2NDYsIDQzOTUzLCAxMjIzMywgMTEzODE0LCAxMDIzLCA0NzQsIDEyNTI3MiwgMTE5ODE4LCA5ODM3NDQsIDAsIAogICAgIDQyNDg3LCA2NTU1NiwgMTIxMTY4LCAxMjc4NjYsIDQyMjk1LCAxMjgyMDMsIDEyMTQ3NCwgNzEzMjIsIDkyNTE4LCAyMjIyLCAKLSAgICA2NjQ5OSwgMCwgNTQxNywgMTIyNzUsIDEwODk1LCAwLCAyNzQsIDAsIDE4NTgsIDk4MzQ1NSwgMCwgNTUyNTEsIDEwMTE4LCAKLSAgICAzMTMzLCAxMjc3NzEsIDcxODU3LCAxMjEyMDEsIDk2MTAsIDgwNjgsIDgxOTcsIDkxNzU0NSwgNjk5LCAwLCA0MTY2NSwgCi0gICAgNTg2OCwgMTI4NzEwLCA5MjY5NSwgNDIxODIsIDc1ODEsIDE5OTQwLCA0MzY2OCwgNDE2NjcsIDEyODA1NywgMCwgMTkyMywgCi0gICAgNjU1ODMsIDY1ODAyLCA5Mzk3MCwgNjQ1OTcsIDQzNDQ0LCA3ODEyOSwgNjg3NTEsIDAsIDY0NjQsIDcwMzYsIDI5OTYsIAotICAgIDE5MzcsIDk4Mzc1MSwgNjg0ODEsIDQxODM1LCA0MDQ3LCA0MTg0MiwgMCwgNjQxMDcsIDc3OTY1LCAxMTk4MzcsIDExMDE3LCAKLSAgICAxMjA2MDEsIDAsIDI5MywgNzc5NjYsIDkyMTY5LCA2NDc5MSwgNDE4MjcsIDQyNDY2LCA0MzQyMiwgMTA1NzksIDg1NjAsIAotICAgIDcxMzUwLCA2NTQxMywgNzc5NjMsIDQ4MDMsIDEyOTY0LCAxNzM5LCAxOTQxLCAzOTAwLCAxMjg5NjcsIDE3MTMsIDc3OTY5LCAKLSAgICAxMjEyOTIsIDczOTU3LCAxMTQwNywgNDI0NDEsIDQxOTcxLCA2Mjk3LCAxMjAwOTgsIDY0MTA1LCAxMjA1NjUsIDQyNDgxLCAKLSAgICAxMTcxNiwgNjY0NzMsIDcxNzksIDQyMjg5LCAxMjUwOTUsIDY0MTAzLCA5NjksIDAsIDkzNTIsIDcxNDgxLCA2MTY1LCAKLSAgICA2NDEwMCwgOTE3ODE5LCA2NjMyLCA3Mzg2MSwgNDI0MDIsIDc0MzI3LCA3ODA2LCAxMTM3NjIsIDg5MTQsIDY2OTA4LCAKLSAgICAxMjQ5NTQsIDMxODMsIDE0MzUsIDY0ODc2LCAyOTY5LCA2MDQ2LCA2NDQ0MSwgNjIwOCwgNjc4NDksIDU3NDYsIDY2NDA4LCAKLSAgICAwLCA2NDQxNiwgNDI0MjIsIDgzNTA2LCA5ODMwNDYsIDcwODIsIDczNzc1LCAzMzgsIDUwNTksIDEyMTM2OSwgODM1MjQsIAotICAgIDQyMzI4LCAxMDc2NywgMTI4ODYyLCA4MTE1LCA4MzQ1NCwgNzQ3NTgsIDAsIDgyMjcsIDIwNzMsIDEyMTgsIDkxNzc5MCwgCi0gICAgOTgzMjMwLCA2NTg0OCwgOTI4ODQsIDgzNTE3LCA2OTg2MywgMTI4MzI4LCAxMjY5ODcsIDQ0ODYsIDEyODA4MiwgOTE3Nzk2LCAKLSAgICAwLCAxMDkyNSwgMCwgODM1MTUsIDgzNTA3LCAxMjQ5NTIsIDQyMzA5LCAxMDI1NywgNjUxOTEsIDEwMjczLCA3NjY4LCAKLSAgICAxMDMwNSwgNDI0NjEsIDc0ODgyLCA0MjM0OSwgODgzMiwgNzgwNTEsIDY0MTI3LCAxMDY0NCwgNDI2NjIsIDc4ODI4LCAKLSAgICA0MjI3OCwgNzQ0NTEsIDEyNjk4OCwgNjk4NzQsIDc3OTQsIDExOTIxNCwgNDI0MjksIDYzNzcsIDQyMzE2LCAxMTkwMjYsIAotICAgIDM2NjksIDM5NjgsIDQyNDY4LCA3MTMxOSwgNjk2NTgsIDAsIDY1NDAyLCAxMTk1ODEsIDE5NDk3MywgMTI4NzQ3LCA2NDkzMywgCi0gICAgMTk0NjI3LCA0MTk2MCwgNjY5OSwgNDI5MDMsIDEyODc1NSwgMTI1MDEzLCA2ODIzLCA0MjM5MSwgMTU4OCwgNDM1MDIsIAotICAgIDg0MDksIDc4MjIzLCAxOTk2NywgNjUzOTgsIDc4NywgNzEzMTUsIDEyODMzNSwgMTI3NzQ0LCA2MTE1LCAyMDc4LCA0MTY1NCwgCi0gICAgNDI0ODAsIDkxNzk0OSwgOTI2NTAsIDQxNjU1LCA2NTQwMSwgNDM5NzUsIDcyNDI3LCAwLCAxMTM4MTYsIDY0NCwgNjU1MDAsIAotICAgIDQxNjU3LCAxMDc3OCwgMzY1OSwgOTUzMywgMTg0LCAxNTUzLCAxMzEwNywgNjU0ODQsIDY5NjQ4LCAxMDUwMiwgNjYyOTYsIAotICAgIDAsIDAsIDQxNTU0LCAwLCA4MjIwLCAxMjg0MzIsIDQxNTU3LCAwLCAxMjg5MzgsIDExMDcwLCAxMTkyMjEsIDUxNTcsIAotICAgIDQwMjAsIDczODU4LCA0MTU1NSwgOTUxNCwgNjQ4MTgsIDY1MTAzLCA2NDY0MSwgNjQzMDMsIDc4MTMxLCA3NTIwLCA3Mzg4OCwgCi0gICAgNzQzNzcsIDExMDI5LCA2NjY1MSwgOTgzMDY4LCAxMjg0OTIsIDExODkzMCwgNjQ1MjcsIDEyMTM5NSwgNzg3NywgMTI3MjMsIAotICAgIDk4Mzc5OCwgNjg3NzYsIDEyMDA5NiwgNzQ2MDIsIDk5NTUsIDExOTU1NywgNDA1NSwgNDI4MTcsIDAsIDY1MjEyLCAxMTcxNSwgCi0gICAgMTIxOTAsIDEyMzE5LCA3ODYzMCwgMCwgNzg2MzEsIDk1MDIsIDY1NDI3LCAxMjUwNDgsIDY1NDI0LCAxMjYwNywgMTIwOTY2LCAKLSAgICA5NzM0LCA2NTQyNSwgMCwgMTIxNDMxLCAxMjczNTcsIDc0ODkwLCA3ODgzNiwgMTAxMTIsIDEwODI3LCAxOTQ2MzUsIDk4NjYsIAotICAgIDc0NTI3LCA2NjY3NSwgMTE4ODY3LCA4NjI1LCA2NDM0NiwgMTEyOTAsIDEwNDc3LCA2NzczOCwgODYzNiwgOTgzOTI3LCAKLSAgICA4MzE1LCA2NTQ0NCwgOTgzNzkzLCAxOTUwMTEsIDc0NTk1LCA2MTUyLCA3ODgyMCwgNzM5NDcsIDY2MjksIDEyNTA1NiwgCi0gICAgMTIwMTcxLCAwLCA3NDU4OSwgNDM5OTMsIDEyODM0NiwgNjk3OTAsIDY0NDM1LCA2NDk1NSwgNDM2OTAsIDExMDQ2LCAKLSAgICAxMTQ5MCwgNDI3MzAsIDQ0ODUsIDcxMTI2LCAxMjgxOTQsIDY0OTI2LCAwLCA5ODMxMzMsIDQzODMwLCA1ODY5LCAxMjQzNywgCi0gICAgNDI3MjgsIDAsIDcwNDAsIDM1ODgsIDAsIDEyODI1LCAxMjExNTgsIDAsIDEyNzI1LCA3NDA5MiwgMTI3MTA2LCA3ODYzNCwgCisgICAgNjY0OTksIDEyOTMzNiwgNTQxNywgMTIyNzUsIDEwODk1LCAwLCAyNzQsIDk4MzIyNiwgMTg1OCwgOTgzNDU1LCAwLCAKKyAgICA1NTI1MSwgMTAxMTgsIDMxMzMsIDEyNjQ5OCwgNzE4NTcsIDEyMTIwMSwgOTYxMCwgODA2OCwgODE5NywgOTE3NTQ1LCA2OTksIAorICAgIDAsIDQxNjY1LCA1ODY4LCAxMjg3MTAsIDkyNjk1LCA0MjE4MiwgNzU4MSwgMTk5NDAsIDQzNjY4LCA0MTY2NywgMTI4MDU3LCAKKyAgICAwLCAxOTIzLCA2NTU4MywgNjU4MDIsIDkzOTcwLCA2NDU5NywgNDM0NDQsIDc4MTI5LCA2ODc1MSwgOTE3ODM2LCA2NDY0LCAKKyAgICA3MDM2LCAyOTk2LCAxOTM3LCAxMjcwNTAsIDY4NDgxLCA0MTgzNSwgNDA0NywgNDE4NDIsIDAsIDY0MTA3LCA3Nzk2NSwgCisgICAgMTE5ODM3LCAxMTAxNywgMTIwNjAxLCA5ODMxNjksIDI5MywgNzc5NjYsIDkyMTY5LCA2NDc5MSwgNDE4MjcsIDQyNDY2LCAKKyAgICA0MzQyMiwgMTA1NzksIDg1NjAsIDcxMzUwLCA2NTQxMywgNzc5NjMsIDQ4MDMsIDEyOTY0LCAxNzM5LCAxOTQxLCAzOTAwLCAKKyAgICAxMjg5NjcsIDE3MTMsIDc3OTY5LCA5NDAxNywgNzM5NTcsIDExNDA3LCA0MjQ0MSwgNDE5NzEsIDYyOTcsIDEyMDA5OCwgCisgICAgNjQxMDUsIDEyMDU2NSwgNDI0ODEsIDExNzE2LCA2NjQ3MywgNzE3OSwgNDIyODksIDEyNTA5NSwgNjQxMDMsIDk2OSwgMCwgCisgICAgOTM1MiwgNzE0ODEsIDYxNjUsIDY0MTAwLCA5MTc4MTksIDY2MzIsIDcyODI4LCA0MjQwMiwgNzQzMjcsIDc4MDYsIAorICAgIDExMzc2MiwgODkxNCwgNjY5MDgsIDEyNDk1NCwgMzE4MywgMTQzNSwgNjQ4NzYsIDI5NjksIDYwNDYsIDY0NDQxLCA2MjA4LCAKKyAgICA2Nzg0OSwgNTc0NiwgNjY0MDgsIDEyNzQwMiwgNjQ0MTYsIDQyNDIyLCA4MzUwNiwgOTgzMDQ2LCA3MDgyLCA3Mzc3NSwgCisgICAgMzM4LCA1MDU5LCAxMjEzNjksIDgzNTI0LCA0MjMyOCwgMTA3NjcsIDEyODg2MiwgODExNSwgODM0NTQsIDc0NzU4LCAwLCAKKyAgICA4MjI3LCAyMDczLCAxMjE4LCA5MTc3OTAsIDk4MzIzMCwgNjU4NDgsIDkyODg0LCA4MzUxNywgNjk4NjMsIDEyODMyOCwgCisgICAgMTI2OTg3LCA0NDg2LCAxMTk5NzMsIDkxNzc5NiwgMCwgMTA5MjUsIDAsIDgzNTE1LCA4MzUwNywgMTI0OTUyLCA0MjMwOSwgCisgICAgMTAyNTcsIDY1MTkxLCAxMDI3MywgNzY2OCwgMTAzMDUsIDQyNDYxLCA3NDg4MiwgNDIzNDksIDg4MzIsIDc4MDUxLCAKKyAgICA2NDEyNywgMTA2NDQsIDQyNjYyLCA3ODgyOCwgNDIyNzgsIDc0NDUxLCAxMjY5ODgsIDY5ODc0LCA3Nzk0LCAxMTkyMTQsIAorICAgIDQyNDI5LCA2Mzc3LCA0MjMxNiwgMTE5MDI2LCAzNjY5LCAzOTY4LCA0MjQ2OCwgNzEzMTksIDY5NjU4LCAxMjgxNzAsIAorICAgIDY1NDAyLCAxMTk1ODEsIDE5NDk3MywgMTI4NzQ3LCA2NDkzMywgMTk0NjI3LCA0MTk2MCwgNjY5OSwgNDI5MDMsIDEyODc1NSwgCisgICAgMTI1MDEzLCA2ODIzLCA0MjM5MSwgMTU4OCwgNDM1MDIsIDg0MDksIDc4MjIzLCAxOTk2NywgNjUzOTgsIDc4NywgNzEzMTUsIAorICAgIDEyMTE0NSwgMTI3NzQ0LCA2MTE1LCAyMDc4LCA0MTY1NCwgNDI0ODAsIDEyOTAzMSwgOTI2NTAsIDQxNjU1LCA2NTQwMSwgCisgICAgNDM5NzUsIDcyNDI3LCAwLCAxMTM4MTYsIDY0NCwgNjU1MDAsIDQxNjU3LCAxMDc3OCwgMzY1OSwgOTUzMywgMTg0LCAxNTUzLCAKKyAgICAxMzEwNywgNjU0ODQsIDY5NjQ4LCAxMDUwMiwgNjYyOTYsIDAsIDAsIDQxNTU0LCAwLCA4MjIwLCAxMjg0MzIsIDQxNTU3LCAKKyAgICA5ODM4ODIsIDEyODkzOCwgMTEwNzAsIDExOTIyMSwgNTE1NywgNDAyMCwgNzM4NTgsIDQxNTU1LCA5NTE0LCA2NDgxOCwgCisgICAgNjUxMDMsIDY0NjQxLCA2NDMwMywgNzgxMzEsIDc1MjAsIDczODg4LCA3NDM3NywgMTEwMjksIDY2NjUxLCAxMjczNDYsIAorICAgIDEyODQ5MiwgMTE4OTMwLCA2NDUyNywgMTIxMzk1LCA3ODc3LCAxMjcyMywgOTgzNzk4LCA2ODc3NiwgMTIwMDk2LCA3Mzk1NCwgCisgICAgOTk1NSwgMTE5NTU3LCA0MDU1LCA0MjgxNywgMCwgNjUyMTIsIDExNzE1LCAxMjE5MCwgMTIzMTksIDc4NjMwLCA3MTI3MCwgCisgICAgNzg2MzEsIDk1MDIsIDY1NDI3LCAxMjUwNDgsIDY1NDI0LCAxMjYwNywgMTIwOTY2LCA5NzM0LCA2NTQyNSwgOTIyMDcsIAorICAgIDc4ODM0LCAxMjczNTcsIDc0ODkwLCA3MjgyMiwgMzQ0OCwgMTA4MjcsIDE5NDYzNSwgOTg2NiwgNzQ1MjcsIDY2Njc1LCAKKyAgICAxMTg4NjcsIDg2MjUsIDY0MzQ2LCAxMTI5MCwgMTA0NzcsIDY3NzM4LCA4NjM2LCA5ODM5MjcsIDgzMTUsIDY1NDQ0LCAKKyAgICA5ODM3OTMsIDE5NTAxMSwgNzQ1OTUsIDYxNTIsIDc4ODIwLCA3Mzk0NywgNjYyOSwgMTI1MDU2LCAxMjAxNzEsIDAsIAorICAgIDc0NTg5LCA0Mzk5MywgMTI4MzQ2LCA2OTc5MCwgNjQ0MzUsIDY0OTU1LCA0MzY5MCwgMTEwNDYsIDExNDkwLCA0MjczMCwgCisgICAgNDQ4NSwgNzExMjYsIDEyNjU4OCwgNjQ5MjYsIDEyMDE2OCwgOTgzMTMzLCA0MzgzMCwgNTg2OSwgMTI0MzcsIDQyNzI4LCAwLCAKKyAgICA3MDQwLCAzNTg4LCA2Mzc5NywgMTI4MjUsIDEyMTE1OCwgNzI4NjQsIDEyNzI1LCA3NDA5MiwgMTI3MTA2LCA3ODYzNCwgCiAgICAgMjIzLCA3ODYzNSwgNjk2NzUsIDEyMDExOSwgNDI0NDQsIDEyODQ0OSwgNjQ0OTksIDY1MjQ1LCAxMjkxMDQsIDExNzEsIAogICAgIDEyODgwMiwgNjk3MTcsIDEyMDExMywgMTgwNSwgODc3MiwgNDM4MjAsIDAsIDk5MzAsIDY1MjQ3LCA3ODYxOSwgNzQ5NTQsIAogICAgIDIzMzgsIDEyMDAzMiwgMTE4ODUzLCAwLCA0MjY3NiwgMCwgNjQ4MDAsIDEzMDkyLCAxMTE4NSwgNjgxMjYsIDEyMTMsIAogICAgIDEyODQxOSwgNjQwNzUsIDc5NywgNjQwNzQsIDg3MzQsIDQyMTIsIDgzMDA1LCA2NDM4NywgNDExNSwgNzEzMzEsIDUwMDUsIAogICAgIDY0MDcwLCA2NDA3MywgMTA2NzksIDgzMDAwLCA3Nzk1NCwgOTQwMiwgNjQyNzYsIDQyNiwgODMzNTgsIDgzMDEwLCA4MjUxLCAKLSAgICAxMDEzNiwgNjU0MzYsIDAsIDIxMjAsIDQzMzAyLCAxMjI0LCAwLCA2NTU3NiwgNzA3OTUsIDEwNzAxLCAxNzY0LCAzMTAxLCAKLSAgICAxMjc4MTUsIDEyODU4LCAxMjAxNTksIDEyMDEwMSwgMTEzNzMsIDYzNzgsIDcxMDkzLCAxMjAxMDMsIDg2NjMsIDkzMTIsIAotICAgIDQxNjQ0LCA0NTM5LCAyMTI5LCA3MDc4NSwgOTIyMiwgMTIxNDc5LCAxMTg5MDcsIDQyNTksIDkwOTIsIDc0NTY3LCA0MTk2MSwgCi0gICAgMTI4NTE1LCAxMjcyNCwgNjYzNTcsIDQyMzMxLCA2NDkzNSwgMCwgMCwgMTI5MywgNzk0NywgMjEzMiwgOTgzNzY3LCAKLSAgICA3MTg1OCwgNzI0NDAsIDI0NTQsIDQyNzE3LCAzNjEzLCAxMjg4MzcsIDcxMTE3LCAwLCA2NTg4OCwgODgxNiwgMTA5NzgsIAotICAgIDEwODQwLCAwLCAxMDY2OCwgMTEzNzIzLCA0MzA4NywgMTI1OTUsIDEyMDMwNCwgOTgzMTE0LCA4ODIyLCAwLCAxMTU3LCAKLSAgICA2NDkwMywgODYzOCwgMTI3MjY1LCA5MTc4ODYsIDEyNzkwNSwgMCwgNjk4NDgsIDgyMzUsIDEyMDMxNiwgNDQwNSwgMTAwODYsIAotICAgIDEyMDI0NywgMTExMjgsIDY5MjE2LCAxMjEwNjUsIDY1NDMwLCA3MTMyMSwgNjA3OSwgNjgxNywgMTA3NjQsIDEyMDMxNCwgCi0gICAgNjQyOTEsIDEyMDMxNSwgOTk4LCAxMjAzMTIsIDExMDYyLCAxMzE3LCA2NDMyNywgMTU1OCwgMTk0NTcyLCAxOTkxLCA3ODgyLCAKLSAgICA0MjI1NCwgMTI4OTU0LCA0MTcwMCwgNTMwLCAwLCAxMDQyOCwgMTE5MzM1LCAxMjAwMiwgMTE5MzM2LCA1NzQyLCA0MzA3NiwgCi0gICAgNDY5MiwgNjQ2MzAsIDQxODIzLCA0MDA3LCA1MDA0LCA3NDAzMywgNzg5NiwgNzUxLCA2NTk1LCA2NTk2LCAxMjAzMjUsIAotICAgIDY2MzczLCA5ODMyNDksIDEyODc0NiwgNjQ5MDgsIDkyNjkxLCA2MzExLCA5MzAxOSwgMTIwMDQsIDExOTE5MiwgMTIwNDksIAotICAgIDQzMTA4LCAxMjAzMjYsIDcxMDgzLCA0MTcwNSwgOTIxODgsIDY1OTgsIDEyMTI5OCwgNjU5OSwgNjY4MjIsIDkzMDMxLCAKLSAgICA0MjE0OCwgMTE4ODI1LCA2NjAyNywgMTIxMDU1LCA2NTk3LCA5NDEyLCA4MzQwLCAxMTgyNCwgNjQ3NDUsIDIyODEsIAotICAgIDY5OTA0LCAxMjg0OTUsIDE5ODgsIDU0MDcsIDY3ODY1LCAyNDMwLCA0MTY3OCwgOTMwNTksIDgzMTE0LCAyMzM2LCAKLSAgICA5ODM5MDMsIDAsIDY3MTY5LCAxMjA0NDIsIDEyNzA5MiwgMTkyMSwgMTA5NDcsIDE5OTI3LCA3MDM5MCwgNjU0MDYsIAotICAgIDk4MzQ2NCwgMTk5MTMsIDQyODQsIDEzMjE3LCAwLCA0Mzc4OSwgMTI4NDEsIDkyMjksIDEwOTU2LCA0MjI4NSwgNDE2NzQsIAotICAgIDE5OTY0LCA0MTY3OSwgNjUwODQsIDM1MjEsIDEyNDk1NywgNTc3NCwgODMyNSwgNjk4NjQsIDY1NDAzLCA5ODMwODksIAotICAgIDE4NTQsIDEwNzk0LCA5MzA1NCwgNjc2NjAsIDY5ODQ2LCAxOTQ3NjUsIDc4MzU5LCA1MjgwLCAwLCA0MzQ0LCAxMjkwNSwgCi0gICAgNjU0MzMsIDYwNzYsIDY0NzkzLCA0MTYxMCwgNzY4LCAxMjA3NCwgNDQyLCAwLCA2ODE2MiwgNjQwODEsIDEyOTM0LCAKLSAgICA0MTY4MiwgNjU0MzIsIDQxNjkzLCAwLCA2MDcxLCA2NTQzNCwgMTI3NDY3LCA0ODA0LCA0MDUzLCAwLCAxMjc0NjksIAotICAgIDE5NDY1MywgNDE2OTYsIDQ2NywgNjk4MjMsIDEyNzQ2MywgNjk3OTcsIDEyMTQwMywgMTIxMjk0LCA4NDIxLCAxMjc0NzIsIAotICAgIDY5NjgyLCA0MzcwNSwgNTAyLCA3NTAyOSwgNjU0MzEsIDExOTA1NiwgNjk5NTQsIDEyMDQzLCAxMzAzLCAzMTYsIDczNjQsIAotICAgIDIwMjksIDIxMzYsIDExOTI0NiwgMTE1MzMsIDY0MzY1LCA0MzQ4MCwgOTI2MzksIDQ4NjAsIDcwMzcyLCAxMjc4NzcsIAotICAgIDQyNDg4LCA3MDMzOSwgOTU4MywgMTI4ODQ5LCA1NTQ2LCA4MDE5LCA3Mzg1NiwgOTgzODQwLCAxMjQ5NjAsIDEyMDgzOSwgCi0gICAgNTU0NCwgMjM1NSwgMTIxNTAsIDY1NzI1LCA1NTQzLCA3NTAzNCwgNjM3NTEsIDEyMTM3LCA1NTQ4LCA3Nzk4NSwgMCwgCi0gICAgNjU3MjcsIDY4Mzg4LCA2NTcyNiwgNjA3NywgMTI4MzUyLCA2NTQ1MiwgMCwgMTEzMDEsIDExMjE0LCA2NTk1MiwgNzgwMTAsIAotICAgIDk4NzQsIDc4MDA3LCA5ODMxMTUsIDEzMTksIDMwNTAsIDY1NDEwLCA2NzM5OSwgOTI2MDYsIDc4MDE2LCA3ODAxNywgCi0gICAgNDI4MzAsIDQzOTk2LCA2NjcxNiwgODMwNTAsIDQ2OTEsIDkyMjQyLCA5MzQ1LCA2MjEsIDgzNTEyLCAxMjgyMjIsIDAsIAotICAgIDY1NDExLCAwLCA0MTE4MiwgNzM4ODEsIDY1NDA4LCA3Mzg5OSwgNzgwMjQsIDk0NzQsIDEwNTQ1LCAxMTkxMTgsIDEwODg3LCAKLSAgICAzNzg2LCA2NTQwOSwgODg5NCwgNDMxNzksIDcxMDQyLCA3OTIzLCAzNzE2LCA5MjM2MywgOTk5NiwgODUwOCwgMTI3Nzk0LCAKLSAgICA3MDEyLCA4MTk1LCAxMjc4MzQsIDk1NjYsIDAsIDM3MjIsIDk4MzM3NCwgNDE3MDcsIDg0OTMsIDU0NSwgOTU3NSwgNDEzNzksIAotICAgIDEwMDUwLCAxMjcxOCwgNjk4NTQsIDg4NTksIDY4MjAsIDc0MzQ1LCA2NTExMCwgMTIwNzQwLCAxMjg5NzgsIDU1MjgyLCAKLSAgICA5MTE5LCAyNzg3LCA3OTIwLCA3MDA5MSwgNDAyMSwgMjAxMiwgNzk4NSwgMCwgMTE5NjYzLCA5MTc3OTIsIDAsIDc4MDIxLCAKLSAgICA3ODAyMiwgNDEwLCA3ODAyMCwgMTgwMiwgNzgwMTgsIDc0MTA3LCA3NDg5NSwgNDE2NTksIDQxNjcxLCAxODI3LCAwLCAKLSAgICA2NDM5NiwgMTAxMjYsIDEyMTE2LCA0MTY3MywgMTIwMzcwLCAxMTQyMiwgNzE4NDYsIDEyMDM3MywgMzg2MCwgMTIwMzY3LCAKLSAgICA2ODQxMiwgNDEzNDUsIDEyMDM2MiwgMTIwMzYzLCAxMTc0OCwgNDIxNTgsIDc5NDEsIDExMDc2LCA4NzQ5LCAxMjAzNjEsIAotICAgIDIxMDQsIDY0ODU4LCAzNjEsIDEyMDM1NywgODQ1LCA5MjE3NCwgNDE1NjAsIDExOTcwLCA0NTYyLCAxMjg0NzMsIDI5MjYsIAotICAgIDY4NDk1LCA0NTY5LCA3NDEzMCwgMTI4NjU5LCA0MzQ4NywgMTk0NjMwLCA2MTEsIDc0MTI5LCA2NDg3MSwgMTE4ODkxLCAKLSAgICA2NTYyOSwgMCwgMTk0ODU4LCA3NDg1NCwgMCwgNzA0NjYsIDY3MzkyLCA2NjM4NSwgNzE0MzksIDYyOTEsIDAsIDY4NDg3LCAKLSAgICA0MTY2OSwgNzA5NCwgMTIxMDUxLCAwLCAxMjA5OTksIDc0MDU0LCAxMjc3NTQsIDEyODkxNywgMCwgODM5LCAxMjEzMTUsIAotICAgIDc2OTUsIDg3NjksIDY1MjQ2LCA0ODI5LCA2Nzc1NiwgNDg1OSwgNjQ0NjcsIDAsIDgzNTI1LCAxMTg5OTgsIDcyMDYsIAotICAgIDExOTYzNiwgNjY0NywgNDM5ODYsIDgzNTE4LCA2OTc2NiwgMTk0NjY0LCA2NDc2NCwgNDIxMCwgMTI4MzAwLCAxMjc5MzYsIAotICAgIDgwNCwgODM1MjAsIDAsIDEyMjk4LCA3MDM0NCwgNjY2NTMsIDEyNjk4MywgNjQ5MjQsIDEwMDkxLCA2NzIwMCwgOTQ2OCwgCisgICAgMTAxMzYsIDY1NDM2LCAxMDA4NjIsIDIxMjAsIDQzMzAyLCAxMjI0LCAwLCA2NTU3NiwgNzA3OTUsIDEwNzAxLCAxNzY0LCAKKyAgICAzMTAxLCAxMjUxOTIsIDEyODU4LCA3NDc2NywgMTIwMTAxLCAxMTM3MywgNjM3OCwgNzEwOTMsIDEyMDEwMywgODY2MywgCisgICAgOTMxMiwgNDE2NDQsIDQ1MzksIDIxMjksIDcwNzg1LCA5MjIyLCAxMjE0NzksIDExODkwNywgNDI1OSwgOTA5MiwgNzQ1NjcsIAorICAgIDQxOTYxLCAxMjEzNjEsIDEyNzI0LCA2NjM1NywgNDIzMzEsIDY0OTM1LCA3Mjg2NywgMTIwNTgyLCAxMjkzLCA3OTQ3LCAKKyAgICAyMTMyLCA5ODM3NjcsIDcxODU4LCA3MjQ0MCwgMjQ1NCwgNDI3MTcsIDM2MTMsIDEyODgzNywgNzExMTcsIDAsIDY1ODg4LCAKKyAgICA4ODE2LCAxMDk3OCwgMTA4NDAsIDAsIDEwNjY4LCA3MjgyNiwgNDMwODcsIDEyNTk1LCAxMjAzMDQsIDk4MzExNCwgODgyMiwgCisgICAgMCwgMTE1NywgNjQ5MDMsIDg2MzgsIDEyNzI2NSwgMTI5MTA2LCAxMjA2NjksIDEwMDM5OSwgNjk4NDgsIDgyMzUsIAorICAgIDEyMDMxNiwgNDQwNSwgMTAwODYsIDEyMDI0NywgMTExMjgsIDY5MjE2LCAxMjEwNjUsIDY1NDMwLCA3MTMyMSwgNjA3OSwgCisgICAgNjgxNywgMTA3NjQsIDEyMDMxNCwgNjQyOTEsIDEyMDMxNSwgOTk4LCAxMjAzMTIsIDExMDYyLCAxMzE3LCA2NDMyNywgCisgICAgMTU1OCwgMTk0NTcyLCAxOTkxLCA3ODgyLCA0MjI1NCwgMTI4OTU0LCA0MTcwMCwgNTMwLCAwLCAxMDQyOCwgMTE5MzM1LCAKKyAgICAxMjAwMiwgMTE5MzM2LCA1NzQyLCA0MzA3NiwgNDY5MiwgNjQ2MzAsIDQxODIzLCA0MDA3LCA1MDA0LCA3NDAzMywgNzg5NiwgCisgICAgNzUxLCA2NTk1LCA2NTk2LCAxMjAzMjUsIDY2MzczLCAxMjkwNjYsIDEyODc0NiwgNjQ5MDgsIDkyNjkxLCA2MzExLCAKKyAgICA5MzAxOSwgMTIwMDQsIDExOTE5MiwgMTIwNDksIDQzMTA4LCAxMjAzMjYsIDcxMDgzLCA0MTcwNSwgOTIxODgsIDY1OTgsIAorICAgIDEyMTI5OCwgNjU5OSwgNjY4MjIsIDkzMDMxLCA0MjE0OCwgMTE4ODI1LCA2NjAyNywgMTIxMDU1LCA2NTk3LCA5NDEyLCAKKyAgICA4MzQwLCAxMTgyNCwgNjQ3NDUsIDIyODEsIDY5OTA0LCAxMjg0OTUsIDE5ODgsIDU0MDcsIDY3ODY1LCAyNDMwLCA0MTY3OCwgCisgICAgOTMwNTksIDgzMTE0LCAyMzM2LCA5ODM5MDMsIDAsIDY3MTY5LCAxMjA0NDIsIDEyNzA5MiwgMTkyMSwgMTA5NDcsIDE5OTI3LCAKKyAgICA3MDM5MCwgNjU0MDYsIDk4MzQ2NCwgMTk5MTMsIDQyODQsIDEzMjE3LCAwLCA0Mzc4OSwgMTI4NDEsIDkyMjksIDEwOTU2LCAKKyAgICA0MjI4NSwgNDE2NzQsIDE5OTY0LCA0MTY3OSwgNjUwODQsIDM1MjEsIDEyNDk1NywgNTc3NCwgODMyNSwgNjk4NjQsIAorICAgIDY1NDAzLCA5ODMwODksIDE4NTQsIDEwNzk0LCA5MzA1NCwgNjc2NjAsIDY5ODQ2LCAxOTQ3NjUsIDc4MzU5LCA1MjgwLCAwLCAKKyAgICA0MzQ0LCAxMjkwNSwgNjU0MzMsIDYwNzYsIDY0NzkzLCA0MTYxMCwgNzY4LCAxMjA3NCwgNDQyLCAwLCA2ODE2MiwgNjQwODEsIAorICAgIDEyOTM0LCA0MTY4MiwgNjU0MzIsIDQxNjkzLCA5ODM0MzQsIDYwNzEsIDY1NDM0LCAxMTkwMDgsIDQ4MDQsIDQwNTMsIAorICAgIDEyMDIzNywgMTI3NDY5LCAxOTQ2NTMsIDQxNjk2LCA0NjcsIDY5ODIzLCAxMjc0NjMsIDY5Nzk3LCAxMjAwNDMsIDEyMTI5NCwgCisgICAgODQyMSwgMTI3NDcyLCA2OTY4MiwgNDM3MDUsIDUwMiwgNzUwMjksIDY1NDMxLCAxMTkwNTYsIDY5OTU0LCAxMjA0MywgCisgICAgMTMwMywgMzE2LCA3MzY0LCAyMDI5LCAyMTM2LCAxMTkyNDYsIDExNTMzLCA2NDM2NSwgNDM0ODAsIDkyNjM5LCA0ODYwLCAKKyAgICA3MDM3MiwgMTI3ODc3LCA0MjQ4OCwgNzAzMzksIDk1ODMsIDEyODg0OSwgNTU0NiwgODAxOSwgNzM4NTYsIDEyODE5NCwgCisgICAgMTI0OTYwLCAxMjA4MzksIDU1NDQsIDIzNTUsIDEyMTUwLCA2NTcyNSwgNTU0MywgNzUwMzQsIDYzNzUxLCAxMjEzNywgCisgICAgNTU0OCwgNzc5ODUsIDk4MzU1NSwgMTAwMDcsIDY4Mzg4LCA2NTcyNiwgNjA3NywgMTI4MzUyLCA2NTQ1MiwgMTAwMzkxLCAKKyAgICAxMTMwMSwgMTEyMTQsIDY1OTUyLCA3ODAxMCwgOTg3NCwgNzgwMDcsIDE5NDczMiwgMTMxOSwgMzA1MCwgNjU0MTAsIAorICAgIDY3Mzk5LCA5MjYwNiwgNzgwMTYsIDc4MDE3LCA0MjgzMCwgNDM5OTYsIDY2NzE2LCA4MzA1MCwgNDY5MSwgOTIyNDIsIAorICAgIDkzNDUsIDYyMSwgODM1MTIsIDEyODIyMiwgMTIyODg5LCA2NTQxMSwgOTE3NTQxLCA0MTE4MiwgNzM4ODEsIDY1NDA4LCAKKyAgICA3Mzg5OSwgNzgwMjQsIDk0NzQsIDEwNTQ1LCAxMTkxMTgsIDEwODg3LCAzNzg2LCA2NTQwOSwgODg5NCwgNDMxNzksIAorICAgIDcxMDQyLCA3OTIzLCAzNzE2LCA5MjM2MywgOTk5NiwgODUwOCwgMTI3Nzk0LCA3MDEyLCA4MTk1LCAxMjc4MzQsIDk1NjYsIAorICAgIDExOTg2NywgMzcyMiwgOTgzMzc0LCA0MTcwNywgODQ5MywgNTQ1LCA5NTc1LCA0MTM3OSwgMTAwNTAsIDEyNzE4LCA2OTg1NCwgCisgICAgODg1OSwgNjgyMCwgNzQzNDUsIDY1MTEwLCAxMjA3NDAsIDEyODk3OCwgNTUyODIsIDkxMTksIDI3ODcsIDc5MjAsIDcwMDkxLCAKKyAgICA0MDIxLCAyMDEyLCA3OTg1LCA3ODA5MywgMTE5NjYzLCA5MTc3OTIsIDk4Mzk1MSwgNzgwMjEsIDc4MDIyLCA0MTAsIAorICAgIDc4MDIwLCAxODAyLCA3ODAxOCwgNzQxMDcsIDc0ODk1LCA0MTY1OSwgNDE2NzEsIDE4MjcsIDAsIDY0Mzk2LCAxMDEyNiwgCisgICAgMTIxMTYsIDQxNjczLCA2ODUyNCwgMTE0MjIsIDcxODQ2LCAxMjAzNzMsIDM4NjAsIDEyMDM2NywgNjg0MTIsIDQxMzQ1LCAKKyAgICAxMjAzNjIsIDEyMDM2MywgMTE3NDgsIDQyMTU4LCA3OTQxLCAxMTA3NiwgODc0OSwgMTIwMzYxLCAyMTA0LCA2NDg1OCwgCisgICAgMzYxLCAxMjAzNTcsIDg0NSwgOTIxNzQsIDQxNTYwLCAxMTk3MCwgNDU2MiwgMTI4NDczLCAyOTI2LCA2ODQ5NSwgNDU2OSwgCisgICAgNzQxMzAsIDEyODY1OSwgNDM0ODcsIDE5NDYzMCwgNjExLCA3NDEyOSwgNjQ4NzEsIDEwMDkwOSwgNjU2MjksIDAsIAorICAgIDE5NDg1OCwgNzQ4NTQsIDY2NzUwLCA3MDQ2NiwgNjczOTIsIDY2Mzg1LCA3MTQzOSwgNjI5MSwgMCwgNjg0ODcsIDQxNjY5LCAKKyAgICA3MDk0LCAxMjEwNTEsIDEyMTQwOCwgMTE5MDQxLCA3NDA1NCwgMTI3NzU0LCAxMjg5MTcsIDAsIDgzOSwgMTIxMzE1LCAKKyAgICA3Njk1LCA4NzY5LCA2NTI0NiwgNDgyOSwgNjc3NTYsIDQ4NTksIDY0NDY3LCA5ODM0NjEsIDgzNTI1LCAxMTg5OTgsIDcyMDYsIAorICAgIDExOTYzNiwgNjY0NywgNDM5ODYsIDcyNzM4LCA2OTc2NiwgMTk0NjY0LCA2NDc2NCwgNDIxMCwgMTI4MzAwLCAxMjc5MzYsIAorICAgIDgwNCwgNjY3NDYsIDAsIDEyMjk4LCA3MDM0NCwgNjY2NTMsIDEyNjk4MywgNjQ5MjQsIDEwMDkxLCA2NzIwMCwgOTQ2OCwgCiAgICAgNjcyMDYsIDY3MjA1LCA2NzIwNCwgNjcyMDMsIDkyNTAzLCAxMjgzOSwgNjQ2NjksIDkyMjAyLCA3MTg1MSwgMTI3OSwgCi0gICAgMTQyNSwgNjIyNCwgMTE5MjI5LCAxMTA0OSwgMTI3MTIzLCA3MTQ4MCwgNDI2NDksIDg0ODIsIDkyNDQwLCAwLCA1MDMyLCAKLSAgICA2NzIwOSwgMTE5NDAsIDY3MjA3LCA2NjQsIDEyMDQzNywgNTAzNCwgOTI0OTUsIDcwMjAwLCAxMjc1MjUsIDQyNzAyLCAKLSAgICA3MDE5NCwgOTMwNjEsIDEzMjk0LCA2Nzg3MywgNjQ4NjksIDYwMzIsIDY3MjE4LCA5MTE1LCA3NDMwLCA3NzgzNywgNzAxOTEsIAotICAgIDEyMDgxOSwgNjgzODcsIDEyMDE2OCwgNzM5MTMsIDEyMDE3MCwgNDExNjEsIDU1MTgsIDQxNzQsIDEwOTkzLCA0MTE2MiwgCi0gICAgNzc4MzYsIDY0NTI4LCAxMTY5LCA0MzQsIDQxNDM3LCAxOTA1LCA2MDM0LCA0MTE2NCwgNjQ3NDQsIDk1MjgsIDY3NzQxLCAKLSAgICAxMjg4MDAsIDUyNCwgMCwgNzQwMjksIDc4OCwgNzQwMjcsIDE5NDY2NywgNzE4ODEsIDAsIDE2NjMsIDEwNDE5LCA0MjkwMSwgCi0gICAgNDI2MzYsIDY3MjExLCA2NzIxMCwgMTI5MTQ3LCAxMjA2NTYsIDY3MjE1LCA2NzIxNCwgNjcyMTMsIDY3MjEyLCAwLCAKLSAgICA2Nzg5NywgNzQwMzksIDAsIDAsIDExMzk1LCAwLCAxMTkxMDcsIDQzNjEyLCA2NDM0NCwgMTk0NzMyLCAwLCAxMDg1NSwgCi0gICAgNTQ0NSwgOTM1NSwgNjcyMjEsIDY1MTk4LCA3MzkxLCA4OTg5LCAyMjEsIDY1Njg2LCA5ODM4NzQsIDExOTIzOCwgODAxMCwgCi0gICAgNzE5MSwgNDk2MiwgNjk3NzIsIDg4NTUsIDc0NjEyLCA3MDgyMCwgNjQ0NjksIDkyNTkyLCAxMDU1NSwgNjcyMjcsIDQzMzMzLCAKLSAgICA2NzIyNSwgMTI4NDgzLCAxMjA0MjcsIDEwNDUxLCA2NzIyOSwgNjc2NTMsIDcyNDUsIDEyNDQzLCA3NDQwNSwgOTk0NywgCi0gICAgMTIwMTQ5LCA3ODMxNywgMzg3MywgODM2NywgNzc4NDIsIDEyMDE0NiwgNDM0MzMsIDQzNjQ5LCAxMTk4NywgODMzNDMsIAotICAgIDk4MzU4MSwgMTEwMTAsIDExMTY0LCA3NDA1OSwgNzQwNjIsIDYyMTcsIDU4OTYsIDQzODQ2LCA3NjgyLCA3NDA0OSwgMTQ2MiwgCi0gICAgMTAyMzUsIDAsIDAsIDk4MzMyNSwgNDM0NDEsIDEyNzkyNCwgMTI3Nzc3LCA0MjU5NSwgMTI2NjQxLCA3NDQwMiwgMTE4ODYwLCAKLSAgICA3ODY2MSwgMTIwNDE5LCA5MjQ5NywgNjYyODcsIDEyMDQyMCwgOTIzNzgsIDEyMDU0OSwgMTE5MDgyLCA2NDI5NSwgCi0gICAgMTIwNDE4LCAwLCA2NDc2NSwgNzM5MjMsIDgzMjEwLCAxMjA2NjIsIDY5OTIwLCAxOTQ3MDIsIDYyMTYsIDY3MjMwLCAKLSAgICAxMDc1NSwgOTQ1NSwgMTExNTUsIDgxMjQsIDEyNzA0MiwgOTQ3MCwgNjk0NCwgMTIxMTI1LCAwLCA2OTY4MCwgMjgyOCwgMCwgCi0gICAgNTMxLCA0MjYzOCwgMTk0ODA0LCA5MTc4NTYsIDEyMDk2MSwgNDM0MjgsIDgyMDQsIDM2MTQsIDI4MjcsIDk2OTYsIAotICAgIDEyMDM2NSwgMCwgODcyOCwgNDM1NCwgMTA5MDQsIDc4NTYyLCAxOTkzNiwgNzgzMywgMTIwNjkxLCAxMjA4NTAsIDQyNTk5LCAKLSAgICA0MjU5NywgNDI3MDksIDY4ODI5LCAxMjUwMTIsIDAsIDg1MzcsIDEyNzMwNiwgMCwgOTM1NCwgMTIxMjQ0LCAxMjEzNDgsIAotICAgIDQxMTk5LCAxMDEyMSwgMjAyOCwgNzQ5NTAsIDEyMDI1MywgNjk3MTUsIDEyODUyNSwgMzA2MiwgMCwgNzQ0NDcsIDEyNjA4LCAKLSAgICA5ODM2NTcsIDY2NDQwLCA3NTQ1LCA5NzAwLCAxMTk0OCwgOTIyMDUsIDEyMDc3NywgMTIwNTAyLCA0MTE1NSwgNjgzMDYsIAotICAgIDc0MDcxLCAwLCA5ODM0NTksIDEyNzEzLCAxMjc1MTksIDcwNDAyLCAwLCA3ODc3MiwgMTEzNzcwLCAxNzM0LCAwLCA3ODE0MSwgCi0gICAgMTI3MDQwLCA2NDU5NCwgMjQ1NiwgMjMxLCA2ODIyNywgNzQxNjcsIDU0MiwgOTE3OTgxLCAxMTg3ODYsIDk4Mzg1OSwgCi0gICAgMTk0Nzk3LCAxMjMwLCAxMjUwMTgsIDEyMTM0MywgMzU5NywgNDQ0NiwgMTA1ODQsIDc0MjM1LCA5MjIxNSwgNDAzNywgCi0gICAgNjc3MzcsIDgzNTIsIDc4NDM2LCA1Njg3LCAxMjcwMTgsIDY0NTE1LCAxMjEzNzgsIDE5NDgwMSwgNTUyNjUsIDY3ODQ2LCAKLSAgICA3ODQzNCwgOTcwNCwgMCwgMTk0NTczLCA3MDA4MCwgNzEzMzgsIDAsIDg2NjAsIDEyNjQ3OCwgMCwgMTI4NTY5LCA3ODc3MywgCi0gICAgNzQ0ODIsIDQ0ODMsIDE3MDksIDY5NzIxLCA5OTA5LCA2MDgwLCAxOTQ4NTEsIDEyMDM1OCwgMTc0NiwgMTMxNSwgODY2NywgCi0gICAgOTgzMTAxLCAwLCAxMzE0MCwgNjU4OTksIDEwNjA0LCAwLCA0NDgwLCAxMTI2NiwgMTIxMTE0LCAxMjI2LCA2OTMwLCAKLSAgICA2Nzk3OSwgMTk1MDE5LCA2MzYwLCAxMDg5NywgNDEyMzAsIDYwNSwgNjgzMDIsIDc0Nzg1LCA2OTg3NSwgMCwgMTIxNDc4LCAKKyAgICAxNDI1LCA2MjI0LCAxMTkyMjksIDExMDQ5LCAxMjcxMjMsIDcxNDgwLCA0MjY0OSwgODQ4MiwgOTI0NDAsIDk4MzcxMCwgCisgICAgNTAzMiwgNjcyMDksIDExOTQwLCA2NzIwNywgNjY0LCAxMjA0MzcsIDUwMzQsIDkyNDk1LCA3MDIwMCwgMTIyOTAxLCAKKyAgICA0MjcwMiwgNzAxOTQsIDkzMDYxLCAxMzI5NCwgNjc4NzMsIDY0ODY5LCA2MDMyLCA2NzIxOCwgOTExNSwgNzQzMCwgNzc4MzcsIAorICAgIDcwMTkxLCAxMjA4MTksIDY4Mzg3LCAxMDA2NDUsIDczOTEzLCAxMjAxNzAsIDQxMTYxLCA1NTE4LCA0MTc0LCAxMDk5MywgCisgICAgNDExNjIsIDc3ODM2LCA2NDUyOCwgMTE2OSwgNDM0LCA0MTQzNywgMTkwNSwgNjAzNCwgNDExNjQsIDY0NzQ0LCA5NTI4LCAKKyAgICA2Nzc0MSwgMTI4ODAwLCA1MjQsIDEyODY2NywgNzQwMjksIDc4OCwgNzQwMjcsIDE5NDY2NywgNzE4ODEsIDEyMDM3MCwgCisgICAgMTY2MywgMTA0MTksIDQyOTAxLCA0MjYzNiwgNjcyMTEsIDY3MjEwLCAxMjkxNDcsIDEyMDY1NiwgNjcyMTUsIDY3MjE0LCAKKyAgICA2NzIxMywgNjcyMTIsIDEyODgyOCwgNjc4OTcsIDc0MDM5LCAwLCAwLCAxMTM5NSwgMTk0OTA0LCAxMTkxMDcsIDQzNjEyLCAKKyAgICA2NDM0NCwgMTI5MzcwLCAwLCAxMDg1NSwgNTQ0NSwgOTM1NSwgNjcyMjEsIDY1MTk4LCA3MzkxLCA4OTg5LCAyMjEsIAorICAgIDQzNjczLCA5ODM4NzQsIDExOTIzOCwgODAxMCwgNzE5MSwgNDk2MiwgNjk3NzIsIDg4NTUsIDc0NjEyLCA3MDgyMCwgCisgICAgNjQ0NjksIDkyNTkyLCAxMDU1NSwgNjcyMjcsIDQzMzMzLCA2NzIyNSwgMTI4NDgzLCAxMjA0MjcsIDEwNDUxLCA2NzIyOSwgCisgICAgNjc2NTMsIDcyNDUsIDEyNDQzLCA3NDQwNSwgOTk0NywgMTIwMTQ5LCA3ODMxNywgMzg3MywgODM2NywgNzc4NDIsIAorICAgIDEyMDE0NiwgNDM0MzMsIDQzNjQ5LCAxMTk4NywgODMzNDMsIDk4MzU4MSwgMTEwMTAsIDExMTY0LCA3NDA1OSwgNzQwNjIsIAorICAgIDYyMTcsIDU4OTYsIDQzODQ2LCA3NjgyLCA3NDA0OSwgMTQ2MiwgMTAyMzUsIDk4MzkxOCwgMCwgOTgzMzI1LCA0MzQ0MSwgCisgICAgMTI3OTI0LCAxMjc3NzcsIDQyNTk1LCA3MjgwNCwgNzQ0MDIsIDExODg2MCwgNzg2NjEsIDEyMDQxOSwgOTI0OTcsIDY2Mjg3LCAKKyAgICAxMjA0MjAsIDkyMzc4LCAxMjA1NDksIDExOTA4MiwgNjQyOTUsIDEyMDQxOCwgMCwgNjQ3NjUsIDczOTIzLCA4MzIxMCwgCisgICAgMTIwNjYyLCA2OTkyMCwgMTI1Mjc4LCA2MjE2LCA2NzIzMCwgMTA3NTUsIDk0NTUsIDExMTU1LCA4MTI0LCAxMjcwNDIsIAorICAgIDk0NzAsIDY5NDQsIDEyMTEyNSwgOTE3OTgyLCA2OTY4MCwgMjgyOCwgMCwgNTMxLCA0MjYzOCwgMTk0ODA0LCA5MTc4NTYsIAorICAgIDEyMDk2MSwgNDM0MjgsIDgyMDQsIDM2MTQsIDI4MjcsIDk2OTYsIDEyMDM2NSwgMCwgODcyOCwgNDM1NCwgMTA5MDQsIAorICAgIDc4NTYyLCAxOTkzNiwgNzgzMywgMTIwNjkxLCAxMjA4NTAsIDQyNTk5LCA0MjU5NywgNDI3MDksIDY4ODI5LCAxMjUwMTIsIAorICAgIDAsIDg1MzcsIDEyNzMwNiwgOTgzNzI5LCA5MzU0LCAxMjEyNDQsIDEyMTM0OCwgNDExOTksIDEwMTIxLCAyMDI4LCA3NDk1MCwgCisgICAgMTIwMjUzLCA2OTcxNSwgMTI4NTI1LCAzMDYyLCA5ODM2NjMsIDc0NDQ3LCAxMjYwOCwgOTgzNjU3LCA2NjQ0MCwgNzU0NSwgCisgICAgOTcwMCwgMTE5NDgsIDkyMjA1LCAxMjA3NzcsIDEyMDUwMiwgNDExNTUsIDY4MzA2LCA3NDA3MSwgMTI4NzIyLCA5MjM3MiwgCisgICAgMTI3MTMsIDEyNzUxOSwgNzA0MDIsIDAsIDc4NzcyLCAxMTM3MDksIDE3MzQsIDAsIDc4MTQxLCAxMjcwNDAsIDY0NTk0LCAKKyAgICAyNDU2LCAyMzEsIDY4MjI3LCA3NDE2NywgNTQyLCAxMjA1ODYsIDEwMDg1MSwgOTgzODU5LCAxOTQ3OTcsIDEyMzAsIAorICAgIDczODQ1LCAxMjEzNDMsIDM1OTcsIDQ0NDYsIDEwNTg0LCA3NDIzNSwgOTIyMTUsIDQwMzcsIDY3NzM3LCA4MzUyLCA3ODQzNiwgCisgICAgNTY4NywgMTI3MDE4LCA2NDUxNSwgMTIxMzc4LCAxOTQ4MDEsIDU1MjY1LCA2Nzg0NiwgNzg0MzQsIDk3MDQsIDk4MzU4NSwgCisgICAgMTk0NTczLCA3MDA4MCwgNzEzMzgsIDEyMDU3NSwgODY2MCwgMTI2NDc4LCAxMjcwMTAsIDEyODQ2NywgNzg3NzMsIDc0NDgyLCAKKyAgICA0NDgzLCAxNzA5LCA2OTcyMSwgOTkwOSwgNjA4MCwgMTI4MTY3LCAxMjAzNTgsIDE3NDYsIDEzMTUsIDg2NjcsIDk4MzEwMSwgCisgICAgMCwgMTMxNDAsIDY1ODk5LCAxMDYwNCwgMTE4Nzg2LCA0NDgwLCAxMTI2NiwgMTIxMTE0LCAxMjI2LCA2OTMwLCA2Nzk3OSwgCisgICAgMTk1MDE5LCA2MzYwLCAxMDg5NywgNDEyMzAsIDYwNSwgNjgzMDIsIDc0Nzg1LCA2OTg3NSwgMTIwODQ5LCAxMjE0NzgsIAogICAgIDQxNTAwLCAwLCAzMTEsIDExNDUzLCA2MjIxLCAxMDYwOCwgNjQ5NDMsIDY3NjgyLCAxMDg3NywgMTE4ODY4LCA2NDg4NSwgCi0gICAgNzQyNzIsIDAsIDE5NDY3MiwgMTI4NTU5LCAxMjA3MzYsIDc0MzEyLCAzNDUsIDEyNDkzMywgNzQ0NTYsIDY0NjA2LCA5OTE3LCAKLSAgICAwLCA3NDg1NSwgNTAzNywgMTE5OTEyLCAxNzc2LCA4NDIyLCAxMjg5MzUsIDExODgxNCwgNDE1MDgsIDQxMjAxLCAzMjMsIAotICAgIDQzMzI4LCAwLCA0MjY5OCwgMTI5NSwgMTk0ODUzLCA0NjI1LCA3Nzg1NSwgNDYzMCwgMTMxMTcsIDgzMDAyLCAxMjg3NzIsIAotICAgIDY1MTIzLCAxMTI5MywgMjY2OCwgMTEyODgsIDAsIDQyNjQwLCA2NTY2NiwgMjUxOSwgOTIzNjksIDY1NDIwLCA5MjQ3OSwgMCwgCi0gICAgNDI1MiwgNTA0OSwgNDI2NTksIDExOTAxMSwgNzA2LCA3NzU0LCAxMDg1NCwgODczOCwgOTgzOTQ5LCA2NTQxOSwgMCwgCi0gICAgMTI4NDk2LCA2NDksIDY1NDIxLCAwLCA2NjcwMiwgOTgzNzIxLCAxMjY3MCwgMTAxMywgMCwgNjQ5MTksIDcwNSwgMCwgCi0gICAgNjU0MjIsIDEyNzgwMywgMTE4MywgMTI2NTE5LCA3MDE3LCA0Mjg1MiwgOTE3ODI2LCA4MTU3LCA5NzM2LCA2NDUwMywgCi0gICAgNjU0MTgsIDEyOTA1MCwgOTgzODc4LCA3NDAzNSwgMTk0OTE4LCAxMTkxMywgNzM4NzQsIDY2OTYsIDEyMDkxNiwgODkyMCwgCi0gICAgMTE5Mjk4LCAxMjg0MjYsIDc5NjIsIDEyMjExLCA5ODM3LCAyMDUxLCA2NjIyNywgMCwgNDE4NCwgMTE5ODI1LCAxMjg1OTgsIAotICAgIDEwMTc3LCA3Mzc3NywgMTg1NywgMTk0NjU3LCA0NjI2LCA4NDY0LCA4NDcyLCA2ODg0NCwgNDYyOSwgODQ5OSwgNzQ2MjcsIAotICAgIDc4MzIyLCA0NjI0LCA3ODE4LCAxMTg4NjEsIDEyODEwOCwgMCwgNzgwNSwgMTI4NzU0LCA5NDAwNywgNjkzNSwgOTIyOTIsIAotICAgIDc4MzI1LCA3ODMyNiwgNzgzMjMsIDQzMzI3LCA0Mzk4OSwgMTE5MDQ2LCA4NDkyLCA4MjUwLCA4NDU5LCAwLCA4NDk3LCAKLSAgICA4NDk2LCA4MzQ5OSwgNzQ1ODIsIDc1MDUyLCA3ODMzOSwgOTU0MywgNjc4NjAsIDc4MzMyLCA3NzgzMiwgNjU4NDksIAotICAgIDc3ODMxLCA5ODM5NjEsIDE5NDY0OSwgMTI0NTEsIDc0Mzc2LCA4Njg0LCAxMjgzMDEsIDYxMDIsIDAsIDUyOTgsIDkxNzg0NywgCi0gICAgNTI5NCwgMCwgODMwMTYsIDY4MDQzLCAxOTUwNjIsIDk5NDksIDgzMDE0LCA0MzYxNywgMTE5MjE1LCAwLCAxMjA3MywgMCwgCi0gICAgMTI4NjQ2LCA3Nzg2MywgMTMxMDgsIDEyMDYxNywgMTE0MzksIDQxNDY4LCA4MzAxMiwgMCwgNTI5MiwgNTUyNzIsIAotICAgIDk4Mzg4MywgMTkzOSwgNTMwMiwgMzk3MCwgOTE3ODc3LCAxMjQ1NSwgMTc5MywgMTI0OTgyLCAwLCA3NTAzNiwgNjY0MywgCi0gICAgOTI0NzcsIDY1MjYzLCAwLCA3ODMzMCwgNDEyOTMsIDc4MzI4LCA2NTkyMywgNzg4MzUsIDEzMjE5LCA5NTY5LCAxMjkwNDEsIAotICAgIDc0MzgzLCAwLCA3NDE5NywgMTI5MDg5LCA1NTAwLCA4ODEzLCAwLCAxMjg2MTIsIDY4ODYwLCA1MzIyLCAxMjA5NDQsIAotICAgIDc4MzQwLCA0MzYzMSwgNTMyNCwgNjY0NDMsIDM3ODQsIDQxNjE0LCA2NTI2OSwgNjIzMCwgNzgzNDksIDc4MzQ1LCAxMzI4MiwgCi0gICAgMzM2MCwgNzgzNDQsIDExNTIzLCAwLCA5MjQ4OCwgOTkyNiwgNzE5NywgMTI4MjQ4LCA2ODQyOSwgNDI4OTQsIDQxODIxLCAKLSAgICAxMjQ5LCA3ODM2MCwgNzgzNjEsIDc4MzU2LCA3ODM1OCwgNzgzNTMsIDY0ODk5LCA2NDc2MywgNDExNDksIDQxODA3LCAKLSAgICA0MzE2MiwgNDE4MTUsIDQxMTUwLCAxMjg5MTEsIDEwNTcxLCAxMDA5NiwgNjcxNjEsIDY3MTYwLCA2NzE1OSwgNjk0NywgCi0gICAgNDExNTIsIDg4NywgOTI0OSwgNjU2NSwgNzg1MTAsIDQxOTkwLCA3ODUwOSwgNDE4MTEsIDY3MTU3LCA5Mzk2NiwgNjY3MCwgCi0gICAgNjcxNzUsIDY3MTc0LCAwLCA0MzA5MiwgNDMzMjUsIDY3MTc4LCAxMDE2OCwgNjcxNzYsIDk3ODEsIDY4MjQ4LCA5MTkwLCAKLSAgICAxMjg0OTcsIDk2NjYsIDgyNjksIDY1OTQ0LCA3NDAwNSwgMTMwMTksIDExNjcwLCA2OTg2MCwgMzE1LCAxMjgxMywgCi0gICAgMTI5MTMyLCA3MjQwOSwgNzgyNTYsIDcyNDA4LCA3ODM1MiwgMCwgNzUwNjMsIDAsIDAsIDEzNzgsIDk1MDksIDE5NDYzNCwgCi0gICAgOTI5OTYsIDcyNDA3LCAzMDY2LCA5MjIyMCwgNjc4NDcsIDcyNDA2LCA5MjM1NSwgOTE3ODkwLCA3ODM2NSwgODc4NywgCi0gICAgNjcxODksIDE5NDYxNiwgNDE2MTgsIDE5NDYxNSwgNzgyNjEsIDEyNzM4NCwgMCwgNjQ2NTIsIDEyMTIyMiwgMTIxMDEyLCAwLCAKLSAgICA3ODM2NiwgNDIwODgsIDcxMDQwLCAxOTUwNjEsIDcxNzYsIDQzNzU2LCAxMDEzNywgNjEyMSwgMTA5OTUsIDc4MjU5LCAKLSAgICA3MTA1MCwgODExOSwgNjQ4NzQsIDcxMDUyLCA3ODE3NCwgMTI4NjkwLCAxMjg2MzAsIDc0NTI1LCAwLCAwLCAxMjkzMCwgCisgICAgNzQyNzIsIDEyODA3NiwgMTk0NjcyLCAxMjEyMDIsIDEwMDY1MiwgNzQzMTIsIDM0NSwgMTI0OTMzLCA3NDQ1NiwgNjQ2MDYsIAorICAgIDk5MTcsIDEyNTI0NCwgNzQ4NTUsIDUwMzcsIDEwMDk5OCwgMTc3NiwgODQyMiwgMTI4OTM1LCAxMTg4MTQsIDQxNTA4LCAKKyAgICA0MTIwMSwgMzIzLCA0MzMyOCwgOTE3ODQ5LCA0MjY5OCwgMTI5NSwgMTk0ODUzLCA0NjI1LCA3Nzg1NSwgNDYzMCwgMTMxMTcsIAorICAgIDgzMDAyLCAxMjg3NzIsIDY1MTIzLCAxMTI5MywgMjY2OCwgMTEyODgsIDAsIDQyNjQwLCA2NTY2NiwgMjUxOSwgOTIzNjksIAorICAgIDY1NDIwLCA5MjQ3OSwgMTI3MTkxLCA0MjUyLCA1MDQ5LCA0MjY1OSwgMTE5MDExLCA3MDYsIDc3NTQsIDEwODU0LCA4NzM4LCAKKyAgICAxMjkzMTgsIDY1NDE5LCAwLCAxMjg0OTYsIDY0OSwgNjU0MjEsIDEyMjg4MCwgNjY3MDIsIDk4MzcyMSwgMTI2NzAsIDEwMTMsIAorICAgIDcwNzA3LCA2NDkxOSwgNzA1LCA3MjgyNSwgNjU0MjIsIDEyNzgwMywgMTE4MywgMTI2NTE5LCA3MDE3LCA0Mjg1MiwgCisgICAgOTE3ODI2LCA4MTU3LCA5NzM2LCA2NDUwMywgNjU0MTgsIDEyOTA1MCwgMTI4MDkwLCA3NDAzNSwgNzg4MzYsIDExOTEzLCAKKyAgICA3Mzg3NCwgNjY5NiwgMTIwOTE2LCA4OTIwLCAxMTkyOTgsIDEyODQyNiwgNzk2MiwgMTIyMTEsIDk4MzcsIDIwNTEsIAorICAgIDY2MjI3LCA5ODMyNzIsIDQxODQsIDExOTgyNSwgMTI4NTk4LCAxMDE3NywgNzM3NzcsIDE4NTcsIDEyNzc3MywgNDYyNiwgCisgICAgODQ2NCwgODQ3MiwgNjg4NDQsIDQ2MjksIDg0OTksIDc0NjI3LCA3ODMyMiwgNDYyNCwgNzgxOCwgMTE4ODYxLCAxMjgxMDgsIAorICAgIDAsIDc4MDUsIDEyODc1NCwgOTQwMDcsIDY5MzUsIDkyMjkyLCA3ODMyNSwgNzgzMjYsIDc4MDc5LCA0MzMyNywgNDM5ODksIAorICAgIDExOTA0NiwgODQ5MiwgODI1MCwgODQ1OSwgMCwgODQ5NywgODQ5NiwgODM0OTksIDc0NTgyLCA3MDY5MCwgNzgzMzksIAorICAgIDk1NDMsIDY3ODYwLCA3ODMzMiwgNzc4MzIsIDY1ODQ5LCA3NzgzMSwgMTI4NjE1LCAxMDA0MTIsIDEyNDUxLCA3NDM3NiwgCisgICAgODY4NCwgMTAwNTE1LCA2MTAyLCAxMjgwNDYsIDUyOTgsIDEyODcyMSwgNTI5NCwgODMyMzUsIDgzMDE2LCA2ODA0MywgCisgICAgMTk0ODk5LCA5OTQ5LCA4MzAxNCwgNDM2MTcsIDExOTIxNSwgMTI3MDMwLCAxMjA3MywgMTIwNzM2LCAxMjgwMTcsIDc3ODYzLCAKKyAgICAxMzEwOCwgNzEyMzEsIDIyNjAsIDQxNDY4LCA4MzAxMiwgMCwgNTI5MiwgNTUyNzIsIDk4Mzg4MywgMTkzOSwgNTMwMiwgCisgICAgMzk3MCwgMTI5MzQ4LCAxMjQ1NSwgMTc5MywgMTI0OTgyLCAwLCA3NTAzNiwgNjY0MywgOTI0NzcsIDY1MjYzLCAwLCAKKyAgICA3ODMzMCwgNDEyOTMsIDc4MzI4LCA2NTkyMywgNzg4MzUsIDEzMjE5LCA5NTY5LCAxMjkwNDEsIDc0MzgzLCAwLCA3NDE5NywgCisgICAgMTI5MDg5LCA1NTAwLCA4ODEzLCA5ODM0MTQsIDEyODYxMiwgNjg4NjAsIDUzMjIsIDEyMDk0NCwgNzgzNDAsIDQzNjMxLCAKKyAgICA1MzI0LCA2NjQ0MywgMzc4NCwgNDE2MTQsIDY1MjY5LCA2MjMwLCA3ODM0OSwgNzgzNDUsIDEzMjgyLCAzMzYwLCA3ODM0NCwgCisgICAgMjIzMSwgNzI3MjYsIDkyNDg4LCA5OTI2LCA3MTk3LCAxMjgyNDgsIDY4NDI5LCA0Mjg5NCwgNDE4MjEsIDEyNDksIDc4MzYwLCAKKyAgICA3ODM2MSwgNzgzNTYsIDc4MzU4LCA3ODM1MywgNjQ4OTksIDY0NzYzLCA0MTE0OSwgNDE4MDcsIDQzMTYyLCA0MTgxNSwgCisgICAgNDExNTAsIDEyODkxMSwgMTA1NzEsIDEwMDk2LCA2NzE2MSwgNjcxNjAsIDY3MTU5LCA2OTQ3LCA0MTE1MiwgODg3LCA5MjQ5LCAKKyAgICA2NTY1LCA3ODUxMCwgNDE5OTAsIDc4NTA5LCA0MTgxMSwgNjcxNTcsIDkzOTY2LCA2NjcwLCA2NzE3NSwgNjcxNzQsIDAsIAorICAgIDQzMDkyLCA0MzMyNSwgNjcxNzgsIDEwMTY4LCA2NzE3NiwgOTc4MSwgNjgyNDgsIDkxOTAsIDEyMDk4MSwgOTY2NiwgODI2OSwgCisgICAgNjU5NDQsIDc0MDA1LCAxMzAxOSwgMTE2NzAsIDY5ODYwLCAzMTUsIDEyODEzLCAxMjg1NTYsIDcyNDA5LCA3ODI1NiwgCisgICAgNzI0MDgsIDc4MzUyLCA5MjIxMiwgNzUwNjMsIDcyODM5LCAwLCAxMzc4LCA5NTA5LCAxOTQ2MzQsIDkyOTk2LCA3MjQwNywgCisgICAgMzA2NiwgOTIyMjAsIDIyNzAsIDcyNDA2LCA5MjM1NSwgOTE3ODkwLCA3ODM2NSwgODc4NywgNjcxODksIDcyODE4LCAKKyAgICA0MTYxOCwgMTk0NjE1LCA3ODI2MSwgMTI3Mzg0LCAwLCA2NDY1MiwgMTIxMjIyLCA3MjgzMywgMTI1MjI2LCA3ODM2NiwgCisgICAgNDIwODgsIDcxMDQwLCAxOTUwNjEsIDcxNzYsIDQzNzU2LCAxMDEzNywgNjEyMSwgMTA5OTUsIDc4MjU5LCA3MTA1MCwgCisgICAgODExOSwgNjQ4NzQsIDcxMDUyLCA0Mzk2NCwgMTI4NjkwLCAxMjg2MzAsIDc0NTI1LCA3Mjg0MywgMTAwNzgzLCAxMjkzMCwgCiAgICAgMTM5NCwgNzQ1MTQsIDEyODQxMywgNzQ1MTUsIDk4MzcyNywgNjcxODQsIDI5OTgsIDk1MjcsIDY3MTgxLCA2NTE5MCwgCiAgICAgMTI5NzcsIDQyMDkwLCA2NzE4NSwgOTgzNjQ3LCAxMTkxMDAsIDQxMjM2LCA5MjIzNSwgNDIwMDUsIDQyMDAzLCA0MTIzNywgCiAgICAgNTg0OCwgNjcxOTMsIDY3MTkyLCAzNjcwLCA2NzE5MCwgNjcxOTcsIDY3MTk2LCA2NzE5NSwgNzg5MCwgMTI4MDcwLCAKLSAgICAxMTI5OCwgNDMzMTUsIDk4MzMxNSwgNjIyOSwgMTU5MywgMCwgMTI1MTIwLCA2MTksIDQ2MzUsIDY1MDgwLCAxMjcxNTgsIAorICAgIDExMjk4LCA0MzMxNSwgNzc4NzEsIDYyMjksIDE1OTMsIDAsIDEyNTEyMCwgNjE5LCA0NjM1LCA2NTA4MCwgMTI3MTU4LCAKICAgICAxMjE5NCwgNDEyMCwgNjUzMzcsIDY1MzM2LCAxMjg0MDcsIDExODA4LCA2NzE5OSwgNjcxOTgsIDkzNjYsIDQyNzkwLCAKICAgICA0MjAwNiwgMTE5MTE1LCA2NTMyNywgNjUzMjYsIDY1MzI1LCAxMDc1NywgMTUwNywgNDIyMTYsIDY1MzIxLCA2NTMyMCwgCiAgICAgNDM5NDcsIDY1MzM0LCA0Mzk0NiwgNjUzMzIsIDY1MzMxLCA0MjA1OSwgNjUzMjksIDQyNjg5LCA5MjQyNywgOTEyOCwgCi0gICAgOTQwNDUsIDQyMDczLCA2Nzg1LCA2NDU5MCwgOTgzODMwLCA0MzcxLCA3MTk2LCA2NTMxOCwgMjAzNSwgNjUzMTYsIDQxMDYsIAotICAgIDY1MzE0LCA2NTMxMywgNDIwNzQsIDEyNzg0NywgNDEyMjgsIDEyMDg2MiwgNjU2MDksIDQxMjQxLCA3OTAzLCA0MTIzOSwgCi0gICAgNDM1MzMsIDc4NDU5LCA3MTg5LCAwLCAwLCA0Mzk0MSwgMTIzNTcsIDQyODAyLCA3ODQ1MCwgODQ4NywgOTEzMSwgNjYyOTIsIAotICAgIDQ2MTUsIDEyNjk1LCAxMjc3NTIsIDAsIDEyMTc1LCAwLCA2NDUzNSwgMCwgNzgwOSwgMCwgMTIxMzUxLCA1NjIsIDEyMTY5LCAKLSAgICA2NTkwLCA2OTc2MiwgNjY0NTUsIDY0NzM4LCAzMjE5LCA2ODY1NCwgMTIxMDk2LCAxMjgyODEsIDEwMzcsIDEyODY3NywgCi0gICAgMjAyNSwgMTI4MjYzLCAxMzA5OCwgNzg0NDIsIDEwNjM3LCA0NTY4LCA1NDksIDE1NzAsIDQzODM5LCAyODM1LCA4MzA1MiwgCi0gICAgMTA2MjQsIDQzNjIzLCAxMTA3MiwgODMwNDUsIDEyODUyMywgODMwNDYsIDEyNjA2LCA3ODQzMywgMjgyNSwgODMwNDgsIAotICAgIDEwODI1LCA4MDc5LCAyODIxLCA0MTA0NiwgOTIzMjcsIDczNjUsIDgzMDQzLCAxMjA1OTMsIDEzMDcxLCAxMjEyODgsIDQ1MiwgCi0gICAgNDEwNDksIDQyODQwLCA2MzQ2LCAyODMxLCA1NDYxLCA3NDU5NiwgMTE0NjUsIDUyMTIsIDkxNzkxNywgNjQ3MDMsIAotICAgIDExOTE5MSwgNDIzMDgsIDcxODEsIDAsIDQxMzMyLCAwLCAxMjMzMywgNDEwNDcsIDE2NjgsIDExOTg0OSwgMTIxMTUwLCAKLSAgICAxMjgyNzUsIDExODcsIDk4MzM4NywgNDI2MjgsIDc4NTc1LCA4Mjk1MywgNzE4NjMsIDgyOTU1LCAzMjQwLCAxMjg1MTgsIAotICAgIDEyMTUxLCAwLCAxMTU5MSwgNDEwNjUsIDUzMjMsIDgxNjYsIDAsIDExODkzMiwgMCwgNjY4MjcsIDE2MjMsIDY1Mjk3LCAKLSAgICAxMjg4NTYsIDU3MSwgMCwgNDkxOCwgMCwgNTI4OCwgMTI3Mjk1LCAxNTQxLCA2NTA0OCwgMTkwOSwgODg2NCwgMCwgNjY0MDIsIAotICAgIDEwNzM2LCA5MjUwOCwgMTE1NzEsIDc2MTUsIDcwNDc2LCA5MjI5NiwgNDIzNywgOTI1NzYsIDEwMzUsIDY1ODE1LCA2ODA4MywgCi0gICAgMzU2NywgNzAxLCA2NTkzNiwgMzQ4OSwgMTIwODk5LCA3MDQ2MiwgNzAxNzIsIDExNDAzLCAwLCAwLCA4Mjk4NiwgMzc5NiwgCi0gICAgNjgwMCwgNzA0NzIsIDM5OTQsIDExNDIxLCA3NDYxMSwgMTk1MDc2LCAxOTUwNzgsIDY4MDM2LCAwLCAwLCA2NDg1NywgCi0gICAgODM1MDgsIDI4NTUsIDc0NDE4LCA2NjMwOCwgNDE2MjEsIDY4MjE0LCA4MzUxMywgMTI3ODE3LCAxMDY1NCwgODI5NDUsIAotICAgIDExOTIyNiwgMTIxNjQsIDMyNDYsIDc5MDYsIDQzOTcyLCA2NTg0NywgNzE4MiwgMCwgMTMwMjQsIDY2Mjc2LCA3NDI3MCwgCi0gICAgODMwNjksIDEyNTA5MCwgMTIxMTE1LCAwLCAxNDk2LCA3NDcsIDAsIDk0MiwgMjM3OCwgNDMxMzYsIDgzMDMxLCA4NDY2LCAKLSAgICA4MzA3NSwgOTMyMCwgODAwMSwgMTIzMiwgODEzOSwgMTE2MTcsIDc0NjM3LCAwLCAxMTQwOSwgNjgzNzMsIDYzODIsIAotICAgIDEyNjUwMCwgNjQ2MzQsIDkyMzYyLCA3MDIwMiwgMTE2MTIsIDkzMDA4LCA2NzYwMCwgMjM3NCwgOTQwNjYsIDg0NzUsIAotICAgIDExNjA5LCA2NjMxMywgOTI1NjgsIDAsIDUyODYsIDExOTI5NywgODMwNTksIDk4MzI1MywgNjQ5MjUsIDEyMDI4MywgCi0gICAgMTI3MjA0LCAxMTg5ODIsIDcxOTA1LCA3NzA1LCAxMTk0MiwgMTEzMDUsIDEyNzIwMywgMzMwOSwgODI5NzksIDkyMDYsIAotICAgIDgyOTgwLCAxMTM4MjQsIDY4MDIsIDcwMzUzLCA0MTY1MywgMTI4MCwgMTI0MSwgNzE2OCwgMTIwOTYsIDAsIDY2NjE1LCAKLSAgICA0MjU2NSwgNDE2NTEsIDAsIDkxNzYyNywgODMwNDIsIDQxNjUwLCA2NjUwNywgNjY0NzAsIDc0NDcyLCAxMjkxNCwgNDE0OTEsIAotICAgIDQzOTAxLCA5NDEwNiwgNjA3OCwgOTk1NCwgNzg4MjIsIDE0NzUsIDExOTI0NywgOTkzOCwgNjA4NCwgOTE3NTQ2LCA0MTA2NCwgCi0gICAgNDEwNjIsIDAsIDExMzY4MCwgMzI1NiwgMTAxODksIDQyMDc2LCA0MzI1MiwgNzg4MjMsIDY4MDg5LCA4NzI3LCAxMjA5MjIsIAotICAgIDY1ODc1LCAwLCAwLCAxMjc3NjIsIDEwNTYyLCA3NDIxNSwgNDMwNjUsIDEyMDkwNiwgMCwgMzI0OCwgNzQyOTcsIDMyNjEsIAotICAgIDkwMTUsIDcxMzUxLCAwLCAzNjM1LCA2NDMzNywgOTI3NTksIDEyNTA1NCwgMCwgNzE5NSwgODMzNDYsIDIwMDcsIDY0NDMxLCAKLSAgICAxOTUwNzUsIDAsIDkyMTk3LCAxMjcwOTAsIDYzNSwgMCwgMTI5MDgyLCA2NTYxMywgNzc5MDksIDkyNDIwLCA3Mzk5NywgCi0gICAgMTI4NTEwLCAxMjE0NTcsIDQzOTA1LCA3OTg0LCA4NjAwLCA3NDQzNCwgMTI3NzcwLCA0MTc2LCA3MDA1MCwgMjAzNCwgCi0gICAgNzg0MjMsIDExMTU0LCA2NTg5MSwgMTI3MDM4LCAwLCAzMTgsIDIwMzgsIDEyODU0NCwgNzg1OTYsIDE5NDYwMiwgMzY0OSwgCi0gICAgMTMxNDksIDQyMTQ1LCA0Mjc5OCwgMzYzNCwgMTIwMjkxLCA3MTg4NSwgNjc2NzcsIDEyMDEyNCwgNzg2NiwgNzUwNDUsIAotICAgIDExNDAyLCA0MjE0NiwgOTQwMzIsIDc0MjM4LCA0MjY2NCwgMjg0OSwgMTI3MDM0LCAwLCA3OTM4LCAxMjk2MCwgMTc2MSwgCi0gICAgMTE4MTIsIDY1Mzc5LCA2ODM4NiwgMTI4MTg1LCAxMTU5LCA3MTE4MywgNjk3MjksIDAsIDEyMDc5NywgNzE3OCwgMTIwODUxLCAKLSAgICA5ODM4MzYsIDQxNjgwLCAxMjg0NjksIDgzMDk4LCAxMTUzNCwgMTUxNCwgMTE2NjgsIDY3ODkxLCA5MzEzLCA3MDE1LCAKLSAgICAxMjg0OTAsIDY3ODc3LCAxOTQ1NjEsIDEyOTg5LCA2NjQ3NCwgOTM2OCwgMTI4NDgsIDE2MjQsIDQzMjcwLCAwLCA3NDI3OCwgCi0gICAgMTA4MTgsIDgzMDkxLCA5OTUzLCAxOTQ4OTUsIDc4NDIxLCAxMTk0LCAzMjQyLCA5NzYxLCA5NTU1LCA4NTk4LCAxMjAyOTksIAotICAgIDYxNjksIDEyODcxLCAxNTUxLCAyNzk4LCA2NTE3NiwgNDk1OCwgNDI3NTIsIDExOTAyNSwgOTE3OTI0LCA2Nzg3NSwgCi0gICAgMTIwMzAxLCAzNDk1LCA2NjY0OCwgMTI1MDc5LCA4MzM1NCwgNjgzNjQsIDEyMDc3OSwgNDg5MSwgMCwgMTA2NDEsIDAsIAotICAgIDczNzQ2LCAxMjA5NDUsIDY4MzUyLCAwLCA3Mzc4NywgMTI4ODU4LCAxMjcwOTQsIDcxOTksIDExMTMxLCAwLCAwLCAwLCAKLSAgICA5ODM4NTIsIDEyNjk3OSwgNDI2ODUsIDQyNjc5LCAxOTMsIDc4Nzg5LCAwLCAwLCA0MjY2NywgMCwgNTI3MSwgNjgzMjMsIAotICAgIDkyNTE3LCA4MzM1NiwgMTM2MiwgMTMyOTcsIDAsIDcxODgwLCAwLCA5ODMzMzMsIDczNzg5LCAwLCA2NjU4LCA0NDI2LCAwLCAKLSAgICA2NjgzMCwgOTgzODQyLCA4MzEwMywgNzI3NiwgNDIxNjMsIDUyMjAsIDAsIDc4NjIxLCA2NzgyMiwgMjQxNiwgMzMxMCwgCi0gICAgNDI3MDMsIDgzMTA3LCAzNzksIDAsIDQzNzU1LCA3MDUwNCwgNDM2NDcsIDMyMjMsIDY1NDkyLCAxMjg0LCAxOTQ3NzEsIAotICAgIDQ1NDksIDE5NDczOCwgMCwgNzEyNTMsIDcwNzg0LCAxMDgwNywgOTU1OCwgOTMwMjcsIDAsIDg1MTUsIDg2ODgsIDEyODY2LCAKLSAgICA2NTMwOCwgMzI5NCwgODMxNDMsIDg1MjksIDEyODEwMSwgNDMzODUsIDc1NjQsIDAsIDQzMzI5LCA4MzE0OCwgOTI0NTgsIAotICAgIDczNzU3LCA2NjQ1NiwgNDIzNTksIDEyODQzOSwgMjAzMSwgOTgzODkwLCA3MjAyLCAxMjgyMzIsIDEyNjc2LCA0MjcyOSwgCi0gICAgNzQ3NzcsIDMyMTUsIDEyMDk4MiwgNzcxMCwgMTYxMCwgNzM4MDEsIDEyODgwNywgMCwgNjU2ODIsIDAsIDQzOTE3LCAKLSAgICA2NTkyNCwgOTk3NCwgMjI4LCA0MzkyMiwgMTUwMSwgMTI3OTk0LCA2NDM5NSwgNTE3OSwgNzIwMCwgNjIyNSwgMTE4OTI3LCAKLSAgICA0Mjk5OSwgMTcyNSwgNjU1MzMsIDgxOTYsIDc0NzYsIDc0Mzk5LCAwLCA2Njg2OCwgNzE1MiwgODUwMiwgNTc2MiwgMTk2NywgCi0gICAgNzQ4MywgNDM4OTgsIDAsIDgxMDQsIDcwMTI4LCA3NDc0LCA0MzkxNCwgODMwODAsIDEyNjUwNywgMTA0MTQsIDEzMDAxLCAKLSAgICA4MTQxLCA5ODMyMzksIDQyNTM3LCAxNTU3LCA0MzU5NCwgMTI4NjQyLCA2MzMwLCA2ODA1LCA4NjMxLCAyNTQ1LCA0MjkzNCwgCi0gICAgMTI3MTY2LCAwLCA3NDE5MCwgMTI4NDc3LCA3MDQxMCwgOTgzNzg2LCA0Mjc2MiwgMTk0NzA4LCA0MjkxNCwgMTY1MCwgMjYyLCAKLSAgICAxNjM3LCAxMjg1MDIsIDc5MDEsIDMyMzgsIDgzMDI2LCA0MTg2MSwgMCwgMTIwMjExLCA2NTE1OCwgMTA4NjAsIDc0OTU5LCAKLSAgICA0MzY1OCwgNzUyNywgODMwODYsIDQzMzE5LCA2NDE5LCAwLCA0NSwgMCwgNjQ1ODgsIDkzOTg5LCAxMjc3NTMsIDExOTgxMCwgCi0gICAgNzE5NCwgNTI5MSwgMCwgNDM2NjYsIDEzMTI5LCAxMjg2ODQsIDkwODQsIDEyMTAzOSwgODczNywgOTgzMTY1LCAxMjg4MSwgCi0gICAgNzUwNjYsIDEyOTA2LCA5NjM5LCA3OTEyLCAyNjIwLCA5ODM4ODIsIDM1NjQsIDAsIDY5OTc4LCAxNzksIDQzNjQ0LCAKLSAgICA3NTA0OSwgNjQ3NTYsIDI4NTMsIDc4NDQzLCAxMTg4MTMsIDEyOTA0MiwgNzAzNDcsIDExOTAwOSwgMjg1MCwgODA4NCwgCi0gICAgOTgzMDg1LCA3Mzg1MCwgMjgwMSwgOTIyODQsIDQyMDY5LCAxMTk4MzksIDc0NzU0LCA4MzUyMiwgNDIwNzIsIDkyNzM2LCAKLSAgICAxMTk4NDIsIDEwMzk4LCA4MzM4NiwgODM1MjMsIDgzNzcsIDExOTMxMiwgODI0NSwgNjg0MDEsIDMxNTgsIDkyMzk2LCAKLSAgICAzOTgzLCA0MzY1NiwgOTIzLCAxMTk4NTcsIDkyNDcwLCAyOTIsIDExMTE5LCAxMTk4NDUsIDExOTg0NCwgMzIyMSwgMTc2MywgCi0gICAgOTI0NjMsIDQ2MTIsIDY3NzI5LCAxMTk4NTAsIDcyNTMsIDcwNDU2LCA2ODM5MSwgNzUwMDIsIDEwNzgyLCAzNjM3LCAKLSAgICAxMjk5NiwgNDM1NDIsIDExMzY3NiwgNjQ1NzgsIDgzNDQ5LCAzMjI4LCA2OTYzNiwgODc4MywgOTgzNjMyLCAxMTk2MTQsIAorICAgIDk0MDQ1LCA0MjA3MywgNjc4NSwgNjQ1OTAsIDk4MzEzNSwgNDM3MSwgNzE5NiwgNjUzMTgsIDIwMzUsIDY1MzE2LCA0MTA2LCAKKyAgICA2NTMxNCwgNjUzMTMsIDQyMDc0LCAxMjc4NDcsIDQxMjI4LCAxMDAzNTksIDY1NjA5LCA0MTI0MSwgNzkwMywgNDEyMzksIAorICAgIDQzNTMzLCA3ODQ1OSwgNzE4OSwgMTAwNDE4LCA5ODMyMjcsIDQzOTQxLCAxMjM1NywgNDI4MDIsIDc4NDUwLCA4NDg3LCAKKyAgICA5MTMxLCA2NjI5MiwgNDYxNSwgMTI2OTUsIDEyNzc1MiwgMCwgMTIxNzUsIDAsIDY0NTM1LCAwLCA3ODA5LCA5ODM4ODcsIAorICAgIDEyMTM1MSwgNTYyLCAxMjE2OSwgNjU5MCwgNjk3NjIsIDY2NDU1LCA2NDczOCwgMzIxOSwgNjg2NTQsIDEyMTA5NiwgCisgICAgMTI4MjgxLCAxMDM3LCAxMjg2NzcsIDIwMjUsIDExOTE1OSwgMTMwOTgsIDc4NDQyLCAxMDYzNywgNDU2OCwgNTQ5LCAxNTcwLCAKKyAgICA0MzgzOSwgMjgzNSwgODMwNTIsIDEwNjI0LCA0MzYyMywgMTEwNzIsIDgzMDQ1LCAxMjA1NjEsIDgzMDQ2LCAxMjYwNiwgCisgICAgNzg0MzMsIDI4MjUsIDgzMDQ4LCAxMDgyNSwgODA3OSwgMjgyMSwgNDEwNDYsIDkyMzI3LCA3MzY1LCA4MzA0MywgMTIwNTkzLCAKKyAgICAxMzA3MSwgMTIxMjg4LCA0NTIsIDQxMDQ5LCA0Mjg0MCwgNjM0NiwgMjgzMSwgNTQ2MSwgNzQ1OTYsIDExNDY1LCA1MjEyLCAKKyAgICAxMTg5NDUsIDY0NzAzLCAxMTkxOTEsIDQyMzA4LCA3MTgxLCAxMjgyNzYsIDQxMzMyLCAwLCAxMjMzMywgNDEwNDcsIDE2NjgsIAorICAgIDExOTg0OSwgMTIxMTUwLCAxMjcyOTUsIDExODcsIDEyODg3NSwgNDI2MjgsIDc4NTc1LCA4Mjk1MywgNzE4NjMsIDgyOTU1LCAKKyAgICAzMjQwLCAxMjg1MTgsIDkyMTMsIDAsIDExNTkxLCA0MTA2NSwgNTMyMywgODE2NiwgNzA3MzksIDExODkzMiwgMTI3MTExLCAKKyAgICA2NjgyNywgMTYyMywgNjUyOTcsIDEyODg1NiwgNTcxLCAwLCA0OTE4LCAwLCA1Mjg4LCAxMjcwODEsIDE1NDEsIDY1MDQ4LCAKKyAgICAxOTA5LCA4ODY0LCAwLCA2NjQwMiwgMTA3MzYsIDkyNTA4LCAxMTU3MSwgNzYxNSwgNzA0NzYsIDkyMjk2LCA0MjM3LCAKKyAgICA5MjU3NiwgMTAzNSwgNjU4MTUsIDY4MDgzLCAzNTY3LCA3MDEsIDY1OTM2LCAzNDg5LCAxMjA4OTksIDcwNDYyLCA3MDE3MiwgCisgICAgMTE0MDMsIDAsIDAsIDgyOTg2LCAzNzk2LCA2ODAwLCA3MDQ3MiwgMzk5NCwgMTE0MjEsIDc0NjExLCAxMjc5MTEsIAorICAgIDE5NTA3OCwgNjgwMzYsIDcwNjU5LCAwLCA2NDg1NywgODM1MDgsIDI4NTUsIDcwNjk3LCA2NjMwOCwgNDE2MjEsIDY4MjE0LCAKKyAgICA4MzUxMywgMTI3ODE3LCAxMDY1NCwgODI5NDUsIDExOTIyNiwgMTIxNjQsIDMyNDYsIDc5MDYsIDQzOTcyLCA2NTg0NywgCisgICAgNzE4MiwgMCwgMTMwMjQsIDY2Mjc2LCA3NDI3MCwgODMwNjksIDEyNTA5MCwgMTIxMTE1LCAwLCAxNDk2LCA3NDcsIAorICAgIDkxNzk5OSwgOTQyLCAyMzc4LCA0MzEzNiwgODMwMzEsIDg0NjYsIDgzMDc0LCA5MzIwLCA4MDAxLCAxMjMyLCA4MTM5LCAKKyAgICAxMTYxNywgNzQ2MzcsIDAsIDExNDA5LCA2ODM3MywgNjM4MiwgMTI2NTAwLCA2NDYzNCwgOTIzNjIsIDcwMjAyLCAxMTYxMiwgCisgICAgOTMwMDgsIDY3NjAwLCAyMzc0LCA5NDA2NiwgODQ3NSwgMTE2MDksIDY2MzEzLCA5MjU2OCwgMCwgNTI4NiwgMTE5Mjk3LCAKKyAgICA4MzA1OSwgOTgzMjUzLCA2NDkyNSwgMTIwMjgzLCAxMjcyMDQsIDExODk4MiwgNzE5MDUsIDc3MDUsIDExOTQyLCAxMTMwNSwgCisgICAgMTI3MjAzLCAzMzA5LCA4Mjk3OSwgOTIwNiwgODI5ODAsIDExMzgyNCwgNjgwMiwgNzAzNTMsIDQxNjUzLCAxMjgwLCAxMjQxLCAKKyAgICA3MTY4LCAxMjA5NiwgMCwgNjY2MTUsIDQyNTY1LCA0MTY1MSwgOTgzODY5LCA5MTc2MjcsIDgzMDQyLCA0MTY1MCwgNjY1MDcsIAorICAgIDY2NDcwLCA3NDQ3MiwgMTI5MTQsIDQxNDkxLCA0MzkwMSwgOTQxMDYsIDYwNzgsIDk5NTQsIDc4ODIyLCAxNDc1LCAKKyAgICAxMTkyNDcsIDk5MzgsIDYwODQsIDkxNzU0NiwgNDEwNjQsIDQxMDYyLCAwLCAxMTM2ODAsIDMyNTYsIDEwMTg5LCA0MjA3NiwgCisgICAgNDMyNTIsIDc4ODIzLCA2ODA4OSwgODcyNywgMTIwOTIyLCA2NTg3NSwgOTE3OTE2LCAxMjkzNDksIDEyNzc2MiwgMTA1NjIsIAorICAgIDc0MjE1LCA0MzA2NSwgMTIwOTA2LCAwLCAzMjQ4LCA3NDI5NywgMzI2MSwgOTAxNSwgNzEzNTEsIDExMzcxOCwgMzYzNSwgCisgICAgNjQzMzcsIDkyNzU5LCAxMjUwNTQsIDAsIDcxOTUsIDgzMzQ2LCAyMDA3LCA2NDQzMSwgMTk1MDc1LCAxOTQ2NzAsIDkyMTk3LCAKKyAgICAxMjcwOTAsIDYzNSwgOTgzMTE4LCAxMjkwODIsIDY1NjEzLCA3NzkwOSwgOTI0MjAsIDczOTk3LCAxMjc5ODAsIDEyMTQ1NywgCisgICAgNDM5MDUsIDc5ODQsIDg2MDAsIDc0NDM0LCAxMjEwNDcsIDQxNzYsIDcwMDUwLCAyMDM0LCA3ODQyMywgMTExNTQsIDY1ODkxLCAKKyAgICAxMjcwMzgsIDAsIDMxOCwgMjAzOCwgMTI4NTQ0LCA3ODU5NiwgMTI5MDk0LCAzNjQ5LCAxMzE0OSwgNDIxNDUsIDQyNzk4LCAKKyAgICAzNjM0LCAxMjAyOTEsIDcxODg1LCA2NzY3NywgMTIwMTI0LCA3ODY2LCA3NTA0NSwgMTE0MDIsIDQyMTQ2LCA5NDAzMiwgCisgICAgNzQyMzgsIDQyNjY0LCAyODQ5LCAxMjcwMzQsIDAsIDc5MzgsIDEyOTYwLCAxNzYxLCAxMTgxMiwgNjUzNzksIDY4Mzg2LCAKKyAgICAxMjgxODUsIDExNTksIDcxMTgzLCA2OTcyOSwgMCwgNjY3NjgsIDcxNzgsIDEyMDg1MSwgOTgzODM2LCA0MTY4MCwgCisgICAgMTI4NDY5LCA4MzA5OCwgMTE1MzQsIDE1MTQsIDExNjY4LCA2Nzg5MSwgOTMxMywgNzAxNSwgMTI4NDkwLCA2Nzg3NywgCisgICAgMTk0NTYxLCAxMjk4OSwgNjY0NzQsIDkzNjgsIDEyODQ4LCAxNjI0LCA0MzI3MCwgMCwgNzQyNzgsIDEwODE4LCA4MzA5MSwgCisgICAgOTk1MywgMTI4MDA4LCA3ODQyMSwgMTE5NCwgMzI0MiwgOTc2MSwgOTU1NSwgODU5OCwgMTIwMjk5LCA2MTY5LCAxMjg3MSwgCisgICAgMTU1MSwgMjc5OCwgNjUxNzYsIDQ5NTgsIDQyNzUyLCAxMTkwMjUsIDkxNzkyNCwgNjc4NzUsIDEyMDMwMSwgMzQ5NSwgCisgICAgNjY2NDgsIDEyNTA3OSwgNzg3MDgsIDY4MzY0LCAxMjA3NzksIDQ4OTEsIDkxNzkzMywgMTA2NDEsIDEyNTI2NSwgNzM3NDYsIAorICAgIDEyMDk0NSwgNjgzNTIsIDAsIDczNzg3LCAxMjAxOTUsIDEyNzA5NCwgNzE5OSwgMTExMzEsIDEyMDYxNywgMTk0NzAwLCAwLCAKKyAgICA5ODM4NTIsIDEyNjk3OSwgNDI2ODUsIDQyNjc5LCAxOTMsIDc4Nzg5LCAwLCAwLCA0MjY2NywgOTgzODY4LCA1MjcxLCAKKyAgICA2ODMyMywgOTI1MTcsIDgzMzU2LCAxMzYyLCAxMzI5NywgMTE4ODYyLCA3MTg4MCwgMTk1MDkwLCAxOTQ5NjksIDczNzg5LCAKKyAgICAxMjA5ODksIDY2NTgsIDQ0MjYsIDEyNzA5MywgNjY4MzAsIDk4Mzg0MiwgODMxMDMsIDcyNzYsIDQyMTYzLCA1MjIwLCAKKyAgICAxMDA2NzAsIDc4NjIxLCA2NzgyMiwgMjQxNiwgMzMxMCwgNDI3MDMsIDgzMTA3LCAzNzksIDEyOTE1OSwgNDM3NTUsIAorICAgIDcwNTA0LCA0MzY0NywgMzIyMywgNjU0OTIsIDEyODQsIDE5NDc3MSwgNDU0OSwgMTE1MjMsIDAsIDcxMjUzLCA3MDc4NCwgCisgICAgMTA4MDcsIDk1NTgsIDkzMDI3LCAxMjgwMDMsIDg1MTUsIDg2ODgsIDEyODY2LCA2NTMwOCwgMzI5NCwgODMxNDMsIDg1MjksIAorICAgIDEyODEwMSwgNDMzODUsIDc1NjQsIDkxNzk4NiwgNDMzMjksIDgzMTQ4LCA5MjQ1OCwgNzM3NTcsIDY2NDU2LCA0MjM1OSwgCisgICAgMTI4NDM5LCAyMDMxLCAxMjczOTQsIDcyMDIsIDEyODIzMiwgMTI2NzYsIDQyNzI5LCA3NDc3NywgMzIxNSwgMTIwOTgyLCAKKyAgICA3NzEwLCAxNjEwLCA3MzgwMSwgMTI4ODA3LCAwLCA2NTY4MiwgMCwgNDM5MTcsIDY1OTI0LCA5OTc0LCAyMjgsIDQzOTIyLCAKKyAgICAxNTAxLCAxMjc1MTIsIDY0Mzk1LCA1MTc5LCA3MjAwLCA2MjI1LCAxMTg5MjcsIDQyOTk5LCAxNzI1LCA2NTUzMywgODE5NiwgCisgICAgNzQ3NiwgNzQzOTksIDAsIDY2ODY4LCA3MTUyLCA4NTAyLCA1NzYyLCAxOTY3LCA3NDgzLCA0Mzg5OCwgMCwgODEwNCwgCisgICAgNzAxMjgsIDc0NzQsIDQzOTE0LCA4MzA4MCwgMTI2NTA3LCAxMDQxNCwgMTMwMDEsIDgxNDEsIDE5NDk0OSwgNDI1MzcsIAorICAgIDE1NTcsIDQzNTk0LCAxMjg2NDIsIDYzMzAsIDY4MDUsIDg2MzEsIDI1NDUsIDQyOTM0LCA5MjIwMywgMTI1MjExLCA3NDE5MCwgCisgICAgMTI4NDc3LCA3MDQxMCwgOTgzNzg2LCA0Mjc2MiwgMTk0NzA4LCA0MjkxNCwgMTY1MCwgMjYyLCAxNjM3LCAxMjg1MDIsIAorICAgIDc5MDEsIDMyMzgsIDgzMDI2LCA0MTg2MSwgOTgzNzYzLCAxMjAyMTEsIDY1MTU4LCAxMDg2MCwgNzQ5NTksIDQzNjU4LCAKKyAgICA3NTI3LCA4MzA4NiwgNDMzMTksIDY0MTksIDAsIDQ1LCAxMjgwNjAsIDY0NTg4LCA5Mzk4OSwgMTI3NzUzLCAxMTk4MTAsIAorICAgIDcxOTQsIDUyOTEsIDEwMDM5OCwgNDM2NjYsIDEzMTI5LCAxMjY2MzksIDkwODQsIDcyNzE3LCA4NzM3LCA5ODMxNjUsIAorICAgIDEyODgxLCA3NTA2NiwgMTI5MDYsIDk2MzksIDc5MTIsIDI2MjAsIDE5NDgzMCwgMzU2NCwgMTI3MzkzLCA2OTk3OCwgMTc5LCAKKyAgICA0MzY0NCwgNzUwNDksIDY0NzU2LCAyODUzLCA3ODQ0MywgMTE4ODEzLCAxMjkwNDIsIDcwMzQ3LCAxMTkwMDksIDI4NTAsIAorICAgIDgwODQsIDk4MzA4NSwgNzM4NTAsIDI4MDEsIDkyMjg0LCA0MjA2OSwgMTE5ODM5LCA3NDc1NCwgODM1MjIsIDQyMDcyLCAKKyAgICA5MjczNiwgMTE5ODQyLCAxMDM5OCwgODMzODYsIDgzNTIzLCA4Mzc3LCAxMTkzMTIsIDgyNDUsIDY4NDAxLCAzMTU4LCAKKyAgICA5MjM5NiwgMzk4MywgNDM2NTYsIDkyMywgMTE5ODU3LCA5MjQ3MCwgMjkyLCAxMTExOSwgMTE5ODQ1LCA3MjcxNSwgMzIyMSwgCisgICAgMTc2MywgOTI0NjMsIDQ2MTIsIDY3NzI5LCAxMTk4NTAsIDcyNTMsIDcwNDU2LCA2ODM5MSwgNzUwMDIsIDEwNzgyLCAzNjM3LCAKKyAgICAxMjk5NiwgNDM1NDIsIDExMzY3NiwgNjQ1NzgsIDgzNDQ5LCAzMjI4LCA2OTYzNiwgODc4MywgOTgzMDkzLCAxMTk2MTQsIAogICAgIDI3MzEsIDAsIDEyMDgzMywgNzg1ODUsIDQxMDIsIDc2OTYsIDczODc4LCAxMjE0MTcsIDEyODEzMiwgNzA4MTMsIDQzMzE2LCAKICAgICA0MTc3LCAxMTI4MywgOTA4OSwgMTIwOTE4LCA3Mzk5NiwgMTIxMTExLCA2NDUwMCwgNDM2NzQsIDAsIDY0OTQ3LCAxODU2LCAKLSAgICAwLCAwLCA2Mzc5LCA5MTc4MDQsIDExMTQyLCAxMjcxNzYsIDMyMDgsIDEyOTc1LCA3NDc3NSwgMTI3MzgwLCA5ODM5MzEsIAotICAgIDkyMzg5LCA3NDA3MiwgNTUyNjksIDAsIDEyNDk2MiwgOTgzNjgzLCAyMDMzLCA3ODU3NywgNzg1NzYsIDgyOTY1LCA1NTI1NCwgCi0gICAgNzc0MCwgODI5NzQsIDcwNDQ4LCAxMjY1NTUsIDczOTY0LCA2ODUwNSwgOTM5ODgsIDY3NjEyLCA2NTY3NCwgMTI4MjQ0LCAKLSAgICA5NDExMCwgNDE2ODksIDAsIDc0MDA2LCA2NDkwOSwgNjY0NiwgMTE3OTAsIDc0MDE5LCAxMjg1MjAsIDEyODA2NiwgCi0gICAgMTI4MDMxLCA4NTYxLCA0NTczLCAxMjEzNzUsIDUzMjYsIDkyNTcxLCAxMjA2MDUsIDcyMzAsIDgyNTcsIDEyMTQxNSwgCi0gICAgODc3OCwgNDE2ODgsIDAsIDY1Nzc2LCAyMDcxLCA4MzE0LCA2NDU5LCA0MzUxMSwgNzYyOCwgNjUwOTIsIDczOTAzLCAKLSAgICA2NDM1NSwgMTEzNDIsIDEyODU2MSwgMCwgOTgzNDM0LCAxMjgyMjYsIDEyNzAwMSwgMCwgMTE4MTAsIDEzMTY0LCAxMDcyMywgCi0gICAgOTY3LCA5ODMzMzUsIDEyMDk4NSwgMTE5NDYsIDk4MzYwMiwgMzI1NywgMTI3MjA5LCAxMjMwNywgMTg0NSwgMTI5MDcyLCAKLSAgICA0MzUyNiwgMCwgMTE5NTczLCAxODg2LCA0MjM0MiwgMTAwODksIDg3MCwgNzY0OCwgMzQ5OSwgNzY2MiwgNzY1MiwgODc2LCAKLSAgICA4NzEsIDg3NywgNzY2NSwgODc4LCA0MjAxNSwgODc5LCA0MzY5MiwgNDU2MywgMCwgOTE3ODkyLCA3NTkxLCA2NTg4NywgCi0gICAgODY3LCA5NTIwLCA4NzIsIDc2NTYsIDg2OCwgODczLCA3NjQyLCA3NjU5LCA4NjksIDg3NCwgNzY0NCwgMTIwNjc0LCA4NzUsIAotICAgIDc5MCwgMTI4MzAzLCAxMTg5MzgsIDE5NTA1MywgOTMwMzgsIDY2MTgyLCAxOTQ2MjMsIDU0MjksIDE5NTA1NSwgNjYxODAsIAotICAgIDEyNjQ4MCwgNjYxODEsIDY4NDUyLCA5ODMyOTEsIDEyNzIxNCwgNDIwNjcsIDAsIDU0MzMsIDEwNjU3LCA3OTExLCAKLSAgICAxMjUxMTksIDE1NDcsIDY2MTc2LCA0MjAxMiwgMTIwNTc2LCA1NDI1LCA0OTc3LCA5OTk5LCA1MzE3LCA1NDIzLCA0NjExLCAKLSAgICAxMjUwOTQsIDY3NjM3LCAxMjcyODYsIDk2NzksIDc0MTIyLCA5Mjk3OCwgOTE3NTg1LCAwLCA2NjE5NCwgNDQxOCwgNjYxODQsIAotICAgIDQ2MjgsIDQyNDUsIDExOTY0OCwgMCwgMTI3MjYzLCAxODUxLCAxMjQ5OTUsIDgzMzIwLCAxMTkwOCwgMCwgOTM2MCwgCi0gICAgMTE4ODk3LCAxMjA4NzQsIDQyNzc2LCA2NjE4NywgMTI4MzcsIDg4MjksIDc3MTEsIDExMTEyLCAwLCA5MjMyMSwgNDMzMTgsIAotICAgIDkyMzAyLCA4ODA5LCA2OTg4MSwgMCwgMTI2NTE4LCAxMjA2MDQsIDk4MzA1MiwgOTgzMjc3LCA5ODM0MzMsIDEyODQxMiwgMCwgCi0gICAgMTIwNTc3LCA3NDI3LCA5OTU4LCA0NTg4LCA0MzY4MCwgMCwgNzQ0ODQsIDEyNzE4NSwgMjQzMywgMTI4NjAyLCA2OTk3MywgCi0gICAgMzM1MiwgNzQzNjMsIDEyODY2OCwgMTIxMzQxLCA3OTMsIDc0NDA0LCAxMTE5NywgMzA1LCA1NjcsIDY3NjYyLCA4NDIsIAotICAgIDY5OTc5LCA4MjA4LCA2ODMwOCwgNDE2OTUsIDE2NDcsIDExODg3NywgNzA4NDEsIDc4MzcsIDkxNzYyNSwgODE4LCA1MzM3LCAKLSAgICAxOTQ2MjgsIDkxNzYyMSwgNDEzNzYsIDExOTk3OCwgNjg3NDIsIDEyMDU5NCwgNzQwODYsIDY4Nzc3LCA3MDE3OSwgCi0gICAgOTE3NjEzLCAxMDk3MywgNjYzNTksIDEzNzIsIDEyNzE3MiwgOTE3NjA4LCA0OTY5LCAxMjU0LCA5MTc2MDUsIDE5NDY1NCwgCi0gICAgOTM5NjcsIDkxNzYwMiwgNjUyMjgsIDc4MjIxLCAxMjY2MTIsIDY3NzIzLCAyODQwLCA5ODM5MDUsIDc4ODI5LCA5ODM5MzksIAotICAgIDY2ODg3LCAzMjQ1LCA5MDY4LCA2ODE5NCwgNjQ3MjUsIDEyMTE2MSwgMTI4MDUxLCAxMjk5MSwgMTI0OTcxLCAyNjUxLCAKLSAgICA2ODAxNiwgOTgzMjY3LCAxMjczMjYsIDEyNTAzOCwgNzA4MzUsIDAsIDcwODQ0LCA0MzY0OCwgMTIwODEyLCA5MTc4MzMsIAotICAgIDQzMzIyLCA5MjY2MiwgMCwgMCwgNjQzNzIsIDkyNjk4LCAzMjI2LCA2NTUsIDc1MiwgNzQ1NywgNzQ1NiwgNzQ1MiwgMzI4NSwgCi0gICAgNzQ4OTQsIDExMTUyLCA5MjkwMywgNjU2MTAsIDIzOTEsIDkyOTA4LCA5MjI0OCwgNjcxLCAyNTAsIDc0MzQsIDYxOCwgNjY4LCAKLSAgICA2MTAsIDQyODAwLCA3NDMxLCAxMTUyLCA0MjgwMSwgNjQwLCAxMjA2NjYsIDc0NDgsIDc0MzksIDYyOCwgMzkwNSwgNzM4MTAsIAotICAgIDEyODM0MCwgMTI4MjY2LCA2NDc0OSwgNjc4NTAsIDIxMDcsIDEyODI5MCwgNzQyNDksIDQ2MDUsIDEyODE3NCwgOTgzMTkyLCAKLSAgICA0MzM3MiwgNjU5NDUsIDEyNzI0OSwgMTExMTMsIDExOTU5MCwgMCwgMCwgNzA0OTUsIDk4NywgNjkyNywgMTE1NzIsIAotICAgIDQyMjYxLCAxMTQ2NCwgMzM2NSwgOTk3MSwgMCwgOTgzOTUxLCAxMjgyOTcsIDAsIDc4NzYyLCAxMjc4NjcsIDEyMTM2OCwgCi0gICAgMTEzMzQsIDQzMzI2LCAxMjYwOSwgMTE1MTksIDExNTAzLCA1NTMwLCA1MjEwLCAwLCA0NjI3LCAxMTkyNjksIDUyMDgsIDAsIAotICAgIDcwMDkwLCAxMDMzMiwgMjQyNCwgNzk3NiwgOTE1NiwgMCwgMzI0NCwgNTUyOSwgNjk2NDcsIDczODk0LCAxMjg4NTIsIAotICAgIDU0MzIsIDY0OTY1LCA1NTI3LCA0MjMxNSwgMTA1MTYsIDc3OTAsIDU1MjgsIDEyODgzOCwgNDIxNDAsIDEyMDI4MSwgMCwgCi0gICAgOTgzNzc3LCA0MzU0NSwgOTg4NywgMTIxNDc3LCA0MDAwLCA3NDI5LCA3NDI4LCA2NjUsIDc0MjQsIDMyMDYsIDEyMDI3OCwgCi0gICAgNzg4NCwgMCwgMTI4NTY2LCA3NDkxMCwgMTI4NjY2LCAyMTEsIDI1MDksIDkyOTA0LCA3MDgyMiwgNjg2NzIsIDMyMjAsIAotICAgIDQyMjM1LCA3ODQ4MCwgMTA2OTAsIDg5NTEsIDUyMTQsIDQyNDc0LCA4MTE4LCAwLCA3MDQ4LCA0NTkwLCAxMjcyNTgsIAotICAgIDU4NTIsIDAsIDc4NDgyLCAxMjcyNTksIDE3MDgsIDAsIDc4NDgxLCAyNjIzLCAxMTk0MywgMTI4NzAwLCA2OTIyNiwgCi0gICAgNjk5NzQsIDQ2OTgsIDY2NTA5LCAxMDY2LCAxMTk5MjEsIDQ3MDEsIDk4Mzg3NiwgMTIwMjg1LCA3MDQ0NywgOTQxMTEsIAotICAgIDgyNjcsIDAsIDE0MjEsIDY2NDI2LCA3NTE2LCAxMjc1NTIsIDI2MjUsIDk4MzY0MSwgODAzNCwgNzQzMDksIDAsIDM2MzEsIAotICAgIDEwOTU1LCA3ODUwLCAxMjAyOTMsIDg0MTYsIDAsIDk4MzA2NSwgMCwgNDMzODQsIDEyNjYwLCAxMjg2OTMsIDEyODI3MCwgMCwgCi0gICAgNzQ4NTAsIDQxMDY5LCA3MDE4NSwgMTI4MTU2LCAxMjA5OSwgNDMxMCwgMTAwMzIsIDYyNTIsIDcxMywgNzk5MCwgOTgzNDg5LCAKLSAgICAzOTkwLCAxMjUwNTAsIDk4MzI2NCwgNjYzNjgsIDUwMTcsIDY0OTU2LCA3MDcxLCAwLCA3MDQ1NywgMTAzMCwgMTE4ODAwLCAKLSAgICA5MjU2MywgOTUxMywgNDEwNTksIDkzNTcsIDc0OTg4LCAxNzczLCA3NzkzOSwgMTIwMzUwLCAxMjQ5NjEsIDYzMzksIDc3NDUsIAotICAgIDk4NDQsIDEyNzIyMCwgNjQ2NTAsIDk0LCAxODgwLCA3NDc2NiwgMTEzNzE5LCA4OTA4LCA5ODMyMjIsIDEyODcwNywgCi0gICAgNjU5MTMsIDc4NDcwLCAxMDc1MiwgMTMwMDMsIDY4NzY5LCAxMjY1NzIsIDQxMzA3LCA4NzMyLCAxMjAzMzYsIDAsIDE3NTcsIAotICAgIDY5NjQsIDQ2OTYsIDAsIDEyMDMzMywgNjQ3ODUsIDczOTQsIDM2NDEsIDU0MTksIDEyODA1NSwgMCwgMTI3ODgzLCAKLSAgICAxOTQ3MDcsIDEyMDM0NCwgNDM5ODgsIDcwNDIzLCA4NjEwLCA0MzA2MiwgNzU5MiwgODU2LCA3NDI5OSwgOTM2LCAxMzI4OSwgCi0gICAgNjk4OTQsIDQzMTcxLCAxNDU5LCAxMjgyMjQsIDY1MjQzLCA3ODYzOCwgMTk5NTMsIDEyOTA3OCwgMTUwNCwgNzAwNjQsIDAsIAotICAgIDEyOTEzLCA3NDIwNiwgNzUyOSwgMTI4NzQ1LCAxMjc4NjgsIDcwMjAzLCAxMjA3ODIsIDQxMTMsIDEyMDkyOSwgMjM3MiwgCi0gICAgMzM2LCAwLCA3NTA5LCAxMjE1MiwgMTk0ODg1LCA2ODIsIDc2NTUsIDQxNTA1LCAwLCA2NDc0MywgMTA1OTMsIDE3MDMsIAotICAgIDkyNDY3LCA3NzkxMSwgODAzMywgNjk5NTMsIDAsIDk4MTAsIDEyNzI2OSwgMTIwMDEzLCAxMjk3MCwgMCwgNDIzNTEsIAotICAgIDEwMTA5LCA3NDUzNSwgNzQwNjgsIDc0OTIxLCAwLCA5MjY5MCwgMCwgNjUwNjgsIDc0MjkxLCAxOTY1LCA3MDY5LCA0MzMxMiwgCi0gICAgMCwgNzM4ODcsIDExMTMwLCAyMDg3LCA2NDM3MCwgNjMxNCwgNDE3MTQsIDg1MDEsIDExMTQ1LCAxMjExMTcsIDc0MjM5LCAKLSAgICA0MTMxNywgOTI2MTQsIDIwOTEsIDc0NTQ1LCAyMDkwLCA2OTkxMiwgOTM1MywgNzExNywgMjA3NywgNzc4ODYsIDExMTYxLCAKLSAgICAxMDQ5OCwgMjA4MywgNzc4ODgsIDcxMTk2LCAwLCAxMTkyMzYsIDYzNCwgMTI0OTcwLCA5MjI5MCwgMTk0ODg2LCA2OTc3OSwgCi0gICAgNDE2NSwgODc0NiwgMTk1MDQ4LCA5NjU0LCAxMjg1NiwgNjkyNCwgNzY2MCwgNzA2NiwgMTk0NjkzLCA3MDQxNSwgMTI4MTM1LCAKLSAgICA0MTAzNywgNDI2OTIsIDc3ODYsIDEyOTU5LCA0MTAzOSwgMTI3NDgzLCAxMjQ5NjUsIDY4MCwgMjMwMiwgMTI4MjAwLCAKLSAgICAxMTgxLCA3MDU2LCAzMTc0LCA2NzI0OCwgMCwgOTI2NjgsIDY1NjY1LCAxMjczNzUsIDExMzc3NiwgNjkyMCwgMCwgOTIyOTUsIAotICAgIDEyNjYwNiwgMTE4OTY1LCA2ODMxOCwgNjQ2NDQsIDEyNjk4MSwgNzQxMTksIDY4MjM4LCA0MTAyOCwgNzQwMjUsIDYyMzEsIAorICAgIDEwMDU3MiwgMTI3ODEyLCA2Mzc5LCA5MTc4MDQsIDExMTQyLCAxMjcxNzYsIDMyMDgsIDEyOTc1LCA3NDc3NSwgMTE5MTIxLCAKKyAgICA5ODM5MzEsIDkyMzg5LCA3NDA3MiwgNTUyNjksIDAsIDEyNDk2MiwgOTgzMzI5LCAyMDMzLCA3ODU3NywgNzg1NzYsIAorICAgIDgyOTY1LCA1NTI1NCwgNzc0MCwgODI5NzQsIDcwNDQ4LCAxMjY1NTUsIDczOTY0LCA2ODUwNSwgOTM5ODgsIDY3NjEyLCAKKyAgICA2NTY3NCwgMTI3NTUyLCA5NDExMCwgNDE2ODksIDk4MzQxMCwgNzQwMDYsIDY0OTA5LCA2NjQ2LCAxMTc5MCwgNzQwMTksIAorICAgIDEyODUyMCwgMTI4MDY2LCAxMjgwMzEsIDg1NjEsIDQ1NzMsIDEyMTM3NSwgNTMyNiwgOTI1NzEsIDEyMDYwNSwgNzIzMCwgCisgICAgODI1NywgMTIxNDE1LCA4Nzc4LCA0MTY4OCwgMCwgNjU3NzYsIDIwNzEsIDgzMTQsIDY0NTksIDQzNTExLCA3NjI4LCAKKyAgICA2NTA5MiwgNzM5MDMsIDY0MzU1LCAxMTM0MiwgMTAwNTc5LCA5ODM3MzIsIDE5NDkzOSwgMTI4MjI2LCAxMjcwMDEsIAorICAgIDEyNzk0NCwgMTE4MTAsIDEzMTY0LCAxMDcyMywgOTY3LCAxMDA0ODEsIDEyMDk4NSwgMTE5NDYsIDEyOTAzMiwgMzI1NywgCisgICAgMTI3MjA5LCAxMjMwNywgMTg0NSwgMTAwNTc4LCA0MzUyNiwgOTgzMDg0LCAxMTk1NzMsIDE4ODYsIDQyMzQyLCAxMDA4OSwgCisgICAgODcwLCA3NjQ4LCAzNDk5LCA3NjYyLCA3NjUyLCA4NzYsIDg3MSwgODc3LCA3NjY1LCA4NzgsIDQyMDE1LCA4NzksIDQzNjkyLCAKKyAgICA0NTYzLCA5ODMyNDksIDkxNzg5MiwgNzU5MSwgNjU4ODcsIDg2NywgOTUyMCwgODcyLCA3NjU2LCA4NjgsIDg3MywgNzY0MiwgCisgICAgNzY1OSwgODY5LCA4NzQsIDc2NDQsIDEyMDY3NCwgODc1LCA3OTAsIDEyMTA4MiwgMTE4OTM4LCAxMDA0MjcsIDkzMDM4LCAKKyAgICA2NjE3NywgMTk0NjIzLCA1NDI5LCAxOTUwNTUsIDY2MTgwLCAxMjY0ODAsIDY2MTgxLCA2ODQ1MiwgMTk0OTY2LCAxMTkyNDQsIAorICAgIDQyMDY3LCAxMTk5OTMsIDU0MzMsIDEwNjU3LCA3OTExLCAxMjUxMTksIDE1NDcsIDY2MTc2LCA0MjAxMiwgMTIwNTc2LCAKKyAgICA1NDI1LCA0OTc3LCA5OTk5LCA1MzE3LCA1NDIzLCA0NjExLCAxMjUwOTQsIDY3NjM3LCAxMjcyODYsIDk2NzksIDc0MTIyLCAKKyAgICA5Mjk3OCwgOTE3NTg1LCAwLCA2NjE5NCwgNDQxOCwgNjYxODQsIDQ2MjgsIDQyNDUsIDExOTY0OCwgMCwgMTI3MjYzLCAKKyAgICAxODUxLCAxMjA4MjMsIDgzMzIwLCAxMTkwOCwgMCwgOTM2MCwgMTE4ODk3LCAxMjA4NzQsIDQyNzc2LCA2NjE4NywgMTI4MzcsIAorICAgIDg4MjksIDc3MTEsIDExMTEyLCAxMjg3ODcsIDkyMzIxLCA0MzMxOCwgOTIzMDIsIDg4MDksIDY5ODgxLCAxMjg1NjQsIAorICAgIDEyNTIyOSwgMTIwNjA0LCA5ODMwNTIsIDk4MzIzOCwgOTgzNDMzLCAxMjg0MTIsIDAsIDEyMDU3NywgNzQyNywgOTk1OCwgCisgICAgNDU4OCwgNDM2ODAsIDAsIDc0NDg0LCAxMjcxODUsIDI0MzMsIDEyODYwMiwgNjk5NzMsIDMzNTIsIDc0MzYzLCAxMjY2MDEsIAorICAgIDEyMTM0MSwgNzkzLCA3NDQwNCwgMTExOTcsIDMwNSwgNTY3LCA2NzY2MiwgODQyLCA2OTk3OSwgODIwOCwgNjgzMDgsIAorICAgIDQxNjk1LCAxNjQ3LCAxMTg4NzcsIDcwODQxLCA3ODM3LCA5MTc2MjUsIDgxOCwgNTMzNywgMTI4Mzc3LCAxMjc5ODksIAorICAgIDQxMzc2LCAxMTk5NzgsIDY4NzQyLCAxMjA1OTQsIDc0MDg2LCA2ODc3NywgNzAxNzksIDkxNzYxMywgMTA5NzMsIDY2MzU5LCAKKyAgICAxMzcyLCAxMjcxNzIsIDkxNzYwOCwgNDk2OSwgMTI1NCwgMTk1MDA2LCAxOTQ2NTQsIDkzOTY3LCA5MTc2MDIsIDY1MjI4LCAKKyAgICA3ODIyMSwgNzI3NDYsIDY3NzIzLCAyODQwLCAxMjg4NDIsIDc4ODI5LCA5ODM5MzksIDY2ODg3LCAzMjQ1LCA5MDY4LCAKKyAgICA2ODE5NCwgNjQ3MjUsIDEyMTE2MSwgMTI4MDUxLCAxMjk5MSwgMTI0OTcxLCAyNjUxLCA2ODAxNiwgOTgzMjY3LCA3Mjg3MywgCisgICAgMTAwNjAxLCA3MDgzNSwgMCwgNzA4NDQsIDQzNjQ4LCAxMjA4MTIsIDE5NDg1NCwgNDMzMjIsIDkyNjYyLCAwLCAwLCAKKyAgICA2NDM3MiwgOTI2OTgsIDMyMjYsIDY1NSwgNzUyLCA3NDU3LCA3NDU2LCA3NDUyLCAzMjg1LCA3NDg5NCwgMTExNTIsIAorICAgIDkyOTAzLCA2NTYxMCwgMjM5MSwgOTI5MDgsIDkyMjQ4LCA2NzEsIDI1MCwgNzQzNCwgNjE4LCA2NjgsIDYxMCwgNDI4MDAsIAorICAgIDc0MzEsIDExNTIsIDQyODAxLCA2NDAsIDEyMDY2NiwgNzQ0OCwgNzQzOSwgNjI4LCAzOTA1LCA3MzgxMCwgMTI4MzQwLCAKKyAgICAxMDA3NDEsIDY0NzQ5LCA2Nzg1MCwgMjEwNywgMTI4MjkwLCA3NDI0OSwgNDYwNSwgMTI4MTc0LCAxMDA3NDUsIDQzMzcyLCAKKyAgICA2NTk0NSwgNzI3MTAsIDExMTEzLCAxMTk1OTAsIDAsIDEwMDc0OSwgNzA0OTUsIDk4NywgNjkyNywgMTE1NzIsIDQyMjYxLCAKKyAgICAxMTQ2NCwgMzM2NSwgOTk3MSwgNzA2NzMsIDEyNzk0MiwgMTI4Mjk3LCAwLCA3ODc2MiwgMTI3ODY3LCAxMjEzNjgsIAorICAgIDExMzM0LCA0MzMyNiwgMTI2MDksIDExNTE5LCAxMTUwMywgNTUzMCwgNTIxMCwgMCwgNDYyNywgMTE5MjY5LCA1MjA4LCAKKyAgICAxMTM2OTAsIDcwMDkwLCAxMDMzMiwgMjQyNCwgNzk3NiwgOTE1NiwgMCwgMzI0NCwgNTUyOSwgNjk2NDcsIDQyMTQyLCAKKyAgICAxMjg4NTIsIDU0MzIsIDY0OTY1LCA1NTI3LCA0MjMxNSwgMTA1MTYsIDc3OTAsIDU1MjgsIDEyODgzOCwgNDIxNDAsIAorICAgIDEyMDI4MSwgMCwgMTk1MDg4LCA0MzU0NSwgOTg4NywgMTIxNDc3LCA0MDAwLCA3NDI5LCA3NDI4LCA2NjUsIDc0MjQsIAorICAgIDMyMDYsIDEyMDI3OCwgNzg4NCwgMCwgMTI4NTY2LCA3NDkxMCwgMTI4NjY2LCAyMTEsIDI1MDksIDkyOTA0LCA3MDgyMiwgCisgICAgNjg2NzIsIDMyMjAsIDQyMjM1LCA3ODQ4MCwgMTA2OTAsIDg5NTEsIDUyMTQsIDQyNDc0LCA4MTE4LCA5ODM4MzMsIDcwNDgsIAorICAgIDQ1OTAsIDEyNzI1OCwgNTg1MiwgOTgzODE5LCA3ODQ4MiwgMTI3MjU5LCAxNzA4LCAwLCA3ODQ4MSwgMjYyMywgMTE5NDMsIAorICAgIDEyMTE0MCwgNjkyMjYsIDY5OTc0LCA0Njk4LCA2NjUwOSwgMTA2NiwgMTE5OTIxLCA0NzAxLCAxMDA1NjQsIDEyMDI4NSwgCisgICAgNzA0NDcsIDk0MTExLCA4MjY3LCAwLCAxNDIxLCA2NjQyNiwgNzUxNiwgMTIwNDA2LCAyNjI1LCAxMjgyNDIsIDgwMzQsIAorICAgIDc0MzA5LCAxOTQ3MTUsIDM2MzEsIDEwOTU1LCA3ODUwLCAxMjAyOTMsIDg0MTYsIDEyNzAzMiwgMTIwNjEzLCA5ODM1NzgsIAorICAgIDQzMzg0LCAxMjY2MCwgMTIyODgzLCAxMjgyNzAsIDAsIDc0ODUwLCA0MTA2OSwgNzAxODUsIDEyODE1NiwgMTIwOTksIAorICAgIDQzMTAsIDEwMDMyLCA2MjUyLCA3MTMsIDc5OTAsIDk4MzQ4OSwgMzk5MCwgMTI1MDUwLCA5ODMyNjQsIDY2MzY4LCA1MDE3LCAKKyAgICA2NDk1NiwgNzA3MSwgMCwgNzA0NTcsIDEwMzAsIDExODgwMCwgOTI1NjMsIDk1MTMsIDQxMDU5LCA5MzU3LCA3MDY3NSwgCisgICAgMTc3MywgNzc5MzksIDEyMDM1MCwgMTI0OTYxLCA2MzM5LCA3NzQ1LCA5ODQ0LCAxMjcyMjAsIDY0NjUwLCA5NCwgMTg4MCwgCisgICAgNzQ3NjYsIDExMzcxOSwgODkwOCwgOTgzMjIyLCAxMjgyMzYsIDY1OTEzLCA3ODQ3MCwgMTA3NTIsIDEzMDAzLCA2ODc2OSwgCisgICAgMTI2NTcyLCA0MTMwNywgODczMiwgMTIwMzM2LCAxMDA2NjksIDE3NTcsIDY5NjQsIDQ2OTYsIDAsIDEyMDMzMywgNjQ3ODUsIAorICAgIDczOTQsIDM2NDEsIDU0MTksIDEyODA1NSwgMCwgMTI3ODgzLCAxOTQ3MDcsIDEyMDM0NCwgNDM5ODgsIDcwNDIzLCA4NjEwLCAKKyAgICA0MzA2MiwgNzU5MiwgODU2LCA3NDI5OSwgOTM2LCAxMzI4OSwgNjk4OTQsIDQzMTcxLCAxNDU5LCAxMjgyMjQsIDY1MjQzLCAKKyAgICA3ODYzOCwgMTk5NTMsIDEyOTA3OCwgMTUwNCwgNzAwNjQsIDcyNDIxLCAxMjkxMywgNzA3MjIsIDc1MjksIDEyMDYwOCwgCisgICAgMTI3ODY4LCA3MDIwMywgMTIwNzgyLCA0MTEzLCAxMjA5MjksIDIzNzIsIDMzNiwgMCwgNzUwOSwgMTIxNTIsIDE5NDg4NSwgCisgICAgNjgyLCA3NjU1LCA0MTUwNSwgOTgzNzUzLCA2NDc0MywgMTA1OTMsIDE3MDMsIDkyNDY3LCA3NzkxMSwgODAzMywgNjk5NTMsIAorICAgIDAsIDk4MTAsIDEyNzI2OSwgMTIwMDEzLCAxMjk3MCwgOTgzMjA1LCA0MjM1MSwgMTAxMDksIDc0NTM1LCA3NDA2OCwgCisgICAgNzQ5MjEsIDAsIDkyNjkwLCAxMjI4ODYsIDY1MDY4LCA3NDI5MSwgMTk2NSwgNzA2OSwgNDMzMTIsIDAsIDczODg3LCAKKyAgICAxMTEzMCwgMjA4NywgNjQzNzAsIDYzMTQsIDQxNzE0LCA4NTAxLCAxMTE0NSwgMTIxMTE3LCA3NDIzOSwgNDEzMTcsIAorICAgIDkyNjE0LCAyMDkxLCA3NDU0NSwgMjA5MCwgNjk5MTIsIDkzNTMsIDcxMTcsIDIwNzcsIDc3ODg2LCAxMTE2MSwgMTA0OTgsIAorICAgIDIwODMsIDc3ODg4LCA3MTE5NiwgMCwgMTE5MjM2LCA2MzQsIDEyNDk3MCwgOTIyOTAsIDE5NDg4NiwgNjk3NzksIDQxNjUsIAorICAgIDg3NDYsIDE5NTA0OCwgOTY1NCwgMTI4NTYsIDY5MjQsIDc2NjAsIDcwNjYsIDEyNzA1MSwgNzA0MTUsIDEyODEzNSwgCisgICAgNDEwMzcsIDQyNjkyLCA3Nzg2LCAxMjk1OSwgMjIzMywgMTI3NDgzLCAxMjQ5NjUsIDY4MCwgMjMwMiwgMTI4MjAwLCAxMTgxLCAKKyAgICA3MDU2LCAzMTc0LCA2NzI0OCwgOTgzMTcxLCA5MjY2OCwgNjU2NjUsIDEwMDU5NCwgMTEzNzc2LCA2OTIwLCAwLCA5MjI5NSwgCisgICAgNzA2NzIsIDExODk2NSwgNjgzMTgsIDY0NjQ0LCAxMjY5ODEsIDc0MTE5LCA2ODIzOCwgNDEwMjgsIDc0MDI1LCA2MjMxLCAKICAgICAyNjEzLCA2NTMwMiwgNDA5ODksIDY4MjM5LCA2ODIzMCwgNjgyMzQsIDQyNzYwLCAwLCA0Mzg5NiwgMCwgNDA5ODcsIDQ2NjcsIAotICAgIDAsIDcxODQzLCA4ODI4LCA3Nzk5NSwgNzA1MDYsIDEyNDYsIDQ3NDYsIDEyODUwMSwgMTI4NTA4LCAxMTAyMSwgNDc0OSwgCi0gICAgOTI2NzUsIDkxNzg4MiwgOTIxLCA0NzQ0LCAwLCAxMjcwMiwgMjQyLCAwLCAxNTY2LCA4MjE3LCAxMjcyMTAsIDY0NjUzLCAKLSAgICA3ODM4NiwgNzQ2MTcsIDc0MDM2LCA3NDUwNSwgNDMyNzQsIDUzMTMsIDk1MSwgNzQ1NjgsIDkyOTgzLCA5ODM4NjcsIDc2MDQsIAotICAgIDk4MzI5MiwgNDAwOSwgNzAyNzcsIDcxODQ0LCAxMjA1NjIsIDAsIDk4MzcyMCwgNjQ4NjAsIDExOTEzOCwgMTE5MDY5LCAwLCAKLSAgICAxMjczNzAsIDQwNDgsIDk4MzU5OCwgODMwMDksIDcwMDI0LCAxNjQ2LCA3Nzg5MCwgNjQ1MzQsIDczOTk1LCAxMjA3MDUsIAotICAgIDEyOTA0NywgMTE5ODkwLCAyNTc5LCAxMTk5MDUsIDMxNzcsIDExMzU3LCA5MDk5LCA0MTA3LCAzNDQxLCAxMTk4OTQsIAotICAgIDI5NzUsIDc0NDQyLCA5ODIyLCA5ODM5MzUsIDU1MjIwLCAxMDA4NCwgNzM5NDMsIDExODg0MCwgMCwgOTE3NTYyLCA3ODI5OSwgCi0gICAgMzM5OSwgOTg1MSwgOTE3NjA5LCAxMTkwOSwgOTA1OSwgMCwgNzY4NywgMCwgNjc4OSwgMTI3NzY3LCAwLCA3MTg0MiwgCi0gICAgNzAxNzgsIDkyMzE0LCAwLCAxNzc3LCA5MTUxLCAxMTM3LCA2Njg2NywgNzQ5LCA0MjM2NiwgNzA0NDQsIDUzODUsIDcwNzkxLCAKLSAgICA3MjQzNSwgNzAxMjcsIDgzMzc3LCA1OTg5LCAxMjg5MDUsIDc0NjM2LCAxMjA4NDgsIDAsIDQxNjg1LCA2OTIyMywgMCwgCi0gICAgOTc2OSwgNDE2ODQsIDE5NDczNywgNTE5LCAxMTkyMzEsIDExNzQwLCA1NzY2LCAwLCAwLCAyNjAwLCA4ODQ4LCA3MDQxNiwgCi0gICAgNDEyOTcsIDAsIDM2NjYsIDcwNDIwLCA0MTMwMCwgNzQ0NjgsIDY1MTYwLCAwLCA2OTY4OCwgNjk3NzEsIDc0NDc5LCAwLCAKLSAgICA2NTU4LCAxMjcxNDksIDEyODA2NCwgNjk3NjUsIDkyNzc1LCAyNTIsIDAsIDQxMzAyLCAxMTkzNTAsIDgzNTA0LCAxMTg4MzksIAotICAgIDY5NzYzLCA2ODc2MiwgMTE3MjksIDg3MTksIDkwNjAsIDEyOTA5MSwgMTIwMTM5LCAxMDc2MSwgMCwgMCwgMTI5NDEwLCAKLSAgICAxMTg3OTIsIDExNzM0LCA5MzAxMSwgMTE3MzAsIDExMzc0MSwgOTU5MywgNTc1NywgMjQwMywgNjQ4MDgsIDU1Mjc1LCAwLCAKLSAgICAxMTcyOCwgNDM1NzIsIDk4MzEzOSwgMCwgNzc2NCwgNjg3NDEsIDExMDk0LCAxMjA4MjUsIDAsIDQzNDg5LCA0MjgyLCAKLSAgICA4Mjk4LCAwLCAwLCA3MDMyOCwgMTk0OTg2LCA3MDMyNCwgNjQ0NDksIDAsIDEyNjY1MCwgNjM4NTQsIDg0NTYsIDY1NTg3LCAKLSAgICA3MDQ0MiwgNjU2NzAsIDk4Mzk2MywgNzgyNTAsIDAsIDc3NzQsIDEwNjA3LCA5NzkyLCA5ODM4NjksIDcwMzI2LCAwLCAKLSAgICA3MTQ2MCwgMTIwNzY0LCA3MDMyMiwgMTAwMTksIDc0NzYyLCAwLCAzNDU4LCA0MzY1LCA3MDA1MywgOTgzNzEyLCAzNjQ3LCAKLSAgICAxMjAyMDcsIDI2MDIsIDEyODM0MSwgMTIxMTAzLCAxMjUwNDMsIDQxMTM1LCA4MzQ5OCwgMCwgMTIxMzI1LCA2NDYzMSwgCi0gICAgMTcyLCA0OTcxLCA0MTIxOSwgNDExMzcsIDE4ODksIDcyMzgsIDY1NDUsIDEyNjQ3NiwgNzc5MjYsIDc1OTcsIDEwNTI4LCAKLSAgICA3NTA1NCwgMCwgMzczMiwgNzM5MTAsIDE5NDU4OCwgNTM0NCwgOTgzOTcxLCA0MzM2NiwgNDMzNjMsIDkwNjIsIDExOTI1MiwgCisgICAgMTIxMjEyLCA3MTg0MywgODgyOCwgNzc5OTUsIDcwNTA2LCAxMjQ2LCA0NzQ2LCAxMjg1MDEsIDEyODUwOCwgMjI2OSwgCisgICAgNDc0OSwgOTI2NzUsIDkxNzg4MiwgOTIxLCA0NzQ0LCAwLCAxMjcwMiwgMjQyLCAxMDA1OTUsIDE1NjYsIDgyMTcsIAorICAgIDEyNzIxMCwgNjQ2NTMsIDc4Mzg2LCA3NDYxNywgNzQwMzYsIDc0NTA1LCA0MzI3NCwgNTMxMywgOTUxLCA3NDU2OCwgCisgICAgOTI5ODMsIDk4Mzg2NywgNzYwNCwgMTI4MjY2LCA0MDA5LCA3MDI3NywgNzE4NDQsIDEyMDExNSwgMTI2NjQyLCA5NDA3NCwgCisgICAgNjQ4NjAsIDEwMDU1MSwgMTE5MDY5LCAwLCAxMjczNzAsIDQwNDgsIDk4MzU5OCwgODMwMDksIDcwMDI0LCAxNjQ2LCAKKyAgICA3Nzg5MCwgNjQ1MzQsIDczOTk1LCAxMjA3MDUsIDEyOTA0NywgMTE5ODkwLCAyNTc5LCAxMTk5MDUsIDMxNzcsIDExMzU3LCAKKyAgICA5MDk5LCA0MTA3LCAzNDQxLCAxMTk4OTQsIDI5NzUsIDc0NDQyLCA5ODIyLCA5ODM5MzUsIDU1MjIwLCAxMDA4NCwgNzM5NDMsIAorICAgIDExODg0MCwgOTgzNzI4LCA5MTc1NjIsIDc4Mjk5LCAzMzk5LCA5ODUxLCA5MTc2MDksIDExOTA5LCA5MDU5LCAwLCA3Njg3LCAKKyAgICAxMjcwNTIsIDY3ODksIDEyNzc2NywgMCwgNzE4NDIsIDcwMTc4LCA5MjMxNCwgMCwgMTc3NywgOTE1MSwgMTEzNywgNjY4NjcsIAorICAgIDc0OSwgNDIzNjYsIDcwNDQ0LCA1Mzg1LCA3MDc5MSwgNzI0MzUsIDcwMTI3LCA4MzM3NywgNTk4OSwgMTI4OTA1LCA3NDYzNiwgCisgICAgMTIwODQ4LCAwLCA0MTY4NSwgNjkyMjMsIDAsIDk3NjksIDQxNjg0LCAxOTQ3MzcsIDUxOSwgMTE5MjMxLCAxMTc0MCwgCisgICAgNTc2NiwgMCwgMCwgMjYwMCwgODg0OCwgNzA0MTYsIDQxMjk3LCAwLCAzNjY2LCA3MDQyMCwgNDEzMDAsIDc0NDY4LCAKKyAgICA2NTE2MCwgMCwgNjk2ODgsIDY5NzcxLCA3NDQ3OSwgMCwgNjU1OCwgMTI3MTQ5LCAxMjgwNjQsIDY5NzY1LCA5Mjc3NSwgCisgICAgMjUyLCA5ODMxNDIsIDQxMzAyLCAxMDAzNzEsIDgzNTA0LCAxMTg4MzksIDY5NzYzLCA2ODc2MiwgMTE3MjksIDg3MTksIAorICAgIDkwNjAsIDEyNTA3NywgMTIwMTM5LCAxMDc2MSwgMCwgMCwgMTI5NDEwLCAxMTg3OTIsIDExNzM0LCA5MzAxMSwgMTE3MzAsIAorICAgIDExMzc0MSwgOTU5MywgNTc1NywgMjQwMywgNjQ4MDgsIDU1Mjc1LCAwLCAxMTcyOCwgNDM1NzIsIDk4MzEzOSwgMTI5NDEyLCAKKyAgICA3NzY0LCA2ODc0MSwgMTEwOTQsIDEyMDgyNSwgOTgzNzU4LCA0MzQ4OSwgNDI4MiwgODI5OCwgMCwgMCwgNzAzMjgsIAorICAgIDExMzY5MSwgNzAzMjQsIDY0NDQ5LCAwLCAxMjY2NTAsIDYzODU0LCA4NDU2LCA2NTU4NywgNzA0NDIsIDY1NjcwLCAKKyAgICA5ODMxODAsIDc4MjUwLCAwLCA3Nzc0LCAxMDYwNywgOTc5MiwgMTAxMTAyLCA3MDMyNiwgMCwgNzE0NjAsIDEyMDc2NCwgCisgICAgNzAzMjIsIDEwMDE5LCA3NDc2MiwgMCwgMzQ1OCwgNDM2NSwgNzAwNTMsIDk4MzcxMiwgMzY0NywgODM0MzcsIDI2MDIsIAorICAgIDEyODM0MSwgMTAwNzE3LCAxMjUwNDMsIDQxMTM1LCA4MzQ5OCwgMTIwODE1LCAxMjEzMjUsIDY0NjMxLCAxNzIsIDQ5NzEsIAorICAgIDQxMjE5LCA0MTEzNywgMTg4OSwgNzIzOCwgNjU0NSwgMTI2NDc2LCA3NzkyNiwgNzU5NywgMTA1MjgsIDc1MDU0LCAKKyAgICAxMjE0MDUsIDM3MzIsIDczOTEwLCAxOTQ1ODgsIDUzNDQsIDk4Mzk3MSwgNDMzNjYsIDQzMzYzLCA5MDYyLCAxMTkyNTIsIAogICAgIDEyMTQ0MSwgOTI1MjgsIDAsIDY0NDc5LCA5MjMyLCA5MjU5NiwgODMzMzAsIDExMzcwNywgMTk0NzEyLCAxMDkwMCwgCiAgICAgNDE1MzEsIDEyNjMsIDM3MjAsIDEyMDQ4LCA3NDA3NSwgNjQyOTIsIDQxNTI0LCA3MjI3LCAxMTk2MzUsIDYwOTksIDQxNTM0LCAKLSAgICAwLCAxMjczNTQsIDEyNzM0NSwgMjk5LCA4MzAyMiwgODUyNSwgMTI3MzQ3LCAzNTI0LCA5MTc1NjUsIDg4MzEsIDEyNzM0OSwgCi0gICAgOTI1NjQsIDMwNzUsIDY3ODY3LCA5NDA1MywgMCwgNjYzNjIsIDAsIDY0MzUzLCA3MDQ0MCwgMCwgNTg0NSwgMTIxMzEwLCAwLCAKLSAgICAxMjExODUsIDI1ODEsIDgyMDAsIDY1MTE0LCA2ODQ2MCwgOTgzNjkzLCA0MzI4MywgNTU1MSwgMCwgMTIwNzM1LCA5ODMyMDEsIAotICAgIDYzNDAsIDExODg1NSwgMTIxMDI3LCA3ODEzNCwgODY4MCwgNzIwNCwgNzAwNjUsIDI1ODgsIDI5MTQsIDcwMTEsIDU1MjgxLCAKLSAgICAwLCAyNDcxLCAxOTQ2MzEsIDI4ODMsIDI3NDksIDExOTU2MywgNzM3NzQsIDEwOTEzLCA4MzExNiwgOTgzMDg2LCA4NjY2LCAKLSAgICA2NzUsIDQyNDkzLCAxMjEyOTcsIDQzNTcxLCAwLCA2MjE5LCAxMjg1ODQsIDk5ODAsIDQxMjMyLCAxMDkyOCwgMCwgNDExNTMsIAotICAgIDQxMjI5LCAxMTg5NjcsIDAsIDM3MzgsIDk0MDE2LCA5ODMyNDMsIDEyNzExLCAzMTgxLCA2NjIxMiwgNzQyODksIDY4NDcyLCAKLSAgICA0Mjg1NywgODI2MiwgOTMwMzYsIDAsIDc0NDc2LCAwLCA0MjM0NywgMTIwOTIsIDk2MTUsIDcyMzQsIDc0MDQ3LCA5ODMwODgsIAotICAgIDEyODEzNywgNDM3NDQsIDAsIDAsIDczODQ2LCAyOTM0LCAxMjcyMiwgMTIwNzYyLCA5MjIsIDQzOTgzLCA3NDUwNywgCi0gICAgOTgzMTI2LCA3NDQ2MSwgMzIxOCwgMTIwNDcxLCA3NDI5MCwgMTIwNDY5LCA2NDU2MiwgMTIwNDc1LCA4NTY5LCAxMTQwNCwgCi0gICAgMTE5MzIsIDczNzI4LCAzMjE0LCAxMTIxMiwgMTIwNDY4LCAxMjEyOCwgMzIwNywgNjU0ODYsIDc4NzI5LCAxOTAxLCAKLSAgICA3ODcyNywgNjU2NjcsIDEyMDQ2MCwgNzQyNSwgMzIwNSwgNjgwMDMsIDc4NzM3LCA3ODczNiwgNzg3MzUsIDQzMzgzLCAKLSAgICA2OTk0MCwgNjU0NTksIDI2MDYsIDc4NzMwLCA3Mzg5NywgMTI5MDQzLCAxMTQ5NiwgMTE3MywgMCwgNDEyNzIsIDExOTY2MSwgCi0gICAgMCwgMCwgODMxNzgsIDEyMDczNywgMTIwOTUzLCAxOTQ3NzMsIDk4MzMyMiwgMzc4LCAyNjEwLCA5ODMzMjgsIDY1MDc5LCAKLSAgICA5ODMzMjcsIDY1Njk1LCAxMjEyMjAsIDM3LCA3MDY4LCAwLCAxMjA0ODAsIDY4MjM2LCAzMjA5LCAxMjA0NzcsIDEyMDgzNSwgCi0gICAgMTA2MzgsIDk3NjgsIDY5OTUyLCAxMTk5MDksIDcxNDg2LCA5MjIyNSwgOTgzOTUzLCA5ODMzNDAsIDAsIDQzODQwLCAwLCAwLCAKLSAgICA1MjMzLCA5ODMzMzcsIDY0NzkyLCA3MTIzMywgMTI4MjIzLCAxMjY2MzMsIDEyODkxOSwgNzA2MCwgOTg0NywgMTIwMTQ0LCAKLSAgICAxNjg1LCA1OTUsIDgzMTk3LCA3MDQyOCwgMTI5MiwgODk0MCwgNzM4MCwgMTEwODgsIDAsIDEwMDA0LCAxMjY5OTcsIDAsIAotICAgIDY1NDEsIDQzODM3LCA3MTQ2NSwgMTIxMDMwLCAzMjQzLCA5MDE0LCA1NjA2LCAxMjUwMzIsIDUzOCwgNjQ2MjAsIDU2MDIsIAotICAgIDg0NjcsIDc0MzkxLCA2NTQ3LCA3MTQ2NiwgODIwMywgNjY0MjAsIDY4MjQxLCA4NDU4LCA2NTIxMSwgODQ5NSwgOTIzMTEsIAotICAgIDEyNzQ4MSwgOTE3NTUyLCA3NzksIDc4MzE0LCA2NDM2NywgMjQ2NSwgNjk5MDEsIDgxOTMsIDU1Mjc5LCA5NzMwLCA5MjgwLCAKLSAgICAxMjA5MTMsIDcwNjUsIDc0MTU1LCA0MzQ2LCAxMTM2OTAsIDczNzk4LCA1MDQsIDEyNTExNSwgOTI0MTQsIDg5ODIsIDAsIAotICAgIDEyMTQ3MSwgMTE5MTcwLCA3ODIsIDEyOTAyOCwgMTA4ODMsIDEyODQ0NiwgMTk0ODUyLCA3MzIsIDM3MzcsIDEyMTE4OCwgCi0gICAgMTU0OCwgNjg2NTAsIDkyNTA3LCAxODMyLCA1NjA0LCA1NzM1LCA0MTE0MSwgMTE5MDIwLCA0Mzc2LCA5ODMzNzIsIDExNzg3LCAKLSAgICAzNzQ1LCA5MTc4NjgsIDExOTg4NSwgNDI4ODgsIDY1NzEyLCAxMjc5MTMsIDM4NjksIDExOTM3LCA1NzI1LCAxMjc1MzksIAotICAgIDE3ODMsIDc0MTYsIDU3MjgsIDAsIDEyODQ1NywgMTE5NTU0LCAxMTkxOCwgNjY1NjcsIDU3MjQsIDEyNzk2NSwgNTcyNywgCi0gICAgNzg1MjEsIDEyMTEyMSwgMCwgNzY0LCAwLCAxMjEwMTEsIDQzNTMxLCAxMTM2NzAsIDkwMzMsIDEyNzE4MiwgNDI1MzIsIAotICAgIDYyMjMsIDExMDQyLCAxMjA3NDksIDExNDIzLCA3NDg1MiwgMTE5ODYxLCA2ODMwMywgNDM0NjUsIDAsIDc0NzY3LCA2NTU5LCAKLSAgICA2NDU1NywgNzEzNDgsIDkyNjQ5LCAxMjA2NDgsIDQzMDE5LCA0MzQ3NywgMTAyMzgsIDc0NDkxLCAxMjg3MTEsIDQzMzc3LCAKLSAgICA5MjI4MiwgNzEzNDYsIDE0NzgsIDk3ODMsIDExODI1LCAyNjA3LCA2NDc0MCwgMTEzNjg5LCA3NzM5LCA3NDU0MywgCi0gICAgOTE3NzY1LCA2NzM5MywgMCwgNjEzMiwgMCwgNjM3NjUsIDEyODM5NiwgNzAwNTgsIDQxMTQ0LCA3MTg5OSwgOTI0MzgsIAotICAgIDQzNTM3LCA2NzYxLCAxMDA5MywgNDM2OSwgOTE3NzkxLCAxMjgzOTQsIDE5NDc3NiwgODgyMCwgMzk0NywgMCwgNjUyOTksIAotICAgIDExNTE1LCA1MjYsIDEyODEwMywgNDEyOTUsIDE5NDYwMywgMTI1MDAyLCAxOTQ5MzIsIDExMzY5MSwgNzY4OCwgOTE3Nzg2LCAKLSAgICA3Njg2LCA4Mjg4LCAxMTgxNSwgOTgzMTg4LCAxMjE0MTEsIDk4MzM4NCwgMTU0MywgMzcxMywgNDEyMjEsIDEyNDIzLCAKLSAgICA0MjI4MSwgNzg1NDQsIDc0MDI0LCAxMjI5MywgOTgzNjgwLCA2NDM1NywgMTE3OTQsIDQyMDgyLCAxMjgxMjUsIDE3MzcsIAotICAgIDg5ODcsIDQyMDgxLCAwLCA3MjA1LCA4MzI2NCwgOTMzNSwgMTI4NTAsIDExOTE3MywgNjU1MywgNzA1NSwgNjgwNDEsIAotICAgIDgyNzcsIDAsIDY3NzUxLCA1NDc1LCA3NDc5NSwgNjc4MCwgNjUwNjcsIDAsIDEzMjcsIDExNjAsIDQyMDg0LCA5Mzk2MywgCi0gICAgNDEyMTcsIDExOTY2MCwgMTAwMTgsIDM2MCwgMTI5MDcwLCA5ODM4NjUsIDY4MTc2LCA1ODYzLCAzMTM3LCAwLCA0MTQ3LCAKLSAgICA5ODMxNzAsIDQxMjE2LCA3ODQ0LCAyNjE2LCA3MDE5NywgNjg0NjEsIDY1MjM0LCA2ODM0MSwgMTMwNzYsIDMxMzUsIAotICAgIDk4MzI4OSwgNzgxNDMsIDExOTEzOSwgMzE0MiwgOTI0NTEsIDk0MDY4LCAxMDgxOSwgMTE5NTgwLCAxMDE4MywgNzQ2MzUsIAotICAgIDI2MDgsIDE0NzAsIDczOTY3LCA5NDAwOCwgNjIyNywgMTIxMjU3LCA4MzI2OCwgNjUyMzYsIDkxNzg3OCwgNjE2MywgCi0gICAgOTgzNTU4LCAxMTM3MjgsIDEyNzMxNCwgMTI4MTM4LCA5ODMyMzYsIDg2MDMsIDEyNzk1OSwgMTE5ODY2LCAzMzA2LCAKLSAgICAxMDg3NiwgNDMzOTIsIDgzMTg3LCAxMjc5MzEsIDU3NTEsIDEyNzUxNywgNjIyMiwgMCwgMTI3NDY2LCAxMjA4NiwgNzQwMywgCi0gICAgMTYwMCwgNjQzMDksIDY0OTM5LCAwLCA2NDc4MywgOTI2NTgsIDExMzEwLCAwLCA4ODgyLCAxMTk5MDMsIDAsIDI1NzAsIAotICAgIDcwMjEsIDc0OTAyLCAxOTQ3NDIsIDQzMTEwLCAwLCAxMjM0LCA2NTQwLCA2OTc0LCA5Mjc1MCwgMCwgOTgzMjExLCA1MDAyLCAKLSAgICA5ODM1NjMsIDQxMjg2LCA2OTk0NiwgNzQ0NjUsIDcxMDc0LCA0MzU4NSwgMTEzNzIwLCA2NTUxLCA5ODMzNzUsIDEyODIyOSwgCi0gICAgOTgzMjc0LCA0MTI4OSwgMTI1MTMwLCA3MTA4MCwgMTI3OTU4LCA4OTc3LCA2MDIsIDEyMDgxNCwgMCwgMTI4MzUwLCAKLSAgICAxMjg2NjEsIDE5NDg5MCwgOTgzMzc3LCA0MTI3OSwgMCwgMCwgOTQxMDgsIDExMDgxLCA0MzYxNSwgMCwgMCwgMTI3ODg4LCAKLSAgICA5ODM2MTIsIDEyNzI3LCA0Mzg5NSwgMCwgNzgzOTcsIDk0NzUsIDcxMTIsIDY1MTA1LCAwLCA5NjMzLCAxMDg4NiwgNDM1OTIsIAotICAgIDc4MzEsIDk4MzgyOSwgMTk0NTcxLCAwLCA3MzkxNSwgODA3NiwgNDMwNDgsIDgyOTAsIDgyOTEsIDQzMDUxLCA5MjU3MCwgMCwgCi0gICAgMjU5NiwgNDM1ODQsIDEyMDk4MywgMTMxMTMsIDAsIDEyNzc1NywgMjM5MywgNzA1OCwgOTA4NywgNzQwNjcsIDY4NjczLCAKLSAgICA0MTU3NCwgNzgzMzcsIDcwNDk4LCA0MjkwMCwgNjM3NiwgMCwgMCwgMCwgMCwgOTg1NCwgMTI3NzQ4LCA2NDY5NiwgNzM4NzksIAotICAgIDEyODIyMCwgMTIwNzUyLCA2OTk0LCAwLCAxNzIwLCAwLCAwLCAwLCA2NTI5LCA3MDYzLCA5ODMxNzksIDM3NTEsIDkxMjAsIAotICAgIDk4MzQ4NywgNjgwMzgsIDE3OTgsIDcwOSwgMCwgMTM1NCwgMTg3NiwgMTMxNTIsIDY1NTcsIDEyNDMwLCA4MTM3LCA5NDA5OCwgCi0gICAgNjc3NTIsIDcwODUwLCAxMTkwNTcsIDI0NSwgMTIxMDY2LCAxMTQ1NiwgNDEyMzMsIDcwNzAsIDAsIDk0MDQ2LCA2MTM2LCAKLSAgICA2ODMwNCwgNjU2NzcsIDg2ODIsIDQxMjM1LCA5MjU5NSwgNDIwNDUsIDk4MDQsIDExODk2MywgNDMyLCAzNTk1LCAxMjcwMTUsIAotICAgIDY1NDM3LCAwLCA3NDQ1NSwgNDIzOTksIDk4MzEzNiwgMCwgMTI4Mjc0LCAwLCAxMTk2NTgsIDEyODE4NCwgMCwgMCwgCi0gICAgNzc4OTQsIDg3OTcsIDAsIDkwNTIsIDY0ODg4LCA3MTY3LCAyMzU2LCA5NSwgNzQ3ODQsIDEwNTgwLCAwLCA0MjI4NiwgCi0gICAgNzExMjMsIDY0NjQwLCA2OTk5OSwgOTQxMDksIDEyMDg3NywgNzQxMzcsIDcwMDM1LCAxMDA2MywgMTI2NTIsIDEyMTk5LCAKLSAgICA3NDYyMiwgNDM0OTIsIDI1NjYsIDExOTcxLCA5ODM3MzcsIDEyMDg4MiwgMTA2NSwgMCwgMTI3MDA1LCA0MzQwMCwgMjU3NiwgCi0gICAgNjY2OTYsIDY2ODE5LCA4MzMzMywgNDM2MDQsIDEyNzg5MSwgMCwgMzIwMSwgNTE0LCA3NDUwMiwgNzAwMzIsIDI5MjEsIAotICAgIDQzMjE1LCA2NDQ5MywgNTc3MiwgMTI5NjgsIDcwMDU1LCAxOTQ5NDQsIDcwMzEwLCA0MzM5OCwgMjU4MCwgMTk1MDI1LCAKLSAgICA0MTM0MSwgNDEyMjMsIDY1NjQsIDE0NjMsIDQxMzQyLCAwLCA1MjkzLCA3MDAyMCwgMTI3ODcwLCAzNzMzLCAxMTM0NiwgMCwgCi0gICAgMTIwNTQsIDAsIDc0MDk4LCA0MjgyNywgMTk1MDc0LCAxMzA5MSwgMCwgMTI4NTgwLCAwLCA5MTc5MTUsIDEyNzk2MSwgCi0gICAgMTI3MDI1LCAxMjgzMzQsIDc0ODIxLCA3MTEwNCwgNjYyOTUsIDY4MDM3LCAwLCAxMjExMTYsIDEzMDkwLCA2NjY0MywgMCwgCi0gICAgMTI3MCwgMTEzMiwgNDIzNjAsIDAsIDc0MDk2LCA2NjY1NSwgNDI1NjksIDEyNzgyNCwgNjY4OTgsIDY0NzYxLCAwLCAKLSAgICA0MTAyMSwgODUxMCwgNDI0MzIsIDExOTg5OCwgMTE5MzE3LCAxOTQ3ODIsIDE5NDY0MSwgNjQ0OTYsIDc0MTA5LCA3MDAzMCwgCi0gICAgOTkxNSwgOTgzMDgzLCA5ODMyMTgsIDcwNjEsIDQxMzM2LCAzODU0LCA2OTcwMCwgMTMxNDEsIDY4NDEzLCA0MzQwMSwgCi0gICAgNDIzMTksIDEzMDgyLCA3ODExNCwgNzA2NywgNjgyMjEsIDEyNzg4MSwgMTI3MzgzLCAxMjcxNzEsIDAsIDEyMDc0NSwgCi0gICAgNzQyMDksIDkwMjksIDQzNTQzLCA3MDgzNiwgMjM1MywgNjMwOCwgMTI5MTU0LCA3NDc5MiwgMjYxMSwgMTE5MTg2LCAKLSAgICA2Njg4MSwgMTI3MjQxLCA2NTA2MywgNDM2NjQsIDkyMzE5LCA2NjYyNywgOTI5MTIsIDQ0ODQsIDg1MDksIDExODk3NiwgCi0gICAgMTEwNjYsIDY1MjMzLCAxMjcxNDYsIDQxMjI0LCA0MTAxNywgMTI4MTQ5LCAzNzQ3LCAxMDUyMiwgMCwgMTk0ODc2LCAxNjkxLCAKLSAgICA0MTIyNiwgNzQ5NjIsIDEyMTA3LCA3MTAwLCAxMDkwNSwgNjUwMTAsIDEyMTI5OSwgNjk3LCA2NjAxOCwgOTI4NCwgNDI0NCwgCi0gICAgOTgzMzQzLCA5MzA1OCwgNzQ3ODEsIDEzMTIxLCAxMjAwMzYsIDAsIDEyMDEwLCAxMjg1NzMsIDEyODIyMSwgMTIwOTQ5LCAKLSAgICAxMjEwMzIsIDAsIDEyNzE5MywgNjU4MTYsIDY4MTExLCAxMTg5NTAsIDEyNzkzMywgNjU2NjgsIDkyMjU3LCA2NjE4LCAKLSAgICAzNTYyLCA2NjM2NSwgMCwgNDIyMzQsIDEyNjQ4LCA3ODExMCwgNzEyMywgNzAwMzgsIDU3ODUsIDkxOTgsIDk3NjQsIAotICAgIDQxMzE2LCA2NTg3NywgNzM4MywgMTMyMzAsIDQxMjk5LCAwLCAwLCA2ODM2NSwgMTI4MjU4LCAxOTUwMjcsIDAsIDAsIAotICAgIDEzMTIyLCAwLCAxOTEsIDcwMDYwLCA4NTg1LCA4MDAwLCA2NDQxMSwgMTIwNjUyLCA0Mjg4OSwgNjQ4NTAsIDQxMDcyLCAKLSAgICA0MTU3OCwgOTgzMTA0LCA0MTU3NywgMCwgMTAwMDIsIDEyMTM2NCwgNjUzMywgNzM4MDIsIDQxNTcwLCA5MTc5MTksIDY4MywgCi0gICAgMzk2LCA0MTU4MCwgNjgxNDYsIDk4MzA2NywgMTI5MDEsIDQzMDU4LCAwLCAzNDMsIDcxMjksIDQyNjgwLCA0MTM2MCwgCi0gICAgNzgxNTQsIDk4MzM5NywgNDc0MywgNjk5ODcsIDAsIDc0MDQwLCA3NDEwOCwgODc0MywgMTcyNCwgMTQzMywgMTE5MzIyLCAKLSAgICAxMjg2NjUsIDM3MzksIDYyNjMsIDcxMzQ5LCAxMjg4MTEsIDM5NjQsIDY1OTIsIDEyMTQyNCwgNjgyODgsIDY2MDQwLCAKKyAgICAwLCAxMjczNTQsIDEyNzM0NSwgMjk5LCA4MzAyMiwgODUyNSwgMTI3MzQ3LCAzNTI0LCAxMjg3MTcsIDg4MzEsIDEyNzM0OSwgCisgICAgOTI1NjQsIDMwNzUsIDY3ODY3LCA5NDA1MywgMCwgNjYzNjIsIDAsIDY0MzUzLCA3MDQ0MCwgOTgzOTcwLCA1ODQ1LCAKKyAgICAxMjEzMTAsIDEyNzkzNywgMTIxMTg1LCAyNTgxLCA4MjAwLCA2NTExNCwgNjg0NjAsIDc0ODU4LCA0MzI4MywgNTU1MSwgMCwgCisgICAgMTIwNzM1LCAxMjk0MjMsIDYzNDAsIDExODg1NSwgMTAwNjAyLCA3ODEzNCwgODY4MCwgNzIwNCwgNzAwNjUsIDI1ODgsIAorICAgIDI5MTQsIDcwMTEsIDU1MjgxLCAwLCAyNDcxLCAxOTQ2MzEsIDI4ODMsIDI3NDksIDEwMDg1MiwgNzM3NzQsIDEwOTEzLCAKKyAgICA4MzExNiwgOTgzMDg2LCA4NjY2LCA2NzUsIDQyNDkzLCAxMjEyOTcsIDQzNTcxLCAwLCA2MjE5LCAxMjg1ODQsIDk5ODAsIAorICAgIDQxMjMyLCAxMDkyOCwgMCwgNDExNTMsIDQxMjI5LCAxMTg5NjcsIDAsIDM3MzgsIDk0MDE2LCA5ODMyNDMsIDEyNzExLCAKKyAgICAzMTgxLCA2NjIxMiwgNzQyODksIDY4NDcyLCA0Mjg1NywgODI2MiwgOTMwMzYsIDk4MzY3NiwgNzQ0NzYsIDAsIDQyMzQ3LCAKKyAgICAxMjA5MiwgOTYxNSwgNzIzNCwgNzQwNDcsIDEyODc2OCwgMTI4MTM3LCA0Mzc0NCwgMTAwNjEwLCAwLCA3Mzg0NiwgMjkzNCwgCisgICAgMTI3MjIsIDEyMDc2MiwgOTIyLCA0Mzk4MywgNzQ1MDcsIDk4MzExMCwgNzQ0NjEsIDMyMTgsIDEwMTAwMiwgNzQyOTAsIAorICAgIDEyMDQ2OSwgNjQ1NjIsIDEyMDQ3NSwgODU2OSwgMTE0MDQsIDExOTMyLCA3MzcyOCwgMzIxNCwgMTEyMTIsIDEyMDQ2OCwgCisgICAgMTIxMjgsIDMyMDcsIDY1NDg2LCA3ODcyOSwgMTkwMSwgNzg3MjcsIDY1NjY3LCAxMjA0NjAsIDc0MjUsIDMyMDUsIDY4MDAzLCAKKyAgICA3ODczNywgNzg3MzYsIDc4NzM1LCA0MzM4MywgNjk5NDAsIDY1NDU5LCAyNjA2LCA3ODczMCwgNzM4OTcsIDEyOTA0MywgCisgICAgMTE0OTYsIDExNzMsIDAsIDQxMjcyLCAxMTk2NjEsIDk4Mzg1MywgOTgzODkzLCA4MzE3OCwgMTAwNzI4LCAxMjA5NTMsIAorICAgIDE5NDc3MywgMTk0NjAxLCAzNzgsIDI2MTAsIDk4MzMyOCwgNjUwNzksIDE5NDg3OSwgNjU2OTUsIDEyMTIyMCwgMzcsIAorICAgIDcwNjgsIDAsIDEyMDQ4MCwgNjgyMzYsIDMyMDksIDEyMDQ3NywgMTIwODM1LCAxMDYzOCwgOTc2OCwgNjk5NTIsIDEwMDYyMSwgCisgICAgNzE0ODYsIDkyMjI1LCAxMjg0OTQsIDk4MzM0MCwgMTAwOTA1LCA0Mzg0MCwgMCwgMTAxMDk2LCA1MjMzLCAxMDA2MjQsIAorICAgIDY0NzkyLCA3MTIzMywgMTI4MjIzLCAxMDA2MjYsIDEyODkxOSwgNzA2MCwgOTg0NywgMTIwMTQ0LCAxNjg1LCA1OTUsIAorICAgIDgzMTk3LCA3MDQyOCwgMTI5MiwgODk0MCwgNzM4MCwgMTEwODgsIDkyOTQ4LCAxMDAwNCwgMTI2OTk3LCAwLCA2NTQxLCAKKyAgICA0MzgzNywgNzE0NjUsIDEyMTAzMCwgMzI0MywgOTAxNCwgNTYwNiwgMTE5NTg1LCA1MzgsIDY0NjIwLCA1NjAyLCA4NDY3LCAKKyAgICA3NDM5MSwgNjU0NywgNzE0NjYsIDgyMDMsIDY2NDIwLCA2ODI0MSwgODQ1OCwgNjUyMTEsIDg0OTUsIDkyMzExLCAxMjc0ODEsIAorICAgIDkxNzU1MiwgNzc5LCA3ODMxNCwgNjQzNjcsIDI0NjUsIDY5OTAxLCA4MTkzLCA1NTI3OSwgOTczMCwgOTI4MCwgMTIwOTEzLCAKKyAgICA3MDY1LCA3NDE1NSwgNDM0NiwgMTAwNTcwLCA3Mzc5OCwgNTA0LCAxMjUxMTUsIDkyNDE0LCA4OTgyLCAwLCAxMjE0NzEsIAorICAgIDExOTE3MCwgNzgyLCAxMjkwMjgsIDEwODgzLCAxMjg0NDYsIDE5NDg1MiwgNzMyLCAzNzM3LCAxMjExODgsIDE1NDgsIAorICAgIDY4NjUwLCA5MjUwNywgMTgzMiwgNTYwNCwgNTczNSwgNDExNDEsIDExOTAyMCwgNDM3NiwgOTgzMzcyLCAxMTc4NywgMzc0NSwgCisgICAgOTE3ODY4LCAxMTk4ODUsIDQyODg4LCA2NTcxMiwgMTAwNjA2LCAzODY5LCAxMTkzNywgNTcyNSwgMTAwNjA4LCAxNzgzLCAKKyAgICA3NDE2LCA1NzI4LCAxMjg1NjksIDEyODQ1NywgMTE5NTU0LCAxMTkxOCwgNjY1NjcsIDU3MjQsIDEyNzk2NSwgNTcyNywgCisgICAgNzg1MjEsIDEyMTEyMSwgMTI4NDg4LCA3NjQsIDAsIDEyMTAxMSwgNDM1MzEsIDExMzY3MCwgOTAzMywgMTI3MTgyLCAKKyAgICA0MjUzMiwgNjIyMywgMTEwNDIsIDEyMDc0OSwgMTE0MjMsIDc0ODUyLCAxMTk4NjEsIDY4MzAzLCA0MzQ2NSwgMTk0ODE5LCAKKyAgICA3Mjg1NCwgNjU1OSwgNjQ1NTcsIDcxMzQ4LCA5MjY0OSwgNjY3NjMsIDQzMDE5LCA0MzQ3NywgMTAyMzgsIDc0NDkxLCAKKyAgICAxMjg3MTEsIDQzMzc3LCA5MjI4MiwgNzEzNDYsIDE0NzgsIDk3ODMsIDExODI1LCAyNjA3LCA2NDc0MCwgMTEzNjg5LCAKKyAgICA3NzM5LCA3NDU0MywgOTE3NzY1LCA2NzM5MywgMTAwNTg4LCA2MTMyLCAwLCA2Mzc2NSwgMTAwNTkwLCA3MDA1OCwgNDExNDQsIAorICAgIDcxODk5LCA5MjQzOCwgNDM1MzcsIDY3NjEsIDEwMDkzLCA0MzY5LCA5MTc3OTEsIDcwNjgyLCAxMDA1NjEsIDg4MjAsIAorICAgIDM5NDcsIDEyMjg5OCwgNjUyOTksIDExNTE1LCA1MjYsIDEyODEwMywgNDEyOTUsIDE5NDYwMywgMTAwOTMxLCAxOTQ5MzIsIAorICAgIDc4MzkzLCA3Njg4LCA5MTc3ODYsIDc2ODYsIDgyODgsIDExODE1LCA5ODMxODgsIDEwMDkzNCwgOTgzMzg0LCAxNTQzLCAKKyAgICAzNzEzLCA0MTIyMSwgMTI0MjMsIDQyMjgxLCA3ODU0NCwgNzQwMjQsIDEyMjkzLCAxOTQ1ODksIDY0MzU3LCAxMTc5NCwgCisgICAgNDIwODIsIDcwNzQ0LCAxNzM3LCA4OTg3LCA0MjA4MSwgMCwgNzIwNSwgODMyNjQsIDkzMzUsIDEyODUwLCAxMTkxNzMsIAorICAgIDIyNzIsIDcwNTUsIDY4MDQxLCA4Mjc3LCAwLCA2Nzc1MSwgNTQ3NSwgNzQ3OTUsIDY3ODAsIDY1MDY3LCAwLCAxMzI3LCAKKyAgICAxMTYwLCA0MjA4NCwgOTM5NjMsIDQxMjE3LCAxMTk2NjAsIDEwMDE4LCAzNjAsIDEyOTA3MCwgMTAwNjE3LCA2ODE3NiwgCisgICAgNTg2MywgMzEzNywgMCwgNDE0NywgOTgzMTcwLCA0MTIxNiwgNzg0NCwgMjYxNiwgNzAxOTcsIDY4NDYxLCA2NTIzNCwgCisgICAgNjgzNDEsIDEzMDc2LCAzMTM1LCA5ODMyODksIDc4MTQzLCAxMTkxMzksIDMxNDIsIDkyNDUxLCA5NDA2OCwgMTA4MTksIAorICAgIDExOTU4MCwgMTAxODMsIDc0NjM1LCAyNjA4LCAxNDcwLCA3Mzk2NywgOTQwMDgsIDYyMjcsIDEyMTI1NywgODMyNjgsIAorICAgIDY1MjM2LCAxMjAyNTYsIDYxNjMsIDEyOTI5NywgMTEzNzI4LCAxMjczMTQsIDczODIyLCA5ODMyMzYsIDg2MDMsIDEyNzk1OSwgCisgICAgMTE5ODY2LCAzMzA2LCAxMDg3NiwgNDMzOTIsIDgzMTg3LCAxMjc5MzEsIDU3NTEsIDEyNzUxNywgNjIyMiwgMTAwNzE2LCAKKyAgICAxMjc0NjYsIDEyMDg2LCA3NDAzLCAxNjAwLCA2NDMwOSwgNjQ5MzksIDAsIDY0NzgzLCA5MjY1OCwgMTEzMTAsIDk4MzMwNywgCisgICAgODg4MiwgMTE5OTAzLCA3ODUxOCwgMjU3MCwgNzAyMSwgNzQ5MDIsIDEyODg4MCwgNDMxMTAsIDAsIDEyMzQsIDY1NDAsIAorICAgIDY5NzQsIDkyNzUwLCAxMjczOTYsIDEwMDkyMywgNTAwMiwgOTgzNTYzLCA0MTI4NiwgNjk5NDYsIDc0NDY1LCA3MTA3NCwgCisgICAgNDM1ODUsIDEwMDkyNywgNjU1MSwgOTgzMzc1LCAxMjgyMjksIDk4MzA0NywgNDEyODksIDEyNTEzMCwgNzEwODAsIAorICAgIDEwMDUyMSwgODk3NywgNjAyLCAxMjA4MTQsIDEwMDYzMCwgMTI4MzUwLCAxMjg2NjEsIDE5NDg5MCwgOTgzMzc3LCA0MTI3OSwgCisgICAgMCwgMCwgOTQxMDgsIDExMDgxLCA0MzYxNSwgMCwgMTAxMDIyLCAxMjc4ODgsIDE5NDk5NCwgMTI3MjcsIDQzODk1LCAwLCAKKyAgICA3ODM5NywgOTQ3NSwgNzExMiwgNjUxMDUsIDEyNzU1NiwgOTYzMywgMTA4ODYsIDQzNTkyLCA3ODMxLCA2Njc1MSwgCisgICAgMTk0NTcxLCAxMjI4ODUsIDczOTE1LCA4MDc2LCA0MzA0OCwgODI5MCwgODI5MSwgNDMwNTEsIDkyNTcwLCA5ODM4OTUsIAorICAgIDI1OTYsIDQzNTg0LCAxMjA5ODMsIDEzMTEzLCA5ODM3MzEsIDEyNzc1NywgMjM5MywgNzA1OCwgOTA4NywgNDEzNiwgCisgICAgNjg2NzMsIDQxNTc0LCA3ODMzNywgNzA0OTgsIDQyOTAwLCA2Mzc2LCAwLCAxOTQ5MTIsIDEyNzgyMCwgMCwgOTg1NCwgCisgICAgMTAxMDg4LCA2NDY5NiwgNzM4NzksIDEyODIyMCwgMTIwNzUyLCA2OTk0LCAwLCAxNzIwLCA5MTc3OTcsIDAsIDAsIDY1MjksIAorICAgIDcwNjMsIDExODkxNywgMzc1MSwgOTEyMCwgMTk0NjI4LCA2ODAzOCwgMTc5OCwgNzA5LCAwLCAxMzU0LCAxODc2LCAxMzE1MiwgCisgICAgNjU1NywgMTI0MzAsIDgxMzcsIDk0MDk4LCA2Nzc1MiwgNzA4NTAsIDEwMDgzMiwgMjQ1LCAxMDA4MzEsIDExNDU2LCAKKyAgICA0MTIzMywgNzA3MCwgNzEyNjQsIDk0MDQ2LCA2MTM2LCA2ODMwNCwgNjU2NzcsIDg2ODIsIDQxMjM1LCA5MjU5NSwgNDIwNDUsIAorICAgIDk4MDQsIDEwMDY0MiwgNDMyLCAzNTk1LCAxMDA3ODQsIDY1NDM3LCAwLCA3NDQ1NSwgNDIzOTksIDEwMDY0NiwgMTAwNjQxLCAKKyAgICAxMDA2NDksIDk4Mzk0OSwgMTAwNjQ4LCAxMjgxODQsIDEwMDc4NiwgMTk0NTg3LCA3Nzg5NCwgODc5NywgOTgzOTU2LCAKKyAgICA5MDUyLCA2NDg4OCwgNzE2NywgMjM1NiwgOTUsIDc0Nzg0LCAxMDU4MCwgMTAwODQ1LCA0MjI4NiwgNzExMjMsIDY0NjQwLCAKKyAgICA2OTk5OSwgOTQxMDksIDEyMDg3NywgNzQxMzcsIDcwMDM1LCAxMDA2MywgMTI2NTIsIDEyMTk5LCA3NDYyMiwgNDM0OTIsIAorICAgIDI1NjYsIDExOTcxLCA5ODM3MzcsIDEyMDg4MiwgMTA2NSwgMTIwNzY4LCAxMjcwMDUsIDQzNDAwLCAyNTc2LCA2NjY5NiwgCisgICAgNjY4MTksIDgzMzMzLCA0MzYwNCwgMTI3ODkxLCAwLCAzMjAxLCA1MTQsIDc0NTAyLCA3MDAzMiwgMjkyMSwgNDMyMTUsIAorICAgIDY0NDkzLCA1NzcyLCAxMjk2OCwgNzAwNTUsIDE5NDk0NCwgNzAzMTAsIDQzMzk4LCAyNTgwLCAxMjg0OTcsIDQxMzQxLCAKKyAgICA0MTIyMywgNjU2NCwgMTQ2MywgNDEzNDIsIDE5NTA5MiwgNTI5MywgNzAwMjAsIDEyNzg3MCwgMzczMywgMTEzNDYsIDAsIAorICAgIDEyMDU0LCAxMDA4MjQsIDc0MDk4LCA0MjgyNywgMTk1MDc0LCAxMzA5MSwgMCwgMTI4NTgwLCAxMDA4MjEsIDEwMDgyOCwgCisgICAgMTI3OTYxLCAxMjcwMjUsIDEyODMzNCwgNzQ4MjEsIDcxMTA0LCA2NjI5NSwgNjgwMzcsIDk4MzkwNSwgMTIxMTE2LCAKKyAgICAxMzA5MCwgNjY2NDMsIDEyODgyMCwgMTI3MCwgMTEzMiwgNDIzNjAsIDE5NDk2OCwgNjY3NTIsIDY2NjU1LCA0MjU2OSwgCisgICAgMTIwNTcxLCA2Njg5OCwgNjQ3NjEsIDEwMDc3NiwgNDEwMjEsIDg1MTAsIDQyNDMyLCAxMDA3NzgsIDExOTMxNywgMTk0NzgyLCAKKyAgICAxOTQ2NDEsIDY0NDk2LCA3NDEwOSwgNzAwMzAsIDk5MTUsIDY5Nzk4LCA5ODMyMTgsIDcwNjEsIDQxMzM2LCAzODU0LCAKKyAgICA2OTcwMCwgMTMxNDEsIDY4NDEzLCA0MzQwMSwgNDIzMTksIDEzMDgyLCA3ODExNCwgNzA2NywgNjgyMjEsIDEyNzg4MSwgCisgICAgMTI3MzgzLCAxMjcxNzEsIDEyMTIwNywgMTAwNzY1LCA3NDIwOSwgOTAyOSwgNDM1NDMsIDcwODM2LCAyMzUzLCA2MzA4LCAKKyAgICA3MDY2MiwgNzQ3OTIsIDI2MTEsIDEwMDc2OCwgNjY4ODEsIDEyNzI0MSwgNjUwNjMsIDQzNjY0LCA5MjMxOSwgNjY2MjcsIAorICAgIDkyOTEyLCA0NDg0LCA4NTA5LCAxMTg5NzYsIDExMDY2LCA2NTIzMywgMTI3MTQ2LCA0MTIyNCwgNDEwMTcsIDEyMDUxNCwgCisgICAgMzc0NywgMTA1MjIsIDkxNzgxMSwgMTE5OTcwLCAxNjkxLCA0MTIyNiwgNzQ5NjIsIDEyMTA3LCA3MTAwLCAxMDkwNSwgCisgICAgNjUwMTAsIDc0NjAyLCA2OTcsIDY2MDE4LCA5Mjg0LCA0MjQ0LCA5ODMzNDMsIDkzMDU4LCA3NDc4MSwgMTMxMjEsIAorICAgIDEyMDAzNiwgMCwgMTIwMTAsIDEyODU3MywgMTI4MjIxLCAxMjA5NDksIDEyMTAzMiwgOTgzMTMyLCAxMjcxOTMsIDY1ODE2LCAKKyAgICA2ODExMSwgMTE4OTUwLCAxMjc5MzMsIDY1NjY4LCA5MjI1NywgNjYxOCwgMzU2MiwgNjYzNjUsIDAsIDQyMjM0LCAxMjY0OCwgCisgICAgNzgxMTAsIDcxMjMsIDcwMDM4LCA1Nzg1LCA5MTk4LCA5NzY0LCA0MTMxNiwgNjU4NzcsIDczODMsIDEzMjMwLCA0MTI5OSwgCisgICAgMCwgOTgzMTUwLCA2ODM2NSwgMTI4MjU4LCAxOTUwMjYsIDk4MzQwMiwgMCwgMTMxMjIsIDEyNzU0NiwgMTkxLCA3MDA2MCwgCisgICAgODU4NSwgODAwMCwgNjQ0MTEsIDEyMDY1MiwgNDI4ODksIDY0ODUwLCA0MTA3MiwgNDE1NzgsIDk4MzEwNCwgNDE1NzcsIAorICAgIDk4MzM3MSwgMTAwMDIsIDEwMDc1NCwgNjUzMywgNzM4MDIsIDQxNTcwLCAxMDA3NTYsIDY4MywgMzk2LCA0MTU4MCwgCisgICAgNjgxNDYsIDEyNzgxNSwgMTI5MDEsIDQzMDU4LCAxMDA3NjAsIDM0MywgNzEyOSwgNDI2ODAsIDQxMzYwLCA3ODE1NCwgCisgICAgMTI3MDgyLCA0NzQzLCA2OTk4NywgMTAwNzYxLCA3NDA0MCwgNzQxMDgsIDg3NDMsIDE3MjQsIDE0MzMsIDEwMDc1MSwgCisgICAgMTI4NjY1LCAzNzM5LCA2MjYzLCA3MTM0OSwgMTI4ODExLCAzOTY0LCA2NTkyLCAxMjA3MDEsIDY1MTA4LCA2NjA0MCwgCiAgICAgODI5NDYsIDQyNTY4LCA2OTgwNiwgMTI4MTEzLCAxNzc4LCAzOTU2LCAxMjg0NDMsIDQyMDcwLCA2NTYzLCA0MzA3NSwgCi0gICAgOTAxOCwgOTQwMDYsIDk4MzM5OCwgMTIwNjcsIDQxMzEyLCA5Mjc2MywgNTU0NywgODkxNiwgMTIwODY5LCAxMjg5NTAsIAorICAgIDkwMTgsIDk0MDA2LCAxMjE0MjQsIDEyMDY3LCA0MTMxMiwgOTI3NjEsIDU1NDcsIDg5MTYsIDEyMDg2OSwgMTI4OTUwLCAKICAgICA4MTc1LCA5NDAzNCwgMjg0LCA4MTA4LCA5MzQsIDEyODAzOSwgNzQwMDEsIDE3MywgNjY0NjAsIDcxNzQsIDkyNzAzLCAKLSAgICAxMTg4MjIsIDE3NTAsIDEyODY4NiwgNDM5NCwgNjgzNjgsIDE4MDcsIDk4Mzg4OCwgOTIyOTgsIDAsIDU4ODksIDEyODc5NSwgCi0gICAgNzE4MCwgMCwgNjcxMjcsIDAsIDY3MTI2LCA0MjQ3MSwgNjk4MiwgMTcyMSwgNDQwMjIsIDc4OTEsIDQyMjQzLCA0MjE2MCwgCi0gICAgMjU4MywgNDUxMiwgMTE5MzYwLCA2NTIzMCwgMTI4MTA5LCAwLCA5MTc2MzAsIDM4NTUsIDE5NDgxMCwgMTE3NjcsIAotICAgIDEyNzk5OCwgMCwgNzQyOTUsIDE5NDY1MSwgMCwgOTI0MTYsIDM5NzUsIDY3MTI1LCA3NDA4NywgNzQ5ODksIDEyNjcyLCAKLSAgICAzNzk4LCAyNzAzLCAxOTQ2MDgsIDAsIDIxMDksIDk3NzQsIDEyNzUsIDAsIDk4Mzc1MCwgNDEwOTUsIDM5NjIsIDY4MjQyLCAKLSAgICAyOTMyLCA0MTEwMSwgMzk1NCwgNjQ1NywgNDUxMywgNzQ1MzYsIDEyNzE4OSwgNzM5OTQsIDczOTkyLCAxNDY4LCAxMjAwMzMsIAotICAgIDk4MzA1NywgNDE4MDMsIDEyNzk5OSwgNDE4NDYsIDEyNzI0NCwgNTUyMzgsIDc2MzMsIDQxODQ5LCA2ODM4NSwgNDMyMCwgCi0gICAgMzIyNCwgMTEzNzM0LCA5Mjc0MSwgNjYyODEsIDQyNTMxLCA3NDU5MywgMTUxMCwgMTI4Mzg0LCA4MjU2LCAwLCAxMTM5MywgCi0gICAgMCwgODg3OSwgMTI4MDc1LCA5MjQ3NCwgODc3MCwgNzI0MTYsIDEyMDgxMSwgNzI0MTUsIDE5MTAsIDg2NzEsIDc4Mzc0LCAKLSAgICA0MjgzLCA2ODg0MiwgMTIwODI0LCA2ODM2MSwgNzgzMTgsIDI2NTQsIDc4OTMsIDE5NTAwNiwgMTI4MjQxLCAwLCA3MjM5NCwgCi0gICAgNjUxMDYsIDQyNzYxLCAxMjg1NywgNDU4MSwgODQxMSwgNzgzNzIsIDc4MzcxLCA3ODM3MCwgNzgzNjksIDc4MzY4LCAKLSAgICA3NDQ3NSwgOTgzNDQ0LCAwLCAxNzMzLCA0MzkyLCAyNTY4LCAxMDc4NiwgNjk2NjEsIDAsIDgxODQsIDQxNDg2LCAwLCAKLSAgICA3Mzk2LCA3MTE2LCAwLCA2OTc4OCwgMCwgNzE4NSwgNzk2NSwgMTE5MTQ0LCAxMjg0NDcsIDkyMzQ3LCAxOTUwNjYsIAotICAgIDQxMzUwLCA5MTI5LCA5ODM0NDgsIDAsIDIyOTQsIDY0NTAxLCA2ODAzNCwgODMzMjYsIDEwNDgxLCAwLCA3MDAyMiwgNzE3MSwgCi0gICAgMCwgMzQwLCA3MTEwNSwgOTM5NzIsIDY3MzYwLCAwLCA5MjIwMCwgMTI4MjQ5LCAxMjQ5NzksIDY3NjQsIDEyNzQ4NywgCi0gICAgMTI4MzkzLCAwLCA5MjUwOSwgMTI4OTYyLCA2NTIwMywgMTEzOTIsIDExOTA5OCwgMTE5MzU5LCAxMTkwNzMsIDMyMTAsIDAsIAotICAgIDAsIDExODc5NSwgODI5NTgsIDk0MTAxLCAxMjc0ODQsIDkxNzYxOSwgMTE5MTQ5LCAwLCAxMDA0MywgMTIxMjE1LCAxMTg2LCAKKyAgICAxMTg4MjIsIDE3NTAsIDEyODY4NiwgNDM5NCwgNjgzNjgsIDE4MDcsIDc4NTQ1LCA5MjI5OCwgMTAxMDgyLCA1ODg5LCAKKyAgICAxMjg3OTUsIDcxODAsIDEwMTA4MywgNjcxMjcsIDEwMTA5MSwgNjcxMjYsIDQyNDcxLCA2OTgyLCAxNzIxLCA0NDAyMiwgCisgICAgNzg5MSwgNDIyNDMsIDQyMTYwLCAyNTgzLCA0NTEyLCAxMTkzNjAsIDY1MjMwLCAxMjgxMDksIDk4MzQ2NywgOTE3NjMwLCAKKyAgICAzODU1LCAxOTQ4MTAsIDExNzY3LCAxMjc5OTgsIDk4MzU4OSwgNzQyOTUsIDE5NDU3NywgMTAwNzk3LCA5MjQxNiwgMzk3NSwgCisgICAgNjcxMjUsIDc0MDg3LCA3NDk4OSwgMTI2NzIsIDM3OTgsIDI3MDMsIDEwMDc5MywgMCwgMjEwOSwgOTc3NCwgMTI3NSwgCisgICAgMTk0OTY0LCA5ODM3NTAsIDQxMDk1LCAzOTYyLCA2ODI0MiwgMjkzMiwgNDExMDEsIDM5NTQsIDY0NTcsIDQ1MTMsIDc0NTM2LCAKKyAgICAxMDA5NDcsIDczOTk0LCA3Mzk5MiwgMTQ2OCwgMTIwMDMzLCA5ODMwNTcsIDQxODAzLCAxMjc5OTksIDQxODQ2LCAxMjcyNDQsIAorICAgIDU1MjM4LCA3NjMzLCA0MTg0OSwgNjgzODUsIDQzMjAsIDMyMjQsIDEwMDc1NSwgOTI3NDEsIDY2MjgxLCA0MjUzMSwgCisgICAgNzQ1OTMsIDE1MTAsIDEyODM4NCwgODI1NiwgOTgzMDQzLCAxMTM5MywgMCwgODg3OSwgMTI4MDc1LCA5MjQ3NCwgODc3MCwgCisgICAgNzI0MTYsIDEyMDgxMSwgNzI0MTUsIDE5MTAsIDg2NzEsIDc4Mzc0LCA0MjgzLCA2ODg0MiwgNzI3ODcsIDY4MzYxLCAKKyAgICA3ODMxOCwgMjY1NCwgNzg5MywgMTI5MTUxLCAxMjgyNDEsIDEwMDgwMiwgNzIzOTQsIDY1MTA2LCA0Mjc2MSwgMTI4NTcsIAorICAgIDQ1ODEsIDg0MTEsIDc4MzcyLCA3ODM3MSwgNzgzNzAsIDc4MzY5LCA3ODM2OCwgNzQ0NzUsIDk4MzE0MywgMCwgMTczMywgCisgICAgNDM5MiwgMjU2OCwgMTA3ODYsIDY5NjYxLCAwLCA4MTg0LCA0MTQ4NiwgMTI4NjQ0LCA3Mzk2LCA3MTE2LCAwLCA2OTc4OCwgCisgICAgMTAwNzkwLCA3MTg1LCA3OTY1LCAxMTkxNDQsIDEyODQ0NywgOTIzNDcsIDE5NTA2NiwgNDEzNTAsIDkxMjksIDk4MzQ0OCwgCisgICAgOTgzNjE5LCAyMjk0LCA2NDUwMSwgNjgwMzQsIDgzMzI2LCAxMDQ4MSwgMCwgNzAwMjIsIDcxNzEsIDAsIDM0MCwgNzExMDUsIAorICAgIDkzOTcyLCA2NzM2MCwgMTk0OTQyLCA5MjIwMCwgMTI4MjQ5LCAxMjQ5NzksIDY3NjQsIDEyMDgwNCwgMTI4MzkzLCAwLCAKKyAgICA5MjUwOSwgMTI4OTYyLCA2NTIwMywgMTEzOTIsIDExOTA5OCwgMTE5MzU5LCAxMTkwNzMsIDMyMTAsIDAsIDEwMDYzMiwgCisgICAgMTE4Nzk1LCA4Mjk1OCwgOTQxMDEsIDEyNzQ4NCwgOTE3NjE5LCAxMTkxNDksIDczOTI2LCAxMDA0MywgMTIxMjE1LCAxMTg2LCAKICAgICA0MTU3MSwgNjk5OSwgNjE3LCA5NDY0LCAxMjUxMjMsIDM2NzUsIDUyMDcsIDY1MDYyLCA1MjEzLCA3NDYxNiwgMjYxNywgCi0gICAgNDEzNDgsIDQxNTY4LCAxMjg4MDMsIDMyNTMsIDEyMDUzNSwgMCwgODYzMCwgMTIxMjA5LCAwLCA1NTk2LCA1NTQ1LCA3Mjg4LCAKLSAgICAyNTg2LCA2NDg4NywgMTE5ODI2LCA1MjE3LCA3MTMzNiwgMTI4Njg3LCA5MTc2MTQsIDEyMTAzOCwgNjQyOTMsIDY4MDk4LCAKLSAgICAyNjM1LCA5Mjc2MCwgODMxMzcsIDk4Mzg0NiwgMCwgOTI3NDIsIDc4MzUsIDcwMDQwLCAxMjA3MDcsIDE5NDk4OCwgOTIyODUsIAotICAgIDY0NTU4LCAxMjcxMjIsIDEyMTQyNSwgNjcwODMsIDY3MDg1LCA3MDA5OSwgNzExMTgsIDU3ODQsIDk4MzEwMiwgMTk1MDUwLCAKLSAgICA5ODM4MTIsIDcwMDMzLCA0MDExLCAxOTQ1NjUsIDY4MTAxLCAxMjQ5NzgsIDc4NjQsIDQyNTQsIDY1MDk1LCA5ODM0OTgsIAotICAgIDU2MDAsIDM5MDMsIDEyNzA4MywgMTA0NDcsIDU1OTgsIDEyMDcsIDEyMDUyMSwgNjY2ODksIDM1MDEsIDQyNTgyLCA0MzYwMCwgCi0gICAgMTI5MDU0LCAxMjcxMDMsIDExMjQsIDU1OTcsIDE5NDc3OCwgMTk0NzcyLCA5MzIxLCA5ODM0ODYsIDc1MDQwLCA5ODM0ODQsIAotICAgIDY3NDAwLCAxNzE5LCA2ODM1NiwgNjgzNTQsIDk2NzEsIDExMjUsIDQzOTksIDY4Nzc1LCA2NjI3NCwgOTgzNDkwLCA3NjMxLCAKLSAgICA1NDg4LCA3MTI4LCAxMjA1MzIsIDAsIDU0OTEsIDExODc5NywgODkzNywgNDMwNDQsIDI2MDQsIDc0MTg3LCA1NDkwLCAKLSAgICA0MzA0NiwgNTQ4OSwgNzIxMiwgMTE3NjgsIDQzMDQzLCA2MzAwLCAxMjcxMjEsIDcxMjIsIDk4MzA5MCwgNDM5MCwgNDU0LCAKLSAgICA0MTM5NywgMCwgOTg3NSwgNzU5MywgMTk0NzkxLCA5MjI3NCwgMTE4OTEzLCA3MjA3LCAwLCA2NTkwMSwgMjM5NCwgMjU3NSwgCi0gICAgMTE5MTg0LCAzNzQ2LCAxMTAxNiwgNjU3NTIsIDkyNzU3LCAwLCA0MzQyMywgMTI4NjgzLCAxMTk4OSwgMTE4ODg5LCAKLSAgICAxMjc3OTEsIDEyNzk5NSwgNzgyOTYsIDAsIDgyNDksIDEyODE3MiwgMTExMDksIDc4NTMxLCA2NjQwLCA3NDgwNiwgMjU5OCwgCi0gICAgNTEzLCAxMjcxMTgsIDY1ODYsIDg2NTYsIDEyOTMwMSwgNjk3OTIsIDY1MDA4LCAxOTQ1OTcsIDcxMTExLCA3ODM4MywgCi0gICAgMTk0Nzk1LCAxMjc0NzQsIDkyNTE1LCA2ODQ3NSwgOTM5NzMsIDE5NDU4NCwgNjM3OTksIDc4NjM3LCAxMjY0NywgOTE3NjA2LCAKLSAgICAxMjgwNDMsIDY5ODkzLCAxMDM2LCA2ODA5MCwgOTI0MTksIDE3MjMsIDY4MjE1LCA3NDIxNywgMCwgNDE1NzksIDI0NDQsIAotICAgIDEyMDcyMiwgMTA3MDUsIDczODc2LCAxOTUwNTQsIDc0NDg2LCA5ODM0NjksIDc0MCwgMTE5MjIyLCAxOTQ5NzgsIDE5NDk4NCwgCi0gICAgMCwgNDIzOCwgMTEwNzEsIDk0NTksIDQzOTM2LCA0MzkzOCwgNzgxMzksIDE5NDk4NSwgODEyMSwgMTA0MzgsIDc0NDg3LCAKLSAgICA0MjU3NCwgMTMyODUsIDQzOTY3LCAxMTkwNywgNDM5MjgsIDU2OTAsIDkyMjU1LCA1MTE2LCAwLCA0MzE4MSwgMTMwOTUsIAotICAgIDc3OTI1LCA0MzkyNiwgNjQ0OTgsIDAsIDk1MDYsIDY5NzgsIDcwMTc2LCA3NDkzMSwgMCwgMTEzNzQzLCA3ODM3OSwgCi0gICAgNDM5MzQsIDEyNzg0NSwgMTEyMiwgMzE3LCAwLCA3MTA1NSwgMTIwNjIxLCAwLCAxOTIwLCAwLCAxMDE3MywgODI3LCAwLCAwLCAKLSAgICA3ODM3OCwgMTE5NjAwLCA1MjIzLCAxMzA0LCAwLCA4MzUyNiwgNTIyNiwgMTI2MDIsIDk0MDQ0LCA1ODgwLCA5MzI5LCAKLSAgICA3NzU4LCA5MjM5LCA0MTE3MywgNTIyNCwgNTQ4NywgMTIyMiwgNTY5MiwgNDE3MjUsIDY5MjI5LCA5Njc0LCA1Njk1LCAKLSAgICA0MTcxMSwgNjQ2MjcsIDE5OTA5LCA3MTA3NywgNzQ2MDQsIDU2OTEsIDI4NywgODY2LCAyMzMsIDY4MTM4LCA5ODM0NDMsIAotICAgIDQyODE2LCA5NDAzNiwgNjUxNDAsIDY4MDI4LCA4MzA5MywgODgzMCwgNjU2OCwgNDIzMDAsIDEwNTI0LCA0MTE3NSwgCi0gICAgODMwOTQsIDk4MzQ0NywgNjg4MjcsIDUyOTYsIDk4MzQ0NiwgNDI0OTIsIDQzNDAyLCA5MjQ2NiwgMzMwMiwgMCwgNzQ4NTgsIAotICAgIDY1MTYsIDY1MTUsIDY1MTQsIDY1MTMsIDY1MTIsIDAsIDc4NTYsIDg2OTAsIDk4MzY4NiwgNzA4NzAsIDEyMTIyLCAKLSAgICAxMTk2MDIsIDQzOTc2LCAxOTQ5MzcsIDE3ODUsIDY5OTI1LCA2ODYyMiwgNjUxNTMsIDY4ODA5LCA1MTM4LCA5ODM2MzcsIAotICAgIDcxOTIyLCAxMTg4NjksIDAsIDQ1NDAsIDQxMTgxLCA5MTc5MjAsIDYyMDAsIDAsIDUxMzQsIDY5OTgwLCAzMjIsIDQ2NDMsIAotICAgIDUxMzIsIDEyMTE4NCwgNjM4OSwgMTIwOTk4LCA1MTQzLCA4MzIwNSwgODc5MCwgMTIwOTExLCAxMjAxMjEsIDEyODY5NSwgCi0gICAgNzExNjgsIDg4NjksIDY5OTE2LCA5MzA2OSwgNDIwNjAsIDcxMzI2LCA5NjQ4LCA4MzEwOSwgNzExNzAsIDEwMjcwLCAKLSAgICAxMDI4NiwgMTAzMTgsIDEwMzgyLCA0MzUyOSwgNjY0NzcsIDE5NDgwMCwgMTI4NTM0LCA3NDE3MCwgMCwgMzIzNCwgNDM4MzUsIAotICAgIDkxNzgxOCwgNzAxMTEsIDQzMTM5LCAxMTg4MTUsIDEyNzA4NCwgMTIwNjI3LCA4NzY3LCA2ODIzMSwgNzQ0ODksIDk2OTUsIAotICAgIDcyNDM5LCA1MjAxLCA3NTA2MSwgNjIxNSwgMTI3MTQsIDYyMTQsIDEzMTAxLCAwLCAxOTQ5OTksIDY1MjY4LCA3NjYxLCAwLCAKKyAgICA0MTM0OCwgNDE1NjgsIDEyODgwMywgMzI1MywgMTIwNTM1LCAwLCA4NjMwLCAxMjEyMDksIDE5NDc3MCwgNTU5NiwgNTU0NSwgCisgICAgNzI4OCwgMjU4NiwgNjQ4ODcsIDEwMDg5NiwgNTIxNywgNzEzMzYsIDEyODY4NywgMTAwODk4LCAxMjEwMzgsIDY0MjkzLCAKKyAgICA2ODA5OCwgMjYzNSwgOTI3NjAsIDgzMTM3LCA5ODM4NDYsIDAsIDkyNzQyLCA3ODM1LCA3MDA0MCwgMTIwNzA3LCAxOTQ5NTAsIAorICAgIDkyMjg1LCA2NDU1OCwgMTI3MTIyLCAxMjE0MjUsIDY3MDgzLCA2NzA4NSwgNzAwOTksIDcxMTE4LCA1Nzg0LCA5ODMxMDIsIAorICAgIDEwMDg1NCwgOTgzODEyLCA3MDAzMywgNDAxMSwgMTk0NTY1LCA2ODEwMSwgMTAwODU5LCA3ODY0LCA0MjU0LCA2NTA5NSwgCisgICAgMTIwMDE3LCA1NjAwLCAzOTAzLCAxMDA4OTIsIDEwNDQ3LCA1NTk4LCAxMjA3LCAxMjA1MjEsIDY2Njg5LCAzNTAxLCAKKyAgICA0MjU4MiwgNDM2MDAsIDEyOTA1NCwgMTAwOTEzLCAxMTI0LCA1NTk3LCAxOTQ3NzgsIDE5NDc3MiwgOTMyMSwgOTgzNDg2LCAKKyAgICA3NTA0MCwgOTE3OTcyLCA2NzQwMCwgMTcxOSwgNjgzNTYsIDY4MzU0LCA5NjcxLCAxMTI1LCA0Mzk5LCA2ODc3NSwgNjYyNzQsIAorICAgIDkyMTY1LCA3NjMxLCA1NDg4LCA3MTI4LCAxMjA1MzIsIDEyMDMzOSwgNTQ5MSwgMTE4Nzk3LCA4OTM3LCA0MzA0NCwgMjYwNCwgCisgICAgNzQxODcsIDU0OTAsIDQzMDQ2LCA1NDg5LCA3MjEyLCAxMTc2OCwgNDMwNDMsIDYzMDAsIDEyNzEyMSwgNzEyMiwgOTgzMDkwLCAKKyAgICA0MzkwLCA0NTQsIDQxMzk3LCA5ODMwNTUsIDk4NzUsIDc1OTMsIDE5NDc5MSwgOTIyNzQsIDExODkxMywgNzIwNywgCisgICAgMTI1MDYyLCA2NTkwMSwgMjM5NCwgMjU3NSwgMTE5MTg0LCAzNzQ2LCAxMTAxNiwgNjU3NTIsIDkyNzU3LCAwLCA0MzQyMywgCisgICAgMTI4NjgzLCAxMTk4OSwgMTE4ODg5LCAxMjc3OTEsIDEyNzk5NSwgNzgyOTYsIDY4MjI0LCA4MjQ5LCAyMjMyLCAxMTEwOSwgCisgICAgNzg1MzEsIDY2NDAsIDc0ODA2LCAyNTk4LCA1MTMsIDEwMDcxNCwgNjU4NiwgODY1NiwgMTI5MzAxLCA2OTc5MiwgNjUwMDgsIAorICAgIDE5NDU5NywgNzExMTEsIDc4MzgzLCAxMjcyNTIsIDEyNzQ3NCwgNjY3NTUsIDY4NDc1LCA5Mzk3MywgNzI4NTksIDYzNzk5LCAKKyAgICA3ODYzNywgMTI2NDcsIDkxNzYwNiwgMTI4MDQzLCA2OTg5MywgMTAzNiwgNjgwOTAsIDkyNDE5LCAxNzIzLCA2ODIxNSwgCisgICAgNzQyMTcsIDAsIDQxNTc5LCAyNDQ0LCAxMjA3MjIsIDEwNzA1LCA3Mzg3NiwgMTk1MDU0LCA3NDQ4NiwgOTgzNDY5LCA3NDAsIAorICAgIDExOTIyMiwgMTIwMzA1LCAxOTQ5ODQsIDAsIDQyMzgsIDExMDcxLCA5NDU5LCA0MzkzNiwgNDM5MzgsIDc4MTM5LCAKKyAgICAxOTQ5ODUsIDgxMjEsIDEwNDM4LCA3NDQ4NywgNDI1NzQsIDEzMjg1LCA0Mzk2NywgMTE5MDcsIDQzOTI4LCA1NjkwLCAKKyAgICA5MjI1NSwgNTExNiwgMTI4MDEzLCA0MzE4MSwgMTMwOTUsIDc3OTI1LCA0MzkyNiwgNjQ0OTgsIDAsIDk1MDYsIDY5NzgsIAorICAgIDcwMTc2LCA3NDkzMSwgMCwgMTEzNzQzLCA3ODM3OSwgNDM5MzQsIDEyNzg0NSwgMTEyMiwgMzE3LCAxOTQ4NzAsIDcxMDU1LCAKKyAgICAxMjA2MjEsIDAsIDE5MjAsIDEyOTMzOSwgMTAxNzMsIDgyNywgMTI1MjM2LCAwLCA3ODM3OCwgMTE5NjAwLCA1MjIzLCAKKyAgICAxMzA0LCAwLCA4MzUyNiwgNTIyNiwgMTI2MDIsIDk0MDQ0LCA1ODgwLCA5MzI5LCA3NzU4LCA5MjM5LCA0MTE3MywgNTIyNCwgCisgICAgNTQ4NywgMTIyMiwgNTY5MiwgNDE3MjUsIDY5MjI5LCA5Njc0LCA1Njk1LCA0MTcxMSwgNjQ2MjcsIDE5OTA5LCA3MTA3NywgCisgICAgNzQ2MDQsIDU2OTEsIDI4NywgODY2LCAyMzMsIDY4MTM4LCA5ODM0NDMsIDQyODE2LCA5NDAzNiwgNjUxNDAsIDY4MDI4LCAKKyAgICA4MzA5MywgODgzMCwgNjU2OCwgNDIzMDAsIDEwNTI0LCA0MTE3NSwgODMwOTQsIDk4MzQ0NywgNjg4MjcsIDUyOTYsIAorICAgIDk4MzQ0NiwgNDI0OTIsIDQzNDAyLCA5MjQ2NiwgMzMwMiwgMCwgNzI4NDIsIDY1MTYsIDY1MTUsIDY1MTQsIDY1MTMsIAorICAgIDY1MTIsIDAsIDc4NTYsIDg2OTAsIDk4MzY4NiwgNzA4NzAsIDEyMTIyLCAxMTk2MDIsIDQzOTc2LCAxMjUxOTQsIDE3ODUsIAorICAgIDY5OTI1LCA2ODYyMiwgNjUxNTMsIDY4ODA5LCA1MTM4LCAxMjk0MjAsIDcxOTIyLCAxMTg4NjksIDEwMDg4MywgNDU0MCwgCisgICAgNDExODEsIDkxNzkyMCwgNjIwMCwgODI5NDksIDUxMzQsIDY5OTgwLCAzMjIsIDQ2NDMsIDUxMzIsIDEyMTE4NCwgNjM4OSwgCisgICAgMTIwOTk4LCA1MTQzLCA4MzIwNSwgODc5MCwgMTIwOTExLCAxMjAxMjEsIDEyODY5NSwgNzExNjgsIDg4NjksIDY5OTE2LCAKKyAgICA5MzA2OSwgNDIwNjAsIDcxMzI2LCA5NjQ4LCA4MzEwOSwgNzExNzAsIDEwMjcwLCAxMDI4NiwgMTAzMTgsIDEwMzgyLCAKKyAgICA0MzUyOSwgNjY0NzcsIDE5NDgwMCwgMTI1MjMxLCA3NDE3MCwgMCwgMzIzNCwgNDM4MzUsIDEwMDg4NiwgNzAxMTEsIAorICAgIDQzMTM5LCAxMTg4MTUsIDEyNzA4NCwgMTIwNjI3LCA4NzY3LCA2ODIzMSwgNzQ0ODksIDk2OTUsIDcyNDM5LCA1MjAxLCAKKyAgICA3NTA2MSwgNjIxNSwgMTI3MTQsIDYyMTQsIDEzMTAxLCAxMjc4NjksIDE5NDk5OSwgNjUyNjgsIDc2NjEsIDEyMTMwOCwgCiAgICAgMTIwOTA5LCAxMTAyNywgMTI4NTk2LCAxMDA1OSwgMTA1MTEsIDQyMDc1LCA5NzY3LCA3ODksIDE3NDksIDc4ODkwLCAKLSAgICA2NzExNSwgOTgzNjcwLCAzMjAsIDAsIDg2NDcsIDgzMDU0LCAzMDQ5LCAwLCA2NDcxLCA0MjA3MSwgNDMxNTYsIDk5MjUsIAotICAgIDEyNzM1NiwgMTE4ODk0LCA2NjQ3OCwgNDk2MCwgNTU0OSwgMTI3MzU5LCAxMjczNDYsIDg0ODUsIDQ2NzEsIDU0MTgsIAorICAgIDY2NzY2LCA5ODM2NzAsIDMyMCwgMCwgODY0NywgODMwNTQsIDMwNDksIDAsIDY0NzEsIDQyMDcxLCA0MzE1NiwgOTkyNSwgCisgICAgMTI3MzU2LCAxMTg4OTQsIDY2NDc4LCA0OTYwLCA1NTQ5LCAxMjczNTksIDEwMDk5NiwgODQ4NSwgNDY3MSwgNTQxOCwgCiAgICAgMTI3MzUwLCAzMzUxLCAxMjA4OTIsIDEyNzM1MSwgMTA2MTAsIDU0MTQsIDMwNjQsIDYyMTIsIDQyODYsIDU0MjEsIAogICAgIDEyNzM0NCwgOTU1NCwgNjgwNTEsIDk0MDQ4LCA2Njg5NiwgNjY1MywgODMwNDQsIDgzMTAyLCA2NDUxMCwgNjIxMywgCi0gICAgMTI4ODUsIDAsIDExOTA0NSwgNjQ3MjAsIDkxNzg3MywgMTIwNzU5LCA3Mzc0MSwgMTI2MDMsIDcxMzEsIDExMTA4LCA0NTY2LCAKLSAgICA3NTE4LCA5MzE3LCAzODAxLCAxMDM0MiwgMTA0MDYsIDEyNDkzOCwgMTE5MjU5LCA0MjU3NiwgMCwgNTIwMCwgOTI5NDYsIAotICAgIDEyMTQzNSwgOTgzODk1LCA5MTgzLCAxMjczNjEsIDc0NDU4LCA2NjI4MiwgMzk1LCA1NDgyLCA1MTk4LCA0MzQ5LCAxMDM5MCwgCi0gICAgNzQyMDIsIDUxOTYsIDQzMjI0LCA2MTEzLCA0MjAwOSwgNTIwNSwgMTI4MzgzLCA0MzMwNywgNzAyOTcsIDExODk3MywgCi0gICAgNzA0NjcsIDEyMTM0LCAxMjExNjcsIDAsIDExODg0MywgOTEyNiwgNDM1LCA5ODM2MjQsIDEyMDE0LCAxMDM3NywgODA5MywgCi0gICAgOTA3OSwgMzIwMywgMTkyLCA2NTEwOSwgMzM4NSwgMTI1MDc1LCA2NDQzMCwgNTM4MywgMTAyOTQsIDEwMzI2LCAxMjczMDksIAotICAgIDU3MzgsIDEyMDA4OSwgMzMzNiwgNzgzNTUsIDUzNjEsIDM2MjMsIDQxMTU5LCA4MzM3OCwgNjgxMTIsIDc4NzIsIDg1ODEsIAotICAgIDAsIDEyNjAsIDMxNDksIDUzNTksIDEyMDEzNCwgNzQ5NTUsIDc5MTQsIDUzNTcsIDcxMTkwLCA3NDMzOSwgMjYyNCwgNTM2NCwgCi0gICAgOTgzNjA4LCAxMTQzMSwgMTIwMDMwLCA5MTAxLCAxMTA1OCwgNzgyODgsIDY3MTA3LCA3ODI5MywgNDIyNzEsIDc4Mjg5LCAKLSAgICA0MjkxNywgNjcxMTEsIDEyOTE3OSwgNjU1NjYsIDY3MTcsIDEwNjE5LCA0MzM2MCwgNzgyOTEsIDc4Mzg0LCAxMTgzMiwgCi0gICAgNzgzODIsIDc4MzgxLCA3ODM4MCwgNjk4NjEsIDkzMTksIDcwOTcsIDExOTA1NSwgNzc5MDYsIDMyMzIsIDczODI0LCAKLSAgICA3NDU4MSwgNzgwODcsIDAsIDcxMjA1LCA0MTg4OSwgOTI0NTMsIDEyOTE0NCwgMTE2MSwgNDE4OTUsIDc0MTAzLCA5NzAxLCAKLSAgICA4NjIyLCAxMjUwMjUsIDAsIDY4NzcyLCAxMjA1ODgsIDUwMTIsIDcxNDUzLCA0MTM2MiwgNjk4NjIsIDY4NTA3LCAxMTkyMSwgCi0gICAgMCwgMTE3NjksIDY4NzgyLCA2ODYwOSwgNDEzNjQsIDEyMDk0NywgNzQyMjgsIDQxMzUyLCA0MTM2MSwgOTE3OTAzLCAKLSAgICA0MTM2NiwgMCwgMzM1NiwgMTE2MTEsIDkxNywgNjg0MjIsIDExOTkxNSwgNzEzNCwgODE5OSwgNzgzODksIDExOTYxOCwgCi0gICAgNjc3LCAxMTk5MTYsIDkxNzg3NiwgNzE0ODIsIDEyNzE2OSwgNjg3NDcsIDAsIDY4NzM4LCAzMzQ5LCA3NDEyNSwgNzAyMiwgCi0gICAgODkyNywgNDczOSwgOTI1OTksIDU4MDIsIDE5NDg3NCwgODYxNSwgMCwgMTI4MDU4LCA0OTEsIDc0NDAxLCAxMDE5MCwgCi0gICAgNjg3NTUsIDY1ODM3LCA2ODgwMCwgODQyNiwgMTEwOTIsIDk4OTEsIDAsIDQyNDk3LCA3MTEzLCA3NTg2LCA0MjMwNSwgCi0gICAgMTA4NTIsIDAsIDQyNjQ4LCA0NjA2LCA2ODQ0OCwgOTA5NSwgNzc0MSwgMTI2ODQsIDQxODg1LCAxMDQ2LCA3MTI0LCAKLSAgICAxMjg2MTAsIDY4NzUzLCA1ODE1LCA1MTcxLCA2NTUzOSwgNjg2MTIsIDY5MzIsIDc0MjY3LCA0MjM5NCwgNDE4NzgsIAotICAgIDc0ODQ5LCA3NDk0NywgNzI0MjQsIDUxNjksIDExOTM1LCAwLCAwLCAzMTc1LCAxMjA4MjIsIDE1MzcsIDEyMDgwNCwgNTE3NiwgCi0gICAgODkwNSwgNDEzNiwgNDg3MSwgNzgyODcsIDEyMDY2MywgOTgzMywgMCwgMTEzNzMwLCAxMTI4LCA2NTkyMCwgOTE3ODc5LCAKLSAgICA5NzExLCA3MDU3LCA5NDA4LCA5NDA5LCA5NDEwLCA5NDExLCAzNjYyLCA5NDEzLCAzMzc4LCA5NDE1LCA5NDE2LCA5NDE3LCAKLSAgICA5NDE4LCA2MzIwLCA5NDIwLCA5NDIxLCA1ODk3LCA5NDIzLCA1MTY1LCA1MTI2LCA0MTM4NSwgOTgzOTM4LCA0MTM4OSwgCi0gICAgMTI3OTYzLCA4OTU1LCAzMzc0LCA5NDAwLCA5NDAxLCA3MTE5LCA5NDAzLCA5NDA0LCAzNTA3LCA5NDA2LCA3NjI5LCAKLSAgICA5ODM2MTcsIDE5OTI1LCA0MjY2OSwgNjg0NjMsIDE4MywgNDM5ODUsIDI2MzEsIDcwODExLCAxMDYyNywgNDExMzAsIAotICAgIDcxMDc5LCAzOTk2LCAwLCA3MTQ0MiwgMTI4OTEzLCAxMTkzMTMsIDExOTMwNywgNzg3NjgsIDY1ODAsIDQzMzIsIDY0ODI1LCAKLSAgICA2NjMyOSwgMTA3MjYsIDY2Njg2LCA0MTEyNSwgNTg5OSwgNDEzNjUsIDEyNzIwNiwgMTIwODUsIDY2OTAyLCA1NzQsIAotICAgIDEyNjcwNSwgNzc4MjUsIDczODI4LCA1NDQ4LCA0MTA1OCwgNTQ0NiwgNjU5MzIsIDQxMzIyLCA0MjIxMSwgNTQ0MiwgNDE5MCwgCi0gICAgNzc4MzQsIDc3ODM1LCA1NDUxLCA3NzgzMywgMzYxNiwgNzc4MjgsIDY4ODE3LCA3NzgzOCwgNzcwOCwgNzQ3NTksIDIyMjgsIAotICAgIDY1ODY3LCAxMDM0NSwgMTA0MDksIDQxOTEsIDEyMDM3OCwgNzc4NDQsIDczODAwLCA0MjE4MSwgNzc4NDMsIDc3ODM5LCAKLSAgICAyMDYwLCAxMjExOTMsIDcxMTEsIDExNzg4LCA2NTM3NiwgNjgxMjksIDEwNDE1LCA3NDEwMiwgOTgzNjI1LCAyMDUsIAotICAgIDgzMDQwLCAxMDM1MSwgNjcxNTEsIDAsIDk4NjIsIDY1ODgsIDQzMjU3LCA2NDY5NywgNzM5OTgsIDQxMzU1LCA1NTA1LCAKLSAgICA3NDk2NiwgNTUwMywgODAyMSwgMTI4MDM1LCA3MTI1LCA5ODE5LCA0MTM1NywgODAxMSwgNDI4ODUsIDU1MDcsIDEyMDQ0LCAKLSAgICA5MjYzNiwgMCwgMTAwMjYsIDU0NzIsIDcxMDksIDExOTEsIDEzMTA2LCA1NDcwLCAxMDMyOSwgNTQ3NiwgODk5MSwgNjYzMjIsIAotICAgIDY5Nzc4LCAxMTEzMywgNDI4NzQsIDg1NTAsIDQyODc2LCA1NTkyLCAyOTE5LCAxMjkwNTIsIDI2NzUsIDU1OTUsIDc4NDExLCAKLSAgICA0Mzc2MiwgNDM2NywgMTI3OTEyLCA5MTc3ODIsIDU0NzgsIDU5MDQsIDU1OTQsIDAsIDc0MTUwLCA3MjkxLCA1NTkwLCAKLSAgICA0Mzc2MSwgMTMwNjcsIDExODkwOSwgNzUwNjksIDk4MzEwOCwgOTczMSwgNjk3MzEsIDY0NjMzLCA3Nzg1NywgNzc4NTQsIAotICAgIDcxMjE3LCA3Nzg1MiwgNzEyMjcsIDc3ODUwLCAxMDc1MCwgNDM3MTQsIDc3ODU4LCA3MTM3LCAwLCA2NjkwOSwgMTI4ODcsIAotICAgIDEwNTUxLCAxOTQ1NjQsIDc3ODY2LCA3Nzg2NywgNzc4NjQsIDc3ODY1LCA5OTI5LCA1MTk5LCA5OTM2LCAxMTIwLCA0MjM4NywgCi0gICAgMCwgMTQ0NCwgOTQ4NiwgNzU1NCwgNjU4MzksIDU1MjUyLCA3Mzk3MiwgMTQ0MiwgMTI5MDgwLCA1ODk0LCA3MDA2OSwgCi0gICAgMTI4NjcyLCA0MTE3MSwgOTI1MTEsIDcwMzU4LCAxMzIzLCAxMzE2MiwgMTIwNTk5LCAzMzM0LCAxMjg3MDQsIDkyNzA5LCAKLSAgICA3Nzg4MSwgNjYwMjIsIDAsIDY5NzcwLCAxNjUxLCAxMjAzNjQsIDg4NjEsIDAsIDAsIDExNDIsIDk4MzExMiwgODI3MSwgMCwgCi0gICAgOTgzMDU4LCAxMjY2NDUsIDEyOTAzLCA3ODQwNiwgNDAwMiwgNDM2MjYsIDEwNDQyLCAxMDY3NiwgMzM0NCwgMTI4OTEwLCAKLSAgICAxOTQ3ODcsIDEyOTIwLCAxOTQ1NjAsIDcwNDk3LCAxOTQ2ODcsIDY2NjQyLCAxMjc3LCA2Njg3NiwgNzg3MSwgNjcxMDYsIAotICAgIDcxNDg3LCA3ODg1MywgMTI5MDY4LCA3ODg1NCwgMTIwMzYwLCA5ODM0OTIsIDExNzg0LCAwLCA3ODAxMiwgNDcwMCwgCi0gICAgNDM4NTYsIDc4ODU4LCAxMjAzNTksIDExMDEyLCA5ODM2MjcsIDc4ODU2LCA3ODQ0OCwgNzc4NzksIDQ5NzMsIDg3ODQsIAotICAgIDc3ODc3LCA3NDgwNCwgNzc4NzQsIDc3ODY5LCA3Nzg3MSwgNDI0NDAsIDcxMjI1LCA0MzExOCwgMTE5ODc1LCA0MjM2NCwgCi0gICAgNjc3NCwgNjc3MywgOTE3NTYwLCAxMjAzNjksIDEwMzQ2LCAxMDQxMCwgNzg4NTksIDkyNDMsIDI0NjQsIDc0MjYzLCA2MTA4LCAKLSAgICAzMzcyLCAwLCA2MjQ3LCA0MzExNywgNzAzNjQsIDcxMjEsIDc0MTY2LCAxMjQ5NzMsIDEyMDM1NSwgOTI1MzcsIDE5NDg0NiwgCi0gICAgMTE5ODc3LCAxOTUwMzQsIDcwMzU3LCAxMTk5MjIsIDAsIDY3MTE5LCAzMzU0LCAxOTUwMzcsIDQxOTIsIDkyODksIAotICAgIDExODk5OSwgNDExOTEsIDM4NzYsIDAsIDcwMDY3LCAxMjA2NjAsIDQzNjk2LCA0MzM4MCwgMCwgOTgzMDkxLCA5ODM5NjUsIAotICAgIDk4Mzc1OCwgMTE2MDMsIDk4Mzk1NCwgNzUwNzQsIDY1ODksIDEyODU2NCwgODI5NzUsIDEyMDk5MywgNjc4MTIsIDk4MzcwMCwgCi0gICAgMCwgMTI5MDg3LCA0MjU3MiwgMTI4MjY0LCAxMDYzMCwgNzQ4MjcsIDE5NjMsIDExNjIyLCAxMTg4ODIsIDExNjU0LCAKLSAgICAxMjEyODcsIDc1NTAsIDEwNjg2LCA1OTAzLCA2NzA5OCwgNzgwMDksIDQxMzI5LCA5NjYyLCA5MTc5MzcsIDY0Njk4LCAKLSAgICAzMzY2LCAxMDM5OSwgOTE3OTM4LCA1NTQyLCAxMTAxMywgMTI3OTI3LCA3MTA2MiwgMTk0Njc3LCA3MTQ2MSwgNjcwOTAsIAotICAgIDY5MjUsIDAsIDAsIDkyODkyLCA3MTg1NiwgMTE1NjgsIDk4MzY3MywgNDMzNjcsIDY0NTc5LCA5MTc5MzAsIDc4NTIsIAotICAgIDExMTM4LCAwLCA2NzU0LCA2MzEyLCA3Nzk1NiwgNjQ2NzIsIDY1Mjk2LCAwLCAxMTg5NTcsIDAsIDQxNiwgMTIyOTYsIAotICAgIDY4NDU3LCA3MzgzNCwgNjgxNzcsIDExMDUwLCAxMDk4NCwgOTIyMDgsIDAsIDAsIDkyMTgyLCAxMjkxNDYsIDk4MzYwNSwgCi0gICAgOTUzMiwgNjYzNTUsIDExOTI2NCwgNjgwNzMsIDExMzY5NSwgNjQzNDMsIDE5NTAzMiwgOTI3NDQsIDE5NTAzMSwgMCwgCi0gICAgMTk0ODQ3LCAxOTUwNTcsIDExNDQ1LCA2ODI5NCwgMjExMiwgMTI4NzQxLCAxMjg4MTQsIDEwMTg1LCAxMDIxLCAxMjgxMzAsIAotICAgIDk1MDcsIDEwMjEwLCA3NDU0NCwgODAyMywgMTIwMCwgMTIyNDMsIDc4MDAxLCA1MjgyLCA3ODAwMywgOTYyNCwgMTE1NDUsIAotICAgIDAsIDEyMDI3NiwgMzM0MywgNDQyNCwgMTEwNDcsIDE4ODUsIDQzMjY4LCAzODk2LCA3ODQ0NCwgNjY0OTcsIDI5NDcsIDM5MiwgCi0gICAgNzg5NCwgNDM5MSwgNjgxMzksIDEyMTA2NCwgMTMwNTksIDc0ODE2LCA3Nzk5OCwgMzM4MSwgNzk0MiwgMCwgNjkyMTksIAotICAgIDkyNDMzLCAzNTU4LCAxMjkxOTAsIDM5MTMsIDcwNDI5LCAxMjEzNzYsIDc4MjM1LCA3MDQ0LCAxMjY1LCAwLCA2MzA5LCAKLSAgICA3MDQ1LCA3MTc1LCA3MDQ3LCA3ODIzOSwgMTE3OTEsIDk4MzEyMiwgOTE3NTg3LCA4MjIxLCA3ODMwNywgNDE4NjQsIDAsIDAsIAotICAgIDY3MDc1LCA3MTIxOSwgMTY3LCA5ODM5MDYsIDc4MzAxLCA5ODM2NTMsIDc0MjExLCA0MTg5NywgNjcwNzIsIDAsIDkxNzU4MywgCi0gICAgMTI3MTQwLCA2NzA3NiwgMjQ5MywgMCwgMTEzNzc4LCAxMjEyNDUsIDc4MTA3LCA2NDM1NCwgMCwgODc3NywgMTI3OTQwLCAKLSAgICA0MDYsIDg4ODQsIDIzODUsIDc4MjEwLCA5MjQ1MCwgOTE3NTkwLCA5MTc1NzMsIDQzMDMwLCA0MjAyNywgMTIxMTQsIDAsIAotICAgIDEyODU5NywgNjQ5MzYsIDE5NDY5NSwgMTE5MjY3LCAxMjA2MjksIDEwNTYxLCAxMjg5NDAsIDgzNjUsIDEyMDUzOSwgCi0gICAgOTgzNzc0LCA2NTg0MSwgMTIwNzg3LCAxMTYwMSwgMCwgNzQxMjEsIDEyODg5NiwgODMxNzYsIDc4MzQsIDc0MTU5LCAwLCAKLSAgICA5MTc1NzQsIDEwMjk4LCA2NjI0LCA0OTA4LCA5MTc1NzcsIDE2MzksIDEyMDg0MiwgMCwgNzA4MDMsIDYzMjcsIDY3MjQsIAotICAgIDEyNDk1MywgNjYzNTQsIDkyNTY2LCA2OTkxMCwgNDgxNywgMTEwODcsIDE5NDc1OSwgOTI1MzYsIDcwNDMsIDk2MDAsIAotICAgIDExMDIyLCAwLCAwLCAwLCA5ODM1OTksIDAsIDczOTU0LCA3NTQ4LCA2NDc5NCwgNDIwNTAsIDEyMjkxLCA1NTI4OSwgCi0gICAgMTI4NzgxLCAxMjM0MywgNjU3LCA2NzExMCwgNDI3MDUsIDQ0NjEsIDExMzQsIDE4MzgsIDc4NDM4LCAyMDU3LCAwLCA0NDY4LCAKLSAgICA5Mjg5MSwgMTk0OTQ1LCA4MzA1NiwgNDQ1NiwgNTIwNiwgMTA3MjAsIDAsIDQyNTIzLCAxMjc1MjAsIDAsIDkzMDQ0LCAKLSAgICAxMjk0MTEsIDY1NTUwLCAyNjAsIDQ4MTYsIDY3NjU4LCAxMDY4NywgMCwgNDgyMSwgNDQ2NiwgMCwgODMxODIsIDQ4MTgsIAotICAgIDEyOTA1OCwgNDE0MDMsIDExOTk3NywgNzI0MjIsIDEyODQ1OCwgNDE0MDYsIDQzMjczLCA3NDE2MCwgNjk4MDUsIDczOTM5LCAKLSAgICA5MjYzOCwgMTE5OTg0LCAxMTk5NzksIDQxNDA0LCAxMTY1LCAxMTk5ODAsIDQ0NTEsIDEzMDg3LCAwLCAxMTI4NCwgCi0gICAgMTE5OTg3LCA3MDA5NywgNjUxNTUsIDQzMDE0LCA1NDM5LCA5MzYzLCA3MDA3MCwgMzM3NSwgMTI4NDQ4LCA1OTAwLCAKLSAgICA5Mzk5MCwgNzg4OSwgMjcyMiwgNDIyNjIsIDk4MzQ4MSwgMCwgNjcwNzgsIDEyODQ1MSwgMjI4MiwgMTIxNDIyLCAxMjc4MTAsIAotICAgIDExNDAxLCA2NzA3OSwgMCwgNjg0NTksIDEyNTAyOCwgOTgzMTQxLCAwLCA3MDE1MCwgNjU0MzgsIDAsIDcyODAsIDEyNzg4NywgCi0gICAgNjgwNTUsIDcwMTQ2LCA0ODY4LCA4Mjk3LCAxMTk5NjYsIDcwMTQ4LCAxMjUwMDgsIDEyODc0NCwgNDMxNjEsIDcwMTQ0LCAKLSAgICA5MjM2MCwgMCwgNTE4MiwgMCwgMTIwNTQyLCAwLCAwLCA0MjI2LCA3MDE4NiwgMTIxMzUsIDU3MzIsIDQ0NjQsIDE5NTA4MywgCi0gICAgNzEzMzAsIDk3NywgNDQ1OCwgNDM4MjcsIDkyOTcxLCA2NDc3MCwgNzQ4MzgsIDAsIDM0NCwgMCwgMTIxMjI4LCAxMzk1LCAKLSAgICA2NDI3OSwgMCwgOTIyNDAsIDEyMTE3OSwgNzg2LCAxMjY5OTUsIDQzMTc0LCA2NDM0MCwgODMwNzcsIDE5NDc2NywgNzM5NzEsIAotICAgIDQzMDI2LCA3NjEyLCAxMDEzMiwgNjQ0MTMsIDY1MDI1LCAwLCAwLCAwLCA5Mzk1NiwgOTgzOTE3LCA2ODQ0NCwgMCwgCi0gICAgOTI0MzcsIDEyNDkyOCwgOTI1NDksIDEwMjA0LCA5MjY1NiwgODMwNzgsIDExOTI3MSwgMTI4NDMxLCAxMzk5LCAxMjE0NjMsIAotICAgIDY1MjE3LCAxMjE0NjUsIDg4NTIsIDEyMDgwOCwgMjQxLCAxMjE0NjksIDQ5MDcsIDEyODQyNywgOTgzNjM5LCA3OTMyLCAKLSAgICA5NzI3LCAxMjg0NjMsIDc0MjU1LCA4NzQ4LCAwLCAxMjg0MjgsIDk4MzYzMSwgMCwgNDI3ODAsIDU1MjYzLCAxMTM2NzcsIAotICAgIDk4MzU2MCwgNDIxNywgOTMwMzQsIDg2NTAsIDEyNzk5MSwgMTIwNjczLCAxMjgyMTUsIDY5OTAwLCAxMTg4NzIsIDQzMDk5LCAKLSAgICAzOTY1LCAxMTkxMTksIDY3MTksIDEyODAwNywgMTMzMDAsIDc4NDM5LCA5Mzk3MSwgNDMwNTcsIDY2NTg4LCAxMTg5OTEsIAotICAgIDY2Mjg5LCAxMjA5MDIsIDczODE1LCA0NDIwLCA5ODMxMjAsIDY0MTAsIDc3NjAsIDAsIDcwNDY4LCAxMjg3NTIsIDEyMDY4NCwgCi0gICAgMTIxMjQ2LCA3Mjk0LCAxMjgyMTgsIDQzODY5LCAxMjA4NTksIDkwNjYsIDEyMTMyMSwgMTE5OTMsIDQzMTg4LCAyNjI2LCAKLSAgICA3NzYyLCA5ODM4NjYsIDExODgzMSwgOTI4OTksIDkyNjAxLCA0MjgyNSwgNDE4NTQsIDUzMDQsIDcwMjkwLCA3ODUxNiwgCi0gICAgNjkxOSwgODYxOSwgMTE5NjU1LCAxMDAzOCwgNjY0NTQsIDk1OTIsIDQyODUxLCAxMjA1MzcsIDE1NDIsIDkyMzAzLCAKLSAgICAxMjg4MTksIDAsIDEyNzMyNywgMTIxMTk5LCA3NDMxMSwgNzg0OTcsIDAsIDEwMTgxLCAxMjQ5MzcsIDQzNjI0LCAxMjkwNjAsIAotICAgIDc3NzksIDkxNzU1MSwgMTAxOTUsIDk0NzksIDYwMjksIDEyODM3NCwgOTIyNjgsIDIyMjQsIDAsIDY1NTc3LCA4OTkzLCAKLSAgICA2NjM1OCwgMCwgNDIzNzgsIDMzNjgsIDYwNiwgMTI3MDMwLCA3Njk3LCA2OTIzNywgNjk3ODcsIDIwMzAsIDcwMTA2LCAKLSAgICA2MDI3LCA4MzcwLCA0MzIyLCAwLCA2NTIwNywgMCwgNzAzODYsIDEyNzkwMywgOTgzMzM5LCA5ODMzMzgsIDI3MzUsIAotICAgIDQyODMxLCA3NzkzNSwgNzA0MzksIDc0ODY2LCA4ODgxLCAxMTkwNDcsIDAsIDcwNDMzLCA3Mzk0NiwgMCwgMTk0NzAzLCAwLCAKKyAgICAxMjg4NSwgMTI3Mzc1LCAxMTkwNDUsIDY0NzIwLCA5MTc4NzMsIDEyMDc1OSwgNzA3MzcsIDEyNjAzLCA3MTMxLCAxMTEwOCwgCisgICAgNDU2NiwgNzUxOCwgOTMxNywgMzgwMSwgMTAzNDIsIDEwNDA2LCAxMjQ5MzgsIDExOTI1OSwgNDI1NzYsIDEyNTIzNywgCisgICAgNTIwMCwgOTI5NDYsIDEyMTQzNSwgOTgzNjgzLCA5MTgzLCAxMjczNjEsIDc0NDU4LCA2NjI4MiwgMzk1LCA1NDgyLCA1MTk4LCAKKyAgICA0MzQ5LCAxMDM5MCwgNzQyMDIsIDUxOTYsIDQzMjI0LCA2MTEzLCA0MjAwOSwgNTIwNSwgMTI4MzgzLCA0MzMwNywgNzAyOTcsIAorICAgIDExODk3MywgNzA0NjcsIDEyMTM0LCAxMjExNjcsIDAsIDExODg0MywgOTEyNiwgNDM1LCA5ODM2MjQsIDEyMDE0LCAxMDM3NywgCisgICAgODA5MywgOTA3OSwgMzIwMywgMTkyLCA2NTEwOSwgMzM4NSwgMTI1MDc1LCA2NDQzMCwgNTM4MywgMTAyOTQsIDEwMzI2LCAKKyAgICAxMjA5MzIsIDU3MzgsIDEyMDA4OSwgMzMzNiwgNzgzNTUsIDUzNjEsIDM2MjMsIDQxMTU5LCA4MzM3OCwgNjgxMTIsIDc4NzIsIAorICAgIDg1ODEsIDk4Mzc3MSwgMTI2MCwgMzE0OSwgNTM1OSwgMTIwMTM0LCA3NDk1NSwgNzkxNCwgNTM1NywgNzExOTAsIDc0MzM5LCAKKyAgICAyNjI0LCA1MzY0LCAxMjg4ODEsIDExNDMxLCAxMDA2NTksIDkxMDEsIDExMDU4LCA3ODI4OCwgNjcxMDcsIDc4MjkzLCAKKyAgICA0MjI3MSwgNzgyODksIDQyOTE3LCA2NzExMSwgMTI5MTc5LCA2NTU2NiwgNjcxNywgMTA2MTksIDQzMzYwLCA3ODI5MSwgCisgICAgNzgzODQsIDExODMyLCA3ODM4MiwgNzgzODEsIDc4MzgwLCA2OTg2MSwgOTMxOSwgNzA5NywgMTE5MDU1LCA3NzkwNiwgCisgICAgMzIzMiwgNzM4MjQsIDc0NTgxLCA3ODA4NywgOTgzODE3LCA3MTIwNSwgNDE4ODksIDkyNDUzLCAxMjkxNDQsIDExNjEsIAorICAgIDQxODk1LCA3NDEwMywgOTcwMSwgODYyMiwgMTI1MDI1LCAwLCA2ODc3MiwgMTIwNTg4LCA1MDEyLCA3MTQ1MywgNDEzNjIsIAorICAgIDY5ODYyLCA2ODUwNywgMTE5MjEsIDAsIDExNzY5LCA2ODc4MiwgNjg2MDksIDQxMzY0LCAxMjA5NDcsIDc0MjI4LCA0MTM1MiwgCisgICAgNDEzNjEsIDkxNzkwMywgNDEzNjYsIDE5NDgwOSwgMzM1NiwgMTE2MTEsIDkxNywgNjg0MjIsIDExOTkxNSwgNzEzNCwgCisgICAgODE5OSwgNzgzODksIDExOTYxOCwgNjc3LCAxMTk5MTYsIDkxNzg3NiwgNzE0ODIsIDEyNzE2OSwgNjg3NDcsIDAsIDY4NzM4LCAKKyAgICAzMzQ5LCA3NDEyNSwgNzAyMiwgODkyNywgNDczOSwgOTI1OTksIDU4MDIsIDEyMDA0NywgODYxNSwgMCwgMTI4MDU4LCA0OTEsIAorICAgIDc0NDAxLCAxMDE5MCwgNjg3NTUsIDY1ODM3LCA2ODgwMCwgODQyNiwgMTEwOTIsIDk4OTEsIDAsIDQyNDk3LCA3MTEzLCAKKyAgICA3NTg2LCA0MjMwNSwgMTA4NTIsIDkxNzU4MCwgNDI2NDgsIDQ2MDYsIDY4NDQ4LCA5MDk1LCA3NzQxLCAxMjY4NCwgNDE4ODUsIAorICAgIDEwNDYsIDcxMjQsIDEyODYxMCwgNjg3NTMsIDU4MTUsIDUxNzEsIDY1NTM5LCA2ODYxMiwgNjkzMiwgNzQyNjcsIDQyMzk0LCAKKyAgICA0MTg3OCwgNzQ4NDksIDcyNzg5LCA3MjQyNCwgNTE2OSwgMTE5MzUsIDAsIDAsIDMxNzUsIDEyMDgyMiwgMTUzNywgCisgICAgMTE5MDQ5LCA1MTc2LCA4OTA1LCAyMjY3LCA0ODcxLCA3ODI4NywgMTIwNjYzLCA5ODMzLCAxOTQ4NTAsIDExMzczMCwgCisgICAgMTEyOCwgNjU5MjAsIDkxNzg3OSwgOTcxMSwgNzA1NywgOTQwOCwgOTQwOSwgOTQxMCwgOTQxMSwgMzY2MiwgOTQxMywgCisgICAgMzM3OCwgOTQxNSwgOTQxNiwgOTQxNywgOTQxOCwgNjMyMCwgOTQyMCwgOTQyMSwgNTg5NywgOTQyMywgNTE2NSwgNTEyNiwgCisgICAgNDEzODUsIDE5NDg0NCwgNDEzODksIDEyNzk2MywgODk1NSwgMzM3NCwgOTQwMCwgOTQwMSwgNzExOSwgOTQwMywgOTQwNCwgCisgICAgMzUwNywgOTQwNiwgNzYyOSwgOTgzNjE3LCAxOTkyNSwgNDI2NjksIDY4NDYzLCAxODMsIDQzOTg1LCAyNjMxLCA3MDgxMSwgCisgICAgMTA2MjcsIDQxMTMwLCA3MTA3OSwgMzk5NiwgMCwgNzE0NDIsIDEwMDg2NCwgMTE5MzEzLCAxMTkzMDcsIDc4NzY4LCA2NTgwLCAKKyAgICA0MzMyLCA2NDgyNSwgNjYzMjksIDEwNzI2LCA2NjY4NiwgNDExMjUsIDU4OTksIDQxMzY1LCAxMjcyMDYsIDEyMDg1LCAKKyAgICA2NjkwMiwgNTc0LCAxMjY3MDUsIDc3ODI1LCA3MzgyOCwgNTQ0OCwgNDEwNTgsIDU0NDYsIDY1OTMyLCA0MTMyMiwgNDIyMTEsIAorICAgIDU0NDIsIDQxOTAsIDc3ODM0LCA3NzgzNSwgNTQ1MSwgNzc4MzMsIDM2MTYsIDc3ODI4LCA2ODgxNywgNzc4MzgsIDc3MDgsIAorICAgIDc0NzU5LCAyMjI4LCA2NTg2NywgMTAzNDUsIDEwNDA5LCA0MTkxLCAxMjAzNzgsIDc3ODQ0LCA3MzgwMCwgNDIxODEsIAorICAgIDc3ODQzLCA3NzgzOSwgMjA2MCwgMTIxMTkzLCA3MTExLCAxMTc4OCwgNjUzNzYsIDY4MTI5LCAxMDQxNSwgNzI3NDEsIAorICAgIDE5NTAyNSwgMjA1LCA4MzA0MCwgMTAzNTEsIDY3MTUxLCAwLCA5ODYyLCA2NTg4LCA0MzI1NywgNjQ2OTcsIDczOTk4LCAKKyAgICA0MTM1NSwgNTUwNSwgNzA3MzYsIDU1MDMsIDgwMjEsIDEyODAzNSwgNzEyNSwgOTgxOSwgNDEzNTcsIDgwMTEsIDQyODg1LCAKKyAgICA1NTA3LCAxMjA0NCwgOTIzNjQsIDEwMDc0MiwgMTAwMjYsIDU0NzIsIDcxMDksIDExOTEsIDEzMTA2LCA1NDcwLCAxMDMyOSwgCisgICAgNTQ3NiwgODk5MSwgNjYzMjIsIDY5Nzc4LCAxMTEzMywgNDI4NzQsIDg1NTAsIDQyODc2LCA1NTkyLCAyOTE5LCA3NDUxNiwgCisgICAgMjY3NSwgNTU5NSwgNzg0MTEsIDQzNzYyLCA0MzY3LCA4MzUxOCwgOTE3NzgyLCA1NDc4LCA1OTA0LCA1NTk0LCAwLCAKKyAgICA3NDE1MCwgNzI5MSwgNTU5MCwgNDM3NjEsIDEzMDY3LCAxMTg5MDksIDc1MDY5LCA5ODMxMDgsIDk3MzEsIDY5NzMxLCAKKyAgICA2NDYzMywgNzc4NTcsIDc3ODU0LCA3MTIxNywgNzc4NTIsIDcxMjI3LCA3Nzg1MCwgMTA3NTAsIDQzNzE0LCA3Nzg1OCwgCisgICAgNzEzNywgMCwgNjY5MDksIDEyODg3LCAxMDU1MSwgMTk0NTY0LCA3Nzg2NiwgNzc4NjcsIDc3ODY0LCA3Nzg2NSwgOTkyOSwgCisgICAgNTE5OSwgOTkzNiwgMTEyMCwgNDIzODcsIDAsIDE0NDQsIDk0ODYsIDc1NTQsIDY1ODM5LCA1NTI1MiwgNzI4MzIsIDE0NDIsIAorICAgIDEyOTA4MCwgNTg5NCwgNzAwNjksIDEyODY3MiwgNDExNzEsIDkyNTExLCA3MDM1OCwgMTMyMywgMTMxNjIsIDEyMDU5OSwgCisgICAgMzMzNCwgMTI4NzA0LCA5MjcwOSwgNzc4ODEsIDY2MDIyLCA3MDcwNSwgNjk3NzAsIDE2NTEsIDEyMDM2NCwgODg2MSwgMCwgCisgICAgOTE3NTg4LCAxMTQyLCA5ODMxMTIsIDgyNzEsIDAsIDk4MzA1OCwgMTI2NjQ1LCAxMjkwMywgNzg0MDYsIDQwMDIsIDQzNjI2LCAKKyAgICAxMDQ0MiwgMTA2NzYsIDMzNDQsIDEyODkxMCwgMTk0Nzg3LCAxMjkyMCwgMTk0NTYwLCA3MDQ5NywgMTk0Njg3LCA2NjY0MiwgCisgICAgMTI3NywgNjY4NzYsIDc4NzEsIDY3MTA2LCA3MTQ4NywgNzg4NTMsIDEyOTA2OCwgNzg4NTQsIDEyMDM2MCwgOTgzNDkyLCAKKyAgICAxMTc4NCwgMCwgNzgwMTIsIDQ3MDAsIDQzODU2LCA3ODg1OCwgMTIwMzU5LCAxMTAxMiwgOTgzNjI3LCA3ODg1NiwgNzg0NDgsIAorICAgIDc3ODc5LCA0OTczLCA4Nzg0LCA3Nzg3NywgNzQ4MDQsIDc3ODc0LCA3Nzg2OSwgNjY3NDMsIDQyNDQwLCA3MTIyNSwgCisgICAgNDMxMTgsIDExOTg3NSwgNDIzNjQsIDY3NzQsIDY3NzMsIDkxNzU2MCwgMTIwMzY5LCAxMDM0NiwgMTA0MTAsIDc4ODU5LCAKKyAgICA5MjQzLCAyNDY0LCA3NDI2MywgNjEwOCwgMzM3MiwgMTIyODkwLCA2MjQ3LCA0MzExNywgNzAzNjQsIDcxMjEsIDc0MTY2LCAKKyAgICAxMjQ5NzMsIDEyMDM1NSwgOTI1MzcsIDE5NDg0NiwgMTE5ODc3LCAxOTUwMzQsIDcwMzU3LCAxMTk5MjIsIDAsIDY3MTE5LCAKKyAgICAzMzU0LCAxOTUwMzcsIDQxOTIsIDkyODksIDExODk5OSwgNDExOTEsIDM4NzYsIDAsIDcwMDY3LCAxMjA2NjAsIDQzNjk2LCAKKyAgICA0MzM4MCwgOTgzNjI1LCA5ODMwOTEsIDEyOTM0MiwgMTI4NDUwLCAxMTYwMywgMTI5MzQ3LCA3NTA3NCwgNjU4OSwgCisgICAgMTI3MzYwLCA4Mjk3NSwgMTIwOTkzLCA2NzgxMiwgMTI3MTkwLCAxOTQ2ODAsIDEyOTA4NywgNDI1NzIsIDEyODI2NCwgCisgICAgMTA2MzAsIDc0ODI3LCAxOTYzLCAxMTYyMiwgMTE4ODgyLCAxMTY1NCwgMTIxMjg3LCA3NTUwLCAxMDY4NiwgNTkwMywgCisgICAgNjcwOTgsIDc4MDA5LCA0MTMyOSwgOTY2MiwgOTE3OTM3LCA2NDY5OCwgMzM2NiwgMTAzOTksIDkxNzkzOCwgNTU0MiwgCisgICAgMTEwMTMsIDEyNzkyNywgNzEwNjIsIDEyNTIyNCwgNzE0NjEsIDY3MDkwLCA2OTI1LCA5ODMyNzQsIDAsIDkyODkyLCAKKyAgICA3MTg1NiwgMTE1NjgsIDk4MzEzMSwgNDMzNjcsIDY0NTc5LCA5MTc5MzAsIDc4NTIsIDExMTM4LCAwLCA2NzU0LCA2MzEyLCAKKyAgICA3Nzk1NiwgNjQ2NzIsIDY1Mjk2LCAwLCAxMTg5NTcsIDAsIDQxNiwgMTIyOTYsIDY4NDU3LCA3MzgzNCwgNjgxNzcsIAorICAgIDExMDUwLCAxMDk4NCwgOTIyMDgsIDk4MzIxNiwgOTE3ODIyLCA5MjE4MiwgMTI5MTQ2LCAxOTQ2MzYsIDk1MzIsIDY2MzU1LCAKKyAgICAxMTkyNjQsIDY4MDczLCAxMTM2OTUsIDY0MzQzLCAxOTUwMzIsIDkyNzQ0LCAxMjcyNDMsIDAsIDE5NDg0NywgNzg4MzgsIAorICAgIDExNDQ1LCA2ODI5NCwgMjExMiwgMTI4NzQxLCAxMjg4MTQsIDEwMTg1LCAxMDIxLCAxMjgxMzAsIDk1MDcsIDEwMjEwLCAKKyAgICA3NDU0NCwgODAyMywgMTIwMCwgMTIyNDMsIDc4MDAxLCA1MjgyLCA3Mjg1MCwgOTYyNCwgMTE1NDUsIDAsIDEyMDI3NiwgCisgICAgMzM0MywgNDQyNCwgMTEwNDcsIDE4ODUsIDQzMjY4LCAzODk2LCA3ODQ0NCwgNjY0OTcsIDI5NDcsIDM5MiwgNzg5NCwgCisgICAgNDM5MSwgNjgxMzksIDEyMTA2NCwgMTMwNTksIDc0ODE2LCA3Nzk5OCwgMzM4MSwgNzk0MiwgMCwgNjkyMTksIDkyNDMzLCAKKyAgICAzNTU4LCAxMjkxOTAsIDM5MTMsIDcwNDI5LCAxMjEzNzYsIDc4MjM1LCA3MDQ0LCAxMjY1LCAxOTQ2NjAsIDYzMDksIDcwNDUsIAorICAgIDcxNzUsIDcwNDcsIDc4MjM5LCAxMTc5MSwgOTgzMTIyLCAxOTQ1ODQsIDM4ODEsIDc4MzA3LCA0MTg2NCwgMTI3Mzk1LCAKKyAgICAxMjUyMDgsIDY3MDc1LCA3MTIxOSwgMTY3LCAxMjExMDEsIDcyNzU1LCA5ODM2NTMsIDc0MjExLCA0MTg5NywgNjcwNzIsIDAsIAorICAgIDkxNzU4MywgNjY3NDUsIDY3MDc2LCAyNDkzLCAwLCAxMTM3NzgsIDEyMDUzMCwgNzgxMDcsIDY0MzU0LCA5MTc1OTMsIAorICAgIDg3NzcsIDEyNzk0MCwgNDA2LCA4ODg0LCAyMzg1LCA3ODIxMCwgOTI0NTAsIDkxNzU5MCwgOTE3NTczLCA0MzAzMCwgCisgICAgNDIwMjcsIDEyMTE0LCAwLCAxMjg1OTcsIDY0OTM2LCAxMDA3NjMsIDExOTI2NywgMzQyMSwgMTA1NjEsIDEyODk0MCwgCisgICAgODM2NSwgNzQyOTQsIDk4Mzc3NCwgNjU4NDEsIDEyMDc4NywgMTE2MDEsIDAsIDc0MTIxLCAxMjg4OTYsIDgzMTc2LCA3ODM0LCAKKyAgICA3NDE1OSwgMCwgOTE3NTc0LCAxMDI5OCwgNjYyNCwgNDkwOCwgOTE3NTc3LCAxNjM5LCAxMjA4NDIsIDk4MzU4NiwgNzA4MDMsIAorICAgIDYzMjcsIDY3MjQsIDcxMjY5LCA2NjM1NCwgOTI1NjYsIDY5OTEwLCA0ODE3LCAxMTA4NywgMTk0NzU5LCA5MjUzNiwgNzA0MywgCisgICAgOTYwMCwgMTEwMjIsIDEyODQyNywgMTI5MzQ0LCAxMjgzNTQsIDk4MzU5OSwgOTgzMjA5LCA2Njc3MSwgNzU0OCwgNjQ3OTQsIAorICAgIDQyMDUwLCAxMjI5MSwgNTUyODksIDEyODc4MSwgMTIzNDMsIDY1NywgNjcxMTAsIDQyNzA1LCA0NDYxLCAxMTM0LCAxODM4LCAKKyAgICA3ODQzOCwgMjA1NywgMCwgNDQ2OCwgOTI4OTEsIDEyNzM3MiwgODMwNTYsIDQ0NTYsIDUyMDYsIDEwNzIwLCAwLCA0MjUyMywgCisgICAgMTI3NTIwLCAwLCA5MzA0NCwgMTI4NDMwLCA2NTU1MCwgMjYwLCA0ODE2LCA2NzY1OCwgMTA2ODcsIDEyOTMxOSwgNDgyMSwgCisgICAgNDQ2NiwgMCwgODMxODIsIDQ4MTgsIDEyNTI1NywgNDE0MDMsIDExOTk3NywgNzI0MjIsIDEyODQ1OCwgNDE0MDYsIDQzMjczLCAKKyAgICA3NDE2MCwgNjk4MDUsIDczOTM5LCA5MjYzOCwgMTE5OTg0LCAxMTk5NzksIDQxNDA0LCAxMTY1LCAxMTk5ODAsIDQ0NTEsIAorICAgIDEzMDg3LCAwLCAxMTI4NCwgMTE5OTg3LCA3MDA5NywgNjUxNTUsIDQzMDE0LCA1NDM5LCA5MzYzLCA3MDA3MCwgMzM3NSwgCisgICAgMTI4NDQ4LCA1OTAwLCA5Mzk5MCwgNzg4OSwgMjcyMiwgNDIyNjIsIDEyODMxMywgMCwgNjcwNzgsIDEyODQ1MSwgMjI4MiwgCisgICAgMTIxNDIyLCAxMjc4MTAsIDExNDAxLCA2NzA3OSwgMCwgNjg0NTksIDEyNTAyOCwgOTgzMTQxLCAwLCA3MDE1MCwgNjU0MzgsIAorICAgIDk4Mzc2MCwgNzI4MCwgMTI3ODg3LCA2ODA1NSwgNzAxNDYsIDQ4NjgsIDgyOTcsIDExOTk2NiwgNzAxNDgsIDEyNTAwOCwgCisgICAgMTI4NzQ0LCA0MzE2MSwgNjY3MzksIDkyMzYwLCAxOTUwNzAsIDUxODIsIDE5NDY5MiwgMTIwNTQyLCA3Mjc2NCwgMTI4NTg4LCAKKyAgICA0MjI2LCA3MDE4NiwgMTIxMzUsIDU3MzIsIDQ0NjQsIDE5NTA4MywgNzEzMzAsIDk3NywgNDQ1OCwgNDM4MjcsIDkyOTcxLCAKKyAgICA2NDc3MCwgNzQ4MzgsIDAsIDM0NCwgMTIxNDY2LCAxMjEyMjgsIDEzOTUsIDY0Mjc5LCAwLCA5MjI0MCwgMTIxMTc5LCA3ODYsIAorICAgIDEyNjk5NSwgNDMxNzQsIDY0MzQwLCA4MzA3NywgMTk0NzY3LCA3Mzk3MSwgNDMwMjYsIDc2MTIsIDEwMTMyLCA2NDQxMywgCisgICAgNjUwMjUsIDAsIDk4MzQ2OCwgMTI4MzAzLCA3NDE1MSwgOTgzOTE3LCA2ODQ0NCwgMCwgOTI0MzcsIDEyNDkyOCwgOTI1NDksIAorICAgIDEwMjA0LCA5MjY1NiwgODMwNzgsIDExOTI3MSwgMTI4NDMxLCAxMzk5LCAxMjE0NjMsIDY1MjE3LCAxMjE0NjUsIDg4NTIsIAorICAgIDEyMDgwOCwgMjQxLCAxMjE0NjksIDQ5MDcsIDEyODE2MSwgOTE3OTI3LCA3OTMyLCA5NzI3LCAxMjg0NjMsIDc0MjU1LCAKKyAgICA4NzQ4LCAwLCAxMjg0MjgsIDEyODY0NiwgMCwgNDI3ODAsIDU1MjYzLCAxMTM2NzcsIDExOTg1NiwgNDIxNywgOTMwMzQsIAorICAgIDg2NTAsIDEyNzk5MSwgMTIwNjczLCA3Mjg3OCwgNjk5MDAsIDExODg3MiwgNDMwOTksIDM5NjUsIDExOTExOSwgNjcxOSwgCisgICAgMTI4MDA3LCAxMzMwMCwgNzg0MzksIDcyODM2LCA0MzA1NywgNjY1ODgsIDExODk5MSwgNjYyODksIDEyMDkwMiwgNzM4MTUsIAorICAgIDQ0MjAsIDEyODUzMywgNjQxMCwgNzc2MCwgMTAwOTk5LCA3MDQ2OCwgMTI4NzUyLCAxMjA2ODQsIDEwMDUyOCwgNzI5NCwgCisgICAgMTI4MjE4LCA0Mzg2OSwgNjgyMDQsIDkwNjYsIDEyMTMyMSwgMTE5OTMsIDQzMTg4LCAyNjI2LCA3NzYyLCA5ODM4NjYsIAorICAgIDExODgzMSwgOTI4OTksIDkyNjAxLCA0MjgyNSwgNDE4NTQsIDUzMDQsIDcwMjkwLCA3ODUxNiwgNjkxOSwgODYxOSwgCisgICAgMTE5NjU1LCAxMDAzOCwgNjY0NTQsIDk1OTIsIDQyODUxLCAxMjA1MzcsIDE1NDIsIDkyMzAzLCAxMjg4MTksIDAsIAorICAgIDEyNDk0MCwgMTIxMTk5LCA3NDMxMSwgNzg0OTcsIDEyMTQxMiwgMTAxODEsIDEyNDkzNywgNDM2MjQsIDEyOTA2MCwgNzc3OSwgCisgICAgOTE3NTUxLCAxMDE5NSwgOTQ3OSwgNjAyOSwgMTI4Mzc0LCA5MjI2OCwgMjIyNCwgMTAxMDc5LCA2NTU3NywgODk5MywgCisgICAgNjYzNTgsIDAsIDQyMzc4LCAzMzY4LCA2MDYsIDY2ODA0LCA3Njk3LCA2OTIzNywgNjk3ODcsIDIwMzAsIDcwMTA2LCA2MDI3LCAKKyAgICA4MzcwLCA0MzIyLCAwLCA2NTIwNywgMTIwNjI5LCA3MDM4NiwgMTI3OTAzLCA5ODMzMzksIDk4MzMzOCwgMjczNSwgNDI4MzEsIAorICAgIDc3OTM1LCA3MDQzOSwgNzQ4NjYsIDg4ODEsIDExOTA0NywgMTI5MzY0LCA3MDQzMywgNzM5NDYsIDAsIDE5NDcwMywgMCwgCiAgICAgNjgxNDAsIDk4MzkyOCwgOTU3NiwgNzAyODgsIDMzNDcsIDQxNjAsIDUxNTQsIDU1Mjg4LCAzNzk0LCA2NjU2NCwgODUzMCwgCiAgICAgMTI3MDYzLCA3NzA5LCA0MTExMiwgMTE5ODY4LCA2NjU2MCwgODM4MSwgNDU3MiwgMTI4NzYsIDY2NTYxLCAxMjg5MjEsIAotICAgIDY3NTgsIDY2MDMxLCAxNjE1LCA1ODU1LCA4MDksIDEyNzExNywgOTIyODMsIDEyODMxNiwgMTI4MDA0LCA1Nzk5LCAKLSAgICAxMjg5MjksIDcwMTAwLCAxMjg2MDcsIDcyNjAsIDk4MzMyNiwgNDMwMzEsIDY0NDI1LCA2NTEyOCwgNzg4MTksIDY0Mzg2LCAKLSAgICA2NTI1NywgNzQ5MDksIDY4NjE2LCAxMjA2MDcsIDkzNDcsIDgzMzYwLCA2NTMyLCAwLCA5MTc5MTgsIDEyMDg2MCwgCi0gICAgMTI3MDYwLCA2NTgyOCwgMTIwMDA2LCAyODMsIDY4NjY1LCA3ODgxMywgNTMyLCA3ODY2MywgNzg4MTcsIDEyODAyMSwgCi0gICAgMTIwNjA5LCAwLCAzMzcwLCA5MTc4ODEsIDExMzYxLCA1NDQzLCA3MTQzMSwgODE1MywgNzM3NjcsIDAsIDEwNzQxLCAKLSAgICAxMjE1MDMsIDIyOTgsIDAsIDEyNTAzOSwgNjU0OTUsIDY0NzA2LCA5ODMzMjAsIDQzMzQ0LCA5ODMzMTgsIDcxNDQsIDk0NjYsIAotICAgIDc4ODY2LCA5ODI0LCA2NzE0MiwgMTI4OTYzLCA2NzEzMywgNjcxMzAsIDkxNSwgNDM0MjUsIDY3MjkyLCA0Mzg2NSwgCi0gICAgNjgyMzIsIDk4MzExMSwgMTIwODg4LCA0MzI2NCwgNjcxMzYsIDY3MTM3LCAwLCA0MzAzOCwgNzg4NjQsIDY3MzAsIDc4ODYyLCAKLSAgICA2ODE2MSwgNjQ1NTAsIDUxODYsIDczNjAsIDEyNzgzNywgNzA0NTEsIDEyMTA4LCAxMjA2NDQsIDY1MTI0LCA0MzEyNywgCi0gICAgNjYwNDMsIDAsIDYzMjYsIDQzMTA3LCA3NzgyNiwgMCwgNDI1NjIsIDAsIDEyODgyMSwgMTI4MTc4LCAxMjA5MTksIDExNDg1LCAKLSAgICA2MTAzLCA5MjQ2OCwgOTgzMzA3LCAxMTcxOCwgOTgzMzA1LCAxMjg4OSwgOTI2NTcsIDEyNTAzNCwgMTIwNjM1LCAxMjcxNTcsIAotICAgIDEyMTEyOCwgNTUyNDUsIDEyODcwOSwgMTYzMCwgODMwMjcsIDY1NDgzLCAxMjA2MzQsIDEyNTY1LCAwLCA2NTQ3NiwgCi0gICAgNzAzNjksIDk4MzA3MiwgODMwMjksIDkyODMsIDc3MDAsIDkxNzUzNywgOTY5MCwgNjU0OTksIDAsIDY0NTkzLCA1MTIsIAotICAgIDMzNzYsIDY4MDgwLCAwLCAxMjgyNTMsIDc3ODkyLCA2MzIsIDEyOTQwLCA3Nzg5MSwgNDI1MjksIDc4NTg3LCAxOTQ2MDQsIAotICAgIDU5NTcsIDExMDU5MywgODkyNiwgOTgzMzAxLCA5ODMzMDAsIDEyODI3MywgMTA3NDUsIDEwMTc0LCA3Mzc5LCA2NDU4MSwgCi0gICAgNTM4NiwgMTIwNjg2LCAxMTcxMywgMTA2MzMsIDY5NzA4LCA1MDU2LCAwLCAwLCAwLCAxMjA3NzMsIDk0MDU1LCA5ODEyLCAwLCAKLSAgICA0NDYwLCA3ODc5MSwgMTI0OTU2LCA3MTMwNywgMTI4MDM4LCAwLCAxMjExMzUsIDEyNzE3NCwgNjQyNzgsIDkyMzcwLCAKLSAgICA0MzQ2NiwgMCwgMCwgNjQzODksIDI5NTMsIDcwMTIyLCAxODAxLCAxMjgzNSwgNzQ4NDcsIDEyMDg2NywgNzM4MjMsIAotICAgIDgzMTEwLCA2NjM3NSwgMjA4NSwgNzAyLCA0MjU3OSwgNzc4ODQsIDc3ODg1LCAxMzA3NCwgNzc4ODMsIDY2Mjk5LCAKLSAgICA5ODMyODcsIDcxNDQ3LCAxMjEwNiwgMTIwOTcyLCA3NDIwNywgMTc1NSwgMTA0ODIsIDEyODYzLCA3Nzg5OCwgMTE2MywgCi0gICAgMjk1MSwgOTUyMiwgNjc4MTYsIDc4MjY2LCA2NjYwNCwgOTgzODYwLCAzMzg0LCA2OTIyNywgMTA3MDIsIDgzMCwgNzc5MDIsIAotICAgIDc3ODk5LCA3NzkwMCwgODQ1MSwgODMzMjQsIDAsIDAsIDY2NDU4LCAxMjg5NTcsIDEyODg3MCwgNzQ4OTYsIDAsIDI5MDgsIAotICAgIDAsIDExMTc3LCA2NDkwMiwgNDI0MywgOTI0NTQsIDEyMjM5LCAxMjEwMDMsIDEyNDk1OSwgNDQ0MSwgMCwgODI5NjgsIAotICAgIDczOTQwLCA2NDM1MiwgMTI3NTEzLCAxMjUwMzEsIDQxMSwgOTgzMjc1LCA5MTk5LCA5ODMyNzMsIDQwNTYsIDExODk5MiwgCi0gICAgNDE4OTAsIDEyODU5MiwgMjczMCwgNDE2MDQsIDEyODM1NSwgNTQyOCwgMTk0NzQzLCAzMzY0LCA0MjI2NSwgNjQ0MzcsIAotICAgIDEyNzkzNSwgMTE4ODE2LCA3MTQ1OCwgOTY4NCwgMjE2LCA3MTM2NywgMTQwMSwgMTI4MDUzLCA0NDAxMiwgOTI2MjgsIAotICAgIDcxNDU2LCA5MjU4NSwgOTE1OCwgNjY4NzgsIDExMTI2LCA1NzY4LCAwLCA5ODM3NTksIDAsIDQ4NCwgMTk0NzM5LCAwLCAwLCAKLSAgICA2NTg5NSwgMTI1MDc2LCAxMjEzODAsIDMzMzgsIDczOTM1LCA1NzIsIDcwNDEsIDI3MzYsIDY3NjA1LCAxMjc1NDMsIAotICAgIDkzOTYyLCAyNzk0LCA4ODA3LCA2NDQ5MSwgNzc4NDcsIDU0MzgsIDUyMjIsIDUzODEsIDQzMTE0LCAwLCA1MTkzLCA1MTI1LCAKLSAgICA1NDU2LCA1NTA5LCA3Nzg0NiwgMTk0NzQ3LCA5NTM0LCAxMjkxMDksIDEyOTA0MCwgMCwgMzQzMCwgMCwgNDI5MDUsIAotICAgIDc4NzE3LCA3NDkyOSwgOTgxLCAxMjkxODQsIDQzMzAsIDczOTI5LCAxMjA1MzYsIDE4MjQsIDEwOTA4LCAxMjY1MDYsIAotICAgIDcwMzQsIDQxNjgzLCA2NDYxNywgMCwgNzM3NTQsIDM5NTcsIDY0MzU4LCA2NDU0NywgMTI4MjU5LCA2NzQsIDYzOTkxLCAKLSAgICA5ODMyNTEsIDI5NDYsIDUzNTQsIDUyNTEsIDUzMjgsIDUzMDcsIDM3NTksIDExNDExLCA4MzY0LCA1MTIzLCAxMTk2MjgsIAotICAgIDUyODEsIDU0NjksIDUxMjEsIDc3OTg5LCAxMTg5OTMsIDAsIDUxMzAsIDgzMTgwLCAxMjgzNTcsIDc3OTkwLCAwLCAKLSAgICAxMjA3MjYsIDEyMjEsIDI3MzMsIDExNzQ2LCA3Nzk5MSwgNTIxNiwgMTE5MjY4LCAwLCAxMjg0NzUsIDkyMTg3LCAzNDY4LCAKLSAgICA3MDMzLCA5MjMwLCA1OTM5LCAxMjgzOTcsIDAsIDU4MDMsIDcxODY3LCA2ODQwMCwgNzI3OCwgMTAzMjEsIDEwMjg5LCAKLSAgICA2NDYxMywgMTAzODUsIDQxNzA2LCAwLCAwLCA5MTc5MzksIDAsIDExNzM5LCA3Nzk4NiwgNDE5ODEsIDkyNzQzLCA1OTM4LCAKLSAgICAwLCA0Mzc2NiwgMTI0NDgsIDc1NzYsIDEwNDAxLCAxMDMzNywgNzM4NTIsIDEyNDk5NCwgMTMwNTcsIDAsIDEyNjk3NiwgCi0gICAgMTI5MDgxLCAxMDAwOSwgMCwgNDE3MDMsIDEyMDk1MCwgMTIxNjUsIDEyOTE5MSwgMCwgOTg4NSwgMCwgODA3NywgOTI2MjAsIAotICAgIDEyNzkwOCwgMTIxMDQ0LCAxOTQ5OTUsIDAsIDkyNDU3LCAxMjkxMzgsIDQyMjAsIDEwNzI1LCAxMDQzMywgMCwgNjgzOTUsIAotICAgIDQ5ODcsIDY0NTE5LCAxMjEyNjUsIDEyNTA3OCwgMCwgMTk0ODEzLCAxMjg1NzQsIDEwOTcwLCAxMTczMywgMCwgMTIwNzkyLCAKLSAgICAxMjY0OTAsIDE5OTQ0LCA3NDM1NiwgOTAwOSwgODU1MSwgOTIzNDUsIDExNDY4LCA2NDYzNiwgNzU3NSwgMCwgMjcyNCwgCi0gICAgMTI4ODk5LCAwLCAxMjMxMywgMTExNTEsIDUxNSwgMTE5OTQ3LCA0Mjc5MSwgNjM5ODcsIDc4Mjg2LCAxMTk5NDMsIAotICAgIDExOTk0MCwgMTE5OTQxLCAxMTk5MzgsIDk3NzUsIDQwNDYsIDQ1ODksIDQ1MjEsIDY4NjI5LCA5MTQxLCA5MTc5MDQsIAotICAgIDc4ODUwLCAyNzQxLCA2NDM5OSwgNjE5NywgMTM3MCwgMCwgMTIwODQxLCAwLCAxMjUwNjIsIDk4MzQ0MSwgMTIwODQzLCAKLSAgICA2MTg0LCA4NjA2LCAzMzAzLCA0MTM3MiwgMTE3ODYsIDk0NzMsIDY2MjAzLCA2NjE3NywgOTI0NDYsIDExNTkzLCA0MzAwNywgCi0gICAgNDQ3OCwgNjYxNzgsIDAsIDAsIDI3NDQsIDAsIDQ0NzcsIDc4MjY3LCA4MTQsIDQyMDY2LCA2NjE4MywgNjYyMDQsIDQzNzg2LCAKLSAgICAxMTk5NjEsIDY2MTk4LCA0MTg4MCwgNjYxODgsIDExNjIzLCA3ODE0OCwgMTE5NTUsIDY2MTkwLCA2NjE5MSwgNDExMTEsIAotICAgIDY2MTg5LCA3Mzc4OCwgNzc4OCwgNDg0NywgOTgzNDI4LCAxMjc3NTksIDAsIDEyODQzMywgMjIyMSwgMTU4MSwgNjUzNSwgCisgICAgNjc1OCwgNjYwMzEsIDE2MTUsIDU4NTUsIDgwOSwgMTI3MTE3LCA5MjI4MywgNzI4NTMsIDEyODAwNCwgNTc5OSwgMTI4OTI5LCAKKyAgICA3MDEwMCwgMTI4NjA3LCA3MjYwLCA5ODMzMjYsIDQzMDMxLCA2NDQyNSwgNjUxMjgsIDc4ODE5LCA2NDM4NiwgNjUyNTcsIAorICAgIDc0OTA5LCA2ODYxNiwgMTIwNjA3LCA5MzQ3LCA4MzM2MCwgNjUzMiwgMCwgMTk1MDYyLCAxMjA4NjAsIDEyNzA2MCwgCisgICAgNjU4MjgsIDEyMDAwNiwgMjgzLCA2ODY2NSwgNzg4MTMsIDUzMiwgNzg2NDIsIDc4ODE3LCAxMjgwMjEsIDEyMDYwOSwgMCwgCisgICAgMzM3MCwgOTE3ODgxLCAxMTM2MSwgNTQ0MywgNzE0MzEsIDgxNTMsIDczNzY3LCAwLCAxMDc0MSwgMTIxNTAzLCAyMjk4LCAwLCAKKyAgICAxMjUwMzksIDY1NDk1LCA2NDcwNiwgOTgzMzIwLCA0MzM0NCwgOTgzMzE4LCA3MTQ0LCA5NDY2LCA3ODg2NiwgOTgyNCwgCisgICAgNjcxNDIsIDEyODk2MywgNjcxMzMsIDY3MTMwLCA5MTUsIDQzNDI1LCA2NzI5MiwgNDM4NjUsIDY4MjMyLCA5ODMxMTEsIAorICAgIDEyMDg4OCwgNDMyNjQsIDY3MTM2LCA2NzEzNywgMCwgNDMwMzgsIDc4ODY0LCA2NzMwLCA3ODg2MiwgNjgxNjEsIDY0NTUwLCAKKyAgICA1MTg2LCA3MzYwLCAxMjc4MzcsIDcwNDUxLCAxMjEwOCwgMTIwNjQ0LCA2NTEyNCwgNDMxMjcsIDY2MDQzLCAwLCA2MzI2LCAKKyAgICA0MzEwNywgNzc4MjYsIDAsIDQyNTYyLCAwLCAxMjg4MjEsIDEyMDMyOCwgMTIwOTE5LCAxMTQ4NSwgNjEwMywgOTI0NjgsIAorICAgIDEyMTA3NSwgMTE3MTgsIDk4MzMwNSwgMTI4ODksIDkyNjU3LCAxMjUwMzQsIDEyMDYzNSwgMTAxMDcwLCAxMjExMjgsIAorICAgIDU1MjQ1LCAxMjg3MDksIDE2MzAsIDgzMDI3LCA2NTQ4MywgMTIwNjM0LCAxMjU2NSwgMCwgNjU0NzYsIDcwMzY5LCAKKyAgICA5ODMwNzIsIDgzMDI5LCA5MjgzLCA3NzAwLCAxMjExOTIsIDk2OTAsIDY1NDk5LCAwLCA2NDU5MywgNTEyLCAzMzc2LCAKKyAgICA2ODA4MCwgMCwgMTI4MjUzLCA3Nzg5MiwgNjMyLCAxMjk0MCwgNzc4OTEsIDQyNTI5LCA3ODU4NywgMTAxMDc4LCA1OTU3LCAKKyAgICAxMTA1OTMsIDg5MjYsIDE5NTA3MiwgOTgzMzAwLCAxMjgyNzMsIDEwNzQ1LCAxMDE3NCwgNzM3OSwgNjQ1ODEsIDUzODYsIAorICAgIDEyMDY4NiwgMTE3MTMsIDEwNjMzLCA2OTcwOCwgNTA1NiwgMTAwNjc5LCAxMjc4MjQsIDEyMTUxLCAxMjA3NzMsIDk0MDU1LCAKKyAgICA5ODEyLCAwLCA0NDYwLCA3ODc5MSwgMTI0OTU2LCA3MTMwNywgMTI4MDM4LCAwLCAxMjExMzUsIDEyNzE3NCwgNjQyNzgsIAorICAgIDkyMzcwLCA0MzQ2NiwgMCwgNjY3NjAsIDY0Mzg5LCAyOTUzLCA3MDEyMiwgMTgwMSwgMTI4MzUsIDc0ODQ3LCAxMjA4NjcsIAorICAgIDczODIzLCA4MzExMCwgNjYzNzUsIDIwODUsIDcwMiwgNDI1NzksIDc3ODg0LCA3Nzg4NSwgMTMwNzQsIDc3ODgzLCA2NjI5OSwgCisgICAgMTk0Nzc1LCA3MTQ0NywgMTIxMDYsIDEyMDk3MiwgNzQyMDcsIDE3NTUsIDEwNDgyLCAxMjg2MywgNzc4OTgsIDExNjMsIAorICAgIDI5NTEsIDk1MjIsIDY3ODE2LCA3ODI2NiwgNjY2MDQsIDEwMTA1OSwgMzM4NCwgNjkyMjcsIDEwNzAyLCA4MzAsIDc3OTAyLCAKKyAgICA3Nzg5OSwgNzc5MDAsIDg0NTEsIDgzMzI0LCAwLCAwLCA2NjQ1OCwgMTI4OTU3LCAxMjczMDEsIDc0ODk2LCAwLCAyOTA4LCAKKyAgICA5ODM1NTgsIDExMTc3LCA2NDkwMiwgNDI0MywgOTI0NTQsIDEyMjM5LCAxMjEwMDMsIDEyNDk1OSwgNDQ0MSwgMTI0OTI5LCAKKyAgICA4Mjk2OCwgNzM5NDAsIDY0MzUyLCAxMjc1MTMsIDEyMTA2NiwgNDExLCAxMjc1MjUsIDkxOTksIDk4MzI3MywgNDA1NiwgCisgICAgMTE4OTkyLCA0MTg5MCwgMTI4NTkyLCAyNzMwLCA0MTYwNCwgMTI4MzU1LCA1NDI4LCAxOTQ3NDMsIDMzNjQsIDQyMjY1LCAKKyAgICA2NDQzNywgMTI3OTM1LCAxMTg4MTYsIDcxNDU4LCA5Njg0LCAyMTYsIDcxMzY3LCAxNDAxLCAxMjgwNTMsIDQ0MDEyLCAKKyAgICA5MjYyOCwgNzE0NTYsIDkyNTg1LCA5MTU4LCA2Njg3OCwgMTExMjYsIDU3NjgsIDEwMTA2NCwgOTgzNzU5LCAwLCA0ODQsIAorICAgIDE5NDczOSwgMCwgMCwgNjU4OTUsIDEyNTA3NiwgMTAwNTI0LCAzMzM4LCA3MzkzNSwgNTcyLCA3MDQxLCAyNzM2LCA2NzYwNSwgCisgICAgMTI3NTQzLCA5Mzk2MiwgMjc5NCwgODgwNywgNjQ0OTEsIDc3ODQ3LCA1NDM4LCA1MjIyLCA1MzgxLCA0MzExNCwgMTI4NzA1LCAKKyAgICA1MTkzLCA1MTI1LCA1NDU2LCA1NTA5LCA3Nzg0NiwgMTk0NzQ3LCA5NTM0LCA2Njc2NywgMTI5MDQwLCAxMTk5NjcsIDM0MzAsIAorICAgIDk4MzM5NywgNDI5MDUsIDc4NzE3LCA3NDkyOSwgOTgxLCAxMjkxODQsIDQzMzAsIDczOTI5LCAxMjA1MzYsIDE4MjQsIAorICAgIDEwOTA4LCAxMjY1MDYsIDcwMzQsIDQxNjgzLCA2NDYxNywgMTE5MTM4LCA3Mzc1NCwgMzk1NywgNjQzNTgsIDY0NTQ3LCAKKyAgICAxMjgyNTksIDY3NCwgNjM5OTEsIDk4MzI1MSwgMjk0NiwgNTM1NCwgNTI1MSwgNTMyOCwgNTMwNywgMzc1OSwgMTE0MTEsIAorICAgIDgzNjQsIDUxMjMsIDExOTYyOCwgNTI4MSwgNTQ2OSwgNTEyMSwgNzc5ODksIDExODk5MywgMCwgNTEzMCwgODMxODAsIAorICAgIDEyODM1NywgNzc5OTAsIDAsIDEyMDcyNiwgMTIyMSwgMjczMywgMTE3NDYsIDc3OTkxLCA1MjE2LCAxMTkyNjgsIDAsIAorICAgIDEyODQ3NSwgOTIxODcsIDM0NjgsIDcwMzMsIDkyMzAsIDU5MzksIDEyODM5NywgMTIwMDEwLCA1ODAzLCA3MTg2NywgCisgICAgNjg0MDAsIDcyNzgsIDEwMzIxLCAxMDI4OSwgNjQ2MTMsIDEwMzg1LCA0MTcwNiwgMCwgMCwgNjcxMTUsIDY2NzUzLCAKKyAgICAxMTczOSwgNzc5ODYsIDQxOTgxLCA5Mjc0MywgNTkzOCwgMCwgNDM3NjYsIDEyNDQ4LCA3NTc2LCAxMDQwMSwgMTAzMzcsIAorICAgIDczODUyLCAxMDA2ODQsIDEzMDU3LCA5ODMyNzcsIDEyNjk3NiwgMTI5MDgxLCAxMDAwOSwgOTE3OTA1LCA0MTcwMywgCisgICAgMTIwOTUwLCAxMjE2NSwgMTI5MTkxLCA5ODM3NTcsIDk4ODUsIDE5NDgxNCwgODA3NywgOTI2MjAsIDEyNzkwOCwgMTIxMDQ0LCAKKyAgICAxOTQ5OTUsIDAsIDkyNDU3LCAxMjkxMzgsIDQyMjAsIDEwNzI1LCAxMDQzMywgMCwgNjgzOTUsIDQ5ODcsIDY0NTE5LCAKKyAgICAxMjEyNjUsIDEyNTA3OCwgMTI5MTg1LCAxOTQ4MTMsIDEyNDk5OSwgMTA5NzAsIDExNzMzLCAwLCAxMjA3OTIsIDEyNjQ5MCwgCisgICAgMTk5NDQsIDc0MzU2LCA5MDA5LCA4NTUxLCA5MjM0NSwgMTE0NjgsIDY0NjM2LCA3NTc1LCAwLCAyNzI0LCAxMDA4ODksIAorICAgIDEyNzM5MCwgMTIzMTMsIDExMTUxLCA1MTUsIDExOTk0NywgNDI3OTEsIDYzOTg3LCA3ODI4NiwgMTE5OTQzLCAxMTk5NDAsIAorICAgIDExOTk0MSwgMTAwODkwLCA5Nzc1LCA0MDQ2LCA0NTg5LCA0NTIxLCA2ODYyOSwgOTE0MSwgOTE3OTA0LCA3ODg1MCwgMjc0MSwgCisgICAgNjQzOTksIDYxOTcsIDEzNzAsIDk4Mzk0OCwgMTIwODQxLCAwLCAxMDA4ODcsIDk4MzQ0MSwgNzEyNzMsIDYxODQsIDg2MDYsIAorICAgIDMzMDMsIDQxMzcyLCAxMTc4NiwgOTQ3MywgNjYyMDMsIDM0MjIsIDkyNDQ2LCAxMTU5MywgNDMwMDcsIDQ0NzgsIDY2MTc4LCAKKyAgICAwLCAwLCAyNzQ0LCAwLCA0NDc3LCA3ODI2NywgODE0LCA0MjA2NiwgNjYxODMsIDY2MjA0LCA0Mzc4NiwgMTE5OTYxLCAKKyAgICA2NjE5OCwgNDE4ODAsIDY2MTg4LCAxMTYyMywgNzgxNDgsIDExOTU1LCA2NjE5MCwgNjYxOTEsIDQxMTExLCA2NjE4OSwgCisgICAgNzM3ODgsIDc3ODgsIDQ4NDcsIDEyODM2NiwgMTI3NzU5LCA3MDcyNSwgMTI4NDMzLCAyMjIxLCAxNTgxLCA2NTM1LCAKICAgICA3ODE2MSwgMTI5NTQsIDQzMCwgNzgxNjAsIDU1MjU5LCA3Mzk0NCwgMTI4MDM2LCA1Mjc4LCA0OTQ1LCA0Mjg4MywgNDk1MCwgCiAgICAgOTgzNDQwLCA2ODYyNSwgOTgzNDM4LCA3MjY5LCAxMjg0OTksIDU5NjQsIDEyOTA4LCAxMjQ5OTcsIDAsIDc0NzY0LCAKLSAgICA0MzUxMiwgMTE5MTQ2LCAxOTQ5MzYsIDQ5NDksIDk4MzQzMSwgNDQzLCA5ODM0MjksIDQ5NDQsIDU0NjcsIDExOTYwMywgCi0gICAgNzA4NjUsIDY1MTM3LCA2MDQ0LCA2NTM5MiwgMCwgNDIxMywgMCwgNDEzMDMsIDkxNzU1NiwgMTk0OTMxLCAxMTk5NjIsIAotICAgIDQxMzA2LCA3Mzk4NCwgMjY5OCwgMTI3MTU5LCAwLCAxMjA3MiwgMzE5MywgMCwgNDEzMDQsIDgyNCwgMTI4Njc2LCAxMjA5MSwgCi0gICAgNjcxMTgsIDc4ODk0LCAxMTk4MTYsIDQ2NzMsIDY0ODA0LCA0Njc4LCAxMTk4MjAsIDExOTgxOSwgNjUwNTksIDQzODYwLCAKLSAgICA2NzM5LCA2Njg0NCwgNTQ4MSwgMzQ5MCwgMTE5OSwgMTE5ODExLCA4MzU2LCA2OTk0NywgNjc3MDIsIDQ2NzcsIDEyNjg4LCAKLSAgICAzMTAyLCAwLCA0NjcyLCA3ODE3MywgNzgxNzUsIDU1MzEsIDY4MzY3LCA0MjU3NSwgNzgxNzAsIDc4MTY2LCA0Njc0LCAKLSAgICA0NTQ4LCA0NDAwNSwgNzEwODcsIDY4NjU4LCAxMTk5NDYsIDgwMjUsIDY4NjMwLCAxMjcwMjQsIDE4NTUsIDEyNzQ3NSwgCi0gICAgNjg2NjksIDExODk5MCwgOTI0NDUsIDEyNzU1NCwgMTI2NjMwLCAxMjczMzksIDExOTY1MiwgMjc0NSwgMTE3OTcsIAotICAgIDk4MzQxOSwgMTI4MTU5LCA5MjAyLCA0NjU0LCA2ODQwLCA5ODM0MTYsIDY4NjM4LCA3Mzk5MywgMTA1MjUsIDQ2NDksIAotICAgIDY1MjA5LCAxMjE1MTIsIDEyMTUxMSwgNDY0OCwgNDMwODAsIDc1MDcwLCAxMjE1MDcsIDk4MzQwNiwgNjI0NiwgNjQ5NTAsIAotICAgIDc4MjgsIDQ2NTAsIDY3NzcsIDY3NzYsIDY3NzUsIDQ2NTMsIDc4MjIsIDcwMjg3LCA3NDYyNCwgNDMxODcsIDg2NjksIAotICAgIDEyMDY1OSwgNjgyMSwgNjUwOTMsIDk4MzU2NSwgNzg4ODEsIDI3MTYsIDk4MzQxMiwgOTgzMDYwLCA3MDUwMywgMTk0OTUyLCAKLSAgICA2ODM2OSwgMTIwMDU0LCAxMTA2MCwgODU0NywgMjcxMSwgNDIxNjUsIDc4MDI3LCA3ODAyNiwgNjgzNiwgOTgzNDIzLCAwLCAKLSAgICA0NjYyLCA3ODAzMywgNzgwMzIsIDkxNDksIDkxNDYsIDU5OSwgMjA4MSwgNzgwMzEsIDc4MDMwLCAxOTQ5NjIsIDQ2NTYsIAotICAgIDEwMTMwLCA2ODQ1MCwgNzgxMSwgNDA5OTQsIDE5NDk2NSwgNjQxNCwgNTk2NywgNDY1OCwgMzcyNSwgNTcxMywgNTgxNCwgCi0gICAgNDY2MSwgNDI0MzQsIDk4MzQxMywgMTI4NzM3LCAxMTE5MCwgNjQ5MDQsIDkwMjYsIDEwODMzLCA3NDg2NCwgNzU0NywgCi0gICAgNDg2NywgMTExMDAsIDEwMDA4LCAxMDIyMiwgMzA1NCwgMTk0OTU2LCA5NzQ0LCA3ODg2MCwgNzYwNSwgNDYyMiwgMTE5NjU2LCAKLSAgICA0Mzg4OCwgNzAzMDMsIDk4MzM5NSwgNjk5MDUsIDY3MTg4LCA5MDQ1LCA3ODg4OCwgNDIyNSwgMTk5MjYsIDY4ODMxLCAKLSAgICAxMjg4MCwgNjUzMDcsIDQ2MTcsIDY4NzU3LCA5ODMzODgsIDQxNzMyLCA0NjE2LCAxMDUxOCwgMTA0MjMsIDEwMzU5LCAKLSAgICA5ODMzODIsIDU5NTgsIDAsIDk4MzQzNSwgNDIxNSwgOTc4OSwgMTE5NjE5LCA0MzIxLCA0NjIxLCAxOTUwMjgsIDQxMzEzLCAKLSAgICA1MjIsIDUzNjgsIDExMTM5LCA2NTgwMywgMTI4NTQ2LCA1MzY2LCAxMjIwMSwgNTM3MiwgMTIxMDYwLCAxMTk5NDksIAotICAgIDE5NDk3NSwgNzcyMCwgNzM5MCwgMjY5NiwgOTgzNDAyLCAwLCA0NjM4LCA5ODM0MDcsIDE3OTAsIDc4MjQyLCA1OTY1LCAKLSAgICA2NDM2MywgNjY1NjksIDY4NjQ2LCA2ODQ3NywgNTM3NiwgMTgzNSwgNTMzNSwgMTIxNTA1LCAxMjgwODksIDQ2MzMsIDAsIAotICAgIDY4MTE5LCAxMTgwLCA0NjMyLCA2NzE5MSwgNTM4NywgNTMzMywgMCwgMTI1MTMyLCA0MjA5NCwgNTMzMSwgNDYzNCwgCi0gICAgMTE5MjgsIDk4MzU5NCwgNTMzOCwgNDYzNywgMTI4MTcwLCA1OTcxLCA0MjQxNCwgNDM1MDAsIDEyNjgsIDY1MDk3LCAKLSAgICA0MjM2MSwgMCwgMCwgNzM4NTMsIDE0MjcsIDEyODQ0MCwgMCwgNTk3MCwgMzQzMSwgMCwgMTAzNTgsIDEwNDIyLCA0NzU4LCAKLSAgICA5ODMzNzYsIDE2MDgsIDI3MzgsIDEyNTA2NiwgMTA0NTUsIDQ3NTMsIDc0MDI2LCAxMTM0NCwgNDIyMiwgNjI0MCwgNTIzMSwgCi0gICAgNzQzODQsIDY2NjExLCA2ODM3NywgNjI0OCwgOTgzMzY0LCA2NzgxNSwgNzg4NzgsIDQyMzE4LCA5MjU4MiwgNTIyOSwgCi0gICAgNDc1NywgMCwgMTI2NTc2LCAyNzI4LCA0NzUyLCA2NDU2MywgNjUyMzUsIDUyMzQsIDAsIDEyODE0NSwgMTI4OTI2LCAKLSAgICAxMDcxMywgNzE2NiwgMCwgMjYyMiwgNzQ2MCwgODMxMjQsIDY3MTAxLCAxMjY0OTUsIDg5NTQsIDc0NzYwLCA2NTE4OSwgCi0gICAgMjYzMiwgNDI2MTcsIDEwMTA4LCAxMDExLCA1NTc0LCAxODUzLCAyNzA5LCA2NTEzOSwgNTU3NywgMTI4OTY2LCAwLCAKLSAgICAxMTg4NzEsIDY4NjQxLCA4OTY1LCA3NjM1LCA0MjE3NywgNTMxNiwgMCwgNTMxNCwgNjQ1MSwgNTU3MiwgNjY0NjQsIDUzMTIsIAotICAgIDAsIDU1MjUsIDUzMzAsIDUzMTksIDY4MjkyLCAxMjczMTEsIDY1MDY2LCA0NDAwMywgNjg0MzcsIDk4MzQ4MiwgNDM4NDMsIAotICAgIDEyMDQ5OCwgMTI3ODUxLCA0MzkxOCwgNzQ4NTEsIDc0MDIyLCA5ODM0MjQsIDY0NjA5LCA2ODY0MywgNjc0MTAsIDEyODU5MywgCi0gICAgNTcyMSwgNzQ4OTIsIDU1MTksIDg2MzIsIDY2NDY1LCAxMTI2NywgNzM5NjEsIDkyMjc4LCA1NzIwLCA3ODc3OCwgMTY5MiwgCi0gICAgNDIxOSwgNDYxMCwgODY5NiwgNDMwNSwgMCwgNDYwOSwgNDM0NzgsIDQ2MTQsIDU0MSwgOTgzMjQyLCA1Mjg3LCA1MzA5LCAKLSAgICA1Mjg1LCA2ODM4OSwgNTk2MSwgNDY0NywgNTYsIDQyMTYsIDEwNTc3LCA0MTM4MSwgNjAxLCA0NjEzLCAxMjA0NzksIAotICAgIDk4MzM0OCwgOTIwOCwgNDYwOCwgNDM5NjYsIDQxMTI0LCA1MTkwLCA2NzYyOCwgNjY4MjYsIDY4MTQ1LCA3MDg2LCAwLCAKLSAgICA2Nzk5OCwgNjc2MjAsIDkzMDQ3LCAyNzM0LCAxMTA3NCwgMCwgNjc2MjcsIDQzNTkzLCAwLCA2NzYyNSwgNTk2MCwgNjc3MjIsIAotICAgIDg5OTIsIDQyNTkzLCAxMjgyNjAsIDE3ODIsIDY3NjIyLCA2ODExNCwgMTE5OTM5LCAwLCA2ODE4MCwgNTUwMSwgMTE5OTUyLCAKLSAgICA0MjUwOCwgNzQ0MiwgNDM2NjUsIDM1OSwgNDEyNTMsIDY4MzkyLCA2MjM5LCA0MzkwMCwgNDEyNTYsIDc0MTMyLCA2Nzc0MCwgCi0gICAgMCwgNzExNzgsIDkxNzU1MCwgOTM0NiwgNjk2NjAsIDQxMjU0LCAxMjgwNDcsIDQzMjkxLCAzNzY3LCA1NzM3LCAwLCA0ODY1LCAKLSAgICAwLCA1NzQwLCA5MTc5OTcsIDU3MzYsIDQzNjgsIDY0NzI0LCA3MTkzLCA2NzA5NywgMTI4ODQ0LCA1NzM5LCA0MTAyNCwgCi0gICAgNDg2NiwgOTgzODgwLCA3MzkwNCwgMTIxNDIwLCA0ODY5LCAxMjA1NjMsIDEyOTE3MiwgNDIyMywgMTI4MjAxLCA2NjUwLCAKLSAgICAxMjY1MDksIDAsIDEyMDIxMiwgMTE5ODcyLCA0ODcwLCAxMjA0NDUsIDY4NjYxLCA2NzE2LCA3ODE3NiwgNjg2NjcsIAotICAgIDY4MzgyLCA2ODY3NiwgMTI3OTI1LCAxMDEyMiwgNDg2NCwgNjY1NjgsIDQxNDQsIDc5MzcsIDgzMTkzLCA2MjQ1LCA2ODY1MiwgCi0gICAgMjczMiwgNDI3MzQsIDc0NSwgNjgwNDUsIDE5NTA5NywgOTIxOTUsIDQ3NzcsIDc4MjEsIDEyOTEzNiwgNjg2MzEsIDQyNzc1LCAKKyAgICA0MzUxMiwgMTE5MTQ2LCAxOTQ5MzYsIDQ5NDksIDk4MzQzMSwgNDQzLCAxMjI5MDIsIDQ5NDQsIDU0NjcsIDExOTYwMywgCisgICAgNzA4NjUsIDY1MTM3LCA2MDQ0LCA2NTM5MiwgOTgzMTE5LCA0MjEzLCAwLCA0MTMwMywgOTE3NTU2LCAxOTQ5MzEsIAorICAgIDExOTk2MiwgNDEzMDYsIDczOTg0LCAyNjk4LCAxMjcxNTksIDAsIDEyMDcyLCAzMTkzLCAwLCA0MTMwNCwgODI0LCAKKyAgICAxMjg2NzYsIDEyMDkxLCA2NzExOCwgNzg4OTQsIDExOTgxNiwgNDY3MywgNjQ4MDQsIDQ2NzgsIDExOTgyMCwgMTE5ODE5LCAKKyAgICA2NTA1OSwgNDM4NjAsIDY3MzksIDY2ODQ0LCA1NDgxLCAzNDkwLCAxMTk5LCAxMTk4MTEsIDgzNTYsIDY5OTQ3LCA2NzcwMiwgCisgICAgNDY3NywgMTI2ODgsIDMxMDIsIDAsIDQ2NzIsIDc4MTczLCA3ODE3NSwgNTUzMSwgNjgzNjcsIDQyNTc1LCA3ODE3MCwgCisgICAgNzgxNjYsIDQ2NzQsIDQ1NDgsIDQ0MDA1LCA3MTA4NywgNjg2NTgsIDExOTk0NiwgODAyNSwgNjg2MzAsIDEyNzAyNCwgCisgICAgMTg1NSwgMTI3NDc1LCA2ODY2OSwgMTE4OTkwLCA5MjQ0NSwgMTI3NTU0LCAxMjY2MzAsIDEyNzMzOSwgMTE5NjUyLCAyNzQ1LCAKKyAgICAxMTc5NywgOTgzNDE5LCAxMjgxNTksIDkyMDIsIDQ2NTQsIDY4NDAsIDEyMjkwOSwgNjg2MzgsIDczOTkzLCAxMDUyNSwgCisgICAgNDY0OSwgNjUyMDksIDEyMTUxMiwgMTIwMjQ1LCA0NjQ4LCA0MzA4MCwgNzUwNzAsIDEyMTUwNywgOTgzNDA2LCA2MjQ2LCAKKyAgICA2NDk1MCwgNzgyOCwgNDY1MCwgNjc3NywgNjc3NiwgNjc3NSwgNDY1MywgNzgyMiwgNzAyODcsIDc0NjI0LCA0MzE4NywgCisgICAgODY2OSwgMTIwNjU5LCA2ODIxLCA2NTA5MywgOTgzNTY1LCA3ODg4MSwgMjcxNiwgOTgzNDEyLCA5ODMwNjAsIDY2NzU2LCAKKyAgICAxOTQ5NTIsIDY4MzY5LCAxMjAwNTQsIDExMDYwLCA4NTQ3LCAyNzExLCA0MjE2NSwgNzgwMjcsIDc4MDI2LCA2ODM2LCAKKyAgICA5ODM0MjMsIDk4MzQyMSwgNDY2MiwgNzgwMzMsIDc4MDMyLCA5MTQ5LCA5MTQ2LCA1OTksIDIwODEsIDc4MDMxLCA3ODAzMCwgCisgICAgMTk0OTYyLCA0NjU2LCAxMDEzMCwgNjg0NTAsIDc4MTEsIDQwOTk0LCAxOTQ3MDIsIDY0MTQsIDU5NjcsIDQ2NTgsIDM3MjUsIAorICAgIDU3MTMsIDU4MTQsIDQ2NjEsIDQyNDM0LCA5ODM0MTMsIDExODk5NywgMTExOTAsIDY0OTA0LCA5MDI2LCAxMDgzMywgCisgICAgNzQ4NjQsIDc1NDcsIDQ4NjcsIDExMTAwLCAxMDAwOCwgMTAyMjIsIDMwNTQsIDE5NDk1NiwgOTc0NCwgNzg4NjAsIDc2MDUsIAorICAgIDQ2MjIsIDExOTY1NiwgNDM4ODgsIDcwMzAzLCA5ODMzOTUsIDY5OTA1LCA2NzE4OCwgOTA0NSwgNzg4ODgsIDQyMjUsIAorICAgIDE5OTI2LCA2ODgzMSwgMTI4ODAsIDY1MzA3LCA0NjE3LCA2ODc1NywgNzgwMDgsIDQxNzMyLCA0NjE2LCAxMDUxOCwgCisgICAgMTA0MjMsIDEwMzU5LCA5ODMzODIsIDU5NTgsIDAsIDk4MzQzNSwgNDIxNSwgOTc4OSwgMTE5NjE5LCA0MzIxLCA0NjIxLCAKKyAgICAxOTUwMjgsIDQxMzEzLCA1MjIsIDUzNjgsIDExMTM5LCA2NTgwMywgMTI4NTQ2LCA1MzY2LCAxMjIwMSwgNTM3MiwgCisgICAgMTIxMDYwLCAxMTk5NDgsIDEyNzA2NCwgNzcyMCwgNzM5MCwgMjY5NiwgMTE5NjU3LCA5ODMxMTUsIDQ2MzgsIDk4MzQwNywgCisgICAgMTc5MCwgNzgyNDIsIDU5NjUsIDY0MzYzLCA2NjU2OSwgNjg2NDYsIDY4NDc3LCA1Mzc2LCAxODM1LCA1MzM1LCAxMjE1MDUsIAorICAgIDEyODA4OSwgNDYzMywgOTgzNDE4LCA2ODExOSwgMTE4MCwgNDYzMiwgNjcxOTEsIDUzODcsIDUzMzMsIDAsIDEyNTEzMiwgCisgICAgNDIwOTQsIDUzMzEsIDQ2MzQsIDExOTI4LCAxMDA5NTIsIDUzMzgsIDQ2MzcsIDEyMTA3MCwgNTk3MSwgNDI0MTQsIDQzNTAwLCAKKyAgICAxMjY4LCA2NTA5NywgNDIzNjEsIDEyODUxMCwgOTE3NjA1LCA3Mzg1MywgMTQyNywgMTI4NDQwLCAwLCA1OTcwLCAzNDMxLCAKKyAgICA5ODM0MTcsIDEwMzU4LCAxMDQyMiwgNDc1OCwgOTgzMzc2LCAxNjA4LCAyNzM4LCAxMjUwNjYsIDEwNDU1LCA0NzUzLCAKKyAgICA3NDAyNiwgMTEzNDQsIDQyMjIsIDYyNDAsIDUyMzEsIDc0Mzg0LCA2NjYxMSwgNjgzNzcsIDYyNDgsIDk4MzM2NCwgNjc4MTUsIAorICAgIDc4ODc4LCA0MjMxOCwgOTI1ODIsIDUyMjksIDQ3NTcsIDEyNTIxNSwgMTI2NTc2LCAyNzI4LCA0NzUyLCA2NDU2MywgCisgICAgNjUyMzUsIDUyMzQsIDAsIDEyODE0NSwgMTI3NDg3LCAxMDcxMywgNzE2NiwgMCwgMjYyMiwgNzQ2MCwgODMxMjQsIDY3MTAxLCAKKyAgICAxMjY0OTUsIDg5NTQsIDc0NzYwLCA2NTE4OSwgMjYzMiwgNDI2MTcsIDEwMTA4LCAxMDExLCA1NTc0LCAxODUzLCAyNzA5LCAKKyAgICA2NTEzOSwgNTU3NywgMTI4OTY2LCA5ODMwODgsIDExODg3MSwgNjg2NDEsIDg5NjUsIDc2MzUsIDQyMTc3LCA1MzE2LCAKKyAgICA5MTc4NzcsIDUzMTQsIDY0NTEsIDU1NzIsIDY2NDY0LCA1MzEyLCAxMjcwMDYsIDU1MjUsIDUzMzAsIDUzMTksIDY4MjkyLCAKKyAgICAxMjczMTEsIDY1MDY2LCA0NDAwMywgNjg0MzcsIDEyNzI5OSwgNDM4NDMsIDEyMDQ5OCwgMTI3ODUxLCA0MzkxOCwgNzQ4NTEsIAorICAgIDc0MDIyLCA5ODM0MjQsIDY0NjA5LCA2ODY0MywgNjc0MTAsIDEyODU5MywgNTcyMSwgNzQ4OTIsIDU1MTksIDg2MzIsIAorICAgIDY2NDY1LCAxMTI2NywgNzM5NjEsIDkyMjc4LCA1NzIwLCA3ODc3OCwgMTY5MiwgNDIxOSwgNDYxMCwgODY5NiwgNDMwNSwgCisgICAgNzUwNTIsIDQ2MDksIDQzNDc4LCA0NjE0LCA1NDEsIDk4MzI0MiwgNTI4NywgNTMwOSwgNTI4NSwgNjgzODksIDU5NjEsIAorICAgIDQ2NDcsIDU2LCA0MjE2LCAxMDU3NywgNDEzODEsIDYwMSwgNDYxMywgMTIwNDc5LCA5ODMzNDgsIDkyMDgsIDQ2MDgsIAorICAgIDQzOTY2LCA0MTEyNCwgNTE5MCwgNjc2MjgsIDY2ODI2LCA2ODE0NSwgNzA4NiwgMjI2NSwgNjc5OTgsIDY3NjIwLCA5MzA0NywgCisgICAgMjczNCwgMTEwNzQsIDAsIDY3NjI3LCA0MzU5MywgMTI4NzU4LCA2NzYyNSwgNTk2MCwgNjc3MjIsIDg5OTIsIDQyNTkzLCAKKyAgICAxMjgyNjAsIDE3ODIsIDY3NjIyLCA2ODExNCwgMTE5OTM5LCAwLCA2ODE4MCwgNTUwMSwgMTE5OTUyLCA0MjUwOCwgNzQ0MiwgCisgICAgNDM2NjUsIDM1OSwgNDEyNTMsIDY4MzkyLCA2MjM5LCA0MzkwMCwgNDEyNTYsIDc0MTMyLCA2Nzc0MCwgMTI5MzA5LCAKKyAgICA3MTE3OCwgOTE3NTUwLCA5MzQ2LCA2OTY2MCwgNDEyNTQsIDEyODA0NywgNDMyOTEsIDM3NjcsIDU3MzcsIDkxNzg5NiwgCisgICAgNDg2NSwgMCwgNTc0MCwgOTE3OTk3LCA1NzM2LCA0MzY4LCA2NDcyNCwgNzE5MywgNjcwOTcsIDEyODg0NCwgNTczOSwgCisgICAgNDEwMjQsIDQ4NjYsIDk4Mzg1NSwgNzM5MDQsIDcwNzI2LCA0ODY5LCAxMjA1NjMsIDEyOTE3MiwgNDIyMywgMTI4MjAxLCAKKyAgICA2NjUwLCAxMjY1MDksIDAsIDEyMDIxMiwgMTE5ODcyLCA0ODcwLCAxMjA0NDUsIDY4NjYxLCA2NzE2LCA3ODE3NiwgNjg2NjcsIAorICAgIDY4MzgyLCA2ODY3NiwgMTI3OTI1LCAxMDEyMiwgNDg2NCwgNjY1NjgsIDQxNDQsIDc5MzcsIDcyODIxLCA2MjQ1LCA2ODY1MiwgCisgICAgMjczMiwgNDI3MzQsIDc0NSwgNjgwNDUsIDEyODkzMywgOTIxOTUsIDQ3NzcsIDc4MjEsIDEyODg3MCwgNjg2MzEsIDQyNzc1LCAKICAgICAxOTQ2NjEsIDEyODQ0NSwgMTIwNjc5LCAzMDk3LCAxMjA5MDgsIDU5NjYsIDEyMTE5NywgNDc3OCwgMTI2NDY5LCAxMDg2MywgCiAgICAgMTI3NTA2LCA0NzgxLCA5Mjk4NiwgNjQ0MDcsIDEyODUwMywgMTI4MzIzLCA4NTc3LCA3MTIyMSwgNjgxOTYsIDQzMjg1LCAKLSAgICAxMDIxNiwgNDc4MiwgOTgzNDg1LCA5ODM0MTEsIDEyMDc1NywgNjg2MTgsIDEyMzI1LCA0MzA1NiwgODcxNywgMCwgMCwgCi0gICAgNDc3NiwgNzM4MTgsIDExNDkyLCA4NzAwLCAxMjkxMjgsIDEzMTc2LCA2ODM2MywgMTA0MjYsIDY3MjQ3LCA3MTA5MSwgCisgICAgMTAyMTYsIDQ3ODIsIDk4MzQ4NSwgOTgzNDExLCAxMjA3NTcsIDY4NjE4LCAxMjMyNSwgNDMwNTYsIDg3MTcsIDEyNzExOCwgCisgICAgMCwgNDc3NiwgNzM4MTgsIDExNDkyLCA4NzAwLCAxMjkxMjgsIDEzMTc2LCA2ODM2MywgMTA0MjYsIDY3MjQ3LCA3MTA5MSwgCiAgICAgMTAzNjIsIDE5NDcwNiwgMTcxNSwgNDg0OSwgODI0MiwgOTU2MSwgNzM5MjIsIDQzMjc4LCA0MjYzNSwgMCwgMTI3MjA3LCAKLSAgICA1OTYzLCA5MTc5MjYsIDk4MzQ4MywgMCwgNDg1MCwgNzM5MDAsIDE2MDcsIDQ2NiwgNDg1MywgMTE4OTk1LCA0ODU0LCAKKyAgICA1OTYzLCAxMjA3ODYsIDEyNTIwMSwgMCwgNDg1MCwgNzM5MDAsIDE2MDcsIDQ2NiwgNDg1MywgMTE4OTk1LCA0ODU0LCAKICAgICAxMjc5MTgsIDUxNjQsIDczODA3LCAxMzUwLCA1MTI0LCA2NDQyMCwgMTk5MywgNTM2MiwgODQ3MSwgMjcwOCwgOTI0NzEsIAotICAgIDEyNDQ1LCAzNzg1LCAyMzQsIDMxOTksIDEyMTI3MywgNDEyNjgsIDQ4NDgsIDI1MzAsIDc0OTQxLCAyMDY4LCAxOTY0LCAwLCAKLSAgICA3Mzc2MiwgMTA0NTgsIDk4MzQxNywgODU3NiwgNzg1NDMsIDAsIDI3MDQsIDQ3OTQsIDEyMTEwMiwgNjgyMTEsIDgzMjIsIAotICAgIDQ3OTcsIDU3NTMsIDAsIDI2OTQsIDQ3OTIsIDAsIDI0MzksIDY1MTA0LCA2OTgwNCwgOTgzNDI2LCAzMDMsIDc0NjI1LCAKLSAgICA2ODIyOSwgOTgzNDI3LCAyNDM3LCA3ODY1OSwgNDIyMSwgNDg0NCwgOTIyMTYsIDAsIDAsIDAsIDcwMDQyLCA3NDA5NSwgCi0gICAgNDMyOTIsIDAsIDI0NDEsIDEwNzM5LCA2NTA5MCwgMTk0NjIyLCA3MDQzNiwgMTE4OTI5LCAyNDUxLCAyNzE0LCAxMTkzMjYsIAotICAgIDAsIDQzMzc5LCA0OTM3LCA0MzM3NiwgNzUzLCA1ODQ5LCAxMDU5NywgNDMwODksIDExNzIyLCA5MjQ4LCA5MjU1NSwgCi0gICAgNDI4NzksIDExNzI1LCA5MTc5NjksIDAsIDI3MjYsIDMxMDcsIDczOTU4LCA0OTQxLCA2NDkzNywgMTE5MjMzLCA5MTQwLCAKLSAgICAxNDA4LCA1MjYxLCA0NjA3LCAxOTQ3MTUsIDE4MSwgOTgzNDMyLCA0OTQyLCA5NTM5LCA0OTM4LCAwLCA2NTIwMSwgNTI1OSwgCi0gICAgOTM2OSwgNjQxODUsIDQxNDIsIDUyNTcsIDk4MzYwMSwgNjg0NCwgNDk2NCwgNTI2NCwgNjQxNzgsIDY0MTc3LCAxMjk3OSwgCi0gICAgNDE0MTEsIDY0MTgyLCA2NDE4MSwgNjQxODAsIDY0MTc5LCA5NDgyLCA0ODczLCA0MTIzMSwgMTgyMiwgNDI1MjYsIAotICAgIDEyNzk4OSwgMTI3NTgsIDM4NjUsIDE5NDY2MCwgMTIxMTI5LCAxMDUwMCwgMCwgMTE5MDI0LCA3ODAyOCwgOTI0MDgsIAotICAgIDk4MzAsIDQzNjQyLCAzODksIDEwODkzLCA3NTIxLCAxMjc4NzksIDQ4NzIsIDU0NjMsIDEyODExOSwgMzEyNSwgOTU2NywgMCwgCi0gICAgNDg3OCwgNTQ1OSwgNDYwNCwgMTE5NjUwLCA5NTU3LCA1NDY1LCA2ODYxNywgMCwgMTE0OTQsIDEyNjQ5MiwgOTU2MywgCi0gICAgMTA4NjUsIDc0NTcwLCA0MzI3OSwgNjQxODYsIDY4NTIxLCA3ODcxNCwgNjQxOTEsIDY0MTkwLCA4ODk4LCA2NDE4OCwgCi0gICAgMTI5MTUzLCA0MTAzMCwgNzQyMjYsIDc4NzEzLCA3NDYwMCwgNzQ5OTQsIDkxNzgzNCwgMCwgNzg4MDUsIDQxMDMxLCAKLSAgICA3ODgwMSwgMTE5NjAsIDY3NDUsIDMwODIsIDk4MzI2OSwgNzg1MzksIDczOTE5LCAxMDU3MywgNDE3NDQsIDcwNzksIDU4NTYsIAotICAgIDY3ODM4LCA1MTYzLCA3ODgwOSwgMTI4MTYyLCAxODE3LCA2NjcyNCwgNzg1MzgsIDExOTAxMCwgMTA1NjQsIDc3NjMsIAotICAgIDEzMDc3LCA0MTgxMywgNDQwMCwgNDE3NDUsIDY0MjA3LCAxMDI3NSwgODkyNSwgMTAzNzEsIDEwMzA3LCA0MTgxNCwgNDI0OCwgCi0gICAgNzc5NzksIDAsIDQ1NDEsIDYyOTksIDY0MjA0LCA2NDIwMywgNjQyMDEsIDY0MjAwLCA2NDE5OSwgNjQxOTgsIDEyNjQ3MSwgCi0gICAgNDIxNTYsIDc4Njg4LCAwLCA2NDE5MywgNjQxOTIsIDY1MjIzLCA5OTQzLCA2NDE5NywgNjQxOTYsIDY0MTk1LCA2NDE5NCwgCi0gICAgMTIyMzEsIDQyNjUyLCA2NDE3NCwgNjQxNzMsIDc4MTg5LCA4NDYsIDc4MTg2LCA5OTY1LCA3NDQ5NSwgODM0OTIsIDgzNDkzLCAKLSAgICA4MzQ5NCwgMjU0MywgMTIxNjMsIDMxMDgsIDk3NDUsIDY0MTY3LCA2NDE2NiwgNjQxNjUsIDY0MTY0LCAyMTEwLCA5MjE3NiwgCi0gICAgNjQxNjksIDY0MTY4LCA2NDk0OSwgMTA5NzIsIDEwMjUxLCAxMDI0NywgNDI3NjgsIDcxNSwgMjI5NSwgNDMyOTksIDk0NTMsIAotICAgIDUzNDgsIDEwOTQzLCA2NjM5MCwgMCwgMTEzNTIsIDU1MCwgOTkxMCwgMTI1MTI3LCAwLCA2NjU3OSwgMTE1NTEsIDEyODQ2NCwgCi0gICAgMTk1MDgwLCA5NTA0LCA3MTg3LCA4Mjk1NywgMTAzNzMsIDk4MzQxOCwgMTIwMzc1LCAxMDI2MSwgMTAyNTMsIDY0MDQsIAotICAgIDEwMjc3LCA3ODE4MywgMTE5ODQsIDE1NTIsIDY1MjIyLCA2OTk4LCA3ODE4MCwgNzE0MjksIDMxMjgsIDQ3ODksIDUwNjcsIAotICAgIDUwNjYsIDExODg0OSwgNDc4NCwgMCwgODgyNywgMTE0NiwgNTA2NSwgNjk4OTAsIDc4MTkyLCA2ODEzNiwgNzgxOTAsIAotICAgIDQzNDEyLCA1MDY0LCAyNDMxLCAwLCA5NDUwLCAxODA5LCAwLCA3ODIwMCwgNzgyMDEsIDUwNjIsIDEyNjQsIDY0ODE3LCAKLSAgICAxMzI1NCwgMTE2OTcsIDEyNjU5OCwgOTc4NSwgNjQ3MTYsIDAsIDM5MzMsIDc0NTU5LCA0NzQwLCA3OTU0LCAwLCAxMjUwMjMsIAotICAgIDQyNjA5LCAxMTk4NTUsIDc0MTc1LCA2NjkxMiwgMTI3MDE2LCAwLCAxMjEzMDAsIDQyMTMwLCAxMjEwNDYsIDUxNTEsIAotICAgIDEyMTM0NiwgODM0ODgsIDAsIDkzOTgwLCA5MTc4MDIsIDc2MjAsIDM4MDAsIDY1MTIyLCA4MzQ4NywgODM0ODAsIDgzNTUsIAorICAgIDEyNDQ1LCAzNzg1LCAyMzQsIDMxOTksIDEyMTI3MywgNDEyNjgsIDQ4NDgsIDI1MzAsIDc0OTQxLCAyMDY4LCAxOTY0LCAKKyAgICAxMjgyMTcsIDczNzYyLCAxMDQ1OCwgMTI4MTI1LCA4NTc2LCA3ODU0MywgMCwgMjcwNCwgNDc5NCwgMTIxMTAyLCA2ODIxMSwgCisgICAgODMyMiwgNDc5NywgNTc1MywgMCwgMjY5NCwgNDc5MiwgMTI4MTYzLCAyNDM5LCA2NTEwNCwgNjk4MDQsIDk4MzQyNiwgMzAzLCAKKyAgICA3NDYyNSwgNjgyMjksIDk4MzQyMCwgMjQzNywgNzg2NTksIDQyMjEsIDQ4NDQsIDkyMjE2LCA5ODM4MDUsIDAsIDAsIAorICAgIDcwMDQyLCA3NDA5NSwgNDMyOTIsIDk4MzY1NiwgMjQ0MSwgMTA3MzksIDY1MDkwLCAxOTQ2MjIsIDcwNDM2LCAxMTg5MjksIAorICAgIDI0NTEsIDI3MTQsIDExOTMyNiwgMCwgNDMzNzksIDQ5MzcsIDQzMzc2LCA3NTMsIDU4NDksIDEwNTk3LCA0MzA4OSwgCisgICAgMTE3MjIsIDkyNDgsIDkyNTU1LCA0Mjg3OSwgMTE3MjUsIDEyMDY4NywgMCwgMjcyNiwgMzEwNywgNzM5NTgsIDQ5NDEsIAorICAgIDY0OTM3LCAxMTkyMzMsIDkxNDAsIDE0MDgsIDUyNjEsIDQ2MDcsIDEyOTM1MywgMTgxLCA5ODM0MzIsIDQ5NDIsIDk1MzksIAorICAgIDQ5MzgsIDAsIDY1MjAxLCA1MjU5LCA5MzY5LCA2NDE4NSwgNDE0MiwgNTI1NywgOTgzNjAxLCA2ODQ0LCA0OTY0LCA1MjY0LCAKKyAgICA2NDE3OCwgNjQxNzcsIDEyOTc5LCA0MTQxMSwgNjQxODIsIDY0MTgxLCA2NDE4MCwgNjQxNzksIDk0ODIsIDQ4NzMsIAorICAgIDQxMjMxLCAxODIyLCA0MjUyNiwgOTIzNDQsIDEyNzU4LCAzODY1LCAxMjI5MTgsIDEyMTEyOSwgMTA1MDAsIDAsIDExOTAyNCwgCisgICAgNzgwMjgsIDc4MDAzLCA5ODMwLCA0MzY0MiwgMzg5LCAxMDg5MywgNzUyMSwgMTI3ODc5LCA0ODcyLCA1NDYzLCAxMjgxMTksIAorICAgIDMxMjUsIDk1NjcsIDk4MzI5MSwgNDg3OCwgNTQ1OSwgNDYwNCwgMTE5NjUwLCA5NTU3LCA1NDY1LCA2ODYxNywgMCwgCisgICAgMTE0OTQsIDEyNjQ5MiwgOTU2MywgMTA4NjUsIDc0NTcwLCA0MzI3OSwgNjQxODYsIDY4NTIxLCA3ODcxNCwgNjQxOTEsIAorICAgIDY0MTkwLCA4ODk4LCA2NDE4OCwgMTI5MTUzLCA0MTAzMCwgNzQyMjYsIDc4NzEzLCA3NDYwMCwgNzQ5OTQsIDkxNzgzNCwgMCwgCisgICAgNzg4MDUsIDQxMDMxLCA3ODgwMSwgMTE5NjAsIDY3NDUsIDMwODIsIDEyNjU4MSwgNzg1MzksIDczOTE5LCAxMDU3MywgCisgICAgNDE3NDQsIDcwNzksIDU4NTYsIDY3ODM4LCA1MTYzLCA3ODgwOSwgMTI4MTYyLCAxODE3LCA2NjcyNCwgNzg1MzgsIAorICAgIDExOTAxMCwgMTA1NjQsIDc3NjMsIDEzMDc3LCA0MTgxMywgNDQwMCwgNDE3NDUsIDY0MjA3LCAxMDI3NSwgODkyNSwgCisgICAgMTAzNzEsIDEwMzA3LCA0MTgxNCwgNDI0OCwgNzc5NzksIDcyODAyLCA0NTQxLCA2Mjk5LCA2NDIwNCwgNjQyMDMsIDY0MjAxLCAKKyAgICA2NDIwMCwgNjQxOTksIDY0MTk4LCAxMjY0NzEsIDQyMTU2LCA3ODY4OCwgMCwgNjQxOTMsIDY0MTkyLCA2NTIyMywgOTk0MywgCisgICAgNjQxOTcsIDY0MTk2LCA2NDE5NSwgNjQxOTQsIDEyMjMxLCA0MjY1MiwgNjQxNzQsIDY0MTczLCA3ODE4OSwgODQ2LCAKKyAgICA3ODE4NiwgOTk2NSwgNzQ0OTUsIDgzNDkyLCA4MzQ5MywgODM0OTQsIDI1NDMsIDEyMTYzLCAzMTA4LCA5NzQ1LCA2NDE2NywgCisgICAgNjQxNjYsIDY0MTY1LCA2NDE2NCwgMjExMCwgOTIxNzYsIDY0MTY5LCA2NDE2OCwgNjQ5NDksIDEwOTcyLCAxMDI1MSwgCisgICAgMTAyNDcsIDQyNzY4LCA3MTUsIDIyOTUsIDQzMjk5LCA5NDUzLCA1MzQ4LCAxMDk0MywgNjYzOTAsIDAsIDExMzUyLCA1NTAsIAorICAgIDk5MTAsIDEyNTEyNywgMCwgNjY1NzksIDExNTUxLCAxMjg0NjQsIDE5NTA4MCwgOTUwNCwgNzE4NywgODI5NTcsIDEwMzczLCAKKyAgICA5ODMxNTMsIDEyMDM3NSwgMTAyNjEsIDEwMjUzLCA2NDA0LCAxMDI3NywgNzgxODMsIDExOTg0LCAxNTUyLCA2NTIyMiwgCisgICAgNjk5OCwgNzgxODAsIDcxNDI5LCAzMTI4LCA0Nzg5LCA1MDY3LCA1MDY2LCAxMTg4NDksIDQ3ODQsIDEyODM5NCwgODgyNywgCisgICAgMTE0NiwgNTA2NSwgNjk4OTAsIDc4MTkyLCA2ODEzNiwgNzgxOTAsIDQzNDEyLCA1MDY0LCAyNDMxLCAxOTQ5MjYsIDk0NTAsIAorICAgIDE4MDksIDk4MzU4OCwgNzgyMDAsIDc4MjAxLCA1MDYyLCAxMjY0LCA2NDgxNywgMTMyNTQsIDExNjk3LCAxMjY1OTgsIAorICAgIDk3ODUsIDY0NzE2LCAxMjgyNzksIDM5MzMsIDc0NTU5LCA0NzQwLCA3OTU0LCAxMjg3MzksIDEwMTEwMCwgNDI2MDksIAorICAgIDExOTg1NSwgNzQxNzUsIDY2OTEyLCAxMjcwMTYsIDAsIDEyMTMwMCwgNDIxMzAsIDEyMTA0NiwgNTE1MSwgMTIxMzQ2LCAKKyAgICA3MDc0MywgOTgzNzE1LCA5Mzk4MCwgOTE3ODAyLCA3NjIwLCAzODAwLCA2NTEyMiwgODM0ODcsIDgzNDgwLCA4MzU1LCAKICAgICA3ODU0LCA4MzQ4MywgOTU0LCA2NDkyNywgNDE4NSwgNDEwNDUsIDEyNzE0MSwgNDE0MzgsIDQxNDM5LCA2ODY2NiwgMTA3MTEsIAotICAgIDQ1OTMsIDgyOTkzLCAxMjA1ODQsIDk4MzQxMCwgNjQ3NzQsIDgwNTMsIDEwNTMyLCA2NjcyNywgOTgzNDE0LCAwLCA3ODY0MiwgCi0gICAgNjQ3NTksIDEzMjUsIDUxNjYsIDk4ODgsIDEyNzgwMCwgNTE0OCwgNDI4MzQsIDAsIDc4MjA1LCA3ODIwNiwgNDM3ODcsIAotICAgIDc4MjA0LCA0MzkxMywgMzExOSwgOTE3ODE0LCAwLCAzMDYwLCA2NDEzNSwgOTk4NiwgNzQ5OTYsIDc3ODc2LCA2MzYsIAotICAgIDExNjk4LCA4MzQ3NiwgODI5NjEsIDk5MTYsIDExNzAxLCA3ODM2LCA0Mjc0MSwgNjQxMzcsIDgzMjAsIDc4NjQwLCA4ODYzLCAKLSAgICA3MDIwMSwgMTE5OTYwLCAxNDc3LCA0MzI4OSwgNjg0OTIsIDY3MTY0LCA4NjE4LCA5ODM0MDQsIDk5MDgsIDc0OTcyLCAwLCAKLSAgICAwLCAzOTM3LCAxMjMxMiwgMCwgOTgzNDA1LCAwLCA2NDc4MSwgOTEyLCA2MzQ5LCA0NTM2LCA5Mzk1NCwgNzQ1MzIsIAotICAgIDEyNjU5NCwgNjI0NCwgOTIyMDksIDcxMzQxLCAzOTM1LCAxMjA2NjUsIDEyODk2OSwgMCwgMTE5NTAsIDUzOTIsIDQyMjQ4LCAKLSAgICA2NTEyOSwgNjg2NTYsIDUzOTcsIDEyODMxMCwgMTIwNDYsIDEyNTk5LCA2NzQwNywgMTI4MjYxLCA1Mzk1LCAwLCA1MzkzLCAKLSAgICAzNTQsIDY4NjE1LCA3Nzg1MywgNzQzNjYsIDEyMTQwNCwgMCwgNDIwMzksIDExMzgxNywgMCwgNjQxNDIsIDYyNiwgMCwgCi0gICAgNTg5NSwgMCwgNDM5MTAsIDU3ODAsIDAsIDEwMjIwLCAxMjEzMzcsIDQzOTA3LCA3MTEyMSwgNDMyOTcsIDcwMTg4LCA0MzExLCAKLSAgICA0NjQ0LCA4ODE4LCA3ODE1OCwgMTI4MTg2LCAxMjg4NjksIDcxNDUsIDM5MTgsIDY2NDUyLCAzNzk3LCAxNjQ0LCA5MjM0NiwgCi0gICAgOTY1OCwgNDE0MCwgMTEzODUsIDY1OTQ3LCA2NDU1LCA5MDMwLCA4MTMsIDExOTk0NSwgNjgxMzEsIDQxNDYsIDExOTk1NywgCi0gICAgNTM2MCwgMjQ2NiwgMCwgNjc2NjksIDk0MDIwLCA2MjQ5LCA0MjExNywgNjg4MjgsIDkyMjA2LCAxMjgwMjMsIDExOTI1NSwgCi0gICAgNzQwNDYsIDQzNzQ1LCA0OTExLCA5ODgsIDcxMTgwLCAwLCA5ODM0NzAsIDQzMDYxLCA3MDU0LCA2NDE0NywgOTgzODQ3LCAKLSAgICA2NDkyMCwgNjgxOTUsIDY2OTgsIDExODkzMywgOTI1MDYsIDAsIDcwODQ5LCAxMTk4MSwgMTIyMDIsIDE5NTA4NywgMTEwMzIsIAotICAgIDY3NjU0LCA2MDkzLCAxMTYwOCwgOTc1LCA2NjQxNSwgNjU4NDMsIDE3MCwgMCwgNjcyMzksIDQxNjksIDAsIDQxODU5LCAKLSAgICA2MDU4LCAxMjA0MDEsIDEzMjAzLCAxMjA2NTcsIDcwNTA3LCAxMjUwOTEsIDY4NjU3LCA5ODE4LCAxMDE3OCwgMTAzMjQsIAotICAgIDQyMTA2LCA1ODk4LCA3NDU0MCwgNDczOCwgNDE4NTYsIDcwNjIsIDEyNzEyMCwgNDczNywgMTE3NzksIDQ3NDIsIDgzNDI1LCAKLSAgICA2ODc1OCwgNjgzNDIsIDgzNDIwLCA5ODI1LCA2NDQ4LCA2NzE1LCAxMjcwMDgsIDQ4MzEsIDgzNDE4LCA4MzQxOSwgNjc3MzEsIAotICAgIDUzMDAsIDQ3NDEsIDQyMTA4LCAxMjcwNTcsIDY0MTU5LCA0NzM2LCA2NDE0OCwgOTI2MzQsIDg0OSwgOTIxOTEsIDc4NDkxLCAKLSAgICA0MzI4OCwgMCwgNjY2MjAsIDEyNzUzMywgMTI3MzMxLCA2NTU0OSwgOTQ5NiwgNjQ1OTgsIDExODg2NiwgOTgzMzY4LCAKLSAgICA3ODc2LCA2ODEzMiwgNjYyODAsIDM5MjgsIDkxNzg3MCwgNDMzNzgsIDEwNzA2LCA3MTk4LCAxMjA4OTAsIDQ4NDIsIAotICAgIDEyMDUzLCAxMjgxMjksIDY4NzQ2LCA0ODQxLCAwLCA0MTcxLCAxMjAwOCwgNjI1MSwgMzkyMywgMTQ5MCwgODM0MTEsIAotICAgIDgzNDEyLCAxMjY1MTIsIDQwOTcyLCA1MjQ1LCA3MDc5NCwgMTAxMTQsIDQyMDAxLCA0MTg4OCwgNDg0NSwgODMzMiwgCi0gICAgNDA5NzQsIDY0MzQ3LCA0ODQwLCA5MDc3LCA3ODM0NiwgMTc0NywgOTE3ODQ5LCA0ODI1LCA2OTI0MCwgMTIxNDQzLCAKLSAgICA2ODY1NSwgMCwgOTgzMzkwLCAwLCAwLCA2ODYyOCwgOTgzMzQ5LCA5ODUwLCAxMTg5MzcsIDM2NywgMTQ3MiwgOTE3ODU5LCAKLSAgICA2Njg3LCAxMjc0LCAxOTUwMjIsIDU5MDUsIDEyMzM5LCA4OTE5LCA3Mzk1MywgMTA5MDcsIDY1MjYxLCAxMTAyMywgCi0gICAgMTE5NTU5LCA0ODMwLCA5MTM0LCA3ODY2NiwgNjQxMjYsIDQzMDExLCA4MzI5NywgNzg2NjksIDY0MTAxLCAwLCAxMjg0MzQsIAotICAgIDQ4MjQsIDEwNjE0LCAxMTk2NTksIDEyNjk5MywgMTg4OCwgMTk2MCwgNzg2MSwgODM0MTYsIDc4NTI0LCA0MTgzNiwgCi0gICAgNDMwMTIsIDYwNTIsIDYwNjQsIDU0LCA0MzAwOSwgMTIyMTQsIDgzMjYwLCA2MjExLCAxMjAzODYsIDM1OCwgNDE5OTcsIAotICAgIDQxODMzLCAxMTQ0MiwgMTA3NTgsIDY1Nzc0LCAxMTM4MjMsIDEyMDM4NCwgNjQxMTUsIDkyMjIxLCA3MDAxOCwgOTgzNjExLCAKLSAgICA5ODM3MDgsIDExOTA1MywgMCwgMTI3NjUsIDY0MTE4LCAxMjY5OTgsIDEyOTYyLCAwLCAxMjY1ODAsIDQwMTcsIDEyODI3LCAKLSAgICA1MjQxLCAxMjAzOTIsIDAsIDQxMTE4LCAzOTI0LCA5ODM4OTQsIDExMzY2LCAxMjkwODQsIDAsIDAsIDgzNDAxLCA0MTExNiwgCisgICAgNDU5MywgODI5OTMsIDEyMDU4NCwgMTI4NjY5LCA2NDc3NCwgODA1MywgMTA1MzIsIDY2NzI3LCAxMjc1MDUsIDk4MzU5NCwgCisgICAgNjY3OTUsIDY0NzU5LCAxMzI1LCA1MTY2LCA5ODg4LCAxMjc4MDAsIDUxNDgsIDQyODM0LCAwLCA3ODIwNSwgNzgyMDYsIAorICAgIDQzNzg3LCA3ODIwNCwgNDM5MTMsIDMxMTksIDEyNzI1NywgMCwgMzA2MCwgNjQxMzUsIDk5ODYsIDc0OTk2LCA3Nzg3NiwgCisgICAgNjM2LCAxMTY5OCwgODM0NzYsIDgyOTYxLCA5OTE2LCAxMTcwMSwgNzgzNiwgNDI3NDEsIDY0MTM3LCA4MzIwLCA3ODY0MCwgCisgICAgODg2MywgNzAyMDEsIDExOTk2MCwgMTQ3NywgNDMyODksIDY4NDkyLCA2NzE2NCwgODYxOCwgOTgzNDA0LCA5OTA4LCAKKyAgICA3NDk3MiwgMCwgMTE5MTQ3LCAzNDE0LCAxMjMxMiwgMTIwODMyLCAxMjA3MjcsIDEyMTI2NCwgNjQ3ODEsIDkxMiwgNjM0OSwgCisgICAgNDUzNiwgOTM5NTQsIDc0NTMyLCAxMjY1OTQsIDYyNDQsIDkyMjA5LCA3MTM0MSwgMzkzNSwgMTIwNjY1LCAxMjgzMTYsIDAsIAorICAgIDExOTUwLCA1MzkyLCA0MjI0OCwgNjUxMjksIDY4NjU2LCA1Mzk3LCAxMjgzMTAsIDEyMDQ2LCAxMjU5OSwgNjc0MDcsIAorICAgIDEyNjU0MiwgNTM5NSwgNzI4NzAsIDUzOTMsIDM1NCwgNjg2MTUsIDc3ODUzLCA3NDM2NiwgMTIxNDA0LCAxMjEyNjYsIAorICAgIDQyMDM5LCAxMTM4MTcsIDEyODY3MSwgNjQxNDIsIDYyNiwgMTI4MjQ0LCA1ODk1LCA5ODM1NzMsIDQzOTEwLCA1NzgwLCAwLCAKKyAgICAxMDIyMCwgMTIxMzM3LCA0MzkwNywgNzExMjEsIDQzMjk3LCA3MDE4OCwgNDMxMSwgNDY0NCwgODgxOCwgNzgxNTgsIAorICAgIDEyODE4NiwgMTI4ODY5LCA3MTQ1LCAzOTE4LCA2NjQ1MiwgMzc5NywgMTY0NCwgOTIzNDYsIDk2NTgsIDQxNDAsIDExMzg1LCAKKyAgICA2NTk0NywgNjQ1NSwgOTAzMCwgODEzLCAxMTk5NDUsIDY4MTMxLCA0MTQ2LCAxMTk5NTcsIDUzNjAsIDI0NjYsIDcwNjY5LCAKKyAgICA2NzY2OSwgOTQwMjAsIDYyNDksIDQyMTE3LCA2ODgyOCwgOTIyMDYsIDEyODAyMywgMTAxMDQ4LCA3NDA0NiwgNDM3NDUsIAorICAgIDQ5MTEsIDk4OCwgNzExODAsIDk4MzMzNywgOTgzNDcwLCA0MzA2MSwgNzA1NCwgNjQxNDcsIDEwMTA0MiwgNjQ5MjAsIAorICAgIDY4MTk1LCA2Njk4LCAxMTg5MzMsIDkyNTA2LCAwLCA3MDg0OSwgMTE5ODEsIDEyMjAyLCAxOTUwODcsIDExMDMyLCA2NzY1NCwgCisgICAgNjA5MywgMTE2MDgsIDk3NSwgNjY0MTUsIDY1ODQzLCAxNzAsIDAsIDY3MjM5LCA0MTY5LCAxMTk5MzgsIDQxODU5LCA2MDU4LCAKKyAgICAxMjA0MDEsIDEzMjAzLCAxMjA0MDIsIDcwNTA3LCAxMjA0MDMsIDY4NjU3LCA5ODE4LCAxMDE3OCwgMTAzMjQsIDQyMTA2LCAKKyAgICA1ODk4LCA3NDU0MCwgNDczOCwgNDE4NTYsIDcwNjIsIDEyMDE0MiwgNDczNywgMTE3NzksIDQ3NDIsIDgzNDI1LCA2ODc1OCwgCisgICAgNjgzNDIsIDQxMzc0LCA5ODI1LCA2NDQ4LCA2NzE1LCAxMjcwMDgsIDQ4MzEsIDgzNDE4LCA4MzQxOSwgNjc3MzEsIDUzMDAsIAorICAgIDQ3NDEsIDQyMTA4LCAxMjcwNTcsIDY0MTU5LCA0NzM2LCA2NDE0OCwgOTI2MzQsIDg0OSwgOTIxOTEsIDc4NDkxLCA0MzI4OCwgCisgICAgMCwgNjY2MjAsIDEyNzUzMywgMTI3MzMxLCA2NTU0OSwgOTQ5NiwgNjQ1OTgsIDExODg2NiwgOTgzMzY4LCA3ODc2LCAKKyAgICA2ODEzMiwgNjYyODAsIDM5MjgsIDkxNzg3MCwgNDMzNzgsIDEwNzA2LCA3MTk4LCAxMjA4OTAsIDQ4NDIsIDEyMDUzLCAKKyAgICAxMjgxMjksIDY4NzQ2LCA0ODQxLCAxMjkzMzQsIDQxNzEsIDEyMDA4LCA2MjUxLCAzOTIzLCAxNDkwLCA4MzQxMSwgODM0MTIsIAorICAgIDEyNjUxMiwgNDA5NzIsIDUyNDUsIDcwNzk0LCAxMDExNCwgNDIwMDEsIDQxODg4LCA0ODQ1LCA4MzMyLCA0MDk3NCwgCisgICAgNjQzNDcsIDQ4NDAsIDkwNzcsIDc4MzQ2LCAxNzQ3LCA3Mjg1MSwgNDgyNSwgNjkyNDAsIDEyMTQ0MywgNjg2NTUsIDAsIAorICAgIDEyODUzNywgMCwgMCwgNjg2MjgsIDk4MzM0OSwgOTg1MCwgMTE4OTM3LCAzNjcsIDE0NzIsIDkxNzg1OSwgNjY4NywgMTI3NCwgCisgICAgMTk1MDIyLCA1OTA1LCAxMjMzOSwgODkxOSwgNzM5NTMsIDEwOTA3LCA2NTI2MSwgMTEwMjMsIDExOTU1OSwgNDgzMCwgCisgICAgOTEzNCwgNzg2NjYsIDY0MTI2LCA0MzAxMSwgODMyOTcsIDc4NjY5LCA2NDEwMSwgMCwgMTI4NDM0LCA0ODI0LCAxMDYxNCwgCisgICAgMTE5NjU5LCAxMjY5OTMsIDE4ODgsIDE5NjAsIDc4NjEsIDgzNDE2LCA3ODUyNCwgNDE4MzYsIDQzMDEyLCA2MDUyLCA2MDY0LCAKKyAgICA1NCwgNDMwMDksIDEyMjE0LCA4MzI2MCwgNjIxMSwgMTIwMzg2LCAzNTgsIDQxOTk3LCA0MTgzMywgMTE0NDIsIDEwNzU4LCAKKyAgICA2NTc3NCwgMTEzODIzLCAxMjAzODQsIDY0MTE1LCA5MjIyMSwgNzAwMTgsIDk4MzYxMSwgOTgzNzA4LCA5MjQwOCwgCisgICAgMTI4MDgyLCAxMjc2NSwgNjQxMTgsIDEyNjk5OCwgMTI5NjIsIDExOTYzMiwgMTI2NTgwLCA0MDE3LCAxMjgyNywgNTI0MSwgCisgICAgMTIwMzkyLCAxMjc5MDAsIDQxMTE4LCAzOTI0LCA5ODM4OTQsIDExMzY2LCAxMjkwODQsIDAsIDAsIDgzNDAxLCA0MTExNiwgCiAgICAgODM0MDMsIDgzNDA0LCA4MzM5NywgMTEzNjMsIDEyMDU3LCAxMTkxNywgMTU2NywgNzQwMDAsIDQ3MjEsIDgzMzk2LCAKLSAgICA2NjIwMiwgODk1NywgNDEzOSwgNzA1MTIsIDAsIDk4MzA3NCwgMCwgMCwgMTI3NDAsIDEyMTQ3MCwgNDcyMiwgNjgxNiwgCi0gICAgMTI0OTc0LCAxMjc1OSwgNDcyNSwgNjcwOTksIDQ3MjYsIDgzNDY3LCA4MzQ2OCwgOTgzNjIyLCA3MDAyOSwgODM0NjMsIAotICAgIDc0OTEzLCAxMjc1NSwgMTI3NjIsIDQwMTUsIDY3NjkwLCA4MDUyLCA0NzYsIDAsIDc0ODkzLCAxMjgyOTQsIDY0MjEyLCAKLSAgICA0MTAyMCwgMTM4MiwgNjQyMDksIDY0MjE2LCA0NDAwMiwgNjQyMTQsIDE2NTYsIDQxODMxLCAxMjc1NTMsIDEyNTEyMSwgCi0gICAgNDE4NDMsIDg3MjAsIDM5MDgsIDE0NTIsIDEzMTExLCA5ODM0MjEsIDY0MDY3LCA5MjI4NywgODU1MiwgNjQxMTMsIDQxODQ1LCAKLSAgICAzODQ5LCA3ODczMiwgNjYyMzIsIDk3NzgsIDEyMDA2NiwgNTg5MSwgNzA2NCwgNTUsIDk5NDgsIDExOTA4NSwgODMzMDIsIAotICAgIDkxNzYxMCwgNzkzNSwgMjQyMCwgMCwgMTExNCwgNzgxMjAsIDY3NTg1LCA3MDEwNCwgNzA0MzIsIDgzNDQ3LCA3NDkyMCwgCi0gICAgMzkzOCwgMTIwMDU3LCA2NTQxNywgNjQ3MTcsIDEyMDA2MCwgNzE5MjAsIDY1NDE1LCA2Njg4NCwgNjI5MiwgNjUzMDMsIAotICAgIDc5NTUsIDY0NTIsIDQ3MTMsIDEyODE5NiwgNjYyNDksIDkxNzg4NSwgMTk0NzY2LCAxMjkwNzMsIDY1MTUyLCA3MTksIAotICAgIDEyMDA0NCwgNzg2MjMsIDEyMDA0MiwgNjcxMywgNDUzMiwgNjU0MTIsIDY5ODIyLCAxMDg2OCwgNDcxNywgMjM0OSwgNTkwMiwgCi0gICAgNjY0NTAsIDQ3MTIsIDc1MDU1LCA5MTc4OTksIDY1NDAwLCA2NTQxNiwgODE1NSwgNDcxOCwgMzk0MiwgNDcxNCwgOTYyNSwgCi0gICAgMCwgNjM4MywgMTk0NzQ0LCAxMjAwNiwgMTI4NTY1LCAxOTQ3ODksIDAsIDExMzc1NiwgMCwgNjU0MTQsIDY0NTQsIDEyMjksIAotICAgIDgzNDU3LCA2NjQzNywgNjYwMjUsIDc4Njk5LCA4MzQ1MiwgNDI1MDAsIDEyMDUwOCwgNDgwOSwgOTYyMywgMTI5MTM3LCAKLSAgICA3ODY5NCwgMTIxMTczLCAxMjg3NzcsIDkxNzg1OCwgNjU0MDUsIDY4MTU5LCAxMjg5MywgNzg2MTcsIDUzNjUsIDQ1NDUsIAotICAgIDg5MDEsIDkyNDIxLCAxMTk1NTUsIDQ4MTMsIDEyODI2MiwgMTk0NzI5LCA1OTI1LCA0ODA4LCA2NDMzMCwgMTI4NDAwLCAKLSAgICA2NTQ3NSwgODM0MzIsIDY4MjQ0LCA0ODE0LCA4MzQyNywgNDgxMCwgODM0MjksIDgzNDMwLCA2NDkyOCwgMTA1NDMsIAotICAgIDcxMjQ5LCAzNTIyLCA3MTMzNSwgNDE0LCA2NTQwNCwgMCwgODM0NDIsIDY0NTYsIDczODIwLCA4MzQ0NSwgNjY5MSwgCi0gICAgNDIxOTMsIDY2Mjg0LCA4MzQ0MSwgMCwgNjgzMzcsIDAsIDQzODU4LCA0MzgzMiwgMTE4ODIwLCA5NzUxLCA2NTQwNywgCi0gICAgMTI4MDg1LCAxMTc3MCwgMzkxOSwgMTIwNzI0LCAwLCA2NTA2MSwgOTgzOTQ1LCA5MTc4OTQsIDEyOTE0MiwgMTIyMzUsIAotICAgIDEyODU3MiwgOTI3MDEsIDEyMTA4NywgNjQwOTIsIDY4NzM5LCA2NDA4MCwgMTI5MDYzLCA2NDA5MCwgOTgzNTg2LCA2OTkxMywgCi0gICAgMTAxNjIsIDEwMzEwLCAxMjEyMTAsIDg0NTQsIDEyMTM4NywgNDIwMzgsIDM4NywgNDEzNjMsIDEyNzM3LCAwLCA0NzgwLCAKLSAgICA0MzM2OCwgMCwgNjQzMTAsIDY0NjIxLCA2NzMyLCA3ODExNiwgMCwgMTIxMjk1LCAxOTUwMjQsIDkyMTkzLCA4ODk2LCAwLCAKLSAgICAzNzUsIDY5NzYsIDY2NTgyLCAxMTkwMDUsIDc0OTk3LCAxMjczMjUsIDk4MzQzNiwgMTE5MjAyLCAxMTkyMDMsIDEyNTI2LCAKLSAgICA0MzEyMCwgMjMxNSwgMCwgMTkzOCwgMTE5MTk3LCAxMjg0NTIsIDQ1MjksIDExOTIwMCwgMTE5MjAxLCAxMTkxOTgsIAotICAgIDExOTE5OSwgNjk2OTIsIDEyOTEyNCwgNjk2OTgsIDEzMTUwLCA2NDQ5MiwgMTI4OTc0LCA3ODc2MSwgMjI5MSwgMTI5MDIsIAotICAgIDAsIDQyODkxLCA2NjMyNywgNzA1MDIsIDkxNzg1NywgMTA3OTksIDY5NjkwLCAyNTg3LCA2NjM3MiwgMTI4NjI4LCA0MTkzLCAKLSAgICA2NjgyMywgNDI0MSwgMTI5MTk1LCA3OTk4LCA4MzI3NiwgMCwgMTI3MDA5LCAxMjY2NDAsIDIzMTYsIDExODgyMSwgMCwgCi0gICAgOTgzOTM0LCAwLCA2NDI5NywgNzQ3OTksIDkyNDQyLCA3NDE0MCwgMTI4MTQ4LCA1MzczLCAxMjg3OTgsIDcwMzcwLCAzNzYyLCAKLSAgICAxMDAxNSwgMTIwNjcyLCAxMTkyMzIsIDEyNTEwOSwgNDE1OTAsIDAsIDcwMDk4LCAzNzgwLCA3NDg1LCA1Nzc5LCA5MTc4OTgsIAotICAgIDQyMDM3LCAwLCAzOTA2LCAxMjM0OSwgNzQ3OTMsIDgzMjYsIDEyNzMzMywgNjU0OTgsIDM3NjMsIDY5ODMsIDU2MTgsIDAsIAotICAgIDM3NzksIDk4MzE5NCwgNDM2MTMsIDcwMTMyLCAwLCA4MzI4OCwgNzgzMzUsIDgzMjg5LCAwLCAyODAsIDc0NTU4LCAKLSAgICAxMjEzNTMsIDY3Mzk2LCAxMzA3MiwgMTg5NCwgODMyOTEsIDY3NzM1LCA2NTQ3OCwgNDMzMTAsIDcyMzEsIDAsIDExNzczLCAKLSAgICAwLCAxMTkxNjUsIDExMTQ0LCA5MTc3NzgsIDI1NTEsIDAsIDY0NTMsIDEwMjAwLCA2MjM1LCA5ODM3NTIsIDExOTIzNywgCi0gICAgNzE4NzcsIDEyODY2OSwgNDQ3MCwgMTE4MjYsIDkxNzU1NywgNzc4MCwgNTM2OSwgMTE4OTU4LCA1MjQ5LCA5ODMwNjYsIAotICAgIDUzNjcsIDg3NTYsIDEyNzE0MywgMTE5MTgzLCA1Mzc3LCAxMjA1ODUsIDY4MTQzLCAxNjg4LCA3ODI0NSwgNTIxOCwgCi0gICAgNjk2ODUsIDk4Mzc1NiwgMCwgMTEzNzk0LCA0NDAyMCwgNjgwOCwgNDEzMTksIDEzMDAsIDEwNjUwLCA0MTY5MiwgNjQ1MDUsIAotICAgIDIyOTAsIDcxMDU3LCAxMTk2MjQsIDE0NjUsIDEwODUwLCAzOTQzLCAwLCA0MTIwNSwgNDEzMTUsIDExODk2MSwgMTE5MzMzLCAKLSAgICA2NzE0OCwgNTM1MiwgMTEzNzUzLCAwLCA4ODM5LCA0MTMxNCwgNzM4NCwgNzc4NSwgNDEyMDQsIDEyNzMyMiwgNDEyMDksIAotICAgIDY5NjM3LCA5MjI0MSwgNDM2MDcsIDcxMjU0LCAwLCA1NDIwLCAzODk3LCAxMDEzNCwgMTIwMzgxLCA3NDQxNywgNDAxOCwgCi0gICAgNzE1MCwgNjgxMjcsIDcxNDI1LCAwLCAxMjE0MjcsIDEyNzg2NCwgMTI3NTI2LCAyNTYxLCA2ODYyMSwgMzU0MiwgNzE0OCwgCisgICAgNjYyMDIsIDg5NTcsIDQxMzksIDcwNTEyLCAxMjcxMTUsIDk4MzA3NCwgMCwgMTIyOTA3LCAxMjc0MCwgMTIxNDcwLCA0NzIyLCAKKyAgICA2ODE2LCAxMjQ5NzQsIDEyNzU5LCA0NzI1LCA2NzA5OSwgNDcyNiwgODM0NjcsIDgzNDY4LCA5ODM2MjIsIDcwMDI5LCAKKyAgICA4MzQ2MywgNzQ5MTMsIDEyNzU1LCAxMjc2MiwgNDAxNSwgNjc2OTAsIDgwNTIsIDQ3NiwgMCwgNzQ4OTMsIDEyODI5NCwgCisgICAgNjQyMTIsIDQxMDIwLCAxMzgyLCA2NDIwOSwgNjQyMTYsIDQ0MDAyLCA2NDIxNCwgMTY1NiwgNDE4MzEsIDEyNzU1MywgCisgICAgMTI1MTIxLCA0MTg0MywgODcyMCwgMzkwOCwgMTQ1MiwgMTMxMTEsIDE5NTA5NiwgNjQwNjcsIDkyMjg3LCA4NTUyLCAKKyAgICA2NDExMywgNDE4NDUsIDM4NDksIDc4NzMyLCA2NjIzMiwgOTc3OCwgMTIwMDY2LCA1ODkxLCA3MDY0LCA1NSwgOTk0OCwgCisgICAgMTE5MDg1LCA4MzMwMiwgOTE3NjEwLCA3OTM1LCAyNDIwLCA3Mzg2MSwgMTExNCwgNzgxMjAsIDY3NTg1LCA3MDEwNCwgCisgICAgNzA0MzIsIDgzNDQ3LCA3NDkyMCwgMzkzOCwgMTIwMDU3LCA2NTQxNywgNjQ3MTcsIDEyMDA2MCwgNzE5MjAsIDY1NDE1LCAKKyAgICA2Njg4NCwgNjI5MiwgNjUzMDMsIDc5NTUsIDY0NTIsIDQ3MTMsIDEyODE5NiwgNjYyNDksIDkxNzg4NSwgMTk0NzY2LCAKKyAgICAxMjkwNzMsIDY1MTUyLCA3MTksIDEyMDA0NCwgNzg2MjMsIDEyMDA0MiwgNjcxMywgNDUzMiwgNjU0MTIsIDY5ODIyLCAKKyAgICAxMDg2OCwgNDcxNywgMjM0OSwgNTkwMiwgNjY0NTAsIDQ3MTIsIDc1MDU1LCA5MTc4OTksIDY1NDAwLCA2NTQxNiwgODE1NSwgCisgICAgNDcxOCwgMzk0MiwgNDcxNCwgOTYyNSwgOTgzMjkzLCA2MzgzLCAxOTQ3NDQsIDEyMDA2LCAxMjg1NjUsIDE5NDc4OSwgCisgICAgMTIxMjI2LCAxMTM3NTYsIDk4MzQ1OCwgNjU0MTQsIDY0NTQsIDEyMjksIDgzNDU3LCA2NjQzNywgNjYwMjUsIDc4Njk5LCAKKyAgICA4MzQ1MiwgNDI1MDAsIDEyMDUwOCwgNDgwOSwgOTYyMywgMTI5MTM3LCA3ODY5NCwgMTIxMTczLCAxMjg3NzcsIDkxNzg1OCwgCisgICAgNjU0MDUsIDY4MTU5LCAxMjg5MywgNzg2MTcsIDUzNjUsIDQ1NDUsIDg5MDEsIDkyNDIxLCAxMTk1NTUsIDQ4MTMsIAorICAgIDEyODI2MiwgMTk0NzI5LCA1OTI1LCA0ODA4LCA2NDMzMCwgMTI4NDAwLCA2NTQ3NSwgODM0MzIsIDY4MjQ0LCA0ODE0LCAKKyAgICA4MzQyNywgNDgxMCwgODM0MjksIDgzNDMwLCA2NDkyOCwgMTA1NDMsIDcxMjQ5LCAzNTIyLCA3MTMzNSwgNDE0LCA2NTQwNCwgCisgICAgOTIzMjksIDgzNDQyLCA2NDU2LCA3MzgyMCwgODM0NDUsIDY2OTEsIDQyMTkzLCA2NjI4NCwgODM0NDEsIDAsIDY4MzM3LCAwLCAKKyAgICA0Mzg1OCwgNDM4MzIsIDExODgyMCwgOTc1MSwgNjU0MDcsIDEyODA4NSwgMTE3NzAsIDM5MTksIDEyMDcyNCwgOTgzNTk2LCAKKyAgICA2NTA2MSwgNzgxMTUsIDkxNzg5NCwgMTI5MTQyLCAxMjIzNSwgMTI4NTcyLCA5MjcwMSwgMTIxMDg3LCA2NDA5MiwgNjg3MzksIAorICAgIDY0MDgwLCAxMjkwNjMsIDY0MDkwLCAxMjUyNjcsIDY5OTEzLCAxMDE2MiwgMTAzMTAsIDEyMTIxMCwgODQ1NCwgMTIxMzg3LCAKKyAgICA0MjAzOCwgMzg3LCA0MTM2MywgMTI3MzcsIDAsIDQ3ODAsIDQzMzY4LCAwLCA2NDMxMCwgNjQ2MjEsIDY3MzIsIDc4MTE2LCAKKyAgICAwLCAxMjEyOTUsIDE5NTAyNCwgOTIxOTMsIDg4OTYsIDAsIDM3NSwgNjk3NiwgNjY1ODIsIDExOTAwNSwgNzQ5OTcsIAorICAgIDEyNzMyNSwgOTgzNDM2LCAxMTM3NTcsIDExOTIwMywgMTI1MjYsIDQzMTIwLCAyMzE1LCAwLCAxOTM4LCAxMTkxOTcsIAorICAgIDEyODQ1MiwgNDUyOSwgMTE5MjAwLCAxMTkyMDEsIDExOTE5OCwgMTE5MTk5LCA2OTY5MiwgMTI5MTI0LCA2OTY5OCwgCisgICAgMTMxNTAsIDY0NDkyLCAxMjg5NzQsIDc4NzYxLCAyMjkxLCAxMjkwMiwgMTI4MTQwLCA0Mjg5MSwgNjYzMjcsIDcwNTAyLCAKKyAgICAxMjk0MjUsIDEwNzk5LCA2OTY5MCwgMjU4NywgNjYzNzIsIDEwMDU3NiwgNDE5MywgNjY4MjMsIDQyNDEsIDEyOTE5NSwgCisgICAgNzk5OCwgODMyNzYsIDAsIDEyNzAwOSwgMTI2NjQwLCAyMzE2LCAxMTg4MjEsIDAsIDk4MzkzNCwgMTI3NDc4LCA2NDI5NywgCisgICAgNzQ3OTksIDkyNDQyLCA3NDE0MCwgMTI4MTQ4LCA1MzczLCAxMjg3OTgsIDcwMzcwLCAzNzYyLCAxMDAxNSwgMTIwNjcyLCAKKyAgICAxMTkyMzIsIDEyNTEwOSwgNDE1OTAsIDk4Mzg2NSwgNzAwOTgsIDM3ODAsIDc0ODUsIDU3NzksIDkxNzg5OCwgNDIwMzcsIDAsIAorICAgIDM5MDYsIDEyMzQ5LCA3NDc5MywgODMyNiwgMTI3MzMzLCA2NTQ5OCwgMzc2MywgNjk4MywgNTYxOCwgMCwgMzc3OSwgCisgICAgOTgzMTk0LCA0MzYxMywgNzAxMzIsIDAsIDgzMjg4LCA3ODMzNSwgODMyODksIDEyOTQxOSwgMjgwLCA3NDU1OCwgMTIxMzUzLCAKKyAgICA2NzM5NiwgMTMwNzIsIDE4OTQsIDgzMjkxLCA2NzczNSwgNjU0NzgsIDQzMzEwLCA3MjMxLCAwLCAxMTc3MywgMTIxMzE0LCAKKyAgICAxMTkxNjUsIDExMTQ0LCA5MTc3NzgsIDI1NTEsIDAsIDY0NTMsIDEwMjAwLCA2MjM1LCA5ODM3NTIsIDExOTIzNywgNzE4NzcsIAorICAgIDcyODg2LCA0NDcwLCAxMTgyNiwgOTE3NTU3LCA3NzgwLCA1MzY5LCAxMTg5NTgsIDUyNDksIDExOTk0OSwgNTM2NywgODc1NiwgCisgICAgMTI3MTQzLCAxMTkxODMsIDUzNzcsIDEyMDU4NSwgNjgxNDMsIDE2ODgsIDc4MjQ1LCA1MjE4LCA2OTY4NSwgMTk0OTE4LCAwLCAKKyAgICAxMDA3ODAsIDQ0MDIwLCA2ODA4LCA0MTMxOSwgMTMwMCwgMTA2NTAsIDQxNjkyLCA2NDUwNSwgMjI5MCwgNzEwNTcsIAorICAgIDExOTYyNCwgMTQ2NSwgMTA4NTAsIDM5NDMsIDEyNzUzNywgNDEyMDUsIDQxMzE1LCAxMTg5NjEsIDExOTMzMywgNjcxNDgsIAorICAgIDUzNTIsIDExMzc1MywgMCwgODgzOSwgNDEzMTQsIDczODQsIDc3ODUsIDQxMjA0LCAxMjczMjIsIDQxMjA5LCA2OTYzNywgCisgICAgOTIyNDEsIDQzNjA3LCA3MTI1NCwgODM0NDQsIDU0MjAsIDM4OTcsIDEwMTM0LCAxMjAzODEsIDc0NDE3LCA0MDE4LCA3MTUwLCAKKyAgICA2ODEyNywgNzE0MjUsIDcwNjg4LCAxMjE0MjcsIDEyNzg2NCwgMTI3NTI2LCAyNTYxLCA2ODYyMSwgMzU0MiwgNzE0OCwgCiAgICAgMTIwNzYsIDc5NTEsIDY4MTUyLCAxMTg4NTcsIDUzMDMsIDYyNzYsIDE3MDYsIDEyMDc1MCwgNzg3NTEsIDcxNDYsIAotICAgIDk4MzY4MiwgNjUxNTAsIDQxODE5LCAwLCA3Mzk1MSwgMTA4NDcsIDQxODIyLCA5OTg1LCA4NjAsIDAsIDEwNTA2LCAKLSAgICA5ODM0MzcsIDY5NjQxLCAxMDc1MywgMTA4MzAsIDExOTMzOSwgNjE1LCA2NDQ5MCwgNzU3NCwgNzQwODIsIDc3OTIyLCAwLCAKLSAgICAxMjkwOSwgNDMwMTYsIDY0NTU5LCAxMjcwMjgsIDAsIDEyMTIzMSwgNjc5OTYsIDIwMjAsIDEyODc5MCwgNDAyMiwgCi0gICAgMTI4NzgzLCAxMjA3MDEsIDc3OTIzLCAxMjY1OTMsIDQxNjkxLCAwLCA3NTA2MCwgNzQzMjksIDAsIDY0NjIyLCA5MDcwLCAwLCAKLSAgICA2ODQxMSwgMzkxMSwgNDI4MjksIDQzMTIyLCAxMDMzLCA3NDQ0MCwgOTgzODEzLCA3MDAwLCAzOTA0LCA5ODM2MjgsIAotICAgIDczNzM3LCAxMjUxMDUsIDExODkzMSwgMTE5NjMwLCAxMzEyMywgMTA4NDYsIDM0NTAsIDEyNzM2MCwgNzM5NywgMTE4ODA3LCAKLSAgICA5MTc4OTEsIDQyNzc4LCAxMDAwMCwgNDEwODgsIDQ0OSwgMCwgMzc3NywgNjg0NTgsIDExMzcyNSwgOTYzNiwgMCwgMTA3MzgsIAotICAgIDY5NjM0LCA5MzY3LCA1OTMsIDQxMDg1LCAzOTk5LCA2NTIyNiwgNDE3MTMsIDEyNzY0LCA5ODM3MjMsIDY0NDA5LCAzNTk2LCAKLSAgICAxMjkwNDQsIDEyODA5MCwgOTc2MywgMTIwMjgwLCA3NDYwOSwgMTIzNDcsIDEyNCwgMTI5ODEsIDQxMTI3LCAyMDkyLCAKLSAgICA5MjY4NywgMCwgMTI3NTU1LCAxOTQ2MzIsIDEwODIwLCA0Mzk4NywgMCwgMTI4OTA3LCAxNzY5LCA0MTcxNSwgMjQ2MywgCi0gICAgNzEyMTQsIDgzMDcwLCAxMjc3MCwgNzEyMjIsIDE1MzgsIDkyNjE3LCA0MzEyNCwgMTk0NjE0LCAxOTUwNTgsIDc3OTUsIAotICAgIDEyMDMwMCwgMTI5MDUzLCA0ODI4LCAxMjU4LCAxMjc4MDIsIDIwMDYsIDAsIDEyMTEzMCwgOTQ5OCwgMTI3MDMyLCAKLSAgICAxMjcwMzMsIDEyMDI4OSwgMTIwMjg4LCAzOTM5LCAxMjAyOTAsIDg4NDYsIDg5NDMsIDEyMDI4NywgMTIwMjg2LCAyNjUwLCAKLSAgICA0NDkxLCAxOTYxLCA0MjYwMiwgMTE1MjUsIDEyMDI5MiwgMTk1OSwgMTIwMjk0LCA1NTIyOCwgMTE3NzQsIDQxMDE2LCAKLSAgICA5ODMyNjIsIDY4Njc1LCAxMjgwNTQsIDE1MTEsIDkzMjQsIDc4MjExLCAxMDUxOSwgNjYzMzEsIDM0NTQsIDE5OTMwLCAwLCAKLSAgICA0MTAxOSwgMTI3OTQ0LCAwLCA2NTI5MiwgNjgyMiwgMTI4NjIsIDAsIDAsIDQyMTQzLCA0MTgyOCwgNzgyMDcsIDY1NTMxLCAKLSAgICA3MDg2NCwgMTE4ODc5LCA1NTIyMywgMCwgMTI4MDcxLCA0MTgyNiwgODg2NSwgNjQwMiwgMTEzODI3LCAxMzI3OSwgNzkxNywgCi0gICAgNzQ3NTUsIDkxNzk0OCwgNzczMywgOTgzNDA4LCA0OTk4LCA2ODQ5MywgOTIzMzIsIDQxOTUwLCAwLCA0MjY4LCAxOTQ3OTAsIAotICAgIDE5NTA1NiwgNzAwNjEsIDQwMTMsIDEyODcxOCwgMTA4ODEsIDAsIDk4MzE2MywgMCwgNzQ3ODgsIDIwMTQsIDI0MzIsIAotICAgIDcxOTAxLCA5NzY1LCAxOTUwNTIsIDAsIDkxNzg1NCwgMTk1MDU5LCA3ODM1NywgNjUyODEsIDEyNzgyNSwgMTA5NDksIDAsIAotICAgIDAsIDExOTMxNSwgMjAxNSwgMTIxMDg4LCA5Mjc2NSwgNzE4NDAsIDY2MzE4LCA0MzIzMywgOTE3OTkyLCA0MjUxNywgCi0gICAgNjgwNjAsIDAsIDAsIDEyNjk4LCA4MDk0LCAxMDEzNSwgNjU5MDksIDY0NzQsIDc5NCwgNDM0OTcsIDEyNjU2LCA2NjMzNSwgCi0gICAgMTE5MzUzLCA2NzI3OSwgMTY2NSwgNzE4NTMsIDQ4MzMsIDkxNzk4NSwgNzExODgsIDEyNzM2NywgMTIxNDY0LCAxODksIAotICAgIDEyNjExLCAwLCA5ODM0MjAsIDI4NTksIDQ4MzgsIDk4MzkzMCwgNDgzNCwgNjUwNzgsIDAsIDkyOTkxLCA0ODM3LCA2NzQxMywgCi0gICAgNzcwLCA5MjY3MSwgODExLCA3MDA2MiwgNDEwNDIsIDgzMDczLCA0MTMxOCwgNjQ0MjcsIDczOTk5LCA2NzY5MywgNzg4NDgsIAotICAgIDM4OTUsIDkyNjE1LCA3NDM0MSwgMzk3NiwgMTI4NDY2LCA0Mjg1OSwgMTAxOTMsIDMxMTYsIDc3NDcsIDc4NDg4LCAwLCAKLSAgICA0MzQ5NiwgMCwgMTIxMDE1LCA0MzY4NiwgNzg4NDYsIDQxODc3LCA5ODM3NDMsIDI4NzEsIDY0NjE0LCA2ODg0MywgOTk5LCAKLSAgICA5ODM4NDQsIDYzNDUsIDQxODc2LCAyNjYzLCAyMDE3LCAxMjEyMzQsIDY3ODI0LCAxMTA0MCwgMTAxNTAsIDEyMDY3OCwgCi0gICAgNjQzMDgsIDE1MjIsIDU5NywgNDc3NSwgMTI1NTUsIDEyNTcxLCAxMjU1MCwgMTI1ODMsIDEyNTYwLCAyMDE5LCAxMjU1NiwgCi0gICAgMTI1ODQsIDMwOTIsIDAsIDEyNTYyLCA0NzgzLCAxMjU2NiwgMTI1NjksIDEyNTU0LCA4MzM0NCwgMTA4MTIsIDc4ODUxLCAwLCAKLSAgICA4MzM0MiwgMzA3OCwgMTQwMiwgMCwgODMzNDgsIDAsIDEyNTA3MiwgMTE5MjQ4LCAzOTQsIDMwODgsIDgzMzQ3LCA5MjE3MiwgCisgICAgOTgzNjgyLCA2NTE1MCwgNDE4MTksIDAsIDczOTUxLCAxMDg0NywgNDE4MjIsIDk5ODUsIDg2MCwgMTI3Mjg3LCAxMDUwNiwgCisgICAgOTgzNDM3LCA2OTY0MSwgMTA3NTMsIDEwODMwLCAxMTkzMzksIDYxNSwgNjQ0OTAsIDc1NzQsIDc0MDgyLCA3NzkyMiwgCisgICAgOTgzMjk4LCAxMjkwOSwgNDMwMTYsIDY0NTU5LCAxMjcwMjgsIDEyODMwOSwgMTIxMjMxLCA2Nzk5NiwgMjAyMCwgMTI4NzkwLCAKKyAgICA0MDIyLCAxMjg3ODMsIDEwMDc0OCwgNzc5MjMsIDEyNjU5MywgNDE2OTEsIDAsIDc1MDYwLCA3NDMyOSwgMCwgNjQ2MjIsIAorICAgIDkwNzAsIDk4Mzg3NiwgNjg0MTEsIDM5MTEsIDQyODI5LCA0MzEyMiwgMTAzMywgNzQ0NDAsIDEyNTE5MSwgNzAwMCwgMzkwNCwgCisgICAgOTgzNjI4LCA3MzczNywgMTI1MTA1LCAxMTg5MzEsIDExOTYzMCwgMTMxMjMsIDEwODQ2LCAzNDUwLCAxMjA1MTgsIDczOTcsIAorICAgIDExODgwNywgOTE3ODkxLCA0Mjc3OCwgMTAwMDAsIDQxMDg4LCA0NDksIDEyODUwOSwgMzc3NywgNjg0NTgsIDExMzcyNSwgCisgICAgOTYzNiwgMCwgMTA3MzgsIDY5NjM0LCA5MzY3LCA1OTMsIDQxMDg1LCAzOTk5LCA2NTIyNiwgNDE3MTMsIDEyNzY0LCAKKyAgICA5ODM3MjMsIDY0NDA5LCAzNTk2LCAxMjkwNDQsIDEyMDg5NSwgOTc2MywgMTIwMjgwLCA3NDYwOSwgMTIzNDcsIDEyNCwgCisgICAgMTI5ODEsIDQxMTI3LCAyMDkyLCA5MjY4NywgMCwgMTI3NTU1LCAxOTQ2MzIsIDEwODIwLCA0Mzk4NywgMCwgMTI4OTA3LCAKKyAgICAxNzY5LCA0MTcxNSwgMjQ2MywgNzEyMTQsIDgzMDcwLCAxMjc3MCwgNzEyMjIsIDE1MzgsIDkyNjE3LCA0MzEyNCwgCisgICAgMTk0NjE0LCAxOTQ1ODUsIDc3OTUsIDEyMDMwMCwgMTI5MDUzLCA0ODI4LCAxMjU4LCAxMjc4MDIsIDIwMDYsIDEwMTAzNCwgCisgICAgMTIxMTMwLCA5NDk4LCAxMDA0OTQsIDEyNzAzMywgMTIwMjg5LCAxMjAyODgsIDM5MzksIDEyMDI5MCwgODg0NiwgODk0MywgCisgICAgMTIwMjg3LCAxMjAyODYsIDI2NTAsIDQ0OTEsIDE5NjEsIDQyNjAyLCAxMTUyNSwgMTIwMjkyLCAxOTU5LCAxMjAyOTQsIAorICAgIDU1MjI4LCAxMTc3NCwgNDEwMTYsIDkxNzk0NCwgNjg2NzUsIDEyODA1NCwgMTUxMSwgOTMyNCwgNzgyMTEsIDEwNTE5LCAKKyAgICA2NjMzMSwgMzQ1NCwgMTk5MzAsIDc4MTYzLCA0MTAxOSwgMTI2NTQ2LCA5ODM2NzEsIDY1MjkyLCA2ODIyLCAxMjg2MiwgCisgICAgOTgzNzA3LCAwLCA0MjE0MywgNDE4MjgsIDc4MjA3LCA2NTUzMSwgNzA4NjQsIDExODg3OSwgNTUyMjMsIDAsIDEyODA3MSwgCisgICAgNDE4MjYsIDg4NjUsIDY0MDIsIDExMzgyNywgMTMyNzksIDc5MTcsIDc0NzU1LCA5MTc5NDgsIDc3MzMsIDk4MzQwOCwgCisgICAgNDk5OCwgNjg0OTMsIDkyMzMyLCA0MTk1MCwgMCwgNDI2OCwgMTI3OTIzLCA4MzA3NSwgNzAwNjEsIDQwMTMsIDEyODcxOCwgCisgICAgMTA4ODEsIDAsIDEyOTA0NSwgMTI1MjY2LCA3NDc4OCwgMjAxNCwgMjQzMiwgNzE5MDEsIDk3NjUsIDE5NTA1MiwgMCwgCisgICAgOTE3ODU0LCAxOTUwNTksIDc4MzU3LCA2NTI4MSwgMTI3ODI1LCAxMDk0OSwgMCwgMCwgMTE5MzE1LCAyMDE1LCAxMDA4NzEsIAorICAgIDkyNzY1LCA3MTg0MCwgNjYzMTgsIDQzMjMzLCA5MTc5OTIsIDQyNTE3LCA2ODA2MCwgOTgzNjE0LCA5ODM5MDQsIDEyNjk4LCAKKyAgICA4MDk0LCAxMDEzNSwgNjU5MDksIDY0NzQsIDc5NCwgNDM0OTcsIDEyNjU2LCA2NjMzNSwgMTE5MzUzLCA2NzI3OSwgMTY2NSwgCisgICAgNzE4NTMsIDQ4MzMsIDkxNzk4NSwgNzExODgsIDEyNzM2NywgMTIxNDY0LCAxODksIDEyNjExLCAwLCAxMjgwOTQsIDI4NTksIAorICAgIDQ4MzgsIDk4MzkzMCwgNDgzNCwgNjUwNzgsIDAsIDkyOTkxLCA0ODM3LCA2NzQxMywgNzcwLCA5MjY3MSwgODExLCA3MDA2MiwgCisgICAgNDEwNDIsIDgzMDczLCA0MTMxOCwgNjQ0MjcsIDczOTk5LCA2NzY5MywgNzg4NDgsIDM4OTUsIDkyNjE1LCA3NDM0MSwgCisgICAgMzk3NiwgMTI4NDY2LCA0Mjg1OSwgMTAxOTMsIDMxMTYsIDc3NDcsIDc4NDg4LCAwLCA0MzQ5NiwgOTgzMDY5LCAxMjEwMTUsIAorICAgIDQzNjg2LCA3ODg0NiwgNDE4NzcsIDk4Mzc0MywgMjg3MSwgNjQ2MTQsIDY4ODQzLCA5OTksIDEyNTE5OCwgNjM0NSwgCisgICAgNDE4NzYsIDI2NjMsIDIwMTcsIDEyMTIzNCwgNjc4MjQsIDExMDQwLCAxMDE1MCwgMTIwNjc4LCA2NDMwOCwgMTUyMiwgNTk3LCAKKyAgICA0Nzc1LCAxMjU1NSwgMTI1NzEsIDEyNTUwLCAxMjU4MywgMTI1NjAsIDIwMTksIDEyNTU2LCAxMjU4NCwgMzA5MiwgCisgICAgOTgzODMyLCAxMjU2MiwgNDc4MywgMTI1NjYsIDEyNTY5LCAxMjU1NCwgODMzNDQsIDEwODEyLCA3ODg1MSwgMTI2NTc0LCAKKyAgICA4MzM0MiwgMzA3OCwgMTQwMiwgMCwgODMzNDgsIDAsIDEyNTA3MiwgNzQzNzEsIDM5NCwgMzA4OCwgODMzNDcsIDkyMTcyLCAKICAgICA5MTc5NjUsIDM5OTEsIDY0MzkxLCA4MzM0MSwgMTI4NTI0LCA0MjQsIDY2MzI4LCAxOTk5LCA2OTY1OSwgNzM5MTQsIDAsIAotICAgIDEyNzUzNCwgNjY5MDMsIDEyODQ2OCwgNDIyMzEsIDIyMDksIDEyNTEwMywgMCwgMCwgNDE4NDAsIDY2OTEzLCAyMzc3LCAKKyAgICAxMjUxMjgsIDY2OTAzLCAxMjg0NjgsIDQyMjMxLCAyMjA5LCAxMjUxMDMsIDAsIDAsIDQxODQwLCA2NjkxMywgMjM3NywgCiAgICAgMTI5OCwgNjQwMTEsIDEyNTcyLCAxMTMxOCwgMTI1NTcsIDEyNTU5LCAxMjU3MCwgNzQ3OSwgMTAwMywgMjM3MywgOTQ0NiwgCi0gICAgNzQ4MSwgOTQ0OCwgNDgsIDk4MzA4NCwgOTQ4MCwgNDgxLCAwLCA5NDM4LCA5NDM5LCA5NDQwLCA5NDQxLCA4NDY1LCA5NDQzLCAKLSAgICA5NDQ0LCA5NDQ1LCA5NDMwLCA5NDMxLCA5NDMyLCA5NDMzLCA5NDM0LCA5NDM1LCAzOTg0LCA5NDM3LCAxMjkxMzUsIAorICAgIDc0ODEsIDk0NDgsIDQ4LCA3ODAyOSwgOTQ4MCwgNDgxLCAxMDA2MTUsIDk0MzgsIDk0MzksIDk0NDAsIDk0NDEsIDg0NjUsIAorICAgIDk0NDMsIDk0NDQsIDk0NDUsIDk0MzAsIDk0MzEsIDk0MzIsIDk0MzMsIDk0MzQsIDk0MzUsIDM5ODQsIDk0MzcsIDEyOTEzNSwgCiAgICAgOTI5MzQsIDk0MjQsIDk0MjUsIDk0MjYsIDk0MjcsIDk0MjgsIDk0MjksIDY0NzU4LCAyMzYyLCA5NjU1LCAxMjgwNTAsIAogICAgIDIwMDQsIDkwOTYsIDk3ODIsIDcwODQyLCA5MTcyLCA4MzA3MSwgMTk5NjUsIDAsIDU5NTUsIDY3NjY2LCAxMTA4LCAwLCAKLSAgICA3NDc3MywgNzgyNzEsIDEyODkwOSwgNjQ3ODIsIDM5MjYsIDkyNDQ4LCA2NTIxMCwgODc5OCwgMCwgOTIxNjUsIDEzOTIsIAotICAgIDk4MzgxNywgMTIwODM4LCAxMjczNjQsIDEwNjA2LCA4MDY1LCAxMTg4MDUsIDEwMzUzLCAxMDQxNywgMTI3MjM4LCAKLSAgICAxMjg3MzksIDY0NTI0LCA5MjQxOCwgNDAxOSwgMCwgMTI1MDgyLCA0MzI4MCwgODIxOSwgNjg0MDIsIDE4MTIsIDExOTk2MywgCi0gICAgMTIxMDY3LCAxMjg0MzAsIDEyMDkzOSwgNDI0MTAsIDc0NDQ4LCAxMTkxMzIsIDYwNTQsIDEwNjk3LCAzMTY5LCA0MjI5NywgCi0gICAgNDIzMjIsIDEwNjQyLCAzOTA5LCA5OTUwLCAxMjg4NDgsIDEyODEzOSwgOTgzMjYzLCA2ODY3OCwgNzQ5ODYsIDk4Mzc5MCwgCi0gICAgMTA0OSwgNDM1MTcsIDY1NzA3LCAyMzA0LCA0MTgwNiwgOTIzMjYsIDQyMzM2LCAzOTIxLCAwLCAxMTc3NSwgNjQ3NjAsIAotICAgIDExNzY2LCAxMDM4LCA0MjMwMywgOTgyMywgMTI3Mjc4LCA2OTIzNiwgNDAwOCwgNjQwMDQsIDg3NzMsIDEwNzMzLCAzNiwgMCwgCi0gICAgNTE1MywgNDE4MDUsIDAsIDczNzM1LCA3NjMsIDQxODA4LCA2NDkxMCwgMTIxMzg5LCAyMDA5LCAwLCAxMjc5ODUsIDc0MjQ1LCAKLSAgICA5NjQwLCAxMTk5NTEsIDAsIDY5ODk1LCA4NjIxLCAxMjA1MjMsIDEyODUyLCAzMDMxLCA5ODMwNTAsIDY0MzYxLCAxMjkwODgsIAotICAgIDE4MiwgNjY0MTQsIDkyNzE2LCA5MjU5OCwgMTE5OTUwLCA0MjYxMywgOTA1OCwgMzY2LCAwLCA5ODkyLCA1OTY5LCAxMTc1NCwgCi0gICAgMTA4NDgsIDQ1NzAsIDY1MzAxLCA0NDAxMywgNDI1NSwgMTI3ODg5LCAxMDEwMiwgNDExODksIDQwMDMsIDQxMDI2LCAKLSAgICA2ODEwOSwgMTMyOTMsIDQxMTkyLCA2OTYzNSwgMTI0OTc3LCA0MjI1MSwgMCwgNDI1MzQsIDY1MTc5LCAxMTI4NywgNjEyOCwgCi0gICAgMTEzODExLCAxMTAzNCwgMTA5MjMsIDY0NDIzLCAxMjUwNTgsIDY1NTA2LCA5ODM5MTIsIDY1ODYxLCA3NDA4MywgNjY4NzIsIAotICAgIDk5MzIsIDQzNTE2LCA4MzA2MywgODMwNjUsIDgzMDY0LCA5ODE3LCAwLCA3MTIzNCwgMCwgMTIxMTcsIDY2NTg2LCA0MTgzLCAKLSAgICAxMDU0MCwgNjYyNTAsIDkwNjMsIDEyNzA0NSwgMTI4NTQ3LCAxMTk5NTQsIDExMzY4NSwgMTI4OTcsIDM3OTIsIDIwMTEsIAotICAgIDEyMTQxOCwgNjA2NSwgNDMxNjAsIDEyODM3OSwgMTIwNTk1LCA4NjkyLCA0MTE4NiwgNDE4MTYsIDQxMDIzLCA0MTgxOCwgCi0gICAgNDExODcsIDExNjU5LCA3OTIyLCAxMjYxNCwgMjAwNSwgODUyMywgNzgwMDIsIDEyMDAzNSwgNzUxMywgMTg2MywgNDcxMCwgCi0gICAgMCwgNTk1NiwgNzYyMSwgNzgwMDUsIDkyNjI0LCA0NzA1LCA3MTYsIDc0OTE4LCAwLCA0NzA0LCAxMjAwNDAsIDkzMDI0LCAKLSAgICA0MjI0MSwgMTYxLCA0Mzk3NywgNzQ1NDYsIDY2MjE0LCA0NzA2LCA3NDA3NywgNjk5MTQsIDQyNjcyLCA0NzA5LCAxMDY4MCwgCi0gICAgMTE5MDY1LCA0MzI5MywgNjg3NzEsIDk4MzE5MCwgMTE5MTY0LCAxMjAzMjgsIDgzMzE5LCAxMDE4NywgMTcwMCwgMTE5MjIzLCAKLSAgICA4MzMxNSwgMCwgNzQ5ODAsIDQwMDQsIDkxNzU5NSwgMTA5NjgsIDQzMjk2LCAxMjgzMzEsIDg1MDYsIDExMzc0NCwgCi0gICAgMTk0ODEyLCAxMjY5OTYsIDEwMDUsIDkzNywgNzgyMTYsIDQ3MzQsIDI4NzAsIDEyMTM1MCwgNzgyMTgsIDk4MzEwOSwgCi0gICAgNzQ2MywgNDcyOSwgMCwgMjM1LCAxMzg0LCA0NzI4LCA3NDg4NywgNzA0OTQsIDkyNDkwLCA3NDQ0OSwgODEwOSwgNDMxMDUsIAotICAgIDEyODYyMywgNDczMCwgNDQ3LCAxMzE4NiwgMTUxMywgNDczMywgMTIwNDE1LCA5MjU0OCwgMCwgNDI1MjcsIDEyOTExLCAKLSAgICA0MzQyNywgMTM4MywgODU2NSwgMjQ2OSwgMTIwMDI0LCA2NjkwLCA2MTU2LCA2ODExNywgNDM0MzksIDc5OTMsIDQyODgsIAotICAgIDEyMDQxNiwgMjY3NCwgMTMyMzgsIDExOTIyLCAwLCA5MjUyOSwgMzUxMCwgMTMyMzQsIDk4MzgzMiwgMTIwNDA3LCA1NjA1LCAKKyAgICA3NDc3MywgNzgyNzEsIDEyODkwOSwgNjQ3ODIsIDM5MjYsIDkyNDQ4LCA2NTIxMCwgODc5OCwgMTI5MzY1LCA4MzA2MiwgCisgICAgMTM5MiwgMTI3NzgyLCAxMjA2OTYsIDEyNzM2NCwgMTA2MDYsIDgwNjUsIDcwNzEwLCAxMDM1MywgMTA0MTcsIDEwMDYxMywgCisgICAgMTI1MDIzLCA2NDUyNCwgNzA3MTEsIDQwMTksIDEwMDk1MCwgMTI1MDgyLCA0MzI4MCwgODIxOSwgNjg0MDIsIDE4MTIsIAorICAgIDEwMDk0OSwgMTIxMDY3LCAxMDA5NDQsIDEyMDkzOSwgNDI0MTAsIDc0NDQ4LCAxMDEwODUsIDYwNTQsIDEwNjk3LCAzMTY5LCAKKyAgICA0MjI5NywgNDIzMjIsIDEwNjQyLCAzOTA5LCA5OTUwLCAxMjgyMzEsIDEyODEzOSwgOTgzMjYzLCA2ODY3OCwgNzQ5ODYsIAorICAgIDk4Mzc5MCwgMTA0OSwgNDM1MTcsIDY1NzA3LCAyMzA0LCA0MTgwNiwgOTIzMjYsIDQyMzM2LCAzOTIxLCAwLCAxMTc3NSwgCisgICAgNjQ3NjAsIDExNzY2LCAxMDM4LCA0MjMwMywgOTgyMywgMTI3Mjc4LCA2OTIzNiwgNDAwOCwgNjQwMDQsIDg3NzMsIDEwNzMzLCAKKyAgICAzNiwgMCwgNTE1MywgNDE4MDUsIDExOTE1MywgNzM3MzUsIDc2MywgOTIxMSwgNjQ5MTAsIDEyMTM4OSwgMjAwOSwgMCwgCisgICAgMTI3OTg1LCA3NDI0NSwgOTY0MCwgMTE5OTUxLCAxMjczMTYsIDY5ODk1LCA4NjIxLCAxMjA1MjMsIDEyODUyLCAzMDMxLCAKKyAgICA5ODMwNTAsIDY0MzYxLCAxMjkwODgsIDE4MiwgNjY0MTQsIDkyNzE2LCA5MjU5OCwgMTE5OTUwLCA0MjYxMywgOTA1OCwgCisgICAgMzY2LCAwLCA5ODkyLCA1OTY5LCAxMTc1NCwgMTA4NDgsIDQ1NzAsIDY1MzAxLCA0NDAxMywgNDI1NSwgMTI3ODg5LCAKKyAgICAxMDEwMiwgNDExODksIDQwMDMsIDQxMDI2LCA2ODEwOSwgMTMyOTMsIDQxMTkyLCA2OTYzNSwgMTI0OTc3LCA0MjI1MSwgCisgICAgOTgzOTYzLCA0MjUzNCwgNjUxNzksIDExMjg3LCA2MTI4LCAxMTM4MTEsIDExMDM0LCAxMDkyMywgNjQ0MjMsIDEwMTA5MiwgCisgICAgNjU1MDYsIDExOTI0OCwgNjU4NjEsIDc0MDgzLCA2Njg3MiwgOTkzMiwgNDM1MTYsIDgzMDYzLCA4MzA2NSwgODMwNjQsIAorICAgIDk4MTcsIDEwMDkzNywgNzEyMzQsIDcwNzQ5LCAxMjExNywgNjY1ODYsIDQxODMsIDEwNTQwLCA2NjI1MCwgOTA2MywgCisgICAgMTI3MDQ1LCAxMjg1NDcsIDExOTk1NCwgMTEzNjg1LCAxMjg5NywgMzc5MiwgMjAxMSwgMTIxNDE4LCA2MDY1LCA0MzE2MCwgCisgICAgMTI4Mzc5LCAxMjA1OTUsIDg2OTIsIDQxMTg2LCA0MTgxNiwgNDEwMjMsIDQxODE4LCA0MTE4NywgMTE2NTksIDc5MjIsIAorICAgIDEyNjE0LCAyMDA1LCA4NTIzLCA3Mjg1MiwgMTIwMDM1LCA3NTEzLCAxODYzLCA0NzEwLCAxMjAwMzAsIDU5NTYsIDc2MjEsIAorICAgIDc4MDA1LCA5MjYyNCwgNDcwNSwgNzE2LCA3NDkxOCwgOTgzNDUzLCA0NzA0LCAxMjAwNDAsIDkzMDI0LCA0MjI0MSwgMTYxLCAKKyAgICA0Mzk3NywgNzQ1NDYsIDY2MjE0LCA0NzA2LCA3NDA3NywgNjk5MTQsIDQyNjcyLCA0NzA5LCAxMDY4MCwgMTE5MDY1LCAKKyAgICA0MzI5MywgNjg3NzEsIDE5NTAzMCwgMTE5MTY0LCAxMDA3NzAsIDgzMzE5LCAxMDE4NywgMTcwMCwgMTE5MjIzLCA4MzMxNSwgCisgICAgMCwgNzQ5ODAsIDQwMDQsIDkxNzU5NSwgMTA5NjgsIDQzMjk2LCA3MjgyMywgODUwNiwgMTEzNzQ0LCAxOTQ4MTIsIAorICAgIDEyNjk5NiwgMTAwNSwgOTM3LCA3ODIxNiwgNDczNCwgMjg3MCwgMTIxMzUwLCA3ODIxOCwgOTgzMTA5LCA3NDYzLCA0NzI5LCAKKyAgICA5ODMzOTMsIDIzNSwgMTM4NCwgNDcyOCwgNzQ4ODcsIDcwNDk0LCA5MjQ5MCwgNzQ0NDksIDgxMDksIDQzMTA1LCAxMjg2MjMsIAorICAgIDQ3MzAsIDQ0NywgMTMxODYsIDE1MTMsIDQ3MzMsIDEyMDQxNSwgOTI1NDgsIDAsIDQyNTI3LCAxMjkxMSwgNDM0MjcsIAorICAgIDEzODMsIDg1NjUsIDI0NjksIDEyMDAyNCwgNjY5MCwgNjE1NiwgNjgxMTcsIDQzNDM5LCA3OTkzLCA0Mjg4LCAxMjA0MTYsIAorICAgIDI2NzQsIDEzMjM4LCAxMTkyMiwgMTI4NDA5LCA5MjUyOSwgMzUxMCwgMTMyMzQsIDEyOTM2OCwgMTIwNDA3LCA1NjA1LCAKICAgICA0MjA5NSwgMTEzNjQsIDkyMjg2LCAxMzgwLCA2NTYxNywgMTExNjIsIDEyMDI2MSwgMTMxOTYsIDEzMTk3LCAxMjAzMDksIAogICAgIDY3NzA4LCA5NDk1LCAxMTkzNDYsIDEyNzE1NCwgNTk1OSwgNjc5ODQsIDczOTc2LCA2NjI3NSwgNDMzNzEsIDY5NDEsIAogICAgIDExOTM0OSwgMTMyMDUsIDEzMjExLCA1ODAxLCAxMjc2OSwgNjU5MDUsIDQxNjk3LCAxMjgzLCA4Mjk1MiwgNDc3OSwgCiAgICAgOTgzOTIyLCAzNzE5LCA0MDA2LCA5ODM1NjksIDE5OTU3LCA3MTE4NiwgMjAyMSwgMTE5MzMyLCA0Mzg3NywgODMxNDAsIAogICAgIDQzMDI4LCA2NTQ5MywgNDE4MzgsIDM4NzUsIDU5NjIsIDY0MzQxLCA5MjYxNiwgOTgxNCwgNDM0NTcsIDU4MjcsIDMzMTQsIAotICAgIDc3ODcsIDcxMTg5LCA2NTQ5NCwgNjgxNTMsIDEyNjk5MSwgMTk0Njk3LCAxMjA2MzYsIDY0NTMxLCAxMjA2OTIsIDE5NDYyNiwgCi0gICAgMTI4NzUzLCA5ODM5NTgsIDY2MzE2LCA2NTQ2NywgNTc3MSwgNDEyOTgsIDk4Mzc5NCwgOTc0MiwgNTIxLCAwLCAxMDgwMCwgCi0gICAgOTIyMjIsIDg0MDQsIDE5NDYyNSwgNDgzLCA3MDk2LCA3MDg5LCA2NjMyMywgOTI4LCAwLCAwLCAxMTkwMTgsIDEwNTk5LCAKLSAgICAxMTU4NiwgMzk4OSwgMTA5NzEsIDQzNzQ4LCA2NTc4MiwgOTg0MSwgODg0MywgMTIxNDUsIDY3MjYxLCAxMDA3NCwgNzg1NDgsIAotICAgIDkzOTk5LCAzNzY5LCAwLCAwLCAxMjg3MDMsIDk4MzEwNywgOTU3MywgOTE3OTk4LCA2NTI5MCwgODg0OSwgMTE5MjU0LCAKLSAgICA2NTg1NSwgNjUxMTIsIDE3OTYsIDcxMDQ2LCAwLCA2OTY2NSwgODE2NCwgNDEzMDEsIDM1MDIsIDgzMTM1LCA3Mzg4LCAKLSAgICAxMDYyMSwgNzM4MzgsIDc4NTUzLCA1ODI1LCAxMzAwNywgNjgxNjUsIDkyMjAzLCA5MjkxNSwgMTI2NjEsIDc2MDgsIAotICAgIDEwMzU0LCAxMDQxOCwgNDI0MTEsIDIwMjIsIDAsIDE0MDksIDEyMTk1LCA0MDAxLCAzMTEyLCAxMDgyNCwgMTIwNjM5LCAKLSAgICAxMzkwLCA3MDE4NCwgMTk0NzA0LCA0MjEsIDQzNTM2LCA1ODQ2LCAxMjAxMjAsIDQxMzAsIDEyNzc3NSwgNzU5NSwgNDI1ODgsIAotICAgIDc2MDAsIDc0NDAwLCA2NjAzNSwgMTk1MDkxLCAwLCA2NTg1MSwgNDI2MDcsIDEyNDk1NSwgOTI0MDMsIDMxNjgsIDY3NzMzLCAKLSAgICA0MjEzNCwgMTE4MzEsIDIzNzAsIDI4NDYsIDkyNjA1LCAxMjgwODQsIDAsIDEyMDEzMiwgMTI3NzQ1LCAxODM2LCAwLCAKLSAgICAxMjEyMDcsIDkyNTU4LCAzNzQwLCA2OTg0MywgNjI5MCwgNjUzNzQsIDEyMDQ1MSwgMjM5MCwgMzk0NCwgNjY2MjgsIAotICAgIDExOTAwNiwgMCwgNjEzNSwgMzExOCwgNzQyNjUsIDExOTA5MywgODMzMTAsIDc3OTc1LCAwLCA4MTI3LCA4OTc1LCA2NDczOSwgCi0gICAgNzk0MywgMTI0OTY4LCAxMTkyMzQsIDEwNjE4LCAyNTg0LCAwLCAwLCAxMjgyMjUsIDk5OTgsIDEyMDU3MywgODMzMDYsIDAsIAotICAgIDEyNzc1MCwgNDM1MDgsIDYyMDQsIDEyNzA0NCwgMTIxMzc0LCA4Mjc5LCA4Nzc2LCA2NDk1NCwgNDk3NSwgNzAwNzUsIAotICAgIDEyMDEzMCwgNDI2NywgMTYzMSwgNDIyMDYsIDc3OTgzLCAxMjgwMTUsIDE5NTA0NiwgNjU3MDAsIDY2Mzg2LCAwLCA2NDY0NSwgCi0gICAgMCwgOTI4ODcsIDEyNjU4OCwgMTI1ODYsIDAsIDkyNDIsIDEyMDEwMCwgMCwgNDUyMywgNTg0MiwgMTA0OTUsIDMxMjIsIAotICAgIDk4Mzc5NywgNzc5MywgNzgyNzUsIDkzMjgsIDExOTEwNCwgNzgzOTMsIDEyNjA0LCA5Mjg4NSwgNjYxNSwgMjI4NSwgCi0gICAgOTIzNDQsIDM5ODYsIDQ0MDI1LCAwLCA4OTEyLCA2NDU1NSwgNzQwOSwgOTIyNDcsIDk4MzM2MCwgOTU0MSwgNzgyNzYsIAotICAgIDExMzY2OSwgMTEyNzUsIDg1NDAsIDExNDk4LCAxMjA4NjgsIDk4MzM1OSwgNDEwNDAsIDI0NTksIDEyNzMwMiwgMTMwNjAsIAotICAgIDQxMDQxLCA3NDQxMywgOTgzMTM4LCAwLCA3NzkzMSwgNjg0MjcsIDEwNDUwLCAxMjU1MSwgNDEwNDMsIDcwMjAsIDEyMDM1MywgCi0gICAgMzc2NSwgOTI4ODEsIDkxNzYxMiwgMTYwNiwgMTIwMzQ4LCA5MjI5OSwgMzA5MywgNjg0MzYsIDEyODA0MCwgOTgzMDYxLCAKLSAgICAxMTk2MTMsIDAsIDAsIDQzMTIsIDc0MDkxLCAxMjAzMzcsIDc0OTgzLCAxMTkyMywgNDAyMywgNjgzOTksIDU3NjMsIAotICAgIDk0MDE1LCA0ODI3LCAxMDg5NCwgMTI4MTAsIDY0NDA2LCAxMTg3ODUsIDQ0NTUsIDc0MzIxLCA0MzMsIDExOTYyMCwgCi0gICAgNjY2NjAsIDI0OTksIDY3MTY3LCA2NzE2NiwgMTE4ODM3LCAxMTk3MywgMTMwODksIDQyOTMsIDEyMDMyOSwgNDIyMjQsIAotICAgIDQyNzU4LCAxMjE5NiwgNDI4MzcsIDQyMjI2LCAxMTkzMTksIDEyNzk5MiwgMTE5MTI2LCA1ODE3LCAxMjc4MDYsIDU1Mjc3LCAKLSAgICAzMTIwLCA5Nzk3LCAwLCAwLCAxMTA4NiwgMTAzODksIDEyNjQ4NSwgMTI4Nzg0LCA0ODk1LCA2NTM1OCwgMTI0OTQxLCAKLSAgICA0MzU5LCA1ODUsIDIzODMsIDM1MDksIDcwMDM3LCA0ODYsIDQyOTAsIDU3NTgsIDEyNzU0NiwgMTIxMTYwLCA5ODMxMDYsIAotICAgIDcwMDQsIDExMzY2NywgNjU4ODAsIDEyNjUxNCwgMTE5MDQ4LCAyMzgwLCAxMTM4MCwgOTgzODYzLCA5Mzk5NiwgMjM3NiwgCi0gICAgNzg4NDEsIDgzNDAyLCAwLCA1MTk3LCA3MDgzOSwgMTI3MDQ3LCAxMjcwNDgsIDIzNjYsIDEyNzA1MCwgMTE5NjA0LCAKLSAgICA3MDgzNywgMTIwMDQ1LCAwLCAxMjg1NTQsIDAsIDkxNzg0NiwgMCwgMCwgMCwgNzQxODgsIDcxMzQyLCA3ODQ1NSwgNzUwNDgsIAotICAgIDExMzY3NSwgNzQ5MDAsIDEyMDA0NiwgMTI3NTQyLCAxMjAwNDksIDk4MzM2NiwgMTg0NywgMTIwOTc4LCAxMDMzOSwgCi0gICAgOTgzMzY3LCA0MjM4NCwgMTIxMzc5LCA0MjI3LCA3NDE1OCwgMCwgNzQ0OTgsIDQzMDMyLCAxMjExMjQsIDQyMzY1LCAwLCAKLSAgICAxMjY3MSwgMTEzODQsIDEyMDA1OSwgNzQyNjQsIDEyMDA1OCwgNjQ3OTcsIDk4MzM0NywgNTgyMCwgOTgzMzQ2LCAxMjAwNTIsIAorICAgIDc3ODcsIDcxMTg5LCA2NTQ5NCwgNjgxNTMsIDEyNjk5MSwgMTk0Njk3LCAxMjA2MzYsIDY0NTMxLCAxMjA2OTIsIDcyODc5LCAKKyAgICAxMjg3NTMsIDk4Mzk1OCwgNjYzMTYsIDY1NDY3LCA1NzcxLCA0MTI5OCwgODMxMzgsIDk3NDIsIDUyMSwgOTgzOTExLCAKKyAgICAxMDgwMCwgOTIyMjIsIDg0MDQsIDE5NDYyNSwgNDgzLCA3MDk2LCA3MDg5LCA2NjMyMywgOTI4LCA5ODM5MDgsIDY0MDQxLCAKKyAgICAxMTkwMTgsIDEwNTk5LCAxMTU4NiwgMzk4OSwgMTA5NzEsIDQzNzQ4LCA2NTc4MiwgOTg0MSwgODg0MywgMTIxNDUsIAorICAgIDY3MjYxLCAxMDA3NCwgNzg1NDgsIDkzOTk5LCAzNzY5LCAxMjc5NTgsIDAsIDEyODcwMywgOTgzMTA3LCA5NTczLCAKKyAgICA5MTc5OTgsIDY1MjkwLCA4ODQ5LCAxMTkyNTQsIDY1ODU1LCA2NTExMiwgMTc5NiwgNzEwNDYsIDk4MzQyOCwgNjk2NjUsIAorICAgIDgxNjQsIDQxMzAxLCAzNTAyLCA4MzEzNSwgNzM4OCwgMTA2MjEsIDczODM4LCA3ODU1MywgNTgyNSwgMTMwMDcsIDY4MTY1LCAKKyAgICA3Mjc0OSwgOTI5MTUsIDEyNjYxLCA3NjA4LCAxMDM1NCwgMTA0MTgsIDQyNDExLCAyMDIyLCA5ODM0MjksIDE0MDksIAorICAgIDEyMTk1LCA0MDAxLCAzMTEyLCAxMDgyNCwgMTIwNjM5LCAxMzkwLCA3MDE4NCwgNzg1MTUsIDQyMSwgNDM1MzYsIDU4NDYsIAorICAgIDEyMDEyMCwgNDEzMCwgMTI3Nzc1LCA3NTk1LCA0MjU4OCwgNzYwMCwgNzQ0MDAsIDY2MDM1LCAxOTQ3OTksIDAsIDY1ODUxLCAKKyAgICA0MjYwNywgMTI0OTU1LCA5MjQwMywgMzE2OCwgNjc3MzMsIDQyMTM0LCAxMTgzMSwgMjM3MCwgMjg0NiwgOTI2MDUsIAorICAgIDEyODA4NCwgMCwgMTIwMTMyLCAxMjc3NDUsIDE4MzYsIDAsIDEwMDc4MiwgOTI1NTgsIDM3NDAsIDY5ODQzLCA2MjkwLCAKKyAgICA2NTM3NCwgMTAwNzg1LCAyMzkwLCAzOTQ0LCA2NjYyOCwgMTE5MDA2LCA5ODM5MTYsIDYxMzUsIDMxMTgsIDc0MjY1LCAKKyAgICAxMTkwOTMsIDgzMzEwLCA3Nzk3NSwgOTgzODg5LCA4MTI3LCA4OTc1LCA2NDczOSwgNzk0MywgMTI0OTY4LCAxMTkyMzQsIAorICAgIDEwNjE4LCAyNTg0LCAwLCAwLCAxMjgyMjUsIDk5OTgsIDEyMDU3MywgODMzMDYsIDAsIDEyNzc1MCwgNDM1MDgsIDYyMDQsIAorICAgIDEyNzA0NCwgMTIxMzc0LCA4Mjc5LCA4Nzc2LCA2NDk1NCwgNDk3NSwgNzAwNzUsIDEyMDEzMCwgNDI2NywgMTYzMSwgCisgICAgNDIyMDYsIDc3OTgzLCAxMjgwMTUsIDE5NDc1MywgNjU3MDAsIDY2Mzg2LCAwLCA2NDY0NSwgMCwgOTI4ODcsIDExOTE1NCwgCisgICAgMTI1ODYsIDAsIDkyNDIsIDEyMDEwMCwgMCwgNDUyMywgNTg0MiwgMTA0OTUsIDMxMjIsIDk4Mzc5NywgNzc5MywgNzgyNzUsIAorICAgIDkzMjgsIDExOTEwNCwgNzA2ODUsIDEyNjA0LCA5Mjg4NSwgNjYxNSwgMjI4NSwgNjY3OTYsIDM5ODYsIDQ0MDI1LCAwLCAKKyAgICA4OTEyLCA2NDU1NSwgNzQwOSwgOTIyNDcsIDk4MzE5MCwgOTU0MSwgNzgyNzYsIDExMzY2OSwgMTEyNzUsIDg1NDAsIAorICAgIDExNDk4LCAxMjA4NjgsIDEyODU0MCwgNDEwNDAsIDI0NTksIDEyNzMwMiwgMTI1NTgsIDQxMDQxLCA3NDQxMywgOTgzMTM4LCAKKyAgICAwLCA3NzkzMSwgNjg0MjcsIDEwNDUwLCAxMjU1MSwgNDEwNDMsIDcwMjAsIDEyMDM1MywgMzc2NSwgOTI4ODEsIDkxNzYxMiwgCisgICAgMTYwNiwgMTIwMzQ4LCA5MjI5OSwgMzA5MywgNjg0MzYsIDEwMDcxOCwgOTgzMDYxLCAxMTk2MTMsIDk4MzkzOCwgMTk0NzU2LCAKKyAgICA0MzEyLCA3NDA5MSwgMTIwMzM3LCA3NDk4MywgMTE5MjMsIDQwMjMsIDY4Mzk5LCA1NzYzLCA5NDAxNSwgNDgyNywgMTA4OTQsIAorICAgIDEyODEwLCA2NDQwNiwgMTE4Nzg1LCA0NDU1LCA3NDMyMSwgNDMzLCAxMTk2MjAsIDY2NjYwLCAyNDk5LCA2NzE2NywgCisgICAgNjcxNjYsIDExODgzNywgMTE5NzMsIDEzMDg5LCA0MjkzLCAxMjAzMjksIDQyMjI0LCA0Mjc1OCwgMTIxOTYsIDQyODM3LCAKKyAgICA0MjIyNiwgMTE5MzE5LCAxMjc5OTIsIDExOTEyNiwgNTgxNywgMTI3ODA2LCA1NTI3NywgMzEyMCwgOTc5NywgMCwgMCwgCisgICAgMTEwODYsIDEwMzg5LCAxMjY0ODUsIDEyODc4NCwgNDg5NSwgNjUzNTgsIDEyNDk0MSwgNDM1OSwgNTg1LCAyMzgzLCAzNTA5LCAKKyAgICA3MDAzNywgNDg2LCA0MjkwLCA1NzU4LCAxMDA3NzUsIDEyMTE2MCwgOTgzMTA2LCA3MDA0LCAxMTM2NjcsIDY1ODgwLCAKKyAgICAxMjY1MTQsIDExOTA0OCwgMjM4MCwgMTEzODAsIDk4Mzg2MywgOTM5OTYsIDIzNzYsIDc4ODQxLCA4MzQwMiwgOTgzMjU2LCAKKyAgICA1MTk3LCA3MDgzOSwgMTIwMjQ4LCAxMjcwNDgsIDIzNjYsIDEwMDcxMywgMTE5NjA0LCA3MDgzNywgMTIwMDQ1LCAwLCAKKyAgICAxMjg1NTQsIDAsIDkxNzg0NiwgMTAwNzE1LCAwLCAwLCA3NDE4OCwgNzEzNDIsIDc4NDU1LCA3NTA0OCwgMTEzNjc1LCAKKyAgICA3NDkwMCwgMTIwMDQ2LCAxMjc1NDIsIDEyMDA0OSwgMTAwNzc0LCAxODQ3LCAxMjA5NzgsIDEwMzM5LCAxMDA3NzIsIAorICAgIDQyMzg0LCAxMjEzNzksIDQyMjcsIDc0MTU4LCAwLCA3NDQ5OCwgNDMwMzIsIDEwMDkyNiwgNDIzNjUsIDE5NDgzMywgCisgICAgMTI2NzEsIDExMzg0LCAxMjAwNTksIDc0MjY0LCAxMjAwNTgsIDY0Nzk3LCA5ODMzNDcsIDU4MjAsIDEyODAxOCwgMTIwMDUyLCAKICAgICAxMjAwNjUsIDEyODgyNSwgMTIwMDY0LCAxMjAwNTMsIDQyMTM3LCA5ODkzLCAyNzU0LCAxMjY2NCwgMTIwMDYzLCAxMjEyODYsIAogICAgIDczNzcsIDEyMDA1MSwgNDE3OTksIDY1NTMwLCAxNzExLCAxMjk4NCwgNDMwMzksIDMxMTQsIDYyNTUsIDEyMTEzMiwgCi0gICAgNjg2NjAsIDAsIDEwODUzLCA5MjYsIDk4MzM3MSwgNzQxODQsIDEyMDkxNSwgMTIwMDU1LCAxMTkzMDEsIDQzMTc1LCAwLCAKLSAgICA0MzAzNywgNDE3OTgsIDQxMDM1LCAxMTU4MywgMTI3NzY5LCA0MTgwMSwgMTE5MDg4LCAxMTk2MDUsIDUyMCwgNDIwMCwgCi0gICAgMTI2OTksIDgzMzEsIDcwMTE4LCAzMDkxLCA0MTAzNCwgNjYyOTgsIDcwMjkzLCA4MzYwLCA5ODM0NDUsIDc4MDQ0LCAzMjEsIAotICAgIDQyMjksIDY0NTQzLCAxMjg0NzAsIDY1NTYzLCAxOTQ4NzMsIDkxNzk3NCwgMjg2MSwgNDM3OTMsIDEwMDk1LCAxMjE0MjgsIAotICAgIDkxOTUsIDkyMzg2LCAxODYxLCAwLCA3MzczMywgOTE3NzgwLCA2ODgzOSwgNDMwNDEsIDAsIDQzNzk0LCAxMjg1MzAsIAotICAgIDM4NTksIDEyMTgxLCA0MTY2MCwgODIwOSwgNzA3OTMsIDczODY3LCAxMjk3MywgNzUwMTQsIDc0NzU3LCAxMjc1MTQsIAotICAgIDQxNjU4LCAxMjgzNzYsIDEyMTIzNSwgNTc2MCwgMTEzNjk5LCA3NDMsIDQ0MTQsIDEyMDc2NiwgMCwgNDI2MzIsIDEyNzIzNiwgCi0gICAgNjUxNjEsIDczODk2LCAxMjg1ODksIDAsIDE0MDUsIDExOTA2MywgNDMyMjAsIDQzMzQxLCAwLCAxOTkxOSwgNzAyNzgsIAotICAgIDY0NTMyLCA2NTM2NywgNDM3MTAsIDExMTk5LCAxMjUwNzcsIDM1MTMsIDcxMTE1LCA3MDM0MSwgNDMzNDIsIDExOTA2NCwgCi0gICAgNjU1MjksIDY1MzY0LCA4MzIwOCwgODMxNzAsIDY0ODUsIDEzOTcsIDE5NDc4MSwgNDE5ODYsIDkyNjc4LCA4MzIwNCwgCi0gICAgODMyMTIsIDc0MDk3LCA4MzIxMywgNzQ3MSwgMTIwNzksIDY3OTk3LCA2ODQzLCA0MzI4NywgOTIzMTcsIDAsIDY3NDA2LCAKLSAgICAxMjAyMzksIDE5NDY3OCwgNzE5MTQsIDEwOTksIDEwNDkwLCA4MzIwMSwgMTA1MDEsIDY1MTgxLCA3NDQ2MywgMTI4OTUyLCAKLSAgICA0NjQsIDQxNjI0LCA2NTI4MywgNjc2NjMsIDc4MjIyLCAxMzQ2LCAxOTQ2MDksIDY1Njc5LCA2NDU3MywgNjQ4OTcsIDQyMywgCi0gICAgMTgxOCwgNjUxNDQsIDgyOTYzLCA4MjcyLCAxMjc4MTIsIDE5OTExLCA0MjE4LCAzMDg3LCA2NDk2MCwgMTIxNDQ3LCAKLSAgICA0MzU2NCwgMCwgOTgzMTgyLCA5NTg0LCAxMDQ2NSwgOTgzOTAyLCA3NDM1OSwgMTI2MjYsIDkxMDYsIDAsIDQyNjQyLCAKLSAgICA3MTIzNSwgNjQ3NTAsIDkzOTAsIDAsIDQxNzk3LCAxOTQ3MzAsIDEyODMzMywgMjY1LCA0MTc5NSwgNjQ2NjYsIDc0NjI4LCAKLSAgICA0MzUzMCwgMjc1MiwgMTI3MzY1LCAxMjg0NTksIDEyNjQ4MiwgNTksIDk4MzY3MSwgMTIxNDEwLCAxMTE0OSwgNzgwNzQsIAotICAgIDc3ODczLCA0MTgxMCwgODMxNjIsIDcwMTAsIDAsIDQxODA5LCA0MTQ5NSwgMTE5MzY0LCA1ODc3LCA0MjI1MiwgNDIyMTMsIAotICAgIDgwMDksIDMzMDUsIDQzMDMzLCA1MTEsIDkyNzAwLCA0Mzg0OCwgMTMxMjcsIDEyMDA2NywgOTgzOTQ2LCA3NDM5NywgCi0gICAgMTIwMjM1LCAxMjg2NDEsIDY1OTE1LCAxNDAwLCA0MTgxMiwgMTA2ODUsIDc1MDE3LCAyMTAzLCAxMDM4NywgNDQ1MywgCi0gICAgNDMyNzYsIDkxNzc4MywgMTExNjksIDEyODkzOSwgNjQ4MSwgNDEyMTMsIDAsIDAsIDEyOTEzMywgMTE5OTI5LCA0MTk4MywgCi0gICAgNzQxOTgsIDY2MTcsIDkxMTYsIDExOTY1NCwgOTI5OTUsIDQ2MiwgNjgxMTAsIDEwNDkzLCAxMjE0NDksIDgxMjksIDkyOTk0LCAKLSAgICAxMjgzNjUsIDc0NDcxLCA2NjQ0LCAxMTY1OCwgMCwgMTI4MjQ1LCAzNDUyLCAxMTkwNiwgOTU4MSwgMTM4NSwgMzA5OCwgMCwgCi0gICAgMTE5MDEzLCA0MzM0MCwgMTExMjMsIDQxMDMzLCA2NDkzLCA0MjYyNiwgMCwgMTI5MDUxLCAxMTQyNiwgNzc4ODcsIDE2ODEsIAotICAgIDExODc4OSwgMTIwNCwgMzc1NSwgNjQ2NjEsIDcyMzUsIDEwMTcwLCAzOTY2LCA4OTExLCAwLCA0MTg0MSwgNDMzMzgsIDAsIAotICAgIDExOTMyMywgNTcyNiwgNjQ5MTUsIDQyMTc1LCA5ODM5MTMsIDAsIDQxNDk3LCA2NTA0NCwgMTIwMTA5LCAyODUxLCA0MzAxNywgCi0gICAgOTgzNTg5LCAxMjA4OTYsIDQzNzMsIDc4MDU4LCAwLCA5NTg3LCAxNzg5LCA2NjcxLCAxMjg4NDAsIDMxMDAsIDAsIDY1MzYwLCAKLSAgICA5MTc1ODksIDkyMzY1LCAxMjgyMDIsIDY0OTIyLCAwLCA4MTkwLCAxMjA4MywgMCwgODMxNDEsIDY1MDYsIDY0MzEyLCAKLSAgICA3NDM3NCwgMjM2OCwgOTgzMTg3LCA0NDE5LCAxMjEyNTksIDExOTEyNSwgMzQzOSwgMTgyNSwgMTE5MiwgMTIwMTA2LCAKLSAgICA4ODkxLCAzMDgwLCAxMjAyMjgsIDIzNDcsIDU0MzAsIDEyMDEwNywgODk5MCwgMjg0OCwgOTI5ODEsIDEyMTM3MiwgNzM5NDIsIAotICAgIDI0OSwgMCwgMCwgMCwgMTIwNjU4LCAxMTkzMjQsIDEyODcxMiwgODg4MywgMTE5ODYwLCA3MjgsIDExMTczLCA5OTUsIDAsIAotICAgIDEyMTA0NywgNjQ4MjYsIDEyNDkzMSwgOTE3Nzk4LCAxMjgzNDgsIDAsIDE5OTQ1LCA4MDkxLCA1NTgsIDAsIDEyMjczLCAKLSAgICAxOTQ4MTQsIDY3NzE0LCAxMjExMiwgNjcyNzIsIDY3MjY1LCA2NzI3MywgNjcyNzQsIDEyMzM1LCAxMjAxMDQsIDY4MDE5LCAKLSAgICAzNDQzLCAzMTI5LCA2NzI2NywgMjEwMiwgNjU0NDUsIDc4MjU4LCA2NDg5MSwgMCwgNzcyNSwgNjUxMDgsIDExMTIwLCAKLSAgICA5MjA1LCA4NjI0LCA2OTI0NiwgMTI0NDYsIDQzMjk1LCAxMjg1MTksIDQxODk0LCAwLCA2Mjc3LCA0MTY3MiwgNDE4OTMsIAotICAgIDEwMDEwLCAxMjczODEsIDM1NDAsIDEyMTQ1MCwgODM1LCA3MTM0MCwgNjk4MTYsIDExOTg1NCwgNzQ0MDgsIDAsIDY3MTA4LCAKLSAgICA1NDI2LCA0MjU4LCA4MzE4OCwgMTIwODU4LCA1NDI0LCA5MjMwNiwgODI4MywgMTI3OTc4LCA1NDM0LCA4MzE5NiwgCi0gICAgMTI5MDI3LCAxOTkxNywgMTE0MDgsIDAsIDExOTQ3LCAxMjgzMzAsIDE0MDQsIDMwOTUsIDExNDMyLCAxMjExMjIsIDM0NjQsIAotICAgIDY0ODYsIDQ4MTksIDEyODIzMywgMTI5MTIzLCA1NzAsIDgwOTUsIDM2NzIsIDExOTg2NCwgMTQ5OCwgNjc4NjYsIDAsIAotICAgIDEyODUzOSwgNDMxLCA2NzgyMCwgMCwgMTI4MTgyLCAxMjgwOTYsIDY4MTY3LCA5ODM2NjMsIDEzMDk2LCAxMjg2NDMsIAotICAgIDEyMTAxOCwgNDM0MDgsIDk1MTYsIDEyODUzOCwgNTI2OCwgNDIyMzAsIDQyMjIwLCAwLCA0NDUwLCAxMjA1MTEsIDExNTQ3LCAKLSAgICA0MzQxNywgMTI4NTQyLCAzNTYsIDM0NzcsIDIyNywgMTA0ODgsIDY4MjAzLCAzODIsIDExNDE4LCAwLCA1ODc4LCA5ODM3OTksIAotICAgIDAsIDAsIDAsIDY0ODQsIDI1NDEsIDY2MDM5LCAxMTM3NzcsIDc4MTU3LCA5MjcyMywgMzU0OSwgMTk1MDY3LCA5MTEwLCAKLSAgICAxMTk2NjUsIDI3NDMsIDAsIDQzMjkwLCAxMjg1ODUsIDkwOTcsIDE5NTAyNiwgNDMwMTUsIDg3ODIsIDAsIDc3NiwgMjUyNCwgCi0gICAgNDI3MDcsIDg1NzMsIDEyMDkwMywgMTI2NDk0LCAwLCA3MTEwMiwgNDI2OTQsIDY0OTQ0LCA4OTUyLCAzODU2LCAxMTg4MTgsIAotICAgIDEyNTExMSwgNTg3MiwgNjQ5NSwgMTI5MTI1LCAwLCAwLCA5MjU0MywgNjcxNzMsIDY3MTcyLCAxMjg0OSwgMzk1MywgMTg5NywgCi0gICAgOTMwNzEsIDY1MDk0LCAxMTk5NCwgNDMzOSwgNzQ1NTYsIDkyNjU0LCA2Nzg0MywgMCwgMCwgMTE5MDg3LCA2ODQ3MywgCi0gICAgNzQxMDQsIDUyMjgsIDExOTgzNSwgNzg2OCwgNDMxODQsIDAsIDEyMDk1NSwgNzM5ODYsIDQzNDM4LCAwLCA0MzAyMiwgCi0gICAgOTE3NTUzLCAxMTYyLCA3NDk5NSwgMjY3MSwgMTI4NTY3LCAxMjcxOTgsIDkyNjMyLCA5MjYzMSwgMTE4ODY1LCA0NTUzLCAKLSAgICA3MzgxMSwgOTgzNTczLCAxOTUwMDUsIDExODkyOCwgNjgwODUsIDE5OTIxLCA3MzgyMSwgMTE0MjQsIDE5NTAwMiwgNDU2NywgCi0gICAgNDE4OTEsIDAsIDk4Mzc4OCwgNTUyNDksIDQ4MjAsIDY1MjM5LCAxOTQ2NjIsIDAsIDE5NDY2NSwgNDMwNDIsIDExOTIxMiwgCi0gICAgMTM3NywgMTI4NjksIDQ4OTcsIDQyODIxLCA5MjUwLCA3MDI3MiwgNDQzOCwgNjQzODUsIDAsIDE3NTMsIDExMzMxLCA2MTQ3LCAKLSAgICAxOTQ5NDEsIDQzMjgyLCA4ODMzLCA2OTk5OCwgMCwgNjUwNCwgNzg0MDgsIDEyMTE2NiwgMTA3MTksIDcwMjc1LCAxODk4LCAKLSAgICAxNDEzLCA0MjQ0MywgMCwgODAyLCAxMjE0MSwgMTIxMTM4LCA4MzA5NywgNjY0OCwgMTA2NzEsIDI1MjgsIDAsIDY0Nzg5LCAKLSAgICA5MTY5LCA4MzgsIDY4ODE5LCA2ODgwNywgODQ0LCA1MDE0LCA2NjI5NywgMjU2LCA2ODgxOCwgOTk5MCwgMTI4Mzk4LCAKLSAgICA0MjczOSwgOTE3ODUxLCA3NTQyLCA2NTQ2NCwgOTcyNiwgODMyMjQsIDY0ODksIDEwMDQ4LCA3NDMyNiwgNzg3MTksIAotICAgIDY2NTczLCAwLCA3ODcyNCwgNzg3MTIsIDExNzYxLCAxMjEzMTQsIDgzMjI2LCA0MTA5NCwgMCwgNzc5NTgsIDE5NDg5MywgCi0gICAgNzg0MDMsIDkyNjg5LCA2MTk2LCA2OTQ1LCA5Mzk2OSwgMTIwOTQyLCA2NzA5NSwgMTIwNDkxLCAxMTgxNiwgNjg4NDYsIAotICAgIDU3MzMsIDI5MzAsIDcwMjc0LCAxMjcxNzksIDQxMDk4LCA5Mjc3MSwgNDEwOTMsIDY4ODM0LCA2NjYyNiwgNTg4LCA5NzYwLCAKLSAgICAxMjUwOTksIDE5NDcxNywgMTIzOCwgMjAwLCA5ODMyMDcsIDE2NjAsIDczOTE2LCAwLCA2NzE0MSwgNzQzNjIsIDAsIAotICAgIDkyNDg1LCAxMjQ5MzAsIDAsIDc0OTk5LCAzMzk0LCAxOTQ4OTQsIDEyMDY2OCwgMCwgNjk5OTYsIDEyNzM1OCwgNjYyMTksIAorICAgIDY4NjYwLCAwLCAxMDg1MywgOTI2LCA5ODMyOTYsIDc0MTg0LCAxMjA5MTUsIDEyMDA1NSwgMTE5MzAxLCA0MzE3NSwgCisgICAgMTI3MTAzLCA0MzAzNywgNDE3OTgsIDQxMDM1LCAxMTU4MywgMTI3NzY5LCA0MTgwMSwgMTAwNDk4LCAxMTk2MDUsIDUyMCwgCisgICAgNDIwMCwgMTI2OTksIDgzMzEsIDcwMTE4LCAzMDkxLCA0MTAzNCwgNjYyOTgsIDcwMjkzLCA4MzYwLCA5ODM0NDUsIDc4MDQ0LCAKKyAgICAzMjEsIDQyMjksIDY0NTQzLCAxMjg0NzAsIDY1NTYzLCAxMDA3NjQsIDEyOTMxMCwgMjg2MSwgNDM3OTMsIDEwMDk1LCAKKyAgICAxMjE0MjgsIDkxOTUsIDcyNzY3LCAxODYxLCA5ODMwNTYsIDczNzMzLCA5MTc3ODAsIDY4ODM5LCA0MzA0MSwgMCwgNDM3OTQsIAorICAgIDEwMDc2OSwgMzg1OSwgMTIxODEsIDQxNjYwLCA4MjA5LCA3MDc5MywgNzM4NjcsIDEyOTczLCA3NTAxNCwgNzQ3NTcsIAorICAgIDEyNzUxNCwgNDE2NTgsIDEyODM3NiwgMTIxMjM1LCA1NzYwLCAxMTM2OTksIDc0MywgNDQxNCwgMTIwNzY2LCAwLCA0MjYzMiwgCisgICAgMTI3MjM2LCA2NTE2MSwgNzM4OTYsIDEyODU4OSwgMTAwNTkzLCAxNDA1LCAxMTkwNjMsIDQzMjIwLCA0MzM0MSwgMTk0NzkyLCAKKyAgICAxOTkxOSwgNzAyNzgsIDY0NTMyLCA2NTM2NywgNDM3MTAsIDExMTk5LCAxMjE0MDAsIDM1MTMsIDcxMTE1LCA3MDM0MSwgCisgICAgNDMzNDIsIDExOTA2NCwgNjU1MjksIDY1MzY0LCA4MzIwOCwgODMxNzAsIDY0ODUsIDEzOTcsIDE5NDc4MSwgNDE5ODYsIAorICAgIDkyNjc4LCA4MzIwNCwgODMyMTIsIDc0MDk3LCA4MzIxMywgNzQ3MSwgMTIwNzksIDY3OTk3LCA2ODQzLCA0MzI4NywgCisgICAgOTIzMTcsIDAsIDY3NDA2LCAxMjAyMzksIDE5NDY3OCwgNzE5MTQsIDEwOTksIDEwNDkwLCA4MzIwMSwgMTA1MDEsIDY1MTgxLCAKKyAgICA3NDQ2MywgMTI4OTUyLCA0NjQsIDQxNjI0LCA2NTI4MywgNjc2NjMsIDc4MjIyLCAxMzQ2LCAxOTQ2MDksIDY1Njc5LCAKKyAgICA2NDU3MywgNjQ4OTcsIDQyMywgMTgxOCwgNjUxNDQsIDgyOTYzLCA4MjcyLCAxMjEyMDMsIDE5OTExLCA0MjE4LCAzMDg3LCAKKyAgICA2NDk2MCwgMTIxNDQ3LCA0MzU2NCwgOTgzNzQ5LCA5ODMxODIsIDk1ODQsIDEwNDY1LCA5ODM5MDIsIDc0MzU5LCAxMjYyNiwgCisgICAgOTEwNiwgOTgzMDY0LCA0MjY0MiwgNzEyMzUsIDY0NzUwLCA5MzkwLCAxMjA3MzcsIDQxNzk3LCAxOTQ3MzAsIDEyODMzMywgCisgICAgMjY1LCA0MTc5NSwgNjQ2NjYsIDc0NjI4LCA0MzUzMCwgMjc1MiwgMTI3MzY1LCAxMjg0NTksIDEyNjQ4MiwgNTksIAorICAgIDk4MzQyNywgMTIxNDEwLCAxMTE0OSwgNzgwNzQsIDc3ODczLCA0MTgxMCwgODMxNjIsIDcwMTAsIDAsIDQxODA5LCA0MTQ5NSwgCisgICAgMTE5MzY0LCA1ODc3LCA0MjI1MiwgNDIyMTMsIDgwMDksIDMzMDUsIDQzMDMzLCA1MTEsIDkyNzAwLCA0Mzg0OCwgMTMxMjcsIAorICAgIDEyMDA2NywgOTgzOTQ2LCA3NDM5NywgMTIwMjM1LCAxMDA4MzUsIDY1OTE1LCAxNDAwLCA0MTgxMiwgMTA2ODUsIDc1MDE3LCAKKyAgICAyMTAzLCAxMDM4NywgNDQ1MywgNDMyNzYsIDkxNzc4MywgMTExNjksIDEyODkzOSwgNjQ4MSwgNDEyMTMsIDAsIDEwMDgzOSwgCisgICAgMTI5MTMzLCAxMDA4MzgsIDQxOTgzLCA3NDE5OCwgNjYxNywgOTExNiwgMTE5NjU0LCA5Mjk5NSwgNDYyLCA2ODExMCwgCisgICAgMTA0OTMsIDEyMTQ0OSwgODEyOSwgOTI5OTQsIDEyODM2NSwgNzQ0NzEsIDY2NDQsIDExNjU4LCAwLCAxMjgyNDUsIDM0NTIsIAorICAgIDExOTA2LCA5NTgxLCAxMzg1LCAzMDk4LCAxMDA0NTcsIDExOTAxMywgNDMzNDAsIDExMTIzLCA0MTAzMywgNjQ5MywgCisgICAgNDI2MjYsIDAsIDEyOTA1MSwgMTE0MjYsIDc3ODg3LCAxNjgxLCAxMTg3ODksIDEyMDQsIDM3NTUsIDY0NjYxLCA3MjM1LCAKKyAgICAxMDE3MCwgMzk2NiwgODkxMSwgMTAxMDEzLCA0MTg0MSwgNDMzMzgsIDE5NDk1NCwgMTAwODQ4LCA1NzI2LCA2NDkxNSwgCisgICAgNDIxNzUsIDk4MzkxMywgMCwgNDE0OTcsIDY1MDQ0LCAxMDA4NDQsIDI4NTEsIDQzMDE3LCAxMDA0ODQsIDEyMDg5NiwgCisgICAgNDM3MywgNzgwNTgsIDAsIDk1ODcsIDE3ODksIDY2NzEsIDEyODg0MCwgMzEwMCwgMCwgNjUzNjAsIDEwMTAxMiwgOTIzNjUsIAorICAgIDEyMDkzNywgNjQ5MjIsIDEwMDQ4NiwgODE5MCwgMTIwODMsIDAsIDgzMTQxLCA2NTA2LCA2NDMxMiwgNzQzNzQsIDIzNjgsIAorICAgIDk4MzE4NywgNDQxOSwgMTIxMjU5LCAxMTkxMjUsIDM0MzksIDE4MjUsIDExOTIsIDEwMDQ4OCwgODg5MSwgMzA4MCwgCisgICAgMTIwMjI4LCAyMzQ3LCA1NDMwLCAxMDA0ODcsIDg5OTAsIDI4NDgsIDkyOTgxLCAxMjEzNzIsIDczOTQyLCAyNDksIAorICAgIDk4MzA0MCwgOTE3ODY5LCA5ODM4MjUsIDc0ODE0LCAxMTkzMjQsIDEyODcxMiwgODg4MywgMTE5ODYwLCA3MjgsIDExMTczLCAKKyAgICA5OTUsIDAsIDEwMDY1NywgNjQ4MjYsIDEwMDY1NiwgMTI5MzcxLCAxMjgzNDgsIDAsIDE5OTQ1LCA4MDkxLCA1NTgsIAorICAgIDEyOTEzNCwgMTIyNzMsIDEyOTE1NiwgNjc3MTQsIDEyMTEyLCA2NzI3MiwgNjcyNjUsIDY3MjczLCA2NzI3NCwgMTIzMzUsIAorICAgIDEyMDEwNCwgNjgwMTksIDM0NDMsIDMxMjksIDY3MjY3LCAyMTAyLCA2NTQ0NSwgNzgyNTgsIDY0ODkxLCAxOTUwNjksIAorICAgIDc3MjUsIDExODQzLCAxMTEyMCwgOTIwNSwgODYyNCwgNjkyNDYsIDEyNDQ2LCA0MzI5NSwgMTI4NTE5LCA0MTg5NCwgMCwgCisgICAgNjI3NywgNDE2NzIsIDQxODkzLCAxMDAxMCwgMTI3MzgxLCAzNTQwLCAxMDA4MjcsIDgzNSwgNzEzNDAsIDY5ODE2LCAKKyAgICAxMTk4NTQsIDc0NDA4LCAwLCA2NzEwOCwgNTQyNiwgNDI1OCwgODMxODgsIDEwMDc1OCwgNTQyNCwgOTIzMDYsIDgyODMsIAorICAgIDEyNzk3OCwgNTQzNCwgODMxOTYsIDEyOTAyNywgMTk5MTcsIDExNDA4LCAxMjczOTIsIDExOTQ3LCAxMjgzMzAsIDE0MDQsIAorICAgIDMwOTUsIDExNDMyLCAxMjExMjIsIDM0NjQsIDY0ODYsIDQ4MTksIDEwMDc1OSwgMTI3NDA0LCA1NzAsIDgwOTUsIDM2NzIsIAorICAgIDExOTg2NCwgMTQ5OCwgNjc4NjYsIDAsIDEyODUzOSwgNDMxLCA2NzgyMCwgNzgwODAsIDEyODE4MiwgMTI4MDk2LCA2ODE2NywgCisgICAgOTgzNDU5LCAxMzA5NiwgMTI4NjQzLCAxMjEwMTgsIDQzNDA4LCA5NTE2LCAxMjg1MzgsIDUyNjgsIDQyMjMwLCA0MjIyMCwgCisgICAgMCwgNDQ1MCwgMTIwNTExLCAxMTU0NywgNDM0MTcsIDEyODU0MiwgMzU2LCAzNDc3LCAyMjcsIDEwNDg4LCA2ODIwMywgMzgyLCAKKyAgICAxMTQxOCwgMTIwNjgxLCA1ODc4LCA5MTc4NjAsIDAsIDAsIDE5NDg3NywgNjQ4NCwgMjU0MSwgNjYwMzksIDExMzc3NywgCisgICAgNzgxNTcsIDkyNzIzLCAzNTQ5LCAxOTUwNjcsIDkxMTAsIDExOTY2NSwgMjc0MywgMTIxNDMyLCA0MzI5MCwgMTI4NTg1LCAKKyAgICA5MDk3LCA3NDM3OSwgNDMwMTUsIDg3ODIsIDAsIDc3NiwgMjUyNCwgNDI3MDcsIDg1NzMsIDEyMDkwMywgMTAwNjY2LCAwLCAKKyAgICA3MTEwMiwgNDI2OTQsIDY0OTQ0LCA4OTUyLCAzODU2LCAxMTg4MTgsIDEwMDY2MiwgNTg3MiwgNjQ5NSwgMTI5MTI1LCAKKyAgICAxMjc0NjcsIDAsIDkyNTQzLCA2NzE3MywgNjcxNzIsIDEyODQ5LCAzOTUzLCAxODk3LCA5MzA3MSwgNjUwOTQsIDExOTk0LCAKKyAgICA0MzM5LCA3NDU1NiwgOTI2NTQsIDY3ODQzLCAxMjg5NDYsIDAsIDExOTA4NywgNjg0NzMsIDY2Nzc4LCA1MjI4LCAxMTk4MzUsIAorICAgIDc4NjgsIDQzMTg0LCAwLCAxMjA5NTUsIDczOTg2LCA0MzQzOCwgMCwgNDMwMjIsIDkxNzU1MywgMTE2MiwgNzQ5OTUsIAorICAgIDI2NzEsIDEyODU2NywgMTI3MTk4LCA5MjYzMiwgOTI2MzEsIDExODg2NSwgNDU1MywgNzM4MTEsIDkxNzk0NywgMTEzNzIzLCAKKyAgICAxMTg5MjgsIDY4MDg1LCAxOTkyMSwgNzM4MjEsIDExNDI0LCAxOTUwMDIsIDQ1NjcsIDQxODkxLCAxMjcwMDQsIDk4Mzc4OCwgCisgICAgNTUyNDksIDQ4MjAsIDY1MjM5LCAxMjkzMzgsIDAsIDEwMTA0MywgNDMwNDIsIDExOTIxMiwgMTM3NywgMTI4NjksIDQ4OTcsIAorICAgIDQyODIxLCA5MjUwLCA3MDI3MiwgNDQzOCwgNjQzODUsIDAsIDE3NTMsIDExMzMxLCA2MTQ3LCAxMjg2MTEsIDQzMjgyLCAKKyAgICA4ODMzLCA2OTk5OCwgMCwgNjUwNCwgNzg0MDgsIDEwMDY4OCwgMTA3MTksIDcwMjc1LCAxODk4LCAxNDEzLCA0MjQ0MywgCisgICAgOTgzMzg3LCA4MDIsIDEyMTQxLCAxMjExMzgsIDgzMDk3LCA2NjQ4LCAxMDY3MSwgMjUyOCwgNzI4ODAsIDY0Nzg5LCA5MTY5LCAKKyAgICA4MzgsIDY4ODE5LCA2ODgwNywgODQ0LCA1MDE0LCA2NjI5NywgMjU2LCA2ODgxOCwgOTk5MCwgMTI4Mzk4LCA0MjczOSwgCisgICAgOTE3ODUxLCA3NTQyLCA2NTQ2NCwgOTcyNiwgODMyMjQsIDY0ODksIDEwMDQ4LCA3NDMyNiwgNzg3MTksIDY2NTczLCAwLCAKKyAgICA3ODcyNCwgNzg3MTIsIDExNzYxLCA3MDY2NSwgODMyMjYsIDQxMDk0LCAwLCA3Nzk1OCwgMTE5OTE4LCA3ODQwMywgOTI2ODksIAorICAgIDYxOTYsIDY5NDUsIDkzOTY5LCAxMjA5NDIsIDY3MDk1LCAxMjA0OTEsIDExODE2LCA2ODg0NiwgNTczMywgMjkzMCwgCisgICAgNzAyNzQsIDEyNzE3OSwgNDEwOTgsIDkyNzcxLCA0MTA5MywgNjg4MzQsIDY2NjI2LCA1ODgsIDk3NjAsIDEwMDU2OCwgCisgICAgMTk0NzE3LCAxMjM4LCAyMDAsIDk4MzIwNywgMTY2MCwgNzM5MTYsIDAsIDY3MTQxLCA3NDM2MiwgOTgzNzg0LCA5MjQ4NSwgCisgICAgMTI0OTMwLCAwLCA3NDk5OSwgMzM5NCwgNzA3MzQsIDEyMDY2OCwgMTAwNDc3LCA2OTk5NiwgMTI3MzU4LCA2NjIxOSwgCiAgICAgNzI0MjUsIDQzMjg0LCA2ODA3MiwgNzgxNywgMTg0MSwgMTEwNTUsIDY2ODM1LCAxOTQ5NzksIDc0NjA3LCAxNjY5LCAKLSAgICAxMDc3NiwgNzQ1MzQsIDc3MDEsIDE5NDk4MCwgOTgzNDUwLCA3NDk5MiwgMTczMiwgNDAzMCwgOTgzNDQyLCAzOTYzLCAKLSAgICA2NTMzNSwgMTI3NTMwLCA0MTc2OCwgNjQ5MSwgNjUzMzMsIDY1MzI0LCA5MTQsIDY1MzIzLCA4MDcxLCAzNTM4LCA5ODM4NDUsIAotICAgIDIyODcsIDY1MzI4LCA5MjQ0MSwgNzQzNjcsIDc2MTQsIDAsIDExODE5LCA3MTkwOCwgMTIwMDksIDEyMzk5LCAxMjEyMTcsIAotICAgIDY3ODUyLCA2NTUzNywgMCwgMTA4NDEsIDQzNDMwLCA1MzAxLCAwLCA5MjYxOCwgNTczNCwgODk2MCwgMCwgNzAxMjMsIAotICAgIDY1MzE3LCA3Nzg4MCwgMCwgNTg3NiwgNzAzNzQsIDEyMzA0LCAwLCAwLCA2NTMxNSwgOTI2NzAsIDEyODUxMSwgNzE4NjIsIAotICAgIDAsIDEyNzk1NywgMTE5NjIxLCAxMTExNCwgNzE5MDksIDEyNDQ3LCA2NDQ4NiwgMTIxMjM2LCAxMjY1NjIsIDk4MzEyOSwgMCwgCi0gICAgMTIxMzkzLCA5ODM4MDIsIDQyNzY3LCAxMDkxNSwgOTgzMTc0LCAxMjAwNywgNDM2OTUsIDY4MDMzLCAxMTk3NSwgMTk0ODc4LCAKLSAgICAwLCA5MjYwNCwgMjU1NSwgODYyOSwgMTI4NjQwLCA0MTEzMywgNDE4NzIsIDQzNzA2LCA0NDk2LCAxOTQ4NzksIDgzMTA4LCAKLSAgICAxMjAyNDEsIDEyODE2NCwgMCwgMCwgOTgzNTUzLCA2NDczMCwgNzAwNDEsIDY2NzE0LCA2ODIyMiwgMCwgNzAwNzYsIAotICAgIDY1NTk2LCA2NzgzNywgMTE0MTYsIDQyODAsIDY3NjU1LCA4NzY1LCAxMjc4NCwgNzc5MiwgMTM5MywgNzgxOTEsIDExMTU3LCAKLSAgICA3NDM4NiwgMTI3Mjc0LCA4MjMzLCAxMjgyMCwgOTgzNzMwLCA2NjgzLCAxMjUxMTIsIDM0NDIsIDEyMTQ0LCAyODQxLCAKLSAgICAxMjU0MywgMCwgMTQ3MywgNDI4MjAsIDY0MzI5LCAxMjA4ODAsIDY3MjQzLCA2ODY0MiwgNjQ4OCwgMzU3LCAxMDQ4LCAKLSAgICA0MTEwMCwgNzI0MTcsIDQxMTA0LCA5NDAwMywgMzQwNiwgMTA1NCwgNzEzMjAsIDEwNDAsIDY1NDUwLCA5ODMzODUsIDQ0MzQsIAotICAgIDEwNjksIDE5NDc4NCwgMTE4ODYyLCA2NTczNywgMTIxMjAyLCAxMjg3MDUsIDAsIDgzMjExLCA5NjkzLCA0MTk0MywgCi0gICAgNjgzMDUsIDQxOTMxLCA0MTc1OSwgMTI3NTcsIDQzNTMsIDk4MzM1MywgMTA1OSwgOTc5MCwgODk5NSwgMTE5OTc0LCAKLSAgICA5MTc3NzAsIDY1OTM3LCA3ODU3MiwgNDE3NTgsIDEwNjQ2LCAxMjExNTksIDExODgzMywgOTIzNzIsIDcwNDI0LCA3NDgzMCwgCi0gICAgNzg1NjksIDEyNzQzLCA5ODM2ODksIDY0ODAsIDkxNzc2MSwgNDE3NzksIDQyNTgwLCA2NjYwMSwgMTIyMDcsIDc3ODk1LCAKLSAgICA2MzM1LCA0MzkxOSwgMTEzMTIsIDY0ODA3LCA5Mjk2MiwgNjk5ODksIDQxNzY3LCAxMTk2MjksIDk4Mzc2NCwgNDMwMjAsIAotICAgIDc0OTc0LCAzOTU1LCA3NDI1NCwgMTIwNjMyLCA5ODM3NTQsIDkxNzg2MSwgNzAxODcsIDY5OTc1LCA5NzcwLCA5MjQ2LCAKLSAgICAxMjIzMCwgMTI1MDQ3LCAxMjkxMDUsIDc4NTgwLCAxMDQ0OCwgNDE3ODMsIDQxNzg2LCAxMjcwOTMsIDEyNzk3LCAyNzU1LCAKLSAgICA2NDU3MSwgNzg1NzgsIDE5NDkyNywgNDg1NywgOTgzNTc3LCA0NDI4LCAxMjc5NCwgNzM3NTUsIDEyODA2MSwgNzg1NzQsIDAsIAotICAgIDExMTE2LCA0Mzg0MiwgNTc0NywgNzg4MjUsIDcwNDcxLCA3OTc4LCA0MTA5MiwgNzQ1NzEsIDAsIDExOTI0LCA0MzgxMiwgCi0gICAgNDIxNDQsIDY1MDE1LCAwLCA1NjMsIDAsIDEyOTQxMiwgMTI3OTgsIDExMjcxLCA1NywgOTI3MTcsIDgzNDk1LCA5MTc4NjAsIAotICAgIDExOTA0MywgOTE3NjE4LCA5NDA1MSwgNDMxMzcsIDY5NCwgOTgzNzE5LCA5ODc2LCAwLCAxMTkxNjgsIDAsIDcwMzkyLCAKLSAgICA2NDUzNywgMTI3OTE0LCAyNzcsIDc0Mzg1LCA3MjI5LCAxMjc2MSwgOTgzMTQ1LCA3NDQ2NiwgMTMwMjUsIDY0ODExLCAKLSAgICA4NzU3LCA3ODgyNCwgNzgxODgsIDE1NzQsIDczODEsIDAsIDI1MjUsIDQ4NTIsIDU3NDksIDY4NDY1LCAxMzAyNywgNDI4MjQsIAotICAgIDEyMDU3NCwgMTAzOSwgNzE1MSwgMTAxNTUsIDU3NDUsIDE4OCwgNDE4NTgsIDExNTkyLCAxMjkxNTYsIDY5NzI1LCA5MDU1LCAKLSAgICA0MTg1MywgNDg1OCwgNzUwMDAsIDkxNzk5MCwgNDM2LCA0NzcxLCA5MTc5MzYsIDI3ODYsIDkzMDI4LCA0ODU2LCA4MDUxLCAKLSAgICA5MjUwMCwgMTE5NjA5LCA3MTMyNywgOTY0NCwgNzExMzMsIDEyNTAwOSwgMTI4ODczLCAxOTQ5MTYsIDEyMDczMiwgNjY3MTAsIAotICAgIDY4MDg0LCA5ODMzNjEsIDczOTA2LCA2NzQwOSwgMTI3MTE0LCA5MTc5MTYsIDEwMjM0LCA1ODQzLCAxMTkzOSwgNzAzNDYsIAotICAgIDQyMTU3LCAwLCAzMTU3LCAxOTQ2NTksIDY4MzkzLCA3NTAzNSwgMzUwNCwgNzA0MjIsIDAsIDEwODIyLCA1MTQ5LCA2NjAyOSwgCi0gICAgMTAyMjYsIDY1MTQyLCAxMjgwMjUsIDM1OTQsIDQyNDI0LCAxMjQ5OTMsIDQwLCAxMjY1NywgOTgzNjY1LCAwLCAzODYsIAotICAgIDEyMTQ2NywgODgzNCwgMTIwOTc0LCAxMjgxNSwgNDM1NzQsIDEyMTQzMCwgNzM5MDcsIDEyNzc5MiwgNzAxMTMsIDcyMjAsIAotICAgIDExODM5LCAxMjExNDMsIDc0MzE2LCAxOTQ3NTIsIDY1MzIyLCA0MzA0LCA3NDUwMywgODE2MCwgNzQzMTQsIDE5NDc1MywgCi0gICAgMTIxMjc2LCAwLCAxMjg1MjYsIDEzNDgsIDkyMzQ5LCA3ODU5NywgMTIxMTM5LCAxMzMwMywgNzA0MDYsIDkyMzkyLCAKLSAgICAxMjg0NzQsIDc1OTksIDEyNzgsIDQzNjE2LCAxMzI2OSwgMTI3ODA1LCAxMjcxMTAsIDc0Mzg3LCA3ODE3OSwgNzg1OTgsIAotICAgIDc0NDkyLCA2MDk3LCA3NTY4LCA4NzgwLCA0OTgyLCAxMjc0NjQsIDc0NTAxLCAxOTQ3NjMsIDc4NTkyLCA2ODc0NSwgMjY3MiwgCi0gICAgMzczNSwgMTI3NDcwLCAxMzEzOCwgNDIyNjYsIDk0ODQsIDEwNzI0LCA0MTIwMiwgNzEzNjQsIDEyODM3MCwgNDM3NDIsIAotICAgIDEyODM3MywgOTQ4NywgMTE5OTU5LCA2ODc4NSwgMzg0MiwgNzE5MTEsIDc4NjY4LCAxMjQ0MiwgNjE5MywgOTc5MSwgCi0gICAgMTE5MzQ0LCAwLCA0MjUxNiwgNzIyOCwgNzU1OSwgNzQ4MDMsIDY2NzIxLCA3ODczLCAxMTM5OSwgMTE5MjE5LCAxOTQ2OTEsIAotICAgIDcwMDA2LCAxOTQ2OTAsIDEyNzUzNywgMzYwNCwgMTIwNjgzLCAxMTkxODgsIDEyODg3NywgNzg1NDAsIDc4NTQxLCA0MjUwNywgCi0gICAgMTk2MiwgNDMzMDUsIDc4NDc2LCA0MjUwNSwgMTE2NjAsIDEyMTAyMSwgMjA3MiwgOTIzMTIsIDY5OTUsIDc0MTczLCA1NDM3LCAKLSAgICA3NDE3NCwgMTA2NjksIDg3MDIsIDc5NjQsIDkyMzUyLCA5ODM3NzYsIDE5OSwgNjgwNzUsIDQxMDUsIDE5NDg0NSwgCi0gICAgMTI3OTQyLCA3NTAwNiwgMTk0NzEwLCA2NzgxOCwgMTMxNDgsIDc1NjAsIDc4NDc5LCA5MjI2LCA3ODQ3OCwgMTk1MDcwLCAKLSAgICA2NDcyLCA2NTgxNCwgNzE5MTksIDEyMTIxOCwgNDcyNCwgMTI4NDkxLCAxOTUwNDEsIDkxOTEsIDE5NDY0NSwgNjQ0MzIsIAotICAgIDEyMDI3MCwgODI5ODcsIDExOTE5MCwgMTAxOTYsIDc4ODYsIDAsIDY1ODUsIDAsIDY2ODAsIDE5NTA0MiwgOTgzNDI1LCAKLSAgICA3MTg3MiwgNjY3OSwgNzQ0MTIsIDkyMjUxLCAxOTQ4NjYsIDc0NDIxLCAxMTM4MiwgMTI4MjU0LCA0Mzg2MiwgNzg1OTEsIAotICAgIDExMzczMywgMTk0Njc5LCAxOTQ4MzIsIDY2ODEsIDEyNzQ4MiwgMTI2OTMsIDE5NDgzNiwgNDI3MjcsIDc4MTk2LCAKLSAgICAxMjgyNTIsIDQzODc0LCA2NTQ0MiwgNjgwNDcsIDY5NzMzLCA5OTg5LCA0MzI0OCwgNjYyNDgsIDE5NDgxNiwgMCwgMTEzMjEsIAotICAgIDEyODg0NSwgMTIwODA5LCAxOTQ4MTksIDUyOTcsIDcwNDIsIDEzMjg0LCA2MTEyLCA3OTY4LCA5MzAxMCwgNzM5MjcsIAotICAgIDkyNDQ0LCAxMjczMzYsIDY1NzQ2LCAxMTg3OTYsIDY5ODg5LCA3NDM4OSwgMTI4Njk2LCA0MzQyLCA0MjgzOSwgMTIxMzM5LCAKLSAgICAxNjc3LCA5MTc1OTIsIDgyOTg5LCAxMjY1OTAsIDgzNDE1LCAxMTA5MSwgMTEwMTEsIDI3MTksIDAsIDAsIDExOTU5NSwgCi0gICAgMTAxNjAsIDAsIDEyOTE1MCwgNzU4NSwgNjUxNjksIDIwNTIsIDQzMDgsIDgzNDE0LCA0MzAwMCwgNzUwNSwgNTQzLCAKLSAgICA2NDkxNiwgNjQ3MzYsIDExODgzNSwgMCwgNjQ2NTUsIDk4MzA1MywgMTE4OTIyLCAyMDY0LCAwLCA0MzE1OCwgNzkwMiwgCi0gICAgOTgzMjMxLCA2NTI2NSwgMTk0NjM5LCAxMjEwODAsIDEyNzE3MCwgMTI3MDQxLCAxMjgwMDYsIDkyNTUwLCA5ODMxODYsIAotICAgIDEyOTk0LCA5MjcyOCwgMTA4MjgsIDc0Mzc4LCA2MjI4LCA0MzA3LCAzNDgyLCAxMjg1MjcsIDgzMjMxLCA3MjM4OSwgCi0gICAgODMwNzksIDUwNiwgNzQ1NzMsIDQxMTk0LCA2NTczNSwgMjA1NSwgNDMyNTUsIDQxMTk1LCAwLCA4MTY5LCAxMjE0MDcsIAotICAgIDg4NDEsIDk4Mzc0NywgNTE2LCA5Mzk3NCwgMjA2MywgMTE5MDUxLCAzNCwgMTI4ODUwLCAxMjAxODYsIDExNTA0LCAxNjEyLCAKLSAgICA3NDMzMywgMTIwMTgyLCAxMTgyNywgNjcxNjUsIDEyMDAxLCAxMjAxNzgsIDEwMjQyLCA2NDU2NCwgMTIwMTc5LCA2Nzk4NiwgCi0gICAgNjU4NCwgNzc0OSwgMTEwMzcsIDEyODc0MywgMTc1OCwgMTE5MDc0LCAxMDY2NywgMTA1NjAsIDEyMDE5NywgOTI1OTMsIAotICAgIDE5MzUsIDExNTE3LCAxMjAxOTMsIDEyMDE5NiwgODMwODIsIDE5MzEsIDEyMDE4OSwgNzQ4MzksIDEyMDE5MSwgMTIxNywgCi0gICAgNjQ3MDIsIDEyNjQzLCA4MjUsIDEyNzgzOCwgMTk0OTA1LCAxMjI5NCwgOTI0MjgsIDc4ODM0LCA5MTM4LCA3ODgzMSwgCi0gICAgNzg4MzMsIDEyNjMxLCA3MTg3MSwgMTEwODAsIDc0NTU0LCA2NDAwMCwgNTU5MSwgMTIzOSwgMTI3MTk5LCAxMTMxMywgCi0gICAgMTk0ODAzLCAzNDAzLCA5ODM2NTUsIDEyMDI3MSwgNjQzNjQsIDkyMjY5LCAxMjEyODIsIDcyNDMxLCA4OTk4LCAxMjk4OCwgCi0gICAgMTE5OTgzLCA5MTUyLCA5MjE2MSwgMCwgMTI2NDg0LCA2NzU4OSwgNDE4NTAsIDY0MjkwLCAzNDMzLCA5MjM5MywgMTI2MTUsIAotICAgIDE1OTQsIDQyMTkyLCA2OTE0LCA2NjM5MiwgMCwgMTE5NTY5LCA3NDU2NSwgNDEzNTMsIDY3NjAyLCA2NzYxMSwgNDMzNywgMCwgCi0gICAgMTI3Mjk2LCA5MTgsIDY1MDM1LCA0MTM1MSwgNzY4MSwgMTk0OTAwLCA0MjU3NywgNDEzOTMsIDEyNjY4LCA3MjM5NSwgCi0gICAgMjQ3NywgMTI3Mjg1LCAxMjEyNDksIDExODg4MCwgMCwgNjc2MDQsIDY3NjgzLCAxMjcyMzUsIDU3MywgMTI3MjgyLCAKLSAgICAxMjA1NDMsIDExNDE3LCA5MjY2MSwgMTE5ODE0LCAxMTkzMDksIDY3NTk5LCAwLCA3MjQxMCwgNjc2MDcsIDExNDgyLCAwLCAKLSAgICAzOTgxLCAzMzU3LCAwLCA0MjIyMywgNDIwNywgMTI4OCwgNzg1MDMsIDc4ODM5LCA2NzcyOCwgNzc5MDcsIDExNTg5LCAKKyAgICAxMDc3NiwgNzQ1MzQsIDc3MDEsIDE5NDk3NiwgMTAwNDc0LCA3NDk5MiwgMTczMiwgNDAzMCwgOTgzNDQyLCAzOTYzLCAKKyAgICA2NTMzNSwgMTI3NTMwLCA0MTc2OCwgNjQ5MSwgNjUzMzMsIDY1MzI0LCA5MTQsIDY1MzIzLCA4MDcxLCAzNTM4LCAxOTUwMTMsIAorICAgIDIyODcsIDY1MzI4LCA5MjQ0MSwgNzQzNjcsIDc2MTQsIDk4Mzk1MywgMTE4MTksIDcxOTA4LCAxMjAwOSwgMTIzOTksIAorICAgIDEyMTIxNywgNjc4NTIsIDY1NTM3LCA3ODAwMiwgMTA4NDEsIDQzNDMwLCA1MzAxLCAwLCA5MjYxOCwgNTczNCwgODk2MCwgMCwgCisgICAgNzAxMjMsIDY1MzE3LCA3Nzg4MCwgOTgzMTk5LCA1ODc2LCA3MDM3NCwgMTIzMDQsIDEyOTM1NSwgMCwgNjUzMTUsIDkyNjcwLCAKKyAgICAxMjg1MTEsIDcxODYyLCAwLCAxMjc5NTcsIDExOTYyMSwgMTExMTQsIDcxOTA5LCAxMjQ0NywgNjQ0ODYsIDEyMTIzNiwgCisgICAgMTI2NTYyLCA5ODMxMjksIDAsIDEyMTM5MywgOTgzODAyLCA0Mjc2NywgMTA5MTUsIDk4MzE3NCwgMTIwMDcsIDQzNjk1LCAKKyAgICA2ODAzMywgMTE5NzUsIDEwMTAxMCwgMTI4NzQ1LCA5MjYwNCwgMjU1NSwgODYyOSwgMTI4NjQwLCA0MTEzMywgNDE4NzIsIAorICAgIDQzNzA2LCA0NDk2LCAxMDA2OTIsIDgzMTA4LCAxMjAyNDEsIDEyODE2NCwgMTAwNjkxLCAwLCA5ODM1NTMsIDY0NzMwLCAKKyAgICA3MDA0MSwgNjY3MTQsIDY4MjIyLCAwLCA3MDA3NiwgNjU1OTYsIDY3ODM3LCAxMTQxNiwgNDI4MCwgNjc2NTUsIDg3NjUsIAorICAgIDEyNzg0LCA3NzkyLCAxMzkzLCA3ODE5MSwgMTExNTcsIDc0Mzg2LCAxMjcyNzQsIDgyMzMsIDEyODIwLCAxMDA4NDcsIAorICAgIDY2ODMsIDEyNTExMiwgMzQ0MiwgMTIxNDQsIDI4NDEsIDEyNTQzLCAxMDA2OTksIDE0NzMsIDQyODIwLCA2NDMyOSwgCisgICAgMTAwODE2LCA2NzI0MywgNjg2NDIsIDY0ODgsIDM1NywgMTA0OCwgNDExMDAsIDcyNDE3LCA0MTEwNCwgOTQwMDMsIDM0MDYsIAorICAgIDEwNTQsIDcxMzIwLCAxMDQwLCA2NTQ1MCwgMTEzNzY5LCA0NDM0LCAxMDY5LCAxOTQ3ODQsIDEwMDcwMywgNjU3MzcsIAorICAgIDEyMDEyOSwgMTIwMzAyLCAwLCA4MzIxMSwgOTY5MywgNDE5NDMsIDY4MzA1LCA0MTkzMSwgNDE3NTksIDEyNzU3LCA0MzUzLCAKKyAgICA5ODMzNTMsIDEwNTksIDk3OTAsIDg5OTUsIDExOTk3NCwgOTE3NzY5LCA2NTkzNywgNzg1NzIsIDQxNzU4LCAxMDY0NiwgCisgICAgMTAwNjY1LCAxMTg4MzMsIDIyNjgsIDcwNDI0LCA3NDgzMCwgNzg1NjksIDEyNzQzLCA5ODM2ODksIDY0ODAsIDkxNzc2MSwgCisgICAgNDE3NzksIDQyNTgwLCA2NjYwMSwgMTIyMDcsIDc3ODk1LCA2MzM1LCA0MzkxOSwgMTEzMTIsIDY0ODA3LCA5Mjk2MiwgCisgICAgNjk5ODksIDQxNzY3LCAxMTk2MjksIDk4Mzc2NCwgNDMwMjAsIDc0OTc0LCAzOTU1LCA3NDI1NCwgMTIwNjMyLCA5ODM3NTQsIAorICAgIDkxNzg2MSwgNzAxODcsIDY5OTc1LCA5NzcwLCA5MjQ2LCAxMjIzMCwgMTI1MDQ3LCAxMjkxMDUsIDc4NTgwLCAxMDQ0OCwgCisgICAgNDE3ODMsIDQxNzg2LCA3MDY2MywgMTI3OTcsIDI3NTUsIDY0NTcxLCA3ODU3OCwgMTI3OTk0LCA0ODU3LCA5ODM1NzcsIAorICAgIDQ0MjgsIDEyNzk0LCA3Mzc1NSwgMTAwNzIyLCA3ODU3NCwgMCwgMTExMTYsIDQzODQyLCA1NzQ3LCA3ODgyNSwgNzA0NzEsIAorICAgIDc5NzgsIDQxMDkyLCA3NDU3MSwgMCwgMTE5MjQsIDQzODEyLCA0MjE0NCwgNjUwMTUsIDEwMDcyNSwgNTYzLCAwLCAKKyAgICAxMDA3OTUsIDEyNzk4LCAxMTI3MSwgNTcsIDkyNzE3LCA4MzQ5NSwgMTAwNzI3LCAxMTkwNDMsIDcxMjY4LCA5NDA1MSwgCisgICAgNDMxMzcsIDY5NCwgOTgzNzE5LCA5ODc2LCAxMjg3MjAsIDgzMjczLCAwLCA3MDM5MiwgNjQ1MzcsIDEyNzkxNCwgMjc3LCAKKyAgICA3NDM4NSwgNzIyOSwgMTI3NjEsIDk4MzE0NSwgNzQ0NjYsIDEzMDI1LCA2NDgxMSwgODc1NywgNzg4MjQsIDc4MTg4LCAKKyAgICAxNTc0LCA3MzgxLCAxOTQ2MTYsIDI1MjUsIDQ4NTIsIDU3NDksIDY4NDY1LCAxMzAyNywgNDI4MjQsIDEyMDU3NCwgMTAzOSwgCisgICAgNzE1MSwgMTAxNTUsIDU3NDUsIDE4OCwgNDE4NTgsIDExNTkyLCAxMDA2NjEsIDY5NzI1LCA5MDU1LCA0MTg1MywgNDg1OCwgCisgICAgNzUwMDAsIDkyODk2LCA0MzYsIDQ3NzEsIDkxNzkzNiwgMjc4NiwgOTMwMjgsIDQ4NTYsIDgwNTEsIDkyNTAwLCAxMTk2MDksIAorICAgIDcxMzI3LCA5NjQ0LCA3MTEzMywgMTI1MDA5LCAxMjg4NzMsIDE5NDkxNiwgMTIwNzMyLCA2NjcxMCwgNjgwODQsIDk4MzM2MSwgCisgICAgNzM5MDYsIDY3NDA5LCAxMjcxMTQsIDkxNzYxNCwgMTAyMzQsIDU4NDMsIDExOTM5LCA3MDM0NiwgNDIxNTcsIDAsIDMxNTcsIAorICAgIDE5NDY1OSwgNjgzOTMsIDc1MDM1LCAzNTA0LCA3MDQyMiwgOTgzMDQyLCAxMDgyMiwgNTE0OSwgNjYwMjksIDEwMjI2LCAKKyAgICA2NTE0MiwgMTI4MDI1LCAzNTk0LCA0MjQyNCwgMTI0OTkzLCA0MCwgMTI2NTcsIDk4MzY2NSwgMCwgMzg2LCAxMjE0NjcsIAorICAgIDg4MzQsIDEyMDk3NCwgMTI4MTUsIDQzNTc0LCAxMjE0MzAsIDczOTA3LCAxMDA1MTMsIDcwMTEzLCA3MjIwLCAxMTgzOSwgCisgICAgMTIxMTQzLCA3NDMxNiwgMTk0NzUyLCA2NTMyMiwgNDMwNCwgNzQ1MDMsIDgxNjAsIDc0MzE0LCAxMDA1MTEsIDEyMTI3NiwgCisgICAgOTgzOTQwLCAxMjg1MjYsIDEzNDgsIDkyMzQ5LCA3ODU5NywgMTIxMTM5LCAxMzMwMywgNzA0MDYsIDkyMzkyLCAxMjEzODQsIAorICAgIDc1OTksIDEyNzgsIDQzNjE2LCAxMzI2OSwgMTI3ODA1LCA5MjQyMywgNzQzODcsIDc4MTc5LCA3ODU5OCwgNzQ0OTIsIAorICAgIDYwOTcsIDc1NjgsIDg3ODAsIDQ5ODIsIDEyNzQ2NCwgNzQ1MDEsIDEwMDcyMCwgNzg1OTIsIDY4NzQ1LCAyNjcyLCAzNzM1LCAKKyAgICAxMjc0NzAsIDEzMTM4LCA0MjI2NiwgOTQ4NCwgMTA3MjQsIDQxMjAyLCA3MTM2NCwgMTI4MzcwLCA0Mzc0MiwgMTI4MzczLCAKKyAgICA5NDg3LCAxMTk5NTksIDY4Nzg1LCAzODQyLCA3MTkxMSwgNzg2NjgsIDEyNDQyLCA2MTkzLCA5NzkxLCAxMTkzNDQsIAorICAgIDEwMDUyMCwgNDI1MTYsIDcyMjgsIDc1NTksIDc0ODAzLCA2NjcyMSwgNzg3MywgMTEzOTksIDExOTIxOSwgMTk0NjkxLCAKKyAgICA3MDAwNiwgMTk0NjkwLCAxMDA1MTgsIDM2MDQsIDEyMDY4MywgMTE5MTg4LCAxMjg4NzcsIDc4NTQwLCA3ODU0MSwgNDI1MDcsIAorICAgIDE5NjIsIDQzMzA1LCA3ODQ3NiwgNDI1MDUsIDExNjYwLCAxMTk1OTcsIDIwNzIsIDkyMzEyLCA2OTk1LCA3MjgwMSwgNTQzNywgCisgICAgNzQxNzQsIDEwNjY5LCA4NzAyLCA3OTY0LCA5MjM1MiwgMTAwNTE0LCAxOTksIDY4MDc1LCA0MTA1LCAxOTQ4NDUsIDM4NjQsIAorICAgIDc1MDA2LCAxOTQ3MTAsIDY3ODE4LCAxMzE0OCwgNzU2MCwgNzg0NzksIDkyMjYsIDc4NDc4LCAxMjg0NzEsIDY0NzIsIAorICAgIDY1ODE0LCA3MTkxOSwgMTAwODU1LCA0NzI0LCAxMjg0OTEsIDE5NTA0MSwgOTE5MSwgMTk0NjQ1LCA2NDQzMiwgMTIwMjcwLCAKKyAgICA4Mjk4NywgMTE5MTkwLCAxMDE5NiwgNzg4NiwgMCwgNjU4NSwgMTk0NjQwLCA2NjgwLCAxOTUwNDIsIDk4MzQyNSwgNzE4NzIsIAorICAgIDY2NzksIDc0NDEyLCA5MjI1MSwgMTE5MzUwLCA3NDQyMSwgMTEzODIsIDEyODI1NCwgNDM4NjIsIDc1MDAxLCAxMTM3MzMsIAorICAgIDE5NDY3OSwgMTk0ODMyLCA2NjgxLCAxMjc0ODIsIDEyNjkzLCAxOTQ4MzYsIDQyNzI3LCA3ODE5NiwgMTI4MjUyLCA0Mzg3NCwgCisgICAgNjU0NDIsIDY4MDQ3LCA2OTczMywgOTk4OSwgNDMyNDgsIDY2MjQ4LCAxOTQ4MTYsIDEyNzUzNCwgMTEzMjEsIDEyODg0NSwgCisgICAgMTIwODA5LCAxMjI4OTUsIDUyOTcsIDcwNDIsIDEzMjg0LCA2MTEyLCA3OTY4LCA5MzAxMCwgNzM5MjcsIDkyNDQ0LCAKKyAgICAxMjczMzYsIDY1NzQ2LCAxMTg3OTYsIDY5ODg5LCA3NDM4OSwgMTI4Njk2LCA0MzQyLCA0MjgzOSwgMTIxMzM5LCAxNjc3LCAKKyAgICA5MTc1OTIsIDgyOTg5LCAxMjY1OTAsIDgzNDE1LCAxMTA5MSwgMTEwMTEsIDI3MTksIDAsIDAsIDExOTU5NSwgMTAxNjAsIDAsIAorICAgIDEyOTE1MCwgNzU4NSwgNjUxNjksIDIwNTIsIDQzMDgsIDgzNDE0LCA0MzAwMCwgNzUwNSwgNTQzLCA2NDkxNiwgNjQ3MzYsIAorICAgIDExODgzNSwgMTk0NjY1LCA2NDY1NSwgOTgzMDUzLCAxMTg5MjIsIDIwNjQsIDkxNzk2NiwgNDMxNTgsIDc5MDIsIDk4MzIzMSwgCisgICAgNjUyNjUsIDE5NDYzOSwgMTIxMDgwLCAxMjcxNzAsIDEyMjkxNSwgMTI4MDA2LCA5MjU1MCwgOTgzMTg2LCAxMjk5NCwgCisgICAgOTI3MjgsIDEwODI4LCA3NDM3OCwgNjIyOCwgNDMwNywgMzQ4MiwgMTI4NTI3LCA4MzIzMSwgNzIzODksIDgzMDc5LCA1MDYsIAorICAgIDc0NTczLCA0MTE5NCwgNjU3MzUsIDIwNTUsIDQzMjU1LCA0MTE5NSwgMCwgODE2OSwgMTIxNDA3LCA4ODQxLCA2Njc3MCwgCisgICAgNTE2LCA5Mzk3NCwgMjA2MywgMTE5MDUxLCAzNCwgMTI4ODUwLCAxMjAxODYsIDExNTA0LCAxNjEyLCA3NDMzMywgMTIwMTgyLCAKKyAgICAxMTgyNywgNjcxNjUsIDEyMDAxLCAxMjAxNzgsIDEwMjQyLCA2NDU2NCwgMTIwMTc5LCA2Nzk4NiwgNjU4NCwgNzc0OSwgCisgICAgMTEwMzcsIDEyNzE1NywgMTc1OCwgMTE5MDc0LCAxMDY2NywgMTA1NjAsIDEyMDE5NywgOTI1OTMsIDE5MzUsIDExNTE3LCAKKyAgICAxMjAxOTMsIDEyMDE5NiwgODMwODIsIDE5MzEsIDEwMDQ5OSwgNzQ4MzksIDc0MTA0LCAxMjE3LCA2NDcwMiwgMTI2NDMsIAorICAgIDgyNSwgMTI3ODM4LCAxOTQ5MDUsIDEyMjk0LCA5MjQyOCwgNjY3NDgsIDkxMzgsIDc4ODMxLCA3ODgzMywgMTI2MzEsIAorICAgIDcxODcxLCAxMTA4MCwgNzQ1NTQsIDY0MDAwLCA1NTkxLCAxMjM5LCAxMjcxOTksIDExMzEzLCAxOTQ4MDMsIDM0MDMsIAorICAgIDEyNjU2NCwgMTIwMjcxLCA2NDM2NCwgOTIyNjksIDEyMTI4MiwgNzI0MzEsIDg5OTgsIDEyOTg4LCAxMTk5ODMsIDkxNTIsIAorICAgIDkyMTYxLCAwLCAxMjY0ODQsIDY3NTg5LCA0MTg1MCwgNjQyOTAsIDM0MzMsIDkyMzkzLCAxMjYxNSwgMTU5NCwgNDIxOTIsIAorICAgIDY5MTQsIDY2MzkyLCAxMjUyMDIsIDExOTU2OSwgNzQ1NjUsIDQxMzUzLCA2NzYwMiwgNjc2MTEsIDQzMzcsIDAsIDEyNzI5NiwgCisgICAgOTE4LCA2NTAzNSwgNDEzNTEsIDc2ODEsIDE5NDkwMCwgNDI1NzcsIDQxMzkzLCAxMjY2OCwgNzIzOTUsIDI0NzcsIAorICAgIDEyNzI4NSwgMTIxMjQ5LCAxMTg4ODAsIDAsIDY3NjA0LCA2NzY4MywgMTI3MjM1LCA1NzMsIDEyNzI4MSwgMTIwNTQzLCAKKyAgICAxMTQxNywgOTI2NjEsIDExOTgxNCwgMTE5MzA5LCA2NzU5OSwgMCwgNzI0MTAsIDY3NjA3LCAxMTQ4MiwgMTI4OTYxLCAKKyAgICAzOTgxLCAzMzU3LCAxMjcxNjQsIDQyMjIzLCA0MjA3LCAxMjg4LCA3ODUwMywgNzg4MzksIDY3NzI4LCA3NzkwNywgMTE1ODksIAogICAgIDQyMTk1LCA3NDQ3NywgMTE5OTk3LCAxMjcxNzgsIDY0NjAyLCA2NzYxOCwgOTI1MzksIDEyMTM2NiwgNDI3ODgsIDY4NDE2LCAKLSAgICA2NDQ4MCwgMTk0ODc1LCA4NDIzLCAzMzQ4LCA0NDgsIDY2OTA3LCA5NzE3LCAxMTkzMTEsIDAsIDk5NywgMCwgMCwgOTI1NzcsIAotICAgIDAsIDExNDQwLCAxMTM3OSwgNDIwMDAsIDEzMTM5LCA0MjIyMSwgNjUwMTMsIDEyNjk5OSwgMTI3NzYwLCA3MjM5MCwgMCwgCi0gICAgMTE5MjI4LCAxMjAzNSwgMCwgMjgxOCwgMCwgNzQ0MTEsIDczNzkzLCA5ODMyNzgsIDQxNzIsIDcxMjUyLCAxMTk5OTIsIAotICAgIDgzNzMsIDEwODczLCAxMjE5NywgMTI1MDc0LCAxOTUwMTQsIDkyMjY1LCA2OTcwNiwgMTI4NTQwLCA2ODM0LCA3NDM0NywgCi0gICAgNzQ5NTgsIDEyOTAzMywgMTI2OTgyLCA3NDU2MywgNjQ4MjgsIDExNDE5LCAxOTQ4NjgsIDc2NiwgMTI1NywgMTk0NTk4LCAKLSAgICAxMTg4NDUsIDExMzgxLCAzMjY1LCA2NjYxNywgMzI3NCwgMTI2NjI5LCA4MzI1NCwgNzE4NjEsIDk4Mzk1MCwgNzQ1MjIsIAotICAgIDQxOTg5LCAxMjEzMTcsIDAsIDExMzc2OSwgMzI2MywgOTE3OTIyLCA2NTY3MiwgNjkyNDMsIDMyNzAsIDY0NTM5LCAxMTQ4OSwgCi0gICAgOTE3OTExLCAwLCAwLCA3MTEyNywgOTUwNSwgNjU1MTgsIDEyODQ5OCwgNzU2LCAxOTQ2MDUsIDAsIDAsIDE5NDYyMSwgCi0gICAgNzI2MSwgOTI1NDcsIDE4NiwgMCwgMTE5MTU2LCA1NzcwLCAxMzE3OSwgNjU4MzAsIDEyNjEyLCAxMjk0OSwgNjQ4NTYsIAotICAgIDEyODAwLCA5ODM5MDEsIDc0MjAzLCA2NDcxOCwgMTE1MDcsIDc4NjczLCA5MjQzNCwgNzQ2MjYsIDExMzc2MCwgMTE1NzgsIAotICAgIDk4MzgzNywgMTE5Mjk2LCAxMjA5NzAsIDEyMTEyNywgMTI1MTAxLCAwLCA3MDA4MywgOTI1NCwgNjY4NzcsIDE3OTQsIAotICAgIDY4MzEwLCA2NDUyMSwgNTYyNCwgMTIwMjIwLCAxMjAyMjEsIDExOTk1OCwgMTIwMjIzLCAzNjE3LCA2NjYzNiwgNjQ4ODYsIAotICAgIDk0MDYxLCA2ODY1OSwgMTIwMjEzLCAxMjAyMTQsIDE4NzIsIDY2NTA4LCAxMjA0NjcsIDQxMDc5LCAxMDc0OCwgNTUwMiwgCi0gICAgMTE5MzMwLCA0NDUyLCAxMjgwODgsIDk4Mzc3MSwgOTI1MjYsIDQ1MTEsIDEyMDk1OCwgOTgzODc3LCA2NDY3OCwgMTE0MjUsIAotICAgIDAsIDQzMjQ1LCAxMjMxLCA2ODg2MSwgNjk5MDMsIDAsIDkwMDMsIDgxOTIsIDAsIDUzMDUsIDk2NTMsIDEwNjE2LCA4Njk0LCAKLSAgICA5NTQ2LCAwLCAxMjgzMzIsIDcwNDIxLCAxMjAyMDAsIDY1MjA1LCAxMjAyMDIsIDY0MDYzLCA5ODc4LCA3NDc4MCwgCi0gICAgMTE5NjI2LCA3ODIwMiwgNjQwNTgsIDg3OTksIDQyMTMxLCAxMjg2NjIsIDY0MDYyLCAxMDI4LCA2NDA2MCwgNjQwNTksIAotICAgIDgzNywgMTA1NjcsIDcyMzg0LCA0MzEwMywgMCwgMTIwNzU0LCAxMTQyNywgMjkwMiwgNjQwNDMsIDY0MDQyLCA0Mzc0OSwgCi0gICAgMTA3NTYsIDY0MDQ3LCA0MjYwNiwgNjQwNDUsIDY0MDQ0LCA0Mzk3OSwgMTAwNzYsIDY0MDQwLCA0MzA2MCwgMTk0OTQyLCAKLSAgICAxMDM0LCAzMzkyLCA4MzMzNiwgNDMwOTEsIDY0MDMzLCA2NDAzMiwgNDI3MzUsIDQzNDk4LCA2NDAzNywgNjQwMzYsIAotICAgIDY0MDM1LCA0MjkxLCAxMjkxNTcsIDY0MDE1LCA2NDAxNCwgNjQ2ODEsIDgzMzk0LCA4MzM5NSwgNzgxNDUsIDcxODk4LCAKLSAgICA0MzA5MCwgODMzOTEsIDM0NzYsIDg5NzMsIDY0MDEyLCA0MjQ3MywgNjQwMTAsIDY0MDA4LCA2NDAwNywgMjAwMywgNzcwNiwgCi0gICAgNjQ1MTcsIDc4MTUzLCAyNTM4LCA2NDAwOSwgMjA0LCAwLCA0ODAyLCA0MTExLCA4MjM5LCA5MDk4LCA0ODA1LCA2NDAwMSwgCi0gICAgNjQwNTcsIDc4ODUsIDcyNDcsIDY0MDU0LCA5ODMyNjgsIDAsIDQ3NjcsIDkzNDMsIDY0MDQ5LCA2NDA0OCwgMTIwMDM0LCAKLSAgICAxMTMzLCA2NDA1MywgNjQwNTIsIDQzNDUzLCA2NDA1MCwgNDEzNDAsIDExODk3NSwgODMyNjEsIDEwMDA1LCAxMjMyOSwgCi0gICAgNDEzMzMsIDgzMjU5LCA4NDg5LCAxOTQyLCA5MTc5MjEsIDE5NDgzNCwgNDI1MjAsIDY1NTEwLCAxMjUwNDQsIDY4MjkxLCAKLSAgICAxMDc2MCwgNjQwMjMsIDY0MDIyLCA2NDAyMSwgNjU4MiwgNDM2NzAsIDEyNzc5OCwgNjQwMjUsIDkxNjcsIDQyMTUxLCAKLSAgICA3ODI0NCwgOTgzMjMyLCAyMDI2LCA2NDAxOSwgNjQwMTgsIDY0MDE3LCA2NDAxNiwgMTI3NjgsIDEyMTM2MSwgNzU4MiwgCi0gICAgNzgyNTIsIDc4MjQ4LCA3NzkxNCwgNzgyNDYsIDc4MjQ3LCAxMjA3OTEsIDc3OTE1LCA3ODc2NiwgNjc4OCwgMTMwOTQsIAotICAgIDc3OTIwLCA3NTMyLCA0MTQxNCwgNzg1MjAsIDMxNzksIDc4NTE4LCA2NDc2OSwgNzg1MTQsIDc4NTE3LCAxMTQ2MSwgCi0gICAgNzQ0NTQsIDEwNzUxLCA5MDUxLCAxMjA3MjAsIDY3MDgsIDEwNTM1LCAxMTg5NTUsIDY4MjE4LCA1NTI3NCwgMjAwOCwgCi0gICAgNjQwMzEsIDY0MDMwLCAyOTQsIDQxODc0LCA4MzM4MywgNjQ3OTAsIDY1OTI5LCA4MzM3NiwgODMzMzcsIDgzMzc5LCAKLSAgICA4MzM4MCwgNjQwMjgsIDgxNDYsIDY0MDI2LCA0MTc4OCwgMTk0ODQ0LCAwLCA0MzUxLCA2MzQzLCA0MzI0NywgMTE5ODg4LCAKLSAgICA3MDE1MywgMTE5ODg2LCAxMTk4OTEsIDcyMzg3LCAxMTk4ODksIDExNDMzLCAxMTk4OTUsIDExOTg5NiwgMTk0NjU1LCAKLSAgICA3ODAxLCA2NTU3OCwgODMzNjEsIDEyOTE1LCA0Mzk2OCwgMzI5NywgOTY5OSwgODMzNTcsIDExMzUsIDgzMzUwLCA4MzM1MSwgCi0gICAgODMzNTIsIDE5OTUsIDY3MjIsIDk4MzkyNSwgMTI4ODE1LCAyNTUyLCA0MTU0NiwgNjAsIDY4Mzk0LCA4NjQ5LCA0MTU0OSwgCi0gICAgNzg0OTYsIDcyMzg2LCA4MzM3MSwgNjY4MiwgODMzNjUsIDc4Njc5LCA0MzgzMywgNDE1NDcsIDk4MzYzMCwgMjAxMywgCi0gICAgODMzNjIsIDc4NTMwLCA3ODUzMiwgNzg1MjgsIDc4NTI5LCAxMjgzMiwgNzg0OTMsIDgwODEsIDgzNjIsIDM1MzcsIAotICAgIDExOTkwOCwgOTEzNywgNzE1NSwgODk5OSwgOTE3OTAxLCA3ODUzMywgMzQ2NiwgMCwgMTIxNDY2LCAxOTk2LCAwLCAzNDUzLCAKLSAgICA2MjgyLCAwLCAyMDAyLCAyMDAwLCAxMjAxNzUsIDUzNywgOTI5NzYsIDQxNzksIDY1MTE5LCAxOTk4LCAxMjA3NDYsIDE4NDIsIAotICAgIDAsIDkyNjc0LCA5NjI4LCA2ODQ0NiwgMTIwODEsIDk4MjYsIDY0NTAyLCAxNzY3LCAwLCA5ODMyNDgsIDEyMDAwMSwgCi0gICAgMTIwMjAxLCA5ODM2NDYsIDEyNDk3NSwgMTI3OTUyLCAzMDU5LCA0NDAyNCwgMTIwMjA0LCA0MzQ5MSwgOTI2OTMsIDAsIAotICAgIDEyMTQ3MiwgOTI0NTIsIDQxMDAsIDkyMCwgMTgxMSwgMTM1NSwgNDMxODksIDAsIDM1OTIsIDEwMDc4LCAwLCA3ODE2MiwgCi0gICAgMTE5NTU4LCA4NTkyLCA2NTg3MCwgNjY0MTcsIDc0NTA0LCAxMDc0MiwgNzI0MDAsIDQyOTE4LCAxOTk0LCA5MjgxLCAzMjk2LCAKLSAgICAxMjg2NSwgMTk5NywgMTg5NSwgCisgICAgNjQ0ODAsIDE5NDg3NSwgODQyMywgMzM0OCwgNDQ4LCA2NjkwNywgOTcxNywgMTE5MzExLCAxMDA3MzgsIDk5NywgMTE5OTk4LCAKKyAgICA5MTc5MTAsIDkyNTc3LCAwLCAxMTQ0MCwgMTEzNzksIDQyMDAwLCAxMzEzOSwgNDIyMjEsIDY1MDEzLCAxMjY5OTksIAorICAgIDEyNzc2MCwgNzIzOTAsIDEyMDcxMywgMTE5MjI4LCAxMjAzNSwgOTgzOTA2LCAyODE4LCAwLCA3NDQxMSwgNzM3OTMsIAorICAgIDEyOTQyNCwgNDE3MiwgNzEyNTIsIDExOTk5MiwgODM3MywgMTA4NzMsIDEyMTk3LCAxMjUwNzQsIDE5NTAxNCwgOTIyNjUsIAorICAgIDY5NzA2LCAxMDA4NTgsIDY4MzQsIDc0MzQ3LCA3NDk1OCwgNjk2NDUsIDEyNjk4MiwgNzQ1NjMsIDY0ODI4LCAxMTQxOSwgCisgICAgMTI2NTcwLCA3NjYsIDEyNTcsIDE5NDU5OCwgMTE4ODQ1LCAxMTM4MSwgMzI2NSwgNjY2MTcsIDMyNzQsIDEyNjYyOSwgCisgICAgODMyNTQsIDcxODYxLCA5ODM5NTAsIDcyNzk2LCA0MTk4OSwgMTIxMzE3LCAxOTQ4MDYsIDM0MTgsIDMyNjMsIDkxNzkyMiwgCisgICAgNjU2NzIsIDY5MjQzLCAzMjcwLCA2NDUzOSwgMTE0ODksIDkxNzkxMSwgMCwgMCwgNzExMjcsIDk1MDUsIDY1NTE4LCAKKyAgICAxMjg0OTgsIDc1NiwgMTIwNDAwLCAxMjUyNDMsIDk4MzcwMCwgMTk0NjIxLCA3MjYxLCA5MjU0NywgMTg2LCA5ODM3NjksIAorICAgIDcyNzcxLCA1NzcwLCAxMzE3OSwgNjU4MzAsIDEyNjEyLCAxMjk0OSwgNjQ4NTYsIDEyODAwLCAxMjc1MjksIDc0MjAzLCAKKyAgICA2NDcxOCwgMTE1MDcsIDc4NjczLCA5MjQzNCwgNzQ2MjYsIDExMzc2MCwgMTE1NzgsIDk4MzgzNywgMTE5Mjk2LCAxMjA5NzAsIAorICAgIDEyMTEyNywgMTI1MTAxLCAwLCA3MDA4MywgOTI1NCwgNjY4NzcsIDE3OTQsIDY4MzEwLCA2NDUyMSwgNTYyNCwgNzI3NjYsIAorICAgIDEyMDIyMSwgMTE5OTU4LCAxMjAyMjMsIDM2MTcsIDY2NjM2LCA2NDg4NiwgOTQwNjEsIDY4NjU5LCAxMjAyMTMsIDEyMDIxNCwgCisgICAgMTg3MiwgNjY1MDgsIDEyMDQ2NywgNDEwNzksIDEwNzQ4LCA1NTAyLCAxMTkzMzAsIDQ0NTIsIDEyODA4OCwgOTgzNTYwLCAKKyAgICA5MjUyNiwgNDUxMSwgMTIwOTU4LCA5ODM4NzcsIDY0Njc4LCAxMTQyNSwgMCwgNDMyNDUsIDEyMzEsIDY4ODYxLCA2OTkwMywgCisgICAgOTgzNjQzLCA5MDAzLCA4MTkyLCAwLCA1MzA1LCA5NjUzLCAxMDYxNiwgODY5NCwgOTU0NiwgOTgzMjM3LCAxMjgzMzIsIAorICAgIDcwNDIxLCAxMjAyMDAsIDY1MjA1LCAxMjAyMDIsIDY0MDYzLCA5ODc4LCA3NDc4MCwgMTE5MDU4LCA3ODIwMiwgNjQwNTgsIAorICAgIDg3OTksIDQyMTMxLCAxMjg2NjIsIDY0MDYyLCAxMDI4LCA2NDA2MCwgNjQwNTksIDgzNywgMTA1NjcsIDcyMzg0LCA0MzEwMywgCisgICAgMTAwMzUyLCAxMjA3NTQsIDExNDI3LCAyOTAyLCA2NDA0MywgNjQwNDIsIDQzNzQ5LCAxMDc1NiwgNjQwNDcsIDQyNjA2LCAKKyAgICA2NDA0NSwgNjQwNDQsIDQzOTc5LCAxMDA3NiwgNjQwNDAsIDQzMDYwLCAxMDAzNTYsIDEwMzQsIDMzOTIsIDgzMzM2LCAKKyAgICA0MzA5MSwgNjQwMzMsIDY0MDMyLCA0MjczNSwgNDM0OTgsIDY0MDM3LCA2NDAzNiwgNjQwMzUsIDQyOTEsIDEyOTE1NywgCisgICAgNjQwMTUsIDY0MDE0LCA2NDY4MSwgODMzOTQsIDgzMzk1LCA3ODE0NSwgNzE4OTgsIDQzMDkwLCA4MzM5MSwgMzQ3NiwgCisgICAgODk3MywgNjQwMTIsIDQyNDczLCA2NDAxMCwgNjQwMDgsIDY0MDA3LCAyMDAzLCA3NzA2LCA2NDUxNywgNzgxNTMsIDI1MzgsIAorICAgIDY0MDA5LCAyMDQsIDEwMDg0MSwgNDgwMiwgNDExMSwgODIzOSwgOTA5OCwgNDgwNSwgNjQwMDEsIDY0MDU3LCA3ODg1LCAKKyAgICA3MjQ3LCA2NDA1NCwgOTgzMjY4LCAxMTg5MjEsIDQ3NjcsIDkzNDMsIDY0MDQ5LCA2NDA0OCwgMTIwMDM0LCAxMTMzLCAKKyAgICA2NDA1MywgNjQwNTIsIDQzNDUzLCA2NDA1MCwgNDEzNDAsIDExODk3NSwgODMyNjEsIDEwMDA1LCAxMjMyOSwgNDEzMzMsIAorICAgIDgzMjU5LCA4NDg5LCAxOTQyLCAxMDA4NDMsIDE5NDgzNCwgNDI1MjAsIDY1NTEwLCAxMjUwNDQsIDY4MjkxLCAxMDc2MCwgCisgICAgNjQwMjMsIDY0MDIyLCA2NDAyMSwgNjU4MiwgNDM2NzAsIDEyNzc5OCwgNjQwMjUsIDkxNjcsIDQyMTUxLCA3ODI0NCwgCisgICAgOTgzMjMyLCAyMDI2LCA2NDAxOSwgNjQwMTgsIDY0MDE3LCA2NDAxNiwgMTI3NjgsIDEwMDUzNywgNzU4MiwgNzgyNTIsIAorICAgIDc4MjQ4LCA3NzkxNCwgNzgyNDYsIDc4MjQ3LCAxMjA3OTEsIDc3OTE1LCA3ODc2NiwgNjc4OCwgMTMwOTQsIDc3OTIwLCAKKyAgICA3NTMyLCA0MTQxNCwgNzg1MjAsIDMxNzksIDcwNzQ1LCA2NDc2OSwgNzg1MTQsIDc4NTE3LCAxMTQ2MSwgNzQ0NTQsIAorICAgIDEwNzUxLCA5MDUxLCAxMjA3MjAsIDY3MDgsIDEwNTM1LCAxMTg5NTUsIDY4MjE4LCA1NTI3NCwgMjAwOCwgNjQwMzEsIAorICAgIDY0MDMwLCAyOTQsIDQxODc0LCA4MzM4MywgNjQ3OTAsIDY1OTI5LCA4MzM3NiwgODMzMzcsIDgzMzc5LCA4MzM4MCwgCisgICAgNjQwMjgsIDgxNDYsIDY0MDI2LCA0MTc4OCwgMTAwNDA2LCA5ODM2NTAsIDQzNTEsIDYzNDMsIDQzMjQ3LCAxMTk4ODgsIAorICAgIDcwMTUzLCAxMDA3NTMsIDc4NzMzLCA3MjM4NywgMTE5ODg5LCAxMTQzMywgMTAwNTQ0LCAxMTk4OTYsIDE5NDY1NSwgNzgwMSwgCisgICAgNjU1NzgsIDgzMzYxLCAxMjkxNSwgNDM5NjgsIDMyOTcsIDk2OTksIDgzMzU3LCAxMTM1LCA4MzM1MCwgODMzNTEsIDgzMzUyLCAKKyAgICAxOTk1LCA2NzIyLCA5ODM5MjUsIDEyODgxNSwgMjU1MiwgNDE1NDYsIDYwLCA2ODM5NCwgODY0OSwgNDE1NDksIDc4NDk2LCAKKyAgICA3MjM4NiwgODMzNzEsIDY2ODIsIDgzMzY1LCA3ODY3OSwgNDM4MzMsIDQxNTQ3LCA5ODM2MzAsIDIwMTMsIDgzMzYyLCAKKyAgICA3ODUzMCwgNzg1MzIsIDc4NTI4LCA3ODUyOSwgMTI4MzIsIDc4NDkzLCA4MDgxLCA4MzYyLCAzNTM3LCAxMTk5MDgsIDkxMzcsIAorICAgIDcxNTUsIDIyNjQsIDkxNzkwMSwgNzg1MzMsIDM0NjYsIDE5NDk4NywgMTIxMDM5LCAxOTk2LCA5ODM2NzUsIDM0NTMsIAorICAgIDM0MTIsIDAsIDIwMDIsIDIwMDAsIDEyMDE3NSwgNTM3LCA5Mjk3NiwgNDE3OSwgNjUxMTksIDE5OTgsIDEyMDc0NiwgMTg0MiwgCisgICAgMCwgOTI2NzQsIDk2MjgsIDY4NDQ2LCAxMjA4MSwgOTgyNiwgNjQ1MDIsIDE3NjcsIDM0MTMsIDk4MzI0OCwgMTIwMDAxLCAKKyAgICAxMjAyMDEsIDk4MzY0NiwgMTI0OTc1LCAxMjc5NTIsIDMwNTksIDQ0MDI0LCAxMjAyMDQsIDQzNDkxLCA5MjY5MywgCisgICAgMTAwNTQ3LCAxMjE0NzIsIDkyNDUyLCA0MTAwLCA5MjAsIDE4MTEsIDEzNTUsIDQzMTg5LCAwLCAzNTkyLCAxMDA3OCwgCisgICAgMTAwMzk0LCA3ODE2MiwgMTAwODQ2LCA4NTkyLCA2NTg3MCwgNjY0MTcsIDc0NTA0LCAxMDc0MiwgNzI0MDAsIDQyOTE4LCAKKyAgICAxOTk0LCA5MjgxLCAzMjk2LCAxMjg2NSwgMTk5NywgMTg5NSwgCiB9OwogCiAjZGVmaW5lIGNvZGVfbWFnaWMgNDcKZGlmZiAtLWdpdCBhL01vZHVsZXMvd2lucmVwYXJzZS5oIGIvTW9kdWxlcy93aW5yZXBhcnNlLmgKaW5kZXggNjZmNzc3NS4uMjgwNDljOSAxMDA2NDQKLS0tIGEvTW9kdWxlcy93aW5yZXBhcnNlLmgKKysrIGIvTW9kdWxlcy93aW5yZXBhcnNlLmgKQEAgLTIsNyArMiw3IEBACiAjZGVmaW5lIFB5X1dJTlJFUEFSU0VfSAogCiAjaWZkZWYgTVNfV0lORE9XUwotI2luY2x1ZGUgPFdpbmRvd3MuaD4KKyNpbmNsdWRlIDx3aW5kb3dzLmg+CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CkBAIC0xMCw5ICsxMCwxMCBAQAogCiAvKiBUaGUgZm9sbG93aW5nIHN0cnVjdHVyZSB3YXMgY29waWVkIGZyb20KICAgIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9mZjU1MjAxMi5hc3B4IGFzIHRoZSByZXF1aXJlZAotICAgaW5jbHVkZSBkb2Vzbid0IHNlZW0gdG8gYmUgcHJlc2VudCBpbiB0aGUgV2luZG93cyBTREsgKGF0IGxlYXN0IGFzIGluY2x1ZGVkCi0gICB3aXRoIFZpc3VhbCBTdHVkaW8gRXhwcmVzcykuICovCi10eXBlZGVmIHN0cnVjdCBfUkVQQVJTRV9EQVRBX0JVRkZFUiB7CisgICBpbmNsdWRlIGttXG50aWZzLmggaXNuJ3QgcHJlc2VudCBpbiB0aGUgV2luZG93cyBTREsgKGF0IGxlYXN0IGFzIGluY2x1ZGVkCisgICB3aXRoIFZpc3VhbCBTdHVkaW8gRXhwcmVzcykuIFVzZSB1bmlxdWUgbmFtZXMgdG8gYXZvaWQgY29uZmxpY3Rpbmcgd2l0aAorICAgdGhlIHN0cnVjdHVyZSBhcyBkZWZpbmVkIGJ5IE1pbiBHVy4gKi8KK3R5cGVkZWYgc3RydWN0IHsKICAgICBVTE9ORyBSZXBhcnNlVGFnOwogICAgIFVTSE9SVCBSZXBhcnNlRGF0YUxlbmd0aDsKICAgICBVU0hPUlQgUmVzZXJ2ZWQ7CkBAIC0zOCwxMSArMzksMTEgQEAKICAgICAgICAgICAgIFVDSEFSICBEYXRhQnVmZmVyWzFdOwogICAgICAgICB9IEdlbmVyaWNSZXBhcnNlQnVmZmVyOwogICAgIH07Ci19IFJFUEFSU0VfREFUQV9CVUZGRVIsICpQUkVQQVJTRV9EQVRBX0JVRkZFUjsKK30gX1B5X1JFUEFSU0VfREFUQV9CVUZGRVIsICpfUHlfUFJFUEFSU0VfREFUQV9CVUZGRVI7CiAKLSNkZWZpbmUgUkVQQVJTRV9EQVRBX0JVRkZFUl9IRUFERVJfU0laRSAgRklFTERfT0ZGU0VUKFJFUEFSU0VfREFUQV9CVUZGRVIsXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJpY1JlcGFyc2VCdWZmZXIpCi0jZGVmaW5lIE1BWElNVU1fUkVQQVJTRV9EQVRBX0JVRkZFUl9TSVpFICAoIDE2ICogMTAyNCApCisjZGVmaW5lIF9QeV9SRVBBUlNFX0RBVEFfQlVGRkVSX0hFQURFUl9TSVpFIFwKKyAgICBGSUVMRF9PRkZTRVQoX1B5X1JFUEFSU0VfREFUQV9CVUZGRVIsIEdlbmVyaWNSZXBhcnNlQnVmZmVyKQorI2RlZmluZSBfUHlfTUFYSU1VTV9SRVBBUlNFX0RBVEFfQlVGRkVSX1NJWkUgICggMTYgKiAxMDI0ICkKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3h4bGltaXRlZC5jIGIvTW9kdWxlcy94eGxpbWl0ZWQuYwppbmRleCA0MGMxNzYwLi5jMWE5YmU5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3h4bGltaXRlZC5jCisrKyBiL01vZHVsZXMveHhsaW1pdGVkLmMKQEAgLTg5LDcgKzg5LDcgQEAKIH0KIAogc3RhdGljIGludAotWHhvX3NldGF0dHIoWHhvT2JqZWN0ICpzZWxmLCBjaGFyICpuYW1lLCBQeU9iamVjdCAqdikKK1h4b19zZXRhdHRyKFh4b09iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqbmFtZSwgUHlPYmplY3QgKnYpCiB7CiAgICAgaWYgKHNlbGYtPnhfYXR0ciA9PSBOVUxMKSB7CiAgICAgICAgIHNlbGYtPnhfYXR0ciA9IFB5RGljdF9OZXcoKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMveHhtb2R1bGUuYyBiL01vZHVsZXMveHhtb2R1bGUuYwppbmRleCA4NTIzMGQ5Li4wNzY0NDA3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3h4bW9kdWxlLmMKKysrIGIvTW9kdWxlcy94eG1vZHVsZS5jCkBAIC03Niw3ICs3Niw3IEBACiB9CiAKIHN0YXRpYyBpbnQKLVh4b19zZXRhdHRyKFh4b09iamVjdCAqc2VsZiwgY2hhciAqbmFtZSwgUHlPYmplY3QgKnYpCitYeG9fc2V0YXR0cihYeG9PYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKm5hbWUsIFB5T2JqZWN0ICp2KQogewogICAgIGlmIChzZWxmLT54X2F0dHIgPT0gTlVMTCkgewogICAgICAgICBzZWxmLT54X2F0dHIgPSBQeURpY3RfTmV3KCk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3ppcGltcG9ydC5jIGIvTW9kdWxlcy96aXBpbXBvcnQuYwppbmRleCA3NDczYThmLi41OTA0NmFhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3ppcGltcG9ydC5jCisrKyBiL01vZHVsZXMvemlwaW1wb3J0LmMKQEAgLTkwNywxMCArOTA3LDggQEAKICAgICBmcCA9IF9QeV9mb3Blbl9vYmooYXJjaGl2ZSwgInJiIik7CiAgICAgaWYgKGZwID09IE5VTEwpIHsKICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfT1NFcnJvcikpIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpleGMsICp2YWwsICp0YjsKLSAgICAgICAgICAgIFB5RXJyX0ZldGNoKCZleGMsICZ2YWwsICZ0Yik7Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoWmlwSW1wb3J0RXJyb3IsICJjYW4ndCBvcGVuIFppcCBmaWxlOiAlUiIsIGFyY2hpdmUpOwotICAgICAgICAgICAgX1B5RXJyX0NoYWluRXhjZXB0aW9ucyhleGMsIHZhbCwgdGIpOworICAgICAgICAgICAgX1B5RXJyX0Zvcm1hdEZyb21DYXVzZShaaXBJbXBvcnRFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNhbid0IG9wZW4gWmlwIGZpbGU6ICVSIiwgYXJjaGl2ZSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy96bGlibW9kdWxlLmMgYi9Nb2R1bGVzL3psaWJtb2R1bGUuYwppbmRleCBmY2NiNjE2Li5jZmU3Zjg4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3psaWJtb2R1bGUuYworKysgYi9Nb2R1bGVzL3psaWJtb2R1bGUuYwpAQCAtNTcsNyArNTcsNyBAQAogfSBjb21wb2JqZWN0OwogCiBzdGF0aWMgdm9pZAotemxpYl9lcnJvcih6X3N0cmVhbSB6c3QsIGludCBlcnIsIGNoYXIgKm1zZykKK3psaWJfZXJyb3Ioel9zdHJlYW0genN0LCBpbnQgZXJyLCBjb25zdCBjaGFyICptc2cpCiB7CiAgICAgY29uc3QgY2hhciAqem1zZyA9IFpfTlVMTDsKICAgICAvKiBJbiBjYXNlIG9mIGEgdmVyc2lvbiBtaXNtYXRjaCwgenN0Lm1zZyB3b24ndCBiZSBpbml0aWFsaXplZC4KQEAgLTE5OSwxOCArMTk5LDE4IEBACiAvKltjbGluaWMgaW5wdXRdCiB6bGliLmNvbXByZXNzCiAKLSAgICBieXRlczogUHlfYnVmZmVyCisgICAgZGF0YTogUHlfYnVmZmVyCiAgICAgICAgIEJpbmFyeSBkYXRhIHRvIGJlIGNvbXByZXNzZWQuCi0gICAgbGV2ZWw6IGludChjX2RlZmF1bHQ9IlpfREVGQVVMVF9DT01QUkVTU0lPTiIpID0gWl9ERUZBVUxUX0NPTVBSRVNTSU9OCi0gICAgICAgIENvbXByZXNzaW9uIGxldmVsLCBpbiAwLTkuCiAgICAgLworICAgIGxldmVsOiBpbnQoY19kZWZhdWx0PSJaX0RFRkFVTFRfQ09NUFJFU1NJT04iKSA9IFpfREVGQVVMVF9DT01QUkVTU0lPTgorICAgICAgICBDb21wcmVzc2lvbiBsZXZlbCwgaW4gMC05IG9yIC0xLgogCiBSZXR1cm5zIGEgYnl0ZXMgb2JqZWN0IGNvbnRhaW5pbmcgY29tcHJlc3NlZCBkYXRhLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotemxpYl9jb21wcmVzc19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqYnl0ZXMsIGludCBsZXZlbCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hZTY0YzJjMzA3NjMyMWEwIGlucHV0PWJlM2FiZTk5MzRiZGE0YjNdKi8KK3psaWJfY29tcHJlc3NfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsIGludCBsZXZlbCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kODA5MDZkNzNmNjI5NGM4IGlucHV0PTYzOGQ1NGI2MzE1ZGJlZDNdKi8KIHsKICAgICBQeU9iamVjdCAqUmV0VmFsID0gTlVMTDsKICAgICBCeXRlICppYnVmOwpAQCAtMjE4LDggKzIxOCw4IEBACiAgICAgaW50IGVyciwgZmx1c2g7CiAgICAgel9zdHJlYW0genN0OwogCi0gICAgaWJ1ZiA9IGJ5dGVzLT5idWY7Ci0gICAgaWJ1ZmxlbiA9IGJ5dGVzLT5sZW47CisgICAgaWJ1ZiA9IGRhdGEtPmJ1ZjsKKyAgICBpYnVmbGVuID0gZGF0YS0+bGVuOwogCiAgICAgenN0Lm9wYXF1ZSA9IE5VTEw7CiAgICAgenN0LnphbGxvYyA9IFB5WmxpYl9NYWxsb2M7CkBAIC0zMTgsMTEgKzMxOCwxMSBAQAogCiAgICAgZGF0YTogUHlfYnVmZmVyCiAgICAgICAgIENvbXByZXNzZWQgZGF0YS4KKyAgICAvCiAgICAgd2JpdHM6IGludChjX2RlZmF1bHQ9Ik1BWF9XQklUUyIpID0gTUFYX1dCSVRTCiAgICAgICAgIFRoZSB3aW5kb3cgYnVmZmVyIHNpemUgYW5kIGNvbnRhaW5lciBmb3JtYXQuCiAgICAgYnVmc2l6ZTogc3NpemVfdChjX2RlZmF1bHQ9IkRFRl9CVUZfU0laRSIpID0gREVGX0JVRl9TSVpFCiAgICAgICAgIFRoZSBpbml0aWFsIG91dHB1dCBidWZmZXIgc2l6ZS4KLSAgICAvCiAKIFJldHVybnMgYSBieXRlcyBvYmplY3QgY29udGFpbmluZyB0aGUgdW5jb21wcmVzc2VkIGRhdGEuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCkBAIC0zMzAsNyArMzMwLDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB6bGliX2RlY29tcHJlc3NfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsIGludCB3Yml0cywKICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgYnVmc2l6ZSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03N2M3ZTM1MTExZGM4YzQyIGlucHV0PWMxM2RkMmM1Njk2Y2QxN2ZdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03N2M3ZTM1MTExZGM4YzQyIGlucHV0PTIxOTYwOTM2MjA4ZTlhNWJdKi8KIHsKICAgICBQeU9iamVjdCAqUmV0VmFsID0gTlVMTDsKICAgICBCeXRlICppYnVmOwpAQCAtNzIxLDkgKzcyMSw5IEBACiAgICAgICAgICAgICBuZXdfZGF0YSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbmV3X3NpemUpOwogICAgICAgICAgICAgaWYgKG5ld19kYXRhID09IE5VTEwpCiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgUHlfTUVNQ1BZKFB5Qnl0ZXNfQVNfU1RSSU5HKG5ld19kYXRhKSwKKyAgICAgICAgICAgIG1lbWNweShQeUJ5dGVzX0FTX1NUUklORyhuZXdfZGF0YSksCiAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZi0+dW51c2VkX2RhdGEpLCBvbGRfc2l6ZSk7Ci0gICAgICAgICAgICBQeV9NRU1DUFkoUHlCeXRlc19BU19TVFJJTkcobmV3X2RhdGEpICsgb2xkX3NpemUsCisgICAgICAgICAgICBtZW1jcHkoUHlCeXRlc19BU19TVFJJTkcobmV3X2RhdGEpICsgb2xkX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+enN0Lm5leHRfaW4sIGxlZnRfc2l6ZSk7CiAgICAgICAgICAgICBQeV9TRVRSRUYoc2VsZi0+dW51c2VkX2RhdGEsIG5ld19kYXRhKTsKICAgICAgICAgICAgIHNlbGYtPnpzdC5hdmFpbF9pbiA9IDA7CkBAIC03NTAsMTEgKzc1MCwxMSBAQAogCiAgICAgZGF0YTogUHlfYnVmZmVyCiAgICAgICAgIFRoZSBiaW5hcnkgZGF0YSB0byBkZWNvbXByZXNzLgorICAgIC8KICAgICBtYXhfbGVuZ3RoOiBzc2l6ZV90ID0gMAogICAgICAgICBUaGUgbWF4aW11bSBhbGxvd2FibGUgbGVuZ3RoIG9mIHRoZSBkZWNvbXByZXNzZWQgZGF0YS4KICAgICAgICAgVW5jb25zdW1lZCBpbnB1dCBkYXRhIHdpbGwgYmUgc3RvcmVkIGluCiAgICAgICAgIHRoZSB1bmNvbnN1bWVkX3RhaWwgYXR0cmlidXRlLgotICAgIC8KIAogUmV0dXJuIGEgYnl0ZXMgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGRlY29tcHJlc3NlZCB2ZXJzaW9uIG9mIHRoZSBkYXRhLgogCkBAIC03NjYsNyArNzY2LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB6bGliX0RlY29tcHJlc3NfZGVjb21wcmVzc19pbXBsKGNvbXBvYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhfbGVuZ3RoKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTZlNTE3M2M3NGU3MTAzNTIgaW5wdXQ9ZDZkZTliNTNjNDU2NmI4YV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTZlNTE3M2M3NGU3MTAzNTIgaW5wdXQ9Yjg1YTIxMmEwMTJiNzcwYV0qLwogewogICAgIGludCBlcnIgPSBaX09LOwogICAgIFB5X3NzaXplX3QgaWJ1Zmxlbiwgb2J1ZmxlbiA9IERFRl9CVUZfU0laRSwgaGFyZF9saW1pdDsKQEAgLTEzMzMsNyArMTMzMyw3IEBACiAiemxpYiBsaWJyYXJ5LCB3aGljaCBpcyBiYXNlZCBvbiBHTlUgemlwLlxuIgogIlxuIgogImFkbGVyMzIoc3RyaW5nWywgc3RhcnRdKSAtLSBDb21wdXRlIGFuIEFkbGVyLTMyIGNoZWNrc3VtLlxuIgotImNvbXByZXNzKHN0cmluZ1ssIGxldmVsXSkgLS0gQ29tcHJlc3Mgc3RyaW5nLCB3aXRoIGNvbXByZXNzaW9uIGxldmVsIGluIDAtOS5cbiIKKyJjb21wcmVzcyhkYXRhWywgbGV2ZWxdKSAtLSBDb21wcmVzcyBkYXRhLCB3aXRoIGNvbXByZXNzaW9uIGxldmVsIDAtOSBvciAtMS5cbiIKICJjb21wcmVzc29iaihbbGV2ZWxbLCAuLi5dXSkgLS0gUmV0dXJuIGEgY29tcHJlc3NvciBvYmplY3QuXG4iCiAiY3JjMzIoc3RyaW5nWywgc3RhcnRdKSAtLSBDb21wdXRlIGEgQ1JDLTMyIGNoZWNrc3VtLlxuIgogImRlY29tcHJlc3Moc3RyaW5nLFt3Yml0c10sW2J1ZnNpemVdKSAtLSBEZWNvbXByZXNzZXMgYSBjb21wcmVzc2VkIHN0cmluZy5cbiIKZGlmZiAtLWdpdCBhL09iamVjdHMvYWJzdHJhY3QuYyBiL09iamVjdHMvYWJzdHJhY3QuYwppbmRleCA4ODIwNWJkLi5kODM4ODU2IDEwMDY0NAotLS0gYS9PYmplY3RzL2Fic3RyYWN0LmMKKysrIGIvT2JqZWN0cy9hYnN0cmFjdC5jCkBAIC0zMiw4ICszMiwxMCBAQAogewogICAgIFB5T2JqZWN0ICp2OwogCi0gICAgaWYgKG8gPT0gTlVMTCkKKyAgICBpZiAobyA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQorCiAgICAgdiA9IChQeU9iamVjdCAqKW8tPm9iX3R5cGU7CiAgICAgUHlfSU5DUkVGKHYpOwogICAgIHJldHVybiB2OwpAQCAtMTM3LDEyICsxMzksMTYgQEAKIHsKICAgICBQeU1hcHBpbmdNZXRob2RzICptOwogCi0gICAgaWYgKG8gPT0gTlVMTCB8fCBrZXkgPT0gTlVMTCkKKyAgICBpZiAobyA9PSBOVUxMIHx8IGtleSA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQogCiAgICAgbSA9IG8tPm9iX3R5cGUtPnRwX2FzX21hcHBpbmc7Ci0gICAgaWYgKG0gJiYgbS0+bXBfc3Vic2NyaXB0KQotICAgICAgICByZXR1cm4gbS0+bXBfc3Vic2NyaXB0KG8sIGtleSk7CisgICAgaWYgKG0gJiYgbS0+bXBfc3Vic2NyaXB0KSB7CisgICAgICAgIFB5T2JqZWN0ICppdGVtID0gbS0+bXBfc3Vic2NyaXB0KG8sIGtleSk7CisgICAgICAgIGFzc2VydCgoaXRlbSAhPSBOVUxMKSBeIChQeUVycl9PY2N1cnJlZCgpICE9IE5VTEwpKTsKKyAgICAgICAgcmV0dXJuIGl0ZW07CisgICAgfQogCiAgICAgaWYgKG8tPm9iX3R5cGUtPnRwX2FzX3NlcXVlbmNlKSB7CiAgICAgICAgIGlmIChQeUluZGV4X0NoZWNrKGtleSkpIHsKQEAgLTY2OSwxMyArNjc1LDMxIEBACiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAgICAgX1B5X0lERU5USUZJRVIoX19mb3JtYXRfXyk7CiAKKyAgICBpZiAoZm9ybWF0X3NwZWMgIT0gTlVMTCAmJiAhUHlVbmljb2RlX0NoZWNrKGZvcm1hdF9zcGVjKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiRm9ybWF0IHNwZWNpZmllciBtdXN0IGJlIGEgc3RyaW5nLCBub3QgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoZm9ybWF0X3NwZWMpLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyogRmFzdCBwYXRoIGZvciBjb21tb24gdHlwZXMuICovCisgICAgaWYgKGZvcm1hdF9zcGVjID09IE5VTEwgfHwgUHlVbmljb2RlX0dFVF9MRU5HVEgoZm9ybWF0X3NwZWMpID09IDApIHsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KG9iaikpIHsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihvYmopOworICAgICAgICAgICAgcmV0dXJuIG9iajsKKyAgICAgICAgfQorICAgICAgICBpZiAoUHlMb25nX0NoZWNrRXhhY3Qob2JqKSkgeworICAgICAgICAgICAgcmV0dXJuIFB5T2JqZWN0X1N0cihvYmopOworICAgICAgICB9CisgICAgfQorCiAgICAgLyogSWYgbm8gZm9ybWF0X3NwZWMgaXMgcHJvdmlkZWQsIHVzZSBhbiBlbXB0eSBzdHJpbmcgKi8KICAgICBpZiAoZm9ybWF0X3NwZWMgPT0gTlVMTCkgewogICAgICAgICBlbXB0eSA9IFB5VW5pY29kZV9OZXcoMCwgMCk7CiAgICAgICAgIGZvcm1hdF9zcGVjID0gZW1wdHk7CiAgICAgfQogCi0gICAgLyogRmluZCB0aGUgKHVuYm91bmQhKSBfX2Zvcm1hdF9fIG1ldGhvZCAoYSBib3Jyb3dlZCByZWZlcmVuY2UpICovCisgICAgLyogRmluZCB0aGUgKHVuYm91bmQhKSBfX2Zvcm1hdF9fIG1ldGhvZCAqLwogICAgIG1ldGggPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChvYmosICZQeUlkX19fZm9ybWF0X18pOwogICAgIGlmIChtZXRoID09IE5VTEwpIHsKICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQpAQCAtMTEyMiw4ICsxMTQ2LDEwIEBACiB7CiAgICAgUHlOdW1iZXJNZXRob2RzICptOwogCi0gICAgaWYgKG8gPT0gTlVMTCkKKyAgICBpZiAobyA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQorCiAgICAgbSA9IG8tPm9iX3R5cGUtPnRwX2FzX251bWJlcjsKICAgICBpZiAobSAmJiBtLT5uYl9uZWdhdGl2ZSkKICAgICAgICAgcmV0dXJuICgqbS0+bmJfbmVnYXRpdmUpKG8pOwpAQCAtMTEzNiw4ICsxMTYyLDEwIEBACiB7CiAgICAgUHlOdW1iZXJNZXRob2RzICptOwogCi0gICAgaWYgKG8gPT0gTlVMTCkKKyAgICBpZiAobyA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQorCiAgICAgbSA9IG8tPm9iX3R5cGUtPnRwX2FzX251bWJlcjsKICAgICBpZiAobSAmJiBtLT5uYl9wb3NpdGl2ZSkKICAgICAgICAgcmV0dXJuICgqbS0+bmJfcG9zaXRpdmUpKG8pOwpAQCAtMTE1MCw4ICsxMTc4LDEwIEBACiB7CiAgICAgUHlOdW1iZXJNZXRob2RzICptOwogCi0gICAgaWYgKG8gPT0gTlVMTCkKKyAgICBpZiAobyA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQorCiAgICAgbSA9IG8tPm9iX3R5cGUtPnRwX2FzX251bWJlcjsKICAgICBpZiAobSAmJiBtLT5uYl9pbnZlcnQpCiAgICAgICAgIHJldHVybiAoKm0tPm5iX2ludmVydCkobyk7CkBAIC0xMTY0LDggKzExOTQsMTAgQEAKIHsKICAgICBQeU51bWJlck1ldGhvZHMgKm07CiAKLSAgICBpZiAobyA9PSBOVUxMKQorICAgIGlmIChvID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CisKICAgICBtID0gby0+b2JfdHlwZS0+dHBfYXNfbnVtYmVyOwogICAgIGlmIChtICYmIG0tPm5iX2Fic29sdXRlKQogICAgICAgICByZXR1cm4gbS0+bmJfYWJzb2x1dGUobyk7CkBAIC0xMTgxLDggKzEyMTMsMTAgQEAKIFB5TnVtYmVyX0luZGV4KFB5T2JqZWN0ICppdGVtKQogewogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwotICAgIGlmIChpdGVtID09IE5VTEwpCisgICAgaWYgKGl0ZW0gPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KKwogICAgIGlmIChQeUxvbmdfQ2hlY2soaXRlbSkpIHsKICAgICAgICAgUHlfSU5DUkVGKGl0ZW0pOwogICAgICAgICByZXR1cm4gaXRlbTsKQEAgLTEyNjUsNDIgKzEyOTksNTUgQEAKIFB5T2JqZWN0ICoKIFB5TnVtYmVyX0xvbmcoUHlPYmplY3QgKm8pCiB7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBQeU51bWJlck1ldGhvZHMgKm07CiAgICAgUHlPYmplY3QgKnRydW5jX2Z1bmM7CiAgICAgUHlfYnVmZmVyIHZpZXc7CiAgICAgX1B5X0lERU5USUZJRVIoX190cnVuY19fKTsKIAotICAgIGlmIChvID09IE5VTEwpCisgICAgaWYgKG8gPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KKwogICAgIGlmIChQeUxvbmdfQ2hlY2tFeGFjdChvKSkgewogICAgICAgICBQeV9JTkNSRUYobyk7CiAgICAgICAgIHJldHVybiBvOwogICAgIH0KICAgICBtID0gby0+b2JfdHlwZS0+dHBfYXNfbnVtYmVyOwogICAgIGlmIChtICYmIG0tPm5iX2ludCkgeyAvKiBUaGlzIHNob3VsZCBpbmNsdWRlIHN1YmNsYXNzZXMgb2YgaW50ICovCi0gICAgICAgIHJldHVybiAoUHlPYmplY3QgKilfUHlMb25nX0Zyb21OYkludChvKTsKKyAgICAgICAgcmVzdWx0ID0gKFB5T2JqZWN0ICopX1B5TG9uZ19Gcm9tTmJJbnQobyk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gTlVMTCAmJiAhUHlMb25nX0NoZWNrRXhhY3QocmVzdWx0KSkgeworICAgICAgICAgICAgUHlfU0VUUkVGKHJlc3VsdCwgX1B5TG9uZ19Db3B5KChQeUxvbmdPYmplY3QgKilyZXN1bHQpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICB0cnVuY19mdW5jID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwobywgJlB5SWRfX190cnVuY19fKTsKICAgICBpZiAodHJ1bmNfZnVuYykgewotICAgICAgICBQeU9iamVjdCAqdHJ1bmNhdGVkID0gUHlFdmFsX0NhbGxPYmplY3QodHJ1bmNfZnVuYywgTlVMTCk7Ci0gICAgICAgIFB5T2JqZWN0ICppbnRfaW5zdGFuY2U7CisgICAgICAgIHJlc3VsdCA9IFB5RXZhbF9DYWxsT2JqZWN0KHRydW5jX2Z1bmMsIE5VTEwpOwogICAgICAgICBQeV9ERUNSRUYodHJ1bmNfZnVuYyk7Ci0gICAgICAgIGlmICh0cnVuY2F0ZWQgPT0gTlVMTCB8fCBQeUxvbmdfQ2hlY2sodHJ1bmNhdGVkKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVuY2F0ZWQ7CisgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCB8fCBQeUxvbmdfQ2hlY2tFeGFjdChyZXN1bHQpKSB7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgICAgIGlmIChQeUxvbmdfQ2hlY2socmVzdWx0KSkgeworICAgICAgICAgICAgUHlfU0VUUkVGKHJlc3VsdCwgX1B5TG9uZ19Db3B5KChQeUxvbmdPYmplY3QgKilyZXN1bHQpKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KICAgICAgICAgLyogX190cnVuY19fIGlzIHNwZWNpZmllZCB0byByZXR1cm4gYW4gSW50ZWdyYWwgdHlwZSwKICAgICAgICAgICAgYnV0IGludCgpIG5lZWRzIHRvIHJldHVybiBhbiBpbnQuICovCi0gICAgICAgIG0gPSB0cnVuY2F0ZWQtPm9iX3R5cGUtPnRwX2FzX251bWJlcjsKKyAgICAgICAgbSA9IHJlc3VsdC0+b2JfdHlwZS0+dHBfYXNfbnVtYmVyOwogICAgICAgICBpZiAobSA9PSBOVUxMIHx8IG0tPm5iX2ludCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoCiAgICAgICAgICAgICAgICAgUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICJfX3RydW5jX18gcmV0dXJuZWQgbm9uLUludGVncmFsICh0eXBlICUuMjAwcykiLAotICAgICAgICAgICAgICAgIHRydW5jYXRlZC0+b2JfdHlwZS0+dHBfbmFtZSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodHJ1bmNhdGVkKTsKKyAgICAgICAgICAgICAgICByZXN1bHQtPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICBpbnRfaW5zdGFuY2UgPSAoUHlPYmplY3QgKilfUHlMb25nX0Zyb21OYkludCh0cnVuY2F0ZWQpOwotICAgICAgICBQeV9ERUNSRUYodHJ1bmNhdGVkKTsKLSAgICAgICAgcmV0dXJuIGludF9pbnN0YW5jZTsKKyAgICAgICAgUHlfU0VUUkVGKHJlc3VsdCwgKFB5T2JqZWN0ICopX1B5TG9uZ19Gcm9tTmJJbnQocmVzdWx0KSk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gTlVMTCAmJiAhUHlMb25nX0NoZWNrRXhhY3QocmVzdWx0KSkgeworICAgICAgICAgICAgUHlfU0VUUkVGKHJlc3VsdCwgX1B5TG9uZ19Db3B5KChQeUxvbmdPYmplY3QgKilyZXN1bHQpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMzIyLDcgKzEzNjksNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlQXJyYXlfR0VUX1NJWkUobyksIDEwKTsKIAogICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIobywgJnZpZXcsIFB5QlVGX1NJTVBMRSkgPT0gMCkgewotICAgICAgICBQeU9iamVjdCAqcmVzdWx0LCAqYnl0ZXM7CisgICAgICAgIFB5T2JqZWN0ICpieXRlczsKIAogICAgICAgICAvKiBDb3B5IHRvIE5VTC10ZXJtaW5hdGVkIGJ1ZmZlci4gKi8KICAgICAgICAgYnl0ZXMgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjb25zdCBjaGFyICopdmlldy5idWYsIHZpZXcubGVuKTsKQEAgLTEzNDYsMjMgKzEzOTMsNDMgQEAKIHsKICAgICBQeU51bWJlck1ldGhvZHMgKm07CiAKLSAgICBpZiAobyA9PSBOVUxMKQorICAgIGlmIChvID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CisKKyAgICBpZiAoUHlGbG9hdF9DaGVja0V4YWN0KG8pKSB7CisgICAgICAgIFB5X0lOQ1JFRihvKTsKKyAgICAgICAgcmV0dXJuIG87CisgICAgfQogICAgIG0gPSBvLT5vYl90eXBlLT50cF9hc19udW1iZXI7CiAgICAgaWYgKG0gJiYgbS0+bmJfZmxvYXQpIHsgLyogVGhpcyBzaG91bGQgaW5jbHVkZSBzdWJjbGFzc2VzIG9mIGZsb2F0ICovCiAgICAgICAgIFB5T2JqZWN0ICpyZXMgPSBtLT5uYl9mbG9hdChvKTsKLSAgICAgICAgaWYgKHJlcyAmJiAhUHlGbG9hdF9DaGVjayhyZXMpKSB7CisgICAgICAgIGRvdWJsZSB2YWw7CisgICAgICAgIGlmICghcmVzIHx8IFB5RmxvYXRfQ2hlY2tFeGFjdChyZXMpKSB7CisgICAgICAgICAgICByZXR1cm4gcmVzOworICAgICAgICB9CisgICAgICAgIGlmICghUHlGbG9hdF9DaGVjayhyZXMpKSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAiX19mbG9hdF9fIHJldHVybmVkIG5vbi1mbG9hdCAodHlwZSAlLjIwMHMpIiwKLSAgICAgICAgICAgICAgcmVzLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAiJS41MHMuX19mbG9hdF9fIHJldHVybmVkIG5vbi1mbG9hdCAodHlwZSAlLjUwcykiLAorICAgICAgICAgICAgICAgICAgICAgICAgIG8tPm9iX3R5cGUtPnRwX25hbWUsIHJlcy0+b2JfdHlwZS0+dHBfbmFtZSk7CiAgICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiByZXM7CisgICAgICAgIC8qIElzc3VlICMyNjk4Mzogd2FybiBpZiAncmVzJyBub3Qgb2YgZXhhY3QgdHlwZSBmbG9hdC4gKi8KKyAgICAgICAgaWYgKFB5RXJyX1dhcm5Gb3JtYXQoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLCAxLAorICAgICAgICAgICAgICAgICIlLjUwcy5fX2Zsb2F0X18gcmV0dXJuZWQgbm9uLWZsb2F0ICh0eXBlICUuNTBzKS4gICIKKyAgICAgICAgICAgICAgICAiVGhlIGFiaWxpdHkgdG8gcmV0dXJuIGFuIGluc3RhbmNlIG9mIGEgc3RyaWN0IHN1YmNsYXNzIG9mIGZsb2F0ICIKKyAgICAgICAgICAgICAgICAiaXMgZGVwcmVjYXRlZCwgYW5kIG1heSBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHZlcnNpb24gb2YgUHl0aG9uLiIsCisgICAgICAgICAgICAgICAgby0+b2JfdHlwZS0+dHBfbmFtZSwgcmVzLT5vYl90eXBlLT50cF9uYW1lKSkgeworICAgICAgICAgICAgUHlfREVDUkVGKHJlcyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICB2YWwgPSBQeUZsb2F0X0FTX0RPVUJMRShyZXMpOworICAgICAgICBQeV9ERUNSRUYocmVzKTsKKyAgICAgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSh2YWwpOwogICAgIH0KICAgICBpZiAoUHlGbG9hdF9DaGVjayhvKSkgeyAvKiBBIGZsb2F0IHN1YmNsYXNzIHdpdGggbmJfZmxvYXQgPT0gTlVMTCAqLwotICAgICAgICBQeUZsb2F0T2JqZWN0ICpwbyA9IChQeUZsb2F0T2JqZWN0ICopbzsKLSAgICAgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZShwby0+b2JfZnZhbCk7CisgICAgICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUoUHlGbG9hdF9BU19ET1VCTEUobykpOwogICAgIH0KICAgICByZXR1cm4gUHlGbG9hdF9Gcm9tU3RyaW5nKG8pOwogfQpAQCAtMTQzMCw4ICsxNDk3LDkgQEAKIHsKICAgICBQeVNlcXVlbmNlTWV0aG9kcyAqbTsKIAotICAgIGlmIChzID09IE5VTEwgfHwgbyA9PSBOVUxMKQorICAgIGlmIChzID09IE5VTEwgfHwgbyA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQogCiAgICAgbSA9IHMtPm9iX3R5cGUtPnRwX2FzX3NlcXVlbmNlOwogICAgIGlmIChtICYmIG0tPnNxX2NvbmNhdCkKQEAgLTE0NTQsOCArMTUyMiw5IEBACiB7CiAgICAgUHlTZXF1ZW5jZU1ldGhvZHMgKm07CiAKLSAgICBpZiAobyA9PSBOVUxMKQorICAgIGlmIChvID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CiAKICAgICBtID0gby0+b2JfdHlwZS0+dHBfYXNfc2VxdWVuY2U7CiAgICAgaWYgKG0gJiYgbS0+c3FfcmVwZWF0KQpAQCAtMTQ4Myw4ICsxNTUyLDkgQEAKIHsKICAgICBQeVNlcXVlbmNlTWV0aG9kcyAqbTsKIAotICAgIGlmIChzID09IE5VTEwgfHwgbyA9PSBOVUxMKQorICAgIGlmIChzID09IE5VTEwgfHwgbyA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQogCiAgICAgbSA9IHMtPm9iX3R5cGUtPnRwX2FzX3NlcXVlbmNlOwogICAgIGlmIChtICYmIG0tPnNxX2lucGxhY2VfY29uY2F0KQpAQCAtMTUwNyw4ICsxNTc3LDkgQEAKIHsKICAgICBQeVNlcXVlbmNlTWV0aG9kcyAqbTsKIAotICAgIGlmIChvID09IE5VTEwpCisgICAgaWYgKG8gPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KIAogICAgIG0gPSBvLT5vYl90eXBlLT50cF9hc19zZXF1ZW5jZTsKICAgICBpZiAobSAmJiBtLT5zcV9pbnBsYWNlX3JlcGVhdCkKQEAgLTE1MzYsMTYgKzE2MDcsMTkgQEAKIHsKICAgICBQeVNlcXVlbmNlTWV0aG9kcyAqbTsKIAotICAgIGlmIChzID09IE5VTEwpCisgICAgaWYgKHMgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KIAogICAgIG0gPSBzLT5vYl90eXBlLT50cF9hc19zZXF1ZW5jZTsKICAgICBpZiAobSAmJiBtLT5zcV9pdGVtKSB7CiAgICAgICAgIGlmIChpIDwgMCkgewogICAgICAgICAgICAgaWYgKG0tPnNxX2xlbmd0aCkgewogICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbCA9ICgqbS0+c3FfbGVuZ3RoKShzKTsKLSAgICAgICAgICAgICAgICBpZiAobCA8IDApCisgICAgICAgICAgICAgICAgaWYgKGwgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydChQeUVycl9PY2N1cnJlZCgpKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGkgKz0gbDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTU2MCw3ICsxNjM0LDkgQEAKIHsKICAgICBQeU1hcHBpbmdNZXRob2RzICptcDsKIAotICAgIGlmICghcykgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICBpZiAoIXMpIHsKKyAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CiAKICAgICBtcCA9IHMtPm9iX3R5cGUtPnRwX2FzX21hcHBpbmc7CiAgICAgaWYgKG1wICYmIG1wLT5tcF9zdWJzY3JpcHQpIHsKQEAgLTE2ODcsOCArMTc2Myw5IEBACiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBqOwogCi0gICAgaWYgKHYgPT0gTlVMTCkKKyAgICBpZiAodiA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQogCiAgICAgLyogU3BlY2lhbC1jYXNlIHRoZSBjb21tb24gdHVwbGUgYW5kIGxpc3QgY2FzZXMsIGZvciBlZmZpY2llbmN5LiAqLwogICAgIGlmIChQeVR1cGxlX0NoZWNrRXhhY3QodikpIHsKQEAgLTE3NjgsOCArMTg0NSw5IEBACiAgICAgUHlPYmplY3QgKnJlc3VsdDsgIC8qIHJlc3VsdCBsaXN0ICovCiAgICAgUHlPYmplY3QgKnJ2OyAgICAgICAgICAvKiByZXR1cm4gdmFsdWUgZnJvbSBQeUxpc3RfRXh0ZW5kICovCiAKLSAgICBpZiAodiA9PSBOVUxMKQorICAgIGlmICh2ID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CiAKICAgICByZXN1bHQgPSBQeUxpc3RfTmV3KDApOwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKQEAgLTE3ODksOCArMTg2Nyw5IEBACiB7CiAgICAgUHlPYmplY3QgKml0OwogCi0gICAgaWYgKHYgPT0gTlVMTCkKKyAgICBpZiAodiA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQogCiAgICAgaWYgKFB5TGlzdF9DaGVja0V4YWN0KHYpIHx8IFB5VHVwbGVfQ2hlY2tFeGFjdCh2KSkgewogICAgICAgICBQeV9JTkNSRUYodik7CkBAIC0xOTczLDggKzIwNTIsOSBAQAogewogICAgIFB5T2JqZWN0ICpva2V5LCAqcjsKIAotICAgIGlmIChrZXkgPT0gTlVMTCkKKyAgICBpZiAoa2V5ID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CiAKICAgICBva2V5ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoa2V5KTsKICAgICBpZiAob2tleSA9PSBOVUxMKQpAQCAtMjExOCwyMCArMjE5OCwxOCBAQAogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgaWYgKGVycl9vY2N1cnJlZCkgewotICAgICAgICAgICAgUHlPYmplY3QgKmV4YywgKnZhbCwgKnRiOwotICAgICAgICAgICAgUHlFcnJfRmV0Y2goJmV4YywgJnZhbCwgJnRiKTsKLQogICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAKLSAgICAgICAgICAgIGlmIChmdW5jKQotICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVSIHJldHVybmVkIGEgcmVzdWx0IHdpdGggYW4gZXJyb3Igc2V0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuYyk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMgcmV0dXJuZWQgYSByZXN1bHQgd2l0aCBhbiBlcnJvciBzZXQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVyZSk7Ci0gICAgICAgICAgICBfUHlFcnJfQ2hhaW5FeGNlcHRpb25zKGV4YywgdmFsLCB0Yik7CisgICAgICAgICAgICBpZiAoZnVuYykgeworICAgICAgICAgICAgICAgIF9QeUVycl9Gb3JtYXRGcm9tQ2F1c2UoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiJVIgcmV0dXJuZWQgYSByZXN1bHQgd2l0aCBhbiBlcnJvciBzZXQiLAorICAgICAgICAgICAgICAgICAgICAgICAgZnVuYyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBfUHlFcnJfRm9ybWF0RnJvbUNhdXNlKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIiVzIHJldHVybmVkIGEgcmVzdWx0IHdpdGggYW4gZXJyb3Igc2V0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdoZXJlKTsKKyAgICAgICAgICAgIH0KICNpZmRlZiBQeV9ERUJVRwogICAgICAgICAgICAgLyogRW5zdXJlIHRoYXQgdGhlIGJ1ZyBpcyBjYXVnaHQgaW4gZGVidWcgbW9kZSAqLwogICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiYSBmdW5jdGlvbiByZXR1cm5lZCBhIHJlc3VsdCB3aXRoIGFuIGVycm9yIHNldCIpOwpAQCAtMjE0Myw3ICsyMjIxLDcgQEAKIH0KIAogUHlPYmplY3QgKgotUHlPYmplY3RfQ2FsbChQeU9iamVjdCAqZnVuYywgUHlPYmplY3QgKmFyZywgUHlPYmplY3QgKmt3KQorUHlPYmplY3RfQ2FsbChQeU9iamVjdCAqZnVuYywgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CiAgICAgdGVybmFyeWZ1bmMgY2FsbDsKICAgICBQeU9iamVjdCAqcmVzdWx0OwpAQCAtMjE1Miw2ICsyMjMwLDggQEAKICAgICAgICBiZWNhdXNlIGl0IG1heSBjbGVhciBpdCAoZGlyZWN0bHkgb3IgaW5kaXJlY3RseSkgYW5kIHNvIHRoZQogICAgICAgIGNhbGxlciBsb3NlcyBpdHMgZXhjZXB0aW9uICovCiAgICAgYXNzZXJ0KCFQeUVycl9PY2N1cnJlZCgpKTsKKyAgICBhc3NlcnQoUHlUdXBsZV9DaGVjayhhcmdzKSk7CisgICAgYXNzZXJ0KGt3YXJncyA9PSBOVUxMIHx8IFB5RGljdF9DaGVjayhrd2FyZ3MpKTsKIAogICAgIGNhbGwgPSBmdW5jLT5vYl90eXBlLT50cF9jYWxsOwogICAgIGlmIChjYWxsID09IE5VTEwpIHsKQEAgLTIxNjMsMTA4ICsyMjQzLDM0MyBAQAogICAgIGlmIChQeV9FbnRlclJlY3Vyc2l2ZUNhbGwoIiB3aGlsZSBjYWxsaW5nIGEgUHl0aG9uIG9iamVjdCIpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJlc3VsdCA9ICgqY2FsbCkoZnVuYywgYXJnLCBrdyk7CisgICAgcmVzdWx0ID0gKCpjYWxsKShmdW5jLCBhcmdzLCBrd2FyZ3MpOwogCiAgICAgUHlfTGVhdmVSZWN1cnNpdmVDYWxsKCk7CiAKICAgICByZXR1cm4gX1B5X0NoZWNrRnVuY3Rpb25SZXN1bHQoZnVuYywgcmVzdWx0LCBOVUxMKTsKIH0KIAorUHlPYmplY3QqCitfUHlTdGFja19Bc1R1cGxlKFB5T2JqZWN0ICoqc3RhY2ssIFB5X3NzaXplX3QgbmFyZ3MpCit7CisgICAgUHlPYmplY3QgKmFyZ3M7CisgICAgUHlfc3NpemVfdCBpOworCisgICAgYXJncyA9IFB5VHVwbGVfTmV3KG5hcmdzKTsKKyAgICBpZiAoYXJncyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGZvciAoaT0wOyBpIDwgbmFyZ3M7IGkrKykgeworICAgICAgICBQeU9iamVjdCAqaXRlbSA9IHN0YWNrW2ldOworICAgICAgICBQeV9JTkNSRUYoaXRlbSk7CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgaSwgaXRlbSk7CisgICAgfQorCisgICAgcmV0dXJuIGFyZ3M7Cit9CisKK1B5T2JqZWN0ICoKK19QeU9iamVjdF9GYXN0Q2FsbERpY3QoUHlPYmplY3QgKmZ1bmMsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICB0ZXJuYXJ5ZnVuYyBjYWxsOworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOworCisgICAgLyogX1B5T2JqZWN0X0Zhc3RDYWxsRGljdCgpIG11c3Qgbm90IGJlIGNhbGxlZCB3aXRoIGFuIGV4Y2VwdGlvbiBzZXQsCisgICAgICAgYmVjYXVzZSBpdCBtYXkgY2xlYXIgaXQgKGRpcmVjdGx5IG9yIGluZGlyZWN0bHkpIGFuZCBzbyB0aGUKKyAgICAgICBjYWxsZXIgbG9zZXMgaXRzIGV4Y2VwdGlvbiAqLworICAgIGFzc2VydCghUHlFcnJfT2NjdXJyZWQoKSk7CisKKyAgICBhc3NlcnQoZnVuYyAhPSBOVUxMKTsKKyAgICBhc3NlcnQobmFyZ3MgPj0gMCk7CisgICAgYXNzZXJ0KG5hcmdzID09IDAgfHwgYXJncyAhPSBOVUxMKTsKKyAgICBhc3NlcnQoa3dhcmdzID09IE5VTEwgfHwgUHlEaWN0X0NoZWNrKGt3YXJncykpOworCisgICAgaWYgKFB5X0VudGVyUmVjdXJzaXZlQ2FsbCgiIHdoaWxlIGNhbGxpbmcgYSBQeXRob24gb2JqZWN0IikpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKFB5RnVuY3Rpb25fQ2hlY2soZnVuYykpIHsKKyAgICAgICAgcmVzdWx0ID0gX1B5RnVuY3Rpb25fRmFzdENhbGxEaWN0KGZ1bmMsIGFyZ3MsIG5hcmdzLCBrd2FyZ3MpOworICAgIH0KKyAgICBlbHNlIGlmIChQeUNGdW5jdGlvbl9DaGVjayhmdW5jKSkgeworICAgICAgICByZXN1bHQgPSBfUHlDRnVuY3Rpb25fRmFzdENhbGxEaWN0KGZ1bmMsIGFyZ3MsIG5hcmdzLCBrd2FyZ3MpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlPYmplY3QgKnR1cGxlOworCisgICAgICAgIC8qIFNsb3ctcGF0aDogYnVpbGQgYSB0ZW1wb3JhcnkgdHVwbGUgKi8KKyAgICAgICAgY2FsbCA9IGZ1bmMtPm9iX3R5cGUtPnRwX2NhbGw7CisgICAgICAgIGlmIChjYWxsID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICInJS4yMDBzJyBvYmplY3QgaXMgbm90IGNhbGxhYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgfQorCisgICAgICAgIHR1cGxlID0gX1B5U3RhY2tfQXNUdXBsZShhcmdzLCBuYXJncyk7CisgICAgICAgIGlmICh0dXBsZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKworICAgICAgICByZXN1bHQgPSAoKmNhbGwpKGZ1bmMsIHR1cGxlLCBrd2FyZ3MpOworICAgICAgICBQeV9ERUNSRUYodHVwbGUpOworCisgICAgICAgIHJlc3VsdCA9IF9QeV9DaGVja0Z1bmN0aW9uUmVzdWx0KGZ1bmMsIHJlc3VsdCwgTlVMTCk7CisgICAgfQorCitleGl0OgorICAgIFB5X0xlYXZlUmVjdXJzaXZlQ2FsbCgpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogUG9zaXRpb25hbCBhcmd1bWVudHMgYXJlIG9iaiBmb2xsb3dlZCBieSBhcmdzLiAqLworUHlPYmplY3QgKgorX1B5T2JqZWN0X0NhbGxfUHJlcGVuZChQeU9iamVjdCAqZnVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnNtYWxsX3N0YWNrWzhdOworICAgIFB5T2JqZWN0ICoqc3RhY2s7CisgICAgUHlfc3NpemVfdCBhcmdjb3VudDsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgYXNzZXJ0KFB5VHVwbGVfQ2hlY2soYXJncykpOworCisgICAgYXJnY291bnQgPSBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpOworICAgIGlmIChhcmdjb3VudCArIDEgPD0gKFB5X3NzaXplX3QpUHlfQVJSQVlfTEVOR1RIKHNtYWxsX3N0YWNrKSkgeworICAgICAgICBzdGFjayA9IHNtYWxsX3N0YWNrOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgc3RhY2sgPSBQeU1lbV9NYWxsb2MoKGFyZ2NvdW50ICsgMSkgKiBzaXplb2YoUHlPYmplY3QgKikpOworICAgICAgICBpZiAoc3RhY2sgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorCisgICAgLyogdXNlIGJvcnJvd2VkIHJlZmVyZW5jZXMgKi8KKyAgICBzdGFja1swXSA9IG9iajsKKyAgICBtZW1jcHkoJnN0YWNrWzFdLAorICAgICAgICAgICAgICAmUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAwKSwKKyAgICAgICAgICAgICAgYXJnY291bnQgKiBzaXplb2YoUHlPYmplY3QgKikpOworCisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0Zhc3RDYWxsRGljdChmdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2ssIGFyZ2NvdW50ICsgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3YXJncyk7CisgICAgaWYgKHN0YWNrICE9IHNtYWxsX3N0YWNrKSB7CisgICAgICAgIFB5TWVtX0ZyZWUoc3RhY2spOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitQeU9iamVjdCAqCitfUHlTdGFja19Bc0RpY3QoUHlPYmplY3QgKip2YWx1ZXMsIFB5T2JqZWN0ICprd25hbWVzKQoreworICAgIFB5X3NzaXplX3Qgbmt3YXJncyA9IFB5VHVwbGVfR0VUX1NJWkUoa3duYW1lcyk7CisgICAgUHlPYmplY3QgKmt3ZGljdDsKKyAgICBQeV9zc2l6ZV90IGk7CisKKyAgICBrd2RpY3QgPSBQeURpY3RfTmV3KCk7CisgICAgaWYgKGt3ZGljdCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCBua3dhcmdzOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QgKmtleSA9IFB5VHVwbGVfR0VUX0lURU0oa3duYW1lcywgaSk7CisgICAgICAgIFB5T2JqZWN0ICp2YWx1ZSA9ICp2YWx1ZXMrKzsKKyAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkpOworICAgICAgICBhc3NlcnQoUHlEaWN0X0dldEl0ZW0oa3dkaWN0LCBrZXkpID09IE5VTEwpOworICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW0oa3dkaWN0LCBrZXksIHZhbHVlKSkgeworICAgICAgICAgICAgUHlfREVDUkVGKGt3ZGljdCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4ga3dkaWN0OworfQorCitQeU9iamVjdCAqKgorX1B5U3RhY2tfVW5wYWNrRGljdChQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MsCisgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqcF9rd25hbWVzLCBQeU9iamVjdCAqZnVuYykKK3sKKyAgICBQeU9iamVjdCAqKnN0YWNrLCAqKmt3c3RhY2s7CisgICAgUHlfc3NpemVfdCBua3dhcmdzOworICAgIFB5X3NzaXplX3QgcG9zLCBpOworICAgIFB5T2JqZWN0ICprZXksICp2YWx1ZTsKKyAgICBQeU9iamVjdCAqa3duYW1lczsKKworICAgIGFzc2VydChuYXJncyA+PSAwKTsKKyAgICBhc3NlcnQoa3dhcmdzID09IE5VTEwgfHwgUHlEaWN0X0NoZWNrRXhhY3Qoa3dhcmdzKSk7CisKKyAgICBua3dhcmdzID0gKGt3YXJncyAhPSBOVUxMKSA/IFB5RGljdF9TaXplKGt3YXJncykgOiAwOworICAgIGlmICghbmt3YXJncykgeworICAgICAgICAqcF9rd25hbWVzID0gTlVMTDsKKyAgICAgICAgcmV0dXJuIGFyZ3M7CisgICAgfQorCisgICAgaWYgKChzaXplX3QpbmFyZ3MgPiBQWV9TU0laRV9UX01BWCAvIHNpemVvZihzdGFja1swXSkgLSAoc2l6ZV90KW5rd2FyZ3MpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgc3RhY2sgPSBQeU1lbV9NYWxsb2MoKG5hcmdzICsgbmt3YXJncykgKiBzaXplb2Yoc3RhY2tbMF0pKTsKKyAgICBpZiAoc3RhY2sgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBrd25hbWVzID0gUHlUdXBsZV9OZXcobmt3YXJncyk7CisgICAgaWYgKGt3bmFtZXMgPT0gTlVMTCkgeworICAgICAgICBQeU1lbV9GcmVlKHN0YWNrKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyogQ29weSBwb3NpdGlvbiBhcmd1bWVudHMgKGJvcnJvd2VkIHJlZmVyZW5jZXMpICovCisgICAgbWVtY3B5KHN0YWNrLCBhcmdzLCBuYXJncyAqIHNpemVvZihzdGFja1swXSkpOworCisgICAga3dzdGFjayA9IHN0YWNrICsgbmFyZ3M7CisgICAgcG9zID0gaSA9IDA7CisgICAgLyogVGhpcyBsb29wIGRvZXNuJ3Qgc3VwcG9ydCBsb29rdXAgZnVuY3Rpb24gbXV0YXRpbmcgdGhlIGRpY3Rpb25hcnkKKyAgICAgICB0byBjaGFuZ2UgaXRzIHNpemUuIEl0J3MgYSBkZWxpYmVyYXRlIGNob2ljZSBmb3Igc3BlZWQsIHRoaXMgZnVuY3Rpb24gaXMKKyAgICAgICBjYWxsZWQgaW4gdGhlIHBlcmZvcm1hbmNlIGNyaXRpY2FsIGhvdCBjb2RlLiAqLworICAgIHdoaWxlIChQeURpY3RfTmV4dChrd2FyZ3MsICZwb3MsICZrZXksICZ2YWx1ZSkpIHsKKyAgICAgICAgUHlfSU5DUkVGKGtleSk7CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oa3duYW1lcywgaSwga2V5KTsKKyAgICAgICAgLyogVGhlIHN0YWNrIGNvbnRhaW5zIGJvcnJvd2VkIHJlZmVyZW5jZXMgKi8KKyAgICAgICAga3dzdGFja1tpXSA9IHZhbHVlOworICAgICAgICBpKys7CisgICAgfQorCisgICAgKnBfa3duYW1lcyA9IGt3bmFtZXM7CisgICAgcmV0dXJuIHN0YWNrOworfQorCitQeU9iamVjdCAqCitfUHlPYmplY3RfRmFzdENhbGxLZXl3b3JkcyhQeU9iamVjdCAqZnVuYywgUHlPYmplY3QgKipzdGFjaywgUHlfc3NpemVfdCBuYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprd25hbWVzKQoreworICAgIFB5T2JqZWN0ICprd2RpY3QsICpyZXN1bHQ7CisgICAgUHlfc3NpemVfdCBua3dhcmdzID0gKGt3bmFtZXMgPT0gTlVMTCkgPyAwIDogUHlUdXBsZV9HRVRfU0laRShrd25hbWVzKTsKKworICAgIGFzc2VydChuYXJncyA+PSAwKTsKKyAgICBhc3NlcnQoa3duYW1lcyA9PSBOVUxMIHx8IFB5VHVwbGVfQ2hlY2tFeGFjdChrd25hbWVzKSk7CisgICAgYXNzZXJ0KChuYXJncyA9PSAwICYmIG5rd2FyZ3MgPT0gMCkgfHwgc3RhY2sgIT0gTlVMTCk7CisgICAgLyoga3duYW1lcyBtdXN0IG9ubHkgY29udGFpbnMgc3RyIHN0cmluZ3MsIG5vIHN1YmNsYXNzLCBhbmQgYWxsIGtleXMgbXVzdAorICAgICAgIGJlIHVuaXF1ZTogdGhlc2UgYXJlIGltcGxlbWVudGVkIGluIFB5dGhvbi9jZXZhbC5jIGFuZAorICAgICAgIF9QeUFyZ19QYXJzZVN0YWNrKCkuICovCisKKyAgICBpZiAoUHlGdW5jdGlvbl9DaGVjayhmdW5jKSkgeworICAgICAgICByZXR1cm4gX1B5RnVuY3Rpb25fRmFzdENhbGxLZXl3b3JkcyhmdW5jLCBzdGFjaywgbmFyZ3MsIGt3bmFtZXMpOworICAgIH0KKworICAgIGlmIChQeUNGdW5jdGlvbl9DaGVjayhmdW5jKSkgeworICAgICAgICByZXR1cm4gX1B5Q0Z1bmN0aW9uX0Zhc3RDYWxsS2V5d29yZHMoZnVuYywgc3RhY2ssIG5hcmdzLCBrd25hbWVzKTsKKyAgICB9CisKKyAgICBpZiAobmt3YXJncyA+IDApIHsKKyAgICAgICAga3dkaWN0ID0gX1B5U3RhY2tfQXNEaWN0KHN0YWNrICsgbmFyZ3MsIGt3bmFtZXMpOworICAgICAgICBpZiAoa3dkaWN0ID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBrd2RpY3QgPSBOVUxMOworICAgIH0KKworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9GYXN0Q2FsbERpY3QoZnVuYywgc3RhY2ssIG5hcmdzLCBrd2RpY3QpOworICAgIFB5X1hERUNSRUYoa3dkaWN0KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBzdGF0aWMgUHlPYmplY3QqCiBjYWxsX2Z1bmN0aW9uX3RhaWwoUHlPYmplY3QgKmNhbGxhYmxlLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeU9iamVjdCAqcmV0dmFsOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAKLSAgICBpZiAoYXJncyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBhc3NlcnQoYXJncyAhPSBOVUxMKTsKIAogICAgIGlmICghUHlUdXBsZV9DaGVjayhhcmdzKSkgewotICAgICAgICBQeU9iamVjdCAqYTsKLQotICAgICAgICBhID0gUHlUdXBsZV9OZXcoMSk7Ci0gICAgICAgIGlmIChhID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIFB5VHVwbGVfU0VUX0lURU0oYSwgMCwgYXJncyk7Ci0gICAgICAgIGFyZ3MgPSBhOworICAgICAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbEFyZzEoY2FsbGFibGUsIGFyZ3MpOwogICAgIH0KLSAgICByZXR2YWwgPSBQeU9iamVjdF9DYWxsKGNhbGxhYmxlLCBhcmdzLCBOVUxMKTsKKyAgICBlbHNlIHsKKyAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbChjYWxsYWJsZSwgYXJncywgTlVMTCk7CisgICAgfQogCi0gICAgUHlfREVDUkVGKGFyZ3MpOwotCi0gICAgcmV0dXJuIHJldHZhbDsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBQeU9iamVjdCAqCiBQeU9iamVjdF9DYWxsRnVuY3Rpb24oUHlPYmplY3QgKmNhbGxhYmxlLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKIHsKICAgICB2YV9saXN0IHZhOwotICAgIFB5T2JqZWN0ICphcmdzOworICAgIFB5T2JqZWN0ICphcmdzLCAqcmVzdWx0OwogCi0gICAgaWYgKGNhbGxhYmxlID09IE5VTEwpCisgICAgaWYgKGNhbGxhYmxlID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKLQotICAgIGlmIChmb3JtYXQgJiYgKmZvcm1hdCkgewotICAgICAgICB2YV9zdGFydCh2YSwgZm9ybWF0KTsKLSAgICAgICAgYXJncyA9IFB5X1ZhQnVpbGRWYWx1ZShmb3JtYXQsIHZhKTsKLSAgICAgICAgdmFfZW5kKHZhKTsKICAgICB9Ci0gICAgZWxzZQotICAgICAgICBhcmdzID0gUHlUdXBsZV9OZXcoMCk7Ci0gICAgaWYgKGFyZ3MgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICByZXR1cm4gY2FsbF9mdW5jdGlvbl90YWlsKGNhbGxhYmxlLCBhcmdzKTsKKyAgICBpZiAoIWZvcm1hdCB8fCAhKmZvcm1hdCkgeworICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxOb0FyZyhjYWxsYWJsZSk7CisgICAgfQorCisgICAgdmFfc3RhcnQodmEsIGZvcm1hdCk7CisgICAgYXJncyA9IFB5X1ZhQnVpbGRWYWx1ZShmb3JtYXQsIHZhKTsKKyAgICB2YV9lbmQodmEpOworICAgIGlmIChhcmdzID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmVzdWx0ID0gY2FsbF9mdW5jdGlvbl90YWlsKGNhbGxhYmxlLCBhcmdzKTsKKyAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogUHlPYmplY3QgKgogX1B5T2JqZWN0X0NhbGxGdW5jdGlvbl9TaXplVChQeU9iamVjdCAqY2FsbGFibGUsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQogewogICAgIHZhX2xpc3QgdmE7Ci0gICAgUHlPYmplY3QgKmFyZ3M7CisgICAgUHlPYmplY3QgKmFyZ3MsICpyZXN1bHQ7CiAKLSAgICBpZiAoY2FsbGFibGUgPT0gTlVMTCkKKyAgICBpZiAoY2FsbGFibGUgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOwotCi0gICAgaWYgKGZvcm1hdCAmJiAqZm9ybWF0KSB7Ci0gICAgICAgIHZhX3N0YXJ0KHZhLCBmb3JtYXQpOwotICAgICAgICBhcmdzID0gX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVChmb3JtYXQsIHZhKTsKLSAgICAgICAgdmFfZW5kKHZhKTsKICAgICB9Ci0gICAgZWxzZQotICAgICAgICBhcmdzID0gUHlUdXBsZV9OZXcoMCk7CiAKLSAgICByZXR1cm4gY2FsbF9mdW5jdGlvbl90YWlsKGNhbGxhYmxlLCBhcmdzKTsKKyAgICBpZiAoIWZvcm1hdCB8fCAhKmZvcm1hdCkgeworICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxOb0FyZyhjYWxsYWJsZSk7CisgICAgfQorCisgICAgdmFfc3RhcnQodmEsIGZvcm1hdCk7CisgICAgYXJncyA9IF9QeV9WYUJ1aWxkVmFsdWVfU2l6ZVQoZm9ybWF0LCB2YSk7CisgICAgdmFfZW5kKHZhKTsKKyAgICBpZiAoYXJncyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJlc3VsdCA9IGNhbGxfZnVuY3Rpb25fdGFpbChjYWxsYWJsZSwgYXJncyk7CisgICAgUHlfREVDUkVGKGFyZ3MpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCoKIGNhbGxtZXRob2QoUHlPYmplY3QqIGZ1bmMsIGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCB2YSwgaW50IGlzX3NpemVfdCkKIHsKLSAgICBQeU9iamVjdCAqcmV0dmFsID0gTlVMTDsKLSAgICBQeU9iamVjdCAqYXJnczsKKyAgICBQeU9iamVjdCAqYXJncywgKnJlc3VsdDsKKworICAgIGFzc2VydChmdW5jICE9IE5VTEwpOwogCiAgICAgaWYgKCFQeUNhbGxhYmxlX0NoZWNrKGZ1bmMpKSB7CiAgICAgICAgIHR5cGVfZXJyb3IoImF0dHJpYnV0ZSBvZiB0eXBlICclLjIwMHMnIGlzIG5vdCBjYWxsYWJsZSIsIGZ1bmMpOwotICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmIChmb3JtYXQgJiYgKmZvcm1hdCkgewotICAgICAgICBpZiAoaXNfc2l6ZV90KQotICAgICAgICAgICAgYXJncyA9IF9QeV9WYUJ1aWxkVmFsdWVfU2l6ZVQoZm9ybWF0LCB2YSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFyZ3MgPSBQeV9WYUJ1aWxkVmFsdWUoZm9ybWF0LCB2YSk7CisgICAgaWYgKCFmb3JtYXQgfHwgISpmb3JtYXQpIHsKKyAgICAgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTm9BcmcoZnVuYyk7CiAgICAgfQotICAgIGVsc2UKLSAgICAgICAgYXJncyA9IFB5VHVwbGVfTmV3KDApOwogCi0gICAgcmV0dmFsID0gY2FsbF9mdW5jdGlvbl90YWlsKGZ1bmMsIGFyZ3MpOworICAgIGlmIChpc19zaXplX3QpIHsKKyAgICAgICAgYXJncyA9IF9QeV9WYUJ1aWxkVmFsdWVfU2l6ZVQoZm9ybWF0LCB2YSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBhcmdzID0gUHlfVmFCdWlsZFZhbHVlKGZvcm1hdCwgdmEpOworICAgIH0KKyAgICBpZiAoYXJncyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAotICBleGl0OgotICAgIC8qIGFyZ3MgZ2V0cyBjb25zdW1lZCBpbiBjYWxsX2Z1bmN0aW9uX3RhaWwgKi8KLSAgICBQeV9YREVDUkVGKGZ1bmMpOwotCi0gICAgcmV0dXJuIHJldHZhbDsKKyAgICByZXN1bHQgPSBjYWxsX2Z1bmN0aW9uX3RhaWwoZnVuYywgYXJncyk7CisgICAgUHlfREVDUkVGKGFyZ3MpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIFB5T2JqZWN0ICoKQEAgLTIyNzQsOCArMjU4OSw5IEBACiAgICAgUHlPYmplY3QgKmZ1bmMgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpyZXR2YWwgPSBOVUxMOwogCi0gICAgaWYgKG8gPT0gTlVMTCB8fCBuYW1lID09IE5VTEwpCisgICAgaWYgKG8gPT0gTlVMTCB8fCBuYW1lID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CiAKICAgICBmdW5jID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvLCBuYW1lKTsKICAgICBpZiAoZnVuYyA9PSBOVUxMKQpAQCAtMjI4NCw2ICsyNjAwLDcgQEAKICAgICB2YV9zdGFydCh2YSwgZm9ybWF0KTsKICAgICByZXR2YWwgPSBjYWxsbWV0aG9kKGZ1bmMsIGZvcm1hdCwgdmEsIDApOwogICAgIHZhX2VuZCh2YSk7CisgICAgUHlfREVDUkVGKGZ1bmMpOwogICAgIHJldHVybiByZXR2YWw7CiB9CiAKQEAgLTIyOTUsOCArMjYxMiw5IEBACiAgICAgUHlPYmplY3QgKmZ1bmMgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpyZXR2YWwgPSBOVUxMOwogCi0gICAgaWYgKG8gPT0gTlVMTCB8fCBuYW1lID09IE5VTEwpCisgICAgaWYgKG8gPT0gTlVMTCB8fCBuYW1lID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CiAKICAgICBmdW5jID0gX1B5T2JqZWN0X0dldEF0dHJJZChvLCBuYW1lKTsKICAgICBpZiAoZnVuYyA9PSBOVUxMKQpAQCAtMjMwNSw2ICsyNjIzLDcgQEAKICAgICB2YV9zdGFydCh2YSwgZm9ybWF0KTsKICAgICByZXR2YWwgPSBjYWxsbWV0aG9kKGZ1bmMsIGZvcm1hdCwgdmEsIDApOwogICAgIHZhX2VuZCh2YSk7CisgICAgUHlfREVDUkVGKGZ1bmMpOwogICAgIHJldHVybiByZXR2YWw7CiB9CiAKQEAgLTIzMTYsOCArMjYzNSw5IEBACiAgICAgUHlPYmplY3QgKmZ1bmMgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpyZXR2YWw7CiAKLSAgICBpZiAobyA9PSBOVUxMIHx8IG5hbWUgPT0gTlVMTCkKKyAgICBpZiAobyA9PSBOVUxMIHx8IG5hbWUgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KIAogICAgIGZ1bmMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG8sIG5hbWUpOwogICAgIGlmIChmdW5jID09IE5VTEwpCkBAIC0yMzI1LDYgKzI2NDUsNyBAQAogICAgIHZhX3N0YXJ0KHZhLCBmb3JtYXQpOwogICAgIHJldHZhbCA9IGNhbGxtZXRob2QoZnVuYywgZm9ybWF0LCB2YSwgMSk7CiAgICAgdmFfZW5kKHZhKTsKKyAgICBQeV9ERUNSRUYoZnVuYyk7CiAgICAgcmV0dXJuIHJldHZhbDsKIH0KIApAQCAtMjMzNiw4ICsyNjU3LDkgQEAKICAgICBQeU9iamVjdCAqZnVuYyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnJldHZhbDsKIAotICAgIGlmIChvID09IE5VTEwgfHwgbmFtZSA9PSBOVUxMKQorICAgIGlmIChvID09IE5VTEwgfHwgbmFtZSA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQogCiAgICAgZnVuYyA9IF9QeU9iamVjdF9HZXRBdHRySWQobywgbmFtZSk7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkgewpAQCAtMjM0NiwzOSArMjY2OCw2MyBAQAogICAgIHZhX3N0YXJ0KHZhLCBmb3JtYXQpOwogICAgIHJldHZhbCA9IGNhbGxtZXRob2QoZnVuYywgZm9ybWF0LCB2YSwgMSk7CiAgICAgdmFfZW5kKHZhKTsKKyAgICBQeV9ERUNSRUYoZnVuYyk7CiAgICAgcmV0dXJuIHJldHZhbDsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLW9iamFyZ3NfbWt0dXBsZSh2YV9saXN0IHZhKQorc3RhdGljIFB5T2JqZWN0ICoqCitvYmphcmdzX21rc3RhY2soUHlPYmplY3QgKipzbWFsbF9zdGFjaywgUHlfc3NpemVfdCBzbWFsbF9zdGFja19zaXplLAorICAgICAgICAgICAgICAgIHZhX2xpc3QgdmEsIFB5X3NzaXplX3QgKnBfbmFyZ3MpCiB7Ci0gICAgaW50IGksIG4gPSAwOworICAgIFB5X3NzaXplX3QgaSwgbjsKICAgICB2YV9saXN0IGNvdW50dmE7Ci0gICAgUHlPYmplY3QgKnJlc3VsdCwgKnRtcDsKKyAgICBQeU9iamVjdCAqKnN0YWNrOwogCi0gICAgICAgIFB5X1ZBX0NPUFkoY291bnR2YSwgdmEpOworICAgIC8qIENvdW50IHRoZSBudW1iZXIgb2YgYXJndW1lbnRzICovCisgICAgdmFfY29weShjb3VudHZhLCB2YSk7CiAKLSAgICB3aGlsZSAoKChQeU9iamVjdCAqKXZhX2FyZyhjb3VudHZhLCBQeU9iamVjdCAqKSkgIT0gTlVMTCkKLSAgICAgICAgKytuOwotICAgIHJlc3VsdCA9IFB5VHVwbGVfTmV3KG4pOwotICAgIGlmIChyZXN1bHQgIT0gTlVMTCAmJiBuID4gMCkgewotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7Ci0gICAgICAgICAgICB0bXAgPSAoUHlPYmplY3QgKil2YV9hcmcodmEsIFB5T2JqZWN0ICopOwotICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShyZXN1bHQsIGksIHRtcCk7Ci0gICAgICAgICAgICBQeV9JTkNSRUYodG1wKTsKKyAgICBuID0gMDsKKyAgICB3aGlsZSAoMSkgeworICAgICAgICBQeU9iamVjdCAqYXJnID0gdmFfYXJnKGNvdW50dmEsIFB5T2JqZWN0ICopOworICAgICAgICBpZiAoYXJnID09IE5VTEwpIHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIG4rKzsKKyAgICB9CisgICAgKnBfbmFyZ3MgPSBuOworCisgICAgLyogQ29weSBhcmd1bWVudHMgKi8KKyAgICBpZiAobiA8PSBzbWFsbF9zdGFja19zaXplKSB7CisgICAgICAgIHN0YWNrID0gc21hbGxfc3RhY2s7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBzdGFjayA9IFB5TWVtX01hbGxvYyhuICogc2l6ZW9mKHN0YWNrWzBdKSk7CisgICAgICAgIGlmIChzdGFjayA9PSBOVUxMKSB7CisgICAgICAgICAgICB2YV9lbmQoY291bnR2YSk7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKKworICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHsKKyAgICAgICAgc3RhY2tbaV0gPSB2YV9hcmcodmEsIFB5T2JqZWN0ICopOworICAgIH0KKyAgICB2YV9lbmQoY291bnR2YSk7CisgICAgcmV0dXJuIHN0YWNrOwogfQogCiBQeU9iamVjdCAqCiBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncyhQeU9iamVjdCAqY2FsbGFibGUsIFB5T2JqZWN0ICpuYW1lLCAuLi4pCiB7Ci0gICAgUHlPYmplY3QgKmFyZ3MsICp0bXA7CisgICAgUHlPYmplY3QgKnNtYWxsX3N0YWNrWzVdOworICAgIFB5T2JqZWN0ICoqc3RhY2s7CisgICAgUHlfc3NpemVfdCBuYXJnczsKKyAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIHZhX2xpc3QgdmFyZ3M7CiAKLSAgICBpZiAoY2FsbGFibGUgPT0gTlVMTCB8fCBuYW1lID09IE5VTEwpCisgICAgaWYgKGNhbGxhYmxlID09IE5VTEwgfHwgbmFtZSA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQogCiAgICAgY2FsbGFibGUgPSBQeU9iamVjdF9HZXRBdHRyKGNhbGxhYmxlLCBuYW1lKTsKICAgICBpZiAoY2FsbGFibGUgPT0gTlVMTCkKQEAgLTIzODYsMjggKzI3MzIsMzYgQEAKIAogICAgIC8qIGNvdW50IHRoZSBhcmdzICovCiAgICAgdmFfc3RhcnQodmFyZ3MsIG5hbWUpOwotICAgIGFyZ3MgPSBvYmphcmdzX21rdHVwbGUodmFyZ3MpOworICAgIHN0YWNrID0gb2JqYXJnc19ta3N0YWNrKHNtYWxsX3N0YWNrLCBQeV9BUlJBWV9MRU5HVEgoc21hbGxfc3RhY2spLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmdzLCAmbmFyZ3MpOwogICAgIHZhX2VuZCh2YXJncyk7Ci0gICAgaWYgKGFyZ3MgPT0gTlVMTCkgeworICAgIGlmIChzdGFjayA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0RFQ1JFRihjYWxsYWJsZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICB0bXAgPSBQeU9iamVjdF9DYWxsKGNhbGxhYmxlLCBhcmdzLCBOVUxMKTsKLSAgICBQeV9ERUNSRUYoYXJncyk7Ci0gICAgUHlfREVDUkVGKGNhbGxhYmxlKTsKIAotICAgIHJldHVybiB0bXA7CisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0Zhc3RDYWxsKGNhbGxhYmxlLCBzdGFjaywgbmFyZ3MpOworICAgIFB5X0RFQ1JFRihjYWxsYWJsZSk7CisgICAgaWYgKHN0YWNrICE9IHNtYWxsX3N0YWNrKSB7CisgICAgICAgIFB5TWVtX0ZyZWUoc3RhY2spOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIFB5T2JqZWN0ICoKIF9QeU9iamVjdF9DYWxsTWV0aG9kSWRPYmpBcmdzKFB5T2JqZWN0ICpjYWxsYWJsZSwKICAgICAgICAgc3RydWN0IF9QeV9JZGVudGlmaWVyICpuYW1lLCAuLi4pCiB7Ci0gICAgUHlPYmplY3QgKmFyZ3MsICp0bXA7CisgICAgUHlPYmplY3QgKnNtYWxsX3N0YWNrWzVdOworICAgIFB5T2JqZWN0ICoqc3RhY2s7CisgICAgUHlfc3NpemVfdCBuYXJnczsKKyAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIHZhX2xpc3QgdmFyZ3M7CiAKLSAgICBpZiAoY2FsbGFibGUgPT0gTlVMTCB8fCBuYW1lID09IE5VTEwpCisgICAgaWYgKGNhbGxhYmxlID09IE5VTEwgfHwgbmFtZSA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQogCiAgICAgY2FsbGFibGUgPSBfUHlPYmplY3RfR2V0QXR0cklkKGNhbGxhYmxlLCBuYW1lKTsKICAgICBpZiAoY2FsbGFibGUgPT0gTlVMTCkKQEAgLTI0MTUsMzggKzI3NjksNTEgQEAKIAogICAgIC8qIGNvdW50IHRoZSBhcmdzICovCiAgICAgdmFfc3RhcnQodmFyZ3MsIG5hbWUpOwotICAgIGFyZ3MgPSBvYmphcmdzX21rdHVwbGUodmFyZ3MpOworICAgIHN0YWNrID0gb2JqYXJnc19ta3N0YWNrKHNtYWxsX3N0YWNrLCBQeV9BUlJBWV9MRU5HVEgoc21hbGxfc3RhY2spLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmdzLCAmbmFyZ3MpOwogICAgIHZhX2VuZCh2YXJncyk7Ci0gICAgaWYgKGFyZ3MgPT0gTlVMTCkgeworICAgIGlmIChzdGFjayA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0RFQ1JFRihjYWxsYWJsZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICB0bXAgPSBQeU9iamVjdF9DYWxsKGNhbGxhYmxlLCBhcmdzLCBOVUxMKTsKLSAgICBQeV9ERUNSRUYoYXJncyk7Ci0gICAgUHlfREVDUkVGKGNhbGxhYmxlKTsKIAotICAgIHJldHVybiB0bXA7CisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0Zhc3RDYWxsKGNhbGxhYmxlLCBzdGFjaywgbmFyZ3MpOworICAgIFB5X0RFQ1JFRihjYWxsYWJsZSk7CisgICAgaWYgKHN0YWNrICE9IHNtYWxsX3N0YWNrKSB7CisgICAgICAgIFB5TWVtX0ZyZWUoc3RhY2spOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIFB5T2JqZWN0ICoKIFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoUHlPYmplY3QgKmNhbGxhYmxlLCAuLi4pCiB7Ci0gICAgUHlPYmplY3QgKmFyZ3MsICp0bXA7CisgICAgUHlPYmplY3QgKnNtYWxsX3N0YWNrWzVdOworICAgIFB5T2JqZWN0ICoqc3RhY2s7CisgICAgUHlfc3NpemVfdCBuYXJnczsKKyAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIHZhX2xpc3QgdmFyZ3M7CiAKLSAgICBpZiAoY2FsbGFibGUgPT0gTlVMTCkKKyAgICBpZiAoY2FsbGFibGUgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KIAogICAgIC8qIGNvdW50IHRoZSBhcmdzICovCiAgICAgdmFfc3RhcnQodmFyZ3MsIGNhbGxhYmxlKTsKLSAgICBhcmdzID0gb2JqYXJnc19ta3R1cGxlKHZhcmdzKTsKKyAgICBzdGFjayA9IG9iamFyZ3NfbWtzdGFjayhzbWFsbF9zdGFjaywgUHlfQVJSQVlfTEVOR1RIKHNtYWxsX3N0YWNrKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJncywgJm5hcmdzKTsKICAgICB2YV9lbmQodmFyZ3MpOwotICAgIGlmIChhcmdzID09IE5VTEwpCisgICAgaWYgKHN0YWNrID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdG1wID0gUHlPYmplY3RfQ2FsbChjYWxsYWJsZSwgYXJncywgTlVMTCk7Ci0gICAgUHlfREVDUkVGKGFyZ3MpOworICAgIH0KIAotICAgIHJldHVybiB0bXA7CisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0Zhc3RDYWxsKGNhbGxhYmxlLCBzdGFjaywgbmFyZ3MpOworICAgIGlmIChzdGFjayAhPSBzbWFsbF9zdGFjaykgeworICAgICAgICBQeU1lbV9GcmVlKHN0YWNrKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiAKZGlmZiAtLWdpdCBhL09iamVjdHMvYnl0ZWFycmF5b2JqZWN0LmMgYi9PYmplY3RzL2J5dGVhcnJheW9iamVjdC5jCmluZGV4IDZkNGM2YTEuLmM2ZDA3MDcgMTAwNjQ0Ci0tLSBhL09iamVjdHMvYnl0ZWFycmF5b2JqZWN0LmMKKysrIGIvT2JqZWN0cy9ieXRlYXJyYXlvYmplY3QuYwpAQCAtMjc4LDMxICsyNzgsNiBAQAogICAgIHJldHVybiAoUHlPYmplY3QgKilyZXN1bHQ7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfZm9ybWF0KFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqYnl0ZXNfaW4sICpieXRlc19vdXQsICpyZXM7Ci0gICAgY2hhciAqYnl0ZXN0cmluZzsKLQotICAgIGlmIChzZWxmID09IE5VTEwgfHwgIVB5Qnl0ZUFycmF5X0NoZWNrKHNlbGYpIHx8IGFyZ3MgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGJ5dGVzdHJpbmcgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZik7Ci0gICAgYnl0ZXNfaW4gPSBQeUJ5dGVzX0Zyb21TdHJpbmcoYnl0ZXN0cmluZyk7Ci0gICAgaWYgKGJ5dGVzX2luID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGJ5dGVzX291dCA9IF9QeUJ5dGVzX0Zvcm1hdChieXRlc19pbiwgYXJncyk7Ci0gICAgUHlfREVDUkVGKGJ5dGVzX2luKTsKLSAgICBpZiAoYnl0ZXNfb3V0ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlcyA9IFB5Qnl0ZUFycmF5X0Zyb21PYmplY3QoYnl0ZXNfb3V0KTsKLSAgICBQeV9ERUNSRUYoYnl0ZXNfb3V0KTsKLSAgICBpZiAocmVzID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiByZXM7Ci19Ci0KIC8qIEZ1bmN0aW9ucyBzdHVmZmVkIGludG8gdGhlIHR5cGUgb2JqZWN0ICovCiAKIHN0YXRpYyBQeV9zc2l6ZV90CkBAIC04MjAsMTcgKzc5NSwxNSBAQAogICAgIH0KIAogICAgIC8qIElzIGl0IGFuIGludD8gKi8KLSAgICBjb3VudCA9IFB5TnVtYmVyX0FzU3NpemVfdChhcmcsIFB5RXhjX092ZXJmbG93RXJyb3IpOwotICAgIGlmIChjb3VudCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX092ZXJmbG93RXJyb3IpKQorICAgIGlmIChQeUluZGV4X0NoZWNrKGFyZykpIHsKKyAgICAgICAgY291bnQgPSBQeU51bWJlcl9Bc1NzaXplX3QoYXJnLCBQeUV4Y19PdmVyZmxvd0Vycm9yKTsKKyAgICAgICAgaWYgKGNvdW50ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoY291bnQgPCAwKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibmVnYXRpdmUgY291bnQiKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBlbHNlIHsKKyAgICAgICAgfQorICAgICAgICBpZiAoY291bnQgPCAwKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm5lZ2F0aXZlIGNvdW50Iik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KICAgICAgICAgaWYgKGNvdW50ID4gMCkgewogICAgICAgICAgICAgaWYgKFB5Qnl0ZUFycmF5X1Jlc2l6ZSgoUHlPYmplY3QgKilzZWxmLCBjb3VudCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMTExOSwxNjEgKzEwOTIsMjcgQEAKICNpbmNsdWRlICJzdHJpbmdsaWIvdHJhbnNtb2dyaWZ5LmgiCiAKIAotLyogVGhlIGZvbGxvd2luZyBQeV9MT0NBTF9JTkxJTkUgYW5kIFB5X0xPQ0FMIGZ1bmN0aW9ucwotd2VyZSBjb3BpZWQgZnJvbSB0aGUgb2xkIGNoYXIqIHN0eWxlIHN0cmluZyBvYmplY3QuICovCi0KLS8qIGhlbHBlciBtYWNybyB0byBmaXh1cCBzdGFydC9lbmQgc2xpY2UgdmFsdWVzICovCi0jZGVmaW5lIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIGxlbikgICAgICAgICBcCi0gICAgaWYgKGVuZCA+IGxlbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGVuZCA9IGxlbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgZWxzZSBpZiAoZW5kIDwgMCkgeyAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGVuZCArPSBsZW47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGlmIChlbmQgPCAwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBlbmQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgaWYgKHN0YXJ0IDwgMCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHN0YXJ0ICs9IGxlbjsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGlmIChzdGFydCA8IDApICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBzdGFydCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfQotCi1QeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkKLWJ5dGVhcnJheV9maW5kX2ludGVybmFsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgaW50IGRpcikKLXsKLSAgICBQeU9iamVjdCAqc3Vib2JqOwotICAgIGNoYXIgYnl0ZTsKLSAgICBQeV9idWZmZXIgc3ViYnVmOwotICAgIGNvbnN0IGNoYXIgKnN1YjsKLSAgICBQeV9zc2l6ZV90IGxlbiwgc3ViX2xlbjsKLSAgICBQeV9zc2l6ZV90IHN0YXJ0PTAsIGVuZD1QWV9TU0laRV9UX01BWDsKLSAgICBQeV9zc2l6ZV90IHJlczsKLQotICAgIGlmICghc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHNfYnl0ZSgiZmluZC9yZmluZC9pbmRleC9yaW5kZXgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLCAmc3Vib2JqLCAmYnl0ZSwgJnN0YXJ0LCAmZW5kKSkKLSAgICAgICAgcmV0dXJuIC0yOwotCi0gICAgaWYgKHN1Ym9iaikgewotICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHN1Ym9iaiwgJnN1YmJ1ZiwgUHlCVUZfU0lNUExFKSAhPSAwKQotICAgICAgICAgICAgcmV0dXJuIC0yOwotCi0gICAgICAgIHN1YiA9IHN1YmJ1Zi5idWY7Ci0gICAgICAgIHN1Yl9sZW4gPSBzdWJidWYubGVuOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgc3ViID0gJmJ5dGU7Ci0gICAgICAgIHN1Yl9sZW4gPSAxOwotICAgIH0KLSAgICBsZW4gPSBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKTsKLQotICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIGxlbik7Ci0gICAgaWYgKGVuZCAtIHN0YXJ0IDwgc3ViX2xlbikKLSAgICAgICAgcmVzID0gLTE7Ci0gICAgZWxzZSBpZiAoc3ViX2xlbiA9PSAxCi0jaWZuZGVmIEhBVkVfTUVNUkNIUgotICAgICAgICAgICAgJiYgZGlyID4gMAotI2VuZGlmCi0gICAgKSB7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgbmVlZGxlID0gKnN1YjsKLSAgICAgICAgaW50IG1vZGUgPSAoZGlyID4gMCkgPyBGQVNUX1NFQVJDSCA6IEZBU1RfUlNFQVJDSDsKLSAgICAgICAgcmVzID0gc3RyaW5nbGliX2Zhc3RzZWFyY2hfbWVtY2hyXzFjaGFyKAotICAgICAgICAgICAgUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpICsgc3RhcnQsIGVuZCAtIHN0YXJ0LAotICAgICAgICAgICAgbmVlZGxlLCBuZWVkbGUsIG1vZGUpOwotICAgICAgICBpZiAocmVzID49IDApCi0gICAgICAgICAgICByZXMgKz0gc3RhcnQ7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBpZiAoZGlyID4gMCkKLSAgICAgICAgICAgIHJlcyA9IHN0cmluZ2xpYl9maW5kX3NsaWNlKAotICAgICAgICAgICAgICAgIFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgbGVuLAotICAgICAgICAgICAgICAgIHN1Yiwgc3ViX2xlbiwgc3RhcnQsIGVuZCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlcyA9IHN0cmluZ2xpYl9yZmluZF9zbGljZSgKLSAgICAgICAgICAgICAgICBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksIGxlbiwKLSAgICAgICAgICAgICAgICBzdWIsIHN1Yl9sZW4sIHN0YXJ0LCBlbmQpOwotICAgIH0KLQotICAgIGlmIChzdWJvYmopCi0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnN1YmJ1Zik7Ci0KLSAgICByZXR1cm4gcmVzOwotfQotCi1QeURvY19TVFJWQVIoZmluZF9fZG9jX18sCi0iQi5maW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pIC0+IGludFxuXAotXG5cCi1SZXR1cm4gdGhlIGxvd2VzdCBpbmRleCBpbiBCIHdoZXJlIHN1YnNlY3Rpb24gc3ViIGlzIGZvdW5kLFxuXAotc3VjaCB0aGF0IHN1YiBpcyBjb250YWluZWQgd2l0aGluIEJbc3RhcnQsZW5kXS4gIE9wdGlvbmFsXG5cCi1hcmd1bWVudHMgc3RhcnQgYW5kIGVuZCBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2Ugbm90YXRpb24uXG5cCi1cblwKLVJldHVybiAtMSBvbiBmYWlsdXJlLiIpOwotCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X2ZpbmQoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5X3NzaXplX3QgcmVzdWx0ID0gYnl0ZWFycmF5X2ZpbmRfaW50ZXJuYWwoc2VsZiwgYXJncywgKzEpOwotICAgIGlmIChyZXN1bHQgPT0gLTIpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzdWx0KTsKKyAgICByZXR1cm4gX1B5X2J5dGVzX2ZpbmQoUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKSwgYXJncyk7CiB9CiAKLVB5RG9jX1NUUlZBUihjb3VudF9fZG9jX18sCi0iQi5jb3VudChzdWJbLCBzdGFydFssIGVuZF1dKSAtPiBpbnRcblwKLVxuXAotUmV0dXJuIHRoZSBudW1iZXIgb2Ygbm9uLW92ZXJsYXBwaW5nIG9jY3VycmVuY2VzIG9mIHN1YnNlY3Rpb24gc3ViIGluXG5cCi1ieXRlcyBCW3N0YXJ0OmVuZF0uICBPcHRpb25hbCBhcmd1bWVudHMgc3RhcnQgYW5kIGVuZCBhcmUgaW50ZXJwcmV0ZWRcblwKLWFzIGluIHNsaWNlIG5vdGF0aW9uLiIpOwotCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X2NvdW50KFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeU9iamVjdCAqc3ViX29iajsKLSAgICBjb25zdCBjaGFyICpzdHIgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksICpzdWI7Ci0gICAgUHlfc3NpemVfdCBzdWJfbGVuOwotICAgIGNoYXIgYnl0ZTsKLSAgICBQeV9zc2l6ZV90IHN0YXJ0ID0gMCwgZW5kID0gUFlfU1NJWkVfVF9NQVg7Ci0KLSAgICBQeV9idWZmZXIgdnN1YjsKLSAgICBQeU9iamVjdCAqY291bnRfb2JqOwotCi0gICAgaWYgKCFzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kc19ieXRlKCJjb3VudCIsIGFyZ3MsICZzdWJfb2JqLCAmYnl0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0LCAmZW5kKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAoc3ViX29iaikgewotICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHN1Yl9vYmosICZ2c3ViLCBQeUJVRl9TSU1QTEUpICE9IDApCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgICAgICBzdWIgPSB2c3ViLmJ1ZjsKLSAgICAgICAgc3ViX2xlbiA9IHZzdWIubGVuOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgc3ViID0gJmJ5dGU7Ci0gICAgICAgIHN1Yl9sZW4gPSAxOwotICAgIH0KLQotICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpKTsKLQotICAgIGNvdW50X29iaiA9IFB5TG9uZ19Gcm9tU3NpemVfdCgKLSAgICAgICAgc3RyaW5nbGliX2NvdW50KHN0ciArIHN0YXJ0LCBlbmQgLSBzdGFydCwgc3ViLCBzdWJfbGVuLCBQWV9TU0laRV9UX01BWCkKLSAgICAgICAgKTsKLQotICAgIGlmIChzdWJfb2JqKQotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2c3ViKTsKLQotICAgIHJldHVybiBjb3VudF9vYmo7CisgICAgcmV0dXJuIF9QeV9ieXRlc19jb3VudChQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksIFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpLCBhcmdzKTsKIH0KIAogLypbY2xpbmljIGlucHV0XQogYnl0ZWFycmF5LmNsZWFyCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQotCiBSZW1vdmUgYWxsIGl0ZW1zIGZyb20gdGhlIGJ5dGVhcnJheS4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9jbGVhcl9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTg1YzJmZTZhZWRlMDk1NmMgaW5wdXQ9ZTUyNGZkMzMwYWJjZGMxOF0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTg1YzJmZTZhZWRlMDk1NmMgaW5wdXQ9ZWQ2ZWRhZTlkZTQ0N2FjNF0qLwogewogICAgIGlmIChQeUJ5dGVBcnJheV9SZXNpemUoKFB5T2JqZWN0ICopc2VsZiwgMCkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEyODMsMjUzICsxMTIyLDcyIEBACiAvKltjbGluaWMgaW5wdXRdCiBieXRlYXJyYXkuY29weQogCi0gICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKLQogUmV0dXJuIGEgY29weSBvZiBCLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X2NvcHlfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZikKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02OGNmYmNmZWQ0ODRjMTMyIGlucHV0PTZkNWQyOTc1YWEwZjMzZjNdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02OGNmYmNmZWQ0ODRjMTMyIGlucHV0PTY1OTdiMGMwMWJjY2FhOWVdKi8KIHsKICAgICByZXR1cm4gUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUoUHlCeXRlQXJyYXlfQVNfU1RSSU5HKChQeU9iamVjdCAqKXNlbGYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKSk7CiB9CiAKLVB5RG9jX1NUUlZBUihpbmRleF9fZG9jX18sCi0iQi5pbmRleChzdWJbLCBzdGFydFssIGVuZF1dKSAtPiBpbnRcblwKLVxuXAotTGlrZSBCLmZpbmQoKSBidXQgcmFpc2UgVmFsdWVFcnJvciB3aGVuIHRoZSBzdWJzZWN0aW9uIGlzIG5vdCBmb3VuZC4iKTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9pbmRleChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlfc3NpemVfdCByZXN1bHQgPSBieXRlYXJyYXlfZmluZF9pbnRlcm5hbChzZWxmLCBhcmdzLCArMSk7Ci0gICAgaWYgKHJlc3VsdCA9PSAtMikKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKHJlc3VsdCA9PSAtMSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJzdWJzZWN0aW9uIG5vdCBmb3VuZCIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXN1bHQpOworICAgIHJldHVybiBfUHlfYnl0ZXNfaW5kZXgoUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKSwgYXJncyk7CiB9CiAKLQotUHlEb2NfU1RSVkFSKHJmaW5kX19kb2NfXywKLSJCLnJmaW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pIC0+IGludFxuXAotXG5cCi1SZXR1cm4gdGhlIGhpZ2hlc3QgaW5kZXggaW4gQiB3aGVyZSBzdWJzZWN0aW9uIHN1YiBpcyBmb3VuZCxcblwKLXN1Y2ggdGhhdCBzdWIgaXMgY29udGFpbmVkIHdpdGhpbiBCW3N0YXJ0LGVuZF0uICBPcHRpb25hbFxuXAotYXJndW1lbnRzIHN0YXJ0IGFuZCBlbmQgYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlIG5vdGF0aW9uLlxuXAotXG5cCi1SZXR1cm4gLTEgb24gZmFpbHVyZS4iKTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9yZmluZChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlfc3NpemVfdCByZXN1bHQgPSBieXRlYXJyYXlfZmluZF9pbnRlcm5hbChzZWxmLCBhcmdzLCAtMSk7Ci0gICAgaWYgKHJlc3VsdCA9PSAtMikKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXN1bHQpOworICAgIHJldHVybiBfUHlfYnl0ZXNfcmZpbmQoUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKSwgYXJncyk7CiB9CiAKLQotUHlEb2NfU1RSVkFSKHJpbmRleF9fZG9jX18sCi0iQi5yaW5kZXgoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCi1cblwKLUxpa2UgQi5yZmluZCgpIGJ1dCByYWlzZSBWYWx1ZUVycm9yIHdoZW4gdGhlIHN1YnNlY3Rpb24gaXMgbm90IGZvdW5kLiIpOwotCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X3JpbmRleChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlfc3NpemVfdCByZXN1bHQgPSBieXRlYXJyYXlfZmluZF9pbnRlcm5hbChzZWxmLCBhcmdzLCAtMSk7Ci0gICAgaWYgKHJlc3VsdCA9PSAtMikKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKHJlc3VsdCA9PSAtMSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJzdWJzZWN0aW9uIG5vdCBmb3VuZCIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXN1bHQpOworICAgIHJldHVybiBfUHlfYnl0ZXNfcmluZGV4KFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZiksIGFyZ3MpOwogfQogCi0KIHN0YXRpYyBpbnQKIGJ5dGVhcnJheV9jb250YWlucyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKIHsKLSAgICBQeV9zc2l6ZV90IGl2YWwgPSBQeU51bWJlcl9Bc1NzaXplX3QoYXJnLCBQeUV4Y19WYWx1ZUVycm9yKTsKLSAgICBpZiAoaXZhbCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgIFB5X2J1ZmZlciB2YXJnOwotICAgICAgICBQeV9zc2l6ZV90IHBvczsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihhcmcsICZ2YXJnLCBQeUJVRl9TSU1QTEUpICE9IDApCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIHBvcyA9IHN0cmluZ2xpYl9maW5kKFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgUHlfU0laRShzZWxmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyZy5idWYsIHZhcmcubGVuLCAwKTsKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmFyZyk7Ci0gICAgICAgIHJldHVybiBwb3MgPj0gMDsKLSAgICB9Ci0gICAgaWYgKGl2YWwgPCAwIHx8IGl2YWwgPj0gMjU2KSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiYnl0ZSBtdXN0IGJlIGluIHJhbmdlKDAsIDI1NikiKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQotICAgIHJldHVybiBtZW1jaHIoUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpLCAoaW50KSBpdmFsLCBQeV9TSVpFKHNlbGYpKSAhPSBOVUxMOworICAgIHJldHVybiBfUHlfYnl0ZXNfY29udGFpbnMoUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKSwgYXJnKTsKIH0KIAotCi0vKiBNYXRjaGVzIHRoZSBlbmQgKGRpcmVjdGlvbiA+PSAwKSBvciBzdGFydCAoZGlyZWN0aW9uIDwgMCkgb2Ygc2VsZgotICogYWdhaW5zdCBzdWJzdHIsIHVzaW5nIHRoZSBzdGFydCBhbmQgZW5kIGFyZ3VtZW50cy4gUmV0dXJucwotICogLTEgb24gZXJyb3IsIDAgaWYgbm90IGZvdW5kIGFuZCAxIGlmIGZvdW5kLgotICovCi1QeV9MT0NBTChpbnQpCi1fYnl0ZWFycmF5X3RhaWxtYXRjaChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN1YnN0ciwgUHlfc3NpemVfdCBzdGFydCwKLSAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBlbmQsIGludCBkaXJlY3Rpb24pCi17Ci0gICAgUHlfc3NpemVfdCBsZW4gPSBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKTsKLSAgICBjb25zdCBjaGFyKiBzdHI7Ci0gICAgUHlfYnVmZmVyIHZzdWJzdHI7Ci0gICAgaW50IHJ2ID0gMDsKLQotICAgIHN0ciA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKTsKLQotICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoc3Vic3RyLCAmdnN1YnN0ciwgUHlCVUZfU0lNUExFKSAhPSAwKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBsZW4pOwotCi0gICAgaWYgKGRpcmVjdGlvbiA8IDApIHsKLSAgICAgICAgLyogc3RhcnRzd2l0aCAqLwotICAgICAgICBpZiAoc3RhcnQrdnN1YnN0ci5sZW4gPiBsZW4pIHsKLSAgICAgICAgICAgIGdvdG8gZG9uZTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8qIGVuZHN3aXRoICovCi0gICAgICAgIGlmIChlbmQtc3RhcnQgPCB2c3Vic3RyLmxlbiB8fCBzdGFydCA+IGxlbikgewotICAgICAgICAgICAgZ290byBkb25lOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGVuZC12c3Vic3RyLmxlbiA+IHN0YXJ0KQotICAgICAgICAgICAgc3RhcnQgPSBlbmQgLSB2c3Vic3RyLmxlbjsKLSAgICB9Ci0gICAgaWYgKGVuZC1zdGFydCA+PSB2c3Vic3RyLmxlbikKLSAgICAgICAgcnYgPSAhIG1lbWNtcChzdHIrc3RhcnQsIHZzdWJzdHIuYnVmLCB2c3Vic3RyLmxlbik7Ci0KLWRvbmU6Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmdnN1YnN0cik7Ci0gICAgcmV0dXJuIHJ2OwotfQotCi0KLVB5RG9jX1NUUlZBUihzdGFydHN3aXRoX19kb2NfXywKLSJCLnN0YXJ0c3dpdGgocHJlZml4Wywgc3RhcnRbLCBlbmRdXSkgLT4gYm9vbFxuXAotXG5cCi1SZXR1cm4gVHJ1ZSBpZiBCIHN0YXJ0cyB3aXRoIHRoZSBzcGVjaWZpZWQgcHJlZml4LCBGYWxzZSBvdGhlcndpc2UuXG5cCi1XaXRoIG9wdGlvbmFsIHN0YXJ0LCB0ZXN0IEIgYmVnaW5uaW5nIGF0IHRoYXQgcG9zaXRpb24uXG5cCi1XaXRoIG9wdGlvbmFsIGVuZCwgc3RvcCBjb21wYXJpbmcgQiBhdCB0aGF0IHBvc2l0aW9uLlxuXAotcHJlZml4IGNhbiBhbHNvIGJlIGEgdHVwbGUgb2YgYnl0ZXMgdG8gdHJ5LiIpOwotCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X3N0YXJ0c3dpdGgoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5X3NzaXplX3Qgc3RhcnQgPSAwOwotICAgIFB5X3NzaXplX3QgZW5kID0gUFlfU1NJWkVfVF9NQVg7Ci0gICAgUHlPYmplY3QgKnN1Ym9iajsKLSAgICBpbnQgcmVzdWx0OwotCi0gICAgaWYgKCFzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kcygic3RhcnRzd2l0aCIsIGFyZ3MsICZzdWJvYmosICZzdGFydCwgJmVuZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChQeVR1cGxlX0NoZWNrKHN1Ym9iaikpIHsKLSAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUHlUdXBsZV9HRVRfU0laRShzdWJvYmopOyBpKyspIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IF9ieXRlYXJyYXlfdGFpbG1hdGNoKHNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VHVwbGVfR0VUX0lURU0oc3Vib2JqLCBpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQsIGVuZCwgLTEpOwotICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSAtMSkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIGVsc2UgaWYgKHJlc3VsdCkgewotICAgICAgICAgICAgICAgIFB5X1JFVFVSTl9UUlVFOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKLSAgICB9Ci0gICAgcmVzdWx0ID0gX2J5dGVhcnJheV90YWlsbWF0Y2goc2VsZiwgc3Vib2JqLCBzdGFydCwgZW5kLCAtMSk7Ci0gICAgaWYgKHJlc3VsdCA9PSAtMSkgewotICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19UeXBlRXJyb3IpKQotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgInN0YXJ0c3dpdGggZmlyc3QgYXJnIG11c3QgYmUgYnl0ZXMgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJvciBhIHR1cGxlIG9mIGJ5dGVzLCBub3QgJXMiLCBQeV9UWVBFKHN1Ym9iaiktPnRwX25hbWUpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHJlc3VsdCk7CisgICAgcmV0dXJuIF9QeV9ieXRlc19zdGFydHN3aXRoKFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZiksIGFyZ3MpOwogfQogCi1QeURvY19TVFJWQVIoZW5kc3dpdGhfX2RvY19fLAotIkIuZW5kc3dpdGgoc3VmZml4Wywgc3RhcnRbLCBlbmRdXSkgLT4gYm9vbFxuXAotXG5cCi1SZXR1cm4gVHJ1ZSBpZiBCIGVuZHMgd2l0aCB0aGUgc3BlY2lmaWVkIHN1ZmZpeCwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAotV2l0aCBvcHRpb25hbCBzdGFydCwgdGVzdCBCIGJlZ2lubmluZyBhdCB0aGF0IHBvc2l0aW9uLlxuXAotV2l0aCBvcHRpb25hbCBlbmQsIHN0b3AgY29tcGFyaW5nIEIgYXQgdGhhdCBwb3NpdGlvbi5cblwKLXN1ZmZpeCBjYW4gYWxzbyBiZSBhIHR1cGxlIG9mIGJ5dGVzIHRvIHRyeS4iKTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9lbmRzd2l0aChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlfc3NpemVfdCBzdGFydCA9IDA7Ci0gICAgUHlfc3NpemVfdCBlbmQgPSBQWV9TU0laRV9UX01BWDsKLSAgICBQeU9iamVjdCAqc3Vib2JqOwotICAgIGludCByZXN1bHQ7Ci0KLSAgICBpZiAoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzKCJlbmRzd2l0aCIsIGFyZ3MsICZzdWJvYmosICZzdGFydCwgJmVuZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChQeVR1cGxlX0NoZWNrKHN1Ym9iaikpIHsKLSAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUHlUdXBsZV9HRVRfU0laRShzdWJvYmopOyBpKyspIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IF9ieXRlYXJyYXlfdGFpbG1hdGNoKHNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VHVwbGVfR0VUX0lURU0oc3Vib2JqLCBpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQsIGVuZCwgKzEpOwotICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSAtMSkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIGVsc2UgaWYgKHJlc3VsdCkgewotICAgICAgICAgICAgICAgIFB5X1JFVFVSTl9UUlVFOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKLSAgICB9Ci0gICAgcmVzdWx0ID0gX2J5dGVhcnJheV90YWlsbWF0Y2goc2VsZiwgc3Vib2JqLCBzdGFydCwgZW5kLCArMSk7Ci0gICAgaWYgKHJlc3VsdCA9PSAtMSkgewotICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19UeXBlRXJyb3IpKQotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgImVuZHN3aXRoIGZpcnN0IGFyZyBtdXN0IGJlIGJ5dGVzIG9yICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAiYSB0dXBsZSBvZiBieXRlcywgbm90ICVzIiwgUHlfVFlQRShzdWJvYmopLT50cF9uYW1lKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhyZXN1bHQpOworICAgIHJldHVybiBfUHlfYnl0ZXNfZW5kc3dpdGgoUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKSwgYXJncyk7CiB9CiAKIAogLypbY2xpbmljIGlucHV0XQogYnl0ZWFycmF5LnRyYW5zbGF0ZQogCi0gICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKICAgICB0YWJsZTogb2JqZWN0CiAgICAgICAgIFRyYW5zbGF0aW9uIHRhYmxlLCB3aGljaCBtdXN0IGJlIGEgYnl0ZXMgb2JqZWN0IG9mIGxlbmd0aCAyNTYuCi0gICAgWwotICAgIGRlbGV0ZWNoYXJzOiBvYmplY3QKLSAgICBdCiAgICAgLworICAgIGRlbGV0ZSBhcyBkZWxldGVjaGFyczogb2JqZWN0KGNfZGVmYXVsdD0iTlVMTCIpID0gYicnCiAKIFJldHVybiBhIGNvcHkgd2l0aCBlYWNoIGNoYXJhY3RlciBtYXBwZWQgYnkgdGhlIGdpdmVuIHRyYW5zbGF0aW9uIHRhYmxlLgogCi1BbGwgY2hhcmFjdGVycyBvY2N1cnJpbmcgaW4gdGhlIG9wdGlvbmFsIGFyZ3VtZW50IGRlbGV0ZWNoYXJzIGFyZSByZW1vdmVkLgorQWxsIGNoYXJhY3RlcnMgb2NjdXJyaW5nIGluIHRoZSBvcHRpb25hbCBhcmd1bWVudCBkZWxldGUgYXJlIHJlbW92ZWQuCiBUaGUgcmVtYWluaW5nIGNoYXJhY3RlcnMgYXJlIG1hcHBlZCB0aHJvdWdoIHRoZSBnaXZlbiB0cmFuc2xhdGlvbiB0YWJsZS4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV90cmFuc2xhdGVfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnRhYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgIGludCBncm91cF9yaWdodF8xLCBQeU9iamVjdCAqZGVsZXRlY2hhcnMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MmJlYmM4NmE5YTFmZjA4MyBpbnB1dD1iNzQ5YWQ4NWY0ODYwODI0XSovCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmRlbGV0ZWNoYXJzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWI2YThmMDFjMmE3NGU0NDYgaW5wdXQ9Y2ZmZjk1NmQ0ZDEyN2E5Yl0qLwogewogICAgIGNoYXIgKmlucHV0LCAqb3V0cHV0OwogICAgIGNvbnN0IGNoYXIgKnRhYmxlX2NoYXJzOwpAQCAtMTU3Miw3ICsxMjMwLDcgQEAKICAgICByZXN1bHQgPSBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZSgoY2hhciAqKU5VTEwsIGlubGVuKTsKICAgICBpZiAocmVzdWx0ID09IE5VTEwpCiAgICAgICAgIGdvdG8gZG9uZTsKLSAgICBvdXRwdXRfc3RhcnQgPSBvdXRwdXQgPSBQeUJ5dGVBcnJheV9Bc1N0cmluZyhyZXN1bHQpOworICAgIG91dHB1dF9zdGFydCA9IG91dHB1dCA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhyZXN1bHQpOwogICAgIGlucHV0ID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKGlucHV0X29iaik7CiAKICAgICBpZiAodmRlbC5sZW4gPT0gMCAmJiB0YWJsZV9jaGFycyAhPSBOVUxMKSB7CkBAIC0xNTk4LDggKzEyNTYsNyBAQAogICAgIGZvciAoaSA9IGlubGVuOyAtLWkgPj0gMDsgKSB7CiAgICAgICAgIGMgPSBQeV9DSEFSTUFTSygqaW5wdXQrKyk7CiAgICAgICAgIGlmICh0cmFuc190YWJsZVtjXSAhPSAtMSkKLSAgICAgICAgICAgIGlmIChQeV9DSEFSTUFTSygqb3V0cHV0KysgPSAoY2hhcil0cmFuc190YWJsZVtjXSkgPT0gYykKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAqb3V0cHV0KysgPSAoY2hhcil0cmFuc190YWJsZVtjXTsKICAgICB9CiAgICAgLyogRml4IHRoZSBzaXplIG9mIHRoZSByZXN1bHRpbmcgc3RyaW5nICovCiAgICAgaWYgKGlubGVuID4gMCkKQEAgLTE2NDIsNDkzICsxMjk5LDYgQEAKIH0KIAogCi0vKiBmaW5kIGFuZCBjb3VudCBjaGFyYWN0ZXJzIGFuZCBzdWJzdHJpbmdzICovCi0KLSNkZWZpbmUgZmluZGNoYXIodGFyZ2V0LCB0YXJnZXRfbGVuLCBjKSAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICgoY2hhciAqKW1lbWNocigoY29uc3Qgdm9pZCAqKSh0YXJnZXQpLCBjLCB0YXJnZXRfbGVuKSkKLQotCi0vKiBCeXRlcyBvcHMgbXVzdCByZXR1cm4gYSBzdHJpbmcsIGNyZWF0ZSBhIGNvcHkgKi8KLVB5X0xPQ0FMKFB5Qnl0ZUFycmF5T2JqZWN0ICopCi1yZXR1cm5fc2VsZihQeUJ5dGVBcnJheU9iamVjdCAqc2VsZikKLXsKLSAgICAvKiBhbHdheXMgcmV0dXJuIGEgbmV3IGJ5dGVhcnJheSAqLwotICAgIHJldHVybiAoUHlCeXRlQXJyYXlPYmplY3QgKilQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZSgKLSAgICAgICAgICAgIFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwKLSAgICAgICAgICAgIFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpKTsKLX0KLQotUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCi1jb3VudGNoYXIoY29uc3QgY2hhciAqdGFyZ2V0LCBQeV9zc2l6ZV90IHRhcmdldF9sZW4sIGNoYXIgYywgUHlfc3NpemVfdCBtYXhjb3VudCkKLXsKLSAgICBQeV9zc2l6ZV90IGNvdW50PTA7Ci0gICAgY29uc3QgY2hhciAqc3RhcnQ9dGFyZ2V0OwotICAgIGNvbnN0IGNoYXIgKmVuZD10YXJnZXQrdGFyZ2V0X2xlbjsKLQotICAgIHdoaWxlICggKHN0YXJ0PWZpbmRjaGFyKHN0YXJ0LCBlbmQtc3RhcnQsIGMpKSAhPSBOVUxMICkgewotICAgICAgICBjb3VudCsrOwotICAgICAgICBpZiAoY291bnQgPj0gbWF4Y291bnQpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgc3RhcnQgKz0gMTsKLSAgICB9Ci0gICAgcmV0dXJuIGNvdW50OwotfQotCi0KLS8qIEFsZ29yaXRobXMgZm9yIGRpZmZlcmVudCBjYXNlcyBvZiBzdHJpbmcgcmVwbGFjZW1lbnQgKi8KLQotLyogbGVuKHNlbGYpPj0xLCBmcm9tPSIiLCBsZW4odG8pPj0xLCBtYXhjb3VudD49MSAqLwotUHlfTE9DQUwoUHlCeXRlQXJyYXlPYmplY3QgKikKLXJlcGxhY2VfaW50ZXJsZWF2ZShQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b19zLCBQeV9zc2l6ZV90IHRvX2xlbiwKLSAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQotewotICAgIGNoYXIgKnNlbGZfcywgKnJlc3VsdF9zOwotICAgIFB5X3NzaXplX3Qgc2VsZl9sZW4sIHJlc3VsdF9sZW47Ci0gICAgUHlfc3NpemVfdCBjb3VudCwgaTsKLSAgICBQeUJ5dGVBcnJheU9iamVjdCAqcmVzdWx0OwotCi0gICAgc2VsZl9sZW4gPSBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKTsKLQotICAgIC8qIDEgYXQgdGhlIGVuZCBwbHVzIDEgYWZ0ZXIgZXZlcnkgY2hhcmFjdGVyOwotICAgICAgIGNvdW50ID0gbWluKG1heGNvdW50LCBzZWxmX2xlbiArIDEpICovCi0gICAgaWYgKG1heGNvdW50IDw9IHNlbGZfbGVuKQotICAgICAgICBjb3VudCA9IG1heGNvdW50OwotICAgIGVsc2UKLSAgICAgICAgLyogQ2FuJ3Qgb3ZlcmZsb3c6IHNlbGZfbGVuICsgMSA8PSBtYXhjb3VudCA8PSBQWV9TU0laRV9UX01BWC4gKi8KLSAgICAgICAgY291bnQgPSBzZWxmX2xlbiArIDE7Ci0KLSAgICAvKiBDaGVjayBmb3Igb3ZlcmZsb3cgKi8KLSAgICAvKiAgIHJlc3VsdF9sZW4gPSBjb3VudCAqIHRvX2xlbiArIHNlbGZfbGVuOyAqLwotICAgIGFzc2VydChjb3VudCA+IDApOwotICAgIGlmICh0b19sZW4gPiAoUFlfU1NJWkVfVF9NQVggLSBzZWxmX2xlbikgLyBjb3VudCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJyZXBsYWNlIHN0cmluZyBpcyB0b28gbG9uZyIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmVzdWx0X2xlbiA9IGNvdW50ICogdG9fbGVuICsgc2VsZl9sZW47Ci0KLSAgICBpZiAoISAocmVzdWx0ID0gKFB5Qnl0ZUFycmF5T2JqZWN0ICopCi0gICAgICAgICAgICAgICAgICAgICBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCByZXN1bHRfbGVuKSkgKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHNlbGZfcyA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKTsKLSAgICByZXN1bHRfcyA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhyZXN1bHQpOwotCi0gICAgLyogVE9ETzogc3BlY2lhbCBjYXNlIHNpbmdsZSBjaGFyYWN0ZXIsIHdoaWNoIGRvZXNuJ3QgbmVlZCBtZW1jcHkgKi8KLQotICAgIC8qIExheSB0aGUgZmlyc3Qgb25lIGRvd24gKGd1YXJhbnRlZWQgdGhpcyB3aWxsIG9jY3VyKSAqLwotICAgIFB5X01FTUNQWShyZXN1bHRfcywgdG9fcywgdG9fbGVuKTsKLSAgICByZXN1bHRfcyArPSB0b19sZW47Ci0gICAgY291bnQgLT0gMTsKLQotICAgIGZvciAoaT0wOyBpPGNvdW50OyBpKyspIHsKLSAgICAgICAgKnJlc3VsdF9zKysgPSAqc2VsZl9zKys7Ci0gICAgICAgIFB5X01FTUNQWShyZXN1bHRfcywgdG9fcywgdG9fbGVuKTsKLSAgICAgICAgcmVzdWx0X3MgKz0gdG9fbGVuOwotICAgIH0KLQotICAgIC8qIENvcHkgdGhlIHJlc3Qgb2YgdGhlIG9yaWdpbmFsIHN0cmluZyAqLwotICAgIFB5X01FTUNQWShyZXN1bHRfcywgc2VsZl9zLCBzZWxmX2xlbi1pKTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIFNwZWNpYWwgY2FzZSBmb3IgZGVsZXRpbmcgYSBzaW5nbGUgY2hhcmFjdGVyICovCi0vKiBsZW4oc2VsZik+PTEsIGxlbihmcm9tKT09MSwgdG89IiIsIG1heGNvdW50Pj0xICovCi1QeV9MT0NBTChQeUJ5dGVBcnJheU9iamVjdCAqKQotcmVwbGFjZV9kZWxldGVfc2luZ2xlX2NoYXJhY3RlcihQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBmcm9tX2MsIFB5X3NzaXplX3QgbWF4Y291bnQpCi17Ci0gICAgY2hhciAqc2VsZl9zLCAqcmVzdWx0X3M7Ci0gICAgY2hhciAqc3RhcnQsICpuZXh0LCAqZW5kOwotICAgIFB5X3NzaXplX3Qgc2VsZl9sZW4sIHJlc3VsdF9sZW47Ci0gICAgUHlfc3NpemVfdCBjb3VudDsKLSAgICBQeUJ5dGVBcnJheU9iamVjdCAqcmVzdWx0OwotCi0gICAgc2VsZl9sZW4gPSBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKTsKLSAgICBzZWxmX3MgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZik7Ci0KLSAgICBjb3VudCA9IGNvdW50Y2hhcihzZWxmX3MsIHNlbGZfbGVuLCBmcm9tX2MsIG1heGNvdW50KTsKLSAgICBpZiAoY291bnQgPT0gMCkgewotICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7Ci0gICAgfQotCi0gICAgcmVzdWx0X2xlbiA9IHNlbGZfbGVuIC0gY291bnQ7ICAvKiBmcm9tX2xlbiA9PSAxICovCi0gICAgYXNzZXJ0KHJlc3VsdF9sZW4+PTApOwotCi0gICAgaWYgKCAocmVzdWx0ID0gKFB5Qnl0ZUFycmF5T2JqZWN0ICopCi0gICAgICAgICAgICAgICAgICAgIFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHJlc3VsdF9sZW4pKSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXN1bHRfcyA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhyZXN1bHQpOwotCi0gICAgc3RhcnQgPSBzZWxmX3M7Ci0gICAgZW5kID0gc2VsZl9zICsgc2VsZl9sZW47Ci0gICAgd2hpbGUgKGNvdW50LS0gPiAwKSB7Ci0gICAgICAgIG5leHQgPSBmaW5kY2hhcihzdGFydCwgZW5kLXN0YXJ0LCBmcm9tX2MpOwotICAgICAgICBpZiAobmV4dCA9PSBOVUxMKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIFB5X01FTUNQWShyZXN1bHRfcywgc3RhcnQsIG5leHQtc3RhcnQpOwotICAgICAgICByZXN1bHRfcyArPSAobmV4dC1zdGFydCk7Ci0gICAgICAgIHN0YXJ0ID0gbmV4dCsxOwotICAgIH0KLSAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHN0YXJ0LCBlbmQtc3RhcnQpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogbGVuKHNlbGYpPj0xLCBsZW4oZnJvbSk+PTIsIHRvPSIiLCBtYXhjb3VudD49MSAqLwotCi1QeV9MT0NBTChQeUJ5dGVBcnJheU9iamVjdCAqKQotcmVwbGFjZV9kZWxldGVfc3Vic3RyaW5nKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZyb21fcywgUHlfc3NpemVfdCBmcm9tX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQotewotICAgIGNoYXIgKnNlbGZfcywgKnJlc3VsdF9zOwotICAgIGNoYXIgKnN0YXJ0LCAqbmV4dCwgKmVuZDsKLSAgICBQeV9zc2l6ZV90IHNlbGZfbGVuLCByZXN1bHRfbGVuOwotICAgIFB5X3NzaXplX3QgY291bnQsIG9mZnNldDsKLSAgICBQeUJ5dGVBcnJheU9iamVjdCAqcmVzdWx0OwotCi0gICAgc2VsZl9sZW4gPSBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKTsKLSAgICBzZWxmX3MgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZik7Ci0KLSAgICBjb3VudCA9IHN0cmluZ2xpYl9jb3VudChzZWxmX3MsIHNlbGZfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21fcywgZnJvbV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Y291bnQpOwotCi0gICAgaWYgKGNvdW50ID09IDApIHsKLSAgICAgICAgLyogbm8gbWF0Y2hlcyAqLwotICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7Ci0gICAgfQotCi0gICAgcmVzdWx0X2xlbiA9IHNlbGZfbGVuIC0gKGNvdW50ICogZnJvbV9sZW4pOwotICAgIGFzc2VydCAocmVzdWx0X2xlbj49MCk7Ci0KLSAgICBpZiAoIChyZXN1bHQgPSAoUHlCeXRlQXJyYXlPYmplY3QgKikKLSAgICAgICAgUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgcmVzdWx0X2xlbikpID09IE5VTEwgKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXN1bHRfcyA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhyZXN1bHQpOwotCi0gICAgc3RhcnQgPSBzZWxmX3M7Ci0gICAgZW5kID0gc2VsZl9zICsgc2VsZl9sZW47Ci0gICAgd2hpbGUgKGNvdW50LS0gPiAwKSB7Ci0gICAgICAgIG9mZnNldCA9IHN0cmluZ2xpYl9maW5kKHN0YXJ0LCBlbmQtc3RhcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21fcywgZnJvbV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOwotICAgICAgICBpZiAob2Zmc2V0ID09IC0xKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIG5leHQgPSBzdGFydCArIG9mZnNldDsKLQotICAgICAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHN0YXJ0LCBuZXh0LXN0YXJ0KTsKLQotICAgICAgICByZXN1bHRfcyArPSAobmV4dC1zdGFydCk7Ci0gICAgICAgIHN0YXJ0ID0gbmV4dCtmcm9tX2xlbjsKLSAgICB9Ci0gICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzdGFydCwgZW5kLXN0YXJ0KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBsZW4oc2VsZik+PTEsIGxlbihmcm9tKT09bGVuKHRvKT09MSwgbWF4Y291bnQ+PTEgKi8KLVB5X0xPQ0FMKFB5Qnl0ZUFycmF5T2JqZWN0ICopCi1yZXBsYWNlX3NpbmdsZV9jaGFyYWN0ZXJfaW5fcGxhY2UoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBmcm9tX2MsIGNoYXIgdG9fYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQotewotICAgIGNoYXIgKnNlbGZfcywgKnJlc3VsdF9zLCAqc3RhcnQsICplbmQsICpuZXh0OwotICAgIFB5X3NzaXplX3Qgc2VsZl9sZW47Ci0gICAgUHlCeXRlQXJyYXlPYmplY3QgKnJlc3VsdDsKLQotICAgIC8qIFRoZSByZXN1bHQgc3RyaW5nIHdpbGwgYmUgdGhlIHNhbWUgc2l6ZSAqLwotICAgIHNlbGZfcyA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKTsKLSAgICBzZWxmX2xlbiA9IFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpOwotCi0gICAgbmV4dCA9IGZpbmRjaGFyKHNlbGZfcywgc2VsZl9sZW4sIGZyb21fYyk7Ci0KLSAgICBpZiAobmV4dCA9PSBOVUxMKSB7Ci0gICAgICAgIC8qIE5vIG1hdGNoZXM7IHJldHVybiB0aGUgb3JpZ2luYWwgYnl0ZXMgKi8KLSAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwotICAgIH0KLQotICAgIC8qIE5lZWQgdG8gbWFrZSBhIG5ldyBieXRlcyAqLwotICAgIHJlc3VsdCA9IChQeUJ5dGVBcnJheU9iamVjdCAqKSBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBzZWxmX2xlbik7Ci0gICAgaWYgKHJlc3VsdCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXN1bHRfcyA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhyZXN1bHQpOwotICAgIFB5X01FTUNQWShyZXN1bHRfcywgc2VsZl9zLCBzZWxmX2xlbik7Ci0KLSAgICAvKiBjaGFuZ2UgZXZlcnl0aGluZyBpbi1wbGFjZSwgc3RhcnRpbmcgd2l0aCB0aGlzIG9uZSAqLwotICAgIHN0YXJ0ID0gIHJlc3VsdF9zICsgKG5leHQtc2VsZl9zKTsKLSAgICAqc3RhcnQgPSB0b19jOwotICAgIHN0YXJ0Kys7Ci0gICAgZW5kID0gcmVzdWx0X3MgKyBzZWxmX2xlbjsKLQotICAgIHdoaWxlICgtLW1heGNvdW50ID4gMCkgewotICAgICAgICBuZXh0ID0gZmluZGNoYXIoc3RhcnQsIGVuZC1zdGFydCwgZnJvbV9jKTsKLSAgICAgICAgaWYgKG5leHQgPT0gTlVMTCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAqbmV4dCA9IHRvX2M7Ci0gICAgICAgIHN0YXJ0ID0gbmV4dCsxOwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIGxlbihzZWxmKT49MSwgbGVuKGZyb20pPT1sZW4odG8pPj0yLCBtYXhjb3VudD49MSAqLwotUHlfTE9DQUwoUHlCeXRlQXJyYXlPYmplY3QgKikKLXJlcGxhY2Vfc3Vic3RyaW5nX2luX3BsYWNlKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZnJvbV9zLCBQeV9zc2l6ZV90IGZyb21fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdG9fcywgUHlfc3NpemVfdCB0b19sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQotewotICAgIGNoYXIgKnJlc3VsdF9zLCAqc3RhcnQsICplbmQ7Ci0gICAgY2hhciAqc2VsZl9zOwotICAgIFB5X3NzaXplX3Qgc2VsZl9sZW4sIG9mZnNldDsKLSAgICBQeUJ5dGVBcnJheU9iamVjdCAqcmVzdWx0OwotCi0gICAgLyogVGhlIHJlc3VsdCBieXRlcyB3aWxsIGJlIHRoZSBzYW1lIHNpemUgKi8KLQotICAgIHNlbGZfcyA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKTsKLSAgICBzZWxmX2xlbiA9IFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpOwotCi0gICAgb2Zmc2V0ID0gc3RyaW5nbGliX2ZpbmQoc2VsZl9zLCBzZWxmX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX3MsIGZyb21fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOwotICAgIGlmIChvZmZzZXQgPT0gLTEpIHsKLSAgICAgICAgLyogTm8gbWF0Y2hlczsgcmV0dXJuIHRoZSBvcmlnaW5hbCBieXRlcyAqLwotICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7Ci0gICAgfQotCi0gICAgLyogTmVlZCB0byBtYWtlIGEgbmV3IGJ5dGVzICovCi0gICAgcmVzdWx0ID0gKFB5Qnl0ZUFycmF5T2JqZWN0ICopIFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNlbGZfbGVuKTsKLSAgICBpZiAocmVzdWx0ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlc3VsdF9zID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHJlc3VsdCk7Ci0gICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzZWxmX3MsIHNlbGZfbGVuKTsKLQotICAgIC8qIGNoYW5nZSBldmVyeXRoaW5nIGluLXBsYWNlLCBzdGFydGluZyB3aXRoIHRoaXMgb25lICovCi0gICAgc3RhcnQgPSAgcmVzdWx0X3MgKyBvZmZzZXQ7Ci0gICAgUHlfTUVNQ1BZKHN0YXJ0LCB0b19zLCBmcm9tX2xlbik7Ci0gICAgc3RhcnQgKz0gZnJvbV9sZW47Ci0gICAgZW5kID0gcmVzdWx0X3MgKyBzZWxmX2xlbjsKLQotICAgIHdoaWxlICggLS1tYXhjb3VudCA+IDApIHsKLSAgICAgICAgb2Zmc2V0ID0gc3RyaW5nbGliX2ZpbmQoc3RhcnQsIGVuZC1zdGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbV9zLCBmcm9tX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7Ci0gICAgICAgIGlmIChvZmZzZXQ9PS0xKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIFB5X01FTUNQWShzdGFydCtvZmZzZXQsIHRvX3MsIGZyb21fbGVuKTsKLSAgICAgICAgc3RhcnQgKz0gb2Zmc2V0K2Zyb21fbGVuOwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIGxlbihzZWxmKT49MSwgbGVuKGZyb20pPT0xLCBsZW4odG8pPj0yLCBtYXhjb3VudD49MSAqLwotUHlfTE9DQUwoUHlCeXRlQXJyYXlPYmplY3QgKikKLXJlcGxhY2Vfc2luZ2xlX2NoYXJhY3RlcihQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGZyb21fYywKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b19zLCBQeV9zc2l6ZV90IHRvX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQotewotICAgIGNoYXIgKnNlbGZfcywgKnJlc3VsdF9zOwotICAgIGNoYXIgKnN0YXJ0LCAqbmV4dCwgKmVuZDsKLSAgICBQeV9zc2l6ZV90IHNlbGZfbGVuLCByZXN1bHRfbGVuOwotICAgIFB5X3NzaXplX3QgY291bnQ7Ci0gICAgUHlCeXRlQXJyYXlPYmplY3QgKnJlc3VsdDsKLQotICAgIHNlbGZfcyA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKTsKLSAgICBzZWxmX2xlbiA9IFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpOwotCi0gICAgY291bnQgPSBjb3VudGNoYXIoc2VsZl9zLCBzZWxmX2xlbiwgZnJvbV9jLCBtYXhjb3VudCk7Ci0gICAgaWYgKGNvdW50ID09IDApIHsKLSAgICAgICAgLyogbm8gbWF0Y2hlcywgcmV0dXJuIHVuY2hhbmdlZCAqLwotICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7Ci0gICAgfQotCi0gICAgLyogdXNlIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gY3VycmVudCBhbmQgbmV3LCBoZW5jZSB0aGUgIi0xIiAqLwotICAgIC8qICAgcmVzdWx0X2xlbiA9IHNlbGZfbGVuICsgY291bnQgKiAodG9fbGVuLTEpICAqLwotICAgIGFzc2VydChjb3VudCA+IDApOwotICAgIGlmICh0b19sZW4gLSAxID4gKFBZX1NTSVpFX1RfTUFYIC0gc2VsZl9sZW4pIC8gY291bnQpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJyZXBsYWNlIGJ5dGVzIGlzIHRvbyBsb25nIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXN1bHRfbGVuID0gc2VsZl9sZW4gKyBjb3VudCAqICh0b19sZW4gLSAxKTsKLQotICAgIGlmICggKHJlc3VsdCA9IChQeUJ5dGVBcnJheU9iamVjdCAqKQotICAgICAgICAgIFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHJlc3VsdF9sZW4pKSA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzdWx0X3MgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcocmVzdWx0KTsKLQotICAgIHN0YXJ0ID0gc2VsZl9zOwotICAgIGVuZCA9IHNlbGZfcyArIHNlbGZfbGVuOwotICAgIHdoaWxlIChjb3VudC0tID4gMCkgewotICAgICAgICBuZXh0ID0gZmluZGNoYXIoc3RhcnQsIGVuZC1zdGFydCwgZnJvbV9jKTsKLSAgICAgICAgaWYgKG5leHQgPT0gTlVMTCkKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGlmIChuZXh0ID09IHN0YXJ0KSB7Ci0gICAgICAgICAgICAvKiByZXBsYWNlIHdpdGggdGhlICd0bycgKi8KLSAgICAgICAgICAgIFB5X01FTUNQWShyZXN1bHRfcywgdG9fcywgdG9fbGVuKTsKLSAgICAgICAgICAgIHJlc3VsdF9zICs9IHRvX2xlbjsKLSAgICAgICAgICAgIHN0YXJ0ICs9IDE7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvKiBjb3B5IHRoZSB1bmNoYW5nZWQgb2xkIHRoZW4gdGhlICd0bycgKi8KLSAgICAgICAgICAgIFB5X01FTUNQWShyZXN1bHRfcywgc3RhcnQsIG5leHQtc3RhcnQpOwotICAgICAgICAgICAgcmVzdWx0X3MgKz0gKG5leHQtc3RhcnQpOwotICAgICAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCB0b19zLCB0b19sZW4pOwotICAgICAgICAgICAgcmVzdWx0X3MgKz0gdG9fbGVuOwotICAgICAgICAgICAgc3RhcnQgPSBuZXh0KzE7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgLyogQ29weSB0aGUgcmVtYWluZGVyIG9mIHRoZSByZW1haW5pbmcgYnl0ZXMgKi8KLSAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHN0YXJ0LCBlbmQtc3RhcnQpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogbGVuKHNlbGYpPj0xLCBsZW4oZnJvbSk+PTIsIGxlbih0byk+PTIsIG1heGNvdW50Pj0xICovCi1QeV9MT0NBTChQeUJ5dGVBcnJheU9iamVjdCAqKQotcmVwbGFjZV9zdWJzdHJpbmcoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmcm9tX3MsIFB5X3NzaXplX3QgZnJvbV9sZW4sCi0gICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b19zLCBQeV9zc2l6ZV90IHRvX2xlbiwKLSAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCi17Ci0gICAgY2hhciAqc2VsZl9zLCAqcmVzdWx0X3M7Ci0gICAgY2hhciAqc3RhcnQsICpuZXh0LCAqZW5kOwotICAgIFB5X3NzaXplX3Qgc2VsZl9sZW4sIHJlc3VsdF9sZW47Ci0gICAgUHlfc3NpemVfdCBjb3VudCwgb2Zmc2V0OwotICAgIFB5Qnl0ZUFycmF5T2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICBzZWxmX3MgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZik7Ci0gICAgc2VsZl9sZW4gPSBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKTsKLQotICAgIGNvdW50ID0gc3RyaW5nbGliX2NvdW50KHNlbGZfcywgc2VsZl9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbV9zLCBmcm9tX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhjb3VudCk7Ci0KLSAgICBpZiAoY291bnQgPT0gMCkgewotICAgICAgICAvKiBubyBtYXRjaGVzLCByZXR1cm4gdW5jaGFuZ2VkICovCi0gICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKLSAgICB9Ci0KLSAgICAvKiBDaGVjayBmb3Igb3ZlcmZsb3cgKi8KLSAgICAvKiAgICByZXN1bHRfbGVuID0gc2VsZl9sZW4gKyBjb3VudCAqICh0b19sZW4tZnJvbV9sZW4pICovCi0gICAgYXNzZXJ0KGNvdW50ID4gMCk7Ci0gICAgaWYgKHRvX2xlbiAtIGZyb21fbGVuID4gKFBZX1NTSVpFX1RfTUFYIC0gc2VsZl9sZW4pIC8gY291bnQpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJyZXBsYWNlIGJ5dGVzIGlzIHRvbyBsb25nIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXN1bHRfbGVuID0gc2VsZl9sZW4gKyBjb3VudCAqICh0b19sZW4gLSBmcm9tX2xlbik7Ci0KLSAgICBpZiAoIChyZXN1bHQgPSAoUHlCeXRlQXJyYXlPYmplY3QgKikKLSAgICAgICAgICBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCByZXN1bHRfbGVuKSkgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzdWx0X3MgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcocmVzdWx0KTsKLQotICAgIHN0YXJ0ID0gc2VsZl9zOwotICAgIGVuZCA9IHNlbGZfcyArIHNlbGZfbGVuOwotICAgIHdoaWxlIChjb3VudC0tID4gMCkgewotICAgICAgICBvZmZzZXQgPSBzdHJpbmdsaWJfZmluZChzdGFydCwgZW5kLXN0YXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX3MsIGZyb21fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKLSAgICAgICAgaWYgKG9mZnNldCA9PSAtMSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBuZXh0ID0gc3RhcnQrb2Zmc2V0OwotICAgICAgICBpZiAobmV4dCA9PSBzdGFydCkgewotICAgICAgICAgICAgLyogcmVwbGFjZSB3aXRoIHRoZSAndG8nICovCi0gICAgICAgICAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHRvX3MsIHRvX2xlbik7Ci0gICAgICAgICAgICByZXN1bHRfcyArPSB0b19sZW47Ci0gICAgICAgICAgICBzdGFydCArPSBmcm9tX2xlbjsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8qIGNvcHkgdGhlIHVuY2hhbmdlZCBvbGQgdGhlbiB0aGUgJ3RvJyAqLwotICAgICAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzdGFydCwgbmV4dC1zdGFydCk7Ci0gICAgICAgICAgICByZXN1bHRfcyArPSAobmV4dC1zdGFydCk7Ci0gICAgICAgICAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHRvX3MsIHRvX2xlbik7Ci0gICAgICAgICAgICByZXN1bHRfcyArPSB0b19sZW47Ci0gICAgICAgICAgICBzdGFydCA9IG5leHQrZnJvbV9sZW47Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgLyogQ29weSB0aGUgcmVtYWluZGVyIG9mIHRoZSByZW1haW5pbmcgYnl0ZXMgKi8KLSAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHN0YXJ0LCBlbmQtc3RhcnQpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotCi1QeV9MT0NBTChQeUJ5dGVBcnJheU9iamVjdCAqKQotcmVwbGFjZShQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwKLSAgICAgICAgY29uc3QgY2hhciAqZnJvbV9zLCBQeV9zc2l6ZV90IGZyb21fbGVuLAotICAgICAgICBjb25zdCBjaGFyICp0b19zLCBQeV9zc2l6ZV90IHRvX2xlbiwKLSAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKLXsKLSAgICBpZiAobWF4Y291bnQgPCAwKSB7Ci0gICAgICAgIG1heGNvdW50ID0gUFlfU1NJWkVfVF9NQVg7Ci0gICAgfSBlbHNlIGlmIChtYXhjb3VudCA9PSAwIHx8IFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpID09IDApIHsKLSAgICAgICAgLyogbm90aGluZyB0byBkbzsgcmV0dXJuIHRoZSBvcmlnaW5hbCBieXRlcyAqLwotICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7Ci0gICAgfQotCi0gICAgaWYgKG1heGNvdW50ID09IDAgfHwKLSAgICAgICAgKGZyb21fbGVuID09IDAgJiYgdG9fbGVuID09IDApKSB7Ci0gICAgICAgIC8qIG5vdGhpbmcgdG8gZG87IHJldHVybiB0aGUgb3JpZ2luYWwgYnl0ZXMgKi8KLSAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwotICAgIH0KLQotICAgIC8qIEhhbmRsZSB6ZXJvLWxlbmd0aCBzcGVjaWFsIGNhc2VzICovCi0KLSAgICBpZiAoZnJvbV9sZW4gPT0gMCkgewotICAgICAgICAvKiBpbnNlcnQgdGhlICd0bycgYnl0ZXMgZXZlcnl3aGVyZS4gICAqLwotICAgICAgICAvKiAgICA+Pj4gIlB5dGhvbiIucmVwbGFjZSgiIiwgIi4iKSAgICAgKi8KLSAgICAgICAgLyogICAgJy5QLnkudC5oLm8ubi4nICAgICAgICAgICAgICAgICAgICovCi0gICAgICAgIHJldHVybiByZXBsYWNlX2ludGVybGVhdmUoc2VsZiwgdG9fcywgdG9fbGVuLCBtYXhjb3VudCk7Ci0gICAgfQotCi0gICAgLyogRXhjZXB0IGZvciAiIi5yZXBsYWNlKCIiLCAiQSIpID09ICJBIiB0aGVyZSBpcyBubyB3YXkgYmV5b25kIHRoaXMgKi8KLSAgICAvKiBwb2ludCBmb3IgYW4gZW1wdHkgc2VsZiBieXRlcyB0byBnZW5lcmF0ZSBhIG5vbi1lbXB0eSBieXRlcyAqLwotICAgIC8qIFNwZWNpYWwgY2FzZSBzbyB0aGUgcmVtYWluaW5nIGNvZGUgYWx3YXlzIGdldHMgYSBub24tZW1wdHkgYnl0ZXMgKi8KLSAgICBpZiAoUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZikgPT0gMCkgewotICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7Ci0gICAgfQotCi0gICAgaWYgKHRvX2xlbiA9PSAwKSB7Ci0gICAgICAgIC8qIGRlbGV0ZSBhbGwgb2NjdXJyZW5jZXMgb2YgJ2Zyb20nIGJ5dGVzICovCi0gICAgICAgIGlmIChmcm9tX2xlbiA9PSAxKSB7Ci0gICAgICAgICAgICByZXR1cm4gcmVwbGFjZV9kZWxldGVfc2luZ2xlX2NoYXJhY3RlcigKLSAgICAgICAgICAgICAgICAgICAgc2VsZiwgZnJvbV9zWzBdLCBtYXhjb3VudCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXR1cm4gcmVwbGFjZV9kZWxldGVfc3Vic3RyaW5nKHNlbGYsIGZyb21fcywgZnJvbV9sZW4sIG1heGNvdW50KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8qIEhhbmRsZSBzcGVjaWFsIGNhc2Ugd2hlcmUgYm90aCBieXRlcyBoYXZlIHRoZSBzYW1lIGxlbmd0aCAqLwotCi0gICAgaWYgKGZyb21fbGVuID09IHRvX2xlbikgewotICAgICAgICBpZiAoZnJvbV9sZW4gPT0gMSkgewotICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2Vfc2luZ2xlX2NoYXJhY3Rlcl9pbl9wbGFjZSgKLSAgICAgICAgICAgICAgICAgICAgc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgZnJvbV9zWzBdLAotICAgICAgICAgICAgICAgICAgICB0b19zWzBdLAotICAgICAgICAgICAgICAgICAgICBtYXhjb3VudCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXR1cm4gcmVwbGFjZV9zdWJzdHJpbmdfaW5fcGxhY2UoCi0gICAgICAgICAgICAgICAgc2VsZiwgZnJvbV9zLCBmcm9tX2xlbiwgdG9fcywgdG9fbGVuLCBtYXhjb3VudCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvKiBPdGhlcndpc2UgdXNlIHRoZSBtb3JlIGdlbmVyaWMgYWxnb3JpdGhtcyAqLwotICAgIGlmIChmcm9tX2xlbiA9PSAxKSB7Ci0gICAgICAgIHJldHVybiByZXBsYWNlX3NpbmdsZV9jaGFyYWN0ZXIoc2VsZiwgZnJvbV9zWzBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvX3MsIHRvX2xlbiwgbWF4Y291bnQpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8qIGxlbignZnJvbScpPj0yLCBsZW4oJ3RvJyk+PTEgKi8KLSAgICAgICAgcmV0dXJuIHJlcGxhY2Vfc3Vic3RyaW5nKHNlbGYsIGZyb21fcywgZnJvbV9sZW4sIHRvX3MsIHRvX2xlbiwgbWF4Y291bnQpOwotICAgIH0KLX0KLQotCiAvKltjbGluaWMgaW5wdXRdCiBieXRlYXJyYXkucmVwbGFjZQogCkBAIC0yMTUwLDkgKzEzMjAsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICBQeV9idWZmZXIgKm5ldywgUHlfc3NpemVfdCBjb3VudCkKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kMzk4ODRjNGRjNTk0MTJhIGlucHV0PWFhMzc5ZDk4ODYzN2M3ZmJdKi8KIHsKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopcmVwbGFjZSgoUHlCeXRlQXJyYXlPYmplY3QgKikgc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGQtPmJ1Ziwgb2xkLT5sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3LT5idWYsIG5ldy0+bGVuLCBjb3VudCk7CisgICAgcmV0dXJuIHN0cmluZ2xpYl9yZXBsYWNlKChQeU9iamVjdCAqKXNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBjaGFyICopb2xkLT5idWYsIG9sZC0+bGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgY2hhciAqKW5ldy0+YnVmLCBuZXctPmxlbiwgY291bnQpOwogfQogCiAvKltjbGluaWMgaW5wdXRdCkBAIC0yMjAwLDcgKzEzNzAsNiBAQAogLypbY2xpbmljIGlucHV0XQogYnl0ZWFycmF5LnBhcnRpdGlvbgogCi0gICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKICAgICBzZXA6IG9iamVjdAogICAgIC8KIApAQCAtMjIxNiw3ICsxMzg1LDcgQEAKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9wYXJ0aXRpb24oUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzZXApCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDVkMjUyNWRkZDM1Zjk1NyBpbnB1dD03ZDdmZTM3YjE2OTZkNTA2XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDVkMjUyNWRkZDM1Zjk1NyBpbnB1dD04NmY4OTIyMzg5MmI3MGI1XSovCiB7CiAgICAgUHlPYmplY3QgKmJ5dGVzZXAsICpyZXN1bHQ7CiAKQEAgLTIyMzgsNyArMTQwNyw2IEBACiAvKltjbGluaWMgaW5wdXRdCiBieXRlYXJyYXkucnBhcnRpdGlvbgogCi0gICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKICAgICBzZXA6IG9iamVjdAogICAgIC8KIApAQCAtMjI1NCw3ICsxNDIyLDcgQEAKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9ycGFydGl0aW9uKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc2VwKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ0MGRlM2M5NDI2MTE1ZTggaW5wdXQ9OWI4Y2Q1NDBjMWI3NTg1M10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ0MGRlM2M5NDI2MTE1ZTggaW5wdXQ9NWY0MDk0ZjJkZTg3YzhmM10qLwogewogICAgIFB5T2JqZWN0ICpieXRlc2VwLCAqcmVzdWx0OwogCkBAIC0yMzEyLDE0ICsxNDgwLDEyIEBACiAvKltjbGluaWMgaW5wdXRdCiBieXRlYXJyYXkucmV2ZXJzZQogCi0gICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKLQogUmV2ZXJzZSB0aGUgb3JkZXIgb2YgdGhlIHZhbHVlcyBpbiBCIGluIHBsYWNlLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X3JldmVyc2VfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZikKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05Zjc2MTZmMjlhYjMwOWQzIGlucHV0PTc5MzNhNDk5Yjg1OTdiZDFdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05Zjc2MTZmMjlhYjMwOWQzIGlucHV0PTU0MzM1NjMxOWZjNzg1NTddKi8KIHsKICAgICBjaGFyIHN3YXAsICpoZWFkLCAqdGFpbDsKICAgICBQeV9zc2l6ZV90IGksIGosIG4gPSBQeV9TSVpFKHNlbGYpOwpAQCAtMjM0OCw3ICsxNTE0LDYgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVhcnJheS5pbnNlcnQKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCiAgICAgaW5kZXg6IFB5X3NzaXplX3QKICAgICAgICAgVGhlIGluZGV4IHdoZXJlIHRoZSB2YWx1ZSBpcyB0byBiZSBpbnNlcnRlZC4KICAgICBpdGVtOiBieXRlc3ZhbHVlCkBAIC0yMzYwLDcgKzE1MjUsNyBAQAogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X2luc2VydF9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IGluZGV4LCBpbnQgaXRlbSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03NmM3NzVhNzBlN2IwN2I3IGlucHV0PTgzMzc2NjgzNmJhMzBlMWVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03NmM3NzVhNzBlN2IwN2I3IGlucHV0PWIyYjVkMDdlOWRlNmMwNzBdKi8KIHsKICAgICBQeV9zc2l6ZV90IG4gPSBQeV9TSVpFKHNlbGYpOwogICAgIGNoYXIgKmJ1ZjsKQEAgLTIzOTAsNyArMTU1NSw2IEBACiAvKltjbGluaWMgaW5wdXRdCiBieXRlYXJyYXkuYXBwZW5kCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQogICAgIGl0ZW06IGJ5dGVzdmFsdWUKICAgICAgICAgVGhlIGl0ZW0gdG8gYmUgYXBwZW5kZWQuCiAgICAgLwpAQCAtMjQwMCw3ICsxNTY0LDcgQEAKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9hcHBlbmRfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgaW50IGl0ZW0pCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTE1NGUxOWVkMTg4NmNiNiBpbnB1dD1hZTU2ZWE4NzM4MDQwN2NjXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTE1NGUxOWVkMTg4NmNiNiBpbnB1dD0yMGQ2YmVjM2QxMzQwNTkzXSovCiB7CiAgICAgUHlfc3NpemVfdCBuID0gUHlfU0laRShzZWxmKTsKIApAQCAtMjQyMCw3ICsxNTg0LDYgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVhcnJheS5leHRlbmQKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCiAgICAgaXRlcmFibGVfb2ZfaW50czogb2JqZWN0CiAgICAgICAgIFRoZSBpdGVyYWJsZSBvZiBpdGVtcyB0byBhcHBlbmQuCiAgICAgLwpAQCAtMjQzMCw3ICsxNTkzLDcgQEAKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9leHRlbmQoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICppdGVyYWJsZV9vZl9pbnRzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk4MTU1ZGJlMjQ5MTcwYjEgaW5wdXQ9Y2U4M2E1ZDc1YjcwZDg1MF0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk4MTU1ZGJlMjQ5MTcwYjEgaW5wdXQ9YzYxN2IzYTkzMjQ5YmEyOF0qLwogewogICAgIFB5T2JqZWN0ICppdCwgKml0ZW0sICpieXRlYXJyYXlfb2JqOwogICAgIFB5X3NzaXplX3QgYnVmX3NpemUgPSAwLCBsZW4gPSAwOwpAQCAtMjUxNSw3ICsxNjc4LDYgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVhcnJheS5wb3AKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCiAgICAgaW5kZXg6IFB5X3NzaXplX3QgPSAtMQogICAgICAgICBUaGUgaW5kZXggZnJvbSB3aGVyZSB0byByZW1vdmUgdGhlIGl0ZW0uCiAgICAgICAgIC0xICh0aGUgZGVmYXVsdCB2YWx1ZSkgbWVhbnMgcmVtb3ZlIHRoZSBsYXN0IGl0ZW0uCkBAIC0yNTI4LDcgKzE2OTAsNyBAQAogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X3BvcF9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IGluZGV4KQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWUwY2NkNDAxZjgwMjFkYTggaW5wdXQ9MDc5N2U2YzBjYTlkNWE4NV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWUwY2NkNDAxZjgwMjFkYTggaW5wdXQ9MzU5MWRmMmQwNmMwZDIzN10qLwogewogICAgIGludCB2YWx1ZTsKICAgICBQeV9zc2l6ZV90IG4gPSBQeV9TSVpFKHNlbGYpOwpAQCAtMjU2MCw3ICsxNzIyLDYgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVhcnJheS5yZW1vdmUKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCiAgICAgdmFsdWU6IGJ5dGVzdmFsdWUKICAgICAgICAgVGhlIHZhbHVlIHRvIHJlbW92ZS4KICAgICAvCkBAIC0yNTcwLDIwICsxNzMxLDIwIEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfcmVtb3ZlX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIGludCB2YWx1ZSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kNjU5ZTM3ODY2NzA5YzEzIGlucHV0PTQ3NTYwYjExZmQ4NTZjMjRdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kNjU5ZTM3ODY2NzA5YzEzIGlucHV0PTEyMTgzMTI0MGNkNTFkZGZdKi8KIHsKLSAgICBQeV9zc2l6ZV90IG4gPSBQeV9TSVpFKHNlbGYpOworICAgIFB5X3NzaXplX3Qgd2hlcmUsIG4gPSBQeV9TSVpFKHNlbGYpOwogICAgIGNoYXIgKmJ1ZiA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKTsKLSAgICBjaGFyICp3aGVyZSA9IG1lbWNocihidWYsIHZhbHVlLCBuKTsKIAotICAgIGlmICghd2hlcmUpIHsKKyAgICB3aGVyZSA9IHN0cmluZ2xpYl9maW5kX2NoYXIoYnVmLCBuLCB2YWx1ZSk7CisgICAgaWYgKHdoZXJlIDwgMCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgInZhbHVlIG5vdCBmb3VuZCBpbiBieXRlYXJyYXkiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGlmICghX2NhbnJlc2l6ZShzZWxmKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBtZW1tb3ZlKHdoZXJlLCB3aGVyZSArIDEsIGJ1ZiArIG4gLSB3aGVyZSk7CisgICAgbWVtbW92ZShidWYgKyB3aGVyZSwgYnVmICsgd2hlcmUgKyAxLCBuIC0gd2hlcmUpOwogICAgIGlmIChQeUJ5dGVBcnJheV9SZXNpemUoKFB5T2JqZWN0ICopc2VsZiwgbiAtIDEpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTI1OTMsOCArMTc1NCw4IEBACiAvKiBYWFggVGhlc2UgdHdvIGhlbHBlcnMgY291bGQgYmUgb3B0aW1pemVkIGlmIGFyZ3NpemUgPT0gMSAqLwogCiBzdGF0aWMgUHlfc3NpemVfdAotbHN0cmlwX2hlbHBlcihjaGFyICpteXB0ciwgUHlfc3NpemVfdCBteXNpemUsCi0gICAgICAgICAgICAgIHZvaWQgKmFyZ3B0ciwgUHlfc3NpemVfdCBhcmdzaXplKQorbHN0cmlwX2hlbHBlcihjb25zdCBjaGFyICpteXB0ciwgUHlfc3NpemVfdCBteXNpemUsCisgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmFyZ3B0ciwgUHlfc3NpemVfdCBhcmdzaXplKQogewogICAgIFB5X3NzaXplX3QgaSA9IDA7CiAgICAgd2hpbGUgKGkgPCBteXNpemUgJiYgbWVtY2hyKGFyZ3B0ciwgKHVuc2lnbmVkIGNoYXIpIG15cHRyW2ldLCBhcmdzaXplKSkKQEAgLTI2MDMsOCArMTc2NCw4IEBACiB9CiAKIHN0YXRpYyBQeV9zc2l6ZV90Ci1yc3RyaXBfaGVscGVyKGNoYXIgKm15cHRyLCBQeV9zc2l6ZV90IG15c2l6ZSwKLSAgICAgICAgICAgICAgdm9pZCAqYXJncHRyLCBQeV9zc2l6ZV90IGFyZ3NpemUpCityc3RyaXBfaGVscGVyKGNvbnN0IGNoYXIgKm15cHRyLCBQeV9zc2l6ZV90IG15c2l6ZSwKKyAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqYXJncHRyLCBQeV9zc2l6ZV90IGFyZ3NpemUpCiB7CiAgICAgUHlfc3NpemVfdCBpID0gbXlzaXplIC0gMTsKICAgICB3aGlsZSAoaSA+PSAwICYmIG1lbWNocihhcmdwdHIsICh1bnNpZ25lZCBjaGFyKSBteXB0cltpXSwgYXJnc2l6ZSkpCkBAIC0yODA1LDI3ICsxOTY2LDEwIEBACiAgICAgICAgICk7CiB9CiAKLXN0YXRpYyBpbnQKLWhleF9kaWdpdF90b19pbnQoUHlfVUNTNCBjKQotewotICAgIGlmIChjID49IDEyOCkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmIChQeV9JU0RJR0lUKGMpKQotICAgICAgICByZXR1cm4gYyAtICcwJzsKLSAgICBlbHNlIHsKLSAgICAgICAgaWYgKFB5X0lTVVBQRVIoYykpCi0gICAgICAgICAgICBjID0gUHlfVE9MT1dFUihjKTsKLSAgICAgICAgaWYgKGMgPj0gJ2EnICYmIGMgPD0gJ2YnKQotICAgICAgICAgICAgcmV0dXJuIGMgLSAnYScgKyAxMDsKLSAgICB9Ci0gICAgcmV0dXJuIC0xOwotfQotCiAvKltjbGluaWMgaW5wdXRdCiBAY2xhc3NtZXRob2QKIGJ5dGVhcnJheS5mcm9taGV4CiAKLSAgICBjbHM6IHNlbGYodHlwZT0iUHlPYmplY3QqIikKICAgICBzdHJpbmc6IHVuaWNvZGUKICAgICAvCiAKQEAgLTI4MzYsNTEgKzE5ODAsMTUgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9mcm9taGV4X2ltcGwoUHlPYmplY3QqY2xzLCBQeU9iamVjdCAqc3RyaW5nKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRmM2RhNjAxMjliMzcwMGMgaW5wdXQ9OTA3YmJkMmQzNGQ5MzY3YV0qLworYnl0ZWFycmF5X2Zyb21oZXhfaW1wbChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICpzdHJpbmcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OGYwZjBiNmQzMGZiM2JhMCBpbnB1dD1mMDMzYTE2ZDFmYjIxZjQ4XSovCiB7Ci0gICAgUHlPYmplY3QgKm5ld2J5dGVzOwotICAgIGNoYXIgKmJ1ZjsKLSAgICBQeV9zc2l6ZV90IGhleGxlbiwgYnl0ZXNsZW4sIGksIGo7Ci0gICAgaW50IHRvcCwgYm90OwotICAgIHZvaWQgKmRhdGE7Ci0gICAgdW5zaWduZWQgaW50IGtpbmQ7Ci0KLSAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrKHN0cmluZykpOwotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3RyaW5nKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHN0cmluZyk7Ci0gICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHN0cmluZyk7Ci0gICAgaGV4bGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyaW5nKTsKLQotICAgIGJ5dGVzbGVuID0gaGV4bGVuLzI7IC8qIFRoaXMgb3ZlcmVzdGltYXRlcyBpZiB0aGVyZSBhcmUgc3BhY2VzICovCi0gICAgbmV3Ynl0ZXMgPSBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBieXRlc2xlbik7Ci0gICAgaWYgKCFuZXdieXRlcykKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYnVmID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKG5ld2J5dGVzKTsKLSAgICBmb3IgKGkgPSBqID0gMDsgaSA8IGhleGxlbjsgaSArPSAyKSB7Ci0gICAgICAgIC8qIHNraXAgb3ZlciBzcGFjZXMgaW4gdGhlIGlucHV0ICovCi0gICAgICAgIHdoaWxlIChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSA9PSAnICcpCi0gICAgICAgICAgICBpKys7Ci0gICAgICAgIGlmIChpID49IGhleGxlbikKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB0b3AgPSBoZXhfZGlnaXRfdG9faW50KFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpKTsKLSAgICAgICAgYm90ID0gaGV4X2RpZ2l0X3RvX2ludChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKzEpKTsKLSAgICAgICAgaWYgKHRvcCA9PSAtMSB8fCBib3QgPT0gLTEpIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICJub24taGV4YWRlY2ltYWwgbnVtYmVyIGZvdW5kIGluICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAiZnJvbWhleCgpIGFyZyBhdCBwb3NpdGlvbiAlemQiLCBpKTsKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIH0KLSAgICAgICAgYnVmW2orK10gPSAodG9wIDw8IDQpICsgYm90OworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBfUHlCeXRlc19Gcm9tSGV4KHN0cmluZywgdHlwZSA9PSAmUHlCeXRlQXJyYXlfVHlwZSk7CisgICAgaWYgKHR5cGUgIT0gJlB5Qnl0ZUFycmF5X1R5cGUgJiYgcmVzdWx0ICE9IE5VTEwpIHsKKyAgICAgICAgUHlfU0VUUkVGKHJlc3VsdCwgUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncygoUHlPYmplY3QgKil0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCwgTlVMTCkpOwogICAgIH0KLSAgICBpZiAoUHlCeXRlQXJyYXlfUmVzaXplKG5ld2J5dGVzLCBqKSA8IDApCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgcmV0dXJuIG5ld2J5dGVzOwotCi0gIGVycm9yOgotICAgIFB5X0RFQ1JFRihuZXdieXRlcyk7Ci0gICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogUHlEb2NfU1RSVkFSKGhleF9fZG9jX18sCkBAIC0yOTM1LDE0ICsyMDQzLDEyIEBACiAvKltjbGluaWMgaW5wdXRdCiBieXRlYXJyYXkuX19yZWR1Y2VfXyBhcyBieXRlYXJyYXlfcmVkdWNlCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQotCiBSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X3JlZHVjZV9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTUyYmYzMDQwODY0NjRjYWIgaW5wdXQ9ZmJiMDdkZTRkMTAyYTAzYV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTUyYmYzMDQwODY0NjRjYWIgaW5wdXQ9NDRiNTczN2FkYTYyZGQzZl0qLwogewogICAgIHJldHVybiBfY29tbW9uX3JlZHVjZShzZWxmLCAyKTsKIH0KQEAgLTI5NTAsNyArMjA1Niw2IEBACiAvKltjbGluaWMgaW5wdXRdCiBieXRlYXJyYXkuX19yZWR1Y2VfZXhfXyBhcyBieXRlYXJyYXlfcmVkdWNlX2V4CiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQogICAgIHByb3RvOiBpbnQgPSAwCiAgICAgLwogCkBAIC0yOTU5LDcgKzIwNjQsNyBAQAogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X3JlZHVjZV9leF9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBpbnQgcHJvdG8pCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTJlYWMzMzM3NzE5NzUyMCBpbnB1dD0wZTA5MWE0MmNhNmRiZDkxXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTJlYWMzMzM3NzE5NzUyMCBpbnB1dD1mMTI5YmMxYTFhYTE1MWVlXSovCiB7CiAgICAgcmV0dXJuIF9jb21tb25fcmVkdWNlKHNlbGYsIHByb3RvKTsKIH0KQEAgLTI5NjcsMTQgKzIwNzIsMTIgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVhcnJheS5fX3NpemVvZl9fIGFzIGJ5dGVhcnJheV9zaXplb2YKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCi0KIFJldHVybnMgdGhlIHNpemUgb2YgdGhlIGJ5dGVhcnJheSBvYmplY3QgaW4gbWVtb3J5LCBpbiBieXRlcy4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9zaXplb2ZfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZikKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03MzhhYmRkMTc5NTFjNDI3IGlucHV0PTZiMjNkMzA1MzYyYjQ2MmJdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03MzhhYmRkMTc5NTFjNDI3IGlucHV0PWUyNzMyMGZkOThhNGJjNWFdKi8KIHsKICAgICBQeV9zc2l6ZV90IHJlczsKIApAQCAtMzAxNSwxOSArMjExOCwyMiBAQAogICAgIEJZVEVBUlJBWV9BUFBFTkRfTUVUSE9EREVGCiAgICAgeyJjYXBpdGFsaXplIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9jYXBpdGFsaXplLCBNRVRIX05PQVJHUywKICAgICAgX1B5X2NhcGl0YWxpemVfX2RvY19ffSwKLSAgICB7ImNlbnRlciIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfY2VudGVyLCBNRVRIX1ZBUkFSR1MsIGNlbnRlcl9fZG9jX199LAorICAgIHsiY2VudGVyIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9jZW50ZXIsIE1FVEhfVkFSQVJHUywgX1B5X2NlbnRlcl9fZG9jX199LAogICAgIEJZVEVBUlJBWV9DTEVBUl9NRVRIT0RERUYKICAgICBCWVRFQVJSQVlfQ09QWV9NRVRIT0RERUYKLSAgICB7ImNvdW50IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9jb3VudCwgTUVUSF9WQVJBUkdTLCBjb3VudF9fZG9jX199LAorICAgIHsiY291bnQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2NvdW50LCBNRVRIX1ZBUkFSR1MsCisgICAgIF9QeV9jb3VudF9fZG9jX199LAogICAgIEJZVEVBUlJBWV9ERUNPREVfTUVUSE9EREVGCi0gICAgeyJlbmRzd2l0aCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfZW5kc3dpdGgsIE1FVEhfVkFSQVJHUywgZW5kc3dpdGhfX2RvY19ffSwKKyAgICB7ImVuZHN3aXRoIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9lbmRzd2l0aCwgTUVUSF9WQVJBUkdTLAorICAgICBfUHlfZW5kc3dpdGhfX2RvY19ffSwKICAgICB7ImV4cGFuZHRhYnMiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2V4cGFuZHRhYnMsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCi0gICAgIGV4cGFuZHRhYnNfX2RvY19ffSwKKyAgICAgX1B5X2V4cGFuZHRhYnNfX2RvY19ffSwKICAgICBCWVRFQVJSQVlfRVhURU5EX01FVEhPRERFRgotICAgIHsiZmluZCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfZmluZCwgTUVUSF9WQVJBUkdTLCBmaW5kX19kb2NfX30sCisgICAgeyJmaW5kIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9maW5kLCBNRVRIX1ZBUkFSR1MsCisgICAgIF9QeV9maW5kX19kb2NfX30sCiAgICAgQllURUFSUkFZX0ZST01IRVhfTUVUSE9EREVGCiAgICAgeyJoZXgiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2hleCwgTUVUSF9OT0FSR1MsIGhleF9fZG9jX199LAotICAgIHsiaW5kZXgiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2luZGV4LCBNRVRIX1ZBUkFSR1MsIGluZGV4X19kb2NfX30sCisgICAgeyJpbmRleCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfaW5kZXgsIE1FVEhfVkFSQVJHUywgX1B5X2luZGV4X19kb2NfX30sCiAgICAgQllURUFSUkFZX0lOU0VSVF9NRVRIT0RERUYKICAgICB7ImlzYWxudW0iLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2lzYWxudW0sIE1FVEhfTk9BUkdTLAogICAgICBfUHlfaXNhbG51bV9fZG9jX199LApAQCAtMzA0NCw3ICsyMTUwLDcgQEAKICAgICB7ImlzdXBwZXIiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2lzdXBwZXIsIE1FVEhfTk9BUkdTLAogICAgICBfUHlfaXN1cHBlcl9fZG9jX199LAogICAgIEJZVEVBUlJBWV9KT0lOX01FVEhPRERFRgotICAgIHsibGp1c3QiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2xqdXN0LCBNRVRIX1ZBUkFSR1MsIGxqdXN0X19kb2NfX30sCisgICAgeyJsanVzdCIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfbGp1c3QsIE1FVEhfVkFSQVJHUywgX1B5X2xqdXN0X19kb2NfX30sCiAgICAgeyJsb3dlciIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfbG93ZXIsIE1FVEhfTk9BUkdTLCBfUHlfbG93ZXJfX2RvY19ffSwKICAgICBCWVRFQVJSQVlfTFNUUklQX01FVEhPRERFRgogICAgIEJZVEVBUlJBWV9NQUtFVFJBTlNfTUVUSE9EREVGCkBAIC0zMDUzLDIzICsyMTU5LDIzIEBACiAgICAgQllURUFSUkFZX1JFTU9WRV9NRVRIT0RERUYKICAgICBCWVRFQVJSQVlfUkVQTEFDRV9NRVRIT0RERUYKICAgICBCWVRFQVJSQVlfUkVWRVJTRV9NRVRIT0RERUYKLSAgICB7InJmaW5kIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9yZmluZCwgTUVUSF9WQVJBUkdTLCByZmluZF9fZG9jX199LAotICAgIHsicmluZGV4IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9yaW5kZXgsIE1FVEhfVkFSQVJHUywgcmluZGV4X19kb2NfX30sCi0gICAgeyJyanVzdCIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfcmp1c3QsIE1FVEhfVkFSQVJHUywgcmp1c3RfX2RvY19ffSwKKyAgICB7InJmaW5kIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9yZmluZCwgTUVUSF9WQVJBUkdTLCBfUHlfcmZpbmRfX2RvY19ffSwKKyAgICB7InJpbmRleCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcmluZGV4LCBNRVRIX1ZBUkFSR1MsIF9QeV9yaW5kZXhfX2RvY19ffSwKKyAgICB7InJqdXN0IiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9yanVzdCwgTUVUSF9WQVJBUkdTLCBfUHlfcmp1c3RfX2RvY19ffSwKICAgICBCWVRFQVJSQVlfUlBBUlRJVElPTl9NRVRIT0RERUYKICAgICBCWVRFQVJSQVlfUlNQTElUX01FVEhPRERFRgogICAgIEJZVEVBUlJBWV9SU1RSSVBfTUVUSE9EREVGCiAgICAgQllURUFSUkFZX1NQTElUX01FVEhPRERFRgogICAgIEJZVEVBUlJBWV9TUExJVExJTkVTX01FVEhPRERFRgogICAgIHsic3RhcnRzd2l0aCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfc3RhcnRzd2l0aCwgTUVUSF9WQVJBUkdTICwKLSAgICAgc3RhcnRzd2l0aF9fZG9jX199LAorICAgICBfUHlfc3RhcnRzd2l0aF9fZG9jX199LAogICAgIEJZVEVBUlJBWV9TVFJJUF9NRVRIT0RERUYKICAgICB7InN3YXBjYXNlIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9zd2FwY2FzZSwgTUVUSF9OT0FSR1MsCiAgICAgIF9QeV9zd2FwY2FzZV9fZG9jX199LAogICAgIHsidGl0bGUiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX3RpdGxlLCBNRVRIX05PQVJHUywgX1B5X3RpdGxlX19kb2NfX30sCiAgICAgQllURUFSUkFZX1RSQU5TTEFURV9NRVRIT0RERUYKICAgICB7InVwcGVyIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl91cHBlciwgTUVUSF9OT0FSR1MsIF9QeV91cHBlcl9fZG9jX199LAotICAgIHsiemZpbGwiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX3pmaWxsLCBNRVRIX1ZBUkFSR1MsIHpmaWxsX19kb2NfX30sCisgICAgeyJ6ZmlsbCIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfemZpbGwsIE1FVEhfVkFSQVJHUywgX1B5X3pmaWxsX19kb2NfX30sCiAgICAge05VTEx9CiB9OwogCkBAIC0zMDc4LDcgKzIxODQsNyBAQAogewogICAgIGlmICghUHlCeXRlQXJyYXlfQ2hlY2sodikpCiAgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKLSAgICByZXR1cm4gYnl0ZWFycmF5X2Zvcm1hdCgoUHlCeXRlQXJyYXlPYmplY3QgKil2LCB3KTsKKyAgICByZXR1cm4gX1B5Qnl0ZXNfRm9ybWF0RXgoUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHYpLCBQeUJ5dGVBcnJheV9HRVRfU0laRSh2KSwgdywgMSk7CiB9CiAKIHN0YXRpYyBQeU51bWJlck1ldGhvZHMgYnl0ZWFycmF5X2FzX251bWJlciA9IHsKZGlmZiAtLWdpdCBhL09iamVjdHMvYnl0ZXNfbWV0aG9kcy5jIGIvT2JqZWN0cy9ieXRlc19tZXRob2RzLmMKaW5kZXggYTI5OTkxNS4uZDVjNGZlNiAxMDA2NDQKLS0tIGEvT2JqZWN0cy9ieXRlc19tZXRob2RzLmMKKysrIGIvT2JqZWN0cy9ieXRlc19tZXRob2RzLmMKQEAgLTEsMyArMSw0IEBACisjZGVmaW5lIFBZX1NTSVpFX1RfQ0xFQU4KICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJieXRlc19tZXRob2RzLmgiCiAKQEAgLTI3Nyw3ICsyNzgsNyBAQAogY2hhcmFjdGVycywgYWxsIHJlbWFpbmluZyBjYXNlZCBjaGFyYWN0ZXJzIGhhdmUgbG93ZXJjYXNlLiIpOwogCiB2b2lkCi1fUHlfYnl0ZXNfdGl0bGUoY2hhciAqcmVzdWx0LCBjaGFyICpzLCBQeV9zc2l6ZV90IGxlbikKK19QeV9ieXRlc190aXRsZShjaGFyICpyZXN1bHQsIGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3QgbGVuKQogewogICAgIFB5X3NzaXplX3QgaTsKICAgICBpbnQgcHJldmlvdXNfaXNfY2FzZWQgPSAwOwpAQCAtMzA2LDcgKzMwNyw3IEBACiBhbmQgdGhlIHJlc3QgbG93ZXItY2FzZWQuIik7CiAKIHZvaWQKLV9QeV9ieXRlc19jYXBpdGFsaXplKGNoYXIgKnJlc3VsdCwgY2hhciAqcywgUHlfc3NpemVfdCBsZW4pCitfUHlfYnl0ZXNfY2FwaXRhbGl6ZShjaGFyICpyZXN1bHQsIGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3QgbGVuKQogewogICAgIFB5X3NzaXplX3QgaTsKIApAQCAtMzM2LDcgKzMzNyw3IEBACiB0byBsb3dlcmNhc2UgQVNDSUkgYW5kIHZpY2UgdmVyc2EuIik7CiAKIHZvaWQKLV9QeV9ieXRlc19zd2FwY2FzZShjaGFyICpyZXN1bHQsIGNoYXIgKnMsIFB5X3NzaXplX3QgbGVuKQorX1B5X2J5dGVzX3N3YXBjYXNlKGNoYXIgKnJlc3VsdCwgY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBsZW4pCiB7CiAgICAgUHlfc3NpemVfdCBpOwogCkBAIC0zODcsMyArMzg4LDQyNyBAQAogCiAgICAgcmV0dXJuIHJlczsKIH0KKworI2RlZmluZSBGQVNUU0VBUkNIIGZhc3RzZWFyY2gKKyNkZWZpbmUgU1RSSU5HTElCKEYpIHN0cmluZ2xpYl8jI0YKKyNkZWZpbmUgU1RSSU5HTElCX0NIQVIgY2hhcgorI2RlZmluZSBTVFJJTkdMSUJfU0laRU9GX0NIQVIgMQorCisjaW5jbHVkZSAic3RyaW5nbGliL2Zhc3RzZWFyY2guaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvY291bnQuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvZmluZC5oIgorCisvKgorV3JhcHMgc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHMoKSBhbmQgYWRkaXRpb25hbGx5IGNoZWNrcyB3aGV0aGVyIHRoZQorZmlyc3QgYXJndW1lbnQgaXMgYW4gaW50ZWdlciBpbiByYW5nZSgwLCAyNTYpLgorCitJZiB0aGlzIGlzIHRoZSBjYXNlLCB3cml0ZXMgdGhlIGludGVnZXIgdmFsdWUgdG8gdGhlIGJ5dGUgcGFyYW1ldGVyCithbmQgc2V0cyBzdWJvYmogdG8gTlVMTC4gT3RoZXJ3aXNlLCBzZXRzIHRoZSBmaXJzdCBhcmd1bWVudCB0byBzdWJvYmoKK2FuZCBkb2Vzbid0IHRvdWNoIGJ5dGUuIFRoZSBvdGhlciBwYXJhbWV0ZXJzIGFyZSBzaW1pbGFyIHRvIHRob3NlIG9mCitzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kcygpLgorKi8KKworUHlfTE9DQUxfSU5MSU5FKGludCkKK3BhcnNlX2FyZ3NfZmluZHNfYnl0ZShjb25zdCBjaGFyICpmdW5jdGlvbl9uYW1lLCBQeU9iamVjdCAqYXJncywKKyAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKnN1Ym9iaiwgY2hhciAqYnl0ZSwKKyAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpzdGFydCwgUHlfc3NpemVfdCAqZW5kKQoreworICAgIFB5T2JqZWN0ICp0bXBfc3Vib2JqOworICAgIFB5X3NzaXplX3QgaXZhbDsKKyAgICBQeU9iamVjdCAqZXJyOworCisgICAgaWYoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzKGZ1bmN0aW9uX25hbWUsIGFyZ3MsICZ0bXBfc3Vib2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwgZW5kKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoIVB5TnVtYmVyX0NoZWNrKHRtcF9zdWJvYmopKSB7CisgICAgICAgICpzdWJvYmogPSB0bXBfc3Vib2JqOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICBpdmFsID0gUHlOdW1iZXJfQXNTc2l6ZV90KHRtcF9zdWJvYmosIFB5RXhjX092ZXJmbG93RXJyb3IpOworICAgIGlmIChpdmFsID09IC0xKSB7CisgICAgICAgIGVyciA9IFB5RXJyX09jY3VycmVkKCk7CisgICAgICAgIGlmIChlcnIgJiYgIVB5RXJyX0dpdmVuRXhjZXB0aW9uTWF0Y2hlcyhlcnIsIFB5RXhjX092ZXJmbG93RXJyb3IpKSB7CisgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICAgICAgKnN1Ym9iaiA9IHRtcF9zdWJvYmo7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChpdmFsIDwgMCB8fCBpdmFsID4gMjU1KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiYnl0ZSBtdXN0IGJlIGluIHJhbmdlKDAsIDI1NikiKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgKnN1Ym9iaiA9IE5VTEw7CisgICAgKmJ5dGUgPSAoY2hhcilpdmFsOworICAgIHJldHVybiAxOworfQorCisvKiBoZWxwZXIgbWFjcm8gdG8gZml4dXAgc3RhcnQvZW5kIHNsaWNlIHZhbHVlcyAqLworI2RlZmluZSBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBsZW4pICAgICAgICAgXAorICAgIGlmIChlbmQgPiBsZW4pICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGVuZCA9IGxlbjsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBlbHNlIGlmIChlbmQgPCAwKSB7ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBlbmQgKz0gbGVuOyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChlbmQgPCAwKSAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZW5kID0gMDsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoc3RhcnQgPCAwKSB7ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBzdGFydCArPSBsZW47ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChzdGFydCA8IDApICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgc3RhcnQgPSAwOyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfQorCitQeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkKK2ZpbmRfaW50ZXJuYWwoY29uc3QgY2hhciAqc3RyLCBQeV9zc2l6ZV90IGxlbiwKKyAgICAgICAgICAgICAgY29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSwgUHlPYmplY3QgKmFyZ3MsIGludCBkaXIpCit7CisgICAgUHlPYmplY3QgKnN1Ym9iajsKKyAgICBjaGFyIGJ5dGU7CisgICAgUHlfYnVmZmVyIHN1YmJ1ZjsKKyAgICBjb25zdCBjaGFyICpzdWI7CisgICAgUHlfc3NpemVfdCBzdWJfbGVuOworICAgIFB5X3NzaXplX3Qgc3RhcnQgPSAwLCBlbmQgPSBQWV9TU0laRV9UX01BWDsKKyAgICBQeV9zc2l6ZV90IHJlczsKKworICAgIGlmICghcGFyc2VfYXJnc19maW5kc19ieXRlKGZ1bmN0aW9uX25hbWUsIGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN1Ym9iaiwgJmJ5dGUsICZzdGFydCwgJmVuZCkpCisgICAgICAgIHJldHVybiAtMjsKKworICAgIGlmIChzdWJvYmopIHsKKyAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihzdWJvYmosICZzdWJidWYsIFB5QlVGX1NJTVBMRSkgIT0gMCkKKyAgICAgICAgICAgIHJldHVybiAtMjsKKworICAgICAgICBzdWIgPSBzdWJidWYuYnVmOworICAgICAgICBzdWJfbGVuID0gc3ViYnVmLmxlbjsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHN1YiA9ICZieXRlOworICAgICAgICBzdWJfbGVuID0gMTsKKyAgICB9CisKKyAgICBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBsZW4pOworICAgIGlmIChlbmQgLSBzdGFydCA8IHN1Yl9sZW4pCisgICAgICAgIHJlcyA9IC0xOworICAgIGVsc2UgaWYgKHN1Yl9sZW4gPT0gMSkgeworICAgICAgICBpZiAoZGlyID4gMCkKKyAgICAgICAgICAgIHJlcyA9IHN0cmluZ2xpYl9maW5kX2NoYXIoCisgICAgICAgICAgICAgICAgc3RyICsgc3RhcnQsIGVuZCAtIHN0YXJ0LAorICAgICAgICAgICAgICAgICpzdWIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXMgPSBzdHJpbmdsaWJfcmZpbmRfY2hhcigKKyAgICAgICAgICAgICAgICBzdHIgKyBzdGFydCwgZW5kIC0gc3RhcnQsCisgICAgICAgICAgICAgICAgKnN1Yik7CisgICAgICAgIGlmIChyZXMgPj0gMCkKKyAgICAgICAgICAgIHJlcyArPSBzdGFydDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmIChkaXIgPiAwKQorICAgICAgICAgICAgcmVzID0gc3RyaW5nbGliX2ZpbmRfc2xpY2UoCisgICAgICAgICAgICAgICAgc3RyLCBsZW4sCisgICAgICAgICAgICAgICAgc3ViLCBzdWJfbGVuLCBzdGFydCwgZW5kKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzID0gc3RyaW5nbGliX3JmaW5kX3NsaWNlKAorICAgICAgICAgICAgICAgIHN0ciwgbGVuLAorICAgICAgICAgICAgICAgIHN1Yiwgc3ViX2xlbiwgc3RhcnQsIGVuZCk7CisgICAgfQorCisgICAgaWYgKHN1Ym9iaikKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmc3ViYnVmKTsKKworICAgIHJldHVybiByZXM7Cit9CisKK1B5RG9jX1NUUlZBUl9zaGFyZWQoX1B5X2ZpbmRfX2RvY19fLAorIkIuZmluZChzdWJbLCBzdGFydFssIGVuZF1dKSAtPiBpbnRcblwKK1xuXAorUmV0dXJuIHRoZSBsb3dlc3QgaW5kZXggaW4gQiB3aGVyZSBzdWJzZWN0aW9uIHN1YiBpcyBmb3VuZCxcblwKK3N1Y2ggdGhhdCBzdWIgaXMgY29udGFpbmVkIHdpdGhpbiBCW3N0YXJ0LGVuZF0uICBPcHRpb25hbFxuXAorYXJndW1lbnRzIHN0YXJ0IGFuZCBlbmQgYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlIG5vdGF0aW9uLlxuXAorXG5cCitSZXR1cm4gLTEgb24gZmFpbHVyZS4iKTsKKworUHlPYmplY3QgKgorX1B5X2J5dGVzX2ZpbmQoY29uc3QgY2hhciAqc3RyLCBQeV9zc2l6ZV90IGxlbiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlfc3NpemVfdCByZXN1bHQgPSBmaW5kX2ludGVybmFsKHN0ciwgbGVuLCAiZmluZCIsIGFyZ3MsICsxKTsKKyAgICBpZiAocmVzdWx0ID09IC0yKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlc3VsdCk7Cit9CisKK1B5RG9jX1NUUlZBUl9zaGFyZWQoX1B5X2luZGV4X19kb2NfXywKKyJCLmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pIC0+IGludFxuXAorXG5cCitMaWtlIEIuZmluZCgpIGJ1dCByYWlzZSBWYWx1ZUVycm9yIHdoZW4gdGhlIHN1YnNlY3Rpb24gaXMgbm90IGZvdW5kLiIpOworCitQeU9iamVjdCAqCitfUHlfYnl0ZXNfaW5kZXgoY29uc3QgY2hhciAqc3RyLCBQeV9zc2l6ZV90IGxlbiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlfc3NpemVfdCByZXN1bHQgPSBmaW5kX2ludGVybmFsKHN0ciwgbGVuLCAiaW5kZXgiLCBhcmdzLCArMSk7CisgICAgaWYgKHJlc3VsdCA9PSAtMikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKHJlc3VsdCA9PSAtMSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJzdWJzZWN0aW9uIG5vdCBmb3VuZCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXN1bHQpOworfQorCitQeURvY19TVFJWQVJfc2hhcmVkKF9QeV9yZmluZF9fZG9jX18sCisiQi5yZmluZChzdWJbLCBzdGFydFssIGVuZF1dKSAtPiBpbnRcblwKK1xuXAorUmV0dXJuIHRoZSBoaWdoZXN0IGluZGV4IGluIEIgd2hlcmUgc3Vic2VjdGlvbiBzdWIgaXMgZm91bmQsXG5cCitzdWNoIHRoYXQgc3ViIGlzIGNvbnRhaW5lZCB3aXRoaW4gQltzdGFydCxlbmRdLiAgT3B0aW9uYWxcblwKK2FyZ3VtZW50cyBzdGFydCBhbmQgZW5kIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZSBub3RhdGlvbi5cblwKK1xuXAorUmV0dXJuIC0xIG9uIGZhaWx1cmUuIik7CisKK1B5T2JqZWN0ICoKK19QeV9ieXRlc19yZmluZChjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeV9zc2l6ZV90IHJlc3VsdCA9IGZpbmRfaW50ZXJuYWwoc3RyLCBsZW4sICJyZmluZCIsIGFyZ3MsIC0xKTsKKyAgICBpZiAocmVzdWx0ID09IC0yKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlc3VsdCk7Cit9CisKK1B5RG9jX1NUUlZBUl9zaGFyZWQoX1B5X3JpbmRleF9fZG9jX18sCisiQi5yaW5kZXgoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCitcblwKK0xpa2UgQi5yZmluZCgpIGJ1dCByYWlzZSBWYWx1ZUVycm9yIHdoZW4gdGhlIHN1YnNlY3Rpb24gaXMgbm90IGZvdW5kLiIpOworCitQeU9iamVjdCAqCitfUHlfYnl0ZXNfcmluZGV4KGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5X3NzaXplX3QgcmVzdWx0ID0gZmluZF9pbnRlcm5hbChzdHIsIGxlbiwgInJpbmRleCIsIGFyZ3MsIC0xKTsKKyAgICBpZiAocmVzdWx0ID09IC0yKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAocmVzdWx0ID09IC0xKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInN1YnNlY3Rpb24gbm90IGZvdW5kIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlc3VsdCk7Cit9CisKK1B5RG9jX1NUUlZBUl9zaGFyZWQoX1B5X2NvdW50X19kb2NfXywKKyJCLmNvdW50KHN1YlssIHN0YXJ0WywgZW5kXV0pIC0+IGludFxuXAorXG5cCitSZXR1cm4gdGhlIG51bWJlciBvZiBub24tb3ZlcmxhcHBpbmcgb2NjdXJyZW5jZXMgb2Ygc3Vic2VjdGlvbiBzdWIgaW5cblwKK2J5dGVzIEJbc3RhcnQ6ZW5kXS4gIE9wdGlvbmFsIGFyZ3VtZW50cyBzdGFydCBhbmQgZW5kIGFyZSBpbnRlcnByZXRlZFxuXAorYXMgaW4gc2xpY2Ugbm90YXRpb24uIik7CisKK1B5T2JqZWN0ICoKK19QeV9ieXRlc19jb3VudChjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqc3ViX29iajsKKyAgICBjb25zdCBjaGFyICpzdWI7CisgICAgUHlfc3NpemVfdCBzdWJfbGVuOworICAgIGNoYXIgYnl0ZTsKKyAgICBQeV9zc2l6ZV90IHN0YXJ0ID0gMCwgZW5kID0gUFlfU1NJWkVfVF9NQVg7CisKKyAgICBQeV9idWZmZXIgdnN1YjsKKyAgICBQeU9iamVjdCAqY291bnRfb2JqOworCisgICAgaWYgKCFwYXJzZV9hcmdzX2ZpbmRzX2J5dGUoImNvdW50IiwgYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3ViX29iaiwgJmJ5dGUsICZzdGFydCwgJmVuZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKHN1Yl9vYmopIHsKKyAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihzdWJfb2JqLCAmdnN1YiwgUHlCVUZfU0lNUExFKSAhPSAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAgICAgc3ViID0gdnN1Yi5idWY7CisgICAgICAgIHN1Yl9sZW4gPSB2c3ViLmxlbjsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHN1YiA9ICZieXRlOworICAgICAgICBzdWJfbGVuID0gMTsKKyAgICB9CisKKyAgICBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBsZW4pOworCisgICAgY291bnRfb2JqID0gUHlMb25nX0Zyb21Tc2l6ZV90KAorICAgICAgICBzdHJpbmdsaWJfY291bnQoc3RyICsgc3RhcnQsIGVuZCAtIHN0YXJ0LCBzdWIsIHN1Yl9sZW4sIFBZX1NTSVpFX1RfTUFYKQorICAgICAgICApOworCisgICAgaWYgKHN1Yl9vYmopCisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZzdWIpOworCisgICAgcmV0dXJuIGNvdW50X29iajsKK30KKworaW50CitfUHlfYnl0ZXNfY29udGFpbnMoY29uc3QgY2hhciAqc3RyLCBQeV9zc2l6ZV90IGxlbiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeV9zc2l6ZV90IGl2YWwgPSBQeU51bWJlcl9Bc1NzaXplX3QoYXJnLCBOVUxMKTsKKyAgICBpZiAoaXZhbCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIFB5X2J1ZmZlciB2YXJnOworICAgICAgICBQeV9zc2l6ZV90IHBvczsKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihhcmcsICZ2YXJnLCBQeUJVRl9TSU1QTEUpICE9IDApCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIHBvcyA9IHN0cmluZ2xpYl9maW5kKHN0ciwgbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJnLmJ1ZiwgdmFyZy5sZW4sIDApOworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2YXJnKTsKKyAgICAgICAgcmV0dXJuIHBvcyA+PSAwOworICAgIH0KKyAgICBpZiAoaXZhbCA8IDAgfHwgaXZhbCA+PSAyNTYpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJieXRlIG11c3QgYmUgaW4gcmFuZ2UoMCwgMjU2KSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgcmV0dXJuIG1lbWNocihzdHIsIChpbnQpIGl2YWwsIGxlbikgIT0gTlVMTDsKK30KKworCisvKiBNYXRjaGVzIHRoZSBlbmQgKGRpcmVjdGlvbiA+PSAwKSBvciBzdGFydCAoZGlyZWN0aW9uIDwgMCkgb2YgdGhlIGJ1ZmZlcgorICogYWdhaW5zdCBzdWJzdHIsIHVzaW5nIHRoZSBzdGFydCBhbmQgZW5kIGFyZ3VtZW50cy4gUmV0dXJucworICogLTEgb24gZXJyb3IsIDAgaWYgbm90IGZvdW5kIGFuZCAxIGlmIGZvdW5kLgorICovCitzdGF0aWMgaW50Cit0YWlsbWF0Y2goY29uc3QgY2hhciAqc3RyLCBQeV9zc2l6ZV90IGxlbiwgUHlPYmplY3QgKnN1YnN0ciwKKyAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LCBQeV9zc2l6ZV90IGVuZCwgaW50IGRpcmVjdGlvbikKK3sKKyAgICBQeV9idWZmZXIgc3ViX3ZpZXcgPSB7TlVMTCwgTlVMTH07CisgICAgY29uc3QgY2hhciAqc3ViOworICAgIFB5X3NzaXplX3Qgc2xlbjsKKworICAgIGlmIChQeUJ5dGVzX0NoZWNrKHN1YnN0cikpIHsKKyAgICAgICAgc3ViID0gUHlCeXRlc19BU19TVFJJTkcoc3Vic3RyKTsKKyAgICAgICAgc2xlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc3Vic3RyKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoc3Vic3RyLCAmc3ViX3ZpZXcsIFB5QlVGX1NJTVBMRSkgIT0gMCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgc3ViID0gc3ViX3ZpZXcuYnVmOworICAgICAgICBzbGVuID0gc3ViX3ZpZXcubGVuOworICAgIH0KKworICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIGxlbik7CisKKyAgICBpZiAoZGlyZWN0aW9uIDwgMCkgeworICAgICAgICAvKiBzdGFydHN3aXRoICovCisgICAgICAgIGlmIChzdGFydCArIHNsZW4gPiBsZW4pCisgICAgICAgICAgICBnb3RvIG5vdGZvdW5kOworICAgIH0gZWxzZSB7CisgICAgICAgIC8qIGVuZHN3aXRoICovCisgICAgICAgIGlmIChlbmQgLSBzdGFydCA8IHNsZW4gfHwgc3RhcnQgPiBsZW4pCisgICAgICAgICAgICBnb3RvIG5vdGZvdW5kOworCisgICAgICAgIGlmIChlbmQgLSBzbGVuID4gc3RhcnQpCisgICAgICAgICAgICBzdGFydCA9IGVuZCAtIHNsZW47CisgICAgfQorICAgIGlmIChlbmQgLSBzdGFydCA8IHNsZW4pCisgICAgICAgIGdvdG8gbm90Zm91bmQ7CisgICAgaWYgKG1lbWNtcChzdHIgKyBzdGFydCwgc3ViLCBzbGVuKSAhPSAwKQorICAgICAgICBnb3RvIG5vdGZvdW5kOworCisgICAgUHlCdWZmZXJfUmVsZWFzZSgmc3ViX3ZpZXcpOworICAgIHJldHVybiAxOworCitub3Rmb3VuZDoKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZzdWJfdmlldyk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitfUHlfYnl0ZXNfdGFpbG1hdGNoKGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUsIFB5T2JqZWN0ICphcmdzLAorICAgICAgICAgICAgICAgICAgICBpbnQgZGlyZWN0aW9uKQoreworICAgIFB5X3NzaXplX3Qgc3RhcnQgPSAwOworICAgIFB5X3NzaXplX3QgZW5kID0gUFlfU1NJWkVfVF9NQVg7CisgICAgUHlPYmplY3QgKnN1Ym9iajsKKyAgICBpbnQgcmVzdWx0OworCisgICAgaWYgKCFzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kcyhmdW5jdGlvbl9uYW1lLCBhcmdzLCAmc3Vib2JqLCAmc3RhcnQsICZlbmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlUdXBsZV9DaGVjayhzdWJvYmopKSB7CisgICAgICAgIFB5X3NzaXplX3QgaTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IFB5VHVwbGVfR0VUX1NJWkUoc3Vib2JqKTsgaSsrKSB7CisgICAgICAgICAgICByZXN1bHQgPSB0YWlsbWF0Y2goc3RyLCBsZW4sIFB5VHVwbGVfR0VUX0lURU0oc3Vib2JqLCBpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwgZW5kLCBkaXJlY3Rpb24pOworICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSAtMSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIGVsc2UgaWYgKHJlc3VsdCkgeworICAgICAgICAgICAgICAgIFB5X1JFVFVSTl9UUlVFOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKKyAgICB9CisgICAgcmVzdWx0ID0gdGFpbG1hdGNoKHN0ciwgbGVuLCBzdWJvYmosIHN0YXJ0LCBlbmQsIGRpcmVjdGlvbik7CisgICAgaWYgKHJlc3VsdCA9PSAtMSkgeworICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19UeXBlRXJyb3IpKQorICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiJXMgZmlyc3QgYXJnIG11c3QgYmUgYnl0ZXMgb3IgYSB0dXBsZSBvZiBieXRlcywgIgorICAgICAgICAgICAgICAgICAgICAgICAgICJub3QgJXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uX25hbWUsIFB5X1RZUEUoc3Vib2JqKS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBlbHNlCisgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcocmVzdWx0KTsKK30KKworUHlEb2NfU1RSVkFSX3NoYXJlZChfUHlfc3RhcnRzd2l0aF9fZG9jX18sCisiQi5zdGFydHN3aXRoKHByZWZpeFssIHN0YXJ0WywgZW5kXV0pIC0+IGJvb2xcblwKK1xuXAorUmV0dXJuIFRydWUgaWYgQiBzdGFydHMgd2l0aCB0aGUgc3BlY2lmaWVkIHByZWZpeCwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAorV2l0aCBvcHRpb25hbCBzdGFydCwgdGVzdCBCIGJlZ2lubmluZyBhdCB0aGF0IHBvc2l0aW9uLlxuXAorV2l0aCBvcHRpb25hbCBlbmQsIHN0b3AgY29tcGFyaW5nIEIgYXQgdGhhdCBwb3NpdGlvbi5cblwKK3ByZWZpeCBjYW4gYWxzbyBiZSBhIHR1cGxlIG9mIGJ5dGVzIHRvIHRyeS4iKTsKKworUHlPYmplY3QgKgorX1B5X2J5dGVzX3N0YXJ0c3dpdGgoY29uc3QgY2hhciAqc3RyLCBQeV9zc2l6ZV90IGxlbiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgcmV0dXJuIF9QeV9ieXRlc190YWlsbWF0Y2goc3RyLCBsZW4sICJzdGFydHN3aXRoIiwgYXJncywgLTEpOworfQorCitQeURvY19TVFJWQVJfc2hhcmVkKF9QeV9lbmRzd2l0aF9fZG9jX18sCisiQi5lbmRzd2l0aChzdWZmaXhbLCBzdGFydFssIGVuZF1dKSAtPiBib29sXG5cCitcblwKK1JldHVybiBUcnVlIGlmIEIgZW5kcyB3aXRoIHRoZSBzcGVjaWZpZWQgc3VmZml4LCBGYWxzZSBvdGhlcndpc2UuXG5cCitXaXRoIG9wdGlvbmFsIHN0YXJ0LCB0ZXN0IEIgYmVnaW5uaW5nIGF0IHRoYXQgcG9zaXRpb24uXG5cCitXaXRoIG9wdGlvbmFsIGVuZCwgc3RvcCBjb21wYXJpbmcgQiBhdCB0aGF0IHBvc2l0aW9uLlxuXAorc3VmZml4IGNhbiBhbHNvIGJlIGEgdHVwbGUgb2YgYnl0ZXMgdG8gdHJ5LiIpOworCitQeU9iamVjdCAqCitfUHlfYnl0ZXNfZW5kc3dpdGgoY29uc3QgY2hhciAqc3RyLCBQeV9zc2l6ZV90IGxlbiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgcmV0dXJuIF9QeV9ieXRlc190YWlsbWF0Y2goc3RyLCBsZW4sICJlbmRzd2l0aCIsIGFyZ3MsICsxKTsKK30KKworUHlEb2NfU1RSVkFSX3NoYXJlZChfUHlfZXhwYW5kdGFic19fZG9jX18sCisiQi5leHBhbmR0YWJzKHRhYnNpemU9OCkgLT4gY29weSBvZiBCXG5cCitcblwKK1JldHVybiBhIGNvcHkgb2YgQiB3aGVyZSBhbGwgdGFiIGNoYXJhY3RlcnMgYXJlIGV4cGFuZGVkIHVzaW5nIHNwYWNlcy5cblwKK0lmIHRhYnNpemUgaXMgbm90IGdpdmVuLCBhIHRhYiBzaXplIG9mIDggY2hhcmFjdGVycyBpcyBhc3N1bWVkLiIpOworCitQeURvY19TVFJWQVJfc2hhcmVkKF9QeV9sanVzdF9fZG9jX18sCisiQi5sanVzdCh3aWR0aFssIGZpbGxjaGFyXSkgLT4gY29weSBvZiBCXG4iCisiXG4iCisiUmV0dXJuIEIgbGVmdCBqdXN0aWZpZWQgaW4gYSBzdHJpbmcgb2YgbGVuZ3RoIHdpZHRoLiBQYWRkaW5nIGlzXG4iCisiZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkIGZpbGwgY2hhcmFjdGVyIChkZWZhdWx0IGlzIGEgc3BhY2UpLiIpOworCitQeURvY19TVFJWQVJfc2hhcmVkKF9QeV9yanVzdF9fZG9jX18sCisiQi5yanVzdCh3aWR0aFssIGZpbGxjaGFyXSkgLT4gY29weSBvZiBCXG4iCisiXG4iCisiUmV0dXJuIEIgcmlnaHQganVzdGlmaWVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCB3aWR0aC4gUGFkZGluZyBpc1xuIgorImRvbmUgdXNpbmcgdGhlIHNwZWNpZmllZCBmaWxsIGNoYXJhY3RlciAoZGVmYXVsdCBpcyBhIHNwYWNlKSIpOworCitQeURvY19TVFJWQVJfc2hhcmVkKF9QeV9jZW50ZXJfX2RvY19fLAorIkIuY2VudGVyKHdpZHRoWywgZmlsbGNoYXJdKSAtPiBjb3B5IG9mIEJcbiIKKyJcbiIKKyJSZXR1cm4gQiBjZW50ZXJlZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggd2lkdGguICBQYWRkaW5nIGlzXG4iCisiZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkIGZpbGwgY2hhcmFjdGVyIChkZWZhdWx0IGlzIGEgc3BhY2UpLiIpOworCitQeURvY19TVFJWQVJfc2hhcmVkKF9QeV96ZmlsbF9fZG9jX18sCisiQi56ZmlsbCh3aWR0aCkgLT4gY29weSBvZiBCXG4iCisiXG4iCisiUGFkIGEgbnVtZXJpYyBzdHJpbmcgQiB3aXRoIHplcm9zIG9uIHRoZSBsZWZ0LCB0byBmaWxsIGEgZmllbGRcbiIKKyJvZiB0aGUgc3BlY2lmaWVkIHdpZHRoLiAgQiBpcyBuZXZlciB0cnVuY2F0ZWQuIik7CisKZGlmZiAtLWdpdCBhL09iamVjdHMvYnl0ZXNvYmplY3QuYyBiL09iamVjdHMvYnl0ZXNvYmplY3QuYwppbmRleCA2NzNiYjAwLi5iMjJlNTdlIDEwMDY0NAotLS0gYS9PYmplY3RzL2J5dGVzb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9ieXRlc29iamVjdC5jCkBAIC05LDkgKzksOSBAQAogI2luY2x1ZGUgPHN0ZGRlZi5oPgogCiAvKltjbGluaWMgaW5wdXRdCi1jbGFzcyBieXRlcyAiUHlCeXRlc09iamVjdCoiICImUHlCeXRlc19UeXBlIgorY2xhc3MgYnl0ZXMgIlB5Qnl0ZXNPYmplY3QgKiIgIiZQeUJ5dGVzX1R5cGUiCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD0xYTFkOTEwMmFmYzFiMDBjXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD03YTIzOGY5NjVkNjQ4OTJiXSovCiAKICNpbmNsdWRlICJjbGluaWMvYnl0ZXNvYmplY3QuYy5oIgogCkBAIC0zMCw2ICszMCwxMCBAQAogKi8KICNkZWZpbmUgUHlCeXRlc09iamVjdF9TSVpFIChvZmZzZXRvZihQeUJ5dGVzT2JqZWN0LCBvYl9zdmFsKSArIDEpCiAKKy8qIEZvcndhcmQgZGVjbGFyYXRpb24gKi8KK1B5X0xPQ0FMX0lOTElORShQeV9zc2l6ZV90KSBfUHlCeXRlc1dyaXRlcl9HZXRTaXplKF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpzdHIpOworCiAvKgogICAgRm9yIFB5Qnl0ZXNfRnJvbVN0cmluZygpLCB0aGUgcGFyYW1ldGVyIGBzdHInIHBvaW50cyB0byBhIG51bGwtdGVybWluYXRlZAogICAgc3RyaW5nIGNvbnRhaW5pbmcgZXhhY3RseSBgc2l6ZScgYnl0ZXMuCkBAIC0xMTYsNyArMTIwLDcgQEAKICAgICBpZiAoc3RyID09IE5VTEwpCiAgICAgICAgIHJldHVybiAoUHlPYmplY3QgKikgb3A7CiAKLSAgICBQeV9NRU1DUFkob3AtPm9iX3N2YWwsIHN0ciwgc2l6ZSk7CisgICAgbWVtY3B5KG9wLT5vYl9zdmFsLCBzdHIsIHNpemUpOwogICAgIC8qIHNoYXJlIHNob3J0IHN0cmluZ3MgKi8KICAgICBpZiAoc2l6ZSA9PSAxKSB7CiAgICAgICAgIGNoYXJhY3RlcnNbKnN0ciAmIFVDSEFSX01BWF0gPSBvcDsKQEAgLTE1OSw3ICsxNjMsNyBAQAogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKICAgICAodm9pZClQeU9iamVjdF9JTklUX1ZBUihvcCwgJlB5Qnl0ZXNfVHlwZSwgc2l6ZSk7CiAgICAgb3AtPm9iX3NoYXNoID0gLTE7Ci0gICAgUHlfTUVNQ1BZKG9wLT5vYl9zdmFsLCBzdHIsIHNpemUrMSk7CisgICAgbWVtY3B5KG9wLT5vYl9zdmFsLCBzdHIsIHNpemUrMSk7CiAgICAgLyogc2hhcmUgc2hvcnQgc3RyaW5ncyAqLwogICAgIGlmIChzaXplID09IDApIHsKICAgICAgICAgbnVsbHN0cmluZyA9IG9wOwpAQCAtMTc0LDE5MCArMTc4LDE4NCBAQAogUHlPYmplY3QgKgogUHlCeXRlc19Gcm9tRm9ybWF0Vihjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgdmFyZ3MpCiB7Ci0gICAgdmFfbGlzdCBjb3VudDsKLSAgICBQeV9zc2l6ZV90IG4gPSAwOwotICAgIGNvbnN0IGNoYXIqIGY7CiAgICAgY2hhciAqczsKLSAgICBQeU9iamVjdCogc3RyaW5nOworICAgIGNvbnN0IGNoYXIgKmY7CisgICAgY29uc3QgY2hhciAqcDsKKyAgICBQeV9zc2l6ZV90IHByZWM7CisgICAgaW50IGxvbmdmbGFnOworICAgIGludCBzaXplX3RmbGFnOworICAgIC8qIExvbmdlc3QgNjQtYml0IGZvcm1hdHRlZCBudW1iZXJzOgorICAgICAgIC0gIjE4NDQ2NzQ0MDczNzA5NTUxNjE1XDAiICgyMSBieXRlcykKKyAgICAgICAtICItOTIyMzM3MjAzNjg1NDc3NTgwOFwwIiAoMjEgYnl0ZXMpCisgICAgICAgRGVjaW1hbCB0YWtlcyB0aGUgbW9zdCBzcGFjZSAoaXQgaXNuJ3QgZW5vdWdoIGZvciBvY3RhbC4pCiAKLSAgICBQeV9WQV9DT1BZKGNvdW50LCB2YXJncyk7Ci0gICAgLyogc3RlcCAxOiBmaWd1cmUgb3V0IGhvdyBsYXJnZSBhIGJ1ZmZlciB3ZSBuZWVkICovCi0gICAgZm9yIChmID0gZm9ybWF0OyAqZjsgZisrKSB7Ci0gICAgICAgIGlmICgqZiA9PSAnJScpIHsKLSAgICAgICAgICAgIGNvbnN0IGNoYXIqIHAgPSBmOwotICAgICAgICAgICAgd2hpbGUgKCorK2YgJiYgKmYgIT0gJyUnICYmICFQeV9JU0FMUEhBKCpmKSkKLSAgICAgICAgICAgICAgICA7CisgICAgICAgTG9uZ2VzdCA2NC1iaXQgcG9pbnRlciByZXByZXNlbnRhdGlvbjoKKyAgICAgICAiMHhmZmZmZmZmZmZmZmZmZmZmXDAiICgxOSBieXRlcykuICovCisgICAgY2hhciBidWZmZXJbMjFdOworICAgIF9QeUJ5dGVzV3JpdGVyIHdyaXRlcjsKIAotICAgICAgICAgICAgLyogc2tpcCB0aGUgJ2wnIG9yICd6JyBpbiB7JWxkLCAlemQsICVsdSwgJXp1fSBzaW5jZQotICAgICAgICAgICAgICogdGhleSBkb24ndCBhZmZlY3QgdGhlIGFtb3VudCBvZiBzcGFjZSB3ZSByZXNlcnZlLgotICAgICAgICAgICAgICovCi0gICAgICAgICAgICBpZiAoKCpmID09ICdsJyB8fCAqZiA9PSAneicpICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZbMV0gPT0gJ2QnIHx8IGZbMV0gPT0gJ3UnKSkKLSAgICAgICAgICAgICAgICArK2Y7CisgICAgX1B5Qnl0ZXNXcml0ZXJfSW5pdCgmd3JpdGVyKTsKIAotICAgICAgICAgICAgc3dpdGNoICgqZikgewotICAgICAgICAgICAgY2FzZSAnYyc6Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaW50IGMgPSB2YV9hcmcoY291bnQsIGludCk7Ci0gICAgICAgICAgICAgICAgaWYgKGMgPCAwIHx8IGMgPiAyNTUpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUHlCeXRlc19Gcm9tRm9ybWF0VigpOiAlYyBmb3JtYXQgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdHMgYW4gaW50ZWdlciBpbiByYW5nZSBbMDsgMjU1XSIpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbisrOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FzZSAnJSc6Ci0gICAgICAgICAgICAgICAgbisrOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAnZCc6IGNhc2UgJ3UnOiBjYXNlICdpJzogY2FzZSAneCc6Ci0gICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZyhjb3VudCwgaW50KTsKLSAgICAgICAgICAgICAgICAvKiAyMCBieXRlcyBpcyBlbm91Z2ggdG8gaG9sZCBhIDY0LWJpdAotICAgICAgICAgICAgICAgICAgIGludGVnZXIuICBEZWNpbWFsIHRha2VzIHRoZSBtb3N0IHNwYWNlLgotICAgICAgICAgICAgICAgICAgIFRoaXMgaXNuJ3QgZW5vdWdoIGZvciBvY3RhbC4gKi8KLSAgICAgICAgICAgICAgICBuICs9IDIwOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAncyc6Ci0gICAgICAgICAgICAgICAgcyA9IHZhX2FyZyhjb3VudCwgY2hhciopOwotICAgICAgICAgICAgICAgIG4gKz0gc3RybGVuKHMpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAncCc6Ci0gICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZyhjb3VudCwgaW50KTsKLSAgICAgICAgICAgICAgICAvKiBtYXhpbXVtIDY0LWJpdCBwb2ludGVyIHJlcHJlc2VudGF0aW9uOgotICAgICAgICAgICAgICAgICAqIDB4ZmZmZmZmZmZmZmZmZmZmZgotICAgICAgICAgICAgICAgICAqIHNvIDE5IGNoYXJhY3RlcnMgaXMgZW5vdWdoLgotICAgICAgICAgICAgICAgICAqIFhYWCBJIGNvdW50IDE4IC0tIHdoYXQncyB0aGUgZXh0cmEgZm9yPwotICAgICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgICAgIG4gKz0gMTk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIC8qIGlmIHdlIHN0dW1ibGUgdXBvbiBhbiB1bmtub3duCi0gICAgICAgICAgICAgICAgICAgZm9ybWF0dGluZyBjb2RlLCBjb3B5IHRoZSByZXN0IG9mCi0gICAgICAgICAgICAgICAgICAgdGhlIGZvcm1hdCBzdHJpbmcgdG8gdGhlIG91dHB1dAotICAgICAgICAgICAgICAgICAgIHN0cmluZy4gKHdlIGNhbm5vdCBqdXN0IHNraXAgdGhlCi0gICAgICAgICAgICAgICAgICAgY29kZSwgc2luY2UgdGhlcmUncyBubyB3YXkgdG8ga25vdwotICAgICAgICAgICAgICAgICAgIHdoYXQncyBpbiB0aGUgYXJndW1lbnQgbGlzdCkgKi8KLSAgICAgICAgICAgICAgICBuICs9IHN0cmxlbihwKTsKLSAgICAgICAgICAgICAgICBnb3RvIGV4cGFuZDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBuKys7Ci0gICAgfQotIGV4cGFuZDoKLSAgICAvKiBzdGVwIDI6IGZpbGwgdGhlIGJ1ZmZlciAqLwotICAgIC8qIFNpbmNlIHdlJ3ZlIGFuYWx5emVkIGhvdyBtdWNoIHNwYWNlIHdlIG5lZWQgZm9yIHRoZSB3b3JzdCBjYXNlLAotICAgICAgIHVzZSBzcHJpbnRmIGRpcmVjdGx5IGluc3RlYWQgb2YgdGhlIHNsb3dlciBQeU9TX3NucHJpbnRmLiAqLwotICAgIHN0cmluZyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbik7Ci0gICAgaWYgKCFzdHJpbmcpCisgICAgcyA9IF9QeUJ5dGVzV3JpdGVyX0FsbG9jKCZ3cml0ZXIsIHN0cmxlbihmb3JtYXQpKTsKKyAgICBpZiAocyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB3cml0ZXIub3ZlcmFsbG9jYXRlID0gMTsKIAotICAgIHMgPSBQeUJ5dGVzX0FzU3RyaW5nKHN0cmluZyk7CisjZGVmaW5lIFdSSVRFX0JZVEVTKHN0cikgXAorICAgIGRvIHsgXAorICAgICAgICBzID0gX1B5Qnl0ZXNXcml0ZXJfV3JpdGVCeXRlcygmd3JpdGVyLCBzLCAoc3RyKSwgc3RybGVuKHN0cikpOyBcCisgICAgICAgIGlmIChzID09IE5VTEwpIFwKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7IFwKKyAgICB9IHdoaWxlICgwKQogCiAgICAgZm9yIChmID0gZm9ybWF0OyAqZjsgZisrKSB7Ci0gICAgICAgIGlmICgqZiA9PSAnJScpIHsKLSAgICAgICAgICAgIGNvbnN0IGNoYXIqIHAgPSBmKys7CisgICAgICAgIGlmICgqZiAhPSAnJScpIHsKKyAgICAgICAgICAgICpzKysgPSAqZjsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgcCA9IGYrKzsKKworICAgICAgICAvKiBpZ25vcmUgdGhlIHdpZHRoIChleDogMTAgaW4gIiUxMHMiKSAqLworICAgICAgICB3aGlsZSAoUHlfSVNESUdJVCgqZikpCisgICAgICAgICAgICBmKys7CisKKyAgICAgICAgLyogcGFyc2UgdGhlIHByZWNpc2lvbiAoZXg6IDEwIGluICIlLjEwcyIpICovCisgICAgICAgIHByZWMgPSAwOworICAgICAgICBpZiAoKmYgPT0gJy4nKSB7CisgICAgICAgICAgICBmKys7CisgICAgICAgICAgICBmb3IgKDsgUHlfSVNESUdJVCgqZik7IGYrKykgeworICAgICAgICAgICAgICAgIHByZWMgPSAocHJlYyAqIDEwKSArICgqZiAtICcwJyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB3aGlsZSAoKmYgJiYgKmYgIT0gJyUnICYmICFQeV9JU0FMUEhBKCpmKSkKKyAgICAgICAgICAgIGYrKzsKKworICAgICAgICAvKiBoYW5kbGUgdGhlIGxvbmcgZmxhZyAoJ2wnKSwgYnV0IG9ubHkgZm9yICVsZCBhbmQgJWx1LgorICAgICAgICAgICBvdGhlcnMgY2FuIGJlIGFkZGVkIHdoZW4gbmVjZXNzYXJ5LiAqLworICAgICAgICBsb25nZmxhZyA9IDA7CisgICAgICAgIGlmICgqZiA9PSAnbCcgJiYgKGZbMV0gPT0gJ2QnIHx8IGZbMV0gPT0gJ3UnKSkgeworICAgICAgICAgICAgbG9uZ2ZsYWcgPSAxOworICAgICAgICAgICAgKytmOworICAgICAgICB9CisKKyAgICAgICAgLyogaGFuZGxlIHRoZSBzaXplX3QgZmxhZyAoJ3onKS4gKi8KKyAgICAgICAgc2l6ZV90ZmxhZyA9IDA7CisgICAgICAgIGlmICgqZiA9PSAneicgJiYgKGZbMV0gPT0gJ2QnIHx8IGZbMV0gPT0gJ3UnKSkgeworICAgICAgICAgICAgc2l6ZV90ZmxhZyA9IDE7CisgICAgICAgICAgICArK2Y7CisgICAgICAgIH0KKworICAgICAgICAvKiBzdWJ0cmFjdCBieXRlcyBwcmVhbGxvY2F0ZWQgZm9yIHRoZSBmb3JtYXQgc3RyaW5nCisgICAgICAgICAgIChleDogMiBmb3IgIiVzIikgKi8KKyAgICAgICAgd3JpdGVyLm1pbl9zaXplIC09IChmIC0gcCArIDEpOworCisgICAgICAgIHN3aXRjaCAoKmYpIHsKKyAgICAgICAgY2FzZSAnYyc6CisgICAgICAgIHsKKyAgICAgICAgICAgIGludCBjID0gdmFfYXJnKHZhcmdzLCBpbnQpOworICAgICAgICAgICAgaWYgKGMgPCAwIHx8IGMgPiAyNTUpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlB5Qnl0ZXNfRnJvbUZvcm1hdFYoKTogJWMgZm9ybWF0ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdHMgYW4gaW50ZWdlciBpbiByYW5nZSBbMDsgMjU1XSIpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB3cml0ZXIubWluX3NpemUrKzsKKyAgICAgICAgICAgICpzKysgPSAodW5zaWduZWQgY2hhciljOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlICdkJzoKKyAgICAgICAgICAgIGlmIChsb25nZmxhZykKKyAgICAgICAgICAgICAgICBzcHJpbnRmKGJ1ZmZlciwgIiVsZCIsIHZhX2FyZyh2YXJncywgbG9uZykpOworICAgICAgICAgICAgZWxzZSBpZiAoc2l6ZV90ZmxhZykKKyAgICAgICAgICAgICAgICBzcHJpbnRmKGJ1ZmZlciwgIiUiIFBZX0ZPUk1BVF9TSVpFX1QgImQiLAorICAgICAgICAgICAgICAgICAgICB2YV9hcmcodmFyZ3MsIFB5X3NzaXplX3QpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzcHJpbnRmKGJ1ZmZlciwgIiVkIiwgdmFfYXJnKHZhcmdzLCBpbnQpKTsKKyAgICAgICAgICAgIGFzc2VydChzdHJsZW4oYnVmZmVyKSA8IHNpemVvZihidWZmZXIpKTsKKyAgICAgICAgICAgIFdSSVRFX0JZVEVTKGJ1ZmZlcik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlICd1JzoKKyAgICAgICAgICAgIGlmIChsb25nZmxhZykKKyAgICAgICAgICAgICAgICBzcHJpbnRmKGJ1ZmZlciwgIiVsdSIsCisgICAgICAgICAgICAgICAgICAgIHZhX2FyZyh2YXJncywgdW5zaWduZWQgbG9uZykpOworICAgICAgICAgICAgZWxzZSBpZiAoc2l6ZV90ZmxhZykKKyAgICAgICAgICAgICAgICBzcHJpbnRmKGJ1ZmZlciwgIiUiIFBZX0ZPUk1BVF9TSVpFX1QgInUiLAorICAgICAgICAgICAgICAgICAgICB2YV9hcmcodmFyZ3MsIHNpemVfdCkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNwcmludGYoYnVmZmVyLCAiJXUiLAorICAgICAgICAgICAgICAgICAgICB2YV9hcmcodmFyZ3MsIHVuc2lnbmVkIGludCkpOworICAgICAgICAgICAgYXNzZXJ0KHN0cmxlbihidWZmZXIpIDwgc2l6ZW9mKGJ1ZmZlcikpOworICAgICAgICAgICAgV1JJVEVfQllURVMoYnVmZmVyKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgJ2knOgorICAgICAgICAgICAgc3ByaW50ZihidWZmZXIsICIlaSIsIHZhX2FyZyh2YXJncywgaW50KSk7CisgICAgICAgICAgICBhc3NlcnQoc3RybGVuKGJ1ZmZlcikgPCBzaXplb2YoYnVmZmVyKSk7CisgICAgICAgICAgICBXUklURV9CWVRFUyhidWZmZXIpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAneCc6CisgICAgICAgICAgICBzcHJpbnRmKGJ1ZmZlciwgIiV4IiwgdmFfYXJnKHZhcmdzLCBpbnQpKTsKKyAgICAgICAgICAgIGFzc2VydChzdHJsZW4oYnVmZmVyKSA8IHNpemVvZihidWZmZXIpKTsKKyAgICAgICAgICAgIFdSSVRFX0JZVEVTKGJ1ZmZlcik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlICdzJzoKKyAgICAgICAgewogICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgaW50IGxvbmdmbGFnID0gMDsKLSAgICAgICAgICAgIGludCBzaXplX3RmbGFnID0gMDsKLSAgICAgICAgICAgIC8qIHBhcnNlIHRoZSB3aWR0aC5wcmVjaXNpb24gcGFydCAod2UncmUgb25seQotICAgICAgICAgICAgICAgaW50ZXJlc3RlZCBpbiB0aGUgcHJlY2lzaW9uIHZhbHVlLCBpZiBhbnkpICovCi0gICAgICAgICAgICBuID0gMDsKLSAgICAgICAgICAgIHdoaWxlIChQeV9JU0RJR0lUKCpmKSkKLSAgICAgICAgICAgICAgICBuID0gKG4qMTApICsgKmYrKyAtICcwJzsKLSAgICAgICAgICAgIGlmICgqZiA9PSAnLicpIHsKLSAgICAgICAgICAgICAgICBmKys7Ci0gICAgICAgICAgICAgICAgbiA9IDA7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKFB5X0lTRElHSVQoKmYpKQotICAgICAgICAgICAgICAgICAgICBuID0gKG4qMTApICsgKmYrKyAtICcwJzsKKworICAgICAgICAgICAgcCA9IHZhX2FyZyh2YXJncywgY29uc3QgY2hhciopOworICAgICAgICAgICAgaSA9IHN0cmxlbihwKTsKKyAgICAgICAgICAgIGlmIChwcmVjID4gMCAmJiBpID4gcHJlYykKKyAgICAgICAgICAgICAgICBpID0gcHJlYzsKKyAgICAgICAgICAgIHMgPSBfUHlCeXRlc1dyaXRlcl9Xcml0ZUJ5dGVzKCZ3cml0ZXIsIHMsIHAsIGkpOworICAgICAgICAgICAgaWYgKHMgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlICdwJzoKKyAgICAgICAgICAgIHNwcmludGYoYnVmZmVyLCAiJXAiLCB2YV9hcmcodmFyZ3MsIHZvaWQqKSk7CisgICAgICAgICAgICBhc3NlcnQoc3RybGVuKGJ1ZmZlcikgPCBzaXplb2YoYnVmZmVyKSk7CisgICAgICAgICAgICAvKiAlcCBpcyBpbGwtZGVmaW5lZDogIGVuc3VyZSBsZWFkaW5nIDB4LiAqLworICAgICAgICAgICAgaWYgKGJ1ZmZlclsxXSA9PSAnWCcpCisgICAgICAgICAgICAgICAgYnVmZmVyWzFdID0gJ3gnOworICAgICAgICAgICAgZWxzZSBpZiAoYnVmZmVyWzFdICE9ICd4JykgeworICAgICAgICAgICAgICAgIG1lbW1vdmUoYnVmZmVyKzIsIGJ1ZmZlciwgc3RybGVuKGJ1ZmZlcikrMSk7CisgICAgICAgICAgICAgICAgYnVmZmVyWzBdID0gJzAnOworICAgICAgICAgICAgICAgIGJ1ZmZlclsxXSA9ICd4JzsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHdoaWxlICgqZiAmJiAqZiAhPSAnJScgJiYgIVB5X0lTQUxQSEEoKmYpKQotICAgICAgICAgICAgICAgIGYrKzsKLSAgICAgICAgICAgIC8qIGhhbmRsZSB0aGUgbG9uZyBmbGFnLCBidXQgb25seSBmb3IgJWxkIGFuZCAlbHUuCi0gICAgICAgICAgICAgICBvdGhlcnMgY2FuIGJlIGFkZGVkIHdoZW4gbmVjZXNzYXJ5LiAqLwotICAgICAgICAgICAgaWYgKCpmID09ICdsJyAmJiAoZlsxXSA9PSAnZCcgfHwgZlsxXSA9PSAndScpKSB7Ci0gICAgICAgICAgICAgICAgbG9uZ2ZsYWcgPSAxOwotICAgICAgICAgICAgICAgICsrZjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8qIGhhbmRsZSB0aGUgc2l6ZV90IGZsYWcuICovCi0gICAgICAgICAgICBpZiAoKmYgPT0gJ3onICYmIChmWzFdID09ICdkJyB8fCBmWzFdID09ICd1JykpIHsKLSAgICAgICAgICAgICAgICBzaXplX3RmbGFnID0gMTsKLSAgICAgICAgICAgICAgICArK2Y7CisgICAgICAgICAgICBXUklURV9CWVRFUyhidWZmZXIpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAnJSc6CisgICAgICAgICAgICB3cml0ZXIubWluX3NpemUrKzsKKyAgICAgICAgICAgICpzKysgPSAnJSc7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgaWYgKCpmID09IDApIHsKKyAgICAgICAgICAgICAgICAvKiBmaXggbWluX3NpemUgaWYgd2UgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBmb3JtYXQgc3RyaW5nICovCisgICAgICAgICAgICAgICAgd3JpdGVyLm1pbl9zaXplKys7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHN3aXRjaCAoKmYpIHsKLSAgICAgICAgICAgIGNhc2UgJ2MnOgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGludCBjID0gdmFfYXJnKHZhcmdzLCBpbnQpOwotICAgICAgICAgICAgICAgIC8qIGMgaGFzIGJlZW4gY2hlY2tlZCBmb3Igb3ZlcmZsb3cgaW4gdGhlIGZpcnN0IHN0ZXAgKi8KLSAgICAgICAgICAgICAgICAqcysrID0gKHVuc2lnbmVkIGNoYXIpYzsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhc2UgJ2QnOgotICAgICAgICAgICAgICAgIGlmIChsb25nZmxhZykKLSAgICAgICAgICAgICAgICAgICAgc3ByaW50ZihzLCAiJWxkIiwgdmFfYXJnKHZhcmdzLCBsb25nKSk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoc2l6ZV90ZmxhZykKLSAgICAgICAgICAgICAgICAgICAgc3ByaW50ZihzLCAiJSIgUFlfRk9STUFUX1NJWkVfVCAiZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcodmFyZ3MsIFB5X3NzaXplX3QpKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHNwcmludGYocywgIiVkIiwgdmFfYXJnKHZhcmdzLCBpbnQpKTsKLSAgICAgICAgICAgICAgICBzICs9IHN0cmxlbihzKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgJ3UnOgotICAgICAgICAgICAgICAgIGlmIChsb25nZmxhZykKLSAgICAgICAgICAgICAgICAgICAgc3ByaW50ZihzLCAiJWx1IiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZyh2YXJncywgdW5zaWduZWQgbG9uZykpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNpemVfdGZsYWcpCi0gICAgICAgICAgICAgICAgICAgIHNwcmludGYocywgIiUiIFBZX0ZPUk1BVF9TSVpFX1QgInUiLAotICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKHZhcmdzLCBzaXplX3QpKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHNwcmludGYocywgIiV1IiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZyh2YXJncywgdW5zaWduZWQgaW50KSk7Ci0gICAgICAgICAgICAgICAgcyArPSBzdHJsZW4ocyk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICdpJzoKLSAgICAgICAgICAgICAgICBzcHJpbnRmKHMsICIlaSIsIHZhX2FyZyh2YXJncywgaW50KSk7Ci0gICAgICAgICAgICAgICAgcyArPSBzdHJsZW4ocyk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICd4JzoKLSAgICAgICAgICAgICAgICBzcHJpbnRmKHMsICIleCIsIHZhX2FyZyh2YXJncywgaW50KSk7Ci0gICAgICAgICAgICAgICAgcyArPSBzdHJsZW4ocyk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICdzJzoKLSAgICAgICAgICAgICAgICBwID0gdmFfYXJnKHZhcmdzLCBjaGFyKik7Ci0gICAgICAgICAgICAgICAgaSA9IHN0cmxlbihwKTsKLSAgICAgICAgICAgICAgICBpZiAobiA+IDAgJiYgaSA+IG4pCi0gICAgICAgICAgICAgICAgICAgIGkgPSBuOwotICAgICAgICAgICAgICAgIFB5X01FTUNQWShzLCBwLCBpKTsKLSAgICAgICAgICAgICAgICBzICs9IGk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICdwJzoKLSAgICAgICAgICAgICAgICBzcHJpbnRmKHMsICIlcCIsIHZhX2FyZyh2YXJncywgdm9pZCopKTsKLSAgICAgICAgICAgICAgICAvKiAlcCBpcyBpbGwtZGVmaW5lZDogIGVuc3VyZSBsZWFkaW5nIDB4LiAqLwotICAgICAgICAgICAgICAgIGlmIChzWzFdID09ICdYJykKLSAgICAgICAgICAgICAgICAgICAgc1sxXSA9ICd4JzsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChzWzFdICE9ICd4JykgewotICAgICAgICAgICAgICAgICAgICBtZW1tb3ZlKHMrMiwgcywgc3RybGVuKHMpKzEpOwotICAgICAgICAgICAgICAgICAgICBzWzBdID0gJzAnOwotICAgICAgICAgICAgICAgICAgICBzWzFdID0gJ3gnOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBzICs9IHN0cmxlbihzKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgJyUnOgotICAgICAgICAgICAgICAgICpzKysgPSAnJSc7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHN0cmNweShzLCBwKTsKLSAgICAgICAgICAgICAgICBzICs9IHN0cmxlbihzKTsKLSAgICAgICAgICAgICAgICBnb3RvIGVuZDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAqcysrID0gKmY7CisgICAgICAgICAgICAvKiBpbnZhbGlkIGZvcm1hdCBzdHJpbmc6IGNvcHkgdW5mb3JtYXR0ZWQgc3RyaW5nIGFuZCBleGl0ICovCisgICAgICAgICAgICBXUklURV9CWVRFUyhwKTsKKyAgICAgICAgICAgIHJldHVybiBfUHlCeXRlc1dyaXRlcl9GaW5pc2goJndyaXRlciwgcyk7CisgICAgICAgIH0KICAgICB9CiAKLSBlbmQ6Ci0gICAgX1B5Qnl0ZXNfUmVzaXplKCZzdHJpbmcsIHMgLSBQeUJ5dGVzX0FTX1NUUklORyhzdHJpbmcpKTsKLSAgICByZXR1cm4gc3RyaW5nOworI3VuZGVmIFdSSVRFX0JZVEVTCisKKyAgICByZXR1cm4gX1B5Qnl0ZXNXcml0ZXJfRmluaXNoKCZ3cml0ZXIsIHMpOworCisgZXJyb3I6CisgICAgX1B5Qnl0ZXNXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKKyAgICByZXR1cm4gTlVMTDsKIH0KIAogUHlPYmplY3QgKgpAQCAtNDA5LDEyICs0MDcsMTQgQEAKIAogLyogUmV0dXJucyBhIG5ldyByZWZlcmVuY2UgdG8gYSBQeUJ5dGVzIG9iamVjdCwgb3IgTlVMTCBvbiBmYWlsdXJlLiAqLwogCi1zdGF0aWMgUHlPYmplY3QgKgotZm9ybWF0ZmxvYXQoUHlPYmplY3QgKnYsIGludCBmbGFncywgaW50IHByZWMsIGludCB0eXBlKQorc3RhdGljIGNoYXIqCitmb3JtYXRmbG9hdChQeU9iamVjdCAqdiwgaW50IGZsYWdzLCBpbnQgcHJlYywgaW50IHR5cGUsCisgICAgICAgICAgICBQeU9iamVjdCAqKnBfcmVzdWx0LCBfUHlCeXRlc1dyaXRlciAqd3JpdGVyLCBjaGFyICpzdHIpCiB7CiAgICAgY2hhciAqcDsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIGRvdWJsZSB4OworICAgIHNpemVfdCBsZW47CiAKICAgICB4ID0gUHlGbG9hdF9Bc0RvdWJsZSh2KTsKICAgICBpZiAoeCA9PSAtMS4wICYmIFB5RXJyX09jY3VycmVkKCkpIHsKQEAgLTQzMSw5ICs0MzEsMjIgQEAKIAogICAgIGlmIChwID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUocCwgc3RybGVuKHApKTsKKworICAgIGxlbiA9IHN0cmxlbihwKTsKKyAgICBpZiAod3JpdGVyICE9IE5VTEwpIHsKKyAgICAgICAgc3RyID0gX1B5Qnl0ZXNXcml0ZXJfUHJlcGFyZSh3cml0ZXIsIHN0ciwgbGVuKTsKKyAgICAgICAgaWYgKHN0ciA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIG1lbWNweShzdHIsIHAsIGxlbik7CisgICAgICAgIFB5TWVtX0ZyZWUocCk7CisgICAgICAgIHN0ciArPSBsZW47CisgICAgICAgIHJldHVybiBzdHI7CisgICAgfQorCisgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShwLCBsZW4pOwogICAgIFB5TWVtX0ZyZWUocCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICAqcF9yZXN1bHQgPSByZXN1bHQ7CisgICAgcmV0dXJuIHN0cjsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTQ3MywxMSArNDg2LDExIEBACiBzdGF0aWMgaW50CiBieXRlX2NvbnZlcnRlcihQeU9iamVjdCAqYXJnLCBjaGFyICpwKQogewotICAgIGlmIChQeUJ5dGVzX0NoZWNrKGFyZykgJiYgUHlCeXRlc19TaXplKGFyZykgPT0gMSkgeworICAgIGlmIChQeUJ5dGVzX0NoZWNrKGFyZykgJiYgUHlCeXRlc19HRVRfU0laRShhcmcpID09IDEpIHsKICAgICAgICAgKnAgPSBQeUJ5dGVzX0FTX1NUUklORyhhcmcpWzBdOwogICAgICAgICByZXR1cm4gMTsKICAgICB9Ci0gICAgZWxzZSBpZiAoUHlCeXRlQXJyYXlfQ2hlY2soYXJnKSAmJiBQeUJ5dGVBcnJheV9TaXplKGFyZykgPT0gMSkgeworICAgIGVsc2UgaWYgKFB5Qnl0ZUFycmF5X0NoZWNrKGFyZykgJiYgUHlCeXRlQXJyYXlfR0VUX1NJWkUoYXJnKSA9PSAxKSB7CiAgICAgICAgICpwID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKGFyZylbMF07CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KQEAgLTU1NywzNiArNTcwLDM2IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLS8qIGZtdCUodjEsdjIsLi4uKSBpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG8gc3ByaW50ZihmbXQsIHYxLCB2MiwgLi4uKQotCi0gICBGT1JNQVRCVUZMRU4gaXMgdGhlIGxlbmd0aCBvZiB0aGUgYnVmZmVyIGluIHdoaWNoIHRoZSBpbnRzICYKLSAgIGNoYXJzIGFyZSBmb3JtYXR0ZWQuIFhYWCBUaGlzIGlzIGEgbWFnaWMgbnVtYmVyLiBFYWNoIGZvcm1hdHRpbmcKLSAgIHJvdXRpbmUgZG9lcyBib3VuZHMgY2hlY2tpbmcgdG8gZW5zdXJlIG5vIG92ZXJmbG93LCBidXQgYSBiZXR0ZXIKLSAgIHNvbHV0aW9uIG1heSBiZSB0byBtYWxsb2MgYSBidWZmZXIgb2YgYXBwcm9wcmlhdGUgc2l6ZSBmb3IgZWFjaAotICAgZm9ybWF0LiBGb3Igbm93LCB0aGUgY3VycmVudCBzb2x1dGlvbiBpcyBzdWZmaWNpZW50LgotKi8KLSNkZWZpbmUgRk9STUFUQlVGTEVOIChzaXplX3QpMTIwCisvKiBmbXQlKHYxLHYyLC4uLikgaXMgcm91Z2hseSBlcXVpdmFsZW50IHRvIHNwcmludGYoZm10LCB2MSwgdjIsIC4uLikgKi8KIAogUHlPYmplY3QgKgotX1B5Qnl0ZXNfRm9ybWF0KFB5T2JqZWN0ICpmb3JtYXQsIFB5T2JqZWN0ICphcmdzKQorX1B5Qnl0ZXNfRm9ybWF0RXgoY29uc3QgY2hhciAqZm9ybWF0LCBQeV9zc2l6ZV90IGZvcm1hdF9sZW4sCisgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncywgaW50IHVzZV9ieXRlYXJyYXkpCiB7Ci0gICAgY2hhciAqZm10LCAqcmVzOworICAgIGNvbnN0IGNoYXIgKmZtdDsKKyAgICBjaGFyICpyZXM7CiAgICAgUHlfc3NpemVfdCBhcmdsZW4sIGFyZ2lkeDsKLSAgICBQeV9zc2l6ZV90IHJlc2xlbiwgcmVzY250LCBmbXRjbnQ7CisgICAgUHlfc3NpemVfdCBmbXRjbnQ7CiAgICAgaW50IGFyZ3Nfb3duZWQgPSAwOwotICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgUHlPYmplY3QgKmRpY3QgPSBOVUxMOwotICAgIGlmIChmb3JtYXQgPT0gTlVMTCB8fCAhUHlCeXRlc19DaGVjayhmb3JtYXQpIHx8IGFyZ3MgPT0gTlVMTCkgeworICAgIF9QeUJ5dGVzV3JpdGVyIHdyaXRlcjsKKworICAgIGlmIChhcmdzID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBmbXQgPSBQeUJ5dGVzX0FTX1NUUklORyhmb3JtYXQpOwotICAgIGZtdGNudCA9IFB5Qnl0ZXNfR0VUX1NJWkUoZm9ybWF0KTsKLSAgICByZXNsZW4gPSByZXNjbnQgPSBmbXRjbnQgKyAxMDA7Ci0gICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY2hhciAqKU5VTEwsIHJlc2xlbik7Ci0gICAgaWYgKHJlc3VsdCA9PSBOVUxMKQorICAgIGZtdCA9IGZvcm1hdDsKKyAgICBmbXRjbnQgPSBmb3JtYXRfbGVuOworCisgICAgX1B5Qnl0ZXNXcml0ZXJfSW5pdCgmd3JpdGVyKTsKKyAgICB3cml0ZXIudXNlX2J5dGVhcnJheSA9IHVzZV9ieXRlYXJyYXk7CisKKyAgICByZXMgPSBfUHlCeXRlc1dyaXRlcl9BbGxvYygmd3JpdGVyLCBmbXRjbnQpOworICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzID0gUHlCeXRlc19Bc1N0cmluZyhyZXN1bHQpOworICAgIGlmICghdXNlX2J5dGVhcnJheSkKKyAgICAgICAgd3JpdGVyLm92ZXJhbGxvY2F0ZSA9IDE7CisKICAgICBpZiAoUHlUdXBsZV9DaGVjayhhcmdzKSkgewogICAgICAgICBhcmdsZW4gPSBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpOwogICAgICAgICBhcmdpZHggPSAwOwpAQCAtNjAwLDE4ICs2MTMsMjMgQEAKICAgICAgICAgIVB5Qnl0ZUFycmF5X0NoZWNrKGFyZ3MpKSB7CiAgICAgICAgICAgICBkaWN0ID0gYXJnczsKICAgICB9CisKICAgICB3aGlsZSAoLS1mbXRjbnQgPj0gMCkgewogICAgICAgICBpZiAoKmZtdCAhPSAnJScpIHsKLSAgICAgICAgICAgIGlmICgtLXJlc2NudCA8IDApIHsKLSAgICAgICAgICAgICAgICByZXNjbnQgPSBmbXRjbnQgKyAxMDA7Ci0gICAgICAgICAgICAgICAgcmVzbGVuICs9IHJlc2NudDsKLSAgICAgICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXN1bHQsIHJlc2xlbikpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIHJlcyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCkKLSAgICAgICAgICAgICAgICAgICAgKyByZXNsZW4gLSByZXNjbnQ7Ci0gICAgICAgICAgICAgICAgLS1yZXNjbnQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAqcmVzKysgPSAqZm10Kys7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICAgICAgICAgIGNoYXIgKnBvczsKKworICAgICAgICAgICAgcG9zID0gc3RyY2hyKGZtdCArIDEsICclJyk7CisgICAgICAgICAgICBpZiAocG9zICE9IE5VTEwpCisgICAgICAgICAgICAgICAgbGVuID0gcG9zIC0gZm10OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGxlbiA9IGZvcm1hdF9sZW4gLSAoZm10IC0gZm9ybWF0KTsKKyAgICAgICAgICAgIGFzc2VydChsZW4gIT0gMCk7CisKKyAgICAgICAgICAgIG1lbWNweShyZXMsIGZtdCwgbGVuKTsKKyAgICAgICAgICAgIHJlcyArPSBsZW47CisgICAgICAgICAgICBmbXQgKz0gbGVuOworICAgICAgICAgICAgZm10Y250IC09IChsZW4gLSAxKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIC8qIEdvdCBhIGZvcm1hdCBzcGVjaWZpZXIgKi8KQEAgLTYyNiwxMCArNjQ0LDE0IEBACiAgICAgICAgICAgICBpbnQgc2lnbjsKICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuID0gMDsKICAgICAgICAgICAgIGNoYXIgb25lY2hhcjsgLyogRm9yIGJ5dGVfY29udmVydGVyKCkgKi8KKyAgICAgICAgICAgIFB5X3NzaXplX3QgYWxsb2M7CisjaWZkZWYgUHlfREVCVUcKKyAgICAgICAgICAgIGNoYXIgKmJlZm9yZTsKKyNlbmRpZgogCiAgICAgICAgICAgICBmbXQrKzsKICAgICAgICAgICAgIGlmICgqZm10ID09ICcoJykgewotICAgICAgICAgICAgICAgIGNoYXIgKmtleXN0YXJ0OworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmtleXN0YXJ0OwogICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qga2V5bGVuOwogICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprZXk7CiAgICAgICAgICAgICAgICAgaW50IHBjb3VudCA9IDE7CkBAIC02NzMsNiArNjk1LDggQEAKICAgICAgICAgICAgICAgICBhcmdsZW4gPSAtMTsKICAgICAgICAgICAgICAgICBhcmdpZHggPSAtMjsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogUGFyc2UgZmxhZ3MuIEV4YW1wbGU6ICIlK2kiID0+IGZsYWdzPUZfU0lHTi4gKi8KICAgICAgICAgICAgIHdoaWxlICgtLWZtdGNudCA+PSAwKSB7CiAgICAgICAgICAgICAgICAgc3dpdGNoIChjID0gKmZtdCsrKSB7CiAgICAgICAgICAgICAgICAgY2FzZSAnLSc6IGZsYWdzIHw9IEZfTEpVU1Q7IGNvbnRpbnVlOwpAQCAtNjgzLDYgKzcwNyw4IEBACiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBQYXJzZSB3aWR0aC4gRXhhbXBsZTogIiUxMHMiID0+IHdpZHRoPTEwICovCiAgICAgICAgICAgICBpZiAoYyA9PSAnKicpIHsKICAgICAgICAgICAgICAgICB2ID0gZ2V0bmV4dGFyZyhhcmdzLCBhcmdsZW4sICZhcmdpZHgpOwogICAgICAgICAgICAgICAgIGlmICh2ID09IE5VTEwpCkBAIC03MTcsNiArNzQzLDggQEAKICAgICAgICAgICAgICAgICAgICAgd2lkdGggPSB3aWR0aCoxMCArIChjIC0gJzAnKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIFBhcnNlIHByZWNpc2lvbi4gRXhhbXBsZTogIiUuM2YiID0+IHByZWM9MyAqLwogICAgICAgICAgICAgaWYgKGMgPT0gJy4nKSB7CiAgICAgICAgICAgICAgICAgcHJlYyA9IDA7CiAgICAgICAgICAgICAgICAgaWYgKC0tZm10Y250ID49IDApCkBAIC03NzEsMTMgKzc5OSwxOSBAQAogICAgICAgICAgICAgICAgIGlmICh2ID09IE5VTEwpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChmbXRjbnQgPCAwKSB7CisgICAgICAgICAgICAgICAgLyogbGFzdCB3cml0ZXI6IGRpc2FibGUgd3JpdGVyIG92ZXJhbGxvY2F0aW9uICovCisgICAgICAgICAgICAgICAgd3JpdGVyLm92ZXJhbGxvY2F0ZSA9IDA7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIHNpZ24gPSAwOwogICAgICAgICAgICAgZmlsbCA9ICcgJzsKICAgICAgICAgICAgIHN3aXRjaCAoYykgewogICAgICAgICAgICAgY2FzZSAnJSc6Ci0gICAgICAgICAgICAgICAgcGJ1ZiA9ICIlIjsKLSAgICAgICAgICAgICAgICBsZW4gPSAxOwotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICpyZXMrKyA9ICclJzsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKwogICAgICAgICAgICAgY2FzZSAncic6CiAgICAgICAgICAgICAgICAgLy8gJXIgaXMgb25seSBmb3IgMi8zIGNvZGU7IDMgb25seSBjb2RlIHNob3VsZCB1c2UgJWEKICAgICAgICAgICAgIGNhc2UgJ2EnOgpAQCAtNzkwLDYgKzgyNCw3IEBACiAgICAgICAgICAgICAgICAgaWYgKHByZWMgPj0gMCAmJiBsZW4gPiBwcmVjKQogICAgICAgICAgICAgICAgICAgICBsZW4gPSBwcmVjOwogICAgICAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgICAgICBjYXNlICdzJzoKICAgICAgICAgICAgICAgICAvLyAlcyBpcyBvbmx5IGZvciAyLzMgY29kZTsgMyBvbmx5IGNvZGUgc2hvdWxkIHVzZSAlYgogICAgICAgICAgICAgY2FzZSAnYic6CkBAIC03OTksMTIgKzgzNCw0OSBAQAogICAgICAgICAgICAgICAgIGlmIChwcmVjID49IDAgJiYgbGVuID4gcHJlYykKICAgICAgICAgICAgICAgICAgICAgbGVuID0gcHJlYzsKICAgICAgICAgICAgICAgICBicmVhazsKKwogICAgICAgICAgICAgY2FzZSAnaSc6CiAgICAgICAgICAgICBjYXNlICdkJzoKICAgICAgICAgICAgIGNhc2UgJ3UnOgogICAgICAgICAgICAgY2FzZSAnbyc6CiAgICAgICAgICAgICBjYXNlICd4JzoKICAgICAgICAgICAgIGNhc2UgJ1gnOgorICAgICAgICAgICAgICAgIGlmIChQeUxvbmdfQ2hlY2tFeGFjdCh2KQorICAgICAgICAgICAgICAgICAgICAmJiB3aWR0aCA9PSAtMSAmJiBwcmVjID09IC0xCisgICAgICAgICAgICAgICAgICAgICYmICEoZmxhZ3MgJiAoRl9TSUdOIHwgRl9CTEFOSykpCisgICAgICAgICAgICAgICAgICAgICYmIGMgIT0gJ1gnKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgLyogRmFzdCBwYXRoICovCisgICAgICAgICAgICAgICAgICAgIGludCBhbHRlcm5hdGUgPSBmbGFncyAmIEZfQUxUOworICAgICAgICAgICAgICAgICAgICBpbnQgYmFzZTsKKworICAgICAgICAgICAgICAgICAgICBzd2l0Y2goYykKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQoMCAmJiAiJ3R5cGUnIG5vdCBpbiBbZGl1b3hYXSIpOworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZCc6CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3UnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgPSAxMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ28nOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgPSA4OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAneCc6CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdYJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlID0gMTY7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAvKiBGYXN0IHBhdGggKi8KKyAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm1pbl9zaXplIC09IDI7IC8qIHNpemUgcHJlYWxsb2NhdGVkIGZvciAiJWQiICovCisgICAgICAgICAgICAgICAgICAgIHJlcyA9IF9QeUxvbmdfRm9ybWF0Qnl0ZXNXcml0ZXIoJndyaXRlciwgcmVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYsIGJhc2UsIGFsdGVybmF0ZSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIHRlbXAgPSBmb3JtYXRsb25nKHYsIGZsYWdzLCBwcmVjLCBjKTsKICAgICAgICAgICAgICAgICBpZiAoIXRlbXApCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC04MTUsMTQgKzg4NywyNSBAQAogICAgICAgICAgICAgICAgIGlmIChmbGFncyAmIEZfWkVSTykKICAgICAgICAgICAgICAgICAgICAgZmlsbCA9ICcwJzsKICAgICAgICAgICAgICAgICBicmVhazsKKwogICAgICAgICAgICAgY2FzZSAnZSc6CiAgICAgICAgICAgICBjYXNlICdFJzoKICAgICAgICAgICAgIGNhc2UgJ2YnOgogICAgICAgICAgICAgY2FzZSAnRic6CiAgICAgICAgICAgICBjYXNlICdnJzoKICAgICAgICAgICAgIGNhc2UgJ0cnOgotICAgICAgICAgICAgICAgIHRlbXAgPSBmb3JtYXRmbG9hdCh2LCBmbGFncywgcHJlYywgYyk7Ci0gICAgICAgICAgICAgICAgaWYgKHRlbXAgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBpZiAod2lkdGggPT0gLTEgJiYgcHJlYyA9PSAtMQorICAgICAgICAgICAgICAgICAgICAmJiAhKGZsYWdzICYgKEZfU0lHTiB8IEZfQkxBTkspKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8qIEZhc3QgcGF0aCAqLworICAgICAgICAgICAgICAgICAgICB3cml0ZXIubWluX3NpemUgLT0gMjsgLyogc2l6ZSBwcmVhbGxvY2F0ZWQgZm9yICIlZiIgKi8KKyAgICAgICAgICAgICAgICAgICAgcmVzID0gZm9ybWF0ZmxvYXQodiwgZmxhZ3MsIHByZWMsIGMsIE5VTEwsICZ3cml0ZXIsIHJlcyk7CisgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmICghZm9ybWF0ZmxvYXQodiwgZmxhZ3MsIHByZWMsIGMsICZ0ZW1wLCBOVUxMLCByZXMpKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgICAgIHBidWYgPSBQeUJ5dGVzX0FTX1NUUklORyh0ZW1wKTsKICAgICAgICAgICAgICAgICBsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHRlbXApOwpAQCAtODMwLDIxICs5MTMsMjggQEAKICAgICAgICAgICAgICAgICBpZiAoZmxhZ3MgJiBGX1pFUk8pCiAgICAgICAgICAgICAgICAgICAgIGZpbGwgPSAnMCc7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgICAgIGNhc2UgJ2MnOgogICAgICAgICAgICAgICAgIHBidWYgPSAmb25lY2hhcjsKICAgICAgICAgICAgICAgICBsZW4gPSBieXRlX2NvbnZlcnRlcih2LCAmb25lY2hhcik7CiAgICAgICAgICAgICAgICAgaWYgKCFsZW4pCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgaWYgKHdpZHRoID09IC0xKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIEZhc3QgcGF0aCAqLworICAgICAgICAgICAgICAgICAgICAqcmVzKysgPSBvbmVjaGFyOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAidW5zdXBwb3J0ZWQgZm9ybWF0IGNoYXJhY3RlciAnJWMnICgweCV4KSAiCiAgICAgICAgICAgICAgICAgICAiYXQgaW5kZXggJXpkIiwKICAgICAgICAgICAgICAgICAgIGMsIGMsCi0gICAgICAgICAgICAgICAgICAoUHlfc3NpemVfdCkoZm10IC0gMSAtCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19Bc1N0cmluZyhmb3JtYXQpKSk7CisgICAgICAgICAgICAgICAgICAoUHlfc3NpemVfdCkoZm10IC0gMSAtIGZvcm1hdCkpOwogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGlmIChzaWduKSB7CiAgICAgICAgICAgICAgICAgaWYgKCpwYnVmID09ICctJyB8fCAqcGJ1ZiA9PSAnKycpIHsKICAgICAgICAgICAgICAgICAgICAgc2lnbiA9ICpwYnVmKys7CkBAIC04NTksMjkgKzk0OSwzMSBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHdpZHRoIDwgbGVuKQogICAgICAgICAgICAgICAgIHdpZHRoID0gbGVuOwotICAgICAgICAgICAgaWYgKHJlc2NudCAtIChzaWduICE9IDApIDwgd2lkdGgpIHsKLSAgICAgICAgICAgICAgICByZXNsZW4gLT0gcmVzY250OwotICAgICAgICAgICAgICAgIHJlc2NudCA9IHdpZHRoICsgZm10Y250ICsgMTAwOwotICAgICAgICAgICAgICAgIHJlc2xlbiArPSByZXNjbnQ7Ci0gICAgICAgICAgICAgICAgaWYgKHJlc2xlbiA8IDApIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodGVtcCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXN1bHQsIHJlc2xlbikpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih0ZW1wKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJlcyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCkKLSAgICAgICAgICAgICAgICAgICAgKyByZXNsZW4gLSByZXNjbnQ7CisKKyAgICAgICAgICAgIGFsbG9jID0gd2lkdGg7CisgICAgICAgICAgICBpZiAoc2lnbiAhPSAwICYmIGxlbiA9PSB3aWR0aCkKKyAgICAgICAgICAgICAgICBhbGxvYysrOworICAgICAgICAgICAgLyogMjogc2l6ZSBwcmVhbGxvY2F0ZWQgZm9yICVzICovCisgICAgICAgICAgICBpZiAoYWxsb2MgPiAyKSB7CisgICAgICAgICAgICAgICAgcmVzID0gX1B5Qnl0ZXNXcml0ZXJfUHJlcGFyZSgmd3JpdGVyLCByZXMsIGFsbG9jIC0gMik7CisgICAgICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQorI2lmZGVmIFB5X0RFQlVHCisgICAgICAgICAgICBiZWZvcmUgPSByZXM7CisjZW5kaWYKKworICAgICAgICAgICAgLyogV3JpdGUgdGhlIHNpZ24gaWYgbmVlZGVkICovCiAgICAgICAgICAgICBpZiAoc2lnbikgewogICAgICAgICAgICAgICAgIGlmIChmaWxsICE9ICcgJykKICAgICAgICAgICAgICAgICAgICAgKnJlcysrID0gc2lnbjsKLSAgICAgICAgICAgICAgICByZXNjbnQtLTsKICAgICAgICAgICAgICAgICBpZiAod2lkdGggPiBsZW4pCiAgICAgICAgICAgICAgICAgICAgIHdpZHRoLS07CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIFdyaXRlIHRoZSBudW1lcmljIHByZWZpeCBmb3IgIngiLCAiWCIgYW5kICJvIiBmb3JtYXRzCisgICAgICAgICAgICAgICBpZiB0aGUgYWx0ZXJuYXRlIGZvcm0gaXMgdXNlZC4KKyAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB3cml0ZSAiMHgiIGZvciB0aGUgIiUjeCIgZm9ybWF0LiAqLwogICAgICAgICAgICAgaWYgKChmbGFncyAmIEZfQUxUKSAmJiAoYyA9PSAnbycgfHwgYyA9PSAneCcgfHwgYyA9PSAnWCcpKSB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0KHBidWZbMF0gPT0gJzAnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQocGJ1ZlsxXSA9PSBjKTsKQEAgLTg4OSwxOCArOTgxLDIxIEBACiAgICAgICAgICAgICAgICAgICAgICpyZXMrKyA9ICpwYnVmKys7CiAgICAgICAgICAgICAgICAgICAgICpyZXMrKyA9ICpwYnVmKys7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJlc2NudCAtPSAyOwogICAgICAgICAgICAgICAgIHdpZHRoIC09IDI7CiAgICAgICAgICAgICAgICAgaWYgKHdpZHRoIDwgMCkKICAgICAgICAgICAgICAgICAgICAgd2lkdGggPSAwOwogICAgICAgICAgICAgICAgIGxlbiAtPSAyOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBQYWQgbGVmdCB3aXRoIHRoZSBmaWxsIGNoYXJhY3RlciBpZiBuZWVkZWQgKi8KICAgICAgICAgICAgIGlmICh3aWR0aCA+IGxlbiAmJiAhKGZsYWdzICYgRl9MSlVTVCkpIHsKLSAgICAgICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgICAgIC0tcmVzY250OwotICAgICAgICAgICAgICAgICAgICAqcmVzKysgPSBmaWxsOwotICAgICAgICAgICAgICAgIH0gd2hpbGUgKC0td2lkdGggPiBsZW4pOworICAgICAgICAgICAgICAgIG1lbXNldChyZXMsIGZpbGwsIHdpZHRoIC0gbGVuKTsKKyAgICAgICAgICAgICAgICByZXMgKz0gKHdpZHRoIC0gbGVuKTsKKyAgICAgICAgICAgICAgICB3aWR0aCA9IGxlbjsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogSWYgcGFkZGluZyB3aXRoIHNwYWNlczogd3JpdGUgc2lnbiBpZiBuZWVkZWQgYW5kL29yIG51bWVyaWMKKyAgICAgICAgICAgICAgIHByZWZpeCBpZiB0aGUgYWx0ZXJuYXRlIGZvcm0gaXMgdXNlZCAqLwogICAgICAgICAgICAgaWYgKGZpbGwgPT0gJyAnKSB7CiAgICAgICAgICAgICAgICAgaWYgKHNpZ24pCiAgICAgICAgICAgICAgICAgICAgICpyZXMrKyA9IHNpZ247CkBAIC05MTEsMTMgKzEwMDYsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgKnJlcysrID0gKnBidWYrKzsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeV9NRU1DUFkocmVzLCBwYnVmLCBsZW4pOworCisgICAgICAgICAgICAvKiBDb3B5IGJ5dGVzICovCisgICAgICAgICAgICBtZW1jcHkocmVzLCBwYnVmLCBsZW4pOwogICAgICAgICAgICAgcmVzICs9IGxlbjsKLSAgICAgICAgICAgIHJlc2NudCAtPSBsZW47Ci0gICAgICAgICAgICB3aGlsZSAoLS13aWR0aCA+PSBsZW4pIHsKLSAgICAgICAgICAgICAgICAtLXJlc2NudDsKLSAgICAgICAgICAgICAgICAqcmVzKysgPSAnICc7CisKKyAgICAgICAgICAgIC8qIFBhZCByaWdodCB3aXRoIHRoZSBmaWxsIGNoYXJhY3RlciBpZiBuZWVkZWQgKi8KKyAgICAgICAgICAgIGlmICh3aWR0aCA+IGxlbikgeworICAgICAgICAgICAgICAgIG1lbXNldChyZXMsICcgJywgd2lkdGggLSBsZW4pOworICAgICAgICAgICAgICAgIHJlcyArPSAod2lkdGggLSBsZW4pOwogICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBpZiAoZGljdCAmJiAoYXJnaWR4IDwgYXJnbGVuKSAmJiBjICE9ICclJykgewogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm90IGFsbCBhcmd1bWVudHMgY29udmVydGVkIGR1cmluZyBieXRlcyBmb3JtYXR0aW5nIik7CkBAIC05MjUsMjIgKzEwMjQsMzEgQEAKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgUHlfWERFQ1JFRih0ZW1wKTsKKworI2lmZGVmIFB5X0RFQlVHCisgICAgICAgICAgICAvKiBjaGVjayB0aGF0IHdlIGNvbXB1dGVkIHRoZSBleGFjdCBzaXplIGZvciB0aGlzIHdyaXRlICovCisgICAgICAgICAgICBhc3NlcnQoKHJlcyAtIGJlZm9yZSkgPT0gYWxsb2MpOworI2VuZGlmCiAgICAgICAgIH0gLyogJyUnICovCisKKyAgICAgICAgLyogSWYgb3ZlcmFsbG9jYXRpb24gd2FzIGRpc2FibGVkLCBlbnN1cmUgdGhhdCBpdCB3YXMgdGhlIGxhc3QKKyAgICAgICAgICAgd3JpdGUuIE90aGVyd2lzZSwgd2UgbWlzc2VkIGFuIG9wdGltaXphdGlvbiAqLworICAgICAgICBhc3NlcnQod3JpdGVyLm92ZXJhbGxvY2F0ZSB8fCBmbXRjbnQgPCAwIHx8IHVzZV9ieXRlYXJyYXkpOwogICAgIH0gLyogdW50aWwgZW5kICovCisKICAgICBpZiAoYXJnaWR4IDwgYXJnbGVuICYmICFkaWN0KSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAibm90IGFsbCBhcmd1bWVudHMgY29udmVydGVkIGR1cmluZyBieXRlcyBmb3JtYXR0aW5nIik7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQorCiAgICAgaWYgKGFyZ3Nfb3duZWQpIHsKICAgICAgICAgUHlfREVDUkVGKGFyZ3MpOwogICAgIH0KLSAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXN1bHQsIHJlc2xlbiAtIHJlc2NudCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIF9QeUJ5dGVzV3JpdGVyX0ZpbmlzaCgmd3JpdGVyLCByZXMpOwogCiAgZXJyb3I6Ci0gICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgX1B5Qnl0ZXNXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKICAgICBpZiAoYXJnc19vd25lZCkgewogICAgICAgICBQeV9ERUNSRUYoYXJncyk7CiAgICAgfQpAQCAtOTYwLDYxICsxMDY4LDg4IEBACiAgICB0aGUgc3RyaW5nIGlzIFVURi04IGVuY29kZWQgYW5kIHNob3VsZCBiZSByZS1lbmNvZGVkIGluIHRoZQogICAgc3BlY2lmaWVkIGVuY29kaW5nLiAgKi8KIAotUHlPYmplY3QgKlB5Qnl0ZXNfRGVjb2RlRXNjYXBlKGNvbnN0IGNoYXIgKnMsCitzdGF0aWMgY2hhciAqCitfUHlCeXRlc19EZWNvZGVFc2NhcGVSZWNvZGUoY29uc3QgY2hhciAqKnMsIGNvbnN0IGNoYXIgKmVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIGNvbnN0IGNoYXIgKnJlY29kZV9lbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlCeXRlc1dyaXRlciAqd3JpdGVyLCBjaGFyICpwKQoreworICAgIFB5T2JqZWN0ICp1LCAqdzsKKyAgICBjb25zdCBjaGFyKiB0OworCisgICAgdCA9ICpzOworICAgIC8qIERlY29kZSBub24tQVNDSUkgYnl0ZXMgYXMgVVRGLTguICovCisgICAgd2hpbGUgKHQgPCBlbmQgJiYgKCp0ICYgMHg4MCkpCisgICAgICAgIHQrKzsKKyAgICB1ID0gUHlVbmljb2RlX0RlY29kZVVURjgoKnMsIHQgLSAqcywgZXJyb3JzKTsKKyAgICBpZiAodSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIC8qIFJlY29kZSB0aGVtIGluIHRhcmdldCBlbmNvZGluZy4gKi8KKyAgICB3ID0gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyh1LCByZWNvZGVfZW5jb2RpbmcsIGVycm9ycyk7CisgICAgUHlfREVDUkVGKHUpOworICAgIGlmICAodyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBhc3NlcnQoUHlCeXRlc19DaGVjayh3KSk7CisKKyAgICAvKiBBcHBlbmQgYnl0ZXMgdG8gb3V0cHV0IGJ1ZmZlci4gKi8KKyAgICB3cml0ZXItPm1pbl9zaXplLS07ICAgLyogc3VidHJhY3QgMSBwcmVhbGxvY2F0ZWQgYnl0ZSAqLworICAgIHAgPSBfUHlCeXRlc1dyaXRlcl9Xcml0ZUJ5dGVzKHdyaXRlciwgcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyh3KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0dFVF9TSVpFKHcpKTsKKyAgICBQeV9ERUNSRUYodyk7CisgICAgaWYgKHAgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAqcyA9IHQ7CisgICAgcmV0dXJuIHA7Cit9CisKK1B5T2JqZWN0ICpfUHlCeXRlc19EZWNvZGVFc2NhcGUoY29uc3QgY2hhciAqcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCB1bmljb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyZWNvZGVfZW5jb2RpbmcpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlY29kZV9lbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqKmZpcnN0X2ludmFsaWRfZXNjYXBlKQogewogICAgIGludCBjOwotICAgIGNoYXIgKnAsICpidWY7CisgICAgY2hhciAqcDsKICAgICBjb25zdCBjaGFyICplbmQ7Ci0gICAgUHlPYmplY3QgKnY7Ci0gICAgUHlfc3NpemVfdCBuZXdsZW4gPSByZWNvZGVfZW5jb2RpbmcgPyA0KmxlbjpsZW47Ci0gICAgdiA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNoYXIgKilOVUxMLCBuZXdsZW4pOwotICAgIGlmICh2ID09IE5VTEwpCisgICAgX1B5Qnl0ZXNXcml0ZXIgd3JpdGVyOworCisgICAgX1B5Qnl0ZXNXcml0ZXJfSW5pdCgmd3JpdGVyKTsKKworICAgIHAgPSBfUHlCeXRlc1dyaXRlcl9BbGxvYygmd3JpdGVyLCBsZW4pOworICAgIGlmIChwID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHAgPSBidWYgPSBQeUJ5dGVzX0FzU3RyaW5nKHYpOworICAgIHdyaXRlci5vdmVyYWxsb2NhdGUgPSAxOworCisgICAgKmZpcnN0X2ludmFsaWRfZXNjYXBlID0gTlVMTDsKKwogICAgIGVuZCA9IHMgKyBsZW47CiAgICAgd2hpbGUgKHMgPCBlbmQpIHsKICAgICAgICAgaWYgKCpzICE9ICdcXCcpIHsKICAgICAgICAgICBub25fZXNjOgotICAgICAgICAgICAgaWYgKHJlY29kZV9lbmNvZGluZyAmJiAoKnMgJiAweDgwKSkgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp1LCAqdzsKLSAgICAgICAgICAgICAgICBjaGFyICpyOwotICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHQ7Ci0gICAgICAgICAgICAgICAgUHlfc3NpemVfdCBybjsKLSAgICAgICAgICAgICAgICB0ID0gczsKLSAgICAgICAgICAgICAgICAvKiBEZWNvZGUgbm9uLUFTQ0lJIGJ5dGVzIGFzIFVURi04LiAqLwotICAgICAgICAgICAgICAgIHdoaWxlICh0IDwgZW5kICYmICgqdCAmIDB4ODApKSB0Kys7Ci0gICAgICAgICAgICAgICAgdSA9IFB5VW5pY29kZV9EZWNvZGVVVEY4KHMsIHQgLSBzLCBlcnJvcnMpOwotICAgICAgICAgICAgICAgIGlmKCF1KSBnb3RvIGZhaWxlZDsKLQotICAgICAgICAgICAgICAgIC8qIFJlY29kZSB0aGVtIGluIHRhcmdldCBlbmNvZGluZy4gKi8KLSAgICAgICAgICAgICAgICB3ID0gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZygKLSAgICAgICAgICAgICAgICAgICAgdSwgcmVjb2RlX2VuY29kaW5nLCBlcnJvcnMpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih1KTsKLSAgICAgICAgICAgICAgICBpZiAoIXcpICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKLQotICAgICAgICAgICAgICAgIC8qIEFwcGVuZCBieXRlcyB0byBvdXRwdXQgYnVmZmVyLiAqLwotICAgICAgICAgICAgICAgIGFzc2VydChQeUJ5dGVzX0NoZWNrKHcpKTsKLSAgICAgICAgICAgICAgICByID0gUHlCeXRlc19BU19TVFJJTkcodyk7Ci0gICAgICAgICAgICAgICAgcm4gPSBQeUJ5dGVzX0dFVF9TSVpFKHcpOwotICAgICAgICAgICAgICAgIFB5X01FTUNQWShwLCByLCBybik7Ci0gICAgICAgICAgICAgICAgcCArPSBybjsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodyk7Ci0gICAgICAgICAgICAgICAgcyA9IHQ7Ci0gICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKCEocmVjb2RlX2VuY29kaW5nICYmICgqcyAmIDB4ODApKSkgewogICAgICAgICAgICAgICAgICpwKysgPSAqcysrOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgLyogbm9uLUFTQ0lJIGNoYXJhY3RlciBhbmQgbmVlZCB0byByZWNvZGUgKi8KKyAgICAgICAgICAgICAgICBwID0gX1B5Qnl0ZXNfRGVjb2RlRXNjYXBlUmVjb2RlKCZzLCBlbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMsIHJlY29kZV9lbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ3cml0ZXIsIHApOworICAgICAgICAgICAgICAgIGlmIChwID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgfQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KKwogICAgICAgICBzKys7Ci0gICAgICAgIGlmIChzPT1lbmQpIHsKKyAgICAgICAgaWYgKHMgPT0gZW5kKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVHJhaWxpbmcgXFwgaW4gc3RyaW5nIik7CiAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgfQorCiAgICAgICAgIHN3aXRjaCAoKnMrKykgewogICAgICAgICAvKiBYWFggVGhpcyBhc3N1bWVzIEFTQ0lJISAqLwogICAgICAgICBjYXNlICdcbic6IGJyZWFrOwpAQCAtMTAzOSwyOCArMTE3NCwxOCBAQAogICAgICAgICAgICAgKnArKyA9IGM7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAneCc6Ci0gICAgICAgICAgICBpZiAocysxIDwgZW5kICYmIFB5X0lTWERJR0lUKHNbMF0pICYmIFB5X0lTWERJR0lUKHNbMV0pKSB7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHggPSAwOwotICAgICAgICAgICAgICAgIGMgPSBQeV9DSEFSTUFTSygqcyk7Ci0gICAgICAgICAgICAgICAgcysrOwotICAgICAgICAgICAgICAgIGlmIChQeV9JU0RJR0lUKGMpKQotICAgICAgICAgICAgICAgICAgICB4ID0gYyAtICcwJzsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChQeV9JU0xPV0VSKGMpKQotICAgICAgICAgICAgICAgICAgICB4ID0gMTAgKyBjIC0gJ2EnOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgeCA9IDEwICsgYyAtICdBJzsKLSAgICAgICAgICAgICAgICB4ID0geCA8PCA0OwotICAgICAgICAgICAgICAgIGMgPSBQeV9DSEFSTUFTSygqcyk7Ci0gICAgICAgICAgICAgICAgcysrOwotICAgICAgICAgICAgICAgIGlmIChQeV9JU0RJR0lUKGMpKQotICAgICAgICAgICAgICAgICAgICB4ICs9IGMgLSAnMCc7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoUHlfSVNMT1dFUihjKSkKLSAgICAgICAgICAgICAgICAgICAgeCArPSAxMCArIGMgLSAnYSc7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB4ICs9IDEwICsgYyAtICdBJzsKLSAgICAgICAgICAgICAgICAqcCsrID0geDsKLSAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGlmIChzKzEgPCBlbmQpIHsKKyAgICAgICAgICAgICAgICBpbnQgZGlnaXQxLCBkaWdpdDI7CisgICAgICAgICAgICAgICAgZGlnaXQxID0gX1B5TG9uZ19EaWdpdFZhbHVlW1B5X0NIQVJNQVNLKHNbMF0pXTsKKyAgICAgICAgICAgICAgICBkaWdpdDIgPSBfUHlMb25nX0RpZ2l0VmFsdWVbUHlfQ0hBUk1BU0soc1sxXSldOworICAgICAgICAgICAgICAgIGlmIChkaWdpdDEgPCAxNiAmJiBkaWdpdDIgPCAxNikgeworICAgICAgICAgICAgICAgICAgICAqcCsrID0gKHVuc2lnbmVkIGNoYXIpKChkaWdpdDEgPDwgNCkgKyBkaWdpdDIpOworICAgICAgICAgICAgICAgICAgICBzICs9IDI7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qIGludmFsaWQgaGV4YWRlY2ltYWwgZGlnaXRzICovCisKICAgICAgICAgICAgIGlmICghZXJyb3JzIHx8IHN0cmNtcChlcnJvcnMsICJzdHJpY3QiKSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIFxceCBlc2NhcGUgYXQgcG9zaXRpb24gJWQiLApAQCAtMTA4MiwyMSArMTIwNyw0OSBAQAogICAgICAgICAgICAgaWYgKHMgPCBlbmQgJiYgUHlfSVNYRElHSVQoc1swXSkpCiAgICAgICAgICAgICAgICAgcysrOyAvKiBhbmQgYSBoZXhkaWdpdCAqLwogICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGlmICgqZmlyc3RfaW52YWxpZF9lc2NhcGUgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICpmaXJzdF9pbnZhbGlkX2VzY2FwZSA9IHMtMTsgLyogQmFjayB1cCBvbmUgY2hhciwgc2luY2Ugd2UndmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFscmVhZHkgaW5jcmVtZW50ZWQgcy4gKi8KKyAgICAgICAgICAgIH0KICAgICAgICAgICAgICpwKysgPSAnXFwnOwogICAgICAgICAgICAgcy0tOwogICAgICAgICAgICAgZ290byBub25fZXNjOyAvKiBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mIHVuZXNjYXBlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVVEYtOCBieXRlcyBtYXkgZm9sbG93LiAqLwogICAgICAgICB9CiAgICAgfQotICAgIGlmIChwLWJ1ZiA8IG5ld2xlbikKLSAgICAgICAgX1B5Qnl0ZXNfUmVzaXplKCZ2LCBwIC0gYnVmKTsKLSAgICByZXR1cm4gdjsKKworICAgIHJldHVybiBfUHlCeXRlc1dyaXRlcl9GaW5pc2goJndyaXRlciwgcCk7CisKICAgZmFpbGVkOgotICAgIFB5X0RFQ1JFRih2KTsKKyAgICBfUHlCeXRlc1dyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOwogICAgIHJldHVybiBOVUxMOwogfQogCitQeU9iamVjdCAqUHlCeXRlc19EZWNvZGVFc2NhcGUoY29uc3QgY2hhciAqcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCB1bmljb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyZWNvZGVfZW5jb2RpbmcpCit7CisgICAgY29uc3QgY2hhciogZmlyc3RfaW52YWxpZF9lc2NhcGU7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IF9QeUJ5dGVzX0RlY29kZUVzY2FwZShzLCBsZW4sIGVycm9ycywgdW5pY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29kZV9lbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmaXJzdF9pbnZhbGlkX2VzY2FwZSk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoZmlyc3RfaW52YWxpZF9lc2NhcGUgIT0gTlVMTCkgeworICAgICAgICBpZiAoUHlFcnJfV2FybkZvcm1hdChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGVzY2FwZSBzZXF1ZW5jZSAnXFwlYyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZmlyc3RfaW52YWxpZF9lc2NhcGUpIDwgMCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworCit9CiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogLyogb2JqZWN0IGFwaSAqLwogCkBAIC0xMzQ4LDEyICsxNTAxLDEyIEBACiAgICAgfQogICAgIGkgPSAwOwogICAgIGlmIChpIDwgc2l6ZSkgewotICAgICAgICBQeV9NRU1DUFkob3AtPm9iX3N2YWwsIGEtPm9iX3N2YWwsIFB5X1NJWkUoYSkpOworICAgICAgICBtZW1jcHkob3AtPm9iX3N2YWwsIGEtPm9iX3N2YWwsIFB5X1NJWkUoYSkpOwogICAgICAgICBpID0gUHlfU0laRShhKTsKICAgICB9CiAgICAgd2hpbGUgKGkgPCBzaXplKSB7CiAgICAgICAgIGogPSAoaSA8PSBzaXplLWkpICA/ICBpICA6ICBzaXplLWk7Ci0gICAgICAgIFB5X01FTUNQWShvcC0+b2Jfc3ZhbCtpLCBvcC0+b2Jfc3ZhbCwgaik7CisgICAgICAgIG1lbWNweShvcC0+b2Jfc3ZhbCtpLCBvcC0+b2Jfc3ZhbCwgaik7CiAgICAgICAgIGkgKz0gajsKICAgICB9CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKSBvcDsKQEAgLTEzNjIsMjQgKzE1MTUsNyBAQAogc3RhdGljIGludAogYnl0ZXNfY29udGFpbnMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCiB7Ci0gICAgUHlfc3NpemVfdCBpdmFsID0gUHlOdW1iZXJfQXNTc2l6ZV90KGFyZywgUHlFeGNfVmFsdWVFcnJvcik7Ci0gICAgaWYgKGl2YWwgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICBQeV9idWZmZXIgdmFyZzsKLSAgICAgICAgUHlfc3NpemVfdCBwb3M7Ci0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoYXJnLCAmdmFyZywgUHlCVUZfU0lNUExFKSAhPSAwKQotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBwb3MgPSBzdHJpbmdsaWJfZmluZChQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgUHlfU0laRShzZWxmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyZy5idWYsIHZhcmcubGVuLCAwKTsKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmFyZyk7Ci0gICAgICAgIHJldHVybiBwb3MgPj0gMDsKLSAgICB9Ci0gICAgaWYgKGl2YWwgPCAwIHx8IGl2YWwgPj0gMjU2KSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiYnl0ZSBtdXN0IGJlIGluIHJhbmdlKDAsIDI1NikiKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQotICAgIHJldHVybiBtZW1jaHIoUHlCeXRlc19BU19TVFJJTkcoc2VsZiksIChpbnQpIGl2YWwsIFB5X1NJWkUoc2VsZikpICE9IE5VTEw7CisgICAgcmV0dXJuIF9QeV9ieXRlc19jb250YWlucyhQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgUHlCeXRlc19HRVRfU0laRShzZWxmKSwgYXJnKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTEzOTIsNyArMTUyOCw3IEBACiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygodW5zaWduZWQgY2hhcilhLT5vYl9zdmFsW2ldKTsKIH0KIAotUHlfTE9DQUwoaW50KQorc3RhdGljIGludAogYnl0ZXNfY29tcGFyZV9lcShQeUJ5dGVzT2JqZWN0ICphLCBQeUJ5dGVzT2JqZWN0ICpiKQogewogICAgIGludCBjbXA7CkBAIC0xNjI2LDggKzE3NjIsOCBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfc3BsaXRfaW1wbChQeUJ5dGVzT2JqZWN0KnNlbGYsIFB5T2JqZWN0ICpzZXAsIFB5X3NzaXplX3QgbWF4c3BsaXQpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OGJkZTQ0ZGFjYjM2ZWYyZSBpbnB1dD04YjgwOWIzOTA3NGFiYmZhXSovCitieXRlc19zcGxpdF9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzZXAsIFB5X3NzaXplX3QgbWF4c3BsaXQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTIxMjZiNTg0NGMxZDhlZiBpbnB1dD04YjgwOWIzOTA3NGFiYmZhXSovCiB7CiAgICAgUHlfc3NpemVfdCBsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLCBuOwogICAgIGNvbnN0IGNoYXIgKnMgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgKnN1YjsKQEAgLTE2NTEsNyArMTc4Nyw2IEBACiAvKltjbGluaWMgaW5wdXRdCiBieXRlcy5wYXJ0aXRpb24KIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlc09iamVjdCAqIikKICAgICBzZXA6IFB5X2J1ZmZlcgogICAgIC8KIApAQCAtMTY2Nyw3ICsxODAyLDcgQEAKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVzX3BhcnRpdGlvbl9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqc2VwKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWY1MzJiMzkyYTE3ZmY2OTUgaW5wdXQ9YmM4NTVkYzYzY2E5NDlkZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWY1MzJiMzkyYTE3ZmY2OTUgaW5wdXQ9NjFjY2E5NTUxOTQwNjA5OV0qLwogewogICAgIHJldHVybiBzdHJpbmdsaWJfcGFydGl0aW9uKAogICAgICAgICAoUHlPYmplY3QqKSBzZWxmLApAQCAtMTY3OSw3ICsxODE0LDYgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVzLnJwYXJ0aXRpb24KIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlc09iamVjdCAqIikKICAgICBzZXA6IFB5X2J1ZmZlcgogICAgIC8KIApAQCAtMTY5NSw3ICsxODI5LDcgQEAKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVzX3JwYXJ0aXRpb25faW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKnNlcCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xOTFiMTE0Y2JiMDI4ZTUwIGlucHV0PTY1ODhmZmYyNjJhOTE3MGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xOTFiMTE0Y2JiMDI4ZTUwIGlucHV0PTY3ZjY4OWU2M2E2MmQ0NzhdKi8KIHsKICAgICByZXR1cm4gc3RyaW5nbGliX3JwYXJ0aXRpb24oCiAgICAgICAgIChQeU9iamVjdCopIHNlbGYsCkBAIC0xNzEzLDggKzE4NDcsOCBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfcnNwbGl0X2ltcGwoUHlCeXRlc09iamVjdCpzZWxmLCBQeU9iamVjdCAqc2VwLCBQeV9zc2l6ZV90IG1heHNwbGl0KQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTBiNjU3MGI5Nzc5MTFkODggaW5wdXQ9MGY4NmM5ZjI4ZjdkN2I3Yl0qLworYnl0ZXNfcnNwbGl0X2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKnNlcCwgUHlfc3NpemVfdCBtYXhzcGxpdCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iYTY5OGQ5ZWEwMWUxYzhmIGlucHV0PTBmODZjOWYyOGY3ZDdiN2JdKi8KIHsKICAgICBQeV9zc2l6ZV90IGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZiksIG47CiAgICAgY29uc3QgY2hhciAqcyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCAqc3ViOwpAQCAtMTc1Miw4ICsxODg2LDggQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX2pvaW4oUHlCeXRlc09iamVjdCpzZWxmLCBQeU9iamVjdCAqaXRlcmFibGVfb2ZfYnl0ZXMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjM0YWZmMTQ3NjRmZjk5NyBpbnB1dD03ZmUzNzdiOTViZDU0OWQyXSovCitieXRlc19qb2luKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICppdGVyYWJsZV9vZl9ieXRlcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hMDQ2ZjM3OWY2MjZmNmY4IGlucHV0PTdmZTM3N2I5NWJkNTQ5ZDJdKi8KIHsKICAgICByZXR1cm4gc3RyaW5nbGliX2J5dGVzX2pvaW4oKFB5T2JqZWN0KilzZWxmLCBpdGVyYWJsZV9vZl9ieXRlcyk7CiB9CkBAIC0xNzY2LDE1OCArMTkwMCwzMCBAQAogICAgIHJldHVybiBieXRlc19qb2luKChQeUJ5dGVzT2JqZWN0KilzZXAsIHgpOwogfQogCi0vKiBoZWxwZXIgbWFjcm8gdG8gZml4dXAgc3RhcnQvZW5kIHNsaWNlIHZhbHVlcyAqLwotI2RlZmluZSBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBsZW4pICAgICAgICAgXAotICAgIGlmIChlbmQgPiBsZW4pICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGVuZCA9IGxlbjsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBlbHNlIGlmIChlbmQgPCAwKSB7ICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBlbmQgKz0gbGVuOyAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGlmIChlbmQgPCAwKSAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgZW5kID0gMDsgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBpZiAoc3RhcnQgPCAwKSB7ICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzdGFydCArPSBsZW47ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGlmIChzdGFydCA8IDApICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhcnQgPSAwOyAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfQotCi1QeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkKLWJ5dGVzX2ZpbmRfaW50ZXJuYWwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIGludCBkaXIpCi17Ci0gICAgUHlPYmplY3QgKnN1Ym9iajsKLSAgICBjaGFyIGJ5dGU7Ci0gICAgUHlfYnVmZmVyIHN1YmJ1ZjsKLSAgICBjb25zdCBjaGFyICpzdWI7Ci0gICAgUHlfc3NpemVfdCBsZW4sIHN1Yl9sZW47Ci0gICAgUHlfc3NpemVfdCBzdGFydD0wLCBlbmQ9UFlfU1NJWkVfVF9NQVg7Ci0gICAgUHlfc3NpemVfdCByZXM7Ci0KLSAgICBpZiAoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzX2J5dGUoImZpbmQvcmZpbmQvaW5kZXgvcmluZGV4IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncywgJnN1Ym9iaiwgJmJ5dGUsICZzdGFydCwgJmVuZCkpCi0gICAgICAgIHJldHVybiAtMjsKLQotICAgIGlmIChzdWJvYmopIHsKLSAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihzdWJvYmosICZzdWJidWYsIFB5QlVGX1NJTVBMRSkgIT0gMCkKLSAgICAgICAgICAgIHJldHVybiAtMjsKLQotICAgICAgICBzdWIgPSBzdWJidWYuYnVmOwotICAgICAgICBzdWJfbGVuID0gc3ViYnVmLmxlbjsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIHN1YiA9ICZieXRlOwotICAgICAgICBzdWJfbGVuID0gMTsKLSAgICB9Ci0gICAgbGVuID0gUHlCeXRlc19HRVRfU0laRShzZWxmKTsKLQotICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIGxlbik7Ci0gICAgaWYgKGVuZCAtIHN0YXJ0IDwgc3ViX2xlbikKLSAgICAgICAgcmVzID0gLTE7Ci0gICAgZWxzZSBpZiAoc3ViX2xlbiA9PSAxCi0jaWZuZGVmIEhBVkVfTUVNUkNIUgotICAgICAgICAgICAgJiYgZGlyID4gMAotI2VuZGlmCi0gICAgKSB7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgbmVlZGxlID0gKnN1YjsKLSAgICAgICAgaW50IG1vZGUgPSAoZGlyID4gMCkgPyBGQVNUX1NFQVJDSCA6IEZBU1RfUlNFQVJDSDsKLSAgICAgICAgcmVzID0gc3RyaW5nbGliX2Zhc3RzZWFyY2hfbWVtY2hyXzFjaGFyKAotICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZikgKyBzdGFydCwgZW5kIC0gc3RhcnQsCi0gICAgICAgICAgICBuZWVkbGUsIG5lZWRsZSwgbW9kZSk7Ci0gICAgICAgIGlmIChyZXMgPj0gMCkKLSAgICAgICAgICAgIHJlcyArPSBzdGFydDsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmIChkaXIgPiAwKQotICAgICAgICAgICAgcmVzID0gc3RyaW5nbGliX2ZpbmRfc2xpY2UoCi0gICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZiksIGxlbiwKLSAgICAgICAgICAgICAgICBzdWIsIHN1Yl9sZW4sIHN0YXJ0LCBlbmQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXMgPSBzdHJpbmdsaWJfcmZpbmRfc2xpY2UoCi0gICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZiksIGxlbiwKLSAgICAgICAgICAgICAgICBzdWIsIHN1Yl9sZW4sIHN0YXJ0LCBlbmQpOwotICAgIH0KLQotICAgIGlmIChzdWJvYmopCi0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnN1YmJ1Zik7Ci0KLSAgICByZXR1cm4gcmVzOwotfQotCi0KLVB5RG9jX1NUUlZBUihmaW5kX19kb2NfXywKLSJCLmZpbmQoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCi1cblwKLVJldHVybiB0aGUgbG93ZXN0IGluZGV4IGluIEIgd2hlcmUgc3Vic3RyaW5nIHN1YiBpcyBmb3VuZCxcblwKLXN1Y2ggdGhhdCBzdWIgaXMgY29udGFpbmVkIHdpdGhpbiBCW3N0YXJ0OmVuZF0uICBPcHRpb25hbFxuXAotYXJndW1lbnRzIHN0YXJ0IGFuZCBlbmQgYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlIG5vdGF0aW9uLlxuXAotXG5cCi1SZXR1cm4gLTEgb24gZmFpbHVyZS4iKTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVzX2ZpbmQoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlfc3NpemVfdCByZXN1bHQgPSBieXRlc19maW5kX2ludGVybmFsKHNlbGYsIGFyZ3MsICsxKTsKLSAgICBpZiAocmVzdWx0ID09IC0yKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlc3VsdCk7CisgICAgcmV0dXJuIF9QeV9ieXRlc19maW5kKFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLCBhcmdzKTsKIH0KIAotCi1QeURvY19TVFJWQVIoaW5kZXhfX2RvY19fLAotIkIuaW5kZXgoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCi1cblwKLUxpa2UgQi5maW5kKCkgYnV0IHJhaXNlIFZhbHVlRXJyb3Igd2hlbiB0aGUgc3Vic3RyaW5nIGlzIG5vdCBmb3VuZC4iKTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVzX2luZGV4KFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5X3NzaXplX3QgcmVzdWx0ID0gYnl0ZXNfZmluZF9pbnRlcm5hbChzZWxmLCBhcmdzLCArMSk7Ci0gICAgaWYgKHJlc3VsdCA9PSAtMikKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKHJlc3VsdCA9PSAtMSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJzdWJzdHJpbmcgbm90IGZvdW5kIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlc3VsdCk7CisgICAgcmV0dXJuIF9QeV9ieXRlc19pbmRleChQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgUHlCeXRlc19HRVRfU0laRShzZWxmKSwgYXJncyk7CiB9CiAKIAotUHlEb2NfU1RSVkFSKHJmaW5kX19kb2NfXywKLSJCLnJmaW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pIC0+IGludFxuXAotXG5cCi1SZXR1cm4gdGhlIGhpZ2hlc3QgaW5kZXggaW4gQiB3aGVyZSBzdWJzdHJpbmcgc3ViIGlzIGZvdW5kLFxuXAotc3VjaCB0aGF0IHN1YiBpcyBjb250YWluZWQgd2l0aGluIEJbc3RhcnQ6ZW5kXS4gIE9wdGlvbmFsXG5cCi1hcmd1bWVudHMgc3RhcnQgYW5kIGVuZCBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2Ugbm90YXRpb24uXG5cCi1cblwKLVJldHVybiAtMSBvbiBmYWlsdXJlLiIpOwotCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZXNfcmZpbmQoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlfc3NpemVfdCByZXN1bHQgPSBieXRlc19maW5kX2ludGVybmFsKHNlbGYsIGFyZ3MsIC0xKTsKLSAgICBpZiAocmVzdWx0ID09IC0yKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlc3VsdCk7CisgICAgcmV0dXJuIF9QeV9ieXRlc19yZmluZChQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgUHlCeXRlc19HRVRfU0laRShzZWxmKSwgYXJncyk7CiB9CiAKIAotUHlEb2NfU1RSVkFSKHJpbmRleF9fZG9jX18sCi0iQi5yaW5kZXgoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCi1cblwKLUxpa2UgQi5yZmluZCgpIGJ1dCByYWlzZSBWYWx1ZUVycm9yIHdoZW4gdGhlIHN1YnN0cmluZyBpcyBub3QgZm91bmQuIik7Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlc19yaW5kZXgoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlfc3NpemVfdCByZXN1bHQgPSBieXRlc19maW5kX2ludGVybmFsKHNlbGYsIGFyZ3MsIC0xKTsKLSAgICBpZiAocmVzdWx0ID09IC0yKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAocmVzdWx0ID09IC0xKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInN1YnN0cmluZyBub3QgZm91bmQiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzdWx0KTsKKyAgICByZXR1cm4gX1B5X2J5dGVzX3JpbmRleChQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgUHlCeXRlc19HRVRfU0laRShzZWxmKSwgYXJncyk7CiB9CiAKIApAQCAtMjAwNCw3ICsyMDEwLDYgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVzLnN0cmlwCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZXNPYmplY3QgKiIpCiAgICAgYnl0ZXM6IG9iamVjdCA9IE5vbmUKICAgICAvCiAKQEAgLTIwMTUsNyArMjAyMCw3IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlc19zdHJpcF9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpieXRlcykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jN2MyMjhkM2JkMTA0YTFiIGlucHV0PTM3ZGFhNWZhZDEzOTVkOTVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jN2MyMjhkM2JkMTA0YTFiIGlucHV0PThhMzU0NjQwZTRlMGIzZWZdKi8KIHsKICAgICByZXR1cm4gZG9fYXJnc3RyaXAoc2VsZiwgQk9USFNUUklQLCBieXRlcyk7CiB9CkBAIC0yMDIzLDcgKzIwMjgsNiBAQAogLypbY2xpbmljIGlucHV0XQogYnl0ZXMubHN0cmlwCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZXNPYmplY3QgKiIpCiAgICAgYnl0ZXM6IG9iamVjdCA9IE5vbmUKICAgICAvCiAKQEAgLTIwMzQsNyArMjAzOCw3IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlc19sc3RyaXBfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYnl0ZXMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Mjg2MDJlNTg2ZjUyNGU4MiBpbnB1dD04ODgxMWIwOWRmYmMyOTg4XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Mjg2MDJlNTg2ZjUyNGU4MiBpbnB1dD05YmFmZjQzOThjM2Y2ODU3XSovCiB7CiAgICAgcmV0dXJuIGRvX2FyZ3N0cmlwKHNlbGYsIExFRlRTVFJJUCwgYnl0ZXMpOwogfQpAQCAtMjA0Miw3ICsyMDQ2LDYgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVzLnJzdHJpcAogCi0gICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVzT2JqZWN0ICoiKQogICAgIGJ5dGVzOiBvYmplY3QgPSBOb25lCiAgICAgLwogCkBAIC0yMDUzLDgxICsyMDU2LDM3IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlc19yc3RyaXBfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYnl0ZXMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTQ3ZTM4MTVjOTU0NDdkYSBpbnB1dD04ZjkzYzljZDM2MWYwMTQwXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTQ3ZTM4MTVjOTU0NDdkYSBpbnB1dD1iNzhhZjQ0NWM3MjdlMzJiXSovCiB7CiAgICAgcmV0dXJuIGRvX2FyZ3N0cmlwKHNlbGYsIFJJR0hUU1RSSVAsIGJ5dGVzKTsKIH0KIAogCi1QeURvY19TVFJWQVIoY291bnRfX2RvY19fLAotIkIuY291bnQoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCi1cblwKLVJldHVybiB0aGUgbnVtYmVyIG9mIG5vbi1vdmVybGFwcGluZyBvY2N1cnJlbmNlcyBvZiBzdWJzdHJpbmcgc3ViIGluXG5cCi1zdHJpbmcgQltzdGFydDplbmRdLiAgT3B0aW9uYWwgYXJndW1lbnRzIHN0YXJ0IGFuZCBlbmQgYXJlIGludGVycHJldGVkXG5cCi1hcyBpbiBzbGljZSBub3RhdGlvbi4iKTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVzX2NvdW50KFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5T2JqZWN0ICpzdWJfb2JqOwotICAgIGNvbnN0IGNoYXIgKnN0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCAqc3ViOwotICAgIFB5X3NzaXplX3Qgc3ViX2xlbjsKLSAgICBjaGFyIGJ5dGU7Ci0gICAgUHlfc3NpemVfdCBzdGFydCA9IDAsIGVuZCA9IFBZX1NTSVpFX1RfTUFYOwotCi0gICAgUHlfYnVmZmVyIHZzdWI7Ci0gICAgUHlPYmplY3QgKmNvdW50X29iajsKLQotICAgIGlmICghc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHNfYnl0ZSgiY291bnQiLCBhcmdzLCAmc3ViX29iaiwgJmJ5dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydCwgJmVuZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKHN1Yl9vYmopIHsKLSAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihzdWJfb2JqLCAmdnN1YiwgUHlCVUZfU0lNUExFKSAhPSAwKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAgICAgc3ViID0gdnN1Yi5idWY7Ci0gICAgICAgIHN1Yl9sZW4gPSB2c3ViLmxlbjsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIHN1YiA9ICZieXRlOwotICAgICAgICBzdWJfbGVuID0gMTsKLSAgICB9Ci0KLSAgICBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpKTsKLQotICAgIGNvdW50X29iaiA9IFB5TG9uZ19Gcm9tU3NpemVfdCgKLSAgICAgICAgc3RyaW5nbGliX2NvdW50KHN0ciArIHN0YXJ0LCBlbmQgLSBzdGFydCwgc3ViLCBzdWJfbGVuLCBQWV9TU0laRV9UX01BWCkKLSAgICAgICAgKTsKLQotICAgIGlmIChzdWJfb2JqKQotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2c3ViKTsKLQotICAgIHJldHVybiBjb3VudF9vYmo7CisgICAgcmV0dXJuIF9QeV9ieXRlc19jb3VudChQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgUHlCeXRlc19HRVRfU0laRShzZWxmKSwgYXJncyk7CiB9CiAKIAogLypbY2xpbmljIGlucHV0XQogYnl0ZXMudHJhbnNsYXRlCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZXNPYmplY3QgKiIpCiAgICAgdGFibGU6IG9iamVjdAogICAgICAgICBUcmFuc2xhdGlvbiB0YWJsZSwgd2hpY2ggbXVzdCBiZSBhIGJ5dGVzIG9iamVjdCBvZiBsZW5ndGggMjU2LgotICAgIFsKLSAgICBkZWxldGVjaGFyczogb2JqZWN0Ci0gICAgXQogICAgIC8KKyAgICBkZWxldGUgYXMgZGVsZXRlY2hhcnM6IG9iamVjdChjX2RlZmF1bHQ9Ik5VTEwiKSA9IGInJwogCiBSZXR1cm4gYSBjb3B5IHdpdGggZWFjaCBjaGFyYWN0ZXIgbWFwcGVkIGJ5IHRoZSBnaXZlbiB0cmFuc2xhdGlvbiB0YWJsZS4KIAotQWxsIGNoYXJhY3RlcnMgb2NjdXJyaW5nIGluIHRoZSBvcHRpb25hbCBhcmd1bWVudCBkZWxldGVjaGFycyBhcmUgcmVtb3ZlZC4KK0FsbCBjaGFyYWN0ZXJzIG9jY3VycmluZyBpbiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgZGVsZXRlIGFyZSByZW1vdmVkLgogVGhlIHJlbWFpbmluZyBjaGFyYWN0ZXJzIGFyZSBtYXBwZWQgdGhyb3VnaCB0aGUgZ2l2ZW4gdHJhbnNsYXRpb24gdGFibGUuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc190cmFuc2xhdGVfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGFibGUsIGludCBncm91cF9yaWdodF8xLAorYnl0ZXNfdHJhbnNsYXRlX2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKnRhYmxlLAogICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmRlbGV0ZWNoYXJzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTIzM2RmODUwZWI1MGJmOGQgaW5wdXQ9ZDhmYTU1MTlkN2NjNGJlN10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQzYmUzNDM3ZjE5NTYyMTEgaW5wdXQ9MGVjZGYxNTlmNjU0MjMzY10qLwogewogICAgIGNoYXIgKmlucHV0LCAqb3V0cHV0OwogICAgIFB5X2J1ZmZlciB0YWJsZV92aWV3ID0ge05VTEwsIE5VTEx9OwpAQCAtMjE4OCw3ICsyMTQ3LDcgQEAKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdGFibGVfdmlldyk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBvdXRwdXRfc3RhcnQgPSBvdXRwdXQgPSBQeUJ5dGVzX0FzU3RyaW5nKHJlc3VsdCk7CisgICAgb3V0cHV0X3N0YXJ0ID0gb3V0cHV0ID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKICAgICBpbnB1dCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGlucHV0X29iaik7CiAKICAgICBpZiAoZGVsbGVuID09IDAgJiYgdGFibGVfY2hhcnMgIT0gTlVMTCkgewpAQCAtMjI2NCw0OTggKzIyMjMsNiBAQAogICAgIHJldHVybiBfUHlfYnl0ZXNfbWFrZXRyYW5zKGZybSwgdG8pOwogfQogCi0vKiBmaW5kIGFuZCBjb3VudCBjaGFyYWN0ZXJzIGFuZCBzdWJzdHJpbmdzICovCi0KLSNkZWZpbmUgZmluZGNoYXIodGFyZ2V0LCB0YXJnZXRfbGVuLCBjKSAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICgoY2hhciAqKW1lbWNocigoY29uc3Qgdm9pZCAqKSh0YXJnZXQpLCBjLCB0YXJnZXRfbGVuKSkKLQotLyogU3RyaW5nIG9wcyBtdXN0IHJldHVybiBhIHN0cmluZy4gICovCi0vKiBJZiB0aGUgb2JqZWN0IGlzIHN1YmNsYXNzIG9mIHN0cmluZywgY3JlYXRlIGEgY29weSAqLwotUHlfTE9DQUwoUHlCeXRlc09iamVjdCAqKQotcmV0dXJuX3NlbGYoUHlCeXRlc09iamVjdCAqc2VsZikKLXsKLSAgICBpZiAoUHlCeXRlc19DaGVja0V4YWN0KHNlbGYpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKLSAgICAgICAgcmV0dXJuIHNlbGY7Ci0gICAgfQotICAgIHJldHVybiAoUHlCeXRlc09iamVjdCAqKVB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoCi0gICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLAotICAgICAgICBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpKTsKLX0KLQotUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCi1jb3VudGNoYXIoY29uc3QgY2hhciAqdGFyZ2V0LCBQeV9zc2l6ZV90IHRhcmdldF9sZW4sIGNoYXIgYywgUHlfc3NpemVfdCBtYXhjb3VudCkKLXsKLSAgICBQeV9zc2l6ZV90IGNvdW50PTA7Ci0gICAgY29uc3QgY2hhciAqc3RhcnQ9dGFyZ2V0OwotICAgIGNvbnN0IGNoYXIgKmVuZD10YXJnZXQrdGFyZ2V0X2xlbjsKLQotICAgIHdoaWxlICggKHN0YXJ0PWZpbmRjaGFyKHN0YXJ0LCBlbmQtc3RhcnQsIGMpKSAhPSBOVUxMICkgewotICAgICAgICBjb3VudCsrOwotICAgICAgICBpZiAoY291bnQgPj0gbWF4Y291bnQpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgc3RhcnQgKz0gMTsKLSAgICB9Ci0gICAgcmV0dXJuIGNvdW50OwotfQotCi0KLS8qIEFsZ29yaXRobXMgZm9yIGRpZmZlcmVudCBjYXNlcyBvZiBzdHJpbmcgcmVwbGFjZW1lbnQgKi8KLQotLyogbGVuKHNlbGYpPj0xLCBmcm9tPSIiLCBsZW4odG8pPj0xLCBtYXhjb3VudD49MSAqLwotUHlfTE9DQUwoUHlCeXRlc09iamVjdCAqKQotcmVwbGFjZV9pbnRlcmxlYXZlKFB5Qnl0ZXNPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdG9fcywgUHlfc3NpemVfdCB0b19sZW4sCi0gICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKLXsKLSAgICBjaGFyICpzZWxmX3MsICpyZXN1bHRfczsKLSAgICBQeV9zc2l6ZV90IHNlbGZfbGVuLCByZXN1bHRfbGVuOwotICAgIFB5X3NzaXplX3QgY291bnQsIGk7Ci0gICAgUHlCeXRlc09iamVjdCAqcmVzdWx0OwotCi0gICAgc2VsZl9sZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpOwotCi0gICAgLyogMSBhdCB0aGUgZW5kIHBsdXMgMSBhZnRlciBldmVyeSBjaGFyYWN0ZXI7Ci0gICAgICAgY291bnQgPSBtaW4obWF4Y291bnQsIHNlbGZfbGVuICsgMSkgKi8KLSAgICBpZiAobWF4Y291bnQgPD0gc2VsZl9sZW4pCi0gICAgICAgIGNvdW50ID0gbWF4Y291bnQ7Ci0gICAgZWxzZQotICAgICAgICAvKiBDYW4ndCBvdmVyZmxvdzogc2VsZl9sZW4gKyAxIDw9IG1heGNvdW50IDw9IFBZX1NTSVpFX1RfTUFYLiAqLwotICAgICAgICBjb3VudCA9IHNlbGZfbGVuICsgMTsKLQotICAgIC8qIENoZWNrIGZvciBvdmVyZmxvdyAqLwotICAgIC8qICAgcmVzdWx0X2xlbiA9IGNvdW50ICogdG9fbGVuICsgc2VsZl9sZW47ICovCi0gICAgYXNzZXJ0KGNvdW50ID4gMCk7Ci0gICAgaWYgKHRvX2xlbiA+IChQWV9TU0laRV9UX01BWCAtIHNlbGZfbGVuKSAvIGNvdW50KSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInJlcGxhY2VtZW50IGJ5dGVzIGFyZSB0b28gbG9uZyIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmVzdWx0X2xlbiA9IGNvdW50ICogdG9fbGVuICsgc2VsZl9sZW47Ci0KLSAgICBpZiAoISAocmVzdWx0ID0gKFB5Qnl0ZXNPYmplY3QgKikKLSAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgcmVzdWx0X2xlbikpICkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBzZWxmX3MgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKTsKLSAgICByZXN1bHRfcyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7Ci0KLSAgICAvKiBUT0RPOiBzcGVjaWFsIGNhc2Ugc2luZ2xlIGNoYXJhY3Rlciwgd2hpY2ggZG9lc24ndCBuZWVkIG1lbWNweSAqLwotCi0gICAgLyogTGF5IHRoZSBmaXJzdCBvbmUgZG93biAoZ3VhcmFudGVlZCB0aGlzIHdpbGwgb2NjdXIpICovCi0gICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCB0b19zLCB0b19sZW4pOwotICAgIHJlc3VsdF9zICs9IHRvX2xlbjsKLSAgICBjb3VudCAtPSAxOwotCi0gICAgZm9yIChpPTA7IGk8Y291bnQ7IGkrKykgewotICAgICAgICAqcmVzdWx0X3MrKyA9ICpzZWxmX3MrKzsKLSAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCB0b19zLCB0b19sZW4pOwotICAgICAgICByZXN1bHRfcyArPSB0b19sZW47Ci0gICAgfQotCi0gICAgLyogQ29weSB0aGUgcmVzdCBvZiB0aGUgb3JpZ2luYWwgc3RyaW5nICovCi0gICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzZWxmX3MsIHNlbGZfbGVuLWkpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogU3BlY2lhbCBjYXNlIGZvciBkZWxldGluZyBhIHNpbmdsZSBjaGFyYWN0ZXIgKi8KLS8qIGxlbihzZWxmKT49MSwgbGVuKGZyb20pPT0xLCB0bz0iIiwgbWF4Y291bnQ+PTEgKi8KLVB5X0xPQ0FMKFB5Qnl0ZXNPYmplY3QgKikKLXJlcGxhY2VfZGVsZXRlX3NpbmdsZV9jaGFyYWN0ZXIoUHlCeXRlc09iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBmcm9tX2MsIFB5X3NzaXplX3QgbWF4Y291bnQpCi17Ci0gICAgY2hhciAqc2VsZl9zLCAqcmVzdWx0X3M7Ci0gICAgY2hhciAqc3RhcnQsICpuZXh0LCAqZW5kOwotICAgIFB5X3NzaXplX3Qgc2VsZl9sZW4sIHJlc3VsdF9sZW47Ci0gICAgUHlfc3NpemVfdCBjb3VudDsKLSAgICBQeUJ5dGVzT2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICBzZWxmX2xlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZik7Ci0gICAgc2VsZl9zID0gUHlCeXRlc19BU19TVFJJTkcoc2VsZik7Ci0KLSAgICBjb3VudCA9IGNvdW50Y2hhcihzZWxmX3MsIHNlbGZfbGVuLCBmcm9tX2MsIG1heGNvdW50KTsKLSAgICBpZiAoY291bnQgPT0gMCkgewotICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7Ci0gICAgfQotCi0gICAgcmVzdWx0X2xlbiA9IHNlbGZfbGVuIC0gY291bnQ7ICAvKiBmcm9tX2xlbiA9PSAxICovCi0gICAgYXNzZXJ0KHJlc3VsdF9sZW4+PTApOwotCi0gICAgaWYgKCAocmVzdWx0ID0gKFB5Qnl0ZXNPYmplY3QgKikKLSAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCByZXN1bHRfbGVuKSkgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzdWx0X3MgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOwotCi0gICAgc3RhcnQgPSBzZWxmX3M7Ci0gICAgZW5kID0gc2VsZl9zICsgc2VsZl9sZW47Ci0gICAgd2hpbGUgKGNvdW50LS0gPiAwKSB7Ci0gICAgICAgIG5leHQgPSBmaW5kY2hhcihzdGFydCwgZW5kLXN0YXJ0LCBmcm9tX2MpOwotICAgICAgICBpZiAobmV4dCA9PSBOVUxMKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIFB5X01FTUNQWShyZXN1bHRfcywgc3RhcnQsIG5leHQtc3RhcnQpOwotICAgICAgICByZXN1bHRfcyArPSAobmV4dC1zdGFydCk7Ci0gICAgICAgIHN0YXJ0ID0gbmV4dCsxOwotICAgIH0KLSAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHN0YXJ0LCBlbmQtc3RhcnQpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogbGVuKHNlbGYpPj0xLCBsZW4oZnJvbSk+PTIsIHRvPSIiLCBtYXhjb3VudD49MSAqLwotCi1QeV9MT0NBTChQeUJ5dGVzT2JqZWN0ICopCi1yZXBsYWNlX2RlbGV0ZV9zdWJzdHJpbmcoUHlCeXRlc09iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmcm9tX3MsIFB5X3NzaXplX3QgZnJvbV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkgewotICAgIGNoYXIgKnNlbGZfcywgKnJlc3VsdF9zOwotICAgIGNoYXIgKnN0YXJ0LCAqbmV4dCwgKmVuZDsKLSAgICBQeV9zc2l6ZV90IHNlbGZfbGVuLCByZXN1bHRfbGVuOwotICAgIFB5X3NzaXplX3QgY291bnQsIG9mZnNldDsKLSAgICBQeUJ5dGVzT2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICBzZWxmX2xlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZik7Ci0gICAgc2VsZl9zID0gUHlCeXRlc19BU19TVFJJTkcoc2VsZik7Ci0KLSAgICBjb3VudCA9IHN0cmluZ2xpYl9jb3VudChzZWxmX3MsIHNlbGZfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21fcywgZnJvbV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Y291bnQpOwotCi0gICAgaWYgKGNvdW50ID09IDApIHsKLSAgICAgICAgLyogbm8gbWF0Y2hlcyAqLwotICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7Ci0gICAgfQotCi0gICAgcmVzdWx0X2xlbiA9IHNlbGZfbGVuIC0gKGNvdW50ICogZnJvbV9sZW4pOwotICAgIGFzc2VydCAocmVzdWx0X2xlbj49MCk7Ci0KLSAgICBpZiAoIChyZXN1bHQgPSAoUHlCeXRlc09iamVjdCAqKQotICAgICAgICAgIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgcmVzdWx0X2xlbikpID09IE5VTEwgKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJlc3VsdF9zID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKLQotICAgIHN0YXJ0ID0gc2VsZl9zOwotICAgIGVuZCA9IHNlbGZfcyArIHNlbGZfbGVuOwotICAgIHdoaWxlIChjb3VudC0tID4gMCkgewotICAgICAgICBvZmZzZXQgPSBzdHJpbmdsaWJfZmluZChzdGFydCwgZW5kLXN0YXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX3MsIGZyb21fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKLSAgICAgICAgaWYgKG9mZnNldCA9PSAtMSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBuZXh0ID0gc3RhcnQgKyBvZmZzZXQ7Ci0KLSAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzdGFydCwgbmV4dC1zdGFydCk7Ci0KLSAgICAgICAgcmVzdWx0X3MgKz0gKG5leHQtc3RhcnQpOwotICAgICAgICBzdGFydCA9IG5leHQrZnJvbV9sZW47Ci0gICAgfQotICAgIFB5X01FTUNQWShyZXN1bHRfcywgc3RhcnQsIGVuZC1zdGFydCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogbGVuKHNlbGYpPj0xLCBsZW4oZnJvbSk9PWxlbih0byk9PTEsIG1heGNvdW50Pj0xICovCi1QeV9MT0NBTChQeUJ5dGVzT2JqZWN0ICopCi1yZXBsYWNlX3NpbmdsZV9jaGFyYWN0ZXJfaW5fcGxhY2UoUHlCeXRlc09iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGZyb21fYywgY2hhciB0b19jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCi17Ci0gICAgY2hhciAqc2VsZl9zLCAqcmVzdWx0X3MsICpzdGFydCwgKmVuZCwgKm5leHQ7Ci0gICAgUHlfc3NpemVfdCBzZWxmX2xlbjsKLSAgICBQeUJ5dGVzT2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICAvKiBUaGUgcmVzdWx0IHN0cmluZyB3aWxsIGJlIHRoZSBzYW1lIHNpemUgKi8KLSAgICBzZWxmX3MgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKTsKLSAgICBzZWxmX2xlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZik7Ci0KLSAgICBuZXh0ID0gZmluZGNoYXIoc2VsZl9zLCBzZWxmX2xlbiwgZnJvbV9jKTsKLQotICAgIGlmIChuZXh0ID09IE5VTEwpIHsKLSAgICAgICAgLyogTm8gbWF0Y2hlczsgcmV0dXJuIHRoZSBvcmlnaW5hbCBzdHJpbmcgKi8KLSAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwotICAgIH0KLQotICAgIC8qIE5lZWQgdG8gbWFrZSBhIG5ldyBzdHJpbmcgKi8KLSAgICByZXN1bHQgPSAoUHlCeXRlc09iamVjdCAqKSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNlbGZfbGVuKTsKLSAgICBpZiAocmVzdWx0ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlc3VsdF9zID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKLSAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHNlbGZfcywgc2VsZl9sZW4pOwotCi0gICAgLyogY2hhbmdlIGV2ZXJ5dGhpbmcgaW4tcGxhY2UsIHN0YXJ0aW5nIHdpdGggdGhpcyBvbmUgKi8KLSAgICBzdGFydCA9ICByZXN1bHRfcyArIChuZXh0LXNlbGZfcyk7Ci0gICAgKnN0YXJ0ID0gdG9fYzsKLSAgICBzdGFydCsrOwotICAgIGVuZCA9IHJlc3VsdF9zICsgc2VsZl9sZW47Ci0KLSAgICB3aGlsZSAoLS1tYXhjb3VudCA+IDApIHsKLSAgICAgICAgbmV4dCA9IGZpbmRjaGFyKHN0YXJ0LCBlbmQtc3RhcnQsIGZyb21fYyk7Ci0gICAgICAgIGlmIChuZXh0ID09IE5VTEwpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgKm5leHQgPSB0b19jOwotICAgICAgICBzdGFydCA9IG5leHQrMTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBsZW4oc2VsZik+PTEsIGxlbihmcm9tKT09bGVuKHRvKT49MiwgbWF4Y291bnQ+PTEgKi8KLVB5X0xPQ0FMKFB5Qnl0ZXNPYmplY3QgKikKLXJlcGxhY2Vfc3Vic3RyaW5nX2luX3BsYWNlKFB5Qnl0ZXNPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmcm9tX3MsIFB5X3NzaXplX3QgZnJvbV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b19zLCBQeV9zc2l6ZV90IHRvX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCi17Ci0gICAgY2hhciAqcmVzdWx0X3MsICpzdGFydCwgKmVuZDsKLSAgICBjaGFyICpzZWxmX3M7Ci0gICAgUHlfc3NpemVfdCBzZWxmX2xlbiwgb2Zmc2V0OwotICAgIFB5Qnl0ZXNPYmplY3QgKnJlc3VsdDsKLQotICAgIC8qIFRoZSByZXN1bHQgc3RyaW5nIHdpbGwgYmUgdGhlIHNhbWUgc2l6ZSAqLwotCi0gICAgc2VsZl9zID0gUHlCeXRlc19BU19TVFJJTkcoc2VsZik7Ci0gICAgc2VsZl9sZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpOwotCi0gICAgb2Zmc2V0ID0gc3RyaW5nbGliX2ZpbmQoc2VsZl9zLCBzZWxmX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX3MsIGZyb21fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOwotICAgIGlmIChvZmZzZXQgPT0gLTEpIHsKLSAgICAgICAgLyogTm8gbWF0Y2hlczsgcmV0dXJuIHRoZSBvcmlnaW5hbCBzdHJpbmcgKi8KLSAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwotICAgIH0KLQotICAgIC8qIE5lZWQgdG8gbWFrZSBhIG5ldyBzdHJpbmcgKi8KLSAgICByZXN1bHQgPSAoUHlCeXRlc09iamVjdCAqKSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNlbGZfbGVuKTsKLSAgICBpZiAocmVzdWx0ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlc3VsdF9zID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKLSAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHNlbGZfcywgc2VsZl9sZW4pOwotCi0gICAgLyogY2hhbmdlIGV2ZXJ5dGhpbmcgaW4tcGxhY2UsIHN0YXJ0aW5nIHdpdGggdGhpcyBvbmUgKi8KLSAgICBzdGFydCA9ICByZXN1bHRfcyArIG9mZnNldDsKLSAgICBQeV9NRU1DUFkoc3RhcnQsIHRvX3MsIGZyb21fbGVuKTsKLSAgICBzdGFydCArPSBmcm9tX2xlbjsKLSAgICBlbmQgPSByZXN1bHRfcyArIHNlbGZfbGVuOwotCi0gICAgd2hpbGUgKCAtLW1heGNvdW50ID4gMCkgewotICAgICAgICBvZmZzZXQgPSBzdHJpbmdsaWJfZmluZChzdGFydCwgZW5kLXN0YXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX3MsIGZyb21fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKLSAgICAgICAgaWYgKG9mZnNldD09LTEpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgUHlfTUVNQ1BZKHN0YXJ0K29mZnNldCwgdG9fcywgZnJvbV9sZW4pOwotICAgICAgICBzdGFydCArPSBvZmZzZXQrZnJvbV9sZW47Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogbGVuKHNlbGYpPj0xLCBsZW4oZnJvbSk9PTEsIGxlbih0byk+PTIsIG1heGNvdW50Pj0xICovCi1QeV9MT0NBTChQeUJ5dGVzT2JqZWN0ICopCi1yZXBsYWNlX3NpbmdsZV9jaGFyYWN0ZXIoUHlCeXRlc09iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGZyb21fYywKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b19zLCBQeV9zc2l6ZV90IHRvX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQotewotICAgIGNoYXIgKnNlbGZfcywgKnJlc3VsdF9zOwotICAgIGNoYXIgKnN0YXJ0LCAqbmV4dCwgKmVuZDsKLSAgICBQeV9zc2l6ZV90IHNlbGZfbGVuLCByZXN1bHRfbGVuOwotICAgIFB5X3NzaXplX3QgY291bnQ7Ci0gICAgUHlCeXRlc09iamVjdCAqcmVzdWx0OwotCi0gICAgc2VsZl9zID0gUHlCeXRlc19BU19TVFJJTkcoc2VsZik7Ci0gICAgc2VsZl9sZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpOwotCi0gICAgY291bnQgPSBjb3VudGNoYXIoc2VsZl9zLCBzZWxmX2xlbiwgZnJvbV9jLCBtYXhjb3VudCk7Ci0gICAgaWYgKGNvdW50ID09IDApIHsKLSAgICAgICAgLyogbm8gbWF0Y2hlcywgcmV0dXJuIHVuY2hhbmdlZCAqLwotICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7Ci0gICAgfQotCi0gICAgLyogdXNlIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gY3VycmVudCBhbmQgbmV3LCBoZW5jZSB0aGUgIi0xIiAqLwotICAgIC8qICAgcmVzdWx0X2xlbiA9IHNlbGZfbGVuICsgY291bnQgKiAodG9fbGVuLTEpICAqLwotICAgIGFzc2VydChjb3VudCA+IDApOwotICAgIGlmICh0b19sZW4gLSAxID4gKFBZX1NTSVpFX1RfTUFYIC0gc2VsZl9sZW4pIC8gY291bnQpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAicmVwbGFjZW1lbnQgYnl0ZXMgYXJlIHRvbyBsb25nIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXN1bHRfbGVuID0gc2VsZl9sZW4gKyBjb3VudCAqICh0b19sZW4gLSAxKTsKLQotICAgIGlmICggKHJlc3VsdCA9IChQeUJ5dGVzT2JqZWN0ICopCi0gICAgICAgICAgUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCByZXN1bHRfbGVuKSkgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzdWx0X3MgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOwotCi0gICAgc3RhcnQgPSBzZWxmX3M7Ci0gICAgZW5kID0gc2VsZl9zICsgc2VsZl9sZW47Ci0gICAgd2hpbGUgKGNvdW50LS0gPiAwKSB7Ci0gICAgICAgIG5leHQgPSBmaW5kY2hhcihzdGFydCwgZW5kLXN0YXJ0LCBmcm9tX2MpOwotICAgICAgICBpZiAobmV4dCA9PSBOVUxMKQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgaWYgKG5leHQgPT0gc3RhcnQpIHsKLSAgICAgICAgICAgIC8qIHJlcGxhY2Ugd2l0aCB0aGUgJ3RvJyAqLwotICAgICAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCB0b19zLCB0b19sZW4pOwotICAgICAgICAgICAgcmVzdWx0X3MgKz0gdG9fbGVuOwotICAgICAgICAgICAgc3RhcnQgKz0gMTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8qIGNvcHkgdGhlIHVuY2hhbmdlZCBvbGQgdGhlbiB0aGUgJ3RvJyAqLwotICAgICAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzdGFydCwgbmV4dC1zdGFydCk7Ci0gICAgICAgICAgICByZXN1bHRfcyArPSAobmV4dC1zdGFydCk7Ci0gICAgICAgICAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHRvX3MsIHRvX2xlbik7Ci0gICAgICAgICAgICByZXN1bHRfcyArPSB0b19sZW47Ci0gICAgICAgICAgICBzdGFydCA9IG5leHQrMTsKLSAgICAgICAgfQotICAgIH0KLSAgICAvKiBDb3B5IHRoZSByZW1haW5kZXIgb2YgdGhlIHJlbWFpbmluZyBzdHJpbmcgKi8KLSAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHN0YXJ0LCBlbmQtc3RhcnQpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogbGVuKHNlbGYpPj0xLCBsZW4oZnJvbSk+PTIsIGxlbih0byk+PTIsIG1heGNvdW50Pj0xICovCi1QeV9MT0NBTChQeUJ5dGVzT2JqZWN0ICopCi1yZXBsYWNlX3N1YnN0cmluZyhQeUJ5dGVzT2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZnJvbV9zLCBQeV9zc2l6ZV90IGZyb21fbGVuLAotICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdG9fcywgUHlfc3NpemVfdCB0b19sZW4sCi0gICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KSB7Ci0gICAgY2hhciAqc2VsZl9zLCAqcmVzdWx0X3M7Ci0gICAgY2hhciAqc3RhcnQsICpuZXh0LCAqZW5kOwotICAgIFB5X3NzaXplX3Qgc2VsZl9sZW4sIHJlc3VsdF9sZW47Ci0gICAgUHlfc3NpemVfdCBjb3VudCwgb2Zmc2V0OwotICAgIFB5Qnl0ZXNPYmplY3QgKnJlc3VsdDsKLQotICAgIHNlbGZfcyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpOwotICAgIHNlbGZfbGVuID0gUHlCeXRlc19HRVRfU0laRShzZWxmKTsKLQotICAgIGNvdW50ID0gc3RyaW5nbGliX2NvdW50KHNlbGZfcywgc2VsZl9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbV9zLCBmcm9tX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhjb3VudCk7Ci0KLSAgICBpZiAoY291bnQgPT0gMCkgewotICAgICAgICAvKiBubyBtYXRjaGVzLCByZXR1cm4gdW5jaGFuZ2VkICovCi0gICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKLSAgICB9Ci0KLSAgICAvKiBDaGVjayBmb3Igb3ZlcmZsb3cgKi8KLSAgICAvKiAgICByZXN1bHRfbGVuID0gc2VsZl9sZW4gKyBjb3VudCAqICh0b19sZW4tZnJvbV9sZW4pICovCi0gICAgYXNzZXJ0KGNvdW50ID4gMCk7Ci0gICAgaWYgKHRvX2xlbiAtIGZyb21fbGVuID4gKFBZX1NTSVpFX1RfTUFYIC0gc2VsZl9sZW4pIC8gY291bnQpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAicmVwbGFjZW1lbnQgYnl0ZXMgYXJlIHRvbyBsb25nIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXN1bHRfbGVuID0gc2VsZl9sZW4gKyBjb3VudCAqICh0b19sZW4tZnJvbV9sZW4pOwotCi0gICAgaWYgKCAocmVzdWx0ID0gKFB5Qnl0ZXNPYmplY3QgKikKLSAgICAgICAgICBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHJlc3VsdF9sZW4pKSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXN1bHRfcyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7Ci0KLSAgICBzdGFydCA9IHNlbGZfczsKLSAgICBlbmQgPSBzZWxmX3MgKyBzZWxmX2xlbjsKLSAgICB3aGlsZSAoY291bnQtLSA+IDApIHsKLSAgICAgICAgb2Zmc2V0ID0gc3RyaW5nbGliX2ZpbmQoc3RhcnQsIGVuZC1zdGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbV9zLCBmcm9tX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7Ci0gICAgICAgIGlmIChvZmZzZXQgPT0gLTEpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgbmV4dCA9IHN0YXJ0K29mZnNldDsKLSAgICAgICAgaWYgKG5leHQgPT0gc3RhcnQpIHsKLSAgICAgICAgICAgIC8qIHJlcGxhY2Ugd2l0aCB0aGUgJ3RvJyAqLwotICAgICAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCB0b19zLCB0b19sZW4pOwotICAgICAgICAgICAgcmVzdWx0X3MgKz0gdG9fbGVuOwotICAgICAgICAgICAgc3RhcnQgKz0gZnJvbV9sZW47Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvKiBjb3B5IHRoZSB1bmNoYW5nZWQgb2xkIHRoZW4gdGhlICd0bycgKi8KLSAgICAgICAgICAgIFB5X01FTUNQWShyZXN1bHRfcywgc3RhcnQsIG5leHQtc3RhcnQpOwotICAgICAgICAgICAgcmVzdWx0X3MgKz0gKG5leHQtc3RhcnQpOwotICAgICAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCB0b19zLCB0b19sZW4pOwotICAgICAgICAgICAgcmVzdWx0X3MgKz0gdG9fbGVuOwotICAgICAgICAgICAgc3RhcnQgPSBuZXh0K2Zyb21fbGVuOwotICAgICAgICB9Ci0gICAgfQotICAgIC8qIENvcHkgdGhlIHJlbWFpbmRlciBvZiB0aGUgcmVtYWluaW5nIHN0cmluZyAqLwotICAgIFB5X01FTUNQWShyZXN1bHRfcywgc3RhcnQsIGVuZC1zdGFydCk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0KLVB5X0xPQ0FMKFB5Qnl0ZXNPYmplY3QgKikKLXJlcGxhY2UoUHlCeXRlc09iamVjdCAqc2VsZiwKLSAgICBjb25zdCBjaGFyICpmcm9tX3MsIFB5X3NzaXplX3QgZnJvbV9sZW4sCi0gICAgY29uc3QgY2hhciAqdG9fcywgUHlfc3NpemVfdCB0b19sZW4sCi0gICAgUHlfc3NpemVfdCBtYXhjb3VudCkKLXsKLSAgICBpZiAobWF4Y291bnQgPCAwKSB7Ci0gICAgICAgIG1heGNvdW50ID0gUFlfU1NJWkVfVF9NQVg7Ci0gICAgfSBlbHNlIGlmIChtYXhjb3VudCA9PSAwIHx8IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZikgPT0gMCkgewotICAgICAgICAvKiBub3RoaW5nIHRvIGRvOyByZXR1cm4gdGhlIG9yaWdpbmFsIHN0cmluZyAqLwotICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7Ci0gICAgfQotCi0gICAgaWYgKG1heGNvdW50ID09IDAgfHwKLSAgICAgICAgKGZyb21fbGVuID09IDAgJiYgdG9fbGVuID09IDApKSB7Ci0gICAgICAgIC8qIG5vdGhpbmcgdG8gZG87IHJldHVybiB0aGUgb3JpZ2luYWwgc3RyaW5nICovCi0gICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKLSAgICB9Ci0KLSAgICAvKiBIYW5kbGUgemVyby1sZW5ndGggc3BlY2lhbCBjYXNlcyAqLwotCi0gICAgaWYgKGZyb21fbGVuID09IDApIHsKLSAgICAgICAgLyogaW5zZXJ0IHRoZSAndG8nIHN0cmluZyBldmVyeXdoZXJlLiAgICovCi0gICAgICAgIC8qICAgID4+PiAiUHl0aG9uIi5yZXBsYWNlKCIiLCAiLiIpICAgICAqLwotICAgICAgICAvKiAgICAnLlAueS50Lmguby5uLicgICAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgcmV0dXJuIHJlcGxhY2VfaW50ZXJsZWF2ZShzZWxmLCB0b19zLCB0b19sZW4sIG1heGNvdW50KTsKLSAgICB9Ci0KLSAgICAvKiBFeGNlcHQgZm9yICIiLnJlcGxhY2UoIiIsICJBIikgPT0gIkEiIHRoZXJlIGlzIG5vIHdheSBiZXlvbmQgdGhpcyAqLwotICAgIC8qIHBvaW50IGZvciBhbiBlbXB0eSBzZWxmIHN0cmluZyB0byBnZW5lcmF0ZSBhIG5vbi1lbXB0eSBzdHJpbmcgKi8KLSAgICAvKiBTcGVjaWFsIGNhc2Ugc28gdGhlIHJlbWFpbmluZyBjb2RlIGFsd2F5cyBnZXRzIGEgbm9uLWVtcHR5IHN0cmluZyAqLwotICAgIGlmIChQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpID09IDApIHsKLSAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwotICAgIH0KLQotICAgIGlmICh0b19sZW4gPT0gMCkgewotICAgICAgICAvKiBkZWxldGUgYWxsIG9jY3VycmVuY2VzIG9mICdmcm9tJyBzdHJpbmcgKi8KLSAgICAgICAgaWYgKGZyb21fbGVuID09IDEpIHsKLSAgICAgICAgICAgIHJldHVybiByZXBsYWNlX2RlbGV0ZV9zaW5nbGVfY2hhcmFjdGVyKAotICAgICAgICAgICAgICAgIHNlbGYsIGZyb21fc1swXSwgbWF4Y291bnQpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2VfZGVsZXRlX3N1YnN0cmluZyhzZWxmLCBmcm9tX3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21fbGVuLCBtYXhjb3VudCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvKiBIYW5kbGUgc3BlY2lhbCBjYXNlIHdoZXJlIGJvdGggc3RyaW5ncyBoYXZlIHRoZSBzYW1lIGxlbmd0aCAqLwotCi0gICAgaWYgKGZyb21fbGVuID09IHRvX2xlbikgewotICAgICAgICBpZiAoZnJvbV9sZW4gPT0gMSkgewotICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2Vfc2luZ2xlX2NoYXJhY3Rlcl9pbl9wbGFjZSgKLSAgICAgICAgICAgICAgICBzZWxmLAotICAgICAgICAgICAgICAgIGZyb21fc1swXSwKLSAgICAgICAgICAgICAgICB0b19zWzBdLAotICAgICAgICAgICAgICAgIG1heGNvdW50KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiByZXBsYWNlX3N1YnN0cmluZ19pbl9wbGFjZSgKLSAgICAgICAgICAgICAgICBzZWxmLCBmcm9tX3MsIGZyb21fbGVuLCB0b19zLCB0b19sZW4sCi0gICAgICAgICAgICAgICAgbWF4Y291bnQpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLyogT3RoZXJ3aXNlIHVzZSB0aGUgbW9yZSBnZW5lcmljIGFsZ29yaXRobXMgKi8KLSAgICBpZiAoZnJvbV9sZW4gPT0gMSkgewotICAgICAgICByZXR1cm4gcmVwbGFjZV9zaW5nbGVfY2hhcmFjdGVyKHNlbGYsIGZyb21fc1swXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b19zLCB0b19sZW4sIG1heGNvdW50KTsKLSAgICB9IGVsc2UgewotICAgICAgICAvKiBsZW4oJ2Zyb20nKT49MiwgbGVuKCd0bycpPj0xICovCi0gICAgICAgIHJldHVybiByZXBsYWNlX3N1YnN0cmluZyhzZWxmLCBmcm9tX3MsIGZyb21fbGVuLCB0b19zLCB0b19sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhjb3VudCk7Ci0gICAgfQotfQotCiAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVzLnJlcGxhY2UKQEAgLTI3NzQsMTU2ICsyMjQxLDI4IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19yZXBsYWNlX2ltcGwoUHlCeXRlc09iamVjdCpzZWxmLCBQeV9idWZmZXIgKm9sZCwgUHlfYnVmZmVyICpuZXcsCitieXRlc19yZXBsYWNlX2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlfYnVmZmVyICpvbGQsIFB5X2J1ZmZlciAqbmV3LAogICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgY291bnQpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDAzZGM5ZDdhODNjNWExZCBpbnB1dD1iMmZiYmYwYmYwNGRlOGU1XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTk0ZmE1ODhiNmI5YzEwNCBpbnB1dD1iMmZiYmYwYmYwNGRlOGU1XSovCiB7Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKXJlcGxhY2UoKFB5Qnl0ZXNPYmplY3QgKikgc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgY2hhciAqKW9sZC0+YnVmLCBvbGQtPmxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgY2hhciAqKW5ldy0+YnVmLCBuZXctPmxlbiwgY291bnQpOworICAgIHJldHVybiBzdHJpbmdsaWJfcmVwbGFjZSgoUHlPYmplY3QgKilzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgY2hhciAqKW9sZC0+YnVmLCBvbGQtPmxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IGNoYXIgKiluZXctPmJ1ZiwgbmV3LT5sZW4sIGNvdW50KTsKIH0KIAogLyoqIEVuZCBEQUxLRSAqKi8KIAotLyogTWF0Y2hlcyB0aGUgZW5kIChkaXJlY3Rpb24gPj0gMCkgb3Igc3RhcnQgKGRpcmVjdGlvbiA8IDApIG9mIHNlbGYKLSAqIGFnYWluc3Qgc3Vic3RyLCB1c2luZyB0aGUgc3RhcnQgYW5kIGVuZCBhcmd1bWVudHMuIFJldHVybnMKLSAqIC0xIG9uIGVycm9yLCAwIGlmIG5vdCBmb3VuZCBhbmQgMSBpZiBmb3VuZC4KLSAqLwotUHlfTE9DQUwoaW50KQotX2J5dGVzX3RhaWxtYXRjaChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc3Vic3RyLCBQeV9zc2l6ZV90IHN0YXJ0LAotICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBlbmQsIGludCBkaXJlY3Rpb24pCi17Ci0gICAgUHlfc3NpemVfdCBsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpOwotICAgIFB5X3NzaXplX3Qgc2xlbjsKLSAgICBQeV9idWZmZXIgc3ViX3ZpZXcgPSB7TlVMTCwgTlVMTH07Ci0gICAgY29uc3QgY2hhciogc3ViOwotICAgIGNvbnN0IGNoYXIqIHN0cjsKLQotICAgIGlmIChQeUJ5dGVzX0NoZWNrKHN1YnN0cikpIHsKLSAgICAgICAgc3ViID0gUHlCeXRlc19BU19TVFJJTkcoc3Vic3RyKTsKLSAgICAgICAgc2xlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc3Vic3RyKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoc3Vic3RyLCAmc3ViX3ZpZXcsIFB5QlVGX1NJTVBMRSkgIT0gMCkKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgc3ViID0gc3ViX3ZpZXcuYnVmOwotICAgICAgICBzbGVuID0gc3ViX3ZpZXcubGVuOwotICAgIH0KLSAgICBzdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKTsKLQotICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIGxlbik7Ci0KLSAgICBpZiAoZGlyZWN0aW9uIDwgMCkgewotICAgICAgICAvKiBzdGFydHN3aXRoICovCi0gICAgICAgIGlmIChzdGFydCtzbGVuID4gbGVuKQotICAgICAgICAgICAgZ290byBub3Rmb3VuZDsKLSAgICB9IGVsc2UgewotICAgICAgICAvKiBlbmRzd2l0aCAqLwotICAgICAgICBpZiAoZW5kLXN0YXJ0IDwgc2xlbiB8fCBzdGFydCA+IGxlbikKLSAgICAgICAgICAgIGdvdG8gbm90Zm91bmQ7Ci0KLSAgICAgICAgaWYgKGVuZC1zbGVuID4gc3RhcnQpCi0gICAgICAgICAgICBzdGFydCA9IGVuZCAtIHNsZW47Ci0gICAgfQotICAgIGlmIChlbmQtc3RhcnQgPCBzbGVuKQotICAgICAgICBnb3RvIG5vdGZvdW5kOwotICAgIGlmIChtZW1jbXAoc3RyK3N0YXJ0LCBzdWIsIHNsZW4pICE9IDApCi0gICAgICAgIGdvdG8gbm90Zm91bmQ7Ci0KLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZzdWJfdmlldyk7Ci0gICAgcmV0dXJuIDE7Ci0KLW5vdGZvdW5kOgotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnN1Yl92aWV3KTsKLSAgICByZXR1cm4gMDsKLX0KLQotCi1QeURvY19TVFJWQVIoc3RhcnRzd2l0aF9fZG9jX18sCi0iQi5zdGFydHN3aXRoKHByZWZpeFssIHN0YXJ0WywgZW5kXV0pIC0+IGJvb2xcblwKLVxuXAotUmV0dXJuIFRydWUgaWYgQiBzdGFydHMgd2l0aCB0aGUgc3BlY2lmaWVkIHByZWZpeCwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAotV2l0aCBvcHRpb25hbCBzdGFydCwgdGVzdCBCIGJlZ2lubmluZyBhdCB0aGF0IHBvc2l0aW9uLlxuXAotV2l0aCBvcHRpb25hbCBlbmQsIHN0b3AgY29tcGFyaW5nIEIgYXQgdGhhdCBwb3NpdGlvbi5cblwKLXByZWZpeCBjYW4gYWxzbyBiZSBhIHR1cGxlIG9mIGJ5dGVzIHRvIHRyeS4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVzX3N0YXJ0c3dpdGgoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlfc3NpemVfdCBzdGFydCA9IDA7Ci0gICAgUHlfc3NpemVfdCBlbmQgPSBQWV9TU0laRV9UX01BWDsKLSAgICBQeU9iamVjdCAqc3Vib2JqOwotICAgIGludCByZXN1bHQ7Ci0KLSAgICBpZiAoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzKCJzdGFydHN3aXRoIiwgYXJncywgJnN1Ym9iaiwgJnN0YXJ0LCAmZW5kKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5VHVwbGVfQ2hlY2soc3Vib2JqKSkgewotICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeVR1cGxlX0dFVF9TSVpFKHN1Ym9iaik7IGkrKykgewotICAgICAgICAgICAgcmVzdWx0ID0gX2J5dGVzX3RhaWxtYXRjaChzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VHVwbGVfR0VUX0lURU0oc3Vib2JqLCBpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwgZW5kLCAtMSk7Ci0gICAgICAgICAgICBpZiAocmVzdWx0ID09IC0xKQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgZWxzZSBpZiAocmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAgUHlfUkVUVVJOX1RSVUU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOwotICAgIH0KLSAgICByZXN1bHQgPSBfYnl0ZXNfdGFpbG1hdGNoKHNlbGYsIHN1Ym9iaiwgc3RhcnQsIGVuZCwgLTEpOwotICAgIGlmIChyZXN1bHQgPT0gLTEpIHsKLSAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJzdGFydHN3aXRoIGZpcnN0IGFyZyBtdXN0IGJlIGJ5dGVzICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAib3IgYSB0dXBsZSBvZiBieXRlcywgbm90ICVzIiwgUHlfVFlQRShzdWJvYmopLT50cF9uYW1lKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhyZXN1bHQpOworICAgIHJldHVybiBfUHlfYnl0ZXNfc3RhcnRzd2l0aChQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgUHlCeXRlc19HRVRfU0laRShzZWxmKSwgYXJncyk7CiB9CiAKLQotUHlEb2NfU1RSVkFSKGVuZHN3aXRoX19kb2NfXywKLSJCLmVuZHN3aXRoKHN1ZmZpeFssIHN0YXJ0WywgZW5kXV0pIC0+IGJvb2xcblwKLVxuXAotUmV0dXJuIFRydWUgaWYgQiBlbmRzIHdpdGggdGhlIHNwZWNpZmllZCBzdWZmaXgsIEZhbHNlIG90aGVyd2lzZS5cblwKLVdpdGggb3B0aW9uYWwgc3RhcnQsIHRlc3QgQiBiZWdpbm5pbmcgYXQgdGhhdCBwb3NpdGlvbi5cblwKLVdpdGggb3B0aW9uYWwgZW5kLCBzdG9wIGNvbXBhcmluZyBCIGF0IHRoYXQgcG9zaXRpb24uXG5cCi1zdWZmaXggY2FuIGFsc28gYmUgYSB0dXBsZSBvZiBieXRlcyB0byB0cnkuIik7Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlc19lbmRzd2l0aChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9zc2l6ZV90IHN0YXJ0ID0gMDsKLSAgICBQeV9zc2l6ZV90IGVuZCA9IFBZX1NTSVpFX1RfTUFYOwotICAgIFB5T2JqZWN0ICpzdWJvYmo7Ci0gICAgaW50IHJlc3VsdDsKLQotICAgIGlmICghc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHMoImVuZHN3aXRoIiwgYXJncywgJnN1Ym9iaiwgJnN0YXJ0LCAmZW5kKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5VHVwbGVfQ2hlY2soc3Vib2JqKSkgewotICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeVR1cGxlX0dFVF9TSVpFKHN1Ym9iaik7IGkrKykgewotICAgICAgICAgICAgcmVzdWx0ID0gX2J5dGVzX3RhaWxtYXRjaChzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VHVwbGVfR0VUX0lURU0oc3Vib2JqLCBpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwgZW5kLCArMSk7Ci0gICAgICAgICAgICBpZiAocmVzdWx0ID09IC0xKQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgZWxzZSBpZiAocmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAgUHlfUkVUVVJOX1RSVUU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOwotICAgIH0KLSAgICByZXN1bHQgPSBfYnl0ZXNfdGFpbG1hdGNoKHNlbGYsIHN1Ym9iaiwgc3RhcnQsIGVuZCwgKzEpOwotICAgIGlmIChyZXN1bHQgPT0gLTEpIHsKLSAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJlbmRzd2l0aCBmaXJzdCBhcmcgbXVzdCBiZSBieXRlcyBvciAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgImEgdHVwbGUgb2YgYnl0ZXMsIG5vdCAlcyIsIFB5X1RZUEUoc3Vib2JqKS0+dHBfbmFtZSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcocmVzdWx0KTsKKyAgICByZXR1cm4gX1B5X2J5dGVzX2VuZHN3aXRoKFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLCBhcmdzKTsKIH0KIAogCkBAIC0yOTQzLDkgKzIyODIsOSBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfZGVjb2RlX2ltcGwoUHlCeXRlc09iamVjdCpzZWxmLCBjb25zdCBjaGFyICplbmNvZGluZywKK2J5dGVzX2RlY29kZV9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKmVuY29kaW5nLAogICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJkMjAxNmZmOGUwYmIxNzYgaW5wdXQ9OTU4MTc0NzY5ZDJhNDBjYV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTU2NDlhNTNkZGUyN2IzMTQgaW5wdXQ9OTU4MTc0NzY5ZDJhNDBjYV0qLwogewogICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUVuY29kZWRPYmplY3QoKFB5T2JqZWN0KilzZWxmLCBlbmNvZGluZywgZXJyb3JzKTsKIH0KQEAgLTI5NjMsOCArMjMwMiw4IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19zcGxpdGxpbmVzX2ltcGwoUHlCeXRlc09iamVjdCpzZWxmLCBpbnQga2VlcGVuZHMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTk1YzM1OThmNzgzM2NhZCBpbnB1dD03ZjRhYWM2NzE0NGY5OTQ0XSovCitieXRlc19zcGxpdGxpbmVzX2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgaW50IGtlZXBlbmRzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTM0ODQxNDlhNWQ4ODBmZmIgaW5wdXQ9N2Y0YWFjNjcxNDRmOTk0NF0qLwogewogICAgIHJldHVybiBzdHJpbmdsaWJfc3BsaXRsaW5lcygKICAgICAgICAgKFB5T2JqZWN0Kikgc2VsZiwgUHlCeXRlc19BU19TVFJJTkcoc2VsZiksCkBAIC0yOTcyLDIyICsyMzExLDYgQEAKICAgICAgICAgKTsKIH0KIAotc3RhdGljIGludAotaGV4X2RpZ2l0X3RvX2ludChQeV9VQ1M0IGMpCi17Ci0gICAgaWYgKGMgPj0gMTI4KQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgaWYgKFB5X0lTRElHSVQoYykpCi0gICAgICAgIHJldHVybiBjIC0gJzAnOwotICAgIGVsc2UgewotICAgICAgICBpZiAoUHlfSVNVUFBFUihjKSkKLSAgICAgICAgICAgIGMgPSBQeV9UT0xPV0VSKGMpOwotICAgICAgICBpZiAoYyA+PSAnYScgJiYgYyA8PSAnZicpCi0gICAgICAgICAgICByZXR1cm4gYyAtICdhJyArIDEwOwotICAgIH0KLSAgICByZXR1cm4gLTE7Ci19Ci0KIC8qW2NsaW5pYyBpbnB1dF0KIEBjbGFzc21ldGhvZAogYnl0ZXMuZnJvbWhleApAQCAtMzAwNSw0NyArMjMyOCw4OCBAQAogYnl0ZXNfZnJvbWhleF9pbXBsKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnN0cmluZykKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wOTczYWNjNjM2NjFiYjJlIGlucHV0PWJmNGQxYzM2MTY3MGFjZDNdKi8KIHsKLSAgICBQeU9iamVjdCAqbmV3c3RyaW5nOworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBfUHlCeXRlc19Gcm9tSGV4KHN0cmluZywgMCk7CisgICAgaWYgKHR5cGUgIT0gJlB5Qnl0ZXNfVHlwZSAmJiByZXN1bHQgIT0gTlVMTCkgeworICAgICAgICBQeV9TRVRSRUYocmVzdWx0LCBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKChQeU9iamVjdCAqKXR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LCBOVUxMKSk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1B5T2JqZWN0KgorX1B5Qnl0ZXNfRnJvbUhleChQeU9iamVjdCAqc3RyaW5nLCBpbnQgdXNlX2J5dGVhcnJheSkKK3sKICAgICBjaGFyICpidWY7Ci0gICAgUHlfc3NpemVfdCBoZXhsZW4sIGJ5dGVzbGVuLCBpLCBqOwotICAgIGludCB0b3AsIGJvdDsKLSAgICB2b2lkICpkYXRhOwotICAgIHVuc2lnbmVkIGludCBraW5kOworICAgIFB5X3NzaXplX3QgaGV4bGVuLCBpbnZhbGlkX2NoYXI7CisgICAgdW5zaWduZWQgaW50IHRvcCwgYm90OworICAgIFB5X1VDUzEgKnN0ciwgKmVuZDsKKyAgICBfUHlCeXRlc1dyaXRlciB3cml0ZXI7CisKKyAgICBfUHlCeXRlc1dyaXRlcl9Jbml0KCZ3cml0ZXIpOworICAgIHdyaXRlci51c2VfYnl0ZWFycmF5ID0gdXNlX2J5dGVhcnJheTsKIAogICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2soc3RyaW5nKSk7CiAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdHJpbmcpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc3RyaW5nKTsKLSAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoc3RyaW5nKTsKICAgICBoZXhsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHJpbmcpOwogCi0gICAgYnl0ZXNsZW4gPSBoZXhsZW4vMjsgLyogVGhpcyBvdmVyZXN0aW1hdGVzIGlmIHRoZXJlIGFyZSBzcGFjZXMgKi8KLSAgICBuZXdzdHJpbmcgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGJ5dGVzbGVuKTsKLSAgICBpZiAoIW5ld3N0cmluZykKKyAgICBpZiAoIVB5VW5pY29kZV9JU19BU0NJSShzdHJpbmcpKSB7CisgICAgICAgIHZvaWQgKmRhdGEgPSBQeVVuaWNvZGVfREFUQShzdHJpbmcpOworICAgICAgICB1bnNpZ25lZCBpbnQga2luZCA9IFB5VW5pY29kZV9LSU5EKHN0cmluZyk7CisgICAgICAgIFB5X3NzaXplX3QgaTsKKworICAgICAgICAvKiBzZWFyY2ggZm9yIHRoZSBmaXJzdCBub24tQVNDSUkgY2hhcmFjdGVyICovCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBoZXhsZW47IGkrKykgeworICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpID49IDEyOCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpbnZhbGlkX2NoYXIgPSBpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIGFzc2VydChQeVVuaWNvZGVfS0lORChzdHJpbmcpID09IFB5VW5pY29kZV8xQllURV9LSU5EKTsKKyAgICBzdHIgPSBQeVVuaWNvZGVfMUJZVEVfREFUQShzdHJpbmcpOworCisgICAgLyogVGhpcyBvdmVyZXN0aW1hdGVzIGlmIHRoZXJlIGFyZSBzcGFjZXMgKi8KKyAgICBidWYgPSBfUHlCeXRlc1dyaXRlcl9BbGxvYygmd3JpdGVyLCBoZXhsZW4gLyAyKTsKKyAgICBpZiAoYnVmID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGJ1ZiA9IFB5Qnl0ZXNfQVNfU1RSSU5HKG5ld3N0cmluZyk7Ci0gICAgZm9yIChpID0gaiA9IDA7IGkgPCBoZXhsZW47IGkgKz0gMikgeworCisgICAgZW5kID0gc3RyICsgaGV4bGVuOworICAgIHdoaWxlIChzdHIgPCBlbmQpIHsKICAgICAgICAgLyogc2tpcCBvdmVyIHNwYWNlcyBpbiB0aGUgaW5wdXQgKi8KLSAgICAgICAgd2hpbGUgKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpID09ICcgJykKLSAgICAgICAgICAgIGkrKzsKLSAgICAgICAgaWYgKGkgPj0gaGV4bGVuKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIHRvcCA9IGhleF9kaWdpdF90b19pbnQoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkpOwotICAgICAgICBib3QgPSBoZXhfZGlnaXRfdG9faW50KFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkrMSkpOwotICAgICAgICBpZiAodG9wID09IC0xIHx8IGJvdCA9PSAtMSkgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIm5vbi1oZXhhZGVjaW1hbCBudW1iZXIgZm91bmQgaW4gIgotICAgICAgICAgICAgICAgICAgICAgICAgICJmcm9taGV4KCkgYXJnIGF0IHBvc2l0aW9uICV6ZCIsIGkpOworICAgICAgICBpZiAoKnN0ciA9PSAnICcpIHsKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBzdHIrKzsKKyAgICAgICAgICAgIH0gd2hpbGUgKCpzdHIgPT0gJyAnKTsKKyAgICAgICAgICAgIGlmIChzdHIgPj0gZW5kKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgdG9wID0gX1B5TG9uZ19EaWdpdFZhbHVlWypzdHJdOworICAgICAgICBpZiAodG9wID49IDE2KSB7CisgICAgICAgICAgICBpbnZhbGlkX2NoYXIgPSBzdHIgLSBQeVVuaWNvZGVfMUJZVEVfREFUQShzdHJpbmcpOwogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQotICAgICAgICBidWZbaisrXSA9ICh0b3AgPDwgNCkgKyBib3Q7CisgICAgICAgIHN0cisrOworCisgICAgICAgIGJvdCA9IF9QeUxvbmdfRGlnaXRWYWx1ZVsqc3RyXTsKKyAgICAgICAgaWYgKGJvdCA+PSAxNikgeworICAgICAgICAgICAgaW52YWxpZF9jaGFyID0gc3RyIC0gUHlVbmljb2RlXzFCWVRFX0RBVEEoc3RyaW5nKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgc3RyKys7CisKKyAgICAgICAgKmJ1ZisrID0gKHVuc2lnbmVkIGNoYXIpKCh0b3AgPDwgNCkgKyBib3QpOwogICAgIH0KLSAgICBpZiAoaiAhPSBieXRlc2xlbiAmJiBfUHlCeXRlc19SZXNpemUoJm5ld3N0cmluZywgaikgPCAwKQotICAgICAgICBnb3RvIGVycm9yOwotICAgIHJldHVybiBuZXdzdHJpbmc7CisKKyAgICByZXR1cm4gX1B5Qnl0ZXNXcml0ZXJfRmluaXNoKCZ3cml0ZXIsIGJ1Zik7CiAKICAgZXJyb3I6Ci0gICAgUHlfWERFQ1JFRihuZXdzdHJpbmcpOworICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAibm9uLWhleGFkZWNpbWFsIG51bWJlciBmb3VuZCBpbiAiCisgICAgICAgICAgICAgICAgICJmcm9taGV4KCkgYXJnIGF0IHBvc2l0aW9uICV6ZCIsIGludmFsaWRfY2hhcik7CisgICAgX1B5Qnl0ZXNXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIApAQCAtMzA3NSwxNyArMjQzOSwyMCBAQAogICAgIHsiX19nZXRuZXdhcmdzX18iLCAgICAgICAgICAoUHlDRnVuY3Rpb24pYnl0ZXNfZ2V0bmV3YXJncywgIE1FVEhfTk9BUkdTfSwKICAgICB7ImNhcGl0YWxpemUiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2NhcGl0YWxpemUsIE1FVEhfTk9BUkdTLAogICAgICBfUHlfY2FwaXRhbGl6ZV9fZG9jX199LAotICAgIHsiY2VudGVyIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9jZW50ZXIsIE1FVEhfVkFSQVJHUywgY2VudGVyX19kb2NfX30sCi0gICAgeyJjb3VudCIsIChQeUNGdW5jdGlvbilieXRlc19jb3VudCwgTUVUSF9WQVJBUkdTLCBjb3VudF9fZG9jX199LAorICAgIHsiY2VudGVyIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9jZW50ZXIsIE1FVEhfVkFSQVJHUywKKyAgICAgX1B5X2NlbnRlcl9fZG9jX199LAorICAgIHsiY291bnQiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfY291bnQsIE1FVEhfVkFSQVJHUywKKyAgICAgX1B5X2NvdW50X19kb2NfX30sCiAgICAgQllURVNfREVDT0RFX01FVEhPRERFRgogICAgIHsiZW5kc3dpdGgiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfZW5kc3dpdGgsIE1FVEhfVkFSQVJHUywKLSAgICAgZW5kc3dpdGhfX2RvY19ffSwKKyAgICAgX1B5X2VuZHN3aXRoX19kb2NfX30sCiAgICAgeyJleHBhbmR0YWJzIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9leHBhbmR0YWJzLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICBleHBhbmR0YWJzX19kb2NfX30sCi0gICAgeyJmaW5kIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX2ZpbmQsIE1FVEhfVkFSQVJHUywgZmluZF9fZG9jX199LAorICAgICBfUHlfZXhwYW5kdGFic19fZG9jX199LAorICAgIHsiZmluZCIsIChQeUNGdW5jdGlvbilieXRlc19maW5kLCBNRVRIX1ZBUkFSR1MsCisgICAgIF9QeV9maW5kX19kb2NfX30sCiAgICAgQllURVNfRlJPTUhFWF9NRVRIT0RERUYKICAgICB7ImhleCIsIChQeUNGdW5jdGlvbilieXRlc19oZXgsIE1FVEhfTk9BUkdTLCBoZXhfX2RvY19ffSwKLSAgICB7ImluZGV4IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX2luZGV4LCBNRVRIX1ZBUkFSR1MsIGluZGV4X19kb2NfX30sCisgICAgeyJpbmRleCIsIChQeUNGdW5jdGlvbilieXRlc19pbmRleCwgTUVUSF9WQVJBUkdTLCBfUHlfaW5kZXhfX2RvY19ffSwKICAgICB7ImlzYWxudW0iLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2lzYWxudW0sIE1FVEhfTk9BUkdTLAogICAgICBfUHlfaXNhbG51bV9fZG9jX199LAogICAgIHsiaXNhbHBoYSIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfaXNhbHBoYSwgTUVUSF9OT0FSR1MsCkBAIC0zMTAxLDM4ICsyNDY4LDQwIEBACiAgICAgeyJpc3VwcGVyIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9pc3VwcGVyLCBNRVRIX05PQVJHUywKICAgICAgX1B5X2lzdXBwZXJfX2RvY19ffSwKICAgICBCWVRFU19KT0lOX01FVEhPRERFRgotICAgIHsibGp1c3QiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2xqdXN0LCBNRVRIX1ZBUkFSR1MsIGxqdXN0X19kb2NfX30sCisgICAgeyJsanVzdCIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfbGp1c3QsIE1FVEhfVkFSQVJHUywgX1B5X2xqdXN0X19kb2NfX30sCiAgICAgeyJsb3dlciIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfbG93ZXIsIE1FVEhfTk9BUkdTLCBfUHlfbG93ZXJfX2RvY19ffSwKICAgICBCWVRFU19MU1RSSVBfTUVUSE9EREVGCiAgICAgQllURVNfTUFLRVRSQU5TX01FVEhPRERFRgogICAgIEJZVEVTX1BBUlRJVElPTl9NRVRIT0RERUYKICAgICBCWVRFU19SRVBMQUNFX01FVEhPRERFRgotICAgIHsicmZpbmQiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfcmZpbmQsIE1FVEhfVkFSQVJHUywgcmZpbmRfX2RvY19ffSwKLSAgICB7InJpbmRleCIsIChQeUNGdW5jdGlvbilieXRlc19yaW5kZXgsIE1FVEhfVkFSQVJHUywgcmluZGV4X19kb2NfX30sCi0gICAgeyJyanVzdCIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfcmp1c3QsIE1FVEhfVkFSQVJHUywgcmp1c3RfX2RvY19ffSwKKyAgICB7InJmaW5kIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3JmaW5kLCBNRVRIX1ZBUkFSR1MsIF9QeV9yZmluZF9fZG9jX199LAorICAgIHsicmluZGV4IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3JpbmRleCwgTUVUSF9WQVJBUkdTLCBfUHlfcmluZGV4X19kb2NfX30sCisgICAgeyJyanVzdCIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfcmp1c3QsIE1FVEhfVkFSQVJHUywgX1B5X3JqdXN0X19kb2NfX30sCiAgICAgQllURVNfUlBBUlRJVElPTl9NRVRIT0RERUYKICAgICBCWVRFU19SU1BMSVRfTUVUSE9EREVGCiAgICAgQllURVNfUlNUUklQX01FVEhPRERFRgogICAgIEJZVEVTX1NQTElUX01FVEhPRERFRgogICAgIEJZVEVTX1NQTElUTElORVNfTUVUSE9EREVGCiAgICAgeyJzdGFydHN3aXRoIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3N0YXJ0c3dpdGgsIE1FVEhfVkFSQVJHUywKLSAgICAgc3RhcnRzd2l0aF9fZG9jX199LAorICAgICBfUHlfc3RhcnRzd2l0aF9fZG9jX199LAogICAgIEJZVEVTX1NUUklQX01FVEhPRERFRgogICAgIHsic3dhcGNhc2UiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX3N3YXBjYXNlLCBNRVRIX05PQVJHUywKICAgICAgX1B5X3N3YXBjYXNlX19kb2NfX30sCiAgICAgeyJ0aXRsZSIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfdGl0bGUsIE1FVEhfTk9BUkdTLCBfUHlfdGl0bGVfX2RvY19ffSwKICAgICBCWVRFU19UUkFOU0xBVEVfTUVUSE9EREVGCiAgICAgeyJ1cHBlciIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfdXBwZXIsIE1FVEhfTk9BUkdTLCBfUHlfdXBwZXJfX2RvY19ffSwKLSAgICB7InpmaWxsIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl96ZmlsbCwgTUVUSF9WQVJBUkdTLCB6ZmlsbF9fZG9jX199LAorICAgIHsiemZpbGwiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX3pmaWxsLCBNRVRIX1ZBUkFSR1MsIF9QeV96ZmlsbF9fZG9jX199LAogICAgIHtOVUxMLCAgICAgTlVMTH0gICAgICAgICAgICAgICAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19tb2QoUHlPYmplY3QgKnYsIFB5T2JqZWN0ICp3KQorYnl0ZXNfbW9kKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQogewotICAgIGlmICghUHlCeXRlc19DaGVjayh2KSkKKyAgICBpZiAoIVB5Qnl0ZXNfQ2hlY2soc2VsZikpIHsKICAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwotICAgIHJldHVybiBfUHlCeXRlc19Gb3JtYXQodiwgdyk7CisgICAgfQorICAgIHJldHVybiBfUHlCeXRlc19Gb3JtYXRFeChQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgUHlCeXRlc19HRVRfU0laRShzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnLCAwKTsKIH0KIAogc3RhdGljIFB5TnVtYmVyTWV0aG9kcyBieXRlc19hc19udW1iZXIgPSB7CkBAIC0zMjIxLDE3ICsyNTkwLDE1IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICAvKiBJcyBpdCBhbiBpbnRlZ2VyPyAqLwotICAgIHNpemUgPSBQeU51bWJlcl9Bc1NzaXplX3QoeCwgUHlFeGNfT3ZlcmZsb3dFcnJvcik7Ci0gICAgaWYgKHNpemUgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19PdmVyZmxvd0Vycm9yKSkKKyAgICBpZiAoUHlJbmRleF9DaGVjayh4KSkgeworICAgICAgICBzaXplID0gUHlOdW1iZXJfQXNTc2l6ZV90KHgsIFB5RXhjX092ZXJmbG93RXJyb3IpOworICAgICAgICBpZiAoc2l6ZSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoc2l6ZSA8IDApIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJuZWdhdGl2ZSBjb3VudCIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgZWxzZSB7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNpemUgPCAwKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm5lZ2F0aXZlIGNvdW50Iik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQogICAgICAgICBuZXcgPSBfUHlCeXRlc19Gcm9tU2l6ZShzaXplLCAxKTsKICAgICAgICAgaWYgKG5ldyA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0zMjQxLDEwOCArMjYwOCw5MyBAQAogICAgIHJldHVybiBQeUJ5dGVzX0Zyb21PYmplY3QoeCk7CiB9CiAKLVB5T2JqZWN0ICoKLVB5Qnl0ZXNfRnJvbU9iamVjdChQeU9iamVjdCAqeCkKK3N0YXRpYyBQeU9iamVjdCoKK19QeUJ5dGVzX0Zyb21CdWZmZXIoUHlPYmplY3QgKngpCiB7Ci0gICAgUHlPYmplY3QgKm5ldywgKml0OworICAgIFB5T2JqZWN0ICpuZXc7CisgICAgUHlfYnVmZmVyIHZpZXc7CisKKyAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHgsICZ2aWV3LCBQeUJVRl9GVUxMX1JPKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgbmV3ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCB2aWV3Lmxlbik7CisgICAgaWYgKCFuZXcpCisgICAgICAgIGdvdG8gZmFpbDsKKyAgICBpZiAoUHlCdWZmZXJfVG9Db250aWd1b3VzKCgoUHlCeXRlc09iamVjdCAqKW5ldyktPm9iX3N2YWwsCisgICAgICAgICAgICAgICAgJnZpZXcsIHZpZXcubGVuLCAnQycpIDwgMCkKKyAgICAgICAgZ290byBmYWlsOworICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXcpOworICAgIHJldHVybiBuZXc7CisKK2ZhaWw6CisgICAgUHlfWERFQ1JFRihuZXcpOworICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXcpOworICAgIHJldHVybiBOVUxMOworfQorCisjZGVmaW5lIF9QeUJ5dGVzX0ZST01fTElTVF9CT0RZKHgsIEdFVF9JVEVNKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlPYmplY3QgKmJ5dGVzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X3NzaXplX3QgaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9zc2l6ZV90IHZhbHVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgY2hhciAqc3RyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5T2JqZWN0ICppdGVtOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgYnl0ZXMgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIFB5X1NJWkUoeCkpOyAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChieXRlcyA9PSBOVUxMKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgc3RyID0gKChQeUJ5dGVzT2JqZWN0ICopYnl0ZXMpLT5vYl9zdmFsOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUHlfU0laRSh4KTsgaSsrKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGl0ZW0gPSBHRVRfSVRFTSgoeCksIGkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICB2YWx1ZSA9IFB5TnVtYmVyX0FzU3NpemVfdChpdGVtLCBOVUxMKTsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgaWYgKHZhbHVlID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgaWYgKHZhbHVlIDwgMCB8fCB2YWx1ZSA+PSAyNTYpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJieXRlcyBtdXN0IGJlIGluIHJhbmdlKDAsIDI1NikiKTsgICAgICAgICAgXAorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAqc3RyKysgPSAoY2hhcikgdmFsdWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIGJ5dGVzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfREVDUkVGKGJ5dGVzKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKDApCisKK3N0YXRpYyBQeU9iamVjdCoKK19QeUJ5dGVzX0Zyb21MaXN0KFB5T2JqZWN0ICp4KQoreworICAgIF9QeUJ5dGVzX0ZST01fTElTVF9CT0RZKHgsIFB5TGlzdF9HRVRfSVRFTSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK19QeUJ5dGVzX0Zyb21UdXBsZShQeU9iamVjdCAqeCkKK3sKKyAgICBfUHlCeXRlc19GUk9NX0xJU1RfQk9EWSh4LCBQeVR1cGxlX0dFVF9JVEVNKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK19QeUJ5dGVzX0Zyb21JdGVyYXRvcihQeU9iamVjdCAqaXQsIFB5T2JqZWN0ICp4KQoreworICAgIGNoYXIgKnN0cjsKICAgICBQeV9zc2l6ZV90IGksIHNpemU7Ci0KLSAgICBpZiAoeCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBpZiAoUHlCeXRlc19DaGVja0V4YWN0KHgpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRih4KTsKLSAgICAgICAgcmV0dXJuIHg7Ci0gICAgfQotCi0gICAgLyogVXNlIHRoZSBtb2Rlcm4gYnVmZmVyIGludGVyZmFjZSAqLwotICAgIGlmIChQeU9iamVjdF9DaGVja0J1ZmZlcih4KSkgewotICAgICAgICBQeV9idWZmZXIgdmlldzsKLSAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcih4LCAmdmlldywgUHlCVUZfRlVMTF9STykgPCAwKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIG5ldyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgdmlldy5sZW4pOwotICAgICAgICBpZiAoIW5ldykKLSAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgaWYgKFB5QnVmZmVyX1RvQ29udGlndW91cygoKFB5Qnl0ZXNPYmplY3QgKiluZXcpLT5vYl9zdmFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2aWV3LCB2aWV3LmxlbiwgJ0MnKSA8IDApCi0gICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXcpOwotICAgICAgICByZXR1cm4gbmV3OwotICAgICAgZmFpbDoKLSAgICAgICAgUHlfWERFQ1JFRihuZXcpOwotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2aWV3KTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soeCkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgY29udmVydCB1bmljb2RlIG9iamVjdCB0byBieXRlcyIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBpZiAoUHlMaXN0X0NoZWNrRXhhY3QoeCkpIHsKLSAgICAgICAgbmV3ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBQeV9TSVpFKHgpKTsKLSAgICAgICAgaWYgKG5ldyA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeV9TSVpFKHgpOyBpKyspIHsKLSAgICAgICAgICAgIFB5X3NzaXplX3QgdmFsdWUgPSBQeU51bWJlcl9Bc1NzaXplX3QoCi0gICAgICAgICAgICAgICAgUHlMaXN0X0dFVF9JVEVNKHgsIGkpLCBQeUV4Y19WYWx1ZUVycm9yKTsKLSAgICAgICAgICAgIGlmICh2YWx1ZSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKG5ldyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAodmFsdWUgPCAwIHx8IHZhbHVlID49IDI1NikgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYnl0ZXMgbXVzdCBiZSBpbiByYW5nZSgwLCAyNTYpIik7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKG5ldyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAoKFB5Qnl0ZXNPYmplY3QgKiluZXcpLT5vYl9zdmFsW2ldID0gKGNoYXIpIHZhbHVlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBuZXc7Ci0gICAgfQotICAgIGlmIChQeVR1cGxlX0NoZWNrRXhhY3QoeCkpIHsKLSAgICAgICAgbmV3ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBQeV9TSVpFKHgpKTsKLSAgICAgICAgaWYgKG5ldyA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeV9TSVpFKHgpOyBpKyspIHsKLSAgICAgICAgICAgIFB5X3NzaXplX3QgdmFsdWUgPSBQeU51bWJlcl9Bc1NzaXplX3QoCi0gICAgICAgICAgICAgICAgUHlUdXBsZV9HRVRfSVRFTSh4LCBpKSwgUHlFeGNfVmFsdWVFcnJvcik7Ci0gICAgICAgICAgICBpZiAodmFsdWUgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXcpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHZhbHVlIDwgMCB8fCB2YWx1ZSA+PSAyNTYpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJ5dGVzIG11c3QgYmUgaW4gcmFuZ2UoMCwgMjU2KSIpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXcpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgKChQeUJ5dGVzT2JqZWN0ICopbmV3KS0+b2Jfc3ZhbFtpXSA9IChjaGFyKSB2YWx1ZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gbmV3OwotICAgIH0KKyAgICBfUHlCeXRlc1dyaXRlciB3cml0ZXI7CiAKICAgICAvKiBGb3IgaXRlcmF0b3IgdmVyc2lvbiwgY3JlYXRlIGEgc3RyaW5nIG9iamVjdCBhbmQgcmVzaXplIGFzIG5lZWRlZCAqLwogICAgIHNpemUgPSBQeU9iamVjdF9MZW5ndGhIaW50KHgsIDY0KTsKICAgICBpZiAoc2l6ZSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAvKiBBbGxvY2F0ZSBhbiBleHRyYSBieXRlIHRvIHByZXZlbnQgUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgpIGZyb20KLSAgICAgICByZXR1cm5pbmcgYSBzaGFyZWQgZW1wdHkgYnl0ZXMgc3RyaW5nLiBUaGlzIHJlcXVpcmVkIGJlY2F1c2Ugd2UKLSAgICAgICB3YW50IHRvIGNhbGwgX1B5Qnl0ZXNfUmVzaXplKCkgdGhlIHJldHVybmVkIG9iamVjdCwgd2hpY2ggd2UgY2FuCi0gICAgICAgb25seSBkbyBvbiBieXRlcyBvYmplY3RzIHdpdGggcmVmY291bnQgPT0gMS4gKi8KLSAgICBpZiAoc2l6ZSA9PSAwKQotICAgICAgICBzaXplID0gMTsKLSAgICBuZXcgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNpemUpOwotICAgIGlmIChuZXcgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYXNzZXJ0KFB5X1JFRkNOVChuZXcpID09IDEpOwogCi0gICAgLyogR2V0IHRoZSBpdGVyYXRvciAqLwotICAgIGl0ID0gUHlPYmplY3RfR2V0SXRlcih4KTsKLSAgICBpZiAoaXQgPT0gTlVMTCkKLSAgICAgICAgZ290byBlcnJvcjsKKyAgICBfUHlCeXRlc1dyaXRlcl9Jbml0KCZ3cml0ZXIpOworICAgIHN0ciA9IF9QeUJ5dGVzV3JpdGVyX0FsbG9jKCZ3cml0ZXIsIHNpemUpOworICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgd3JpdGVyLm92ZXJhbGxvY2F0ZSA9IDE7CisgICAgc2l6ZSA9IHdyaXRlci5hbGxvY2F0ZWQ7CiAKICAgICAvKiBSdW4gdGhlIGl0ZXJhdG9yIHRvIGV4aGF1c3Rpb24gKi8KICAgICBmb3IgKGkgPSAwOyA7IGkrKykgewpAQCAtMzM1OCw3ICsyNzEwLDcgQEAKICAgICAgICAgfQogCiAgICAgICAgIC8qIEludGVycHJldCBpdCBhcyBhbiBpbnQgKF9faW5kZXhfXykgKi8KLSAgICAgICAgdmFsdWUgPSBQeU51bWJlcl9Bc1NzaXplX3QoaXRlbSwgUHlFeGNfVmFsdWVFcnJvcik7CisgICAgICAgIHZhbHVlID0gUHlOdW1iZXJfQXNTc2l6ZV90KGl0ZW0sIE5VTEwpOwogICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CiAgICAgICAgIGlmICh2YWx1ZSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgZ290byBlcnJvcjsKQEAgLTMzNzIsMjEgKzI3MjQsNTggQEAKIAogICAgICAgICAvKiBBcHBlbmQgdGhlIGJ5dGUgKi8KICAgICAgICAgaWYgKGkgPj0gc2l6ZSkgewotICAgICAgICAgICAgc2l6ZSA9IDIgKiBzaXplICsgMTsKLSAgICAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJm5ldywgc2l6ZSkgPCAwKQotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBzdHIgPSBfUHlCeXRlc1dyaXRlcl9SZXNpemUoJndyaXRlciwgc3RyLCBzaXplKzEpOworICAgICAgICAgICAgaWYgKHN0ciA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgc2l6ZSA9IHdyaXRlci5hbGxvY2F0ZWQ7CiAgICAgICAgIH0KLSAgICAgICAgKChQeUJ5dGVzT2JqZWN0ICopbmV3KS0+b2Jfc3ZhbFtpXSA9IChjaGFyKSB2YWx1ZTsKKyAgICAgICAgKnN0cisrID0gKGNoYXIpIHZhbHVlOwogICAgIH0KLSAgICBfUHlCeXRlc19SZXNpemUoJm5ldywgaSk7CiAKLSAgICAvKiBDbGVhbiB1cCBhbmQgcmV0dXJuIHN1Y2Nlc3MgKi8KLSAgICBQeV9ERUNSRUYoaXQpOwotICAgIHJldHVybiBuZXc7CisgICAgcmV0dXJuIF9QeUJ5dGVzV3JpdGVyX0ZpbmlzaCgmd3JpdGVyLCBzdHIpOwogCiAgIGVycm9yOgotICAgIFB5X1hERUNSRUYoaXQpOwotICAgIFB5X1hERUNSRUYobmV3KTsKKyAgICBfUHlCeXRlc1dyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOworICAgIHJldHVybiBOVUxMOworfQorCitQeU9iamVjdCAqCitQeUJ5dGVzX0Zyb21PYmplY3QoUHlPYmplY3QgKngpCit7CisgICAgUHlPYmplY3QgKml0LCAqcmVzdWx0OworCisgICAgaWYgKHggPT0gTlVMTCkgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKFB5Qnl0ZXNfQ2hlY2tFeGFjdCh4KSkgeworICAgICAgICBQeV9JTkNSRUYoeCk7CisgICAgICAgIHJldHVybiB4OworICAgIH0KKworICAgIC8qIFVzZSB0aGUgbW9kZXJuIGJ1ZmZlciBpbnRlcmZhY2UgKi8KKyAgICBpZiAoUHlPYmplY3RfQ2hlY2tCdWZmZXIoeCkpCisgICAgICAgIHJldHVybiBfUHlCeXRlc19Gcm9tQnVmZmVyKHgpOworCisgICAgaWYgKFB5TGlzdF9DaGVja0V4YWN0KHgpKQorICAgICAgICByZXR1cm4gX1B5Qnl0ZXNfRnJvbUxpc3QoeCk7CisKKyAgICBpZiAoUHlUdXBsZV9DaGVja0V4YWN0KHgpKQorICAgICAgICByZXR1cm4gX1B5Qnl0ZXNfRnJvbVR1cGxlKHgpOworCisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soeCkpIHsKKyAgICAgICAgaXQgPSBQeU9iamVjdF9HZXRJdGVyKHgpOworICAgICAgICBpZiAoaXQgIT0gTlVMTCkgeworICAgICAgICAgICAgcmVzdWx0ID0gX1B5Qnl0ZXNfRnJvbUl0ZXJhdG9yKGl0LCB4KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihpdCk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgfQorCisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgImNhbm5vdCBjb252ZXJ0ICclLjIwMHMnIG9iamVjdCB0byBieXRlcyIsCisgICAgICAgICAgICAgICAgIHgtPm9iX3R5cGUtPnRwX25hbWUpOwogICAgIHJldHVybiBOVUxMOwogfQogCkBAIC0zNDA0LDcgKzI3OTMsNyBAQAogICAgIG4gPSBQeUJ5dGVzX0dFVF9TSVpFKHRtcCk7CiAgICAgcG5ldyA9IHR5cGUtPnRwX2FsbG9jKHR5cGUsIG4pOwogICAgIGlmIChwbmV3ICE9IE5VTEwpIHsKLSAgICAgICAgUHlfTUVNQ1BZKFB5Qnl0ZXNfQVNfU1RSSU5HKHBuZXcpLAorICAgICAgICBtZW1jcHkoUHlCeXRlc19BU19TVFJJTkcocG5ldyksCiAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyh0bXApLCBuKzEpOwogICAgICAgICAoKFB5Qnl0ZXNPYmplY3QgKilwbmV3KS0+b2Jfc2hhc2ggPQogICAgICAgICAgICAgKChQeUJ5dGVzT2JqZWN0ICopdG1wKS0+b2Jfc2hhc2g7CkBAIC0zNzQ2LDMgKzMxMzUsMjgyIEBACiAgICAgX1B5T2JqZWN0X0dDX1RSQUNLKGl0KTsKICAgICByZXR1cm4gKFB5T2JqZWN0ICopaXQ7CiB9CisKKworLyogX1B5Qnl0ZXNXcml0ZXIgQVBJICovCisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAvKiBPbiBXaW5kb3dzLCBvdmVyYWxsb2NhdGUgYnkgNTAlIGlzIHRoZSBiZXN0IGZhY3RvciAqLworIyAgZGVmaW5lIE9WRVJBTExPQ0FURV9GQUNUT1IgMgorI2Vsc2UKKyAgIC8qIE9uIExpbnV4LCBvdmVyYWxsb2NhdGUgYnkgMjUlIGlzIHRoZSBiZXN0IGZhY3RvciAqLworIyAgZGVmaW5lIE9WRVJBTExPQ0FURV9GQUNUT1IgNAorI2VuZGlmCisKK3ZvaWQKK19QeUJ5dGVzV3JpdGVyX0luaXQoX1B5Qnl0ZXNXcml0ZXIgKndyaXRlcikKK3sKKyAgICAvKiBTZXQgYWxsIGF0dHJpYnV0ZXMgYmVmb3JlIHNtYWxsX2J1ZmZlciB0byAwICovCisgICAgbWVtc2V0KHdyaXRlciwgMCwgb2Zmc2V0b2YoX1B5Qnl0ZXNXcml0ZXIsIHNtYWxsX2J1ZmZlcikpOworI2lmZGVmIFB5X0RFQlVHCisgICAgbWVtc2V0KHdyaXRlci0+c21hbGxfYnVmZmVyLCAweENCLCBzaXplb2Yod3JpdGVyLT5zbWFsbF9idWZmZXIpKTsKKyNlbmRpZgorfQorCit2b2lkCitfUHlCeXRlc1dyaXRlcl9EZWFsbG9jKF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIpCit7CisgICAgUHlfQ0xFQVIod3JpdGVyLT5idWZmZXIpOworfQorCitQeV9MT0NBTF9JTkxJTkUoY2hhciopCitfUHlCeXRlc1dyaXRlcl9Bc1N0cmluZyhfUHlCeXRlc1dyaXRlciAqd3JpdGVyKQoreworICAgIGlmICh3cml0ZXItPnVzZV9zbWFsbF9idWZmZXIpIHsKKyAgICAgICAgYXNzZXJ0KHdyaXRlci0+YnVmZmVyID09IE5VTEwpOworICAgICAgICByZXR1cm4gd3JpdGVyLT5zbWFsbF9idWZmZXI7CisgICAgfQorICAgIGVsc2UgaWYgKHdyaXRlci0+dXNlX2J5dGVhcnJheSkgeworICAgICAgICBhc3NlcnQod3JpdGVyLT5idWZmZXIgIT0gTlVMTCk7CisgICAgICAgIHJldHVybiBQeUJ5dGVBcnJheV9BU19TVFJJTkcod3JpdGVyLT5idWZmZXIpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgYXNzZXJ0KHdyaXRlci0+YnVmZmVyICE9IE5VTEwpOworICAgICAgICByZXR1cm4gUHlCeXRlc19BU19TVFJJTkcod3JpdGVyLT5idWZmZXIpOworICAgIH0KK30KKworUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCitfUHlCeXRlc1dyaXRlcl9HZXRTaXplKF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsIGNoYXIgKnN0cikKK3sKKyAgICBjaGFyICpzdGFydCA9IF9QeUJ5dGVzV3JpdGVyX0FzU3RyaW5nKHdyaXRlcik7CisgICAgYXNzZXJ0KHN0ciAhPSBOVUxMKTsKKyAgICBhc3NlcnQoc3RyID49IHN0YXJ0KTsKKyAgICBhc3NlcnQoc3RyIC0gc3RhcnQgPD0gd3JpdGVyLT5hbGxvY2F0ZWQpOworICAgIHJldHVybiBzdHIgLSBzdGFydDsKK30KKworUHlfTE9DQUxfSU5MSU5FKHZvaWQpCitfUHlCeXRlc1dyaXRlcl9DaGVja0NvbnNpc3RlbmN5KF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsIGNoYXIgKnN0cikKK3sKKyNpZmRlZiBQeV9ERUJVRworICAgIGNoYXIgKnN0YXJ0LCAqZW5kOworCisgICAgaWYgKHdyaXRlci0+dXNlX3NtYWxsX2J1ZmZlcikgeworICAgICAgICBhc3NlcnQod3JpdGVyLT5idWZmZXIgPT0gTlVMTCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBhc3NlcnQod3JpdGVyLT5idWZmZXIgIT0gTlVMTCk7CisgICAgICAgIGlmICh3cml0ZXItPnVzZV9ieXRlYXJyYXkpCisgICAgICAgICAgICBhc3NlcnQoUHlCeXRlQXJyYXlfQ2hlY2tFeGFjdCh3cml0ZXItPmJ1ZmZlcikpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhc3NlcnQoUHlCeXRlc19DaGVja0V4YWN0KHdyaXRlci0+YnVmZmVyKSk7CisgICAgICAgIGFzc2VydChQeV9SRUZDTlQod3JpdGVyLT5idWZmZXIpID09IDEpOworICAgIH0KKworICAgIGlmICh3cml0ZXItPnVzZV9ieXRlYXJyYXkpIHsKKyAgICAgICAgLyogYnl0ZWFycmF5IGhhcyBpdHMgb3duIG92ZXJhbGxvY2F0aW9uIGFsZ29yaXRobSwKKyAgICAgICAgICAgd3JpdGVyIG92ZXJhbGxvY2F0aW9uIG11c3QgYmUgZGlzYWJsZWQgKi8KKyAgICAgICAgYXNzZXJ0KCF3cml0ZXItPm92ZXJhbGxvY2F0ZSk7CisgICAgfQorCisgICAgYXNzZXJ0KDAgPD0gd3JpdGVyLT5hbGxvY2F0ZWQpOworICAgIGFzc2VydCgwIDw9IHdyaXRlci0+bWluX3NpemUgJiYgd3JpdGVyLT5taW5fc2l6ZSA8PSB3cml0ZXItPmFsbG9jYXRlZCk7CisgICAgLyogdGhlIGxhc3QgYnl0ZSBtdXN0IGFsd2F5cyBiZSBudWxsICovCisgICAgc3RhcnQgPSBfUHlCeXRlc1dyaXRlcl9Bc1N0cmluZyh3cml0ZXIpOworICAgIGFzc2VydChzdGFydFt3cml0ZXItPmFsbG9jYXRlZF0gPT0gMCk7CisKKyAgICBlbmQgPSBzdGFydCArIHdyaXRlci0+YWxsb2NhdGVkOworICAgIGFzc2VydChzdHIgIT0gTlVMTCk7CisgICAgYXNzZXJ0KHN0YXJ0IDw9IHN0ciAmJiBzdHIgPD0gZW5kKTsKKyNlbmRpZgorfQorCit2b2lkKgorX1B5Qnl0ZXNXcml0ZXJfUmVzaXplKF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsIHZvaWQgKnN0ciwgUHlfc3NpemVfdCBzaXplKQoreworICAgIFB5X3NzaXplX3QgYWxsb2NhdGVkLCBwb3M7CisKKyAgICBfUHlCeXRlc1dyaXRlcl9DaGVja0NvbnNpc3RlbmN5KHdyaXRlciwgc3RyKTsKKyAgICBhc3NlcnQod3JpdGVyLT5hbGxvY2F0ZWQgPCBzaXplKTsKKworICAgIGFsbG9jYXRlZCA9IHNpemU7CisgICAgaWYgKHdyaXRlci0+b3ZlcmFsbG9jYXRlCisgICAgICAgICYmIGFsbG9jYXRlZCA8PSAoUFlfU1NJWkVfVF9NQVggLSBhbGxvY2F0ZWQgLyBPVkVSQUxMT0NBVEVfRkFDVE9SKSkgeworICAgICAgICAvKiBvdmVyYWxsb2NhdGUgdG8gbGltaXQgdGhlIG51bWJlciBvZiByZWFsbG9jKCkgKi8KKyAgICAgICAgYWxsb2NhdGVkICs9IGFsbG9jYXRlZCAvIE9WRVJBTExPQ0FURV9GQUNUT1I7CisgICAgfQorCisgICAgcG9zID0gX1B5Qnl0ZXNXcml0ZXJfR2V0U2l6ZSh3cml0ZXIsIHN0cik7CisgICAgaWYgKCF3cml0ZXItPnVzZV9zbWFsbF9idWZmZXIpIHsKKyAgICAgICAgaWYgKHdyaXRlci0+dXNlX2J5dGVhcnJheSkgeworICAgICAgICAgICAgaWYgKFB5Qnl0ZUFycmF5X1Jlc2l6ZSh3cml0ZXItPmJ1ZmZlciwgYWxsb2NhdGVkKSkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgLyogd3JpdGVyLT5hbGxvY2F0ZWQgY2FuIGJlIHNtYWxsZXIgdGhhbiB3cml0ZXItPmJ1ZmZlci0+b2JfYWxsb2MsCisgICAgICAgICAgICAgICBidXQgd2UgY2Fubm90IHVzZSBvYl9hbGxvYyBiZWNhdXNlIGJ5dGVzIG1heSBuZWVkIHRvIGJlIG1vdmVkCisgICAgICAgICAgICAgICB0byB1c2UgdGhlIHdob2xlIGJ1ZmZlci4gYnl0ZWFycmF5IHVzZXMgYW4gaW50ZXJuYWwgb3B0aW1pemF0aW9uCisgICAgICAgICAgICAgICB0byBhdm9pZCBtb3Zpbmcgb3IgY29weWluZyBieXRlcyB3aGVuIGJ5dGVzIGFyZSByZW1vdmVkIGF0IHRoZQorICAgICAgICAgICAgICAgYmVnaW5uaW5nIChleDogZGVsIGJ5dGVhcnJheVs6MV0pLiAqLworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmd3JpdGVyLT5idWZmZXIsIGFsbG9jYXRlZCkpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogY29udmVydCBmcm9tIHN0YWNrIGJ1ZmZlciB0byBieXRlcyBvYmplY3QgYnVmZmVyICovCisgICAgICAgIGFzc2VydCh3cml0ZXItPmJ1ZmZlciA9PSBOVUxMKTsKKworICAgICAgICBpZiAod3JpdGVyLT51c2VfYnl0ZWFycmF5KQorICAgICAgICAgICAgd3JpdGVyLT5idWZmZXIgPSBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBhbGxvY2F0ZWQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB3cml0ZXItPmJ1ZmZlciA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgYWxsb2NhdGVkKTsKKyAgICAgICAgaWYgKHdyaXRlci0+YnVmZmVyID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworCisgICAgICAgIGlmIChwb3MgIT0gMCkgeworICAgICAgICAgICAgY2hhciAqZGVzdDsKKyAgICAgICAgICAgIGlmICh3cml0ZXItPnVzZV9ieXRlYXJyYXkpCisgICAgICAgICAgICAgICAgZGVzdCA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyh3cml0ZXItPmJ1ZmZlcik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZGVzdCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHdyaXRlci0+YnVmZmVyKTsKKyAgICAgICAgICAgIG1lbWNweShkZXN0LAorICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci0+c21hbGxfYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgIHBvcyk7CisgICAgICAgIH0KKworICAgICAgICB3cml0ZXItPnVzZV9zbWFsbF9idWZmZXIgPSAwOworI2lmZGVmIFB5X0RFQlVHCisgICAgICAgIG1lbXNldCh3cml0ZXItPnNtYWxsX2J1ZmZlciwgMHhEQiwgc2l6ZW9mKHdyaXRlci0+c21hbGxfYnVmZmVyKSk7CisjZW5kaWYKKyAgICB9CisgICAgd3JpdGVyLT5hbGxvY2F0ZWQgPSBhbGxvY2F0ZWQ7CisKKyAgICBzdHIgPSBfUHlCeXRlc1dyaXRlcl9Bc1N0cmluZyh3cml0ZXIpICsgcG9zOworICAgIF9QeUJ5dGVzV3JpdGVyX0NoZWNrQ29uc2lzdGVuY3kod3JpdGVyLCBzdHIpOworICAgIHJldHVybiBzdHI7CisKK2Vycm9yOgorICAgIF9QeUJ5dGVzV3JpdGVyX0RlYWxsb2Mod3JpdGVyKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKwordm9pZCoKK19QeUJ5dGVzV3JpdGVyX1ByZXBhcmUoX1B5Qnl0ZXNXcml0ZXIgKndyaXRlciwgdm9pZCAqc3RyLCBQeV9zc2l6ZV90IHNpemUpCit7CisgICAgUHlfc3NpemVfdCBuZXdfbWluX3NpemU7CisKKyAgICBfUHlCeXRlc1dyaXRlcl9DaGVja0NvbnNpc3RlbmN5KHdyaXRlciwgc3RyKTsKKyAgICBhc3NlcnQoc2l6ZSA+PSAwKTsKKworICAgIGlmIChzaXplID09IDApIHsKKyAgICAgICAgLyogbm90aGluZyB0byBkbyAqLworICAgICAgICByZXR1cm4gc3RyOworICAgIH0KKworICAgIGlmICh3cml0ZXItPm1pbl9zaXplID4gUFlfU1NJWkVfVF9NQVggLSBzaXplKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIF9QeUJ5dGVzV3JpdGVyX0RlYWxsb2Mod3JpdGVyKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIG5ld19taW5fc2l6ZSA9IHdyaXRlci0+bWluX3NpemUgKyBzaXplOworCisgICAgaWYgKG5ld19taW5fc2l6ZSA+IHdyaXRlci0+YWxsb2NhdGVkKQorICAgICAgICBzdHIgPSBfUHlCeXRlc1dyaXRlcl9SZXNpemUod3JpdGVyLCBzdHIsIG5ld19taW5fc2l6ZSk7CisKKyAgICB3cml0ZXItPm1pbl9zaXplID0gbmV3X21pbl9zaXplOworICAgIHJldHVybiBzdHI7Cit9CisKKy8qIEFsbG9jYXRlIHRoZSBidWZmZXIgdG8gd3JpdGUgc2l6ZSBieXRlcy4KKyAgIFJldHVybiB0aGUgcG9pbnRlciB0byB0aGUgYmVnaW5uaW5nIG9mIGJ1ZmZlciBkYXRhLgorICAgUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gTlVMTCBvbiBlcnJvci4gKi8KK3ZvaWQqCitfUHlCeXRlc1dyaXRlcl9BbGxvYyhfUHlCeXRlc1dyaXRlciAqd3JpdGVyLCBQeV9zc2l6ZV90IHNpemUpCit7CisgICAgLyogZW5zdXJlIHRoYXQgX1B5Qnl0ZXNXcml0ZXJfQWxsb2MoKSBpcyBvbmx5IGNhbGxlZCBvbmNlICovCisgICAgYXNzZXJ0KHdyaXRlci0+bWluX3NpemUgPT0gMCAmJiB3cml0ZXItPmJ1ZmZlciA9PSBOVUxMKTsKKyAgICBhc3NlcnQoc2l6ZSA+PSAwKTsKKworICAgIHdyaXRlci0+dXNlX3NtYWxsX2J1ZmZlciA9IDE7CisjaWZkZWYgUHlfREVCVUcKKyAgICB3cml0ZXItPmFsbG9jYXRlZCA9IHNpemVvZih3cml0ZXItPnNtYWxsX2J1ZmZlcikgLSAxOworICAgIC8qIEluIGRlYnVnIG1vZGUsIGRvbid0IHVzZSB0aGUgZnVsbCBzbWFsbCBidWZmZXIgYmVjYXVzZSBpdCBpcyBsZXNzCisgICAgICAgZWZmaWNpZW50IHRoYW4gYnl0ZXMgYW5kIGJ5dGVhcnJheSBvYmplY3RzIHRvIGRldGVjdCBidWZmZXIgdW5kZXJmbG93CisgICAgICAgYW5kIGJ1ZmZlciBvdmVyZmxvdy4gVXNlIDEwIGJ5dGVzIG9mIHRoZSBzbWFsbCBidWZmZXIgdG8gdGVzdCBhbHNvCisgICAgICAgY29kZSB1c2luZyB0aGUgc21hbGxlciBidWZmZXIgaW4gZGVidWcgbW9kZS4KKworICAgICAgIERvbid0IG1vZGlmeSB0aGUgX1B5Qnl0ZXNXcml0ZXIgc3RydWN0dXJlICh1c2UgYSBzaG9ydGVyIHNtYWxsIGJ1ZmZlcikKKyAgICAgICBpbiBkZWJ1ZyBtb2RlIHRvIGFsc28gYmUgYWJsZSB0byBkZXRlY3Qgc3RhY2sgb3ZlcmZsb3cgd2hlbiBydW5uaW5nCisgICAgICAgdGVzdHMgaW4gZGVidWcgbW9kZS4gVGhlIF9QeUJ5dGVzV3JpdGVyIGlzIGxhcmdlIChtb3JlIHRoYW4gNTEyIGJ5dGVzKSwKKyAgICAgICBpZiBQeV9FbnRlclJlY3Vyc2l2ZUNhbGwoKSBpcyBub3QgdXNlZCBpbiBkZWVwIEMgY2FsbGJhY2ssIHdlIG1heSBoaXQgYQorICAgICAgIHN0YWNrIG92ZXJmbG93LiAqLworICAgIHdyaXRlci0+YWxsb2NhdGVkID0gUHlfTUlOKHdyaXRlci0+YWxsb2NhdGVkLCAxMCk7CisgICAgLyogX1B5Qnl0ZXNXcml0ZXJfQ2hlY2tDb25zaXN0ZW5jeSgpIHJlcXVpcmVzIHRoZSBsYXN0IGJ5dGUgdG8gYmUgMCwKKyAgICAgICB0byBkZXRlY3QgYnVmZmVyIG92ZXJmbG93ICovCisgICAgd3JpdGVyLT5zbWFsbF9idWZmZXJbd3JpdGVyLT5hbGxvY2F0ZWRdID0gMDsKKyNlbHNlCisgICAgd3JpdGVyLT5hbGxvY2F0ZWQgPSBzaXplb2Yod3JpdGVyLT5zbWFsbF9idWZmZXIpOworI2VuZGlmCisgICAgcmV0dXJuIF9QeUJ5dGVzV3JpdGVyX1ByZXBhcmUod3JpdGVyLCB3cml0ZXItPnNtYWxsX2J1ZmZlciwgc2l6ZSk7Cit9CisKK1B5T2JqZWN0ICoKK19QeUJ5dGVzV3JpdGVyX0ZpbmlzaChfUHlCeXRlc1dyaXRlciAqd3JpdGVyLCB2b2lkICpzdHIpCit7CisgICAgUHlfc3NpemVfdCBzaXplOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICBfUHlCeXRlc1dyaXRlcl9DaGVja0NvbnNpc3RlbmN5KHdyaXRlciwgc3RyKTsKKworICAgIHNpemUgPSBfUHlCeXRlc1dyaXRlcl9HZXRTaXplKHdyaXRlciwgc3RyKTsKKyAgICBpZiAoc2l6ZSA9PSAwICYmICF3cml0ZXItPnVzZV9ieXRlYXJyYXkpIHsKKyAgICAgICAgUHlfQ0xFQVIod3JpdGVyLT5idWZmZXIpOworICAgICAgICAvKiBHZXQgdGhlIGVtcHR5IGJ5dGUgc3RyaW5nIHNpbmdsZXRvbiAqLworICAgICAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDApOworICAgIH0KKyAgICBlbHNlIGlmICh3cml0ZXItPnVzZV9zbWFsbF9idWZmZXIpIHsKKyAgICAgICAgaWYgKHdyaXRlci0+dXNlX2J5dGVhcnJheSkgeworICAgICAgICAgICAgcmVzdWx0ID0gUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUod3JpdGVyLT5zbWFsbF9idWZmZXIsIHNpemUpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSh3cml0ZXItPnNtYWxsX2J1ZmZlciwgc2l6ZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJlc3VsdCA9IHdyaXRlci0+YnVmZmVyOworICAgICAgICB3cml0ZXItPmJ1ZmZlciA9IE5VTEw7CisKKyAgICAgICAgaWYgKHNpemUgIT0gd3JpdGVyLT5hbGxvY2F0ZWQpIHsKKyAgICAgICAgICAgIGlmICh3cml0ZXItPnVzZV9ieXRlYXJyYXkpIHsKKyAgICAgICAgICAgICAgICBpZiAoUHlCeXRlQXJyYXlfUmVzaXplKHJlc3VsdCwgc2l6ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJlc3VsdCwgc2l6ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KHJlc3VsdCA9PSBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQqCitfUHlCeXRlc1dyaXRlcl9Xcml0ZUJ5dGVzKF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsIHZvaWQgKnB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqYnl0ZXMsIFB5X3NzaXplX3Qgc2l6ZSkKK3sKKyAgICBjaGFyICpzdHIgPSAoY2hhciAqKXB0cjsKKworICAgIHN0ciA9IF9QeUJ5dGVzV3JpdGVyX1ByZXBhcmUod3JpdGVyLCBzdHIsIHNpemUpOworICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBtZW1jcHkoc3RyLCBieXRlcywgc2l6ZSk7CisgICAgc3RyICs9IHNpemU7CisKKyAgICByZXR1cm4gc3RyOworfQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9jbGFzc29iamVjdC5jIGIvT2JqZWN0cy9jbGFzc29iamVjdC5jCmluZGV4IDVlOGFjNTkuLmIwZWQwMjMgMTAwNjQ0Ci0tLSBhL09iamVjdHMvY2xhc3NvYmplY3QuYworKysgYi9PYmplY3RzL2NsYXNzb2JqZWN0LmMKQEAgLTMwMiwzNCArMzAyLDE5IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1tZXRob2RfY2FsbChQeU9iamVjdCAqZnVuYywgUHlPYmplY3QgKmFyZywgUHlPYmplY3QgKmt3KQorbWV0aG9kX2NhbGwoUHlPYmplY3QgKm1ldGhvZCwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7Ci0gICAgUHlPYmplY3QgKnNlbGYgPSBQeU1ldGhvZF9HRVRfU0VMRihmdW5jKTsKLSAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICpzZWxmLCAqZnVuYzsKIAotICAgIGZ1bmMgPSBQeU1ldGhvZF9HRVRfRlVOQ1RJT04oZnVuYyk7CisgICAgc2VsZiA9IFB5TWV0aG9kX0dFVF9TRUxGKG1ldGhvZCk7CiAgICAgaWYgKHNlbGYgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGVsc2UgewotICAgICAgICBQeV9zc2l6ZV90IGFyZ2NvdW50ID0gUHlUdXBsZV9TaXplKGFyZyk7Ci0gICAgICAgIFB5T2JqZWN0ICpuZXdhcmcgPSBQeVR1cGxlX05ldyhhcmdjb3VudCArIDEpOwotICAgICAgICBpbnQgaTsKLSAgICAgICAgaWYgKG5ld2FyZyA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKLSAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShuZXdhcmcsIDAsIHNlbGYpOwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYXJnY291bnQ7IGkrKykgewotICAgICAgICAgICAgUHlPYmplY3QgKnYgPSBQeVR1cGxlX0dFVF9JVEVNKGFyZywgaSk7Ci0gICAgICAgICAgICBQeV9YSU5DUkVGKHYpOwotICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShuZXdhcmcsIGkrMSwgdik7Ci0gICAgICAgIH0KLSAgICAgICAgYXJnID0gbmV3YXJnOwotICAgIH0KLSAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsKChQeU9iamVjdCAqKWZ1bmMsIGFyZywga3cpOwotICAgIFB5X0RFQ1JFRihhcmcpOwotICAgIHJldHVybiByZXN1bHQ7CisKKyAgICBmdW5jID0gUHlNZXRob2RfR0VUX0ZVTkNUSU9OKG1ldGhvZCk7CisKKyAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxfUHJlcGVuZChmdW5jLCBzZWxmLCBhcmdzLCBrd2FyZ3MpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9jbGluaWMvYnl0ZWFycmF5b2JqZWN0LmMuaCBiL09iamVjdHMvY2xpbmljL2J5dGVhcnJheW9iamVjdC5jLmgKaW5kZXggZTg3YTIyMS4uYzc1YWNiNyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9jbGluaWMvYnl0ZWFycmF5b2JqZWN0LmMuaAorKysgYi9PYmplY3RzL2NsaW5pYy9ieXRlYXJyYXlvYmplY3QuYy5oCkBAIC0zOSw0NSArMzksMzggQEAKIH0KIAogUHlEb2NfU1RSVkFSKGJ5dGVhcnJheV90cmFuc2xhdGVfX2RvY19fLAotInRyYW5zbGF0ZSh0YWJsZSwgW2RlbGV0ZWNoYXJzXSlcbiIKKyJ0cmFuc2xhdGUoJHNlbGYsIHRhYmxlLCAvLCBkZWxldGU9YlwnXCcpXG4iCisiLS1cbiIKKyJcbiIKICJSZXR1cm4gYSBjb3B5IHdpdGggZWFjaCBjaGFyYWN0ZXIgbWFwcGVkIGJ5IHRoZSBnaXZlbiB0cmFuc2xhdGlvbiB0YWJsZS5cbiIKICJcbiIKICIgIHRhYmxlXG4iCiAiICAgIFRyYW5zbGF0aW9uIHRhYmxlLCB3aGljaCBtdXN0IGJlIGEgYnl0ZXMgb2JqZWN0IG9mIGxlbmd0aCAyNTYuXG4iCiAiXG4iCi0iQWxsIGNoYXJhY3RlcnMgb2NjdXJyaW5nIGluIHRoZSBvcHRpb25hbCBhcmd1bWVudCBkZWxldGVjaGFycyBhcmUgcmVtb3ZlZC5cbiIKKyJBbGwgY2hhcmFjdGVycyBvY2N1cnJpbmcgaW4gdGhlIG9wdGlvbmFsIGFyZ3VtZW50IGRlbGV0ZSBhcmUgcmVtb3ZlZC5cbiIKICJUaGUgcmVtYWluaW5nIGNoYXJhY3RlcnMgYXJlIG1hcHBlZCB0aHJvdWdoIHRoZSBnaXZlbiB0cmFuc2xhdGlvbiB0YWJsZS4iKTsKIAogI2RlZmluZSBCWVRFQVJSQVlfVFJBTlNMQVRFX01FVEhPRERFRiAgICBcCi0gICAgeyJ0cmFuc2xhdGUiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3RyYW5zbGF0ZSwgTUVUSF9WQVJBUkdTLCBieXRlYXJyYXlfdHJhbnNsYXRlX19kb2NfX30sCisgICAgeyJ0cmFuc2xhdGUiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3RyYW5zbGF0ZSwgTUVUSF9GQVNUQ0FMTCwgYnl0ZWFycmF5X3RyYW5zbGF0ZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X3RyYW5zbGF0ZV9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgaW50IGdyb3VwX3JpZ2h0XzEsIFB5T2JqZWN0ICpkZWxldGVjaGFycyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmRlbGV0ZWNoYXJzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV90cmFuc2xhdGUoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYnl0ZWFycmF5X3RyYW5zbGF0ZShQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyIiLCAiZGVsZXRlIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3xPOnRyYW5zbGF0ZSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnRhYmxlOwotICAgIGludCBncm91cF9yaWdodF8xID0gMDsKICAgICBQeU9iamVjdCAqZGVsZXRlY2hhcnMgPSBOVUxMOwogCi0gICAgc3dpdGNoIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpKSB7Ci0gICAgICAgIGNhc2UgMToKLSAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzp0cmFuc2xhdGUiLCAmdGFibGUpKQotICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9POnRyYW5zbGF0ZSIsICZ0YWJsZSwgJmRlbGV0ZWNoYXJzKSkKLSAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgICAgICAgICBncm91cF9yaWdodF8xID0gMTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImJ5dGVhcnJheS50cmFuc2xhdGUgcmVxdWlyZXMgMSB0byAyIGFyZ3VtZW50cyIpOwotICAgICAgICAgICAgZ290byBleGl0OworICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmdGFibGUsICZkZWxldGVjaGFycykpIHsKKyAgICAgICAgZ290byBleGl0OwogICAgIH0KLSAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfdHJhbnNsYXRlX2ltcGwoc2VsZiwgdGFibGUsIGdyb3VwX3JpZ2h0XzEsIGRlbGV0ZWNoYXJzKTsKKyAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfdHJhbnNsYXRlX2ltcGwoc2VsZiwgdGFibGUsIGRlbGV0ZWNoYXJzKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwpAQCAtMTA4LDE3ICsxMDEsMjAgQEAKICAgICBQeV9idWZmZXIgdG8gPSB7TlVMTCwgTlVMTH07CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqeSo6bWFrZXRyYW5zIiwKLSAgICAgICAgJmZybSwgJnRvKSkKKyAgICAgICAgJmZybSwgJnRvKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9tYWtldHJhbnNfaW1wbCgmZnJtLCAmdG8pOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZybSAqLwotICAgIGlmIChmcm0ub2JqKQorICAgIGlmIChmcm0ub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJtKTsKKyAgICB9CiAgICAgLyogQ2xlYW51cCBmb3IgdG8gKi8KLSAgICBpZiAodG8ub2JqKQorICAgIGlmICh0by5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ0byk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTE1MiwxNyArMTQ4LDIwIEBACiAgICAgUHlfc3NpemVfdCBjb3VudCA9IC0xOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KnkqfG46cmVwbGFjZSIsCi0gICAgICAgICZvbGQsICZuZXcsICZjb3VudCkpCisgICAgICAgICZvbGQsICZuZXcsICZjb3VudCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfcmVwbGFjZV9pbXBsKHNlbGYsICZvbGQsICZuZXcsIGNvdW50KTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBvbGQgKi8KLSAgICBpZiAob2xkLm9iaikKKyAgICBpZiAob2xkLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJm9sZCk7CisgICAgfQogICAgIC8qIENsZWFudXAgZm9yIG5ldyAqLwotICAgIGlmIChuZXcub2JqKQorICAgIGlmIChuZXcub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmbmV3KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMTgyLDIzICsxODEsMjUgQEAKICIgICAgLTEgKHRoZSBkZWZhdWx0IHZhbHVlKSBtZWFucyBubyBsaW1pdC4iKTsKIAogI2RlZmluZSBCWVRFQVJSQVlfU1BMSVRfTUVUSE9EREVGICAgIFwKLSAgICB7InNwbGl0IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9zcGxpdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGJ5dGVhcnJheV9zcGxpdF9fZG9jX199LAorICAgIHsic3BsaXQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3NwbGl0LCBNRVRIX0ZBU1RDQUxMLCBieXRlYXJyYXlfc3BsaXRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9zcGxpdF9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc2VwLAogICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhzcGxpdCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfc3BsaXQoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorYnl0ZWFycmF5X3NwbGl0KFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic2VwIiwgIm1heHNwbGl0IiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic2VwIiwgIm1heHNwbGl0IiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE9uOnNwbGl0IiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqc2VwID0gUHlfTm9uZTsKICAgICBQeV9zc2l6ZV90IG1heHNwbGl0ID0gLTE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8T246c3BsaXQiLCBfa2V5d29yZHMsCi0gICAgICAgICZzZXAsICZtYXhzcGxpdCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzZXAsICZtYXhzcGxpdCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfc3BsaXRfaW1wbChzZWxmLCBzZXAsIG1heHNwbGl0KTsKIAogZXhpdDoKQEAgLTI1NCwyMyArMjU1LDI1IEBACiAiU3BsaXR0aW5nIGlzIGRvbmUgc3RhcnRpbmcgYXQgdGhlIGVuZCBvZiB0aGUgYnl0ZWFycmF5IGFuZCB3b3JraW5nIHRvIHRoZSBmcm9udC4iKTsKIAogI2RlZmluZSBCWVRFQVJSQVlfUlNQTElUX01FVEhPRERFRiAgICBcCi0gICAgeyJyc3BsaXQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3JzcGxpdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGJ5dGVhcnJheV9yc3BsaXRfX2RvY19ffSwKKyAgICB7InJzcGxpdCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcnNwbGl0LCBNRVRIX0ZBU1RDQUxMLCBieXRlYXJyYXlfcnNwbGl0X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfcnNwbGl0X2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzZXAsCiAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhzcGxpdCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfcnNwbGl0KFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK2J5dGVhcnJheV9yc3BsaXQoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzZXAiLCAibWF4c3BsaXQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzZXAiLCAibWF4c3BsaXQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8T246cnNwbGl0IiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqc2VwID0gUHlfTm9uZTsKICAgICBQeV9zc2l6ZV90IG1heHNwbGl0ID0gLTE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8T246cnNwbGl0IiwgX2tleXdvcmRzLAotICAgICAgICAmc2VwLCAmbWF4c3BsaXQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc2VwLCAmbWF4c3BsaXQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X3JzcGxpdF9pbXBsKHNlbGYsIHNlcCwgbWF4c3BsaXQpOwogCiBleGl0OgpAQCAtMzIwLDggKzMyMyw5IEBACiAgICAgaW50IGl0ZW07CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIm5PJjppbnNlcnQiLAotICAgICAgICAmaW5kZXgsIF9nZXRieXRldmFsdWUsICZpdGVtKSkKKyAgICAgICAgJmluZGV4LCBfZ2V0Ynl0ZXZhbHVlLCAmaXRlbSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfaW5zZXJ0X2ltcGwoc2VsZiwgaW5kZXgsIGl0ZW0pOwogCiBleGl0OgpAQCAtMzQ5LDggKzM1Myw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IGl0ZW07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOmFwcGVuZCIsIF9nZXRieXRldmFsdWUsICZpdGVtKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOmFwcGVuZCIsIF9nZXRieXRldmFsdWUsICZpdGVtKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9hcHBlbmRfaW1wbChzZWxmLCBpdGVtKTsKIAogZXhpdDoKQEAgLTM5NCw4ICszOTksOSBAQAogICAgIFB5X3NzaXplX3QgaW5kZXggPSAtMTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifG46cG9wIiwKLSAgICAgICAgJmluZGV4KSkKKyAgICAgICAgJmluZGV4KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9wb3BfaW1wbChzZWxmLCBpbmRleCk7CiAKIGV4aXQ6CkBAIC00MjMsOCArNDI5LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOnJlbW92ZSIsIF9nZXRieXRldmFsdWUsICZ2YWx1ZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpyZW1vdmUiLCBfZ2V0Ynl0ZXZhbHVlLCAmdmFsdWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X3JlbW92ZV9pbXBsKHNlbGYsIHZhbHVlKTsKIAogZXhpdDoKQEAgLTQ1Myw4ICs0NjAsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAic3RyaXAiLAogICAgICAgICAwLCAxLAotICAgICAgICAmYnl0ZXMpKQorICAgICAgICAmYnl0ZXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X3N0cmlwX2ltcGwoc2VsZiwgYnl0ZXMpOwogCiBleGl0OgpAQCAtNDgzLDggKzQ5MSw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJsc3RyaXAiLAogICAgICAgICAwLCAxLAotICAgICAgICAmYnl0ZXMpKQorICAgICAgICAmYnl0ZXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X2xzdHJpcF9pbXBsKHNlbGYsIGJ5dGVzKTsKIAogZXhpdDoKQEAgLTUxMyw4ICs1MjIsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicnN0cmlwIiwKICAgICAgICAgMCwgMSwKLSAgICAgICAgJmJ5dGVzKSkKKyAgICAgICAgJmJ5dGVzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9yc3RyaXBfaW1wbChzZWxmLCBieXRlcyk7CiAKIGV4aXQ6CkBAIC01MzcsMjMgKzU0NywyNSBAQAogIiAgICBjYW4gaGFuZGxlIFVuaWNvZGVEZWNvZGVFcnJvcnMuIik7CiAKICNkZWZpbmUgQllURUFSUkFZX0RFQ09ERV9NRVRIT0RERUYgICAgXAotICAgIHsiZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9kZWNvZGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBieXRlYXJyYXlfZGVjb2RlX19kb2NfX30sCisgICAgeyJkZWNvZGUiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2RlY29kZSwgTUVUSF9GQVNUQ0FMTCwgYnl0ZWFycmF5X2RlY29kZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X2RlY29kZV9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICplbmNvZGluZywKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X2RlY29kZShQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitieXRlYXJyYXlfZGVjb2RlKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZW5jb2RpbmciLCAiZXJyb3JzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZW5jb2RpbmciLCAiZXJyb3JzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifHNzOmRlY29kZSIsIF9rZXl3b3JkcywgMH07CiAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8c3M6ZGVjb2RlIiwgX2tleXdvcmRzLAotICAgICAgICAmZW5jb2RpbmcsICZlcnJvcnMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZW5jb2RpbmcsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X2RlY29kZV9pbXBsKHNlbGYsIGVuY29kaW5nLCBlcnJvcnMpOwogCiBleGl0OgpAQCAtNTgzLDIxICs1OTUsMjMgQEAKICJ0cnVlLiIpOwogCiAjZGVmaW5lIEJZVEVBUlJBWV9TUExJVExJTkVTX01FVEhPRERFRiAgICBcCi0gICAgeyJzcGxpdGxpbmVzIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9zcGxpdGxpbmVzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgYnl0ZWFycmF5X3NwbGl0bGluZXNfX2RvY19ffSwKKyAgICB7InNwbGl0bGluZXMiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3NwbGl0bGluZXMsIE1FVEhfRkFTVENBTEwsIGJ5dGVhcnJheV9zcGxpdGxpbmVzX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfc3BsaXRsaW5lc19pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBpbnQga2VlcGVuZHMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X3NwbGl0bGluZXMoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorYnl0ZWFycmF5X3NwbGl0bGluZXMoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJrZWVwZW5kcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImtlZXBlbmRzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifGk6c3BsaXRsaW5lcyIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IGtlZXBlbmRzID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxpOnNwbGl0bGluZXMiLCBfa2V5d29yZHMsCi0gICAgICAgICZrZWVwZW5kcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZrZWVwZW5kcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfc3BsaXRsaW5lc19pbXBsKHNlbGYsIGtlZXBlbmRzKTsKIAogZXhpdDoKQEAgLTYxNywxNyArNjMxLDE4IEBACiAgICAgeyJmcm9taGV4IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9mcm9taGV4LCBNRVRIX098TUVUSF9DTEFTUywgYnl0ZWFycmF5X2Zyb21oZXhfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9mcm9taGV4X2ltcGwoUHlPYmplY3QqY2xzLCBQeU9iamVjdCAqc3RyaW5nKTsKK2J5dGVhcnJheV9mcm9taGV4X2ltcGwoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqc3RyaW5nKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9mcm9taGV4KFB5VHlwZU9iamVjdCAqY2xzLCBQeU9iamVjdCAqYXJnKQorYnl0ZWFycmF5X2Zyb21oZXgoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJnKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpzdHJpbmc7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6ZnJvbWhleCIsICZzdHJpbmcpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTpmcm9taGV4IiwgJnN0cmluZykpIHsKICAgICAgICAgZ290byBleGl0OwotICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9mcm9taGV4X2ltcGwoKFB5T2JqZWN0KiljbHMsIHN0cmluZyk7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9mcm9taGV4X2ltcGwodHlwZSwgc3RyaW5nKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwpAQCAtNjcwLDggKzY4NSw5IEBACiAgICAgaW50IHByb3RvID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGk6X19yZWR1Y2VfZXhfXyIsCi0gICAgICAgICZwcm90bykpCisgICAgICAgICZwcm90bykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfcmVkdWNlX2V4X2ltcGwoc2VsZiwgcHJvdG8pOwogCiBleGl0OgpAQCAtNjk1LDQgKzcxMSw0IEBACiB7CiAgICAgcmV0dXJuIGJ5dGVhcnJheV9zaXplb2ZfaW1wbChzZWxmKTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05NjZjMTVmZjIyYzVlMjQzIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yMjUzNDJhNjgwMzkxYjljIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvY2xpbmljL2J5dGVzb2JqZWN0LmMuaCBiL09iamVjdHMvY2xpbmljL2J5dGVzb2JqZWN0LmMuaAppbmRleCA1YTFhNWU5Li5hMTFlYmQyIDEwMDY0NAotLS0gYS9PYmplY3RzL2NsaW5pYy9ieXRlc29iamVjdC5jLmgKKysrIGIvT2JqZWN0cy9jbGluaWMvYnl0ZXNvYmplY3QuYy5oCkBAIC0xNywyMiArMTcsMjQgQEAKICIgICAgLTEgKHRoZSBkZWZhdWx0IHZhbHVlKSBtZWFucyBubyBsaW1pdC4iKTsKIAogI2RlZmluZSBCWVRFU19TUExJVF9NRVRIT0RERUYgICAgXAotICAgIHsic3BsaXQiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfc3BsaXQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBieXRlc19zcGxpdF9fZG9jX199LAorICAgIHsic3BsaXQiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfc3BsaXQsIE1FVEhfRkFTVENBTEwsIGJ5dGVzX3NwbGl0X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19zcGxpdF9pbXBsKFB5Qnl0ZXNPYmplY3Qqc2VsZiwgUHlPYmplY3QgKnNlcCwgUHlfc3NpemVfdCBtYXhzcGxpdCk7CitieXRlc19zcGxpdF9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzZXAsIFB5X3NzaXplX3QgbWF4c3BsaXQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfc3BsaXQoUHlCeXRlc09iamVjdCpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK2J5dGVzX3NwbGl0KFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzZXAiLCAibWF4c3BsaXQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzZXAiLCAibWF4c3BsaXQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8T246c3BsaXQiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpzZXAgPSBQeV9Ob25lOwogICAgIFB5X3NzaXplX3QgbWF4c3BsaXQgPSAtMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPbjpzcGxpdCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnNlcCwgJm1heHNwbGl0KSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnNlcCwgJm1heHNwbGl0KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX3NwbGl0X2ltcGwoc2VsZiwgc2VwLCBtYXhzcGxpdCk7CiAKIGV4aXQ6CkBAIC02NCwxNCArNjYsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgc2VwID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5KjpwYXJ0aXRpb24iLCAmc2VwKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOnBhcnRpdGlvbiIsICZzZXApKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfcGFydGl0aW9uX2ltcGwoc2VsZiwgJnNlcCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3Igc2VwICovCi0gICAgaWYgKHNlcC5vYmopCisgICAgaWYgKHNlcC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZzZXApOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0xMDEsMTQgKzEwNSwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBzZXAgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOnJwYXJ0aXRpb24iLCAmc2VwKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOnJwYXJ0aXRpb24iLCAmc2VwKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX3JwYXJ0aXRpb25faW1wbChzZWxmLCAmc2VwKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBzZXAgKi8KLSAgICBpZiAoc2VwLm9iaikKKyAgICBpZiAoc2VwLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnNlcCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTEzMCwyMiArMTM2LDI0IEBACiAiU3BsaXR0aW5nIGlzIGRvbmUgc3RhcnRpbmcgYXQgdGhlIGVuZCBvZiB0aGUgYnl0ZXMgYW5kIHdvcmtpbmcgdG8gdGhlIGZyb250LiIpOwogCiAjZGVmaW5lIEJZVEVTX1JTUExJVF9NRVRIT0RERUYgICAgXAotICAgIHsicnNwbGl0IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3JzcGxpdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGJ5dGVzX3JzcGxpdF9fZG9jX199LAorICAgIHsicnNwbGl0IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3JzcGxpdCwgTUVUSF9GQVNUQ0FMTCwgYnl0ZXNfcnNwbGl0X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19yc3BsaXRfaW1wbChQeUJ5dGVzT2JqZWN0KnNlbGYsIFB5T2JqZWN0ICpzZXAsIFB5X3NzaXplX3QgbWF4c3BsaXQpOworYnl0ZXNfcnNwbGl0X2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKnNlcCwgUHlfc3NpemVfdCBtYXhzcGxpdCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19yc3BsaXQoUHlCeXRlc09iamVjdCpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK2J5dGVzX3JzcGxpdChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic2VwIiwgIm1heHNwbGl0IiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic2VwIiwgIm1heHNwbGl0IiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE9uOnJzcGxpdCIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnNlcCA9IFB5X05vbmU7CiAgICAgUHlfc3NpemVfdCBtYXhzcGxpdCA9IC0xOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE9uOnJzcGxpdCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnNlcCwgJm1heHNwbGl0KSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnNlcCwgJm1heHNwbGl0KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX3JzcGxpdF9pbXBsKHNlbGYsIHNlcCwgbWF4c3BsaXQpOwogCiBleGl0OgpAQCAtMTg5LDggKzE5Nyw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzdHJpcCIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZieXRlcykpCisgICAgICAgICZieXRlcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlc19zdHJpcF9pbXBsKHNlbGYsIGJ5dGVzKTsKIAogZXhpdDoKQEAgLTIxOSw4ICsyMjgsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAibHN0cmlwIiwKICAgICAgICAgMCwgMSwKLSAgICAgICAgJmJ5dGVzKSkKKyAgICAgICAgJmJ5dGVzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX2xzdHJpcF9pbXBsKHNlbGYsIGJ5dGVzKTsKIAogZXhpdDoKQEAgLTI0OSw4ICsyNTksOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicnN0cmlwIiwKICAgICAgICAgMCwgMSwKLSAgICAgICAgJmJ5dGVzKSkKKyAgICAgICAgJmJ5dGVzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX3JzdHJpcF9pbXBsKHNlbGYsIGJ5dGVzKTsKIAogZXhpdDoKQEAgLTI1OCw0NSArMjY5LDM4IEBACiB9CiAKIFB5RG9jX1NUUlZBUihieXRlc190cmFuc2xhdGVfX2RvY19fLAotInRyYW5zbGF0ZSh0YWJsZSwgW2RlbGV0ZWNoYXJzXSlcbiIKKyJ0cmFuc2xhdGUoJHNlbGYsIHRhYmxlLCAvLCBkZWxldGU9YlwnXCcpXG4iCisiLS1cbiIKKyJcbiIKICJSZXR1cm4gYSBjb3B5IHdpdGggZWFjaCBjaGFyYWN0ZXIgbWFwcGVkIGJ5IHRoZSBnaXZlbiB0cmFuc2xhdGlvbiB0YWJsZS5cbiIKICJcbiIKICIgIHRhYmxlXG4iCiAiICAgIFRyYW5zbGF0aW9uIHRhYmxlLCB3aGljaCBtdXN0IGJlIGEgYnl0ZXMgb2JqZWN0IG9mIGxlbmd0aCAyNTYuXG4iCiAiXG4iCi0iQWxsIGNoYXJhY3RlcnMgb2NjdXJyaW5nIGluIHRoZSBvcHRpb25hbCBhcmd1bWVudCBkZWxldGVjaGFycyBhcmUgcmVtb3ZlZC5cbiIKKyJBbGwgY2hhcmFjdGVycyBvY2N1cnJpbmcgaW4gdGhlIG9wdGlvbmFsIGFyZ3VtZW50IGRlbGV0ZSBhcmUgcmVtb3ZlZC5cbiIKICJUaGUgcmVtYWluaW5nIGNoYXJhY3RlcnMgYXJlIG1hcHBlZCB0aHJvdWdoIHRoZSBnaXZlbiB0cmFuc2xhdGlvbiB0YWJsZS4iKTsKIAogI2RlZmluZSBCWVRFU19UUkFOU0xBVEVfTUVUSE9EREVGICAgIFwKLSAgICB7InRyYW5zbGF0ZSIsIChQeUNGdW5jdGlvbilieXRlc190cmFuc2xhdGUsIE1FVEhfVkFSQVJHUywgYnl0ZXNfdHJhbnNsYXRlX19kb2NfX30sCisgICAgeyJ0cmFuc2xhdGUiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfdHJhbnNsYXRlLCBNRVRIX0ZBU1RDQUxMLCBieXRlc190cmFuc2xhdGVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX3RyYW5zbGF0ZV9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp0YWJsZSwgaW50IGdyb3VwX3JpZ2h0XzEsCitieXRlc190cmFuc2xhdGVfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGFibGUsCiAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZGVsZXRlY2hhcnMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfdHJhbnNsYXRlKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYnl0ZXNfdHJhbnNsYXRlKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiIiwgImRlbGV0ZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98Tzp0cmFuc2xhdGUiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICp0YWJsZTsKLSAgICBpbnQgZ3JvdXBfcmlnaHRfMSA9IDA7CiAgICAgUHlPYmplY3QgKmRlbGV0ZWNoYXJzID0gTlVMTDsKIAotICAgIHN3aXRjaCAoUHlUdXBsZV9HRVRfU0laRShhcmdzKSkgewotICAgICAgICBjYXNlIDE6Ci0gICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86dHJhbnNsYXRlIiwgJnRhYmxlKSkKLSAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPTzp0cmFuc2xhdGUiLCAmdGFibGUsICZkZWxldGVjaGFycykpCi0gICAgICAgICAgICAgICAgZ290byBleGl0OwotICAgICAgICAgICAgZ3JvdXBfcmlnaHRfMSA9IDE7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJieXRlcy50cmFuc2xhdGUgcmVxdWlyZXMgMSB0byAyIGFyZ3VtZW50cyIpOwotICAgICAgICAgICAgZ290byBleGl0OworICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmdGFibGUsICZkZWxldGVjaGFycykpIHsKKyAgICAgICAgZ290byBleGl0OwogICAgIH0KLSAgICByZXR1cm5fdmFsdWUgPSBieXRlc190cmFuc2xhdGVfaW1wbChzZWxmLCB0YWJsZSwgZ3JvdXBfcmlnaHRfMSwgZGVsZXRlY2hhcnMpOworICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX3RyYW5zbGF0ZV9pbXBsKHNlbGYsIHRhYmxlLCBkZWxldGVjaGFycyk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKQEAgLTMyNywxNyArMzMxLDIwIEBACiAgICAgUHlfYnVmZmVyIHRvID0ge05VTEwsIE5VTEx9OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KnkqOm1ha2V0cmFucyIsCi0gICAgICAgICZmcm0sICZ0bykpCisgICAgICAgICZmcm0sICZ0bykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlc19tYWtldHJhbnNfaW1wbCgmZnJtLCAmdG8pOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZybSAqLwotICAgIGlmIChmcm0ub2JqKQorICAgIGlmIChmcm0ub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJtKTsKKyAgICB9CiAgICAgLyogQ2xlYW51cCBmb3IgdG8gKi8KLSAgICBpZiAodG8ub2JqKQorICAgIGlmICh0by5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ0byk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTM1OSwxMSArMzY2LDExIEBACiAgICAgeyJyZXBsYWNlIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3JlcGxhY2UsIE1FVEhfVkFSQVJHUywgYnl0ZXNfcmVwbGFjZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfcmVwbGFjZV9pbXBsKFB5Qnl0ZXNPYmplY3Qqc2VsZiwgUHlfYnVmZmVyICpvbGQsIFB5X2J1ZmZlciAqbmV3LAorYnl0ZXNfcmVwbGFjZV9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqb2xkLCBQeV9idWZmZXIgKm5ldywKICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGNvdW50KTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX3JlcGxhY2UoUHlCeXRlc09iamVjdCpzZWxmLCBQeU9iamVjdCAqYXJncykKK2J5dGVzX3JlcGxhY2UoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIG9sZCA9IHtOVUxMLCBOVUxMfTsKQEAgLTM3MSwxNyArMzc4LDIwIEBACiAgICAgUHlfc3NpemVfdCBjb3VudCA9IC0xOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KnkqfG46cmVwbGFjZSIsCi0gICAgICAgICZvbGQsICZuZXcsICZjb3VudCkpCisgICAgICAgICZvbGQsICZuZXcsICZjb3VudCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlc19yZXBsYWNlX2ltcGwoc2VsZiwgJm9sZCwgJm5ldywgY291bnQpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIG9sZCAqLwotICAgIGlmIChvbGQub2JqKQorICAgIGlmIChvbGQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmb2xkKTsKKyAgICB9CiAgICAgLyogQ2xlYW51cCBmb3IgbmV3ICovCi0gICAgaWYgKG5ldy5vYmopCisgICAgaWYgKG5ldy5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZuZXcpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC00MDIsMjMgKzQxMiwyNSBAQAogIiAgICBjYW4gaGFuZGxlIFVuaWNvZGVEZWNvZGVFcnJvcnMuIik7CiAKICNkZWZpbmUgQllURVNfREVDT0RFX01FVEhPRERFRiAgICBcCi0gICAgeyJkZWNvZGUiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfZGVjb2RlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgYnl0ZXNfZGVjb2RlX19kb2NfX30sCisgICAgeyJkZWNvZGUiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfZGVjb2RlLCBNRVRIX0ZBU1RDQUxMLCBieXRlc19kZWNvZGVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX2RlY29kZV9pbXBsKFB5Qnl0ZXNPYmplY3Qqc2VsZiwgY29uc3QgY2hhciAqZW5jb2RpbmcsCitieXRlc19kZWNvZGVfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICplbmNvZGluZywKICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19kZWNvZGUoUHlCeXRlc09iamVjdCpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK2J5dGVzX2RlY29kZShQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZW5jb2RpbmciLCAiZXJyb3JzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZW5jb2RpbmciLCAiZXJyb3JzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifHNzOmRlY29kZSIsIF9rZXl3b3JkcywgMH07CiAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8c3M6ZGVjb2RlIiwgX2tleXdvcmRzLAotICAgICAgICAmZW5jb2RpbmcsICZlcnJvcnMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZW5jb2RpbmcsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfZGVjb2RlX2ltcGwoc2VsZiwgZW5jb2RpbmcsIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC00MzUsMjEgKzQ0NywyMyBAQAogInRydWUuIik7CiAKICNkZWZpbmUgQllURVNfU1BMSVRMSU5FU19NRVRIT0RERUYgICAgXAotICAgIHsic3BsaXRsaW5lcyIsIChQeUNGdW5jdGlvbilieXRlc19zcGxpdGxpbmVzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgYnl0ZXNfc3BsaXRsaW5lc19fZG9jX199LAorICAgIHsic3BsaXRsaW5lcyIsIChQeUNGdW5jdGlvbilieXRlc19zcGxpdGxpbmVzLCBNRVRIX0ZBU1RDQUxMLCBieXRlc19zcGxpdGxpbmVzX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19zcGxpdGxpbmVzX2ltcGwoUHlCeXRlc09iamVjdCpzZWxmLCBpbnQga2VlcGVuZHMpOworYnl0ZXNfc3BsaXRsaW5lc19pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIGludCBrZWVwZW5kcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19zcGxpdGxpbmVzKFB5Qnl0ZXNPYmplY3Qqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitieXRlc19zcGxpdGxpbmVzKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJrZWVwZW5kcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImtlZXBlbmRzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifGk6c3BsaXRsaW5lcyIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IGtlZXBlbmRzID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxpOnNwbGl0bGluZXMiLCBfa2V5d29yZHMsCi0gICAgICAgICZrZWVwZW5kcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZrZWVwZW5kcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlc19zcGxpdGxpbmVzX2ltcGwoc2VsZiwga2VlcGVuZHMpOwogCiBleGl0OgpAQCAtNDc3LDExICs0OTEsMTIgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeU9iamVjdCAqc3RyaW5nOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOmZyb21oZXgiLCAmc3RyaW5nKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6ZnJvbWhleCIsICZzdHJpbmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfZnJvbWhleF9pbXBsKHR5cGUsIHN0cmluZyk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iZDBjZThmMjVkN2UxOGY0IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yZGMzYzkzY2ZkMmRjNDQwIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvY2xpbmljL2RpY3RvYmplY3QuYy5oIGIvT2JqZWN0cy9jbGluaWMvZGljdG9iamVjdC5jLmgKaW5kZXggNTI4OGI5YS4uZDBjZGZjMyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9jbGluaWMvZGljdG9iamVjdC5jLmgKKysrIGIvT2JqZWN0cy9jbGluaWMvZGljdG9iamVjdC5jLmgKQEAgLTIzLDggKzIzLDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImZyb21rZXlzIiwKICAgICAgICAgMSwgMiwKLSAgICAgICAgJml0ZXJhYmxlLCAmdmFsdWUpKQorICAgICAgICAmaXRlcmFibGUsICZ2YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBkaWN0X2Zyb21rZXlzX2ltcGwodHlwZSwgaXRlcmFibGUsIHZhbHVlKTsKIAogZXhpdDoKQEAgLTM5LDQgKzQwLDQgQEAKIAogI2RlZmluZSBESUNUX19fQ09OVEFJTlNfX19NRVRIT0RERUYgICAgXAogICAgIHsiX19jb250YWluc19fIiwgKFB5Q0Z1bmN0aW9uKWRpY3RfX19jb250YWluc19fLCBNRVRIX098TUVUSF9DT0VYSVNULCBkaWN0X19fY29udGFpbnNfX19fZG9jX199LAotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWZlNzRkNjc2MzMyZmRiYTYgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTkyNjMyNjEwOWUzZDk4MzkgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9jbGluaWMvdW5pY29kZW9iamVjdC5jLmggYi9PYmplY3RzL2NsaW5pYy91bmljb2Rlb2JqZWN0LmMuaAppbmRleCBkNDJhNzAwLi44OTFlOTBjIDEwMDY0NAotLS0gYS9PYmplY3RzL2NsaW5pYy91bmljb2Rlb2JqZWN0LmMuaAorKysgYi9PYmplY3RzL2NsaW5pYy91bmljb2Rlb2JqZWN0LmMuaApAQCAtMzEsMTEgKzMxLDEyIEBACiAgICAgUHlPYmplY3QgKnogPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfFVVOm1ha2V0cmFucyIsCi0gICAgICAgICZ4LCAmeSwgJnopKQorICAgICAgICAmeCwgJnksICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHVuaWNvZGVfbWFrZXRyYW5zX2ltcGwoeCwgeSwgeik7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05NGFmZmRmZjViMmRhZmY1IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00YTg2ZGQxMDhkOTJkMTA0IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvY29kZW9iamVjdC5jIGIvT2JqZWN0cy9jb2Rlb2JqZWN0LmMKaW5kZXggYzMzNDYyNi4uZjdmOTFhOCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9jb2Rlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9jb2Rlb2JqZWN0LmMKQEAgLTEsMyArMSw1IEBACisjaW5jbHVkZSA8c3RkYm9vbC5oPgorCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAiY29kZS5oIgogI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgpAQCAtNSw2ICs3LDEyIEBACiAjZGVmaW5lIE5BTUVfQ0hBUlMgXAogICAgICIwMTIzNDU2Nzg5QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiCiAKKy8qIEhvbGRlciBmb3IgY29fZXh0cmEgaW5mb3JtYXRpb24gKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeV9zc2l6ZV90IGNlX3NpemU7CisgICAgdm9pZCAqKmNlX2V4dHJhczsKK30gX1B5Q29kZU9iamVjdEV4dHJhOworCiAvKiBhbGxfbmFtZV9jaGFycyhzKTogdHJ1ZSBpZmYgYWxsIGNoYXJzIGluIHMgYXJlIHZhbGlkIE5BTUVfQ0hBUlMgKi8KIAogc3RhdGljIGludApAQCAtMTM2LDcgKzE0NCw3IEBACiAgICAgICAgIFB5X3NzaXplX3QgdG90YWxfYXJncyA9IGFyZ2NvdW50ICsga3dvbmx5YXJnY291bnQgKwogICAgICAgICAgICAgKChmbGFncyAmIENPX1ZBUkFSR1MpICE9IDApICsgKChmbGFncyAmIENPX1ZBUktFWVdPUkRTKSAhPSAwKTsKICAgICAgICAgUHlfc3NpemVfdCBhbGxvY19zaXplID0gc2l6ZW9mKHVuc2lnbmVkIGNoYXIpICogbl9jZWxsdmFyczsKLSAgICAgICAgaW50IHVzZWRfY2VsbDJhcmcgPSAwOworICAgICAgICBib29sIHVzZWRfY2VsbDJhcmcgPSBmYWxzZTsKICAgICAgICAgY2VsbDJhcmcgPSBQeU1lbV9NQUxMT0MoYWxsb2Nfc2l6ZSk7CiAgICAgICAgIGlmIChjZWxsMmFyZyA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xNDksNyArMTU3LDcgQEAKICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJnID0gUHlUdXBsZV9HRVRfSVRFTSh2YXJuYW1lcywgaik7CiAgICAgICAgICAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ29tcGFyZShjZWxsLCBhcmcpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNlbGwyYXJnW2ldID0gajsKLSAgICAgICAgICAgICAgICAgICAgdXNlZF9jZWxsMmFyZyA9IDE7CisgICAgICAgICAgICAgICAgICAgIHVzZWRfY2VsbDJhcmcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0xOTIsNiArMjAwLDcgQEAKICAgICBjby0+Y29fbG5vdGFiID0gbG5vdGFiOwogICAgIGNvLT5jb196b21iaWVmcmFtZSA9IE5VTEw7CiAgICAgY28tPmNvX3dlYWtyZWZsaXN0ID0gTlVMTDsKKyAgICBjby0+Y29fZXh0cmEgPSBOVUxMOwogICAgIHJldHVybiBjbzsKIH0KIApAQCAtNDAxLDYgKzQxMCwyMSBAQAogc3RhdGljIHZvaWQKIGNvZGVfZGVhbGxvYyhQeUNvZGVPYmplY3QgKmNvKQogeworICAgIGlmIChjby0+Y29fZXh0cmEgIT0gTlVMTCkgeworICAgICAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dldCgpOworICAgICAgICBfUHlDb2RlT2JqZWN0RXh0cmEgKmNvX2V4dHJhID0gY28tPmNvX2V4dHJhOworCisgICAgICAgIGZvciAoUHlfc3NpemVfdCBpID0gMDsgaSA8IGNvX2V4dHJhLT5jZV9zaXplOyBpKyspIHsKKyAgICAgICAgICAgIGZyZWVmdW5jIGZyZWVfZXh0cmEgPSB0c3RhdGUtPmNvX2V4dHJhX2ZyZWVmdW5jc1tpXTsKKworICAgICAgICAgICAgaWYgKGZyZWVfZXh0cmEgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGZyZWVfZXh0cmEoY29fZXh0cmEtPmNlX2V4dHJhc1tpXSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBQeU1lbV9GUkVFKGNvLT5jb19leHRyYSk7CisgICAgfQorCiAgICAgUHlfWERFQ1JFRihjby0+Y29fY29kZSk7CiAgICAgUHlfWERFQ1JFRihjby0+Y29fY29uc3RzKTsKICAgICBQeV9YREVDUkVGKGNvLT5jb19uYW1lcyk7CkBAIC03MzQsNyArNzU4LDggQEAKICAgICAgICAgYWRkciArPSAqcCsrOwogICAgICAgICBpZiAoYWRkciA+IGFkZHJxKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGxpbmUgKz0gKnArKzsKKyAgICAgICAgbGluZSArPSAoc2lnbmVkIGNoYXIpKnA7CisgICAgICAgIHArKzsKICAgICB9CiAgICAgcmV0dXJuIGxpbmU7CiB9CkBAIC03NjksMTcgKzc5NCwxOSBAQAogICAgICAgICBpZiAoYWRkciArICpwID4gbGFzdGkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgYWRkciArPSAqcCsrOwotICAgICAgICBpZiAoKnApCisgICAgICAgIGlmICgoc2lnbmVkIGNoYXIpKnApCiAgICAgICAgICAgICBib3VuZHMtPmFwX2xvd2VyID0gYWRkcjsKLSAgICAgICAgbGluZSArPSAqcCsrOworICAgICAgICBsaW5lICs9IChzaWduZWQgY2hhcikqcDsKKyAgICAgICAgcCsrOwogICAgICAgICAtLXNpemU7CiAgICAgfQogCiAgICAgaWYgKHNpemUgPiAwKSB7CiAgICAgICAgIHdoaWxlICgtLXNpemUgPj0gMCkgewogICAgICAgICAgICAgYWRkciArPSAqcCsrOwotICAgICAgICAgICAgaWYgKCpwKyspCisgICAgICAgICAgICBpZiAoKHNpZ25lZCBjaGFyKSpwKQogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgcCsrOwogICAgICAgICB9CiAgICAgICAgIGJvdW5kcy0+YXBfdXBwZXIgPSBhZGRyOwogICAgIH0KQEAgLTc4OSwzICs4MTYsODAgQEAKIAogICAgIHJldHVybiBsaW5lOwogfQorCisKK2ludAorX1B5Q29kZV9HZXRFeHRyYShQeU9iamVjdCAqY29kZSwgUHlfc3NpemVfdCBpbmRleCwgdm9pZCAqKmV4dHJhKQoreworICAgIGFzc2VydCgqZXh0cmEgPT0gTlVMTCk7CisKKyAgICBpZiAoIVB5Q29kZV9DaGVjayhjb2RlKSkgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIFB5Q29kZU9iamVjdCAqbyA9IChQeUNvZGVPYmplY3QqKSBjb2RlOworICAgIF9QeUNvZGVPYmplY3RFeHRyYSAqY29fZXh0cmEgPSAoX1B5Q29kZU9iamVjdEV4dHJhKikgby0+Y29fZXh0cmE7CisKKworICAgIGlmIChjb19leHRyYSA9PSBOVUxMIHx8IGNvX2V4dHJhLT5jZV9zaXplIDw9IGluZGV4KSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgICpleHRyYSA9IGNvX2V4dHJhLT5jZV9leHRyYXNbaW5kZXhdOworICAgIHJldHVybiAwOworfQorCisKK2ludAorX1B5Q29kZV9TZXRFeHRyYShQeU9iamVjdCAqY29kZSwgUHlfc3NpemVfdCBpbmRleCwgdm9pZCAqZXh0cmEpCit7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HZXQoKTsKKworICAgIGlmICghUHlDb2RlX0NoZWNrKGNvZGUpIHx8IGluZGV4IDwgMCB8fAorICAgICAgICAgICAgaW5kZXggPj0gdHN0YXRlLT5jb19leHRyYV91c2VyX2NvdW50KSB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgUHlDb2RlT2JqZWN0ICpvID0gKFB5Q29kZU9iamVjdCopIGNvZGU7CisgICAgX1B5Q29kZU9iamVjdEV4dHJhICpjb19leHRyYSA9IChfUHlDb2RlT2JqZWN0RXh0cmEgKikgby0+Y29fZXh0cmE7CisKKyAgICBpZiAoY29fZXh0cmEgPT0gTlVMTCkgeworICAgICAgICBvLT5jb19leHRyYSA9IChfUHlDb2RlT2JqZWN0RXh0cmEqKSBQeU1lbV9NYWxsb2MoCisgICAgICAgICAgICBzaXplb2YoX1B5Q29kZU9iamVjdEV4dHJhKSk7CisgICAgICAgIGlmIChvLT5jb19leHRyYSA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgY29fZXh0cmEgPSAoX1B5Q29kZU9iamVjdEV4dHJhICopIG8tPmNvX2V4dHJhOworCisgICAgICAgIGNvX2V4dHJhLT5jZV9leHRyYXMgPSBQeU1lbV9NYWxsb2MoCisgICAgICAgICAgICB0c3RhdGUtPmNvX2V4dHJhX3VzZXJfY291bnQgKiBzaXplb2Yodm9pZCopKTsKKyAgICAgICAgaWYgKGNvX2V4dHJhLT5jZV9leHRyYXMgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisKKyAgICAgICAgY29fZXh0cmEtPmNlX3NpemUgPSB0c3RhdGUtPmNvX2V4dHJhX3VzZXJfY291bnQ7CisKKyAgICAgICAgZm9yIChQeV9zc2l6ZV90IGkgPSAwOyBpIDwgY29fZXh0cmEtPmNlX3NpemU7IGkrKykgeworICAgICAgICAgICAgY29fZXh0cmEtPmNlX2V4dHJhc1tpXSA9IE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAoY29fZXh0cmEtPmNlX3NpemUgPD0gaW5kZXgpIHsKKyAgICAgICAgY29fZXh0cmEtPmNlX2V4dHJhcyA9IFB5TWVtX1JlYWxsb2MoCisgICAgICAgICAgICBjb19leHRyYS0+Y2VfZXh0cmFzLCB0c3RhdGUtPmNvX2V4dHJhX3VzZXJfY291bnQgKiBzaXplb2Yodm9pZCopKTsKKworICAgICAgICBpZiAoY29fZXh0cmEtPmNlX2V4dHJhcyA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKworICAgICAgICBjb19leHRyYS0+Y2Vfc2l6ZSA9IHRzdGF0ZS0+Y29fZXh0cmFfdXNlcl9jb3VudDsKKworICAgICAgICBmb3IgKFB5X3NzaXplX3QgaSA9IGNvX2V4dHJhLT5jZV9zaXplOyBpIDwgY29fZXh0cmEtPmNlX3NpemU7IGkrKykgeworICAgICAgICAgICAgY29fZXh0cmEtPmNlX2V4dHJhc1tpXSA9IE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb19leHRyYS0+Y2VfZXh0cmFzW2luZGV4XSA9IGV4dHJhOworICAgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9jb21wbGV4b2JqZWN0LmMgYi9PYmplY3RzL2NvbXBsZXhvYmplY3QuYwppbmRleCBkODJjNWViLi4zMWUxMjc4IDEwMDY0NAotLS0gYS9PYmplY3RzL2NvbXBsZXhvYmplY3QuYworKysgYi9PYmplY3RzL2NvbXBsZXhvYmplY3QuYwpAQCAtNzU5LDI5ICs3NTksMTIgQEAKIH07CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1jb21wbGV4X3N1YnR5cGVfZnJvbV9zdHJpbmcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqdikKK2NvbXBsZXhfZnJvbV9zdHJpbmdfaW5uZXIoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBsZW4sIHZvaWQgKnR5cGUpCiB7Ci0gICAgY29uc3QgY2hhciAqcywgKnN0YXJ0OwotICAgIGNoYXIgKmVuZDsKICAgICBkb3VibGUgeD0wLjAsIHk9MC4wLCB6OwogICAgIGludCBnb3RfYnJhY2tldD0wOwotICAgIFB5T2JqZWN0ICpzX2J1ZmZlciA9IE5VTEw7Ci0gICAgUHlfc3NpemVfdCBsZW47Ci0KLSAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHYpKSB7Ci0gICAgICAgIHNfYnVmZmVyID0gX1B5VW5pY29kZV9UcmFuc2Zvcm1EZWNpbWFsQW5kU3BhY2VUb0FTQ0lJKHYpOwotICAgICAgICBpZiAoc19idWZmZXIgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBzID0gUHlVbmljb2RlX0FzVVRGOEFuZFNpemUoc19idWZmZXIsICZsZW4pOwotICAgICAgICBpZiAocyA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAiY29tcGxleCgpIGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcgb3IgYSBudW1iZXIsIG5vdCAnJS4yMDBzJyIsCi0gICAgICAgICAgICBQeV9UWVBFKHYpLT50cF9uYW1lKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQorICAgIGNvbnN0IGNoYXIgKnN0YXJ0OworICAgIGNoYXIgKmVuZDsKIAogICAgIC8qIHBvc2l0aW9uIG9uIGZpcnN0IG5vbmJsYW5rICovCiAgICAgc3RhcnQgPSBzOwpAQCAtODIyLDcgKzgwNSw3IEBACiAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1ZhbHVlRXJyb3IpKQogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBpZiAoZW5kICE9IHMpIHsKICAgICAgICAgLyogYWxsIDQgZm9ybXMgc3RhcnRpbmcgd2l0aCA8ZmxvYXQ+IGxhbmQgaGVyZSAqLwpAQCAtODM1LDcgKzgxOCw3IEBACiAgICAgICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVmFsdWVFcnJvcikpCiAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChlbmQgIT0gcykKICAgICAgICAgICAgICAgICAvKiA8ZmxvYXQ+PHNpZ25lZC1mbG9hdD5qICovCkBAIC04OTAsMTggKzg3Myw0NiBAQAogICAgIGlmIChzLXN0YXJ0ICE9IGxlbikKICAgICAgICAgZ290byBwYXJzZV9lcnJvcjsKIAotICAgIFB5X1hERUNSRUYoc19idWZmZXIpOwotICAgIHJldHVybiBjb21wbGV4X3N1YnR5cGVfZnJvbV9kb3VibGVzKHR5cGUsIHgsIHkpOworICAgIHJldHVybiBjb21wbGV4X3N1YnR5cGVfZnJvbV9kb3VibGVzKChQeVR5cGVPYmplY3QgKil0eXBlLCB4LCB5KTsKIAogICBwYXJzZV9lcnJvcjoKICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgImNvbXBsZXgoKSBhcmcgaXMgYSBtYWxmb3JtZWQgc3RyaW5nIik7Ci0gIGVycm9yOgotICAgIFB5X1hERUNSRUYoc19idWZmZXIpOwogICAgIHJldHVybiBOVUxMOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgorY29tcGxleF9zdWJ0eXBlX2Zyb21fc3RyaW5nKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnYpCit7CisgICAgY29uc3QgY2hhciAqczsKKyAgICBQeU9iamVjdCAqc19idWZmZXIgPSBOVUxMLCAqcmVzdWx0ID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGxlbjsKKworICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sodikpIHsKKyAgICAgICAgc19idWZmZXIgPSBfUHlVbmljb2RlX1RyYW5zZm9ybURlY2ltYWxBbmRTcGFjZVRvQVNDSUkodik7CisgICAgICAgIGlmIChzX2J1ZmZlciA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBzID0gUHlVbmljb2RlX0FzVVRGOEFuZFNpemUoc19idWZmZXIsICZsZW4pOworICAgICAgICBpZiAocyA9PSBOVUxMKSB7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAiY29tcGxleCgpIGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcgb3IgYSBudW1iZXIsIG5vdCAnJS4yMDBzJyIsCisgICAgICAgICAgICBQeV9UWVBFKHYpLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmVzdWx0ID0gX1B5X3N0cmluZ190b19udW1iZXJfd2l0aF91bmRlcnNjb3JlcyhzLCBsZW4sICJjb21wbGV4IiwgdiwgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXhfZnJvbV9zdHJpbmdfaW5uZXIpOworICBleGl0OgorICAgIFB5X0RFQ1JFRihzX2J1ZmZlcik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKIGNvbXBsZXhfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewogICAgIFB5T2JqZWN0ICpyLCAqaSwgKnRtcDsKZGlmZiAtLWdpdCBhL09iamVjdHMvZGVzY3JvYmplY3QuYyBiL09iamVjdHMvZGVzY3JvYmplY3QuYwppbmRleCBkYTY4ZTNiLi4wNzZlNzQxIDEwMDY0NAotLS0gYS9PYmplY3RzL2Rlc2Nyb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9kZXNjcm9iamVjdC5jCkBAIC0yMiw3ICsyMiw3IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1kZXNjcl9yZXByKFB5RGVzY3JPYmplY3QgKmRlc2NyLCBjaGFyICpmb3JtYXQpCitkZXNjcl9yZXByKFB5RGVzY3JPYmplY3QgKmRlc2NyLCBjb25zdCBjaGFyICpmb3JtYXQpCiB7CiAgICAgUHlPYmplY3QgKm5hbWUgPSBOVUxMOwogICAgIGlmIChkZXNjci0+ZF9uYW1lICE9IE5VTEwgJiYgUHlVbmljb2RlX0NoZWNrKGRlc2NyLT5kX25hbWUpKQpAQCAtMjEzLDcgKzIxMyw3IEBACiBtZXRob2RkZXNjcl9jYWxsKFB5TWV0aG9kRGVzY3JPYmplY3QgKmRlc2NyLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CiAgICAgUHlfc3NpemVfdCBhcmdjOwotICAgIFB5T2JqZWN0ICpzZWxmLCAqZnVuYywgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqc2VsZiwgKmZ1bmMsICpyZXN1bHQsICoqc3RhY2s7CiAKICAgICAvKiBNYWtlIHN1cmUgdGhhdCB0aGUgZmlyc3QgYXJndW1lbnQgaXMgYWNjZXB0YWJsZSBhcyAnc2VsZicgKi8KICAgICBhc3NlcnQoUHlUdXBsZV9DaGVjayhhcmdzKSk7CkBAIC0yNDIsMTMgKzI0Miw4IEBACiAgICAgZnVuYyA9IFB5Q0Z1bmN0aW9uX05ld0V4KGRlc2NyLT5kX21ldGhvZCwgc2VsZiwgTlVMTCk7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYXJncyA9IFB5VHVwbGVfR2V0U2xpY2UoYXJncywgMSwgYXJnYyk7Ci0gICAgaWYgKGFyZ3MgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYoZnVuYyk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXN1bHQgPSBQeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3JkcyhmdW5jLCBhcmdzLCBrd2RzKTsKLSAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgc3RhY2sgPSAmUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAxKTsKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfRmFzdENhbGxEaWN0KGZ1bmMsIHN0YWNrLCBhcmdjIC0gMSwga3dkcyk7CiAgICAgUHlfREVDUkVGKGZ1bmMpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0yNTgsNyArMjUzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqa3dkcykKIHsKICAgICBQeV9zc2l6ZV90IGFyZ2M7Ci0gICAgUHlPYmplY3QgKnNlbGYsICpmdW5jLCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICpzZWxmLCAqZnVuYywgKnJlc3VsdCwgKipzdGFjazsKIAogICAgIC8qIE1ha2Ugc3VyZSB0aGF0IHRoZSBmaXJzdCBhcmd1bWVudCBpcyBhY2NlcHRhYmxlIGFzICdzZWxmJyAqLwogICAgIGFzc2VydChQeVR1cGxlX0NoZWNrKGFyZ3MpKTsKQEAgLTI5NSwxNCArMjkwLDkgQEAKICAgICBmdW5jID0gUHlDRnVuY3Rpb25fTmV3RXgoZGVzY3ItPmRfbWV0aG9kLCBzZWxmLCBOVUxMKTsKICAgICBpZiAoZnVuYyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBhcmdzID0gUHlUdXBsZV9HZXRTbGljZShhcmdzLCAxLCBhcmdjKTsKLSAgICBpZiAoYXJncyA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJlc3VsdCA9IFB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzKGZ1bmMsIGFyZ3MsIGt3ZHMpOworICAgIHN0YWNrID0gJlB5VHVwbGVfR0VUX0lURU0oYXJncywgMSk7CisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0Zhc3RDYWxsRGljdChmdW5jLCBzdGFjaywgYXJnYyAtIDEsIGt3ZHMpOwogICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICBQeV9ERUNSRUYoYXJncyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMzEwLDcgKzMwMCw3IEBACiB3cmFwcGVyZGVzY3JfY2FsbChQeVdyYXBwZXJEZXNjck9iamVjdCAqZGVzY3IsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKICAgICBQeV9zc2l6ZV90IGFyZ2M7Ci0gICAgUHlPYmplY3QgKnNlbGYsICpmdW5jLCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICpzZWxmLCAqZnVuYywgKnJlc3VsdCwgKipzdGFjazsKIAogICAgIC8qIE1ha2Ugc3VyZSB0aGF0IHRoZSBmaXJzdCBhcmd1bWVudCBpcyBhY2NlcHRhYmxlIGFzICdzZWxmJyAqLwogICAgIGFzc2VydChQeVR1cGxlX0NoZWNrKGFyZ3MpKTsKQEAgLTMzOSwxMyArMzI5LDkgQEAKICAgICBmdW5jID0gUHlXcmFwcGVyX05ldygoUHlPYmplY3QgKilkZXNjciwgc2VsZik7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYXJncyA9IFB5VHVwbGVfR2V0U2xpY2UoYXJncywgMSwgYXJnYyk7Ci0gICAgaWYgKGFyZ3MgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYoZnVuYyk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXN1bHQgPSBQeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3JkcyhmdW5jLCBhcmdzLCBrd2RzKTsKLSAgICBQeV9ERUNSRUYoYXJncyk7CisKKyAgICBzdGFjayA9ICZQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDEpOworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9GYXN0Q2FsbERpY3QoZnVuYywgc3RhY2ssIGFyZ2MgLSAxLCBrd2RzKTsKICAgICBQeV9ERUNSRUYoZnVuYyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTEwMzMsNyArMTAxOSw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogd3JhcHBlcl9yaWNoY29tcGFyZShQeU9iamVjdCAqYSwgUHlPYmplY3QgKmIsIGludCBvcCkKIHsKLSAgICBQeV9pbnRwdHJfdCByZXN1bHQ7CisgICAgaW50cHRyX3QgcmVzdWx0OwogICAgIFB5T2JqZWN0ICp2OwogICAgIFB5V3JhcHBlckRlc2NyT2JqZWN0ICphX2Rlc2NyLCAqYl9kZXNjcjsKIApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9kaWN0LWNvbW1vbi5oIGIvT2JqZWN0cy9kaWN0LWNvbW1vbi5oCmluZGV4IDI5MTJlYjkuLmNlOWVkYWIgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZGljdC1jb21tb24uaAorKysgYi9PYmplY3RzL2RpY3QtY29tbW9uLmgKQEAgLTgsMTUgKzgsNjkgQEAKICAgICBQeU9iamVjdCAqbWVfdmFsdWU7IC8qIFRoaXMgZmllbGQgaXMgb25seSBtZWFuaW5nZnVsIGZvciBjb21iaW5lZCB0YWJsZXMgKi8KIH0gUHlEaWN0S2V5RW50cnk7CiAKLXR5cGVkZWYgUHlEaWN0S2V5RW50cnkgKigqZGljdF9sb29rdXBfZnVuYykKLShQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkcik7CisvKiBkaWN0X2xvb2t1cF9mdW5jKCkgcmV0dXJucyBpbmRleCBvZiBlbnRyeSB3aGljaCBjYW4gYmUgdXNlZCBsaWtlIERLX0VOVFJJRVMoZGspW2luZGV4XS4KKyAqIC0xIHdoZW4gbm8gZW50cnkgZm91bmQsIC0zIHdoZW4gY29tcGFyZSByYWlzZXMgZXJyb3IuCisgKi8KK3R5cGVkZWYgUHlfc3NpemVfdCAoKmRpY3RfbG9va3VwX2Z1bmMpCisoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIsCisgUHlfc3NpemVfdCAqaGFzaHBvcyk7CiAKKyNkZWZpbmUgREtJWF9FTVBUWSAoLTEpCisjZGVmaW5lIERLSVhfRFVNTVkgKC0yKSAgLyogVXNlZCBpbnRlcm5hbGx5ICovCisjZGVmaW5lIERLSVhfRVJST1IgKC0zKQorCisvKiBTZWUgZGljdG9iamVjdC5jIGZvciBhY3R1YWwgbGF5b3V0IG9mIERpY3RLZXlzT2JqZWN0ICovCiBzdHJ1Y3QgX2RpY3RrZXlzb2JqZWN0IHsKICAgICBQeV9zc2l6ZV90IGRrX3JlZmNudDsKKworICAgIC8qIFNpemUgb2YgdGhlIGhhc2ggdGFibGUgKGRrX2luZGljZXMpLiBJdCBtdXN0IGJlIGEgcG93ZXIgb2YgMi4gKi8KICAgICBQeV9zc2l6ZV90IGRrX3NpemU7CisKKyAgICAvKiBGdW5jdGlvbiB0byBsb29rdXAgaW4gdGhlIGhhc2ggdGFibGUgKGRrX2luZGljZXMpOgorCisgICAgICAgLSBsb29rZGljdCgpOiBnZW5lcmFsLXB1cnBvc2UsIGFuZCBtYXkgcmV0dXJuIERLSVhfRVJST1IgaWYgKGFuZAorICAgICAgICAgb25seSBpZikgYSBjb21wYXJpc29uIHJhaXNlcyBhbiBleGNlcHRpb24uCisKKyAgICAgICAtIGxvb2tkaWN0X3VuaWNvZGUoKTogc3BlY2lhbGl6ZWQgdG8gVW5pY29kZSBzdHJpbmcga2V5cywgY29tcGFyaXNvbiBvZgorICAgICAgICAgd2hpY2ggY2FuIG5ldmVyIHJhaXNlIGFuIGV4Y2VwdGlvbjsgdGhhdCBmdW5jdGlvbiBjYW4gbmV2ZXIgcmV0dXJuCisgICAgICAgICBES0lYX0VSUk9SLgorCisgICAgICAgLSBsb29rZGljdF91bmljb2RlX25vZHVtbXkoKTogc2ltaWxhciB0byBsb29rZGljdF91bmljb2RlKCkgYnV0IGZ1cnRoZXIKKyAgICAgICAgIHNwZWNpYWxpemVkIGZvciBVbmljb2RlIHN0cmluZyBrZXlzIHRoYXQgY2Fubm90IGJlIHRoZSA8ZHVtbXk+IHZhbHVlLgorCisgICAgICAgLSBsb29rZGljdF9zcGxpdCgpOiBWZXJzaW9uIG9mIGxvb2tkaWN0KCkgZm9yIHNwbGl0IHRhYmxlcy4gKi8KICAgICBkaWN0X2xvb2t1cF9mdW5jIGRrX2xvb2t1cDsKKworICAgIC8qIE51bWJlciBvZiB1c2FibGUgZW50cmllcyBpbiBka19lbnRyaWVzLiAqLwogICAgIFB5X3NzaXplX3QgZGtfdXNhYmxlOwotICAgIFB5RGljdEtleUVudHJ5IGRrX2VudHJpZXNbMV07CisKKyAgICAvKiBOdW1iZXIgb2YgdXNlZCBlbnRyaWVzIGluIGRrX2VudHJpZXMuICovCisgICAgUHlfc3NpemVfdCBka19uZW50cmllczsKKworICAgIC8qIEFjdHVhbCBoYXNoIHRhYmxlIG9mIGRrX3NpemUgZW50cmllcy4gSXQgaG9sZHMgaW5kaWNlcyBpbiBka19lbnRyaWVzLAorICAgICAgIG9yIERLSVhfRU1QVFkoLTEpIG9yIERLSVhfRFVNTVkoLTIpLgorCisgICAgICAgSW5kaWNlcyBtdXN0IGJlOiAwIDw9IGluZGljZSA8IFVTQUJMRV9GUkFDVElPTihka19zaXplKS4KKworICAgICAgIFRoZSBzaXplIGluIGJ5dGVzIG9mIGFuIGluZGljZSBkZXBlbmRzIG9uIGRrX3NpemU6CisKKyAgICAgICAtIDEgYnl0ZSBpZiBka19zaXplIDw9IDB4ZmYgKGNoYXIqKQorICAgICAgIC0gMiBieXRlcyBpZiBka19zaXplIDw9IDB4ZmZmZiAoaW50MTZfdCopCisgICAgICAgLSA0IGJ5dGVzIGlmIGRrX3NpemUgPD0gMHhmZmZmZmZmZiAoaW50MzJfdCopCisgICAgICAgLSA4IGJ5dGVzIG90aGVyd2lzZSAoaW50NjRfdCopCisKKyAgICAgICBEeW5hbWljYWxseSBzaXplZCwgOCBpcyBtaW5pbXVtLiAqLworICAgIHVuaW9uIHsKKyAgICAgICAgaW50OF90IGFzXzFbOF07CisgICAgICAgIGludDE2X3QgYXNfMls0XTsKKyAgICAgICAgaW50MzJfdCBhc180WzJdOworI2lmIFNJWkVPRl9WT0lEX1AgPiA0CisgICAgICAgIGludDY0X3QgYXNfOFsxXTsKKyNlbmRpZgorICAgIH0gZGtfaW5kaWNlczsKKworICAgIC8qICJQeURpY3RLZXlFbnRyeSBka19lbnRyaWVzW2RrX3VzYWJsZV07IiBhcnJheSBmb2xsb3dzOgorICAgICAgIHNlZSB0aGUgREtfRU5UUklFUygpIG1hY3JvICovCiB9OwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL09iamVjdHMvZGljdG9iamVjdC5jIGIvT2JqZWN0cy9kaWN0b2JqZWN0LmMKaW5kZXggNzk1YzFmNi4uNWZmZjM0YiAxMDA2NDQKLS0tIGEvT2JqZWN0cy9kaWN0b2JqZWN0LmMKKysrIGIvT2JqZWN0cy9kaWN0b2JqZWN0LmMKQEAgLTEsNCArMSwzIEBACi0KIC8qIERpY3Rpb25hcnkgb2JqZWN0IGltcGxlbWVudGF0aW9uIHVzaW5nIGEgaGFzaCB0YWJsZSAqLwogCiAvKiBUaGUgZGlzdHJpYnV0aW9uIGluY2x1ZGVzIGEgc2VwYXJhdGUgZmlsZSwgT2JqZWN0cy9kaWN0bm90ZXMudHh0LApAQCAtNyw2OCArNiwxMTIgQEAKICAgIHR1bmluZyBkaWN0aW9uYXJpZXMsIGFuZCBzZXZlcmFsIGlkZWFzIGZvciBwb3NzaWJsZSBvcHRpbWl6YXRpb25zLgogKi8KIAorLyogUHlEaWN0S2V5c09iamVjdAorCitUaGlzIGltcGxlbWVudHMgdGhlIGRpY3Rpb25hcnkncyBoYXNodGFibGUuCisKK0FzIG9mIFB5dGhvbiAzLjYsIHRoaXMgaXMgY29tcGFjdCBhbmQgb3JkZXJlZC4gQmFzaWMgaWRlYSBpcyBkZXNjcmliZWQgaGVyZS4KK2h0dHBzOi8vbW9yZXB5cHkuYmxvZ3Nwb3QuY29tLzIwMTUvMDEvZmFzdGVyLW1vcmUtbWVtb3J5LWVmZmljaWVudC1hbmQtbW9yZS5odG1sCisKK2xheW91dDoKKworKy0tLS0tLS0tLS0tLS0tLSsKK3wgZGtfcmVmY250ICAgICB8Cit8IGRrX3NpemUgICAgICAgfAorfCBka19sb29rdXAgICAgIHwKK3wgZGtfdXNhYmxlICAgICB8Cit8IGRrX25lbnRyaWVzICAgfAorKy0tLS0tLS0tLS0tLS0tLSsKK3wgZGtfaW5kaWNlcyAgICB8Cit8ICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLSsKK3wgZGtfZW50cmllcyAgICB8Cit8ICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLSsKKworZGtfaW5kaWNlcyBpcyBhY3R1YWwgaGFzaHRhYmxlLiAgSXQgaG9sZHMgaW5kZXggaW4gZW50cmllcywgb3IgREtJWF9FTVBUWSgtMSkKK29yIERLSVhfRFVNTVkoLTIpLgorU2l6ZSBvZiBpbmRpY2VzIGlzIGRrX3NpemUuICBUeXBlIG9mIGVhY2ggaW5kZXggaW4gaW5kaWNlcyBpcyB2YXJ5IG9uIGRrX3NpemU6CisKKyogaW50OCAgZm9yICAgICAgICAgIGRrX3NpemUgPD0gMTI4CisqIGludDE2IGZvciAyNTYgICA8PSBka19zaXplIDw9IDIqKjE1CisqIGludDMyIGZvciAyKioxNiA8PSBka19zaXplIDw9IDIqKjMxCisqIGludDY0IGZvciAyKiozMiA8PSBka19zaXplCisKK2RrX2VudHJpZXMgaXMgYXJyYXkgb2YgUHlEaWN0S2V5RW50cnkuICBJdCdzIHNpemUgaXMgVVNBQkxFX0ZSQUNUSU9OKGRrX3NpemUpLgorREtfRU5UUklFUyhkaykgY2FuIGJlIHVzZWQgdG8gZ2V0IHBvaW50ZXIgdG8gZW50cmllcy4KKworTk9URTogU2luY2UgbmVnYXRpdmUgdmFsdWUgaXMgdXNlZCBmb3IgREtJWF9FTVBUWSBhbmQgREtJWF9EVU1NWSwgdHlwZSBvZgorZGtfaW5kaWNlcyBlbnRyeSBpcyBzaWduZWQgaW50ZWdlciBhbmQgaW50MTYgaXMgdXNlZCBmb3IgdGFibGUgd2hpY2gKK2RrX3NpemUgPT0gMjU2LgorKi8KKwogCiAvKgotVGhlcmUgYXJlIGZvdXIga2luZHMgb2Ygc2xvdHMgaW4gdGhlIHRhYmxlOgotCi0xLiBVbnVzZWQuICBtZV9rZXkgPT0gbWVfdmFsdWUgPT0gTlVMTAotICAgRG9lcyBub3QgaG9sZCBhbiBhY3RpdmUgKGtleSwgdmFsdWUpIHBhaXIgbm93IGFuZCBuZXZlciBkaWQuICBVbnVzZWQgY2FuCi0gICB0cmFuc2l0aW9uIHRvIEFjdGl2ZSB1cG9uIGtleSBpbnNlcnRpb24uICBUaGlzIGlzIHRoZSBvbmx5IGNhc2UgaW4gd2hpY2gKLSAgIG1lX2tleSBpcyBOVUxMLCBhbmQgaXMgZWFjaCBzbG90J3MgaW5pdGlhbCBzdGF0ZS4KLQotMi4gQWN0aXZlLiAgbWVfa2V5ICE9IE5VTEwgYW5kIG1lX2tleSAhPSBkdW1teSBhbmQgbWVfdmFsdWUgIT0gTlVMTAotICAgSG9sZHMgYW4gYWN0aXZlIChrZXksIHZhbHVlKSBwYWlyLiAgQWN0aXZlIGNhbiB0cmFuc2l0aW9uIHRvIER1bW15IG9yCi0gICBQZW5kaW5nIHVwb24ga2V5IGRlbGV0aW9uIChmb3IgY29tYmluZWQgYW5kIHNwbGl0IHRhYmxlcyByZXNwZWN0aXZlbHkpLgotICAgVGhpcyBpcyB0aGUgb25seSBjYXNlIGluIHdoaWNoIG1lX3ZhbHVlICE9IE5VTEwuCi0KLTMuIER1bW15LiAgbWVfa2V5ID09IGR1bW15IGFuZCBtZV92YWx1ZSA9PSBOVUxMCi0gICBQcmV2aW91c2x5IGhlbGQgYW4gYWN0aXZlIChrZXksIHZhbHVlKSBwYWlyLCBidXQgdGhhdCB3YXMgZGVsZXRlZCBhbmQgYW4KLSAgIGFjdGl2ZSBwYWlyIGhhcyBub3QgeWV0IG92ZXJ3cml0dGVuIHRoZSBzbG90LiAgRHVtbXkgY2FuIHRyYW5zaXRpb24gdG8KLSAgIEFjdGl2ZSB1cG9uIGtleSBpbnNlcnRpb24uICBEdW1teSBzbG90cyBjYW5ub3QgYmUgbWFkZSBVbnVzZWQgYWdhaW4KLSAgIChjYW5ub3QgaGF2ZSBtZV9rZXkgc2V0IHRvIE5VTEwpLCBlbHNlIHRoZSBwcm9iZSBzZXF1ZW5jZSBpbiBjYXNlIG9mCi0gICBjb2xsaXNpb24gd291bGQgaGF2ZSBubyB3YXkgdG8ga25vdyB0aGV5IHdlcmUgb25jZSBhY3RpdmUuCi0KLTQuIFBlbmRpbmcuIE5vdCB5ZXQgaW5zZXJ0ZWQgb3IgZGVsZXRlZCBmcm9tIGEgc3BsaXQtdGFibGUuCi0gICBrZXkgIT0gTlVMTCwga2V5ICE9IGR1bW15IGFuZCB2YWx1ZSA9PSBOVUxMCi0KIFRoZSBEaWN0T2JqZWN0IGNhbiBiZSBpbiBvbmUgb2YgdHdvIGZvcm1zLgorCiBFaXRoZXI6CiAgIEEgY29tYmluZWQgdGFibGU6CiAgICAgbWFfdmFsdWVzID09IE5VTEwsIGRrX3JlZmNudCA9PSAxLgogICAgIFZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSBtZV92YWx1ZSBmaWVsZCBvZiB0aGUgUHlEaWN0S2V5c09iamVjdC4KLSAgICBTbG90IGtpbmQgNCBpcyBub3QgYWxsb3dlZCBpLmUuCi0gICAgICAgIGtleSAhPSBOVUxMLCBrZXkgIT0gZHVtbXkgYW5kIHZhbHVlID09IE5VTEwgaXMgaWxsZWdhbC4KIE9yOgogICBBIHNwbGl0IHRhYmxlOgogICAgIG1hX3ZhbHVlcyAhPSBOVUxMLCBka19yZWZjbnQgPj0gMQogICAgIFZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSBtYV92YWx1ZXMgYXJyYXkuCi0gICAgT25seSBzdHJpbmcgKHVuaWNvZGUpIGtleXMgYXJlIGFsbG93ZWQsIG5vIDxkdW1teT4ga2V5cyBhcmUgcHJlc2VudC4KKyAgICBPbmx5IHN0cmluZyAodW5pY29kZSkga2V5cyBhcmUgYWxsb3dlZC4KKyAgICBBbGwgZGljdHMgc2hhcmluZyBzYW1lIGtleSBtdXN0IGhhdmUgc2FtZSBpbnNlcnRpb24gb3JkZXIuCiAKLU5vdGU6IC5wb3BpdGVtKCkgYWJ1c2VzIHRoZSBtZV9oYXNoIGZpZWxkIG9mIGFuIFVudXNlZCBvciBEdW1teSBzbG90IHRvCi1ob2xkIGEgc2VhcmNoIGZpbmdlci4gIFRoZSBtZV9oYXNoIGZpZWxkIG9mIFVudXNlZCBvciBEdW1teSBzbG90cyBoYXMgbm8KLW1lYW5pbmcgb3RoZXJ3aXNlLiBBcyBhIGNvbnNlcXVlbmNlIG9mIHRoaXMgcG9waXRlbSBhbHdheXMgY29udmVydHMgdGhlIGRpY3QKLXRvIHRoZSBjb21iaW5lZC10YWJsZSBmb3JtLgorVGhlcmUgYXJlIGZvdXIga2luZHMgb2Ygc2xvdHMgaW4gdGhlIHRhYmxlIChzbG90IGlzIGluZGV4LCBhbmQKK0RLX0VOVFJJRVMoa2V5cylbaW5kZXhdIGlmIGluZGV4ID49IDApOgorCisxLiBVbnVzZWQuICBpbmRleCA9PSBES0lYX0VNUFRZCisgICBEb2VzIG5vdCBob2xkIGFuIGFjdGl2ZSAoa2V5LCB2YWx1ZSkgcGFpciBub3cgYW5kIG5ldmVyIGRpZC4gIFVudXNlZCBjYW4KKyAgIHRyYW5zaXRpb24gdG8gQWN0aXZlIHVwb24ga2V5IGluc2VydGlvbi4gIFRoaXMgaXMgZWFjaCBzbG90J3MgaW5pdGlhbCBzdGF0ZS4KKworMi4gQWN0aXZlLiAgaW5kZXggPj0gMCwgbWVfa2V5ICE9IE5VTEwgYW5kIG1lX3ZhbHVlICE9IE5VTEwKKyAgIEhvbGRzIGFuIGFjdGl2ZSAoa2V5LCB2YWx1ZSkgcGFpci4gIEFjdGl2ZSBjYW4gdHJhbnNpdGlvbiB0byBEdW1teSBvcgorICAgUGVuZGluZyB1cG9uIGtleSBkZWxldGlvbiAoZm9yIGNvbWJpbmVkIGFuZCBzcGxpdCB0YWJsZXMgcmVzcGVjdGl2ZWx5KS4KKyAgIFRoaXMgaXMgdGhlIG9ubHkgY2FzZSBpbiB3aGljaCBtZV92YWx1ZSAhPSBOVUxMLgorCiszLiBEdW1teS4gIGluZGV4ID09IERLSVhfRFVNTVkgIChjb21iaW5lZCBvbmx5KQorICAgUHJldmlvdXNseSBoZWxkIGFuIGFjdGl2ZSAoa2V5LCB2YWx1ZSkgcGFpciwgYnV0IHRoYXQgd2FzIGRlbGV0ZWQgYW5kIGFuCisgICBhY3RpdmUgcGFpciBoYXMgbm90IHlldCBvdmVyd3JpdHRlbiB0aGUgc2xvdC4gIER1bW15IGNhbiB0cmFuc2l0aW9uIHRvCisgICBBY3RpdmUgdXBvbiBrZXkgaW5zZXJ0aW9uLiAgRHVtbXkgc2xvdHMgY2Fubm90IGJlIG1hZGUgVW51c2VkIGFnYWluCisgICBlbHNlIHRoZSBwcm9iZSBzZXF1ZW5jZSBpbiBjYXNlIG9mIGNvbGxpc2lvbiB3b3VsZCBoYXZlIG5vIHdheSB0byBrbm93CisgICB0aGV5IHdlcmUgb25jZSBhY3RpdmUuCisKKzQuIFBlbmRpbmcuIGluZGV4ID49IDAsIGtleSAhPSBOVUxMLCBhbmQgdmFsdWUgPT0gTlVMTCAgKHNwbGl0IG9ubHkpCisgICBOb3QgeWV0IGluc2VydGVkIGluIHNwbGl0LXRhYmxlLgogKi8KIAotLyogUHlEaWN0X01JTlNJWkVfU1BMSVQgaXMgdGhlIG1pbmltdW0gc2l6ZSBvZiBhIHNwbGl0IGRpY3Rpb25hcnkuCi0gKiBJdCBtdXN0IGJlIGEgcG93ZXIgb2YgMiwgYW5kIGF0IGxlYXN0IDQuCi0gKiBSZXNpemluZyBvZiBzcGxpdCBkaWN0aW9uYXJpZXMgaXMgdmVyeSByYXJlLCBzbyB0aGUgc2F2aW5nIG1lbW9yeSBpcyBtb3JlCi0gKiBpbXBvcnRhbnQgdGhhbiB0aGUgY29zdCBvZiByZXNpemluZy4KLSAqLwotI2RlZmluZSBQeURpY3RfTUlOU0laRV9TUExJVCA0CisvKgorUHJlc2VydmluZyBpbnNlcnRpb24gb3JkZXIKIAotLyogUHlEaWN0X01JTlNJWkVfQ09NQklORUQgaXMgdGhlIHN0YXJ0aW5nIHNpemUgZm9yIGFueSBuZXcsIG5vbi1zcGxpdCBkaWN0LgorSXQncyBzaW1wbGUgZm9yIGNvbWJpbmVkIHRhYmxlLiAgU2luY2UgZGtfZW50cmllcyBpcyBtb3N0bHkgYXBwZW5kIG9ubHksIHdlIGNhbgorZ2V0IGluc2VydGlvbiBvcmRlciBieSBqdXN0IGl0ZXJhdGluZyBka19lbnRyaWVzLgorCitPbmUgZXhjZXB0aW9uIGlzIC5wb3BpdGVtKCkuICBJdCByZW1vdmVzIGxhc3QgaXRlbSBpbiBka19lbnRyaWVzIGFuZCBkZWNyZW1lbnQKK2RrX25lbnRyaWVzIHRvIGFjaGlldmUgYW1vcnRpemVkIE8oMSkuICBTaW5jZSB0aGVyZSBhcmUgREtJWF9EVU1NWSByZW1haW5zIGluCitka19pbmRpY2VzLCB3ZSBjYW4ndCBpbmNyZW1lbnQgZGtfdXNhYmxlIGV2ZW4gdGhvdWdoIGRrX25lbnRyaWVzIGlzCitkZWNyZW1lbnRlZC4KKworSW4gc3BsaXQgdGFibGUsIGluc2VydGluZyBpbnRvIHBlbmRpbmcgZW50cnkgaXMgYWxsb3dlZCBvbmx5IGZvciBka19lbnRyaWVzW2l4XQord2hlcmUgaXggPT0gbXAtPm1hX3VzZWQuIEluc2VydGluZyBpbnRvIG90aGVyIGluZGV4IGFuZCBkZWxldGluZyBpdGVtIGNhdXNlCitjb252ZXJ0aW5nIHRoZSBkaWN0IHRvIHRoZSBjb21iaW5lZCB0YWJsZS4KKyovCisKKy8qIFB5RGljdF9NSU5TSVpFIGlzIHRoZSBzdGFydGluZyBzaXplIGZvciBhbnkgbmV3IGRpY3QuCiAgKiA4IGFsbG93cyBkaWN0cyB3aXRoIG5vIG1vcmUgdGhhbiA1IGFjdGl2ZSBlbnRyaWVzOyBleHBlcmltZW50cyBzdWdnZXN0ZWQKICAqIHRoaXMgc3VmZmljZXMgZm9yIHRoZSBtYWpvcml0eSBvZiBkaWN0cyAoY29uc2lzdGluZyBtb3N0bHkgb2YgdXN1YWxseS1zbWFsbAogICogZGljdHMgY3JlYXRlZCB0byBwYXNzIGtleXdvcmQgYXJndW1lbnRzKS4KICAqIE1ha2luZyB0aGlzIDgsIHJhdGhlciB0aGFuIDQgcmVkdWNlcyB0aGUgbnVtYmVyIG9mIHJlc2l6ZXMgZm9yIG1vc3QKICAqIGRpY3Rpb25hcmllcywgd2l0aG91dCBhbnkgc2lnbmlmaWNhbnQgZXh0cmEgbWVtb3J5IHVzZS4KICAqLwotI2RlZmluZSBQeURpY3RfTUlOU0laRV9DT01CSU5FRCA4CisjZGVmaW5lIFB5RGljdF9NSU5TSVpFIDgKIAogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgImRpY3QtY29tbW9uLmgiCi0jaW5jbHVkZSAic3RyaW5nbGliL2VxLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2VxLmgiICAgIC8qIHRvIGdldCB1bmljb2RlX2VxKCkgKi8KIAogLypbY2xpbmljIGlucHV0XQogY2xhc3MgZGljdCAiUHlEaWN0T2JqZWN0ICoiICImUHlEaWN0X1R5cGUiCkBAIC0xNDEsOCArMTg0LDggQEAKIGludG8gcGxheS4gIFRoaXMgaXMgZG9uZSBieSBpbml0aWFsaXppbmcgYSAodW5zaWduZWQpIHZyYmwgInBlcnR1cmIiIHRvIHRoZQogZnVsbCBoYXNoIGNvZGUsIGFuZCBjaGFuZ2luZyB0aGUgcmVjdXJyZW5jZSB0bzoKIAotICAgIGogPSAoNSpqKSArIDEgKyBwZXJ0dXJiOwogICAgIHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQ7CisgICAgaiA9ICg1KmopICsgMSArIHBlcnR1cmI7CiAgICAgdXNlIGogJSAyKippIGFzIHRoZSBuZXh0IHRhYmxlIGluZGV4OwogCiBOb3cgdGhlIHByb2JlIHNlcXVlbmNlIGRlcGVuZHMgKGV2ZW50dWFsbHkpIG9uIGV2ZXJ5IGJpdCBpbiB0aGUgaGFzaCBjb2RlLApAQCAtMTc3LDQxICsyMjAsMzggQEAKIAogKi8KIAotLyogT2JqZWN0IHVzZWQgYXMgZHVtbXkga2V5IHRvIGZpbGwgZGVsZXRlZCBlbnRyaWVzCi0gKiBUaGlzIGNvdWxkIGJlIGFueSB1bmlxdWUgb2JqZWN0LAotICogdXNlIGEgY3VzdG9tIHR5cGUgaW4gb3JkZXIgdG8gbWluaW1pc2UgY291cGxpbmcuCi0qLwotc3RhdGljIFB5T2JqZWN0IF9kdW1teV9zdHJ1Y3Q7Ci0KLSNkZWZpbmUgZHVtbXkgKCZfZHVtbXlfc3RydWN0KQotCi0jaWZkZWYgUHlfUkVGX0RFQlVHCi1QeU9iamVjdCAqCi1fUHlEaWN0X0R1bW15KHZvaWQpCi17Ci0gICAgcmV0dXJuIGR1bW15OwotfQotI2VuZGlmCi0KIC8qIGZvcndhcmQgZGVjbGFyYXRpb25zICovCi1zdGF0aWMgUHlEaWN0S2V5RW50cnkgKmxvb2tkaWN0KFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyKTsKLXN0YXRpYyBQeURpY3RLZXlFbnRyeSAqbG9va2RpY3RfdW5pY29kZShQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyKTsKLXN0YXRpYyBQeURpY3RLZXlFbnRyeSAqCitzdGF0aWMgUHlfc3NpemVfdCBsb29rZGljdChQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpoYXNocG9zKTsKK3N0YXRpYyBQeV9zc2l6ZV90IGxvb2tkaWN0X3VuaWNvZGUoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKmhhc2hwb3MpOworc3RhdGljIFB5X3NzaXplX3QKIGxvb2tkaWN0X3VuaWNvZGVfbm9kdW1teShQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyKTsKLXN0YXRpYyBQeURpY3RLZXlFbnRyeSAqbG9va2RpY3Rfc3BsaXQoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIpOworICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKmhhc2hwb3MpOworc3RhdGljIFB5X3NzaXplX3QgbG9va2RpY3Rfc3BsaXQoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqaGFzaHBvcyk7CiAKIHN0YXRpYyBpbnQgZGljdHJlc2l6ZShQeURpY3RPYmplY3QgKm1wLCBQeV9zc2l6ZV90IG1pbnVzZWQpOwogCi0vKiBEaWN0aW9uYXJ5IHJldXNlIHNjaGVtZSB0byBzYXZlIGNhbGxzIHRvIG1hbGxvYywgZnJlZSwgYW5kIG1lbXNldCAqLworLypHbG9iYWwgY291bnRlciB1c2VkIHRvIHNldCBtYV92ZXJzaW9uX3RhZyBmaWVsZCBvZiBkaWN0aW9uYXJ5LgorICogSXQgaXMgaW5jcmVtZW50ZWQgZWFjaCB0aW1lIHRoYXQgYSBkaWN0aW9uYXJ5IGlzIGNyZWF0ZWQgYW5kIGVhY2gKKyAqIHRpbWUgdGhhdCBhIGRpY3Rpb25hcnkgaXMgbW9kaWZpZWQuICovCitzdGF0aWMgdWludDY0X3QgcHlkaWN0X2dsb2JhbF92ZXJzaW9uID0gMDsKKworI2RlZmluZSBESUNUX05FWFRfVkVSU0lPTigpICgrK3B5ZGljdF9nbG9iYWxfdmVyc2lvbikKKworLyogRGljdGlvbmFyeSByZXVzZSBzY2hlbWUgdG8gc2F2ZSBjYWxscyB0byBtYWxsb2MgYW5kIGZyZWUgKi8KICNpZm5kZWYgUHlEaWN0X01BWEZSRUVMSVNUCiAjZGVmaW5lIFB5RGljdF9NQVhGUkVFTElTVCA4MAogI2VuZGlmCiBzdGF0aWMgUHlEaWN0T2JqZWN0ICpmcmVlX2xpc3RbUHlEaWN0X01BWEZSRUVMSVNUXTsKIHN0YXRpYyBpbnQgbnVtZnJlZSA9IDA7CitzdGF0aWMgUHlEaWN0S2V5c09iamVjdCAqa2V5c19mcmVlX2xpc3RbUHlEaWN0X01BWEZSRUVMSVNUXTsKK3N0YXRpYyBpbnQgbnVtZnJlZWtleXMgPSAwOwogCiAjaW5jbHVkZSAiY2xpbmljL2RpY3RvYmplY3QuYy5oIgogCkBAIC0yMTksMTIgKzI1OSwxNSBAQAogUHlEaWN0X0NsZWFyRnJlZUxpc3Qodm9pZCkKIHsKICAgICBQeURpY3RPYmplY3QgKm9wOwotICAgIGludCByZXQgPSBudW1mcmVlOworICAgIGludCByZXQgPSBudW1mcmVlICsgbnVtZnJlZWtleXM7CiAgICAgd2hpbGUgKG51bWZyZWUpIHsKICAgICAgICAgb3AgPSBmcmVlX2xpc3RbLS1udW1mcmVlXTsKICAgICAgICAgYXNzZXJ0KFB5RGljdF9DaGVja0V4YWN0KG9wKSk7CiAgICAgICAgIFB5T2JqZWN0X0dDX0RlbChvcCk7CiAgICAgfQorICAgIHdoaWxlIChudW1mcmVla2V5cykgeworICAgICAgICBQeU9iamVjdF9GUkVFKGtleXNfZnJlZV9saXN0Wy0tbnVtZnJlZWtleXNdKTsKKyAgICB9CiAgICAgcmV0dXJuIHJldDsKIH0KIApAQCAtMjQzLDQwICsyODYsMTE2IEBACiAgICAgUHlEaWN0X0NsZWFyRnJlZUxpc3QoKTsKIH0KIAorI2RlZmluZSBES19TSVpFKGRrKSAoKGRrKS0+ZGtfc2l6ZSkKKyNpZiBTSVpFT0ZfVk9JRF9QID4gNAorI2RlZmluZSBES19JWFNJWkUoZGspICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKERLX1NJWkUoZGspIDw9IDB4ZmYgPyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgMSA6IERLX1NJWkUoZGspIDw9IDB4ZmZmZiA/ICAgICAgICAgICAgXAorICAgICAgICAgICAgMiA6IERLX1NJWkUoZGspIDw9IDB4ZmZmZmZmZmYgPyAgICBcCisgICAgICAgICAgICAgICAgNCA6IHNpemVvZihpbnQ2NF90KSkKKyNlbHNlCisjZGVmaW5lIERLX0lYU0laRShkaykgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoREtfU0laRShkaykgPD0gMHhmZiA/ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAxIDogREtfU0laRShkaykgPD0gMHhmZmZmID8gICAgICAgICAgICBcCisgICAgICAgICAgICAyIDogc2l6ZW9mKGludDMyX3QpKQorI2VuZGlmCisjZGVmaW5lIERLX0VOVFJJRVMoZGspIFwKKyAgICAoKFB5RGljdEtleUVudHJ5KikoJihkayktPmRrX2luZGljZXMuYXNfMVtES19TSVpFKGRrKSAqIERLX0lYU0laRShkayldKSkKKwogI2RlZmluZSBES19ERUJVR19JTkNSRUYgX1B5X0lOQ19SRUZUT1RBTCBfUHlfUkVGX0RFQlVHX0NPTU1BCiAjZGVmaW5lIERLX0RFQlVHX0RFQ1JFRiBfUHlfREVDX1JFRlRPVEFMIF9QeV9SRUZfREVCVUdfQ09NTUEKIAogI2RlZmluZSBES19JTkNSRUYoZGspIChES19ERUJVR19JTkNSRUYgKysoZGspLT5ka19yZWZjbnQpCiAjZGVmaW5lIERLX0RFQ1JFRihkaykgaWYgKERLX0RFQlVHX0RFQ1JFRiAoLS0oZGspLT5ka19yZWZjbnQpID09IDApIGZyZWVfa2V5c19vYmplY3QoZGspCi0jZGVmaW5lIERLX1NJWkUoZGspICgoZGspLT5ka19zaXplKQogI2RlZmluZSBES19NQVNLKGRrKSAoKChkayktPmRrX3NpemUpLTEpCiAjZGVmaW5lIElTX1BPV0VSX09GXzIoeCkgKCgoeCkgJiAoeC0xKSkgPT0gMCkKIAorLyogbG9va3VwIGluZGljZXMuICByZXR1cm5zIERLSVhfRU1QVFksIERLSVhfRFVNTVksIG9yIGl4ID49MCAqLworc3RhdGljIGlubGluZSBQeV9zc2l6ZV90Citka19nZXRfaW5kZXgoUHlEaWN0S2V5c09iamVjdCAqa2V5cywgUHlfc3NpemVfdCBpKQoreworICAgIFB5X3NzaXplX3QgcyA9IERLX1NJWkUoa2V5cyk7CisgICAgUHlfc3NpemVfdCBpeDsKKworICAgIGlmIChzIDw9IDB4ZmYpIHsKKyAgICAgICAgaW50OF90ICppbmRpY2VzID0ga2V5cy0+ZGtfaW5kaWNlcy5hc18xOworICAgICAgICBpeCA9IGluZGljZXNbaV07CisgICAgfQorICAgIGVsc2UgaWYgKHMgPD0gMHhmZmZmKSB7CisgICAgICAgIGludDE2X3QgKmluZGljZXMgPSBrZXlzLT5ka19pbmRpY2VzLmFzXzI7CisgICAgICAgIGl4ID0gaW5kaWNlc1tpXTsKKyAgICB9CisjaWYgU0laRU9GX1ZPSURfUCA+IDQKKyAgICBlbHNlIGlmIChzID4gMHhmZmZmZmZmZikgeworICAgICAgICBpbnQ2NF90ICppbmRpY2VzID0ga2V5cy0+ZGtfaW5kaWNlcy5hc184OworICAgICAgICBpeCA9IGluZGljZXNbaV07CisgICAgfQorI2VuZGlmCisgICAgZWxzZSB7CisgICAgICAgIGludDMyX3QgKmluZGljZXMgPSBrZXlzLT5ka19pbmRpY2VzLmFzXzQ7CisgICAgICAgIGl4ID0gaW5kaWNlc1tpXTsKKyAgICB9CisgICAgYXNzZXJ0KGl4ID49IERLSVhfRFVNTVkpOworICAgIHJldHVybiBpeDsKK30KKworLyogd3JpdGUgdG8gaW5kaWNlcy4gKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorZGtfc2V0X2luZGV4KFB5RGljdEtleXNPYmplY3QgKmtleXMsIFB5X3NzaXplX3QgaSwgUHlfc3NpemVfdCBpeCkKK3sKKyAgICBQeV9zc2l6ZV90IHMgPSBES19TSVpFKGtleXMpOworCisgICAgYXNzZXJ0KGl4ID49IERLSVhfRFVNTVkpOworCisgICAgaWYgKHMgPD0gMHhmZikgeworICAgICAgICBpbnQ4X3QgKmluZGljZXMgPSBrZXlzLT5ka19pbmRpY2VzLmFzXzE7CisgICAgICAgIGFzc2VydChpeCA8PSAweDdmKTsKKyAgICAgICAgaW5kaWNlc1tpXSA9IChjaGFyKWl4OworICAgIH0KKyAgICBlbHNlIGlmIChzIDw9IDB4ZmZmZikgeworICAgICAgICBpbnQxNl90ICppbmRpY2VzID0ga2V5cy0+ZGtfaW5kaWNlcy5hc18yOworICAgICAgICBhc3NlcnQoaXggPD0gMHg3ZmZmKTsKKyAgICAgICAgaW5kaWNlc1tpXSA9IChpbnQxNl90KWl4OworICAgIH0KKyNpZiBTSVpFT0ZfVk9JRF9QID4gNAorICAgIGVsc2UgaWYgKHMgPiAweGZmZmZmZmZmKSB7CisgICAgICAgIGludDY0X3QgKmluZGljZXMgPSBrZXlzLT5ka19pbmRpY2VzLmFzXzg7CisgICAgICAgIGluZGljZXNbaV0gPSBpeDsKKyAgICB9CisjZW5kaWYKKyAgICBlbHNlIHsKKyAgICAgICAgaW50MzJfdCAqaW5kaWNlcyA9IGtleXMtPmRrX2luZGljZXMuYXNfNDsKKyAgICAgICAgYXNzZXJ0KGl4IDw9IDB4N2ZmZmZmZmYpOworICAgICAgICBpbmRpY2VzW2ldID0gKGludDMyX3QpaXg7CisgICAgfQorfQorCisKIC8qIFVTQUJMRV9GUkFDVElPTiBpcyB0aGUgbWF4aW11bSBkaWN0aW9uYXJ5IGxvYWQuCi0gKiBDdXJyZW50bHkgc2V0IHRvICgybisxKS8zLiBJbmNyZWFzaW5nIHRoaXMgcmF0aW8gbWFrZXMgZGljdGlvbmFyaWVzIG1vcmUKLSAqIGRlbnNlIHJlc3VsdGluZyBpbiBtb3JlIGNvbGxpc2lvbnMuICBEZWNyZWFzaW5nIGl0IGltcHJvdmVzIHNwYXJzZW5lc3MKLSAqIGF0IHRoZSBleHBlbnNlIG9mIHNwcmVhZGluZyBlbnRyaWVzIG92ZXIgbW9yZSBjYWNoZSBsaW5lcyBhbmQgYXQgdGhlCi0gKiBjb3N0IG9mIHRvdGFsIG1lbW9yeSBjb25zdW1lZC4KKyAqIEluY3JlYXNpbmcgdGhpcyByYXRpbyBtYWtlcyBkaWN0aW9uYXJpZXMgbW9yZSBkZW5zZSByZXN1bHRpbmcgaW4gbW9yZQorICogY29sbGlzaW9ucy4gIERlY3JlYXNpbmcgaXQgaW1wcm92ZXMgc3BhcnNlbmVzcyBhdCB0aGUgZXhwZW5zZSBvZiBzcHJlYWRpbmcKKyAqIGluZGljZXMgb3ZlciBtb3JlIGNhY2hlIGxpbmVzIGFuZCBhdCB0aGUgY29zdCBvZiB0b3RhbCBtZW1vcnkgY29uc3VtZWQuCiAgKgogICogVVNBQkxFX0ZSQUNUSU9OIG11c3Qgb2JleSB0aGUgZm9sbG93aW5nOgogICogICAgICgwIDwgVVNBQkxFX0ZSQUNUSU9OKG4pIDwgbikgZm9yIGFsbCBuID49IDIKICAqCi0gKiBVU0FCTEVfRlJBQ1RJT04gc2hvdWxkIGJlIHZlcnkgcXVpY2sgdG8gY2FsY3VsYXRlLgotICogRnJhY3Rpb25zIGFyb3VuZCA1LzggdG8gMi8zIHNlZW0gdG8gd29yayB3ZWxsIGluIHByYWN0aWNlLgorICogVVNBQkxFX0ZSQUNUSU9OIHNob3VsZCBiZSBxdWljayB0byBjYWxjdWxhdGUuCisgKiBGcmFjdGlvbnMgYXJvdW5kIDEvMiB0byAyLzMgc2VlbSB0byB3b3JrIHdlbGwgaW4gcHJhY3RpY2UuCiAgKi8KKyNkZWZpbmUgVVNBQkxFX0ZSQUNUSU9OKG4pICgoKG4pIDw8IDEpLzMpCiAKLS8qIFVzZSAoMm4rMSkvMyByYXRoZXIgdGhhbiAybiszIGJlY2F1c2U6IGl0IG1ha2VzIG5vIGRpZmZlcmVuY2UgZm9yCi0gKiBjb21iaW5lZCB0YWJsZXMgKHRoZSB0d28gZnJhY3Rpb25zIHJvdW5kIHRvIHRoZSBzYW1lIG51bWJlciBuIDwgKSwKLSAqIGJ1dCAyKjQvMyBpcyAyIHdoZXJlYXMgKDIqNCsxKS8zIGlzIDMgd2hpY2ggcG90ZW50aWFsbHkgc2F2ZXMgcXVpdGUKLSAqIGEgbG90IG9mIHNwYWNlIGZvciBzbWFsbCwgc3BsaXQgdGFibGVzICovCi0jZGVmaW5lIFVTQUJMRV9GUkFDVElPTihuKSAoKCgobikgPDwgMSkrMSkvMykKKy8qIEVTVElNQVRFX1NJWkUgaXMgcmV2ZXJzZSBmdW5jdGlvbiBvZiBVU0FCTEVfRlJBQ1RJT04uCisgKiBUaGlzIGNhbiBiZSB1c2VkIHRvIHJlc2VydmUgZW5vdWdoIHNpemUgdG8gaW5zZXJ0IG4gZW50cmllcyB3aXRob3V0CisgKiByZXNpemluZy4KKyAqLworI2RlZmluZSBFU1RJTUFURV9TSVpFKG4pICAoKChuKSozKzEpID4+IDEpCiAKLS8qIEFsdGVybmF0aXZlIGZyYWN0aW9uIHRoYXQgaXMgb3RoZXJ3aXNlIGNsb3NlIGVub3VnaCB0byAoMm4rMSkvMyB0byBtYWtlCisvKiBBbHRlcm5hdGl2ZSBmcmFjdGlvbiB0aGF0IGlzIG90aGVyd2lzZSBjbG9zZSBlbm91Z2ggdG8gMm4vMyB0byBtYWtlCiAgKiBsaXR0bGUgZGlmZmVyZW5jZS4gOCAqIDIvMyA9PSA4ICogNS84ID09IDUuIDE2ICogMi8zID09IDE2ICogNS84ID09IDEwLgogICogMzIgKiAyLzMgPSAyMSwgMzIgKiA1LzggPSAyMC4KICAqIEl0cyBhZHZhbnRhZ2UgaXMgdGhhdCBpdCBpcyBmYXN0ZXIgdG8gY29tcHV0ZSBvbiBtYWNoaW5lcyB3aXRoIHNsb3cgZGl2aXNpb24uCiAgKiAjZGVmaW5lIFVTQUJMRV9GUkFDVElPTihuKSAoKChuKSA+PiAxKSArICgobikgPj4gMikgLSAoKG4pID4+IDMpKQotKi8KKyAqLwogCiAvKiBHUk9XVEhfUkFURS4gR3Jvd3RoIHJhdGUgdXBvbiBoaXR0aW5nIG1heGltdW0gbG9hZC4KICAqIEN1cnJlbnRseSBzZXQgdG8gdXNlZCoyICsgY2FwYWNpdHkvMi4KQEAgLTMwMCw2MSArNDE5LDE1NSBAQAogICogKHdoaWNoIGNhbm5vdCBmYWlsIGFuZCB0aHVzIGNhbiBkbyBubyBhbGxvY2F0aW9uKS4KICAqLwogc3RhdGljIFB5RGljdEtleXNPYmplY3QgZW1wdHlfa2V5c19zdHJ1Y3QgPSB7Ci0gICAgICAgIDIsIC8qIGRrX3JlZmNudCAxIGZvciB0aGlzIHN0cnVjdCwgMSBmb3IgZHVtbXlfc3RydWN0ICovCisgICAgICAgIDEsIC8qIGRrX3JlZmNudCAqLwogICAgICAgICAxLCAvKiBka19zaXplICovCiAgICAgICAgIGxvb2tkaWN0X3NwbGl0LCAvKiBka19sb29rdXAgKi8KICAgICAgICAgMCwgLyogZGtfdXNhYmxlIChpbW11dGFibGUpICovCi0gICAgICAgIHsKLSAgICAgICAgICAgIHsgMCwgMCwgMCB9IC8qIGRrX2VudHJpZXMgKGVtcHR5KSAqLwotICAgICAgICB9CisgICAgICAgIDAsIC8qIGRrX25lbnRyaWVzICovCisgICAgICAgIC5ka19pbmRpY2VzID0geyAuYXNfMSA9IHtES0lYX0VNUFRZLCBES0lYX0VNUFRZLCBES0lYX0VNUFRZLCBES0lYX0VNUFRZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREtJWF9FTVBUWSwgREtJWF9FTVBUWSwgREtJWF9FTVBUWSwgREtJWF9FTVBUWX19LAogfTsKIAogc3RhdGljIFB5T2JqZWN0ICplbXB0eV92YWx1ZXNbMV0gPSB7IE5VTEwgfTsKIAogI2RlZmluZSBQeV9FTVBUWV9LRVlTICZlbXB0eV9rZXlzX3N0cnVjdAogCisvKiBVbmNvbW1lbnQgdG8gY2hlY2sgdGhlIGRpY3QgY29udGVudCBpbiBfUHlEaWN0X0NoZWNrQ29uc2lzdGVuY3koKSAqLworLyogI2RlZmluZSBERUJVR19QWURJQ1QgKi8KKworCisjaWZkZWYgUHlfREVCVUcKK3N0YXRpYyBpbnQKK19QeURpY3RfQ2hlY2tDb25zaXN0ZW5jeShQeURpY3RPYmplY3QgKm1wKQoreworICAgIFB5RGljdEtleXNPYmplY3QgKmtleXMgPSBtcC0+bWFfa2V5czsKKyAgICBpbnQgc3BsaXR0ZWQgPSBfUHlEaWN0X0hhc1NwbGl0VGFibGUobXApOworICAgIFB5X3NzaXplX3QgdXNhYmxlID0gVVNBQkxFX0ZSQUNUSU9OKGtleXMtPmRrX3NpemUpOworI2lmZGVmIERFQlVHX1BZRElDVAorICAgIFB5RGljdEtleUVudHJ5ICplbnRyaWVzID0gREtfRU5UUklFUyhrZXlzKTsKKyAgICBQeV9zc2l6ZV90IGk7CisjZW5kaWYKKworICAgIGFzc2VydCgwIDw9IG1wLT5tYV91c2VkICYmIG1wLT5tYV91c2VkIDw9IHVzYWJsZSk7CisgICAgYXNzZXJ0KElTX1BPV0VSX09GXzIoa2V5cy0+ZGtfc2l6ZSkpOworICAgIGFzc2VydCgwIDw9IGtleXMtPmRrX3VzYWJsZQorICAgICAgICAgICAmJiBrZXlzLT5ka191c2FibGUgPD0gdXNhYmxlKTsKKyAgICBhc3NlcnQoMCA8PSBrZXlzLT5ka19uZW50cmllcworICAgICAgICAgICAmJiBrZXlzLT5ka19uZW50cmllcyA8PSB1c2FibGUpOworICAgIGFzc2VydChrZXlzLT5ka191c2FibGUgKyBrZXlzLT5ka19uZW50cmllcyA8PSB1c2FibGUpOworCisgICAgaWYgKCFzcGxpdHRlZCkgeworICAgICAgICAvKiBjb21iaW5lZCB0YWJsZSAqLworICAgICAgICBhc3NlcnQoa2V5cy0+ZGtfcmVmY250ID09IDEpOworICAgIH0KKworI2lmZGVmIERFQlVHX1BZRElDVAorICAgIGZvciAoaT0wOyBpIDwga2V5cy0+ZGtfc2l6ZTsgaSsrKSB7CisgICAgICAgIFB5X3NzaXplX3QgaXggPSBka19nZXRfaW5kZXgoa2V5cywgaSk7CisgICAgICAgIGFzc2VydChES0lYX0RVTU1ZIDw9IGl4ICYmIGl4IDw9IHVzYWJsZSk7CisgICAgfQorCisgICAgZm9yIChpPTA7IGkgPCB1c2FibGU7IGkrKykgeworICAgICAgICBQeURpY3RLZXlFbnRyeSAqZW50cnkgPSAmZW50cmllc1tpXTsKKyAgICAgICAgUHlPYmplY3QgKmtleSA9IGVudHJ5LT5tZV9rZXk7CisKKyAgICAgICAgaWYgKGtleSAhPSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSkgeworICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoID0gKChQeUFTQ0lJT2JqZWN0ICopa2V5KS0+aGFzaDsKKyAgICAgICAgICAgICAgICBhc3NlcnQoaGFzaCAhPSAtMSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KGVudHJ5LT5tZV9oYXNoID09IGhhc2gpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgLyogdGVzdF9kaWN0IGZhaWxzIGlmIFB5T2JqZWN0X0hhc2goKSBpcyBjYWxsZWQgYWdhaW4gKi8KKyAgICAgICAgICAgICAgICBhc3NlcnQoZW50cnktPm1lX2hhc2ggIT0gLTEpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFzcGxpdHRlZCkgeworICAgICAgICAgICAgICAgIGFzc2VydChlbnRyeS0+bWVfdmFsdWUgIT0gTlVMTCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoc3BsaXR0ZWQpIHsKKyAgICAgICAgICAgIGFzc2VydChlbnRyeS0+bWVfdmFsdWUgPT0gTlVMTCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoc3BsaXR0ZWQpIHsKKyAgICAgICAgLyogc3BsaXR0ZWQgdGFibGUgKi8KKyAgICAgICAgZm9yIChpPTA7IGkgPCBtcC0+bWFfdXNlZDsgaSsrKSB7CisgICAgICAgICAgICBhc3NlcnQobXAtPm1hX3ZhbHVlc1tpXSAhPSBOVUxMKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorCisgICAgcmV0dXJuIDE7Cit9CisjZW5kaWYKKworCiBzdGF0aWMgUHlEaWN0S2V5c09iamVjdCAqbmV3X2tleXNfb2JqZWN0KFB5X3NzaXplX3Qgc2l6ZSkKIHsKICAgICBQeURpY3RLZXlzT2JqZWN0ICpkazsKLSAgICBQeV9zc2l6ZV90IGk7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwMDsKKyAgICBQeV9zc2l6ZV90IGVzLCB1c2FibGU7CiAKLSAgICBhc3NlcnQoc2l6ZSA+PSBQeURpY3RfTUlOU0laRV9TUExJVCk7CisgICAgYXNzZXJ0KHNpemUgPj0gUHlEaWN0X01JTlNJWkUpOwogICAgIGFzc2VydChJU19QT1dFUl9PRl8yKHNpemUpKTsKLSAgICBkayA9IFB5TWVtX01BTExPQyhzaXplb2YoUHlEaWN0S2V5c09iamVjdCkgKwotICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihQeURpY3RLZXlFbnRyeSkgKiAoc2l6ZS0xKSk7Ci0gICAgaWYgKGRrID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICB1c2FibGUgPSBVU0FCTEVfRlJBQ1RJT04oc2l6ZSk7CisgICAgaWYgKHNpemUgPD0gMHhmZikgeworICAgICAgICBlcyA9IDE7CisgICAgfQorICAgIGVsc2UgaWYgKHNpemUgPD0gMHhmZmZmKSB7CisgICAgICAgIGVzID0gMjsKKyAgICB9CisjaWYgU0laRU9GX1ZPSURfUCA+IDQKKyAgICBlbHNlIGlmIChzaXplIDw9IDB4ZmZmZmZmZmYpIHsKKyAgICAgICAgZXMgPSA0OworICAgIH0KKyNlbmRpZgorICAgIGVsc2UgeworICAgICAgICBlcyA9IHNpemVvZihQeV9zc2l6ZV90KTsKKyAgICB9CisKKyAgICBpZiAoc2l6ZSA9PSBQeURpY3RfTUlOU0laRSAmJiBudW1mcmVla2V5cyA+IDApIHsKKyAgICAgICAgZGsgPSBrZXlzX2ZyZWVfbGlzdFstLW51bWZyZWVrZXlzXTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGRrID0gUHlPYmplY3RfTUFMTE9DKHNpemVvZihQeURpY3RLZXlzT2JqZWN0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIFB5X01FTUJFUl9TSVpFKFB5RGljdEtleXNPYmplY3QsIGRrX2luZGljZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgZXMgKiBzaXplCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgc2l6ZW9mKFB5RGljdEtleUVudHJ5KSAqIHVzYWJsZSk7CisgICAgICAgIGlmIChkayA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KICAgICB9CiAgICAgREtfREVCVUdfSU5DUkVGIGRrLT5ka19yZWZjbnQgPSAxOwogICAgIGRrLT5ka19zaXplID0gc2l6ZTsKLSAgICBkay0+ZGtfdXNhYmxlID0gVVNBQkxFX0ZSQUNUSU9OKHNpemUpOwotICAgIGVwMCA9ICZkay0+ZGtfZW50cmllc1swXTsKLSAgICAvKiBIYXNoIHZhbHVlIG9mIHNsb3QgMCBpcyB1c2VkIGJ5IHBvcGl0ZW0sIHNvIGl0IG11c3QgYmUgaW5pdGlhbGl6ZWQgKi8KLSAgICBlcDAtPm1lX2hhc2ggPSAwOwotICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgZXAwW2ldLm1lX2tleSA9IE5VTEw7Ci0gICAgICAgIGVwMFtpXS5tZV92YWx1ZSA9IE5VTEw7Ci0gICAgfQorICAgIGRrLT5ka191c2FibGUgPSB1c2FibGU7CiAgICAgZGstPmRrX2xvb2t1cCA9IGxvb2tkaWN0X3VuaWNvZGVfbm9kdW1teTsKKyAgICBkay0+ZGtfbmVudHJpZXMgPSAwOworICAgIG1lbXNldCgmZGstPmRrX2luZGljZXMuYXNfMVswXSwgMHhmZiwgZXMgKiBzaXplKTsKKyAgICBtZW1zZXQoREtfRU5UUklFUyhkayksIDAsIHNpemVvZihQeURpY3RLZXlFbnRyeSkgKiB1c2FibGUpOwogICAgIHJldHVybiBkazsKIH0KIAogc3RhdGljIHZvaWQKIGZyZWVfa2V5c19vYmplY3QoUHlEaWN0S2V5c09iamVjdCAqa2V5cykKIHsKLSAgICBQeURpY3RLZXlFbnRyeSAqZW50cmllcyA9ICZrZXlzLT5ka19lbnRyaWVzWzBdOworICAgIFB5RGljdEtleUVudHJ5ICplbnRyaWVzID0gREtfRU5UUklFUyhrZXlzKTsKICAgICBQeV9zc2l6ZV90IGksIG47Ci0gICAgZm9yIChpID0gMCwgbiA9IERLX1NJWkUoa2V5cyk7IGkgPCBuOyBpKyspIHsKKyAgICBmb3IgKGkgPSAwLCBuID0ga2V5cy0+ZGtfbmVudHJpZXM7IGkgPCBuOyBpKyspIHsKICAgICAgICAgUHlfWERFQ1JFRihlbnRyaWVzW2ldLm1lX2tleSk7CiAgICAgICAgIFB5X1hERUNSRUYoZW50cmllc1tpXS5tZV92YWx1ZSk7CiAgICAgfQotICAgIFB5TWVtX0ZSRUUoa2V5cyk7CisgICAgaWYgKGtleXMtPmRrX3NpemUgPT0gUHlEaWN0X01JTlNJWkUgJiYgbnVtZnJlZWtleXMgPCBQeURpY3RfTUFYRlJFRUxJU1QpIHsKKyAgICAgICAga2V5c19mcmVlX2xpc3RbbnVtZnJlZWtleXMrK10gPSBrZXlzOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFB5T2JqZWN0X0ZSRUUoa2V5cyk7CiB9CiAKICNkZWZpbmUgbmV3X3ZhbHVlcyhzaXplKSBQeU1lbV9ORVcoUHlPYmplY3QgKiwgc2l6ZSkKLQogI2RlZmluZSBmcmVlX3ZhbHVlcyh2YWx1ZXMpIFB5TWVtX0ZSRUUodmFsdWVzKQogCiAvKiBDb25zdW1lcyBhIHJlZmVyZW5jZSB0byB0aGUga2V5cyBvYmplY3QgKi8KQEAgLTM4MCw2ICs1OTMsOCBAQAogICAgIG1wLT5tYV9rZXlzID0ga2V5czsKICAgICBtcC0+bWFfdmFsdWVzID0gdmFsdWVzOwogICAgIG1wLT5tYV91c2VkID0gMDsKKyAgICBtcC0+bWFfdmVyc2lvbl90YWcgPSBESUNUX05FWFRfVkVSU0lPTigpOworICAgIGFzc2VydChfUHlEaWN0X0NoZWNrQ29uc2lzdGVuY3kobXApKTsKICAgICByZXR1cm4gKFB5T2JqZWN0ICopbXA7CiB9CiAKQEAgLTM5MCw3ICs2MDUsNyBAQAogICAgIFB5T2JqZWN0ICoqdmFsdWVzOwogICAgIFB5X3NzaXplX3QgaSwgc2l6ZTsKIAotICAgIHNpemUgPSBES19TSVpFKGtleXMpOworICAgIHNpemUgPSBVU0FCTEVfRlJBQ1RJT04oREtfU0laRShrZXlzKSk7CiAgICAgdmFsdWVzID0gbmV3X3ZhbHVlcyhzaXplKTsKICAgICBpZiAodmFsdWVzID09IE5VTEwpIHsKICAgICAgICAgREtfREVDUkVGKGtleXMpOwpAQCAtNDA1LDEyICs2MjAsNDQgQEAKIFB5T2JqZWN0ICoKIFB5RGljdF9OZXcodm9pZCkKIHsKLSAgICBQeURpY3RLZXlzT2JqZWN0ICprZXlzID0gbmV3X2tleXNfb2JqZWN0KFB5RGljdF9NSU5TSVpFX0NPTUJJTkVEKTsKKyAgICBQeURpY3RLZXlzT2JqZWN0ICprZXlzID0gbmV3X2tleXNfb2JqZWN0KFB5RGljdF9NSU5TSVpFKTsKICAgICBpZiAoa2V5cyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gbmV3X2RpY3Qoa2V5cywgTlVMTCk7CiB9CiAKKy8qIFNlYXJjaCBpbmRleCBvZiBoYXNoIHRhYmxlIGZyb20gb2Zmc2V0IG9mIGVudHJ5IHRhYmxlICovCitzdGF0aWMgUHlfc3NpemVfdAorbG9va2RpY3RfaW5kZXgoUHlEaWN0S2V5c09iamVjdCAqaywgUHlfaGFzaF90IGhhc2gsIFB5X3NzaXplX3QgaW5kZXgpCit7CisgICAgc2l6ZV90IGk7CisgICAgc2l6ZV90IG1hc2sgPSBES19NQVNLKGspOworICAgIFB5X3NzaXplX3QgaXg7CisKKyAgICBpID0gKHNpemVfdCloYXNoICYgbWFzazsKKyAgICBpeCA9IGRrX2dldF9pbmRleChrLCBpKTsKKyAgICBpZiAoaXggPT0gaW5kZXgpIHsKKyAgICAgICAgcmV0dXJuIGk7CisgICAgfQorICAgIGlmIChpeCA9PSBES0lYX0VNUFRZKSB7CisgICAgICAgIHJldHVybiBES0lYX0VNUFRZOworICAgIH0KKworICAgIGZvciAoc2l6ZV90IHBlcnR1cmIgPSBoYXNoOzspIHsKKyAgICAgICAgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVDsKKyAgICAgICAgaSA9IG1hc2sgJiAoKGkgPDwgMikgKyBpICsgcGVydHVyYiArIDEpOworICAgICAgICBpeCA9IGRrX2dldF9pbmRleChrLCBpKTsKKyAgICAgICAgaWYgKGl4ID09IGluZGV4KSB7CisgICAgICAgICAgICByZXR1cm4gaTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXggPT0gREtJWF9FTVBUWSkgeworICAgICAgICAgICAgcmV0dXJuIERLSVhfRU1QVFk7CisgICAgICAgIH0KKyAgICB9CisgICAgYXNzZXJ0KDApOyAgICAgICAgICAvKiBOT1QgUkVBQ0hFRCAqLworICAgIHJldHVybiBES0lYX0VSUk9SOworfQorCiAvKgogVGhlIGJhc2ljIGxvb2t1cCBmdW5jdGlvbiB1c2VkIGJ5IGFsbCBvcGVyYXRpb25zLgogVGhpcyBpcyBiYXNlZCBvbiBBbGdvcml0aG0gRCBmcm9tIEtudXRoIFZvbC4gMywgU2VjLiA2LjQuCkBAIC00MjYsOTMgKzY3Myw2NiBAQAogY29udHJpYnV0aW9ucyBieSBSZWltZXIgQmVocmVuZHMsIEp5cmtpIEFsYWt1aWphbGEsIFZsYWRpbWlyIE1hcmFuZ296b3YgYW5kCiBDaHJpc3RpYW4gVGlzbWVyLgogCi1sb29rZGljdCgpIGlzIGdlbmVyYWwtcHVycG9zZSwgYW5kIG1heSByZXR1cm4gTlVMTCBpZiAoYW5kIG9ubHkgaWYpIGEKLWNvbXBhcmlzb24gcmFpc2VzIGFuIGV4Y2VwdGlvbiAodGhpcyB3YXMgbmV3IGluIFB5dGhvbiAyLjUpLgorbG9va2RpY3QoKSBpcyBnZW5lcmFsLXB1cnBvc2UsIGFuZCBtYXkgcmV0dXJuIERLSVhfRVJST1IgaWYgKGFuZCBvbmx5IGlmKSBhCitjb21wYXJpc29uIHJhaXNlcyBhbiBleGNlcHRpb24uCiBsb29rZGljdF91bmljb2RlKCkgYmVsb3cgaXMgc3BlY2lhbGl6ZWQgdG8gc3RyaW5nIGtleXMsIGNvbXBhcmlzb24gb2Ygd2hpY2ggY2FuCi1uZXZlciByYWlzZSBhbiBleGNlcHRpb247IHRoYXQgZnVuY3Rpb24gY2FuIG5ldmVyIHJldHVybiBOVUxMLgorbmV2ZXIgcmFpc2UgYW4gZXhjZXB0aW9uOyB0aGF0IGZ1bmN0aW9uIGNhbiBuZXZlciByZXR1cm4gREtJWF9FUlJPUi4KIGxvb2tkaWN0X3VuaWNvZGVfbm9kdW1teSBpcyBmdXJ0aGVyIHNwZWNpYWxpemVkIGZvciBzdHJpbmcga2V5cyB0aGF0IGNhbm5vdCBiZQogdGhlIDxkdW1teT4gdmFsdWUuCi1Gb3IgYm90aCwgd2hlbiB0aGUga2V5IGlzbid0IGZvdW5kIGEgUHlEaWN0RW50cnkqIGlzIHJldHVybmVkCi13aGVyZSB0aGUga2V5IHdvdWxkIGhhdmUgYmVlbiBmb3VuZCwgKnZhbHVlX2FkZHIgcG9pbnRzIHRvIHRoZSBtYXRjaGluZyB2YWx1ZQotc2xvdC4KK0ZvciBib3RoLCB3aGVuIHRoZSBrZXkgaXNuJ3QgZm91bmQgYSBES0lYX0VNUFRZIGlzIHJldHVybmVkLiBoYXNocG9zIHJldHVybnMKK3doZXJlIHRoZSBrZXkgaW5kZXggc2hvdWxkIGJlIGluc2VydGVkLgogKi8KLXN0YXRpYyBQeURpY3RLZXlFbnRyeSAqCitzdGF0aWMgUHlfc3NpemVfdAogbG9va2RpY3QoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwKLSAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyKQorICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIsIFB5X3NzaXplX3QgKmhhc2hwb3MpCiB7Ci0gICAgc2l6ZV90IGk7Ci0gICAgc2l6ZV90IHBlcnR1cmI7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmZyZWVzbG90OwotICAgIHNpemVfdCBtYXNrOwotICAgIFB5RGljdEtleUVudHJ5ICplcDA7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwOworICAgIHNpemVfdCBpLCBtYXNrOworICAgIFB5X3NzaXplX3QgaXgsIGZyZWVzbG90OwogICAgIGludCBjbXA7CisgICAgUHlEaWN0S2V5c09iamVjdCAqZGs7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwMCwgKmVwOwogICAgIFB5T2JqZWN0ICpzdGFydGtleTsKIAogdG9wOgotICAgIG1hc2sgPSBES19NQVNLKG1wLT5tYV9rZXlzKTsKLSAgICBlcDAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF07CisgICAgZGsgPSBtcC0+bWFfa2V5czsKKyAgICBtYXNrID0gREtfTUFTSyhkayk7CisgICAgZXAwID0gREtfRU5UUklFUyhkayk7CiAgICAgaSA9IChzaXplX3QpaGFzaCAmIG1hc2s7Ci0gICAgZXAgPSAmZXAwW2ldOwotICAgIGlmIChlcC0+bWVfa2V5ID09IE5VTEwgfHwgZXAtPm1lX2tleSA9PSBrZXkpIHsKLSAgICAgICAgKnZhbHVlX2FkZHIgPSAmZXAtPm1lX3ZhbHVlOwotICAgICAgICByZXR1cm4gZXA7Ci0gICAgfQotICAgIGlmIChlcC0+bWVfa2V5ID09IGR1bW15KQotICAgICAgICBmcmVlc2xvdCA9IGVwOwotICAgIGVsc2UgewotICAgICAgICBpZiAoZXAtPm1lX2hhc2ggPT0gaGFzaCkgewotICAgICAgICAgICAgc3RhcnRrZXkgPSBlcC0+bWVfa2V5OwotICAgICAgICAgICAgUHlfSU5DUkVGKHN0YXJ0a2V5KTsKLSAgICAgICAgICAgIGNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChzdGFydGtleSwga2V5LCBQeV9FUSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoc3RhcnRrZXkpOwotICAgICAgICAgICAgaWYgKGNtcCA8IDApCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICBpZiAoZXAwID09IG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzICYmIGVwLT5tZV9rZXkgPT0gc3RhcnRrZXkpIHsKLSAgICAgICAgICAgICAgICBpZiAoY21wID4gMCkgewotICAgICAgICAgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAvKiBUaGUgZGljdCB3YXMgbXV0YXRlZCwgcmVzdGFydCAqLwotICAgICAgICAgICAgICAgIGdvdG8gdG9wOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGZyZWVzbG90ID0gTlVMTDsKLSAgICB9CiAKLSAgICAvKiBJbiB0aGUgbG9vcCwgbWVfa2V5ID09IGR1bW15IGlzIGJ5IGZhciAoZmFjdG9yIG9mIDEwMHMpIHRoZQotICAgICAgIGxlYXN0IGxpa2VseSBvdXRjb21lLCBzbyB0ZXN0IGZvciB0aGF0IGxhc3QuICovCi0gICAgZm9yIChwZXJ0dXJiID0gaGFzaDsgOyBwZXJ0dXJiID4+PSBQRVJUVVJCX1NISUZUKSB7Ci0gICAgICAgIGkgPSAoaSA8PCAyKSArIGkgKyBwZXJ0dXJiICsgMTsKLSAgICAgICAgZXAgPSAmZXAwW2kgJiBtYXNrXTsKLSAgICAgICAgaWYgKGVwLT5tZV9rZXkgPT0gTlVMTCkgewotICAgICAgICAgICAgaWYgKGZyZWVzbG90ID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVwOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZmcmVlc2xvdC0+bWVfdmFsdWU7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZyZWVzbG90OwotICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgaXggPSBka19nZXRfaW5kZXgoZGssIGkpOworICAgIGlmIChpeCA9PSBES0lYX0VNUFRZKSB7CisgICAgICAgIGlmIChoYXNocG9zICE9IE5VTEwpCisgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CisgICAgICAgICp2YWx1ZV9hZGRyID0gTlVMTDsKKyAgICAgICAgcmV0dXJuIERLSVhfRU1QVFk7CisgICAgfQorICAgIGlmIChpeCA9PSBES0lYX0RVTU1ZKSB7CisgICAgICAgIGZyZWVzbG90ID0gaTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGVwID0gJmVwMFtpeF07CisgICAgICAgIGFzc2VydChlcC0+bWVfa2V5ICE9IE5VTEwpOwogICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBrZXkpIHsKICAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKLSAgICAgICAgICAgIHJldHVybiBlcDsKKyAgICAgICAgICAgIGlmIChoYXNocG9zICE9IE5VTEwpCisgICAgICAgICAgICAgICAgKmhhc2hwb3MgPSBpOworICAgICAgICAgICAgcmV0dXJuIGl4OwogICAgICAgICB9Ci0gICAgICAgIGlmIChlcC0+bWVfaGFzaCA9PSBoYXNoICYmIGVwLT5tZV9rZXkgIT0gZHVtbXkpIHsKKyAgICAgICAgaWYgKGVwLT5tZV9oYXNoID09IGhhc2gpIHsKICAgICAgICAgICAgIHN0YXJ0a2V5ID0gZXAtPm1lX2tleTsKICAgICAgICAgICAgIFB5X0lOQ1JFRihzdGFydGtleSk7CiAgICAgICAgICAgICBjbXAgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woc3RhcnRrZXksIGtleSwgUHlfRVEpOwogICAgICAgICAgICAgUHlfREVDUkVGKHN0YXJ0a2V5KTsKICAgICAgICAgICAgIGlmIChjbXAgPCAwKSB7CiAgICAgICAgICAgICAgICAgKnZhbHVlX2FkZHIgPSBOVUxMOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIHJldHVybiBES0lYX0VSUk9SOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGVwMCA9PSBtcC0+bWFfa2V5cy0+ZGtfZW50cmllcyAmJiBlcC0+bWVfa2V5ID09IHN0YXJ0a2V5KSB7CisgICAgICAgICAgICBpZiAoZGsgPT0gbXAtPm1hX2tleXMgJiYgZXAtPm1lX2tleSA9PSBzdGFydGtleSkgewogICAgICAgICAgICAgICAgIGlmIChjbXAgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVwOworICAgICAgICAgICAgICAgICAgICBpZiAoaGFzaHBvcyAhPSBOVUxMKQorICAgICAgICAgICAgICAgICAgICAgICAgKmhhc2hwb3MgPSBpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXg7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7CkBAIC01MjAsNzIgKzc0MCwxMzEgQEAKICAgICAgICAgICAgICAgICBnb3RvIHRvcDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChlcC0+bWVfa2V5ID09IGR1bW15ICYmIGZyZWVzbG90ID09IE5VTEwpCi0gICAgICAgICAgICBmcmVlc2xvdCA9IGVwOworICAgICAgICBmcmVlc2xvdCA9IC0xOworICAgIH0KKworICAgIGZvciAoc2l6ZV90IHBlcnR1cmIgPSBoYXNoOzspIHsKKyAgICAgICAgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVDsKKyAgICAgICAgaSA9ICgoaSA8PCAyKSArIGkgKyBwZXJ0dXJiICsgMSkgJiBtYXNrOworICAgICAgICBpeCA9IGRrX2dldF9pbmRleChkaywgaSk7CisgICAgICAgIGlmIChpeCA9PSBES0lYX0VNUFRZKSB7CisgICAgICAgICAgICBpZiAoaGFzaHBvcyAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgKmhhc2hwb3MgPSAoZnJlZXNsb3QgPT0gLTEpID8gKFB5X3NzaXplX3QpaSA6IGZyZWVzbG90OworICAgICAgICAgICAgfQorICAgICAgICAgICAgKnZhbHVlX2FkZHIgPSBOVUxMOworICAgICAgICAgICAgcmV0dXJuIGl4OworICAgICAgICB9CisgICAgICAgIGlmIChpeCA9PSBES0lYX0RVTU1ZKSB7CisgICAgICAgICAgICBpZiAoZnJlZXNsb3QgPT0gLTEpCisgICAgICAgICAgICAgICAgZnJlZXNsb3QgPSBpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgZXAgPSAmZXAwW2l4XTsKKyAgICAgICAgYXNzZXJ0KGVwLT5tZV9rZXkgIT0gTlVMTCk7CisgICAgICAgIGlmIChlcC0+bWVfa2V5ID09IGtleSkgeworICAgICAgICAgICAgaWYgKGhhc2hwb3MgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICpoYXNocG9zID0gaTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKKyAgICAgICAgICAgIHJldHVybiBpeDsKKyAgICAgICAgfQorICAgICAgICBpZiAoZXAtPm1lX2hhc2ggPT0gaGFzaCkgeworICAgICAgICAgICAgc3RhcnRrZXkgPSBlcC0+bWVfa2V5OworICAgICAgICAgICAgUHlfSU5DUkVGKHN0YXJ0a2V5KTsKKyAgICAgICAgICAgIGNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChzdGFydGtleSwga2V5LCBQeV9FUSk7CisgICAgICAgICAgICBQeV9ERUNSRUYoc3RhcnRrZXkpOworICAgICAgICAgICAgaWYgKGNtcCA8IDApIHsKKyAgICAgICAgICAgICAgICAqdmFsdWVfYWRkciA9IE5VTEw7CisgICAgICAgICAgICAgICAgcmV0dXJuIERLSVhfRVJST1I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZGsgPT0gbXAtPm1hX2tleXMgJiYgZXAtPm1lX2tleSA9PSBzdGFydGtleSkgeworICAgICAgICAgICAgICAgIGlmIChjbXAgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChoYXNocG9zICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICpoYXNocG9zID0gaTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBpeDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAvKiBUaGUgZGljdCB3YXMgbXV0YXRlZCwgcmVzdGFydCAqLworICAgICAgICAgICAgICAgIGdvdG8gdG9wOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogICAgIGFzc2VydCgwKTsgICAgICAgICAgLyogTk9UIFJFQUNIRUQgKi8KICAgICByZXR1cm4gMDsKIH0KIAogLyogU3BlY2lhbGl6ZWQgdmVyc2lvbiBmb3Igc3RyaW5nLW9ubHkga2V5cyAqLwotc3RhdGljIFB5RGljdEtleUVudHJ5ICoKK3N0YXRpYyBQeV9zc2l6ZV90CiBsb29rZGljdF91bmljb2RlKFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksCi0gICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyKQorICAgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkciwgUHlfc3NpemVfdCAqaGFzaHBvcykKIHsKICAgICBzaXplX3QgaTsKLSAgICBzaXplX3QgcGVydHVyYjsKLSAgICBQeURpY3RLZXlFbnRyeSAqZnJlZXNsb3Q7CiAgICAgc2l6ZV90IG1hc2sgPSBES19NQVNLKG1wLT5tYV9rZXlzKTsKLSAgICBQeURpY3RLZXlFbnRyeSAqZXAwID0gJm1wLT5tYV9rZXlzLT5ka19lbnRyaWVzWzBdOwotICAgIFB5RGljdEtleUVudHJ5ICplcDsKKyAgICBQeV9zc2l6ZV90IGl4LCBmcmVlc2xvdDsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXAsICplcDAgPSBES19FTlRSSUVTKG1wLT5tYV9rZXlzKTsKIAorICAgIGFzc2VydChtcC0+bWFfdmFsdWVzID09IE5VTEwpOwogICAgIC8qIE1ha2Ugc3VyZSB0aGlzIGZ1bmN0aW9uIGRvZXNuJ3QgaGF2ZSB0byBoYW5kbGUgbm9uLXVuaWNvZGUga2V5cywKICAgICAgICBpbmNsdWRpbmcgc3ViY2xhc3NlcyBvZiBzdHI7IGUuZy4sIG9uZSByZWFzb24gdG8gc3ViY2xhc3MKICAgICAgICB1bmljb2RlcyBpcyB0byBvdmVycmlkZSBfX2VxX18sIGFuZCBmb3Igc3BlZWQgd2UgZG9uJ3QgY2F0ZXIgdG8KICAgICAgICB0aGF0IGhlcmUuICovCiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpKSB7CiAgICAgICAgIG1wLT5tYV9rZXlzLT5ka19sb29rdXAgPSBsb29rZGljdDsKLSAgICAgICAgcmV0dXJuIGxvb2tkaWN0KG1wLCBrZXksIGhhc2gsIHZhbHVlX2FkZHIpOworICAgICAgICByZXR1cm4gbG9va2RpY3QobXAsIGtleSwgaGFzaCwgdmFsdWVfYWRkciwgaGFzaHBvcyk7CiAgICAgfQogICAgIGkgPSAoc2l6ZV90KWhhc2ggJiBtYXNrOwotICAgIGVwID0gJmVwMFtpXTsKLSAgICBpZiAoZXAtPm1lX2tleSA9PSBOVUxMIHx8IGVwLT5tZV9rZXkgPT0ga2V5KSB7Ci0gICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKLSAgICAgICAgcmV0dXJuIGVwOworICAgIGl4ID0gZGtfZ2V0X2luZGV4KG1wLT5tYV9rZXlzLCBpKTsKKyAgICBpZiAoaXggPT0gREtJWF9FTVBUWSkgeworICAgICAgICBpZiAoaGFzaHBvcyAhPSBOVUxMKQorICAgICAgICAgICAgKmhhc2hwb3MgPSBpOworICAgICAgICAqdmFsdWVfYWRkciA9IE5VTEw7CisgICAgICAgIHJldHVybiBES0lYX0VNUFRZOwogICAgIH0KLSAgICBpZiAoZXAtPm1lX2tleSA9PSBkdW1teSkKLSAgICAgICAgZnJlZXNsb3QgPSBlcDsKKyAgICBpZiAoaXggPT0gREtJWF9EVU1NWSkgeworICAgICAgICBmcmVlc2xvdCA9IGk7CisgICAgfQogICAgIGVsc2UgewotICAgICAgICBpZiAoZXAtPm1lX2hhc2ggPT0gaGFzaCAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpIHsKKyAgICAgICAgZXAgPSAmZXAwW2l4XTsKKyAgICAgICAgYXNzZXJ0KGVwLT5tZV9rZXkgIT0gTlVMTCk7CisgICAgICAgIGlmIChlcC0+bWVfa2V5ID09IGtleQorICAgICAgICAgICAgfHwgKGVwLT5tZV9oYXNoID09IGhhc2ggJiYgdW5pY29kZV9lcShlcC0+bWVfa2V5LCBrZXkpKSkgeworICAgICAgICAgICAgaWYgKGhhc2hwb3MgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CiAgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7Ci0gICAgICAgICAgICByZXR1cm4gZXA7CisgICAgICAgICAgICByZXR1cm4gaXg7CiAgICAgICAgIH0KLSAgICAgICAgZnJlZXNsb3QgPSBOVUxMOworICAgICAgICBmcmVlc2xvdCA9IC0xOwogICAgIH0KIAotICAgIC8qIEluIHRoZSBsb29wLCBtZV9rZXkgPT0gZHVtbXkgaXMgYnkgZmFyIChmYWN0b3Igb2YgMTAwcykgdGhlCi0gICAgICAgbGVhc3QgbGlrZWx5IG91dGNvbWUsIHNvIHRlc3QgZm9yIHRoYXQgbGFzdC4gKi8KLSAgICBmb3IgKHBlcnR1cmIgPSBoYXNoOyA7IHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQpIHsKLSAgICAgICAgaSA9IChpIDw8IDIpICsgaSArIHBlcnR1cmIgKyAxOwotICAgICAgICBlcCA9ICZlcDBbaSAmIG1hc2tdOwotICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBpZiAoZnJlZXNsb3QgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZXA7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmZyZWVzbG90LT5tZV92YWx1ZTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZnJlZXNsb3Q7CisgICAgZm9yIChzaXplX3QgcGVydHVyYiA9IGhhc2g7OykgeworICAgICAgICBwZXJ0dXJiID4+PSBQRVJUVVJCX1NISUZUOworICAgICAgICBpID0gbWFzayAmICgoaSA8PCAyKSArIGkgKyBwZXJ0dXJiICsgMSk7CisgICAgICAgIGl4ID0gZGtfZ2V0X2luZGV4KG1wLT5tYV9rZXlzLCBpKTsKKyAgICAgICAgaWYgKGl4ID09IERLSVhfRU1QVFkpIHsKKyAgICAgICAgICAgIGlmIChoYXNocG9zICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAqaGFzaHBvcyA9IChmcmVlc2xvdCA9PSAtMSkgPyAoUHlfc3NpemVfdClpIDogZnJlZXNsb3Q7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAqdmFsdWVfYWRkciA9IE5VTEw7CisgICAgICAgICAgICByZXR1cm4gREtJWF9FTVBUWTsKICAgICAgICAgfQorICAgICAgICBpZiAoaXggPT0gREtJWF9EVU1NWSkgeworICAgICAgICAgICAgaWYgKGZyZWVzbG90ID09IC0xKQorICAgICAgICAgICAgICAgIGZyZWVzbG90ID0gaTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGVwID0gJmVwMFtpeF07CisgICAgICAgIGFzc2VydChlcC0+bWVfa2V5ICE9IE5VTEwpOwogICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBrZXkKLSAgICAgICAgICAgIHx8IChlcC0+bWVfaGFzaCA9PSBoYXNoCi0gICAgICAgICAgICAmJiBlcC0+bWVfa2V5ICE9IGR1bW15Ci0gICAgICAgICAgICAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpKSB7CisgICAgICAgICAgICB8fCAoZXAtPm1lX2hhc2ggPT0gaGFzaCAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpKSB7CiAgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7Ci0gICAgICAgICAgICByZXR1cm4gZXA7CisgICAgICAgICAgICBpZiAoaGFzaHBvcyAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgKmhhc2hwb3MgPSBpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGl4OwogICAgICAgICB9Ci0gICAgICAgIGlmIChlcC0+bWVfa2V5ID09IGR1bW15ICYmIGZyZWVzbG90ID09IE5VTEwpCi0gICAgICAgICAgICBmcmVlc2xvdCA9IGVwOwogICAgIH0KICAgICBhc3NlcnQoMCk7ICAgICAgICAgIC8qIE5PVCBSRUFDSEVEICovCiAgICAgcmV0dXJuIDA7CkBAIC01OTMsNDAgKzg3Miw2MyBAQAogCiAvKiBGYXN0ZXIgdmVyc2lvbiBvZiBsb29rZGljdF91bmljb2RlIHdoZW4gaXQgaXMga25vd24gdGhhdCBubyA8ZHVtbXk+IGtleXMKICAqIHdpbGwgYmUgcHJlc2VudC4gKi8KLXN0YXRpYyBQeURpY3RLZXlFbnRyeSAqCitzdGF0aWMgUHlfc3NpemVfdAogbG9va2RpY3RfdW5pY29kZV9ub2R1bW15KFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIpCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqaGFzaHBvcykKIHsKICAgICBzaXplX3QgaTsKLSAgICBzaXplX3QgcGVydHVyYjsKICAgICBzaXplX3QgbWFzayA9IERLX01BU0sobXAtPm1hX2tleXMpOwotICAgIFB5RGljdEtleUVudHJ5ICplcDAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF07Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwOworICAgIFB5X3NzaXplX3QgaXg7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwLCAqZXAwID0gREtfRU5UUklFUyhtcC0+bWFfa2V5cyk7CiAKKyAgICBhc3NlcnQobXAtPm1hX3ZhbHVlcyA9PSBOVUxMKTsKICAgICAvKiBNYWtlIHN1cmUgdGhpcyBmdW5jdGlvbiBkb2Vzbid0IGhhdmUgdG8gaGFuZGxlIG5vbi11bmljb2RlIGtleXMsCiAgICAgICAgaW5jbHVkaW5nIHN1YmNsYXNzZXMgb2Ygc3RyOyBlLmcuLCBvbmUgcmVhc29uIHRvIHN1YmNsYXNzCiAgICAgICAgdW5pY29kZXMgaXMgdG8gb3ZlcnJpZGUgX19lcV9fLCBhbmQgZm9yIHNwZWVkIHdlIGRvbid0IGNhdGVyIHRvCiAgICAgICAgdGhhdCBoZXJlLiAqLwogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSkgewogICAgICAgICBtcC0+bWFfa2V5cy0+ZGtfbG9va3VwID0gbG9va2RpY3Q7Ci0gICAgICAgIHJldHVybiBsb29rZGljdChtcCwga2V5LCBoYXNoLCB2YWx1ZV9hZGRyKTsKKyAgICAgICAgcmV0dXJuIGxvb2tkaWN0KG1wLCBrZXksIGhhc2gsIHZhbHVlX2FkZHIsIGhhc2hwb3MpOwogICAgIH0KICAgICBpID0gKHNpemVfdCloYXNoICYgbWFzazsKLSAgICBlcCA9ICZlcDBbaV07Ci0gICAgYXNzZXJ0KGVwLT5tZV9rZXkgPT0gTlVMTCB8fCBQeVVuaWNvZGVfQ2hlY2tFeGFjdChlcC0+bWVfa2V5KSk7Ci0gICAgaWYgKGVwLT5tZV9rZXkgPT0gTlVMTCB8fCBlcC0+bWVfa2V5ID09IGtleSB8fAotICAgICAgICAoZXAtPm1lX2hhc2ggPT0gaGFzaCAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpKSB7Ci0gICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKLSAgICAgICAgcmV0dXJuIGVwOworICAgIGl4ID0gZGtfZ2V0X2luZGV4KG1wLT5tYV9rZXlzLCBpKTsKKyAgICBhc3NlcnQgKGl4ICE9IERLSVhfRFVNTVkpOworICAgIGlmIChpeCA9PSBES0lYX0VNUFRZKSB7CisgICAgICAgIGlmIChoYXNocG9zICE9IE5VTEwpCisgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CisgICAgICAgICp2YWx1ZV9hZGRyID0gTlVMTDsKKyAgICAgICAgcmV0dXJuIERLSVhfRU1QVFk7CiAgICAgfQotICAgIGZvciAocGVydHVyYiA9IGhhc2g7IDsgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVCkgewotICAgICAgICBpID0gKGkgPDwgMikgKyBpICsgcGVydHVyYiArIDE7Ci0gICAgICAgIGVwID0gJmVwMFtpICYgbWFza107Ci0gICAgICAgIGFzc2VydChlcC0+bWVfa2V5ID09IE5VTEwgfHwgUHlVbmljb2RlX0NoZWNrRXhhY3QoZXAtPm1lX2tleSkpOwotICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBOVUxMIHx8IGVwLT5tZV9rZXkgPT0ga2V5IHx8CisgICAgZXAgPSAmZXAwW2l4XTsKKyAgICBhc3NlcnQoZXAtPm1lX2tleSAhPSBOVUxMKTsKKyAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrRXhhY3QoZXAtPm1lX2tleSkpOworICAgIGlmIChlcC0+bWVfa2V5ID09IGtleSB8fAorICAgICAgICAoZXAtPm1lX2hhc2ggPT0gaGFzaCAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpKSB7CisgICAgICAgIGlmIChoYXNocG9zICE9IE5VTEwpCisgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CisgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKKyAgICAgICAgcmV0dXJuIGl4OworICAgIH0KKyAgICBmb3IgKHNpemVfdCBwZXJ0dXJiID0gaGFzaDs7KSB7CisgICAgICAgIHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQ7CisgICAgICAgIGkgPSBtYXNrICYgKChpIDw8IDIpICsgaSArIHBlcnR1cmIgKyAxKTsKKyAgICAgICAgaXggPSBka19nZXRfaW5kZXgobXAtPm1hX2tleXMsIGkpOworICAgICAgICBhc3NlcnQgKGl4ICE9IERLSVhfRFVNTVkpOworICAgICAgICBpZiAoaXggPT0gREtJWF9FTVBUWSkgeworICAgICAgICAgICAgaWYgKGhhc2hwb3MgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CisgICAgICAgICAgICAqdmFsdWVfYWRkciA9IE5VTEw7CisgICAgICAgICAgICByZXR1cm4gREtJWF9FTVBUWTsKKyAgICAgICAgfQorICAgICAgICBlcCA9ICZlcDBbaXhdOworICAgICAgICBhc3NlcnQoZXAtPm1lX2tleSAhPSBOVUxMICYmIFB5VW5pY29kZV9DaGVja0V4YWN0KGVwLT5tZV9rZXkpKTsKKyAgICAgICAgaWYgKGVwLT5tZV9rZXkgPT0ga2V5IHx8CiAgICAgICAgICAgICAoZXAtPm1lX2hhc2ggPT0gaGFzaCAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpKSB7CisgICAgICAgICAgICBpZiAoaGFzaHBvcyAhPSBOVUxMKQorICAgICAgICAgICAgICAgICpoYXNocG9zID0gaTsKICAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKLSAgICAgICAgICAgIHJldHVybiBlcDsKKyAgICAgICAgICAgIHJldHVybiBpeDsKICAgICAgICAgfQogICAgIH0KICAgICBhc3NlcnQoMCk7ICAgICAgICAgIC8qIE5PVCBSRUFDSEVEICovCkBAIC02MzgsMzkgKzk0MCw2MiBAQAogICogU3BsaXQgdGFibGVzIG9ubHkgY29udGFpbiB1bmljb2RlIGtleXMgYW5kIG5vIGR1bW15IGtleXMsCiAgKiBzbyBhbGdvcml0aG0gaXMgdGhlIHNhbWUgYXMgbG9va2RpY3RfdW5pY29kZV9ub2R1bW15LgogICovCi1zdGF0aWMgUHlEaWN0S2V5RW50cnkgKgorc3RhdGljIFB5X3NzaXplX3QKIGxvb2tkaWN0X3NwbGl0KFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksCi0gICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkcikKKyAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyLCBQeV9zc2l6ZV90ICpoYXNocG9zKQogewogICAgIHNpemVfdCBpOwotICAgIHNpemVfdCBwZXJ0dXJiOwogICAgIHNpemVfdCBtYXNrID0gREtfTUFTSyhtcC0+bWFfa2V5cyk7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwMCA9ICZtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1swXTsKLSAgICBQeURpY3RLZXlFbnRyeSAqZXA7CisgICAgUHlfc3NpemVfdCBpeDsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXAsICplcDAgPSBES19FTlRSSUVTKG1wLT5tYV9rZXlzKTsKIAorICAgIC8qIG1wIG11c3Qgc3BsaXQgdGFibGUgKi8KKyAgICBhc3NlcnQobXAtPm1hX3ZhbHVlcyAhPSBOVUxMKTsKICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkpIHsKLSAgICAgICAgZXAgPSBsb29rZGljdChtcCwga2V5LCBoYXNoLCB2YWx1ZV9hZGRyKTsKLSAgICAgICAgLyogbG9va2RpY3QgZXhwZWN0cyBhIGNvbWJpbmVkLXRhYmxlLCBzbyBmaXggdmFsdWVfYWRkciAqLwotICAgICAgICBpID0gZXAgLSBlcDA7Ci0gICAgICAgICp2YWx1ZV9hZGRyID0gJm1wLT5tYV92YWx1ZXNbaV07Ci0gICAgICAgIHJldHVybiBlcDsKKyAgICAgICAgaXggPSBsb29rZGljdChtcCwga2V5LCBoYXNoLCB2YWx1ZV9hZGRyLCBoYXNocG9zKTsKKyAgICAgICAgaWYgKGl4ID49IDApIHsKKyAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJm1wLT5tYV92YWx1ZXNbaXhdOworICAgICAgICB9CisgICAgICAgIHJldHVybiBpeDsKICAgICB9CisKICAgICBpID0gKHNpemVfdCloYXNoICYgbWFzazsKLSAgICBlcCA9ICZlcDBbaV07Ci0gICAgYXNzZXJ0KGVwLT5tZV9rZXkgPT0gTlVMTCB8fCBQeVVuaWNvZGVfQ2hlY2tFeGFjdChlcC0+bWVfa2V5KSk7Ci0gICAgaWYgKGVwLT5tZV9rZXkgPT0gTlVMTCB8fCBlcC0+bWVfa2V5ID09IGtleSB8fAotICAgICAgICAoZXAtPm1lX2hhc2ggPT0gaGFzaCAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpKSB7Ci0gICAgICAgICp2YWx1ZV9hZGRyID0gJm1wLT5tYV92YWx1ZXNbaV07Ci0gICAgICAgIHJldHVybiBlcDsKKyAgICBpeCA9IGRrX2dldF9pbmRleChtcC0+bWFfa2V5cywgaSk7CisgICAgaWYgKGl4ID09IERLSVhfRU1QVFkpIHsKKyAgICAgICAgaWYgKGhhc2hwb3MgIT0gTlVMTCkKKyAgICAgICAgICAgICpoYXNocG9zID0gaTsKKyAgICAgICAgKnZhbHVlX2FkZHIgPSBOVUxMOworICAgICAgICByZXR1cm4gREtJWF9FTVBUWTsKICAgICB9Ci0gICAgZm9yIChwZXJ0dXJiID0gaGFzaDsgOyBwZXJ0dXJiID4+PSBQRVJUVVJCX1NISUZUKSB7Ci0gICAgICAgIGkgPSAoaSA8PCAyKSArIGkgKyBwZXJ0dXJiICsgMTsKLSAgICAgICAgZXAgPSAmZXAwW2kgJiBtYXNrXTsKLSAgICAgICAgYXNzZXJ0KGVwLT5tZV9rZXkgPT0gTlVMTCB8fCBQeVVuaWNvZGVfQ2hlY2tFeGFjdChlcC0+bWVfa2V5KSk7Ci0gICAgICAgIGlmIChlcC0+bWVfa2V5ID09IE5VTEwgfHwgZXAtPm1lX2tleSA9PSBrZXkgfHwKKyAgICBhc3NlcnQoaXggPj0gMCk7CisgICAgZXAgPSAmZXAwW2l4XTsKKyAgICBhc3NlcnQoZXAtPm1lX2tleSAhPSBOVUxMICYmIFB5VW5pY29kZV9DaGVja0V4YWN0KGVwLT5tZV9rZXkpKTsKKyAgICBpZiAoZXAtPm1lX2tleSA9PSBrZXkgfHwKKyAgICAgICAgKGVwLT5tZV9oYXNoID09IGhhc2ggJiYgdW5pY29kZV9lcShlcC0+bWVfa2V5LCBrZXkpKSkgeworICAgICAgICBpZiAoaGFzaHBvcyAhPSBOVUxMKQorICAgICAgICAgICAgKmhhc2hwb3MgPSBpOworICAgICAgICAqdmFsdWVfYWRkciA9ICZtcC0+bWFfdmFsdWVzW2l4XTsKKyAgICAgICAgcmV0dXJuIGl4OworICAgIH0KKyAgICBmb3IgKHNpemVfdCBwZXJ0dXJiID0gaGFzaDs7KSB7CisgICAgICAgIHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQ7CisgICAgICAgIGkgPSBtYXNrICYgKChpIDw8IDIpICsgaSArIHBlcnR1cmIgKyAxKTsKKyAgICAgICAgaXggPSBka19nZXRfaW5kZXgobXAtPm1hX2tleXMsIGkpOworICAgICAgICBpZiAoaXggPT0gREtJWF9FTVBUWSkgeworICAgICAgICAgICAgaWYgKGhhc2hwb3MgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CisgICAgICAgICAgICAqdmFsdWVfYWRkciA9IE5VTEw7CisgICAgICAgICAgICByZXR1cm4gREtJWF9FTVBUWTsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnQoaXggPj0gMCk7CisgICAgICAgIGVwID0gJmVwMFtpeF07CisgICAgICAgIGFzc2VydChlcC0+bWVfa2V5ICE9IE5VTEwgJiYgUHlVbmljb2RlX0NoZWNrRXhhY3QoZXAtPm1lX2tleSkpOworICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBrZXkgfHwKICAgICAgICAgICAgIChlcC0+bWVfaGFzaCA9PSBoYXNoICYmIHVuaWNvZGVfZXEoZXAtPm1lX2tleSwga2V5KSkpIHsKLSAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJm1wLT5tYV92YWx1ZXNbaSAmIG1hc2tdOwotICAgICAgICAgICAgcmV0dXJuIGVwOworICAgICAgICAgICAgaWYgKGhhc2hwb3MgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CisgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZtcC0+bWFfdmFsdWVzW2l4XTsKKyAgICAgICAgICAgIHJldHVybiBpeDsKICAgICAgICAgfQogICAgIH0KICAgICBhc3NlcnQoMCk7ICAgICAgICAgIC8qIE5PVCBSRUFDSEVEICovCkBAIC03MDcsMjcgKzEwMzIsMjcgQEAKIHsKICAgICBQeURpY3RPYmplY3QgKm1wOwogICAgIFB5T2JqZWN0ICp2YWx1ZTsKLSAgICBQeV9zc2l6ZV90IGksIHNpemU7CisgICAgUHlfc3NpemVfdCBpLCBudW1lbnRyaWVzOworICAgIFB5RGljdEtleUVudHJ5ICplcDA7CiAKICAgICBpZiAoIVB5RGljdF9DaGVja0V4YWN0KG9wKSB8fCAhX1B5T2JqZWN0X0dDX0lTX1RSQUNLRUQob3ApKQogICAgICAgICByZXR1cm47CiAKICAgICBtcCA9IChQeURpY3RPYmplY3QgKikgb3A7Ci0gICAgc2l6ZSA9IERLX1NJWkUobXAtPm1hX2tleXMpOworICAgIGVwMCA9IERLX0VOVFJJRVMobXAtPm1hX2tleXMpOworICAgIG51bWVudHJpZXMgPSBtcC0+bWFfa2V5cy0+ZGtfbmVudHJpZXM7CiAgICAgaWYgKF9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpIHsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtZW50cmllczsgaSsrKSB7CiAgICAgICAgICAgICBpZiAoKHZhbHVlID0gbXAtPm1hX3ZhbHVlc1tpXSkgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfR0NfTUFZX0JFX1RSQUNLRUQodmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KCFfUHlPYmplY3RfR0NfTUFZX0JFX1RSQUNLRUQoCi0gICAgICAgICAgICAgICAgICAgIG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX2tleSkpOworICAgICAgICAgICAgICAgIGFzc2VydCghX1B5T2JqZWN0X0dDX01BWV9CRV9UUkFDS0VEKGVwMFtpXS5tZV9rZXkpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIFB5RGljdEtleUVudHJ5ICplcDAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF07Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG51bWVudHJpZXM7IGkrKykgewogICAgICAgICAgICAgaWYgKCh2YWx1ZSA9IGVwMFtpXS5tZV92YWx1ZSkgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfR0NfTUFZX0JFX1RSQUNLRUQodmFsdWUpIHx8CkBAIC03MzksMzMgKzEwNjQsMzUgQEAKIH0KIAogLyogSW50ZXJuYWwgZnVuY3Rpb24gdG8gZmluZCBzbG90IGZvciBhbiBpdGVtIGZyb20gaXRzIGhhc2gKLSAqIHdoZW4gaXQgaXMga25vd24gdGhhdCB0aGUga2V5IGlzIG5vdCBwcmVzZW50IGluIHRoZSBkaWN0LgotICovCi1zdGF0aWMgUHlEaWN0S2V5RW50cnkgKgorICAgd2hlbiBpdCBpcyBrbm93biB0aGF0IHRoZSBrZXkgaXMgbm90IHByZXNlbnQgaW4gdGhlIGRpY3QuCisKKyAgIFRoZSBkaWN0IG11c3QgYmUgY29tYmluZWQuICovCitzdGF0aWMgdm9pZAogZmluZF9lbXB0eV9zbG90KFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoLAotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIpCisgICAgICAgICAgICAgICAgUHlPYmplY3QgKioqdmFsdWVfYWRkciwgUHlfc3NpemVfdCAqaGFzaHBvcykKIHsKICAgICBzaXplX3QgaTsKLSAgICBzaXplX3QgcGVydHVyYjsKICAgICBzaXplX3QgbWFzayA9IERLX01BU0sobXAtPm1hX2tleXMpOwotICAgIFB5RGljdEtleUVudHJ5ICplcDAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF07Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwOworICAgIFB5X3NzaXplX3QgaXg7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwLCAqZXAwID0gREtfRU5UUklFUyhtcC0+bWFfa2V5cyk7CiAKKyAgICBhc3NlcnQoIV9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpOworICAgIGFzc2VydChoYXNocG9zICE9IE5VTEwpOwogICAgIGFzc2VydChrZXkgIT0gTlVMTCk7CisKICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkpCiAgICAgICAgIG1wLT5tYV9rZXlzLT5ka19sb29rdXAgPSBsb29rZGljdDsKICAgICBpID0gaGFzaCAmIG1hc2s7Ci0gICAgZXAgPSAmZXAwW2ldOwotICAgIGZvciAocGVydHVyYiA9IGhhc2g7IGVwLT5tZV9rZXkgIT0gTlVMTDsgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVCkgeworICAgIGl4ID0gZGtfZ2V0X2luZGV4KG1wLT5tYV9rZXlzLCBpKTsKKyAgICBmb3IgKHNpemVfdCBwZXJ0dXJiID0gaGFzaDsgaXggIT0gREtJWF9FTVBUWTspIHsKKyAgICAgICAgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVDsKICAgICAgICAgaSA9IChpIDw8IDIpICsgaSArIHBlcnR1cmIgKyAxOwotICAgICAgICBlcCA9ICZlcDBbaSAmIG1hc2tdOworICAgICAgICBpeCA9IGRrX2dldF9pbmRleChtcC0+bWFfa2V5cywgaSAmIG1hc2spOwogICAgIH0KKyAgICBlcCA9ICZlcDBbbXAtPm1hX2tleXMtPmRrX25lbnRyaWVzXTsKKyAgICAqaGFzaHBvcyA9IGkgJiBtYXNrOwogICAgIGFzc2VydChlcC0+bWVfdmFsdWUgPT0gTlVMTCk7Ci0gICAgaWYgKG1wLT5tYV92YWx1ZXMpCi0gICAgICAgICp2YWx1ZV9hZGRyID0gJm1wLT5tYV92YWx1ZXNbaSAmIG1hc2tdOwotICAgIGVsc2UKLSAgICAgICAgKnZhbHVlX2FkZHIgPSAmZXAtPm1lX3ZhbHVlOwotICAgIHJldHVybiBlcDsKKyAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7CiB9CiAKIHN0YXRpYyBpbnQKQEAgLTc4NCw1OCArMTExMSw4OCBAQAogewogICAgIFB5T2JqZWN0ICpvbGRfdmFsdWU7CiAgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyOwotICAgIFB5RGljdEtleUVudHJ5ICplcDsKLSAgICBhc3NlcnQoa2V5ICE9IGR1bW15KTsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXAsICplcDA7CisgICAgUHlfc3NpemVfdCBoYXNocG9zLCBpeDsKIAogICAgIGlmIChtcC0+bWFfdmFsdWVzICE9IE5VTEwgJiYgIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkpIHsKICAgICAgICAgaWYgKGluc2VydGlvbl9yZXNpemUobXApIDwgMCkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICBlcCA9IG1wLT5tYV9rZXlzLT5ka19sb29rdXAobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwotICAgIGlmIChlcCA9PSBOVUxMKSB7CisgICAgaXggPSBtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyLCAmaGFzaHBvcyk7CisgICAgaWYgKGl4ID09IERLSVhfRVJST1IpIHsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KKwogICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8IG1wLT5tYV9rZXlzLT5ka19sb29rdXAgPT0gbG9va2RpY3QpOwogICAgIFB5X0lOQ1JFRih2YWx1ZSk7CiAgICAgTUFJTlRBSU5fVFJBQ0tJTkcobXAsIGtleSwgdmFsdWUpOwotICAgIG9sZF92YWx1ZSA9ICp2YWx1ZV9hZGRyOwotICAgIGlmIChvbGRfdmFsdWUgIT0gTlVMTCkgewotICAgICAgICBhc3NlcnQoZXAtPm1lX2tleSAhPSBOVUxMICYmIGVwLT5tZV9rZXkgIT0gZHVtbXkpOwotICAgICAgICAqdmFsdWVfYWRkciA9IHZhbHVlOwotICAgICAgICBQeV9ERUNSRUYob2xkX3ZhbHVlKTsgLyogd2hpY2ggKipDQU4qKiByZS1lbnRlciAoc2VlIGlzc3VlICMyMjY1MykgKi8KKworICAgIC8qIFdoZW4gaW5zZXJ0aW9uIG9yZGVyIGlzIGRpZmZlcmVudCBmcm9tIHNoYXJlZCBrZXksIHdlIGNhbid0IHNoYXJlCisgICAgICogdGhlIGtleSBhbnltb3JlLiAgQ29udmVydCB0aGlzIGluc3RhbmNlIHRvIGNvbWJpbmUgdGFibGUuCisgICAgICovCisgICAgaWYgKF9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkgJiYKKyAgICAgICAgKChpeCA+PSAwICYmICp2YWx1ZV9hZGRyID09IE5VTEwgJiYgbXAtPm1hX3VzZWQgIT0gaXgpIHx8CisgICAgICAgICAoaXggPT0gREtJWF9FTVBUWSAmJiBtcC0+bWFfdXNlZCAhPSBtcC0+bWFfa2V5cy0+ZGtfbmVudHJpZXMpKSkgeworICAgICAgICBpZiAoaW5zZXJ0aW9uX3Jlc2l6ZShtcCkgPCAwKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGZpbmRfZW1wdHlfc2xvdChtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgJmhhc2hwb3MpOworICAgICAgICBpeCA9IERLSVhfRU1QVFk7CiAgICAgfQotICAgIGVsc2UgewotICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9JTkNSRUYoa2V5KTsKLSAgICAgICAgICAgIGlmIChtcC0+bWFfa2V5cy0+ZGtfdXNhYmxlIDw9IDApIHsKLSAgICAgICAgICAgICAgICAvKiBOZWVkIHRvIHJlc2l6ZS4gKi8KLSAgICAgICAgICAgICAgICBpZiAoaW5zZXJ0aW9uX3Jlc2l6ZShtcCkgPCAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVwID0gZmluZF9lbXB0eV9zbG90KG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKKworICAgIGlmIChpeCA9PSBES0lYX0VNUFRZKSB7CisgICAgICAgIC8qIEluc2VydCBpbnRvIG5ldyBzbG90LiAqLworICAgICAgICBpZiAobXAtPm1hX2tleXMtPmRrX3VzYWJsZSA8PSAwKSB7CisgICAgICAgICAgICAvKiBOZWVkIHRvIHJlc2l6ZS4gKi8KKyAgICAgICAgICAgIGlmIChpbnNlcnRpb25fcmVzaXplKG1wKSA8IDApIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1wLT5tYV9rZXlzLT5ka191c2FibGUtLTsKLSAgICAgICAgICAgIGFzc2VydChtcC0+bWFfa2V5cy0+ZGtfdXNhYmxlID49IDApOwotICAgICAgICAgICAgZXAtPm1lX2tleSA9IGtleTsKLSAgICAgICAgICAgIGVwLT5tZV9oYXNoID0gaGFzaDsKKyAgICAgICAgICAgIGZpbmRfZW1wdHlfc2xvdChtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgJmhhc2hwb3MpOworICAgICAgICB9CisgICAgICAgIGVwMCA9IERLX0VOVFJJRVMobXAtPm1hX2tleXMpOworICAgICAgICBlcCA9ICZlcDBbbXAtPm1hX2tleXMtPmRrX25lbnRyaWVzXTsKKyAgICAgICAgZGtfc2V0X2luZGV4KG1wLT5tYV9rZXlzLCBoYXNocG9zLCBtcC0+bWFfa2V5cy0+ZGtfbmVudHJpZXMpOworICAgICAgICBQeV9JTkNSRUYoa2V5KTsKKyAgICAgICAgZXAtPm1lX2tleSA9IGtleTsKKyAgICAgICAgZXAtPm1lX2hhc2ggPSBoYXNoOworICAgICAgICBpZiAobXAtPm1hX3ZhbHVlcykgeworICAgICAgICAgICAgYXNzZXJ0IChtcC0+bWFfdmFsdWVzW21wLT5tYV9rZXlzLT5ka19uZW50cmllc10gPT0gTlVMTCk7CisgICAgICAgICAgICBtcC0+bWFfdmFsdWVzW21wLT5tYV9rZXlzLT5ka19uZW50cmllc10gPSB2YWx1ZTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGlmIChlcC0+bWVfa2V5ID09IGR1bW15KSB7Ci0gICAgICAgICAgICAgICAgUHlfSU5DUkVGKGtleSk7Ci0gICAgICAgICAgICAgICAgZXAtPm1lX2tleSA9IGtleTsKLSAgICAgICAgICAgICAgICBlcC0+bWVfaGFzaCA9IGhhc2g7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGR1bW15KTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KF9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgZXAtPm1lX3ZhbHVlID0gdmFsdWU7CiAgICAgICAgIH0KICAgICAgICAgbXAtPm1hX3VzZWQrKzsKLSAgICAgICAgKnZhbHVlX2FkZHIgPSB2YWx1ZTsKLSAgICAgICAgYXNzZXJ0KGVwLT5tZV9rZXkgIT0gTlVMTCAmJiBlcC0+bWVfa2V5ICE9IGR1bW15KTsKKyAgICAgICAgbXAtPm1hX3ZlcnNpb25fdGFnID0gRElDVF9ORVhUX1ZFUlNJT04oKTsKKyAgICAgICAgbXAtPm1hX2tleXMtPmRrX3VzYWJsZS0tOworICAgICAgICBtcC0+bWFfa2V5cy0+ZGtfbmVudHJpZXMrKzsKKyAgICAgICAgYXNzZXJ0KG1wLT5tYV9rZXlzLT5ka191c2FibGUgPj0gMCk7CisgICAgICAgIGFzc2VydChfUHlEaWN0X0NoZWNrQ29uc2lzdGVuY3kobXApKTsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorCisgICAgYXNzZXJ0KHZhbHVlX2FkZHIgIT0gTlVMTCk7CisKKyAgICBvbGRfdmFsdWUgPSAqdmFsdWVfYWRkcjsKKyAgICBpZiAob2xkX3ZhbHVlICE9IE5VTEwpIHsKKyAgICAgICAgKnZhbHVlX2FkZHIgPSB2YWx1ZTsKKyAgICAgICAgbXAtPm1hX3ZlcnNpb25fdGFnID0gRElDVF9ORVhUX1ZFUlNJT04oKTsKKyAgICAgICAgYXNzZXJ0KF9QeURpY3RfQ2hlY2tDb25zaXN0ZW5jeShtcCkpOworCisgICAgICAgIFB5X0RFQ1JFRihvbGRfdmFsdWUpOyAvKiB3aGljaCAqKkNBTioqIHJlLWVudGVyIChzZWUgaXNzdWUgIzIyNjUzKSAqLworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKiBwZW5kaW5nIHN0YXRlICovCisgICAgYXNzZXJ0KF9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpOworICAgIGFzc2VydChpeCA9PSBtcC0+bWFfdXNlZCk7CisgICAgKnZhbHVlX2FkZHIgPSB2YWx1ZTsKKyAgICBtcC0+bWFfdXNlZCsrOworICAgIG1wLT5tYV92ZXJzaW9uX3RhZyA9IERJQ1RfTkVYVF9WRVJTSU9OKCk7CisgICAgYXNzZXJ0KF9QeURpY3RfQ2hlY2tDb25zaXN0ZW5jeShtcCkpOwogICAgIHJldHVybiAwOwogfQogCkBAIC04NTQsMjQgKzEyMTEsMjQgQEAKICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnZhbHVlKQogewogICAgIHNpemVfdCBpOwotICAgIHNpemVfdCBwZXJ0dXJiOwogICAgIFB5RGljdEtleXNPYmplY3QgKmsgPSBtcC0+bWFfa2V5czsKICAgICBzaXplX3QgbWFzayA9IChzaXplX3QpREtfU0laRShrKS0xOwotICAgIFB5RGljdEtleUVudHJ5ICplcDAgPSAmay0+ZGtfZW50cmllc1swXTsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXAwID0gREtfRU5UUklFUyhtcC0+bWFfa2V5cyk7CiAgICAgUHlEaWN0S2V5RW50cnkgKmVwOwogCiAgICAgYXNzZXJ0KGstPmRrX2xvb2t1cCAhPSBOVUxMKTsKICAgICBhc3NlcnQodmFsdWUgIT0gTlVMTCk7CiAgICAgYXNzZXJ0KGtleSAhPSBOVUxMKTsKLSAgICBhc3NlcnQoa2V5ICE9IGR1bW15KTsKICAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fCBrLT5ka19sb29rdXAgPT0gbG9va2RpY3QpOwogICAgIGkgPSBoYXNoICYgbWFzazsKLSAgICBlcCA9ICZlcDBbaV07Ci0gICAgZm9yIChwZXJ0dXJiID0gaGFzaDsgZXAtPm1lX2tleSAhPSBOVUxMOyBwZXJ0dXJiID4+PSBQRVJUVVJCX1NISUZUKSB7Ci0gICAgICAgIGkgPSAoaSA8PCAyKSArIGkgKyBwZXJ0dXJiICsgMTsKLSAgICAgICAgZXAgPSAmZXAwW2kgJiBtYXNrXTsKKyAgICBmb3IgKHNpemVfdCBwZXJ0dXJiID0gaGFzaDsgZGtfZ2V0X2luZGV4KGssIGkpICE9IERLSVhfRU1QVFk7KSB7CisgICAgICAgIHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQ7CisgICAgICAgIGkgPSBtYXNrICYgKChpIDw8IDIpICsgaSArIHBlcnR1cmIgKyAxKTsKICAgICB9CisgICAgZXAgPSAmZXAwW2stPmRrX25lbnRyaWVzXTsKICAgICBhc3NlcnQoZXAtPm1lX3ZhbHVlID09IE5VTEwpOworICAgIGRrX3NldF9pbmRleChrLCBpLCBrLT5ka19uZW50cmllcyk7CisgICAgay0+ZGtfbmVudHJpZXMrKzsKICAgICBlcC0+bWVfa2V5ID0ga2V5OwogICAgIGVwLT5tZV9oYXNoID0gaGFzaDsKICAgICBlcC0+bWVfdmFsdWUgPSB2YWx1ZTsKQEAgLTg4OCwxNiArMTI0NSwxNiBAQAogYnV0IGNhbiBiZSByZXNwbGl0IGJ5IG1ha2Vfa2V5c19zaGFyZWQoKS4KICovCiBzdGF0aWMgaW50Ci1kaWN0cmVzaXplKFB5RGljdE9iamVjdCAqbXAsIFB5X3NzaXplX3QgbWludXNlZCkKK2RpY3RyZXNpemUoUHlEaWN0T2JqZWN0ICptcCwgUHlfc3NpemVfdCBtaW5zaXplKQogewotICAgIFB5X3NzaXplX3QgbmV3c2l6ZTsKKyAgICBQeV9zc2l6ZV90IGksIG5ld3NpemU7CiAgICAgUHlEaWN0S2V5c09iamVjdCAqb2xka2V5czsKICAgICBQeU9iamVjdCAqKm9sZHZhbHVlczsKLSAgICBQeV9zc2l6ZV90IGksIG9sZHNpemU7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwMDsKIAotLyogRmluZCB0aGUgc21hbGxlc3QgdGFibGUgc2l6ZSA+IG1pbnVzZWQuICovCi0gICAgZm9yIChuZXdzaXplID0gUHlEaWN0X01JTlNJWkVfQ09NQklORUQ7Ci0gICAgICAgICBuZXdzaXplIDw9IG1pbnVzZWQgJiYgbmV3c2l6ZSA+IDA7CisgICAgLyogRmluZCB0aGUgc21hbGxlc3QgdGFibGUgc2l6ZSA+IG1pbnVzZWQuICovCisgICAgZm9yIChuZXdzaXplID0gUHlEaWN0X01JTlNJWkU7CisgICAgICAgICBuZXdzaXplIDwgbWluc2l6ZSAmJiBuZXdzaXplID4gMDsKICAgICAgICAgIG5ld3NpemUgPDw9IDEpCiAgICAgICAgIDsKICAgICBpZiAobmV3c2l6ZSA8PSAwKSB7CkBAIC05MTIsNTYgKzEyNjksNDUgQEAKICAgICAgICAgbXAtPm1hX2tleXMgPSBvbGRrZXlzOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQorICAgIC8vIE5ldyB0YWJsZSBtdXN0IGJlIGxhcmdlIGVub3VnaC4KKyAgICBhc3NlcnQobXAtPm1hX2tleXMtPmRrX3VzYWJsZSA+PSBtcC0+bWFfdXNlZCk7CiAgICAgaWYgKG9sZGtleXMtPmRrX2xvb2t1cCA9PSBsb29rZGljdCkKICAgICAgICAgbXAtPm1hX2tleXMtPmRrX2xvb2t1cCA9IGxvb2tkaWN0OwotICAgIG9sZHNpemUgPSBES19TSVpFKG9sZGtleXMpOwogICAgIG1wLT5tYV92YWx1ZXMgPSBOVUxMOwotICAgIC8qIElmIGVtcHR5IHRoZW4gbm90aGluZyB0byBjb3B5IHNvIGp1c3QgcmV0dXJuICovCi0gICAgaWYgKG9sZHNpemUgPT0gMSkgewotICAgICAgICBhc3NlcnQob2xka2V5cyA9PSBQeV9FTVBUWV9LRVlTKTsKLSAgICAgICAgREtfREVDUkVGKG9sZGtleXMpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9CisgICAgZXAwID0gREtfRU5UUklFUyhvbGRrZXlzKTsKICAgICAvKiBNYWluIGxvb3AgYmVsb3cgYXNzdW1lcyB3ZSBjYW4gdHJhbnNmZXIgcmVmY291bnQgdG8gbmV3IGtleXMKICAgICAgKiBhbmQgdGhhdCB2YWx1ZSBpcyBzdG9yZWQgaW4gbWVfdmFsdWUuCiAgICAgICogSW5jcmVtZW50IHJlZi1jb3VudHMgYW5kIGNvcHkgdmFsdWVzIGhlcmUgdG8gY29tcGVuc2F0ZQogICAgICAqIFRoaXMgKHJlc2l6aW5nIGEgc3BsaXQgdGFibGUpIHNob3VsZCBiZSByZWxhdGl2ZWx5IHJhcmUgKi8KICAgICBpZiAob2xkdmFsdWVzICE9IE5VTEwpIHsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IG9sZHNpemU7IGkrKykgeworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgb2xka2V5cy0+ZGtfbmVudHJpZXM7IGkrKykgewogICAgICAgICAgICAgaWYgKG9sZHZhbHVlc1tpXSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlfSU5DUkVGKG9sZGtleXMtPmRrX2VudHJpZXNbaV0ubWVfa2V5KTsKLSAgICAgICAgICAgICAgICBvbGRrZXlzLT5ka19lbnRyaWVzW2ldLm1lX3ZhbHVlID0gb2xkdmFsdWVzW2ldOworICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihlcDBbaV0ubWVfa2V5KTsKKyAgICAgICAgICAgICAgICBlcDBbaV0ubWVfdmFsdWUgPSBvbGR2YWx1ZXNbaV07CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgLyogTWFpbiBsb29wICovCi0gICAgZm9yIChpID0gMDsgaSA8IG9sZHNpemU7IGkrKykgewotICAgICAgICBQeURpY3RLZXlFbnRyeSAqZXAgPSAmb2xka2V5cy0+ZGtfZW50cmllc1tpXTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgb2xka2V5cy0+ZGtfbmVudHJpZXM7IGkrKykgeworICAgICAgICBQeURpY3RLZXlFbnRyeSAqZXAgPSAmZXAwW2ldOwogICAgICAgICBpZiAoZXAtPm1lX3ZhbHVlICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGFzc2VydChlcC0+bWVfa2V5ICE9IGR1bW15KTsKICAgICAgICAgICAgIGluc2VydGRpY3RfY2xlYW4obXAsIGVwLT5tZV9rZXksIGVwLT5tZV9oYXNoLCBlcC0+bWVfdmFsdWUpOwogICAgICAgICB9CiAgICAgfQogICAgIG1wLT5tYV9rZXlzLT5ka191c2FibGUgLT0gbXAtPm1hX3VzZWQ7CiAgICAgaWYgKG9sZHZhbHVlcyAhPSBOVUxMKSB7CiAgICAgICAgIC8qIE5VTEwgb3V0IG1lX3ZhbHVlIHNsb3QgaW4gb2xka2V5cywgaW4gY2FzZSBpdCB3YXMgc2hhcmVkICovCi0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBvbGRzaXplOyBpKyspCi0gICAgICAgICAgICBvbGRrZXlzLT5ka19lbnRyaWVzW2ldLm1lX3ZhbHVlID0gTlVMTDsKLSAgICAgICAgYXNzZXJ0KG9sZHZhbHVlcyAhPSBlbXB0eV92YWx1ZXMpOwotICAgICAgICBmcmVlX3ZhbHVlcyhvbGR2YWx1ZXMpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgb2xka2V5cy0+ZGtfbmVudHJpZXM7IGkrKykKKyAgICAgICAgICAgIGVwMFtpXS5tZV92YWx1ZSA9IE5VTEw7CiAgICAgICAgIERLX0RFQ1JFRihvbGRrZXlzKTsKKyAgICAgICAgaWYgKG9sZHZhbHVlcyAhPSBlbXB0eV92YWx1ZXMpIHsKKyAgICAgICAgICAgIGZyZWVfdmFsdWVzKG9sZHZhbHVlcyk7CisgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIGFzc2VydChvbGRrZXlzLT5ka19sb29rdXAgIT0gbG9va2RpY3Rfc3BsaXQpOwotICAgICAgICBpZiAob2xka2V5cy0+ZGtfbG9va3VwICE9IGxvb2tkaWN0X3VuaWNvZGVfbm9kdW1teSkgewotICAgICAgICAgICAgUHlEaWN0S2V5RW50cnkgKmVwMCA9ICZvbGRrZXlzLT5ka19lbnRyaWVzWzBdOwotICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG9sZHNpemU7IGkrKykgewotICAgICAgICAgICAgICAgIGlmIChlcDBbaV0ubWVfa2V5ID09IGR1bW15KQotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZHVtbXkpOwotICAgICAgICAgICAgfQotICAgICAgICB9CiAgICAgICAgIGFzc2VydChvbGRrZXlzLT5ka19yZWZjbnQgPT0gMSk7Ci0gICAgICAgIERLX0RFQlVHX0RFQ1JFRiBQeU1lbV9GUkVFKG9sZGtleXMpOworICAgICAgICBES19ERUJVR19ERUNSRUYgUHlPYmplY3RfRlJFRShvbGRrZXlzKTsKICAgICB9CiAgICAgcmV0dXJuIDA7CiB9CkBAIC05ODUsMTYgKzEzMzEsMTQgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKG1wLT5tYV9rZXlzLT5ka19sb29rdXAgPT0gbG9va2RpY3RfdW5pY29kZSkgewotICAgICAgICAgICAgLyogUmVtb3ZlIGR1bW15IGtleXMKLSAgICAgICAgICAgICAqIC0xIGlzIHJlcXVpcmVkIHNpbmNlIGRpY3RyZXNpemUoKSB1c2VzIGtleSBzaXplID4gbWludXNlZAotICAgICAgICAgICAgICovCi0gICAgICAgICAgICBpZiAoZGljdHJlc2l6ZShtcCwgREtfU0laRShtcC0+bWFfa2V5cykgLSAxKSkKKyAgICAgICAgICAgIC8qIFJlbW92ZSBkdW1teSBrZXlzICovCisgICAgICAgICAgICBpZiAoZGljdHJlc2l6ZShtcCwgREtfU0laRShtcC0+bWFfa2V5cykpKQogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIGFzc2VydChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwID09IGxvb2tkaWN0X3VuaWNvZGVfbm9kdW1teSk7CiAgICAgICAgIC8qIENvcHkgdmFsdWVzIGludG8gYSBuZXcgYXJyYXkgKi8KLSAgICAgICAgZXAwID0gJm1wLT5tYV9rZXlzLT5ka19lbnRyaWVzWzBdOwotICAgICAgICBzaXplID0gREtfU0laRShtcC0+bWFfa2V5cyk7CisgICAgICAgIGVwMCA9IERLX0VOVFJJRVMobXAtPm1hX2tleXMpOworICAgICAgICBzaXplID0gVVNBQkxFX0ZSQUNUSU9OKERLX1NJWkUobXAtPm1hX2tleXMpKTsKICAgICAgICAgdmFsdWVzID0gbmV3X3ZhbHVlcyhzaXplKTsKICAgICAgICAgaWYgKHZhbHVlcyA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTWVtb3J5RXJyb3IsCkBAIC0xMDE1LDEyICsxMzU5LDI2IEBACiBQeU9iamVjdCAqCiBfUHlEaWN0X05ld1ByZXNpemVkKFB5X3NzaXplX3QgbWludXNlZCkKIHsKKyAgICBjb25zdCBQeV9zc2l6ZV90IG1heF9wcmVzaXplID0gMTI4ICogMTAyNDsKICAgICBQeV9zc2l6ZV90IG5ld3NpemU7CiAgICAgUHlEaWN0S2V5c09iamVjdCAqbmV3X2tleXM7Ci0gICAgZm9yIChuZXdzaXplID0gUHlEaWN0X01JTlNJWkVfQ09NQklORUQ7Ci0gICAgICAgICBuZXdzaXplIDw9IG1pbnVzZWQgJiYgbmV3c2l6ZSA+IDA7Ci0gICAgICAgICBuZXdzaXplIDw8PSAxKQotICAgICAgICA7CisKKyAgICAvKiBUaGVyZSBhcmUgbm8gc3RyaWN0IGd1YXJhbnRlZSB0aGF0IHJldHVybmVkIGRpY3QgY2FuIGNvbnRhaW4gbWludXNlZAorICAgICAqIGl0ZW1zIHdpdGhvdXQgcmVzaXplLiAgU28gd2UgY3JlYXRlIG1lZGl1bSBzaXplIGRpY3QgaW5zdGVhZCBvZiB2ZXJ5CisgICAgICogbGFyZ2UgZGljdCBvciBNZW1vcnlFcnJvci4KKyAgICAgKi8KKyAgICBpZiAobWludXNlZCA+IFVTQUJMRV9GUkFDVElPTihtYXhfcHJlc2l6ZSkpIHsKKyAgICAgICAgbmV3c2l6ZSA9IG1heF9wcmVzaXplOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlfc3NpemVfdCBtaW5zaXplID0gRVNUSU1BVEVfU0laRShtaW51c2VkKTsKKyAgICAgICAgbmV3c2l6ZSA9IFB5RGljdF9NSU5TSVpFOworICAgICAgICB3aGlsZSAobmV3c2l6ZSA8IG1pbnNpemUpIHsKKyAgICAgICAgICAgIG5ld3NpemUgPDw9IDE7CisgICAgICAgIH0KKyAgICB9CisgICAgYXNzZXJ0KElTX1BPV0VSX09GXzIobmV3c2l6ZSkpOworCiAgICAgbmV3X2tleXMgPSBuZXdfa2V5c19vYmplY3QobmV3c2l6ZSk7CiAgICAgaWYgKG5ld19rZXlzID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTA0MSw4ICsxMzk5LDggQEAKIFB5RGljdF9HZXRJdGVtKFB5T2JqZWN0ICpvcCwgUHlPYmplY3QgKmtleSkKIHsKICAgICBQeV9oYXNoX3QgaGFzaDsKKyAgICBQeV9zc2l6ZV90IGl4OwogICAgIFB5RGljdE9iamVjdCAqbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwOwogICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKICAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CiAKQEAgLTEwNjgsMTUgKzE0MjYsMTUgQEAKICAgICAgICAgLyogcHJlc2VydmUgdGhlIGV4aXN0aW5nIGV4Y2VwdGlvbiAqLwogICAgICAgICBQeU9iamVjdCAqZXJyX3R5cGUsICplcnJfdmFsdWUsICplcnJfdGI7CiAgICAgICAgIFB5RXJyX0ZldGNoKCZlcnJfdHlwZSwgJmVycl92YWx1ZSwgJmVycl90Yik7Ci0gICAgICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKKyAgICAgICAgaXggPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsIE5VTEwpOwogICAgICAgICAvKiBpZ25vcmUgZXJyb3JzICovCiAgICAgICAgIFB5RXJyX1Jlc3RvcmUoZXJyX3R5cGUsIGVycl92YWx1ZSwgZXJyX3RiKTsKLSAgICAgICAgaWYgKGVwID09IE5VTEwpCisgICAgICAgIGlmIChpeCA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKLSAgICAgICAgaWYgKGVwID09IE5VTEwpIHsKKyAgICAgICAgaXggPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsIE5VTEwpOworICAgICAgICBpZiAoaXggPCAwKSB7CiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KQEAgLTEwODQsMzkgKzE0NDIsMjUgQEAKICAgICByZXR1cm4gKnZhbHVlX2FkZHI7CiB9CiAKKy8qIFNhbWUgYXMgUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3IoKSBidXQgd2l0aCBoYXNoIHN1cHBsaWVkIGJ5IGNhbGxlci4KKyAgIFRoaXMgcmV0dXJucyBOVUxMICp3aXRoKiBhbiBleGNlcHRpb24gc2V0IGlmIGFuIGV4Y2VwdGlvbiBvY2N1cnJlZC4KKyAgIEl0IHJldHVybnMgTlVMTCAqd2l0aG91dCogYW4gZXhjZXB0aW9uIHNldCBpZiB0aGUga2V5IHdhc24ndCBwcmVzZW50LgorKi8KIFB5T2JqZWN0ICoKIF9QeURpY3RfR2V0SXRlbV9Lbm93bkhhc2goUHlPYmplY3QgKm9wLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCkKIHsKKyAgICBQeV9zc2l6ZV90IGl4OwogICAgIFB5RGljdE9iamVjdCAqbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwOwotICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKICAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CiAKLSAgICBpZiAoIVB5RGljdF9DaGVjayhvcCkpCisgICAgaWYgKCFQeURpY3RfQ2hlY2sob3ApKSB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIC8qIFdlIGNhbiBhcnJpdmUgaGVyZSB3aXRoIGEgTlVMTCB0c3RhdGUgZHVyaW5nIGluaXRpYWxpemF0aW9uOiB0cnkKLSAgICAgICBydW5uaW5nICJweXRob24gLVdpIiBmb3IgYW4gZXhhbXBsZSByZWxhdGVkIHRvIHN0cmluZyBpbnRlcm5pbmcuCi0gICAgICAgTGV0J3MganVzdCBob3BlIHRoYXQgbm8gZXhjZXB0aW9uIG9jY3VycyB0aGVuLi4uICBUaGlzIG11c3QgYmUKLSAgICAgICBfUHlUaHJlYWRTdGF0ZV9DdXJyZW50IGFuZCBub3QgUHlUaHJlYWRTdGF0ZV9HRVQoKSBiZWNhdXNlIGluIGRlYnVnCi0gICAgICAgbW9kZSwgdGhlIGxhdHRlciBjb21wbGFpbnMgaWYgdHN0YXRlIGlzIE5VTEwuICovCi0gICAgdHN0YXRlID0gX1B5VGhyZWFkU3RhdGVfVW5jaGVja2VkR2V0KCk7Ci0gICAgaWYgKHRzdGF0ZSAhPSBOVUxMICYmIHRzdGF0ZS0+Y3VyZXhjX3R5cGUgIT0gTlVMTCkgewotICAgICAgICAvKiBwcmVzZXJ2ZSB0aGUgZXhpc3RpbmcgZXhjZXB0aW9uICovCi0gICAgICAgIFB5T2JqZWN0ICplcnJfdHlwZSwgKmVycl92YWx1ZSwgKmVycl90YjsKLSAgICAgICAgUHlFcnJfRmV0Y2goJmVycl90eXBlLCAmZXJyX3ZhbHVlLCAmZXJyX3RiKTsKLSAgICAgICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwotICAgICAgICAvKiBpZ25vcmUgZXJyb3JzICovCi0gICAgICAgIFB5RXJyX1Jlc3RvcmUoZXJyX3R5cGUsIGVycl92YWx1ZSwgZXJyX3RiKTsKLSAgICAgICAgaWYgKGVwID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKLSAgICAgICAgaWYgKGVwID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQorCisgICAgaXggPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsIE5VTEwpOworICAgIGlmIChpeCA8IDApIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIHJldHVybiAqdmFsdWVfYWRkcjsKIH0KQEAgLTExMjgsOSArMTQ3Miw5IEBACiBQeU9iamVjdCAqCiBQeURpY3RfR2V0SXRlbVdpdGhFcnJvcihQeU9iamVjdCAqb3AsIFB5T2JqZWN0ICprZXkpCiB7CisgICAgUHlfc3NpemVfdCBpeDsKICAgICBQeV9oYXNoX3QgaGFzaDsKICAgICBQeURpY3RPYmplY3QqbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwOwogICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKIAogICAgIGlmICghUHlEaWN0X0NoZWNrKG9wKSkgewpAQCAtMTE0Niw4ICsxNDkwLDggQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKLSAgICBpZiAoZXAgPT0gTlVMTCkKKyAgICBpeCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgTlVMTCk7CisgICAgaWYgKGl4IDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuICp2YWx1ZV9hZGRyOwogfQpAQCAtMTE2MiwzOSArMTUwNiw0MCBAQAogICAgIHJldHVybiBQeURpY3RfR2V0SXRlbVdpdGhFcnJvcihkcCwga3YpOwogfQogCi0vKiBGYXN0IHZlcnNpb24gb2YgZ2xvYmFsIHZhbHVlIGxvb2t1cC4KKy8qIEZhc3QgdmVyc2lvbiBvZiBnbG9iYWwgdmFsdWUgbG9va3VwIChMT0FEX0dMT0JBTCkuCiAgKiBMb29rdXAgaW4gZ2xvYmFscywgdGhlbiBidWlsdGlucy4KKyAqCisgKiBSYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiBOVUxMIGlmIGFuIGVycm9yIG9jY3VycmVkIChleDogY29tcHV0aW5nIHRoZQorICoga2V5IGhhc2ggZmFpbGVkLCBrZXkgY29tcGFyaXNvbiBmYWlsZWQsIC4uLikuIFJldHVybiBOVUxMIGlmIHRoZSBrZXkgZG9lc24ndAorICogZXhpc3QuIFJldHVybiB0aGUgdmFsdWUgaWYgdGhlIGtleSBleGlzdHMuCiAgKi8KIFB5T2JqZWN0ICoKIF9QeURpY3RfTG9hZEdsb2JhbChQeURpY3RPYmplY3QgKmdsb2JhbHMsIFB5RGljdE9iamVjdCAqYnVpbHRpbnMsIFB5T2JqZWN0ICprZXkpCiB7Ci0gICAgUHlPYmplY3QgKng7Ci0gICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkpIHsKLSAgICAgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyOwotICAgICAgICBQeV9oYXNoX3QgaGFzaCA9ICgoUHlBU0NJSU9iamVjdCAqKWtleSktPmhhc2g7Ci0gICAgICAgIGlmIChoYXNoICE9IC0xKSB7Ci0gICAgICAgICAgICBQeURpY3RLZXlFbnRyeSAqZTsKLSAgICAgICAgICAgIGUgPSBnbG9iYWxzLT5tYV9rZXlzLT5ka19sb29rdXAoZ2xvYmFscywga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7Ci0gICAgICAgICAgICBpZiAoZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB4ID0gKnZhbHVlX2FkZHI7Ci0gICAgICAgICAgICBpZiAoeCAhPSBOVUxMKQotICAgICAgICAgICAgICAgIHJldHVybiB4OwotICAgICAgICAgICAgZSA9IGJ1aWx0aW5zLT5tYV9rZXlzLT5ka19sb29rdXAoYnVpbHRpbnMsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwotICAgICAgICAgICAgaWYgKGUgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgeCA9ICp2YWx1ZV9hZGRyOwotICAgICAgICAgICAgcmV0dXJuIHg7Ci0gICAgICAgIH0KKyAgICBQeV9zc2l6ZV90IGl4OworICAgIFB5X2hhc2hfdCBoYXNoOworICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKKworICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fAorICAgICAgICAoaGFzaCA9ICgoUHlBU0NJSU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkKKyAgICB7CisgICAgICAgIGhhc2ggPSBQeU9iamVjdF9IYXNoKGtleSk7CisgICAgICAgIGlmIChoYXNoID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHggPSBQeURpY3RfR2V0SXRlbVdpdGhFcnJvcigoUHlPYmplY3QgKilnbG9iYWxzLCBrZXkpOwotICAgIGlmICh4ICE9IE5VTEwpCi0gICAgICAgIHJldHVybiB4OwotICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorCisgICAgLyogbmFtZXNwYWNlIDE6IGdsb2JhbHMgKi8KKyAgICBpeCA9IGdsb2JhbHMtPm1hX2tleXMtPmRrX2xvb2t1cChnbG9iYWxzLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyLCBOVUxMKTsKKyAgICBpZiAoaXggPT0gREtJWF9FUlJPUikKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIFB5RGljdF9HZXRJdGVtV2l0aEVycm9yKChQeU9iamVjdCAqKWJ1aWx0aW5zLCBrZXkpOworICAgIGlmIChpeCAhPSBES0lYX0VNUFRZICYmICp2YWx1ZV9hZGRyICE9IE5VTEwpCisgICAgICAgIHJldHVybiAqdmFsdWVfYWRkcjsKKworICAgIC8qIG5hbWVzcGFjZSAyOiBidWlsdGlucyAqLworICAgIGl4ID0gYnVpbHRpbnMtPm1hX2tleXMtPmRrX2xvb2t1cChidWlsdGlucywga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgTlVMTCk7CisgICAgaWYgKGl4IDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuICp2YWx1ZV9hZGRyOwogfQogCiAvKiBDQVVUSU9OOiBQeURpY3RfU2V0SXRlbSgpIG11c3QgZ3VhcmFudGVlIHRoYXQgaXQgd29uJ3QgcmVzaXplIHRoZQpAQCAtMTI0OSwxNiArMTU5NCw4IEBACiBpbnQKIFB5RGljdF9EZWxJdGVtKFB5T2JqZWN0ICpvcCwgUHlPYmplY3QgKmtleSkKIHsKLSAgICBQeURpY3RPYmplY3QgKm1wOwogICAgIFB5X2hhc2hfdCBoYXNoOwotICAgIFB5RGljdEtleUVudHJ5ICplcDsKLSAgICBQeU9iamVjdCAqb2xkX2tleSwgKm9sZF92YWx1ZTsKLSAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CiAKLSAgICBpZiAoIVB5RGljdF9DaGVjayhvcCkpIHsKLSAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9CiAgICAgYXNzZXJ0KGtleSk7CiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8CiAgICAgICAgIChoYXNoID0gKChQeUFTQ0lJT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKSB7CkBAIC0xMjY2LDMxICsxNjAzLDE0IEBACiAgICAgICAgIGlmIChoYXNoID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBtcCA9IChQeURpY3RPYmplY3QgKilvcDsKLSAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7Ci0gICAgaWYgKGVwID09IE5VTEwpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICBpZiAoKnZhbHVlX2FkZHIgPT0gTlVMTCkgewotICAgICAgICBfUHlFcnJfU2V0S2V5RXJyb3Ioa2V5KTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBvbGRfdmFsdWUgPSAqdmFsdWVfYWRkcjsKLSAgICAqdmFsdWVfYWRkciA9IE5VTEw7Ci0gICAgbXAtPm1hX3VzZWQtLTsKLSAgICBpZiAoIV9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpIHsKLSAgICAgICAgRU5TVVJFX0FMTE9XU19ERUxFVElPTlMobXApOwotICAgICAgICBvbGRfa2V5ID0gZXAtPm1lX2tleTsKLSAgICAgICAgUHlfSU5DUkVGKGR1bW15KTsKLSAgICAgICAgZXAtPm1lX2tleSA9IGR1bW15OwotICAgICAgICBQeV9ERUNSRUYob2xkX2tleSk7Ci0gICAgfQotICAgIFB5X0RFQ1JFRihvbGRfdmFsdWUpOwotICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIF9QeURpY3RfRGVsSXRlbV9Lbm93bkhhc2gob3AsIGtleSwgaGFzaCk7CiB9CiAKIGludAogX1B5RGljdF9EZWxJdGVtX0tub3duSGFzaChQeU9iamVjdCAqb3AsIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoKQogeworICAgIFB5X3NzaXplX3QgaGFzaHBvcywgaXg7CiAgICAgUHlEaWN0T2JqZWN0ICptcDsKICAgICBQeURpY3RLZXlFbnRyeSAqZXA7CiAgICAgUHlPYmplY3QgKm9sZF9rZXksICpvbGRfdmFsdWU7CkBAIC0xMzAzLDI0ICsxNjIzLDM4IEBACiAgICAgYXNzZXJ0KGtleSk7CiAgICAgYXNzZXJ0KGhhc2ggIT0gLTEpOwogICAgIG1wID0gKFB5RGljdE9iamVjdCAqKW9wOwotICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKLSAgICBpZiAoZXAgPT0gTlVMTCkKKyAgICBpeCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgJmhhc2hwb3MpOworICAgIGlmIChpeCA9PSBES0lYX0VSUk9SKQogICAgICAgICByZXR1cm4gLTE7Ci0gICAgaWYgKCp2YWx1ZV9hZGRyID09IE5VTEwpIHsKKyAgICBpZiAoaXggPT0gREtJWF9FTVBUWSB8fCAqdmFsdWVfYWRkciA9PSBOVUxMKSB7CiAgICAgICAgIF9QeUVycl9TZXRLZXlFcnJvcihrZXkpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQorICAgIGFzc2VydChka19nZXRfaW5kZXgobXAtPm1hX2tleXMsIGhhc2hwb3MpID09IGl4KTsKKworICAgIC8vIFNwbGl0IHRhYmxlIGRvZXNuJ3QgYWxsb3cgZGVsZXRpb24uICBDb21iaW5lIGl0LgorICAgIGlmIChfUHlEaWN0X0hhc1NwbGl0VGFibGUobXApKSB7CisgICAgICAgIGlmIChkaWN0cmVzaXplKG1wLCBES19TSVpFKG1wLT5tYV9rZXlzKSkpIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBpeCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgJmhhc2hwb3MpOworICAgICAgICBhc3NlcnQoaXggPj0gMCk7CisgICAgfQorCiAgICAgb2xkX3ZhbHVlID0gKnZhbHVlX2FkZHI7CisgICAgYXNzZXJ0KG9sZF92YWx1ZSAhPSBOVUxMKTsKICAgICAqdmFsdWVfYWRkciA9IE5VTEw7CiAgICAgbXAtPm1hX3VzZWQtLTsKLSAgICBpZiAoIV9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpIHsKLSAgICAgICAgRU5TVVJFX0FMTE9XU19ERUxFVElPTlMobXApOwotICAgICAgICBvbGRfa2V5ID0gZXAtPm1lX2tleTsKLSAgICAgICAgUHlfSU5DUkVGKGR1bW15KTsKLSAgICAgICAgZXAtPm1lX2tleSA9IGR1bW15OwotICAgICAgICBQeV9ERUNSRUYob2xkX2tleSk7Ci0gICAgfQorICAgIG1wLT5tYV92ZXJzaW9uX3RhZyA9IERJQ1RfTkVYVF9WRVJTSU9OKCk7CisgICAgZXAgPSAmREtfRU5UUklFUyhtcC0+bWFfa2V5cylbaXhdOworICAgIGRrX3NldF9pbmRleChtcC0+bWFfa2V5cywgaGFzaHBvcywgREtJWF9EVU1NWSk7CisgICAgRU5TVVJFX0FMTE9XU19ERUxFVElPTlMobXApOworICAgIG9sZF9rZXkgPSBlcC0+bWVfa2V5OworICAgIGVwLT5tZV9rZXkgPSBOVUxMOworICAgIFB5X0RFQ1JFRihvbGRfa2V5KTsKICAgICBQeV9ERUNSRUYob2xkX3ZhbHVlKTsKKworICAgIGFzc2VydChfUHlEaWN0X0NoZWNrQ29uc2lzdGVuY3kobXApKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMTM0NCw5ICsxNjc4LDEwIEBACiAgICAgbXAtPm1hX2tleXMgPSBQeV9FTVBUWV9LRVlTOwogICAgIG1wLT5tYV92YWx1ZXMgPSBlbXB0eV92YWx1ZXM7CiAgICAgbXAtPm1hX3VzZWQgPSAwOworICAgIG1wLT5tYV92ZXJzaW9uX3RhZyA9IERJQ1RfTkVYVF9WRVJTSU9OKCk7CiAgICAgLyogLi4udGhlbiBjbGVhciB0aGUga2V5cyBhbmQgdmFsdWVzICovCiAgICAgaWYgKG9sZHZhbHVlcyAhPSBOVUxMKSB7Ci0gICAgICAgIG4gPSBES19TSVpFKG9sZGtleXMpOworICAgICAgICBuID0gb2xka2V5cy0+ZGtfbmVudHJpZXM7CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspCiAgICAgICAgICAgICBQeV9DTEVBUihvbGR2YWx1ZXNbaV0pOwogICAgICAgICBmcmVlX3ZhbHVlcyhvbGR2YWx1ZXMpOwpAQCAtMTM1Niw0MiArMTY5MSw1OSBAQAogICAgICAgIGFzc2VydChvbGRrZXlzLT5ka19yZWZjbnQgPT0gMSk7CiAgICAgICAgREtfREVDUkVGKG9sZGtleXMpOwogICAgIH0KKyAgICBhc3NlcnQoX1B5RGljdF9DaGVja0NvbnNpc3RlbmN5KG1wKSk7CiB9CiAKLS8qIFJldHVybnMgLTEgaWYgbm8gbW9yZSBpdGVtcyAob3Igb3AgaXMgbm90IGEgZGljdCksCi0gKiBpbmRleCBvZiBpdGVtIG90aGVyd2lzZS4gU3RvcmVzIHZhbHVlIGluIHB2YWx1ZQorLyogSW50ZXJuYWwgdmVyc2lvbiBvZiBQeURpY3RfTmV4dCB0aGF0IHJldHVybnMgYSBoYXNoIHZhbHVlIGluIGFkZGl0aW9uCisgKiB0byB0aGUga2V5IGFuZCB2YWx1ZS4KKyAqIFJldHVybiAxIG9uIHN1Y2Nlc3MsIHJldHVybiAwIHdoZW4gdGhlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgZGljdGlvbmFyeQorICogKG9yIGlmIG9wIGlzIG5vdCBhIGRpY3Rpb25hcnkpCiAgKi8KLVB5X0xPQ0FMX0lOTElORShQeV9zc2l6ZV90KQotZGljdF9uZXh0KFB5T2JqZWN0ICpvcCwgUHlfc3NpemVfdCBpLCBQeU9iamVjdCAqKnB2YWx1ZSkKK2ludAorX1B5RGljdF9OZXh0KFB5T2JqZWN0ICpvcCwgUHlfc3NpemVfdCAqcHBvcywgUHlPYmplY3QgKipwa2V5LAorICAgICAgICAgICAgIFB5T2JqZWN0ICoqcHZhbHVlLCBQeV9oYXNoX3QgKnBoYXNoKQogewotICAgIFB5X3NzaXplX3QgbWFzaywgb2Zmc2V0OworICAgIFB5X3NzaXplX3QgaSwgbjsKICAgICBQeURpY3RPYmplY3QgKm1wOwotICAgIFB5T2JqZWN0ICoqdmFsdWVfcHRyOwotCisgICAgUHlEaWN0S2V5RW50cnkgKmVudHJ5X3B0cjsKKyAgICBQeU9iamVjdCAqdmFsdWU7CiAKICAgICBpZiAoIVB5RGljdF9DaGVjayhvcCkpCi0gICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7Ci0gICAgaWYgKGkgPCAwKQotICAgICAgICByZXR1cm4gLTE7CisgICAgaSA9ICpwcG9zOworICAgIG4gPSBtcC0+bWFfa2V5cy0+ZGtfbmVudHJpZXM7CisgICAgaWYgKChzaXplX3QpaSA+PSAoc2l6ZV90KW4pCisgICAgICAgIHJldHVybiAwOwogICAgIGlmIChtcC0+bWFfdmFsdWVzKSB7Ci0gICAgICAgIHZhbHVlX3B0ciA9ICZtcC0+bWFfdmFsdWVzW2ldOwotICAgICAgICBvZmZzZXQgPSBzaXplb2YoUHlPYmplY3QgKik7CisgICAgICAgIFB5T2JqZWN0ICoqdmFsdWVfcHRyID0gJm1wLT5tYV92YWx1ZXNbaV07CisgICAgICAgIHdoaWxlIChpIDwgbiAmJiAqdmFsdWVfcHRyID09IE5VTEwpIHsKKyAgICAgICAgICAgIHZhbHVlX3B0cisrOworICAgICAgICAgICAgaSsrOworICAgICAgICB9CisgICAgICAgIGlmIChpID49IG4pCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgZW50cnlfcHRyID0gJkRLX0VOVFJJRVMobXAtPm1hX2tleXMpW2ldOworICAgICAgICB2YWx1ZSA9ICp2YWx1ZV9wdHI7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICB2YWx1ZV9wdHIgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfdmFsdWU7Ci0gICAgICAgIG9mZnNldCA9IHNpemVvZihQeURpY3RLZXlFbnRyeSk7CisgICAgICAgIGVudHJ5X3B0ciA9ICZES19FTlRSSUVTKG1wLT5tYV9rZXlzKVtpXTsKKyAgICAgICAgd2hpbGUgKGkgPCBuICYmIGVudHJ5X3B0ci0+bWVfdmFsdWUgPT0gTlVMTCkgeworICAgICAgICAgICAgZW50cnlfcHRyKys7CisgICAgICAgICAgICBpKys7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGkgPj0gbikKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB2YWx1ZSA9IGVudHJ5X3B0ci0+bWVfdmFsdWU7CiAgICAgfQotICAgIG1hc2sgPSBES19NQVNLKG1wLT5tYV9rZXlzKTsKLSAgICB3aGlsZSAoaSA8PSBtYXNrICYmICp2YWx1ZV9wdHIgPT0gTlVMTCkgewotICAgICAgICB2YWx1ZV9wdHIgPSAoUHlPYmplY3QgKiopKCgoY2hhciAqKXZhbHVlX3B0cikgKyBvZmZzZXQpOwotICAgICAgICBpKys7Ci0gICAgfQotICAgIGlmIChpID4gbWFzaykKLSAgICAgICAgcmV0dXJuIC0xOworICAgICpwcG9zID0gaSsxOworICAgIGlmIChwa2V5KQorICAgICAgICAqcGtleSA9IGVudHJ5X3B0ci0+bWVfa2V5OworICAgIGlmIChwaGFzaCkKKyAgICAgICAgKnBoYXNoID0gZW50cnlfcHRyLT5tZV9oYXNoOwogICAgIGlmIChwdmFsdWUpCi0gICAgICAgICpwdmFsdWUgPSAqdmFsdWVfcHRyOwotICAgIHJldHVybiBpOworICAgICAgICAqcHZhbHVlID0gdmFsdWU7CisgICAgcmV0dXJuIDE7CiB9CiAKIC8qCkBAIC0xNDAxLDkgKzE3NTMsMTIgQEAKICAqICAgICBQeU9iamVjdCAqa2V5LCAqdmFsdWU7CiAgKiAgICAgaSA9IDA7ICAgIyBpbXBvcnRhbnQhICBpIHNob3VsZCBub3Qgb3RoZXJ3aXNlIGJlIGNoYW5nZWQgYnkgeW91CiAgKiAgICAgd2hpbGUgKFB5RGljdF9OZXh0KHlvdXJkaWN0LCAmaSwgJmtleSwgJnZhbHVlKSkgewotICogICAgICAgICAgICAgIFJlZmVyIHRvIGJvcnJvd2VkIHJlZmVyZW5jZXMgaW4ga2V5IGFuZCB2YWx1ZS4KKyAqICAgICAgICAgUmVmZXIgdG8gYm9ycm93ZWQgcmVmZXJlbmNlcyBpbiBrZXkgYW5kIHZhbHVlLgogICogICAgIH0KICAqCisgKiBSZXR1cm4gMSBvbiBzdWNjZXNzLCByZXR1cm4gMCB3aGVuIHRoZSByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIGRpY3Rpb25hcnkKKyAqIChvciBpZiBvcCBpcyBub3QgYSBkaWN0aW9uYXJ5KQorICoKICAqIENBVVRJT046ICBJbiBnZW5lcmFsLCBpdCBpc24ndCBzYWZlIHRvIHVzZSBQeURpY3RfTmV4dCBpbiBhIGxvb3AgdGhhdAogICogbXV0YXRlcyB0aGUgZGljdC4gIE9uZSBleGNlcHRpb246ICBpdCBpcyBzYWZlIGlmIHRoZSBsb29wIG1lcmVseSBjaGFuZ2VzCiAgKiB0aGUgdmFsdWVzIGFzc29jaWF0ZWQgd2l0aCB0aGUga2V5cyAoYnV0IGRvZXNuJ3QgaW5zZXJ0IG5ldyBrZXlzIG9yCkBAIC0xNDEyLDQ0ICsxNzY3LDIyIEBACiBpbnQKIFB5RGljdF9OZXh0KFB5T2JqZWN0ICpvcCwgUHlfc3NpemVfdCAqcHBvcywgUHlPYmplY3QgKipwa2V5LCBQeU9iamVjdCAqKnB2YWx1ZSkKIHsKLSAgICBQeURpY3RPYmplY3QgKm1wOwotICAgIFB5X3NzaXplX3QgaSA9IGRpY3RfbmV4dChvcCwgKnBwb3MsIHB2YWx1ZSk7Ci0gICAgaWYgKGkgPCAwKQotICAgICAgICByZXR1cm4gMDsKLSAgICBtcCA9IChQeURpY3RPYmplY3QgKilvcDsKLSAgICAqcHBvcyA9IGkrMTsKLSAgICBpZiAocGtleSkKLSAgICAgICAgKnBrZXkgPSBtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1tpXS5tZV9rZXk7Ci0gICAgcmV0dXJuIDE7Ci19Ci0KLS8qIEludGVybmFsIHZlcnNpb24gb2YgUHlEaWN0X05leHQgdGhhdCByZXR1cm5zIGEgaGFzaCB2YWx1ZSBpbiBhZGRpdGlvbgotICogdG8gdGhlIGtleSBhbmQgdmFsdWUuCi0gKi8KLWludAotX1B5RGljdF9OZXh0KFB5T2JqZWN0ICpvcCwgUHlfc3NpemVfdCAqcHBvcywgUHlPYmplY3QgKipwa2V5LAotICAgICAgICAgICAgIFB5T2JqZWN0ICoqcHZhbHVlLCBQeV9oYXNoX3QgKnBoYXNoKQotewotICAgIFB5RGljdE9iamVjdCAqbXA7Ci0gICAgUHlfc3NpemVfdCBpID0gZGljdF9uZXh0KG9wLCAqcHBvcywgcHZhbHVlKTsKLSAgICBpZiAoaSA8IDApCi0gICAgICAgIHJldHVybiAwOwotICAgIG1wID0gKFB5RGljdE9iamVjdCAqKW9wOwotICAgICpwcG9zID0gaSsxOwotICAgICpwaGFzaCA9IG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX2hhc2g7Ci0gICAgaWYgKHBrZXkpCi0gICAgICAgICpwa2V5ID0gbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfa2V5OwotICAgIHJldHVybiAxOworICAgIHJldHVybiBfUHlEaWN0X05leHQob3AsIHBwb3MsIHBrZXksIHB2YWx1ZSwgTlVMTCk7CiB9CiAKIC8qIEludGVybmFsIHZlcnNpb24gb2YgZGljdC5wb3AoKS4gKi8KIFB5T2JqZWN0ICoKLV9QeURpY3RfUG9wKFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksIFB5T2JqZWN0ICpkZWZsdCkKK19QeURpY3RfUG9wKFB5T2JqZWN0ICpkaWN0LCBQeU9iamVjdCAqa2V5LCBQeU9iamVjdCAqZGVmbHQpCiB7CiAgICAgUHlfaGFzaF90IGhhc2g7CisgICAgUHlfc3NpemVfdCBpeCwgaGFzaHBvczsKICAgICBQeU9iamVjdCAqb2xkX3ZhbHVlLCAqb2xkX2tleTsKICAgICBQeURpY3RLZXlFbnRyeSAqZXA7CiAgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyOworICAgIFB5RGljdE9iamVjdCAqbXA7CisKKyAgICBhc3NlcnQoUHlEaWN0X0NoZWNrKGRpY3QpKTsKKyAgICBtcCA9IChQeURpY3RPYmplY3QgKilkaWN0OwogCiAgICAgaWYgKG1wLT5tYV91c2VkID09IDApIHsKICAgICAgICAgaWYgKGRlZmx0KSB7CkBAIC0xNDY1LDExICsxNzk4LDEwIEBACiAgICAgICAgIGlmIChoYXNoID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKLSAgICBpZiAoZXAgPT0gTlVMTCkKKyAgICBpeCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgJmhhc2hwb3MpOworICAgIGlmIChpeCA9PSBES0lYX0VSUk9SKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBvbGRfdmFsdWUgPSAqdmFsdWVfYWRkcjsKLSAgICBpZiAob2xkX3ZhbHVlID09IE5VTEwpIHsKKyAgICBpZiAoaXggPT0gREtJWF9FTVBUWSB8fCAqdmFsdWVfYWRkciA9PSBOVUxMKSB7CiAgICAgICAgIGlmIChkZWZsdCkgewogICAgICAgICAgICAgUHlfSU5DUkVGKGRlZmx0KTsKICAgICAgICAgICAgIHJldHVybiBkZWZsdDsKQEAgLTE0NzcsMTUgKzE4MDksMjkgQEAKICAgICAgICAgX1B5RXJyX1NldEtleUVycm9yKGtleSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKworICAgIC8vIFNwbGl0IHRhYmxlIGRvZXNuJ3QgYWxsb3cgZGVsZXRpb24uICBDb21iaW5lIGl0LgorICAgIGlmIChfUHlEaWN0X0hhc1NwbGl0VGFibGUobXApKSB7CisgICAgICAgIGlmIChkaWN0cmVzaXplKG1wLCBES19TSVpFKG1wLT5tYV9rZXlzKSkpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGl4ID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyLCAmaGFzaHBvcyk7CisgICAgICAgIGFzc2VydChpeCA+PSAwKTsKKyAgICB9CisKKyAgICBvbGRfdmFsdWUgPSAqdmFsdWVfYWRkcjsKKyAgICBhc3NlcnQob2xkX3ZhbHVlICE9IE5VTEwpOwogICAgICp2YWx1ZV9hZGRyID0gTlVMTDsKICAgICBtcC0+bWFfdXNlZC0tOwotICAgIGlmICghX1B5RGljdF9IYXNTcGxpdFRhYmxlKG1wKSkgewotICAgICAgICBFTlNVUkVfQUxMT1dTX0RFTEVUSU9OUyhtcCk7Ci0gICAgICAgIG9sZF9rZXkgPSBlcC0+bWVfa2V5OwotICAgICAgICBQeV9JTkNSRUYoZHVtbXkpOwotICAgICAgICBlcC0+bWVfa2V5ID0gZHVtbXk7Ci0gICAgICAgIFB5X0RFQ1JFRihvbGRfa2V5KTsKLSAgICB9CisgICAgbXAtPm1hX3ZlcnNpb25fdGFnID0gRElDVF9ORVhUX1ZFUlNJT04oKTsKKyAgICBka19zZXRfaW5kZXgobXAtPm1hX2tleXMsIGhhc2hwb3MsIERLSVhfRFVNTVkpOworICAgIGVwID0gJkRLX0VOVFJJRVMobXAtPm1hX2tleXMpW2l4XTsKKyAgICBFTlNVUkVfQUxMT1dTX0RFTEVUSU9OUyhtcCk7CisgICAgb2xkX2tleSA9IGVwLT5tZV9rZXk7CisgICAgZXAtPm1lX2tleSA9IE5VTEw7CisgICAgUHlfREVDUkVGKG9sZF9rZXkpOworCisgICAgYXNzZXJ0KF9QeURpY3RfQ2hlY2tDb25zaXN0ZW5jeShtcCkpOwogICAgIHJldHVybiBvbGRfdmFsdWU7CiB9CiAKQEAgLTE1MTAsNyArMTg1Niw3IEBACiAgICAgICAgICAgICBQeU9iamVjdCAqa2V5OwogICAgICAgICAgICAgUHlfaGFzaF90IGhhc2g7CiAKLSAgICAgICAgICAgIGlmIChkaWN0cmVzaXplKG1wLCBQeV9TSVpFKGl0ZXJhYmxlKSkpIHsKKyAgICAgICAgICAgIGlmIChkaWN0cmVzaXplKG1wLCBFU1RJTUFURV9TSVpFKFB5X1NJWkUoaXRlcmFibGUpKSkpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CkBAIC0xNTI5LDcgKzE4NzUsNyBAQAogICAgICAgICAgICAgUHlPYmplY3QgKmtleTsKICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoOwogCi0gICAgICAgICAgICBpZiAoZGljdHJlc2l6ZShtcCwgUHlTZXRfR0VUX1NJWkUoaXRlcmFibGUpKSkgeworICAgICAgICAgICAgaWYgKGRpY3RyZXNpemUobXAsIEVTVElNQVRFX1NJWkUoUHlTZXRfR0VUX1NJWkUoaXRlcmFibGUpKSkpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CkBAIC0xNTg5LDcgKzE5MzUsNyBAQAogICAgIFB5X1RSQVNIQ0FOX1NBRkVfQkVHSU4obXApCiAgICAgaWYgKHZhbHVlcyAhPSBOVUxMKSB7CiAgICAgICAgIGlmICh2YWx1ZXMgIT0gZW1wdHlfdmFsdWVzKSB7Ci0gICAgICAgICAgICBmb3IgKGkgPSAwLCBuID0gREtfU0laRShtcC0+bWFfa2V5cyk7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgICAgIGZvciAoaSA9IDAsIG4gPSBtcC0+bWFfa2V5cy0+ZGtfbmVudHJpZXM7IGkgPCBuOyBpKyspIHsKICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHZhbHVlc1tpXSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmcmVlX3ZhbHVlcyh2YWx1ZXMpOwpAQCAtMTcwMSw4ICsyMDQ3LDggQEAKIGRpY3Rfc3Vic2NyaXB0KFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXkpCiB7CiAgICAgUHlPYmplY3QgKnY7CisgICAgUHlfc3NpemVfdCBpeDsKICAgICBQeV9oYXNoX3QgaGFzaDsKLSAgICBQeURpY3RLZXlFbnRyeSAqZXA7CiAgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyOwogCiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8CkBAIC0xNzExLDExICsyMDU3LDEwIEBACiAgICAgICAgIGlmIChoYXNoID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKLSAgICBpZiAoZXAgPT0gTlVMTCkKKyAgICBpeCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgTlVMTCk7CisgICAgaWYgKGl4ID09IERLSVhfRVJST1IpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHYgPSAqdmFsdWVfYWRkcjsKLSAgICBpZiAodiA9PSBOVUxMKSB7CisgICAgaWYgKGl4ID09IERLSVhfRU1QVFkgfHwgKnZhbHVlX2FkZHIgPT0gTlVMTCkgewogICAgICAgICBpZiAoIVB5RGljdF9DaGVja0V4YWN0KG1wKSkgewogICAgICAgICAgICAgLyogTG9vayB1cCBfX21pc3NpbmdfXyBtZXRob2QgaWYgd2UncmUgYSBzdWJjbGFzcy4gKi8KICAgICAgICAgICAgIFB5T2JqZWN0ICptaXNzaW5nLCAqcmVzOwpAQCAtMTczMyw4ICsyMDc4LDggQEAKICAgICAgICAgX1B5RXJyX1NldEtleUVycm9yKGtleSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBlbHNlCi0gICAgICAgIFB5X0lOQ1JFRih2KTsKKyAgICB2ID0gKnZhbHVlX2FkZHI7CisgICAgUHlfSU5DUkVGKHYpOwogICAgIHJldHVybiB2OwogfQogCkBAIC0xNzc0LDggKzIxMTksOCBAQAogICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgICAgIGdvdG8gYWdhaW47CiAgICAgfQotICAgIGVwID0gJm1wLT5tYV9rZXlzLT5ka19lbnRyaWVzWzBdOwotICAgIHNpemUgPSBES19TSVpFKG1wLT5tYV9rZXlzKTsKKyAgICBlcCA9IERLX0VOVFJJRVMobXAtPm1hX2tleXMpOworICAgIHNpemUgPSBtcC0+bWFfa2V5cy0+ZGtfbmVudHJpZXM7CiAgICAgaWYgKG1wLT5tYV92YWx1ZXMpIHsKICAgICAgICAgdmFsdWVfcHRyID0gbXAtPm1hX3ZhbHVlczsKICAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5T2JqZWN0ICopOwpAQCAtMTgwMiw2ICsyMTQ3LDcgQEAKIHsKICAgICBQeU9iamVjdCAqdjsKICAgICBQeV9zc2l6ZV90IGksIGo7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwOwogICAgIFB5X3NzaXplX3Qgc2l6ZSwgbiwgb2Zmc2V0OwogICAgIFB5T2JqZWN0ICoqdmFsdWVfcHRyOwogCkBAIC0xODE3LDEzICsyMTYzLDE0IEBACiAgICAgICAgIFB5X0RFQ1JFRih2KTsKICAgICAgICAgZ290byBhZ2FpbjsKICAgICB9Ci0gICAgc2l6ZSA9IERLX1NJWkUobXAtPm1hX2tleXMpOworICAgIGVwID0gREtfRU5UUklFUyhtcC0+bWFfa2V5cyk7CisgICAgc2l6ZSA9IG1wLT5tYV9rZXlzLT5ka19uZW50cmllczsKICAgICBpZiAobXAtPm1hX3ZhbHVlcykgewogICAgICAgICB2YWx1ZV9wdHIgPSBtcC0+bWFfdmFsdWVzOwogICAgICAgICBvZmZzZXQgPSBzaXplb2YoUHlPYmplY3QgKik7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICB2YWx1ZV9wdHIgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF0ubWVfdmFsdWU7CisgICAgICAgIHZhbHVlX3B0ciA9ICZlcFswXS5tZV92YWx1ZTsKICAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5RGljdEtleUVudHJ5KTsKICAgICB9CiAgICAgZm9yIChpID0gMCwgaiA9IDA7IGkgPCBzaXplOyBpKyspIHsKQEAgLTE4NzQsOCArMjIyMSw4IEBACiAgICAgICAgIGdvdG8gYWdhaW47CiAgICAgfQogICAgIC8qIE5vdGhpbmcgd2UgZG8gYmVsb3cgbWFrZXMgYW55IGZ1bmN0aW9uIGNhbGxzLiAqLwotICAgIGVwID0gbXAtPm1hX2tleXMtPmRrX2VudHJpZXM7Ci0gICAgc2l6ZSA9IERLX1NJWkUobXAtPm1hX2tleXMpOworICAgIGVwID0gREtfRU5UUklFUyhtcC0+bWFfa2V5cyk7CisgICAgc2l6ZSA9IG1wLT5tYV9rZXlzLT5ka19uZW50cmllczsKICAgICBpZiAobXAtPm1hX3ZhbHVlcykgewogICAgICAgICB2YWx1ZV9wdHIgPSBtcC0+bWFfdmFsdWVzOwogICAgICAgICBvZmZzZXQgPSBzaXplb2YoUHlPYmplY3QgKik7CkBAIC0xOTE5LDcgKzIyNjYsOCBAQAogfQogCiBzdGF0aWMgaW50Ci1kaWN0X3VwZGF0ZV9jb21tb24oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcywgY2hhciAqbWV0aG5hbWUpCitkaWN0X3VwZGF0ZV9jb21tb24oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcywKKyAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICptZXRobmFtZSkKIHsKICAgICBQeU9iamVjdCAqYXJnID0gTlVMTDsKICAgICBpbnQgcmVzdWx0ID0gMDsKQEAgLTIwMjEsNiArMjM2OSw3IEBACiAgICAgfQogCiAgICAgaSA9IDA7CisgICAgYXNzZXJ0KF9QeURpY3RfQ2hlY2tDb25zaXN0ZW5jeSgoUHlEaWN0T2JqZWN0ICopZCkpOwogICAgIGdvdG8gUmV0dXJuOwogRmFpbDoKICAgICBQeV9YREVDUkVGKGl0ZW0pOwpAQCAtMjAzMSwxOCArMjM4MCwxNCBAQAogICAgIHJldHVybiBQeV9TQUZFX0RPV05DQVNUKGksIFB5X3NzaXplX3QsIGludCk7CiB9CiAKLWludAotUHlEaWN0X1VwZGF0ZShQeU9iamVjdCAqYSwgUHlPYmplY3QgKmIpCi17Ci0gICAgcmV0dXJuIFB5RGljdF9NZXJnZShhLCBiLCAxKTsKLX0KLQotaW50Ci1QeURpY3RfTWVyZ2UoUHlPYmplY3QgKmEsIFB5T2JqZWN0ICpiLCBpbnQgb3ZlcnJpZGUpCitzdGF0aWMgaW50CitkaWN0X21lcmdlKFB5T2JqZWN0ICphLCBQeU9iamVjdCAqYiwgaW50IG92ZXJyaWRlKQogewogICAgIFB5RGljdE9iamVjdCAqbXAsICpvdGhlcjsKICAgICBQeV9zc2l6ZV90IGksIG47Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVudHJ5OworICAgIFB5RGljdEtleUVudHJ5ICplbnRyeSwgKmVwMDsKKworICAgIGFzc2VydCgwIDw9IG92ZXJyaWRlICYmIG92ZXJyaWRlIDw9IDIpOwogCiAgICAgLyogV2UgYWNjZXB0IGZvciB0aGUgYXJndW1lbnQgZWl0aGVyIGEgY29uY3JldGUgZGljdGlvbmFyeSBvYmplY3QsCiAgICAgICogb3IgYW4gYWJzdHJhY3QgIm1hcHBpbmciIG9iamVjdC4gIEZvciB0aGUgZm9ybWVyLCB3ZSBjYW4gZG8KQEAgLTIwNjksMTMgKzI0MTQsMTYgQEAKICAgICAgICAgICogaW5jcmVtZW50YWxseSByZXNpemluZyBhcyB3ZSBpbnNlcnQgbmV3IGl0ZW1zLiAgRXhwZWN0CiAgICAgICAgICAqIHRoYXQgdGhlcmUgd2lsbCBiZSBubyAob3IgZmV3KSBvdmVybGFwcGluZyBrZXlzLgogICAgICAgICAgKi8KLSAgICAgICAgaWYgKG1wLT5tYV9rZXlzLT5ka191c2FibGUgKiAzIDwgb3RoZXItPm1hX3VzZWQgKiAyKQotICAgICAgICAgICAgaWYgKGRpY3RyZXNpemUobXAsIChtcC0+bWFfdXNlZCArIG90aGVyLT5tYV91c2VkKSoyKSAhPSAwKQorICAgICAgICBpZiAoVVNBQkxFX0ZSQUNUSU9OKG1wLT5tYV9rZXlzLT5ka19zaXplKSA8IG90aGVyLT5tYV91c2VkKSB7CisgICAgICAgICAgICBpZiAoZGljdHJlc2l6ZShtcCwgRVNUSU1BVEVfU0laRShtcC0+bWFfdXNlZCArIG90aGVyLT5tYV91c2VkKSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgZm9yIChpID0gMCwgbiA9IERLX1NJWkUob3RoZXItPm1hX2tleXMpOyBpIDwgbjsgaSsrKSB7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZXAwID0gREtfRU5UUklFUyhvdGhlci0+bWFfa2V5cyk7CisgICAgICAgIGZvciAoaSA9IDAsIG4gPSBvdGhlci0+bWFfa2V5cy0+ZGtfbmVudHJpZXM7IGkgPCBuOyBpKyspIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICprZXksICp2YWx1ZTsKICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoOwotICAgICAgICAgICAgZW50cnkgPSAmb3RoZXItPm1hX2tleXMtPmRrX2VudHJpZXNbaV07CisgICAgICAgICAgICBlbnRyeSA9ICZlcDBbaV07CiAgICAgICAgICAgICBrZXkgPSBlbnRyeS0+bWVfa2V5OwogICAgICAgICAgICAgaGFzaCA9IGVudHJ5LT5tZV9oYXNoOwogICAgICAgICAgICAgaWYgKG90aGVyLT5tYV92YWx1ZXMpCkBAIC0yMDg3LDE0ICsyNDM1LDI4IEBACiAgICAgICAgICAgICAgICAgaW50IGVyciA9IDA7CiAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGtleSk7CiAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKHZhbHVlKTsKLSAgICAgICAgICAgICAgICBpZiAob3ZlcnJpZGUgfHwgUHlEaWN0X0dldEl0ZW0oYSwga2V5KSA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGlmIChvdmVycmlkZSA9PSAxKQogICAgICAgICAgICAgICAgICAgICBlcnIgPSBpbnNlcnRkaWN0KG1wLCBrZXksIGhhc2gsIHZhbHVlKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChfUHlEaWN0X0dldEl0ZW1fS25vd25IYXNoKGEsIGtleSwgaGFzaCkgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVyciA9IGluc2VydGRpY3QobXAsIGtleSwgaGFzaCwgdmFsdWUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGlmIChvdmVycmlkZSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIF9QeUVycl9TZXRLZXlFcnJvcihrZXkpOworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwogICAgICAgICAgICAgICAgIGlmIChlcnIgIT0gMCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgICAgICAgICAgICAgaWYgKG4gIT0gREtfU0laRShvdGhlci0+bWFfa2V5cykpIHsKKyAgICAgICAgICAgICAgICBpZiAobiAhPSBvdGhlci0+bWFfa2V5cy0+ZGtfbmVudHJpZXMpIHsKICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkaWN0IG11dGF0ZWQgZHVyaW5nIHVwZGF0ZSIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CkBAIC0yMTIzLDcgKzI0ODUsMTMgQEAKICAgICAgICAgICAgIHJldHVybiAtMTsKIAogICAgICAgICBmb3IgKGtleSA9IFB5SXRlcl9OZXh0KGl0ZXIpOyBrZXk7IGtleSA9IFB5SXRlcl9OZXh0KGl0ZXIpKSB7Ci0gICAgICAgICAgICBpZiAoIW92ZXJyaWRlICYmIFB5RGljdF9HZXRJdGVtKGEsIGtleSkgIT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKG92ZXJyaWRlICE9IDEgJiYgUHlEaWN0X0dldEl0ZW0oYSwga2V5KSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgaWYgKG92ZXJyaWRlICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgX1B5RXJyX1NldEtleUVycm9yKGtleSk7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXRlcik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CkBAIC0yMTQ2LDkgKzI1MTQsMjkgQEAKICAgICAgICAgICAgIC8qIEl0ZXJhdG9yIGNvbXBsZXRlZCwgdmlhIGVycm9yICovCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQorICAgIGFzc2VydChfUHlEaWN0X0NoZWNrQ29uc2lzdGVuY3koKFB5RGljdE9iamVjdCAqKWEpKTsKICAgICByZXR1cm4gMDsKIH0KIAoraW50CitQeURpY3RfVXBkYXRlKFB5T2JqZWN0ICphLCBQeU9iamVjdCAqYikKK3sKKyAgICByZXR1cm4gZGljdF9tZXJnZShhLCBiLCAxKTsKK30KKworaW50CitQeURpY3RfTWVyZ2UoUHlPYmplY3QgKmEsIFB5T2JqZWN0ICpiLCBpbnQgb3ZlcnJpZGUpCit7CisgICAgLyogWFhYIERlcHJlY2F0ZSBvdmVycmlkZSBub3QgaW4gKDAsIDEpLiAqLworICAgIHJldHVybiBkaWN0X21lcmdlKGEsIGIsIG92ZXJyaWRlICE9IDApOworfQorCitpbnQKK19QeURpY3RfTWVyZ2VFeChQeU9iamVjdCAqYSwgUHlPYmplY3QgKmIsIGludCBvdmVycmlkZSkKK3sKKyAgICByZXR1cm4gZGljdF9tZXJnZShhLCBiLCBvdmVycmlkZSk7Cit9CisKIHN0YXRpYyBQeU9iamVjdCAqCiBkaWN0X2NvcHkoUHlEaWN0T2JqZWN0ICptcCkKIHsKQEAgLTIxNjksNyArMjU1Nyw5IEBACiAgICAgbXAgPSAoUHlEaWN0T2JqZWN0ICopbzsKICAgICBpZiAoX1B5RGljdF9IYXNTcGxpdFRhYmxlKG1wKSkgewogICAgICAgICBQeURpY3RPYmplY3QgKnNwbGl0X2NvcHk7Ci0gICAgICAgIFB5T2JqZWN0ICoqbmV3dmFsdWVzID0gbmV3X3ZhbHVlcyhES19TSVpFKG1wLT5tYV9rZXlzKSk7CisgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSA9IFVTQUJMRV9GUkFDVElPTihES19TSVpFKG1wLT5tYV9rZXlzKSk7CisgICAgICAgIFB5T2JqZWN0ICoqbmV3dmFsdWVzOworICAgICAgICBuZXd2YWx1ZXMgPSBuZXdfdmFsdWVzKHNpemUpOwogICAgICAgICBpZiAobmV3dmFsdWVzID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgc3BsaXRfY29weSA9IFB5T2JqZWN0X0dDX05ldyhQeURpY3RPYmplY3QsICZQeURpY3RfVHlwZSk7CkBAIC0yMTgxLDcgKzI1NzEsNyBAQAogICAgICAgICBzcGxpdF9jb3B5LT5tYV9rZXlzID0gbXAtPm1hX2tleXM7CiAgICAgICAgIHNwbGl0X2NvcHktPm1hX3VzZWQgPSBtcC0+bWFfdXNlZDsKICAgICAgICAgREtfSU5DUkVGKG1wLT5tYV9rZXlzKTsKLSAgICAgICAgZm9yIChpID0gMCwgbiA9IERLX1NJWkUobXAtPm1hX2tleXMpOyBpIDwgbjsgaSsrKSB7CisgICAgICAgIGZvciAoaSA9IDAsIG4gPSBzaXplOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqdmFsdWUgPSBtcC0+bWFfdmFsdWVzW2ldOwogICAgICAgICAgICAgUHlfWElOQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICBzcGxpdF9jb3B5LT5tYV92YWx1ZXNbaV0gPSB2YWx1ZTsKQEAgLTIyNTIsOCArMjY0Miw4IEBACiAgICAgICAgIC8qIGNhbid0IGJlIGVxdWFsIGlmICMgb2YgZW50cmllcyBkaWZmZXIgKi8KICAgICAgICAgcmV0dXJuIDA7CiAgICAgLyogU2FtZSAjIG9mIGVudHJpZXMgLS0gY2hlY2sgYWxsIG9mICdlbS4gIEV4aXQgZWFybHkgb24gYW55IGRpZmYuICovCi0gICAgZm9yIChpID0gMDsgaSA8IERLX1NJWkUoYS0+bWFfa2V5cyk7IGkrKykgewotICAgICAgICBQeURpY3RLZXlFbnRyeSAqZXAgPSAmYS0+bWFfa2V5cy0+ZGtfZW50cmllc1tpXTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgYS0+bWFfa2V5cy0+ZGtfbmVudHJpZXM7IGkrKykgeworICAgICAgICBQeURpY3RLZXlFbnRyeSAqZXAgPSAmREtfRU5UUklFUyhhLT5tYV9rZXlzKVtpXTsKICAgICAgICAgUHlPYmplY3QgKmF2YWw7CiAgICAgICAgIGlmIChhLT5tYV92YWx1ZXMpCiAgICAgICAgICAgICBhdmFsID0gYS0+bWFfdmFsdWVzW2ldOwpAQCAtMjI3MCw3ICsyNjYwLDcgQEAKICAgICAgICAgICAgIC8qIGRpdHRvIGZvciBrZXkgKi8KICAgICAgICAgICAgIFB5X0lOQ1JFRihrZXkpOwogICAgICAgICAgICAgLyogcmV1c2UgdGhlIGtub3duIGhhc2ggdmFsdWUgKi8KLSAgICAgICAgICAgIGlmICgoYi0+bWFfa2V5cy0+ZGtfbG9va3VwKShiLCBrZXksIGVwLT5tZV9oYXNoLCAmdmFkZHIpID09IE5VTEwpCisgICAgICAgICAgICBpZiAoKGItPm1hX2tleXMtPmRrX2xvb2t1cCkoYiwga2V5LCBlcC0+bWVfaGFzaCwgJnZhZGRyLCBOVUxMKSA8IDApCiAgICAgICAgICAgICAgICAgYnZhbCA9IE5VTEw7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgYnZhbCA9ICp2YWRkcjsKQEAgLTIzMjgsNyArMjcxOCw3IEBACiB7CiAgICAgcmVnaXN0ZXIgUHlEaWN0T2JqZWN0ICptcCA9IHNlbGY7CiAgICAgUHlfaGFzaF90IGhhc2g7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwOworICAgIFB5X3NzaXplX3QgaXg7CiAgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyOwogCiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8CkBAIC0yMzM3LDEwICsyNzI3LDEyIEBACiAgICAgICAgIGlmIChoYXNoID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKLSAgICBpZiAoZXAgPT0gTlVMTCkKKyAgICBpeCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgTlVMTCk7CisgICAgaWYgKGl4ID09IERLSVhfRVJST1IpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoKnZhbHVlX2FkZHIgIT0gTlVMTCk7CisgICAgaWYgKGl4ID09IERLSVhfRU1QVFkgfHwgKnZhbHVlX2FkZHIgPT0gTlVMTCkKKyAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOworICAgIFB5X1JFVFVSTl9UUlVFOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMjM1MCw3ICsyNzQyLDcgQEAKICAgICBQeU9iamVjdCAqZmFpbG9iaiA9IFB5X05vbmU7CiAgICAgUHlPYmplY3QgKnZhbCA9IE5VTEw7CiAgICAgUHlfaGFzaF90IGhhc2g7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwOworICAgIFB5X3NzaXplX3QgaXg7CiAgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyOwogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZ2V0IiwgMSwgMiwgJmtleSwgJmZhaWxvYmopKQpAQCAtMjM2MiwxMiArMjc1NCwxMyBAQAogICAgICAgICBpZiAoaGFzaCA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7Ci0gICAgaWYgKGVwID09IE5VTEwpCisgICAgaXggPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsIE5VTEwpOworICAgIGlmIChpeCA9PSBES0lYX0VSUk9SKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB2YWwgPSAqdmFsdWVfYWRkcjsKLSAgICBpZiAodmFsID09IE5VTEwpCisgICAgaWYgKGl4ID09IERLSVhfRU1QVFkgfHwgKnZhbHVlX2FkZHIgPT0gTlVMTCkKICAgICAgICAgdmFsID0gZmFpbG9iajsKKyAgICBlbHNlCisgICAgICAgIHZhbCA9ICp2YWx1ZV9hZGRyOwogICAgIFB5X0lOQ1JFRih2YWwpOwogICAgIHJldHVybiB2YWw7CiB9CkBAIC0yMzc2LDQzICsyNzY5LDg4IEBACiBQeURpY3RfU2V0RGVmYXVsdChQeU9iamVjdCAqZCwgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKmRlZmF1bHRvYmopCiB7CiAgICAgUHlEaWN0T2JqZWN0ICptcCA9IChQeURpY3RPYmplY3QgKilkOwotICAgIFB5T2JqZWN0ICp2YWwgPSBOVUxMOworICAgIFB5T2JqZWN0ICp2YWx1ZTsKICAgICBQeV9oYXNoX3QgaGFzaDsKLSAgICBQeURpY3RLZXlFbnRyeSAqZXA7CisgICAgUHlfc3NpemVfdCBoYXNocG9zLCBpeDsKICAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CiAKICAgICBpZiAoIVB5RGljdF9DaGVjayhkKSkgewogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorCiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8CiAgICAgICAgIChoYXNoID0gKChQeUFTQ0lJT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKSB7CiAgICAgICAgIGhhc2ggPSBQeU9iamVjdF9IYXNoKGtleSk7CiAgICAgICAgIGlmIChoYXNoID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKLSAgICBpZiAoZXAgPT0gTlVMTCkKKworICAgIGlmIChtcC0+bWFfdmFsdWVzICE9IE5VTEwgJiYgIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkpIHsKKyAgICAgICAgaWYgKGluc2VydGlvbl9yZXNpemUobXApIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGl4ID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyLCAmaGFzaHBvcyk7CisgICAgaWYgKGl4ID09IERLSVhfRVJST1IpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHZhbCA9ICp2YWx1ZV9hZGRyOwotICAgIGlmICh2YWwgPT0gTlVMTCkgewotICAgICAgICBpZiAobXAtPm1hX2tleXMtPmRrX3VzYWJsZSA8PSAwKSB7Ci0gICAgICAgICAgICAvKiBOZWVkIHRvIHJlc2l6ZS4gKi8KLSAgICAgICAgICAgIGlmIChpbnNlcnRpb25fcmVzaXplKG1wKSA8IDApCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICBlcCA9IGZpbmRfZW1wdHlfc2xvdChtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7CisKKyAgICBpZiAoX1B5RGljdF9IYXNTcGxpdFRhYmxlKG1wKSAmJgorICAgICAgICAoKGl4ID49IDAgJiYgKnZhbHVlX2FkZHIgPT0gTlVMTCAmJiBtcC0+bWFfdXNlZCAhPSBpeCkgfHwKKyAgICAgICAgIChpeCA9PSBES0lYX0VNUFRZICYmIG1wLT5tYV91c2VkICE9IG1wLT5tYV9rZXlzLT5ka19uZW50cmllcykpKSB7CisgICAgICAgIGlmIChpbnNlcnRpb25fcmVzaXplKG1wKSA8IDApIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIFB5X0lOQ1JFRihkZWZhdWx0b2JqKTsKKyAgICAgICAgZmluZF9lbXB0eV9zbG90KG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyLCAmaGFzaHBvcyk7CisgICAgICAgIGl4ID0gREtJWF9FTVBUWTsKKyAgICB9CisKKyAgICBpZiAoaXggPT0gREtJWF9FTVBUWSkgeworICAgICAgICBQeURpY3RLZXlFbnRyeSAqZXAsICplcDA7CisgICAgICAgIHZhbHVlID0gZGVmYXVsdG9iajsKKyAgICAgICAgaWYgKG1wLT5tYV9rZXlzLT5ka191c2FibGUgPD0gMCkgeworICAgICAgICAgICAgaWYgKGluc2VydGlvbl9yZXNpemUobXApIDwgMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZmluZF9lbXB0eV9zbG90KG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyLCAmaGFzaHBvcyk7CisgICAgICAgIH0KKyAgICAgICAgZXAwID0gREtfRU5UUklFUyhtcC0+bWFfa2V5cyk7CisgICAgICAgIGVwID0gJmVwMFttcC0+bWFfa2V5cy0+ZGtfbmVudHJpZXNdOworICAgICAgICBka19zZXRfaW5kZXgobXAtPm1hX2tleXMsIGhhc2hwb3MsIG1wLT5tYV9rZXlzLT5ka19uZW50cmllcyk7CiAgICAgICAgIFB5X0lOQ1JFRihrZXkpOwotICAgICAgICBNQUlOVEFJTl9UUkFDS0lORyhtcCwga2V5LCBkZWZhdWx0b2JqKTsKKyAgICAgICAgUHlfSU5DUkVGKHZhbHVlKTsKKyAgICAgICAgTUFJTlRBSU5fVFJBQ0tJTkcobXAsIGtleSwgdmFsdWUpOwogICAgICAgICBlcC0+bWVfa2V5ID0ga2V5OwogICAgICAgICBlcC0+bWVfaGFzaCA9IGhhc2g7Ci0gICAgICAgICp2YWx1ZV9hZGRyID0gZGVmYXVsdG9iajsKLSAgICAgICAgdmFsID0gZGVmYXVsdG9iajsKLSAgICAgICAgbXAtPm1hX2tleXMtPmRrX3VzYWJsZS0tOworICAgICAgICBpZiAobXAtPm1hX3ZhbHVlcykgeworICAgICAgICAgICAgYXNzZXJ0KG1wLT5tYV92YWx1ZXNbbXAtPm1hX2tleXMtPmRrX25lbnRyaWVzXSA9PSBOVUxMKTsKKyAgICAgICAgICAgIG1wLT5tYV92YWx1ZXNbbXAtPm1hX2tleXMtPmRrX25lbnRyaWVzXSA9IHZhbHVlOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZXAtPm1lX3ZhbHVlID0gdmFsdWU7CisgICAgICAgIH0KICAgICAgICAgbXAtPm1hX3VzZWQrKzsKKyAgICAgICAgbXAtPm1hX3ZlcnNpb25fdGFnID0gRElDVF9ORVhUX1ZFUlNJT04oKTsKKyAgICAgICAgbXAtPm1hX2tleXMtPmRrX3VzYWJsZS0tOworICAgICAgICBtcC0+bWFfa2V5cy0+ZGtfbmVudHJpZXMrKzsKKyAgICAgICAgYXNzZXJ0KG1wLT5tYV9rZXlzLT5ka191c2FibGUgPj0gMCk7CiAgICAgfQotICAgIHJldHVybiB2YWw7CisgICAgZWxzZSBpZiAoKnZhbHVlX2FkZHIgPT0gTlVMTCkgeworICAgICAgICB2YWx1ZSA9IGRlZmF1bHRvYmo7CisgICAgICAgIGFzc2VydChfUHlEaWN0X0hhc1NwbGl0VGFibGUobXApKTsKKyAgICAgICAgYXNzZXJ0KGl4ID09IG1wLT5tYV91c2VkKTsKKyAgICAgICAgUHlfSU5DUkVGKHZhbHVlKTsKKyAgICAgICAgTUFJTlRBSU5fVFJBQ0tJTkcobXAsIGtleSwgdmFsdWUpOworICAgICAgICAqdmFsdWVfYWRkciA9IHZhbHVlOworICAgICAgICBtcC0+bWFfdXNlZCsrOworICAgICAgICBtcC0+bWFfdmVyc2lvbl90YWcgPSBESUNUX05FWFRfVkVSU0lPTigpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgdmFsdWUgPSAqdmFsdWVfYWRkcjsKKyAgICB9CisKKyAgICBhc3NlcnQoX1B5RGljdF9DaGVja0NvbnNpc3RlbmN5KG1wKSk7CisgICAgcmV0dXJuIHZhbHVlOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMjQ0NCwxNyArMjg4MiwxNiBAQAogICAgIGlmKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicG9wIiwgMSwgMiwgJmtleSwgJmRlZmx0KSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICByZXR1cm4gX1B5RGljdF9Qb3AobXAsIGtleSwgZGVmbHQpOworICAgIHJldHVybiBfUHlEaWN0X1BvcCgoUHlPYmplY3QqKW1wLCBrZXksIGRlZmx0KTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIGRpY3RfcG9waXRlbShQeURpY3RPYmplY3QgKm1wKQogewotICAgIFB5X2hhc2hfdCBpID0gMDsKLSAgICBQeURpY3RLZXlFbnRyeSAqZXA7CisgICAgUHlfc3NpemVfdCBpLCBqOworICAgIFB5RGljdEtleUVudHJ5ICplcDAsICplcDsKICAgICBQeU9iamVjdCAqcmVzOwogCi0KICAgICAvKiBBbGxvY2F0ZSB0aGUgcmVzdWx0IHR1cGxlIGJlZm9yZSBjaGVja2luZyB0aGUgc2l6ZS4gIEJlbGlldmUgaXQKICAgICAgKiBvciBub3QsIHRoaXMgYWxsb2NhdGlvbiBjb3VsZCB0cmlnZ2VyIGEgZ2FyYmFnZSBjb2xsZWN0aW9uIHdoaWNoCiAgICAgICogY291bGQgZW1wdHkgdGhlIGRpY3QsIHNvIGlmIHdlIGNoZWNrZWQgdGhlIHNpemUgZmlyc3QgYW5kIHRoYXQKQEAgLTI0NzUsNjggKzI5MTIsNjQgQEAKICAgICB9CiAgICAgLyogQ29udmVydCBzcGxpdCB0YWJsZSB0byBjb21iaW5lZCB0YWJsZSAqLwogICAgIGlmIChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwID09IGxvb2tkaWN0X3NwbGl0KSB7Ci0gICAgICAgIC8qIC0xIGlzIHJlcXVpcmVkIHNpbmNlIGRpY3RyZXNpemUoKSB1c2VzIGtleSBzaXplID4gbWludXNlZCAqLwotICAgICAgICBpZiAoZGljdHJlc2l6ZShtcCwgREtfU0laRShtcC0+bWFfa2V5cykgLSAxKSkgeworICAgICAgICBpZiAoZGljdHJlc2l6ZShtcCwgREtfU0laRShtcC0+bWFfa2V5cykpKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgfQogICAgIEVOU1VSRV9BTExPV1NfREVMRVRJT05TKG1wKTsKLSAgICAvKiBTZXQgZXAgdG8gInRoZSBmaXJzdCIgZGljdCBlbnRyeSB3aXRoIGEgdmFsdWUuICBXZSBhYnVzZSB0aGUgaGFzaAotICAgICAqIGZpZWxkIG9mIHNsb3QgMCB0byBob2xkIGEgc2VhcmNoIGZpbmdlcjoKLSAgICAgKiBJZiBzbG90IDAgaGFzIGEgdmFsdWUsIHVzZSBzbG90IDAuCi0gICAgICogRWxzZSBzbG90IDAgaXMgYmVpbmcgdXNlZCB0byBob2xkIGEgc2VhcmNoIGZpbmdlciwKLSAgICAgKiBhbmQgd2UgdXNlIGl0cyBoYXNoIHZhbHVlIGFzIHRoZSBmaXJzdCBpbmRleCB0byBsb29rLgotICAgICAqLwotICAgIGVwID0gJm1wLT5tYV9rZXlzLT5ka19lbnRyaWVzWzBdOwotICAgIGlmIChlcC0+bWVfdmFsdWUgPT0gTlVMTCkgewotICAgICAgICBQeV9zc2l6ZV90IG1hc2sgPSBES19NQVNLKG1wLT5tYV9rZXlzKTsKLSAgICAgICAgaSA9IGVwLT5tZV9oYXNoOwotICAgICAgICAvKiBUaGUgaGFzaCBmaWVsZCBtYXkgYmUgYSByZWFsIGhhc2ggdmFsdWUsIG9yIGl0IG1heSBiZSBhCi0gICAgICAgICAqIGxlZ2l0IHNlYXJjaCBmaW5nZXIsIG9yIGl0IG1heSBiZSBhIG9uY2UtbGVnaXQgc2VhcmNoCi0gICAgICAgICAqIGZpbmdlciB0aGF0J3Mgb3V0IG9mIGJvdW5kcyBub3cgYmVjYXVzZSBpdCB3cmFwcGVkIGFyb3VuZAotICAgICAgICAgKiBvciB0aGUgdGFibGUgc2hydW5rIC0tIHNpbXBseSBtYWtlIHN1cmUgaXQncyBpbiBib3VuZHMgbm93LgotICAgICAgICAgKi8KLSAgICAgICAgaWYgKGkgPiBtYXNrIHx8IGkgPCAxKQotICAgICAgICAgICAgaSA9IDE7ICAgICAgICAgICAgICAvKiBza2lwIHNsb3QgMCAqLwotICAgICAgICB3aGlsZSAoKGVwID0gJm1wLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldKS0+bWVfdmFsdWUgPT0gTlVMTCkgewotICAgICAgICAgICAgaSsrOwotICAgICAgICAgICAgaWYgKGkgPiBtYXNrKQotICAgICAgICAgICAgICAgIGkgPSAxOwotICAgICAgICB9CisKKyAgICAvKiBQb3AgbGFzdCBpdGVtICovCisgICAgZXAwID0gREtfRU5UUklFUyhtcC0+bWFfa2V5cyk7CisgICAgaSA9IG1wLT5tYV9rZXlzLT5ka19uZW50cmllcyAtIDE7CisgICAgd2hpbGUgKGkgPj0gMCAmJiBlcDBbaV0ubWVfdmFsdWUgPT0gTlVMTCkgeworICAgICAgICBpLS07CiAgICAgfQorICAgIGFzc2VydChpID49IDApOworCisgICAgZXAgPSAmZXAwW2ldOworICAgIGogPSBsb29rZGljdF9pbmRleChtcC0+bWFfa2V5cywgZXAtPm1lX2hhc2gsIGkpOworICAgIGFzc2VydChqID49IDApOworICAgIGFzc2VydChka19nZXRfaW5kZXgobXAtPm1hX2tleXMsIGopID09IGkpOworICAgIGRrX3NldF9pbmRleChtcC0+bWFfa2V5cywgaiwgREtJWF9EVU1NWSk7CisKICAgICBQeVR1cGxlX1NFVF9JVEVNKHJlcywgMCwgZXAtPm1lX2tleSk7CiAgICAgUHlUdXBsZV9TRVRfSVRFTShyZXMsIDEsIGVwLT5tZV92YWx1ZSk7Ci0gICAgUHlfSU5DUkVGKGR1bW15KTsKLSAgICBlcC0+bWVfa2V5ID0gZHVtbXk7CisgICAgZXAtPm1lX2tleSA9IE5VTEw7CiAgICAgZXAtPm1lX3ZhbHVlID0gTlVMTDsKKyAgICAvKiBXZSBjYW4ndCBka191c2FibGUrKyBzaW5jZSB0aGVyZSBpcyBES0lYX0RVTU1ZIGluIGluZGljZXMgKi8KKyAgICBtcC0+bWFfa2V5cy0+ZGtfbmVudHJpZXMgPSBpOwogICAgIG1wLT5tYV91c2VkLS07Ci0gICAgYXNzZXJ0KG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzWzBdLm1lX3ZhbHVlID09IE5VTEwpOwotICAgIG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzWzBdLm1lX2hhc2ggPSBpICsgMTsgIC8qIG5leHQgcGxhY2UgdG8gc3RhcnQgKi8KKyAgICBtcC0+bWFfdmVyc2lvbl90YWcgPSBESUNUX05FWFRfVkVSU0lPTigpOworICAgIGFzc2VydChfUHlEaWN0X0NoZWNrQ29uc2lzdGVuY3kobXApKTsKICAgICByZXR1cm4gcmVzOwogfQogCiBzdGF0aWMgaW50CiBkaWN0X3RyYXZlcnNlKFB5T2JqZWN0ICpvcCwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCiB7Ci0gICAgUHlfc3NpemVfdCBpLCBuOwogICAgIFB5RGljdE9iamVjdCAqbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7Ci0gICAgaWYgKG1wLT5tYV9rZXlzLT5ka19sb29rdXAgPT0gbG9va2RpY3QpIHsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IERLX1NJWkUobXAtPm1hX2tleXMpOyBpKyspIHsKLSAgICAgICAgICAgIGlmIChtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1tpXS5tZV92YWx1ZSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlfVklTSVQobXAtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfdmFsdWUpOwotICAgICAgICAgICAgICAgIFB5X1ZJU0lUKG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX2tleSk7CisgICAgUHlEaWN0S2V5c09iamVjdCAqa2V5cyA9IG1wLT5tYV9rZXlzOworICAgIFB5RGljdEtleUVudHJ5ICplbnRyaWVzID0gREtfRU5UUklFUyhrZXlzKTsKKyAgICBQeV9zc2l6ZV90IGksIG4gPSBrZXlzLT5ka19uZW50cmllczsKKworICAgIGlmIChrZXlzLT5ka19sb29rdXAgPT0gbG9va2RpY3QpIHsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworICAgICAgICAgICAgaWYgKGVudHJpZXNbaV0ubWVfdmFsdWUgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5X1ZJU0lUKGVudHJpZXNbaV0ubWVfdmFsdWUpOworICAgICAgICAgICAgICAgIFB5X1ZJU0lUKGVudHJpZXNbaV0ubWVfa2V5KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0gZWxzZSB7CisgICAgfQorICAgIGVsc2UgewogICAgICAgICBpZiAobXAtPm1hX3ZhbHVlcyAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBmb3IgKGkgPSAwLCBuID0gREtfU0laRShtcC0+bWFfa2V5cyk7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICAgICAgICAgICBQeV9WSVNJVChtcC0+bWFfdmFsdWVzW2ldKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGZvciAoaSA9IDAsIG4gPSBES19TSVpFKG1wLT5tYV9rZXlzKTsgaSA8IG47IGkrKykgewotICAgICAgICAgICAgICAgIFB5X1ZJU0lUKG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX3ZhbHVlKTsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgICAgICAgICBQeV9WSVNJVChlbnRyaWVzW2ldLm1lX3ZhbHVlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTI1NTUsMjMgKzI5ODgsMzEgQEAKIFB5X3NzaXplX3QKIF9QeURpY3RfU2l6ZU9mKFB5RGljdE9iamVjdCAqbXApCiB7Ci0gICAgUHlfc3NpemVfdCBzaXplLCByZXM7CisgICAgUHlfc3NpemVfdCBzaXplLCB1c2FibGUsIHJlczsKIAogICAgIHNpemUgPSBES19TSVpFKG1wLT5tYV9rZXlzKTsKKyAgICB1c2FibGUgPSBVU0FCTEVfRlJBQ1RJT04oc2l6ZSk7CisKICAgICByZXMgPSBfUHlPYmplY3RfU0laRShQeV9UWVBFKG1wKSk7CiAgICAgaWYgKG1wLT5tYV92YWx1ZXMpCi0gICAgICAgIHJlcyArPSBzaXplICogc2l6ZW9mKFB5T2JqZWN0Kik7CisgICAgICAgIHJlcyArPSB1c2FibGUgKiBzaXplb2YoUHlPYmplY3QqKTsKICAgICAvKiBJZiB0aGUgZGljdGlvbmFyeSBpcyBzcGxpdCwgdGhlIGtleXMgcG9ydGlvbiBpcyBhY2NvdW50ZWQtZm9yCiAgICAgICAgaW4gdGhlIHR5cGUgb2JqZWN0LiAqLwogICAgIGlmIChtcC0+bWFfa2V5cy0+ZGtfcmVmY250ID09IDEpCi0gICAgICAgIHJlcyArPSBzaXplb2YoUHlEaWN0S2V5c09iamVjdCkgKyAoc2l6ZS0xKSAqIHNpemVvZihQeURpY3RLZXlFbnRyeSk7CisgICAgICAgIHJlcyArPSAoc2l6ZW9mKFB5RGljdEtleXNPYmplY3QpCisgICAgICAgICAgICAgICAgLSBQeV9NRU1CRVJfU0laRShQeURpY3RLZXlzT2JqZWN0LCBka19pbmRpY2VzKQorICAgICAgICAgICAgICAgICsgREtfSVhTSVpFKG1wLT5tYV9rZXlzKSAqIHNpemUKKyAgICAgICAgICAgICAgICArIHNpemVvZihQeURpY3RLZXlFbnRyeSkgKiB1c2FibGUpOwogICAgIHJldHVybiByZXM7CiB9CiAKIFB5X3NzaXplX3QKIF9QeURpY3RfS2V5c1NpemUoUHlEaWN0S2V5c09iamVjdCAqa2V5cykKIHsKLSAgICByZXR1cm4gc2l6ZW9mKFB5RGljdEtleXNPYmplY3QpICsgKERLX1NJWkUoa2V5cyktMSkgKiBzaXplb2YoUHlEaWN0S2V5RW50cnkpOworICAgIHJldHVybiAoc2l6ZW9mKFB5RGljdEtleXNPYmplY3QpCisgICAgICAgICAgICAtIFB5X01FTUJFUl9TSVpFKFB5RGljdEtleXNPYmplY3QsIGRrX2luZGljZXMpCisgICAgICAgICAgICArIERLX0lYU0laRShrZXlzKSAqIERLX1NJWkUoa2V5cykKKyAgICAgICAgICAgICsgVVNBQkxFX0ZSQUNUSU9OKERLX1NJWkUoa2V5cykpICogc2l6ZW9mKFB5RGljdEtleUVudHJ5KSk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0yNjU4LDggKzMwOTksOCBAQAogUHlEaWN0X0NvbnRhaW5zKFB5T2JqZWN0ICpvcCwgUHlPYmplY3QgKmtleSkKIHsKICAgICBQeV9oYXNoX3QgaGFzaDsKKyAgICBQeV9zc2l6ZV90IGl4OwogICAgIFB5RGljdE9iamVjdCAqbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwOwogICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKIAogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fApAQCAtMjY2OCw4ICszMTA5LDEwIEBACiAgICAgICAgIGlmIChoYXNoID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7Ci0gICAgcmV0dXJuIChlcCA9PSBOVUxMKSA/IC0xIDogKCp2YWx1ZV9hZGRyICE9IE5VTEwpOworICAgIGl4ID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyLCBOVUxMKTsKKyAgICBpZiAoaXggPT0gREtJWF9FUlJPUikKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHJldHVybiAoaXggIT0gREtJWF9FTVBUWSAmJiAqdmFsdWVfYWRkciAhPSBOVUxMKTsKIH0KIAogLyogSW50ZXJuYWwgdmVyc2lvbiBvZiBQeURpY3RfQ29udGFpbnMgdXNlZCB3aGVuIHRoZSBoYXNoIHZhbHVlIGlzIGFscmVhZHkga25vd24gKi8KQEAgLTI2NzcsMTEgKzMxMjAsMTMgQEAKIF9QeURpY3RfQ29udGFpbnMoUHlPYmplY3QgKm9wLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCkKIHsKICAgICBQeURpY3RPYmplY3QgKm1wID0gKFB5RGljdE9iamVjdCAqKW9wOwotICAgIFB5RGljdEtleUVudHJ5ICplcDsKICAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CisgICAgUHlfc3NpemVfdCBpeDsKIAotICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKLSAgICByZXR1cm4gKGVwID09IE5VTEwpID8gLTEgOiAoKnZhbHVlX2FkZHIgIT0gTlVMTCk7CisgICAgaXggPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsIE5VTEwpOworICAgIGlmIChpeCA9PSBES0lYX0VSUk9SKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmV0dXJuIChpeCAhPSBES0lYX0VNUFRZICYmICp2YWx1ZV9hZGRyICE9IE5VTEwpOwogfQogCiAvKiBIYWNrIHRvIGltcGxlbWVudCAia2V5IGluIGRpY3QiICovCkBAIC0yNzE1LDExICszMTYwLDEzIEBACiAgICAgICAgIF9QeU9iamVjdF9HQ19VTlRSQUNLKGQpOwogCiAgICAgZC0+bWFfdXNlZCA9IDA7Ci0gICAgZC0+bWFfa2V5cyA9IG5ld19rZXlzX29iamVjdChQeURpY3RfTUlOU0laRV9DT01CSU5FRCk7CisgICAgZC0+bWFfdmVyc2lvbl90YWcgPSBESUNUX05FWFRfVkVSU0lPTigpOworICAgIGQtPm1hX2tleXMgPSBuZXdfa2V5c19vYmplY3QoUHlEaWN0X01JTlNJWkUpOwogICAgIGlmIChkLT5tYV9rZXlzID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKHNlbGYpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisgICAgYXNzZXJ0KF9QeURpY3RfQ2hlY2tDb25zaXN0ZW5jeShkKSk7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKQEAgLTI5NDAsMTMgKzMzODcsMTMgQEAKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIAotc3RhdGljIFB5T2JqZWN0ICpkaWN0aXRlcl9pdGVybmV4dGtleShkaWN0aXRlcm9iamVjdCAqZGkpCitzdGF0aWMgUHlPYmplY3QqCitkaWN0aXRlcl9pdGVybmV4dGtleShkaWN0aXRlcm9iamVjdCAqZGkpCiB7CiAgICAgUHlPYmplY3QgKmtleTsKLSAgICBQeV9zc2l6ZV90IGksIG1hc2ssIG9mZnNldDsKKyAgICBQeV9zc2l6ZV90IGksIG47CiAgICAgUHlEaWN0S2V5c09iamVjdCAqazsKICAgICBQeURpY3RPYmplY3QgKmQgPSBkaS0+ZGlfZGljdDsKLSAgICBQeU9iamVjdCAqKnZhbHVlX3B0cjsKIAogICAgIGlmIChkID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjk2MCwyNyArMzQwNywzMCBAQAogICAgIH0KIAogICAgIGkgPSBkaS0+ZGlfcG9zOwotICAgIGlmIChpIDwgMCkKLSAgICAgICAgZ290byBmYWlsOwogICAgIGsgPSBkLT5tYV9rZXlzOworICAgIG4gPSBrLT5ka19uZW50cmllczsKICAgICBpZiAoZC0+bWFfdmFsdWVzKSB7Ci0gICAgICAgIHZhbHVlX3B0ciA9ICZkLT5tYV92YWx1ZXNbaV07Ci0gICAgICAgIG9mZnNldCA9IHNpemVvZihQeU9iamVjdCAqKTsKKyAgICAgICAgUHlPYmplY3QgKip2YWx1ZV9wdHIgPSAmZC0+bWFfdmFsdWVzW2ldOworICAgICAgICB3aGlsZSAoaSA8IG4gJiYgKnZhbHVlX3B0ciA9PSBOVUxMKSB7CisgICAgICAgICAgICB2YWx1ZV9wdHIrKzsKKyAgICAgICAgICAgIGkrKzsKKyAgICAgICAgfQorICAgICAgICBpZiAoaSA+PSBuKQorICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICBrZXkgPSBES19FTlRSSUVTKGspW2ldLm1lX2tleTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIHZhbHVlX3B0ciA9ICZrLT5ka19lbnRyaWVzW2ldLm1lX3ZhbHVlOwotICAgICAgICBvZmZzZXQgPSBzaXplb2YoUHlEaWN0S2V5RW50cnkpOwotICAgIH0KLSAgICBtYXNrID0gREtfU0laRShrKS0xOwotICAgIHdoaWxlIChpIDw9IG1hc2sgJiYgKnZhbHVlX3B0ciA9PSBOVUxMKSB7Ci0gICAgICAgIHZhbHVlX3B0ciA9IChQeU9iamVjdCAqKikoKChjaGFyICopdmFsdWVfcHRyKSArIG9mZnNldCk7Ci0gICAgICAgIGkrKzsKKyAgICAgICAgUHlEaWN0S2V5RW50cnkgKmVudHJ5X3B0ciA9ICZES19FTlRSSUVTKGspW2ldOworICAgICAgICB3aGlsZSAoaSA8IG4gJiYgZW50cnlfcHRyLT5tZV92YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBlbnRyeV9wdHIrKzsKKyAgICAgICAgICAgIGkrKzsKKyAgICAgICAgfQorICAgICAgICBpZiAoaSA+PSBuKQorICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICBrZXkgPSBlbnRyeV9wdHItPm1lX2tleTsKICAgICB9CiAgICAgZGktPmRpX3BvcyA9IGkrMTsKLSAgICBpZiAoaSA+IG1hc2spCi0gICAgICAgIGdvdG8gZmFpbDsKICAgICBkaS0+bGVuLS07Ci0gICAga2V5ID0gay0+ZGtfZW50cmllc1tpXS5tZV9rZXk7CiAgICAgUHlfSU5DUkVGKGtleSk7CiAgICAgcmV0dXJuIGtleTsKIApAQCAtMzAyMywxMiArMzQ3MywxMiBAQAogICAgIDAsCiB9OwogCi1zdGF0aWMgUHlPYmplY3QgKmRpY3RpdGVyX2l0ZXJuZXh0dmFsdWUoZGljdGl0ZXJvYmplY3QgKmRpKQorc3RhdGljIFB5T2JqZWN0ICoKK2RpY3RpdGVyX2l0ZXJuZXh0dmFsdWUoZGljdGl0ZXJvYmplY3QgKmRpKQogewogICAgIFB5T2JqZWN0ICp2YWx1ZTsKLSAgICBQeV9zc2l6ZV90IGksIG1hc2ssIG9mZnNldDsKKyAgICBQeV9zc2l6ZV90IGksIG47CiAgICAgUHlEaWN0T2JqZWN0ICpkID0gZGktPmRpX2RpY3Q7Ci0gICAgUHlPYmplY3QgKip2YWx1ZV9wdHI7CiAKICAgICBpZiAoZCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTMwNDIsMjYgKzM0OTIsMjkgQEAKICAgICB9CiAKICAgICBpID0gZGktPmRpX3BvczsKLSAgICBtYXNrID0gREtfU0laRShkLT5tYV9rZXlzKS0xOwotICAgIGlmIChpIDwgMCB8fCBpID4gbWFzaykKLSAgICAgICAgZ290byBmYWlsOworICAgIG4gPSBkLT5tYV9rZXlzLT5ka19uZW50cmllczsKICAgICBpZiAoZC0+bWFfdmFsdWVzKSB7Ci0gICAgICAgIHZhbHVlX3B0ciA9ICZkLT5tYV92YWx1ZXNbaV07Ci0gICAgICAgIG9mZnNldCA9IHNpemVvZihQeU9iamVjdCAqKTsKKyAgICAgICAgUHlPYmplY3QgKip2YWx1ZV9wdHIgPSAmZC0+bWFfdmFsdWVzW2ldOworICAgICAgICB3aGlsZSAoaSA8IG4gJiYgKnZhbHVlX3B0ciA9PSBOVUxMKSB7CisgICAgICAgICAgICB2YWx1ZV9wdHIrKzsKKyAgICAgICAgICAgIGkrKzsKKyAgICAgICAgfQorICAgICAgICBpZiAoaSA+PSBuKQorICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICB2YWx1ZSA9ICp2YWx1ZV9wdHI7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICB2YWx1ZV9wdHIgPSAmZC0+bWFfa2V5cy0+ZGtfZW50cmllc1tpXS5tZV92YWx1ZTsKLSAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5RGljdEtleUVudHJ5KTsKLSAgICB9Ci0gICAgd2hpbGUgKGkgPD0gbWFzayAmJiAqdmFsdWVfcHRyID09IE5VTEwpIHsKLSAgICAgICAgdmFsdWVfcHRyID0gKFB5T2JqZWN0ICoqKSgoKGNoYXIgKil2YWx1ZV9wdHIpICsgb2Zmc2V0KTsKLSAgICAgICAgaSsrOwotICAgICAgICBpZiAoaSA+IG1hc2spCisgICAgICAgIFB5RGljdEtleUVudHJ5ICplbnRyeV9wdHIgPSAmREtfRU5UUklFUyhkLT5tYV9rZXlzKVtpXTsKKyAgICAgICAgd2hpbGUgKGkgPCBuICYmIGVudHJ5X3B0ci0+bWVfdmFsdWUgPT0gTlVMTCkgeworICAgICAgICAgICAgZW50cnlfcHRyKys7CisgICAgICAgICAgICBpKys7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGkgPj0gbikKICAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgdmFsdWUgPSBlbnRyeV9wdHItPm1lX3ZhbHVlOwogICAgIH0KICAgICBkaS0+ZGlfcG9zID0gaSsxOwogICAgIGRpLT5sZW4tLTsKLSAgICB2YWx1ZSA9ICp2YWx1ZV9wdHI7CiAgICAgUHlfSU5DUkVGKHZhbHVlKTsKICAgICByZXR1cm4gdmFsdWU7CiAKQEAgLTMwOTIsNyArMzU0NSw3IEBACiAgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQywvKiB0cF9mbGFncyAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQywgICAgLyogdHBfZmxhZ3MgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwogICAgICh0cmF2ZXJzZXByb2MpZGljdGl0ZXJfdHJhdmVyc2UsICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCkBAIC0zMTA0LDEyICszNTU3LDEyIEBACiAgICAgMCwKIH07CiAKLXN0YXRpYyBQeU9iamVjdCAqZGljdGl0ZXJfaXRlcm5leHRpdGVtKGRpY3RpdGVyb2JqZWN0ICpkaSkKK3N0YXRpYyBQeU9iamVjdCAqCitkaWN0aXRlcl9pdGVybmV4dGl0ZW0oZGljdGl0ZXJvYmplY3QgKmRpKQogewogICAgIFB5T2JqZWN0ICprZXksICp2YWx1ZSwgKnJlc3VsdCA9IGRpLT5kaV9yZXN1bHQ7Ci0gICAgUHlfc3NpemVfdCBpLCBtYXNrLCBvZmZzZXQ7CisgICAgUHlfc3NpemVfdCBpLCBuOwogICAgIFB5RGljdE9iamVjdCAqZCA9IGRpLT5kaV9kaWN0OwotICAgIFB5T2JqZWN0ICoqdmFsdWVfcHRyOwogCiAgICAgaWYgKGQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0zMTIzLDM3ICszNTc2LDQxIEBACiAgICAgfQogCiAgICAgaSA9IGRpLT5kaV9wb3M7Ci0gICAgaWYgKGkgPCAwKQotICAgICAgICBnb3RvIGZhaWw7Ci0gICAgbWFzayA9IERLX1NJWkUoZC0+bWFfa2V5cyktMTsKKyAgICBuID0gZC0+bWFfa2V5cy0+ZGtfbmVudHJpZXM7CiAgICAgaWYgKGQtPm1hX3ZhbHVlcykgewotICAgICAgICB2YWx1ZV9wdHIgPSAmZC0+bWFfdmFsdWVzW2ldOwotICAgICAgICBvZmZzZXQgPSBzaXplb2YoUHlPYmplY3QgKik7CisgICAgICAgIFB5T2JqZWN0ICoqdmFsdWVfcHRyID0gJmQtPm1hX3ZhbHVlc1tpXTsKKyAgICAgICAgd2hpbGUgKGkgPCBuICYmICp2YWx1ZV9wdHIgPT0gTlVMTCkgeworICAgICAgICAgICAgdmFsdWVfcHRyKys7CisgICAgICAgICAgICBpKys7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGkgPj0gbikKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAga2V5ID0gREtfRU5UUklFUyhkLT5tYV9rZXlzKVtpXS5tZV9rZXk7CisgICAgICAgIHZhbHVlID0gKnZhbHVlX3B0cjsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIHZhbHVlX3B0ciA9ICZkLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX3ZhbHVlOwotICAgICAgICBvZmZzZXQgPSBzaXplb2YoUHlEaWN0S2V5RW50cnkpOwotICAgIH0KLSAgICB3aGlsZSAoaSA8PSBtYXNrICYmICp2YWx1ZV9wdHIgPT0gTlVMTCkgewotICAgICAgICB2YWx1ZV9wdHIgPSAoUHlPYmplY3QgKiopKCgoY2hhciAqKXZhbHVlX3B0cikgKyBvZmZzZXQpOwotICAgICAgICBpKys7CisgICAgICAgIFB5RGljdEtleUVudHJ5ICplbnRyeV9wdHIgPSAmREtfRU5UUklFUyhkLT5tYV9rZXlzKVtpXTsKKyAgICAgICAgd2hpbGUgKGkgPCBuICYmIGVudHJ5X3B0ci0+bWVfdmFsdWUgPT0gTlVMTCkgeworICAgICAgICAgICAgZW50cnlfcHRyKys7CisgICAgICAgICAgICBpKys7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGkgPj0gbikKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAga2V5ID0gZW50cnlfcHRyLT5tZV9rZXk7CisgICAgICAgIHZhbHVlID0gZW50cnlfcHRyLT5tZV92YWx1ZTsKICAgICB9CiAgICAgZGktPmRpX3BvcyA9IGkrMTsKLSAgICBpZiAoaSA+IG1hc2spCi0gICAgICAgIGdvdG8gZmFpbDsKLQorICAgIGRpLT5sZW4tLTsKICAgICBpZiAocmVzdWx0LT5vYl9yZWZjbnQgPT0gMSkgewogICAgICAgICBQeV9JTkNSRUYocmVzdWx0KTsKICAgICAgICAgUHlfREVDUkVGKFB5VHVwbGVfR0VUX0lURU0ocmVzdWx0LCAwKSk7CiAgICAgICAgIFB5X0RFQ1JFRihQeVR1cGxlX0dFVF9JVEVNKHJlc3VsdCwgMSkpOwotICAgIH0gZWxzZSB7CisgICAgfQorICAgIGVsc2UgewogICAgICAgICByZXN1bHQgPSBQeVR1cGxlX05ldygyKTsKICAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGRpLT5sZW4tLTsKLSAgICBrZXkgPSBkLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX2tleTsKLSAgICB2YWx1ZSA9ICp2YWx1ZV9wdHI7CiAgICAgUHlfSU5DUkVGKGtleSk7CiAgICAgUHlfSU5DUkVGKHZhbHVlKTsKICAgICBQeVR1cGxlX1NFVF9JVEVNKHJlc3VsdCwgMCwga2V5KTsgIC8qIHN0ZWFscyByZWZlcmVuY2UgKi8KQEAgLTM3OTIsNyArNDI0OSw3IEBACiBQeURpY3RLZXlzT2JqZWN0ICoKIF9QeURpY3RfTmV3S2V5c0ZvckNsYXNzKHZvaWQpCiB7Ci0gICAgUHlEaWN0S2V5c09iamVjdCAqa2V5cyA9IG5ld19rZXlzX29iamVjdChQeURpY3RfTUlOU0laRV9TUExJVCk7CisgICAgUHlEaWN0S2V5c09iamVjdCAqa2V5cyA9IG5ld19rZXlzX29iamVjdChQeURpY3RfTUlOU0laRSk7CiAgICAgaWYgKGtleXMgPT0gTlVMTCkKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICBlbHNlCkBAIC0zODI4LDcgKzQyODUsNyBAQAogCiBpbnQKIF9QeU9iamVjdERpY3RfU2V0SXRlbShQeVR5cGVPYmplY3QgKnRwLCBQeU9iamVjdCAqKmRpY3RwdHIsCi0gICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqa2V5LCBQeU9iamVjdCAqdmFsdWUpCisgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKnZhbHVlKQogewogICAgIFB5T2JqZWN0ICpkaWN0OwogICAgIGludCByZXM7CkBAIC0zODU1LDE1ICs0MzEyLDI1IEBACiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgaW50IHdhc19zaGFyZWQgPSBjYWNoZWQgPT0gKChQeURpY3RPYmplY3QgKilkaWN0KS0+bWFfa2V5czsKICAgICAgICAgICAgIHJlcyA9IFB5RGljdF9TZXRJdGVtKGRpY3QsIGtleSwgdmFsdWUpOwotICAgICAgICAgICAgLyogUHlEaWN0X1NldEl0ZW0oKSBtYXkgY2FsbCBkaWN0cmVzaXplKCkgYW5kIGNvbnZlcnQgc3BsaXQgdGFibGUKLSAgICAgICAgICAgICAqIGludG8gY29tYmluZWQgdGFibGUuICBJbiBzdWNoIGNhc2UsIGNvbnZlcnQgaXQgdG8gc3BsaXQKLSAgICAgICAgICAgICAqIHRhYmxlIGFnYWluIGFuZCB1cGRhdGUgdHlwZSdzIHNoYXJlZCBrZXkgb25seSB3aGVuIHRoaXMgaXMKLSAgICAgICAgICAgICAqIHRoZSBvbmx5IGRpY3Qgc2hhcmluZyBrZXkgd2l0aCB0aGUgdHlwZS4KLSAgICAgICAgICAgICAqLwogICAgICAgICAgICAgaWYgKHdhc19zaGFyZWQgJiYgY2FjaGVkICE9ICgoUHlEaWN0T2JqZWN0ICopZGljdCktPm1hX2tleXMpIHsKKyAgICAgICAgICAgICAgICAvKiBQeURpY3RfU2V0SXRlbSgpIG1heSBjYWxsIGRpY3RyZXNpemUgYW5kIGNvbnZlcnQgc3BsaXQgdGFibGUKKyAgICAgICAgICAgICAgICAgKiBpbnRvIGNvbWJpbmVkIHRhYmxlLiAgSW4gc3VjaCBjYXNlLCBjb252ZXJ0IGl0IHRvIHNwbGl0CisgICAgICAgICAgICAgICAgICogdGFibGUgYWdhaW4gYW5kIHVwZGF0ZSB0eXBlJ3Mgc2hhcmVkIGtleSBvbmx5IHdoZW4gdGhpcyBpcworICAgICAgICAgICAgICAgICAqIHRoZSBvbmx5IGRpY3Qgc2hhcmluZyBrZXkgd2l0aCB0aGUgdHlwZS4KKyAgICAgICAgICAgICAgICAgKgorICAgICAgICAgICAgICAgICAqIFRoaXMgaXMgdG8gYWxsb3cgdXNpbmcgc2hhcmVkIGtleSBpbiBjbGFzcyBsaWtlIHRoaXM6CisgICAgICAgICAgICAgICAgICoKKyAgICAgICAgICAgICAgICAgKiAgICAgY2xhc3MgQzoKKyAgICAgICAgICAgICAgICAgKiAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICAgKiAgICAgICAgICAgICAjIG9uZSBkaWN0IHJlc2l6ZSBoYXBwZW5zCisgICAgICAgICAgICAgICAgICogICAgICAgICAgICAgc2VsZi5hLCBzZWxmLmIsIHNlbGYuYyA9IDEsIDIsIDMKKyAgICAgICAgICAgICAgICAgKiAgICAgICAgICAgICBzZWxmLmQsIHNlbGYuZSwgc2VsZi5mID0gNCwgNSwgNgorICAgICAgICAgICAgICAgICAqICAgICBhID0gQygpCisgICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgICAgaWYgKGNhY2hlZC0+ZGtfcmVmY250ID09IDEpIHsKICAgICAgICAgICAgICAgICAgICAgQ0FDSEVEX0tFWVModHApID0gbWFrZV9rZXlzX3NoYXJlZChkaWN0KTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgQ0FDSEVEX0tFWVModHApID0gTlVMTDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgREtfREVDUkVGKGNhY2hlZCk7CkBAIC0zODkzLDUwICs0MzYwLDMgQEAKIHsKICAgICBES19ERUNSRUYoa2V5cyk7CiB9Ci0KLQotLyogQVJHU1VTRUQgKi8KLXN0YXRpYyBQeU9iamVjdCAqCi1kdW1teV9yZXByKFB5T2JqZWN0ICpvcCkKLXsKLSAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoIjxkdW1teSBrZXk+Iik7Ci19Ci0KLS8qIEFSR1VTRUQgKi8KLXN0YXRpYyB2b2lkCi1kdW1teV9kZWFsbG9jKFB5T2JqZWN0KiBpZ25vcmUpCi17Ci0gICAgLyogVGhpcyBzaG91bGQgbmV2ZXIgZ2V0IGNhbGxlZCwgYnV0IHdlIGFsc28gZG9uJ3Qgd2FudCB0byBTRUdWIGlmCi0gICAgICogd2UgYWNjaWRlbnRhbGx5IGRlY3JlZiBkdW1teS1rZXkgb3V0IG9mIGV4aXN0ZW5jZS4KLSAgICAgKi8KLSAgICBQeV9GYXRhbEVycm9yKCJkZWFsbG9jYXRpbmcgPGR1bW15IGtleT4iKTsKLX0KLQotc3RhdGljIFB5VHlwZU9iamVjdCBQeURpY3REdW1teV9UeXBlID0gewotICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCi0gICAgIjxkdW1teSBrZXk+IHR5cGUiLAotICAgIDAsCi0gICAgMCwKLSAgICBkdW1teV9kZWFsbG9jLCAgICAgIC8qdHBfZGVhbGxvYyovIC8qbmV2ZXIgY2FsbGVkKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfcHJpbnQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3Jlc2VydmVkKi8KLSAgICBkdW1teV9yZXByLCAgICAgICAgIC8qdHBfcmVwciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2FzX251bWJlciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2FzX3NlcXVlbmNlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbWFwcGluZyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2hhc2ggKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfY2FsbCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9zdHIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0cm8gKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0cm8gKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfYXNfYnVmZmVyICovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxULCAvKnRwX2ZsYWdzICovCi19OwotCi1zdGF0aWMgUHlPYmplY3QgX2R1bW15X3N0cnVjdCA9IHsKLSAgX1B5T2JqZWN0X0VYVFJBX0lOSVQKLSAgMiwgJlB5RGljdER1bW15X1R5cGUKLX07Ci0KZGlmZiAtLWdpdCBhL09iamVjdHMvZW51bW9iamVjdC5jIGIvT2JqZWN0cy9lbnVtb2JqZWN0LmMKaW5kZXggYzQ1OGNmZS4uZGFlMTY2ZCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9lbnVtb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9lbnVtb2JqZWN0LmMKQEAgLTI1MCw2ICsyNTAsMTMgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICByZXZlcnNlZF9tZXRoID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwoc2VxLCAmUHlJZF9fX3JldmVyc2VkX18pOworICAgIGlmIChyZXZlcnNlZF9tZXRoID09IFB5X05vbmUpIHsKKyAgICAgICAgUHlfREVDUkVGKHJldmVyc2VkX21ldGgpOworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIiclLjIwMHMnIG9iamVjdCBpcyBub3QgcmV2ZXJzaWJsZSIsCisgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHNlcSktPnRwX25hbWUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgaWYgKHJldmVyc2VkX21ldGggIT0gTlVMTCkgewogICAgICAgICBQeU9iamVjdCAqcmVzID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhyZXZlcnNlZF9tZXRoLCBOVUxMKTsKICAgICAgICAgUHlfREVDUkVGKHJldmVyc2VkX21ldGgpOwpAQCAtMjU5LDggKzI2Niw5IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKCFQeVNlcXVlbmNlX0NoZWNrKHNlcSkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCB0byByZXZlcnNlZCgpIG11c3QgYmUgYSBzZXF1ZW5jZSIpOworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIiclLjIwMHMnIG9iamVjdCBpcyBub3QgcmV2ZXJzaWJsZSIsCisgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHNlcSktPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL09iamVjdHMvZXhjZXB0aW9ucy5jIGIvT2JqZWN0cy9leGNlcHRpb25zLmMKaW5kZXggOTgxZWFkMi4uZjYzZjA2YSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9leGNlcHRpb25zLmMKKysrIGIvT2JqZWN0cy9leGNlcHRpb25zLmMKQEAgLTU5LDE1ICs1OSwxMSBAQAogc3RhdGljIGludAogQmFzZUV4Y2VwdGlvbl9pbml0KFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIFB5T2JqZWN0ICp0bXA7Ci0KICAgICBpZiAoIV9QeUFyZ19Ob0tleXdvcmRzKFB5X1RZUEUoc2VsZiktPnRwX25hbWUsIGt3ZHMpKQogICAgICAgICByZXR1cm4gLTE7CiAKLSAgICB0bXAgPSBzZWxmLT5hcmdzOwotICAgIHNlbGYtPmFyZ3MgPSBhcmdzOwotICAgIFB5X0lOQ1JFRihzZWxmLT5hcmdzKTsKLSAgICBQeV9YREVDUkVGKHRtcCk7CisgICAgUHlfSU5DUkVGKGFyZ3MpOworICAgIFB5X1hTRVRSRUYoc2VsZi0+YXJncywgYXJncyk7CiAKICAgICByZXR1cm4gMDsKIH0KQEAgLTIzNCw3ICsyMzAsNyBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgUHlfWElOQ1JFRih0Yik7CisgICAgUHlfSU5DUkVGKHRiKTsKICAgICBQeV9YU0VUUkVGKHNlbGYtPnRyYWNlYmFjaywgdGIpOwogICAgIHJldHVybiAwOwogfQpAQCAtMzI4LDExICszMjQsMTAgQEAKIAogLyogU3RlYWxzIGEgcmVmZXJlbmNlIHRvIGNhdXNlICovCiB2b2lkCi1QeUV4Y2VwdGlvbl9TZXRDYXVzZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmNhdXNlKSB7Ci0gICAgUHlPYmplY3QgKm9sZF9jYXVzZSA9ICgoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICopc2VsZiktPmNhdXNlOwotICAgICgoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICopc2VsZiktPmNhdXNlID0gY2F1c2U7CitQeUV4Y2VwdGlvbl9TZXRDYXVzZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmNhdXNlKQorewogICAgICgoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICopc2VsZiktPnN1cHByZXNzX2NvbnRleHQgPSAxOwotICAgIFB5X1hERUNSRUYob2xkX2NhdXNlKTsKKyAgICBQeV9YU0VUUkVGKCgoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICopc2VsZiktPmNhdXNlLCBjYXVzZSk7CiB9CiAKIFB5T2JqZWN0ICoKQEAgLTM0NCwxMCArMzM5LDkgQEAKIAogLyogU3RlYWxzIGEgcmVmZXJlbmNlIHRvIGNvbnRleHQgKi8KIHZvaWQKLVB5RXhjZXB0aW9uX1NldENvbnRleHQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpjb250ZXh0KSB7Ci0gICAgUHlPYmplY3QgKm9sZF9jb250ZXh0ID0gKChQeUJhc2VFeGNlcHRpb25PYmplY3QgKilzZWxmKS0+Y29udGV4dDsKLSAgICAoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYpLT5jb250ZXh0ID0gY29udGV4dDsKLSAgICBQeV9YREVDUkVGKG9sZF9jb250ZXh0KTsKK1B5RXhjZXB0aW9uX1NldENvbnRleHQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpjb250ZXh0KQoreworICAgIFB5X1hTRVRSRUYoKChQeUJhc2VFeGNlcHRpb25PYmplY3QgKilzZWxmKS0+Y29udGV4dCwgY29udGV4dCk7CiB9CiAKIApAQCAtNzE0LDYgKzcwOCwxMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIm1vZHVsZS4iKTsKIAogLyoKKyAqICAgIE1vZHVsZU5vdEZvdW5kRXJyb3IgZXh0ZW5kcyBJbXBvcnRFcnJvcgorICovCisKK01pZGRsaW5nRXh0ZW5kc0V4Y2VwdGlvbihQeUV4Y19JbXBvcnRFcnJvciwgTW9kdWxlTm90Rm91bmRFcnJvciwgSW1wb3J0RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIk1vZHVsZSBub3QgZm91bmQuIik7CisKKy8qCiAgKiAgICBPU0Vycm9yIGV4dGVuZHMgRXhjZXB0aW9uCiAgKi8KIApAQCAtOTkzLDcgKzk5NCw3IEBACiAgICAgcmV0dXJuIDA7CiAKIGVycm9yOgotICAgIFB5X1hERUNSRUYoYXJncyk7CisgICAgUHlfREVDUkVGKGFyZ3MpOwogICAgIHJldHVybiAtMTsKIH0KIApAQCAtMTA3Myw4ICsxMDc0LDcgQEAKICAgICB9CiAgICAgaWYgKHNlbGYtPm15ZXJybm8gJiYgc2VsZi0+c3RyZXJyb3IpCiAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiW0Vycm5vICVTXSAlUyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5teWVycm5vID8gc2VsZi0+bXllcnJubzogUHlfTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPnN0cmVycm9yID8gc2VsZi0+c3RyZXJyb3I6IFB5X05vbmUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+bXllcnJubywgc2VsZi0+c3RyZXJyb3IpOwogICAgIHJldHVybiBCYXNlRXhjZXB0aW9uX3N0cigoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICopc2VsZik7CiB9CiAKQEAgLTI0NzgsNiArMjQ3OCw3IEBACiAgICAgUFJFX0lOSVQoU3lzdGVtRXhpdCkKICAgICBQUkVfSU5JVChLZXlib2FyZEludGVycnVwdCkKICAgICBQUkVfSU5JVChJbXBvcnRFcnJvcikKKyAgICBQUkVfSU5JVChNb2R1bGVOb3RGb3VuZEVycm9yKQogICAgIFBSRV9JTklUKE9TRXJyb3IpCiAgICAgUFJFX0lOSVQoRU9GRXJyb3IpCiAgICAgUFJFX0lOSVQoUnVudGltZUVycm9yKQpAQCAtMjU1MCw2ICsyNTUxLDcgQEAKICAgICBQT1NUX0lOSVQoU3lzdGVtRXhpdCkKICAgICBQT1NUX0lOSVQoS2V5Ym9hcmRJbnRlcnJ1cHQpCiAgICAgUE9TVF9JTklUKEltcG9ydEVycm9yKQorICAgIFBPU1RfSU5JVChNb2R1bGVOb3RGb3VuZEVycm9yKQogICAgIFBPU1RfSU5JVChPU0Vycm9yKQogICAgIElOSVRfQUxJQVMoRW52aXJvbm1lbnRFcnJvciwgT1NFcnJvcikKICAgICBJTklUX0FMSUFTKElPRXJyb3IsIE9TRXJyb3IpCkBAIC0yNjEyLDcgKzI2MTQsOSBAQAogICAgIEFERF9FUlJOTyhCbG9ja2luZ0lPRXJyb3IsIEVXT1VMREJMT0NLKTsKICAgICBQT1NUX0lOSVQoQnJva2VuUGlwZUVycm9yKTsKICAgICBBRERfRVJSTk8oQnJva2VuUGlwZUVycm9yLCBFUElQRSk7CisjaWZkZWYgRVNIVVRET1dOCiAgICAgQUREX0VSUk5PKEJyb2tlblBpcGVFcnJvciwgRVNIVVRET1dOKTsKKyNlbmRpZgogICAgIFBPU1RfSU5JVChDaGlsZFByb2Nlc3NFcnJvcik7CiAgICAgQUREX0VSUk5PKENoaWxkUHJvY2Vzc0Vycm9yLCBFQ0hJTEQpOwogICAgIFBPU1RfSU5JVChDb25uZWN0aW9uQWJvcnRlZEVycm9yKTsKZGlmZiAtLWdpdCBhL09iamVjdHMvZmlsZW9iamVjdC5jIGIvT2JqZWN0cy9maWxlb2JqZWN0LmMKaW5kZXggMjM0ZDA3ZS4uZjQ0MjQxOCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9maWxlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9maWxlb2JqZWN0LmMKQEAgLTEyNyw3ICsxMjcsNyBAQAogaW50CiBQeUZpbGVfV3JpdGVPYmplY3QoUHlPYmplY3QgKnYsIFB5T2JqZWN0ICpmLCBpbnQgZmxhZ3MpCiB7Ci0gICAgUHlPYmplY3QgKndyaXRlciwgKnZhbHVlLCAqYXJncywgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqd3JpdGVyLCAqdmFsdWUsICpyZXN1bHQ7CiAgICAgX1B5X0lERU5USUZJRVIod3JpdGUpOwogCiAgICAgaWYgKGYgPT0gTlVMTCkgewpAQCAtMTQ2LDE0ICsxNDYsNyBAQAogICAgICAgICBQeV9ERUNSRUYod3JpdGVyKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBhcmdzID0gUHlUdXBsZV9QYWNrKDEsIHZhbHVlKTsKLSAgICBpZiAoYXJncyA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0gICAgICAgIFB5X0RFQ1JFRih3cml0ZXIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIHJlc3VsdCA9IFB5RXZhbF9DYWxsT2JqZWN0KHdyaXRlciwgYXJncyk7Ci0gICAgUHlfREVDUkVGKGFyZ3MpOworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsQXJnMSh3cml0ZXIsIHZhbHVlKTsKICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgIFB5X0RFQ1JFRih3cml0ZXIpOwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKZGlmZiAtLWdpdCBhL09iamVjdHMvZmxvYXRvYmplY3QuYyBiL09iamVjdHMvZmxvYXRvYmplY3QuYwppbmRleCBkOTJiZWMzLi44MGJmNzFlIDEwMDY0NAotLS0gYS9PYmplY3RzL2Zsb2F0b2JqZWN0LmMKKysrIGIvT2JqZWN0cy9mbG9hdG9iamVjdC5jCkBAIC0xMjQsMTEgKzEyNCw0MyBAQAogICAgIHJldHVybiAoUHlPYmplY3QgKikgb3A7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitmbG9hdF9mcm9tX3N0cmluZ19pbm5lcihjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IGxlbiwgdm9pZCAqb2JqKQoreworICAgIGRvdWJsZSB4OworICAgIGNvbnN0IGNoYXIgKmVuZDsKKyAgICBjb25zdCBjaGFyICpsYXN0ID0gcyArIGxlbjsKKyAgICAvKiBzdHJpcCBzcGFjZSAqLworICAgIHdoaWxlIChzIDwgbGFzdCAmJiBQeV9JU1NQQUNFKCpzKSkgeworICAgICAgICBzKys7CisgICAgfQorCisgICAgd2hpbGUgKHMgPCBsYXN0IC0gMSAmJiBQeV9JU1NQQUNFKGxhc3RbLTFdKSkgeworICAgICAgICBsYXN0LS07CisgICAgfQorCisgICAgLyogV2UgZG9uJ3QgY2FyZSBhYm91dCBvdmVyZmxvdyBvciB1bmRlcmZsb3cuICBJZiB0aGUgcGxhdGZvcm0KKyAgICAgKiBzdXBwb3J0cyB0aGVtLCBpbmZpbml0aWVzIGFuZCBzaWduZWQgemVyb2VzIChvbiB1bmRlcmZsb3cpIGFyZQorICAgICAqIGZpbmUuICovCisgICAgeCA9IFB5T1Nfc3RyaW5nX3RvX2RvdWJsZShzLCAoY2hhciAqKikmZW5kLCBOVUxMKTsKKyAgICBpZiAoZW5kICE9IGxhc3QpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiY291bGQgbm90IGNvbnZlcnQgc3RyaW5nIHRvIGZsb2F0OiAiCisgICAgICAgICAgICAgICAgICAgICAiJVIiLCBvYmopOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZWxzZSBpZiAoeCA9PSAtMS4wICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHgpOworICAgIH0KK30KKwogUHlPYmplY3QgKgogUHlGbG9hdF9Gcm9tU3RyaW5nKFB5T2JqZWN0ICp2KQogewotICAgIGNvbnN0IGNoYXIgKnMsICpsYXN0LCAqZW5kOwotICAgIGRvdWJsZSB4OworICAgIGNvbnN0IGNoYXIgKnM7CiAgICAgUHlPYmplY3QgKnNfYnVmZmVyID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICBQeV9idWZmZXIgdmlldyA9IHtOVUxMLCBOVUxMfTsKQEAgLTE2OSwyNyArMjAxLDggQEAKICAgICAgICAgICAgIFB5X1RZUEUodiktPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgbGFzdCA9IHMgKyBsZW47Ci0gICAgLyogc3RyaXAgc3BhY2UgKi8KLSAgICB3aGlsZSAocyA8IGxhc3QgJiYgUHlfSVNTUEFDRSgqcykpCi0gICAgICAgIHMrKzsKLSAgICB3aGlsZSAocyA8IGxhc3QgLSAxICYmIFB5X0lTU1BBQ0UobGFzdFstMV0pKQotICAgICAgICBsYXN0LS07Ci0gICAgLyogV2UgZG9uJ3QgY2FyZSBhYm91dCBvdmVyZmxvdyBvciB1bmRlcmZsb3cuICBJZiB0aGUgcGxhdGZvcm0KLSAgICAgKiBzdXBwb3J0cyB0aGVtLCBpbmZpbml0aWVzIGFuZCBzaWduZWQgemVyb2VzIChvbiB1bmRlcmZsb3cpIGFyZQotICAgICAqIGZpbmUuICovCi0gICAgeCA9IFB5T1Nfc3RyaW5nX3RvX2RvdWJsZShzLCAoY2hhciAqKikmZW5kLCBOVUxMKTsKLSAgICBpZiAoZW5kICE9IGxhc3QpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiY291bGQgbm90IGNvbnZlcnQgc3RyaW5nIHRvIGZsb2F0OiAiCi0gICAgICAgICAgICAgICAgICAgICAiJVIiLCB2KTsKLSAgICAgICAgcmVzdWx0ID0gTlVMTDsKLSAgICB9Ci0gICAgZWxzZSBpZiAoeCA9PSAtMS4wICYmIFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIHJlc3VsdCA9IE5VTEw7Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQgPSBQeUZsb2F0X0Zyb21Eb3VibGUoeCk7Ci0KKyAgICByZXN1bHQgPSBfUHlfc3RyaW5nX3RvX251bWJlcl93aXRoX3VuZGVyc2NvcmVzKHMsIGxlbiwgImZsb2F0IiwgdiwgdiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0X2Zyb21fc3RyaW5nX2lubmVyKTsKICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2aWV3KTsKICAgICBQeV9YREVDUkVGKHNfYnVmZmVyKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMjE1LDM1ICsyMjgsNDkgQEAKIFB5RmxvYXRfQXNEb3VibGUoUHlPYmplY3QgKm9wKQogewogICAgIFB5TnVtYmVyTWV0aG9kcyAqbmI7Ci0gICAgUHlGbG9hdE9iamVjdCAqZm87CisgICAgUHlPYmplY3QgKnJlczsKICAgICBkb3VibGUgdmFsOwogCi0gICAgaWYgKG9wICYmIFB5RmxvYXRfQ2hlY2sob3ApKQotICAgICAgICByZXR1cm4gUHlGbG9hdF9BU19ET1VCTEUoKFB5RmxvYXRPYmplY3QqKSBvcCk7Ci0KICAgICBpZiAob3AgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgaWYgKChuYiA9IFB5X1RZUEUob3ApLT50cF9hc19udW1iZXIpID09IE5VTEwgfHwgbmItPm5iX2Zsb2F0ID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImEgZmxvYXQgaXMgcmVxdWlyZWQiKTsKKyAgICBpZiAoUHlGbG9hdF9DaGVjayhvcCkpIHsKKyAgICAgICAgcmV0dXJuIFB5RmxvYXRfQVNfRE9VQkxFKG9wKTsKKyAgICB9CisKKyAgICBuYiA9IFB5X1RZUEUob3ApLT50cF9hc19udW1iZXI7CisgICAgaWYgKG5iID09IE5VTEwgfHwgbmItPm5iX2Zsb2F0ID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIm11c3QgYmUgcmVhbCBudW1iZXIsIG5vdCAlLjUwcyIsCisgICAgICAgICAgICAgICAgICAgICBvcC0+b2JfdHlwZS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICBmbyA9IChQeUZsb2F0T2JqZWN0KikgKCpuYi0+bmJfZmxvYXQpIChvcCk7Ci0gICAgaWYgKGZvID09IE5VTEwpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICBpZiAoIVB5RmxvYXRfQ2hlY2soZm8pKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihmbyk7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAibmJfZmxvYXQgc2hvdWxkIHJldHVybiBmbG9hdCBvYmplY3QiKTsKKyAgICByZXMgPSAoKm5iLT5uYl9mbG9hdCkgKG9wKTsKKyAgICBpZiAocmVzID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KKyAgICBpZiAoIVB5RmxvYXRfQ2hlY2tFeGFjdChyZXMpKSB7CisgICAgICAgIGlmICghUHlGbG9hdF9DaGVjayhyZXMpKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICIlLjUwcy5fX2Zsb2F0X18gcmV0dXJuZWQgbm9uLWZsb2F0ICh0eXBlICUuNTBzKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgb3AtPm9iX3R5cGUtPnRwX25hbWUsIHJlcy0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBpZiAoUHlFcnJfV2FybkZvcm1hdChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsIDEsCisgICAgICAgICAgICAgICAgIiUuNTBzLl9fZmxvYXRfXyByZXR1cm5lZCBub24tZmxvYXQgKHR5cGUgJS41MHMpLiAgIgorICAgICAgICAgICAgICAgICJUaGUgYWJpbGl0eSB0byByZXR1cm4gYW4gaW5zdGFuY2Ugb2YgYSBzdHJpY3Qgc3ViY2xhc3Mgb2YgZmxvYXQgIgorICAgICAgICAgICAgICAgICJpcyBkZXByZWNhdGVkLCBhbmQgbWF5IGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbiBvZiBQeXRob24uIiwKKyAgICAgICAgICAgICAgICBvcC0+b2JfdHlwZS0+dHBfbmFtZSwgcmVzLT5vYl90eXBlLT50cF9uYW1lKSkgeworICAgICAgICAgICAgUHlfREVDUkVGKHJlcyk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9CiAKLSAgICB2YWwgPSBQeUZsb2F0X0FTX0RPVUJMRShmbyk7Ci0gICAgUHlfREVDUkVGKGZvKTsKLQorICAgIHZhbCA9IFB5RmxvYXRfQVNfRE9VQkxFKHJlcyk7CisgICAgUHlfREVDUkVGKHJlcyk7CiAgICAgcmV0dXJuIHZhbDsKIH0KIApAQCAtMTE5NSw3ICsxMjIyLDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBmbG9hdF9mcm9taGV4KFB5T2JqZWN0ICpjbHMsIFB5T2JqZWN0ICphcmcpCiB7Ci0gICAgUHlPYmplY3QgKnJlc3VsdF9hc19mbG9hdCwgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIGRvdWJsZSB4OwogICAgIGxvbmcgZXhwLCB0b3BfZXhwLCBsc2IsIGtleV9kaWdpdDsKICAgICBjaGFyICpzLCAqY29lZmZfc3RhcnQsICpzX3N0b3JlLCAqY29lZmZfZW5kLCAqZXhwX3N0YXJ0LCAqc19lbmQ7CkBAIC0xMjQ3LDcgKzEyNzQsNyBAQAogICAgICAqIGV4cCs0Km5kaWdpdHMgYW5kIGV4cC00Km5kaWdpdHMgYXJlIHdpdGhpbiB0aGUgcmFuZ2Ugb2YgYSBsb25nLgogICAgICAqLwogCi0gICAgcyA9IF9QeVVuaWNvZGVfQXNTdHJpbmdBbmRTaXplKGFyZywgJmxlbmd0aCk7CisgICAgcyA9IFB5VW5pY29kZV9Bc1VURjhBbmRTaXplKGFyZywgJmxlbmd0aCk7CiAgICAgaWYgKHMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgc19lbmQgPSBzICsgbGVuZ3RoOwpAQCAtMTQxMCwxMSArMTQzNywxMCBAQAogICAgICAgICBzKys7CiAgICAgaWYgKHMgIT0gc19lbmQpCiAgICAgICAgIGdvdG8gcGFyc2VfZXJyb3I7Ci0gICAgcmVzdWx0X2FzX2Zsb2F0ID0gUHlfQnVpbGRWYWx1ZSgiKGQpIiwgbmVnYXRlID8gLXggOiB4KTsKLSAgICBpZiAocmVzdWx0X2FzX2Zsb2F0ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxPYmplY3QoY2xzLCByZXN1bHRfYXNfZmxvYXQpOwotICAgIFB5X0RFQ1JFRihyZXN1bHRfYXNfZmxvYXQpOworICAgIHJlc3VsdCA9IFB5RmxvYXRfRnJvbURvdWJsZShuZWdhdGUgPyAteCA6IHgpOworICAgIGlmIChjbHMgIT0gKFB5T2JqZWN0ICopJlB5RmxvYXRfVHlwZSAmJiByZXN1bHQgIT0gTlVMTCkgeworICAgICAgICBQeV9TRVRSRUYocmVzdWx0LCBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGNscywgcmVzdWx0LCBOVUxMKSk7CisgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiAKICAgb3ZlcmZsb3dfZXJyb3I6CkBAIC0xNDUxLDI5ICsxNDc3LDIzIEBACiAgICAgaW50IGV4cG9uZW50OwogICAgIGludCBpOwogCi0gICAgUHlPYmplY3QgKnByZXY7CiAgICAgUHlPYmplY3QgKnB5X2V4cG9uZW50ID0gTlVMTDsKICAgICBQeU9iamVjdCAqbnVtZXJhdG9yID0gTlVMTDsKICAgICBQeU9iamVjdCAqZGVub21pbmF0b3IgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpyZXN1bHRfcGFpciA9IE5VTEw7CiAgICAgUHlOdW1iZXJNZXRob2RzICpsb25nX21ldGhvZHMgPSBQeUxvbmdfVHlwZS50cF9hc19udW1iZXI7CiAKLSNkZWZpbmUgSU5QTEFDRV9VUERBVEUob2JqLCBjYWxsKSBcCi0gICAgcHJldiA9IG9iajsgXAotICAgIG9iaiA9IGNhbGw7IFwKLSAgICBQeV9ERUNSRUYocHJldik7IFwKLQogICAgIENPTlZFUlRfVE9fRE9VQkxFKHYsIHNlbGYpOwogCiAgICAgaWYgKFB5X0lTX0lORklOSVRZKHNlbGYpKSB7Ci0gICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHBhc3MgaW5maW5pdHkgdG8gZmxvYXQuYXNfaW50ZWdlcl9yYXRpby4iKTsKLSAgICAgIHJldHVybiBOVUxMOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgY29udmVydCBJbmZpbml0eSB0byBpbnRlZ2VyIHJhdGlvIik7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBpZiAoUHlfSVNfTkFOKHNlbGYpKSB7Ci0gICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHBhc3MgTmFOIHRvIGZsb2F0LmFzX2ludGVnZXJfcmF0aW8uIik7Ci0gICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiY2Fubm90IGNvbnZlcnQgTmFOIHRvIGludGVnZXIgcmF0aW8iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgUHlGUEVfU1RBUlRfUFJPVEVDVCgiYXNfaW50ZWdlcl9yYXRpbyIsIGdvdG8gZXJyb3IpOwpAQCAtMTQ4OSwyOSArMTUwOSwzMSBAQAogICAgICAgIHRvIGJlIHRydW5jYXRlZCBieSBQeUxvbmdfRnJvbURvdWJsZSgpLiAqLwogCiAgICAgbnVtZXJhdG9yID0gUHlMb25nX0Zyb21Eb3VibGUoZmxvYXRfcGFydCk7Ci0gICAgaWYgKG51bWVyYXRvciA9PSBOVUxMKSBnb3RvIGVycm9yOworICAgIGlmIChudW1lcmF0b3IgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBkZW5vbWluYXRvciA9IFB5TG9uZ19Gcm9tTG9uZygxKTsKKyAgICBpZiAoZGVub21pbmF0b3IgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBweV9leHBvbmVudCA9IFB5TG9uZ19Gcm9tTG9uZyhQeV9BQlMoZXhwb25lbnQpKTsKKyAgICBpZiAocHlfZXhwb25lbnQgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKIAogICAgIC8qIGZvbGQgaW4gMioqZXhwb25lbnQgKi8KLSAgICBkZW5vbWluYXRvciA9IFB5TG9uZ19Gcm9tTG9uZygxKTsKLSAgICBweV9leHBvbmVudCA9IFB5TG9uZ19Gcm9tTG9uZyhsYWJzKChsb25nKWV4cG9uZW50KSk7Ci0gICAgaWYgKHB5X2V4cG9uZW50ID09IE5VTEwpIGdvdG8gZXJyb3I7Ci0gICAgSU5QTEFDRV9VUERBVEUocHlfZXhwb25lbnQsCi0gICAgICAgICAgICAgICAgICAgbG9uZ19tZXRob2RzLT5uYl9sc2hpZnQoZGVub21pbmF0b3IsIHB5X2V4cG9uZW50KSk7Ci0gICAgaWYgKHB5X2V4cG9uZW50ID09IE5VTEwpIGdvdG8gZXJyb3I7CiAgICAgaWYgKGV4cG9uZW50ID4gMCkgewotICAgICAgICBJTlBMQUNFX1VQREFURShudW1lcmF0b3IsCi0gICAgICAgICAgICAgICAgICAgICAgIGxvbmdfbWV0aG9kcy0+bmJfbXVsdGlwbHkobnVtZXJhdG9yLCBweV9leHBvbmVudCkpOwotICAgICAgICBpZiAobnVtZXJhdG9yID09IE5VTEwpIGdvdG8gZXJyb3I7CisgICAgICAgIFB5X1NFVFJFRihudW1lcmF0b3IsCisgICAgICAgICAgICAgICAgICBsb25nX21ldGhvZHMtPm5iX2xzaGlmdChudW1lcmF0b3IsIHB5X2V4cG9uZW50KSk7CisgICAgICAgIGlmIChudW1lcmF0b3IgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBQeV9ERUNSRUYoZGVub21pbmF0b3IpOwotICAgICAgICBkZW5vbWluYXRvciA9IHB5X2V4cG9uZW50OwotICAgICAgICBweV9leHBvbmVudCA9IE5VTEw7CisgICAgICAgIFB5X1NFVFJFRihkZW5vbWluYXRvciwKKyAgICAgICAgICAgICAgICAgIGxvbmdfbWV0aG9kcy0+bmJfbHNoaWZ0KGRlbm9taW5hdG9yLCBweV9leHBvbmVudCkpOworICAgICAgICBpZiAoZGVub21pbmF0b3IgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogCiAgICAgcmVzdWx0X3BhaXIgPSBQeVR1cGxlX1BhY2soMiwgbnVtZXJhdG9yLCBkZW5vbWluYXRvcik7CiAKLSN1bmRlZiBJTlBMQUNFX1VQREFURQogZXJyb3I6CiAgICAgUHlfWERFQ1JFRihweV9leHBvbmVudCk7CiAgICAgUHlfWERFQ1JFRihkZW5vbWluYXRvcik7CkBAIC0xNjA2LDcgKzE2MjgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoYXJnKS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBzID0gX1B5VW5pY29kZV9Bc1N0cmluZyhhcmcpOworICAgIHMgPSBQeVVuaWNvZGVfQXNVVEY4KGFyZyk7CiAgICAgaWYgKHMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKHN0cmNtcChzLCAiZG91YmxlIikgPT0gMCkgewpAQCAtMTk2Niw4ICsxOTg4LDEyMCBAQAogCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogX1B5RmxvYXRfe1BhY2ssVW5wYWNrfXs0LDh9LiAgU2VlIGZsb2F0b2JqZWN0LmguCisgKiBfUHlGbG9hdF97UGFjayxVbnBhY2t9ezIsNCw4fS4gIFNlZSBmbG9hdG9iamVjdC5oLgorICogVG8gbWF0Y2ggdGhlIE5QWV9IQUxGX1JPVU5EX1RJRVNfVE9fRVZFTiBiZWhhdmlvciBpbjoKKyAqIGh0dHBzOi8vZ2l0aHViLmNvbS9udW1weS9udW1weS9ibG9iL21hc3Rlci9udW1weS9jb3JlL3NyYy9ucHltYXRoL2hhbGZmbG9hdC5jCisgKiBXZSB1c2U6CisgKiAgICAgICBiaXRzID0gKHVuc2lnbmVkIHNob3J0KWY7ICAgIE5vdGUgdGhlIHRydW5jYXRpb24KKyAqICAgICAgIGlmICgoZiAtIGJpdHMgPiAwLjUpIHx8IChmIC0gYml0cyA9PSAwLjUgJiYgYml0cyAlIDIpKSB7CisgKiAgICAgICAgICAgYml0cysrOworICogICAgICAgfQogICovCisKK2ludAorX1B5RmxvYXRfUGFjazIoZG91YmxlIHgsIHVuc2lnbmVkIGNoYXIgKnAsIGludCBsZSkKK3sKKyAgICB1bnNpZ25lZCBjaGFyIHNpZ247CisgICAgaW50IGU7CisgICAgZG91YmxlIGY7CisgICAgdW5zaWduZWQgc2hvcnQgYml0czsKKyAgICBpbnQgaW5jciA9IDE7CisKKyAgICBpZiAoeCA9PSAwLjApIHsKKyAgICAgICAgc2lnbiA9IChjb3B5c2lnbigxLjAsIHgpID09IC0xLjApOworICAgICAgICBlID0gMDsKKyAgICAgICAgYml0cyA9IDA7CisgICAgfQorICAgIGVsc2UgaWYgKFB5X0lTX0lORklOSVRZKHgpKSB7CisgICAgICAgIHNpZ24gPSAoeCA8IDAuMCk7CisgICAgICAgIGUgPSAweDFmOworICAgICAgICBiaXRzID0gMDsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlfSVNfTkFOKHgpKSB7CisgICAgICAgIC8qIFRoZXJlIGFyZSAyMDQ2IGRpc3RpbmN0IGhhbGYtcHJlY2lzaW9uIE5hTnMgKDEwMjIgc2lnbmFsaW5nIGFuZAorICAgICAgICAgICAxMDI0IHF1aWV0KSwgYnV0IHRoZXJlIGFyZSBvbmx5IHR3byBxdWlldCBOYU5zIHRoYXQgZG9uJ3QgYXJpc2UgYnkKKyAgICAgICAgICAgcXVpZXRpbmcgYSBzaWduYWxpbmcgTmFOOyB3ZSBnZXQgdGhvc2UgYnkgc2V0dGluZyB0aGUgdG9wbW9zdCBiaXQKKyAgICAgICAgICAgb2YgdGhlIGZyYWN0aW9uIGZpZWxkIGFuZCBjbGVhcmluZyBhbGwgb3RoZXIgZnJhY3Rpb24gYml0cy4gV2UKKyAgICAgICAgICAgY2hvb3NlIHRoZSBvbmUgd2l0aCB0aGUgYXBwcm9wcmlhdGUgc2lnbi4gKi8KKyAgICAgICAgc2lnbiA9IChjb3B5c2lnbigxLjAsIHgpID09IC0xLjApOworICAgICAgICBlID0gMHgxZjsKKyAgICAgICAgYml0cyA9IDUxMjsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHNpZ24gPSAoeCA8IDAuMCk7CisgICAgICAgIGlmIChzaWduKSB7CisgICAgICAgICAgICB4ID0gLXg7CisgICAgICAgIH0KKworICAgICAgICBmID0gZnJleHAoeCwgJmUpOworICAgICAgICBpZiAoZiA8IDAuNSB8fCBmID49IDEuMCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmcmV4cCgpIHJlc3VsdCBvdXQgb2YgcmFuZ2UiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIE5vcm1hbGl6ZSBmIHRvIGJlIGluIHRoZSByYW5nZSBbMS4wLCAyLjApICovCisgICAgICAgIGYgKj0gMi4wOworICAgICAgICBlLS07CisKKyAgICAgICAgaWYgKGUgPj0gMTYpIHsKKyAgICAgICAgICAgIGdvdG8gT3ZlcmZsb3c7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZSA8IC0yNSkgeworICAgICAgICAgICAgLyogfHh8IDwgMioqLTI1LiBVbmRlcmZsb3cgdG8gemVyby4gKi8KKyAgICAgICAgICAgIGYgPSAwLjA7CisgICAgICAgICAgICBlID0gMDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChlIDwgLTE0KSB7CisgICAgICAgICAgICAvKiB8eHwgPCAyKiotMTQuIEdyYWR1YWwgdW5kZXJmbG93ICovCisgICAgICAgICAgICBmID0gbGRleHAoZiwgMTQgKyBlKTsKKyAgICAgICAgICAgIGUgPSAwOworICAgICAgICB9CisgICAgICAgIGVsc2UgLyogaWYgKCEoZSA9PSAwICYmIGYgPT0gMC4wKSkgKi8geworICAgICAgICAgICAgZSArPSAxNTsKKyAgICAgICAgICAgIGYgLT0gMS4wOyAvKiBHZXQgcmlkIG9mIGxlYWRpbmcgMSAqLworICAgICAgICB9CisKKyAgICAgICAgZiAqPSAxMDI0LjA7IC8qIDIqKjEwICovCisgICAgICAgIC8qIFJvdW5kIHRvIGV2ZW4gKi8KKyAgICAgICAgYml0cyA9ICh1bnNpZ25lZCBzaG9ydClmOyAvKiBOb3RlIHRoZSB0cnVuY2F0aW9uICovCisgICAgICAgIGFzc2VydChiaXRzIDwgMTAyNCk7CisgICAgICAgIGFzc2VydChlIDwgMzEpOworICAgICAgICBpZiAoKGYgLSBiaXRzID4gMC41KSB8fCAoKGYgLSBiaXRzID09IDAuNSkgJiYgKGJpdHMgJSAyID09IDEpKSkgeworICAgICAgICAgICAgKytiaXRzOworICAgICAgICAgICAgaWYgKGJpdHMgPT0gMTAyNCkgeworICAgICAgICAgICAgICAgIC8qIFRoZSBjYXJyeSBwcm9wYWdhdGVkIG91dCBvZiBhIHN0cmluZyBvZiAxMCAxIGJpdHMuICovCisgICAgICAgICAgICAgICAgYml0cyA9IDA7CisgICAgICAgICAgICAgICAgKytlOworICAgICAgICAgICAgICAgIGlmIChlID09IDMxKQorICAgICAgICAgICAgICAgICAgICBnb3RvIE92ZXJmbG93OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgYml0cyB8PSAoZSA8PCAxMCkgfCAoc2lnbiA8PCAxNSk7CisKKyAgICAvKiBXcml0ZSBvdXQgcmVzdWx0LiAqLworICAgIGlmIChsZSkgeworICAgICAgICBwICs9IDE7CisgICAgICAgIGluY3IgPSAtMTsKKyAgICB9CisKKyAgICAvKiBGaXJzdCBieXRlICovCisgICAgKnAgPSAodW5zaWduZWQgY2hhcikoKGJpdHMgPj4gOCkgJiAweEZGKTsKKyAgICBwICs9IGluY3I7CisKKyAgICAvKiBTZWNvbmQgYnl0ZSAqLworICAgICpwID0gKHVuc2lnbmVkIGNoYXIpKGJpdHMgJiAweEZGKTsKKworICAgIHJldHVybiAwOworCisgIE92ZXJmbG93OgorICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAiZmxvYXQgdG9vIGxhcmdlIHRvIHBhY2sgd2l0aCBlIGZvcm1hdCIpOworICAgIHJldHVybiAtMTsKK30KKwogaW50CiBfUHlGbG9hdF9QYWNrNChkb3VibGUgeCwgdW5zaWduZWQgY2hhciAqcCwgaW50IGxlKQogewpAQCAtMjIwMyw2ICsyMzM3LDc2IEBACiB9CiAKIGRvdWJsZQorX1B5RmxvYXRfVW5wYWNrMihjb25zdCB1bnNpZ25lZCBjaGFyICpwLCBpbnQgbGUpCit7CisgICAgdW5zaWduZWQgY2hhciBzaWduOworICAgIGludCBlOworICAgIHVuc2lnbmVkIGludCBmOworICAgIGRvdWJsZSB4OworICAgIGludCBpbmNyID0gMTsKKworICAgIGlmIChsZSkgeworICAgICAgICBwICs9IDE7CisgICAgICAgIGluY3IgPSAtMTsKKyAgICB9CisKKyAgICAvKiBGaXJzdCBieXRlICovCisgICAgc2lnbiA9ICgqcCA+PiA3KSAmIDE7CisgICAgZSA9ICgqcCAmIDB4N0MpID4+IDI7CisgICAgZiA9ICgqcCAmIDB4MDMpIDw8IDg7CisgICAgcCArPSBpbmNyOworCisgICAgLyogU2Vjb25kIGJ5dGUgKi8KKyAgICBmIHw9ICpwOworCisgICAgaWYgKGUgPT0gMHgxZikgeworI2lmZGVmIFBZX05PX1NIT1JUX0ZMT0FUX1JFUFIKKyAgICAgICAgaWYgKGYgPT0gMCkgeworICAgICAgICAgICAgLyogSW5maW5pdHkgKi8KKyAgICAgICAgICAgIHJldHVybiBzaWduID8gLVB5X0hVR0VfVkFMIDogUHlfSFVHRV9WQUw7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvKiBOYU4gKi8KKyNpZmRlZiBQeV9OQU4KKyAgICAgICAgICAgIHJldHVybiBzaWduID8gLVB5X05BTiA6IFB5X05BTjsKKyNlbHNlCisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoCisgICAgICAgICAgICAgICAgUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAiY2FuJ3QgdW5wYWNrIElFRUUgNzU0IE5hTiAiCisgICAgICAgICAgICAgICAgIm9uIHBsYXRmb3JtIHRoYXQgZG9lcyBub3Qgc3VwcG9ydCBOYU5zIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisjZW5kaWYgIC8qICNpZmRlZiBQeV9OQU4gKi8KKyAgICAgICAgfQorI2Vsc2UKKyAgICAgICAgaWYgKGYgPT0gMCkgeworICAgICAgICAgICAgLyogSW5maW5pdHkgKi8KKyAgICAgICAgICAgIHJldHVybiBfUHlfZGdfaW5maW5pdHkoc2lnbik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvKiBOYU4gKi8KKyAgICAgICAgICAgIHJldHVybiBfUHlfZGdfc3RkbmFuKHNpZ24pOworICAgICAgICB9CisjZW5kaWYgIC8qICNpZmRlZiBQWV9OT19TSE9SVF9GTE9BVF9SRVBSICovCisgICAgfQorCisgICAgeCA9IChkb3VibGUpZiAvIDEwMjQuMDsKKworICAgIGlmIChlID09IDApIHsKKyAgICAgICAgZSA9IC0xNDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHggKz0gMS4wOworICAgICAgICBlIC09IDE1OworICAgIH0KKyAgICB4ID0gbGRleHAoeCwgZSk7CisKKyAgICBpZiAoc2lnbikKKyAgICAgICAgeCA9IC14OworCisgICAgcmV0dXJuIHg7Cit9CisKK2RvdWJsZQogX1B5RmxvYXRfVW5wYWNrNChjb25zdCB1bnNpZ25lZCBjaGFyICpwLCBpbnQgbGUpCiB7CiAgICAgaWYgKGZsb2F0X2Zvcm1hdCA9PSB1bmtub3duX2Zvcm1hdCkgewpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9mcmFtZW9iamVjdC5jIGIvT2JqZWN0cy9mcmFtZW9iamVjdC5jCmluZGV4IDlhYWRkNjEuLjYyZjlmMzQgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZnJhbWVvYmplY3QuYworKysgYi9PYmplY3RzL2ZyYW1lb2JqZWN0LmMKQEAgLTEzNyw3ICsxMzcsNyBAQAogICAgICAgICBuZXdfbGFzdGkgPSAtMTsKICAgICAgICAgZm9yIChvZmZzZXQgPSAwOyBvZmZzZXQgPCBsbm90YWJfbGVuOyBvZmZzZXQgKz0gMikgewogICAgICAgICAgICAgYWRkciArPSBsbm90YWJbb2Zmc2V0XTsKLSAgICAgICAgICAgIGxpbmUgKz0gbG5vdGFiW29mZnNldCsxXTsKKyAgICAgICAgICAgIGxpbmUgKz0gKHNpZ25lZCBjaGFyKWxub3RhYltvZmZzZXQrMV07CiAgICAgICAgICAgICBpZiAobGluZSA+PSBuZXdfbGluZW5vKSB7CiAgICAgICAgICAgICAgICAgbmV3X2xhc3RpID0gYWRkcjsKICAgICAgICAgICAgICAgICBuZXdfbGluZW5vID0gbGluZTsKQEAgLTE4OSw3ICsxODksNyBAQAogICAgIG1lbXNldChibG9ja3N0YWNrLCAnXDAnLCBzaXplb2YoYmxvY2tzdGFjaykpOwogICAgIG1lbXNldChpbl9maW5hbGx5LCAnXDAnLCBzaXplb2YoaW5fZmluYWxseSkpOwogICAgIGJsb2Nrc3RhY2tfdG9wID0gMDsKLSAgICBmb3IgKGFkZHIgPSAwOyBhZGRyIDwgY29kZV9sZW47IGFkZHIrKykgeworICAgIGZvciAoYWRkciA9IDA7IGFkZHIgPCBjb2RlX2xlbjsgYWRkciArPSBzaXplb2YoX1B5X0NPREVVTklUKSkgewogICAgICAgICB1bnNpZ25lZCBjaGFyIG9wID0gY29kZVthZGRyXTsKICAgICAgICAgc3dpdGNoIChvcCkgewogICAgICAgICBjYXNlIFNFVFVQX0xPT1A6CkBAIC0yNTEsMTAgKzI1MSw2IEBACiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG9wID49IEhBVkVfQVJHVU1FTlQpIHsKLSAgICAgICAgICAgIGFkZHIgKz0gMjsKLSAgICAgICAgfQogICAgIH0KIAogICAgIC8qIFZlcmlmeSB0aGF0IHRoZSBibG9ja3N0YWNrIHRyYWNraW5nIGNvZGUgZGlkbid0IGdldCBsb3N0LiAqLwpAQCAtMjc3LDcgKzI3Myw3IEBACiAgICAgICogY2FuIHRlbGwgd2hldGhlciB0aGUganVtcCBnb2VzIGludG8gYW55IGJsb2NrcyB3aXRob3V0IGNvbWluZyBvdXQKICAgICAgKiBhZ2FpbiAtIGluIHRoYXQgY2FzZSB3ZSByYWlzZSBhbiBleGNlcHRpb24gYmVsb3cuICovCiAgICAgZGVsdGFfaWJsb2NrID0gMDsKLSAgICBmb3IgKGFkZHIgPSBtaW5fYWRkcjsgYWRkciA8IG1heF9hZGRyOyBhZGRyKyspIHsKKyAgICBmb3IgKGFkZHIgPSBtaW5fYWRkcjsgYWRkciA8IG1heF9hZGRyOyBhZGRyICs9IHNpemVvZihfUHlfQ09ERVVOSVQpKSB7CiAgICAgICAgIHVuc2lnbmVkIGNoYXIgb3AgPSBjb2RlW2FkZHJdOwogICAgICAgICBzd2l0Y2ggKG9wKSB7CiAgICAgICAgIGNhc2UgU0VUVVBfTE9PUDoKQEAgLTI5NCwxMCArMjkwLDYgQEAKICAgICAgICAgfQogCiAgICAgICAgIG1pbl9kZWx0YV9pYmxvY2sgPSBQeV9NSU4obWluX2RlbHRhX2libG9jaywgZGVsdGFfaWJsb2NrKTsKLQotICAgICAgICBpZiAob3AgPj0gSEFWRV9BUkdVTUVOVCkgewotICAgICAgICAgICAgYWRkciArPSAyOwotICAgICAgICB9CiAgICAgfQogCiAgICAgLyogRGVyaXZlIHRoZSBhYnNvbHV0ZSBpYmxvY2sgdmFsdWVzIGZyb20gdGhlIGRlbHRhcy4gKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvZnVuY29iamVjdC5jIGIvT2JqZWN0cy9mdW5jb2JqZWN0LmMKaW5kZXggNGNkNjU5MC4uNjljZDk3MyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9mdW5jb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9mdW5jb2JqZWN0LmMKQEAgLTI0OSw3ICsyNDksNiBAQAogc3RhdGljIGludAogZnVuY19zZXRfY29kZShQeUZ1bmN0aW9uT2JqZWN0ICpvcCwgUHlPYmplY3QgKnZhbHVlKQogewotICAgIFB5T2JqZWN0ICp0bXA7CiAgICAgUHlfc3NpemVfdCBuZnJlZSwgbmNsb3N1cmU7CiAKICAgICAvKiBOb3QgbGVnYWwgdG8gZGVsIGYuZnVuY19jb2RlIG9yIHRvIHNldCBpdCB0byBhbnl0aGluZwpAQCAtMjcwLDEwICsyNjksOCBAQAogICAgICAgICAgICAgICAgICAgICAgbmNsb3N1cmUsIG5mcmVlKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICB0bXAgPSBvcC0+ZnVuY19jb2RlOwogICAgIFB5X0lOQ1JFRih2YWx1ZSk7Ci0gICAgb3AtPmZ1bmNfY29kZSA9IHZhbHVlOwotICAgIFB5X0RFQ1JFRih0bXApOworICAgIFB5X1hTRVRSRUYob3AtPmZ1bmNfY29kZSwgdmFsdWUpOwogICAgIHJldHVybiAwOwogfQogCkBAIC0yODcsOCArMjg0LDYgQEAKIHN0YXRpYyBpbnQKIGZ1bmNfc2V0X25hbWUoUHlGdW5jdGlvbk9iamVjdCAqb3AsIFB5T2JqZWN0ICp2YWx1ZSkKIHsKLSAgICBQeU9iamVjdCAqdG1wOwotCiAgICAgLyogTm90IGxlZ2FsIHRvIGRlbCBmLmZ1bmNfbmFtZSBvciB0byBzZXQgaXQgdG8gYW55dGhpbmcKICAgICAgKiBvdGhlciB0aGFuIGEgc3RyaW5nIG9iamVjdC4gKi8KICAgICBpZiAodmFsdWUgPT0gTlVMTCB8fCAhUHlVbmljb2RlX0NoZWNrKHZhbHVlKSkgewpAQCAtMjk2LDEwICsyOTEsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIl9fbmFtZV9fIG11c3QgYmUgc2V0IHRvIGEgc3RyaW5nIG9iamVjdCIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIHRtcCA9IG9wLT5mdW5jX25hbWU7CiAgICAgUHlfSU5DUkVGKHZhbHVlKTsKLSAgICBvcC0+ZnVuY19uYW1lID0gdmFsdWU7Ci0gICAgUHlfREVDUkVGKHRtcCk7CisgICAgUHlfWFNFVFJFRihvcC0+ZnVuY19uYW1lLCB2YWx1ZSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTMxMyw4ICszMDYsNiBAQAogc3RhdGljIGludAogZnVuY19zZXRfcXVhbG5hbWUoUHlGdW5jdGlvbk9iamVjdCAqb3AsIFB5T2JqZWN0ICp2YWx1ZSkKIHsKLSAgICBQeU9iamVjdCAqdG1wOwotCiAgICAgLyogTm90IGxlZ2FsIHRvIGRlbCBmLl9fcXVhbG5hbWVfXyBvciB0byBzZXQgaXQgdG8gYW55dGhpbmcKICAgICAgKiBvdGhlciB0aGFuIGEgc3RyaW5nIG9iamVjdC4gKi8KICAgICBpZiAodmFsdWUgPT0gTlVMTCB8fCAhUHlVbmljb2RlX0NoZWNrKHZhbHVlKSkgewpAQCAtMzIyLDEwICszMTMsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIl9fcXVhbG5hbWVfXyBtdXN0IGJlIHNldCB0byBhIHN0cmluZyBvYmplY3QiKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICB0bXAgPSBvcC0+ZnVuY19xdWFsbmFtZTsKICAgICBQeV9JTkNSRUYodmFsdWUpOwotICAgIG9wLT5mdW5jX3F1YWxuYW1lID0gdmFsdWU7Ci0gICAgUHlfREVDUkVGKHRtcCk7CisgICAgUHlfWFNFVFJFRihvcC0+ZnVuY19xdWFsbmFtZSwgdmFsdWUpOwogICAgIHJldHVybiAwOwogfQogCkBAIC0zNDMsOCArMzMyLDYgQEAKIHN0YXRpYyBpbnQKIGZ1bmNfc2V0X2RlZmF1bHRzKFB5RnVuY3Rpb25PYmplY3QgKm9wLCBQeU9iamVjdCAqdmFsdWUpCiB7Ci0gICAgUHlPYmplY3QgKnRtcDsKLQogICAgIC8qIExlZ2FsIHRvIGRlbCBmLmZ1bmNfZGVmYXVsdHMuCiAgICAgICogQ2FuIG9ubHkgc2V0IGZ1bmNfZGVmYXVsdHMgdG8gTlVMTCBvciBhIHR1cGxlLiAqLwogICAgIGlmICh2YWx1ZSA9PSBQeV9Ob25lKQpAQCAtMzU0LDEwICszNDEsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIl9fZGVmYXVsdHNfXyBtdXN0IGJlIHNldCB0byBhIHR1cGxlIG9iamVjdCIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIHRtcCA9IG9wLT5mdW5jX2RlZmF1bHRzOwogICAgIFB5X1hJTkNSRUYodmFsdWUpOwotICAgIG9wLT5mdW5jX2RlZmF1bHRzID0gdmFsdWU7Ci0gICAgUHlfWERFQ1JFRih0bXApOworICAgIFB5X1hTRVRSRUYob3AtPmZ1bmNfZGVmYXVsdHMsIHZhbHVlKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMzc1LDggKzM2MCw2IEBACiBzdGF0aWMgaW50CiBmdW5jX3NldF9rd2RlZmF1bHRzKFB5RnVuY3Rpb25PYmplY3QgKm9wLCBQeU9iamVjdCAqdmFsdWUpCiB7Ci0gICAgUHlPYmplY3QgKnRtcDsKLQogICAgIGlmICh2YWx1ZSA9PSBQeV9Ob25lKQogICAgICAgICB2YWx1ZSA9IE5VTEw7CiAgICAgLyogTGVnYWwgdG8gZGVsIGYuZnVuY19rd2RlZmF1bHRzLgpAQCAtMzg2LDEwICszNjksOCBAQAogICAgICAgICAgICAgIl9fa3dkZWZhdWx0c19fIG11c3QgYmUgc2V0IHRvIGEgZGljdCBvYmplY3QiKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICB0bXAgPSBvcC0+ZnVuY19rd2RlZmF1bHRzOwogICAgIFB5X1hJTkNSRUYodmFsdWUpOwotICAgIG9wLT5mdW5jX2t3ZGVmYXVsdHMgPSB2YWx1ZTsKLSAgICBQeV9YREVDUkVGKHRtcCk7CisgICAgUHlfWFNFVFJFRihvcC0+ZnVuY19rd2RlZmF1bHRzLCB2YWx1ZSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTQwOCw4ICszODksNiBAQAogc3RhdGljIGludAogZnVuY19zZXRfYW5ub3RhdGlvbnMoUHlGdW5jdGlvbk9iamVjdCAqb3AsIFB5T2JqZWN0ICp2YWx1ZSkKIHsKLSAgICBQeU9iamVjdCAqdG1wOwotCiAgICAgaWYgKHZhbHVlID09IFB5X05vbmUpCiAgICAgICAgIHZhbHVlID0gTlVMTDsKICAgICAvKiBMZWdhbCB0byBkZWwgZi5mdW5jX2Fubm90YXRpb25zLgpAQCAtNDIwLDEwICszOTksOCBAQAogICAgICAgICAgICAgIl9fYW5ub3RhdGlvbnNfXyBtdXN0IGJlIHNldCB0byBhIGRpY3Qgb2JqZWN0Iik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgdG1wID0gb3AtPmZ1bmNfYW5ub3RhdGlvbnM7CiAgICAgUHlfWElOQ1JFRih2YWx1ZSk7Ci0gICAgb3AtPmZ1bmNfYW5ub3RhdGlvbnMgPSB2YWx1ZTsKLSAgICBQeV9YREVDUkVGKHRtcCk7CisgICAgUHlfWFNFVFJFRihvcC0+ZnVuY19hbm5vdGF0aW9ucywgdmFsdWUpOwogICAgIHJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9PYmplY3RzL2dlbm9iamVjdC5jIGIvT2JqZWN0cy9nZW5vYmplY3QuYwppbmRleCBkNDAzNTk4Li4yNjgwYWIwIDEwMDY0NAotLS0gYS9PYmplY3RzL2dlbm9iamVjdC5jCisrKyBiL09iamVjdHMvZ2Vub2JqZWN0LmMKQEAgLTUsNyArNSwxNSBAQAogI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgogI2luY2x1ZGUgIm9wY29kZS5oIgogCi1zdGF0aWMgUHlPYmplY3QgKmdlbl9jbG9zZShQeUdlbk9iamVjdCAqZ2VuLCBQeU9iamVjdCAqYXJncyk7CitzdGF0aWMgUHlPYmplY3QgKmdlbl9jbG9zZShQeUdlbk9iamVjdCAqLCBQeU9iamVjdCAqKTsKK3N0YXRpYyBQeU9iamVjdCAqYXN5bmNfZ2VuX2FzZW5kX25ldyhQeUFzeW5jR2VuT2JqZWN0ICosIFB5T2JqZWN0ICopOworc3RhdGljIFB5T2JqZWN0ICphc3luY19nZW5fYXRocm93X25ldyhQeUFzeW5jR2VuT2JqZWN0ICosIFB5T2JqZWN0ICopOworCitzdGF0aWMgY2hhciAqTk9OX0lOSVRfQ09ST19NU0cgPSAiY2FuJ3Qgc2VuZCBub24tTm9uZSB2YWx1ZSB0byBhICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJqdXN0LXN0YXJ0ZWQgY29yb3V0aW5lIjsKKworc3RhdGljIGNoYXIgKkFTWU5DX0dFTl9JR05PUkVEX0VYSVRfTVNHID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhc3luYyBnZW5lcmF0b3IgaWdub3JlZCBHZW5lcmF0b3JFeGl0IjsKIAogc3RhdGljIGludAogZ2VuX3RyYXZlcnNlKFB5R2VuT2JqZWN0ICpnZW4sIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQpAQCAtMjgsNiArMzYsMjYgQEAKICAgICAgICAgLyogR2VuZXJhdG9yIGlzbid0IHBhdXNlZCwgc28gbm8gbmVlZCB0byBjbG9zZSAqLwogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAoUHlBc3luY0dlbl9DaGVja0V4YWN0KHNlbGYpKSB7CisgICAgICAgIFB5QXN5bmNHZW5PYmplY3QgKmFnZW4gPSAoUHlBc3luY0dlbk9iamVjdCopc2VsZjsKKyAgICAgICAgUHlPYmplY3QgKmZpbmFsaXplciA9IGFnZW4tPmFnX2ZpbmFsaXplcjsKKyAgICAgICAgaWYgKGZpbmFsaXplciAmJiAhYWdlbi0+YWdfY2xvc2VkKSB7CisgICAgICAgICAgICAvKiBTYXZlIHRoZSBjdXJyZW50IGV4Y2VwdGlvbiwgaWYgYW55LiAqLworICAgICAgICAgICAgUHlFcnJfRmV0Y2goJmVycm9yX3R5cGUsICZlcnJvcl92YWx1ZSwgJmVycm9yX3RyYWNlYmFjayk7CisKKyAgICAgICAgICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoZmluYWxpemVyLCBzZWxmLCBOVUxMKTsKKworICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlKHNlbGYpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qIFJlc3RvcmUgdGhlIHNhdmVkIGV4Y2VwdGlvbi4gKi8KKyAgICAgICAgICAgIFB5RXJyX1Jlc3RvcmUoZXJyb3JfdHlwZSwgZXJyb3JfdmFsdWUsIGVycm9yX3RyYWNlYmFjayk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKICAgICAvKiBTYXZlIHRoZSBjdXJyZW50IGV4Y2VwdGlvbiwgaWYgYW55LiAqLwogICAgIFB5RXJyX0ZldGNoKCZlcnJvcl90eXBlLCAmZXJyb3JfdmFsdWUsICZlcnJvcl90cmFjZWJhY2spOwogCkBAIC03NCw2ICsxMDIsMTIgQEAKICAgICAgICAgcmV0dXJuOyAgICAgICAgICAgICAgICAgICAgIC8qIHJlc3VycmVjdGVkLiAgOiggKi8KIAogICAgIF9QeU9iamVjdF9HQ19VTlRSQUNLKHNlbGYpOworICAgIGlmIChQeUFzeW5jR2VuX0NoZWNrRXhhY3QoZ2VuKSkgeworICAgICAgICAvKiBXZSBoYXZlIHRvIGhhbmRsZSB0aGlzIGNhc2UgZm9yIGFzeW5jaHJvbm91cyBnZW5lcmF0b3JzCisgICAgICAgICAgIHJpZ2h0IGhlcmUsIGJlY2F1c2UgdGhpcyBjb2RlIGhhcyB0byBiZSBiZXR3ZWVuIFVOVFJBQ0sKKyAgICAgICAgICAgYW5kIEdDX0RlbC4gKi8KKyAgICAgICAgUHlfQ0xFQVIoKChQeUFzeW5jR2VuT2JqZWN0KilnZW4pLT5hZ19maW5hbGl6ZXIpOworICAgIH0KICAgICBpZiAoZ2VuLT5naV9mcmFtZSAhPSBOVUxMKSB7CiAgICAgICAgIGdlbi0+Z2lfZnJhbWUtPmZfZ2VuID0gTlVMTDsKICAgICAgICAgUHlfQ0xFQVIoZ2VuLT5naV9mcmFtZSk7CkBAIC05Myw4ICsxMjcsMTIgQEAKIAogICAgIGlmIChnZW4tPmdpX3J1bm5pbmcpIHsKICAgICAgICAgY2hhciAqbXNnID0gImdlbmVyYXRvciBhbHJlYWR5IGV4ZWN1dGluZyI7Ci0gICAgICAgIGlmIChQeUNvcm9fQ2hlY2tFeGFjdChnZW4pKQorICAgICAgICBpZiAoUHlDb3JvX0NoZWNrRXhhY3QoZ2VuKSkgewogICAgICAgICAgICAgbXNnID0gImNvcm91dGluZSBhbHJlYWR5IGV4ZWN1dGluZyI7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoUHlBc3luY0dlbl9DaGVja0V4YWN0KGdlbikpIHsKKyAgICAgICAgICAgIG1zZyA9ICJhc3luYyBnZW5lcmF0b3IgYWxyZWFkeSBleGVjdXRpbmciOworICAgICAgICB9CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCBtc2cpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0xMDYsMTAgKzE0NCwxNiBAQAogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAogICAgICAgICAgICAgICAgIFB5RXhjX1J1bnRpbWVFcnJvciwKICAgICAgICAgICAgICAgICAiY2Fubm90IHJldXNlIGFscmVhZHkgYXdhaXRlZCBjb3JvdXRpbmUiKTsKLSAgICAgICAgfSBlbHNlIGlmIChhcmcgJiYgIWV4YykgeworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGFyZyAmJiAhZXhjKSB7CiAgICAgICAgICAgICAvKiBgZ2VuYCBpcyBhbiBleGhhdXN0ZWQgZ2VuZXJhdG9yOgogICAgICAgICAgICAgICAgb25seSBzZXQgZXhjZXB0aW9uIGlmIGNhbGxlZCBmcm9tIHNlbmQoKS4gKi8KLSAgICAgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEl0ZXJhdGlvbik7CisgICAgICAgICAgICBpZiAoUHlBc3luY0dlbl9DaGVja0V4YWN0KGdlbikpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX1N0b3BBc3luY0l0ZXJhdGlvbik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX1N0b3BJdGVyYXRpb24pOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTExOCw5ICsxNjIsMTMgQEAKICAgICAgICAgaWYgKGFyZyAmJiBhcmcgIT0gUHlfTm9uZSkgewogICAgICAgICAgICAgY2hhciAqbXNnID0gImNhbid0IHNlbmQgbm9uLU5vbmUgdmFsdWUgdG8gYSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAianVzdC1zdGFydGVkIGdlbmVyYXRvciI7Ci0gICAgICAgICAgICBpZiAoUHlDb3JvX0NoZWNrRXhhY3QoZ2VuKSkKKyAgICAgICAgICAgIGlmIChQeUNvcm9fQ2hlY2tFeGFjdChnZW4pKSB7CisgICAgICAgICAgICAgICAgbXNnID0gTk9OX0lOSVRfQ09ST19NU0c7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChQeUFzeW5jR2VuX0NoZWNrRXhhY3QoZ2VuKSkgewogICAgICAgICAgICAgICAgIG1zZyA9ICJjYW4ndCBzZW5kIG5vbi1Ob25lIHZhbHVlIHRvIGEgIgotICAgICAgICAgICAgICAgICAgICAgICJqdXN0LXN0YXJ0ZWQgY29yb3V0aW5lIjsKKyAgICAgICAgICAgICAgICAgICAgICAianVzdC1zdGFydGVkIGFzeW5jIGdlbmVyYXRvciI7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCBtc2cpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KQEAgLTE1Miw4ICsyMDAsMTYgQEAKICAgICBpZiAocmVzdWx0ICYmIGYtPmZfc3RhY2t0b3AgPT0gTlVMTCkgewogICAgICAgICBpZiAocmVzdWx0ID09IFB5X05vbmUpIHsKICAgICAgICAgICAgIC8qIERlbGF5IGV4Y2VwdGlvbiBpbnN0YW50aWF0aW9uIGlmIHdlIGNhbiAqLwotICAgICAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wSXRlcmF0aW9uKTsKLSAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChQeUFzeW5jR2VuX0NoZWNrRXhhY3QoZ2VuKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEFzeW5jSXRlcmF0aW9uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEl0ZXJhdGlvbik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvKiBBc3luYyBnZW5lcmF0b3JzIGNhbm5vdCByZXR1cm4gYW55dGhpbmcgYnV0IE5vbmUgKi8KKyAgICAgICAgICAgIGFzc2VydCghUHlBc3luY0dlbl9DaGVja0V4YWN0KGdlbikpOwogICAgICAgICAgICAgX1B5R2VuX1NldFN0b3BJdGVyYXRpb25WYWx1ZShyZXN1bHQpOwogICAgICAgICB9CiAgICAgICAgIFB5X0NMRUFSKHJlc3VsdCk7CkBAIC0xNjIsMzQgKzIxOCw0MyBAQAogICAgICAgICAvKiBDaGVjayBmb3IgX19mdXR1cmVfXyBnZW5lcmF0b3Jfc3RvcCBhbmQgY29uZGl0aW9uYWxseSB0dXJuCiAgICAgICAgICAqIGEgbGVha2luZyBTdG9wSXRlcmF0aW9uIGludG8gUnVudGltZUVycm9yICh3aXRoIGl0cyBjYXVzZQogICAgICAgICAgKiBzZXQgYXBwcm9wcmlhdGVseSkuICovCi0gICAgICAgIGlmICgoKFB5Q29kZU9iamVjdCAqKWdlbi0+Z2lfY29kZSktPmNvX2ZsYWdzICYKLSAgICAgICAgICAgICAgKENPX0ZVVFVSRV9HRU5FUkFUT1JfU1RPUCB8IENPX0NPUk9VVElORSB8IENPX0lURVJBQkxFX0NPUk9VVElORSkpCisKKyAgICAgICAgY29uc3QgaW50IGNoZWNrX3N0b3BfaXRlcl9lcnJvcl9mbGFncyA9IENPX0ZVVFVSRV9HRU5FUkFUT1JfU1RPUCB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT19DT1JPVVRJTkUgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09fSVRFUkFCTEVfQ09ST1VUSU5FIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPX0FTWU5DX0dFTkVSQVRPUjsKKworICAgICAgICBpZiAoZ2VuLT5naV9jb2RlICE9IE5VTEwgJiYKKyAgICAgICAgICAgICgoUHlDb2RlT2JqZWN0ICopZ2VuLT5naV9jb2RlKS0+Y29fZmxhZ3MgJgorICAgICAgICAgICAgICAgIGNoZWNrX3N0b3BfaXRlcl9lcnJvcl9mbGFncykKICAgICAgICAgewotICAgICAgICAgICAgUHlPYmplY3QgKmV4YywgKnZhbCwgKnZhbDIsICp0YjsKLSAgICAgICAgICAgIGNoYXIgKm1zZyA9ICJnZW5lcmF0b3IgcmFpc2VkIFN0b3BJdGVyYXRpb24iOwotICAgICAgICAgICAgaWYgKFB5Q29yb19DaGVja0V4YWN0KGdlbikpCisgICAgICAgICAgICAvKiBgZ2VuYCBpcyBlaXRoZXI6CisgICAgICAgICAgICAgICAgICAqIGEgZ2VuZXJhdG9yIHdpdGggQ09fRlVUVVJFX0dFTkVSQVRPUl9TVE9QIGZsYWc7CisgICAgICAgICAgICAgICAgICAqIGEgY29yb3V0aW5lOworICAgICAgICAgICAgICAgICAgKiBhIGdlbmVyYXRvciB3aXRoIENPX0lURVJBQkxFX0NPUk9VVElORSBmbGFnCisgICAgICAgICAgICAgICAgICAgIChkZWNvcmF0ZWQgd2l0aCB0eXBlcy5jb3JvdXRpbmUgZGVjb3JhdG9yKTsKKyAgICAgICAgICAgICAgICAgICogYW4gYXN5bmMgZ2VuZXJhdG9yLgorICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKm1zZyA9ICJnZW5lcmF0b3IgcmFpc2VkIFN0b3BJdGVyYXRpb24iOworICAgICAgICAgICAgaWYgKFB5Q29yb19DaGVja0V4YWN0KGdlbikpIHsKICAgICAgICAgICAgICAgICBtc2cgPSAiY29yb3V0aW5lIHJhaXNlZCBTdG9wSXRlcmF0aW9uIjsKLSAgICAgICAgICAgIFB5RXJyX0ZldGNoKCZleGMsICZ2YWwsICZ0Yik7Ci0gICAgICAgICAgICBQeUVycl9Ob3JtYWxpemVFeGNlcHRpb24oJmV4YywgJnZhbCwgJnRiKTsKLSAgICAgICAgICAgIGlmICh0YiAhPSBOVUxMKQotICAgICAgICAgICAgICAgIFB5RXhjZXB0aW9uX1NldFRyYWNlYmFjayh2YWwsIHRiKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihleGMpOwotICAgICAgICAgICAgUHlfWERFQ1JFRih0Yik7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCBtc2cpOwotICAgICAgICAgICAgUHlFcnJfRmV0Y2goJmV4YywgJnZhbDIsICZ0Yik7Ci0gICAgICAgICAgICBQeUVycl9Ob3JtYWxpemVFeGNlcHRpb24oJmV4YywgJnZhbDIsICZ0Yik7Ci0gICAgICAgICAgICBQeV9JTkNSRUYodmFsKTsKLSAgICAgICAgICAgIFB5RXhjZXB0aW9uX1NldENhdXNlKHZhbDIsIHZhbCk7Ci0gICAgICAgICAgICBQeUV4Y2VwdGlvbl9TZXRDb250ZXh0KHZhbDIsIHZhbCk7Ci0gICAgICAgICAgICBQeUVycl9SZXN0b3JlKGV4YywgdmFsMiwgdGIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiBQeUFzeW5jR2VuX0NoZWNrRXhhY3QoZ2VuKSB7CisgICAgICAgICAgICAgICAgbXNnID0gImFzeW5jIGdlbmVyYXRvciByYWlzZWQgU3RvcEl0ZXJhdGlvbiI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBfUHlFcnJfRm9ybWF0RnJvbUNhdXNlKFB5RXhjX1J1bnRpbWVFcnJvciwgIiVzIiwgbXNnKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIGBnZW5gIGlzIGFuIG9yZGluYXJ5IGdlbmVyYXRvciB3aXRob3V0CisgICAgICAgICAgICAgICBDT19GVVRVUkVfR0VORVJBVE9SX1NUT1AgZmxhZy4KKyAgICAgICAgICAgICovCisKICAgICAgICAgICAgIFB5T2JqZWN0ICpleGMsICp2YWwsICp0YjsKIAogICAgICAgICAgICAgLyogUG9wIHRoZSBleGNlcHRpb24gYmVmb3JlIGlzc3VpbmcgYSB3YXJuaW5nLiAqLwogICAgICAgICAgICAgUHlFcnJfRmV0Y2goJmV4YywgJnZhbCwgJnRiKTsKIAotICAgICAgICAgICAgaWYgKFB5RXJyX1dhcm5Gb3JtYXQoUHlFeGNfUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMSwKKyAgICAgICAgICAgIGlmIChQeUVycl9XYXJuRm9ybWF0KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywgMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnZW5lcmF0b3IgJyUuNTBTJyByYWlzZWQgU3RvcEl0ZXJhdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW4tPmdpX3F1YWxuYW1lKSkgewogICAgICAgICAgICAgICAgIC8qIFdhcm5pbmcgd2FzIGNvbnZlcnRlZCB0byBhbiBlcnJvci4gKi8KQEAgLTIwMiw2ICsyNjcsMTUgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KKyAgICBlbHNlIGlmIChQeUFzeW5jR2VuX0NoZWNrRXhhY3QoZ2VuKSAmJiAhcmVzdWx0ICYmCisgICAgICAgICAgICAgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19TdG9wQXN5bmNJdGVyYXRpb24pKQorICAgIHsKKyAgICAgICAgLyogY29kZSBpbiBgZ2VuYCByYWlzZWQgYSBTdG9wQXN5bmNJdGVyYXRpb24gZXJyb3I6CisgICAgICAgICAgIHJhaXNlIGEgUnVudGltZUVycm9yLgorICAgICAgICAqLworICAgICAgICBjb25zdCBjaGFyICptc2cgPSAiYXN5bmMgZ2VuZXJhdG9yIHJhaXNlZCBTdG9wQXN5bmNJdGVyYXRpb24iOworICAgICAgICBfUHlFcnJfRm9ybWF0RnJvbUNhdXNlKFB5RXhjX1J1bnRpbWVFcnJvciwgIiVzIiwgbXNnKTsKKyAgICB9CiAKICAgICBpZiAoIXJlc3VsdCB8fCBmLT5mX3N0YWNrdG9wID09IE5VTEwpIHsKICAgICAgICAgLyogZ2VuZXJhdG9yIGNhbid0IGJlIHJlcnVuLCBzbyByZWxlYXNlIHRoZSBmcmFtZSAqLwpAQCAtMjQ4LDE4ICszMjIsMjAgQEAKICAgICBQeU9iamVjdCAqcmV0dmFsID0gTlVMTDsKICAgICBfUHlfSURFTlRJRklFUihjbG9zZSk7CiAKLSAgICBpZiAoUHlHZW5fQ2hlY2tFeGFjdCh5ZikpIHsKKyAgICBpZiAoUHlHZW5fQ2hlY2tFeGFjdCh5ZikgfHwgUHlDb3JvX0NoZWNrRXhhY3QoeWYpKSB7CiAgICAgICAgIHJldHZhbCA9IGdlbl9jbG9zZSgoUHlHZW5PYmplY3QgKil5ZiwgTlVMTCk7CiAgICAgICAgIGlmIChyZXR2YWwgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICB9IGVsc2UgeworICAgIH0KKyAgICBlbHNlIHsKICAgICAgICAgUHlPYmplY3QgKm1ldGggPSBfUHlPYmplY3RfR2V0QXR0cklkKHlmLCAmUHlJZF9jbG9zZSk7CiAgICAgICAgIGlmIChtZXRoID09IE5VTEwpIHsKICAgICAgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCiAgICAgICAgICAgICAgICAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlKHlmKTsKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXR2YWwgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24obWV0aCwgIiIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dmFsID0gX1B5T2JqZWN0X0NhbGxOb0FyZyhtZXRoKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihtZXRoKTsKICAgICAgICAgICAgIGlmIChyZXR2YWwgPT0gTlVMTCkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CkBAIC0yNzksNyArMzU1LDE1IEBACiAgICAgICAgIFB5T2JqZWN0ICpieXRlY29kZSA9IGYtPmZfY29kZS0+Y29fY29kZTsKICAgICAgICAgdW5zaWduZWQgY2hhciAqY29kZSA9ICh1bnNpZ25lZCBjaGFyICopUHlCeXRlc19BU19TVFJJTkcoYnl0ZWNvZGUpOwogCi0gICAgICAgIGlmIChjb2RlW2YtPmZfbGFzdGkgKyAxXSAhPSBZSUVMRF9GUk9NKQorICAgICAgICBpZiAoZi0+Zl9sYXN0aSA8IDApIHsKKyAgICAgICAgICAgIC8qIFJldHVybiBpbW1lZGlhdGVseSBpZiB0aGUgZnJhbWUgZGlkbid0IHN0YXJ0IHlldC4gWUlFTERfRlJPTQorICAgICAgICAgICAgICAgYWx3YXlzIGNvbWUgYWZ0ZXIgTE9BRF9DT05TVDogYSBjb2RlIG9iamVjdCBzaG91bGQgbm90IHN0YXJ0CisgICAgICAgICAgICAgICB3aXRoIFlJRUxEX0ZST00gKi8KKyAgICAgICAgICAgIGFzc2VydChjb2RlWzBdICE9IFlJRUxEX0ZST00pOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBpZiAoY29kZVtmLT5mX2xhc3RpICsgc2l6ZW9mKF9QeV9DT0RFVU5JVCldICE9IFlJRUxEX0ZST00pCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgeWYgPSBmLT5mX3N0YWNrdG9wWy0xXTsKICAgICAgICAgUHlfSU5DUkVGKHlmKTsKQEAgLTMwNiw4ICszOTAsMTEgQEAKICAgICByZXR2YWwgPSBnZW5fc2VuZF9leChnZW4sIFB5X05vbmUsIDEsIDEpOwogICAgIGlmIChyZXR2YWwpIHsKICAgICAgICAgY2hhciAqbXNnID0gImdlbmVyYXRvciBpZ25vcmVkIEdlbmVyYXRvckV4aXQiOwotICAgICAgICBpZiAoUHlDb3JvX0NoZWNrRXhhY3QoZ2VuKSkKKyAgICAgICAgaWYgKFB5Q29yb19DaGVja0V4YWN0KGdlbikpIHsKICAgICAgICAgICAgIG1zZyA9ICJjb3JvdXRpbmUgaWdub3JlZCBHZW5lcmF0b3JFeGl0IjsKKyAgICAgICAgfSBlbHNlIGlmIChQeUFzeW5jR2VuX0NoZWNrRXhhY3QoZ2VuKSkgeworICAgICAgICAgICAgbXNnID0gQVNZTkNfR0VOX0lHTk9SRURfRVhJVF9NU0c7CisgICAgICAgIH0KICAgICAgICAgUHlfREVDUkVGKHJldHZhbCk7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsIG1zZyk7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMzI3LDIxICs0MTQsMjIgQEAKIHJldHVybiBuZXh0IHlpZWxkZWQgdmFsdWUgb3IgcmFpc2UgU3RvcEl0ZXJhdGlvbi4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWdlbl90aHJvdyhQeUdlbk9iamVjdCAqZ2VuLCBQeU9iamVjdCAqYXJncykKK19nZW5fdGhyb3coUHlHZW5PYmplY3QgKmdlbiwgaW50IGNsb3NlX29uX2dlbmV4aXQsCisgICAgICAgICAgIFB5T2JqZWN0ICp0eXAsIFB5T2JqZWN0ICp2YWwsIFB5T2JqZWN0ICp0YikKIHsKLSAgICBQeU9iamVjdCAqdHlwOwotICAgIFB5T2JqZWN0ICp0YiA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKnZhbCA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnlmID0gX1B5R2VuX3lmKGdlbik7CiAgICAgX1B5X0lERU5USUZJRVIodGhyb3cpOwogCi0gICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAidGhyb3ciLCAxLCAzLCAmdHlwLCAmdmFsLCAmdGIpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIGlmICh5ZikgewogICAgICAgICBQeU9iamVjdCAqcmV0OwogICAgICAgICBpbnQgZXJyOwotICAgICAgICBpZiAoUHlFcnJfR2l2ZW5FeGNlcHRpb25NYXRjaGVzKHR5cCwgUHlFeGNfR2VuZXJhdG9yRXhpdCkpIHsKKyAgICAgICAgaWYgKFB5RXJyX0dpdmVuRXhjZXB0aW9uTWF0Y2hlcyh0eXAsIFB5RXhjX0dlbmVyYXRvckV4aXQpICYmCisgICAgICAgICAgICBjbG9zZV9vbl9nZW5leGl0CisgICAgICAgICkgeworICAgICAgICAgICAgLyogQXN5bmNocm9ub3VzIGdlbmVyYXRvcnMgKnNob3VsZCBub3QqIGJlIGNsb3NlZCByaWdodCBhd2F5LgorICAgICAgICAgICAgICAgV2UgaGF2ZSB0byBhbGxvdyBzb21lIGF3YWl0cyB0byB3b3JrIGl0IHRocm91Z2gsIGhlbmNlIHRoZQorICAgICAgICAgICAgICAgYGNsb3NlX29uX2dlbmV4aXRgIHBhcmFtZXRlciBoZXJlLgorICAgICAgICAgICAgKi8KICAgICAgICAgICAgIGdlbi0+Z2lfcnVubmluZyA9IDE7CiAgICAgICAgICAgICBlcnIgPSBnZW5fY2xvc2VfaXRlcih5Zik7CiAgICAgICAgICAgICBnZW4tPmdpX3J1bm5pbmcgPSAwOwpAQCAtMzUwLDExICs0MzgsMTYgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gZ2VuX3NlbmRfZXgoZ2VuLCBQeV9Ob25lLCAxLCAwKTsKICAgICAgICAgICAgIGdvdG8gdGhyb3dfaGVyZTsKICAgICAgICAgfQotICAgICAgICBpZiAoUHlHZW5fQ2hlY2tFeGFjdCh5ZikpIHsKKyAgICAgICAgaWYgKFB5R2VuX0NoZWNrRXhhY3QoeWYpIHx8IFB5Q29yb19DaGVja0V4YWN0KHlmKSkgeworICAgICAgICAgICAgLyogYHlmYCBpcyBhIGdlbmVyYXRvciBvciBhIGNvcm91dGluZS4gKi8KICAgICAgICAgICAgIGdlbi0+Z2lfcnVubmluZyA9IDE7Ci0gICAgICAgICAgICByZXQgPSBnZW5fdGhyb3coKFB5R2VuT2JqZWN0ICopeWYsIGFyZ3MpOworICAgICAgICAgICAgLyogQ2xvc2UgdGhlIGdlbmVyYXRvciB0aGF0IHdlIGFyZSBjdXJyZW50bHkgaXRlcmF0aW5nIHdpdGgKKyAgICAgICAgICAgICAgICd5aWVsZCBmcm9tJyBvciBhd2FpdGluZyBvbiB3aXRoICdhd2FpdCcuICovCisgICAgICAgICAgICByZXQgPSBfZ2VuX3Rocm93KChQeUdlbk9iamVjdCAqKXlmLCBjbG9zZV9vbl9nZW5leGl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXAsIHZhbCwgdGIpOwogICAgICAgICAgICAgZ2VuLT5naV9ydW5uaW5nID0gMDsKICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8qIGB5ZmAgaXMgYW4gaXRlcmF0b3Igb3IgYSBjb3JvdXRpbmUtbGlrZSBvYmplY3QuICovCiAgICAgICAgICAgICBQeU9iamVjdCAqbWV0aCA9IF9QeU9iamVjdF9HZXRBdHRySWQoeWYsICZQeUlkX3Rocm93KTsKICAgICAgICAgICAgIGlmIChtZXRoID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKSB7CkBAIC0zNjYsNyArNDU5LDcgQEAKICAgICAgICAgICAgICAgICBnb3RvIHRocm93X2hlcmU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBnZW4tPmdpX3J1bm5pbmcgPSAxOwotICAgICAgICAgICAgcmV0ID0gUHlPYmplY3RfQ2FsbE9iamVjdChtZXRoLCBhcmdzKTsKKyAgICAgICAgICAgIHJldCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MobWV0aCwgdHlwLCB2YWwsIHRiLCBOVUxMKTsKICAgICAgICAgICAgIGdlbi0+Z2lfcnVubmluZyA9IDA7CiAgICAgICAgICAgICBQeV9ERUNSRUYobWV0aCk7CiAgICAgICAgIH0KQEAgLTM3OCw3ICs0NzEsOCBAQAogICAgICAgICAgICAgYXNzZXJ0KHJldCA9PSB5Zik7CiAgICAgICAgICAgICBQeV9ERUNSRUYocmV0KTsKICAgICAgICAgICAgIC8qIFRlcm1pbmF0aW9uIHJlcGV0aXRpb24gb2YgWUlFTERfRlJPTSAqLwotICAgICAgICAgICAgZ2VuLT5naV9mcmFtZS0+Zl9sYXN0aSsrOworICAgICAgICAgICAgYXNzZXJ0KGdlbi0+Z2lfZnJhbWUtPmZfbGFzdGkgPj0gMCk7CisgICAgICAgICAgICBnZW4tPmdpX2ZyYW1lLT5mX2xhc3RpICs9IHNpemVvZihfUHlfQ09ERVVOSVQpOwogICAgICAgICAgICAgaWYgKF9QeUdlbl9GZXRjaFN0b3BJdGVyYXRpb25WYWx1ZSgmdmFsKSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgcmV0ID0gZ2VuX3NlbmRfZXgoZ2VuLCB2YWwsIDAsIDApOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWwpOwpAQCAtNDQ5LDYgKzU0MywyMSBAQAogCiAKIHN0YXRpYyBQeU9iamVjdCAqCitnZW5fdGhyb3coUHlHZW5PYmplY3QgKmdlbiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnR5cDsKKyAgICBQeU9iamVjdCAqdGIgPSBOVUxMOworICAgIFB5T2JqZWN0ICp2YWwgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAidGhyb3ciLCAxLCAzLCAmdHlwLCAmdmFsLCAmdGIpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBfZ2VuX3Rocm93KGdlbiwgMSwgdHlwLCB2YWwsIHRiKTsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgogZ2VuX2l0ZXJuZXh0KFB5R2VuT2JqZWN0ICpnZW4pCiB7CiAgICAgcmV0dXJuIGdlbl9zZW5kX2V4KGdlbiwgTlVMTCwgMCwgMCk7CkBAIC01NjYsOCArNjc1LDYgQEAKIHN0YXRpYyBpbnQKIGdlbl9zZXRfbmFtZShQeUdlbk9iamVjdCAqb3AsIFB5T2JqZWN0ICp2YWx1ZSkKIHsKLSAgICBQeU9iamVjdCAqdG1wOwotCiAgICAgLyogTm90IGxlZ2FsIHRvIGRlbCBnZW4uZ2lfbmFtZSBvciB0byBzZXQgaXQgdG8gYW55dGhpbmcKICAgICAgKiBvdGhlciB0aGFuIGEgc3RyaW5nIG9iamVjdC4gKi8KICAgICBpZiAodmFsdWUgPT0gTlVMTCB8fCAhUHlVbmljb2RlX0NoZWNrKHZhbHVlKSkgewpAQCAtNTc1LDEwICs2ODIsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIl9fbmFtZV9fIG11c3QgYmUgc2V0IHRvIGEgc3RyaW5nIG9iamVjdCIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIHRtcCA9IG9wLT5naV9uYW1lOwogICAgIFB5X0lOQ1JFRih2YWx1ZSk7Ci0gICAgb3AtPmdpX25hbWUgPSB2YWx1ZTsKLSAgICBQeV9ERUNSRUYodG1wKTsKKyAgICBQeV9YU0VUUkVGKG9wLT5naV9uYW1lLCB2YWx1ZSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTU5Miw4ICs2OTcsNiBAQAogc3RhdGljIGludAogZ2VuX3NldF9xdWFsbmFtZShQeUdlbk9iamVjdCAqb3AsIFB5T2JqZWN0ICp2YWx1ZSkKIHsKLSAgICBQeU9iamVjdCAqdG1wOwotCiAgICAgLyogTm90IGxlZ2FsIHRvIGRlbCBnZW4uX19xdWFsbmFtZV9fIG9yIHRvIHNldCBpdCB0byBhbnl0aGluZwogICAgICAqIG90aGVyIHRoYW4gYSBzdHJpbmcgb2JqZWN0LiAqLwogICAgIGlmICh2YWx1ZSA9PSBOVUxMIHx8ICFQeVVuaWNvZGVfQ2hlY2sodmFsdWUpKSB7CkBAIC02MDEsMTAgKzcwNCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAiX19xdWFsbmFtZV9fIG11c3QgYmUgc2V0IHRvIGEgc3RyaW5nIG9iamVjdCIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIHRtcCA9IG9wLT5naV9xdWFsbmFtZTsKICAgICBQeV9JTkNSRUYodmFsdWUpOwotICAgIG9wLT5naV9xdWFsbmFtZSA9IHZhbHVlOwotICAgIFB5X0RFQ1JFRih0bXApOworICAgIFB5X1hTRVRSRUYob3AtPmdpX3F1YWxuYW1lLCB2YWx1ZSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTEwNDUsMjEgKzExNDYsMjEgQEAKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKLSAgICBQeU9iamVjdCAqYXdfYWl0ZXI7CisgICAgUHlPYmplY3QgKmFnc19haXRlcjsKIH0gUHlBSXRlcldyYXBwZXI7CiAKIAogc3RhdGljIFB5T2JqZWN0ICoKIGFpdGVyX3dyYXBwZXJfaXRlcm5leHQoUHlBSXRlcldyYXBwZXIgKmF3KQogewotICAgIF9QeUdlbl9TZXRTdG9wSXRlcmF0aW9uVmFsdWUoYXctPmF3X2FpdGVyKTsKKyAgICBfUHlHZW5fU2V0U3RvcEl0ZXJhdGlvblZhbHVlKGF3LT5hZ3NfYWl0ZXIpOwogICAgIHJldHVybiBOVUxMOwogfQogCiBzdGF0aWMgaW50CiBhaXRlcl93cmFwcGVyX3RyYXZlcnNlKFB5QUl0ZXJXcmFwcGVyICphdywgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCiB7Ci0gICAgUHlfVklTSVQoKFB5T2JqZWN0ICopYXctPmF3X2FpdGVyKTsKKyAgICBQeV9WSVNJVCgoUHlPYmplY3QgKilhdy0+YWdzX2FpdGVyKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMTA2Nyw3ICsxMTY4LDcgQEAKIGFpdGVyX3dyYXBwZXJfZGVhbGxvYyhQeUFJdGVyV3JhcHBlciAqYXcpCiB7CiAgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0soKFB5T2JqZWN0ICopYXcpOwotICAgIFB5X0NMRUFSKGF3LT5hd19haXRlcik7CisgICAgUHlfQ0xFQVIoYXctPmFnc19haXRlcik7CiAgICAgUHlPYmplY3RfR0NfRGVsKGF3KTsKIH0KIApAQCAtMTEyOSw3ICsxMjMwLDg1MSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgUHlfSU5DUkVGKGFpdGVyKTsKLSAgICBhdy0+YXdfYWl0ZXIgPSBhaXRlcjsKKyAgICBhdy0+YWdzX2FpdGVyID0gYWl0ZXI7CiAgICAgX1B5T2JqZWN0X0dDX1RSQUNLKGF3KTsKICAgICByZXR1cm4gKFB5T2JqZWN0ICopYXc7CiB9CisKKworLyogPT09PT09PT09IEFzeW5jaHJvbm91cyBHZW5lcmF0b3JzID09PT09PT09PSAqLworCisKK3R5cGVkZWYgZW51bSB7CisgICAgQVdBSVRBQkxFX1NUQVRFX0lOSVQsICAgLyogbmV3IGF3YWl0YWJsZSwgaGFzIG5vdCB5ZXQgYmVlbiBpdGVyYXRlZCAqLworICAgIEFXQUlUQUJMRV9TVEFURV9JVEVSLCAgIC8qIGJlaW5nIGl0ZXJhdGVkICovCisgICAgQVdBSVRBQkxFX1NUQVRFX0NMT1NFRCwgLyogY2xvc2VkICovCit9IEF3YWl0YWJsZVN0YXRlOworCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgUHlBc3luY0dlbk9iamVjdCAqYWdzX2dlbjsKKworICAgIC8qIENhbiBiZSBOVUxMLCB3aGVuIGluIHRoZSBfX2FuZXh0X18oKSBtb2RlCisgICAgICAgKGVxdWl2YWxlbnQgb2YgImFzZW5kKE5vbmUpIikgKi8KKyAgICBQeU9iamVjdCAqYWdzX3NlbmR2YWw7CisKKyAgICBBd2FpdGFibGVTdGF0ZSBhZ3Nfc3RhdGU7Cit9IFB5QXN5bmNHZW5BU2VuZDsKKworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIFB5QXN5bmNHZW5PYmplY3QgKmFndF9nZW47CisKKyAgICAvKiBDYW4gYmUgTlVMTCwgd2hlbiBpbiB0aGUgImFjbG9zZSgpIiBtb2RlCisgICAgICAgKGVxdWl2YWxlbnQgb2YgImF0aHJvdyhHZW5lcmF0b3JFeGl0KSIpICovCisgICAgUHlPYmplY3QgKmFndF9hcmdzOworCisgICAgQXdhaXRhYmxlU3RhdGUgYWd0X3N0YXRlOworfSBQeUFzeW5jR2VuQVRocm93OworCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgUHlPYmplY3QgKmFnd192YWw7Cit9IF9QeUFzeW5jR2VuV3JhcHBlZFZhbHVlOworCisKKyNpZm5kZWYgX1B5QXN5bmNHZW5fTUFYRlJFRUxJU1QKKyNkZWZpbmUgX1B5QXN5bmNHZW5fTUFYRlJFRUxJU1QgODAKKyNlbmRpZgorCisvKiBGcmVlbGlzdHMgYm9vc3QgcGVyZm9ybWFuY2UgNi0xMCU7IHRoZXkgYWxzbyByZWR1Y2UgbWVtb3J5CisgICBmcmFnbWVudGF0aW9uLCBhcyBfUHlBc3luY0dlbldyYXBwZWRWYWx1ZSBhbmQgUHlBc3luY0dlbkFTZW5kCisgICBhcmUgc2hvcnQtbGl2aW5nIG9iamVjdHMgdGhhdCBhcmUgaW5zdGFudGlhdGVkIGZvciBldmVyeQorICAgX19hbmV4dF9fIGNhbGwuCisqLworCitzdGF0aWMgX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWUgKmFnX3ZhbHVlX2ZyZWVsaXN0W19QeUFzeW5jR2VuX01BWEZSRUVMSVNUXTsKK3N0YXRpYyBpbnQgYWdfdmFsdWVfZnJlZWxpc3RfZnJlZSA9IDA7CisKK3N0YXRpYyBQeUFzeW5jR2VuQVNlbmQgKmFnX2FzZW5kX2ZyZWVsaXN0W19QeUFzeW5jR2VuX01BWEZSRUVMSVNUXTsKK3N0YXRpYyBpbnQgYWdfYXNlbmRfZnJlZWxpc3RfZnJlZSA9IDA7CisKKyNkZWZpbmUgX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWVfQ2hlY2tFeGFjdChvKSBcCisgICAgICAgICAgICAgICAgICAgIChQeV9UWVBFKG8pID09ICZfUHlBc3luY0dlbldyYXBwZWRWYWx1ZV9UeXBlKQorCisjZGVmaW5lIFB5QXN5bmNHZW5BU2VuZF9DaGVja0V4YWN0KG8pIFwKKyAgICAgICAgICAgICAgICAgICAgKFB5X1RZUEUobykgPT0gJl9QeUFzeW5jR2VuQVNlbmRfVHlwZSkKKworCitzdGF0aWMgaW50Cithc3luY19nZW5fdHJhdmVyc2UoUHlBc3luY0dlbk9iamVjdCAqZ2VuLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyAgICBQeV9WSVNJVChnZW4tPmFnX2ZpbmFsaXplcik7CisgICAgcmV0dXJuIGdlbl90cmF2ZXJzZSgoUHlHZW5PYmplY3QqKWdlbiwgdmlzaXQsIGFyZyk7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK2FzeW5jX2dlbl9yZXByKFB5QXN5bmNHZW5PYmplY3QgKm8pCit7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8YXN5bmNfZ2VuZXJhdG9yIG9iamVjdCAlUyBhdCAlcD4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLT5hZ19xdWFsbmFtZSwgbyk7Cit9CisKKworc3RhdGljIGludAorYXN5bmNfZ2VuX2luaXRfaG9va3MoUHlBc3luY0dlbk9iamVjdCAqbykKK3sKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CisgICAgUHlPYmplY3QgKmZpbmFsaXplcjsKKyAgICBQeU9iamVjdCAqZmlyc3RpdGVyOworCisgICAgaWYgKG8tPmFnX2hvb2tzX2luaXRlZCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBvLT5hZ19ob29rc19pbml0ZWQgPSAxOworCisgICAgdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKKworICAgIGZpbmFsaXplciA9IHRzdGF0ZS0+YXN5bmNfZ2VuX2ZpbmFsaXplcjsKKyAgICBpZiAoZmluYWxpemVyKSB7CisgICAgICAgIFB5X0lOQ1JFRihmaW5hbGl6ZXIpOworICAgICAgICBvLT5hZ19maW5hbGl6ZXIgPSBmaW5hbGl6ZXI7CisgICAgfQorCisgICAgZmlyc3RpdGVyID0gdHN0YXRlLT5hc3luY19nZW5fZmlyc3RpdGVyOworICAgIGlmIChmaXJzdGl0ZXIpIHsKKyAgICAgICAgUHlPYmplY3QgKnJlczsKKworICAgICAgICBQeV9JTkNSRUYoZmlyc3RpdGVyKTsKKyAgICAgICAgcmVzID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKGZpcnN0aXRlciwgIk8iLCBvKTsKKyAgICAgICAgUHlfREVDUkVGKGZpcnN0aXRlcik7CisgICAgICAgIGlmIChyZXMgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKHJlcyk7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK2FzeW5jX2dlbl9hbmV4dChQeUFzeW5jR2VuT2JqZWN0ICpvKQoreworICAgIGlmIChhc3luY19nZW5faW5pdF9ob29rcyhvKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIGFzeW5jX2dlbl9hc2VuZF9uZXcobywgTlVMTCk7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK2FzeW5jX2dlbl9hc2VuZChQeUFzeW5jR2VuT2JqZWN0ICpvLCBQeU9iamVjdCAqYXJnKQoreworICAgIGlmIChhc3luY19nZW5faW5pdF9ob29rcyhvKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIGFzeW5jX2dlbl9hc2VuZF9uZXcobywgYXJnKTsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorYXN5bmNfZ2VuX2FjbG9zZShQeUFzeW5jR2VuT2JqZWN0ICpvLCBQeU9iamVjdCAqYXJnKQoreworICAgIGlmIChhc3luY19nZW5faW5pdF9ob29rcyhvKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIGFzeW5jX2dlbl9hdGhyb3dfbmV3KG8sIE5VTEwpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorYXN5bmNfZ2VuX2F0aHJvdyhQeUFzeW5jR2VuT2JqZWN0ICpvLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpZiAoYXN5bmNfZ2VuX2luaXRfaG9va3MobykpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBhc3luY19nZW5fYXRocm93X25ldyhvLCBhcmdzKTsKK30KKworCitzdGF0aWMgUHlHZXRTZXREZWYgYXN5bmNfZ2VuX2dldHNldGxpc3RbXSA9IHsKKyAgICB7Il9fbmFtZV9fIiwgKGdldHRlcilnZW5fZ2V0X25hbWUsIChzZXR0ZXIpZ2VuX3NldF9uYW1lLAorICAgICBQeURvY19TVFIoIm5hbWUgb2YgdGhlIGFzeW5jIGdlbmVyYXRvciIpfSwKKyAgICB7Il9fcXVhbG5hbWVfXyIsIChnZXR0ZXIpZ2VuX2dldF9xdWFsbmFtZSwgKHNldHRlcilnZW5fc2V0X3F1YWxuYW1lLAorICAgICBQeURvY19TVFIoInF1YWxpZmllZCBuYW1lIG9mIHRoZSBhc3luYyBnZW5lcmF0b3IiKX0sCisgICAgeyJhZ19hd2FpdCIsIChnZXR0ZXIpY29yb19nZXRfY3JfYXdhaXQsIE5VTEwsCisgICAgIFB5RG9jX1NUUigib2JqZWN0IGJlaW5nIGF3YWl0ZWQgb24sIG9yIE5vbmUiKX0sCisgICAge05VTEx9IC8qIFNlbnRpbmVsICovCit9OworCitzdGF0aWMgUHlNZW1iZXJEZWYgYXN5bmNfZ2VuX21lbWJlcmxpc3RbXSA9IHsKKyAgICB7ImFnX2ZyYW1lIiwgICBUX09CSkVDVCwgb2Zmc2V0b2YoUHlBc3luY0dlbk9iamVjdCwgYWdfZnJhbWUpLCAgIFJFQURPTkxZfSwKKyAgICB7ImFnX3J1bm5pbmciLCBUX0JPT0wsICAgb2Zmc2V0b2YoUHlBc3luY0dlbk9iamVjdCwgYWdfcnVubmluZyksIFJFQURPTkxZfSwKKyAgICB7ImFnX2NvZGUiLCAgICBUX09CSkVDVCwgb2Zmc2V0b2YoUHlBc3luY0dlbk9iamVjdCwgYWdfY29kZSksICAgIFJFQURPTkxZfSwKKyAgICB7TlVMTH0gICAgICAvKiBTZW50aW5lbCAqLworfTsKKworUHlEb2NfU1RSVkFSKGFzeW5jX2FjbG9zZV9kb2MsCisiYWNsb3NlKCkgLT4gcmFpc2UgR2VuZXJhdG9yRXhpdCBpbnNpZGUgZ2VuZXJhdG9yLiIpOworCitQeURvY19TVFJWQVIoYXN5bmNfYXNlbmRfZG9jLAorImFzZW5kKHYpIC0+IHNlbmQgJ3YnIGluIGdlbmVyYXRvci4iKTsKKworUHlEb2NfU1RSVkFSKGFzeW5jX2F0aHJvd19kb2MsCisiYXRocm93KHR5cFssdmFsWyx0Yl1dKSAtPiByYWlzZSBleGNlcHRpb24gaW4gZ2VuZXJhdG9yLiIpOworCitzdGF0aWMgUHlNZXRob2REZWYgYXN5bmNfZ2VuX21ldGhvZHNbXSA9IHsKKyAgICB7ImFzZW5kIiwgKFB5Q0Z1bmN0aW9uKWFzeW5jX2dlbl9hc2VuZCwgTUVUSF9PLCBhc3luY19hc2VuZF9kb2N9LAorICAgIHsiYXRocm93IiwoUHlDRnVuY3Rpb24pYXN5bmNfZ2VuX2F0aHJvdywgTUVUSF9WQVJBUkdTLCBhc3luY19hdGhyb3dfZG9jfSwKKyAgICB7ImFjbG9zZSIsIChQeUNGdW5jdGlvbilhc3luY19nZW5fYWNsb3NlLCBNRVRIX05PQVJHUywgYXN5bmNfYWNsb3NlX2RvY30sCisgICAge05VTEwsIE5VTEx9ICAgICAgICAvKiBTZW50aW5lbCAqLworfTsKKworCitzdGF0aWMgUHlBc3luY01ldGhvZHMgYXN5bmNfZ2VuX2FzX2FzeW5jID0geworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYW1fYXdhaXQgKi8KKyAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFtX2FpdGVyICovCisgICAgKHVuYXJ5ZnVuYylhc3luY19nZW5fYW5leHQgICAgICAgICAgICAgICAgICAvKiBhbV9hbmV4dCAqLworfTsKKworCitQeVR5cGVPYmplY3QgUHlBc3luY0dlbl9UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCisgICAgImFzeW5jX2dlbmVyYXRvciIsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgc2l6ZW9mKFB5QXN5bmNHZW5PYmplY3QpLCAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgLyogbWV0aG9kcyAqLworICAgIChkZXN0cnVjdG9yKWdlbl9kZWFsbG9jLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAmYXN5bmNfZ2VuX2FzX2FzeW5jLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2FzeW5jICovCisgICAgKHJlcHJmdW5jKWFzeW5jX2dlbl9yZXByLCAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDIHwKKyAgICAgICAgUHlfVFBGTEFHU19IQVZFX0ZJTkFMSVpFLCAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAodHJhdmVyc2Vwcm9jKWFzeW5jX2dlbl90cmF2ZXJzZSwgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICBvZmZzZXRvZihQeUFzeW5jR2VuT2JqZWN0LCBhZ193ZWFrcmVmbGlzdCksIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIGFzeW5jX2dlbl9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIGFzeW5jX2dlbl9tZW1iZXJsaXN0LCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIGFzeW5jX2dlbl9nZXRzZXRsaXN0LCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXNfZ2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2VzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tcm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhY2hlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdWJjbGFzc2VzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF92ZXJzaW9uX3RhZyAqLworICAgIF9QeUdlbl9GaW5hbGl6ZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZmluYWxpemUgKi8KK307CisKKworUHlPYmplY3QgKgorUHlBc3luY0dlbl9OZXcoUHlGcmFtZU9iamVjdCAqZiwgUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICpxdWFsbmFtZSkKK3sKKyAgICBQeUFzeW5jR2VuT2JqZWN0ICpvOworICAgIG8gPSAoUHlBc3luY0dlbk9iamVjdCAqKWdlbl9uZXdfd2l0aF9xdWFsbmFtZSgKKyAgICAgICAgJlB5QXN5bmNHZW5fVHlwZSwgZiwgbmFtZSwgcXVhbG5hbWUpOworICAgIGlmIChvID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIG8tPmFnX2ZpbmFsaXplciA9IE5VTEw7CisgICAgby0+YWdfY2xvc2VkID0gMDsKKyAgICBvLT5hZ19ob29rc19pbml0ZWQgPSAwOworICAgIHJldHVybiAoUHlPYmplY3QqKW87Cit9CisKKworaW50CitQeUFzeW5jR2VuX0NsZWFyRnJlZUxpc3RzKHZvaWQpCit7CisgICAgaW50IHJldCA9IGFnX3ZhbHVlX2ZyZWVsaXN0X2ZyZWUgKyBhZ19hc2VuZF9mcmVlbGlzdF9mcmVlOworCisgICAgd2hpbGUgKGFnX3ZhbHVlX2ZyZWVsaXN0X2ZyZWUpIHsKKyAgICAgICAgX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWUgKm87CisgICAgICAgIG8gPSBhZ192YWx1ZV9mcmVlbGlzdFstLWFnX3ZhbHVlX2ZyZWVsaXN0X2ZyZWVdOworICAgICAgICBhc3NlcnQoX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWVfQ2hlY2tFeGFjdChvKSk7CisgICAgICAgIFB5T2JqZWN0X0dDX0RlbChvKTsKKyAgICB9CisKKyAgICB3aGlsZSAoYWdfYXNlbmRfZnJlZWxpc3RfZnJlZSkgeworICAgICAgICBQeUFzeW5jR2VuQVNlbmQgKm87CisgICAgICAgIG8gPSBhZ19hc2VuZF9mcmVlbGlzdFstLWFnX2FzZW5kX2ZyZWVsaXN0X2ZyZWVdOworICAgICAgICBhc3NlcnQoUHlfVFlQRShvKSA9PSAmX1B5QXN5bmNHZW5BU2VuZF9UeXBlKTsKKyAgICAgICAgUHlPYmplY3RfR0NfRGVsKG8pOworICAgIH0KKworICAgIHJldHVybiByZXQ7Cit9CisKK3ZvaWQKK1B5QXN5bmNHZW5fRmluaSh2b2lkKQoreworICAgIFB5QXN5bmNHZW5fQ2xlYXJGcmVlTGlzdHMoKTsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorYXN5bmNfZ2VuX3Vud3JhcF92YWx1ZShQeUFzeW5jR2VuT2JqZWN0ICpnZW4sIFB5T2JqZWN0ICpyZXN1bHQpCit7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wQXN5bmNJdGVyYXRpb24pOworICAgICAgICB9CisKKyAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfU3RvcEFzeW5jSXRlcmF0aW9uKQorICAgICAgICAgICAgfHwgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19HZW5lcmF0b3JFeGl0KQorICAgICAgICApIHsKKyAgICAgICAgICAgIGdlbi0+YWdfY2xvc2VkID0gMTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChfUHlBc3luY0dlbldyYXBwZWRWYWx1ZV9DaGVja0V4YWN0KHJlc3VsdCkpIHsKKyAgICAgICAgLyogYXN5bmMgeWllbGQgKi8KKyAgICAgICAgX1B5R2VuX1NldFN0b3BJdGVyYXRpb25WYWx1ZSgoKF9QeUFzeW5jR2VuV3JhcHBlZFZhbHVlKilyZXN1bHQpLT5hZ3dfdmFsKTsKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKworLyogLS0tLS0tLS0tLSBBc3luYyBHZW5lcmF0b3IgQVNlbmQgQXdhaXRhYmxlIC0tLS0tLS0tLS0tLSAqLworCisKK3N0YXRpYyB2b2lkCithc3luY19nZW5fYXNlbmRfZGVhbGxvYyhQeUFzeW5jR2VuQVNlbmQgKm8pCit7CisgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0soKFB5T2JqZWN0ICopbyk7CisgICAgUHlfQ0xFQVIoby0+YWdzX2dlbik7CisgICAgUHlfQ0xFQVIoby0+YWdzX3NlbmR2YWwpOworICAgIGlmIChhZ19hc2VuZF9mcmVlbGlzdF9mcmVlIDwgX1B5QXN5bmNHZW5fTUFYRlJFRUxJU1QpIHsKKyAgICAgICAgYXNzZXJ0KFB5QXN5bmNHZW5BU2VuZF9DaGVja0V4YWN0KG8pKTsKKyAgICAgICAgYWdfYXNlbmRfZnJlZWxpc3RbYWdfYXNlbmRfZnJlZWxpc3RfZnJlZSsrXSA9IG87CisgICAgfSBlbHNlIHsKKyAgICAgICAgUHlPYmplY3RfR0NfRGVsKG8pOworICAgIH0KK30KKworc3RhdGljIGludAorYXN5bmNfZ2VuX2FzZW5kX3RyYXZlcnNlKFB5QXN5bmNHZW5BU2VuZCAqbywgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCit7CisgICAgUHlfVklTSVQoby0+YWdzX2dlbik7CisgICAgUHlfVklTSVQoby0+YWdzX3NlbmR2YWwpOworICAgIHJldHVybiAwOworfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCithc3luY19nZW5fYXNlbmRfc2VuZChQeUFzeW5jR2VuQVNlbmQgKm8sIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgIGlmIChvLT5hZ3Nfc3RhdGUgPT0gQVdBSVRBQkxFX1NUQVRFX0NMT1NFRCkgeworICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX1N0b3BJdGVyYXRpb24pOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoby0+YWdzX3N0YXRlID09IEFXQUlUQUJMRV9TVEFURV9JTklUKSB7CisgICAgICAgIGlmIChhcmcgPT0gTlVMTCB8fCBhcmcgPT0gUHlfTm9uZSkgeworICAgICAgICAgICAgYXJnID0gby0+YWdzX3NlbmR2YWw7CisgICAgICAgIH0KKyAgICAgICAgby0+YWdzX3N0YXRlID0gQVdBSVRBQkxFX1NUQVRFX0lURVI7CisgICAgfQorCisgICAgcmVzdWx0ID0gZ2VuX3NlbmRfZXgoKFB5R2VuT2JqZWN0KilvLT5hZ3NfZ2VuLCBhcmcsIDAsIDApOworICAgIHJlc3VsdCA9IGFzeW5jX2dlbl91bndyYXBfdmFsdWUoby0+YWdzX2dlbiwgcmVzdWx0KTsKKworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICBvLT5hZ3Nfc3RhdGUgPSBBV0FJVEFCTEVfU1RBVEVfQ0xPU0VEOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK2FzeW5jX2dlbl9hc2VuZF9pdGVybmV4dChQeUFzeW5jR2VuQVNlbmQgKm8pCit7CisgICAgcmV0dXJuIGFzeW5jX2dlbl9hc2VuZF9zZW5kKG8sIE5VTEwpOworfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCithc3luY19nZW5fYXNlbmRfdGhyb3coUHlBc3luY0dlbkFTZW5kICpvLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgaWYgKG8tPmFnc19zdGF0ZSA9PSBBV0FJVEFCTEVfU1RBVEVfQ0xPU0VEKSB7CisgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEl0ZXJhdGlvbik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJlc3VsdCA9IGdlbl90aHJvdygoUHlHZW5PYmplY3QqKW8tPmFnc19nZW4sIGFyZ3MpOworICAgIHJlc3VsdCA9IGFzeW5jX2dlbl91bndyYXBfdmFsdWUoby0+YWdzX2dlbiwgcmVzdWx0KTsKKworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICBvLT5hZ3Nfc3RhdGUgPSBBV0FJVEFCTEVfU1RBVEVfQ0xPU0VEOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK2FzeW5jX2dlbl9hc2VuZF9jbG9zZShQeUFzeW5jR2VuQVNlbmQgKm8sIFB5T2JqZWN0ICphcmdzKQoreworICAgIG8tPmFnc19zdGF0ZSA9IEFXQUlUQUJMRV9TVEFURV9DTE9TRUQ7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKKworc3RhdGljIFB5TWV0aG9kRGVmIGFzeW5jX2dlbl9hc2VuZF9tZXRob2RzW10gPSB7CisgICAgeyJzZW5kIiwgKFB5Q0Z1bmN0aW9uKWFzeW5jX2dlbl9hc2VuZF9zZW5kLCBNRVRIX08sIHNlbmRfZG9jfSwKKyAgICB7InRocm93IiwgKFB5Q0Z1bmN0aW9uKWFzeW5jX2dlbl9hc2VuZF90aHJvdywgTUVUSF9WQVJBUkdTLCB0aHJvd19kb2N9LAorICAgIHsiY2xvc2UiLCAoUHlDRnVuY3Rpb24pYXN5bmNfZ2VuX2FzZW5kX2Nsb3NlLCBNRVRIX05PQVJHUywgY2xvc2VfZG9jfSwKKyAgICB7TlVMTCwgTlVMTH0gICAgICAgIC8qIFNlbnRpbmVsICovCit9OworCisKK3N0YXRpYyBQeUFzeW5jTWV0aG9kcyBhc3luY19nZW5fYXNlbmRfYXNfYXN5bmMgPSB7CisgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBhbV9hd2FpdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYW1fYWl0ZXIgKi8KKyAgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFtX2FuZXh0ICovCit9OworCisKK1B5VHlwZU9iamVjdCBfUHlBc3luY0dlbkFTZW5kX1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKKyAgICAiYXN5bmNfZ2VuZXJhdG9yX2FzZW5kIiwgICAgICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICBzaXplb2YoUHlBc3luY0dlbkFTZW5kKSwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KKyAgICAvKiBtZXRob2RzICovCisgICAgKGRlc3RydWN0b3IpYXN5bmNfZ2VuX2FzZW5kX2RlYWxsb2MsICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgICZhc3luY19nZW5fYXNlbmRfYXNfYXN5bmMsICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYXN5bmMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MsICAgIC8qIHRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAodHJhdmVyc2Vwcm9jKWFzeW5jX2dlbl9hc2VuZF90cmF2ZXJzZSwgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgKGl0ZXJuZXh0ZnVuYylhc3luY19nZW5fYXNlbmRfaXRlcm5leHQsICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIGFzeW5jX2dlbl9hc2VuZF9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworfTsKKworCitzdGF0aWMgUHlPYmplY3QgKgorYXN5bmNfZ2VuX2FzZW5kX25ldyhQeUFzeW5jR2VuT2JqZWN0ICpnZW4sIFB5T2JqZWN0ICpzZW5kdmFsKQoreworICAgIFB5QXN5bmNHZW5BU2VuZCAqbzsKKyAgICBpZiAoYWdfYXNlbmRfZnJlZWxpc3RfZnJlZSkgeworICAgICAgICBhZ19hc2VuZF9mcmVlbGlzdF9mcmVlLS07CisgICAgICAgIG8gPSBhZ19hc2VuZF9mcmVlbGlzdFthZ19hc2VuZF9mcmVlbGlzdF9mcmVlXTsKKyAgICAgICAgX1B5X05ld1JlZmVyZW5jZSgoUHlPYmplY3QgKilvKTsKKyAgICB9IGVsc2UgeworICAgICAgICBvID0gUHlPYmplY3RfR0NfTmV3KFB5QXN5bmNHZW5BU2VuZCwgJl9QeUFzeW5jR2VuQVNlbmRfVHlwZSk7CisgICAgICAgIGlmIChvID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorCisgICAgUHlfSU5DUkVGKGdlbik7CisgICAgby0+YWdzX2dlbiA9IGdlbjsKKworICAgIFB5X1hJTkNSRUYoc2VuZHZhbCk7CisgICAgby0+YWdzX3NlbmR2YWwgPSBzZW5kdmFsOworCisgICAgby0+YWdzX3N0YXRlID0gQVdBSVRBQkxFX1NUQVRFX0lOSVQ7CisKKyAgICBfUHlPYmplY3RfR0NfVFJBQ0soKFB5T2JqZWN0KilvKTsKKyAgICByZXR1cm4gKFB5T2JqZWN0KilvOworfQorCisKKy8qIC0tLS0tLS0tLS0gQXN5bmMgR2VuZXJhdG9yIFZhbHVlIFdyYXBwZXIgLS0tLS0tLS0tLS0tICovCisKKworc3RhdGljIHZvaWQKK2FzeW5jX2dlbl93cmFwcGVkX3ZhbF9kZWFsbG9jKF9QeUFzeW5jR2VuV3JhcHBlZFZhbHVlICpvKQoreworICAgIF9QeU9iamVjdF9HQ19VTlRSQUNLKChQeU9iamVjdCAqKW8pOworICAgIFB5X0NMRUFSKG8tPmFnd192YWwpOworICAgIGlmIChhZ192YWx1ZV9mcmVlbGlzdF9mcmVlIDwgX1B5QXN5bmNHZW5fTUFYRlJFRUxJU1QpIHsKKyAgICAgICAgYXNzZXJ0KF9QeUFzeW5jR2VuV3JhcHBlZFZhbHVlX0NoZWNrRXhhY3QobykpOworICAgICAgICBhZ192YWx1ZV9mcmVlbGlzdFthZ192YWx1ZV9mcmVlbGlzdF9mcmVlKytdID0gbzsKKyAgICB9IGVsc2UgeworICAgICAgICBQeU9iamVjdF9HQ19EZWwobyk7CisgICAgfQorfQorCisKK3N0YXRpYyBpbnQKK2FzeW5jX2dlbl93cmFwcGVkX3ZhbF90cmF2ZXJzZShfUHlBc3luY0dlbldyYXBwZWRWYWx1ZSAqbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyAgICBQeV9WSVNJVChvLT5hZ3dfdmFsKTsKKyAgICByZXR1cm4gMDsKK30KKworCitQeVR5cGVPYmplY3QgX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWVfVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQorICAgICJhc3luY19nZW5lcmF0b3Jfd3JhcHBlZF92YWx1ZSIsICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgIHNpemVvZihfUHlBc3luY0dlbldyYXBwZWRWYWx1ZSksICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIC8qIG1ldGhvZHMgKi8KKyAgICAoZGVzdHJ1Y3Rvcilhc3luY19nZW5fd3JhcHBlZF92YWxfZGVhbGxvYywgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19hc3luYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQywgICAgLyogdHBfZmxhZ3MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgICh0cmF2ZXJzZXByb2MpYXN5bmNfZ2VuX3dyYXBwZWRfdmFsX3RyYXZlcnNlLCAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KK307CisKKworUHlPYmplY3QgKgorX1B5QXN5bmNHZW5WYWx1ZVdyYXBwZXJOZXcoUHlPYmplY3QgKnZhbCkKK3sKKyAgICBfUHlBc3luY0dlbldyYXBwZWRWYWx1ZSAqbzsKKyAgICBhc3NlcnQodmFsKTsKKworICAgIGlmIChhZ192YWx1ZV9mcmVlbGlzdF9mcmVlKSB7CisgICAgICAgIGFnX3ZhbHVlX2ZyZWVsaXN0X2ZyZWUtLTsKKyAgICAgICAgbyA9IGFnX3ZhbHVlX2ZyZWVsaXN0W2FnX3ZhbHVlX2ZyZWVsaXN0X2ZyZWVdOworICAgICAgICBhc3NlcnQoX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWVfQ2hlY2tFeGFjdChvKSk7CisgICAgICAgIF9QeV9OZXdSZWZlcmVuY2UoKFB5T2JqZWN0KilvKTsKKyAgICB9IGVsc2UgeworICAgICAgICBvID0gUHlPYmplY3RfR0NfTmV3KF9QeUFzeW5jR2VuV3JhcHBlZFZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZfUHlBc3luY0dlbldyYXBwZWRWYWx1ZV9UeXBlKTsKKyAgICAgICAgaWYgKG8gPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgby0+YWd3X3ZhbCA9IHZhbDsKKyAgICBQeV9JTkNSRUYodmFsKTsKKyAgICBfUHlPYmplY3RfR0NfVFJBQ0soKFB5T2JqZWN0KilvKTsKKyAgICByZXR1cm4gKFB5T2JqZWN0KilvOworfQorCisKKy8qIC0tLS0tLS0tLS0gQXN5bmMgR2VuZXJhdG9yIEFUaHJvdyBhd2FpdGFibGUgLS0tLS0tLS0tLS0tICovCisKKworc3RhdGljIHZvaWQKK2FzeW5jX2dlbl9hdGhyb3dfZGVhbGxvYyhQeUFzeW5jR2VuQVRocm93ICpvKQoreworICAgIF9QeU9iamVjdF9HQ19VTlRSQUNLKChQeU9iamVjdCAqKW8pOworICAgIFB5X0NMRUFSKG8tPmFndF9nZW4pOworICAgIFB5X0NMRUFSKG8tPmFndF9hcmdzKTsKKyAgICBQeU9iamVjdF9HQ19EZWwobyk7Cit9CisKKworc3RhdGljIGludAorYXN5bmNfZ2VuX2F0aHJvd190cmF2ZXJzZShQeUFzeW5jR2VuQVRocm93ICpvLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyAgICBQeV9WSVNJVChvLT5hZ3RfZ2VuKTsKKyAgICBQeV9WSVNJVChvLT5hZ3RfYXJncyk7CisgICAgcmV0dXJuIDA7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK2FzeW5jX2dlbl9hdGhyb3dfc2VuZChQeUFzeW5jR2VuQVRocm93ICpvLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5R2VuT2JqZWN0ICpnZW4gPSAoUHlHZW5PYmplY3QqKW8tPmFndF9nZW47CisgICAgUHlGcmFtZU9iamVjdCAqZiA9IGdlbi0+Z2lfZnJhbWU7CisgICAgUHlPYmplY3QgKnJldHZhbDsKKworICAgIGlmIChmID09IE5VTEwgfHwgZi0+Zl9zdGFja3RvcCA9PSBOVUxMIHx8CisgICAgICAgICAgICBvLT5hZ3Rfc3RhdGUgPT0gQVdBSVRBQkxFX1NUQVRFX0NMT1NFRCkgeworICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX1N0b3BJdGVyYXRpb24pOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoby0+YWd0X3N0YXRlID09IEFXQUlUQUJMRV9TVEFURV9JTklUKSB7CisgICAgICAgIGlmIChvLT5hZ3RfZ2VuLT5hZ19jbG9zZWQpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEl0ZXJhdGlvbik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChhcmcgIT0gUHlfTm9uZSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgTk9OX0lOSVRfQ09ST19NU0cpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBvLT5hZ3Rfc3RhdGUgPSBBV0FJVEFCTEVfU1RBVEVfSVRFUjsKKworICAgICAgICBpZiAoby0+YWd0X2FyZ3MgPT0gTlVMTCkgeworICAgICAgICAgICAgLyogYWNsb3NlKCkgbW9kZSAqLworICAgICAgICAgICAgby0+YWd0X2dlbi0+YWdfY2xvc2VkID0gMTsKKworICAgICAgICAgICAgcmV0dmFsID0gX2dlbl90aHJvdygoUHlHZW5PYmplY3QgKilnZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsICAvKiBEbyBub3QgY2xvc2UgZ2VuZXJhdG9yIHdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXhjX0dlbmVyYXRvckV4aXQgaXMgcGFzc2VkICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXhjX0dlbmVyYXRvckV4aXQsIE5VTEwsIE5VTEwpOworCisgICAgICAgICAgICBpZiAocmV0dmFsICYmIF9QeUFzeW5jR2VuV3JhcHBlZFZhbHVlX0NoZWNrRXhhY3QocmV0dmFsKSkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXR2YWwpOworICAgICAgICAgICAgICAgIGdvdG8geWllbGRfY2xvc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQeU9iamVjdCAqdHlwOworICAgICAgICAgICAgUHlPYmplY3QgKnRiID0gTlVMTDsKKyAgICAgICAgICAgIFB5T2JqZWN0ICp2YWwgPSBOVUxMOworCisgICAgICAgICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKG8tPmFndF9hcmdzLCAiYXRocm93IiwgMSwgMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnR5cCwgJnZhbCwgJnRiKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR2YWwgPSBfZ2VuX3Rocm93KChQeUdlbk9iamVjdCAqKWdlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgIC8qIERvIG5vdCBjbG9zZSBnZW5lcmF0b3Igd2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfR2VuZXJhdG9yRXhpdCBpcyBwYXNzZWQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwLCB2YWwsIHRiKTsKKyAgICAgICAgICAgIHJldHZhbCA9IGFzeW5jX2dlbl91bndyYXBfdmFsdWUoby0+YWd0X2dlbiwgcmV0dmFsKTsKKyAgICAgICAgfQorICAgICAgICBpZiAocmV0dmFsID09IE5VTEwpIHsKKyAgICAgICAgICAgIGdvdG8gY2hlY2tfZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJldHZhbDsKKyAgICB9CisKKyAgICBhc3NlcnQoby0+YWd0X3N0YXRlID09IEFXQUlUQUJMRV9TVEFURV9JVEVSKTsKKworICAgIHJldHZhbCA9IGdlbl9zZW5kX2V4KChQeUdlbk9iamVjdCAqKWdlbiwgYXJnLCAwLCAwKTsKKyAgICBpZiAoby0+YWd0X2FyZ3MpIHsKKyAgICAgICAgcmV0dXJuIGFzeW5jX2dlbl91bndyYXBfdmFsdWUoby0+YWd0X2dlbiwgcmV0dmFsKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvKiBhY2xvc2UoKSBtb2RlICovCisgICAgICAgIGlmIChyZXR2YWwpIHsKKyAgICAgICAgICAgIGlmIChfUHlBc3luY0dlbldyYXBwZWRWYWx1ZV9DaGVja0V4YWN0KHJldHZhbCkpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmV0dmFsKTsKKyAgICAgICAgICAgICAgICBnb3RvIHlpZWxkX2Nsb3NlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJldHZhbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGdvdG8gY2hlY2tfZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisKK3lpZWxkX2Nsb3NlOgorICAgIFB5RXJyX1NldFN0cmluZygKKyAgICAgICAgUHlFeGNfUnVudGltZUVycm9yLCBBU1lOQ19HRU5fSUdOT1JFRF9FWElUX01TRyk7CisgICAgcmV0dXJuIE5VTEw7CisKK2NoZWNrX2Vycm9yOgorICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1N0b3BBc3luY0l0ZXJhdGlvbikpIHsKKyAgICAgICAgby0+YWd0X3N0YXRlID0gQVdBSVRBQkxFX1NUQVRFX0NMT1NFRDsKKyAgICAgICAgaWYgKG8tPmFndF9hcmdzID09IE5VTEwpIHsKKyAgICAgICAgICAgIC8qIHdoZW4gYWNsb3NlKCkgaXMgY2FsbGVkIHdlIGRvbid0IHdhbnQgdG8gcHJvcGFnYXRlCisgICAgICAgICAgICAgICBTdG9wQXN5bmNJdGVyYXRpb247IGp1c3QgcmFpc2UgU3RvcEl0ZXJhdGlvbiwgc2lnbmFsbGluZworICAgICAgICAgICAgICAgdGhhdCAnYWNsb3NlKCknIGlzIGRvbmUuICovCisgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wSXRlcmF0aW9uKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0dlbmVyYXRvckV4aXQpKSB7CisgICAgICAgIG8tPmFndF9zdGF0ZSA9IEFXQUlUQUJMRV9TVEFURV9DTE9TRUQ7CisgICAgICAgIFB5RXJyX0NsZWFyKCk7ICAgICAgICAgIC8qIGlnbm9yZSB0aGVzZSBlcnJvcnMgKi8KKyAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wSXRlcmF0aW9uKTsKKyAgICB9CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK2FzeW5jX2dlbl9hdGhyb3dfdGhyb3coUHlBc3luY0dlbkFUaHJvdyAqbywgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHZhbDsKKworICAgIGlmIChvLT5hZ3Rfc3RhdGUgPT0gQVdBSVRBQkxFX1NUQVRFX0lOSVQpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgTk9OX0lOSVRfQ09ST19NU0cpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoby0+YWd0X3N0YXRlID09IEFXQUlUQUJMRV9TVEFURV9DTE9TRUQpIHsKKyAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wSXRlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dmFsID0gZ2VuX3Rocm93KChQeUdlbk9iamVjdCopby0+YWd0X2dlbiwgYXJncyk7CisgICAgaWYgKG8tPmFndF9hcmdzKSB7CisgICAgICAgIHJldHVybiBhc3luY19nZW5fdW53cmFwX3ZhbHVlKG8tPmFndF9nZW4sIHJldHZhbCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLyogYWNsb3NlKCkgbW9kZSAqLworICAgICAgICBpZiAocmV0dmFsICYmIF9QeUFzeW5jR2VuV3JhcHBlZFZhbHVlX0NoZWNrRXhhY3QocmV0dmFsKSkgeworICAgICAgICAgICAgUHlfREVDUkVGKHJldHZhbCk7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCBBU1lOQ19HRU5fSUdOT1JFRF9FWElUX01TRyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmV0dmFsOworICAgIH0KK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorYXN5bmNfZ2VuX2F0aHJvd19pdGVybmV4dChQeUFzeW5jR2VuQVRocm93ICpvKQoreworICAgIHJldHVybiBhc3luY19nZW5fYXRocm93X3NlbmQobywgUHlfTm9uZSk7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK2FzeW5jX2dlbl9hdGhyb3dfY2xvc2UoUHlBc3luY0dlbkFUaHJvdyAqbywgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgby0+YWd0X3N0YXRlID0gQVdBSVRBQkxFX1NUQVRFX0NMT1NFRDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworCitzdGF0aWMgUHlNZXRob2REZWYgYXN5bmNfZ2VuX2F0aHJvd19tZXRob2RzW10gPSB7CisgICAgeyJzZW5kIiwgKFB5Q0Z1bmN0aW9uKWFzeW5jX2dlbl9hdGhyb3dfc2VuZCwgTUVUSF9PLCBzZW5kX2RvY30sCisgICAgeyJ0aHJvdyIsIChQeUNGdW5jdGlvbilhc3luY19nZW5fYXRocm93X3Rocm93LCBNRVRIX1ZBUkFSR1MsIHRocm93X2RvY30sCisgICAgeyJjbG9zZSIsIChQeUNGdW5jdGlvbilhc3luY19nZW5fYXRocm93X2Nsb3NlLCBNRVRIX05PQVJHUywgY2xvc2VfZG9jfSwKKyAgICB7TlVMTCwgTlVMTH0gICAgICAgIC8qIFNlbnRpbmVsICovCit9OworCisKK3N0YXRpYyBQeUFzeW5jTWV0aG9kcyBhc3luY19nZW5fYXRocm93X2FzX2FzeW5jID0geworICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYW1fYXdhaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFtX2FpdGVyICovCisgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBhbV9hbmV4dCAqLworfTsKKworCitQeVR5cGVPYmplY3QgX1B5QXN5bmNHZW5BVGhyb3dfVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQorICAgICJhc3luY19nZW5lcmF0b3JfYXRocm93IiwgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgIHNpemVvZihQeUFzeW5jR2VuQVRocm93KSwgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIC8qIG1ldGhvZHMgKi8KKyAgICAoZGVzdHJ1Y3Rvcilhc3luY19nZW5fYXRocm93X2RlYWxsb2MsICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgJmFzeW5jX2dlbl9hdGhyb3dfYXNfYXN5bmMsICAgICAgICAgICAgICAgICAvKiB0cF9hc19hc3luYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQywgICAgLyogdHBfZmxhZ3MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgICh0cmF2ZXJzZXByb2MpYXN5bmNfZ2VuX2F0aHJvd190cmF2ZXJzZSwgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAoaXRlcm5leHRmdW5jKWFzeW5jX2dlbl9hdGhyb3dfaXRlcm5leHQsICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgYXN5bmNfZ2VuX2F0aHJvd19tZXRob2RzLCAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCit9OworCisKK3N0YXRpYyBQeU9iamVjdCAqCithc3luY19nZW5fYXRocm93X25ldyhQeUFzeW5jR2VuT2JqZWN0ICpnZW4sIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5QXN5bmNHZW5BVGhyb3cgKm87CisgICAgbyA9IFB5T2JqZWN0X0dDX05ldyhQeUFzeW5jR2VuQVRocm93LCAmX1B5QXN5bmNHZW5BVGhyb3dfVHlwZSk7CisgICAgaWYgKG8gPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgby0+YWd0X2dlbiA9IGdlbjsKKyAgICBvLT5hZ3RfYXJncyA9IGFyZ3M7CisgICAgby0+YWd0X3N0YXRlID0gQVdBSVRBQkxFX1NUQVRFX0lOSVQ7CisgICAgUHlfSU5DUkVGKGdlbik7CisgICAgUHlfWElOQ1JFRihhcmdzKTsKKyAgICBfUHlPYmplY3RfR0NfVFJBQ0soKFB5T2JqZWN0KilvKTsKKyAgICByZXR1cm4gKFB5T2JqZWN0KilvOworfQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9pdGVyb2JqZWN0LmMgYi9PYmplY3RzL2l0ZXJvYmplY3QuYwppbmRleCBhYjI5ZmY4Li43NWIyZmNiIDEwMDY0NAotLS0gYS9PYmplY3RzL2l0ZXJvYmplY3QuYworKysgYi9PYmplY3RzL2l0ZXJvYmplY3QuYwpAQCAtMjA4LDMwICsyMDgsMzIgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBjYWxsaXRlcl9pdGVybmV4dChjYWxsaXRlcm9iamVjdCAqaXQpCiB7Ci0gICAgaWYgKGl0LT5pdF9jYWxsYWJsZSAhPSBOVUxMKSB7Ci0gICAgICAgIFB5T2JqZWN0ICphcmdzID0gUHlUdXBsZV9OZXcoMCk7Ci0gICAgICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0gICAgICAgIGlmIChhcmdzID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbChpdC0+aXRfY2FsbGFibGUsIGFyZ3MsIE5VTEwpOwotICAgICAgICBQeV9ERUNSRUYoYXJncyk7Ci0gICAgICAgIGlmIChyZXN1bHQgIT0gTlVMTCkgewotICAgICAgICAgICAgaW50IG9rOwotICAgICAgICAgICAgb2sgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woaXQtPml0X3NlbnRpbmVsLCByZXN1bHQsIFB5X0VRKTsKLSAgICAgICAgICAgIGlmIChvayA9PSAwKQotICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7IC8qIENvbW1vbiBjYXNlLCBmYXN0IHBhdGggKi8KLSAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgICAgICAgICAgaWYgKG9rID4gMCkgewotICAgICAgICAgICAgICAgIFB5X0NMRUFSKGl0LT5pdF9jYWxsYWJsZSk7Ci0gICAgICAgICAgICAgICAgUHlfQ0xFQVIoaXQtPml0X3NlbnRpbmVsKTsKLSAgICAgICAgICAgIH0KKyAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgaWYgKGl0LT5pdF9jYWxsYWJsZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTm9BcmcoaXQtPml0X2NhbGxhYmxlKTsKKyAgICBpZiAocmVzdWx0ICE9IE5VTEwpIHsKKyAgICAgICAgaW50IG9rOworCisgICAgICAgIG9rID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKGl0LT5pdF9zZW50aW5lbCwgcmVzdWx0LCBQeV9FUSk7CisgICAgICAgIGlmIChvayA9PSAwKSB7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OyAvKiBDb21tb24gY2FzZSwgZmFzdCBwYXRoICovCiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19TdG9wSXRlcmF0aW9uKSkgewotICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgaWYgKG9rID4gMCkgewogICAgICAgICAgICAgUHlfQ0xFQVIoaXQtPml0X2NhbGxhYmxlKTsKICAgICAgICAgICAgIFB5X0NMRUFSKGl0LT5pdF9zZW50aW5lbCk7CiAgICAgICAgIH0KICAgICB9CisgICAgZWxzZSBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19TdG9wSXRlcmF0aW9uKSkgeworICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICBQeV9DTEVBUihpdC0+aXRfY2FsbGFibGUpOworICAgICAgICBQeV9DTEVBUihpdC0+aXRfc2VudGluZWwpOworICAgIH0KICAgICByZXR1cm4gTlVMTDsKIH0KIApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9saXN0b2JqZWN0LmMgYi9PYmplY3RzL2xpc3RvYmplY3QuYwppbmRleCA4MTVhMWI5Li5kY2Q3YjVlIDEwMDY0NAotLS0gYS9PYmplY3RzL2xpc3RvYmplY3QuYworKysgYi9PYmplY3RzL2xpc3RvYmplY3QuYwpAQCAtNDksNyArNDksNyBAQAogICAgIG5ld19hbGxvY2F0ZWQgPSAobmV3c2l6ZSA+PiAzKSArIChuZXdzaXplIDwgOSA/IDMgOiA2KTsKIAogICAgIC8qIGNoZWNrIGZvciBpbnRlZ2VyIG92ZXJmbG93ICovCi0gICAgaWYgKG5ld19hbGxvY2F0ZWQgPiBQWV9TSVpFX01BWCAtIG5ld3NpemUpIHsKKyAgICBpZiAobmV3X2FsbG9jYXRlZCA+IFNJWkVfTUFYIC0gbmV3c2l6ZSkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfSBlbHNlIHsKQEAgLTU5LDcgKzU5LDcgQEAKICAgICBpZiAobmV3c2l6ZSA9PSAwKQogICAgICAgICBuZXdfYWxsb2NhdGVkID0gMDsKICAgICBpdGVtcyA9IHNlbGYtPm9iX2l0ZW07Ci0gICAgaWYgKG5ld19hbGxvY2F0ZWQgPD0gKFBZX1NJWkVfTUFYIC8gc2l6ZW9mKFB5T2JqZWN0ICopKSkKKyAgICBpZiAobmV3X2FsbG9jYXRlZCA8PSAoU0laRV9NQVggLyBzaXplb2YoUHlPYmplY3QgKikpKQogICAgICAgICBQeU1lbV9SRVNJWkUoaXRlbXMsIFB5T2JqZWN0ICosIG5ld19hbGxvY2F0ZWQpOwogICAgIGVsc2UKICAgICAgICAgaXRlbXMgPSBOVUxMOwpAQCAtODIsNiArODIsMTYgQEAKIHN0YXRpYyB2b2lkCiBzaG93X2FsbG9jKHZvaWQpCiB7CisgICAgUHlPYmplY3QgKnhvcHRpb25zLCAqdmFsdWU7CisgICAgX1B5X0lERU5USUZJRVIoc2hvd2FsbG9jY291bnQpOworCisgICAgeG9wdGlvbnMgPSBQeVN5c19HZXRYT3B0aW9ucygpOworICAgIGlmICh4b3B0aW9ucyA9PSBOVUxMKQorICAgICAgICByZXR1cm47CisgICAgdmFsdWUgPSBfUHlEaWN0X0dldEl0ZW1JZCh4b3B0aW9ucywgJlB5SWRfc2hvd2FsbG9jY291bnQpOworICAgIGlmICh2YWx1ZSAhPSBQeV9UcnVlKQorICAgICAgICByZXR1cm47CisKICAgICBmcHJpbnRmKHN0ZGVyciwgIkxpc3QgYWxsb2NhdGlvbnM6ICUiIFBZX0ZPUk1BVF9TSVpFX1QgImRcbiIsCiAgICAgICAgIGNvdW50X2FsbG9jKTsKICAgICBmcHJpbnRmKHN0ZGVyciwgIkxpc3QgcmV1c2UgdGhyb3VnaCBmcmVlbGlzdDogJSIgUFlfRk9STUFUX1NJWkVfVApAQCAtMTMwLDcgKzE0MCw2IEBACiBQeUxpc3RfTmV3KFB5X3NzaXplX3Qgc2l6ZSkKIHsKICAgICBQeUxpc3RPYmplY3QgKm9wOwotICAgIHNpemVfdCBuYnl0ZXM7CiAjaWZkZWYgU0hPV19BTExPQ19DT1VOVAogICAgIHN0YXRpYyBpbnQgaW5pdGlhbGl6ZWQgPSAwOwogICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKQEAgLTE0MywxMSArMTUyLDYgQEAKICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICAvKiBDaGVjayBmb3Igb3ZlcmZsb3cgd2l0aG91dCBhbiBhY3R1YWwgb3ZlcmZsb3csCi0gICAgICogIHdoaWNoIGNhbiBjYXVzZSBjb21waWxlciB0byBvcHRpbWlzZSBvdXQgKi8KLSAgICBpZiAoKHNpemVfdClzaXplID4gUFlfU0laRV9NQVggLyBzaXplb2YoUHlPYmplY3QgKikpCi0gICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotICAgIG5ieXRlcyA9IHNpemUgKiBzaXplb2YoUHlPYmplY3QgKik7CiAgICAgaWYgKG51bWZyZWUpIHsKICAgICAgICAgbnVtZnJlZS0tOwogICAgICAgICBvcCA9IGZyZWVfbGlzdFtudW1mcmVlXTsKQEAgLTE2NiwxMiArMTcwLDExIEBACiAgICAgaWYgKHNpemUgPD0gMCkKICAgICAgICAgb3AtPm9iX2l0ZW0gPSBOVUxMOwogICAgIGVsc2UgewotICAgICAgICBvcC0+b2JfaXRlbSA9IChQeU9iamVjdCAqKikgUHlNZW1fTUFMTE9DKG5ieXRlcyk7CisgICAgICAgIG9wLT5vYl9pdGVtID0gKFB5T2JqZWN0ICoqKSBQeU1lbV9DYWxsb2Moc2l6ZSwgc2l6ZW9mKFB5T2JqZWN0ICopKTsKICAgICAgICAgaWYgKG9wLT5vYl9pdGVtID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihvcCk7CiAgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgfQotICAgICAgICBtZW1zZXQob3AtPm9iX2l0ZW0sIDAsIG5ieXRlcyk7CiAgICAgfQogICAgIFB5X1NJWkUob3ApID0gc2l6ZTsKICAgICBvcC0+YWxsb2NhdGVkID0gc2l6ZTsKQEAgLTIxNiw3ICsyMTksNiBAQAogUHlMaXN0X1NldEl0ZW0oUHlPYmplY3QgKm9wLCBQeV9zc2l6ZV90IGksCiAgICAgICAgICAgICAgICBQeU9iamVjdCAqbmV3aXRlbSkKIHsKLSAgICBQeU9iamVjdCAqb2xkaXRlbTsKICAgICBQeU9iamVjdCAqKnA7CiAgICAgaWYgKCFQeUxpc3RfQ2hlY2sob3ApKSB7CiAgICAgICAgIFB5X1hERUNSRUYobmV3aXRlbSk7CkBAIC0yMzAsOSArMjMyLDcgQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBwID0gKChQeUxpc3RPYmplY3QgKilvcCkgLT4gb2JfaXRlbSArIGk7Ci0gICAgb2xkaXRlbSA9ICpwOwotICAgICpwID0gbmV3aXRlbTsKLSAgICBQeV9YREVDUkVGKG9sZGl0ZW0pOworICAgIFB5X1hTRVRSRUYoKnAsIG5ld2l0ZW0pOwogICAgIHJldHVybiAwOwogfQogCkBAIC0yNTEsNyArMjUxLDcgQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIGlmIChsaXN0X3Jlc2l6ZShzZWxmLCBuKzEpID09IC0xKQorICAgIGlmIChsaXN0X3Jlc2l6ZShzZWxmLCBuKzEpIDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgaWYgKHdoZXJlIDwgMCkgewpAQCAtMjkxLDcgKzI5MSw3IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICBpZiAobGlzdF9yZXNpemUoc2VsZiwgbisxKSA9PSAtMSkKKyAgICBpZiAobGlzdF9yZXNpemUoc2VsZiwgbisxKSA8IDApCiAgICAgICAgIHJldHVybiAtMTsKIAogICAgIFB5X0lOQ1JFRih2KTsKQEAgLTQ4MSw5ICs0ODEsOSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAjZGVmaW5lIGIgKChQeUxpc3RPYmplY3QgKiliYikKLSAgICBzaXplID0gUHlfU0laRShhKSArIFB5X1NJWkUoYik7Ci0gICAgaWYgKHNpemUgPCAwKQorICAgIGlmIChQeV9TSVpFKGEpID4gUFlfU1NJWkVfVF9NQVggLSBQeV9TSVpFKGIpKQogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICBzaXplID0gUHlfU0laRShhKSArIFB5X1NJWkUoYik7CiAgICAgbnAgPSAoUHlMaXN0T2JqZWN0ICopIFB5TGlzdF9OZXcoc2l6ZSk7CiAgICAgaWYgKG5wID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC03MTQsNyArNzE0LDcgQEAKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgfQogCi0gICAgaWYgKGxpc3RfcmVzaXplKHNlbGYsIHNpemUqbikgPT0gLTEpCisgICAgaWYgKGxpc3RfcmVzaXplKHNlbGYsIHNpemUqbikgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHAgPSBzaXplOwpAQCAtNzMzLDcgKzczMyw2IEBACiBzdGF0aWMgaW50CiBsaXN0X2Fzc19pdGVtKFB5TGlzdE9iamVjdCAqYSwgUHlfc3NpemVfdCBpLCBQeU9iamVjdCAqdikKIHsKLSAgICBQeU9iamVjdCAqb2xkX3ZhbHVlOwogICAgIGlmIChpIDwgMCB8fCBpID49IFB5X1NJWkUoYSkpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0luZGV4RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAibGlzdCBhc3NpZ25tZW50IGluZGV4IG91dCBvZiByYW5nZSIpOwpAQCAtNzQyLDkgKzc0MSw3IEBACiAgICAgaWYgKHYgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIGxpc3RfYXNzX3NsaWNlKGEsIGksIGkrMSwgdik7CiAgICAgUHlfSU5DUkVGKHYpOwotICAgIG9sZF92YWx1ZSA9IGEtPm9iX2l0ZW1baV07Ci0gICAgYS0+b2JfaXRlbVtpXSA9IHY7Ci0gICAgUHlfREVDUkVGKG9sZF92YWx1ZSk7CisgICAgUHlfU0VUUkVGKGEtPm9iX2l0ZW1baV0sIHYpOwogICAgIHJldHVybiAwOwogfQogCkBAIC04MDcsNyArODA0LDcgQEAKICAgICAgICAgICAgIFB5X1JFVFVSTl9OT05FOwogICAgICAgICB9CiAgICAgICAgIG0gPSBQeV9TSVpFKHNlbGYpOwotICAgICAgICBpZiAobGlzdF9yZXNpemUoc2VsZiwgbSArIG4pID09IC0xKSB7CisgICAgICAgIGlmIChsaXN0X3Jlc2l6ZShzZWxmLCBtICsgbikgPCAwKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoYik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQpAQCAtODM1LDIzICs4MzIsMjUgQEAKIAogICAgIC8qIEd1ZXNzIGEgcmVzdWx0IGxpc3Qgc2l6ZS4gKi8KICAgICBuID0gUHlPYmplY3RfTGVuZ3RoSGludChiLCA4KTsKLSAgICBpZiAobiA9PSAtMSkgeworICAgIGlmIChuIDwgMCkgewogICAgICAgICBQeV9ERUNSRUYoaXQpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgbSA9IFB5X1NJWkUoc2VsZik7Ci0gICAgbW4gPSBtICsgbjsKLSAgICBpZiAobW4gPj0gbSkgeworICAgIGlmIChtID4gUFlfU1NJWkVfVF9NQVggLSBuKSB7CisgICAgICAgIC8qIG0gKyBuIG92ZXJmbG93ZWQ7IG9uIHRoZSBjaGFuY2UgdGhhdCBuIGxpZWQsIGFuZCB0aGVyZSByZWFsbHkKKyAgICAgICAgICogaXMgZW5vdWdoIHJvb20sIGlnbm9yZSBpdC4gIElmIG4gd2FzIHRlbGxpbmcgdGhlIHRydXRoLCB3ZSdsbAorICAgICAgICAgKiBldmVudHVhbGx5IHJ1biBvdXQgb2YgbWVtb3J5IGR1cmluZyB0aGUgbG9vcC4KKyAgICAgICAgICovCisgICAgfQorICAgIGVsc2UgeworICAgICAgICBtbiA9IG0gKyBuOwogICAgICAgICAvKiBNYWtlIHJvb20uICovCi0gICAgICAgIGlmIChsaXN0X3Jlc2l6ZShzZWxmLCBtbikgPT0gLTEpCisgICAgICAgIGlmIChsaXN0X3Jlc2l6ZShzZWxmLCBtbikgPCAwKQogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgLyogTWFrZSB0aGUgbGlzdCBzYW5lIGFnYWluLiAqLwogICAgICAgICBQeV9TSVpFKHNlbGYpID0gbTsKICAgICB9Ci0gICAgLyogRWxzZSBtICsgbiBvdmVyZmxvd2VkOyBvbiB0aGUgY2hhbmNlIHRoYXQgbiBsaWVkLCBhbmQgdGhlcmUgcmVhbGx5Ci0gICAgICogaXMgZW5vdWdoIHJvb20sIGlnbm9yZSBpdC4gIElmIG4gd2FzIHRlbGxpbmcgdGhlIHRydXRoLCB3ZSdsbAotICAgICAqIGV2ZW50dWFsbHkgcnVuIG91dCBvZiBtZW1vcnkgZHVyaW5nIHRoZSBsb29wLgotICAgICAqLwogCiAgICAgLyogUnVuIGl0ZXJhdG9yIHRvIGV4aGF1c3Rpb24uICovCiAgICAgZm9yICg7OykgewpAQCAtMjUwMCw5ICsyNDk5LDYgQEAKICAgICAgICAgICAgICAgICBzdGVwID0gLXN0ZXA7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGFzc2VydCgoc2l6ZV90KXNsaWNlbGVuZ3RoIDw9Ci0gICAgICAgICAgICAgICAgICAgUFlfU0laRV9NQVggLyBzaXplb2YoUHlPYmplY3QqKSk7Ci0KICAgICAgICAgICAgIGdhcmJhZ2UgPSAoUHlPYmplY3QqKikKICAgICAgICAgICAgICAgICBQeU1lbV9NQUxMT0Moc2xpY2VsZW5ndGgqc2l6ZW9mKFB5T2JqZWN0KikpOwogICAgICAgICAgICAgaWYgKCFnYXJiYWdlKSB7CmRpZmYgLS1naXQgYS9PYmplY3RzL2xpc3Rzb3J0LnR4dCBiL09iamVjdHMvbGlzdHNvcnQudHh0CmluZGV4IDE1MmEyNzAuLjE3ZDI3OTcgMTAwNjQ0Ci0tLSBhL09iamVjdHMvbGlzdHNvcnQudHh0CisrKyBiL09iamVjdHMvbGlzdHNvcnQudHh0CkBAIC00ODYsNyArNDg2LDcgQEAKIEkgZmlyc3QgbGVhcm5lZCBhYm91dCB0aGUgZ2FsbG9waW5nIHN0cmF0ZWd5IGluIGEgcmVsYXRlZCBjb250ZXh0OyBzZWU6CiAKICAgICAiQWRhcHRpdmUgU2V0IEludGVyc2VjdGlvbnMsIFVuaW9ucywgYW5kIERpZmZlcmVuY2VzIiAoMjAwMCkKLSAgICBFcmlrIEQuIERlbWFpbmUsIEFsZWphbmRybyBM83Blei1PcnRpeiwgSi4gSWFuIE11bnJvCisgICAgRXJpayBELiBEZW1haW5lLCBBbGVqYW5kcm8gTMOzcGV6LU9ydGl6LCBKLiBJYW4gTXVucm8KIAogYW5kIGl0cyBmb2xsb3d1cChzKS4gIEFuIGVhcmxpZXIgcGFwZXIgY2FsbGVkIHRoZSBzYW1lIHN0cmF0ZWd5CiAiZXhwb25lbnRpYWwgc2VhcmNoIjoKZGlmZiAtLWdpdCBhL09iamVjdHMvbG5vdGFiX25vdGVzLnR4dCBiL09iamVjdHMvbG5vdGFiX25vdGVzLnR4dAppbmRleCBkMjQ3ZWRkLi41MTUzNzU3IDEwMDY0NAotLS0gYS9PYmplY3RzL2xub3RhYl9ub3Rlcy50eHQKKysrIGIvT2JqZWN0cy9sbm90YWJfbm90ZXMudHh0CkBAIC0xMiw0MiArMTIsNDcgQEAKICAgICAgICAgMAkJICAgIDEKICAgICAgICAgNgkJICAgIDIKICAgICAgICA1MAkJICAgIDcKLSAgICAgIDM1MCAgICAgICAgICAgICAgICAgMzA3Ci0gICAgICAzNjEgICAgICAgICAgICAgICAgIDMwOAorICAgICAgMzUwICAgICAgICAgICAgICAgICAyMDcKKyAgICAgIDM2MSAgICAgICAgICAgICAgICAgMjA4CiAKIEluc3RlYWQgb2Ygc3RvcmluZyB0aGVzZSBudW1iZXJzIGxpdGVyYWxseSwgd2UgY29tcHJlc3MgdGhlIGxpc3QgYnkgc3RvcmluZyBvbmx5Ci10aGUgaW5jcmVtZW50cyBmcm9tIG9uZSByb3cgdG8gdGhlIG5leHQuICBDb25jZXB0dWFsbHksIHRoZSBzdG9yZWQgbGlzdCBtaWdodAordGhlIGRpZmZlcmVuY2UgZnJvbSBvbmUgcm93IHRvIHRoZSBuZXh0LiAgQ29uY2VwdHVhbGx5LCB0aGUgc3RvcmVkIGxpc3QgbWlnaHQKIGxvb2sgbGlrZToKIAotICAgIDAsIDEsICA2LCAxLCAgNDQsIDUsICAzMDAsIDMwMCwgIDExLCAxCisgICAgMCwgMSwgIDYsIDEsICA0NCwgNSwgIDMwMCwgMjAwLCAgMTEsIDEKIAotVGhlIGFib3ZlIGRvZXNuJ3QgcmVhbGx5IHdvcmssIGJ1dCBpdCdzIGEgc3RhcnQuIE5vdGUgdGhhdCBhbiB1bnNpZ25lZCBieXRlCi1jYW4ndCBob2xkIG5lZ2F0aXZlIHZhbHVlcywgb3IgdmFsdWVzIGxhcmdlciB0aGFuIDI1NSwgYW5kIHRoZSBhYm92ZSBleGFtcGxlCi1jb250YWlucyB0d28gc3VjaCB2YWx1ZXMuIFNvIHdlIG1ha2UgdHdvIHR3ZWFrczoKK1RoZSBhYm92ZSBkb2Vzbid0IHJlYWxseSB3b3JrLCBidXQgaXQncyBhIHN0YXJ0LiBBbiB1bnNpZ25lZCBieXRlIChieXRlIGNvZGUKK29mZnNldCkgY2FuJ3QgaG9sZCBuZWdhdGl2ZSB2YWx1ZXMsIG9yIHZhbHVlcyBsYXJnZXIgdGhhbiAyNTUsIGEgc2lnbmVkIGJ5dGUKKyhsaW5lIG51bWJlcikgY2FuJ3QgaG9sZCB2YWx1ZXMgbGFyZ2VyIHRoYW4gMTI3IG9yIGxlc3MgdGhhbiAtMTI4LCBhbmQgdGhlCithYm92ZSBleGFtcGxlIGNvbnRhaW5zIHR3byBzdWNoIHZhbHVlcy4gU28gd2UgbWFrZSB0d28gdHdlYWtzOgogCi0gKGEpIHRoZXJlJ3MgYSBkZWVwIGFzc3VtcHRpb24gdGhhdCBieXRlIGNvZGUgb2Zmc2V0cyBhbmQgdGhlaXIgY29ycmVzcG9uZGluZwotIGxpbmUgI3MgYm90aCBpbmNyZWFzZSBtb25vdG9uaWNhbGx5LCBhbmQKLSAoYikgaWYgYXQgbGVhc3Qgb25lIGNvbHVtbiBqdW1wcyBieSBtb3JlIHRoYW4gMjU1IGZyb20gb25lIHJvdyB0byB0aGUgbmV4dCwKLSBtb3JlIHRoYW4gb25lIHBhaXIgaXMgd3JpdHRlbiB0byB0aGUgdGFibGUuIEluIGNhc2UgI2IsIHRoZXJlJ3Mgbm8gd2F5IHRvIGtub3cKLSBmcm9tIGxvb2tpbmcgYXQgdGhlIHRhYmxlIGxhdGVyIGhvdyBtYW55IHdlcmUgd3JpdHRlbi4gIFRoYXQncyB0aGUgZGVsaWNhdGUKLSBwYXJ0LiAgQSB1c2VyIG9mIGNvX2xub3RhYiBkZXNpcmluZyB0byBmaW5kIHRoZSBzb3VyY2UgbGluZSBudW1iZXIKLSBjb3JyZXNwb25kaW5nIHRvIGEgYnl0ZWNvZGUgYWRkcmVzcyBBIHNob3VsZCBkbyBzb21ldGhpbmcgbGlrZSB0aGlzCisgKGEpIHRoZXJlJ3MgYSBkZWVwIGFzc3VtcHRpb24gdGhhdCBieXRlIGNvZGUgb2Zmc2V0cyBpbmNyZWFzZSBtb25vdG9uaWNhbGx5LAorIGFuZAorIChiKSBpZiBieXRlIGNvZGUgb2Zmc2V0IGp1bXBzIGJ5IG1vcmUgdGhhbiAyNTUgZnJvbSBvbmUgcm93IHRvIHRoZSBuZXh0LCBvciBpZgorIHNvdXJjZSBjb2RlIGxpbmUgbnVtYmVyIGp1bXBzIGJ5IG1vcmUgdGhhbiAxMjcgb3IgbGVzcyB0aGFuIC0xMjggZnJvbSBvbmUgcm93CisgdG8gdGhlIG5leHQsIG1vcmUgdGhhbiBvbmUgcGFpciBpcyB3cml0dGVuIHRvIHRoZSB0YWJsZS4gSW4gY2FzZSAjYiwKKyB0aGVyZSdzIG5vIHdheSB0byBrbm93IGZyb20gbG9va2luZyBhdCB0aGUgdGFibGUgbGF0ZXIgaG93IG1hbnkgd2VyZSB3cml0dGVuLgorIFRoYXQncyB0aGUgZGVsaWNhdGUgcGFydC4gIEEgdXNlciBvZiBjb19sbm90YWIgZGVzaXJpbmcgdG8gZmluZCB0aGUgc291cmNlCisgbGluZSBudW1iZXIgY29ycmVzcG9uZGluZyB0byBhIGJ5dGVjb2RlIGFkZHJlc3MgQSBzaG91bGQgZG8gc29tZXRoaW5nIGxpa2UKKyB0aGlzOgogCiAgICAgbGluZW5vID0gYWRkciA9IDAKICAgICBmb3IgYWRkcl9pbmNyLCBsaW5lX2luY3IgaW4gY29fbG5vdGFiOgogICAgICAgICBhZGRyICs9IGFkZHJfaW5jcgogICAgICAgICBpZiBhZGRyID4gQToKICAgICAgICAgICAgIHJldHVybiBsaW5lbm8KKyAgICAgICAgaWYgbGluZV9pbmNyID49IDB4ODA6CisgICAgICAgICAgICBsaW5lX2luY3IgLT0gMHgxMDAKICAgICAgICAgbGluZW5vICs9IGxpbmVfaW5jcgogCiAoSW4gQywgdGhpcyBpcyBpbXBsZW1lbnRlZCBieSBQeUNvZGVfQWRkcjJMaW5lKCkuKSAgSW4gb3JkZXIgZm9yIHRoaXMgdG8gd29yaywKIHdoZW4gdGhlIGFkZHIgZmllbGQgaW5jcmVtZW50cyBieSBtb3JlIHRoYW4gMjU1LCB0aGUgbGluZSAjIGluY3JlbWVudCBpbiBlYWNoCiBwYWlyIGdlbmVyYXRlZCBtdXN0IGJlIDAgdW50aWwgdGhlIHJlbWFpbmluZyBhZGRyIGluY3JlbWVudCBpcyA8IDI1Ni4gIFNvLCBpbgogdGhlIGV4YW1wbGUgYWJvdmUsIGFzc2VtYmxlX2xub3RhYiBpbiBjb21waWxlLmMgc2hvdWxkIG5vdCAoYXMgd2FzIGFjdHVhbGx5IGRvbmUKLXVudGlsIDIuMikgZXhwYW5kIDMwMCwgMzAwIHRvCit1bnRpbCAyLjIpIGV4cGFuZCAzMDAsIDIwMCB0bwogICAgIDI1NSwgMjU1LCA0NSwgNDUsCiBidXQgdG8KLSAgICAyNTUsIDAsIDQ1LCAyNTUsIDAsIDQ1LgorICAgIDI1NSwgMCwgNDUsIDEyOCwgMCwgNzIuCiAKIFRoZSBhYm92ZSBpcyBzdWZmaWNpZW50IHRvIHJlY29uc3RydWN0IGxpbmUgbnVtYmVycyBmb3IgdHJhY2ViYWNrcywgYnV0IG5vdCBmb3IKIGxpbmUgdHJhY2luZy4gIFRyYWNpbmcgaXMgaGFuZGxlZCBieSBQeUNvZGVfQ2hlY2tMaW5lTnVtYmVyKCkgaW4gY29kZW9iamVjdC5jCkBAIC05MCwxNiArOTUsMTYgQEAKICAgICAgICAgICAgICAgNiBQT1BfSlVNUF9JRl9GQUxTRSAgICAgICAxNwogCiAgIDMgICAgICAgICAgIDkgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDEpCi0gICAgICAgICAgICAgMTIgUFJJTlRfSVRFTSAgICAgICAgICAKKyAgICAgICAgICAgICAxMiBQUklOVF9JVEVNCiAKLSAgNCAgICAgICAgICAxMyBCUkVBS19MT09QICAgICAgICAgIAorICA0ICAgICAgICAgIDEzIEJSRUFLX0xPT1AKICAgICAgICAgICAgICAxNCBKVU1QX0FCU09MVVRFICAgICAgICAgICAgMwotICAgICAgICA+PiAgIDE3IFBPUF9CTE9DSyAgICAgICAgICAgCisgICAgICAgID4+ICAgMTcgUE9QX0JMT0NLCiAKICAgNiAgICAgICAgICAxOCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMiAoMikKLSAgICAgICAgICAgICAyMSBQUklOVF9JVEVNICAgICAgICAgIAorICAgICAgICAgICAgIDIxIFBSSU5UX0lURU0KICAgICAgICAgPj4gICAyMiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoTm9uZSkKLSAgICAgICAgICAgICAyNSBSRVRVUk5fVkFMVUUgICAgICAgIAorICAgICAgICAgICAgIDI1IFJFVFVSTl9WQUxVRQogCiBJZiAnYScgaXMgZmFsc2UsIGV4ZWN1dGlvbiB3aWxsIGp1bXAgdG8gdGhlIFBPUF9CTE9DSyBpbnN0cnVjdGlvbiBhdCBvZmZzZXQgMTcKIGFuZCB0aGUgY29fbG5vdGFiIHdpbGwgY2xhaW0gdGhhdCBleGVjdXRpb24gaGFzIG1vdmVkIHRvIGxpbmUgNCwgd2hpY2ggaXMgd3JvbmcuCmRpZmYgLS1naXQgYS9PYmplY3RzL2xvbmdvYmplY3QuYyBiL09iamVjdHMvbG9uZ29iamVjdC5jCmluZGV4IDg1MTBlOTAuLmFkMjM5Y2UgMTAwNjQ0Ci0tLSBhL09iamVjdHMvbG9uZ29iamVjdC5jCisrKyBiL09iamVjdHMvbG9uZ29iamVjdC5jCkBAIC03MjIsNyArNzIyLDcgQEAKICAgICBhc3NlcnQobmRpZ2l0cyA9PSAwIHx8IHYtPm9iX2RpZ2l0W25kaWdpdHMgLSAxXSAhPSAwKTsKICAgICBpZiAobmRpZ2l0cyA+IDApIHsKICAgICAgICAgZGlnaXQgbXNkID0gdi0+b2JfZGlnaXRbbmRpZ2l0cyAtIDFdOwotICAgICAgICBpZiAoKHNpemVfdCkobmRpZ2l0cyAtIDEpID4gUFlfU0laRV9NQVggLyAoc2l6ZV90KVB5TG9uZ19TSElGVCkKKyAgICAgICAgaWYgKChzaXplX3QpKG5kaWdpdHMgLSAxKSA+IFNJWkVfTUFYIC8gKHNpemVfdClQeUxvbmdfU0hJRlQpCiAgICAgICAgICAgICBnb3RvIE92ZXJmbG93OwogICAgICAgICByZXN1bHQgPSAoc2l6ZV90KShuZGlnaXRzIC0gMSkgKiAoc2l6ZV90KVB5TG9uZ19TSElGVDsKICAgICAgICAgZG8gewpAQCAtOTkwLDE2ICs5OTAsMTMgQEAKIFB5TG9uZ19Gcm9tVm9pZFB0cih2b2lkICpwKQogewogI2lmIFNJWkVPRl9WT0lEX1AgPD0gU0laRU9GX0xPTkcKLSAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoKHVuc2lnbmVkIGxvbmcpKFB5X3VpbnRwdHJfdClwKTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoKHVuc2lnbmVkIGxvbmcpKHVpbnRwdHJfdClwKTsKICNlbHNlCiAKLSNpZm5kZWYgSEFWRV9MT05HX0xPTkcKLSMgICBlcnJvciAiUHlMb25nX0Zyb21Wb2lkUHRyOiBzaXplb2Yodm9pZCopID4gc2l6ZW9mKGxvbmcpLCBidXQgbm8gbG9uZyBsb25nIgotI2VuZGlmCiAjaWYgU0laRU9GX0xPTkdfTE9ORyA8IFNJWkVPRl9WT0lEX1AKLSMgICBlcnJvciAiUHlMb25nX0Zyb21Wb2lkUHRyOiBzaXplb2YoUFlfTE9OR19MT05HKSA8IHNpemVvZih2b2lkKikiCisjICAgZXJyb3IgIlB5TG9uZ19Gcm9tVm9pZFB0cjogc2l6ZW9mKGxvbmcgbG9uZykgPCBzaXplb2Yodm9pZCopIgogI2VuZGlmCi0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZygodW5zaWduZWQgUFlfTE9OR19MT05HKShQeV91aW50cHRyX3QpcCk7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZygodW5zaWduZWQgbG9uZyBsb25nKSh1aW50cHRyX3QpcCk7CiAjZW5kaWYgLyogU0laRU9GX1ZPSURfUCA8PSBTSVpFT0ZfTE9ORyAqLwogCiB9CkBAIC0xMDE4LDEzICsxMDE1LDEwIEBACiAgICAgICAgIHggPSBQeUxvbmdfQXNVbnNpZ25lZExvbmcodnYpOwogI2Vsc2UKIAotI2lmbmRlZiBIQVZFX0xPTkdfTE9ORwotIyAgIGVycm9yICJQeUxvbmdfQXNWb2lkUHRyOiBzaXplb2Yodm9pZCopID4gc2l6ZW9mKGxvbmcpLCBidXQgbm8gbG9uZyBsb25nIgotI2VuZGlmCiAjaWYgU0laRU9GX0xPTkdfTE9ORyA8IFNJWkVPRl9WT0lEX1AKLSMgICBlcnJvciAiUHlMb25nX0FzVm9pZFB0cjogc2l6ZW9mKFBZX0xPTkdfTE9ORykgPCBzaXplb2Yodm9pZCopIgorIyAgIGVycm9yICJQeUxvbmdfQXNWb2lkUHRyOiBzaXplb2YobG9uZyBsb25nKSA8IHNpemVvZih2b2lkKikiCiAjZW5kaWYKLSAgICBQWV9MT05HX0xPTkcgeDsKKyAgICBsb25nIGxvbmcgeDsKIAogICAgIGlmIChQeUxvbmdfQ2hlY2sodnYpICYmIF9QeUxvbmdfU2lnbih2dikgPCAwKQogICAgICAgICB4ID0gUHlMb25nX0FzTG9uZ0xvbmcodnYpOwpAQCAtMTAzOCwyMiArMTAzMiwyMCBAQAogICAgIHJldHVybiAodm9pZCAqKXg7CiB9CiAKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotCi0vKiBJbml0aWFsIFBZX0xPTkdfTE9ORyBzdXBwb3J0IGJ5IENocmlzIEhlcmJvcnRoIChjaHJpc2hAcW54LmNvbSksIGxhdGVyCisvKiBJbml0aWFsIGxvbmcgbG9uZyBzdXBwb3J0IGJ5IENocmlzIEhlcmJvcnRoIChjaHJpc2hAcW54LmNvbSksIGxhdGVyCiAgKiByZXdyaXR0ZW4gdG8gdXNlIHRoZSBuZXdlciBQeUxvbmdfe0FzLEZyb219Qnl0ZUFycmF5IEFQSS4KICAqLwogCi0jZGVmaW5lIFBZX0FCU19MTE9OR19NSU4gKDAtKHVuc2lnbmVkIFBZX0xPTkdfTE9ORylQWV9MTE9OR19NSU4pCisjZGVmaW5lIFBZX0FCU19MTE9OR19NSU4gKDAtKHVuc2lnbmVkIGxvbmcgbG9uZylQWV9MTE9OR19NSU4pCiAKLS8qIENyZWF0ZSBhIG5ldyBpbnQgb2JqZWN0IGZyb20gYSBDIFBZX0xPTkdfTE9ORyBpbnQuICovCisvKiBDcmVhdGUgYSBuZXcgaW50IG9iamVjdCBmcm9tIGEgQyBsb25nIGxvbmcgaW50LiAqLwogCiBQeU9iamVjdCAqCi1QeUxvbmdfRnJvbUxvbmdMb25nKFBZX0xPTkdfTE9ORyBpdmFsKQorUHlMb25nX0Zyb21Mb25nTG9uZyhsb25nIGxvbmcgaXZhbCkKIHsKICAgICBQeUxvbmdPYmplY3QgKnY7Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIGFic19pdmFsOwotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB0OyAgLyogdW5zaWduZWQgc28gPj4gZG9lc24ndCBwcm9wYWdhdGUgc2lnbiBiaXQgKi8KKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgYWJzX2l2YWw7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHQ7ICAvKiB1bnNpZ25lZCBzbyA+PiBkb2Vzbid0IHByb3BhZ2F0ZSBzaWduIGJpdCAqLwogICAgIGludCBuZGlnaXRzID0gMDsKICAgICBpbnQgbmVnYXRpdmUgPSAwOwogCkBAIC0xMDYxLDExICsxMDUzLDExIEBACiAgICAgaWYgKGl2YWwgPCAwKSB7CiAgICAgICAgIC8qIGF2b2lkIHNpZ25lZCBvdmVyZmxvdyBvbiBuZWdhdGlvbjsgIHNlZSBjb21tZW50cwogICAgICAgICAgICBpbiBQeUxvbmdfRnJvbUxvbmcgYWJvdmUuICovCi0gICAgICAgIGFic19pdmFsID0gKHVuc2lnbmVkIFBZX0xPTkdfTE9ORykoLTEtaXZhbCkgKyAxOworICAgICAgICBhYnNfaXZhbCA9ICh1bnNpZ25lZCBsb25nIGxvbmcpKC0xLWl2YWwpICsgMTsKICAgICAgICAgbmVnYXRpdmUgPSAxOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgYWJzX2l2YWwgPSAodW5zaWduZWQgUFlfTE9OR19MT05HKWl2YWw7CisgICAgICAgIGFic19pdmFsID0gKHVuc2lnbmVkIGxvbmcgbG9uZylpdmFsOwogICAgIH0KIAogICAgIC8qIENvdW50IHRoZSBudW1iZXIgb2YgUHl0aG9uIGRpZ2l0cy4KQEAgLTEwOTAsMTkgKzEwODIsMTkgQEAKICAgICByZXR1cm4gKFB5T2JqZWN0ICopdjsKIH0KIAotLyogQ3JlYXRlIGEgbmV3IGludCBvYmplY3QgZnJvbSBhIEMgdW5zaWduZWQgUFlfTE9OR19MT05HIGludC4gKi8KKy8qIENyZWF0ZSBhIG5ldyBpbnQgb2JqZWN0IGZyb20gYSBDIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQuICovCiAKIFB5T2JqZWN0ICoKLVB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZyh1bnNpZ25lZCBQWV9MT05HX0xPTkcgaXZhbCkKK1B5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZyh1bnNpZ25lZCBsb25nIGxvbmcgaXZhbCkKIHsKICAgICBQeUxvbmdPYmplY3QgKnY7Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIHQ7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHQ7CiAgICAgaW50IG5kaWdpdHMgPSAwOwogCiAgICAgaWYgKGl2YWwgPCBQeUxvbmdfQkFTRSkKICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZylpdmFsKTsKICAgICAvKiBDb3VudCB0aGUgbnVtYmVyIG9mIFB5dGhvbiBkaWdpdHMuICovCi0gICAgdCA9ICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpaXZhbDsKKyAgICB0ID0gKHVuc2lnbmVkIGxvbmcgbG9uZylpdmFsOwogICAgIHdoaWxlICh0KSB7CiAgICAgICAgICsrbmRpZ2l0czsKICAgICAgICAgdCA+Pj0gUHlMb25nX1NISUZUOwpAQCAtMTE5MSwxMSArMTE4MywxMSBAQAogLyogR2V0IGEgQyBsb25nIGxvbmcgaW50IGZyb20gYW4gaW50IG9iamVjdCBvciBhbnkgb2JqZWN0IHRoYXQgaGFzIGFuCiAgICBfX2ludF9fIG1ldGhvZC4gIFJldHVybiAtMSBhbmQgc2V0IGFuIGVycm9yIGlmIG92ZXJmbG93IG9jY3Vycy4gKi8KIAotUFlfTE9OR19MT05HCitsb25nIGxvbmcKIFB5TG9uZ19Bc0xvbmdMb25nKFB5T2JqZWN0ICp2dikKIHsKICAgICBQeUxvbmdPYmplY3QgKnY7Ci0gICAgUFlfTE9OR19MT05HIGJ5dGVzOworICAgIGxvbmcgbG9uZyBieXRlczsKICAgICBpbnQgcmVzOwogICAgIGludCBkb19kZWNyZWYgPSAwOyAvKiBpZiBuYl9pbnQgd2FzIGNhbGxlZCAqLwogCkBAIC0xMjMzLDMwICsxMjI1LDMwIEBACiAgICAgICAgIFB5X0RFQ1JFRih2KTsKICAgICB9CiAKLSAgICAvKiBQbGFuIDkgY2FuJ3QgaGFuZGxlIFBZX0xPTkdfTE9ORyBpbiA/IDogZXhwcmVzc2lvbnMgKi8KKyAgICAvKiBQbGFuIDkgY2FuJ3QgaGFuZGxlIGxvbmcgbG9uZyBpbiA/IDogZXhwcmVzc2lvbnMgKi8KICAgICBpZiAocmVzIDwgMCkKLSAgICAgICAgcmV0dXJuIChQWV9MT05HX0xPTkcpLTE7CisgICAgICAgIHJldHVybiAobG9uZyBsb25nKS0xOwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIGJ5dGVzOwogfQogCi0vKiBHZXQgYSBDIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBpbnQgZnJvbSBhbiBpbnQgb2JqZWN0LgorLyogR2V0IGEgQyB1bnNpZ25lZCBsb25nIGxvbmcgaW50IGZyb20gYW4gaW50IG9iamVjdC4KICAgIFJldHVybiAtMSBhbmQgc2V0IGFuIGVycm9yIGlmIG92ZXJmbG93IG9jY3Vycy4gKi8KIAotdW5zaWduZWQgUFlfTE9OR19MT05HCit1bnNpZ25lZCBsb25nIGxvbmcKIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcoUHlPYmplY3QgKnZ2KQogewogICAgIFB5TG9uZ09iamVjdCAqdjsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgYnl0ZXM7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzOwogICAgIGludCByZXM7CiAKICAgICBpZiAodnYgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKLSAgICAgICAgcmV0dXJuICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpLTE7CisgICAgICAgIHJldHVybiAodW5zaWduZWQgbG9uZyBsb25nKS0xOwogICAgIH0KICAgICBpZiAoIVB5TG9uZ19DaGVjayh2dikpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImFuIGludGVnZXIgaXMgcmVxdWlyZWQiKTsKLSAgICAgICAgcmV0dXJuICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpLTE7CisgICAgICAgIHJldHVybiAodW5zaWduZWQgbG9uZyBsb25nKS0xOwogICAgIH0KIAogICAgIHYgPSAoUHlMb25nT2JqZWN0Kil2djsKQEAgLTEyNjgsOSArMTI2MCw5IEBACiAgICAgcmVzID0gX1B5TG9uZ19Bc0J5dGVBcnJheSgoUHlMb25nT2JqZWN0ICopdnYsICh1bnNpZ25lZCBjaGFyICopJmJ5dGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0laRU9GX0xPTkdfTE9ORywgUFlfTElUVExFX0VORElBTiwgMCk7CiAKLSAgICAvKiBQbGFuIDkgY2FuJ3QgaGFuZGxlIFBZX0xPTkdfTE9ORyBpbiA/IDogZXhwcmVzc2lvbnMgKi8KKyAgICAvKiBQbGFuIDkgY2FuJ3QgaGFuZGxlIGxvbmcgbG9uZyBpbiA/IDogZXhwcmVzc2lvbnMgKi8KICAgICBpZiAocmVzIDwgMCkKLSAgICAgICAgcmV0dXJuICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpcmVzOworICAgICAgICByZXR1cm4gKHVuc2lnbmVkIGxvbmcgbG9uZylyZXM7CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gYnl0ZXM7CiB9CkBAIC0xMjc4LDExICsxMjcwLDExIEBACiAvKiBHZXQgYSBDIHVuc2lnbmVkIGxvbmcgaW50IGZyb20gYW4gaW50IG9iamVjdCwgaWdub3JpbmcgdGhlIGhpZ2ggYml0cy4KICAgIFJldHVybnMgLTEgYW5kIHNldHMgYW4gZXJyb3IgY29uZGl0aW9uIGlmIGFuIGVycm9yIG9jY3Vycy4gKi8KIAotc3RhdGljIHVuc2lnbmVkIFBZX0xPTkdfTE9ORworc3RhdGljIHVuc2lnbmVkIGxvbmcgbG9uZwogX1B5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrKFB5T2JqZWN0ICp2dikKIHsKICAgICBQeUxvbmdPYmplY3QgKnY7Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIHg7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHg7CiAgICAgUHlfc3NpemVfdCBpOwogICAgIGludCBzaWduOwogCkBAIC0xMzA4LDExICsxMzAwLDExIEBACiAgICAgcmV0dXJuIHggKiBzaWduOwogfQogCi11bnNpZ25lZCBQWV9MT05HX0xPTkcKK3Vuc2lnbmVkIGxvbmcgbG9uZwogUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZ01hc2soUHlPYmplY3QgKm9wKQogewogICAgIFB5TG9uZ09iamVjdCAqbG87Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIHZhbDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgdmFsOwogCiAgICAgaWYgKG9wID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CkBAIC0xMzI1LDcgKzEzMTcsNyBAQAogCiAgICAgbG8gPSBfUHlMb25nX0Zyb21OYkludChvcCk7CiAgICAgaWYgKGxvID09IE5VTEwpCi0gICAgICAgIHJldHVybiAodW5zaWduZWQgUFlfTE9OR19MT05HKS0xOworICAgICAgICByZXR1cm4gKHVuc2lnbmVkIGxvbmcgbG9uZyktMTsKIAogICAgIHZhbCA9IF9QeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzaygoUHlPYmplY3QgKilsbyk7CiAgICAgUHlfREVDUkVGKGxvKTsKQEAgLTEzNDIsMTMgKzEzMzQsMTMgQEAKICAgIEluIHRoaXMgY2FzZSAqb3ZlcmZsb3cgd2lsbCBiZSAwLgogKi8KIAotUFlfTE9OR19MT05HCitsb25nIGxvbmcKIFB5TG9uZ19Bc0xvbmdMb25nQW5kT3ZlcmZsb3coUHlPYmplY3QgKnZ2LCBpbnQgKm92ZXJmbG93KQogewogICAgIC8qIFRoaXMgdmVyc2lvbiBieSBUaW0gUGV0ZXJzICovCiAgICAgUHlMb25nT2JqZWN0ICp2OwotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB4LCBwcmV2OwotICAgIFBZX0xPTkdfTE9ORyByZXM7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHgsIHByZXY7CisgICAgbG9uZyBsb25nIHJlczsKICAgICBQeV9zc2l6ZV90IGk7CiAgICAgaW50IHNpZ247CiAgICAgaW50IGRvX2RlY3JlZiA9IDA7IC8qIGlmIG5iX2ludCB3YXMgY2FsbGVkICovCkBAIC0xNDAwLDggKzEzOTIsOCBAQAogICAgICAgICAvKiBIYXZlbid0IGxvc3QgYW55IGJpdHMsIGJ1dCBjYXN0aW5nIHRvIGxvbmcgcmVxdWlyZXMgZXh0cmEKICAgICAgICAgICogY2FyZSAoc2VlIGNvbW1lbnQgYWJvdmUpLgogICAgICAgICAgKi8KLSAgICAgICAgaWYgKHggPD0gKHVuc2lnbmVkIFBZX0xPTkdfTE9ORylQWV9MTE9OR19NQVgpIHsKLSAgICAgICAgICAgIHJlcyA9IChQWV9MT05HX0xPTkcpeCAqIHNpZ247CisgICAgICAgIGlmICh4IDw9ICh1bnNpZ25lZCBsb25nIGxvbmcpUFlfTExPTkdfTUFYKSB7CisgICAgICAgICAgICByZXMgPSAobG9uZyBsb25nKXggKiBzaWduOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKHNpZ24gPCAwICYmIHggPT0gUFlfQUJTX0xMT05HX01JTikgewogICAgICAgICAgICAgcmVzID0gUFlfTExPTkdfTUlOOwpAQCAtMTQxOCw4ICsxNDEwLDYgQEAKICAgICByZXR1cm4gcmVzOwogfQogCi0jZW5kaWYgLyogSEFWRV9MT05HX0xPTkcgKi8KLQogI2RlZmluZSBDSEVDS19CSU5PUCh2LHcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgaWYgKCFQeUxvbmdfQ2hlY2sodikgfHwgIVB5TG9uZ19DaGVjayh3KSkgICAgICAgXApAQCAtMTU4MywxMyArMTU3MywxNiBAQAogc3RhdGljIGludAogbG9uZ190b19kZWNpbWFsX3N0cmluZ19pbnRlcm5hbChQeU9iamVjdCAqYWEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqcF9vdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlCeXRlc1dyaXRlciAqYnl0ZXNfd3JpdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqYnl0ZXNfc3RyKQogewogICAgIFB5TG9uZ09iamVjdCAqc2NyYXRjaCwgKmE7Ci0gICAgUHlPYmplY3QgKnN0cjsKKyAgICBQeU9iamVjdCAqc3RyID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IHNpemUsIHN0cmxlbiwgc2l6ZV9hLCBpLCBqOwogICAgIGRpZ2l0ICpwb3V0LCAqcGluLCByZW0sIHRlbnBvdzsKICAgICBpbnQgbmVnYXRpdmU7CisgICAgaW50IGQ7CiAgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kOwogCiAgICAgYSA9IChQeUxvbmdPYmplY3QgKilhYTsKQEAgLTE2MDcsMTUgKzE2MDAsMTcgQEAKIAogICAgICAgIEJ1dCBsb2cyKGEpIDwgc2l6ZV9hICogUHlMb25nX1NISUZULCBhbmQKICAgICAgICBsb2cyKF9QeUxvbmdfREVDSU1BTF9CQVNFKSA9IGxvZzIoMTApICogX1B5TG9uZ19ERUNJTUFMX1NISUZUCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiAzICogX1B5TG9uZ19ERUNJTUFMX1NISUZUCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiAzLjMgKiBfUHlMb25nX0RFQ0lNQUxfU0hJRlQKKworICAgICAgICAgc2l6ZV9hICogUHlMb25nX1NISUZUIC8gKDMuMyAqIF9QeUxvbmdfREVDSU1BTF9TSElGVCkgPQorICAgICAgICAgICAgIHNpemVfYSArIHNpemVfYSAvIGQgPCBzaXplX2EgKyBzaXplX2EgLyBmbG9vcihkKSwKKyAgICAgICB3aGVyZSBkID0gKDMuMyAqIF9QeUxvbmdfREVDSU1BTF9TSElGVCkgLworICAgICAgICAgICAgICAgICAoUHlMb25nX1NISUZUIC0gMy4zICogX1B5TG9uZ19ERUNJTUFMX1NISUZUKQogICAgICovCi0gICAgaWYgKHNpemVfYSA+IFBZX1NTSVpFX1RfTUFYIC8gUHlMb25nX1NISUZUKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImludCB0b28gbGFyZ2UgdG8gZm9ybWF0Iik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgLyogdGhlIGV4cHJlc3Npb24gc2l6ZV9hICogUHlMb25nX1NISUZUIGlzIG5vdyBzYWZlIGZyb20gb3ZlcmZsb3cgKi8KLSAgICBzaXplID0gMSArIHNpemVfYSAqIFB5TG9uZ19TSElGVCAvICgzICogX1B5TG9uZ19ERUNJTUFMX1NISUZUKTsKKyAgICBkID0gKDMzICogX1B5TG9uZ19ERUNJTUFMX1NISUZUKSAvCisgICAgICAgICgxMCAqIFB5TG9uZ19TSElGVCAtIDMzICogX1B5TG9uZ19ERUNJTUFMX1NISUZUKTsKKyAgICBhc3NlcnQoc2l6ZV9hIDwgUFlfU1NJWkVfVF9NQVgvMik7CisgICAgc2l6ZSA9IDEgKyBzaXplX2EgKyBzaXplX2EgLyBkOwogICAgIHNjcmF0Y2ggPSBfUHlMb25nX05ldyhzaXplKTsKICAgICBpZiAoc2NyYXRjaCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7CkBAIC0xNjYzLDcgKzE2NTgsMTMgQEAKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgICAgICBraW5kID0gd3JpdGVyLT5raW5kOwotICAgICAgICBzdHIgPSBOVUxMOworICAgIH0KKyAgICBlbHNlIGlmIChieXRlc193cml0ZXIpIHsKKyAgICAgICAgKmJ5dGVzX3N0ciA9IF9QeUJ5dGVzV3JpdGVyX1ByZXBhcmUoYnl0ZXNfd3JpdGVyLCAqYnl0ZXNfc3RyLCBzdHJsZW4pOworICAgICAgICBpZiAoKmJ5dGVzX3N0ciA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoc2NyYXRjaCk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIHN0ciA9IFB5VW5pY29kZV9OZXcoc3RybGVuLCAnOScpOwpAQCAtMTY3NCwxMyArMTY3NSw4IEBACiAgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzdHIpOwogICAgIH0KIAotI2RlZmluZSBXUklURV9ESUdJVFMoVFlQRSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyNkZWZpbmUgV1JJVEVfRElHSVRTKHApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBpZiAod3JpdGVyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHAgPSAoVFlQRSopUHlVbmljb2RlX0RBVEEod3JpdGVyLT5idWZmZXIpICsgd3JpdGVyLT5wb3MgKyBzdHJsZW47IFwKLSAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBwID0gKFRZUEUqKVB5VW5pY29kZV9EQVRBKHN0cikgKyBzdHJsZW47ICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgLyogcG91dFswXSB0aHJvdWdoIHBvdXRbc2l6ZS0yXSBjb250cmlidXRlIGV4YWN0bHkgICAgICAgICAgICBcCiAgICAgICAgICAgIF9QeUxvbmdfREVDSU1BTF9TSElGVCBkaWdpdHMgZWFjaCAqLyAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBmb3IgKGk9MDsgaSA8IHNpemUgLSAxOyBpKyspIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTE3MDAsNiArMTY5NiwxNiBAQAogICAgICAgICAvKiBhbmQgc2lnbiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgaWYgKG5lZ2F0aXZlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAqLS1wID0gJy0nOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKDApCisKKyNkZWZpbmUgV1JJVEVfVU5JQ09ERV9ESUdJVFMoVFlQRSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAod3JpdGVyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHAgPSAoVFlQRSopUHlVbmljb2RlX0RBVEEod3JpdGVyLT5idWZmZXIpICsgd3JpdGVyLT5wb3MgKyBzdHJsZW47IFwKKyAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBwID0gKFRZUEUqKVB5VW5pY29kZV9EQVRBKHN0cikgKyBzdHJsZW47ICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgV1JJVEVfRElHSVRTKHApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAvKiBjaGVjayB3ZSd2ZSBjb3VudGVkIGNvcnJlY3RseSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgaWYgKHdyaXRlcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0xNzA5LDI1ICsxNzE1LDM0IEBACiAgICAgfSB3aGlsZSAoMCkKIAogICAgIC8qIGZpbGwgdGhlIHN0cmluZyByaWdodC10by1sZWZ0ICovCi0gICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpIHsKKyAgICBpZiAoYnl0ZXNfd3JpdGVyKSB7CisgICAgICAgIGNoYXIgKnAgPSAqYnl0ZXNfc3RyICsgc3RybGVuOworICAgICAgICBXUklURV9ESUdJVFMocCk7CisgICAgICAgIGFzc2VydChwID09ICpieXRlc19zdHIpOworICAgIH0KKyAgICBlbHNlIGlmIChraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKSB7CiAgICAgICAgIFB5X1VDUzEgKnA7Ci0gICAgICAgIFdSSVRFX0RJR0lUUyhQeV9VQ1MxKTsKKyAgICAgICAgV1JJVEVfVU5JQ09ERV9ESUdJVFMoUHlfVUNTMSk7CiAgICAgfQogICAgIGVsc2UgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQpIHsKICAgICAgICAgUHlfVUNTMiAqcDsKLSAgICAgICAgV1JJVEVfRElHSVRTKFB5X1VDUzIpOworICAgICAgICBXUklURV9VTklDT0RFX0RJR0lUUyhQeV9VQ1MyKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIFB5X1VDUzQgKnA7CiAgICAgICAgIGFzc2VydCAoa2luZCA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORCk7Ci0gICAgICAgIFdSSVRFX0RJR0lUUyhQeV9VQ1M0KTsKKyAgICAgICAgV1JJVEVfVU5JQ09ERV9ESUdJVFMoUHlfVUNTNCk7CiAgICAgfQogI3VuZGVmIFdSSVRFX0RJR0lUUworI3VuZGVmIFdSSVRFX1VOSUNPREVfRElHSVRTCiAKICAgICBQeV9ERUNSRUYoc2NyYXRjaCk7CiAgICAgaWYgKHdyaXRlcikgewogICAgICAgICB3cml0ZXItPnBvcyArPSBzdHJsZW47CiAgICAgfQorICAgIGVsc2UgaWYgKGJ5dGVzX3dyaXRlcikgeworICAgICAgICAoKmJ5dGVzX3N0cikgKz0gc3RybGVuOworICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShzdHIsIDEpKTsKICAgICAgICAgKnBfb3V0cHV0ID0gKFB5T2JqZWN0ICopc3RyOwpAQCAtMTczOSw3ICsxNzU0LDcgQEAKIGxvbmdfdG9fZGVjaW1hbF9zdHJpbmcoUHlPYmplY3QgKmFhKQogewogICAgIFB5T2JqZWN0ICp2OwotICAgIGlmIChsb25nX3RvX2RlY2ltYWxfc3RyaW5nX2ludGVybmFsKGFhLCAmdiwgTlVMTCkgPT0gLTEpCisgICAgaWYgKGxvbmdfdG9fZGVjaW1hbF9zdHJpbmdfaW50ZXJuYWwoYWEsICZ2LCBOVUxMLCBOVUxMLCBOVUxMKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIHY7CiB9CkBAIC0xNzUxLDEwICsxNzY2LDExIEBACiAKIHN0YXRpYyBpbnQKIGxvbmdfZm9ybWF0X2JpbmFyeShQeU9iamVjdCAqYWEsIGludCBiYXNlLCBpbnQgYWx0ZXJuYXRlLAotICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqcF9vdXRwdXQsIF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlcikKKyAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKnBfb3V0cHV0LCBfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsCisgICAgICAgICAgICAgICAgICAgX1B5Qnl0ZXNXcml0ZXIgKmJ5dGVzX3dyaXRlciwgY2hhciAqKmJ5dGVzX3N0cikKIHsKICAgICBQeUxvbmdPYmplY3QgKmEgPSAoUHlMb25nT2JqZWN0ICopYWE7Ci0gICAgUHlPYmplY3QgKnY7CisgICAgUHlPYmplY3QgKnYgPSBOVUxMOwogICAgIFB5X3NzaXplX3Qgc3o7CiAgICAgUHlfc3NpemVfdCBzaXplX2E7CiAgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kOwpAQCAtMTgxMSw3ICsxODI3LDExIEBACiAgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUod3JpdGVyLCBzeiwgJ3gnKSA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAga2luZCA9IHdyaXRlci0+a2luZDsKLSAgICAgICAgdiA9IE5VTEw7CisgICAgfQorICAgIGVsc2UgaWYgKGJ5dGVzX3dyaXRlcikgeworICAgICAgICAqYnl0ZXNfc3RyID0gX1B5Qnl0ZXNXcml0ZXJfUHJlcGFyZShieXRlc193cml0ZXIsICpieXRlc19zdHIsIHN6KTsKKyAgICAgICAgaWYgKCpieXRlc19zdHIgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIHYgPSBQeVVuaWNvZGVfTmV3KHN6LCAneCcpOwpAQCAtMTgyMCwxMyArMTg0MCw4IEBACiAgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh2KTsKICAgICB9CiAKLSNkZWZpbmUgV1JJVEVfRElHSVRTKFRZUEUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyNkZWZpbmUgV1JJVEVfRElHSVRTKHApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgaWYgKHdyaXRlcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHAgPSAoVFlQRSopUHlVbmljb2RlX0RBVEEod3JpdGVyLT5idWZmZXIpICsgd3JpdGVyLT5wb3MgKyBzejsgXAotICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgcCA9IChUWVBFKilQeVVuaWNvZGVfREFUQSh2KSArIHN6OyAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBpZiAoc2l6ZV9hID09IDApIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgKi0tcCA9ICcwJzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtMTg2MSwzMCArMTg3Niw1MCBAQAogICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBpZiAobmVnYXRpdmUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgKi0tcCA9ICctJzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKDApCisKKyNkZWZpbmUgV1JJVEVfVU5JQ09ERV9ESUdJVFMoVFlQRSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKHdyaXRlcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHAgPSAoVFlQRSopUHlVbmljb2RlX0RBVEEod3JpdGVyLT5idWZmZXIpICsgd3JpdGVyLT5wb3MgKyBzejsgXAorICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcCA9IChUWVBFKilQeVVuaWNvZGVfREFUQSh2KSArIHN6OyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBXUklURV9ESUdJVFMocCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBpZiAod3JpdGVyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgYXNzZXJ0KHAgPT0gKChUWVBFKilQeVVuaWNvZGVfREFUQSh3cml0ZXItPmJ1ZmZlcikgKyB3cml0ZXItPnBvcykpOyBcCiAgICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICBhc3NlcnQocCA9PSAoVFlQRSopUHlVbmljb2RlX0RBVEEodikpOyAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfSB3aGlsZSAoMCkKIAotICAgIGlmIChraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKSB7CisgICAgaWYgKGJ5dGVzX3dyaXRlcikgeworICAgICAgICBjaGFyICpwID0gKmJ5dGVzX3N0ciArIHN6OworICAgICAgICBXUklURV9ESUdJVFMocCk7CisgICAgICAgIGFzc2VydChwID09ICpieXRlc19zdHIpOworICAgIH0KKyAgICBlbHNlIGlmIChraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKSB7CiAgICAgICAgIFB5X1VDUzEgKnA7Ci0gICAgICAgIFdSSVRFX0RJR0lUUyhQeV9VQ1MxKTsKKyAgICAgICAgV1JJVEVfVU5JQ09ERV9ESUdJVFMoUHlfVUNTMSk7CiAgICAgfQogICAgIGVsc2UgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQpIHsKICAgICAgICAgUHlfVUNTMiAqcDsKLSAgICAgICAgV1JJVEVfRElHSVRTKFB5X1VDUzIpOworICAgICAgICBXUklURV9VTklDT0RFX0RJR0lUUyhQeV9VQ1MyKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIFB5X1VDUzQgKnA7CiAgICAgICAgIGFzc2VydCAoa2luZCA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORCk7Ci0gICAgICAgIFdSSVRFX0RJR0lUUyhQeV9VQ1M0KTsKKyAgICAgICAgV1JJVEVfVU5JQ09ERV9ESUdJVFMoUHlfVUNTNCk7CiAgICAgfQogI3VuZGVmIFdSSVRFX0RJR0lUUworI3VuZGVmIFdSSVRFX1VOSUNPREVfRElHSVRTCiAKICAgICBpZiAod3JpdGVyKSB7CiAgICAgICAgIHdyaXRlci0+cG9zICs9IHN6OwogICAgIH0KKyAgICBlbHNlIGlmIChieXRlc193cml0ZXIpIHsKKyAgICAgICAgKCpieXRlc19zdHIpICs9IHN6OworICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh2LCAxKSk7CiAgICAgICAgICpwX291dHB1dCA9IHY7CkBAIC0xODk4LDkgKzE5MzMsOSBAQAogICAgIFB5T2JqZWN0ICpzdHI7CiAgICAgaW50IGVycjsKICAgICBpZiAoYmFzZSA9PSAxMCkKLSAgICAgICAgZXJyID0gbG9uZ190b19kZWNpbWFsX3N0cmluZ19pbnRlcm5hbChvYmosICZzdHIsIE5VTEwpOworICAgICAgICBlcnIgPSBsb25nX3RvX2RlY2ltYWxfc3RyaW5nX2ludGVybmFsKG9iaiwgJnN0ciwgTlVMTCwgTlVMTCwgTlVMTCk7CiAgICAgZWxzZQotICAgICAgICBlcnIgPSBsb25nX2Zvcm1hdF9iaW5hcnkob2JqLCBiYXNlLCAxLCAmc3RyLCBOVUxMKTsKKyAgICAgICAgZXJyID0gbG9uZ19mb3JtYXRfYmluYXJ5KG9iaiwgYmFzZSwgMSwgJnN0ciwgTlVMTCwgTlVMTCwgTlVMTCk7CiAgICAgaWYgKGVyciA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIHN0cjsKQEAgLTE5MTIsOSArMTk0NywzMSBAQAogICAgICAgICAgICAgICAgICAgICAgaW50IGJhc2UsIGludCBhbHRlcm5hdGUpCiB7CiAgICAgaWYgKGJhc2UgPT0gMTApCi0gICAgICAgIHJldHVybiBsb25nX3RvX2RlY2ltYWxfc3RyaW5nX2ludGVybmFsKG9iaiwgTlVMTCwgd3JpdGVyKTsKKyAgICAgICAgcmV0dXJuIGxvbmdfdG9fZGVjaW1hbF9zdHJpbmdfaW50ZXJuYWwob2JqLCBOVUxMLCB3cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwpOwogICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIGxvbmdfZm9ybWF0X2JpbmFyeShvYmosIGJhc2UsIGFsdGVybmF0ZSwgTlVMTCwgd3JpdGVyKTsKKyAgICAgICAgcmV0dXJuIGxvbmdfZm9ybWF0X2JpbmFyeShvYmosIGJhc2UsIGFsdGVybmF0ZSwgTlVMTCwgd3JpdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwpOworfQorCitjaGFyKgorX1B5TG9uZ19Gb3JtYXRCeXRlc1dyaXRlcihfUHlCeXRlc1dyaXRlciAqd3JpdGVyLCBjaGFyICpzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpvYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBiYXNlLCBpbnQgYWx0ZXJuYXRlKQoreworICAgIGNoYXIgKnN0cjI7CisgICAgaW50IHJlczsKKyAgICBzdHIyID0gc3RyOworICAgIGlmIChiYXNlID09IDEwKQorICAgICAgICByZXMgPSBsb25nX3RvX2RlY2ltYWxfc3RyaW5nX2ludGVybmFsKG9iaiwgTlVMTCwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIsICZzdHIyKTsKKyAgICBlbHNlCisgICAgICAgIHJlcyA9IGxvbmdfZm9ybWF0X2JpbmFyeShvYmosIGJhc2UsIGFsdGVybmF0ZSwgTlVMTCwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlciwgJnN0cjIpOworICAgIGlmIChyZXMgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBhc3NlcnQoc3RyMiAhPSBOVUxMKTsKKyAgICByZXR1cm4gc3RyMjsKIH0KIAogLyogVGFibGUgb2YgZGlnaXQgdmFsdWVzIGZvciA4LWJpdCBzdHJpbmcgLT4gaW50ZWdlciBjb252ZXJzaW9uLgpAQCAtMTk0OCwxMiArMjAwNSwxOCBAQAogICogbm9uLWRpZ2l0ICh3aGljaCBtYXkgYmUgKnN0ciEpLiAgQSBub3JtYWxpemVkIGludCBpcyByZXR1cm5lZC4KICAqIFRoZSBwb2ludCB0byB0aGlzIHJvdXRpbmUgaXMgdGhhdCBpdCB0YWtlcyB0aW1lIGxpbmVhciBpbiB0aGUgbnVtYmVyIG9mCiAgKiBzdHJpbmcgY2hhcmFjdGVycy4KKyAqCisgKiBSZXR1cm4gdmFsdWVzOgorICogICAtMSBvbiBzeW50YXggZXJyb3IgKGV4Y2VwdGlvbiBuZWVkcyB0byBiZSBzZXQsICpyZXMgaXMgdW50b3VjaGVkKQorICogICAwIGVsc2UgKGV4Y2VwdGlvbiBtYXkgYmUgc2V0LCBpbiB0aGF0IGNhc2UgKnJlcyBpcyBzZXQgdG8gTlVMTCkKICAqLwotc3RhdGljIFB5TG9uZ09iamVjdCAqCi1sb25nX2Zyb21fYmluYXJ5X2Jhc2UoY29uc3QgY2hhciAqKnN0ciwgaW50IGJhc2UpCitzdGF0aWMgaW50Citsb25nX2Zyb21fYmluYXJ5X2Jhc2UoY29uc3QgY2hhciAqKnN0ciwgaW50IGJhc2UsIFB5TG9uZ09iamVjdCAqKnJlcykKIHsKICAgICBjb25zdCBjaGFyICpwID0gKnN0cjsKICAgICBjb25zdCBjaGFyICpzdGFydCA9IHA7CisgICAgY2hhciBwcmV2ID0gMDsKKyAgICBpbnQgZGlnaXRzID0gMDsKICAgICBpbnQgYml0c19wZXJfY2hhcjsKICAgICBQeV9zc2l6ZV90IG47CiAgICAgUHlMb25nT2JqZWN0ICp6OwpAQCAtMTk2MywyMyArMjAyNiw0MyBAQAogCiAgICAgYXNzZXJ0KGJhc2UgPj0gMiAmJiBiYXNlIDw9IDMyICYmIChiYXNlICYgKGJhc2UgLSAxKSkgPT0gMCk7CiAgICAgbiA9IGJhc2U7Ci0gICAgZm9yIChiaXRzX3Blcl9jaGFyID0gLTE7IG47ICsrYml0c19wZXJfY2hhcikKKyAgICBmb3IgKGJpdHNfcGVyX2NoYXIgPSAtMTsgbjsgKytiaXRzX3Blcl9jaGFyKSB7CiAgICAgICAgIG4gPj49IDE7Ci0gICAgLyogbiA8LSB0b3RhbCAjIG9mIGJpdHMgbmVlZGVkLCB3aGlsZSBzZXR0aW5nIHAgdG8gZW5kLW9mLXN0cmluZyAqLwotICAgIHdoaWxlIChfUHlMb25nX0RpZ2l0VmFsdWVbUHlfQ0hBUk1BU0soKnApXSA8IGJhc2UpCisgICAgfQorICAgIC8qIGNvdW50IGRpZ2l0cyBhbmQgc2V0IHAgdG8gZW5kLW9mLXN0cmluZyAqLworICAgIHdoaWxlIChfUHlMb25nX0RpZ2l0VmFsdWVbUHlfQ0hBUk1BU0soKnApXSA8IGJhc2UgfHwgKnAgPT0gJ18nKSB7CisgICAgICAgIGlmICgqcCA9PSAnXycpIHsKKyAgICAgICAgICAgIGlmIChwcmV2ID09ICdfJykgeworICAgICAgICAgICAgICAgICpzdHIgPSBwIC0gMTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICArK2RpZ2l0czsKKyAgICAgICAgfQorICAgICAgICBwcmV2ID0gKnA7CiAgICAgICAgICsrcDsKKyAgICB9CisgICAgaWYgKHByZXYgPT0gJ18nKSB7CisgICAgICAgIC8qIFRyYWlsaW5nIHVuZGVyc2NvcmUgbm90IGFsbG93ZWQuICovCisgICAgICAgICpzdHIgPSBwIC0gMTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKwogICAgICpzdHIgPSBwOwogICAgIC8qIG4gPC0gIyBvZiBQeXRob24gZGlnaXRzIG5lZWRlZCwgPSBjZWlsaW5nKG4vUHlMb25nX1NISUZUKS4gKi8KLSAgICBuID0gKHAgLSBzdGFydCkgKiBiaXRzX3Blcl9jaGFyICsgUHlMb25nX1NISUZUIC0gMTsKKyAgICBuID0gZGlnaXRzICogYml0c19wZXJfY2hhciArIFB5TG9uZ19TSElGVCAtIDE7CiAgICAgaWYgKG4gLyBiaXRzX3Blcl9jaGFyIDwgcCAtIHN0YXJ0KSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImludCBzdHJpbmcgdG9vIGxhcmdlIHRvIGNvbnZlcnQiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICpyZXMgPSBOVUxMOworICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgbiA9IG4gLyBQeUxvbmdfU0hJRlQ7CiAgICAgeiA9IF9QeUxvbmdfTmV3KG4pOwotICAgIGlmICh6ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIGlmICh6ID09IE5VTEwpIHsKKyAgICAgICAgKnJlcyA9IE5VTEw7CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICAvKiBSZWFkIHN0cmluZyBmcm9tIHJpZ2h0LCBhbmQgZmlsbCBpbiBpbnQgZnJvbSBsZWZ0OyBpLmUuLAogICAgICAqIGZyb20gbGVhc3QgdG8gbW9zdCBzaWduaWZpY2FudCBpbiBib3RoLgogICAgICAqLwpAQCAtMTk4Nyw3ICsyMDcwLDExIEBACiAgICAgYml0c19pbl9hY2N1bSA9IDA7CiAgICAgcGRpZ2l0ID0gei0+b2JfZGlnaXQ7CiAgICAgd2hpbGUgKC0tcCA+PSBzdGFydCkgewotICAgICAgICBpbnQgayA9IChpbnQpX1B5TG9uZ19EaWdpdFZhbHVlW1B5X0NIQVJNQVNLKCpwKV07CisgICAgICAgIGludCBrOworICAgICAgICBpZiAoKnAgPT0gJ18nKSB7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBrID0gKGludClfUHlMb25nX0RpZ2l0VmFsdWVbUHlfQ0hBUk1BU0soKnApXTsKICAgICAgICAgYXNzZXJ0KGsgPj0gMCAmJiBrIDwgYmFzZSk7CiAgICAgICAgIGFjY3VtIHw9ICh0d29kaWdpdHMpayA8PCBiaXRzX2luX2FjY3VtOwogICAgICAgICBiaXRzX2luX2FjY3VtICs9IGJpdHNfcGVyX2NoYXI7CkBAIC0yMDA2LDcgKzIwOTMsOCBAQAogICAgIH0KICAgICB3aGlsZSAocGRpZ2l0IC0gei0+b2JfZGlnaXQgPCBuKQogICAgICAgICAqcGRpZ2l0KysgPSAwOwotICAgIHJldHVybiBsb25nX25vcm1hbGl6ZSh6KTsKKyAgICAqcmVzID0gbG9uZ19ub3JtYWxpemUoeik7CisgICAgcmV0dXJuIDA7CiB9CiAKIC8qIFBhcnNlcyBhbiBpbnQgZnJvbSBhIGJ5dGVzdHJpbmcuIExlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2Ugd2lsbCBiZQpAQCAtMjAzMSwyMyArMjExOSwyOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgImludCgpIGFyZyAyIG11c3QgYmUgPj0gMiBhbmQgPD0gMzYiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHdoaWxlICgqc3RyICE9ICdcMCcgJiYgUHlfSVNTUEFDRShQeV9DSEFSTUFTSygqc3RyKSkpCisgICAgd2hpbGUgKCpzdHIgIT0gJ1wwJyAmJiBQeV9JU1NQQUNFKFB5X0NIQVJNQVNLKCpzdHIpKSkgewogICAgICAgICBzdHIrKzsKLSAgICBpZiAoKnN0ciA9PSAnKycpCisgICAgfQorICAgIGlmICgqc3RyID09ICcrJykgewogICAgICAgICArK3N0cjsKKyAgICB9CiAgICAgZWxzZSBpZiAoKnN0ciA9PSAnLScpIHsKICAgICAgICAgKytzdHI7CiAgICAgICAgIHNpZ24gPSAtMTsKICAgICB9CiAgICAgaWYgKGJhc2UgPT0gMCkgewotICAgICAgICBpZiAoc3RyWzBdICE9ICcwJykKKyAgICAgICAgaWYgKHN0clswXSAhPSAnMCcpIHsKICAgICAgICAgICAgIGJhc2UgPSAxMDsKLSAgICAgICAgZWxzZSBpZiAoc3RyWzFdID09ICd4JyB8fCBzdHJbMV0gPT0gJ1gnKQorICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHN0clsxXSA9PSAneCcgfHwgc3RyWzFdID09ICdYJykgewogICAgICAgICAgICAgYmFzZSA9IDE2OwotICAgICAgICBlbHNlIGlmIChzdHJbMV0gPT0gJ28nIHx8IHN0clsxXSA9PSAnTycpCisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoc3RyWzFdID09ICdvJyB8fCBzdHJbMV0gPT0gJ08nKSB7CiAgICAgICAgICAgICBiYXNlID0gODsKLSAgICAgICAgZWxzZSBpZiAoc3RyWzFdID09ICdiJyB8fCBzdHJbMV0gPT0gJ0InKQorICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHN0clsxXSA9PSAnYicgfHwgc3RyWzFdID09ICdCJykgewogICAgICAgICAgICAgYmFzZSA9IDI7CisgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAvKiAib2xkIiAoQy1zdHlsZSkgb2N0YWwgbGl0ZXJhbCwgbm93IGludmFsaWQuCiAgICAgICAgICAgICAgICBpdCBtaWdodCBzdGlsbCBiZSB6ZXJvIHRob3VnaCAqLwpAQCAtMjA1OCwxMiArMjE1MiwyNiBAQAogICAgIGlmIChzdHJbMF0gPT0gJzAnICYmCiAgICAgICAgICgoYmFzZSA9PSAxNiAmJiAoc3RyWzFdID09ICd4JyB8fCBzdHJbMV0gPT0gJ1gnKSkgfHwKICAgICAgICAgIChiYXNlID09IDggICYmIChzdHJbMV0gPT0gJ28nIHx8IHN0clsxXSA9PSAnTycpKSB8fAotICAgICAgICAgKGJhc2UgPT0gMiAgJiYgKHN0clsxXSA9PSAnYicgfHwgc3RyWzFdID09ICdCJykpKSkKKyAgICAgICAgIChiYXNlID09IDIgICYmIChzdHJbMV0gPT0gJ2InIHx8IHN0clsxXSA9PSAnQicpKSkpIHsKICAgICAgICAgc3RyICs9IDI7CisgICAgICAgIC8qIE9uZSB1bmRlcnNjb3JlIGFsbG93ZWQgaGVyZS4gKi8KKyAgICAgICAgaWYgKCpzdHIgPT0gJ18nKSB7CisgICAgICAgICAgICArK3N0cjsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoc3RyWzBdID09ICdfJykgeworCSAgICAvKiBNYXkgbm90IHN0YXJ0IHdpdGggdW5kZXJzY29yZXMuICovCisJICAgIGdvdG8gb25FcnJvcjsKKyAgICB9CiAKICAgICBzdGFydCA9IHN0cjsKLSAgICBpZiAoKGJhc2UgJiAoYmFzZSAtIDEpKSA9PSAwKQotICAgICAgICB6ID0gbG9uZ19mcm9tX2JpbmFyeV9iYXNlKCZzdHIsIGJhc2UpOworICAgIGlmICgoYmFzZSAmIChiYXNlIC0gMSkpID09IDApIHsKKyAgICAgICAgaW50IHJlcyA9IGxvbmdfZnJvbV9iaW5hcnlfYmFzZSgmc3RyLCBiYXNlLCAmeik7CisgICAgICAgIGlmIChyZXMgPCAwKSB7CisgICAgICAgICAgICAvKiBTeW50YXggZXJyb3IuICovCisgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgIH0KKyAgICB9CiAgICAgZWxzZSB7CiAvKioqCiBCaW5hcnkgYmFzZXMgY2FuIGJlIGNvbnZlcnRlZCBpbiB0aW1lIGxpbmVhciBpbiB0aGUgbnVtYmVyIG9mIGRpZ2l0cywgYmVjYXVzZQpAQCAtMjE1MiwxMSArMjI2MCwxMyBAQAogKioqLwogICAgICAgICB0d29kaWdpdHMgYzsgICAgICAgICAgIC8qIGN1cnJlbnQgaW5wdXQgY2hhcmFjdGVyICovCiAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZV96OworICAgICAgICBpbnQgZGlnaXRzID0gMDsKICAgICAgICAgaW50IGk7CiAgICAgICAgIGludCBjb252d2lkdGg7CiAgICAgICAgIHR3b2RpZ2l0cyBjb252bXVsdG1heCwgY29udm11bHQ7CiAgICAgICAgIGRpZ2l0ICpweiwgKnB6c3RvcDsKLSAgICAgICAgY29uc3QgY2hhciogc2NhbjsKKyAgICAgICAgY29uc3QgY2hhciAqc2NhbiwgKmxhc3RkaWdpdDsKKyAgICAgICAgY2hhciBwcmV2ID0gMDsKIAogICAgICAgICBzdGF0aWMgZG91YmxlIGxvZ19iYXNlX0JBU0VbMzddID0gezAuMGUwLH07CiAgICAgICAgIHN0YXRpYyBpbnQgY29udndpZHRoX2Jhc2VbMzddID0gezAsfTsKQEAgLTIxNzAsOCArMjI4MCw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZygoZG91YmxlKVB5TG9uZ19CQVNFKSk7CiAgICAgICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgICAgICAgdHdvZGlnaXRzIG5leHQgPSBjb252bWF4ICogYmFzZTsKLSAgICAgICAgICAgICAgICBpZiAobmV4dCA+IFB5TG9uZ19CQVNFKQorICAgICAgICAgICAgICAgIGlmIChuZXh0ID4gUHlMb25nX0JBU0UpIHsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGNvbnZtYXggPSBuZXh0OwogICAgICAgICAgICAgICAgICsraTsKICAgICAgICAgICAgIH0KQEAgLTIxODIsMjEgKzIyOTMsNDMgQEAKIAogICAgICAgICAvKiBGaW5kIGxlbmd0aCBvZiB0aGUgc3RyaW5nIG9mIG51bWVyaWMgY2hhcmFjdGVycy4gKi8KICAgICAgICAgc2NhbiA9IHN0cjsKLSAgICAgICAgd2hpbGUgKF9QeUxvbmdfRGlnaXRWYWx1ZVtQeV9DSEFSTUFTSygqc2NhbildIDwgYmFzZSkKKyAgICAgICAgbGFzdGRpZ2l0ID0gc3RyOworCisgICAgICAgIHdoaWxlIChfUHlMb25nX0RpZ2l0VmFsdWVbUHlfQ0hBUk1BU0soKnNjYW4pXSA8IGJhc2UgfHwgKnNjYW4gPT0gJ18nKSB7CisgICAgICAgICAgICBpZiAoKnNjYW4gPT0gJ18nKSB7CisgICAgICAgICAgICAgICAgaWYgKHByZXYgPT0gJ18nKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIE9ubHkgb25lIHVuZGVyc2NvcmUgYWxsb3dlZC4gKi8KKyAgICAgICAgICAgICAgICAgICAgc3RyID0gbGFzdGRpZ2l0ICsgMTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICsrZGlnaXRzOworICAgICAgICAgICAgICAgIGxhc3RkaWdpdCA9IHNjYW47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwcmV2ID0gKnNjYW47CiAgICAgICAgICAgICArK3NjYW47CisgICAgICAgIH0KKyAgICAgICAgaWYgKHByZXYgPT0gJ18nKSB7CisgICAgICAgICAgICAvKiBUcmFpbGluZyB1bmRlcnNjb3JlIG5vdCBhbGxvd2VkLiAqLworICAgICAgICAgICAgLyogU2V0IGVycm9yIHBvaW50ZXIgdG8gZmlyc3QgdW5kZXJzY29yZS4gKi8KKyAgICAgICAgICAgIHN0ciA9IGxhc3RkaWdpdCArIDE7CisgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgIH0KIAogICAgICAgICAvKiBDcmVhdGUgYW4gaW50IG9iamVjdCB0aGF0IGNhbiBjb250YWluIHRoZSBsYXJnZXN0IHBvc3NpYmxlCiAgICAgICAgICAqIGludGVnZXIgd2l0aCB0aGlzIGJhc2UgYW5kIGxlbmd0aC4gIE5vdGUgdGhhdCB0aGVyZSdzIG5vCiAgICAgICAgICAqIG5lZWQgdG8gaW5pdGlhbGl6ZSB6LT5vYl9kaWdpdCAtLSBubyBzbG90IGlzIHJlYWQgdXAgYmVmb3JlCiAgICAgICAgICAqIGJlaW5nIHN0b3JlZCBpbnRvLgogICAgICAgICAgKi8KLSAgICAgICAgc2l6ZV96ID0gKFB5X3NzaXplX3QpKChzY2FuIC0gc3RyKSAqIGxvZ19iYXNlX0JBU0VbYmFzZV0pICsgMTsKKyAgICAgICAgc2l6ZV96ID0gKFB5X3NzaXplX3QpKGRpZ2l0cyAqIGxvZ19iYXNlX0JBU0VbYmFzZV0pICsgMTsKICAgICAgICAgLyogVW5jb21tZW50IG5leHQgbGluZSB0byB0ZXN0IGV4Y2VlZGluZ2x5IHJhcmUgY29weSBjb2RlICovCiAgICAgICAgIC8qIHNpemVfeiA9IDE7ICovCiAgICAgICAgIGFzc2VydChzaXplX3ogPiAwKTsKICAgICAgICAgeiA9IF9QeUxvbmdfTmV3KHNpemVfeik7Ci0gICAgICAgIGlmICh6ID09IE5VTEwpCisgICAgICAgIGlmICh6ID09IE5VTEwpIHsKICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CiAgICAgICAgIFB5X1NJWkUoeikgPSAwOwogCiAgICAgICAgIC8qIGBjb252d2lkdGhgIGNvbnNlY3V0aXZlIGlucHV0IGRpZ2l0cyBhcmUgdHJlYXRlZCBhcyBhIHNpbmdsZQpAQCAtMjIwNyw5ICsyMzQwLDE3IEBACiAKICAgICAgICAgLyogV29yayA7LSkgKi8KICAgICAgICAgd2hpbGUgKHN0ciA8IHNjYW4pIHsKKyAgICAgICAgICAgIGlmICgqc3RyID09ICdfJykgeworICAgICAgICAgICAgICAgIHN0cisrOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQogICAgICAgICAgICAgLyogZ3JhYiB1cCB0byBjb252d2lkdGggZGlnaXRzIGZyb20gdGhlIGlucHV0IHN0cmluZyAqLwogICAgICAgICAgICAgYyA9IChkaWdpdClfUHlMb25nX0RpZ2l0VmFsdWVbUHlfQ0hBUk1BU0soKnN0cisrKV07Ci0gICAgICAgICAgICBmb3IgKGkgPSAxOyBpIDwgY29udndpZHRoICYmIHN0ciAhPSBzY2FuOyArK2ksICsrc3RyKSB7CisgICAgICAgICAgICBmb3IgKGkgPSAxOyBpIDwgY29udndpZHRoICYmIHN0ciAhPSBzY2FuOyArK3N0cikgeworICAgICAgICAgICAgICAgIGlmICgqc3RyID09ICdfJykgeworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaSsrOwogICAgICAgICAgICAgICAgIGMgPSAodHdvZGlnaXRzKShjICogIGJhc2UgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KV9QeUxvbmdfRGlnaXRWYWx1ZVtQeV9DSEFSTUFTSygqc3RyKV0pOwogICAgICAgICAgICAgICAgIGFzc2VydChjIDwgUHlMb25nX0JBU0UpOwpAQCAtMjIyMSw4ICsyMzYyLDkgQEAKICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgaWYgKGkgIT0gY29udndpZHRoKSB7CiAgICAgICAgICAgICAgICAgY29udm11bHQgPSBiYXNlOwotICAgICAgICAgICAgICAgIGZvciAoIDsgaSA+IDE7IC0taSkKKyAgICAgICAgICAgICAgICBmb3IgKCA7IGkgPiAxOyAtLWkpIHsKICAgICAgICAgICAgICAgICAgICAgY29udm11bHQgKj0gYmFzZTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8qIE11bHRpcGx5IHogYnkgY29udm11bHQsIGFuZCBhZGQgYy4gKi8KQEAgLTIyNjAsNDEgKzI0MDIsNTEgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICBpZiAoeiA9PSBOVUxMKQorICAgIGlmICh6ID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIGlmIChlcnJvcl9pZl9ub256ZXJvKSB7CiAgICAgICAgIC8qIHJlc2V0IHRoZSBiYXNlIHRvIDAsIGVsc2UgdGhlIGV4Y2VwdGlvbiBtZXNzYWdlCiAgICAgICAgICAgIGRvZXNuJ3QgbWFrZSB0b28gbXVjaCBzZW5zZSAqLwogICAgICAgICBiYXNlID0gMDsKLSAgICAgICAgaWYgKFB5X1NJWkUoeikgIT0gMCkKKyAgICAgICAgaWYgKFB5X1NJWkUoeikgIT0gMCkgewogICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICB9CiAgICAgICAgIC8qIHRoZXJlIG1pZ2h0IHN0aWxsIGJlIG90aGVyIHByb2JsZW1zLCB0aGVyZWZvcmUgYmFzZQogICAgICAgICAgICByZW1haW5zIHplcm8gaGVyZSBmb3IgdGhlIHNhbWUgcmVhc29uICovCiAgICAgfQotICAgIGlmIChzdHIgPT0gc3RhcnQpCisgICAgaWYgKHN0ciA9PSBzdGFydCkgewogICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgaWYgKHNpZ24gPCAwKQorICAgIH0KKyAgICBpZiAoc2lnbiA8IDApIHsKICAgICAgICAgUHlfU0laRSh6KSA9IC0oUHlfU0laRSh6KSk7Ci0gICAgd2hpbGUgKCpzdHIgJiYgUHlfSVNTUEFDRShQeV9DSEFSTUFTSygqc3RyKSkpCisgICAgfQorICAgIHdoaWxlICgqc3RyICYmIFB5X0lTU1BBQ0UoUHlfQ0hBUk1BU0soKnN0cikpKSB7CiAgICAgICAgIHN0cisrOwotICAgIGlmICgqc3RyICE9ICdcMCcpCisgICAgfQorICAgIGlmICgqc3RyICE9ICdcMCcpIHsKICAgICAgICAgZ290byBvbkVycm9yOworICAgIH0KICAgICBsb25nX25vcm1hbGl6ZSh6KTsKICAgICB6ID0gbWF5YmVfc21hbGxfbG9uZyh6KTsKLSAgICBpZiAoeiA9PSBOVUxMKQorICAgIGlmICh6ID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKHBlbmQgIT0gTlVMTCkKKyAgICB9CisgICAgaWYgKHBlbmQgIT0gTlVMTCkgewogICAgICAgICAqcGVuZCA9IChjaGFyICopc3RyOworICAgIH0KICAgICByZXR1cm4gKFB5T2JqZWN0ICopIHo7CiAKICAgb25FcnJvcjoKLSAgICBpZiAocGVuZCAhPSBOVUxMKQorICAgIGlmIChwZW5kICE9IE5VTEwpIHsKICAgICAgICAgKnBlbmQgPSAoY2hhciAqKXN0cjsKKyAgICB9CiAgICAgUHlfWERFQ1JFRih6KTsKICAgICBzbGVuID0gc3RybGVuKG9yaWdfc3RyKSA8IDIwMCA/IHN0cmxlbihvcmlnX3N0cikgOiAyMDA7CiAgICAgc3Ryb2JqID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKG9yaWdfc3RyLCBzbGVuKTsKLSAgICBpZiAoc3Ryb2JqID09IE5VTEwpCisgICAgaWYgKHN0cm9iaiA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgImludmFsaWQgbGl0ZXJhbCBmb3IgaW50KCkgd2l0aCBiYXNlICVkOiAlLjIwMFIiLAogICAgICAgICAgICAgICAgICBiYXNlLCBzdHJvYmopOwpAQCAtMjM5NSw4ICsyNTQ3LDExIEBACiAgICAgICAgICpwZGl2ID0gKFB5TG9uZ09iamVjdCopUHlMb25nX0Zyb21Mb25nKDApOwogICAgICAgICBpZiAoKnBkaXYgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgUHlfSU5DUkVGKGEpOwotICAgICAgICAqcHJlbSA9IChQeUxvbmdPYmplY3QgKikgYTsKKyAgICAgICAgKnByZW0gPSAoUHlMb25nT2JqZWN0ICopbG9uZ19sb25nKChQeU9iamVjdCAqKWEpOworICAgICAgICBpZiAoKnByZW0gPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfQ0xFQVIoKnBkaXYpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBpZiAoc2l6ZV9iID09IDEpIHsKQEAgLTI3MDYsNiArMjg2MSwxMyBAQAogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiYW4gaW50ZWdlciBpcyByZXF1aXJlZCIpOwogICAgICAgICByZXR1cm4gLTEuMDsKICAgICB9CisgICAgaWYgKFB5X0FCUyhQeV9TSVpFKHYpKSA8PSAxKSB7CisgICAgICAgIC8qIEZhc3QgcGF0aDsgc2luZ2xlIGRpZ2l0IGxvbmcgKDMxIGJpdHMpIHdpbGwgY2FzdCBzYWZlbHkKKyAgICAgICAgICAgdG8gZG91YmxlLiAgVGhpcyBpbXByb3ZlcyBwZXJmb3JtYW5jZSBvZiBGUC9sb25nIG9wZXJhdGlvbnMKKyAgICAgICAgICAgYnkgMjAlLgorICAgICAgICAqLworICAgICAgICByZXR1cm4gKGRvdWJsZSlNRURJVU1fVkFMVUUoKFB5TG9uZ09iamVjdCAqKXYpOworICAgIH0KICAgICB4ID0gX1B5TG9uZ19GcmV4cCgoUHlMb25nT2JqZWN0ICopdiwgJmV4cG9uZW50KTsKICAgICBpZiAoKHggPT0gLTEuMCAmJiBQeUVycl9PY2N1cnJlZCgpKSB8fCBleHBvbmVudCA+IERCTF9NQVhfRVhQKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLApAQCAtMjkzMCw5ICszMDkyLDcgQEAKICAgICB9CiAgICAgYXNzZXJ0KGJvcnJvdyA9PSAwKTsKICAgICBpZiAoc2lnbiA8IDApIHsKLSAgICAgICAgX1B5TG9uZ19OZWdhdGUoJnopOwotICAgICAgICBpZiAoeiA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIFB5X1NJWkUoeikgPSAtUHlfU0laRSh6KTsKICAgICB9CiAgICAgcmV0dXJuIGxvbmdfbm9ybWFsaXplKHopOwogfQpAQCAtMjk1Miw4ICszMTEyLDE0IEBACiAgICAgaWYgKFB5X1NJWkUoYSkgPCAwKSB7CiAgICAgICAgIGlmIChQeV9TSVpFKGIpIDwgMCkgewogICAgICAgICAgICAgeiA9IHhfYWRkKGEsIGIpOwotICAgICAgICAgICAgaWYgKHogIT0gTlVMTCAmJiBQeV9TSVpFKHopICE9IDApCisgICAgICAgICAgICBpZiAoeiAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgLyogeF9hZGQgcmVjZWl2ZWQgYXQgbGVhc3Qgb25lIG11bHRpcGxlLWRpZ2l0IGludCwKKyAgICAgICAgICAgICAgICAgICBhbmQgdGh1cyB6IG11c3QgYmUgYSBtdWx0aXBsZS1kaWdpdCBpbnQuCisgICAgICAgICAgICAgICAgICAgVGhhdCBhbHNvIG1lYW5zIHogaXMgbm90IGFuIGVsZW1lbnQgb2YKKyAgICAgICAgICAgICAgICAgICBzbWFsbF9pbnRzLCBzbyBuZWdhdGluZyBpdCBpbi1wbGFjZSBpcyBzYWZlLiAqLworICAgICAgICAgICAgICAgIGFzc2VydChQeV9SRUZDTlQoeikgPT0gMSk7CiAgICAgICAgICAgICAgICAgUHlfU0laRSh6KSA9IC0oUHlfU0laRSh6KSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICAgICAgeiA9IHhfc3ViKGIsIGEpOwpAQCAtMjk4NCw4ICszMTUwLDEwIEBACiAgICAgICAgICAgICB6ID0geF9zdWIoYSwgYik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHogPSB4X2FkZChhLCBiKTsKLSAgICAgICAgaWYgKHogIT0gTlVMTCAmJiBQeV9TSVpFKHopICE9IDApCisgICAgICAgIGlmICh6ICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGFzc2VydChQeV9TSVpFKHopID09IDAgfHwgUHlfUkVGQ05UKHopID09IDEpOwogICAgICAgICAgICAgUHlfU0laRSh6KSA9IC0oUHlfU0laRSh6KSk7CisgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChQeV9TSVpFKGIpIDwgMCkKQEAgLTM0MDksMTcgKzM1NzcsNyBAQAogICAgIC8qIGZhc3QgcGF0aCBmb3Igc2luZ2xlLWRpZ2l0IG11bHRpcGxpY2F0aW9uICovCiAgICAgaWYgKFB5X0FCUyhQeV9TSVpFKGEpKSA8PSAxICYmIFB5X0FCUyhQeV9TSVpFKGIpKSA8PSAxKSB7CiAgICAgICAgIHN0d29kaWdpdHMgdiA9IChzdHdvZGlnaXRzKShNRURJVU1fVkFMVUUoYSkpICogTUVESVVNX1ZBTFVFKGIpOwotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKChQWV9MT05HX0xPTkcpdik7Ci0jZWxzZQotICAgICAgICAvKiBpZiB3ZSBkb24ndCBoYXZlIGxvbmcgbG9uZyB0aGVuIHdlJ3JlIGFsbW9zdCBjZXJ0YWlubHkKLSAgICAgICAgICAgdXNpbmcgMTUtYml0IGRpZ2l0cywgc28gdiB3aWxsIGZpdCBpbiBhIGxvbmcuICBJbiB0aGUKLSAgICAgICAgICAgdW5saWtlbHkgZXZlbnQgdGhhdCB3ZSdyZSB1c2luZyAzMC1iaXQgZGlnaXRzIG9uIGEgcGxhdGZvcm0KLSAgICAgICAgICAgd2l0aG91dCBsb25nIGxvbmcsIGEgbGFyZ2UgdiB3aWxsIGp1c3QgY2F1c2UgdXMgdG8gZmFsbAotICAgICAgICAgICB0aHJvdWdoIHRvIHRoZSBnZW5lcmFsIG11bHRpcGxpY2F0aW9uIGNvZGUgYmVsb3cuICovCi0gICAgICAgIGlmICh2ID49IExPTkdfTUlOICYmIHYgPD0gTE9OR19NQVgpCi0gICAgICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKXYpOwotI2VuZGlmCisgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKChsb25nIGxvbmcpdik7CiAgICAgfQogCiAgICAgeiA9IGtfbXVsKGEsIGIpOwpAQCAtMzQzMiw2ICszNTkwLDUyIEBACiAgICAgcmV0dXJuIChQeU9iamVjdCAqKXo7CiB9CiAKKy8qIEZhc3QgbW9kdWxvIGRpdmlzaW9uIGZvciBzaW5nbGUtZGlnaXQgbG9uZ3MuICovCitzdGF0aWMgUHlPYmplY3QgKgorZmFzdF9tb2QoUHlMb25nT2JqZWN0ICphLCBQeUxvbmdPYmplY3QgKmIpCit7CisgICAgc2RpZ2l0IGxlZnQgPSBhLT5vYl9kaWdpdFswXTsKKyAgICBzZGlnaXQgcmlnaHQgPSBiLT5vYl9kaWdpdFswXTsKKyAgICBzZGlnaXQgbW9kOworCisgICAgYXNzZXJ0KFB5X0FCUyhQeV9TSVpFKGEpKSA9PSAxKTsKKyAgICBhc3NlcnQoUHlfQUJTKFB5X1NJWkUoYikpID09IDEpOworCisgICAgaWYgKFB5X1NJWkUoYSkgPT0gUHlfU0laRShiKSkgeworICAgICAgICAvKiAnYScgYW5kICdiJyBoYXZlIHRoZSBzYW1lIHNpZ24uICovCisgICAgICAgIG1vZCA9IGxlZnQgJSByaWdodDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIEVpdGhlciAnYScgb3IgJ2InIGlzIG5lZ2F0aXZlLiAqLworICAgICAgICBtb2QgPSByaWdodCAtIDEgLSAobGVmdCAtIDEpICUgcmlnaHQ7CisgICAgfQorCisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhtb2QgKiAoc2RpZ2l0KVB5X1NJWkUoYikpOworfQorCisvKiBGYXN0IGZsb29yIGRpdmlzaW9uIGZvciBzaW5nbGUtZGlnaXQgbG9uZ3MuICovCitzdGF0aWMgUHlPYmplY3QgKgorZmFzdF9mbG9vcl9kaXYoUHlMb25nT2JqZWN0ICphLCBQeUxvbmdPYmplY3QgKmIpCit7CisgICAgc2RpZ2l0IGxlZnQgPSBhLT5vYl9kaWdpdFswXTsKKyAgICBzZGlnaXQgcmlnaHQgPSBiLT5vYl9kaWdpdFswXTsKKyAgICBzZGlnaXQgZGl2OworCisgICAgYXNzZXJ0KFB5X0FCUyhQeV9TSVpFKGEpKSA9PSAxKTsKKyAgICBhc3NlcnQoUHlfQUJTKFB5X1NJWkUoYikpID09IDEpOworCisgICAgaWYgKFB5X1NJWkUoYSkgPT0gUHlfU0laRShiKSkgeworICAgICAgICAvKiAnYScgYW5kICdiJyBoYXZlIHRoZSBzYW1lIHNpZ24uICovCisgICAgICAgIGRpdiA9IGxlZnQgLyByaWdodDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIEVpdGhlciAnYScgb3IgJ2InIGlzIG5lZ2F0aXZlLiAqLworICAgICAgICBkaXYgPSAtMSAtIChsZWZ0IC0gMSkgLyByaWdodDsKKyAgICB9CisKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKGRpdik7Cit9CisKIC8qIFRoZSAvIGFuZCAlIG9wZXJhdG9ycyBhcmUgbm93IGRlZmluZWQgaW4gdGVybXMgb2YgZGl2bW9kKCkuCiAgICBUaGUgZXhwcmVzc2lvbiBhIG1vZCBiIGhhcyB0aGUgdmFsdWUgYSAtIGIqZmxvb3IoYS9iKS4KICAgIFRoZSBsb25nX2RpdnJlbSBmdW5jdGlvbiBnaXZlcyB0aGUgcmVtYWluZGVyIGFmdGVyIGRpdmlzaW9uIG9mCkBAIC0zNDU5LDYgKzM2NjMsMzAgQEAKIHsKICAgICBQeUxvbmdPYmplY3QgKmRpdiwgKm1vZDsKIAorICAgIGlmIChQeV9BQlMoUHlfU0laRSh2KSkgPT0gMSAmJiBQeV9BQlMoUHlfU0laRSh3KSkgPT0gMSkgeworICAgICAgICAvKiBGYXN0IHBhdGggZm9yIHNpbmdsZS1kaWdpdCBsb25ncyAqLworICAgICAgICBkaXYgPSBOVUxMOworICAgICAgICBpZiAocGRpdiAhPSBOVUxMKSB7CisgICAgICAgICAgICBkaXYgPSAoUHlMb25nT2JqZWN0ICopZmFzdF9mbG9vcl9kaXYodiwgdyk7CisgICAgICAgICAgICBpZiAoZGl2ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKHBtb2QgIT0gTlVMTCkgeworICAgICAgICAgICAgbW9kID0gKFB5TG9uZ09iamVjdCAqKWZhc3RfbW9kKHYsIHcpOworICAgICAgICAgICAgaWYgKG1vZCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlfWERFQ1JFRihkaXYpOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICpwbW9kID0gbW9kOworICAgICAgICB9CisgICAgICAgIGlmIChwZGl2ICE9IE5VTEwpIHsKKyAgICAgICAgICAgIC8qIFdlIG9ubHkgd2FudCB0byBzZXQgYCpwZGl2YCB3aGVuIGAqcG1vZGAgaXMKKyAgICAgICAgICAgICAgIHNldCBzdWNjZXNzZnVsbHkuICovCisgICAgICAgICAgICAqcGRpdiA9IGRpdjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAgICAgaWYgKGxvbmdfZGl2cmVtKHYsIHcsICZkaXYsICZtb2QpIDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIGlmICgoUHlfU0laRShtb2QpIDwgMCAmJiBQeV9TSVpFKHcpID4gMCkgfHwKQEAgLTM1MDMsNiArMzczMSwxMSBAQAogICAgIFB5TG9uZ09iamVjdCAqZGl2OwogCiAgICAgQ0hFQ0tfQklOT1AoYSwgYik7CisKKyAgICBpZiAoUHlfQUJTKFB5X1NJWkUoYSkpID09IDEgJiYgUHlfQUJTKFB5X1NJWkUoYikpID09IDEpIHsKKyAgICAgICAgcmV0dXJuIGZhc3RfZmxvb3JfZGl2KChQeUxvbmdPYmplY3QqKWEsIChQeUxvbmdPYmplY3QqKWIpOworICAgIH0KKwogICAgIGlmIChsX2Rpdm1vZCgoUHlMb25nT2JqZWN0KilhLCAoUHlMb25nT2JqZWN0KiliLCAmZGl2LCBOVUxMKSA8IDApCiAgICAgICAgIGRpdiA9IE5VTEw7CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKWRpdjsKQEAgLTM3NDIsOSArMzk3NSw5IEBACiAgICAgLyogUm91bmQgYnkgZGlyZWN0bHkgbW9kaWZ5aW5nIHRoZSBsb3cgZGlnaXQgb2YgeC4gKi8KICAgICBtYXNrID0gKGRpZ2l0KTEgPDwgKGV4dHJhX2JpdHMgLSAxKTsKICAgICBsb3cgPSB4LT5vYl9kaWdpdFswXSB8IGluZXhhY3Q7Ci0gICAgaWYgKGxvdyAmIG1hc2sgJiYgbG93ICYgKDMqbWFzay0xKSkKKyAgICBpZiAoKGxvdyAmIG1hc2spICYmIChsb3cgJiAoM1UqbWFzay0xVSkpKQogICAgICAgICBsb3cgKz0gbWFzazsKLSAgICB4LT5vYl9kaWdpdFswXSA9IGxvdyAmIH4obWFzay0xVSk7CisgICAgeC0+b2JfZGlnaXRbMF0gPSBsb3cgJiB+KDJVKm1hc2stMVUpOwogCiAgICAgLyogQ29udmVydCB4IHRvIGEgZG91YmxlIGR4OyB0aGUgY29udmVyc2lvbiBpcyBleGFjdC4gKi8KICAgICBkeCA9IHgtPm9iX2RpZ2l0Wy0teF9zaXplXTsKQEAgLTM3NzgsNiArNDAxMSwxMCBAQAogCiAgICAgQ0hFQ0tfQklOT1AoYSwgYik7CiAKKyAgICBpZiAoUHlfQUJTKFB5X1NJWkUoYSkpID09IDEgJiYgUHlfQUJTKFB5X1NJWkUoYikpID09IDEpIHsKKyAgICAgICAgcmV0dXJuIGZhc3RfbW9kKChQeUxvbmdPYmplY3QqKWEsIChQeUxvbmdPYmplY3QqKWIpOworICAgIH0KKwogICAgIGlmIChsX2Rpdm1vZCgoUHlMb25nT2JqZWN0KilhLCAoUHlMb25nT2JqZWN0KiliLCBOVUxMLCAmbW9kKSA8IDApCiAgICAgICAgIG1vZCA9IE5VTEw7CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKW1vZDsKQEAgLTQwMTIsOCArNDI0OSwxMCBAQAogICAgIFB5X0RFQ1JFRih3KTsKICAgICBpZiAoeCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBQeV9TSVpFKHgpID0gLShQeV9TSVpFKHgpKTsKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopbWF5YmVfc21hbGxfbG9uZyh4KTsKKyAgICBfUHlMb25nX05lZ2F0ZSgmeCk7CisgICAgLyogTm8gbmVlZCBmb3IgbWF5YmVfc21hbGxfbG9uZyBoZXJlLCBzaW5jZSBhbnkgc21hbGwKKyAgICAgICBsb25ncyB3aWxsIGhhdmUgYmVlbiBjYXVnaHQgaW4gdGhlIFB5X1NJWkUgPD0gMSBmYXN0IHBhdGguICovCisgICAgcmV0dXJuIChQeU9iamVjdCAqKXg7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC00MTE4LDYgKzQzNTcsMTEgQEAKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJuZWdhdGl2ZSBzaGlmdCBjb3VudCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisKKyAgICBpZiAoUHlfU0laRShhKSA9PSAwKSB7CisgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoMCk7CisgICAgfQorCiAgICAgLyogd29yZHNoaWZ0LCByZW1zaGlmdCA9IGRpdm1vZChzaGlmdGJ5LCBQeUxvbmdfU0hJRlQpICovCiAgICAgd29yZHNoaWZ0ID0gc2hpZnRieSAvIFB5TG9uZ19TSElGVDsKICAgICByZW1zaGlmdCAgPSBzaGlmdGJ5IC0gd29yZHNoaWZ0ICogUHlMb25nX1NISUZUOwpAQCAtNDUwMiw3ICs0NzQ2LDcgQEAKICAgICAvKiBhIGZpdHMgaW50byBhIGxvbmcsIHNvIGIgbXVzdCB0b28gKi8KICAgICB4ID0gUHlMb25nX0FzTG9uZygoUHlPYmplY3QgKilhKTsKICAgICB5ID0gUHlMb25nX0FzTG9uZygoUHlPYmplY3QgKiliKTsKLSNlbGlmIGRlZmluZWQoUFlfTE9OR19MT05HKSAmJiBQWV9MTE9OR19NQVggPj4gUHlMb25nX1NISUZUID4+IFB5TG9uZ19TSElGVAorI2VsaWYgUFlfTExPTkdfTUFYID4+IFB5TG9uZ19TSElGVCA+PiBQeUxvbmdfU0hJRlQKICAgICB4ID0gUHlMb25nX0FzTG9uZ0xvbmcoKFB5T2JqZWN0ICopYSk7CiAgICAgeSA9IFB5TG9uZ19Bc0xvbmdMb25nKChQeU9iamVjdCAqKWIpOwogI2Vsc2UKQEAgLTQ1MjEsNyArNDc2NSw3IEBACiAgICAgfQogI2lmIExPTkdfTUFYID4+IFB5TG9uZ19TSElGVCA+PiBQeUxvbmdfU0hJRlQKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHgpOwotI2VsaWYgZGVmaW5lZChQWV9MT05HX0xPTkcpICYmIFBZX0xMT05HX01BWCA+PiBQeUxvbmdfU0hJRlQgPj4gUHlMb25nX1NISUZUCisjZWxpZiBQWV9MTE9OR19NQVggPj4gUHlMb25nX1NISUZUID4+IFB5TG9uZ19TSElGVAogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKHgpOwogI2Vsc2UKICMgZXJyb3IgIl9QeUxvbmdfR0NEIgpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9tZW1vcnlvYmplY3QuYyBiL09iamVjdHMvbWVtb3J5b2JqZWN0LmMKaW5kZXggMTAxNjJjYi4uNDI4ZDgzYyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9tZW1vcnlvYmplY3QuYworKysgYi9PYmplY3RzL21lbW9yeW9iamVjdC5jCkBAIC01Nyw3ICs1Nyw3IEBACiAgICAgfQogCiAKLVB5X0xPQ0FMX0lOTElORShfUHlNYW5hZ2VkQnVmZmVyT2JqZWN0ICopCitzdGF0aWMgaW5saW5lIF9QeU1hbmFnZWRCdWZmZXJPYmplY3QgKgogbWJ1Zl9hbGxvYyh2b2lkKQogewogICAgIF9QeU1hbmFnZWRCdWZmZXJPYmplY3QgKm1idWY7CkBAIC0yNDMsNyArMjQzLDcgQEAKICNkZWZpbmUgSEFWRV9TVUJPRkZTRVRTX0lOX0xBU1RfRElNKHZpZXcpIFwKICAgICAodmlldy0+c3Vib2Zmc2V0cyAmJiB2aWV3LT5zdWJvZmZzZXRzW2Rlc3QtPm5kaW0tMV0gPj0gMCkKIAotUHlfTE9DQUxfSU5MSU5FKGludCkKK3N0YXRpYyBpbmxpbmUgaW50CiBsYXN0X2RpbV9pc19jb250aWd1b3VzKGNvbnN0IFB5X2J1ZmZlciAqZGVzdCwgY29uc3QgUHlfYnVmZmVyICpzcmMpCiB7CiAgICAgYXNzZXJ0KGRlc3QtPm5kaW0gPiAwICYmIHNyYy0+bmRpbSA+IDApOwpAQCAtMjU5LDcgKzI1OSw3IEBACiAgICBhc3NpZ25tZW50cywgd2hlcmUgdGhlIGx2YWx1ZSBpcyBhbHJlYWR5IGtub3duIHRvIGhhdmUgYSBzaW5nbGUgY2hhcmFjdGVyCiAgICBmb3JtYXQuIFRoaXMgaXMgYSBwZXJmb3JtYW5jZSBoYWNrIHRoYXQgY291bGQgYmUgcmV3cml0dGVuIChpZiBwcm9wZXJseQogICAgYmVuY2htYXJrZWQpLiAqLwotUHlfTE9DQUxfSU5MSU5FKGludCkKK3N0YXRpYyBpbmxpbmUgaW50CiBlcXVpdl9mb3JtYXQoY29uc3QgUHlfYnVmZmVyICpkZXN0LCBjb25zdCBQeV9idWZmZXIgKnNyYykKIHsKICAgICBjb25zdCBjaGFyICpkZm10LCAqc2ZtdDsKQEAgLTI3OSw3ICsyNzksNyBAQAogLyogVHdvIHNoYXBlcyBhcmUgZXF1aXZhbGVudCBpZiB0aGV5IGFyZSBlaXRoZXIgZXF1YWwgb3IgaWRlbnRpY2FsIHVwCiAgICB0byBhIHplcm8gZWxlbWVudCBhdCB0aGUgc2FtZSBwb3NpdGlvbi4gRm9yIGV4YW1wbGUsIGluIE51bVB5IGFycmF5cwogICAgdGhlIHNoYXBlcyBbMSwgMCwgNV0gYW5kIFsxLCAwLCA3XSBhcmUgZXF1aXZhbGVudC4gKi8KLVB5X0xPQ0FMX0lOTElORShpbnQpCitzdGF0aWMgaW5saW5lIGludAogZXF1aXZfc2hhcGUoY29uc3QgUHlfYnVmZmVyICpkZXN0LCBjb25zdCBQeV9idWZmZXIgKnNyYykKIHsKICAgICBpbnQgaTsKQEAgLTQzOCw3ICs0MzgsNyBAQAogfQogCiAvKiBJbml0aWFsaXplIHN0cmlkZXMgZm9yIGEgQy1jb250aWd1b3VzIGFycmF5LiAqLwotUHlfTE9DQUxfSU5MSU5FKHZvaWQpCitzdGF0aWMgaW5saW5lIHZvaWQKIGluaXRfc3RyaWRlc19mcm9tX3NoYXBlKFB5X2J1ZmZlciAqdmlldykKIHsKICAgICBQeV9zc2l6ZV90IGk7CkBAIC00NTEsNyArNDUxLDcgQEAKIH0KIAogLyogSW5pdGlhbGl6ZSBzdHJpZGVzIGZvciBhIEZvcnRyYW4tY29udGlndW91cyBhcnJheS4gKi8KLVB5X0xPQ0FMX0lOTElORSh2b2lkKQorc3RhdGljIGlubGluZSB2b2lkCiBpbml0X2ZvcnRyYW5fc3RyaWRlc19mcm9tX3NoYXBlKFB5X2J1ZmZlciAqdmlldykKIHsKICAgICBQeV9zc2l6ZV90IGk7CkBAIC01MTMsNyArNTEzLDcgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAvKiBJbml0aWFsaXplIHZhbHVlcyB0aGF0IGFyZSBzaGFyZWQgd2l0aCB0aGUgbWFuYWdlZCBidWZmZXIuICovCi1QeV9MT0NBTF9JTkxJTkUodm9pZCkKK3N0YXRpYyBpbmxpbmUgdm9pZAogaW5pdF9zaGFyZWRfdmFsdWVzKFB5X2J1ZmZlciAqZGVzdCwgY29uc3QgUHlfYnVmZmVyICpzcmMpCiB7CiAgICAgZGVzdC0+b2JqID0gc3JjLT5vYmo7CkBAIC01NTMsNyArNTUzLDcgQEAKICAgICB9CiB9CiAKLVB5X0xPQ0FMX0lOTElORSh2b2lkKQorc3RhdGljIGlubGluZSB2b2lkCiBpbml0X3N1Ym9mZnNldHMoUHlfYnVmZmVyICpkZXN0LCBjb25zdCBQeV9idWZmZXIgKnNyYykKIHsKICAgICBQeV9zc2l6ZV90IGk7CkBAIC01NjcsNyArNTY3LDcgQEAKIH0KIAogLyogbGVuID0gcHJvZHVjdChzaGFwZSkgKiBpdGVtc2l6ZSAqLwotUHlfTE9DQUxfSU5MSU5FKHZvaWQpCitzdGF0aWMgaW5saW5lIHZvaWQKIGluaXRfbGVuKFB5X2J1ZmZlciAqdmlldykKIHsKICAgICBQeV9zc2l6ZV90IGksIGxlbjsKQEAgLTYxNCw3ICs2MTQsNyBAQAogCiAvKiBBbGxvY2F0ZSBhIG5ldyBtZW1vcnl2aWV3IGFuZCBwZXJmb3JtIGJhc2ljIGluaXRpYWxpemF0aW9uLiBOZXcgbWVtb3J5dmlld3MKICAgIGFyZSBleGNsdXNpdmVseSBjcmVhdGVkIHRocm91Z2ggdGhlIG1idWZfYWRkIGZ1bmN0aW9ucy4gKi8KLVB5X0xPQ0FMX0lOTElORShQeU1lbW9yeVZpZXdPYmplY3QgKikKK3N0YXRpYyBpbmxpbmUgUHlNZW1vcnlWaWV3T2JqZWN0ICoKIG1lbW9yeV9hbGxvYyhpbnQgbmRpbSkKIHsKICAgICBQeU1lbW9yeVZpZXdPYmplY3QgKm12OwpAQCAtMTA5OSw3ICsxMDk5LDcgQEAKIAogI2RlZmluZSBJU19CWVRFX0ZPUk1BVChmKSAoZiA9PSAnYicgfHwgZiA9PSAnQicgfHwgZiA9PSAnYycpCiAKLVB5X0xPQ0FMX0lOTElORShQeV9zc2l6ZV90KQorc3RhdGljIGlubGluZSBQeV9zc2l6ZV90CiBnZXRfbmF0aXZlX2ZtdGNoYXIoY2hhciAqcmVzdWx0LCBjb25zdCBjaGFyICpmbXQpCiB7CiAgICAgUHlfc3NpemVfdCBzaXplID0gLTE7CkBAIC0xMTExLDE3ICsxMTExLDExIEBACiAgICAgY2FzZSAnaCc6IGNhc2UgJ0gnOiBzaXplID0gc2l6ZW9mKHNob3J0KTsgYnJlYWs7CiAgICAgY2FzZSAnaSc6IGNhc2UgJ0knOiBzaXplID0gc2l6ZW9mKGludCk7IGJyZWFrOwogICAgIGNhc2UgJ2wnOiBjYXNlICdMJzogc2l6ZSA9IHNpemVvZihsb25nKTsgYnJlYWs7Ci0gICAgI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgY2FzZSAncSc6IGNhc2UgJ1EnOiBzaXplID0gc2l6ZW9mKFBZX0xPTkdfTE9ORyk7IGJyZWFrOwotICAgICNlbmRpZgorICAgIGNhc2UgJ3EnOiBjYXNlICdRJzogc2l6ZSA9IHNpemVvZihsb25nIGxvbmcpOyBicmVhazsKICAgICBjYXNlICduJzogY2FzZSAnTic6IHNpemUgPSBzaXplb2YoUHlfc3NpemVfdCk7IGJyZWFrOwogICAgIGNhc2UgJ2YnOiBzaXplID0gc2l6ZW9mKGZsb2F0KTsgYnJlYWs7CiAgICAgY2FzZSAnZCc6IHNpemUgPSBzaXplb2YoZG91YmxlKTsgYnJlYWs7Ci0gICAgI2lmZGVmIEhBVkVfQzk5X0JPT0wKICAgICBjYXNlICc/Jzogc2l6ZSA9IHNpemVvZihfQm9vbCk7IGJyZWFrOwotICAgICNlbHNlCi0gICAgY2FzZSAnPyc6IHNpemUgPSBzaXplb2YoY2hhcik7IGJyZWFrOwotICAgICNlbmRpZgogICAgIGNhc2UgJ1AnOiBzaXplID0gc2l6ZW9mKHZvaWQgKik7IGJyZWFrOwogICAgIH0KIApAQCAtMTEzMyw3ICsxMTI3LDcgQEAKICAgICByZXR1cm4gLTE7CiB9CiAKLVB5X0xPQ0FMX0lOTElORShjaGFyICopCitzdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIgKgogZ2V0X25hdGl2ZV9mbXRzdHIoY29uc3QgY2hhciAqZm10KQogewogICAgIGludCBhdCA9IDA7CkBAIC0xMTU4LDE5ICsxMTUyLDEzIEBACiAgICAgY2FzZSAnSSc6IFJFVFVSTigiSSIpOwogICAgIGNhc2UgJ2wnOiBSRVRVUk4oImwiKTsKICAgICBjYXNlICdMJzogUkVUVVJOKCJMIik7Ci0gICAgI2lmZGVmIEhBVkVfTE9OR19MT05HCiAgICAgY2FzZSAncSc6IFJFVFVSTigicSIpOwogICAgIGNhc2UgJ1EnOiBSRVRVUk4oIlEiKTsKLSAgICAjZW5kaWYKICAgICBjYXNlICduJzogUkVUVVJOKCJuIik7CiAgICAgY2FzZSAnTic6IFJFVFVSTigiTiIpOwogICAgIGNhc2UgJ2YnOiBSRVRVUk4oImYiKTsKICAgICBjYXNlICdkJzogUkVUVVJOKCJkIik7Ci0gICAgI2lmZGVmIEhBVkVfQzk5X0JPT0wKICAgICBjYXNlICc/JzogUkVUVVJOKCI/Iik7Ci0gICAgI2Vsc2UKLSAgICBjYXNlICc/JzogUkVUVVJOKCI/Iik7Ci0gICAgI2VuZGlmCiAgICAgY2FzZSAnUCc6IFJFVFVSTigiUCIpOwogICAgIH0KIApAQCAtMTIyMSw3ICsxMjA5LDcgQEAKICAgICAgICAgZ290byBvdXQ7CiAgICAgfQogCi0gICAgdmlldy0+Zm9ybWF0ID0gZ2V0X25hdGl2ZV9mbXRzdHIoUHlCeXRlc19BU19TVFJJTkcoYXNjaWlmbXQpKTsKKyAgICB2aWV3LT5mb3JtYXQgPSAoY2hhciAqKWdldF9uYXRpdmVfZm10c3RyKFB5Qnl0ZXNfQVNfU1RSSU5HKGFzY2lpZm10KSk7CiAgICAgaWYgKHZpZXctPmZvcm1hdCA9PSBOVUxMKSB7CiAgICAgICAgIC8qIE5PVF9SRUFDSEVEOiBnZXRfbmF0aXZlX2ZtdGNoYXIoKSBhbHJlYWR5IHZhbGlkYXRlcyB0aGUgZm9ybWF0LiAqLwogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLApAQCAtMTU4MSwxMiArMTU2OSwxMSBAQAogICAgIHJldHVybiBsdTsKIH0KIAotI2lmZGVmIEhBVkVfTE9OR19MT05HCi1zdGF0aWMgUFlfTE9OR19MT05HCitzdGF0aWMgbG9uZyBsb25nCiBweWxvbmdfYXNfbGxkKFB5T2JqZWN0ICppdGVtKQogewogICAgIFB5T2JqZWN0ICp0bXA7Ci0gICAgUFlfTE9OR19MT05HIGxsZDsKKyAgICBsb25nIGxvbmcgbGxkOwogCiAgICAgdG1wID0gUHlOdW1iZXJfSW5kZXgoaXRlbSk7CiAgICAgaWYgKHRtcCA9PSBOVUxMKQpAQCAtMTU5NywyMSArMTU4NCwyMCBAQAogICAgIHJldHVybiBsbGQ7CiB9CiAKLXN0YXRpYyB1bnNpZ25lZCBQWV9MT05HX0xPTkcKK3N0YXRpYyB1bnNpZ25lZCBsb25nIGxvbmcKIHB5bG9uZ19hc19sbHUoUHlPYmplY3QgKml0ZW0pCiB7CiAgICAgUHlPYmplY3QgKnRtcDsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgbGx1OworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBsbHU7CiAKICAgICB0bXAgPSBQeU51bWJlcl9JbmRleChpdGVtKTsKICAgICBpZiAodG1wID09IE5VTEwpCi0gICAgICAgIHJldHVybiAodW5zaWduZWQgUFlfTE9OR19MT05HKS0xOworICAgICAgICByZXR1cm4gKHVuc2lnbmVkIGxvbmcgbG9uZyktMTsKIAogICAgIGxsdSA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcodG1wKTsKICAgICBQeV9ERUNSRUYodG1wKTsKICAgICByZXR1cm4gbGx1OwogfQotI2VuZGlmCiAKIHN0YXRpYyBQeV9zc2l6ZV90CiBweWxvbmdfYXNfemQoUHlPYmplY3QgKml0ZW0pCkBAIC0xNjU2LDEzICsxNjQyLDEzIEBACiAvKiBVbnBhY2sgYSBzaW5nbGUgaXRlbS4gJ2ZtdCcgY2FuIGJlIGFueSBuYXRpdmUgZm9ybWF0IGNoYXJhY3RlciBpbiBzdHJ1Y3QKICAgIG1vZHVsZSBzeW50YXguIFRoaXMgZnVuY3Rpb24gaXMgdmVyeSBzZW5zaXRpdmUgdG8gc21hbGwgY2hhbmdlcy4gV2l0aCB0aGlzCiAgICBsYXlvdXQgZ2NjIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVzIGEgZmFzdCBqdW1wIHRhYmxlLiAqLwotUHlfTE9DQUxfSU5MSU5FKFB5T2JqZWN0ICopCitzdGF0aWMgaW5saW5lIFB5T2JqZWN0ICoKIHVucGFja19zaW5nbGUoY29uc3QgY2hhciAqcHRyLCBjb25zdCBjaGFyICpmbXQpCiB7Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIGxsdTsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgbGx1OwogICAgIHVuc2lnbmVkIGxvbmcgbHU7CiAgICAgc2l6ZV90IHp1OwotICAgIFBZX0xPTkdfTE9ORyBsbGQ7CisgICAgbG9uZyBsb25nIGxsZDsKICAgICBsb25nIGxkOwogICAgIFB5X3NzaXplX3QgemQ7CiAgICAgZG91YmxlIGQ7CkBAIC0xNjc5LDExICsxNjY1LDcgQEAKICAgICBjYXNlICdsJzogVU5QQUNLX1NJTkdMRShsZCwgcHRyLCBsb25nKTsgZ290byBjb252ZXJ0X2xkOwogCiAgICAgLyogYm9vbGVhbiAqLwotICAgICNpZmRlZiBIQVZFX0M5OV9CT09MCiAgICAgY2FzZSAnPyc6IFVOUEFDS19TSU5HTEUobGQsIHB0ciwgX0Jvb2wpOyBnb3RvIGNvbnZlcnRfYm9vbDsKLSAgICAjZWxzZQotICAgIGNhc2UgJz8nOiBVTlBBQ0tfU0lOR0xFKGxkLCBwdHIsIGNoYXIpOyBnb3RvIGNvbnZlcnRfYm9vbDsKLSAgICAjZW5kaWYKIAogICAgIC8qIHVuc2lnbmVkIGludGVnZXJzICovCiAgICAgY2FzZSAnSCc6IFVOUEFDS19TSU5HTEUobHUsIHB0ciwgdW5zaWduZWQgc2hvcnQpOyBnb3RvIGNvbnZlcnRfbHU7CkBAIC0xNjkxLDEwICsxNjczLDggQEAKICAgICBjYXNlICdMJzogVU5QQUNLX1NJTkdMRShsdSwgcHRyLCB1bnNpZ25lZCBsb25nKTsgZ290byBjb252ZXJ0X2x1OwogCiAgICAgLyogbmF0aXZlIDY0LWJpdCAqLwotICAgICNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgIGNhc2UgJ3EnOiBVTlBBQ0tfU0lOR0xFKGxsZCwgcHRyLCBQWV9MT05HX0xPTkcpOyBnb3RvIGNvbnZlcnRfbGxkOwotICAgIGNhc2UgJ1EnOiBVTlBBQ0tfU0lOR0xFKGxsdSwgcHRyLCB1bnNpZ25lZCBQWV9MT05HX0xPTkcpOyBnb3RvIGNvbnZlcnRfbGx1OwotICAgICNlbmRpZgorICAgIGNhc2UgJ3EnOiBVTlBBQ0tfU0lOR0xFKGxsZCwgcHRyLCBsb25nIGxvbmcpOyBnb3RvIGNvbnZlcnRfbGxkOworICAgIGNhc2UgJ1EnOiBVTlBBQ0tfU0lOR0xFKGxsdSwgcHRyLCB1bnNpZ25lZCBsb25nIGxvbmcpOyBnb3RvIGNvbnZlcnRfbGx1OwogCiAgICAgLyogc3NpemVfdCBhbmQgc2l6ZV90ICovCiAgICAgY2FzZSAnbic6IFVOUEFDS19TSU5HTEUoemQsIHB0ciwgUHlfc3NpemVfdCk7IGdvdG8gY29udmVydF96ZDsKQEAgLTE3NTUsMTAgKzE3MzUsMTAgQEAKIHN0YXRpYyBpbnQKIHBhY2tfc2luZ2xlKGNoYXIgKnB0ciwgUHlPYmplY3QgKml0ZW0sIGNvbnN0IGNoYXIgKmZtdCkKIHsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgbGx1OworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBsbHU7CiAgICAgdW5zaWduZWQgbG9uZyBsdTsKICAgICBzaXplX3QgenU7Ci0gICAgUFlfTE9OR19MT05HIGxsZDsKKyAgICBsb25nIGxvbmcgbGxkOwogICAgIGxvbmcgbGQ7CiAgICAgUHlfc3NpemVfdCB6ZDsKICAgICBkb3VibGUgZDsKQEAgLTE4MDYsMjAgKzE3ODYsMTggQEAKICAgICAgICAgYnJlYWs7CiAKICAgICAvKiBuYXRpdmUgNjQtYml0ICovCi0gICAgI2lmZGVmIEhBVkVfTE9OR19MT05HCiAgICAgY2FzZSAncSc6CiAgICAgICAgIGxsZCA9IHB5bG9uZ19hc19sbGQoaXRlbSk7CiAgICAgICAgIGlmIChsbGQgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIGdvdG8gZXJyX29jY3VycmVkOwotICAgICAgICBQQUNLX1NJTkdMRShwdHIsIGxsZCwgUFlfTE9OR19MT05HKTsKKyAgICAgICAgUEFDS19TSU5HTEUocHRyLCBsbGQsIGxvbmcgbG9uZyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgJ1EnOgogICAgICAgICBsbHUgPSBweWxvbmdfYXNfbGx1KGl0ZW0pOwotICAgICAgICBpZiAobGx1ID09ICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgaWYgKGxsdSA9PSAodW5zaWduZWQgbG9uZyBsb25nKS0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICBnb3RvIGVycl9vY2N1cnJlZDsKLSAgICAgICAgUEFDS19TSU5HTEUocHRyLCBsbHUsIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyk7CisgICAgICAgIFBBQ0tfU0lOR0xFKHB0ciwgbGx1LCB1bnNpZ25lZCBsb25nIGxvbmcpOwogICAgICAgICBicmVhazsKLSAgICAjZW5kaWYKIAogICAgIC8qIHNzaXplX3QgYW5kIHNpemVfdCAqLwogICAgIGNhc2UgJ24nOgpAQCAtMTg1MywxMSArMTgzMSw3IEBACiAgICAgICAgIGxkID0gUHlPYmplY3RfSXNUcnVlKGl0ZW0pOwogICAgICAgICBpZiAobGQgPCAwKQogICAgICAgICAgICAgcmV0dXJuIC0xOyAvKiBwcmVzZXJ2ZSBvcmlnaW5hbCBlcnJvciAqLwotICAgICNpZmRlZiBIQVZFX0M5OV9CT09MCiAgICAgICAgIFBBQ0tfU0lOR0xFKHB0ciwgbGQsIF9Cb29sKTsKLSAgICAjZWxzZQotICAgICAgICBQQUNLX1NJTkdMRShwdHIsIGxkLCBjaGFyKTsKLSAgICAjZW5kaWYKICAgICAgICAgIGJyZWFrOwogCiAgICAgLyogYnl0ZXMgb2JqZWN0ICovCkBAIC0yMDI0LDcgKzE5OTgsNyBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8qIGFsbG93IGV4cGxpY2l0IGZvcm0gb2YgbmF0aXZlIGZvcm1hdCAqLwotUHlfTE9DQUxfSU5MSU5FKGNvbnN0IGNoYXIgKikKK3N0YXRpYyBpbmxpbmUgY29uc3QgY2hhciAqCiBhZGp1c3RfZm10KGNvbnN0IFB5X2J1ZmZlciAqdmlldykKIHsKICAgICBjb25zdCBjaGFyICpmbXQ7CkBAIC0yMzA2LDcgKzIyODAsNyBAQAogICAgIHJldHVybiB1bnBhY2tfc2luZ2xlKHB0ciwgZm10KTsKIH0KIAotUHlfTE9DQUxfSU5MSU5FKGludCkKK3N0YXRpYyBpbmxpbmUgaW50CiBpbml0X3NsaWNlKFB5X2J1ZmZlciAqYmFzZSwgUHlPYmplY3QgKmtleSwgaW50IGRpbSkKIHsKICAgICBQeV9zc2l6ZV90IHN0YXJ0LCBzdG9wLCBzdGVwLCBzbGljZWxlbmd0aDsKQEAgLTI2MjgsNyArMjYwMiw3IEBACiAgICAgICAgIGVxdWFsID0gKHggPT0geSk7ICAgICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlICgwKQogCi1QeV9MT0NBTF9JTkxJTkUoaW50KQorc3RhdGljIGlubGluZSBpbnQKIHVucGFja19jbXAoY29uc3QgY2hhciAqcCwgY29uc3QgY2hhciAqcSwgY2hhciBmbXQsCiAgICAgICAgICAgIHN0cnVjdCB1bnBhY2tlciAqdW5wYWNrX3AsIHN0cnVjdCB1bnBhY2tlciAqdW5wYWNrX3EpCiB7CkBAIC0yNjQ0LDExICsyNjE4LDcgQEAKICAgICBjYXNlICdsJzogQ01QX1NJTkdMRShwLCBxLCBsb25nKTsgcmV0dXJuIGVxdWFsOwogCiAgICAgLyogYm9vbGVhbiAqLwotICAgICNpZmRlZiBIQVZFX0M5OV9CT09MCiAgICAgY2FzZSAnPyc6IENNUF9TSU5HTEUocCwgcSwgX0Jvb2wpOyByZXR1cm4gZXF1YWw7Ci0gICAgI2Vsc2UKLSAgICBjYXNlICc/JzogQ01QX1NJTkdMRShwLCBxLCBjaGFyKTsgcmV0dXJuIGVxdWFsOwotICAgICNlbmRpZgogCiAgICAgLyogdW5zaWduZWQgaW50ZWdlcnMgKi8KICAgICBjYXNlICdIJzogQ01QX1NJTkdMRShwLCBxLCB1bnNpZ25lZCBzaG9ydCk7IHJldHVybiBlcXVhbDsKQEAgLTI2NTYsMTAgKzI2MjYsOCBAQAogICAgIGNhc2UgJ0wnOiBDTVBfU0lOR0xFKHAsIHEsIHVuc2lnbmVkIGxvbmcpOyByZXR1cm4gZXF1YWw7CiAKICAgICAvKiBuYXRpdmUgNjQtYml0ICovCi0gICAgI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgY2FzZSAncSc6IENNUF9TSU5HTEUocCwgcSwgUFlfTE9OR19MT05HKTsgcmV0dXJuIGVxdWFsOwotICAgIGNhc2UgJ1EnOiBDTVBfU0lOR0xFKHAsIHEsIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyk7IHJldHVybiBlcXVhbDsKLSAgICAjZW5kaWYKKyAgICBjYXNlICdxJzogQ01QX1NJTkdMRShwLCBxLCBsb25nIGxvbmcpOyByZXR1cm4gZXF1YWw7CisgICAgY2FzZSAnUSc6IENNUF9TSU5HTEUocCwgcSwgdW5zaWduZWQgbG9uZyBsb25nKTsgcmV0dXJuIGVxdWFsOwogCiAgICAgLyogc3NpemVfdCBhbmQgc2l6ZV90ICovCiAgICAgY2FzZSAnbic6IENNUF9TSU5HTEUocCwgcSwgUHlfc3NpemVfdCk7IHJldHVybiBlcXVhbDsKZGlmZiAtLWdpdCBhL09iamVjdHMvbWV0aG9kb2JqZWN0LmMgYi9PYmplY3RzL21ldGhvZG9iamVjdC5jCmluZGV4IDk0NjM1N2YuLmMyMDAxZjAgMTAwNjQ0Ci0tLSBhL09iamVjdHMvbWV0aG9kb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9tZXRob2RvYmplY3QuYwpAQCAtOTcsNiArOTcsMTEgQEAKICAgICBpZiAoZmxhZ3MgPT0gKE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMpKSB7CiAgICAgICAgIHJlcyA9ICgqKFB5Q0Z1bmN0aW9uV2l0aEtleXdvcmRzKW1ldGgpKHNlbGYsIGFyZ3MsIGt3ZHMpOwogICAgIH0KKyAgICBlbHNlIGlmIChmbGFncyA9PSBNRVRIX0ZBU1RDQUxMKSB7CisgICAgICAgIFB5T2JqZWN0ICoqc3RhY2sgPSAmUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAwKTsKKyAgICAgICAgUHlfc3NpemVfdCBuYXJncyA9IFB5VHVwbGVfR0VUX1NJWkUoYXJncyk7CisgICAgICAgIHJlcyA9IF9QeUNGdW5jdGlvbl9GYXN0Q2FsbERpY3QoZnVuYywgc3RhY2ssIG5hcmdzLCBrd2RzKTsKKyAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChrd2RzICE9IE5VTEwgJiYgUHlEaWN0X1NpemUoa3dkcykgIT0gMCkgewogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIiUuMjAwcygpIHRha2VzIG5vIGtleXdvcmQgYXJndW1lbnRzIiwKQEAgLTE0NSw2ICsxNTAsMTUzIEBACiAgICAgcmV0dXJuIF9QeV9DaGVja0Z1bmN0aW9uUmVzdWx0KGZ1bmMsIHJlcywgTlVMTCk7CiB9CiAKK1B5T2JqZWN0ICoKK19QeUNGdW5jdGlvbl9GYXN0Q2FsbERpY3QoUHlPYmplY3QgKmZ1bmNfb2JqLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlDRnVuY3Rpb25PYmplY3QgKmZ1bmMgPSAoUHlDRnVuY3Rpb25PYmplY3QqKWZ1bmNfb2JqOworICAgIFB5Q0Z1bmN0aW9uIG1ldGggPSBQeUNGdW5jdGlvbl9HRVRfRlVOQ1RJT04oZnVuYyk7CisgICAgUHlPYmplY3QgKnNlbGYgPSBQeUNGdW5jdGlvbl9HRVRfU0VMRihmdW5jKTsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIGludCBmbGFnczsKKworICAgIGFzc2VydChQeUNGdW5jdGlvbl9DaGVjayhmdW5jKSk7CisgICAgYXNzZXJ0KGZ1bmMgIT0gTlVMTCk7CisgICAgYXNzZXJ0KG5hcmdzID49IDApOworICAgIGFzc2VydChuYXJncyA9PSAwIHx8IGFyZ3MgIT0gTlVMTCk7CisgICAgYXNzZXJ0KGt3YXJncyA9PSBOVUxMIHx8IFB5RGljdF9DaGVjayhrd2FyZ3MpKTsKKworICAgIC8qIF9QeUNGdW5jdGlvbl9GYXN0Q2FsbERpY3QoKSBtdXN0IG5vdCBiZSBjYWxsZWQgd2l0aCBhbiBleGNlcHRpb24gc2V0LAorICAgICAgIGJlY2F1c2UgaXQgbWF5IGNsZWFyIGl0IChkaXJlY3RseSBvciBpbmRpcmVjdGx5KSBhbmQgc28gdGhlCisgICAgICAgY2FsbGVyIGxvc2VzIGl0cyBleGNlcHRpb24gKi8KKyAgICBhc3NlcnQoIVB5RXJyX09jY3VycmVkKCkpOworCisgICAgZmxhZ3MgPSBQeUNGdW5jdGlvbl9HRVRfRkxBR1MoZnVuYykgJiB+KE1FVEhfQ0xBU1MgfCBNRVRIX1NUQVRJQyB8IE1FVEhfQ09FWElTVCk7CisKKyAgICBzd2l0Y2ggKGZsYWdzKQorICAgIHsKKyAgICBjYXNlIE1FVEhfTk9BUkdTOgorICAgICAgICBpZiAoa3dhcmdzICE9IE5VTEwgJiYgUHlEaWN0X1NpemUoa3dhcmdzKSAhPSAwKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiJS4yMDBzKCkgdGFrZXMgbm8ga2V5d29yZCBhcmd1bWVudHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmMtPm1fbWwtPm1sX25hbWUpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBpZiAobmFyZ3MgIT0gMCkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAiJS4yMDBzKCkgdGFrZXMgbm8gYXJndW1lbnRzICglemQgZ2l2ZW4pIiwKKyAgICAgICAgICAgICAgICBmdW5jLT5tX21sLT5tbF9uYW1lLCBuYXJncyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIHJlc3VsdCA9ICgqbWV0aCkgKHNlbGYsIE5VTEwpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgTUVUSF9POgorICAgICAgICBpZiAoa3dhcmdzICE9IE5VTEwgJiYgUHlEaWN0X1NpemUoa3dhcmdzKSAhPSAwKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiJS4yMDBzKCkgdGFrZXMgbm8ga2V5d29yZCBhcmd1bWVudHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmMtPm1fbWwtPm1sX25hbWUpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBpZiAobmFyZ3MgIT0gMSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAiJS4yMDBzKCkgdGFrZXMgZXhhY3RseSBvbmUgYXJndW1lbnQgKCV6ZCBnaXZlbikiLAorICAgICAgICAgICAgICAgIGZ1bmMtPm1fbWwtPm1sX25hbWUsIG5hcmdzKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0ID0gKCptZXRoKSAoc2VsZiwgYXJnc1swXSk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBNRVRIX1ZBUkFSR1M6CisgICAgY2FzZSBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTOgorICAgIHsKKyAgICAgICAgLyogU2xvdy1wYXRoOiBjcmVhdGUgYSB0ZW1wb3JhcnkgdHVwbGUgKi8KKyAgICAgICAgUHlPYmplY3QgKnR1cGxlOworCisgICAgICAgIGlmICghKGZsYWdzICYgTUVUSF9LRVlXT1JEUykgJiYga3dhcmdzICE9IE5VTEwgJiYgUHlEaWN0X1NpemUoa3dhcmdzKSAhPSAwKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMoKSB0YWtlcyBubyBrZXl3b3JkIGFyZ3VtZW50cyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgZnVuYy0+bV9tbC0+bWxfbmFtZSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIHR1cGxlID0gX1B5U3RhY2tfQXNUdXBsZShhcmdzLCBuYXJncyk7CisgICAgICAgIGlmICh0dXBsZSA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChmbGFncyAmIE1FVEhfS0VZV09SRFMpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9ICgqKFB5Q0Z1bmN0aW9uV2l0aEtleXdvcmRzKW1ldGgpIChzZWxmLCB0dXBsZSwga3dhcmdzKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJlc3VsdCA9ICgqbWV0aCkgKHNlbGYsIHR1cGxlKTsKKyAgICAgICAgfQorICAgICAgICBQeV9ERUNSRUYodHVwbGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIE1FVEhfRkFTVENBTEw6CisgICAgeworICAgICAgICBQeU9iamVjdCAqKnN0YWNrOworICAgICAgICBQeU9iamVjdCAqa3duYW1lczsKKyAgICAgICAgX1B5Q0Z1bmN0aW9uRmFzdCBmYXN0bWV0aCA9IChfUHlDRnVuY3Rpb25GYXN0KW1ldGg7CisKKyAgICAgICAgc3RhY2sgPSBfUHlTdGFja19VbnBhY2tEaWN0KGFyZ3MsIG5hcmdzLCBrd2FyZ3MsICZrd25hbWVzLCBmdW5jX29iaik7CisgICAgICAgIGlmIChzdGFjayA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIHJlc3VsdCA9ICgqZmFzdG1ldGgpIChzZWxmLCBzdGFjaywgbmFyZ3MsIGt3bmFtZXMpOworICAgICAgICBpZiAoc3RhY2sgIT0gYXJncykgeworICAgICAgICAgICAgUHlNZW1fRnJlZShzdGFjayk7CisgICAgICAgIH0KKyAgICAgICAgUHlfWERFQ1JFRihrd25hbWVzKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZGVmYXVsdDoKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIkJhZCBjYWxsIGZsYWdzIGluIFB5Q0Z1bmN0aW9uX0NhbGwuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJNRVRIX09MREFSR1MgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCEiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmVzdWx0ID0gX1B5X0NoZWNrRnVuY3Rpb25SZXN1bHQoZnVuY19vYmosIHJlc3VsdCwgTlVMTCk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitQeU9iamVjdCAqCitfUHlDRnVuY3Rpb25fRmFzdENhbGxLZXl3b3JkcyhQeU9iamVjdCAqZnVuYywgUHlPYmplY3QgKipzdGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQoreworICAgIFB5T2JqZWN0ICprd2RpY3QsICpyZXN1bHQ7CisgICAgUHlfc3NpemVfdCBua3dhcmdzID0gKGt3bmFtZXMgPT0gTlVMTCkgPyAwIDogUHlUdXBsZV9HRVRfU0laRShrd25hbWVzKTsKKworICAgIGFzc2VydChQeUNGdW5jdGlvbl9DaGVjayhmdW5jKSk7CisgICAgYXNzZXJ0KG5hcmdzID49IDApOworICAgIGFzc2VydChrd25hbWVzID09IE5VTEwgfHwgUHlUdXBsZV9DaGVja0V4YWN0KGt3bmFtZXMpKTsKKyAgICBhc3NlcnQoKG5hcmdzID09IDAgJiYgbmt3YXJncyA9PSAwKSB8fCBzdGFjayAhPSBOVUxMKTsKKyAgICAvKiBrd25hbWVzIG11c3Qgb25seSBjb250YWlucyBzdHIgc3RyaW5ncywgbm8gc3ViY2xhc3MsIGFuZCBhbGwga2V5cyBtdXN0CisgICAgICAgYmUgdW5pcXVlICovCisKKyAgICBpZiAobmt3YXJncyA+IDApIHsKKyAgICAgICAga3dkaWN0ID0gX1B5U3RhY2tfQXNEaWN0KHN0YWNrICsgbmFyZ3MsIGt3bmFtZXMpOworICAgICAgICBpZiAoa3dkaWN0ID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBrd2RpY3QgPSBOVUxMOworICAgIH0KKworICAgIHJlc3VsdCA9IF9QeUNGdW5jdGlvbl9GYXN0Q2FsbERpY3QoZnVuYywgc3RhY2ssIG5hcmdzLCBrd2RpY3QpOworICAgIFB5X1hERUNSRUYoa3dkaWN0KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiAvKiBNZXRob2RzICh0aGUgc3RhbmRhcmQgYnVpbHQtaW4gbWV0aG9kcywgdGhhdCBpcykgKi8KIAogc3RhdGljIHZvaWQKZGlmZiAtLWdpdCBhL09iamVjdHMvbW9kdWxlb2JqZWN0LmMgYi9PYmplY3RzL21vZHVsZW9iamVjdC5jCmluZGV4IGFlNzJkYTYuLjc5YmU1MWEgMTAwNjQ0Ci0tLSBhL09iamVjdHMvbW9kdWxlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9tb2R1bGVvYmplY3QuYwpAQCAtMzgwLDcgKzM4MCw3IEBACiAgICAgZm9yIChjdXJfc2xvdCA9IGRlZi0+bV9zbG90czsgY3VyX3Nsb3QgJiYgY3VyX3Nsb3QtPnNsb3Q7IGN1cl9zbG90KyspIHsKICAgICAgICAgc3dpdGNoIChjdXJfc2xvdC0+c2xvdCkgewogICAgICAgICAgICAgY2FzZSBQeV9tb2RfY3JlYXRlOgotICAgICAgICAgICAgICAgIC8qIGhhbmRsZWQgaW4gUHlNb2R1bGVfQ3JlYXRlRnJvbVNsb3RzICovCisgICAgICAgICAgICAgICAgLyogaGFuZGxlZCBpbiBQeU1vZHVsZV9Gcm9tRGVmQW5kU3BlYzIgKi8KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUHlfbW9kX2V4ZWM6CiAgICAgICAgICAgICAgICAgcmV0ID0gKChpbnQgKCopKFB5T2JqZWN0ICopKWN1cl9zbG90LT52YWx1ZSkobW9kdWxlKTsKQEAgLTQ1MCw4ICs0NTAsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgZCA9ICgoUHlNb2R1bGVPYmplY3QgKiltKSAtPiBtZF9kaWN0OwotICAgIGlmIChkID09IE5VTEwpCi0gICAgICAgICgoUHlNb2R1bGVPYmplY3QgKiltKSAtPiBtZF9kaWN0ID0gZCA9IFB5RGljdF9OZXcoKTsKKyAgICBhc3NlcnQoZCAhPSBOVUxMKTsKICAgICByZXR1cm4gZDsKIH0KIApAQCAtNDg0LDcgKzQ4Myw3IEBACiAgICAgaWYgKG5hbWUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfREVDUkVGKG5hbWUpOyAgIC8qIG1vZHVsZSBkaWN0IGhhcyBzdGlsbCBhIHJlZmVyZW5jZSAqLwotICAgIHJldHVybiBfUHlVbmljb2RlX0FzU3RyaW5nKG5hbWUpOworICAgIHJldHVybiBQeVVuaWNvZGVfQXNVVEY4KG5hbWUpOwogfQogCiBQeU9iamVjdCoKQEAgLTUxNyw3ICs1MTYsNyBAQAogICAgIGZpbGVvYmogPSBQeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdChtKTsKICAgICBpZiAoZmlsZW9iaiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB1dGY4ID0gX1B5VW5pY29kZV9Bc1N0cmluZyhmaWxlb2JqKTsKKyAgICB1dGY4ID0gUHlVbmljb2RlX0FzVVRGOChmaWxlb2JqKTsKICAgICBQeV9ERUNSRUYoZmlsZW9iaik7ICAgLyogbW9kdWxlIGRpY3QgaGFzIHN0aWxsIGEgcmVmZXJlbmNlICovCiAgICAgcmV0dXJuIHV0Zjg7CiB9CkBAIC01NzAsNyArNTY5LDcgQEAKICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRF9DSEFSKGtleSwgMCkgPT0gJ18nICYmCiAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1JFQURfQ0hBUihrZXksIDEpICE9ICdfJykgewogICAgICAgICAgICAgICAgIGlmIChQeV9WZXJib3NlRmxhZyA+IDEpIHsKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcyA9IF9QeVVuaWNvZGVfQXNTdHJpbmcoa2V5KTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcyA9IFB5VW5pY29kZV9Bc1VURjgoa2V5KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHMgIT0gTlVMTCkKICAgICAgICAgICAgICAgICAgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCIjICAgY2xlYXJbMV0gJXNcbiIsIHMpOwogICAgICAgICAgICAgICAgICAgICBlbHNlCkBAIC01OTAsNyArNTg5LDcgQEAKICAgICAgICAgICAgICAgICAhX1B5VW5pY29kZV9FcXVhbFRvQVNDSUlTdHJpbmcoa2V5LCAiX19idWlsdGluc19fIikpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnID4gMSkgewotICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzID0gX1B5VW5pY29kZV9Bc1N0cmluZyhrZXkpOworICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzID0gUHlVbmljb2RlX0FzVVRGOChrZXkpOwogICAgICAgICAgICAgICAgICAgICBpZiAocyAhPSBOVUxMKQogICAgICAgICAgICAgICAgICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoIiMgICBjbGVhclsyXSAlc1xuIiwgcyk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL09iamVjdHMvbmFtZXNwYWNlb2JqZWN0LmMgYi9PYmplY3RzL25hbWVzcGFjZW9iamVjdC5jCmluZGV4IDNkMjdhOTUuLjBiYjMwNjMgMTAwNjQ0Ci0tLSBhL09iamVjdHMvbmFtZXNwYWNlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9uYW1lc3BhY2VvYmplY3QuYwpAQCAtMSw0ICsxLDQgQEAKLS8qIG5hbWVzcGFjZSBvYmplY3QgaW1wbGVtZW50YXRpb24gKi8KKy8vIG5hbWVzcGFjZSBvYmplY3QgaW1wbGVtZW50YXRpb24KIAogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgpAQCAtMTYsNyArMTYsNyBAQAogfTsKIAogCi0vKiBNZXRob2RzICovCisvLyBNZXRob2RzCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBuYW1lc3BhY2VfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQpAQCAtNDAsNyArNDAsNyBAQAogc3RhdGljIGludAogbmFtZXNwYWNlX2luaXQoX1B5TmFtZXNwYWNlT2JqZWN0ICpucywgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIC8qIGlnbm9yZSBhcmdzIGlmIGl0J3MgTlVMTCBvciBlbXB0eSAqLworICAgIC8vIGlnbm9yZSBhcmdzIGlmIGl0J3MgTlVMTCBvciBlbXB0eQogICAgIGlmIChhcmdzICE9IE5VTEwpIHsKICAgICAgICAgUHlfc3NpemVfdCBhcmdjb3VudCA9IFB5T2JqZWN0X1NpemUoYXJncyk7CiAgICAgICAgIGlmIChhcmdjb3VudCA8IDApCkBAIC0xOTEsNyArMTkxLDcgQEAKIHN0YXRpYyBQeU1ldGhvZERlZiBuYW1lc3BhY2VfbWV0aG9kc1tdID0gewogICAgIHsiX19yZWR1Y2VfXyIsIChQeUNGdW5jdGlvbiluYW1lc3BhY2VfcmVkdWNlLCBNRVRIX05PQVJHUywKICAgICAgbmFtZXNwYWNlX3JlZHVjZV9fZG9jX199LAotICAgIHtOVUxMLCAgICAgICAgIE5VTEx9ICAvKiBzZW50aW5lbCAqLworICAgIHtOVUxMLCAgICAgICAgIE5VTEx9ICAvLyBzZW50aW5lbAogfTsKIAogCmRpZmYgLS1naXQgYS9PYmplY3RzL29iamVjdC5jIGIvT2JqZWN0cy9vYmplY3QuYwppbmRleCBkMjFmZDkwLi5kODhhZTNiIDEwMDY0NAotLS0gYS9PYmplY3RzL29iamVjdC5jCisrKyBiL09iamVjdHMvb2JqZWN0LmMKQEAgLTIyLDEyICsyMiw2IEBACiB7CiAgICAgUHlPYmplY3QgKm87CiAgICAgUHlfc3NpemVfdCB0b3RhbCA9IF9QeV9SZWZUb3RhbDsKLSAgICAvKiBpZ25vcmUgdGhlIHJlZmVyZW5jZXMgdG8gdGhlIGR1bW15IG9iamVjdCBvZiB0aGUgZGljdHMgYW5kIHNldHMKLSAgICAgICBiZWNhdXNlIHRoZXkgYXJlIG5vdCByZWxpYWJsZSBhbmQgbm90IHVzZWZ1bCAobm93IHRoYXQgdGhlCi0gICAgICAgaGFzaCB0YWJsZSBjb2RlIGlzIHdlbGwtdGVzdGVkKSAqLwotICAgIG8gPSBfUHlEaWN0X0R1bW15KCk7Ci0gICAgaWYgKG8gIT0gTlVMTCkKLSAgICAgICAgdG90YWwgLT0gby0+b2JfcmVmY250OwogICAgIG8gPSBfUHlTZXRfRHVtbXk7CiAgICAgaWYgKG8gIT0gTlVMTCkKICAgICAgICAgdG90YWwgLT0gby0+b2JfcmVmY250OwpAQCAtMTA5LDYgKzEwMywxNSBAQAogZHVtcF9jb3VudHMoRklMRSogZikKIHsKICAgICBQeVR5cGVPYmplY3QgKnRwOworICAgIFB5T2JqZWN0ICp4b3B0aW9ucywgKnZhbHVlOworICAgIF9QeV9JREVOVElGSUVSKHNob3dhbGxvY2NvdW50KTsKKworICAgIHhvcHRpb25zID0gUHlTeXNfR2V0WE9wdGlvbnMoKTsKKyAgICBpZiAoeG9wdGlvbnMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuOworICAgIHZhbHVlID0gX1B5RGljdF9HZXRJdGVtSWQoeG9wdGlvbnMsICZQeUlkX3Nob3dhbGxvY2NvdW50KTsKKyAgICBpZiAodmFsdWUgIT0gUHlfVHJ1ZSkKKyAgICAgICAgcmV0dXJuOwogCiAgICAgZm9yICh0cCA9IHR5cGVfbGlzdDsgdHA7IHRwID0gdHAtPnRwX25leHQpCiAgICAgICAgIGZwcmludGYoZiwgIiVzIGFsbG9jJ2Q6ICUiIFBZX0ZPUk1BVF9TSVpFX1QgImQsICIKQEAgLTY0NCw3ICs2NDcsNyBAQAogLyogTWFwIHJpY2ggY29tcGFyaXNvbiBvcGVyYXRvcnMgdG8gdGhlaXIgc3dhcHBlZCB2ZXJzaW9uLCBlLmcuIExUIDwtLT4gR1QgKi8KIGludCBfUHlfU3dhcHBlZE9wW10gPSB7UHlfR1QsIFB5X0dFLCBQeV9FUSwgUHlfTkUsIFB5X0xULCBQeV9MRX07CiAKLXN0YXRpYyBjaGFyICpvcHN0cmluZ3NbXSA9IHsiPCIsICI8PSIsICI9PSIsICIhPSIsICI+IiwgIj49In07CitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IG9wc3RyaW5nc1tdID0geyI8IiwgIjw9IiwgIj09IiwgIiE9IiwgIj4iLCAiPj0ifTsKIAogLyogUGVyZm9ybSBhIHJpY2ggY29tcGFyaXNvbiwgcmFpc2luZyBUeXBlRXJyb3Igd2hlbiB0aGUgcmVxdWVzdGVkIGNvbXBhcmlzb24KICAgIG9wZXJhdG9yIGlzIG5vdCBzdXBwb3J0ZWQuICovCkBAIC02ODYsMTEgKzY4OSwxMCBAQAogICAgICAgICByZXMgPSAodiAhPSB3KSA/IFB5X1RydWUgOiBQeV9GYWxzZTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgLyogWFhYIFNwZWNpYWwtY2FzZSBOb25lIHNvIGl0IGRvZXNuJ3Qgc2hvdyBhcyBOb25lVHlwZSgpICovCiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAidW5vcmRlcmFibGUgdHlwZXM6ICUuMTAwcygpICVzICUuMTAwcygpIiwKLSAgICAgICAgICAgICAgICAgICAgIHYtPm9iX3R5cGUtPnRwX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAiJyVzJyBub3Qgc3VwcG9ydGVkIGJldHdlZW4gaW5zdGFuY2VzIG9mICclLjEwMHMnIGFuZCAnJS4xMDBzJyIsCiAgICAgICAgICAgICAgICAgICAgICBvcHN0cmluZ3Nbb3BdLAorICAgICAgICAgICAgICAgICAgICAgdi0+b2JfdHlwZS0+dHBfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgIHctPm9iX3R5cGUtPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC04ODgsNyArODkwLDcgQEAKICAgICBpZiAodHAtPnRwX2dldGF0dHJvICE9IE5VTEwpCiAgICAgICAgIHJldHVybiAoKnRwLT50cF9nZXRhdHRybykodiwgbmFtZSk7CiAgICAgaWYgKHRwLT50cF9nZXRhdHRyICE9IE5VTEwpIHsKLSAgICAgICAgY2hhciAqbmFtZV9zdHIgPSBfUHlVbmljb2RlX0FzU3RyaW5nKG5hbWUpOworICAgICAgICBjaGFyICpuYW1lX3N0ciA9IFB5VW5pY29kZV9Bc1VURjgobmFtZSk7CiAgICAgICAgIGlmIChuYW1lX3N0ciA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIHJldHVybiAoKnRwLT50cF9nZXRhdHRyKSh2LCBuYW1lX3N0cik7CkBAIC05MzIsNyArOTM0LDcgQEAKICAgICAgICAgcmV0dXJuIGVycjsKICAgICB9CiAgICAgaWYgKHRwLT50cF9zZXRhdHRyICE9IE5VTEwpIHsKLSAgICAgICAgY2hhciAqbmFtZV9zdHIgPSBfUHlVbmljb2RlX0FzU3RyaW5nKG5hbWUpOworICAgICAgICBjaGFyICpuYW1lX3N0ciA9IFB5VW5pY29kZV9Bc1VURjgobmFtZSk7CiAgICAgICAgIGlmIChuYW1lX3N0ciA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICBlcnIgPSAoKnRwLT50cF9zZXRhdHRyKSh2LCBuYW1lX3N0ciwgdmFsdWUpOwpAQCAtMTA0MSw4ICsxMDQzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgIG5hbWUtPm9iX3R5cGUtPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgZWxzZQotICAgICAgICBQeV9JTkNSRUYobmFtZSk7CisgICAgUHlfSU5DUkVGKG5hbWUpOwogCiAgICAgaWYgKHRwLT50cF9kaWN0ID09IE5VTEwpIHsKICAgICAgICAgaWYgKFB5VHlwZV9SZWFkeSh0cCkgPCAwKQpAQCAtMTA1MCwxMCArMTA1MSwxMCBAQAogICAgIH0KIAogICAgIGRlc2NyID0gX1B5VHlwZV9Mb29rdXAodHAsIG5hbWUpOwotICAgIFB5X1hJTkNSRUYoZGVzY3IpOwogCiAgICAgZiA9IE5VTEw7CiAgICAgaWYgKGRlc2NyICE9IE5VTEwpIHsKKyAgICAgICAgUHlfSU5DUkVGKGRlc2NyKTsKICAgICAgICAgZiA9IGRlc2NyLT5vYl90eXBlLT50cF9kZXNjcl9nZXQ7CiAgICAgICAgIGlmIChmICE9IE5VTEwgJiYgUHlEZXNjcl9Jc0RhdGEoZGVzY3IpKSB7CiAgICAgICAgICAgICByZXMgPSBmKGRlc2NyLCBvYmosIChQeU9iamVjdCAqKW9iai0+b2JfdHlwZSk7CkBAIC0xMDczLDggKzEwNzQsOSBAQAogICAgICAgICAgICAgICAgIGlmICh0c2l6ZSA8IDApCiAgICAgICAgICAgICAgICAgICAgIHRzaXplID0gLXRzaXplOwogICAgICAgICAgICAgICAgIHNpemUgPSBfUHlPYmplY3RfVkFSX1NJWkUodHAsIHRzaXplKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoc2l6ZSA8PSBQWV9TU0laRV9UX01BWCk7CiAKLSAgICAgICAgICAgICAgICBkaWN0b2Zmc2V0ICs9IChsb25nKXNpemU7CisgICAgICAgICAgICAgICAgZGljdG9mZnNldCArPSAoUHlfc3NpemVfdClzaXplOwogICAgICAgICAgICAgICAgIGFzc2VydChkaWN0b2Zmc2V0ID4gMCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0KGRpY3RvZmZzZXQgJSBTSVpFT0ZfVk9JRF9QID09IDApOwogICAgICAgICAgICAgfQpAQCAtMTE0MiwxMiArMTE0NCwxMSBAQAogICAgIFB5X0lOQ1JFRihuYW1lKTsKIAogICAgIGRlc2NyID0gX1B5VHlwZV9Mb29rdXAodHAsIG5hbWUpOwotICAgIFB5X1hJTkNSRUYoZGVzY3IpOwogCi0gICAgZiA9IE5VTEw7CiAgICAgaWYgKGRlc2NyICE9IE5VTEwpIHsKKyAgICAgICAgUHlfSU5DUkVGKGRlc2NyKTsKICAgICAgICAgZiA9IGRlc2NyLT5vYl90eXBlLT50cF9kZXNjcl9zZXQ7Ci0gICAgICAgIGlmIChmICE9IE5VTEwgJiYgUHlEZXNjcl9Jc0RhdGEoZGVzY3IpKSB7CisgICAgICAgIGlmIChmICE9IE5VTEwpIHsKICAgICAgICAgICAgIHJlcyA9IGYoZGVzY3IsIG9iaiwgdmFsdWUpOwogICAgICAgICAgICAgZ290byBkb25lOwogICAgICAgICB9CkBAIC0xMTU1LDQwICsxMTU2LDMyIEBACiAKICAgICBpZiAoZGljdCA9PSBOVUxMKSB7CiAgICAgICAgIGRpY3RwdHIgPSBfUHlPYmplY3RfR2V0RGljdFB0cihvYmopOwotICAgICAgICBpZiAoZGljdHB0ciAhPSBOVUxMKSB7Ci0gICAgICAgICAgICByZXMgPSBfUHlPYmplY3REaWN0X1NldEl0ZW0oUHlfVFlQRShvYmopLCBkaWN0cHRyLCBuYW1lLCB2YWx1ZSk7Ci0gICAgICAgICAgICBpZiAocmVzIDwgMCAmJiBQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0tleUVycm9yKSkKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfQXR0cmlidXRlRXJyb3IsIG5hbWUpOworICAgICAgICBpZiAoZGljdHB0ciA9PSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoZGVzY3IgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiclLjEwMHMnIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICclVSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cC0+dHBfbmFtZSwgbmFtZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfQXR0cmlidXRlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICInJS41MHMnIG9iamVjdCBhdHRyaWJ1dGUgJyVVJyBpcyByZWFkLW9ubHkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cC0+dHBfbmFtZSwgbmFtZSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBnb3RvIGRvbmU7CiAgICAgICAgIH0KKyAgICAgICAgcmVzID0gX1B5T2JqZWN0RGljdF9TZXRJdGVtKHRwLCBkaWN0cHRyLCBuYW1lLCB2YWx1ZSk7CiAgICAgfQotICAgIGlmIChkaWN0ICE9IE5VTEwpIHsKKyAgICBlbHNlIHsKICAgICAgICAgUHlfSU5DUkVGKGRpY3QpOwogICAgICAgICBpZiAodmFsdWUgPT0gTlVMTCkKICAgICAgICAgICAgIHJlcyA9IFB5RGljdF9EZWxJdGVtKGRpY3QsIG5hbWUpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXMgPSBQeURpY3RfU2V0SXRlbShkaWN0LCBuYW1lLCB2YWx1ZSk7CiAgICAgICAgIFB5X0RFQ1JFRihkaWN0KTsKLSAgICAgICAgaWYgKHJlcyA8IDAgJiYgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlFcnJvcikpCi0gICAgICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfQXR0cmlidXRlRXJyb3IsIG5hbWUpOwotICAgICAgICBnb3RvIGRvbmU7CiAgICAgfQorICAgIGlmIChyZXMgPCAwICYmIFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5RXJyb3IpKQorICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfQXR0cmlidXRlRXJyb3IsIG5hbWUpOwogCi0gICAgaWYgKGYgIT0gTlVMTCkgewotICAgICAgICByZXMgPSBmKGRlc2NyLCBvYmosIHZhbHVlKTsKLSAgICAgICAgZ290byBkb25lOwotICAgIH0KLQotICAgIGlmIChkZXNjciA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICInJS4xMDBzJyBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAnJVUnIiwKLSAgICAgICAgICAgICAgICAgICAgIHRwLT50cF9uYW1lLCBuYW1lKTsKLSAgICAgICAgZ290byBkb25lOwotICAgIH0KLQotICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwKLSAgICAgICAgICAgICAgICAgIiclLjUwcycgb2JqZWN0IGF0dHJpYnV0ZSAnJVUnIGlzIHJlYWQtb25seSIsCi0gICAgICAgICAgICAgICAgIHRwLT50cF9uYW1lLCBuYW1lKTsKICAgZG9uZToKICAgICBQeV9YREVDUkVGKGRlc2NyKTsKICAgICBQeV9ERUNSRUYobmFtZSk7CkBAIC0xMjA0LDcgKzExOTcsNyBAQAogaW50CiBQeU9iamVjdF9HZW5lcmljU2V0RGljdChQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqdmFsdWUsIHZvaWQgKmNvbnRleHQpCiB7Ci0gICAgUHlPYmplY3QgKmRpY3QsICoqZGljdHB0ciA9IF9QeU9iamVjdF9HZXREaWN0UHRyKG9iaik7CisgICAgUHlPYmplY3QgKipkaWN0cHRyID0gX1B5T2JqZWN0X0dldERpY3RQdHIob2JqKTsKICAgICBpZiAoZGljdHB0ciA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19BdHRyaWJ1dGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJUaGlzIG9iamVjdCBoYXMgbm8gX19kaWN0X18iKTsKQEAgLTEyMjAsMTAgKzEyMTMsOCBAQAogICAgICAgICAgICAgICAgICAgICAgIm5vdCBhICclLjIwMHMnIiwgUHlfVFlQRSh2YWx1ZSktPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIGRpY3QgPSAqZGljdHB0cjsKLSAgICBQeV9YSU5DUkVGKHZhbHVlKTsKLSAgICAqZGljdHB0ciA9IHZhbHVlOwotICAgIFB5X1hERUNSRUYoZGljdCk7CisgICAgUHlfSU5DUkVGKHZhbHVlKTsKKyAgICBQeV9YU0VUUkVGKCpkaWN0cHRyLCB2YWx1ZSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL09iamVjdHMvb2JtYWxsb2MuYyBiL09iamVjdHMvb2JtYWxsb2MuYwppbmRleCA3Y2M4ODlmLi5hMTE0MmYzIDEwMDY0NAotLS0gYS9PYmplY3RzL29ibWFsbG9jLmMKKysrIGIvT2JqZWN0cy9vYm1hbGxvYy5jCkBAIC0xLDMxICsxLDQyIEBACiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAKKyNpbmNsdWRlIDxzdGRib29sLmg+CisKKworLyogRGVmaW5lZCBpbiB0cmFjZW1hbGxvYy5jICovCitleHRlcm4gdm9pZCBfUHlNZW1fRHVtcFRyYWNlYmFjayhpbnQgZmQsIGNvbnN0IHZvaWQgKnB0cik7CisKKwogLyogUHl0aG9uJ3MgbWFsbG9jIHdyYXBwZXJzIChzZWUgcHltZW0uaCkgKi8KIAotI2lmZGVmIFBZTUFMTE9DX0RFQlVHICAgLyogV0lUSF9QWU1BTExPQyAmJiBQWU1BTExPQ19ERUJVRyAqLworI3VuZGVmICB1aW50CisjZGVmaW5lIHVpbnQgICAgdW5zaWduZWQgaW50ICAgIC8qIGFzc3VtaW5nID49IDE2IGJpdHMgKi8KKwogLyogRm9yd2FyZCBkZWNsYXJhdGlvbiAqLworc3RhdGljIHZvaWQqIF9QeU1lbV9EZWJ1Z1Jhd01hbGxvYyh2b2lkICpjdHgsIHNpemVfdCBzaXplKTsKK3N0YXRpYyB2b2lkKiBfUHlNZW1fRGVidWdSYXdDYWxsb2Modm9pZCAqY3R4LCBzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpOworc3RhdGljIHZvaWQqIF9QeU1lbV9EZWJ1Z1Jhd1JlYWxsb2Modm9pZCAqY3R4LCB2b2lkICpwdHIsIHNpemVfdCBzaXplKTsKK3N0YXRpYyB2b2lkIF9QeU1lbV9EZWJ1Z1Jhd0ZyZWUodm9pZCAqY3R4LCB2b2lkICpwKTsKKwogc3RhdGljIHZvaWQqIF9QeU1lbV9EZWJ1Z01hbGxvYyh2b2lkICpjdHgsIHNpemVfdCBzaXplKTsKIHN0YXRpYyB2b2lkKiBfUHlNZW1fRGVidWdDYWxsb2Modm9pZCAqY3R4LCBzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpOwotc3RhdGljIHZvaWQgX1B5TWVtX0RlYnVnRnJlZSh2b2lkICpjdHgsIHZvaWQgKnApOwogc3RhdGljIHZvaWQqIF9QeU1lbV9EZWJ1Z1JlYWxsb2Modm9pZCAqY3R4LCB2b2lkICpwdHIsIHNpemVfdCBzaXplKTsKK3N0YXRpYyB2b2lkIF9QeU1lbV9EZWJ1Z0ZyZWUodm9pZCAqY3R4LCB2b2lkICpwKTsKIAogc3RhdGljIHZvaWQgX1B5T2JqZWN0X0RlYnVnRHVtcEFkZHJlc3MoY29uc3Qgdm9pZCAqcCk7CiBzdGF0aWMgdm9pZCBfUHlNZW1fRGVidWdDaGVja0FkZHJlc3MoY2hhciBhcGlfaWQsIGNvbnN0IHZvaWQgKnApOwotI2VuZGlmCiAKICNpZiBkZWZpbmVkKF9faGFzX2ZlYXR1cmUpICAvKiBDbGFuZyAqLwogICNpZiBfX2hhc19mZWF0dXJlKGFkZHJlc3Nfc2FuaXRpemVyKSAgLyogaXMgQVNBTiBlbmFibGVkPyAqLwogICAjZGVmaW5lIEFUVFJJQlVURV9OT19BRERSRVNTX1NBRkVUWV9BTkFMWVNJUyBcCi0gICAgICAgIF9fYXR0cmlidXRlX18oKG5vX2FkZHJlc3Nfc2FmZXR5X2FuYWx5c2lzKSkgXAotICAgICAgICBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKQorICAgICAgICBfX2F0dHJpYnV0ZV9fKChub19hZGRyZXNzX3NhZmV0eV9hbmFseXNpcykpCiAgI2Vsc2UKICAgI2RlZmluZSBBVFRSSUJVVEVfTk9fQUREUkVTU19TQUZFVFlfQU5BTFlTSVMKICAjZW5kaWYKICNlbHNlCiAgI2lmIGRlZmluZWQoX19TQU5JVElaRV9BRERSRVNTX18pICAvKiBHQ0MgNC44LngsIGlzIEFTQU4gZW5hYmxlZD8gKi8KICAgI2RlZmluZSBBVFRSSUJVVEVfTk9fQUREUkVTU19TQUZFVFlfQU5BTFlTSVMgXAotICAgICAgICBfX2F0dHJpYnV0ZV9fKChub19hZGRyZXNzX3NhZmV0eV9hbmFseXNpcykpIFwKLSAgICAgICAgX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lKSkKKyAgICAgICAgX19hdHRyaWJ1dGVfXygobm9fYWRkcmVzc19zYWZldHlfYW5hbHlzaXMpKQogICNlbHNlCiAgICNkZWZpbmUgQVRUUklCVVRFX05PX0FERFJFU1NfU0FGRVRZX0FOQUxZU0lTCiAgI2VuZGlmCkBAIC0xNDUsOSArMTU2LDggQEAKICNlbHNlCiAjICBkZWZpbmUgUFlPQkpfRlVOQ1MgUFlSQVdfRlVOQ1MKICNlbmRpZgotI2RlZmluZSBQWU1FTV9GVU5DUyBQWVJBV19GVU5DUworI2RlZmluZSBQWU1FTV9GVU5DUyBQWU9CSl9GVU5DUwogCi0jaWZkZWYgUFlNQUxMT0NfREVCVUcKIHR5cGVkZWYgc3RydWN0IHsKICAgICAvKiBXZSB0YWcgZWFjaCBibG9jayB3aXRoIGFuIEFQSSBJRCBpbiBvcmRlciB0byB0YWcgQVBJIHZpb2xhdGlvbnMgKi8KICAgICBjaGFyIGFwaV9pZDsKQEAgLTE2MywxOSArMTczLDIxIEBACiAgICAgeydvJywge05VTEwsIFBZT0JKX0ZVTkNTfX0KICAgICB9OwogCi0jZGVmaW5lIFBZREJHX0ZVTkNTIF9QeU1lbV9EZWJ1Z01hbGxvYywgX1B5TWVtX0RlYnVnQ2FsbG9jLCBfUHlNZW1fRGVidWdSZWFsbG9jLCBfUHlNZW1fRGVidWdGcmVlCi0jZW5kaWYKKyNkZWZpbmUgUFlSQVdEQkdfRlVOQ1MgXAorICAgIF9QeU1lbV9EZWJ1Z1Jhd01hbGxvYywgX1B5TWVtX0RlYnVnUmF3Q2FsbG9jLCBfUHlNZW1fRGVidWdSYXdSZWFsbG9jLCBfUHlNZW1fRGVidWdSYXdGcmVlCisjZGVmaW5lIFBZREJHX0ZVTkNTIFwKKyAgICBfUHlNZW1fRGVidWdNYWxsb2MsIF9QeU1lbV9EZWJ1Z0NhbGxvYywgX1B5TWVtX0RlYnVnUmVhbGxvYywgX1B5TWVtX0RlYnVnRnJlZQogCiBzdGF0aWMgUHlNZW1BbGxvY2F0b3JFeCBfUHlNZW1fUmF3ID0gewotI2lmZGVmIFBZTUFMTE9DX0RFQlVHCi0gICAgJl9QeU1lbV9EZWJ1Zy5yYXcsIFBZREJHX0ZVTkNTCisjaWZkZWYgUHlfREVCVUcKKyAgICAmX1B5TWVtX0RlYnVnLnJhdywgUFlSQVdEQkdfRlVOQ1MKICNlbHNlCiAgICAgTlVMTCwgUFlSQVdfRlVOQ1MKICNlbmRpZgogICAgIH07CiAKIHN0YXRpYyBQeU1lbUFsbG9jYXRvckV4IF9QeU1lbSA9IHsKLSNpZmRlZiBQWU1BTExPQ19ERUJVRworI2lmZGVmIFB5X0RFQlVHCiAgICAgJl9QeU1lbV9EZWJ1Zy5tZW0sIFBZREJHX0ZVTkNTCiAjZWxzZQogICAgIE5VTEwsIFBZTUVNX0ZVTkNTCkBAIC0xODMsMTYgKzE5NSw3NiBAQAogICAgIH07CiAKIHN0YXRpYyBQeU1lbUFsbG9jYXRvckV4IF9QeU9iamVjdCA9IHsKLSNpZmRlZiBQWU1BTExPQ19ERUJVRworI2lmZGVmIFB5X0RFQlVHCiAgICAgJl9QeU1lbV9EZWJ1Zy5vYmosIFBZREJHX0ZVTkNTCiAjZWxzZQogICAgIE5VTEwsIFBZT0JKX0ZVTkNTCiAjZW5kaWYKICAgICB9OwogCitpbnQKK19QeU1lbV9TZXR1cEFsbG9jYXRvcnMoY29uc3QgY2hhciAqb3B0KQoreworICAgIGlmIChvcHQgPT0gTlVMTCB8fCAqb3B0ID09ICdcMCcpIHsKKyAgICAgICAgLyogUFlUSE9OTUFMTE9DIGlzIGVtcHR5IG9yIGlzIG5vdCBzZXQgb3IgaWdub3JlZCAoLUUvLUkgY29tbWFuZCBsaW5lCisgICAgICAgICAgIG9wdGlvbnMpOiB1c2UgZGVmYXVsdCBhbGxvY2F0b3JzICovCisjaWZkZWYgUHlfREVCVUcKKyMgIGlmZGVmIFdJVEhfUFlNQUxMT0MKKyAgICAgICAgb3B0ID0gInB5bWFsbG9jX2RlYnVnIjsKKyMgIGVsc2UKKyAgICAgICAgb3B0ID0gIm1hbGxvY19kZWJ1ZyI7CisjICBlbmRpZgorI2Vsc2UKKyAgIC8qICFQeV9ERUJVRyAqLworIyAgaWZkZWYgV0lUSF9QWU1BTExPQworICAgICAgICBvcHQgPSAicHltYWxsb2MiOworIyAgZWxzZQorICAgICAgICBvcHQgPSAibWFsbG9jIjsKKyMgIGVuZGlmCisjZW5kaWYKKyAgICB9CisKKyAgICBpZiAoc3RyY21wKG9wdCwgImRlYnVnIikgPT0gMCkgeworICAgICAgICBQeU1lbV9TZXR1cERlYnVnSG9va3MoKTsKKyAgICB9CisgICAgZWxzZSBpZiAoc3RyY21wKG9wdCwgIm1hbGxvYyIpID09IDAgfHwgc3RyY21wKG9wdCwgIm1hbGxvY19kZWJ1ZyIpID09IDApCisgICAgeworICAgICAgICBQeU1lbUFsbG9jYXRvckV4IGFsbG9jID0ge05VTEwsIFBZUkFXX0ZVTkNTfTsKKworICAgICAgICBQeU1lbV9TZXRBbGxvY2F0b3IoUFlNRU1fRE9NQUlOX1JBVywgJmFsbG9jKTsKKyAgICAgICAgUHlNZW1fU2V0QWxsb2NhdG9yKFBZTUVNX0RPTUFJTl9NRU0sICZhbGxvYyk7CisgICAgICAgIFB5TWVtX1NldEFsbG9jYXRvcihQWU1FTV9ET01BSU5fT0JKLCAmYWxsb2MpOworCisgICAgICAgIGlmIChzdHJjbXAob3B0LCAibWFsbG9jX2RlYnVnIikgPT0gMCkKKyAgICAgICAgICAgIFB5TWVtX1NldHVwRGVidWdIb29rcygpOworICAgIH0KKyNpZmRlZiBXSVRIX1BZTUFMTE9DCisgICAgZWxzZSBpZiAoc3RyY21wKG9wdCwgInB5bWFsbG9jIikgPT0gMAorICAgICAgICAgICAgIHx8IHN0cmNtcChvcHQsICJweW1hbGxvY19kZWJ1ZyIpID09IDApCisgICAgeworICAgICAgICBQeU1lbUFsbG9jYXRvckV4IHJhd19hbGxvYyA9IHtOVUxMLCBQWVJBV19GVU5DU307CisgICAgICAgIFB5TWVtQWxsb2NhdG9yRXggbWVtX2FsbG9jID0ge05VTEwsIFBZTUVNX0ZVTkNTfTsKKyAgICAgICAgUHlNZW1BbGxvY2F0b3JFeCBvYmpfYWxsb2MgPSB7TlVMTCwgUFlPQkpfRlVOQ1N9OworCisgICAgICAgIFB5TWVtX1NldEFsbG9jYXRvcihQWU1FTV9ET01BSU5fUkFXLCAmcmF3X2FsbG9jKTsKKyAgICAgICAgUHlNZW1fU2V0QWxsb2NhdG9yKFBZTUVNX0RPTUFJTl9NRU0sICZtZW1fYWxsb2MpOworICAgICAgICBQeU1lbV9TZXRBbGxvY2F0b3IoUFlNRU1fRE9NQUlOX09CSiwgJm9ial9hbGxvYyk7CisKKyAgICAgICAgaWYgKHN0cmNtcChvcHQsICJweW1hbGxvY19kZWJ1ZyIpID09IDApCisgICAgICAgICAgICBQeU1lbV9TZXR1cERlYnVnSG9va3MoKTsKKyAgICB9CisjZW5kaWYKKyAgICBlbHNlIHsKKyAgICAgICAgLyogdW5rbm93biBhbGxvY2F0b3IgKi8KKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKwogI3VuZGVmIFBZUkFXX0ZVTkNTCiAjdW5kZWYgUFlNRU1fRlVOQ1MKICN1bmRlZiBQWU9CSl9GVU5DUworI3VuZGVmIFBZUkFXREJHX0ZVTkNTCiAjdW5kZWYgUFlEQkdfRlVOQ1MKIAogc3RhdGljIFB5T2JqZWN0QXJlbmFBbGxvY2F0b3IgX1B5T2JqZWN0X0FyZW5hID0ge05VTEwsCkBAIC0yMDUsMjMgKzI3Nyw0NiBAQAogI2VuZGlmCiAgICAgfTsKIAorI2lmZGVmIFdJVEhfUFlNQUxMT0MKK3N0YXRpYyBpbnQKK19QeU1lbV9EZWJ1Z0VuYWJsZWQodm9pZCkKK3sKKyAgICByZXR1cm4gKF9QeU9iamVjdC5tYWxsb2MgPT0gX1B5TWVtX0RlYnVnTWFsbG9jKTsKK30KKworaW50CitfUHlNZW1fUHltYWxsb2NFbmFibGVkKHZvaWQpCit7CisgICAgaWYgKF9QeU1lbV9EZWJ1Z0VuYWJsZWQoKSkgeworICAgICAgICByZXR1cm4gKF9QeU1lbV9EZWJ1Zy5vYmouYWxsb2MubWFsbG9jID09IF9QeU9iamVjdF9NYWxsb2MpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIChfUHlPYmplY3QubWFsbG9jID09IF9QeU9iamVjdF9NYWxsb2MpOworICAgIH0KK30KKyNlbmRpZgorCiB2b2lkCiBQeU1lbV9TZXR1cERlYnVnSG9va3Modm9pZCkKIHsKLSNpZmRlZiBQWU1BTExPQ19ERUJVRwogICAgIFB5TWVtQWxsb2NhdG9yRXggYWxsb2M7CiAKKyAgICBhbGxvYy5tYWxsb2MgPSBfUHlNZW1fRGVidWdSYXdNYWxsb2M7CisgICAgYWxsb2MuY2FsbG9jID0gX1B5TWVtX0RlYnVnUmF3Q2FsbG9jOworICAgIGFsbG9jLnJlYWxsb2MgPSBfUHlNZW1fRGVidWdSYXdSZWFsbG9jOworICAgIGFsbG9jLmZyZWUgPSBfUHlNZW1fRGVidWdSYXdGcmVlOworCisgICAgaWYgKF9QeU1lbV9SYXcubWFsbG9jICE9IF9QeU1lbV9EZWJ1Z1Jhd01hbGxvYykgeworICAgICAgICBhbGxvYy5jdHggPSAmX1B5TWVtX0RlYnVnLnJhdzsKKyAgICAgICAgUHlNZW1fR2V0QWxsb2NhdG9yKFBZTUVNX0RPTUFJTl9SQVcsICZfUHlNZW1fRGVidWcucmF3LmFsbG9jKTsKKyAgICAgICAgUHlNZW1fU2V0QWxsb2NhdG9yKFBZTUVNX0RPTUFJTl9SQVcsICZhbGxvYyk7CisgICAgfQorCiAgICAgYWxsb2MubWFsbG9jID0gX1B5TWVtX0RlYnVnTWFsbG9jOwogICAgIGFsbG9jLmNhbGxvYyA9IF9QeU1lbV9EZWJ1Z0NhbGxvYzsKICAgICBhbGxvYy5yZWFsbG9jID0gX1B5TWVtX0RlYnVnUmVhbGxvYzsKICAgICBhbGxvYy5mcmVlID0gX1B5TWVtX0RlYnVnRnJlZTsKIAotICAgIGlmIChfUHlNZW1fUmF3Lm1hbGxvYyAhPSBfUHlNZW1fRGVidWdNYWxsb2MpIHsKLSAgICAgICAgYWxsb2MuY3R4ID0gJl9QeU1lbV9EZWJ1Zy5yYXc7Ci0gICAgICAgIFB5TWVtX0dldEFsbG9jYXRvcihQWU1FTV9ET01BSU5fUkFXLCAmX1B5TWVtX0RlYnVnLnJhdy5hbGxvYyk7Ci0gICAgICAgIFB5TWVtX1NldEFsbG9jYXRvcihQWU1FTV9ET01BSU5fUkFXLCAmYWxsb2MpOwotICAgIH0KLQogICAgIGlmIChfUHlNZW0ubWFsbG9jICE9IF9QeU1lbV9EZWJ1Z01hbGxvYykgewogICAgICAgICBhbGxvYy5jdHggPSAmX1B5TWVtX0RlYnVnLm1lbTsKICAgICAgICAgUHlNZW1fR2V0QWxsb2NhdG9yKFBZTUVNX0RPTUFJTl9NRU0sICZfUHlNZW1fRGVidWcubWVtLmFsbG9jKTsKQEAgLTIzMyw3ICszMjgsNiBAQAogICAgICAgICBQeU1lbV9HZXRBbGxvY2F0b3IoUFlNRU1fRE9NQUlOX09CSiwgJl9QeU1lbV9EZWJ1Zy5vYmouYWxsb2MpOwogICAgICAgICBQeU1lbV9TZXRBbGxvY2F0b3IoUFlNRU1fRE9NQUlOX09CSiwgJmFsbG9jKTsKICAgICB9Ci0jZW5kaWYKIH0KIAogdm9pZApAQCAtMjY0LDcgKzM1OCw2IEBACiAgICAgY2FzZSBQWU1FTV9ET01BSU5fT0JKOiBfUHlPYmplY3QgPSAqYWxsb2NhdG9yOyBicmVhazsKICAgICAvKiBpZ25vcmUgdW5rbm93biBkb21haW4gKi8KICAgICB9Ci0KIH0KIAogdm9pZApAQCAtNjQyLDI0ICs3MzUsOCBAQAogI2RlZmluZSBTSU1QTEVMT0NLX0xPQ0sobG9jaykgICAvKiBhY3F1aXJlIHJlbGVhc2VkIGxvY2sgKi8KICNkZWZpbmUgU0lNUExFTE9DS19VTkxPQ0sobG9jaykgLyogcmVsZWFzZSBhY3F1aXJlZCBsb2NrICovCiAKLS8qCi0gKiBCYXNpYyB0eXBlcwotICogSSBkb24ndCBjYXJlIGlmIHRoZXNlIGFyZSBkZWZpbmVkIGluIDxzeXMvdHlwZXMuaD4gb3IgZWxzZXdoZXJlLiBBeGlvbS4KLSAqLwotI3VuZGVmICB1Y2hhcgotI2RlZmluZSB1Y2hhciAgIHVuc2lnbmVkIGNoYXIgICAvKiBhc3N1bWluZyA9PSA4IGJpdHMgICovCi0KLSN1bmRlZiAgdWludAotI2RlZmluZSB1aW50ICAgIHVuc2lnbmVkIGludCAgICAvKiBhc3N1bWluZyA+PSAxNiBiaXRzICovCi0KLSN1bmRlZiAgdWxvbmcKLSNkZWZpbmUgdWxvbmcgICB1bnNpZ25lZCBsb25nICAgLyogYXNzdW1pbmcgPj0gMzIgYml0cyAqLwotCi0jdW5kZWYgdXB0cgotI2RlZmluZSB1cHRyICAgIFB5X3VpbnRwdHJfdAotCiAvKiBXaGVuIHlvdSBzYXkgbWVtb3J5LCBteSBtaW5kIHJlYXNvbnMgaW4gdGVybXMgb2YgKHBvaW50ZXJzIHRvKSBibG9ja3MgKi8KLXR5cGVkZWYgdWNoYXIgYmxvY2s7Cit0eXBlZGVmIHVpbnQ4X3QgYmxvY2s7CiAKIC8qIFBvb2wgZm9yIHNtYWxsIGJsb2Nrcy4gKi8KIHN0cnVjdCBwb29sX2hlYWRlciB7CkBAIC02ODMsNyArNzYwLDcgQEAKICAgICAgKiBoZXJlIHRvIG1hcmsgYW4gYXJlbmFfb2JqZWN0IHRoYXQgZG9lc24ndCBjb3JyZXNwb25kIHRvIGFuCiAgICAgICogYWxsb2NhdGVkIGFyZW5hLgogICAgICAqLwotICAgIHVwdHIgYWRkcmVzczsKKyAgICB1aW50cHRyX3QgYWRkcmVzczsKIAogICAgIC8qIFBvb2wtYWxpZ25lZCBwb2ludGVyIHRvIHRoZSBuZXh0IHBvb2wgdG8gYmUgY2FydmVkIG9mZi4gKi8KICAgICBibG9jayogcG9vbF9hZGRyZXNzOwpAQCAtODM0LDcgKzkxMSw3IEBACiB0aGUgcHJldnBvb2wgbWVtYmVyLgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwogCi0jZGVmaW5lIFBUQSh4KSAgKChwb29scCApKCh1Y2hhciAqKSYodXNlZHBvb2xzWzIqKHgpXSkgLSAyKnNpemVvZihibG9jayAqKSkpCisjZGVmaW5lIFBUQSh4KSAgKChwb29scCApKCh1aW50OF90ICopJih1c2VkcG9vbHNbMiooeCldKSAtIDIqc2l6ZW9mKGJsb2NrICopKSkKICNkZWZpbmUgUFQoeCkgICBQVEEoeCksIFBUQSh4KQogCiBzdGF0aWMgcG9vbHAgdXNlZHBvb2xzWzIgKiAoKE5CX1NNQUxMX1NJWkVfQ0xBU1NFUyArIDcpIC8gOCkgKiA4XSA9IHsKQEAgLTk0OSwxMSArMTAyNiwxNSBAQAogICAgIHN0cnVjdCBhcmVuYV9vYmplY3QqIGFyZW5hb2JqOwogICAgIHVpbnQgZXhjZXNzOyAgICAgICAgLyogbnVtYmVyIG9mIGJ5dGVzIGFib3ZlIHBvb2wgYWxpZ25tZW50ICovCiAgICAgdm9pZCAqYWRkcmVzczsKKyAgICBzdGF0aWMgaW50IGRlYnVnX3N0YXRzID0gLTE7CiAKLSNpZmRlZiBQWU1BTExPQ19ERUJVRwotICAgIGlmIChQeV9HRVRFTlYoIlBZVEhPTk1BTExPQ1NUQVRTIikpCisgICAgaWYgKGRlYnVnX3N0YXRzID09IC0xKSB7CisgICAgICAgIGNoYXIgKm9wdCA9IFB5X0dFVEVOVigiUFlUSE9OTUFMTE9DU1RBVFMiKTsKKyAgICAgICAgZGVidWdfc3RhdHMgPSAob3B0ICE9IE5VTEwgJiYgKm9wdCAhPSAnXDAnKTsKKyAgICB9CisgICAgaWYgKGRlYnVnX3N0YXRzKQogICAgICAgICBfUHlPYmplY3RfRGVidWdNYWxsb2NTdGF0cyhzdGRlcnIpOwotI2VuZGlmCisKICAgICBpZiAodW51c2VkX2FyZW5hX29iamVjdHMgPT0gTlVMTCkgewogICAgICAgICB1aW50IGk7CiAgICAgICAgIHVpbnQgbnVtYXJlbmFzOwpAQCAtOTY2LDcgKzEwNDcsNyBAQAogICAgICAgICBpZiAobnVtYXJlbmFzIDw9IG1heGFyZW5hcykKICAgICAgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAvKiBvdmVyZmxvdyAqLwogI2lmIFNJWkVPRl9TSVpFX1QgPD0gU0laRU9GX0lOVAotICAgICAgICBpZiAobnVtYXJlbmFzID4gUFlfU0laRV9NQVggLyBzaXplb2YoKmFyZW5hcykpCisgICAgICAgIGlmIChudW1hcmVuYXMgPiBTSVpFX01BWCAvIHNpemVvZigqYXJlbmFzKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAvKiBvdmVyZmxvdyAqLwogI2VuZGlmCiAgICAgICAgIG5ieXRlcyA9IG51bWFyZW5hcyAqIHNpemVvZigqYXJlbmFzKTsKQEAgLTEwMTAsNyArMTA5MSw3IEBACiAgICAgICAgIHVudXNlZF9hcmVuYV9vYmplY3RzID0gYXJlbmFvYmo7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBhcmVuYW9iai0+YWRkcmVzcyA9ICh1cHRyKWFkZHJlc3M7CisgICAgYXJlbmFvYmotPmFkZHJlc3MgPSAodWludHB0cl90KWFkZHJlc3M7CiAKICAgICArK25hcmVuYXNfY3VycmVudGx5X2FsbG9jYXRlZDsKICAgICArK250aW1lc19hcmVuYV9hbGxvY2F0ZWQ7CkBAIC0xMDMzLDEzICsxMTE0LDEzIEBACiB9CiAKIC8qCi1QeV9BRERSRVNTX0lOX1JBTkdFKFAsIFBPT0wpCithZGRyZXNzX2luX3JhbmdlKFAsIFBPT0wpCiAKIFJldHVybiB0cnVlIGlmIGFuZCBvbmx5IGlmIFAgaXMgYW4gYWRkcmVzcyB0aGF0IHdhcyBhbGxvY2F0ZWQgYnkgcHltYWxsb2MuCiBQT09MIG11c3QgYmUgdGhlIHBvb2wgYWRkcmVzcyBhc3NvY2lhdGVkIHdpdGggUCwgaS5lLiwgUE9PTCA9IFBPT0xfQUREUihQKQogKHRoZSBjYWxsZXIgaXMgYXNrZWQgdG8gY29tcHV0ZSB0aGlzIGJlY2F1c2UgdGhlIG1hY3JvIGV4cGFuZHMgUE9PTCBtb3JlIHRoYW4KIG9uY2UsIGFuZCBmb3IgZWZmaWNpZW5jeSBpdCdzIGJlc3QgZm9yIHRoZSBjYWxsZXIgdG8gYXNzaWduIFBPT0xfQUREUihQKSB0byBhCi12YXJpYWJsZSBhbmQgcGFzcyB0aGUgbGF0dGVyIHRvIHRoZSBtYWNybzsgYmVjYXVzZSBQeV9BRERSRVNTX0lOX1JBTkdFIGlzCit2YXJpYWJsZSBhbmQgcGFzcyB0aGUgbGF0dGVyIHRvIHRoZSBtYWNybzsgYmVjYXVzZSBhZGRyZXNzX2luX3JhbmdlIGlzCiBjYWxsZWQgb24gZXZlcnkgYWxsb2MvcmVhbGxvYy9mcmVlLCBtaWNyby1lZmZpY2llbmN5IGlzIGltcG9ydGFudCBoZXJlKS4KIAogVHJpY2t5OiAgTGV0IEIgYmUgdGhlIGFyZW5hIGJhc2UgYWRkcmVzcyBhc3NvY2lhdGVkIHdpdGggdGhlIHBvb2wsIEIgPQpAQCAtMTA2NCw3ICsxMTQ1LDcgQEAKIHN0b3JlcywgZXRjKSwgUE9PTCBpcyB0aGUgY29ycmVjdCBhZGRyZXNzIG9mIFAncyBwb29sLCBBTy5hZGRyZXNzIGlzIHRoZQogY29ycmVjdCBiYXNlIGFkZHJlc3Mgb2YgdGhlIHBvb2wncyBhcmVuYSwgYW5kIFAgbXVzdCBiZSB3aXRoaW4gQVJFTkFfU0laRSBvZgogQU8uYWRkcmVzcy4gIEluIGFkZGl0aW9uLCBBTy5hZGRyZXNzIGlzIG5vdCAwIChubyBhcmVuYSBjYW4gc3RhcnQgYXQgYWRkcmVzcyAwCi0oTlVMTCkpLiAgVGhlcmVmb3JlIFB5X0FERFJFU1NfSU5fUkFOR0UgY29ycmVjdGx5IHJlcG9ydHMgdGhhdCBvYm1hbGxvYworKE5VTEwpKS4gIFRoZXJlZm9yZSBhZGRyZXNzX2luX3JhbmdlIGNvcnJlY3RseSByZXBvcnRzIHRoYXQgb2JtYWxsb2MKIGNvbnRyb2xzIFAuCiAKIE5vdyBzdXBwb3NlIG9ibWFsbG9jIGRvZXMgbm90IGNvbnRyb2wgUCAoZS5nLiwgUCB3YXMgb2J0YWluZWQgdmlhIGEgZGlyZWN0CkBAIC0xMTA1LDUxICsxMTg2LDIxIEBACiBvYm1hbGxvYyBpbiBhIHNtYWxsIGNvbnN0YW50IHRpbWUsIGluZGVwZW5kZW50IG9mIHRoZSBudW1iZXIgb2YgYXJlbmFzCiBvYm1hbGxvYyBjb250cm9scy4gIFNpbmNlIHRoaXMgdGVzdCBpcyBuZWVkZWQgYXQgZXZlcnkgZW50cnkgcG9pbnQsIGl0J3MKIGV4dHJlbWVseSBkZXNpcmFibGUgdGhhdCBpdCBiZSB0aGlzIGZhc3QuCi0KLVNpbmNlIFB5X0FERFJFU1NfSU5fUkFOR0UgbWF5IGJlIHJlYWRpbmcgZnJvbSBtZW1vcnkgd2hpY2ggd2FzIG5vdCBhbGxvY2F0ZWQKLWJ5IFB5dGhvbiwgaXQgaXMgaW1wb3J0YW50IHRoYXQgKFBPT0wpLT5hcmVuYWluZGV4IGlzIHJlYWQgb25seSBvbmNlLCBhcwotYW5vdGhlciB0aHJlYWQgbWF5IGJlIGNvbmN1cnJlbnRseSBtb2RpZnlpbmcgdGhlIHZhbHVlIHdpdGhvdXQgaG9sZGluZyB0aGUKLUdJTC4gIFRvIGFjY29tcGxpc2ggdGhpcywgdGhlIGFyZW5haW5kZXhfdGVtcCB2YXJpYWJsZSBpcyB1c2VkIHRvIHN0b3JlCi0oUE9PTCktPmFyZW5haW5kZXggZm9yIHRoZSBkdXJhdGlvbiBvZiB0aGUgUHlfQUREUkVTU19JTl9SQU5HRSBtYWNybydzCi1leGVjdXRpb24uICBUaGUgY2FsbGVyIG9mIHRoZSBtYWNybyBpcyByZXNwb25zaWJsZSBmb3IgZGVjbGFyaW5nIHRoaXMKLXZhcmlhYmxlLgogKi8KLSNkZWZpbmUgUHlfQUREUkVTU19JTl9SQU5HRShQLCBQT09MKSAgICAgICAgICAgICAgICAgICAgXAotICAgICgoYXJlbmFpbmRleF90ZW1wID0gKFBPT0wpLT5hcmVuYWluZGV4KSA8IG1heGFyZW5hcyAmJiAgICAgICAgICAgICAgXAotICAgICAodXB0cikoUCkgLSBhcmVuYXNbYXJlbmFpbmRleF90ZW1wXS5hZGRyZXNzIDwgKHVwdHIpQVJFTkFfU0laRSAmJiBcCi0gICAgIGFyZW5hc1thcmVuYWluZGV4X3RlbXBdLmFkZHJlc3MgIT0gMCkKIAotCi0vKiBUaGlzIGlzIG9ubHkgdXNlZnVsIHdoZW4gcnVubmluZyBtZW1vcnkgZGVidWdnZXJzIHN1Y2ggYXMKLSAqIFB1cmlmeSBvciBWYWxncmluZC4gIFVuY29tbWVudCB0byB1c2UuCi0gKgotI2RlZmluZSBQeV9VU0lOR19NRU1PUllfREVCVUdHRVIKLSAqLwotCi0jaWZkZWYgUHlfVVNJTkdfTUVNT1JZX0RFQlVHR0VSCi0KLS8qIFB5X0FERFJFU1NfSU5fUkFOR0UgbWF5IGFjY2VzcyB1bmluaXRpYWxpemVkIG1lbW9yeSBieSBkZXNpZ24KLSAqIFRoaXMgbGVhZHMgdG8gdGhvdXNhbmRzIG9mIHNwdXJpb3VzIHdhcm5pbmdzIHdoZW4gdXNpbmcKLSAqIFB1cmlmeSBvciBWYWxncmluZC4gIEJ5IG1ha2luZyBhIGZ1bmN0aW9uLCB3ZSBjYW4gZWFzaWx5Ci0gKiBzdXBwcmVzcyB0aGUgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgaW4gdGhpcyBvbmUgZnVuY3Rpb24uCi0gKiBTbyB3ZSB3b24ndCBpZ25vcmUgcmVhbCBlcnJvcnMgZWxzZXdoZXJlLgotICoKLSAqIERpc2FibGUgdGhlIG1hY3JvIGFuZCB1c2UgYSBmdW5jdGlvbi4KLSAqLwotCi0jdW5kZWYgUHlfQUREUkVTU19JTl9SQU5HRQotCi0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMSkgfHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAoX19HTlVDX18gPj0gNCkpCi0jZGVmaW5lIFB5X05PX0lOTElORSBfX2F0dHJpYnV0ZV9fKChfX25vaW5saW5lX18pKQotI2Vsc2UKLSNkZWZpbmUgUHlfTk9fSU5MSU5FCi0jZW5kaWYKLQotLyogRG9uJ3QgbWFrZSBzdGF0aWMsIHRvIHRyeSB0byBlbnN1cmUgdGhpcyBpc24ndCBpbmxpbmVkLiAqLwotaW50IFB5X0FERFJFU1NfSU5fUkFOR0Uodm9pZCAqUCwgcG9vbHAgcG9vbCkgUHlfTk9fSU5MSU5FOwotI3VuZGVmIFB5X05PX0lOTElORQotI2VuZGlmCitzdGF0aWMgYm9vbCBBVFRSSUJVVEVfTk9fQUREUkVTU19TQUZFVFlfQU5BTFlTSVMKK2FkZHJlc3NfaW5fcmFuZ2Uodm9pZCAqcCwgcG9vbHAgcG9vbCkKK3sKKyAgICAvLyBTaW5jZSBhZGRyZXNzX2luX3JhbmdlIG1heSBiZSByZWFkaW5nIGZyb20gbWVtb3J5IHdoaWNoIHdhcyBub3QgYWxsb2NhdGVkCisgICAgLy8gYnkgUHl0aG9uLCBpdCBpcyBpbXBvcnRhbnQgdGhhdCBwb29sLT5hcmVuYWluZGV4IGlzIHJlYWQgb25seSBvbmNlLCBhcworICAgIC8vIGFub3RoZXIgdGhyZWFkIG1heSBiZSBjb25jdXJyZW50bHkgbW9kaWZ5aW5nIHRoZSB2YWx1ZSB3aXRob3V0IGhvbGRpbmcKKyAgICAvLyB0aGUgR0lMLiBUaGUgZm9sbG93aW5nIGRhbmNlIGZvcmNlcyB0aGUgY29tcGlsZXIgdG8gcmVhZCBwb29sLT5hcmVuYWluZGV4CisgICAgLy8gb25seSBvbmNlLgorICAgIHVpbnQgYXJlbmFpbmRleCA9ICooKHZvbGF0aWxlIHVpbnQgKikmcG9vbC0+YXJlbmFpbmRleCk7CisgICAgcmV0dXJuIGFyZW5haW5kZXggPCBtYXhhcmVuYXMgJiYKKyAgICAgICAgKHVpbnRwdHJfdClwIC0gYXJlbmFzW2FyZW5haW5kZXhdLmFkZHJlc3MgPCBBUkVOQV9TSVpFICYmCisgICAgICAgIGFyZW5hc1thcmVuYWluZGV4XS5hZGRyZXNzICE9IDA7Cit9CiAKIC8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwogCkBAIC0xMzk0LDcgKzE0NDUsNiBAQAogCiAvKiBmcmVlICovCiAKLUFUVFJJQlVURV9OT19BRERSRVNTX1NBRkVUWV9BTkFMWVNJUwogc3RhdGljIHZvaWQKIF9QeU9iamVjdF9GcmVlKHZvaWQgKmN0eCwgdm9pZCAqcCkKIHsKQEAgLTE0MDIsOSArMTQ1Miw2IEBACiAgICAgYmxvY2sgKmxhc3RmcmVlOwogICAgIHBvb2xwIG5leHQsIHByZXY7CiAgICAgdWludCBzaXplOwotI2lmbmRlZiBQeV9VU0lOR19NRU1PUllfREVCVUdHRVIKLSAgICB1aW50IGFyZW5haW5kZXhfdGVtcDsKLSNlbmRpZgogCiAgICAgaWYgKHAgPT0gTlVMTCkgICAgICAvKiBmcmVlKE5VTEwpIGhhcyBubyBlZmZlY3QgKi8KICAgICAgICAgcmV0dXJuOwpAQCAtMTQxNyw3ICsxNDY0LDcgQEAKICNlbmRpZgogCiAgICAgcG9vbCA9IFBPT0xfQUREUihwKTsKLSAgICBpZiAoUHlfQUREUkVTU19JTl9SQU5HRShwLCBwb29sKSkgeworICAgIGlmIChhZGRyZXNzX2luX3JhbmdlKHAsIHBvb2wpKSB7CiAgICAgICAgIC8qIFdlIGFsbG9jYXRlZCB0aGlzIGFkZHJlc3MuICovCiAgICAgICAgIExPQ0soKTsKICAgICAgICAgLyogTGluayBwIHRvIHRoZSBzdGFydCBvZiB0aGUgcG9vbCdzIGZyZWVibG9jayBsaXN0LiAgU2luY2UKQEAgLTE2MjMsMTYgKzE2NzAsMTIgQEAKICAqIHJldHVybiBhIG5vbi1OVUxMIHJlc3VsdC4KICAqLwogCi1BVFRSSUJVVEVfTk9fQUREUkVTU19TQUZFVFlfQU5BTFlTSVMKIHN0YXRpYyB2b2lkICoKIF9QeU9iamVjdF9SZWFsbG9jKHZvaWQgKmN0eCwgdm9pZCAqcCwgc2l6ZV90IG5ieXRlcykKIHsKICAgICB2b2lkICpicDsKICAgICBwb29scCBwb29sOwogICAgIHNpemVfdCBzaXplOwotI2lmbmRlZiBQeV9VU0lOR19NRU1PUllfREVCVUdHRVIKLSAgICB1aW50IGFyZW5haW5kZXhfdGVtcDsKLSNlbmRpZgogCiAgICAgaWYgKHAgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIF9QeU9iamVjdF9BbGxvYygwLCBjdHgsIDEsIG5ieXRlcyk7CkBAIC0xNjQ0LDcgKzE2ODcsNyBAQAogI2VuZGlmCiAKICAgICBwb29sID0gUE9PTF9BRERSKHApOwotICAgIGlmIChQeV9BRERSRVNTX0lOX1JBTkdFKHAsIHBvb2wpKSB7CisgICAgaWYgKGFkZHJlc3NfaW5fcmFuZ2UocCwgcG9vbCkpIHsKICAgICAgICAgLyogV2UncmUgaW4gY2hhcmdlIG9mIHRoaXMgYmxvY2sgKi8KICAgICAgICAgc2l6ZSA9IElOREVYMlNJWkUocG9vbC0+c3ppZHgpOwogICAgICAgICBpZiAobmJ5dGVzIDw9IHNpemUpIHsKQEAgLTE3MDksNyArMTc1Miw3IEBACiAKICNlbmRpZiAvKiBXSVRIX1BZTUFMTE9DICovCiAKLSNpZmRlZiBQWU1BTExPQ19ERUJVRworCiAvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KIC8qIEEgeC1wbGF0Zm9ybSBkZWJ1Z2dpbmcgYWxsb2NhdG9yLiAgVGhpcyBkb2Vzbid0IG1hbmFnZSBtZW1vcnkgZGlyZWN0bHksCiAgKiBpdCB3cmFwcyBhIHJlYWwgYWxsb2NhdG9yLCBhZGRpbmcgZXh0cmEgZGVidWdnaW5nIGluZm8gdG8gdGhlIG1lbW9yeSBibG9ja3MuCkBAIC0xNzQzLDcgKzE3ODYsNyBAQAogc3RhdGljIHNpemVfdAogcmVhZF9zaXplX3QoY29uc3Qgdm9pZCAqcCkKIHsKLSAgICBjb25zdCB1Y2hhciAqcSA9IChjb25zdCB1Y2hhciAqKXA7CisgICAgY29uc3QgdWludDhfdCAqcSA9IChjb25zdCB1aW50OF90ICopcDsKICAgICBzaXplX3QgcmVzdWx0ID0gKnErKzsKICAgICBpbnQgaTsKIApAQCAtMTc1OCw0MCArMTgwMSwxNSBAQAogc3RhdGljIHZvaWQKIHdyaXRlX3NpemVfdCh2b2lkICpwLCBzaXplX3QgbikKIHsKLSAgICB1Y2hhciAqcSA9ICh1Y2hhciAqKXAgKyBTU1QgLSAxOworICAgIHVpbnQ4X3QgKnEgPSAodWludDhfdCAqKXAgKyBTU1QgLSAxOwogICAgIGludCBpOwogCiAgICAgZm9yIChpID0gU1NUOyAtLWkgPj0gMDsgLS1xKSB7Ci0gICAgICAgICpxID0gKHVjaGFyKShuICYgMHhmZik7CisgICAgICAgICpxID0gKHVpbnQ4X3QpKG4gJiAweGZmKTsKICAgICAgICAgbiA+Pj0gODsKICAgICB9CiB9CiAKLSNpZmRlZiBQeV9ERUJVRwotLyogSXMgdGFyZ2V0IGluIHRoZSBsaXN0PyAgVGhlIGxpc3QgaXMgdHJhdmVyc2VkIHZpYSB0aGUgbmV4dHBvb2wgcG9pbnRlcnMuCi0gKiBUaGUgbGlzdCBtYXkgYmUgTlVMTC10ZXJtaW5hdGVkLCBvciBjaXJjdWxhci4gIFJldHVybiAxIGlmIHRhcmdldCBpcyBpbgotICogbGlzdCwgZWxzZSAwLgotICovCi1zdGF0aWMgaW50Ci1wb29sX2lzX2luX2xpc3QoY29uc3QgcG9vbHAgdGFyZ2V0LCBwb29scCBsaXN0KQotewotICAgIHBvb2xwIG9yaWdsaXN0ID0gbGlzdDsKLSAgICBhc3NlcnQodGFyZ2V0ICE9IE5VTEwpOwotICAgIGlmIChsaXN0ID09IE5VTEwpCi0gICAgICAgIHJldHVybiAwOwotICAgIGRvIHsKLSAgICAgICAgaWYgKHRhcmdldCA9PSBsaXN0KQotICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGxpc3QgPSBsaXN0LT5uZXh0cG9vbDsKLSAgICB9IHdoaWxlIChsaXN0ICE9IE5VTEwgJiYgbGlzdCAhPSBvcmlnbGlzdCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLSNlbHNlCi0jZGVmaW5lIHBvb2xfaXNfaW5fbGlzdChYLCBZKSAxCi0KLSNlbmRpZiAgLyogUHlfREVCVUcgKi8KLQogLyogTGV0IFMgPSBzaXplb2Yoc2l6ZV90KS4gIFRoZSBkZWJ1ZyBtYWxsb2MgYXNrcyBmb3IgNCpTIGV4dHJhIGJ5dGVzIGFuZAogICAgZmlsbHMgdGhlbSB3aXRoIHVzZWZ1bCBzdHVmZiwgaGVyZSBjYWxsaW5nIHRoZSB1bmRlcmx5aW5nIG1hbGxvYydzIHJlc3VsdCBwOgogCkBAIC0xODE5LDExICsxODM3LDExIEBACiAqLwogCiBzdGF0aWMgdm9pZCAqCi1fUHlNZW1fRGVidWdBbGxvYyhpbnQgdXNlX2NhbGxvYywgdm9pZCAqY3R4LCBzaXplX3QgbmJ5dGVzKQorX1B5TWVtX0RlYnVnUmF3QWxsb2MoaW50IHVzZV9jYWxsb2MsIHZvaWQgKmN0eCwgc2l6ZV90IG5ieXRlcykKIHsKICAgICBkZWJ1Z19hbGxvY19hcGlfdCAqYXBpID0gKGRlYnVnX2FsbG9jX2FwaV90ICopY3R4OwotICAgIHVjaGFyICpwOyAgICAgICAgICAgLyogYmFzZSBhZGRyZXNzIG9mIG1hbGxvYydlZCBibG9jayAqLwotICAgIHVjaGFyICp0YWlsOyAgICAgICAgLyogcCArIDIqU1NUICsgbmJ5dGVzID09IHBvaW50ZXIgdG8gdGFpbCBwYWQgYnl0ZXMgKi8KKyAgICB1aW50OF90ICpwOyAgICAgICAgICAgLyogYmFzZSBhZGRyZXNzIG9mIG1hbGxvYydlZCBibG9jayAqLworICAgIHVpbnQ4X3QgKnRhaWw7ICAgICAgICAvKiBwICsgMipTU1QgKyBuYnl0ZXMgPT0gcG9pbnRlciB0byB0YWlsIHBhZCBieXRlcyAqLwogICAgIHNpemVfdCB0b3RhbDsgICAgICAgLyogbmJ5dGVzICsgNCpTU1QgKi8KIAogICAgIGJ1bXBzZXJpYWxubygpOwpAQCAtMTgzMywxNSArMTg1MSwxNSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmICh1c2VfY2FsbG9jKQotICAgICAgICBwID0gKHVjaGFyICopYXBpLT5hbGxvYy5jYWxsb2MoYXBpLT5hbGxvYy5jdHgsIDEsIHRvdGFsKTsKKyAgICAgICAgcCA9ICh1aW50OF90ICopYXBpLT5hbGxvYy5jYWxsb2MoYXBpLT5hbGxvYy5jdHgsIDEsIHRvdGFsKTsKICAgICBlbHNlCi0gICAgICAgIHAgPSAodWNoYXIgKilhcGktPmFsbG9jLm1hbGxvYyhhcGktPmFsbG9jLmN0eCwgdG90YWwpOworICAgICAgICBwID0gKHVpbnQ4X3QgKilhcGktPmFsbG9jLm1hbGxvYyhhcGktPmFsbG9jLmN0eCwgdG90YWwpOwogICAgIGlmIChwID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyogYXQgcCwgd3JpdGUgc2l6ZSAoU1NUIGJ5dGVzKSwgaWQgKDEgYnl0ZSksIHBhZCAoU1NULTEgYnl0ZXMpICovCiAgICAgd3JpdGVfc2l6ZV90KHAsIG5ieXRlcyk7Ci0gICAgcFtTU1RdID0gKHVjaGFyKWFwaS0+YXBpX2lkOworICAgIHBbU1NUXSA9ICh1aW50OF90KWFwaS0+YXBpX2lkOwogICAgIG1lbXNldChwICsgU1NUICsgMSwgRk9SQklEREVOQllURSwgU1NULTEpOwogCiAgICAgaWYgKG5ieXRlcyA+IDAgJiYgIXVzZV9jYWxsb2MpCkBAIC0xODU2LDE4ICsxODc0LDE4IEBACiB9CiAKIHN0YXRpYyB2b2lkICoKLV9QeU1lbV9EZWJ1Z01hbGxvYyh2b2lkICpjdHgsIHNpemVfdCBuYnl0ZXMpCitfUHlNZW1fRGVidWdSYXdNYWxsb2Modm9pZCAqY3R4LCBzaXplX3QgbmJ5dGVzKQogewotICAgIHJldHVybiBfUHlNZW1fRGVidWdBbGxvYygwLCBjdHgsIG5ieXRlcyk7CisgICAgcmV0dXJuIF9QeU1lbV9EZWJ1Z1Jhd0FsbG9jKDAsIGN0eCwgbmJ5dGVzKTsKIH0KIAogc3RhdGljIHZvaWQgKgotX1B5TWVtX0RlYnVnQ2FsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IG5lbGVtLCBzaXplX3QgZWxzaXplKQorX1B5TWVtX0RlYnVnUmF3Q2FsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IG5lbGVtLCBzaXplX3QgZWxzaXplKQogewogICAgIHNpemVfdCBuYnl0ZXM7CiAgICAgYXNzZXJ0KGVsc2l6ZSA9PSAwIHx8IG5lbGVtIDw9IFBZX1NTSVpFX1RfTUFYIC8gZWxzaXplKTsKICAgICBuYnl0ZXMgPSBuZWxlbSAqIGVsc2l6ZTsKLSAgICByZXR1cm4gX1B5TWVtX0RlYnVnQWxsb2MoMSwgY3R4LCBuYnl0ZXMpOworICAgIHJldHVybiBfUHlNZW1fRGVidWdSYXdBbGxvYygxLCBjdHgsIG5ieXRlcyk7CiB9CiAKIC8qIFRoZSBkZWJ1ZyBmcmVlIGZpcnN0IGNoZWNrcyB0aGUgMipTU1QgYnl0ZXMgb24gZWFjaCBlbmQgZm9yIHNhbml0eSAoaW4KQEAgLTE4NzYsMTAgKzE4OTQsMTAgQEAKICAgIFRoZW4gY2FsbHMgdGhlIHVuZGVybHlpbmcgZnJlZS4KICovCiBzdGF0aWMgdm9pZAotX1B5TWVtX0RlYnVnRnJlZSh2b2lkICpjdHgsIHZvaWQgKnApCitfUHlNZW1fRGVidWdSYXdGcmVlKHZvaWQgKmN0eCwgdm9pZCAqcCkKIHsKICAgICBkZWJ1Z19hbGxvY19hcGlfdCAqYXBpID0gKGRlYnVnX2FsbG9jX2FwaV90ICopY3R4OwotICAgIHVjaGFyICpxID0gKHVjaGFyICopcCAtIDIqU1NUOyAgLyogYWRkcmVzcyByZXR1cm5lZCBmcm9tIG1hbGxvYyAqLworICAgIHVpbnQ4X3QgKnEgPSAodWludDhfdCAqKXAgLSAyKlNTVDsgIC8qIGFkZHJlc3MgcmV0dXJuZWQgZnJvbSBtYWxsb2MgKi8KICAgICBzaXplX3QgbmJ5dGVzOwogCiAgICAgaWYgKHAgPT0gTlVMTCkKQEAgLTE4OTMsMTcgKzE5MTEsMTcgQEAKIH0KIAogc3RhdGljIHZvaWQgKgotX1B5TWVtX0RlYnVnUmVhbGxvYyh2b2lkICpjdHgsIHZvaWQgKnAsIHNpemVfdCBuYnl0ZXMpCitfUHlNZW1fRGVidWdSYXdSZWFsbG9jKHZvaWQgKmN0eCwgdm9pZCAqcCwgc2l6ZV90IG5ieXRlcykKIHsKICAgICBkZWJ1Z19hbGxvY19hcGlfdCAqYXBpID0gKGRlYnVnX2FsbG9jX2FwaV90ICopY3R4OwotICAgIHVjaGFyICpxID0gKHVjaGFyICopcCwgKm9sZHE7Ci0gICAgdWNoYXIgKnRhaWw7CisgICAgdWludDhfdCAqcSA9ICh1aW50OF90ICopcCwgKm9sZHE7CisgICAgdWludDhfdCAqdGFpbDsKICAgICBzaXplX3QgdG90YWw7ICAgICAgIC8qIG5ieXRlcyArIDQqU1NUICovCiAgICAgc2l6ZV90IG9yaWdpbmFsX25ieXRlczsKICAgICBpbnQgaTsKIAogICAgIGlmIChwID09IE5VTEwpCi0gICAgICAgIHJldHVybiBfUHlNZW1fRGVidWdBbGxvYygwLCBjdHgsIG5ieXRlcyk7CisgICAgICAgIHJldHVybiBfUHlNZW1fRGVidWdSYXdBbGxvYygwLCBjdHgsIG5ieXRlcyk7CiAKICAgICBfUHlNZW1fRGVidWdDaGVja0FkZHJlc3MoYXBpLT5hcGlfaWQsIHApOwogICAgIGJ1bXBzZXJpYWxubygpOwpAQCAtMTkxOCw3ICsxOTM2LDcgQEAKICAgICAgKiBidXQgd2UgbGl2ZSB3aXRoIHRoYXQuCiAgICAgICovCiAgICAgb2xkcSA9IHE7Ci0gICAgcSA9ICh1Y2hhciAqKWFwaS0+YWxsb2MucmVhbGxvYyhhcGktPmFsbG9jLmN0eCwgcSAtIDIqU1NULCB0b3RhbCk7CisgICAgcSA9ICh1aW50OF90ICopYXBpLT5hbGxvYy5yZWFsbG9jKGFwaS0+YWxsb2MuY3R4LCBxIC0gMipTU1QsIHRvdGFsKTsKICAgICBpZiAocSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtMTkyOCw3ICsxOTQ2LDcgQEAKICAgICB9CiAKICAgICB3cml0ZV9zaXplX3QocSwgbmJ5dGVzKTsKLSAgICBhc3NlcnQocVtTU1RdID09ICh1Y2hhcilhcGktPmFwaV9pZCk7CisgICAgYXNzZXJ0KHFbU1NUXSA9PSAodWludDhfdClhcGktPmFwaV9pZCk7CiAgICAgZm9yIChpID0gMTsgaSA8IFNTVDsgKytpKQogICAgICAgICBhc3NlcnQocVtTU1QgKyBpXSA9PSBGT1JCSURERU5CWVRFKTsKICAgICBxICs9IDIqU1NUOwpAQCAtMTk0Niw2ICsxOTY0LDQ0IEBACiAgICAgcmV0dXJuIHE7CiB9CiAKK3N0YXRpYyB2b2lkCitfUHlNZW1fRGVidWdDaGVja0dJTCh2b2lkKQoreworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgaWYgKCFQeUdJTFN0YXRlX0NoZWNrKCkpCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5dGhvbiBtZW1vcnkgYWxsb2NhdG9yIGNhbGxlZCAiCisgICAgICAgICAgICAgICAgICAgICAgIndpdGhvdXQgaG9sZGluZyB0aGUgR0lMIik7CisjZW5kaWYKK30KKworc3RhdGljIHZvaWQgKgorX1B5TWVtX0RlYnVnTWFsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IG5ieXRlcykKK3sKKyAgICBfUHlNZW1fRGVidWdDaGVja0dJTCgpOworICAgIHJldHVybiBfUHlNZW1fRGVidWdSYXdNYWxsb2MoY3R4LCBuYnl0ZXMpOworfQorCitzdGF0aWMgdm9pZCAqCitfUHlNZW1fRGVidWdDYWxsb2Modm9pZCAqY3R4LCBzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpCit7CisgICAgX1B5TWVtX0RlYnVnQ2hlY2tHSUwoKTsKKyAgICByZXR1cm4gX1B5TWVtX0RlYnVnUmF3Q2FsbG9jKGN0eCwgbmVsZW0sIGVsc2l6ZSk7Cit9CisKK3N0YXRpYyB2b2lkCitfUHlNZW1fRGVidWdGcmVlKHZvaWQgKmN0eCwgdm9pZCAqcHRyKQoreworICAgIF9QeU1lbV9EZWJ1Z0NoZWNrR0lMKCk7CisgICAgX1B5TWVtX0RlYnVnUmF3RnJlZShjdHgsIHB0cik7Cit9CisKK3N0YXRpYyB2b2lkICoKK19QeU1lbV9EZWJ1Z1JlYWxsb2Modm9pZCAqY3R4LCB2b2lkICpwdHIsIHNpemVfdCBuYnl0ZXMpCit7CisgICAgX1B5TWVtX0RlYnVnQ2hlY2tHSUwoKTsKKyAgICByZXR1cm4gX1B5TWVtX0RlYnVnUmF3UmVhbGxvYyhjdHgsIHB0ciwgbmJ5dGVzKTsKK30KKwogLyogQ2hlY2sgdGhlIGZvcmJpZGRlbiBieXRlcyBvbiBib3RoIGVuZHMgb2YgdGhlIG1lbW9yeSBhbGxvY2F0ZWQgZm9yIHAuCiAgKiBJZiBhbnl0aGluZyBpcyB3cm9uZywgcHJpbnQgaW5mbyB0byBzdGRlcnIgdmlhIF9QeU9iamVjdF9EZWJ1Z0R1bXBBZGRyZXNzLAogICogYW5kIGNhbGwgUHlfRmF0YWxFcnJvciB0byBraWxsIHRoZSBwcm9ncmFtLgpAQCAtMTk1NCwxMSArMjAxMCwxMSBAQAogc3RhdGljIHZvaWQKIF9QeU1lbV9EZWJ1Z0NoZWNrQWRkcmVzcyhjaGFyIGFwaSwgY29uc3Qgdm9pZCAqcCkKIHsKLSAgICBjb25zdCB1Y2hhciAqcSA9IChjb25zdCB1Y2hhciAqKXA7CisgICAgY29uc3QgdWludDhfdCAqcSA9IChjb25zdCB1aW50OF90ICopcDsKICAgICBjaGFyIG1zZ2J1Zls2NF07CiAgICAgY2hhciAqbXNnOwogICAgIHNpemVfdCBuYnl0ZXM7Ci0gICAgY29uc3QgdWNoYXIgKnRhaWw7CisgICAgY29uc3QgdWludDhfdCAqdGFpbDsKICAgICBpbnQgaTsKICAgICBjaGFyIGlkOwogCkBAIC0yMDA3LDggKzIwNjMsOCBAQAogc3RhdGljIHZvaWQKIF9QeU9iamVjdF9EZWJ1Z0R1bXBBZGRyZXNzKGNvbnN0IHZvaWQgKnApCiB7Ci0gICAgY29uc3QgdWNoYXIgKnEgPSAoY29uc3QgdWNoYXIgKilwOwotICAgIGNvbnN0IHVjaGFyICp0YWlsOworICAgIGNvbnN0IHVpbnQ4X3QgKnEgPSAoY29uc3QgdWludDhfdCAqKXA7CisgICAgY29uc3QgdWludDhfdCAqdGFpbDsKICAgICBzaXplX3QgbmJ5dGVzLCBzZXJpYWw7CiAgICAgaW50IGk7CiAgICAgaW50IG9rOwpAQCAtMjA0MSw3ICsyMDk3LDcgQEAKICAgICAgICAgZnByaW50ZihzdGRlcnIsICJub3QgYWxsIEZPUkJJRERFTkJZVEUgKDB4JTAyeCk6XG4iLAogICAgICAgICAgICAgRk9SQklEREVOQllURSk7CiAgICAgICAgIGZvciAoaSA9IFNTVC0xOyBpID49IDE7IC0taSkgewotICAgICAgICAgICAgY29uc3QgdWNoYXIgYnl0ZSA9ICoocS1pKTsKKyAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgYnl0ZSA9ICoocS1pKTsKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiICAgICAgICBhdCBwLSVkOiAweCUwMngiLCBpLCBieXRlKTsKICAgICAgICAgICAgIGlmIChieXRlICE9IEZPUkJJRERFTkJZVEUpCiAgICAgICAgICAgICAgICAgZnB1dHMoIiAqKiogT1VDSCIsIHN0ZGVycik7CkBAIC0yMDY5LDcgKzIxMjUsNyBAQAogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIm5vdCBhbGwgRk9SQklEREVOQllURSAoMHglMDJ4KTpcbiIsCiAgICAgICAgICAgICAgICAgRk9SQklEREVOQllURSk7CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBTU1Q7ICsraSkgewotICAgICAgICAgICAgY29uc3QgdWNoYXIgYnl0ZSA9IHRhaWxbaV07CisgICAgICAgICAgICBjb25zdCB1aW50OF90IGJ5dGUgPSB0YWlsW2ldOwogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIgICAgICAgIGF0IHRhaWwrJWQ6IDB4JTAyeCIsCiAgICAgICAgICAgICAgICAgICAgIGksIGJ5dGUpOwogICAgICAgICAgICAgaWYgKGJ5dGUgIT0gRk9SQklEREVOQllURSkKQEAgLTIxMDQsOSArMjE2MCwxMiBAQAogICAgICAgICB9CiAgICAgICAgIGZwdXRjKCdcbicsIHN0ZGVycik7CiAgICAgfQorICAgIGZwdXRjKCdcbicsIHN0ZGVycik7CisKKyAgICBmZmx1c2goc3RkZXJyKTsKKyAgICBfUHlNZW1fRHVtcFRyYWNlYmFjayhmaWxlbm8oc3RkZXJyKSwgcCk7CiB9CiAKLSNlbmRpZiAgLyogUFlNQUxMT0NfREVCVUcgKi8KIAogc3RhdGljIHNpemVfdAogcHJpbnRvbmUoRklMRSAqb3V0LCBjb25zdCBjaGFyKiBtc2csIHNpemVfdCB2YWx1ZSkKQEAgLTIxNTgsOCArMjIxNywzMCBAQAogICAgICh2b2lkKXByaW50b25lKG91dCwgYnVmMiwgbnVtX2Jsb2NrcyAqIHNpemVvZl9ibG9jayk7CiB9CiAKKwogI2lmZGVmIFdJVEhfUFlNQUxMT0MKIAorI2lmZGVmIFB5X0RFQlVHCisvKiBJcyB0YXJnZXQgaW4gdGhlIGxpc3Q/ICBUaGUgbGlzdCBpcyB0cmF2ZXJzZWQgdmlhIHRoZSBuZXh0cG9vbCBwb2ludGVycy4KKyAqIFRoZSBsaXN0IG1heSBiZSBOVUxMLXRlcm1pbmF0ZWQsIG9yIGNpcmN1bGFyLiAgUmV0dXJuIDEgaWYgdGFyZ2V0IGlzIGluCisgKiBsaXN0LCBlbHNlIDAuCisgKi8KK3N0YXRpYyBpbnQKK3Bvb2xfaXNfaW5fbGlzdChjb25zdCBwb29scCB0YXJnZXQsIHBvb2xwIGxpc3QpCit7CisgICAgcG9vbHAgb3JpZ2xpc3QgPSBsaXN0OworICAgIGFzc2VydCh0YXJnZXQgIT0gTlVMTCk7CisgICAgaWYgKGxpc3QgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgZG8geworICAgICAgICBpZiAodGFyZ2V0ID09IGxpc3QpCisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgbGlzdCA9IGxpc3QtPm5leHRwb29sOworICAgIH0gd2hpbGUgKGxpc3QgIT0gTlVMTCAmJiBsaXN0ICE9IG9yaWdsaXN0KTsKKyAgICByZXR1cm4gMDsKK30KKyNlbmRpZgorCiAvKiBQcmludCBzdW1tYXJ5IGluZm8gdG8gIm91dCIgYWJvdXQgdGhlIHN0YXRlIG9mIHB5bWFsbG9jJ3Mgc3RydWN0dXJlcy4KICAqIEluIFB5X0RFQlVHIG1vZGUsIGFsc28gcGVyZm9ybSBzb21lIGV4cGVuc2l2ZSBpbnRlcm5hbCBjb25zaXN0ZW5jeQogICogY2hlY2tzLgpAQCAtMjIwNiwzNCArMjI4NywzNSBAQAogICAgICAqLwogICAgIGZvciAoaSA9IDA7IGkgPCBtYXhhcmVuYXM7ICsraSkgewogICAgICAgICB1aW50IGo7Ci0gICAgICAgIHVwdHIgYmFzZSA9IGFyZW5hc1tpXS5hZGRyZXNzOworICAgICAgICB1aW50cHRyX3QgYmFzZSA9IGFyZW5hc1tpXS5hZGRyZXNzOwogCiAgICAgICAgIC8qIFNraXAgYXJlbmFzIHdoaWNoIGFyZSBub3QgYWxsb2NhdGVkLiAqLwotICAgICAgICBpZiAoYXJlbmFzW2ldLmFkZHJlc3MgPT0gKHVwdHIpTlVMTCkKKyAgICAgICAgaWYgKGFyZW5hc1tpXS5hZGRyZXNzID09ICh1aW50cHRyX3QpTlVMTCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBuYXJlbmFzICs9IDE7CiAKICAgICAgICAgbnVtZnJlZXBvb2xzICs9IGFyZW5hc1tpXS5uZnJlZXBvb2xzOwogCiAgICAgICAgIC8qIHJvdW5kIHVwIHRvIHBvb2wgYWxpZ25tZW50ICovCi0gICAgICAgIGlmIChiYXNlICYgKHVwdHIpUE9PTF9TSVpFX01BU0spIHsKKyAgICAgICAgaWYgKGJhc2UgJiAodWludHB0cl90KVBPT0xfU0laRV9NQVNLKSB7CiAgICAgICAgICAgICBhcmVuYV9hbGlnbm1lbnQgKz0gUE9PTF9TSVpFOwotICAgICAgICAgICAgYmFzZSAmPSB+KHVwdHIpUE9PTF9TSVpFX01BU0s7CisgICAgICAgICAgICBiYXNlICY9IH4odWludHB0cl90KVBPT0xfU0laRV9NQVNLOwogICAgICAgICAgICAgYmFzZSArPSBQT09MX1NJWkU7CiAgICAgICAgIH0KIAogICAgICAgICAvKiB2aXNpdCBldmVyeSBwb29sIGluIHRoZSBhcmVuYSAqLwotICAgICAgICBhc3NlcnQoYmFzZSA8PSAodXB0cikgYXJlbmFzW2ldLnBvb2xfYWRkcmVzcyk7Ci0gICAgICAgIGZvciAoaiA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIGJhc2UgPCAodXB0cikgYXJlbmFzW2ldLnBvb2xfYWRkcmVzczsKLSAgICAgICAgICAgICAgICAgICAgKytqLCBiYXNlICs9IFBPT0xfU0laRSkgeworICAgICAgICBhc3NlcnQoYmFzZSA8PSAodWludHB0cl90KSBhcmVuYXNbaV0ucG9vbF9hZGRyZXNzKTsKKyAgICAgICAgZm9yIChqID0gMDsgYmFzZSA8ICh1aW50cHRyX3QpIGFyZW5hc1tpXS5wb29sX2FkZHJlc3M7CisgICAgICAgICAgICAgKytqLCBiYXNlICs9IFBPT0xfU0laRSkgewogICAgICAgICAgICAgcG9vbHAgcCA9IChwb29scCliYXNlOwogICAgICAgICAgICAgY29uc3QgdWludCBzeiA9IHAtPnN6aWR4OwogICAgICAgICAgICAgdWludCBmcmVlYmxvY2tzOwogCiAgICAgICAgICAgICBpZiAocC0+cmVmLmNvdW50ID09IDApIHsKICAgICAgICAgICAgICAgICAvKiBjdXJyZW50bHkgdW51c2VkICovCisjaWZkZWYgUHlfREVCVUcKICAgICAgICAgICAgICAgICBhc3NlcnQocG9vbF9pc19pbl9saXN0KHAsIGFyZW5hc1tpXS5mcmVlcG9vbHMpKTsKKyNlbmRpZgogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgKytudW1wb29sc1tzel07CkBAIC0yMjczLDkgKzIzNTUsOCBAQAogICAgICAgICBxdWFudGl6YXRpb24gKz0gcCAqICgoUE9PTF9TSVpFIC0gUE9PTF9PVkVSSEVBRCkgJSBzaXplKTsKICAgICB9CiAgICAgZnB1dGMoJ1xuJywgb3V0KTsKLSNpZmRlZiBQWU1BTExPQ19ERUJVRwotICAgICh2b2lkKXByaW50b25lKG91dCwgIiMgdGltZXMgb2JqZWN0IG1hbGxvYyBjYWxsZWQiLCBzZXJpYWxubyk7Ci0jZW5kaWYKKyAgICBpZiAoX1B5TWVtX0RlYnVnRW5hYmxlZCgpKQorICAgICAgICAodm9pZClwcmludG9uZShvdXQsICIjIHRpbWVzIG9iamVjdCBtYWxsb2MgY2FsbGVkIiwgc2VyaWFsbm8pOwogICAgICh2b2lkKXByaW50b25lKG91dCwgIiMgYXJlbmFzIGFsbG9jYXRlZCB0b3RhbCIsIG50aW1lc19hcmVuYV9hbGxvY2F0ZWQpOwogICAgICh2b2lkKXByaW50b25lKG91dCwgIiMgYXJlbmFzIHJlY2xhaW1lZCIsIG50aW1lc19hcmVuYV9hbGxvY2F0ZWQgLSBuYXJlbmFzKTsKICAgICAodm9pZClwcmludG9uZShvdXQsICIjIGFyZW5hcyBoaWdod2F0ZXIgbWFyayIsIG5hcmVuYXNfaGlnaHdhdGVyKTsKQEAgLTIzMDIsMTggKzIzODMsMyBAQAogfQogCiAjZW5kaWYgLyogI2lmZGVmIFdJVEhfUFlNQUxMT0MgKi8KLQotI2lmZGVmIFB5X1VTSU5HX01FTU9SWV9ERUJVR0dFUgotLyogTWFrZSB0aGlzIGZ1bmN0aW9uIGxhc3Qgc28gZ2NjIHdvbid0IGlubGluZSBpdCBzaW5jZSB0aGUgZGVmaW5pdGlvbiBpcwotICogYWZ0ZXIgdGhlIHJlZmVyZW5jZS4KLSAqLwotaW50Ci1QeV9BRERSRVNTX0lOX1JBTkdFKHZvaWQgKlAsIHBvb2xwIHBvb2wpCi17Ci0gICAgdWludCBhcmVuYWluZGV4X3RlbXAgPSBwb29sLT5hcmVuYWluZGV4OwotCi0gICAgcmV0dXJuIGFyZW5haW5kZXhfdGVtcCA8IG1heGFyZW5hcyAmJgotICAgICAgICAgICAodXB0cilQIC0gYXJlbmFzW2FyZW5haW5kZXhfdGVtcF0uYWRkcmVzcyA8ICh1cHRyKUFSRU5BX1NJWkUgJiYKLSAgICAgICAgICAgYXJlbmFzW2FyZW5haW5kZXhfdGVtcF0uYWRkcmVzcyAhPSAwOwotfQotI2VuZGlmCmRpZmYgLS1naXQgYS9PYmplY3RzL29kaWN0b2JqZWN0LmMgYi9PYmplY3RzL29kaWN0b2JqZWN0LmMKaW5kZXggYTY5NjNkNy4uMjJiMWYxZCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9vZGljdG9iamVjdC5jCisrKyBiL09iamVjdHMvb2RpY3RvYmplY3QuYwpAQCAtMzksNyArMzksNyBAQAogICAgX19nZXRpdGVtX18oKSwgZ2V0KCksIGV0Yy4gYWNjb3JkaW5nbHkuCiAKIFRoZSBhcHByb2FjaCB3aXRoIHRoZSBsZWFzdCBwZXJmb3JtYW5jZSBpbXBhY3QgKHRpbWUgYW5kIHNwYWNlKSBpcyAjMiwKLW1pcnJvcmluZyB0aGUga2V5IG9yZGVyIG9mIGRpY3QncyBka19lbnRpZXMgd2l0aCBhbiBhcnJheSBvZiBub2RlIHBvaW50ZXJzLgorbWlycm9yaW5nIHRoZSBrZXkgb3JkZXIgb2YgZGljdCdzIGRrX2VudHJpZXMgd2l0aCBhbiBhcnJheSBvZiBub2RlIHBvaW50ZXJzLgogV2hpbGUgbG9va2RpY3QoKSBhbmQgZnJpZW5kcyAoZGtfbG9va3VwKSBkb24ndCBnaXZlIHVzIHRoZSBpbmRleCBpbnRvIHRoZQogYXJyYXksIHdlIG1ha2UgdXNlIG9mIHBvaW50ZXIgYXJpdGhtZXRpYyB0byBnZXQgdGhhdCBpbmRleC4gIEFuIGFsdGVybmF0aXZlCiB3b3VsZCBiZSB0byByZWZhY3RvciBsb29rZGljdCgpIHRvIHByb3ZpZGUgdGhlIGluZGV4LCBleHBsaWNpdGx5IGV4cG9zaW5nCkBAIC01MzYsMTQgKzUzNiwxNyBAQAogX29kaWN0X2dldF9pbmRleF9yYXcoUHlPRGljdE9iamVjdCAqb2QsIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoKQogewogICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkciA9IE5VTEw7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwOwogICAgIFB5RGljdEtleXNPYmplY3QgKmtleXMgPSAoKFB5RGljdE9iamVjdCAqKW9kKS0+bWFfa2V5czsKKyAgICBQeV9zc2l6ZV90IGl4OwogCi0gICAgZXAgPSAoa2V5cy0+ZGtfbG9va3VwKSgoUHlEaWN0T2JqZWN0ICopb2QsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwotICAgIGlmIChlcCA9PSBOVUxMKQorICAgIGl4ID0gKGtleXMtPmRrX2xvb2t1cCkoKFB5RGljdE9iamVjdCAqKW9kLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyLCBOVUxMKTsKKyAgICBpZiAoaXggPT0gREtJWF9FTVBUWSkgeworICAgICAgICByZXR1cm4ga2V5cy0+ZGtfbmVudHJpZXM7ICAvKiBpbmRleCBvZiBuZXcgZW50cnkgKi8KKyAgICB9CisgICAgaWYgKGl4IDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIC8qIFdlIHVzZSBwb2ludGVyIGFyaXRobWV0aWMgdG8gZ2V0IHRoZSBlbnRyeSdzIGluZGV4IGludG8gdGhlIHRhYmxlLiAqLwotICAgIHJldHVybiBlcCAtIGtleXMtPmRrX2VudHJpZXM7CisgICAgcmV0dXJuIGl4OwogfQogCiAvKiBSZXBsYWNlIG9kLT5vZF9mYXN0X25vZGVzIHdpdGggYSBuZXcgdGFibGUgbWF0Y2hpbmcgdGhlIHNpemUgb2YgZGljdCdzLiAqLwpAQCAtNTY1LDcgKzU2OCw3IEBACiAgICAgLyogQ29weSB0aGUgY3VycmVudCBub2RlcyBpbnRvIHRoZSB0YWJsZS4gKi8KICAgICBfb2RpY3RfRk9SRUFDSChvZCwgbm9kZSkgewogICAgICAgICBpID0gX29kaWN0X2dldF9pbmRleF9yYXcob2QsIF9vZGljdG5vZGVfS0VZKG5vZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9vZGljdG5vZGVfSEFTSChub2RlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfb2RpY3Rub2RlX0hBU0gobm9kZSkpOwogICAgICAgICBpZiAoaSA8IDApIHsKICAgICAgICAgICAgIFB5TWVtX0ZSRUUoZmFzdF9ub2Rlcyk7CiAgICAgICAgICAgICByZXR1cm4gLTE7CkBAIC0xNDI0LDE0ICsxNDI3LDEzIEBACiAgKiBPcmRlcmVkRGljdCBtZW1iZXJzCiAgKi8KIAotLyogdHBfbWVtYmVycyAqLworLyogdHBfZ2V0c2V0ICovCiAKLXN0YXRpYyBQeU1lbWJlckRlZiBvZGljdF9tZW1iZXJzW10gPSB7Ci0gICAgeyJfX2RpY3RfXyIsIFRfT0JKRUNULCBvZmZzZXRvZihQeU9EaWN0T2JqZWN0LCBvZF9pbnN0X2RpY3QpLCBSRUFET05MWX0sCi0gICAgezB9CitzdGF0aWMgUHlHZXRTZXREZWYgb2RpY3RfZ2V0c2V0W10gPSB7CisgICAgeyJfX2RpY3RfXyIsIFB5T2JqZWN0X0dlbmVyaWNHZXREaWN0LCBQeU9iamVjdF9HZW5lcmljU2V0RGljdH0sCisgICAge05VTEx9CiB9OwogCi0KIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqIE9yZGVyZWREaWN0IHR5cGUgc2xvdCBtZXRob2RzCiAgKi8KQEAgLTE0NjMsNyArMTQ2NSw3IEBACiAgICAgKyt0c3RhdGUtPnRyYXNoX2RlbGV0ZV9uZXN0aW5nOwogCiAgICAgUHlfVFJBU0hDQU5fU0FGRV9FTkQoc2VsZikKLX07Cit9CiAKIC8qIHRwX3JlcHIgKi8KIApAQCAtMTU0MCw3ICsxNTQyLDcgQEAKICAgICBQeV9YREVDUkVGKHBpZWNlcyk7CiAgICAgUHlfUmVwckxlYXZlKChQeU9iamVjdCAqKXNlbGYpOwogICAgIHJldHVybiByZXN1bHQ7Ci19OworfQogCiAvKiB0cF9kb2MgKi8KIApAQCAtMTYxMiw3ICsxNjE0LDcgQEAKICAgICB9IGVsc2UgewogICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAgICAgfQotfTsKK30KIAogLyogdHBfaXRlciAqLwogCkBAIC0xNjIwLDcgKzE2MjIsNyBAQAogb2RpY3RfaXRlcihQeU9EaWN0T2JqZWN0ICpvZCkKIHsKICAgICByZXR1cm4gb2RpY3RpdGVyX25ldyhvZCwgX29kaWN0X0lURVJfS0VZUyk7Ci19OworfQogCiAvKiB0cF9pbml0ICovCiAKQEAgLTE2NDYsMjcgKzE2NDgsMTkgQEAKICAgICAgICAgUHlfREVDUkVGKHJlcyk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLX07Cit9CiAKIC8qIHRwX25ldyAqLwogCiBzdGF0aWMgUHlPYmplY3QgKgogb2RpY3RfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIFB5T2JqZWN0ICpkaWN0OwogICAgIFB5T0RpY3RPYmplY3QgKm9kOwogCi0gICAgZGljdCA9IFB5RGljdF9OZXcoKTsKLSAgICBpZiAoZGljdCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIG9kID0gKFB5T0RpY3RPYmplY3QgKilQeURpY3RfVHlwZS50cF9uZXcodHlwZSwgYXJncywga3dkcyk7Ci0gICAgaWYgKG9kID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKGRpY3QpOworICAgIGlmIChvZCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAKLSAgICBvZC0+b2RfaW5zdF9kaWN0ID0gZGljdDsKICAgICAvKiB0eXBlIGNvbnN0cnVjdG9yIGZpbGxzIHRoZSBtZW1vcnkgd2l0aCB6ZXJvcyAoc2VlCiAgICAgICAgUHlUeXBlX0dlbmVyaWNBbGxvYygpKSwgdGhlcmUgaXMgbm8gbmVlZCB0byBzZXQgdGhlbSB0byB6ZXJvIGFnYWluICovCiAgICAgaWYgKF9vZGljdF9yZXNpemUob2QpIDwgMCkgewpAQCAtMTcwOCw4ICsxNzAyLDggQEAKICAgICAoZ2V0aXRlcmZ1bmMpb2RpY3RfaXRlciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCiAgICAgb2RpY3RfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCi0gICAgb2RpY3RfbWVtYmVycywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICBvZGljdF9nZXRzZXQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgICZQeURpY3RfVHlwZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCkBAIC0xNzI5LDcgKzE3MjMsNyBAQAogUHlPYmplY3QgKgogUHlPRGljdF9OZXcodm9pZCkgewogICAgIHJldHVybiBvZGljdF9uZXcoJlB5T0RpY3RfVHlwZSwgTlVMTCwgTlVMTCk7Ci19OworfQogCiBzdGF0aWMgaW50CiBfUHlPRGljdF9TZXRJdGVtX0tub3duSGFzaChQeU9iamVjdCAqb2QsIFB5T2JqZWN0ICprZXksIFB5T2JqZWN0ICp2YWx1ZSwKQEAgLTE3NDcsNyArMTc0MSw3IEBACiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIHJlczsKLX07Cit9CiAKIGludAogUHlPRGljdF9TZXRJdGVtKFB5T2JqZWN0ICpvZCwgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKnZhbHVlKQpAQCAtMTc1Niw3ICsxNzUwLDcgQEAKICAgICBpZiAoaGFzaCA9PSAtMSkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIHJldHVybiBfUHlPRGljdF9TZXRJdGVtX0tub3duSGFzaChvZCwga2V5LCB2YWx1ZSwgaGFzaCk7Ci19OworfQogCiBpbnQKIFB5T0RpY3RfRGVsSXRlbShQeU9iamVjdCAqb2QsIFB5T2JqZWN0ICprZXkpCkBAIC0xNzY5LDcgKzE3NjMsNyBAQAogICAgIGlmIChyZXMgPCAwKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgcmV0dXJuIF9QeURpY3RfRGVsSXRlbV9Lbm93bkhhc2gob2QsIGtleSwgaGFzaCk7Ci19OworfQogCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTIzNjIsOCArMjM1Niw3IEBACiAgICAgICAgIFB5T2JqZWN0ICpvdGhlciA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgMCk7ICAvKiBib3Jyb3dlZCByZWZlcmVuY2UgKi8KICAgICAgICAgYXNzZXJ0KG90aGVyICE9IE5VTEwpOwogICAgICAgICBQeV9JTkNSRUYob3RoZXIpOwotICAgICAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3Qob3RoZXIpIHx8Ci0gICAgICAgICAgICBfUHlPYmplY3RfSGFzQXR0cklkKG90aGVyLCAmUHlJZF9pdGVtcykpIHsgIC8qIG5ldmVyIGZhaWxzICovCisgICAgICAgIGlmIFB5RGljdF9DaGVja0V4YWN0KG90aGVyKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqaXRlbXM7CiAgICAgICAgICAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3Qob3RoZXIpKQogICAgICAgICAgICAgICAgIGl0ZW1zID0gUHlEaWN0X0l0ZW1zKG90aGVyKTsKQEAgLTI0MDYsNiArMjM5OSwyMCBAQAogICAgICAgICAgICAgaWYgKHJlcyAhPSAwIHx8IFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvdGhlciwgJlB5SWRfaXRlbXMpKSB7ICAvKiBuZXZlciBmYWlscyAqLworICAgICAgICAgICAgUHlPYmplY3QgKml0ZW1zOworICAgICAgICAgICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KG90aGVyKSkKKyAgICAgICAgICAgICAgICBpdGVtcyA9IFB5RGljdF9JdGVtcyhvdGhlcik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaXRlbXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKG90aGVyLCAmUHlJZF9pdGVtcywgTlVMTCk7CisgICAgICAgICAgICBQeV9ERUNSRUYob3RoZXIpOworICAgICAgICAgICAgaWYgKGl0ZW1zID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICByZXMgPSBtdXRhYmxlbWFwcGluZ19hZGRfcGFpcnMoc2VsZiwgaXRlbXMpOworICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW1zKTsKKyAgICAgICAgICAgIGlmIChyZXMgPT0gLTEpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICByZXMgPSBtdXRhYmxlbWFwcGluZ19hZGRfcGFpcnMoc2VsZiwgb3RoZXIpOwogICAgICAgICAgICAgUHlfREVDUkVGKG90aGVyKTsKZGlmZiAtLWdpdCBhL09iamVjdHMvcmFuZ2VvYmplY3QuYyBiL09iamVjdHMvcmFuZ2VvYmplY3QuYwppbmRleCA4OTk2OTdhLi44NDQ5ZmM3IDEwMDY0NAotLS0gYS9PYmplY3RzL3Jhbmdlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9yYW5nZW9iamVjdC5jCkBAIC02LDcgKzYsNyBAQAogLyogU3VwcG9ydCBvYmplY3RzIHdob3NlIGxlbmd0aCBpcyA+IFBZX1NTSVpFX1RfTUFYLgogCiAgICBUaGlzIGNvdWxkIGJlIHNwZWQgdXAgZm9yIHNtYWxsIFB5TG9uZ3MgaWYgdGhleSBmaXQgaW4gYSBQeV9zc2l6ZV90LgotICAgVGhpcyBvbmx5IG1hdHRlcnMgb24gV2luNjQuICBUaG91Z2ggd2UgY291bGQgdXNlIFBZX0xPTkdfTE9ORyB3aGljaAorICAgVGhpcyBvbmx5IG1hdHRlcnMgb24gV2luNjQuICBUaG91Z2ggd2UgY291bGQgdXNlIGxvbmcgbG9uZyB3aGljaAogICAgd291bGQgcHJlc3VtYWJseSBoZWxwIHBlcmYuCiAqLwogCkBAIC0yOSwxNyArMjksMTAgQEAKICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygxKTsKIAogICAgIHN0ZXAgPSBQeU51bWJlcl9JbmRleChzdGVwKTsKLSAgICBpZiAoc3RlcCkgewotICAgICAgICBQeV9zc2l6ZV90IGlzdGVwID0gUHlOdW1iZXJfQXNTc2l6ZV90KHN0ZXAsIE5VTEwpOwotICAgICAgICBpZiAoaXN0ZXAgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICAgICAgLyogSWdub3JlIE92ZXJmbG93RXJyb3IsIHdlIGtub3cgdGhlIHZhbHVlIGlzbid0IDAuICovCi0gICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGlzdGVwID09IDApIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyYW5nZSgpIGFyZyAzIG11c3Qgbm90IGJlIHplcm8iKTsKLSAgICAgICAgICAgIFB5X0NMRUFSKHN0ZXApOwotICAgICAgICB9CisgICAgaWYgKHN0ZXAgJiYgX1B5TG9uZ19TaWduKHN0ZXApID09IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAicmFuZ2UoKSBhcmcgMyBtdXN0IG5vdCBiZSB6ZXJvIik7CisgICAgICAgIFB5X0NMRUFSKHN0ZXApOwogICAgIH0KIAogICAgIHJldHVybiBzdGVwOwpAQCAtMTI5LDkgKzEyMiw5IEBACiAgICAgICAgIHJldHVybiAoUHlPYmplY3QgKikgb2JqOwogCiAgICAgLyogRmFpbGVkIHRvIGNyZWF0ZSBvYmplY3QsIHJlbGVhc2UgYXR0cmlidXRlcyAqLwotICAgIFB5X1hERUNSRUYoc3RhcnQpOwotICAgIFB5X1hERUNSRUYoc3RvcCk7Ci0gICAgUHlfWERFQ1JFRihzdGVwKTsKKyAgICBQeV9ERUNSRUYoc3RhcnQpOworICAgIFB5X0RFQ1JFRihzdG9wKTsKKyAgICBQeV9ERUNSRUYoc3RlcCk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKQEAgLTE5Niw3ICsxODksNyBAQAogICAgIC8qIGlmIChsbyA+PSBoaSksIHJldHVybiBsZW5ndGggb2YgMC4gKi8KICAgICBjbXBfcmVzdWx0ID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKGxvLCBoaSwgUHlfR0UpOwogICAgIGlmIChjbXBfcmVzdWx0ICE9IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRihzdGVwKTsKKyAgICAgICAgUHlfREVDUkVGKHN0ZXApOwogICAgICAgICBpZiAoY21wX3Jlc3VsdCA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygwKTsKQEAgLTIyNSw5ICsyMTgsOSBAQAogICAgIHJldHVybiByZXN1bHQ7CiAKICAgRmFpbDoKKyAgICBQeV9ERUNSRUYoc3RlcCk7CiAgICAgUHlfWERFQ1JFRih0bXAyKTsKICAgICBQeV9YREVDUkVGKGRpZmYpOwotICAgIFB5X1hERUNSRUYoc3RlcCk7CiAgICAgUHlfWERFQ1JFRih0bXAxKTsKICAgICBQeV9YREVDUkVGKG9uZSk7CiAgICAgcmV0dXJuIE5VTEw7CkBAIC05MzcsNiArOTMwLDEzIEBACiB7CiAgICAgbG9uZyBzdGFydCwgc3RvcCwgc3RlcDsKIAorICAgIGlmIChQeUVycl9XYXJuRXgoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgInJhbmdlX2l0ZXJhdG9yKCk6IGNyZWF0aW5nIGluc3RhbmNlcyBvZiByYW5nZV9pdGVyYXRvciAiCisgICAgICAgICAgICAgICAgICAgICAiYnkgY2FsbGluZyByYW5nZV9pdGVyYXRvciB0eXBlIGlzIGRlcHJlY2F0ZWQiLAorICAgICAgICAgICAgICAgICAgICAgMSkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCiAgICAgaWYgKCFfUHlBcmdfTm9LZXl3b3JkcygicmFuZ2VfaXRlcmF0b3IoKSIsIGt3KSkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CmRpZmYgLS1naXQgYS9PYmplY3RzL3NldG9iamVjdC5jIGIvT2JqZWN0cy9zZXRvYmplY3QuYwppbmRleCA0ZWY2OTJkLi5mZGI5ZDM2IDEwMDY0NAotLS0gYS9PYmplY3RzL3NldG9iamVjdC5jCisrKyBiL09iamVjdHMvc2V0b2JqZWN0LmMKQEAgLTI2LDcgKzI2LDYgQEAKIAogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgotI2luY2x1ZGUgInN0cmluZ2xpYi9lcS5oIgogCiAvKiBPYmplY3QgdXNlZCBhcyBkdW1teSBrZXkgdG8gZmlsbCBkZWxldGVkIGVudHJpZXMgKi8KIHN0YXRpYyBQeU9iamVjdCBfZHVtbXlfc3RydWN0OwpAQCAtNDgsMTkgKzQ3LDIwIEBACiBzdGF0aWMgc2V0ZW50cnkgKgogc2V0X2xvb2trZXkoUHlTZXRPYmplY3QgKnNvLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCkKIHsKLSAgICBzZXRlbnRyeSAqdGFibGUgPSBzby0+dGFibGU7Ci0gICAgc2V0ZW50cnkgKmZyZWVzbG90ID0gTlVMTDsKKyAgICBzZXRlbnRyeSAqdGFibGU7CiAgICAgc2V0ZW50cnkgKmVudHJ5OwotICAgIHNpemVfdCBwZXJ0dXJiID0gaGFzaDsKKyAgICBzaXplX3QgcGVydHVyYjsKICAgICBzaXplX3QgbWFzayA9IHNvLT5tYXNrOwogICAgIHNpemVfdCBpID0gKHNpemVfdCloYXNoICYgbWFzazsgLyogVW5zaWduZWQgZm9yIGRlZmluZWQgb3ZlcmZsb3cgYmVoYXZpb3IgKi8KICAgICBzaXplX3QgajsKICAgICBpbnQgY21wOwogCi0gICAgZW50cnkgPSAmdGFibGVbaV07CisgICAgZW50cnkgPSAmc28tPnRhYmxlW2ldOwogICAgIGlmIChlbnRyeS0+a2V5ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBlbnRyeTsKIAorICAgIHBlcnR1cmIgPSBoYXNoOworCiAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgaWYgKGVudHJ5LT5oYXNoID09IGhhc2gpIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICpzdGFydGtleSA9IGVudHJ5LT5rZXk7CkBAIC03MCw4ICs3MCw5IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5OwogICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KHN0YXJ0a2V5KQogICAgICAgICAgICAgICAgICYmIFB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkKLSAgICAgICAgICAgICAgICAmJiB1bmljb2RlX2VxKHN0YXJ0a2V5LCBrZXkpKQorICAgICAgICAgICAgICAgICYmIF9QeVVuaWNvZGVfRVEoc3RhcnRrZXksIGtleSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5OworICAgICAgICAgICAgdGFibGUgPSBzby0+dGFibGU7CiAgICAgICAgICAgICBQeV9JTkNSRUYoc3RhcnRrZXkpOwogICAgICAgICAgICAgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHN0YXJ0a2V5LCBrZXksIFB5X0VRKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihzdGFydGtleSk7CkBAIC04MywxNCArODQsMTIgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gZW50cnk7CiAgICAgICAgICAgICBtYXNrID0gc28tPm1hc2s7ICAgICAgICAgICAgICAgICAvKiBoZWxwIGF2b2lkIGEgcmVnaXN0ZXIgc3BpbGwgKi8KICAgICAgICAgfQotICAgICAgICBpZiAoZW50cnktPmhhc2ggPT0gLTEgJiYgZnJlZXNsb3QgPT0gTlVMTCkKLSAgICAgICAgICAgIGZyZWVzbG90ID0gZW50cnk7CiAKICAgICAgICAgaWYgKGkgKyBMSU5FQVJfUFJPQkVTIDw9IG1hc2spIHsKICAgICAgICAgICAgIGZvciAoaiA9IDAgOyBqIDwgTElORUFSX1BST0JFUyA7IGorKykgewogICAgICAgICAgICAgICAgIGVudHJ5Kys7Ci0gICAgICAgICAgICAgICAgaWYgKGVudHJ5LT5rZXkgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBmb3VuZF9udWxsOworICAgICAgICAgICAgICAgIGlmIChlbnRyeS0+aGFzaCA9PSAwICYmIGVudHJ5LT5rZXkgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5OwogICAgICAgICAgICAgICAgIGlmIChlbnRyeS0+aGFzaCA9PSBoYXNoKSB7CiAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdGFydGtleSA9IGVudHJ5LT5rZXk7CiAgICAgICAgICAgICAgICAgICAgIGFzc2VydChzdGFydGtleSAhPSBkdW1teSk7CkBAIC05OCw4ICs5Nyw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW50cnk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdChzdGFydGtleSkKICAgICAgICAgICAgICAgICAgICAgICAgICYmIFB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkKLSAgICAgICAgICAgICAgICAgICAgICAgICYmIHVuaWNvZGVfZXEoc3RhcnRrZXksIGtleSkpCisgICAgICAgICAgICAgICAgICAgICAgICAmJiBfUHlVbmljb2RlX0VRKHN0YXJ0a2V5LCBrZXkpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5OworICAgICAgICAgICAgICAgICAgICB0YWJsZSA9IHNvLT50YWJsZTsKICAgICAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKHN0YXJ0a2V5KTsKICAgICAgICAgICAgICAgICAgICAgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHN0YXJ0a2V5LCBrZXksIFB5X0VRKTsKICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHN0YXJ0a2V5KTsKQEAgLTExMSw3ICsxMTEsMTA0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW50cnk7CiAgICAgICAgICAgICAgICAgICAgIG1hc2sgPSBzby0+bWFzazsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGVudHJ5LT5oYXNoID09IC0xICYmIGZyZWVzbG90ID09IE5VTEwpCisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBwZXJ0dXJiID4+PSBQRVJUVVJCX1NISUZUOworICAgICAgICBpID0gKGkgKiA1ICsgMSArIHBlcnR1cmIpICYgbWFzazsKKworICAgICAgICBlbnRyeSA9ICZzby0+dGFibGVbaV07CisgICAgICAgIGlmIChlbnRyeS0+a2V5ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gZW50cnk7CisgICAgfQorfQorCitzdGF0aWMgaW50IHNldF90YWJsZV9yZXNpemUoUHlTZXRPYmplY3QgKiwgUHlfc3NpemVfdCk7CisKK3N0YXRpYyBpbnQKK3NldF9hZGRfZW50cnkoUHlTZXRPYmplY3QgKnNvLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCkKK3sKKyAgICBzZXRlbnRyeSAqdGFibGU7CisgICAgc2V0ZW50cnkgKmZyZWVzbG90OworICAgIHNldGVudHJ5ICplbnRyeTsKKyAgICBzaXplX3QgcGVydHVyYjsKKyAgICBzaXplX3QgbWFzazsKKyAgICBzaXplX3QgaTsgICAgICAgICAgICAgICAgICAgICAgIC8qIFVuc2lnbmVkIGZvciBkZWZpbmVkIG92ZXJmbG93IGJlaGF2aW9yICovCisgICAgc2l6ZV90IGo7CisgICAgaW50IGNtcDsKKworICAgIC8qIFByZS1pbmNyZW1lbnQgaXMgbmVjZXNzYXJ5IHRvIHByZXZlbnQgYXJiaXRyYXJ5IGNvZGUgaW4gdGhlIHJpY2gKKyAgICAgICBjb21wYXJpc29uIGZyb20gZGVhbGxvY2F0aW5nIHRoZSBrZXkganVzdCBiZWZvcmUgdGhlIGluc2VydGlvbi4gKi8KKyAgICBQeV9JTkNSRUYoa2V5KTsKKworICByZXN0YXJ0OgorCisgICAgbWFzayA9IHNvLT5tYXNrOworICAgIGkgPSAoc2l6ZV90KWhhc2ggJiBtYXNrOworCisgICAgZW50cnkgPSAmc28tPnRhYmxlW2ldOworICAgIGlmIChlbnRyeS0+a2V5ID09IE5VTEwpCisgICAgICAgIGdvdG8gZm91bmRfdW51c2VkOworCisgICAgZnJlZXNsb3QgPSBOVUxMOworICAgIHBlcnR1cmIgPSBoYXNoOworCisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgaWYgKGVudHJ5LT5oYXNoID09IGhhc2gpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpzdGFydGtleSA9IGVudHJ5LT5rZXk7CisgICAgICAgICAgICAvKiBzdGFydGtleSBjYW5ub3QgYmUgYSBkdW1teSBiZWNhdXNlIHRoZSBkdW1teSBoYXNoIGZpZWxkIGlzIC0xICovCisgICAgICAgICAgICBhc3NlcnQoc3RhcnRrZXkgIT0gZHVtbXkpOworICAgICAgICAgICAgaWYgKHN0YXJ0a2V5ID09IGtleSkKKyAgICAgICAgICAgICAgICBnb3RvIGZvdW5kX2FjdGl2ZTsKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdChzdGFydGtleSkKKyAgICAgICAgICAgICAgICAmJiBQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpCisgICAgICAgICAgICAgICAgJiYgX1B5VW5pY29kZV9FUShzdGFydGtleSwga2V5KSkKKyAgICAgICAgICAgICAgICBnb3RvIGZvdW5kX2FjdGl2ZTsKKyAgICAgICAgICAgIHRhYmxlID0gc28tPnRhYmxlOworICAgICAgICAgICAgUHlfSU5DUkVGKHN0YXJ0a2V5KTsKKyAgICAgICAgICAgIGNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChzdGFydGtleSwga2V5LCBQeV9FUSk7CisgICAgICAgICAgICBQeV9ERUNSRUYoc3RhcnRrZXkpOworICAgICAgICAgICAgaWYgKGNtcCA+IDApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbGlrZWx5ICovCisgICAgICAgICAgICAgICAgZ290byBmb3VuZF9hY3RpdmU7CisgICAgICAgICAgICBpZiAoY21wIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIGNvbXBhcmlzb25fZXJyb3I7CisgICAgICAgICAgICAvKiBDb250aW51aW5nIHRoZSBzZWFyY2ggZnJvbSB0aGUgY3VycmVudCBlbnRyeSBvbmx5IG1ha2VzCisgICAgICAgICAgICAgICBzZW5zZSBpZiB0aGUgdGFibGUgYW5kIGVudHJ5IGFyZSB1bmNoYW5nZWQ7IG90aGVyd2lzZSwKKyAgICAgICAgICAgICAgIHdlIGhhdmUgdG8gcmVzdGFydCBmcm9tIHRoZSBiZWdpbm5pbmcgKi8KKyAgICAgICAgICAgIGlmICh0YWJsZSAhPSBzby0+dGFibGUgfHwgZW50cnktPmtleSAhPSBzdGFydGtleSkKKyAgICAgICAgICAgICAgICBnb3RvIHJlc3RhcnQ7CisgICAgICAgICAgICBtYXNrID0gc28tPm1hc2s7ICAgICAgICAgICAgICAgICAvKiBoZWxwIGF2b2lkIGEgcmVnaXN0ZXIgc3BpbGwgKi8KKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChlbnRyeS0+aGFzaCA9PSAtMSAmJiBmcmVlc2xvdCA9PSBOVUxMKQorICAgICAgICAgICAgZnJlZXNsb3QgPSBlbnRyeTsKKworICAgICAgICBpZiAoaSArIExJTkVBUl9QUk9CRVMgPD0gbWFzaykgeworICAgICAgICAgICAgZm9yIChqID0gMCA7IGogPCBMSU5FQVJfUFJPQkVTIDsgaisrKSB7CisgICAgICAgICAgICAgICAgZW50cnkrKzsKKyAgICAgICAgICAgICAgICBpZiAoZW50cnktPmhhc2ggPT0gMCAmJiBlbnRyeS0+a2V5ID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZm91bmRfdW51c2VkX29yX2R1bW15OworICAgICAgICAgICAgICAgIGlmIChlbnRyeS0+aGFzaCA9PSBoYXNoKSB7CisgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdGFydGtleSA9IGVudHJ5LT5rZXk7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydChzdGFydGtleSAhPSBkdW1teSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChzdGFydGtleSA9PSBrZXkpCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZvdW5kX2FjdGl2ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KHN0YXJ0a2V5KQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgX1B5VW5pY29kZV9FUShzdGFydGtleSwga2V5KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZm91bmRfYWN0aXZlOworICAgICAgICAgICAgICAgICAgICB0YWJsZSA9IHNvLT50YWJsZTsKKyAgICAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKHN0YXJ0a2V5KTsKKyAgICAgICAgICAgICAgICAgICAgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHN0YXJ0a2V5LCBrZXksIFB5X0VRKTsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHN0YXJ0a2V5KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNtcCA+IDApCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZvdW5kX2FjdGl2ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNtcCA8IDApCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGNvbXBhcmlzb25fZXJyb3I7CisgICAgICAgICAgICAgICAgICAgIGlmICh0YWJsZSAhPSBzby0+dGFibGUgfHwgZW50cnktPmtleSAhPSBzdGFydGtleSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmVzdGFydDsKKyAgICAgICAgICAgICAgICAgICAgbWFzayA9IHNvLT5tYXNrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGlmIChlbnRyeS0+aGFzaCA9PSAtMSAmJiBmcmVlc2xvdCA9PSBOVUxMKQogICAgICAgICAgICAgICAgICAgICBmcmVlc2xvdCA9IGVudHJ5OwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xMTksMjkgKzIxNiw1MSBAQAogICAgICAgICBwZXJ0dXJiID4+PSBQRVJUVVJCX1NISUZUOwogICAgICAgICBpID0gKGkgKiA1ICsgMSArIHBlcnR1cmIpICYgbWFzazsKIAotICAgICAgICBlbnRyeSA9ICZ0YWJsZVtpXTsKKyAgICAgICAgZW50cnkgPSAmc28tPnRhYmxlW2ldOwogICAgICAgICBpZiAoZW50cnktPmtleSA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBmb3VuZF9udWxsOworICAgICAgICAgICAgZ290byBmb3VuZF91bnVzZWRfb3JfZHVtbXk7CiAgICAgfQotICBmb3VuZF9udWxsOgotICAgIHJldHVybiBmcmVlc2xvdCA9PSBOVUxMID8gZW50cnkgOiBmcmVlc2xvdDsKKworICBmb3VuZF91bnVzZWRfb3JfZHVtbXk6CisgICAgaWYgKGZyZWVzbG90ID09IE5VTEwpCisgICAgICAgIGdvdG8gZm91bmRfdW51c2VkOworICAgIHNvLT51c2VkKys7CisgICAgZnJlZXNsb3QtPmtleSA9IGtleTsKKyAgICBmcmVlc2xvdC0+aGFzaCA9IGhhc2g7CisgICAgcmV0dXJuIDA7CisKKyAgZm91bmRfdW51c2VkOgorICAgIHNvLT5maWxsKys7CisgICAgc28tPnVzZWQrKzsKKyAgICBlbnRyeS0+a2V5ID0ga2V5OworICAgIGVudHJ5LT5oYXNoID0gaGFzaDsKKyAgICBpZiAoKHNpemVfdClzby0+ZmlsbCozIDwgbWFzayoyKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gc2V0X3RhYmxlX3Jlc2l6ZShzbywgc28tPnVzZWQpOworCisgIGZvdW5kX2FjdGl2ZToKKyAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICByZXR1cm4gMDsKKworICBjb21wYXJpc29uX2Vycm9yOgorICAgIFB5X0RFQ1JFRihrZXkpOworICAgIHJldHVybiAtMTsKIH0KIAogLyoKIEludGVybmFsIHJvdXRpbmUgdXNlZCBieSBzZXRfdGFibGVfcmVzaXplKCkgdG8gaW5zZXJ0IGFuIGl0ZW0gd2hpY2ggaXMKIGtub3duIHRvIGJlIGFic2VudCBmcm9tIHRoZSBzZXQuICBUaGlzIHJvdXRpbmUgYWxzbyBhc3N1bWVzIHRoYXQKIHRoZSBzZXQgY29udGFpbnMgbm8gZGVsZXRlZCBlbnRyaWVzLiAgQmVzaWRlcyB0aGUgcGVyZm9ybWFuY2UgYmVuZWZpdCwKLXVzaW5nIHNldF9pbnNlcnRfY2xlYW4oKSBpbiBzZXRfdGFibGVfcmVzaXplKCkgaXMgZGFuZ2Vyb3VzIChTRiBidWcgIzE0NTYyMDkpLgotTm90ZSB0aGF0IG5vIHJlZmNvdW50cyBhcmUgY2hhbmdlZCBieSB0aGlzIHJvdXRpbmU7IGlmIG5lZWRlZCwgdGhlIGNhbGxlcgotaXMgcmVzcG9uc2libGUgZm9yIGluY3JlZidpbmcgYGtleWAuCit0aGVyZSBpcyBhbHNvIHNhZmV0eSBiZW5lZml0IHNpbmNlIHVzaW5nIHNldF9hZGRfZW50cnkoKSByaXNrcyBtYWtpbmcKK2EgY2FsbGJhY2sgaW4gdGhlIG1pZGRsZSBvZiBhIHNldF90YWJsZV9yZXNpemUoKSwgc2VlIGlzc3VlIDE0NTYyMDkuCitUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciB1cGRhdGluZyB0aGUga2V5J3MgcmVmZXJlbmNlIGNvdW50IGFuZAordGhlIHNldG9iamVjdCdzIGZpbGwgYW5kIHVzZWQgZmllbGRzLgogKi8KIHN0YXRpYyB2b2lkCi1zZXRfaW5zZXJ0X2NsZWFuKFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gpCitzZXRfaW5zZXJ0X2NsZWFuKHNldGVudHJ5ICp0YWJsZSwgc2l6ZV90IG1hc2ssIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoKQogewotICAgIHNldGVudHJ5ICp0YWJsZSA9IHNvLT50YWJsZTsKICAgICBzZXRlbnRyeSAqZW50cnk7CiAgICAgc2l6ZV90IHBlcnR1cmIgPSBoYXNoOwotICAgIHNpemVfdCBtYXNrID0gKHNpemVfdClzby0+bWFzazsKICAgICBzaXplX3QgaSA9IChzaXplX3QpaGFzaCAmIG1hc2s7CiAgICAgc2l6ZV90IGo7CiAKQEAgLTE2Miw0NSArMjgxLDExIEBACiAgIGZvdW5kX251bGw6CiAgICAgZW50cnktPmtleSA9IGtleTsKICAgICBlbnRyeS0+aGFzaCA9IGhhc2g7Ci0gICAgc28tPmZpbGwrKzsKLSAgICBzby0+dXNlZCsrOwogfQogCiAvKiA9PT09PT09PSBFbmQgbG9naWMgZm9yIHByb2JpbmcgdGhlIGhhc2ggdGFibGUgPT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwogCi0KLS8qCi1JbnRlcm5hbCByb3V0aW5lIHRvIGluc2VydCBhIG5ldyBrZXkgaW50byB0aGUgdGFibGUuCi1Vc2VkIGJ5IHRoZSBwdWJsaWMgaW5zZXJ0IHJvdXRpbmUuCi1FYXRzIGEgcmVmZXJlbmNlIHRvIGtleS4KLSovCi1zdGF0aWMgaW50Ci1zZXRfaW5zZXJ0X2tleShQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoKQotewotICAgIHNldGVudHJ5ICplbnRyeTsKLQotICAgIGVudHJ5ID0gc2V0X2xvb2trZXkoc28sIGtleSwgaGFzaCk7Ci0gICAgaWYgKGVudHJ5ID09IE5VTEwpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICBpZiAoZW50cnktPmtleSA9PSBOVUxMKSB7Ci0gICAgICAgIC8qIFVOVVNFRCAqLwotICAgICAgICBlbnRyeS0+a2V5ID0ga2V5OwotICAgICAgICBlbnRyeS0+aGFzaCA9IGhhc2g7Ci0gICAgICAgIHNvLT5maWxsKys7Ci0gICAgICAgIHNvLT51c2VkKys7Ci0gICAgfSBlbHNlIGlmIChlbnRyeS0+a2V5ID09IGR1bW15KSB7Ci0gICAgICAgIC8qIERVTU1ZICovCi0gICAgICAgIGVudHJ5LT5rZXkgPSBrZXk7Ci0gICAgICAgIGVudHJ5LT5oYXNoID0gaGFzaDsKLSAgICAgICAgc28tPnVzZWQrKzsKLSAgICB9IGVsc2UgewotICAgICAgICAvKiBBQ1RJVkUgKi8KLSAgICAgICAgUHlfREVDUkVGKGtleSk7Ci0gICAgfQotICAgIHJldHVybiAwOwotfQotCiAvKgogUmVzdHJ1Y3R1cmUgdGhlIHRhYmxlIGJ5IGFsbG9jYXRpbmcgYSBuZXcgdGFibGUgYW5kIHJlaW5zZXJ0aW5nIGFsbAoga2V5cyBhZ2Fpbi4gIFdoZW4gZW50cmllcyBoYXZlIGJlZW4gZGVsZXRlZCwgdGhlIG5ldyB0YWJsZSBtYXkKQEAgLTIxMywxMCArMjk4LDEzIEBACiAgICAgc2V0ZW50cnkgKm9sZHRhYmxlLCAqbmV3dGFibGUsICplbnRyeTsKICAgICBQeV9zc2l6ZV90IG9sZGZpbGwgPSBzby0+ZmlsbDsKICAgICBQeV9zc2l6ZV90IG9sZHVzZWQgPSBzby0+dXNlZDsKKyAgICBQeV9zc2l6ZV90IG9sZG1hc2sgPSBzby0+bWFzazsKKyAgICBzaXplX3QgbmV3bWFzazsKICAgICBpbnQgaXNfb2xkdGFibGVfbWFsbG9jZWQ7CiAgICAgc2V0ZW50cnkgc21hbGxfY29weVtQeVNldF9NSU5TSVpFXTsKIAogICAgIGFzc2VydChtaW51c2VkID49IDApOworICAgIG1pbnVzZWQgPSAobWludXNlZCA+IDUwMDAwKSA/IG1pbnVzZWQgKiAyIDogbWludXNlZCAqIDQ7CiAKICAgICAvKiBGaW5kIHRoZSBzbWFsbGVzdCB0YWJsZSBzaXplID4gbWludXNlZC4gKi8KICAgICAvKiBYWFggc3BlZWQtdXAgd2l0aCBpbnRyaW5zaWNzICovCkBAIC0yNjQsMjUgKzM1MiwyNCBAQAogICAgIC8qIE1ha2UgdGhlIHNldCBlbXB0eSwgdXNpbmcgdGhlIG5ldyB0YWJsZS4gKi8KICAgICBhc3NlcnQobmV3dGFibGUgIT0gb2xkdGFibGUpOwogICAgIG1lbXNldChuZXd0YWJsZSwgMCwgc2l6ZW9mKHNldGVudHJ5KSAqIG5ld3NpemUpOwotICAgIHNvLT5maWxsID0gMDsKLSAgICBzby0+dXNlZCA9IDA7CisgICAgc28tPmZpbGwgPSBvbGR1c2VkOworICAgIHNvLT51c2VkID0gb2xkdXNlZDsKICAgICBzby0+bWFzayA9IG5ld3NpemUgLSAxOwogICAgIHNvLT50YWJsZSA9IG5ld3RhYmxlOwogCiAgICAgLyogQ29weSB0aGUgZGF0YSBvdmVyOyB0aGlzIGlzIHJlZmNvdW50LW5ldXRyYWwgZm9yIGFjdGl2ZSBlbnRyaWVzOwogICAgICAgIGR1bW15IGVudHJpZXMgYXJlbid0IGNvcGllZCBvdmVyLCBvZiBjb3Vyc2UgKi8KKyAgICBuZXdtYXNrID0gKHNpemVfdClzby0+bWFzazsKICAgICBpZiAob2xkZmlsbCA9PSBvbGR1c2VkKSB7Ci0gICAgICAgIGZvciAoZW50cnkgPSBvbGR0YWJsZTsgb2xkdXNlZCA+IDA7IGVudHJ5KyspIHsKKyAgICAgICAgZm9yIChlbnRyeSA9IG9sZHRhYmxlOyBlbnRyeSA8PSBvbGR0YWJsZSArIG9sZG1hc2s7IGVudHJ5KyspIHsKICAgICAgICAgICAgIGlmIChlbnRyeS0+a2V5ICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBvbGR1c2VkLS07Ci0gICAgICAgICAgICAgICAgc2V0X2luc2VydF9jbGVhbihzbywgZW50cnktPmtleSwgZW50cnktPmhhc2gpOworICAgICAgICAgICAgICAgIHNldF9pbnNlcnRfY2xlYW4obmV3dGFibGUsIG5ld21hc2ssIGVudHJ5LT5rZXksIGVudHJ5LT5oYXNoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIGZvciAoZW50cnkgPSBvbGR0YWJsZTsgb2xkdXNlZCA+IDA7IGVudHJ5KyspIHsKKyAgICAgICAgZm9yIChlbnRyeSA9IG9sZHRhYmxlOyBlbnRyeSA8PSBvbGR0YWJsZSArIG9sZG1hc2s7IGVudHJ5KyspIHsKICAgICAgICAgICAgIGlmIChlbnRyeS0+a2V5ICE9IE5VTEwgJiYgZW50cnktPmtleSAhPSBkdW1teSkgewotICAgICAgICAgICAgICAgIG9sZHVzZWQtLTsKLSAgICAgICAgICAgICAgICBzZXRfaW5zZXJ0X2NsZWFuKHNvLCBlbnRyeS0+a2V5LCBlbnRyeS0+aGFzaCk7CisgICAgICAgICAgICAgICAgc2V0X2luc2VydF9jbGVhbihuZXd0YWJsZSwgbmV3bWFzaywgZW50cnktPmtleSwgZW50cnktPmhhc2gpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMjkyLDU3ICszNzksMzAgQEAKICAgICByZXR1cm4gMDsKIH0KIAotLyogQ0FVVElPTjogc2V0X2FkZF9rZXkvZW50cnkoKSBtdXN0IGd1YXJhbnRlZSBpdCB3b24ndCByZXNpemUgdGhlIHRhYmxlICovCi0KIHN0YXRpYyBpbnQKLXNldF9hZGRfZW50cnkoUHlTZXRPYmplY3QgKnNvLCBzZXRlbnRyeSAqZW50cnkpCitzZXRfY29udGFpbnNfZW50cnkoUHlTZXRPYmplY3QgKnNvLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCkKIHsKLSAgICBQeV9zc2l6ZV90IG5fdXNlZDsKLSAgICBQeU9iamVjdCAqa2V5ID0gZW50cnktPmtleTsKLSAgICBQeV9oYXNoX3QgaGFzaCA9IGVudHJ5LT5oYXNoOworICAgIHNldGVudHJ5ICplbnRyeTsKIAotICAgIGFzc2VydChzby0+ZmlsbCA8PSBzby0+bWFzayk7ICAvKiBhdCBsZWFzdCBvbmUgZW1wdHkgc2xvdCAqLwotICAgIG5fdXNlZCA9IHNvLT51c2VkOwotICAgIFB5X0lOQ1JFRihrZXkpOwotICAgIGlmIChzZXRfaW5zZXJ0X2tleShzbywga2V5LCBoYXNoKSkgewotICAgICAgICBQeV9ERUNSRUYoa2V5KTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBpZiAoIShzby0+dXNlZCA+IG5fdXNlZCAmJiBzby0+ZmlsbCozID49IChzby0+bWFzaysxKSoyKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIHNldF90YWJsZV9yZXNpemUoc28sIHNvLT51c2VkPjUwMDAwID8gc28tPnVzZWQqMiA6IHNvLT51c2VkKjQpOwotfQotCi1zdGF0aWMgaW50Ci1zZXRfYWRkX2tleShQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICprZXkpCi17Ci0gICAgc2V0ZW50cnkgZW50cnk7Ci0gICAgUHlfaGFzaF90IGhhc2g7Ci0KLSAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKLSAgICAgICAgKGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKLSAgICAgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKLSAgICAgICAgaWYgKGhhc2ggPT0gLTEpCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIGVudHJ5LmtleSA9IGtleTsKLSAgICBlbnRyeS5oYXNoID0gaGFzaDsKLSAgICByZXR1cm4gc2V0X2FkZF9lbnRyeShzbywgJmVudHJ5KTsKKyAgICBlbnRyeSA9IHNldF9sb29ra2V5KHNvLCBrZXksIGhhc2gpOworICAgIGlmIChlbnRyeSAhPSBOVUxMKQorICAgICAgICByZXR1cm4gZW50cnktPmtleSAhPSBOVUxMOworICAgIHJldHVybiAtMTsKIH0KIAogI2RlZmluZSBESVNDQVJEX05PVEZPVU5EIDAKICNkZWZpbmUgRElTQ0FSRF9GT1VORCAxCiAKIHN0YXRpYyBpbnQKLXNldF9kaXNjYXJkX2VudHJ5KFB5U2V0T2JqZWN0ICpzbywgc2V0ZW50cnkgKm9sZGVudHJ5KQorc2V0X2Rpc2NhcmRfZW50cnkoUHlTZXRPYmplY3QgKnNvLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCkKIHsKICAgICBzZXRlbnRyeSAqZW50cnk7CiAgICAgUHlPYmplY3QgKm9sZF9rZXk7CiAKLSAgICBlbnRyeSA9IHNldF9sb29ra2V5KHNvLCBvbGRlbnRyeS0+a2V5LCBvbGRlbnRyeS0+aGFzaCk7CisgICAgZW50cnkgPSBzZXRfbG9va2tleShzbywga2V5LCBoYXNoKTsKICAgICBpZiAoZW50cnkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmIChlbnRyeS0+a2V5ID09IE5VTEwgIHx8ICBlbnRyeS0+a2V5ID09IGR1bW15KQorICAgIGlmIChlbnRyeS0+a2V5ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBESVNDQVJEX05PVEZPVU5EOwogICAgIG9sZF9rZXkgPSBlbnRyeS0+a2V5OwogICAgIGVudHJ5LT5rZXkgPSBkdW1teTsKQEAgLTM1MywyMiArNDEzLDQ1IEBACiB9CiAKIHN0YXRpYyBpbnQKLXNldF9kaXNjYXJkX2tleShQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICprZXkpCitzZXRfYWRkX2tleShQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICprZXkpCiB7Ci0gICAgc2V0ZW50cnkgZW50cnk7CiAgICAgUHlfaGFzaF90IGhhc2g7CiAKLSAgICBhc3NlcnQgKFB5QW55U2V0X0NoZWNrKHNvKSk7Ci0KICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKICAgICAgICAgKGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKICAgICAgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIGVudHJ5LmtleSA9IGtleTsKLSAgICBlbnRyeS5oYXNoID0gaGFzaDsKLSAgICByZXR1cm4gc2V0X2Rpc2NhcmRfZW50cnkoc28sICZlbnRyeSk7CisgICAgcmV0dXJuIHNldF9hZGRfZW50cnkoc28sIGtleSwgaGFzaCk7Cit9CisKK3N0YXRpYyBpbnQKK3NldF9jb250YWluc19rZXkoUHlTZXRPYmplY3QgKnNvLCBQeU9iamVjdCAqa2V5KQoreworICAgIFB5X2hhc2hfdCBoYXNoOworCisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8CisgICAgICAgIChoYXNoID0gKChQeUFTQ0lJT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKSB7CisgICAgICAgIGhhc2ggPSBQeU9iamVjdF9IYXNoKGtleSk7CisgICAgICAgIGlmIChoYXNoID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gc2V0X2NvbnRhaW5zX2VudHJ5KHNvLCBrZXksIGhhc2gpOworfQorCitzdGF0aWMgaW50CitzZXRfZGlzY2FyZF9rZXkoUHlTZXRPYmplY3QgKnNvLCBQeU9iamVjdCAqa2V5KQoreworICAgIFB5X2hhc2hfdCBoYXNoOworCisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8CisgICAgICAgIChoYXNoID0gKChQeUFTQ0lJT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKSB7CisgICAgICAgIGhhc2ggPSBQeU9iamVjdF9IYXNoKGtleSk7CisgICAgICAgIGlmIChoYXNoID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gc2V0X2Rpc2NhcmRfZW50cnkoc28sIGtleSwgaGFzaCk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC00NDksMjAgKzUzMiwyMiBAQAogewogICAgIFB5X3NzaXplX3QgaTsKICAgICBQeV9zc2l6ZV90IG1hc2s7Ci0gICAgc2V0ZW50cnkgKnRhYmxlOworICAgIHNldGVudHJ5ICplbnRyeTsKIAogICAgIGFzc2VydCAoUHlBbnlTZXRfQ2hlY2soc28pKTsKICAgICBpID0gKnBvc19wdHI7CiAgICAgYXNzZXJ0KGkgPj0gMCk7Ci0gICAgdGFibGUgPSBzby0+dGFibGU7CiAgICAgbWFzayA9IHNvLT5tYXNrOwotICAgIHdoaWxlIChpIDw9IG1hc2sgJiYgKHRhYmxlW2ldLmtleSA9PSBOVUxMIHx8IHRhYmxlW2ldLmtleSA9PSBkdW1teSkpCisgICAgZW50cnkgPSAmc28tPnRhYmxlW2ldOworICAgIHdoaWxlIChpIDw9IG1hc2sgJiYgKGVudHJ5LT5rZXkgPT0gTlVMTCB8fCBlbnRyeS0+a2V5ID09IGR1bW15KSkgewogICAgICAgICBpKys7CisgICAgICAgIGVudHJ5Kys7CisgICAgfQogICAgICpwb3NfcHRyID0gaSsxOwogICAgIGlmIChpID4gbWFzaykKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgYXNzZXJ0KHRhYmxlW2ldLmtleSAhPSBOVUxMKTsKLSAgICAqZW50cnlfcHRyID0gJnRhYmxlW2ldOworICAgIGFzc2VydChlbnRyeSAhPSBOVUxMKTsKKyAgICAqZW50cnlfcHRyID0gZW50cnk7CiAgICAgcmV0dXJuIDE7CiB9CiAKQEAgLTU2MCw4ICs2NDUsOCBAQAogICAgICAqIGluY3JlbWVudGFsbHkgcmVzaXppbmcgYXMgd2UgaW5zZXJ0IG5ldyBrZXlzLiAgRXhwZWN0CiAgICAgICogdGhhdCB0aGVyZSB3aWxsIGJlIG5vIChvciBmZXcpIG92ZXJsYXBwaW5nIGtleXMuCiAgICAgICovCi0gICAgaWYgKChzby0+ZmlsbCArIG90aGVyLT51c2VkKSozID49IChzby0+bWFzaysxKSoyKSB7Ci0gICAgICAgaWYgKHNldF90YWJsZV9yZXNpemUoc28sIChzby0+dXNlZCArIG90aGVyLT51c2VkKSoyKSAhPSAwKQorICAgIGlmICgoc28tPmZpbGwgKyBvdGhlci0+dXNlZCkqMyA+PSBzby0+bWFzayoyKSB7CisgICAgICAgaWYgKHNldF90YWJsZV9yZXNpemUoc28sIHNvLT51c2VkICsgb3RoZXItPnVzZWQpICE9IDApCiAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgc29fZW50cnkgPSBzby0+dGFibGU7CkBAIC01ODYsMTEgKzY3MSwxNSBAQAogCiAgICAgLyogSWYgb3VyIHRhYmxlIGlzIGVtcHR5LCB3ZSBjYW4gdXNlIHNldF9pbnNlcnRfY2xlYW4oKSAqLwogICAgIGlmIChzby0+ZmlsbCA9PSAwKSB7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPD0gb3RoZXItPm1hc2s7IGkrKywgb3RoZXJfZW50cnkrKykgeworICAgICAgICBzZXRlbnRyeSAqbmV3dGFibGUgPSBzby0+dGFibGU7CisgICAgICAgIHNpemVfdCBuZXdtYXNrID0gKHNpemVfdClzby0+bWFzazsKKyAgICAgICAgc28tPmZpbGwgPSBvdGhlci0+dXNlZDsKKyAgICAgICAgc28tPnVzZWQgPSBvdGhlci0+dXNlZDsKKyAgICAgICAgZm9yIChpID0gb3RoZXItPm1hc2sgKyAxOyBpID4gMCA7IGktLSwgb3RoZXJfZW50cnkrKykgewogICAgICAgICAgICAga2V5ID0gb3RoZXJfZW50cnktPmtleTsKICAgICAgICAgICAgIGlmIChrZXkgIT0gTlVMTCAmJiBrZXkgIT0gZHVtbXkpIHsKICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoa2V5KTsKLSAgICAgICAgICAgICAgICBzZXRfaW5zZXJ0X2NsZWFuKHNvLCBrZXksIG90aGVyX2VudHJ5LT5oYXNoKTsKKyAgICAgICAgICAgICAgICBzZXRfaW5zZXJ0X2NsZWFuKG5ld3RhYmxlLCBuZXdtYXNrLCBrZXksIG90aGVyX2VudHJ5LT5oYXNoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICByZXR1cm4gMDsKQEAgLTYwMSw0NiArNjkwLDEzIEBACiAgICAgICAgIG90aGVyX2VudHJ5ID0gJm90aGVyLT50YWJsZVtpXTsKICAgICAgICAga2V5ID0gb3RoZXJfZW50cnktPmtleTsKICAgICAgICAgaWYgKGtleSAhPSBOVUxMICYmIGtleSAhPSBkdW1teSkgewotICAgICAgICAgICAgUHlfSU5DUkVGKGtleSk7Ci0gICAgICAgICAgICBpZiAoc2V0X2luc2VydF9rZXkoc28sIGtleSwgb3RoZXJfZW50cnktPmhhc2gpKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeShzbywga2V5LCBvdGhlcl9lbnRyeS0+aGFzaCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgaW50Ci1zZXRfY29udGFpbnNfZW50cnkoUHlTZXRPYmplY3QgKnNvLCBzZXRlbnRyeSAqZW50cnkpCi17Ci0gICAgUHlPYmplY3QgKmtleTsKLSAgICBzZXRlbnRyeSAqbHVfZW50cnk7Ci0KLSAgICBsdV9lbnRyeSA9IHNldF9sb29ra2V5KHNvLCBlbnRyeS0+a2V5LCBlbnRyeS0+aGFzaCk7Ci0gICAgaWYgKGx1X2VudHJ5ID09IE5VTEwpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICBrZXkgPSBsdV9lbnRyeS0+a2V5OwotICAgIHJldHVybiBrZXkgIT0gTlVMTCAmJiBrZXkgIT0gZHVtbXk7Ci19Ci0KLXN0YXRpYyBpbnQKLXNldF9jb250YWluc19rZXkoUHlTZXRPYmplY3QgKnNvLCBQeU9iamVjdCAqa2V5KQotewotICAgIHNldGVudHJ5IGVudHJ5OwotICAgIFB5X2hhc2hfdCBoYXNoOwotCi0gICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8Ci0gICAgICAgIChoYXNoID0gKChQeUFTQ0lJT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKSB7Ci0gICAgICAgIGhhc2ggPSBQeU9iamVjdF9IYXNoKGtleSk7Ci0gICAgICAgIGlmIChoYXNoID09IC0xKQotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBlbnRyeS5rZXkgPSBrZXk7Ci0gICAgZW50cnkuaGFzaCA9IGhhc2g7Ci0gICAgcmV0dXJuIHNldF9jb250YWluc19lbnRyeShzbywgJmVudHJ5KTsKLX0KLQogc3RhdGljIFB5T2JqZWN0ICoKIHNldF9wb3AoUHlTZXRPYmplY3QgKnNvKQogewpAQCAtNjgyLDQzICs3MzgsNjQgQEAKICAgICByZXR1cm4gMDsKIH0KIAorLyogV29yayB0byBpbmNyZWFzZSB0aGUgYml0IGRpc3BlcnNpb24gZm9yIGNsb3NlbHkgc3BhY2VkIGhhc2ggdmFsdWVzLgorICAgVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSBzb21lIHVzZSBjYXNlcyBoYXZlIG1hbnkgY29tYmluYXRpb25zIG9mIGEKKyAgIHNtYWxsIG51bWJlciBvZiBlbGVtZW50cyB3aXRoIG5lYXJieSBoYXNoZXMgc28gdGhhdCBtYW55IGRpc3RpbmN0CisgICBjb21iaW5hdGlvbnMgY29sbGFwc2UgdG8gb25seSBhIGhhbmRmdWwgb2YgZGlzdGluY3QgaGFzaCB2YWx1ZXMuICovCisKK3N0YXRpYyBQeV91aGFzaF90Citfc2h1ZmZsZV9iaXRzKFB5X3VoYXNoX3QgaCkKK3sKKyAgICByZXR1cm4gKChoIF4gODk4Njk3NDdVTCkgXiAoaCA8PCAxNikpICogMzY0NDc5ODE2N1VMOworfQorCisvKiBNb3N0IG9mIHRoZSBjb25zdGFudHMgaW4gdGhpcyBoYXNoIGFsZ29yaXRobSBhcmUgcmFuZG9tbHkgY2hvc2VuCisgICBsYXJnZSBwcmltZXMgd2l0aCAiaW50ZXJlc3RpbmcgYml0IHBhdHRlcm5zIiBhbmQgdGhhdCBwYXNzZWQgdGVzdHMKKyAgIGZvciBnb29kIGNvbGxpc2lvbiBzdGF0aXN0aWNzIG9uIGEgdmFyaWV0eSBvZiBwcm9ibGVtYXRpYyBkYXRhc2V0cworICAgaW5jbHVkaW5nIHBvd2Vyc2V0cyBhbmQgZ3JhcGggc3RydWN0dXJlcyAoc3VjaCBhcyBEYXZpZCBFcHBzdGVpbidzCisgICBncmFwaCByZWNpcGVzIGluIExpYi90ZXN0L3Rlc3Rfc2V0LnB5KSAqLworCiBzdGF0aWMgUHlfaGFzaF90CiBmcm96ZW5zZXRfaGFzaChQeU9iamVjdCAqc2VsZikKIHsKLSAgICAvKiBNb3N0IG9mIHRoZSBjb25zdGFudHMgaW4gdGhpcyBoYXNoIGFsZ29yaXRobSBhcmUgcmFuZG9tbHkgY2hvb3NlbgotICAgICAgIGxhcmdlIHByaW1lcyB3aXRoICJpbnRlcmVzdGluZyBiaXQgcGF0dGVybnMiIGFuZCB0aGF0IHBhc3NlZAotICAgICAgIHRlc3RzIGZvciBnb29kIGNvbGxpc2lvbiBzdGF0aXN0aWNzIG9uIGEgdmFyaWV0eSBvZiBwcm9ibGVtYXRpYwotICAgICAgIGRhdGFzZXRzIHN1Y2ggYXM6Ci0KLSAgICAgICAgICBwcyA9IFtdCi0gICAgICAgICAgZm9yIHIgaW4gcmFuZ2UoMjEpOgotICAgICAgICAgICAgICBwcyArPSBpdGVydG9vbHMuY29tYmluYXRpb25zKHJhbmdlKDIwKSwgcikKLSAgICAgICAgICBudW1fZGlzdGluY3RfaGFzaGVzID0gbGVuKHtoYXNoKGZyb3plbnNldChzKSkgZm9yIHMgaW4gcHN9KQotCi0gICAgKi8KICAgICBQeVNldE9iamVjdCAqc28gPSAoUHlTZXRPYmplY3QgKilzZWxmOwotICAgIFB5X3VoYXNoX3QgaCwgaGFzaCA9IDE5Mjc4NjgyMzdVTDsKKyAgICBQeV91aGFzaF90IGhhc2ggPSAwOwogICAgIHNldGVudHJ5ICplbnRyeTsKLSAgICBQeV9zc2l6ZV90IHBvcyA9IDA7CiAKICAgICBpZiAoc28tPmhhc2ggIT0gLTEpCiAgICAgICAgIHJldHVybiBzby0+aGFzaDsKIAotICAgIGhhc2ggKj0gKFB5X3VoYXNoX3QpUHlTZXRfR0VUX1NJWkUoc2VsZikgKyAxOwotICAgIHdoaWxlIChzZXRfbmV4dChzbywgJnBvcywgJmVudHJ5KSkgewotICAgICAgICAvKiBXb3JrIHRvIGluY3JlYXNlIHRoZSBiaXQgZGlzcGVyc2lvbiBmb3IgY2xvc2VseSBzcGFjZWQgaGFzaAotICAgICAgICAgICB2YWx1ZXMuICBUaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIHNvbWUgdXNlIGNhc2VzIGhhdmUgbWFueQotICAgICAgICAgICBjb21iaW5hdGlvbnMgb2YgYSBzbWFsbCBudW1iZXIgb2YgZWxlbWVudHMgd2l0aCBuZWFyYnkKLSAgICAgICAgICAgaGFzaGVzIHNvIHRoYXQgbWFueSBkaXN0aW5jdCBjb21iaW5hdGlvbnMgY29sbGFwc2UgdG8gb25seQotICAgICAgICAgICBhIGhhbmRmdWwgb2YgZGlzdGluY3QgaGFzaCB2YWx1ZXMuICovCi0gICAgICAgIGggPSBlbnRyeS0+aGFzaDsKLSAgICAgICAgaGFzaCBePSAoKGggXiA4OTg2OTc0N1VMKSBeIChoIDw8IDE2KSkgKiAzNjQ0Nzk4MTY3VUw7Ci0gICAgfQotICAgIC8qIE1ha2UgdGhlIGZpbmFsIHJlc3VsdCBzcHJlYWQtb3V0IGluIGEgZGlmZmVyZW50IHBhdHRlcm4KLSAgICAgICB0aGFuIHRoZSBhbGdvcml0aG0gZm9yIHR1cGxlcyBvciBvdGhlciBweXRob24gb2JqZWN0cy4gKi8KKyAgICAvKiBYb3ItaW4gc2h1ZmZsZWQgYml0cyBmcm9tIGV2ZXJ5IGVudHJ5J3MgaGFzaCBmaWVsZCBiZWNhdXNlIHhvciBpcworICAgICAgIGNvbW11dGF0aXZlIGFuZCBhIGZyb3plbnNldCBoYXNoIHNob3VsZCBiZSBpbmRlcGVuZGVudCBvZiBvcmRlci4KKworICAgICAgIEZvciBzcGVlZCwgaW5jbHVkZSBudWxsIGVudHJpZXMgYW5kIGR1bW15IGVudHJpZXMgYW5kIHRoZW4KKyAgICAgICBzdWJ0cmFjdCBvdXQgdGhlaXIgZWZmZWN0IGFmdGVyd2FyZHMgc28gdGhhdCB0aGUgZmluYWwgaGFzaAorICAgICAgIGRlcGVuZHMgb25seSBvbiBhY3RpdmUgZW50cmllcy4gIFRoaXMgYWxsb3dzIHRoZSBjb2RlIHRvIGJlCisgICAgICAgdmVjdG9yaXplZCBieSB0aGUgY29tcGlsZXIgYW5kIGl0IHNhdmVzIHRoZSB1bnByZWRpY3RhYmxlCisgICAgICAgYnJhbmNoZXMgdGhhdCB3b3VsZCBhcmlzZSB3aGVuIHRyeWluZyB0byBleGNsdWRlIG51bGwgYW5kIGR1bW15CisgICAgICAgZW50cmllcyBvbiBldmVyeSBpdGVyYXRpb24uICovCisKKyAgICBmb3IgKGVudHJ5ID0gc28tPnRhYmxlOyBlbnRyeSA8PSAmc28tPnRhYmxlW3NvLT5tYXNrXTsgZW50cnkrKykKKyAgICAgICAgaGFzaCBePSBfc2h1ZmZsZV9iaXRzKGVudHJ5LT5oYXNoKTsKKworICAgIC8qIFJlbW92ZSB0aGUgZWZmZWN0IG9mIGFuIG9kZCBudW1iZXIgb2YgTlVMTCBlbnRyaWVzICovCisgICAgaWYgKChzby0+bWFzayArIDEgLSBzby0+ZmlsbCkgJiAxKQorICAgICAgICBoYXNoIF49IF9zaHVmZmxlX2JpdHMoMCk7CisKKyAgICAvKiBSZW1vdmUgdGhlIGVmZmVjdCBvZiBhbiBvZGQgbnVtYmVyIG9mIGR1bW15IGVudHJpZXMgKi8KKyAgICBpZiAoKHNvLT5maWxsIC0gc28tPnVzZWQpICYgMSkKKyAgICAgICAgaGFzaCBePSBfc2h1ZmZsZV9iaXRzKC0xKTsKKworICAgIC8qIEZhY3RvciBpbiB0aGUgbnVtYmVyIG9mIGFjdGl2ZSBlbnRyaWVzICovCisgICAgaGFzaCBePSAoKFB5X3VoYXNoX3QpUHlTZXRfR0VUX1NJWkUoc2VsZikgKyAxKSAqIDE5Mjc4NjgyMzdVTDsKKworICAgIC8qIERpc3BlcnNlIHBhdHRlcm5zIGFyaXNpbmcgaW4gbmVzdGVkIGZyb3plbnNldHMgKi8KICAgICBoYXNoID0gaGFzaCAqIDY5MDY5VSArIDkwNzEzMzkyM1VMOworCisgICAgLyogLTEgaXMgcmVzZXJ2ZWQgYXMgYW4gZXJyb3IgY29kZSAqLwogICAgIGlmIChoYXNoID09IChQeV91aGFzaF90KS0xKQogICAgICAgICBoYXNoID0gNTkwOTIzNzEzVUw7CisKICAgICBzby0+aGFzaCA9IGhhc2g7CiAgICAgcmV0dXJuIGhhc2g7CiB9CkBAIC04NjUsNyArOTQyLDcgQEAKICAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDLC8qIHRwX2ZsYWdzICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDLCAgICAvKiB0cF9mbGFncyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCiAgICAgKHRyYXZlcnNlcHJvYylzZXRpdGVyX3RyYXZlcnNlLCAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KQEAgLTkxMCwxOCArOTg3LDE0IEBACiAgICAgICAgICogaW5jcmVtZW50YWxseSByZXNpemluZyBhcyB3ZSBpbnNlcnQgbmV3IGtleXMuICBFeHBlY3QKICAgICAgICAgKiB0aGF0IHRoZXJlIHdpbGwgYmUgbm8gKG9yIGZldykgb3ZlcmxhcHBpbmcga2V5cy4KICAgICAgICAgKi8KLSAgICAgICAgaWYgKGRpY3RzaXplID09IC0xKQorICAgICAgICBpZiAoZGljdHNpemUgPCAwKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBpZiAoKHNvLT5maWxsICsgZGljdHNpemUpKjMgPj0gKHNvLT5tYXNrKzEpKjIpIHsKLSAgICAgICAgICAgIGlmIChzZXRfdGFibGVfcmVzaXplKHNvLCAoc28tPnVzZWQgKyBkaWN0c2l6ZSkqMikgIT0gMCkKKyAgICAgICAgaWYgKChzby0+ZmlsbCArIGRpY3RzaXplKSozID49IHNvLT5tYXNrKjIpIHsKKyAgICAgICAgICAgIGlmIChzZXRfdGFibGVfcmVzaXplKHNvLCBzby0+dXNlZCArIGRpY3RzaXplKSAhPSAwKQogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgICAgICB3aGlsZSAoX1B5RGljdF9OZXh0KG90aGVyLCAmcG9zLCAma2V5LCAmdmFsdWUsICZoYXNoKSkgewotICAgICAgICAgICAgc2V0ZW50cnkgYW5fZW50cnk7Ci0KLSAgICAgICAgICAgIGFuX2VudHJ5Lmhhc2ggPSBoYXNoOwotICAgICAgICAgICAgYW5fZW50cnkua2V5ID0ga2V5OwotICAgICAgICAgICAgaWYgKHNldF9hZGRfZW50cnkoc28sICZhbl9lbnRyeSkpCisgICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeShzbywga2V5LCBoYXNoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIDA7CkBAIC05NzAsOSArMTA0Myw4IEBACiBzdGF0aWMgUHlPYmplY3QgKgogbWFrZV9uZXdfc2V0KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKml0ZXJhYmxlKQogewotICAgIFB5U2V0T2JqZWN0ICpzbyA9IE5VTEw7CisgICAgUHlTZXRPYmplY3QgKnNvOwogCi0gICAgLyogY3JlYXRlIFB5U2V0T2JqZWN0IHN0cnVjdHVyZSAqLwogICAgIHNvID0gKFB5U2V0T2JqZWN0ICopdHlwZS0+dHBfYWxsb2ModHlwZSwgMCk7CiAgICAgaWYgKHNvID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTAxNSw3ICsxMDg3LDggQEAKIHsKICAgICBQeU9iamVjdCAqaXRlcmFibGUgPSBOVUxMLCAqcmVzdWx0OwogCi0gICAgaWYgKHR5cGUgPT0gJlB5RnJvemVuU2V0X1R5cGUgJiYgIV9QeUFyZ19Ob0tleXdvcmRzKCJmcm96ZW5zZXQoKSIsIGt3ZHMpKQorICAgIGlmIChrd2RzICE9IE5VTEwgJiYgdHlwZSA9PSAmUHlGcm96ZW5TZXRfVHlwZQorICAgICAgICAmJiAhX1B5QXJnX05vS2V5d29yZHMoImZyb3plbnNldCgpIiwga3dkcykpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCB0eXBlLT50cF9uYW1lLCAwLCAxLCAmaXRlcmFibGUpKQpAQCAtMTA0MiwyNCArMTExNSw5IEBACiAgICAgcmV0dXJuIGVtcHR5ZnJvemVuc2V0OwogfQogCi1pbnQKLVB5U2V0X0NsZWFyRnJlZUxpc3Qodm9pZCkKLXsKLSAgICByZXR1cm4gMDsKLX0KLQotdm9pZAotUHlTZXRfRmluaSh2b2lkKQotewotICAgIFB5X0NMRUFSKGVtcHR5ZnJvemVuc2V0KTsKLX0KLQogc3RhdGljIFB5T2JqZWN0ICoKIHNldF9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgaWYgKHR5cGUgPT0gJlB5U2V0X1R5cGUgJiYgIV9QeUFyZ19Ob0tleXdvcmRzKCJzZXQoKSIsIGt3ZHMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIHJldHVybiBtYWtlX25ld19zZXQodHlwZSwgTlVMTCk7CiB9CiAKQEAgLTEyMDEsNiArMTI1OSw4IEBACiB7CiAgICAgUHlTZXRPYmplY3QgKnJlc3VsdDsKICAgICBQeU9iamVjdCAqa2V5LCAqaXQsICp0bXA7CisgICAgUHlfaGFzaF90IGhhc2g7CisgICAgaW50IHJ2OwogCiAgICAgaWYgKChQeU9iamVjdCAqKXNvID09IG90aGVyKQogICAgICAgICByZXR1cm4gc2V0X2NvcHkoc28pOwpAQCAtMTIyMCwxMyArMTI4MCwxNSBAQAogICAgICAgICB9CiAKICAgICAgICAgd2hpbGUgKHNldF9uZXh0KChQeVNldE9iamVjdCAqKW90aGVyLCAmcG9zLCAmZW50cnkpKSB7Ci0gICAgICAgICAgICBpbnQgcnYgPSBzZXRfY29udGFpbnNfZW50cnkoc28sIGVudHJ5KTsKLSAgICAgICAgICAgIGlmIChydiA9PSAtMSkgeworICAgICAgICAgICAga2V5ID0gZW50cnktPmtleTsKKyAgICAgICAgICAgIGhhc2ggPSBlbnRyeS0+aGFzaDsKKyAgICAgICAgICAgIHJ2ID0gc2V0X2NvbnRhaW5zX2VudHJ5KHNvLCBrZXksIGhhc2gpOworICAgICAgICAgICAgaWYgKHJ2IDwgMCkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHJ2KSB7Ci0gICAgICAgICAgICAgICAgaWYgKHNldF9hZGRfZW50cnkocmVzdWx0LCBlbnRyeSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeShyZXN1bHQsIGtleSwgaGFzaCkpIHsKICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgICAgIH0KQEAgLTEyNDIsMzIgKzEzMDQsMTUgQEAKICAgICB9CiAKICAgICB3aGlsZSAoKGtleSA9IFB5SXRlcl9OZXh0KGl0KSkgIT0gTlVMTCkgewotICAgICAgICBpbnQgcnY7Ci0gICAgICAgIHNldGVudHJ5IGVudHJ5OwotICAgICAgICBQeV9oYXNoX3QgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKLQotICAgICAgICBpZiAoaGFzaCA9PSAtMSkgewotICAgICAgICAgICAgUHlfREVDUkVGKGl0KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBlbnRyeS5oYXNoID0gaGFzaDsKLSAgICAgICAgZW50cnkua2V5ID0ga2V5OwotICAgICAgICBydiA9IHNldF9jb250YWluc19lbnRyeShzbywgJmVudHJ5KTsKLSAgICAgICAgaWYgKHJ2ID09IC0xKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoaXQpOwotICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9CisgICAgICAgIGhhc2ggPSBQeU9iamVjdF9IYXNoKGtleSk7CisgICAgICAgIGlmIChoYXNoID09IC0xKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgcnYgPSBzZXRfY29udGFpbnNfZW50cnkoc28sIGtleSwgaGFzaCk7CisgICAgICAgIGlmIChydiA8IDApCisgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICBpZiAocnYpIHsKLSAgICAgICAgICAgIGlmIChzZXRfYWRkX2VudHJ5KHJlc3VsdCwgJmVudHJ5KSkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdCk7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeShyZXN1bHQsIGtleSwgaGFzaCkpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQogICAgICAgICBQeV9ERUNSRUYoa2V5KTsKICAgICB9CkBAIC0xMjc3LDYgKzEzMjIsMTEgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIHJldHVybiAoUHlPYmplY3QgKilyZXN1bHQ7CisgIGVycm9yOgorICAgIFB5X0RFQ1JFRihpdCk7CisgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgUHlfREVDUkVGKGtleSk7CisgICAgcmV0dXJuIE5VTEw7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xMzYzLDYgKzE0MTMsNyBAQAogc2V0X2lzZGlzam9pbnQoUHlTZXRPYmplY3QgKnNvLCBQeU9iamVjdCAqb3RoZXIpCiB7CiAgICAgUHlPYmplY3QgKmtleSwgKml0LCAqdG1wOworICAgIGludCBydjsKIAogICAgIGlmICgoUHlPYmplY3QgKilzbyA9PSBvdGhlcikgewogICAgICAgICBpZiAoUHlTZXRfR0VUX1NJWkUoc28pID09IDApCkBAIC0xMzgxLDggKzE0MzIsOCBAQAogICAgICAgICAgICAgb3RoZXIgPSB0bXA7CiAgICAgICAgIH0KICAgICAgICAgd2hpbGUgKHNldF9uZXh0KChQeVNldE9iamVjdCAqKW90aGVyLCAmcG9zLCAmZW50cnkpKSB7Ci0gICAgICAgICAgICBpbnQgcnYgPSBzZXRfY29udGFpbnNfZW50cnkoc28sIGVudHJ5KTsKLSAgICAgICAgICAgIGlmIChydiA9PSAtMSkKKyAgICAgICAgICAgIHJ2ID0gc2V0X2NvbnRhaW5zX2VudHJ5KHNvLCBlbnRyeS0+a2V5LCBlbnRyeS0+aGFzaCk7CisgICAgICAgICAgICBpZiAocnYgPCAwKQogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgaWYgKHJ2KQogICAgICAgICAgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKQEAgLTEzOTUsOCArMTQ0Niw2IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgd2hpbGUgKChrZXkgPSBQeUl0ZXJfTmV4dChpdCkpICE9IE5VTEwpIHsKLSAgICAgICAgaW50IHJ2OwotICAgICAgICBzZXRlbnRyeSBlbnRyeTsKICAgICAgICAgUHlfaGFzaF90IGhhc2ggPSBQeU9iamVjdF9IYXNoKGtleSk7CiAKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpIHsKQEAgLTE0MDQsMTEgKzE0NTMsOSBAQAogICAgICAgICAgICAgUHlfREVDUkVGKGl0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIGVudHJ5Lmhhc2ggPSBoYXNoOwotICAgICAgICBlbnRyeS5rZXkgPSBrZXk7Ci0gICAgICAgIHJ2ID0gc2V0X2NvbnRhaW5zX2VudHJ5KHNvLCAmZW50cnkpOworICAgICAgICBydiA9IHNldF9jb250YWluc19lbnRyeShzbywga2V5LCBoYXNoKTsKICAgICAgICAgUHlfREVDUkVGKGtleSk7Ci0gICAgICAgIGlmIChydiA9PSAtMSkgeworICAgICAgICBpZiAocnYgPCAwKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoaXQpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KQEAgLTE0MjksNiArMTQ3NiwxMCBAQAogc3RhdGljIGludAogc2V0X2RpZmZlcmVuY2VfdXBkYXRlX2ludGVybmFsKFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKm90aGVyKQogeworICAgIGlmIChQeVNldF9HRVRfU0laRShzbykgPT0gMCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKICAgICBpZiAoKFB5T2JqZWN0ICopc28gPT0gb3RoZXIpCiAgICAgICAgIHJldHVybiBzZXRfY2xlYXJfaW50ZXJuYWwoc28pOwogCkBAIC0xNDM3LDcgKzE0ODgsNyBAQAogICAgICAgICBQeV9zc2l6ZV90IHBvcyA9IDA7CiAKICAgICAgICAgd2hpbGUgKHNldF9uZXh0KChQeVNldE9iamVjdCAqKW90aGVyLCAmcG9zLCAmZW50cnkpKQotICAgICAgICAgICAgaWYgKHNldF9kaXNjYXJkX2VudHJ5KHNvLCBlbnRyeSkgPT0gLTEpCisgICAgICAgICAgICBpZiAoc2V0X2Rpc2NhcmRfZW50cnkoc28sIGVudHJ5LT5rZXksIGVudHJ5LT5oYXNoKSA8IDApCiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFB5T2JqZWN0ICprZXksICppdDsKQEAgLTE0NDYsNyArMTQ5Nyw3IEBACiAgICAgICAgICAgICByZXR1cm4gLTE7CiAKICAgICAgICAgd2hpbGUgKChrZXkgPSBQeUl0ZXJfTmV4dChpdCkpICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGlmIChzZXRfZGlzY2FyZF9rZXkoc28sIGtleSkgPT0gLTEpIHsKKyAgICAgICAgICAgIGlmIChzZXRfZGlzY2FyZF9rZXkoc28sIGtleSkgPCAwKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0KTsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CkBAIC0xNDU3LDEwICsxNTA4LDEwIEBACiAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICAvKiBJZiBtb3JlIHRoYW4gMS81IGFyZSBkdW1taWVzLCB0aGVuIHJlc2l6ZSB0aGVtIGF3YXkuICovCi0gICAgaWYgKChzby0+ZmlsbCAtIHNvLT51c2VkKSAqIDUgPCBzby0+bWFzaykKKyAgICAvKiBJZiBtb3JlIHRoYW4gMS80dGggYXJlIGR1bW1pZXMsIHRoZW4gcmVzaXplIHRoZW0gYXdheS4gKi8KKyAgICBpZiAoKHNpemVfdCkoc28tPmZpbGwgLSBzby0+dXNlZCkgPD0gKHNpemVfdClzby0+bWFzayAvIDQpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBzZXRfdGFibGVfcmVzaXplKHNvLCBzby0+dXNlZD41MDAwMCA/IHNvLT51c2VkKjIgOiBzby0+dXNlZCo0KTsKKyAgICByZXR1cm4gc2V0X3RhYmxlX3Jlc2l6ZShzbywgc28tPnVzZWQpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTQ4Nyw3ICsxNTM4LDcgQEAKICAgICByZXN1bHQgPSBzZXRfY29weShzbyk7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoc2V0X2RpZmZlcmVuY2VfdXBkYXRlX2ludGVybmFsKChQeVNldE9iamVjdCAqKSByZXN1bHQsIG90aGVyKSAhPSAtMSkKKyAgICBpZiAoc2V0X2RpZmZlcmVuY2VfdXBkYXRlX2ludGVybmFsKChQeVNldE9iamVjdCAqKSByZXN1bHQsIG90aGVyKSA9PSAwKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgIHJldHVybiBOVUxMOwpAQCAtMTQ5Nyw4ICsxNTQ4LDE1IEBACiBzZXRfZGlmZmVyZW5jZShQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICpvdGhlcikKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICprZXk7CisgICAgUHlfaGFzaF90IGhhc2g7CiAgICAgc2V0ZW50cnkgKmVudHJ5OwogICAgIFB5X3NzaXplX3QgcG9zID0gMDsKKyAgICBpbnQgcnY7CisKKyAgICBpZiAoUHlTZXRfR0VUX1NJWkUoc28pID09IDApIHsKKyAgICAgICAgcmV0dXJuIHNldF9jb3B5KHNvKTsKKyAgICB9CiAKICAgICBpZiAoIVB5QW55U2V0X0NoZWNrKG90aGVyKSAgJiYgIVB5RGljdF9DaGVja0V4YWN0KG90aGVyKSkgewogICAgICAgICByZXR1cm4gc2V0X2NvcHlfYW5kX2RpZmZlcmVuY2Uoc28sIG90aGVyKTsKQEAgLTE1MTYsMTcgKzE1NzQsMTUgQEAKIAogICAgIGlmIChQeURpY3RfQ2hlY2tFeGFjdChvdGhlcikpIHsKICAgICAgICAgd2hpbGUgKHNldF9uZXh0KHNvLCAmcG9zLCAmZW50cnkpKSB7Ci0gICAgICAgICAgICBzZXRlbnRyeSBlbnRyeWNvcHk7Ci0gICAgICAgICAgICBpbnQgcnY7Ci0gICAgICAgICAgICBlbnRyeWNvcHkuaGFzaCA9IGVudHJ5LT5oYXNoOwotICAgICAgICAgICAgZW50cnljb3B5LmtleSA9IGVudHJ5LT5rZXk7Ci0gICAgICAgICAgICBydiA9IF9QeURpY3RfQ29udGFpbnMob3RoZXIsIGVudHJ5LT5rZXksIGVudHJ5LT5oYXNoKTsKKyAgICAgICAgICAgIGtleSA9IGVudHJ5LT5rZXk7CisgICAgICAgICAgICBoYXNoID0gZW50cnktPmhhc2g7CisgICAgICAgICAgICBydiA9IF9QeURpY3RfQ29udGFpbnMob3RoZXIsIGtleSwgaGFzaCk7CiAgICAgICAgICAgICBpZiAocnYgPCAwKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoIXJ2KSB7Ci0gICAgICAgICAgICAgICAgaWYgKHNldF9hZGRfZW50cnkoKFB5U2V0T2JqZWN0ICopcmVzdWx0LCAmZW50cnljb3B5KSkgeworICAgICAgICAgICAgICAgIGlmIChzZXRfYWRkX2VudHJ5KChQeVNldE9iamVjdCAqKXJlc3VsdCwga2V5LCBoYXNoKSkgewogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTUzNywxMyArMTU5MywxNSBAQAogCiAgICAgLyogSXRlcmF0ZSBvdmVyIHNvLCBjaGVja2luZyBmb3IgY29tbW9uIGVsZW1lbnRzIGluIG90aGVyLiAqLwogICAgIHdoaWxlIChzZXRfbmV4dChzbywgJnBvcywgJmVudHJ5KSkgewotICAgICAgICBpbnQgcnYgPSBzZXRfY29udGFpbnNfZW50cnkoKFB5U2V0T2JqZWN0ICopb3RoZXIsIGVudHJ5KTsKLSAgICAgICAgaWYgKHJ2ID09IC0xKSB7CisgICAgICAgIGtleSA9IGVudHJ5LT5rZXk7CisgICAgICAgIGhhc2ggPSBlbnRyeS0+aGFzaDsKKyAgICAgICAgcnYgPSBzZXRfY29udGFpbnNfZW50cnkoKFB5U2V0T2JqZWN0ICopb3RoZXIsIGtleSwgaGFzaCk7CisgICAgICAgIGlmIChydiA8IDApIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFydikgewotICAgICAgICAgICAgaWYgKHNldF9hZGRfZW50cnkoKFB5U2V0T2JqZWN0ICopcmVzdWx0LCBlbnRyeSkpIHsKKyAgICAgICAgICAgIGlmIChzZXRfYWRkX2VudHJ5KChQeVNldE9iamVjdCAqKXJlc3VsdCwga2V5LCBoYXNoKSkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQpAQCAtMTYwNSwyOSArMTY2MywyNCBAQAogICAgIFB5U2V0T2JqZWN0ICpvdGhlcnNldDsKICAgICBQeU9iamVjdCAqa2V5OwogICAgIFB5X3NzaXplX3QgcG9zID0gMDsKKyAgICBQeV9oYXNoX3QgaGFzaDsKICAgICBzZXRlbnRyeSAqZW50cnk7CisgICAgaW50IHJ2OwogCiAgICAgaWYgKChQeU9iamVjdCAqKXNvID09IG90aGVyKQogICAgICAgICByZXR1cm4gc2V0X2NsZWFyKHNvKTsKIAogICAgIGlmIChQeURpY3RfQ2hlY2tFeGFjdChvdGhlcikpIHsKICAgICAgICAgUHlPYmplY3QgKnZhbHVlOwotICAgICAgICBpbnQgcnY7Ci0gICAgICAgIFB5X2hhc2hfdCBoYXNoOwogICAgICAgICB3aGlsZSAoX1B5RGljdF9OZXh0KG90aGVyLCAmcG9zLCAma2V5LCAmdmFsdWUsICZoYXNoKSkgewotICAgICAgICAgICAgc2V0ZW50cnkgYW5fZW50cnk7Ci0KICAgICAgICAgICAgIFB5X0lOQ1JFRihrZXkpOwotICAgICAgICAgICAgYW5fZW50cnkuaGFzaCA9IGhhc2g7Ci0gICAgICAgICAgICBhbl9lbnRyeS5rZXkgPSBrZXk7Ci0KLSAgICAgICAgICAgIHJ2ID0gc2V0X2Rpc2NhcmRfZW50cnkoc28sICZhbl9lbnRyeSk7Ci0gICAgICAgICAgICBpZiAocnYgPT0gLTEpIHsKKyAgICAgICAgICAgIHJ2ID0gc2V0X2Rpc2NhcmRfZW50cnkoc28sIGtleSwgaGFzaCk7CisgICAgICAgICAgICBpZiAocnYgPCAwKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAocnYgPT0gRElTQ0FSRF9OT1RGT1VORCkgewotICAgICAgICAgICAgICAgIGlmIChzZXRfYWRkX2VudHJ5KHNvLCAmYW5fZW50cnkpKSB7CisgICAgICAgICAgICAgICAgaWYgKHNldF9hZGRfZW50cnkoc28sIGtleSwgaGFzaCkpIHsKICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgICAgIH0KQEAgLTE2NDcsMTMgKzE3MDAsMTUgQEAKICAgICB9CiAKICAgICB3aGlsZSAoc2V0X25leHQob3RoZXJzZXQsICZwb3MsICZlbnRyeSkpIHsKLSAgICAgICAgaW50IHJ2ID0gc2V0X2Rpc2NhcmRfZW50cnkoc28sIGVudHJ5KTsKLSAgICAgICAgaWYgKHJ2ID09IC0xKSB7CisgICAgICAgIGtleSA9IGVudHJ5LT5rZXk7CisgICAgICAgIGhhc2ggPSBlbnRyeS0+aGFzaDsKKyAgICAgICAgcnYgPSBzZXRfZGlzY2FyZF9lbnRyeShzbywga2V5LCBoYXNoKTsKKyAgICAgICAgaWYgKHJ2IDwgMCkgewogICAgICAgICAgICAgUHlfREVDUkVGKG90aGVyc2V0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIGlmIChydiA9PSBESVNDQVJEX05PVEZPVU5EKSB7Ci0gICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeShzbywgZW50cnkpKSB7CisgICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeShzbywga2V5LCBoYXNoKSkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihvdGhlcnNldCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CkBAIC0xNzE1LDYgKzE3NzAsNyBAQAogewogICAgIHNldGVudHJ5ICplbnRyeTsKICAgICBQeV9zc2l6ZV90IHBvcyA9IDA7CisgICAgaW50IHJ2OwogCiAgICAgaWYgKCFQeUFueVNldF9DaGVjayhvdGhlcikpIHsKICAgICAgICAgUHlPYmplY3QgKnRtcCwgKnJlc3VsdDsKQEAgLTE3MjksOCArMTc4NSw4IEBACiAgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKIAogICAgIHdoaWxlIChzZXRfbmV4dChzbywgJnBvcywgJmVudHJ5KSkgewotICAgICAgICBpbnQgcnYgPSBzZXRfY29udGFpbnNfZW50cnkoKFB5U2V0T2JqZWN0ICopb3RoZXIsIGVudHJ5KTsKLSAgICAgICAgaWYgKHJ2ID09IC0xKQorICAgICAgICBydiA9IHNldF9jb250YWluc19lbnRyeSgoUHlTZXRPYmplY3QgKilvdGhlciwgZW50cnktPmtleSwgZW50cnktPmhhc2gpOworICAgICAgICBpZiAocnYgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGlmICghcnYpCiAgICAgICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CkBAIC0xODIxLDcgKzE4NzcsNyBAQAogICAgIGludCBydjsKIAogICAgIHJ2ID0gc2V0X2NvbnRhaW5zX2tleShzbywga2V5KTsKLSAgICBpZiAocnYgPT0gLTEpIHsKKyAgICBpZiAocnYgPCAwKSB7CiAgICAgICAgIGlmICghUHlTZXRfQ2hlY2soa2V5KSB8fCAhUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19UeXBlRXJyb3IpKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICBQeUVycl9DbGVhcigpOwpAQCAtMTg0MCw3ICsxODk2LDcgQEAKICAgICBsb25nIHJlc3VsdDsKIAogICAgIHJlc3VsdCA9IHNldF9jb250YWlucyhzbywga2V5KTsKLSAgICBpZiAocmVzdWx0ID09IC0xKQorICAgIGlmIChyZXN1bHQgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHJlc3VsdCk7CiB9CkBAIC0xODU0LDcgKzE5MTAsNyBAQAogICAgIGludCBydjsKIAogICAgIHJ2ID0gc2V0X2Rpc2NhcmRfa2V5KHNvLCBrZXkpOwotICAgIGlmIChydiA9PSAtMSkgeworICAgIGlmIChydiA8IDApIHsKICAgICAgICAgaWYgKCFQeVNldF9DaGVjayhrZXkpIHx8ICFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKQEAgLTE4NjMsNyArMTkxOSw3IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgcnYgPSBzZXRfZGlzY2FyZF9rZXkoc28sIHRtcGtleSk7CiAgICAgICAgIFB5X0RFQ1JFRih0bXBrZXkpOwotICAgICAgICBpZiAocnYgPT0gLTEpCisgICAgICAgIGlmIChydiA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTE4ODYsNyArMTk0Miw3IEBACiAgICAgaW50IHJ2OwogCiAgICAgcnYgPSBzZXRfZGlzY2FyZF9rZXkoc28sIGtleSk7Ci0gICAgaWYgKHJ2ID09IC0xKSB7CisgICAgaWYgKHJ2IDwgMCkgewogICAgICAgICBpZiAoIVB5U2V0X0NoZWNrKGtleSkgfHwgIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBQeUVycl9DbGVhcigpOwpAQCAtMTg5NSw3ICsxOTUxLDcgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBydiA9IHNldF9kaXNjYXJkX2tleShzbywgdG1wa2V5KTsKICAgICAgICAgUHlfREVDUkVGKHRtcGtleSk7Ci0gICAgICAgIGlmIChydiA9PSAtMSkKKyAgICAgICAgaWYgKHJ2IDwgMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBQeV9SRVRVUk5fTk9ORTsKQEAgLTE5NDksMTMgKzIwMDUsMTIgQEAKIHsKICAgICBQeU9iamVjdCAqaXRlcmFibGUgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFueVNldF9DaGVjayhzZWxmKSkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmIChQeVNldF9DaGVjayhzZWxmKSAmJiAhX1B5QXJnX05vS2V5d29yZHMoInNldCgpIiwga3dkcykpCisgICAgaWYgKGt3ZHMgIT0gTlVMTCAmJiAhX1B5QXJnX05vS2V5d29yZHMoInNldCgpIiwga3dkcykpCiAgICAgICAgIHJldHVybiAtMTsKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsIFB5X1RZUEUoc2VsZiktPnRwX25hbWUsIDAsIDEsICZpdGVyYWJsZSkpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICBzZXRfY2xlYXJfaW50ZXJuYWwoc2VsZik7CisgICAgaWYgKHNlbGYtPmZpbGwpCisgICAgICAgIHNldF9jbGVhcl9pbnRlcm5hbChzZWxmKTsKICAgICBzZWxmLT5oYXNoID0gLTE7CiAgICAgaWYgKGl0ZXJhYmxlID09IE5VTEwpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMjEyMiw3ICsyMTc3LDcgQEAKICAgICAgY29weV9kb2N9LAogICAgIHsiZGlmZmVyZW5jZSIsICAgICAgKFB5Q0Z1bmN0aW9uKXNldF9kaWZmZXJlbmNlX211bHRpLCAgICAgIE1FVEhfVkFSQVJHUywKICAgICAgZGlmZmVyZW5jZV9kb2N9LAotICAgIHsiaW50ZXJzZWN0aW9uIiwoUHlDRnVuY3Rpb24pc2V0X2ludGVyc2VjdGlvbl9tdWx0aSwgICAgICAgIE1FVEhfVkFSQVJHUywKKyAgICB7ImludGVyc2VjdGlvbiIsICAgIChQeUNGdW5jdGlvbilzZXRfaW50ZXJzZWN0aW9uX211bHRpLCAgICBNRVRIX1ZBUkFSR1MsCiAgICAgIGludGVyc2VjdGlvbl9kb2N9LAogICAgIHsiaXNkaXNqb2ludCIsICAgICAgKFB5Q0Z1bmN0aW9uKXNldF9pc2Rpc2pvaW50LCAgICBNRVRIX08sCiAgICAgIGlzZGlzam9pbnRfZG9jfSwKQEAgLTIxOTMsNyArMjI0OCw3IEBACiAgICAgKHRyYXZlcnNlcHJvYylzZXRfdHJhdmVyc2UsICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KICAgICAoaW5xdWlyeSlzZXRfY2xlYXJfaW50ZXJuYWwsICAgICAgICAvKiB0cF9jbGVhciAqLwogICAgIChyaWNoY21wZnVuYylzZXRfcmljaGNvbXBhcmUsICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCi0gICAgb2Zmc2V0b2YoUHlTZXRPYmplY3QsIHdlYWtyZWZsaXN0KSwgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIG9mZnNldG9mKFB5U2V0T2JqZWN0LCB3ZWFrcmVmbGlzdCksIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgKGdldGl0ZXJmdW5jKXNldF9pdGVyLCAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCiAgICAgZnJvemVuc2V0X21ldGhvZHMsICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwpAQCAtMjI3Nyw2ICsyMzMyLDE4IEBACiB9CiAKIGludAorUHlTZXRfQ2xlYXJGcmVlTGlzdCh2b2lkKQoreworICAgIHJldHVybiAwOworfQorCit2b2lkCitQeVNldF9GaW5pKHZvaWQpCit7CisgICAgUHlfQ0xFQVIoZW1wdHlmcm96ZW5zZXQpOworfQorCitpbnQKIF9QeVNldF9OZXh0RW50cnkoUHlPYmplY3QgKnNldCwgUHlfc3NpemVfdCAqcG9zLCBQeU9iamVjdCAqKmtleSwgUHlfaGFzaF90ICpoYXNoKQogewogICAgIHNldGVudHJ5ICplbnRyeTsKQEAgLTIzOTksNyArMjQ2Niw3IEBACiAgICAgLyogRXhlcmNpc2UgZGlyZWN0IGl0ZXJhdGlvbiAqLwogICAgIGkgPSAwLCBjb3VudCA9IDA7CiAgICAgd2hpbGUgKF9QeVNldF9OZXh0RW50cnkoKFB5T2JqZWN0ICopZHVwLCAmaSwgJngsICZoYXNoKSkgewotICAgICAgICBzID0gX1B5VW5pY29kZV9Bc1N0cmluZyh4KTsKKyAgICAgICAgcyA9IFB5VW5pY29kZV9Bc1VURjgoeCk7CiAgICAgICAgIGFzc2VydChzICYmIChzWzBdID09ICdhJyB8fCBzWzBdID09ICdiJyB8fCBzWzBdID09ICdjJykpOwogICAgICAgICBjb3VudCsrOwogICAgIH0KZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL2NvZGVjcy5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvY29kZWNzLmgKaW5kZXggMGZjNmI1OC4uNDNmMmYzMiAxMDA2NDQKLS0tIGEvT2JqZWN0cy9zdHJpbmdsaWIvY29kZWNzLmgKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvY29kZWNzLmgKQEAgLTEsNiArMSw4IEBACiAvKiBzdHJpbmdsaWI6IGNvZGVjIGltcGxlbWVudGF0aW9ucyAqLwogCi0jaWYgU1RSSU5HTElCX0lTX1VOSUNPREUKKyNpZiAhU1RSSU5HTElCX0lTX1VOSUNPREUKKyMgZXJyb3IgImNvZGVjcy5oIGlzIHNwZWNpZmljIHRvIFVuaWNvZGUiCisjZW5kaWYKIAogLyogTWFzayB0byBxdWlja2x5IGNoZWNrIHdoZXRoZXIgYSBDICdsb25nJyBjb250YWlucyBhCiAgICBub24tQVNDSUksIFVURjgtZW5jb2RlZCBjaGFyLiAqLwpAQCAtMjYwLDUyICsyNjIsMzQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKLSNkZWZpbmUgTUFYX1NIT1JUX1VOSUNIQVJTIDMwMCAgLyogbGFyZ2VzdCBzaXplIHdlJ2xsIGRvIG9uIHRoZSBzdGFjayAqLwotCi0gICAgUHlfc3NpemVfdCBpOyAgICAgICAgICAgICAgICAvKiBpbmRleCBpbnRvIHMgb2YgbmV4dCBpbnB1dCBieXRlICovCi0gICAgUHlPYmplY3QgKnJlc3VsdDsgICAgICAgICAgICAvKiByZXN1bHQgc3RyaW5nIG9iamVjdCAqLworICAgIFB5X3NzaXplX3QgaTsgICAgICAgICAgICAgICAgLyogaW5kZXggaW50byBkYXRhIG9mIG5leHQgaW5wdXQgY2hhcmFjdGVyICovCiAgICAgY2hhciAqcDsgICAgICAgICAgICAgICAgICAgICAvKiBuZXh0IGZyZWUgYnl0ZSBpbiBvdXRwdXQgYnVmZmVyICovCi0gICAgUHlfc3NpemVfdCBuYWxsb2NhdGVkOyAgICAgIC8qIG51bWJlciBvZiByZXN1bHQgYnl0ZXMgYWxsb2NhdGVkICovCi0gICAgUHlfc3NpemVfdCBubmVlZGVkOyAgICAgICAgICAgIC8qIG51bWJlciBvZiByZXN1bHQgYnl0ZXMgbmVlZGVkICovCiAjaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID4gMQotICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOworICAgIFB5T2JqZWN0ICplcnJvcl9oYW5kbGVyX29iaiA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnJlcCA9IE5VTEw7CisgICAgX1B5X2Vycm9yX2hhbmRsZXIgZXJyb3JfaGFuZGxlciA9IF9QeV9FUlJPUl9VTktOT1dOOwogI2VuZGlmCiAjaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID09IDEKICAgICBjb25zdCBQeV9zc2l6ZV90IG1heF9jaGFyX3NpemUgPSAyOwotICAgIGNoYXIgc3RhY2tidWZbTUFYX1NIT1JUX1VOSUNIQVJTICogMl07CiAjZWxpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPT0gMgogICAgIGNvbnN0IFB5X3NzaXplX3QgbWF4X2NoYXJfc2l6ZSA9IDM7Ci0gICAgY2hhciBzdGFja2J1ZltNQVhfU0hPUlRfVU5JQ0hBUlMgKiAzXTsKICNlbHNlIC8qICBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPT0gNCAqLwogICAgIGNvbnN0IFB5X3NzaXplX3QgbWF4X2NoYXJfc2l6ZSA9IDQ7Ci0gICAgY2hhciBzdGFja2J1ZltNQVhfU0hPUlRfVU5JQ0hBUlMgKiA0XTsKICNlbmRpZgorICAgIF9QeUJ5dGVzV3JpdGVyIHdyaXRlcjsKIAogICAgIGFzc2VydChzaXplID49IDApOworICAgIF9QeUJ5dGVzV3JpdGVyX0luaXQoJndyaXRlcik7CiAKLSAgICBpZiAoc2l6ZSA8PSBNQVhfU0hPUlRfVU5JQ0hBUlMpIHsKLSAgICAgICAgLyogV3JpdGUgaW50byB0aGUgc3RhY2sgYnVmZmVyOyBuYWxsb2NhdGVkIGNhbid0IG92ZXJmbG93LgotICAgICAgICAgKiBBdCB0aGUgZW5kLCB3ZSdsbCBhbGxvY2F0ZSBleGFjdGx5IGFzIG11Y2ggaGVhcCBzcGFjZSBhcyBpdAotICAgICAgICAgKiB0dXJucyBvdXQgd2UgbmVlZC4KLSAgICAgICAgICovCi0gICAgICAgIG5hbGxvY2F0ZWQgPSBQeV9TQUZFX0RPV05DQVNUKHNpemVvZihzdGFja2J1ZiksIHNpemVfdCwgaW50KTsKLSAgICAgICAgcmVzdWx0ID0gTlVMTDsgICAvKiB3aWxsIGFsbG9jYXRlIGFmdGVyIHdlJ3JlIGRvbmUgKi8KLSAgICAgICAgcCA9IHN0YWNrYnVmOworICAgIGlmIChzaXplID4gUFlfU1NJWkVfVF9NQVggLyBtYXhfY2hhcl9zaXplKSB7CisgICAgICAgIC8qIGludGVnZXIgb3ZlcmZsb3cgKi8KKyAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgfQotICAgIGVsc2UgewotICAgICAgICBpZiAoc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC8gbWF4X2NoYXJfc2l6ZSkgewotICAgICAgICAgICAgLyogaW50ZWdlciBvdmVyZmxvdyAqLwotICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIH0KLSAgICAgICAgLyogT3ZlcmFsbG9jYXRlIG9uIHRoZSBoZWFwLCBhbmQgZ2l2ZSB0aGUgZXhjZXNzIGJhY2sgYXQgdGhlIGVuZC4gKi8KLSAgICAgICAgbmFsbG9jYXRlZCA9IHNpemUgKiBtYXhfY2hhcl9zaXplOwotICAgICAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIG5hbGxvY2F0ZWQpOwotICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgcCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7Ci0gICAgfQorCisgICAgcCA9IF9QeUJ5dGVzV3JpdGVyX0FsbG9jKCZ3cml0ZXIsIHNpemUgKiBtYXhfY2hhcl9zaXplKTsKKyAgICBpZiAocCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOykgewogICAgICAgICBQeV9VQ1M0IGNoID0gZGF0YVtpKytdOwpAQCAtMzI2LDcyICszMTAsMTE3IEBACiAgICAgICAgIH0KICNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPiAxCiAgICAgICAgIGVsc2UgaWYgKFB5X1VOSUNPREVfSVNfU1VSUk9HQVRFKGNoKSkgewotICAgICAgICAgICAgUHlfc3NpemVfdCBuZXdwb3M7Ci0gICAgICAgICAgICBQeV9zc2l6ZV90IHJlcHNpemUsIGssIHN0YXJ0cG9zOwotICAgICAgICAgICAgc3RhcnRwb3MgPSBpLTE7Ci0gICAgICAgICAgICByZXAgPSB1bmljb2RlX2VuY29kZV9jYWxsX2Vycm9yaGFuZGxlcigKLSAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwgInV0Zi04IiwgInN1cnJvZ2F0ZXMgbm90IGFsbG93ZWQiLAotICAgICAgICAgICAgICAgICAgdW5pY29kZSwgJmV4Yywgc3RhcnRwb3MsIHN0YXJ0cG9zKzEsICZuZXdwb3MpOwotICAgICAgICAgICAgaWYgKCFyZXApCi0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLQotICAgICAgICAgICAgaWYgKFB5Qnl0ZXNfQ2hlY2socmVwKSkKLSAgICAgICAgICAgICAgICByZXBzaXplID0gUHlCeXRlc19HRVRfU0laRShyZXApOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlcHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXApOwotCi0gICAgICAgICAgICBpZiAocmVwc2l6ZSA+IG1heF9jaGFyX3NpemUpIHsKLSAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG9mZnNldDsKLQotICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gcCAtIHN0YWNrYnVmOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gcCAtIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAobmFsbG9jYXRlZCA+IFBZX1NTSVpFX1RfTUFYIC0gcmVwc2l6ZSArIG1heF9jaGFyX3NpemUpIHsKLSAgICAgICAgICAgICAgICAgICAgLyogaW50ZWdlciBvdmVyZmxvdyAqLwotICAgICAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBuYWxsb2NhdGVkICs9IHJlcHNpemUgLSBtYXhfY2hhcl9zaXplOwotICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXN1bHQsIG5hbGxvY2F0ZWQpIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBuYWxsb2NhdGVkKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgUHlfTUVNQ1BZKFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCksIHN0YWNrYnVmLCBvZmZzZXQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBwID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KSArIG9mZnNldDsKKyAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnRwb3MsIGVuZHBvcywgbmV3cG9zOworICAgICAgICAgICAgUHlfc3NpemVfdCBrOworICAgICAgICAgICAgaWYgKGVycm9yX2hhbmRsZXIgPT0gX1B5X0VSUk9SX1VOS05PV04pIHsKKyAgICAgICAgICAgICAgICBlcnJvcl9oYW5kbGVyID0gZ2V0X2Vycm9yX2hhbmRsZXIoZXJyb3JzKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKFB5Qnl0ZXNfQ2hlY2socmVwKSkgewotICAgICAgICAgICAgICAgIGNoYXIgKnByZXAgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXApOwotICAgICAgICAgICAgICAgIGZvcihrID0gcmVwc2l6ZTsgayA+IDA7IGstLSkKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9ICpwcmVwKys7Ci0gICAgICAgICAgICB9IGVsc2UgLyogcmVwIGlzIHVuaWNvZGUgKi8gewotICAgICAgICAgICAgICAgIGVudW0gUHlVbmljb2RlX0tpbmQgcmVwa2luZDsKLSAgICAgICAgICAgICAgICB2b2lkICpyZXBkYXRhOworICAgICAgICAgICAgc3RhcnRwb3MgPSBpLTE7CisgICAgICAgICAgICBlbmRwb3MgPSBzdGFydHBvcysxOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShyZXApIDwgMCkKKyAgICAgICAgICAgIHdoaWxlICgoZW5kcG9zIDwgc2l6ZSkgJiYgUHlfVU5JQ09ERV9JU19TVVJST0dBVEUoZGF0YVtlbmRwb3NdKSkKKyAgICAgICAgICAgICAgICBlbmRwb3MrKzsKKworICAgICAgICAgICAgLyogT25seSBvdmVyYWxsb2NhdGUgdGhlIGJ1ZmZlciBpZiBpdCdzIG5vdCB0aGUgbGFzdCB3cml0ZSAqLworICAgICAgICAgICAgd3JpdGVyLm92ZXJhbGxvY2F0ZSA9IChlbmRwb3MgPCBzaXplKTsKKworICAgICAgICAgICAgc3dpdGNoIChlcnJvcl9oYW5kbGVyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgY2FzZSBfUHlfRVJST1JfUkVQTEFDRToKKyAgICAgICAgICAgICAgICBtZW1zZXQocCwgJz8nLCBlbmRwb3MgLSBzdGFydHBvcyk7CisgICAgICAgICAgICAgICAgcCArPSAoZW5kcG9zIC0gc3RhcnRwb3MpOworICAgICAgICAgICAgICAgIC8qIGZhbGwgdGhyb3VnaCB0aGUgaWdub3JlIGhhbmRsZXIgKi8KKyAgICAgICAgICAgIGNhc2UgX1B5X0VSUk9SX0lHTk9SRToKKyAgICAgICAgICAgICAgICBpICs9IChlbmRwb3MgLSBzdGFydHBvcyAtIDEpOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIF9QeV9FUlJPUl9TVVJST0dBVEVQQVNTOgorICAgICAgICAgICAgICAgIGZvciAoaz1zdGFydHBvczsgazxlbmRwb3M7IGsrKykgeworICAgICAgICAgICAgICAgICAgICBjaCA9IGRhdGFba107CisgICAgICAgICAgICAgICAgICAgICpwKysgPSAoY2hhcikoMHhlMCB8IChjaCA+PiAxMikpOworICAgICAgICAgICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4ODAgfCAoKGNoID4+IDYpICYgMHgzZikpOworICAgICAgICAgICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4ODAgfCAoY2ggJiAweDNmKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGkgKz0gKGVuZHBvcyAtIHN0YXJ0cG9zIC0gMSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgX1B5X0VSUk9SX0JBQ0tTTEFTSFJFUExBQ0U6CisgICAgICAgICAgICAgICAgLyogc3VidHJhY3QgcHJlYWxsb2NhdGVkIGJ5dGVzICovCisgICAgICAgICAgICAgICAgd3JpdGVyLm1pbl9zaXplIC09IG1heF9jaGFyX3NpemUgKiAoZW5kcG9zIC0gc3RhcnRwb3MpOworICAgICAgICAgICAgICAgIHAgPSBiYWNrc2xhc2hyZXBsYWNlKCZ3cml0ZXIsIHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZSwgc3RhcnRwb3MsIGVuZHBvcyk7CisgICAgICAgICAgICAgICAgaWYgKHAgPT0gTlVMTCkKICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICByZXBraW5kID0gUHlVbmljb2RlX0tJTkQocmVwKTsKLSAgICAgICAgICAgICAgICByZXBkYXRhID0gUHlVbmljb2RlX0RBVEEocmVwKTsKKyAgICAgICAgICAgICAgICBpICs9IChlbmRwb3MgLSBzdGFydHBvcyAtIDEpOworICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICAgICAgZm9yKGs9MDsgazxyZXBzaXplOyBrKyspIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfVUNTNCBjID0gUHlVbmljb2RlX1JFQUQocmVwa2luZCwgcmVwZGF0YSwgayk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgweDgwIDw9IGMpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oJmV4YywgInV0Zi04IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaS0xLCBpLAorICAgICAgICAgICAgY2FzZSBfUHlfRVJST1JfWE1MQ0hBUlJFRlJFUExBQ0U6CisgICAgICAgICAgICAgICAgLyogc3VidHJhY3QgcHJlYWxsb2NhdGVkIGJ5dGVzICovCisgICAgICAgICAgICAgICAgd3JpdGVyLm1pbl9zaXplIC09IG1heF9jaGFyX3NpemUgKiAoZW5kcG9zIC0gc3RhcnRwb3MpOworICAgICAgICAgICAgICAgIHAgPSB4bWxjaGFycmVmcmVwbGFjZSgmd3JpdGVyLCBwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmljb2RlLCBzdGFydHBvcywgZW5kcG9zKTsKKyAgICAgICAgICAgICAgICBpZiAocCA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIGkgKz0gKGVuZHBvcyAtIHN0YXJ0cG9zIC0gMSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgX1B5X0VSUk9SX1NVUlJPR0FURUVTQ0FQRToKKyAgICAgICAgICAgICAgICBmb3IgKGs9c3RhcnRwb3M7IGs8ZW5kcG9zOyBrKyspIHsKKyAgICAgICAgICAgICAgICAgICAgY2ggPSBkYXRhW2tdOworICAgICAgICAgICAgICAgICAgICBpZiAoISgweERDODAgPD0gY2ggJiYgY2ggPD0gMHhEQ0ZGKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAqcCsrID0gKGNoYXIpKGNoICYgMHhmZik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChrID49IGVuZHBvcykgeworICAgICAgICAgICAgICAgICAgICBpICs9IChlbmRwb3MgLSBzdGFydHBvcyAtIDEpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc3RhcnRwb3MgPSBrOworICAgICAgICAgICAgICAgIGFzc2VydChzdGFydHBvcyA8IGVuZHBvcyk7CisgICAgICAgICAgICAgICAgLyogZmFsbCB0aHJvdWdoIHRoZSBkZWZhdWx0IGhhbmRsZXIgKi8KKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmVwID0gdW5pY29kZV9lbmNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoCisgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JfaGFuZGxlcl9vYmosICJ1dGYtOCIsICJzdXJyb2dhdGVzIG5vdCBhbGxvd2VkIiwKKyAgICAgICAgICAgICAgICAgICAgICB1bmljb2RlLCAmZXhjLCBzdGFydHBvcywgZW5kcG9zLCAmbmV3cG9zKTsKKyAgICAgICAgICAgICAgICBpZiAoIXJlcCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKworICAgICAgICAgICAgICAgIC8qIHN1YnRyYWN0IHByZWFsbG9jYXRlZCBieXRlcyAqLworICAgICAgICAgICAgICAgIHdyaXRlci5taW5fc2l6ZSAtPSBtYXhfY2hhcl9zaXplICogKG5ld3BvcyAtIHN0YXJ0cG9zKTsKKworICAgICAgICAgICAgICAgIGlmIChQeUJ5dGVzX0NoZWNrKHJlcCkpIHsKKyAgICAgICAgICAgICAgICAgICAgcCA9IF9QeUJ5dGVzV3JpdGVyX1dyaXRlQnl0ZXMoJndyaXRlciwgcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcocmVwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19HRVRfU0laRShyZXApKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8qIHJlcCBpcyB1bmljb2RlICovCisgICAgICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocmVwKSA8IDApCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworCisgICAgICAgICAgICAgICAgICAgIGlmICghUHlVbmljb2RlX0lTX0FTQ0lJKHJlcCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oJmV4YywgInV0Zi04IiwgdW5pY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRwb3MsIGVuZHBvcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1cnJvZ2F0ZXMgbm90IGFsbG93ZWQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IChjaGFyKWM7CisKKyAgICAgICAgICAgICAgICAgICAgcCA9IF9QeUJ5dGVzV3JpdGVyX1dyaXRlQnl0ZXMoJndyaXRlciwgcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0RBVEEocmVwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgocmVwKSk7CiAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKHAgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICBQeV9DTEVBUihyZXApOworCisgICAgICAgICAgICAgICAgaSA9IG5ld3BvczsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5X0NMRUFSKHJlcCk7CisKKyAgICAgICAgICAgIC8qIElmIG92ZXJhbGxvY2F0aW9uIHdhcyBkaXNhYmxlZCwgZW5zdXJlIHRoYXQgaXQgd2FzIHRoZSBsYXN0CisgICAgICAgICAgICAgICB3cml0ZS4gT3RoZXJ3aXNlLCB3ZSBtaXNzZWQgYW4gb3B0aW1pemF0aW9uICovCisgICAgICAgICAgICBhc3NlcnQod3JpdGVyLm92ZXJhbGxvY2F0ZSB8fCBpID09IHNpemUpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPiAyCkBAIC00MTYsMzUgKzQ0NSwyMCBAQAogI2VuZGlmIC8qIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA+IDEgKi8KICAgICB9CiAKLSAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKLSAgICAgICAgLyogVGhpcyB3YXMgc3RhY2sgYWxsb2NhdGVkLiAqLwotICAgICAgICBubmVlZGVkID0gcCAtIHN0YWNrYnVmOwotICAgICAgICBhc3NlcnQobm5lZWRlZCA8PSBuYWxsb2NhdGVkKTsKLSAgICAgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShzdGFja2J1Ziwgbm5lZWRlZCk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICAvKiBDdXQgYmFjayB0byBzaXplIGFjdHVhbGx5IG5lZWRlZC4gKi8KLSAgICAgICAgbm5lZWRlZCA9IHAgLSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOwotICAgICAgICBhc3NlcnQobm5lZWRlZCA8PSBuYWxsb2NhdGVkKTsKLSAgICAgICAgX1B5Qnl0ZXNfUmVzaXplKCZyZXN1bHQsIG5uZWVkZWQpOwotICAgIH0KLQogI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA+IDEKLSAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CisgICAgUHlfWERFQ1JFRihlcnJvcl9oYW5kbGVyX29iaik7CiAgICAgUHlfWERFQ1JFRihleGMpOwogI2VuZGlmCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gX1B5Qnl0ZXNXcml0ZXJfRmluaXNoKCZ3cml0ZXIsIHApOwogCiAjaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID4gMQogIGVycm9yOgogICAgIFB5X1hERUNSRUYocmVwKTsKLSAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CisgICAgUHlfWERFQ1JFRihlcnJvcl9oYW5kbGVyX29iaik7CiAgICAgUHlfWERFQ1JFRihleGMpOwotICAgIFB5X1hERUNSRUYocmVzdWx0KTsKKyAgICBfUHlCeXRlc1dyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOwogICAgIHJldHVybiBOVUxMOwogI2VuZGlmCi0KLSN1bmRlZiBNQVhfU0hPUlRfVU5JQ0hBUlMKIH0KIAogLyogVGhlIHBhdHRlcm4gZm9yIGNvbnN0cnVjdGluZyBVQ1MyLXJlcGVhdGVkIG1hc2tzLiAqLwpAQCAtODA2LDUgKzgyMCwzIEBACiAjdW5kZWYgU1dBQjQKIAogI2VuZGlmCi0KLSNlbmRpZiAvKiBTVFJJTkdMSUJfSVNfVU5JQ09ERSAqLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvY3R5cGUuaCBiL09iamVjdHMvc3RyaW5nbGliL2N0eXBlLmgKaW5kZXggNzM5Y2YzZC4uZjA1NDYyNSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9zdHJpbmdsaWIvY3R5cGUuaAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi9jdHlwZS5oCkBAIC0xLDUgKzEsNiBAQAotLyogTk9URTogdGhpcyBBUEkgaXMgLU9OTFktIGZvciB1c2Ugd2l0aCBzaW5nbGUgYnl0ZSBjaGFyYWN0ZXIgc3RyaW5ncy4gKi8KLS8qIERvIG5vdCB1c2UgaXQgd2l0aCBVbmljb2RlLiAqLworI2lmIFNUUklOR0xJQl9JU19VTklDT0RFCisjIGVycm9yICJjdHlwZS5oIG9ubHkgY29tcGF0aWJsZSB3aXRoIGJ5dGUtd2lzZSBzdHJpbmdzIgorI2VuZGlmCiAKICNpbmNsdWRlICJieXRlc19tZXRob2RzLmgiCiAKZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL2Zhc3RzZWFyY2guaCBiL09iamVjdHMvc3RyaW5nbGliL2Zhc3RzZWFyY2guaAppbmRleCBjZGE2OGU3Li45ODE2NWFkIDEwMDY0NAotLS0gYS9PYmplY3RzL3N0cmluZ2xpYi9mYXN0c2VhcmNoLmgKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvZmFzdHNlYXJjaC5oCkBAIC0zMiw1MiArMzIsOTggQEAKICNkZWZpbmUgU1RSSU5HTElCX0JMT09NKG1hc2ssIGNoKSAgICAgXAogICAgICgobWFzayAmICAoMVVMIDw8ICgoY2gpICYgKFNUUklOR0xJQl9CTE9PTV9XSURUSCAtMSkpKSkpCiAKK1B5X0xPQ0FMX0lOTElORShQeV9zc2l6ZV90KQorU1RSSU5HTElCKGZpbmRfY2hhcikoY29uc3QgU1RSSU5HTElCX0NIQVIqIHMsIFB5X3NzaXplX3QgbiwgU1RSSU5HTElCX0NIQVIgY2gpCit7CisgICAgY29uc3QgU1RSSU5HTElCX0NIQVIgKnAsICplOworCisgICAgcCA9IHM7CisgICAgZSA9IHMgKyBuOworICAgIGlmIChuID4gMTApIHsKKyNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPT0gMQorICAgICAgICBwID0gbWVtY2hyKHMsIGNoLCBuKTsKKyAgICAgICAgaWYgKHAgIT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAocCAtIHMpOworICAgICAgICByZXR1cm4gLTE7CisjZWxzZQorICAgICAgICAvKiB1c2UgbWVtY2hyIGlmIHdlIGNhbiBjaG9vc2UgYSBuZWVkbGUgd2l0aG91dCB0d28gbWFueSBsaWtlbHkKKyAgICAgICAgICAgZmFsc2UgcG9zaXRpdmVzICovCisgICAgICAgIHVuc2lnbmVkIGNoYXIgbmVlZGxlID0gY2ggJiAweGZmOworICAgICAgICAvKiBJZiBsb29raW5nIGZvciBhIG11bHRpcGxlIG9mIDI1Niwgd2UnZCBoYXZlIHRvbworICAgICAgICAgICBtYW55IGZhbHNlIHBvc2l0aXZlcyBsb29raW5nIGZvciB0aGUgJ1wwJyBieXRlIGluIFVDUzIKKyAgICAgICAgICAgYW5kIFVDUzQgcmVwcmVzZW50YXRpb25zLiAqLworICAgICAgICBpZiAobmVlZGxlICE9IDApIHsKKyAgICAgICAgICAgIHdoaWxlIChwIDwgZSkgeworICAgICAgICAgICAgICAgIHZvaWQgKmNhbmRpZGF0ZSA9IG1lbWNocihwLCBuZWVkbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlIC0gcCkgKiBzaXplb2YoU1RSSU5HTElCX0NIQVIpKTsKKyAgICAgICAgICAgICAgICBpZiAoY2FuZGlkYXRlID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgICAgICBwID0gKGNvbnN0IFNUUklOR0xJQl9DSEFSICopCisgICAgICAgICAgICAgICAgICAgICAgICBfUHlfQUxJR05fRE9XTihjYW5kaWRhdGUsIHNpemVvZihTVFJJTkdMSUJfQ0hBUikpOworICAgICAgICAgICAgICAgIGlmICgqcCA9PSBjaCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChwIC0gcyk7CisgICAgICAgICAgICAgICAgLyogRmFsc2UgcG9zaXRpdmUgKi8KKyAgICAgICAgICAgICAgICBwKys7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyNlbmRpZgorICAgIH0KKyAgICB3aGlsZSAocCA8IGUpIHsKKyAgICAgICAgaWYgKCpwID09IGNoKQorICAgICAgICAgICAgcmV0dXJuIChwIC0gcyk7CisgICAgICAgIHArKzsKKyAgICB9CisgICAgcmV0dXJuIC0xOworfQogCiBQeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkKLVNUUklOR0xJQihmYXN0c2VhcmNoX21lbWNocl8xY2hhcikoY29uc3QgU1RSSU5HTElCX0NIQVIqIHMsIFB5X3NzaXplX3QgbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1RSSU5HTElCX0NIQVIgY2gsIHVuc2lnbmVkIGNoYXIgbmVlZGxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbW9kZSkKK1NUUklOR0xJQihyZmluZF9jaGFyKShjb25zdCBTVFJJTkdMSUJfQ0hBUiogcywgUHlfc3NpemVfdCBuLCBTVFJJTkdMSUJfQ0hBUiBjaCkKIHsKLSAgICBpZiAobW9kZSA9PSBGQVNUX1NFQVJDSCkgewotICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiAqcHRyID0gczsKLSAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIgKmUgPSBzICsgbjsKLSAgICAgICAgd2hpbGUgKHB0ciA8IGUpIHsKLSAgICAgICAgICAgIHZvaWQgKmNhbmRpZGF0ZSA9IG1lbWNocigoY29uc3Qgdm9pZCAqKSBwdHIsIG5lZWRsZSwgKGUgLSBwdHIpICogc2l6ZW9mKFNUUklOR0xJQl9DSEFSKSk7Ci0gICAgICAgICAgICBpZiAoY2FuZGlkYXRlID09IE5VTEwpCi0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgcHRyID0gKGNvbnN0IFNUUklOR0xJQl9DSEFSICopIF9QeV9BTElHTl9ET1dOKGNhbmRpZGF0ZSwgc2l6ZW9mKFNUUklOR0xJQl9DSEFSKSk7Ci0gICAgICAgICAgICBpZiAoc2l6ZW9mKFNUUklOR0xJQl9DSEFSKSA9PSAxIHx8ICpwdHIgPT0gY2gpCi0gICAgICAgICAgICAgICAgcmV0dXJuIChwdHIgLSBzKTsKLSAgICAgICAgICAgIC8qIEZhbHNlIHBvc2l0aXZlICovCi0gICAgICAgICAgICBwdHIrKzsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQorICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSICpwOwogI2lmZGVmIEhBVkVfTUVNUkNIUgogICAgIC8qIG1lbXJjaHIoKSBpcyBhIEdOVSBleHRlbnNpb24sIGF2YWlsYWJsZSBzaW5jZSBnbGliYyAyLjEuOTEuCiAgICAgICAgaXQgZG9lc24ndCBzZWVtIGFzIG9wdGltaXplZCBhcyBtZW1jaHIoKSwgYnV0IGlzIHN0aWxsIHF1aXRlCi0gICAgICAgZmFzdGVyIHRoYW4gb3VyIGhhbmQtd3JpdHRlbiBsb29wIGluIEZBU1RTRUFSQ0ggYmVsb3cgKi8KLSAgICBlbHNlIGlmIChtb2RlID09IEZBU1RfUlNFQVJDSCkgewotICAgICAgICB3aGlsZSAobiA+IDApIHsKLSAgICAgICAgICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSICpmb3VuZDsKLSAgICAgICAgICAgIHZvaWQgKmNhbmRpZGF0ZSA9IG1lbXJjaHIoKGNvbnN0IHZvaWQgKikgcywgbmVlZGxlLCBuICogc2l6ZW9mKFNUUklOR0xJQl9DSEFSKSk7Ci0gICAgICAgICAgICBpZiAoY2FuZGlkYXRlID09IE5VTEwpCi0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgZm91bmQgPSAoY29uc3QgU1RSSU5HTElCX0NIQVIgKikgX1B5X0FMSUdOX0RPV04oY2FuZGlkYXRlLCBzaXplb2YoU1RSSU5HTElCX0NIQVIpKTsKLSAgICAgICAgICAgIG4gPSBmb3VuZCAtIHM7Ci0gICAgICAgICAgICBpZiAoc2l6ZW9mKFNUUklOR0xJQl9DSEFSKSA9PSAxIHx8ICpmb3VuZCA9PSBjaCkKLSAgICAgICAgICAgICAgICByZXR1cm4gbjsKLSAgICAgICAgICAgIC8qIEZhbHNlIHBvc2l0aXZlICovCi0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSNlbmRpZgotICAgIGVsc2UgewotICAgICAgICBhc3NlcnQoMCk7IC8qIFNob3VsZCBuZXZlciBnZXQgaGVyZSAqLwotICAgICAgICByZXR1cm4gMDsKLSAgICB9CisgICAgICAgZmFzdGVyIHRoYW4gb3VyIGhhbmQtd3JpdHRlbiBsb29wIGJlbG93ICovCiAKLSN1bmRlZiBET19NRU1DSFIKKyAgICBpZiAobiA+IDEwKSB7CisjaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID09IDEKKyAgICAgICAgcCA9IG1lbXJjaHIocywgY2gsIG4pOworICAgICAgICBpZiAocCAhPSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIChwIC0gcyk7CisgICAgICAgIHJldHVybiAtMTsKKyNlbHNlCisgICAgICAgIC8qIHVzZSBtZW1yY2hyIGlmIHdlIGNhbiBjaG9vc2UgYSBuZWVkbGUgd2l0aG91dCB0d28gbWFueSBsaWtlbHkKKyAgICAgICAgICAgZmFsc2UgcG9zaXRpdmVzICovCisgICAgICAgIHVuc2lnbmVkIGNoYXIgbmVlZGxlID0gY2ggJiAweGZmOworICAgICAgICAvKiBJZiBsb29raW5nIGZvciBhIG11bHRpcGxlIG9mIDI1Niwgd2UnZCBoYXZlIHRvbworICAgICAgICAgICBtYW55IGZhbHNlIHBvc2l0aXZlcyBsb29raW5nIGZvciB0aGUgJ1wwJyBieXRlIGluIFVDUzIKKyAgICAgICAgICAgYW5kIFVDUzQgcmVwcmVzZW50YXRpb25zLiAqLworICAgICAgICBpZiAobmVlZGxlICE9IDApIHsKKyAgICAgICAgICAgIHdoaWxlIChuID4gMCkgeworICAgICAgICAgICAgICAgIHZvaWQgKmNhbmRpZGF0ZSA9IG1lbXJjaHIocywgbmVlZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiAqIHNpemVvZihTVFJJTkdMSUJfQ0hBUikpOworICAgICAgICAgICAgICAgIGlmIChjYW5kaWRhdGUgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgIHAgPSAoY29uc3QgU1RSSU5HTElCX0NIQVIgKikKKyAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9BTElHTl9ET1dOKGNhbmRpZGF0ZSwgc2l6ZW9mKFNUUklOR0xJQl9DSEFSKSk7CisgICAgICAgICAgICAgICAgbiA9IHAgLSBzOworICAgICAgICAgICAgICAgIGlmICgqcCA9PSBjaCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG47CisgICAgICAgICAgICAgICAgLyogRmFsc2UgcG9zaXRpdmUgKi8KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgfQorI2VuZGlmICAvKiBIQVZFX01FTVJDSFIgKi8KKyAgICBwID0gcyArIG47CisgICAgd2hpbGUgKHAgPiBzKSB7CisgICAgICAgIHAtLTsKKyAgICAgICAgaWYgKCpwID09IGNoKQorICAgICAgICAgICAgcmV0dXJuIChwIC0gcyk7CisgICAgfQorICAgIHJldHVybiAtMTsKIH0KIAogUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCkBAIC05OSwyNSArMTQ1LDExIEBACiAgICAgICAgIGlmIChtIDw9IDApCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIC8qIHVzZSBzcGVjaWFsIGNhc2UgZm9yIDEtY2hhcmFjdGVyIHN0cmluZ3MgKi8KLSAgICAgICAgaWYgKG4gPiAxMCAmJiAobW9kZSA9PSBGQVNUX1NFQVJDSAotI2lmZGVmIEhBVkVfTUVNUkNIUgotICAgICAgICAgICAgICAgICAgICB8fCBtb2RlID09IEZBU1RfUlNFQVJDSAotI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgICkpIHsKLSAgICAgICAgICAgIC8qIHVzZSBtZW1jaHIgaWYgd2UgY2FuIGNob29zZSBhIG5lZWRsZSB3aXRob3V0IHR3byBtYW55IGxpa2VseQotICAgICAgICAgICAgICAgZmFsc2UgcG9zaXRpdmVzICovCi0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyIG5lZWRsZTsKLSAgICAgICAgICAgIG5lZWRsZSA9IHBbMF0gJiAweGZmOwotI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA+IDEKLSAgICAgICAgICAgIC8qIElmIGxvb2tpbmcgZm9yIGEgbXVsdGlwbGUgb2YgMjU2LCB3ZSdkIGhhdmUgdG9vCi0gICAgICAgICAgICAgICBtYW55IGZhbHNlIHBvc2l0aXZlcyBsb29raW5nIGZvciB0aGUgJ1wwJyBieXRlIGluIFVDUzIKLSAgICAgICAgICAgICAgIGFuZCBVQ1M0IHJlcHJlc2VudGF0aW9ucy4gKi8KLSAgICAgICAgICAgIGlmIChuZWVkbGUgIT0gMCkKLSNlbmRpZgotICAgICAgICAgICAgICAgIHJldHVybiBTVFJJTkdMSUIoZmFzdHNlYXJjaF9tZW1jaHJfMWNoYXIpCi0gICAgICAgICAgICAgICAgICAgICAgIChzLCBuLCBwWzBdLCBuZWVkbGUsIG1vZGUpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChtb2RlID09IEZBU1RfQ09VTlQpIHsKKyAgICAgICAgaWYgKG1vZGUgPT0gRkFTVF9TRUFSQ0gpCisgICAgICAgICAgICByZXR1cm4gU1RSSU5HTElCKGZpbmRfY2hhcikocywgbiwgcFswXSk7CisgICAgICAgIGVsc2UgaWYgKG1vZGUgPT0gRkFTVF9SU0VBUkNIKQorICAgICAgICAgICAgcmV0dXJuIFNUUklOR0xJQihyZmluZF9jaGFyKShzLCBuLCBwWzBdKTsKKyAgICAgICAgZWxzZSB7ICAvKiBGQVNUX0NPVU5UICovCiAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKQogICAgICAgICAgICAgICAgIGlmIChzW2ldID09IHBbMF0pIHsKICAgICAgICAgICAgICAgICAgICAgY291bnQrKzsKQEAgLTEyNSwxNCArMTU3LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYXhjb3VudDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gY291bnQ7Ci0gICAgICAgIH0gZWxzZSBpZiAobW9kZSA9PSBGQVNUX1NFQVJDSCkgewotICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykKLSAgICAgICAgICAgICAgICBpZiAoc1tpXSA9PSBwWzBdKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gaTsKLSAgICAgICAgfSBlbHNlIHsgICAgLyogRkFTVF9SU0VBUkNIICovCi0gICAgICAgICAgICBmb3IgKGkgPSBuIC0gMTsgaSA+IC0xOyBpLS0pCi0gICAgICAgICAgICAgICAgaWYgKHNbaV0gPT0gcFswXSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL2ZpbmQuaCBiL09iamVjdHMvc3RyaW5nbGliL2ZpbmQuaAppbmRleCAxNDgxNWY2Li41MDliOTI5IDEwMDY0NAotLS0gYS9PYmplY3RzL3N0cmluZ2xpYi9maW5kLmgKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvZmluZC5oCkBAIC0xMTcsODUgKzExNywzIEBACiB9CiAKICN1bmRlZiBGT1JNQVRfQlVGRkVSX1NJWkUKLQotI2lmIFNUUklOR0xJQl9JU19VTklDT0RFCi0KLS8qCi1XcmFwcyBzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kcygpIGFuZCBhZGRpdGlvbmFsbHkgZW5zdXJlcyB0aGF0IHRoZQotZmlyc3QgYXJndW1lbnQgaXMgYSB1bmljb2RlIG9iamVjdC4KLQotTm90ZSB0aGF0IHdlIHJlY2VpdmUgYSBwb2ludGVyIHRvIHRoZSBwb2ludGVyIG9mIHRoZSBzdWJzdHJpbmcgb2JqZWN0LAotc28gd2hlbiB3ZSBjcmVhdGUgdGhhdCBvYmplY3QgaW4gdGhpcyBmdW5jdGlvbiB3ZSBkb24ndCBERUNSRUYgaXQsCi1iZWNhdXNlIGl0IGNvbnRpbnVlcyBsaXZpbmcgaW4gdGhlIGNhbGxlciBmdW5jdGlvbnMgKHRob3NlIGZ1bmN0aW9ucywKLWFmdGVyIGZpbmlzaGluZyB1c2luZyB0aGUgc3Vic3RyaW5nLCBtdXN0IERFQ1JFRiBpdCkuCi0qLwotCi1QeV9MT0NBTF9JTkxJTkUoaW50KQotU1RSSU5HTElCKHBhcnNlX2FyZ3NfZmluZHNfdW5pY29kZSkoY29uc3QgY2hhciAqIGZ1bmN0aW9uX25hbWUsIFB5T2JqZWN0ICphcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKnN1YnN0cmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqc3RhcnQsIFB5X3NzaXplX3QgKmVuZCkKLXsKLSAgICBQeU9iamVjdCAqdG1wX3N1YnN0cmluZzsKLQotICAgIGlmKFNUUklOR0xJQihwYXJzZV9hcmdzX2ZpbmRzKShmdW5jdGlvbl9uYW1lLCBhcmdzLCAmdG1wX3N1YnN0cmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwgZW5kKSkgewotICAgICAgICB0bXBfc3Vic3RyaW5nID0gUHlVbmljb2RlX0Zyb21PYmplY3QodG1wX3N1YnN0cmluZyk7Ci0gICAgICAgIGlmICghdG1wX3N1YnN0cmluZykKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAqc3Vic3RyaW5nID0gdG1wX3N1YnN0cmluZzsKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgfQotICAgIHJldHVybiAwOwotfQotCi0jZWxzZSAvKiAhU1RSSU5HTElCX0lTX1VOSUNPREUgKi8KLQotLyoKLVdyYXBzIHN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzKCkgYW5kIGFkZGl0aW9uYWxseSBjaGVja3Mgd2hldGhlciB0aGUKLWZpcnN0IGFyZ3VtZW50IGlzIGFuIGludGVnZXIgaW4gcmFuZ2UoMCwgMjU2KS4KLQotSWYgdGhpcyBpcyB0aGUgY2FzZSwgd3JpdGVzIHRoZSBpbnRlZ2VyIHZhbHVlIHRvIHRoZSBieXRlIHBhcmFtZXRlcgotYW5kIHNldHMgc3Vib2JqIHRvIE5VTEwuIE90aGVyd2lzZSwgc2V0cyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gc3Vib2JqCi1hbmQgZG9lc24ndCB0b3VjaCBieXRlLiBUaGUgb3RoZXIgcGFyYW1ldGVycyBhcmUgc2ltaWxhciB0byB0aG9zZSBvZgotc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHMoKS4KLSovCi0KLVB5X0xPQ0FMX0lOTElORShpbnQpCi1TVFJJTkdMSUIocGFyc2VfYXJnc19maW5kc19ieXRlKShjb25zdCBjaGFyICpmdW5jdGlvbl9uYW1lLCBQeU9iamVjdCAqYXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqc3Vib2JqLCBjaGFyICpieXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqc3RhcnQsIFB5X3NzaXplX3QgKmVuZCkKLXsKLSAgICBQeU9iamVjdCAqdG1wX3N1Ym9iajsKLSAgICBQeV9zc2l6ZV90IGl2YWw7Ci0gICAgUHlPYmplY3QgKmVycjsKLQotICAgIGlmKCFTVFJJTkdMSUIocGFyc2VfYXJnc19maW5kcykoZnVuY3Rpb25fbmFtZSwgYXJncywgJnRtcF9zdWJvYmosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwgZW5kKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBpZiAoIVB5TnVtYmVyX0NoZWNrKHRtcF9zdWJvYmopKSB7Ci0gICAgICAgICpzdWJvYmogPSB0bXBfc3Vib2JqOwotICAgICAgICByZXR1cm4gMTsKLSAgICB9Ci0KLSAgICBpdmFsID0gUHlOdW1iZXJfQXNTc2l6ZV90KHRtcF9zdWJvYmosIFB5RXhjX092ZXJmbG93RXJyb3IpOwotICAgIGlmIChpdmFsID09IC0xKSB7Ci0gICAgICAgIGVyciA9IFB5RXJyX09jY3VycmVkKCk7Ci0gICAgICAgIGlmIChlcnIgJiYgIVB5RXJyX0dpdmVuRXhjZXB0aW9uTWF0Y2hlcyhlcnIsIFB5RXhjX092ZXJmbG93RXJyb3IpKSB7Ci0gICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICAgICAgKnN1Ym9iaiA9IHRtcF9zdWJvYmo7Ci0gICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChpdmFsIDwgMCB8fCBpdmFsID4gMjU1KSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiYnl0ZSBtdXN0IGJlIGluIHJhbmdlKDAsIDI1NikiKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgKnN1Ym9iaiA9IE5VTEw7Ci0gICAgKmJ5dGUgPSAoY2hhcilpdmFsOwotICAgIHJldHVybiAxOwotfQotCi0jZW5kaWYgLyogU1RSSU5HTElCX0lTX1VOSUNPREUgKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL2ZpbmRfbWF4X2NoYXIuaCBiL09iamVjdHMvc3RyaW5nbGliL2ZpbmRfbWF4X2NoYXIuaAppbmRleCBlYjNmZTg4Li44Y2NiYzMwIDEwMDY0NAotLS0gYS9PYmplY3RzL3N0cmluZ2xpYi9maW5kX21heF9jaGFyLmgKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvZmluZF9tYXhfY2hhci5oCkBAIC0xLDYgKzEsOCBAQAogLyogRmluZGluZyB0aGUgb3B0aW1hbCB3aWR0aCBvZiB1bmljb2RlIGNoYXJhY3RlcnMgaW4gYSBidWZmZXIgKi8KIAotI2lmIFNUUklOR0xJQl9JU19VTklDT0RFCisjaWYgIVNUUklOR0xJQl9JU19VTklDT0RFCisjIGVycm9yICJmaW5kX21heF9jaGFyLmggaXMgc3BlY2lmaWMgdG8gVW5pY29kZSIKKyNlbmRpZgogCiAvKiBNYXNrIHRvIHF1aWNrbHkgY2hlY2sgd2hldGhlciBhIEMgJ2xvbmcnIGNvbnRhaW5zIGEKICAgIG5vbi1BU0NJSSwgVVRGOC1lbmNvZGVkIGNoYXIuICovCkBAIC0xMjksNSArMTMxLDQgQEAKICN1bmRlZiBNQVhfQ0hBUl9VQ1M0CiAKICNlbmRpZiAvKiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPT0gMSAqLwotI2VuZGlmIC8qIFNUUklOR0xJQl9JU19VTklDT0RFICovCiAKZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL2pvaW4uaCBiL09iamVjdHMvc3RyaW5nbGliL2pvaW4uaAppbmRleCBjYmY4MWJlLi42ZjMxNGUxIDEwMDY0NAotLS0gYS9PYmplY3RzL3N0cmluZ2xpYi9qb2luLmgKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvam9pbi5oCkBAIC0xLDYgKzEsNiBAQAogLyogc3RyaW5nbGliOiBieXRlcyBqb2luaW5nIGltcGxlbWVudGF0aW9uICovCiAKLSNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgIT0gMQorI2lmIFNUUklOR0xJQl9JU19VTklDT0RFCiAjZXJyb3Igam9pbi5oIG9ubHkgY29tcGF0aWJsZSB3aXRoIGJ5dGUtd2lzZSBzdHJpbmdzCiAjZW5kaWYKIApAQCAtMTA3LDcgKzEwNyw3IEBACiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuYnVmczsgaSsrKSB7CiAgICAgICAgICAgICBQeV9zc2l6ZV90IG4gPSBidWZmZXJzW2ldLmxlbjsKICAgICAgICAgICAgIGNoYXIgKnEgPSBidWZmZXJzW2ldLmJ1ZjsKLSAgICAgICAgICAgIFB5X01FTUNQWShwLCBxLCBuKTsKKyAgICAgICAgICAgIG1lbWNweShwLCBxLCBuKTsKICAgICAgICAgICAgIHAgKz0gbjsKICAgICAgICAgfQogICAgICAgICBnb3RvIGRvbmU7CkBAIC0xMTYsMTIgKzExNiwxMiBAQAogICAgICAgICBQeV9zc2l6ZV90IG47CiAgICAgICAgIGNoYXIgKnE7CiAgICAgICAgIGlmIChpKSB7Ci0gICAgICAgICAgICBQeV9NRU1DUFkocCwgc2Vwc3RyLCBzZXBsZW4pOworICAgICAgICAgICAgbWVtY3B5KHAsIHNlcHN0ciwgc2VwbGVuKTsKICAgICAgICAgICAgIHAgKz0gc2VwbGVuOwogICAgICAgICB9CiAgICAgICAgIG4gPSBidWZmZXJzW2ldLmxlbjsKICAgICAgICAgcSA9IGJ1ZmZlcnNbaV0uYnVmOwotICAgICAgICBQeV9NRU1DUFkocCwgcSwgbik7CisgICAgICAgIG1lbWNweShwLCBxLCBuKTsKICAgICAgICAgcCArPSBuOwogICAgIH0KICAgICBnb3RvIGRvbmU7CmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi9sb2NhbGV1dGlsLmggYi9PYmplY3RzL3N0cmluZ2xpYi9sb2NhbGV1dGlsLmgKaW5kZXggNmUyZjA3My4uZGY1MDFlZCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9zdHJpbmdsaWIvbG9jYWxldXRpbC5oCisrKyBiL09iamVjdHMvc3RyaW5nbGliL2xvY2FsZXV0aWwuaApAQCAtMiw4ICsyLDggQEAKIAogI2luY2x1ZGUgPGxvY2FsZS5oPgogCi0jaWZuZGVmIFNUUklOR0xJQl9JU19VTklDT0RFCi0jICAgZXJyb3IgImxvY2FsZXV0aWwgaXMgc3BlY2lmaWMgdG8gVW5pY29kZSIKKyNpZiAhU1RSSU5HTElCX0lTX1VOSUNPREUKKyMgICBlcnJvciAibG9jYWxldXRpbC5oIGlzIHNwZWNpZmljIHRvIFVuaWNvZGUiCiAjZW5kaWYKIAogdHlwZWRlZiBzdHJ1Y3QgewpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvdHJhbnNtb2dyaWZ5LmggYi9PYmplY3RzL3N0cmluZ2xpYi90cmFuc21vZ3JpZnkuaAppbmRleCBiNTU5YjUzLi5hMzE0NTcyIDEwMDY0NAotLS0gYS9PYmplY3RzL3N0cmluZ2xpYi90cmFuc21vZ3JpZnkuaAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi90cmFuc21vZ3JpZnkuaApAQCAtMSwxNCArMSwyMSBAQAotLyogTk9URTogdGhpcyBBUEkgaXMgLU9OTFktIGZvciB1c2Ugd2l0aCBzaW5nbGUgYnl0ZSBjaGFyYWN0ZXIgc3RyaW5ncy4gKi8KLS8qIERvIG5vdCB1c2UgaXQgd2l0aCBVbmljb2RlLiAqLworI2lmIFNUUklOR0xJQl9JU19VTklDT0RFCisjIGVycm9yICJ0cmFuc21vZ3JpZnkuaCBvbmx5IGNvbXBhdGlibGUgd2l0aCBieXRlLXdpc2Ugc3RyaW5ncyIKKyNlbmRpZgogCiAvKiB0aGUgbW9yZSBjb21wbGljYXRlZCBtZXRob2RzLiAgcGFydHMgb2YgdGhlc2Ugc2hvdWxkIGJlIHB1bGxlZCBvdXQgaW50byB0aGUKICAgIHNoYXJlZCBjb2RlIGluIGJ5dGVzX21ldGhvZHMuYyB0byBjdXQgZG93biBvbiBkdXBsaWNhdGUgY29kZSBibG9hdC4gICovCiAKLVB5RG9jX1NUUlZBUihleHBhbmR0YWJzX19kb2NfXywKLSJCLmV4cGFuZHRhYnModGFic2l6ZT04KSAtPiBjb3B5IG9mIEJcblwKLVxuXAotUmV0dXJuIGEgY29weSBvZiBCIHdoZXJlIGFsbCB0YWIgY2hhcmFjdGVycyBhcmUgZXhwYW5kZWQgdXNpbmcgc3BhY2VzLlxuXAotSWYgdGFic2l6ZSBpcyBub3QgZ2l2ZW4sIGEgdGFiIHNpemUgb2YgOCBjaGFyYWN0ZXJzIGlzIGFzc3VtZWQuIik7CitzdGF0aWMgaW5saW5lIFB5T2JqZWN0ICoKK3JldHVybl9zZWxmKFB5T2JqZWN0ICpzZWxmKQoreworI2lmICFTVFJJTkdMSUJfTVVUQUJMRQorICAgIGlmIChTVFJJTkdMSUJfQ0hFQ0tfRVhBQ1Qoc2VsZikpIHsKKyAgICAgICAgUHlfSU5DUkVGKHNlbGYpOworICAgICAgICByZXR1cm4gc2VsZjsKKyAgICB9CisjZW5kaWYKKyAgICByZXR1cm4gU1RSSU5HTElCX05FVyhTVFJJTkdMSUJfU1RSKHNlbGYpLCBTVFJJTkdMSUJfTEVOKHNlbGYpKTsKK30KIAogc3RhdGljIFB5T2JqZWN0Kgogc3RyaW5nbGliX2V4cGFuZHRhYnMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKQEAgLTgzLDcgKzkwLDcgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotUHlfTE9DQUxfSU5MSU5FKFB5T2JqZWN0ICopCitzdGF0aWMgaW5saW5lIFB5T2JqZWN0ICoKIHBhZChQeU9iamVjdCAqc2VsZiwgUHlfc3NpemVfdCBsZWZ0LCBQeV9zc2l6ZV90IHJpZ2h0LCBjaGFyIGZpbGwpCiB7CiAgICAgUHlPYmplY3QgKnU7CkBAIC05MywzOSArMTAwLDI1IEBACiAgICAgaWYgKHJpZ2h0IDwgMCkKICAgICAgICAgcmlnaHQgPSAwOwogCi0gICAgaWYgKGxlZnQgPT0gMCAmJiByaWdodCA9PSAwICYmIFNUUklOR0xJQl9DSEVDS19FWEFDVChzZWxmKSkgewotI2lmIFNUUklOR0xJQl9NVVRBQkxFCi0gICAgICAgIC8qIFdlJ3JlIGRlZmluZWQgYXMgcmV0dXJuaW5nIGEgY29weTsgIElmIHRoZSBvYmplY3QgaXMgbXV0YWJsZQotICAgICAgICAgKiB0aGF0IG1lYW5zIHdlIG11c3QgbWFrZSBhbiBpZGVudGljYWwgY29weS4gKi8KLSAgICAgICAgcmV0dXJuIFNUUklOR0xJQl9ORVcoU1RSSU5HTElCX1NUUihzZWxmKSwgU1RSSU5HTElCX0xFTihzZWxmKSk7Ci0jZWxzZQotICAgICAgICBQeV9JTkNSRUYoc2VsZik7Ci0gICAgICAgIHJldHVybiAoUHlPYmplY3QgKilzZWxmOwotI2VuZGlmIC8qIFNUUklOR0xJQl9NVVRBQkxFICovCisgICAgaWYgKGxlZnQgPT0gMCAmJiByaWdodCA9PSAwKSB7CisgICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKICAgICB9CiAKLSAgICB1ID0gU1RSSU5HTElCX05FVyhOVUxMLAotCQkJCSAgIGxlZnQgKyBTVFJJTkdMSUJfTEVOKHNlbGYpICsgcmlnaHQpOworICAgIHUgPSBTVFJJTkdMSUJfTkVXKE5VTEwsIGxlZnQgKyBTVFJJTkdMSUJfTEVOKHNlbGYpICsgcmlnaHQpOwogICAgIGlmICh1KSB7CiAgICAgICAgIGlmIChsZWZ0KQogICAgICAgICAgICAgbWVtc2V0KFNUUklOR0xJQl9TVFIodSksIGZpbGwsIGxlZnQpOwotICAgICAgICBQeV9NRU1DUFkoU1RSSU5HTElCX1NUUih1KSArIGxlZnQsCi0JICAgICAgIFNUUklOR0xJQl9TVFIoc2VsZiksCi0JICAgICAgIFNUUklOR0xJQl9MRU4oc2VsZikpOworICAgICAgICBtZW1jcHkoU1RSSU5HTElCX1NUUih1KSArIGxlZnQsCisgICAgICAgICAgICAgICBTVFJJTkdMSUJfU1RSKHNlbGYpLAorICAgICAgICAgICAgICAgU1RSSU5HTElCX0xFTihzZWxmKSk7CiAgICAgICAgIGlmIChyaWdodCkKICAgICAgICAgICAgIG1lbXNldChTVFJJTkdMSUJfU1RSKHUpICsgbGVmdCArIFNUUklOR0xJQl9MRU4oc2VsZiksCi0JCSAgIGZpbGwsIHJpZ2h0KTsKKyAgICAgICAgICAgICAgICAgICBmaWxsLCByaWdodCk7CiAgICAgfQogCiAgICAgcmV0dXJuIHU7CiB9CiAKLVB5RG9jX1NUUlZBUihsanVzdF9fZG9jX18sCi0iQi5sanVzdCh3aWR0aFssIGZpbGxjaGFyXSkgLT4gY29weSBvZiBCXG4iCi0iXG4iCi0iUmV0dXJuIEIgbGVmdCBqdXN0aWZpZWQgaW4gYSBzdHJpbmcgb2YgbGVuZ3RoIHdpZHRoLiBQYWRkaW5nIGlzXG4iCi0iZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkIGZpbGwgY2hhcmFjdGVyIChkZWZhdWx0IGlzIGEgc3BhY2UpLiIpOwotCiBzdGF0aWMgUHlPYmplY3QgKgogc3RyaW5nbGliX2xqdXN0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKQEAgLTEzNSwyNyArMTI4LDE0IEBACiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJufGM6bGp1c3QiLCAmd2lkdGgsICZmaWxsY2hhcikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKFNUUklOR0xJQl9MRU4oc2VsZikgPj0gd2lkdGggJiYgU1RSSU5HTElCX0NIRUNLX0VYQUNUKHNlbGYpKSB7Ci0jaWYgU1RSSU5HTElCX01VVEFCTEUKLSAgICAgICAgLyogV2UncmUgZGVmaW5lZCBhcyByZXR1cm5pbmcgYSBjb3B5OyAgSWYgdGhlIG9iamVjdCBpcyBtdXRhYmxlCi0gICAgICAgICAqIHRoYXQgbWVhbnMgd2UgbXVzdCBtYWtlIGFuIGlkZW50aWNhbCBjb3B5LiAqLwotICAgICAgICByZXR1cm4gU1RSSU5HTElCX05FVyhTVFJJTkdMSUJfU1RSKHNlbGYpLCBTVFJJTkdMSUJfTEVOKHNlbGYpKTsKLSNlbHNlCi0gICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCopIHNlbGY7Ci0jZW5kaWYKKyAgICBpZiAoU1RSSU5HTElCX0xFTihzZWxmKSA+PSB3aWR0aCkgeworICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7CiAgICAgfQogCiAgICAgcmV0dXJuIHBhZChzZWxmLCAwLCB3aWR0aCAtIFNUUklOR0xJQl9MRU4oc2VsZiksIGZpbGxjaGFyKTsKIH0KIAogCi1QeURvY19TVFJWQVIocmp1c3RfX2RvY19fLAotIkIucmp1c3Qod2lkdGhbLCBmaWxsY2hhcl0pIC0+IGNvcHkgb2YgQlxuIgotIlxuIgotIlJldHVybiBCIHJpZ2h0IGp1c3RpZmllZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggd2lkdGguIFBhZGRpbmcgaXNcbiIKLSJkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgZmlsbCBjaGFyYWN0ZXIgKGRlZmF1bHQgaXMgYSBzcGFjZSkiKTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIHN0cmluZ2xpYl9yanVzdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CkBAIC0xNjUsMjcgKzE0NSwxNCBAQAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibnxjOnJqdXN0IiwgJndpZHRoLCAmZmlsbGNoYXIpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChTVFJJTkdMSUJfTEVOKHNlbGYpID49IHdpZHRoICYmIFNUUklOR0xJQl9DSEVDS19FWEFDVChzZWxmKSkgewotI2lmIFNUUklOR0xJQl9NVVRBQkxFCi0gICAgICAgIC8qIFdlJ3JlIGRlZmluZWQgYXMgcmV0dXJuaW5nIGEgY29weTsgIElmIHRoZSBvYmplY3QgaXMgbXV0YWJsZQotICAgICAgICAgKiB0aGF0IG1lYW5zIHdlIG11c3QgbWFrZSBhbiBpZGVudGljYWwgY29weS4gKi8KLSAgICAgICAgcmV0dXJuIFNUUklOR0xJQl9ORVcoU1RSSU5HTElCX1NUUihzZWxmKSwgU1RSSU5HTElCX0xFTihzZWxmKSk7Ci0jZWxzZQotICAgICAgICBQeV9JTkNSRUYoc2VsZik7Ci0gICAgICAgIHJldHVybiAoUHlPYmplY3QqKSBzZWxmOwotI2VuZGlmCisgICAgaWYgKFNUUklOR0xJQl9MRU4oc2VsZikgPj0gd2lkdGgpIHsKKyAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwogICAgIH0KIAogICAgIHJldHVybiBwYWQoc2VsZiwgd2lkdGggLSBTVFJJTkdMSUJfTEVOKHNlbGYpLCAwLCBmaWxsY2hhcik7CiB9CiAKIAotUHlEb2NfU1RSVkFSKGNlbnRlcl9fZG9jX18sCi0iQi5jZW50ZXIod2lkdGhbLCBmaWxsY2hhcl0pIC0+IGNvcHkgb2YgQlxuIgotIlxuIgotIlJldHVybiBCIGNlbnRlcmVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCB3aWR0aC4gIFBhZGRpbmcgaXNcbiIKLSJkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgZmlsbCBjaGFyYWN0ZXIgKGRlZmF1bHQgaXMgYSBzcGFjZSkuIik7Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBzdHJpbmdsaWJfY2VudGVyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKQEAgLTE5NiwxNSArMTYzLDggQEAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIm58YzpjZW50ZXIiLCAmd2lkdGgsICZmaWxsY2hhcikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKFNUUklOR0xJQl9MRU4oc2VsZikgPj0gd2lkdGggJiYgU1RSSU5HTElCX0NIRUNLX0VYQUNUKHNlbGYpKSB7Ci0jaWYgU1RSSU5HTElCX01VVEFCTEUKLSAgICAgICAgLyogV2UncmUgZGVmaW5lZCBhcyByZXR1cm5pbmcgYSBjb3B5OyAgSWYgdGhlIG9iamVjdCBpcyBtdXRhYmxlCi0gICAgICAgICAqIHRoYXQgbWVhbnMgd2UgbXVzdCBtYWtlIGFuIGlkZW50aWNhbCBjb3B5LiAqLwotICAgICAgICByZXR1cm4gU1RSSU5HTElCX05FVyhTVFJJTkdMSUJfU1RSKHNlbGYpLCBTVFJJTkdMSUJfTEVOKHNlbGYpKTsKLSNlbHNlCi0gICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCopIHNlbGY7Ci0jZW5kaWYKKyAgICBpZiAoU1RSSU5HTElCX0xFTihzZWxmKSA+PSB3aWR0aCkgeworICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7CiAgICAgfQogCiAgICAgbWFyZyA9IHdpZHRoIC0gU1RSSU5HTElCX0xFTihzZWxmKTsKQEAgLTIxMywxMiArMTczLDYgQEAKICAgICByZXR1cm4gcGFkKHNlbGYsIGxlZnQsIG1hcmcgLSBsZWZ0LCBmaWxsY2hhcik7CiB9CiAKLVB5RG9jX1NUUlZBUih6ZmlsbF9fZG9jX18sCi0iQi56ZmlsbCh3aWR0aCkgLT4gY29weSBvZiBCXG4iCi0iXG4iCi0iUGFkIGEgbnVtZXJpYyBzdHJpbmcgQiB3aXRoIHplcm9zIG9uIHRoZSBsZWZ0LCB0byBmaWxsIGEgZmllbGRcbiIKLSJvZiB0aGUgc3BlY2lmaWVkIHdpZHRoLiAgQiBpcyBuZXZlciB0cnVuY2F0ZWQuIik7Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBzdHJpbmdsaWJfemZpbGwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewpAQCAtMjMxLDIxICsxODUsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmIChTVFJJTkdMSUJfTEVOKHNlbGYpID49IHdpZHRoKSB7Ci0gICAgICAgIGlmIChTVFJJTkdMSUJfQ0hFQ0tfRVhBQ1Qoc2VsZikpIHsKLSNpZiBTVFJJTkdMSUJfTVVUQUJMRQotICAgICAgICAgICAgLyogV2UncmUgZGVmaW5lZCBhcyByZXR1cm5pbmcgYSBjb3B5OyAgSWYgdGhlIG9iamVjdCBpcyBtdXRhYmxlCi0gICAgICAgICAgICAgKiB0aGF0IG1lYW5zIHdlIG11c3QgbWFrZSBhbiBpZGVudGljYWwgY29weS4gKi8KLSAgICAgICAgICAgIHJldHVybiBTVFJJTkdMSUJfTkVXKFNUUklOR0xJQl9TVFIoc2VsZiksIFNUUklOR0xJQl9MRU4oc2VsZikpOwotI2Vsc2UKLSAgICAgICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKLSAgICAgICAgICAgIHJldHVybiAoUHlPYmplY3QqKSBzZWxmOwotI2VuZGlmCi0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIFNUUklOR0xJQl9ORVcoCi0gICAgICAgICAgICAgICAgU1RSSU5HTElCX1NUUihzZWxmKSwKLSAgICAgICAgICAgICAgICBTVFJJTkdMSUJfTEVOKHNlbGYpCi0gICAgICAgICAgICApOworICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7CiAgICAgfQogCiAgICAgZmlsbCA9IHdpZHRoIC0gU1RSSU5HTElCX0xFTihzZWxmKTsKQEAgLTI2Miw1ICsyMDIsNTAwIEBACiAgICAgICAgIHBbZmlsbF0gPSAnMCc7CiAgICAgfQogCi0gICAgcmV0dXJuIChQeU9iamVjdCopIHM7CisgICAgcmV0dXJuIHM7CiB9CisKKworLyogZmluZCBhbmQgY291bnQgY2hhcmFjdGVycyBhbmQgc3Vic3RyaW5ncyAqLworCisjZGVmaW5lIGZpbmRjaGFyKHRhcmdldCwgdGFyZ2V0X2xlbiwgYykgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAoKGNoYXIgKiltZW1jaHIoKGNvbnN0IHZvaWQgKikodGFyZ2V0KSwgYywgdGFyZ2V0X2xlbikpCisKKworc3RhdGljIFB5X3NzaXplX3QKK2NvdW50Y2hhcihjb25zdCBjaGFyICp0YXJnZXQsIFB5X3NzaXplX3QgdGFyZ2V0X2xlbiwgY2hhciBjLAorICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCit7CisgICAgUHlfc3NpemVfdCBjb3VudCA9IDA7CisgICAgY29uc3QgY2hhciAqc3RhcnQgPSB0YXJnZXQ7CisgICAgY29uc3QgY2hhciAqZW5kID0gdGFyZ2V0ICsgdGFyZ2V0X2xlbjsKKworICAgIHdoaWxlICgoc3RhcnQgPSBmaW5kY2hhcihzdGFydCwgZW5kIC0gc3RhcnQsIGMpKSAhPSBOVUxMKSB7CisgICAgICAgIGNvdW50Kys7CisgICAgICAgIGlmIChjb3VudCA+PSBtYXhjb3VudCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBzdGFydCArPSAxOworICAgIH0KKyAgICByZXR1cm4gY291bnQ7Cit9CisKKworLyogQWxnb3JpdGhtcyBmb3IgZGlmZmVyZW50IGNhc2VzIG9mIHN0cmluZyByZXBsYWNlbWVudCAqLworCisvKiBsZW4oc2VsZik+PTEsIGZyb209IiIsIGxlbih0byk+PTEsIG1heGNvdW50Pj0xICovCitzdGF0aWMgUHlPYmplY3QgKgorc3RyaW5nbGliX3JlcGxhY2VfaW50ZXJsZWF2ZShQeU9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdG9fcywgUHlfc3NpemVfdCB0b19sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCit7CisgICAgY29uc3QgY2hhciAqc2VsZl9zOworICAgIGNoYXIgKnJlc3VsdF9zOworICAgIFB5X3NzaXplX3Qgc2VsZl9sZW4sIHJlc3VsdF9sZW47CisgICAgUHlfc3NpemVfdCBjb3VudCwgaTsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgc2VsZl9sZW4gPSBTVFJJTkdMSUJfTEVOKHNlbGYpOworCisgICAgLyogMSBhdCB0aGUgZW5kIHBsdXMgMSBhZnRlciBldmVyeSBjaGFyYWN0ZXI7CisgICAgICAgY291bnQgPSBtaW4obWF4Y291bnQsIHNlbGZfbGVuICsgMSkgKi8KKyAgICBpZiAobWF4Y291bnQgPD0gc2VsZl9sZW4pIHsKKyAgICAgICAgY291bnQgPSBtYXhjb3VudDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIENhbid0IG92ZXJmbG93OiBzZWxmX2xlbiArIDEgPD0gbWF4Y291bnQgPD0gUFlfU1NJWkVfVF9NQVguICovCisgICAgICAgIGNvdW50ID0gc2VsZl9sZW4gKyAxOworICAgIH0KKworICAgIC8qIENoZWNrIGZvciBvdmVyZmxvdyAqLworICAgIC8qICAgcmVzdWx0X2xlbiA9IGNvdW50ICogdG9fbGVuICsgc2VsZl9sZW47ICovCisgICAgYXNzZXJ0KGNvdW50ID4gMCk7CisgICAgaWYgKHRvX2xlbiA+IChQWV9TU0laRV9UX01BWCAtIHNlbGZfbGVuKSAvIGNvdW50KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInJlcGxhY2UgYnl0ZXMgYXJlIHRvbyBsb25nIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXN1bHRfbGVuID0gY291bnQgKiB0b19sZW4gKyBzZWxmX2xlbjsKKyAgICByZXN1bHQgPSBTVFJJTkdMSUJfTkVXKE5VTEwsIHJlc3VsdF9sZW4pOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBzZWxmX3MgPSBTVFJJTkdMSUJfU1RSKHNlbGYpOworICAgIHJlc3VsdF9zID0gU1RSSU5HTElCX1NUUihyZXN1bHQpOworCisgICAgaWYgKHRvX2xlbiA+IDEpIHsKKyAgICAgICAgLyogTGF5IHRoZSBmaXJzdCBvbmUgZG93biAoZ3VhcmFudGVlZCB0aGlzIHdpbGwgb2NjdXIpICovCisgICAgICAgIG1lbWNweShyZXN1bHRfcywgdG9fcywgdG9fbGVuKTsKKyAgICAgICAgcmVzdWx0X3MgKz0gdG9fbGVuOworICAgICAgICBjb3VudCAtPSAxOworCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisgICAgICAgICAgICAqcmVzdWx0X3MrKyA9ICpzZWxmX3MrKzsKKyAgICAgICAgICAgIG1lbWNweShyZXN1bHRfcywgdG9fcywgdG9fbGVuKTsKKyAgICAgICAgICAgIHJlc3VsdF9zICs9IHRvX2xlbjsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmVzdWx0X3NbMF0gPSB0b19zWzBdOworICAgICAgICByZXN1bHRfcyArPSB0b19sZW47CisgICAgICAgIGNvdW50IC09IDE7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisgICAgICAgICAgICAqcmVzdWx0X3MrKyA9ICpzZWxmX3MrKzsKKyAgICAgICAgICAgIHJlc3VsdF9zWzBdID0gdG9fc1swXTsKKyAgICAgICAgICAgIHJlc3VsdF9zICs9IHRvX2xlbjsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIENvcHkgdGhlIHJlc3Qgb2YgdGhlIG9yaWdpbmFsIHN0cmluZyAqLworICAgIG1lbWNweShyZXN1bHRfcywgc2VsZl9zLCBzZWxmX2xlbiAtIGkpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogU3BlY2lhbCBjYXNlIGZvciBkZWxldGluZyBhIHNpbmdsZSBjaGFyYWN0ZXIgKi8KKy8qIGxlbihzZWxmKT49MSwgbGVuKGZyb20pPT0xLCB0bz0iIiwgbWF4Y291bnQ+PTEgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitzdHJpbmdsaWJfcmVwbGFjZV9kZWxldGVfc2luZ2xlX2NoYXJhY3RlcihQeU9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgZnJvbV9jLCBQeV9zc2l6ZV90IG1heGNvdW50KQoreworICAgIGNvbnN0IGNoYXIgKnNlbGZfcywgKnN0YXJ0LCAqbmV4dCwgKmVuZDsKKyAgICBjaGFyICpyZXN1bHRfczsKKyAgICBQeV9zc2l6ZV90IHNlbGZfbGVuLCByZXN1bHRfbGVuOworICAgIFB5X3NzaXplX3QgY291bnQ7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgIHNlbGZfbGVuID0gU1RSSU5HTElCX0xFTihzZWxmKTsKKyAgICBzZWxmX3MgPSBTVFJJTkdMSUJfU1RSKHNlbGYpOworCisgICAgY291bnQgPSBjb3VudGNoYXIoc2VsZl9zLCBzZWxmX2xlbiwgZnJvbV9jLCBtYXhjb3VudCk7CisgICAgaWYgKGNvdW50ID09IDApIHsKKyAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOworICAgIH0KKworICAgIHJlc3VsdF9sZW4gPSBzZWxmX2xlbiAtIGNvdW50OyAgLyogZnJvbV9sZW4gPT0gMSAqLworICAgIGFzc2VydChyZXN1bHRfbGVuPj0wKTsKKworICAgIHJlc3VsdCA9IFNUUklOR0xJQl9ORVcoTlVMTCwgcmVzdWx0X2xlbik7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXN1bHRfcyA9IFNUUklOR0xJQl9TVFIocmVzdWx0KTsKKworICAgIHN0YXJ0ID0gc2VsZl9zOworICAgIGVuZCA9IHNlbGZfcyArIHNlbGZfbGVuOworICAgIHdoaWxlIChjb3VudC0tID4gMCkgeworICAgICAgICBuZXh0ID0gZmluZGNoYXIoc3RhcnQsIGVuZCAtIHN0YXJ0LCBmcm9tX2MpOworICAgICAgICBpZiAobmV4dCA9PSBOVUxMKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIG1lbWNweShyZXN1bHRfcywgc3RhcnQsIG5leHQgLSBzdGFydCk7CisgICAgICAgIHJlc3VsdF9zICs9IChuZXh0IC0gc3RhcnQpOworICAgICAgICBzdGFydCA9IG5leHQgKyAxOworICAgIH0KKyAgICBtZW1jcHkocmVzdWx0X3MsIHN0YXJ0LCBlbmQgLSBzdGFydCk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKiBsZW4oc2VsZik+PTEsIGxlbihmcm9tKT49MiwgdG89IiIsIG1heGNvdW50Pj0xICovCisKK3N0YXRpYyBQeU9iamVjdCAqCitzdHJpbmdsaWJfcmVwbGFjZV9kZWxldGVfc3Vic3RyaW5nKFB5T2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmcm9tX3MsIFB5X3NzaXplX3QgZnJvbV9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCit7CisgICAgY29uc3QgY2hhciAqc2VsZl9zLCAqc3RhcnQsICpuZXh0LCAqZW5kOworICAgIGNoYXIgKnJlc3VsdF9zOworICAgIFB5X3NzaXplX3Qgc2VsZl9sZW4sIHJlc3VsdF9sZW47CisgICAgUHlfc3NpemVfdCBjb3VudCwgb2Zmc2V0OworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICBzZWxmX2xlbiA9IFNUUklOR0xJQl9MRU4oc2VsZik7CisgICAgc2VsZl9zID0gU1RSSU5HTElCX1NUUihzZWxmKTsKKworICAgIGNvdW50ID0gc3RyaW5nbGliX2NvdW50KHNlbGZfcywgc2VsZl9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbV9zLCBmcm9tX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhjb3VudCk7CisKKyAgICBpZiAoY291bnQgPT0gMCkgeworICAgICAgICAvKiBubyBtYXRjaGVzICovCisgICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKKyAgICB9CisKKyAgICByZXN1bHRfbGVuID0gc2VsZl9sZW4gLSAoY291bnQgKiBmcm9tX2xlbik7CisgICAgYXNzZXJ0IChyZXN1bHRfbGVuPj0wKTsKKworICAgIHJlc3VsdCA9IFNUUklOR0xJQl9ORVcoTlVMTCwgcmVzdWx0X2xlbik7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXN1bHRfcyA9IFNUUklOR0xJQl9TVFIocmVzdWx0KTsKKworICAgIHN0YXJ0ID0gc2VsZl9zOworICAgIGVuZCA9IHNlbGZfcyArIHNlbGZfbGVuOworICAgIHdoaWxlIChjb3VudC0tID4gMCkgeworICAgICAgICBvZmZzZXQgPSBzdHJpbmdsaWJfZmluZChzdGFydCwgZW5kIC0gc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21fcywgZnJvbV9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOworICAgICAgICBpZiAob2Zmc2V0ID09IC0xKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIG5leHQgPSBzdGFydCArIG9mZnNldDsKKworICAgICAgICBtZW1jcHkocmVzdWx0X3MsIHN0YXJ0LCBuZXh0IC0gc3RhcnQpOworCisgICAgICAgIHJlc3VsdF9zICs9IChuZXh0IC0gc3RhcnQpOworICAgICAgICBzdGFydCA9IG5leHQgKyBmcm9tX2xlbjsKKyAgICB9CisgICAgbWVtY3B5KHJlc3VsdF9zLCBzdGFydCwgZW5kIC0gc3RhcnQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIGxlbihzZWxmKT49MSwgbGVuKGZyb20pPT1sZW4odG8pPT0xLCBtYXhjb3VudD49MSAqLworc3RhdGljIFB5T2JqZWN0ICoKK3N0cmluZ2xpYl9yZXBsYWNlX3NpbmdsZV9jaGFyYWN0ZXJfaW5fcGxhY2UoUHlPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgZnJvbV9jLCBjaGFyIHRvX2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCit7CisgICAgY29uc3QgY2hhciAqc2VsZl9zLCAqZW5kOworICAgIGNoYXIgKnJlc3VsdF9zLCAqc3RhcnQsICpuZXh0OworICAgIFB5X3NzaXplX3Qgc2VsZl9sZW47CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgIC8qIFRoZSByZXN1bHQgc3RyaW5nIHdpbGwgYmUgdGhlIHNhbWUgc2l6ZSAqLworICAgIHNlbGZfcyA9IFNUUklOR0xJQl9TVFIoc2VsZik7CisgICAgc2VsZl9sZW4gPSBTVFJJTkdMSUJfTEVOKHNlbGYpOworCisgICAgbmV4dCA9IGZpbmRjaGFyKHNlbGZfcywgc2VsZl9sZW4sIGZyb21fYyk7CisKKyAgICBpZiAobmV4dCA9PSBOVUxMKSB7CisgICAgICAgIC8qIE5vIG1hdGNoZXM7IHJldHVybiB0aGUgb3JpZ2luYWwgYnl0ZXMgKi8KKyAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOworICAgIH0KKworICAgIC8qIE5lZWQgdG8gbWFrZSBhIG5ldyBieXRlcyAqLworICAgIHJlc3VsdCA9IFNUUklOR0xJQl9ORVcoTlVMTCwgc2VsZl9sZW4pOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmVzdWx0X3MgPSBTVFJJTkdMSUJfU1RSKHJlc3VsdCk7CisgICAgbWVtY3B5KHJlc3VsdF9zLCBzZWxmX3MsIHNlbGZfbGVuKTsKKworICAgIC8qIGNoYW5nZSBldmVyeXRoaW5nIGluLXBsYWNlLCBzdGFydGluZyB3aXRoIHRoaXMgb25lICovCisgICAgc3RhcnQgPSAgcmVzdWx0X3MgKyAobmV4dCAtIHNlbGZfcyk7CisgICAgKnN0YXJ0ID0gdG9fYzsKKyAgICBzdGFydCsrOworICAgIGVuZCA9IHJlc3VsdF9zICsgc2VsZl9sZW47CisKKyAgICB3aGlsZSAoLS1tYXhjb3VudCA+IDApIHsKKyAgICAgICAgbmV4dCA9IGZpbmRjaGFyKHN0YXJ0LCBlbmQgLSBzdGFydCwgZnJvbV9jKTsKKyAgICAgICAgaWYgKG5leHQgPT0gTlVMTCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAqbmV4dCA9IHRvX2M7CisgICAgICAgIHN0YXJ0ID0gbmV4dCArIDE7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogbGVuKHNlbGYpPj0xLCBsZW4oZnJvbSk9PWxlbih0byk+PTIsIG1heGNvdW50Pj0xICovCitzdGF0aWMgUHlPYmplY3QgKgorc3RyaW5nbGliX3JlcGxhY2Vfc3Vic3RyaW5nX2luX3BsYWNlKFB5T2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZyb21fcywgUHlfc3NpemVfdCBmcm9tX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b19zLCBQeV9zc2l6ZV90IHRvX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQoreworICAgIGNvbnN0IGNoYXIgKnNlbGZfcywgKmVuZDsKKyAgICBjaGFyICpyZXN1bHRfcywgKnN0YXJ0OworICAgIFB5X3NzaXplX3Qgc2VsZl9sZW4sIG9mZnNldDsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgLyogVGhlIHJlc3VsdCBieXRlcyB3aWxsIGJlIHRoZSBzYW1lIHNpemUgKi8KKworICAgIHNlbGZfcyA9IFNUUklOR0xJQl9TVFIoc2VsZik7CisgICAgc2VsZl9sZW4gPSBTVFJJTkdMSUJfTEVOKHNlbGYpOworCisgICAgb2Zmc2V0ID0gc3RyaW5nbGliX2ZpbmQoc2VsZl9zLCBzZWxmX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX3MsIGZyb21fbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOworICAgIGlmIChvZmZzZXQgPT0gLTEpIHsKKyAgICAgICAgLyogTm8gbWF0Y2hlczsgcmV0dXJuIHRoZSBvcmlnaW5hbCBieXRlcyAqLworICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7CisgICAgfQorCisgICAgLyogTmVlZCB0byBtYWtlIGEgbmV3IGJ5dGVzICovCisgICAgcmVzdWx0ID0gU1RSSU5HTElCX05FVyhOVUxMLCBzZWxmX2xlbik7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXN1bHRfcyA9IFNUUklOR0xJQl9TVFIocmVzdWx0KTsKKyAgICBtZW1jcHkocmVzdWx0X3MsIHNlbGZfcywgc2VsZl9sZW4pOworCisgICAgLyogY2hhbmdlIGV2ZXJ5dGhpbmcgaW4tcGxhY2UsIHN0YXJ0aW5nIHdpdGggdGhpcyBvbmUgKi8KKyAgICBzdGFydCA9ICByZXN1bHRfcyArIG9mZnNldDsKKyAgICBtZW1jcHkoc3RhcnQsIHRvX3MsIGZyb21fbGVuKTsKKyAgICBzdGFydCArPSBmcm9tX2xlbjsKKyAgICBlbmQgPSByZXN1bHRfcyArIHNlbGZfbGVuOworCisgICAgd2hpbGUgKCAtLW1heGNvdW50ID4gMCkgeworICAgICAgICBvZmZzZXQgPSBzdHJpbmdsaWJfZmluZChzdGFydCwgZW5kIC0gc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21fcywgZnJvbV9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOworICAgICAgICBpZiAob2Zmc2V0ID09IC0xKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIG1lbWNweShzdGFydCArIG9mZnNldCwgdG9fcywgZnJvbV9sZW4pOworICAgICAgICBzdGFydCArPSBvZmZzZXQgKyBmcm9tX2xlbjsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKiBsZW4oc2VsZik+PTEsIGxlbihmcm9tKT09MSwgbGVuKHRvKT49MiwgbWF4Y291bnQ+PTEgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitzdHJpbmdsaWJfcmVwbGFjZV9zaW5nbGVfY2hhcmFjdGVyKFB5T2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGZyb21fYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdG9fcywgUHlfc3NpemVfdCB0b19sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCit7CisgICAgY29uc3QgY2hhciAqc2VsZl9zLCAqc3RhcnQsICpuZXh0LCAqZW5kOworICAgIGNoYXIgKnJlc3VsdF9zOworICAgIFB5X3NzaXplX3Qgc2VsZl9sZW4sIHJlc3VsdF9sZW47CisgICAgUHlfc3NpemVfdCBjb3VudDsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgc2VsZl9zID0gU1RSSU5HTElCX1NUUihzZWxmKTsKKyAgICBzZWxmX2xlbiA9IFNUUklOR0xJQl9MRU4oc2VsZik7CisKKyAgICBjb3VudCA9IGNvdW50Y2hhcihzZWxmX3MsIHNlbGZfbGVuLCBmcm9tX2MsIG1heGNvdW50KTsKKyAgICBpZiAoY291bnQgPT0gMCkgeworICAgICAgICAvKiBubyBtYXRjaGVzLCByZXR1cm4gdW5jaGFuZ2VkICovCisgICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKKyAgICB9CisKKyAgICAvKiB1c2UgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBjdXJyZW50IGFuZCBuZXcsIGhlbmNlIHRoZSAiLTEiICovCisgICAgLyogICByZXN1bHRfbGVuID0gc2VsZl9sZW4gKyBjb3VudCAqICh0b19sZW4tMSkgICovCisgICAgYXNzZXJ0KGNvdW50ID4gMCk7CisgICAgaWYgKHRvX2xlbiAtIDEgPiAoUFlfU1NJWkVfVF9NQVggLSBzZWxmX2xlbikgLyBjb3VudCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgInJlcGxhY2UgYnl0ZXMgaXMgdG9vIGxvbmciKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJlc3VsdF9sZW4gPSBzZWxmX2xlbiArIGNvdW50ICogKHRvX2xlbiAtIDEpOworCisgICAgcmVzdWx0ID0gU1RSSU5HTElCX05FVyhOVUxMLCByZXN1bHRfbGVuKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJlc3VsdF9zID0gU1RSSU5HTElCX1NUUihyZXN1bHQpOworCisgICAgc3RhcnQgPSBzZWxmX3M7CisgICAgZW5kID0gc2VsZl9zICsgc2VsZl9sZW47CisgICAgd2hpbGUgKGNvdW50LS0gPiAwKSB7CisgICAgICAgIG5leHQgPSBmaW5kY2hhcihzdGFydCwgZW5kIC0gc3RhcnQsIGZyb21fYyk7CisgICAgICAgIGlmIChuZXh0ID09IE5VTEwpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBpZiAobmV4dCA9PSBzdGFydCkgeworICAgICAgICAgICAgLyogcmVwbGFjZSB3aXRoIHRoZSAndG8nICovCisgICAgICAgICAgICBtZW1jcHkocmVzdWx0X3MsIHRvX3MsIHRvX2xlbik7CisgICAgICAgICAgICByZXN1bHRfcyArPSB0b19sZW47CisgICAgICAgICAgICBzdGFydCArPSAxOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLyogY29weSB0aGUgdW5jaGFuZ2VkIG9sZCB0aGVuIHRoZSAndG8nICovCisgICAgICAgICAgICBtZW1jcHkocmVzdWx0X3MsIHN0YXJ0LCBuZXh0IC0gc3RhcnQpOworICAgICAgICAgICAgcmVzdWx0X3MgKz0gKG5leHQgLSBzdGFydCk7CisgICAgICAgICAgICBtZW1jcHkocmVzdWx0X3MsIHRvX3MsIHRvX2xlbik7CisgICAgICAgICAgICByZXN1bHRfcyArPSB0b19sZW47CisgICAgICAgICAgICBzdGFydCA9IG5leHQgKyAxOworICAgICAgICB9CisgICAgfQorICAgIC8qIENvcHkgdGhlIHJlbWFpbmRlciBvZiB0aGUgcmVtYWluaW5nIGJ5dGVzICovCisgICAgbWVtY3B5KHJlc3VsdF9zLCBzdGFydCwgZW5kIC0gc3RhcnQpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogbGVuKHNlbGYpPj0xLCBsZW4oZnJvbSk+PTIsIGxlbih0byk+PTIsIG1heGNvdW50Pj0xICovCitzdGF0aWMgUHlPYmplY3QgKgorc3RyaW5nbGliX3JlcGxhY2Vfc3Vic3RyaW5nKFB5T2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZyb21fcywgUHlfc3NpemVfdCBmcm9tX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b19zLCBQeV9zc2l6ZV90IHRvX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQoreworICAgIGNvbnN0IGNoYXIgKnNlbGZfcywgKnN0YXJ0LCAqbmV4dCwgKmVuZDsKKyAgICBjaGFyICpyZXN1bHRfczsKKyAgICBQeV9zc2l6ZV90IHNlbGZfbGVuLCByZXN1bHRfbGVuOworICAgIFB5X3NzaXplX3QgY291bnQsIG9mZnNldDsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgc2VsZl9zID0gU1RSSU5HTElCX1NUUihzZWxmKTsKKyAgICBzZWxmX2xlbiA9IFNUUklOR0xJQl9MRU4oc2VsZik7CisKKyAgICBjb3VudCA9IHN0cmluZ2xpYl9jb3VudChzZWxmX3MsIHNlbGZfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21fcywgZnJvbV9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Y291bnQpOworCisgICAgaWYgKGNvdW50ID09IDApIHsKKyAgICAgICAgLyogbm8gbWF0Y2hlcywgcmV0dXJuIHVuY2hhbmdlZCAqLworICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7CisgICAgfQorCisgICAgLyogQ2hlY2sgZm9yIG92ZXJmbG93ICovCisgICAgLyogICAgcmVzdWx0X2xlbiA9IHNlbGZfbGVuICsgY291bnQgKiAodG9fbGVuLWZyb21fbGVuKSAqLworICAgIGFzc2VydChjb3VudCA+IDApOworICAgIGlmICh0b19sZW4gLSBmcm9tX2xlbiA+IChQWV9TU0laRV9UX01BWCAtIHNlbGZfbGVuKSAvIGNvdW50KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAicmVwbGFjZSBieXRlcyBpcyB0b28gbG9uZyIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmVzdWx0X2xlbiA9IHNlbGZfbGVuICsgY291bnQgKiAodG9fbGVuIC0gZnJvbV9sZW4pOworCisgICAgcmVzdWx0ID0gU1RSSU5HTElCX05FVyhOVUxMLCByZXN1bHRfbGVuKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJlc3VsdF9zID0gU1RSSU5HTElCX1NUUihyZXN1bHQpOworCisgICAgc3RhcnQgPSBzZWxmX3M7CisgICAgZW5kID0gc2VsZl9zICsgc2VsZl9sZW47CisgICAgd2hpbGUgKGNvdW50LS0gPiAwKSB7CisgICAgICAgIG9mZnNldCA9IHN0cmluZ2xpYl9maW5kKHN0YXJ0LCBlbmQgLSBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbV9zLCBmcm9tX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7CisgICAgICAgIGlmIChvZmZzZXQgPT0gLTEpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgbmV4dCA9IHN0YXJ0ICsgb2Zmc2V0OworICAgICAgICBpZiAobmV4dCA9PSBzdGFydCkgeworICAgICAgICAgICAgLyogcmVwbGFjZSB3aXRoIHRoZSAndG8nICovCisgICAgICAgICAgICBtZW1jcHkocmVzdWx0X3MsIHRvX3MsIHRvX2xlbik7CisgICAgICAgICAgICByZXN1bHRfcyArPSB0b19sZW47CisgICAgICAgICAgICBzdGFydCArPSBmcm9tX2xlbjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8qIGNvcHkgdGhlIHVuY2hhbmdlZCBvbGQgdGhlbiB0aGUgJ3RvJyAqLworICAgICAgICAgICAgbWVtY3B5KHJlc3VsdF9zLCBzdGFydCwgbmV4dCAtIHN0YXJ0KTsKKyAgICAgICAgICAgIHJlc3VsdF9zICs9IChuZXh0IC0gc3RhcnQpOworICAgICAgICAgICAgbWVtY3B5KHJlc3VsdF9zLCB0b19zLCB0b19sZW4pOworICAgICAgICAgICAgcmVzdWx0X3MgKz0gdG9fbGVuOworICAgICAgICAgICAgc3RhcnQgPSBuZXh0ICsgZnJvbV9sZW47CisgICAgICAgIH0KKyAgICB9CisgICAgLyogQ29weSB0aGUgcmVtYWluZGVyIG9mIHRoZSByZW1haW5pbmcgYnl0ZXMgKi8KKyAgICBtZW1jcHkocmVzdWx0X3MsIHN0YXJ0LCBlbmQgLSBzdGFydCk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCitzdHJpbmdsaWJfcmVwbGFjZShQeU9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZyb21fcywgUHlfc3NpemVfdCBmcm9tX2xlbiwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRvX3MsIFB5X3NzaXplX3QgdG9fbGVuLAorICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKK3sKKyAgICBpZiAobWF4Y291bnQgPCAwKSB7CisgICAgICAgIG1heGNvdW50ID0gUFlfU1NJWkVfVF9NQVg7CisgICAgfSBlbHNlIGlmIChtYXhjb3VudCA9PSAwIHx8IFNUUklOR0xJQl9MRU4oc2VsZikgPT0gMCkgeworICAgICAgICAvKiBub3RoaW5nIHRvIGRvOyByZXR1cm4gdGhlIG9yaWdpbmFsIGJ5dGVzICovCisgICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKKyAgICB9CisKKyAgICAvKiBIYW5kbGUgemVyby1sZW5ndGggc3BlY2lhbCBjYXNlcyAqLworICAgIGlmIChmcm9tX2xlbiA9PSAwKSB7CisgICAgICAgIGlmICh0b19sZW4gPT0gMCkgeworICAgICAgICAgICAgLyogbm90aGluZyB0byBkbzsgcmV0dXJuIHRoZSBvcmlnaW5hbCBieXRlcyAqLworICAgICAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOworICAgICAgICB9CisgICAgICAgIC8qIGluc2VydCB0aGUgJ3RvJyBieXRlcyBldmVyeXdoZXJlLiAgICAqLworICAgICAgICAvKiAgICA+Pj4gYiJQeXRob24iLnJlcGxhY2UoYiIiLCBiIi4iKSAgKi8KKyAgICAgICAgLyogICAgYicuUC55LnQuaC5vLm4uJyAgICAgICAgICAgICAgICAgICovCisgICAgICAgIHJldHVybiBzdHJpbmdsaWJfcmVwbGFjZV9pbnRlcmxlYXZlKHNlbGYsIHRvX3MsIHRvX2xlbiwgbWF4Y291bnQpOworICAgIH0KKworICAgIC8qIEV4Y2VwdCBmb3IgYiIiLnJlcGxhY2UoYiIiLCBiIkEiKSA9PSBiIkEiIHRoZXJlIGlzIG5vIHdheSBiZXlvbmQgdGhpcyAqLworICAgIC8qIHBvaW50IGZvciBhbiBlbXB0eSBzZWxmIGJ5dGVzIHRvIGdlbmVyYXRlIGEgbm9uLWVtcHR5IGJ5dGVzICovCisgICAgLyogU3BlY2lhbCBjYXNlIHNvIHRoZSByZW1haW5pbmcgY29kZSBhbHdheXMgZ2V0cyBhIG5vbi1lbXB0eSBieXRlcyAqLworICAgIGlmIChTVFJJTkdMSUJfTEVOKHNlbGYpID09IDApIHsKKyAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOworICAgIH0KKworICAgIGlmICh0b19sZW4gPT0gMCkgeworICAgICAgICAvKiBkZWxldGUgYWxsIG9jY3VycmVuY2VzIG9mICdmcm9tJyBieXRlcyAqLworICAgICAgICBpZiAoZnJvbV9sZW4gPT0gMSkgeworICAgICAgICAgICAgcmV0dXJuIHN0cmluZ2xpYl9yZXBsYWNlX2RlbGV0ZV9zaW5nbGVfY2hhcmFjdGVyKAorICAgICAgICAgICAgICAgIHNlbGYsIGZyb21fc1swXSwgbWF4Y291bnQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIHN0cmluZ2xpYl9yZXBsYWNlX2RlbGV0ZV9zdWJzdHJpbmcoCisgICAgICAgICAgICAgICAgc2VsZiwgZnJvbV9zLCBmcm9tX2xlbiwgbWF4Y291bnQpOworICAgICAgICB9CisgICAgfQorCisgICAgLyogSGFuZGxlIHNwZWNpYWwgY2FzZSB3aGVyZSBib3RoIGJ5dGVzIGhhdmUgdGhlIHNhbWUgbGVuZ3RoICovCisKKyAgICBpZiAoZnJvbV9sZW4gPT0gdG9fbGVuKSB7CisgICAgICAgIGlmIChmcm9tX2xlbiA9PSAxKSB7CisgICAgICAgICAgICByZXR1cm4gc3RyaW5nbGliX3JlcGxhY2Vfc2luZ2xlX2NoYXJhY3Rlcl9pbl9wbGFjZSgKKyAgICAgICAgICAgICAgICBzZWxmLCBmcm9tX3NbMF0sIHRvX3NbMF0sIG1heGNvdW50KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBzdHJpbmdsaWJfcmVwbGFjZV9zdWJzdHJpbmdfaW5fcGxhY2UoCisgICAgICAgICAgICAgICAgc2VsZiwgZnJvbV9zLCBmcm9tX2xlbiwgdG9fcywgdG9fbGVuLCBtYXhjb3VudCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBPdGhlcndpc2UgdXNlIHRoZSBtb3JlIGdlbmVyaWMgYWxnb3JpdGhtcyAqLworICAgIGlmIChmcm9tX2xlbiA9PSAxKSB7CisgICAgICAgIHJldHVybiBzdHJpbmdsaWJfcmVwbGFjZV9zaW5nbGVfY2hhcmFjdGVyKAorICAgICAgICAgICAgc2VsZiwgZnJvbV9zWzBdLCB0b19zLCB0b19sZW4sIG1heGNvdW50KTsKKyAgICB9IGVsc2UgeworICAgICAgICAvKiBsZW4oJ2Zyb20nKT49MiwgbGVuKCd0bycpPj0xICovCisgICAgICAgIHJldHVybiBzdHJpbmdsaWJfcmVwbGFjZV9zdWJzdHJpbmcoCisgICAgICAgICAgICBzZWxmLCBmcm9tX3MsIGZyb21fbGVuLCB0b19zLCB0b19sZW4sIG1heGNvdW50KTsKKyAgICB9Cit9CisKKyN1bmRlZiBmaW5kY2hhcgpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvdW5pY29kZV9mb3JtYXQuaCBiL09iamVjdHMvc3RyaW5nbGliL3VuaWNvZGVfZm9ybWF0LmgKaW5kZXggYmUwOWI1Zi4uMTRmYTI4ZSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9zdHJpbmdsaWIvdW5pY29kZV9mb3JtYXQuaAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi91bmljb2RlX2Zvcm1hdC5oCkBAIC02Nyw3ICs2Nyw3IEBACiAgICAgcmV0dXJuIFB5VW5pY29kZV9TdWJzdHJpbmcoc3RyLT5zdHIsIHN0ci0+c3RhcnQsIHN0ci0+ZW5kKTsKIH0KIAotLyogcmV0dXJuIGEgbmV3IHN0cmluZy4gIGlmIHN0ci0+c3RyIGlzIE5VTEwsIHJldHVybiBOb25lICovCisvKiByZXR1cm4gYSBuZXcgc3RyaW5nLiAgaWYgc3RyLT5zdHIgaXMgTlVMTCwgcmV0dXJuIGEgbmV3IGVtcHR5IHN0cmluZyAqLwogUHlfTE9DQUxfSU5MSU5FKFB5T2JqZWN0ICopCiBTdWJTdHJpbmdfbmV3X29iamVjdF9vcl9lbXB0eShTdWJTdHJpbmcgKnN0cikKIHsKZGlmZiAtLWdpdCBhL09iamVjdHMvc3RydWN0c2VxLmMgYi9PYmplY3RzL3N0cnVjdHNlcS5jCmluZGV4IDY2NDM0NGIuLjU0ODlhZWYgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RydWN0c2VxLmMKKysrIGIvT2JqZWN0cy9zdHJ1Y3RzZXEuYwpAQCAtNCw5ICs0LDkgQEAKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKIAotc3RhdGljIGNoYXIgdmlzaWJsZV9sZW5ndGhfa2V5W10gPSAibl9zZXF1ZW5jZV9maWVsZHMiOwotc3RhdGljIGNoYXIgcmVhbF9sZW5ndGhfa2V5W10gPSAibl9maWVsZHMiOwotc3RhdGljIGNoYXIgdW5uYW1lZF9maWVsZHNfa2V5W10gPSAibl91bm5hbWVkX2ZpZWxkcyI7CitzdGF0aWMgY29uc3QgY2hhciB2aXNpYmxlX2xlbmd0aF9rZXlbXSA9ICJuX3NlcXVlbmNlX2ZpZWxkcyI7CitzdGF0aWMgY29uc3QgY2hhciByZWFsX2xlbmd0aF9rZXlbXSA9ICJuX2ZpZWxkcyI7CitzdGF0aWMgY29uc3QgY2hhciB1bm5hbWVkX2ZpZWxkc19rZXlbXSA9ICJuX3VubmFtZWRfZmllbGRzIjsKIAogLyogRmllbGRzIHdpdGggdGhpcyBuYW1lIGhhdmUgb25seSBhIGZpZWxkIGluZGV4LCBub3QgYSBmaWVsZCBuYW1lLgogICAgVGhleSBhcmUgb25seSBhbGxvd2VkIGZvciBpbmRpY2VzIDwgbl92aXNpYmxlX2ZpZWxkcy4gKi8KQEAgLTE2LDE0ICsxNiwxNCBAQAogX1B5X0lERU5USUZJRVIobl91bm5hbWVkX2ZpZWxkcyk7CiAKICNkZWZpbmUgVklTSUJMRV9TSVpFKG9wKSBQeV9TSVpFKG9wKQotI2RlZmluZSBWSVNJQkxFX1NJWkVfVFAodHApIFB5TG9uZ19Bc0xvbmcoIFwKKyNkZWZpbmUgVklTSUJMRV9TSVpFX1RQKHRwKSBQeUxvbmdfQXNTc2l6ZV90KCBcCiAgICAgICAgICAgICAgICAgICAgICAgX1B5RGljdF9HZXRJdGVtSWQoKHRwKS0+dHBfZGljdCwgJlB5SWRfbl9zZXF1ZW5jZV9maWVsZHMpKQogCi0jZGVmaW5lIFJFQUxfU0laRV9UUCh0cCkgUHlMb25nX0FzTG9uZyggXAorI2RlZmluZSBSRUFMX1NJWkVfVFAodHApIFB5TG9uZ19Bc1NzaXplX3QoIFwKICAgICAgICAgICAgICAgICAgICAgICBfUHlEaWN0X0dldEl0ZW1JZCgodHApLT50cF9kaWN0LCAmUHlJZF9uX2ZpZWxkcykpCiAjZGVmaW5lIFJFQUxfU0laRShvcCkgUkVBTF9TSVpFX1RQKFB5X1RZUEUob3ApKQogCi0jZGVmaW5lIFVOTkFNRURfRklFTERTX1RQKHRwKSBQeUxvbmdfQXNMb25nKCBcCisjZGVmaW5lIFVOTkFNRURfRklFTERTX1RQKHRwKSBQeUxvbmdfQXNTc2l6ZV90KCBcCiAgICAgICAgICAgICAgICAgICAgICAgX1B5RGljdF9HZXRJdGVtSWQoKHRwKS0+dHBfZGljdCwgJlB5SWRfbl91bm5hbWVkX2ZpZWxkcykpCiAjZGVmaW5lIFVOTkFNRURfRklFTERTKG9wKSBVTk5BTUVEX0ZJRUxEU19UUChQeV9UWVBFKG9wKSkKIApAQCAtMTY0LDcgKzE2NCw4IEBACiAjZGVmaW5lIFRZUEVfTUFYU0laRSAxMDAKIAogICAgIFB5VHlwZU9iamVjdCAqdHlwID0gUHlfVFlQRShvYmopOwotICAgIGludCBpLCByZW1vdmVsYXN0ID0gMDsKKyAgICBQeV9zc2l6ZV90IGk7CisgICAgaW50IHJlbW92ZWxhc3QgPSAwOwogICAgIFB5X3NzaXplX3QgbGVuOwogICAgIGNoYXIgYnVmW1JFUFJfQlVGRkVSX1NJWkVdOwogICAgIGNoYXIgKmVuZG9mYnVmLCAqcGJ1ZiA9IGJ1ZjsKQEAgLTE5Myw3ICsxOTQsNyBAQAogICAgICAgICByZXByID0gUHlPYmplY3RfUmVwcih2YWwpOwogICAgICAgICBpZiAocmVwciA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGNyZXByID0gX1B5VW5pY29kZV9Bc1N0cmluZyhyZXByKTsKKyAgICAgICAgY3JlcHIgPSBQeVVuaWNvZGVfQXNVVEY4KHJlcHIpOwogICAgICAgICBpZiAoY3JlcHIgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlfREVDUkVGKHJlcHIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yMzYsOCArMjM3LDcgQEAKICAgICBQeU9iamVjdCogdHVwID0gTlVMTDsKICAgICBQeU9iamVjdCogZGljdCA9IE5VTEw7CiAgICAgUHlPYmplY3QqIHJlc3VsdDsKLSAgICBQeV9zc2l6ZV90IG5fZmllbGRzLCBuX3Zpc2libGVfZmllbGRzLCBuX3VubmFtZWRfZmllbGRzOwotICAgIGludCBpOworICAgIFB5X3NzaXplX3Qgbl9maWVsZHMsIG5fdmlzaWJsZV9maWVsZHMsIG5fdW5uYW1lZF9maWVsZHMsIGk7CiAKICAgICBuX2ZpZWxkcyA9IFJFQUxfU0laRShzZWxmKTsKICAgICBuX3Zpc2libGVfZmllbGRzID0gVklTSUJMRV9TSVpFKHNlbGYpOwpAQCAtMzI1LDcgKzMyNSw3IEBACiB7CiAgICAgUHlPYmplY3QgKmRpY3Q7CiAgICAgUHlNZW1iZXJEZWYqIG1lbWJlcnM7Ci0gICAgaW50IG5fbWVtYmVycywgbl91bm5hbWVkX21lbWJlcnMsIGksIGs7CisgICAgUHlfc3NpemVfdCBuX21lbWJlcnMsIG5fdW5uYW1lZF9tZW1iZXJzLCBpLCBrOwogICAgIFB5T2JqZWN0ICp2OwogCiAjaWZkZWYgUHlfVFJBQ0VfUkVGUwpAQCAtMzczLDkgKzM3Myw5IEBACiAgICAgUHlfSU5DUkVGKHR5cGUpOwogCiAgICAgZGljdCA9IHR5cGUtPnRwX2RpY3Q7Ci0jZGVmaW5lIFNFVF9ESUNUX0ZST01fSU5UKGtleSwgdmFsdWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorI2RlZmluZSBTRVRfRElDVF9GUk9NX1NJWkUoa2V5LCB2YWx1ZSkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHYgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpIHZhbHVlKTsgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB2ID0gUHlMb25nX0Zyb21Tc2l6ZV90KHZhbHVlKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgaWYgKHYgPT0gTlVMTCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICByZXR1cm4gLTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZGljdCwga2V5LCB2KSA8IDApIHsgICAgICAgICAgIFwKQEAgLTM4NSw5ICszODUsOSBAQAogICAgICAgICBQeV9ERUNSRUYodik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlICgwKQogCi0gICAgU0VUX0RJQ1RfRlJPTV9JTlQodmlzaWJsZV9sZW5ndGhfa2V5LCBkZXNjLT5uX2luX3NlcXVlbmNlKTsKLSAgICBTRVRfRElDVF9GUk9NX0lOVChyZWFsX2xlbmd0aF9rZXksIG5fbWVtYmVycyk7Ci0gICAgU0VUX0RJQ1RfRlJPTV9JTlQodW5uYW1lZF9maWVsZHNfa2V5LCBuX3VubmFtZWRfbWVtYmVycyk7CisgICAgU0VUX0RJQ1RfRlJPTV9TSVpFKHZpc2libGVfbGVuZ3RoX2tleSwgZGVzYy0+bl9pbl9zZXF1ZW5jZSk7CisgICAgU0VUX0RJQ1RfRlJPTV9TSVpFKHJlYWxfbGVuZ3RoX2tleSwgbl9tZW1iZXJzKTsKKyAgICBTRVRfRElDVF9GUk9NX1NJWkUodW5uYW1lZF9maWVsZHNfa2V5LCBuX3VubmFtZWRfbWVtYmVycyk7CiAKICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL09iamVjdHMvdHVwbGVvYmplY3QuYyBiL09iamVjdHMvdHVwbGVvYmplY3QuYwppbmRleCA3OTIwZmVjLi5jMGZmNDk5IDEwMDY0NAotLS0gYS9PYmplY3RzL3R1cGxlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy90dXBsZW9iamVjdC5jCkBAIC0zNiw2ICszNiwxNiBAQAogc3RhdGljIHZvaWQKIHNob3dfdHJhY2sodm9pZCkKIHsKKyAgICBQeU9iamVjdCAqeG9wdGlvbnMsICp2YWx1ZTsKKyAgICBfUHlfSURFTlRJRklFUihzaG93YWxsb2Njb3VudCk7CisKKyAgICB4b3B0aW9ucyA9IFB5U3lzX0dldFhPcHRpb25zKCk7CisgICAgaWYgKHhvcHRpb25zID09IE5VTEwpCisgICAgICAgIHJldHVybjsKKyAgICB2YWx1ZSA9IF9QeURpY3RfR2V0SXRlbUlkKHhvcHRpb25zLCAmUHlJZF9zaG93YWxsb2Njb3VudCk7CisgICAgaWYgKHZhbHVlICE9IFB5X1RydWUpCisgICAgICAgIHJldHVybjsKKwogICAgIGZwcmludGYoc3RkZXJyLCAiVHVwbGVzIGNyZWF0ZWQ6ICUiIFBZX0ZPUk1BVF9TSVpFX1QgImRcbiIsCiAgICAgICAgIGNvdW50X3RyYWNrZWQgKyBjb3VudF91bnRyYWNrZWQpOwogICAgIGZwcmludGYoc3RkZXJyLCAiVHVwbGVzIHRyYWNrZWQgYnkgdGhlIEdDOiAlIiBQWV9GT1JNQVRfU0laRV9UCkBAIC0xNDksNyArMTU5LDYgQEAKIGludAogUHlUdXBsZV9TZXRJdGVtKFB5T2JqZWN0ICpvcCwgUHlfc3NpemVfdCBpLCBQeU9iamVjdCAqbmV3aXRlbSkKIHsKLSAgICBQeU9iamVjdCAqb2xkaXRlbTsKICAgICBQeU9iamVjdCAqKnA7CiAgICAgaWYgKCFQeVR1cGxlX0NoZWNrKG9wKSB8fCBvcC0+b2JfcmVmY250ICE9IDEpIHsKICAgICAgICAgUHlfWERFQ1JFRihuZXdpdGVtKTsKQEAgLTE2Myw5ICsxNzIsNyBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIHAgPSAoKFB5VHVwbGVPYmplY3QgKilvcCkgLT4gb2JfaXRlbSArIGk7Ci0gICAgb2xkaXRlbSA9ICpwOwotICAgICpwID0gbmV3aXRlbTsKLSAgICBQeV9YREVDUkVGKG9sZGl0ZW0pOworICAgIFB5X1hTRVRSRUYoKnAsIG5ld2l0ZW0pOwogICAgIHJldHVybiAwOwogfQogCkBAIC00NDYsOSArNDUzLDkgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogI2RlZmluZSBiICgoUHlUdXBsZU9iamVjdCAqKWJiKQotICAgIHNpemUgPSBQeV9TSVpFKGEpICsgUHlfU0laRShiKTsKLSAgICBpZiAoc2l6ZSA8IDApCisgICAgaWYgKFB5X1NJWkUoYSkgPiBQWV9TU0laRV9UX01BWCAtIFB5X1NJWkUoYikpCiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgIHNpemUgPSBQeV9TSVpFKGEpICsgUHlfU0laRShiKTsKICAgICBucCA9IChQeVR1cGxlT2JqZWN0ICopIFB5VHVwbGVfTmV3KHNpemUpOwogICAgIGlmIChucCA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy90eXBlb2JqZWN0LmMgYi9PYmplY3RzL3R5cGVvYmplY3QuYwppbmRleCA3Yjc2ZTVjLi4zMjkyNjFiIDEwMDY0NAotLS0gYS9PYmplY3RzL3R5cGVvYmplY3QuYworKysgYi9PYmplY3RzL3R5cGVvYmplY3QuYwpAQCAtNTMsMTAgKzUzLDEyIEBACiBfUHlfSURFTlRJRklFUihfX2dldGF0dHJpYnV0ZV9fKTsKIF9QeV9JREVOVElGSUVSKF9fZ2V0aXRlbV9fKTsKIF9QeV9JREVOVElGSUVSKF9faGFzaF9fKTsKK19QeV9JREVOVElGSUVSKF9faW5pdF9zdWJjbGFzc19fKTsKIF9QeV9JREVOVElGSUVSKF9fbGVuX18pOwogX1B5X0lERU5USUZJRVIoX19tb2R1bGVfXyk7CiBfUHlfSURFTlRJRklFUihfX25hbWVfXyk7CiBfUHlfSURFTlRJRklFUihfX25ld19fKTsKK19QeV9JREVOVElGSUVSKF9fc2V0X25hbWVfXyk7CiBfUHlfSURFTlRJRklFUihfX3NldGl0ZW1fXyk7CiBfUHlfSURFTlRJRklFUihidWlsdGlucyk7CiAKQEAgLTQ1MiwyNyArNDU0LDMwIEBACiBzdGF0aWMgUHlPYmplY3QgKgogdHlwZV9tb2R1bGUoUHlUeXBlT2JqZWN0ICp0eXBlLCB2b2lkICpjb250ZXh0KQogewotICAgIGNoYXIgKnM7CisgICAgUHlPYmplY3QgKm1vZDsKIAogICAgIGlmICh0eXBlLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEVBUFRZUEUpIHsKLSAgICAgICAgUHlPYmplY3QgKm1vZCA9IF9QeURpY3RfR2V0SXRlbUlkKHR5cGUtPnRwX2RpY3QsICZQeUlkX19fbW9kdWxlX18pOwotICAgICAgICBpZiAoIW1vZCkgeworICAgICAgICBtb2QgPSBfUHlEaWN0X0dldEl0ZW1JZCh0eXBlLT50cF9kaWN0LCAmUHlJZF9fX21vZHVsZV9fKTsKKyAgICAgICAgaWYgKG1vZCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfQXR0cmlidXRlRXJyb3IsICJfX21vZHVsZV9fIik7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIFB5X1hJTkNSRUYobW9kKTsKLSAgICAgICAgcmV0dXJuIG1vZDsKKyAgICAgICAgUHlfSU5DUkVGKG1vZCk7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBQeU9iamVjdCAqbmFtZTsKLSAgICAgICAgcyA9IHN0cnJjaHIodHlwZS0+dHBfbmFtZSwgJy4nKTsKLSAgICAgICAgaWYgKHMgIT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoCisgICAgICAgIGNvbnN0IGNoYXIgKnMgPSBzdHJyY2hyKHR5cGUtPnRwX25hbWUsICcuJyk7CisgICAgICAgIGlmIChzICE9IE5VTEwpIHsKKyAgICAgICAgICAgIG1vZCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZSgKICAgICAgICAgICAgICAgICB0eXBlLT50cF9uYW1lLCAoUHlfc3NpemVfdCkocyAtIHR5cGUtPnRwX25hbWUpKTsKLSAgICAgICAgbmFtZSA9IF9QeVVuaWNvZGVfRnJvbUlkKCZQeUlkX2J1aWx0aW5zKTsKLSAgICAgICAgUHlfWElOQ1JFRihuYW1lKTsKLSAgICAgICAgcmV0dXJuIG5hbWU7CisgICAgICAgICAgICBpZiAobW9kICE9IE5VTEwpCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ludGVybkluUGxhY2UoJm1vZCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtb2QgPSBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9idWlsdGlucyk7CisgICAgICAgICAgICBQeV9YSU5DUkVGKG1vZCk7CisgICAgICAgIH0KICAgICB9CisgICAgcmV0dXJuIG1vZDsKIH0KIAogc3RhdGljIGludApAQCAtNTAwLDcgKzUwNSw3IEBACiAgICAgICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfQXR0cmlidXRlRXJyb3IsIG1lc3NhZ2UpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgUHlfWElOQ1JFRihtb2QpOworICAgIFB5X0lOQ1JFRihtb2QpOwogICAgIHJldHVybiBtb2Q7CiB9CiAKQEAgLTU0Nyw4ICs1NTIsOCBAQAogCiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpiZXN0X2Jhc2UoUHlPYmplY3QgKik7CiBzdGF0aWMgaW50IG1yb19pbnRlcm5hbChQeVR5cGVPYmplY3QgKiwgUHlPYmplY3QgKiopOwotUHlfTE9DQUxfSU5MSU5FKGludCkgdHlwZV9pc19zdWJ0eXBlX2Jhc2VfY2hhaW4oUHlUeXBlT2JqZWN0ICosIFB5VHlwZU9iamVjdCAqKTsKLXN0YXRpYyBpbnQgY29tcGF0aWJsZV9mb3JfYXNzaWdubWVudChQeVR5cGVPYmplY3QgKiwgUHlUeXBlT2JqZWN0ICosIGNoYXIgKik7CitzdGF0aWMgaW50IHR5cGVfaXNfc3VidHlwZV9iYXNlX2NoYWluKFB5VHlwZU9iamVjdCAqLCBQeVR5cGVPYmplY3QgKik7CitzdGF0aWMgaW50IGNvbXBhdGlibGVfZm9yX2Fzc2lnbm1lbnQoUHlUeXBlT2JqZWN0ICosIFB5VHlwZU9iamVjdCAqLCBjb25zdCBjaGFyICopOwogc3RhdGljIGludCBhZGRfc3ViY2xhc3MoUHlUeXBlT2JqZWN0KiwgUHlUeXBlT2JqZWN0Kik7CiBzdGF0aWMgaW50IGFkZF9hbGxfc3ViY2xhc3NlcyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICpiYXNlcyk7CiBzdGF0aWMgdm9pZCByZW1vdmVfc3ViY2xhc3MoUHlUeXBlT2JqZWN0ICosIFB5VHlwZU9iamVjdCAqKTsKQEAgLTg4OCwyNSArODkzLDMzIEBACiAjZW5kaWYKIAogICAgIG9iaiA9IHR5cGUtPnRwX25ldyh0eXBlLCBhcmdzLCBrd2RzKTsKLSAgICBpZiAob2JqICE9IE5VTEwpIHsKLSAgICAgICAgLyogVWdseSBleGNlcHRpb246IHdoZW4gdGhlIGNhbGwgd2FzIHR5cGUoc29tZXRoaW5nKSwKLSAgICAgICAgICAgZG9uJ3QgY2FsbCB0cF9pbml0IG9uIHRoZSByZXN1bHQuICovCi0gICAgICAgIGlmICh0eXBlID09ICZQeVR5cGVfVHlwZSAmJgotICAgICAgICAgICAgUHlUdXBsZV9DaGVjayhhcmdzKSAmJiBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpID09IDEgJiYKLSAgICAgICAgICAgIChrd2RzID09IE5VTEwgfHwKLSAgICAgICAgICAgICAoUHlEaWN0X0NoZWNrKGt3ZHMpICYmIFB5RGljdF9TaXplKGt3ZHMpID09IDApKSkKLSAgICAgICAgICAgIHJldHVybiBvYmo7Ci0gICAgICAgIC8qIElmIHRoZSByZXR1cm5lZCBvYmplY3QgaXMgbm90IGFuIGluc3RhbmNlIG9mIHR5cGUsCi0gICAgICAgICAgIGl0IHdvbid0IGJlIGluaXRpYWxpemVkLiAqLwotICAgICAgICBpZiAoIVB5VHlwZV9Jc1N1YnR5cGUoUHlfVFlQRShvYmopLCB0eXBlKSkKLSAgICAgICAgICAgIHJldHVybiBvYmo7Ci0gICAgICAgIHR5cGUgPSBQeV9UWVBFKG9iaik7Ci0gICAgICAgIGlmICh0eXBlLT50cF9pbml0ICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGludCByZXMgPSB0eXBlLT50cF9pbml0KG9iaiwgYXJncywga3dkcyk7Ci0gICAgICAgICAgICBpZiAocmVzIDwgMCkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihvYmopOwotICAgICAgICAgICAgICAgIG9iaiA9IE5VTEw7Ci0gICAgICAgICAgICB9CisgICAgb2JqID0gX1B5X0NoZWNrRnVuY3Rpb25SZXN1bHQoKFB5T2JqZWN0Kil0eXBlLCBvYmosIE5VTEwpOworICAgIGlmIChvYmogPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvKiBVZ2x5IGV4Y2VwdGlvbjogd2hlbiB0aGUgY2FsbCB3YXMgdHlwZShzb21ldGhpbmcpLAorICAgICAgIGRvbid0IGNhbGwgdHBfaW5pdCBvbiB0aGUgcmVzdWx0LiAqLworICAgIGlmICh0eXBlID09ICZQeVR5cGVfVHlwZSAmJgorICAgICAgICBQeVR1cGxlX0NoZWNrKGFyZ3MpICYmIFB5VHVwbGVfR0VUX1NJWkUoYXJncykgPT0gMSAmJgorICAgICAgICAoa3dkcyA9PSBOVUxMIHx8CisgICAgICAgICAoUHlEaWN0X0NoZWNrKGt3ZHMpICYmIFB5RGljdF9TaXplKGt3ZHMpID09IDApKSkKKyAgICAgICAgcmV0dXJuIG9iajsKKworICAgIC8qIElmIHRoZSByZXR1cm5lZCBvYmplY3QgaXMgbm90IGFuIGluc3RhbmNlIG9mIHR5cGUsCisgICAgICAgaXQgd29uJ3QgYmUgaW5pdGlhbGl6ZWQuICovCisgICAgaWYgKCFQeVR5cGVfSXNTdWJ0eXBlKFB5X1RZUEUob2JqKSwgdHlwZSkpCisgICAgICAgIHJldHVybiBvYmo7CisKKyAgICB0eXBlID0gUHlfVFlQRShvYmopOworICAgIGlmICh0eXBlLT50cF9pbml0ICE9IE5VTEwpIHsKKyAgICAgICAgaW50IHJlcyA9IHR5cGUtPnRwX2luaXQob2JqLCBhcmdzLCBrd2RzKTsKKyAgICAgICAgaWYgKHJlcyA8IDApIHsKKyAgICAgICAgICAgIGFzc2VydChQeUVycl9PY2N1cnJlZCgpKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihvYmopOworICAgICAgICAgICAgb2JqID0gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGFzc2VydCghUHlFcnJfT2NjdXJyZWQoKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIG9iajsKQEAgLTEzMjQsNyArMTMzNyw3IEBACiAKIC8qIHR5cGUgdGVzdCB3aXRoIHN1YmNsYXNzaW5nIHN1cHBvcnQgKi8KIAotUHlfTE9DQUxfSU5MSU5FKGludCkKK3N0YXRpYyBpbnQKIHR5cGVfaXNfc3VidHlwZV9iYXNlX2NoYWluKFB5VHlwZU9iamVjdCAqYSwgUHlUeXBlT2JqZWN0ICpiKQogewogICAgIGRvIHsKQEAgLTE0MTIsMzYgKzE0MjUsMzggQEAKICAgIGFzIGxvb2t1cF9tZXRob2QgdG8gY2FjaGUgdGhlIGludGVybmVkIG5hbWUgc3RyaW5nIG9iamVjdC4gKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWNhbGxfbWV0aG9kKFB5T2JqZWN0ICpvLCBfUHlfSWRlbnRpZmllciAqbmFtZWlkLCBjaGFyICpmb3JtYXQsIC4uLikKK2NhbGxfbWV0aG9kKFB5T2JqZWN0ICpvLCBfUHlfSWRlbnRpZmllciAqbmFtZWlkLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKIHsKICAgICB2YV9saXN0IHZhOwotICAgIFB5T2JqZWN0ICphcmdzLCAqZnVuYyA9IDAsICpyZXR2YWw7Ci0gICAgdmFfc3RhcnQodmEsIGZvcm1hdCk7CisgICAgUHlPYmplY3QgKmZ1bmMgPSBOVUxMLCAqcmV0dmFsOwogCiAgICAgZnVuYyA9IGxvb2t1cF9tYXliZShvLCBuYW1laWQpOwogICAgIGlmIChmdW5jID09IE5VTEwpIHsKLSAgICAgICAgdmFfZW5kKHZhKTsKICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX0F0dHJpYnV0ZUVycm9yLCBuYW1laWQtPm9iamVjdCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmIChmb3JtYXQgJiYgKmZvcm1hdCkKKyAgICBpZiAoZm9ybWF0ICYmICpmb3JtYXQpIHsKKyAgICAgICAgUHlPYmplY3QgKmFyZ3M7CisKKyAgICAgICAgdmFfc3RhcnQodmEsIGZvcm1hdCk7CiAgICAgICAgIGFyZ3MgPSBQeV9WYUJ1aWxkVmFsdWUoZm9ybWF0LCB2YSk7Ci0gICAgZWxzZQotICAgICAgICBhcmdzID0gUHlUdXBsZV9OZXcoMCk7CisgICAgICAgIHZhX2VuZCh2YSk7CiAKLSAgICB2YV9lbmQodmEpOworICAgICAgICBpZiAoYXJncyA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoZnVuYyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnQoUHlUdXBsZV9DaGVjayhhcmdzKSk7CiAKLSAgICBpZiAoYXJncyA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHZhbCA9IFB5T2JqZWN0X0NhbGwoZnVuYywgYXJncywgTlVMTCk7CisgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHZhbCA9IF9QeU9iamVjdF9DYWxsTm9BcmcoZnVuYyk7CiAgICAgfQogCi0gICAgYXNzZXJ0KFB5VHVwbGVfQ2hlY2soYXJncykpOwotICAgIHJldHZhbCA9IFB5T2JqZWN0X0NhbGwoZnVuYywgYXJncywgTlVMTCk7Ci0KLSAgICBQeV9ERUNSRUYoYXJncyk7CiAgICAgUHlfREVDUkVGKGZ1bmMpOwogCiAgICAgcmV0dXJuIHJldHZhbDsKQEAgLTE0NTAsMzYgKzE0NjUsMzggQEAKIC8qIENsb25lIG9mIGNhbGxfbWV0aG9kKCkgdGhhdCByZXR1cm5zIE5vdEltcGxlbWVudGVkIHdoZW4gdGhlIGxvb2t1cCBmYWlscy4gKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWNhbGxfbWF5YmUoUHlPYmplY3QgKm8sIF9QeV9JZGVudGlmaWVyICpuYW1laWQsIGNoYXIgKmZvcm1hdCwgLi4uKQorY2FsbF9tYXliZShQeU9iamVjdCAqbywgX1B5X0lkZW50aWZpZXIgKm5hbWVpZCwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCiB7CiAgICAgdmFfbGlzdCB2YTsKLSAgICBQeU9iamVjdCAqYXJncywgKmZ1bmMgPSAwLCAqcmV0dmFsOwotICAgIHZhX3N0YXJ0KHZhLCBmb3JtYXQpOworICAgIFB5T2JqZWN0ICpmdW5jID0gTlVMTCwgKnJldHZhbDsKIAogICAgIGZ1bmMgPSBsb29rdXBfbWF5YmUobywgbmFtZWlkKTsKICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7Ci0gICAgICAgIHZhX2VuZCh2YSk7CiAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKGZvcm1hdCAmJiAqZm9ybWF0KQorICAgIGlmIChmb3JtYXQgJiYgKmZvcm1hdCkgeworICAgICAgICBQeU9iamVjdCAqYXJnczsKKworICAgICAgICB2YV9zdGFydCh2YSwgZm9ybWF0KTsKICAgICAgICAgYXJncyA9IFB5X1ZhQnVpbGRWYWx1ZShmb3JtYXQsIHZhKTsKLSAgICBlbHNlCi0gICAgICAgIGFyZ3MgPSBQeVR1cGxlX05ldygwKTsKKyAgICAgICAgdmFfZW5kKHZhKTsKIAotICAgIHZhX2VuZCh2YSk7CisgICAgICAgIGlmIChhcmdzID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGFzc2VydChQeVR1cGxlX0NoZWNrKGFyZ3MpKTsKIAotICAgIGlmIChhcmdzID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dmFsID0gUHlPYmplY3RfQ2FsbChmdW5jLCBhcmdzLCBOVUxMKTsKKyAgICAgICAgUHlfREVDUkVGKGFyZ3MpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmV0dmFsID0gX1B5T2JqZWN0X0NhbGxOb0FyZyhmdW5jKTsKICAgICB9CiAKLSAgICBhc3NlcnQoUHlUdXBsZV9DaGVjayhhcmdzKSk7Ci0gICAgcmV0dmFsID0gUHlPYmplY3RfQ2FsbChmdW5jLCBhcmdzLCBOVUxMKTsKLQotICAgIFB5X0RFQ1JFRihhcmdzKTsKICAgICBQeV9ERUNSRUYoZnVuYyk7CiAKICAgICByZXR1cm4gcmV0dmFsOwpAQCAtMTUzMSw3ICsxNTQ4LDYgQEAKICAgICBQeU9iamVjdCAqbmFtZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoY2xzLCAmUHlJZF9fX25hbWVfXyk7CiAgICAgaWYgKG5hbWUgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBQeV9YREVDUkVGKG5hbWUpOwogICAgICAgICBuYW1lID0gUHlPYmplY3RfUmVwcihjbHMpOwogICAgIH0KICAgICBpZiAobmFtZSA9PSBOVUxMKQpAQCAtMTYxMCw3ICsxNjI2LDcgQEAKICAgICAgICAgUHlPYmplY3QgKm5hbWUgPSBjbGFzc19uYW1lKGspOwogICAgICAgICBjaGFyICpuYW1lX3N0cjsKICAgICAgICAgaWYgKG5hbWUgIT0gTlVMTCkgewotICAgICAgICAgICAgbmFtZV9zdHIgPSBfUHlVbmljb2RlX0FzU3RyaW5nKG5hbWUpOworICAgICAgICAgICAgbmFtZV9zdHIgPSBQeVVuaWNvZGVfQXNVVEY4KG5hbWUpOwogICAgICAgICAgICAgaWYgKG5hbWVfc3RyID09IE5VTEwpCiAgICAgICAgICAgICAgICAgbmFtZV9zdHIgPSAiPyI7CiAgICAgICAgIH0gZWxzZQpAQCAtMjAyNSw2ICsyMDQxLDggQEAKIHN0YXRpYyBpbnQgb2JqZWN0X2luaXQoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiBzdGF0aWMgaW50IHVwZGF0ZV9zbG90KFB5VHlwZU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIHN0YXRpYyB2b2lkIGZpeHVwX3Nsb3RfZGlzcGF0Y2hlcnMoUHlUeXBlT2JqZWN0ICopOworc3RhdGljIGludCBzZXRfbmFtZXMoUHlUeXBlT2JqZWN0ICopOworc3RhdGljIGludCBpbml0X3N1YmNsYXNzKFB5VHlwZU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIAogLyoKICAqIEhlbHBlcnMgZm9yICBfX2RpY3RfXyBkZXNjcmlwdG9yLiAgV2UgZG9uJ3Qgd2FudCB0byBleHBvc2UgdGhlIGRpY3RzCkBAIC0yMDg5LDcgKzIxMDcsNyBAQAogc3RhdGljIGludAogc3VidHlwZV9zZXRkaWN0KFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY29udGV4dCkKIHsKLSAgICBQeU9iamVjdCAqZGljdCwgKipkaWN0cHRyOworICAgIFB5T2JqZWN0ICoqZGljdHB0cjsKICAgICBQeVR5cGVPYmplY3QgKmJhc2U7CiAKICAgICBiYXNlID0gZ2V0X2J1aWx0aW5fYmFzZV93aXRoX2RpY3QoUHlfVFlQRShvYmopKTsKQEAgLTIxMjAsMTAgKzIxMzgsOCBAQAogICAgICAgICAgICAgICAgICAgICAgIm5vdCBhICclLjIwMHMnIiwgUHlfVFlQRSh2YWx1ZSktPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIGRpY3QgPSAqZGljdHB0cjsKICAgICBQeV9YSU5DUkVGKHZhbHVlKTsKLSAgICAqZGljdHB0ciA9IHZhbHVlOwotICAgIFB5X1hERUNSRUYoZGljdCk7CisgICAgUHlfWFNFVFJFRigqZGljdHB0ciwgdmFsdWUpOwogICAgIHJldHVybiAwOwogfQogCkBAIC0yMjAyLDcgKzIyMTgsOCBAQAogICAgIGFzc2VydChhcmdzICE9IE5VTEwgJiYgUHlUdXBsZV9DaGVjayhhcmdzKSk7CiAgICAgYXNzZXJ0KGt3ZHMgPT0gTlVMTCB8fCBQeURpY3RfQ2hlY2soa3dkcykpOwogCi0gICAgaWYgKGt3ZHMgIT0gTlVMTCAmJiBQeURpY3RfQ2hlY2soa3dkcykgJiYgUHlEaWN0X1NpemUoa3dkcykgIT0gMCkgeworICAgIGlmIChrd2RzICE9IE5VTEwgJiYgUHlUdXBsZV9DaGVjayhhcmdzKSAmJiBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpID09IDEgJiYKKyAgICAgICAgUHlEaWN0X0NoZWNrKGt3ZHMpICYmIFB5RGljdF9TaXplKGt3ZHMpICE9IDApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlLl9faW5pdF9fKCkgdGFrZXMgbm8ga2V5d29yZCBhcmd1bWVudHMiKTsKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMjI2OSw4ICsyMjg2LDcgQEAKIHR5cGVfbmV3KFB5VHlwZU9iamVjdCAqbWV0YXR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKICAgICBQeU9iamVjdCAqbmFtZSwgKmJhc2VzID0gTlVMTCwgKm9yaWdfZGljdCwgKmRpY3QgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsibmFtZSIsICJiYXNlcyIsICJkaWN0IiwgMH07Ci0gICAgUHlPYmplY3QgKnF1YWxuYW1lLCAqc2xvdHMgPSBOVUxMLCAqdG1wLCAqbmV3c2xvdHM7CisgICAgUHlPYmplY3QgKnF1YWxuYW1lLCAqc2xvdHMgPSBOVUxMLCAqdG1wLCAqbmV3c2xvdHMsICpjZWxsOwogICAgIFB5VHlwZU9iamVjdCAqdHlwZSA9IE5VTEwsICpiYXNlLCAqdG1wdHlwZSwgKndpbm5lcjsKICAgICBQeUhlYXBUeXBlT2JqZWN0ICpldDsKICAgICBQeU1lbWJlckRlZiAqbXA7CkBAIC0yMjc4LDE2ICsyMjk0LDE5IEBACiAgICAgaW50IGosIG1heV9hZGRfZGljdCwgbWF5X2FkZF93ZWFrLCBhZGRfZGljdCwgYWRkX3dlYWs7CiAgICAgX1B5X0lERU5USUZJRVIoX19xdWFsbmFtZV9fKTsKICAgICBfUHlfSURFTlRJRklFUihfX3Nsb3RzX18pOworICAgIF9QeV9JREVOVElGSUVSKF9fY2xhc3NjZWxsX18pOwogCiAgICAgYXNzZXJ0KGFyZ3MgIT0gTlVMTCAmJiBQeVR1cGxlX0NoZWNrKGFyZ3MpKTsKICAgICBhc3NlcnQoa3dkcyA9PSBOVUxMIHx8IFB5RGljdF9DaGVjayhrd2RzKSk7CiAKICAgICAvKiBTcGVjaWFsIGNhc2U6IHR5cGUoeCkgc2hvdWxkIHJldHVybiB4LT5vYl90eXBlICovCi0gICAgeworICAgIC8qIFdlIG9ubHkgd2FudCB0eXBlIGl0c2VsZiB0byBhY2NlcHQgdGhlIG9uZS1hcmd1bWVudCBmb3JtICgjMjcxNTcpCisgICAgICAgTm90ZTogV2UgZG9uJ3QgY2FsbCBQeVR5cGVfQ2hlY2tFeGFjdCBhcyB0aGF0IGFsc28gYWxsb3dzIHN1YmNsYXNzZXMgKi8KKyAgICBpZiAobWV0YXR5cGUgPT0gJlB5VHlwZV9UeXBlKSB7CiAgICAgICAgIGNvbnN0IFB5X3NzaXplX3QgbmFyZ3MgPSBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpOwogICAgICAgICBjb25zdCBQeV9zc2l6ZV90IG5rd2RzID0ga3dkcyA9PSBOVUxMID8gMCA6IFB5RGljdF9TaXplKGt3ZHMpOwogCi0gICAgICAgIGlmIChQeVR5cGVfQ2hlY2tFeGFjdChtZXRhdHlwZSkgJiYgbmFyZ3MgPT0gMSAmJiBua3dkcyA9PSAwKSB7CisgICAgICAgIGlmIChuYXJncyA9PSAxICYmIG5rd2RzID09IDApIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICp4ID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAwKTsKICAgICAgICAgICAgIFB5X0lOQ1JFRihQeV9UWVBFKHgpKTsKICAgICAgICAgICAgIHJldHVybiAoUHlPYmplY3QgKikgUHlfVFlQRSh4KTsKQEAgLTIyOTYsNyArMjMxNSw3IEBACiAgICAgICAgIC8qIFNGIGJ1ZyA0NzUzMjcgLS0gaWYgdGhhdCBkaWRuJ3QgdHJpZ2dlciwgd2UgbmVlZCAzCiAgICAgICAgICAgIGFyZ3VtZW50cy4gYnV0IFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyBiZWxvdyBtYXkgZ2l2ZQogICAgICAgICAgICBhIG1zZyBzYXlpbmcgdHlwZSgpIG5lZWRzIGV4YWN0bHkgMy4gKi8KLSAgICAgICAgaWYgKG5hcmdzICsgbmt3ZHMgIT0gMykgeworICAgICAgICBpZiAobmFyZ3MgIT0gMykgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSgpIHRha2VzIDEgb3IgMyBhcmd1bWVudHMiKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjMwNCwxMCArMjMyMyw4IEBACiAgICAgfQogCiAgICAgLyogQ2hlY2sgYXJndW1lbnRzOiAobmFtZSwgYmFzZXMsIGRpY3QpICovCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIlVPIU8hOnR5cGUiLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5VHVwbGVfVHlwZSwgJmJhc2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeURpY3RfVHlwZSwgJm9yaWdfZGljdCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVTyFPITp0eXBlLl9fbmV3X18iLCAmbmFtZSwgJlB5VHVwbGVfVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmJhc2VzLCAmUHlEaWN0X1R5cGUsICZvcmlnX2RpY3QpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qIERldGVybWluZSB0aGUgcHJvcGVyIG1ldGF0eXBlIHRvIGRlYWwgd2l0aCB0aGlzOiAqLwpAQCAtMjU0NCw3ICsyNTYxLDcgQEAKICAgICB9CiAgICAgZXQtPmh0X3F1YWxuYW1lID0gcXVhbG5hbWUgPyBxdWFsbmFtZSA6IGV0LT5odF9uYW1lOwogICAgIFB5X0lOQ1JFRihldC0+aHRfcXVhbG5hbWUpOwotICAgIGlmIChxdWFsbmFtZSAhPSBOVUxMICYmIFB5RGljdF9EZWxJdGVtKGRpY3QsIFB5SWRfX19xdWFsbmFtZV9fLm9iamVjdCkgPCAwKQorICAgIGlmIChxdWFsbmFtZSAhPSBOVUxMICYmIF9QeURpY3RfRGVsSXRlbUlkKGRpY3QsICZQeUlkX19fcXVhbG5hbWVfXykgPCAwKQogICAgICAgICBnb3RvIGVycm9yOwogCiAgICAgLyogU2V0IHRwX2RvYyB0byBhIGNvcHkgb2YgZGljdFsnX19kb2NfXyddLCBpZiB0aGUgbGF0dGVyIGlzIHRoZXJlCkBAIC0yNTU4LDcgKzI1NzUsNyBAQAogICAgICAgICAgICAgY2hhciAqZG9jX3N0cjsKICAgICAgICAgICAgIGNoYXIgKnRwX2RvYzsKIAotICAgICAgICAgICAgZG9jX3N0ciA9IF9QeVVuaWNvZGVfQXNTdHJpbmcoZG9jKTsKKyAgICAgICAgICAgIGRvY19zdHIgPSBQeVVuaWNvZGVfQXNVVEY4KGRvYyk7CiAgICAgICAgICAgICBpZiAoZG9jX3N0ciA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICAvKiBTaWxlbnRseSB0cnVuY2F0ZSB0aGUgZG9jc3RyaW5nIGlmIGl0IGNvbnRhaW5zIG51bGwgYnl0ZXMuICovCkBAIC0yNTg3LDEyICsyNjA0LDI2IEBACiAgICAgICAgIFB5X0RFQ1JFRih0bXApOwogICAgIH0KIAorICAgIC8qIFNwZWNpYWwtY2FzZSBfX2luaXRfc3ViY2xhc3NfXzogaWYgaXQncyBhIHBsYWluIGZ1bmN0aW9uLAorICAgICAgIG1ha2UgaXQgYSBjbGFzc21ldGhvZCAqLworICAgIHRtcCA9IF9QeURpY3RfR2V0SXRlbUlkKGRpY3QsICZQeUlkX19faW5pdF9zdWJjbGFzc19fKTsKKyAgICBpZiAodG1wICE9IE5VTEwgJiYgUHlGdW5jdGlvbl9DaGVjayh0bXApKSB7CisgICAgICAgIHRtcCA9IFB5Q2xhc3NNZXRob2RfTmV3KHRtcCk7CisgICAgICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIGlmIChfUHlEaWN0X1NldEl0ZW1JZChkaWN0LCAmUHlJZF9fX2luaXRfc3ViY2xhc3NfXywgdG1wKSA8IDApIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih0bXApOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBQeV9ERUNSRUYodG1wKTsKKyAgICB9CisKICAgICAvKiBBZGQgZGVzY3JpcHRvcnMgZm9yIGN1c3RvbSBzbG90cyBmcm9tIF9fc2xvdHNfXywgb3IgZm9yIF9fZGljdF9fICovCiAgICAgbXAgPSBQeUhlYXBUeXBlX0dFVF9NRU1CRVJTKGV0KTsKICAgICBzbG90b2Zmc2V0ID0gYmFzZS0+dHBfYmFzaWNzaXplOwogICAgIGlmIChldC0+aHRfc2xvdHMgIT0gTlVMTCkgewogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnNsb3RzOyBpKyssIG1wKyspIHsKLSAgICAgICAgICAgIG1wLT5uYW1lID0gX1B5VW5pY29kZV9Bc1N0cmluZygKKyAgICAgICAgICAgIG1wLT5uYW1lID0gUHlVbmljb2RlX0FzVVRGOCgKICAgICAgICAgICAgICAgICBQeVR1cGxlX0dFVF9JVEVNKGV0LT5odF9zbG90cywgaSkpOwogICAgICAgICAgICAgaWYgKG1wLT5uYW1lID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKQEAgLTI2NTYsNiArMjY4NywyMSBAQAogICAgIGVsc2UKICAgICAgICAgdHlwZS0+dHBfZnJlZSA9IFB5T2JqZWN0X0RlbDsKIAorICAgIC8qIHN0b3JlIHR5cGUgaW4gY2xhc3MnIGNlbGwgaWYgb25lIGlzIHN1cHBsaWVkICovCisgICAgY2VsbCA9IF9QeURpY3RfR2V0SXRlbUlkKGRpY3QsICZQeUlkX19fY2xhc3NjZWxsX18pOworICAgIGlmIChjZWxsICE9IE5VTEwpIHsKKyAgICAgICAgLyogQXQgbGVhc3Qgb25lIG1ldGhvZCByZXF1aXJlcyBhIHJlZmVyZW5jZSB0byBpdHMgZGVmaW5pbmcgY2xhc3MgKi8KKyAgICAgICAgaWYgKCFQeUNlbGxfQ2hlY2soY2VsbCkpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIl9fY2xhc3NjZWxsX18gbXVzdCBiZSBhIG5vbmxvY2FsIGNlbGwsIG5vdCAlLjIwMFIiLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoY2VsbCkpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBQeUNlbGxfU2V0KGNlbGwsIChQeU9iamVjdCAqKSB0eXBlKTsKKyAgICAgICAgX1B5RGljdF9EZWxJdGVtSWQoZGljdCwgJlB5SWRfX19jbGFzc2NlbGxfXyk7CisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgfQorCiAgICAgLyogSW5pdGlhbGl6ZSB0aGUgcmVzdCAqLwogICAgIGlmIChQeVR5cGVfUmVhZHkodHlwZSkgPCAwKQogICAgICAgICBnb3RvIGVycm9yOwpAQCAtMjY2Nyw2ICsyNzEzLDEyIEBACiAgICAgICAgIGV0LT5odF9jYWNoZWRfa2V5cyA9IF9QeURpY3RfTmV3S2V5c0ZvckNsYXNzKCk7CiAgICAgfQogCisgICAgaWYgKHNldF9uYW1lcyh0eXBlKSA8IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBpZiAoaW5pdF9zdWJjbGFzcyh0eXBlLCBrd2RzKSA8IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisKICAgICBQeV9ERUNSRUYoZGljdCk7CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKXR5cGU7CiAKQEAgLTI2NzgsNyArMjczMCw3IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLXN0YXRpYyBzaG9ydCBzbG90b2Zmc2V0c1tdID0geworc3RhdGljIGNvbnN0IHNob3J0IHNsb3RvZmZzZXRzW10gPSB7CiAgICAgLTEsIC8qIGludmFsaWQgc2xvdCAqLwogI2luY2x1ZGUgInR5cGVzbG90cy5pbmMiCiB9OwpAQCAtMjgwMywxMyArMjg1NSwxNiBAQAogICAgIC8qIFNldCB0eXBlLl9fbW9kdWxlX18gKi8KICAgICBzID0gc3RycmNocihzcGVjLT5uYW1lLCAnLicpOwogICAgIGlmIChzICE9IE5VTEwpIHsKKyAgICAgICAgaW50IGVycjsKICAgICAgICAgbW9kbmFtZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZSgKICAgICAgICAgICAgICAgICBzcGVjLT5uYW1lLCAoUHlfc3NpemVfdCkocyAtIHNwZWMtPm5hbWUpKTsKICAgICAgICAgaWYgKG1vZG5hbWUgPT0gTlVMTCkgewogICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICB9Ci0gICAgICAgIF9QeURpY3RfU2V0SXRlbUlkKHR5cGUtPnRwX2RpY3QsICZQeUlkX19fbW9kdWxlX18sIG1vZG5hbWUpOworICAgICAgICBlcnIgPSBfUHlEaWN0X1NldEl0ZW1JZCh0eXBlLT50cF9kaWN0LCAmUHlJZF9fX21vZHVsZV9fLCBtb2RuYW1lKTsKICAgICAgICAgUHlfREVDUkVGKG1vZG5hbWUpOworICAgICAgICBpZiAoZXJyICE9IDApCisgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKFB5RXJyX1dhcm5Gb3JtYXQoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLCAxLAogICAgICAgICAgICAgICAgICJidWlsdGluIHR5cGUgJS4yMDBzIGhhcyBubyBfX21vZHVsZV9fIGF0dHJpYnV0ZSIsCkBAIC0zNjExLDcgKzM2NjYsNyBAQAogfQogCiBzdGF0aWMgaW50Ci1jb21wYXRpYmxlX2Zvcl9hc3NpZ25tZW50KFB5VHlwZU9iamVjdCogb2xkdG8sIFB5VHlwZU9iamVjdCogbmV3dG8sIGNoYXIqIGF0dHIpCitjb21wYXRpYmxlX2Zvcl9hc3NpZ25tZW50KFB5VHlwZU9iamVjdCogb2xkdG8sIFB5VHlwZU9iamVjdCogbmV3dG8sIGNvbnN0IGNoYXIqIGF0dHIpCiB7CiAgICAgUHlUeXBlT2JqZWN0ICpuZXdiYXNlLCAqb2xkYmFzZTsKIApAQCAtMzc4Nyw3ICszODQyLDcgQEAKICAgICByZXR1cm4gUHlJbXBvcnRfSW1wb3J0KGNvcHlyZWdfc3RyKTsKIH0KIAotUHlfTE9DQUwoUHlPYmplY3QgKikKK3N0YXRpYyBQeU9iamVjdCAqCiBfUHlUeXBlX0dldFNsb3ROYW1lcyhQeVR5cGVPYmplY3QgKmNscykKIHsKICAgICBQeU9iamVjdCAqY29weXJlZzsKQEAgLTM4NDAsNyArMzg5NSw3IEBACiAgICAgcmV0dXJuIHNsb3RuYW1lczsKIH0KIAotUHlfTE9DQUwoUHlPYmplY3QgKikKK3N0YXRpYyBQeU9iamVjdCAqCiBfUHlPYmplY3RfR2V0U3RhdGUoUHlPYmplY3QgKm9iaiwgaW50IHJlcXVpcmVkKQogewogICAgIFB5T2JqZWN0ICpzdGF0ZTsKQEAgLTM4ODcsNiArMzk0MiwyNCBAQAogICAgICAgICB9CiAKICAgICAgICAgYXNzZXJ0KHNsb3RuYW1lcyA9PSBQeV9Ob25lIHx8IFB5TGlzdF9DaGVjayhzbG90bmFtZXMpKTsKKyAgICAgICAgaWYgKHJlcXVpcmVkKSB7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGJhc2ljc2l6ZSA9IFB5QmFzZU9iamVjdF9UeXBlLnRwX2Jhc2ljc2l6ZTsKKyAgICAgICAgICAgIGlmIChvYmotPm9iX3R5cGUtPnRwX2RpY3RvZmZzZXQpCisgICAgICAgICAgICAgICAgYmFzaWNzaXplICs9IHNpemVvZihQeU9iamVjdCAqKTsKKyAgICAgICAgICAgIGlmIChvYmotPm9iX3R5cGUtPnRwX3dlYWtsaXN0b2Zmc2V0KQorICAgICAgICAgICAgICAgIGJhc2ljc2l6ZSArPSBzaXplb2YoUHlPYmplY3QgKik7CisgICAgICAgICAgICBpZiAoc2xvdG5hbWVzICE9IFB5X05vbmUpCisgICAgICAgICAgICAgICAgYmFzaWNzaXplICs9IHNpemVvZihQeU9iamVjdCAqKSAqIFB5X1NJWkUoc2xvdG5hbWVzKTsKKyAgICAgICAgICAgIGlmIChvYmotPm9iX3R5cGUtPnRwX2Jhc2ljc2l6ZSA+IGJhc2ljc2l6ZSkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzbG90bmFtZXMpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzdGF0ZSk7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNhbid0IHBpY2tsZSAlLjIwMHMgb2JqZWN0cyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUob2JqKS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwogICAgICAgICBpZiAoc2xvdG5hbWVzICE9IFB5X05vbmUgJiYgUHlfU0laRShzbG90bmFtZXMpID4gMCkgewogICAgICAgICAgICAgUHlPYmplY3QgKnNsb3RzOwogICAgICAgICAgICAgUHlfc3NpemVfdCBzbG90bmFtZXNfc2l6ZSwgaTsKQEAgLTM5NDEsNyArNDAxNCw3IEBACiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8qIElmIHdlIGZvdW5kIHNvbWUgc2xvdCBhdHRyaWJ1dGVzLCBwYWNrIHRoZW0gaW4gYSB0dXBsZSBhbG9uZwotICAgICAgICAgICAgICAgdGhlIG9yZ2luYWwgYXR0cmlidXRlIGRpY3Rpb25hcnkuICovCisgICAgICAgICAgICAgICB0aGUgb3JpZ2luYWwgYXR0cmlidXRlIGRpY3Rpb25hcnkuICovCiAgICAgICAgICAgICBpZiAoUHlEaWN0X1NpemUoc2xvdHMpID4gMCkgewogICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdGF0ZTI7CiAKQEAgLTM5NjgsNyArNDA0MSw3IEBACiAgICAgcmV0dXJuIHN0YXRlOwogfQogCi1QeV9MT0NBTChpbnQpCitzdGF0aWMgaW50CiBfUHlPYmplY3RfR2V0TmV3QXJndW1lbnRzKFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICoqYXJncywgUHlPYmplY3QgKiprd2FyZ3MpCiB7CiAgICAgUHlPYmplY3QgKmdldG5ld2FyZ3MsICpnZXRuZXdhcmdzX2V4OwpAQCAtNDA2NCw3ICs0MTM3LDcgQEAKICAgICByZXR1cm4gMDsKIH0KIAotUHlfTE9DQUwoaW50KQorc3RhdGljIGludAogX1B5T2JqZWN0X0dldEl0ZW1zSXRlcihQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqKmxpc3RpdGVtcywKICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipkaWN0aXRlbXMpCiB7CkBAIC00MTEwLDcgKzQxODMsNyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotcmVkdWNlX25ld29iaihQeU9iamVjdCAqb2JqLCBpbnQgcHJvdG8pCityZWR1Y2VfbmV3b2JqKFB5T2JqZWN0ICpvYmopCiB7CiAgICAgUHlPYmplY3QgKmFyZ3MgPSBOVUxMLCAqa3dhcmdzID0gTlVMTDsKICAgICBQeU9iamVjdCAqY29weXJlZzsKQEAgLTQxNjMsNyArNDIzNiw3IEBACiAgICAgICAgIH0KICAgICAgICAgUHlfWERFQ1JFRihhcmdzKTsKICAgICB9Ci0gICAgZWxzZSBpZiAocHJvdG8gPj0gNCkgeworICAgIGVsc2UgaWYgKGFyZ3MgIT0gTlVMTCkgewogICAgICAgICBfUHlfSURFTlRJRklFUihfX25ld29ial9leF9fKTsKIAogICAgICAgICBuZXdvYmogPSBfUHlPYmplY3RfR2V0QXR0cklkKGNvcHlyZWcsICZQeUlkX19fbmV3b2JqX2V4X18pOwpAQCAtNDE4MiwxMyArNDI1NSw5IEBACiAgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIm11c3QgdXNlIHByb3RvY29sIDQgb3IgZ3JlYXRlciB0byBjb3B5IHRoaXMgIgotICAgICAgICAgICAgICAgICAgICAgICAgIm9iamVjdDsgc2luY2UgX19nZXRuZXdhcmdzX2V4X18gcmV0dXJuZWQgIgotICAgICAgICAgICAgICAgICAgICAgICAgImtleXdvcmQgYXJndW1lbnRzLiIpOwotICAgICAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgICAgIC8qIGFyZ3MgPT0gTlVMTCAqLwogICAgICAgICBQeV9ERUNSRUYoa3dhcmdzKTsKLSAgICAgICAgUHlfREVDUkVGKGNvcHlyZWcpOworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCkBAIC00MjM2LDcgKzQzMDUsNyBAQAogICAgIFB5T2JqZWN0ICpjb3B5cmVnLCAqcmVzOwogCiAgICAgaWYgKHByb3RvID49IDIpCi0gICAgICAgIHJldHVybiByZWR1Y2VfbmV3b2JqKHNlbGYsIHByb3RvKTsKKyAgICAgICAgcmV0dXJuIHJlZHVjZV9uZXdvYmooc2VsZik7CiAKICAgICBjb3B5cmVnID0gaW1wb3J0X2NvcHlyZWcoKTsKICAgICBpZiAoIWNvcHlyZWcpCkBAIC00MzE5LDYgKzQzODgsMTggQEAKICJvdmVycmlkZXMgdGhlIG5vcm1hbCBhbGdvcml0aG0gKGFuZCB0aGUgb3V0Y29tZSBpcyBjYWNoZWQpLlxuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCitvYmplY3RfaW5pdF9zdWJjbGFzcyhQeU9iamVjdCAqY2xzLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitQeURvY19TVFJWQVIob2JqZWN0X2luaXRfc3ViY2xhc3NfZG9jLAorIlRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIGEgY2xhc3MgaXMgc3ViY2xhc3NlZC5cbiIKKyJcbiIKKyJUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdGhpbmcuIEl0IG1heSBiZVxuIgorIm92ZXJyaWRkZW4gdG8gZXh0ZW5kIHN1YmNsYXNzZXMuXG4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKIG9iamVjdF9mb3JtYXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5T2JqZWN0ICpmb3JtYXRfc3BlYzsKQEAgLTQ0MTIsNiArNDQ5Myw4IEBACiAgICAgIFB5RG9jX1NUUigiaGVscGVyIGZvciBwaWNrbGUiKX0sCiAgICAgeyJfX3N1YmNsYXNzaG9va19fIiwgb2JqZWN0X3N1YmNsYXNzaG9vaywgTUVUSF9DTEFTUyB8IE1FVEhfVkFSQVJHUywKICAgICAgb2JqZWN0X3N1YmNsYXNzaG9va19kb2N9LAorICAgIHsiX19pbml0X3N1YmNsYXNzX18iLCBvYmplY3RfaW5pdF9zdWJjbGFzcywgTUVUSF9DTEFTUyB8IE1FVEhfTk9BUkdTLAorICAgICBvYmplY3RfaW5pdF9zdWJjbGFzc19kb2N9LAogICAgIHsiX19mb3JtYXRfXyIsIG9iamVjdF9mb3JtYXQsIE1FVEhfVkFSQVJHUywKICAgICAgUHlEb2NfU1RSKCJkZWZhdWx0IG9iamVjdCBmb3JtYXR0ZXIiKX0sCiAgICAgeyJfX3NpemVvZl9fIiwgb2JqZWN0X3NpemVvZiwgTUVUSF9OT0FSR1MsCkBAIC01MzYzLDcgKzU0NDYsNyBAQAogLyogSGVscGVyIHRvIGNoZWNrIGZvciBvYmplY3QuX19zZXRhdHRyX18gb3IgX19kZWxhdHRyX18gYXBwbGllZCB0byBhIHR5cGUuCiAgICBUaGlzIGlzIGNhbGxlZCB0aGUgQ2FybG8gVmVycmUgaGFjayBhZnRlciBpdHMgZGlzY292ZXJlci4gKi8KIHN0YXRpYyBpbnQKLWhhY2tjaGVjayhQeU9iamVjdCAqc2VsZiwgc2V0YXR0cm9mdW5jIGZ1bmMsIGNoYXIgKndoYXQpCitoYWNrY2hlY2soUHlPYmplY3QgKnNlbGYsIHNldGF0dHJvZnVuYyBmdW5jLCBjb25zdCBjaGFyICp3aGF0KQogewogICAgIFB5VHlwZU9iamVjdCAqdHlwZSA9IFB5X1RZUEUoc2VsZik7CiAgICAgd2hpbGUgKHR5cGUgJiYgdHlwZS0+dHBfZmxhZ3MgJiBQeV9UUEZMQUdTX0hFQVBUWVBFKQpAQCAtNTY1MCw3ICs1NzMzLDcgQEAKIEZVTkNOQU1FKFB5T2JqZWN0ICpzZWxmKSBcCiB7IFwKICAgICBfUHlfc3RhdGljX3N0cmluZyhpZCwgT1BTVFIpOyBcCi0gICAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsICZpZCwgIigpIik7IFwKKyAgICByZXR1cm4gY2FsbF9tZXRob2Qoc2VsZiwgJmlkLCBOVUxMKTsgXAogfQogCiAjZGVmaW5lIFNMT1QxKEZVTkNOQU1FLCBPUFNUUiwgQVJHMVRZUEUsIEFSR0NPREVTKSBcCkBAIC01NzQzLDcgKzU4MjYsNyBAQAogc3RhdGljIFB5X3NzaXplX3QKIHNsb3Rfc3FfbGVuZ3RoKFB5T2JqZWN0ICpzZWxmKQogewotICAgIFB5T2JqZWN0ICpyZXMgPSBjYWxsX21ldGhvZChzZWxmLCAmUHlJZF9fX2xlbl9fLCAiKCkiKTsKKyAgICBQeU9iamVjdCAqcmVzID0gY2FsbF9tZXRob2Qoc2VsZiwgJlB5SWRfX19sZW5fXywgTlVMTCk7CiAgICAgUHlfc3NpemVfdCBsZW47CiAKICAgICBpZiAocmVzID09IE5VTEwpCkBAIC01NzY0LDM4ICs1ODQ3LDM5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogc2xvdF9zcV9pdGVtKFB5T2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IGkpCiB7Ci0gICAgUHlPYmplY3QgKmZ1bmMsICphcmdzID0gTlVMTCwgKml2YWwgPSBOVUxMLCAqcmV0dmFsID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZnVuYywgKml2YWwgPSBOVUxMLCAqcmV0dmFsID0gTlVMTDsKICAgICBkZXNjcmdldGZ1bmMgZjsKIAogICAgIGZ1bmMgPSBfUHlUeXBlX0xvb2t1cElkKFB5X1RZUEUoc2VsZiksICZQeUlkX19fZ2V0aXRlbV9fKTsKLSAgICBpZiAoZnVuYyAhPSBOVUxMKSB7Ci0gICAgICAgIGlmICgoZiA9IFB5X1RZUEUoZnVuYyktPnRwX2Rlc2NyX2dldCkgPT0gTlVMTCkKLSAgICAgICAgICAgIFB5X0lOQ1JFRihmdW5jKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBmdW5jID0gZihmdW5jLCBzZWxmLCAoUHlPYmplY3QgKikoUHlfVFlQRShzZWxmKSkpOwotICAgICAgICAgICAgaWYgKGZ1bmMgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGl2YWwgPSBQeUxvbmdfRnJvbVNzaXplX3QoaSk7Ci0gICAgICAgIGlmIChpdmFsICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGFyZ3MgPSBQeVR1cGxlX05ldygxKTsKLSAgICAgICAgICAgIGlmIChhcmdzICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDAsIGl2YWwpOwotICAgICAgICAgICAgICAgIHJldHZhbCA9IFB5T2JqZWN0X0NhbGwoZnVuYywgYXJncywgTlVMTCk7Ci0gICAgICAgICAgICAgICAgUHlfWERFQ1JFRihhcmdzKTsKLSAgICAgICAgICAgICAgICBQeV9YREVDUkVGKGZ1bmMpOwotICAgICAgICAgICAgICAgIHJldHVybiByZXR2YWw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSB7CisgICAgaWYgKGZ1bmMgPT0gTlVMTCkgewogICAgICAgICBQeU9iamVjdCAqZ2V0aXRlbV9zdHIgPSBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9fX2dldGl0ZW1fXyk7CiAgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwgZ2V0aXRlbV9zdHIpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgUHlfWERFQ1JFRihhcmdzKTsKLSAgICBQeV9YREVDUkVGKGl2YWwpOwotICAgIFB5X1hERUNSRUYoZnVuYyk7CisKKyAgICBmID0gUHlfVFlQRShmdW5jKS0+dHBfZGVzY3JfZ2V0OworICAgIGlmIChmID09IE5VTEwpIHsKKyAgICAgICAgUHlfSU5DUkVGKGZ1bmMpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZnVuYyA9IGYoZnVuYywgc2VsZiwgKFB5T2JqZWN0ICopKFB5X1RZUEUoc2VsZikpKTsKKyAgICAgICAgaWYgKGZ1bmMgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpdmFsID0gUHlMb25nX0Zyb21Tc2l6ZV90KGkpOworICAgIGlmIChpdmFsID09IE5VTEwpIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICByZXR2YWwgPSBfUHlPYmplY3RfQ2FsbEFyZzEoZnVuYywgaXZhbCk7CisgICAgUHlfREVDUkVGKGZ1bmMpOworICAgIFB5X0RFQ1JFRihpdmFsKTsKKyAgICByZXR1cm4gcmV0dmFsOworCitlcnJvcjoKKyAgICBQeV9ERUNSRUYoZnVuYyk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKQEAgLTU4MTcsMTkgKzU5MDEsMjAgQEAKIHN0YXRpYyBpbnQKIHNsb3Rfc3FfY29udGFpbnMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSkKIHsKLSAgICBQeU9iamVjdCAqZnVuYywgKnJlcywgKmFyZ3M7CisgICAgUHlPYmplY3QgKmZ1bmMsICpyZXM7CiAgICAgaW50IHJlc3VsdCA9IC0xOwogICAgIF9QeV9JREVOVElGSUVSKF9fY29udGFpbnNfXyk7CiAKICAgICBmdW5jID0gbG9va3VwX21heWJlKHNlbGYsICZQeUlkX19fY29udGFpbnNfXyk7CisgICAgaWYgKGZ1bmMgPT0gUHlfTm9uZSkgeworICAgICAgICBQeV9ERUNSRUYoZnVuYyk7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiJyUuMjAwcycgb2JqZWN0IGlzIG5vdCBhIGNvbnRhaW5lciIsCisgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHNlbGYpLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KICAgICBpZiAoZnVuYyAhPSBOVUxMKSB7Ci0gICAgICAgIGFyZ3MgPSBQeVR1cGxlX1BhY2soMSwgdmFsdWUpOwotICAgICAgICBpZiAoYXJncyA9PSBOVUxMKQotICAgICAgICAgICAgcmVzID0gTlVMTDsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICByZXMgPSBQeU9iamVjdF9DYWxsKGZ1bmMsIGFyZ3MsIE5VTEwpOwotICAgICAgICAgICAgUHlfREVDUkVGKGFyZ3MpOwotICAgICAgICB9CisgICAgICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsQXJnMShmdW5jLCB2YWx1ZSk7CiAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKICAgICAgICAgaWYgKHJlcyAhPSBOVUxMKSB7CiAgICAgICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9Jc1RydWUocmVzKTsKQEAgLTU5MDAsNDQgKzU5ODUsNTQgQEAKIHN0YXRpYyBpbnQKIHNsb3RfbmJfYm9vbChQeU9iamVjdCAqc2VsZikKIHsKLSAgICBQeU9iamVjdCAqZnVuYywgKmFyZ3M7Ci0gICAgaW50IHJlc3VsdCA9IC0xOworICAgIFB5T2JqZWN0ICpmdW5jLCAqdmFsdWU7CisgICAgaW50IHJlc3VsdDsKICAgICBpbnQgdXNpbmdfbGVuID0gMDsKICAgICBfUHlfSURFTlRJRklFUihfX2Jvb2xfXyk7CiAKICAgICBmdW5jID0gbG9va3VwX21heWJlKHNlbGYsICZQeUlkX19fYm9vbF9fKTsKICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7Ci0gICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisKICAgICAgICAgZnVuYyA9IGxvb2t1cF9tYXliZShzZWxmLCAmUHlJZF9fX2xlbl9fKTsKLSAgICAgICAgaWYgKGZ1bmMgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBQeUVycl9PY2N1cnJlZCgpID8gLTEgOiAxOworICAgICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CiAgICAgICAgIHVzaW5nX2xlbiA9IDE7CiAgICAgfQotICAgIGFyZ3MgPSBQeVR1cGxlX05ldygwKTsKLSAgICBpZiAoYXJncyAhPSBOVUxMKSB7Ci0gICAgICAgIFB5T2JqZWN0ICp0ZW1wID0gUHlPYmplY3RfQ2FsbChmdW5jLCBhcmdzLCBOVUxMKTsKLSAgICAgICAgUHlfREVDUkVGKGFyZ3MpOwotICAgICAgICBpZiAodGVtcCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBpZiAodXNpbmdfbGVuKSB7Ci0gICAgICAgICAgICAgICAgLyogZW5mb3JjZWQgYnkgc2xvdF9uYl9sZW4gKi8KLSAgICAgICAgICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9Jc1RydWUodGVtcCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChQeUJvb2xfQ2hlY2sodGVtcCkpIHsKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9Jc1RydWUodGVtcCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX19ib29sX18gc2hvdWxkIHJldHVybiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJib29sLCByZXR1cm5lZCAlcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUodGVtcCktPnRwX25hbWUpOwotICAgICAgICAgICAgICAgIHJlc3VsdCA9IC0xOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlfREVDUkVGKHRlbXApOwotICAgICAgICB9CisKKyAgICB2YWx1ZSA9IF9QeU9iamVjdF9DYWxsTm9BcmcoZnVuYyk7CisgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgZ290byBlcnJvcjsKICAgICB9CisKKyAgICBpZiAodXNpbmdfbGVuKSB7CisgICAgICAgIC8qIGJvb2wgdHlwZSBlbmZvcmNlZCBieSBzbG90X25iX2xlbiAqLworICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9Jc1RydWUodmFsdWUpOworICAgIH0KKyAgICBlbHNlIGlmIChQeUJvb2xfQ2hlY2sodmFsdWUpKSB7CisgICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0lzVHJ1ZSh2YWx1ZSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIl9fYm9vbF9fIHNob3VsZCByZXR1cm4gIgorICAgICAgICAgICAgICAgICAgICAgImJvb2wsIHJldHVybmVkICVzIiwKKyAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUodmFsdWUpLT50cF9uYW1lKTsKKyAgICAgICAgcmVzdWx0ID0gLTE7CisgICAgfQorCisgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICBQeV9ERUNSRUYoZnVuYyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKKworZXJyb3I6CisgICAgUHlfREVDUkVGKGZ1bmMpOworICAgIHJldHVybiAtMTsKIH0KIAogCkBAIC01OTQ1LDcgKzYwNDAsNyBAQAogc2xvdF9uYl9pbmRleChQeU9iamVjdCAqc2VsZikKIHsKICAgICBfUHlfSURFTlRJRklFUihfX2luZGV4X18pOwotICAgIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCAmUHlJZF9fX2luZGV4X18sICIoKSIpOworICAgIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCAmUHlJZF9fX2luZGV4X18sIE5VTEwpOwogfQogCiAKQEAgLTYxODIsMjAgKzYyNzcsMTQgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzbG90X3RwX3JpY2hjb21wYXJlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb3RoZXIsIGludCBvcCkKIHsKLSAgICBQeU9iamVjdCAqZnVuYywgKmFyZ3MsICpyZXM7CisgICAgUHlPYmplY3QgKmZ1bmMsICpyZXM7CiAKICAgICBmdW5jID0gbG9va3VwX21ldGhvZChzZWxmLCAmbmFtZV9vcFtvcF0pOwogICAgIGlmIChmdW5jID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogICAgIH0KLSAgICBhcmdzID0gUHlUdXBsZV9QYWNrKDEsIG90aGVyKTsKLSAgICBpZiAoYXJncyA9PSBOVUxMKQotICAgICAgICByZXMgPSBOVUxMOwotICAgIGVsc2UgewotICAgICAgICByZXMgPSBQeU9iamVjdF9DYWxsKGZ1bmMsIGFyZ3MsIE5VTEwpOwotICAgICAgICBQeV9ERUNSRUYoYXJncyk7Ci0gICAgfQorICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsQXJnMShmdW5jLCBvdGhlcik7CiAgICAgUHlfREVDUkVGKGZ1bmMpOwogICAgIHJldHVybiByZXM7CiB9CkBAIC02MjA3LDE2ICs2Mjk2LDIwIEBACiAgICAgX1B5X0lERU5USUZJRVIoX19pdGVyX18pOwogCiAgICAgZnVuYyA9IGxvb2t1cF9tZXRob2Qoc2VsZiwgJlB5SWRfX19pdGVyX18pOworICAgIGlmIChmdW5jID09IFB5X05vbmUpIHsKKyAgICAgICAgUHlfREVDUkVGKGZ1bmMpOworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIiclLjIwMHMnIG9iamVjdCBpcyBub3QgaXRlcmFibGUiLAorICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShzZWxmKS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKwogICAgIGlmIChmdW5jICE9IE5VTEwpIHsKLSAgICAgICAgUHlPYmplY3QgKmFyZ3M7Ci0gICAgICAgIGFyZ3MgPSByZXMgPSBQeVR1cGxlX05ldygwKTsKLSAgICAgICAgaWYgKGFyZ3MgIT0gTlVMTCkgewotICAgICAgICAgICAgcmVzID0gUHlPYmplY3RfQ2FsbChmdW5jLCBhcmdzLCBOVUxMKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKLSAgICAgICAgfQorICAgICAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE5vQXJnKGZ1bmMpOwogICAgICAgICBQeV9ERUNSRUYoZnVuYyk7CiAgICAgICAgIHJldHVybiByZXM7CiAgICAgfQorCiAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICBmdW5jID0gbG9va3VwX21ldGhvZChzZWxmLCAmUHlJZF9fX2dldGl0ZW1fXyk7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkgewpAQCAtNjIzMyw3ICs2MzI2LDcgQEAKIHNsb3RfdHBfaXRlcm5leHQoUHlPYmplY3QgKnNlbGYpCiB7CiAgICAgX1B5X0lERU5USUZJRVIoX19uZXh0X18pOwotICAgIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCAmUHlJZF9fX25leHRfXywgIigpIik7CisgICAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsICZQeUlkX19fbmV4dF9fLCBOVUxMKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTYzMDIsMjkgKzYzOTUsMTYgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzbG90X3RwX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBQeU9iamVjdCAqZnVuYzsKLSAgICBQeU9iamVjdCAqbmV3YXJncywgKng7Ci0gICAgUHlfc3NpemVfdCBpLCBuOworICAgIFB5T2JqZWN0ICpmdW5jLCAqcmVzdWx0OwogCiAgICAgZnVuYyA9IF9QeU9iamVjdF9HZXRBdHRySWQoKFB5T2JqZWN0ICopdHlwZSwgJlB5SWRfX19uZXdfXyk7Ci0gICAgaWYgKGZ1bmMgPT0gTlVMTCkKKyAgICBpZiAoZnVuYyA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGFzc2VydChQeVR1cGxlX0NoZWNrKGFyZ3MpKTsKLSAgICBuID0gUHlUdXBsZV9HRVRfU0laRShhcmdzKTsKLSAgICBuZXdhcmdzID0gUHlUdXBsZV9OZXcobisxKTsKLSAgICBpZiAobmV3YXJncyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBQeV9JTkNSRUYodHlwZSk7Ci0gICAgUHlUdXBsZV9TRVRfSVRFTShuZXdhcmdzLCAwLCAoUHlPYmplY3QgKil0eXBlKTsKLSAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7Ci0gICAgICAgIHggPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIGkpOwotICAgICAgICBQeV9JTkNSRUYoeCk7Ci0gICAgICAgIFB5VHVwbGVfU0VUX0lURU0obmV3YXJncywgaSsxLCB4KTsKICAgICB9Ci0gICAgeCA9IFB5T2JqZWN0X0NhbGwoZnVuYywgbmV3YXJncywga3dkcyk7Ci0gICAgUHlfREVDUkVGKG5ld2FyZ3MpOworCisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxfUHJlcGVuZChmdW5jLCAoUHlPYmplY3QgKil0eXBlLCBhcmdzLCBrd2RzKTsKICAgICBQeV9ERUNSRUYoZnVuYyk7Ci0gICAgcmV0dXJuIHg7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTY5MjcsNiArNzAwNyw3MiBAQAogICAgIH0KIH0KIAorLyogQ2FsbCBfX3NldF9uYW1lX18gb24gYWxsIGRlc2NyaXB0b3JzIGluIGEgbmV3bHkgZ2VuZXJhdGVkIHR5cGUgKi8KK3N0YXRpYyBpbnQKK3NldF9uYW1lcyhQeVR5cGVPYmplY3QgKnR5cGUpCit7CisgICAgUHlPYmplY3QgKm5hbWVzX3RvX3NldCwgKmtleSwgKnZhbHVlLCAqc2V0X25hbWUsICp0bXA7CisgICAgUHlfc3NpemVfdCBpID0gMDsKKworICAgIG5hbWVzX3RvX3NldCA9IFB5RGljdF9Db3B5KHR5cGUtPnRwX2RpY3QpOworICAgIGlmIChuYW1lc190b19zZXQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgd2hpbGUgKFB5RGljdF9OZXh0KG5hbWVzX3RvX3NldCwgJmksICZrZXksICZ2YWx1ZSkpIHsKKyAgICAgICAgc2V0X25hbWUgPSBsb29rdXBfbWF5YmUodmFsdWUsICZQeUlkX19fc2V0X25hbWVfXyk7CisgICAgICAgIGlmIChzZXRfbmFtZSAhPSBOVUxMKSB7CisgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKHNldF9uYW1lLCB0eXBlLCBrZXksIE5VTEwpOworICAgICAgICAgICAgUHlfREVDUkVGKHNldF9uYW1lKTsKKyAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIF9QeUVycl9Gb3JtYXRGcm9tQ2F1c2UoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAiRXJyb3IgY2FsbGluZyBfX3NldF9uYW1lX18gb24gJyUuMTAwcycgaW5zdGFuY2UgJVIgIgorICAgICAgICAgICAgICAgICAgICAiaW4gJyUuMTAwcyciLAorICAgICAgICAgICAgICAgICAgICB2YWx1ZS0+b2JfdHlwZS0+dHBfbmFtZSwga2V5LCB0eXBlLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmFtZXNfdG9fc2V0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHRtcCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgUHlfREVDUkVGKG5hbWVzX3RvX3NldCk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBQeV9ERUNSRUYobmFtZXNfdG9fc2V0KTsKKyAgICByZXR1cm4gMDsKK30KKworLyogQ2FsbCBfX2luaXRfc3ViY2xhc3NfXyBvbiB0aGUgcGFyZW50IG9mIGEgbmV3bHkgZ2VuZXJhdGVkIHR5cGUgKi8KK3N0YXRpYyBpbnQKK2luaXRfc3ViY2xhc3MoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBQeU9iamVjdCAqc3VwZXIsICpmdW5jLCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICphcmdzWzJdID0geyhQeU9iamVjdCAqKXR5cGUsIChQeU9iamVjdCAqKXR5cGV9OworCisgICAgc3VwZXIgPSBfUHlPYmplY3RfRmFzdENhbGwoKFB5T2JqZWN0ICopJlB5U3VwZXJfVHlwZSwgYXJncywgMik7CisgICAgaWYgKHN1cGVyID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGZ1bmMgPSBfUHlPYmplY3RfR2V0QXR0cklkKHN1cGVyLCAmUHlJZF9fX2luaXRfc3ViY2xhc3NfXyk7CisgICAgUHlfREVDUkVGKHN1cGVyKTsKKyAgICBpZiAoZnVuYyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9GYXN0Q2FsbERpY3QoZnVuYywgTlVMTCwgMCwga3dkcyk7CisgICAgUHlfREVDUkVGKGZ1bmMpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgcmV0dXJuIDA7Cit9CisKIC8qIHJlY3Vyc2VfZG93bl9zdWJjbGFzc2VzKCkgYW5kIHVwZGF0ZV9zdWJjbGFzc2VzKCkgYXJlIG11dHVhbGx5CiAgICByZWN1cnNpdmUgZnVuY3Rpb25zIHRvIGNhbGwgYSBjYWxsYmFjayBmb3IgYWxsIHN1YmNsYXNzZXMsCiAgICBidXQgcmVmcmFpbmluZyBmcm9tIHJlY3Vyc2luZyBpbnRvIHN1YmNsYXNzZXMgdGhhdCBkZWZpbmUgJ25hbWUnLiAqLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy91bmljb2Rlb2JqZWN0LmMgYi9PYmplY3RzL3VuaWNvZGVvYmplY3QuYwppbmRleCBhYjI2MWNjLi40NDkxMTY3IDEwMDY0NAotLS0gYS9PYmplY3RzL3VuaWNvZGVvYmplY3QuYworKysgYi9PYmplY3RzL3VuaWNvZGVvYmplY3QuYwpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgInVjbmhhc2guaCIKICNpbmNsdWRlICJieXRlc19tZXRob2RzLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2VxLmgiCiAKICNpZmRlZiBNU19XSU5ET1dTCiAjaW5jbHVkZSA8d2luZG93cy5oPgpAQCAtMTYyLDYgKzE2MywxNCBAQAogICAgICAgICAgICAgKl90bysrID0gKHRvX3R5cGUpICpfaXRlcisrOyAgICAgICAgICAgICAgICBcCiAgICAgfSB3aGlsZSAoMCkKIAorI2lmZGVmIE1TX1dJTkRPV1MKKyAgIC8qIE9uIFdpbmRvd3MsIG92ZXJhbGxvY2F0ZSBieSA1MCUgaXMgdGhlIGJlc3QgZmFjdG9yICovCisjICBkZWZpbmUgT1ZFUkFMTE9DQVRFX0ZBQ1RPUiAyCisjZWxzZQorICAgLyogT24gTGludXgsIG92ZXJhbGxvY2F0ZSBieSAyNSUgaXMgdGhlIGJlc3QgZmFjdG9yICovCisjICBkZWZpbmUgT1ZFUkFMTE9DQVRFX0ZBQ1RPUiA0CisjZW5kaWYKKwogLyogVGhpcyBkaWN0aW9uYXJ5IGhvbGRzIGFsbCBpbnRlcm5lZCB1bmljb2RlIHN0cmluZ3MuICBOb3RlIHRoYXQgcmVmZXJlbmNlcwogICAgdG8gc3RyaW5ncyBpbiB0aGlzIGRpY3Rpb25hcnkgYXJlICpub3QqIGNvdW50ZWQgaW4gdGhlIHN0cmluZydzIG9iX3JlZmNudC4KICAgIFdoZW4gdGhlIGludGVybmVkIHN0cmluZyByZWFjaGVzIGEgcmVmY250IG9mIDAgdGhlIHN0cmluZyBkZWFsbG9jYXRpb24KQEAgLTE5NSw3ICsyMDQsNyBAQAogICAgIH0gd2hpbGUgKDApCiAKIC8qIEZvcndhcmQgZGVjbGFyYXRpb24gKi8KLVB5X0xPQ0FMX0lOTElORShpbnQpCitzdGF0aWMgaW5saW5lIGludAogX1B5VW5pY29kZVdyaXRlcl9Xcml0ZUNoYXJJbmxpbmUoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLCBQeV9VQ1M0IGNoKTsKIAogLyogTGlzdCBvZiBzdGF0aWMgc3RyaW5ncy4gKi8KQEAgLTI2Myw3ICsyNzIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyZWFzb24pOwogCiAvKiBTYW1lIGZvciBsaW5lYnJlYWtzICovCi1zdGF0aWMgdW5zaWduZWQgY2hhciBhc2NpaV9saW5lYnJlYWtbXSA9IHsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGFzY2lpX2xpbmVicmVha1tdID0gewogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCiAvKiAgICAgICAgIDB4MDAwQSwgKiBMSU5FIEZFRUQgKi8KIC8qICAgICAgICAgMHgwMDBCLCAqIExJTkUgVEFCVUxBVElPTiAqLwpAQCAtMjkyLDYgKzMwMSw0NSBAQAogCiAjaW5jbHVkZSAiY2xpbmljL3VuaWNvZGVvYmplY3QuYy5oIgogCit0eXBlZGVmIGVudW0geworICAgIF9QeV9FUlJPUl9VTktOT1dOPTAsCisgICAgX1B5X0VSUk9SX1NUUklDVCwKKyAgICBfUHlfRVJST1JfU1VSUk9HQVRFRVNDQVBFLAorICAgIF9QeV9FUlJPUl9SRVBMQUNFLAorICAgIF9QeV9FUlJPUl9JR05PUkUsCisgICAgX1B5X0VSUk9SX0JBQ0tTTEFTSFJFUExBQ0UsCisgICAgX1B5X0VSUk9SX1NVUlJPR0FURVBBU1MsCisgICAgX1B5X0VSUk9SX1hNTENIQVJSRUZSRVBMQUNFLAorICAgIF9QeV9FUlJPUl9PVEhFUgorfSBfUHlfZXJyb3JfaGFuZGxlcjsKKworc3RhdGljIF9QeV9lcnJvcl9oYW5kbGVyCitnZXRfZXJyb3JfaGFuZGxlcihjb25zdCBjaGFyICplcnJvcnMpCit7CisgICAgaWYgKGVycm9ycyA9PSBOVUxMIHx8IHN0cmNtcChlcnJvcnMsICJzdHJpY3QiKSA9PSAwKSB7CisgICAgICAgIHJldHVybiBfUHlfRVJST1JfU1RSSUNUOworICAgIH0KKyAgICBpZiAoc3RyY21wKGVycm9ycywgInN1cnJvZ2F0ZWVzY2FwZSIpID09IDApIHsKKyAgICAgICAgcmV0dXJuIF9QeV9FUlJPUl9TVVJST0dBVEVFU0NBUEU7CisgICAgfQorICAgIGlmIChzdHJjbXAoZXJyb3JzLCAicmVwbGFjZSIpID09IDApIHsKKyAgICAgICAgcmV0dXJuIF9QeV9FUlJPUl9SRVBMQUNFOworICAgIH0KKyAgICBpZiAoc3RyY21wKGVycm9ycywgImlnbm9yZSIpID09IDApIHsKKyAgICAgICAgcmV0dXJuIF9QeV9FUlJPUl9JR05PUkU7CisgICAgfQorICAgIGlmIChzdHJjbXAoZXJyb3JzLCAiYmFja3NsYXNocmVwbGFjZSIpID09IDApIHsKKyAgICAgICAgcmV0dXJuIF9QeV9FUlJPUl9CQUNLU0xBU0hSRVBMQUNFOworICAgIH0KKyAgICBpZiAoc3RyY21wKGVycm9ycywgInN1cnJvZ2F0ZXBhc3MiKSA9PSAwKSB7CisgICAgICAgIHJldHVybiBfUHlfRVJST1JfU1VSUk9HQVRFUEFTUzsKKyAgICB9CisgICAgaWYgKHN0cmNtcChlcnJvcnMsICJ4bWxjaGFycmVmcmVwbGFjZSIpID09IDApIHsKKyAgICAgICAgcmV0dXJuIF9QeV9FUlJPUl9YTUxDSEFSUkVGUkVQTEFDRTsKKyAgICB9CisgICAgcmV0dXJuIF9QeV9FUlJPUl9PVEhFUjsKK30KKwogLyogVGhlIG1heCB1bmljb2RlIHZhbHVlIGlzIGFsd2F5cyAweDEwRkZGRiB3aGlsZSB1c2luZyB0aGUgUEVQLTM5MyBBUEkuCiAgICBUaGlzIGZ1bmN0aW9uIGlzIGtlcHQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgb2xkIEFQSS4gKi8KIFB5X1VOSUNPREUKQEAgLTUyMSw2ICs1NjksMTI5IEBACiAgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0NvcHkodW5pY29kZSk7CiB9CiAKKy8qIEltcGxlbWVudGF0aW9uIG9mIHRoZSAiYmFja3NsYXNocmVwbGFjZSIgZXJyb3IgaGFuZGxlciBmb3IgOC1iaXQgZW5jb2RpbmdzOgorICAgQVNDSUksIExhdGluMSwgVVRGLTgsIGV0Yy4gKi8KK3N0YXRpYyBjaGFyKgorYmFja3NsYXNocmVwbGFjZShfUHlCeXRlc1dyaXRlciAqd3JpdGVyLCBjaGFyICpzdHIsCisgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp1bmljb2RlLCBQeV9zc2l6ZV90IGNvbGxzdGFydCwgUHlfc3NpemVfdCBjb2xsZW5kKQoreworICAgIFB5X3NzaXplX3Qgc2l6ZSwgaTsKKyAgICBQeV9VQ1M0IGNoOworICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZDsKKyAgICB2b2lkICpkYXRhOworCisgICAgYXNzZXJ0KFB5VW5pY29kZV9JU19SRUFEWSh1bmljb2RlKSk7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQSh1bmljb2RlKTsKKworICAgIHNpemUgPSAwOworICAgIC8qIGRldGVybWluZSByZXBsYWNlbWVudCBzaXplICovCisgICAgZm9yIChpID0gY29sbHN0YXJ0OyBpIDwgY29sbGVuZDsgKytpKSB7CisgICAgICAgIFB5X3NzaXplX3QgaW5jcjsKKworICAgICAgICBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOworICAgICAgICBpZiAoY2ggPCAweDEwMCkKKyAgICAgICAgICAgIGluY3IgPSAyKzI7CisgICAgICAgIGVsc2UgaWYgKGNoIDwgMHgxMDAwMCkKKyAgICAgICAgICAgIGluY3IgPSAyKzQ7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYXNzZXJ0KGNoIDw9IE1BWF9VTklDT0RFKTsKKyAgICAgICAgICAgIGluY3IgPSAyKzg7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNpemUgPiBQWV9TU0laRV9UX01BWCAtIGluY3IpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlbmNvZGVkIHJlc3VsdCBpcyB0b28gbG9uZyBmb3IgYSBQeXRob24gc3RyaW5nIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBzaXplICs9IGluY3I7CisgICAgfQorCisgICAgc3RyID0gX1B5Qnl0ZXNXcml0ZXJfUHJlcGFyZSh3cml0ZXIsIHN0ciwgc2l6ZSk7CisgICAgaWYgKHN0ciA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIC8qIGdlbmVyYXRlIHJlcGxhY2VtZW50ICovCisgICAgZm9yIChpID0gY29sbHN0YXJ0OyBpIDwgY29sbGVuZDsgKytpKSB7CisgICAgICAgIGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CisgICAgICAgICpzdHIrKyA9ICdcXCc7CisgICAgICAgIGlmIChjaCA+PSAweDAwMDEwMDAwKSB7CisgICAgICAgICAgICAqc3RyKysgPSAnVSc7CisgICAgICAgICAgICAqc3RyKysgPSBQeV9oZXhkaWdpdHNbKGNoPj4yOCkmMHhmXTsKKyAgICAgICAgICAgICpzdHIrKyA9IFB5X2hleGRpZ2l0c1soY2g+PjI0KSYweGZdOworICAgICAgICAgICAgKnN0cisrID0gUHlfaGV4ZGlnaXRzWyhjaD4+MjApJjB4Zl07CisgICAgICAgICAgICAqc3RyKysgPSBQeV9oZXhkaWdpdHNbKGNoPj4xNikmMHhmXTsKKyAgICAgICAgICAgICpzdHIrKyA9IFB5X2hleGRpZ2l0c1soY2g+PjEyKSYweGZdOworICAgICAgICAgICAgKnN0cisrID0gUHlfaGV4ZGlnaXRzWyhjaD4+OCkmMHhmXTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChjaCA+PSAweDEwMCkgeworICAgICAgICAgICAgKnN0cisrID0gJ3UnOworICAgICAgICAgICAgKnN0cisrID0gUHlfaGV4ZGlnaXRzWyhjaD4+MTIpJjB4Zl07CisgICAgICAgICAgICAqc3RyKysgPSBQeV9oZXhkaWdpdHNbKGNoPj44KSYweGZdOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICpzdHIrKyA9ICd4JzsKKyAgICAgICAgKnN0cisrID0gUHlfaGV4ZGlnaXRzWyhjaD4+NCkmMHhmXTsKKyAgICAgICAgKnN0cisrID0gUHlfaGV4ZGlnaXRzW2NoJjB4Zl07CisgICAgfQorICAgIHJldHVybiBzdHI7Cit9CisKKy8qIEltcGxlbWVudGF0aW9uIG9mIHRoZSAieG1sY2hhcnJlZnJlcGxhY2UiIGVycm9yIGhhbmRsZXIgZm9yIDgtYml0IGVuY29kaW5nczoKKyAgIEFTQ0lJLCBMYXRpbjEsIFVURi04LCBldGMuICovCitzdGF0aWMgY2hhcioKK3htbGNoYXJyZWZyZXBsYWNlKF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsIGNoYXIgKnN0ciwKKyAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp1bmljb2RlLCBQeV9zc2l6ZV90IGNvbGxzdGFydCwgUHlfc3NpemVfdCBjb2xsZW5kKQoreworICAgIFB5X3NzaXplX3Qgc2l6ZSwgaTsKKyAgICBQeV9VQ1M0IGNoOworICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZDsKKyAgICB2b2lkICpkYXRhOworCisgICAgYXNzZXJ0KFB5VW5pY29kZV9JU19SRUFEWSh1bmljb2RlKSk7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQSh1bmljb2RlKTsKKworICAgIHNpemUgPSAwOworICAgIC8qIGRldGVybWluZSByZXBsYWNlbWVudCBzaXplICovCisgICAgZm9yIChpID0gY29sbHN0YXJ0OyBpIDwgY29sbGVuZDsgKytpKSB7CisgICAgICAgIFB5X3NzaXplX3QgaW5jcjsKKworICAgICAgICBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOworICAgICAgICBpZiAoY2ggPCAxMCkKKyAgICAgICAgICAgIGluY3IgPSAyKzErMTsKKyAgICAgICAgZWxzZSBpZiAoY2ggPCAxMDApCisgICAgICAgICAgICBpbmNyID0gMisyKzE7CisgICAgICAgIGVsc2UgaWYgKGNoIDwgMTAwMCkKKyAgICAgICAgICAgIGluY3IgPSAyKzMrMTsKKyAgICAgICAgZWxzZSBpZiAoY2ggPCAxMDAwMCkKKyAgICAgICAgICAgIGluY3IgPSAyKzQrMTsKKyAgICAgICAgZWxzZSBpZiAoY2ggPCAxMDAwMDApCisgICAgICAgICAgICBpbmNyID0gMis1KzE7CisgICAgICAgIGVsc2UgaWYgKGNoIDwgMTAwMDAwMCkKKyAgICAgICAgICAgIGluY3IgPSAyKzYrMTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBhc3NlcnQoY2ggPD0gTUFYX1VOSUNPREUpOworICAgICAgICAgICAgaW5jciA9IDIrNysxOworICAgICAgICB9CisgICAgICAgIGlmIChzaXplID4gUFlfU1NJWkVfVF9NQVggLSBpbmNyKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW5jb2RlZCByZXN1bHQgaXMgdG9vIGxvbmcgZm9yIGEgUHl0aG9uIHN0cmluZyIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgc2l6ZSArPSBpbmNyOworICAgIH0KKworICAgIHN0ciA9IF9QeUJ5dGVzV3JpdGVyX1ByZXBhcmUod3JpdGVyLCBzdHIsIHNpemUpOworICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvKiBnZW5lcmF0ZSByZXBsYWNlbWVudCAqLworICAgIGZvciAoaSA9IGNvbGxzdGFydDsgaSA8IGNvbGxlbmQ7ICsraSkgeworICAgICAgICBzdHIgKz0gc3ByaW50ZihzdHIsICImIyVkOyIsIFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpKTsKKyAgICB9CisgICAgcmV0dXJuIHN0cjsKK30KKwogLyogLS0tIEJsb29tIEZpbHRlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogLyogc3R1ZmYgdG8gaW1wbGVtZW50IHNpbXBsZSAiYmxvb20gZmlsdGVycyIgZm9yIFVuaWNvZGUgY2hhcmFjdGVycy4KQEAgLTU0OSw3ICs3MjAsNyBAQAogICAgICgoY2gpIDwgMTI4VSA/IGFzY2lpX2xpbmVicmVha1soY2gpXSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAoQkxPT00oYmxvb21fbGluZWJyZWFrLCAoY2gpKSAmJiBQeV9VTklDT0RFX0lTTElORUJSRUFLKGNoKSkpCiAKLVB5X0xPQ0FMX0lOTElORShCTE9PTV9NQVNLKQorc3RhdGljIGlubGluZSBCTE9PTV9NQVNLCiBtYWtlX2Jsb29tX21hc2soaW50IGtpbmQsIHZvaWQqIHB0ciwgUHlfc3NpemVfdCBsZW4pCiB7CiAjZGVmaW5lIEJMT09NX1VQREFURShUWVBFLCBNQVNLLCBQVFIsIExFTikgICAgICAgICAgICAgXApAQCAtNTg3LDYgKzc1OCwxOCBAQAogI3VuZGVmIEJMT09NX1VQREFURQogfQogCitzdGF0aWMgaW50CitlbnN1cmVfdW5pY29kZShQeU9iamVjdCAqb2JqKQoreworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKG9iaikpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJtdXN0IGJlIHN0ciwgbm90ICUuMTAwcyIsCisgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKG9iaiktPnRwX25hbWUpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiBQeVVuaWNvZGVfUkVBRFkob2JqKTsKK30KKwogLyogQ29tcGlsYXRpb24gb2YgdGVtcGxhdGVkIHJvdXRpbmVzICovCiAKICNpbmNsdWRlICJzdHJpbmdsaWIvYXNjaWlsaWIuaCIKQEAgLTY0MywzMSArODI2LDMxIEBACiBzdGF0aWMgUHlPYmplY3QgKgogZml4dXAoUHlPYmplY3QgKnNlbGYsIFB5X1VDUzQgKCpmaXhmY3QpKFB5T2JqZWN0ICpzKSk7CiAKLVB5X0xPQ0FMX0lOTElORShQeV9zc2l6ZV90KSBmaW5kY2hhcihjb25zdCB2b2lkICpzLCBpbnQga2luZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsIFB5X1VDUzQgY2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRpcmVjdGlvbikKK3N0YXRpYyBpbmxpbmUgUHlfc3NpemVfdAorZmluZGNoYXIoY29uc3Qgdm9pZCAqcywgaW50IGtpbmQsCisgICAgICAgICBQeV9zc2l6ZV90IHNpemUsIFB5X1VDUzQgY2gsCisgICAgICAgICBpbnQgZGlyZWN0aW9uKQogewotICAgIGludCBtb2RlID0gKGRpcmVjdGlvbiA9PSAxKSA/IEZBU1RfU0VBUkNIIDogRkFTVF9SU0VBUkNIOwotCiAgICAgc3dpdGNoIChraW5kKSB7CiAgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKLSAgICAgICAgewotICAgICAgICAgICAgUHlfVUNTMSBjaDEgPSAoUHlfVUNTMSkgY2g7Ci0gICAgICAgICAgICBpZiAoY2gxID09IGNoKQotICAgICAgICAgICAgICAgIHJldHVybiB1Y3MxbGliX2Zhc3RzZWFyY2goKFB5X1VDUzEgKikgcywgc2l6ZSwgJmNoMSwgMSwgMCwgbW9kZSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9CisgICAgICAgIGlmICgoUHlfVUNTMSkgY2ggIT0gY2gpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGlmIChkaXJlY3Rpb24gPiAwKQorICAgICAgICAgICAgcmV0dXJuIHVjczFsaWJfZmluZF9jaGFyKChQeV9VQ1MxICopIHMsIHNpemUsIChQeV9VQ1MxKSBjaCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiB1Y3MxbGliX3JmaW5kX2NoYXIoKFB5X1VDUzEgKikgcywgc2l6ZSwgKFB5X1VDUzEpIGNoKTsKICAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgotICAgICAgICB7Ci0gICAgICAgICAgICBQeV9VQ1MyIGNoMiA9IChQeV9VQ1MyKSBjaDsKLSAgICAgICAgICAgIGlmIChjaDIgPT0gY2gpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHVjczJsaWJfZmFzdHNlYXJjaCgoUHlfVUNTMiAqKSBzLCBzaXplLCAmY2gyLCAxLCAwLCBtb2RlKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKChQeV9VQ1MyKSBjaCAhPSBjaCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgaWYgKGRpcmVjdGlvbiA+IDApCisgICAgICAgICAgICByZXR1cm4gdWNzMmxpYl9maW5kX2NoYXIoKFB5X1VDUzIgKikgcywgc2l6ZSwgKFB5X1VDUzIpIGNoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIHVjczJsaWJfcmZpbmRfY2hhcigoUHlfVUNTMiAqKSBzLCBzaXplLCAoUHlfVUNTMikgY2gpOwogICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6Ci0gICAgICAgIHJldHVybiB1Y3M0bGliX2Zhc3RzZWFyY2goKFB5X1VDUzQgKikgcywgc2l6ZSwgJmNoLCAxLCAwLCBtb2RlKTsKKyAgICAgICAgaWYgKGRpcmVjdGlvbiA+IDApCisgICAgICAgICAgICByZXR1cm4gdWNzNGxpYl9maW5kX2NoYXIoKFB5X1VDUzQgKikgcywgc2l6ZSwgY2gpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gdWNzNGxpYl9yZmluZF9jaGFyKChQeV9VQ1M0ICopIHMsIHNpemUsIGNoKTsKICAgICBkZWZhdWx0OgogICAgICAgICBhc3NlcnQoMCk7CiAgICAgICAgIHJldHVybiAtMTsKQEAgLTg2NSw3ICsxMDQ4LDcgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBjb3B5X2xlbmd0aCA9IF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSk7CiAgICAgICAgIGNvcHlfbGVuZ3RoID0gUHlfTUlOKGNvcHlfbGVuZ3RoLCBsZW5ndGgpOwotICAgICAgICBQeV9NRU1DUFkoX1B5VW5pY29kZV9XU1RSKHcpLCBfUHlVbmljb2RlX1dTVFIodW5pY29kZSksCisgICAgICAgIG1lbWNweShfUHlVbmljb2RlX1dTVFIodyksIF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSwKICAgICAgICAgICAgICAgICAgIGNvcHlfbGVuZ3RoICogc2l6ZW9mKHdjaGFyX3QpKTsKICAgICAgICAgcmV0dXJuIHc7CiAgICAgfQpAQCAtMTI1Miw3ICsxNDM1LDcgQEAKICAgICAgICAgICAgIGlmIChtYXhfY2hhciA+PSAxMjgpCiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9Ci0gICAgICAgIFB5X01FTUNQWSgoY2hhciopdG9fZGF0YSArIHRvX2tpbmQgKiB0b19zdGFydCwKKyAgICAgICAgbWVtY3B5KChjaGFyKil0b19kYXRhICsgdG9fa2luZCAqIHRvX3N0YXJ0LAogICAgICAgICAgICAgICAgICAgKGNoYXIqKWZyb21fZGF0YSArIGZyb21fa2luZCAqIGZyb21fc3RhcnQsCiAgICAgICAgICAgICAgICAgICB0b19raW5kICogaG93X21hbnkpOwogICAgIH0KQEAgLTE4NDUsNyArMjAyOCw3IEBACiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CiAjaWYgUHlfVU5JQ09ERV9TSVpFID09IDIKLSAgICAgICAgUHlfTUVNQ1BZKFB5VW5pY29kZV8yQllURV9EQVRBKHVuaWNvZGUpLCB1LCBzaXplICogMik7CisgICAgICAgIG1lbWNweShQeVVuaWNvZGVfMkJZVEVfREFUQSh1bmljb2RlKSwgdSwgc2l6ZSAqIDIpOwogI2Vsc2UKICAgICAgICAgX1B5VW5pY29kZV9DT05WRVJUX0JZVEVTKFB5X1VOSUNPREUsIFB5X1VDUzIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUsIHUgKyBzaXplLCBQeVVuaWNvZGVfMkJZVEVfREFUQSh1bmljb2RlKSk7CkBAIC0xODU4LDcgKzIwNDEsNyBAQAogICAgICAgICB1bmljb2RlX2NvbnZlcnRfd2NoYXJfdG9fdWNzNCh1LCB1ICsgc2l6ZSwgdW5pY29kZSk7CiAjZWxzZQogICAgICAgICBhc3NlcnQobnVtX3N1cnJvZ2F0ZXMgPT0gMCk7Ci0gICAgICAgIFB5X01FTUNQWShQeVVuaWNvZGVfNEJZVEVfREFUQSh1bmljb2RlKSwgdSwgc2l6ZSAqIDQpOworICAgICAgICBtZW1jcHkoUHlVbmljb2RlXzRCWVRFX0RBVEEodW5pY29kZSksIHUsIHNpemUgKiA0KTsKICNlbmRpZgogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgpAQCAtMTk2MCw3ICsyMTQzLDcgQEAKICAgICB9CiB9CiAKLVB5X0xPQ0FMX0lOTElORShQeV9VQ1M0KQorc3RhdGljIGlubGluZSBQeV9VQ1M0CiBhbGlnbl9tYXhjaGFyKFB5X1VDUzQgbWF4Y2hhcikKIHsKICAgICBpZiAobWF4Y2hhciA8PSAxMjcpCkBAIC0yMTY5LDcgKzIzNTIsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBhc3NlcnQoUHlVbmljb2RlX0tJTkQoY29weSkgPT0gUHlVbmljb2RlX0tJTkQodW5pY29kZSkpOwogCi0gICAgUHlfTUVNQ1BZKFB5VW5pY29kZV9EQVRBKGNvcHkpLCBQeVVuaWNvZGVfREFUQSh1bmljb2RlKSwKKyAgICBtZW1jcHkoUHlVbmljb2RlX0RBVEEoY29weSksIFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpLAogICAgICAgICAgICAgICBsZW5ndGggKiBQeVVuaWNvZGVfS0lORCh1bmljb2RlKSk7CiAgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShjb3B5LCAxKSk7CiAgICAgcmV0dXJuIGNvcHk7CkBAIC0yMjc1LDcgKzI0NTgsNyBAQAogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgYXNzZXJ0KGtpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpOwotICAgICAgICBQeV9NRU1DUFkodGFyZ2V0LCBkYXRhLCBsZW4gKiBzaXplb2YoUHlfVUNTNCkpOworICAgICAgICBtZW1jcHkodGFyZ2V0LCBkYXRhLCBsZW4gKiBzaXplb2YoUHlfVUNTNCkpOwogICAgIH0KICAgICBpZiAoY29weV9udWxsKQogICAgICAgICB0YXJnZXRbbGVuXSA9IDA7CkBAIC0yNDU4LDEzICsyNjQxLDExIEBACiAgICAgICAgICAgICBsb25nZmxhZyA9IDE7CiAgICAgICAgICAgICArK2Y7CiAgICAgICAgIH0KLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwogICAgICAgICBlbHNlIGlmIChmWzFdID09ICdsJyAmJgogICAgICAgICAgICAgICAgICAoZlsyXSA9PSAnZCcgfHwgZlsyXSA9PSAndScgfHwgZlsyXSA9PSAnaScpKSB7CiAgICAgICAgICAgICBsb25nbG9uZ2ZsYWcgPSAxOwogICAgICAgICAgICAgZiArPSAyOwogICAgICAgICB9Ci0jZW5kaWYKICAgICB9CiAgICAgLyogaGFuZGxlIHRoZSBzaXplX3QgZmxhZy4gKi8KICAgICBlbHNlIGlmICgqZiA9PSAneicgJiYgKGZbMV0gPT0gJ2QnIHx8IGZbMV0gPT0gJ3UnIHx8IGZbMV0gPT0gJ2knKSkgewpAQCAtMjUwMiwxMSArMjY4Myw5IEBACiAgICAgICAgICAgICBpZiAobG9uZ2ZsYWcpCiAgICAgICAgICAgICAgICAgbGVuID0gc3ByaW50ZihidWZmZXIsICIlbHUiLAogICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKCp2YXJncywgdW5zaWduZWQgbG9uZykpOwotI2lmZGVmIEhBVkVfTE9OR19MT05HCiAgICAgICAgICAgICBlbHNlIGlmIChsb25nbG9uZ2ZsYWcpCi0gICAgICAgICAgICAgICAgbGVuID0gc3ByaW50ZihidWZmZXIsICIlIiBQWV9GT1JNQVRfTE9OR19MT05HICJ1IiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZygqdmFyZ3MsIHVuc2lnbmVkIFBZX0xPTkdfTE9ORykpOwotI2VuZGlmCisgICAgICAgICAgICAgICAgbGVuID0gc3ByaW50ZihidWZmZXIsICIlbGx1IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZygqdmFyZ3MsIHVuc2lnbmVkIGxvbmcgbG9uZykpOwogICAgICAgICAgICAgZWxzZSBpZiAoc2l6ZV90ZmxhZykKICAgICAgICAgICAgICAgICBsZW4gPSBzcHJpbnRmKGJ1ZmZlciwgIiUiIFBZX0ZPUk1BVF9TSVpFX1QgInUiLAogICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKCp2YXJncywgc2l6ZV90KSk7CkBAIC0yNTIxLDExICsyNzAwLDkgQEAKICAgICAgICAgICAgIGlmIChsb25nZmxhZykKICAgICAgICAgICAgICAgICBsZW4gPSBzcHJpbnRmKGJ1ZmZlciwgIiVsaSIsCiAgICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoKnZhcmdzLCBsb25nKSk7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICAgICAgICAgIGVsc2UgaWYgKGxvbmdsb25nZmxhZykKLSAgICAgICAgICAgICAgICBsZW4gPSBzcHJpbnRmKGJ1ZmZlciwgIiUiIFBZX0ZPUk1BVF9MT05HX0xPTkcgImkiLAotICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKCp2YXJncywgUFlfTE9OR19MT05HKSk7Ci0jZW5kaWYKKyAgICAgICAgICAgICAgICBsZW4gPSBzcHJpbnRmKGJ1ZmZlciwgIiVsbGkiLAorICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKCp2YXJncywgbG9uZyBsb25nKSk7CiAgICAgICAgICAgICBlbHNlIGlmIChzaXplX3RmbGFnKQogICAgICAgICAgICAgICAgIGxlbiA9IHNwcmludGYoYnVmZmVyLCAiJSIgUFlfRk9STUFUX1NJWkVfVCAiaSIsCiAgICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoKnZhcmdzLCBQeV9zc2l6ZV90KSk7CkBAIC0yNzAxLDkgKzI4NzgsOCBAQAogICAgIHdyaXRlci5taW5fbGVuZ3RoID0gc3RybGVuKGZvcm1hdCkgKyAxMDA7CiAgICAgd3JpdGVyLm92ZXJhbGxvY2F0ZSA9IDE7CiAKLSAgICAvKiB2YV9saXN0IG1heSBiZSBhbiBhcnJheSAob2YgMSBpdGVtKSBvbiBzb21lIHBsYXRmb3JtcyAoZXg6IEFNRDY0KS4KLSAgICAgICBDb3B5IGl0IHRvIGJlIGFibGUgdG8gcGFzcyBhIHJlZmVyZW5jZSB0byBhIHN1YmZ1bmN0aW9uLiAqLwotICAgIFB5X1ZBX0NPUFkodmFyZ3MyLCB2YXJncyk7CisgICAgLy8gQ29weSB2YXJhZ3MgdG8gYmUgYWJsZSB0byBwYXNzIGEgcmVmZXJlbmNlIHRvIGEgc3ViZnVuY3Rpb24uCisgICAgdmFfY29weSh2YXJnczIsIHZhcmdzKTsKIAogICAgIGZvciAoZiA9IGZvcm1hdDsgKmY7ICkgewogICAgICAgICBpZiAoKmYgPT0gJyUnKSB7CkBAIC0yNzM5LDkgKzI5MTUsMTEgQEAKICAgICAgICAgICAgIGYgPSBwOwogICAgICAgICB9CiAgICAgfQorICAgIHZhX2VuZCh2YXJnczIpOwogICAgIHJldHVybiBfUHlVbmljb2RlV3JpdGVyX0ZpbmlzaCgmd3JpdGVyKTsKIAogICBmYWlsOgorICAgIHZhX2VuZCh2YXJnczIpOwogICAgIF9QeVVuaWNvZGVXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKICAgICByZXR1cm4gTlVMTDsKIH0KQEAgLTI3OTAsNyArMjk2OCw3IEBACiAgICAgICAgICAgICBzaXplID0gcmVzICsgMTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmVzID0gc2l6ZTsKLSAgICAgICAgUHlfTUVNQ1BZKHcsIHdzdHIsIHNpemUgKiBzaXplb2Yod2NoYXJfdCkpOworICAgICAgICBtZW1jcHkodywgd3N0ciwgc2l6ZSAqIHNpemVvZih3Y2hhcl90KSk7CiAgICAgICAgIHJldHVybiByZXM7CiAgICAgfQogICAgIGVsc2UKQEAgLTI5MDcsNyArMzA4NSw3IEBACiAgICAgLyogUmV0cmlldmUgYSBieXRlcyBidWZmZXIgdmlldyB0aHJvdWdoIHRoZSBQRVAgMzExOCBidWZmZXIgaW50ZXJmYWNlICovCiAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihvYmosICZidWZmZXIsIFB5QlVGX1NJTVBMRSkgPCAwKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiY29lcmNpbmcgdG8gc3RyOiBuZWVkIGEgYnl0ZXMtbGlrZSBvYmplY3QsICUuODBzIGZvdW5kIiwKKyAgICAgICAgICAgICAgICAgICAgICJkZWNvZGluZyB0byBzdHI6IG5lZWQgYSBieXRlcy1saWtlIG9iamVjdCwgJS44MHMgZm91bmQiLAogICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShvYmopLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMjkyMiw5ICszMTAwLDkgQEAKICAgICByZXR1cm4gdjsKIH0KIAotLyogQ29udmVydCBlbmNvZGluZyB0byBsb3dlciBjYXNlIGFuZCByZXBsYWNlICdfJyB3aXRoICctJyBpbiBvcmRlciB0bwotICAgY2F0Y2ggZS5nLiBVVEZfOC4gUmV0dXJuIDAgb24gZXJyb3IgKGVuY29kaW5nIGlzIGxvbmdlciB0aGFuIGxvd2VyX2xlbi0xKSwKLSAgIDEgb24gc3VjY2Vzcy4gKi8KKy8qIE5vcm1hbGl6ZSBhbiBlbmNvZGluZyBuYW1lOiBzaW1pbGFyIHRvIGVuY29kaW5ncy5ub3JtYWxpemVfZW5jb2RpbmcoKSwgYnV0CisgICBhbHNvIGNvbnZlcnQgdG8gbG93ZXJjYXNlLiBSZXR1cm4gMSBvbiBzdWNjZXNzLCBvciAwIG9uIGVycm9yIChlbmNvZGluZyBpcworICAgbG9uZ2VyIHRoYW4gbG93ZXJfbGVuLTEpLiAqLwogaW50CiBfUHlfbm9ybWFsaXplX2VuY29kaW5nKGNvbnN0IGNoYXIgKmVuY29kaW5nLAogICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpsb3dlciwKQEAgLTI5MzMsMzAgKzMxMTEsMzkgQEAKICAgICBjb25zdCBjaGFyICplOwogICAgIGNoYXIgKmw7CiAgICAgY2hhciAqbF9lbmQ7CisgICAgaW50IHB1bmN0OwogCi0gICAgaWYgKGVuY29kaW5nID09IE5VTEwpIHsKLSAgICAgICAgLyogNiA9PSBzdHJsZW4oInV0Zi04IikgKyAxICovCi0gICAgICAgIGlmIChsb3dlcl9sZW4gPCA2KQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHN0cmNweShsb3dlciwgInV0Zi04Iik7Ci0gICAgICAgIHJldHVybiAxOwotICAgIH0KKyAgICBhc3NlcnQoZW5jb2RpbmcgIT0gTlVMTCk7CisKICAgICBlID0gZW5jb2Rpbmc7CiAgICAgbCA9IGxvd2VyOwogICAgIGxfZW5kID0gJmxvd2VyW2xvd2VyX2xlbiAtIDFdOwotICAgIHdoaWxlICgqZSkgewotICAgICAgICBpZiAobCA9PSBsX2VuZCkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBpZiAoUHlfSVNVUFBFUigqZSkpIHsKLSAgICAgICAgICAgICpsKysgPSBQeV9UT0xPV0VSKCplKyspOworICAgIHB1bmN0ID0gMDsKKyAgICB3aGlsZSAoMSkgeworICAgICAgICBjaGFyIGMgPSAqZTsKKyAgICAgICAgaWYgKGMgPT0gMCkgeworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoKmUgPT0gJ18nKSB7Ci0gICAgICAgICAgICAqbCsrID0gJy0nOwotICAgICAgICAgICAgZSsrOworCisgICAgICAgIGlmIChQeV9JU0FMTlVNKGMpIHx8IGMgPT0gJy4nKSB7CisgICAgICAgICAgICBpZiAocHVuY3QgJiYgbCAhPSBsb3dlcikgeworICAgICAgICAgICAgICAgIGlmIChsID09IGxfZW5kKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAqbCsrID0gJ18nOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcHVuY3QgPSAwOworCisgICAgICAgICAgICBpZiAobCA9PSBsX2VuZCkgeworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgKmwrKyA9IFB5X1RPTE9XRVIoYyk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAqbCsrID0gKmUrKzsKKyAgICAgICAgICAgIHB1bmN0ID0gMTsKICAgICAgICAgfQorCisgICAgICAgIGUrKzsKICAgICB9CiAgICAgKmwgPSAnXDAnOwogICAgIHJldHVybiAxOwpAQCAtMjk3MCwyOCArMzE1Nyw1MSBAQAogewogICAgIFB5T2JqZWN0ICpidWZmZXIgPSBOVUxMLCAqdW5pY29kZTsKICAgICBQeV9idWZmZXIgaW5mbzsKLSAgICBjaGFyIGxvd2VyWzExXTsgIC8qIEVub3VnaCBmb3IgYW55IGVuY29kaW5nIHNob3J0Y3V0ICovCisgICAgY2hhciBidWZsb3dlclsxMV07ICAgLyogc3RybGVuKCJpc28tODg1OS0xXDAiKSA9PSAxMSwgbG9uZ2VzdCBzaG9ydGN1dCAqLworCisgICAgaWYgKGVuY29kaW5nID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwocywgc2l6ZSwgZXJyb3JzLCBOVUxMKTsKKyAgICB9CiAKICAgICAvKiBTaG9ydGN1dHMgZm9yIGNvbW1vbiBkZWZhdWx0IGVuY29kaW5ncyAqLwotICAgIGlmIChfUHlfbm9ybWFsaXplX2VuY29kaW5nKGVuY29kaW5nLCBsb3dlciwgc2l6ZW9mKGxvd2VyKSkpIHsKLSAgICAgICAgaWYgKChzdHJjbXAobG93ZXIsICJ1dGYtOCIpID09IDApIHx8Ci0gICAgICAgICAgICAoc3RyY21wKGxvd2VyLCAidXRmOCIpID09IDApKQotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwocywgc2l6ZSwgZXJyb3JzLCBOVUxMKTsKLSAgICAgICAgZWxzZSBpZiAoKHN0cmNtcChsb3dlciwgImxhdGluLTEiKSA9PSAwKSB8fAotICAgICAgICAgICAgICAgICAoc3RyY21wKGxvd2VyLCAibGF0aW4xIikgPT0gMCkgfHwKLSAgICAgICAgICAgICAgICAgKHN0cmNtcChsb3dlciwgImlzby04ODU5LTEiKSA9PSAwKSB8fAotICAgICAgICAgICAgICAgICAoc3RyY21wKGxvd2VyLCAiaXNvODg1OS0xIikgPT0gMCkpCi0gICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZUxhdGluMShzLCBzaXplLCBlcnJvcnMpOwotI2lmZGVmIEhBVkVfTUJDUwotICAgICAgICBlbHNlIGlmIChzdHJjbXAobG93ZXIsICJtYmNzIikgPT0gMCkKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlTUJDUyhzLCBzaXplLCBlcnJvcnMpOwotI2VuZGlmCi0gICAgICAgIGVsc2UgaWYgKHN0cmNtcChsb3dlciwgImFzY2lpIikgPT0gMCkKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlQVNDSUkocywgc2l6ZSwgZXJyb3JzKTsKLSAgICAgICAgZWxzZSBpZiAoc3RyY21wKGxvd2VyLCAidXRmLTE2IikgPT0gMCkKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlVVRGMTYocywgc2l6ZSwgZXJyb3JzLCAwKTsKLSAgICAgICAgZWxzZSBpZiAoc3RyY21wKGxvd2VyLCAidXRmLTMyIikgPT0gMCkKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlVVRGMzIocywgc2l6ZSwgZXJyb3JzLCAwKTsKKyAgICBpZiAoX1B5X25vcm1hbGl6ZV9lbmNvZGluZyhlbmNvZGluZywgYnVmbG93ZXIsIHNpemVvZihidWZsb3dlcikpKSB7CisgICAgICAgIGNoYXIgKmxvd2VyID0gYnVmbG93ZXI7CisKKyAgICAgICAgLyogRmFzdCBwYXRocyAqLworICAgICAgICBpZiAobG93ZXJbMF0gPT0gJ3UnICYmIGxvd2VyWzFdID09ICd0JyAmJiBsb3dlclsyXSA9PSAnZicpIHsKKyAgICAgICAgICAgIGxvd2VyICs9IDM7CisgICAgICAgICAgICBpZiAoKmxvd2VyID09ICdfJykgeworICAgICAgICAgICAgICAgIC8qIE1hdGNoICJ1dGY4IiBhbmQgInV0Zl84IiAqLworICAgICAgICAgICAgICAgIGxvd2VyKys7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChsb3dlclswXSA9PSAnOCcgJiYgbG93ZXJbMV0gPT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsKHMsIHNpemUsIGVycm9ycywgTlVMTCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChsb3dlclswXSA9PSAnMScgJiYgbG93ZXJbMV0gPT0gJzYnICYmIGxvd2VyWzJdID09IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZVVURjE2KHMsIHNpemUsIGVycm9ycywgMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChsb3dlclswXSA9PSAnMycgJiYgbG93ZXJbMV0gPT0gJzInICYmIGxvd2VyWzJdID09IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZVVURjMyKHMsIHNpemUsIGVycm9ycywgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoc3RyY21wKGxvd2VyLCAiYXNjaWkiKSA9PSAwCisgICAgICAgICAgICAgICAgfHwgc3RyY21wKGxvd2VyLCAidXNfYXNjaWkiKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVBU0NJSShzLCBzaXplLCBlcnJvcnMpOworICAgICAgICAgICAgfQorICAgICNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgICAgICBlbHNlIGlmIChzdHJjbXAobG93ZXIsICJtYmNzIikgPT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlTUJDUyhzLCBzaXplLCBlcnJvcnMpOworICAgICAgICAgICAgfQorICAgICNlbmRpZgorICAgICAgICAgICAgZWxzZSBpZiAoc3RyY21wKGxvd2VyLCAibGF0aW4xIikgPT0gMAorICAgICAgICAgICAgICAgICAgICAgfHwgc3RyY21wKGxvd2VyLCAibGF0aW5fMSIpID09IDAKKyAgICAgICAgICAgICAgICAgICAgIHx8IHN0cmNtcChsb3dlciwgImlzb184ODU5XzEiKSA9PSAwCisgICAgICAgICAgICAgICAgICAgICB8fCBzdHJjbXAobG93ZXIsICJpc284ODU5XzEiKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVMYXRpbjEocywgc2l6ZSwgZXJyb3JzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KIAogICAgIC8qIERlY29kZSB2aWEgdGhlIGNvZGVjIHJlZ2lzdHJ5ICovCkBAIC0zMDMxLDYgKzMyNDEsMTEgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCisgICAgaWYgKFB5RXJyX1dhcm5FeChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAiUHlVbmljb2RlX0FzRGVjb2RlZE9iamVjdCgpIGlzIGRlcHJlY2F0ZWQ7ICIKKyAgICAgICAgICAgICAgICAgICAgICJ1c2UgUHlDb2RlY19EZWNvZGUoKSB0byBkZWNvZGUgZnJvbSBzdHIiLCAxKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgaWYgKGVuY29kaW5nID09IE5VTEwpCiAgICAgICAgIGVuY29kaW5nID0gUHlVbmljb2RlX0dldERlZmF1bHRFbmNvZGluZygpOwogCkBAIC0zMDUwLDYgKzMyNjUsMTEgQEAKICAgICAgICAgZ290byBvbkVycm9yOwogICAgIH0KIAorICAgIGlmIChQeUVycl9XYXJuRXgoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgIlB5VW5pY29kZV9Bc0RlY29kZWRVbmljb2RlKCkgaXMgZGVwcmVjYXRlZDsgIgorICAgICAgICAgICAgICAgICAgICAgInVzZSBQeUNvZGVjX0RlY29kZSgpIHRvIGRlY29kZSBmcm9tIHN0ciB0byBzdHIiLCAxKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgaWYgKGVuY29kaW5nID09IE5VTEwpCiAgICAgICAgIGVuY29kaW5nID0gUHlVbmljb2RlX0dldERlZmF1bHRFbmNvZGluZygpOwogCkBAIC0zMTAwLDYgKzMzMjAsMTIgQEAKICAgICAgICAgZ290byBvbkVycm9yOwogICAgIH0KIAorICAgIGlmIChQeUVycl9XYXJuRXgoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgIlB5VW5pY29kZV9Bc0VuY29kZWRPYmplY3QoKSBpcyBkZXByZWNhdGVkOyAiCisgICAgICAgICAgICAgICAgICAgICAidXNlIFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcoKSB0byBlbmNvZGUgZnJvbSBzdHIgdG8gYnl0ZXMgIgorICAgICAgICAgICAgICAgICAgICAgIm9yIFB5Q29kZWNfRW5jb2RlKCkgZm9yIGdlbmVyaWMgZW5jb2RpbmciLCAxKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgaWYgKGVuY29kaW5nID09IE5VTEwpCiAgICAgICAgIGVuY29kaW5nID0gUHlVbmljb2RlX0dldERlZmF1bHRFbmNvZGluZygpOwogCkBAIC0zMTYzLDI0ICszMzg5LDIyIEBACiBzdGF0aWMgaW50CiBsb2NhbGVfZXJyb3JfaGFuZGxlcihjb25zdCBjaGFyICplcnJvcnMsIGludCAqc3Vycm9nYXRlZXNjYXBlKQogewotICAgIGlmIChlcnJvcnMgPT0gTlVMTCkgeworICAgIF9QeV9lcnJvcl9oYW5kbGVyIGVycm9yX2hhbmRsZXIgPSBnZXRfZXJyb3JfaGFuZGxlcihlcnJvcnMpOworICAgIHN3aXRjaCAoZXJyb3JfaGFuZGxlcikKKyAgICB7CisgICAgY2FzZSBfUHlfRVJST1JfU1RSSUNUOgogICAgICAgICAqc3Vycm9nYXRlZXNjYXBlID0gMDsKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgaWYgKHN0cmNtcChlcnJvcnMsICJzdHJpY3QiKSA9PSAwKSB7Ci0gICAgICAgICpzdXJyb2dhdGVlc2NhcGUgPSAwOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgaWYgKHN0cmNtcChlcnJvcnMsICJzdXJyb2dhdGVlc2NhcGUiKSA9PSAwKSB7CisgICAgY2FzZSBfUHlfRVJST1JfU1VSUk9HQVRFRVNDQVBFOgogICAgICAgICAqc3Vycm9nYXRlZXNjYXBlID0gMTsKICAgICAgICAgcmV0dXJuIDA7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAib25seSAnc3RyaWN0JyBhbmQgJ3N1cnJvZ2F0ZWVzY2FwZScgZXJyb3IgaGFuZGxlcnMgIgorICAgICAgICAgICAgICAgICAgICAgImFyZSBzdXBwb3J0ZWQsIG5vdCAnJXMnIiwKKyAgICAgICAgICAgICAgICAgICAgIGVycm9ycyk7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICJvbmx5ICdzdHJpY3QnIGFuZCAnc3Vycm9nYXRlZXNjYXBlJyBlcnJvciBoYW5kbGVycyAiCi0gICAgICAgICAgICAgICAgICJhcmUgc3VwcG9ydGVkLCBub3QgJyVzJyIsCi0gICAgICAgICAgICAgICAgIGVycm9ycyk7Ci0gICAgcmV0dXJuIC0xOwogfQogCiBQeU9iamVjdCAqCkBAIC0zMjk2LDEwICszNTIwLDggQEAKIFB5T2JqZWN0ICoKIFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQoUHlPYmplY3QgKnVuaWNvZGUpCiB7Ci0jaWZkZWYgSEFWRV9NQkNTCi0gICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVDb2RlUGFnZShDUF9BQ1AsIHVuaWNvZGUsIE5VTEwpOwotI2VsaWYgZGVmaW5lZChfX0FQUExFX18pCi0gICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNVVEY4U3RyaW5nKHVuaWNvZGUsICJzdXJyb2dhdGVlc2NhcGUiKTsKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyAgICByZXR1cm4gX1B5VW5pY29kZV9Bc1VURjhTdHJpbmcodW5pY29kZSwgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGVFcnJvcnMpOwogI2Vsc2UKICAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycCA9IFB5VGhyZWFkU3RhdGVfR0VUKCktPmludGVycDsKICAgICAvKiBCb290c3RyYXAgY2hlY2s6IGlmIHRoZSBmaWxlc3lzdGVtIGNvZGVjIGlzIGltcGxlbWVudGVkIGluIFB5dGhvbiwgd2UKQEAgLTMzMTQsMTAgKzM1MzYsMTAgQEAKICAgICBpZiAoUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyAmJiBpbnRlcnAtPmZzY29kZWNfaW5pdGlhbGl6ZWQpIHsKICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcodW5pY29kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1cnJvZ2F0ZWVzY2FwZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9ycyk7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZUxvY2FsZSh1bmljb2RlLCAic3Vycm9nYXRlZXNjYXBlIik7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlTG9jYWxlKHVuaWNvZGUsIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RlRXJyb3JzKTsKICAgICB9CiAjZW5kaWYKIH0KQEAgLTMzMjgsMzQgKzM1NTAsNTYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIFB5T2JqZWN0ICp2OwotICAgIGNoYXIgbG93ZXJbMTFdOyAgLyogRW5vdWdoIGZvciBhbnkgZW5jb2Rpbmcgc2hvcnRjdXQgKi8KKyAgICBjaGFyIGJ1Zmxvd2VyWzExXTsgICAvKiBzdHJsZW4oImlzb184ODU5XzFcMCIpID09IDExLCBsb25nZXN0IHNob3J0Y3V0ICovCiAKICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh1bmljb2RlKSkgewogICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKKyAgICBpZiAoZW5jb2RpbmcgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9Bc1VURjhTdHJpbmcodW5pY29kZSwgZXJyb3JzKTsKKyAgICB9CisKICAgICAvKiBTaG9ydGN1dHMgZm9yIGNvbW1vbiBkZWZhdWx0IGVuY29kaW5ncyAqLwotICAgIGlmIChfUHlfbm9ybWFsaXplX2VuY29kaW5nKGVuY29kaW5nLCBsb3dlciwgc2l6ZW9mKGxvd2VyKSkpIHsKLSAgICAgICAgaWYgKChzdHJjbXAobG93ZXIsICJ1dGYtOCIpID09IDApIHx8Ci0gICAgICAgICAgICAoc3RyY21wKGxvd2VyLCAidXRmOCIpID09IDApKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoZXJyb3JzID09IE5VTEwgfHwgc3RyY21wKGVycm9ycywgInN0cmljdCIpID09IDApCi0gICAgICAgICAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNVVEY4U3RyaW5nKHVuaWNvZGUsIE5VTEwpOwotICAgICAgICAgICAgZWxzZQorICAgIGlmIChfUHlfbm9ybWFsaXplX2VuY29kaW5nKGVuY29kaW5nLCBidWZsb3dlciwgc2l6ZW9mKGJ1Zmxvd2VyKSkpIHsKKyAgICAgICAgY2hhciAqbG93ZXIgPSBidWZsb3dlcjsKKworICAgICAgICAvKiBGYXN0IHBhdGhzICovCisgICAgICAgIGlmIChsb3dlclswXSA9PSAndScgJiYgbG93ZXJbMV0gPT0gJ3QnICYmIGxvd2VyWzJdID09ICdmJykgeworICAgICAgICAgICAgbG93ZXIgKz0gMzsKKyAgICAgICAgICAgIGlmICgqbG93ZXIgPT0gJ18nKSB7CisgICAgICAgICAgICAgICAgLyogTWF0Y2ggInV0ZjgiIGFuZCAidXRmXzgiICovCisgICAgICAgICAgICAgICAgbG93ZXIrKzsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGxvd2VyWzBdID09ICc4JyAmJiBsb3dlclsxXSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNVVEY4U3RyaW5nKHVuaWNvZGUsIGVycm9ycyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChsb3dlclswXSA9PSAnMScgJiYgbG93ZXJbMV0gPT0gJzYnICYmIGxvd2VyWzJdID09IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9FbmNvZGVVVEYxNih1bmljb2RlLCBlcnJvcnMsIDApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAobG93ZXJbMF0gPT0gJzMnICYmIGxvd2VyWzFdID09ICcyJyAmJiBsb3dlclsyXSA9PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfRW5jb2RlVVRGMzIodW5pY29kZSwgZXJyb3JzLCAwKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBlbHNlIGlmICgoc3RyY21wKGxvd2VyLCAibGF0aW4tMSIpID09IDApIHx8Ci0gICAgICAgICAgICAgICAgIChzdHJjbXAobG93ZXIsICJsYXRpbjEiKSA9PSAwKSB8fAotICAgICAgICAgICAgICAgICAoc3RyY21wKGxvd2VyLCAiaXNvLTg4NTktMSIpID09IDApIHx8Ci0gICAgICAgICAgICAgICAgIChzdHJjbXAobG93ZXIsICJpc284ODU5LTEiKSA9PSAwKSkKLSAgICAgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0FzTGF0aW4xU3RyaW5nKHVuaWNvZGUsIGVycm9ycyk7Ci0jaWZkZWYgSEFWRV9NQkNTCi0gICAgICAgIGVsc2UgaWYgKHN0cmNtcChsb3dlciwgIm1iY3MiKSA9PSAwKQotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVDb2RlUGFnZShDUF9BQ1AsIHVuaWNvZGUsIGVycm9ycyk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKHN0cmNtcChsb3dlciwgImFzY2lpIikgPT0gMAorICAgICAgICAgICAgICAgIHx8IHN0cmNtcChsb3dlciwgInVzX2FzY2lpIikgPT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0FzQVNDSUlTdHJpbmcodW5pY29kZSwgZXJyb3JzKTsKKyAgICAgICAgICAgIH0KKyNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgICAgICBlbHNlIGlmIChzdHJjbXAobG93ZXIsICJtYmNzIikgPT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlQ29kZVBhZ2UoQ1BfQUNQLCB1bmljb2RlLCBlcnJvcnMpOworICAgICAgICAgICAgfQogI2VuZGlmCi0gICAgICAgIGVsc2UgaWYgKHN0cmNtcChsb3dlciwgImFzY2lpIikgPT0gMCkKLSAgICAgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0FzQVNDSUlTdHJpbmcodW5pY29kZSwgZXJyb3JzKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHN0cmNtcChsb3dlciwgImxhdGluMSIpID09IDAgfHwKKyAgICAgICAgICAgICAgICAgICAgIHN0cmNtcChsb3dlciwgImxhdGluXzEiKSA9PSAwIHx8CisgICAgICAgICAgICAgICAgICAgICBzdHJjbXAobG93ZXIsICJpc29fODg1OV8xIikgPT0gMCB8fAorICAgICAgICAgICAgICAgICAgICAgc3RyY21wKGxvd2VyLCAiaXNvODg1OV8xIikgPT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0FzTGF0aW4xU3RyaW5nKHVuaWNvZGUsIGVycm9ycyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiAKICAgICAvKiBFbmNvZGUgdmlhIHRoZSBjb2RlYyByZWdpc3RyeSAqLwpAQCAtMzQwNyw2ICszNjUxLDExIEBACiAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICB9CiAKKyAgICBpZiAoUHlFcnJfV2FybkV4KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICJQeVVuaWNvZGVfQXNFbmNvZGVkVW5pY29kZSgpIGlzIGRlcHJlY2F0ZWQ7ICIKKyAgICAgICAgICAgICAgICAgICAgICJ1c2UgUHlDb2RlY19FbmNvZGUoKSB0byBlbmNvZGUgZnJvbSBzdHIgdG8gc3RyIiwgMSkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIGlmIChlbmNvZGluZyA9PSBOVUxMKQogICAgICAgICBlbmNvZGluZyA9IFB5VW5pY29kZV9HZXREZWZhdWx0RW5jb2RpbmcoKTsKIApAQCAtMzU4MCwxMCArMzgyOSw4IEBACiBQeU9iamVjdCoKIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSkKIHsKLSNpZmRlZiBIQVZFX01CQ1MKLSAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZU1CQ1Mocywgc2l6ZSwgTlVMTCk7Ci0jZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKLSAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bChzLCBzaXplLCAic3Vycm9nYXRlZXNjYXBlIiwgTlVMTCk7CisjaWYgZGVmaW5lZChfX0FQUExFX18pCisgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwocywgc2l6ZSwgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGVFcnJvcnMsIE5VTEwpOwogI2Vsc2UKICAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycCA9IFB5VGhyZWFkU3RhdGVfR0VUKCktPmludGVycDsKICAgICAvKiBCb290c3RyYXAgY2hlY2s6IGlmIHRoZSBmaWxlc3lzdGVtIGNvZGVjIGlzIGltcGxlbWVudGVkIGluIFB5dGhvbiwgd2UKQEAgLTM1OTgsMTAgKzM4NDUsMTAgQEAKICAgICBpZiAoUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyAmJiBpbnRlcnAtPmZzY29kZWNfaW5pdGlhbGl6ZWQpIHsKICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGUocywgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1cnJvZ2F0ZWVzY2FwZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9ycyk7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZUxvY2FsZUFuZFNpemUocywgc2l6ZSwgInN1cnJvZ2F0ZWVzY2FwZSIpOworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZUxvY2FsZUFuZFNpemUocywgc2l6ZSwgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGVFcnJvcnMpOwogICAgIH0KICNlbmRpZgogfQpAQCAtMzYxMCw2ICszODU3LDcgQEAKIGludAogUHlVbmljb2RlX0ZTQ29udmVydGVyKFB5T2JqZWN0KiBhcmcsIHZvaWQqIGFkZHIpCiB7CisgICAgUHlPYmplY3QgKnBhdGggPSBOVUxMOwogICAgIFB5T2JqZWN0ICpvdXRwdXQgPSBOVUxMOwogICAgIFB5X3NzaXplX3Qgc2l6ZTsKICAgICB2b2lkICpkYXRhOwpAQCAtMzYxOCwyNCArMzg2NiwyMiBAQAogICAgICAgICAqKFB5T2JqZWN0KiopYWRkciA9IE5VTEw7CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KLSAgICBpZiAoUHlCeXRlc19DaGVjayhhcmcpKSB7Ci0gICAgICAgIG91dHB1dCA9IGFyZzsKLSAgICAgICAgUHlfSU5DUkVGKG91dHB1dCk7CisgICAgcGF0aCA9IFB5T1NfRlNQYXRoKGFyZyk7CisgICAgaWYgKHBhdGggPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGFyZyA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KGFyZyk7Ci0gICAgICAgIGlmICghYXJnKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIG91dHB1dCA9IFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQoYXJnKTsKLSAgICAgICAgUHlfREVDUkVGKGFyZyk7Ci0gICAgICAgIGlmICghb3V0cHV0KQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGlmICghUHlCeXRlc19DaGVjayhvdXRwdXQpKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYob3V0cHV0KTsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJlbmNvZGVyIGZhaWxlZCB0byByZXR1cm4gYnl0ZXMiKTsKKyAgICBpZiAoUHlCeXRlc19DaGVjayhwYXRoKSkgeworICAgICAgICBvdXRwdXQgPSBwYXRoOworICAgIH0KKyAgICBlbHNlIHsgIC8vIFB5T1NfRlNQYXRoKCkgZ3VhcmFudGVlcyBpdHMgcmV0dXJuZWQgdmFsdWUgaXMgYnl0ZXMgb3Igc3RyLgorICAgICAgICBvdXRwdXQgPSBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KHBhdGgpOworICAgICAgICBQeV9ERUNSRUYocGF0aCk7CisgICAgICAgIGlmICghb3V0cHV0KSB7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQorICAgICAgICBhc3NlcnQoUHlCeXRlc19DaGVjayhvdXRwdXQpKTsKICAgICB9CisKICAgICBzaXplID0gUHlCeXRlc19HRVRfU0laRShvdXRwdXQpOwogICAgIGRhdGEgPSBQeUJ5dGVzX0FTX1NUUklORyhvdXRwdXQpOwogICAgIGlmICgoc2l6ZV90KXNpemUgIT0gc3RybGVuKGRhdGEpKSB7CkBAIC0zNjUxLDM2ICszODk3LDYwIEBACiBpbnQKIFB5VW5pY29kZV9GU0RlY29kZXIoUHlPYmplY3QqIGFyZywgdm9pZCogYWRkcikKIHsKKyAgICBpbnQgaXNfYnVmZmVyID0gMDsKKyAgICBQeU9iamVjdCAqcGF0aCA9IE5VTEw7CiAgICAgUHlPYmplY3QgKm91dHB1dCA9IE5VTEw7CiAgICAgaWYgKGFyZyA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0RFQ1JFRigqKFB5T2JqZWN0KiopYWRkcik7CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KLSAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGFyZykpIHsKLSAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShhcmcpID09IC0xKQorCisgICAgaXNfYnVmZmVyID0gUHlPYmplY3RfQ2hlY2tCdWZmZXIoYXJnKTsKKyAgICBpZiAoIWlzX2J1ZmZlcikgeworICAgICAgICBwYXRoID0gUHlPU19GU1BhdGgoYXJnKTsKKyAgICAgICAgaWYgKHBhdGggPT0gTlVMTCkgewogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIG91dHB1dCA9IGFyZzsKLSAgICAgICAgUHlfSU5DUkVGKG91dHB1dCk7CisgICAgICAgIH0KICAgICB9Ci0gICAgZWxzZSBpZiAoUHlPYmplY3RfQ2hlY2tCdWZmZXIoYXJnKSkgewotICAgICAgICBhcmcgPSBQeUJ5dGVzX0Zyb21PYmplY3QoYXJnKTsKLSAgICAgICAgaWYgKCFhcmcpCisgICAgZWxzZSB7CisgICAgICAgIHBhdGggPSBhcmc7CisgICAgICAgIFB5X0lOQ1JFRihhcmcpOworICAgIH0KKworICAgIGlmIChQeVVuaWNvZGVfQ2hlY2socGF0aCkpIHsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShwYXRoKSA9PSAtMSkgeworICAgICAgICAgICAgUHlfREVDUkVGKHBhdGgpOwogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIG91dHB1dCA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplKFB5Qnl0ZXNfQVNfU1RSSU5HKGFyZyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfR0VUX1NJWkUoYXJnKSk7Ci0gICAgICAgIFB5X0RFQ1JFRihhcmcpOwotICAgICAgICBpZiAoIW91dHB1dCkKKyAgICAgICAgfQorICAgICAgICBvdXRwdXQgPSBwYXRoOworICAgIH0KKyAgICBlbHNlIGlmIChQeUJ5dGVzX0NoZWNrKHBhdGgpIHx8IGlzX2J1ZmZlcikgeworICAgICAgICBQeU9iamVjdCAqcGF0aF9ieXRlcyA9IE5VTEw7CisKKyAgICAgICAgaWYgKCFQeUJ5dGVzX0NoZWNrKHBhdGgpICYmCisgICAgICAgICAgICBQeUVycl9XYXJuRm9ybWF0KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywgMSwKKyAgICAgICAgICAgICJwYXRoIHNob3VsZCBiZSBzdHJpbmcsIGJ5dGVzLCBvciBvcy5QYXRoTGlrZSwgbm90ICUuMjAwcyIsCisgICAgICAgICAgICBQeV9UWVBFKGFyZyktPnRwX25hbWUpKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHBhdGgpOwogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKG91dHB1dCkpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihvdXRwdXQpOwotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImRlY29kZXIgZmFpbGVkIHRvIHJldHVybiB1bmljb2RlIik7CisgICAgICAgIH0KKyAgICAgICAgcGF0aF9ieXRlcyA9IFB5Qnl0ZXNfRnJvbU9iamVjdChwYXRoKTsKKyAgICAgICAgUHlfREVDUkVGKHBhdGgpOworICAgICAgICBpZiAoIXBhdGhfYnl0ZXMpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIG91dHB1dCA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplKFB5Qnl0ZXNfQVNfU1RSSU5HKHBhdGhfYnl0ZXMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0dFVF9TSVpFKHBhdGhfYnl0ZXMpKTsKKyAgICAgICAgUHlfREVDUkVGKHBhdGhfYnl0ZXMpOworICAgICAgICBpZiAoIW91dHB1dCkgewogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAicGF0aCBzaG91bGQgYmUgc3RyaW5nIG9yIGJ5dGVzLCBub3QgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgICJwYXRoIHNob3VsZCBiZSBzdHJpbmcsIGJ5dGVzLCBvciBvcy5QYXRoTGlrZSwgbm90ICUuMjAwcyIsCiAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKGFyZyktPnRwX25hbWUpOworICAgICAgICBQeV9ERUNSRUYocGF0aCk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBpZiAoUHlVbmljb2RlX1JFQURZKG91dHB1dCkgPT0gLTEpIHsKQEAgLTM3MTIsNyArMzk4Miw3IEBACiAKICAgICBpZiAoUHlVbmljb2RlX1VURjgodW5pY29kZSkgPT0gTlVMTCkgewogICAgICAgICBhc3NlcnQoIVB5VW5pY29kZV9JU19DT01QQUNUX0FTQ0lJKHVuaWNvZGUpKTsKLSAgICAgICAgYnl0ZXMgPSBfUHlVbmljb2RlX0FzVVRGOFN0cmluZyh1bmljb2RlLCAic3RyaWN0Iik7CisgICAgICAgIGJ5dGVzID0gX1B5VW5pY29kZV9Bc1VURjhTdHJpbmcodW5pY29kZSwgTlVMTCk7CiAgICAgICAgIGlmIChieXRlcyA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIF9QeVVuaWNvZGVfVVRGOCh1bmljb2RlKSA9IFB5T2JqZWN0X01BTExPQyhQeUJ5dGVzX0dFVF9TSVpFKGJ5dGVzKSArIDEpOwpAQCAtMzcyMiw3ICszOTkyLDcgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIF9QeVVuaWNvZGVfVVRGOF9MRU5HVEgodW5pY29kZSkgPSBQeUJ5dGVzX0dFVF9TSVpFKGJ5dGVzKTsKLSAgICAgICAgUHlfTUVNQ1BZKF9QeVVuaWNvZGVfVVRGOCh1bmljb2RlKSwKKyAgICAgICAgbWVtY3B5KF9QeVVuaWNvZGVfVVRGOCh1bmljb2RlKSwKICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVzKSwKICAgICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVfVVRGOF9MRU5HVEgodW5pY29kZSkgKyAxKTsKICAgICAgICAgUHlfREVDUkVGKGJ5dGVzKTsKQEAgLTM5NjIsNyArNDIzMiw3IEBACiAgICAgUHlfQ0xFQVIoKmV4Y2VwdGlvbk9iamVjdCk7CiB9CiAKLSNpZmRlZiBIQVZFX01CQ1MKKyNpZmRlZiBNU19XSU5ET1dTCiAvKiBlcnJvciBoYW5kbGluZyBjYWxsYmFjayBoZWxwZXI6CiAgICBidWlsZCBhcmd1bWVudHMsIGNhbGwgdGhlIGNhbGxiYWNrIGFuZCBjaGVjayB0aGUgYXJndW1lbnRzLAogICAgaWYgbm8gZXhjZXB0aW9uIG9jY3VycmVkLCBjb3B5IHRoZSByZXBsYWNlbWVudCB0byB0aGUgb3V0cHV0CkBAIC0zOTc4LDcgKzQyNDgsNyBAQAogICAgIFB5X3NzaXplX3QgKmVuZGlucG9zLCBQeU9iamVjdCAqKmV4Y2VwdGlvbk9iamVjdCwgY29uc3QgY2hhciAqKmlucHRyLAogICAgIFB5T2JqZWN0ICoqb3V0cHV0LCBQeV9zc2l6ZV90ICpvdXRwb3MpCiB7Ci0gICAgc3RhdGljIGNoYXIgKmFyZ3BhcnNlID0gIk8hbjtkZWNvZGluZyBlcnJvciBoYW5kbGVyIG11c3QgcmV0dXJuIChzdHIsIGludCkgdHVwbGUiOworICAgIHN0YXRpYyBjb25zdCBjaGFyICphcmdwYXJzZSA9ICJPIW47ZGVjb2RpbmcgZXJyb3IgaGFuZGxlciBtdXN0IHJldHVybiAoc3RyLCBpbnQpIHR1cGxlIjsKIAogICAgIFB5T2JqZWN0ICpyZXN0dXBsZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnJlcHVuaWNvZGUgPSBOVUxMOwpAQCAtNDA3Niw3ICs0MzQ2LDcgQEAKICAgICBQeV9YREVDUkVGKHJlc3R1cGxlKTsKICAgICByZXR1cm4gLTE7CiB9Ci0jZW5kaWYgICAvKiBIQVZFX01CQ1MgKi8KKyNlbmRpZiAgIC8qIE1TX1dJTkRPV1MgKi8KIAogc3RhdGljIGludAogdW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXJfd3JpdGVyKApAQCAtNDA4Niw3ICs0MzU2LDcgQEAKICAgICBQeV9zc2l6ZV90ICplbmRpbnBvcywgUHlPYmplY3QgKipleGNlcHRpb25PYmplY3QsIGNvbnN0IGNoYXIgKippbnB0ciwKICAgICBfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIgLyogUHlPYmplY3QgKipvdXRwdXQsIFB5X3NzaXplX3QgKm91dHBvcyAqLykKIHsKLSAgICBzdGF0aWMgY2hhciAqYXJncGFyc2UgPSAiTyFuO2RlY29kaW5nIGVycm9yIGhhbmRsZXIgbXVzdCByZXR1cm4gKHN0ciwgaW50KSB0dXBsZSI7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKmFyZ3BhcnNlID0gIk8hbjtkZWNvZGluZyBlcnJvciBoYW5kbGVyIG11c3QgcmV0dXJuIChzdHIsIGludCkgdHVwbGUiOwogCiAgICAgUHlPYmplY3QgKnJlc3R1cGxlID0gTlVMTDsKICAgICBQeU9iamVjdCAqcmVwdW5pY29kZSA9IE5VTEw7CkBAIC00NjkyLDggKzQ5NjIsOSBAQAogICAgIFB5X3NzaXplX3Qgc3RhcnRpbnBvczsKICAgICBQeV9zc2l6ZV90IGVuZGlucG9zOwogICAgIGNvbnN0IGNoYXIgKmVycm1zZyA9ICIiOwotICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOworICAgIFB5T2JqZWN0ICplcnJvcl9oYW5kbGVyX29iaiA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7CisgICAgX1B5X2Vycm9yX2hhbmRsZXIgZXJyb3JfaGFuZGxlciA9IF9QeV9FUlJPUl9VTktOT1dOOwogCiAgICAgaWYgKHNpemUgPT0gMCkgewogICAgICAgICBpZiAoY29uc3VtZWQpCkBAIC00NzE4LDYgKzQ5ODksNyBAQAogICAgIHdoaWxlIChzIDwgZW5kKSB7CiAgICAgICAgIFB5X1VDUzQgY2g7CiAgICAgICAgIGludCBraW5kID0gd3JpdGVyLmtpbmQ7CisKICAgICAgICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpIHsKICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkod3JpdGVyLmJ1ZmZlcikpCiAgICAgICAgICAgICAgICAgY2ggPSBhc2NpaWxpYl91dGY4X2RlY29kZSgmcywgZW5kLCB3cml0ZXIuZGF0YSwgJndyaXRlci5wb3MpOwpAQCAtNDc1NiwzMyArNTAyOCw2NSBAQAogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXJfd3JpdGVyKAotICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKLSAgICAgICAgICAgICAgICAidXRmLTgiLCBlcnJtc2csCi0gICAgICAgICAgICAgICAgJnN0YXJ0cywgJmVuZCwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJnMsCi0gICAgICAgICAgICAgICAgJndyaXRlcikpCi0gICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgIGlmIChlcnJvcl9oYW5kbGVyID09IF9QeV9FUlJPUl9VTktOT1dOKQorICAgICAgICAgICAgZXJyb3JfaGFuZGxlciA9IGdldF9lcnJvcl9oYW5kbGVyKGVycm9ycyk7CisKKyAgICAgICAgc3dpdGNoIChlcnJvcl9oYW5kbGVyKSB7CisgICAgICAgIGNhc2UgX1B5X0VSUk9SX0lHTk9SRToKKyAgICAgICAgICAgIHMgKz0gKGVuZGlucG9zIC0gc3RhcnRpbnBvcyk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIF9QeV9FUlJPUl9SRVBMQUNFOgorICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVDaGFySW5saW5lKCZ3cml0ZXIsIDB4ZmZmZCkgPCAwKQorICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgIHMgKz0gKGVuZGlucG9zIC0gc3RhcnRpbnBvcyk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIF9QeV9FUlJPUl9TVVJST0dBVEVFU0NBUEU6CisgICAgICAgIHsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKKworICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZUtpbmQoJndyaXRlciwgUHlVbmljb2RlXzJCWVRFX0tJTkQpIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICBmb3IgKGk9c3RhcnRpbnBvczsgaTxlbmRpbnBvczsgaSsrKSB7CisgICAgICAgICAgICAgICAgY2ggPSAoUHlfVUNTNCkodW5zaWduZWQgY2hhcikoc3RhcnRzW2ldKTsKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUod3JpdGVyLmtpbmQsIHdyaXRlci5kYXRhLCB3cml0ZXIucG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaCArIDB4ZGMwMCk7CisgICAgICAgICAgICAgICAgd3JpdGVyLnBvcysrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcyArPSAoZW5kaW5wb3MgLSBzdGFydGlucG9zKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcl93cml0ZXIoCisgICAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9yX2hhbmRsZXJfb2JqLAorICAgICAgICAgICAgICAgICAgICAidXRmLTgiLCBlcnJtc2csCisgICAgICAgICAgICAgICAgICAgICZzdGFydHMsICZlbmQsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsICZzLAorICAgICAgICAgICAgICAgICAgICAmd3JpdGVyKSkKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgIH0KICAgICB9CiAKIEVuZDoKICAgICBpZiAoY29uc3VtZWQpCiAgICAgICAgICpjb25zdW1lZCA9IHMgLSBzdGFydHM7CiAKLSAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CisgICAgUHlfWERFQ1JFRihlcnJvcl9oYW5kbGVyX29iaik7CiAgICAgUHlfWERFQ1JFRihleGMpOwogICAgIHJldHVybiBfUHlVbmljb2RlV3JpdGVyX0ZpbmlzaCgmd3JpdGVyKTsKIAogb25FcnJvcjoKLSAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CisgICAgUHlfWERFQ1JFRihlcnJvcl9oYW5kbGVyX29iaik7CiAgICAgUHlfWERFQ1JFRihleGMpOwogICAgIF9QeVVuaWNvZGVXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIAotI2lmZGVmIF9fQVBQTEVfXworI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fQU5EUk9JRF9fKQogCiAvKiBTaW1wbGlmaWVkIFVURi04IGRlY29kZXIgdXNpbmcgc3Vycm9nYXRlZXNjYXBlIGVycm9yIGhhbmRsZXIsCi0gICB1c2VkIHRvIGRlY29kZSB0aGUgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyBvbiBNYWMgT1MgWC4KKyAgIHVzZWQgdG8gZGVjb2RlIHRoZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzIG9uIE1hYyBPUyBYIGFuZCBBbmRyb2lkLgogCiAgICBSZXR1cm4gYSBwb2ludGVyIHRvIGEgbmV3bHkgYWxsb2NhdGVkIHdpZGUgY2hhcmFjdGVyIHN0cmluZyAodXNlCiAgICBQeU1lbV9SYXdGcmVlKCkgdG8gZnJlZSB0aGUgbWVtb3J5KSwgb3IgTlVMTCBvbiBtZW1vcnkgYWxsb2NhdGlvbiBlcnJvci4gKi8KQEAgLTQ4MzMsNyArNTEzNyw3IEBACiAgICAgcmV0dXJuIHVuaWNvZGU7CiB9CiAKLSNlbmRpZiAvKiBfX0FQUExFX18gKi8KKyNlbmRpZiAvKiBfX0FQUExFX18gb3IgX19BTkRST0lEX18gKi8KIAogLyogUHJpbWFyeSBpbnRlcm5hbCBmdW5jdGlvbiB3aGljaCBjcmVhdGVzIHV0ZjggZW5jb2RlZCBieXRlcyBvYmplY3RzLgogCkBAIC01MDY1LDcgKzUzNjksNyBAQAogICAgIGNvbnN0IHZvaWQgKmRhdGE7CiAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgUHlPYmplY3QgKnY7Ci0gICAgUFlfVUlOVDMyX1QgKm91dDsKKyAgICB1aW50MzJfdCAqb3V0OwogI2lmIFBZX0xJVFRMRV9FTkRJQU4KICAgICBpbnQgbmF0aXZlX29yZGVyaW5nID0gYnl0ZW9yZGVyIDw9IDA7CiAjZWxzZQpAQCAtNTA5Niw3ICs1NDAwLDcgQEAKIAogICAgIC8qIG91dHB1dCBidWZmZXIgaXMgNC1ieXRlcyBhbGlnbmVkICovCiAgICAgYXNzZXJ0KF9QeV9JU19BTElHTkVEKFB5Qnl0ZXNfQVNfU1RSSU5HKHYpLCA0KSk7Ci0gICAgb3V0ID0gKFBZX1VJTlQzMl9UICopUHlCeXRlc19BU19TVFJJTkcodik7CisgICAgb3V0ID0gKHVpbnQzMl90ICopUHlCeXRlc19BU19TVFJJTkcodik7CiAgICAgaWYgKGJ5dGVvcmRlciA9PSAwKQogICAgICAgICAqb3V0KysgPSAweEZFRkY7CiAgICAgaWYgKGxlbiA9PSAwKQpAQCAtNTE2Miw3ICs1NDY2LDcgQEAKIAogICAgICAgICAvKiBmb3VyIGJ5dGVzIGFyZSByZXNlcnZlZCBmb3IgZWFjaCBzdXJyb2dhdGUgKi8KICAgICAgICAgaWYgKG1vcmV1bml0cyA+IDEpIHsKLSAgICAgICAgICAgIFB5X3NzaXplX3Qgb3V0cG9zID0gb3V0IC0gKFBZX1VJTlQzMl9UKikgUHlCeXRlc19BU19TVFJJTkcodik7CisgICAgICAgICAgICBQeV9zc2l6ZV90IG91dHBvcyA9IG91dCAtICh1aW50MzJfdCopIFB5Qnl0ZXNfQVNfU1RSSU5HKHYpOwogICAgICAgICAgICAgUHlfc3NpemVfdCBtb3JlYnl0ZXMgPSA0ICogKG1vcmV1bml0cyAtIDEpOwogICAgICAgICAgICAgaWYgKFB5Qnl0ZXNfR0VUX1NJWkUodikgPiBQWV9TU0laRV9UX01BWCAtIG1vcmVieXRlcykgewogICAgICAgICAgICAgICAgIC8qIGludGVnZXIgb3ZlcmZsb3cgKi8KQEAgLTUxNzEsMTEgKzU0NzUsMTEgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnYsIFB5Qnl0ZXNfR0VUX1NJWkUodikgKyBtb3JlYnl0ZXMpIDwgMCkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgb3V0ID0gKFBZX1VJTlQzMl9UKikgUHlCeXRlc19BU19TVFJJTkcodikgKyBvdXRwb3M7CisgICAgICAgICAgICBvdXQgPSAodWludDMyX3QqKSBQeUJ5dGVzX0FTX1NUUklORyh2KSArIG91dHBvczsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChQeUJ5dGVzX0NoZWNrKHJlcCkpIHsKLSAgICAgICAgICAgIFB5X01FTUNQWShvdXQsIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcCksIHJlcHNpemUpOworICAgICAgICAgICAgbWVtY3B5KG91dCwgUHlCeXRlc19BU19TVFJJTkcocmVwKSwgcmVwc2l6ZSk7CiAgICAgICAgICAgICBvdXQgKz0gbW9yZXVuaXRzOwogICAgICAgICB9IGVsc2UgLyogcmVwIGlzIHVuaWNvZGUgKi8gewogICAgICAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9LSU5EKHJlcCkgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpOwpAQCAtNTQyNiwzNiArNTczMCw0NSBAQAogICAgIGlmIChraW5kID09IFB5VW5pY29kZV80QllURV9LSU5EKSB7CiAgICAgICAgIGNvbnN0IFB5X1VDUzQgKmluID0gKGNvbnN0IFB5X1VDUzQgKilkYXRhOwogICAgICAgICBjb25zdCBQeV9VQ1M0ICplbmQgPSBpbiArIGxlbjsKLSAgICAgICAgd2hpbGUgKGluIDwgZW5kKQotICAgICAgICAgICAgaWYgKCppbisrID49IDB4MTAwMDApCisgICAgICAgIHdoaWxlIChpbiA8IGVuZCkgeworICAgICAgICAgICAgaWYgKCppbisrID49IDB4MTAwMDApIHsKICAgICAgICAgICAgICAgICBwYWlycysrOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQotICAgIGlmIChsZW4gPiBQWV9TU0laRV9UX01BWCAvIDIgLSBwYWlycyAtIChieXRlb3JkZXIgPT0gMCkpCisgICAgaWYgKGxlbiA+IFBZX1NTSVpFX1RfTUFYIC8gMiAtIHBhaXJzIC0gKGJ5dGVvcmRlciA9PSAwKSkgewogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICB9CiAgICAgbnNpemUgPSBsZW4gKyBwYWlycyArIChieXRlb3JkZXIgPT0gMCk7CiAgICAgdiA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbnNpemUgKiAyKTsKLSAgICBpZiAodiA9PSBOVUxMKQorICAgIGlmICh2ID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCiAgICAgLyogb3V0cHV0IGJ1ZmZlciBpcyAyLWJ5dGVzIGFsaWduZWQgKi8KICAgICBhc3NlcnQoX1B5X0lTX0FMSUdORUQoUHlCeXRlc19BU19TVFJJTkcodiksIDIpKTsKICAgICBvdXQgPSAodW5zaWduZWQgc2hvcnQgKilQeUJ5dGVzX0FTX1NUUklORyh2KTsKLSAgICBpZiAoYnl0ZW9yZGVyID09IDApCisgICAgaWYgKGJ5dGVvcmRlciA9PSAwKSB7CiAgICAgICAgICpvdXQrKyA9IDB4RkVGRjsKLSAgICBpZiAobGVuID09IDApCisgICAgfQorICAgIGlmIChsZW4gPT0gMCkgewogICAgICAgICBnb3RvIGRvbmU7CisgICAgfQogCiAgICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpIHsKICAgICAgICAgdWNzMWxpYl91dGYxNl9lbmNvZGUoKGNvbnN0IFB5X1VDUzEgKilkYXRhLCBsZW4sICZvdXQsIG5hdGl2ZV9vcmRlcmluZyk7CiAgICAgICAgIGdvdG8gZG9uZTsKICAgICB9CiAKLSAgICBpZiAoYnl0ZW9yZGVyIDwgMCkKKyAgICBpZiAoYnl0ZW9yZGVyIDwgMCkgewogICAgICAgICBlbmNvZGluZyA9ICJ1dGYtMTYtbGUiOwotICAgIGVsc2UgaWYgKGJ5dGVvcmRlciA+IDApCisgICAgfQorICAgIGVsc2UgaWYgKGJ5dGVvcmRlciA+IDApIHsKICAgICAgICAgZW5jb2RpbmcgPSAidXRmLTE2LWJlIjsKLSAgICBlbHNlCisgICAgfQorICAgIGVsc2UgewogICAgICAgICBlbmNvZGluZyA9ICJ1dGYtMTYiOworICAgIH0KIAogICAgIHBvcyA9IDA7CiAgICAgd2hpbGUgKHBvcyA8IGxlbikgewpAQCAtNTUxOCw3ICs1ODMxLDcgQEAKICAgICAgICAgfQogCiAgICAgICAgIGlmIChQeUJ5dGVzX0NoZWNrKHJlcCkpIHsKLSAgICAgICAgICAgIFB5X01FTUNQWShvdXQsIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcCksIHJlcHNpemUpOworICAgICAgICAgICAgbWVtY3B5KG91dCwgUHlCeXRlc19BU19TVFJJTkcocmVwKSwgcmVwc2l6ZSk7CiAgICAgICAgICAgICBvdXQgKz0gbW9yZXVuaXRzOwogICAgICAgICB9IGVsc2UgLyogcmVwIGlzIHVuaWNvZGUgKi8gewogICAgICAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9LSU5EKHJlcCkgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpOwpAQCAtNTU3MSwyODEgKzU4ODQsMjI4IEBACiAKIC8qIC0tLSBVbmljb2RlIEVzY2FwZSBDb2RlYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi0vKiBIZWxwZXIgZnVuY3Rpb24gZm9yIFB5VW5pY29kZV9EZWNvZGVVbmljb2RlRXNjYXBlLCBkZXRlcm1pbmVzCi0gICBpZiBhbGwgdGhlIGVzY2FwZXMgaW4gdGhlIHN0cmluZyBtYWtlIGl0IHN0aWxsIGEgdmFsaWQgQVNDSUkgc3RyaW5nLgotICAgUmV0dXJucyAtMSBpZiBhbnkgZXNjYXBlcyB3ZXJlIGZvdW5kIHdoaWNoIGNhdXNlIHRoZSBzdHJpbmcgdG8KLSAgIHBvcCBvdXQgb2YgQVNDSUkgcmFuZ2UuICBPdGhlcndpc2UgcmV0dXJucyB0aGUgbGVuZ3RoIG9mIHRoZQotICAgcmVxdWlyZWQgYnVmZmVyIHRvIGhvbGQgdGhlIHN0cmluZy4KLSAgICovCi1zdGF0aWMgUHlfc3NpemVfdAotbGVuZ3RoX29mX2VzY2FwZWRfYXNjaWlfc3RyaW5nKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSkKLXsKLSAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpwID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilzOwotICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmVuZCA9IHAgKyBzaXplOwotICAgIFB5X3NzaXplX3QgbGVuZ3RoID0gMDsKLQotICAgIGlmIChzaXplIDwgMCkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgZm9yICg7IHAgPCBlbmQ7ICsrcCkgewotICAgICAgICBpZiAoKnAgPiAxMjcpIHsKLSAgICAgICAgICAgIC8qIE5vbi1BU0NJSSAqLwotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKCpwICE9ICdcXCcpIHsKLSAgICAgICAgICAgIC8qIE5vcm1hbCBjaGFyYWN0ZXIgKi8KLSAgICAgICAgICAgICsrbGVuZ3RoOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgLyogQmFja3NsYXNoLWVzY2FwZSwgY2hlY2sgbmV4dCBjaGFyICovCi0gICAgICAgICAgICArK3A7Ci0gICAgICAgICAgICAvKiBFc2NhcGUgc2VxdWVuY2UgcmVhY2hlcyB0aWxsIGVuZCBvZiBzdHJpbmcgb3IKLSAgICAgICAgICAgICAgIG5vbi1BU0NJSSBmb2xsb3ctdXAuICovCi0gICAgICAgICAgICBpZiAocCA+PSBlbmQgfHwgKnAgPiAxMjcpCi0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgc3dpdGNoICgqcCkgewotICAgICAgICAgICAgY2FzZSAnXG4nOgotICAgICAgICAgICAgICAgIC8qIGJhY2tzbGFzaCArIFxuIHJlc3VsdCBpbiB6ZXJvIGNoYXJhY3RlcnMgKi8KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgJ1xcJzogY2FzZSAnXCcnOiBjYXNlICdcIic6Ci0gICAgICAgICAgICBjYXNlICdiJzogY2FzZSAnZic6IGNhc2UgJ3QnOgotICAgICAgICAgICAgY2FzZSAnbic6IGNhc2UgJ3InOiBjYXNlICd2JzogY2FzZSAnYSc6Ci0gICAgICAgICAgICAgICAgKytsZW5ndGg7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICcwJzogY2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzoKLSAgICAgICAgICAgIGNhc2UgJzQnOiBjYXNlICc1JzogY2FzZSAnNic6IGNhc2UgJzcnOgotICAgICAgICAgICAgY2FzZSAneCc6IGNhc2UgJ3UnOiBjYXNlICdVJzogY2FzZSAnTic6Ci0gICAgICAgICAgICAgICAgLyogdGhlc2UgZG8gbm90IGd1YXJhbnRlZSBBU0NJSSBjaGFyYWN0ZXJzICovCi0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAvKiBjb3VudCB0aGUgYmFja3NsYXNoICsgdGhlIG90aGVyIGNoYXJhY3RlciAqLwotICAgICAgICAgICAgICAgIGxlbmd0aCArPSAyOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBsZW5ndGg7Ci19Ci0KIHN0YXRpYyBfUHlVbmljb2RlX05hbWVfQ0FQSSAqdWNuaGFzaF9DQVBJID0gTlVMTDsKIAogUHlPYmplY3QgKgotUHlVbmljb2RlX0RlY29kZVVuaWNvZGVFc2NhcGUoY29uc3QgY2hhciAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK19QeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZShjb25zdCBjaGFyICpzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqKmZpcnN0X2ludmFsaWRfZXNjYXBlKQogewogICAgIGNvbnN0IGNoYXIgKnN0YXJ0cyA9IHM7Ci0gICAgUHlfc3NpemVfdCBzdGFydGlucG9zOwotICAgIFB5X3NzaXplX3QgZW5kaW5wb3M7CiAgICAgX1B5VW5pY29kZVdyaXRlciB3cml0ZXI7CiAgICAgY29uc3QgY2hhciAqZW5kOwotICAgIGNoYXIqIG1lc3NhZ2U7Ci0gICAgUHlfVUNTNCBjaHIgPSAweGZmZmZmZmZmOyAvKiBpbiBjYXNlICdnZXRjb2RlJyBtZXNzZXMgdXAgKi8KICAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKICAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IGxlbjsKIAotICAgIGxlbiA9IGxlbmd0aF9vZl9lc2NhcGVkX2FzY2lpX3N0cmluZyhzLCBzaXplKTsKLSAgICBpZiAobGVuID09IDApCisgICAgLy8gc28gd2UgY2FuIHJlbWVtYmVyIGlmIHdlJ3ZlIHNlZW4gYW4gaW52YWxpZCBlc2NhcGUgY2hhciBvciBub3QKKyAgICAqZmlyc3RfaW52YWxpZF9lc2NhcGUgPSBOVUxMOworCisgICAgaWYgKHNpemUgPT0gMCkgewogICAgICAgICBfUHlfUkVUVVJOX1VOSUNPREVfRU1QVFkoKTsKLQotICAgIC8qIEFmdGVyIGxlbmd0aF9vZl9lc2NhcGVkX2FzY2lpX3N0cmluZygpIHRoZXJlIGFyZSB0d28gYWx0ZXJuYXRpdmVzLAotICAgICAgIGVpdGhlciB0aGUgc3RyaW5nIGlzIHB1cmUgQVNDSUkgd2l0aCBuYW1lZCBlc2NhcGVzIGxpa2UgXG4sIGV0Yy4KLSAgICAgICBhbmQgd2UgZGV0ZXJtaW5lZCBpdCdzIGV4YWN0IHNpemUgKGNvbW1vbiBjYXNlKQotICAgICAgIG9yIGl0IGNvbnRhaW5zIFx4LCBcdSwgLi4uIGVzY2FwZSBzZXF1ZW5jZXMuICB0aGVuIHdlIGNyZWF0ZSBhCi0gICAgICAgbGVnYWN5IHdjaGFyIHN0cmluZyBhbmQgcmVzaXplIGl0IGF0IHRoZSBlbmQgb2YgdGhpcyBmdW5jdGlvbi4gKi8KKyAgICB9CisgICAgLyogRXNjYXBlZCBzdHJpbmdzIHdpbGwgYWx3YXlzIGJlIGxvbmdlciB0aGFuIHRoZSByZXN1bHRpbmcKKyAgICAgICBVbmljb2RlIHN0cmluZywgc28gd2Ugc3RhcnQgd2l0aCBzaXplIGhlcmUgYW5kIHRoZW4gcmVkdWNlIHRoZQorICAgICAgIGxlbmd0aCBhZnRlciBjb252ZXJzaW9uIHRvIHRoZSB0cnVlIHZhbHVlLgorICAgICAgIChidXQgaWYgdGhlIGVycm9yIGNhbGxiYWNrIHJldHVybnMgYSBsb25nIHJlcGxhY2VtZW50IHN0cmluZworICAgICAgIHdlJ2xsIGhhdmUgdG8gYWxsb2NhdGUgbW9yZSBzcGFjZSkgKi8KICAgICBfUHlVbmljb2RlV3JpdGVyX0luaXQoJndyaXRlcik7Ci0gICAgaWYgKGxlbiA+IDApIHsKLSAgICAgICAgd3JpdGVyLm1pbl9sZW5ndGggPSBsZW47Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICAvKiBFc2NhcGVkIHN0cmluZ3Mgd2lsbCBhbHdheXMgYmUgbG9uZ2VyIHRoYW4gdGhlIHJlc3VsdGluZwotICAgICAgICAgICBVbmljb2RlIHN0cmluZywgc28gd2Ugc3RhcnQgd2l0aCBzaXplIGhlcmUgYW5kIHRoZW4gcmVkdWNlIHRoZQotICAgICAgICAgICBsZW5ndGggYWZ0ZXIgY29udmVyc2lvbiB0byB0aGUgdHJ1ZSB2YWx1ZS4KLSAgICAgICAgICAgKGJ1dCBpZiB0aGUgZXJyb3IgY2FsbGJhY2sgcmV0dXJucyBhIGxvbmcgcmVwbGFjZW1lbnQgc3RyaW5nCi0gICAgICAgICAgIHdlJ2xsIGhhdmUgdG8gYWxsb2NhdGUgbW9yZSBzcGFjZSkgKi8KLSAgICAgICAgd3JpdGVyLm1pbl9sZW5ndGggPSBzaXplOworICAgIHdyaXRlci5taW5fbGVuZ3RoID0gc2l6ZTsKKyAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKCZ3cml0ZXIsIHNpemUsIDEyNykgPCAwKSB7CisgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICB9CiAKLSAgICBpZiAoc2l6ZSA9PSAwKQotICAgICAgICByZXR1cm4gX1B5VW5pY29kZVdyaXRlcl9GaW5pc2goJndyaXRlcik7CiAgICAgZW5kID0gcyArIHNpemU7Ci0KICAgICB3aGlsZSAocyA8IGVuZCkgewotICAgICAgICB1bnNpZ25lZCBjaGFyIGM7Ci0gICAgICAgIFB5X1VDUzQgeDsKLSAgICAgICAgaW50IGRpZ2l0czsKKyAgICAgICAgdW5zaWduZWQgY2hhciBjID0gKHVuc2lnbmVkIGNoYXIpICpzKys7CisgICAgICAgIFB5X1VDUzQgY2g7CisgICAgICAgIGludCBjb3VudDsKKyAgICAgICAgUHlfc3NpemVfdCBzdGFydGlucG9zOworICAgICAgICBQeV9zc2l6ZV90IGVuZGlucG9zOworICAgICAgICBjb25zdCBjaGFyICptZXNzYWdlOworCisjZGVmaW5lIFdSSVRFX0FTQ0lJX0NIQVIoY2gpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgYXNzZXJ0KGNoIDw9IDEyNyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgYXNzZXJ0KHdyaXRlci5wb3MgPCB3cml0ZXIuc2l6ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKHdyaXRlci5raW5kLCB3cml0ZXIuZGF0YSwgd3JpdGVyLnBvcysrLCBjaCk7ICBcCisgICAgICAgICAgICB9IHdoaWxlKDApCisKKyNkZWZpbmUgV1JJVEVfQ0hBUihjaCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBpZiAoY2ggPD0gd3JpdGVyLm1heGNoYXIpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KHdyaXRlci5wb3MgPCB3cml0ZXIuc2l6ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKHdyaXRlci5raW5kLCB3cml0ZXIuZGF0YSwgd3JpdGVyLnBvcysrLCBjaCk7IFwKKyAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChfUHlVbmljb2RlV3JpdGVyX1dyaXRlQ2hhcklubGluZSgmd3JpdGVyLCBjaCkgPCAwKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIH0gd2hpbGUoMCkKIAogICAgICAgICAvKiBOb24tZXNjYXBlIGNoYXJhY3RlcnMgYXJlIGludGVycHJldGVkIGFzIFVuaWNvZGUgb3JkaW5hbHMgKi8KLSAgICAgICAgaWYgKCpzICE9ICdcXCcpIHsKLSAgICAgICAgICAgIHggPSAodW5zaWduZWQgY2hhcikqczsKLSAgICAgICAgICAgIHMrKzsKLSAgICAgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1dyaXRlQ2hhcklubGluZSgmd3JpdGVyLCB4KSA8IDApCi0gICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICBpZiAoYyAhPSAnXFwnKSB7CisgICAgICAgICAgICBXUklURV9DSEFSKGMpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAgICAgICBzdGFydGlucG9zID0gcy1zdGFydHM7CisgICAgICAgIHN0YXJ0aW5wb3MgPSBzIC0gc3RhcnRzIC0gMTsKICAgICAgICAgLyogXCAtIEVzY2FwZXMgKi8KLSAgICAgICAgcysrOwotICAgICAgICBjID0gKnMrKzsKLSAgICAgICAgaWYgKHMgPiBlbmQpCi0gICAgICAgICAgICBjID0gJ1wwJzsgLyogSW52YWxpZCBhZnRlciBcICovCisgICAgICAgIGlmIChzID49IGVuZCkgeworICAgICAgICAgICAgbWVzc2FnZSA9ICJcXCBhdCBlbmQgb2Ygc3RyaW5nIjsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgYyA9ICh1bnNpZ25lZCBjaGFyKSAqcysrOwogCisgICAgICAgIGFzc2VydCh3cml0ZXIucG9zIDwgd3JpdGVyLnNpemUpOwogICAgICAgICBzd2l0Y2ggKGMpIHsKIAogICAgICAgICAgICAgLyogXHggZXNjYXBlcyAqLwotI2RlZmluZSBXUklURUNIQVIoY2gpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1dyaXRlQ2hhcklubGluZSgmd3JpdGVyLCAoY2gpKSA8IDApICAgIFwKLSAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIH0gd2hpbGUoMCkKLQotICAgICAgICBjYXNlICdcbic6IGJyZWFrOwotICAgICAgICBjYXNlICdcXCc6IFdSSVRFQ0hBUignXFwnKTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ1wnJzogV1JJVEVDSEFSKCdcJycpOyBicmVhazsKLSAgICAgICAgY2FzZSAnXCInOiBXUklURUNIQVIoJ1wiJyk7IGJyZWFrOwotICAgICAgICBjYXNlICdiJzogV1JJVEVDSEFSKCdcYicpOyBicmVhazsKKyAgICAgICAgY2FzZSAnXG4nOiBjb250aW51ZTsKKyAgICAgICAgY2FzZSAnXFwnOiBXUklURV9BU0NJSV9DSEFSKCdcXCcpOyBjb250aW51ZTsKKyAgICAgICAgY2FzZSAnXCcnOiBXUklURV9BU0NJSV9DSEFSKCdcJycpOyBjb250aW51ZTsKKyAgICAgICAgY2FzZSAnXCInOiBXUklURV9BU0NJSV9DSEFSKCdcIicpOyBjb250aW51ZTsKKyAgICAgICAgY2FzZSAnYic6IFdSSVRFX0FTQ0lJX0NIQVIoJ1xiJyk7IGNvbnRpbnVlOwogICAgICAgICAvKiBGRiAqLwotICAgICAgICBjYXNlICdmJzogV1JJVEVDSEFSKCdcMDE0Jyk7IGJyZWFrOwotICAgICAgICBjYXNlICd0JzogV1JJVEVDSEFSKCdcdCcpOyBicmVhazsKLSAgICAgICAgY2FzZSAnbic6IFdSSVRFQ0hBUignXG4nKTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ3InOiBXUklURUNIQVIoJ1xyJyk7IGJyZWFrOworICAgICAgICBjYXNlICdmJzogV1JJVEVfQVNDSUlfQ0hBUignXDAxNCcpOyBjb250aW51ZTsKKyAgICAgICAgY2FzZSAndCc6IFdSSVRFX0FTQ0lJX0NIQVIoJ1x0Jyk7IGNvbnRpbnVlOworICAgICAgICBjYXNlICduJzogV1JJVEVfQVNDSUlfQ0hBUignXG4nKTsgY29udGludWU7CisgICAgICAgIGNhc2UgJ3InOiBXUklURV9BU0NJSV9DSEFSKCdccicpOyBjb250aW51ZTsKICAgICAgICAgLyogVlQgKi8KLSAgICAgICAgY2FzZSAndic6IFdSSVRFQ0hBUignXDAxMycpOyBicmVhazsKKyAgICAgICAgY2FzZSAndic6IFdSSVRFX0FTQ0lJX0NIQVIoJ1wwMTMnKTsgY29udGludWU7CiAgICAgICAgIC8qIEJFTCwgbm90IGNsYXNzaWMgQyAqLwotICAgICAgICBjYXNlICdhJzogV1JJVEVDSEFSKCdcMDA3Jyk7IGJyZWFrOworICAgICAgICBjYXNlICdhJzogV1JJVEVfQVNDSUlfQ0hBUignXDAwNycpOyBjb250aW51ZTsKIAogICAgICAgICAgICAgLyogXE9PTyAob2N0YWwpIGVzY2FwZXMgKi8KICAgICAgICAgY2FzZSAnMCc6IGNhc2UgJzEnOiBjYXNlICcyJzogY2FzZSAnMyc6CiAgICAgICAgIGNhc2UgJzQnOiBjYXNlICc1JzogY2FzZSAnNic6IGNhc2UgJzcnOgotICAgICAgICAgICAgeCA9IHNbLTFdIC0gJzAnOworICAgICAgICAgICAgY2ggPSBjIC0gJzAnOwogICAgICAgICAgICAgaWYgKHMgPCBlbmQgJiYgJzAnIDw9ICpzICYmICpzIDw9ICc3JykgewotICAgICAgICAgICAgICAgIHggPSAoeDw8MykgKyAqcysrIC0gJzAnOwotICAgICAgICAgICAgICAgIGlmIChzIDwgZW5kICYmICcwJyA8PSAqcyAmJiAqcyA8PSAnNycpCi0gICAgICAgICAgICAgICAgICAgIHggPSAoeDw8MykgKyAqcysrIC0gJzAnOworICAgICAgICAgICAgICAgIGNoID0gKGNoPDwzKSArICpzKysgLSAnMCc7CisgICAgICAgICAgICAgICAgaWYgKHMgPCBlbmQgJiYgJzAnIDw9ICpzICYmICpzIDw9ICc3JykgeworICAgICAgICAgICAgICAgICAgICBjaCA9IChjaDw8MykgKyAqcysrIC0gJzAnOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFdSSVRFQ0hBUih4KTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgV1JJVEVfQ0hBUihjaCk7CisgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgLyogaGV4IGVzY2FwZXMgKi8KICAgICAgICAgICAgIC8qIFx4WFggKi8KICAgICAgICAgY2FzZSAneCc6Ci0gICAgICAgICAgICBkaWdpdHMgPSAyOworICAgICAgICAgICAgY291bnQgPSAyOwogICAgICAgICAgICAgbWVzc2FnZSA9ICJ0cnVuY2F0ZWQgXFx4WFggZXNjYXBlIjsKICAgICAgICAgICAgIGdvdG8gaGV4ZXNjYXBlOwogCiAgICAgICAgICAgICAvKiBcdVhYWFggKi8KICAgICAgICAgY2FzZSAndSc6Ci0gICAgICAgICAgICBkaWdpdHMgPSA0OworICAgICAgICAgICAgY291bnQgPSA0OwogICAgICAgICAgICAgbWVzc2FnZSA9ICJ0cnVuY2F0ZWQgXFx1WFhYWCBlc2NhcGUiOwogICAgICAgICAgICAgZ290byBoZXhlc2NhcGU7CiAKICAgICAgICAgICAgIC8qIFxVWFhYWFhYWFggKi8KICAgICAgICAgY2FzZSAnVSc6Ci0gICAgICAgICAgICBkaWdpdHMgPSA4OworICAgICAgICAgICAgY291bnQgPSA4OwogICAgICAgICAgICAgbWVzc2FnZSA9ICJ0cnVuY2F0ZWQgXFxVWFhYWFhYWFggZXNjYXBlIjsKICAgICAgICAgaGV4ZXNjYXBlOgotICAgICAgICAgICAgY2hyID0gMDsKLSAgICAgICAgICAgIGlmIChlbmQgLSBzIDwgZGlnaXRzKSB7Ci0gICAgICAgICAgICAgICAgLyogY291bnQgb25seSBoZXggZGlnaXRzICovCi0gICAgICAgICAgICAgICAgZm9yICg7IHMgPCBlbmQ7ICsrcykgewotICAgICAgICAgICAgICAgICAgICBjID0gKHVuc2lnbmVkIGNoYXIpKnM7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghUHlfSVNYRElHSVQoYykpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZm9yICg7IGRpZ2l0cy0tOyArK3MpIHsKKyAgICAgICAgICAgIGZvciAoY2ggPSAwOyBjb3VudCAmJiBzIDwgZW5kOyArK3MsIC0tY291bnQpIHsKICAgICAgICAgICAgICAgICBjID0gKHVuc2lnbmVkIGNoYXIpKnM7Ci0gICAgICAgICAgICAgICAgaWYgKCFQeV9JU1hESUdJVChjKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICBjaHIgPSAoY2hyPDw0KSAmIH4weEY7Ci0gICAgICAgICAgICAgICAgaWYgKGMgPj0gJzAnICYmIGMgPD0gJzknKQotICAgICAgICAgICAgICAgICAgICBjaHIgKz0gYyAtICcwJzsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChjID49ICdhJyAmJiBjIDw9ICdmJykKLSAgICAgICAgICAgICAgICAgICAgY2hyICs9IDEwICsgYyAtICdhJzsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGNociArPSAxMCArIGMgLSAnQSc7CisgICAgICAgICAgICAgICAgY2ggPDw9IDQ7CisgICAgICAgICAgICAgICAgaWYgKGMgPj0gJzAnICYmIGMgPD0gJzknKSB7CisgICAgICAgICAgICAgICAgICAgIGNoICs9IGMgLSAnMCc7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGMgPj0gJ2EnICYmIGMgPD0gJ2YnKSB7CisgICAgICAgICAgICAgICAgICAgIGNoICs9IGMgLSAoJ2EnIC0gMTApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGlmIChjID49ICdBJyAmJiBjIDw9ICdGJykgeworICAgICAgICAgICAgICAgICAgICBjaCArPSBjIC0gKCdBJyAtIDEwKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChjaHIgPT0gMHhmZmZmZmZmZiAmJiBQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgICAgIC8qIF9kZWNvZGluZ19lcnJvciB3aWxsIGhhdmUgYWxyZWFkeSB3cml0dGVuIGludG8gdGhlCi0gICAgICAgICAgICAgICAgICAgdGFyZ2V0IGJ1ZmZlci4gKi8KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgc3RvcmU6Ci0gICAgICAgICAgICAvKiB3aGVuIHdlIGdldCBoZXJlLCBjaHIgaXMgYSAzMi1iaXQgdW5pY29kZSBjaGFyYWN0ZXIgKi8KLSAgICAgICAgICAgIG1lc3NhZ2UgPSAiaWxsZWdhbCBVbmljb2RlIGNoYXJhY3RlciI7Ci0gICAgICAgICAgICBpZiAoY2hyID4gTUFYX1VOSUNPREUpCisgICAgICAgICAgICBpZiAoY291bnQpIHsKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgV1JJVEVDSEFSKGNocik7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogd2hlbiB3ZSBnZXQgaGVyZSwgY2ggaXMgYSAzMi1iaXQgdW5pY29kZSBjaGFyYWN0ZXIgKi8KKyAgICAgICAgICAgIGlmIChjaCA+IE1BWF9VTklDT0RFKSB7CisgICAgICAgICAgICAgICAgbWVzc2FnZSA9ICJpbGxlZ2FsIFVuaWNvZGUgY2hhcmFjdGVyIjsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBXUklURV9DSEFSKGNoKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICAvKiBcTntuYW1lfSAqLwogICAgICAgICBjYXNlICdOJzoKLSAgICAgICAgICAgIG1lc3NhZ2UgPSAibWFsZm9ybWVkIFxcTiBjaGFyYWN0ZXIgZXNjYXBlIjsKICAgICAgICAgICAgIGlmICh1Y25oYXNoX0NBUEkgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIC8qIGxvYWQgdGhlIHVuaWNvZGUgZGF0YSBtb2R1bGUgKi8KICAgICAgICAgICAgICAgICB1Y25oYXNoX0NBUEkgPSAoX1B5VW5pY29kZV9OYW1lX0NBUEkgKilQeUNhcHN1bGVfSW1wb3J0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlRGF0YV9DQVBTVUxFX05BTUUsIDEpOwotICAgICAgICAgICAgICAgIGlmICh1Y25oYXNoX0NBUEkgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgZ290byB1Y25oYXNoRXJyb3I7CisgICAgICAgICAgICAgICAgaWYgKHVjbmhhc2hfQ0FQSSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXhjX1VuaWNvZGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJcXE4gZXNjYXBlcyBub3Qgc3VwcG9ydGVkIChjYW4ndCBsb2FkIHVuaWNvZGVkYXRhIG1vZHVsZSkiCisgICAgICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtZXNzYWdlID0gIm1hbGZvcm1lZCBcXE4gY2hhcmFjdGVyIGVzY2FwZSI7CiAgICAgICAgICAgICBpZiAoKnMgPT0gJ3snKSB7Ci0gICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc3RhcnQgPSBzKzE7CisgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc3RhcnQgPSArK3M7CisgICAgICAgICAgICAgICAgc2l6ZV90IG5hbWVsZW47CiAgICAgICAgICAgICAgICAgLyogbG9vayBmb3IgdGhlIGNsb3NpbmcgYnJhY2UgKi8KLSAgICAgICAgICAgICAgICB3aGlsZSAoKnMgIT0gJ30nICYmIHMgPCBlbmQpCisgICAgICAgICAgICAgICAgd2hpbGUgKHMgPCBlbmQgJiYgKnMgIT0gJ30nKQogICAgICAgICAgICAgICAgICAgICBzKys7Ci0gICAgICAgICAgICAgICAgaWYgKHMgPiBzdGFydCAmJiBzIDwgZW5kICYmICpzID09ICd9JykgeworICAgICAgICAgICAgICAgIG5hbWVsZW4gPSBzIC0gc3RhcnQ7CisgICAgICAgICAgICAgICAgaWYgKG5hbWVsZW4gJiYgcyA8IGVuZCkgewogICAgICAgICAgICAgICAgICAgICAvKiBmb3VuZCBhIG5hbWUuICBsb29rIGl0IHVwIGluIHRoZSB1bmljb2RlIGRhdGFiYXNlICovCi0gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAidW5rbm93biBVbmljb2RlIGNoYXJhY3RlciBuYW1lIjsKICAgICAgICAgICAgICAgICAgICAgcysrOwotICAgICAgICAgICAgICAgICAgICBpZiAocyAtIHN0YXJ0IC0gMSA8PSBJTlRfTUFYICYmCi0gICAgICAgICAgICAgICAgICAgICAgICB1Y25oYXNoX0NBUEktPmdldGNvZGUoTlVMTCwgc3RhcnQsIChpbnQpKHMtc3RhcnQtMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNociwgMCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHN0b3JlOworICAgICAgICAgICAgICAgICAgICBjaCA9IDB4ZmZmZmZmZmY7IC8qIGluIGNhc2UgJ2dldGNvZGUnIG1lc3NlcyB1cCAqLworICAgICAgICAgICAgICAgICAgICBpZiAobmFtZWxlbiA8PSBJTlRfTUFYICYmCisgICAgICAgICAgICAgICAgICAgICAgICB1Y25oYXNoX0NBUEktPmdldGNvZGUoTlVMTCwgc3RhcnQsIChpbnQpbmFtZWxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY2gsIDApKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQoY2ggPD0gTUFYX1VOSUNPREUpOworICAgICAgICAgICAgICAgICAgICAgICAgV1JJVEVfQ0hBUihjaCk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gInVua25vd24gVW5pY29kZSBjaGFyYWN0ZXIgbmFtZSI7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZ290byBlcnJvcjsKIAogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgaWYgKHMgPiBlbmQpIHsKLSAgICAgICAgICAgICAgICBtZXNzYWdlID0gIlxcIGF0IGVuZCBvZiBzdHJpbmciOwotICAgICAgICAgICAgICAgIHMtLTsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgaWYgKCpmaXJzdF9pbnZhbGlkX2VzY2FwZSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgKmZpcnN0X2ludmFsaWRfZXNjYXBlID0gcy0xOyAvKiBCYWNrIHVwIG9uZSBjaGFyLCBzaW5jZSB3ZSd2ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxyZWFkeSBpbmNyZW1lbnRlZCBzLiAqLwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgV1JJVEVDSEFSKCdcXCcpOwotICAgICAgICAgICAgICAgIFdSSVRFQ0hBUigodW5zaWduZWQgY2hhcilzWy0xXSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIFdSSVRFX0FTQ0lJX0NIQVIoJ1xcJyk7CisgICAgICAgICAgICBXUklURV9DSEFSKGMpOworICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgY29udGludWU7CiAKICAgICAgIGVycm9yOgogICAgICAgICBlbmRpbnBvcyA9IHMtc3RhcnRzOworICAgICAgICB3cml0ZXIubWluX2xlbmd0aCA9IGVuZCAtIHMgKyB3cml0ZXIucG9zOwogICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXJfd3JpdGVyKAogICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKICAgICAgICAgICAgICAgICAidW5pY29kZWVzY2FwZSIsIG1lc3NhZ2UsCiAgICAgICAgICAgICAgICAgJnN0YXJ0cywgJmVuZCwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJnMsCi0gICAgICAgICAgICAgICAgJndyaXRlcikpCisgICAgICAgICAgICAgICAgJndyaXRlcikpIHsKICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZSgmd3JpdGVyLCB3cml0ZXIubWluX2xlbmd0aCwgMTI3KSA8IDApIHsKKyAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgfQorCisjdW5kZWYgV1JJVEVfQVNDSUlfQ0hBUgorI3VuZGVmIFdSSVRFX0NIQVIKICAgICB9Ci0jdW5kZWYgV1JJVEVDSEFSCiAKICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CiAgICAgUHlfWERFQ1JFRihleGMpOwogICAgIHJldHVybiBfUHlVbmljb2RlV3JpdGVyX0ZpbmlzaCgmd3JpdGVyKTsKIAotICB1Y25oYXNoRXJyb3I6Ci0gICAgUHlFcnJfU2V0U3RyaW5nKAotICAgICAgICBQeUV4Y19Vbmljb2RlRXJyb3IsCi0gICAgICAgICJcXE4gZXNjYXBlcyBub3Qgc3VwcG9ydGVkIChjYW4ndCBsb2FkIHVuaWNvZGVkYXRhIG1vZHVsZSkiCi0gICAgICAgICk7Ci0gICAgX1B5VW5pY29kZVdyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOwotICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKLSAgICBQeV9YREVDUkVGKGV4Yyk7Ci0gICAgcmV0dXJuIE5VTEw7Ci0KICAgb25FcnJvcjoKICAgICBfUHlVbmljb2RlV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7CiAgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwpAQCAtNTg1MywxMiArNjExMywyOCBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi0vKiBSZXR1cm4gYSBVbmljb2RlLUVzY2FwZSBzdHJpbmcgdmVyc2lvbiBvZiB0aGUgVW5pY29kZSBvYmplY3QuCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZShjb25zdCBjaGFyICpzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQoreworICAgIGNvbnN0IGNoYXIgKmZpcnN0X2ludmFsaWRfZXNjYXBlOworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBfUHlVbmljb2RlX0RlY29kZVVuaWNvZGVFc2NhcGUocywgc2l6ZSwgZXJyb3JzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZpcnN0X2ludmFsaWRfZXNjYXBlKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChmaXJzdF9pbnZhbGlkX2VzY2FwZSAhPSBOVUxMKSB7CisgICAgICAgIGlmIChQeUVycl9XYXJuRm9ybWF0KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgZXNjYXBlIHNlcXVlbmNlICdcXCVjJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpmaXJzdF9pbnZhbGlkX2VzY2FwZSkgPCAwKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CiAKLSAgIElmIHF1b3RlcyBpcyB0cnVlLCB0aGUgc3RyaW5nIGlzIGVuY2xvc2VkIGluIHUiIiBvciB1JycgcXVvdGVzIGFzCi0gICBhcHByb3ByaWF0ZS4KLQotKi8KKy8qIFJldHVybiBhIFVuaWNvZGUtRXNjYXBlIHN0cmluZyB2ZXJzaW9uIG9mIHRoZSBVbmljb2RlIG9iamVjdC4gKi8KIAogUHlPYmplY3QgKgogUHlVbmljb2RlX0FzVW5pY29kZUVzY2FwZVN0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKQEAgLTU4NjYsOSArNjE0Miw5IEBACiAgICAgUHlfc3NpemVfdCBpLCBsZW47CiAgICAgUHlPYmplY3QgKnJlcHI7CiAgICAgY2hhciAqcDsKLSAgICBpbnQga2luZDsKKyAgICBlbnVtIFB5VW5pY29kZV9LaW5kIGtpbmQ7CiAgICAgdm9pZCAqZGF0YTsKLSAgICBQeV9zc2l6ZV90IGV4cGFuZHNpemUgPSAwOworICAgIFB5X3NzaXplX3QgZXhwYW5kc2l6ZTsKIAogICAgIC8qIEluaXRpYWwgYWxsb2NhdGlvbiBpcyBiYXNlZCBvbiB0aGUgbG9uZ2VzdC1wb3NzaWJsZSBjaGFyYWN0ZXIKICAgICAgICBlc2NhcGUuCkBAIC01ODgyLDYwICs2MTU4LDcwIEBACiAgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSk7Ci0gICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpOwotICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQSh1bmljb2RlKTsKLSAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOiBleHBhbmRzaXplID0gNDsgYnJlYWs7Ci0gICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDogZXhwYW5kc2l6ZSA9IDY7IGJyZWFrOwotICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6IGV4cGFuZHNpemUgPSAxMDsgYnJlYWs7CiAgICAgfQogCi0gICAgaWYgKGxlbiA9PSAwKQorICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpOworICAgIGlmIChsZW4gPT0gMCkgewogICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCAwKTsKKyAgICB9CiAKLSAgICBpZiAobGVuID4gKFBZX1NTSVpFX1RfTUFYIC0gMiAtIDEpIC8gZXhwYW5kc2l6ZSkKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpOworICAgIC8qIDQgYnl0ZSBjaGFyYWN0ZXJzIGNhbiB0YWtlIHVwIDEwIGJ5dGVzLCAyIGJ5dGUgY2hhcmFjdGVycyBjYW4gdGFrZSB1cCA2CisgICAgICAgYnl0ZXMsIGFuZCAxIGJ5dGUgY2hhcmFjdGVycyA0LiAqLworICAgIGV4cGFuZHNpemUgPSBraW5kICogMiArIDI7CisgICAgaWYgKGxlbiA+IFBZX1NTSVpFX1RfTUFYIC8gZXhwYW5kc2l6ZSkgewogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLQotICAgIHJlcHIgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgZXhwYW5kc2l6ZSpsZW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIDEpOwotICAgIGlmIChyZXByID09IE5VTEwpCisgICAgfQorICAgIHJlcHIgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGV4cGFuZHNpemUgKiBsZW4pOworICAgIGlmIChyZXByID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCiAgICAgcCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcHIpOwotCiAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CiAgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKIAotICAgICAgICAvKiBFc2NhcGUgYmFja3NsYXNoZXMgKi8KLSAgICAgICAgaWYgKGNoID09ICdcXCcpIHsKLSAgICAgICAgICAgICpwKysgPSAnXFwnOwotICAgICAgICAgICAgKnArKyA9IChjaGFyKSBjaDsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9CisgICAgICAgIC8qIFUrMDAwMC1VKzAwZmYgcmFuZ2UgKi8KKyAgICAgICAgaWYgKGNoIDwgMHgxMDApIHsKKyAgICAgICAgICAgIGlmIChjaCA+PSAnICcgJiYgY2ggPCAxMjcpIHsKKyAgICAgICAgICAgICAgICBpZiAoY2ggIT0gJ1xcJykgeworICAgICAgICAgICAgICAgICAgICAvKiBDb3B5IHByaW50YWJsZSBVUyBBU0NJSSBhcy1pcyAqLworICAgICAgICAgICAgICAgICAgICAqcCsrID0gKGNoYXIpIGNoOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvKiBFc2NhcGUgYmFja3NsYXNoZXMgKi8KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgKnArKyA9ICdcXCc7CisgICAgICAgICAgICAgICAgICAgICpwKysgPSAnXFwnOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KIAotICAgICAgICAvKiBNYXAgMjEtYml0IGNoYXJhY3RlcnMgdG8gJ1xVMDB4eHh4eHgnICovCi0gICAgICAgIGVsc2UgaWYgKGNoID49IDB4MTAwMDApIHsKLSAgICAgICAgICAgIGFzc2VydChjaCA8PSBNQVhfVU5JQ09ERSk7Ci0gICAgICAgICAgICAqcCsrID0gJ1xcJzsKLSAgICAgICAgICAgICpwKysgPSAnVSc7Ci0gICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAyOCkgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDI0KSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMjApICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAxNikgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gOCkgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDQpICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzW2NoICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQorICAgICAgICAgICAgLyogTWFwIHNwZWNpYWwgd2hpdGVzcGFjZSB0byAnXHQnLCBcbicsICdccicgKi8KKyAgICAgICAgICAgIGVsc2UgaWYgKGNoID09ICdcdCcpIHsKKyAgICAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKKyAgICAgICAgICAgICAgICAqcCsrID0gJ3QnOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoY2ggPT0gJ1xuJykgeworICAgICAgICAgICAgICAgICpwKysgPSAnXFwnOworICAgICAgICAgICAgICAgICpwKysgPSAnbic7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChjaCA9PSAnXHInKSB7CisgICAgICAgICAgICAgICAgKnArKyA9ICdcXCc7CisgICAgICAgICAgICAgICAgKnArKyA9ICdyJzsKKyAgICAgICAgICAgIH0KIAotICAgICAgICAvKiBNYXAgMTYtYml0IGNoYXJhY3RlcnMgdG8gJ1x1eHh4eCcgKi8KLSAgICAgICAgaWYgKGNoID49IDI1NikgeworICAgICAgICAgICAgLyogTWFwIG5vbi1wcmludGFibGUgVVMgQVNDSUkgYW5kIDgtYml0IGNoYXJhY3RlcnMgdG8gJ1x4SEgnICovCisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKKyAgICAgICAgICAgICAgICAqcCsrID0gJ3gnOworICAgICAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDQpICYgMHgwMDBGXTsKKyAgICAgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzW2NoICYgMHgwMDBGXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAvKiBVKzAxMDAtVStmZmZmIHJhbmdlOiBNYXAgMTYtYml0IGNoYXJhY3RlcnMgdG8gJ1x1SEhISCcgKi8KKyAgICAgICAgZWxzZSBpZiAoY2ggPCAweDEwMDAwKSB7CiAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKICAgICAgICAgICAgICpwKysgPSAndSc7CiAgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAxMikgJiAweDAwMEZdOwpAQCAtNTk0MywzNyArNjIyOSwyOCBAQAogICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gNCkgJiAweDAwMEZdOwogICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1tjaCAmIDB4MDAwRl07CiAgICAgICAgIH0KKyAgICAgICAgLyogVSswMTAwMDAtVSsxMGZmZmYgcmFuZ2U6IE1hcCAyMS1iaXQgY2hhcmFjdGVycyB0byAnXFUwMEhISEhISCcgKi8KKyAgICAgICAgZWxzZSB7CiAKLSAgICAgICAgLyogTWFwIHNwZWNpYWwgd2hpdGVzcGFjZSB0byAnXHQnLCBcbicsICdccicgKi8KLSAgICAgICAgZWxzZSBpZiAoY2ggPT0gJ1x0JykgeworICAgICAgICAgICAgLyogTWFrZSBzdXJlIHRoYXQgdGhlIGZpcnN0IHR3byBkaWdpdHMgYXJlIHplcm8gKi8KKyAgICAgICAgICAgIGFzc2VydChjaCA8PSBNQVhfVU5JQ09ERSAmJiBNQVhfVU5JQ09ERSA8PSAweDEwZmZmZik7CiAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKLSAgICAgICAgICAgICpwKysgPSAndCc7CisgICAgICAgICAgICAqcCsrID0gJ1UnOworICAgICAgICAgICAgKnArKyA9ICcwJzsKKyAgICAgICAgICAgICpwKysgPSAnMCc7CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAyMCkgJiAweDAwMDAwMDBGXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDE2KSAmIDB4MDAwMDAwMEZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMTIpICYgMHgwMDAwMDAwRl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA4KSAmIDB4MDAwMDAwMEZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gNCkgJiAweDAwMDAwMDBGXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbY2ggJiAweDAwMDAwMDBGXTsKICAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChjaCA9PSAnXG4nKSB7Ci0gICAgICAgICAgICAqcCsrID0gJ1xcJzsKLSAgICAgICAgICAgICpwKysgPSAnbic7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoY2ggPT0gJ1xyJykgewotICAgICAgICAgICAgKnArKyA9ICdcXCc7Ci0gICAgICAgICAgICAqcCsrID0gJ3InOwotICAgICAgICB9Ci0KLSAgICAgICAgLyogTWFwIG5vbi1wcmludGFibGUgVVMgQVNDSUkgdG8gJ1x4aGgnICovCi0gICAgICAgIGVsc2UgaWYgKGNoIDwgJyAnIHx8IGNoID49IDB4N0YpIHsKLSAgICAgICAgICAgICpwKysgPSAnXFwnOwotICAgICAgICAgICAgKnArKyA9ICd4JzsKLSAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDQpICYgMHgwMDBGXTsKLSAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbY2ggJiAweDAwMEZdOwotICAgICAgICB9Ci0KLSAgICAgICAgLyogQ29weSBldmVyeXRoaW5nIGVsc2UgYXMtaXMgKi8KLSAgICAgICAgZWxzZQotICAgICAgICAgICAgKnArKyA9IChjaGFyKSBjaDsKICAgICB9CiAKICAgICBhc3NlcnQocCAtIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcHIpID4gMCk7Ci0gICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVwciwgcCAtIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcHIpKSA8IDApCisgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVwciwgcCAtIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcHIpKSA8IDApIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIHJldHVybiByZXByOwogfQogCkBAIC01OTgzLDggKzYyNjAsMTAgQEAKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIFB5T2JqZWN0ICp0bXAgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUocywgc2l6ZSk7Ci0gICAgaWYgKHRtcCA9PSBOVUxMKQorICAgIGlmICh0bXAgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKICAgICByZXN1bHQgPSBQeVVuaWNvZGVfQXNVbmljb2RlRXNjYXBlU3RyaW5nKHRtcCk7CiAgICAgUHlfREVDUkVGKHRtcCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTU5OTgsOTUgKzYyNzcsMTA3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7CiAgICAgY29uc3QgY2hhciAqc3RhcnRzID0gczsKLSAgICBQeV9zc2l6ZV90IHN0YXJ0aW5wb3M7Ci0gICAgUHlfc3NpemVfdCBlbmRpbnBvczsKICAgICBfUHlVbmljb2RlV3JpdGVyIHdyaXRlcjsKICAgICBjb25zdCBjaGFyICplbmQ7Ci0gICAgY29uc3QgY2hhciAqYnM7CiAgICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7CiAKLSAgICBpZiAoc2l6ZSA9PSAwKQorICAgIGlmIChzaXplID09IDApIHsKICAgICAgICAgX1B5X1JFVFVSTl9VTklDT0RFX0VNUFRZKCk7CisgICAgfQogCiAgICAgLyogRXNjYXBlZCBzdHJpbmdzIHdpbGwgYWx3YXlzIGJlIGxvbmdlciB0aGFuIHRoZSByZXN1bHRpbmcKICAgICAgICBVbmljb2RlIHN0cmluZywgc28gd2Ugc3RhcnQgd2l0aCBzaXplIGhlcmUgYW5kIHRoZW4gcmVkdWNlIHRoZQogICAgICAgIGxlbmd0aCBhZnRlciBjb252ZXJzaW9uIHRvIHRoZSB0cnVlIHZhbHVlLiAoQnV0IGRlY29kaW5nIGVycm9yCiAgICAgICAgaGFuZGxlciBtaWdodCBoYXZlIHRvIHJlc2l6ZSB0aGUgc3RyaW5nKSAqLwogICAgIF9QeVVuaWNvZGVXcml0ZXJfSW5pdCgmd3JpdGVyKTsKLSAgICB3cml0ZXIubWluX2xlbmd0aCA9IHNpemU7CisgICAgIHdyaXRlci5taW5fbGVuZ3RoID0gc2l6ZTsKKyAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKCZ3cml0ZXIsIHNpemUsIDEyNykgPCAwKSB7CisgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICB9CiAKICAgICBlbmQgPSBzICsgc2l6ZTsKICAgICB3aGlsZSAocyA8IGVuZCkgewotICAgICAgICB1bnNpZ25lZCBjaGFyIGM7Ci0gICAgICAgIFB5X1VDUzQgeDsKLSAgICAgICAgaW50IGk7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9ICh1bnNpZ25lZCBjaGFyKSAqcysrOworICAgICAgICBQeV9VQ1M0IGNoOwogICAgICAgICBpbnQgY291bnQ7CisgICAgICAgIFB5X3NzaXplX3Qgc3RhcnRpbnBvczsKKyAgICAgICAgUHlfc3NpemVfdCBlbmRpbnBvczsKKyAgICAgICAgY29uc3QgY2hhciAqbWVzc2FnZTsKKworI2RlZmluZSBXUklURV9DSEFSKGNoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIGlmIChjaCA8PSB3cml0ZXIubWF4Y2hhcikgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICBhc3NlcnQod3JpdGVyLnBvcyA8IHdyaXRlci5zaXplKTsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUod3JpdGVyLmtpbmQsIHdyaXRlci5kYXRhLCB3cml0ZXIucG9zKyssIGNoKTsgXAorICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIGVsc2UgaWYgKF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVDaGFySW5saW5lKCZ3cml0ZXIsIGNoKSA8IDApIHsgXAorICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgfSB3aGlsZSgwKQogCiAgICAgICAgIC8qIE5vbi1lc2NhcGUgY2hhcmFjdGVycyBhcmUgaW50ZXJwcmV0ZWQgYXMgVW5pY29kZSBvcmRpbmFscyAqLwotICAgICAgICBpZiAoKnMgIT0gJ1xcJykgewotICAgICAgICAgICAgeCA9ICh1bnNpZ25lZCBjaGFyKSpzKys7Ci0gICAgICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9Xcml0ZUNoYXJJbmxpbmUoJndyaXRlciwgeCkgPCAwKQotICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgaWYgKGMgIT0gJ1xcJyB8fCBzID49IGVuZCkgeworICAgICAgICAgICAgV1JJVEVfQ0hBUihjKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIHN0YXJ0aW5wb3MgPSBzLXN0YXJ0czsKIAotICAgICAgICAvKiBcdS1lc2NhcGVzIGFyZSBvbmx5IGludGVycHJldGVkIGlmZiB0aGUgbnVtYmVyIG9mIGxlYWRpbmcKLSAgICAgICAgICAgYmFja3NsYXNoZXMgaWYgb2RkICovCi0gICAgICAgIGJzID0gczsKLSAgICAgICAgZm9yICg7cyA8IGVuZDspIHsKLSAgICAgICAgICAgIGlmICgqcyAhPSAnXFwnKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgeCA9ICh1bnNpZ25lZCBjaGFyKSpzKys7Ci0gICAgICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9Xcml0ZUNoYXJJbmxpbmUoJndyaXRlciwgeCkgPCAwKQotICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgYyA9ICh1bnNpZ25lZCBjaGFyKSAqcysrOworICAgICAgICBpZiAoYyA9PSAndScpIHsKKyAgICAgICAgICAgIGNvdW50ID0gNDsKKyAgICAgICAgICAgIG1lc3NhZ2UgPSAidHJ1bmNhdGVkIFxcdVhYWFggZXNjYXBlIjsKICAgICAgICAgfQotICAgICAgICBpZiAoKChzIC0gYnMpICYgMSkgPT0gMCB8fAotICAgICAgICAgICAgcyA+PSBlbmQgfHwKLSAgICAgICAgICAgICgqcyAhPSAndScgJiYgKnMgIT0gJ1UnKSkgewotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgd3JpdGVyLnBvcy0tOwotICAgICAgICBjb3VudCA9ICpzPT0ndScgPyA0IDogODsKLSAgICAgICAgcysrOwotCi0gICAgICAgIC8qIFx1WFhYWCB3aXRoIDQgaGV4IGRpZ2l0cywgXFV4eHh4eHh4eCB3aXRoIDggKi8KLSAgICAgICAgZm9yICh4ID0gMCwgaSA9IDA7IGkgPCBjb3VudDsgKytpLCArK3MpIHsKLSAgICAgICAgICAgIGMgPSAodW5zaWduZWQgY2hhcikqczsKLSAgICAgICAgICAgIGlmICghUHlfSVNYRElHSVQoYykpIHsKLSAgICAgICAgICAgICAgICBlbmRpbnBvcyA9IHMtc3RhcnRzOwotICAgICAgICAgICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcl93cml0ZXIoCi0gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvckhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAicmF3dW5pY29kZWVzY2FwZSIsICJ0cnVuY2F0ZWQgXFx1WFhYWCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZW5kLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAmcywKLSAgICAgICAgICAgICAgICAgICAgICAgICZ3cml0ZXIpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICAgICAgZ290byBuZXh0Qnl0ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHggPSAoeDw8NCkgJiB+MHhGOwotICAgICAgICAgICAgaWYgKGMgPj0gJzAnICYmIGMgPD0gJzknKQotICAgICAgICAgICAgICAgIHggKz0gYyAtICcwJzsKLSAgICAgICAgICAgIGVsc2UgaWYgKGMgPj0gJ2EnICYmIGMgPD0gJ2YnKQotICAgICAgICAgICAgICAgIHggKz0gMTAgKyBjIC0gJ2EnOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHggKz0gMTAgKyBjIC0gJ0EnOwotICAgICAgICB9Ci0gICAgICAgIGlmICh4IDw9IE1BWF9VTklDT0RFKSB7Ci0gICAgICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9Xcml0ZUNoYXJJbmxpbmUoJndyaXRlciwgeCkgPCAwKQotICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgZWxzZSBpZiAoYyA9PSAnVScpIHsKKyAgICAgICAgICAgIGNvdW50ID0gODsKKyAgICAgICAgICAgIG1lc3NhZ2UgPSAidHJ1bmNhdGVkIFxcVVhYWFhYWFhYIGVzY2FwZSI7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBlbmRpbnBvcyA9IHMtc3RhcnRzOwotICAgICAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyX3dyaXRlcigKLSAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAicmF3dW5pY29kZWVzY2FwZSIsICJcXFV4eHh4eHh4eCBvdXQgb2YgcmFuZ2UiLAotICAgICAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZW5kLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAmcywKLSAgICAgICAgICAgICAgICAgICAgJndyaXRlcikpCi0gICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgYXNzZXJ0KHdyaXRlci5wb3MgPCB3cml0ZXIuc2l6ZSk7CisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUod3JpdGVyLmtpbmQsIHdyaXRlci5kYXRhLCB3cml0ZXIucG9zKyssICdcXCcpOworICAgICAgICAgICAgV1JJVEVfQ0hBUihjKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICBuZXh0Qnl0ZToKLSAgICAgICAgOworICAgICAgICBzdGFydGlucG9zID0gcyAtIHN0YXJ0cyAtIDI7CisKKyAgICAgICAgLyogXHVISEhIIHdpdGggNCBoZXggZGlnaXRzLCBcVTAwSEhISEhIIHdpdGggOCAqLworICAgICAgICBmb3IgKGNoID0gMDsgY291bnQgJiYgcyA8IGVuZDsgKytzLCAtLWNvdW50KSB7CisgICAgICAgICAgICBjID0gKHVuc2lnbmVkIGNoYXIpKnM7CisgICAgICAgICAgICBjaCA8PD0gNDsKKyAgICAgICAgICAgIGlmIChjID49ICcwJyAmJiBjIDw9ICc5JykgeworICAgICAgICAgICAgICAgIGNoICs9IGMgLSAnMCc7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChjID49ICdhJyAmJiBjIDw9ICdmJykgeworICAgICAgICAgICAgICAgIGNoICs9IGMgLSAoJ2EnIC0gMTApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoYyA+PSAnQScgJiYgYyA8PSAnRicpIHsKKyAgICAgICAgICAgICAgICBjaCArPSBjIC0gKCdBJyAtIDEwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmICghY291bnQpIHsKKyAgICAgICAgICAgIGlmIChjaCA8PSBNQVhfVU5JQ09ERSkgeworICAgICAgICAgICAgICAgIFdSSVRFX0NIQVIoY2gpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbWVzc2FnZSA9ICJcXFV4eHh4eHh4eCBvdXQgb2YgcmFuZ2UiOworICAgICAgICB9CisKKyAgICAgICAgZW5kaW5wb3MgPSBzLXN0YXJ0czsKKyAgICAgICAgd3JpdGVyLm1pbl9sZW5ndGggPSBlbmQgLSBzICsgd3JpdGVyLnBvczsKKyAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyX3dyaXRlcigKKyAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvckhhbmRsZXIsCisgICAgICAgICAgICAgICAgInJhd3VuaWNvZGVlc2NhcGUiLCBtZXNzYWdlLAorICAgICAgICAgICAgICAgICZzdGFydHMsICZlbmQsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsICZzLAorICAgICAgICAgICAgICAgICZ3cml0ZXIpKSB7CisgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZSgmd3JpdGVyLCB3cml0ZXIubWluX2xlbmd0aCwgMTI3KSA8IDApIHsKKyAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgfQorCisjdW5kZWYgV1JJVEVfQ0hBUgogICAgIH0KICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CiAgICAgUHlfWERFQ1JFRihleGMpOwpAQCAtNjA5Nyw2ICs2Mzg4LDcgQEAKICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CiAgICAgUHlfWERFQ1JFRihleGMpOwogICAgIHJldHVybiBOVUxMOworCiB9CiAKIApAQCAtNjEwNSw3ICs2Mzk3LDYgQEAKIHsKICAgICBQeU9iamVjdCAqcmVwcjsKICAgICBjaGFyICpwOwotICAgIGNoYXIgKnE7CiAgICAgUHlfc3NpemVfdCBleHBhbmRzaXplLCBwb3M7CiAgICAgaW50IGtpbmQ7CiAgICAgdm9pZCAqZGF0YTsKQEAgLTYxMTUsNDMgKzY0MDYsNDEgQEAKICAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkgewogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpOwogICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQSh1bmljb2RlKTsKICAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKTsKKyAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCkgeworICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShkYXRhLCBsZW4pOworICAgIH0KKwogICAgIC8qIDQgYnl0ZSBjaGFyYWN0ZXJzIGNhbiB0YWtlIHVwIDEwIGJ5dGVzLCAyIGJ5dGUgY2hhcmFjdGVycyBjYW4gdGFrZSB1cCA2CiAgICAgICAgYnl0ZXMsIGFuZCAxIGJ5dGUgY2hhcmFjdGVycyA0LiAqLwogICAgIGV4cGFuZHNpemUgPSBraW5kICogMiArIDI7CiAKLSAgICBpZiAobGVuID4gUFlfU1NJWkVfVF9NQVggLyBleHBhbmRzaXplKQorICAgIGlmIChsZW4gPiBQWV9TU0laRV9UX01BWCAvIGV4cGFuZHNpemUpIHsKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0KKyAgICB9CiAgICAgcmVwciA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgZXhwYW5kc2l6ZSAqIGxlbik7Ci0gICAgaWYgKHJlcHIgPT0gTlVMTCkKKyAgICBpZiAocmVwciA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChsZW4gPT0gMCkKKyAgICB9CisgICAgaWYgKGxlbiA9PSAwKSB7CiAgICAgICAgIHJldHVybiByZXByOworICAgIH0KIAotICAgIHAgPSBxID0gUHlCeXRlc19BU19TVFJJTkcocmVwcik7CisgICAgcCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcHIpOwogICAgIGZvciAocG9zID0gMDsgcG9zIDwgbGVuOyBwb3MrKykgewogICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgcG9zKTsKLSAgICAgICAgLyogTWFwIDMyLWJpdCBjaGFyYWN0ZXJzIHRvICdcVXh4eHh4eHh4JyAqLwotICAgICAgICBpZiAoY2ggPj0gMHgxMDAwMCkgewotICAgICAgICAgICAgYXNzZXJ0KGNoIDw9IE1BWF9VTklDT0RFKTsKLSAgICAgICAgICAgICpwKysgPSAnXFwnOwotICAgICAgICAgICAgKnArKyA9ICdVJzsKLSAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDI4KSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAyNCkgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMjApICYgMHhmXTsKLSAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDE2KSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAxMikgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gOCkgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gNCkgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1tjaCAmIDE1XTsKKworICAgICAgICAvKiBVKzAwMDAtVSswMGZmIHJhbmdlOiBDb3B5IDgtYml0IGNoYXJhY3RlcnMgYXMtaXMgKi8KKyAgICAgICAgaWYgKGNoIDwgMHgxMDApIHsKKyAgICAgICAgICAgICpwKysgPSAoY2hhcikgY2g7CiAgICAgICAgIH0KLSAgICAgICAgLyogTWFwIDE2LWJpdCBjaGFyYWN0ZXJzIHRvICdcdXh4eHgnICovCi0gICAgICAgIGVsc2UgaWYgKGNoID49IDI1NikgeworICAgICAgICAvKiBVKzAwMDAtVSswMGZmIHJhbmdlOiBNYXAgMTYtYml0IGNoYXJhY3RlcnMgdG8gJ1x1SEhISCcgKi8KKyAgICAgICAgZWxzZSBpZiAoY2ggPCAweDEwMDAwKSB7CiAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKICAgICAgICAgICAgICpwKysgPSAndSc7CiAgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAxMikgJiAweGZdOwpAQCAtNjE1OSwxNCArNjQ0OCwyNiBAQAogICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gNCkgJiAweGZdOwogICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1tjaCAmIDE1XTsKICAgICAgICAgfQotICAgICAgICAvKiBDb3B5IGV2ZXJ5dGhpbmcgZWxzZSBhcy1pcyAqLwotICAgICAgICBlbHNlCi0gICAgICAgICAgICAqcCsrID0gKGNoYXIpIGNoOworICAgICAgICAvKiBVKzAxMDAwMC1VKzEwZmZmZiByYW5nZTogTWFwIDMyLWJpdCBjaGFyYWN0ZXJzIHRvICdcVTAwSEhISEhIJyAqLworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGFzc2VydChjaCA8PSBNQVhfVU5JQ09ERSAmJiBNQVhfVU5JQ09ERSA8PSAweDEwZmZmZik7CisgICAgICAgICAgICAqcCsrID0gJ1xcJzsKKyAgICAgICAgICAgICpwKysgPSAnVSc7CisgICAgICAgICAgICAqcCsrID0gJzAnOworICAgICAgICAgICAgKnArKyA9ICcwJzsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDIwKSAmIDB4Zl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAxNikgJiAweGZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMTIpICYgMHhmXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDgpICYgMHhmXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDQpICYgMHhmXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbY2ggJiAxNV07CisgICAgICAgIH0KICAgICB9CiAKLSAgICBhc3NlcnQocCA+IHEpOwotICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJlcHIsIHAgLSBxKSA8IDApCisgICAgYXNzZXJ0KHAgPiBQeUJ5dGVzX0FTX1NUUklORyhyZXByKSk7CisgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVwciwgcCAtIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcHIpKSA8IDApIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIHJldHVybiByZXByOwogfQogCkBAIC02MzQ0LDcgKzY2NDUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydHBvcywgUHlfc3NpemVfdCBlbmRwb3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpuZXdwb3MpCiB7Ci0gICAgc3RhdGljIGNoYXIgKmFyZ3BhcnNlID0gIk9uO2VuY29kaW5nIGVycm9yIGhhbmRsZXIgbXVzdCByZXR1cm4gKHN0ci9ieXRlcywgaW50KSB0dXBsZSI7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKmFyZ3BhcnNlID0gIk9uO2VuY29kaW5nIGVycm9yIGhhbmRsZXIgbXVzdCByZXR1cm4gKHN0ci9ieXRlcywgaW50KSB0dXBsZSI7CiAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgUHlPYmplY3QgKnJlc3R1cGxlOwogICAgIFB5T2JqZWN0ICpyZXN1bmljb2RlOwpAQCAtNjM5OCwyNSArNjY5OSwyMiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHVuaWNvZGVfZW5jb2RlX3VjczEoUHlPYmplY3QgKnVuaWNvZGUsCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGxpbWl0KQorICAgICAgICAgICAgICAgICAgICBjb25zdCBQeV9VQ1M0IGxpbWl0KQogewogICAgIC8qIGlucHV0IHN0YXRlICovCiAgICAgUHlfc3NpemVfdCBwb3M9MCwgc2l6ZTsKICAgICBpbnQga2luZDsKICAgICB2b2lkICpkYXRhOwotICAgIC8qIG91dHB1dCBvYmplY3QgKi8KLSAgICBQeU9iamVjdCAqcmVzOwogICAgIC8qIHBvaW50ZXIgaW50byB0aGUgb3V0cHV0ICovCiAgICAgY2hhciAqc3RyOwotICAgIC8qIGN1cnJlbnQgb3V0cHV0IHBvc2l0aW9uICovCi0gICAgUHlfc3NpemVfdCByZXNzaXplOwogICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nID0gKGxpbWl0ID09IDI1NikgPyAibGF0aW4tMSIgOiAiYXNjaWkiOwogICAgIGNvbnN0IGNoYXIgKnJlYXNvbiA9IChsaW1pdCA9PSAyNTYpID8gIm9yZGluYWwgbm90IGluIHJhbmdlKDI1NikiIDogIm9yZGluYWwgbm90IGluIHJhbmdlKDEyOCkiOwotICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOworICAgIFB5T2JqZWN0ICplcnJvcl9oYW5kbGVyX29iaiA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7Ci0gICAgLyogdGhlIGZvbGxvd2luZyB2YXJpYWJsZSBpcyB1c2VkIGZvciBjYWNoaW5nIHN0cmluZyBjb21wYXJpc29ucwotICAgICAqIC0xPW5vdCBpbml0aWFsaXplZCwgMD11bmtub3duLCAxPXN0cmljdCwgMj1yZXBsYWNlLCAzPWlnbm9yZSwgND14bWxjaGFycmVmcmVwbGFjZSAqLwotICAgIGludCBrbm93bl9lcnJvckhhbmRsZXIgPSAtMTsKKyAgICBfUHlfZXJyb3JfaGFuZGxlciBlcnJvcl9oYW5kbGVyID0gX1B5X0VSUk9SX1VOS05PV047CisgICAgUHlPYmplY3QgKnJlcCA9IE5VTEw7CisgICAgLyogb3V0cHV0IG9iamVjdCAqLworICAgIF9QeUJ5dGVzV3JpdGVyIHdyaXRlcjsKIAogICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNjQyNywxODYgKzY3MjUsMTU3IEBACiAgICAgICAgcmVwbGFjZW1lbnRzLCBpZiB3ZSBuZWVkIG1vcmUsIHdlJ2xsIHJlc2l6ZSAqLwogICAgIGlmIChzaXplID09IDApCiAgICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDApOwotICAgIHJlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2l6ZSk7Ci0gICAgaWYgKHJlcyA9PSBOVUxMKQorCisgICAgX1B5Qnl0ZXNXcml0ZXJfSW5pdCgmd3JpdGVyKTsKKyAgICBzdHIgPSBfUHlCeXRlc1dyaXRlcl9BbGxvYygmd3JpdGVyLCBzaXplKTsKKyAgICBpZiAoc3RyID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHN0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcyk7Ci0gICAgcmVzc2l6ZSA9IHNpemU7CiAKICAgICB3aGlsZSAocG9zIDwgc2l6ZSkgewotICAgICAgICBQeV9VQ1M0IGMgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBwb3MpOworICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgcG9zKTsKIAogICAgICAgICAvKiBjYW4gd2UgZW5jb2RlIHRoaXM/ICovCi0gICAgICAgIGlmIChjPGxpbWl0KSB7CisgICAgICAgIGlmIChjaCA8IGxpbWl0KSB7CiAgICAgICAgICAgICAvKiBubyBvdmVyZmxvdyBjaGVjaywgYmVjYXVzZSB3ZSBrbm93IHRoYXQgdGhlIHNwYWNlIGlzIGVub3VnaCAqLwotICAgICAgICAgICAgKnN0cisrID0gKGNoYXIpYzsKKyAgICAgICAgICAgICpzdHIrKyA9IChjaGFyKWNoOwogICAgICAgICAgICAgKytwb3M7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBQeV9zc2l6ZV90IHJlcXVpcmVkc2l6ZTsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpyZXB1bmljb2RlOwotICAgICAgICAgICAgUHlfc3NpemVfdCByZXBzaXplLCBuZXdwb3MsIHJlc3BvcywgaTsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgbmV3cG9zLCBpOwogICAgICAgICAgICAgLyogc3RhcnRwb3MgZm9yIGNvbGxlY3RpbmcgdW5lbmNvZGFibGUgY2hhcnMgKi8KICAgICAgICAgICAgIFB5X3NzaXplX3QgY29sbHN0YXJ0ID0gcG9zOwotICAgICAgICAgICAgUHlfc3NpemVfdCBjb2xsZW5kID0gcG9zOworICAgICAgICAgICAgUHlfc3NpemVfdCBjb2xsZW5kID0gY29sbHN0YXJ0ICsgMTsKICAgICAgICAgICAgIC8qIGZpbmQgYWxsIHVuZWNvZGFibGUgY2hhcmFjdGVycyAqLworCiAgICAgICAgICAgICB3aGlsZSAoKGNvbGxlbmQgPCBzaXplKSAmJiAoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgY29sbGVuZCkgPj0gbGltaXQpKQogICAgICAgICAgICAgICAgICsrY29sbGVuZDsKKworICAgICAgICAgICAgLyogT25seSBvdmVyYWxsb2NhdGUgdGhlIGJ1ZmZlciBpZiBpdCdzIG5vdCB0aGUgbGFzdCB3cml0ZSAqLworICAgICAgICAgICAgd3JpdGVyLm92ZXJhbGxvY2F0ZSA9IChjb2xsZW5kIDwgc2l6ZSk7CisKICAgICAgICAgICAgIC8qIGNhY2hlIGNhbGxiYWNrIG5hbWUgbG9va3VwIChpZiBub3QgZG9uZSB5ZXQsIGkuZS4gaXQncyB0aGUgZmlyc3QgZXJyb3IpICovCi0gICAgICAgICAgICBpZiAoa25vd25fZXJyb3JIYW5kbGVyPT0tMSkgewotICAgICAgICAgICAgICAgIGlmICgoZXJyb3JzPT1OVUxMKSB8fCAoIXN0cmNtcChlcnJvcnMsICJzdHJpY3QiKSkpCi0gICAgICAgICAgICAgICAgICAgIGtub3duX2Vycm9ySGFuZGxlciA9IDE7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoIXN0cmNtcChlcnJvcnMsICJyZXBsYWNlIikpCi0gICAgICAgICAgICAgICAgICAgIGtub3duX2Vycm9ySGFuZGxlciA9IDI7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoIXN0cmNtcChlcnJvcnMsICJpZ25vcmUiKSkKLSAgICAgICAgICAgICAgICAgICAga25vd25fZXJyb3JIYW5kbGVyID0gMzsKLSAgICAgICAgICAgICAgICBlbHNlIGlmICghc3RyY21wKGVycm9ycywgInhtbGNoYXJyZWZyZXBsYWNlIikpCi0gICAgICAgICAgICAgICAgICAgIGtub3duX2Vycm9ySGFuZGxlciA9IDQ7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBrbm93bl9lcnJvckhhbmRsZXIgPSAwOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc3dpdGNoIChrbm93bl9lcnJvckhhbmRsZXIpIHsKLSAgICAgICAgICAgIGNhc2UgMTogLyogc3RyaWN0ICovCisgICAgICAgICAgICBpZiAoZXJyb3JfaGFuZGxlciA9PSBfUHlfRVJST1JfVU5LTk9XTikKKyAgICAgICAgICAgICAgICBlcnJvcl9oYW5kbGVyID0gZ2V0X2Vycm9yX2hhbmRsZXIoZXJyb3JzKTsKKworICAgICAgICAgICAgc3dpdGNoIChlcnJvcl9oYW5kbGVyKSB7CisgICAgICAgICAgICBjYXNlIF9QeV9FUlJPUl9TVFJJQ1Q6CiAgICAgICAgICAgICAgICAgcmFpc2VfZW5jb2RlX2V4Y2VwdGlvbigmZXhjLCBlbmNvZGluZywgdW5pY29kZSwgY29sbHN0YXJ0LCBjb2xsZW5kLCByZWFzb24pOwogICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgIGNhc2UgMjogLyogcmVwbGFjZSAqLwotICAgICAgICAgICAgICAgIHdoaWxlIChjb2xsc3RhcnQrKyA8IGNvbGxlbmQpCi0gICAgICAgICAgICAgICAgICAgICpzdHIrKyA9ICc/JzsgLyogZmFsbCB0aHJvdWdoICovCi0gICAgICAgICAgICBjYXNlIDM6IC8qIGlnbm9yZSAqLworCisgICAgICAgICAgICBjYXNlIF9QeV9FUlJPUl9SRVBMQUNFOgorICAgICAgICAgICAgICAgIG1lbXNldChzdHIsICc/JywgY29sbGVuZCAtIGNvbGxzdGFydCk7CisgICAgICAgICAgICAgICAgc3RyICs9IChjb2xsZW5kIC0gY29sbHN0YXJ0KTsKKyAgICAgICAgICAgICAgICAvKiBmYWxsIHRocm91Z2ggaWdub3JlIGVycm9yIGhhbmRsZXIgKi8KKyAgICAgICAgICAgIGNhc2UgX1B5X0VSUk9SX0lHTk9SRToKICAgICAgICAgICAgICAgICBwb3MgPSBjb2xsZW5kOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSA0OiAvKiB4bWxjaGFycmVmcmVwbGFjZSAqLwotICAgICAgICAgICAgICAgIHJlc3BvcyA9IHN0ciAtIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcyk7Ci0gICAgICAgICAgICAgICAgcmVxdWlyZWRzaXplID0gcmVzcG9zOwotICAgICAgICAgICAgICAgIC8qIGRldGVybWluZSByZXBsYWNlbWVudCBzaXplICovCi0gICAgICAgICAgICAgICAgZm9yIChpID0gY29sbHN0YXJ0OyBpIDwgY29sbGVuZDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKLSAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpbmNyOwotICAgICAgICAgICAgICAgICAgICBpZiAoY2ggPCAxMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGluY3IgPSAyKzErMTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2ggPCAxMDApCi0gICAgICAgICAgICAgICAgICAgICAgICBpbmNyID0gMisyKzE7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoIDwgMTAwMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGluY3IgPSAyKzMrMTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2ggPCAxMDAwMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGluY3IgPSAyKzQrMTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2ggPCAxMDAwMDApCi0gICAgICAgICAgICAgICAgICAgICAgICBpbmNyID0gMis1KzE7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoIDwgMTAwMDAwMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGluY3IgPSAyKzYrMTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQoY2ggPD0gTUFYX1VOSUNPREUpOwotICAgICAgICAgICAgICAgICAgICAgICAgaW5jciA9IDIrNysxOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyZXF1aXJlZHNpemUgPiBQWV9TU0laRV9UX01BWCAtIGluY3IpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG92ZXJmbG93OwotICAgICAgICAgICAgICAgICAgICByZXF1aXJlZHNpemUgKz0gaW5jcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKHJlcXVpcmVkc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC0gKHNpemUgLSBjb2xsZW5kKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBvdmVyZmxvdzsKLSAgICAgICAgICAgICAgICByZXF1aXJlZHNpemUgKz0gc2l6ZSAtIGNvbGxlbmQ7Ci0gICAgICAgICAgICAgICAgaWYgKHJlcXVpcmVkc2l6ZSA+IHJlc3NpemUpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3NpemUgPD0gUFlfU1NJWkVfVF9NQVgvMiAmJiByZXF1aXJlZHNpemUgPCAyKnJlc3NpemUpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZHNpemUgPSAyKnJlc3NpemU7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJlcywgcmVxdWlyZWRzaXplKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgc3RyID0gUHlCeXRlc19BU19TVFJJTkcocmVzKSArIHJlc3BvczsKLSAgICAgICAgICAgICAgICAgICAgcmVzc2l6ZSA9IHJlcXVpcmVkc2l6ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgLyogZ2VuZXJhdGUgcmVwbGFjZW1lbnQgKi8KLSAgICAgICAgICAgICAgICBmb3IgKGkgPSBjb2xsc3RhcnQ7IGkgPCBjb2xsZW5kOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgc3RyICs9IHNwcmludGYoc3RyLCAiJiMlZDsiLCBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHBvcyA9IGNvbGxlbmQ7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHJlcHVuaWNvZGUgPSB1bmljb2RlX2VuY29kZV9jYWxsX2Vycm9yaGFuZGxlcihlcnJvcnMsICZlcnJvckhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nLCByZWFzb24sIHVuaWNvZGUsICZleGMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxzdGFydCwgY29sbGVuZCwgJm5ld3Bvcyk7Ci0gICAgICAgICAgICAgICAgaWYgKHJlcHVuaWNvZGUgPT0gTlVMTCB8fCAoUHlVbmljb2RlX0NoZWNrKHJlcHVuaWNvZGUpICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1JFQURZKHJlcHVuaWNvZGUpID09IC0xKSkKKworICAgICAgICAgICAgY2FzZSBfUHlfRVJST1JfQkFDS1NMQVNIUkVQTEFDRToKKyAgICAgICAgICAgICAgICAvKiBzdWJ0cmFjdCBwcmVhbGxvY2F0ZWQgYnl0ZXMgKi8KKyAgICAgICAgICAgICAgICB3cml0ZXIubWluX3NpemUgLT0gKGNvbGxlbmQgLSBjb2xsc3RhcnQpOworICAgICAgICAgICAgICAgIHN0ciA9IGJhY2tzbGFzaHJlcGxhY2UoJndyaXRlciwgc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZSwgY29sbHN0YXJ0LCBjb2xsZW5kKTsKKyAgICAgICAgICAgICAgICBpZiAoc3RyID09IE5VTEwpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICBpZiAoUHlCeXRlc19DaGVjayhyZXB1bmljb2RlKSkgewotICAgICAgICAgICAgICAgICAgICAvKiBEaXJlY3RseSBjb3B5IGJ5dGVzIHJlc3VsdCB0byBvdXRwdXQuICovCi0gICAgICAgICAgICAgICAgICAgIHJlcHNpemUgPSBQeUJ5dGVzX1NpemUocmVwdW5pY29kZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyZXBzaXplID4gMSkgewotICAgICAgICAgICAgICAgICAgICAgICAgLyogTWFrZSByb29tIGZvciBhbGwgYWRkaXRpb25hbCBieXRlcy4gKi8KLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvcyA9IHN0ciAtIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC0gcmVwc2l6ZSAtIDEpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwdW5pY29kZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvdmVyZmxvdzsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJlcywgcmVzc2l6ZStyZXBzaXplLTEpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcHVuaWNvZGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcykgKyByZXNwb3M7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXNzaXplICs9IHJlcHNpemUtMTsKKyAgICAgICAgICAgICAgICBwb3MgPSBjb2xsZW5kOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIF9QeV9FUlJPUl9YTUxDSEFSUkVGUkVQTEFDRToKKyAgICAgICAgICAgICAgICAvKiBzdWJ0cmFjdCBwcmVhbGxvY2F0ZWQgYnl0ZXMgKi8KKyAgICAgICAgICAgICAgICB3cml0ZXIubWluX3NpemUgLT0gKGNvbGxlbmQgLSBjb2xsc3RhcnQpOworICAgICAgICAgICAgICAgIHN0ciA9IHhtbGNoYXJyZWZyZXBsYWNlKCZ3cml0ZXIsIHN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmljb2RlLCBjb2xsc3RhcnQsIGNvbGxlbmQpOworICAgICAgICAgICAgICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgICAgIHBvcyA9IGNvbGxlbmQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgX1B5X0VSUk9SX1NVUlJPR0FURUVTQ0FQRToKKyAgICAgICAgICAgICAgICBmb3IgKGkgPSBjb2xsc3RhcnQ7IGkgPCBjb2xsZW5kOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNoIDwgMHhkYzgwIHx8IDB4ZGNmZiA8IGNoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvKiBOb3QgYSBVVEYtOGIgc3Vycm9nYXRlICovCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBtZW1jcHkoc3RyLCBQeUJ5dGVzX0FzU3RyaW5nKHJlcHVuaWNvZGUpLCByZXBzaXplKTsKLSAgICAgICAgICAgICAgICAgICAgc3RyICs9IHJlcHNpemU7Ci0gICAgICAgICAgICAgICAgICAgIHBvcyA9IG5ld3BvczsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcHVuaWNvZGUpOworICAgICAgICAgICAgICAgICAgICAqc3RyKysgPSAoY2hhcikoY2ggLSAweGRjMDApOworICAgICAgICAgICAgICAgICAgICArK3BvczsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGkgPj0gY29sbGVuZCkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIC8qIG5lZWQgbW9yZSBzcGFjZT8gKGF0IGxlYXN0IGVub3VnaCBmb3Igd2hhdCB3ZQotICAgICAgICAgICAgICAgICAgIGhhdmUrdGhlIHJlcGxhY2VtZW50K3RoZSByZXN0IG9mIHRoZSBzdHJpbmcsIHNvCi0gICAgICAgICAgICAgICAgICAgd2Ugd29uJ3QgaGF2ZSB0byBjaGVjayBzcGFjZSBmb3IgZW5jb2RhYmxlIGNoYXJhY3RlcnMpICovCi0gICAgICAgICAgICAgICAgcmVzcG9zID0gc3RyIC0gUHlCeXRlc19BU19TVFJJTkcocmVzKTsKLSAgICAgICAgICAgICAgICByZXBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocmVwdW5pY29kZSk7Ci0gICAgICAgICAgICAgICAgcmVxdWlyZWRzaXplID0gcmVzcG9zOwotICAgICAgICAgICAgICAgIGlmIChyZXF1aXJlZHNpemUgPiBQWV9TU0laRV9UX01BWCAtIHJlcHNpemUpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gb3ZlcmZsb3c7Ci0gICAgICAgICAgICAgICAgcmVxdWlyZWRzaXplICs9IHJlcHNpemU7Ci0gICAgICAgICAgICAgICAgaWYgKHJlcXVpcmVkc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC0gKHNpemUgLSBjb2xsZW5kKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBvdmVyZmxvdzsKLSAgICAgICAgICAgICAgICByZXF1aXJlZHNpemUgKz0gc2l6ZSAtIGNvbGxlbmQ7Ci0gICAgICAgICAgICAgICAgaWYgKHJlcXVpcmVkc2l6ZSA+IHJlc3NpemUpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3NpemUgPD0gUFlfU1NJWkVfVF9NQVgvMiAmJiByZXF1aXJlZHNpemUgPCAyKnJlc3NpemUpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZHNpemUgPSAyKnJlc3NpemU7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJlcywgcmVxdWlyZWRzaXplKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcHVuaWNvZGUpOworICAgICAgICAgICAgICAgIGNvbGxzdGFydCA9IHBvczsKKyAgICAgICAgICAgICAgICBhc3NlcnQoY29sbHN0YXJ0ICE9IGNvbGxlbmQpOworICAgICAgICAgICAgICAgIC8qIGZhbGxiYWNrIHRvIGdlbmVyYWwgZXJyb3IgaGFuZGxpbmcgKi8KKworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXAgPSB1bmljb2RlX2VuY29kZV9jYWxsX2Vycm9yaGFuZGxlcihlcnJvcnMsICZlcnJvcl9oYW5kbGVyX29iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZywgcmVhc29uLCB1bmljb2RlLCAmZXhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxzdGFydCwgY29sbGVuZCwgJm5ld3Bvcyk7CisgICAgICAgICAgICAgICAgaWYgKHJlcCA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisKKyAgICAgICAgICAgICAgICAvKiBzdWJ0cmFjdCBwcmVhbGxvY2F0ZWQgYnl0ZXMgKi8KKyAgICAgICAgICAgICAgICB3cml0ZXIubWluX3NpemUgLT0gMTsKKworICAgICAgICAgICAgICAgIGlmIChQeUJ5dGVzX0NoZWNrKHJlcCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLyogRGlyZWN0bHkgY29weSBieXRlcyByZXN1bHQgdG8gb3V0cHV0LiAqLworICAgICAgICAgICAgICAgICAgICBzdHIgPSBfUHlCeXRlc1dyaXRlcl9Xcml0ZUJ5dGVzKCZ3cml0ZXIsIHN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhyZXApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfR0VUX1NJWkUocmVwKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChzdHIgPT0gTlVMTCkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBzdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXMpICsgcmVzcG9zOwotICAgICAgICAgICAgICAgICAgICByZXNzaXplID0gcmVxdWlyZWRzaXplOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAvKiBjaGVjayBpZiB0aGVyZSBpcyBhbnl0aGluZyB1bmVuY29kYWJsZSBpbiB0aGUgcmVwbGFjZW1lbnQKLSAgICAgICAgICAgICAgICAgICBhbmQgY29weSBpdCB0byB0aGUgb3V0cHV0ICovCi0gICAgICAgICAgICAgICAgZm9yIChpID0gMDsgcmVwc2l6ZS0tPjA7ICsraSwgKytzdHIpIHsKLSAgICAgICAgICAgICAgICAgICAgYyA9IFB5VW5pY29kZV9SRUFEX0NIQVIocmVwdW5pY29kZSwgaSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjID49IGxpbWl0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKCZleGMsIGVuY29kaW5nLCB1bmljb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MsIHBvcysxLCByZWFzb24pOwotICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcHVuaWNvZGUpOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrKHJlcCkpOworCisgICAgICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocmVwKSA8IDApCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSShyZXApKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvKiBGYXN0IHBhdGg6IGFsbCBjaGFyYWN0ZXJzIGFyZSBzbWFsbGVyIHRoYW4gbGltaXQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydChsaW1pdCA+PSAxMjgpOworICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9LSU5EKHJlcCkgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpOworICAgICAgICAgICAgICAgICAgICAgICAgc3RyID0gX1B5Qnl0ZXNXcml0ZXJfV3JpdGVCeXRlcygmd3JpdGVyLCBzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9EQVRBKHJlcCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlcCkpOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICpzdHIgPSAoY2hhciljOworICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgcmVwc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlcCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ciA9IF9QeUJ5dGVzV3JpdGVyX1ByZXBhcmUoJndyaXRlciwgc3RyLCByZXBzaXplKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNoZWNrIGlmIHRoZXJlIGlzIGFueXRoaW5nIHVuZW5jb2RhYmxlIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnQgYW5kIGNvcHkgaXQgdG8gdGhlIG91dHB1dCAqLworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgcmVwc2l6ZS0tPjA7ICsraSwgKytzdHIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaCA9IFB5VW5pY29kZV9SRUFEX0NIQVIocmVwLCBpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2ggPj0gbGltaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2VfZW5jb2RlX2V4Y2VwdGlvbigmZXhjLCBlbmNvZGluZywgdW5pY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MsIHBvcysxLCByZWFzb24pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdHIgPSAoY2hhciljaDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBwb3MgPSBuZXdwb3M7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcHVuaWNvZGUpOworICAgICAgICAgICAgICAgIFB5X0NMRUFSKHJlcCk7CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIElmIG92ZXJhbGxvY2F0aW9uIHdhcyBkaXNhYmxlZCwgZW5zdXJlIHRoYXQgaXQgd2FzIHRoZSBsYXN0CisgICAgICAgICAgICAgICB3cml0ZS4gT3RoZXJ3aXNlLCB3ZSBtaXNzZWQgYW4gb3B0aW1pemF0aW9uICovCisgICAgICAgICAgICBhc3NlcnQod3JpdGVyLm92ZXJhbGxvY2F0ZSB8fCBwb3MgPT0gc2l6ZSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgLyogUmVzaXplIGlmIHdlIGFsbG9jYXRlZCB0byBtdWNoICovCi0gICAgc2l6ZSA9IHN0ciAtIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcyk7Ci0gICAgaWYgKHNpemUgPCByZXNzaXplKSB7IC8qIElmIHRoaXMgZmFsbHMgcmVzIHdpbGwgYmUgTlVMTCAqLwotICAgICAgICBhc3NlcnQoc2l6ZSA+PSAwKTsKLSAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzLCBzaXplKSA8IDApCi0gICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgfQogCi0gICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOworICAgIFB5X1hERUNSRUYoZXJyb3JfaGFuZGxlcl9vYmopOwogICAgIFB5X1hERUNSRUYoZXhjKTsKLSAgICByZXR1cm4gcmVzOwotCi0gIG92ZXJmbG93OgotICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAiZW5jb2RlZCByZXN1bHQgaXMgdG9vIGxvbmcgZm9yIGEgUHl0aG9uIHN0cmluZyIpOworICAgIHJldHVybiBfUHlCeXRlc1dyaXRlcl9GaW5pc2goJndyaXRlciwgc3RyKTsKIAogICBvbkVycm9yOgotICAgIFB5X1hERUNSRUYocmVzKTsKLSAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CisgICAgUHlfWERFQ1JFRihyZXApOworICAgIF9QeUJ5dGVzV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7CisgICAgUHlfWERFQ1JFRihlcnJvcl9oYW5kbGVyX29iaik7CiAgICAgUHlfWERFQ1JFRihleGMpOwogICAgIHJldHVybiBOVUxMOwogfQpAQCAtNjY2Niw4ICs2OTM1LDkgQEAKICAgICBQeV9zc2l6ZV90IGVuZGlucG9zOwogICAgIFB5X3NzaXplX3Qgb3V0cG9zOwogICAgIGNvbnN0IGNoYXIgKmU7Ci0gICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7CisgICAgUHlPYmplY3QgKmVycm9yX2hhbmRsZXJfb2JqID0gTlVMTDsKICAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKKyAgICBfUHlfZXJyb3JfaGFuZGxlciBlcnJvcl9oYW5kbGVyID0gX1B5X0VSUk9SX1VOS05PV047CiAKICAgICBpZiAoc2l6ZSA9PSAwKQogICAgICAgICBfUHlfUkVUVVJOX1VOSUNPREVfRU1QVFkoKTsKQEAgLTY2OTYsMTIgKzY5NjYsNDIgQEAKICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCBkYXRhLCB3cml0ZXIucG9zLCBjKTsKICAgICAgICAgICAgIHdyaXRlci5wb3MrKzsKICAgICAgICAgICAgICsrczsKKyAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgeworCisgICAgICAgIC8qIGJ5dGUgb3V0c2l6ZSByYW5nZSAweDAwLi4weDdmOiBjYWxsIHRoZSBlcnJvciBoYW5kbGVyICovCisKKyAgICAgICAgaWYgKGVycm9yX2hhbmRsZXIgPT0gX1B5X0VSUk9SX1VOS05PV04pCisgICAgICAgICAgICBlcnJvcl9oYW5kbGVyID0gZ2V0X2Vycm9yX2hhbmRsZXIoZXJyb3JzKTsKKworICAgICAgICBzd2l0Y2ggKGVycm9yX2hhbmRsZXIpCisgICAgICAgIHsKKyAgICAgICAgY2FzZSBfUHlfRVJST1JfUkVQTEFDRToKKyAgICAgICAgY2FzZSBfUHlfRVJST1JfU1VSUk9HQVRFRVNDQVBFOgorICAgICAgICAgICAgLyogRmFzdC1wYXRoOiB0aGUgZXJyb3IgaGFuZGxlciBvbmx5IHdyaXRlcyBvbmUgY2hhcmFjdGVyLAorICAgICAgICAgICAgICAgYnV0IHdlIG1heSBzd2l0Y2ggdG8gVUNTMiBhdCB0aGUgZmlyc3Qgd3JpdGUgKi8KKyAgICAgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmVLaW5kKCZ3cml0ZXIsIFB5VW5pY29kZV8yQllURV9LSU5EKSA8IDApCisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAga2luZCA9IHdyaXRlci5raW5kOworICAgICAgICAgICAgZGF0YSA9IHdyaXRlci5kYXRhOworCisgICAgICAgICAgICBpZiAoZXJyb3JfaGFuZGxlciA9PSBfUHlfRVJST1JfUkVQTEFDRSkKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgZGF0YSwgd3JpdGVyLnBvcywgMHhmZmZkKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgZGF0YSwgd3JpdGVyLnBvcywgYyArIDB4ZGMwMCk7CisgICAgICAgICAgICB3cml0ZXIucG9zKys7CisgICAgICAgICAgICArK3M7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIF9QeV9FUlJPUl9JR05PUkU6CisgICAgICAgICAgICArK3M7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgc3RhcnRpbnBvcyA9IHMtc3RhcnRzOwogICAgICAgICAgICAgZW5kaW5wb3MgPSBzdGFydGlucG9zICsgMTsKICAgICAgICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcl93cml0ZXIoCi0gICAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JfaGFuZGxlcl9vYmosCiAgICAgICAgICAgICAgICAgICAgICJhc2NpaSIsICJvcmRpbmFsIG5vdCBpbiByYW5nZSgxMjgpIiwKICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0cywgJmUsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsICZzLAogICAgICAgICAgICAgICAgICAgICAmd3JpdGVyKSkKQEAgLTY3MTAsMTMgKzcwMTAsMTMgQEAKICAgICAgICAgICAgIGRhdGEgPSB3cml0ZXIuZGF0YTsKICAgICAgICAgfQogICAgIH0KLSAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CisgICAgUHlfWERFQ1JFRihlcnJvcl9oYW5kbGVyX29iaik7CiAgICAgUHlfWERFQ1JFRihleGMpOwogICAgIHJldHVybiBfUHlVbmljb2RlV3JpdGVyX0ZpbmlzaCgmd3JpdGVyKTsKIAogICBvbkVycm9yOgogICAgIF9QeVVuaWNvZGVXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKLSAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CisgICAgUHlfWERFQ1JFRihlcnJvcl9oYW5kbGVyX29iaik7CiAgICAgUHlfWERFQ1JFRihleGMpOwogICAgIHJldHVybiBOVUxMOwogfQpAQCAtNjc1OSw3ICs3MDU5LDcgQEAKICAgICByZXR1cm4gX1B5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nKHVuaWNvZGUsIE5VTEwpOwogfQogCi0jaWZkZWYgSEFWRV9NQkNTCisjaWZkZWYgTVNfV0lORE9XUwogCiAvKiAtLS0gTUJDUyBjb2RlY3MgZm9yIFdpbmRvd3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIApAQCAtNjc3MSw3ICs3MDcxLDcgQEAKICMgIGRlZmluZSBXQ19FUlJfSU5WQUxJRF9DSEFSUyAweDAwODAKICNlbmRpZgogCi1zdGF0aWMgY2hhcioKK3N0YXRpYyBjb25zdCBjaGFyKgogY29kZV9wYWdlX25hbWUoVUlOVCBjb2RlX3BhZ2UsIFB5T2JqZWN0ICoqb2JqKQogewogICAgICpvYmogPSBOVUxMOwpAQCAtNjg3OSw3ICs3MTc5LDcgQEAKICAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKICAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKICAgICBQeU9iamVjdCAqZW5jb2Rpbmdfb2JqID0gTlVMTDsKLSAgICBjaGFyICplbmNvZGluZzsKKyAgICBjb25zdCBjaGFyICplbmNvZGluZzsKICAgICBEV09SRCBlcnI7CiAgICAgaW50IHJldCA9IC0xOwogCkBAIC03MTE1LDcgKzc0MTUsNiBAQAogICAgIEJPT0wgdXNlZERlZmF1bHRDaGFyID0gRkFMU0U7CiAgICAgQk9PTCAqcHVzZWREZWZhdWx0Q2hhciA9ICZ1c2VkRGVmYXVsdENoYXI7CiAgICAgaW50IG91dHNpemU7Ci0gICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7CiAgICAgd2NoYXJfdCAqcDsKICAgICBQeV9zc2l6ZV90IHNpemU7CiAgICAgY29uc3QgRFdPUkQgZmxhZ3MgPSBlbmNvZGVfY29kZV9wYWdlX2ZsYWdzKGNvZGVfcGFnZSwgTlVMTCk7CkBAIC03MjI0LDcgKzc1MjMsNyBAQAogICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOwogICAgIFB5T2JqZWN0ICplbmNvZGluZ19vYmogPSBOVUxMOwotICAgIGNoYXIgKmVuY29kaW5nOworICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nOwogICAgIFB5X3NzaXplX3QgbmV3cG9zLCBuZXdvdXRzaXplOwogICAgIFB5T2JqZWN0ICpyZXA7CiAgICAgaW50IHJldCA9IC0xOwpAQCAtNzQ3OSw3ICs3Nzc4LDcgQEAKIAogI3VuZGVmIE5FRURfUkVUUlkKIAotI2VuZGlmIC8qIEhBVkVfTUJDUyAqLworI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIAogLyogLS0tIENoYXJhY3RlciBNYXBwaW5nIENvZGVjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKQEAgLTgwODIsNyArODM4MSw3IEBACiBjaGFybWFwX2VuY29kaW5nX2Vycm9yKAogICAgIFB5T2JqZWN0ICp1bmljb2RlLCBQeV9zc2l6ZV90ICppbnBvcywgUHlPYmplY3QgKm1hcHBpbmcsCiAgICAgUHlPYmplY3QgKipleGNlcHRpb25PYmplY3QsCi0gICAgaW50ICprbm93bl9lcnJvckhhbmRsZXIsIFB5T2JqZWN0ICoqZXJyb3JIYW5kbGVyLCBjb25zdCBjaGFyICplcnJvcnMsCisgICAgX1B5X2Vycm9yX2hhbmRsZXIgKmVycm9yX2hhbmRsZXIsIFB5T2JqZWN0ICoqZXJyb3JfaGFuZGxlcl9vYmosIGNvbnN0IGNoYXIgKmVycm9ycywKICAgICBQeU9iamVjdCAqKnJlcywgUHlfc3NpemVfdCAqcmVzcG9zKQogewogICAgIFB5T2JqZWN0ICpyZXB1bmljb2RlID0gTlVMTDsgLyogaW5pdGlhbGl6ZSB0byBwcmV2ZW50IGdjYyB3YXJuaW5nICovCkBAIC04MTI5LDIzICs4NDI4LDE1IEBACiAgICAgfQogICAgIC8qIGNhY2hlIGNhbGxiYWNrIG5hbWUgbG9va3VwCiAgICAgICogKGlmIG5vdCBkb25lIHlldCwgaS5lLiBpdCdzIHRoZSBmaXJzdCBlcnJvcikgKi8KLSAgICBpZiAoKmtub3duX2Vycm9ySGFuZGxlcj09LTEpIHsKLSAgICAgICAgaWYgKChlcnJvcnM9PU5VTEwpIHx8ICghc3RyY21wKGVycm9ycywgInN0cmljdCIpKSkKLSAgICAgICAgICAgICprbm93bl9lcnJvckhhbmRsZXIgPSAxOwotICAgICAgICBlbHNlIGlmICghc3RyY21wKGVycm9ycywgInJlcGxhY2UiKSkKLSAgICAgICAgICAgICprbm93bl9lcnJvckhhbmRsZXIgPSAyOwotICAgICAgICBlbHNlIGlmICghc3RyY21wKGVycm9ycywgImlnbm9yZSIpKQotICAgICAgICAgICAgKmtub3duX2Vycm9ySGFuZGxlciA9IDM7Ci0gICAgICAgIGVsc2UgaWYgKCFzdHJjbXAoZXJyb3JzLCAieG1sY2hhcnJlZnJlcGxhY2UiKSkKLSAgICAgICAgICAgICprbm93bl9lcnJvckhhbmRsZXIgPSA0OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICAqa25vd25fZXJyb3JIYW5kbGVyID0gMDsKLSAgICB9Ci0gICAgc3dpdGNoICgqa25vd25fZXJyb3JIYW5kbGVyKSB7Ci0gICAgY2FzZSAxOiAvKiBzdHJpY3QgKi8KKyAgICBpZiAoKmVycm9yX2hhbmRsZXIgPT0gX1B5X0VSUk9SX1VOS05PV04pCisgICAgICAgICplcnJvcl9oYW5kbGVyID0gZ2V0X2Vycm9yX2hhbmRsZXIoZXJyb3JzKTsKKworICAgIHN3aXRjaCAoKmVycm9yX2hhbmRsZXIpIHsKKyAgICBjYXNlIF9QeV9FUlJPUl9TVFJJQ1Q6CiAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oZXhjZXB0aW9uT2JqZWN0LCBlbmNvZGluZywgdW5pY29kZSwgY29sbHN0YXJ0cG9zLCBjb2xsZW5kcG9zLCByZWFzb24pOwogICAgICAgICByZXR1cm4gLTE7Ci0gICAgY2FzZSAyOiAvKiByZXBsYWNlICovCisKKyAgICBjYXNlIF9QeV9FUlJPUl9SRVBMQUNFOgogICAgICAgICBmb3IgKGNvbGxwb3MgPSBjb2xsc3RhcnRwb3M7IGNvbGxwb3M8Y29sbGVuZHBvczsgKytjb2xscG9zKSB7CiAgICAgICAgICAgICB4ID0gY2hhcm1hcGVuY29kZV9vdXRwdXQoJz8nLCBtYXBwaW5nLCByZXMsIHJlc3Bvcyk7CiAgICAgICAgICAgICBpZiAoeD09ZW5jX0VYQ0VQVElPTikgewpAQCAtODE1NywxMCArODQ0OCwxMSBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLwotICAgIGNhc2UgMzogLyogaWdub3JlICovCisgICAgY2FzZSBfUHlfRVJST1JfSUdOT1JFOgogICAgICAgICAqaW5wb3MgPSBjb2xsZW5kcG9zOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIDQ6IC8qIHhtbGNoYXJyZWZyZXBsYWNlICovCisKKyAgICBjYXNlIF9QeV9FUlJPUl9YTUxDSEFSUkVGUkVQTEFDRToKICAgICAgICAgLyogZ2VuZXJhdGUgcmVwbGFjZW1lbnQgKHRlbXBvcmFyaWx5IChtaXMpdXNlcyBwKSAqLwogICAgICAgICBmb3IgKGNvbGxwb3MgPSBjb2xsc3RhcnRwb3M7IGNvbGxwb3MgPCBjb2xsZW5kcG9zOyArK2NvbGxwb3MpIHsKICAgICAgICAgICAgIGNoYXIgYnVmZmVyWzIrMjkrMSsxXTsKQEAgLTgxNzgsOCArODQ3MCw5IEBACiAgICAgICAgIH0KICAgICAgICAgKmlucG9zID0gY29sbGVuZHBvczsKICAgICAgICAgYnJlYWs7CisKICAgICBkZWZhdWx0OgotICAgICAgICByZXB1bmljb2RlID0gdW5pY29kZV9lbmNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoZXJyb3JzLCBlcnJvckhhbmRsZXIsCisgICAgICAgIHJlcHVuaWNvZGUgPSB1bmljb2RlX2VuY29kZV9jYWxsX2Vycm9yaGFuZGxlcihlcnJvcnMsIGVycm9yX2hhbmRsZXJfb2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmcsIHJlYXNvbiwgdW5pY29kZSwgZXhjZXB0aW9uT2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbHN0YXJ0cG9zLCBjb2xsZW5kcG9zLCAmbmV3cG9zKTsKICAgICAgICAgaWYgKHJlcHVuaWNvZGUgPT0gTlVMTCkKQEAgLTgyNDIsMTIgKzg1MzUsOSBAQAogICAgIFB5X3NzaXplX3Qgc2l6ZTsKICAgICAvKiBjdXJyZW50IG91dHB1dCBwb3NpdGlvbiAqLwogICAgIFB5X3NzaXplX3QgcmVzcG9zID0gMDsKLSAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZXJyb3JfaGFuZGxlcl9vYmogPSBOVUxMOwogICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOwotICAgIC8qIHRoZSBmb2xsb3dpbmcgdmFyaWFibGUgaXMgdXNlZCBmb3IgY2FjaGluZyBzdHJpbmcgY29tcGFyaXNvbnMKLSAgICAgKiAtMT1ub3QgaW5pdGlhbGl6ZWQsIDA9dW5rbm93biwgMT1zdHJpY3QsIDI9cmVwbGFjZSwKLSAgICAgKiAzPWlnbm9yZSwgND14bWxjaGFycmVmcmVwbGFjZSAqLwotICAgIGludCBrbm93bl9lcnJvckhhbmRsZXIgPSAtMTsKKyAgICBfUHlfZXJyb3JfaGFuZGxlciBlcnJvcl9oYW5kbGVyID0gX1B5X0VSUk9SX1VOS05PV047CiAgICAgdm9pZCAqZGF0YTsKICAgICBpbnQga2luZDsKIApAQCAtODI3OCw3ICs4NTY4LDcgQEAKICAgICAgICAgaWYgKHg9PWVuY19GQUlMRUQpIHsgLyogdW5lbmNvZGFibGUgY2hhcmFjdGVyICovCiAgICAgICAgICAgICBpZiAoY2hhcm1hcF9lbmNvZGluZ19lcnJvcih1bmljb2RlLCAmaW5wb3MsIG1hcHBpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXhjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmtub3duX2Vycm9ySGFuZGxlciwgJmVycm9ySGFuZGxlciwgZXJyb3JzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmVycm9yX2hhbmRsZXIsICZlcnJvcl9oYW5kbGVyX29iaiwgZXJyb3JzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlcywgJnJlc3BvcykpIHsKICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICB9CkBAIC04Mjk0LDEzICs4NTg0LDEzIEBACiAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAKICAgICBQeV9YREVDUkVGKGV4Yyk7Ci0gICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOworICAgIFB5X1hERUNSRUYoZXJyb3JfaGFuZGxlcl9vYmopOwogICAgIHJldHVybiByZXM7CiAKICAgb25FcnJvcjoKICAgICBQeV9YREVDUkVGKHJlcyk7CiAgICAgUHlfWERFQ1JFRihleGMpOwotICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKKyAgICBQeV9YREVDUkVGKGVycm9yX2hhbmRsZXJfb2JqKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIApAQCAtODM2Nyw3ICs4NjU3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnRwb3MsIFB5X3NzaXplX3QgZW5kcG9zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqbmV3cG9zKQogewotICAgIHN0YXRpYyBjaGFyICphcmdwYXJzZSA9ICJPIW47dHJhbnNsYXRpbmcgZXJyb3IgaGFuZGxlciBtdXN0IHJldHVybiAoc3RyLCBpbnQpIHR1cGxlIjsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqYXJncGFyc2UgPSAiTyFuO3RyYW5zbGF0aW5nIGVycm9yIGhhbmRsZXIgbXVzdCByZXR1cm4gKHN0ciwgaW50KSB0dXBsZSI7CiAKICAgICBQeV9zc2l6ZV90IGlfbmV3cG9zOwogICAgIFB5T2JqZWN0ICpyZXN0dXBsZTsKQEAgLTg2MjQsNyArODkxNCw3IEBACiAgICAgcmV0dXJuIHJlczsKIH0KIAotUHlPYmplY3QgKgorc3RhdGljIFB5T2JqZWN0ICoKIF9QeVVuaWNvZGVfVHJhbnNsYXRlQ2hhcm1hcChQeU9iamVjdCAqaW5wdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm1hcHBpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQpAQCAtODY1MywxMCArODk0Myw4IEBACiAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKGlucHV0KTsKICAgICBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoaW5wdXQpOwogCi0gICAgaWYgKHNpemUgPT0gMCkgewotICAgICAgICBQeV9JTkNSRUYoaW5wdXQpOwotICAgICAgICByZXR1cm4gaW5wdXQ7Ci0gICAgfQorICAgIGlmIChzaXplID09IDApCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbU9iamVjdChpbnB1dCk7CiAKICAgICAvKiBhbGxvY2F0ZSBlbm91Z2ggZm9yIGEgc2ltcGxlIDE6MSB0cmFuc2xhdGlvbiB3aXRob3V0CiAgICAgICAgcmVwbGFjZW1lbnRzLCBpZiB3ZSBuZWVkIG1vcmUsIHdlJ2xsIHJlc2l6ZSAqLwpAQCAtODc2NywxNCArOTA1NSw5IEBACiAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptYXBwaW5nLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKLQotICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMKQorICAgIGlmIChlbnN1cmVfdW5pY29kZShzdHIpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzdWx0ID0gX1B5VW5pY29kZV9UcmFuc2xhdGVDaGFybWFwKHN0ciwgbWFwcGluZywgZXJyb3JzKTsKLSAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBfUHlVbmljb2RlX1RyYW5zbGF0ZUNoYXJtYXAoc3RyLCBtYXBwaW5nLCBlcnJvcnMpOwogfQogCiBzdGF0aWMgUHlfVUNTNApAQCAtODk1Niw5ICs5MjM5LDEwIEBACiAgICAgfQogCiBzdGF0aWMgUHlfc3NpemVfdAotYW55X2ZpbmRfc2xpY2UoaW50IGRpcmVjdGlvbiwgUHlPYmplY3QqIHMxLCBQeU9iamVjdCogczIsCithbnlfZmluZF9zbGljZShQeU9iamVjdCogczEsIFB5T2JqZWN0KiBzMiwKICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsCi0gICAgICAgICAgICAgICBQeV9zc2l6ZV90IGVuZCkKKyAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZW5kLAorICAgICAgICAgICAgICAgaW50IGRpcmVjdGlvbikKIHsKICAgICBpbnQga2luZDEsIGtpbmQyOwogICAgIHZvaWQgKmJ1ZjEsICpidWYyOwpAQCAtOTEyNyw1NCArOTQxMSwzNSBAQAogICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZW5kKQogewogICAgIFB5X3NzaXplX3QgcmVzdWx0OwotICAgIFB5T2JqZWN0KiBzdHJfb2JqOwotICAgIFB5T2JqZWN0KiBzdWJfb2JqOwogICAgIGludCBraW5kMSwga2luZDI7CiAgICAgdm9pZCAqYnVmMSA9IE5VTEwsICpidWYyID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IGxlbjEsIGxlbjI7CiAKLSAgICBzdHJfb2JqID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoIXN0cl9vYmopCisgICAgaWYgKGVuc3VyZV91bmljb2RlKHN0cikgPCAwIHx8IGVuc3VyZV91bmljb2RlKHN1YnN0cikgPCAwKQogICAgICAgICByZXR1cm4gLTE7Ci0gICAgc3ViX29iaiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN1YnN0cik7Ci0gICAgaWYgKCFzdWJfb2JqKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN1Yl9vYmopID09IC0xIHx8IFB5VW5pY29kZV9SRUFEWShzdHJfb2JqKSA9PSAtMSkgewotICAgICAgICBQeV9ERUNSRUYoc3ViX29iaik7Ci0gICAgICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KIAotICAgIGtpbmQxID0gUHlVbmljb2RlX0tJTkQoc3RyX29iaik7Ci0gICAga2luZDIgPSBQeVVuaWNvZGVfS0lORChzdWJfb2JqKTsKLSAgICBpZiAoa2luZDEgPCBraW5kMikgewotICAgICAgICBQeV9ERUNSRUYoc3ViX29iaik7Ci0gICAgICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKKyAgICBraW5kMSA9IFB5VW5pY29kZV9LSU5EKHN0cik7CisgICAga2luZDIgPSBQeVVuaWNvZGVfS0lORChzdWJzdHIpOworICAgIGlmIChraW5kMSA8IGtpbmQyKQogICAgICAgICByZXR1cm4gMDsKLSAgICB9CiAKLSAgICBsZW4xID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyX29iaik7Ci0gICAgbGVuMiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN1Yl9vYmopOworICAgIGxlbjEgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpOworICAgIGxlbjIgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdWJzdHIpOwogICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIGxlbjEpOwotICAgIGlmIChlbmQgLSBzdGFydCA8IGxlbjIpIHsKLSAgICAgICAgUHlfREVDUkVGKHN1Yl9vYmopOwotICAgICAgICBQeV9ERUNSRUYoc3RyX29iaik7CisgICAgaWYgKGVuZCAtIHN0YXJ0IDwgbGVuMikKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQogCi0gICAgYnVmMSA9IFB5VW5pY29kZV9EQVRBKHN0cl9vYmopOwotICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzdWJfb2JqKTsKKyAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc3RyKTsKKyAgICBidWYyID0gUHlVbmljb2RlX0RBVEEoc3Vic3RyKTsKICAgICBpZiAoa2luZDIgIT0ga2luZDEpIHsKLSAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHN1Yl9vYmosIGtpbmQxKTsKKyAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHN1YnN0ciwga2luZDEpOwogICAgICAgICBpZiAoIWJ1ZjIpCiAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgfQogCiAgICAgc3dpdGNoIChraW5kMSkgewogICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6Ci0gICAgICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkoc3RyX29iaikgJiYgUHlVbmljb2RlX0lTX0FTQ0lJKHN1Yl9vYmopKQorICAgICAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHN0cikgJiYgUHlVbmljb2RlX0lTX0FTQ0lJKHN1YnN0cikpCiAgICAgICAgICAgICByZXN1bHQgPSBhc2NpaWxpYl9jb3VudCgKICAgICAgICAgICAgICAgICAoKFB5X1VDUzEqKWJ1ZjEpICsgc3RhcnQsIGVuZCAtIHN0YXJ0LAogICAgICAgICAgICAgICAgIGJ1ZjIsIGxlbjIsIFBZX1NTSVpFX1RfTUFYCkBAIC05MjAxLDE2ICs5NDY2LDExIEBACiAgICAgICAgIGFzc2VydCgwKTsgcmVzdWx0ID0gMDsKICAgICB9CiAKLSAgICBQeV9ERUNSRUYoc3ViX29iaik7Ci0gICAgUHlfREVDUkVGKHN0cl9vYmopOwotCiAgICAgaWYgKGtpbmQyICE9IGtpbmQxKQogICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKICAgb25FcnJvcjoKLSAgICBQeV9ERUNSRUYoc3ViX29iaik7Ci0gICAgUHlfREVDUkVGKHN0cl9vYmopOwogICAgIGlmIChraW5kMiAhPSBraW5kMSAmJiBidWYyKQogICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOwogICAgIHJldHVybiAtMTsKQEAgLTkyMTgsMzUgKzk0NzgsMTUgQEAKIAogUHlfc3NpemVfdAogUHlVbmljb2RlX0ZpbmQoUHlPYmplY3QgKnN0ciwKLSAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdWIsCisgICAgICAgICAgICAgICBQeU9iamVjdCAqc3Vic3RyLAogICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwKICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZW5kLAogICAgICAgICAgICAgICAgaW50IGRpcmVjdGlvbikKIHsKLSAgICBQeV9zc2l6ZV90IHJlc3VsdDsKLQotICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKCFzdHIpCisgICAgaWYgKGVuc3VyZV91bmljb2RlKHN0cikgPCAwIHx8IGVuc3VyZV91bmljb2RlKHN1YnN0cikgPCAwKQogICAgICAgICByZXR1cm4gLTI7Ci0gICAgc3ViID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3ViKTsKLSAgICBpZiAoIXN1YikgewotICAgICAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICAgICAgcmV0dXJuIC0yOwotICAgIH0KLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN1YikgPT0gLTEgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPT0gLTEpIHsKLSAgICAgICAgUHlfREVDUkVGKHN1Yik7Ci0gICAgICAgIFB5X0RFQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gLTI7Ci0gICAgfQogCi0gICAgcmVzdWx0ID0gYW55X2ZpbmRfc2xpY2UoZGlyZWN0aW9uLAotICAgICAgICBzdHIsIHN1Yiwgc3RhcnQsIGVuZAotICAgICAgICApOwotCi0gICAgUHlfREVDUkVGKHN0cik7Ci0gICAgUHlfREVDUkVGKHN1Yik7Ci0KLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBhbnlfZmluZF9zbGljZShzdHIsIHN1YnN0ciwgc3RhcnQsIGVuZCwgZGlyZWN0aW9uKTsKIH0KIAogUHlfc3NpemVfdApAQCAtOTM0OSwyMiArOTU4OSwxMCBAQAogICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGVuZCwKICAgICAgICAgICAgICAgICAgICAgaW50IGRpcmVjdGlvbikKIHsKLSAgICBQeV9zc2l6ZV90IHJlc3VsdDsKLQotICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMKQorICAgIGlmIChlbnN1cmVfdW5pY29kZShzdHIpIDwgMCB8fCBlbnN1cmVfdW5pY29kZShzdWJzdHIpIDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIHN1YnN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN1YnN0cik7Ci0gICAgaWYgKHN1YnN0ciA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQogCi0gICAgcmVzdWx0ID0gdGFpbG1hdGNoKHN0ciwgc3Vic3RyLAotICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwgZW5kLCBkaXJlY3Rpb24pOwotICAgIFB5X0RFQ1JFRihzdHIpOwotICAgIFB5X0RFQ1JFRihzdWJzdHIpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHRhaWxtYXRjaChzdHIsIHN1YnN0ciwgc3RhcnQsIGVuZCwgZGlyZWN0aW9uKTsKIH0KIAogLyogQXBwbHkgZml4ZmN0IGZpbHRlciB0byB0aGUgVW5pY29kZSBvYmplY3Qgc2VsZiBhbmQgcmV0dXJuIGEKQEAgLTk2NjYsMjAgKzk4OTQsMTAgQEAKIFB5T2JqZWN0ICoKIFB5VW5pY29kZV9Kb2luKFB5T2JqZWN0ICpzZXBhcmF0b3IsIFB5T2JqZWN0ICpzZXEpCiB7Ci0gICAgUHlPYmplY3QgKnNlcCA9IE5VTEw7Ci0gICAgUHlfc3NpemVfdCBzZXBsZW47Ci0gICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7IC8qIHRoZSByZXN1bHQgKi8KLSAgICBQeU9iamVjdCAqZnNlcTsgICAgICAgICAgLyogUHlTZXF1ZW5jZV9GYXN0KHNlcSkgKi8KLSAgICBQeV9zc2l6ZV90IHNlcWxlbjsgICAgICAgLyogbGVuKGZzZXEpIC0tIG51bWJlciBvZiBpdGVtcyBpbiBzZXF1ZW5jZSAqLworICAgIFB5T2JqZWN0ICpyZXM7CisgICAgUHlPYmplY3QgKmZzZXE7CisgICAgUHlfc3NpemVfdCBzZXFsZW47CiAgICAgUHlPYmplY3QgKippdGVtczsKLSAgICBQeU9iamVjdCAqaXRlbTsKLSAgICBQeV9zc2l6ZV90IHN6LCBpLCByZXNfb2Zmc2V0OwotICAgIFB5X1VDUzQgbWF4Y2hhcjsKLSAgICBQeV9VQ1M0IGl0ZW1fbWF4Y2hhcjsKLSAgICBpbnQgdXNlX21lbWNweTsKLSAgICB1bnNpZ25lZCBjaGFyICpyZXNfZGF0YSA9IE5VTEwsICpzZXBfZGF0YSA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmxhc3Rfb2JqOwotICAgIHVuc2lnbmVkIGludCBraW5kID0gMDsKIAogICAgIGZzZXEgPSBQeVNlcXVlbmNlX0Zhc3Qoc2VxLCAiY2FuIG9ubHkgam9pbiBhbiBpdGVyYWJsZSIpOwogICAgIGlmIChmc2VxID09IE5VTEwpIHsKQEAgLTk2OTAsMjEgKzk5MDgsMzkgQEAKICAgICAgKiBzbyB3ZSBhcmUgc3VyZSB0aGF0IGZzZXEgd29uJ3QgYmUgbXV0YXRlZC4KICAgICAgKi8KIAorICAgIGl0ZW1zID0gUHlTZXF1ZW5jZV9GYXN0X0lURU1TKGZzZXEpOwogICAgIHNlcWxlbiA9IFB5U2VxdWVuY2VfRmFzdF9HRVRfU0laRShmc2VxKTsKKyAgICByZXMgPSBfUHlVbmljb2RlX0pvaW5BcnJheShzZXBhcmF0b3IsIGl0ZW1zLCBzZXFsZW4pOworICAgIFB5X0RFQ1JFRihmc2VxKTsKKyAgICByZXR1cm4gcmVzOworfQorCitQeU9iamVjdCAqCitfUHlVbmljb2RlX0pvaW5BcnJheShQeU9iamVjdCAqc2VwYXJhdG9yLCBQeU9iamVjdCAqKml0ZW1zLCBQeV9zc2l6ZV90IHNlcWxlbikKK3sKKyAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsgLyogdGhlIHJlc3VsdCAqLworICAgIFB5T2JqZWN0ICpzZXAgPSBOVUxMOworICAgIFB5X3NzaXplX3Qgc2VwbGVuOworICAgIFB5T2JqZWN0ICppdGVtOworICAgIFB5X3NzaXplX3Qgc3osIGksIHJlc19vZmZzZXQ7CisgICAgUHlfVUNTNCBtYXhjaGFyOworICAgIFB5X1VDUzQgaXRlbV9tYXhjaGFyOworICAgIGludCB1c2VfbWVtY3B5OworICAgIHVuc2lnbmVkIGNoYXIgKnJlc19kYXRhID0gTlVMTCwgKnNlcF9kYXRhID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbGFzdF9vYmo7CisgICAgdW5zaWduZWQgaW50IGtpbmQgPSAwOworCiAgICAgLyogSWYgZW1wdHkgc2VxdWVuY2UsIHJldHVybiB1IiIuICovCiAgICAgaWYgKHNlcWxlbiA9PSAwKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihmc2VxKTsKICAgICAgICAgX1B5X1JFVFVSTl9VTklDT0RFX0VNUFRZKCk7CiAgICAgfQogCiAgICAgLyogSWYgc2luZ2xldG9uIHNlcXVlbmNlIHdpdGggYW4gZXhhY3QgVW5pY29kZSwgcmV0dXJuIHRoYXQuICovCiAgICAgbGFzdF9vYmogPSBOVUxMOwotICAgIGl0ZW1zID0gUHlTZXF1ZW5jZV9GYXN0X0lURU1TKGZzZXEpOwogICAgIGlmIChzZXFsZW4gPT0gMSkgewogICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3QoaXRlbXNbMF0pKSB7CiAgICAgICAgICAgICByZXMgPSBpdGVtc1swXTsKICAgICAgICAgICAgIFB5X0lOQ1JFRihyZXMpOwotICAgICAgICAgICAgUHlfREVDUkVGKGZzZXEpOwogICAgICAgICAgICAgcmV0dXJuIHJlczsKICAgICAgICAgfQogICAgICAgICBzZXBsZW4gPSAwOwpAQCAtOTgwMiw3ICsxMDAzOCw3IEBACiAKICAgICAgICAgICAgIC8qIENvcHkgaXRlbSwgYW5kIG1heWJlIHRoZSBzZXBhcmF0b3IuICovCiAgICAgICAgICAgICBpZiAoaSAmJiBzZXBsZW4gIT0gMCkgewotICAgICAgICAgICAgICAgIFB5X01FTUNQWShyZXNfZGF0YSwKKyAgICAgICAgICAgICAgICBtZW1jcHkocmVzX2RhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcF9kYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kICogc2VwbGVuKTsKICAgICAgICAgICAgICAgICByZXNfZGF0YSArPSBraW5kICogc2VwbGVuOwpAQCAtOTgxMCw3ICsxMDA0Niw3IEBACiAKICAgICAgICAgICAgIGl0ZW1sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChpdGVtKTsKICAgICAgICAgICAgIGlmIChpdGVtbGVuICE9IDApIHsKLSAgICAgICAgICAgICAgICBQeV9NRU1DUFkocmVzX2RhdGEsCisgICAgICAgICAgICAgICAgbWVtY3B5KHJlc19kYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfREFUQShpdGVtKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZCAqIGl0ZW1sZW4pOwogICAgICAgICAgICAgICAgIHJlc19kYXRhICs9IGtpbmQgKiBpdGVtbGVuOwpAQCAtOTgzOSwxMyArMTAwNzUsMTEgQEAKICAgICAgICAgYXNzZXJ0KHJlc19vZmZzZXQgPT0gUHlVbmljb2RlX0dFVF9MRU5HVEgocmVzKSk7CiAgICAgfQogCi0gICAgUHlfREVDUkVGKGZzZXEpOwogICAgIFB5X1hERUNSRUYoc2VwKTsKICAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJlcywgMSkpOwogICAgIHJldHVybiByZXM7CiAKICAgb25FcnJvcjoKLSAgICBQeV9ERUNSRUYoZnNlcSk7CiAgICAgUHlfWERFQ1JFRihzZXApOwogICAgIFB5X1hERUNSRUYocmVzKTsKICAgICByZXR1cm4gTlVMTDsKQEAgLTk5NzAsMTMgKzEwMjA0LDggQEAKIHsKICAgICBQeU9iamVjdCAqbGlzdDsKIAotICAgIHN0cmluZyA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cmluZyk7Ci0gICAgaWYgKHN0cmluZyA9PSBOVUxMKQorICAgIGlmIChlbnN1cmVfdW5pY29kZShzdHJpbmcpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdHJpbmcpID09IC0xKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdHJpbmcpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAKICAgICBzd2l0Y2ggKFB5VW5pY29kZV9LSU5EKHN0cmluZykpIHsKICAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgpAQCAtMTAwMDMsNyArMTAyMzIsNiBAQAogICAgICAgICBhc3NlcnQoMCk7CiAgICAgICAgIGxpc3QgPSAwOwogICAgIH0KLSAgICBQeV9ERUNSRUYoc3RyaW5nKTsKICAgICByZXR1cm4gbGlzdDsKIH0KIApAQCAtMTA1NjQsMjggKzEwNzkyLDI3IEBACiB9CiAKIAotLyogQXJndW1lbnQgY29udmVydGVyLiAgQ29lcmNlcyB0byBhIHNpbmdsZSB1bmljb2RlIGNoYXJhY3RlciAqLworLyogQXJndW1lbnQgY29udmVydGVyLiBBY2NlcHRzIGEgc2luZ2xlIFVuaWNvZGUgY2hhcmFjdGVyLiAqLwogCiBzdGF0aWMgaW50CiBjb252ZXJ0X3VjKFB5T2JqZWN0ICpvYmosIHZvaWQgKmFkZHIpCiB7CiAgICAgUHlfVUNTNCAqZmlsbGNoYXJsb2MgPSAoUHlfVUNTNCAqKWFkZHI7Ci0gICAgUHlPYmplY3QgKnVuaW9iajsKIAotICAgIHVuaW9iaiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KG9iaik7Ci0gICAgaWYgKHVuaW9iaiA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiVGhlIGZpbGwgY2hhcmFjdGVyIGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gVW5pY29kZSIpOworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKG9iaikpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJUaGUgZmlsbCBjaGFyYWN0ZXIgbXVzdCBiZSBhIHVuaWNvZGUgY2hhcmFjdGVyLCAiCisgICAgICAgICAgICAgICAgICAgICAibm90ICUuMTAwcyIsIFB5X1RZUEUob2JqKS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pb2JqKSAhPSAxKSB7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShvYmopIDwgMCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKG9iaikgIT0gMSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBmaWxsIGNoYXJhY3RlciBtdXN0IGJlIGV4YWN0bHkgb25lIGNoYXJhY3RlciBsb25nIik7Ci0gICAgICAgIFB5X0RFQ1JFRih1bmlvYmopOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgKmZpbGxjaGFybG9jID0gUHlVbmljb2RlX1JFQURfQ0hBUih1bmlvYmosIDApOwotICAgIFB5X0RFQ1JFRih1bmlvYmopOworICAgICpmaWxsY2hhcmxvYyA9IFB5VW5pY29kZV9SRUFEX0NIQVIob2JqLCAwKTsKICAgICByZXR1cm4gMTsKIH0KIApAQCAtMTA3MzUsNyArMTA5NjIsNyBAQAogI3VuZGVmIENPTVBBUkUKIH0KIAotUHlfTE9DQUwoaW50KQorc3RhdGljIGludAogdW5pY29kZV9jb21wYXJlX2VxKFB5T2JqZWN0ICpzdHIxLCBQeU9iamVjdCAqc3RyMikKIHsKICAgICBpbnQga2luZDsKQEAgLTEwNzc5LDE1ICsxMTAwNiw2IEBACiB9CiAKIGludAotX1B5VW5pY29kZV9Db21wYXJlV2l0aElkKFB5T2JqZWN0ICpsZWZ0LCBfUHlfSWRlbnRpZmllciAqcmlnaHQpCi17Ci0gICAgUHlPYmplY3QgKnJpZ2h0X3N0ciA9IF9QeVVuaWNvZGVfRnJvbUlkKHJpZ2h0KTsgICAvKiBib3Jyb3dlZCAqLwotICAgIGlmIChyaWdodF9zdHIgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIHJldHVybiBQeVVuaWNvZGVfQ29tcGFyZShsZWZ0LCByaWdodF9zdHIpOwotfQotCi1pbnQKIFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKFB5T2JqZWN0KiB1bmksIGNvbnN0IGNoYXIqIHN0cikKIHsKICAgICBQeV9zc2l6ZV90IGk7CkBAIC0xMDg3MSw2ICsxMTA4OSwxMiBAQAogewogICAgIHNpemVfdCBsZW47CiAgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ0hFQ0sodW5pY29kZSkpOworICAgIGFzc2VydChzdHIpOworI2lmbmRlZiBOREVCVUcKKyAgICBmb3IgKGNvbnN0IGNoYXIgKnAgPSBzdHI7ICpwOyBwKyspIHsKKyAgICAgICAgYXNzZXJ0KCh1bnNpZ25lZCBjaGFyKSpwIDwgMTI4KTsKKyAgICB9CisjZW5kaWYKICAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKSB7CiAgICAgICAgIC8qIE1lbW9yeSBlcnJvciBvciBiYWQgZGF0YSAqLwogICAgICAgICBQeUVycl9DbGVhcigpOwpAQCAtMTA4OTEsNiArMTExMTUsMTEgQEAKIAogICAgIGFzc2VydChfUHlVbmljb2RlX0NIRUNLKGxlZnQpKTsKICAgICBhc3NlcnQocmlnaHQtPnN0cmluZyk7CisjaWZuZGVmIE5ERUJVRworICAgIGZvciAoY29uc3QgY2hhciAqcCA9IHJpZ2h0LT5zdHJpbmc7ICpwOyBwKyspIHsKKyAgICAgICAgYXNzZXJ0KCh1bnNpZ25lZCBjaGFyKSpwIDwgMTI4KTsKKyAgICB9CisjZW5kaWYKIAogICAgIGlmIChQeVVuaWNvZGVfUkVBRFkobGVmdCkgPT0gLTEpIHsKICAgICAgICAgLyogbWVtb3J5IGVycm9yIG9yIGJhZCBkYXRhICovCkBAIC0xMDk4OCw1OSArMTEyMTcsNDkgQEAKIH0KIAogaW50Ci1QeVVuaWNvZGVfQ29udGFpbnMoUHlPYmplY3QgKmNvbnRhaW5lciwgUHlPYmplY3QgKmVsZW1lbnQpCitfUHlVbmljb2RlX0VRKFB5T2JqZWN0ICphYSwgUHlPYmplY3QgKmJiKQogewotICAgIFB5T2JqZWN0ICpzdHIsICpzdWI7CisgICAgcmV0dXJuIHVuaWNvZGVfZXEoYWEsIGJiKTsKK30KKworaW50CitQeVVuaWNvZGVfQ29udGFpbnMoUHlPYmplY3QgKnN0ciwgUHlPYmplY3QgKnN1YnN0cikKK3sKICAgICBpbnQga2luZDEsIGtpbmQyOwogICAgIHZvaWQgKmJ1ZjEsICpidWYyOwogICAgIFB5X3NzaXplX3QgbGVuMSwgbGVuMjsKICAgICBpbnQgcmVzdWx0OwogCi0gICAgLyogQ29lcmNlIHRoZSB0d28gYXJndW1lbnRzICovCi0gICAgc3ViID0gUHlVbmljb2RlX0Zyb21PYmplY3QoZWxlbWVudCk7Ci0gICAgaWYgKCFzdWIpIHsKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhzdWJzdHIpKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiJ2luIDxzdHJpbmc+JyByZXF1aXJlcyBzdHJpbmcgYXMgbGVmdCBvcGVyYW5kLCBub3QgJXMiLAotICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAiJ2luIDxzdHJpbmc+JyByZXF1aXJlcyBzdHJpbmcgYXMgbGVmdCBvcGVyYW5kLCBub3QgJS4xMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoc3Vic3RyKS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0KLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChjb250YWluZXIpOwotICAgIGlmICghc3RyKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdWIpOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3Vic3RyKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KKyAgICBpZiAoZW5zdXJlX3VuaWNvZGUoc3RyKSA8IDApCisgICAgICAgIHJldHVybiAtMTsKIAogICAgIGtpbmQxID0gUHlVbmljb2RlX0tJTkQoc3RyKTsKLSAgICBraW5kMiA9IFB5VW5pY29kZV9LSU5EKHN1Yik7Ci0gICAgaWYgKGtpbmQxIDwga2luZDIpIHsKLSAgICAgICAgUHlfREVDUkVGKHN1Yik7Ci0gICAgICAgIFB5X0RFQ1JFRihzdHIpOworICAgIGtpbmQyID0gUHlVbmljb2RlX0tJTkQoc3Vic3RyKTsKKyAgICBpZiAoa2luZDEgPCBraW5kMikKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQogICAgIGxlbjEgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpOwotICAgIGxlbjIgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdWIpOwotICAgIGlmIChsZW4xIDwgbGVuMikgewotICAgICAgICBQeV9ERUNSRUYoc3ViKTsKLSAgICAgICAgUHlfREVDUkVGKHN0cik7CisgICAgbGVuMiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN1YnN0cik7CisgICAgaWYgKGxlbjEgPCBsZW4yKQogICAgICAgICByZXR1cm4gMDsKLSAgICB9CiAgICAgYnVmMSA9IFB5VW5pY29kZV9EQVRBKHN0cik7Ci0gICAgYnVmMiA9IFB5VW5pY29kZV9EQVRBKHN1Yik7CisgICAgYnVmMiA9IFB5VW5pY29kZV9EQVRBKHN1YnN0cik7CiAgICAgaWYgKGxlbjIgPT0gMSkgewogICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZDIsIGJ1ZjIsIDApOwogICAgICAgICByZXN1bHQgPSBmaW5kY2hhcigoY29uc3QgY2hhciAqKWJ1ZjEsIGtpbmQxLCBsZW4xLCBjaCwgMSkgIT0gLTE7Ci0gICAgICAgIFB5X0RFQ1JFRihzdWIpOwotICAgICAgICBQeV9ERUNSRUYoc3RyKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgaWYgKGtpbmQyICE9IGtpbmQxKSB7Ci0gICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzdWIsIGtpbmQxKTsKLSAgICAgICAgaWYgKCFidWYyKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoc3ViKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihzdHIpOworICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc3Vic3RyLCBraW5kMSk7CisgICAgICAgIGlmICghYnVmMikKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQogICAgIH0KIAogICAgIHN3aXRjaCAoa2luZDEpIHsKQEAgLTExMDU4LDkgKzExMjc3LDYgQEAKICAgICAgICAgYXNzZXJ0KDApOwogICAgIH0KIAotICAgIFB5X0RFQ1JFRihzdHIpOwotICAgIFB5X0RFQ1JFRihzdWIpOwotCiAgICAgaWYgKGtpbmQyICE9IGtpbmQxKQogICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOwogCkBAIC0xMTA3Miw1NiArMTEyODgsNDAgQEAKIFB5T2JqZWN0ICoKIFB5VW5pY29kZV9Db25jYXQoUHlPYmplY3QgKmxlZnQsIFB5T2JqZWN0ICpyaWdodCkKIHsKLSAgICBQeU9iamVjdCAqdSA9IE5VTEwsICp2ID0gTlVMTCwgKnc7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBQeV9VQ1M0IG1heGNoYXIsIG1heGNoYXIyOwotICAgIFB5X3NzaXplX3QgdV9sZW4sIHZfbGVuLCBuZXdfbGVuOworICAgIFB5X3NzaXplX3QgbGVmdF9sZW4sIHJpZ2h0X2xlbiwgbmV3X2xlbjsKIAotICAgIC8qIENvZXJjZSB0aGUgdHdvIGFyZ3VtZW50cyAqLwotICAgIHUgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChsZWZ0KTsKLSAgICBpZiAodSA9PSBOVUxMKQotICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgdiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHJpZ2h0KTsKLSAgICBpZiAodiA9PSBOVUxMKQotICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgaWYgKGVuc3VyZV91bmljb2RlKGxlZnQpIDwgMCB8fCBlbnN1cmVfdW5pY29kZShyaWdodCkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qIFNob3J0Y3V0cyAqLwotICAgIGlmICh2ID09IHVuaWNvZGVfZW1wdHkpIHsKLSAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICByZXR1cm4gdTsKLSAgICB9Ci0gICAgaWYgKHUgPT0gdW5pY29kZV9lbXB0eSkgewotICAgICAgICBQeV9ERUNSRUYodSk7Ci0gICAgICAgIHJldHVybiB2OwotICAgIH0KKyAgICBpZiAobGVmdCA9PSB1bmljb2RlX2VtcHR5KQorICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21PYmplY3QocmlnaHQpOworICAgIGlmIChyaWdodCA9PSB1bmljb2RlX2VtcHR5KQorICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21PYmplY3QobGVmdCk7CiAKLSAgICB1X2xlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHUpOwotICAgIHZfbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodik7Ci0gICAgaWYgKHVfbGVuID4gUFlfU1NJWkVfVF9NQVggLSB2X2xlbikgeworICAgIGxlZnRfbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgobGVmdCk7CisgICAgcmlnaHRfbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocmlnaHQpOworICAgIGlmIChsZWZ0X2xlbiA+IFBZX1NTSVpFX1RfTUFYIC0gcmlnaHRfbGVuKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgInN0cmluZ3MgYXJlIHRvbyBsYXJnZSB0byBjb25jYXQiKTsKLSAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgbmV3X2xlbiA9IHVfbGVuICsgdl9sZW47CisgICAgbmV3X2xlbiA9IGxlZnRfbGVuICsgcmlnaHRfbGVuOwogCi0gICAgbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh1KTsKLSAgICBtYXhjaGFyMiA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh2KTsKKyAgICBtYXhjaGFyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKGxlZnQpOworICAgIG1heGNoYXIyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHJpZ2h0KTsKICAgICBtYXhjaGFyID0gUHlfTUFYKG1heGNoYXIsIG1heGNoYXIyKTsKIAogICAgIC8qIENvbmNhdCB0aGUgdHdvIFVuaWNvZGUgc3RyaW5ncyAqLwotICAgIHcgPSBQeVVuaWNvZGVfTmV3KG5ld19sZW4sIG1heGNoYXIpOwotICAgIGlmICh3ID09IE5VTEwpCi0gICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyh3LCAwLCB1LCAwLCB1X2xlbik7Ci0gICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnModywgdV9sZW4sIHYsIDAsIHZfbGVuKTsKLSAgICBQeV9ERUNSRUYodSk7Ci0gICAgUHlfREVDUkVGKHYpOwotICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kodywgMSkpOwotICAgIHJldHVybiB3OwotCi0gIG9uRXJyb3I6Ci0gICAgUHlfWERFQ1JFRih1KTsKLSAgICBQeV9YREVDUkVGKHYpOwotICAgIHJldHVybiBOVUxMOworICAgIHJlc3VsdCA9IFB5VW5pY29kZV9OZXcobmV3X2xlbiwgbWF4Y2hhcik7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyhyZXN1bHQsIDAsIGxlZnQsIDAsIGxlZnRfbGVuKTsKKyAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyhyZXN1bHQsIGxlZnRfbGVuLCByaWdodCwgMCwgcmlnaHRfbGVuKTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJlc3VsdCwgMSkpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHZvaWQKQEAgLTExMjEyLDYgKzExNDEyLDI1IEBACiAgICAgUHlfWERFQ1JFRihyaWdodCk7CiB9CiAKKy8qCitXcmFwcyBzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kcygpIGFuZCBhZGRpdGlvbmFsbHkgZW5zdXJlcyB0aGF0IHRoZQorZmlyc3QgYXJndW1lbnQgaXMgYSB1bmljb2RlIG9iamVjdC4KKyovCisKK3N0YXRpYyBpbmxpbmUgaW50CitwYXJzZV9hcmdzX2ZpbmRzX3VuaWNvZGUoY29uc3QgY2hhciAqIGZ1bmN0aW9uX25hbWUsIFB5T2JqZWN0ICphcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqc3Vic3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKnN0YXJ0LCBQeV9zc2l6ZV90ICplbmQpCit7CisgICAgaWYoc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHMoZnVuY3Rpb25fbmFtZSwgYXJncywgc3Vic3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCBlbmQpKSB7CisgICAgICAgIGlmIChlbnN1cmVfdW5pY29kZSgqc3Vic3RyaW5nKSA8IDApCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIHJldHVybiAwOworfQorCiBQeURvY19TVFJWQVIoY291bnRfX2RvY19fLAogICAgICAgICAgICAgICJTLmNvdW50KHN1YlssIHN0YXJ0WywgZW5kXV0pIC0+IGludFxuXAogXG5cCkBAIC0xMTIzMCwzMSArMTE0NDksMjYgQEAKICAgICB2b2lkICpidWYxLCAqYnVmMjsKICAgICBQeV9zc2l6ZV90IGxlbjEsIGxlbjIsIGlyZXN1bHQ7CiAKLSAgICBpZiAoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzX3VuaWNvZGUoImNvdW50IiwgYXJncywgJnN1YnN0cmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0LCAmZW5kKSkKKyAgICBpZiAoIXBhcnNlX2FyZ3NfZmluZHNfdW5pY29kZSgiY291bnQiLCBhcmdzLCAmc3Vic3RyaW5nLCAmc3RhcnQsICZlbmQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGtpbmQxID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CiAgICAga2luZDIgPSBQeVVuaWNvZGVfS0lORChzdWJzdHJpbmcpOwotICAgIGlmIChraW5kMSA8IGtpbmQyKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOworICAgIGlmIChraW5kMSA8IGtpbmQyKQogICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKDApOwotICAgIH0KKwogICAgIGxlbjEgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKICAgICBsZW4yID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3Vic3RyaW5nKTsKICAgICBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBsZW4xKTsKLSAgICBpZiAoZW5kIC0gc3RhcnQgPCBsZW4yKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOworICAgIGlmIChlbmQgLSBzdGFydCA8IGxlbjIpCiAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoMCk7Ci0gICAgfQorCiAgICAgYnVmMSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOwogICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzdWJzdHJpbmcpOwogICAgIGlmIChraW5kMiAhPSBraW5kMSkgewogICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc3Vic3RyaW5nLCBraW5kMSk7Ci0gICAgICAgIGlmICghYnVmMikgewotICAgICAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CisgICAgICAgIGlmICghYnVmMikKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9CiAgICAgfQogICAgIHN3aXRjaCAoa2luZDEpIHsKICAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgpAQCAtMTEyODQsOCArMTE0OTgsNiBAQAogICAgIGlmIChraW5kMiAhPSBraW5kMSkKICAgICAgICAgUHlNZW1fRnJlZShidWYyKTsKIAotICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOwotCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTE0MTksMjIgKzExNjMxLDEzIEBACiAgICAgUHlfc3NpemVfdCBlbmQgPSAwOwogICAgIFB5X3NzaXplX3QgcmVzdWx0OwogCi0gICAgaWYgKCFzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kc191bmljb2RlKCJmaW5kIiwgYXJncywgJnN1YnN0cmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0LCAmZW5kKSkKKyAgICBpZiAoIXBhcnNlX2FyZ3NfZmluZHNfdW5pY29kZSgiZmluZCIsIGFyZ3MsICZzdWJzdHJpbmcsICZzdGFydCwgJmVuZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkgewotICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdWJzdHJpbmcpID09IC0xKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAKLSAgICByZXN1bHQgPSBhbnlfZmluZF9zbGljZSgxLCBzZWxmLCBzdWJzdHJpbmcsIHN0YXJ0LCBlbmQpOwotCi0gICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CisgICAgcmVzdWx0ID0gYW55X2ZpbmRfc2xpY2Uoc2VsZiwgc3Vic3RyaW5nLCBzdGFydCwgZW5kLCAxKTsKIAogICAgIGlmIChyZXN1bHQgPT0gLTIpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTE1MDcsMjIgKzExNzEwLDEzIEBACiAgICAgUHlfc3NpemVfdCBzdGFydCA9IDA7CiAgICAgUHlfc3NpemVfdCBlbmQgPSAwOwogCi0gICAgaWYgKCFzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kc191bmljb2RlKCJpbmRleCIsIGFyZ3MsICZzdWJzdHJpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydCwgJmVuZCkpCisgICAgaWYgKCFwYXJzZV9hcmdzX2ZpbmRzX3VuaWNvZGUoImluZGV4IiwgYXJncywgJnN1YnN0cmluZywgJnN0YXJ0LCAmZW5kKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN1YnN0cmluZykgPT0gLTEpIHsKLSAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KIAotICAgIHJlc3VsdCA9IGFueV9maW5kX3NsaWNlKDEsIHNlbGYsIHN1YnN0cmluZywgc3RhcnQsIGVuZCk7Ci0KLSAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKKyAgICByZXN1bHQgPSBhbnlfZmluZF9zbGljZShzZWxmLCBzdWJzdHJpbmcsIHN0YXJ0LCBlbmQsIDEpOwogCiAgICAgaWYgKHJlc3VsdCA9PSAtMikKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMjAzNiw3ICsxMjIzMCw3IEBACiAjZGVmaW5lIEJPVEhTVFJJUCAyCiAKIC8qIEFycmF5cyBpbmRleGVkIGJ5IGFib3ZlICovCi1zdGF0aWMgY29uc3QgY2hhciAqc3RyaXBmb3JtYXRbXSA9IHsifE86bHN0cmlwIiwgInxPOnJzdHJpcCIsICJ8TzpzdHJpcCJ9Oworc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBzdHJpcGZvcm1hdFtdID0geyJ8Tzpsc3RyaXAiLCAifE86cnN0cmlwIiwgInxPOnN0cmlwIn07CiAKICNkZWZpbmUgU1RSSVBOQU1FKGkpIChzdHJpcGZvcm1hdFtpXSszKQogCkBAIC0xMjMxNywxMSArMTI1MTEsMTEgQEAKICAgICAgICAgUHlfc3NpemVfdCBkb25lID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKTsKICAgICAgICAgY29uc3QgUHlfc3NpemVfdCBjaGFyX3NpemUgPSBQeVVuaWNvZGVfS0lORChzdHIpOwogICAgICAgICBjaGFyICp0byA9IChjaGFyICopIFB5VW5pY29kZV9EQVRBKHUpOwotICAgICAgICBQeV9NRU1DUFkodG8sIFB5VW5pY29kZV9EQVRBKHN0ciksCisgICAgICAgIG1lbWNweSh0bywgUHlVbmljb2RlX0RBVEEoc3RyKSwKICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikgKiBjaGFyX3NpemUpOwogICAgICAgICB3aGlsZSAoZG9uZSA8IG5jaGFycykgewogICAgICAgICAgICAgbiA9IChkb25lIDw9IG5jaGFycy1kb25lKSA/IGRvbmUgOiBuY2hhcnMtZG9uZTsKLSAgICAgICAgICAgIFB5X01FTUNQWSh0byArIChkb25lICogY2hhcl9zaXplKSwgdG8sIG4gKiBjaGFyX3NpemUpOworICAgICAgICAgICAgbWVtY3B5KHRvICsgKGRvbmUgKiBjaGFyX3NpemUpLCB0bywgbiAqIGNoYXJfc2l6ZSk7CiAgICAgICAgICAgICBkb25lICs9IG47CiAgICAgICAgIH0KICAgICB9CkBAIC0xMjMzMSw0MCArMTI1MjUsMTUgQEAKIH0KIAogUHlPYmplY3QgKgotUHlVbmljb2RlX1JlcGxhY2UoUHlPYmplY3QgKm9iaiwKLSAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdWJvYmosCi0gICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcmVwbG9iaiwKK1B5VW5pY29kZV9SZXBsYWNlKFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3Vic3RyLAorICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnJlcGxzdHIsCiAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQogewotICAgIFB5T2JqZWN0ICpzZWxmOwotICAgIFB5T2JqZWN0ICpzdHIxOwotICAgIFB5T2JqZWN0ICpzdHIyOwotICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICBzZWxmID0gUHlVbmljb2RlX0Zyb21PYmplY3Qob2JqKTsKLSAgICBpZiAoc2VsZiA9PSBOVUxMKQorICAgIGlmIChlbnN1cmVfdW5pY29kZShzdHIpIDwgMCB8fCBlbnN1cmVfdW5pY29kZShzdWJzdHIpIDwgMCB8fAorICAgICAgICAgICAgZW5zdXJlX3VuaWNvZGUocmVwbHN0cikgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBzdHIxID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3Vib2JqKTsKLSAgICBpZiAoc3RyMSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHN0cjIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChyZXBsb2JqKTsKLSAgICBpZiAoc3RyMiA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKLSAgICAgICAgUHlfREVDUkVGKHN0cjEpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSB8fAotICAgICAgICBQeVVuaWNvZGVfUkVBRFkoc3RyMSkgPT0gLTEgfHwKLSAgICAgICAgUHlVbmljb2RlX1JFQURZKHN0cjIpID09IC0xKQotICAgICAgICByZXN1bHQgPSBOVUxMOwotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gcmVwbGFjZShzZWxmLCBzdHIxLCBzdHIyLCBtYXhjb3VudCk7Ci0gICAgUHlfREVDUkVGKHNlbGYpOwotICAgIFB5X0RFQ1JFRihzdHIxKTsKLSAgICBQeV9ERUNSRUYoc3RyMik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gcmVwbGFjZShzdHIsIHN1YnN0ciwgcmVwbHN0ciwgbWF4Y291bnQpOwogfQogCiBQeURvY19TVFJWQVIocmVwbGFjZV9fZG9jX18sCkBAIC0xMjM4MCwyOCArMTI1NDksMTIgQEAKICAgICBQeU9iamVjdCAqc3RyMTsKICAgICBQeU9iamVjdCAqc3RyMjsKICAgICBQeV9zc2l6ZV90IG1heGNvdW50ID0gLTE7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT098bjpyZXBsYWNlIiwgJnN0cjEsICZzdHIyLCAmbWF4Y291bnQpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVVV8bjpyZXBsYWNlIiwgJnN0cjEsICZzdHIyLCAmbWF4Y291bnQpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBzdHIxID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyMSk7Ci0gICAgaWYgKHN0cjEgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgc3RyMiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cjIpOwotICAgIGlmIChzdHIyID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKHN0cjEpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdHIxKSA9PSAtMSB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyMikgPT0gLTEpCi0gICAgICAgIHJlc3VsdCA9IE5VTEw7Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQgPSByZXBsYWNlKHNlbGYsIHN0cjEsIHN0cjIsIG1heGNvdW50KTsKLQotICAgIFB5X0RFQ1JFRihzdHIxKTsKLSAgICBQeV9ERUNSRUYoc3RyMik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gcmVwbGFjZShzZWxmLCBzdHIxLCBzdHIyLCBtYXhjb3VudCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xMjU4NiwyMiArMTI3MzksMTMgQEAKICAgICBQeV9zc2l6ZV90IGVuZCA9IDA7CiAgICAgUHlfc3NpemVfdCByZXN1bHQ7CiAKLSAgICBpZiAoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzX3VuaWNvZGUoInJmaW5kIiwgYXJncywgJnN1YnN0cmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0LCAmZW5kKSkKKyAgICBpZiAoIXBhcnNlX2FyZ3NfZmluZHNfdW5pY29kZSgicmZpbmQiLCBhcmdzLCAmc3Vic3RyaW5nLCAmc3RhcnQsICZlbmQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpIHsKLSAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3Vic3RyaW5nKSA9PSAtMSkgewotICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogCi0gICAgcmVzdWx0ID0gYW55X2ZpbmRfc2xpY2UoLTEsIHNlbGYsIHN1YnN0cmluZywgc3RhcnQsIGVuZCk7Ci0KLSAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKKyAgICByZXN1bHQgPSBhbnlfZmluZF9zbGljZShzZWxmLCBzdWJzdHJpbmcsIHN0YXJ0LCBlbmQsIC0xKTsKIAogICAgIGlmIChyZXN1bHQgPT0gLTIpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTI2MjMsMjIgKzEyNzY3LDEzIEBACiAgICAgUHlfc3NpemVfdCBlbmQgPSAwOwogICAgIFB5X3NzaXplX3QgcmVzdWx0OwogCi0gICAgaWYgKCFzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kc191bmljb2RlKCJyaW5kZXgiLCBhcmdzLCAmc3Vic3RyaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnQsICZlbmQpKQorICAgIGlmICghcGFyc2VfYXJnc19maW5kc191bmljb2RlKCJyaW5kZXgiLCBhcmdzLCAmc3Vic3RyaW5nLCAmc3RhcnQsICZlbmQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpIHsKLSAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3Vic3RyaW5nKSA9PSAtMSkgewotICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogCi0gICAgcmVzdWx0ID0gYW55X2ZpbmRfc2xpY2UoLTEsIHNlbGYsIHN1YnN0cmluZywgc3RhcnQsIGVuZCk7Ci0KLSAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKKyAgICByZXN1bHQgPSBhbnlfZmluZF9zbGljZShzZWxmLCBzdWJzdHJpbmcsIHN0YXJ0LCBlbmQsIC0xKTsKIAogICAgIGlmIChyZXN1bHQgPT0gLTIpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTI2NzgsMjQgKzEyODEzLDEwIEBACiBQeU9iamVjdCAqCiBQeVVuaWNvZGVfU3BsaXQoUHlPYmplY3QgKnMsIFB5T2JqZWN0ICpzZXAsIFB5X3NzaXplX3QgbWF4c3BsaXQpCiB7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKLQotICAgIHMgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzKTsKLSAgICBpZiAocyA9PSBOVUxMKQorICAgIGlmIChlbnN1cmVfdW5pY29kZShzKSA8IDAgfHwgKHNlcCAhPSBOVUxMICYmIGVuc3VyZV91bmljb2RlKHNlcCkgPCAwKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKHNlcCAhPSBOVUxMKSB7Ci0gICAgICAgIHNlcCA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHNlcCk7Ci0gICAgICAgIGlmIChzZXAgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfREVDUkVGKHMpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICB9CiAKLSAgICByZXN1bHQgPSBzcGxpdChzLCBzZXAsIG1heHNwbGl0KTsKLQotICAgIFB5X0RFQ1JFRihzKTsKLSAgICBQeV9YREVDUkVGKHNlcCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gc3BsaXQocywgc2VwLCBtYXhzcGxpdCk7CiB9CiAKIFB5RG9jX1NUUlZBUihzcGxpdF9fZG9jX18sCkBAIC0xMjcyMCwzNSArMTI4NDEsMjYgQEAKIAogICAgIGlmIChzdWJzdHJpbmcgPT0gUHlfTm9uZSkKICAgICAgICAgcmV0dXJuIHNwbGl0KHNlbGYsIE5VTEwsIG1heGNvdW50KTsKLSAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2soc3Vic3RyaW5nKSkKKworICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soc3Vic3RyaW5nKSkKICAgICAgICAgcmV0dXJuIHNwbGl0KHNlbGYsIHN1YnN0cmluZywgbWF4Y291bnQpOwotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9TcGxpdChzZWxmLCBzdWJzdHJpbmcsIG1heGNvdW50KTsKKworICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICJtdXN0IGJlIHN0ciBvciBOb25lLCBub3QgJS4xMDBzIiwKKyAgICAgICAgICAgICAgICAgUHlfVFlQRShzdWJzdHJpbmcpLT50cF9uYW1lKTsKKyAgICByZXR1cm4gTlVMTDsKIH0KIAogUHlPYmplY3QgKgotUHlVbmljb2RlX1BhcnRpdGlvbihQeU9iamVjdCAqc3RyX2luLCBQeU9iamVjdCAqc2VwX2luKQorUHlVbmljb2RlX1BhcnRpdGlvbihQeU9iamVjdCAqc3RyX29iaiwgUHlPYmplY3QgKnNlcF9vYmopCiB7Ci0gICAgUHlPYmplY3QqIHN0cl9vYmo7Ci0gICAgUHlPYmplY3QqIHNlcF9vYmo7CiAgICAgUHlPYmplY3QqIG91dDsKICAgICBpbnQga2luZDEsIGtpbmQyOwogICAgIHZvaWQgKmJ1ZjEsICpidWYyOwogICAgIFB5X3NzaXplX3QgbGVuMSwgbGVuMjsKIAotICAgIHN0cl9vYmogPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHJfaW4pOwotICAgIGlmICghc3RyX29iaikKKyAgICBpZiAoZW5zdXJlX3VuaWNvZGUoc3RyX29iaikgPCAwIHx8IGVuc3VyZV91bmljb2RlKHNlcF9vYmopIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgc2VwX29iaiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHNlcF9pbik7Ci0gICAgaWYgKCFzZXBfb2JqKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VwX29iaikgPT0gLTEgfHwgUHlVbmljb2RlX1JFQURZKHN0cl9vYmopID09IC0xKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzZXBfb2JqKTsKLSAgICAgICAgUHlfREVDUkVGKHN0cl9vYmopOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAKICAgICBraW5kMSA9IFB5VW5pY29kZV9LSU5EKHN0cl9vYmopOwogICAgIGtpbmQyID0gUHlVbmljb2RlX0tJTkQoc2VwX29iaik7CkBAIC0xMjc2Miw4ICsxMjg3NCw2IEBACiAgICAgICAgICAgICBvdXQgPSBQeVR1cGxlX1BhY2soMywgc3RyX29iaiwgdW5pY29kZV9lbXB0eSwgdW5pY29kZV9lbXB0eSk7CiAgICAgICAgICAgICBQeV9ERUNSRUYodW5pY29kZV9lbXB0eSk7CiAgICAgICAgIH0KLSAgICAgICAgUHlfREVDUkVGKHNlcF9vYmopOwotICAgICAgICBQeV9ERUNSRUYoc3RyX29iaik7CiAgICAgICAgIHJldHVybiBvdXQ7CiAgICAgfQogICAgIGJ1ZjEgPSBQeVVuaWNvZGVfREFUQShzdHJfb2JqKTsKQEAgLTEyNzcxLDcgKzEyODgxLDcgQEAKICAgICBpZiAoa2luZDIgIT0ga2luZDEpIHsKICAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHNlcF9vYmosIGtpbmQxKTsKICAgICAgICAgaWYgKCFidWYyKQotICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgc3dpdGNoIChraW5kMSkgewpAQCAtMTI3OTIsMzkgKzEyOTAyLDIzIEBACiAgICAgICAgIG91dCA9IDA7CiAgICAgfQogCi0gICAgUHlfREVDUkVGKHNlcF9vYmopOwotICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKICAgICBpZiAoa2luZDIgIT0ga2luZDEpCiAgICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7CiAKICAgICByZXR1cm4gb3V0OwotICBvbkVycm9yOgotICAgIFB5X0RFQ1JFRihzZXBfb2JqKTsKLSAgICBQeV9ERUNSRUYoc3RyX29iaik7Ci0gICAgaWYgKGtpbmQyICE9IGtpbmQxICYmIGJ1ZjIpCi0gICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7Ci0gICAgcmV0dXJuIE5VTEw7CiB9CiAKIAogUHlPYmplY3QgKgotUHlVbmljb2RlX1JQYXJ0aXRpb24oUHlPYmplY3QgKnN0cl9pbiwgUHlPYmplY3QgKnNlcF9pbikKK1B5VW5pY29kZV9SUGFydGl0aW9uKFB5T2JqZWN0ICpzdHJfb2JqLCBQeU9iamVjdCAqc2VwX29iaikKIHsKLSAgICBQeU9iamVjdCogc3RyX29iajsKLSAgICBQeU9iamVjdCogc2VwX29iajsKICAgICBQeU9iamVjdCogb3V0OwogICAgIGludCBraW5kMSwga2luZDI7CiAgICAgdm9pZCAqYnVmMSwgKmJ1ZjI7CiAgICAgUHlfc3NpemVfdCBsZW4xLCBsZW4yOwogCi0gICAgc3RyX29iaiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cl9pbik7Ci0gICAgaWYgKCFzdHJfb2JqKQorICAgIGlmIChlbnN1cmVfdW5pY29kZShzdHJfb2JqKSA8IDAgfHwgZW5zdXJlX3VuaWNvZGUoc2VwX29iaikgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBzZXBfb2JqID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc2VwX2luKTsKLSAgICBpZiAoIXNlcF9vYmopIHsKLSAgICAgICAgUHlfREVDUkVGKHN0cl9vYmopOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAKICAgICBraW5kMSA9IFB5VW5pY29kZV9LSU5EKHN0cl9vYmopOwogICAgIGtpbmQyID0gUHlVbmljb2RlX0tJTkQoc2VwX29iaik7CkBAIC0xMjgzOCw4ICsxMjkzMiw2IEBACiAgICAgICAgICAgICBvdXQgPSBQeVR1cGxlX1BhY2soMywgdW5pY29kZV9lbXB0eSwgdW5pY29kZV9lbXB0eSwgc3RyX29iaik7CiAgICAgICAgICAgICBQeV9ERUNSRUYodW5pY29kZV9lbXB0eSk7CiAgICAgICAgIH0KLSAgICAgICAgUHlfREVDUkVGKHNlcF9vYmopOwotICAgICAgICBQeV9ERUNSRUYoc3RyX29iaik7CiAgICAgICAgIHJldHVybiBvdXQ7CiAgICAgfQogICAgIGJ1ZjEgPSBQeVVuaWNvZGVfREFUQShzdHJfb2JqKTsKQEAgLTEyODQ3LDcgKzEyOTM5LDcgQEAKICAgICBpZiAoa2luZDIgIT0ga2luZDEpIHsKICAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHNlcF9vYmosIGtpbmQxKTsKICAgICAgICAgaWYgKCFidWYyKQotICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgc3dpdGNoIChraW5kMSkgewpAQCAtMTI4NjgsMTggKzEyOTYwLDEwIEBACiAgICAgICAgIG91dCA9IDA7CiAgICAgfQogCi0gICAgUHlfREVDUkVGKHNlcF9vYmopOwotICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKICAgICBpZiAoa2luZDIgIT0ga2luZDEpCiAgICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7CiAKICAgICByZXR1cm4gb3V0OwotICBvbkVycm9yOgotICAgIFB5X0RFQ1JFRihzZXBfb2JqKTsKLSAgICBQeV9ERUNSRUYoc3RyX29iaik7Ci0gICAgaWYgKGtpbmQyICE9IGtpbmQxICYmIGJ1ZjIpCi0gICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7Ci0gICAgcmV0dXJuIE5VTEw7CiB9CiAKIFB5RG9jX1NUUlZBUihwYXJ0aXRpb25fX2RvY19fLApAQCAtMTI5MTEsMjQgKzEyOTk1LDEwIEBACiBQeU9iamVjdCAqCiBQeVVuaWNvZGVfUlNwbGl0KFB5T2JqZWN0ICpzLCBQeU9iamVjdCAqc2VwLCBQeV9zc2l6ZV90IG1heHNwbGl0KQogewotICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICBzID0gUHlVbmljb2RlX0Zyb21PYmplY3Qocyk7Ci0gICAgaWYgKHMgPT0gTlVMTCkKKyAgICBpZiAoZW5zdXJlX3VuaWNvZGUocykgPCAwIHx8IChzZXAgIT0gTlVMTCAmJiBlbnN1cmVfdW5pY29kZShzZXApIDwgMCkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChzZXAgIT0gTlVMTCkgewotICAgICAgICBzZXAgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzZXApOwotICAgICAgICBpZiAoc2VwID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihzKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgfQogCi0gICAgcmVzdWx0ID0gcnNwbGl0KHMsIHNlcCwgbWF4c3BsaXQpOwotCi0gICAgUHlfREVDUkVGKHMpOwotICAgIFB5X1hERUNSRUYoc2VwKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiByc3BsaXQocywgc2VwLCBtYXhzcGxpdCk7CiB9CiAKIFB5RG9jX1NUUlZBUihyc3BsaXRfX2RvY19fLApAQCAtMTI5NTMsMTAgKzEzMDIzLDE0IEBACiAKICAgICBpZiAoc3Vic3RyaW5nID09IFB5X05vbmUpCiAgICAgICAgIHJldHVybiByc3BsaXQoc2VsZiwgTlVMTCwgbWF4Y291bnQpOwotICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhzdWJzdHJpbmcpKQorCisgICAgaWYgKFB5VW5pY29kZV9DaGVjayhzdWJzdHJpbmcpKQogICAgICAgICByZXR1cm4gcnNwbGl0KHNlbGYsIHN1YnN0cmluZywgbWF4Y291bnQpOwotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9SU3BsaXQoc2VsZiwgc3Vic3RyaW5nLCBtYXhjb3VudCk7CisKKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAibXVzdCBiZSBzdHIgb3IgTm9uZSwgbm90ICUuMTAwcyIsCisgICAgICAgICAgICAgICAgIFB5X1RZUEUoc3Vic3RyaW5nKS0+dHBfbmFtZSk7CisgICAgcmV0dXJuIE5VTEw7CiB9CiAKIFB5RG9jX1NUUlZBUihzcGxpdGxpbmVzX19kb2NfXywKQEAgLTEzMjM3LDExICsxMzMxMSwxNSBAQAogICAgIGlmIChQeVR1cGxlX0NoZWNrKHN1Ym9iaikpIHsKICAgICAgICAgUHlfc3NpemVfdCBpOwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUHlUdXBsZV9HRVRfU0laRShzdWJvYmopOyBpKyspIHsKLSAgICAgICAgICAgIHN1YnN0cmluZyA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KFB5VHVwbGVfR0VUX0lURU0oc3Vib2JqLCBpKSk7Ci0gICAgICAgICAgICBpZiAoc3Vic3RyaW5nID09IE5VTEwpCisgICAgICAgICAgICBzdWJzdHJpbmcgPSBQeVR1cGxlX0dFVF9JVEVNKHN1Ym9iaiwgaSk7CisgICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhzdWJzdHJpbmcpKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR1cGxlIGZvciBzdGFydHN3aXRoIG11c3Qgb25seSBjb250YWluIHN0ciwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm90ICUuMTAwcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoc3Vic3RyaW5nKS0+dHBfbmFtZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXN1bHQgPSB0YWlsbWF0Y2goc2VsZiwgc3Vic3RyaW5nLCBzdGFydCwgZW5kLCAtMSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gLTEpCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICBpZiAocmVzdWx0KSB7CkBAIC0xMzI1MSwxNSArMTMzMjksMTMgQEAKICAgICAgICAgLyogbm90aGluZyBtYXRjaGVkICovCiAgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKICAgICB9Ci0gICAgc3Vic3RyaW5nID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3Vib2JqKTsKLSAgICBpZiAoc3Vic3RyaW5nID09IE5VTEwpIHsKLSAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJzdGFydHN3aXRoIGZpcnN0IGFyZyBtdXN0IGJlIHN0ciBvciAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgImEgdHVwbGUgb2Ygc3RyLCBub3QgJXMiLCBQeV9UWVBFKHN1Ym9iaiktPnRwX25hbWUpOworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHN1Ym9iaikpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJzdGFydHN3aXRoIGZpcnN0IGFyZyBtdXN0IGJlIHN0ciBvciAiCisgICAgICAgICAgICAgICAgICAgICAiYSB0dXBsZSBvZiBzdHIsIG5vdCAlLjEwMHMiLCBQeV9UWVBFKHN1Ym9iaiktPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcmVzdWx0ID0gdGFpbG1hdGNoKHNlbGYsIHN1YnN0cmluZywgc3RhcnQsIGVuZCwgLTEpOwotICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOworICAgIHJlc3VsdCA9IHRhaWxtYXRjaChzZWxmLCBzdWJvYmosIHN0YXJ0LCBlbmQsIC0xKTsKICAgICBpZiAocmVzdWx0ID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHJlc3VsdCk7CkBAIC0xMzI4OSwxMiArMTMzNjUsMTUgQEAKICAgICBpZiAoUHlUdXBsZV9DaGVjayhzdWJvYmopKSB7CiAgICAgICAgIFB5X3NzaXplX3QgaTsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IFB5VHVwbGVfR0VUX1NJWkUoc3Vib2JqKTsgaSsrKSB7Ci0gICAgICAgICAgICBzdWJzdHJpbmcgPSBQeVVuaWNvZGVfRnJvbU9iamVjdCgKLSAgICAgICAgICAgICAgICBQeVR1cGxlX0dFVF9JVEVNKHN1Ym9iaiwgaSkpOwotICAgICAgICAgICAgaWYgKHN1YnN0cmluZyA9PSBOVUxMKQorICAgICAgICAgICAgc3Vic3RyaW5nID0gUHlUdXBsZV9HRVRfSVRFTShzdWJvYmosIGkpOworICAgICAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soc3Vic3RyaW5nKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0dXBsZSBmb3IgZW5kc3dpdGggbXVzdCBvbmx5IGNvbnRhaW4gc3RyLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub3QgJS4xMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShzdWJzdHJpbmcpLT50cF9uYW1lKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJlc3VsdCA9IHRhaWxtYXRjaChzZWxmLCBzdWJzdHJpbmcsIHN0YXJ0LCBlbmQsICsxKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOwogICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSAtMSkKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIGlmIChyZXN1bHQpIHsKQEAgLTEzMzAzLDYxICsxMzM4Miw2NyBAQAogICAgICAgICB9CiAgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKICAgICB9Ci0gICAgc3Vic3RyaW5nID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3Vib2JqKTsKLSAgICBpZiAoc3Vic3RyaW5nID09IE5VTEwpIHsKLSAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJlbmRzd2l0aCBmaXJzdCBhcmcgbXVzdCBiZSBzdHIgb3IgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJhIHR1cGxlIG9mIHN0ciwgbm90ICVzIiwgUHlfVFlQRShzdWJvYmopLT50cF9uYW1lKTsKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhzdWJvYmopKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiZW5kc3dpdGggZmlyc3QgYXJnIG11c3QgYmUgc3RyIG9yICIKKyAgICAgICAgICAgICAgICAgICAgICJhIHR1cGxlIG9mIHN0ciwgbm90ICUuMTAwcyIsIFB5X1RZUEUoc3Vib2JqKS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICByZXN1bHQgPSB0YWlsbWF0Y2goc2VsZiwgc3Vic3RyaW5nLCBzdGFydCwgZW5kLCArMSk7Ci0gICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CisgICAgcmVzdWx0ID0gdGFpbG1hdGNoKHNlbGYsIHN1Ym9iaiwgc3RhcnQsIGVuZCwgKzEpOwogICAgIGlmIChyZXN1bHQgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcocmVzdWx0KTsKIH0KIAotUHlfTE9DQUxfSU5MSU5FKHZvaWQpCitzdGF0aWMgaW5saW5lIHZvaWQKIF9QeVVuaWNvZGVXcml0ZXJfVXBkYXRlKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlcikKIHsKLSAgICBpZiAoIXdyaXRlci0+cmVhZG9ubHkpCisgICAgd3JpdGVyLT5tYXhjaGFyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHdyaXRlci0+YnVmZmVyKTsKKyAgICB3cml0ZXItPmRhdGEgPSBQeVVuaWNvZGVfREFUQSh3cml0ZXItPmJ1ZmZlcik7CisKKyAgICBpZiAoIXdyaXRlci0+cmVhZG9ubHkpIHsKKyAgICAgICAgd3JpdGVyLT5raW5kID0gUHlVbmljb2RlX0tJTkQod3JpdGVyLT5idWZmZXIpOwogICAgICAgICB3cml0ZXItPnNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh3cml0ZXItPmJ1ZmZlcik7CisgICAgfQogICAgIGVsc2UgeworICAgICAgICAvKiB1c2UgYSB2YWx1ZSBzbWFsbGVyIHRoYW4gUHlVbmljb2RlXzFCWVRFX0tJTkQoKSBzbworICAgICAgICAgICBfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmVLaW5kKCkgd2lsbCBjb3B5IHRoZSBidWZmZXIuICovCisgICAgICAgIHdyaXRlci0+a2luZCA9IFB5VW5pY29kZV9XQ0hBUl9LSU5EOworICAgICAgICBhc3NlcnQod3JpdGVyLT5raW5kIDw9IFB5VW5pY29kZV8xQllURV9LSU5EKTsKKwogICAgICAgICAvKiBDb3B5LW9uLXdyaXRlIG1vZGU6IHNldCBidWZmZXIgc2l6ZSB0byAwIHNvCiAgICAgICAgICAqIF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZSgpIHdpbGwgY29weSAoYW5kIGVubGFyZ2UpIHRoZSBidWZmZXIgb24KICAgICAgICAgICogbmV4dCB3cml0ZS4gKi8KICAgICAgICAgd3JpdGVyLT5zaXplID0gMDsKICAgICB9Ci0gICAgd3JpdGVyLT5tYXhjaGFyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHdyaXRlci0+YnVmZmVyKTsKLSAgICB3cml0ZXItPmRhdGEgPSBQeVVuaWNvZGVfREFUQSh3cml0ZXItPmJ1ZmZlcik7Ci0gICAgd3JpdGVyLT5raW5kID0gUHlVbmljb2RlX0tJTkQod3JpdGVyLT5idWZmZXIpOwogfQogCiB2b2lkCiBfUHlVbmljb2RlV3JpdGVyX0luaXQoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyKQogewogICAgIG1lbXNldCh3cml0ZXIsIDAsIHNpemVvZigqd3JpdGVyKSk7Ci0jaWZkZWYgUHlfREVCVUcKLSAgICB3cml0ZXItPmtpbmQgPSA1OyAgICAvKiBpbnZhbGlkIGtpbmQgKi8KLSNlbmRpZgorCisgICAgLyogQVNDSUkgaXMgdGhlIGJhcmUgbWluaW11bSAqLwogICAgIHdyaXRlci0+bWluX2NoYXIgPSAxMjc7CisKKyAgICAvKiB1c2UgYSB2YWx1ZSBzbWFsbGVyIHRoYW4gUHlVbmljb2RlXzFCWVRFX0tJTkQoKSBzbworICAgICAgIF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZUtpbmQoKSB3aWxsIGNvcHkgdGhlIGJ1ZmZlci4gKi8KKyAgICB3cml0ZXItPmtpbmQgPSBQeVVuaWNvZGVfV0NIQVJfS0lORDsKKyAgICBhc3NlcnQod3JpdGVyLT5raW5kIDw9IFB5VW5pY29kZV8xQllURV9LSU5EKTsKIH0KIAogaW50CiBfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmVJbnRlcm5hbChfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbmd0aCwgUHlfVUNTNCBtYXhjaGFyKQogewotI2lmZGVmIE1TX1dJTkRPV1MKLSAgIC8qIE9uIFdpbmRvd3MsIG92ZXJhbGxvY2F0ZSBieSA1MCUgaXMgdGhlIGJlc3QgZmFjdG9yICovCi0jICBkZWZpbmUgT1ZFUkFMTE9DQVRFX0ZBQ1RPUiAyCi0jZWxzZQotICAgLyogT24gTGludXgsIG92ZXJhbGxvY2F0ZSBieSAyNSUgaXMgdGhlIGJlc3QgZmFjdG9yICovCi0jICBkZWZpbmUgT1ZFUkFMTE9DQVRFX0ZBQ1RPUiA0Ci0jZW5kaWYKICAgICBQeV9zc2l6ZV90IG5ld2xlbjsKICAgICBQeU9iamVjdCAqbmV3YnVmZmVyOwogCi0gICAgYXNzZXJ0KGxlbmd0aCA+IDApOworICAgIGFzc2VydChtYXhjaGFyIDw9IE1BWF9VTklDT0RFKTsKKworICAgIC8qIGVuc3VyZSB0aGF0IHRoZSBfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUgbWFjcm8gd2FzIHVzZWQgKi8KKyAgICBhc3NlcnQoKG1heGNoYXIgPiB3cml0ZXItPm1heGNoYXIgJiYgbGVuZ3RoID49IDApCisgICAgICAgICAgIHx8IGxlbmd0aCA+IDApOwogCiAgICAgaWYgKGxlbmd0aCA+IFBZX1NTSVpFX1RfTUFYIC0gd3JpdGVyLT5wb3MpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKQEAgLTEzNDIzLDkgKzEzNTA4LDMyIEBACiAjdW5kZWYgT1ZFUkFMTE9DQVRFX0ZBQ1RPUgogfQogCi1QeV9MT0NBTF9JTkxJTkUoaW50KQoraW50CitfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmVLaW5kSW50ZXJuYWwoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZCkKK3sKKyAgICBQeV9VQ1M0IG1heGNoYXI7CisKKyAgICAvKiBlbnN1cmUgdGhhdCB0aGUgX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlS2luZCBtYWNybyB3YXMgdXNlZCAqLworICAgIGFzc2VydCh3cml0ZXItPmtpbmQgPCBraW5kKTsKKworICAgIHN3aXRjaCAoa2luZCkKKyAgICB7CisgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDogbWF4Y2hhciA9IDB4ZmY7IGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6IG1heGNoYXIgPSAweGZmZmY7IGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6IG1heGNoYXIgPSAweDEwZmZmZjsgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYXNzZXJ0KDAgJiYgImludmFsaWQga2luZCIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgcmV0dXJuIF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZUludGVybmFsKHdyaXRlciwgMCwgbWF4Y2hhcik7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50CiBfUHlVbmljb2RlV3JpdGVyX1dyaXRlQ2hhcklubGluZShfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsIFB5X1VDUzQgY2gpCiB7CisgICAgYXNzZXJ0KGNoIDw9IE1BWF9VTklDT0RFKTsKICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKHdyaXRlciwgMSwgY2gpIDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIFB5VW5pY29kZV9XUklURSh3cml0ZXItPmtpbmQsIHdyaXRlci0+ZGF0YSwgd3JpdGVyLT5wb3MsIGNoKTsKQEAgLTEzNTM4LDcgKzEzNjQ2LDcgQEAKICAgICAgICAgY29uc3QgUHlfVUNTMSAqc3RyID0gKGNvbnN0IFB5X1VDUzEgKilhc2NpaTsKICAgICAgICAgUHlfVUNTMSAqZGF0YSA9IHdyaXRlci0+ZGF0YTsKIAotICAgICAgICBQeV9NRU1DUFkoZGF0YSArIHdyaXRlci0+cG9zLCBzdHIsIGxlbik7CisgICAgICAgIG1lbWNweShkYXRhICsgd3JpdGVyLT5wb3MsIHN0ciwgbGVuKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CkBAIC0xMzU4MywyNyArMTM2OTEsMzAgQEAKIF9QeVVuaWNvZGVXcml0ZXJfRmluaXNoKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlcikKIHsKICAgICBQeU9iamVjdCAqc3RyOworCiAgICAgaWYgKHdyaXRlci0+cG9zID09IDApIHsKICAgICAgICAgUHlfQ0xFQVIod3JpdGVyLT5idWZmZXIpOwogICAgICAgICBfUHlfUkVUVVJOX1VOSUNPREVfRU1QVFkoKTsKICAgICB9CisKKyAgICBzdHIgPSB3cml0ZXItPmJ1ZmZlcjsKKyAgICB3cml0ZXItPmJ1ZmZlciA9IE5VTEw7CisKICAgICBpZiAod3JpdGVyLT5yZWFkb25seSkgewotICAgICAgICBzdHIgPSB3cml0ZXItPmJ1ZmZlcjsKLSAgICAgICAgd3JpdGVyLT5idWZmZXIgPSBOVUxMOwogICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSA9PSB3cml0ZXItPnBvcyk7CiAgICAgICAgIHJldHVybiBzdHI7CiAgICAgfQotICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSCh3cml0ZXItPmJ1ZmZlcikgIT0gd3JpdGVyLT5wb3MpIHsKLSAgICAgICAgUHlPYmplY3QgKm5ld2J1ZmZlcjsKLSAgICAgICAgbmV3YnVmZmVyID0gcmVzaXplX2NvbXBhY3Qod3JpdGVyLT5idWZmZXIsIHdyaXRlci0+cG9zKTsKLSAgICAgICAgaWYgKG5ld2J1ZmZlciA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9DTEVBUih3cml0ZXItPmJ1ZmZlcik7CisKKyAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSAhPSB3cml0ZXItPnBvcykgeworICAgICAgICBQeU9iamVjdCAqc3RyMjsKKyAgICAgICAgc3RyMiA9IHJlc2l6ZV9jb21wYWN0KHN0ciwgd3JpdGVyLT5wb3MpOworICAgICAgICBpZiAoc3RyMiA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoc3RyKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIHdyaXRlci0+YnVmZmVyID0gbmV3YnVmZmVyOworICAgICAgICBzdHIgPSBzdHIyOwogICAgIH0KLSAgICBzdHIgPSB3cml0ZXItPmJ1ZmZlcjsKLSAgICB3cml0ZXItPmJ1ZmZlciA9IE5VTEw7CisKICAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHN0ciwgMSkpOwogICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdF9yZWFkeShzdHIpOwogfQpAQCAtMTQ3NDQsMTMgKzE0ODU1LDEwIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGN0eC5mbXRzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChmb3JtYXQpOwotICAgIGlmIChjdHguZm10c3RyID09IE5VTEwpCisgICAgaWYgKGVuc3VyZV91bmljb2RlKGZvcm1hdCkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKGN0eC5mbXRzdHIpID09IC0xKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihjdHguZm10c3RyKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQorCisgICAgY3R4LmZtdHN0ciA9IGZvcm1hdDsKICAgICBjdHguZm10ZGF0YSA9IFB5VW5pY29kZV9EQVRBKGN0eC5mbXRzdHIpOwogICAgIGN0eC5mbXRraW5kID0gUHlVbmljb2RlX0tJTkQoY3R4LmZtdHN0cik7CiAgICAgY3R4LmZtdGNudCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGN0eC5mbXRzdHIpOwpAQCAtMTQ4MTAsMTEgKzE0OTE4LDkgQEAKICAgICBpZiAoY3R4LmFyZ3Nfb3duZWQpIHsKICAgICAgICAgUHlfREVDUkVGKGN0eC5hcmdzKTsKICAgICB9Ci0gICAgUHlfREVDUkVGKGN0eC5mbXRzdHIpOwogICAgIHJldHVybiBfUHlVbmljb2RlV3JpdGVyX0ZpbmlzaCgmY3R4LndyaXRlcik7CiAKICAgb25FcnJvcjoKLSAgICBQeV9ERUNSRUYoY3R4LmZtdHN0cik7CiAgICAgX1B5VW5pY29kZVdyaXRlcl9EZWFsbG9jKCZjdHgud3JpdGVyKTsKICAgICBpZiAoY3R4LmFyZ3Nfb3duZWQpIHsKICAgICAgICAgUHlfREVDUkVGKGN0eC5hcmdzKTsKQEAgLTE0OTMxLDcgKzE1MDM3LDcgQEAKICAgICAgICAgX1B5VW5pY29kZV9XU1RSKHNlbGYpID0gKHdjaGFyX3QgKilkYXRhOwogICAgIH0KIAotICAgIFB5X01FTUNQWShkYXRhLCBQeVVuaWNvZGVfREFUQSh1bmljb2RlKSwKKyAgICBtZW1jcHkoZGF0YSwgUHlVbmljb2RlX0RBVEEodW5pY29kZSksCiAgICAgICAgICAgICAgIGtpbmQgKiAobGVuZ3RoICsgMSkpOwogICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3koc2VsZiwgMSkpOwogI2lmZGVmIFB5X0RFQlVHCkBAIC0xNTA5MiwyNiArMTUxOTgsMTggQEAKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KLSAgICAvKiBJdCBtaWdodCBiZSB0aGF0IHRoZSBHZXRJdGVtIGNhbGwgZmFpbHMgZXZlbgotICAgICAgIHRob3VnaCB0aGUga2V5IGlzIHByZXNlbnQgaW4gdGhlIGRpY3Rpb25hcnksCi0gICAgICAgbmFtZWx5IHdoZW4gdGhpcyBoYXBwZW5zIGR1cmluZyBhIHN0YWNrIG92ZXJmbG93LiAqLwogICAgIFB5X0FMTE9XX1JFQ1VSU0lPTgotICAgIHQgPSBQeURpY3RfR2V0SXRlbShpbnRlcm5lZCwgcyk7CisgICAgdCA9IFB5RGljdF9TZXREZWZhdWx0KGludGVybmVkLCBzLCBzKTsKICAgICBQeV9FTkRfQUxMT1dfUkVDVVJTSU9OCi0KLSAgICBpZiAodCkgeworICAgIGlmICh0ID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAodCAhPSBzKSB7CiAgICAgICAgIFB5X0lOQ1JFRih0KTsKICAgICAgICAgUHlfU0VUUkVGKCpwLCB0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLQotICAgIFB5VGhyZWFkU3RhdGVfR0VUKCktPnJlY3Vyc2lvbl9jcml0aWNhbCA9IDE7Ci0gICAgaWYgKFB5RGljdF9TZXRJdGVtKGludGVybmVkLCBzLCBzKSA8IDApIHsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgUHlUaHJlYWRTdGF0ZV9HRVQoKS0+cmVjdXJzaW9uX2NyaXRpY2FsID0gMDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBQeVRocmVhZFN0YXRlX0dFVCgpLT5yZWN1cnNpb25fY3JpdGljYWwgPSAwOwogICAgIC8qIFRoZSB0d28gcmVmZXJlbmNlcyBpbiBpbnRlcm5lZCBhcmUgbm90IGNvdW50ZWQgYnkgcmVmY250LgogICAgICAgIFRoZSBkZWFsbG9jYXRvciB3aWxsIHRha2UgY2FyZSBvZiB0aGlzICovCiAgICAgUHlfUkVGQ05UKHMpIC09IDI7CmRpZmYgLS1naXQgYS9PYmplY3RzL3VuaWNvZGV0eXBlX2RiLmggYi9PYmplY3RzL3VuaWNvZGV0eXBlX2RiLmgKaW5kZXggN2M3ODBiNi4uMzlhZjkyMCAxMDA2NDQKLS0tIGEvT2JqZWN0cy91bmljb2RldHlwZV9kYi5oCisrKyBiL09iamVjdHMvdW5pY29kZXR5cGVfZGIuaApAQCAtMjQ0LDEwOSArMjQ0LDExOSBAQAogICAgIHsxNjc3NzU2MiwgMTc4MjYxMzYsIDE2Nzc3NTYyLCAwLCAwLCAyNjM3N30sCiAgICAgezE2Nzc3NTY1LCAxNzgyNjEzOSwgMTY3Nzc1NjUsIDAsIDAsIDI2Mzc3fSwKICAgICB7MCwgMCwgMCwgMCwgMCwgMzg0MH0sCisgICAgezAsIDAsIDAsIDAsIDAsIDU4ODh9LAorICAgIHsxNjc3NzU2OCwgMTc4MjYxNDIsIDE2Nzc3NTY4LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc3NTcxLCAxNzgyNjE0NSwgMTY3Nzc1NzEsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3Nzc1NzQsIDE3ODI2MTQ4LCAxNjc3NzU3NCwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3NzU3NywgMTc4MjYxNTEsIDE2Nzc3NTc3LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc3NTgwLCAxNzgyNjE1NCwgMTY3Nzc1ODAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3Nzc1ODMsIDE3ODI2MTU3LCAxNjc3NzU4MywgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3NzU4NiwgMTc4MjYxNjAsIDE2Nzc3NTg2LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc3NTg5LCAxNzgyNjE2MywgMTY3Nzc1ODksIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3Nzc1OTIsIDE3ODI2MTY2LCAxNjc3NzU5MiwgMCwgMCwgMjYzNzd9LAogICAgIHszNTMzMiwgMCwgMzUzMzIsIDAsIDAsIDk5OTN9LAogICAgIHszODE0LCAwLCAzODE0LCAwLCAwLCA5OTkzfSwKLSAgICB7MzM1NTQ3ODUsIDE4ODc0NzE4LCAzMzU1NDc4NSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDc5MCwgMTg4NzQ3MjMsIDMzNTU0NzkwLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0Nzk1LCAxODg3NDcyOCwgMzM1NTQ3OTUsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ4MDAsIDE4ODc0NzMzLCAzMzU1NDgwMCwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDgwNSwgMTg4NzQ3MzgsIDMzNTU0ODA1LCAwLCAwLCAyNjM3N30sCi0gICAgezE2Nzc3NTkzLCAxNzgyNjE2NywgMTY3Nzc1OTMsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MTY3Nzc1OTcsIDE4ODc0NzQ2LCAxNjc3NzU5NywgMCwgMCwgMjY0OTd9LAorICAgIHszMzU1NDgxMiwgMTg4NzQ3NDUsIDMzNTU0ODEyLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0ODE3LCAxODg3NDc1MCwgMzM1NTQ4MTcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ4MjIsIDE4ODc0NzU1LCAzMzU1NDgyMiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDgyNywgMTg4NzQ3NjAsIDMzNTU0ODI3LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0ODMyLCAxODg3NDc2NSwgMzM1NTQ4MzIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3Nzc2MjAsIDE3ODI2MTk0LCAxNjc3NzYyMCwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3NzYyNCwgMTg4NzQ3NzMsIDE2Nzc3NjI0LCAwLCAwLCAyNjQ5N30sCiAgICAgezgsIDAsIDgsIDAsIDAsIDk5OTN9LAogICAgIHswLCAtOCwgMCwgMCwgMCwgMTAxMTN9LAotICAgIHszMzU1NDgxNywgMTg4NzQ3NTAsIDMzNTU0ODE3LCAwLCAwLCAyNjM3N30sCi0gICAgezUwMzMyMDM5LCAxOTkyMzMzMSwgNTAzMzIwMzksIDAsIDAsIDI2Mzc3fSwKLSAgICB7NTAzMzIwNDYsIDE5OTIzMzM4LCA1MDMzMjA0NiwgMCwgMCwgMjYzNzd9LAotICAgIHs1MDMzMjA1MywgMTk5MjMzNDUsIDUwMzMyMDUzLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0ODQ0LCAxODg3NDc3NywgMzM1NTQ4NDQsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzIwNjYsIDE5OTIzMzU4LCA1MDMzMjA2NiwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjA3MywgMTk5MjMzNjUsIDUwMzMyMDczLCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyMDgwLCAxOTkyMzM3MiwgNTAzMzIwODAsIDAsIDAsIDI2Mzc3fSwKICAgICB7NzQsIDAsIDc0LCAwLCAwLCA5OTkzfSwKICAgICB7ODYsIDAsIDg2LCAwLCAwLCA5OTkzfSwKICAgICB7MTAwLCAwLCAxMDAsIDAsIDAsIDk5OTN9LAogICAgIHsxMjgsIDAsIDEyOCwgMCwgMCwgOTk5M30sCiAgICAgezExMiwgMCwgMTEyLCAwLCAwLCA5OTkzfSwKICAgICB7MTI2LCAwLCAxMjYsIDAsIDAsIDk5OTN9LAotICAgIHszMzU1NDg0MywgMTg4NzQ3NzYsIDE2Nzc3NjI5LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0ODQ5LCAxODg3NDc4MiwgMTY3Nzc2MzUsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ4NTUsIDE4ODc0Nzg4LCAxNjc3NzY0MSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDg2MSwgMTg4NzQ3OTQsIDE2Nzc3NjQ3LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0ODY3LCAxODg3NDgwMCwgMTY3Nzc2NTMsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ4NzMsIDE4ODc0ODA2LCAxNjc3NzY1OSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDg3OSwgMTg4NzQ4MTIsIDE2Nzc3NjY1LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0ODg1LCAxODg3NDgxOCwgMTY3Nzc2NzEsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ4OTEsIDE4ODc0ODI0LCAxNjc3NzY3NywgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NDg5NywgMTg4NzQ4MzAsIDE2Nzc3NjgzLCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU0OTAzLCAxODg3NDgzNiwgMTY3Nzc2ODksIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTQ5MDksIDE4ODc0ODQyLCAxNjc3NzY5NSwgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NDkxNSwgMTg4NzQ4NDgsIDE2Nzc3NzAxLCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU0OTIxLCAxODg3NDg1NCwgMTY3Nzc3MDcsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTQ5MjcsIDE4ODc0ODYwLCAxNjc3NzcxMywgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NDkzMywgMTg4NzQ4NjYsIDE2Nzc3NzE5LCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU0OTM5LCAxODg3NDg3MiwgMTY3Nzc3MjUsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ5NDUsIDE4ODc0ODc4LCAxNjc3NzczMSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDk1MSwgMTg4NzQ4ODQsIDE2Nzc3NzM3LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0OTU3LCAxODg3NDg5MCwgMTY3Nzc3NDMsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ5NjMsIDE4ODc0ODk2LCAxNjc3Nzc0OSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDk2OSwgMTg4NzQ5MDIsIDE2Nzc3NzU1LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0OTc1LCAxODg3NDkwOCwgMTY3Nzc3NjEsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ5ODEsIDE4ODc0OTE0LCAxNjc3Nzc2NywgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDk4NywgMTg4NzQ5MjAsIDE2Nzc3NzczLCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU0OTkzLCAxODg3NDkyNiwgMTY3Nzc3NzksIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTQ5OTksIDE4ODc0OTMyLCAxNjc3Nzc4NSwgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NTAwNSwgMTg4NzQ5MzgsIDE2Nzc3NzkxLCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU1MDExLCAxODg3NDk0NCwgMTY3Nzc3OTcsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTUwMTcsIDE4ODc0OTUwLCAxNjc3NzgwMywgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NTAyMywgMTg4NzQ5NTYsIDE2Nzc3ODA5LCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU1MDI5LCAxODg3NDk2MiwgMTY3Nzc4MTUsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTUwMzUsIDE4ODc0OTY4LCAxNjc3NzgyMSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTA0MSwgMTg4NzQ5NzQsIDE2Nzc3ODI3LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MDQ3LCAxODg3NDk4MCwgMTY3Nzc4MzMsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUwNTMsIDE4ODc0OTg2LCAxNjc3NzgzOSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTA1OSwgMTg4NzQ5OTIsIDE2Nzc3ODQ1LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MDY1LCAxODg3NDk5OCwgMTY3Nzc4NTEsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUwNzEsIDE4ODc1MDA0LCAxNjc3Nzg1NywgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTA3NywgMTg4NzUwMTAsIDE2Nzc3ODYzLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MDgzLCAxODg3NTAxNiwgMTY3Nzc4NjksIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTUwODksIDE4ODc1MDIyLCAxNjc3Nzg3NSwgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NTA5NSwgMTg4NzUwMjgsIDE2Nzc3ODgxLCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU1MTAxLCAxODg3NTAzNCwgMTY3Nzc4ODcsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTUxMDcsIDE4ODc1MDQwLCAxNjc3Nzg5MywgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NTExMywgMTg4NzUwNDYsIDE2Nzc3ODk5LCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU1MTE5LCAxODg3NTA1MiwgMTY3Nzc5MDUsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTUxMjUsIDE4ODc1MDU4LCAxNjc3NzkxMSwgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NTEzMSwgMTg4NzUwNjQsIDMzNTU1MTMzLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MTM4LCAxODg3NTA3MSwgMTY3Nzc5MjQsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUxNDQsIDE4ODc1MDc3LCAzMzU1NTE0NiwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTE1MSwgMTg4NzUwODQsIDMzNTU1MTUxLCAwLCAwLCAyNjM3N30sCi0gICAgezUwMzMyMzczLCAxOTkyMzY2NSwgNTAzMzIzNzYsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ4NzAsIDE4ODc0ODAzLCAxNjc3NzY1NiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDg3NiwgMTg4NzQ4MDksIDE2Nzc3NjYyLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0ODgyLCAxODg3NDgxNSwgMTY3Nzc2NjgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ4ODgsIDE4ODc0ODIxLCAxNjc3NzY3NCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDg5NCwgMTg4NzQ4MjcsIDE2Nzc3NjgwLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0OTAwLCAxODg3NDgzMywgMTY3Nzc2ODYsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ5MDYsIDE4ODc0ODM5LCAxNjc3NzY5MiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDkxMiwgMTg4NzQ4NDUsIDE2Nzc3Njk4LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0OTE4LCAxODg3NDg1MSwgMTY3Nzc3MDQsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ5MjQsIDE4ODc0ODU3LCAxNjc3NzcxMCwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDkzMCwgMTg4NzQ4NjMsIDE2Nzc3NzE2LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0OTM2LCAxODg3NDg2OSwgMTY3Nzc3MjIsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ5NDIsIDE4ODc0ODc1LCAxNjc3NzcyOCwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDk0OCwgMTg4NzQ4ODEsIDE2Nzc3NzM0LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0OTU0LCAxODg3NDg4NywgMTY3Nzc3NDAsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ5NjAsIDE4ODc0ODkzLCAxNjc3Nzc0NiwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDk2NiwgMTg4NzQ4OTksIDE2Nzc3NzUyLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0OTcyLCAxODg3NDkwNSwgMTY3Nzc3NTgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ5NzgsIDE4ODc0OTExLCAxNjc3Nzc2NCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDk4NCwgMTg4NzQ5MTcsIDE2Nzc3NzcwLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0OTkwLCAxODg3NDkyMywgMTY3Nzc3NzYsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ5OTYsIDE4ODc0OTI5LCAxNjc3Nzc4MiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTAwMiwgMTg4NzQ5MzUsIDE2Nzc3Nzg4LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MDA4LCAxODg3NDk0MSwgMTY3Nzc3OTQsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUwMTQsIDE4ODc0OTQ3LCAxNjc3NzgwMCwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTAyMCwgMTg4NzQ5NTMsIDE2Nzc3ODA2LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MDI2LCAxODg3NDk1OSwgMTY3Nzc4MTIsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUwMzIsIDE4ODc0OTY1LCAxNjc3NzgxOCwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTAzOCwgMTg4NzQ5NzEsIDE2Nzc3ODI0LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MDQ0LCAxODg3NDk3NywgMTY3Nzc4MzAsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUwNTAsIDE4ODc0OTgzLCAxNjc3NzgzNiwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTA1NiwgMTg4NzQ5ODksIDE2Nzc3ODQyLCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MDYyLCAxODg3NDk5NSwgMTY3Nzc4NDgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUwNjgsIDE4ODc1MDAxLCAxNjc3Nzg1NCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTA3NCwgMTg4NzUwMDcsIDE2Nzc3ODYwLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MDgwLCAxODg3NTAxMywgMTY3Nzc4NjYsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUwODYsIDE4ODc1MDE5LCAxNjc3Nzg3MiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTA5MiwgMTg4NzUwMjUsIDE2Nzc3ODc4LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MDk4LCAxODg3NTAzMSwgMTY3Nzc4ODQsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUxMDQsIDE4ODc1MDM3LCAxNjc3Nzg5MCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTExMCwgMTg4NzUwNDMsIDE2Nzc3ODk2LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MTE2LCAxODg3NTA0OSwgMTY3Nzc5MDIsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUxMjIsIDE4ODc1MDU1LCAxNjc3NzkwOCwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTEyOCwgMTg4NzUwNjEsIDE2Nzc3OTE0LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MTM0LCAxODg3NTA2NywgMTY3Nzc5MjAsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUxNDAsIDE4ODc1MDczLCAxNjc3NzkyNiwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTE0NiwgMTg4NzUwNzksIDE2Nzc3OTMyLCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MTUyLCAxODg3NTA4NSwgMTY3Nzc5MzgsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUxNTgsIDE4ODc1MDkxLCAzMzU1NTE2MCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTE2NSwgMTg4NzUwOTgsIDE2Nzc3OTUxLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MTcxLCAxODg3NTEwNCwgMzM1NTUxNzMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUxNzgsIDE4ODc1MTExLCAzMzU1NTE3OCwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjQwMCwgMTk5MjM2OTIsIDUwMzMyNDAzLCAwLCAwLCAyNjM3N30sCiAgICAgezAsIC03NCwgMCwgMCwgMCwgMTAxMTN9LAotICAgIHszMzU1NTE2NiwgMTg4NzUwOTksIDE2Nzc3OTUyLCAwLCAwLCAyNjQzM30sCi0gICAgezE2Nzc3OTU1LCAxNzgyNjUyOSwgMTY3Nzc5NTUsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUxNzUsIDE4ODc1MTA4LCAzMzU1NTE3NywgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTE4MiwgMTg4NzUxMTUsIDE2Nzc3OTY4LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MTg4LCAxODg3NTEyMSwgMzM1NTUxOTAsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUxOTUsIDE4ODc1MTI4LCAzMzU1NTE5NSwgMCwgMCwgMjYzNzd9LAotICAgIHs1MDMzMjQxNywgMTk5MjM3MDksIDUwMzMyNDIwLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MTkzLCAxODg3NTEyNiwgMTY3Nzc5NzksIDAsIDAsIDI2NDMzfSwKKyAgICB7MTY3Nzc5ODIsIDE3ODI2NTU2LCAxNjc3Nzk4MiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTIwMiwgMTg4NzUxMzUsIDMzNTU1MjA0LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MjA5LCAxODg3NTE0MiwgMTY3Nzc5OTUsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUyMTUsIDE4ODc1MTQ4LCAzMzU1NTIxNywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTIyMiwgMTg4NzUxNTUsIDMzNTU1MjIyLCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyNDQ0LCAxOTkyMzczNiwgNTAzMzI0NDcsIDAsIDAsIDI2Mzc3fSwKICAgICB7MCwgLTg2LCAwLCAwLCAwLCAxMDExM30sCi0gICAgezMzNTU1MjEwLCAxODg3NTE0MywgMTY3Nzc5OTYsIDAsIDAsIDI2NDMzfSwKLSAgICB7NTAzMzI0MzMsIDE5OTIzNzI1LCA1MDMzMjQzMywgMCwgMCwgMjYzNzd9LAotICAgIHs1MDMzMjQ0MCwgMTk5MjM3MzIsIDUwMzMyNDQwLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MjMwLCAxODg3NTE2MywgMzM1NTUyMzAsIDAsIDAsIDI2Mzc3fSwKLSAgICB7NTAzMzI0NTIsIDE5OTIzNzQ0LCA1MDMzMjQ1MiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTIzNywgMTg4NzUxNzAsIDE2Nzc4MDIzLCAwLCAwLCAyNjQzM30sCisgICAgezUwMzMyNDYwLCAxOTkyMzc1MiwgNTAzMzI0NjAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzI0NjcsIDE5OTIzNzU5LCA1MDMzMjQ2NywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTI1NywgMTg4NzUxOTAsIDMzNTU1MjU3LCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyNDc5LCAxOTkyMzc3MSwgNTAzMzI0NzksIDAsIDAsIDI2Mzc3fSwKICAgICB7MCwgLTEwMCwgMCwgMCwgMCwgMTAxMTN9LAotICAgIHs1MDMzMjQ1OSwgMTk5MjM3NTEsIDUwMzMyNDU5LCAwLCAwLCAyNjM3N30sCi0gICAgezUwMzMyNDY2LCAxOTkyMzc1OCwgNTAzMzI0NjYsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUyNTYsIDE4ODc1MTg5LCAzMzU1NTI1NiwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTI2MSwgMTg4NzUxOTQsIDMzNTU1MjYxLCAwLCAwLCAyNjM3N30sCi0gICAgezUwMzMyNDgzLCAxOTkyMzc3NSwgNTAzMzI0ODMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzI0ODYsIDE5OTIzNzc4LCA1MDMzMjQ4NiwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjQ5MywgMTk5MjM3ODUsIDUwMzMyNDkzLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MjgzLCAxODg3NTIxNiwgMzM1NTUyODMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUyODgsIDE4ODc1MjIxLCAzMzU1NTI4OCwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjUxMCwgMTk5MjM4MDIsIDUwMzMyNTEwLCAwLCAwLCAyNjM3N30sCiAgICAgezAsIC0xMTIsIDAsIDAsIDAsIDEwMTEzfSwKLSAgICB7MzM1NTUyNzMsIDE4ODc1MjA2LCAzMzU1NTI3NSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTI4MCwgMTg4NzUyMTMsIDE2Nzc4MDY2LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1Mjg2LCAxODg3NTIxOSwgMzM1NTUyODgsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUyOTMsIDE4ODc1MjI2LCAzMzU1NTI5MywgMCwgMCwgMjYzNzd9LAotICAgIHs1MDMzMjUxNSwgMTk5MjM4MDcsIDUwMzMyNTE4LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MzAwLCAxODg3NTIzMywgMzM1NTUzMDIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUzMDcsIDE4ODc1MjQwLCAxNjc3ODA5MywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTMxMywgMTg4NzUyNDYsIDMzNTU1MzE1LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MzIwLCAxODg3NTI1MywgMzM1NTUzMjAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzI1NDIsIDE5OTIzODM0LCA1MDMzMjU0NSwgMCwgMCwgMjYzNzd9LAogICAgIHswLCAtMTI4LCAwLCAwLCAwLCAxMDExM30sCiAgICAgezAsIC0xMjYsIDAsIDAsIDAsIDEwMTEzfSwKLSAgICB7MzM1NTUzMDgsIDE4ODc1MjQxLCAxNjc3ODA5NCwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTMzNSwgMTg4NzUyNjgsIDE2Nzc4MTIxLCAwLCAwLCAyNjQzM30sCiAgICAgezAsIDAsIDAsIDAsIDAsIDMwNzZ9LAogICAgIHswLCAwLCAwLCAwLCA0LCAzMDc2fSwKICAgICB7MCwgMCwgMCwgMCwgNSwgMzA3Nn0sCkBAIC0zODgsMTUgKzM5OCw2IEBACiAgICAgezAsIC00MjI2MSwgMCwgMCwgMCwgMTAxMTN9LAogICAgIHswLCA5MjgsIDAsIDAsIDAsIDEwMTEzfSwKICAgICB7LTkyOCwgMCwgLTkyOCwgMCwgMCwgOTk5M30sCi0gICAgezE2Nzc4MDk3LCAxNzgyNjY3MSwgMTY3NzgwOTcsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MTY3NzgxMDAsIDE3ODI2Njc0LCAxNjc3ODEwMCwgMCwgMCwgMjYzNzd9LAotICAgIHsxNjc3ODEwMywgMTc4MjY2NzcsIDE2Nzc4MTAzLCAwLCAwLCAyNjM3N30sCi0gICAgezE2Nzc4MTA2LCAxNzgyNjY4MCwgMTY3NzgxMDYsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MTY3NzgxMDksIDE3ODI2NjgzLCAxNjc3ODEwOSwgMCwgMCwgMjYzNzd9LAotICAgIHsxNjc3ODExMiwgMTc4MjY2ODYsIDE2Nzc4MTEyLCAwLCAwLCAyNjM3N30sCi0gICAgezE2Nzc4MTE1LCAxNzgyNjY4OSwgMTY3NzgxMTUsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MTY3NzgxMTgsIDE3ODI2NjkyLCAxNjc3ODExOCwgMCwgMCwgMjYzNzd9LAotICAgIHsxNjc3ODEyMSwgMTc4MjY2OTUsIDE2Nzc4MTIxLCAwLCAwLCAyNjM3N30sCiAgICAgezE2Nzc4MTI0LCAxNzgyNjY5OCwgMTY3NzgxMjQsIDAsIDAsIDI2Mzc3fSwKICAgICB7MTY3NzgxMjcsIDE3ODI2NzAxLCAxNjc3ODEyNywgMCwgMCwgMjYzNzd9LAogICAgIHsxNjc3ODEzMCwgMTc4MjY3MDQsIDE2Nzc4MTMwLCAwLCAwLCAyNjM3N30sCkBAIC00NjgsMjIgKzQ2OSwzMyBAQAogICAgIHsxNjc3ODMyOCwgMTc4MjY5MDIsIDE2Nzc4MzI4LCAwLCAwLCAyNjM3N30sCiAgICAgezE2Nzc4MzMxLCAxNzgyNjkwNSwgMTY3NzgzMzEsIDAsIDAsIDI2Mzc3fSwKICAgICB7MTY3NzgzMzQsIDE3ODI2OTA4LCAxNjc3ODMzNCwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTU1NCwgMTg4NzU0ODcsIDMzNTU1NTU2LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1NTYxLCAxODg3NTQ5NCwgMzM1NTU1NjMsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTU1NjgsIDE4ODc1NTAxLCAzMzU1NTU3MCwgMCwgMCwgMjYzNzd9LAotICAgIHs1MDMzMjc5MiwgMTk5MjQwODQsIDUwMzMyNzk1LCAwLCAwLCAyNjM3N30sCi0gICAgezUwMzMyODAyLCAxOTkyNDA5NCwgNTAzMzI4MDUsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgzMzcsIDE3ODI2OTExLCAxNjc3ODMzNywgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODM0MCwgMTc4MjY5MTQsIDE2Nzc4MzQwLCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MzQzLCAxNzgyNjkxNywgMTY3NzgzNDMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgzNDYsIDE3ODI2OTIwLCAxNjc3ODM0NiwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODM0OSwgMTc4MjY5MjMsIDE2Nzc4MzQ5LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MzUyLCAxNzgyNjkyNiwgMTY3NzgzNTIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgzNTUsIDE3ODI2OTI5LCAxNjc3ODM1NSwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODM1OCwgMTc4MjY5MzIsIDE2Nzc4MzU4LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MzYxLCAxNzgyNjkzNSwgMTY3NzgzNjEsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTU1ODEsIDE4ODc1NTE0LCAzMzU1NTU4MywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTU4OCwgMTg4NzU1MjEsIDMzNTU1NTkwLCAwLCAwLCAyNjM3N30sCiAgICAgezMzNTU1NTk1LCAxODg3NTUyOCwgMzM1NTU1OTcsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTU2MDIsIDE4ODc1NTM1LCAzMzU1NTYwNCwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTYwOSwgMTg4NzU1NDIsIDMzNTU1NjExLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1NjE2LCAxODg3NTU0OSwgMzM1NTU2MTgsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTU2MjMsIDE4ODc1NTU2LCAzMzU1NTYyNSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTYzMCwgMTg4NzU1NjMsIDMzNTU1NjMyLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1NjM3LCAxODg3NTU3MCwgMzM1NTU2MzksIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzI4MTksIDE5OTI0MTExLCA1MDMzMjgyMiwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjgyOSwgMTk5MjQxMjEsIDUwMzMyODMyLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1NjIyLCAxODg3NTU1NSwgMzM1NTU2MjQsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTU2MjksIDE4ODc1NTYyLCAzMzU1NTYzMSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTYzNiwgMTg4NzU1NjksIDMzNTU1NjM4LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1NjQzLCAxODg3NTU3NiwgMzM1NTU2NDUsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTU2NTAsIDE4ODc1NTgzLCAzMzU1NTY1MiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTY1NywgMTg4NzU1OTAsIDMzNTU1NjU5LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1NjY0LCAxODg3NTU5NywgMzM1NTU2NjYsIDAsIDAsIDI2Mzc3fSwKICAgICB7MCwgMCwgMCwgMCwgMCwgMTAyNX0sCiAgICAgezAsIDAsIDAsIDAsIDAsIDU2MzN9LAogICAgIHswLCA0MCwgMCwgMCwgMCwgMTAxMTN9LAogICAgIHstNDAsIDAsIC00MCwgMCwgMCwgOTk5M30sCisgICAgezAsIDM0LCAwLCAwLCAwLCAxMDExM30sCisgICAgey0zNCwgMCwgLTM0LCAwLCAwLCA5OTkzfSwKICAgICB7MCwgMCwgMCwgMCwgMCwgOTM0NH0sCiB9OwogCkBAIC04NDAsNiArODUyLDMzIEBACiAgICAgNTExNywKICAgICA1MTA5LAogICAgIDUxMDksCisgICAgNzI5NiwKKyAgICAxMDc0LAorICAgIDEwNDIsCisgICAgNzI5NywKKyAgICAxMDc2LAorICAgIDEwNDQsCisgICAgNzI5OCwKKyAgICAxMDg2LAorICAgIDEwNTQsCisgICAgNzI5OSwKKyAgICAxMDg5LAorICAgIDEwNTcsCisgICAgNzMwMCwKKyAgICAxMDkwLAorICAgIDEwNTgsCisgICAgNzMwMSwKKyAgICAxMDkwLAorICAgIDEwNTgsCisgICAgNzMwMiwKKyAgICAxMDk4LAorICAgIDEwNjYsCisgICAgNzMwMywKKyAgICAxMTIzLAorICAgIDExMjIsCisgICAgNzMwNCwKKyAgICA0MjU3MSwKKyAgICA0MjU3MCwKICAgICA3ODMwLAogICAgIDEwNCwKICAgICA4MTcsCkBAIC0xNzM2LDY5ICsxNzc1LDY4IEBACiAgICAgMTMxLCAxMzIsIDEzMywgMTM0LCAzNCwgMTM1LCAxMzYsIDEzNywgMTM4LCAxMzksIDE0MCwgMTQxLCAxNDIsIDE0MywgMTQ0LCAKICAgICAxNDUsIDE0NiwgMTQ3LCAxNDgsIDE0OSwgMTUwLCAxNTEsIDE0NSwgMzQsIDM0LCAxNTIsIDE0NSwgMTUzLCAxNTQsIDE1NSwgCiAgICAgMTU2LCAxNTcsIDE1OCwgMTU5LCAxNjAsIDE2MSwgMTYyLCAxNDUsIDE0NSwgMTYzLCAxNDUsIDE0NSwgMTQ1LCAxNjQsIAotICAgIDE2NSwgMTY2LCAxNjcsIDE2OCwgMTY5LCAxNzAsIDE0NSwgMTQ1LCAxNzEsIDE0NSwgMTcyLCAxNzMsIDE3NCwgMTc1LCAKLSAgICAxNDUsIDE0NSwgMTc2LCAxNDUsIDE0NSwgMTQ1LCAxNzcsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCi0gICAgMTQ1LCAxNDUsIDE0NSwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDE3OCwgMTc5LCAzNCwgMTgwLCAxNDUsIDE0NSwgCisgICAgMTY1LCAxNjYsIDE2NywgMTY4LCAxNjksIDE3MCwgMTQ1LCAxNzEsIDE3MiwgMTQ1LCAxNzMsIDE3NCwgMTc1LCAxNzYsIAorICAgIDE0NSwgMTQ1LCAxNzcsIDE0NSwgMTQ1LCAxNDUsIDE3OCwgMTQ1LCAxNDUsIDE3OSwgMTgwLCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTgxLCAxODIsIDM0LCAxODMsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCi0gICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTgxLCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTg0LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKLSAgICAxNDUsIDM0LCAzNCwgMzQsIDM0LCAxODIsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMzQsIDM0LCAzNCwgMzQsIDE4NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAotICAgIDE0NSwgMTQ1LCAzNCwgMzQsIDM0LCAzNCwgMTgzLCAxODQsIDE4NSwgMTg2LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCi0gICAgMTQ1LCAxODcsIDE4OCwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAzNCwgMzQsIDM0LCAzNCwgMTg2LCAxODcsIDE4OCwgMTg5LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxOTAsIDE5MSwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxOTIsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMTkzLCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTk0LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTk1LCAxOTYsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCi0gICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAotICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKLSAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTg5LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCi0gICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAotICAgIDE0NSwgMTkwLCAxOTEsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKLSAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCi0gICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCA2NCwgMTkyLCAKLSAgICAxOTMsIDE5NCwgMTk1LCAxNDUsIDE5NiwgMTQ1LCAxOTcsIDE5OCwgMTk5LCAyMDAsIDIwMSwgMjAyLCAyMDMsIDIwNCwgNjQsIAotICAgIDY0LCA2NCwgNjQsIDIwNSwgMjA2LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAotICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKLSAgICAxNDUsIDE0NSwgMzQsIDIwNywgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAyMDgsIAotICAgIDIwOSwgMTQ1LCAxNDUsIDIxMCwgMjExLCAyMTIsIDIxMywgMjE0LCAxNDUsIDY0LCAyMTUsIDY0LCA2NCwgMjE2LCAyMTcsIAotICAgIDY0LCAyMTgsIDIxOSwgMjIwLCAyMjEsIDIyMiwgMjIzLCAyMjQsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCi0gICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDIyNSwgMjI2LCAyMjcsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDg3LCAyMjgsIDM0LCAyMjksIDIzMCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAxNDUsIDY0LCAxOTcsIDE5OCwgMTk5LCAyMDAsIDE0NSwgMjAxLCAxNDUsIDIwMiwgMjAzLCAyMDQsIDIwNSwgMjA2LCAyMDcsIAorICAgIDIwOCwgMjA5LCA2NCwgNjQsIDY0LCA2NCwgMjEwLCAyMTEsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMjEyLCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAzNCwgMjEzLCAyMTQsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDIxNSwgMjE2LCAxNDUsIDE0NSwgMjE3LCAyMTgsIDIxOSwgMjIwLCAyMjEsIDE0NSwgNjQsIDIyMiwgNjQsIAorICAgIDY0LCA2NCwgNjQsIDY0LCAyMjMsIDIyNCwgMjI1LCAyMjYsIDIyNywgMjI4LCAyMjksIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDIzMCwgMjMxLCAyMzIsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDg3LCAyMzMsIDM0LCAyMzQsIDIzNSwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyMzEsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMjMyLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyMzYsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjM3LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAyMzMsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDIzOCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDIzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjM5LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyMzUsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjM2LCAzNCwgMjM3LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMjQwLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDI0MSwgMzQsIDI0MiwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDIzOCwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjQzLCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKLSAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDM0LCAyMzEsIDM0LCAzNCwgMjM5LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDM0LCAyMzYsIDM0LCAzNCwgMjQ0LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKQEAgLTIyMDEsOCArMjIzOSw4IEBACiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCi0gICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMjQwLCAxNDUsIDI0MSwgMjQyLCAxNDUsIAotICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAyNDUsIDE0NSwgCisgICAgMjQ2LCAyNDcsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIApAQCAtMjIzOCw3ICsyMjc2LDcgQEAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKLSAgICAxNDUsIDE0NSwgMTQ1LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAogICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKICAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIApAQCAtMjI3NCw3ICsyMzEyLDcgQEAKICAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAogICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKLSAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDI0MywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAyNDgsIAogICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKICAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIApAQCAtMjMxMSw3ICsyMzQ5LDcgQEAKICAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAogICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKLSAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDI0MywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAyNDgsIAogfTsKIAogc3RhdGljIHVuc2lnbmVkIHNob3J0IGluZGV4MltdID0gewpAQCAtMjM0Nyw3ICsyMzg1LDcgQEAKICAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDY1LCAKICAgICAzMCwgMzEsIDY2LCA2NywgNjgsIDY4LCAzMCwgMzEsIDY5LCA3MCwgNzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKICAgICAzMSwgMzAsIDMxLCA3MiwgNzMsIDc0LCA3NSwgNzYsIDIwLCA3NywgNzcsIDIwLCA3OCwgMjAsIDc5LCA4MCwgMjAsIDIwLCAKLSAgICAyMCwgNzcsIDgxLCAyMCwgODIsIDIwLCA4MywgODQsIDIwLCA4NSwgODYsIDIwLCA4NywgODgsIDIwLCAyMCwgODYsIDIwLCAKKyAgICAyMCwgNzcsIDgxLCAyMCwgODIsIDIwLCA4MywgODQsIDIwLCA4NSwgODYsIDg0LCA4NywgODgsIDIwLCAyMCwgODYsIDIwLCAKICAgICA4OSwgOTAsIDIwLCAyMCwgOTEsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCA5MiwgMjAsIDIwLCA5MywgMjAsIDIwLCAKICAgICA5MywgMjAsIDIwLCAyMCwgOTQsIDkzLCA5NSwgOTYsIDk2LCA5NywgMjAsIDIwLCAyMCwgMjAsIDIwLCA5OCwgMjAsIDU1LCAKICAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDk5LCAxMDAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCkBAIC0yNDM1LDE1MiArMjQ3MywxNTIgQEAKICAgICA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyMSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDE4LCAyNSwgNTUsIDE4LCAxOCwgMTgsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDI1LCAxOCwgMTgsIDU1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgNSwgNSwgCi0gICAgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDEwMiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDE4LCAxOCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgMCwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAwLCAwLCAxOCwgMTgsIDAsIDAsIDE4LCAxOCwgMjUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgCi0gICAgMCwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgCi0gICAgMTUsIDE2LCA1NSwgNTUsIDUsIDUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDI1LCAKLSAgICAyNSwgMTgsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgCisgICAgMTgsIDI1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDE4LCAxOCwgCisgICAgMjUsIDE4LCAxOCwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMjUsIDI1LCA1LCA1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgMTAyLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMTgsIDE4LCAKKyAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgMCwgCi0gICAgMjUsIDAsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMjUsIDI1LCAwLCAwLCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAKLSAgICAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAKLSAgICA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMjUsIDI1LCA1NSwgNTUsIDU1LCAyNSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAxOCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgCi0gICAgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIAotICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjUsIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIAotICAgIDI1LCAyNSwgMTgsIDAsIDE4LCAxOCwgMjUsIDAsIDAsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDUsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMTgsIDE4LCAwLCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgCisgICAgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAxOCwgMTgsIDAsIDAsIDE4LCAxOCwgMjUsIDU1LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDcsIAorICAgIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1NSwgNTUsIDUsIDUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMTgsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIAorICAgIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCAwLCAyNSwgMCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAwLCAwLCAwLCAwLCAyNSwgMjUsIAorICAgIDAsIDAsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgCisgICAgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAyNSwgMjUsIDU1LCAKKyAgICA1NSwgNTUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDE4LCAwLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgNTUsIDE4LCAyNSwgCi0gICAgMTgsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAxOCwgMTgsIDAsIDAsIDE4LCAxOCwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDI1LCAxOCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAKLSAgICAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1LCA1NSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMjUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCAwLCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDAsIDAsIAotICAgIDAsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDAsIDAsIDAsIDAsIDE4LCAxOCwgMjUsIDE4LCAxOCwgMCwgMCwgMCwgMTgsIDE4LCAxOCwgMCwgMTgsIDE4LCAxOCwgMjUsIAotICAgIDAsIDAsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDAsIDAsIDAsIDAsIDAsIDI1LCAxOCwgMTgsIDE4LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAKLSAgICA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDU1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMCwgCi0gICAgMjUsIDI1LCAyNSwgMCwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMCwgNTUsIDU1LCAKLSAgICA1NSwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIAotICAgIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgMCwgMjUsIDE4LCAxOCwgCi0gICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjUsIDU1LCAxOCwgMTgsIAorICAgIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDI1LCAyNSwgMTgsIDAsIDE4LCAxOCwgMjUsIDAsIDAsIDU1LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIAorICAgIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAyNSwgMTgsIDE4LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgMCwgMCwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIAotICAgIDI1LCA1NSwgMTgsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDAsIDI1LCAxOCwgMTgsIDAsIDE4LCAxOCwgMjUsIDI1LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAwLCA1NSwgNTUsIDI1LCAyNSwgMCwgCi0gICAgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDE4LCAxOCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAKLSAgICA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMCwgMCwgMjUsIDU1LCAxOCwgMjUsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMTgsIDE4LCAwLCAwLCAxOCwgMTgsIAorICAgIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMTgsIDAsIDAsIDAsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgCisgICAgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgNTUsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMCwgMCwgMCwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCAKKyAgICA1NSwgMCwgMCwgMCwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAxOCwgMTgsIDI1LCAxOCwgMTgsIDAsIDAsIDAsIDE4LCAKKyAgICAxOCwgMTgsIDAsIDE4LCAxOCwgMTgsIDI1LCAwLCAwLCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAyNywgMjcsIAorICAgIDI3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAyNSwgMTgsIDE4LCAxOCwgMCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgMjUsIDI1LCAKKyAgICAyNSwgMTgsIDE4LCAxOCwgMTgsIDAsIDI1LCAyNSwgMjUsIDAsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAyNSwgMjUsIDAsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAKKyAgICAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDUsIDU1LCAyNSwgMTgsIDE4LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgCisgICAgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjUsIDU1LCAxOCwgMjUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMCwgMjUsIDE4LCAKKyAgICAxOCwgMCwgMTgsIDE4LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDAsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgNTUsIAorICAgIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMTgsIDE4LCAwLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMCwgMTgsIDE4LCAxOCwgMCwgMTgsIDE4LCAxOCwgMjUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAKLSAgICAxNiwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMTgsIAotICAgIDE4LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDI1LCAwLCAwLCAwLCAwLCAKLSAgICAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAwLCAyNSwgMCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMTgsIDE4LCA1LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDE4LCAxOCwgCisgICAgMTgsIDI1LCAyNSwgMjUsIDI1LCAwLCAxOCwgMTgsIDE4LCAwLCAxOCwgMTgsIDE4LCAyNSwgNTUsIDUsIDAsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDE4LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNTUsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCA3LCAKKyAgICA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMTgsIDE4LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDAsIDAsIDAsIDI1LCAwLCAwLCAwLCAwLCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAwLCAyNSwgMCwgMTgsIAorICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgCisgICAgMTQsIDE1LCAxNiwgMCwgMCwgMTgsIDE4LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCAyNSwgNTUsIDEzOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDEwMiwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAKLSAgICAxMywgMTQsIDE1LCAxNiwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAwLCAKLSAgICA1NSwgMCwgMCwgNTUsIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCAwLCAwLCA1NSwgNTUsIDAsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAyNSwgNTUsIDEzOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMjUsIDI1LCA1NSwgMCwgMCwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAxMDIsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAKLSAgICAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI1LCAKLSAgICAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCAyNSwgNSwgMjUsIDUsIDI1LCA1LCA1LCA1LCA1LCAxOCwgMTgsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDU1LCAxMzgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAwLCAwLCAwLCAwLCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxMDIsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgNSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgMCwgNTUsIDAsIDAsIDU1LCA1NSwgMCwgNTUsIDAsIDAsIDU1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgCisgICAgNTUsIDAsIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMjUsIDU1LCAxMzgsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDAsIDI1LCAyNSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMTAyLCAwLCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDcsIDgsIDksIAorICAgIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgCisgICAgMjUsIDUsIDI1LCA1LCAyNSwgNSwgNSwgNSwgNSwgMTgsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgMjUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDU1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAKKyAgICAxMywgMTQsIDE1LCAxNiwgNSwgNSwgNSwgNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAyNSwgMjUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCA1NSwgMTgsIDE4LCAxOCwgNTUsIDU1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIAorICAgIDE4LCAxOCwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDI1LCA1NSwgMTgsIAorICAgIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxOCwgMTgsIDE4LCAyNSwgNSwgNSwgMTM5LCAxMzksIDEzOSwgCisgICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDAsIDEzOSwgMCwgMCwgMCwgMCwgMCwgMTM5LCAwLCAwLCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgMTAyLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgMjUsIDI1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAyNSwgMTgsIDE4LCAKLSAgICAyNSwgMjUsIDU1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgNSwgNSwgNSwgNSwgNSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCA1NSwgMTgsIAotICAgIDE4LCAxOCwgNTUsIDU1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMTgsIDE4LCAyNSwgMjUsIAotICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDI1LCA1NSwgMTgsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAKLSAgICAxOCwgMTgsIDE4LCAyNSwgNSwgNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKLSAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCi0gICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDAsIAotICAgIDEzOSwgMCwgMCwgMCwgMCwgMCwgMTM5LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgMTAyLCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICAwLCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIAotICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE0MCwgMTQxLCAxNDIsIAotICAgIDE0MywgMTQ0LCAxNDUsIDE0NiwgMTQ3LCAxNDgsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDE0OSwgMTUwLCAxNTEsIDE1MiwgMTUzLCAKLSAgICAxNTQsIDE1NSwgMTU2LCAxNTcsIDE1OCwgMTU5LCAxNjAsIDE2MSwgMTYyLCAxNjMsIDE2NCwgMTY1LCAxNjYsIDE2NywgCi0gICAgMTY4LCAxNjksIDE3MCwgMTcxLCAxNzIsIDE3MywgMTc0LCAxNzUsIDE3NiwgMTc3LCAxNzgsIDE3OSwgMTgwLCAxODEsIAotICAgIDE4MiwgMTgzLCAxODQsIDE4NSwgMTg2LCAxODcsIDE4OCwgMTg5LCAxOTAsIDE5MSwgMTkyLCAxOTMsIDE5NCwgMTk1LCAKLSAgICAxOTYsIDE5NywgMTk4LCAxOTksIDIwMCwgMjAxLCAyMDIsIDIwMywgMjA0LCAyMDUsIDIwNiwgMjA3LCAyMDgsIDIwOSwgCi0gICAgMjEwLCAyMTEsIDIxMiwgMjEzLCAyMTQsIDIxNSwgMjE2LCAyMTcsIDIxOCwgMjE5LCAyMjAsIDIyMSwgMjIyLCAyMjMsIAotICAgIDIyNCwgMjI1LCAyMjYsIDIyNywgMjI4LCAyMjksIDIzMCwgMjMxLCAyMzIsIDIzMywgMjM0LCAwLCAwLCAyMzUsIDIzNiwgCi0gICAgMjM3LCAyMzgsIDIzOSwgMjQwLCAwLCAwLCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCAyNSwgMjUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE0MCwgMTQxLCAxNDIsIDE0MywgMTQ0LCAxNDUsIDE0NiwgMTQ3LCAxNDgsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDE0OSwgMTUwLCAxNTEsIDE1MiwgMTUzLCAxNTQsIDE1NSwgMTU2LCAxNTcsIDE1OCwgMTU5LCAxNjAsIAorICAgIDE2MSwgMTYyLCAxNjMsIDE2NCwgMTY1LCAxNjYsIDE2NywgMTY4LCAxNjksIDE3MCwgMTcxLCAxNzIsIDE3MywgMTc0LCAKKyAgICAxNzUsIDE3NiwgMTc3LCAxNzgsIDE3OSwgMTgwLCAxODEsIDE4MiwgMTgzLCAxODQsIDE4NSwgMTg2LCAxODcsIDE4OCwgCisgICAgMTg5LCAxOTAsIDE5MSwgMTkyLCAxOTMsIDE5NCwgMTk1LCAxOTYsIDE5NywgMTk4LCAxOTksIDIwMCwgMjAxLCAyMDIsIAorICAgIDIwMywgMjA0LCAyMDUsIDIwNiwgMjA3LCAyMDgsIDIwOSwgMjEwLCAyMTEsIDIxMiwgMjEzLCAyMTQsIDIxNSwgMjE2LCAKKyAgICAyMTcsIDIxOCwgMjE5LCAyMjAsIDIyMSwgMjIyLCAyMjMsIDIyNCwgMjI1LCAyMjYsIDIyNywgMjI4LCAyMjksIDIzMCwgCisgICAgMjMxLCAyMzIsIDIzMywgMjM0LCAwLCAwLCAyMzUsIDIzNiwgMjM3LCAyMzgsIDIzOSwgMjQwLCAwLCAwLCA1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMjU5MywxMDkgKzI2MzEsMTEwIEBACiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDUsIDUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAyLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDUsIDI0MSwgMjQxLCAyNDEsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCAyNSwgMjUsIDI1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAKLSAgICA1NSwgNTUsIDU1LCAwLCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCA1LCAKKyAgICAyNDEsIDI0MSwgMjQxLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMjUsIAorICAgIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgMCwgMjUsIDI1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAxOCwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDE4LCAxOCwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCA1LCA1LCAxMDIsIDUsIDUsIDUsIDUsIDU1LCAyNSwgMCwgCi0gICAgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCAyNSwgMjUsIDI1LCAyMSwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDE4LCAxOCwgCisgICAgMTgsIDE4LCAxOCwgMTgsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgNSwgNSwgNSwgMTAyLCA1LCA1LCA1LCA1LCA1NSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIAorICAgIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjUsIDI1LCAyNSwgMjEsIDAsIDcsIDgsIDksIDEwLCAKKyAgICAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDEwMiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxMDIsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCA1NSwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDI0MiwgMjQyLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMjUsIDU1LCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMjUsIDI1LCAKLSAgICAyNSwgMTgsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMCwgMCwgMCwgMCwgMTgsIDE4LCAyNSwgMTgsIDE4LCAKLSAgICAxOCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgNSwgMCwgMCwgMCwgNSwgNSwgNywgOCwgOSwgMTAsIAotICAgIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMjUsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMTgsIAorICAgIDE4LCAxOCwgMCwgMCwgMCwgMCwgMTgsIDE4LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMCwgMCwgCisgICAgMCwgMCwgNSwgMCwgMCwgMCwgNSwgNSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgCisgICAgMTUsIDE2LCAxNDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMjUsIDI1LCAxOCwgMTgsIDI1LCAwLCAwLCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxNDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAxOCwgMTgsIDI1LCAwLCAwLCA1LCA1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAyNSwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAKKyAgICAyNSwgMTgsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAKKyAgICAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDI1LCA3LCA4LCA5LCAxMCwgMTEsIAorICAgIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgCisgICAgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDEwMiwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA2LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMTgsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgMTgsIDE4LCAKKyAgICAxOCwgMTgsIDE4LCAyNSwgMTgsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgNywgOCwgOSwgCisgICAgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIAorICAgIDAsIDAsIDI1LCAyNSwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAyNSwgCi0gICAgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAyNSwgMTgsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDAsIDAsIDI1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDEwMiwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCA2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAyNSwgMjUsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMTgsIDI1LCAyNSwgMjUsIDU1LCA1NSwgNywgOCwgOSwgMTAsIDExLCAxMiwgCisgICAgMTMsIDE0LCAxNSwgMTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDE4LCAyNSwgMjUsIDE4LCAxOCwgCisgICAgMTgsIDI1LCAxOCwgMjUsIDI1LCAyNSwgMTgsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgCisgICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAyNSwgCisgICAgMjUsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgNSwgNSwgMjQzLCAyNDQsIAorICAgIDI0NSwgMjQ2LCAyNDcsIDI0OCwgMjQ5LCAyNTAsIDI1MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAxOCwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDE4LCAxOCwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAyNSwgMjUsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMjUsIDI1LCAxOCwgMjUsIAotICAgIDI1LCAyNSwgNTUsIDU1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAyNSwgMTgsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMjUsIDE4LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNywgOCwgOSwgMTAsIAotICAgIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgCi0gICAgMTUsIDE2LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxMDIsIDEwMiwgMTAyLCAKLSAgICAxMDIsIDEwMiwgMTAyLCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCA1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMjUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDI1LCA1NSwgNTUsIDAsIDI1LCAyNSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDI1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAyNSwgNTUsIDU1LCAwLCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDIwLCAKICAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKLSAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKICAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCiAgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAogICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKLSAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCi0gICAgMTAxLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTAxLCAyNDIsIDIwLCAKLSAgICAyMCwgMjAsIDI0MywgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTAxLCAyNTIsIDIwLCAyMCwgMjAsIDI1MywgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKICAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCiAgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAotICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKICAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKICAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDMwLCAzMSwgMzAsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCkBAIC0yNzA0LDQ5ICsyNzQzLDQ5IEBACiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCi0gICAgMzEsIDMwLCAzMSwgMjQ0LCAyNDUsIDI0NiwgMjQ3LCAyNDgsIDI0OSwgMjAsIDIwLCAyNTAsIDIwLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMjU0LCAyNTUsIDI1NiwgMjU3LCAyNTgsIDI1OSwgMjAsIDIwLCAyNjAsIDIwLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAotICAgIDMxLCAzMCwgMzEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTIsIDI1MiwgMjUyLCAyNTIsIAotICAgIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMCwgMCwgMjUyLCAyNTIsIDI1MiwgCi0gICAgMjUyLCAyNTIsIDI1MiwgMCwgMCwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MiwgMjUyLCAKLSAgICAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgCi0gICAgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDAsIAotICAgIDAsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDAsIDAsIDI1MywgMjUxLCAyNTQsIDI1MSwgMjU1LCAyNTEsIDI1NiwgCi0gICAgMjUxLCAwLCAyNTIsIDAsIDI1MiwgMCwgMjUyLCAwLCAyNTIsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgCi0gICAgMjUxLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjU3LCAyNTcsIDI1OCwgMjU4LCAyNTgsIAotICAgIDI1OCwgMjU5LCAyNTksIDI2MCwgMjYwLCAyNjEsIDI2MSwgMjYyLCAyNjIsIDAsIDAsIDI2MywgMjY0LCAyNjUsIDI2NiwgCi0gICAgMjY3LCAyNjgsIDI2OSwgMjcwLCAyNzEsIDI3MiwgMjczLCAyNzQsIDI3NSwgMjc2LCAyNzcsIDI3OCwgMjc5LCAyODAsIAotICAgIDI4MSwgMjgyLCAyODMsIDI4NCwgMjg1LCAyODYsIDI4NywgMjg4LCAyODksIDI5MCwgMjkxLCAyOTIsIDI5MywgMjk0LCAKLSAgICAyOTUsIDI5NiwgMjk3LCAyOTgsIDI5OSwgMzAwLCAzMDEsIDMwMiwgMzAzLCAzMDQsIDMwNSwgMzA2LCAzMDcsIDMwOCwgCi0gICAgMzA5LCAzMTAsIDI1MSwgMjUxLCAzMTEsIDMxMiwgMzEzLCAwLCAzMTQsIDMxNSwgMjUyLCAyNTIsIDMxNiwgMzE2LCAzMTcsIAotICAgIDYsIDMxOCwgNiwgNiwgNiwgMzE5LCAzMjAsIDMyMSwgMCwgMzIyLCAzMjMsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI1LCA2LCAKLSAgICA2LCA2LCAyNTEsIDI1MSwgMzI2LCAzMjcsIDAsIDAsIDMyOCwgMzI5LCAyNTIsIDI1MiwgMzMwLCAzMzAsIDAsIDYsIDYsIDYsIAotICAgIDI1MSwgMjUxLCAzMzEsIDMzMiwgMzMzLCAxMjYsIDMzNCwgMzM1LCAyNTIsIDI1MiwgMzM2LCAzMzYsIDEzMCwgNiwgNiwgNiwgCi0gICAgMCwgMCwgMzM3LCAzMzgsIDMzOSwgMCwgMzQwLCAzNDEsIDM0MiwgMzQyLCAzNDMsIDM0MywgMzQ0LCA2LCA2LCAwLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDYsIAotICAgIDYsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDYsIDUsIDUsIDYsIDMsIDMsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMiwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTgsIDE4LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxOCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMiwgCi0gICAgMjEsIDIxLCAyMSwgMjEsIDIxLCAwLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMzQ1LCAxMDEsIAotICAgIDAsIDAsIDM0NiwgMzQ3LCAzNDgsIDM0OSwgMzUwLCAzNTEsIDUsIDUsIDUsIDUsIDUsIDEwMSwgMzQ1LCAyNiwgMjIsIDIzLCAKLSAgICAzNDYsIDM0NywgMzQ4LCAzNDksIDM1MCwgMzUxLCA1LCA1LCA1LCA1LCA1LCAwLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMzEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKKyAgICAyNjIsIDI2MiwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMCwgMCwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAorICAgIDI2MiwgMCwgMCwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCisgICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYyLCAyNjIsIAorICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDAsIDAsIDI2MiwgCisgICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDAsIDAsIDI2MywgMjYxLCAyNjQsIDI2MSwgMjY1LCAyNjEsIDI2NiwgMjYxLCAwLCAKKyAgICAyNjIsIDAsIDI2MiwgMCwgMjYyLCAwLCAyNjIsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjIsIAorICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjY3LCAyNjcsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY5LCAKKyAgICAyNjksIDI3MCwgMjcwLCAyNzEsIDI3MSwgMjcyLCAyNzIsIDAsIDAsIDI3MywgMjc0LCAyNzUsIDI3NiwgMjc3LCAyNzgsIAorICAgIDI3OSwgMjgwLCAyODEsIDI4MiwgMjgzLCAyODQsIDI4NSwgMjg2LCAyODcsIDI4OCwgMjg5LCAyOTAsIDI5MSwgMjkyLCAKKyAgICAyOTMsIDI5NCwgMjk1LCAyOTYsIDI5NywgMjk4LCAyOTksIDMwMCwgMzAxLCAzMDIsIDMwMywgMzA0LCAzMDUsIDMwNiwgCisgICAgMzA3LCAzMDgsIDMwOSwgMzEwLCAzMTEsIDMxMiwgMzEzLCAzMTQsIDMxNSwgMzE2LCAzMTcsIDMxOCwgMzE5LCAzMjAsIAorICAgIDI2MSwgMjYxLCAzMjEsIDMyMiwgMzIzLCAwLCAzMjQsIDMyNSwgMjYyLCAyNjIsIDMyNiwgMzI2LCAzMjcsIDYsIDMyOCwgNiwgCisgICAgNiwgNiwgMzI5LCAzMzAsIDMzMSwgMCwgMzMyLCAzMzMsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM1LCA2LCA2LCA2LCAyNjEsIAorICAgIDI2MSwgMzM2LCAzMzcsIDAsIDAsIDMzOCwgMzM5LCAyNjIsIDI2MiwgMzQwLCAzNDAsIDAsIDYsIDYsIDYsIDI2MSwgMjYxLCAKKyAgICAzNDEsIDM0MiwgMzQzLCAxMjYsIDM0NCwgMzQ1LCAyNjIsIDI2MiwgMzQ2LCAzNDYsIDEzMCwgNiwgNiwgNiwgMCwgMCwgCisgICAgMzQ3LCAzNDgsIDM0OSwgMCwgMzUwLCAzNTEsIDM1MiwgMzUyLCAzNTMsIDM1MywgMzU0LCA2LCA2LCAwLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDYsIDYsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDYsIDUsIDUsIDYsIDMsIDMsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMiwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTgsIDE4LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxOCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMiwgMjEsIAorICAgIDIxLCAyMSwgMjEsIDIxLCAwLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMzU1LCAxMDEsIDAsIAorICAgIDAsIDM1NiwgMzU3LCAzNTgsIDM1OSwgMzYwLCAzNjEsIDUsIDUsIDUsIDUsIDUsIDEwMSwgMzU1LCAyNiwgMjIsIDIzLCAKKyAgICAzNTYsIDM1NywgMzU4LCAzNTksIDM2MCwgMzYxLCA1LCA1LCA1LCA1LCA1LCAwLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCiAgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA2LCA2LCA2LCA2LCAyNSwgNiwgNiwgNiwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKICAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgNSwgNSwgMTIwLCA1LCA1LCA1LCA1LCAxMjAsIDUsIDUsIDIwLCAxMjAsIDEyMCwgMTIwLCAyMCwgMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDIwLCA1LCAxMjAsIDUsIDUsIDM1MiwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDEyMCwgNSwgMzUzLCA1LCAxMjAsIDUsIDM1NCwgMzU1LCAxMjAsIDEyMCwgMzUyLCAyMCwgMTIwLCAxMjAsIDM1NiwgMTIwLCAKKyAgICAxMjAsIDIwLCA1LCAxMjAsIDUsIDUsIDM2MiwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDEyMCwgNSwgMzYzLCA1LCAxMjAsIDUsIDM2NCwgMzY1LCAxMjAsIDEyMCwgMzYyLCAyMCwgMTIwLCAxMjAsIDM2NiwgMTIwLCAKICAgICAyMCwgNTUsIDU1LCA1NSwgNTUsIDIwLCA1LCA1LCAyMCwgMjAsIDEyMCwgMTIwLCA1LCA1LCA1LCA1LCA1LCAxMjAsIDIwLCAKLSAgICAyMCwgMjAsIDIwLCA1LCA1LCA1LCA1LCAzNTcsIDUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAzNTgsIDM1OCwgMzU4LCAzNTgsIDM1OCwgMzU4LCAzNTgsIDM1OCwgMzU4LCAzNTgsIAotICAgIDM1OCwgMzU4LCAzNTgsIDM1OCwgMzU4LCAzNTgsIDM1OSwgMzU5LCAzNTksIDM1OSwgMzU5LCAzNTksIDM1OSwgMzU5LCAKLSAgICAzNTksIDM1OSwgMzU5LCAzNTksIDM1OSwgMzU5LCAzNTksIDM1OSwgMjQxLCAyNDEsIDI0MSwgMzAsIDMxLCAyNDEsIDI0MSwgCisgICAgMjAsIDIwLCAyMCwgNSwgNSwgNSwgNSwgMzY3LCA1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMzY4LCAzNjgsIDM2OCwgMzY4LCAzNjgsIDM2OCwgMzY4LCAzNjgsIDM2OCwgMzY4LCAKKyAgICAzNjgsIDM2OCwgMzY4LCAzNjgsIDM2OCwgMzY4LCAzNjksIDM2OSwgMzY5LCAzNjksIDM2OSwgMzY5LCAzNjksIDM2OSwgCisgICAgMzY5LCAzNjksIDM2OSwgMzY5LCAzNjksIDM2OSwgMzY5LCAzNjksIDI0MSwgMjQxLCAyNDEsIDMwLCAzMSwgMjQxLCAyNDEsIAogICAgIDI0MSwgMjQxLCAyNywgNSwgNSwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCkBAIC0yNzYyLDI4ICsyODAxLDI4IEBACiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDIyLCAyMywgMzQ2LCAKLSAgICAzNDcsIDM0OCwgMzQ5LCAzNTAsIDM1MSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNiwgCi0gICAgMjIsIDIzLCAzNDYsIDM0NywgMzQ4LCAzNDksIDM1MCwgMzUxLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI2LCAyMiwgMjMsIDM0NiwgMzQ3LCAzNDgsIDM0OSwgMzUwLCAzNTEsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyMiwgMjMsIDM1NiwgCisgICAgMzU3LCAzNTgsIDM1OSwgMzYwLCAzNjEsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjYsIAorICAgIDIyLCAyMywgMzU2LCAzNTcsIDM1OCwgMzU5LCAzNjAsIDM2MSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNiwgMjIsIDIzLCAzNTYsIDM1NywgMzU4LCAzNTksIDM2MCwgMzYxLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKICAgICAyNywgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgCi0gICAgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIAotICAgIDM2MCwgMzYwLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAKLSAgICAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgCi0gICAgMzQ1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjYsIDIyLCAyMywgMzQ2LCAzNDcsIDM0OCwgCi0gICAgMzQ5LCAzNTAsIDM1MSwgMjcsIDM0NSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMzcwLCAzNzAsIDM3MCwgMzcwLCAzNzAsIDM3MCwgMzcwLCAzNzAsIDM3MCwgMzcwLCAKKyAgICAzNzAsIDM3MCwgMzcwLCAzNzAsIDM3MCwgMzcwLCAzNzAsIDM3MCwgMzcwLCAzNzAsIDM3MCwgMzcwLCAzNzAsIDM3MCwgCisgICAgMzcwLCAzNzAsIDM3MSwgMzcxLCAzNzEsIDM3MSwgMzcxLCAzNzEsIDM3MSwgMzcxLCAzNzEsIDM3MSwgMzcxLCAzNzEsIAorICAgIDM3MSwgMzcxLCAzNzEsIDM3MSwgMzcxLCAzNzEsIDM3MSwgMzcxLCAzNzEsIDM3MSwgMzcxLCAzNzEsIDM3MSwgMzcxLCAKKyAgICAzNTUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNiwgMjIsIDIzLCAzNTYsIDM1NywgMzU4LCAKKyAgICAzNTksIDM2MCwgMzYxLCAyNywgMzU1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCAyNiwgMjIsIDIzLCAzNDYsIDM0NywgMzQ4LCAzNDksIDM1MCwgMzUxLCAyNywgMjYsIDIyLCAKLSAgICAyMywgMzQ2LCAzNDcsIDM0OCwgMzQ5LCAzNTAsIDM1MSwgMjcsIDI2LCAyMiwgMjMsIDM0NiwgMzQ3LCAzNDgsIDM0OSwgCi0gICAgMzUwLCAzNTEsIDI3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCAyNiwgMjIsIDIzLCAzNTYsIDM1NywgMzU4LCAzNTksIDM2MCwgMzYxLCAyNywgMjYsIDIyLCAKKyAgICAyMywgMzU2LCAzNTcsIDM1OCwgMzU5LCAzNjAsIDM2MSwgMjcsIDI2LCAyMiwgMjMsIDM1NiwgMzU3LCAzNTgsIDM1OSwgCisgICAgMzYwLCAzNjEsIDI3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKQEAgLTI4MDUsMTggKzI4NDQsMTggQEAKICAgICAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgCiAgICAgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIAogICAgIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAwLCAKLSAgICAzMCwgMzEsIDM2MiwgMzYzLCAzNjQsIDM2NSwgMzY2LCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzNjcsIDM2OCwgMzY5LCAKLSAgICAzNzAsIDIwLCAzMCwgMzEsIDIwLCAzMCwgMzEsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTAxLCAxMDEsIDM3MSwgMzcxLCAzMCwgCisgICAgMzAsIDMxLCAzNzIsIDM3MywgMzc0LCAzNzUsIDM3NiwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzc3LCAzNzgsIDM3OSwgCisgICAgMzgwLCAyMCwgMzAsIDMxLCAyMCwgMzAsIDMxLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDEwMSwgMTAxLCAzODEsIDM4MSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDIwLCA1LCA1LCA1LCA1LCA1LCA1LCAzMCwgMzEsIDMwLCAzMSwgCi0gICAgMjUsIDI1LCAyNSwgMzAsIDMxLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCAyNywgNSwgNSwgMzcyLCAzNzIsIDM3MiwgCi0gICAgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIAotICAgIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAKLSAgICAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDAsIDM3MiwgMCwgMCwgMCwgMCwgMCwgMzcyLCAwLCAwLCA1NSwgCisgICAgMjUsIDI1LCAyNSwgMzAsIDMxLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCAyNywgNSwgNSwgMzgyLCAzODIsIDM4MiwgCisgICAgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIAorICAgIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAKKyAgICAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDAsIDM4MiwgMCwgMCwgMCwgMCwgMCwgMzgyLCAwLCAwLCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCkBAIC0yODI5LDggKzI4NjgsOCBAQAogICAgIDU1LCA1NSwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAzNzMsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDM4MywgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCkBAIC0yODgyLDE0ICsyOTIxLDE0IEBACiAgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCkBAIC0yODk4LDcgKzI5MzcsNyBAQAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCkBAIC0yOTA4LDcgKzI5NDcsNyBAQAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCkBAIC0yOTE2LDQ3ICsyOTU1LDQ3IEBACiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMzc0LCAKLSAgICA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDM4NCwgCisgICAgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAzNzQsIDU1LCAzNzQsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDM4NCwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCAzNzQsIDU1LCAzNzQsIDM3NCwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMzg0LCA1NSwgMzg0LCAzODQsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgMzc0LCAzNzQsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgMzg0LCAzODQsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKQEAgLTI5NjQsNyArMzAwMyw3IEBACiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKQEAgLTI5NzMsMTQgKzMwMTIsMTQgQEAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKQEAgLTI5ODgsOCArMzAyNyw4IEBACiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMzc0LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDM3NCwgMzc0LCAzNzQsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDM4NCwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAzODQsIDM4NCwgMzg0LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKQEAgLTMwMDIsMTEgKzMwNDEsMTEgQEAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCkBAIC0zMDE0LDEwICszMDUzLDEwIEBACiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMzAyNSw3ICszMDY0LDcgQEAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMzAzMyw0MCArMzA3Miw0MCBAQAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMzEwNiwyNiArMzE0NSwyNiBAQAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAotICAgIDMxLCAzMCwgMzEsIDEwMSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAzMCwgMzEsIDMwLCAzMSwgMzc1LCAzMCwgCi0gICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMTAyLCA2LCA2LCAzMCwgMzEsIDM3NiwgMjAsIDU1LCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMTAxLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDMwLCAzMSwgMzAsIDMxLCAzODUsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAxMDIsIDYsIDYsIDMwLCAzMSwgMzg2LCAyMCwgNTUsIDMwLCAKICAgICAzMSwgMzAsIDMxLCAyMCwgMjAsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKLSAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzc3LCAzNzgsIDM3OSwgMzgwLCAwLCAwLCAzODEsIDM4MiwgMzgzLCAzODQsIAotICAgIDMwLCAzMSwgMzAsIDMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzg3LCAzODgsIDM4OSwgMzkwLCAzODcsIDAsIDM5MSwgMzkyLCAzOTMsIAorICAgIDM5NCwgMzAsIDMxLCAzMCwgMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAxMDEsIDEwMSwgCi0gICAgMjAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgNTUsIDU1LCA1NSwgMjUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDI1LCAyNSwgMTgsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgCisgICAgMTAxLCAxMDEsIDIwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDU1LCA1NSwgNTUsIDI1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAyNSwgMjUsIDE4LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDE4LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTgsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAKLSAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDI1LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA1LCA1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAKKyAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAogICAgIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCA1LCA1NSwgNSwgNTUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgCiAgICAgMTIsIDEzLCAxNCwgMTUsIDE2LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgCkBAIC0zMTU4LDE0ICszMTk3LDE0IEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCAwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKICAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKLSAgICAyMCwgMjAsIDM4NSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDYsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMjAsIDIwLCAKLSAgICAyMCwgMjAsIDIwLCAyMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzg2LCAzODcsIDM4OCwgMzg5LCAzOTAsIAotICAgIDM5MSwgMzkyLCAzOTMsIDM5NCwgMzk1LCAzOTYsIDM5NywgMzk4LCAzOTksIDQwMCwgNDAxLCA0MDIsIDQwMywgNDA0LCAKLSAgICA0MDUsIDQwNiwgNDA3LCA0MDgsIDQwOSwgNDEwLCA0MTEsIDQxMiwgNDEzLCA0MTQsIDQxNSwgNDE2LCA0MTcsIDQxOCwgCi0gICAgNDE5LCA0MjAsIDQyMSwgNDIyLCA0MjMsIDQyNCwgNDI1LCA0MjYsIDQyNywgNDI4LCA0MjksIDQzMCwgNDMxLCA0MzIsIAotICAgIDQzMywgNDM0LCA0MzUsIDQzNiwgNDM3LCA0MzgsIDQzOSwgNDQwLCA0NDEsIDQ0MiwgNDQzLCA0NDQsIDQ0NSwgNDQ2LCAKLSAgICA0NDcsIDQ0OCwgNDQ5LCA0NTAsIDQ1MSwgNDUyLCA0NTMsIDQ1NCwgNDU1LCA0NTYsIDQ1NywgNDU4LCA0NTksIDQ2MCwgCi0gICAgNDYxLCA0NjIsIDQ2MywgNDY0LCA0NjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDIwLCAyMCwgMzk1LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgNiwgMTAxLCAxMDEsIDEwMSwgMTAxLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzOTYsIDM5NywgMzk4LCAzOTksIDQwMCwgCisgICAgNDAxLCA0MDIsIDQwMywgNDA0LCA0MDUsIDQwNiwgNDA3LCA0MDgsIDQwOSwgNDEwLCA0MTEsIDQxMiwgNDEzLCA0MTQsIAorICAgIDQxNSwgNDE2LCA0MTcsIDQxOCwgNDE5LCA0MjAsIDQyMSwgNDIyLCA0MjMsIDQyNCwgNDI1LCA0MjYsIDQyNywgNDI4LCAKKyAgICA0MjksIDQzMCwgNDMxLCA0MzIsIDQzMywgNDM0LCA0MzUsIDQzNiwgNDM3LCA0MzgsIDQzOSwgNDQwLCA0NDEsIDQ0MiwgCisgICAgNDQzLCA0NDQsIDQ0NSwgNDQ2LCA0NDcsIDQ0OCwgNDQ5LCA0NTAsIDQ1MSwgNDUyLCA0NTMsIDQ1NCwgNDU1LCA0NTYsIAorICAgIDQ1NywgNDU4LCA0NTksIDQ2MCwgNDYxLCA0NjIsIDQ2MywgNDY0LCA0NjUsIDQ2NiwgNDY3LCA0NjgsIDQ2OSwgNDcwLCAKKyAgICA0NzEsIDQ3MiwgNDczLCA0NzQsIDQ3NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDI1LCAxOCwgMTgsIDI1LCAxOCwgMTgsIDUsIDE4LCAyNSwgMCwgMCwgNywgCiAgICAgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCkBAIC0zMTg2LDE1ICszMjI1LDE1IEBACiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKQEAgLTMyMDgsOSArMzI0Nyw5IEBACiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDY2LCA0NjcsIDQ2OCwgNDY5LCAKLSAgICA0NzAsIDQ3MSwgNDcyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NzMsIDQ3NCwgNDc1LCA0NzYsIAotICAgIDQ3NywgMCwgMCwgMCwgMCwgMCwgNTUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDc2LCA0NzcsIDQ3OCwgNDc5LCAKKyAgICA0ODAsIDQ4MSwgNDgyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODMsIDQ4NCwgNDg1LCA0ODYsIAorICAgIDQ4NywgMCwgMCwgMCwgMCwgMCwgNTUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgMCwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKQEAgLTMyMjcsNyArMzI2Niw3IEBACiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA0NzgsIDQ3OCwgNDc4LCA0NzgsIDQ3OCwgNDc4LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDQ4OCwgNDg4LCA0ODgsIDQ4OCwgNDg4LCA0ODgsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMzI0MiwxMyArMzI4MSwxMyBAQAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA0NzgsIDQ3OCwgNSwgNSwgMCwgMCwgMjUsIDI1LCAyNSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDQ4OCwgNDg4LCA1LCA1LCAwLCAwLCAyNSwgMjUsIDI1LCAKICAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgNSwgNiwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKICAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDE4LCAxOCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTgsIDE4LCAxOCwgNSwgNSwgNiwgMCwgNSwgNiwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgCi0gICAgNDc4LCA1NSwgNDc4LCA1NSwgNDc4LCAwLCA0NzgsIDU1LCA0NzgsIDU1LCA0NzgsIDU1LCA0NzgsIDU1LCA0NzgsIDU1LCAKKyAgICA0ODgsIDU1LCA0ODgsIDU1LCA0ODgsIDAsIDQ4OCwgNTUsIDQ4OCwgNTUsIDQ4OCwgNTUsIDQ4OCwgNTUsIDQ4OCwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMzI2NCw3ICszMzAzLDcgQEAKICAgICA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTAyLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA0NzksIDQ3OSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDQ4OSwgNDg5LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNSwgNSwgNSwgNiwgNSwgNSwgNSwgMCwgNSwgCkBAIC0zMjkwLDcgKzMzMjksNyBAQAogICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKICAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCiAgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI3LCAyNywgNSwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjcsIDI3LCA1LCA1LCA1LCAwLCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKQEAgLTMzMjAsMjk3ICszMzU5LDMzMiBAQAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCAyNDEsIDI0MSwgMjQxLCAKICAgICAyNDEsIDI0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgwLCA0ODAsIAotICAgIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCAKLSAgICA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgCi0gICAgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIAotICAgIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCAKLSAgICA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgCi0gICAgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDkwLCA0OTAsIAorICAgIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCAKKyAgICA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgCisgICAgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIAorICAgIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCAKKyAgICA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgCisgICAgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDcsIAotICAgIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIAorICAgIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCAKKyAgICA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgCisgICAgNDkwLCA0OTAsIDQ5MCwgNDkwLCAwLCAwLCAwLCAwLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgCisgICAgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIAorICAgIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCAwLCAKKyAgICAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDAsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNSwgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgNSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDI3LCAyNywgNTUsIDU1LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDU1LCAyNSwgMjUsIDI1LCAwLCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgCi0gICAgMCwgMCwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMjUsIDI2LCAyMiwgMjMsIDM0NiwgMjcsIDI3LCAyNywgMjcsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjcsIDI3LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgMCwgCi0gICAgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwOCwgMTA4LCAKLSAgICAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgCi0gICAgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIAotICAgIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAKLSAgICAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKLSAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCi0gICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAotICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDI2LCAyMiwgMjMsIDM0NiwgMzQ3LCAzNDgsIDM0OSwgMzUwLCAzNTEsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAwLCAxOCwgMjUsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMjYsIDIyLCAyMywgMzQ2LCAzNDcsIDM0OCwgMzQ5LCAzNTAsIAotICAgIDM1MSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgCi0gICAgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMTgsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIAotICAgIDI1LCAyNSwgNSwgNSwgMjEsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgCi0gICAgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgNSwgNSwgCi0gICAgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgNSwgNSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDI1LCAyNSwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgCi0gICAgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDI1LCAyNSwgMjUsIDUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1NSwgNSwgCi0gICAgNTUsIDUsIDUsIDUsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMjUsIDE4LCAyNSwgMjUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDI1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIAotICAgIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDE4LCAxOCwgMCwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCA1NSwgMTgsIAotICAgIDE4LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDAsIDAsIDE4LCAxOCwgMCwgMCwgMTgsIDE4LCAxOCwgMCwgMCwgNTUsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMCwgMCwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDE4LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDE4LCAyNSwgMjUsIDU1LCA1NSwgCi0gICAgNSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAxOCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAxOCwgMjUsIAotICAgIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCA1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMTgsIDE4LCAyNSwgMTgsIDI1LCAyNSwgNSwgNSwgNSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIAotICAgIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDE4LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAxOCwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDE4LCAKLSAgICAxOCwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgCi0gICAgMTIsIDEzLCAxNCwgMTUsIDE2LCAyNywgMjcsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMCwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDI3LCAyNywgNTUsIDU1LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDU1LCAyNSwgMjUsIDI1LCAwLCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIAorICAgIDI1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDI1LCAyNiwgMjIsIDIzLCAzNTYsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3LCAyNywgNSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgCisgICAgMjUsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA3LCA4LCA5LCAxMCwgMTEsIAotICAgIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIAorICAgIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAKKyAgICAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgCisgICAgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCisgICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAorICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKKyAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjIsIDIzLCAzNTYsIDM1NywgMzU4LCAzNTksIDM2MCwgMzYxLCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMCwgMTgsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTAyLCAxMDIsIDEwMiwgMTAyLCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAyNiwgMjIsIDIzLCAzNTYsIDM1NywgMzU4LCAKKyAgICAzNTksIDM2MCwgMzYxLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDcsIDgsIDksIDEwLCAKKyAgICAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgCisgICAgMjUsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDE4LCAxOCwgMjUsIDI1LCA1LCA1LCAyMSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAKKyAgICAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIAorICAgIDE2LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCA1LCA1LCA1NSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNSwgNSwgNSwgNSwgNSwgMjUsIDI1LCAyNSwgNSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgCisgICAgMTYsIDU1LCA1LCA1NSwgNSwgNSwgNSwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMTgsIDE4LCAyNSwgMTgsIDI1LCAKKyAgICAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDI1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDE4LCAxOCwgCisgICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIAorICAgIDI1LCA1NSwgMTgsIDE4LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDAsIDAsIDE4LCAxOCwgMCwgMCwgMTgsIDE4LCAxOCwgMCwgMCwgCisgICAgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMCwgCisgICAgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMjUsIAorICAgIDI1LCAyNSwgMTgsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgNSwgNSwgNSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIAorICAgIDE0LCAxNSwgMTYsIDAsIDUsIDAsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgCisgICAgMTgsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMTgsIDI1LCAyNSwgNTUsIDU1LCA1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDAsIDAsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDE4LCAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAyNSwgMTgsIDI1LCAyNSwgCisgICAgNSwgNSwgNSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAKKyAgICAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMjUsIDE4LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDE4LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAyNywgCisgICAgMjcsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCisgICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCisgICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCisgICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCA3LCA4LCA5LCAxMCwgMTEsIAorICAgIDEyLCAxMywgMTQsIDE1LCAxNiwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgNTUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgCisgICAgMTUsIDE2LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMCwgMCwgMCwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAyNSwgCisgICAgMTgsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAwLCA1LCA1LCA1LCAKKyAgICA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCA1LCA1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxMDIsIDEwMiwgCisgICAgMTAyLCAxMDIsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAKKyAgICAxNCwgMTUsIDE2LCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIAogICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIAotICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIAotICAgIDE4LCAxOCwgMTgsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAKKyAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgCisgICAgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNSwgMjUsIDI1LCA1LCAyMSwgCi0gICAgMjEsIDIxLCAyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1LCAyNSwgMjUsIDUsIAorICAgIDIxLCAyMSwgMjEsIDIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDE4LCAKLSAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCA1LCA1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjUsIDI1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIAorICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCA1LCA1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjUsIDI1LCAKICAgICAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtMzcwMCwyMTggKzM3NzQsMjIxIEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAwLCAyNSwgMjUsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCAwLCAwLCA1NSwgMCwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDU1LCAwLCAwLCAwLCAwLCA1NSwgMCwgNTUsIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgCi0gICAgNTUsIDAsIDU1LCAwLCAwLCA1NSwgMCwgNTUsIDAsIDU1LCAwLCA1NSwgMCwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDAsIDAsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgCisgICAgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIAorICAgIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCAKKyAgICA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgCisgICAgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIAorICAgIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAKKyAgICA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgCisgICAgNTUsIDAsIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDAsIDU1LCAwLCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDAsIDAsIDAsIDAsIDU1LCAwLCA1NSwgMCwgNTUsIDAsIAorICAgIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDAsIDAsIDU1LCAwLCA1NSwgMCwgNTUsIDAsIDU1LCAwLCA1NSwgMCwgCisgICAgNTUsIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIAorICAgIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDM0NSwgMzQ1LCAyNiwgMjIsIDIzLCAzNDYsIDM0NywgMzQ4LCAzNDksIDM1MCwgMzUxLCAyNywgMjcsIDAsIDAsIDAsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1NSwgMzU1LCAyNiwgMjIsIDIzLCAzNTYsIDM1NywgMzU4LCAzNTksIDM2MCwgCisgICAgMzYxLCAyNywgMjcsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCAKKyAgICA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgCisgICAgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA1LCA1LCA1LCA1LCA1LCA1LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIAorICAgIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCAKKyAgICA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNSwgNSwgMCwgMCwgMCwgMCwgNDk0LCA0OTQsIDQ5NCwgCisgICAgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIAorICAgIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgCi0gICAgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIAotICAgIDQ4MiwgNDgyLCA1LCA1LCA1LCA1LCA1LCA1LCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCAKLSAgICA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgCi0gICAgNDgyLCA0ODIsIDQ4MiwgNSwgNSwgMCwgMCwgMCwgMCwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIAotICAgIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCAKLSAgICA0ODIsIDQ4MiwgNDgyLCA0ODIsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIAorICAgIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDYsIDYsIDYsIDYsIDYsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDYsIDYsIDYsIDYsIDYsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDAsIDAsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDM3NCwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMSwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAKKyAgICAwLCAwLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIAogICAgIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIAogICAgIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIAogICAgIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIAogICAgIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIAotICAgIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIApAQCAtMzkyNCwxMyArNDAwMSwxMyBAQAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAogICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAogICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAogICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAogICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAotICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDAsIDAsIAorICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDAsIDAsIAogfTsKIAogLyogUmV0dXJucyB0aGUgbnVtZXJpYyB2YWx1ZSBhcyBkb3VibGUgZm9yIFVuaWNvZGUgY2hhcmFjdGVycwpAQCAtMzk5NiwxMSArNDA3MywxMyBAQAogICAgIGNhc2UgMHgxMTEzNjoKICAgICBjYXNlIDB4MTExRDA6CiAgICAgY2FzZSAweDExMkYwOgorICAgIGNhc2UgMHgxMTQ1MDoKICAgICBjYXNlIDB4MTE0RDA6CiAgICAgY2FzZSAweDExNjUwOgogICAgIGNhc2UgMHgxMTZDMDoKICAgICBjYXNlIDB4MTE3MzA6CiAgICAgY2FzZSAweDExOEUwOgorICAgIGNhc2UgMHgxMUM1MDoKICAgICBjYXNlIDB4MTZBNjA6CiAgICAgY2FzZSAweDE2QjUwOgogICAgIGNhc2UgMHgxRDdDRToKQEAgLTQwMDgsNiArNDA4Nyw3IEBACiAgICAgY2FzZSAweDFEN0UyOgogICAgIGNhc2UgMHgxRDdFQzoKICAgICBjYXNlIDB4MUQ3RjY6CisgICAgY2FzZSAweDFFOTUwOgogICAgIGNhc2UgMHgxRjEwMDoKICAgICBjYXNlIDB4MUYxMDE6CiAgICAgY2FzZSAweDFGMTBCOgpAQCAtNDEwOCwxMSArNDE4OCwxNCBAQAogICAgIGNhc2UgMHgxMTFEMToKICAgICBjYXNlIDB4MTExRTE6CiAgICAgY2FzZSAweDExMkYxOgorICAgIGNhc2UgMHgxMTQ1MToKICAgICBjYXNlIDB4MTE0RDE6CiAgICAgY2FzZSAweDExNjUxOgogICAgIGNhc2UgMHgxMTZDMToKICAgICBjYXNlIDB4MTE3MzE6CiAgICAgY2FzZSAweDExOEUxOgorICAgIGNhc2UgMHgxMUM1MToKKyAgICBjYXNlIDB4MTFDNUE6CiAgICAgY2FzZSAweDEyNDE1OgogICAgIGNhc2UgMHgxMjQxRToKICAgICBjYXNlIDB4MTI0MkM6CkBAIC00MTI4LDE3ICs0MjExLDIyIEBACiAgICAgY2FzZSAweDFEN0VEOgogICAgIGNhc2UgMHgxRDdGNzoKICAgICBjYXNlIDB4MUU4Qzc6CisgICAgY2FzZSAweDFFOTUxOgogICAgIGNhc2UgMHgxRjEwMjoKICAgICBjYXNlIDB4MjA5MkE6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAxLjA7CisgICAgY2FzZSAweDBENUM6CiAgICAgY2FzZSAweDIxNTI6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAxLjAvMTAuMDsKICAgICBjYXNlIDB4MTA5RjY6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAxLjAvMTIuMDsKICAgICBjYXNlIDB4MDlGNDoKICAgICBjYXNlIDB4MEI3NToKKyAgICBjYXNlIDB4MEQ3NjoKICAgICBjYXNlIDB4QTgzMzoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDEuMC8xNi4wOworICAgIGNhc2UgMHgwRDU4OgorICAgICAgICByZXR1cm4gKGRvdWJsZSkgMS4wLzE2MC4wOwogICAgIGNhc2UgMHgwMEJEOgogICAgIGNhc2UgMHgwQjczOgogICAgIGNhc2UgMHgwRDc0OgpAQCAtNDE1Miw2ICs0MjQwLDggQEAKICAgICBjYXNlIDB4MTBFN0I6CiAgICAgY2FzZSAweDEyNDY0OgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMS4wLzIuMDsKKyAgICBjYXNlIDB4MEQ1QjoKKyAgICAgICAgcmV0dXJuIChkb3VibGUpIDEuMC8yMC4wOwogICAgIGNhc2UgMHgyMTUzOgogICAgIGNhc2UgMHgxMEU3RDoKICAgICBjYXNlIDB4MTI0NUE6CkBAIC00MTcwLDYgKzQyNjAsOSBAQAogICAgIGNhc2UgMHgxMjQ2MjoKICAgICBjYXNlIDB4MTI0NjM6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAxLjAvNC4wOworICAgIGNhc2UgMHgwRDU5OgorICAgICAgICByZXR1cm4gKGRvdWJsZSkgMS4wLzQwLjA7CisgICAgY2FzZSAweDBENUU6CiAgICAgY2FzZSAweDIxNTU6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAxLjAvNS4wOwogICAgIGNhc2UgMHgyMTU5OgpAQCAtNDE3OSw2ICs0MjcyLDcgQEAKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDEuMC83LjA7CiAgICAgY2FzZSAweDA5RjU6CiAgICAgY2FzZSAweDBCNzY6CisgICAgY2FzZSAweDBENzc6CiAgICAgY2FzZSAweDIxNUI6CiAgICAgY2FzZSAweEE4MzQ6CiAgICAgY2FzZSAweDEyNDVGOgpAQCAtNDIzNiw2ICs0MzMwLDcgQEAKICAgICBjYXNlIDB4MTExRUE6CiAgICAgY2FzZSAweDExNzNBOgogICAgIGNhc2UgMHgxMThFQToKKyAgICBjYXNlIDB4MTFDNjM6CiAgICAgY2FzZSAweDE2QjVCOgogICAgIGNhc2UgMHgxRDM2OToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDEwLjA7CkBAIC00MjY5LDYgKzQzNjQsNyBAQAogICAgIGNhc2UgMHgxMEU3MjoKICAgICBjYXNlIDB4MTEwNjQ6CiAgICAgY2FzZSAweDExMUYzOgorICAgIGNhc2UgMHgxMUM2QzoKICAgICBjYXNlIDB4MTZCNUM6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAxMDAuMDsKICAgICBjYXNlIDB4MEJGMjoKQEAgLTQ0NzAsMTEgKzQ1NjYsMTQgQEAKICAgICBjYXNlIDB4MTExRDI6CiAgICAgY2FzZSAweDExMUUyOgogICAgIGNhc2UgMHgxMTJGMjoKKyAgICBjYXNlIDB4MTE0NTI6CiAgICAgY2FzZSAweDExNEQyOgogICAgIGNhc2UgMHgxMTY1MjoKICAgICBjYXNlIDB4MTE2QzI6CiAgICAgY2FzZSAweDExNzMyOgogICAgIGNhc2UgMHgxMThFMjoKKyAgICBjYXNlIDB4MTFDNTI6CisgICAgY2FzZSAweDExQzVCOgogICAgIGNhc2UgMHgxMjQwMDoKICAgICBjYXNlIDB4MTI0MTY6CiAgICAgY2FzZSAweDEyNDFGOgpAQCAtNDQ5NCw2ICs0NTkzLDcgQEAKICAgICBjYXNlIDB4MUQ3RUU6CiAgICAgY2FzZSAweDFEN0Y4OgogICAgIGNhc2UgMHgxRThDODoKKyAgICBjYXNlIDB4MUU5NTI6CiAgICAgY2FzZSAweDFGMTAzOgogICAgIGNhc2UgMHgyMjM5MDoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDIuMDsKQEAgLTQ1MzcsNiArNDYzNyw3IEBACiAgICAgY2FzZSAweDExMUVCOgogICAgIGNhc2UgMHgxMTczQjoKICAgICBjYXNlIDB4MTE4RUI6CisgICAgY2FzZSAweDExQzY0OgogICAgIGNhc2UgMHgxRDM2QToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDIwLjA7CiAgICAgY2FzZSAweDEwMTFBOgpAQCAtNDY1NywxMSArNDc1OCwxNCBAQAogICAgIGNhc2UgMHgxMTFEMzoKICAgICBjYXNlIDB4MTExRTM6CiAgICAgY2FzZSAweDExMkYzOgorICAgIGNhc2UgMHgxMTQ1MzoKICAgICBjYXNlIDB4MTE0RDM6CiAgICAgY2FzZSAweDExNjUzOgogICAgIGNhc2UgMHgxMTZDMzoKICAgICBjYXNlIDB4MTE3MzM6CiAgICAgY2FzZSAweDExOEUzOgorICAgIGNhc2UgMHgxMUM1MzoKKyAgICBjYXNlIDB4MTFDNUM6CiAgICAgY2FzZSAweDEyNDAxOgogICAgIGNhc2UgMHgxMjQwODoKICAgICBjYXNlIDB4MTI0MTc6CkBAIC00Njg2LDYgKzQ3OTAsNyBAQAogICAgIGNhc2UgMHgxRDdFRjoKICAgICBjYXNlIDB4MUQ3Rjk6CiAgICAgY2FzZSAweDFFOEM5OgorICAgIGNhc2UgMHgxRTk1MzoKICAgICBjYXNlIDB4MUYxMDQ6CiAgICAgY2FzZSAweDIwQUZEOgogICAgIGNhc2UgMHgyMEIxOToKQEAgLTQ2OTYsMTAgKzQ4MDEsMTMgQEAKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDMuMC8xMi4wOwogICAgIGNhc2UgMHgwOUY2OgogICAgIGNhc2UgMHgwQjc3OgorICAgIGNhc2UgMHgwRDc4OgogICAgIGNhc2UgMHhBODM1OgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMy4wLzE2LjA7CiAgICAgY2FzZSAweDBGMkI6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAzLjAvMi4wOworICAgIGNhc2UgMHgwRDVEOgorICAgICAgICByZXR1cm4gKGRvdWJsZSkgMy4wLzIwLjA7CiAgICAgY2FzZSAweDAwQkU6CiAgICAgY2FzZSAweDA5Rjg6CiAgICAgY2FzZSAweDBCNzQ6CkBAIC00NzExLDYgKzQ4MTksOCBAQAogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMy4wLzUuMDsKICAgICBjYXNlIDB4MjE1QzoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDMuMC84LjA7CisgICAgY2FzZSAweDBENUE6CisgICAgICAgIHJldHVybiAoZG91YmxlKSAzLjAvODAuMDsKICAgICBjYXNlIDB4MTM3NDoKICAgICBjYXNlIDB4MzAzQToKICAgICBjYXNlIDB4MzI0QToKQEAgLTQ3MjQsNiArNDgzNCw3IEBACiAgICAgY2FzZSAweDExMDVEOgogICAgIGNhc2UgMHgxMTFFQzoKICAgICBjYXNlIDB4MTE4RUM6CisgICAgY2FzZSAweDExQzY1OgogICAgIGNhc2UgMHgxRDM2QjoKICAgICBjYXNlIDB4MjA5ODM6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAzMC4wOwpAQCAtNDgzNiwxMSArNDk0NywxNCBAQAogICAgIGNhc2UgMHgxMTFENDoKICAgICBjYXNlIDB4MTExRTQ6CiAgICAgY2FzZSAweDExMkY0OgorICAgIGNhc2UgMHgxMTQ1NDoKICAgICBjYXNlIDB4MTE0RDQ6CiAgICAgY2FzZSAweDExNjU0OgogICAgIGNhc2UgMHgxMTZDNDoKICAgICBjYXNlIDB4MTE3MzQ6CiAgICAgY2FzZSAweDExOEU0OgorICAgIGNhc2UgMHgxMUM1NDoKKyAgICBjYXNlIDB4MTFDNUQ6CiAgICAgY2FzZSAweDEyNDAyOgogICAgIGNhc2UgMHgxMjQwOToKICAgICBjYXNlIDB4MTI0MEY6CkBAIC00ODY2LDYgKzQ5ODAsNyBAQAogICAgIGNhc2UgMHgxRDdGMDoKICAgICBjYXNlIDB4MUQ3RkE6CiAgICAgY2FzZSAweDFFOENBOgorICAgIGNhc2UgMHgxRTk1NDoKICAgICBjYXNlIDB4MUYxMDU6CiAgICAgY2FzZSAweDIwMDY0OgogICAgIGNhc2UgMHgyMDBFMjoKQEAgLTQ4ODYsNiArNTAwMSw3IEBACiAgICAgY2FzZSAweDExMDVFOgogICAgIGNhc2UgMHgxMTFFRDoKICAgICBjYXNlIDB4MTE4RUQ6CisgICAgY2FzZSAweDExQzY2OgogICAgIGNhc2UgMHgxMjQ2NzoKICAgICBjYXNlIDB4MUQzNkM6CiAgICAgY2FzZSAweDIwOThDOgpAQCAtNTAwNSwxMSArNTEyMSwxNCBAQAogICAgIGNhc2UgMHgxMTFENToKICAgICBjYXNlIDB4MTExRTU6CiAgICAgY2FzZSAweDExMkY1OgorICAgIGNhc2UgMHgxMTQ1NToKICAgICBjYXNlIDB4MTE0RDU6CiAgICAgY2FzZSAweDExNjU1OgogICAgIGNhc2UgMHgxMTZDNToKICAgICBjYXNlIDB4MTE3MzU6CiAgICAgY2FzZSAweDExOEU1OgorICAgIGNhc2UgMHgxMUM1NToKKyAgICBjYXNlIDB4MTFDNUU6CiAgICAgY2FzZSAweDEyNDAzOgogICAgIGNhc2UgMHgxMjQwQToKICAgICBjYXNlIDB4MTI0MTA6CkBAIC01MDMxLDYgKzUxNTAsNyBAQAogICAgIGNhc2UgMHgxRDdGMToKICAgICBjYXNlIDB4MUQ3RkI6CiAgICAgY2FzZSAweDFFOENCOgorICAgIGNhc2UgMHgxRTk1NToKICAgICBjYXNlIDB4MUYxMDY6CiAgICAgY2FzZSAweDIwMTIxOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNS4wOwpAQCAtNTA2Nyw2ICs1MTg3LDcgQEAKICAgICBjYXNlIDB4MTEwNUY6CiAgICAgY2FzZSAweDExMUVFOgogICAgIGNhc2UgMHgxMThFRToKKyAgICBjYXNlIDB4MTFDNjc6CiAgICAgY2FzZSAweDEyNDY4OgogICAgIGNhc2UgMHgxRDM2RDoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDUwLjA7CkBAIC01MTcyLDExICs1MjkzLDE0IEBACiAgICAgY2FzZSAweDExMUQ2OgogICAgIGNhc2UgMHgxMTFFNjoKICAgICBjYXNlIDB4MTEyRjY6CisgICAgY2FzZSAweDExNDU2OgogICAgIGNhc2UgMHgxMTRENjoKICAgICBjYXNlIDB4MTE2NTY6CiAgICAgY2FzZSAweDExNkM2OgogICAgIGNhc2UgMHgxMTczNjoKICAgICBjYXNlIDB4MTE4RTY6CisgICAgY2FzZSAweDExQzU2OgorICAgIGNhc2UgMHgxMUM1RjoKICAgICBjYXNlIDB4MTI0MDQ6CiAgICAgY2FzZSAweDEyNDBCOgogICAgIGNhc2UgMHgxMjQxMToKQEAgLTUxOTQsNiArNTMxOCw3IEBACiAgICAgY2FzZSAweDFEN0YyOgogICAgIGNhc2UgMHgxRDdGQzoKICAgICBjYXNlIDB4MUU4Q0M6CisgICAgY2FzZSAweDFFOTU2OgogICAgIGNhc2UgMHgxRjEwNzoKICAgICBjYXNlIDB4MjBBRUE6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA2LjA7CkBAIC01MjA4LDYgKzUzMzMsNyBAQAogICAgIGNhc2UgMHgxMTA2MDoKICAgICBjYXNlIDB4MTExRUY6CiAgICAgY2FzZSAweDExOEVGOgorICAgIGNhc2UgMHgxMUM2ODoKICAgICBjYXNlIDB4MUQzNkU6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA2MC4wOwogICAgIGNhc2UgMHgxMDExRToKQEAgLTUyOTMsMTEgKzU0MTksMTQgQEAKICAgICBjYXNlIDB4MTExRDc6CiAgICAgY2FzZSAweDExMUU3OgogICAgIGNhc2UgMHgxMTJGNzoKKyAgICBjYXNlIDB4MTE0NTc6CiAgICAgY2FzZSAweDExNEQ3OgogICAgIGNhc2UgMHgxMTY1NzoKICAgICBjYXNlIDB4MTE2Qzc6CiAgICAgY2FzZSAweDExNzM3OgogICAgIGNhc2UgMHgxMThFNzoKKyAgICBjYXNlIDB4MTFDNTc6CisgICAgY2FzZSAweDExQzYwOgogICAgIGNhc2UgMHgxMjQwNToKICAgICBjYXNlIDB4MTI0MEM6CiAgICAgY2FzZSAweDEyNDEyOgpAQCAtNTMxNiw2ICs1NDQ1LDcgQEAKICAgICBjYXNlIDB4MUQ3RjM6CiAgICAgY2FzZSAweDFEN0ZEOgogICAgIGNhc2UgMHgxRThDRDoKKyAgICBjYXNlIDB4MUU5NTc6CiAgICAgY2FzZSAweDFGMTA4OgogICAgIGNhc2UgMHgyMDAwMToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDcuMDsKQEAgLTUzMzQsNiArNTQ2NCw3IEBACiAgICAgY2FzZSAweDExMDYxOgogICAgIGNhc2UgMHgxMTFGMDoKICAgICBjYXNlIDB4MTE4RjA6CisgICAgY2FzZSAweDExQzY5OgogICAgIGNhc2UgMHgxRDM2RjoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDcwLjA7CiAgICAgY2FzZSAweDEwMTFGOgpAQCAtNTQxNywxMSArNTU0OCwxNCBAQAogICAgIGNhc2UgMHgxMTFEODoKICAgICBjYXNlIDB4MTExRTg6CiAgICAgY2FzZSAweDExMkY4OgorICAgIGNhc2UgMHgxMTQ1ODoKICAgICBjYXNlIDB4MTE0RDg6CiAgICAgY2FzZSAweDExNjU4OgogICAgIGNhc2UgMHgxMTZDODoKICAgICBjYXNlIDB4MTE3Mzg6CiAgICAgY2FzZSAweDExOEU4OgorICAgIGNhc2UgMHgxMUM1ODoKKyAgICBjYXNlIDB4MTFDNjE6CiAgICAgY2FzZSAweDEyNDA2OgogICAgIGNhc2UgMHgxMjQwRDoKICAgICBjYXNlIDB4MTI0MTM6CkBAIC01NDM5LDYgKzU1NzMsNyBAQAogICAgIGNhc2UgMHgxRDdGNDoKICAgICBjYXNlIDB4MUQ3RkU6CiAgICAgY2FzZSAweDFFOENFOgorICAgIGNhc2UgMHgxRTk1ODoKICAgICBjYXNlIDB4MUYxMDk6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA4LjA7CiAgICAgY2FzZSAweDEwOUZEOgpAQCAtNTQ1MSw2ICs1NTg2LDcgQEAKICAgICBjYXNlIDB4MTEwNjI6CiAgICAgY2FzZSAweDExMUYxOgogICAgIGNhc2UgMHgxMThGMToKKyAgICBjYXNlIDB4MTFDNkE6CiAgICAgY2FzZSAweDFEMzcwOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgODAuMDsKICAgICBjYXNlIDB4MTAxMjA6CkBAIC01NTM1LDExICs1NjcxLDE0IEBACiAgICAgY2FzZSAweDExMUQ5OgogICAgIGNhc2UgMHgxMTFFOToKICAgICBjYXNlIDB4MTEyRjk6CisgICAgY2FzZSAweDExNDU5OgogICAgIGNhc2UgMHgxMTREOToKICAgICBjYXNlIDB4MTE2NTk6CiAgICAgY2FzZSAweDExNkM5OgogICAgIGNhc2UgMHgxMTczOToKICAgICBjYXNlIDB4MTE4RTk6CisgICAgY2FzZSAweDExQzU5OgorICAgIGNhc2UgMHgxMUM2MjoKICAgICBjYXNlIDB4MTI0MDc6CiAgICAgY2FzZSAweDEyNDBFOgogICAgIGNhc2UgMHgxMjQxNDoKQEAgLTU1NTksNiArNTY5OCw3IEBACiAgICAgY2FzZSAweDFEN0Y1OgogICAgIGNhc2UgMHgxRDdGRjoKICAgICBjYXNlIDB4MUU4Q0Y6CisgICAgY2FzZSAweDFFOTU5OgogICAgIGNhc2UgMHgxRjEwQToKICAgICBjYXNlIDB4MkY4OTA6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA5LjA7CkBAIC01NTc0LDYgKzU3MTQsNyBAQAogICAgIGNhc2UgMHgxMTA2MzoKICAgICBjYXNlIDB4MTExRjI6CiAgICAgY2FzZSAweDExOEYyOgorICAgIGNhc2UgMHgxMUM2QjoKICAgICBjYXNlIDB4MUQzNzE6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA5MC4wOwogICAgIGNhc2UgMHgxMDEyMToKZGlmZiAtLWdpdCBhL09iamVjdHMvd2Vha3JlZm9iamVjdC5jIGIvT2JqZWN0cy93ZWFrcmVmb2JqZWN0LmMKaW5kZXggN2U2ZjM2NC4uYWI2YjIzNSAxMDA2NDQKLS0tIGEvT2JqZWN0cy93ZWFrcmVmb2JqZWN0LmMKKysrIGIvT2JqZWN0cy93ZWFrcmVmb2JqZWN0LmMKQEAgLTI2NSw3ICsyNjUsNyBAQAogfQogCiBzdGF0aWMgaW50Ci1wYXJzZV93ZWFrcmVmX2luaXRfYXJncyhjaGFyICpmdW5jbmFtZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MsCitwYXJzZV93ZWFrcmVmX2luaXRfYXJncyhjb25zdCBjaGFyICpmdW5jbmFtZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKm9icCwgUHlPYmplY3QgKipjYWxsYmFja3ApCiB7CiAgICAgcmV0dXJuIFB5QXJnX1VucGFja1R1cGxlKGFyZ3MsIGZ1bmNuYW1lLCAxLCAyLCBvYnAsIGNhbGxiYWNrcCk7CkBAIC00NTMsNyArNDUzLDcgQEAKICAgICBtZXRob2QoUHlPYmplY3QgKnByb3h5KSB7IFwKICAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKHNwZWNpYWwpOyBcCiAgICAgICAgICAgICBVTldSQVAocHJveHkpOyBcCi0gICAgICAgICAgICAgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocHJveHksICZQeUlkXyMjc3BlY2lhbCwgIiIpOyBcCisgICAgICAgICAgICAgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocHJveHksICZQeUlkXyMjc3BlY2lhbCwgTlVMTCk7IFwKICAgICAgICAgfQogCiAKZGlmZiAtLWdpdCBhL1BDL19tc2kuYyBiL1BDL19tc2kuYwppbmRleCA5ZTdlMzZkLi43ODliMDRmIDEwMDY0NAotLS0gYS9QQy9fbXNpLmMKKysrIGIvUEMvX21zaS5jCkBAIC0xMDQ2LDEyICsxMDQ2LDEyIEBACiAgICAgaWYgKG0gPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNJREJPUEVOX0NSRUFURURJUkVDVCIsIChpbnQpTVNJREJPUEVOX0NSRUFURURJUkVDVCk7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TSURCT1BFTl9DUkVBVEUiLCAoaW50KU1TSURCT1BFTl9DUkVBVEUpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0lEQk9QRU5fRElSRUNUIiwgKGludClNU0lEQk9QRU5fRElSRUNUKTsKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNJREJPUEVOX1JFQURPTkxZIiwgKGludClNU0lEQk9QRU5fUkVBRE9OTFkpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0lEQk9QRU5fVFJBTlNBQ1QiLCAoaW50KU1TSURCT1BFTl9UUkFOU0FDVCk7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TSURCT1BFTl9QQVRDSEZJTEUiLCAoaW50KU1TSURCT1BFTl9QQVRDSEZJTEUpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0lEQk9QRU5fQ1JFQVRFRElSRUNUIiwgKGxvbmcpTVNJREJPUEVOX0NSRUFURURJUkVDVCk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TSURCT1BFTl9DUkVBVEUiLCAobG9uZylNU0lEQk9QRU5fQ1JFQVRFKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNJREJPUEVOX0RJUkVDVCIsIChsb25nKU1TSURCT1BFTl9ESVJFQ1QpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0lEQk9QRU5fUkVBRE9OTFkiLCAobG9uZylNU0lEQk9QRU5fUkVBRE9OTFkpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0lEQk9QRU5fVFJBTlNBQ1QiLCAobG9uZylNU0lEQk9QRU5fVFJBTlNBQ1QpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0lEQk9QRU5fUEFUQ0hGSUxFIiwgKGxvbmcpTVNJREJPUEVOX1BBVENIRklMRSk7CiAKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBNU0lDT0xJTkZPX05BTUVTKTsKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBNU0lDT0xJTkZPX1RZUEVTKTsKZGlmZiAtLWdpdCBhL1BDL190ZXN0Y29uc29sZS5jIGIvUEMvX3Rlc3Rjb25zb2xlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWM5MzY3OQotLS0gL2Rldi9udWxsCisrKyBiL1BDL190ZXN0Y29uc29sZS5jCkBAIC0wLDAgKzEsMTMxIEBACisKKy8qIFRlc3RpbmcgbW9kdWxlIGZvciBtdWx0aS1waGFzZSBpbml0aWFsaXphdGlvbiBvZiBleHRlbnNpb24gbW9kdWxlcyAoUEVQIDQ4OSkKKyAqLworCisjaW5jbHVkZSAiUHl0aG9uLmgiCisKKyNpZmRlZiBNU19XSU5ET1dTCisKKyNpbmNsdWRlICIuLlxtb2R1bGVzXF9pb1xfaW9tb2R1bGUuaCIKKworI2RlZmluZSBXSU4zMl9MRUFOX0FORF9NRUFOCisjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisKKyAvKiBUaGUgZnVsbCBkZWZpbml0aW9uIGlzIGluIGlvbW9kdWxlLiBXZSByZXByb2R1Y2UKKyBlbm91Z2ggaGVyZSB0byBnZXQgdGhlIGhhbmRsZSwgd2hpY2ggaXMgYWxsIHdlIHdhbnQuICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIEhBTkRMRSBoYW5kbGU7Cit9IHdpbmNvbnNvbGVpbzsKKworCitzdGF0aWMgaW50IGV4ZWNmdW5jKFB5T2JqZWN0ICptKQoreworICAgIHJldHVybiAwOworfQorCitQeU1vZHVsZURlZl9TbG90IHRlc3Rjb25zb2xlX3Nsb3RzW10gPSB7CisgICAge1B5X21vZF9leGVjLCBleGVjZnVuY30sCisgICAgezAsIE5VTEx9LAorfTsKKworLypbY2xpbmljIGlucHV0XQorbW9kdWxlIF90ZXN0Y29uc29sZQorCitfdGVzdGNvbnNvbGUud3JpdGVfaW5wdXQKKyAgICBmaWxlOiBvYmplY3QKKyAgICBzOiBQeUJ5dGVzT2JqZWN0CisKK1dyaXRlcyBVVEYtMTYtTEUgZW5jb2RlZCBieXRlcyB0byB0aGUgY29uc29sZSBhcyBpZiB0eXBlZCBieSBhIHVzZXIuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGVzdGNvbnNvbGVfd3JpdGVfaW5wdXRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNPYmplY3QgKnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDhmOTU2M2RiMzRhZWRiMyBpbnB1dD00Yzc3NGYyZDA1NzcwYmM2XSovCit7CisgICAgSU5QVVRfUkVDT1JEICpyZWMgPSBOVUxMOworICAgIAorICAgIGlmICghUHlXaW5kb3dzQ29uc29sZUlPX0NoZWNrKGZpbGUpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJleHBlY3RlZCByYXcgY29uc29sZSBvYmplY3QiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgY29uc3Qgd2NoYXJfdCAqcCA9IChjb25zdCB3Y2hhcl90ICopUHlCeXRlc19BU19TVFJJTkcocyk7CisgICAgRFdPUkQgc2l6ZSA9IChEV09SRClQeUJ5dGVzX0dFVF9TSVpFKHMpIC8gc2l6ZW9mKHdjaGFyX3QpOworCisgICAgcmVjID0gKElOUFVUX1JFQ09SRCopUHlNZW1fTWFsbG9jKHNpemVvZihJTlBVVF9SRUNPUkQpICogc2l6ZSk7CisgICAgaWYgKCFyZWMpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgbWVtc2V0KHJlYywgMCwgc2l6ZW9mKElOUFVUX1JFQ09SRCkgKiBzaXplKTsKKyAgICAKKyAgICBJTlBVVF9SRUNPUkQgKnByZWMgPSByZWM7CisgICAgZm9yIChEV09SRCBpID0gMDsgaSA8IHNpemU7ICsraSwgKytwLCArK3ByZWMpIHsKKyAgICAgICAgcHJlYy0+RXZlbnRUeXBlID0gS0VZX0VWRU5UOworICAgICAgICBwcmVjLT5FdmVudC5LZXlFdmVudC5iS2V5RG93biA9IFRSVUU7CisgICAgICAgIHByZWMtPkV2ZW50LktleUV2ZW50LndSZXBlYXRDb3VudCA9IDEwOworICAgICAgICBwcmVjLT5FdmVudC5LZXlFdmVudC51Q2hhci5Vbmljb2RlQ2hhciA9ICpwOworICAgIH0KKworICAgIEhBTkRMRSBoSW5wdXQgPSAoKHdpbmNvbnNvbGVpbyopZmlsZSktPmhhbmRsZTsKKyAgICBEV09SRCB0b3RhbCA9IDA7CisgICAgd2hpbGUgKHRvdGFsIDwgc2l6ZSkgeworICAgICAgICBEV09SRCB3cm90ZTsKKyAgICAgICAgaWYgKCFXcml0ZUNvbnNvbGVJbnB1dFcoaElucHV0LCAmcmVjW3RvdGFsXSwgKHNpemUgLSB0b3RhbCksICZ3cm90ZSkpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICB0b3RhbCArPSB3cm90ZTsKKyAgICB9CisKKyAgICBQeU1lbV9GcmVlKCh2b2lkKilyZWMpOworICAgIAorICAgIFB5X1JFVFVSTl9OT05FOworZXJyb3I6CisgICAgaWYgKHJlYykKKyAgICAgICAgUHlNZW1fRnJlZSgodm9pZCopcmVjKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworLypbY2xpbmljIGlucHV0XQorX3Rlc3Rjb25zb2xlLnJlYWRfb3V0cHV0CisgICAgZmlsZTogb2JqZWN0CisKK1JlYWRzIGEgc3RyIGZyb20gdGhlIGNvbnNvbGUgYXMgd3JpdHRlbiB0byBzdGRvdXQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGVzdGNvbnNvbGVfcmVhZF9vdXRwdXRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqZmlsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04NzYzMTBkODFhNzNlNmQyIGlucHV0PWIzNTIxZjY0YjFiNTU4ZTNdKi8KK3sKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworI2luY2x1ZGUgImNsaW5pY1xfdGVzdGNvbnNvbGUuYy5oIgorCitQeU1ldGhvZERlZiB0ZXN0Y29uc29sZV9tZXRob2RzW10gPSB7CisgICAgX1RFU1RDT05TT0xFX1dSSVRFX0lOUFVUX01FVEhPRERFRgorICAgIF9URVNUQ09OU09MRV9SRUFEX09VVFBVVF9NRVRIT0RERUYKKyAgICB7TlVMTCwgTlVMTH0KK307CisKK3N0YXRpYyBQeU1vZHVsZURlZiB0ZXN0Y29uc29sZV9kZWYgPSB7CisgICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULCAgICAgICAgICAgICAgICAgICAgICAvKiBtX2Jhc2UgKi8KKyAgICAiX3Rlc3Rjb25zb2xlIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fbmFtZSAqLworICAgIFB5RG9jX1NUUigiVGVzdCBtb2R1bGUgZm9yIHRoZSBXaW5kb3dzIGNvbnNvbGUiKSwgLyogbV9kb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fc2l6ZSAqLworICAgIHRlc3Rjb25zb2xlX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9tZXRob2RzICovCisgICAgdGVzdGNvbnNvbGVfc2xvdHMsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX3Nsb3RzICovCisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX3RyYXZlcnNlICovCisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX2NsZWFyICovCisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX2ZyZWUgKi8KK307CisKK1B5TU9ESU5JVF9GVU5DCitQeUluaXRfX3Rlc3Rjb25zb2xlKFB5T2JqZWN0ICpzcGVjKQoreworICAgIHJldHVybiBQeU1vZHVsZURlZl9Jbml0KCZ0ZXN0Y29uc29sZV9kZWYpOworfQorCisjZW5kaWYgLyogTVNfV0lORE9XUyAqLwpkaWZmIC0tZ2l0IGEvUEMvYmRpc3Rfd2luaW5zdC9pbnN0YWxsLmMgYi9QQy9iZGlzdF93aW5pbnN0L2luc3RhbGwuYwppbmRleCBhZGJiNzMzLi4xN2NjMzBkIDEwMDY0NAotLS0gYS9QQy9iZGlzdF93aW5pbnN0L2luc3RhbGwuYworKysgYi9QQy9iZGlzdF93aW5pbnN0L2luc3RhbGwuYwpAQCAtNzE4LDcgKzcxOCw3IEBACiAgKiAxIGlmIHRoZSBQeXRob24tZGxsIGRvZXMgbm90IGV4cG9ydCB0aGUgZnVuY3Rpb25zIHdlIG5lZWQKICAqIDIgaWYgbm8gaW5zdGFsbC1zY3JpcHQgaXMgc3BlY2lmaWVkIGluIHBhdGhuYW1lCiAgKiAzIGlmIHRoZSBpbnN0YWxsLXNjcmlwdCBmaWxlIGNvdWxkIG5vdCBiZSBvcGVuZWQKLSAqIHRoZSByZXR1cm4gdmFsdWUgb2YgUHlSdW5fU2ltcGxlU3RyaW5nKCkgb3RoZXJ3aXNlLAorICogdGhlIHJldHVybiB2YWx1ZSBvZiBQeVJ1bl9TaW1wbGVTdHJpbmcoKSBvciBQeV9GaW5hbGl6ZUV4KCkgb3RoZXJ3aXNlLAogICogd2hpY2ggaXMgMCBpZiBldmVyeXRoaW5nIGlzIG9rLCAtMSBpZiBhbiBleGNlcHRpb24gaGFkIG9jY3VycmVkCiAgKiBpbiB0aGUgaW5zdGFsbC1zY3JpcHQuCiAgKi8KQEAgLTczMSw3ICs3MzEsNyBAQAogICAgIERFQ0xQUk9DKGhQeXRob24sIHZvaWQsIFB5X0luaXRpYWxpemUsICh2b2lkKSk7CiAgICAgREVDTFBST0MoaFB5dGhvbiwgaW50LCBQeVN5c19TZXRBcmd2LCAoaW50LCB3Y2hhcl90ICoqKSk7CiAgICAgREVDTFBST0MoaFB5dGhvbiwgaW50LCBQeVJ1bl9TaW1wbGVTdHJpbmcsIChjaGFyICopKTsKLSAgICBERUNMUFJPQyhoUHl0aG9uLCB2b2lkLCBQeV9GaW5hbGl6ZSwgKHZvaWQpKTsKKyAgICBERUNMUFJPQyhoUHl0aG9uLCBpbnQsIFB5X0ZpbmFsaXplRXgsICh2b2lkKSk7CiAgICAgREVDTFBST0MoaFB5dGhvbiwgUHlPYmplY3QgKiwgUHlfQnVpbGRWYWx1ZSwgKGNoYXIgKiwgLi4uKSk7CiAgICAgREVDTFBST0MoaFB5dGhvbiwgUHlPYmplY3QgKiwgUHlDRnVuY3Rpb25fTmV3LAogICAgICAgICAgICAgIChQeU1ldGhvZERlZiAqLCBQeU9iamVjdCAqKSk7CkBAIC03MzksNyArNzM5LDcgQEAKICAgICBERUNMUFJPQyhoUHl0aG9uLCBQeU9iamVjdCAqLCBQeUVycl9Gb3JtYXQsIChQeU9iamVjdCAqLCBjaGFyICopKTsKIAogICAgIGlmICghUHlfSW5pdGlhbGl6ZSB8fCAhUHlTeXNfU2V0QXJndgotICAgICAgICB8fCAhUHlSdW5fU2ltcGxlU3RyaW5nIHx8ICFQeV9GaW5hbGl6ZSkKKyAgICAgICAgfHwgIVB5UnVuX1NpbXBsZVN0cmluZyB8fCAhUHlfRmluYWxpemVFeCkKICAgICAgICAgcmV0dXJuIDE7CiAKICAgICBpZiAoIVB5X0J1aWxkVmFsdWUgfHwgIVB5QXJnX1BhcnNlVHVwbGUgfHwgIVB5RXJyX0Zvcm1hdCkKQEAgLTc4Niw3ICs3ODYsOSBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotICAgIFB5X0ZpbmFsaXplKCk7CisgICAgaWYgKFB5X0ZpbmFsaXplRXgoKSA8IDApIHsKKyAgICAgICAgcmVzdWx0ID0gLTE7CisgICAgfQogCiAgICAgY2xvc2UoZmgpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC04NDgsMTEgKzg1MCwxMSBAQAogICAgIGludCByYzsKICAgICBERUNMUFJPQyhoUHl0aG9uLCB2b2lkLCBQeV9Jbml0aWFsaXplLCAodm9pZCkpOwogICAgIERFQ0xQUk9DKGhQeXRob24sIHZvaWQsIFB5X1NldFByb2dyYW1OYW1lLCAod2NoYXJfdCAqKSk7Ci0gICAgREVDTFBST0MoaFB5dGhvbiwgdm9pZCwgUHlfRmluYWxpemUsICh2b2lkKSk7CisgICAgREVDTFBST0MoaFB5dGhvbiwgaW50LCBQeV9GaW5hbGl6ZUV4LCAodm9pZCkpOwogICAgIERFQ0xQUk9DKGhQeXRob24sIGludCwgUHlSdW5fU2ltcGxlU3RyaW5nLCAoY2hhciAqKSk7CiAgICAgREVDTFBST0MoaFB5dGhvbiwgdm9pZCwgUHlFcnJfUHJpbnQsICh2b2lkKSk7CiAKLSAgICBpZiAoIVB5X0luaXRpYWxpemUgfHwgIVB5X1NldFByb2dyYW1OYW1lIHx8ICFQeV9GaW5hbGl6ZSB8fAorICAgIGlmICghUHlfSW5pdGlhbGl6ZSB8fCAhUHlfU2V0UHJvZ3JhbU5hbWUgfHwgIVB5X0ZpbmFsaXplRXggfHwKICAgICAgICAgIVB5UnVuX1NpbXBsZVN0cmluZyB8fCAhUHlFcnJfUHJpbnQpCiAgICAgICAgIHJldHVybiAtMTsKIApAQCAtODYyLDcgKzg2NCw5IEBACiAgICAgcmMgPSBQeVJ1bl9TaW1wbGVTdHJpbmcoc2NyaXB0KTsKICAgICBpZiAocmMpCiAgICAgICAgIFB5RXJyX1ByaW50KCk7Ci0gICAgUHlfRmluYWxpemUoKTsKKyAgICBpZiAoUHlfRmluYWxpemVFeCgpIDwgMCkgeworICAgICAgICByYyA9IC0xOworICAgIH0KICAgICByZXR1cm4gcmM7CiB9CiAKZGlmZiAtLWdpdCBhL1BDL2NsaW5pYy9fdGVzdGNvbnNvbGUuYy5oIGIvUEMvY2xpbmljL190ZXN0Y29uc29sZS5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTM4NjBjZgotLS0gL2Rldi9udWxsCisrKyBiL1BDL2NsaW5pYy9fdGVzdGNvbnNvbGUuYy5oCkBAIC0wLDAgKzEsODIgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisKK1B5RG9jX1NUUlZBUihfdGVzdGNvbnNvbGVfd3JpdGVfaW5wdXRfX2RvY19fLAorIndyaXRlX2lucHV0KCRtb2R1bGUsIC8sIGZpbGUsIHMpXG4iCisiLS1cbiIKKyJcbiIKKyJXcml0ZXMgVVRGLTE2LUxFIGVuY29kZWQgYnl0ZXMgdG8gdGhlIGNvbnNvbGUgYXMgaWYgdHlwZWQgYnkgYSB1c2VyLiIpOworCisjZGVmaW5lIF9URVNUQ09OU09MRV9XUklURV9JTlBVVF9NRVRIT0RERUYgICAgXAorICAgIHsid3JpdGVfaW5wdXQiLCAoUHlDRnVuY3Rpb24pX3Rlc3Rjb25zb2xlX3dyaXRlX2lucHV0LCBNRVRIX0ZBU1RDQUxMLCBfdGVzdGNvbnNvbGVfd3JpdGVfaW5wdXRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK190ZXN0Y29uc29sZV93cml0ZV9pbnB1dF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc09iamVjdCAqcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGVzdGNvbnNvbGVfd3JpdGVfaW5wdXQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJmaWxlIiwgInMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPUzp3cml0ZV9pbnB1dCIsIF9rZXl3b3JkcywgMH07CisgICAgUHlPYmplY3QgKmZpbGU7CisgICAgUHlCeXRlc09iamVjdCAqczsKKworICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZmlsZSwgJnMpKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gX3Rlc3Rjb25zb2xlX3dyaXRlX2lucHV0X2ltcGwobW9kdWxlLCBmaWxlLCBzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChNU19XSU5ET1dTKSAqLworCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorCitQeURvY19TVFJWQVIoX3Rlc3Rjb25zb2xlX3JlYWRfb3V0cHV0X19kb2NfXywKKyJyZWFkX291dHB1dCgkbW9kdWxlLCAvLCBmaWxlKVxuIgorIi0tXG4iCisiXG4iCisiUmVhZHMgYSBzdHIgZnJvbSB0aGUgY29uc29sZSBhcyB3cml0dGVuIHRvIHN0ZG91dC4iKTsKKworI2RlZmluZSBfVEVTVENPTlNPTEVfUkVBRF9PVVRQVVRfTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWRfb3V0cHV0IiwgKFB5Q0Z1bmN0aW9uKV90ZXN0Y29uc29sZV9yZWFkX291dHB1dCwgTUVUSF9GQVNUQ0FMTCwgX3Rlc3Rjb25zb2xlX3JlYWRfb3V0cHV0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGVzdGNvbnNvbGVfcmVhZF9vdXRwdXRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqZmlsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGVzdGNvbnNvbGVfcmVhZF9vdXRwdXQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJmaWxlIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTzpyZWFkX291dHB1dCIsIF9rZXl3b3JkcywgMH07CisgICAgUHlPYmplY3QgKmZpbGU7CisKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmZpbGUpKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gX3Rlc3Rjb25zb2xlX3JlYWRfb3V0cHV0X2ltcGwobW9kdWxlLCBmaWxlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChNU19XSU5ET1dTKSAqLworCisjaWZuZGVmIF9URVNUQ09OU09MRV9XUklURV9JTlBVVF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9URVNUQ09OU09MRV9XUklURV9JTlBVVF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfVEVTVENPTlNPTEVfV1JJVEVfSU5QVVRfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIF9URVNUQ09OU09MRV9SRUFEX09VVFBVVF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9URVNUQ09OU09MRV9SRUFEX09VVFBVVF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfVEVTVENPTlNPTEVfUkVBRF9PVVRQVVRfTUVUSE9EREVGKSAqLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTNhOGRjMGM0MjE4MDdjNDEgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvUEMvY2xpbmljL21zdmNydG1vZHVsZS5jLmggYi9QQy9jbGluaWMvbXN2Y3J0bW9kdWxlLmMuaAppbmRleCBlN2E3MmM0Li42OTM1Y2FkIDEwMDY0NAotLS0gYS9QQy9jbGluaWMvbXN2Y3J0bW9kdWxlLmMuaAorKysgYi9QQy9jbGluaWMvbXN2Y3J0bW9kdWxlLmMuaApAQCAtNTEsOCArNTEsOSBAQAogICAgIGxvbmcgbmJ5dGVzOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaWw6bG9ja2luZyIsCi0gICAgICAgICZmZCwgJm1vZGUsICZuYnl0ZXMpKQorICAgICAgICAmZmQsICZtb2RlLCAmbmJ5dGVzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG1zdmNydF9sb2NraW5nX2ltcGwobW9kdWxlLCBmZCwgbW9kZSwgbmJ5dGVzKTsKIAogZXhpdDoKQEAgLTg1LDExICs4NiwxMyBAQAogICAgIGxvbmcgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWk6c2V0bW9kZSIsCi0gICAgICAgICZmZCwgJmZsYWdzKSkKKyAgICAgICAgJmZkLCAmZmxhZ3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG1zdmNydF9zZXRtb2RlX2ltcGwobW9kdWxlLCBmZCwgZmxhZ3MpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0xMTAsMjIgKzExMywyNCBAQAogICAgIHsib3Blbl9vc2ZoYW5kbGUiLCAoUHlDRnVuY3Rpb24pbXN2Y3J0X29wZW5fb3NmaGFuZGxlLCBNRVRIX1ZBUkFSR1MsIG1zdmNydF9vcGVuX29zZmhhbmRsZV9fZG9jX199LAogCiBzdGF0aWMgbG9uZwotbXN2Y3J0X29wZW5fb3NmaGFuZGxlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfaW50cHRyX3QgaGFuZGxlLCBpbnQgZmxhZ3MpOworbXN2Y3J0X29wZW5fb3NmaGFuZGxlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50cHRyX3QgaGFuZGxlLCBpbnQgZmxhZ3MpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogbXN2Y3J0X29wZW5fb3NmaGFuZGxlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIFB5X2ludHB0cl90IGhhbmRsZTsKKyAgICBpbnRwdHJfdCBoYW5kbGU7CiAgICAgaW50IGZsYWdzOwogICAgIGxvbmcgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIl9QeV9QQVJTRV9JTlRQVFIiaTpvcGVuX29zZmhhbmRsZSIsCi0gICAgICAgICZoYW5kbGUsICZmbGFncykpCisgICAgICAgICZoYW5kbGUsICZmbGFncykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gbXN2Y3J0X29wZW5fb3NmaGFuZGxlX2ltcGwobW9kdWxlLCBoYW5kbGUsIGZsYWdzKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMTQzLDcgKzE0OCw3IEBACiAjZGVmaW5lIE1TVkNSVF9HRVRfT1NGSEFORExFX01FVEhPRERFRiAgICBcCiAgICAgeyJnZXRfb3NmaGFuZGxlIiwgKFB5Q0Z1bmN0aW9uKW1zdmNydF9nZXRfb3NmaGFuZGxlLCBNRVRIX08sIG1zdmNydF9nZXRfb3NmaGFuZGxlX19kb2NfX30sCiAKLXN0YXRpYyBQeV9pbnRwdHJfdAorc3RhdGljIGludHB0cl90CiBtc3ZjcnRfZ2V0X29zZmhhbmRsZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBmZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xNTEsMTMgKzE1NiwxNSBAQAogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBmZDsKLSAgICBQeV9pbnRwdHJfdCBfcmV0dXJuX3ZhbHVlOworICAgIGludHB0cl90IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6Z2V0X29zZmhhbmRsZSIsICZmZCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmdldF9vc2ZoYW5kbGUiLCAmZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG1zdmNydF9nZXRfb3NmaGFuZGxlX2ltcGwobW9kdWxlLCBmZCk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tVm9pZFB0cigodm9pZCAqKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMTgzLDggKzE5MCw5IEBACiAgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOwogCiAgICAgX3JldHVybl92YWx1ZSA9IG1zdmNydF9rYmhpdF9pbXBsKG1vZHVsZSk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTMxMSw4ICszMTksOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGNoYXIgY2hhcl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiYzpwdXRjaCIsICZjaGFyX3ZhbHVlKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImM6cHV0Y2giLCAmY2hhcl92YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBtc3ZjcnRfcHV0Y2hfaW1wbChtb2R1bGUsIGNoYXJfdmFsdWUpOwogCiBleGl0OgpAQCAtMzM3LDggKzM0Niw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IHVuaWNvZGVfY2hhcjsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiQzpwdXR3Y2giLCAmdW5pY29kZV9jaGFyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkM6cHV0d2NoIiwgJnVuaWNvZGVfY2hhcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBtc3ZjcnRfcHV0d2NoX2ltcGwobW9kdWxlLCB1bmljb2RlX2NoYXIpOwogCiBleGl0OgpAQCAtMzY3LDggKzM3Nyw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgY2hhciBjaGFyX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJjOnVuZ2V0Y2giLCAmY2hhcl92YWx1ZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJjOnVuZ2V0Y2giLCAmY2hhcl92YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBtc3ZjcnRfdW5nZXRjaF9pbXBsKG1vZHVsZSwgY2hhcl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0zOTMsOCArNDA0LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgdW5pY29kZV9jaGFyOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJDOnVuZ2V0d2NoIiwgJnVuaWNvZGVfY2hhcikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJDOnVuZ2V0d2NoIiwgJnVuaWNvZGVfY2hhcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBtc3ZjcnRfdW5nZXR3Y2hfaW1wbChtb2R1bGUsIHVuaWNvZGVfY2hhcik7CiAKIGV4aXQ6CkBAIC00MjYsMTEgKzQzOCwxMyBAQAogICAgIGxvbmcgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWk6Q3J0U2V0UmVwb3J0RmlsZSIsCi0gICAgICAgICZ0eXBlLCAmZmlsZSkpCisgICAgICAgICZ0eXBlLCAmZmlsZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gbXN2Y3J0X0NydFNldFJlcG9ydEZpbGVfaW1wbChtb2R1bGUsIHR5cGUsIGZpbGUpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC00NjQsMTEgKzQ3OCwxMyBAQAogICAgIGxvbmcgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWk6Q3J0U2V0UmVwb3J0TW9kZSIsCi0gICAgICAgICZ0eXBlLCAmbW9kZSkpCisgICAgICAgICZ0eXBlLCAmbW9kZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gbXN2Y3J0X0NydFNldFJlcG9ydE1vZGVfaW1wbChtb2R1bGUsIHR5cGUsIG1vZGUpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC01MDAsMTEgKzUxNiwxMyBAQAogICAgIGludCBtb2RlOwogICAgIGxvbmcgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpzZXRfZXJyb3JfbW9kZSIsICZtb2RlKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6c2V0X2Vycm9yX21vZGUiLCAmbW9kZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gbXN2Y3J0X3NldF9lcnJvcl9tb2RlX2ltcGwobW9kdWxlLCBtb2RlKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNTMxLDggKzU0OSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgdW5zaWduZWQgaW50IG1vZGU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkk6U2V0RXJyb3JNb2RlIiwgJm1vZGUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiSTpTZXRFcnJvck1vZGUiLCAmbW9kZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBtc3ZjcnRfU2V0RXJyb3JNb2RlX2ltcGwobW9kdWxlLCBtb2RlKTsKIAogZXhpdDoKQEAgLTU1MCw0ICs1NjksNCBAQAogI2lmbmRlZiBNU1ZDUlRfU0VUX0VSUk9SX01PREVfTUVUSE9EREVGCiAgICAgI2RlZmluZSBNU1ZDUlRfU0VUX0VSUk9SX01PREVfTUVUSE9EREVGCiAjZW5kaWYgLyogIWRlZmluZWQoTVNWQ1JUX1NFVF9FUlJPUl9NT0RFX01FVEhPRERFRikgKi8KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yYTc5NGM1MjBkNmFlODg3IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hZTA0ZTJiNTBlZWY4YjYzIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL1BDL2NsaW5pYy93aW5yZWcuYy5oIGIvUEMvY2xpbmljL3dpbnJlZy5jLmgKaW5kZXggZjZhZTJjMC4uYzdkNWI5ZSAxMDA2NDQKLS0tIGEvUEMvY2xpbmljL3dpbnJlZy5jLmgKKysrIGIvUEMvY2xpbmljL3dpbnJlZy5jLmgKQEAgLTc3LDI0ICs3NywyNiBAQAogIlxuIik7CiAKICNkZWZpbmUgV0lOUkVHX0hLRVlUWVBFX19fRVhJVF9fX01FVEhPRERFRiAgICBcCi0gICAgeyJfX2V4aXRfXyIsIChQeUNGdW5jdGlvbil3aW5yZWdfSEtFWVR5cGVfX19leGl0X18sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCB3aW5yZWdfSEtFWVR5cGVfX19leGl0X19fX2RvY19ffSwKKyAgICB7Il9fZXhpdF9fIiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19IS0VZVHlwZV9fX2V4aXRfXywgTUVUSF9GQVNUQ0FMTCwgd2lucmVnX0hLRVlUeXBlX19fZXhpdF9fX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiB3aW5yZWdfSEtFWVR5cGVfX19leGl0X19faW1wbChQeUhLRVlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpleGNfdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpleGNfdmFsdWUsIFB5T2JqZWN0ICp0cmFjZWJhY2spOwogCiBzdGF0aWMgUHlPYmplY3QgKgotd2lucmVnX0hLRVlUeXBlX19fZXhpdF9fKFB5SEtFWU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit3aW5yZWdfSEtFWVR5cGVfX19leGl0X18oUHlIS0VZT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZXhjX3R5cGUiLCAiZXhjX3ZhbHVlIiwgInRyYWNlYmFjayIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImV4Y190eXBlIiwgImV4Y192YWx1ZSIsICJ0cmFjZWJhY2siLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPT086X19leGl0X18iLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpleGNfdHlwZTsKICAgICBQeU9iamVjdCAqZXhjX3ZhbHVlOwogICAgIFB5T2JqZWN0ICp0cmFjZWJhY2s7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPT086X19leGl0X18iLCBfa2V5d29yZHMsCi0gICAgICAgICZleGNfdHlwZSwgJmV4Y192YWx1ZSwgJnRyYWNlYmFjaykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZleGNfdHlwZSwgJmV4Y192YWx1ZSwgJnRyYWNlYmFjaykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfSEtFWVR5cGVfX19leGl0X19faW1wbChzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCB0cmFjZWJhY2spOwogCiBleGl0OgpAQCAtMTQ3LDExICsxNDksMTMgQEAKICAgICBIS0VZIF9yZXR1cm5fdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlpPJjpDb25uZWN0UmVnaXN0cnkiLAotICAgICAgICAmY29tcHV0ZXJfbmFtZSwgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5KSkKKyAgICAgICAgJmNvbXB1dGVyX25hbWUsIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gd2lucmVnX0Nvbm5lY3RSZWdpc3RyeV9pbXBsKG1vZHVsZSwgY29tcHV0ZXJfbmFtZSwga2V5KTsKLSAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKQorICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUhLRVlfRnJvbUhLRVkoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0xOTIsMTEgKzE5NiwxMyBAQAogICAgIEhLRVkgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZaOkNyZWF0ZUtleSIsCi0gICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXkpKQorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSB3aW5yZWdfQ3JlYXRlS2V5X2ltcGwobW9kdWxlLCBrZXksIHN1Yl9rZXkpOwotICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpCisgICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5SEtFWV9Gcm9tSEtFWShfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTIyOSwyOSArMjM1LDMyIEBACiAiSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhbiBPU0Vycm9yIGV4Y2VwdGlvbiBpcyByYWlzZWQuIik7CiAKICNkZWZpbmUgV0lOUkVHX0NSRUFURUtFWUVYX01FVEhPRERFRiAgICBcCi0gICAgeyJDcmVhdGVLZXlFeCIsIChQeUNGdW5jdGlvbil3aW5yZWdfQ3JlYXRlS2V5RXgsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCB3aW5yZWdfQ3JlYXRlS2V5RXhfX2RvY19ffSwKKyAgICB7IkNyZWF0ZUtleUV4IiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19DcmVhdGVLZXlFeCwgTUVUSF9GQVNUQ0FMTCwgd2lucmVnX0NyZWF0ZUtleUV4X19kb2NfX30sCiAKIHN0YXRpYyBIS0VZCiB3aW5yZWdfQ3JlYXRlS2V5RXhfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBIS0VZIGtleSwgUHlfVU5JQ09ERSAqc3ViX2tleSwKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXNlcnZlZCwgUkVHU0FNIGFjY2Vzcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5yZWdfQ3JlYXRlS2V5RXgoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit3aW5yZWdfQ3JlYXRlS2V5RXgoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImtleSIsICJzdWJfa2V5IiwgInJlc2VydmVkIiwgImFjY2VzcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImtleSIsICJzdWJfa2V5IiwgInJlc2VydmVkIiwgImFjY2VzcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mWnxpaTpDcmVhdGVLZXlFeCIsIF9rZXl3b3JkcywgMH07CiAgICAgSEtFWSBrZXk7CiAgICAgUHlfVU5JQ09ERSAqc3ViX2tleTsKICAgICBpbnQgcmVzZXJ2ZWQgPSAwOwogICAgIFJFR1NBTSBhY2Nlc3MgPSBLRVlfV1JJVEU7CiAgICAgSEtFWSBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZafGlpOkNyZWF0ZUtleUV4IiwgX2tleXdvcmRzLAotICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5LCAmcmVzZXJ2ZWQsICZhY2Nlc3MpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5LCAmcmVzZXJ2ZWQsICZhY2Nlc3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IHdpbnJlZ19DcmVhdGVLZXlFeF9pbXBsKG1vZHVsZSwga2V5LCBzdWJfa2V5LCByZXNlcnZlZCwgYWNjZXNzKTsKLSAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKQorICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUhLRVlfRnJvbUhLRVkoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0yOTAsOCArMjk5LDkgQEAKICAgICBQeV9VTklDT0RFICpzdWJfa2V5OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJnU6RGVsZXRlS2V5IiwKLSAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSkpCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXkpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX0RlbGV0ZUtleV9pbXBsKG1vZHVsZSwga2V5LCBzdWJfa2V5KTsKIAogZXhpdDoKQEAgLTMyNCwyNSArMzM0LDI3IEBACiAiT24gdW5zdXBwb3J0ZWQgV2luZG93cyB2ZXJzaW9ucywgTm90SW1wbGVtZW50ZWRFcnJvciBpcyByYWlzZWQuIik7CiAKICNkZWZpbmUgV0lOUkVHX0RFTEVURUtFWUVYX01FVEhPRERFRiAgICBcCi0gICAgeyJEZWxldGVLZXlFeCIsIChQeUNGdW5jdGlvbil3aW5yZWdfRGVsZXRlS2V5RXgsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCB3aW5yZWdfRGVsZXRlS2V5RXhfX2RvY19ffSwKKyAgICB7IkRlbGV0ZUtleUV4IiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19EZWxldGVLZXlFeCwgTUVUSF9GQVNUQ0FMTCwgd2lucmVnX0RlbGV0ZUtleUV4X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiB3aW5yZWdfRGVsZXRlS2V5RXhfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBIS0VZIGtleSwgUHlfVU5JQ09ERSAqc3ViX2tleSwKICAgICAgICAgICAgICAgICAgICAgICAgIFJFR1NBTSBhY2Nlc3MsIGludCByZXNlcnZlZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5yZWdfRGVsZXRlS2V5RXgoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit3aW5yZWdfRGVsZXRlS2V5RXgoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImtleSIsICJzdWJfa2V5IiwgImFjY2VzcyIsICJyZXNlcnZlZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImtleSIsICJzdWJfa2V5IiwgImFjY2VzcyIsICJyZXNlcnZlZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mdXxpaTpEZWxldGVLZXlFeCIsIF9rZXl3b3JkcywgMH07CiAgICAgSEtFWSBrZXk7CiAgICAgUHlfVU5JQ09ERSAqc3ViX2tleTsKICAgICBSRUdTQU0gYWNjZXNzID0gS0VZX1dPVzY0XzY0S0VZOwogICAgIGludCByZXNlcnZlZCA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnV8aWk6RGVsZXRlS2V5RXgiLCBfa2V5d29yZHMsCi0gICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXksICZhY2Nlc3MsICZyZXNlcnZlZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXksICZhY2Nlc3MsICZyZXNlcnZlZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfRGVsZXRlS2V5RXhfaW1wbChtb2R1bGUsIGtleSwgc3ViX2tleSwgYWNjZXNzLCByZXNlcnZlZCk7CiAKIGV4aXQ6CkBAIC0zNzQsOCArMzg2LDkgQEAKICAgICBQeV9VTklDT0RFICp2YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZaOkRlbGV0ZVZhbHVlIiwKLSAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmdmFsdWUpKQorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZ2YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfRGVsZXRlVmFsdWVfaW1wbChtb2R1bGUsIGtleSwgdmFsdWUpOwogCiBleGl0OgpAQCAtNDExLDggKzQyNCw5IEBACiAgICAgaW50IGluZGV4OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJmk6RW51bUtleSIsCi0gICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJmluZGV4KSkKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmaW5kZXgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX0VudW1LZXlfaW1wbChtb2R1bGUsIGtleSwgaW5kZXgpOwogCiBleGl0OgpAQCAtNDU3LDggKzQ3MSw5IEBACiAgICAgaW50IGluZGV4OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJmk6RW51bVZhbHVlIiwKLSAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmaW5kZXgpKQorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZpbmRleCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfRW51bVZhbHVlX2ltcGwobW9kdWxlLCBrZXksIGluZGV4KTsKIAogZXhpdDoKQEAgLTQ4Myw4ICs0OTgsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X1VOSUNPREUgKnN0cmluZzsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAidTpFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3MiLCAmc3RyaW5nKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInU6RXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzIiwgJnN0cmluZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfRXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzX2ltcGwobW9kdWxlLCBzdHJpbmcpOwogCiBleGl0OgpAQCAtNTIyLDggKzUzOCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgSEtFWSBrZXk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOkZsdXNoS2V5IiwgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOkZsdXNoS2V5IiwgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19GbHVzaEtleV9pbXBsKG1vZHVsZSwga2V5KTsKIAogZXhpdDoKQEAgLTU3NCw4ICs1OTEsOSBAQAogICAgIFB5X1VOSUNPREUgKmZpbGVfbmFtZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZ1dTpMb2FkS2V5IiwKLSAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSwgJmZpbGVfbmFtZSkpCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXksICZmaWxlX25hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX0xvYWRLZXlfaW1wbChtb2R1bGUsIGtleSwgc3ViX2tleSwgZmlsZV9uYW1lKTsKIAogZXhpdDoKQEAgLTYwMiwyOSArNjIwLDMyIEBACiAiSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhbiBPU0Vycm9yIGV4Y2VwdGlvbiBpcyByYWlzZWQuIik7CiAKICNkZWZpbmUgV0lOUkVHX09QRU5LRVlfTUVUSE9EREVGICAgIFwKLSAgICB7Ik9wZW5LZXkiLCAoUHlDRnVuY3Rpb24pd2lucmVnX09wZW5LZXksIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCB3aW5yZWdfT3BlbktleV9fZG9jX199LAorICAgIHsiT3BlbktleSIsIChQeUNGdW5jdGlvbil3aW5yZWdfT3BlbktleSwgTUVUSF9GQVNUQ0FMTCwgd2lucmVnX09wZW5LZXlfX2RvY19ffSwKIAogc3RhdGljIEhLRVkKIHdpbnJlZ19PcGVuS2V5X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgSEtFWSBrZXksIFB5X1VOSUNPREUgKnN1Yl9rZXksCiAgICAgICAgICAgICAgICAgICAgIGludCByZXNlcnZlZCwgUkVHU0FNIGFjY2Vzcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5yZWdfT3BlbktleShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3dpbnJlZ19PcGVuS2V5KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJrZXkiLCAic3ViX2tleSIsICJyZXNlcnZlZCIsICJhY2Nlc3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJrZXkiLCAic3ViX2tleSIsICJyZXNlcnZlZCIsICJhY2Nlc3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJlp8aWk6T3BlbktleSIsIF9rZXl3b3JkcywgMH07CiAgICAgSEtFWSBrZXk7CiAgICAgUHlfVU5JQ09ERSAqc3ViX2tleTsKICAgICBpbnQgcmVzZXJ2ZWQgPSAwOwogICAgIFJFR1NBTSBhY2Nlc3MgPSBLRVlfUkVBRDsKICAgICBIS0VZIF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJlp8aWk6T3BlbktleSIsIF9rZXl3b3JkcywKLSAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSwgJnJlc2VydmVkLCAmYWNjZXNzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSwgJnJlc2VydmVkLCAmYWNjZXNzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSB3aW5yZWdfT3BlbktleV9pbXBsKG1vZHVsZSwga2V5LCBzdWJfa2V5LCByZXNlcnZlZCwgYWNjZXNzKTsKLSAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKQorICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUhLRVlfRnJvbUhLRVkoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC02NTEsMjkgKzY3MiwzMiBAQAogIklmIHRoZSBmdW5jdGlvbiBmYWlscywgYW4gT1NFcnJvciBleGNlcHRpb24gaXMgcmFpc2VkLiIpOwogCiAjZGVmaW5lIFdJTlJFR19PUEVOS0VZRVhfTUVUSE9EREVGICAgIFwKLSAgICB7Ik9wZW5LZXlFeCIsIChQeUNGdW5jdGlvbil3aW5yZWdfT3BlbktleUV4LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgd2lucmVnX09wZW5LZXlFeF9fZG9jX199LAorICAgIHsiT3BlbktleUV4IiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19PcGVuS2V5RXgsIE1FVEhfRkFTVENBTEwsIHdpbnJlZ19PcGVuS2V5RXhfX2RvY19ffSwKIAogc3RhdGljIEhLRVkKIHdpbnJlZ19PcGVuS2V5RXhfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBIS0VZIGtleSwgUHlfVU5JQ09ERSAqc3ViX2tleSwKICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzZXJ2ZWQsIFJFR1NBTSBhY2Nlc3MpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotd2lucmVnX09wZW5LZXlFeChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3dpbnJlZ19PcGVuS2V5RXgoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImtleSIsICJzdWJfa2V5IiwgInJlc2VydmVkIiwgImFjY2VzcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImtleSIsICJzdWJfa2V5IiwgInJlc2VydmVkIiwgImFjY2VzcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mWnxpaTpPcGVuS2V5RXgiLCBfa2V5d29yZHMsIDB9OwogICAgIEhLRVkga2V5OwogICAgIFB5X1VOSUNPREUgKnN1Yl9rZXk7CiAgICAgaW50IHJlc2VydmVkID0gMDsKICAgICBSRUdTQU0gYWNjZXNzID0gS0VZX1JFQUQ7CiAgICAgSEtFWSBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZafGlpOk9wZW5LZXlFeCIsIF9rZXl3b3JkcywKLSAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSwgJnJlc2VydmVkLCAmYWNjZXNzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSwgJnJlc2VydmVkLCAmYWNjZXNzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSB3aW5yZWdfT3BlbktleUV4X2ltcGwobW9kdWxlLCBrZXksIHN1Yl9rZXksIHJlc2VydmVkLCBhY2Nlc3MpOwotICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpCisgICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5SEtFWV9Gcm9tSEtFWShfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTcwNyw4ICs3MzEsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIEhLRVkga2V5OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpRdWVyeUluZm9LZXkiLCBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXkpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6UXVlcnlJbmZvS2V5IiwgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19RdWVyeUluZm9LZXlfaW1wbChtb2R1bGUsIGtleSk7CiAKIGV4aXQ6CkBAIC03NDksOCArNzc0LDkgQEAKICAgICBQeV9VTklDT0RFICpzdWJfa2V5OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJlo6UXVlcnlWYWx1ZSIsCi0gICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXkpKQorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19RdWVyeVZhbHVlX2ltcGwobW9kdWxlLCBrZXksIHN1Yl9rZXkpOwogCiBleGl0OgpAQCAtNzg3LDggKzgxMyw5IEBACiAgICAgUHlfVU5JQ09ERSAqbmFtZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZaOlF1ZXJ5VmFsdWVFeCIsCi0gICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJm5hbWUpKQorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZuYW1lKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19RdWVyeVZhbHVlRXhfaW1wbChtb2R1bGUsIGtleSwgbmFtZSk7CiAKIGV4aXQ6CkBAIC04MzAsOCArODU3LDkgQEAKICAgICBQeV9VTklDT0RFICpmaWxlX25hbWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mdTpTYXZlS2V5IiwKLSAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmZmlsZV9uYW1lKSkKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmZmlsZV9uYW1lKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19TYXZlS2V5X2ltcGwobW9kdWxlLCBrZXksIGZpbGVfbmFtZSk7CiAKIGV4aXQ6CkBAIC04ODMsOCArOTExLDkgQEAKICAgICBQeV9zc2l6ZV9jbGVhbl90IHZhbHVlX2xlbmd0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZaa3UjOlNldFZhbHVlIiwKLSAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSwgJnR5cGUsICZ2YWx1ZSwgJnZhbHVlX2xlbmd0aCkpCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXksICZ0eXBlLCAmdmFsdWUsICZ2YWx1ZV9sZW5ndGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX1NldFZhbHVlX2ltcGwobW9kdWxlLCBrZXksIHN1Yl9rZXksIHR5cGUsIHZhbHVlLCB2YWx1ZV9sZW5ndGgpOwogCiBleGl0OgpAQCAtOTA3LDcgKzkzNiw3IEBACiAiICAgIEFuIGludGVnZXIgdGhhdCBzcGVjaWZpZXMgdGhlIHR5cGUgb2YgdGhlIGRhdGEsIG9uZSBvZjpcbiIKICIgICAgUkVHX0JJTkFSWSAtLSBCaW5hcnkgZGF0YSBpbiBhbnkgZm9ybS5cbiIKICIgICAgUkVHX0RXT1JEIC0tIEEgMzItYml0IG51bWJlci5cbiIKLSIgICAgUkVHX0RXT1JEX0xJVFRMRV9FTkRJQU4gLS0gQSAzMi1iaXQgbnVtYmVyIGluIGxpdHRsZS1lbmRpYW4gZm9ybWF0LlxuIgorIiAgICBSRUdfRFdPUkRfTElUVExFX0VORElBTiAtLSBBIDMyLWJpdCBudW1iZXIgaW4gbGl0dGxlLWVuZGlhbiBmb3JtYXQuIEVxdWl2YWxlbnQgdG8gUkVHX0RXT1JEXG4iCiAiICAgIFJFR19EV09SRF9CSUdfRU5ESUFOIC0tIEEgMzItYml0IG51bWJlciBpbiBiaWctZW5kaWFuIGZvcm1hdC5cbiIKICIgICAgUkVHX0VYUEFORF9TWiAtLSBBIG51bGwtdGVybWluYXRlZCBzdHJpbmcgdGhhdCBjb250YWlucyB1bmV4cGFuZGVkXG4iCiAiICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlcyB0byBlbnZpcm9ubWVudCB2YXJpYWJsZXMgKGZvciBleGFtcGxlLFxuIgpAQCAtOTE3LDYgKzk0Niw4IEBACiAiICAgICAgICAgICAgICAgICAgICBieSB0d28gbnVsbCBjaGFyYWN0ZXJzLiAgTm90ZSB0aGF0IFB5dGhvbiBoYW5kbGVzXG4iCiAiICAgICAgICAgICAgICAgICAgICB0aGlzIHRlcm1pbmF0aW9uIGF1dG9tYXRpY2FsbHkuXG4iCiAiICAgIFJFR19OT05FIC0tIE5vIGRlZmluZWQgdmFsdWUgdHlwZS5cbiIKKyIgICAgUkVHX1FXT1JEIC0tIEEgNjQtYml0IG51bWJlci5cbiIKKyIgICAgUkVHX1FXT1JEX0xJVFRMRV9FTkRJQU4gLS0gQSA2NC1iaXQgbnVtYmVyIGluIGxpdHRsZS1lbmRpYW4gZm9ybWF0LiBFcXVpdmFsZW50IHRvIFJFR19RV09SRC5cbiIKICIgICAgUkVHX1JFU09VUkNFX0xJU1QgLS0gQSBkZXZpY2UtZHJpdmVyIHJlc291cmNlIGxpc3QuXG4iCiAiICAgIFJFR19TWiAtLSBBIG51bGwtdGVybWluYXRlZCBzdHJpbmcuXG4iCiAiICB2YWx1ZVxuIgpAQCAtOTUwLDggKzk4MSw5IEBACiAgICAgUHlPYmplY3QgKnZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJlpPa086U2V0VmFsdWVFeCIsCi0gICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnZhbHVlX25hbWUsICZyZXNlcnZlZCwgJnR5cGUsICZ2YWx1ZSkpCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnZhbHVlX25hbWUsICZyZXNlcnZlZCwgJnR5cGUsICZ2YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfU2V0VmFsdWVFeF9pbXBsKG1vZHVsZSwga2V5LCB2YWx1ZV9uYW1lLCByZXNlcnZlZCwgdHlwZSwgdmFsdWUpOwogCiBleGl0OgpAQCAtOTg1LDggKzEwMTcsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIEhLRVkga2V5OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpEaXNhYmxlUmVmbGVjdGlvbktleSIsIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpEaXNhYmxlUmVmbGVjdGlvbktleSIsIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfRGlzYWJsZVJlZmxlY3Rpb25LZXlfaW1wbChtb2R1bGUsIGtleSk7CiAKIGV4aXQ6CkBAIC0xMDE4LDggKzEwNTEsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIEhLRVkga2V5OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpFbmFibGVSZWZsZWN0aW9uS2V5IiwgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOkVuYWJsZVJlZmxlY3Rpb25LZXkiLCBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXkpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX0VuYWJsZVJlZmxlY3Rpb25LZXlfaW1wbChtb2R1bGUsIGtleSk7CiAKIGV4aXQ6CkBAIC0xMDQ5LDExICsxMDgzLDEyIEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgSEtFWSBrZXk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOlF1ZXJ5UmVmbGVjdGlvbktleSIsIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpRdWVyeVJlZmxlY3Rpb25LZXkiLCBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXkpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX1F1ZXJ5UmVmbGVjdGlvbktleV9pbXBsKG1vZHVsZSwga2V5KTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTdiODk0MGEyM2Y2MDVkZGMgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE2ZGQwNmJlNmUxNGI4NmUgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvUEMvY2xpbmljL3dpbnNvdW5kLmMuaCBiL1BDL2NsaW5pYy93aW5zb3VuZC5jLmgKaW5kZXggYjAwYjQ0Mi4uNTJkMjViMiAxMDA2NDQKLS0tIGEvUEMvY2xpbmljL3dpbnNvdW5kLmMuaAorKysgYi9QQy9jbGluaWMvd2luc291bmQuYy5oCkBAIC0zLDcgKzMsNyBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBQeURvY19TVFJWQVIod2luc291bmRfUGxheVNvdW5kX19kb2NfXywKLSJQbGF5U291bmQoJG1vZHVsZSwgc291bmQsIGZsYWdzLCAvKVxuIgorIlBsYXlTb3VuZCgkbW9kdWxlLCAvLCBzb3VuZCwgZmxhZ3MpXG4iCiAiLS1cbiIKICJcbiIKICJBIHdyYXBwZXIgYXJvdW5kIHRoZSBXaW5kb3dzIFBsYXlTb3VuZCBBUEkuXG4iCkBAIC0xNCwyMSArMTQsMjQgQEAKICIgICAgRmxhZyB2YWx1ZXMsIG9yZWQgdG9nZXRoZXIuICBTZWUgbW9kdWxlIGRvY3VtZW50YXRpb24uIik7CiAKICNkZWZpbmUgV0lOU09VTkRfUExBWVNPVU5EX01FVEhPRERFRiAgICBcCi0gICAgeyJQbGF5U291bmQiLCAoUHlDRnVuY3Rpb24pd2luc291bmRfUGxheVNvdW5kLCBNRVRIX1ZBUkFSR1MsIHdpbnNvdW5kX1BsYXlTb3VuZF9fZG9jX199LAorICAgIHsiUGxheVNvdW5kIiwgKFB5Q0Z1bmN0aW9uKXdpbnNvdW5kX1BsYXlTb3VuZCwgTUVUSF9GQVNUQ0FMTCwgd2luc291bmRfUGxheVNvdW5kX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5zb3VuZF9QbGF5U291bmRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9VTklDT0RFICpzb3VuZCwgaW50IGZsYWdzKTsKK3dpbnNvdW5kX1BsYXlTb3VuZF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzb3VuZCwgaW50IGZsYWdzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXdpbnNvdW5kX1BsYXlTb3VuZChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3dpbnNvdW5kX1BsYXlTb3VuZChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIFB5X1VOSUNPREUgKnNvdW5kOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InNvdW5kIiwgImZsYWdzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT2k6UGxheVNvdW5kIiwgX2tleXdvcmRzLCAwfTsKKyAgICBQeU9iamVjdCAqc291bmQ7CiAgICAgaW50IGZsYWdzOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJaaTpQbGF5U291bmQiLAotICAgICAgICAmc291bmQsICZmbGFncykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzb3VuZCwgJmZsYWdzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnNvdW5kX1BsYXlTb3VuZF9pbXBsKG1vZHVsZSwgc291bmQsIGZsYWdzKTsKIAogZXhpdDoKQEAgLTM2LDcgKzM5LDcgQEAKIH0KIAogUHlEb2NfU1RSVkFSKHdpbnNvdW5kX0JlZXBfX2RvY19fLAotIkJlZXAoJG1vZHVsZSwgZnJlcXVlbmN5LCBkdXJhdGlvbiwgLylcbiIKKyJCZWVwKCRtb2R1bGUsIC8sIGZyZXF1ZW5jeSwgZHVyYXRpb24pXG4iCiAiLS1cbiIKICJcbiIKICJBIHdyYXBwZXIgYXJvdW5kIHRoZSBXaW5kb3dzIEJlZXAgQVBJLlxuIgpAQCAtNDgsMjEgKzUxLDI0IEBACiAiICAgIEhvdyBsb25nIHRoZSBzb3VuZCBzaG91bGQgcGxheSwgaW4gbWlsbGlzZWNvbmRzLiIpOwogCiAjZGVmaW5lIFdJTlNPVU5EX0JFRVBfTUVUSE9EREVGICAgIFwKLSAgICB7IkJlZXAiLCAoUHlDRnVuY3Rpb24pd2luc291bmRfQmVlcCwgTUVUSF9WQVJBUkdTLCB3aW5zb3VuZF9CZWVwX19kb2NfX30sCisgICAgeyJCZWVwIiwgKFB5Q0Z1bmN0aW9uKXdpbnNvdW5kX0JlZXAsIE1FVEhfRkFTVENBTEwsIHdpbnNvdW5kX0JlZXBfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIHdpbnNvdW5kX0JlZXBfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgZnJlcXVlbmN5LCBpbnQgZHVyYXRpb24pOwogCiBzdGF0aWMgUHlPYmplY3QgKgotd2luc291bmRfQmVlcChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3dpbnNvdW5kX0JlZXAoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJmcmVxdWVuY3kiLCAiZHVyYXRpb24iLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJpaTpCZWVwIiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgZnJlcXVlbmN5OwogICAgIGludCBkdXJhdGlvbjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWk6QmVlcCIsCi0gICAgICAgICZmcmVxdWVuY3ksICZkdXJhdGlvbikpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZmcmVxdWVuY3ksICZkdXJhdGlvbikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5zb3VuZF9CZWVwX2ltcGwobW9kdWxlLCBmcmVxdWVuY3ksIGR1cmF0aW9uKTsKIAogZXhpdDoKQEAgLTcwLDcgKzc2LDcgQEAKIH0KIAogUHlEb2NfU1RSVkFSKHdpbnNvdW5kX01lc3NhZ2VCZWVwX19kb2NfXywKLSJNZXNzYWdlQmVlcCgkbW9kdWxlLCB4PU1CX09LLCAvKVxuIgorIk1lc3NhZ2VCZWVwKCRtb2R1bGUsIC8sIHR5cGU9TUJfT0spXG4iCiAiLS1cbiIKICJcbiIKICJDYWxsIFdpbmRvd3MgTWVzc2FnZUJlZXAoeCkuXG4iCkBAIC03OCwyMyArODQsMjYgQEAKICJ4IGRlZmF1bHRzIHRvIE1CX09LLiIpOwogCiAjZGVmaW5lIFdJTlNPVU5EX01FU1NBR0VCRUVQX01FVEhPRERFRiAgICBcCi0gICAgeyJNZXNzYWdlQmVlcCIsIChQeUNGdW5jdGlvbil3aW5zb3VuZF9NZXNzYWdlQmVlcCwgTUVUSF9WQVJBUkdTLCB3aW5zb3VuZF9NZXNzYWdlQmVlcF9fZG9jX199LAorICAgIHsiTWVzc2FnZUJlZXAiLCAoUHlDRnVuY3Rpb24pd2luc291bmRfTWVzc2FnZUJlZXAsIE1FVEhfRkFTVENBTEwsIHdpbnNvdW5kX01lc3NhZ2VCZWVwX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5zb3VuZF9NZXNzYWdlQmVlcF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCB4KTsKK3dpbnNvdW5kX01lc3NhZ2VCZWVwX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IHR5cGUpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotd2luc291bmRfTWVzc2FnZUJlZXAoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit3aW5zb3VuZF9NZXNzYWdlQmVlcChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIGludCB4ID0gTUJfT0s7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsidHlwZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxpOk1lc3NhZ2VCZWVwIiwgX2tleXdvcmRzLCAwfTsKKyAgICBpbnQgdHlwZSA9IE1CX09LOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpNZXNzYWdlQmVlcCIsCi0gICAgICAgICZ4KSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnR5cGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKLSAgICByZXR1cm5fdmFsdWUgPSB3aW5zb3VuZF9NZXNzYWdlQmVlcF9pbXBsKG1vZHVsZSwgeCk7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IHdpbnNvdW5kX01lc3NhZ2VCZWVwX2ltcGwobW9kdWxlLCB0eXBlKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWMwYjI5MGRhZjIzMzBkYzkgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJmZTE2YjJiOGI0OTBjYjEgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvUEMvY29uZmlnLmMgYi9QQy9jb25maWcuYwppbmRleCA2NmJmNDU4Li40M2Q5ZTIwIDEwMDY0NAotLS0gYS9QQy9jb25maWcuYworKysgYi9QQy9jb25maWcuYwpAQCAtMjMsNiArMjMsOCBAQAogZXh0ZXJuIFB5T2JqZWN0KiBQeUluaXRfX3NoYTEodm9pZCk7CiBleHRlcm4gUHlPYmplY3QqIFB5SW5pdF9fc2hhMjU2KHZvaWQpOwogZXh0ZXJuIFB5T2JqZWN0KiBQeUluaXRfX3NoYTUxMih2b2lkKTsKK2V4dGVybiBQeU9iamVjdCogUHlJbml0X19zaGEzKHZvaWQpOworZXh0ZXJuIFB5T2JqZWN0KiBQeUluaXRfX2JsYWtlMih2b2lkKTsKIGV4dGVybiBQeU9iamVjdCogUHlJbml0X3RpbWUodm9pZCk7CiBleHRlcm4gUHlPYmplY3QqIFB5SW5pdF9fdGhyZWFkKHZvaWQpOwogI2lmZGVmIFdJTjMyCkBAIC05Niw2ICs5OCw4IEBACiAgICAgeyJfc2hhMSIsIFB5SW5pdF9fc2hhMX0sCiAgICAgeyJfc2hhMjU2IiwgUHlJbml0X19zaGEyNTZ9LAogICAgIHsiX3NoYTUxMiIsIFB5SW5pdF9fc2hhNTEyfSwKKyAgICB7Il9zaGEzIiwgUHlJbml0X19zaGEzfSwKKyAgICB7Il9ibGFrZTIiLCBQeUluaXRfX2JsYWtlMn0sCiAgICAgeyJ0aW1lIiwgUHlJbml0X3RpbWV9LAogI2lmZGVmIFdJVEhfVEhSRUFECiAgICAgeyJfdGhyZWFkIiwgUHlJbml0X190aHJlYWR9LApkaWZmIC0tZ2l0IGEvUEMvZ2V0cGF0aHAuYyBiL1BDL2dldHBhdGhwLmMKaW5kZXggYzdkZGYxZS4uMGIwYWU0OSAxMDA2NDQKLS0tIGEvUEMvZ2V0cGF0aHAuYworKysgYi9QQy9nZXRwYXRocC5jCkBAIC02LDcgKzYsOSBAQAogICAgUEFUSCBSVUxFUyBGT1IgV0lORE9XUzoKICAgIFRoaXMgZGVzY3JpYmVzIGhvdyBzeXMucGF0aCBpcyBmb3JtZWQgb24gV2luZG93cy4gIEl0IGRlc2NyaWJlcyB0aGUKICAgIGZ1bmN0aW9uYWxpdHksIG5vdCB0aGUgaW1wbGVtZW50YXRpb24gKGllLCB0aGUgb3JkZXIgaW4gd2hpY2ggdGhlc2UKLSAgIGFyZSBhY3R1YWxseSBmZXRjaGVkIGlzIGRpZmZlcmVudCkKKyAgIGFyZSBhY3R1YWxseSBmZXRjaGVkIGlzIGRpZmZlcmVudCkuIFRoZSBwcmVzZW5jZSBvZiBhIHB5dGhvbi5fcHRoIG9yCisgICBweXRob25YWS5fcHRoIGZpbGUgYWxvbmdzaWRlIHRoZSBwcm9ncmFtIG92ZXJyaWRlcyB0aGVzZSBydWxlcyAtIHNlZQorICAgYmVsb3cuCiAKICAgICogUHl0aG9uIGFsd2F5cyBhZGRzIGFuIGVtcHR5IGVudHJ5IGF0IHRoZSBzdGFydCwgd2hpY2ggY29ycmVzcG9uZHMKICAgICAgdG8gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgpAQCAtMjMsOSArMjUsOSBAQAogCiAgICAqIFdlIGF0dGVtcHQgdG8gbG9jYXRlIHRoZSAiUHl0aG9uIEhvbWUiIC0gaWYgdGhlIFBZVEhPTkhPTUUgZW52IHZhcgogICAgICBpcyBzZXQsIHdlIGJlbGlldmUgaXQuICBPdGhlcndpc2UsIHdlIHVzZSB0aGUgcGF0aCBvZiBvdXIgaG9zdCAuRVhFJ3MKLSAgICAgdG8gdHJ5IGFuZCBsb2NhdGUgb3VyICJsYW5kbWFyayIgKGxpYlxcb3MucHkpIGFuZCBkZWR1Y2Ugb3VyIGhvbWUuCisgICAgIHRvIHRyeSBhbmQgbG9jYXRlIG9uZSBvZiBvdXIgImxhbmRtYXJrcyIgYW5kIGRlZHVjZSBvdXIgaG9tZS4KICAgICAgLSBJZiB3ZSBETyBoYXZlIGEgUHl0aG9uIEhvbWU6IFRoZSByZWxldmFudCBzdWItZGlyZWN0b3JpZXMgKExpYiwKLSAgICAgICBwbGF0LXdpbiwgZXRjKSBhcmUgYmFzZWQgb24gdGhlIFB5dGhvbiBIb21lCisgICAgICAgRExMcywgZXRjKSBhcmUgYmFzZWQgb24gdGhlIFB5dGhvbiBIb21lCiAgICAgIC0gSWYgd2UgRE8gTk9UIGhhdmUgYSBQeXRob24gSG9tZSwgdGhlIGNvcmUgUHl0aG9uIFBhdGggaXMKICAgICAgICBsb2FkZWQgZnJvbSB0aGUgcmVnaXN0cnkuICBUaGlzIGlzIHRoZSBtYWluIFB5dGhvblBhdGgga2V5LAogICAgICAgIGFuZCBib3RoIEhLTE0gYW5kIEhLQ1UgYXJlIGNvbWJpbmVkIHRvIGZvcm0gdGhlIHBhdGgpCkBAIC0zMyw3ICszNSwyMyBAQAogICAgKiBJZmYgLSB3ZSBjYW4gbm90IGxvY2F0ZSB0aGUgUHl0aG9uIEhvbWUsIGhhdmUgbm90IGhhZCBhIFBZVEhPTlBBVEgKICAgICAgc3BlY2lmaWVkLCBhbmQgY2FuJ3QgbG9jYXRlIGFueSBSZWdpc3RyeSBlbnRyaWVzIChpZSwgd2UgaGF2ZSBfbm90aGluZ18KICAgICAgd2UgY2FuIGFzc3VtZSBpcyBhIGdvb2QgcGF0aCksIGEgZGVmYXVsdCBwYXRoIHdpdGggcmVsYXRpdmUgZW50cmllcyBpcwotICAgICB1c2VkIChlZy4gLlxMaWI7LlxwbGF0LXdpbiwgZXRjKQorICAgICB1c2VkIChlZy4gLlxMaWI7LlxETExzLCBldGMpCisKKworICAgSWYgYSAnLl9wdGgnIGZpbGUgZXhpc3RzIGFkamFjZW50IHRvIHRoZSBleGVjdXRhYmxlIHdpdGggdGhlIHNhbWUgYmFzZSBuYW1lCisgICAoZS5nLiBweXRob24uX3B0aCBhZGphY2VudCB0byBweXRob24uZXhlKSBvciBhZGphY2VudCB0byB0aGUgc2hhcmVkIGxpYnJhcnkKKyAgIChlLmcuIHB5dGhvbjM2Ll9wdGggYWRqYWNlbnQgdG8gcHl0aG9uMzYuZGxsKSwgaXQgaXMgdXNlZCBpbiBwcmVmZXJlbmNlIHRvCisgICB0aGUgYWJvdmUgcHJvY2Vzcy4gVGhlIHNoYXJlZCBsaWJyYXJ5IGZpbGUgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHRoZQorICAgZXhlY3V0YWJsZS4gVGhlIHBhdGggZmlsZSBtdXN0IGNvbnRhaW4gYSBsaXN0IG9mIHBhdGhzIHRvIGFkZCB0byBzeXMucGF0aCwKKyAgIG9uZSBwZXIgbGluZS4gRWFjaCBwYXRoIGlzIHJlbGF0aXZlIHRvIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgZmlsZS4KKyAgIEJsYW5rIGxpbmVzIGFuZCBjb21tZW50cyBiZWdpbm5pbmcgd2l0aCAnIycgYXJlIHBlcm1pdHRlZC4KKworICAgSW4gdGhlIHByZXNlbmNlIG9mIHRoaXMgLl9wdGggZmlsZSwgbm8gb3RoZXIgcGF0aHMgYXJlIGFkZGVkIHRvIHRoZSBzZWFyY2gKKyAgIHBhdGgsIHRoZSByZWdpc3RyeSBmaW5kZXIgaXMgbm90IGVuYWJsZWQsIHNpdGUucHkgaXMgbm90IGltcG9ydGVkIGFuZAorICAgaXNvbGF0ZWQgbW9kZSBpcyBlbmFibGVkLiBUaGUgc2l0ZSBwYWNrYWdlIGNhbiBiZSBlbmFibGVkIGJ5IGluY2x1ZGluZyBhCisgICBsaW5lIHJlYWRpbmcgImltcG9ydCBzaXRlIjsgbm8gb3RoZXIgaW1wb3J0cyBhcmUgcmVjb2duaXplZC4gQW55IGludmFsaWQKKyAgIGVudHJ5IChvdGhlciB0aGFuIGRpcmVjdG9yaWVzIHRoYXQgZG8gbm90IGV4aXN0KSB3aWxsIHJlc3VsdCBpbiBpbW1lZGlhdGUKKyAgIHRlcm1pbmF0aW9uIG9mIHRoZSBwcm9ncmFtLgogCiAKICAgVGhlIGVuZCByZXN1bHQgb2YgYWxsIHRoaXMgaXM6CkBAIC01Miw3ICs3MCwxMSBAQAogICAgIHNvbWUgZGVmYXVsdCwgYnV0IHJlbGF0aXZlLCBwYXRocy4KIAogICAqIEFuIGVtYmVkZGluZyBhcHBsaWNhdGlvbiBjYW4gdXNlIFB5X1NldFBhdGgoKSB0byBvdmVycmlkZSBhbGwgb2YKLSAgICB0aGVzZSBhdXRob21hdGljIHBhdGggY29tcHV0YXRpb25zLgorICAgIHRoZXNlIGF1dG9tYXRpYyBwYXRoIGNvbXB1dGF0aW9ucy4KKworICAqIEFuIGluc3RhbGwgb2YgUHl0aG9uIGNhbiBmdWxseSBzcGVjaWZ5IHRoZSBjb250ZW50cyBvZiBzeXMucGF0aCB1c2luZworICAgIGVpdGhlciBhICdFWEVOQU1FLl9wdGgnIG9yICdETExOQU1FLl9wdGgnIGZpbGUsIG9wdGlvbmFsbHkgaW5jbHVkaW5nCisgICAgImltcG9ydCBzaXRlIiB0byBlbmFibGUgdGhlIHNpdGUgbW9kdWxlLgogCiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKQEAgLTYxLDEwICs4MywxMyBAQAogI2luY2x1ZGUgIm9zZGVmcy5oIgogI2luY2x1ZGUgPHdjaGFyLmg+CiAKLSNpZmRlZiBNU19XSU5ET1dTCi0jaW5jbHVkZSA8d2luZG93cy5oPgorI2lmbmRlZiBNU19XSU5ET1dTCisjZXJyb3IgZ2V0cGF0aHAuYyBzaG91bGQgb25seSBiZSBidWlsdCBvbiBXaW5kb3dzCiAjZW5kaWYKIAorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDxTaGx3YXBpLmg+CisKICNpZmRlZiBIQVZFX1NZU19UWVBFU19ICiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjZW5kaWYgLyogSEFWRV9TWVNfVFlQRVNfSCAqLwpAQCAtMTIyLDYgKzE0NywzMyBAQAogICAgIGRpcltpXSA9ICdcMCc7CiB9CiAKK3N0YXRpYyBpbnQKK2NoYW5nZV9leHQod2NoYXJfdCAqZGVzdCwgY29uc3Qgd2NoYXJfdCAqc3JjLCBjb25zdCB3Y2hhcl90ICpleHQpCit7CisgICAgc2l6ZV90IHNyY19sZW4gPSB3Y3NubGVuX3Moc3JjLCBNQVhQQVRITEVOKzEpOworICAgIHNpemVfdCBpID0gc3JjX2xlbjsKKyAgICBpZiAoaSA+PSBNQVhQQVRITEVOKzEpCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoImJ1ZmZlciBvdmVyZmxvdyBpbiBnZXRwYXRocC5jJ3MgcmVkdWNlKCkiKTsKKworICAgIHdoaWxlIChpID4gMCAmJiBzcmNbaV0gIT0gJy4nICYmICFpc19zZXAoc3JjW2ldKSkKKyAgICAgICAgLS1pOworCisgICAgaWYgKGkgPT0gMCkgeworICAgICAgICBkZXN0WzBdID0gJ1wwJzsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmIChpc19zZXAoc3JjW2ldKSkKKyAgICAgICAgaSA9IHNyY19sZW47CisKKyAgICBpZiAod2NzbmNweV9zKGRlc3QsIE1BWFBBVEhMRU4rMSwgc3JjLCBpKSB8fAorICAgICAgICB3Y3NjYXRfcyhkZXN0LCBNQVhQQVRITEVOKzEsIGV4dCkpIHsKKyAgICAgICAgZGVzdFswXSA9ICdcMCc7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KIAogc3RhdGljIGludAogZXhpc3RzKHdjaGFyX3QgKmZpbGVuYW1lKQpAQCAtMTM1LDcgKzE4Nyw3IEBACiBzdGF0aWMgaW50CiBpc21vZHVsZSh3Y2hhcl90ICpmaWxlbmFtZSwgaW50IHVwZGF0ZV9maWxlbmFtZSkgLyogSXMgbW9kdWxlIC0tIGNoZWNrIGZvciAucHljLy5weW8gdG9vICovCiB7Ci0gICAgaW50IG47CisgICAgc2l6ZV90IG47CiAKICAgICBpZiAoZXhpc3RzKGZpbGVuYW1lKSkKICAgICAgICAgcmV0dXJuIDE7CkBAIC0xNjMsMjQgKzIxNSwzMCBAQAogICAgdGhhbiBNQVhQQVRITEVOIGNoYXJhY3RlcnMgYXQgZXhpdC4gIElmIHN0dWZmIGlzIHRvbyBsb25nLCBvbmx5IGFzIG11Y2ggb2YKICAgIHN0dWZmIGFzIGZpdHMgd2lsbCBiZSBhcHBlbmRlZC4KICovCisKK3N0YXRpYyBpbnQgX1BhdGhDY2hDb21iaW5lRXhfSW5pdGlhbGl6ZWQgPSAwOwordHlwZWRlZiBIUkVTVUxUKF9fc3RkY2FsbCAqUFBhdGhDY2hDb21iaW5lRXgpKFBXU1RSIHBzelBhdGhPdXQsIHNpemVfdCBjY2hQYXRoT3V0LCBQQ1dTVFIgcHN6UGF0aEluLCBQQ1dTVFIgcHN6TW9yZSwgdW5zaWduZWQgbG9uZyBkd0ZsYWdzKTsKK3N0YXRpYyBQUGF0aENjaENvbWJpbmVFeCBfUGF0aENjaENvbWJpbmVFeDsKKwogc3RhdGljIHZvaWQKIGpvaW4od2NoYXJfdCAqYnVmZmVyLCBjb25zdCB3Y2hhcl90ICpzdHVmZikKIHsKLSAgICBzaXplX3QgbjsKLSAgICBpZiAoaXNfc2VwKHN0dWZmWzBdKSB8fAotICAgICAgICAod2Nzbmxlbl9zKHN0dWZmLCA0KSA+PSAzICYmIHN0dWZmWzFdID09ICc6JyAmJiBpc19zZXAoc3R1ZmZbMl0pKSkgewotICAgICAgICBpZiAod2NzY3B5X3MoYnVmZmVyLCBNQVhQQVRITEVOKzEsIHN0dWZmKSAhPSAwKQotICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiYnVmZmVyIG92ZXJmbG93IGluIGdldHBhdGhwLmMncyBqb2luKCkiKTsKLSAgICAgICAgcmV0dXJuOworICAgIGlmIChfUGF0aENjaENvbWJpbmVFeF9Jbml0aWFsaXplZCA9PSAwKSB7CisgICAgICAgIEhNT0RVTEUgcGF0aGFwaSA9IExvYWRMaWJyYXJ5VyhMImFwaS1tcy13aW4tY29yZS1wYXRoLWwxLTEtMC5kbGwiKTsKKyAgICAgICAgaWYgKHBhdGhhcGkpCisgICAgICAgICAgICBfUGF0aENjaENvbWJpbmVFeCA9IChQUGF0aENjaENvbWJpbmVFeClHZXRQcm9jQWRkcmVzcyhwYXRoYXBpLCAiUGF0aENjaENvbWJpbmVFeCIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBfUGF0aENjaENvbWJpbmVFeCA9IE5VTEw7CisgICAgICAgIF9QYXRoQ2NoQ29tYmluZUV4X0luaXRpYWxpemVkID0gMTsKICAgICB9CiAKLSAgICBuID0gd2Nzbmxlbl9zKGJ1ZmZlciwgTUFYUEFUSExFTisxKTsKLSAgICBpZiAobiA+IDAgJiYgIWlzX3NlcChidWZmZXJbbiAtIDFdKSAmJiBuIDwgTUFYUEFUSExFTikgewotICAgICAgICBidWZmZXJbbl0gPSBTRVA7Ci0gICAgICAgIGJ1ZmZlcltuICsgMV0gPSAnXDAnOworICAgIGlmIChfUGF0aENjaENvbWJpbmVFeCkgeworICAgICAgICBpZiAoRkFJTEVEKF9QYXRoQ2NoQ29tYmluZUV4KGJ1ZmZlciwgTUFYUEFUSExFTisxLCBidWZmZXIsIHN0dWZmLCAwKSkpCisgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJidWZmZXIgb3ZlcmZsb3cgaW4gZ2V0cGF0aHAuYydzIGpvaW4oKSIpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmICghUGF0aENvbWJpbmVXKGJ1ZmZlciwgYnVmZmVyLCBzdHVmZikpCisgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJidWZmZXIgb3ZlcmZsb3cgaW4gZ2V0cGF0aHAuYydzIGpvaW4oKSIpOwogICAgIH0KLSAgICBpZiAod2NzY2F0X3MoYnVmZmVyLCBNQVhQQVRITEVOKzEsIHN0dWZmKSAhPSAwKQotICAgICAgICBQeV9GYXRhbEVycm9yKCJidWZmZXIgb3ZlcmZsb3cgaW4gZ2V0cGF0aHAuYydzIGpvaW4oKSIpOwogfQogCiAvKiBnb3RsYW5kbWFyayBvbmx5IGNhbGxlZCBieSBzZWFyY2hfZm9yX3ByZWZpeCwgd2hpY2ggZW5zdXJlcwpAQCAtMTg4LDcgKzI0Niw3IEBACiAgICAnbGFuZG1hcmsnIGNhbiBub3Qgb3ZlcmZsb3cgcHJlZml4IGlmIHRvbyBsb25nLgogKi8KIHN0YXRpYyBpbnQKLWdvdGxhbmRtYXJrKHdjaGFyX3QgKmxhbmRtYXJrKQorZ290bGFuZG1hcmsoY29uc3Qgd2NoYXJfdCAqbGFuZG1hcmspCiB7CiAgICAgaW50IG9rOwogICAgIFB5X3NzaXplX3QgbiA9IHdjc25sZW5fcyhwcmVmaXgsIE1BWFBBVEhMRU4pOwpAQCAtMjAyLDcgKzI2MCw3IEBACiAvKiBhc3N1bWVzIGFyZ3YwX3BhdGggaXMgTUFYUEFUSExFTisxIGJ5dGVzIGxvbmcsIGFscmVhZHkgXDAgdGVybSdkLgogICAgYXNzdW1wdGlvbiBwcm92aWRlZCBieSBvbmx5IGNhbGxlciwgY2FsY3VsYXRlX3BhdGgoKSAqLwogc3RhdGljIGludAotc2VhcmNoX2Zvcl9wcmVmaXgod2NoYXJfdCAqYXJndjBfcGF0aCwgd2NoYXJfdCAqbGFuZG1hcmspCitzZWFyY2hfZm9yX3ByZWZpeCh3Y2hhcl90ICphcmd2MF9wYXRoLCBjb25zdCB3Y2hhcl90ICpsYW5kbWFyaykKIHsKICAgICAvKiBTZWFyY2ggZnJvbSBhcmd2MF9wYXRoLCB1bnRpbCBsYW5kbWFyayBpcyBmb3VuZCAqLwogICAgIHdjc2NweV9zKHByZWZpeCwgTUFYUEFUSExFTiArIDEsIGFyZ3YwX3BhdGgpOwpAQCAtMjE0LDcgKzI3Miw2IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLSNpZmRlZiBNU19XSU5ET1dTCiAjaWZkZWYgUHlfRU5BQkxFX1NIQVJFRAogCiAvKiBhIHN0cmluZyBsb2FkZWQgZnJvbSB0aGUgRExMIGF0IHN0YXJ0dXAuKi8KQEAgLTM2OSw3ICs0MjYsNiBAQAogICAgIHJldHVybiByZXR2YWw7CiB9CiAjZW5kaWYgLyogUHlfRU5BQkxFX1NIQVJFRCAqLwotI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIAogc3RhdGljIHZvaWQKIGdldF9wcm9ncGF0aCh2b2lkKQpAQCAtMzc4LDcgKzQzNCw2IEBACiAgICAgd2NoYXJfdCAqcGF0aCA9IF93Z2V0ZW52KEwiUEFUSCIpOwogICAgIHdjaGFyX3QgKnByb2cgPSBQeV9HZXRQcm9ncmFtTmFtZSgpOwogCi0jaWZkZWYgTVNfV0lORE9XUwogI2lmZGVmIFB5X0VOQUJMRV9TSEFSRUQKICAgICBleHRlcm4gSEFORExFIFB5V2luX0RMTGhNb2R1bGU7CiAgICAgLyogc3RhdGljIGluaXQgb2YgcHJvZ3BhdGggZW5zdXJlcyBmaW5hbCBjaGFyIHJlbWFpbnMgXDAgKi8KQEAgLTM5MCw3ICs0NDUsNiBAQAogI2VuZGlmCiAgICAgaWYgKEdldE1vZHVsZUZpbGVOYW1lVyhOVUxMLCBwcm9ncGF0aCwgTUFYUEFUSExFTikpCiAgICAgICAgIHJldHVybjsKLSNlbmRpZgogICAgIGlmIChwcm9nID09IE5VTEwgfHwgKnByb2cgPT0gJ1wwJykKICAgICAgICAgcHJvZyA9IEwicHl0aG9uIjsKIApAQCAtNDgzLDYgKzUzNyw5MiBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXRpYyBpbnQKK3JlYWRfcHRoX2ZpbGUoY29uc3Qgd2NoYXJfdCAqcGF0aCwgd2NoYXJfdCAqcHJlZml4LCBpbnQgKmlzb2xhdGVkLCBpbnQgKm5vc2l0ZSkKK3sKKyAgICBGSUxFICpzcF9maWxlID0gX1B5X3dmb3BlbihwYXRoLCBMInIiKTsKKyAgICBpZiAoc3BfZmlsZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICB3Y3NjcHlfcyhwcmVmaXgsIE1BWFBBVEhMRU4rMSwgcGF0aCk7CisgICAgcmVkdWNlKHByZWZpeCk7CisgICAgKmlzb2xhdGVkID0gMTsKKyAgICAqbm9zaXRlID0gMTsKKworICAgIHNpemVfdCBidWZzaXogPSBNQVhQQVRITEVOOworICAgIHNpemVfdCBwcmVmaXhsZW4gPSB3Y3NsZW4ocHJlZml4KTsKKworICAgIHdjaGFyX3QgKmJ1ZiA9ICh3Y2hhcl90KilQeU1lbV9SYXdNYWxsb2MoYnVmc2l6ICogc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICBidWZbMF0gPSAnXDAnOworCisgICAgd2hpbGUgKCFmZW9mKHNwX2ZpbGUpKSB7CisgICAgICAgIGNoYXIgbGluZVtNQVhQQVRITEVOICsgMV07CisgICAgICAgIGNoYXIgKnAgPSBmZ2V0cyhsaW5lLCBNQVhQQVRITEVOICsgMSwgc3BfZmlsZSk7CisgICAgICAgIGlmICghcCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAoKnAgPT0gJ1wwJyB8fCAqcCA9PSAnIycpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgd2hpbGUgKCorK3ApIHsKKyAgICAgICAgICAgIGlmICgqcCA9PSAnXHInIHx8ICpwID09ICdcbicpIHsKKyAgICAgICAgICAgICAgICAqcCA9ICdcMCc7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoc3RyY21wKGxpbmUsICJpbXBvcnQgc2l0ZSIpID09IDApIHsKKyAgICAgICAgICAgICpub3NpdGUgPSAwOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0gZWxzZSBpZiAoc3RybmNtcChsaW5lLCAiaW1wb3J0ICIsIDcpID09IDApIHsKKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIm9ubHkgJ2ltcG9ydCBzaXRlJyBpcyBzdXBwb3J0ZWQgaW4gLl9wdGggZmlsZSIpOworICAgICAgICB9CisKKyAgICAgICAgRFdPUkQgd24gPSBNdWx0aUJ5dGVUb1dpZGVDaGFyKENQX1VURjgsIDAsIGxpbmUsIC0xLCBOVUxMLCAwKTsKKyAgICAgICAgd2NoYXJfdCAqd2xpbmUgPSAod2NoYXJfdCopUHlNZW1fUmF3TWFsbG9jKCh3biArIDEpICogc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICAgICAgd24gPSBNdWx0aUJ5dGVUb1dpZGVDaGFyKENQX1VURjgsIDAsIGxpbmUsIC0xLCB3bGluZSwgd24gKyAxKTsKKyAgICAgICAgd2xpbmVbd25dID0gJ1wwJzsKKworICAgICAgICBzaXplX3QgdXNlZHNpeiA9IHdjc2xlbihidWYpOworICAgICAgICB3aGlsZSAodXNlZHNpeiArIHduICsgcHJlZml4bGVuICsgNCA+IGJ1ZnNpeikgeworICAgICAgICAgICAgYnVmc2l6ICs9IE1BWFBBVEhMRU47CisgICAgICAgICAgICBidWYgPSAod2NoYXJfdCopUHlNZW1fUmF3UmVhbGxvYyhidWYsIChidWZzaXogKyAxKSAqIHNpemVvZih3Y2hhcl90KSk7CisgICAgICAgICAgICBpZiAoIWJ1ZikgeworICAgICAgICAgICAgICAgIFB5TWVtX1Jhd0ZyZWUod2xpbmUpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAodXNlZHNpeikgeworICAgICAgICAgICAgd2NzY2F0X3MoYnVmLCBidWZzaXosIEwiOyIpOworICAgICAgICAgICAgdXNlZHNpeiArPSAxOworICAgICAgICB9CisKKyAgICAgICAgZXJybm9fdCByZXN1bHQ7CisgICAgICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyAgICAgICAgcmVzdWx0ID0gd2NzY2F0X3MoYnVmLCBidWZzaXosIHByZWZpeCk7CisgICAgICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICisgICAgICAgIGlmIChyZXN1bHQgPT0gRUlOVkFMKSB7CisgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJpbnZhbGlkIGFyZ3VtZW50IGR1cmluZyAuX3B0aCBwcm9jZXNzaW5nIik7CisgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IEVSQU5HRSkgeworICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiYnVmZmVyIG92ZXJmbG93IGR1cmluZyAuX3B0aCBwcm9jZXNzaW5nIik7CisgICAgICAgIH0KKyAgICAgICAgd2NoYXJfdCAqYiA9ICZidWZbdXNlZHNpel07CisgICAgICAgIGpvaW4oYiwgd2xpbmUpOworCisgICAgICAgIFB5TWVtX1Jhd0ZyZWUod2xpbmUpOworICAgIH0KKworICAgIG1vZHVsZV9zZWFyY2hfcGF0aCA9IGJ1ZjsKKworICAgIGZjbG9zZShzcF9maWxlKTsKKyAgICByZXR1cm4gMDsKKworZXJyb3I6CisgICAgUHlNZW1fUmF3RnJlZShidWYpOworICAgIGZjbG9zZShzcF9maWxlKTsKKyAgICByZXR1cm4gLTE7Cit9CisKKwogc3RhdGljIHZvaWQKIGNhbGN1bGF0ZV9wYXRoKHZvaWQpCiB7CkBAIC00OTIsMzIgKzYzMiwzMyBAQAogICAgIHdjaGFyX3QgKnB5dGhvbmhvbWUgPSBQeV9HZXRQeXRob25Ib21lKCk7CiAgICAgd2NoYXJfdCAqZW52cGF0aCA9IE5VTEw7CiAKLSNpZmRlZiBNU19XSU5ET1dTCiAgICAgaW50IHNraXBob21lLCBza2lwZGVmYXVsdDsKICAgICB3Y2hhcl90ICptYWNoaW5lcGF0aCA9IE5VTEw7CiAgICAgd2NoYXJfdCAqdXNlcnBhdGggPSBOVUxMOwogICAgIHdjaGFyX3QgemlwX3BhdGhbTUFYUEFUSExFTisxXTsKLSAgICBpbnQgYXBwbG9jYWwgPSAwOwogCiAgICAgaWYgKCFQeV9JZ25vcmVFbnZpcm9ubWVudEZsYWcpIHsKICAgICAgICAgZW52cGF0aCA9IF93Z2V0ZW52KEwiUFlUSE9OUEFUSCIpOwogICAgIH0KLSNlbHNlCi0gICAgY2hhciAqX2VudnBhdGggPSBQeV9HRVRFTlYoIlBZVEhPTlBBVEgiKTsKLSAgICB3Y2hhcl90IHdlbnZwYXRoW01BWFBBVEhMRU4rMV07Ci0gICAgaWYgKF9lbnZwYXRoKSB7Ci0gICAgICAgIHNpemVfdCByID0gbWJzdG93Y3Mod2VudnBhdGgsIF9lbnZwYXRoLCBNQVhQQVRITEVOKzEpOwotICAgICAgICBlbnZwYXRoID0gd2VudnBhdGg7Ci0gICAgICAgIGlmIChyID09IChzaXplX3QpLTEgfHwgciA+PSBNQVhQQVRITEVOKQotICAgICAgICAgICAgZW52cGF0aCA9IE5VTEw7Ci0gICAgfQotI2VuZGlmCiAKICAgICBnZXRfcHJvZ3BhdGgoKTsKICAgICAvKiBwcm9ncGF0aCBndWFyYW50ZWVkIFwwIHRlcm1pbmF0ZWQgaW4gTUFYUEFUSCsxIGJ5dGVzLiAqLwogICAgIHdjc2NweV9zKGFyZ3YwX3BhdGgsIE1BWFBBVEhMRU4rMSwgcHJvZ3BhdGgpOwogICAgIHJlZHVjZShhcmd2MF9wYXRoKTsKIAorICAgIC8qIFNlYXJjaCBmb3IgYSBzeXMucGF0aCBmaWxlICovCisgICAgeworICAgICAgICB3Y2hhcl90IHNwYnVmZmVyW01BWFBBVEhMRU4rMV07CisKKyAgICAgICAgaWYgKChkbGxwYXRoWzBdICYmICFjaGFuZ2VfZXh0KHNwYnVmZmVyLCBkbGxwYXRoLCBMIi5fcHRoIikgJiYgZXhpc3RzKHNwYnVmZmVyKSkgfHwKKyAgICAgICAgICAgIChwcm9ncGF0aFswXSAmJiAhY2hhbmdlX2V4dChzcGJ1ZmZlciwgcHJvZ3BhdGgsIEwiLl9wdGgiKSAmJiBleGlzdHMoc3BidWZmZXIpKSkgeworCisgICAgICAgICAgICBpZiAoIXJlYWRfcHRoX2ZpbGUoc3BidWZmZXIsIHByZWZpeCwgJlB5X0lzb2xhdGVkRmxhZywgJlB5X05vU2l0ZUZsYWcpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCiAgICAgLyogU2VhcmNoIGZvciBhbiBlbnZpcm9ubWVudCBjb25maWd1cmF0aW9uIGZpbGUsIGZpcnN0IGluIHRoZQogICAgICAgIGV4ZWN1dGFibGUncyBkaXJlY3RvcnkgYW5kIHRoZW4gaW4gdGhlIHBhcmVudCBkaXJlY3RvcnkuCiAgICAgICAgSWYgZm91bmQsIG9wZW4gaXQgZm9yIHVzZSB3aGVuIHNlYXJjaGluZyBmb3IgcHJlZml4ZXMuCkBAIC01NDMsMTcgKzY4NCw2IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgaWYgKGVudl9maWxlICE9IE5VTEwpIHsKLSAgICAgICAgICAgIC8qIExvb2sgZm9yIGFuICdhcHBsb2NhbCcgdmFyaWFibGUgYW5kLCBpZiB0cnVlLCBpZ25vcmUgYWxsIHJlZ2lzdHJ5Ci0gICAgICAgICAgICAgKiBrZXlzIGFuZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIGJ1dCByZXRhaW4gdGhlIGRlZmF1bHQgcGF0aHMKLSAgICAgICAgICAgICAqIChETExzLCBMaWIpIGFuZCB0aGUgemlwIGZpbGUuIFNldHRpbmcgcHl0aG9uaG9tZSBoZXJlIHN1cHByZXNzZXMKLSAgICAgICAgICAgICAqIHRoZSBzZWFyY2ggZm9yIExBTkRNQVJLIGJlbG93IGFuZCBvdmVycmlkZXMgJVBZVEhPTkhPTUUlLgotICAgICAgICAgICAgICovCi0gICAgICAgICAgICBpZiAoZmluZF9lbnZfY29uZmlnX3ZhbHVlKGVudl9maWxlLCBMImFwcGxvY2FsIiwgdG1wYnVmZmVyKSAmJgotICAgICAgICAgICAgICAgIChhcHBsb2NhbCA9ICh3Y3NpY21wKHRtcGJ1ZmZlciwgTCJ0cnVlIikgPT0gMCkpKSB7Ci0gICAgICAgICAgICAgICAgZW52cGF0aCA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgcHl0aG9uaG9tZSA9IGFyZ3YwX3BhdGg7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKICAgICAgICAgICAgIC8qIExvb2sgZm9yIGEgJ2hvbWUnIHZhcmlhYmxlIGFuZCBzZXQgYXJndjBfcGF0aCB0byBpdCwgaWYgZm91bmQgKi8KICAgICAgICAgICAgIGlmIChmaW5kX2Vudl9jb25maWdfdmFsdWUoZW52X2ZpbGUsIEwiaG9tZSIsIHRtcGJ1ZmZlcikpIHsKICAgICAgICAgICAgICAgICB3Y3NjcHlfcyhhcmd2MF9wYXRoLCBNQVhQQVRITEVOKzEsIHRtcGJ1ZmZlcik7CkBAIC01NjMsOCArNjkzLDE1IEBACiAgICAgICAgIH0KICAgICB9CiAKKyAgICAvKiBDYWxjdWxhdGUgemlwIGFyY2hpdmUgcGF0aCBmcm9tIERMTCBvciBleGUgcGF0aCAqLworICAgIGNoYW5nZV9leHQoemlwX3BhdGgsIGRsbHBhdGhbMF0gPyBkbGxwYXRoIDogcHJvZ3BhdGgsIEwiLnppcCIpOworCiAgICAgaWYgKHB5dGhvbmhvbWUgPT0gTlVMTCB8fCAqcHl0aG9uaG9tZSA9PSAnXDAnKSB7Ci0gICAgICAgIGlmIChzZWFyY2hfZm9yX3ByZWZpeChhcmd2MF9wYXRoLCBMQU5ETUFSSykpCisgICAgICAgIGlmICh6aXBfcGF0aFswXSAmJiBleGlzdHMoemlwX3BhdGgpKSB7CisgICAgICAgICAgICB3Y3NjcHlfcyhwcmVmaXgsIE1BWFBBVEhMRU4rMSwgemlwX3BhdGgpOworICAgICAgICAgICAgcmVkdWNlKHByZWZpeCk7CisgICAgICAgICAgICBweXRob25ob21lID0gcHJlZml4OworICAgICAgICB9IGVsc2UgaWYgKHNlYXJjaF9mb3JfcHJlZml4KGFyZ3YwX3BhdGgsIExBTkRNQVJLKSkKICAgICAgICAgICAgIHB5dGhvbmhvbWUgPSBwcmVmaXg7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHB5dGhvbmhvbWUgPSBOVUxMOwpAQCAtNTc2LDMwICs3MTMsMTUgQEAKICAgICAgICAgZW52cGF0aCA9IE5VTEw7CiAKIAotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICAvKiBDYWxjdWxhdGUgemlwIGFyY2hpdmUgcGF0aCBmcm9tIERMTCBvciBleGUgcGF0aCAqLwotICAgIGlmICh3Y3NjcHlfcyh6aXBfcGF0aCwgTUFYUEFUSExFTisxLCBkbGxwYXRoWzBdID8gZGxscGF0aCA6IHByb2dwYXRoKSkKLSAgICAgICAgLyogZXhjZWVkZWQgYnVmZmVyIGxlbmd0aCAtIGlnbm9yZSB6aXBfcGF0aCAqLwotICAgICAgICB6aXBfcGF0aFswXSA9ICdcMCc7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHdjaGFyX3QgKmRvdCA9IHdjc3JjaHIoemlwX3BhdGgsICcuJyk7Ci0gICAgICAgIGlmICghZG90IHx8IHdjc2NweV9zKGRvdCwgTUFYUEFUSExFTisxIC0gKGRvdCAtIHppcF9wYXRoKSwgTCIuemlwIikpCi0gICAgICAgICAgICAvKiBleGNlZWRlZCBidWZmZXIgbGVuZ3RoIC0gaWdub3JlIHppcF9wYXRoICovCi0gICAgICAgICAgICB6aXBfcGF0aFswXSA9IEwnXDAnOwotICAgIH0KLQogICAgIHNraXBob21lID0gcHl0aG9uaG9tZT09TlVMTCA/IDAgOiAxOwogI2lmZGVmIFB5X0VOQUJMRV9TSEFSRUQKLSAgICBpZiAoIWFwcGxvY2FsKSB7Ci0gICAgICAgIG1hY2hpbmVwYXRoID0gZ2V0cHl0aG9ucmVncGF0aChIS0VZX0xPQ0FMX01BQ0hJTkUsIHNraXBob21lKTsKLSAgICAgICAgdXNlcnBhdGggPSBnZXRweXRob25yZWdwYXRoKEhLRVlfQ1VSUkVOVF9VU0VSLCBza2lwaG9tZSk7Ci0gICAgfQorICAgIG1hY2hpbmVwYXRoID0gZ2V0cHl0aG9ucmVncGF0aChIS0VZX0xPQ0FMX01BQ0hJTkUsIHNraXBob21lKTsKKyAgICB1c2VycGF0aCA9IGdldHB5dGhvbnJlZ3BhdGgoSEtFWV9DVVJSRU5UX1VTRVIsIHNraXBob21lKTsKICNlbmRpZgogICAgIC8qIFdlIG9ubHkgdXNlIHRoZSBkZWZhdWx0IHJlbGF0aXZlIFBZVEhPTlBBVEggaWYgd2UgaGF2ZW50CiAgICAgICAgYW55dGhpbmcgYmV0dGVyIHRvIHVzZSEgKi8KICAgICBza2lwZGVmYXVsdCA9IGVudnBhdGghPU5VTEwgfHwgcHl0aG9uaG9tZSE9TlVMTCB8fCBcCiAgICAgICAgICAgICAgICAgICBtYWNoaW5lcGF0aCE9TlVMTCB8fCB1c2VycGF0aCE9TlVMTDsKLSNlbmRpZgogCiAgICAgLyogV2UgbmVlZCB0byBjb25zdHJ1Y3QgYSBwYXRoIGZyb20gdGhlIGZvbGxvd2luZyBwYXJ0cy4KICAgICAgICAoMSkgdGhlIFBZVEhPTlBBVEggZW52aXJvbm1lbnQgdmFyaWFibGUsIGlmIHNldDsKQEAgLTYxMiw3ICs3MzQsNiBAQAogICAgICAgIEV4dHJhIHJ1bGVzOgogICAgICAgIC0gSWYgUFlUSE9OSE9NRSBpcyBzZXQgKGluIGFueSB3YXkpIGl0ZW0gKDMpIGlzIGlnbm9yZWQuCiAgICAgICAgLSBJZiByZWdpc3RyeSB2YWx1ZXMgYXJlIHVzZWQsICg0KSBhbmQgKDUpIGFyZSBpZ25vcmVkLgotICAgICAgIC0gSWYgYXBwbG9jYWwgaXMgc2V0LCAoMSksICgzKSwgYW5kIHJlZ2lzdHJ5IHZhbHVlcyBhcmUgaWdub3JlZAogICAgICovCiAKICAgICAvKiBDYWxjdWxhdGUgc2l6ZSBvZiByZXR1cm4gYnVmZmVyICovCkBAIC02MjksMTMgKzc1MCwxMSBAQAogICAgICAgICBidWZzeiA9IDA7CiAgICAgYnVmc3ogKz0gd2NzbGVuKFBZVEhPTlBBVEgpICsgMTsKICAgICBidWZzeiArPSB3Y3NsZW4oYXJndjBfcGF0aCkgKyAxOwotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBpZiAoIWFwcGxvY2FsICYmIHVzZXJwYXRoKQorICAgIGlmICh1c2VycGF0aCkKICAgICAgICAgYnVmc3ogKz0gd2NzbGVuKHVzZXJwYXRoKSArIDE7Ci0gICAgaWYgKCFhcHBsb2NhbCAmJiBtYWNoaW5lcGF0aCkKKyAgICBpZiAobWFjaGluZXBhdGgpCiAgICAgICAgIGJ1ZnN6ICs9IHdjc2xlbihtYWNoaW5lcGF0aCkgKyAxOwogICAgIGJ1ZnN6ICs9IHdjc2xlbih6aXBfcGF0aCkgKyAxOwotI2VuZGlmCiAgICAgaWYgKGVudnBhdGggIT0gTlVMTCkKICAgICAgICAgYnVmc3ogKz0gd2NzbGVuKGVudnBhdGgpICsgMTsKIApAQCAtNjUxLDEwICs3NzAsOCBAQAogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJVc2luZyBkZWZhdWx0IHN0YXRpYyBwYXRoLlxuIik7CiAgICAgICAgICAgICBtb2R1bGVfc2VhcmNoX3BhdGggPSBQWVRIT05QQVRIOwogICAgICAgICB9Ci0jaWZkZWYgTVNfV0lORE9XUwogICAgICAgICBQeU1lbV9SYXdGcmVlKG1hY2hpbmVwYXRoKTsKICAgICAgICAgUHlNZW1fUmF3RnJlZSh1c2VycGF0aCk7Ci0jZW5kaWYgLyogTVNfV0lORE9XUyAqLwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02NjQsNyArNzgxLDYgQEAKICAgICAgICAgYnVmID0gd2NzY2hyKGJ1ZiwgTCdcMCcpOwogICAgICAgICAqYnVmKysgPSBERUxJTTsKICAgICB9Ci0jaWZkZWYgTVNfV0lORE9XUwogICAgIGlmICh6aXBfcGF0aFswXSkgewogICAgICAgICBpZiAod2NzY3B5X3MoYnVmLCBidWZzeiAtIChidWYgLSBtb2R1bGVfc2VhcmNoX3BhdGgpLCB6aXBfcGF0aCkpCiAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJidWZmZXIgb3ZlcmZsb3cgaW4gZ2V0cGF0aHAuYydzIGNhbGN1bGF0ZV9wYXRoKCkiKTsKQEAgLTY5MiwxNSArODA4LDcgQEAKICAgICAgICAgICAgIGJ1ZiA9IHdjc2NocihidWYsIEwnXDAnKTsKICAgICAgICAgICAgICpidWYrKyA9IERFTElNOwogICAgICAgICB9Ci0gICAgfQotI2Vsc2UKLSAgICBpZiAocHl0aG9uaG9tZSA9PSBOVUxMKSB7Ci0gICAgICAgIHdjc2NweShidWYsIFBZVEhPTlBBVEgpOwotICAgICAgICBidWYgPSB3Y3NjaHIoYnVmLCBMJ1wwJyk7Ci0gICAgICAgICpidWYrKyA9IERFTElNOwotICAgIH0KLSNlbmRpZiAvKiBNU19XSU5ET1dTICovCi0gICAgZWxzZSB7CisgICAgfSBlbHNlIHsKICAgICAgICAgd2NoYXJfdCAqcCA9IFBZVEhPTlBBVEg7CiAgICAgICAgIHdjaGFyX3QgKnE7CiAgICAgICAgIHNpemVfdCBuOwpkaWZmIC0tZ2l0IGEvUEMvaWNvbnMvbGF1bmNoZXIuaWNucyBiL1BDL2ljb25zL2xhdW5jaGVyLmljbnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTlhOTE3ZgotLS0gL2Rldi9udWxsCisrKyBiL1BDL2ljb25zL2xhdW5jaGVyLmljbnMKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvUEMvaWNvbnMvbGF1bmNoZXIuaWNvIGIvUEMvaWNvbnMvbGF1bmNoZXIuaWNvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0ZTNjNjkKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9pY29ucy9sYXVuY2hlci5pY28KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvUEMvaWNvbnMvbGF1bmNoZXIuc3ZnIGIvUEMvaWNvbnMvbGF1bmNoZXIuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1OTBiMGQKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9pY29ucy9sYXVuY2hlci5zdmcKQEAgLTAsMCArMSBAQAorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMiAzMiI+PHN0eWxlPi5pY29uLWNhbnZhcy10cmFuc3BhcmVudHtvcGFjaXR5OjA7ZmlsbDojZjZmNmY2fS5pY29uLXZzLW91dHtmaWxsOiNmNmY2ZjZ9Lmljb24td2hpdGV7ZmlsbDojZmZmfS5pY29uLXZzby1iZ3tmaWxsOiM2NTY1NjV9Lmljb24tdmlzdWFsc3R1ZGlvLW9ubGluZXtmaWxsOiMwMDdhY2N9LmdyYXBoLWxpZ2h0Z3JleXtmaWxsOiNkZmRmZGZ9LnN0MHtmaWxsOiMwMDc4ZDd9LnN0MXtmaWxsOiNmZmZ9LnN0MntmaWxsOnVybCgjcGF0aDE5NDhfMV8pfS5zdDN7ZmlsbDp1cmwoI3BhdGgxOTUwXzFfKX08L3N0eWxlPjxwYXRoIGNsYXNzPSJpY29uLWNhbnZhcy10cmFuc3BhcmVudCIgZD0iTTMyIDMySDBWMGgzMnYzMnoiIGlkPSJjYW52YXMiLz48ZyBpZD0iaWNvbkJnIj48cGF0aCBjbGFzcz0iaWNvbi12aXN1YWxzdHVkaW8tb25saW5lIiBkPSJNMzAgNUg1VjNoMjV2MnoiLz48cGF0aCBjbGFzcz0iaWNvbi12c28tYmciIGQ9Ik0yOS45NzIgMjYuOTcySDUuMDI5VjVoLjk0MnYyMS4wMjhoMjMuMDU3VjVoLjk0M3YyMS45NzJ6Ii8+PHBhdGggY2xhc3M9Imljb24tdnMtb3V0IiBkPSJNMjkgNXYyMUg2VjVoMjN6Ii8+PHBhdGggY2xhc3M9Imljb24td2hpdGUiIGQ9Ik0yOS4xNDEgNGwuNDI5LjQyOS0uMTQuMTQyLS40My0uNDMtLjQzLjQzLS4xNC0uMTQyLjQyOS0uNDI5LS40MjktLjQyOS4xNDEtLjE0Mi40MjkuNDMuNDMtLjQzLjE0MS4xNDItLjQzLjQyOXpNMjcuNiAzLjRoLTEuMnYxLjJoMS4yVjMuNHptLTEgLjJoLjh2LjhoLS44di0uOHptLTEuMTM5LjhoLTF2LjJoMXYtLjJ6Ii8+PHBhdGggY2xhc3M9ImdyYXBoLWxpZ2h0Z3JleSIgZD0iTTYgNWgyM3YySDZ6Ii8+PC9nPjxnIGlkPSJpY29uRmciPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik00LjUgMjN2NiIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0xMS40MjkgMTMuMDE5YTE5Ljg4IDE5Ljg4IDAgMCAwIC4wNzEtMS42NDVjMC00LjIyMy0xLjMyOS04LjE2NS0zLjU1Ni0xMC41NDVMNy4xNyAwSDUuODNsLS43NzQuODI5QzIuODI5IDMuMjA5IDEuNSA3LjE1MSAxLjUgMTEuMzc0YzAgLjQ1My4wMjMuOS4wNTMgMS4zNDVDLjg4NyAxMy40NzIuMzU3IDE0LjQzOCAwIDE1LjUzM3Y2LjYwM0wuMjI5IDIzSDN2N2gydjJoM3YtMWgydi04aDIuNzcybC4zOTQtMS40ODhjLjIyMi0uODQyLjMzNS0xLjcxNC4zMzUtMi41OTItLjAwMS0yLjQxOS0uODAzLTQuNTM0LTIuMDcyLTUuOTAxeiIvPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik02LjUgMjJ2OU04LjUgMjN2NyIvPjxwYXRoIGNsYXNzPSJpY29uLXZpc3VhbHN0dWRpby1vbmxpbmUiIGQ9Ik01IDI5SDR2LTZoMXY2em0yLTZINnY4aDF2LTh6bTIgMEg4djdoMXYtN3oiLz48cGF0aCBjbGFzcz0iaWNvbi12c28tYmciIGQ9Ik0xMC4zODEgMTMuMzhjLjA3LS42NTguMTE5LTEuMzI1LjExOS0yLjAwNiAwLTMuOTc1LTEuMjI5LTcuNjYyLTMuMjg2LTkuODYyTDYuNS43NDhsLS43MTQuNzYzQzMuNzI5IDMuNzEyIDIuNSA3LjM5OSAyLjUgMTEuMzc0YzAgLjY4MS4wNDkgMS4zNDguMTE5IDIuMDA2QzEuMzM5IDE0LjUyMS41IDE2LjU1Mi41IDE4LjkyYzAgLjc5My4xMDIgMS41NzguMzAyIDIuMzM2TC45OTkgMjJoMS45NjZsLjA3Mi0uOTIyYy4wODEtMS4wNDYuNDcxLTEuOTY2Ljk5My0yLjUwMy40ODcgMS4wMTkgMS4wNyAxLjkyOSAxLjc1NiAyLjY2Mkw2LjUgMjJsLjcxNC0uNzYzYy42ODYtLjczMyAxLjI2OS0xLjY0MyAxLjc1Ni0yLjY2Mi41MjIuNTM3LjkxMiAxLjQ1Ny45OTMgMi41MDNsLjA3Mi45MjJoMS45NjZsLjE5Ny0uNzQ0Yy4yLS43NTguMzAyLTEuNTQzLjMwMi0yLjMzNiAwLTIuMzY4LS44MzktNC4zOTktMi4xMTktNS41NHoiLz48cGF0aCBjbGFzcz0iaWNvbi12cy1vdXQiIGQ9Ik0zLjYxOSAxNy42MTVjLS44NTQuNjcyLTEuNDY0IDEuOTEzLTEuNTc5IDMuMzg1aC0uMjcyYTguMTg0IDguMTg0IDAgMCAxLS4yNjgtMi4wOGMwLTEuNzIyLjUwNS0zLjI1OSAxLjI5Ny00LjI3Mi4xODcgMS4wNS40NjUgMi4wNDUuODIyIDIuOTY3em02LjU4NS0yLjk2N2ExNi4xNDUgMTYuMTQ1IDAgMCAxLS44MjIgMi45NjdjLjg1NC42NzEgMS40NjQgMS45MTMgMS41NzkgMy4zODVoLjI3MmE4LjE4NCA4LjE4NCAwIDAgMCAuMjY4LTIuMDhjLS4wMDEtMS43MjItLjUwNi0zLjI1OS0xLjI5Ny00LjI3MnpNMy41IDExLjM3NGMwIDMuODM3IDEuMTk4IDcuMiAzIDkuMTI4IDEuODAyLTEuOTI3IDMtNS4yOTEgMy05LjEyOHMtMS4xOTgtNy4yLTMtOS4xMjhjLTEuODAyIDEuOTI4LTMgNS4yOTEtMyA5LjEyOHoiLz48cGF0aCBjbGFzcz0iaWNvbi12aXN1YWxzdHVkaW8tb25saW5lIiBkPSJNNy41IDdhMSAxIDAgMSAxLTIgMCAxIDEgMCAwIDEgMiAweiIvPjwvZz48ZyBpZD0iY29sb3JJbXBvcnRhbmNlIj48cGF0aCBjbGFzcz0iaWNvbi13aGl0ZSIgZD0iTTMxLjU5NiAyMy45NjFjLS4zNSAxLjA1My0xLjAwMSAzLjAxNS0zLjI0NyAzLjAxNWgtMS4zdjEuMzM3YzAgLjkwNS0uMzkyIDIuNTM3LTMuMDIxIDMuMjk4YTkuMjEzIDkuMjEzIDAgMCAxLTIuNTkuMzljLS44MyAwLTEuNjY4LS4xMjgtMi41NjQtLjM5Mi0xLjkxOC0uNTYzLTMuMDE3LTEuNzY1LTMuMDE3LTMuMjk2di0xLjMzN2gtMS4xNTVjLTEuNjk4IDAtMi45NDMtMS4xMjktMy40MTYtMy4wOTgtLjQ2OS0xLjk0Ni0uNDY5LTMuMTk1IDAtNS4xNDEuNDUxLTEuODgxIDEuOTYtMy4wOTggMy44NDUtMy4wOThoLjcyNnYtMS4zMzdjMC0yLjAwNS45MDUtMi45ODIgMy4xMjYtMy4zNzQuNzI5LS4xMyAxLjU0OS0uMiAyLjM2Ny0uMjAzaC4wMDRjLjkyNSAwIDEuNzYxLjA2NyAyLjU2LjIwMSAxLjgxNi4zMDMgMy4xMzQgMS43MjMgMy4xMzQgMy4zNzZ2MS4zMzdoMS4zYzEuMTQyIDAgMi42MzYuNTM2IDMuMjcgMy4wOTIuNTE2IDIuMDczLjUxIDMuNjM3LS4wMjIgNS4yM3oiLz48bGluZWFyR3JhZGllbnQgaWQ9InBhdGgxOTQ4XzFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUyMi4yMDUiIHkxPSItMjg4LjY2OCIgeDI9IjU0MC45MDIiIHkyPSItMzA0Ljc1NCIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCguNTYyNSAwIDAgLS41NjggLTI4Mi4yNzIgLTE1MS42OSkiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzVhOWZkNCIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzMwNjk5OCIvPjwvbGluZWFyR3JhZGllbnQ+PHBhdGggaWQ9InBhdGgxOTQ4XzdfIiBjbGFzcz0ic3QyIiBkPSJNMjEuMzU0IDExLjcyNWMtLjc4Ni4wMDQtMS41MzcuMDcxLTIuMTk3LjE4OC0xLjk0Ni4zNDQtMi4yOTkgMS4wNjMtMi4yOTkgMi4zOXYxLjc1M2g0LjU5OHYuNTg0aC02LjMyNGMtMS4zMzYgMC0yLjUwNy44MDMtMi44NzMgMi4zMzEtLjQyMiAxLjc1MS0uNDQxIDIuODQ0IDAgNC42NzMuMzI3IDEuMzYxIDEuMTA3IDIuMzMxIDIuNDQ0IDIuMzMxaDEuNTgxdi0yLjEwMWMwLTEuNTE4IDEuMzEzLTIuODU3IDIuODczLTIuODU3aDQuNTkzYzEuMjc5IDAgMi4yOTktMS4wNTMgMi4yOTktMi4zMzd2LTQuMzc5YzAtMS4yNDYtMS4wNTEtMi4xODItMi4yOTktMi4zOS0uNzktLjEzLTEuNjEtLjE4OS0yLjM5Ni0uMTg2em0tMi40ODYgMS40MWMuNDc1IDAgLjg2My4zOTQuODYzLjg3OWEuODcuODcgMCAwIDEtLjg2My44NzQuODY4Ljg2OCAwIDAgMS0uODYzLS44NzRjMC0uNDg1LjM4Ni0uODc5Ljg2My0uODc5eiIvPjxsaW5lYXJHcmFkaWVudCBpZD0icGF0aDE5NTBfMV8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iNTQ4LjEzIiB5MT0iLTMxNC40ODkiIHgyPSI1NDEuNDU0IiB5Mj0iLTMwNS4wNDMiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLjU2MjUgMCAwIC0uNTY4IC0yODIuMjcyIC0xNTEuNjkpIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiNmZmQ0M2IiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNmZmU4NzMiLz48L2xpbmVhckdyYWRpZW50PjxwYXRoIGlkPSJwYXRoMTk1MF83XyIgY2xhc3M9InN0MyIgZD0iTTI2LjYyMyAxNi42NHYyLjA0MmMwIDEuNTgzLTEuMzQyIDIuOTE1LTIuODczIDIuOTE1aC00LjU5M2MtMS4yNTggMC0yLjI5OSAxLjA3Ny0yLjI5OSAyLjMzN3Y0LjM3OWMwIDEuMjQ2IDEuMDg0IDEuOTc5IDIuMjk5IDIuMzM3IDEuNDU2LjQyOCAyLjg1MS41MDUgNC41OTMgMCAxLjE1OC0uMzM1IDIuMjk5LTEuMDEgMi4yOTktMi4zMzdWMjYuNTZoLTQuNTkzdi0uNTg0SDI4LjM0OGMxLjMzNiAwIDEuODM0LS45MzIgMi4yOTktMi4zMzEuNDgtMS40NC40Ni0yLjgyNiAwLTQuNjczLS4zMy0xLjMzLS45NjEtMi4zMzEtMi4yOTktMi4zMzFoLTEuNzI1em0tMi41ODQgMTEuMDg5Yy40NzcgMCAuODYzLjM5MS44NjMuODc0YS44NzEuODcxIDAgMCAxLS44NjMuODc5Ljg3Mi44NzIgMCAwIDEtLjg2My0uODc5Ljg3Ljg3IDAgMCAxIC44NjMtLjg3NHoiLz48L2c+PC9zdmc+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUEMvaWNvbnMvcHkuaWNucyBiL1BDL2ljb25zL3B5LmljbnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmRjNGUyOQotLS0gL2Rldi9udWxsCisrKyBiL1BDL2ljb25zL3B5LmljbnMKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvUEMvaWNvbnMvcHkuaWNvIGIvUEMvaWNvbnMvcHkuaWNvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkOGE3OWIKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9pY29ucy9weS5pY28KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvUEMvaWNvbnMvcHkuc3ZnIGIvUEMvaWNvbnMvcHkuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5MjRlODMKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9pY29ucy9weS5zdmcKQEAgLTAsMCArMSBAQAorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMiAzMiI+PHN0eWxlPi5pY29uLWNhbnZhcy10cmFuc3BhcmVudHtvcGFjaXR5OjA7ZmlsbDojZjZmNmY2fS5pY29uLXZzLW91dHtmaWxsOiNmNmY2ZjZ9Lmljb24tdnNvLWJne2ZpbGw6IzY1NjU2NX0uaWNvbi12c28tbGlnaHRncmV5e2ZpbGw6I2JmYmZiZn0uaWNvbi13aGl0ZXtmaWxsOiNmZmZ9LnN0MHtmaWxsOnVybCgjcGF0aDE5NDhfMV8pfS5zdDF7ZmlsbDp1cmwoI3BhdGgxOTUwXzFfKX08L3N0eWxlPjxwYXRoIGNsYXNzPSJpY29uLWNhbnZhcy10cmFuc3BhcmVudCIgZD0iTTMyIDMySDBWMGgzMnYzMnoiIGlkPSJjYW52YXMiLz48ZyBpZD0iaWNvbkJnIj48cGF0aCBjbGFzcz0iaWNvbi12cy1vdXQiIGQ9Ik0yNiA4LjAwOVYyOUg3VjNoMTQuMDUzTDI2IDguMDA5eiIvPjxwYXRoIGNsYXNzPSJpY29uLXZzby1iZyIgZD0iTTIxLjQ3MSAySDZ2MjhoMjFWNy41OTlMMjEuNDcxIDJ6TTIxIDNoLjA1M2w0LjkzOSA1SDIxVjN6bTUgMjZIN1YzaDEzdjZoNnYyMHoiLz48L2c+PHBhdGggY2xhc3M9Imljb24tdnNvLWxpZ2h0Z3JleSIgZD0iTTE3IDdIOVY2aDh2MXptMCAySDl2MWg4Vjl6bTcgM0g5djFoMTV2LTF6bTAgM0g5djFoMTV2LTF6bTAgM0g5djFoMTV2LTF6bTAgM0g5djFoMTV2LTF6bTAgM0g5djFoMTV2LTF6IiBpZD0iaWNvbkZnIi8+PGcgaWQ9ImNvbG9ySW1wb3J0YW5jZSI+PHBhdGggY2xhc3M9Imljb24td2hpdGUiIGQ9Ik0zMS42NiAyNC4wNjNDMzEuMzEyIDI1LjExNiAzMC42NjEgMjcgMjguNDEzIDI3SDI3djEuMzEzYzAgLjkwNS0uMzM1IDIuNTM3LTIuOTY1IDMuMjk4LS45MDQuMjYxLTEuNjk0LjM4OS0yLjUzMS4zODktLjgzIDAtMS42My0uMTI4LTIuNTI2LS4zOTJDMTcuMDYxIDMxLjA0NSAxNiAyOS44NDQgMTYgMjguMzEzVjI3aC0xLjIzMmMtMS42OTkgMC0yLjk0NC0xLjE0MS0zLjQxNi0zLjExLS40NjktMS45NDYtLjQ2OS0zLjAyMSAwLTQuOTY3LjQ1MS0xLjg4MSAxLjk2LTIuOTIzIDMuODQ1LTIuOTIzSDE2di0xLjY5N2MwLTIuMDA1Ljg2Ni0yLjg0NSAzLjA4Ny0zLjIzOC43MjctLjEyOCAxLjUwNi0uMDY1IDIuMzI3LS4wNjVoLjAwM2MuOTIxIDAgMS43MDMtLjA3IDIuNTA0LjA2NCAxLjgxOC4zMDIgMy4wNzkgMS41ODUgMy4wNzkgMy4yMzlWMTZoMS40MTNjMS4xNDIgMCAyLjYzNi4zNTYgMy4yNyAyLjkxMi41MTUgMi4wNzIuNTA5IDMuNTU5LS4wMjMgNS4xNTF6Ii8+PGxpbmVhckdyYWRpZW50IGlkPSJwYXRoMTk0OF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI1MjIuMzIiIHkxPSItMjg4LjY2OCIgeDI9IjU0MS4wMTciIHkyPSItMzA0Ljc1NCIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCguNTYyNSAwIDAgLS41NjggLTI4Mi4yNzIgLTE1MS42OSkiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzVhOWZkNCIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzMwNjk5OCIvPjwvbGluZWFyR3JhZGllbnQ+PHBhdGggaWQ9InBhdGgxOTQ4XzJfIiBjbGFzcz0ic3QwIiBkPSJNMjEuNDE5IDExLjcyNWMtLjc4Ni4wMDQtMS41MzcuMDcxLTIuMTk3LjE4OC0xLjk0Ni4zNDQtMi4yOTkgMS4wNjMtMi4yOTkgMi4zOXYxLjc1M2g0LjU5OHYuNTg0aC02LjMyNGMtMS4zMzYgMC0yLjUwNy44MDMtMi44NzMgMi4zMzEtLjQyMiAxLjc1MS0uNDQxIDIuODQ0IDAgNC42NzMuMzI3IDEuMzYxIDEuMTA4IDIuMzMxIDIuNDQ0IDIuMzMxaDEuNTgxdi0yLjEwMWMwLTEuNTE4IDEuMzEzLTIuODU3IDIuODczLTIuODU3aDQuNTkzYzEuMjc4IDAgMi4yOTktMS4wNTMgMi4yOTktMi4zMzd2LTQuMzc5YzAtMS4yNDYtMS4wNTEtMi4xODItMi4yOTktMi4zOS0uNzktLjEzLTEuNjEtLjE4OS0yLjM5Ni0uMTg2em0tMi40ODcgMS40MWMuNDc1IDAgLjg2My4zOTQuODYzLjg3OWEuODcuODcgMCAwIDEtLjg2My44NzQuODY4Ljg2OCAwIDAgMS0uODYzLS44NzRjMC0uNDg1LjM4Ny0uODc5Ljg2My0uODc5eiIvPjxsaW5lYXJHcmFkaWVudCBpZD0icGF0aDE5NTBfMV8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iNTQ4LjI0NSIgeTE9Ii0zMTQuNDg5IiB4Mj0iNTQxLjU2OSIgeTI9Ii0zMDUuMDQzIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC41NjI1IDAgMCAtLjU2OCAtMjgyLjI3MiAtMTUxLjY5KSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjZmZkNDNiIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjZmZlODczIi8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBpZD0icGF0aDE5NTBfMl8iIGNsYXNzPSJzdDEiIGQ9Ik0yNi42ODcgMTYuNjR2Mi4wNDJjMCAxLjU4My0xLjM0MiAyLjkxNS0yLjg3MyAyLjkxNWgtNC41OTNjLTEuMjU4IDAtMi4yOTkgMS4wNzctMi4yOTkgMi4zMzd2NC4zNzljMCAxLjI0NiAxLjA4NCAxLjk3OSAyLjI5OSAyLjMzNyAxLjQ1Ni40MjggMi44NTEuNTA1IDQuNTkzIDAgMS4xNTgtLjMzNSAyLjI5OS0xLjAxIDIuMjk5LTIuMzM3VjI2LjU2SDIxLjUydi0uNTg0SDI4LjQxMmMxLjMzNiAwIDEuODM0LS45MzIgMi4yOTktMi4zMzEuNDgtMS40NC40Ni0yLjgyNiAwLTQuNjczLS4zMy0xLjMzLS45NjEtMi4zMzEtMi4yOTktMi4zMzFoLTEuNzI1em0tMi41ODMgMTEuMDg5Yy40NzcgMCAuODYzLjM5MS44NjMuODc0YS44NzEuODcxIDAgMCAxLS44NjMuODc5Ljg3Mi44NzIgMCAwIDEtLjg2My0uODc5YzAtLjQ4NC4zODgtLjg3NC44NjMtLjg3NHoiLz48L2c+PC9zdmc+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUEMvaWNvbnMvcHljLmljbnMgYi9QQy9pY29ucy9weWMuaWNucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MGRhOWExCi0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvcHljLmljbnMKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvUEMvaWNvbnMvcHljLmljbyBiL1BDL2ljb25zL3B5Yy5pY28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzRkZGU4MQotLS0gL2Rldi9udWxsCisrKyBiL1BDL2ljb25zL3B5Yy5pY28KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvUEMvaWNvbnMvcHljLnN2ZyBiL1BDL2ljb25zL3B5Yy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWMzZTllNwotLS0gL2Rldi9udWxsCisrKyBiL1BDL2ljb25zL3B5Yy5zdmcKQEAgLTAsMCArMSBAQAorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMiAzMiI+PHN0eWxlPi5pY29uLWNhbnZhcy10cmFuc3BhcmVudHtvcGFjaXR5OjA7ZmlsbDojZjZmNmY2fS5pY29uLXZzby1iZ3tmaWxsOiM2NTY1NjV9Lmljb24tdnMtYmd7ZmlsbDojNDI0MjQyfS5pY29uLXZzLWdyZWVue2ZpbGw6IzM5M30uaWNvbi13aGl0ZXtmaWxsOiNmZmZ9LnN0MHtmaWxsOnVybCgjcGF0aDE5NDhfMV8pfS5zdDF7ZmlsbDp1cmwoI3BhdGgxOTUwXzFfKX08L3N0eWxlPjxwYXRoIGNsYXNzPSJpY29uLWNhbnZhcy10cmFuc3BhcmVudCIgZD0iTTMyIDMySDBWMGgzMnYzMnoiIGlkPSJjYW52YXMiLz48ZyBpZD0iaWNvbkJnIj48cGF0aCBjbGFzcz0iaWNvbi12cy1iZyIgZD0iTTIxLjA1MyAzSDd2MjZoMTlWOC4wMDl6Ii8+PHBhdGggY2xhc3M9Imljb24tdnNvLWJnIiBkPSJNMjEuNDcxIDJINnYyOGgyMVY3LjU5OUwyMS40NzEgMnpNMjEgM2guMDUzbDQuOTM5IDVIMjFWM3ptNSAyNkg3VjNoMTN2Nmg2djIweiIvPjwvZz48cGF0aCBjbGFzcz0iaWNvbi12cy1ncmVlbiIgZD0iTTEwIDE2SDl2LTFoMXYxem0xLjAxMSA1SDl2MWgyLjAzMmE4LjM2OCA4LjM2OCAwIDAgMS0uMDIxLTF6TTE0IDEwaDJWOWgtMnYxem0tMy00SDl2MWgyVjZ6bTAgNkg5djFoMnYtMXptMi0zSDl2MWg0Vjl6bTQtM3YxaDFWNmgtMXptLTMgNmgtMnYxaDJ2LTF6bTEtNmgtMnYxaDJWNnptLTQgMTBoMXYtMWgtMXYxem00LTR2MWgydi0xaC0yem0tMiA0aDN2LTFoLTN2MXptLTQgMnYxaDN2LTFIOXptMCA2djFoM3YtMUg5eiIgaWQ9Imljb25GZyIvPjxnIGlkPSJjb2xvckltcG9ydGFuY2UiPjxwYXRoIGNsYXNzPSJpY29uLXdoaXRlIiBkPSJNMzEuNjYgMjQuMDYzQzMxLjMxMiAyNS4xMTYgMzAuNjYxIDI3IDI4LjQxMyAyN0gyN3YxLjMxM2MwIC45MDUtLjMzNSAyLjUzNy0yLjk2NSAzLjI5OC0uOTA0LjI2MS0xLjY5NC4zODktMi41MzEuMzg5LS44MyAwLTEuNjMtLjEyOC0yLjUyNi0uMzkyQzE3LjA2MSAzMS4wNDUgMTYgMjkuODQ0IDE2IDI4LjMxM1YyN2gtMS4yMzJjLTEuNjk5IDAtMi45NDQtMS4xNDEtMy40MTYtMy4xMS0uNDY5LTEuOTQ2LS40NjktMy4wMjEgMC00Ljk2Ny40NTEtMS44ODEgMS45Ni0yLjkyMyAzLjg0NS0yLjkyM0gxNnYtMS42OTdjMC0yLjAwNS44NjYtMi44NDUgMy4wODctMy4yMzguNzI3LS4xMjggMS41MDYtLjA2NSAyLjMyNy0uMDY1aC4wMDNjLjkyMSAwIDEuNzAzLS4wNyAyLjUwNC4wNjQgMS44MTguMzAyIDMuMDc5IDEuNTg1IDMuMDc5IDMuMjM5VjE2aDEuNDEzYzEuMTQyIDAgMi42MzYuMzU2IDMuMjcgMi45MTIuNTE1IDIuMDcyLjUwOSAzLjU1OC0uMDIzIDUuMTUxeiIvPjxsaW5lYXJHcmFkaWVudCBpZD0icGF0aDE5NDhfMV8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iNTIyLjMyIiB5MT0iLTI4OC42NjgiIHgyPSI1NDEuMDE3IiB5Mj0iLTMwNC43NTQiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLjU2MjUgMCAwIC0uNTY4IC0yODIuMjcyIC0xNTEuNjkpIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiM1YTlmZDQiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMzMDY5OTgiLz48L2xpbmVhckdyYWRpZW50PjxwYXRoIGlkPSJwYXRoMTk0OF80XyIgY2xhc3M9InN0MCIgZD0iTTIxLjQxOSAxMS43MjVjLS43ODYuMDA0LTEuNTM3LjA3MS0yLjE5Ny4xODgtMS45NDYuMzQ0LTIuMjk5IDEuMDYzLTIuMjk5IDIuMzl2MS43NTNoNC41OTh2LjU4NGgtNi4zMjRjLTEuMzM2IDAtMi41MDcuODAzLTIuODczIDIuMzMxLS40MjIgMS43NTEtLjQ0MSAyLjg0NCAwIDQuNjczLjMyNyAxLjM2MSAxLjEwOCAyLjMzMSAyLjQ0NCAyLjMzMWgxLjU4MXYtMi4xMDFjMC0xLjUxOCAxLjMxMy0yLjg1NyAyLjg3My0yLjg1N2g0LjU5M2MxLjI3OCAwIDIuMjk5LTEuMDUzIDIuMjk5LTIuMzM3di00LjM3OWMwLTEuMjQ2LTEuMDUxLTIuMTgyLTIuMjk5LTIuMzktLjc5LS4xMy0xLjYxLS4xODktMi4zOTYtLjE4NnptLTIuNDg3IDEuNDFjLjQ3NSAwIC44NjMuMzk0Ljg2My44NzlhLjg3Ljg3IDAgMCAxLS44NjMuODc0Ljg2OC44NjggMCAwIDEtLjg2My0uODc0YzAtLjQ4NS4zODctLjg3OS44NjMtLjg3OXoiLz48bGluZWFyR3JhZGllbnQgaWQ9InBhdGgxOTUwXzFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjU0OC4yNDUiIHkxPSItMzE0LjQ4OSIgeDI9IjU0MS41NjkiIHkyPSItMzA1LjA0MyIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCguNTYyNSAwIDAgLS41NjggLTI4Mi4yNzIgLTE1MS42OSkiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iI2ZmZDQzYiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI2ZmZTg3MyIvPjwvbGluZWFyR3JhZGllbnQ+PHBhdGggaWQ9InBhdGgxOTUwXzRfIiBjbGFzcz0ic3QxIiBkPSJNMjYuNjg3IDE2LjY0djIuMDQyYzAgMS41ODMtMS4zNDIgMi45MTUtMi44NzMgMi45MTVoLTQuNTkzYy0xLjI1OCAwLTIuMjk5IDEuMDc3LTIuMjk5IDIuMzM3djQuMzc5YzAgMS4yNDYgMS4wODQgMS45NzkgMi4yOTkgMi4zMzcgMS40NTYuNDI4IDIuODUxLjUwNSA0LjU5MyAwIDEuMTU4LS4zMzUgMi4yOTktMS4wMSAyLjI5OS0yLjMzN1YyNi41NkgyMS41MnYtLjU4NEgyOC40MTJjMS4zMzYgMCAxLjgzNC0uOTMyIDIuMjk5LTIuMzMxLjQ4LTEuNDQuNDYtMi44MjYgMC00LjY3My0uMzMtMS4zMy0uOTYxLTIuMzMxLTIuMjk5LTIuMzMxaC0xLjcyNXptLTIuNTgzIDExLjA4OWMuNDc3IDAgLjg2My4zOTEuODYzLjg3NGEuODcxLjg3MSAwIDAgMS0uODYzLjg3OS44NzIuODcyIDAgMCAxLS44NjMtLjg3OWMwLS40ODQuMzg4LS44NzQuODYzLS44NzR6Ii8+PC9nPjwvc3ZnPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDL2ljb25zL3B5ZC5pY25zIGIvUEMvaWNvbnMvcHlkLmljbnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWQzZDI0ZQotLS0gL2Rldi9udWxsCisrKyBiL1BDL2ljb25zL3B5ZC5pY25zCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1BDL2ljb25zL3B5ZC5pY28gYi9QQy9pY29ucy9weWQuaWNvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmNmNiNjAKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9pY29ucy9weWQuaWNvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1BDL2ljb25zL3B5ZC5zdmcgYi9QQy9pY29ucy9weWQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3ZWZmNmEKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9pY29ucy9weWQuc3ZnCkBAIC0wLDAgKzEgQEAKKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMzIgMzIiPjxzdHlsZT4uaWNvbi1jYW52YXMtdHJhbnNwYXJlbnR7b3BhY2l0eTowO2ZpbGw6I2Y2ZjZmNn0uaWNvbi12c28tYmd7ZmlsbDojNjU2NTY1fS5pY29uLXZzLW91dHtmaWxsOiNmNmY2ZjZ9Lmljb24tZjEyLWhvdmVyLWJne2ZpbGw6I2Q5ZWJmN30uaWNvbi1mMTItbHRncmV5LWRpc2FibGVke2ZpbGw6I2FiYWJhY30uaWNvbi13aGl0ZXtmaWxsOiNmZmZ9LnN0MHtmaWxsOiM5Y2EyYTd9LnN0MXtmaWxsOnVybCgjcGF0aDE5NDhfMV8pfS5zdDJ7ZmlsbDp1cmwoI3BhdGgxOTUwXzFfKX08L3N0eWxlPjxwYXRoIGNsYXNzPSJpY29uLWNhbnZhcy10cmFuc3BhcmVudCIgZD0iTTMyIDMySDBWMGgzMnYzMnoiIGlkPSJjYW52YXMiLz48ZyBpZD0iaWNvbkJnIj48cGF0aCBjbGFzcz0iaWNvbi12cy1vdXQiIGQ9Ik0yMS4wNTMgM0g3djI2aDE5VjguMDA5eiIvPjxwYXRoIGNsYXNzPSJpY29uLXZzby1iZyIgZD0iTTIxLjQ3MSAySDZ2MjhoMjFWNy41OTlMMjEuNDcxIDJ6TTIxIDNoLjA1M2w0LjkzOSA1SDIxVjN6bTUgMjZIN1YzaDEzdjZoNnYyMHoiLz48L2c+PGcgaWQ9Imljb25GZyI+PHBhdGggY2xhc3M9InN0MCIgZD0iTTEzLjc4NCAxNy43MDVjLTEuMjk2IDAtMi4zNS0xLjA1NC0yLjM1LTIuMzVzMS4wNTQtMi4zNSAyLjM1LTIuMzUgMi4zNSAxLjA1NCAyLjM1IDIuMzUtMS4wNTQgMi4zNS0yLjM1IDIuMzV6bTAtNC41Yy0xLjE4NiAwLTIuMTUuOTY0LTIuMTUgMi4xNXMuOTY0IDIuMTUxIDIuMTUgMi4xNTEgMi4xNS0uOTY1IDIuMTUtMi4xNTEtLjk2NC0yLjE1LTIuMTUtMi4xNXoiLz48cGF0aCBjbGFzcz0iaWNvbi1mMTItaG92ZXItYmciIGQ9Ik0xOC4wNSAxNi4xMjJjLjAxNi0uMDY5LjAzMS0uMTM5LjA0My0uMjA5bDEuMzc2LS42MTgtLjEwMy0xLjAxNS0xLjQ3LS4zM2MtLjAyNS0uMDY4LS4wNTYtLjEzNC0uMDg2LS4xOTlsLS4wMjYtLjA1Ni44OTItMS4yMzYtLjU5NS0uODI3LTEuNDUuNDUzYy0uMDY5LS4wNjEtLjE0MS0uMTE4LS4yMTMtLjE3NWwuMTUxLTEuNTExLS45MjktLjQxOC0xLjAzMiAxLjEyMS0uMDU2LS4wMTNhMy4wODkgMy4wODkgMCAwIDAtLjIxNy0uMDQ1bC0uNjE4LTEuMzc0LTEuMDE1LjEwNC0uMzI5IDEuNDcyYy0uMDQ5LjAxOS0uMDk2LjA0LS4xNDMuMDYzbC0uMDU2LjAyNS0xLjIyNS0uOTA3LS44MzUuNTg2LjQzNSAxLjQ1N2MtLjA2LjA2Ny0uMTIzLjEzOC0uMTgyLjIxMmwtMS41MDYtLjE3Mi0uNDI5LjkyNUw5LjU0IDE0LjQ4bC0uMDA1LjAyNGE0LjEyNyA0LjEyNyAwIDAgMC0uMDUxLjI0NmwtMS4zODcuNjA2LjA5MiAxLjAxNSAxLjQ2My4zNDZjLjAyNC4wNjcuMDU1LjEzMi4wODQuMTk0bC4wMy4wNjctLjg2IDEuMTctLjA0Mi4wNTkuNTg4LjgzMiAxLjQ1Ni0uNDRjLjA3LjA2My4xMzguMTIyLjIwOS4xNzhsLS4xNjcgMS41MDguOTI2LjQyN0wxMi45MiAxOS42bC4wNDguMDFjLjA3NC4wMTcuMTQ5LjAzNC4yMjYuMDQ2bC42MDkgMS4zODUgMS4wMTUtLjA5NS4zNDItMS40NjZjLjA3NS0uMDI3LjE0Ny0uMDYxLjIxNi0uMDkzbC4wNjctLjAzMSAxLjIzNS44OTIuODI3LS41OTUtLjQ1Mi0xLjQ1Yy4wNjItLjA3MS4xMi0uMTQyLjE3Ni0uMjE1bDEuNTEyLjE1MS40MTgtLjkyOS0xLjEyMi0xLjAzMy4wMTMtLjA1NXptLTQuMjY2IDEuNTgzYy0xLjI5NiAwLTIuMzUtMS4wNTQtMi4zNS0yLjM1czEuMDU0LTIuMzUgMi4zNS0yLjM1IDIuMzUgMS4wNTQgMi4zNSAyLjM1LTEuMDU0IDIuMzUtMi4zNSAyLjM1eiIvPjxwYXRoIGNsYXNzPSJpY29uLWYxMi1sdGdyZXktZGlzYWJsZWQiIGQ9Ik0xMy44MDMgMjEuMDRsLS42MDktMS4zODRhMy4wOCAzLjA4IDAgMCAxLS4yMzYtLjA0OGwtLjAzOC0uMDA4LTEuMDQzIDEuMTExLS45MjUtLjQyNy4xNjctMS41MDdhNC4wMTMgNC4wMTMgMCAwIDEtLjIwOS0uMTc5bC0xLjQ1Ni40MzktLjU4OC0uODMyLjkwMi0xLjIyOC0uMDMzLS4wNzJjLS4wMjgtLjA2MS0uMDU4LS4xMjQtLjA4Mi0uMTlsLTEuNDYzLS4zNDQtLjA5MS0xLjAxNSAxLjM4Ny0uNjA1Yy4wMTItLjA3OC4wMy0uMTU0LjA0Ny0uMjMxbC4wMDktLjAzOS0xLjEwOS0xLjA0NS40MjgtLjkyNSAxLjUwNy4xN2MuMDU4LS4wNzIuMTE4LS4xNC4xODMtLjIxMWwtLjQzNS0xLjQ1OC44MzQtLjU4NSAxLjIyNS45MDcuMDUyLS4wMjRjLjA0OC0uMDIyLjA5Ny0uMDQ0LjE0Ny0uMDYzbC4zMjktMS40NzMgMS4wMTQtLjEwNC42MiAxLjM3NWEyLjM4OSAyLjM4OSAwIDAgMSAuMjcxLjA1OGwxLjAzMi0xLjEyMi45My40MTgtLjE1MyAxLjUxMWMuMDczLjA1NS4xNDMuMTEzLjIxNC4xNzRsMS40NS0uNDUzLjU5NS44MjctLjg5MiAxLjIzNmEuOC44IDAgMCAxIC4wMjQuMDUzYy4wMy4wNjQuMDYyLjEzMS4wODcuMjAxbDEuNDcxLjMzMi4xMDMgMS4wMTQtMS4zNzYuNjE4Yy0uMDEyLjA3MS0uMDI3LjE0LS4wNDMuMjA4bC0uMDE0LjA1OCAxLjEyMiAxLjAzMy0uNDE5LjkyOS0xLjUxMS0uMTUyYTMuODUxIDMuODUxIDAgMCAxLS4xNzYuMjE1bC40NTIgMS40NS0uODI3LjU5NS0xLjIzNi0uODkyLS4wNy4wMzJhMi45NCAyLjk0IDAgMCAxLS4yMTIuMDkybC0uMzQxIDEuNDY1LTEuMDE1LjA5NXptLS45NTEtMS42NmwuMTUxLjAzM2MuMDg5LjAyMS4xNzkuMDQyLjI3Mi4wNTNsLjA1Ni4wMDcuNTk3IDEuMzU0LjcyOC0uMDY3LjMzMy0xLjQzNS4wNTQtLjAxOGMuMDgzLS4wMjUuMTYxLS4wNjIuMjQ0LS4xMDEuMDQyLS4wMi4wODQtLjAzOS4xMjctLjA1N2wuMDUyLS4wMjIgMS4yMTEuODc0LjU5My0uNDI3LS40NDItMS40MjEuMDM4LS4wNDNjLjA4NS0uMDk0LjE2My0uMTg4LjIzNi0uMjg4bC4wMzMtLjA0NiAxLjQ4LjE1LjMtLjY2Ny0xLjA5OS0xLjAxMi4wMTItLjA1NS4wMjUtLjExN2MuMDE5LS4wOC4wMzctLjE2LjA0Ny0uMjQ0bC4wMDctLjA1NiAxLjM0OC0uNjA1LS4wNzMtLjcyOC0xLjQ0MS0uMzI0LS4wMTgtLjA1NWMtLjAyNS0uMDgxLS4wNjEtLjE1Ny0uMDk2LS4yMzNhMi4xNDUgMi4xNDUgMCAwIDEtLjA1LS4xMDlsLS4wMjItLjA1Mi44NzQtMS4yMTItLjQyNy0uNTkzLTEuNDIuNDQzLS4wNDItLjAzOGEzLjg5NiAzLjg5NiAwIDAgMC0uMjg4LS4yMzVMMTYuMjA3IDEybC4xNDktMS40OC0uNjY3LS4zLTEuMDEyIDEuMS0uMDU2LS4wMTFjLS4wNC0uMDA4LS4wOC0uMDE4LS4xMTktLjAyNy0uMDgyLS4wMTktLjE2Mi0uMDM4LS4yNDYtLjA0OGwtLjA1Ni0uMDA1LS42MDctMS4zNDYtLjcyNy4wNzQtLjMyMyAxLjQ0MS0uMDU0LjAxOGMtLjA2My4wMi0uMTIxLjA0Ny0uMTguMDc0LS4wMzcuMDE3LS4wNzMuMDM0LS4xMTEuMDQ5bC0uMDUyLjAyMi0xLjItLjg5LS41OTkuNDIuNDI2IDEuNDI5LS4wMzguMDQyYTQuMDcgNC4wNyAwIDAgMC0uMjQ0LjI4NGwtLjAzNC4wNDUtMS40NzYtLjE2Ny0uMzA3LjY2MyAxLjA4NiAxLjAyNC0uMDM0LjE1MWMtLjAyLjA4OS0uMDQxLjE3Ny0uMDUyLjI2OWwtLjAwNy4wNTYtMS4zNTguNTkzLjA2Ni43MjggMS40MzEuMzM3LjAxNy4wNTVjLjAyNC4wNzcuMDU4LjE0OC4wOTEuMjIuMDIxLjA0My4wNDEuMDg2LjA1OS4xMzFsLjAyMi4wNTItLjg4NSAxLjIwMy40MjIuNTk4IDEuNDI2LS40MzIuMDQyLjAzOGMuMDgzLjA3NS4xNzkuMTYzLjI4Mi4yNGwuMDQ1LjAzNS0uMTYzIDEuNDc2LjY2NC4zMDYgMS4wMjQtMS4wODd6TTIwLjkxOCAyMi45NzJhMS4zNSAxLjM1IDAgMSAxIC4wMDEtMi42OTkgMS4zNSAxLjM1IDAgMCAxLS4wMDEgMi42OTl6bTAtMi41Yy0uNjM0IDAtMS4xNS41MTctMS4xNSAxLjE1cy41MTcgMS4xNSAxLjE1IDEuMTUgMS4xNS0uNTE3IDEuMTUtMS4xNS0uNTE2LTEuMTUtMS4xNS0xLjE1eiIvPjxwYXRoIGNsYXNzPSJpY29uLWYxMi1ob3Zlci1iZyIgZD0iTTI0LjkwMSAyMi4wMjh2LS44MTJsLTEuMjY5LS40MjNhMi43NDcgMi43NDcgMCAwIDAtLjIxLS41MDVsLjU5OS0xLjE5Ni0uNTc0LS41NzQtMS4xOTYuNTk5YTIuODEgMi44MSAwIDAgMC0uNTA1LS4yMDlsLS40MjMtMS4yNjhoLS44MTFsLS40MjMgMS4yNjhhMi44MSAyLjgxIDAgMCAwLS41MDUuMjA5bC0xLjE5Ny0uNTk5LS41NzMuNTc0LjU5OSAxLjE5NmEyLjc0NyAyLjc0NyAwIDAgMC0uMjEuNTA1bC0xLjI2OC40MjN2LjgxMmwxLjI2OC40MjJjLjA1NC4xNzUuMTI0LjM0NS4yMS41MDZsLS41OTkgMS4xOTYuNTczLjU3NCAxLjE5Ny0uNmMuMTYxLjA4Ny4zMzEuMTU3LjUwNS4yMWwuNDIzIDEuMjY5aC44MTFsLjQyMy0xLjI2OWMuMTc0LS4wNTMuMzQzLS4xMjMuNTA1LS4yMWwxLjE5Ni42LjU3NC0uNTc0LS41OTktMS4xOTZjLjA4Ni0uMTYxLjE1Ni0uMzMxLjIxLS41MDZsMS4yNjktLjQyMnptLTMuOTgzLjk0M2MtLjc0NCAwLTEuMzUtLjYwNi0xLjM1LTEuMzUgMC0uNzQ0LjYwNS0xLjM1IDEuMzUtMS4zNS43NDQgMCAxLjM1LjYwNSAxLjM1IDEuMzUgMCAuNzQ1LS42MDYgMS4zNS0xLjM1IDEuMzV6Ii8+PHBhdGggY2xhc3M9Imljb24tZjEyLWx0Z3JleS1kaXNhYmxlZCIgZD0iTTIxLjMyMyAyNS42MDRoLS44MTFsLS40MjMtMS4yNjlhMi44MTQgMi44MTQgMCAwIDEtLjUwNS0uMjA5bC0xLjE5Ny41OTktLjU3My0uNTc0LjU5OS0xLjE5NmEyLjc0NyAyLjc0NyAwIDAgMS0uMjEtLjUwNWwtMS4yNjktLjQyM3YtLjgxMmwxLjI2OS0uNDIyYy4wNTQtLjE3NS4xMjQtLjM0NS4yMS0uNTA2bC0uNTk5LTEuMTk2LjU3My0uNTczIDEuMTk3LjU5OWMuMTYxLS4wODcuMzMxLS4xNTcuNTA1LS4yMWwuNDIzLTEuMjY5aC44MTFsLjQyMyAxLjI2OWMuMTc0LjA1My4zNDQuMTIzLjUwNS4yMWwxLjE5Ni0uNTk5LjU3NC41NzMtLjU5OSAxLjE5NmMuMDg2LjE2MS4xNTYuMzMxLjIxLjUwNmwxLjI2OS40MjJ2LjgxMmwtMS4yNjkuNDIzYTIuNzQ3IDIuNzQ3IDAgMCAxLS4yMS41MDVsLjU5OSAxLjE5Ni0uNTc0LjU3NC0xLjE5Ni0uNTk5YTIuODE0IDIuODE0IDAgMCAxLS41MDUuMjA5bC0uNDIzIDEuMjY5em0tLjY2Ni0uMTk5aC41MjFsLjQxMS0xLjIzMi4wNTEtLjAxNWMuMTkzLS4wNTQuMzgyLS4xMzIuNTYtLjIzMWwuMDQ2LS4wMjYgMS4xNjIuNTgxLjM2OS0uMzY5LS41OC0xLjE2Mi4wMjYtLjA0NmMuMDk5LS4xNzguMTc3LS4zNjYuMjMyLS41NmwuMDE0LS4wNTEgMS4yMzItLjQxMXYtLjUyM2wtMS4yMzItLjQxLS4wMTQtLjA1MWEyLjgxIDIuODEgMCAwIDAtLjIzMi0uNTYxbC0uMDI2LS4wNDYuNTgtMS4xNjItLjM2OS0uMzY4LTEuMTYyLjU4LS4wNDYtLjAyNmEyLjYyNyAyLjYyNyAwIDAgMC0uNTYtLjIzMmwtLjA1LS4wMTQtLjQxMS0xLjIzMmgtLjUyMWwtLjQxMSAxLjIzMi0uMDUxLjAxNGEyLjc1OCAyLjc1OCAwIDAgMC0uNTYuMjMybC0uMDQ2LjAyNi0xLjE2My0uNTgtLjM2OC4zNjguNTggMS4xNjItLjAyNi4wNDZhMi42NzUgMi42NzUgMCAwIDAtLjIzMi41NjFsLS4wMTQuMDUxLTEuMjMyLjQxdi41MjJsMS4yMzIuNDExLjAxNC4wNTFjLjA1Ni4xOTMuMTM0LjM4Mi4yMzIuNTZsLjAyNi4wNDYtLjU4IDEuMTYyLjM2OC4zNjkgMS4xNjMtLjU4MS4wNDYuMDI2Yy4xNzguMS4zNjYuMTc4LjU2LjIzMWwuMDUxLjAxNS40MSAxLjIzM3oiLz48L2c+PGcgaWQ9ImNvbG9ySW1wb3J0YW5jZSI+PHBhdGggY2xhc3M9Imljb24td2hpdGUiIGQ9Ik0zMS42NiAyNC4wNjNDMzEuMzEyIDI1LjExNiAzMC42NjEgMjcgMjguNDEzIDI3SDI3djEuMzEzYzAgLjkwNS0uMzM1IDIuNTM3LTIuOTY1IDMuMjk4LS45MDQuMjYxLTEuNjk0LjM4OS0yLjUzMS4zODktLjgzIDAtMS42My0uMTI4LTIuNTI2LS4zOTJDMTcuMDYxIDMxLjA0NSAxNiAyOS44NDQgMTYgMjguMzEzVjI3aC0xLjIzMmMtMS42OTkgMC0yLjk0NC0xLjE0MS0zLjQxNi0zLjExLS40NjktMS45NDYtLjQ2OS0zLjAyMSAwLTQuOTY3LjQ1MS0xLjg4MSAxLjk2LTIuOTIzIDMuODQ1LTIuOTIzSDE2di0xLjY5N2MwLTIuMDA1Ljg2Ni0yLjg0NSAzLjA4Ny0zLjIzOC43MjctLjEyOCAxLjUwNi0uMDY1IDIuMzI3LS4wNjVoLjAwM2MuOTIxIDAgMS43MDMtLjA3IDIuNTA0LjA2NCAxLjgxOC4zMDIgMy4wNzkgMS41ODUgMy4wNzkgMy4yMzlWMTZoMS40MTNjMS4xNDIgMCAyLjYzNi4zNTYgMy4yNyAyLjkxMi41MTUgMi4wNzIuNTA5IDMuNTU4LS4wMjMgNS4xNTF6Ii8+PGxpbmVhckdyYWRpZW50IGlkPSJwYXRoMTk0OF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI1MjIuMzIiIHkxPSItMjg4LjY2OCIgeDI9IjU0MS4wMTciIHkyPSItMzA0Ljc1NCIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCguNTYyNSAwIDAgLS41NjggLTI4Mi4yNzIgLTE1MS42OSkiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzVhOWZkNCIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzMwNjk5OCIvPjwvbGluZWFyR3JhZGllbnQ+PHBhdGggaWQ9InBhdGgxOTQ4XzVfIiBjbGFzcz0ic3QxIiBkPSJNMjEuNDE5IDExLjcyNWMtLjc4Ni4wMDQtMS41MzcuMDcxLTIuMTk3LjE4OC0xLjk0Ni4zNDQtMi4yOTkgMS4wNjMtMi4yOTkgMi4zOXYxLjc1M2g0LjU5OHYuNTg0aC02LjMyNGMtMS4zMzYgMC0yLjUwNy44MDMtMi44NzMgMi4zMzEtLjQyMiAxLjc1MS0uNDQxIDIuODQ0IDAgNC42NzMuMzI3IDEuMzYxIDEuMTA4IDIuMzMxIDIuNDQ0IDIuMzMxaDEuNTgxdi0yLjEwMWMwLTEuNTE4IDEuMzEzLTIuODU3IDIuODczLTIuODU3aDQuNTkzYzEuMjc4IDAgMi4yOTktMS4wNTMgMi4yOTktMi4zMzd2LTQuMzc5YzAtMS4yNDYtMS4wNTEtMi4xODItMi4yOTktMi4zOS0uNzktLjEzLTEuNjEtLjE4OS0yLjM5Ni0uMTg2em0tMi40ODcgMS40MWMuNDc1IDAgLjg2My4zOTQuODYzLjg3OWEuODcuODcgMCAwIDEtLjg2My44NzQuODY4Ljg2OCAwIDAgMS0uODYzLS44NzRjMC0uNDg1LjM4Ny0uODc5Ljg2My0uODc5eiIvPjxsaW5lYXJHcmFkaWVudCBpZD0icGF0aDE5NTBfMV8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iNTQ4LjI0NSIgeTE9Ii0zMTQuNDg5IiB4Mj0iNTQxLjU2OSIgeTI9Ii0zMDUuMDQzIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC41NjI1IDAgMCAtLjU2OCAtMjgyLjI3MiAtMTUxLjY5KSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjZmZkNDNiIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjZmZlODczIi8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBpZD0icGF0aDE5NTBfNV8iIGNsYXNzPSJzdDIiIGQ9Ik0yNi42ODcgMTYuNjR2Mi4wNDJjMCAxLjU4My0xLjM0MiAyLjkxNS0yLjg3MyAyLjkxNWgtNC41OTNjLTEuMjU4IDAtMi4yOTkgMS4wNzctMi4yOTkgMi4zMzd2NC4zNzljMCAxLjI0NiAxLjA4NCAxLjk3OSAyLjI5OSAyLjMzNyAxLjQ1Ni40MjggMi44NTEuNTA1IDQuNTkzIDAgMS4xNTgtLjMzNSAyLjI5OS0xLjAxIDIuMjk5LTIuMzM3VjI2LjU2SDIxLjUydi0uNTg0SDI4LjQxMmMxLjMzNiAwIDEuODM0LS45MzIgMi4yOTktMi4zMzEuNDgtMS40NC40Ni0yLjgyNiAwLTQuNjczLS4zMy0xLjMzLS45NjEtMi4zMzEtMi4yOTktMi4zMzFoLTEuNzI1em0tMi41ODMgMTEuMDg5Yy40NzcgMCAuODYzLjM5MS44NjMuODc0YS44NzEuODcxIDAgMCAxLS44NjMuODc5Ljg3Mi44NzIgMCAwIDEtLjg2My0uODc5YzAtLjQ4NC4zODgtLjg3NC44NjMtLjg3NHoiLz48L2c+PC9zdmc+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUEMvaWNvbnMvcHl0aG9uLmljbnMgYi9QQy9pY29ucy9weXRob24uaWNucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzUzZTAyCi0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvcHl0aG9uLmljbnMKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvUEMvaWNvbnMvcHl0aG9uLmljbyBiL1BDL2ljb25zL3B5dGhvbi5pY28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjhhMzhlZgotLS0gL2Rldi9udWxsCisrKyBiL1BDL2ljb25zL3B5dGhvbi5pY28KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvUEMvaWNvbnMvcHl0aG9uLnN2ZyBiL1BDL2ljb25zL3B5dGhvbi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTIzZTVhMwotLS0gL2Rldi9udWxsCisrKyBiL1BDL2ljb25zL3B5dGhvbi5zdmcKQEAgLTAsMCArMSBAQAorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMiAzMiI+PHN0eWxlPi5pY29uLWNhbnZhcy10cmFuc3BhcmVudHtvcGFjaXR5OjA7ZmlsbDojZjZmNmY2fS5pY29uLXdoaXRle2ZpbGw6I2ZmZn0uaWNvbi12c28tYmd7ZmlsbDojNjU2NTY1fS5pY29uLXZpc3VhbHN0dWRpby1vbmxpbmV7ZmlsbDojMDA3YWNjfS5pY29uLXZzLWJne2ZpbGw6IzQyNDI0Mn0uaWNvbi12cy1ncmVlbntmaWxsOiMzOTN9LnN0MHtmaWxsOnVybCgjcGF0aDE5NDhfMV8pfS5zdDF7ZmlsbDp1cmwoI3BhdGgxOTUwXzFfKX08L3N0eWxlPjxwYXRoIGNsYXNzPSJpY29uLWNhbnZhcy10cmFuc3BhcmVudCIgZD0iTTMyIDMySDBWMGgzMnYzMnoiIGlkPSJjYW52YXMiLz48ZyBpZD0iaWNvbkJnIj48cGF0aCBjbGFzcz0iaWNvbi12aXN1YWxzdHVkaW8tb25saW5lIiBkPSJNMzAgNEgyVjJoMjh2MnoiLz48cGF0aCBjbGFzcz0iaWNvbi12c28tYmciIGQ9Ik0yOSA0djIxSDNWNEgydjIyaDI4VjR6Ii8+PHBhdGggY2xhc3M9Imljb24tdnMtYmciIGQ9Ik0xMCA0SDN2MjFoMjZWNHoiLz48L2c+PGcgaWQ9Imljb25GZyI+PHBhdGggY2xhc3M9Imljb24td2hpdGUiIGQ9Ik0yOS4xNDEgM2wuNDI5LjQyOS0uMTQuMTQyLS40My0uNDMtLjQzLjQzLS4xNC0uMTQyLjQyOS0uNDI5LS40MjktLjQyOS4xNDEtLjE0Mi40MjkuNDMuNDMtLjQzLjE0MS4xNDItLjQzLjQyOXpNMjcuNiAyLjRoLTEuMnYxLjJoMS4yVjIuNHptLTEgLjJoLjh2LjhoLS44di0uOHptLTEuMTM5LjhoLTF2LjJoMXYtLjJ6Ii8+PHBhdGggY2xhc3M9Imljb24tdnMtZ3JlZW4iIGQ9Ik0xNiAxNEg1di0xaDExLjAzMWMtLjAxNC4wNDQtLjAzMSAxLS4wMzEgMXptLTQtNUg1djFoN1Y5em0tNyA4djFoOHYtMUg1eiIvPjwvZz48ZyBpZD0iY29sb3JJbXBvcnRhbmNlIj48cGF0aCBjbGFzcz0iaWNvbi13aGl0ZSIgZD0iTTMxLjU5NiAyNC4wNjNDMzEuMjQ2IDI1LjExNiAzMC41OTUgMjcgMjguMzQ5IDI3SDI3djEuMzEzYzAgLjkwNS0uMzY4IDIuNTM3LTIuOTk2IDMuMjk4LS45MDQuMjYxLTEuNzI4LjM4OS0yLjU2Ni4zODktLjgzIDAtMS41OTctLjEyOC0yLjQ5Mi0uMzkyQzE3LjAyOSAzMS4wNDUgMTYgMjkuODQ0IDE2IDI4LjMxM1YyN2gtMS4yOTdjLTEuNjk4IDAtMi45NDMtMS4xNDEtMy40MTYtMy4xMS0uNDY5LTEuOTQ2LS40NjktMy4wMjEgMC00Ljk2Ny40NTEtMS44ODEgMS45Ni0yLjkyMyAzLjg0NS0yLjkyM0gxNnYtMS42OTdjMC0yLjAwNS44MzQtMi44NDUgMy4wNTQtMy4yMzguNzI4LS4xMjggMS40NzQtLjA2NSAyLjI5Ni0uMDY1aC4wMDNjLjkyMSAwIDEuNzM1LS4wNyAyLjUzNy4wNjQgMS44MTYuMzAzIDMuMTEgMS41ODUgMy4xMSAzLjI0VjE2aDEuMzQ5YzEuMTQyIDAgMi42MzYuMzU2IDMuMjcgMi45MTIuNTE1IDIuMDcyLjUwOSAzLjU1OC0uMDIzIDUuMTUxeiIvPjxsaW5lYXJHcmFkaWVudCBpZD0icGF0aDE5NDhfMV8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iNTIyLjIwNSIgeTE9Ii0yODguNjY4IiB4Mj0iNTQwLjkwMiIgeTI9Ii0zMDQuNzU0IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC41NjI1IDAgMCAtLjU2OCAtMjgyLjI3MiAtMTUxLjY5KSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjNWE5ZmQ0Ii8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMzA2OTk4Ii8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBpZD0icGF0aDE5NDhfM18iIGNsYXNzPSJzdDAiIGQ9Ik0yMS4zNTQgMTEuNzI1Yy0uNzg2LjAwNC0xLjUzNy4wNzEtMi4xOTcuMTg4LTEuOTQ2LjM0NC0yLjI5OSAxLjA2My0yLjI5OSAyLjM5djEuNzUzaDQuNTk4di41ODRoLTYuMzI0Yy0xLjMzNiAwLTIuNTA3LjgwMy0yLjg3MyAyLjMzMS0uNDIyIDEuNzUxLS40NDEgMi44NDQgMCA0LjY3My4zMjcgMS4zNjEgMS4xMDcgMi4zMzEgMi40NDQgMi4zMzFoMS41ODF2LTIuMTAxYzAtMS41MTggMS4zMTMtMi44NTcgMi44NzMtMi44NTdoNC41OTNjMS4yNzkgMCAyLjI5OS0xLjA1MyAyLjI5OS0yLjMzN3YtNC4zNzljMC0xLjI0Ni0xLjA1MS0yLjE4Mi0yLjI5OS0yLjM5LS43OS0uMTMtMS42MS0uMTg5LTIuMzk2LS4xODZ6bS0yLjQ4NiAxLjQxYy40NzUgMCAuODYzLjM5NC44NjMuODc5YS44Ny44NyAwIDAgMS0uODYzLjg3NC44NjguODY4IDAgMCAxLS44NjMtLjg3NGMwLS40ODUuMzg2LS44NzkuODYzLS44Nzl6Ii8+PGxpbmVhckdyYWRpZW50IGlkPSJwYXRoMTk1MF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI1NDguMTMiIHkxPSItMzE0LjQ4OSIgeDI9IjU0MS40NTQiIHkyPSItMzA1LjA0MyIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCguNTYyNSAwIDAgLS41NjggLTI4Mi4yNzIgLTE1MS42OSkiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iI2ZmZDQzYiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI2ZmZTg3MyIvPjwvbGluZWFyR3JhZGllbnQ+PHBhdGggaWQ9InBhdGgxOTUwXzNfIiBjbGFzcz0ic3QxIiBkPSJNMjYuNjIzIDE2LjY0djIuMDQyYzAgMS41ODMtMS4zNDIgMi45MTUtMi44NzMgMi45MTVoLTQuNTkzYy0xLjI1OCAwLTIuMjk5IDEuMDc3LTIuMjk5IDIuMzM3djQuMzc5YzAgMS4yNDYgMS4wODQgMS45NzkgMi4yOTkgMi4zMzcgMS40NTYuNDI4IDIuODUxLjUwNSA0LjU5MyAwIDEuMTU4LS4zMzUgMi4yOTktMS4wMSAyLjI5OS0yLjMzN1YyNi41NmgtNC41OTN2LS41ODRoNi44OTJjMS4zMzYgMCAxLjgzNC0uOTMyIDIuMjk5LTIuMzMxLjQ4LTEuNDQuNDYtMi44MjYgMC00LjY3My0uMzMtMS4zMy0uOTYxLTIuMzMxLTIuMjk5LTIuMzMxaC0xLjcyNXptLTIuNTg0IDExLjA4OWMuNDc3IDAgLjg2My4zOTEuODYzLjg3NGEuODcxLjg3MSAwIDAgMS0uODYzLjg3OS44NzIuODcyIDAgMCAxLS44NjMtLjg3OS44Ny44NyAwIDAgMSAuODYzLS44NzR6Ii8+PC9nPjwvc3ZnPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDL2ljb25zL3B5dGhvbncuaWNucyBiL1BDL2ljb25zL3B5dGhvbncuaWNucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MzU0Y2Y4Ci0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvcHl0aG9udy5pY25zCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1BDL2ljb25zL3B5dGhvbncuaWNvIGIvUEMvaWNvbnMvcHl0aG9udy5pY28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjE5NWQ0MwotLS0gL2Rldi9udWxsCisrKyBiL1BDL2ljb25zL3B5dGhvbncuaWNvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1BDL2ljb25zL3B5dGhvbncuc3ZnIGIvUEMvaWNvbnMvcHl0aG9udy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2NiMjYwNwotLS0gL2Rldi9udWxsCisrKyBiL1BDL2ljb25zL3B5dGhvbncuc3ZnCkBAIC0wLDAgKzEgQEAKKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMzIgMzIiPjxzdHlsZT4uaWNvbi1jYW52YXMtdHJhbnNwYXJlbnR7b3BhY2l0eTowO2ZpbGw6I2Y2ZjZmNn0uaWNvbi13aGl0ZXtmaWxsOiNmZmZ9Lmljb24tdmlzdWFsc3R1ZGlvLW9ubGluZXtmaWxsOiMwMDdhY2N9LmdyYXBoLWxpZ2h0Z3JleXtmaWxsOiNkZmRmZGZ9LnN0MHtmaWxsOiNmNmY2ZjZ9LnN0MXtmaWxsOiM2NTY1NjV9LnN0MntmaWxsOiNiZmJmYmZ9LnN0M3tmaWxsOiNmZmZ9LnN0NHtmaWxsOnVybCgjcGF0aDE5NDhfMV8pfS5zdDV7ZmlsbDp1cmwoI3BhdGgxOTUwXzFfKX08L3N0eWxlPjxwYXRoIGNsYXNzPSJpY29uLWNhbnZhcy10cmFuc3BhcmVudCIgZD0iTTMyIDMySDBWMGgzMnYzMnoiIGlkPSJjYW52YXMiLz48ZyBpZD0iaWNvbkJnIj48cGF0aCBjbGFzcz0iZ3JhcGgtbGlnaHRncmV5IiBkPSJNMjkgN0gzVjVoMjZ2MnoiLz48cGF0aCBjbGFzcz0iaWNvbi12aXN1YWxzdHVkaW8tb25saW5lIiBkPSJNMzAgNUgyVjNoMjh2MnoiLz48cGF0aCBjbGFzcz0iaWNvbi13aGl0ZSIgZD0iTTI5LjE0MSA0bC40MjkuNDI5LS4xNC4xNDItLjQzLS40My0uNDMuNDMtLjE0LS4xNDIuNDI5LS40MjktLjQyOS0uNDI5LjE0MS0uMTQyLjQyOS40My40My0uNDMuMTQxLjE0Mi0uNDMuNDI5ek0yNy42IDMuNGgtMS4ydjEuMmgxLjJWMy40em0tMSAuMmguOHYuOGgtLjh2LS44em0tMS4xMzkuOGgtMXYuMmgxdi0uMnoiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNMyA3aDI2djE5SDN6Ii8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTI5IDV2MjFIM1Y1SDJ2MjJoMjhWNXoiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNNCA1Ljc1aDJ2LjVINHoiLz48L2c+PHBhdGggY2xhc3M9InN0MiIgZD0iTTEyIDExSDV2LTFoN3Yxem0tNyA3djFoMTF2LTFINXptMC00djFoMTF2LTFINXoiIGlkPSJpY29uRmciLz48ZyBpZD0iY29sb3JJbXBvcnRhbmNlIj48cGF0aCBjbGFzcz0ic3QzIiBkPSJNMzEuNjE4IDE4LjkxMkMzMC45ODQgMTYuMzU2IDI5LjQ5IDE2IDI4LjM0OSAxNkgyN3YtMS42OTdjMC0xLjY1NC0xLjI5NC0yLjkzNy0zLjExLTMuMjQtLjgwMi0uMTMzLTEuNjE3LS4wNjMtMi41MzctLjA2M2gtLjAwM2MtLjgyMSAwLTEuNTY4LS4wNjMtMi4yOTUuMDY1LTIuMjIxLjM5My0zLjA1NSAxLjIzMy0zLjA1NSAzLjIzOFYxNmgtLjg2OGMtMS44ODUgMC0zLjM5NCAxLjA0Mi0zLjg0NSAyLjkyNC0uNDY5IDEuOTQ2LS40NjkgMy4wMjIgMCA0Ljk2N0MxMS43NiAyNS44NTkgMTMuMDA1IDI3IDE0LjcwMyAyN0gxNnYxLjMxM2MwIDEuNTMxIDEuMDI5IDIuNzMyIDIuOTQ2IDMuMjk2Ljg5Ni4yNjMgMS42NjIuMzkxIDIuNDkyLjM5MS44MzggMCAxLjY2MS0uMTI4IDIuNTY1LS4zOUMyNi42MzIgMzAuODUgMjcgMjkuMjE4IDI3IDI4LjMxM1YyN2gxLjM0OWMyLjI0NiAwIDIuODk3LTEuODg0IDMuMjQ3LTIuOTM3LjUzMi0xLjU5Mi41MzgtMy4wNzkuMDIyLTUuMTUxeiIvPjxsaW5lYXJHcmFkaWVudCBpZD0icGF0aDE5NDhfMV8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iNTIyLjIwNSIgeTE9Ii0yODguNjY4IiB4Mj0iNTQwLjkwMiIgeTI9Ii0zMDQuNzU0IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC41NjI1IDAgMCAtLjU2OCAtMjgyLjI3MiAtMTUxLjY5KSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjNWE5ZmQ0Ii8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMzA2OTk4Ii8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBpZD0icGF0aDE5NDhfNl8iIGNsYXNzPSJzdDQiIGQ9Ik0yMS4zNTQgMTEuNzI1Yy0uNzg2LjAwNC0xLjUzNy4wNzEtMi4xOTcuMTg4LTEuOTQ2LjM0NC0yLjI5OSAxLjA2My0yLjI5OSAyLjM5djEuNzUzaDQuNTk4di41ODRoLTYuMzI0Yy0xLjMzNiAwLTIuNTA3LjgwMy0yLjg3MyAyLjMzMS0uNDIyIDEuNzUxLS40NDEgMi44NDQgMCA0LjY3My4zMjcgMS4zNjEgMS4xMDcgMi4zMzEgMi40NDQgMi4zMzFoMS41ODF2LTIuMTAxYzAtMS41MTggMS4zMTMtMi44NTcgMi44NzMtMi44NTdoNC41OTNjMS4yNzggMCAyLjI5OS0xLjA1MyAyLjI5OS0yLjMzN3YtNC4zNzljMC0xLjI0Ni0xLjA1MS0yLjE4Mi0yLjI5OS0yLjM5LS43OS0uMTMtMS42MS0uMTg5LTIuMzk2LS4xODZ6bS0yLjQ4NiAxLjQxYy40NzUgMCAuODYzLjM5NC44NjMuODc5YS44Ny44NyAwIDAgMS0uODYzLjg3NC44NjguODY4IDAgMCAxLS44NjMtLjg3NGMwLS40ODUuMzg2LS44NzkuODYzLS44Nzl6Ii8+PGxpbmVhckdyYWRpZW50IGlkPSJwYXRoMTk1MF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI1NDguMTMiIHkxPSItMzE0LjQ4OSIgeDI9IjU0MS40NTQiIHkyPSItMzA1LjA0MyIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCguNTYyNSAwIDAgLS41NjggLTI4Mi4yNzIgLTE1MS42OSkiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iI2ZmZDQzYiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI2ZmZTg3MyIvPjwvbGluZWFyR3JhZGllbnQ+PHBhdGggaWQ9InBhdGgxOTUwXzZfIiBjbGFzcz0ic3Q1IiBkPSJNMjYuNjIzIDE2LjY0djIuMDQyYzAgMS41ODMtMS4zNDIgMi45MTUtMi44NzMgMi45MTVoLTQuNTkzYy0xLjI1OCAwLTIuMjk5IDEuMDc3LTIuMjk5IDIuMzM3djQuMzc5YzAgMS4yNDYgMS4wODQgMS45NzkgMi4yOTkgMi4zMzcgMS40NTYuNDI4IDIuODUxLjUwNSA0LjU5MyAwIDEuMTU4LS4zMzUgMi4yOTktMS4wMSAyLjI5OS0yLjMzN1YyNi41NmgtNC41OTN2LS41ODRoNi44OTJjMS4zMzYgMCAxLjgzNC0uOTMyIDIuMjk5LTIuMzMxLjQ4LTEuNDQuNDYtMi44MjYgMC00LjY3My0uMzMtMS4zMy0uOTYxLTIuMzMxLTIuMjk5LTIuMzMxaC0xLjcyNXptLTIuNTg0IDExLjA4OWMuNDc3IDAgLjg2My4zOTEuODYzLjg3NGEuODcxLjg3MSAwIDAgMS0uODYzLjg3OS44NzIuODcyIDAgMCAxLS44NjMtLjg3OS44Ny44NyAwIDAgMSAuODYzLS44NzR6Ii8+PC9nPjwvc3ZnPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDL2ljb25zL3NldHVwLmljbnMgYi9QQy9pY29ucy9zZXR1cC5pY25zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmMGU2YjAKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9pY29ucy9zZXR1cC5pY25zCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1BDL2ljb25zL3NldHVwLmljbyBiL1BDL2ljb25zL3NldHVwLmljbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNTQzNjRiCi0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvc2V0dXAuaWNvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1BDL2ljb25zL3NldHVwLnN2ZyBiL1BDL2ljb25zL3NldHVwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNjEzODU2Ci0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvc2V0dXAuc3ZnCkBAIC0wLDAgKzEgQEAKKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMzIgMzIiPjxzdHlsZT4uaWNvbi1jYW52YXMtdHJhbnNwYXJlbnR7b3BhY2l0eTowO2ZpbGw6I2Y2ZjZmNn0uaWNvbi12aXN1YWxzdHVkaW8tb25saW5le2ZpbGw6IzAwN2FjY30uaWNvbi1kaXNhYmxlZC1ncmV5e2ZpbGw6Izg0ODQ4NH0uaWNvbi13aGl0ZXtmaWxsOiNmZmZ9LnN0MHtmaWxsOiNmMGVmZjF9LnN0MXtmaWxsOiM0MjQyNDJ9LnN0MntmaWxsOnVybCgjcGF0aDE5NDhfMV8pfS5zdDN7ZmlsbDp1cmwoI3BhdGgxOTUwXzFfKX08L3N0eWxlPjxwYXRoIGNsYXNzPSJpY29uLWNhbnZhcy10cmFuc3BhcmVudCIgZD0iTTMyIDMySDBWMGgzMnYzMnoiIGlkPSJjYW52YXMiLz48ZyBpZD0iaWNvbkJnIj48cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTggOHYxMEgxVjhoMTd6bS0xLjE5MSAxNS41NzJhMS4wMDQgMS4wMDQgMCAwIDAtLjkwMy0uNTcySDIuOTA3Yy0uMzg1IDAtLjc0LjIyNS0uOTAzLjU3MkwuODg2IDI1LjkyOEEuNzQ4Ljc0OCAwIDAgMCAxLjU2MyAyN0gxNy4yNWEuNzQ4Ljc0OCAwIDAgMCAuNjc3LTEuMDcybC0xLjExOC0yLjM1NnoiLz48cGF0aCBjbGFzcz0iaWNvbi1kaXNhYmxlZC1ncmV5IiBkPSJNMTcuOTI3IDI1LjkyOWwtMS4xMTgtMi4zNTZhMS4wMDMgMS4wMDMgMCAwIDAtLjkwMy0uNTczSDIuOTA3Yy0uMzg1IDAtLjc0LjIyNS0uOTAzLjU3MkwuODg2IDI1LjkyOEEuNzQ4Ljc0OCAwIDAgMCAxLjU2MyAyN0gxNy4yNWEuNzQ3Ljc0NyAwIDAgMCAuNjMzLS4zNDkuNzQ2Ljc0NiAwIDAgMCAuMDQ0LS43MjJ6TTEuOTU5IDI2bC45NDktMmgxMi45OThsLjk0OSAySDEuOTU5ek02IDIydi0xaDN2LTJoMXYyaDN2MUg2eiIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0wIDd2MTJoMTlWN0gwem0xOCAxMUgxVjhoMTd2MTB6Ii8+PC9nPjxnIGlkPSJpY29uRmciPjxwYXRoIGNsYXNzPSJpY29uLXdoaXRlIiBkPSJNMTIgNlYwSDd2NkgyLjc1NUw5LjUgMTMuNDk1IDE2LjI0NSA2eiIvPjxwYXRoIGNsYXNzPSJpY29uLXZpc3VhbHN0dWRpby1vbmxpbmUiIGQ9Ik04IDRoM3YzaDNsLTQuNSA1TDUgN2gzVjR6bTMtMkg4djFoM1Yyem0wLTJIOHYxaDNWMHoiLz48L2c+PGcgaWQ9ImNvbG9ySW1wb3J0YW5jZSI+PHBhdGggY2xhc3M9Imljb24td2hpdGUiIGQ9Ik0zMS41OTYgMjQuMDYzQzMxLjI0NiAyNS4xMTYgMzAuNTk1IDI3IDI4LjM0OSAyN0gyN3YxLjMxM2MwIC45MDUtLjM2OCAyLjUzNy0yLjk5NyAzLjI5OC0uOTAzLjI2MS0xLjcyNy4zODktMi41NjUuMzg5LS44MyAwLTEuNTk3LS4xMjgtMi40OTMtLjM5MkMxNy4wMjkgMzEuMDQ1IDE2IDI5Ljg0NCAxNiAyOC4zMTNWMjdoLTEuMjk2Yy0xLjY5OCAwLTIuOTQ0LTEuMTQxLTMuNDE3LTMuMTEtLjQ2OS0xLjk0NC0uNDY5LTMuMDIgMC00Ljk2Ny40NTEtMS44ODEgMS45NjEtMi45MjMgMy44NDUtMi45MjNIMTZ2LTEuNjk3YzAtMi4wMDUuODM0LTIuODQ1IDMuMDU0LTMuMjM4LjcyOC0uMTI4IDEuNDc0LS4wNjUgMi4yOTYtLjA2NWguMDAzYy45MjEgMCAxLjczNS0uMDcgMi41MzcuMDY0IDEuODE2LjMwMyAzLjExIDEuNTg1IDMuMTEgMy4yNFYxNmgxLjM0OWMxLjE0MiAwIDIuNjM2LjM1NiAzLjI3IDIuOTEyLjUxNSAyLjA3Mi41MDkgMy41NTktLjAyMyA1LjE1MXoiLz48bGluZWFyR3JhZGllbnQgaWQ9InBhdGgxOTQ4XzFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUyMi4yMDUiIHkxPSItMjg4LjY2OCIgeDI9IjU0MC45MDIiIHkyPSItMzA0Ljc1NCIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCguNTYyNSAwIDAgLS41NjggLTI4Mi4yNzIgLTE1MS42OSkiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzVhOWZkNCIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzMwNjk5OCIvPjwvbGluZWFyR3JhZGllbnQ+PHBhdGggaWQ9InBhdGgxOTQ4XzlfIiBjbGFzcz0ic3QyIiBkPSJNMjEuMzU0IDExLjcyNWMtLjc4Ni4wMDQtMS41MzcuMDcxLTIuMTk3LjE4OC0xLjk0Ni4zNDQtMi4yOTkgMS4wNjMtMi4yOTkgMi4zOXYxLjc1M2g0LjU5OHYuNTg0aC02LjMyNGMtMS4zMzYgMC0yLjUwNy44MDMtMi44NzMgMi4zMzEtLjQyMiAxLjc1MS0uNDQxIDIuODQ0IDAgNC42NzMuMzI3IDEuMzYxIDEuMTA4IDIuMzMxIDIuNDQ0IDIuMzMxaDEuNTgxdi0yLjEwMWMwLTEuNTE4IDEuMzEzLTIuODU3IDIuODczLTIuODU3aDQuNTkzYzEuMjc5IDAgMi4yOTktMS4wNTMgMi4yOTktMi4zMzd2LTQuMzc5YzAtMS4yNDYtMS4wNTEtMi4xODItMi4yOTktMi4zOS0uNzktLjEzLTEuNjEtLjE4OS0yLjM5Ni0uMTg2em0tMi40ODYgMS40MWMuNDc1IDAgLjg2My4zOTQuODYzLjg3OWEuODcuODcgMCAwIDEtLjg2My44NzQuODY4Ljg2OCAwIDAgMS0uODYzLS44NzRjMC0uNDg1LjM4Ni0uODc5Ljg2My0uODc5eiIvPjxsaW5lYXJHcmFkaWVudCBpZD0icGF0aDE5NTBfMV8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iNTQ4LjEzIiB5MT0iLTMxNC40ODkiIHgyPSI1NDEuNDU0IiB5Mj0iLTMwNS4wNDMiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLjU2MjUgMCAwIC0uNTY4IC0yODIuMjcyIC0xNTEuNjkpIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiNmZmQ0M2IiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNmZmU4NzMiLz48L2xpbmVhckdyYWRpZW50PjxwYXRoIGlkPSJwYXRoMTk1MF85XyIgY2xhc3M9InN0MyIgZD0iTTI2LjYyMyAxNi42NHYyLjA0MmMwIDEuNTgzLTEuMzQyIDIuOTE1LTIuODczIDIuOTE1aC00LjU5M2MtMS4yNTggMC0yLjI5OSAxLjA3Ny0yLjI5OSAyLjMzN3Y0LjM3OWMwIDEuMjQ2IDEuMDg0IDEuOTc5IDIuMjk5IDIuMzM3IDEuNDU2LjQyOCAyLjg1MS41MDUgNC41OTMgMCAxLjE1OC0uMzM1IDIuMjk5LTEuMDEgMi4yOTktMi4zMzdWMjYuNTZoLTQuNTkzdi0uNTg0SDI4LjM0OGMxLjMzNiAwIDEuODM0LS45MzIgMi4yOTktMi4zMzEuNDgtMS40NC40Ni0yLjgyNiAwLTQuNjczLS4zMy0xLjMzLS45NjEtMi4zMzEtMi4yOTktMi4zMzFoLTEuNzI1em0tMi41ODQgMTEuMDg5Yy40NzcgMCAuODYzLjM5MS44NjMuODc0YS44NzEuODcxIDAgMCAxLS44NjMuODc5Ljg3Mi44NzIgMCAwIDEtLjg2My0uODc5Ljg3Ljg3IDAgMCAxIC44NjMtLjg3NHoiLz48L2c+PC9zdmc+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUEMvbGF1bmNoZXIuYyBiL1BDL2xhdW5jaGVyLmMKaW5kZXggNDBkNGNiNS4uZDExZGY0MyAxMDA2NDQKLS0tIGEvUEMvbGF1bmNoZXIuYworKysgYi9QQy9sYXVuY2hlci5jCkBAIC05OCw3ICs5OCw3IEBACiAgICAgTWVzc2FnZUJveChOVUxMLCBtZXNzYWdlLCBURVhUKCJQeXRob24gTGF1bmNoZXIgaXMgc29ycnkgdG8gc2F5IC4uLiIpLAogICAgICAgICAgICAgICAgTUJfT0spOwogI2VuZGlmCi0gICAgRXhpdFByb2Nlc3MocmMpOworICAgIGV4aXQocmMpOwogfQogCiAvKgpAQCAtNDY1LDcgKzQ2NSw3IEBACiB9CiAKIHN0YXRpYyBJTlNUQUxMRURfUFlUSE9OICoKLWxvY2F0ZV9weXRob24od2NoYXJfdCAqIHdhbnRlZF92ZXIpCitsb2NhdGVfcHl0aG9uKHdjaGFyX3QgKiB3YW50ZWRfdmVyLCBCT09MIGZyb21fc2hlYmFuZykKIHsKICAgICBzdGF0aWMgd2NoYXJfdCBjb25maWdfa2V5IFtdID0geyBMInB5dGhvblgiIH07CiAgICAgc3RhdGljIHdjaGFyX3QgKiBsYXN0X2NoYXIgPSAmY29uZmlnX2tleVtzaXplb2YoY29uZmlnX2tleSkgLwpAQCAtNDk3LDEwICs0OTcsMTcgQEAKICAgICAgICAgY29uZmlndXJlZF92YWx1ZSA9IGdldF9jb25maWd1cmVkX3ZhbHVlKGNvbmZpZ19rZXkpOwogICAgICAgICBpZiAoY29uZmlndXJlZF92YWx1ZSkKICAgICAgICAgICAgIHJlc3VsdCA9IGZpbmRfcHl0aG9uX2J5X3ZlcnNpb24oY29uZmlndXJlZF92YWx1ZSk7CisgICAgICAgIC8qIE5vdCBmb3VuZCBhIHZhbHVlIHlldCAtIHRyeSBieSBtYWpvciB2ZXJzaW9uLgorICAgICAgICAgKiBJZiB3ZSdyZSBsb29raW5nIGZvciBhbiBpbnRlcnByZXRlciBzcGVjaWZpZWQgaW4gYSBzaGViYW5nIGxpbmUsCisgICAgICAgICAqIHdlIHdhbnQgdG8gdHJ5IFB5dGhvbiAyIGZpcnN0LCB0aGVuIFB5dGhvbiAzIChmb3IgVW5peCBhbmQgYmFja3dhcmQKKyAgICAgICAgICogY29tcGF0aWJpbGl0eSkuIElmIHdlJ3JlIGJlaW5nIGNhbGxlZCBpbnRlcmFjdGl2ZWx5LCBhc3N1bWUgdGhlIHVzZXIKKyAgICAgICAgICogd2FudHMgdGhlIGxhdGVzdCB2ZXJzaW9uIGF2YWlsYWJsZSwgc28gdHJ5IFB5dGhvbiAzIGZpcnN0LCB0aGVuCisgICAgICAgICAqIFB5dGhvbiAyLgorICAgICAgICAgKi8KICAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQotICAgICAgICAgICAgcmVzdWx0ID0gZmluZF9weXRob25fYnlfdmVyc2lvbihMIjIiKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGZpbmRfcHl0aG9uX2J5X3ZlcnNpb24oZnJvbV9zaGViYW5nID8gTCIyIiA6IEwiMyIpOwogICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCi0gICAgICAgICAgICByZXN1bHQgPSBmaW5kX3B5dGhvbl9ieV92ZXJzaW9uKEwiMyIpOworICAgICAgICAgICAgcmVzdWx0ID0gZmluZF9weXRob25fYnlfdmVyc2lvbihmcm9tX3NoZWJhbmcgPyBMIjMiIDogTCIyIik7CiAgICAgICAgIGRlYnVnKEwic2VhcmNoIGZvciBkZWZhdWx0IFB5dGhvbiBmb3VuZCAiKTsKICAgICAgICAgaWYgKHJlc3VsdCkgewogICAgICAgICAgICAgZGVidWcoTCJ2ZXJzaW9uICVscyBhdCAnJWxzJ1xuIiwKQEAgLTY1NSw3ICs2NjIsNyBAQAogICAgIGlmICghb2spCiAgICAgICAgIGVycm9yKFJDX0NSRUFURV9QUk9DRVNTLCBMIkZhaWxlZCB0byBnZXQgZXhpdCBjb2RlIG9mIHByb2Nlc3MiKTsKICAgICBkZWJ1ZyhMImNoaWxkIHByb2Nlc3MgZXhpdCBjb2RlOiAlZFxuIiwgcmMpOwotICAgIEV4aXRQcm9jZXNzKHJjKTsKKyAgICBleGl0KHJjKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTEwODIsNyArMTA4OSw3IEBACiAgICAgeyAzMTkwLCAzMjMwLCBMIjMuMyIgfSwKICAgICB7IDMyNTAsIDMzMTAsIEwiMy40IiB9LAogICAgIHsgMzMyMCwgMzM1MSwgTCIzLjUiIH0sCi0gICAgeyAzMzYwLCAzMzYxLCBMIjMuNiIgfSwKKyAgICB7IDMzNjAsIDMzNzksIEwiMy42IiB9LAogICAgIHsgMCB9CiB9OwogCkBAIC0xMDk0LDcgKzExMDEsNyBAQAogCiAgICAgZm9yIChtcCA9IG1hZ2ljX3ZhbHVlczsgbXAtPm1pbjsgbXArKykgewogICAgICAgICBpZiAoKG1hZ2ljID49IG1wLT5taW4pICYmIChtYWdpYyA8PSBtcC0+bWF4KSkgewotICAgICAgICAgICAgcmVzdWx0ID0gbG9jYXRlX3B5dGhvbihtcC0+dmVyc2lvbik7CisgICAgICAgICAgICByZXN1bHQgPSBsb2NhdGVfcHl0aG9uKG1wLT52ZXJzaW9uLCBGQUxTRSk7CiAgICAgICAgICAgICBpZiAocmVzdWx0ICE9IE5VTEwpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTExMTQsNyArMTEyMSw3IEBACiAgKi8KICAgICBGSUxFICogZnA7CiAgICAgZXJybm9fdCByYyA9IF93Zm9wZW5fcygmZnAsICphcmd2LCBMInJiIik7Ci0gICAgdW5zaWduZWQgY2hhciBidWZmZXJbQlVGU0laRV07CisgICAgY2hhciBidWZmZXJbQlVGU0laRV07CiAgICAgd2NoYXJfdCBzaGViYW5nX2xpbmVbQlVGU0laRSArIDFdOwogICAgIHNpemVfdCByZWFkOwogICAgIGNoYXIgKnA7CkBAIC0xMTM2LDcgKzExNDMsOCBAQAogICAgICAgICBmY2xvc2UoZnApOwogCiAgICAgICAgIGlmICgocmVhZCA+PSA0KSAmJiAoYnVmZmVyWzNdID09ICdcbicpICYmIChidWZmZXJbMl0gPT0gJ1xyJykpIHsKLSAgICAgICAgICAgIGlwID0gZmluZF9ieV9tYWdpYygoYnVmZmVyWzFdIDw8IDggfCBidWZmZXJbMF0pICYgMHhGRkZGKTsKKyAgICAgICAgICAgIGlwID0gZmluZF9ieV9tYWdpYygoKCh1bnNpZ25lZCBjaGFyKWJ1ZmZlclsxXSkgPDwgOCB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyKWJ1ZmZlclswXSkgJiAweEZGRkYpOwogICAgICAgICAgICAgaWYgKGlwICE9IE5VTEwpIHsKICAgICAgICAgICAgICAgICBkZWJ1ZyhMInNjcmlwdCBmaWxlIGlzIGNvbXBpbGVkIGFnYWluc3QgUHl0aG9uICVsc1xuIiwKICAgICAgICAgICAgICAgICAgICAgICBpcC0+dmVyc2lvbik7CkBAIC0xMjc4LDcgKzEyODYsNyBAQAogZm9sbG93ZWQgYnkgYSB2YWxpZCB2ZXJzaW9uIHNwZWNpZmllci5cblBsZWFzZSBjaGVjayB0aGUgZG9jdW1lbnRhdGlvbi4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQpOwogICAgICAgICAgICAgICAgICAgICAgICAgLyogVE9ETyBjb3VsZCBjYWxsIHZhbGlkYXRlX3ZlcnNpb24oY29tbWFuZCkgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgIGlwID0gbG9jYXRlX3B5dGhvbihjb21tYW5kKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlwID0gbG9jYXRlX3B5dGhvbihjb21tYW5kLCBUUlVFKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpcCA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IoUkNfTk9fUFlUSE9OLCBMIlJlcXVlc3RlZCBQeXRob24gdmVyc2lvbiBcCiAoJWxzKSBpcyBub3QgaW5zdGFsbGVkIiwgY29tbWFuZCk7CkBAIC0xMzYyLDYgKzEzNzAsNyBAQAogICAgIHdjaGFyX3QgKiBhdlsyXTsKICNlbmRpZgogCisgICAgc2V0dmJ1ZihzdGRlcnIsIChjaGFyICopTlVMTCwgX0lPTkJGLCAwKTsKICAgICB3cCA9IGdldF9lbnYoTCJQWUxBVU5DSF9ERUJVRyIpOwogICAgIGlmICgod3AgIT0gTlVMTCkgJiYgKCp3cCAhPSBMJ1wwJykpCiAgICAgICAgIGxvZ19mcCA9IHN0ZGVycjsKQEAgLTE0ODMsNyArMTQ5Miw3IEBACiAgICAgICAgIHBsZW4gPSB3Y3NsZW4ocCk7CiAgICAgICAgIHZhbGlkID0gKCpwID09IEwnLScpICYmIHZhbGlkYXRlX3ZlcnNpb24oJnBbMV0pOwogICAgICAgICBpZiAodmFsaWQpIHsKLSAgICAgICAgICAgIGlwID0gbG9jYXRlX3B5dGhvbigmcFsxXSk7CisgICAgICAgICAgICBpcCA9IGxvY2F0ZV9weXRob24oJnBbMV0sIEZBTFNFKTsKICAgICAgICAgICAgIGlmIChpcCA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGVycm9yKFJDX05PX1BZVEhPTiwgTCJSZXF1ZXN0ZWQgUHl0aG9uIHZlcnNpb24gKCVscykgbm90IFwKIGluc3RhbGxlZCIsICZwWzFdKTsKQEAgLTE1MTAsNyArMTUxOSw3IEBACiAKICAgICAgICAgLyogSWYgd2UgZGlkbid0IGZpbmQgb25lLCBsb29rIGZvciB0aGUgZGVmYXVsdCBQeXRob24gKi8KICAgICAgICAgaWYgKGV4ZWN1dGFibGUgPT0gTlVMTCkgewotICAgICAgICAgICAgaXAgPSBsb2NhdGVfcHl0aG9uKEwiIik7CisgICAgICAgICAgICBpcCA9IGxvY2F0ZV9weXRob24oTCIiLCBGQUxTRSk7CiAgICAgICAgICAgICBpZiAoaXAgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBlcnJvcihSQ19OT19QWVRIT04sIEwiQ2FuJ3QgZmluZCBhIGRlZmF1bHQgUHl0aG9uLiIpOwogICAgICAgICAgICAgZXhlY3V0YWJsZSA9IGlwLT5leGVjdXRhYmxlOwpkaWZmIC0tZ2l0IGEvUEMvbGF1bmNoZXIuaWNvIGIvUEMvbGF1bmNoZXIuaWNvCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYWQ3ZDU3Li4wMDAwMDAwCi0tLSBhL1BDL2xhdW5jaGVyLmljbworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1BDL21zdmNydG1vZHVsZS5jIGIvUEMvbXN2Y3J0bW9kdWxlLmMKaW5kZXggYjA3MzlkMC4uYzlkMWU2YyAxMDA2NDQKLS0tIGEvUEMvbXN2Y3J0bW9kdWxlLmMKKysrIGIvUEMvbXN2Y3J0bW9kdWxlLmMKQEAgLTMzLDEyICszMywxMiBAQAogI2VuZGlmCiAKIC8qW3B5dGhvbiBpbnB1dF0KLWNsYXNzIFB5X2ludHB0cl90X2NvbnZlcnRlcihDQ29udmVydGVyKToKLSAgICB0eXBlID0gJ1B5X2ludHB0cl90JworY2xhc3MgaW50cHRyX3RfY29udmVydGVyKENDb252ZXJ0ZXIpOgorICAgIHR5cGUgPSAnaW50cHRyX3QnCiAgICAgZm9ybWF0X3VuaXQgPSAnIl9QeV9QQVJTRV9JTlRQVFIiJwogCiBjbGFzcyBoYW5kbGVfcmV0dXJuX2NvbnZlcnRlcihsb25nX3JldHVybl9jb252ZXJ0ZXIpOgotICAgIHR5cGUgPSAnUHlfaW50cHRyX3QnCisgICAgdHlwZSA9ICdpbnRwdHJfdCcKICAgICBjYXN0ID0gJyh2b2lkICopJwogICAgIGNvbnZlcnNpb25fZm4gPSAnUHlMb25nX0Zyb21Wb2lkUHRyJwogCkBAIC01OSw3ICs1OSw3IEBACiAgICAgICAgIGRhdGEucmV0dXJuX2NvbnZlcnNpb24uYXBwZW5kKAogICAgICAgICAgICAgJ3JldHVybl92YWx1ZSA9IFB5VW5pY29kZV9Gcm9tT3JkaW5hbChfcmV0dXJuX3ZhbHVlKTtcbicpCiBbcHl0aG9uIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCi0vKltweXRob24gZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD02YTU0ZmM0ZTczZDBiMzY3XSovCisvKltweXRob24gZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1iNTlmMTY2M2RiYTExOTk3XSovCiAKIC8qW2NsaW5pYyBpbnB1dF0KIG1vZHVsZSBtc3ZjcnQKQEAgLTE0OCw3ICsxNDgsNyBAQAogLypbY2xpbmljIGlucHV0XQogbXN2Y3J0Lm9wZW5fb3NmaGFuZGxlIC0+IGxvbmcKIAotICAgIGhhbmRsZTogUHlfaW50cHRyX3QKKyAgICBoYW5kbGU6IGludHB0cl90CiAgICAgZmxhZ3M6IGludAogICAgIC8KIApAQCAtMTYwLDggKzE2MCw4IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBsb25nCi1tc3ZjcnRfb3Blbl9vc2ZoYW5kbGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9pbnRwdHJfdCBoYW5kbGUsIGludCBmbGFncykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iZjY1ZTQyMjI0M2EzOWY5IGlucHV0PTRkODUxNmVkMzJkYjhmNjVdKi8KK21zdmNydF9vcGVuX29zZmhhbmRsZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludHB0cl90IGhhbmRsZSwgaW50IGZsYWdzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWNlZGU4NzFiZjkzOWQ2ZTMgaW5wdXQ9Y2IyMTA4YmJlYTg0NTE0ZV0qLwogewogICAgIGludCBmZDsKIApAQCAtMTgzLDIyICsxODMsMTcgQEAKIFJhaXNlcyBJT0Vycm9yIGlmIGZkIGlzIG5vdCByZWNvZ25pemVkLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCi1zdGF0aWMgUHlfaW50cHRyX3QKK3N0YXRpYyBpbnRwdHJfdAogbXN2Y3J0X2dldF9vc2ZoYW5kbGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgZmQpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZWFjNDc2NDMzMzhjMGJhYSBpbnB1dD1jN2QxOGQwMmM4MDE3ZWMxXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9N2NlNzYxZGQwZGUyYjUwMyBpbnB1dD1jN2QxOGQwMmM4MDE3ZWMxXSovCiB7Ci0gICAgUHlfaW50cHRyX3QgaGFuZGxlID0gLTE7CisgICAgaW50cHRyX3QgaGFuZGxlID0gLTE7CiAKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwotICAgIH0KLSAgICBlbHNlIHsKICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICi0gICAgICAgIGhhbmRsZSA9IF9nZXRfb3NmaGFuZGxlKGZkKTsKKyAgICBoYW5kbGUgPSBfZ2V0X29zZmhhbmRsZShmZCk7CiAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKLSAgICAgICAgaWYgKGhhbmRsZSA9PSAtMSkKLSAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKLSAgICB9CisgICAgaWYgKGhhbmRsZSA9PSAtMSkKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwogCiAgICAgcmV0dXJuIGhhbmRsZTsKIH0KQEAgLTU0MCw3ICs1MzUsNiBAQAogI2VuZGlmCiAKICAgICAvKiBjb25zdGFudHMgZm9yIHRoZSBjcnQgdmVyc2lvbnMgKi8KLSAgICAodm9pZClzdDsKICNpZmRlZiBfVkNfQVNTRU1CTFlfUFVCTElDS0VZVE9LRU4KICAgICBzdCA9IFB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50KG0sICJWQ19BU1NFTUJMWV9QVUJMSUNLRVlUT0tFTiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVkNfQVNTRU1CTFlfUFVCTElDS0VZVE9LRU4pOwpAQCAtNTY2LDYgKzU2MCw4IEBACiAgICAgc3QgPSBQeU1vZHVsZV9BZGRPYmplY3QobSwgIkNSVF9BU1NFTUJMWV9WRVJTSU9OIiwgdmVyc2lvbik7CiAgICAgaWYgKHN0IDwgMCkgcmV0dXJuIE5VTEw7CiAjZW5kaWYKKyAgICAvKiBtYWtlIGNvbXBpbGVyIHdhcm5pbmcgcXVpZXQgaWYgc3QgaXMgdW51c2VkICovCisgICAgKHZvaWQpc3Q7CiAKICAgICByZXR1cm4gbTsKIH0KZGlmZiAtLWdpdCBhL1BDL3B5LmljbyBiL1BDL3B5LmljbwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzM1N2FlZi4uMDAwMDAwMAotLS0gYS9QQy9weS5pY28KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9weWMuaWNvIGIvUEMvcHljLmljbwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjdiZDJiMS4uMDAwMDAwMAotLS0gYS9QQy9weWMuaWNvCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvUEMvcHljb24uaWNvIGIvUEMvcHljb24uaWNvCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYWI2MjllLi4wMDAwMDAwCi0tLSBhL1BDL3B5Y29uLmljbworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1BDL3B5Y29uZmlnLmggYi9QQy9weWNvbmZpZy5oCmluZGV4IGFjNGY4ZjIuLjY0ZTdhZWMgMTAwNjQ0Ci0tLSBhL1BDL3B5Y29uZmlnLmgKKysrIGIvUEMvcHljb25maWcuaApAQCAtMTQsNyArMTQsNiBAQAogTVNfV0lONjQgLSBDb2RlIHNwZWNpZmljIHRvIHRoZSBNUyBXaW42NCBBUEkKIE1TX1dJTjMyIC0gQ29kZSBzcGVjaWZpYyB0byB0aGUgTVMgV2luMzIgKGFuZCBXaW42NCkgQVBJIChvYnNvbGV0ZSwgdGhpcyBjb3ZlcnMgYWxsIHN1cHBvcnRlZCBBUElzKQogTVNfV0lORE9XUyAtIENvZGUgc3BlY2lmaWMgdG8gV2luZG93cywgYnV0IGFsbCB2ZXJzaW9ucy4KLU1TX1dJTkNFIC0gQ29kZSBzcGVjaWZpYyB0byBXaW5kb3dzIENFCiBQeV9FTkFCTEVfU0hBUkVEIC0gQ29kZSBpZiB0aGUgUHl0aG9uIGNvcmUgaXMgYnVpbHQgYXMgYSBETEwuCiAKIEFsc28gbm90ZSB0aGF0IG5laXRoZXIgIl9NX0lYODYiIG9yICJfTVNDX1ZFUiIgc2hvdWxkIGJlIHVzZWQgZm9yCkBAIC0zMCwxMCArMjksNiBAQAogCiAqLwogCi0jaWZkZWYgX1dJTjMyX1dDRQotI2RlZmluZSBNU19XSU5DRQotI2VuZGlmCi0KIC8qIERlcHJlY2F0ZWQgVVNFX0RMX0VYUE9SVCBtYWNybyAtIHBsZWFzZSB1c2UgUHlfQlVJTERfQ09SRSAqLwogI2lmZGVmIFVTRV9ETF9FWFBPUlQKICMJZGVmaW5lIFB5X0JVSUxEX0NPUkUKQEAgLTUzLDggKzQ4LDYgQEAKICNkZWZpbmUgX0NSVF9OT05TVERDX05PX0RFUFJFQ0FURSAxCiAjZW5kaWYKIAotLyogV2luZG93cyBDRSBkb2VzIG5vdCBoYXZlIHRoZXNlICovCi0jaWZuZGVmIE1TX1dJTkNFCiAjZGVmaW5lIEhBVkVfSU9fSAogI2RlZmluZSBIQVZFX1NZU19VVElNRV9ICiAjZGVmaW5lIEhBVkVfVEVNUE5BTQpAQCAtNjIsMTEgKzU1LDggQEAKICNkZWZpbmUgSEFWRV9UTVBOQU0KICNkZWZpbmUgSEFWRV9DTE9DSwogI2RlZmluZSBIQVZFX1NUUkVSUk9SCi0jZW5kaWYKIAotI2lmZGVmIEhBVkVfSU9fSAogI2luY2x1ZGUgPGlvLmg+Ci0jZW5kaWYKIAogI2RlZmluZSBIQVZFX0hZUE9UCiAjZGVmaW5lIEhBVkVfU1RSRlRJTUUKQEAgLTg2LDE3ICs3Niw2IEBACiAjZGVmaW5lIFVTRV9TT0NLRVQKICNlbmRpZgogCi0vKiBDRTYgZG9lc24ndCBoYXZlIHN0cmR1cCgpIGJ1dCBfc3RyZHVwKCkuIEFzc3VtZSB0aGUgc2FtZSBmb3IgZWFybGllciB2ZXJzaW9ucy4gKi8KLSNpZiBkZWZpbmVkKE1TX1dJTkNFKQotIyAgaW5jbHVkZSA8c3RkbGliLmg+Ci0jICBkZWZpbmUgc3RyZHVwIF9zdHJkdXAKLSNlbmRpZgotCi0jaWZkZWYgTVNfV0lOQ0UKLS8qIFdpbmRvd3MgQ0UgZG9lcyBub3Qgc3VwcG9ydCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgKi8KLSNkZWZpbmUgZ2V0ZW52KHYpIChOVUxMKQotI2RlZmluZSBlbnZpcm9uIChOVUxMKQotI2VuZGlmCiAKIC8qIENvbXBpbGVyIHNwZWNpZmljIGRlZmluZXMgKi8KIApAQCAtMjg2LDcgKzI2NSw2IEBACiAjZW5kaWYKIAogLyogNjQgYml0IGludHMgYXJlIHVzdWFsbHkgc3BlbHQgX19pbnQ2NCB1bmxlc3MgY29tcGlsZXIgaGFzIG92ZXJyaWRkZW4gKi8KLSNkZWZpbmUgSEFWRV9MT05HX0xPTkcgMQogI2lmbmRlZiBQWV9MT05HX0xPTkcKICMJZGVmaW5lIFBZX0xPTkdfTE9ORyBfX2ludDY0CiAjCWRlZmluZSBQWV9MTE9OR19NQVggX0k2NF9NQVgKQEAgLTMxMiwxMSArMjkwLDExIEBACiAJCQl0aGVpciBNYWtlZmlsZSAob3RoZXIgY29tcGlsZXJzIGFyZSBnZW5lcmFsbHkKIAkJCXRha2VuIGNhcmUgb2YgYnkgZGlzdHV0aWxzLikgKi8KICMJCQlpZiBkZWZpbmVkKF9ERUJVRykKLSMJCQkJcHJhZ21hIGNvbW1lbnQobGliLCJweXRob24zNV9kLmxpYiIpCisjCQkJCXByYWdtYSBjb21tZW50KGxpYiwicHl0aG9uMzZfZC5saWIiKQogIwkJCWVsaWYgZGVmaW5lZChQeV9MSU1JVEVEX0FQSSkKICMJCQkJcHJhZ21hIGNvbW1lbnQobGliLCJweXRob24zLmxpYiIpCiAjCQkJZWxzZQotIwkJCQlwcmFnbWEgY29tbWVudChsaWIsInB5dGhvbjM1LmxpYiIpCisjCQkJCXByYWdtYSBjb21tZW50KGxpYiwicHl0aG9uMzYubGliIikKICMJCQllbmRpZiAvKiBfREVCVUcgKi8KICMJCWVuZGlmIC8qIF9NU0NfVkVSICovCiAjCWVuZGlmIC8qIFB5X0JVSUxEX0NPUkUgKi8KQEAgLTM4NywzOSArMzY1LDEwIEBACiAKIC8qIGRlZmluZSBzaWduZWQgYW5kIHVuc2lnbmVkIGV4YWN0LXdpZHRoIDMyLWJpdCBhbmQgNjQtYml0IHR5cGVzLCB1c2VkIGluIHRoZQogICAgaW1wbGVtZW50YXRpb24gb2YgUHl0aG9uIGludGVnZXJzLiAqLwotI2lmbmRlZiBQWV9VSU5UMzJfVAotI2lmIFNJWkVPRl9JTlQgPT0gNAotI2RlZmluZSBIQVZFX1VJTlQzMl9UIDEKLSNkZWZpbmUgUFlfVUlOVDMyX1QgdW5zaWduZWQgaW50Ci0jZWxpZiBTSVpFT0ZfTE9ORyA9PSA0Ci0jZGVmaW5lIEhBVkVfVUlOVDMyX1QgMQotI2RlZmluZSBQWV9VSU5UMzJfVCB1bnNpZ25lZCBsb25nCi0jZW5kaWYKLSNlbmRpZgotCi0jaWZuZGVmIFBZX1VJTlQ2NF9UCi0jaWYgU0laRU9GX0xPTkdfTE9ORyA9PSA4Ci0jZGVmaW5lIEhBVkVfVUlOVDY0X1QgMQotI2RlZmluZSBQWV9VSU5UNjRfVCB1bnNpZ25lZCBQWV9MT05HX0xPTkcKLSNlbmRpZgotI2VuZGlmCi0KLSNpZm5kZWYgUFlfSU5UMzJfVAotI2lmIFNJWkVPRl9JTlQgPT0gNAotI2RlZmluZSBIQVZFX0lOVDMyX1QgMQotI2RlZmluZSBQWV9JTlQzMl9UIGludAotI2VsaWYgU0laRU9GX0xPTkcgPT0gNAotI2RlZmluZSBIQVZFX0lOVDMyX1QgMQotI2RlZmluZSBQWV9JTlQzMl9UIGxvbmcKLSNlbmRpZgotI2VuZGlmCi0KLSNpZm5kZWYgUFlfSU5UNjRfVAotI2lmIFNJWkVPRl9MT05HX0xPTkcgPT0gOAotI2RlZmluZSBIQVZFX0lOVDY0X1QgMQotI2RlZmluZSBQWV9JTlQ2NF9UIFBZX0xPTkdfTE9ORwotI2VuZGlmCi0jZW5kaWYKKyNkZWZpbmUgUFlfVUlOVDMyX1QgdWludDMyX3QKKyNkZWZpbmUgUFlfVUlOVDY0X1QgdWludDY0X3QKKyNkZWZpbmUgUFlfSU5UMzJfVCBpbnQzMl90CisjZGVmaW5lIFBZX0lOVDY0X1QgaW50NjRfdAogCiAvKiBGYWlybHkgc3RhbmRhcmQgZnJvbSBoZXJlISAqLwogCkBAIC00NDgsMTQgKzM5NywxMCBAQAogLyogI2RlZmluZSBjb25zdCAgKi8KIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxjb25pby5oPiBoZWFkZXIgZmlsZS4gKi8KLSNpZm5kZWYgTVNfV0lOQ0UKICNkZWZpbmUgSEFWRV9DT05JT19IIDEKLSNlbmRpZgogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGRpcmVjdC5oPiBoZWFkZXIgZmlsZS4gKi8KLSNpZm5kZWYgTVNfV0lOQ0UKICNkZWZpbmUgSEFWRV9ESVJFQ1RfSCAxCi0jZW5kaWYKIAogLyogRGVmaW5lIGlmIHlvdSBoYXZlIGRpcmVudC5oLiAgKi8KIC8qICNkZWZpbmUgRElSRU5UIDEgKi8KQEAgLTUyOCw5ICs0NzMsNyBAQAogLyogI2RlZmluZSBIQVZFX0FMVFpPTkUgKi8KIAogLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBwdXRlbnYgZnVuY3Rpb24uICAqLwotI2lmbmRlZiBNU19XSU5DRQogI2RlZmluZSBIQVZFX1BVVEVOVgotI2VuZGlmCiAKIC8qIERlZmluZSBpZiB5b3VyIGNvbXBpbGVyIHN1cHBvcnRzIGZ1bmN0aW9uIHByb3RvdHlwZXMgKi8KICNkZWZpbmUgSEFWRV9QUk9UT1RZUEVTCkBAIC01NTgsOSArNTAxLDcgQEAKICNkZWZpbmUgSEFWRV9EWU5BTUlDX0xPQURJTkcKIAogLyogRGVmaW5lIGlmIHlvdSBoYXZlIGZ0aW1lLiAgKi8KLSNpZm5kZWYgTVNfV0lOQ0UKICNkZWZpbmUgSEFWRV9GVElNRQotI2VuZGlmCiAKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSBnZXRwZWVybmFtZS4gICovCiAjZGVmaW5lIEhBVkVfR0VUUEVFUk5BTUUKQEAgLTU2OSw5ICs1MTAsNyBAQAogLyogI3VuZGVmIEhBVkVfR0VUUEdSUCAqLwogCiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgZ2V0cGlkLiAgKi8KLSNpZm5kZWYgTVNfV0lOQ0UKICNkZWZpbmUgSEFWRV9HRVRQSUQKLSNlbmRpZgogCiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgZ2V0dGltZW9mZGF5LiAgKi8KIC8qICN1bmRlZiBIQVZFX0dFVFRJTUVPRkRBWSAqLwpAQCAtNjMzLDE0ICs1NzIsMTAgQEAKICNlbmRpZgogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHdjc2NvbGwnIGZ1bmN0aW9uLiAqLwotI2lmbmRlZiBNU19XSU5DRQogI2RlZmluZSBIQVZFX1dDU0NPTEwgMQotI2VuZGlmCiAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgd2NzeGZybScgZnVuY3Rpb24uICovCi0jaWZuZGVmIE1TX1dJTkNFCiAjZGVmaW5lIEhBVkVfV0NTWEZSTSAxCi0jZW5kaWYKIAogLyogRGVmaW5lIGlmIHRoZSB6bGliIGxpYnJhcnkgaGFzIGluZmxhdGVDb3B5ICovCiAjZGVmaW5lIEhBVkVfWkxJQl9DT1BZIDEKQEAgLTY0OSwyNCArNTg0LDE2IEBACiAvKiAjdW5kZWYgSEFWRV9ETEZDTl9IICovCiAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8ZXJybm8uaD4gaGVhZGVyIGZpbGUuICovCi0jaWZuZGVmIE1TX1dJTkNFCiAjZGVmaW5lIEhBVkVfRVJSTk9fSCAxCi0jZW5kaWYKIAogLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8ZmNudGwuaD4gaGVhZGVyIGZpbGUuICAqLwotI2lmbmRlZiBNU19XSU5DRQogI2RlZmluZSBIQVZFX0ZDTlRMX0ggMQotI2VuZGlmCiAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8cHJvY2Vzcy5oPiBoZWFkZXIgZmlsZS4gKi8KLSNpZm5kZWYgTVNfV0lOQ0UKICNkZWZpbmUgSEFWRV9QUk9DRVNTX0ggMQotI2VuZGlmCiAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c2lnbmFsLmg+IGhlYWRlciBmaWxlLiAqLwotI2lmbmRlZiBNU19XSU5DRQogI2RlZmluZSBIQVZFX1NJR05BTF9IIDEKLSNlbmRpZgogCiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxzdGRhcmcuaD4gcHJvdG90eXBlcy4gICovCiAjZGVmaW5lIEhBVkVfU1REQVJHX1BST1RPVFlQRVMKQEAgLTY4NCw5ICs2MTEsNyBAQAogLyogI2RlZmluZSBIQVZFX1NZU19TRUxFQ1RfSCAxICovCiAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3N0YXQuaD4gaGVhZGVyIGZpbGUuICAqLwotI2lmbmRlZiBNU19XSU5DRQogI2RlZmluZSBIQVZFX1NZU19TVEFUX0ggMQotI2VuZGlmCiAKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy90aW1lLmg+IGhlYWRlciBmaWxlLiAgKi8KIC8qICNkZWZpbmUgSEFWRV9TWVNfVElNRV9IIDEgKi8KQEAgLTY5NSw5ICs2MjAsNyBAQAogLyogI2RlZmluZSBIQVZFX1NZU19USU1FU19IIDEgKi8KIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvdHlwZXMuaD4gaGVhZGVyIGZpbGUuICAqLwotI2lmbmRlZiBNU19XSU5DRQogI2RlZmluZSBIQVZFX1NZU19UWVBFU19IIDEKLSNlbmRpZgogCiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxzeXMvdW4uaD4gaGVhZGVyIGZpbGUuICAqLwogLyogI2RlZmluZSBIQVZFX1NZU19VTl9IIDEgKi8KQEAgLTcyMCw2ICs2NDMsOSBAQAogLyogVGhlIHNpemUgb2YgYHdjaGFyX3QnLCBhcyBjb21wdXRlZCBieSBzaXplb2YuICovCiAjZGVmaW5lIFNJWkVPRl9XQ0hBUl9UIDIKIAorLyogVGhlIHNpemUgb2YgYF9Cb29sJywgYXMgY29tcHV0ZWQgYnkgc2l6ZW9mLiAqLworI2RlZmluZSBTSVpFT0ZfX0JPT0wgMQorCiAvKiBUaGUgc2l6ZSBvZiBgcGlkX3QnLCBhcyBjb21wdXRlZCBieSBzaXplb2YuICovCiAjZGVmaW5lIFNJWkVPRl9QSURfVCBTSVpFT0ZfSU5UCiAKZGlmZiAtLWdpdCBhL1BDL3B5bGF1bmNoZXIucmMgYi9QQy9weWxhdW5jaGVyLnJjCmluZGV4IGE4ZGIwYTguLjNkYTM0NDUgMTAwNjQ0Ci0tLSBhL1BDL3B5bGF1bmNoZXIucmMKKysrIGIvUEMvcHlsYXVuY2hlci5yYwpAQCAtNyw5ICs3LDEzIEBACiAjaW5jbHVkZSA8d2ludXNlci5oPgogMSBSVF9NQU5JRkVTVCAicHl0aG9uLm1hbmlmZXN0IgogCi0xIElDT04gRElTQ0FSREFCTEUgImxhdW5jaGVyLmljbyIgCi0yIElDT04gRElTQ0FSREFCTEUgInB5LmljbyIgCi0zIElDT04gRElTQ0FSREFCTEUgInB5Yy5pY28iIAorMSBJQ09OIERJU0NBUkRBQkxFICJpY29uc1xsYXVuY2hlci5pY28iIAorMiBJQ09OIERJU0NBUkRBQkxFICJpY29uc1xweS5pY28iIAorMyBJQ09OIERJU0NBUkRBQkxFICJpY29uc1xweWMuaWNvIiAKKzQgSUNPTiBESVNDQVJEQUJMRSAiaWNvbnNccHlkLmljbyIgCis1IElDT04gRElTQ0FSREFCTEUgImljb25zXHB5dGhvbi5pY28iCis2IElDT04gRElTQ0FSREFCTEUgImljb25zXHB5dGhvbncuaWNvIgorNyBJQ09OIERJU0NBUkRBQkxFICJpY29uc1xzZXR1cC5pY28iIAogCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogLy8KZGlmZiAtLWdpdCBhL1BDL3B5dGhvbi5tYW5pZmVzdCBiL1BDL3B5dGhvbi5tYW5pZmVzdAppbmRleCBkNmU0YmJhLi40ZTczZDYwIDEwMDY0NAotLS0gYS9QQy9weXRob24ubWFuaWZlc3QKKysrIGIvUEMvcHl0aG9uLm1hbmlmZXN0CkBAIC0xNiwxMCArMTYsMTUgQEAKICAgICAgIDxzdXBwb3J0ZWRPUyBJZD0iezhlMGY3YTEyLWJmYjMtNGZlOC1iOWE1LTQ4ZmQ1MGExNWE5YX0iLz4KICAgICA8L2FwcGxpY2F0aW9uPiAKICAgPC9jb21wYXRpYmlsaXR5PgorICA8YXBwbGljYXRpb24geG1sbnM9InVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206YXNtLnYzIj4KKyAgICA8d2luZG93c1NldHRpbmdzPgorICAgICAgPGxvbmdQYXRoQXdhcmUgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vU01JLzIwMTYvV2luZG93c1NldHRpbmdzIj50cnVlPC9sb25nUGF0aEF3YXJlPgorICAgIDwvd2luZG93c1NldHRpbmdzPgorICA8L2FwcGxpY2F0aW9uPgogICA8ZGVwZW5kZW5jeT4KICAgICA8ZGVwZW5kZW50QXNzZW1ibHk+CiAgICAgICA8YXNzZW1ibHlJZGVudGl0eSB0eXBlPSJ3aW4zMiIgbmFtZT0iTWljcm9zb2Z0LldpbmRvd3MuQ29tbW9uLUNvbnRyb2xzIgogICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbj0iNi4wLjAuMCIgcHJvY2Vzc29yQXJjaGl0ZWN0dXJlPSIqIiBwdWJsaWNLZXlUb2tlbj0iNjU5NWI2NDE0NGNjZjFkZiIgbGFuZ3VhZ2U9IioiIC8+CiAgICAgPC9kZXBlbmRlbnRBc3NlbWJseT4KICAgPC9kZXBlbmRlbmN5PgotPC9hc3NlbWJseT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L2Fzc2VtYmx5PgpkaWZmIC0tZ2l0IGEvUEMvcHl0aG9uMy5kZWYgYi9QQy9weXRob24zLmRlZgppbmRleCA4OGMwNzQyLi5lOGQyZDhjIDEwMDY0NAotLS0gYS9QQy9weXRob24zLmRlZgorKysgYi9QQy9weXRob24zLmRlZgpAQCAtMiw3MTIgKzIsNzEzIEBACiA7IEl0IGlzIHVzZWQgd2hlbiBidWlsZGluZyBweXRob24zZGxsLnZjeHByb2oKIExJQlJBUlkJInB5dGhvbjMiCiBFWFBPUlRTCi0gIFB5QXJnX1BhcnNlPXB5dGhvbjM1LlB5QXJnX1BhcnNlCi0gIFB5QXJnX1BhcnNlVHVwbGU9cHl0aG9uMzUuUHlBcmdfUGFyc2VUdXBsZQotICBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHM9cHl0aG9uMzUuUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzCi0gIFB5QXJnX1VucGFja1R1cGxlPXB5dGhvbjM1LlB5QXJnX1VucGFja1R1cGxlCi0gIFB5QXJnX1ZhUGFyc2U9cHl0aG9uMzUuUHlBcmdfVmFQYXJzZQotICBQeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkcz1weXRob24zNS5QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3JkcwotICBQeUFyZ19WYWxpZGF0ZUtleXdvcmRBcmd1bWVudHM9cHl0aG9uMzUuUHlBcmdfVmFsaWRhdGVLZXl3b3JkQXJndW1lbnRzCi0gIFB5QmFzZU9iamVjdF9UeXBlPXB5dGhvbjM1LlB5QmFzZU9iamVjdF9UeXBlIERBVEEKLSAgUHlCb29sX0Zyb21Mb25nPXB5dGhvbjM1LlB5Qm9vbF9Gcm9tTG9uZwotICBQeUJvb2xfVHlwZT1weXRob24zNS5QeUJvb2xfVHlwZSBEQVRBCi0gIFB5Qnl0ZUFycmF5SXRlcl9UeXBlPXB5dGhvbjM1LlB5Qnl0ZUFycmF5SXRlcl9UeXBlIERBVEEKLSAgUHlCeXRlQXJyYXlfQXNTdHJpbmc9cHl0aG9uMzUuUHlCeXRlQXJyYXlfQXNTdHJpbmcKLSAgUHlCeXRlQXJyYXlfQ29uY2F0PXB5dGhvbjM1LlB5Qnl0ZUFycmF5X0NvbmNhdAotICBQeUJ5dGVBcnJheV9Gcm9tT2JqZWN0PXB5dGhvbjM1LlB5Qnl0ZUFycmF5X0Zyb21PYmplY3QKLSAgUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemU9cHl0aG9uMzUuUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUKLSAgUHlCeXRlQXJyYXlfUmVzaXplPXB5dGhvbjM1LlB5Qnl0ZUFycmF5X1Jlc2l6ZQotICBQeUJ5dGVBcnJheV9TaXplPXB5dGhvbjM1LlB5Qnl0ZUFycmF5X1NpemUKLSAgUHlCeXRlQXJyYXlfVHlwZT1weXRob24zNS5QeUJ5dGVBcnJheV9UeXBlIERBVEEKLSAgUHlCeXRlc0l0ZXJfVHlwZT1weXRob24zNS5QeUJ5dGVzSXRlcl9UeXBlIERBVEEKLSAgUHlCeXRlc19Bc1N0cmluZz1weXRob24zNS5QeUJ5dGVzX0FzU3RyaW5nCi0gIFB5Qnl0ZXNfQXNTdHJpbmdBbmRTaXplPXB5dGhvbjM1LlB5Qnl0ZXNfQXNTdHJpbmdBbmRTaXplCi0gIFB5Qnl0ZXNfQ29uY2F0PXB5dGhvbjM1LlB5Qnl0ZXNfQ29uY2F0Ci0gIFB5Qnl0ZXNfQ29uY2F0QW5kRGVsPXB5dGhvbjM1LlB5Qnl0ZXNfQ29uY2F0QW5kRGVsCi0gIFB5Qnl0ZXNfRGVjb2RlRXNjYXBlPXB5dGhvbjM1LlB5Qnl0ZXNfRGVjb2RlRXNjYXBlCi0gIFB5Qnl0ZXNfRnJvbUZvcm1hdD1weXRob24zNS5QeUJ5dGVzX0Zyb21Gb3JtYXQKLSAgUHlCeXRlc19Gcm9tRm9ybWF0Vj1weXRob24zNS5QeUJ5dGVzX0Zyb21Gb3JtYXRWCi0gIFB5Qnl0ZXNfRnJvbU9iamVjdD1weXRob24zNS5QeUJ5dGVzX0Zyb21PYmplY3QKLSAgUHlCeXRlc19Gcm9tU3RyaW5nPXB5dGhvbjM1LlB5Qnl0ZXNfRnJvbVN0cmluZwotICBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplPXB5dGhvbjM1LlB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUKLSAgUHlCeXRlc19SZXByPXB5dGhvbjM1LlB5Qnl0ZXNfUmVwcgotICBQeUJ5dGVzX1NpemU9cHl0aG9uMzUuUHlCeXRlc19TaXplCi0gIFB5Qnl0ZXNfVHlwZT1weXRob24zNS5QeUJ5dGVzX1R5cGUgREFUQQotICBQeUNGdW5jdGlvbl9DYWxsPXB5dGhvbjM1LlB5Q0Z1bmN0aW9uX0NhbGwKLSAgUHlDRnVuY3Rpb25fQ2xlYXJGcmVlTGlzdD1weXRob24zNS5QeUNGdW5jdGlvbl9DbGVhckZyZWVMaXN0Ci0gIFB5Q0Z1bmN0aW9uX0dldEZsYWdzPXB5dGhvbjM1LlB5Q0Z1bmN0aW9uX0dldEZsYWdzCi0gIFB5Q0Z1bmN0aW9uX0dldEZ1bmN0aW9uPXB5dGhvbjM1LlB5Q0Z1bmN0aW9uX0dldEZ1bmN0aW9uCi0gIFB5Q0Z1bmN0aW9uX0dldFNlbGY9cHl0aG9uMzUuUHlDRnVuY3Rpb25fR2V0U2VsZgotICBQeUNGdW5jdGlvbl9OZXc9cHl0aG9uMzUuUHlDRnVuY3Rpb25fTmV3Ci0gIFB5Q0Z1bmN0aW9uX05ld0V4PXB5dGhvbjM1LlB5Q0Z1bmN0aW9uX05ld0V4Ci0gIFB5Q0Z1bmN0aW9uX1R5cGU9cHl0aG9uMzUuUHlDRnVuY3Rpb25fVHlwZSBEQVRBCi0gIFB5Q2FsbEl0ZXJfTmV3PXB5dGhvbjM1LlB5Q2FsbEl0ZXJfTmV3Ci0gIFB5Q2FsbEl0ZXJfVHlwZT1weXRob24zNS5QeUNhbGxJdGVyX1R5cGUgREFUQQotICBQeUNhbGxhYmxlX0NoZWNrPXB5dGhvbjM1LlB5Q2FsbGFibGVfQ2hlY2sKLSAgUHlDYXBzdWxlX0dldENvbnRleHQ9cHl0aG9uMzUuUHlDYXBzdWxlX0dldENvbnRleHQKLSAgUHlDYXBzdWxlX0dldERlc3RydWN0b3I9cHl0aG9uMzUuUHlDYXBzdWxlX0dldERlc3RydWN0b3IKLSAgUHlDYXBzdWxlX0dldE5hbWU9cHl0aG9uMzUuUHlDYXBzdWxlX0dldE5hbWUKLSAgUHlDYXBzdWxlX0dldFBvaW50ZXI9cHl0aG9uMzUuUHlDYXBzdWxlX0dldFBvaW50ZXIKLSAgUHlDYXBzdWxlX0ltcG9ydD1weXRob24zNS5QeUNhcHN1bGVfSW1wb3J0Ci0gIFB5Q2Fwc3VsZV9Jc1ZhbGlkPXB5dGhvbjM1LlB5Q2Fwc3VsZV9Jc1ZhbGlkCi0gIFB5Q2Fwc3VsZV9OZXc9cHl0aG9uMzUuUHlDYXBzdWxlX05ldwotICBQeUNhcHN1bGVfU2V0Q29udGV4dD1weXRob24zNS5QeUNhcHN1bGVfU2V0Q29udGV4dAotICBQeUNhcHN1bGVfU2V0RGVzdHJ1Y3Rvcj1weXRob24zNS5QeUNhcHN1bGVfU2V0RGVzdHJ1Y3RvcgotICBQeUNhcHN1bGVfU2V0TmFtZT1weXRob24zNS5QeUNhcHN1bGVfU2V0TmFtZQotICBQeUNhcHN1bGVfU2V0UG9pbnRlcj1weXRob24zNS5QeUNhcHN1bGVfU2V0UG9pbnRlcgotICBQeUNhcHN1bGVfVHlwZT1weXRob24zNS5QeUNhcHN1bGVfVHlwZSBEQVRBCi0gIFB5Q2xhc3NNZXRob2REZXNjcl9UeXBlPXB5dGhvbjM1LlB5Q2xhc3NNZXRob2REZXNjcl9UeXBlIERBVEEKLSAgUHlDb2RlY19CYWNrc2xhc2hSZXBsYWNlRXJyb3JzPXB5dGhvbjM1LlB5Q29kZWNfQmFja3NsYXNoUmVwbGFjZUVycm9ycwotICBQeUNvZGVjX0RlY29kZT1weXRob24zNS5QeUNvZGVjX0RlY29kZQotICBQeUNvZGVjX0RlY29kZXI9cHl0aG9uMzUuUHlDb2RlY19EZWNvZGVyCi0gIFB5Q29kZWNfRW5jb2RlPXB5dGhvbjM1LlB5Q29kZWNfRW5jb2RlCi0gIFB5Q29kZWNfRW5jb2Rlcj1weXRob24zNS5QeUNvZGVjX0VuY29kZXIKLSAgUHlDb2RlY19JZ25vcmVFcnJvcnM9cHl0aG9uMzUuUHlDb2RlY19JZ25vcmVFcnJvcnMKLSAgUHlDb2RlY19JbmNyZW1lbnRhbERlY29kZXI9cHl0aG9uMzUuUHlDb2RlY19JbmNyZW1lbnRhbERlY29kZXIKLSAgUHlDb2RlY19JbmNyZW1lbnRhbEVuY29kZXI9cHl0aG9uMzUuUHlDb2RlY19JbmNyZW1lbnRhbEVuY29kZXIKLSAgUHlDb2RlY19Lbm93bkVuY29kaW5nPXB5dGhvbjM1LlB5Q29kZWNfS25vd25FbmNvZGluZwotICBQeUNvZGVjX0xvb2t1cEVycm9yPXB5dGhvbjM1LlB5Q29kZWNfTG9va3VwRXJyb3IKLSAgUHlDb2RlY19SZWdpc3Rlcj1weXRob24zNS5QeUNvZGVjX1JlZ2lzdGVyCi0gIFB5Q29kZWNfUmVnaXN0ZXJFcnJvcj1weXRob24zNS5QeUNvZGVjX1JlZ2lzdGVyRXJyb3IKLSAgUHlDb2RlY19SZXBsYWNlRXJyb3JzPXB5dGhvbjM1LlB5Q29kZWNfUmVwbGFjZUVycm9ycwotICBQeUNvZGVjX1N0cmVhbVJlYWRlcj1weXRob24zNS5QeUNvZGVjX1N0cmVhbVJlYWRlcgotICBQeUNvZGVjX1N0cmVhbVdyaXRlcj1weXRob24zNS5QeUNvZGVjX1N0cmVhbVdyaXRlcgotICBQeUNvZGVjX1N0cmljdEVycm9ycz1weXRob24zNS5QeUNvZGVjX1N0cmljdEVycm9ycwotICBQeUNvZGVjX1hNTENoYXJSZWZSZXBsYWNlRXJyb3JzPXB5dGhvbjM1LlB5Q29kZWNfWE1MQ2hhclJlZlJlcGxhY2VFcnJvcnMKLSAgUHlDb21wbGV4X0Zyb21Eb3VibGVzPXB5dGhvbjM1LlB5Q29tcGxleF9Gcm9tRG91YmxlcwotICBQeUNvbXBsZXhfSW1hZ0FzRG91YmxlPXB5dGhvbjM1LlB5Q29tcGxleF9JbWFnQXNEb3VibGUKLSAgUHlDb21wbGV4X1JlYWxBc0RvdWJsZT1weXRob24zNS5QeUNvbXBsZXhfUmVhbEFzRG91YmxlCi0gIFB5Q29tcGxleF9UeXBlPXB5dGhvbjM1LlB5Q29tcGxleF9UeXBlIERBVEEKLSAgUHlEZXNjcl9OZXdDbGFzc01ldGhvZD1weXRob24zNS5QeURlc2NyX05ld0NsYXNzTWV0aG9kCi0gIFB5RGVzY3JfTmV3R2V0U2V0PXB5dGhvbjM1LlB5RGVzY3JfTmV3R2V0U2V0Ci0gIFB5RGVzY3JfTmV3TWVtYmVyPXB5dGhvbjM1LlB5RGVzY3JfTmV3TWVtYmVyCi0gIFB5RGVzY3JfTmV3TWV0aG9kPXB5dGhvbjM1LlB5RGVzY3JfTmV3TWV0aG9kCi0gIFB5RGljdEl0ZW1zX1R5cGU9cHl0aG9uMzUuUHlEaWN0SXRlbXNfVHlwZSBEQVRBCi0gIFB5RGljdEl0ZXJJdGVtX1R5cGU9cHl0aG9uMzUuUHlEaWN0SXRlckl0ZW1fVHlwZSBEQVRBCi0gIFB5RGljdEl0ZXJLZXlfVHlwZT1weXRob24zNS5QeURpY3RJdGVyS2V5X1R5cGUgREFUQQotICBQeURpY3RJdGVyVmFsdWVfVHlwZT1weXRob24zNS5QeURpY3RJdGVyVmFsdWVfVHlwZSBEQVRBCi0gIFB5RGljdEtleXNfVHlwZT1weXRob24zNS5QeURpY3RLZXlzX1R5cGUgREFUQQotICBQeURpY3RQcm94eV9OZXc9cHl0aG9uMzUuUHlEaWN0UHJveHlfTmV3Ci0gIFB5RGljdFByb3h5X1R5cGU9cHl0aG9uMzUuUHlEaWN0UHJveHlfVHlwZSBEQVRBCi0gIFB5RGljdFZhbHVlc19UeXBlPXB5dGhvbjM1LlB5RGljdFZhbHVlc19UeXBlIERBVEEKLSAgUHlEaWN0X0NsZWFyPXB5dGhvbjM1LlB5RGljdF9DbGVhcgotICBQeURpY3RfQ29udGFpbnM9cHl0aG9uMzUuUHlEaWN0X0NvbnRhaW5zCi0gIFB5RGljdF9Db3B5PXB5dGhvbjM1LlB5RGljdF9Db3B5Ci0gIFB5RGljdF9EZWxJdGVtPXB5dGhvbjM1LlB5RGljdF9EZWxJdGVtCi0gIFB5RGljdF9EZWxJdGVtU3RyaW5nPXB5dGhvbjM1LlB5RGljdF9EZWxJdGVtU3RyaW5nCi0gIFB5RGljdF9HZXRJdGVtPXB5dGhvbjM1LlB5RGljdF9HZXRJdGVtCi0gIFB5RGljdF9HZXRJdGVtU3RyaW5nPXB5dGhvbjM1LlB5RGljdF9HZXRJdGVtU3RyaW5nCi0gIFB5RGljdF9HZXRJdGVtV2l0aEVycm9yPXB5dGhvbjM1LlB5RGljdF9HZXRJdGVtV2l0aEVycm9yCi0gIFB5RGljdF9JdGVtcz1weXRob24zNS5QeURpY3RfSXRlbXMKLSAgUHlEaWN0X0tleXM9cHl0aG9uMzUuUHlEaWN0X0tleXMKLSAgUHlEaWN0X01lcmdlPXB5dGhvbjM1LlB5RGljdF9NZXJnZQotICBQeURpY3RfTWVyZ2VGcm9tU2VxMj1weXRob24zNS5QeURpY3RfTWVyZ2VGcm9tU2VxMgotICBQeURpY3RfTmV3PXB5dGhvbjM1LlB5RGljdF9OZXcKLSAgUHlEaWN0X05leHQ9cHl0aG9uMzUuUHlEaWN0X05leHQKLSAgUHlEaWN0X1NldEl0ZW09cHl0aG9uMzUuUHlEaWN0X1NldEl0ZW0KLSAgUHlEaWN0X1NldEl0ZW1TdHJpbmc9cHl0aG9uMzUuUHlEaWN0X1NldEl0ZW1TdHJpbmcKLSAgUHlEaWN0X1NpemU9cHl0aG9uMzUuUHlEaWN0X1NpemUKLSAgUHlEaWN0X1R5cGU9cHl0aG9uMzUuUHlEaWN0X1R5cGUgREFUQQotICBQeURpY3RfVXBkYXRlPXB5dGhvbjM1LlB5RGljdF9VcGRhdGUKLSAgUHlEaWN0X1ZhbHVlcz1weXRob24zNS5QeURpY3RfVmFsdWVzCi0gIFB5RWxsaXBzaXNfVHlwZT1weXRob24zNS5QeUVsbGlwc2lzX1R5cGUgREFUQQotICBQeUVudW1fVHlwZT1weXRob24zNS5QeUVudW1fVHlwZSBEQVRBCi0gIFB5RXJyX0JhZEFyZ3VtZW50PXB5dGhvbjM1LlB5RXJyX0JhZEFyZ3VtZW50Ci0gIFB5RXJyX0JhZEludGVybmFsQ2FsbD1weXRob24zNS5QeUVycl9CYWRJbnRlcm5hbENhbGwKLSAgUHlFcnJfQ2hlY2tTaWduYWxzPXB5dGhvbjM1LlB5RXJyX0NoZWNrU2lnbmFscwotICBQeUVycl9DbGVhcj1weXRob24zNS5QeUVycl9DbGVhcgotICBQeUVycl9EaXNwbGF5PXB5dGhvbjM1LlB5RXJyX0Rpc3BsYXkKLSAgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcz1weXRob24zNS5QeUVycl9FeGNlcHRpb25NYXRjaGVzCi0gIFB5RXJyX0ZldGNoPXB5dGhvbjM1LlB5RXJyX0ZldGNoCi0gIFB5RXJyX0Zvcm1hdD1weXRob24zNS5QeUVycl9Gb3JtYXQKLSAgUHlFcnJfRm9ybWF0Vj1weXRob24zNS5QeUVycl9Gb3JtYXRWCi0gIFB5RXJyX0dpdmVuRXhjZXB0aW9uTWF0Y2hlcz1weXRob24zNS5QeUVycl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXMKLSAgUHlFcnJfTmV3RXhjZXB0aW9uPXB5dGhvbjM1LlB5RXJyX05ld0V4Y2VwdGlvbgotICBQeUVycl9OZXdFeGNlcHRpb25XaXRoRG9jPXB5dGhvbjM1LlB5RXJyX05ld0V4Y2VwdGlvbldpdGhEb2MKLSAgUHlFcnJfTm9NZW1vcnk9cHl0aG9uMzUuUHlFcnJfTm9NZW1vcnkKLSAgUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uPXB5dGhvbjM1LlB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbgotICBQeUVycl9PY2N1cnJlZD1weXRob24zNS5QeUVycl9PY2N1cnJlZAotICBQeUVycl9QcmludD1weXRob24zNS5QeUVycl9QcmludAotICBQeUVycl9QcmludEV4PXB5dGhvbjM1LlB5RXJyX1ByaW50RXgKLSAgUHlFcnJfUHJvZ3JhbVRleHQ9cHl0aG9uMzUuUHlFcnJfUHJvZ3JhbVRleHQKLSAgUHlFcnJfUmVzdG9yZT1weXRob24zNS5QeUVycl9SZXN0b3JlCi0gIFB5RXJyX1NldEZyb21FcnJubz1weXRob24zNS5QeUVycl9TZXRGcm9tRXJybm8KLSAgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lPXB5dGhvbjM1LlB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZQotICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3Q9cHl0aG9uMzUuUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0Ci0gIFB5RXJyX1NldEludGVycnVwdD1weXRob24zNS5QeUVycl9TZXRJbnRlcnJ1cHQKLSAgUHlFcnJfU2V0Tm9uZT1weXRob24zNS5QeUVycl9TZXROb25lCi0gIFB5RXJyX1NldE9iamVjdD1weXRob24zNS5QeUVycl9TZXRPYmplY3QKLSAgUHlFcnJfU2V0U3RyaW5nPXB5dGhvbjM1LlB5RXJyX1NldFN0cmluZwotICBQeUVycl9TeW50YXhMb2NhdGlvbj1weXRob24zNS5QeUVycl9TeW50YXhMb2NhdGlvbgotICBQeUVycl9XYXJuRXg9cHl0aG9uMzUuUHlFcnJfV2FybkV4Ci0gIFB5RXJyX1dhcm5FeHBsaWNpdD1weXRob24zNS5QeUVycl9XYXJuRXhwbGljaXQKLSAgUHlFcnJfV2FybkZvcm1hdD1weXRob24zNS5QeUVycl9XYXJuRm9ybWF0Ci0gIFB5RXJyX1dyaXRlVW5yYWlzYWJsZT1weXRob24zNS5QeUVycl9Xcml0ZVVucmFpc2FibGUKLSAgUHlFdmFsX0FjcXVpcmVMb2NrPXB5dGhvbjM1LlB5RXZhbF9BY3F1aXJlTG9jawotICBQeUV2YWxfQWNxdWlyZVRocmVhZD1weXRob24zNS5QeUV2YWxfQWNxdWlyZVRocmVhZAotICBQeUV2YWxfQ2FsbEZ1bmN0aW9uPXB5dGhvbjM1LlB5RXZhbF9DYWxsRnVuY3Rpb24KLSAgUHlFdmFsX0NhbGxNZXRob2Q9cHl0aG9uMzUuUHlFdmFsX0NhbGxNZXRob2QKLSAgUHlFdmFsX0NhbGxPYmplY3RXaXRoS2V5d29yZHM9cHl0aG9uMzUuUHlFdmFsX0NhbGxPYmplY3RXaXRoS2V5d29yZHMKLSAgUHlFdmFsX0V2YWxDb2RlPXB5dGhvbjM1LlB5RXZhbF9FdmFsQ29kZQotICBQeUV2YWxfRXZhbENvZGVFeD1weXRob24zNS5QeUV2YWxfRXZhbENvZGVFeAotICBQeUV2YWxfRXZhbEZyYW1lPXB5dGhvbjM1LlB5RXZhbF9FdmFsRnJhbWUKLSAgUHlFdmFsX0V2YWxGcmFtZUV4PXB5dGhvbjM1LlB5RXZhbF9FdmFsRnJhbWVFeAotICBQeUV2YWxfR2V0QnVpbHRpbnM9cHl0aG9uMzUuUHlFdmFsX0dldEJ1aWx0aW5zCi0gIFB5RXZhbF9HZXRDYWxsU3RhdHM9cHl0aG9uMzUuUHlFdmFsX0dldENhbGxTdGF0cwotICBQeUV2YWxfR2V0RnJhbWU9cHl0aG9uMzUuUHlFdmFsX0dldEZyYW1lCi0gIFB5RXZhbF9HZXRGdW5jRGVzYz1weXRob24zNS5QeUV2YWxfR2V0RnVuY0Rlc2MKLSAgUHlFdmFsX0dldEZ1bmNOYW1lPXB5dGhvbjM1LlB5RXZhbF9HZXRGdW5jTmFtZQotICBQeUV2YWxfR2V0R2xvYmFscz1weXRob24zNS5QeUV2YWxfR2V0R2xvYmFscwotICBQeUV2YWxfR2V0TG9jYWxzPXB5dGhvbjM1LlB5RXZhbF9HZXRMb2NhbHMKLSAgUHlFdmFsX0luaXRUaHJlYWRzPXB5dGhvbjM1LlB5RXZhbF9Jbml0VGhyZWFkcwotICBQeUV2YWxfUmVJbml0VGhyZWFkcz1weXRob24zNS5QeUV2YWxfUmVJbml0VGhyZWFkcwotICBQeUV2YWxfUmVsZWFzZUxvY2s9cHl0aG9uMzUuUHlFdmFsX1JlbGVhc2VMb2NrCi0gIFB5RXZhbF9SZWxlYXNlVGhyZWFkPXB5dGhvbjM1LlB5RXZhbF9SZWxlYXNlVGhyZWFkCi0gIFB5RXZhbF9SZXN0b3JlVGhyZWFkPXB5dGhvbjM1LlB5RXZhbF9SZXN0b3JlVGhyZWFkCi0gIFB5RXZhbF9TYXZlVGhyZWFkPXB5dGhvbjM1LlB5RXZhbF9TYXZlVGhyZWFkCi0gIFB5RXZhbF9UaHJlYWRzSW5pdGlhbGl6ZWQ9cHl0aG9uMzUuUHlFdmFsX1RocmVhZHNJbml0aWFsaXplZAotICBQeUV4Y19Bcml0aG1ldGljRXJyb3I9cHl0aG9uMzUuUHlFeGNfQXJpdGhtZXRpY0Vycm9yIERBVEEKLSAgUHlFeGNfQXNzZXJ0aW9uRXJyb3I9cHl0aG9uMzUuUHlFeGNfQXNzZXJ0aW9uRXJyb3IgREFUQQotICBQeUV4Y19BdHRyaWJ1dGVFcnJvcj1weXRob24zNS5QeUV4Y19BdHRyaWJ1dGVFcnJvciBEQVRBCi0gIFB5RXhjX0Jhc2VFeGNlcHRpb249cHl0aG9uMzUuUHlFeGNfQmFzZUV4Y2VwdGlvbiBEQVRBCi0gIFB5RXhjX0J1ZmZlckVycm9yPXB5dGhvbjM1LlB5RXhjX0J1ZmZlckVycm9yIERBVEEKLSAgUHlFeGNfQnl0ZXNXYXJuaW5nPXB5dGhvbjM1LlB5RXhjX0J5dGVzV2FybmluZyBEQVRBCi0gIFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZz1weXRob24zNS5QeUV4Y19EZXByZWNhdGlvbldhcm5pbmcgREFUQQotICBQeUV4Y19FT0ZFcnJvcj1weXRob24zNS5QeUV4Y19FT0ZFcnJvciBEQVRBCi0gIFB5RXhjX0Vudmlyb25tZW50RXJyb3I9cHl0aG9uMzUuUHlFeGNfRW52aXJvbm1lbnRFcnJvciBEQVRBCi0gIFB5RXhjX0V4Y2VwdGlvbj1weXRob24zNS5QeUV4Y19FeGNlcHRpb24gREFUQQotICBQeUV4Y19GbG9hdGluZ1BvaW50RXJyb3I9cHl0aG9uMzUuUHlFeGNfRmxvYXRpbmdQb2ludEVycm9yIERBVEEKLSAgUHlFeGNfRnV0dXJlV2FybmluZz1weXRob24zNS5QeUV4Y19GdXR1cmVXYXJuaW5nIERBVEEKLSAgUHlFeGNfR2VuZXJhdG9yRXhpdD1weXRob24zNS5QeUV4Y19HZW5lcmF0b3JFeGl0IERBVEEKLSAgUHlFeGNfSU9FcnJvcj1weXRob24zNS5QeUV4Y19JT0Vycm9yIERBVEEKLSAgUHlFeGNfSW1wb3J0RXJyb3I9cHl0aG9uMzUuUHlFeGNfSW1wb3J0RXJyb3IgREFUQQotICBQeUV4Y19JbXBvcnRXYXJuaW5nPXB5dGhvbjM1LlB5RXhjX0ltcG9ydFdhcm5pbmcgREFUQQotICBQeUV4Y19JbmRlbnRhdGlvbkVycm9yPXB5dGhvbjM1LlB5RXhjX0luZGVudGF0aW9uRXJyb3IgREFUQQotICBQeUV4Y19JbmRleEVycm9yPXB5dGhvbjM1LlB5RXhjX0luZGV4RXJyb3IgREFUQQotICBQeUV4Y19LZXlFcnJvcj1weXRob24zNS5QeUV4Y19LZXlFcnJvciBEQVRBCi0gIFB5RXhjX0tleWJvYXJkSW50ZXJydXB0PXB5dGhvbjM1LlB5RXhjX0tleWJvYXJkSW50ZXJydXB0IERBVEEKLSAgUHlFeGNfTG9va3VwRXJyb3I9cHl0aG9uMzUuUHlFeGNfTG9va3VwRXJyb3IgREFUQQotICBQeUV4Y19NZW1vcnlFcnJvcj1weXRob24zNS5QeUV4Y19NZW1vcnlFcnJvciBEQVRBCi0gIFB5RXhjX01lbW9yeUVycm9ySW5zdD1weXRob24zNS5QeUV4Y19NZW1vcnlFcnJvckluc3QgREFUQQotICBQeUV4Y19OYW1lRXJyb3I9cHl0aG9uMzUuUHlFeGNfTmFtZUVycm9yIERBVEEKLSAgUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvcj1weXRob24zNS5QeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yIERBVEEKLSAgUHlFeGNfT1NFcnJvcj1weXRob24zNS5QeUV4Y19PU0Vycm9yIERBVEEKLSAgUHlFeGNfT3ZlcmZsb3dFcnJvcj1weXRob24zNS5QeUV4Y19PdmVyZmxvd0Vycm9yIERBVEEKLSAgUHlFeGNfUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZz1weXRob24zNS5QeUV4Y19QZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nIERBVEEKLSAgUHlFeGNfUmVjdXJzaW9uRXJyb3JJbnN0PXB5dGhvbjM1LlB5RXhjX1JlY3Vyc2lvbkVycm9ySW5zdCBEQVRBCi0gIFB5RXhjX1JlZmVyZW5jZUVycm9yPXB5dGhvbjM1LlB5RXhjX1JlZmVyZW5jZUVycm9yIERBVEEKLSAgUHlFeGNfUnVudGltZUVycm9yPXB5dGhvbjM1LlB5RXhjX1J1bnRpbWVFcnJvciBEQVRBCi0gIFB5RXhjX1J1bnRpbWVXYXJuaW5nPXB5dGhvbjM1LlB5RXhjX1J1bnRpbWVXYXJuaW5nIERBVEEKLSAgUHlFeGNfU3RvcEl0ZXJhdGlvbj1weXRob24zNS5QeUV4Y19TdG9wSXRlcmF0aW9uIERBVEEKLSAgUHlFeGNfU3ludGF4RXJyb3I9cHl0aG9uMzUuUHlFeGNfU3ludGF4RXJyb3IgREFUQQotICBQeUV4Y19TeW50YXhXYXJuaW5nPXB5dGhvbjM1LlB5RXhjX1N5bnRheFdhcm5pbmcgREFUQQotICBQeUV4Y19TeXN0ZW1FcnJvcj1weXRob24zNS5QeUV4Y19TeXN0ZW1FcnJvciBEQVRBCi0gIFB5RXhjX1N5c3RlbUV4aXQ9cHl0aG9uMzUuUHlFeGNfU3lzdGVtRXhpdCBEQVRBCi0gIFB5RXhjX1RhYkVycm9yPXB5dGhvbjM1LlB5RXhjX1RhYkVycm9yIERBVEEKLSAgUHlFeGNfVHlwZUVycm9yPXB5dGhvbjM1LlB5RXhjX1R5cGVFcnJvciBEQVRBCi0gIFB5RXhjX1VuYm91bmRMb2NhbEVycm9yPXB5dGhvbjM1LlB5RXhjX1VuYm91bmRMb2NhbEVycm9yIERBVEEKLSAgUHlFeGNfVW5pY29kZURlY29kZUVycm9yPXB5dGhvbjM1LlB5RXhjX1VuaWNvZGVEZWNvZGVFcnJvciBEQVRBCi0gIFB5RXhjX1VuaWNvZGVFbmNvZGVFcnJvcj1weXRob24zNS5QeUV4Y19Vbmljb2RlRW5jb2RlRXJyb3IgREFUQQotICBQeUV4Y19Vbmljb2RlRXJyb3I9cHl0aG9uMzUuUHlFeGNfVW5pY29kZUVycm9yIERBVEEKLSAgUHlFeGNfVW5pY29kZVRyYW5zbGF0ZUVycm9yPXB5dGhvbjM1LlB5RXhjX1VuaWNvZGVUcmFuc2xhdGVFcnJvciBEQVRBCi0gIFB5RXhjX1VuaWNvZGVXYXJuaW5nPXB5dGhvbjM1LlB5RXhjX1VuaWNvZGVXYXJuaW5nIERBVEEKLSAgUHlFeGNfVXNlcldhcm5pbmc9cHl0aG9uMzUuUHlFeGNfVXNlcldhcm5pbmcgREFUQQotICBQeUV4Y19WYWx1ZUVycm9yPXB5dGhvbjM1LlB5RXhjX1ZhbHVlRXJyb3IgREFUQQotICBQeUV4Y19XYXJuaW5nPXB5dGhvbjM1LlB5RXhjX1dhcm5pbmcgREFUQQotICBQeUV4Y19aZXJvRGl2aXNpb25FcnJvcj1weXRob24zNS5QeUV4Y19aZXJvRGl2aXNpb25FcnJvciBEQVRBCi0gIFB5RXhjZXB0aW9uX0dldENhdXNlPXB5dGhvbjM1LlB5RXhjZXB0aW9uX0dldENhdXNlCi0gIFB5RXhjZXB0aW9uX0dldENvbnRleHQ9cHl0aG9uMzUuUHlFeGNlcHRpb25fR2V0Q29udGV4dAotICBQeUV4Y2VwdGlvbl9HZXRUcmFjZWJhY2s9cHl0aG9uMzUuUHlFeGNlcHRpb25fR2V0VHJhY2ViYWNrCi0gIFB5RXhjZXB0aW9uX1NldENhdXNlPXB5dGhvbjM1LlB5RXhjZXB0aW9uX1NldENhdXNlCi0gIFB5RXhjZXB0aW9uX1NldENvbnRleHQ9cHl0aG9uMzUuUHlFeGNlcHRpb25fU2V0Q29udGV4dAotICBQeUV4Y2VwdGlvbl9TZXRUcmFjZWJhY2s9cHl0aG9uMzUuUHlFeGNlcHRpb25fU2V0VHJhY2ViYWNrCi0gIFB5RmlsZV9Gcm9tRmQ9cHl0aG9uMzUuUHlGaWxlX0Zyb21GZAotICBQeUZpbGVfR2V0TGluZT1weXRob24zNS5QeUZpbGVfR2V0TGluZQotICBQeUZpbGVfV3JpdGVPYmplY3Q9cHl0aG9uMzUuUHlGaWxlX1dyaXRlT2JqZWN0Ci0gIFB5RmlsZV9Xcml0ZVN0cmluZz1weXRob24zNS5QeUZpbGVfV3JpdGVTdHJpbmcKLSAgUHlGaWx0ZXJfVHlwZT1weXRob24zNS5QeUZpbHRlcl9UeXBlIERBVEEKLSAgUHlGbG9hdF9Bc0RvdWJsZT1weXRob24zNS5QeUZsb2F0X0FzRG91YmxlCi0gIFB5RmxvYXRfRnJvbURvdWJsZT1weXRob24zNS5QeUZsb2F0X0Zyb21Eb3VibGUKLSAgUHlGbG9hdF9Gcm9tU3RyaW5nPXB5dGhvbjM1LlB5RmxvYXRfRnJvbVN0cmluZwotICBQeUZsb2F0X0dldEluZm89cHl0aG9uMzUuUHlGbG9hdF9HZXRJbmZvCi0gIFB5RmxvYXRfR2V0TWF4PXB5dGhvbjM1LlB5RmxvYXRfR2V0TWF4Ci0gIFB5RmxvYXRfR2V0TWluPXB5dGhvbjM1LlB5RmxvYXRfR2V0TWluCi0gIFB5RmxvYXRfVHlwZT1weXRob24zNS5QeUZsb2F0X1R5cGUgREFUQQotICBQeUZyb3plblNldF9OZXc9cHl0aG9uMzUuUHlGcm96ZW5TZXRfTmV3Ci0gIFB5RnJvemVuU2V0X1R5cGU9cHl0aG9uMzUuUHlGcm96ZW5TZXRfVHlwZSBEQVRBCi0gIFB5R0NfQ29sbGVjdD1weXRob24zNS5QeUdDX0NvbGxlY3QKLSAgUHlHSUxTdGF0ZV9FbnN1cmU9cHl0aG9uMzUuUHlHSUxTdGF0ZV9FbnN1cmUKLSAgUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGU9cHl0aG9uMzUuUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUKLSAgUHlHSUxTdGF0ZV9SZWxlYXNlPXB5dGhvbjM1LlB5R0lMU3RhdGVfUmVsZWFzZQotICBQeUdldFNldERlc2NyX1R5cGU9cHl0aG9uMzUuUHlHZXRTZXREZXNjcl9UeXBlIERBVEEKLSAgUHlJbXBvcnRfQWRkTW9kdWxlPXB5dGhvbjM1LlB5SW1wb3J0X0FkZE1vZHVsZQotICBQeUltcG9ydF9BcHBlbmRJbml0dGFiPXB5dGhvbjM1LlB5SW1wb3J0X0FwcGVuZEluaXR0YWIKLSAgUHlJbXBvcnRfQ2xlYW51cD1weXRob24zNS5QeUltcG9ydF9DbGVhbnVwCi0gIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlPXB5dGhvbjM1LlB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlCi0gIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlRXg9cHl0aG9uMzUuUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVFeAotICBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhQYXRobmFtZXM9cHl0aG9uMzUuUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzCi0gIFB5SW1wb3J0X0dldEltcG9ydGVyPXB5dGhvbjM1LlB5SW1wb3J0X0dldEltcG9ydGVyCi0gIFB5SW1wb3J0X0dldE1hZ2ljTnVtYmVyPXB5dGhvbjM1LlB5SW1wb3J0X0dldE1hZ2ljTnVtYmVyCi0gIFB5SW1wb3J0X0dldE1hZ2ljVGFnPXB5dGhvbjM1LlB5SW1wb3J0X0dldE1hZ2ljVGFnCi0gIFB5SW1wb3J0X0dldE1vZHVsZURpY3Q9cHl0aG9uMzUuUHlJbXBvcnRfR2V0TW9kdWxlRGljdAotICBQeUltcG9ydF9JbXBvcnQ9cHl0aG9uMzUuUHlJbXBvcnRfSW1wb3J0Ci0gIFB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZT1weXRob24zNS5QeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGUKLSAgUHlJbXBvcnRfSW1wb3J0TW9kdWxlPXB5dGhvbjM1LlB5SW1wb3J0X0ltcG9ydE1vZHVsZQotICBQeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbD1weXRob24zNS5QeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbAotICBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrPXB5dGhvbjM1LlB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2sKLSAgUHlJbXBvcnRfUmVsb2FkTW9kdWxlPXB5dGhvbjM1LlB5SW1wb3J0X1JlbG9hZE1vZHVsZQotICBQeUludGVycHJldGVyU3RhdGVfQ2xlYXI9cHl0aG9uMzUuUHlJbnRlcnByZXRlclN0YXRlX0NsZWFyCi0gIFB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGU9cHl0aG9uMzUuUHlJbnRlcnByZXRlclN0YXRlX0RlbGV0ZQotICBQeUludGVycHJldGVyU3RhdGVfTmV3PXB5dGhvbjM1LlB5SW50ZXJwcmV0ZXJTdGF0ZV9OZXcKLSAgUHlJdGVyX05leHQ9cHl0aG9uMzUuUHlJdGVyX05leHQKLSAgUHlMaXN0SXRlcl9UeXBlPXB5dGhvbjM1LlB5TGlzdEl0ZXJfVHlwZSBEQVRBCi0gIFB5TGlzdFJldkl0ZXJfVHlwZT1weXRob24zNS5QeUxpc3RSZXZJdGVyX1R5cGUgREFUQQotICBQeUxpc3RfQXBwZW5kPXB5dGhvbjM1LlB5TGlzdF9BcHBlbmQKLSAgUHlMaXN0X0FzVHVwbGU9cHl0aG9uMzUuUHlMaXN0X0FzVHVwbGUKLSAgUHlMaXN0X0dldEl0ZW09cHl0aG9uMzUuUHlMaXN0X0dldEl0ZW0KLSAgUHlMaXN0X0dldFNsaWNlPXB5dGhvbjM1LlB5TGlzdF9HZXRTbGljZQotICBQeUxpc3RfSW5zZXJ0PXB5dGhvbjM1LlB5TGlzdF9JbnNlcnQKLSAgUHlMaXN0X05ldz1weXRob24zNS5QeUxpc3RfTmV3Ci0gIFB5TGlzdF9SZXZlcnNlPXB5dGhvbjM1LlB5TGlzdF9SZXZlcnNlCi0gIFB5TGlzdF9TZXRJdGVtPXB5dGhvbjM1LlB5TGlzdF9TZXRJdGVtCi0gIFB5TGlzdF9TZXRTbGljZT1weXRob24zNS5QeUxpc3RfU2V0U2xpY2UKLSAgUHlMaXN0X1NpemU9cHl0aG9uMzUuUHlMaXN0X1NpemUKLSAgUHlMaXN0X1NvcnQ9cHl0aG9uMzUuUHlMaXN0X1NvcnQKLSAgUHlMaXN0X1R5cGU9cHl0aG9uMzUuUHlMaXN0X1R5cGUgREFUQQotICBQeUxvbmdSYW5nZUl0ZXJfVHlwZT1weXRob24zNS5QeUxvbmdSYW5nZUl0ZXJfVHlwZSBEQVRBCi0gIFB5TG9uZ19Bc0RvdWJsZT1weXRob24zNS5QeUxvbmdfQXNEb3VibGUKLSAgUHlMb25nX0FzTG9uZz1weXRob24zNS5QeUxvbmdfQXNMb25nCi0gIFB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdz1weXRob24zNS5QeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3cKLSAgUHlMb25nX0FzTG9uZ0xvbmc9cHl0aG9uMzUuUHlMb25nX0FzTG9uZ0xvbmcKLSAgUHlMb25nX0FzTG9uZ0xvbmdBbmRPdmVyZmxvdz1weXRob24zNS5QeUxvbmdfQXNMb25nTG9uZ0FuZE92ZXJmbG93Ci0gIFB5TG9uZ19Bc1NpemVfdD1weXRob24zNS5QeUxvbmdfQXNTaXplX3QKLSAgUHlMb25nX0FzU3NpemVfdD1weXRob24zNS5QeUxvbmdfQXNTc2l6ZV90Ci0gIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZz1weXRob24zNS5QeUxvbmdfQXNVbnNpZ25lZExvbmcKLSAgUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZz1weXRob24zNS5QeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nCi0gIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrPXB5dGhvbjM1LlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrCi0gIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ01hc2s9cHl0aG9uMzUuUHlMb25nX0FzVW5zaWduZWRMb25nTWFzawotICBQeUxvbmdfQXNWb2lkUHRyPXB5dGhvbjM1LlB5TG9uZ19Bc1ZvaWRQdHIKLSAgUHlMb25nX0Zyb21Eb3VibGU9cHl0aG9uMzUuUHlMb25nX0Zyb21Eb3VibGUKLSAgUHlMb25nX0Zyb21Mb25nPXB5dGhvbjM1LlB5TG9uZ19Gcm9tTG9uZwotICBQeUxvbmdfRnJvbUxvbmdMb25nPXB5dGhvbjM1LlB5TG9uZ19Gcm9tTG9uZ0xvbmcKLSAgUHlMb25nX0Zyb21TaXplX3Q9cHl0aG9uMzUuUHlMb25nX0Zyb21TaXplX3QKLSAgUHlMb25nX0Zyb21Tc2l6ZV90PXB5dGhvbjM1LlB5TG9uZ19Gcm9tU3NpemVfdAotICBQeUxvbmdfRnJvbVN0cmluZz1weXRob24zNS5QeUxvbmdfRnJvbVN0cmluZwotICBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZz1weXRob24zNS5QeUxvbmdfRnJvbVVuc2lnbmVkTG9uZwotICBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmc9cHl0aG9uMzUuUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nCi0gIFB5TG9uZ19Gcm9tVm9pZFB0cj1weXRob24zNS5QeUxvbmdfRnJvbVZvaWRQdHIKLSAgUHlMb25nX0dldEluZm89cHl0aG9uMzUuUHlMb25nX0dldEluZm8KLSAgUHlMb25nX1R5cGU9cHl0aG9uMzUuUHlMb25nX1R5cGUgREFUQQotICBQeU1hcF9UeXBlPXB5dGhvbjM1LlB5TWFwX1R5cGUgREFUQQotICBQeU1hcHBpbmdfQ2hlY2s9cHl0aG9uMzUuUHlNYXBwaW5nX0NoZWNrCi0gIFB5TWFwcGluZ19HZXRJdGVtU3RyaW5nPXB5dGhvbjM1LlB5TWFwcGluZ19HZXRJdGVtU3RyaW5nCi0gIFB5TWFwcGluZ19IYXNLZXk9cHl0aG9uMzUuUHlNYXBwaW5nX0hhc0tleQotICBQeU1hcHBpbmdfSGFzS2V5U3RyaW5nPXB5dGhvbjM1LlB5TWFwcGluZ19IYXNLZXlTdHJpbmcKLSAgUHlNYXBwaW5nX0l0ZW1zPXB5dGhvbjM1LlB5TWFwcGluZ19JdGVtcwotICBQeU1hcHBpbmdfS2V5cz1weXRob24zNS5QeU1hcHBpbmdfS2V5cwotICBQeU1hcHBpbmdfTGVuZ3RoPXB5dGhvbjM1LlB5TWFwcGluZ19MZW5ndGgKLSAgUHlNYXBwaW5nX1NldEl0ZW1TdHJpbmc9cHl0aG9uMzUuUHlNYXBwaW5nX1NldEl0ZW1TdHJpbmcKLSAgUHlNYXBwaW5nX1NpemU9cHl0aG9uMzUuUHlNYXBwaW5nX1NpemUKLSAgUHlNYXBwaW5nX1ZhbHVlcz1weXRob24zNS5QeU1hcHBpbmdfVmFsdWVzCi0gIFB5TWVtX0ZyZWU9cHl0aG9uMzUuUHlNZW1fRnJlZQotICBQeU1lbV9NYWxsb2M9cHl0aG9uMzUuUHlNZW1fTWFsbG9jCi0gIFB5TWVtX1JlYWxsb2M9cHl0aG9uMzUuUHlNZW1fUmVhbGxvYwotICBQeU1lbWJlckRlc2NyX1R5cGU9cHl0aG9uMzUuUHlNZW1iZXJEZXNjcl9UeXBlIERBVEEKLSAgUHlNZW1vcnlWaWV3X0Zyb21PYmplY3Q9cHl0aG9uMzUuUHlNZW1vcnlWaWV3X0Zyb21PYmplY3QKLSAgUHlNZW1vcnlWaWV3X0dldENvbnRpZ3VvdXM9cHl0aG9uMzUuUHlNZW1vcnlWaWV3X0dldENvbnRpZ3VvdXMKLSAgUHlNZW1vcnlWaWV3X1R5cGU9cHl0aG9uMzUuUHlNZW1vcnlWaWV3X1R5cGUgREFUQQotICBQeU1ldGhvZERlc2NyX1R5cGU9cHl0aG9uMzUuUHlNZXRob2REZXNjcl9UeXBlIERBVEEKLSAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQ9cHl0aG9uMzUuUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQKLSAgUHlNb2R1bGVfQWRkT2JqZWN0PXB5dGhvbjM1LlB5TW9kdWxlX0FkZE9iamVjdAotICBQeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudD1weXRob24zNS5QeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudAotICBQeU1vZHVsZV9DcmVhdGUyPXB5dGhvbjM1LlB5TW9kdWxlX0NyZWF0ZTIKLSAgUHlNb2R1bGVfR2V0RGVmPXB5dGhvbjM1LlB5TW9kdWxlX0dldERlZgotICBQeU1vZHVsZV9HZXREaWN0PXB5dGhvbjM1LlB5TW9kdWxlX0dldERpY3QKLSAgUHlNb2R1bGVfR2V0RmlsZW5hbWU9cHl0aG9uMzUuUHlNb2R1bGVfR2V0RmlsZW5hbWUKLSAgUHlNb2R1bGVfR2V0RmlsZW5hbWVPYmplY3Q9cHl0aG9uMzUuUHlNb2R1bGVfR2V0RmlsZW5hbWVPYmplY3QKLSAgUHlNb2R1bGVfR2V0TmFtZT1weXRob24zNS5QeU1vZHVsZV9HZXROYW1lCi0gIFB5TW9kdWxlX0dldFN0YXRlPXB5dGhvbjM1LlB5TW9kdWxlX0dldFN0YXRlCi0gIFB5TW9kdWxlX05ldz1weXRob24zNS5QeU1vZHVsZV9OZXcKLSAgUHlNb2R1bGVfVHlwZT1weXRob24zNS5QeU1vZHVsZV9UeXBlIERBVEEKLSAgUHlNb2R1bGVEZWZfSW5pdD1weXRob24zNS5QeU1vZHVsZURlZl9Jbml0Ci0gIFB5TW9kdWxlRGVmX1R5cGU9cHl0aG9uMzUuUHlNb2R1bGVEZWZfVHlwZSBEQVRBCi0gIFB5TnVsbEltcG9ydGVyX1R5cGU9cHl0aG9uMzUuUHlOdWxsSW1wb3J0ZXJfVHlwZSBEQVRBCi0gIFB5TnVtYmVyX0Fic29sdXRlPXB5dGhvbjM1LlB5TnVtYmVyX0Fic29sdXRlCi0gIFB5TnVtYmVyX0FkZD1weXRob24zNS5QeU51bWJlcl9BZGQKLSAgUHlOdW1iZXJfQW5kPXB5dGhvbjM1LlB5TnVtYmVyX0FuZAotICBQeU51bWJlcl9Bc1NzaXplX3Q9cHl0aG9uMzUuUHlOdW1iZXJfQXNTc2l6ZV90Ci0gIFB5TnVtYmVyX0NoZWNrPXB5dGhvbjM1LlB5TnVtYmVyX0NoZWNrCi0gIFB5TnVtYmVyX0Rpdm1vZD1weXRob24zNS5QeU51bWJlcl9EaXZtb2QKLSAgUHlOdW1iZXJfRmxvYXQ9cHl0aG9uMzUuUHlOdW1iZXJfRmxvYXQKLSAgUHlOdW1iZXJfRmxvb3JEaXZpZGU9cHl0aG9uMzUuUHlOdW1iZXJfRmxvb3JEaXZpZGUKLSAgUHlOdW1iZXJfSW5QbGFjZUFkZD1weXRob24zNS5QeU51bWJlcl9JblBsYWNlQWRkCi0gIFB5TnVtYmVyX0luUGxhY2VBbmQ9cHl0aG9uMzUuUHlOdW1iZXJfSW5QbGFjZUFuZAotICBQeU51bWJlcl9JblBsYWNlRmxvb3JEaXZpZGU9cHl0aG9uMzUuUHlOdW1iZXJfSW5QbGFjZUZsb29yRGl2aWRlCi0gIFB5TnVtYmVyX0luUGxhY2VMc2hpZnQ9cHl0aG9uMzUuUHlOdW1iZXJfSW5QbGFjZUxzaGlmdAotICBQeU51bWJlcl9JblBsYWNlTXVsdGlwbHk9cHl0aG9uMzUuUHlOdW1iZXJfSW5QbGFjZU11bHRpcGx5Ci0gIFB5TnVtYmVyX0luUGxhY2VPcj1weXRob24zNS5QeU51bWJlcl9JblBsYWNlT3IKLSAgUHlOdW1iZXJfSW5QbGFjZVBvd2VyPXB5dGhvbjM1LlB5TnVtYmVyX0luUGxhY2VQb3dlcgotICBQeU51bWJlcl9JblBsYWNlUmVtYWluZGVyPXB5dGhvbjM1LlB5TnVtYmVyX0luUGxhY2VSZW1haW5kZXIKLSAgUHlOdW1iZXJfSW5QbGFjZVJzaGlmdD1weXRob24zNS5QeU51bWJlcl9JblBsYWNlUnNoaWZ0Ci0gIFB5TnVtYmVyX0luUGxhY2VTdWJ0cmFjdD1weXRob24zNS5QeU51bWJlcl9JblBsYWNlU3VidHJhY3QKLSAgUHlOdW1iZXJfSW5QbGFjZVRydWVEaXZpZGU9cHl0aG9uMzUuUHlOdW1iZXJfSW5QbGFjZVRydWVEaXZpZGUKLSAgUHlOdW1iZXJfSW5QbGFjZVhvcj1weXRob24zNS5QeU51bWJlcl9JblBsYWNlWG9yCi0gIFB5TnVtYmVyX0luZGV4PXB5dGhvbjM1LlB5TnVtYmVyX0luZGV4Ci0gIFB5TnVtYmVyX0ludmVydD1weXRob24zNS5QeU51bWJlcl9JbnZlcnQKLSAgUHlOdW1iZXJfTG9uZz1weXRob24zNS5QeU51bWJlcl9Mb25nCi0gIFB5TnVtYmVyX0xzaGlmdD1weXRob24zNS5QeU51bWJlcl9Mc2hpZnQKLSAgUHlOdW1iZXJfTXVsdGlwbHk9cHl0aG9uMzUuUHlOdW1iZXJfTXVsdGlwbHkKLSAgUHlOdW1iZXJfTmVnYXRpdmU9cHl0aG9uMzUuUHlOdW1iZXJfTmVnYXRpdmUKLSAgUHlOdW1iZXJfT3I9cHl0aG9uMzUuUHlOdW1iZXJfT3IKLSAgUHlOdW1iZXJfUG9zaXRpdmU9cHl0aG9uMzUuUHlOdW1iZXJfUG9zaXRpdmUKLSAgUHlOdW1iZXJfUG93ZXI9cHl0aG9uMzUuUHlOdW1iZXJfUG93ZXIKLSAgUHlOdW1iZXJfUmVtYWluZGVyPXB5dGhvbjM1LlB5TnVtYmVyX1JlbWFpbmRlcgotICBQeU51bWJlcl9Sc2hpZnQ9cHl0aG9uMzUuUHlOdW1iZXJfUnNoaWZ0Ci0gIFB5TnVtYmVyX1N1YnRyYWN0PXB5dGhvbjM1LlB5TnVtYmVyX1N1YnRyYWN0Ci0gIFB5TnVtYmVyX1RvQmFzZT1weXRob24zNS5QeU51bWJlcl9Ub0Jhc2UKLSAgUHlOdW1iZXJfVHJ1ZURpdmlkZT1weXRob24zNS5QeU51bWJlcl9UcnVlRGl2aWRlCi0gIFB5TnVtYmVyX1hvcj1weXRob24zNS5QeU51bWJlcl9Yb3IKLSAgUHlPU19BZnRlckZvcms9cHl0aG9uMzUuUHlPU19BZnRlckZvcmsKLSAgUHlPU19Jbml0SW50ZXJydXB0cz1weXRob24zNS5QeU9TX0luaXRJbnRlcnJ1cHRzCi0gIFB5T1NfSW5wdXRIb29rPXB5dGhvbjM1LlB5T1NfSW5wdXRIb29rIERBVEEKLSAgUHlPU19JbnRlcnJ1cHRPY2N1cnJlZD1weXRob24zNS5QeU9TX0ludGVycnVwdE9jY3VycmVkCi0gIFB5T1NfUmVhZGxpbmVGdW5jdGlvblBvaW50ZXI9cHl0aG9uMzUuUHlPU19SZWFkbGluZUZ1bmN0aW9uUG9pbnRlciBEQVRBCi0gIFB5T1NfZG91YmxlX3RvX3N0cmluZz1weXRob24zNS5QeU9TX2RvdWJsZV90b19zdHJpbmcKLSAgUHlPU19nZXRzaWc9cHl0aG9uMzUuUHlPU19nZXRzaWcKLSAgUHlPU19teXN0cmljbXA9cHl0aG9uMzUuUHlPU19teXN0cmljbXAKLSAgUHlPU19teXN0cm5pY21wPXB5dGhvbjM1LlB5T1NfbXlzdHJuaWNtcAotICBQeU9TX3NldHNpZz1weXRob24zNS5QeU9TX3NldHNpZwotICBQeU9TX3NucHJpbnRmPXB5dGhvbjM1LlB5T1Nfc25wcmludGYKLSAgUHlPU19zdHJpbmdfdG9fZG91YmxlPXB5dGhvbjM1LlB5T1Nfc3RyaW5nX3RvX2RvdWJsZQotICBQeU9TX3N0cnRvbD1weXRob24zNS5QeU9TX3N0cnRvbAotICBQeU9TX3N0cnRvdWw9cHl0aG9uMzUuUHlPU19zdHJ0b3VsCi0gIFB5T1NfdnNucHJpbnRmPXB5dGhvbjM1LlB5T1NfdnNucHJpbnRmCi0gIFB5T2JqZWN0X0FTQ0lJPXB5dGhvbjM1LlB5T2JqZWN0X0FTQ0lJCi0gIFB5T2JqZWN0X0FzQ2hhckJ1ZmZlcj1weXRob24zNS5QeU9iamVjdF9Bc0NoYXJCdWZmZXIKLSAgUHlPYmplY3RfQXNGaWxlRGVzY3JpcHRvcj1weXRob24zNS5QeU9iamVjdF9Bc0ZpbGVEZXNjcmlwdG9yCi0gIFB5T2JqZWN0X0FzUmVhZEJ1ZmZlcj1weXRob24zNS5QeU9iamVjdF9Bc1JlYWRCdWZmZXIKLSAgUHlPYmplY3RfQXNXcml0ZUJ1ZmZlcj1weXRob24zNS5QeU9iamVjdF9Bc1dyaXRlQnVmZmVyCi0gIFB5T2JqZWN0X0J5dGVzPXB5dGhvbjM1LlB5T2JqZWN0X0J5dGVzCi0gIFB5T2JqZWN0X0NhbGw9cHl0aG9uMzUuUHlPYmplY3RfQ2FsbAotICBQeU9iamVjdF9DYWxsRnVuY3Rpb249cHl0aG9uMzUuUHlPYmplY3RfQ2FsbEZ1bmN0aW9uCi0gIFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3M9cHl0aG9uMzUuUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncwotICBQeU9iamVjdF9DYWxsTWV0aG9kPXB5dGhvbjM1LlB5T2JqZWN0X0NhbGxNZXRob2QKLSAgUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3M9cHl0aG9uMzUuUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3MKLSAgUHlPYmplY3RfQ2FsbE9iamVjdD1weXRob24zNS5QeU9iamVjdF9DYWxsT2JqZWN0Ci0gIFB5T2JqZWN0X0NoZWNrUmVhZEJ1ZmZlcj1weXRob24zNS5QeU9iamVjdF9DaGVja1JlYWRCdWZmZXIKLSAgUHlPYmplY3RfQ2xlYXJXZWFrUmVmcz1weXRob24zNS5QeU9iamVjdF9DbGVhcldlYWtSZWZzCi0gIFB5T2JqZWN0X0RlbEl0ZW09cHl0aG9uMzUuUHlPYmplY3RfRGVsSXRlbQotICBQeU9iamVjdF9EZWxJdGVtU3RyaW5nPXB5dGhvbjM1LlB5T2JqZWN0X0RlbEl0ZW1TdHJpbmcKLSAgUHlPYmplY3RfRGlyPXB5dGhvbjM1LlB5T2JqZWN0X0RpcgotICBQeU9iamVjdF9Gb3JtYXQ9cHl0aG9uMzUuUHlPYmplY3RfRm9ybWF0Ci0gIFB5T2JqZWN0X0ZyZWU9cHl0aG9uMzUuUHlPYmplY3RfRnJlZQotICBQeU9iamVjdF9HQ19EZWw9cHl0aG9uMzUuUHlPYmplY3RfR0NfRGVsCi0gIFB5T2JqZWN0X0dDX1RyYWNrPXB5dGhvbjM1LlB5T2JqZWN0X0dDX1RyYWNrCi0gIFB5T2JqZWN0X0dDX1VuVHJhY2s9cHl0aG9uMzUuUHlPYmplY3RfR0NfVW5UcmFjawotICBQeU9iamVjdF9HZW5lcmljR2V0QXR0cj1weXRob24zNS5QeU9iamVjdF9HZW5lcmljR2V0QXR0cgotICBQeU9iamVjdF9HZW5lcmljU2V0QXR0cj1weXRob24zNS5QeU9iamVjdF9HZW5lcmljU2V0QXR0cgotICBQeU9iamVjdF9HZXRBdHRyPXB5dGhvbjM1LlB5T2JqZWN0X0dldEF0dHIKLSAgUHlPYmplY3RfR2V0QXR0clN0cmluZz1weXRob24zNS5QeU9iamVjdF9HZXRBdHRyU3RyaW5nCi0gIFB5T2JqZWN0X0dldEl0ZW09cHl0aG9uMzUuUHlPYmplY3RfR2V0SXRlbQotICBQeU9iamVjdF9HZXRJdGVyPXB5dGhvbjM1LlB5T2JqZWN0X0dldEl0ZXIKLSAgUHlPYmplY3RfSGFzQXR0cj1weXRob24zNS5QeU9iamVjdF9IYXNBdHRyCi0gIFB5T2JqZWN0X0hhc0F0dHJTdHJpbmc9cHl0aG9uMzUuUHlPYmplY3RfSGFzQXR0clN0cmluZwotICBQeU9iamVjdF9IYXNoPXB5dGhvbjM1LlB5T2JqZWN0X0hhc2gKLSAgUHlPYmplY3RfSGFzaE5vdEltcGxlbWVudGVkPXB5dGhvbjM1LlB5T2JqZWN0X0hhc2hOb3RJbXBsZW1lbnRlZAotICBQeU9iamVjdF9Jbml0PXB5dGhvbjM1LlB5T2JqZWN0X0luaXQKLSAgUHlPYmplY3RfSW5pdFZhcj1weXRob24zNS5QeU9iamVjdF9Jbml0VmFyCi0gIFB5T2JqZWN0X0lzSW5zdGFuY2U9cHl0aG9uMzUuUHlPYmplY3RfSXNJbnN0YW5jZQotICBQeU9iamVjdF9Jc1N1YmNsYXNzPXB5dGhvbjM1LlB5T2JqZWN0X0lzU3ViY2xhc3MKLSAgUHlPYmplY3RfSXNUcnVlPXB5dGhvbjM1LlB5T2JqZWN0X0lzVHJ1ZQotICBQeU9iamVjdF9MZW5ndGg9cHl0aG9uMzUuUHlPYmplY3RfTGVuZ3RoCi0gIFB5T2JqZWN0X01hbGxvYz1weXRob24zNS5QeU9iamVjdF9NYWxsb2MKLSAgUHlPYmplY3RfTm90PXB5dGhvbjM1LlB5T2JqZWN0X05vdAotICBQeU9iamVjdF9SZWFsbG9jPXB5dGhvbjM1LlB5T2JqZWN0X1JlYWxsb2MKLSAgUHlPYmplY3RfUmVwcj1weXRob24zNS5QeU9iamVjdF9SZXByCi0gIFB5T2JqZWN0X1JpY2hDb21wYXJlPXB5dGhvbjM1LlB5T2JqZWN0X1JpY2hDb21wYXJlCi0gIFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbD1weXRob24zNS5QeU9iamVjdF9SaWNoQ29tcGFyZUJvb2wKLSAgUHlPYmplY3RfU2VsZkl0ZXI9cHl0aG9uMzUuUHlPYmplY3RfU2VsZkl0ZXIKLSAgUHlPYmplY3RfU2V0QXR0cj1weXRob24zNS5QeU9iamVjdF9TZXRBdHRyCi0gIFB5T2JqZWN0X1NldEF0dHJTdHJpbmc9cHl0aG9uMzUuUHlPYmplY3RfU2V0QXR0clN0cmluZwotICBQeU9iamVjdF9TZXRJdGVtPXB5dGhvbjM1LlB5T2JqZWN0X1NldEl0ZW0KLSAgUHlPYmplY3RfU2l6ZT1weXRob24zNS5QeU9iamVjdF9TaXplCi0gIFB5T2JqZWN0X1N0cj1weXRob24zNS5QeU9iamVjdF9TdHIKLSAgUHlPYmplY3RfVHlwZT1weXRob24zNS5QeU9iamVjdF9UeXBlIERBVEEKLSAgUHlPRGljdF9EZWxJdGVtPXB5dGhvbjM1LlB5T0RpY3RfRGVsSXRlbQotICBQeU9EaWN0X05ldz1weXRob24zNS5QeU9EaWN0X05ldwotICBQeU9EaWN0X1NldEl0ZW09cHl0aG9uMzUuUHlPRGljdF9TZXRJdGVtCi0gIFB5T0RpY3RfVHlwZT1weXRob24zNS5QeU9EaWN0X1R5cGUgREFUQQotICBQeU9EaWN0SXRlbXNfVHlwZT1weXRob24zNS5QeU9EaWN0SXRlbXNfVHlwZSBEQVRBCi0gIFB5T0RpY3RJdGVyX1R5cGU9cHl0aG9uMzUuUHlPRGljdEl0ZXJfVHlwZSBEQVRBCi0gIFB5T0RpY3RLZXlzX1R5cGU9cHl0aG9uMzUuUHlPRGljdEtleXNfVHlwZSBEQVRBCi0gIFB5T0RpY3RWYWx1ZXNfVHlwZT1weXRob24zNS5QeU9EaWN0VmFsdWVzX1R5cGUgREFUQQotICBQeVBhcnNlcl9TaW1wbGVQYXJzZUZpbGVGbGFncz1weXRob24zNS5QeVBhcnNlcl9TaW1wbGVQYXJzZUZpbGVGbGFncwotICBQeVBhcnNlcl9TaW1wbGVQYXJzZVN0cmluZ0ZsYWdzPXB5dGhvbjM1LlB5UGFyc2VyX1NpbXBsZVBhcnNlU3RyaW5nRmxhZ3MKLSAgUHlQcm9wZXJ0eV9UeXBlPXB5dGhvbjM1LlB5UHJvcGVydHlfVHlwZSBEQVRBCi0gIFB5UmFuZ2VJdGVyX1R5cGU9cHl0aG9uMzUuUHlSYW5nZUl0ZXJfVHlwZSBEQVRBCi0gIFB5UmFuZ2VfVHlwZT1weXRob24zNS5QeVJhbmdlX1R5cGUgREFUQQotICBQeVJldmVyc2VkX1R5cGU9cHl0aG9uMzUuUHlSZXZlcnNlZF9UeXBlIERBVEEKLSAgUHlTZXFJdGVyX05ldz1weXRob24zNS5QeVNlcUl0ZXJfTmV3Ci0gIFB5U2VxSXRlcl9UeXBlPXB5dGhvbjM1LlB5U2VxSXRlcl9UeXBlIERBVEEKLSAgUHlTZXF1ZW5jZV9DaGVjaz1weXRob24zNS5QeVNlcXVlbmNlX0NoZWNrCi0gIFB5U2VxdWVuY2VfQ29uY2F0PXB5dGhvbjM1LlB5U2VxdWVuY2VfQ29uY2F0Ci0gIFB5U2VxdWVuY2VfQ29udGFpbnM9cHl0aG9uMzUuUHlTZXF1ZW5jZV9Db250YWlucwotICBQeVNlcXVlbmNlX0NvdW50PXB5dGhvbjM1LlB5U2VxdWVuY2VfQ291bnQKLSAgUHlTZXF1ZW5jZV9EZWxJdGVtPXB5dGhvbjM1LlB5U2VxdWVuY2VfRGVsSXRlbQotICBQeVNlcXVlbmNlX0RlbFNsaWNlPXB5dGhvbjM1LlB5U2VxdWVuY2VfRGVsU2xpY2UKLSAgUHlTZXF1ZW5jZV9GYXN0PXB5dGhvbjM1LlB5U2VxdWVuY2VfRmFzdAotICBQeVNlcXVlbmNlX0dldEl0ZW09cHl0aG9uMzUuUHlTZXF1ZW5jZV9HZXRJdGVtCi0gIFB5U2VxdWVuY2VfR2V0U2xpY2U9cHl0aG9uMzUuUHlTZXF1ZW5jZV9HZXRTbGljZQotICBQeVNlcXVlbmNlX0luPXB5dGhvbjM1LlB5U2VxdWVuY2VfSW4KLSAgUHlTZXF1ZW5jZV9JblBsYWNlQ29uY2F0PXB5dGhvbjM1LlB5U2VxdWVuY2VfSW5QbGFjZUNvbmNhdAotICBQeVNlcXVlbmNlX0luUGxhY2VSZXBlYXQ9cHl0aG9uMzUuUHlTZXF1ZW5jZV9JblBsYWNlUmVwZWF0Ci0gIFB5U2VxdWVuY2VfSW5kZXg9cHl0aG9uMzUuUHlTZXF1ZW5jZV9JbmRleAotICBQeVNlcXVlbmNlX0xlbmd0aD1weXRob24zNS5QeVNlcXVlbmNlX0xlbmd0aAotICBQeVNlcXVlbmNlX0xpc3Q9cHl0aG9uMzUuUHlTZXF1ZW5jZV9MaXN0Ci0gIFB5U2VxdWVuY2VfUmVwZWF0PXB5dGhvbjM1LlB5U2VxdWVuY2VfUmVwZWF0Ci0gIFB5U2VxdWVuY2VfU2V0SXRlbT1weXRob24zNS5QeVNlcXVlbmNlX1NldEl0ZW0KLSAgUHlTZXF1ZW5jZV9TZXRTbGljZT1weXRob24zNS5QeVNlcXVlbmNlX1NldFNsaWNlCi0gIFB5U2VxdWVuY2VfU2l6ZT1weXRob24zNS5QeVNlcXVlbmNlX1NpemUKLSAgUHlTZXF1ZW5jZV9UdXBsZT1weXRob24zNS5QeVNlcXVlbmNlX1R1cGxlCi0gIFB5U2V0SXRlcl9UeXBlPXB5dGhvbjM1LlB5U2V0SXRlcl9UeXBlIERBVEEKLSAgUHlTZXRfQWRkPXB5dGhvbjM1LlB5U2V0X0FkZAotICBQeVNldF9DbGVhcj1weXRob24zNS5QeVNldF9DbGVhcgotICBQeVNldF9Db250YWlucz1weXRob24zNS5QeVNldF9Db250YWlucwotICBQeVNldF9EaXNjYXJkPXB5dGhvbjM1LlB5U2V0X0Rpc2NhcmQKLSAgUHlTZXRfTmV3PXB5dGhvbjM1LlB5U2V0X05ldwotICBQeVNldF9Qb3A9cHl0aG9uMzUuUHlTZXRfUG9wCi0gIFB5U2V0X1NpemU9cHl0aG9uMzUuUHlTZXRfU2l6ZQotICBQeVNldF9UeXBlPXB5dGhvbjM1LlB5U2V0X1R5cGUgREFUQQotICBQeVNsaWNlX0dldEluZGljZXM9cHl0aG9uMzUuUHlTbGljZV9HZXRJbmRpY2VzCi0gIFB5U2xpY2VfR2V0SW5kaWNlc0V4PXB5dGhvbjM1LlB5U2xpY2VfR2V0SW5kaWNlc0V4Ci0gIFB5U2xpY2VfTmV3PXB5dGhvbjM1LlB5U2xpY2VfTmV3Ci0gIFB5U2xpY2VfVHlwZT1weXRob24zNS5QeVNsaWNlX1R5cGUgREFUQQotICBQeVNvcnRXcmFwcGVyX1R5cGU9cHl0aG9uMzUuUHlTb3J0V3JhcHBlcl9UeXBlIERBVEEKLSAgUHlTdGF0ZV9GaW5kTW9kdWxlPXB5dGhvbjM1LlB5U3RhdGVfRmluZE1vZHVsZQotICBQeVN0YXRlX0FkZE1vZHVsZT1weXRob24zNS5QeVN0YXRlX0FkZE1vZHVsZQotICBQeVN0YXRlX1JlbW92ZU1vZHVsZT1weXRob24zNS5QeVN0YXRlX1JlbW92ZU1vZHVsZQotICBQeVN0cnVjdFNlcXVlbmNlX0dldEl0ZW09cHl0aG9uMzUuUHlTdHJ1Y3RTZXF1ZW5jZV9HZXRJdGVtCi0gIFB5U3RydWN0U2VxdWVuY2VfTmV3PXB5dGhvbjM1LlB5U3RydWN0U2VxdWVuY2VfTmV3Ci0gIFB5U3RydWN0U2VxdWVuY2VfTmV3VHlwZT1weXRob24zNS5QeVN0cnVjdFNlcXVlbmNlX05ld1R5cGUKLSAgUHlTdHJ1Y3RTZXF1ZW5jZV9TZXRJdGVtPXB5dGhvbjM1LlB5U3RydWN0U2VxdWVuY2VfU2V0SXRlbQotICBQeVN1cGVyX1R5cGU9cHl0aG9uMzUuUHlTdXBlcl9UeXBlIERBVEEKLSAgUHlTeXNfQWRkV2Fybk9wdGlvbj1weXRob24zNS5QeVN5c19BZGRXYXJuT3B0aW9uCi0gIFB5U3lzX0FkZFdhcm5PcHRpb25Vbmljb2RlPXB5dGhvbjM1LlB5U3lzX0FkZFdhcm5PcHRpb25Vbmljb2RlCi0gIFB5U3lzX0Zvcm1hdFN0ZGVycj1weXRob24zNS5QeVN5c19Gb3JtYXRTdGRlcnIKLSAgUHlTeXNfRm9ybWF0U3Rkb3V0PXB5dGhvbjM1LlB5U3lzX0Zvcm1hdFN0ZG91dAotICBQeVN5c19HZXRPYmplY3Q9cHl0aG9uMzUuUHlTeXNfR2V0T2JqZWN0Ci0gIFB5U3lzX0hhc1dhcm5PcHRpb25zPXB5dGhvbjM1LlB5U3lzX0hhc1dhcm5PcHRpb25zCi0gIFB5U3lzX1Jlc2V0V2Fybk9wdGlvbnM9cHl0aG9uMzUuUHlTeXNfUmVzZXRXYXJuT3B0aW9ucwotICBQeVN5c19TZXRBcmd2PXB5dGhvbjM1LlB5U3lzX1NldEFyZ3YKLSAgUHlTeXNfU2V0QXJndkV4PXB5dGhvbjM1LlB5U3lzX1NldEFyZ3ZFeAotICBQeVN5c19TZXRPYmplY3Q9cHl0aG9uMzUuUHlTeXNfU2V0T2JqZWN0Ci0gIFB5U3lzX1NldFBhdGg9cHl0aG9uMzUuUHlTeXNfU2V0UGF0aAotICBQeVN5c19Xcml0ZVN0ZGVycj1weXRob24zNS5QeVN5c19Xcml0ZVN0ZGVycgotICBQeVN5c19Xcml0ZVN0ZG91dD1weXRob24zNS5QeVN5c19Xcml0ZVN0ZG91dAotICBQeVRocmVhZFN0YXRlX0NsZWFyPXB5dGhvbjM1LlB5VGhyZWFkU3RhdGVfQ2xlYXIKLSAgUHlUaHJlYWRTdGF0ZV9EZWxldGU9cHl0aG9uMzUuUHlUaHJlYWRTdGF0ZV9EZWxldGUKLSAgUHlUaHJlYWRTdGF0ZV9EZWxldGVDdXJyZW50PXB5dGhvbjM1LlB5VGhyZWFkU3RhdGVfRGVsZXRlQ3VycmVudAotICBQeVRocmVhZFN0YXRlX0dldD1weXRob24zNS5QeVRocmVhZFN0YXRlX0dldAotICBQeVRocmVhZFN0YXRlX0dldERpY3Q9cHl0aG9uMzUuUHlUaHJlYWRTdGF0ZV9HZXREaWN0Ci0gIFB5VGhyZWFkU3RhdGVfTmV3PXB5dGhvbjM1LlB5VGhyZWFkU3RhdGVfTmV3Ci0gIFB5VGhyZWFkU3RhdGVfU2V0QXN5bmNFeGM9cHl0aG9uMzUuUHlUaHJlYWRTdGF0ZV9TZXRBc3luY0V4YwotICBQeVRocmVhZFN0YXRlX1N3YXA9cHl0aG9uMzUuUHlUaHJlYWRTdGF0ZV9Td2FwCi0gIFB5VHJhY2VCYWNrX0hlcmU9cHl0aG9uMzUuUHlUcmFjZUJhY2tfSGVyZQotICBQeVRyYWNlQmFja19QcmludD1weXRob24zNS5QeVRyYWNlQmFja19QcmludAotICBQeVRyYWNlQmFja19UeXBlPXB5dGhvbjM1LlB5VHJhY2VCYWNrX1R5cGUgREFUQQotICBQeVR1cGxlSXRlcl9UeXBlPXB5dGhvbjM1LlB5VHVwbGVJdGVyX1R5cGUgREFUQQotICBQeVR1cGxlX0NsZWFyRnJlZUxpc3Q9cHl0aG9uMzUuUHlUdXBsZV9DbGVhckZyZWVMaXN0Ci0gIFB5VHVwbGVfR2V0SXRlbT1weXRob24zNS5QeVR1cGxlX0dldEl0ZW0KLSAgUHlUdXBsZV9HZXRTbGljZT1weXRob24zNS5QeVR1cGxlX0dldFNsaWNlCi0gIFB5VHVwbGVfTmV3PXB5dGhvbjM1LlB5VHVwbGVfTmV3Ci0gIFB5VHVwbGVfUGFjaz1weXRob24zNS5QeVR1cGxlX1BhY2sKLSAgUHlUdXBsZV9TZXRJdGVtPXB5dGhvbjM1LlB5VHVwbGVfU2V0SXRlbQotICBQeVR1cGxlX1NpemU9cHl0aG9uMzUuUHlUdXBsZV9TaXplCi0gIFB5VHVwbGVfVHlwZT1weXRob24zNS5QeVR1cGxlX1R5cGUgREFUQQotICBQeVR5cGVfQ2xlYXJDYWNoZT1weXRob24zNS5QeVR5cGVfQ2xlYXJDYWNoZQotICBQeVR5cGVfRnJvbVNwZWM9cHl0aG9uMzUuUHlUeXBlX0Zyb21TcGVjCi0gIFB5VHlwZV9Gcm9tU3BlY1dpdGhCYXNlcz1weXRob24zNS5QeVR5cGVfRnJvbVNwZWNXaXRoQmFzZXMKLSAgUHlUeXBlX0dlbmVyaWNBbGxvYz1weXRob24zNS5QeVR5cGVfR2VuZXJpY0FsbG9jCi0gIFB5VHlwZV9HZW5lcmljTmV3PXB5dGhvbjM1LlB5VHlwZV9HZW5lcmljTmV3Ci0gIFB5VHlwZV9HZXRGbGFncz1weXRob24zNS5QeVR5cGVfR2V0RmxhZ3MKLSAgUHlUeXBlX0dldFNsb3Q9cHl0aG9uMzUuUHlUeXBlX0dldFNsb3QKLSAgUHlUeXBlX0lzU3VidHlwZT1weXRob24zNS5QeVR5cGVfSXNTdWJ0eXBlCi0gIFB5VHlwZV9Nb2RpZmllZD1weXRob24zNS5QeVR5cGVfTW9kaWZpZWQKLSAgUHlUeXBlX1JlYWR5PXB5dGhvbjM1LlB5VHlwZV9SZWFkeQotICBQeVR5cGVfVHlwZT1weXRob24zNS5QeVR5cGVfVHlwZSBEQVRBCi0gIFB5VW5pY29kZURlY29kZUVycm9yX0NyZWF0ZT1weXRob24zNS5QeVVuaWNvZGVEZWNvZGVFcnJvcl9DcmVhdGUKLSAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5jb2Rpbmc9cHl0aG9uMzUuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5jb2RpbmcKLSAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5kPXB5dGhvbjM1LlB5VW5pY29kZURlY29kZUVycm9yX0dldEVuZAotICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRPYmplY3Q9cHl0aG9uMzUuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0T2JqZWN0Ci0gIFB5VW5pY29kZURlY29kZUVycm9yX0dldFJlYXNvbj1weXRob24zNS5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRSZWFzb24KLSAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0U3RhcnQ9cHl0aG9uMzUuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0U3RhcnQKLSAgUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0RW5kPXB5dGhvbjM1LlB5VW5pY29kZURlY29kZUVycm9yX1NldEVuZAotICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRSZWFzb249cHl0aG9uMzUuUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0UmVhc29uCi0gIFB5VW5pY29kZURlY29kZUVycm9yX1NldFN0YXJ0PXB5dGhvbjM1LlB5VW5pY29kZURlY29kZUVycm9yX1NldFN0YXJ0Ci0gIFB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuY29kaW5nPXB5dGhvbjM1LlB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuY29kaW5nCi0gIFB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuZD1weXRob24zNS5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmQKLSAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0T2JqZWN0PXB5dGhvbjM1LlB5VW5pY29kZUVuY29kZUVycm9yX0dldE9iamVjdAotICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRSZWFzb249cHl0aG9uMzUuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0UmVhc29uCi0gIFB5VW5pY29kZUVuY29kZUVycm9yX0dldFN0YXJ0PXB5dGhvbjM1LlB5VW5pY29kZUVuY29kZUVycm9yX0dldFN0YXJ0Ci0gIFB5VW5pY29kZUVuY29kZUVycm9yX1NldEVuZD1weXRob24zNS5QeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRFbmQKLSAgUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0UmVhc29uPXB5dGhvbjM1LlB5VW5pY29kZUVuY29kZUVycm9yX1NldFJlYXNvbgotICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRTdGFydD1weXRob24zNS5QeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRTdGFydAotICBQeVVuaWNvZGVJdGVyX1R5cGU9cHl0aG9uMzUuUHlVbmljb2RlSXRlcl9UeXBlIERBVEEKLSAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0RW5kPXB5dGhvbjM1LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldEVuZAotICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRPYmplY3Q9cHl0aG9uMzUuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0T2JqZWN0Ci0gIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFJlYXNvbj1weXRob24zNS5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRSZWFzb24KLSAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0U3RhcnQ9cHl0aG9uMzUuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0U3RhcnQKLSAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0RW5kPXB5dGhvbjM1LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldEVuZAotICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRSZWFzb249cHl0aG9uMzUuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0UmVhc29uCi0gIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldFN0YXJ0PXB5dGhvbjM1LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldFN0YXJ0Ci0gIFB5VW5pY29kZV9BcHBlbmQ9cHl0aG9uMzUuUHlVbmljb2RlX0FwcGVuZAotICBQeVVuaWNvZGVfQXBwZW5kQW5kRGVsPXB5dGhvbjM1LlB5VW5pY29kZV9BcHBlbmRBbmREZWwKLSAgUHlVbmljb2RlX0FzQVNDSUlTdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0FzQVNDSUlTdHJpbmcKLSAgUHlVbmljb2RlX0FzQ2hhcm1hcFN0cmluZz1weXRob24zNS5QeVVuaWNvZGVfQXNDaGFybWFwU3RyaW5nCi0gIFB5VW5pY29kZV9Bc0RlY29kZWRPYmplY3Q9cHl0aG9uMzUuUHlVbmljb2RlX0FzRGVjb2RlZE9iamVjdAotICBQeVVuaWNvZGVfQXNEZWNvZGVkVW5pY29kZT1weXRob24zNS5QeVVuaWNvZGVfQXNEZWNvZGVkVW5pY29kZQotICBQeVVuaWNvZGVfQXNFbmNvZGVkT2JqZWN0PXB5dGhvbjM1LlB5VW5pY29kZV9Bc0VuY29kZWRPYmplY3QKLSAgUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZz1weXRob24zNS5QeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nCi0gIFB5VW5pY29kZV9Bc0VuY29kZWRVbmljb2RlPXB5dGhvbjM1LlB5VW5pY29kZV9Bc0VuY29kZWRVbmljb2RlCi0gIFB5VW5pY29kZV9Bc0xhdGluMVN0cmluZz1weXRob24zNS5QeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmcKLSAgUHlVbmljb2RlX0FzUmF3VW5pY29kZUVzY2FwZVN0cmluZz1weXRob24zNS5QeVVuaWNvZGVfQXNSYXdVbmljb2RlRXNjYXBlU3RyaW5nCi0gIFB5VW5pY29kZV9Bc1VURjE2U3RyaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9Bc1VURjE2U3RyaW5nCi0gIFB5VW5pY29kZV9Bc1VURjMyU3RyaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9Bc1VURjMyU3RyaW5nCi0gIFB5VW5pY29kZV9Bc1VURjhTdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0FzVVRGOFN0cmluZwotICBQeVVuaWNvZGVfQXNVbmljb2RlRXNjYXBlU3RyaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9Bc1VuaWNvZGVFc2NhcGVTdHJpbmcKLSAgUHlVbmljb2RlX0FzV2lkZUNoYXI9cHl0aG9uMzUuUHlVbmljb2RlX0FzV2lkZUNoYXIKLSAgUHlVbmljb2RlX0NsZWFyRnJlZWxpc3Q9cHl0aG9uMzUuUHlVbmljb2RlX0NsZWFyRnJlZWxpc3QKLSAgUHlVbmljb2RlX0NvbXBhcmU9cHl0aG9uMzUuUHlVbmljb2RlX0NvbXBhcmUKLSAgUHlVbmljb2RlX0NvbmNhdD1weXRob24zNS5QeVVuaWNvZGVfQ29uY2F0Ci0gIFB5VW5pY29kZV9Db250YWlucz1weXRob24zNS5QeVVuaWNvZGVfQ29udGFpbnMKLSAgUHlVbmljb2RlX0NvdW50PXB5dGhvbjM1LlB5VW5pY29kZV9Db3VudAotICBQeVVuaWNvZGVfRGVjb2RlPXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGUKLSAgUHlVbmljb2RlX0RlY29kZUFTQ0lJPXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVBU0NJSQotICBQeVVuaWNvZGVfRGVjb2RlQ2hhcm1hcD1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlQ2hhcm1hcAotICBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0PXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQKLSAgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemU9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUKLSAgUHlVbmljb2RlX0RlY29kZUxhdGluMT1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlTGF0aW4xCi0gIFB5VW5pY29kZV9EZWNvZGVSYXdVbmljb2RlRXNjYXBlPXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVSYXdVbmljb2RlRXNjYXBlCi0gIFB5VW5pY29kZV9EZWNvZGVVVEYxNj1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlVVRGMTYKLSAgUHlVbmljb2RlX0RlY29kZVVURjE2U3RhdGVmdWw9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZVVURjE2U3RhdGVmdWwKLSAgUHlVbmljb2RlX0RlY29kZVVURjMyPXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVVVEYzMgotICBQeVVuaWNvZGVfRGVjb2RlVVRGMzJTdGF0ZWZ1bD1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlVVRGMzJTdGF0ZWZ1bAotICBQeVVuaWNvZGVfRGVjb2RlVVRGOD1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlVVRGOAotICBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsPXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwKLSAgUHlVbmljb2RlX0RlY29kZVVuaWNvZGVFc2NhcGU9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZVVuaWNvZGVFc2NhcGUKLSAgUHlVbmljb2RlX0ZTQ29udmVydGVyPXB5dGhvbjM1LlB5VW5pY29kZV9GU0NvbnZlcnRlcgotICBQeVVuaWNvZGVfRlNEZWNvZGVyPXB5dGhvbjM1LlB5VW5pY29kZV9GU0RlY29kZXIKLSAgUHlVbmljb2RlX0ZpbmQ9cHl0aG9uMzUuUHlVbmljb2RlX0ZpbmQKLSAgUHlVbmljb2RlX0Zvcm1hdD1weXRob24zNS5QeVVuaWNvZGVfRm9ybWF0Ci0gIFB5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdD1weXRob24zNS5QeVVuaWNvZGVfRnJvbUVuY29kZWRPYmplY3QKLSAgUHlVbmljb2RlX0Zyb21Gb3JtYXQ9cHl0aG9uMzUuUHlVbmljb2RlX0Zyb21Gb3JtYXQKLSAgUHlVbmljb2RlX0Zyb21Gb3JtYXRWPXB5dGhvbjM1LlB5VW5pY29kZV9Gcm9tRm9ybWF0VgotICBQeVVuaWNvZGVfRnJvbU9iamVjdD1weXRob24zNS5QeVVuaWNvZGVfRnJvbU9iamVjdAotICBQeVVuaWNvZGVfRnJvbU9yZGluYWw9cHl0aG9uMzUuUHlVbmljb2RlX0Zyb21PcmRpbmFsCi0gIFB5VW5pY29kZV9Gcm9tU3RyaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9Gcm9tU3RyaW5nCi0gIFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZT1weXRob24zNS5QeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUKLSAgUHlVbmljb2RlX0Zyb21XaWRlQ2hhcj1weXRob24zNS5QeVVuaWNvZGVfRnJvbVdpZGVDaGFyCi0gIFB5VW5pY29kZV9HZXREZWZhdWx0RW5jb2Rpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0dldERlZmF1bHRFbmNvZGluZwotICBQeVVuaWNvZGVfR2V0U2l6ZT1weXRob24zNS5QeVVuaWNvZGVfR2V0U2l6ZQotICBQeVVuaWNvZGVfSXNJZGVudGlmaWVyPXB5dGhvbjM1LlB5VW5pY29kZV9Jc0lkZW50aWZpZXIKLSAgUHlVbmljb2RlX0pvaW49cHl0aG9uMzUuUHlVbmljb2RlX0pvaW4KLSAgUHlVbmljb2RlX1BhcnRpdGlvbj1weXRob24zNS5QeVVuaWNvZGVfUGFydGl0aW9uCi0gIFB5VW5pY29kZV9SUGFydGl0aW9uPXB5dGhvbjM1LlB5VW5pY29kZV9SUGFydGl0aW9uCi0gIFB5VW5pY29kZV9SU3BsaXQ9cHl0aG9uMzUuUHlVbmljb2RlX1JTcGxpdAotICBQeVVuaWNvZGVfUmVwbGFjZT1weXRob24zNS5QeVVuaWNvZGVfUmVwbGFjZQotICBQeVVuaWNvZGVfUmVzaXplPXB5dGhvbjM1LlB5VW5pY29kZV9SZXNpemUKLSAgUHlVbmljb2RlX1JpY2hDb21wYXJlPXB5dGhvbjM1LlB5VW5pY29kZV9SaWNoQ29tcGFyZQotICBQeVVuaWNvZGVfU2V0RGVmYXVsdEVuY29kaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9TZXREZWZhdWx0RW5jb2RpbmcKLSAgUHlVbmljb2RlX1NwbGl0PXB5dGhvbjM1LlB5VW5pY29kZV9TcGxpdAotICBQeVVuaWNvZGVfU3BsaXRsaW5lcz1weXRob24zNS5QeVVuaWNvZGVfU3BsaXRsaW5lcwotICBQeVVuaWNvZGVfVGFpbG1hdGNoPXB5dGhvbjM1LlB5VW5pY29kZV9UYWlsbWF0Y2gKLSAgUHlVbmljb2RlX1RyYW5zbGF0ZT1weXRob24zNS5QeVVuaWNvZGVfVHJhbnNsYXRlCi0gIFB5VW5pY29kZV9CdWlsZEVuY29kaW5nTWFwPXB5dGhvbjM1LlB5VW5pY29kZV9CdWlsZEVuY29kaW5nTWFwCi0gIFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nCi0gIFB5VW5pY29kZV9EZWNvZGVVVEY3PXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVVVEY3Ci0gIFB5VW5pY29kZV9EZWNvZGVVVEY3U3RhdGVmdWw9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZVVURjdTdGF0ZWZ1bAotICBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0PXB5dGhvbjM1LlB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQKLSAgUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcKLSAgUHlVbmljb2RlX0ludGVybkltbW9ydGFsPXB5dGhvbjM1LlB5VW5pY29kZV9JbnRlcm5JbW1vcnRhbAotICBQeVVuaWNvZGVfSW50ZXJuSW5QbGFjZT1weXRob24zNS5QeVVuaWNvZGVfSW50ZXJuSW5QbGFjZQotICBQeVVuaWNvZGVfVHlwZT1weXRob24zNS5QeVVuaWNvZGVfVHlwZSBEQVRBCi0gIFB5V2Vha3JlZl9HZXRPYmplY3Q9cHl0aG9uMzUuUHlXZWFrcmVmX0dldE9iamVjdCBEQVRBCi0gIFB5V2Vha3JlZl9OZXdQcm94eT1weXRob24zNS5QeVdlYWtyZWZfTmV3UHJveHkKLSAgUHlXZWFrcmVmX05ld1JlZj1weXRob24zNS5QeVdlYWtyZWZfTmV3UmVmCi0gIFB5V3JhcHBlckRlc2NyX1R5cGU9cHl0aG9uMzUuUHlXcmFwcGVyRGVzY3JfVHlwZSBEQVRBCi0gIFB5V3JhcHBlcl9OZXc9cHl0aG9uMzUuUHlXcmFwcGVyX05ldwotICBQeVppcF9UeXBlPXB5dGhvbjM1LlB5WmlwX1R5cGUgREFUQQotICBQeV9BZGRQZW5kaW5nQ2FsbD1weXRob24zNS5QeV9BZGRQZW5kaW5nQ2FsbAotICBQeV9BdEV4aXQ9cHl0aG9uMzUuUHlfQXRFeGl0Ci0gIFB5X0J1aWxkVmFsdWU9cHl0aG9uMzUuUHlfQnVpbGRWYWx1ZQotICBQeV9Db21waWxlU3RyaW5nPXB5dGhvbjM1LlB5X0NvbXBpbGVTdHJpbmcKLSAgUHlfRGVjUmVmPXB5dGhvbjM1LlB5X0RlY1JlZgotICBQeV9FbmRJbnRlcnByZXRlcj1weXRob24zNS5QeV9FbmRJbnRlcnByZXRlcgotICBQeV9FeGl0PXB5dGhvbjM1LlB5X0V4aXQKLSAgUHlfRmF0YWxFcnJvcj1weXRob24zNS5QeV9GYXRhbEVycm9yCi0gIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2Rpbmc9cHl0aG9uMzUuUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyBEQVRBCi0gIFB5X0ZpbmFsaXplPXB5dGhvbjM1LlB5X0ZpbmFsaXplCi0gIFB5X0dldEJ1aWxkSW5mbz1weXRob24zNS5QeV9HZXRCdWlsZEluZm8KLSAgUHlfR2V0Q29tcGlsZXI9cHl0aG9uMzUuUHlfR2V0Q29tcGlsZXIKLSAgUHlfR2V0Q29weXJpZ2h0PXB5dGhvbjM1LlB5X0dldENvcHlyaWdodAotICBQeV9HZXRFeGVjUHJlZml4PXB5dGhvbjM1LlB5X0dldEV4ZWNQcmVmaXgKLSAgUHlfR2V0UGF0aD1weXRob24zNS5QeV9HZXRQYXRoCi0gIFB5X0dldFBsYXRmb3JtPXB5dGhvbjM1LlB5X0dldFBsYXRmb3JtCi0gIFB5X0dldFByZWZpeD1weXRob24zNS5QeV9HZXRQcmVmaXgKLSAgUHlfR2V0UHJvZ3JhbUZ1bGxQYXRoPXB5dGhvbjM1LlB5X0dldFByb2dyYW1GdWxsUGF0aAotICBQeV9HZXRQcm9ncmFtTmFtZT1weXRob24zNS5QeV9HZXRQcm9ncmFtTmFtZQotICBQeV9HZXRQeXRob25Ib21lPXB5dGhvbjM1LlB5X0dldFB5dGhvbkhvbWUKLSAgUHlfR2V0UmVjdXJzaW9uTGltaXQ9cHl0aG9uMzUuUHlfR2V0UmVjdXJzaW9uTGltaXQKLSAgUHlfR2V0VmVyc2lvbj1weXRob24zNS5QeV9HZXRWZXJzaW9uCi0gIFB5X0hhc0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2Rpbmc9cHl0aG9uMzUuUHlfSGFzRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyBEQVRBCi0gIFB5X0luY1JlZj1weXRob24zNS5QeV9JbmNSZWYKLSAgUHlfSW5pdGlhbGl6ZT1weXRob24zNS5QeV9Jbml0aWFsaXplCi0gIFB5X0luaXRpYWxpemVFeD1weXRob24zNS5QeV9Jbml0aWFsaXplRXgKLSAgUHlfSXNJbml0aWFsaXplZD1weXRob24zNS5QeV9Jc0luaXRpYWxpemVkCi0gIFB5X01haW49cHl0aG9uMzUuUHlfTWFpbgotICBQeV9NYWtlUGVuZGluZ0NhbGxzPXB5dGhvbjM1LlB5X01ha2VQZW5kaW5nQ2FsbHMKLSAgUHlfTmV3SW50ZXJwcmV0ZXI9cHl0aG9uMzUuUHlfTmV3SW50ZXJwcmV0ZXIKLSAgUHlfUmVwckVudGVyPXB5dGhvbjM1LlB5X1JlcHJFbnRlcgotICBQeV9SZXByTGVhdmU9cHl0aG9uMzUuUHlfUmVwckxlYXZlCi0gIFB5X1NldFByb2dyYW1OYW1lPXB5dGhvbjM1LlB5X1NldFByb2dyYW1OYW1lCi0gIFB5X1NldFB5dGhvbkhvbWU9cHl0aG9uMzUuUHlfU2V0UHl0aG9uSG9tZQotICBQeV9TZXRSZWN1cnNpb25MaW1pdD1weXRob24zNS5QeV9TZXRSZWN1cnNpb25MaW1pdAotICBQeV9TeW10YWJsZVN0cmluZz1weXRob24zNS5QeV9TeW10YWJsZVN0cmluZwotICBQeV9WYUJ1aWxkVmFsdWU9cHl0aG9uMzUuUHlfVmFCdWlsZFZhbHVlCi0gIF9QeUVycl9CYWRJbnRlcm5hbENhbGw9cHl0aG9uMzUuX1B5RXJyX0JhZEludGVybmFsQ2FsbAotICBfUHlPYmplY3RfQ2FsbEZ1bmN0aW9uX1NpemVUPXB5dGhvbjM1Ll9QeU9iamVjdF9DYWxsRnVuY3Rpb25fU2l6ZVQKLSAgX1B5T2JqZWN0X0NhbGxNZXRob2RfU2l6ZVQ9cHl0aG9uMzUuX1B5T2JqZWN0X0NhbGxNZXRob2RfU2l6ZVQKLSAgX1B5T2JqZWN0X0dDX01hbGxvYz1weXRob24zNS5fUHlPYmplY3RfR0NfTWFsbG9jCi0gIF9QeU9iamVjdF9HQ19OZXc9cHl0aG9uMzUuX1B5T2JqZWN0X0dDX05ldwotICBfUHlPYmplY3RfR0NfTmV3VmFyPXB5dGhvbjM1Ll9QeU9iamVjdF9HQ19OZXdWYXIKLSAgX1B5T2JqZWN0X0dDX1Jlc2l6ZT1weXRob24zNS5fUHlPYmplY3RfR0NfUmVzaXplCi0gIF9QeU9iamVjdF9OZXc9cHl0aG9uMzUuX1B5T2JqZWN0X05ldwotICBfUHlPYmplY3RfTmV3VmFyPXB5dGhvbjM1Ll9QeU9iamVjdF9OZXdWYXIKLSAgX1B5U3RhdGVfQWRkTW9kdWxlPXB5dGhvbjM1Ll9QeVN0YXRlX0FkZE1vZHVsZQotICBfUHlUaHJlYWRTdGF0ZV9Jbml0PXB5dGhvbjM1Ll9QeVRocmVhZFN0YXRlX0luaXQKLSAgX1B5VGhyZWFkU3RhdGVfUHJlYWxsb2M9cHl0aG9uMzUuX1B5VGhyZWFkU3RhdGVfUHJlYWxsb2MKLSAgX1B5VHJhc2hfZGVsZXRlX2xhdGVyPXB5dGhvbjM1Ll9QeVRyYXNoX2RlbGV0ZV9sYXRlciBEQVRBCi0gIF9QeVRyYXNoX2RlbGV0ZV9uZXN0aW5nPXB5dGhvbjM1Ll9QeVRyYXNoX2RlbGV0ZV9uZXN0aW5nIERBVEEKLSAgX1B5VHJhc2hfZGVwb3NpdF9vYmplY3Q9cHl0aG9uMzUuX1B5VHJhc2hfZGVwb3NpdF9vYmplY3QKLSAgX1B5VHJhc2hfZGVzdHJveV9jaGFpbj1weXRob24zNS5fUHlUcmFzaF9kZXN0cm95X2NoYWluCi0gIF9QeVdlYWtyZWZfQ2FsbGFibGVQcm94eVR5cGU9cHl0aG9uMzUuX1B5V2Vha3JlZl9DYWxsYWJsZVByb3h5VHlwZSBEQVRBCi0gIF9QeVdlYWtyZWZfUHJveHlUeXBlPXB5dGhvbjM1Ll9QeVdlYWtyZWZfUHJveHlUeXBlIERBVEEKLSAgX1B5V2Vha3JlZl9SZWZUeXBlPXB5dGhvbjM1Ll9QeVdlYWtyZWZfUmVmVHlwZSBEQVRBCi0gIF9QeV9CdWlsZFZhbHVlX1NpemVUPXB5dGhvbjM1Ll9QeV9CdWlsZFZhbHVlX1NpemVUCi0gIF9QeV9DaGVja1JlY3Vyc2lvbkxpbWl0PXB5dGhvbjM1Ll9QeV9DaGVja1JlY3Vyc2lvbkxpbWl0IERBVEEKLSAgX1B5X0NoZWNrUmVjdXJzaXZlQ2FsbD1weXRob24zNS5fUHlfQ2hlY2tSZWN1cnNpdmVDYWxsCi0gIF9QeV9EZWFsbG9jPXB5dGhvbjM1Ll9QeV9EZWFsbG9jCi0gIF9QeV9FbGxpcHNpc09iamVjdD1weXRob24zNS5fUHlfRWxsaXBzaXNPYmplY3QgREFUQQotICBfUHlfRmFsc2VTdHJ1Y3Q9cHl0aG9uMzUuX1B5X0ZhbHNlU3RydWN0IERBVEEKLSAgX1B5X05vbmVTdHJ1Y3Q9cHl0aG9uMzUuX1B5X05vbmVTdHJ1Y3QgREFUQQotICBfUHlfTm90SW1wbGVtZW50ZWRTdHJ1Y3Q9cHl0aG9uMzUuX1B5X05vdEltcGxlbWVudGVkU3RydWN0IERBVEEKLSAgX1B5X1N3YXBwZWRPcD1weXRob24zNS5fUHlfU3dhcHBlZE9wIERBVEEKLSAgX1B5X1RydWVTdHJ1Y3Q9cHl0aG9uMzUuX1B5X1RydWVTdHJ1Y3QgREFUQQotICBfUHlfVmFCdWlsZFZhbHVlX1NpemVUPXB5dGhvbjM1Ll9QeV9WYUJ1aWxkVmFsdWVfU2l6ZVQKLSAgX1B5QXJnX1BhcnNlX1NpemVUPXB5dGhvbjM1Ll9QeUFyZ19QYXJzZV9TaXplVAotICBfUHlBcmdfUGFyc2VUdXBsZV9TaXplVD1weXRob24zNS5fUHlBcmdfUGFyc2VUdXBsZV9TaXplVAotICBfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUPXB5dGhvbjM1Ll9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQKLSAgX1B5QXJnX1ZhUGFyc2VfU2l6ZVQ9cHl0aG9uMzUuX1B5QXJnX1ZhUGFyc2VfU2l6ZVQKLSAgX1B5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUPXB5dGhvbjM1Ll9QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVAotICBfUHlfQnVpbGRWYWx1ZV9TaXplVD1weXRob24zNS5fUHlfQnVpbGRWYWx1ZV9TaXplVAorICBQeUFyZ19QYXJzZT1weXRob24zNi5QeUFyZ19QYXJzZQorICBQeUFyZ19QYXJzZVR1cGxlPXB5dGhvbjM2LlB5QXJnX1BhcnNlVHVwbGUKKyAgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzPXB5dGhvbjM2LlB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcworICBQeUFyZ19VbnBhY2tUdXBsZT1weXRob24zNi5QeUFyZ19VbnBhY2tUdXBsZQorICBQeUFyZ19WYVBhcnNlPXB5dGhvbjM2LlB5QXJnX1ZhUGFyc2UKKyAgUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHM9cHl0aG9uMzYuUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHMKKyAgUHlBcmdfVmFsaWRhdGVLZXl3b3JkQXJndW1lbnRzPXB5dGhvbjM2LlB5QXJnX1ZhbGlkYXRlS2V5d29yZEFyZ3VtZW50cworICBQeUJhc2VPYmplY3RfVHlwZT1weXRob24zNi5QeUJhc2VPYmplY3RfVHlwZSBEQVRBCisgIFB5Qm9vbF9Gcm9tTG9uZz1weXRob24zNi5QeUJvb2xfRnJvbUxvbmcKKyAgUHlCb29sX1R5cGU9cHl0aG9uMzYuUHlCb29sX1R5cGUgREFUQQorICBQeUJ5dGVBcnJheUl0ZXJfVHlwZT1weXRob24zNi5QeUJ5dGVBcnJheUl0ZXJfVHlwZSBEQVRBCisgIFB5Qnl0ZUFycmF5X0FzU3RyaW5nPXB5dGhvbjM2LlB5Qnl0ZUFycmF5X0FzU3RyaW5nCisgIFB5Qnl0ZUFycmF5X0NvbmNhdD1weXRob24zNi5QeUJ5dGVBcnJheV9Db25jYXQKKyAgUHlCeXRlQXJyYXlfRnJvbU9iamVjdD1weXRob24zNi5QeUJ5dGVBcnJheV9Gcm9tT2JqZWN0CisgIFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplPXB5dGhvbjM2LlB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplCisgIFB5Qnl0ZUFycmF5X1Jlc2l6ZT1weXRob24zNi5QeUJ5dGVBcnJheV9SZXNpemUKKyAgUHlCeXRlQXJyYXlfU2l6ZT1weXRob24zNi5QeUJ5dGVBcnJheV9TaXplCisgIFB5Qnl0ZUFycmF5X1R5cGU9cHl0aG9uMzYuUHlCeXRlQXJyYXlfVHlwZSBEQVRBCisgIFB5Qnl0ZXNJdGVyX1R5cGU9cHl0aG9uMzYuUHlCeXRlc0l0ZXJfVHlwZSBEQVRBCisgIFB5Qnl0ZXNfQXNTdHJpbmc9cHl0aG9uMzYuUHlCeXRlc19Bc1N0cmluZworICBQeUJ5dGVzX0FzU3RyaW5nQW5kU2l6ZT1weXRob24zNi5QeUJ5dGVzX0FzU3RyaW5nQW5kU2l6ZQorICBQeUJ5dGVzX0NvbmNhdD1weXRob24zNi5QeUJ5dGVzX0NvbmNhdAorICBQeUJ5dGVzX0NvbmNhdEFuZERlbD1weXRob24zNi5QeUJ5dGVzX0NvbmNhdEFuZERlbAorICBQeUJ5dGVzX0RlY29kZUVzY2FwZT1weXRob24zNi5QeUJ5dGVzX0RlY29kZUVzY2FwZQorICBQeUJ5dGVzX0Zyb21Gb3JtYXQ9cHl0aG9uMzYuUHlCeXRlc19Gcm9tRm9ybWF0CisgIFB5Qnl0ZXNfRnJvbUZvcm1hdFY9cHl0aG9uMzYuUHlCeXRlc19Gcm9tRm9ybWF0VgorICBQeUJ5dGVzX0Zyb21PYmplY3Q9cHl0aG9uMzYuUHlCeXRlc19Gcm9tT2JqZWN0CisgIFB5Qnl0ZXNfRnJvbVN0cmluZz1weXRob24zNi5QeUJ5dGVzX0Zyb21TdHJpbmcKKyAgUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZT1weXRob24zNi5QeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplCisgIFB5Qnl0ZXNfUmVwcj1weXRob24zNi5QeUJ5dGVzX1JlcHIKKyAgUHlCeXRlc19TaXplPXB5dGhvbjM2LlB5Qnl0ZXNfU2l6ZQorICBQeUJ5dGVzX1R5cGU9cHl0aG9uMzYuUHlCeXRlc19UeXBlIERBVEEKKyAgUHlDRnVuY3Rpb25fQ2FsbD1weXRob24zNi5QeUNGdW5jdGlvbl9DYWxsCisgIFB5Q0Z1bmN0aW9uX0NsZWFyRnJlZUxpc3Q9cHl0aG9uMzYuUHlDRnVuY3Rpb25fQ2xlYXJGcmVlTGlzdAorICBQeUNGdW5jdGlvbl9HZXRGbGFncz1weXRob24zNi5QeUNGdW5jdGlvbl9HZXRGbGFncworICBQeUNGdW5jdGlvbl9HZXRGdW5jdGlvbj1weXRob24zNi5QeUNGdW5jdGlvbl9HZXRGdW5jdGlvbgorICBQeUNGdW5jdGlvbl9HZXRTZWxmPXB5dGhvbjM2LlB5Q0Z1bmN0aW9uX0dldFNlbGYKKyAgUHlDRnVuY3Rpb25fTmV3PXB5dGhvbjM2LlB5Q0Z1bmN0aW9uX05ldworICBQeUNGdW5jdGlvbl9OZXdFeD1weXRob24zNi5QeUNGdW5jdGlvbl9OZXdFeAorICBQeUNGdW5jdGlvbl9UeXBlPXB5dGhvbjM2LlB5Q0Z1bmN0aW9uX1R5cGUgREFUQQorICBQeUNhbGxJdGVyX05ldz1weXRob24zNi5QeUNhbGxJdGVyX05ldworICBQeUNhbGxJdGVyX1R5cGU9cHl0aG9uMzYuUHlDYWxsSXRlcl9UeXBlIERBVEEKKyAgUHlDYWxsYWJsZV9DaGVjaz1weXRob24zNi5QeUNhbGxhYmxlX0NoZWNrCisgIFB5Q2Fwc3VsZV9HZXRDb250ZXh0PXB5dGhvbjM2LlB5Q2Fwc3VsZV9HZXRDb250ZXh0CisgIFB5Q2Fwc3VsZV9HZXREZXN0cnVjdG9yPXB5dGhvbjM2LlB5Q2Fwc3VsZV9HZXREZXN0cnVjdG9yCisgIFB5Q2Fwc3VsZV9HZXROYW1lPXB5dGhvbjM2LlB5Q2Fwc3VsZV9HZXROYW1lCisgIFB5Q2Fwc3VsZV9HZXRQb2ludGVyPXB5dGhvbjM2LlB5Q2Fwc3VsZV9HZXRQb2ludGVyCisgIFB5Q2Fwc3VsZV9JbXBvcnQ9cHl0aG9uMzYuUHlDYXBzdWxlX0ltcG9ydAorICBQeUNhcHN1bGVfSXNWYWxpZD1weXRob24zNi5QeUNhcHN1bGVfSXNWYWxpZAorICBQeUNhcHN1bGVfTmV3PXB5dGhvbjM2LlB5Q2Fwc3VsZV9OZXcKKyAgUHlDYXBzdWxlX1NldENvbnRleHQ9cHl0aG9uMzYuUHlDYXBzdWxlX1NldENvbnRleHQKKyAgUHlDYXBzdWxlX1NldERlc3RydWN0b3I9cHl0aG9uMzYuUHlDYXBzdWxlX1NldERlc3RydWN0b3IKKyAgUHlDYXBzdWxlX1NldE5hbWU9cHl0aG9uMzYuUHlDYXBzdWxlX1NldE5hbWUKKyAgUHlDYXBzdWxlX1NldFBvaW50ZXI9cHl0aG9uMzYuUHlDYXBzdWxlX1NldFBvaW50ZXIKKyAgUHlDYXBzdWxlX1R5cGU9cHl0aG9uMzYuUHlDYXBzdWxlX1R5cGUgREFUQQorICBQeUNsYXNzTWV0aG9kRGVzY3JfVHlwZT1weXRob24zNi5QeUNsYXNzTWV0aG9kRGVzY3JfVHlwZSBEQVRBCisgIFB5Q29kZWNfQmFja3NsYXNoUmVwbGFjZUVycm9ycz1weXRob24zNi5QeUNvZGVjX0JhY2tzbGFzaFJlcGxhY2VFcnJvcnMKKyAgUHlDb2RlY19EZWNvZGU9cHl0aG9uMzYuUHlDb2RlY19EZWNvZGUKKyAgUHlDb2RlY19EZWNvZGVyPXB5dGhvbjM2LlB5Q29kZWNfRGVjb2RlcgorICBQeUNvZGVjX0VuY29kZT1weXRob24zNi5QeUNvZGVjX0VuY29kZQorICBQeUNvZGVjX0VuY29kZXI9cHl0aG9uMzYuUHlDb2RlY19FbmNvZGVyCisgIFB5Q29kZWNfSWdub3JlRXJyb3JzPXB5dGhvbjM2LlB5Q29kZWNfSWdub3JlRXJyb3JzCisgIFB5Q29kZWNfSW5jcmVtZW50YWxEZWNvZGVyPXB5dGhvbjM2LlB5Q29kZWNfSW5jcmVtZW50YWxEZWNvZGVyCisgIFB5Q29kZWNfSW5jcmVtZW50YWxFbmNvZGVyPXB5dGhvbjM2LlB5Q29kZWNfSW5jcmVtZW50YWxFbmNvZGVyCisgIFB5Q29kZWNfS25vd25FbmNvZGluZz1weXRob24zNi5QeUNvZGVjX0tub3duRW5jb2RpbmcKKyAgUHlDb2RlY19Mb29rdXBFcnJvcj1weXRob24zNi5QeUNvZGVjX0xvb2t1cEVycm9yCisgIFB5Q29kZWNfUmVnaXN0ZXI9cHl0aG9uMzYuUHlDb2RlY19SZWdpc3RlcgorICBQeUNvZGVjX1JlZ2lzdGVyRXJyb3I9cHl0aG9uMzYuUHlDb2RlY19SZWdpc3RlckVycm9yCisgIFB5Q29kZWNfUmVwbGFjZUVycm9ycz1weXRob24zNi5QeUNvZGVjX1JlcGxhY2VFcnJvcnMKKyAgUHlDb2RlY19TdHJlYW1SZWFkZXI9cHl0aG9uMzYuUHlDb2RlY19TdHJlYW1SZWFkZXIKKyAgUHlDb2RlY19TdHJlYW1Xcml0ZXI9cHl0aG9uMzYuUHlDb2RlY19TdHJlYW1Xcml0ZXIKKyAgUHlDb2RlY19TdHJpY3RFcnJvcnM9cHl0aG9uMzYuUHlDb2RlY19TdHJpY3RFcnJvcnMKKyAgUHlDb2RlY19YTUxDaGFyUmVmUmVwbGFjZUVycm9ycz1weXRob24zNi5QeUNvZGVjX1hNTENoYXJSZWZSZXBsYWNlRXJyb3JzCisgIFB5Q29tcGxleF9Gcm9tRG91Ymxlcz1weXRob24zNi5QeUNvbXBsZXhfRnJvbURvdWJsZXMKKyAgUHlDb21wbGV4X0ltYWdBc0RvdWJsZT1weXRob24zNi5QeUNvbXBsZXhfSW1hZ0FzRG91YmxlCisgIFB5Q29tcGxleF9SZWFsQXNEb3VibGU9cHl0aG9uMzYuUHlDb21wbGV4X1JlYWxBc0RvdWJsZQorICBQeUNvbXBsZXhfVHlwZT1weXRob24zNi5QeUNvbXBsZXhfVHlwZSBEQVRBCisgIFB5RGVzY3JfTmV3Q2xhc3NNZXRob2Q9cHl0aG9uMzYuUHlEZXNjcl9OZXdDbGFzc01ldGhvZAorICBQeURlc2NyX05ld0dldFNldD1weXRob24zNi5QeURlc2NyX05ld0dldFNldAorICBQeURlc2NyX05ld01lbWJlcj1weXRob24zNi5QeURlc2NyX05ld01lbWJlcgorICBQeURlc2NyX05ld01ldGhvZD1weXRob24zNi5QeURlc2NyX05ld01ldGhvZAorICBQeURpY3RJdGVtc19UeXBlPXB5dGhvbjM2LlB5RGljdEl0ZW1zX1R5cGUgREFUQQorICBQeURpY3RJdGVySXRlbV9UeXBlPXB5dGhvbjM2LlB5RGljdEl0ZXJJdGVtX1R5cGUgREFUQQorICBQeURpY3RJdGVyS2V5X1R5cGU9cHl0aG9uMzYuUHlEaWN0SXRlcktleV9UeXBlIERBVEEKKyAgUHlEaWN0SXRlclZhbHVlX1R5cGU9cHl0aG9uMzYuUHlEaWN0SXRlclZhbHVlX1R5cGUgREFUQQorICBQeURpY3RLZXlzX1R5cGU9cHl0aG9uMzYuUHlEaWN0S2V5c19UeXBlIERBVEEKKyAgUHlEaWN0UHJveHlfTmV3PXB5dGhvbjM2LlB5RGljdFByb3h5X05ldworICBQeURpY3RQcm94eV9UeXBlPXB5dGhvbjM2LlB5RGljdFByb3h5X1R5cGUgREFUQQorICBQeURpY3RWYWx1ZXNfVHlwZT1weXRob24zNi5QeURpY3RWYWx1ZXNfVHlwZSBEQVRBCisgIFB5RGljdF9DbGVhcj1weXRob24zNi5QeURpY3RfQ2xlYXIKKyAgUHlEaWN0X0NvbnRhaW5zPXB5dGhvbjM2LlB5RGljdF9Db250YWlucworICBQeURpY3RfQ29weT1weXRob24zNi5QeURpY3RfQ29weQorICBQeURpY3RfRGVsSXRlbT1weXRob24zNi5QeURpY3RfRGVsSXRlbQorICBQeURpY3RfRGVsSXRlbVN0cmluZz1weXRob24zNi5QeURpY3RfRGVsSXRlbVN0cmluZworICBQeURpY3RfR2V0SXRlbT1weXRob24zNi5QeURpY3RfR2V0SXRlbQorICBQeURpY3RfR2V0SXRlbVN0cmluZz1weXRob24zNi5QeURpY3RfR2V0SXRlbVN0cmluZworICBQeURpY3RfR2V0SXRlbVdpdGhFcnJvcj1weXRob24zNi5QeURpY3RfR2V0SXRlbVdpdGhFcnJvcgorICBQeURpY3RfSXRlbXM9cHl0aG9uMzYuUHlEaWN0X0l0ZW1zCisgIFB5RGljdF9LZXlzPXB5dGhvbjM2LlB5RGljdF9LZXlzCisgIFB5RGljdF9NZXJnZT1weXRob24zNi5QeURpY3RfTWVyZ2UKKyAgUHlEaWN0X01lcmdlRnJvbVNlcTI9cHl0aG9uMzYuUHlEaWN0X01lcmdlRnJvbVNlcTIKKyAgUHlEaWN0X05ldz1weXRob24zNi5QeURpY3RfTmV3CisgIFB5RGljdF9OZXh0PXB5dGhvbjM2LlB5RGljdF9OZXh0CisgIFB5RGljdF9TZXRJdGVtPXB5dGhvbjM2LlB5RGljdF9TZXRJdGVtCisgIFB5RGljdF9TZXRJdGVtU3RyaW5nPXB5dGhvbjM2LlB5RGljdF9TZXRJdGVtU3RyaW5nCisgIFB5RGljdF9TaXplPXB5dGhvbjM2LlB5RGljdF9TaXplCisgIFB5RGljdF9UeXBlPXB5dGhvbjM2LlB5RGljdF9UeXBlIERBVEEKKyAgUHlEaWN0X1VwZGF0ZT1weXRob24zNi5QeURpY3RfVXBkYXRlCisgIFB5RGljdF9WYWx1ZXM9cHl0aG9uMzYuUHlEaWN0X1ZhbHVlcworICBQeUVsbGlwc2lzX1R5cGU9cHl0aG9uMzYuUHlFbGxpcHNpc19UeXBlIERBVEEKKyAgUHlFbnVtX1R5cGU9cHl0aG9uMzYuUHlFbnVtX1R5cGUgREFUQQorICBQeUVycl9CYWRBcmd1bWVudD1weXRob24zNi5QeUVycl9CYWRBcmd1bWVudAorICBQeUVycl9CYWRJbnRlcm5hbENhbGw9cHl0aG9uMzYuUHlFcnJfQmFkSW50ZXJuYWxDYWxsCisgIFB5RXJyX0NoZWNrU2lnbmFscz1weXRob24zNi5QeUVycl9DaGVja1NpZ25hbHMKKyAgUHlFcnJfQ2xlYXI9cHl0aG9uMzYuUHlFcnJfQ2xlYXIKKyAgUHlFcnJfRGlzcGxheT1weXRob24zNi5QeUVycl9EaXNwbGF5CisgIFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXM9cHl0aG9uMzYuUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcworICBQeUVycl9GZXRjaD1weXRob24zNi5QeUVycl9GZXRjaAorICBQeUVycl9Gb3JtYXQ9cHl0aG9uMzYuUHlFcnJfRm9ybWF0CisgIFB5RXJyX0Zvcm1hdFY9cHl0aG9uMzYuUHlFcnJfRm9ybWF0VgorICBQeUVycl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXM9cHl0aG9uMzYuUHlFcnJfR2l2ZW5FeGNlcHRpb25NYXRjaGVzCisgIFB5RXJyX05ld0V4Y2VwdGlvbj1weXRob24zNi5QeUVycl9OZXdFeGNlcHRpb24KKyAgUHlFcnJfTmV3RXhjZXB0aW9uV2l0aERvYz1weXRob24zNi5QeUVycl9OZXdFeGNlcHRpb25XaXRoRG9jCisgIFB5RXJyX05vTWVtb3J5PXB5dGhvbjM2LlB5RXJyX05vTWVtb3J5CisgIFB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbj1weXRob24zNi5QeUVycl9Ob3JtYWxpemVFeGNlcHRpb24KKyAgUHlFcnJfT2NjdXJyZWQ9cHl0aG9uMzYuUHlFcnJfT2NjdXJyZWQKKyAgUHlFcnJfUHJpbnQ9cHl0aG9uMzYuUHlFcnJfUHJpbnQKKyAgUHlFcnJfUHJpbnRFeD1weXRob24zNi5QeUVycl9QcmludEV4CisgIFB5RXJyX1Byb2dyYW1UZXh0PXB5dGhvbjM2LlB5RXJyX1Byb2dyYW1UZXh0CisgIFB5RXJyX1Jlc3RvcmU9cHl0aG9uMzYuUHlFcnJfUmVzdG9yZQorICBQeUVycl9TZXRGcm9tRXJybm89cHl0aG9uMzYuUHlFcnJfU2V0RnJvbUVycm5vCisgIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZT1weXRob24zNi5QeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWUKKyAgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0PXB5dGhvbjM2LlB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZU9iamVjdAorICBQeUVycl9TZXRJbnRlcnJ1cHQ9cHl0aG9uMzYuUHlFcnJfU2V0SW50ZXJydXB0CisgIFB5RXJyX1NldE5vbmU9cHl0aG9uMzYuUHlFcnJfU2V0Tm9uZQorICBQeUVycl9TZXRPYmplY3Q9cHl0aG9uMzYuUHlFcnJfU2V0T2JqZWN0CisgIFB5RXJyX1NldFN0cmluZz1weXRob24zNi5QeUVycl9TZXRTdHJpbmcKKyAgUHlFcnJfU3ludGF4TG9jYXRpb249cHl0aG9uMzYuUHlFcnJfU3ludGF4TG9jYXRpb24KKyAgUHlFcnJfV2FybkV4PXB5dGhvbjM2LlB5RXJyX1dhcm5FeAorICBQeUVycl9XYXJuRXhwbGljaXQ9cHl0aG9uMzYuUHlFcnJfV2FybkV4cGxpY2l0CisgIFB5RXJyX1dhcm5Gb3JtYXQ9cHl0aG9uMzYuUHlFcnJfV2FybkZvcm1hdAorICBQeUVycl9Xcml0ZVVucmFpc2FibGU9cHl0aG9uMzYuUHlFcnJfV3JpdGVVbnJhaXNhYmxlCisgIFB5RXZhbF9BY3F1aXJlTG9jaz1weXRob24zNi5QeUV2YWxfQWNxdWlyZUxvY2sKKyAgUHlFdmFsX0FjcXVpcmVUaHJlYWQ9cHl0aG9uMzYuUHlFdmFsX0FjcXVpcmVUaHJlYWQKKyAgUHlFdmFsX0NhbGxGdW5jdGlvbj1weXRob24zNi5QeUV2YWxfQ2FsbEZ1bmN0aW9uCisgIFB5RXZhbF9DYWxsTWV0aG9kPXB5dGhvbjM2LlB5RXZhbF9DYWxsTWV0aG9kCisgIFB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzPXB5dGhvbjM2LlB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzCisgIFB5RXZhbF9FdmFsQ29kZT1weXRob24zNi5QeUV2YWxfRXZhbENvZGUKKyAgUHlFdmFsX0V2YWxDb2RlRXg9cHl0aG9uMzYuUHlFdmFsX0V2YWxDb2RlRXgKKyAgUHlFdmFsX0V2YWxGcmFtZT1weXRob24zNi5QeUV2YWxfRXZhbEZyYW1lCisgIFB5RXZhbF9FdmFsRnJhbWVFeD1weXRob24zNi5QeUV2YWxfRXZhbEZyYW1lRXgKKyAgUHlFdmFsX0dldEJ1aWx0aW5zPXB5dGhvbjM2LlB5RXZhbF9HZXRCdWlsdGlucworICBQeUV2YWxfR2V0Q2FsbFN0YXRzPXB5dGhvbjM2LlB5RXZhbF9HZXRDYWxsU3RhdHMKKyAgUHlFdmFsX0dldEZyYW1lPXB5dGhvbjM2LlB5RXZhbF9HZXRGcmFtZQorICBQeUV2YWxfR2V0RnVuY0Rlc2M9cHl0aG9uMzYuUHlFdmFsX0dldEZ1bmNEZXNjCisgIFB5RXZhbF9HZXRGdW5jTmFtZT1weXRob24zNi5QeUV2YWxfR2V0RnVuY05hbWUKKyAgUHlFdmFsX0dldEdsb2JhbHM9cHl0aG9uMzYuUHlFdmFsX0dldEdsb2JhbHMKKyAgUHlFdmFsX0dldExvY2Fscz1weXRob24zNi5QeUV2YWxfR2V0TG9jYWxzCisgIFB5RXZhbF9Jbml0VGhyZWFkcz1weXRob24zNi5QeUV2YWxfSW5pdFRocmVhZHMKKyAgUHlFdmFsX1JlSW5pdFRocmVhZHM9cHl0aG9uMzYuUHlFdmFsX1JlSW5pdFRocmVhZHMKKyAgUHlFdmFsX1JlbGVhc2VMb2NrPXB5dGhvbjM2LlB5RXZhbF9SZWxlYXNlTG9jaworICBQeUV2YWxfUmVsZWFzZVRocmVhZD1weXRob24zNi5QeUV2YWxfUmVsZWFzZVRocmVhZAorICBQeUV2YWxfUmVzdG9yZVRocmVhZD1weXRob24zNi5QeUV2YWxfUmVzdG9yZVRocmVhZAorICBQeUV2YWxfU2F2ZVRocmVhZD1weXRob24zNi5QeUV2YWxfU2F2ZVRocmVhZAorICBQeUV2YWxfVGhyZWFkc0luaXRpYWxpemVkPXB5dGhvbjM2LlB5RXZhbF9UaHJlYWRzSW5pdGlhbGl6ZWQKKyAgUHlFeGNfQXJpdGhtZXRpY0Vycm9yPXB5dGhvbjM2LlB5RXhjX0FyaXRobWV0aWNFcnJvciBEQVRBCisgIFB5RXhjX0Fzc2VydGlvbkVycm9yPXB5dGhvbjM2LlB5RXhjX0Fzc2VydGlvbkVycm9yIERBVEEKKyAgUHlFeGNfQXR0cmlidXRlRXJyb3I9cHl0aG9uMzYuUHlFeGNfQXR0cmlidXRlRXJyb3IgREFUQQorICBQeUV4Y19CYXNlRXhjZXB0aW9uPXB5dGhvbjM2LlB5RXhjX0Jhc2VFeGNlcHRpb24gREFUQQorICBQeUV4Y19CdWZmZXJFcnJvcj1weXRob24zNi5QeUV4Y19CdWZmZXJFcnJvciBEQVRBCisgIFB5RXhjX0J5dGVzV2FybmluZz1weXRob24zNi5QeUV4Y19CeXRlc1dhcm5pbmcgREFUQQorICBQeUV4Y19EZXByZWNhdGlvbldhcm5pbmc9cHl0aG9uMzYuUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nIERBVEEKKyAgUHlFeGNfRU9GRXJyb3I9cHl0aG9uMzYuUHlFeGNfRU9GRXJyb3IgREFUQQorICBQeUV4Y19FbnZpcm9ubWVudEVycm9yPXB5dGhvbjM2LlB5RXhjX0Vudmlyb25tZW50RXJyb3IgREFUQQorICBQeUV4Y19FeGNlcHRpb249cHl0aG9uMzYuUHlFeGNfRXhjZXB0aW9uIERBVEEKKyAgUHlFeGNfRmxvYXRpbmdQb2ludEVycm9yPXB5dGhvbjM2LlB5RXhjX0Zsb2F0aW5nUG9pbnRFcnJvciBEQVRBCisgIFB5RXhjX0Z1dHVyZVdhcm5pbmc9cHl0aG9uMzYuUHlFeGNfRnV0dXJlV2FybmluZyBEQVRBCisgIFB5RXhjX0dlbmVyYXRvckV4aXQ9cHl0aG9uMzYuUHlFeGNfR2VuZXJhdG9yRXhpdCBEQVRBCisgIFB5RXhjX0lPRXJyb3I9cHl0aG9uMzYuUHlFeGNfSU9FcnJvciBEQVRBCisgIFB5RXhjX0ltcG9ydEVycm9yPXB5dGhvbjM2LlB5RXhjX0ltcG9ydEVycm9yIERBVEEKKyAgUHlFeGNfSW1wb3J0V2FybmluZz1weXRob24zNi5QeUV4Y19JbXBvcnRXYXJuaW5nIERBVEEKKyAgUHlFeGNfSW5kZW50YXRpb25FcnJvcj1weXRob24zNi5QeUV4Y19JbmRlbnRhdGlvbkVycm9yIERBVEEKKyAgUHlFeGNfSW5kZXhFcnJvcj1weXRob24zNi5QeUV4Y19JbmRleEVycm9yIERBVEEKKyAgUHlFeGNfS2V5RXJyb3I9cHl0aG9uMzYuUHlFeGNfS2V5RXJyb3IgREFUQQorICBQeUV4Y19LZXlib2FyZEludGVycnVwdD1weXRob24zNi5QeUV4Y19LZXlib2FyZEludGVycnVwdCBEQVRBCisgIFB5RXhjX0xvb2t1cEVycm9yPXB5dGhvbjM2LlB5RXhjX0xvb2t1cEVycm9yIERBVEEKKyAgUHlFeGNfTWVtb3J5RXJyb3I9cHl0aG9uMzYuUHlFeGNfTWVtb3J5RXJyb3IgREFUQQorICBQeUV4Y19NZW1vcnlFcnJvckluc3Q9cHl0aG9uMzYuUHlFeGNfTWVtb3J5RXJyb3JJbnN0IERBVEEKKyAgUHlFeGNfTmFtZUVycm9yPXB5dGhvbjM2LlB5RXhjX05hbWVFcnJvciBEQVRBCisgIFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3I9cHl0aG9uMzYuUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciBEQVRBCisgIFB5RXhjX09TRXJyb3I9cHl0aG9uMzYuUHlFeGNfT1NFcnJvciBEQVRBCisgIFB5RXhjX092ZXJmbG93RXJyb3I9cHl0aG9uMzYuUHlFeGNfT3ZlcmZsb3dFcnJvciBEQVRBCisgIFB5RXhjX1BlbmRpbmdEZXByZWNhdGlvbldhcm5pbmc9cHl0aG9uMzYuUHlFeGNfUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZyBEQVRBCisgIFB5RXhjX1JlY3Vyc2lvbkVycm9ySW5zdD1weXRob24zNi5QeUV4Y19SZWN1cnNpb25FcnJvckluc3QgREFUQQorICBQeUV4Y19SZWZlcmVuY2VFcnJvcj1weXRob24zNi5QeUV4Y19SZWZlcmVuY2VFcnJvciBEQVRBCisgIFB5RXhjX1J1bnRpbWVFcnJvcj1weXRob24zNi5QeUV4Y19SdW50aW1lRXJyb3IgREFUQQorICBQeUV4Y19SdW50aW1lV2FybmluZz1weXRob24zNi5QeUV4Y19SdW50aW1lV2FybmluZyBEQVRBCisgIFB5RXhjX1N0b3BJdGVyYXRpb249cHl0aG9uMzYuUHlFeGNfU3RvcEl0ZXJhdGlvbiBEQVRBCisgIFB5RXhjX1N5bnRheEVycm9yPXB5dGhvbjM2LlB5RXhjX1N5bnRheEVycm9yIERBVEEKKyAgUHlFeGNfU3ludGF4V2FybmluZz1weXRob24zNi5QeUV4Y19TeW50YXhXYXJuaW5nIERBVEEKKyAgUHlFeGNfU3lzdGVtRXJyb3I9cHl0aG9uMzYuUHlFeGNfU3lzdGVtRXJyb3IgREFUQQorICBQeUV4Y19TeXN0ZW1FeGl0PXB5dGhvbjM2LlB5RXhjX1N5c3RlbUV4aXQgREFUQQorICBQeUV4Y19UYWJFcnJvcj1weXRob24zNi5QeUV4Y19UYWJFcnJvciBEQVRBCisgIFB5RXhjX1R5cGVFcnJvcj1weXRob24zNi5QeUV4Y19UeXBlRXJyb3IgREFUQQorICBQeUV4Y19VbmJvdW5kTG9jYWxFcnJvcj1weXRob24zNi5QeUV4Y19VbmJvdW5kTG9jYWxFcnJvciBEQVRBCisgIFB5RXhjX1VuaWNvZGVEZWNvZGVFcnJvcj1weXRob24zNi5QeUV4Y19Vbmljb2RlRGVjb2RlRXJyb3IgREFUQQorICBQeUV4Y19Vbmljb2RlRW5jb2RlRXJyb3I9cHl0aG9uMzYuUHlFeGNfVW5pY29kZUVuY29kZUVycm9yIERBVEEKKyAgUHlFeGNfVW5pY29kZUVycm9yPXB5dGhvbjM2LlB5RXhjX1VuaWNvZGVFcnJvciBEQVRBCisgIFB5RXhjX1VuaWNvZGVUcmFuc2xhdGVFcnJvcj1weXRob24zNi5QeUV4Y19Vbmljb2RlVHJhbnNsYXRlRXJyb3IgREFUQQorICBQeUV4Y19Vbmljb2RlV2FybmluZz1weXRob24zNi5QeUV4Y19Vbmljb2RlV2FybmluZyBEQVRBCisgIFB5RXhjX1VzZXJXYXJuaW5nPXB5dGhvbjM2LlB5RXhjX1VzZXJXYXJuaW5nIERBVEEKKyAgUHlFeGNfVmFsdWVFcnJvcj1weXRob24zNi5QeUV4Y19WYWx1ZUVycm9yIERBVEEKKyAgUHlFeGNfV2FybmluZz1weXRob24zNi5QeUV4Y19XYXJuaW5nIERBVEEKKyAgUHlFeGNfWmVyb0RpdmlzaW9uRXJyb3I9cHl0aG9uMzYuUHlFeGNfWmVyb0RpdmlzaW9uRXJyb3IgREFUQQorICBQeUV4Y2VwdGlvbl9HZXRDYXVzZT1weXRob24zNi5QeUV4Y2VwdGlvbl9HZXRDYXVzZQorICBQeUV4Y2VwdGlvbl9HZXRDb250ZXh0PXB5dGhvbjM2LlB5RXhjZXB0aW9uX0dldENvbnRleHQKKyAgUHlFeGNlcHRpb25fR2V0VHJhY2ViYWNrPXB5dGhvbjM2LlB5RXhjZXB0aW9uX0dldFRyYWNlYmFjaworICBQeUV4Y2VwdGlvbl9TZXRDYXVzZT1weXRob24zNi5QeUV4Y2VwdGlvbl9TZXRDYXVzZQorICBQeUV4Y2VwdGlvbl9TZXRDb250ZXh0PXB5dGhvbjM2LlB5RXhjZXB0aW9uX1NldENvbnRleHQKKyAgUHlFeGNlcHRpb25fU2V0VHJhY2ViYWNrPXB5dGhvbjM2LlB5RXhjZXB0aW9uX1NldFRyYWNlYmFjaworICBQeUZpbGVfRnJvbUZkPXB5dGhvbjM2LlB5RmlsZV9Gcm9tRmQKKyAgUHlGaWxlX0dldExpbmU9cHl0aG9uMzYuUHlGaWxlX0dldExpbmUKKyAgUHlGaWxlX1dyaXRlT2JqZWN0PXB5dGhvbjM2LlB5RmlsZV9Xcml0ZU9iamVjdAorICBQeUZpbGVfV3JpdGVTdHJpbmc9cHl0aG9uMzYuUHlGaWxlX1dyaXRlU3RyaW5nCisgIFB5RmlsdGVyX1R5cGU9cHl0aG9uMzYuUHlGaWx0ZXJfVHlwZSBEQVRBCisgIFB5RmxvYXRfQXNEb3VibGU9cHl0aG9uMzYuUHlGbG9hdF9Bc0RvdWJsZQorICBQeUZsb2F0X0Zyb21Eb3VibGU9cHl0aG9uMzYuUHlGbG9hdF9Gcm9tRG91YmxlCisgIFB5RmxvYXRfRnJvbVN0cmluZz1weXRob24zNi5QeUZsb2F0X0Zyb21TdHJpbmcKKyAgUHlGbG9hdF9HZXRJbmZvPXB5dGhvbjM2LlB5RmxvYXRfR2V0SW5mbworICBQeUZsb2F0X0dldE1heD1weXRob24zNi5QeUZsb2F0X0dldE1heAorICBQeUZsb2F0X0dldE1pbj1weXRob24zNi5QeUZsb2F0X0dldE1pbgorICBQeUZsb2F0X1R5cGU9cHl0aG9uMzYuUHlGbG9hdF9UeXBlIERBVEEKKyAgUHlGcm96ZW5TZXRfTmV3PXB5dGhvbjM2LlB5RnJvemVuU2V0X05ldworICBQeUZyb3plblNldF9UeXBlPXB5dGhvbjM2LlB5RnJvemVuU2V0X1R5cGUgREFUQQorICBQeUdDX0NvbGxlY3Q9cHl0aG9uMzYuUHlHQ19Db2xsZWN0CisgIFB5R0lMU3RhdGVfRW5zdXJlPXB5dGhvbjM2LlB5R0lMU3RhdGVfRW5zdXJlCisgIFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlPXB5dGhvbjM2LlB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlCisgIFB5R0lMU3RhdGVfUmVsZWFzZT1weXRob24zNi5QeUdJTFN0YXRlX1JlbGVhc2UKKyAgUHlHZXRTZXREZXNjcl9UeXBlPXB5dGhvbjM2LlB5R2V0U2V0RGVzY3JfVHlwZSBEQVRBCisgIFB5SW1wb3J0X0FkZE1vZHVsZT1weXRob24zNi5QeUltcG9ydF9BZGRNb2R1bGUKKyAgUHlJbXBvcnRfQXBwZW5kSW5pdHRhYj1weXRob24zNi5QeUltcG9ydF9BcHBlbmRJbml0dGFiCisgIFB5SW1wb3J0X0NsZWFudXA9cHl0aG9uMzYuUHlJbXBvcnRfQ2xlYW51cAorICBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZT1weXRob24zNi5QeUltcG9ydF9FeGVjQ29kZU1vZHVsZQorICBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZUV4PXB5dGhvbjM2LlB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlRXgKKyAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzPXB5dGhvbjM2LlB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aFBhdGhuYW1lcworICBQeUltcG9ydF9HZXRJbXBvcnRlcj1weXRob24zNi5QeUltcG9ydF9HZXRJbXBvcnRlcgorICBQeUltcG9ydF9HZXRNYWdpY051bWJlcj1weXRob24zNi5QeUltcG9ydF9HZXRNYWdpY051bWJlcgorICBQeUltcG9ydF9HZXRNYWdpY1RhZz1weXRob24zNi5QeUltcG9ydF9HZXRNYWdpY1RhZworICBQeUltcG9ydF9HZXRNb2R1bGVEaWN0PXB5dGhvbjM2LlB5SW1wb3J0X0dldE1vZHVsZURpY3QKKyAgUHlJbXBvcnRfSW1wb3J0PXB5dGhvbjM2LlB5SW1wb3J0X0ltcG9ydAorICBQeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGU9cHl0aG9uMzYuUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlCisgIFB5SW1wb3J0X0ltcG9ydE1vZHVsZT1weXRob24zNi5QeUltcG9ydF9JbXBvcnRNb2R1bGUKKyAgUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWw9cHl0aG9uMzYuUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWwKKyAgUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9jaz1weXRob24zNi5QeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrCisgIFB5SW1wb3J0X1JlbG9hZE1vZHVsZT1weXRob24zNi5QeUltcG9ydF9SZWxvYWRNb2R1bGUKKyAgUHlJbnRlcnByZXRlclN0YXRlX0NsZWFyPXB5dGhvbjM2LlB5SW50ZXJwcmV0ZXJTdGF0ZV9DbGVhcgorICBQeUludGVycHJldGVyU3RhdGVfRGVsZXRlPXB5dGhvbjM2LlB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGUKKyAgUHlJbnRlcnByZXRlclN0YXRlX05ldz1weXRob24zNi5QeUludGVycHJldGVyU3RhdGVfTmV3CisgIFB5SXRlcl9OZXh0PXB5dGhvbjM2LlB5SXRlcl9OZXh0CisgIFB5TGlzdEl0ZXJfVHlwZT1weXRob24zNi5QeUxpc3RJdGVyX1R5cGUgREFUQQorICBQeUxpc3RSZXZJdGVyX1R5cGU9cHl0aG9uMzYuUHlMaXN0UmV2SXRlcl9UeXBlIERBVEEKKyAgUHlMaXN0X0FwcGVuZD1weXRob24zNi5QeUxpc3RfQXBwZW5kCisgIFB5TGlzdF9Bc1R1cGxlPXB5dGhvbjM2LlB5TGlzdF9Bc1R1cGxlCisgIFB5TGlzdF9HZXRJdGVtPXB5dGhvbjM2LlB5TGlzdF9HZXRJdGVtCisgIFB5TGlzdF9HZXRTbGljZT1weXRob24zNi5QeUxpc3RfR2V0U2xpY2UKKyAgUHlMaXN0X0luc2VydD1weXRob24zNi5QeUxpc3RfSW5zZXJ0CisgIFB5TGlzdF9OZXc9cHl0aG9uMzYuUHlMaXN0X05ldworICBQeUxpc3RfUmV2ZXJzZT1weXRob24zNi5QeUxpc3RfUmV2ZXJzZQorICBQeUxpc3RfU2V0SXRlbT1weXRob24zNi5QeUxpc3RfU2V0SXRlbQorICBQeUxpc3RfU2V0U2xpY2U9cHl0aG9uMzYuUHlMaXN0X1NldFNsaWNlCisgIFB5TGlzdF9TaXplPXB5dGhvbjM2LlB5TGlzdF9TaXplCisgIFB5TGlzdF9Tb3J0PXB5dGhvbjM2LlB5TGlzdF9Tb3J0CisgIFB5TGlzdF9UeXBlPXB5dGhvbjM2LlB5TGlzdF9UeXBlIERBVEEKKyAgUHlMb25nUmFuZ2VJdGVyX1R5cGU9cHl0aG9uMzYuUHlMb25nUmFuZ2VJdGVyX1R5cGUgREFUQQorICBQeUxvbmdfQXNEb3VibGU9cHl0aG9uMzYuUHlMb25nX0FzRG91YmxlCisgIFB5TG9uZ19Bc0xvbmc9cHl0aG9uMzYuUHlMb25nX0FzTG9uZworICBQeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3c9cHl0aG9uMzYuUHlMb25nX0FzTG9uZ0FuZE92ZXJmbG93CisgIFB5TG9uZ19Bc0xvbmdMb25nPXB5dGhvbjM2LlB5TG9uZ19Bc0xvbmdMb25nCisgIFB5TG9uZ19Bc0xvbmdMb25nQW5kT3ZlcmZsb3c9cHl0aG9uMzYuUHlMb25nX0FzTG9uZ0xvbmdBbmRPdmVyZmxvdworICBQeUxvbmdfQXNTaXplX3Q9cHl0aG9uMzYuUHlMb25nX0FzU2l6ZV90CisgIFB5TG9uZ19Bc1NzaXplX3Q9cHl0aG9uMzYuUHlMb25nX0FzU3NpemVfdAorICBQeUxvbmdfQXNVbnNpZ25lZExvbmc9cHl0aG9uMzYuUHlMb25nX0FzVW5zaWduZWRMb25nCisgIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmc9cHl0aG9uMzYuUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZworICBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzaz1weXRob24zNi5QeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzaworICBQeUxvbmdfQXNVbnNpZ25lZExvbmdNYXNrPXB5dGhvbjM2LlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ01hc2sKKyAgUHlMb25nX0FzVm9pZFB0cj1weXRob24zNi5QeUxvbmdfQXNWb2lkUHRyCisgIFB5TG9uZ19Gcm9tRG91YmxlPXB5dGhvbjM2LlB5TG9uZ19Gcm9tRG91YmxlCisgIFB5TG9uZ19Gcm9tTG9uZz1weXRob24zNi5QeUxvbmdfRnJvbUxvbmcKKyAgUHlMb25nX0Zyb21Mb25nTG9uZz1weXRob24zNi5QeUxvbmdfRnJvbUxvbmdMb25nCisgIFB5TG9uZ19Gcm9tU2l6ZV90PXB5dGhvbjM2LlB5TG9uZ19Gcm9tU2l6ZV90CisgIFB5TG9uZ19Gcm9tU3NpemVfdD1weXRob24zNi5QeUxvbmdfRnJvbVNzaXplX3QKKyAgUHlMb25nX0Zyb21TdHJpbmc9cHl0aG9uMzYuUHlMb25nX0Zyb21TdHJpbmcKKyAgUHlMb25nX0Zyb21VbnNpZ25lZExvbmc9cHl0aG9uMzYuUHlMb25nX0Zyb21VbnNpZ25lZExvbmcKKyAgUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nPXB5dGhvbjM2LlB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZworICBQeUxvbmdfRnJvbVZvaWRQdHI9cHl0aG9uMzYuUHlMb25nX0Zyb21Wb2lkUHRyCisgIFB5TG9uZ19HZXRJbmZvPXB5dGhvbjM2LlB5TG9uZ19HZXRJbmZvCisgIFB5TG9uZ19UeXBlPXB5dGhvbjM2LlB5TG9uZ19UeXBlIERBVEEKKyAgUHlNYXBfVHlwZT1weXRob24zNi5QeU1hcF9UeXBlIERBVEEKKyAgUHlNYXBwaW5nX0NoZWNrPXB5dGhvbjM2LlB5TWFwcGluZ19DaGVjaworICBQeU1hcHBpbmdfR2V0SXRlbVN0cmluZz1weXRob24zNi5QeU1hcHBpbmdfR2V0SXRlbVN0cmluZworICBQeU1hcHBpbmdfSGFzS2V5PXB5dGhvbjM2LlB5TWFwcGluZ19IYXNLZXkKKyAgUHlNYXBwaW5nX0hhc0tleVN0cmluZz1weXRob24zNi5QeU1hcHBpbmdfSGFzS2V5U3RyaW5nCisgIFB5TWFwcGluZ19JdGVtcz1weXRob24zNi5QeU1hcHBpbmdfSXRlbXMKKyAgUHlNYXBwaW5nX0tleXM9cHl0aG9uMzYuUHlNYXBwaW5nX0tleXMKKyAgUHlNYXBwaW5nX0xlbmd0aD1weXRob24zNi5QeU1hcHBpbmdfTGVuZ3RoCisgIFB5TWFwcGluZ19TZXRJdGVtU3RyaW5nPXB5dGhvbjM2LlB5TWFwcGluZ19TZXRJdGVtU3RyaW5nCisgIFB5TWFwcGluZ19TaXplPXB5dGhvbjM2LlB5TWFwcGluZ19TaXplCisgIFB5TWFwcGluZ19WYWx1ZXM9cHl0aG9uMzYuUHlNYXBwaW5nX1ZhbHVlcworICBQeU1lbV9GcmVlPXB5dGhvbjM2LlB5TWVtX0ZyZWUKKyAgUHlNZW1fTWFsbG9jPXB5dGhvbjM2LlB5TWVtX01hbGxvYworICBQeU1lbV9SZWFsbG9jPXB5dGhvbjM2LlB5TWVtX1JlYWxsb2MKKyAgUHlNZW1iZXJEZXNjcl9UeXBlPXB5dGhvbjM2LlB5TWVtYmVyRGVzY3JfVHlwZSBEQVRBCisgIFB5TWVtb3J5Vmlld19Gcm9tT2JqZWN0PXB5dGhvbjM2LlB5TWVtb3J5Vmlld19Gcm9tT2JqZWN0CisgIFB5TWVtb3J5Vmlld19HZXRDb250aWd1b3VzPXB5dGhvbjM2LlB5TWVtb3J5Vmlld19HZXRDb250aWd1b3VzCisgIFB5TWVtb3J5Vmlld19UeXBlPXB5dGhvbjM2LlB5TWVtb3J5Vmlld19UeXBlIERBVEEKKyAgUHlNZXRob2REZXNjcl9UeXBlPXB5dGhvbjM2LlB5TWV0aG9kRGVzY3JfVHlwZSBEQVRBCisgIFB5TW9kdWxlX0FkZEludENvbnN0YW50PXB5dGhvbjM2LlB5TW9kdWxlX0FkZEludENvbnN0YW50CisgIFB5TW9kdWxlX0FkZE9iamVjdD1weXRob24zNi5QeU1vZHVsZV9BZGRPYmplY3QKKyAgUHlNb2R1bGVfQWRkU3RyaW5nQ29uc3RhbnQ9cHl0aG9uMzYuUHlNb2R1bGVfQWRkU3RyaW5nQ29uc3RhbnQKKyAgUHlNb2R1bGVfQ3JlYXRlMj1weXRob24zNi5QeU1vZHVsZV9DcmVhdGUyCisgIFB5TW9kdWxlX0dldERlZj1weXRob24zNi5QeU1vZHVsZV9HZXREZWYKKyAgUHlNb2R1bGVfR2V0RGljdD1weXRob24zNi5QeU1vZHVsZV9HZXREaWN0CisgIFB5TW9kdWxlX0dldEZpbGVuYW1lPXB5dGhvbjM2LlB5TW9kdWxlX0dldEZpbGVuYW1lCisgIFB5TW9kdWxlX0dldEZpbGVuYW1lT2JqZWN0PXB5dGhvbjM2LlB5TW9kdWxlX0dldEZpbGVuYW1lT2JqZWN0CisgIFB5TW9kdWxlX0dldE5hbWU9cHl0aG9uMzYuUHlNb2R1bGVfR2V0TmFtZQorICBQeU1vZHVsZV9HZXRTdGF0ZT1weXRob24zNi5QeU1vZHVsZV9HZXRTdGF0ZQorICBQeU1vZHVsZV9OZXc9cHl0aG9uMzYuUHlNb2R1bGVfTmV3CisgIFB5TW9kdWxlX1R5cGU9cHl0aG9uMzYuUHlNb2R1bGVfVHlwZSBEQVRBCisgIFB5TW9kdWxlRGVmX0luaXQ9cHl0aG9uMzYuUHlNb2R1bGVEZWZfSW5pdAorICBQeU1vZHVsZURlZl9UeXBlPXB5dGhvbjM2LlB5TW9kdWxlRGVmX1R5cGUgREFUQQorICBQeU51bGxJbXBvcnRlcl9UeXBlPXB5dGhvbjM2LlB5TnVsbEltcG9ydGVyX1R5cGUgREFUQQorICBQeU51bWJlcl9BYnNvbHV0ZT1weXRob24zNi5QeU51bWJlcl9BYnNvbHV0ZQorICBQeU51bWJlcl9BZGQ9cHl0aG9uMzYuUHlOdW1iZXJfQWRkCisgIFB5TnVtYmVyX0FuZD1weXRob24zNi5QeU51bWJlcl9BbmQKKyAgUHlOdW1iZXJfQXNTc2l6ZV90PXB5dGhvbjM2LlB5TnVtYmVyX0FzU3NpemVfdAorICBQeU51bWJlcl9DaGVjaz1weXRob24zNi5QeU51bWJlcl9DaGVjaworICBQeU51bWJlcl9EaXZtb2Q9cHl0aG9uMzYuUHlOdW1iZXJfRGl2bW9kCisgIFB5TnVtYmVyX0Zsb2F0PXB5dGhvbjM2LlB5TnVtYmVyX0Zsb2F0CisgIFB5TnVtYmVyX0Zsb29yRGl2aWRlPXB5dGhvbjM2LlB5TnVtYmVyX0Zsb29yRGl2aWRlCisgIFB5TnVtYmVyX0luUGxhY2VBZGQ9cHl0aG9uMzYuUHlOdW1iZXJfSW5QbGFjZUFkZAorICBQeU51bWJlcl9JblBsYWNlQW5kPXB5dGhvbjM2LlB5TnVtYmVyX0luUGxhY2VBbmQKKyAgUHlOdW1iZXJfSW5QbGFjZUZsb29yRGl2aWRlPXB5dGhvbjM2LlB5TnVtYmVyX0luUGxhY2VGbG9vckRpdmlkZQorICBQeU51bWJlcl9JblBsYWNlTHNoaWZ0PXB5dGhvbjM2LlB5TnVtYmVyX0luUGxhY2VMc2hpZnQKKyAgUHlOdW1iZXJfSW5QbGFjZU11bHRpcGx5PXB5dGhvbjM2LlB5TnVtYmVyX0luUGxhY2VNdWx0aXBseQorICBQeU51bWJlcl9JblBsYWNlT3I9cHl0aG9uMzYuUHlOdW1iZXJfSW5QbGFjZU9yCisgIFB5TnVtYmVyX0luUGxhY2VQb3dlcj1weXRob24zNi5QeU51bWJlcl9JblBsYWNlUG93ZXIKKyAgUHlOdW1iZXJfSW5QbGFjZVJlbWFpbmRlcj1weXRob24zNi5QeU51bWJlcl9JblBsYWNlUmVtYWluZGVyCisgIFB5TnVtYmVyX0luUGxhY2VSc2hpZnQ9cHl0aG9uMzYuUHlOdW1iZXJfSW5QbGFjZVJzaGlmdAorICBQeU51bWJlcl9JblBsYWNlU3VidHJhY3Q9cHl0aG9uMzYuUHlOdW1iZXJfSW5QbGFjZVN1YnRyYWN0CisgIFB5TnVtYmVyX0luUGxhY2VUcnVlRGl2aWRlPXB5dGhvbjM2LlB5TnVtYmVyX0luUGxhY2VUcnVlRGl2aWRlCisgIFB5TnVtYmVyX0luUGxhY2VYb3I9cHl0aG9uMzYuUHlOdW1iZXJfSW5QbGFjZVhvcgorICBQeU51bWJlcl9JbmRleD1weXRob24zNi5QeU51bWJlcl9JbmRleAorICBQeU51bWJlcl9JbnZlcnQ9cHl0aG9uMzYuUHlOdW1iZXJfSW52ZXJ0CisgIFB5TnVtYmVyX0xvbmc9cHl0aG9uMzYuUHlOdW1iZXJfTG9uZworICBQeU51bWJlcl9Mc2hpZnQ9cHl0aG9uMzYuUHlOdW1iZXJfTHNoaWZ0CisgIFB5TnVtYmVyX011bHRpcGx5PXB5dGhvbjM2LlB5TnVtYmVyX011bHRpcGx5CisgIFB5TnVtYmVyX05lZ2F0aXZlPXB5dGhvbjM2LlB5TnVtYmVyX05lZ2F0aXZlCisgIFB5TnVtYmVyX09yPXB5dGhvbjM2LlB5TnVtYmVyX09yCisgIFB5TnVtYmVyX1Bvc2l0aXZlPXB5dGhvbjM2LlB5TnVtYmVyX1Bvc2l0aXZlCisgIFB5TnVtYmVyX1Bvd2VyPXB5dGhvbjM2LlB5TnVtYmVyX1Bvd2VyCisgIFB5TnVtYmVyX1JlbWFpbmRlcj1weXRob24zNi5QeU51bWJlcl9SZW1haW5kZXIKKyAgUHlOdW1iZXJfUnNoaWZ0PXB5dGhvbjM2LlB5TnVtYmVyX1JzaGlmdAorICBQeU51bWJlcl9TdWJ0cmFjdD1weXRob24zNi5QeU51bWJlcl9TdWJ0cmFjdAorICBQeU51bWJlcl9Ub0Jhc2U9cHl0aG9uMzYuUHlOdW1iZXJfVG9CYXNlCisgIFB5TnVtYmVyX1RydWVEaXZpZGU9cHl0aG9uMzYuUHlOdW1iZXJfVHJ1ZURpdmlkZQorICBQeU51bWJlcl9Yb3I9cHl0aG9uMzYuUHlOdW1iZXJfWG9yCisgIFB5T1NfQWZ0ZXJGb3JrPXB5dGhvbjM2LlB5T1NfQWZ0ZXJGb3JrCisgIFB5T1NfSW5pdEludGVycnVwdHM9cHl0aG9uMzYuUHlPU19Jbml0SW50ZXJydXB0cworICBQeU9TX0lucHV0SG9vaz1weXRob24zNi5QeU9TX0lucHV0SG9vayBEQVRBCisgIFB5T1NfSW50ZXJydXB0T2NjdXJyZWQ9cHl0aG9uMzYuUHlPU19JbnRlcnJ1cHRPY2N1cnJlZAorICBQeU9TX1JlYWRsaW5lRnVuY3Rpb25Qb2ludGVyPXB5dGhvbjM2LlB5T1NfUmVhZGxpbmVGdW5jdGlvblBvaW50ZXIgREFUQQorICBQeU9TX2RvdWJsZV90b19zdHJpbmc9cHl0aG9uMzYuUHlPU19kb3VibGVfdG9fc3RyaW5nCisgIFB5T1NfZ2V0c2lnPXB5dGhvbjM2LlB5T1NfZ2V0c2lnCisgIFB5T1NfbXlzdHJpY21wPXB5dGhvbjM2LlB5T1NfbXlzdHJpY21wCisgIFB5T1NfbXlzdHJuaWNtcD1weXRob24zNi5QeU9TX215c3RybmljbXAKKyAgUHlPU19zZXRzaWc9cHl0aG9uMzYuUHlPU19zZXRzaWcKKyAgUHlPU19zbnByaW50Zj1weXRob24zNi5QeU9TX3NucHJpbnRmCisgIFB5T1Nfc3RyaW5nX3RvX2RvdWJsZT1weXRob24zNi5QeU9TX3N0cmluZ190b19kb3VibGUKKyAgUHlPU19zdHJ0b2w9cHl0aG9uMzYuUHlPU19zdHJ0b2wKKyAgUHlPU19zdHJ0b3VsPXB5dGhvbjM2LlB5T1Nfc3RydG91bAorICBQeU9TX3ZzbnByaW50Zj1weXRob24zNi5QeU9TX3ZzbnByaW50ZgorICBQeU9iamVjdF9BU0NJST1weXRob24zNi5QeU9iamVjdF9BU0NJSQorICBQeU9iamVjdF9Bc0NoYXJCdWZmZXI9cHl0aG9uMzYuUHlPYmplY3RfQXNDaGFyQnVmZmVyCisgIFB5T2JqZWN0X0FzRmlsZURlc2NyaXB0b3I9cHl0aG9uMzYuUHlPYmplY3RfQXNGaWxlRGVzY3JpcHRvcgorICBQeU9iamVjdF9Bc1JlYWRCdWZmZXI9cHl0aG9uMzYuUHlPYmplY3RfQXNSZWFkQnVmZmVyCisgIFB5T2JqZWN0X0FzV3JpdGVCdWZmZXI9cHl0aG9uMzYuUHlPYmplY3RfQXNXcml0ZUJ1ZmZlcgorICBQeU9iamVjdF9CeXRlcz1weXRob24zNi5QeU9iamVjdF9CeXRlcworICBQeU9iamVjdF9DYWxsPXB5dGhvbjM2LlB5T2JqZWN0X0NhbGwKKyAgUHlPYmplY3RfQ2FsbEZ1bmN0aW9uPXB5dGhvbjM2LlB5T2JqZWN0X0NhbGxGdW5jdGlvbgorICBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzPXB5dGhvbjM2LlB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MKKyAgUHlPYmplY3RfQ2FsbE1ldGhvZD1weXRob24zNi5QeU9iamVjdF9DYWxsTWV0aG9kCisgIFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzPXB5dGhvbjM2LlB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzCisgIFB5T2JqZWN0X0NhbGxPYmplY3Q9cHl0aG9uMzYuUHlPYmplY3RfQ2FsbE9iamVjdAorICBQeU9iamVjdF9DaGVja1JlYWRCdWZmZXI9cHl0aG9uMzYuUHlPYmplY3RfQ2hlY2tSZWFkQnVmZmVyCisgIFB5T2JqZWN0X0NsZWFyV2Vha1JlZnM9cHl0aG9uMzYuUHlPYmplY3RfQ2xlYXJXZWFrUmVmcworICBQeU9iamVjdF9EZWxJdGVtPXB5dGhvbjM2LlB5T2JqZWN0X0RlbEl0ZW0KKyAgUHlPYmplY3RfRGVsSXRlbVN0cmluZz1weXRob24zNi5QeU9iamVjdF9EZWxJdGVtU3RyaW5nCisgIFB5T2JqZWN0X0Rpcj1weXRob24zNi5QeU9iamVjdF9EaXIKKyAgUHlPYmplY3RfRm9ybWF0PXB5dGhvbjM2LlB5T2JqZWN0X0Zvcm1hdAorICBQeU9iamVjdF9GcmVlPXB5dGhvbjM2LlB5T2JqZWN0X0ZyZWUKKyAgUHlPYmplY3RfR0NfRGVsPXB5dGhvbjM2LlB5T2JqZWN0X0dDX0RlbAorICBQeU9iamVjdF9HQ19UcmFjaz1weXRob24zNi5QeU9iamVjdF9HQ19UcmFjaworICBQeU9iamVjdF9HQ19VblRyYWNrPXB5dGhvbjM2LlB5T2JqZWN0X0dDX1VuVHJhY2sKKyAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHI9cHl0aG9uMzYuUHlPYmplY3RfR2VuZXJpY0dldEF0dHIKKyAgUHlPYmplY3RfR2VuZXJpY1NldEF0dHI9cHl0aG9uMzYuUHlPYmplY3RfR2VuZXJpY1NldEF0dHIKKyAgUHlPYmplY3RfR2V0QXR0cj1weXRob24zNi5QeU9iamVjdF9HZXRBdHRyCisgIFB5T2JqZWN0X0dldEF0dHJTdHJpbmc9cHl0aG9uMzYuUHlPYmplY3RfR2V0QXR0clN0cmluZworICBQeU9iamVjdF9HZXRJdGVtPXB5dGhvbjM2LlB5T2JqZWN0X0dldEl0ZW0KKyAgUHlPYmplY3RfR2V0SXRlcj1weXRob24zNi5QeU9iamVjdF9HZXRJdGVyCisgIFB5T2JqZWN0X0hhc0F0dHI9cHl0aG9uMzYuUHlPYmplY3RfSGFzQXR0cgorICBQeU9iamVjdF9IYXNBdHRyU3RyaW5nPXB5dGhvbjM2LlB5T2JqZWN0X0hhc0F0dHJTdHJpbmcKKyAgUHlPYmplY3RfSGFzaD1weXRob24zNi5QeU9iamVjdF9IYXNoCisgIFB5T2JqZWN0X0hhc2hOb3RJbXBsZW1lbnRlZD1weXRob24zNi5QeU9iamVjdF9IYXNoTm90SW1wbGVtZW50ZWQKKyAgUHlPYmplY3RfSW5pdD1weXRob24zNi5QeU9iamVjdF9Jbml0CisgIFB5T2JqZWN0X0luaXRWYXI9cHl0aG9uMzYuUHlPYmplY3RfSW5pdFZhcgorICBQeU9iamVjdF9Jc0luc3RhbmNlPXB5dGhvbjM2LlB5T2JqZWN0X0lzSW5zdGFuY2UKKyAgUHlPYmplY3RfSXNTdWJjbGFzcz1weXRob24zNi5QeU9iamVjdF9Jc1N1YmNsYXNzCisgIFB5T2JqZWN0X0lzVHJ1ZT1weXRob24zNi5QeU9iamVjdF9Jc1RydWUKKyAgUHlPYmplY3RfTGVuZ3RoPXB5dGhvbjM2LlB5T2JqZWN0X0xlbmd0aAorICBQeU9iamVjdF9NYWxsb2M9cHl0aG9uMzYuUHlPYmplY3RfTWFsbG9jCisgIFB5T2JqZWN0X05vdD1weXRob24zNi5QeU9iamVjdF9Ob3QKKyAgUHlPYmplY3RfUmVhbGxvYz1weXRob24zNi5QeU9iamVjdF9SZWFsbG9jCisgIFB5T2JqZWN0X1JlcHI9cHl0aG9uMzYuUHlPYmplY3RfUmVwcgorICBQeU9iamVjdF9SaWNoQ29tcGFyZT1weXRob24zNi5QeU9iamVjdF9SaWNoQ29tcGFyZQorICBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2w9cHl0aG9uMzYuUHlPYmplY3RfUmljaENvbXBhcmVCb29sCisgIFB5T2JqZWN0X1NlbGZJdGVyPXB5dGhvbjM2LlB5T2JqZWN0X1NlbGZJdGVyCisgIFB5T2JqZWN0X1NldEF0dHI9cHl0aG9uMzYuUHlPYmplY3RfU2V0QXR0cgorICBQeU9iamVjdF9TZXRBdHRyU3RyaW5nPXB5dGhvbjM2LlB5T2JqZWN0X1NldEF0dHJTdHJpbmcKKyAgUHlPYmplY3RfU2V0SXRlbT1weXRob24zNi5QeU9iamVjdF9TZXRJdGVtCisgIFB5T2JqZWN0X1NpemU9cHl0aG9uMzYuUHlPYmplY3RfU2l6ZQorICBQeU9iamVjdF9TdHI9cHl0aG9uMzYuUHlPYmplY3RfU3RyCisgIFB5T2JqZWN0X1R5cGU9cHl0aG9uMzYuUHlPYmplY3RfVHlwZSBEQVRBCisgIFB5T0RpY3RfRGVsSXRlbT1weXRob24zNi5QeU9EaWN0X0RlbEl0ZW0KKyAgUHlPRGljdF9OZXc9cHl0aG9uMzYuUHlPRGljdF9OZXcKKyAgUHlPRGljdF9TZXRJdGVtPXB5dGhvbjM2LlB5T0RpY3RfU2V0SXRlbQorICBQeU9EaWN0X1R5cGU9cHl0aG9uMzYuUHlPRGljdF9UeXBlIERBVEEKKyAgUHlPRGljdEl0ZW1zX1R5cGU9cHl0aG9uMzYuUHlPRGljdEl0ZW1zX1R5cGUgREFUQQorICBQeU9EaWN0SXRlcl9UeXBlPXB5dGhvbjM2LlB5T0RpY3RJdGVyX1R5cGUgREFUQQorICBQeU9EaWN0S2V5c19UeXBlPXB5dGhvbjM2LlB5T0RpY3RLZXlzX1R5cGUgREFUQQorICBQeU9EaWN0VmFsdWVzX1R5cGU9cHl0aG9uMzYuUHlPRGljdFZhbHVlc19UeXBlIERBVEEKKyAgUHlQYXJzZXJfU2ltcGxlUGFyc2VGaWxlRmxhZ3M9cHl0aG9uMzYuUHlQYXJzZXJfU2ltcGxlUGFyc2VGaWxlRmxhZ3MKKyAgUHlQYXJzZXJfU2ltcGxlUGFyc2VTdHJpbmdGbGFncz1weXRob24zNi5QeVBhcnNlcl9TaW1wbGVQYXJzZVN0cmluZ0ZsYWdzCisgIFB5UHJvcGVydHlfVHlwZT1weXRob24zNi5QeVByb3BlcnR5X1R5cGUgREFUQQorICBQeVJhbmdlSXRlcl9UeXBlPXB5dGhvbjM2LlB5UmFuZ2VJdGVyX1R5cGUgREFUQQorICBQeVJhbmdlX1R5cGU9cHl0aG9uMzYuUHlSYW5nZV9UeXBlIERBVEEKKyAgUHlSZXZlcnNlZF9UeXBlPXB5dGhvbjM2LlB5UmV2ZXJzZWRfVHlwZSBEQVRBCisgIFB5U2VxSXRlcl9OZXc9cHl0aG9uMzYuUHlTZXFJdGVyX05ldworICBQeVNlcUl0ZXJfVHlwZT1weXRob24zNi5QeVNlcUl0ZXJfVHlwZSBEQVRBCisgIFB5U2VxdWVuY2VfQ2hlY2s9cHl0aG9uMzYuUHlTZXF1ZW5jZV9DaGVjaworICBQeVNlcXVlbmNlX0NvbmNhdD1weXRob24zNi5QeVNlcXVlbmNlX0NvbmNhdAorICBQeVNlcXVlbmNlX0NvbnRhaW5zPXB5dGhvbjM2LlB5U2VxdWVuY2VfQ29udGFpbnMKKyAgUHlTZXF1ZW5jZV9Db3VudD1weXRob24zNi5QeVNlcXVlbmNlX0NvdW50CisgIFB5U2VxdWVuY2VfRGVsSXRlbT1weXRob24zNi5QeVNlcXVlbmNlX0RlbEl0ZW0KKyAgUHlTZXF1ZW5jZV9EZWxTbGljZT1weXRob24zNi5QeVNlcXVlbmNlX0RlbFNsaWNlCisgIFB5U2VxdWVuY2VfRmFzdD1weXRob24zNi5QeVNlcXVlbmNlX0Zhc3QKKyAgUHlTZXF1ZW5jZV9HZXRJdGVtPXB5dGhvbjM2LlB5U2VxdWVuY2VfR2V0SXRlbQorICBQeVNlcXVlbmNlX0dldFNsaWNlPXB5dGhvbjM2LlB5U2VxdWVuY2VfR2V0U2xpY2UKKyAgUHlTZXF1ZW5jZV9Jbj1weXRob24zNi5QeVNlcXVlbmNlX0luCisgIFB5U2VxdWVuY2VfSW5QbGFjZUNvbmNhdD1weXRob24zNi5QeVNlcXVlbmNlX0luUGxhY2VDb25jYXQKKyAgUHlTZXF1ZW5jZV9JblBsYWNlUmVwZWF0PXB5dGhvbjM2LlB5U2VxdWVuY2VfSW5QbGFjZVJlcGVhdAorICBQeVNlcXVlbmNlX0luZGV4PXB5dGhvbjM2LlB5U2VxdWVuY2VfSW5kZXgKKyAgUHlTZXF1ZW5jZV9MZW5ndGg9cHl0aG9uMzYuUHlTZXF1ZW5jZV9MZW5ndGgKKyAgUHlTZXF1ZW5jZV9MaXN0PXB5dGhvbjM2LlB5U2VxdWVuY2VfTGlzdAorICBQeVNlcXVlbmNlX1JlcGVhdD1weXRob24zNi5QeVNlcXVlbmNlX1JlcGVhdAorICBQeVNlcXVlbmNlX1NldEl0ZW09cHl0aG9uMzYuUHlTZXF1ZW5jZV9TZXRJdGVtCisgIFB5U2VxdWVuY2VfU2V0U2xpY2U9cHl0aG9uMzYuUHlTZXF1ZW5jZV9TZXRTbGljZQorICBQeVNlcXVlbmNlX1NpemU9cHl0aG9uMzYuUHlTZXF1ZW5jZV9TaXplCisgIFB5U2VxdWVuY2VfVHVwbGU9cHl0aG9uMzYuUHlTZXF1ZW5jZV9UdXBsZQorICBQeVNldEl0ZXJfVHlwZT1weXRob24zNi5QeVNldEl0ZXJfVHlwZSBEQVRBCisgIFB5U2V0X0FkZD1weXRob24zNi5QeVNldF9BZGQKKyAgUHlTZXRfQ2xlYXI9cHl0aG9uMzYuUHlTZXRfQ2xlYXIKKyAgUHlTZXRfQ29udGFpbnM9cHl0aG9uMzYuUHlTZXRfQ29udGFpbnMKKyAgUHlTZXRfRGlzY2FyZD1weXRob24zNi5QeVNldF9EaXNjYXJkCisgIFB5U2V0X05ldz1weXRob24zNi5QeVNldF9OZXcKKyAgUHlTZXRfUG9wPXB5dGhvbjM2LlB5U2V0X1BvcAorICBQeVNldF9TaXplPXB5dGhvbjM2LlB5U2V0X1NpemUKKyAgUHlTZXRfVHlwZT1weXRob24zNi5QeVNldF9UeXBlIERBVEEKKyAgUHlTbGljZV9HZXRJbmRpY2VzPXB5dGhvbjM2LlB5U2xpY2VfR2V0SW5kaWNlcworICBQeVNsaWNlX0dldEluZGljZXNFeD1weXRob24zNi5QeVNsaWNlX0dldEluZGljZXNFeAorICBQeVNsaWNlX05ldz1weXRob24zNi5QeVNsaWNlX05ldworICBQeVNsaWNlX1R5cGU9cHl0aG9uMzYuUHlTbGljZV9UeXBlIERBVEEKKyAgUHlTb3J0V3JhcHBlcl9UeXBlPXB5dGhvbjM2LlB5U29ydFdyYXBwZXJfVHlwZSBEQVRBCisgIFB5U3RhdGVfRmluZE1vZHVsZT1weXRob24zNi5QeVN0YXRlX0ZpbmRNb2R1bGUKKyAgUHlTdGF0ZV9BZGRNb2R1bGU9cHl0aG9uMzYuUHlTdGF0ZV9BZGRNb2R1bGUKKyAgUHlTdGF0ZV9SZW1vdmVNb2R1bGU9cHl0aG9uMzYuUHlTdGF0ZV9SZW1vdmVNb2R1bGUKKyAgUHlTdHJ1Y3RTZXF1ZW5jZV9HZXRJdGVtPXB5dGhvbjM2LlB5U3RydWN0U2VxdWVuY2VfR2V0SXRlbQorICBQeVN0cnVjdFNlcXVlbmNlX05ldz1weXRob24zNi5QeVN0cnVjdFNlcXVlbmNlX05ldworICBQeVN0cnVjdFNlcXVlbmNlX05ld1R5cGU9cHl0aG9uMzYuUHlTdHJ1Y3RTZXF1ZW5jZV9OZXdUeXBlCisgIFB5U3RydWN0U2VxdWVuY2VfU2V0SXRlbT1weXRob24zNi5QeVN0cnVjdFNlcXVlbmNlX1NldEl0ZW0KKyAgUHlTdXBlcl9UeXBlPXB5dGhvbjM2LlB5U3VwZXJfVHlwZSBEQVRBCisgIFB5U3lzX0FkZFdhcm5PcHRpb249cHl0aG9uMzYuUHlTeXNfQWRkV2Fybk9wdGlvbgorICBQeVN5c19BZGRXYXJuT3B0aW9uVW5pY29kZT1weXRob24zNi5QeVN5c19BZGRXYXJuT3B0aW9uVW5pY29kZQorICBQeVN5c19Gb3JtYXRTdGRlcnI9cHl0aG9uMzYuUHlTeXNfRm9ybWF0U3RkZXJyCisgIFB5U3lzX0Zvcm1hdFN0ZG91dD1weXRob24zNi5QeVN5c19Gb3JtYXRTdGRvdXQKKyAgUHlTeXNfR2V0T2JqZWN0PXB5dGhvbjM2LlB5U3lzX0dldE9iamVjdAorICBQeVN5c19IYXNXYXJuT3B0aW9ucz1weXRob24zNi5QeVN5c19IYXNXYXJuT3B0aW9ucworICBQeVN5c19SZXNldFdhcm5PcHRpb25zPXB5dGhvbjM2LlB5U3lzX1Jlc2V0V2Fybk9wdGlvbnMKKyAgUHlTeXNfU2V0QXJndj1weXRob24zNi5QeVN5c19TZXRBcmd2CisgIFB5U3lzX1NldEFyZ3ZFeD1weXRob24zNi5QeVN5c19TZXRBcmd2RXgKKyAgUHlTeXNfU2V0T2JqZWN0PXB5dGhvbjM2LlB5U3lzX1NldE9iamVjdAorICBQeVN5c19TZXRQYXRoPXB5dGhvbjM2LlB5U3lzX1NldFBhdGgKKyAgUHlTeXNfV3JpdGVTdGRlcnI9cHl0aG9uMzYuUHlTeXNfV3JpdGVTdGRlcnIKKyAgUHlTeXNfV3JpdGVTdGRvdXQ9cHl0aG9uMzYuUHlTeXNfV3JpdGVTdGRvdXQKKyAgUHlUaHJlYWRTdGF0ZV9DbGVhcj1weXRob24zNi5QeVRocmVhZFN0YXRlX0NsZWFyCisgIFB5VGhyZWFkU3RhdGVfRGVsZXRlPXB5dGhvbjM2LlB5VGhyZWFkU3RhdGVfRGVsZXRlCisgIFB5VGhyZWFkU3RhdGVfRGVsZXRlQ3VycmVudD1weXRob24zNi5QeVRocmVhZFN0YXRlX0RlbGV0ZUN1cnJlbnQKKyAgUHlUaHJlYWRTdGF0ZV9HZXQ9cHl0aG9uMzYuUHlUaHJlYWRTdGF0ZV9HZXQKKyAgUHlUaHJlYWRTdGF0ZV9HZXREaWN0PXB5dGhvbjM2LlB5VGhyZWFkU3RhdGVfR2V0RGljdAorICBQeVRocmVhZFN0YXRlX05ldz1weXRob24zNi5QeVRocmVhZFN0YXRlX05ldworICBQeVRocmVhZFN0YXRlX1NldEFzeW5jRXhjPXB5dGhvbjM2LlB5VGhyZWFkU3RhdGVfU2V0QXN5bmNFeGMKKyAgUHlUaHJlYWRTdGF0ZV9Td2FwPXB5dGhvbjM2LlB5VGhyZWFkU3RhdGVfU3dhcAorICBQeVRyYWNlQmFja19IZXJlPXB5dGhvbjM2LlB5VHJhY2VCYWNrX0hlcmUKKyAgUHlUcmFjZUJhY2tfUHJpbnQ9cHl0aG9uMzYuUHlUcmFjZUJhY2tfUHJpbnQKKyAgUHlUcmFjZUJhY2tfVHlwZT1weXRob24zNi5QeVRyYWNlQmFja19UeXBlIERBVEEKKyAgUHlUdXBsZUl0ZXJfVHlwZT1weXRob24zNi5QeVR1cGxlSXRlcl9UeXBlIERBVEEKKyAgUHlUdXBsZV9DbGVhckZyZWVMaXN0PXB5dGhvbjM2LlB5VHVwbGVfQ2xlYXJGcmVlTGlzdAorICBQeVR1cGxlX0dldEl0ZW09cHl0aG9uMzYuUHlUdXBsZV9HZXRJdGVtCisgIFB5VHVwbGVfR2V0U2xpY2U9cHl0aG9uMzYuUHlUdXBsZV9HZXRTbGljZQorICBQeVR1cGxlX05ldz1weXRob24zNi5QeVR1cGxlX05ldworICBQeVR1cGxlX1BhY2s9cHl0aG9uMzYuUHlUdXBsZV9QYWNrCisgIFB5VHVwbGVfU2V0SXRlbT1weXRob24zNi5QeVR1cGxlX1NldEl0ZW0KKyAgUHlUdXBsZV9TaXplPXB5dGhvbjM2LlB5VHVwbGVfU2l6ZQorICBQeVR1cGxlX1R5cGU9cHl0aG9uMzYuUHlUdXBsZV9UeXBlIERBVEEKKyAgUHlUeXBlX0NsZWFyQ2FjaGU9cHl0aG9uMzYuUHlUeXBlX0NsZWFyQ2FjaGUKKyAgUHlUeXBlX0Zyb21TcGVjPXB5dGhvbjM2LlB5VHlwZV9Gcm9tU3BlYworICBQeVR5cGVfRnJvbVNwZWNXaXRoQmFzZXM9cHl0aG9uMzYuUHlUeXBlX0Zyb21TcGVjV2l0aEJhc2VzCisgIFB5VHlwZV9HZW5lcmljQWxsb2M9cHl0aG9uMzYuUHlUeXBlX0dlbmVyaWNBbGxvYworICBQeVR5cGVfR2VuZXJpY05ldz1weXRob24zNi5QeVR5cGVfR2VuZXJpY05ldworICBQeVR5cGVfR2V0RmxhZ3M9cHl0aG9uMzYuUHlUeXBlX0dldEZsYWdzCisgIFB5VHlwZV9HZXRTbG90PXB5dGhvbjM2LlB5VHlwZV9HZXRTbG90CisgIFB5VHlwZV9Jc1N1YnR5cGU9cHl0aG9uMzYuUHlUeXBlX0lzU3VidHlwZQorICBQeVR5cGVfTW9kaWZpZWQ9cHl0aG9uMzYuUHlUeXBlX01vZGlmaWVkCisgIFB5VHlwZV9SZWFkeT1weXRob24zNi5QeVR5cGVfUmVhZHkKKyAgUHlUeXBlX1R5cGU9cHl0aG9uMzYuUHlUeXBlX1R5cGUgREFUQQorICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9DcmVhdGU9cHl0aG9uMzYuUHlVbmljb2RlRGVjb2RlRXJyb3JfQ3JlYXRlCisgIFB5VW5pY29kZURlY29kZUVycm9yX0dldEVuY29kaW5nPXB5dGhvbjM2LlB5VW5pY29kZURlY29kZUVycm9yX0dldEVuY29kaW5nCisgIFB5VW5pY29kZURlY29kZUVycm9yX0dldEVuZD1weXRob24zNi5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRFbmQKKyAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0T2JqZWN0PXB5dGhvbjM2LlB5VW5pY29kZURlY29kZUVycm9yX0dldE9iamVjdAorICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRSZWFzb249cHl0aG9uMzYuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0UmVhc29uCisgIFB5VW5pY29kZURlY29kZUVycm9yX0dldFN0YXJ0PXB5dGhvbjM2LlB5VW5pY29kZURlY29kZUVycm9yX0dldFN0YXJ0CisgIFB5VW5pY29kZURlY29kZUVycm9yX1NldEVuZD1weXRob24zNi5QeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRFbmQKKyAgUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0UmVhc29uPXB5dGhvbjM2LlB5VW5pY29kZURlY29kZUVycm9yX1NldFJlYXNvbgorICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRTdGFydD1weXRob24zNi5QeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRTdGFydAorICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmNvZGluZz1weXRob24zNi5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmNvZGluZworICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmQ9cHl0aG9uMzYuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5kCisgIFB5VW5pY29kZUVuY29kZUVycm9yX0dldE9iamVjdD1weXRob24zNi5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRPYmplY3QKKyAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0UmVhc29uPXB5dGhvbjM2LlB5VW5pY29kZUVuY29kZUVycm9yX0dldFJlYXNvbgorICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRTdGFydD1weXRob24zNi5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRTdGFydAorICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRFbmQ9cHl0aG9uMzYuUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0RW5kCisgIFB5VW5pY29kZUVuY29kZUVycm9yX1NldFJlYXNvbj1weXRob24zNi5QeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRSZWFzb24KKyAgUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0U3RhcnQ9cHl0aG9uMzYuUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0U3RhcnQKKyAgUHlVbmljb2RlSXRlcl9UeXBlPXB5dGhvbjM2LlB5VW5pY29kZUl0ZXJfVHlwZSBEQVRBCisgIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldEVuZD1weXRob24zNi5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRFbmQKKyAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0T2JqZWN0PXB5dGhvbjM2LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldE9iamVjdAorICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRSZWFzb249cHl0aG9uMzYuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0UmVhc29uCisgIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFN0YXJ0PXB5dGhvbjM2LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFN0YXJ0CisgIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldEVuZD1weXRob24zNi5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRFbmQKKyAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0UmVhc29uPXB5dGhvbjM2LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldFJlYXNvbgorICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRTdGFydD1weXRob24zNi5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRTdGFydAorICBQeVVuaWNvZGVfQXBwZW5kPXB5dGhvbjM2LlB5VW5pY29kZV9BcHBlbmQKKyAgUHlVbmljb2RlX0FwcGVuZEFuZERlbD1weXRob24zNi5QeVVuaWNvZGVfQXBwZW5kQW5kRGVsCisgIFB5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nPXB5dGhvbjM2LlB5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nCisgIFB5VW5pY29kZV9Bc0NoYXJtYXBTdHJpbmc9cHl0aG9uMzYuUHlVbmljb2RlX0FzQ2hhcm1hcFN0cmluZworICBQeVVuaWNvZGVfQXNEZWNvZGVkT2JqZWN0PXB5dGhvbjM2LlB5VW5pY29kZV9Bc0RlY29kZWRPYmplY3QKKyAgUHlVbmljb2RlX0FzRGVjb2RlZFVuaWNvZGU9cHl0aG9uMzYuUHlVbmljb2RlX0FzRGVjb2RlZFVuaWNvZGUKKyAgUHlVbmljb2RlX0FzRW5jb2RlZE9iamVjdD1weXRob24zNi5QeVVuaWNvZGVfQXNFbmNvZGVkT2JqZWN0CisgIFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmc9cHl0aG9uMzYuUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZworICBQeVVuaWNvZGVfQXNFbmNvZGVkVW5pY29kZT1weXRob24zNi5QeVVuaWNvZGVfQXNFbmNvZGVkVW5pY29kZQorICBQeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmc9cHl0aG9uMzYuUHlVbmljb2RlX0FzTGF0aW4xU3RyaW5nCisgIFB5VW5pY29kZV9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmc9cHl0aG9uMzYuUHlVbmljb2RlX0FzUmF3VW5pY29kZUVzY2FwZVN0cmluZworICBQeVVuaWNvZGVfQXNVVEYxNlN0cmluZz1weXRob24zNi5QeVVuaWNvZGVfQXNVVEYxNlN0cmluZworICBQeVVuaWNvZGVfQXNVVEYzMlN0cmluZz1weXRob24zNi5QeVVuaWNvZGVfQXNVVEYzMlN0cmluZworICBQeVVuaWNvZGVfQXNVVEY4U3RyaW5nPXB5dGhvbjM2LlB5VW5pY29kZV9Bc1VURjhTdHJpbmcKKyAgUHlVbmljb2RlX0FzVW5pY29kZUVzY2FwZVN0cmluZz1weXRob24zNi5QeVVuaWNvZGVfQXNVbmljb2RlRXNjYXBlU3RyaW5nCisgIFB5VW5pY29kZV9Bc1dpZGVDaGFyPXB5dGhvbjM2LlB5VW5pY29kZV9Bc1dpZGVDaGFyCisgIFB5VW5pY29kZV9DbGVhckZyZWVsaXN0PXB5dGhvbjM2LlB5VW5pY29kZV9DbGVhckZyZWVsaXN0CisgIFB5VW5pY29kZV9Db21wYXJlPXB5dGhvbjM2LlB5VW5pY29kZV9Db21wYXJlCisgIFB5VW5pY29kZV9Db25jYXQ9cHl0aG9uMzYuUHlVbmljb2RlX0NvbmNhdAorICBQeVVuaWNvZGVfQ29udGFpbnM9cHl0aG9uMzYuUHlVbmljb2RlX0NvbnRhaW5zCisgIFB5VW5pY29kZV9Db3VudD1weXRob24zNi5QeVVuaWNvZGVfQ291bnQKKyAgUHlVbmljb2RlX0RlY29kZT1weXRob24zNi5QeVVuaWNvZGVfRGVjb2RlCisgIFB5VW5pY29kZV9EZWNvZGVBU0NJST1weXRob24zNi5QeVVuaWNvZGVfRGVjb2RlQVNDSUkKKyAgUHlVbmljb2RlX0RlY29kZUNoYXJtYXA9cHl0aG9uMzYuUHlVbmljb2RlX0RlY29kZUNoYXJtYXAKKyAgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdD1weXRob24zNi5QeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0CisgIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplPXB5dGhvbjM2LlB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplCisgIFB5VW5pY29kZV9EZWNvZGVMYXRpbjE9cHl0aG9uMzYuUHlVbmljb2RlX0RlY29kZUxhdGluMQorICBQeVVuaWNvZGVfRGVjb2RlUmF3VW5pY29kZUVzY2FwZT1weXRob24zNi5QeVVuaWNvZGVfRGVjb2RlUmF3VW5pY29kZUVzY2FwZQorICBQeVVuaWNvZGVfRGVjb2RlVVRGMTY9cHl0aG9uMzYuUHlVbmljb2RlX0RlY29kZVVURjE2CisgIFB5VW5pY29kZV9EZWNvZGVVVEYxNlN0YXRlZnVsPXB5dGhvbjM2LlB5VW5pY29kZV9EZWNvZGVVVEYxNlN0YXRlZnVsCisgIFB5VW5pY29kZV9EZWNvZGVVVEYzMj1weXRob24zNi5QeVVuaWNvZGVfRGVjb2RlVVRGMzIKKyAgUHlVbmljb2RlX0RlY29kZVVURjMyU3RhdGVmdWw9cHl0aG9uMzYuUHlVbmljb2RlX0RlY29kZVVURjMyU3RhdGVmdWwKKyAgUHlVbmljb2RlX0RlY29kZVVURjg9cHl0aG9uMzYuUHlVbmljb2RlX0RlY29kZVVURjgKKyAgUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bD1weXRob24zNi5QeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsCisgIFB5VW5pY29kZV9EZWNvZGVVbmljb2RlRXNjYXBlPXB5dGhvbjM2LlB5VW5pY29kZV9EZWNvZGVVbmljb2RlRXNjYXBlCisgIFB5VW5pY29kZV9GU0NvbnZlcnRlcj1weXRob24zNi5QeVVuaWNvZGVfRlNDb252ZXJ0ZXIKKyAgUHlVbmljb2RlX0ZTRGVjb2Rlcj1weXRob24zNi5QeVVuaWNvZGVfRlNEZWNvZGVyCisgIFB5VW5pY29kZV9GaW5kPXB5dGhvbjM2LlB5VW5pY29kZV9GaW5kCisgIFB5VW5pY29kZV9Gb3JtYXQ9cHl0aG9uMzYuUHlVbmljb2RlX0Zvcm1hdAorICBQeVVuaWNvZGVfRnJvbUVuY29kZWRPYmplY3Q9cHl0aG9uMzYuUHlVbmljb2RlX0Zyb21FbmNvZGVkT2JqZWN0CisgIFB5VW5pY29kZV9Gcm9tRm9ybWF0PXB5dGhvbjM2LlB5VW5pY29kZV9Gcm9tRm9ybWF0CisgIFB5VW5pY29kZV9Gcm9tRm9ybWF0Vj1weXRob24zNi5QeVVuaWNvZGVfRnJvbUZvcm1hdFYKKyAgUHlVbmljb2RlX0Zyb21PYmplY3Q9cHl0aG9uMzYuUHlVbmljb2RlX0Zyb21PYmplY3QKKyAgUHlVbmljb2RlX0Zyb21PcmRpbmFsPXB5dGhvbjM2LlB5VW5pY29kZV9Gcm9tT3JkaW5hbAorICBQeVVuaWNvZGVfRnJvbVN0cmluZz1weXRob24zNi5QeVVuaWNvZGVfRnJvbVN0cmluZworICBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemU9cHl0aG9uMzYuUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplCisgIFB5VW5pY29kZV9Gcm9tV2lkZUNoYXI9cHl0aG9uMzYuUHlVbmljb2RlX0Zyb21XaWRlQ2hhcgorICBQeVVuaWNvZGVfR2V0RGVmYXVsdEVuY29kaW5nPXB5dGhvbjM2LlB5VW5pY29kZV9HZXREZWZhdWx0RW5jb2RpbmcKKyAgUHlVbmljb2RlX0dldFNpemU9cHl0aG9uMzYuUHlVbmljb2RlX0dldFNpemUKKyAgUHlVbmljb2RlX0lzSWRlbnRpZmllcj1weXRob24zNi5QeVVuaWNvZGVfSXNJZGVudGlmaWVyCisgIFB5VW5pY29kZV9Kb2luPXB5dGhvbjM2LlB5VW5pY29kZV9Kb2luCisgIFB5VW5pY29kZV9QYXJ0aXRpb249cHl0aG9uMzYuUHlVbmljb2RlX1BhcnRpdGlvbgorICBQeVVuaWNvZGVfUlBhcnRpdGlvbj1weXRob24zNi5QeVVuaWNvZGVfUlBhcnRpdGlvbgorICBQeVVuaWNvZGVfUlNwbGl0PXB5dGhvbjM2LlB5VW5pY29kZV9SU3BsaXQKKyAgUHlVbmljb2RlX1JlcGxhY2U9cHl0aG9uMzYuUHlVbmljb2RlX1JlcGxhY2UKKyAgUHlVbmljb2RlX1Jlc2l6ZT1weXRob24zNi5QeVVuaWNvZGVfUmVzaXplCisgIFB5VW5pY29kZV9SaWNoQ29tcGFyZT1weXRob24zNi5QeVVuaWNvZGVfUmljaENvbXBhcmUKKyAgUHlVbmljb2RlX1NldERlZmF1bHRFbmNvZGluZz1weXRob24zNi5QeVVuaWNvZGVfU2V0RGVmYXVsdEVuY29kaW5nCisgIFB5VW5pY29kZV9TcGxpdD1weXRob24zNi5QeVVuaWNvZGVfU3BsaXQKKyAgUHlVbmljb2RlX1NwbGl0bGluZXM9cHl0aG9uMzYuUHlVbmljb2RlX1NwbGl0bGluZXMKKyAgUHlVbmljb2RlX1RhaWxtYXRjaD1weXRob24zNi5QeVVuaWNvZGVfVGFpbG1hdGNoCisgIFB5VW5pY29kZV9UcmFuc2xhdGU9cHl0aG9uMzYuUHlVbmljb2RlX1RyYW5zbGF0ZQorICBQeVVuaWNvZGVfQnVpbGRFbmNvZGluZ01hcD1weXRob24zNi5QeVVuaWNvZGVfQnVpbGRFbmNvZGluZ01hcAorICBQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZz1weXRob24zNi5QeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZworICBQeVVuaWNvZGVfRGVjb2RlVVRGNz1weXRob24zNi5QeVVuaWNvZGVfRGVjb2RlVVRGNworICBQeVVuaWNvZGVfRGVjb2RlVVRGN1N0YXRlZnVsPXB5dGhvbjM2LlB5VW5pY29kZV9EZWNvZGVVVEY3U3RhdGVmdWwKKyAgUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdD1weXRob24zNi5QeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0CisgIFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nPXB5dGhvbjM2LlB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nCisgIFB5VW5pY29kZV9JbnRlcm5JbW1vcnRhbD1weXRob24zNi5QeVVuaWNvZGVfSW50ZXJuSW1tb3J0YWwKKyAgUHlVbmljb2RlX0ludGVybkluUGxhY2U9cHl0aG9uMzYuUHlVbmljb2RlX0ludGVybkluUGxhY2UKKyAgUHlVbmljb2RlX1R5cGU9cHl0aG9uMzYuUHlVbmljb2RlX1R5cGUgREFUQQorICBQeVdlYWtyZWZfR2V0T2JqZWN0PXB5dGhvbjM2LlB5V2Vha3JlZl9HZXRPYmplY3QgREFUQQorICBQeVdlYWtyZWZfTmV3UHJveHk9cHl0aG9uMzYuUHlXZWFrcmVmX05ld1Byb3h5CisgIFB5V2Vha3JlZl9OZXdSZWY9cHl0aG9uMzYuUHlXZWFrcmVmX05ld1JlZgorICBQeVdyYXBwZXJEZXNjcl9UeXBlPXB5dGhvbjM2LlB5V3JhcHBlckRlc2NyX1R5cGUgREFUQQorICBQeVdyYXBwZXJfTmV3PXB5dGhvbjM2LlB5V3JhcHBlcl9OZXcKKyAgUHlaaXBfVHlwZT1weXRob24zNi5QeVppcF9UeXBlIERBVEEKKyAgUHlfQWRkUGVuZGluZ0NhbGw9cHl0aG9uMzYuUHlfQWRkUGVuZGluZ0NhbGwKKyAgUHlfQXRFeGl0PXB5dGhvbjM2LlB5X0F0RXhpdAorICBQeV9CdWlsZFZhbHVlPXB5dGhvbjM2LlB5X0J1aWxkVmFsdWUKKyAgUHlfQ29tcGlsZVN0cmluZz1weXRob24zNi5QeV9Db21waWxlU3RyaW5nCisgIFB5X0RlY1JlZj1weXRob24zNi5QeV9EZWNSZWYKKyAgUHlfRW5kSW50ZXJwcmV0ZXI9cHl0aG9uMzYuUHlfRW5kSW50ZXJwcmV0ZXIKKyAgUHlfRXhpdD1weXRob24zNi5QeV9FeGl0CisgIFB5X0ZhdGFsRXJyb3I9cHl0aG9uMzYuUHlfRmF0YWxFcnJvcgorICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nPXB5dGhvbjM2LlB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgREFUQQorICBQeV9GaW5hbGl6ZT1weXRob24zNi5QeV9GaW5hbGl6ZQorICBQeV9GaW5hbGl6ZUV4PXB5dGhvbjM2LlB5X0ZpbmFsaXplRXgKKyAgUHlfR2V0QnVpbGRJbmZvPXB5dGhvbjM2LlB5X0dldEJ1aWxkSW5mbworICBQeV9HZXRDb21waWxlcj1weXRob24zNi5QeV9HZXRDb21waWxlcgorICBQeV9HZXRDb3B5cmlnaHQ9cHl0aG9uMzYuUHlfR2V0Q29weXJpZ2h0CisgIFB5X0dldEV4ZWNQcmVmaXg9cHl0aG9uMzYuUHlfR2V0RXhlY1ByZWZpeAorICBQeV9HZXRQYXRoPXB5dGhvbjM2LlB5X0dldFBhdGgKKyAgUHlfR2V0UGxhdGZvcm09cHl0aG9uMzYuUHlfR2V0UGxhdGZvcm0KKyAgUHlfR2V0UHJlZml4PXB5dGhvbjM2LlB5X0dldFByZWZpeAorICBQeV9HZXRQcm9ncmFtRnVsbFBhdGg9cHl0aG9uMzYuUHlfR2V0UHJvZ3JhbUZ1bGxQYXRoCisgIFB5X0dldFByb2dyYW1OYW1lPXB5dGhvbjM2LlB5X0dldFByb2dyYW1OYW1lCisgIFB5X0dldFB5dGhvbkhvbWU9cHl0aG9uMzYuUHlfR2V0UHl0aG9uSG9tZQorICBQeV9HZXRSZWN1cnNpb25MaW1pdD1weXRob24zNi5QeV9HZXRSZWN1cnNpb25MaW1pdAorICBQeV9HZXRWZXJzaW9uPXB5dGhvbjM2LlB5X0dldFZlcnNpb24KKyAgUHlfSGFzRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZz1weXRob24zNi5QeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nIERBVEEKKyAgUHlfSW5jUmVmPXB5dGhvbjM2LlB5X0luY1JlZgorICBQeV9Jbml0aWFsaXplPXB5dGhvbjM2LlB5X0luaXRpYWxpemUKKyAgUHlfSW5pdGlhbGl6ZUV4PXB5dGhvbjM2LlB5X0luaXRpYWxpemVFeAorICBQeV9Jc0luaXRpYWxpemVkPXB5dGhvbjM2LlB5X0lzSW5pdGlhbGl6ZWQKKyAgUHlfTWFpbj1weXRob24zNi5QeV9NYWluCisgIFB5X01ha2VQZW5kaW5nQ2FsbHM9cHl0aG9uMzYuUHlfTWFrZVBlbmRpbmdDYWxscworICBQeV9OZXdJbnRlcnByZXRlcj1weXRob24zNi5QeV9OZXdJbnRlcnByZXRlcgorICBQeV9SZXByRW50ZXI9cHl0aG9uMzYuUHlfUmVwckVudGVyCisgIFB5X1JlcHJMZWF2ZT1weXRob24zNi5QeV9SZXByTGVhdmUKKyAgUHlfU2V0UHJvZ3JhbU5hbWU9cHl0aG9uMzYuUHlfU2V0UHJvZ3JhbU5hbWUKKyAgUHlfU2V0UHl0aG9uSG9tZT1weXRob24zNi5QeV9TZXRQeXRob25Ib21lCisgIFB5X1NldFJlY3Vyc2lvbkxpbWl0PXB5dGhvbjM2LlB5X1NldFJlY3Vyc2lvbkxpbWl0CisgIFB5X1N5bXRhYmxlU3RyaW5nPXB5dGhvbjM2LlB5X1N5bXRhYmxlU3RyaW5nCisgIFB5X1ZhQnVpbGRWYWx1ZT1weXRob24zNi5QeV9WYUJ1aWxkVmFsdWUKKyAgX1B5RXJyX0JhZEludGVybmFsQ2FsbD1weXRob24zNi5fUHlFcnJfQmFkSW50ZXJuYWxDYWxsCisgIF9QeU9iamVjdF9DYWxsRnVuY3Rpb25fU2l6ZVQ9cHl0aG9uMzYuX1B5T2JqZWN0X0NhbGxGdW5jdGlvbl9TaXplVAorICBfUHlPYmplY3RfQ2FsbE1ldGhvZF9TaXplVD1weXRob24zNi5fUHlPYmplY3RfQ2FsbE1ldGhvZF9TaXplVAorICBfUHlPYmplY3RfR0NfTWFsbG9jPXB5dGhvbjM2Ll9QeU9iamVjdF9HQ19NYWxsb2MKKyAgX1B5T2JqZWN0X0dDX05ldz1weXRob24zNi5fUHlPYmplY3RfR0NfTmV3CisgIF9QeU9iamVjdF9HQ19OZXdWYXI9cHl0aG9uMzYuX1B5T2JqZWN0X0dDX05ld1ZhcgorICBfUHlPYmplY3RfR0NfUmVzaXplPXB5dGhvbjM2Ll9QeU9iamVjdF9HQ19SZXNpemUKKyAgX1B5T2JqZWN0X05ldz1weXRob24zNi5fUHlPYmplY3RfTmV3CisgIF9QeU9iamVjdF9OZXdWYXI9cHl0aG9uMzYuX1B5T2JqZWN0X05ld1ZhcgorICBfUHlTdGF0ZV9BZGRNb2R1bGU9cHl0aG9uMzYuX1B5U3RhdGVfQWRkTW9kdWxlCisgIF9QeVRocmVhZFN0YXRlX0luaXQ9cHl0aG9uMzYuX1B5VGhyZWFkU3RhdGVfSW5pdAorICBfUHlUaHJlYWRTdGF0ZV9QcmVhbGxvYz1weXRob24zNi5fUHlUaHJlYWRTdGF0ZV9QcmVhbGxvYworICBfUHlUcmFzaF9kZWxldGVfbGF0ZXI9cHl0aG9uMzYuX1B5VHJhc2hfZGVsZXRlX2xhdGVyIERBVEEKKyAgX1B5VHJhc2hfZGVsZXRlX25lc3Rpbmc9cHl0aG9uMzYuX1B5VHJhc2hfZGVsZXRlX25lc3RpbmcgREFUQQorICBfUHlUcmFzaF9kZXBvc2l0X29iamVjdD1weXRob24zNi5fUHlUcmFzaF9kZXBvc2l0X29iamVjdAorICBfUHlUcmFzaF9kZXN0cm95X2NoYWluPXB5dGhvbjM2Ll9QeVRyYXNoX2Rlc3Ryb3lfY2hhaW4KKyAgX1B5V2Vha3JlZl9DYWxsYWJsZVByb3h5VHlwZT1weXRob24zNi5fUHlXZWFrcmVmX0NhbGxhYmxlUHJveHlUeXBlIERBVEEKKyAgX1B5V2Vha3JlZl9Qcm94eVR5cGU9cHl0aG9uMzYuX1B5V2Vha3JlZl9Qcm94eVR5cGUgREFUQQorICBfUHlXZWFrcmVmX1JlZlR5cGU9cHl0aG9uMzYuX1B5V2Vha3JlZl9SZWZUeXBlIERBVEEKKyAgX1B5X0J1aWxkVmFsdWVfU2l6ZVQ9cHl0aG9uMzYuX1B5X0J1aWxkVmFsdWVfU2l6ZVQKKyAgX1B5X0NoZWNrUmVjdXJzaW9uTGltaXQ9cHl0aG9uMzYuX1B5X0NoZWNrUmVjdXJzaW9uTGltaXQgREFUQQorICBfUHlfQ2hlY2tSZWN1cnNpdmVDYWxsPXB5dGhvbjM2Ll9QeV9DaGVja1JlY3Vyc2l2ZUNhbGwKKyAgX1B5X0RlYWxsb2M9cHl0aG9uMzYuX1B5X0RlYWxsb2MKKyAgX1B5X0VsbGlwc2lzT2JqZWN0PXB5dGhvbjM2Ll9QeV9FbGxpcHNpc09iamVjdCBEQVRBCisgIF9QeV9GYWxzZVN0cnVjdD1weXRob24zNi5fUHlfRmFsc2VTdHJ1Y3QgREFUQQorICBfUHlfTm9uZVN0cnVjdD1weXRob24zNi5fUHlfTm9uZVN0cnVjdCBEQVRBCisgIF9QeV9Ob3RJbXBsZW1lbnRlZFN0cnVjdD1weXRob24zNi5fUHlfTm90SW1wbGVtZW50ZWRTdHJ1Y3QgREFUQQorICBfUHlfU3dhcHBlZE9wPXB5dGhvbjM2Ll9QeV9Td2FwcGVkT3AgREFUQQorICBfUHlfVHJ1ZVN0cnVjdD1weXRob24zNi5fUHlfVHJ1ZVN0cnVjdCBEQVRBCisgIF9QeV9WYUJ1aWxkVmFsdWVfU2l6ZVQ9cHl0aG9uMzYuX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVAorICBfUHlBcmdfUGFyc2VfU2l6ZVQ9cHl0aG9uMzYuX1B5QXJnX1BhcnNlX1NpemVUCisgIF9QeUFyZ19QYXJzZVR1cGxlX1NpemVUPXB5dGhvbjM2Ll9QeUFyZ19QYXJzZVR1cGxlX1NpemVUCisgIF9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQ9cHl0aG9uMzYuX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVAorICBfUHlBcmdfVmFQYXJzZV9TaXplVD1weXRob24zNi5fUHlBcmdfVmFQYXJzZV9TaXplVAorICBfUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQ9cHl0aG9uMzYuX1B5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUCisgIF9QeV9CdWlsZFZhbHVlX1NpemVUPXB5dGhvbjM2Ll9QeV9CdWlsZFZhbHVlX1NpemVUCmRpZmYgLS1naXQgYS9QQy9weXRob25fZXhlLnJjIGIvUEMvcHl0aG9uX2V4ZS5yYwppbmRleCA5MTc4NWExLi5hZTBiMDI5IDEwMDY0NAotLS0gYS9QQy9weXRob25fZXhlLnJjCisrKyBiL1BDL3B5dGhvbl9leGUucmMKQEAgLTcsNyArNyw3IEBACiAjaW5jbHVkZSA8d2ludXNlci5oPgogMSBSVF9NQU5JRkVTVCAicHl0aG9uLm1hbmlmZXN0IgogCi0xIElDT04gRElTQ0FSREFCTEUgInB5Y29uLmljbyIgCisxIElDT04gRElTQ0FSREFCTEUgImljb25zXHB5dGhvbi5pY28iIAogCiAKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCmRpZmYgLS1naXQgYS9QQy9weXRob253X2V4ZS5yYyBiL1BDL3B5dGhvbndfZXhlLnJjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4YmYzNTkKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9weXRob253X2V4ZS5yYwpAQCAtMCwwICsxLDQ5IEBACisvLyBSZXNvdXJjZSBzY3JpcHQgZm9yIFB5dGhvbiBjb25zb2xlIEVYRXMuCisKKyNpbmNsdWRlICJweXRob25fdmVyX3JjLmgiCisKKy8vIEluY2x1ZGUgdGhlIG1hbmlmZXN0IGZpbGUgdGhhdCBpbmRpY2F0ZXMgd2Ugc3VwcG9ydCBhbGwKKy8vIGN1cnJlbnQgdmVyc2lvbnMgb2YgV2luZG93cy4KKyNpbmNsdWRlIDx3aW51c2VyLmg+CisxIFJUX01BTklGRVNUICJweXRob24ubWFuaWZlc3QiCisKKzEgSUNPTiBESVNDQVJEQUJMRSAiaWNvbnNccHl0aG9udy5pY28iIAorCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gVmVyc2lvbgorLy8KKworVlNfVkVSU0lPTl9JTkZPIFZFUlNJT05JTkZPCisgRklMRVZFUlNJT04gUFlWRVJTSU9ONjQKKyBQUk9EVUNUVkVSU0lPTiBQWVZFUlNJT042NAorIEZJTEVGTEFHU01BU0sgMHgzZkwKKyNpZmRlZiBfREVCVUcKKyBGSUxFRkxBR1MgVlNfRkZfREVCVUcKKyNlbHNlCisgRklMRUZMQUdTIDB4MEwKKyNlbmRpZgorIEZJTEVPUyBWT1NfX1dJTkRPV1MzMgorIEZJTEVUWVBFIFZGVF9BUFAKKyBGSUxFU1VCVFlQRSAweDBMCitCRUdJTgorICAgIEJMT0NLICJTdHJpbmdGaWxlSW5mbyIKKyAgICBCRUdJTgorICAgICAgICBCTE9DSyAiMDAwMDA0YjAiCisgICAgICAgIEJFR0lOCisgICAgICAgICAgICBWQUxVRSAiQ29tcGFueU5hbWUiLCBQWVRIT05fQ09NUEFOWSAiXDAiCisgICAgICAgICAgICBWQUxVRSAiRmlsZURlc2NyaXB0aW9uIiwgIlB5dGhvblwwIgorICAgICAgICAgICAgVkFMVUUgIkZpbGVWZXJzaW9uIiwgUFlUSE9OX1ZFUlNJT04KKyAgICAgICAgICAgIFZBTFVFICJJbnRlcm5hbE5hbWUiLCAiUHl0aG9uIEFwcGxpY2F0aW9uXDAiCisgICAgICAgICAgICBWQUxVRSAiTGVnYWxDb3B5cmlnaHQiLCBQWVRIT05fQ09QWVJJR0hUICJcMCIKKyAgICAgICAgICAgIFZBTFVFICJPcmlnaW5hbEZpbGVuYW1lIiwgInB5dGhvbnciIFBZVEhPTl9ERUJVR19FWFQgIi5leGVcMCIKKyAgICAgICAgICAgIFZBTFVFICJQcm9kdWN0TmFtZSIsICJQeXRob25cMCIKKyAgICAgICAgICAgIFZBTFVFICJQcm9kdWN0VmVyc2lvbiIsIFBZVEhPTl9WRVJTSU9OCisgICAgICAgIEVORAorICAgIEVORAorICAgIEJMT0NLICJWYXJGaWxlSW5mbyIKKyAgICBCRUdJTgorICAgICAgICBWQUxVRSAiVHJhbnNsYXRpb24iLCAweDAsIDEyMDAKKyAgICBFTkQKK0VORApkaWZmIC0tZ2l0IGEvUEMvdGVzdHB5LnB5IGIvUEMvdGVzdHB5LnB5CmluZGV4IDRlZjNkNGYuLjcwOWYzNWMgMTAwNjQ0Ci0tLSBhL1BDL3Rlc3RweS5weQorKysgYi9QQy90ZXN0cHkucHkKQEAgLTI2LDUgKzI2LDUgQEAKICAgICAgICAgICAgICMgQWRkIHRoZSAidGVzdCIgZGlyZWN0b3J5IHRvIFBZVEhPTlBBVEguCiAgICAgICAgICAgICBzeXMucGF0aCA9IHN5cy5wYXRoICsgW3Rlc3RdCiAKLWltcG9ydCByZWdydGVzdCAjIFN0YW5kYXJkIFB5dGhvbiB0ZXN0ZXIuCi1yZWdydGVzdC5tYWluKCkKK2ltcG9ydCBsaWJyZWdydGVzdCAjIFN0YW5kYXJkIFB5dGhvbiB0ZXN0ZXIuCitsaWJyZWdydGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL1BDL3dpbnJlZy5jIGIvUEMvd2lucmVnLmMKaW5kZXggZjA4ZDlhNC4uNWVmZGM1ZSAxMDA2NDQKLS0tIGEvUEMvd2lucmVnLmMKKysrIGIvUEMvd2lucmVnLmMKQEAgLTU0OSw3ICs1NDksNyBAQAogICAgICAgICAgICAgaWYgKHZhbHVlICE9IFB5X05vbmUgJiYgIVB5TG9uZ19DaGVjayh2YWx1ZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgICAgICAgICAgKnJldERhdGFCdWYgPSAoQllURSAqKVB5TWVtX05FVyhEV09SRCwgMSk7Ci0gICAgICAgICAgICBpZiAoKnJldERhdGFCdWY9PU5VTEwpeworICAgICAgICAgICAgaWYgKCpyZXREYXRhQnVmID09IE5VTEwpewogICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgICAgICAgICAgfQpAQCAtNTYzLDYgKzU2MywyNCBAQAogICAgICAgICAgICAgICAgIG1lbWNweSgqcmV0RGF0YUJ1ZiwgJmQsIHNpemVvZihEV09SRCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUkVHX1FXT1JEOgorICAgICAgICAgIGlmICh2YWx1ZSAhPSBQeV9Ob25lICYmICFQeUxvbmdfQ2hlY2sodmFsdWUpKQorICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgICAgICpyZXREYXRhQnVmID0gKEJZVEUgKilQeU1lbV9ORVcoRFdPUkQ2NCwgMSk7CisgICAgICAgICAgICBpZiAoKnJldERhdGFCdWYgPT0gTlVMTCl7CisgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAqcmV0RGF0YVNpemUgPSBzaXplb2YoRFdPUkQ2NCk7CisgICAgICAgICAgICBpZiAodmFsdWUgPT0gUHlfTm9uZSkgeworICAgICAgICAgICAgICAgIERXT1JENjQgemVybyA9IDA7CisgICAgICAgICAgICAgICAgbWVtY3B5KCpyZXREYXRhQnVmLCAmemVybywgc2l6ZW9mKERXT1JENjQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIERXT1JENjQgZCA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcodmFsdWUpOworICAgICAgICAgICAgICAgIG1lbWNweSgqcmV0RGF0YUJ1ZiwgJmQsIHNpemVvZihEV09SRDY0KSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBSRUdfU1o6CiAgICAgICAgIGNhc2UgUkVHX0VYUEFORF9TWjoKICAgICAgICAgICAgIHsKQEAgLTYxOSw3ICs2MzcsNyBAQAogICAgICAgICAgICAgICAgICpyZXREYXRhU2l6ZSA9IHNpemUgKyAyOwogICAgICAgICAgICAgICAgICpyZXREYXRhQnVmID0gKEJZVEUgKilQeU1lbV9ORVcoY2hhciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpyZXREYXRhU2l6ZSk7Ci0gICAgICAgICAgICAgICAgaWYgKCpyZXREYXRhQnVmPT1OVUxMKXsKKyAgICAgICAgICAgICAgICBpZiAoKnJldERhdGFCdWYgPT0gTlVMTCl7CiAgICAgICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKICAgICAgICAgICAgICAgICB9CkBAIC02NjUsNyArNjgzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwogCiAgICAgICAgICAgICAgICAgKnJldERhdGFCdWYgPSAoQllURSAqKVB5TWVtX05FVyhjaGFyLCB2aWV3Lmxlbik7Ci0gICAgICAgICAgICAgICAgaWYgKCpyZXREYXRhQnVmPT1OVUxMKXsKKyAgICAgICAgICAgICAgICBpZiAoKnJldERhdGFCdWYgPT0gTlVMTCl7CiAgICAgICAgICAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXcpOwogICAgICAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CkBAIC02OTAsMTkgKzcwOCwyNCBAQAogICAgICAgICAgICAgaWYgKHJldERhdGFTaXplID09IDApCiAgICAgICAgICAgICAgICAgb2JEYXRhID0gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoMCk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgb2JEYXRhID0gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoKihpbnQgKilyZXREYXRhQnVmKTsKKyAgICAgICAgICAgICAgICBvYkRhdGEgPSBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZygqKERXT1JEICopcmV0RGF0YUJ1Zik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBSRUdfUVdPUkQ6CisgICAgICAgICAgICBpZiAocmV0RGF0YVNpemUgPT0gMCkKKyAgICAgICAgICAgICAgICBvYkRhdGEgPSBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcoMCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgb2JEYXRhID0gUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKCooRFdPUkQ2NCAqKXJldERhdGFCdWYpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUkVHX1NaOgogICAgICAgICBjYXNlIFJFR19FWFBBTkRfU1o6CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLyogdGhlIGJ1ZmZlciBtYXkgb3IgbWF5IG5vdCBoYXZlIGEgdHJhaWxpbmcgTlVMTCAqLworICAgICAgICAgICAgICAgIC8qIFJFR19TWiBzaG91bGQgYmUgYSBOVUwgdGVybWluYXRlZCBzdHJpbmcsIGJ1dCBvbmx5IGJ5CisgICAgICAgICAgICAgICAgICogY29udmVudGlvbi4gVGhlIGJ1ZmZlciBtYXkgaGF2ZSBiZWVuIHNhdmVkIHdpdGhvdXQgYSBOVUwKKyAgICAgICAgICAgICAgICAgKiBvciB3aXRoIGVtYmVkZGVkIE5VTHMuIFRvIGJlIGNvbnNpc3RlbnQgd2l0aCByZWcuZXhlIGFuZAorICAgICAgICAgICAgICAgICAqIHJlZ2VkaXQuZXhlLCBjb25zdW1lIG9ubHkgdXAgdG8gdGhlIGZpcnN0IE5VTC4gKi8KICAgICAgICAgICAgICAgICB3Y2hhcl90ICpkYXRhID0gKHdjaGFyX3QgKilyZXREYXRhQnVmOwotICAgICAgICAgICAgICAgIGludCBsZW4gPSByZXREYXRhU2l6ZSAvIDI7Ci0gICAgICAgICAgICAgICAgaWYgKHJldERhdGFTaXplICYmIGRhdGFbbGVuLTFdID09ICdcMCcpCi0gICAgICAgICAgICAgICAgICAgIHJldERhdGFTaXplIC09IDI7Ci0gICAgICAgICAgICAgICAgaWYgKHJldERhdGFTaXplIDw9IDApCi0gICAgICAgICAgICAgICAgICAgIGRhdGEgPSBMIiI7Ci0gICAgICAgICAgICAgICAgb2JEYXRhID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihkYXRhLCByZXREYXRhU2l6ZS8yKTsKKyAgICAgICAgICAgICAgICBzaXplX3QgbGVuID0gd2NzbmxlbihkYXRhLCByZXREYXRhU2l6ZSAvIHNpemVvZih3Y2hhcl90KSk7CisgICAgICAgICAgICAgICAgb2JEYXRhID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihkYXRhLCBsZW4pOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICBjYXNlIFJFR19NVUxUSV9TWjoKQEAgLTE1OTksNyArMTYyMiw3IEBACiAgICAgICAgIEFuIGludGVnZXIgdGhhdCBzcGVjaWZpZXMgdGhlIHR5cGUgb2YgdGhlIGRhdGEsIG9uZSBvZjoKICAgICAgICAgUkVHX0JJTkFSWSAtLSBCaW5hcnkgZGF0YSBpbiBhbnkgZm9ybS4KICAgICAgICAgUkVHX0RXT1JEIC0tIEEgMzItYml0IG51bWJlci4KLSAgICAgICAgUkVHX0RXT1JEX0xJVFRMRV9FTkRJQU4gLS0gQSAzMi1iaXQgbnVtYmVyIGluIGxpdHRsZS1lbmRpYW4gZm9ybWF0LgorICAgICAgICBSRUdfRFdPUkRfTElUVExFX0VORElBTiAtLSBBIDMyLWJpdCBudW1iZXIgaW4gbGl0dGxlLWVuZGlhbiBmb3JtYXQuIEVxdWl2YWxlbnQgdG8gUkVHX0RXT1JECiAgICAgICAgIFJFR19EV09SRF9CSUdfRU5ESUFOIC0tIEEgMzItYml0IG51bWJlciBpbiBiaWctZW5kaWFuIGZvcm1hdC4KICAgICAgICAgUkVHX0VYUEFORF9TWiAtLSBBIG51bGwtdGVybWluYXRlZCBzdHJpbmcgdGhhdCBjb250YWlucyB1bmV4cGFuZGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlcyB0byBlbnZpcm9ubWVudCB2YXJpYWJsZXMgKGZvciBleGFtcGxlLApAQCAtMTYwOSw2ICsxNjMyLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGJ5IHR3byBudWxsIGNoYXJhY3RlcnMuICBOb3RlIHRoYXQgUHl0aG9uIGhhbmRsZXMKICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgdGVybWluYXRpb24gYXV0b21hdGljYWxseS4KICAgICAgICAgUkVHX05PTkUgLS0gTm8gZGVmaW5lZCB2YWx1ZSB0eXBlLgorICAgICAgICBSRUdfUVdPUkQgLS0gQSA2NC1iaXQgbnVtYmVyLgorICAgICAgICBSRUdfUVdPUkRfTElUVExFX0VORElBTiAtLSBBIDY0LWJpdCBudW1iZXIgaW4gbGl0dGxlLWVuZGlhbiBmb3JtYXQuIEVxdWl2YWxlbnQgdG8gUkVHX1FXT1JELgogICAgICAgICBSRUdfUkVTT1VSQ0VfTElTVCAtLSBBIGRldmljZS1kcml2ZXIgcmVzb3VyY2UgbGlzdC4KICAgICAgICAgUkVHX1NaIC0tIEEgbnVsbC10ZXJtaW5hdGVkIHN0cmluZy4KICAgICB2YWx1ZTogb2JqZWN0CkBAIC0xNjMxLDcgKzE2NTYsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHdpbnJlZ19TZXRWYWx1ZUV4X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgSEtFWSBrZXksIFB5X1VOSUNPREUgKnZhbHVlX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpyZXNlcnZlZCwgRFdPUkQgdHlwZSwgUHlPYmplY3QgKnZhbHVlKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWM4OGM4NDI2YjZjMDBlYzcgaW5wdXQ9ZjFiMTZjYmNjM2VkNDEwMV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWM4OGM4NDI2YjZjMDBlYzcgaW5wdXQ9OTAwYTllMzk5MGJmYjE5Nl0qLwogewogICAgIEJZVEUgKmRhdGE7CiAgICAgRFdPUkQgbGVuOwpAQCAtMTkxOCw2ICsxOTQzLDggQEAKICAgICBBRERfSU5UKFJFR19EV09SRCk7CiAgICAgQUREX0lOVChSRUdfRFdPUkRfTElUVExFX0VORElBTik7CiAgICAgQUREX0lOVChSRUdfRFdPUkRfQklHX0VORElBTik7CisgICAgQUREX0lOVChSRUdfUVdPUkQpOworICAgIEFERF9JTlQoUkVHX1FXT1JEX0xJVFRMRV9FTkRJQU4pOwogICAgIEFERF9JTlQoUkVHX0xJTkspOwogICAgIEFERF9JTlQoUkVHX01VTFRJX1NaKTsKICAgICBBRERfSU5UKFJFR19SRVNPVVJDRV9MSVNUKTsKZGlmZiAtLWdpdCBhL1BDL3dpbnNvdW5kLmMgYi9QQy93aW5zb3VuZC5jCmluZGV4IDZiNzlkMjMuLjdmZWViY2IgMTAwNjQ0Ci0tLSBhL1BDL3dpbnNvdW5kLmMKKysrIGIvUEMvd2luc291bmQuYwpAQCAtNTIsNyArNTIsNyBAQAogIlNORF9OT1dBSVQgLSBSZXR1cm4gaW1tZWRpYXRlbHkgaWYgdGhlIHNvdW5kIGRyaXZlciBpcyBidXN5XG4iIC8vIFdpdGhvdXQgYW55IGVycm9ycwogIlxuIgogIkJlZXAoZnJlcXVlbmN5LCBkdXJhdGlvbikgLSBNYWtlIGEgYmVlcCB0aHJvdWdoIHRoZSBQQyBzcGVha2VyLlxuIgotIk1lc3NhZ2VCZWVwKHgpIC0gQ2FsbCBXaW5kb3dzIE1lc3NhZ2VCZWVwLiIpOworIk1lc3NhZ2VCZWVwKHR5cGUpIC0gQ2FsbCBXaW5kb3dzIE1lc3NhZ2VCZWVwLiIpOwogCiAvKltjbGluaWMgaW5wdXRdCiBtb2R1bGUgd2luc291bmQKQEAgLTY0LDMyICs2NCw1OCBAQAogLypbY2xpbmljIGlucHV0XQogd2luc291bmQuUGxheVNvdW5kCiAKLSAgICBzb3VuZDogUHlfVU5JQ09ERShhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KQorICAgIHNvdW5kOiBvYmplY3QKICAgICAgICAgVGhlIHNvdW5kIHRvIHBsYXk7IGEgZmlsZW5hbWUsIGRhdGEsIG9yIE5vbmUuCiAgICAgZmxhZ3M6IGludAogICAgICAgICBGbGFnIHZhbHVlcywgb3JlZCB0b2dldGhlci4gIFNlZSBtb2R1bGUgZG9jdW1lbnRhdGlvbi4KLSAgICAvCiAKIEEgd3JhcHBlciBhcm91bmQgdGhlIFdpbmRvd3MgUGxheVNvdW5kIEFQSS4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXdpbnNvdW5kX1BsYXlTb3VuZF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X1VOSUNPREUgKnNvdW5kLCBpbnQgZmxhZ3MpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZWMyNGIzYTJiNDM2ODM3OCBpbnB1dD0zNDExYjFiN2MxZjM2ZDkzXSovCit3aW5zb3VuZF9QbGF5U291bmRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc291bmQsIGludCBmbGFncykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00OWEwZmQxNmEzNzJlYmViIGlucHV0PWM2M2UxZjJkODQ4ZGEyZjJdKi8KIHsKICAgICBpbnQgb2s7CisgICAgd2NoYXJfdCAqd3NvdW5kOworICAgIFB5X2J1ZmZlciB2aWV3ID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKGZsYWdzICYgU05EX0FTWU5DICYmIGZsYWdzICYgU05EX01FTU9SWSkgewotICAgICAgICAvKiBTaWRlc3RlcCByZWZlcmVuY2UgY291bnRpbmcgaGVhZGFjaGU7IHVuZm9ydHVuYXRlbHkgdGhpcyBhbHNvCi0gICAgICAgICAgICBwcmV2ZW50IFNORF9MT09QIGZyb20gbWVtb3J5LiAqLwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBwbGF5IGFzeW5jaHJvbm91c2x5IGZyb20gbWVtb3J5Iik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChzb3VuZCA9PSBQeV9Ob25lKSB7CisgICAgICAgIHdzb3VuZCA9IE5VTEw7CisgICAgfSBlbHNlIGlmIChmbGFncyAmIFNORF9NRU1PUlkpIHsKKyAgICAgICAgaWYgKGZsYWdzICYgU05EX0FTWU5DKSB7CisgICAgICAgICAgICAvKiBTaWRlc3RlcCByZWZlcmVuY2UgY291bnRpbmcgaGVhZGFjaGU7IHVuZm9ydHVuYXRlbHkgdGhpcyBhbHNvCisgICAgICAgICAgICAgICAgcHJldmVudCBTTkRfTE9PUCBmcm9tIG1lbW9yeS4gKi8KKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBwbGF5IGFzeW5jaHJvbm91c2x5IGZyb20gbWVtb3J5Iik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHNvdW5kLCAmdmlldywgUHlCVUZfU0lNUExFKSA8IDApIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHdzb3VuZCA9ICh3Y2hhcl90ICopdmlldy5idWY7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soc291bmQpKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICInc291bmQnIG11c3QgYmUgc3RyIG9yIE5vbmUsIG5vdCAnJXMnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHNvdW5kKS0+dHBfbmFtZSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICB3c291bmQgPSBQeVVuaWNvZGVfQXNXaWRlQ2hhclN0cmluZyhzb3VuZCwgTlVMTCk7CisgICAgICAgIGlmICh3c291bmQgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KICAgICB9CiAKKwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBvayA9IFBsYXlTb3VuZFcoc291bmQsIE5VTEwsIGZsYWdzKTsKKyAgICBvayA9IFBsYXlTb3VuZFcod3NvdW5kLCBOVUxMLCBmbGFncyk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICBpZiAodmlldy5vYmopIHsKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmlldyk7CisgICAgfSBlbHNlIGlmIChzb3VuZCAhPSBQeV9Ob25lKSB7CisgICAgICAgIFB5TWVtX0ZyZWUod3NvdW5kKTsKKyAgICB9CiAgICAgaWYgKCFvaykgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiRmFpbGVkIHRvIHBsYXkgc291bmQiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMDUsMTQgKzEzMSwxMyBAQAogICAgICAgICBNdXN0IGJlIGluIHRoZSByYW5nZSAzNyB0aHJvdWdoIDMyLDc2Ny4KICAgICBkdXJhdGlvbjogaW50CiAgICAgICAgIEhvdyBsb25nIHRoZSBzb3VuZCBzaG91bGQgcGxheSwgaW4gbWlsbGlzZWNvbmRzLgotICAgIC8KIAogQSB3cmFwcGVyIGFyb3VuZCB0aGUgV2luZG93cyBCZWVwIEFQSS4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKIHdpbnNvdW5kX0JlZXBfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgZnJlcXVlbmN5LCBpbnQgZHVyYXRpb24pCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjMyMzgyZTUyZWU5YjJmYiBpbnB1dD02MjhhOTlkMmRkZjczNzk4XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjMyMzgyZTUyZWU5YjJmYiBpbnB1dD00MGUzNjBjZmEwMGE1Y2YwXSovCiB7CiAgICAgQk9PTCBvazsKIApAQCAtMTM2LDggKzE2MSw3IEBACiAvKltjbGluaWMgaW5wdXRdCiB3aW5zb3VuZC5NZXNzYWdlQmVlcAogCi0gICAgeDogaW50KGNfZGVmYXVsdD0iTUJfT0siKSA9IE1CX09LCi0gICAgLworICAgIHR5cGU6IGludChjX2RlZmF1bHQ9Ik1CX09LIikgPSBNQl9PSwogCiBDYWxsIFdpbmRvd3MgTWVzc2FnZUJlZXAoeCkuCiAKQEAgLTE0NSwxMCArMTY5LDIwIEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5zb3VuZF9NZXNzYWdlQmVlcF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCB4KQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTFhZDg5ZTRkOGQzMGE5NTcgaW5wdXQ9YTc3NmM4YTg1Yzk4NTNmNl0qLword2luc291bmRfTWVzc2FnZUJlZXBfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgdHlwZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xMjA4NzU0NTUxMjExMjFmIGlucHV0PWRiMTg1Zjc0MWFlMjE0MDFdKi8KIHsKLSAgICBNZXNzYWdlQmVlcCh4KTsKKyAgICBCT09MIG9rOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIG9rID0gTWVzc2FnZUJlZXAodHlwZSk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmICghb2spIHsKKyAgICAgICAgUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnIoUHlFeGNfUnVudGltZUVycm9yLCAwKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKZGlmZiAtLWdpdCBhL1BDYnVpbGQvX2FzeW5jaW8udmN4cHJvaiBiL1BDYnVpbGQvX2FzeW5jaW8udmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zY2NhMDAwCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9fYXN5bmNpby52Y3hwcm9qCkBAIC0wLDAgKzEsNzcgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPnszODRDMjI0QS03NDc0LTQ3NkUtQTAxQi03NTBFQTdERTkxOEN9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT5fYXN5bmNpbzwvUm9vdE5hbWVzcGFjZT4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSJweXRob24ucHJvcHMiIC8+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxUYXJnZXRFeHQ+LnB5ZDwvVGFyZ2V0RXh0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2FzeW5jaW9tb2R1bGUuYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFJlc291cmNlQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xweXRob25fbnQucmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InB5dGhvbmNvcmUudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57Y2Y3YWMzZDEtZTJkZi00MWQyLWJlYTYtMWUyNTU2Y2RlYTI2fTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvX2FzeW5jaW8udmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC9fYXN5bmNpby52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTBhMTg2YwotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvX2FzeW5jaW8udmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMTYgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPFJlc291cmNlQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xweXRob25fbnQucmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnsyNDIyMjc4ZS1lZWViLTQyNDEtODE4Mi00MzNlMmJjNWE3ZmN9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2FzeW5jaW9tb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL19mcmVlemVfaW1wb3J0bGliLnZjeHByb2ogYi9QQ2J1aWxkL19mcmVlemVfaW1wb3J0bGliLnZjeHByb2oKaW5kZXggZjc3MTRjMC4uYzczMjY2MyAxMDA2NDQKLS0tIGEvUENidWlsZC9fZnJlZXplX2ltcG9ydGxpYi52Y3hwcm9qCisrKyBiL1BDYnVpbGQvX2ZyZWV6ZV9pbXBvcnRsaWIudmN4cHJvagpAQCAtNzYsMzEgKzc2LDQ0IEBACiAgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KLSAgICA8Tm9uZSBJbmNsdWRlPSIuLlxMaWJcaW1wb3J0bGliXF9ib290c3RyYXAucHkiIC8+CisgICAgPE5vbmUgSW5jbHVkZT0iLi5cTGliXGltcG9ydGxpYlxfYm9vdHN0cmFwLnB5Ij4KKyAgICAgIDxJbnRGaWxlPiQoSW50RGlyKWltcG9ydGxpYi5nLmg8L0ludEZpbGU+CisgICAgICA8T3V0RmlsZT4kKFB5U291cmNlUGF0aClQeXRob25caW1wb3J0bGliLmg8L091dEZpbGU+CisgICAgPC9Ob25lPgorICAgIDxOb25lIEluY2x1ZGU9Ii4uXExpYlxpbXBvcnRsaWJcX2Jvb3RzdHJhcF9leHRlcm5hbC5weSI+CisgICAgICA8SW50RmlsZT4kKEludERpcilpbXBvcnRsaWJfZXh0ZXJuYWwuZy5oPC9JbnRGaWxlPgorICAgICAgPE91dEZpbGU+JChQeVNvdXJjZVBhdGgpUHl0aG9uXGltcG9ydGxpYl9leHRlcm5hbC5oPC9PdXRGaWxlPgorICAgIDwvTm9uZT4KICAgPC9JdGVtR3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CiAgIDwvSW1wb3J0R3JvdXA+Ci0gIDxUYXJnZXQgTmFtZT0iUmVidWlsZEltcG9ydExpYiIgQWZ0ZXJUYXJnZXRzPSJBZnRlckJ1aWxkIiBDb25kaXRpb249IiQoQ29uZmlndXJhdGlvbikgPT0gJ0RlYnVnJyBvciAkKENvbmZpZ3VyYXRpb24pID09ICdSZWxlYXNlJyI+Ci0gICAgPEV4ZWMgQ29tbWFuZD0nIiQoVGFyZ2V0UGF0aCkiICIkKFB5U291cmNlUGF0aClMaWJcaW1wb3J0bGliXF9ib290c3RyYXAucHkiICIkKEludERpcilpbXBvcnRsaWIuZy5oIicgLz4KKyAgPFRhcmdldCBOYW1lPSJfUmVidWlsZEltcG9ydExpYiI+CisgICAgPEV4ZWMgQ29tbWFuZD0nIiQoVGFyZ2V0UGF0aCkiICIlKE5vbmUuRnVsbFBhdGgpIiAiJShOb25lLkludEZpbGUpIicgLz4KICAgICAKICAgICA8UHJvcGVydHlHcm91cD4KLSAgICAgIDxfT2xkQ29udGVudCBDb25kaXRpb249IkV4aXN0cygnJChQeVNvdXJjZVBhdGgpUHl0aG9uXGltcG9ydGxpYi5oJykiPiQoW1N5c3RlbS5JTy5GaWxlXTo6UmVhZEFsbFRleHQoJyQoUHlTb3VyY2VQYXRoKVB5dGhvblxpbXBvcnRsaWIuaCcpLlJlcGxhY2UoYCYjeDBEOyYjeDBBO2AsIGAmI3gwQTtgKSk8L19PbGRDb250ZW50PgotICAgICAgPF9OZXdDb250ZW50IENvbmRpdGlvbj0iRXhpc3RzKCckKEludERpcilpbXBvcnRsaWIuZy5oJykiPiQoW1N5c3RlbS5JTy5GaWxlXTo6UmVhZEFsbFRleHQoJyQoSW50RGlyKWltcG9ydGxpYi5nLmgnKS5SZXBsYWNlKGAmI3gwRDsmI3gwQTtgLCBgJiN4MEE7YCkpPC9fTmV3Q29udGVudD4KKyAgICAgIDxfT2xkQ29udGVudCBDb25kaXRpb249IkV4aXN0cygkKE91dFRhcmdldFBhdGgpKSI+PC9fT2xkQ29udGVudD4KKyAgICAgIDxfTmV3Q29udGVudCBDb25kaXRpb249IkV4aXN0cygkKEludFRhcmdldFBhdGgpKSI+JChbU3lzdGVtLklPLkZpbGVdOjpSZWFkQWxsVGV4dCgkKEludFRhcmdldFBhdGgpKS5SZXBsYWNlKGAmI3gwRDsmI3gwQTtgLCBgJiN4MEE7YCkpPC9fTmV3Q29udGVudD4KICAgICA8L1Byb3BlcnR5R3JvdXA+CiAgICAgCi0gICAgPENvcHkgU291cmNlRmlsZXM9IiQoSW50RGlyKWltcG9ydGxpYi5nLmgiCi0gICAgICAgICAgRGVzdGluYXRpb25GaWxlcz0iJChQeVNvdXJjZVBhdGgpUHl0aG9uXGltcG9ydGxpYi5oIgotICAgICAgICAgIENvbmRpdGlvbj0iRXhpc3RzKCckKEludERpcilpbXBvcnRsaWIuZy5oJykgYW5kICckKF9PbGRDb250ZW50KScgIT0gJyQoX05ld0NvbnRlbnQpJyIgLz4KKyAgICA8Q29weSBTb3VyY2VGaWxlcz0iJShOb25lLkludEZpbGUpIgorICAgICAgICAgIERlc3RpbmF0aW9uRmlsZXM9IiUoTm9uZS5PdXRGaWxlKSIKKyAgICAgICAgICBDb25kaXRpb249IiFFeGlzdHMoJShOb25lLk91dEZpbGUpKSBvciAoRXhpc3RzKCUoTm9uZS5JbnRGaWxlKSkgYW5kICckKFtTeXN0ZW0uSU8uRmlsZV06OlJlYWRBbGxUZXh0KCUoTm9uZS5PdXRGaWxlKSkuUmVwbGFjZShgJiN4MEQ7JiN4MEE7YCwgYCYjeDBBO2ApKScgIT0gJyQoW1N5c3RlbS5JTy5GaWxlXTo6UmVhZEFsbFRleHQoJShOb25lLkludEZpbGUpKS5SZXBsYWNlKGAmI3gwRDsmI3gwQTtgLCBgJiN4MEE7YCkpJykiPgorICAgICAgPE91dHB1dCBUYXNrUGFyYW1ldGVyPSJDb3BpZWRGaWxlcyIgSXRlbU5hbWU9Il9VcGRhdGVkIiAvPgorICAgIDwvQ29weT4KICAgICAKLSAgICA8V2FybmluZyBUZXh0PSJpbXBvcnRsaWIuaCBoYXMgYmVlbiB1cGRhdGVkLiBZb3Ugd2lsbCBuZWVkIHRvIHJlYnVpbGQgcHl0aG9uY29yZSB0byBzZWUgdGhlIGNoYW5nZXMuIgotICAgICAgICAgICAgIENvbmRpdGlvbj0iRXhpc3RzKCckKEludERpcilpbXBvcnRsaWIuZy5oJykgYW5kICckKF9PbGRDb250ZW50KScgIT0gJyQoX05ld0NvbnRlbnQpJyBhbmQgJChDb25maWd1cmF0aW9uKSA9PSAnRGVidWcnIiAvPgotICAgIDxFcnJvciBUZXh0PSJpbXBvcnRsaWIuaCBoYXMgYmVlbiB1cGRhdGVkLiBZb3Ugd2lsbCBuZWVkIHRvIHJlYnVpbGQgcHl0aG9uY29yZSB0byBzZWUgdGhlIGNoYW5nZXMuIgotICAgICAgICAgICBDb25kaXRpb249IkV4aXN0cygnJChJbnREaXIpaW1wb3J0bGliLmcuaCcpIGFuZCAnJChfT2xkQ29udGVudCknICE9ICckKF9OZXdDb250ZW50KScgYW5kICQoQ29uZmlndXJhdGlvbikgPT0gJ1JlbGVhc2UnIiAvPgorICAgIDxXYXJuaW5nIFRleHQ9IkAoX1VwZGF0ZWQtPiclKEZpbGVuYW1lKSUoRXh0ZW5zaW9uKScsJywgJykgdXBkYXRlZC4gWW91IHdpbGwgbmVlZCB0byByZWJ1aWxkIHB5dGhvbmNvcmUgdG8gc2VlIHRoZSBjaGFuZ2VzLiIKKyAgICAgICAgICAgICBDb25kaXRpb249IidAKF9VcGRhdGVkKScgIT0gJycgYW5kICQoQ29uZmlndXJhdGlvbikgPT0gJ0RlYnVnJyIgLz4KKyAgICA8RXJyb3IgVGV4dD0iQChfVXBkYXRlZC0+JyUoRmlsZW5hbWUpJShFeHRlbnNpb24pJywnLCAnKSB1cGRhdGVkLiBZb3Ugd2lsbCBuZWVkIHRvIHJlYnVpbGQgcHl0aG9uY29yZSB0byBzZWUgdGhlIGNoYW5nZXMuIgorICAgICAgICAgICBDb25kaXRpb249IidAKF9VcGRhdGVkKScgIT0gJycgYW5kICQoQ29uZmlndXJhdGlvbikgPT0gJ1JlbGVhc2UnIiAvPgorICA8L1RhcmdldD4KKyAgPFRhcmdldCBOYW1lPSJSZWJ1aWxkSW1wb3J0TGliIiBBZnRlclRhcmdldHM9IkFmdGVyQnVpbGQiIENvbmRpdGlvbj0iJChDb25maWd1cmF0aW9uKSA9PSAnRGVidWcnIG9yICQoQ29uZmlndXJhdGlvbikgPT0gJ1JlbGVhc2UnIgorICAgICAgICAgIERlcGVuZHNPblRhcmdldHM9Il9SZWJ1aWxkSW1wb3J0TGliIj4KICAgPC9UYXJnZXQ+CiAgIDxUYXJnZXQgTmFtZT0iX0NsZWFuSW1wb3J0TGliIiBCZWZvcmVUYXJnZXRzPSJDb3JlQ2xlYW4iPgogICAgIDxJdGVtR3JvdXA+CiAgICAgICA8Q2xlYW4gSW5jbHVkZT0iJChJbnREaXIpaW1wb3J0bGliLmcuaCIgLz4KKyAgICAgIDxDbGVhbiBJbmNsdWRlPSIkKEludERpcilpbXBvcnRsaWJfZXh0ZXJuYWwuZy5oIiAvPgogICAgIDwvSXRlbUdyb3VwPgogICA8L1RhcmdldD4KIDwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvX2x6bWEudmN4cHJvaiBiL1BDYnVpbGQvX2x6bWEudmN4cHJvagppbmRleCAxZjA2OTZkYS4uN2VjMjY5MiAxMDA2NDQKLS0tIGEvUENidWlsZC9fbHptYS52Y3hwcm9qCisrKyBiL1BDYnVpbGQvX2x6bWEudmN4cHJvagpAQCAtNjEsMTMgKzYxLDExIEBACiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQobHptYURpcilpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKGx6bWFEaXIpc3JjL2xpYmx6bWEvYXBpOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7TFpNQV9BUElfU1RBVElDOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzIENvbmRpdGlvbj0iJyQoUGxhdGZvcm0pJyA9PSAnV2luMzInIj4kKGx6bWFEaXIpXGJpbl9pNDg2XGxpYmx6bWEuYTslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMgQ29uZGl0aW9uPSInJChQbGF0Zm9ybSknID09ICd4NjQnIj4kKGx6bWFEaXIpXGJpbl94ODYtNjRcbGlibHptYS5hOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8SW1hZ2VIYXNTYWZlRXhjZXB0aW9uSGFuZGxlcnM+ZmFsc2U8L0ltYWdlSGFzU2FmZUV4Y2VwdGlvbkhhbmRsZXJzPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JChPdXREaXIpL2xpYmx6bWEkKFB5RGVidWdFeHQpLmxpYjwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1Hcm91cD4KQEAgLTgxLDggKzc5LDEyIEBACiAgICAgICA8UHJvamVjdD57Y2Y3YWMzZDEtZTJkZi00MWQyLWJlYTYtMWUyNTU2Y2RlYTI2fTwvUHJvamVjdD4KICAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CiAgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9ImxpYmx6bWEudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57MTI3MjgyNTAtMTZlQy00ZGM2LTk0ZDctZTIxZGQ4ODk0N2Y4fTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgogICA8L0l0ZW1Hcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KICAgPC9JbXBvcnRHcm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL190ZXN0Y29uc29sZS52Y3hwcm9qIGIvUENidWlsZC9fdGVzdGNvbnNvbGUudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzUxY2VkCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9fdGVzdGNvbnNvbGUudmN4cHJvagpAQCAtMCwwICsxLDgzIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57QjI0NEU3ODctQzQ0NS00NDFDLUJERjQtNUE0RjFBM0ExRTUxfTwvUHJvamVjdEd1aWQ+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICAgIDxSb290TmFtZXNwYWNlPl90ZXN0Y29uc29sZTwvUm9vdE5hbWVzcGFjZT4KKyAgICA8U3VwcG9ydFBHTz5mYWxzZTwvU3VwcG9ydFBHTz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9InB5dGhvbi5wcm9wcyIgLz4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPFRhcmdldEV4dD4ucHlkPC9UYXJnZXRFeHQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xfdGVzdGNvbnNvbGUuYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFJlc291cmNlQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xweXRob25fbnQucmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InB5dGhvbmNvcmUudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57Y2Y3YWMzZDEtZTJkZi00MWQyLWJlYTYtMWUyNTU2Y2RlYTI2fTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL190ZXN0Y29uc29sZS52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL190ZXN0Y29uc29sZS52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGMyNTEwMQotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvX3Rlc3Rjb25zb2xlLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDIyIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+Y3BwO2M7Y2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXg8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezkzOTk1MzgwLTg5QkQtNGIwNC04OEVCLTYyNUZCRTUyRUJGQn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5oO2hwcDtoeHg7aG07aW5sO2luYzt4c2Q8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJSZXNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NjdEQTZBQjYtRjgwMC00YzA4LThCN0EtODNCQjEyMUFBRDAxfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPnJjO2ljbztjdXI7Ym1wO2RsZztyYzI7cmN0O2JpbjtyZ3M7Z2lmO2pwZztqcGVnO2pwZTtyZXN4O3RpZmY7dGlmO3BuZzt3YXY7bWZjcmliYm9uLW1zPC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3Rlc3RtdWx0aXBoYXNlLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9idWlsZC5iYXQgYi9QQ2J1aWxkL2J1aWxkLmJhdAppbmRleCA5OGZhMjY3Li4xYWQ1OGY4IDEwMDY0NAotLS0gYS9QQ2J1aWxkL2J1aWxkLmJhdAorKysgYi9QQ2J1aWxkL2J1aWxkLmJhdApAQCAtMTIzLDkgKzEyMyw5IEBACiAgICAgQGVjaG8gb2ZmDQogICAgIGNhbGwgOktpbGwNCiAgICAgc2V0IGNvbmY9UEdVcGRhdGUNCisgICAgc2V0IHRhcmdldD1CdWlsZA0KICkNCiBnb3RvIEJ1aWxkDQotDQogOktpbGwNCiBlY2hvIG9uDQogbXNidWlsZCAiJWRpciVccHl0aG9uY29yZS52Y3hwcm9qIiAvdDpLaWxsUHl0aG9uICV2ZXJib3NlJV4NCmRpZmYgLS1naXQgYS9QQ2J1aWxkL2J1aWxkX3Bnby5iYXQgYi9QQ2J1aWxkL2J1aWxkX3Bnby5iYXQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3MmMzODIuLjAwMDAwMDAKLS0tIGEvUENidWlsZC9idWlsZF9wZ28uYmF0CisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1AZWNobyBvZmYNCi1lY2hvLkRlcHJlY2F0aW9uV2FybmluZzoNCi1lY2hvLiAgICBUaGlzIHNjcmlwdCBpcyBkZXByZWNhdGVkLCB1c2UgYGJ1aWxkLmJhdCAtLXBnb2AgaW5zdGVhZC4NCi1lY2hvLg0KLQ0KLWNhbGwgIiV+ZHAwYnVpbGQuYmF0IiAtLXBnbyAlKg0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvZ2V0X2V4dGVybmFscy5iYXQgYi9QQ2J1aWxkL2dldF9leHRlcm5hbHMuYmF0CmluZGV4IDFjM2NkZWUuLmE1MTg1YmUgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvZ2V0X2V4dGVybmFscy5iYXQKKysrIGIvUENidWlsZC9nZXRfZXh0ZXJuYWxzLmJhdApAQCAtNTUsMTEgKzU1LDExIEBACiBzZXQgbGlicmFyaWVzPSVsaWJyYXJpZXMlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnppcDItMS4wLjYNCiBpZiBOT1QgIiVJbmNsdWRlU1NMJSI9PSJmYWxzZSIgc2V0IGxpYnJhcmllcz0lbGlicmFyaWVzJSAgICAgbmFzbS0yLjExLjA2DQogaWYgTk9UICIlSW5jbHVkZVNTTCUiPT0iZmFsc2UiIHNldCBsaWJyYXJpZXM9JWxpYnJhcmllcyUgICAgIG9wZW5zc2wtMS4wLjJqDQotc2V0IGxpYnJhcmllcz0lbGlicmFyaWVzJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNxbGl0ZS0zLjguMTEuMA0KLWlmIE5PVCAiJUluY2x1ZGVUa2ludGVyJSI9PSJmYWxzZSIgc2V0IGxpYnJhcmllcz0lbGlicmFyaWVzJSB0Y2wtY29yZS04LjYuNC4yDQotaWYgTk9UICIlSW5jbHVkZVRraW50ZXIlIj09ImZhbHNlIiBzZXQgbGlicmFyaWVzPSVsaWJyYXJpZXMlIHRrLTguNi40LjINCitzZXQgbGlicmFyaWVzPSVsaWJyYXJpZXMlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3FsaXRlLTMuMTQuMi4wDQoraWYgTk9UICIlSW5jbHVkZVRraW50ZXIlIj09ImZhbHNlIiBzZXQgbGlicmFyaWVzPSVsaWJyYXJpZXMlIHRjbC1jb3JlLTguNi42LjANCitpZiBOT1QgIiVJbmNsdWRlVGtpbnRlciUiPT0iZmFsc2UiIHNldCBsaWJyYXJpZXM9JWxpYnJhcmllcyUgdGstOC42LjYuMA0KIGlmIE5PVCAiJUluY2x1ZGVUa2ludGVyJSI9PSJmYWxzZSIgc2V0IGxpYnJhcmllcz0lbGlicmFyaWVzJSB0aXgtOC40LjMuNg0KLXNldCBsaWJyYXJpZXM9JWxpYnJhcmllcyUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ei01LjAuNQ0KK3NldCBsaWJyYXJpZXM9JWxpYnJhcmllcyUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ei01LjIuMg0KIA0KIGZvciAlJWUgaW4gKCVsaWJyYXJpZXMlKSBkbyAoDQogICAgIGlmIGV4aXN0ICUlZSAoDQpkaWZmIC0tZ2l0IGEvUENidWlsZC9saWJsem1hLnZjeHByb2ogYi9QQ2J1aWxkL2xpYmx6bWEudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTFmOWJkCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9saWJsem1hLnZjeHByb2oKQEAgLTAsMCArMSwyMTYgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPnsxMjcyODI1MC0xNkVDLTREQzYtOTRENy1FMjFERDg4OTQ3Rjh9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT5saWJsem1hPC9Sb290TmFtZXNwYWNlPgorICAgIDxTdXBwb3J0UEdPPnRydWU8L1N1cHBvcnRQR08+CisgIDwvUHJvcGVydHlHcm91cD4KKworICA8SW1wb3J0IFByb2plY3Q9InB5dGhvbi5wcm9wcyIgLz4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKworICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPlN0YXRpY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7SEFWRV9DT05GSUdfSDtfREVCVUc7X0xJQjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+UHJvZ3JhbURhdGFiYXNlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChsem1hRGlyKXdpbmRvd3M7JChsem1hRGlyKXNyYy9saWJsem1hL2NvbW1vbjskKGx6bWFEaXIpc3JjL2NvbW1vbjskKGx6bWFEaXIpc3JjL2xpYmx6bWEvYXBpOyQobHptYURpcilzcmMvbGlibHptYS9jaGVjazskKGx6bWFEaXIpc3JjL2xpYmx6bWEvZGVsdGE7JChsem1hRGlyKXNyYy9saWJsem1hL2x6OyQobHptYURpcilzcmMvbGlibHptYS9sem1hOyQobHptYURpcilzcmMvbGlibHptYS9yYW5nZWNvZGVyOyQobHptYURpcilzcmMvbGlibHptYS9zaW1wbGU8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcY29tbW9uXHR1a2xpYl9jcHVjb3Jlcy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xjb21tb25cdHVrbGliX3BoeXNtZW0uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjaGVja1xjaGVjay5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNoZWNrXGNyYzMyX2Zhc3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjaGVja1xjcmMzMl90YWJsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNoZWNrXGNyYzY0X2Zhc3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjaGVja1xjcmM2NF90YWJsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNoZWNrXHNoYTI1Ni5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxhbG9uZV9kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGFsb25lX2VuY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cYXV0b19kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGJsb2NrX2J1ZmZlcl9kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGJsb2NrX2J1ZmZlcl9lbmNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGJsb2NrX2RlY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cYmxvY2tfZW5jb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxibG9ja19oZWFkZXJfZGVjb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxibG9ja19oZWFkZXJfZW5jb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxibG9ja191dGlsLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGNvbW1vbi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxlYXN5X2J1ZmZlcl9lbmNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGVhc3lfZGVjb2Rlcl9tZW11c2FnZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxlYXN5X2VuY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cZWFzeV9lbmNvZGVyX21lbXVzYWdlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGVhc3lfcHJlc2V0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGZpbHRlcl9idWZmZXJfZGVjb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxmaWx0ZXJfYnVmZmVyX2VuY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cZmlsdGVyX2NvbW1vbi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxmaWx0ZXJfZGVjb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxmaWx0ZXJfZW5jb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxmaWx0ZXJfZmxhZ3NfZGVjb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxmaWx0ZXJfZmxhZ3NfZW5jb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxoYXJkd2FyZV9jcHV0aHJlYWRzLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGhhcmR3YXJlX3BoeXNtZW0uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25caW5kZXguYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25caW5kZXhfZGVjb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxpbmRleF9lbmNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGluZGV4X2hhc2guYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cb3V0cXVldWUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cc3RyZWFtX2J1ZmZlcl9kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXHN0cmVhbV9idWZmZXJfZW5jb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxzdHJlYW1fZGVjb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxzdHJlYW1fZW5jb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxzdHJlYW1fZW5jb2Rlcl9tdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxzdHJlYW1fZmxhZ3NfY29tbW9uLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXHN0cmVhbV9mbGFnc19kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXHN0cmVhbV9mbGFnc19lbmNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXHZsaV9kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXHZsaV9lbmNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXHZsaV9zaXplLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcZGVsdGFcZGVsdGFfY29tbW9uLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcZGVsdGFcZGVsdGFfZGVjb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGRlbHRhXGRlbHRhX2VuY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxsem1hXGZhc3Rwb3NfdGFibGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxsem1hXGx6bWEyX2RlY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxsem1hXGx6bWEyX2VuY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxsem1hXGx6bWFfZGVjb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6bWFcbHptYV9lbmNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcbHptYVxsem1hX2VuY29kZXJfb3B0aW11bV9mYXN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcbHptYVxsem1hX2VuY29kZXJfb3B0aW11bV9ub3JtYWwuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxsem1hXGx6bWFfZW5jb2Rlcl9wcmVzZXRzLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcbHpcbHpfZGVjb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6XGx6X2VuY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxselxsel9lbmNvZGVyX21mLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFccmFuZ2Vjb2RlclxwcmljZV90YWJsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXHNpbXBsZVxhcm0uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxzaW1wbGVcYXJtdGh1bWIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxzaW1wbGVcaWE2NC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXHNpbXBsZVxwb3dlcnBjLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcc2ltcGxlXHNpbXBsZV9jb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXHNpbXBsZVxzaW1wbGVfZGVjb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXHNpbXBsZVxzaW1wbGVfZW5jb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXHNpbXBsZVxzcGFyYy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXHNpbXBsZVx4ODYuYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGNvbW1vblxteXRocmVhZC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xjb21tb25cc3lzZGVmcy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xjb21tb25cdHVrbGliX2NvbW1vbi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xjb21tb25cdHVrbGliX2NvbmZpZy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xjb21tb25cdHVrbGliX2NwdWNvcmVzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGNvbW1vblx0dWtsaWJfaW50ZWdlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xjb21tb25cdHVrbGliX3BoeXNtZW0uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxhcGlcbHptYS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGFwaVxsem1hXGJhc2UuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxhcGlcbHptYVxiY2ouaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxhcGlcbHptYVxibG9jay5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGFwaVxsem1hXGNoZWNrLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcYXBpXGx6bWFcY29udGFpbmVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcYXBpXGx6bWFcZGVsdGEuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxhcGlcbHptYVxmaWx0ZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxhcGlcbHptYVxoYXJkd2FyZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGFwaVxsem1hXGluZGV4LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcYXBpXGx6bWFcaW5kZXhfaGFzaC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGFwaVxsem1hXGx6bWExMi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGFwaVxsem1hXHN0cmVhbV9mbGFncy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGFwaVxsem1hXHZlcnNpb24uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxhcGlcbHptYVx2bGkuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjaGVja1xjaGVjay5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNoZWNrXGNyYzMyX3RhYmxlX2JlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY2hlY2tcY3JjMzJfdGFibGVfbGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjaGVja1xjcmM2NF90YWJsZV9iZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNoZWNrXGNyYzY0X3RhYmxlX2xlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY2hlY2tcY3JjX21hY3Jvcy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxhbG9uZV9kZWNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGJsb2NrX2J1ZmZlcl9lbmNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGJsb2NrX2RlY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cYmxvY2tfZW5jb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxjb21tb24uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cZWFzeV9wcmVzZXQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cZmlsdGVyX2NvbW1vbi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxmaWx0ZXJfZGVjb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxmaWx0ZXJfZW5jb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxpbmRleC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxpbmRleF9lbmNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXG1lbWNtcGxlbi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxvdXRxdWV1ZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxzdHJlYW1fZGVjb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxzdHJlYW1fZmxhZ3NfY29tbW9uLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcZGVsdGFcZGVsdGFfY29tbW9uLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcZGVsdGFcZGVsdGFfZGVjb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGRlbHRhXGRlbHRhX2VuY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxkZWx0YVxkZWx0YV9wcml2YXRlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcbHptYVxmYXN0cG9zLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcbHptYVxsem1hMl9kZWNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcbHptYVxsem1hMl9lbmNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcbHptYVxsem1hX2NvbW1vbi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6bWFcbHptYV9kZWNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcbHptYVxsem1hX2VuY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxsem1hXGx6bWFfZW5jb2Rlcl9wcml2YXRlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcbHpcbHpfZGVjb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6XGx6X2VuY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxselxsel9lbmNvZGVyX2hhc2guaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxselxsel9lbmNvZGVyX2hhc2hfdGFibGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxyYW5nZWNvZGVyXHByaWNlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFccmFuZ2Vjb2RlclxyYW5nZV9jb21tb24uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxyYW5nZWNvZGVyXHJhbmdlX2RlY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxyYW5nZWNvZGVyXHJhbmdlX2VuY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxzaW1wbGVcc2ltcGxlX2NvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcc2ltcGxlXHNpbXBsZV9kZWNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcc2ltcGxlXHNpbXBsZV9lbmNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcc2ltcGxlXHNpbXBsZV9wcml2YXRlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpd2luZG93c1xjb25maWcuaCIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL29wZW5zc2wucHJvcHMgYi9QQ2J1aWxkL29wZW5zc2wucHJvcHMKaW5kZXggZTM1YzBkOS4uMGRlNGU0MyAxMDA2NDQKLS0tIGEvUENidWlsZC9vcGVuc3NsLnByb3BzCisrKyBiL1BDYnVpbGQvb3BlbnNzbC5wcm9wcwpAQCAtMTksNiArMTksNyBAQAogICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJPUEVOU1NMX1RIUkVBRFMiIC8+CiAgICAgPCEtLSA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iT1BFTlNTTF9TWVNOQU1FX1dJTjMyIiAvPiAtLT4KICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iT1BFTlNTTF9JQTMyX1NTRTIiIC8+CisgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Ik9QRU5TU0xfQk5fQVNNX0dGMm0iIC8+CiAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9IlNIQTFfQVNNIiAvPgogICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJTSEEyNTZfQVNNIiAvPgogICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJTSEE1MTJfQVNNIiAvPgpAQCAtMzgsNyArMzksNiBAQAogICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJPUEVOU1NMX05PX0RZTkFNSUNfRU5HSU5FIiAvPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cCBDb25kaXRpb249IickKFBsYXRmb3JtKSc9PSdXaW4zMiciPgotICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJPUEVOU1NMX0JOX0FTTV9HRjJtIiAvPgogICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJPUEVOU1NMX0JOX0FTTV9QQVJUX1dPUkRTIiAvPgogICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJPUEVOU1NMX0JOX0FTTV9NT05UIiAvPgogICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJSTUQxNjBfQVNNIiAvPgpkaWZmIC0tZ2l0IGEvUENidWlsZC9wY2J1aWxkLnByb2ogYi9QQ2J1aWxkL3BjYnVpbGQucHJvagppbmRleCBjMzIwNDM0Li5jNmI4NDg3IDEwMDY0NAotLS0gYS9QQ2J1aWxkL3BjYnVpbGQucHJvagorKysgYi9QQ2J1aWxkL3BjYnVpbGQucHJvagpAQCAtMjgsNyArMjgsNyBAQAogICAgICAgPEJ1aWxkVGFyZ2V0PkJ1aWxkPC9CdWlsZFRhcmdldD4KICAgICAgIDxDbGVhblRhcmdldD5DbGVhbjwvQ2xlYW5UYXJnZXQ+CiAgICAgICA8Q2xlYW5BbGxUYXJnZXQ+Q2xlYW5BbGw8L0NsZWFuQWxsVGFyZ2V0PgotICAgICAgPEJ1aWxkSW5QYXJhbGxlbD50cnVlPC9CdWlsZEluUGFyYWxsZWw+CisgICAgICA8QnVpbGRJblBhcmFsbGVsPmZhbHNlPC9CdWlsZEluUGFyYWxsZWw+CiAgICAgPC9Qcm9qZWN0czI+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1Hcm91cD4KQEAgLTQ4LDEwICs0OCw4IEBACiAgICAgPFByb2plY3RzIEluY2x1ZGU9InB5bGF1bmNoZXIudmN4cHJvajtweXdsYXVuY2hlci52Y3hwcm9qIiAvPgogICAgIDwhLS0gcHlzaGVsbGV4dC5kbGwgLS0+CiAgICAgPFByb2plY3RzIEluY2x1ZGU9InB5c2hlbGxleHQudmN4cHJvaiIgLz4KLSAgICA8IS0tIF9mcmVlemVfaW1wb3J0bGliIC0tPgotICAgIDxQcm9qZWN0cyBJbmNsdWRlPSJfZnJlZXplX2ltcG9ydGxpYi52Y3hwcm9qIiAvPgogICAgIDwhLS0gRXh0ZW5zaW9uIG1vZHVsZXMgLS0+Ci0gICAgPEV4dGVuc2lvbk1vZHVsZXMgSW5jbHVkZT0iX2N0eXBlcztfZGVjaW1hbDtfZWxlbWVudHRyZWU7X21zaTtfbXVsdGlwcm9jZXNzaW5nO19vdmVybGFwcGVkO3B5ZXhwYXQ7c2VsZWN0O3VuaWNvZGVkYXRhO3dpbnNvdW5kIiAvPgorICAgIDxFeHRlbnNpb25Nb2R1bGVzIEluY2x1ZGU9Il9hc3luY2lvO19jdHlwZXM7X2RlY2ltYWw7X2VsZW1lbnR0cmVlO19tc2k7X211bHRpcHJvY2Vzc2luZztfb3ZlcmxhcHBlZDtweWV4cGF0O3NlbGVjdDt1bmljb2RlZGF0YTt3aW5zb3VuZCIgLz4KICAgICA8IS0tIEV4dGVuc2lvbiBtb2R1bGVzIHRoYXQgcmVxdWlyZSBleHRlcm5hbCBzb3VyY2VzIC0tPgogICAgIDxFeHRlcm5hbE1vZHVsZXMgSW5jbHVkZT0iX2J6MjtfbHptYTtfc3FsaXRlMyIgLz4KICAgICA8IS0tIF9zc2wgd2lsbCBidWlsZCBfc29ja2V0IGFzIHdlbGwsIHdoaWNoIG1heSBjYXVzZSBjb25mbGljdHMgaW4gcGFyYWxsZWwgYnVpbGRzIC0tPgpAQCAtNjEsMTcgKzU5LDE3IEBACiAgICAgPEV4dGVuc2lvbk1vZHVsZXMgSW5jbHVkZT0iQChFeHRlcm5hbE1vZHVsZXMtPiclKElkZW50aXR5KScpIiBDb25kaXRpb249IiQoSW5jbHVkZUV4dGVybmFscykiIC8+CiAgICAgPFByb2plY3RzIEluY2x1ZGU9IkAoRXh0ZW5zaW9uTW9kdWxlcy0+JyUoSWRlbnRpdHkpLnZjeHByb2onKSIgQ29uZGl0aW9uPSIkKEluY2x1ZGVFeHRlbnNpb25zKSIgLz4KICAgICA8IS0tIFRlc3QgbW9kdWxlcyAtLT4KLSAgICA8VGVzdE1vZHVsZXMgSW5jbHVkZT0iX2N0eXBlc190ZXN0O190ZXN0YnVmZmVyO190ZXN0Y2FwaTtfdGVzdGVtYmVkO190ZXN0aW1wb3J0bXVsdGlwbGU7X3Rlc3RtdWx0aXBoYXNlIiAvPgorICAgIDxUZXN0TW9kdWxlcyBJbmNsdWRlPSJfY3R5cGVzX3Rlc3Q7X3Rlc3RidWZmZXI7X3Rlc3RjYXBpO190ZXN0ZW1iZWQ7X3Rlc3RpbXBvcnRtdWx0aXBsZTtfdGVzdG11bHRpcGhhc2U7X3Rlc3Rjb25zb2xlIiAvPgogICAgIDxUZXN0TW9kdWxlcyBJbmNsdWRlPSJ4eGxpbWl0ZWQiIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbiknID09ICdSZWxlYXNlJyIgLz4KICAgICA8UHJvamVjdHMgSW5jbHVkZT0iQChUZXN0TW9kdWxlcy0+JyUoSWRlbnRpdHkpLnZjeHByb2onKSIgQ29uZGl0aW9uPSIkKEluY2x1ZGVUZXN0cykiPgogICAgICAgPCEtLSBEaXNhYmxlIHBhcmFsbGVsIGJ1aWxkIGZvciB0ZXN0IG1vZHVsZXMgLS0+CiAgICAgICA8QnVpbGRJblBhcmFsbGVsPmZhbHNlPC9CdWlsZEluUGFyYWxsZWw+CiAgICAgPC9Qcm9qZWN0cz4KICAgICAKKyAgICA8IS0tIF9mcmVlemVfaW1wb3J0bGliIC0tPgorICAgIDxQcm9qZWN0czIgSW5jbHVkZT0iX2ZyZWV6ZV9pbXBvcnRsaWIudmN4cHJvaiIgLz4KICAgICA8IS0tIHB5dGhvblt3XS5leGUgLS0+Ci0gICAgPFByb2plY3RzMiBJbmNsdWRlPSJweXRob24udmN4cHJvajtweXRob253LnZjeHByb2oiPgotICAgICAgPEJ1aWxkSW5QYXJhbGxlbD5mYWxzZTwvQnVpbGRJblBhcmFsbGVsPgotICAgIDwvUHJvamVjdHMyPgorICAgIDxQcm9qZWN0czIgSW5jbHVkZT0icHl0aG9uLnZjeHByb2o7cHl0aG9udy52Y3hwcm9qIiAvPgogICA8L0l0ZW1Hcm91cD4KIAogICA8VGFyZ2V0IE5hbWU9IkJ1aWxkIj4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcGNidWlsZC5zbG4gYi9QQ2J1aWxkL3BjYnVpbGQuc2xuCmluZGV4IDQyYTRkMmIuLjBlNjU4MTEgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvcGNidWlsZC5zbG4KKysrIGIvUENidWlsZC9wY2J1aWxkLnNsbgpAQCAtOTIsNiArOTIsMTAgQEAKIEVuZFByb2plY3QNCiBQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInB5c2hlbGxleHQiLCAicHlzaGVsbGV4dC52Y3hwcm9qIiwgInswRjZFRTRBNC1DNzVGLTQ1NzgtQjRCMy0yRDY0RjRCOUI3ODJ9Ig0KIEVuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl90ZXN0Y29uc29sZSIsICJfdGVzdGNvbnNvbGUudmN4cHJvaiIsICJ7QjI0NEU3ODctQzQ0NS00NDFDLUJERjQtNUE0RjFBM0ExRTUxfSINCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfYXN5bmNpbyIsICJfYXN5bmNpby52Y3hwcm9qIiwgInszODRDMjI0QS03NDc0LTQ3NkUtQTAxQi03NTBFQTdERTkxOEN9Ig0KK0VuZFByb2plY3QNCiBHbG9iYWwNCiAJR2xvYmFsU2VjdGlvbihTb2x1dGlvbkNvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0gcHJlU29sdXRpb24NCiAJCURlYnVnfFdpbjMyID0gRGVidWd8V2luMzINCkBAIC03MDgsNiArNzEyLDIyIEBACiAJCXswRjZFRTRBNC1DNzVGLTQ1NzgtQjRCMy0yRDY0RjRCOUI3ODJ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCiAJCXswRjZFRTRBNC1DNzVGLTQ1NzgtQjRCMy0yRDY0RjRCOUI3ODJ9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQogCQl7MEY2RUU0QTQtQzc1Ri00NTc4LUI0QjMtMkQ2NEY0QjlCNzgyfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXtCMjQ0RTc4Ny1DNDQ1LTQ0MUMtQkRGNC01QTRGMUEzQTFFNTF9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7QjI0NEU3ODctQzQ0NS00NDFDLUJERjQtNUE0RjFBM0ExRTUxfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXtCMjQ0RTc4Ny1DNDQ1LTQ0MUMtQkRGNC01QTRGMUEzQTFFNTF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXtCMjQ0RTc4Ny1DNDQ1LTQ0MUMtQkRGNC01QTRGMUEzQTFFNTF9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7QjI0NEU3ODctQzQ0NS00NDFDLUJERjQtNUE0RjFBM0ExRTUxfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0IyNDRFNzg3LUM0NDUtNDQxQy1CREY0LTVBNEYxQTNBMUU1MX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7QjI0NEU3ODctQzQ0NS00NDFDLUJERjQtNUE0RjFBM0ExRTUxfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7QjI0NEU3ODctQzQ0NS00NDFDLUJERjQtNUE0RjFBM0ExRTUxfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJe0IyNDRFNzg3LUM0NDUtNDQxQy1CREY0LTVBNEYxQTNBMUU1MX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0IyNDRFNzg3LUM0NDUtNDQxQy1CREY0LTVBNEYxQTNBMUU1MX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtCMjQ0RTc4Ny1DNDQ1LTQ0MUMtQkRGNC01QTRGMUEzQTFFNTF9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0IyNDRFNzg3LUM0NDUtNDQxQy1CREY0LTVBNEYxQTNBMUU1MX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJe0IyNDRFNzg3LUM0NDUtNDQxQy1CREY0LTVBNEYxQTNBMUU1MX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7QjI0NEU3ODctQzQ0NS00NDFDLUJERjQtNUE0RjFBM0ExRTUxfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7QjI0NEU3ODctQzQ0NS00NDFDLUJERjQtNUE0RjFBM0ExRTUxfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0IyNDRFNzg3LUM0NDUtNDQxQy1CREY0LTVBNEYxQTNBMUU1MX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQogCUVuZEdsb2JhbFNlY3Rpb24NCiAJR2xvYmFsU2VjdGlvbihTb2x1dGlvblByb3BlcnRpZXMpID0gcHJlU29sdXRpb24NCiAJCUhpZGVTb2x1dGlvbk5vZGUgPSBGQUxTRQ0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHJlcGFyZV9zc2wuYmF0IGIvUENidWlsZC9wcmVwYXJlX3NzbC5iYXQKaW5kZXggMWJlNzNlNi4uMmY0MWFlOCAxMDA2NDQKLS0tIGEvUENidWlsZC9wcmVwYXJlX3NzbC5iYXQKKysrIGIvUENidWlsZC9wcmVwYXJlX3NzbC5iYXQKQEAgLTMsMTAgKzMsMTAgQEAKICAgaWYgIiUxIiBFUVUgIkRlYnVnIiAoDQogICAgIHNoaWZ0DQogICAgIHNldCBIT1NUX1BZVEhPTj1weXRob25fZC5leGUNCi0gICAgaWYgbm90IGV4aXN0IHB5dGhvbjM1X2QuZGxsIGV4aXQgMQ0KKyAgICBpZiBub3QgZXhpc3QgcHl0aG9uMzZfZC5kbGwgZXhpdCAxDQogICApIEVMU0UgKA0KICAgICBzZXQgSE9TVF9QWVRIT049cHl0aG9uLmV4ZQ0KLSAgICBpZiBub3QgZXhpc3QgcHl0aG9uMzUuZGxsIGV4aXQgMQ0KKyAgICBpZiBub3QgZXhpc3QgcHl0aG9uMzYuZGxsIGV4aXQgMQ0KICAgKQ0KICkNCiAlSE9TVF9QWVRIT04lICIlfmRwMHByZXBhcmVfc3NsLnB5IiAlMQ0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHlwcm9qZWN0LnByb3BzIGIvUENidWlsZC9weXByb2plY3QucHJvcHMKaW5kZXggZDFhYzk5OC4uNzAxMjE3MCAxMDA2NDQKLS0tIGEvUENidWlsZC9weXByb2plY3QucHJvcHMKKysrIGIvUENidWlsZC9weXByb2plY3QucHJvcHMKQEAgLTcsNyArNyw2IEBACiAgICAgPE91dERpciBDb25kaXRpb249IiFIYXNUcmFpbGluZ1NsYXNoKCQoT3V0RGlyKSkiPiQoT3V0RGlyKVw8L091dERpcj4KICAgICA8UHlfSW50RGlyIENvbmRpdGlvbj0iJyQoUHlfSW50RGlyKScgPT0gJyciPiQoTVNCdWlsZFRoaXNGaWxlRGlyZWN0b3J5KW9ialw8L1B5X0ludERpcj4KICAgICA8SW50RGlyPiQoUHlfSW50RGlyKVwkKEFyY2hOYW1lKV8kKENvbmZpZ3VyYXRpb24pXCQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgotICAgIDxJbnREaXIgQ29uZGl0aW9uPSIkKENvbmZpZ3VyYXRpb24pID09ICdQR0luc3RydW1lbnQnIG9yICQoQ29uZmlndXJhdGlvbikgPT0gJ1BHVXBkYXRlJyI+JChQeV9JbnREaXIpXCQoQXJjaE5hbWUpX1BHT1wkKFByb2plY3ROYW1lKVw8L0ludERpcj4KICAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKFRhcmdldE5hbWUpJyA9PSAnJyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CiAgICAgPFRhcmdldE5hbWU+JChUYXJnZXROYW1lKSQoUHlEZWJ1Z0V4dCk8L1RhcmdldE5hbWU+CiAgICAgPEdlbmVyYXRlTWFuaWZlc3Q+ZmFsc2U8L0dlbmVyYXRlTWFuaWZlc3Q+CkBAIC0xNDgsMTEgKzE0NywxMyBAQAogICAgICAgICAgICAgIFRhcmdldHM9IkNsZWFuQWxsIiAvPgogICA8L1RhcmdldD4KIAotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKFNpZ25pbmdDZXJ0aWZpY2F0ZSknICE9ICcnIGFuZCAkKFN1cHBvcnRTaWduaW5nKSI+Ci0gICAgPFNpZ25Ub29sUGF0aCBDb25kaXRpb249IickKFNpZ25Ub29sUGF0aCknID09ICcnIG9yICFFeGlzdHMoJChTaWduVG9vbFBhdGgpKSI+JChyZWdpc3RyeTpIS0VZX0xPQ0FMX01BQ0hJTkVcU29mdHdhcmVcTWljcm9zb2Z0XFdpbmRvd3MgS2l0c1xJbnN0YWxsZWQgUm9vdHNAS2l0c1Jvb3Q4MSlcYmluXHg4NlxzaWdudG9vbC5leGU8L1NpZ25Ub29sUGF0aD4KLSAgICA8U2lnblRvb2xQYXRoIENvbmRpdGlvbj0iIUV4aXN0cygkKFNpZ25Ub29sUGF0aCkpIj4kKHJlZ2lzdHJ5OkhLRVlfTE9DQUxfTUFDSElORVxTb2Z0d2FyZVxNaWNyb3NvZnRcV2luZG93cyBLaXRzXEluc3RhbGxlZCBSb290c0BLaXRzUm9vdClcYmluXHg4NlxzaWdudG9vbC5leGU8L1NpZ25Ub29sUGF0aD4KLSAgICA8U2lnblRvb2xQYXRoIENvbmRpdGlvbj0iIUV4aXN0cygkKFNpZ25Ub29sUGF0aCkpIj4kKHJlZ2lzdHJ5OkhLRVlfTE9DQUxfTUFDSElORVxTT0ZUV0FSRVxNaWNyb3NvZnRcTWljcm9zb2Z0IFNES3NcV2luZG93c1x2Ny4xQUBJbnN0YWxsYXRpb25Gb2xkZXIpXEJpblxzaWdudG9vbC5leGU8L1NpZ25Ub29sUGF0aD4KLSAgICA8X1NpZ25Db21tYW5kIENvbmRpdGlvbj0iRXhpc3RzKCQoU2lnblRvb2xQYXRoKSkiPiIkKFNpZ25Ub29sUGF0aCkiIHNpZ24gL3EgL24gIiQoU2lnbmluZ0NlcnRpZmljYXRlKSIgL2ZkIHNoYTI1NiAvdCBodHRwOi8vdGltZXN0YW1wLnZlcmlzaWduLmNvbS9zY3JpcHRzL3RpbWVzdGFtcC5kbGwgL2QgIlB5dGhvbiAkKFB5dGhvblZlcnNpb24pIjwvX1NpZ25Db21tYW5kPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8U2RrQmluUGF0aCBDb25kaXRpb249IickKFNka0JpblBhdGgpJyA9PSAnJyBvciAhRXhpc3RzKCQoU2RrQmluUGF0aCkpIj4kKHJlZ2lzdHJ5OkhLRVlfTE9DQUxfTUFDSElORVxTb2Z0d2FyZVxNaWNyb3NvZnRcV2luZG93cyBLaXRzXEluc3RhbGxlZCBSb290c0BLaXRzUm9vdDEwKVxiaW5ceDg2PC9TZGtCaW5QYXRoPgorICAgIDxTZGtCaW5QYXRoIENvbmRpdGlvbj0iIUV4aXN0cygkKFNka0JpblBhdGgpKSI+JChyZWdpc3RyeTpIS0VZX0xPQ0FMX01BQ0hJTkVcU29mdHdhcmVcTWljcm9zb2Z0XFdpbmRvd3MgS2l0c1xJbnN0YWxsZWQgUm9vdHNAS2l0c1Jvb3Q4MSlcYmluXHg4NjwvU2RrQmluUGF0aD4KKyAgICA8U2RrQmluUGF0aCBDb25kaXRpb249IiFFeGlzdHMoJChTZGtCaW5QYXRoKSkiPiQocmVnaXN0cnk6SEtFWV9MT0NBTF9NQUNISU5FXFNvZnR3YXJlXE1pY3Jvc29mdFxXaW5kb3dzIEtpdHNcSW5zdGFsbGVkIFJvb3RzQEtpdHNSb290KVxiaW5ceDg2PC9TZGtCaW5QYXRoPgorICAgIDxTZGtCaW5QYXRoIENvbmRpdGlvbj0iIUV4aXN0cygkKFNka0JpblBhdGgpKSI+JChyZWdpc3RyeTpIS0VZX0xPQ0FMX01BQ0hJTkVcU09GVFdBUkVcTWljcm9zb2Z0XE1pY3Jvc29mdCBTREtzXFdpbmRvd3NcdjcuMUFASW5zdGFsbGF0aW9uRm9sZGVyKVxCaW5cPC9TZGtCaW5QYXRoPgorICAgIDxfU2lnbkNvbW1hbmQgQ29uZGl0aW9uPSJFeGlzdHMoJChTZGtCaW5QYXRoKSkgYW5kICckKFNpZ25pbmdDZXJ0aWZpY2F0ZSknICE9ICcnIGFuZCAkKFN1cHBvcnRTaWduaW5nKSI+IiQoU2RrQmluUGF0aClcc2lnbnRvb2wuZXhlIiBzaWduIC9xIC9uICIkKFNpZ25pbmdDZXJ0aWZpY2F0ZSkiIC9mZCBzaGEyNTYgL3QgaHR0cDovL3RpbWVzdGFtcC52ZXJpc2lnbi5jb20vc2NyaXB0cy90aW1lc3RhbXAuZGxsIC9kICJQeXRob24gJChQeXRob25WZXJzaW9uKSI8L19TaWduQ29tbWFuZD4KKyAgICA8X01ha2VDYXRDb21tYW5kIENvbmRpdGlvbj0iRXhpc3RzKCQoU2RrQmluUGF0aCkpIj4iJChTZGtCaW5QYXRoKVxtYWtlY2F0LmV4ZSI8L19NYWtlQ2F0Q29tbWFuZD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICAKICAgPFRhcmdldCBOYW1lPSJfU2lnbkJ1aWxkIiBBZnRlclRhcmdldHM9IkFmdGVyQnVpbGQiIENvbmRpdGlvbj0iJyQoU2lnbmluZ0NlcnRpZmljYXRlKScgIT0gJycgYW5kICQoU3VwcG9ydFNpZ25pbmcpIj4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHl0aG9uLnByb3BzIGIvUENidWlsZC9weXRob24ucHJvcHMKaW5kZXggMTU1MzczMS4uZGRlOTRmNyAxMDA2NDQKLS0tIGEvUENidWlsZC9weXRob24ucHJvcHMKKysrIGIvUENidWlsZC9weXRob24ucHJvcHMKQEAgLTI1LDcgKzI1LDYgQEAKICAgICAtLT4KICAgICA8QXJjaE5hbWUgQ29uZGl0aW9uPSInJChBcmNoTmFtZSknID09ICcnIGFuZCAkKFBsYXRmb3JtKSA9PSAneDY0JyI+YW1kNjQ8L0FyY2hOYW1lPgogICAgIDxBcmNoTmFtZSBDb25kaXRpb249IickKEFyY2hOYW1lKScgPT0gJyciPndpbjMyPC9BcmNoTmFtZT4KLSAgICA8QXJjaE5hbWUgQ29uZGl0aW9uPSIkKENvbmZpZ3VyYXRpb24pID09ICdQR0luc3RydW1lbnQnIG9yICQoQ29uZmlndXJhdGlvbikgPT0gJ1BHVXBkYXRlJyI+JChBcmNoTmFtZSktcGdvPC9BcmNoTmFtZT4KICAgICAKICAgICA8IS0tIFJvb3QgZGlyZWN0b3J5IG9mIHRoZSByZXBvc2l0b3J5IC0tPgogICAgIDxQeVNvdXJjZVBhdGggQ29uZGl0aW9uPSInJChQeVNvdXJjZVBhdGgpJyA9PSAnJyI+JChbU3lzdGVtLklPLlBhdGhdOjpHZXRGdWxsUGF0aCgkKE1TQnVpbGRUaGlzRmlsZURpcmVjdG9yeSlcLi5cKSk8L1B5U291cmNlUGF0aD4KQEAgLTQzLDkgKzQyLDkgQEAKICAgICAKICAgICA8IS0tIERpcmVjdG9yaWVzIG9mIGV4dGVybmFsIHByb2plY3RzLiB0Y2x0ayBpcyBoYW5kbGVkIGluIHRjbHRrLnByb3BzIC0tPgogICAgIDxFeHRlcm5hbHNEaXI+JChbU3lzdGVtLklPLlBhdGhdOjpHZXRGdWxsUGF0aChgJChQeVNvdXJjZVBhdGgpZXh0ZXJuYWxzXGApKTwvRXh0ZXJuYWxzRGlyPgotICAgIDxzcWxpdGUzRGlyPiQoRXh0ZXJuYWxzRGlyKXNxbGl0ZS0zLjguMTEuMFw8L3NxbGl0ZTNEaXI+CisgICAgPHNxbGl0ZTNEaXI+JChFeHRlcm5hbHNEaXIpc3FsaXRlLTMuMTQuMi4wXDwvc3FsaXRlM0Rpcj4KICAgICA8YnoyRGlyPiQoRXh0ZXJuYWxzRGlyKWJ6aXAyLTEuMC42XDwvYnoyRGlyPgotICAgIDxsem1hRGlyPiQoRXh0ZXJuYWxzRGlyKXh6LTUuMC41XDwvbHptYURpcj4KKyAgICA8bHptYURpcj4kKEV4dGVybmFsc0Rpcil4ei01LjIuMlw8L2x6bWFEaXI+CiAgICAgPG9wZW5zc2xEaXI+JChFeHRlcm5hbHNEaXIpb3BlbnNzbC0xLjAuMmpcPC9vcGVuc3NsRGlyPgogICAgIDxvcGVuc3NsSW5jbHVkZURpcj4kKG9wZW5zc2xEaXIpaW5jbHVkZTMyPC9vcGVuc3NsSW5jbHVkZURpcj4KICAgICA8b3BlbnNzbEluY2x1ZGVEaXIgQ29uZGl0aW9uPSInJChBcmNoTmFtZSknID09ICdhbWQ2NCciPiQob3BlbnNzbERpcilpbmNsdWRlNjQ8L29wZW5zc2xJbmNsdWRlRGlyPgpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXRob25jb3JlLnZjeHByb2ogYi9QQ2J1aWxkL3B5dGhvbmNvcmUudmN4cHJvagppbmRleCA5NzAzNDRmLi42YjIzZDhlIDEwMDY0NAotLS0gYS9QQ2J1aWxkL3B5dGhvbmNvcmUudmN4cHJvagorKysgYi9QQ2J1aWxkL3B5dGhvbmNvcmUudmN4cHJvagpAQCAtMSw0ICsxLDQgQEAKLe+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgogPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CiAgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CiAgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KQEAgLTY5LDcgKzY5LDcgQEAKICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fVVNSRExMO1B5X0JVSUxEX0NPUkU7UHlfRU5BQkxFX1NIQVJFRDtNU19ETExfSUQ9IiQoU3lzV2luVmVyKSI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+dmVyc2lvbi5saWI7d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+dmVyc2lvbi5saWI7c2hsd2FwaS5saWI7d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgICAgPEJhc2VBZGRyZXNzPjB4MWUwMDAwMDA8L0Jhc2VBZGRyZXNzPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgpAQCAtMTI0LDYgKzEyNCw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXG9kaWN0b2JqZWN0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXG9wY29kZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxvc2RlZnMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcb3Ntb2R1bGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccGFyc2V0b2suaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccGF0Y2hsZXZlbC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxwZ2VuLmgiIC8+CkBAIC0yMDksOSArMjEwLDEzIEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxQeXRob25cY29uZHZhci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cUHl0aG9uXGltcG9ydGRsLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxQeXRob25cdGhyZWFkX250LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxQeXRob25cd29yZGNvZGVfaGVscGVycy5oIiAvPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2Jpc2VjdG1vZHVsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfYmxha2UyXGJsYWtlMm1vZHVsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfYmxha2UyXGJsYWtlMmJfaW1wbC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfYmxha2UyXGJsYWtlMnNfaW1wbC5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY29kZWNzbW9kdWxlLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jb2xsZWN0aW9uc21vZHVsZS5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3N2LmMiIC8+CkBAIC0yMjMsNiArMjI4LDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX21hdGguYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3BpY2tsZS5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfcmFuZG9tbW9kdWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zaGEzXHNoYTNtb2R1bGUuYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NyZS5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3RhdC5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3RydWN0LmMiIC8+CkBAIC0yNjQsNiArMjcwLDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2lvXGJ1ZmZlcmVkaW8uYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2lvXGlvYmFzZS5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfaW9cdGV4dGlvLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9pb1x3aW5jb25zb2xlaW8uYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2lvXF9pb21vZHVsZS5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGFkbGVyMzIuYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxjb21wcmVzcy5jIiAvPgpAQCAtNDE0LDYgKzQyMSw3IEBACiAgICAgICA8SGdWZXJzaW9uIENvbmRpdGlvbj0iRXhpc3RzKCckKEludERpciloZ3ZlcnNpb24udHh0JykiPiQoW1N5c3RlbS5JTy5GaWxlXTo6UmVhZEFsbFRleHQoJyQoSW50RGlyKWhndmVyc2lvbi50eHQnKS5UcmltKCkpPC9IZ1ZlcnNpb24+CiAgICAgICA8SGdUYWcgQ29uZGl0aW9uPSJFeGlzdHMoJyQoSW50RGlyKWhndGFnLnR4dCcpIj4kKFtTeXN0ZW0uSU8uRmlsZV06OlJlYWRBbGxUZXh0KCckKEludERpciloZ3RhZy50eHQnKS5UcmltKCkpPC9IZ1RhZz4KICAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgPE1lc3NhZ2UgVGV4dD0iQnVpbGRpbmcgJChIZ1RhZyk6JChIZ1ZlcnNpb24pICQoSGdCcmFuY2gpIiBJbXBvcnRhbmNlPSJoaWdoIiAvPgogICAgIDxJdGVtR3JvdXA+CiAgICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZ2V0YnVpbGRpbmZvLmMiPgogICAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+SEdWRVJTSU9OPSIkKEhnVmVyc2lvbikiO0hHVEFHPSIkKEhnVGFnKSI7SEdCUkFOQ0g9IiQoSGdCcmFuY2gpIjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CkBAIC00MjMsNCArNDMxLDQgQEAKICAgPFRhcmdldCBOYW1lPSJfV2FybkFib3V0VG9vbHNldCIgQmVmb3JlVGFyZ2V0cz0iUHJlcGFyZUZvckJ1aWxkIiBDb25kaXRpb249IiQoUGxhdGZvcm1Ub29sc2V0KSAhPSAndjE0MCciPgogICAgIDxXYXJuaW5nIFRleHQ9IlRvb2xzZXQgJChQbGF0Zm9ybVRvb2xzZXQpIGlzIG5vdCB1c2VkIGZvciBvZmZpY2lhbCBidWlsZHMuIFlvdXIgYnVpbGQgbWF5IGhhdmUgZXJyb3JzIG9yIGluY29tcGF0aWJpbGl0aWVzLiIgLz4KICAgPC9UYXJnZXQ+Ci08L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXRob25jb3JlLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvcHl0aG9uY29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggODM3YjczNi4uNzYyMjEwZCAxMDA2NDQKLS0tIGEvUENidWlsZC9weXRob25jb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9QQ2J1aWxkL3B5dGhvbmNvcmUudmN4cHJvai5maWx0ZXJzCkBAIC0xLDQgKzEsNCBAQAot77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+CiA8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CiAgIDxJdGVtR3JvdXA+CiAgICAgPEZpbHRlciBJbmNsdWRlPSJJbmNsdWRlIj4KQEAgLTE3Nyw2ICsxNzcsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxvc2RlZnMuaCI+CiAgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcb3Ntb2R1bGUuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccGFyc2V0b2suaCI+CiAgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTQyMCw2ICs0MjMsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cUHl0aG9uXHRocmVhZF9udC5oIj4KICAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxQeXRob25cd29yZGNvZGVfaGVscGVycy5oIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxQeXRob25cY29uZHZhci5oIj4KICAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC00NDAsOSArNDQ2LDIxIEBACiAgICAgPC9DbEluY2x1ZGU+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfYXN5bmNpb21vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfYmlzZWN0bW9kdWxlLmMiPgogICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9ibGFrZTJcYmxha2UybW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9ibGFrZTJcYmxha2UyYl9pbXBsLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9ibGFrZTJcYmxha2Uyc19pbXBsLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jb2RlY3Ntb2R1bGUuYyI+CiAgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTQ3Niw2ICs0OTQsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfcmFuZG9tbW9kdWxlLmMiPgogICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zaGEzXHNoYTNtb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NyZS5jIj4KICAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtNTg3LDYgKzYwOCw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9pb1x0ZXh0aW8uYyI+CiAgICAgICA8RmlsdGVyPk1vZHVsZXNcX2lvPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9pb1x3aW5jb25zb2xlaW8uYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcX2lvPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9pb1xfaW9tb2R1bGUuYyI+CiAgICAgICA8RmlsdGVyPk1vZHVsZXNcX2lvPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC05ODAsNCArMTAwNCw0IEBACiAgICAgICA8RmlsdGVyPlJlc291cmNlIEZpbGVzPC9GaWx0ZXI+CiAgICAgPC9SZXNvdXJjZUNvbXBpbGU+CiAgIDwvSXRlbUdyb3VwPgotPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHl0aG9udy52Y3hwcm9qIGIvUENidWlsZC9weXRob253LnZjeHByb2oKaW5kZXggY2FlZDFlOC4uZTQwZjY2YyAxMDA2NDQKLS0tIGEvUENidWlsZC9weXRob253LnZjeHByb2oKKysrIGIvUENidWlsZC9weXRob253LnZjeHByb2oKQEAgLTYyLDcgKzYyLDcgQEAKICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1Hcm91cD4KLSAgICA8UmVzb3VyY2VDb21waWxlIEluY2x1ZGU9Ii4uXFBDXHB5dGhvbl9leGUucmMiIC8+CisgICAgPFJlc291cmNlQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xweXRob253X2V4ZS5yYyIgLz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xXaW5NYWluLmMiIC8+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL3JlYWRtZS50eHQgYi9QQ2J1aWxkL3JlYWRtZS50eHQKaW5kZXggMjQ2MjAxMi4uYzA0YmE0ZSAxMDA2NDQKLS0tIGEvUENidWlsZC9yZWFkbWUudHh0CisrKyBiL1BDYnVpbGQvcmVhZG1lLnR4dApAQCAtNDgsNyArNDgsNyBAQAogICAgIFVzZWQgdG8gYnVpbGQgUHl0aG9uIHdpdGggZXh0cmEgZGVidWdnaW5nIGNhcGFiaWxpdGllcywgZXF1aXZhbGVudA0KICAgICB0byB1c2luZyAuL2NvbmZpZ3VyZSAtLXdpdGgtcHlkZWJ1ZyBvbiBVTklYLiAgQWxsIGJpbmFyaWVzIGJ1aWx0DQogICAgIHVzaW5nIHRoaXMgY29uZmlndXJhdGlvbiBoYXZlICJfZCIgYWRkZWQgdG8gdGhlaXIgbmFtZToNCi0gICAgcHl0aG9uMzVfZC5kbGwsIHB5dGhvbl9kLmV4ZSwgcGFyc2VyX2QucHlkLCBhbmQgc28gb24uICBCb3RoIHRoZQ0KKyAgICBweXRob24zNl9kLmRsbCwgcHl0aG9uX2QuZXhlLCBwYXJzZXJfZC5weWQsIGFuZCBzbyBvbi4gIEJvdGggdGhlDQogICAgIGJ1aWxkIGFuZCBydCAocnVuIHRlc3QpIGJhdGNoIGZpbGVzIGluIHRoaXMgZGlyZWN0b3J5IGFjY2VwdCBhIC1kDQogICAgIG9wdGlvbiBmb3IgZGVidWcgYnVpbGRzLiAgSWYgeW91IGFyZSBidWlsZGluZyBQeXRob24gdG8gaGVscCB3aXRoDQogICAgIGRldmVsb3BtZW50IG9mIENQeXRob24sIHlvdSB3aWxsIG1vc3QgbGlrZWx5IHVzZSB0aGlzIGNvbmZpZ3VyYXRpb24uDQpAQCAtMjA0LDExICsyMDQsMTEgQEAKICAgICBmdW5jdGlvbmFsaXR5IHRvIF9zc2wgb3IgX2hhc2hsaWIuIFRoZXkgd2lsbCBub3QgY2xlYW4gdXAgdGhlaXIgb3V0cHV0DQogICAgIHdpdGggdGhlIG5vcm1hbCBDbGVhbiB0YXJnZXQ7IENsZWFuQWxsIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuDQogX3NxbGl0ZTMNCi0gICAgV3JhcHMgU1FMaXRlIDMuOC4xMS4wLCB3aGljaCBpcyBpdHNlbGYgYnVpbHQgYnkgc3FsaXRlMy52Y3hwcm9qDQorICAgIFdyYXBzIFNRTGl0ZSAzLjE0LjIuMCwgd2hpY2ggaXMgaXRzZWxmIGJ1aWx0IGJ5IHNxbGl0ZTMudmN4cHJvag0KICAgICBIb21lcGFnZToNCiAgICAgICAgIGh0dHA6Ly93d3cuc3FsaXRlLm9yZy8NCiBfdGtpbnRlcg0KLSAgICBXcmFwcyB2ZXJzaW9uIDguNi40IG9mIHRoZSBUayB3aW5kb3dpbmcgc3lzdGVtLg0KKyAgICBXcmFwcyB2ZXJzaW9uIDguNi42IG9mIHRoZSBUayB3aW5kb3dpbmcgc3lzdGVtLg0KICAgICBIb21lcGFnZToNCiAgICAgICAgIGh0dHA6Ly93d3cudGNsLnRrLw0KIA0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcnQuYmF0IGIvUENidWlsZC9ydC5iYXQKaW5kZXggMmQ5M2I4MC4uMzU4MjY3MiAxMDA2NDQKLS0tIGEvUENidWlsZC9ydC5iYXQKKysrIGIvUENidWlsZC9ydC5iYXQKQEAgLTQyLDEyICs0MiwxNSBAQAogaWYgTk9UICIlMSI9PSIiIChzZXQgcmVncnRlc3RhcmdzPSVyZWdydGVzdGFyZ3MlICUxKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCiANCiBzZXQgZXhlPSVwcmVmaXglcHl0aG9uJXN1ZmZpeCUuZXhlDQotc2V0IGNtZD0iJWV4ZSUiICVkYXNoTyUgLVdkIC1FIC1iYiAiJXBjYnVpbGQlLi5cbGliXHRlc3RccmVncnRlc3QucHkiICVyZWdydGVzdGFyZ3MlDQorc2V0IGNtZD0iJWV4ZSUiICVkYXNoTyUgLVdkIC1FIC1iYiAtbSB0ZXN0ICVyZWdydGVzdGFyZ3MlDQogaWYgZGVmaW5lZCBxbW9kZSBnb3RvIFFtb2RlDQogDQogZWNobyBEZWxldGluZyAucHljLy5weW8gZmlsZXMgLi4uDQogIiVleGUlIiAiJXBjYnVpbGQlcm1weWMucHkiDQogDQorZWNobyBDbGVhbmluZyBfcHRoIGZpbGVzIC4uLg0KK2lmIGV4aXN0ICVwcmVmaXglKi5fcHRoIGRlbCAlcHJlZml4JSouX3B0aCANCisNCiBlY2hvIG9uDQogJWNtZCUNCiBAZWNobyBvZmYNCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3NxbGl0ZTMudmN4cHJvaiBiL1BDYnVpbGQvc3FsaXRlMy52Y3hwcm9qCmluZGV4IGM4NDFjNWEuLjRmNWIxOTYgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvc3FsaXRlMy52Y3hwcm9qCisrKyBiL1BDYnVpbGQvc3FsaXRlMy52Y3hwcm9qCkBAIC02Niw3ICs2Niw3IEBACiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxDbENvbXBpbGU+CiAgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKHNxbGl0ZTNEaXIpOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+U1FMSVRFX0FQST1fX2RlY2xzcGVjKGRsbGV4cG9ydCk7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlNRTElURV9FTkFCTEVfRlRTNDtTUUxJVEVfRU5BQkxFX0ZUUzU7U1FMSVRFX0FQST1fX2RlY2xzcGVjKGRsbGV4cG9ydCk7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDE8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtODYsNCArODYsNCBAQAogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgogICA8L0ltcG9ydEdyb3VwPgotPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvdGNsdGsucHJvcHMgYi9QQ2J1aWxkL3RjbHRrLnByb3BzCmluZGV4IDExZGJmZmIuLjU3YmI5OGEgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvdGNsdGsucHJvcHMKKysrIGIvUENidWlsZC90Y2x0ay5wcm9wcwpAQCAtNCw4ICs0LDggQEAKICAgPFByb3BlcnR5R3JvdXA+CiAgICAgPFRjbE1ham9yVmVyc2lvbj44PC9UY2xNYWpvclZlcnNpb24+CiAgICAgPFRjbE1pbm9yVmVyc2lvbj42PC9UY2xNaW5vclZlcnNpb24+Ci0gICAgPFRjbFBhdGNoTGV2ZWw+NDwvVGNsUGF0Y2hMZXZlbD4KLSAgICA8VGNsUmV2aXNpb24+MjwvVGNsUmV2aXNpb24+CisgICAgPFRjbFBhdGNoTGV2ZWw+NjwvVGNsUGF0Y2hMZXZlbD4KKyAgICA8VGNsUmV2aXNpb24+MDwvVGNsUmV2aXNpb24+CiAgICAgPFRrTWFqb3JWZXJzaW9uPiQoVGNsTWFqb3JWZXJzaW9uKTwvVGtNYWpvclZlcnNpb24+CiAgICAgPFRrTWlub3JWZXJzaW9uPiQoVGNsTWlub3JWZXJzaW9uKTwvVGtNaW5vclZlcnNpb24+CiAgICAgPFRrUGF0Y2hMZXZlbD4kKFRjbFBhdGNoTGV2ZWwpPC9Ua1BhdGNoTGV2ZWw+CkBAIC00Miw0ICs0Miw0IEBACiAgICAgPEJ1aWxkRGlyVG9wIENvbmRpdGlvbj0iJChQbGF0Zm9ybVRvb2xzZXQpID09ICd2MTEwJyI+JChCdWlsZERpclRvcClfVkMxMTwvQnVpbGREaXJUb3A+CiAgICAgPEJ1aWxkRGlyVG9wIENvbmRpdGlvbj0iJChQbGF0Zm9ybVRvb2xzZXQpID09ICd2MTAwJyI+JChCdWlsZERpclRvcClfVkMxMDwvQnVpbGREaXJUb3A+CiAgIDwvUHJvcGVydHlHcm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL3h4bGltaXRlZC52Y3hwcm9qIGIvUENidWlsZC94eGxpbWl0ZWQudmN4cHJvagppbmRleCAwMTQ0ZmE5Li45ZGJkYzc3IDEwMDY0NAotLS0gYS9QQ2J1aWxkL3h4bGltaXRlZC52Y3hwcm9qCisrKyBiL1BDYnVpbGQveHhsaW1pdGVkLnZjeHByb2oKQEAgLTYyLDcgKzYyLDcgQEAKICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cD4KICAgICA8Q2xDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPiUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpO1B5X0xJTUlURURfQVBJPTB4MDMwNTAwMDA8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPiUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpO1B5X0xJTUlURURfQVBJPTB4MDMwNjAwMDA8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxMaW5rPgogICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3NvY2szMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KZGlmZiAtLWdpdCBhL1BhcnNlci9QeXRob24uYXNkbCBiL1BhcnNlci9QeXRob24uYXNkbAppbmRleCBjZDA4MzJkLi5mNDcwYWQxIDEwMDY0NAotLS0gYS9QYXJzZXIvUHl0aG9uLmFzZGwKKysrIGIvUGFyc2VyL1B5dGhvbi5hc2RsCkBAIC0xLDQgKzEsOCBAQAotLS0gQVNETCdzIHNpeCBidWlsdGluIHR5cGVzIGFyZSBpZGVudGlmaWVyLCBpbnQsIHN0cmluZywgYnl0ZXMsIG9iamVjdCwgc2luZ2xldG9uCistLSBBU0RMJ3MgNyBidWlsdGluIHR5cGVzIGFyZToKKy0tIGlkZW50aWZpZXIsIGludCwgc3RyaW5nLCBieXRlcywgb2JqZWN0LCBzaW5nbGV0b24sIGNvbnN0YW50CistLQorLS0gc2luZ2xldG9uOiBOb25lLCBUcnVlIG9yIEZhbHNlCistLSBjb25zdGFudCBjYW4gYmUgTm9uZSwgd2hlcmVhcyBOb25lIG1lYW5zICJubyB2YWx1ZSIgZm9yIG9iamVjdC4KIAogbW9kdWxlIFB5dGhvbgogewpAQCAtMjQsNiArMjgsOCBAQAogICAgICAgICAgIHwgRGVsZXRlKGV4cHIqIHRhcmdldHMpCiAgICAgICAgICAgfCBBc3NpZ24oZXhwciogdGFyZ2V0cywgZXhwciB2YWx1ZSkKICAgICAgICAgICB8IEF1Z0Fzc2lnbihleHByIHRhcmdldCwgb3BlcmF0b3Igb3AsIGV4cHIgdmFsdWUpCisgICAgICAgICAgLS0gJ3NpbXBsZScgaW5kaWNhdGVzIHRoYXQgd2UgYW5ub3RhdGUgc2ltcGxlIG5hbWUgd2l0aG91dCBwYXJlbnMKKyAgICAgICAgICB8IEFubkFzc2lnbihleHByIHRhcmdldCwgZXhwciBhbm5vdGF0aW9uLCBleHByPyB2YWx1ZSwgaW50IHNpbXBsZSkKIAogICAgICAgICAgIC0tIHVzZSAnb3JlbHNlJyBiZWNhdXNlIGVsc2UgaXMgYSBrZXl3b3JkIGluIHRhcmdldCBsYW5ndWFnZXMKICAgICAgICAgICB8IEZvcihleHByIHRhcmdldCwgZXhwciBpdGVyLCBzdG10KiBib2R5LCBzdG10KiBvcmVsc2UpCkBAIC03MSw5ICs3NywxMiBAQAogICAgICAgICAgfCBDYWxsKGV4cHIgZnVuYywgZXhwciogYXJncywga2V5d29yZCoga2V5d29yZHMpCiAgICAgICAgICB8IE51bShvYmplY3QgbikgLS0gYSBudW1iZXIgYXMgYSBQeU9iamVjdC4KICAgICAgICAgIHwgU3RyKHN0cmluZyBzKSAtLSBuZWVkIHRvIHNwZWNpZnkgcmF3LCB1bmljb2RlLCBldGM/CisgICAgICAgICB8IEZvcm1hdHRlZFZhbHVlKGV4cHIgdmFsdWUsIGludD8gY29udmVyc2lvbiwgZXhwcj8gZm9ybWF0X3NwZWMpCisgICAgICAgICB8IEpvaW5lZFN0cihleHByKiB2YWx1ZXMpCiAgICAgICAgICB8IEJ5dGVzKGJ5dGVzIHMpCiAgICAgICAgICB8IE5hbWVDb25zdGFudChzaW5nbGV0b24gdmFsdWUpCiAgICAgICAgICB8IEVsbGlwc2lzCisgICAgICAgICB8IENvbnN0YW50KGNvbnN0YW50IHZhbHVlKQogCiAgICAgICAgICAtLSB0aGUgZm9sbG93aW5nIGV4cHJlc3Npb24gY2FuIGFwcGVhciBpbiBhc3NpZ25tZW50IGNvbnRleHQKICAgICAgICAgIHwgQXR0cmlidXRlKGV4cHIgdmFsdWUsIGlkZW50aWZpZXIgYXR0ciwgZXhwcl9jb250ZXh0IGN0eCkKQEAgLTEwMSw3ICsxMTAsNyBAQAogCiAgICAgY21wb3AgPSBFcSB8IE5vdEVxIHwgTHQgfCBMdEUgfCBHdCB8IEd0RSB8IElzIHwgSXNOb3QgfCBJbiB8IE5vdEluCiAKLSAgICBjb21wcmVoZW5zaW9uID0gKGV4cHIgdGFyZ2V0LCBleHByIGl0ZXIsIGV4cHIqIGlmcykKKyAgICBjb21wcmVoZW5zaW9uID0gKGV4cHIgdGFyZ2V0LCBleHByIGl0ZXIsIGV4cHIqIGlmcywgaW50IGlzX2FzeW5jKQogCiAgICAgZXhjZXB0aGFuZGxlciA9IEV4Y2VwdEhhbmRsZXIoZXhwcj8gdHlwZSwgaWRlbnRpZmllcj8gbmFtZSwgc3RtdCogYm9keSkKICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlcyAoaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQpCmRpZmYgLS1naXQgYS9QYXJzZXIvYXNkbC5weSBiL1BhcnNlci9hc2RsLnB5CmluZGV4IDEyMWNkYWIuLjYyZjVjMTkgMTAwNjQ0Ci0tLSBhL1BhcnNlci9hc2RsLnB5CisrKyBiL1BhcnNlci9hc2RsLnB5CkBAIC0zMyw3ICszMyw4IEBACiAjIFNlZSB0aGUgRUJORiBhdCB0aGUgdG9wIG9mIHRoZSBmaWxlIHRvIHVuZGVyc3RhbmQgdGhlIGxvZ2ljYWwgY29ubmVjdGlvbgogIyBiZXR3ZWVuIHRoZSB2YXJpb3VzIG5vZGUgdHlwZXMuCiAKLWJ1aWx0aW5fdHlwZXMgPSB7J2lkZW50aWZpZXInLCAnc3RyaW5nJywgJ2J5dGVzJywgJ2ludCcsICdvYmplY3QnLCAnc2luZ2xldG9uJ30KK2J1aWx0aW5fdHlwZXMgPSB7J2lkZW50aWZpZXInLCAnc3RyaW5nJywgJ2J5dGVzJywgJ2ludCcsICdvYmplY3QnLCAnc2luZ2xldG9uJywKKyAgICAgICAgICAgICAgICAgJ2NvbnN0YW50J30KIAogY2xhc3MgQVNUOgogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKZGlmZiAtLWdpdCBhL1BhcnNlci9hc2RsX2MucHkgYi9QYXJzZXIvYXNkbF9jLnB5Cm9sZCBtb2RlIDEwMDc1NQpuZXcgbW9kZSAxMDA2NDQKaW5kZXggYWM5ZDJiNi4uNzI1ZDczYgotLS0gYS9QYXJzZXIvYXNkbF9jLnB5CisrKyBiL1BhcnNlci9hc2RsX2MucHkKQEAgLTg0MSw2ICs4NDEsNyBAQAogICAgIHJldHVybiAoUHlPYmplY3QqKW87CiB9CiAjZGVmaW5lIGFzdDJvYmpfc2luZ2xldG9uIGFzdDJvYmpfb2JqZWN0CisjZGVmaW5lIGFzdDJvYmpfY29uc3RhbnQgYXN0Mm9ial9vYmplY3QKICNkZWZpbmUgYXN0Mm9ial9pZGVudGlmaWVyIGFzdDJvYmpfb2JqZWN0CiAjZGVmaW5lIGFzdDJvYmpfc3RyaW5nIGFzdDJvYmpfb2JqZWN0CiAjZGVmaW5lIGFzdDJvYmpfYnl0ZXMgYXN0Mm9ial9vYmplY3QKQEAgLTg3OCw2ICs4NzksMTkgQEAKICAgICByZXR1cm4gMDsKIH0KIAorc3RhdGljIGludCBvYmoyYXN0X2NvbnN0YW50KFB5T2JqZWN0KiBvYmosIFB5T2JqZWN0Kiogb3V0LCBQeUFyZW5hKiBhcmVuYSkKK3sKKyAgICBpZiAob2JqKSB7CisgICAgICAgIGlmIChQeUFyZW5hX0FkZFB5T2JqZWN0KGFyZW5hLCBvYmopIDwgMCkgeworICAgICAgICAgICAgKm91dCA9IE5VTEw7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgUHlfSU5DUkVGKG9iaik7CisgICAgfQorICAgICpvdXQgPSBvYmo7CisgICAgcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBpbnQgb2JqMmFzdF9pZGVudGlmaWVyKFB5T2JqZWN0KiBvYmosIFB5T2JqZWN0Kiogb3V0LCBQeUFyZW5hKiBhcmVuYSkKIHsKICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KG9iaikgJiYgb2JqICE9IFB5X05vbmUpIHsKQEAgLTkxMyw3ICs5MjcsNyBAQAogICAgICAgICByZXR1cm4gMTsKICAgICB9CiAKLSAgICBpID0gKGludClQeUxvbmdfQXNMb25nKG9iaik7CisgICAgaSA9IF9QeUxvbmdfQXNJbnQob2JqKTsKICAgICBpZiAoaSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gMTsKICAgICAqb3V0ID0gaTsKZGlmZiAtLWdpdCBhL1BhcnNlci9ncmFtbWFyLmMgYi9QYXJzZXIvZ3JhbW1hci5jCmluZGV4IGI1OTgyOTQuLjc1ZmQ1YjkgMTAwNjQ0Ci0tLSBhL1BhcnNlci9ncmFtbWFyLmMKKysrIGIvUGFyc2VyL2dyYW1tYXIuYwpAQCAtMjgsNiArMjgsMjMgQEAKICAgICByZXR1cm4gZzsKIH0KIAordm9pZAorZnJlZWdyYW1tYXIoZ3JhbW1hciAqZykKK3sKKyAgICBpbnQgaTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgZy0+Z19uZGZhczsgaSsrKSB7CisgICAgICAgIGZyZWUoZy0+Z19kZmFbaV0uZF9uYW1lKTsKKyAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBnLT5nX2RmYVtpXS5kX25zdGF0ZXM7IGorKykKKyAgICAgICAgICAgIFB5T2JqZWN0X0ZSRUUoZy0+Z19kZmFbaV0uZF9zdGF0ZVtqXS5zX2FyYyk7CisgICAgICAgIFB5T2JqZWN0X0ZSRUUoZy0+Z19kZmFbaV0uZF9zdGF0ZSk7CisgICAgfQorICAgIFB5T2JqZWN0X0ZSRUUoZy0+Z19kZmEpOworICAgIGZvciAoaSA9IDA7IGkgPCBnLT5nX2xsLmxsX25sYWJlbHM7IGkrKykKKyAgICAgICAgZnJlZShnLT5nX2xsLmxsX2xhYmVsW2ldLmxiX3N0cik7CisgICAgUHlPYmplY3RfRlJFRShnLT5nX2xsLmxsX2xhYmVsKTsKKyAgICBQeU9iamVjdF9GUkVFKGcpOworfQorCiBkZmEgKgogYWRkZGZhKGdyYW1tYXIgKmcsIGludCB0eXBlLCBjb25zdCBjaGFyICpuYW1lKQogewpAQCAtNjMsNyArODAsNyBAQAogICAgIHMtPnNfdXBwZXIgPSAwOwogICAgIHMtPnNfYWNjZWwgPSBOVUxMOwogICAgIHMtPnNfYWNjZXB0ID0gMDsKLSAgICByZXR1cm4gUHlfU0FGRV9ET1dOQ0FTVChzIC0gZC0+ZF9zdGF0ZSwgUHlfaW50cHRyX3QsIGludCk7CisgICAgcmV0dXJuIFB5X1NBRkVfRE9XTkNBU1QocyAtIGQtPmRfc3RhdGUsIGludHB0cl90LCBpbnQpOwogfQogCiB2b2lkCkBAIC0xMDUsNyArMTIyLDcgQEAKICAgICBpZiAoUHlfRGVidWdGbGFnKQogICAgICAgICBwcmludGYoIkxhYmVsIEAgJThwLCAlZDogJXNcbiIsIGxsLCBsbC0+bGxfbmxhYmVscywKICAgICAgICAgICAgICAgIFB5R3JhbW1hcl9MYWJlbFJlcHIobGIpKTsKLSAgICByZXR1cm4gUHlfU0FGRV9ET1dOQ0FTVChsYiAtIGxsLT5sbF9sYWJlbCwgUHlfaW50cHRyX3QsIGludCk7CisgICAgcmV0dXJuIFB5X1NBRkVfRE9XTkNBU1QobGIgLSBsbC0+bGxfbGFiZWwsIGludHB0cl90LCBpbnQpOwogfQogCiAvKiBTYW1lLCBidXQgcmF0aGVyIGRpZXMgdGhhbiBhZGRzICovCkBAIC0xMjIsNyArMTM5LDEzIEBACiAgICAgfQogICAgIGZwcmludGYoc3RkZXJyLCAiTGFiZWwgJWQvJyVzJyBub3QgZm91bmRcbiIsIHR5cGUsIHN0cik7CiAgICAgUHlfRmF0YWxFcnJvcigiZ3JhbW1hci5jOmZpbmRsYWJlbCgpIik7CisKKyAgICAvKiBQeV9GYXRhbEVycm9yKCkgaXMgZGVjbGFyZWQgd2l0aCBfX2F0dHJpYnV0ZV9fKChfX25vcmV0dXJuX18pKS4KKyAgICAgICBHQ0MgZW1pdHMgYSB3YXJuaW5nIHdpdGhvdXQgInJldHVybiAwOyIgKGNvbXBpbGVyIGJ1ZyEpLCBidXQgQ2xhbmcgaXMKKyAgICAgICBzbWFydGVyIGFuZCBlbWl0cyBhIHdhcm5pbmcgb24gdGhlIHJldHVybi4uLiAqLworI2lmbmRlZiBfX2NsYW5nX18KICAgICByZXR1cm4gMDsgLyogTWFrZSBnY2MgLVdhbGwgaGFwcHkgKi8KKyNlbmRpZgogfQogCiAvKiBGb3J3YXJkICovCmRpZmYgLS1naXQgYS9QYXJzZXIvbXlyZWFkbGluZS5jIGIvUGFyc2VyL215cmVhZGxpbmUuYwppbmRleCAyOGM3YjZkLi45ZjNjMmUzIDEwMDY0NAotLS0gYS9QYXJzZXIvbXlyZWFkbGluZS5jCisrKyBiL1BhcnNlci9teXJlYWRsaW5lLmMKQEAgLTQxLDEwICs0MSw3IEBACiAgICAgICAgICAgICAodm9pZCkoUHlPU19JbnB1dEhvb2spKCk7CiAgICAgICAgIGVycm5vID0gMDsKICAgICAgICAgY2xlYXJlcnIoZnApOwotICAgICAgICBpZiAoX1B5VmVyaWZ5X2ZkKGZpbGVubyhmcCkpKQotICAgICAgICAgICAgcCA9IGZnZXRzKGJ1ZiwgbGVuLCBmcCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHAgPSBOVUxMOworICAgICAgICBwID0gZmdldHMoYnVmLCBsZW4sIGZwKTsKICAgICAgICAgaWYgKHAgIT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAwOyAvKiBObyBlcnJvciAqLwogICAgICAgICBlcnIgPSBlcnJubzsKQEAgLTEwMSw2ICs5OCwxMDAgQEAKICAgICAvKiBOT1RSRUFDSEVEICovCiB9CiAKKyNpZmRlZiBNU19XSU5ET1dTCisvKiBSZWFkbGluZSBpbXBsZW1lbnRhdGlvbiB1c2luZyBSZWFkQ29uc29sZVcgKi8KKworZXh0ZXJuIGNoYXIgX2dldF9jb25zb2xlX3R5cGUoSEFORExFIGhhbmRsZSk7CisKK2NoYXIgKgorX1B5T1NfV2luZG93c0NvbnNvbGVSZWFkbGluZShIQU5ETEUgaFN0ZEluKQoreworICAgIHN0YXRpYyB3Y2hhcl90IHdidWZfbG9jYWxbMTAyNCAqIDE2XTsKKyAgICBjb25zdCBEV09SRCBjaHVua19zaXplID0gMTAyNDsKKworICAgIERXT1JEIG5fcmVhZCwgdG90YWxfcmVhZCwgd2J1ZmxlbiwgdThsZW47CisgICAgd2NoYXJfdCAqd2J1ZjsKKyAgICBjaGFyICpidWYgPSBOVUxMOworICAgIGludCBlcnIgPSAwOworCisgICAgbl9yZWFkID0gMDsKKyAgICB0b3RhbF9yZWFkID0gMDsKKyAgICB3YnVmID0gd2J1Zl9sb2NhbDsKKyAgICB3YnVmbGVuID0gc2l6ZW9mKHdidWZfbG9jYWwpIC8gc2l6ZW9mKHdidWZfbG9jYWxbMF0pIC0gMTsKKyAgICB3aGlsZSAoMSkgeworICAgICAgICBpZiAoIVJlYWRDb25zb2xlVyhoU3RkSW4sICZ3YnVmW3RvdGFsX3JlYWRdLCB3YnVmbGVuIC0gdG90YWxfcmVhZCwgJm5fcmVhZCwgTlVMTCkpIHsKKyAgICAgICAgICAgIGVyciA9IEdldExhc3RFcnJvcigpOworICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICB9CisgICAgICAgIGlmIChuX3JlYWQgPT0gMCkgeworICAgICAgICAgICAgaW50IHM7CisgICAgICAgICAgICBlcnIgPSBHZXRMYXN0RXJyb3IoKTsKKyAgICAgICAgICAgIGlmIChlcnIgIT0gRVJST1JfT1BFUkFUSU9OX0FCT1JURUQpCisgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgZXJyID0gMDsKKyAgICAgICAgICAgIEhBTkRMRSBoSW50ZXJydXB0RXZlbnQgPSBfUHlPU19TaWdpbnRFdmVudCgpOworICAgICAgICAgICAgaWYgKFdhaXRGb3JTaW5nbGVPYmplY3RFeChoSW50ZXJydXB0RXZlbnQsIDEwMCwgRkFMU0UpCisgICAgICAgICAgICAgICAgICAgID09IFdBSVRfT0JKRUNUXzApIHsKKyAgICAgICAgICAgICAgICBSZXNldEV2ZW50KGhJbnRlcnJ1cHRFdmVudCk7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICAgICAgICAgICAgICBQeUV2YWxfUmVzdG9yZVRocmVhZChfUHlPU19SZWFkbGluZVRTdGF0ZSk7CisjZW5kaWYKKyAgICAgICAgICAgICAgICBzID0gUHlFcnJfQ2hlY2tTaWduYWxzKCk7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICAgICAgICAgICAgICBQeUV2YWxfU2F2ZVRocmVhZCgpOworI2VuZGlmCisgICAgICAgICAgICAgICAgaWYgKHMgPCAwKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHRvdGFsX3JlYWQgKz0gbl9yZWFkOworICAgICAgICBpZiAodG90YWxfcmVhZCA9PSAwIHx8IHdidWZbdG90YWxfcmVhZCAtIDFdID09IEwnXG4nKSB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICB3YnVmbGVuICs9IGNodW5rX3NpemU7CisgICAgICAgIGlmICh3YnVmID09IHdidWZfbG9jYWwpIHsKKyAgICAgICAgICAgIHdidWZbdG90YWxfcmVhZF0gPSAnXDAnOworICAgICAgICAgICAgd2J1ZiA9ICh3Y2hhcl90KilQeU1lbV9SYXdNYWxsb2Mod2J1ZmxlbiAqIHNpemVvZih3Y2hhcl90KSk7CisgICAgICAgICAgICBpZiAod2J1ZikKKyAgICAgICAgICAgICAgICB3Y3NjcHlfcyh3YnVmLCB3YnVmbGVuLCB3YnVmX2xvY2FsKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICB3YnVmID0gKHdjaGFyX3QqKVB5TWVtX1Jhd1JlYWxsb2Mod2J1Ziwgd2J1ZmxlbiAqIHNpemVvZih3Y2hhcl90KSk7CisgICAgfQorCisgICAgaWYgKHdidWZbMF0gPT0gJ1x4MWEnKSB7CisgICAgICAgIGJ1ZiA9IFB5TWVtX1Jhd01hbGxvYygxKTsKKyAgICAgICAgaWYgKGJ1ZikKKyAgICAgICAgICAgIGJ1ZlswXSA9ICdcMCc7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyAgICB1OGxlbiA9IFdpZGVDaGFyVG9NdWx0aUJ5dGUoQ1BfVVRGOCwgMCwgd2J1ZiwgdG90YWxfcmVhZCwgTlVMTCwgMCwgTlVMTCwgTlVMTCk7CisgICAgYnVmID0gUHlNZW1fUmF3TWFsbG9jKHU4bGVuICsgMSk7CisgICAgdThsZW4gPSBXaWRlQ2hhclRvTXVsdGlCeXRlKENQX1VURjgsIDAsIHdidWYsIHRvdGFsX3JlYWQsIGJ1ZiwgdThsZW4sIE5VTEwsIE5VTEwpOworICAgIGJ1Zlt1OGxlbl0gPSAnXDAnOworCitleGl0OgorICAgIGlmICh3YnVmICE9IHdidWZfbG9jYWwpCisgICAgICAgIFB5TWVtX1Jhd0ZyZWUod2J1Zik7CisKKyAgICBpZiAoZXJyKSB7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICAgICAgUHlFdmFsX1Jlc3RvcmVUaHJlYWQoX1B5T1NfUmVhZGxpbmVUU3RhdGUpOworI2VuZGlmCisgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKGVycik7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICAgICAgUHlFdmFsX1NhdmVUaHJlYWQoKTsKKyNlbmRpZgorICAgIH0KKworICAgIHJldHVybiBidWY7Cit9CisKKyNlbmRpZgorCiAKIC8qIFJlYWRsaW5lIGltcGxlbWVudGF0aW9uIHVzaW5nIGZnZXRzKCkgKi8KIApAQCAtMTEwLDYgKzIwMSw0NiBAQAogICAgIHNpemVfdCBuOwogICAgIGNoYXIgKnAsICpwcjsKIAorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpZiAoIVB5X0xlZ2FjeVdpbmRvd3NTdGRpb0ZsYWcgJiYgc3lzX3N0ZGluID09IHN0ZGluKSB7CisgICAgICAgIEhBTkRMRSBoU3RkSW4sIGhTdGRFcnI7CisKKyAgICAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgICAgICBoU3RkSW4gPSAoSEFORExFKV9nZXRfb3NmaGFuZGxlKGZpbGVubyhzeXNfc3RkaW4pKTsKKyAgICAgICAgaFN0ZEVyciA9IChIQU5ETEUpX2dldF9vc2ZoYW5kbGUoZmlsZW5vKHN0ZGVycikpOworICAgICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAorCisgICAgICAgIGlmIChfZ2V0X2NvbnNvbGVfdHlwZShoU3RkSW4pID09ICdyJykgeworICAgICAgICAgICAgZmZsdXNoKHN5c19zdGRvdXQpOworICAgICAgICAgICAgaWYgKHByb21wdCkgeworICAgICAgICAgICAgICAgIGlmIChfZ2V0X2NvbnNvbGVfdHlwZShoU3RkRXJyKSA9PSAndycpIHsKKyAgICAgICAgICAgICAgICAgICAgd2NoYXJfdCAqd2J1ZjsKKyAgICAgICAgICAgICAgICAgICAgaW50IHdsZW47CisgICAgICAgICAgICAgICAgICAgIHdsZW4gPSBNdWx0aUJ5dGVUb1dpZGVDaGFyKENQX1VURjgsIDAsIHByb21wdCwgLTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCk7CisgICAgICAgICAgICAgICAgICAgIGlmICh3bGVuICYmCisgICAgICAgICAgICAgICAgICAgICAgICAod2J1ZiA9IFB5TWVtX1Jhd01hbGxvYyh3bGVuICogc2l6ZW9mKHdjaGFyX3QpKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHdsZW4gPSBNdWx0aUJ5dGVUb1dpZGVDaGFyKENQX1VURjgsIDAsIHByb21wdCwgLTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdidWYsIHdsZW4pOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdsZW4pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBuOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZmbHVzaChzdGRlcnIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHdsZW4gaW5jbHVkZXMgbnVsbCB0ZXJtaW5hdG9yLCBzbyBzdWJ0cmFjdCAxICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGVDb25zb2xlVyhoU3RkRXJyLCB3YnVmLCB3bGVuIC0gMSwgJm4sIE5VTEwpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgUHlNZW1fUmF3RnJlZSh3YnVmKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXMiLCBwcm9tcHQpOworICAgICAgICAgICAgICAgICAgICBmZmx1c2goc3RkZXJyKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjbGVhcmVycihzeXNfc3RkaW4pOworICAgICAgICAgICAgcmV0dXJuIF9QeU9TX1dpbmRvd3NDb25zb2xlUmVhZGxpbmUoaFN0ZEluKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorCiAgICAgbiA9IDEwMDsKICAgICBwID0gKGNoYXIgKilQeU1lbV9SYXdNYWxsb2Mobik7CiAgICAgaWYgKHAgPT0gTlVMTCkKZGlmZiAtLWdpdCBhL1BhcnNlci9ub2RlLmMgYi9QYXJzZXIvbm9kZS5jCmluZGV4IDAwMTAzMjQuLjI0MGQyOTAgMTAwNjQ0Ci0tLSBhL1BhcnNlci9ub2RlLmMKKysrIGIvUGFyc2VyL25vZGUuYwpAQCAtOTEsNyArOTEsNyBAQAogICAgIGlmIChjdXJyZW50X2NhcGFjaXR5IDwgMCB8fCByZXF1aXJlZF9jYXBhY2l0eSA8IDApCiAgICAgICAgIHJldHVybiBFX09WRVJGTE9XOwogICAgIGlmIChjdXJyZW50X2NhcGFjaXR5IDwgcmVxdWlyZWRfY2FwYWNpdHkpIHsKLSAgICAgICAgaWYgKChzaXplX3QpcmVxdWlyZWRfY2FwYWNpdHkgPiBQWV9TSVpFX01BWCAvIHNpemVvZihub2RlKSkgeworICAgICAgICBpZiAoKHNpemVfdClyZXF1aXJlZF9jYXBhY2l0eSA+IFNJWkVfTUFYIC8gc2l6ZW9mKG5vZGUpKSB7CiAgICAgICAgICAgICByZXR1cm4gRV9OT01FTTsKICAgICAgICAgfQogICAgICAgICBuID0gbjEtPm5fY2hpbGQ7CmRpZmYgLS1naXQgYS9QYXJzZXIvcGFyc2VyLmMgYi9QYXJzZXIvcGFyc2VyLmMKaW5kZXggNTZlYzUxNC4uNDEwNzJjNCAxMDA2NDQKLS0tIGEvUGFyc2VyL3BhcnNlci5jCisrKyBiL1BhcnNlci9wYXJzZXIuYwpAQCAtMTQwLDIxICsxNDAsMjAgQEAKICAgICBpbnQgbiA9IGctPmdfbGwubGxfbmxhYmVsczsKIAogICAgIGlmICh0eXBlID09IE5BTUUpIHsKLSAgICAgICAgY29uc3QgY2hhciAqcyA9IHN0cjsKICAgICAgICAgbGFiZWwgKmwgPSBnLT5nX2xsLmxsX2xhYmVsOwogICAgICAgICBpbnQgaTsKICAgICAgICAgZm9yIChpID0gbjsgaSA+IDA7IGktLSwgbCsrKSB7CiAgICAgICAgICAgICBpZiAobC0+bGJfdHlwZSAhPSBOQU1FIHx8IGwtPmxiX3N0ciA9PSBOVUxMIHx8Ci0gICAgICAgICAgICAgICAgbC0+bGJfc3RyWzBdICE9IHNbMF0gfHwKLSAgICAgICAgICAgICAgICBzdHJjbXAobC0+bGJfc3RyLCBzKSAhPSAwKQorICAgICAgICAgICAgICAgIGwtPmxiX3N0clswXSAhPSBzdHJbMF0gfHwKKyAgICAgICAgICAgICAgICBzdHJjbXAobC0+bGJfc3RyLCBzdHIpICE9IDApCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAjaWZkZWYgUFlfUEFSU0VSX1JFUVVJUkVTX0ZVVFVSRV9LRVlXT1JECiAjaWYgMAogICAgICAgICAgICAgLyogTGVhdmluZyB0aGlzIGluIGFzIGFuIGV4YW1wbGUgKi8KICAgICAgICAgICAgIGlmICghKHBzLT5wX2ZsYWdzICYgQ09fRlVUVVJFX1dJVEhfU1RBVEVNRU5UKSkgewotICAgICAgICAgICAgICAgIGlmIChzWzBdID09ICd3JyAmJiBzdHJjbXAocywgIndpdGgiKSA9PSAwKQorICAgICAgICAgICAgICAgIGlmIChzdHJbMF0gPT0gJ3cnICYmIHN0cmNtcChzdHIsICJ3aXRoIikgPT0gMCkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8qIG5vdCBhIGtleXdvcmQgeWV0ICovCi0gICAgICAgICAgICAgICAgZWxzZSBpZiAoc1swXSA9PSAnYScgJiYgc3RyY21wKHMsICJhcyIpID09IDApCisgICAgICAgICAgICAgICAgZWxzZSBpZiAoc3RyWzBdID09ICdhJyAmJiBzdHJjbXAoc3RyLCAiYXMiKSA9PSAwKQogICAgICAgICAgICAgICAgICAgICBicmVhazsgLyogbm90IGEga2V5d29yZCB5ZXQgKi8KICAgICAgICAgICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvUGFyc2VyL3BhcnNldG9rLmMgYi9QYXJzZXIvcGFyc2V0b2suYwppbmRleCA2MjlkZWU1Li4xZjQ2N2Q2IDEwMDY0NAotLS0gYS9QYXJzZXIvcGFyc2V0b2suYworKysgYi9QYXJzZXIvcGFyc2V0b2suYwpAQCAtMTYxLDEwICsxNjEsMTAgQEAKIAogI2lmZGVmIFBZX1BBUlNFUl9SRVFVSVJFU19GVVRVUkVfS0VZV09SRAogI2lmIDAKLXN0YXRpYyBjaGFyIHdpdGhfbXNnW10gPQorc3RhdGljIGNvbnN0IGNoYXIgd2l0aF9tc2dbXSA9CiAiJXM6JWQ6IFdhcm5pbmc6ICd3aXRoJyB3aWxsIGJlY29tZSBhIHJlc2VydmVkIGtleXdvcmQgaW4gUHl0aG9uIDIuNlxuIjsKIAotc3RhdGljIGNoYXIgYXNfbXNnW10gPQorc3RhdGljIGNvbnN0IGNoYXIgYXNfbXNnW10gPQogIiVzOiVkOiBXYXJuaW5nOiAnYXMnIHdpbGwgYmVjb21lIGEgcmVzZXJ2ZWQga2V5d29yZCBpbiBQeXRob24gMi42XG4iOwogCiBzdGF0aWMgdm9pZApAQCAtMjU1LDcgKzI1NSw3IEBACiAjZW5kaWYKICAgICAgICAgaWYgKGEgPj0gdG9rLT5saW5lX3N0YXJ0KQogICAgICAgICAgICAgY29sX29mZnNldCA9IFB5X1NBRkVfRE9XTkNBU1QoYSAtIHRvay0+bGluZV9zdGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2ludHB0cl90LCBpbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50cHRyX3QsIGludCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbF9vZmZzZXQgPSAtMTsKIApkaWZmIC0tZ2l0IGEvUGFyc2VyL3BnZW4uYyBiL1BhcnNlci9wZ2VuLmMKaW5kZXggZjMwMzFhZS4uNjQ1MWExZCAxMDA2NDQKLS0tIGEvUGFyc2VyL3BnZW4uYworKysgYi9QYXJzZXIvcGdlbi5jCkBAIC0xMTcsNiArMTE3LDE2IEBACiAgICAgcmV0dXJuIGdyOwogfQogCitzdGF0aWMgdm9pZAorZnJlZW5mYWdyYW1tYXIobmZhZ3JhbW1hciAqZ3IpCit7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBnci0+Z3Jfbm5mYXM7IGkrKykgeworICAgICAgICBQeU9iamVjdF9GUkVFKGdyLT5ncl9uZmFbaV0tPm5mX3N0YXRlKTsKKyAgICB9CisgICAgUHlPYmplY3RfRlJFRShnci0+Z3JfbmZhKTsKKyAgICBQeU9iamVjdF9GUkVFKGdyKTsKK30KKwogc3RhdGljIG5mYSAqCiBhZGRuZmEobmZhZ3JhbW1hciAqZ3IsIGNoYXIgKm5hbWUpCiB7CkBAIC0xMzQsNyArMTQ0LDcgQEAKIAogI2lmZGVmIFB5X0RFQlVHCiAKLXN0YXRpYyBjaGFyIFJFUU5GTVRbXSA9ICJtZXRhY29tcGlsZTogbGVzcyB0aGFuICVkIGNoaWxkcmVuXG4iOworc3RhdGljIGNvbnN0IGNoYXIgUkVRTkZNVFtdID0gIm1ldGFjb21waWxlOiBsZXNzIHRoYW4gJWQgY2hpbGRyZW5cbiI7CiAKICNkZWZpbmUgUkVRTihpLCBjb3VudCkgZG8geyBcCiAgICAgaWYgKGkgPCBjb3VudCkgeyBcCkBAIC0zNzksNyArMzg5LDcgQEAKIAogLyogRm9yd2FyZCAqLwogc3RhdGljIHZvaWQgcHJpbnRzc2RmYShpbnQgeHhfbnN0YXRlcywgc3Nfc3RhdGUgKnh4X3N0YXRlLCBpbnQgbmJpdHMsCi0gICAgICAgICAgICAgICAgICAgICAgIGxhYmVsbGlzdCAqbGwsIGNoYXIgKm1zZyk7CisgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsbGlzdCAqbGwsIGNvbnN0IGNoYXIgKm1zZyk7CiBzdGF0aWMgdm9pZCBzaW1wbGlmeShpbnQgeHhfbnN0YXRlcywgc3Nfc3RhdGUgKnh4X3N0YXRlKTsKIHN0YXRpYyB2b2lkIGNvbnZlcnQoZGZhICpkLCBpbnQgeHhfbnN0YXRlcywgc3Nfc3RhdGUgKnh4X3N0YXRlKTsKIApAQCAtNDg4LDEzICs0OTgsMTcgQEAKIAogICAgIGNvbnZlcnQoZCwgeHhfbnN0YXRlcywgeHhfc3RhdGUpOwogCi0gICAgLyogWFhYIGNsZWFudXAgKi8KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHh4X25zdGF0ZXM7IGkrKykgeworICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHh4X3N0YXRlW2ldLnNzX25hcmNzOyBqKyspCisgICAgICAgICAgICBkZWxiaXRzZXQoeHhfc3RhdGVbaV0uc3NfYXJjW2pdLnNhX2JpdHNldCk7CisgICAgICAgIFB5T2JqZWN0X0ZSRUUoeHhfc3RhdGVbaV0uc3NfYXJjKTsKKyAgICB9CiAgICAgUHlPYmplY3RfRlJFRSh4eF9zdGF0ZSk7CiB9CiAKIHN0YXRpYyB2b2lkCiBwcmludHNzZGZhKGludCB4eF9uc3RhdGVzLCBzc19zdGF0ZSAqeHhfc3RhdGUsIGludCBuYml0cywKLSAgICAgICAgICAgbGFiZWxsaXN0ICpsbCwgY2hhciAqbXNnKQorICAgICAgICAgICBsYWJlbGxpc3QgKmxsLCBjb25zdCBjaGFyICptc2cpCiB7CiAgICAgaW50IGksIGliaXQsIGlhcmM7CiAgICAgc3Nfc3RhdGUgKnl5OwpAQCAtNjY5LDcgKzY4Myw3IEBACiAgICAgZyA9IG1ha2V0YWJsZXMoZ3IpOwogICAgIHRyYW5zbGF0ZWxhYmVscyhnKTsKICAgICBhZGRmaXJzdHNldHMoZyk7Ci0gICAgUHlPYmplY3RfRlJFRShncik7CisgICAgZnJlZW5mYWdyYW1tYXIoZ3IpOwogICAgIHJldHVybiBnOwogfQogCmRpZmYgLS1naXQgYS9QYXJzZXIvcGdlbm1haW4uYyBiL1BhcnNlci9wZ2VubWFpbi5jCmluZGV4IDBmMDU1ZDYuLmUzODYyNDggMTAwNjQ0Ci0tLSBhL1BhcnNlci9wZ2VubWFpbi5jCisrKyBiL1BhcnNlci9wZ2VubWFpbi5jCkBAIC0yNyw3ICsyNyw3IEBACiBpbnQgUHlfSWdub3JlRW52aXJvbm1lbnRGbGFnOwogCiAvKiBGb3J3YXJkICovCi1ncmFtbWFyICpnZXRncmFtbWFyKGNoYXIgKmZpbGVuYW1lKTsKK2dyYW1tYXIgKmdldGdyYW1tYXIoY29uc3QgY2hhciAqZmlsZW5hbWUpOwogCiB2b2lkIFB5X0V4aXQoaW50KSBfUHlfTk9fUkVUVVJOOwogCkBAIC0zNyw2ICszNywxNSBAQAogICAgIGV4aXQoc3RzKTsKIH0KIAorI2lmZGVmIFdJVEhfVEhSRUFECisvKiBOZWVkZWQgYnkgb2JtYWxsb2MuYyAqLworaW50IFB5R0lMU3RhdGVfQ2hlY2sodm9pZCkKK3sgcmV0dXJuIDE7IH0KKyNlbmRpZgorCit2b2lkIF9QeU1lbV9EdW1wVHJhY2ViYWNrKGludCBmZCwgY29uc3Qgdm9pZCAqcHRyKQore30KKwogaW50CiBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIHsKQEAgLTcxLDEyICs4MCwxMyBAQAogICAgICAgICBwcmludGYoIldyaXRpbmcgJXMgLi4uXG4iLCBncmFtaW5pdF9oKTsKICAgICBwcmludG5vbnRlcm1pbmFscyhnLCBmcCk7CiAgICAgZmNsb3NlKGZwKTsKKyAgICBmcmVlZ3JhbW1hcihnKTsKICAgICBQeV9FeGl0KDApOwogICAgIHJldHVybiAwOyAvKiBNYWtlIGdjYyAtV2FsbCBoYXBweSAqLwogfQogCiBncmFtbWFyICoKLWdldGdyYW1tYXIoY2hhciAqZmlsZW5hbWUpCitnZXRncmFtbWFyKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQogewogICAgIEZJTEUgKmZwOwogICAgIG5vZGUgKm47CmRpZmYgLS1naXQgYS9QYXJzZXIvdG9rZW5pemVyLmMgYi9QYXJzZXIvdG9rZW5pemVyLmMKaW5kZXggNjEyY2IyMy4uMGZhM2FlYiAxMDA2NDQKLS0tIGEvUGFyc2VyL3Rva2VuaXplci5jCisrKyBiL1BhcnNlci90b2tlbml6ZXIuYwpAQCAtMjAyLDggKzIwMiw4IEBACiB9CiAKIAotc3RhdGljIGNoYXIgKgotZ2V0X25vcm1hbF9uYW1lKGNoYXIgKnMpICAgICAgICAvKiBmb3IgdXRmLTggYW5kIGxhdGluLTEgKi8KK3N0YXRpYyBjb25zdCBjaGFyICoKK2dldF9ub3JtYWxfbmFtZShjb25zdCBjaGFyICpzKSAgLyogZm9yIHV0Zi04IGFuZCBsYXRpbi0xICovCiB7CiAgICAgY2hhciBidWZbMTNdOwogICAgIGludCBpOwpAQCAtMjY0LDcgKzI2NCw3IEBACiAKICAgICAgICAgICAgIGlmIChiZWdpbiA8IHQpIHsKICAgICAgICAgICAgICAgICBjaGFyKiByID0gbmV3X3N0cmluZyhiZWdpbiwgdCAtIGJlZ2luLCB0b2spOwotICAgICAgICAgICAgICAgIGNoYXIqIHE7CisgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcTsKICAgICAgICAgICAgICAgICBpZiAoIXIpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgIHEgPSBnZXRfbm9ybWFsX25hbWUocik7CkBAIC00NDYsNyArNDQ2LDcgQEAKICAgICB9CiAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KGJ1Zm9iaikpCiAgICAgewotICAgICAgICBidWYgPSBfUHlVbmljb2RlX0FzU3RyaW5nQW5kU2l6ZShidWZvYmosICZidWZsZW4pOworICAgICAgICBidWYgPSBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZShidWZvYmosICZidWZsZW4pOwogICAgICAgICBpZiAoYnVmID09IE5VTEwpIHsKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KQEAgLTEzMzUsNiArMTMzNSwyOCBAQAogfQogI2VuZGlmCiAKK3N0YXRpYyBpbnQKK3Rva19kZWNpbWFsX3RhaWwoc3RydWN0IHRva19zdGF0ZSAqdG9rKQoreworICAgIGludCBjOworCisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgZG8geworICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOworICAgICAgICB9IHdoaWxlIChpc2RpZ2l0KGMpKTsKKyAgICAgICAgaWYgKGMgIT0gJ18nKSB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjID0gdG9rX25leHRjKHRvayk7CisgICAgICAgIGlmICghaXNkaWdpdChjKSkgeworICAgICAgICAgICAgdG9rLT5kb25lID0gRV9UT0tFTjsKKyAgICAgICAgICAgIHRva19iYWNrdXAodG9rLCBjKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBjOworfQorCiAvKiBHZXQgbmV4dCB0b2tlbiwgYWZ0ZXIgc3BhY2Ugc3RyaXBwaW5nIGV0Yy4gKi8KIAogc3RhdGljIGludApAQCAtMTM1NSwxNyArMTM3NywyMCBAQAogICAgICAgICB0b2stPmF0Ym9sID0gMDsKICAgICAgICAgZm9yICg7OykgewogICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwotICAgICAgICAgICAgaWYgKGMgPT0gJyAnKQorICAgICAgICAgICAgaWYgKGMgPT0gJyAnKSB7CiAgICAgICAgICAgICAgICAgY29sKyssIGFsdGNvbCsrOworICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAnXHQnKSB7CiAgICAgICAgICAgICAgICAgY29sID0gKGNvbC90b2stPnRhYnNpemUgKyAxKSAqIHRvay0+dGFic2l6ZTsKICAgICAgICAgICAgICAgICBhbHRjb2wgPSAoYWx0Y29sL3Rvay0+YWx0dGFic2l6ZSArIDEpCiAgICAgICAgICAgICAgICAgICAgICogdG9rLT5hbHR0YWJzaXplOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAnXDAxNCcpIC8qIENvbnRyb2wtTCAoZm9ybWZlZWQpICovCisgICAgICAgICAgICBlbHNlIGlmIChjID09ICdcMDE0JykgIHsvKiBDb250cm9sLUwgKGZvcm1mZWVkKSAqLwogICAgICAgICAgICAgICAgIGNvbCA9IGFsdGNvbCA9IDA7IC8qIEZvciBFbWFjcyB1c2VycyAqLwotICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgdG9rX2JhY2t1cCh0b2ssIGMpOwogICAgICAgICBpZiAoYyA9PSAnIycgfHwgYyA9PSAnXG4nKSB7CkBAIC0xMzc0LDEwICsxMzk5LDEyIEBACiAgICAgICAgICAgICAgICBub3QgcGFzc2VkIHRvIHRoZSBwYXJzZXIgYXMgTkVXTElORSB0b2tlbnMsCiAgICAgICAgICAgICAgICBleGNlcHQgKnRvdGFsbHkqIGVtcHR5IGxpbmVzIGluIGludGVyYWN0aXZlCiAgICAgICAgICAgICAgICBtb2RlLCB3aGljaCBzaWduYWwgdGhlIGVuZCBvZiBhIGNvbW1hbmQgZ3JvdXAuICovCi0gICAgICAgICAgICBpZiAoY29sID09IDAgJiYgYyA9PSAnXG4nICYmIHRvay0+cHJvbXB0ICE9IE5VTEwpCisgICAgICAgICAgICBpZiAoY29sID09IDAgJiYgYyA9PSAnXG4nICYmIHRvay0+cHJvbXB0ICE9IE5VTEwpIHsKICAgICAgICAgICAgICAgICBibGFua2xpbmUgPSAwOyAvKiBMZXQgaXQgdGhyb3VnaCAqLwotICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgYmxhbmtsaW5lID0gMTsgLyogSWdub3JlIGNvbXBsZXRlbHkgKi8KKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8qIFdlIGNhbid0IGp1bXAgYmFjayByaWdodCBoZXJlIHNpbmNlIHdlIHN0aWxsCiAgICAgICAgICAgICAgICBtYXkgbmVlZCB0byBza2lwIHRvIHRoZSBlbmQgb2YgYSBjb21tZW50ICovCiAgICAgICAgIH0KQEAgLTEzODUsOCArMTQxMiw5IEBACiAgICAgICAgICAgICBpZiAoY29sID09IHRvay0+aW5kc3RhY2tbdG9rLT5pbmRlbnRdKSB7CiAgICAgICAgICAgICAgICAgLyogTm8gY2hhbmdlICovCiAgICAgICAgICAgICAgICAgaWYgKGFsdGNvbCAhPSB0b2stPmFsdGluZHN0YWNrW3Rvay0+aW5kZW50XSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZW50ZXJyb3IodG9rKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKGluZGVudGVycm9yKHRvaykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAoY29sID4gdG9rLT5pbmRzdGFja1t0b2stPmluZGVudF0pIHsKQEAgLTEzOTcsOCArMTQyNSw5IEBACiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoYWx0Y29sIDw9IHRvay0+YWx0aW5kc3RhY2tbdG9rLT5pbmRlbnRdKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpbmRlbnRlcnJvcih0b2spKQorICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZW50ZXJyb3IodG9rKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgdG9rLT5wZW5kaW4rKzsKICAgICAgICAgICAgICAgICB0b2stPmluZHN0YWNrWysrdG9rLT5pbmRlbnRdID0gY29sOwpAQCAtMTQxNyw4ICsxNDQ2LDkgQEAKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmIChhbHRjb2wgIT0gdG9rLT5hbHRpbmRzdGFja1t0b2stPmluZGVudF0pIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGluZGVudGVycm9yKHRvaykpCisgICAgICAgICAgICAgICAgICAgIGlmIChpbmRlbnRlcnJvcih0b2spKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTQ2NCw5ICsxNDk0LDExIEBACiAgICAgdG9rLT5zdGFydCA9IHRvay0+Y3VyIC0gMTsKIAogICAgIC8qIFNraXAgY29tbWVudCAqLwotICAgIGlmIChjID09ICcjJykKLSAgICAgICAgd2hpbGUgKGMgIT0gRU9GICYmIGMgIT0gJ1xuJykKKyAgICBpZiAoYyA9PSAnIycpIHsKKyAgICAgICAgd2hpbGUgKGMgIT0gRU9GICYmIGMgIT0gJ1xuJykgewogICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOworICAgICAgICB9CisgICAgfQogCiAgICAgLyogQ2hlY2sgZm9yIEVPRiBhbmQgZXJyb3JzIG5vdyAqLwogICAgIGlmIChjID09IEVPRikgewpAQCAtMTQ3NywzMSArMTUwOSw0MSBAQAogICAgIG5vbmFzY2lpID0gMDsKICAgICBpZiAoaXNfcG90ZW50aWFsX2lkZW50aWZpZXJfc3RhcnQoYykpIHsKICAgICAgICAgLyogUHJvY2VzcyBiIiIsIHIiIiwgdSIiLCBiciIiIGFuZCByYiIiICovCi0gICAgICAgIGludCBzYXdfYiA9IDAsIHNhd19yID0gMCwgc2F3X3UgPSAwOworICAgICAgICBpbnQgc2F3X2IgPSAwLCBzYXdfciA9IDAsIHNhd191ID0gMCwgc2F3X2YgPSAwOwogICAgICAgICB3aGlsZSAoMSkgewotICAgICAgICAgICAgaWYgKCEoc2F3X2IgfHwgc2F3X3UpICYmIChjID09ICdiJyB8fCBjID09ICdCJykpCisgICAgICAgICAgICBpZiAoIShzYXdfYiB8fCBzYXdfdSB8fCBzYXdfZikgJiYgKGMgPT0gJ2InIHx8IGMgPT0gJ0InKSkKICAgICAgICAgICAgICAgICBzYXdfYiA9IDE7CiAgICAgICAgICAgICAvKiBTaW5jZSB0aGlzIGlzIGEgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgc3VwcG9ydCBsaXRlcmFsIHdlIGRvbid0CiAgICAgICAgICAgICAgICB3YW50IHRvIHN1cHBvcnQgaXQgaW4gYXJiaXRyYXJ5IG9yZGVyIGxpa2UgYnl0ZSBsaXRlcmFscy4gKi8KLSAgICAgICAgICAgIGVsc2UgaWYgKCEoc2F3X2IgfHwgc2F3X3UgfHwgc2F3X3IpICYmIChjID09ICd1JyB8fCBjID09ICdVJykpCisgICAgICAgICAgICBlbHNlIGlmICghKHNhd19iIHx8IHNhd191IHx8IHNhd19yIHx8IHNhd19mKQorICAgICAgICAgICAgICAgICAgICAgJiYgKGMgPT0gJ3UnfHwgYyA9PSAnVScpKSB7CiAgICAgICAgICAgICAgICAgc2F3X3UgPSAxOworICAgICAgICAgICAgfQogICAgICAgICAgICAgLyogdXIiIiBhbmQgcnUiIiBhcmUgbm90IHN1cHBvcnRlZCAqLwotICAgICAgICAgICAgZWxzZSBpZiAoIShzYXdfciB8fCBzYXdfdSkgJiYgKGMgPT0gJ3InIHx8IGMgPT0gJ1InKSkKKyAgICAgICAgICAgIGVsc2UgaWYgKCEoc2F3X3IgfHwgc2F3X3UpICYmIChjID09ICdyJyB8fCBjID09ICdSJykpIHsKICAgICAgICAgICAgICAgICBzYXdfciA9IDE7Ci0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmICghKHNhd19mIHx8IHNhd19iIHx8IHNhd191KSAmJiAoYyA9PSAnZicgfHwgYyA9PSAnRicpKSB7CisgICAgICAgICAgICAgICAgc2F3X2YgPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7Ci0gICAgICAgICAgICBpZiAoYyA9PSAnIicgfHwgYyA9PSAnXCcnKQorICAgICAgICAgICAgaWYgKGMgPT0gJyInIHx8IGMgPT0gJ1wnJykgewogICAgICAgICAgICAgICAgIGdvdG8gbGV0dGVyX3F1b3RlOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHdoaWxlIChpc19wb3RlbnRpYWxfaWRlbnRpZmllcl9jaGFyKGMpKSB7Ci0gICAgICAgICAgICBpZiAoYyA+PSAxMjgpCisgICAgICAgICAgICBpZiAoYyA+PSAxMjgpIHsKICAgICAgICAgICAgICAgICBub25hc2NpaSA9IDE7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7CiAgICAgICAgIH0KICAgICAgICAgdG9rX2JhY2t1cCh0b2ssIGMpOwotICAgICAgICBpZiAobm9uYXNjaWkgJiYgIXZlcmlmeV9pZGVudGlmaWVyKHRvaykpCisgICAgICAgIGlmIChub25hc2NpaSAmJiAhdmVyaWZ5X2lkZW50aWZpZXIodG9rKSkgewogICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47CisgICAgICAgIH0KICAgICAgICAgKnBfc3RhcnQgPSB0b2stPnN0YXJ0OwogICAgICAgICAqcF9lbmQgPSB0b2stPmN1cjsKIApAQCAtMTUxMCwxMCArMTU1MiwxMiBAQAogICAgICAgICAgICAgLyogQ3VycmVudCB0b2tlbiBsZW5ndGggaXMgNS4gKi8KICAgICAgICAgICAgIGlmICh0b2stPmFzeW5jX2RlZikgewogICAgICAgICAgICAgICAgIC8qIFdlJ3JlIGluc2lkZSBhbiAnYXN5bmMgZGVmJyBmdW5jdGlvbi4gKi8KLSAgICAgICAgICAgICAgICBpZiAobWVtY21wKHRvay0+c3RhcnQsICJhc3luYyIsIDUpID09IDApCisgICAgICAgICAgICAgICAgaWYgKG1lbWNtcCh0b2stPnN0YXJ0LCAiYXN5bmMiLCA1KSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBBU1lOQzsKLSAgICAgICAgICAgICAgICBpZiAobWVtY21wKHRvay0+c3RhcnQsICJhd2FpdCIsIDUpID09IDApCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChtZW1jbXAodG9rLT5zdGFydCwgImF3YWl0IiwgNSkgPT0gMCkgewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gQVdBSVQ7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAobWVtY21wKHRvay0+c3RhcnQsICJhc3luYyIsIDUpID09IDApIHsKICAgICAgICAgICAgICAgICAvKiBUaGUgY3VycmVudCB0b2tlbiBpcyAnYXN5bmMnLgpAQCAtMTU0Niw4ICsxNTkwLDkgQEAKICAgICAvKiBOZXdsaW5lICovCiAgICAgaWYgKGMgPT0gJ1xuJykgewogICAgICAgICB0b2stPmF0Ym9sID0gMTsKLSAgICAgICAgaWYgKGJsYW5rbGluZSB8fCB0b2stPmxldmVsID4gMCkKKyAgICAgICAgaWYgKGJsYW5rbGluZSB8fCB0b2stPmxldmVsID4gMCkgewogICAgICAgICAgICAgZ290byBuZXh0bGluZTsKKyAgICAgICAgfQogICAgICAgICAqcF9zdGFydCA9IHRvay0+c3RhcnQ7CiAgICAgICAgICpwX2VuZCA9IHRvay0+Y3VyIC0gMTsgLyogTGVhdmUgJ1xuJyBvdXQgb2YgdGhlIHN0cmluZyAqLwogICAgICAgICB0b2stPmNvbnRfbGluZSA9IDA7CkBAIC0xNTcwLDExICsxNjE1LDEzIEBACiAgICAgICAgICAgICAgICAgKnBfc3RhcnQgPSB0b2stPnN0YXJ0OwogICAgICAgICAgICAgICAgICpwX2VuZCA9IHRvay0+Y3VyOwogICAgICAgICAgICAgICAgIHJldHVybiBFTExJUFNJUzsKLSAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICB0b2tfYmFja3VwKHRvaywgYyk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICB0b2tfYmFja3VwKHRvaywgJy4nKTsKLSAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIHRva19iYWNrdXAodG9rLCBjKTsKICAgICAgICAgfQogICAgICAgICAqcF9zdGFydCA9IHRvay0+c3RhcnQ7CkBAIC0xNTg3LDY0ICsxNjM0LDk0IEBACiAgICAgICAgIGlmIChjID09ICcwJykgewogICAgICAgICAgICAgLyogSGV4LCBvY3RhbCBvciBiaW5hcnkgLS0gbWF5YmUuICovCiAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7Ci0gICAgICAgICAgICBpZiAoYyA9PSAnLicpCi0gICAgICAgICAgICAgICAgZ290byBmcmFjdGlvbjsKLSAgICAgICAgICAgIGlmIChjID09ICdqJyB8fCBjID09ICdKJykKLSAgICAgICAgICAgICAgICBnb3RvIGltYWdpbmFyeTsKICAgICAgICAgICAgIGlmIChjID09ICd4JyB8fCBjID09ICdYJykgewotCiAgICAgICAgICAgICAgICAgLyogSGV4ICovCiAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwotICAgICAgICAgICAgICAgIGlmICghaXN4ZGlnaXQoYykpIHsKLSAgICAgICAgICAgICAgICAgICAgdG9rLT5kb25lID0gRV9UT0tFTjsKLSAgICAgICAgICAgICAgICAgICAgdG9rX2JhY2t1cCh0b2ssIGMpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKLSAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7Ci0gICAgICAgICAgICAgICAgfSB3aGlsZSAoaXN4ZGlnaXQoYykpOworICAgICAgICAgICAgICAgICAgICBpZiAoYyA9PSAnXycpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoIWlzeGRpZ2l0KGMpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0b2stPmRvbmUgPSBFX1RPS0VOOworICAgICAgICAgICAgICAgICAgICAgICAgdG9rX2JhY2t1cCh0b2ssIGMpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOworICAgICAgICAgICAgICAgICAgICB9IHdoaWxlIChpc3hkaWdpdChjKSk7CisgICAgICAgICAgICAgICAgfSB3aGlsZSAoYyA9PSAnXycpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAnbycgfHwgYyA9PSAnTycpIHsKICAgICAgICAgICAgICAgICAvKiBPY3RhbCAqLwogICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKLSAgICAgICAgICAgICAgICBpZiAoYyA8ICcwJyB8fCBjID49ICc4JykgewotICAgICAgICAgICAgICAgICAgICB0b2stPmRvbmUgPSBFX1RPS0VOOwotICAgICAgICAgICAgICAgICAgICB0b2tfYmFja3VwKHRvaywgYyk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOwotICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKLSAgICAgICAgICAgICAgICB9IHdoaWxlICgnMCcgPD0gYyAmJiBjIDwgJzgnKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gJ18nKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGMgPCAnMCcgfHwgYyA+PSAnOCcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvay0+ZG9uZSA9IEVfVE9LRU47CisgICAgICAgICAgICAgICAgICAgICAgICB0b2tfYmFja3VwKHRvaywgYyk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7CisgICAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKCcwJyA8PSBjICYmIGMgPCAnOCcpOworICAgICAgICAgICAgICAgIH0gd2hpbGUgKGMgPT0gJ18nKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJ2InIHx8IGMgPT0gJ0InKSB7CiAgICAgICAgICAgICAgICAgLyogQmluYXJ5ICovCiAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwotICAgICAgICAgICAgICAgIGlmIChjICE9ICcwJyAmJiBjICE9ICcxJykgewotICAgICAgICAgICAgICAgICAgICB0b2stPmRvbmUgPSBFX1RPS0VOOwotICAgICAgICAgICAgICAgICAgICB0b2tfYmFja3VwKHRvaywgYyk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOwotICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKLSAgICAgICAgICAgICAgICB9IHdoaWxlIChjID09ICcwJyB8fCBjID09ICcxJyk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjID09ICdfJykgeworICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChjICE9ICcwJyAmJiBjICE9ICcxJykgeworICAgICAgICAgICAgICAgICAgICAgICAgdG9rLT5kb25lID0gRV9UT0tFTjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRva19iYWNrdXAodG9rLCBjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKKyAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoYyA9PSAnMCcgfHwgYyA9PSAnMScpOworICAgICAgICAgICAgICAgIH0gd2hpbGUgKGMgPT0gJ18nKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIGludCBub256ZXJvID0gMDsKICAgICAgICAgICAgICAgICAvKiBtYXliZSBvbGQtc3R5bGUgb2N0YWw7IGMgaXMgZmlyc3QgY2hhciBvZiBpdCAqLwogICAgICAgICAgICAgICAgIC8qIGluIGFueSBjYXNlLCBhbGxvdyAnMCcgYXMgYSBsaXRlcmFsICovCi0gICAgICAgICAgICAgICAgd2hpbGUgKGMgPT0gJzAnKQotICAgICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKGlzZGlnaXQoYykpIHsKLSAgICAgICAgICAgICAgICAgICAgbm9uemVybyA9IDE7CisgICAgICAgICAgICAgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gJ18nKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzZGlnaXQoYykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2stPmRvbmUgPSBFX1RPS0VOOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva19iYWNrdXAodG9rLCBjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoYyAhPSAnMCcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGMgPT0gJy4nKQorICAgICAgICAgICAgICAgIGlmIChpc2RpZ2l0KGMpKSB7CisgICAgICAgICAgICAgICAgICAgIG5vbnplcm8gPSAxOworICAgICAgICAgICAgICAgICAgICBjID0gdG9rX2RlY2ltYWxfdGFpbCh0b2spOworICAgICAgICAgICAgICAgICAgICBpZiAoYyA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoYyA9PSAnLicpIHsKKyAgICAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwogICAgICAgICAgICAgICAgICAgICBnb3RvIGZyYWN0aW9uOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJ2UnIHx8IGMgPT0gJ0UnKQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGlmIChjID09ICdlJyB8fCBjID09ICdFJykgewogICAgICAgICAgICAgICAgICAgICBnb3RvIGV4cG9uZW50OwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJ2onIHx8IGMgPT0gJ0onKQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGlmIChjID09ICdqJyB8fCBjID09ICdKJykgewogICAgICAgICAgICAgICAgICAgICBnb3RvIGltYWdpbmFyeTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAobm9uemVybykgeworICAgICAgICAgICAgICAgICAgICAvKiBPbGQtc3R5bGUgb2N0YWw6IG5vdyBkaXNhbGxvd2VkLiAqLwogICAgICAgICAgICAgICAgICAgICB0b2stPmRvbmUgPSBFX1RPS0VOOwogICAgICAgICAgICAgICAgICAgICB0b2tfYmFja3VwKHRvaywgYyk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOwpAQCAtMTY1MywxNyArMTczMCwyMiBAQAogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgLyogRGVjaW1hbCAqLwotICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKLSAgICAgICAgICAgIH0gd2hpbGUgKGlzZGlnaXQoYykpOworICAgICAgICAgICAgYyA9IHRva19kZWNpbWFsX3RhaWwodG9rKTsKKyAgICAgICAgICAgIGlmIChjID09IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAvKiBBY2NlcHQgZmxvYXRpbmcgcG9pbnQgbnVtYmVycy4gKi8KICAgICAgICAgICAgICAgICBpZiAoYyA9PSAnLicpIHsKKyAgICAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwogICAgICAgICBmcmFjdGlvbjoKICAgICAgICAgICAgICAgICAgICAgLyogRnJhY3Rpb24gKi8KLSAgICAgICAgICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwotICAgICAgICAgICAgICAgICAgICB9IHdoaWxlIChpc2RpZ2l0KGMpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzZGlnaXQoYykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfZGVjaW1hbF90YWlsKHRvayk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKGMgPT0gJ2UnIHx8IGMgPT0gJ0UnKSB7CiAgICAgICAgICAgICAgICAgICAgIGludCBlOwpAQCAtMTY4NSwxNCArMTc2NywxNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgKnBfZW5kID0gdG9rLT5jdXI7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVNQkVSOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKLSAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoaXNkaWdpdChjKSk7CisgICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfZGVjaW1hbF90YWlsKHRvayk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChjID09ICdqJyB8fCBjID09ICdKJykKKyAgICAgICAgICAgICAgICBpZiAoYyA9PSAnaicgfHwgYyA9PSAnSicpIHsKICAgICAgICAgICAgICAgICAgICAgLyogSW1hZ2luYXJ5IHBhcnQgKi8KICAgICAgICAgaW1hZ2luYXJ5OgogICAgICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHRva19iYWNrdXAodG9rLCBjKTsKQEAgLTE3MTIsMjIgKzE3OTYsMjcgQEAKICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwogICAgICAgICBpZiAoYyA9PSBxdW90ZSkgewogICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwotICAgICAgICAgICAgaWYgKGMgPT0gcXVvdGUpCisgICAgICAgICAgICBpZiAoYyA9PSBxdW90ZSkgewogICAgICAgICAgICAgICAgIHF1b3RlX3NpemUgPSAzOwotICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgZW5kX3F1b3RlX3NpemUgPSAxOyAgICAgLyogZW1wdHkgc3RyaW5nIGZvdW5kICovCisgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGMgIT0gcXVvdGUpCisgICAgICAgIGlmIChjICE9IHF1b3RlKSB7CiAgICAgICAgICAgICB0b2tfYmFja3VwKHRvaywgYyk7CisgICAgICAgIH0KIAogICAgICAgICAvKiBHZXQgcmVzdCBvZiBzdHJpbmcgKi8KICAgICAgICAgd2hpbGUgKGVuZF9xdW90ZV9zaXplICE9IHF1b3RlX3NpemUpIHsKICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKICAgICAgICAgICAgIGlmIChjID09IEVPRikgewotICAgICAgICAgICAgICAgIGlmIChxdW90ZV9zaXplID09IDMpCisgICAgICAgICAgICAgICAgaWYgKHF1b3RlX3NpemUgPT0gMykgewogICAgICAgICAgICAgICAgICAgICB0b2stPmRvbmUgPSBFX0VPRlM7Ci0gICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgdG9rLT5kb25lID0gRV9FT0xTOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB0b2stPmN1ciA9IHRvay0+aW5wOwogICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOwogICAgICAgICAgICAgfQpAQCAtMTczNiwxMiArMTgyNSwxNCBAQAogICAgICAgICAgICAgICAgIHRvay0+Y3VyID0gdG9rLT5pbnA7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoYyA9PSBxdW90ZSkKKyAgICAgICAgICAgIGlmIChjID09IHF1b3RlKSB7CiAgICAgICAgICAgICAgICAgZW5kX3F1b3RlX3NpemUgKz0gMTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIGVuZF9xdW90ZV9zaXplID0gMDsKLSAgICAgICAgICAgICAgICBpZiAoYyA9PSAnXFwnKQotICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsgIC8qIHNraXAgZXNjYXBlZCBjaGFyICovCisgICAgICAgICAgICAgICAgaWYgKGMgPT0gJ1xcJykgeworICAgICAgICAgICAgICAgICAgICB0b2tfbmV4dGModG9rKTsgIC8qIHNraXAgZXNjYXBlZCBjaGFyICovCisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTE3NzEsNyArMTg2Miw4IEBACiAgICAgICAgICAgICBpbnQgdG9rZW4zID0gUHlUb2tlbl9UaHJlZUNoYXJzKGMsIGMyLCBjMyk7CiAgICAgICAgICAgICBpZiAodG9rZW4zICE9IE9QKSB7CiAgICAgICAgICAgICAgICAgdG9rZW4gPSB0b2tlbjM7Ci0gICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgdG9rX2JhY2t1cCh0b2ssIGMzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICpwX3N0YXJ0ID0gdG9rLT5zdGFydDsKZGlmZiAtLWdpdCBhL1Byb2dyYW1zL19mcmVlemVfaW1wb3J0bGliLmMgYi9Qcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYi5jCmluZGV4IDA3OTM5ODQuLjEwNjk5NjYgMTAwNjQ0Ci0tLSBhL1Byb2dyYW1zL19mcmVlemVfaW1wb3J0bGliLmMKKysrIGIvUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYwpAQCAtNTgsNyArNTgsNyBAQAogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImNhbm5vdCBmc3RhdCAnJXMnXG4iLCBpbnBhdGgpOwogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KLSAgICB0ZXh0X3NpemUgPSBzdGF0dXMuc3Rfc2l6ZTsKKyAgICB0ZXh0X3NpemUgPSAoc2l6ZV90KXN0YXR1cy5zdF9zaXplOwogICAgIHRleHQgPSAoY2hhciAqKSBtYWxsb2ModGV4dF9zaXplICsgMSk7CiAgICAgaWYgKHRleHQgPT0gTlVMTCkgewogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImNvdWxkIG5vdCBhbGxvY2F0ZSAlbGQgYnl0ZXNcbiIsIChsb25nKSB0ZXh0X3NpemUpOwpkaWZmIC0tZ2l0IGEvUHJvZ3JhbXMvX3Rlc3RlbWJlZC5jIGIvUHJvZ3JhbXMvX3Rlc3RlbWJlZC5jCmluZGV4IGFiNmE4YzcuLjM5NjgzOTkgMTAwNjQ0Ci0tLSBhL1Byb2dyYW1zL190ZXN0ZW1iZWQuYworKysgYi9Qcm9ncmFtcy9fdGVzdGVtYmVkLmMKQEAgLTQxLDcgKzQxLDcgQEAKICNlbmRpZgogICAgIGludCBpLCBqOwogCi0gICAgZm9yIChpPTA7IGk8MzsgaSsrKSB7CisgICAgZm9yIChpPTA7IGk8MTU7IGkrKykgewogICAgICAgICBwcmludGYoIi0tLSBQYXNzICVkIC0tLVxuIiwgaSk7CiAgICAgICAgIF90ZXN0ZW1iZWRfUHlfSW5pdGlhbGl6ZSgpOwogICAgICAgICBtYWluc3RhdGUgPSBQeVRocmVhZFN0YXRlX0dldCgpOwpkaWZmIC0tZ2l0IGEvUHJvZ3JhbXMvcHl0aG9uLmMgYi9Qcm9ncmFtcy9weXRob24uYwppbmRleCAzN2IxMGI4Li5hN2FmYmM3IDEwMDY0NAotLS0gYS9Qcm9ncmFtcy9weXRob24uYworKysgYi9Qcm9ncmFtcy9weXRob24uYwpAQCAtMjQsNiArMjQsOSBAQAogICAgIGludCBpLCByZXM7CiAgICAgY2hhciAqb2xkbG9jOwogCisgICAgLyogRm9yY2UgbWFsbG9jKCkgYWxsb2NhdG9yIHRvIGJvb3RzdHJhcCBQeXRob24gKi8KKyAgICAodm9pZClfUHlNZW1fU2V0dXBBbGxvY2F0b3JzKCJtYWxsb2MiKTsKKwogICAgIGFyZ3ZfY29weSA9ICh3Y2hhcl90ICoqKVB5TWVtX1Jhd01hbGxvYyhzaXplb2Yod2NoYXJfdCopICogKGFyZ2MrMSkpOwogICAgIGFyZ3ZfY29weTIgPSAod2NoYXJfdCAqKilQeU1lbV9SYXdNYWxsb2Moc2l6ZW9mKHdjaGFyX3QqKSAqIChhcmdjKzEpKTsKICAgICBpZiAoIWFyZ3ZfY29weSB8fCAhYXJndl9jb3B5MikgewpAQCAtNjIsNyArNjUsMTMgQEAKIAogICAgIHNldGxvY2FsZShMQ19BTEwsIG9sZGxvYyk7CiAgICAgUHlNZW1fUmF3RnJlZShvbGRsb2MpOworCiAgICAgcmVzID0gUHlfTWFpbihhcmdjLCBhcmd2X2NvcHkpOworCisgICAgLyogRm9yY2UgYWdhaW4gbWFsbG9jKCkgYWxsb2NhdG9yIHRvIHJlbGVhc2UgbWVtb3J5IGJsb2NrcyBhbGxvY2F0ZWQKKyAgICAgICBiZWZvcmUgUHlfTWFpbigpICovCisgICAgKHZvaWQpX1B5TWVtX1NldHVwQWxsb2NhdG9ycygibWFsbG9jIik7CisKICAgICBmb3IgKGkgPSAwOyBpIDwgYXJnYzsgaSsrKSB7CiAgICAgICAgIFB5TWVtX1Jhd0ZyZWUoYXJndl9jb3B5MltpXSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL1B5dGhvbi1hc3QuYyBiL1B5dGhvbi9QeXRob24tYXN0LmMKaW5kZXggYWQ1M2JhMzUuLmUwNjA3YmEgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9QeXRob24tYXN0LmMKKysrIGIvUHl0aG9uL1B5dGhvbi1hc3QuYwpAQCAtODYsNiArODYsMTUgQEAKICAgICAib3AiLAogICAgICJ2YWx1ZSIsCiB9Oworc3RhdGljIFB5VHlwZU9iamVjdCAqQW5uQXNzaWduX3R5cGU7CitfUHlfSURFTlRJRklFUihhbm5vdGF0aW9uKTsKK19QeV9JREVOVElGSUVSKHNpbXBsZSk7CitzdGF0aWMgY2hhciAqQW5uQXNzaWduX2ZpZWxkc1tdPXsKKyAgICAidGFyZ2V0IiwKKyAgICAiYW5ub3RhdGlvbiIsCisgICAgInZhbHVlIiwKKyAgICAic2ltcGxlIiwKK307CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpGb3JfdHlwZTsKIF9QeV9JREVOVElGSUVSKGl0ZXIpOwogX1B5X0lERU5USUZJRVIob3JlbHNlKTsKQEAgLTI4NSw2ICsyOTQsMTggQEAKIHN0YXRpYyBjaGFyICpTdHJfZmllbGRzW109ewogICAgICJzIiwKIH07CitzdGF0aWMgUHlUeXBlT2JqZWN0ICpGb3JtYXR0ZWRWYWx1ZV90eXBlOworX1B5X0lERU5USUZJRVIoY29udmVyc2lvbik7CitfUHlfSURFTlRJRklFUihmb3JtYXRfc3BlYyk7CitzdGF0aWMgY2hhciAqRm9ybWF0dGVkVmFsdWVfZmllbGRzW109eworICAgICJ2YWx1ZSIsCisgICAgImNvbnZlcnNpb24iLAorICAgICJmb3JtYXRfc3BlYyIsCit9Oworc3RhdGljIFB5VHlwZU9iamVjdCAqSm9pbmVkU3RyX3R5cGU7CitzdGF0aWMgY2hhciAqSm9pbmVkU3RyX2ZpZWxkc1tdPXsKKyAgICAidmFsdWVzIiwKK307CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpCeXRlc190eXBlOwogc3RhdGljIGNoYXIgKkJ5dGVzX2ZpZWxkc1tdPXsKICAgICAicyIsCkBAIC0yOTQsNiArMzE1LDEwIEBACiAgICAgInZhbHVlIiwKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpFbGxpcHNpc190eXBlOworc3RhdGljIFB5VHlwZU9iamVjdCAqQ29uc3RhbnRfdHlwZTsKK3N0YXRpYyBjaGFyICpDb25zdGFudF9maWVsZHNbXT17CisgICAgInZhbHVlIiwKK307CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpBdHRyaWJ1dGVfdHlwZTsKIF9QeV9JREVOVElGSUVSKGF0dHIpOwogX1B5X0lERU5USUZJRVIoY3R4KTsKQEAgLTQxMCwxMCArNDM1LDEyIEBACiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpjb21wcmVoZW5zaW9uX3R5cGU7CiBzdGF0aWMgUHlPYmplY3QqIGFzdDJvYmpfY29tcHJlaGVuc2lvbih2b2lkKik7CiBfUHlfSURFTlRJRklFUihpZnMpOworX1B5X0lERU5USUZJRVIoaXNfYXN5bmMpOwogc3RhdGljIGNoYXIgKmNvbXByZWhlbnNpb25fZmllbGRzW109ewogICAgICJ0YXJnZXQiLAogICAgICJpdGVyIiwKICAgICAiaWZzIiwKKyAgICAiaXNfYXN5bmMiLAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKmV4Y2VwdGhhbmRsZXJfdHlwZTsKIHN0YXRpYyBjaGFyICpleGNlcHRoYW5kbGVyX2F0dHJpYnV0ZXNbXSA9IHsKQEAgLTQ1MCw3ICs0NzcsNiBAQAogICAgICJjb2xfb2Zmc2V0IiwKIH07CiBfUHlfSURFTlRJRklFUihhcmcpOwotX1B5X0lERU5USUZJRVIoYW5ub3RhdGlvbik7CiBzdGF0aWMgY2hhciAqYXJnX2ZpZWxkc1tdPXsKICAgICAiYXJnIiwKICAgICAiYW5ub3RhdGlvbiIsCkBAIC02OTcsNiArNzIzLDcgQEAKICAgICByZXR1cm4gKFB5T2JqZWN0KilvOwogfQogI2RlZmluZSBhc3Qyb2JqX3NpbmdsZXRvbiBhc3Qyb2JqX29iamVjdAorI2RlZmluZSBhc3Qyb2JqX2NvbnN0YW50IGFzdDJvYmpfb2JqZWN0CiAjZGVmaW5lIGFzdDJvYmpfaWRlbnRpZmllciBhc3Qyb2JqX29iamVjdAogI2RlZmluZSBhc3Qyb2JqX3N0cmluZyBhc3Qyb2JqX29iamVjdAogI2RlZmluZSBhc3Qyb2JqX2J5dGVzIGFzdDJvYmpfb2JqZWN0CkBAIC03MzQsNiArNzYxLDE5IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQgb2JqMmFzdF9jb25zdGFudChQeU9iamVjdCogb2JqLCBQeU9iamVjdCoqIG91dCwgUHlBcmVuYSogYXJlbmEpCit7CisgICAgaWYgKG9iaikgeworICAgICAgICBpZiAoUHlBcmVuYV9BZGRQeU9iamVjdChhcmVuYSwgb2JqKSA8IDApIHsKKyAgICAgICAgICAgICpvdXQgPSBOVUxMOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIFB5X0lOQ1JFRihvYmopOworICAgIH0KKyAgICAqb3V0ID0gb2JqOworICAgIHJldHVybiAwOworfQorCiBzdGF0aWMgaW50IG9iajJhc3RfaWRlbnRpZmllcihQeU9iamVjdCogb2JqLCBQeU9iamVjdCoqIG91dCwgUHlBcmVuYSogYXJlbmEpCiB7CiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChvYmopICYmIG9iaiAhPSBQeV9Ob25lKSB7CkBAIC03NjksNyArODA5LDcgQEAKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQogCi0gICAgaSA9IChpbnQpUHlMb25nX0FzTG9uZyhvYmopOworICAgIGkgPSBfUHlMb25nX0FzSW50KG9iaik7CiAgICAgaWYgKGkgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIDE7CiAgICAgKm91dCA9IGk7CkBAIC04NDMsNiArODgzLDggQEAKICAgICBpZiAoIUFzc2lnbl90eXBlKSByZXR1cm4gMDsKICAgICBBdWdBc3NpZ25fdHlwZSA9IG1ha2VfdHlwZSgiQXVnQXNzaWduIiwgc3RtdF90eXBlLCBBdWdBc3NpZ25fZmllbGRzLCAzKTsKICAgICBpZiAoIUF1Z0Fzc2lnbl90eXBlKSByZXR1cm4gMDsKKyAgICBBbm5Bc3NpZ25fdHlwZSA9IG1ha2VfdHlwZSgiQW5uQXNzaWduIiwgc3RtdF90eXBlLCBBbm5Bc3NpZ25fZmllbGRzLCA0KTsKKyAgICBpZiAoIUFubkFzc2lnbl90eXBlKSByZXR1cm4gMDsKICAgICBGb3JfdHlwZSA9IG1ha2VfdHlwZSgiRm9yIiwgc3RtdF90eXBlLCBGb3JfZmllbGRzLCA0KTsKICAgICBpZiAoIUZvcl90eXBlKSByZXR1cm4gMDsKICAgICBBc3luY0Zvcl90eXBlID0gbWFrZV90eXBlKCJBc3luY0ZvciIsIHN0bXRfdHlwZSwgQXN5bmNGb3JfZmllbGRzLCA0KTsKQEAgLTkxNyw2ICs5NTksMTEgQEAKICAgICBpZiAoIU51bV90eXBlKSByZXR1cm4gMDsKICAgICBTdHJfdHlwZSA9IG1ha2VfdHlwZSgiU3RyIiwgZXhwcl90eXBlLCBTdHJfZmllbGRzLCAxKTsKICAgICBpZiAoIVN0cl90eXBlKSByZXR1cm4gMDsKKyAgICBGb3JtYXR0ZWRWYWx1ZV90eXBlID0gbWFrZV90eXBlKCJGb3JtYXR0ZWRWYWx1ZSIsIGV4cHJfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdHRlZFZhbHVlX2ZpZWxkcywgMyk7CisgICAgaWYgKCFGb3JtYXR0ZWRWYWx1ZV90eXBlKSByZXR1cm4gMDsKKyAgICBKb2luZWRTdHJfdHlwZSA9IG1ha2VfdHlwZSgiSm9pbmVkU3RyIiwgZXhwcl90eXBlLCBKb2luZWRTdHJfZmllbGRzLCAxKTsKKyAgICBpZiAoIUpvaW5lZFN0cl90eXBlKSByZXR1cm4gMDsKICAgICBCeXRlc190eXBlID0gbWFrZV90eXBlKCJCeXRlcyIsIGV4cHJfdHlwZSwgQnl0ZXNfZmllbGRzLCAxKTsKICAgICBpZiAoIUJ5dGVzX3R5cGUpIHJldHVybiAwOwogICAgIE5hbWVDb25zdGFudF90eXBlID0gbWFrZV90eXBlKCJOYW1lQ29uc3RhbnQiLCBleHByX3R5cGUsCkBAIC05MjQsNiArOTcxLDggQEAKICAgICBpZiAoIU5hbWVDb25zdGFudF90eXBlKSByZXR1cm4gMDsKICAgICBFbGxpcHNpc190eXBlID0gbWFrZV90eXBlKCJFbGxpcHNpcyIsIGV4cHJfdHlwZSwgTlVMTCwgMCk7CiAgICAgaWYgKCFFbGxpcHNpc190eXBlKSByZXR1cm4gMDsKKyAgICBDb25zdGFudF90eXBlID0gbWFrZV90eXBlKCJDb25zdGFudCIsIGV4cHJfdHlwZSwgQ29uc3RhbnRfZmllbGRzLCAxKTsKKyAgICBpZiAoIUNvbnN0YW50X3R5cGUpIHJldHVybiAwOwogICAgIEF0dHJpYnV0ZV90eXBlID0gbWFrZV90eXBlKCJBdHRyaWJ1dGUiLCBleHByX3R5cGUsIEF0dHJpYnV0ZV9maWVsZHMsIDMpOwogICAgIGlmICghQXR0cmlidXRlX3R5cGUpIHJldHVybiAwOwogICAgIFN1YnNjcmlwdF90eXBlID0gbWFrZV90eXBlKCJTdWJzY3JpcHQiLCBleHByX3R5cGUsIFN1YnNjcmlwdF9maWVsZHMsIDMpOwpAQCAtMTEwMSw3ICsxMTUwLDcgQEAKICAgICBOb3RJbl9zaW5nbGV0b24gPSBQeVR5cGVfR2VuZXJpY05ldyhOb3RJbl90eXBlLCBOVUxMLCBOVUxMKTsKICAgICBpZiAoIU5vdEluX3NpbmdsZXRvbikgcmV0dXJuIDA7CiAgICAgY29tcHJlaGVuc2lvbl90eXBlID0gbWFrZV90eXBlKCJjb21wcmVoZW5zaW9uIiwgJkFTVF90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wcmVoZW5zaW9uX2ZpZWxkcywgMyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXByZWhlbnNpb25fZmllbGRzLCA0KTsKICAgICBpZiAoIWNvbXByZWhlbnNpb25fdHlwZSkgcmV0dXJuIDA7CiAgICAgaWYgKCFhZGRfYXR0cmlidXRlcyhjb21wcmVoZW5zaW9uX3R5cGUsIE5VTEwsIDApKSByZXR1cm4gMDsKICAgICBleGNlcHRoYW5kbGVyX3R5cGUgPSBtYWtlX3R5cGUoImV4Y2VwdGhhbmRsZXIiLCAmQVNUX3R5cGUsIE5VTEwsIDApOwpAQCAtMTM3MCw2ICsxNDE5LDM0IEBACiB9CiAKIHN0bXRfdHkKK0FubkFzc2lnbihleHByX3R5IHRhcmdldCwgZXhwcl90eSBhbm5vdGF0aW9uLCBleHByX3R5IHZhbHVlLCBpbnQgc2ltcGxlLCBpbnQKKyAgICAgICAgICBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSkKK3sKKyAgICBzdG10X3R5IHA7CisgICAgaWYgKCF0YXJnZXQpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiZmllbGQgdGFyZ2V0IGlzIHJlcXVpcmVkIGZvciBBbm5Bc3NpZ24iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmICghYW5ub3RhdGlvbikgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJmaWVsZCBhbm5vdGF0aW9uIGlzIHJlcXVpcmVkIGZvciBBbm5Bc3NpZ24iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHAgPSAoc3RtdF90eSlQeUFyZW5hX01hbGxvYyhhcmVuYSwgc2l6ZW9mKCpwKSk7CisgICAgaWYgKCFwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBwLT5raW5kID0gQW5uQXNzaWduX2tpbmQ7CisgICAgcC0+di5Bbm5Bc3NpZ24udGFyZ2V0ID0gdGFyZ2V0OworICAgIHAtPnYuQW5uQXNzaWduLmFubm90YXRpb24gPSBhbm5vdGF0aW9uOworICAgIHAtPnYuQW5uQXNzaWduLnZhbHVlID0gdmFsdWU7CisgICAgcC0+di5Bbm5Bc3NpZ24uc2ltcGxlID0gc2ltcGxlOworICAgIHAtPmxpbmVubyA9IGxpbmVubzsKKyAgICBwLT5jb2xfb2Zmc2V0ID0gY29sX29mZnNldDsKKyAgICByZXR1cm4gcDsKK30KKworc3RtdF90eQogRm9yKGV4cHJfdHkgdGFyZ2V0LCBleHByX3R5IGl0ZXIsIGFzZGxfc2VxICogYm9keSwgYXNkbF9zZXEgKiBvcmVsc2UsIGludAogICAgIGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKQogewpAQCAtMjA2Myw2ICsyMTQwLDQyIEBACiB9CiAKIGV4cHJfdHkKK0Zvcm1hdHRlZFZhbHVlKGV4cHJfdHkgdmFsdWUsIGludCBjb252ZXJzaW9uLCBleHByX3R5IGZvcm1hdF9zcGVjLCBpbnQgbGluZW5vLAorICAgICAgICAgICAgICAgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKQoreworICAgIGV4cHJfdHkgcDsKKyAgICBpZiAoIXZhbHVlKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImZpZWxkIHZhbHVlIGlzIHJlcXVpcmVkIGZvciBGb3JtYXR0ZWRWYWx1ZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcCA9IChleHByX3R5KVB5QXJlbmFfTWFsbG9jKGFyZW5hLCBzaXplb2YoKnApKTsKKyAgICBpZiAoIXApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHAtPmtpbmQgPSBGb3JtYXR0ZWRWYWx1ZV9raW5kOworICAgIHAtPnYuRm9ybWF0dGVkVmFsdWUudmFsdWUgPSB2YWx1ZTsKKyAgICBwLT52LkZvcm1hdHRlZFZhbHVlLmNvbnZlcnNpb24gPSBjb252ZXJzaW9uOworICAgIHAtPnYuRm9ybWF0dGVkVmFsdWUuZm9ybWF0X3NwZWMgPSBmb3JtYXRfc3BlYzsKKyAgICBwLT5saW5lbm8gPSBsaW5lbm87CisgICAgcC0+Y29sX29mZnNldCA9IGNvbF9vZmZzZXQ7CisgICAgcmV0dXJuIHA7Cit9CisKK2V4cHJfdHkKK0pvaW5lZFN0cihhc2RsX3NlcSAqIHZhbHVlcywgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKQoreworICAgIGV4cHJfdHkgcDsKKyAgICBwID0gKGV4cHJfdHkpUHlBcmVuYV9NYWxsb2MoYXJlbmEsIHNpemVvZigqcCkpOworICAgIGlmICghcCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcC0+a2luZCA9IEpvaW5lZFN0cl9raW5kOworICAgIHAtPnYuSm9pbmVkU3RyLnZhbHVlcyA9IHZhbHVlczsKKyAgICBwLT5saW5lbm8gPSBsaW5lbm87CisgICAgcC0+Y29sX29mZnNldCA9IGNvbF9vZmZzZXQ7CisgICAgcmV0dXJuIHA7Cit9CisKK2V4cHJfdHkKIEJ5dGVzKGJ5dGVzIHMsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSkKIHsKICAgICBleHByX3R5IHA7CkBAIC0yMTE0LDYgKzIyMjcsMjUgQEAKIH0KIAogZXhwcl90eQorQ29uc3RhbnQoY29uc3RhbnQgdmFsdWUsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSkKK3sKKyAgICBleHByX3R5IHA7CisgICAgaWYgKCF2YWx1ZSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJmaWVsZCB2YWx1ZSBpcyByZXF1aXJlZCBmb3IgQ29uc3RhbnQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHAgPSAoZXhwcl90eSlQeUFyZW5hX01hbGxvYyhhcmVuYSwgc2l6ZW9mKCpwKSk7CisgICAgaWYgKCFwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBwLT5raW5kID0gQ29uc3RhbnRfa2luZDsKKyAgICBwLT52LkNvbnN0YW50LnZhbHVlID0gdmFsdWU7CisgICAgcC0+bGluZW5vID0gbGluZW5vOworICAgIHAtPmNvbF9vZmZzZXQgPSBjb2xfb2Zmc2V0OworICAgIHJldHVybiBwOworfQorCitleHByX3R5CiBBdHRyaWJ1dGUoZXhwcl90eSB2YWx1ZSwgaWRlbnRpZmllciBhdHRyLCBleHByX2NvbnRleHRfdHkgY3R4LCBpbnQgbGluZW5vLCBpbnQKICAgICAgICAgICBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSkKIHsKQEAgLTIzMTUsNyArMjQ0Nyw4IEBACiB9CiAKIGNvbXByZWhlbnNpb25fdHkKLWNvbXByZWhlbnNpb24oZXhwcl90eSB0YXJnZXQsIGV4cHJfdHkgaXRlciwgYXNkbF9zZXEgKiBpZnMsIFB5QXJlbmEgKmFyZW5hKQorY29tcHJlaGVuc2lvbihleHByX3R5IHRhcmdldCwgZXhwcl90eSBpdGVyLCBhc2RsX3NlcSAqIGlmcywgaW50IGlzX2FzeW5jLAorICAgICAgICAgICAgICBQeUFyZW5hICphcmVuYSkKIHsKICAgICBjb21wcmVoZW5zaW9uX3R5IHA7CiAgICAgaWYgKCF0YXJnZXQpIHsKQEAgLTIzMzQsNiArMjQ2Nyw3IEBACiAgICAgcC0+dGFyZ2V0ID0gdGFyZ2V0OwogICAgIHAtPml0ZXIgPSBpdGVyOwogICAgIHAtPmlmcyA9IGlmczsKKyAgICBwLT5pc19hc3luYyA9IGlzX2FzeW5jOwogICAgIHJldHVybiBwOwogfQogCkBAIC0yNjQ4LDYgKzI3ODIsMzAgQEAKICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEFubkFzc2lnbl9raW5kOgorICAgICAgICByZXN1bHQgPSBQeVR5cGVfR2VuZXJpY05ldyhBbm5Bc3NpZ25fdHlwZSwgTlVMTCwgTlVMTCk7CisgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKKyAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5Bbm5Bc3NpZ24udGFyZ2V0KTsKKyAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdGFyZ2V0LCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5Bbm5Bc3NpZ24uYW5ub3RhdGlvbik7CisgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOworICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2Fubm90YXRpb24sIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkFubkFzc2lnbi52YWx1ZSk7CisgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOworICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3ZhbHVlLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2ludChvLT52LkFubkFzc2lnbi5zaW1wbGUpOworICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9zaW1wbGUsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICBicmVhazsKICAgICBjYXNlIEZvcl9raW5kOgogICAgICAgICByZXN1bHQgPSBQeVR5cGVfR2VuZXJpY05ldyhGb3JfdHlwZSwgTlVMTCwgTlVMTCk7CiAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKQEAgLTMxNjQsNiArMzMyMiwzNCBAQAogICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgRm9ybWF0dGVkVmFsdWVfa2luZDoKKyAgICAgICAgcmVzdWx0ID0gUHlUeXBlX0dlbmVyaWNOZXcoRm9ybWF0dGVkVmFsdWVfdHlwZSwgTlVMTCwgTlVMTCk7CisgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKKyAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5Gb3JtYXR0ZWRWYWx1ZS52YWx1ZSk7CisgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOworICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3ZhbHVlLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2ludChvLT52LkZvcm1hdHRlZFZhbHVlLmNvbnZlcnNpb24pOworICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9jb252ZXJzaW9uLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5Gb3JtYXR0ZWRWYWx1ZS5mb3JtYXRfc3BlYyk7CisgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOworICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2Zvcm1hdF9zcGVjLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBKb2luZWRTdHJfa2luZDoKKyAgICAgICAgcmVzdWx0ID0gUHlUeXBlX0dlbmVyaWNOZXcoSm9pbmVkU3RyX3R5cGUsIE5VTEwsIE5VTEwpOworICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CisgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuSm9pbmVkU3RyLnZhbHVlcywgYXN0Mm9ial9leHByKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdmFsdWVzLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBCeXRlc19raW5kOgogICAgICAgICByZXN1bHQgPSBQeVR5cGVfR2VuZXJpY05ldyhCeXRlc190eXBlLCBOVUxMLCBOVUxMKTsKICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwpAQCAtMzE4Niw2ICszMzcyLDE1IEBACiAgICAgICAgIHJlc3VsdCA9IFB5VHlwZV9HZW5lcmljTmV3KEVsbGlwc2lzX3R5cGUsIE5VTEwsIE5VTEwpOwogICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ29uc3RhbnRfa2luZDoKKyAgICAgICAgcmVzdWx0ID0gUHlUeXBlX0dlbmVyaWNOZXcoQ29uc3RhbnRfdHlwZSwgTlVMTCwgTlVMTCk7CisgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKKyAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2NvbnN0YW50KG8tPnYuQ29uc3RhbnQudmFsdWUpOworICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF92YWx1ZSwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQXR0cmlidXRlX2tpbmQ6CiAgICAgICAgIHJlc3VsdCA9IFB5VHlwZV9HZW5lcmljTmV3KEF0dHJpYnV0ZV90eXBlLCBOVUxMLCBOVUxMKTsKICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwpAQCAtMzUzMSw2ICszNzI2LDExIEBACiAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9pZnMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICB2YWx1ZSA9IGFzdDJvYmpfaW50KG8tPmlzX2FzeW5jKTsKKyAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKKyAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2lzX2FzeW5jLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgIGdvdG8gZmFpbGVkOworICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIGZhaWxlZDoKICAgICBQeV9YREVDUkVGKHZhbHVlKTsKQEAgLTQ0NTgsNiArNDY1OCw2NCBAQAogICAgICAgICBpZiAoKm91dCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorICAgIGlzaW5zdGFuY2UgPSBQeU9iamVjdF9Jc0luc3RhbmNlKG9iaiwgKFB5T2JqZWN0KilBbm5Bc3NpZ25fdHlwZSk7CisgICAgaWYgKGlzaW5zdGFuY2UgPT0gLTEpIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGlmIChpc2luc3RhbmNlKSB7CisgICAgICAgIGV4cHJfdHkgdGFyZ2V0OworICAgICAgICBleHByX3R5IGFubm90YXRpb247CisgICAgICAgIGV4cHJfdHkgdmFsdWU7CisgICAgICAgIGludCBzaW1wbGU7CisKKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF90YXJnZXQpKSB7CisgICAgICAgICAgICBpbnQgcmVzOworICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3RhcmdldCk7CisgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnRhcmdldCwgYXJlbmEpOworICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIFB5X0NMRUFSKHRtcCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJ0YXJnZXRcIiBtaXNzaW5nIGZyb20gQW5uQXNzaWduIik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2Fubm90YXRpb24pKSB7CisgICAgICAgICAgICBpbnQgcmVzOworICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2Fubm90YXRpb24pOworICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZhbm5vdGF0aW9uLCBhcmVuYSk7CisgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgUHlfQ0xFQVIodG1wKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImFubm90YXRpb25cIiBtaXNzaW5nIGZyb20gQW5uQXNzaWduIik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZXhpc3RzX25vdF9ub25lKG9iaiwgJlB5SWRfdmFsdWUpKSB7CisgICAgICAgICAgICBpbnQgcmVzOworICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3ZhbHVlKTsKKyAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmdmFsdWUsIGFyZW5hKTsKKyAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICBQeV9DTEVBUih0bXApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdmFsdWUgPSBOVUxMOworICAgICAgICB9CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfc2ltcGxlKSkgeworICAgICAgICAgICAgaW50IHJlczsKKyAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9zaW1wbGUpOworICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfaW50KHRtcCwgJnNpbXBsZSwgYXJlbmEpOworICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIFB5X0NMRUFSKHRtcCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJzaW1wbGVcIiBtaXNzaW5nIGZyb20gQW5uQXNzaWduIik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgICAgICAqb3V0ID0gQW5uQXNzaWduKHRhcmdldCwgYW5ub3RhdGlvbiwgdmFsdWUsIHNpbXBsZSwgbGluZW5vLCBjb2xfb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGFyZW5hKTsKKyAgICAgICAgaWYgKCpvdXQgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICBpc2luc3RhbmNlID0gUHlPYmplY3RfSXNJbnN0YW5jZShvYmosIChQeU9iamVjdCopRm9yX3R5cGUpOwogICAgIGlmIChpc2luc3RhbmNlID09IC0xKSB7CiAgICAgICAgIHJldHVybiAxOwpAQCAtNjIwNSw2ICs2NDYzLDkwIEBACiAgICAgICAgIGlmICgqb3V0ID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CisgICAgaXNpbnN0YW5jZSA9IFB5T2JqZWN0X0lzSW5zdGFuY2Uob2JqLCAoUHlPYmplY3QqKUZvcm1hdHRlZFZhbHVlX3R5cGUpOworICAgIGlmIChpc2luc3RhbmNlID09IC0xKSB7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBpZiAoaXNpbnN0YW5jZSkgeworICAgICAgICBleHByX3R5IHZhbHVlOworICAgICAgICBpbnQgY29udmVyc2lvbjsKKyAgICAgICAgZXhwcl90eSBmb3JtYXRfc3BlYzsKKworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3ZhbHVlKSkgeworICAgICAgICAgICAgaW50IHJlczsKKyAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF92YWx1ZSk7CisgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnZhbHVlLCBhcmVuYSk7CisgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgUHlfQ0xFQVIodG1wKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcInZhbHVlXCIgbWlzc2luZyBmcm9tIEZvcm1hdHRlZFZhbHVlIik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZXhpc3RzX25vdF9ub25lKG9iaiwgJlB5SWRfY29udmVyc2lvbikpIHsKKyAgICAgICAgICAgIGludCByZXM7CisgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfY29udmVyc2lvbik7CisgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9pbnQodG1wLCAmY29udmVyc2lvbiwgYXJlbmEpOworICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIFB5X0NMRUFSKHRtcCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjb252ZXJzaW9uID0gMDsKKyAgICAgICAgfQorICAgICAgICBpZiAoZXhpc3RzX25vdF9ub25lKG9iaiwgJlB5SWRfZm9ybWF0X3NwZWMpKSB7CisgICAgICAgICAgICBpbnQgcmVzOworICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2Zvcm1hdF9zcGVjKTsKKyAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmZm9ybWF0X3NwZWMsIGFyZW5hKTsKKyAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICBQeV9DTEVBUih0bXApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZm9ybWF0X3NwZWMgPSBOVUxMOworICAgICAgICB9CisgICAgICAgICpvdXQgPSBGb3JtYXR0ZWRWYWx1ZSh2YWx1ZSwgY29udmVyc2lvbiwgZm9ybWF0X3NwZWMsIGxpbmVubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF9vZmZzZXQsIGFyZW5hKTsKKyAgICAgICAgaWYgKCpvdXQgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBpc2luc3RhbmNlID0gUHlPYmplY3RfSXNJbnN0YW5jZShvYmosIChQeU9iamVjdCopSm9pbmVkU3RyX3R5cGUpOworICAgIGlmIChpc2luc3RhbmNlID09IC0xKSB7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBpZiAoaXNpbnN0YW5jZSkgeworICAgICAgICBhc2RsX3NlcSogdmFsdWVzOworCisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdmFsdWVzKSkgeworICAgICAgICAgICAgaW50IHJlczsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOworICAgICAgICAgICAgUHlfc3NpemVfdCBpOworICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3ZhbHVlcyk7CisgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJKb2luZWRTdHIgZmllbGQgXCJ2YWx1ZXNcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxlbiA9IFB5TGlzdF9HRVRfU0laRSh0bXApOworICAgICAgICAgICAgdmFsdWVzID0gX1B5X2FzZGxfc2VxX25ldyhsZW4sIGFyZW5hKTsKKyAgICAgICAgICAgIGlmICh2YWx1ZXMgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgICAgICAgICBleHByX3R5IHZhbHVlOworICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcihQeUxpc3RfR0VUX0lURU0odG1wLCBpKSwgJnZhbHVlLCBhcmVuYSk7CisgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgICAgICBpZiAobGVuICE9IFB5TGlzdF9HRVRfU0laRSh0bXApKSB7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJKb2luZWRTdHIgZmllbGQgXCJ2YWx1ZXNcIiBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbiIpOworICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKHZhbHVlcywgaSwgdmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfQ0xFQVIodG1wKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcInZhbHVlc1wiIG1pc3NpbmcgZnJvbSBKb2luZWRTdHIiKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgICAgICpvdXQgPSBKb2luZWRTdHIodmFsdWVzLCBsaW5lbm8sIGNvbF9vZmZzZXQsIGFyZW5hKTsKKyAgICAgICAgaWYgKCpvdXQgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICBpc2luc3RhbmNlID0gUHlPYmplY3RfSXNJbnN0YW5jZShvYmosIChQeU9iamVjdCopQnl0ZXNfdHlwZSk7CiAgICAgaWYgKGlzaW5zdGFuY2UgPT0gLTEpIHsKICAgICAgICAgcmV0dXJuIDE7CkBAIC02MjU5LDYgKzY2MDEsMjggQEAKICAgICAgICAgaWYgKCpvdXQgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KKyAgICBpc2luc3RhbmNlID0gUHlPYmplY3RfSXNJbnN0YW5jZShvYmosIChQeU9iamVjdCopQ29uc3RhbnRfdHlwZSk7CisgICAgaWYgKGlzaW5zdGFuY2UgPT0gLTEpIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGlmIChpc2luc3RhbmNlKSB7CisgICAgICAgIGNvbnN0YW50IHZhbHVlOworCisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpKSB7CisgICAgICAgICAgICBpbnQgcmVzOworICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3ZhbHVlKTsKKyAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2NvbnN0YW50KHRtcCwgJnZhbHVlLCBhcmVuYSk7CisgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgUHlfQ0xFQVIodG1wKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcInZhbHVlXCIgbWlzc2luZyBmcm9tIENvbnN0YW50Iik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgICAgICAqb3V0ID0gQ29uc3RhbnQodmFsdWUsIGxpbmVubywgY29sX29mZnNldCwgYXJlbmEpOworICAgICAgICBpZiAoKm91dCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIGlzaW5zdGFuY2UgPSBQeU9iamVjdF9Jc0luc3RhbmNlKG9iaiwgKFB5T2JqZWN0KilBdHRyaWJ1dGVfdHlwZSk7CiAgICAgaWYgKGlzaW5zdGFuY2UgPT0gLTEpIHsKICAgICAgICAgcmV0dXJuIDE7CkBAIC02OTg3LDYgKzczNTEsNyBAQAogICAgIGV4cHJfdHkgdGFyZ2V0OwogICAgIGV4cHJfdHkgaXRlcjsKICAgICBhc2RsX3NlcSogaWZzOworICAgIGludCBpc19hc3luYzsKIAogICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdGFyZ2V0KSkgewogICAgICAgICBpbnQgcmVzOwpAQCAtNzAzOCw3ICs3NDAzLDE4IEBACiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImlmc1wiIG1pc3NpbmcgZnJvbSBjb21wcmVoZW5zaW9uIik7CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KLSAgICAqb3V0ID0gY29tcHJlaGVuc2lvbih0YXJnZXQsIGl0ZXIsIGlmcywgYXJlbmEpOworICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfaXNfYXN5bmMpKSB7CisgICAgICAgIGludCByZXM7CisgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9pc19hc3luYyk7CisgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgIHJlcyA9IG9iajJhc3RfaW50KHRtcCwgJmlzX2FzeW5jLCBhcmVuYSk7CisgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgIFB5X0NMRUFSKHRtcCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiaXNfYXN5bmNcIiBtaXNzaW5nIGZyb20gY29tcHJlaGVuc2lvbiIpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgKm91dCA9IGNvbXByZWhlbnNpb24odGFyZ2V0LCBpdGVyLCBpZnMsIGlzX2FzeW5jLCBhcmVuYSk7CiAgICAgcmV0dXJuIDA7CiBmYWlsZWQ6CiAgICAgUHlfWERFQ1JFRih0bXApOwpAQCAtNzUwMiw2ICs3ODc4LDggQEAKICAgICAgICAgTlVMTDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkF1Z0Fzc2lnbiIsIChQeU9iamVjdCopQXVnQXNzaWduX3R5cGUpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJBbm5Bc3NpZ24iLCAoUHlPYmplY3QqKUFubkFzc2lnbl90eXBlKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiRm9yIiwgKFB5T2JqZWN0KilGb3JfdHlwZSkgPCAwKSByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkFzeW5jRm9yIiwgKFB5T2JqZWN0KilBc3luY0Zvcl90eXBlKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNzU2MiwxMiArNzk0MCwxOCBAQAogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiQ2FsbCIsIChQeU9iamVjdCopQ2FsbF90eXBlKSA8IDApIHJldHVybiBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiTnVtIiwgKFB5T2JqZWN0KilOdW1fdHlwZSkgPCAwKSByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlN0ciIsIChQeU9iamVjdCopU3RyX3R5cGUpIDwgMCkgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJGb3JtYXR0ZWRWYWx1ZSIsCisgICAgICAgIChQeU9iamVjdCopRm9ybWF0dGVkVmFsdWVfdHlwZSkgPCAwKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkpvaW5lZFN0ciIsIChQeU9iamVjdCopSm9pbmVkU3RyX3R5cGUpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJCeXRlcyIsIChQeU9iamVjdCopQnl0ZXNfdHlwZSkgPCAwKSByZXR1cm4KICAgICAgICAgTlVMTDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIk5hbWVDb25zdGFudCIsIChQeU9iamVjdCopTmFtZUNvbnN0YW50X3R5cGUpIDwKICAgICAgICAgMCkgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJFbGxpcHNpcyIsIChQeU9iamVjdCopRWxsaXBzaXNfdHlwZSkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkNvbnN0YW50IiwgKFB5T2JqZWN0KilDb25zdGFudF90eXBlKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiQXR0cmlidXRlIiwgKFB5T2JqZWN0KilBdHRyaWJ1dGVfdHlwZSkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlN1YnNjcmlwdCIsIChQeU9iamVjdCopU3Vic2NyaXB0X3R5cGUpIDwgMCkKZGlmZiAtLWdpdCBhL1B5dGhvbi9fd2FybmluZ3MuYyBiL1B5dGhvbi9fd2FybmluZ3MuYwppbmRleCAzOTI4MTUzLi42Y2ZhZTc3IDEwMDY0NAotLS0gYS9QeXRob24vX3dhcm5pbmdzLmMKKysrIGIvUHl0aG9uL193YXJuaW5ncy5jCkBAIC00MCwxMiArNDAsMTEgQEAKICAgIEEgTlVMTCByZXR1cm4gdmFsdWUgY2FuIG1lYW4gZmFsc2Ugb3IgYW4gZXJyb3IuCiAqLwogc3RhdGljIFB5T2JqZWN0ICoKLWdldF93YXJuaW5nc19hdHRyKGNvbnN0IGNoYXIgKmF0dHIpCitnZXRfd2FybmluZ3NfYXR0cihjb25zdCBjaGFyICphdHRyLCBpbnQgdHJ5X2ltcG9ydCkKIHsKICAgICBzdGF0aWMgUHlPYmplY3QgKndhcm5pbmdzX3N0ciA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmFsbF9tb2R1bGVzOwotICAgIFB5T2JqZWN0ICp3YXJuaW5nc19tb2R1bGU7Ci0gICAgaW50IHJlc3VsdDsKKyAgICBQeU9iamVjdCAqd2FybmluZ3NfbW9kdWxlLCAqb2JqOwogCiAgICAgaWYgKHdhcm5pbmdzX3N0ciA9PSBOVUxMKSB7CiAgICAgICAgIHdhcm5pbmdzX3N0ciA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJ3YXJuaW5ncyIpOwpAQCAtNTMsMTUgKzUyLDM0IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBhbGxfbW9kdWxlcyA9IFB5SW1wb3J0X0dldE1vZHVsZURpY3QoKTsKLSAgICByZXN1bHQgPSBQeURpY3RfQ29udGFpbnMoYWxsX21vZHVsZXMsIHdhcm5pbmdzX3N0cik7Ci0gICAgaWYgKHJlc3VsdCA9PSAtMSB8fCByZXN1bHQgPT0gMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICB3YXJuaW5nc19tb2R1bGUgPSBQeURpY3RfR2V0SXRlbShhbGxfbW9kdWxlcywgd2FybmluZ3Nfc3RyKTsKLSAgICBpZiAoIVB5T2JqZWN0X0hhc0F0dHJTdHJpbmcod2FybmluZ3NfbW9kdWxlLCBhdHRyKSkKKyAgICAvKiBkb24ndCB0cnkgdG8gaW1wb3J0IGFmdGVyIHRoZSBzdGFydCBvZiB0aGUgUHl0aG9uIGZpbmFsbGl6YXRpb24gKi8KKyAgICBpZiAodHJ5X2ltcG9ydCAmJiBfUHlfRmluYWxpemluZyA9PSBOVUxMKSB7CisgICAgICAgIHdhcm5pbmdzX21vZHVsZSA9IFB5SW1wb3J0X0ltcG9ydCh3YXJuaW5nc19zdHIpOworICAgICAgICBpZiAod2FybmluZ3NfbW9kdWxlID09IE5VTEwpIHsKKyAgICAgICAgICAgIC8qIEZhbGxiYWNrIHRvIHRoZSBDIGltcGxlbWVudGF0aW9uIGlmIHdlIGNhbm5vdCBnZXQKKyAgICAgICAgICAgICAgIHRoZSBQeXRob24gaW1wbGVtZW50YXRpb24gKi8KKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gUHlPYmplY3RfR2V0QXR0clN0cmluZyh3YXJuaW5nc19tb2R1bGUsIGF0dHIpOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBhbGxfbW9kdWxlcyA9IFB5SW1wb3J0X0dldE1vZHVsZURpY3QoKTsKKworICAgICAgICB3YXJuaW5nc19tb2R1bGUgPSBQeURpY3RfR2V0SXRlbShhbGxfbW9kdWxlcywgd2FybmluZ3Nfc3RyKTsKKyAgICAgICAgaWYgKHdhcm5pbmdzX21vZHVsZSA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAgICAgUHlfSU5DUkVGKHdhcm5pbmdzX21vZHVsZSk7CisgICAgfQorCisgICAgaWYgKCFQeU9iamVjdF9IYXNBdHRyU3RyaW5nKHdhcm5pbmdzX21vZHVsZSwgYXR0cikpIHsKKyAgICAgICAgUHlfREVDUkVGKHdhcm5pbmdzX21vZHVsZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG9iaiA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcod2FybmluZ3NfbW9kdWxlLCBhdHRyKTsKKyAgICBQeV9ERUNSRUYod2FybmluZ3NfbW9kdWxlKTsKKyAgICByZXR1cm4gb2JqOwogfQogCiAKQEAgLTcwLDcgKzg4LDcgQEAKIHsKICAgICBQeU9iamVjdCAqcmVnaXN0cnk7CiAKLSAgICByZWdpc3RyeSA9IGdldF93YXJuaW5nc19hdHRyKCJvbmNlcmVnaXN0cnkiKTsKKyAgICByZWdpc3RyeSA9IGdldF93YXJuaW5nc19hdHRyKCJvbmNlcmVnaXN0cnkiLCAwKTsKICAgICBpZiAocmVnaXN0cnkgPT0gTlVMTCkgewogICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtODcsNyArMTA1LDcgQEAKIHsKICAgICBQeU9iamVjdCAqZGVmYXVsdF9hY3Rpb247CiAKLSAgICBkZWZhdWx0X2FjdGlvbiA9IGdldF93YXJuaW5nc19hdHRyKCJkZWZhdWx0YWN0aW9uIik7CisgICAgZGVmYXVsdF9hY3Rpb24gPSBnZXRfd2FybmluZ3NfYXR0cigiZGVmYXVsdGFjdGlvbiIsIDApOwogICAgIGlmIChkZWZhdWx0X2FjdGlvbiA9PSBOVUxMKSB7CiAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTExMCw3ICsxMjgsNyBAQAogICAgIFB5X3NzaXplX3QgaTsKICAgICBQeU9iamVjdCAqd2FybmluZ3NfZmlsdGVyczsKIAotICAgIHdhcm5pbmdzX2ZpbHRlcnMgPSBnZXRfd2FybmluZ3NfYXR0cigiZmlsdGVycyIpOworICAgIHdhcm5pbmdzX2ZpbHRlcnMgPSBnZXRfd2FybmluZ3NfYXR0cigiZmlsdGVycyIsIDApOwogICAgIGlmICh3YXJuaW5nc19maWx0ZXJzID09IE5VTEwpIHsKICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTI4Nyw4ICszMDUsOCBAQAogfQogCiBzdGF0aWMgdm9pZAotc2hvd193YXJuaW5nKFB5T2JqZWN0ICpmaWxlbmFtZSwgaW50IGxpbmVubywgUHlPYmplY3QgKnRleHQsIFB5T2JqZWN0Ci0gICAgICAgICAgICAgICAgKmNhdGVnb3J5LCBQeU9iamVjdCAqc291cmNlbGluZSkKK3Nob3dfd2FybmluZyhQeU9iamVjdCAqZmlsZW5hbWUsIGludCBsaW5lbm8sIFB5T2JqZWN0ICp0ZXh0LAorICAgICAgICAgICAgIFB5T2JqZWN0ICpjYXRlZ29yeSwgUHlPYmplY3QgKnNvdXJjZWxpbmUpCiB7CiAgICAgUHlPYmplY3QgKmZfc3RkZXJyOwogICAgIFB5T2JqZWN0ICpuYW1lOwpAQCAtMzU5LDEwICszNzcsNjQgQEAKICAgICBQeUVycl9DbGVhcigpOwogfQogCitzdGF0aWMgaW50CitjYWxsX3Nob3dfd2FybmluZyhQeU9iamVjdCAqY2F0ZWdvcnksIFB5T2JqZWN0ICp0ZXh0LCBQeU9iamVjdCAqbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmaWxlbmFtZSwgaW50IGxpbmVubywgUHlPYmplY3QgKmxpbmVub19vYmosCisgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc291cmNlbGluZSwgUHlPYmplY3QgKnNvdXJjZSkKK3sKKyAgICBQeU9iamVjdCAqc2hvd19mbiwgKm1zZywgKnJlcywgKndhcm5tc2dfY2xzID0gTlVMTDsKKworICAgIC8qIElmIHRoZSBzb3VyY2UgcGFyYW1ldGVyIGlzIHNldCwgdHJ5IHRvIGdldCB0aGUgUHl0aG9uIGltcGxlbWVudGF0aW9uLgorICAgICAgIFRoZSBQeXRob24gaW1wbGVtZW50YXRpb24gaXMgYWJsZSB0byBsb2cgdGhlIHRyYWNlYmFjayB3aGVyZSB0aGUgc291cmNlCisgICAgICAgd2FzIGFsbG9jYXRlZCwgd2hlcmVhcyB0aGUgQyBpbXBsZW1lbnRhdGlvbiBkb2VzbnQuICovCisgICAgc2hvd19mbiA9IGdldF93YXJuaW5nc19hdHRyKCJfc2hvd3dhcm5tc2ciLCBzb3VyY2UgIT0gTlVMTCk7CisgICAgaWYgKHNob3dfZm4gPT0gTlVMTCkgeworICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgc2hvd193YXJuaW5nKGZpbGVuYW1lLCBsaW5lbm8sIHRleHQsIGNhdGVnb3J5LCBzb3VyY2VsaW5lKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYgKCFQeUNhbGxhYmxlX0NoZWNrKHNob3dfZm4pKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgIndhcm5pbmdzLl9zaG93d2Fybm1zZygpIG11c3QgYmUgc2V0IHRvIGEgY2FsbGFibGUiKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICB3YXJubXNnX2NscyA9IGdldF93YXJuaW5nc19hdHRyKCJXYXJuaW5nTWVzc2FnZSIsIDApOworICAgIGlmICh3YXJubXNnX2NscyA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgInVuYWJsZSB0byBnZXQgd2FybmluZ3MuV2FybmluZ01lc3NhZ2UiKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBtc2cgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKHdhcm5tc2dfY2xzLCBtZXNzYWdlLCBjYXRlZ29yeSwKKyAgICAgICAgICAgIGZpbGVuYW1lLCBsaW5lbm9fb2JqLCBQeV9Ob25lLCBQeV9Ob25lLCBzb3VyY2UsCisgICAgICAgICAgICBOVUxMKTsKKyAgICBQeV9ERUNSRUYod2Fybm1zZ19jbHMpOworICAgIGlmIChtc2cgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3Moc2hvd19mbiwgbXNnLCBOVUxMKTsKKyAgICBQeV9ERUNSRUYoc2hvd19mbik7CisgICAgUHlfREVDUkVGKG1zZyk7CisKKyAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIFB5X0RFQ1JFRihyZXMpOworICAgIHJldHVybiAwOworCitlcnJvcjoKKyAgICBQeV9YREVDUkVGKHNob3dfZm4pOworICAgIHJldHVybiAtMTsKK30KKwogc3RhdGljIFB5T2JqZWN0ICoKIHdhcm5fZXhwbGljaXQoUHlPYmplY3QgKmNhdGVnb3J5LCBQeU9iamVjdCAqbWVzc2FnZSwKICAgICAgICAgICAgICAgUHlPYmplY3QgKmZpbGVuYW1lLCBpbnQgbGluZW5vLAotICAgICAgICAgICAgICBQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqcmVnaXN0cnksIFB5T2JqZWN0ICpzb3VyY2VsaW5lKQorICAgICAgICAgICAgICBQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqcmVnaXN0cnksIFB5T2JqZWN0ICpzb3VyY2VsaW5lLAorICAgICAgICAgICAgICBQeU9iamVjdCAqc291cmNlKQogewogICAgIFB5T2JqZWN0ICprZXkgPSBOVUxMLCAqdGV4dCA9IE5VTEwsICpyZXN1bHQgPSBOVUxMLCAqbGluZW5vX29iaiA9IE5VTEw7CiAgICAgUHlPYmplY3QgKml0ZW0gPSBOVUxMOwpAQCAtNDcwLDMxICs1NDIsOSBAQAogICAgIGlmIChyYyA9PSAxKSAgLyogQWxyZWFkeSB3YXJuZWQgZm9yIHRoaXMgbW9kdWxlLiAqLwogICAgICAgICBnb3RvIHJldHVybl9ub25lOwogICAgIGlmIChyYyA9PSAwKSB7Ci0gICAgICAgIFB5T2JqZWN0ICpzaG93X2Z4biA9IGdldF93YXJuaW5nc19hdHRyKCJzaG93d2FybmluZyIpOwotICAgICAgICBpZiAoc2hvd19meG4gPT0gTlVMTCkgewotICAgICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICAgICAgZ290byBjbGVhbnVwOwotICAgICAgICAgICAgc2hvd193YXJuaW5nKGZpbGVuYW1lLCBsaW5lbm8sIHRleHQsIGNhdGVnb3J5LCBzb3VyY2VsaW5lKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpyZXM7Ci0KLSAgICAgICAgICAgIGlmICghUHlDYWxsYWJsZV9DaGVjayhzaG93X2Z4bikpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2FybmluZ3Muc2hvd3dhcm5pbmcoKSBtdXN0IGJlIHNldCB0byBhICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNhbGxhYmxlIik7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHNob3dfZnhuKTsKLSAgICAgICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3Moc2hvd19meG4sIG1lc3NhZ2UsIGNhdGVnb3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUsIGxpbmVub19vYmosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihzaG93X2Z4bik7Ci0gICAgICAgICAgICBQeV9YREVDUkVGKHJlcyk7Ci0gICAgICAgICAgICBpZiAocmVzID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZ290byBjbGVhbnVwOwotICAgICAgICB9CisgICAgICAgIGlmIChjYWxsX3Nob3dfd2FybmluZyhjYXRlZ29yeSwgdGV4dCwgbWVzc2FnZSwgZmlsZW5hbWUsIGxpbmVubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVub19vYmosIHNvdXJjZWxpbmUsIHNvdXJjZSkgPCAwKQorICAgICAgICAgICAgZ290byBjbGVhbnVwOwogICAgIH0KICAgICBlbHNlIC8qIGlmIChyYyA9PSAtMSkgKi8KICAgICAgICAgZ290byBjbGVhbnVwOwpAQCAtNzM4LDcgKzc4OCw4IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1kb193YXJuKFB5T2JqZWN0ICptZXNzYWdlLCBQeU9iamVjdCAqY2F0ZWdvcnksIFB5X3NzaXplX3Qgc3RhY2tfbGV2ZWwpCitkb193YXJuKFB5T2JqZWN0ICptZXNzYWdlLCBQeU9iamVjdCAqY2F0ZWdvcnksIFB5X3NzaXplX3Qgc3RhY2tfbGV2ZWwsCisgICAgICAgIFB5T2JqZWN0ICpzb3VyY2UpCiB7CiAgICAgUHlPYmplY3QgKmZpbGVuYW1lLCAqbW9kdWxlLCAqcmVnaXN0cnksICpyZXM7CiAgICAgaW50IGxpbmVubzsKQEAgLTc0Nyw3ICs3OTgsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHJlcyA9IHdhcm5fZXhwbGljaXQoY2F0ZWdvcnksIG1lc3NhZ2UsIGZpbGVuYW1lLCBsaW5lbm8sIG1vZHVsZSwgcmVnaXN0cnksCi0gICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIHNvdXJjZSk7CiAgICAgUHlfREVDUkVGKGZpbGVuYW1lKTsKICAgICBQeV9ERUNSRUYocmVnaXN0cnkpOwogICAgIFB5X0RFQ1JFRihtb2R1bGUpOwpAQCAtNzU3LDI1ICs4MDgsMjcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB3YXJuaW5nc193YXJuKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgc3RhdGljIGNoYXIgKmt3X2xpc3RbXSA9IHsgIm1lc3NhZ2UiLCAiY2F0ZWdvcnkiLCAic3RhY2tsZXZlbCIsIDAgfTsKLSAgICBQeU9iamVjdCAqbWVzc2FnZSwgKmNhdGVnb3J5ID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa3dfbGlzdFtdID0geyJtZXNzYWdlIiwgImNhdGVnb3J5IiwgInN0YWNrbGV2ZWwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNvdXJjZSIsIE5VTEx9OworICAgIFB5T2JqZWN0ICptZXNzYWdlLCAqY2F0ZWdvcnkgPSBOVUxMLCAqc291cmNlID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IHN0YWNrX2xldmVsID0gMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfE9uOndhcm4iLCBrd19saXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtZXNzYWdlLCAmY2F0ZWdvcnksICZzdGFja19sZXZlbCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98T25POndhcm4iLCBrd19saXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtZXNzYWdlLCAmY2F0ZWdvcnksICZzdGFja19sZXZlbCwgJnNvdXJjZSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgY2F0ZWdvcnkgPSBnZXRfY2F0ZWdvcnkobWVzc2FnZSwgY2F0ZWdvcnkpOwogICAgIGlmIChjYXRlZ29yeSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gZG9fd2FybihtZXNzYWdlLCBjYXRlZ29yeSwgc3RhY2tfbGV2ZWwpOworICAgIHJldHVybiBkb193YXJuKG1lc3NhZ2UsIGNhdGVnb3J5LCBzdGFja19sZXZlbCwgc291cmNlKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIHdhcm5pbmdzX3dhcm5fZXhwbGljaXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKICAgICBzdGF0aWMgY2hhciAqa3dkX2xpc3RbXSA9IHsibWVzc2FnZSIsICJjYXRlZ29yeSIsICJmaWxlbmFtZSIsICJsaW5lbm8iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kdWxlIiwgInJlZ2lzdHJ5IiwgIm1vZHVsZV9nbG9iYWxzIiwgMH07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb2R1bGUiLCAicmVnaXN0cnkiLCAibW9kdWxlX2dsb2JhbHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic291cmNlIiwgMH07CiAgICAgUHlPYmplY3QgKm1lc3NhZ2U7CiAgICAgUHlPYmplY3QgKmNhdGVnb3J5OwogICAgIFB5T2JqZWN0ICpmaWxlbmFtZTsKQEAgLTc4MywxMCArODM2LDExIEBACiAgICAgUHlPYmplY3QgKm1vZHVsZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnJlZ2lzdHJ5ID0gTlVMTDsKICAgICBQeU9iamVjdCAqbW9kdWxlX2dsb2JhbHMgPSBOVUxMOworICAgIFB5T2JqZWN0ICpzb3VyY2VvYmogPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk9PVWl8T09POndhcm5fZXhwbGljaXQiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPT1VpfE9PT086d2Fybl9leHBsaWNpdCIsCiAgICAgICAgICAgICAgICAga3dkX2xpc3QsICZtZXNzYWdlLCAmY2F0ZWdvcnksICZmaWxlbmFtZSwgJmxpbmVubywgJm1vZHVsZSwKLSAgICAgICAgICAgICAgICAmcmVnaXN0cnksICZtb2R1bGVfZ2xvYmFscykpCisgICAgICAgICAgICAgICAgJnJlZ2lzdHJ5LCAmbW9kdWxlX2dsb2JhbHMsICZzb3VyY2VvYmopKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmIChtb2R1bGVfZ2xvYmFscykgewpAQCAtODQyLDE0ICs4OTYsMTQgQEAKIAogICAgICAgICAvKiBIYW5kbGUgdGhlIHdhcm5pbmcuICovCiAgICAgICAgIHJldHVybmVkID0gd2Fybl9leHBsaWNpdChjYXRlZ29yeSwgbWVzc2FnZSwgZmlsZW5hbWUsIGxpbmVubywgbW9kdWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0cnksIHNvdXJjZV9saW5lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdHJ5LCBzb3VyY2VfbGluZSwgc291cmNlb2JqKTsKICAgICAgICAgUHlfREVDUkVGKHNvdXJjZV9saXN0KTsKICAgICAgICAgcmV0dXJuIHJldHVybmVkOwogICAgIH0KIAogIHN0YW5kYXJkX2NhbGw6CiAgICAgcmV0dXJuIHdhcm5fZXhwbGljaXQoY2F0ZWdvcnksIG1lc3NhZ2UsIGZpbGVuYW1lLCBsaW5lbm8sIG1vZHVsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RyeSwgTlVMTCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0cnksIE5VTEwsIHNvdXJjZW9iaik7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC04NjQsMTQgKzkxOCwxNCBAQAogCiBzdGF0aWMgaW50CiB3YXJuX3VuaWNvZGUoUHlPYmplY3QgKmNhdGVnb3J5LCBQeU9iamVjdCAqbWVzc2FnZSwKLSAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YWNrX2xldmVsKQorICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhY2tfbGV2ZWwsIFB5T2JqZWN0ICpzb3VyY2UpCiB7CiAgICAgUHlPYmplY3QgKnJlczsKIAogICAgIGlmIChjYXRlZ29yeSA9PSBOVUxMKQogICAgICAgICBjYXRlZ29yeSA9IFB5RXhjX1J1bnRpbWVXYXJuaW5nOwogCi0gICAgcmVzID0gZG9fd2FybihtZXNzYWdlLCBjYXRlZ29yeSwgc3RhY2tfbGV2ZWwpOworICAgIHJlcyA9IGRvX3dhcm4obWVzc2FnZSwgY2F0ZWdvcnksIHN0YWNrX2xldmVsLCBzb3VyY2UpOwogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIFB5X0RFQ1JFRihyZXMpOwpAQCAtODc5LDEyICs5MzMsMjggQEAKICAgICByZXR1cm4gMDsKIH0KIAorc3RhdGljIGludAorX1B5RXJyX1dhcm5Gb3JtYXRWKFB5T2JqZWN0ICpzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNhdGVnb3J5LCBQeV9zc2l6ZV90IHN0YWNrX2xldmVsLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCB2YXJncykKK3sKKyAgICBQeU9iamVjdCAqbWVzc2FnZTsKKyAgICBpbnQgcmVzOworCisgICAgbWVzc2FnZSA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0Vihmb3JtYXQsIHZhcmdzKTsKKyAgICBpZiAobWVzc2FnZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICByZXMgPSB3YXJuX3VuaWNvZGUoY2F0ZWdvcnksIG1lc3NhZ2UsIHN0YWNrX2xldmVsLCBzb3VyY2UpOworICAgIFB5X0RFQ1JFRihtZXNzYWdlKTsKKyAgICByZXR1cm4gcmVzOworfQorCiBpbnQKIFB5RXJyX1dhcm5Gb3JtYXQoUHlPYmplY3QgKmNhdGVnb3J5LCBQeV9zc2l6ZV90IHN0YWNrX2xldmVsLAogICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKIHsKLSAgICBpbnQgcmV0OwotICAgIFB5T2JqZWN0ICptZXNzYWdlOworICAgIGludCByZXM7CiAgICAgdmFfbGlzdCB2YXJnczsKIAogI2lmZGVmIEhBVkVfU1REQVJHX1BST1RPVFlQRVMKQEAgLTg5MiwyNSArOTYyLDM4IEBACiAjZWxzZQogICAgIHZhX3N0YXJ0KHZhcmdzKTsKICNlbmRpZgotICAgIG1lc3NhZ2UgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdFYoZm9ybWF0LCB2YXJncyk7Ci0gICAgaWYgKG1lc3NhZ2UgIT0gTlVMTCkgewotICAgICAgICByZXQgPSB3YXJuX3VuaWNvZGUoY2F0ZWdvcnksIG1lc3NhZ2UsIHN0YWNrX2xldmVsKTsKLSAgICAgICAgUHlfREVDUkVGKG1lc3NhZ2UpOwotICAgIH0KLSAgICBlbHNlCi0gICAgICAgIHJldCA9IC0xOworICAgIHJlcyA9IF9QeUVycl9XYXJuRm9ybWF0VihOVUxMLCBjYXRlZ29yeSwgc3RhY2tfbGV2ZWwsIGZvcm1hdCwgdmFyZ3MpOwogICAgIHZhX2VuZCh2YXJncyk7Ci0gICAgcmV0dXJuIHJldDsKKyAgICByZXR1cm4gcmVzOwogfQogCiBpbnQKK1B5RXJyX1Jlc291cmNlV2FybmluZyhQeU9iamVjdCAqc291cmNlLCBQeV9zc2l6ZV90IHN0YWNrX2xldmVsLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQoreworICAgIGludCByZXM7CisgICAgdmFfbGlzdCB2YXJnczsKKworI2lmZGVmIEhBVkVfU1REQVJHX1BST1RPVFlQRVMKKyAgICB2YV9zdGFydCh2YXJncywgZm9ybWF0KTsKKyNlbHNlCisgICAgdmFfc3RhcnQodmFyZ3MpOworI2VuZGlmCisgICAgcmVzID0gX1B5RXJyX1dhcm5Gb3JtYXRWKHNvdXJjZSwgUHlFeGNfUmVzb3VyY2VXYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja19sZXZlbCwgZm9ybWF0LCB2YXJncyk7CisgICAgdmFfZW5kKHZhcmdzKTsKKyAgICByZXR1cm4gcmVzOworfQorCisKK2ludAogUHlFcnJfV2FybkV4KFB5T2JqZWN0ICpjYXRlZ29yeSwgY29uc3QgY2hhciAqdGV4dCwgUHlfc3NpemVfdCBzdGFja19sZXZlbCkKIHsKICAgICBpbnQgcmV0OwogICAgIFB5T2JqZWN0ICptZXNzYWdlID0gUHlVbmljb2RlX0Zyb21TdHJpbmcodGV4dCk7CiAgICAgaWYgKG1lc3NhZ2UgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIHJldCA9IHdhcm5fdW5pY29kZShjYXRlZ29yeSwgbWVzc2FnZSwgc3RhY2tfbGV2ZWwpOworICAgIHJldCA9IHdhcm5fdW5pY29kZShjYXRlZ29yeSwgbWVzc2FnZSwgc3RhY2tfbGV2ZWwsIE5VTEwpOwogICAgIFB5X0RFQ1JFRihtZXNzYWdlKTsKICAgICByZXR1cm4gcmV0OwogfQpAQCAtOTIxLDcgKzEwMDQsNyBAQAogI3VuZGVmIFB5RXJyX1dhcm4KIAogUHlBUElfRlVOQyhpbnQpCi1QeUVycl9XYXJuKFB5T2JqZWN0ICpjYXRlZ29yeSwgY2hhciAqdGV4dCkKK1B5RXJyX1dhcm4oUHlPYmplY3QgKmNhdGVnb3J5LCBjb25zdCBjaGFyICp0ZXh0KQogewogICAgIHJldHVybiBQeUVycl9XYXJuRXgoY2F0ZWdvcnksIHRleHQsIDEpOwogfQpAQCAtOTM2LDcgKzEwMTksNyBAQAogICAgIGlmIChjYXRlZ29yeSA9PSBOVUxMKQogICAgICAgICBjYXRlZ29yeSA9IFB5RXhjX1J1bnRpbWVXYXJuaW5nOwogICAgIHJlcyA9IHdhcm5fZXhwbGljaXQoY2F0ZWdvcnksIG1lc3NhZ2UsIGZpbGVuYW1lLCBsaW5lbm8sCi0gICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUsIHJlZ2lzdHJ5LCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZSwgcmVnaXN0cnksIE5VTEwsIE5VTEwpOwogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIFB5X0RFQ1JFRihyZXMpOwpAQCAtMTAwMCw3ICsxMDgzLDcgQEAKICAgICBpZiAobWVzc2FnZSAhPSBOVUxMKSB7CiAgICAgICAgIFB5T2JqZWN0ICpyZXM7CiAgICAgICAgIHJlcyA9IHdhcm5fZXhwbGljaXQoY2F0ZWdvcnksIG1lc3NhZ2UsIGZpbGVuYW1lLCBsaW5lbm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlLCByZWdpc3RyeSwgTlVMTCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlLCByZWdpc3RyeSwgTlVMTCwgTlVMTCk7CiAgICAgICAgIFB5X0RFQ1JFRihtZXNzYWdlKTsKICAgICAgICAgaWYgKHJlcyAhPSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKZGlmZiAtLWdpdCBhL1B5dGhvbi9hc2RsLmMgYi9QeXRob24vYXNkbC5jCmluZGV4IGRmMzg3YjIuLmMyMTEwNzggMTAwNjQ0Ci0tLSBhL1B5dGhvbi9hc2RsLmMKKysrIGIvUHl0aG9uL2FzZGwuYwpAQCAtOSwxNCArOSwxNCBAQAogCiAgICAgLyogY2hlY2sgc2l6ZSBpcyBzYW5lICovCiAgICAgaWYgKHNpemUgPCAwIHx8Ci0gICAgICAgIChzaXplICYmICgoKHNpemVfdClzaXplIC0gMSkgPiAoUFlfU0laRV9NQVggLyBzaXplb2Yodm9pZCAqKSkpKSkgeworICAgICAgICAoc2l6ZSAmJiAoKChzaXplX3Qpc2l6ZSAtIDEpID4gKFNJWkVfTUFYIC8gc2l6ZW9mKHZvaWQgKikpKSkpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIG4gPSAoc2l6ZSA/IChzaXplb2Yodm9pZCAqKSAqIChzaXplIC0gMSkpIDogMCk7CiAKICAgICAvKiBjaGVjayBpZiBzaXplIGNhbiBiZSBhZGRlZCBzYWZlbHkgKi8KLSAgICBpZiAobiA+IFBZX1NJWkVfTUFYIC0gc2l6ZW9mKGFzZGxfc2VxKSkgeworICAgIGlmIChuID4gU0laRV9NQVggLSBzaXplb2YoYXNkbF9zZXEpKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTQwLDE0ICs0MCwxNCBAQAogCiAgICAgLyogY2hlY2sgc2l6ZSBpcyBzYW5lICovCiAgICAgaWYgKHNpemUgPCAwIHx8Ci0gICAgICAgIChzaXplICYmICgoKHNpemVfdClzaXplIC0gMSkgPiAoUFlfU0laRV9NQVggLyBzaXplb2Yodm9pZCAqKSkpKSkgeworICAgICAgICAoc2l6ZSAmJiAoKChzaXplX3Qpc2l6ZSAtIDEpID4gKFNJWkVfTUFYIC8gc2l6ZW9mKHZvaWQgKikpKSkpIHsKICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgbiA9IChzaXplID8gKHNpemVvZih2b2lkICopICogKHNpemUgLSAxKSkgOiAwKTsKIAogICAgIC8qIGNoZWNrIGlmIHNpemUgY2FuIGJlIGFkZGVkIHNhZmVseSAqLwotICAgIGlmIChuID4gUFlfU0laRV9NQVggLSBzaXplb2YoYXNkbF9zZXEpKSB7CisgICAgaWYgKG4gPiBTSVpFX01BWCAtIHNpemVvZihhc2RsX3NlcSkpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL2FzdC5jIGIvUHl0aG9uL2FzdC5jCmluZGV4IGQzNmE5YjcuLjIxN2VhMTQgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9hc3QuYworKysgYi9QeXRob24vYXN0LmMKQEAgLTEzMiw2ICsxMzIsNTIgQEAKIH0KIAogc3RhdGljIGludAordmFsaWRhdGVfY29uc3RhbnQoUHlPYmplY3QgKnZhbHVlKQoreworICAgIGlmICh2YWx1ZSA9PSBQeV9Ob25lIHx8IHZhbHVlID09IFB5X0VsbGlwc2lzKQorICAgICAgICByZXR1cm4gMTsKKworICAgIGlmIChQeUxvbmdfQ2hlY2tFeGFjdCh2YWx1ZSkKKyAgICAgICAgICAgIHx8IFB5RmxvYXRfQ2hlY2tFeGFjdCh2YWx1ZSkKKyAgICAgICAgICAgIHx8IFB5Q29tcGxleF9DaGVja0V4YWN0KHZhbHVlKQorICAgICAgICAgICAgfHwgUHlCb29sX0NoZWNrKHZhbHVlKQorICAgICAgICAgICAgfHwgUHlVbmljb2RlX0NoZWNrRXhhY3QodmFsdWUpCisgICAgICAgICAgICB8fCBQeUJ5dGVzX0NoZWNrRXhhY3QodmFsdWUpKQorICAgICAgICByZXR1cm4gMTsKKworICAgIGlmIChQeVR1cGxlX0NoZWNrRXhhY3QodmFsdWUpIHx8IFB5RnJvemVuU2V0X0NoZWNrRXhhY3QodmFsdWUpKSB7CisgICAgICAgIFB5T2JqZWN0ICppdDsKKworICAgICAgICBpdCA9IFB5T2JqZWN0X0dldEl0ZXIodmFsdWUpOworICAgICAgICBpZiAoaXQgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIHdoaWxlICgxKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqaXRlbSA9IFB5SXRlcl9OZXh0KGl0KTsKKyAgICAgICAgICAgIGlmIChpdGVtID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXQpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghdmFsaWRhdGVfY29uc3RhbnQoaXRlbSkpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXQpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICAgICAgfQorCisgICAgICAgIFB5X0RFQ1JFRihpdCk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CiB2YWxpZGF0ZV9leHByKGV4cHJfdHkgZXhwLCBleHByX2NvbnRleHRfdHkgY3R4KQogewogICAgIGludCBjaGVja19jdHggPSAxOwpAQCAtMjQwLDYgKzI4NiwxNCBAQAogICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcihleHAtPnYuQ2FsbC5mdW5jLCBMb2FkKSAmJgogICAgICAgICAgICAgdmFsaWRhdGVfZXhwcnMoZXhwLT52LkNhbGwuYXJncywgTG9hZCwgMCkgJiYKICAgICAgICAgICAgIHZhbGlkYXRlX2tleXdvcmRzKGV4cC0+di5DYWxsLmtleXdvcmRzKTsKKyAgICBjYXNlIENvbnN0YW50X2tpbmQ6CisgICAgICAgIGlmICghdmFsaWRhdGVfY29uc3RhbnQoZXhwLT52LkNvbnN0YW50LnZhbHVlKSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZ290IGFuIGludmFsaWQgdHlwZSBpbiBDb25zdGFudDogJXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoZXhwLT52LkNvbnN0YW50LnZhbHVlKS0+dHBfbmFtZSk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMTsKICAgICBjYXNlIE51bV9raW5kOiB7CiAgICAgICAgIFB5T2JqZWN0ICpuID0gZXhwLT52Lk51bS5uOwogICAgICAgICBpZiAoIVB5TG9uZ19DaGVja0V4YWN0KG4pICYmICFQeUZsb2F0X0NoZWNrRXhhY3QobikgJiYKQEAgLTI1Nyw2ICszMTEsMTQgQEAKICAgICAgICAgfQogICAgICAgICByZXR1cm4gMTsKICAgICB9CisgICAgY2FzZSBKb2luZWRTdHJfa2luZDoKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHJzKGV4cC0+di5Kb2luZWRTdHIudmFsdWVzLCBMb2FkLCAwKTsKKyAgICBjYXNlIEZvcm1hdHRlZFZhbHVlX2tpbmQ6CisgICAgICAgIGlmICh2YWxpZGF0ZV9leHByKGV4cC0+di5Gb3JtYXR0ZWRWYWx1ZS52YWx1ZSwgTG9hZCkgPT0gMCkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBpZiAoZXhwLT52LkZvcm1hdHRlZFZhbHVlLmZvcm1hdF9zcGVjKQorICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHIoZXhwLT52LkZvcm1hdHRlZFZhbHVlLmZvcm1hdF9zcGVjLCBMb2FkKTsKKyAgICAgICAgcmV0dXJuIDE7CiAgICAgY2FzZSBCeXRlc19raW5kOiB7CiAgICAgICAgIFB5T2JqZWN0ICpiID0gZXhwLT52LkJ5dGVzLnM7CiAgICAgICAgIGlmICghUHlCeXRlc19DaGVja0V4YWN0KGIpKSB7CkBAIC0zMzUsNiArMzk3LDE3IEBACiAgICAgY2FzZSBBdWdBc3NpZ25fa2luZDoKICAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHIoc3RtdC0+di5BdWdBc3NpZ24udGFyZ2V0LCBTdG9yZSkgJiYKICAgICAgICAgICAgIHZhbGlkYXRlX2V4cHIoc3RtdC0+di5BdWdBc3NpZ24udmFsdWUsIExvYWQpOworICAgIGNhc2UgQW5uQXNzaWduX2tpbmQ6CisgICAgICAgIGlmIChzdG10LT52LkFubkFzc2lnbi50YXJnZXQtPmtpbmQgIT0gTmFtZV9raW5kICYmCisgICAgICAgICAgICBzdG10LT52LkFubkFzc2lnbi5zaW1wbGUpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFubkFzc2lnbiB3aXRoIHNpbXBsZSBub24tTmFtZSB0YXJnZXQiKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHByKHN0bXQtPnYuQW5uQXNzaWduLnRhcmdldCwgU3RvcmUpICYmCisgICAgICAgICAgICAgICAoIXN0bXQtPnYuQW5uQXNzaWduLnZhbHVlIHx8CisgICAgICAgICAgICAgICAgdmFsaWRhdGVfZXhwcihzdG10LT52LkFubkFzc2lnbi52YWx1ZSwgTG9hZCkpICYmCisgICAgICAgICAgICAgICB2YWxpZGF0ZV9leHByKHN0bXQtPnYuQW5uQXNzaWduLmFubm90YXRpb24sIExvYWQpOwogICAgIGNhc2UgRm9yX2tpbmQ6CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHByKHN0bXQtPnYuRm9yLnRhcmdldCwgU3RvcmUpICYmCiAgICAgICAgICAgICB2YWxpZGF0ZV9leHByKHN0bXQtPnYuRm9yLml0ZXIsIExvYWQpICYmCkBAIC00MTMsOCArNDg2LDggQEAKICAgICBjYXNlIEltcG9ydF9raW5kOgogICAgICAgICByZXR1cm4gdmFsaWRhdGVfbm9uZW1wdHlfc2VxKHN0bXQtPnYuSW1wb3J0Lm5hbWVzLCAibmFtZXMiLCAiSW1wb3J0Iik7CiAgICAgY2FzZSBJbXBvcnRGcm9tX2tpbmQ6Ci0gICAgICAgIGlmIChzdG10LT52LkltcG9ydEZyb20ubGV2ZWwgPCAtMSkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJJbXBvcnRGcm9tIGxldmVsIGxlc3MgdGhhbiAtMSIpOworICAgICAgICBpZiAoc3RtdC0+di5JbXBvcnRGcm9tLmxldmVsIDwgMCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJOZWdhdGl2ZSBJbXBvcnRGcm9tIGxldmVsIik7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gdmFsaWRhdGVfbm9uZW1wdHlfc2VxKHN0bXQtPnYuSW1wb3J0RnJvbS5uYW1lcywgIm5hbWVzIiwgIkltcG9ydEZyb20iKTsKQEAgLTUxMiw4ICs1ODUsNyBAQAogCiAvKiBEYXRhIHN0cnVjdHVyZSB1c2VkIGludGVybmFsbHkgKi8KIHN0cnVjdCBjb21waWxpbmcgewotICAgIGNoYXIgKmNfZW5jb2Rpbmc7IC8qIHNvdXJjZSBlbmNvZGluZyAqLwotICAgIFB5QXJlbmEgKmNfYXJlbmE7IC8qIGFyZW5hIGZvciBhbGxvY2F0aW5nIG1lbWVvcnkgKi8KKyAgICBQeUFyZW5hICpjX2FyZW5hOyAvKiBBcmVuYSBmb3IgYWxsb2NhdGluZyBtZW1vcnkuICovCiAgICAgUHlPYmplY3QgKmNfZmlsZW5hbWU7IC8qIGZpbGVuYW1lICovCiAgICAgUHlPYmplY3QgKmNfbm9ybWFsaXplOyAvKiBOb3JtYWxpemF0aW9uIGZ1bmN0aW9uIGZyb20gdW5pY29kZWRhdGEuICovCiAgICAgUHlPYmplY3QgKmNfbm9ybWFsaXplX2FyZ3M7IC8qIE5vcm1hbGl6YXRpb24gYXJndW1lbnQgdHVwbGUuICovCkBAIC01MzUsOSArNjA3LDcgQEAKIHN0YXRpYyBleHByX3R5IGFzdF9mb3JfY2FsbChzdHJ1Y3QgY29tcGlsaW5nICosIGNvbnN0IG5vZGUgKiwgZXhwcl90eSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqcGFyc2VudW1iZXIoc3RydWN0IGNvbXBpbGluZyAqLCBjb25zdCBjaGFyICopOwotc3RhdGljIFB5T2JqZWN0ICpwYXJzZXN0cihzdHJ1Y3QgY29tcGlsaW5nICosIGNvbnN0IG5vZGUgKm4sIGludCAqYnl0ZXNtb2RlKTsKLXN0YXRpYyBQeU9iamVjdCAqcGFyc2VzdHJwbHVzKHN0cnVjdCBjb21waWxpbmcgKiwgY29uc3Qgbm9kZSAqbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqYnl0ZXNtb2RlKTsKK3N0YXRpYyBleHByX3R5IHBhcnNlc3RycGx1cyhzdHJ1Y3QgY29tcGlsaW5nICosIGNvbnN0IG5vZGUgKm4pOwogCiAjZGVmaW5lIENPTVBfR0VORVhQICAgMAogI2RlZmluZSBDT01QX0xJU1RDT01QIDEKQEAgLTcwMSwyMyArNzcxLDExIEBACiAgICAgYy5jX2FyZW5hID0gYXJlbmE7CiAgICAgLyogYm9ycm93ZWQgcmVmZXJlbmNlICovCiAgICAgYy5jX2ZpbGVuYW1lID0gZmlsZW5hbWU7Ci0gICAgYy5jX25vcm1hbGl6ZSA9IGMuY19ub3JtYWxpemVfYXJncyA9IE5VTEw7Ci0gICAgaWYgKGZsYWdzICYmIGZsYWdzLT5jZl9mbGFncyAmIFB5Q0ZfU09VUkNFX0lTX1VURjgpIHsKLSAgICAgICAgYy5jX2VuY29kaW5nID0gInV0Zi04IjsKLSAgICAgICAgaWYgKFRZUEUobikgPT0gZW5jb2RpbmdfZGVjbCkgewotI2lmIDAKLSAgICAgICAgICAgIGFzdF9lcnJvcihjLCBuLCAiZW5jb2RpbmcgZGVjbGFyYXRpb24gaW4gVW5pY29kZSBzdHJpbmciKTsKLSAgICAgICAgICAgIGdvdG8gb3V0OwotI2VuZGlmCi0gICAgICAgICAgICBuID0gQ0hJTEQobiwgMCk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKFRZUEUobikgPT0gZW5jb2RpbmdfZGVjbCkgewotICAgICAgICBjLmNfZW5jb2RpbmcgPSBTVFIobik7CisgICAgYy5jX25vcm1hbGl6ZSA9IE5VTEw7CisgICAgYy5jX25vcm1hbGl6ZV9hcmdzID0gTlVMTDsKKworICAgIGlmIChUWVBFKG4pID09IGVuY29kaW5nX2RlY2wpCiAgICAgICAgIG4gPSBDSElMRChuLCAwKTsKLSAgICB9IGVsc2UgewotICAgICAgICAvKiBQRVAgMzEyMCAqLwotICAgICAgICBjLmNfZW5jb2RpbmcgPSAidXRmLTgiOwotICAgIH0KIAogICAgIGsgPSAwOwogICAgIHN3aXRjaCAoVFlQRShuKSkgewpAQCAtODY0LDcgKzkyMiw3IEBACiAgICAgfQogfQogCi1zdGF0aWMgY29uc3QgY2hhciogRk9SQklEREVOW10gPSB7CitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IEZPUkJJRERFTltdID0gewogICAgICJOb25lIiwKICAgICAiVHJ1ZSIsCiAgICAgIkZhbHNlIiwKQEAgLTg4MCw4ICs5MzgsMzAgQEAKICAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJhc3NpZ25tZW50IHRvIGtleXdvcmQiKTsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQorICAgIGlmIChfUHlVbmljb2RlX0VxdWFsVG9BU0NJSVN0cmluZyhuYW1lLCAiYXN5bmMiKSB8fAorICAgICAgICBfUHlVbmljb2RlX0VxdWFsVG9BU0NJSVN0cmluZyhuYW1lLCAiYXdhaXQiKSkKKyAgICB7CisgICAgICAgIFB5T2JqZWN0ICptZXNzYWdlID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoCisgICAgICAgICAgICAiJ2FzeW5jJyBhbmQgJ2F3YWl0JyB3aWxsIGJlY29tZSByZXNlcnZlZCBrZXl3b3JkcyIKKyAgICAgICAgICAgICIgaW4gUHl0aG9uIDMuNyIpOworICAgICAgICBpbnQgcmV0OworICAgICAgICBpZiAobWVzc2FnZSA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgICAgICByZXQgPSBQeUVycl9XYXJuRXhwbGljaXRPYmplY3QoCisgICAgICAgICAgICAgICAgUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgIG1lc3NhZ2UsCisgICAgICAgICAgICAgICAgYy0+Y19maWxlbmFtZSwKKyAgICAgICAgICAgICAgICBMSU5FTk8obiksCisgICAgICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICAgICAgUHlfREVDUkVGKG1lc3NhZ2UpOworICAgICAgICBpZiAocmV0IDwgMCkgeworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICB9CiAgICAgaWYgKGZ1bGxfY2hlY2tzKSB7Ci0gICAgICAgIGNvbnN0IGNoYXIgKipwOworICAgICAgICBjb25zdCBjaGFyICogY29uc3QgKnA7CiAgICAgICAgIGZvciAocCA9IEZPUkJJRERFTjsgKnA7IHArKykgewogICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVfRXF1YWxUb0FTQ0lJU3RyaW5nKG5hbWUsICpwKSkgewogICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBuLCAiYXNzaWdubWVudCB0byBrZXl3b3JkIik7CkBAIC05NDMsMTMgKzEwMjMsOCBAQAogICAgICAgICAgICAgcyA9IGUtPnYuTGlzdC5lbHRzOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVHVwbGVfa2luZDoKLSAgICAgICAgICAgIGlmIChhc2RsX3NlcV9MRU4oZS0+di5UdXBsZS5lbHRzKSkgIHsKLSAgICAgICAgICAgICAgICBlLT52LlR1cGxlLmN0eCA9IGN0eDsKLSAgICAgICAgICAgICAgICBzID0gZS0+di5UdXBsZS5lbHRzOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgZXhwcl9uYW1lID0gIigpIjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGUtPnYuVHVwbGUuY3R4ID0gY3R4OworICAgICAgICAgICAgcyA9IGUtPnYuVHVwbGUuZWx0czsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIExhbWJkYV9raW5kOgogICAgICAgICAgICAgZXhwcl9uYW1lID0gImxhbWJkYSI7CkBAIC05ODYsNiArMTA2MSw4IEBACiAgICAgICAgIGNhc2UgTnVtX2tpbmQ6CiAgICAgICAgIGNhc2UgU3RyX2tpbmQ6CiAgICAgICAgIGNhc2UgQnl0ZXNfa2luZDoKKyAgICAgICAgY2FzZSBKb2luZWRTdHJfa2luZDoKKyAgICAgICAgY2FzZSBGb3JtYXR0ZWRWYWx1ZV9raW5kOgogICAgICAgICAgICAgZXhwcl9uYW1lID0gImxpdGVyYWwiOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTmFtZUNvbnN0YW50X2tpbmQ6CkBAIC0xMjU5LDE2ICsxMzM2LDIwIEBACiAgICAgICAgYW5kIHZhcmFyZ3NsaXN0IChsYW1iZGEgZGVmaW5pdGlvbikuCiAKICAgICAgICBwYXJhbWV0ZXJzOiAnKCcgW3R5cGVkYXJnc2xpc3RdICcpJwotICAgICAgIHR5cGVkYXJnc2xpc3Q6ICgodGZwZGVmIFsnPScgdGVzdF0gJywnKSoKLSAgICAgICAgICAgKCcqJyBbdGZwZGVmXSAoJywnIHRmcGRlZiBbJz0nIHRlc3RdKSogWycsJyAnKionIHRmcGRlZl0KLSAgICAgICAgICAgfCAnKionIHRmcGRlZikKLSAgICAgICAgICAgfCB0ZnBkZWYgWyc9JyB0ZXN0XSAoJywnIHRmcGRlZiBbJz0nIHRlc3RdKSogWycsJ10pCisgICAgICAgdHlwZWRhcmdzbGlzdDogKHRmcGRlZiBbJz0nIHRlc3RdICgnLCcgdGZwZGVmIFsnPScgdGVzdF0pKiBbJywnIFsKKyAgICAgICAgICAgICAgICcqJyBbdGZwZGVmXSAoJywnIHRmcGRlZiBbJz0nIHRlc3RdKSogWycsJyBbJyoqJyB0ZnBkZWYgWycsJ11dXQorICAgICAgICAgICAgIHwgJyoqJyB0ZnBkZWYgWycsJ11dXQorICAgICAgICAgfCAnKicgW3RmcGRlZl0gKCcsJyB0ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcgWycqKicgdGZwZGVmIFsnLCddXV0KKyAgICAgICAgIHwgJyoqJyB0ZnBkZWYgWycsJ10pCiAgICAgICAgdGZwZGVmOiBOQU1FIFsnOicgdGVzdF0KLSAgICAgICB2YXJhcmdzbGlzdDogKCh2ZnBkZWYgWyc9JyB0ZXN0XSAnLCcpKgotICAgICAgICAgICAoJyonIFt2ZnBkZWZdICgnLCcgdmZwZGVmIFsnPScgdGVzdF0pKiAgWycsJyAnKionIHZmcGRlZl0KLSAgICAgICAgICAgfCAnKionIHZmcGRlZikKLSAgICAgICAgICAgfCB2ZnBkZWYgWyc9JyB0ZXN0XSAoJywnIHZmcGRlZiBbJz0nIHRlc3RdKSogWycsJ10pCisgICAgICAgdmFyYXJnc2xpc3Q6ICh2ZnBkZWYgWyc9JyB0ZXN0XSAoJywnIHZmcGRlZiBbJz0nIHRlc3RdKSogWycsJyBbCisgICAgICAgICAgICAgICAnKicgW3ZmcGRlZl0gKCcsJyB2ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcgWycqKicgdmZwZGVmIFsnLCddXV0KKyAgICAgICAgICAgICB8ICcqKicgdmZwZGVmIFsnLCddXV0KKyAgICAgICAgIHwgJyonIFt2ZnBkZWZdICgnLCcgdmZwZGVmIFsnPScgdGVzdF0pKiBbJywnIFsnKionIHZmcGRlZiBbJywnXV1dCisgICAgICAgICB8ICcqKicgdmZwZGVmIFsnLCddCisgICAgICAgKQogICAgICAgIHZmcGRlZjogTkFNRQorCiAgICAgKi8KICAgICBpbnQgaSwgaiwgaywgbnBvc2FyZ3MgPSAwLCBua3dvbmx5YXJncyA9IDA7CiAgICAgaW50IG5wb3NkZWZhdWx0cyA9IDAsIGZvdW5kX2RlZmF1bHQgPSAwOwpAQCAtMTM3MCw3ICsxNDUxLDggQEAKICAgICAgICAgICAgICAgICBpICs9IDI7IC8qIHRoZSBuYW1lIGFuZCB0aGUgY29tbWEgKi8KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgU1RBUjoKLSAgICAgICAgICAgICAgICBpZiAoaSsxID49IE5DSChuKSkgeworICAgICAgICAgICAgICAgIGlmIChpKzEgPj0gTkNIKG4pIHx8CisgICAgICAgICAgICAgICAgICAgIChpKzIgPT0gTkNIKG4pICYmIFRZUEUoQ0hJTEQobiwgaSsxKSkgPT0gQ09NTUEpKSB7CiAgICAgICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBDSElMRChuLCBpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lZCBhcmd1bWVudHMgbXVzdCBmb2xsb3cgYmFyZSAqIik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTY4NywxNCArMTc2OSwyMSBAQAogY291bnRfY29tcF9mb3JzKHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4pCiB7CiAgICAgaW50IG5fZm9ycyA9IDA7CisgICAgaW50IGlzX2FzeW5jOwogCiAgIGNvdW50X2NvbXBfZm9yOgorICAgIGlzX2FzeW5jID0gMDsKICAgICBuX2ZvcnMrKzsKICAgICBSRVEobiwgY29tcF9mb3IpOwotICAgIGlmIChOQ0gobikgPT0gNSkKLSAgICAgICAgbiA9IENISUxEKG4sIDQpOwotICAgIGVsc2UKKyAgICBpZiAoVFlQRShDSElMRChuLCAwKSkgPT0gQVNZTkMpIHsKKyAgICAgICAgaXNfYXN5bmMgPSAxOworICAgIH0KKyAgICBpZiAoTkNIKG4pID09ICg1ICsgaXNfYXN5bmMpKSB7CisgICAgICAgIG4gPSBDSElMRChuLCA0ICsgaXNfYXN5bmMpOworICAgIH0KKyAgICBlbHNlIHsKICAgICAgICAgcmV0dXJuIG5fZm9yczsKKyAgICB9CiAgIGNvdW50X2NvbXBfaXRlcjoKICAgICBSRVEobiwgY29tcF9pdGVyKTsKICAgICBuID0gQ0hJTEQobiwgMCk7CkBAIC0xNzU3LDE0ICsxODQ2LDE5IEBACiAgICAgICAgIGFzZGxfc2VxICp0OwogICAgICAgICBleHByX3R5IGV4cHJlc3Npb24sIGZpcnN0OwogICAgICAgICBub2RlICpmb3JfY2g7CisgICAgICAgIGludCBpc19hc3luYyA9IDA7CiAKICAgICAgICAgUkVRKG4sIGNvbXBfZm9yKTsKIAotICAgICAgICBmb3JfY2ggPSBDSElMRChuLCAxKTsKKyAgICAgICAgaWYgKFRZUEUoQ0hJTEQobiwgMCkpID09IEFTWU5DKSB7CisgICAgICAgICAgICBpc19hc3luYyA9IDE7CisgICAgICAgIH0KKworICAgICAgICBmb3JfY2ggPSBDSElMRChuLCAxICsgaXNfYXN5bmMpOwogICAgICAgICB0ID0gYXN0X2Zvcl9leHBybGlzdChjLCBmb3JfY2gsIFN0b3JlKTsKICAgICAgICAgaWYgKCF0KQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGV4cHJlc3Npb24gPSBhc3RfZm9yX2V4cHIoYywgQ0hJTEQobiwgMykpOworICAgICAgICBleHByZXNzaW9uID0gYXN0X2Zvcl9leHByKGMsIENISUxEKG4sIDMgKyBpc19hc3luYykpOwogICAgICAgICBpZiAoIWV4cHJlc3Npb24pCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtMTc3MiwxOSArMTg2NiwyMCBAQAogICAgICAgICAgICAoeCBmb3IgeCwgaW4gLi4uKSBoYXMgMSBlbGVtZW50IGluIHQsIGJ1dCBzdGlsbCByZXF1aXJlcyBhIFR1cGxlLiAqLwogICAgICAgICBmaXJzdCA9IChleHByX3R5KWFzZGxfc2VxX0dFVCh0LCAwKTsKICAgICAgICAgaWYgKE5DSChmb3JfY2gpID09IDEpCi0gICAgICAgICAgICBjb21wID0gY29tcHJlaGVuc2lvbihmaXJzdCwgZXhwcmVzc2lvbiwgTlVMTCwgYy0+Y19hcmVuYSk7CisgICAgICAgICAgICBjb21wID0gY29tcHJlaGVuc2lvbihmaXJzdCwgZXhwcmVzc2lvbiwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2FzeW5jLCBjLT5jX2FyZW5hKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgY29tcCA9IGNvbXByZWhlbnNpb24oVHVwbGUodCwgU3RvcmUsIGZpcnN0LT5saW5lbm8sIGZpcnN0LT5jb2xfb2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMtPmNfYXJlbmEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb24sIE5VTEwsIGMtPmNfYXJlbmEpOworICAgICAgICAgICAgY29tcCA9IGNvbXByZWhlbnNpb24oVHVwbGUodCwgU3RvcmUsIGZpcnN0LT5saW5lbm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdC0+Y29sX29mZnNldCwgYy0+Y19hcmVuYSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uLCBOVUxMLCBpc19hc3luYywgYy0+Y19hcmVuYSk7CiAgICAgICAgIGlmICghY29tcCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgICAgIGlmIChOQ0gobikgPT0gNSkgeworICAgICAgICBpZiAoTkNIKG4pID09ICg1ICsgaXNfYXN5bmMpKSB7CiAgICAgICAgICAgICBpbnQgaiwgbl9pZnM7CiAgICAgICAgICAgICBhc2RsX3NlcSAqaWZzOwogCi0gICAgICAgICAgICBuID0gQ0hJTEQobiwgNCk7CisgICAgICAgICAgICBuID0gQ0hJTEQobiwgNCArIGlzX2FzeW5jKTsKICAgICAgICAgICAgIG5faWZzID0gY291bnRfY29tcF9pZnMoYywgbik7CiAgICAgICAgICAgICBpZiAobl9pZnMgPT0gLTEpCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xOTkzLDcgKzIwODgsNiBAQAogICAgICAgIHwgJy4uLicgfCAnTm9uZScgfCAnVHJ1ZScgfCAnRmFsc2UnCiAgICAgKi8KICAgICBub2RlICpjaCA9IENISUxEKG4sIDApOwotICAgIGludCBieXRlc21vZGUgPSAwOwogCiAgICAgc3dpdGNoIChUWVBFKGNoKSkgewogICAgIGNhc2UgTkFNRTogewpAQCAtMjAxNSw3ICsyMTA5LDcgQEAKICAgICAgICAgcmV0dXJuIE5hbWUobmFtZSwgTG9hZCwgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOwogICAgIH0KICAgICBjYXNlIFNUUklORzogewotICAgICAgICBQeU9iamVjdCAqc3RyID0gcGFyc2VzdHJwbHVzKGMsIG4sICZieXRlc21vZGUpOworICAgICAgICBleHByX3R5IHN0ciA9IHBhcnNlc3RycGx1cyhjLCBuKTsKICAgICAgICAgaWYgKCFzdHIpIHsKICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycnR5cGUgPSBOVUxMOwogICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVW5pY29kZUVycm9yKSkKQEAgLTIwMzMsNiArMjEyNyw3IEBACiAgICAgICAgICAgICAgICAgaWYgKHMpIHsKICAgICAgICAgICAgICAgICAgICAgUHlPU19zbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiKCVzKSAlcyIsIGVycnR5cGUsIHMpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgICAgICAgICAgICAgIFB5T1Nfc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgIiglcykgdW5rbm93biBlcnJvciIsIGVycnR5cGUpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKGVycnN0cik7CkBAIC0yMDQzLDE0ICsyMTM4LDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIGlmIChQeUFyZW5hX0FkZFB5T2JqZWN0KGMtPmNfYXJlbmEsIHN0cikgPCAwKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGlmIChieXRlc21vZGUpCi0gICAgICAgICAgICByZXR1cm4gQnl0ZXMoc3RyLCBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBTdHIoc3RyLCBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CisgICAgICAgIHJldHVybiBzdHI7CiAgICAgfQogICAgIGNhc2UgTlVNQkVSOiB7CiAgICAgICAgIFB5T2JqZWN0ICpweW51bSA9IHBhcnNlbnVtYmVyKGMsIFNUUihjaCkpOwpAQCAtMjgwNyw4ICsyODk1LDkgQEAKIGFzdF9mb3JfZXhwcl9zdG10KHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4pCiB7CiAgICAgUkVRKG4sIGV4cHJfc3RtdCk7Ci0gICAgLyogZXhwcl9zdG10OiB0ZXN0bGlzdF9zdGFyX2V4cHIgKGF1Z2Fzc2lnbiAoeWllbGRfZXhwcnx0ZXN0bGlzdCkKLSAgICAgICAgICAgICAgICB8ICgnPScgKHlpZWxkX2V4cHJ8dGVzdGxpc3QpKSopCisgICAgLyogZXhwcl9zdG10OiB0ZXN0bGlzdF9zdGFyX2V4cHIgKGFubmFzc2lnbiB8IGF1Z2Fzc2lnbiAoeWllbGRfZXhwcnx0ZXN0bGlzdCkgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnPScgKHlpZWxkX2V4cHJ8dGVzdGxpc3Rfc3Rhcl9leHByKSkqKQorICAgICAgIGFubmFzc2lnbjogJzonIHRlc3QgWyc9JyB0ZXN0XQogICAgICAgIHRlc3RsaXN0X3N0YXJfZXhwcjogKHRlc3R8c3Rhcl9leHByKSAoJywnIHRlc3R8c3Rhcl9leHByKSogWycsJ10KICAgICAgICBhdWdhc3NpZ246ICcrPScgfCAnLT0nIHwgJyo9JyB8ICdAPScgfCAnLz0nIHwgJyU9JyB8ICcmPScgfCAnfD0nIHwgJ149JwogICAgICAgICAgICAgICAgIHwgJzw8PScgfCAnPj49JyB8ICcqKj0nIHwgJy8vPScKQEAgLTI4NjAsNiArMjk0OSw3NiBAQAogCiAgICAgICAgIHJldHVybiBBdWdBc3NpZ24oZXhwcjEsIG5ld29wZXJhdG9yLCBleHByMiwgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOwogICAgIH0KKyAgICBlbHNlIGlmIChUWVBFKENISUxEKG4sIDEpKSA9PSBhbm5hc3NpZ24pIHsKKyAgICAgICAgZXhwcl90eSBleHByMSwgZXhwcjIsIGV4cHIzOworICAgICAgICBub2RlICpjaCA9IENISUxEKG4sIDApOworICAgICAgICBub2RlICpkZWVwLCAqYW5uID0gQ0hJTEQobiwgMSk7CisgICAgICAgIGludCBzaW1wbGUgPSAxOworCisgICAgICAgIC8qIHdlIGtlZXAgdHJhY2sgb2YgcGFyZW5zIHRvIHF1YWxpZnkgKHgpIGFzIGV4cHJlc3Npb24gbm90IG5hbWUgKi8KKyAgICAgICAgZGVlcCA9IGNoOworICAgICAgICB3aGlsZSAoTkNIKGRlZXApID09IDEpIHsKKyAgICAgICAgICAgIGRlZXAgPSBDSElMRChkZWVwLCAwKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoTkNIKGRlZXApID4gMCAmJiBUWVBFKENISUxEKGRlZXAsIDApKSA9PSBMUEFSKSB7CisgICAgICAgICAgICBzaW1wbGUgPSAwOworICAgICAgICB9CisgICAgICAgIGV4cHIxID0gYXN0X2Zvcl90ZXN0bGlzdChjLCBjaCk7CisgICAgICAgIGlmICghZXhwcjEpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHN3aXRjaCAoZXhwcjEtPmtpbmQpIHsKKyAgICAgICAgICAgIGNhc2UgTmFtZV9raW5kOgorICAgICAgICAgICAgICAgIGlmIChmb3JiaWRkZW5fbmFtZShjLCBleHByMS0+di5OYW1lLmlkLCBuLCAwKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZXhwcjEtPnYuTmFtZS5jdHggPSBTdG9yZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQXR0cmlidXRlX2tpbmQ6CisgICAgICAgICAgICAgICAgaWYgKGZvcmJpZGRlbl9uYW1lKGMsIGV4cHIxLT52LkF0dHJpYnV0ZS5hdHRyLCBuLCAxKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZXhwcjEtPnYuQXR0cmlidXRlLmN0eCA9IFN0b3JlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBTdWJzY3JpcHRfa2luZDoKKyAgICAgICAgICAgICAgICBleHByMS0+di5TdWJzY3JpcHQuY3R4ID0gU3RvcmU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIExpc3Rfa2luZDoKKyAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgY2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJvbmx5IHNpbmdsZSB0YXJnZXQgKG5vdCBsaXN0KSBjYW4gYmUgYW5ub3RhdGVkIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBjYXNlIFR1cGxlX2tpbmQ6CisgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAib25seSBzaW5nbGUgdGFyZ2V0IChub3QgdHVwbGUpIGNhbiBiZSBhbm5vdGF0ZWQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiaWxsZWdhbCB0YXJnZXQgZm9yIGFubm90YXRpb24iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChleHByMS0+a2luZCAhPSBOYW1lX2tpbmQpIHsKKyAgICAgICAgICAgIHNpbXBsZSA9IDA7CisgICAgICAgIH0KKyAgICAgICAgY2ggPSBDSElMRChhbm4sIDEpOworICAgICAgICBleHByMiA9IGFzdF9mb3JfZXhwcihjLCBjaCk7CisgICAgICAgIGlmICghZXhwcjIpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGlmIChOQ0goYW5uKSA9PSAyKSB7CisgICAgICAgICAgICByZXR1cm4gQW5uQXNzaWduKGV4cHIxLCBleHByMiwgTlVMTCwgc2ltcGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBjaCA9IENISUxEKGFubiwgMyk7CisgICAgICAgICAgICBleHByMyA9IGFzdF9mb3JfZXhwcihjLCBjaCk7CisgICAgICAgICAgICBpZiAoIWV4cHIzKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gQW5uQXNzaWduKGV4cHIxLCBleHByMiwgZXhwcjMsIHNpbXBsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOworICAgICAgICB9CisgICAgfQogICAgIGVsc2UgewogICAgICAgICBpbnQgaTsKICAgICAgICAgYXNkbF9zZXEgKnRhcmdldHM7CkBAIC0yOTk0LDkgKzMxNTMsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmV4cGVjdGVkIGZsb3dfc3RtdDogJWQiLCBUWVBFKGNoKSk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0KLSAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsICJ1bmhhbmRsZWQgZmxvdyBzdGF0ZW1lbnQiKTsKLSAgICByZXR1cm4gTlVMTDsKIH0KIAogc3RhdGljIGFsaWFzX3R5CkBAIC0zMjEwLDE0ICszMzY2LDE0IEBACiAgICAgICAgICAgICBhbGlhc190eSBpbXBvcnRfYWxpYXMgPSBhbGlhc19mb3JfaW1wb3J0X25hbWUoYywgbiwgMSk7CiAgICAgICAgICAgICBpZiAoIWltcG9ydF9hbGlhcykKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoYWxpYXNlcywgMCwgaW1wb3J0X2FsaWFzKTsKKyAgICAgICAgICAgIGFzZGxfc2VxX1NFVChhbGlhc2VzLCAwLCBpbXBvcnRfYWxpYXMpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IE5DSChuKTsgaSArPSAyKSB7CiAgICAgICAgICAgICAgICAgYWxpYXNfdHkgaW1wb3J0X2FsaWFzID0gYWxpYXNfZm9yX2ltcG9ydF9uYW1lKGMsIENISUxEKG4sIGkpLCAxKTsKICAgICAgICAgICAgICAgICBpZiAoIWltcG9ydF9hbGlhcykKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChhbGlhc2VzLCBpIC8gMiwgaW1wb3J0X2FsaWFzKTsKKyAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoYWxpYXNlcywgaSAvIDIsIGltcG9ydF9hbGlhcyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1vZCAhPSBOVUxMKQpAQCAtMzg4Myw3ICs0MDM5LDcgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBhcnNlbnVtYmVyKHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IGNoYXIgKnMpCitwYXJzZW51bWJlcl9yYXcoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3QgY2hhciAqcykKIHsKICAgICBjb25zdCBjaGFyICplbmQ7CiAgICAgbG9uZyB4OwpAQCAtMzkyNiw2ICs0MDgyLDMxIEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCitwYXJzZW51bWJlcihzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBjaGFyICpzKQoreworICAgIGNoYXIgKmR1cCwgKmVuZDsKKyAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKKworICAgIGFzc2VydChzICE9IE5VTEwpOworCisgICAgaWYgKHN0cmNocihzLCAnXycpID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIHBhcnNlbnVtYmVyX3JhdyhjLCBzKTsKKyAgICB9CisgICAgLyogQ3JlYXRlIGEgZHVwbGljYXRlIHdpdGhvdXQgdW5kZXJzY29yZXMuICovCisgICAgZHVwID0gUHlNZW1fTWFsbG9jKHN0cmxlbihzKSArIDEpOworICAgIGVuZCA9IGR1cDsKKyAgICBmb3IgKDsgKnM7IHMrKykgeworICAgICAgICBpZiAoKnMgIT0gJ18nKSB7CisgICAgICAgICAgICAqZW5kKysgPSAqczsKKyAgICAgICAgfQorICAgIH0KKyAgICAqZW5kID0gJ1wwJzsKKyAgICByZXMgPSBwYXJzZW51bWJlcl9yYXcoYywgZHVwKTsKKyAgICBQeU1lbV9GcmVlKGR1cCk7CisgICAgcmV0dXJuIHJlczsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKIGRlY29kZV91dGY4KHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IGNoYXIgKipzUHRyLCBjb25zdCBjaGFyICplbmQpCiB7CiAgICAgY29uc3QgY2hhciAqcywgKnQ7CkBAIC0zOTM2LDg1ICs0MTE3LDkyNCBAQAogICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlVVRGOCh0LCBzIC0gdCwgTlVMTCk7CiB9CiAKK3N0YXRpYyBpbnQKK3dhcm5faW52YWxpZF9lc2NhcGVfc2VxdWVuY2Uoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBmaXJzdF9pbnZhbGlkX2VzY2FwZV9jaGFyKQoreworICAgIFB5T2JqZWN0ICptc2cgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiaW52YWxpZCBlc2NhcGUgc2VxdWVuY2UgXFwlYyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0X2ludmFsaWRfZXNjYXBlX2NoYXIpOworICAgIGlmIChtc2cgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChQeUVycl9XYXJuRXhwbGljaXRPYmplY3QoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLCBtc2csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMtPmNfZmlsZW5hbWUsIExJTkVOTyhuKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCkgPCAwICYmCisgICAgICAgIFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nKSkKKyAgICB7CisgICAgICAgIGNvbnN0IGNoYXIgKnM7CisKKyAgICAgICAgLyogUmVwbGFjZSB0aGUgRGVwcmVjYXRpb25XYXJuaW5nIGV4Y2VwdGlvbiB3aXRoIGEgU3ludGF4RXJyb3IKKyAgICAgICAgICAgdG8gZ2V0IGEgbW9yZSBhY2N1cmF0ZSBlcnJvciByZXBvcnQgKi8KKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKworICAgICAgICBzID0gUHlVbmljb2RlX0FzVVRGOChtc2cpOworICAgICAgICBpZiAocyAhPSBOVUxMKSB7CisgICAgICAgICAgICBhc3RfZXJyb3IoYywgbiwgcyk7CisgICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKG1zZyk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgUHlfREVDUkVGKG1zZyk7CisgICAgcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBQeU9iamVjdCAqCi1kZWNvZGVfdW5pY29kZShzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBjaGFyICpzLCBzaXplX3QgbGVuLCBpbnQgcmF3bW9kZSwgY29uc3QgY2hhciAqZW5jb2RpbmcpCitkZWNvZGVfdW5pY29kZV93aXRoX2VzY2FwZXMoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbiwgY29uc3QgY2hhciAqcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuKQogewogICAgIFB5T2JqZWN0ICp2LCAqdTsKICAgICBjaGFyICpidWY7CiAgICAgY2hhciAqcDsKICAgICBjb25zdCBjaGFyICplbmQ7CiAKLSAgICBpZiAoZW5jb2RpbmcgPT0gTlVMTCkgewotICAgICAgICB1ID0gTlVMTDsKLSAgICB9IGVsc2UgewotICAgICAgICAvKiBjaGVjayBmb3IgaW50ZWdlciBvdmVyZmxvdyAqLwotICAgICAgICBpZiAobGVuID4gUFlfU0laRV9NQVggLyA2KQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIC8qICLDpCIgKDIgYnl0ZXMpIG1heSBiZWNvbWUgIlxVMDAwMDAwRTQiICgxMCBieXRlcyksIG9yIDE6NQotICAgICAgICAgICAiXMOkIiAoMyBieXRlcykgbWF5IGJlY29tZSAiXHUwMDVjXFUwMDAwMDBFNCIgKDE2IGJ5dGVzKSwgb3IgfjE6NiAqLwotICAgICAgICB1ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY2hhciAqKU5VTEwsIGxlbiAqIDYpOwotICAgICAgICBpZiAodSA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHAgPSBidWYgPSBQeUJ5dGVzX0FzU3RyaW5nKHUpOwotICAgICAgICBlbmQgPSBzICsgbGVuOwotICAgICAgICB3aGlsZSAocyA8IGVuZCkgewotICAgICAgICAgICAgaWYgKCpzID09ICdcXCcpIHsKLSAgICAgICAgICAgICAgICAqcCsrID0gKnMrKzsKLSAgICAgICAgICAgICAgICBpZiAoKnMgJiAweDgwKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN0cmNweShwLCAidTAwNWMiKTsKLSAgICAgICAgICAgICAgICAgICAgcCArPSA1OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICgqcyAmIDB4ODApIHsgLyogWFhYIGluZWZmaWNpZW50ICovCi0gICAgICAgICAgICAgICAgUHlPYmplY3QgKnc7Ci0gICAgICAgICAgICAgICAgaW50IGtpbmQ7Ci0gICAgICAgICAgICAgICAgdm9pZCAqZGF0YTsKLSAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbiwgaTsKLSAgICAgICAgICAgICAgICB3ID0gZGVjb2RlX3V0ZjgoYywgJnMsIGVuZCk7Ci0gICAgICAgICAgICAgICAgaWYgKHcgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodSk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodyk7Ci0gICAgICAgICAgICAgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHcpOwotICAgICAgICAgICAgICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHcpOwotICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgewotICAgICAgICAgICAgICAgICAgICBQeV9VQ1M0IGNociA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOwotICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKHAsICJcXFUlMDh4IiwgY2hyKTsKLSAgICAgICAgICAgICAgICAgICAgcCArPSAxMDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgLyogU2hvdWxkIGJlIGltcG9zc2libGUgdG8gb3ZlcmZsb3cgKi8KLSAgICAgICAgICAgICAgICBhc3NlcnQocCAtIGJ1ZiA8PSBQeV9TSVpFKHUpKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodyk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICpwKysgPSAqcysrOworICAgIC8qIGNoZWNrIGZvciBpbnRlZ2VyIG92ZXJmbG93ICovCisgICAgaWYgKGxlbiA+IFNJWkVfTUFYIC8gNikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgLyogIsOkIiAoMiBieXRlcykgbWF5IGJlY29tZSAiXFUwMDAwMDBFNCIgKDEwIGJ5dGVzKSwgb3IgMTo1CisgICAgICAgIlzDpCIgKDMgYnl0ZXMpIG1heSBiZWNvbWUgIlx1MDA1Y1xVMDAwMDAwRTQiICgxNiBieXRlcyksIG9yIH4xOjYgKi8KKyAgICB1ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY2hhciAqKU5VTEwsIGxlbiAqIDYpOworICAgIGlmICh1ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHAgPSBidWYgPSBQeUJ5dGVzX0FzU3RyaW5nKHUpOworICAgIGVuZCA9IHMgKyBsZW47CisgICAgd2hpbGUgKHMgPCBlbmQpIHsKKyAgICAgICAgaWYgKCpzID09ICdcXCcpIHsKKyAgICAgICAgICAgICpwKysgPSAqcysrOworICAgICAgICAgICAgaWYgKCpzICYgMHg4MCkgeworICAgICAgICAgICAgICAgIHN0cmNweShwLCAidTAwNWMiKTsKKyAgICAgICAgICAgICAgICBwICs9IDU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgbGVuID0gcCAtIGJ1ZjsKLSAgICAgICAgcyA9IGJ1ZjsKKyAgICAgICAgaWYgKCpzICYgMHg4MCkgeyAvKiBYWFggaW5lZmZpY2llbnQgKi8KKyAgICAgICAgICAgIFB5T2JqZWN0ICp3OworICAgICAgICAgICAgaW50IGtpbmQ7CisgICAgICAgICAgICB2b2lkICpkYXRhOworICAgICAgICAgICAgUHlfc3NpemVfdCBsZW4sIGk7CisgICAgICAgICAgICB3ID0gZGVjb2RlX3V0ZjgoYywgJnMsIGVuZCk7CisgICAgICAgICAgICBpZiAodyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHUpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHcpOworICAgICAgICAgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHcpOworICAgICAgICAgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodyk7CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgICAgICAgICBQeV9VQ1M0IGNociA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOworICAgICAgICAgICAgICAgIHNwcmludGYocCwgIlxcVSUwOHgiLCBjaHIpOworICAgICAgICAgICAgICAgIHAgKz0gMTA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvKiBTaG91bGQgYmUgaW1wb3NzaWJsZSB0byBvdmVyZmxvdyAqLworICAgICAgICAgICAgYXNzZXJ0KHAgLSBidWYgPD0gUHlfU0laRSh1KSk7CisgICAgICAgICAgICBQeV9ERUNSRUYodyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAqcCsrID0gKnMrKzsKKyAgICAgICAgfQogICAgIH0KLSAgICBpZiAocmF3bW9kZSkKLSAgICAgICAgdiA9IFB5VW5pY29kZV9EZWNvZGVSYXdVbmljb2RlRXNjYXBlKHMsIGxlbiwgTlVMTCk7Ci0gICAgZWxzZQotICAgICAgICB2ID0gUHlVbmljb2RlX0RlY29kZVVuaWNvZGVFc2NhcGUocywgbGVuLCBOVUxMKTsKKyAgICBsZW4gPSBwIC0gYnVmOworICAgIHMgPSBidWY7CisKKyAgICBjb25zdCBjaGFyICpmaXJzdF9pbnZhbGlkX2VzY2FwZTsKKyAgICB2ID0gX1B5VW5pY29kZV9EZWNvZGVVbmljb2RlRXNjYXBlKHMsIGxlbiwgTlVMTCwgJmZpcnN0X2ludmFsaWRfZXNjYXBlKTsKKworICAgIGlmICh2ICE9IE5VTEwgJiYgZmlyc3RfaW52YWxpZF9lc2NhcGUgIT0gTlVMTCkgeworICAgICAgICBpZiAod2Fybl9pbnZhbGlkX2VzY2FwZV9zZXF1ZW5jZShjLCBuLCAqZmlyc3RfaW52YWxpZF9lc2NhcGUpIDwgMCkgeworICAgICAgICAgICAgLyogV2UgaGF2ZSBub3QgZGVjcmVmIHUgYmVmb3JlIGJlY2F1c2UgZmlyc3RfaW52YWxpZF9lc2NhcGUgcG9pbnRzCisgICAgICAgICAgICAgICBpbnNpZGUgdS4gKi8KKyAgICAgICAgICAgIFB5X1hERUNSRUYodSk7CisgICAgICAgICAgICBQeV9ERUNSRUYodik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KICAgICBQeV9YREVDUkVGKHUpOwogICAgIHJldHVybiB2OwogfQogCi0vKiBzIGlzIGEgUHl0aG9uIHN0cmluZyBsaXRlcmFsLCBpbmNsdWRpbmcgdGhlIGJyYWNrZXRpbmcgcXVvdGUgY2hhcmFjdGVycywKLSAqIGFuZCByICYvb3IgYiBwcmVmaXhlcyAoaWYgYW55KSwgYW5kIGVtYmVkZGVkIGVzY2FwZSBzZXF1ZW5jZXMgKGlmIGFueSkuCi0gKiBwYXJzZXN0ciBwYXJzZXMgaXQsIGFuZCByZXR1cm5zIHRoZSBkZWNvZGVkIFB5dGhvbiBzdHJpbmcgb2JqZWN0LgotICovCiBzdGF0aWMgUHlPYmplY3QgKgotcGFyc2VzdHIoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbiwgaW50ICpieXRlc21vZGUpCitkZWNvZGVfYnl0ZXNfd2l0aF9lc2NhcGVzKHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4sIGNvbnN0IGNoYXIgKnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW4pCit7CisgICAgY29uc3QgY2hhciAqZmlyc3RfaW52YWxpZF9lc2NhcGU7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IF9QeUJ5dGVzX0RlY29kZUVzY2FwZShzLCBsZW4sIE5VTEwsIDAsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZmlyc3RfaW52YWxpZF9lc2NhcGUpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoZmlyc3RfaW52YWxpZF9lc2NhcGUgIT0gTlVMTCkgeworICAgICAgICBpZiAod2Fybl9pbnZhbGlkX2VzY2FwZV9zZXF1ZW5jZShjLCBuLCAqZmlyc3RfaW52YWxpZF9lc2NhcGUpIDwgMCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKiBDb21waWxlIHRoaXMgZXhwcmVzc2lvbiBpbiB0byBhbiBleHByX3R5LiAgQWRkIHBhcmVucyBhcm91bmQgdGhlCisgICBleHByZXNzaW9uLCBpbiBvcmRlciB0byBhbGxvdyBsZWFkaW5nIHNwYWNlcyBpbiB0aGUgZXhwcmVzc2lvbi4gKi8KK3N0YXRpYyBleHByX3R5Citmc3RyaW5nX2NvbXBpbGVfZXhwcihjb25zdCBjaGFyICpleHByX3N0YXJ0LCBjb25zdCBjaGFyICpleHByX2VuZCwKKyAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4pCisKK3sKKyAgICBpbnQgYWxsX3doaXRlc3BhY2UgPSAxOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CisgICAgUHlDb21waWxlckZsYWdzIGNmOworICAgIG1vZF90eSBtb2Q7CisgICAgY2hhciAqc3RyOworICAgIFB5T2JqZWN0ICpvOworICAgIFB5X3NzaXplX3QgbGVuOworICAgIFB5X3NzaXplX3QgaTsKKworICAgIGFzc2VydChleHByX2VuZCA+PSBleHByX3N0YXJ0KTsKKyAgICBhc3NlcnQoKihleHByX3N0YXJ0LTEpID09ICd7Jyk7CisgICAgYXNzZXJ0KCpleHByX2VuZCA9PSAnfScgfHwgKmV4cHJfZW5kID09ICchJyB8fCAqZXhwcl9lbmQgPT0gJzonKTsKKworICAgIC8qIFdlIGtub3cgdGhlcmUgYXJlIG5vIGVzY2FwZXMgaGVyZSwgYmVjYXVzZSBiYWNrc2xhc2hlcyBhcmUgbm90IGFsbG93ZWQsCisgICAgICAgYW5kIHdlIGtub3cgaXQncyB1dGYtOCBlbmNvZGVkIChwZXIgUEVQIDI2MykuICBCdXQsIGluIG9yZGVyIHRvIGNoZWNrCisgICAgICAgdGhhdCBlYWNoIGNoYXIgaXMgbm90IHdoaXRlc3BhY2UsIHdlIG5lZWQgdG8gZGVjb2RlIGl0IHRvIHVuaWNvZGUuCisgICAgICAgV2hpY2ggaXMgdW5mb3J0dW5hdGUsIGJ1dCBzdWNoIGlzIGxpZmUuICovCisKKyAgICAvKiBJZiB0aGUgc3Vic3RyaW5nIGlzIGFsbCB3aGl0ZXNwYWNlLCBpdCdzIGFuIGVycm9yLiAgV2UgbmVlZCB0byBjYXRjaAorICAgICAgIHRoaXMgaGVyZSwgYW5kIG5vdCB3aGVuIHdlIGNhbGwgUHlQYXJzZXJfQVNURnJvbVN0cmluZywgYmVjYXVzZSB0dXJuaW5nCisgICAgICAgdGhlIGV4cHJlc3Npb24gJycgaW4gdG8gJygpJyB3b3VsZCBnbyBmcm9tIGJlaW5nIGludmFsaWQgdG8gdmFsaWQuICovCisgICAgLyogTm90ZSB0aGF0IHRoaXMgY29kZSBzYXlzIGFuIGVtcHR5IHN0cmluZyBpcyBhbGwgd2hpdGVzcGFjZS4gIFRoYXQncworICAgICAgIGltcG9ydGFudC4gIFRoZXJlJ3MgYSB0ZXN0IGZvciBpdDogZid7fScuICovCisgICAgbyA9IFB5VW5pY29kZV9EZWNvZGVVVEY4KGV4cHJfc3RhcnQsIGV4cHJfZW5kLWV4cHJfc3RhcnQsIE5VTEwpOworICAgIGlmIChvID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG8pOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChvKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEobyk7CisgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgIGlmICghUHlfVU5JQ09ERV9JU1NQQUNFKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpKSkgeworICAgICAgICAgICAgYWxsX3doaXRlc3BhY2UgPSAwOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgUHlfREVDUkVGKG8pOworICAgIGlmIChhbGxfd2hpdGVzcGFjZSkgeworICAgICAgICBhc3RfZXJyb3IoYywgbiwgImYtc3RyaW5nOiBlbXB0eSBleHByZXNzaW9uIG5vdCBhbGxvd2VkIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qIFJldXNlIGxlbiB0byBiZSB0aGUgbGVuZ3RoIG9mIHRoZSB1dGYtOCBpbnB1dCBzdHJpbmcuICovCisgICAgbGVuID0gZXhwcl9lbmQgLSBleHByX3N0YXJ0OworICAgIC8qIEFsbG9jYXRlIDMgZXh0cmEgYnl0ZXM6IG9wZW4gcGFyZW4sIGNsb3NlIHBhcmVuLCBudWxsIGJ5dGUuICovCisgICAgc3RyID0gUHlNZW1fUmF3TWFsbG9jKGxlbiArIDMpOworICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBzdHJbMF0gPSAnKCc7CisgICAgbWVtY3B5KHN0cisxLCBleHByX3N0YXJ0LCBsZW4pOworICAgIHN0cltsZW4rMV0gPSAnKSc7CisgICAgc3RyW2xlbisyXSA9IDA7CisKKyAgICBjZi5jZl9mbGFncyA9IFB5Q0ZfT05MWV9BU1Q7CisgICAgbW9kID0gUHlQYXJzZXJfQVNURnJvbVN0cmluZyhzdHIsICI8ZnN0cmluZz4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfZXZhbF9pbnB1dCwgJmNmLCBjLT5jX2FyZW5hKTsKKyAgICBQeU1lbV9SYXdGcmVlKHN0cik7CisgICAgaWYgKCFtb2QpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBtb2QtPnYuRXhwcmVzc2lvbi5ib2R5OworfQorCisvKiBSZXR1cm4gLTEgb24gZXJyb3IuCisKKyAgIFJldHVybiAwIGlmIHdlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgbGl0ZXJhbC4KKworICAgUmV0dXJuIDEgaWYgd2UgaGF2ZW4ndCByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIGxpdGVyYWwsIGJ1dCB3ZSB3YW50CisgICB0aGUgY2FsbGVyIHRvIHByb2Nlc3MgdGhlIGxpdGVyYWwgdXAgdG8gdGhpcyBwb2ludC4gVXNlZCBmb3IKKyAgIGRvdWJsZWQgYnJhY2VzLgorKi8KK3N0YXRpYyBpbnQKK2ZzdHJpbmdfZmluZF9saXRlcmFsKGNvbnN0IGNoYXIgKipzdHIsIGNvbnN0IGNoYXIgKmVuZCwgaW50IHJhdywKKyAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqbGl0ZXJhbCwgaW50IHJlY3Vyc2VfbHZsLAorICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbikKK3sKKyAgICAvKiBHZXQgYW55IGxpdGVyYWwgc3RyaW5nLiBJdCBlbmRzIHdoZW4gd2UgaGl0IGFuIHVuLWRvdWJsZWQgbGVmdAorICAgICAgIGJyYWNlICh3aGljaCBpc24ndCBwYXJ0IG9mIGEgdW5pY29kZSBuYW1lIGVzY2FwZSBzdWNoIGFzCisgICAgICAgIlxOe0VVTEVSIENPTlNUQU5UfSIpLCBvciB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuICovCisKKyAgICBjb25zdCBjaGFyICpsaXRlcmFsX3N0YXJ0ID0gKnN0cjsKKyAgICBjb25zdCBjaGFyICpsaXRlcmFsX2VuZDsKKyAgICBpbnQgaW5fbmFtZWRfZXNjYXBlID0gMDsKKyAgICBpbnQgcmVzdWx0ID0gMDsKKworICAgIGFzc2VydCgqbGl0ZXJhbCA9PSBOVUxMKTsKKyAgICBmb3IgKDsgKnN0ciA8IGVuZDsgKCpzdHIpKyspIHsKKyAgICAgICAgY2hhciBjaCA9ICoqc3RyOworICAgICAgICBpZiAoIWluX25hbWVkX2VzY2FwZSAmJiBjaCA9PSAneycgJiYgKCpzdHIpLWxpdGVyYWxfc3RhcnQgPj0gMiAmJgorICAgICAgICAgICAgKigqc3RyLTIpID09ICdcXCcgJiYgKigqc3RyLTEpID09ICdOJykgeworICAgICAgICAgICAgaW5fbmFtZWRfZXNjYXBlID0gMTsKKyAgICAgICAgfSBlbHNlIGlmIChpbl9uYW1lZF9lc2NhcGUgJiYgY2ggPT0gJ30nKSB7CisgICAgICAgICAgICBpbl9uYW1lZF9lc2NhcGUgPSAwOworICAgICAgICB9IGVsc2UgaWYgKGNoID09ICd7JyB8fCBjaCA9PSAnfScpIHsKKyAgICAgICAgICAgIC8qIENoZWNrIGZvciBkb3VibGVkIGJyYWNlcywgYnV0IG9ubHkgYXQgdGhlIHRvcCBsZXZlbC4gSWYKKyAgICAgICAgICAgICAgIHdlIGNoZWNrZWQgYXQgZXZlcnkgbGV2ZWwsIHRoZW4gZid7MDp7M319JyB3b3VsZCBmYWlsCisgICAgICAgICAgICAgICB3aXRoIHRoZSB0d28gY2xvc2luZyBicmFjZXMuICovCisgICAgICAgICAgICBpZiAocmVjdXJzZV9sdmwgPT0gMCkgeworICAgICAgICAgICAgICAgIGlmICgqc3RyKzEgPCBlbmQgJiYgKigqc3RyKzEpID09IGNoKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIFdlJ3JlIGdvaW5nIHRvIHRlbGwgdGhlIGNhbGxlciB0aGF0IHRoZSBsaXRlcmFsIGVuZHMKKyAgICAgICAgICAgICAgICAgICAgICAgaGVyZSwgYnV0IHRoYXQgdGhleSBzaG91bGQgY29udGludWUgc2Nhbm5pbmcuIEJ1dCBhbHNvCisgICAgICAgICAgICAgICAgICAgICAgIHNraXAgb3ZlciB0aGUgc2Vjb25kIGJyYWNlIHdoZW4gd2UgcmVzdW1lIHNjYW5uaW5nLiAqLworICAgICAgICAgICAgICAgICAgICBsaXRlcmFsX2VuZCA9ICpzdHIrMTsKKyAgICAgICAgICAgICAgICAgICAgKnN0ciArPSAyOworICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAxOworICAgICAgICAgICAgICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLyogV2hlcmUgYSBzaW5nbGUgJ3snIGlzIHRoZSBzdGFydCBvZiBhIG5ldyBleHByZXNzaW9uLCBhCisgICAgICAgICAgICAgICAgICAgc2luZ2xlICd9JyBpcyBub3QgYWxsb3dlZC4gKi8KKyAgICAgICAgICAgICAgICBpZiAoY2ggPT0gJ30nKSB7CisgICAgICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBuLCAiZi1zdHJpbmc6IHNpbmdsZSAnfScgaXMgbm90IGFsbG93ZWQiKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qIFdlJ3JlIGVpdGhlciBhdCBhICd7Jywgd2hpY2ggbWVhbnMgd2UncmUgc3RhcnRpbmcgYW5vdGhlcgorICAgICAgICAgICAgICAgZXhwcmVzc2lvbjsgb3IgYSAnfScsIHdoaWNoIG1lYW5zIHdlJ3JlIGF0IHRoZSBlbmQgb2YgdGhpcworICAgICAgICAgICAgICAgZi1zdHJpbmcgKGZvciBhIG5lc3RlZCBmb3JtYXRfc3BlYykuICovCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBsaXRlcmFsX2VuZCA9ICpzdHI7CisgICAgYXNzZXJ0KCpzdHIgPD0gZW5kKTsKKyAgICBhc3NlcnQoKnN0ciA9PSBlbmQgfHwgKipzdHIgPT0gJ3snIHx8ICoqc3RyID09ICd9Jyk7Citkb25lOgorICAgIGlmIChsaXRlcmFsX3N0YXJ0ICE9IGxpdGVyYWxfZW5kKSB7CisgICAgICAgIGlmIChyYXcpCisgICAgICAgICAgICAqbGl0ZXJhbCA9IFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwobGl0ZXJhbF9zdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXRlcmFsX2VuZC1saXRlcmFsX3N0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwpOworICAgICAgICBlbHNlCisgICAgICAgICAgICAqbGl0ZXJhbCA9IGRlY29kZV91bmljb2RlX3dpdGhfZXNjYXBlcyhjLCBuLCBsaXRlcmFsX3N0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGl0ZXJhbF9lbmQtbGl0ZXJhbF9zdGFydCk7CisgICAgICAgIGlmICghKmxpdGVyYWwpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIEZvcndhcmQgZGVjbGFyYXRpb24gYmVjYXVzZSBwYXJzaW5nIGlzIHJlY3Vyc2l2ZS4gKi8KK3N0YXRpYyBleHByX3R5Citmc3RyaW5nX3BhcnNlKGNvbnN0IGNoYXIgKipzdHIsIGNvbnN0IGNoYXIgKmVuZCwgaW50IHJhdywgaW50IHJlY3Vyc2VfbHZsLAorICAgICAgICAgICAgICBzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuKTsKKworLyogUGFyc2UgdGhlIGYtc3RyaW5nIGF0ICpzdHIsIGVuZGluZyBhdCBlbmQuICBXZSBrbm93ICpzdHIgc3RhcnRzIGFuCisgICBleHByZXNzaW9uIChzbyBpdCBtdXN0IGJlIGEgJ3snKS4gUmV0dXJucyB0aGUgRm9ybWF0dGVkVmFsdWUgbm9kZSwKKyAgIHdoaWNoIGluY2x1ZGVzIHRoZSBleHByZXNzaW9uLCBjb252ZXJzaW9uIGNoYXJhY3RlciwgYW5kCisgICBmb3JtYXRfc3BlYyBleHByZXNzaW9uLgorCisgICBOb3RlIHRoYXQgSSBkb24ndCBkbyBhIHBlcmZlY3Qgam9iIGhlcmU6IEkgZG9uJ3QgbWFrZSBzdXJlIHRoYXQgYQorICAgY2xvc2luZyBicmFjZSBkb2Vzbid0IG1hdGNoIGFuIG9wZW5pbmcgcGFyZW4sIGZvciBleGFtcGxlLiBJdAorICAgZG9lc24ndCBuZWVkIHRvIGVycm9yIG9uIGFsbCBpbnZhbGlkIGV4cHJlc3Npb25zLCBqdXN0IGNvcnJlY3RseQorICAgZmluZCB0aGUgZW5kIG9mIGFsbCB2YWxpZCBvbmVzLiBBbnkgZXJyb3JzIGluc2lkZSB0aGUgZXhwcmVzc2lvbgorICAgd2lsbCBiZSBjYXVnaHQgd2hlbiB3ZSBwYXJzZSBpdCBsYXRlci4gKi8KK3N0YXRpYyBpbnQKK2ZzdHJpbmdfZmluZF9leHByKGNvbnN0IGNoYXIgKipzdHIsIGNvbnN0IGNoYXIgKmVuZCwgaW50IHJhdywgaW50IHJlY3Vyc2VfbHZsLAorICAgICAgICAgICAgICAgICAgZXhwcl90eSAqZXhwcmVzc2lvbiwgc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbikKK3sKKyAgICAvKiBSZXR1cm4gLTEgb24gZXJyb3IsIGVsc2UgMC4gKi8KKworICAgIGNvbnN0IGNoYXIgKmV4cHJfc3RhcnQ7CisgICAgY29uc3QgY2hhciAqZXhwcl9lbmQ7CisgICAgZXhwcl90eSBzaW1wbGVfZXhwcmVzc2lvbjsKKyAgICBleHByX3R5IGZvcm1hdF9zcGVjID0gTlVMTDsgLyogT3B0aW9uYWwgZm9ybWF0IHNwZWNpZmllci4gKi8KKyAgICBpbnQgY29udmVyc2lvbiA9IC0xOyAvKiBUaGUgY29udmVyc2lvbiBjaGFyLiAtMSBpZiBub3Qgc3BlY2lmaWVkLiAqLworCisgICAgLyogMCBpZiB3ZSdyZSBub3QgaW4gYSBzdHJpbmcsIGVsc2UgdGhlIHF1b3RlIGNoYXIgd2UncmUgdHJ5aW5nIHRvCisgICAgICAgbWF0Y2ggKHNpbmdsZSBvciBkb3VibGUgcXVvdGUpLiAqLworICAgIGNoYXIgcXVvdGVfY2hhciA9IDA7CisKKyAgICAvKiBJZiB3ZSdyZSBpbnNpZGUgYSBzdHJpbmcsIDE9bm9ybWFsLCAzPXRyaXBsZS1xdW90ZWQuICovCisgICAgaW50IHN0cmluZ190eXBlID0gMDsKKworICAgIC8qIEtlZXAgdHJhY2sgb2YgbmVzdGluZyBsZXZlbCBmb3IgYnJhY2VzL3BhcmVucy9icmFja2V0cyBpbgorICAgICAgIGV4cHJlc3Npb25zLiAqLworICAgIFB5X3NzaXplX3QgbmVzdGVkX2RlcHRoID0gMDsKKworICAgIC8qIENhbiBvbmx5IG5lc3Qgb25lIGxldmVsIGRlZXAuICovCisgICAgaWYgKHJlY3Vyc2VfbHZsID49IDIpIHsKKyAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJmLXN0cmluZzogZXhwcmVzc2lvbnMgbmVzdGVkIHRvbyBkZWVwbHkiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIC8qIFRoZSBmaXJzdCBjaGFyIG11c3QgYmUgYSBsZWZ0IGJyYWNlLCBvciB3ZSB3b3VsZG4ndCBoYXZlIGdvdHRlbgorICAgICAgIGhlcmUuIFNraXAgb3ZlciBpdC4gKi8KKyAgICBhc3NlcnQoKipzdHIgPT0gJ3snKTsKKyAgICAqc3RyICs9IDE7CisKKyAgICBleHByX3N0YXJ0ID0gKnN0cjsKKyAgICBmb3IgKDsgKnN0ciA8IGVuZDsgKCpzdHIpKyspIHsKKyAgICAgICAgY2hhciBjaDsKKworICAgICAgICAvKiBMb29wIGludmFyaWFudHMuICovCisgICAgICAgIGFzc2VydChuZXN0ZWRfZGVwdGggPj0gMCk7CisgICAgICAgIGFzc2VydCgqc3RyID49IGV4cHJfc3RhcnQgJiYgKnN0ciA8IGVuZCk7CisgICAgICAgIGlmIChxdW90ZV9jaGFyKQorICAgICAgICAgICAgYXNzZXJ0KHN0cmluZ190eXBlID09IDEgfHwgc3RyaW5nX3R5cGUgPT0gMyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFzc2VydChzdHJpbmdfdHlwZSA9PSAwKTsKKworICAgICAgICBjaCA9ICoqc3RyOworICAgICAgICAvKiBOb3doZXJlIGluc2lkZSBhbiBleHByZXNzaW9uIGlzIGEgYmFja3NsYXNoIGFsbG93ZWQuICovCisgICAgICAgIGlmIChjaCA9PSAnXFwnKSB7CisgICAgICAgICAgICAvKiBFcnJvcjogY2FuJ3QgaW5jbHVkZSBhIGJhY2tzbGFzaCBjaGFyYWN0ZXIsIGluc2lkZQorICAgICAgICAgICAgICAgcGFyZW5zIG9yIHN0cmluZ3Mgb3Igbm90LiAqLworICAgICAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJmLXN0cmluZyBleHByZXNzaW9uIHBhcnQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgaW5jbHVkZSBhIGJhY2tzbGFzaCIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGlmIChxdW90ZV9jaGFyKSB7CisgICAgICAgICAgICAvKiBXZSdyZSBpbnNpZGUgYSBzdHJpbmcuIFNlZSBpZiB3ZSdyZSBhdCB0aGUgZW5kLiAqLworICAgICAgICAgICAgLyogVGhpcyBjb2RlIG5lZWRzIHRvIGltcGxlbWVudCB0aGUgc2FtZSBub24tZXJyb3IgbG9naWMKKyAgICAgICAgICAgICAgIGFzIHRva19nZXQgZnJvbSB0b2tlbml6ZXIuYywgYXQgdGhlIGxldHRlcl9xdW90ZQorICAgICAgICAgICAgICAgbGFiZWwuIFRvIGFjdHVhbGx5IHNoYXJlIHRoYXQgY29kZSB3b3VsZCBiZSBhCisgICAgICAgICAgICAgICBuaWdodG1hcmUuIEJ1dCwgaXQncyB1bmxpa2VseSB0byBjaGFuZ2UgYW5kIGlzIHNtYWxsLAorICAgICAgICAgICAgICAgc28gZHVwbGljYXRlIGl0IGhlcmUuIE5vdGUgd2UgZG9uJ3QgbmVlZCB0byBjYXRjaCBhbGwKKyAgICAgICAgICAgICAgIG9mIHRoZSBlcnJvcnMsIHNpbmNlIHRoZXknbGwgYmUgY2F1Z2h0IHdoZW4gcGFyc2luZyB0aGUKKyAgICAgICAgICAgICAgIGV4cHJlc3Npb24uIFdlIGp1c3QgbmVlZCB0byBtYXRjaCB0aGUgbm9uLWVycm9yCisgICAgICAgICAgICAgICBjYXNlcy4gVGh1cyB3ZSBjYW4gaWdub3JlIFxuIGluIHNpbmdsZS1xdW90ZWQgc3RyaW5ncywKKyAgICAgICAgICAgICAgIGZvciBleGFtcGxlLiBPciBub24tdGVybWluYXRlZCBzdHJpbmdzLiAqLworICAgICAgICAgICAgaWYgKGNoID09IHF1b3RlX2NoYXIpIHsKKyAgICAgICAgICAgICAgICAvKiBEb2VzIHRoaXMgbWF0Y2ggdGhlIHN0cmluZ190eXBlIChzaW5nbGUgb3IgdHJpcGxlCisgICAgICAgICAgICAgICAgICAgcXVvdGVkKT8gKi8KKyAgICAgICAgICAgICAgICBpZiAoc3RyaW5nX3R5cGUgPT0gMykgeworICAgICAgICAgICAgICAgICAgICBpZiAoKnN0cisyIDwgZW5kICYmICooKnN0cisxKSA9PSBjaCAmJiAqKCpzdHIrMikgPT0gY2gpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIFdlJ3JlIGF0IHRoZSBlbmQgb2YgYSB0cmlwbGUgcXVvdGVkIHN0cmluZy4gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICpzdHIgKz0gMjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ190eXBlID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHF1b3RlX2NoYXIgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAvKiBXZSdyZSBhdCB0aGUgZW5kIG9mIGEgbm9ybWFsIHN0cmluZy4gKi8KKyAgICAgICAgICAgICAgICAgICAgcXVvdGVfY2hhciA9IDA7CisgICAgICAgICAgICAgICAgICAgIHN0cmluZ190eXBlID0gMDsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKGNoID09ICdcJycgfHwgY2ggPT0gJyInKSB7CisgICAgICAgICAgICAvKiBJcyB0aGlzIGEgdHJpcGxlIHF1b3RlZCBzdHJpbmc/ICovCisgICAgICAgICAgICBpZiAoKnN0cisyIDwgZW5kICYmICooKnN0cisxKSA9PSBjaCAmJiAqKCpzdHIrMikgPT0gY2gpIHsKKyAgICAgICAgICAgICAgICBzdHJpbmdfdHlwZSA9IDM7CisgICAgICAgICAgICAgICAgKnN0ciArPSAyOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvKiBTdGFydCBvZiBhIG5vcm1hbCBzdHJpbmcuICovCisgICAgICAgICAgICAgICAgc3RyaW5nX3R5cGUgPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogU3RhcnQgbG9va2luZyBmb3IgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLiAqLworICAgICAgICAgICAgcXVvdGVfY2hhciA9IGNoOworICAgICAgICB9IGVsc2UgaWYgKGNoID09ICdbJyB8fCBjaCA9PSAneycgfHwgY2ggPT0gJygnKSB7CisgICAgICAgICAgICBuZXN0ZWRfZGVwdGgrKzsKKyAgICAgICAgfSBlbHNlIGlmIChuZXN0ZWRfZGVwdGggIT0gMCAmJgorICAgICAgICAgICAgICAgICAgIChjaCA9PSAnXScgfHwgY2ggPT0gJ30nIHx8IGNoID09ICcpJykpIHsKKyAgICAgICAgICAgIG5lc3RlZF9kZXB0aC0tOworICAgICAgICB9IGVsc2UgaWYgKGNoID09ICcjJykgeworICAgICAgICAgICAgLyogRXJyb3I6IGNhbid0IGluY2x1ZGUgYSBjb21tZW50IGNoYXJhY3RlciwgaW5zaWRlIHBhcmVucworICAgICAgICAgICAgICAgb3Igbm90LiAqLworICAgICAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJmLXN0cmluZyBleHByZXNzaW9uIHBhcnQgY2Fubm90IGluY2x1ZGUgJyMnIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0gZWxzZSBpZiAobmVzdGVkX2RlcHRoID09IDAgJiYKKyAgICAgICAgICAgICAgICAgICAoY2ggPT0gJyEnIHx8IGNoID09ICc6JyB8fCBjaCA9PSAnfScpKSB7CisgICAgICAgICAgICAvKiBGaXJzdCwgdGVzdCBmb3IgdGhlIHNwZWNpYWwgY2FzZSBvZiAiIT0iLiBTaW5jZSAnPScgaXMKKyAgICAgICAgICAgICAgIG5vdCBhbiBhbGxvd2VkIGNvbnZlcnNpb24gY2hhcmFjdGVyLCBub3RoaW5nIGlzIGxvc3QgaW4KKyAgICAgICAgICAgICAgIHRoaXMgdGVzdC4gKi8KKyAgICAgICAgICAgIGlmIChjaCA9PSAnIScgJiYgKnN0cisxIDwgZW5kICYmICooKnN0cisxKSA9PSAnPScpIHsKKyAgICAgICAgICAgICAgICAvKiBUaGlzIGlzbid0IGEgY29udmVyc2lvbiBjaGFyYWN0ZXIsIGp1c3QgY29udGludWUuICovCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvKiBOb3JtYWwgd2F5IG91dCBvZiB0aGlzIGxvb3AuICovCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8qIEp1c3QgY29uc3VtZSB0aGlzIGNoYXIgYW5kIGxvb3AgYXJvdW5kLiAqLworICAgICAgICB9CisgICAgfQorICAgIGV4cHJfZW5kID0gKnN0cjsKKyAgICAvKiBJZiB3ZSBsZWF2ZSB0aGlzIGxvb3AgaW4gYSBzdHJpbmcgb3Igd2l0aCBtaXNtYXRjaGVkIHBhcmVucywgd2UKKyAgICAgICBkb24ndCBjYXJlLiBXZSdsbCBnZXQgYSBzeW50YXggZXJyb3Igd2hlbiBjb21waWxpbmcgdGhlCisgICAgICAgZXhwcmVzc2lvbi4gQnV0LCB3ZSBjYW4gcHJvZHVjZSBhIGJldHRlciBlcnJvciBtZXNzYWdlLCBzbworICAgICAgIGxldCdzIGp1c3QgZG8gdGhhdC4qLworICAgIGlmIChxdW90ZV9jaGFyKSB7CisgICAgICAgIGFzdF9lcnJvcihjLCBuLCAiZi1zdHJpbmc6IHVudGVybWluYXRlZCBzdHJpbmciKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAobmVzdGVkX2RlcHRoKSB7CisgICAgICAgIGFzdF9lcnJvcihjLCBuLCAiZi1zdHJpbmc6IG1pc21hdGNoZWQgJygnLCAneycsIG9yICdbJyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKCpzdHIgPj0gZW5kKQorICAgICAgICBnb3RvIHVuZXhwZWN0ZWRfZW5kX29mX3N0cmluZzsKKworICAgIC8qIENvbXBpbGUgdGhlIGV4cHJlc3Npb24gYXMgc29vbiBhcyBwb3NzaWJsZSwgc28gd2Ugc2hvdyBlcnJvcnMKKyAgICAgICByZWxhdGVkIHRvIHRoZSBleHByZXNzaW9uIGJlZm9yZSBlcnJvcnMgcmVsYXRlZCB0byB0aGUKKyAgICAgICBjb252ZXJzaW9uIG9yIGZvcm1hdF9zcGVjLiAqLworICAgIHNpbXBsZV9leHByZXNzaW9uID0gZnN0cmluZ19jb21waWxlX2V4cHIoZXhwcl9zdGFydCwgZXhwcl9lbmQsIGMsIG4pOworICAgIGlmICghc2ltcGxlX2V4cHJlc3Npb24pCisgICAgICAgIHJldHVybiAtMTsKKworICAgIC8qIENoZWNrIGZvciBhIGNvbnZlcnNpb24gY2hhciwgaWYgcHJlc2VudC4gKi8KKyAgICBpZiAoKipzdHIgPT0gJyEnKSB7CisgICAgICAgICpzdHIgKz0gMTsKKyAgICAgICAgaWYgKCpzdHIgPj0gZW5kKQorICAgICAgICAgICAgZ290byB1bmV4cGVjdGVkX2VuZF9vZl9zdHJpbmc7CisKKyAgICAgICAgY29udmVyc2lvbiA9ICoqc3RyOworICAgICAgICAqc3RyICs9IDE7CisKKyAgICAgICAgLyogVmFsaWRhdGUgdGhlIGNvbnZlcnNpb24uICovCisgICAgICAgIGlmICghKGNvbnZlcnNpb24gPT0gJ3MnIHx8IGNvbnZlcnNpb24gPT0gJ3InCisgICAgICAgICAgICAgIHx8IGNvbnZlcnNpb24gPT0gJ2EnKSkgeworICAgICAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJmLXN0cmluZzogaW52YWxpZCBjb252ZXJzaW9uIGNoYXJhY3RlcjogIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCAncycsICdyJywgb3IgJ2EnIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBDaGVjayBmb3IgdGhlIGZvcm1hdCBzcGVjLCBpZiBwcmVzZW50LiAqLworICAgIGlmICgqc3RyID49IGVuZCkKKyAgICAgICAgZ290byB1bmV4cGVjdGVkX2VuZF9vZl9zdHJpbmc7CisgICAgaWYgKCoqc3RyID09ICc6JykgeworICAgICAgICAqc3RyICs9IDE7CisgICAgICAgIGlmICgqc3RyID49IGVuZCkKKyAgICAgICAgICAgIGdvdG8gdW5leHBlY3RlZF9lbmRfb2Zfc3RyaW5nOworCisgICAgICAgIC8qIFBhcnNlIHRoZSBmb3JtYXQgc3BlYy4gKi8KKyAgICAgICAgZm9ybWF0X3NwZWMgPSBmc3RyaW5nX3BhcnNlKHN0ciwgZW5kLCByYXcsIHJlY3Vyc2VfbHZsKzEsIGMsIG4pOworICAgICAgICBpZiAoIWZvcm1hdF9zcGVjKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmICgqc3RyID49IGVuZCB8fCAqKnN0ciAhPSAnfScpCisgICAgICAgIGdvdG8gdW5leHBlY3RlZF9lbmRfb2Zfc3RyaW5nOworCisgICAgLyogV2UncmUgYXQgYSByaWdodCBicmFjZS4gQ29uc3VtZSBpdC4gKi8KKyAgICBhc3NlcnQoKnN0ciA8IGVuZCk7CisgICAgYXNzZXJ0KCoqc3RyID09ICd9Jyk7CisgICAgKnN0ciArPSAxOworCisgICAgLyogQW5kIG5vdyBjcmVhdGUgdGhlIEZvcm1hdHRlZFZhbHVlIG5vZGUgdGhhdCByZXByZXNlbnRzIHRoaXMKKyAgICAgICBlbnRpcmUgZXhwcmVzc2lvbiB3aXRoIHRoZSBjb252ZXJzaW9uIGFuZCBmb3JtYXQgc3BlYy4gKi8KKyAgICAqZXhwcmVzc2lvbiA9IEZvcm1hdHRlZFZhbHVlKHNpbXBsZV9leHByZXNzaW9uLCBjb252ZXJzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0X3NwZWMsIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy0+Y19hcmVuYSk7CisgICAgaWYgKCEqZXhwcmVzc2lvbikKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgcmV0dXJuIDA7CisKK3VuZXhwZWN0ZWRfZW5kX29mX3N0cmluZzoKKyAgICBhc3RfZXJyb3IoYywgbiwgImYtc3RyaW5nOiBleHBlY3RpbmcgJ30nIik7CisgICAgcmV0dXJuIC0xOworfQorCisvKiBSZXR1cm4gLTEgb24gZXJyb3IuCisKKyAgIFJldHVybiAwIGlmIHdlIGhhdmUgYSBsaXRlcmFsIChwb3NzaWJsZSB6ZXJvIGxlbmd0aCkgYW5kIGFuCisgICBleHByZXNzaW9uICh6ZXJvIGxlbmd0aCBpZiBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuCisKKyAgIFJldHVybiAxIGlmIHdlIGhhdmUgYSBsaXRlcmFsLCBidXQgbm8gZXhwcmVzc2lvbiwgYW5kIHdlIHdhbnQgdGhlCisgICBjYWxsZXIgdG8gY2FsbCB1cyBhZ2Fpbi4gVGhpcyBpcyB1c2VkIHRvIGRlYWwgd2l0aCBkb3VibGVkCisgICBicmFjZXMuCisKKyAgIFdoZW4gY2FsbGVkIG11bHRpcGxlIHRpbWVzIG9uIHRoZSBzdHJpbmcgJ2F7e2J7MH1jJywgdGhpcyBmdW5jdGlvbgorICAgd2lsbCByZXR1cm46CisKKyAgIDEuIHRoZSBsaXRlcmFsICdheycgd2l0aCBubyBleHByZXNzaW9uLCBhbmQgYSByZXR1cm4gdmFsdWUKKyAgICAgIG9mIDEuIERlc3BpdGUgdGhlIGZhY3QgdGhhdCB0aGVyZSdzIG5vIGV4cHJlc3Npb24sIHRoZSByZXR1cm4KKyAgICAgIHZhbHVlIG9mIDEgbWVhbnMgd2UncmUgbm90IGZpbmlzaGVkIHlldC4KKworICAgMi4gdGhlIGxpdGVyYWwgJ2InIGFuZCB0aGUgZXhwcmVzc2lvbiAnMCcsIHdpdGggYSByZXR1cm4gdmFsdWUgb2YKKyAgICAgIDAuIFRoZSBmYWN0IHRoYXQgdGhlcmUncyBhbiBleHByZXNzaW9uIG1lYW5zIHdlJ3JlIG5vdCBmaW5pc2hlZC4KKworICAgMy4gbGl0ZXJhbCAnYycgd2l0aCBubyBleHByZXNzaW9uIGFuZCBhIHJldHVybiB2YWx1ZSBvZiAwLiBUaGUKKyAgICAgIGNvbWJpbmF0aW9uIG9mIHRoZSByZXR1cm4gdmFsdWUgb2YgMCB3aXRoIG5vIGV4cHJlc3Npb24gbWVhbnMKKyAgICAgIHdlJ3JlIGZpbmlzaGVkLgorKi8KK3N0YXRpYyBpbnQKK2ZzdHJpbmdfZmluZF9saXRlcmFsX2FuZF9leHByKGNvbnN0IGNoYXIgKipzdHIsIGNvbnN0IGNoYXIgKmVuZCwgaW50IHJhdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZWN1cnNlX2x2bCwgUHlPYmplY3QgKipsaXRlcmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcl90eSAqZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4pCit7CisgICAgaW50IHJlc3VsdDsKKworICAgIGFzc2VydCgqbGl0ZXJhbCA9PSBOVUxMICYmICpleHByZXNzaW9uID09IE5VTEwpOworCisgICAgLyogR2V0IGFueSBsaXRlcmFsIHN0cmluZy4gKi8KKyAgICByZXN1bHQgPSBmc3RyaW5nX2ZpbmRfbGl0ZXJhbChzdHIsIGVuZCwgcmF3LCBsaXRlcmFsLCByZWN1cnNlX2x2bCwgYywgbik7CisgICAgaWYgKHJlc3VsdCA8IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBhc3NlcnQocmVzdWx0ID09IDAgfHwgcmVzdWx0ID09IDEpOworCisgICAgaWYgKHJlc3VsdCA9PSAxKQorICAgICAgICAvKiBXZSBoYXZlIGEgbGl0ZXJhbCwgYnV0IGRvbid0IGxvb2sgYXQgdGhlIGV4cHJlc3Npb24uICovCisgICAgICAgIHJldHVybiAxOworCisgICAgaWYgKCpzdHIgPj0gZW5kIHx8ICoqc3RyID09ICd9JykKKyAgICAgICAgLyogV2UncmUgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nIG9yIHRoZSBlbmQgb2YgYSBuZXN0ZWQKKyAgICAgICAgICAgZi1zdHJpbmc6IG5vIGV4cHJlc3Npb24uIFRoZSB0b3AtbGV2ZWwgZXJyb3IgY2FzZSB3aGVyZSB3ZQorICAgICAgICAgICBleHBlY3QgdG8gYmUgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nIGJ1dCB3ZSdyZSBhdCBhICd9JyBpcworICAgICAgICAgICBoYW5kbGVkIGxhdGVyLiAqLworICAgICAgICByZXR1cm4gMDsKKworICAgIC8qIFdlIG11c3Qgbm93IGJlIHRoZSBzdGFydCBvZiBhbiBleHByZXNzaW9uLCBvbiBhICd7Jy4gKi8KKyAgICBhc3NlcnQoKipzdHIgPT0gJ3snKTsKKworICAgIGlmIChmc3RyaW5nX2ZpbmRfZXhwcihzdHIsIGVuZCwgcmF3LCByZWN1cnNlX2x2bCwgZXhwcmVzc2lvbiwgYywgbikgPCAwKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgcmV0dXJuIDA7CisKK2Vycm9yOgorICAgIFB5X0NMRUFSKCpsaXRlcmFsKTsKKyAgICByZXR1cm4gLTE7Cit9CisKKyNkZWZpbmUgRVhQUkxJU1RfTl9DQUNIRUQgIDY0CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICAvKiBJbmNyZW1lbnRhbGx5IGJ1aWxkIGFuIGFycmF5IG9mIGV4cHJfdHksIHNvIGJlIHVzZWQgaW4gYW4KKyAgICAgICBhc2RsX3NlcS4gQ2FjaGUgc29tZSBzbWFsbCBidXQgcmVhc29uYWJseSBzaXplZCBudW1iZXIgb2YKKyAgICAgICBleHByX3R5J3MsIGFuZCB0aGVuIGFmdGVyIHRoYXQgc3RhcnQgZHluYW1pY2FsbHkgYWxsb2NhdGluZywKKyAgICAgICBkb3VibGluZyB0aGUgbnVtYmVyIGFsbG9jYXRlZCBlYWNoIHRpbWUuIE5vdGUgdGhhdCB0aGUgZi1zdHJpbmcKKyAgICAgICBmJ3swfWF7MX0nIGNvbnRhaW5zIDMgZXhwcl90eSdzOiAyIEZvcm1hdHRlZFZhbHVlJ3MsIGFuZCBvbmUKKyAgICAgICBTdHIgZm9yIHRoZSBsaXRlcmFsICdhJy4gU28geW91IGFkZCBleHByX3R5J3MgYWJvdXQgdHdpY2UgYXMKKyAgICAgICBmYXN0IGFzIHlvdSBhZGQgZXhyZXNzaW9ucyBpbiBhbiBmLXN0cmluZy4gKi8KKworICAgIFB5X3NzaXplX3QgYWxsb2NhdGVkOyAgLyogTnVtYmVyIHdlJ3ZlIGFsbG9jYXRlZC4gKi8KKyAgICBQeV9zc2l6ZV90IHNpemU7ICAgICAgIC8qIE51bWJlciB3ZSd2ZSB1c2VkLiAqLworICAgIGV4cHJfdHkgICAgKnA7ICAgICAgICAgLyogUG9pbnRlciB0byB0aGUgbWVtb3J5IHdlJ3JlIGFjdHVhbGx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZy4gV2lsbCBwb2ludCB0byAnZGF0YScgdW50aWwgd2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0IGR5bmFtaWNhbGx5IGFsbG9jYXRpbmcuICovCisgICAgZXhwcl90eSAgICBkYXRhW0VYUFJMSVNUX05fQ0FDSEVEXTsKK30gRXhwckxpc3Q7CisKKyNpZmRlZiBOREVCVUcKKyNkZWZpbmUgRXhwckxpc3RfY2hlY2tfaW52YXJpYW50cyhsKQorI2Vsc2UKK3N0YXRpYyB2b2lkCitFeHByTGlzdF9jaGVja19pbnZhcmlhbnRzKEV4cHJMaXN0ICpsKQoreworICAgIC8qIENoZWNrIG91ciBpbnZhcmlhbnRzLiBNYWtlIHN1cmUgdGhpcyBvYmplY3QgaXMgImxpdmUiLCBhbmQKKyAgICAgICBoYXNuJ3QgYmVlbiBkZWFsbG9jYXRlZC4gKi8KKyAgICBhc3NlcnQobC0+c2l6ZSA+PSAwKTsKKyAgICBhc3NlcnQobC0+cCAhPSBOVUxMKTsKKyAgICBpZiAobC0+c2l6ZSA8PSBFWFBSTElTVF9OX0NBQ0hFRCkKKyAgICAgICAgYXNzZXJ0KGwtPmRhdGEgPT0gbC0+cCk7Cit9CisjZW5kaWYKKworc3RhdGljIHZvaWQKK0V4cHJMaXN0X0luaXQoRXhwckxpc3QgKmwpCit7CisgICAgbC0+YWxsb2NhdGVkID0gRVhQUkxJU1RfTl9DQUNIRUQ7CisgICAgbC0+c2l6ZSA9IDA7CisKKyAgICAvKiBVbnRpbCB3ZSBzdGFydCBhbGxvY2F0aW5nIGR5bmFtaWNhbGx5LCBwIHBvaW50cyB0byBkYXRhLiAqLworICAgIGwtPnAgPSBsLT5kYXRhOworCisgICAgRXhwckxpc3RfY2hlY2tfaW52YXJpYW50cyhsKTsKK30KKworc3RhdGljIGludAorRXhwckxpc3RfQXBwZW5kKEV4cHJMaXN0ICpsLCBleHByX3R5IGV4cCkKK3sKKyAgICBFeHByTGlzdF9jaGVja19pbnZhcmlhbnRzKGwpOworICAgIGlmIChsLT5zaXplID49IGwtPmFsbG9jYXRlZCkgeworICAgICAgICAvKiBXZSBuZWVkIHRvIGFsbG9jIChvciByZWFsbG9jKSB0aGUgbWVtb3J5LiAqLworICAgICAgICBQeV9zc2l6ZV90IG5ld19zaXplID0gbC0+YWxsb2NhdGVkICogMjsKKworICAgICAgICAvKiBTZWUgaWYgd2UndmUgZXZlciBhbGxvY2F0ZWQgYW55dGhpbmcgZHluYW1pY2FsbHkuICovCisgICAgICAgIGlmIChsLT5wID09IGwtPmRhdGEpIHsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKKyAgICAgICAgICAgIC8qIFdlJ3JlIHN0aWxsIHVzaW5nIHRoZSBjYWNoZWQgZGF0YS4gU3dpdGNoIHRvCisgICAgICAgICAgICAgICBhbGxvYy1pbmcuICovCisgICAgICAgICAgICBsLT5wID0gUHlNZW1fUmF3TWFsbG9jKHNpemVvZihleHByX3R5KSAqIG5ld19zaXplKTsKKyAgICAgICAgICAgIGlmICghbC0+cCkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAvKiBDb3B5IHRoZSBjYWNoZWQgZGF0YSBpbnRvIHRoZSBuZXcgYnVmZmVyLiAqLworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGwtPnNpemU7IGkrKykKKyAgICAgICAgICAgICAgICBsLT5wW2ldID0gbC0+ZGF0YVtpXTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8qIEp1c3QgcmVhbGxvYy4gKi8KKyAgICAgICAgICAgIGV4cHJfdHkgKnRtcCA9IFB5TWVtX1Jhd1JlYWxsb2MobC0+cCwgc2l6ZW9mKGV4cHJfdHkpICogbmV3X3NpemUpOworICAgICAgICAgICAgaWYgKCF0bXApIHsKKyAgICAgICAgICAgICAgICBQeU1lbV9SYXdGcmVlKGwtPnApOworICAgICAgICAgICAgICAgIGwtPnAgPSBOVUxMOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGwtPnAgPSB0bXA7CisgICAgICAgIH0KKworICAgICAgICBsLT5hbGxvY2F0ZWQgPSBuZXdfc2l6ZTsKKyAgICAgICAgYXNzZXJ0KGwtPmFsbG9jYXRlZCA9PSAyICogbC0+c2l6ZSk7CisgICAgfQorCisgICAgbC0+cFtsLT5zaXplKytdID0gZXhwOworCisgICAgRXhwckxpc3RfY2hlY2tfaW52YXJpYW50cyhsKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK0V4cHJMaXN0X0RlYWxsb2MoRXhwckxpc3QgKmwpCit7CisgICAgRXhwckxpc3RfY2hlY2tfaW52YXJpYW50cyhsKTsKKworICAgIC8qIElmIHRoZXJlJ3MgYmVlbiBhbiBlcnJvciwgb3Igd2UndmUgbmV2ZXIgZHluYW1pY2FsbHkgYWxsb2NhdGVkLAorICAgICAgIGRvIG5vdGhpbmcuICovCisgICAgaWYgKCFsLT5wIHx8IGwtPnAgPT0gbC0+ZGF0YSkgeworICAgICAgICAvKiBEbyBub3RoaW5nLiAqLworICAgIH0gZWxzZSB7CisgICAgICAgIC8qIFdlIGhhdmUgZHluYW1pY2FsbHkgYWxsb2NhdGVkLiBGcmVlIHRoZSBtZW1vcnkuICovCisgICAgICAgIFB5TWVtX1Jhd0ZyZWUobC0+cCk7CisgICAgfQorICAgIGwtPnAgPSBOVUxMOworICAgIGwtPnNpemUgPSAtMTsKK30KKworc3RhdGljIGFzZGxfc2VxICoKK0V4cHJMaXN0X0ZpbmlzaChFeHByTGlzdCAqbCwgUHlBcmVuYSAqYXJlbmEpCit7CisgICAgYXNkbF9zZXEgKnNlcTsKKworICAgIEV4cHJMaXN0X2NoZWNrX2ludmFyaWFudHMobCk7CisKKyAgICAvKiBBbGxvY2F0ZSB0aGUgYXNkbF9zZXEgYW5kIGNvcHkgdGhlIGV4cHJlc3Npb25zIGluIHRvIGl0LiAqLworICAgIHNlcSA9IF9QeV9hc2RsX3NlcV9uZXcobC0+c2l6ZSwgYXJlbmEpOworICAgIGlmIChzZXEpIHsKKyAgICAgICAgUHlfc3NpemVfdCBpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbC0+c2l6ZTsgaSsrKQorICAgICAgICAgICAgYXNkbF9zZXFfU0VUKHNlcSwgaSwgbC0+cFtpXSk7CisgICAgfQorICAgIEV4cHJMaXN0X0RlYWxsb2MobCk7CisgICAgcmV0dXJuIHNlcTsKK30KKworLyogVGhlIEZzdHJpbmdQYXJzZXIgaXMgZGVzaWduZWQgdG8gYWRkIGEgbWl4IG9mIHN0cmluZ3MgYW5kCisgICBmLXN0cmluZ3MsIGFuZCBjb25jYXQgdGhlbSB0b2dldGhlciBhcyBuZWVkZWQuIFVsdGltYXRlbHksIGl0CisgICBnZW5lcmF0ZXMgYW4gZXhwcl90eS4gKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdCAqbGFzdF9zdHI7CisgICAgRXhwckxpc3QgZXhwcl9saXN0OworICAgIGludCBmbW9kZTsKK30gRnN0cmluZ1BhcnNlcjsKKworI2lmZGVmIE5ERUJVRworI2RlZmluZSBGc3RyaW5nUGFyc2VyX2NoZWNrX2ludmFyaWFudHMoc3RhdGUpCisjZWxzZQorc3RhdGljIHZvaWQKK0ZzdHJpbmdQYXJzZXJfY2hlY2tfaW52YXJpYW50cyhGc3RyaW5nUGFyc2VyICpzdGF0ZSkKK3sKKyAgICBpZiAoc3RhdGUtPmxhc3Rfc3RyKQorICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrRXhhY3Qoc3RhdGUtPmxhc3Rfc3RyKSk7CisgICAgRXhwckxpc3RfY2hlY2tfaW52YXJpYW50cygmc3RhdGUtPmV4cHJfbGlzdCk7Cit9CisjZW5kaWYKKworc3RhdGljIHZvaWQKK0ZzdHJpbmdQYXJzZXJfSW5pdChGc3RyaW5nUGFyc2VyICpzdGF0ZSkKK3sKKyAgICBzdGF0ZS0+bGFzdF9zdHIgPSBOVUxMOworICAgIHN0YXRlLT5mbW9kZSA9IDA7CisgICAgRXhwckxpc3RfSW5pdCgmc3RhdGUtPmV4cHJfbGlzdCk7CisgICAgRnN0cmluZ1BhcnNlcl9jaGVja19pbnZhcmlhbnRzKHN0YXRlKTsKK30KKworc3RhdGljIHZvaWQKK0ZzdHJpbmdQYXJzZXJfRGVhbGxvYyhGc3RyaW5nUGFyc2VyICpzdGF0ZSkKK3sKKyAgICBGc3RyaW5nUGFyc2VyX2NoZWNrX2ludmFyaWFudHMoc3RhdGUpOworCisgICAgUHlfWERFQ1JFRihzdGF0ZS0+bGFzdF9zdHIpOworICAgIEV4cHJMaXN0X0RlYWxsb2MoJnN0YXRlLT5leHByX2xpc3QpOworfQorCisvKiBNYWtlIGEgU3RyIG5vZGUsIGJ1dCBkZWNyZWYgdGhlIFB5VW5pY29kZSBvYmplY3QgYmVpbmcgYWRkZWQuICovCitzdGF0aWMgZXhwcl90eQorbWFrZV9zdHJfbm9kZV9hbmRfZGVsKFB5T2JqZWN0ICoqc3RyLCBzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlKiBuKQoreworICAgIFB5T2JqZWN0ICpzID0gKnN0cjsKKyAgICAqc3RyID0gTlVMTDsKKyAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrRXhhY3QocykpOworICAgIGlmIChQeUFyZW5hX0FkZFB5T2JqZWN0KGMtPmNfYXJlbmEsIHMpIDwgMCkgeworICAgICAgICBQeV9ERUNSRUYocyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gU3RyKHMsIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKK30KKworLyogQWRkIGEgbm9uLWYtc3RyaW5nICh0aGF0IGlzLCBhIHJlZ3VsYXIgbGl0ZXJhbCBzdHJpbmcpLiBzdHIgaXMKKyAgIGRlY3JlZidkLiAqLworc3RhdGljIGludAorRnN0cmluZ1BhcnNlcl9Db25jYXRBbmREZWwoRnN0cmluZ1BhcnNlciAqc3RhdGUsIFB5T2JqZWN0ICpzdHIpCit7CisgICAgRnN0cmluZ1BhcnNlcl9jaGVja19pbnZhcmlhbnRzKHN0YXRlKTsKKworICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2tFeGFjdChzdHIpKTsKKworICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpID09IDApIHsKKyAgICAgICAgUHlfREVDUkVGKHN0cik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGlmICghc3RhdGUtPmxhc3Rfc3RyKSB7CisgICAgICAgIC8qIFdlIGRpZG4ndCBoYXZlIGEgc3RyaW5nIGJlZm9yZSwgc28ganVzdCByZW1lbWJlciB0aGlzIG9uZS4gKi8KKyAgICAgICAgc3RhdGUtPmxhc3Rfc3RyID0gc3RyOworICAgIH0gZWxzZSB7CisgICAgICAgIC8qIENvbmNhdGVuYXRlIHRoaXMgd2l0aCB0aGUgcHJldmlvdXMgc3RyaW5nLiAqLworICAgICAgICBQeVVuaWNvZGVfQXBwZW5kQW5kRGVsKCZzdGF0ZS0+bGFzdF9zdHIsIHN0cik7CisgICAgICAgIGlmICghc3RhdGUtPmxhc3Rfc3RyKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBGc3RyaW5nUGFyc2VyX2NoZWNrX2ludmFyaWFudHMoc3RhdGUpOworICAgIHJldHVybiAwOworfQorCisvKiBQYXJzZSBhbiBmLXN0cmluZy4gVGhlIGYtc3RyaW5nIGlzIGluICpzdHIgdG8gZW5kLCB3aXRoIG5vCisgICAnZicgb3IgcXVvdGVzLiAqLworc3RhdGljIGludAorRnN0cmluZ1BhcnNlcl9Db25jYXRGc3RyaW5nKEZzdHJpbmdQYXJzZXIgKnN0YXRlLCBjb25zdCBjaGFyICoqc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuZCwgaW50IHJhdywgaW50IHJlY3Vyc2VfbHZsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4pCit7CisgICAgRnN0cmluZ1BhcnNlcl9jaGVja19pbnZhcmlhbnRzKHN0YXRlKTsKKyAgICBzdGF0ZS0+Zm1vZGUgPSAxOworCisgICAgLyogUGFyc2UgdGhlIGYtc3RyaW5nLiAqLworICAgIHdoaWxlICgxKSB7CisgICAgICAgIFB5T2JqZWN0ICpsaXRlcmFsID0gTlVMTDsKKyAgICAgICAgZXhwcl90eSBleHByZXNzaW9uID0gTlVMTDsKKworICAgICAgICAvKiBJZiB0aGVyZSdzIGEgemVybyBsZW5ndGggbGl0ZXJhbCBpbiBmcm9udCBvZiB0aGUKKyAgICAgICAgICAgZXhwcmVzc2lvbiwgbGl0ZXJhbCB3aWxsIGJlIE5VTEwuIElmIHdlJ3JlIGF0IHRoZSBlbmQgb2YKKyAgICAgICAgICAgdGhlIGYtc3RyaW5nLCBleHByZXNzaW9uIHdpbGwgYmUgTlVMTCAodW5sZXNzIHJlc3VsdCA9PSAxLAorICAgICAgICAgICBzZWUgYmVsb3cpLiAqLworICAgICAgICBpbnQgcmVzdWx0ID0gZnN0cmluZ19maW5kX2xpdGVyYWxfYW5kX2V4cHIoc3RyLCBlbmQsIHJhdywgcmVjdXJzZV9sdmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbGl0ZXJhbCwgJmV4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLCBuKTsKKyAgICAgICAgaWYgKHJlc3VsdCA8IDApCisgICAgICAgICAgICByZXR1cm4gLTE7CisKKyAgICAgICAgLyogQWRkIHRoZSBsaXRlcmFsLCBpZiBhbnkuICovCisgICAgICAgIGlmICghbGl0ZXJhbCkgeworICAgICAgICAgICAgLyogRG8gbm90aGluZy4gSnVzdCBsZWF2ZSBsYXN0X3N0ciBhbG9uZSAoYW5kIHBvc3NpYmx5CisgICAgICAgICAgICAgICBOVUxMKS4gKi8KKyAgICAgICAgfSBlbHNlIGlmICghc3RhdGUtPmxhc3Rfc3RyKSB7CisgICAgICAgICAgICBzdGF0ZS0+bGFzdF9zdHIgPSBsaXRlcmFsOworICAgICAgICAgICAgbGl0ZXJhbCA9IE5VTEw7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvKiBXZSBoYXZlIGEgbGl0ZXJhbCwgY29uY2F0ZW5hdGUgaXQuICovCisgICAgICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0dFVF9MRU5HVEgobGl0ZXJhbCkgIT0gMCk7CisgICAgICAgICAgICBpZiAoRnN0cmluZ1BhcnNlcl9Db25jYXRBbmREZWwoc3RhdGUsIGxpdGVyYWwpIDwgMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICBsaXRlcmFsID0gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnQoIXN0YXRlLT5sYXN0X3N0ciB8fAorICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RhdGUtPmxhc3Rfc3RyKSAhPSAwKTsKKworICAgICAgICAvKiBXZSd2ZSBkZWFsdCB3aXRoIHRoZSBsaXRlcmFsIG5vdy4gSXQgY2FuJ3QgYmUgbGVha2VkIG9uIGZ1cnRoZXIKKyAgICAgICAgICAgZXJyb3JzLiAqLworICAgICAgICBhc3NlcnQobGl0ZXJhbCA9PSBOVUxMKTsKKworICAgICAgICAvKiBTZWUgaWYgd2Ugc2hvdWxkIGp1c3QgbG9vcCBhcm91bmQgdG8gZ2V0IHRoZSBuZXh0IGxpdGVyYWwKKyAgICAgICAgICAgYW5kIGV4cHJlc3Npb24sIHdoaWxlIGlnbm9yaW5nIHRoZSBleHByZXNzaW9uIHRoaXMKKyAgICAgICAgICAgdGltZS4gVGhpcyBpcyB1c2VkIGZvciB1bi1kb3VibGluZyBicmFjZXMsIGFzIGFuCisgICAgICAgICAgIG9wdGltaXphdGlvbi4gKi8KKyAgICAgICAgaWYgKHJlc3VsdCA9PSAxKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKCFleHByZXNzaW9uKQorICAgICAgICAgICAgLyogV2UncmUgZG9uZSB3aXRoIHRoaXMgZi1zdHJpbmcuICovCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAvKiBXZSBrbm93IHdlIGhhdmUgYW4gZXhwcmVzc2lvbi4gQ29udmVydCBhbnkgZXhpc3Rpbmcgc3RyaW5nCisgICAgICAgICAgIHRvIGEgU3RyIG5vZGUuICovCisgICAgICAgIGlmICghc3RhdGUtPmxhc3Rfc3RyKSB7CisgICAgICAgICAgICAvKiBEbyBub3RoaW5nLiBObyBwcmV2aW91cyBsaXRlcmFsLiAqLworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLyogQ29udmVydCB0aGUgZXhpc3RpbmcgbGFzdF9zdHIgbGl0ZXJhbCB0byBhIFN0ciBub2RlLiAqLworICAgICAgICAgICAgZXhwcl90eSBzdHIgPSBtYWtlX3N0cl9ub2RlX2FuZF9kZWwoJnN0YXRlLT5sYXN0X3N0ciwgYywgbik7CisgICAgICAgICAgICBpZiAoIXN0ciB8fCBFeHByTGlzdF9BcHBlbmQoJnN0YXRlLT5leHByX2xpc3QsIHN0cikgPCAwKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChFeHByTGlzdF9BcHBlbmQoJnN0YXRlLT5leHByX2xpc3QsIGV4cHJlc3Npb24pIDwgMCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICAvKiBJZiByZWN1cnNlX2x2bCBpcyB6ZXJvLCB0aGVuIHdlIG11c3QgYmUgYXQgdGhlIGVuZCBvZiB0aGUKKyAgICAgICBzdHJpbmcuIE90aGVyd2lzZSwgd2UgbXVzdCBiZSBhdCBhIHJpZ2h0IGJyYWNlLiAqLworCisgICAgaWYgKHJlY3Vyc2VfbHZsID09IDAgJiYgKnN0ciA8IGVuZC0xKSB7CisgICAgICAgIGFzdF9lcnJvcihjLCBuLCAiZi1zdHJpbmc6IHVuZXhwZWN0ZWQgZW5kIG9mIHN0cmluZyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChyZWN1cnNlX2x2bCAhPSAwICYmICoqc3RyICE9ICd9JykgeworICAgICAgICBhc3RfZXJyb3IoYywgbiwgImYtc3RyaW5nOiBleHBlY3RpbmcgJ30nIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBGc3RyaW5nUGFyc2VyX2NoZWNrX2ludmFyaWFudHMoc3RhdGUpOworICAgIHJldHVybiAwOworfQorCisvKiBDb252ZXJ0IHRoZSBwYXJ0aWFsIHN0YXRlIHJlZmxlY3RlZCBpbiBsYXN0X3N0ciBhbmQgZXhwcl9saXN0IHRvIGFuCisgICBleHByX3R5LiBUaGUgZXhwcl90eSBjYW4gYmUgYSBTdHIsIG9yIGEgSm9pbmVkU3RyLiAqLworc3RhdGljIGV4cHJfdHkKK0ZzdHJpbmdQYXJzZXJfRmluaXNoKEZzdHJpbmdQYXJzZXIgKnN0YXRlLCBzdHJ1Y3QgY29tcGlsaW5nICpjLAorICAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9kZSAqbikKK3sKKyAgICBhc2RsX3NlcSAqc2VxOworCisgICAgRnN0cmluZ1BhcnNlcl9jaGVja19pbnZhcmlhbnRzKHN0YXRlKTsKKworICAgIC8qIElmIHdlJ3JlIGp1c3QgYSBjb25zdGFudCBzdHJpbmcgd2l0aCBubyBleHByZXNzaW9ucywgcmV0dXJuCisgICAgICAgdGhhdC4gKi8KKyAgICBpZiAoIXN0YXRlLT5mbW9kZSkgeworICAgICAgICBhc3NlcnQoIXN0YXRlLT5leHByX2xpc3Quc2l6ZSk7CisgICAgICAgIGlmICghc3RhdGUtPmxhc3Rfc3RyKSB7CisgICAgICAgICAgICAvKiBDcmVhdGUgYSB6ZXJvIGxlbmd0aCBzdHJpbmcuICovCisgICAgICAgICAgICBzdGF0ZS0+bGFzdF9zdHIgPSBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgMCk7CisgICAgICAgICAgICBpZiAoIXN0YXRlLT5sYXN0X3N0cikKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIHJldHVybiBtYWtlX3N0cl9ub2RlX2FuZF9kZWwoJnN0YXRlLT5sYXN0X3N0ciwgYywgbik7CisgICAgfQorCisgICAgLyogQ3JlYXRlIGEgU3RyIG5vZGUgb3V0IG9mIGxhc3Rfc3RyLCBpZiBuZWVkZWQuIEl0IHdpbGwgYmUgdGhlCisgICAgICAgbGFzdCBub2RlIGluIG91ciBleHByZXNzaW9uIGxpc3QuICovCisgICAgaWYgKHN0YXRlLT5sYXN0X3N0cikgeworICAgICAgICBleHByX3R5IHN0ciA9IG1ha2Vfc3RyX25vZGVfYW5kX2RlbCgmc3RhdGUtPmxhc3Rfc3RyLCBjLCBuKTsKKyAgICAgICAgaWYgKCFzdHIgfHwgRXhwckxpc3RfQXBwZW5kKCZzdGF0ZS0+ZXhwcl9saXN0LCBzdHIpIDwgMCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIC8qIFRoaXMgaGFzIGFscmVhZHkgYmVlbiBmcmVlZC4gKi8KKyAgICBhc3NlcnQoc3RhdGUtPmxhc3Rfc3RyID09IE5VTEwpOworCisgICAgc2VxID0gRXhwckxpc3RfRmluaXNoKCZzdGF0ZS0+ZXhwcl9saXN0LCBjLT5jX2FyZW5hKTsKKyAgICBpZiAoIXNlcSkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIHJldHVybiBKb2luZWRTdHIoc2VxLCBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CisKK2Vycm9yOgorICAgIEZzdHJpbmdQYXJzZXJfRGVhbGxvYyhzdGF0ZSk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKy8qIEdpdmVuIGFuIGYtc3RyaW5nICh3aXRoIG5vICdmJyBvciBxdW90ZXMpIHRoYXQncyBpbiAqc3RyIGFuZCBlbmRzCisgICBhdCBlbmQsIHBhcnNlIGl0IGludG8gYW4gZXhwcl90eS4gIFJldHVybiBOVUxMIG9uIGVycm9yLiAgQWRqdXN0CisgICBzdHIgdG8gcG9pbnQgcGFzdCB0aGUgcGFyc2VkIHBvcnRpb24uICovCitzdGF0aWMgZXhwcl90eQorZnN0cmluZ19wYXJzZShjb25zdCBjaGFyICoqc3RyLCBjb25zdCBjaGFyICplbmQsIGludCByYXcsIGludCByZWN1cnNlX2x2bCwKKyAgICAgICAgICAgICAgc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbikKK3sKKyAgICBGc3RyaW5nUGFyc2VyIHN0YXRlOworCisgICAgRnN0cmluZ1BhcnNlcl9Jbml0KCZzdGF0ZSk7CisgICAgaWYgKEZzdHJpbmdQYXJzZXJfQ29uY2F0RnN0cmluZygmc3RhdGUsIHN0ciwgZW5kLCByYXcsIHJlY3Vyc2VfbHZsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYywgbikgPCAwKSB7CisgICAgICAgIEZzdHJpbmdQYXJzZXJfRGVhbGxvYygmc3RhdGUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gRnN0cmluZ1BhcnNlcl9GaW5pc2goJnN0YXRlLCBjLCBuKTsKK30KKworLyogbiBpcyBhIFB5dGhvbiBzdHJpbmcgbGl0ZXJhbCwgaW5jbHVkaW5nIHRoZSBicmFja2V0aW5nIHF1b3RlCisgICBjaGFyYWN0ZXJzLCBhbmQgciwgYiwgdSwgJi9vciBmIHByZWZpeGVzIChpZiBhbnkpLCBhbmQgZW1iZWRkZWQKKyAgIGVzY2FwZSBzZXF1ZW5jZXMgKGlmIGFueSkuIHBhcnNlc3RyIHBhcnNlcyBpdCwgYW5kIHNldHMgKnJlc3VsdCB0bworICAgZGVjb2RlZCBQeXRob24gc3RyaW5nIG9iamVjdC4gIElmIHRoZSBzdHJpbmcgaXMgYW4gZi1zdHJpbmcsIHNldAorICAgKmZzdHIgYW5kICpmc3RybGVuIHRvIHRoZSB1bnBhcnNlZCBzdHJpbmcgb2JqZWN0LiAgUmV0dXJuIDAgaWYgbm8KKyAgIGVycm9ycyBvY2N1cnJlZC4KKyovCitzdGF0aWMgaW50CitwYXJzZXN0cihzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuLCBpbnQgKmJ5dGVzbW9kZSwgaW50ICpyYXdtb2RlLAorICAgICAgICAgUHlPYmplY3QgKipyZXN1bHQsIGNvbnN0IGNoYXIgKipmc3RyLCBQeV9zc2l6ZV90ICpmc3RybGVuKQogewogICAgIHNpemVfdCBsZW47CiAgICAgY29uc3QgY2hhciAqcyA9IFNUUihuKTsKICAgICBpbnQgcXVvdGUgPSBQeV9DSEFSTUFTSygqcyk7Ci0gICAgaW50IHJhd21vZGUgPSAwOwotICAgIGludCBuZWVkX2VuY29kaW5nOworICAgIGludCBmbW9kZSA9IDA7CisgICAgKmJ5dGVzbW9kZSA9IDA7CisgICAgKnJhd21vZGUgPSAwOworICAgICpyZXN1bHQgPSBOVUxMOworICAgICpmc3RyID0gTlVMTDsKICAgICBpZiAoUHlfSVNBTFBIQShxdW90ZSkpIHsKLSAgICAgICAgd2hpbGUgKCEqYnl0ZXNtb2RlIHx8ICFyYXdtb2RlKSB7CisgICAgICAgIHdoaWxlICghKmJ5dGVzbW9kZSB8fCAhKnJhd21vZGUpIHsKICAgICAgICAgICAgIGlmIChxdW90ZSA9PSAnYicgfHwgcXVvdGUgPT0gJ0InKSB7CiAgICAgICAgICAgICAgICAgcXVvdGUgPSAqKytzOwogICAgICAgICAgICAgICAgICpieXRlc21vZGUgPSAxOwpAQCAtNDAyNCwxMTQgKzUwNDQsMTcwIEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChxdW90ZSA9PSAncicgfHwgcXVvdGUgPT0gJ1InKSB7CiAgICAgICAgICAgICAgICAgcXVvdGUgPSAqKytzOwotICAgICAgICAgICAgICAgIHJhd21vZGUgPSAxOworICAgICAgICAgICAgICAgICpyYXdtb2RlID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKHF1b3RlID09ICdmJyB8fCBxdW90ZSA9PSAnRicpIHsKKyAgICAgICAgICAgICAgICBxdW90ZSA9ICorK3M7CisgICAgICAgICAgICAgICAgZm1vZGUgPSAxOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CisgICAgaWYgKGZtb2RlICYmICpieXRlc21vZGUpIHsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CiAgICAgaWYgKHF1b3RlICE9ICdcJycgJiYgcXVvdGUgIT0gJ1wiJykgewogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9CisgICAgLyogU2tpcCB0aGUgbGVhZGluZyBxdW90ZSBjaGFyLiAqLwogICAgIHMrKzsKICAgICBsZW4gPSBzdHJsZW4ocyk7CiAgICAgaWYgKGxlbiA+IElOVF9NQVgpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAic3RyaW5nIHRvIHBhcnNlIGlzIHRvbyBsb25nIik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIGlmIChzWy0tbGVuXSAhPSBxdW90ZSkgeworICAgICAgICAvKiBMYXN0IHF1b3RlIGNoYXIgbXVzdCBtYXRjaCB0aGUgZmlyc3QuICovCiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBpZiAobGVuID49IDQgJiYgc1swXSA9PSBxdW90ZSAmJiBzWzFdID09IHF1b3RlKSB7CisgICAgICAgIC8qIEEgdHJpcGxlIHF1b3RlZCBzdHJpbmcuIFdlJ3ZlIGFscmVhZHkgc2tpcHBlZCBvbmUgcXVvdGUgYXQKKyAgICAgICAgICAgdGhlIHN0YXJ0IGFuZCBvbmUgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLiBOb3cgc2tpcCB0aGUKKyAgICAgICAgICAgdHdvIGF0IHRoZSBzdGFydC4gKi8KICAgICAgICAgcyArPSAyOwogICAgICAgICBsZW4gLT0gMjsKKyAgICAgICAgLyogQW5kIGNoZWNrIHRoYXQgdGhlIGxhc3QgdHdvIG1hdGNoLiAqLwogICAgICAgICBpZiAoc1stLWxlbl0gIT0gcXVvdGUgfHwgc1stLWxlbl0gIT0gcXVvdGUpIHsKICAgICAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKCEqYnl0ZXNtb2RlICYmICFyYXdtb2RlKSB7Ci0gICAgICAgIHJldHVybiBkZWNvZGVfdW5pY29kZShjLCBzLCBsZW4sIHJhd21vZGUsIGMtPmNfZW5jb2RpbmcpOworCisgICAgaWYgKGZtb2RlKSB7CisgICAgICAgIC8qIEp1c3QgcmV0dXJuIHRoZSBieXRlcy4gVGhlIGNhbGxlciB3aWxsIHBhcnNlIHRoZSByZXN1bHRpbmcKKyAgICAgICAgICAgc3RyaW5nLiAqLworICAgICAgICAqZnN0ciA9IHM7CisgICAgICAgICpmc3RybGVuID0gbGVuOworICAgICAgICByZXR1cm4gMDsKICAgICB9CisKKyAgICAvKiBOb3QgYW4gZi1zdHJpbmcuICovCisgICAgLyogQXZvaWQgaW52b2tpbmcgZXNjYXBlIGRlY29kaW5nIHJvdXRpbmVzIGlmIHBvc3NpYmxlLiAqLworICAgICpyYXdtb2RlID0gKnJhd21vZGUgfHwgc3RyY2hyKHMsICdcXCcpID09IE5VTEw7CiAgICAgaWYgKCpieXRlc21vZGUpIHsKLSAgICAgICAgLyogRGlzYWxsb3cgbm9uLWFzY2lpIGNoYXJhY3RlcnMgKGJ1dCBub3QgZXNjYXBlcykgKi8KKyAgICAgICAgLyogRGlzYWxsb3cgbm9uLUFTQ0lJIGNoYXJhY3RlcnMuICovCiAgICAgICAgIGNvbnN0IGNoYXIgKmNoOwogICAgICAgICBmb3IgKGNoID0gczsgKmNoOyBjaCsrKSB7CiAgICAgICAgICAgICBpZiAoUHlfQ0hBUk1BU0soKmNoKSA+PSAweDgwKSB7CiAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJieXRlcyBjYW4gb25seSBjb250YWluIEFTQ0lJICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpdGVyYWwgY2hhcmFjdGVycy4iKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgaWYgKCpyYXdtb2RlKQorICAgICAgICAgICAgKnJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUocywgbGVuKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29kZV9ieXRlc193aXRoX2VzY2FwZXMoYywgbiwgcywgbGVuKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoKnJhd21vZGUpCisgICAgICAgICAgICAqcmVzdWx0ID0gUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bChzLCBsZW4sIE5VTEwsIE5VTEwpOworICAgICAgICBlbHNlCisgICAgICAgICAgICAqcmVzdWx0ID0gZGVjb2RlX3VuaWNvZGVfd2l0aF9lc2NhcGVzKGMsIG4sIHMsIGxlbik7CiAgICAgfQotICAgIG5lZWRfZW5jb2RpbmcgPSAoISpieXRlc21vZGUgJiYgYy0+Y19lbmNvZGluZyAhPSBOVUxMICYmCi0gICAgICAgICAgICAgICAgICAgICBzdHJjbXAoYy0+Y19lbmNvZGluZywgInV0Zi04IikgIT0gMCk7Ci0gICAgaWYgKHJhd21vZGUgfHwgc3RyY2hyKHMsICdcXCcpID09IE5VTEwpIHsKLSAgICAgICAgaWYgKG5lZWRfZW5jb2RpbmcpIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICp2LCAqdSA9IFB5VW5pY29kZV9EZWNvZGVVVEY4KHMsIGxlbiwgTlVMTCk7Ci0gICAgICAgICAgICBpZiAodSA9PSBOVUxMIHx8ICEqYnl0ZXNtb2RlKQotICAgICAgICAgICAgICAgIHJldHVybiB1OwotICAgICAgICAgICAgdiA9IFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcodSwgYy0+Y19lbmNvZGluZywgTlVMTCk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodSk7Ci0gICAgICAgICAgICByZXR1cm4gdjsKLSAgICAgICAgfSBlbHNlIGlmICgqYnl0ZXNtb2RlKSB7Ci0gICAgICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShzLCBsZW4pOwotICAgICAgICB9IGVsc2UgaWYgKHN0cmNtcChjLT5jX2VuY29kaW5nLCAidXRmLTgiKSA9PSAwKSB7Ci0gICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKHMsIGxlbik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZUxhdGluMShzLCBsZW4sIE5VTEwpOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBQeUJ5dGVzX0RlY29kZUVzY2FwZShzLCBsZW4sIE5VTEwsIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWVkX2VuY29kaW5nID8gYy0+Y19lbmNvZGluZyA6IE5VTEwpOworICAgIHJldHVybiAqcmVzdWx0ID09IE5VTEwgPyAtMSA6IDA7CiB9CiAKLS8qIEJ1aWxkIGEgUHl0aG9uIHN0cmluZyBvYmplY3Qgb3V0IG9mIGEgU1RSSU5HKyBhdG9tLiAgVGhpcyB0YWtlcyBjYXJlIG9mCi0gKiBjb21waWxlLXRpbWUgbGl0ZXJhbCBjYXRlbmF0aW9uLCBjYWxsaW5nIHBhcnNlc3RyKCkgb24gZWFjaCBwaWVjZSwgYW5kCi0gKiBwYXN0aW5nIHRoZSBpbnRlcm1lZGlhdGUgcmVzdWx0cyB0b2dldGhlci4KLSAqLwotc3RhdGljIFB5T2JqZWN0ICoKLXBhcnNlc3RycGx1cyhzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuLCBpbnQgKmJ5dGVzbW9kZSkKKy8qIEFjY2VwdHMgYSBTVFJJTkcrIGF0b20sIGFuZCBwcm9kdWNlcyBhbiBleHByX3R5IG5vZGUuIFJ1biB0aHJvdWdoCisgICBlYWNoIFNUUklORyBhdG9tLCBhbmQgcHJvY2VzcyBpdCBhcyBuZWVkZWQuIEZvciBieXRlcywganVzdAorICAgY29uY2F0ZW5hdGUgdGhlbSB0b2dldGhlciwgYW5kIHRoZSByZXN1bHQgd2lsbCBiZSBhIEJ5dGVzIG5vZGUuIEZvcgorICAgbm9ybWFsIHN0cmluZ3MgYW5kIGYtc3RyaW5ncywgY29uY2F0ZW5hdGUgdGhlbSB0b2dldGhlci4gVGhlIHJlc3VsdAorICAgd2lsbCBiZSBhIFN0ciBub2RlIGlmIHRoZXJlIHdlcmUgbm8gZi1zdHJpbmdzOyBhIEZvcm1hdHRlZFZhbHVlCisgICBub2RlIGlmIHRoZXJlJ3MganVzdCBhbiBmLXN0cmluZyAod2l0aCBubyBsZWFkaW5nIG9yIHRyYWlsaW5nCisgICBsaXRlcmFscyksIG9yIGEgSm9pbmVkU3RyIG5vZGUgaWYgdGhlcmUgYXJlIG11bHRpcGxlIGYtc3RyaW5ncyBvcgorICAgYW55IGxpdGVyYWxzIGludm9sdmVkLiAqLworc3RhdGljIGV4cHJfdHkKK3BhcnNlc3RycGx1cyhzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuKQogewotICAgIFB5T2JqZWN0ICp2OworICAgIGludCBieXRlc21vZGUgPSAwOworICAgIFB5T2JqZWN0ICpieXRlc19zdHIgPSBOVUxMOwogICAgIGludCBpOwotICAgIFJFUShDSElMRChuLCAwKSwgU1RSSU5HKTsKLSAgICB2ID0gcGFyc2VzdHIoYywgQ0hJTEQobiwgMCksIGJ5dGVzbW9kZSk7Ci0gICAgaWYgKHYgIT0gTlVMTCkgewotICAgICAgICAvKiBTdHJpbmcgbGl0ZXJhbCBjb25jYXRlbmF0aW9uICovCi0gICAgICAgIGZvciAoaSA9IDE7IGkgPCBOQ0gobik7IGkrKykgewotICAgICAgICAgICAgUHlPYmplY3QgKnM7Ci0gICAgICAgICAgICBpbnQgc3ViYm0gPSAwOwotICAgICAgICAgICAgcyA9IHBhcnNlc3RyKGMsIENISUxEKG4sIGkpLCAmc3ViYm0pOwotICAgICAgICAgICAgaWYgKHMgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICBpZiAoKmJ5dGVzbW9kZSAhPSBzdWJibSkgewotICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBuLCAiY2Fubm90IG1peCBieXRlcyBhbmQgbm9uYnl0ZXMgbGl0ZXJhbHMiKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYocyk7Ci0gICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKFB5Qnl0ZXNfQ2hlY2sodikgJiYgUHlCeXRlc19DaGVjayhzKSkgewotICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQ29uY2F0QW5kRGVsKCZ2LCBzKTsKLSAgICAgICAgICAgICAgICBpZiAodiA9PSBOVUxMKQotICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqdGVtcCA9IFB5VW5pY29kZV9Db25jYXQodiwgcyk7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHMpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgICAgICB2ID0gdGVtcDsKLSAgICAgICAgICAgICAgICBpZiAodiA9PSBOVUxMKQotICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisKKyAgICBGc3RyaW5nUGFyc2VyIHN0YXRlOworICAgIEZzdHJpbmdQYXJzZXJfSW5pdCgmc3RhdGUpOworCisgICAgZm9yIChpID0gMDsgaSA8IE5DSChuKTsgaSsrKSB7CisgICAgICAgIGludCB0aGlzX2J5dGVzbW9kZTsKKyAgICAgICAgaW50IHRoaXNfcmF3bW9kZTsKKyAgICAgICAgUHlPYmplY3QgKnM7CisgICAgICAgIGNvbnN0IGNoYXIgKmZzdHI7CisgICAgICAgIFB5X3NzaXplX3QgZnN0cmxlbiA9IC0xOyAgLyogU2lsZW5jZSBhIGNvbXBpbGVyIHdhcm5pbmcuICovCisKKyAgICAgICAgUkVRKENISUxEKG4sIGkpLCBTVFJJTkcpOworICAgICAgICBpZiAocGFyc2VzdHIoYywgQ0hJTEQobiwgaSksICZ0aGlzX2J5dGVzbW9kZSwgJnRoaXNfcmF3bW9kZSwgJnMsCisgICAgICAgICAgICAgICAgICAgICAmZnN0ciwgJmZzdHJsZW4pICE9IDApCisgICAgICAgICAgICBnb3RvIGVycm9yOworCisgICAgICAgIC8qIENoZWNrIHRoYXQgd2UncmUgbm90IG1peGluZyBieXRlcyB3aXRoIHVuaWNvZGUuICovCisgICAgICAgIGlmIChpICE9IDAgJiYgYnl0ZXNtb2RlICE9IHRoaXNfYnl0ZXNtb2RlKSB7CisgICAgICAgICAgICBhc3RfZXJyb3IoYywgbiwgImNhbm5vdCBtaXggYnl0ZXMgYW5kIG5vbmJ5dGVzIGxpdGVyYWxzIik7CisgICAgICAgICAgICAvKiBzIGlzIE5VTEwgaWYgdGhlIGN1cnJlbnQgc3RyaW5nIHBhcnQgaXMgYW4gZi1zdHJpbmcuICovCisgICAgICAgICAgICBQeV9YREVDUkVGKHMpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBieXRlc21vZGUgPSB0aGlzX2J5dGVzbW9kZTsKKworICAgICAgICBpZiAoZnN0ciAhPSBOVUxMKSB7CisgICAgICAgICAgICBpbnQgcmVzdWx0OworICAgICAgICAgICAgYXNzZXJ0KHMgPT0gTlVMTCAmJiAhYnl0ZXNtb2RlKTsKKyAgICAgICAgICAgIC8qIFRoaXMgaXMgYW4gZi1zdHJpbmcuIFBhcnNlIGFuZCBjb25jYXRlbmF0ZSBpdC4gKi8KKyAgICAgICAgICAgIHJlc3VsdCA9IEZzdHJpbmdQYXJzZXJfQ29uY2F0RnN0cmluZygmc3RhdGUsICZmc3RyLCBmc3RyK2ZzdHJsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc19yYXdtb2RlLCAwLCBjLCBuKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQgPCAwKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvKiBBIHN0cmluZyBvciBieXRlIHN0cmluZy4gKi8KKyAgICAgICAgICAgIGFzc2VydChzICE9IE5VTEwgJiYgZnN0ciA9PSBOVUxMKTsKKworICAgICAgICAgICAgYXNzZXJ0KGJ5dGVzbW9kZSA/IFB5Qnl0ZXNfQ2hlY2tFeGFjdChzKSA6CisgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0NoZWNrRXhhY3QocykpOworCisgICAgICAgICAgICBpZiAoYnl0ZXNtb2RlKSB7CisgICAgICAgICAgICAgICAgLyogRm9yIGJ5dGVzLCBjb25jYXQgYXMgd2UgZ28uICovCisgICAgICAgICAgICAgICAgaWYgKGkgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAvKiBGaXJzdCB0aW1lLCBqdXN0IHJlbWVtYmVyIHRoaXMgdmFsdWUuICovCisgICAgICAgICAgICAgICAgICAgIGJ5dGVzX3N0ciA9IHM7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19Db25jYXRBbmREZWwoJmJ5dGVzX3N0ciwgcyk7CisgICAgICAgICAgICAgICAgICAgIGlmICghYnl0ZXNfc3RyKQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8qIFRoaXMgaXMgYSByZWd1bGFyIHN0cmluZy4gQ29uY2F0ZW5hdGUgaXQuICovCisgICAgICAgICAgICAgICAgaWYgKEZzdHJpbmdQYXJzZXJfQ29uY2F0QW5kRGVsKCZzdGF0ZSwgcykgPCAwKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiB2OworICAgIGlmIChieXRlc21vZGUpIHsKKyAgICAgICAgLyogSnVzdCByZXR1cm4gdGhlIGJ5dGVzIG9iamVjdCBhbmQgd2UncmUgZG9uZS4gKi8KKyAgICAgICAgaWYgKFB5QXJlbmFfQWRkUHlPYmplY3QoYy0+Y19hcmVuYSwgYnl0ZXNfc3RyKSA8IDApCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICByZXR1cm4gQnl0ZXMoYnl0ZXNfc3RyLCBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CisgICAgfQogCi0gIG9uRXJyb3I6Ci0gICAgUHlfWERFQ1JFRih2KTsKKyAgICAvKiBXZSdyZSBub3QgYSBieXRlcyBzdHJpbmcsIGJ5dGVzX3N0ciBzaG91bGQgbmV2ZXIgaGF2ZSBiZWVuIHNldC4gKi8KKyAgICBhc3NlcnQoYnl0ZXNfc3RyID09IE5VTEwpOworCisgICAgcmV0dXJuIEZzdHJpbmdQYXJzZXJfRmluaXNoKCZzdGF0ZSwgYywgbik7CisKK2Vycm9yOgorICAgIFB5X1hERUNSRUYoYnl0ZXNfc3RyKTsKKyAgICBGc3RyaW5nUGFyc2VyX0RlYWxsb2MoJnN0YXRlKTsKICAgICByZXR1cm4gTlVMTDsKIH0KZGlmZiAtLWdpdCBhL1B5dGhvbi9ibHRpbm1vZHVsZS5jIGIvUHl0aG9uL2JsdGlubW9kdWxlLmMKaW5kZXggOWY1ZGIyYS4uNjllNWYwOCAxMDA2NDQKLS0tIGEvUHl0aG9uL2JsdGlubW9kdWxlLmMKKysrIGIvUHl0aG9uL2JsdGlubW9kdWxlLmMKQEAgLTIxLDE2ICsyMSwxOCBAQAogICAgRG9uJ3QgZm9yZ2V0IHRvIG1vZGlmeSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KCkgaWYgeW91IHRvdWNoIGFueSBvZiB0aGUKICAgIHZhbHVlcyBmb3IgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyEKICovCi0jaWZkZWYgSEFWRV9NQkNTCi1jb25zdCBjaGFyICpQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gIm1iY3MiOworI2lmIGRlZmluZWQoX19BUFBMRV9fKQorY29uc3QgY2hhciAqUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9ICJ1dGYtOCI7CiBpbnQgUHlfSGFzRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9IDE7Ci0jZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNlbGlmIGRlZmluZWQoTVNfV0lORE9XUykKKy8qIG1heSBiZSBjaGFuZ2VkIGJ5IGluaXRmc2VuY29kaW5nKCksIGJ1dCBzaG91bGQgbmV2ZXIgYmUgZnJlZSgpZCAqLwogY29uc3QgY2hhciAqUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9ICJ1dGYtOCI7CiBpbnQgUHlfSGFzRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9IDE7CiAjZWxzZQogY29uc3QgY2hhciAqUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9IE5VTEw7IC8qIHNldCBieSBpbml0ZnNlbmNvZGluZygpICovCiBpbnQgUHlfSGFzRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9IDA7CiAjZW5kaWYKK2NvbnN0IGNoYXIgKlB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RlRXJyb3JzID0gInN1cnJvZ2F0ZWVzY2FwZSI7CiAKIF9QeV9JREVOVElGSUVSKF9fYnVpbHRpbnNfXyk7CiBfUHlfSURFTlRJRklFUihfX2RpY3RfXyk7CkBAIC01Miw4ICs1NCw4IEBACiBzdGF0aWMgUHlPYmplY3QgKgogYnVpbHRpbl9fX2J1aWxkX2NsYXNzX18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBQeU9iamVjdCAqZnVuYywgKm5hbWUsICpiYXNlcywgKm1rdywgKm1ldGEsICp3aW5uZXIsICpwcmVwLCAqbnMsICpjZWxsOwotICAgIFB5T2JqZWN0ICpjbHMgPSBOVUxMOworICAgIFB5T2JqZWN0ICpmdW5jLCAqbmFtZSwgKmJhc2VzLCAqbWt3LCAqbWV0YSwgKndpbm5lciwgKnByZXAsICpuczsKKyAgICBQeU9iamVjdCAqY2xzID0gTlVMTCwgKmNlbGwgPSBOVUxMOwogICAgIFB5X3NzaXplX3QgbmFyZ3M7CiAgICAgaW50IGlzY2xhc3MgPSAwOyAgIC8qIGluaXRpYWxpemUgdG8gcHJldmVudCBnY2Mgd2FybmluZyAqLwogCkBAIC0xNTUsMTYgKzE1Nyw4IEBACiAgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIFB5T2JqZWN0ICpwYXJncyA9IFB5VHVwbGVfUGFjaygyLCBuYW1lLCBiYXNlcyk7Ci0gICAgICAgIGlmIChwYXJncyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocHJlcCk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYobWV0YSk7Ci0gICAgICAgICAgICBQeV9YREVDUkVGKG1rdyk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoYmFzZXMpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgbnMgPSBQeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3JkcyhwcmVwLCBwYXJncywgbWt3KTsKLSAgICAgICAgUHlfREVDUkVGKHBhcmdzKTsKKyAgICAgICAgUHlPYmplY3QgKnBhcmdzWzJdID0ge25hbWUsIGJhc2VzfTsKKyAgICAgICAgbnMgPSBfUHlPYmplY3RfRmFzdENhbGxEaWN0KHByZXAsIHBhcmdzLCAyLCBta3cpOwogICAgICAgICBQeV9ERUNSRUYocHJlcCk7CiAgICAgfQogICAgIGlmIChucyA9PSBOVUxMKSB7CkBAIC0xNzcsMTYgKzE3MSw0MCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAwLCBOVUxMLCAwLCBOVUxMLCAwLCBOVUxMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUZ1bmN0aW9uX0dFVF9DTE9TVVJFKGZ1bmMpKTsKICAgICBpZiAoY2VsbCAhPSBOVUxMKSB7Ci0gICAgICAgIFB5T2JqZWN0ICptYXJnczsKLSAgICAgICAgbWFyZ3MgPSBQeVR1cGxlX1BhY2soMywgbmFtZSwgYmFzZXMsIG5zKTsKLSAgICAgICAgaWYgKG1hcmdzICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGNscyA9IFB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzKG1ldGEsIG1hcmdzLCBta3cpOwotICAgICAgICAgICAgUHlfREVDUkVGKG1hcmdzKTsKKyAgICAgICAgUHlPYmplY3QgKm1hcmdzWzNdID0ge25hbWUsIGJhc2VzLCBuc307CisgICAgICAgIGNscyA9IF9QeU9iamVjdF9GYXN0Q2FsbERpY3QobWV0YSwgbWFyZ3MsIDMsIG1rdyk7CisgICAgICAgIGlmIChjbHMgIT0gTlVMTCAmJiBQeVR5cGVfQ2hlY2soY2xzKSAmJiBQeUNlbGxfQ2hlY2soY2VsbCkpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpjZWxsX2NscyA9IFB5Q2VsbF9HRVQoY2VsbCk7CisgICAgICAgICAgICBpZiAoY2VsbF9jbHMgIT0gY2xzKSB7CisgICAgICAgICAgICAgICAgLyogVE9ETzogSW4gMy43LCBEZXByZWNhdGlvbldhcm5pbmcgd2lsbCBiZWNvbWUgUnVudGltZUVycm9yLgorICAgICAgICAgICAgICAgICAqICAgICAgIEF0IHRoYXQgcG9pbnQsIGNlbGxfZXJyb3Igd29uJ3QgYmUgbmVlZGVkLgorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIGludCBjZWxsX2Vycm9yOworICAgICAgICAgICAgICAgIGlmIChjZWxsX2NscyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm1zZyA9CisgICAgICAgICAgICAgICAgICAgICAgICAiX19jbGFzc19fIG5vdCBzZXQgZGVmaW5pbmcgJS4yMDBSIGFzICUuMjAwUi4gIgorICAgICAgICAgICAgICAgICAgICAgICAgIldhcyBfX2NsYXNzY2VsbF9fIHByb3BhZ2F0ZWQgdG8gdHlwZS5fX25ld19fPyI7CisgICAgICAgICAgICAgICAgICAgIGNlbGxfZXJyb3IgPSBQeUVycl9XYXJuRm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLCAxLCBtc2csIG5hbWUsIGNscyk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbXNnID0KKyAgICAgICAgICAgICAgICAgICAgICAgICJfX2NsYXNzX18gc2V0IHRvICUuMjAwUiBkZWZpbmluZyAlLjIwMFIgYXMgJS4yMDBSIjsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgbXNnLCBjZWxsX2NscywgbmFtZSwgY2xzKTsKKyAgICAgICAgICAgICAgICAgICAgY2VsbF9lcnJvciA9IDE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChjZWxsX2Vycm9yKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihjbHMpOworICAgICAgICAgICAgICAgICAgICBjbHMgPSBOVUxMOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8qIEZpbGwgaW4gdGhlIGNlbGwsIHNpbmNlIHR5cGUuX19uZXdfXyBkaWRuJ3QgZG8gaXQgKi8KKyAgICAgICAgICAgICAgICAgICAgUHlDZWxsX1NldChjZWxsLCBjbHMpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBpZiAoY2xzICE9IE5VTEwgJiYgUHlDZWxsX0NoZWNrKGNlbGwpKQotICAgICAgICAgICAgUHlDZWxsX1NldChjZWxsLCBjbHMpOwotICAgICAgICBQeV9ERUNSRUYoY2VsbCk7CiAgICAgfQorZXJyb3I6CisgICAgUHlfWERFQ1JFRihjZWxsKTsKICAgICBQeV9ERUNSRUYobnMpOwogICAgIFB5X0RFQ1JFRihtZXRhKTsKICAgICBQeV9YREVDUkVGKG1rdyk7CkBAIC0zMzEsNyArMzQ5LDcgQEAKICAgICAgICAgICAgIFB5X0RFQ1JFRihpdCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICBpZiAoY21wID09IDEpIHsKKyAgICAgICAgaWYgKGNtcCA+IDApIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihpdCk7CiAgICAgICAgICAgICBQeV9SRVRVUk5fVFJVRTsKICAgICAgICAgfQpAQCAtNDY5LDYgKzQ4Nyw3IEBACiAgICAgUHlPYmplY3QgKml0ID0gbHotPml0OwogICAgIGxvbmcgb2s7CiAgICAgUHlPYmplY3QgKigqaXRlcm5leHQpKFB5T2JqZWN0ICopOworICAgIGludCBjaGVja3RydWUgPSBsei0+ZnVuYyA9PSBQeV9Ob25lIHx8IGx6LT5mdW5jID09IChQeU9iamVjdCAqKSZQeUJvb2xfVHlwZTsKIAogICAgIGl0ZXJuZXh0ID0gKlB5X1RZUEUoaXQpLT50cF9pdGVybmV4dDsKICAgICBmb3IgKDs7KSB7CkBAIC00NzYsMTIgKzQ5NSwxMSBAQAogICAgICAgICBpZiAoaXRlbSA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICAgICAgaWYgKGx6LT5mdW5jID09IFB5X05vbmUgfHwgbHotPmZ1bmMgPT0gKFB5T2JqZWN0ICopJlB5Qm9vbF9UeXBlKSB7CisgICAgICAgIGlmIChjaGVja3RydWUpIHsKICAgICAgICAgICAgIG9rID0gUHlPYmplY3RfSXNUcnVlKGl0ZW0pOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgUHlPYmplY3QgKmdvb2Q7Ci0gICAgICAgICAgICBnb29kID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhsei0+ZnVuYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0sIE5VTEwpOworICAgICAgICAgICAgZ29vZCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MobHotPmZ1bmMsIGl0ZW0sIE5VTEwpOwogICAgICAgICAgICAgaWYgKGdvb2QgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTExNjgsMjYgKzExODYsNDMgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBtYXBfbmV4dChtYXBvYmplY3QgKmx6KQogewotICAgIFB5T2JqZWN0ICp2YWw7Ci0gICAgUHlPYmplY3QgKmFyZ3R1cGxlOwotICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0gICAgUHlfc3NpemVfdCBudW1hcmdzLCBpOworICAgIFB5T2JqZWN0ICpzbWFsbF9zdGFja1s1XTsKKyAgICBQeU9iamVjdCAqKnN0YWNrOworICAgIFB5X3NzaXplX3Qgbml0ZXJzLCBuYXJncywgaTsKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKIAotICAgIG51bWFyZ3MgPSBQeVR1cGxlX1NpemUobHotPml0ZXJzKTsKLSAgICBhcmd0dXBsZSA9IFB5VHVwbGVfTmV3KG51bWFyZ3MpOwotICAgIGlmIChhcmd0dXBsZSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGZvciAoaT0wIDsgaTxudW1hcmdzIDsgaSsrKSB7Ci0gICAgICAgIHZhbCA9IFB5SXRlcl9OZXh0KFB5VHVwbGVfR0VUX0lURU0obHotPml0ZXJzLCBpKSk7Ci0gICAgICAgIGlmICh2YWwgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfREVDUkVGKGFyZ3R1cGxlKTsKKyAgICBuaXRlcnMgPSBQeVR1cGxlX0dFVF9TSVpFKGx6LT5pdGVycyk7CisgICAgaWYgKG5pdGVycyA8PSAoUHlfc3NpemVfdClQeV9BUlJBWV9MRU5HVEgoc21hbGxfc3RhY2spKSB7CisgICAgICAgIHN0YWNrID0gc21hbGxfc3RhY2s7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBzdGFjayA9IFB5TWVtX01hbGxvYyhuaXRlcnMgKiBzaXplb2Yoc3RhY2tbMF0pKTsKKyAgICAgICAgaWYgKHN0YWNrID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3R1cGxlLCBpLCB2YWwpOwogICAgIH0KLSAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsKGx6LT5mdW5jLCBhcmd0dXBsZSwgTlVMTCk7Ci0gICAgUHlfREVDUkVGKGFyZ3R1cGxlKTsKKworICAgIG5hcmdzID0gMDsKKyAgICBmb3IgKGk9MDsgaSA8IG5pdGVyczsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICppdCA9IFB5VHVwbGVfR0VUX0lURU0obHotPml0ZXJzLCBpKTsKKyAgICAgICAgUHlPYmplY3QgKnZhbCA9IFB5X1RZUEUoaXQpLT50cF9pdGVybmV4dChpdCk7CisgICAgICAgIGlmICh2YWwgPT0gTlVMTCkgeworICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICB9CisgICAgICAgIHN0YWNrW2ldID0gdmFsOworICAgICAgICBuYXJncysrOworICAgIH0KKworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9GYXN0Q2FsbChsei0+ZnVuYywgc3RhY2ssIG5hcmdzKTsKKworZXhpdDoKKyAgICBmb3IgKGk9MDsgaSA8IG5hcmdzOyBpKyspIHsKKyAgICAgICAgUHlfREVDUkVGKHN0YWNrW2ldKTsKKyAgICB9CisgICAgaWYgKHN0YWNrICE9IHNtYWxsX3N0YWNrKSB7CisgICAgICAgIFB5TWVtX0ZyZWUoc3RhY2spOworICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xNzc5LDcgKzE4MTQsNyBAQAogICAgICAgICBpZiAoZG9fZmx1c2ggPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgZWxzZSBpZiAoZG9fZmx1c2gpIHsKLSAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZmlsZSwgJlB5SWRfZmx1c2gsICIiKTsKKyAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZmlsZSwgJlB5SWRfZmx1c2gsIE5VTEwpOwogICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgZWxzZQpAQCAtMTg0NSw3ICsxODgwLDcgQEAKICAgICB9CiAKICAgICAvKiBGaXJzdCBvZiBhbGwsIGZsdXNoIHN0ZGVyciAqLwotICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZmVyciwgJlB5SWRfZmx1c2gsICIiKTsKKyAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZlcnIsICZQeUlkX2ZsdXNoLCBOVUxMKTsKICAgICBpZiAodG1wID09IE5VTEwpCiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgZWxzZQpAQCAtMTg1NCw3ICsxODg5LDcgQEAKICAgICAvKiBXZSBzaG91bGQgb25seSB1c2UgKEdOVSkgcmVhZGxpbmUgaWYgUHl0aG9uJ3Mgc3lzLnN0ZGluIGFuZAogICAgICAgIHN5cy5zdGRvdXQgYXJlIHRoZSBzYW1lIGFzIEMncyBzdGRpbiBhbmQgc3Rkb3V0LCBiZWNhdXNlIHdlCiAgICAgICAgbmVlZCB0byBwYXNzIGl0IHRob3NlLiAqLwotICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZmluLCAmUHlJZF9maWxlbm8sICIiKTsKKyAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZpbiwgJlB5SWRfZmlsZW5vLCBOVUxMKTsKICAgICBpZiAodG1wID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgdHR5ID0gMDsKQEAgLTE4NjcsNyArMTkwMiw3IEBACiAgICAgICAgIHR0eSA9IGZkID09IGZpbGVubyhzdGRpbikgJiYgaXNhdHR5KGZkKTsKICAgICB9CiAgICAgaWYgKHR0eSkgewotICAgICAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZvdXQsICZQeUlkX2ZpbGVubywgIiIpOworICAgICAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZvdXQsICZQeUlkX2ZpbGVubywgTlVMTCk7CiAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgICAgIHR0eSA9IDA7CkBAIC0xODk4LDExICsxOTMzLDExIEBACiAgICAgICAgICAgICAvKiBzdGRpbiBpcyBhIHRleHQgc3RyZWFtLCBzbyBpdCBtdXN0IGhhdmUgYW4KICAgICAgICAgICAgICAgIGVuY29kaW5nLiAqLwogICAgICAgICAgICAgZ290byBfcmVhZGxpbmVfZXJyb3JzOwotICAgICAgICBzdGRpbl9lbmNvZGluZ19zdHIgPSBfUHlVbmljb2RlX0FzU3RyaW5nKHN0ZGluX2VuY29kaW5nKTsKLSAgICAgICAgc3RkaW5fZXJyb3JzX3N0ciA9IF9QeVVuaWNvZGVfQXNTdHJpbmcoc3RkaW5fZXJyb3JzKTsKKyAgICAgICAgc3RkaW5fZW5jb2Rpbmdfc3RyID0gUHlVbmljb2RlX0FzVVRGOChzdGRpbl9lbmNvZGluZyk7CisgICAgICAgIHN0ZGluX2Vycm9yc19zdHIgPSBQeVVuaWNvZGVfQXNVVEY4KHN0ZGluX2Vycm9ycyk7CiAgICAgICAgIGlmICghc3RkaW5fZW5jb2Rpbmdfc3RyIHx8ICFzdGRpbl9lcnJvcnNfc3RyKQogICAgICAgICAgICAgZ290byBfcmVhZGxpbmVfZXJyb3JzOwotICAgICAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZvdXQsICZQeUlkX2ZsdXNoLCAiIik7CisgICAgICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZm91dCwgJlB5SWRfZmx1c2gsIE5VTEwpOwogICAgICAgICBpZiAodG1wID09IE5VTEwpCiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICBlbHNlCkBAIC0xOTE1LDggKzE5NTAsOCBAQAogICAgICAgICAgICAgc3Rkb3V0X2Vycm9ycyA9IF9QeU9iamVjdF9HZXRBdHRySWQoZm91dCwgJlB5SWRfZXJyb3JzKTsKICAgICAgICAgICAgIGlmICghc3Rkb3V0X2VuY29kaW5nIHx8ICFzdGRvdXRfZXJyb3JzKQogICAgICAgICAgICAgICAgIGdvdG8gX3JlYWRsaW5lX2Vycm9yczsKLSAgICAgICAgICAgIHN0ZG91dF9lbmNvZGluZ19zdHIgPSBfUHlVbmljb2RlX0FzU3RyaW5nKHN0ZG91dF9lbmNvZGluZyk7Ci0gICAgICAgICAgICBzdGRvdXRfZXJyb3JzX3N0ciA9IF9QeVVuaWNvZGVfQXNTdHJpbmcoc3Rkb3V0X2Vycm9ycyk7CisgICAgICAgICAgICBzdGRvdXRfZW5jb2Rpbmdfc3RyID0gUHlVbmljb2RlX0FzVVRGOChzdGRvdXRfZW5jb2RpbmcpOworICAgICAgICAgICAgc3Rkb3V0X2Vycm9yc19zdHIgPSBQeVVuaWNvZGVfQXNVVEY4KHN0ZG91dF9lcnJvcnMpOwogICAgICAgICAgICAgaWYgKCFzdGRvdXRfZW5jb2Rpbmdfc3RyIHx8ICFzdGRvdXRfZXJyb3JzX3N0cikKICAgICAgICAgICAgICAgICBnb3RvIF9yZWFkbGluZV9lcnJvcnM7CiAgICAgICAgICAgICBzdHJpbmdwbyA9IFB5T2JqZWN0X1N0cihwcm9tcHQpOwpAQCAtMTkyOSw5ICsxOTY0LDggQEAKICAgICAgICAgICAgIFB5X0NMRUFSKHN0cmluZ3BvKTsKICAgICAgICAgICAgIGlmIChwbyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gX3JlYWRsaW5lX2Vycm9yczsKLSAgICAgICAgICAgIHByb21wdHN0ciA9IFB5Qnl0ZXNfQXNTdHJpbmcocG8pOwotICAgICAgICAgICAgaWYgKHByb21wdHN0ciA9PSBOVUxMKQotICAgICAgICAgICAgICAgIGdvdG8gX3JlYWRsaW5lX2Vycm9yczsKKyAgICAgICAgICAgIGFzc2VydChQeUJ5dGVzX0NoZWNrKHBvKSk7CisgICAgICAgICAgICBwcm9tcHRzdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhwbyk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBwbyA9IE5VTEw7CkBAIC0xOTgzLDcgKzIwMTcsNyBAQAogICAgICAgICBpZiAoUHlGaWxlX1dyaXRlT2JqZWN0KHByb21wdCwgZm91dCwgUHlfUFJJTlRfUkFXKSAhPSAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZm91dCwgJlB5SWRfZmx1c2gsICIiKTsKKyAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZvdXQsICZQeUlkX2ZsdXNoLCBOVUxMKTsKICAgICBpZiAodG1wID09IE5VTEwpCiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgZWxzZQpAQCAtMjA4NywxMCArMjEyMSwxMSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGJ1aWx0aW5fc29ydGVkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgUHlPYmplY3QgKm5ld2xpc3QsICp2LCAqc2VxLCAqa2V5ZnVuYz1OVUxMLCAqbmV3YXJnczsKKyAgICBQeU9iamVjdCAqbmV3bGlzdCwgKnYsICpzZXEsICprZXlmdW5jPU5VTEwsICoqbmV3YXJnczsKICAgICBQeU9iamVjdCAqY2FsbGFibGU7CiAgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJpdGVyYWJsZSIsICJrZXkiLCAicmV2ZXJzZSIsIDB9OwogICAgIGludCByZXZlcnNlOworICAgIFB5X3NzaXplX3QgbmFyZ3M7CiAKICAgICAvKiBhcmdzIDEtMyBzaG91bGQgbWF0Y2ggbGlzdHNvcnQgaW4gT2JqZWN0cy9saXN0b2JqZWN0LmMgKi8KICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xPaTpzb3J0ZWQiLApAQCAtMjEwNywxNSArMjE0Miw5IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIG5ld2FyZ3MgPSBQeVR1cGxlX0dldFNsaWNlKGFyZ3MsIDEsIDQpOwotICAgIGlmIChuZXdhcmdzID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKG5ld2xpc3QpOwotICAgICAgICBQeV9ERUNSRUYoY2FsbGFibGUpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICB2ID0gUHlPYmplY3RfQ2FsbChjYWxsYWJsZSwgbmV3YXJncywga3dkcyk7Ci0gICAgUHlfREVDUkVGKG5ld2FyZ3MpOworICAgIG5ld2FyZ3MgPSAmUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAxKTsKKyAgICBuYXJncyA9IFB5VHVwbGVfR0VUX1NJWkUoYXJncykgLSAxOworICAgIHYgPSBfUHlPYmplY3RfRmFzdENhbGxEaWN0KGNhbGxhYmxlLCBuZXdhcmdzLCBuYXJncywga3dkcyk7CiAgICAgUHlfREVDUkVGKGNhbGxhYmxlKTsKICAgICBpZiAodiA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0RFQ1JFRihuZXdsaXN0KTsKQEAgLTI3MTAsMTAgKzI3MzksMTAgQEAKICAgICBTRVRCVUlMVElOKCJ6aXAiLCAgICAgICAgICAgICAgICAgICAmUHlaaXBfVHlwZSk7CiAgICAgZGVidWcgPSBQeUJvb2xfRnJvbUxvbmcoUHlfT3B0aW1pemVGbGFnID09IDApOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkaWN0LCAiX19kZWJ1Z19fIiwgZGVidWcpIDwgMCkgewotICAgICAgICBQeV9YREVDUkVGKGRlYnVnKTsKKyAgICAgICAgUHlfREVDUkVGKGRlYnVnKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIFB5X1hERUNSRUYoZGVidWcpOworICAgIFB5X0RFQ1JFRihkZWJ1Zyk7CiAKICAgICByZXR1cm4gbW9kOwogI3VuZGVmIEFERF9UT19BTEwKZGlmZiAtLWdpdCBhL1B5dGhvbi9jZXZhbC5jIGIvUHl0aG9uL2NldmFsLmMKaW5kZXggN2I0MDUxOC4uZDUxNzJiOSAxMDA2NDQKLS0tIGEvUHl0aG9uL2NldmFsLmMKKysrIGIvUHl0aG9uL2NldmFsLmMKQEAgLTE1LDg3ICsxNSwxMiBAQAogI2luY2x1ZGUgImRpY3RvYmplY3QuaCIKICNpbmNsdWRlICJmcmFtZW9iamVjdC5oIgogI2luY2x1ZGUgIm9wY29kZS5oIgorI2luY2x1ZGUgInB5ZHRyYWNlLmgiCiAjaW5jbHVkZSAic2V0b2JqZWN0LmgiCiAjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCiAKICNpbmNsdWRlIDxjdHlwZS5oPgogCi0jaWZuZGVmIFdJVEhfVFNDCi0KLSNkZWZpbmUgUkVBRF9USU1FU1RBTVAodmFyKQotCi0jZWxzZQotCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1aW50NjQ7Ci0KLS8qIFBvd2VyUEMgc3VwcG9ydC4KLSAgICJfX3BwY19fIiBhcHBlYXJzIHRvIGJlIHRoZSBwcmVwcm9jZXNzb3IgZGVmaW5pdGlvbiB0byBkZXRlY3Qgb24gT1MgWCwgd2hlcmVhcwotICAgIl9fcG93ZXJwY19fIiBhcHBlYXJzIHRvIGJlIHRoZSBjb3JyZWN0IG9uZSBmb3IgTGludXggd2l0aCBHQ0MKLSovCi0jaWYgZGVmaW5lZChfX3BwY19fKSB8fCBkZWZpbmVkIChfX3Bvd2VycGNfXykKLQotI2RlZmluZSBSRUFEX1RJTUVTVEFNUCh2YXIpIHBwY19nZXRjb3VudGVyKCZ2YXIpCi0KLXN0YXRpYyB2b2lkCi1wcGNfZ2V0Y291bnRlcih1aW50NjQgKnYpCi17Ci0gICAgdW5zaWduZWQgbG9uZyB0YnUsIHRiLCB0YnUyOwotCi0gIGxvb3A6Ci0gICAgYXNtIHZvbGF0aWxlICgibWZ0YnUgJTAiIDogIj1yIiAodGJ1KSApOwotICAgIGFzbSB2b2xhdGlsZSAoIm1mdGIgICUwIiA6ICI9ciIgKHRiKSAgKTsKLSAgICBhc20gdm9sYXRpbGUgKCJtZnRidSAlMCIgOiAiPXIiICh0YnUyKSk7Ci0gICAgaWYgKF9fYnVpbHRpbl9leHBlY3QodGJ1ICE9IHRidTIsIDApKSBnb3RvIGxvb3A7Ci0KLSAgICAvKiBUaGUgc2xpZ2h0bHkgcGVjdWxpYXIgd2F5IG9mIHdyaXRpbmcgdGhlIG5leHQgbGluZXMgaXMKLSAgICAgICBjb21waWxlZCBiZXR0ZXIgYnkgR0NDIHRoYW4gYW55IG90aGVyIHdheSBJIHRyaWVkLiAqLwotICAgICgobG9uZyopKHYpKVswXSA9IHRidTsKLSAgICAoKGxvbmcqKSh2KSlbMV0gPSB0YjsKLX0KLQotI2VsaWYgZGVmaW5lZChfX2kzODZfXykKLQotLyogdGhpcyBpcyBmb3IgbGludXgveDg2IChhbmQgcHJvYmFibHkgYW55IG90aGVyIEdDQy94ODYgY29tYm8pICovCi0KLSNkZWZpbmUgUkVBRF9USU1FU1RBTVAodmFsKSBcCi0gICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJyZHRzYyIgOiAiPUEiICh2YWwpKQotCi0jZWxpZiBkZWZpbmVkKF9feDg2XzY0X18pCi0KLS8qIGZvciBnY2MveDg2XzY0LCB0aGUgIkEiIGNvbnN0cmFpbnQgaW4gREkgbW9kZSBtZWFucyAqZWl0aGVyKiByYXggKm9yKiByZHg7Ci0gICBub3QgZWR4OmVheCBhcyBpdCBkb2VzIGZvciBpMzg2LiAgU2luY2UgcmR0c2MgcHV0cyBpdHMgcmVzdWx0IGluIGVkeDplYXgKLSAgIGV2ZW4gaW4gNjQtYml0IG1vZGUsIHdlIG5lZWQgdG8gdXNlICJhIiBhbmQgImQiIGZvciB0aGUgbG93ZXIgYW5kIHVwcGVyCi0gICAzMi1iaXQgcGllY2VzIG9mIHRoZSByZXN1bHQuICovCi0KLSNkZWZpbmUgUkVBRF9USU1FU1RBTVAodmFsKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHVuc2lnbmVkIGludCBoLCBsOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgX19hc21fXyBfX3ZvbGF0aWxlX18oInJkdHNjIiA6ICI9YSIgKGwpLCAiPWQiIChoKSk7IFwKLSAgICAodmFsKSA9ICgodWludDY0KWwpIHwgKCgodWludDY0KWgpIDw8IDMyKTsgICAgICAgICAgXAotICAgIH0gd2hpbGUoMCkKLQotCi0jZWxzZQotCi0jZXJyb3IgIkRvbid0IGtub3cgaG93IHRvIGltcGxlbWVudCB0aW1lc3RhbXAgY291bnRlciBmb3IgdGhpcyBhcmNoaXRlY3R1cmUiCi0KLSNlbmRpZgotCi12b2lkIGR1bXBfdHNjKGludCBvcGNvZGUsIGludCB0aWNrZWQsIHVpbnQ2NCBpbnN0MCwgdWludDY0IGluc3QxLAotICAgICAgICAgICAgICB1aW50NjQgbG9vcDAsIHVpbnQ2NCBsb29wMSwgdWludDY0IGludHIwLCB1aW50NjQgaW50cjEpCi17Ci0gICAgdWludDY0IGludHIsIGluc3QsIGxvb3A7Ci0gICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HZXQoKTsKLSAgICBpZiAoIXRzdGF0ZS0+aW50ZXJwLT50c2NkdW1wKQotICAgICAgICByZXR1cm47Ci0gICAgaW50ciA9IGludHIxIC0gaW50cjA7Ci0gICAgaW5zdCA9IGluc3QxIC0gaW5zdDAgLSBpbnRyOwotICAgIGxvb3AgPSBsb29wMSAtIGxvb3AwIC0gaW50cjsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIm9wY29kZT0lMDNkIHQ9JWQgaW5zdD0lMDZsbGQgbG9vcD0lMDZsbGRcbiIsCi0gICAgICAgICAgICBvcGNvZGUsIHRpY2tlZCwgaW5zdCwgbG9vcCk7Ci19Ci0KLSNlbmRpZgotCiAvKiBUdXJuIHRoaXMgb24gaWYgeW91ciBjb21waWxlciBjaG9rZXMgb24gdGhlIGJpZyBzd2l0Y2g6ICovCiAvKiAjZGVmaW5lIENBU0VfVE9PX0JJRyAxICovCiAKQEAgLTEwOCwyNCArMzMsMTMgQEAKIHR5cGVkZWYgUHlPYmplY3QgKigqY2FsbHByb2MpKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogCiAvKiBGb3J3YXJkIGRlY2xhcmF0aW9ucyAqLwotI2lmZGVmIFdJVEhfVFNDCi1zdGF0aWMgUHlPYmplY3QgKiBjYWxsX2Z1bmN0aW9uKFB5T2JqZWN0ICoqKiwgaW50LCB1aW50NjQqLCB1aW50NjQqKTsKLSNlbHNlCi1zdGF0aWMgUHlPYmplY3QgKiBjYWxsX2Z1bmN0aW9uKFB5T2JqZWN0ICoqKiwgaW50KTsKLSNlbmRpZgotc3RhdGljIFB5T2JqZWN0ICogZmFzdF9mdW5jdGlvbihQeU9iamVjdCAqLCBQeU9iamVjdCAqKiosIGludCwgaW50LCBpbnQpOwotc3RhdGljIFB5T2JqZWN0ICogZG9fY2FsbChQeU9iamVjdCAqLCBQeU9iamVjdCAqKiosIGludCwgaW50KTsKLXN0YXRpYyBQeU9iamVjdCAqIGV4dF9kb19jYWxsKFB5T2JqZWN0ICosIFB5T2JqZWN0ICoqKiwgaW50LCBpbnQsIGludCk7Ci1zdGF0aWMgUHlPYmplY3QgKiB1cGRhdGVfa2V5d29yZF9hcmdzKFB5T2JqZWN0ICosIGludCwgUHlPYmplY3QgKioqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKTsKLXN0YXRpYyBQeU9iamVjdCAqIHVwZGF0ZV9zdGFyX2FyZ3MoaW50LCBpbnQsIFB5T2JqZWN0ICosIFB5T2JqZWN0ICoqKik7Ci1zdGF0aWMgUHlPYmplY3QgKiBsb2FkX2FyZ3MoUHlPYmplY3QgKioqLCBpbnQpOwotI2RlZmluZSBDQUxMX0ZMQUdfVkFSIDEKLSNkZWZpbmUgQ0FMTF9GTEFHX0tXIDIKK3N0YXRpYyBQeU9iamVjdCAqIGNhbGxfZnVuY3Rpb24oUHlPYmplY3QgKioqLCBQeV9zc2l6ZV90LCBQeU9iamVjdCAqKTsKK3N0YXRpYyBQeU9iamVjdCAqIGZhc3RfZnVuY3Rpb24oUHlPYmplY3QgKiwgUHlPYmplY3QgKiosIFB5X3NzaXplX3QsIFB5T2JqZWN0ICopOworc3RhdGljIFB5T2JqZWN0ICogZG9fY2FsbF9jb3JlKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogCiAjaWZkZWYgTExUUkFDRQogc3RhdGljIGludCBsbHRyYWNlOwotc3RhdGljIGludCBwcnRyYWNlKFB5T2JqZWN0ICosIGNoYXIgKik7CitzdGF0aWMgaW50IHBydHJhY2UoUHlPYmplY3QgKiwgY29uc3QgY2hhciAqKTsKICNlbmRpZgogc3RhdGljIGludCBjYWxsX3RyYWNlKFB5X3RyYWNlZnVuYywgUHlPYmplY3QgKiwKICAgICAgICAgICAgICAgICAgICAgICBQeVRocmVhZFN0YXRlICosIFB5RnJhbWVPYmplY3QgKiwKQEAgLTEzNywxNCArNTEsMTggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VGhyZWFkU3RhdGUgKiwgUHlGcmFtZU9iamVjdCAqKTsKIHN0YXRpYyBpbnQgbWF5YmVfY2FsbF9saW5lX3RyYWNlKFB5X3RyYWNlZnVuYywgUHlPYmplY3QgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VGhyZWFkU3RhdGUgKiwgUHlGcmFtZU9iamVjdCAqLCBpbnQgKiwgaW50ICosIGludCAqKTsKK3N0YXRpYyB2b2lkIG1heWJlX2R0cmFjZV9saW5lKFB5RnJhbWVPYmplY3QgKiwgaW50ICosIGludCAqLCBpbnQgKik7CitzdGF0aWMgdm9pZCBkdHJhY2VfZnVuY3Rpb25fZW50cnkoUHlGcmFtZU9iamVjdCAqKTsKK3N0YXRpYyB2b2lkIGR0cmFjZV9mdW5jdGlvbl9yZXR1cm4oUHlGcmFtZU9iamVjdCAqKTsKIAogc3RhdGljIFB5T2JqZWN0ICogY21wX291dGNvbWUoaW50LCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKK3N0YXRpYyBQeU9iamVjdCAqIGltcG9ydF9uYW1lKFB5RnJhbWVPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiBzdGF0aWMgUHlPYmplY3QgKiBpbXBvcnRfZnJvbShQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIHN0YXRpYyBpbnQgaW1wb3J0X2FsbF9mcm9tKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogc3RhdGljIHZvaWQgZm9ybWF0X2V4Y19jaGVja19hcmcoUHlPYmplY3QgKiwgY29uc3QgY2hhciAqLCBQeU9iamVjdCAqKTsKIHN0YXRpYyB2b2lkIGZvcm1hdF9leGNfdW5ib3VuZChQeUNvZGVPYmplY3QgKmNvLCBpbnQgb3BhcmcpOwogc3RhdGljIFB5T2JqZWN0ICogdW5pY29kZV9jb25jYXRlbmF0ZShQeU9iamVjdCAqLCBQeU9iamVjdCAqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUZyYW1lT2JqZWN0ICosIHVuc2lnbmVkIGNoYXIgKik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RnJhbWVPYmplY3QgKiwgY29uc3QgX1B5X0NPREVVTklUICopOwogc3RhdGljIFB5T2JqZWN0ICogc3BlY2lhbF9sb29rdXAoUHlPYmplY3QgKiwgX1B5X0lkZW50aWZpZXIgKik7CiAKICNkZWZpbmUgTkFNRV9FUlJPUl9NU0cgXApAQCAtNzk2LDExICs3MTQsMTggQEAKIFB5T2JqZWN0ICoKIFB5RXZhbF9FdmFsRnJhbWVFeChQeUZyYW1lT2JqZWN0ICpmLCBpbnQgdGhyb3dmbGFnKQogeworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CisgICAgcmV0dXJuIHRzdGF0ZS0+aW50ZXJwLT5ldmFsX2ZyYW1lKGYsIHRocm93ZmxhZyk7Cit9CisKK1B5T2JqZWN0ICoKK19QeUV2YWxfRXZhbEZyYW1lRGVmYXVsdChQeUZyYW1lT2JqZWN0ICpmLCBpbnQgdGhyb3dmbGFnKQorewogI2lmZGVmIERYUEFJUlMKICAgICBpbnQgbGFzdG9wY29kZSA9IDA7CiAjZW5kaWYKICAgICBQeU9iamVjdCAqKnN0YWNrX3BvaW50ZXI7ICAvKiBOZXh0IGZyZWUgc2xvdCBpbiB2YWx1ZSBzdGFjayAqLwotICAgIHVuc2lnbmVkIGNoYXIgKm5leHRfaW5zdHI7CisgICAgY29uc3QgX1B5X0NPREVVTklUICpuZXh0X2luc3RyOwogICAgIGludCBvcGNvZGU7ICAgICAgICAvKiBDdXJyZW50IG9wY29kZSAqLwogICAgIGludCBvcGFyZzsgICAgICAgICAvKiBDdXJyZW50IG9wY29kZSBhcmd1bWVudCwgaWYgYW55ICovCiAgICAgZW51bSB3aHlfY29kZSB3aHk7IC8qIFJlYXNvbiBmb3IgYmxvY2sgc3RhY2sgdW53aW5kICovCkBAIC04MTgsNyArNzQzLDcgQEAKICAgICAgICB0aW1lIGl0IGlzIHRlc3RlZC4gKi8KICAgICBpbnQgaW5zdHJfdWIgPSAtMSwgaW5zdHJfbGIgPSAwLCBpbnN0cl9wcmV2ID0gLTE7CiAKLSAgICB1bnNpZ25lZCBjaGFyICpmaXJzdF9pbnN0cjsKKyAgICBjb25zdCBfUHlfQ09ERVVOSVQgKmZpcnN0X2luc3RyOwogICAgIFB5T2JqZWN0ICpuYW1lczsKICAgICBQeU9iamVjdCAqY29uc3RzOwogCkBAIC04ODYsMjQgKzgxMSwxMCBAQAogLyogSW1wb3J0IHRoZSBzdGF0aWMganVtcCB0YWJsZSAqLwogI2luY2x1ZGUgIm9wY29kZV90YXJnZXRzLmgiCiAKLS8qIFRoaXMgbWFjcm8gaXMgdXNlZCB3aGVuIHNldmVyYWwgb3Bjb2RlcyBkZWZlciB0byB0aGUgc2FtZSBpbXBsZW1lbnRhdGlvbgotICAgKGUuZy4gU0VUVVBfTE9PUCwgU0VUVVBfRklOQUxMWSkgKi8KLSNkZWZpbmUgVEFSR0VUX1dJVEhfSU1QTChvcCwgaW1wbCkgXAotICAgIFRBUkdFVF8jI29wOiBcCi0gICAgICAgIG9wY29kZSA9IG9wOyBcCi0gICAgICAgIGlmIChIQVNfQVJHKG9wKSkgXAotICAgICAgICAgICAgb3BhcmcgPSBORVhUQVJHKCk7IFwKLSAgICBjYXNlIG9wOiBcCi0gICAgICAgIGdvdG8gaW1wbDsgXAotCiAjZGVmaW5lIFRBUkdFVChvcCkgXAogICAgIFRBUkdFVF8jI29wOiBcCi0gICAgICAgIG9wY29kZSA9IG9wOyBcCi0gICAgICAgIGlmIChIQVNfQVJHKG9wKSkgXAotICAgICAgICAgICAgb3BhcmcgPSBORVhUQVJHKCk7IFwKICAgICBjYXNlIG9wOgogCi0KICNkZWZpbmUgRElTUEFUQ0goKSBcCiAgICAgeyBcCiAgICAgICAgIGlmICghX1B5X2F0b21pY19sb2FkX3JlbGF4ZWQoJmV2YWxfYnJlYWtlcikpIHsgICAgICBcCkBAIC05MTUsMTggKzgyNiwyMCBAQAogI2lmZGVmIExMVFJBQ0UKICNkZWZpbmUgRkFTVF9ESVNQQVRDSCgpIFwKICAgICB7IFwKLSAgICAgICAgaWYgKCFsbHRyYWNlICYmICFfUHlfVHJhY2luZ1Bvc3NpYmxlKSB7IFwKKyAgICAgICAgaWYgKCFsbHRyYWNlICYmICFfUHlfVHJhY2luZ1Bvc3NpYmxlICYmICFQeURUcmFjZV9MSU5FX0VOQUJMRUQoKSkgeyBcCiAgICAgICAgICAgICBmLT5mX2xhc3RpID0gSU5TVFJfT0ZGU0VUKCk7IFwKLSAgICAgICAgICAgIGdvdG8gKm9wY29kZV90YXJnZXRzWypuZXh0X2luc3RyKytdOyBcCisgICAgICAgICAgICBORVhUT1BBUkcoKTsgXAorICAgICAgICAgICAgZ290byAqb3Bjb2RlX3RhcmdldHNbb3Bjb2RlXTsgXAogICAgICAgICB9IFwKICAgICAgICAgZ290byBmYXN0X25leHRfb3Bjb2RlOyBcCiAgICAgfQogI2Vsc2UKICNkZWZpbmUgRkFTVF9ESVNQQVRDSCgpIFwKICAgICB7IFwKLSAgICAgICAgaWYgKCFfUHlfVHJhY2luZ1Bvc3NpYmxlKSB7IFwKKyAgICAgICAgaWYgKCFfUHlfVHJhY2luZ1Bvc3NpYmxlICYmICFQeURUcmFjZV9MSU5FX0VOQUJMRUQoKSkgeyBcCiAgICAgICAgICAgICBmLT5mX2xhc3RpID0gSU5TVFJfT0ZGU0VUKCk7IFwKLSAgICAgICAgICAgIGdvdG8gKm9wY29kZV90YXJnZXRzWypuZXh0X2luc3RyKytdOyBcCisgICAgICAgICAgICBORVhUT1BBUkcoKTsgXAorICAgICAgICAgICAgZ290byAqb3Bjb2RlX3RhcmdldHNbb3Bjb2RlXTsgXAogICAgICAgICB9IFwKICAgICAgICAgZ290byBmYXN0X25leHRfb3Bjb2RlOyBcCiAgICAgfQpAQCAtOTM1LDEwICs4NDgsNyBAQAogI2Vsc2UKICNkZWZpbmUgVEFSR0VUKG9wKSBcCiAgICAgY2FzZSBvcDoKLSNkZWZpbmUgVEFSR0VUX1dJVEhfSU1QTChvcCwgaW1wbCkgXAotICAgIC8qIHNpbGVuY2UgY29tcGlsZXIgd2FybmluZ3MgYWJvdXQgYGltcGxgIHVudXNlZCAqLyBcCi0gICAgaWYgKDApIGdvdG8gaW1wbDsgXAotICAgIGNhc2Ugb3A6CisKICNkZWZpbmUgRElTUEFUQ0goKSBjb250aW51ZQogI2RlZmluZSBGQVNUX0RJU1BBVENIKCkgZ290byBmYXN0X25leHRfb3Bjb2RlCiAjZW5kaWYKQEAgLTk1Miw3MCArODYyLDMzIEBACiAjZGVmaW5lIEdFVElURU0odiwgaSkgUHlUdXBsZV9HZXRJdGVtKCh2KSwgKGkpKQogI2VuZGlmCiAKLSNpZmRlZiBXSVRIX1RTQwotLyogVXNlIFBlbnRpdW0gdGltZXN0YW1wIGNvdW50ZXIgdG8gbWFyayBjZXJ0YWluIGV2ZW50czoKLSAgIGluc3QwIC0tIGJlZ2lubmluZyBvZiBzd2l0Y2ggc3RhdGVtZW50IGZvciBvcGNvZGUgZGlzcGF0Y2gKLSAgIGluc3QxIC0tIGVuZCBvZiBzd2l0Y2ggc3RhdGVtZW50IChtYXkgYmUgc2tpcHBlZCkKLSAgIGxvb3AwIC0tIHRoZSB0b3Agb2YgdGhlIG1haW5sb29wCi0gICBsb29wMSAtLSBwbGFjZSB3aGVyZSBjb250cm9sIHJldHVybnMgYWdhaW4gdG8gdG9wIG9mIG1haW5sb29wCi0gICAgICAgICAgICAobWF5IGJlIHNraXBwZWQpCi0gICBpbnRyMSAtLSBiZWdpbm5pbmcgb2YgbG9uZyBpbnRlcnJ1cHRpb24KLSAgIGludHIyIC0tIGVuZCBvZiBsb25nIGludGVycnVwdGlvbgotCi0gICBNYW55IG9wY29kZXMgY2FsbCBvdXQgdG8gaGVscGVyIEMgZnVuY3Rpb25zLiAgSW4gc29tZSBjYXNlcywgdGhlCi0gICB0aW1lIGluIHRob3NlIGZ1bmN0aW9ucyBzaG91bGQgYmUgY291bnRlZCB0b3dhcmRzIHRoZSB0aW1lIGZvciB0aGUKLSAgIG9wY29kZSwgYnV0IG5vdCBpbiBhbGwgY2FzZXMuICBGb3IgZXhhbXBsZSwgYSBDQUxMX0ZVTkNUSU9OIG9wY29kZQotICAgY2FsbHMgYW5vdGhlciBQeXRob24gZnVuY3Rpb247IHRoZXJlJ3Mgbm8gcG9pbnQgaW4gY2hhcmdlIGFsbCB0aGUKLSAgIGJ5dGVjb2RlIGV4ZWN1dGVkIGJ5IHRoZSBjYWxsZWQgZnVuY3Rpb24gdG8gdGhlIGNhbGxlci4KLQotICAgSXQncyBoYXJkIHRvIG1ha2UgYSB1c2VmdWwganVkZ2VtZW50IHN0YXRpY2FsbHkuICBJbiB0aGUgcHJlc2VuY2UKLSAgIG9mIG9wZXJhdG9yIG92ZXJsb2FkaW5nLCBpdCdzIGltcG9zc2libGUgdG8gdGVsbCBpZiBhIGNhbGwgd2lsbAotICAgZXhlY3V0ZSBuZXcgUHl0aG9uIGNvZGUgb3Igbm90LgotCi0gICBJdCdzIGEgY2FzZS1ieS1jYXNlIGp1ZGdlbWVudC4gIEknbGwgdXNlIGludHIxIGZvciB0aGUgZm9sbG93aW5nCi0gICBjYXNlczoKLQotICAgSU1QT1JUX1NUQVIKLSAgIElNUE9SVF9GUk9NCi0gICBDQUxMX0ZVTkNUSU9OIChhbmQgZnJpZW5kcykKLQotICovCi0gICAgdWludDY0IGluc3QwLCBpbnN0MSwgbG9vcDAsIGxvb3AxLCBpbnRyMCA9IDAsIGludHIxID0gMDsKLSAgICBpbnQgdGlja2VkID0gMDsKLQotICAgIFJFQURfVElNRVNUQU1QKGluc3QwKTsKLSAgICBSRUFEX1RJTUVTVEFNUChpbnN0MSk7Ci0gICAgUkVBRF9USU1FU1RBTVAobG9vcDApOwotICAgIFJFQURfVElNRVNUQU1QKGxvb3AxKTsKLQotICAgIC8qIHNodXQgdXAgdGhlIGNvbXBpbGVyICovCi0gICAgb3Bjb2RlID0gMDsKLSNlbmRpZgotCiAvKiBDb2RlIGFjY2VzcyBtYWNyb3MgKi8KIAotI2RlZmluZSBJTlNUUl9PRkZTRVQoKSAgKChpbnQpKG5leHRfaW5zdHIgLSBmaXJzdF9pbnN0cikpCi0jZGVmaW5lIE5FWFRPUCgpICAgICAgICAoKm5leHRfaW5zdHIrKykKLSNkZWZpbmUgTkVYVEFSRygpICAgICAgIChuZXh0X2luc3RyICs9IDIsIChuZXh0X2luc3RyWy0xXTw8OCkgKyBuZXh0X2luc3RyWy0yXSkKLSNkZWZpbmUgUEVFS0FSRygpICAgICAgICgobmV4dF9pbnN0clsyXTw8OCkgKyBuZXh0X2luc3RyWzFdKQotI2RlZmluZSBKVU1QVE8oeCkgICAgICAgKG5leHRfaW5zdHIgPSBmaXJzdF9pbnN0ciArICh4KSkKLSNkZWZpbmUgSlVNUEJZKHgpICAgICAgIChuZXh0X2luc3RyICs9ICh4KSkKKy8qIFRoZSBpbnRlZ2VyIG92ZXJmbG93IGlzIGNoZWNrZWQgYnkgYW4gYXNzZXJ0aW9uIGJlbG93LiAqLworI2RlZmluZSBJTlNUUl9PRkZTRVQoKSAgKHNpemVvZihfUHlfQ09ERVVOSVQpICogKGludCkobmV4dF9pbnN0ciAtIGZpcnN0X2luc3RyKSkKKyNkZWZpbmUgTkVYVE9QQVJHKCkgIGRvIHsgXAorICAgICAgICBfUHlfQ09ERVVOSVQgd29yZCA9ICpuZXh0X2luc3RyOyBcCisgICAgICAgIG9wY29kZSA9IF9QeV9PUENPREUod29yZCk7IFwKKyAgICAgICAgb3BhcmcgPSBfUHlfT1BBUkcod29yZCk7IFwKKyAgICAgICAgbmV4dF9pbnN0cisrOyBcCisgICAgfSB3aGlsZSAoMCkKKyNkZWZpbmUgSlVNUFRPKHgpICAgICAgIChuZXh0X2luc3RyID0gZmlyc3RfaW5zdHIgKyAoeCkgLyBzaXplb2YoX1B5X0NPREVVTklUKSkKKyNkZWZpbmUgSlVNUEJZKHgpICAgICAgIChuZXh0X2luc3RyICs9ICh4KSAvIHNpemVvZihfUHlfQ09ERVVOSVQpKQogCiAvKiBPcENvZGUgcHJlZGljdGlvbiBtYWNyb3MKICAgICBTb21lIG9wY29kZXMgdGVuZCB0byBjb21lIGluIHBhaXJzIHRodXMgbWFraW5nIGl0IHBvc3NpYmxlIHRvCiAgICAgcHJlZGljdCB0aGUgc2Vjb25kIGNvZGUgd2hlbiB0aGUgZmlyc3QgaXMgcnVuLiAgRm9yIGV4YW1wbGUsCi0gICAgQ09NUEFSRV9PUCBpcyBvZnRlbiBmb2xsb3dlZCBieSBKVU1QX0lGX0ZBTFNFIG9yIEpVTVBfSUZfVFJVRS4gIEFuZCwKLSAgICB0aG9zZSBvcGNvZGVzIGFyZSBvZnRlbiBmb2xsb3dlZCBieSBhIFBPUF9UT1AuCisgICAgQ09NUEFSRV9PUCBpcyBvZnRlbiBmb2xsb3dlZCBieSBQT1BfSlVNUF9JRl9GQUxTRSBvciBQT1BfSlVNUF9JRl9UUlVFLgogCiAgICAgVmVyaWZ5aW5nIHRoZSBwcmVkaWN0aW9uIGNvc3RzIGEgc2luZ2xlIGhpZ2gtc3BlZWQgdGVzdCBvZiBhIHJlZ2lzdGVyCiAgICAgdmFyaWFibGUgYWdhaW5zdCBhIGNvbnN0YW50LiAgSWYgdGhlIHBhaXJpbmcgd2FzIGdvb2QsIHRoZW4gdGhlCiAgICAgcHJvY2Vzc29yJ3Mgb3duIGludGVybmFsIGJyYW5jaCBwcmVkaWNhdGlvbiBoYXMgYSBoaWdoIGxpa2VsaWhvb2Qgb2YKICAgICBzdWNjZXNzLCByZXN1bHRpbmcgaW4gYSBuZWFybHkgemVyby1vdmVyaGVhZCB0cmFuc2l0aW9uIHRvIHRoZQogICAgIG5leHQgb3Bjb2RlLiAgQSBzdWNjZXNzZnVsIHByZWRpY3Rpb24gc2F2ZXMgYSB0cmlwIHRocm91Z2ggdGhlIGV2YWwtbG9vcAotICAgIGluY2x1ZGluZyBpdHMgdHdvIHVucHJlZGljdGFibGUgYnJhbmNoZXMsIHRoZSBIQVNfQVJHIHRlc3QgYW5kIHRoZQotICAgIHN3aXRjaC1jYXNlLiAgQ29tYmluZWQgd2l0aCB0aGUgcHJvY2Vzc29yJ3MgaW50ZXJuYWwgYnJhbmNoIHByZWRpY3Rpb24sCi0gICAgYSBzdWNjZXNzZnVsIFBSRURJQ1QgaGFzIHRoZSBlZmZlY3Qgb2YgbWFraW5nIHRoZSB0d28gb3Bjb2RlcyBydW4gYXMgaWYKLSAgICB0aGV5IHdlcmUgYSBzaW5nbGUgbmV3IG9wY29kZSB3aXRoIHRoZSBib2RpZXMgY29tYmluZWQuCisgICAgaW5jbHVkaW5nIGl0cyB1bnByZWRpY3RhYmxlIHN3aXRjaC1jYXNlIGJyYW5jaC4gIENvbWJpbmVkIHdpdGggdGhlCisgICAgcHJvY2Vzc29yJ3MgaW50ZXJuYWwgYnJhbmNoIHByZWRpY3Rpb24sIGEgc3VjY2Vzc2Z1bCBQUkVESUNUIGhhcyB0aGUKKyAgICBlZmZlY3Qgb2YgbWFraW5nIHRoZSB0d28gb3Bjb2RlcyBydW4gYXMgaWYgdGhleSB3ZXJlIGEgc2luZ2xlIG5ldyBvcGNvZGUKKyAgICB3aXRoIHRoZSBib2RpZXMgY29tYmluZWQuCiAKICAgICBJZiBjb2xsZWN0aW5nIG9wY29kZSBzdGF0aXN0aWNzLCB5b3VyIGNob2ljZXMgYXJlIHRvIGVpdGhlciBrZWVwIHRoZQogICAgIHByZWRpY3Rpb25zIHR1cm5lZC1vbiBhbmQgaW50ZXJwcmV0IHRoZSByZXN1bHRzIGFzIGlmIHNvbWUgb3Bjb2RlcwpAQCAtMTAzMCwxMyArOTAzLDE5IEBACiAKICNpZiBkZWZpbmVkKERZTkFNSUNfRVhFQ1VUSU9OX1BST0ZJTEUpIHx8IFVTRV9DT01QVVRFRF9HT1RPUwogI2RlZmluZSBQUkVESUNUKG9wKSAgICAgICAgICAgICBpZiAoMCkgZ290byBQUkVEXyMjb3AKLSNkZWZpbmUgUFJFRElDVEVEKG9wKSAgICAgICAgICAgUFJFRF8jI29wOgotI2RlZmluZSBQUkVESUNURURfV0lUSF9BUkcob3ApICBQUkVEXyMjb3A6CiAjZWxzZQotI2RlZmluZSBQUkVESUNUKG9wKSAgICAgICAgICAgICBpZiAoKm5leHRfaW5zdHIgPT0gb3ApIGdvdG8gUFJFRF8jI29wCi0jZGVmaW5lIFBSRURJQ1RFRChvcCkgICAgICAgICAgIFBSRURfIyNvcDogbmV4dF9pbnN0cisrCi0jZGVmaW5lIFBSRURJQ1RFRF9XSVRIX0FSRyhvcCkgIFBSRURfIyNvcDogb3BhcmcgPSBQRUVLQVJHKCk7IG5leHRfaW5zdHIgKz0gMworI2RlZmluZSBQUkVESUNUKG9wKSBcCisgICAgZG97IFwKKyAgICAgICAgX1B5X0NPREVVTklUIHdvcmQgPSAqbmV4dF9pbnN0cjsgXAorICAgICAgICBvcGNvZGUgPSBfUHlfT1BDT0RFKHdvcmQpOyBcCisgICAgICAgIGlmIChvcGNvZGUgPT0gb3ApeyBcCisgICAgICAgICAgICBvcGFyZyA9IF9QeV9PUEFSRyh3b3JkKTsgXAorICAgICAgICAgICAgbmV4dF9pbnN0cisrOyBcCisgICAgICAgICAgICBnb3RvIFBSRURfIyNvcDsgXAorICAgICAgICB9IFwKKyAgICB9IHdoaWxlKDApCiAjZW5kaWYKKyNkZWZpbmUgUFJFRElDVEVEKG9wKSAgICAgICAgICAgUFJFRF8jI29wOgogCiAKIC8qIFN0YWNrIG1hbmlwdWxhdGlvbiBtYWNyb3MgKi8KQEAgLTExMDAsNyArOTc5LDcgQEAKICAgICB9CiAKICNkZWZpbmUgVU5XSU5EX0VYQ0VQVF9IQU5ETEVSKGIpIFwKLSAgICB7IFwKKyAgICBkbyB7IFwKICAgICAgICAgUHlPYmplY3QgKnR5cGUsICp2YWx1ZSwgKnRyYWNlYmFjazsgXAogICAgICAgICBhc3NlcnQoU1RBQ0tfTEVWRUwoKSA+PSAoYiktPmJfbGV2ZWwgKyAzKTsgXAogICAgICAgICB3aGlsZSAoU1RBQ0tfTEVWRUwoKSA+IChiKS0+Yl9sZXZlbCArIDMpIHsgXApAQCAtMTExNiw3ICs5OTUsNyBAQAogICAgICAgICBQeV9YREVDUkVGKHR5cGUpOyBcCiAgICAgICAgIFB5X1hERUNSRUYodmFsdWUpOyBcCiAgICAgICAgIFB5X1hERUNSRUYodHJhY2ViYWNrKTsgXAotICAgIH0KKyAgICB9IHdoaWxlKDApCiAKIC8qIFN0YXJ0IG9mIGNvZGUgKi8KIApAQCAtMTE2MCwyMSArMTAzOSwyNCBAQAogICAgICAgICB9CiAgICAgfQogCisgICAgaWYgKFB5RFRyYWNlX0ZVTkNUSU9OX0VOVFJZX0VOQUJMRUQoKSkKKyAgICAgICAgZHRyYWNlX2Z1bmN0aW9uX2VudHJ5KGYpOworCiAgICAgY28gPSBmLT5mX2NvZGU7CiAgICAgbmFtZXMgPSBjby0+Y29fbmFtZXM7CiAgICAgY29uc3RzID0gY28tPmNvX2NvbnN0czsKICAgICBmYXN0bG9jYWxzID0gZi0+Zl9sb2NhbHNwbHVzOwogICAgIGZyZWV2YXJzID0gZi0+Zl9sb2NhbHNwbHVzICsgY28tPmNvX25sb2NhbHM7Ci0gICAgZmlyc3RfaW5zdHIgPSAodW5zaWduZWQgY2hhciopIFB5Qnl0ZXNfQVNfU1RSSU5HKGNvLT5jb19jb2RlKTsKLSAgICAvKiBBbiBleHBsYW5hdGlvbiBpcyBpbiBvcmRlciBmb3IgdGhlIG5leHQgbGluZS4KKyAgICBhc3NlcnQoUHlCeXRlc19DaGVjayhjby0+Y29fY29kZSkpOworICAgIGFzc2VydChQeUJ5dGVzX0dFVF9TSVpFKGNvLT5jb19jb2RlKSA8PSBJTlRfTUFYKTsKKyAgICBhc3NlcnQoUHlCeXRlc19HRVRfU0laRShjby0+Y29fY29kZSkgJSBzaXplb2YoX1B5X0NPREVVTklUKSA9PSAwKTsKKyAgICBhc3NlcnQoX1B5X0lTX0FMSUdORUQoUHlCeXRlc19BU19TVFJJTkcoY28tPmNvX2NvZGUpLCBzaXplb2YoX1B5X0NPREVVTklUKSkpOworICAgIGZpcnN0X2luc3RyID0gKF9QeV9DT0RFVU5JVCAqKSBQeUJ5dGVzX0FTX1NUUklORyhjby0+Y29fY29kZSk7CisgICAgLyoKKyAgICAgICBmLT5mX2xhc3RpIHJlZmVycyB0byB0aGUgaW5kZXggb2YgdGhlIGxhc3QgaW5zdHJ1Y3Rpb24sCisgICAgICAgdW5sZXNzIGl0J3MgLTEgaW4gd2hpY2ggY2FzZSBuZXh0X2luc3RyIHNob3VsZCBiZSBmaXJzdF9pbnN0ci4KIAotICAgICAgIGYtPmZfbGFzdGkgbm93IHJlZmVycyB0byB0aGUgaW5kZXggb2YgdGhlIGxhc3QgaW5zdHJ1Y3Rpb24KLSAgICAgICBleGVjdXRlZC4gIFlvdSBtaWdodCB0aGluayB0aGlzIHdhcyBvYnZpb3VzIGZyb20gdGhlIG5hbWUsIGJ1dAotICAgICAgIHRoaXMgd2Fzbid0IGFsd2F5cyB0cnVlIGJlZm9yZSAyLjMhICBQeUZyYW1lX05ldyBub3cgc2V0cwotICAgICAgIGYtPmZfbGFzdGkgdG8gLTEgKGkuZS4gdGhlIGluZGV4ICpiZWZvcmUqIHRoZSBmaXJzdCBpbnN0cnVjdGlvbikKLSAgICAgICBhbmQgWUlFTERfVkFMVUUgZG9lc24ndCBmaWRkbGUgd2l0aCBmX2xhc3RpIGFueSBtb3JlLiAgU28gdGhpcwotICAgICAgIGRvZXMgd29yay4gIFByb21pc2UuCi0gICAgICAgWUlFTERfRlJPTSBzZXRzIGZfbGFzdGkgdG8gaXRzZWxmLCBpbiBvcmRlciB0byByZXBlYXRlZCB5aWVsZAorICAgICAgIFlJRUxEX0ZST00gc2V0cyBmX2xhc3RpIHRvIGl0c2VsZiwgaW4gb3JkZXIgdG8gcmVwZWF0ZWRseSB5aWVsZAogICAgICAgIG11bHRpcGxlIHZhbHVlcy4KIAogICAgICAgIFdoZW4gdGhlIFBSRURJQ1QoKSBtYWNyb3MgYXJlIGVuYWJsZWQsIHNvbWUgb3Bjb2RlIHBhaXJzIGZvbGxvdyBpbgpAQCAtMTE4MywxNSArMTA2NSwyMCBAQAogICAgICAgIHdlcmUgYSBzaW5nbGUgbmV3IG9wY29kZTsgYWNjb3JkaW5nbHksZi0+Zl9sYXN0aSB3aWxsIHBvaW50IHRvCiAgICAgICAgdGhlIGZpcnN0IGNvZGUgaW4gdGhlIHBhaXIgKGZvciBpbnN0YW5jZSwgR0VUX0lURVIgZm9sbG93ZWQgYnkKICAgICAgICBGT1JfSVRFUiBpcyBlZmZlY3RpdmVseSBhIHNpbmdsZSBvcGNvZGUgYW5kIGYtPmZfbGFzdGkgd2lsbCBwb2ludAotICAgICAgIGF0IHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGNvbWJpbmVkIHBhaXIuKQorICAgICAgIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGNvbWJpbmVkIHBhaXIuKQogICAgICovCi0gICAgbmV4dF9pbnN0ciA9IGZpcnN0X2luc3RyICsgZi0+Zl9sYXN0aSArIDE7CisgICAgYXNzZXJ0KGYtPmZfbGFzdGkgPj0gLTEpOworICAgIG5leHRfaW5zdHIgPSBmaXJzdF9pbnN0cjsKKyAgICBpZiAoZi0+Zl9sYXN0aSA+PSAwKSB7CisgICAgICAgIGFzc2VydChmLT5mX2xhc3RpICUgc2l6ZW9mKF9QeV9DT0RFVU5JVCkgPT0gMCk7CisgICAgICAgIG5leHRfaW5zdHIgKz0gZi0+Zl9sYXN0aSAvIHNpemVvZihfUHlfQ09ERVVOSVQpICsgMTsKKyAgICB9CiAgICAgc3RhY2tfcG9pbnRlciA9IGYtPmZfc3RhY2t0b3A7CiAgICAgYXNzZXJ0KHN0YWNrX3BvaW50ZXIgIT0gTlVMTCk7CiAgICAgZi0+Zl9zdGFja3RvcCA9IE5VTEw7ICAgICAgIC8qIHJlbWFpbnMgTlVMTCB1bmxlc3MgeWllbGQgc3VzcGVuZHMgZnJhbWUgKi8KICAgICBmLT5mX2V4ZWN1dGluZyA9IDE7CiAKLSAgICBpZiAoY28tPmNvX2ZsYWdzICYgKENPX0dFTkVSQVRPUiB8IENPX0NPUk9VVElORSkpIHsKKyAgICBpZiAoY28tPmNvX2ZsYWdzICYgKENPX0dFTkVSQVRPUiB8IENPX0NPUk9VVElORSB8IENPX0FTWU5DX0dFTkVSQVRPUikpIHsKICAgICAgICAgaWYgKCF0aHJvd2ZsYWcgJiYgZi0+Zl9leGNfdHlwZSAhPSBOVUxMICYmIGYtPmZfZXhjX3R5cGUgIT0gUHlfTm9uZSkgewogICAgICAgICAgICAgLyogV2Ugd2VyZSBpbiBhbiBleGNlcHQgaGFuZGxlciB3aGVuIHdlIGxlZnQsCiAgICAgICAgICAgICAgICByZXN0b3JlIHRoZSBleGNlcHRpb24gc3RhdGUgd2hpY2ggd2FzIHB1dCBhc2lkZQpAQCAtMTIxOSwyMyArMTEwNiw2IEBACiAjZW5kaWYKIAogICAgIGZvciAoOzspIHsKLSNpZmRlZiBXSVRIX1RTQwotICAgICAgICBpZiAoaW5zdDEgPT0gMCkgewotICAgICAgICAgICAgLyogQWxtb3N0IHN1cmVseSwgdGhlIG9wY29kZSBleGVjdXRlZCBhIGJyZWFrCi0gICAgICAgICAgICAgICBvciBhIGNvbnRpbnVlLCBwcmV2ZW50aW5nIGluc3QxIGZyb20gYmVpbmcgc2V0Ci0gICAgICAgICAgICAgICBvbiB0aGUgd2F5IG91dCBvZiB0aGUgbG9vcC4KLSAgICAgICAgICAgICovCi0gICAgICAgICAgICBSRUFEX1RJTUVTVEFNUChpbnN0MSk7Ci0gICAgICAgICAgICBsb29wMSA9IGluc3QxOwotICAgICAgICB9Ci0gICAgICAgIGR1bXBfdHNjKG9wY29kZSwgdGlja2VkLCBpbnN0MCwgaW5zdDEsIGxvb3AwLCBsb29wMSwKLSAgICAgICAgICAgICAgICAgaW50cjAsIGludHIxKTsKLSAgICAgICAgdGlja2VkID0gMDsKLSAgICAgICAgaW5zdDEgPSAwOwotICAgICAgICBpbnRyMCA9IDA7Ci0gICAgICAgIGludHIxID0gMDsKLSAgICAgICAgUkVBRF9USU1FU1RBTVAobG9vcDApOwotI2VuZGlmCiAgICAgICAgIGFzc2VydChzdGFja19wb2ludGVyID49IGYtPmZfdmFsdWVzdGFjayk7IC8qIGVsc2UgdW5kZXJmbG93ICovCiAgICAgICAgIGFzc2VydChTVEFDS19MRVZFTCgpIDw9IGNvLT5jb19zdGFja3NpemUpOyAgLyogZWxzZSBvdmVyZmxvdyAqLwogICAgICAgICBhc3NlcnQoIVB5RXJyX09jY3VycmVkKCkpOwpAQCAtMTI0OSwxNCArMTExOSwxMSBAQAogICAgICAgICAgICBQeV9NYWtlUGVuZGluZ0NhbGxzKCkgYWJvdmUuICovCiAKICAgICAgICAgaWYgKF9QeV9hdG9taWNfbG9hZF9yZWxheGVkKCZldmFsX2JyZWFrZXIpKSB7Ci0gICAgICAgICAgICBpZiAoKm5leHRfaW5zdHIgPT0gU0VUVVBfRklOQUxMWSkgeworICAgICAgICAgICAgaWYgKF9QeV9PUENPREUoKm5leHRfaW5zdHIpID09IFNFVFVQX0ZJTkFMTFkpIHsKICAgICAgICAgICAgICAgICAvKiBNYWtlIHRoZSBsYXN0IG9wY29kZSBiZWZvcmUKICAgICAgICAgICAgICAgICAgICBhIHRyeTogZmluYWxseTogYmxvY2sgdW5pbnRlcnJ1cHRpYmxlLiAqLwogICAgICAgICAgICAgICAgIGdvdG8gZmFzdF9uZXh0X29wY29kZTsKICAgICAgICAgICAgIH0KLSNpZmRlZiBXSVRIX1RTQwotICAgICAgICAgICAgdGlja2VkID0gMTsKLSNlbmRpZgogICAgICAgICAgICAgaWYgKF9QeV9hdG9taWNfbG9hZF9yZWxheGVkKCZwZW5kaW5nY2FsbHNfdG9fZG8pKSB7CiAgICAgICAgICAgICAgICAgaWYgKFB5X01ha2VQZW5kaW5nQ2FsbHMoKSA8IDApCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC0xMjk2LDYgKzExNjMsOSBAQAogICAgIGZhc3RfbmV4dF9vcGNvZGU6CiAgICAgICAgIGYtPmZfbGFzdGkgPSBJTlNUUl9PRkZTRVQoKTsKIAorICAgICAgICBpZiAoUHlEVHJhY2VfTElORV9FTkFCTEVEKCkpCisgICAgICAgICAgICBtYXliZV9kdHJhY2VfbGluZShmLCAmaW5zdHJfbGIsICZpbnN0cl91YiwgJmluc3RyX3ByZXYpOworCiAgICAgICAgIC8qIGxpbmUtYnktbGluZSB0cmFjaW5nIHN1cHBvcnQgKi8KIAogICAgICAgICBpZiAoX1B5X1RyYWNpbmdQb3NzaWJsZSAmJgpAQCAtMTMyMiwxMSArMTE5Miw3IEBACiAKICAgICAgICAgLyogRXh0cmFjdCBvcGNvZGUgYW5kIGFyZ3VtZW50ICovCiAKLSAgICAgICAgb3Bjb2RlID0gTkVYVE9QKCk7Ci0gICAgICAgIG9wYXJnID0gMDsgICAvKiBhbGxvd3Mgb3BhcmcgdG8gYmUgc3RvcmVkIGluIGEgcmVnaXN0ZXIgYmVjYXVzZQotICAgICAgICAgICAgaXQgZG9lc24ndCBoYXZlIHRvIGJlIHJlbWVtYmVyZWQgYWNyb3NzIGEgZnVsbCBsb29wICovCi0gICAgICAgIGlmIChIQVNfQVJHKG9wY29kZSkpCi0gICAgICAgICAgICBvcGFyZyA9IE5FWFRBUkcoKTsKKyAgICAgICAgTkVYVE9QQVJHKCk7CiAgICAgZGlzcGF0Y2hfb3Bjb2RlOgogI2lmZGVmIERZTkFNSUNfRVhFQ1VUSU9OX1BST0ZJTEUKICNpZmRlZiBEWFBBSVJTCkBAIC0xMzUxLDkgKzEyMTcsNiBAQAogICAgICAgICB9CiAjZW5kaWYKIAotICAgICAgICAvKiBNYWluIHN3aXRjaCBvbiBvcGNvZGUgKi8KLSAgICAgICAgUkVBRF9USU1FU1RBTVAoaW5zdDApOwotCiAgICAgICAgIHN3aXRjaCAob3Bjb2RlKSB7CiAKICAgICAgICAgLyogQkVXQVJFIQpAQCAtMTM3Nyw2ICsxMjQwLDcgQEAKICAgICAgICAgICAgIEZBU1RfRElTUEFUQ0goKTsKICAgICAgICAgfQogCisgICAgICAgIFBSRURJQ1RFRChMT0FEX0NPTlNUKTsKICAgICAgICAgVEFSR0VUKExPQURfQ09OU1QpIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICp2YWx1ZSA9IEdFVElURU0oY29uc3RzLCBvcGFyZyk7CiAgICAgICAgICAgICBQeV9JTkNSRUYodmFsdWUpOwpAQCAtMTM4NCw3ICsxMjQ4LDcgQEAKICAgICAgICAgICAgIEZBU1RfRElTUEFUQ0goKTsKICAgICAgICAgfQogCi0gICAgICAgIFBSRURJQ1RFRF9XSVRIX0FSRyhTVE9SRV9GQVNUKTsKKyAgICAgICAgUFJFRElDVEVEKFNUT1JFX0ZBU1QpOwogICAgICAgICBUQVJHRVQoU1RPUkVfRkFTVCkgewogICAgICAgICAgICAgUHlPYmplY3QgKnZhbHVlID0gUE9QKCk7CiAgICAgICAgICAgICBTRVRMT0NBTChvcGFyZywgdmFsdWUpOwpAQCAtMTg2Myw2ICsxNzI3LDYxIEBACiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKKyAgICAgICAgVEFSR0VUKFNUT1JFX0FOTk9UQVRJT04pIHsKKyAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKF9fYW5ub3RhdGlvbnNfXyk7CisgICAgICAgICAgICBQeU9iamVjdCAqYW5uX2RpY3Q7CisgICAgICAgICAgICBQeU9iamVjdCAqYW5uID0gUE9QKCk7CisgICAgICAgICAgICBQeU9iamVjdCAqbmFtZSA9IEdFVElURU0obmFtZXMsIG9wYXJnKTsKKyAgICAgICAgICAgIGludCBlcnI7CisgICAgICAgICAgICBpZiAoZi0+Zl9sb2NhbHMgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vIGxvY2FscyBmb3VuZCB3aGVuIHN0b3JpbmcgYW5ub3RhdGlvbiIpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhbm4pOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvKiBmaXJzdCB0cnkgdG8gZ2V0IF9fYW5ub3RhdGlvbnNfXyBmcm9tIGxvY2Fscy4uLiAqLworICAgICAgICAgICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KGYtPmZfbG9jYWxzKSkgeworICAgICAgICAgICAgICAgIGFubl9kaWN0ID0gX1B5RGljdF9HZXRJdGVtSWQoZi0+Zl9sb2NhbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlJZF9fX2Fubm90YXRpb25zX18pOworICAgICAgICAgICAgICAgIGlmIChhbm5fZGljdCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19OYW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX19hbm5vdGF0aW9uc19fIG5vdCBmb3VuZCIpOworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYW5uKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGFubl9kaWN0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphbm5fc3RyID0gX1B5VW5pY29kZV9Gcm9tSWQoJlB5SWRfX19hbm5vdGF0aW9uc19fKTsKKyAgICAgICAgICAgICAgICBpZiAoYW5uX3N0ciA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhbm4pOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBhbm5fZGljdCA9IFB5T2JqZWN0X0dldEl0ZW0oZi0+Zl9sb2NhbHMsIGFubl9zdHIpOworICAgICAgICAgICAgICAgIGlmIChhbm5fZGljdCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0tleUVycm9yKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05hbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX19hbm5vdGF0aW9uc19fIG5vdCBmb3VuZCIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhbm4pOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qIC4uLmlmIHN1Y2NlZWRlZCwgX19hbm5vdGF0aW9uc19fW25hbWVdID0gYW5uICovCisgICAgICAgICAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3QoYW5uX2RpY3QpKSB7CisgICAgICAgICAgICAgICAgZXJyID0gUHlEaWN0X1NldEl0ZW0oYW5uX2RpY3QsIG5hbWUsIGFubik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBlcnIgPSBQeU9iamVjdF9TZXRJdGVtKGFubl9kaWN0LCBuYW1lLCBhbm4pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfREVDUkVGKGFubl9kaWN0KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihhbm4pOworICAgICAgICAgICAgaWYgKGVyciAhPSAwKSB7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KKwogICAgICAgICBUQVJHRVQoREVMRVRFX1NVQlNDUikgewogICAgICAgICAgICAgUHlPYmplY3QgKnN1YiA9IFRPUCgpOwogICAgICAgICAgICAgUHlPYmplY3QgKmNvbnRhaW5lciA9IFNFQ09ORCgpOwpAQCAtMTk5Miw3ICsxOTExLDcgQEAKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXRlcik7CiAKICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfV2FybkZvcm1hdCgKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5RXhjX1BlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDEsCisgICAgICAgICAgICAgICAgICAgICAgICBQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsIDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAiJyUuMTAwcycgaW1wbGVtZW50cyBsZWdhY3kgX19haXRlcl9fIHByb3RvY29sOyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAiX19haXRlcl9fIHNob3VsZCByZXR1cm4gYW4gYXN5bmNocm9ub3VzICIKICAgICAgICAgICAgICAgICAgICAgICAgICJpdGVyYXRvciwgbm90IGF3YWl0YWJsZSIsCkBAIC0yMDA2LDYgKzE5MjUsNyBAQAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBTRVRfVE9QKGF3YWl0YWJsZSk7CisgICAgICAgICAgICBQUkVESUNUKExPQURfQ09OU1QpOwogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCkBAIC0yMDE2LDQxICsxOTM2LDUyIEBACiAgICAgICAgICAgICBQeU9iamVjdCAqYWl0ZXIgPSBUT1AoKTsKICAgICAgICAgICAgIFB5VHlwZU9iamVjdCAqdHlwZSA9IFB5X1RZUEUoYWl0ZXIpOwogCi0gICAgICAgICAgICBpZiAodHlwZS0+dHBfYXNfYXN5bmMgIT0gTlVMTCkKLSAgICAgICAgICAgICAgICBnZXR0ZXIgPSB0eXBlLT50cF9hc19hc3luYy0+YW1fYW5leHQ7Ci0KLSAgICAgICAgICAgIGlmIChnZXR0ZXIgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIG5leHRfaXRlciA9ICgqZ2V0dGVyKShhaXRlcik7Ci0gICAgICAgICAgICAgICAgaWYgKG5leHRfaXRlciA9PSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoUHlBc3luY0dlbl9DaGVja0V4YWN0KGFpdGVyKSkgeworICAgICAgICAgICAgICAgIGF3YWl0YWJsZSA9IHR5cGUtPnRwX2FzX2FzeW5jLT5hbV9hbmV4dChhaXRlcik7CisgICAgICAgICAgICAgICAgaWYgKGF3YWl0YWJsZSA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KAotICAgICAgICAgICAgICAgICAgICBQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICInYXN5bmMgZm9yJyByZXF1aXJlcyBhbiBpdGVyYXRvciB3aXRoICIKLSAgICAgICAgICAgICAgICAgICAgIl9fYW5leHRfXyBtZXRob2QsIGdvdCAlLjEwMHMiLAotICAgICAgICAgICAgICAgICAgICB0eXBlLT50cF9uYW1lKTsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAodHlwZS0+dHBfYXNfYXN5bmMgIT0gTlVMTCl7CisgICAgICAgICAgICAgICAgICAgIGdldHRlciA9IHR5cGUtPnRwX2FzX2FzeW5jLT5hbV9hbmV4dDsKKyAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGF3YWl0YWJsZSA9IF9QeUNvcm9fR2V0QXdhaXRhYmxlSXRlcihuZXh0X2l0ZXIpOwotICAgICAgICAgICAgaWYgKGF3YWl0YWJsZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KAotICAgICAgICAgICAgICAgICAgICBQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICInYXN5bmMgZm9yJyByZWNlaXZlZCBhbiBpbnZhbGlkIG9iamVjdCAiCi0gICAgICAgICAgICAgICAgICAgICJmcm9tIF9fYW5leHRfXzogJS4xMDBzIiwKLSAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShuZXh0X2l0ZXIpLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICBpZiAoZ2V0dGVyICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgbmV4dF9pdGVyID0gKCpnZXR0ZXIpKGFpdGVyKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRfaXRlciA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICBQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiJ2FzeW5jIGZvcicgcmVxdWlyZXMgYW4gaXRlcmF0b3Igd2l0aCAiCisgICAgICAgICAgICAgICAgICAgICAgICAiX19hbmV4dF9fIG1ldGhvZCwgZ290ICUuMTAwcyIsCisgICAgICAgICAgICAgICAgICAgICAgICB0eXBlLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmV4dF9pdGVyKTsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgUHlfREVDUkVGKG5leHRfaXRlcik7CisgICAgICAgICAgICAgICAgYXdhaXRhYmxlID0gX1B5Q29yb19HZXRBd2FpdGFibGVJdGVyKG5leHRfaXRlcik7CisgICAgICAgICAgICAgICAgaWYgKGF3YWl0YWJsZSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICInYXN5bmMgZm9yJyByZWNlaXZlZCBhbiBpbnZhbGlkIG9iamVjdCAiCisgICAgICAgICAgICAgICAgICAgICAgICAiZnJvbSBfX2FuZXh0X186ICUuMTAwcyIsCisgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKG5leHRfaXRlciktPnRwX25hbWUpOworCisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXh0X2l0ZXIpOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXh0X2l0ZXIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgUFVTSChhd2FpdGFibGUpOworICAgICAgICAgICAgUFJFRElDVChMT0FEX0NPTlNUKTsKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAorICAgICAgICBQUkVESUNURUQoR0VUX0FXQUlUQUJMRSk7CiAgICAgICAgIFRBUkdFVChHRVRfQVdBSVRBQkxFKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqaXRlcmFibGUgPSBUT1AoKTsKICAgICAgICAgICAgIFB5T2JqZWN0ICppdGVyID0gX1B5Q29yb19HZXRBd2FpdGFibGVJdGVyKGl0ZXJhYmxlKTsKQEAgLTIwNzgsMjEgKzIwMDksMjIgQEAKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQogCisgICAgICAgICAgICBQUkVESUNUKExPQURfQ09OU1QpOwogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCiAgICAgICAgIFRBUkdFVChZSUVMRF9GUk9NKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqdiA9IFBPUCgpOwotICAgICAgICAgICAgUHlPYmplY3QgKnJlY2lldmVyID0gVE9QKCk7CisgICAgICAgICAgICBQeU9iamVjdCAqcmVjZWl2ZXIgPSBUT1AoKTsKICAgICAgICAgICAgIGludCBlcnI7Ci0gICAgICAgICAgICBpZiAoUHlHZW5fQ2hlY2tFeGFjdChyZWNpZXZlcikgfHwgUHlDb3JvX0NoZWNrRXhhY3QocmVjaWV2ZXIpKSB7Ci0gICAgICAgICAgICAgICAgcmV0dmFsID0gX1B5R2VuX1NlbmQoKFB5R2VuT2JqZWN0ICopcmVjaWV2ZXIsIHYpOworICAgICAgICAgICAgaWYgKFB5R2VuX0NoZWNrRXhhY3QocmVjZWl2ZXIpIHx8IFB5Q29yb19DaGVja0V4YWN0KHJlY2VpdmVyKSkgeworICAgICAgICAgICAgICAgIHJldHZhbCA9IF9QeUdlbl9TZW5kKChQeUdlbk9iamVjdCAqKXJlY2VpdmVyLCB2KTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoc2VuZCk7CiAgICAgICAgICAgICAgICAgaWYgKHYgPT0gUHlfTm9uZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dmFsID0gUHlfVFlQRShyZWNpZXZlciktPnRwX2l0ZXJuZXh0KHJlY2lldmVyKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dmFsID0gUHlfVFlQRShyZWNlaXZlciktPnRwX2l0ZXJuZXh0KHJlY2VpdmVyKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHJldHZhbCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWRPYmpBcmdzKHJlY2lldmVyLCAmUHlJZF9zZW5kLCB2LCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dmFsID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZE9iakFyZ3MocmVjZWl2ZXIsICZQeUlkX3NlbmQsIHYsIE5VTEwpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgUHlfREVDUkVGKHYpOwogICAgICAgICAgICAgaWYgKHJldHZhbCA9PSBOVUxMKSB7CkBAIC0yMTAzLDcgKzIwMzUsNyBAQAogICAgICAgICAgICAgICAgIGVyciA9IF9QeUdlbl9GZXRjaFN0b3BJdGVyYXRpb25WYWx1ZSgmdmFsKTsKICAgICAgICAgICAgICAgICBpZiAoZXJyIDwgMCkKICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVjaWV2ZXIpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZWNlaXZlcik7CiAgICAgICAgICAgICAgICAgU0VUX1RPUCh2YWwpOwogICAgICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgICAgICB9CkBAIC0yMTExLDEyICsyMDQzLDI0IEBACiAgICAgICAgICAgICBmLT5mX3N0YWNrdG9wID0gc3RhY2tfcG9pbnRlcjsKICAgICAgICAgICAgIHdoeSA9IFdIWV9ZSUVMRDsKICAgICAgICAgICAgIC8qIGFuZCByZXBlYXQuLi4gKi8KLSAgICAgICAgICAgIGYtPmZfbGFzdGktLTsKKyAgICAgICAgICAgIGFzc2VydChmLT5mX2xhc3RpID49IChpbnQpc2l6ZW9mKF9QeV9DT0RFVU5JVCkpOworICAgICAgICAgICAgZi0+Zl9sYXN0aSAtPSBzaXplb2YoX1B5X0NPREVVTklUKTsKICAgICAgICAgICAgIGdvdG8gZmFzdF95aWVsZDsKICAgICAgICAgfQogCiAgICAgICAgIFRBUkdFVChZSUVMRF9WQUxVRSkgewogICAgICAgICAgICAgcmV0dmFsID0gUE9QKCk7CisKKyAgICAgICAgICAgIGlmIChjby0+Y29fZmxhZ3MgJiBDT19BU1lOQ19HRU5FUkFUT1IpIHsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqdyA9IF9QeUFzeW5jR2VuVmFsdWVXcmFwcGVyTmV3KHJldHZhbCk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJldHZhbCk7CisgICAgICAgICAgICAgICAgaWYgKHcgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICByZXR2YWwgPSBOVUxMOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR2YWwgPSB3OworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBmLT5mX3N0YWNrdG9wID0gc3RhY2tfcG9pbnRlcjsKICAgICAgICAgICAgIHdoeSA9IFdIWV9ZSUVMRDsKICAgICAgICAgICAgIGdvdG8gZmFzdF95aWVsZDsKQEAgLTIxMzMsNiArMjA3Nyw3IEBACiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKKyAgICAgICAgUFJFRElDVEVEKFBPUF9CTE9DSyk7CiAgICAgICAgIFRBUkdFVChQT1BfQkxPQ0spIHsKICAgICAgICAgICAgIFB5VHJ5QmxvY2sgKmIgPSBQeUZyYW1lX0Jsb2NrUG9wKGYpOwogICAgICAgICAgICAgVU5XSU5EX0JMT0NLKGIpOwpAQCAtMjI0OSw3ICsyMTk0LDcgQEAKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAotICAgICAgICBQUkVESUNURURfV0lUSF9BUkcoVU5QQUNLX1NFUVVFTkNFKTsKKyAgICAgICAgUFJFRElDVEVEKFVOUEFDS19TRVFVRU5DRSk7CiAgICAgICAgIFRBUkdFVChVTlBBQ0tfU0VRVUVOQ0UpIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICpzZXEgPSBQT1AoKSwgKml0ZW0sICoqaXRlbXM7CiAgICAgICAgICAgICBpZiAoUHlUdXBsZV9DaGVja0V4YWN0KHNlcSkgJiYKQEAgLTIzNTgsNyArMjMwMyw3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICB2ID0gUHlPYmplY3RfR2V0SXRlbShsb2NhbHMsIG5hbWUpOwotICAgICAgICAgICAgICAgIGlmICh2ID09IE5VTEwgJiYgX1B5RXJyX09DQ1VSUkVEKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAodiA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlFcnJvcikpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwpAQCAtMjM5OCwyNiArMjM0MywzMyBAQAogICAgICAgICAgICAgUHlPYmplY3QgKm5hbWUgPSBHRVRJVEVNKG5hbWVzLCBvcGFyZyk7CiAgICAgICAgICAgICBQeU9iamVjdCAqdjsKICAgICAgICAgICAgIGlmIChQeURpY3RfQ2hlY2tFeGFjdChmLT5mX2dsb2JhbHMpCi0gICAgICAgICAgICAgICAgJiYgUHlEaWN0X0NoZWNrRXhhY3QoZi0+Zl9idWlsdGlucykpIHsKKyAgICAgICAgICAgICAgICAmJiBQeURpY3RfQ2hlY2tFeGFjdChmLT5mX2J1aWx0aW5zKSkKKyAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICB2ID0gX1B5RGljdF9Mb2FkR2xvYmFsKChQeURpY3RPYmplY3QgKilmLT5mX2dsb2JhbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlEaWN0T2JqZWN0ICopZi0+Zl9idWlsdGlucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUpOwogICAgICAgICAgICAgICAgIGlmICh2ID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFfUHlFcnJfT0NDVVJSRUQoKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFfUHlFcnJfT0NDVVJSRUQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLyogX1B5RGljdF9Mb2FkR2xvYmFsKCkgcmV0dXJucyBOVUxMIHdpdGhvdXQgcmFpc2luZworICAgICAgICAgICAgICAgICAgICAgICAgICogYW4gZXhjZXB0aW9uIGlmIHRoZSBrZXkgZG9lc24ndCBleGlzdCAqLwogICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0X2V4Y19jaGVja19hcmcoUHlFeGNfTmFtZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkFNRV9FUlJPUl9NU0csIG5hbWUpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih2KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIC8qIFNsb3ctcGF0aCBpZiBnbG9iYWxzIG9yIGJ1aWx0aW5zIGlzIG5vdCBhIGRpY3QgKi8KKworICAgICAgICAgICAgICAgIC8qIG5hbWVzcGFjZSAxOiBnbG9iYWxzICovCiAgICAgICAgICAgICAgICAgdiA9IFB5T2JqZWN0X0dldEl0ZW0oZi0+Zl9nbG9iYWxzLCBuYW1lKTsKICAgICAgICAgICAgICAgICBpZiAodiA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlFcnJvcikpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogCisgICAgICAgICAgICAgICAgICAgIC8qIG5hbWVzcGFjZSAyOiBidWlsdGlucyAqLwogICAgICAgICAgICAgICAgICAgICB2ID0gUHlPYmplY3RfR2V0SXRlbShmLT5mX2J1aWx0aW5zLCBuYW1lKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5RXJyb3IpKQpAQCAtMjQ3Nyw3ICsyNDI5LDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIHZhbHVlID0gUHlPYmplY3RfR2V0SXRlbShsb2NhbHMsIG5hbWUpOwotICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5RXJyb3IpKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKQEAgLTI1MTEsOCArMjQ2MywyNyBAQAogICAgICAgICBUQVJHRVQoU1RPUkVfREVSRUYpIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICp2ID0gUE9QKCk7CiAgICAgICAgICAgICBQeU9iamVjdCAqY2VsbCA9IGZyZWV2YXJzW29wYXJnXTsKLSAgICAgICAgICAgIFB5Q2VsbF9TZXQoY2VsbCwgdik7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodik7CisgICAgICAgICAgICBQeU9iamVjdCAqb2xkb2JqID0gUHlDZWxsX0dFVChjZWxsKTsKKyAgICAgICAgICAgIFB5Q2VsbF9TRVQoY2VsbCwgdik7CisgICAgICAgICAgICBQeV9YREVDUkVGKG9sZG9iaik7CisgICAgICAgICAgICBESVNQQVRDSCgpOworICAgICAgICB9CisKKyAgICAgICAgVEFSR0VUKEJVSUxEX1NUUklORykgeworICAgICAgICAgICAgUHlPYmplY3QgKnN0cjsKKyAgICAgICAgICAgIFB5T2JqZWN0ICplbXB0eSA9IFB5VW5pY29kZV9OZXcoMCwgMCk7CisgICAgICAgICAgICBpZiAoZW1wdHkgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdHIgPSBfUHlVbmljb2RlX0pvaW5BcnJheShlbXB0eSwgc3RhY2tfcG9pbnRlciAtIG9wYXJnLCBvcGFyZyk7CisgICAgICAgICAgICBQeV9ERUNSRUYoZW1wdHkpOworICAgICAgICAgICAgaWYgKHN0ciA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB3aGlsZSAoLS1vcGFyZyA+PSAwKSB7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKml0ZW0gPSBQT1AoKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQVVNIKHN0cik7CiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKQEAgLTI1NDAsMTMgKzI1MTEsMTQgQEAKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAotICAgICAgICBUQVJHRVRfV0lUSF9JTVBMKEJVSUxEX1RVUExFX1VOUEFDSywgX2J1aWxkX2xpc3RfdW5wYWNrKQotICAgICAgICBUQVJHRVQoQlVJTERfTElTVF9VTlBBQ0spCi0gICAgICAgIF9idWlsZF9saXN0X3VucGFjazogewotICAgICAgICAgICAgaW50IGNvbnZlcnRfdG9fdHVwbGUgPSBvcGNvZGUgPT0gQlVJTERfVFVQTEVfVU5QQUNLOwotICAgICAgICAgICAgaW50IGk7CisgICAgICAgIFRBUkdFVChCVUlMRF9UVVBMRV9VTlBBQ0tfV0lUSF9DQUxMKQorICAgICAgICBUQVJHRVQoQlVJTERfVFVQTEVfVU5QQUNLKQorICAgICAgICBUQVJHRVQoQlVJTERfTElTVF9VTlBBQ0spIHsKKyAgICAgICAgICAgIGludCBjb252ZXJ0X3RvX3R1cGxlID0gb3Bjb2RlICE9IEJVSUxEX0xJU1RfVU5QQUNLOworICAgICAgICAgICAgUHlfc3NpemVfdCBpOwogICAgICAgICAgICAgUHlPYmplY3QgKnN1bSA9IFB5TGlzdF9OZXcoMCk7CiAgICAgICAgICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlOworCiAgICAgICAgICAgICBpZiAoc3VtID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKIApAQCAtMjU1NSw2ICsyNTI3LDE2IEBACiAKICAgICAgICAgICAgICAgICBub25lX3ZhbCA9IF9QeUxpc3RfRXh0ZW5kKChQeUxpc3RPYmplY3QgKilzdW0sIFBFRUsoaSkpOwogICAgICAgICAgICAgICAgIGlmIChub25lX3ZhbCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChvcGNvZGUgPT0gQlVJTERfVFVQTEVfVU5QQUNLX1dJVEhfQ0FMTCAmJgorICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19UeXBlRXJyb3IpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZnVuYyA9IFBFRUsoMSArIG9wYXJnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMlLjIwMHMgYXJndW1lbnQgYWZ0ZXIgKiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IGJlIGFuIGl0ZXJhYmxlLCBub3QgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNOYW1lKGZ1bmMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY0Rlc2MoZnVuYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBFRUsoaSktPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzdW0pOwogICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgICAgIH0KQEAgLTI1OTksNyArMjU4MSw3IEBACiAgICAgICAgIH0KIAogICAgICAgICBUQVJHRVQoQlVJTERfU0VUX1VOUEFDSykgewotICAgICAgICAgICAgaW50IGk7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGk7CiAgICAgICAgICAgICBQeU9iamVjdCAqc3VtID0gUHlTZXRfTmV3KE5VTEwpOwogICAgICAgICAgICAgaWYgKHN1bSA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC0yNjE4LDcgKzI2MDAsNyBAQAogICAgICAgICB9CiAKICAgICAgICAgVEFSR0VUKEJVSUxEX01BUCkgewotICAgICAgICAgICAgaW50IGk7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGk7CiAgICAgICAgICAgICBQeU9iamVjdCAqbWFwID0gX1B5RGljdF9OZXdQcmVzaXplZCgoUHlfc3NpemVfdClvcGFyZyk7CiAgICAgICAgICAgICBpZiAobWFwID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKQEAgLTI2NDEsODcgKzI2MjMsMTYyIEBACiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKLSAgICAgICAgVEFSR0VUX1dJVEhfSU1QTChCVUlMRF9NQVBfVU5QQUNLX1dJVEhfQ0FMTCwgX2J1aWxkX21hcF91bnBhY2spCi0gICAgICAgIFRBUkdFVChCVUlMRF9NQVBfVU5QQUNLKQotICAgICAgICBfYnVpbGRfbWFwX3VucGFjazogewotICAgICAgICAgICAgaW50IHdpdGhfY2FsbCA9IG9wY29kZSA9PSBCVUlMRF9NQVBfVU5QQUNLX1dJVEhfQ0FMTDsKLSAgICAgICAgICAgIGludCBudW1fbWFwczsKLSAgICAgICAgICAgIGludCBpOworICAgICAgICBUQVJHRVQoU0VUVVBfQU5OT1RBVElPTlMpIHsKKyAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKF9fYW5ub3RhdGlvbnNfXyk7CisgICAgICAgICAgICBpbnQgZXJyOworICAgICAgICAgICAgUHlPYmplY3QgKmFubl9kaWN0OworICAgICAgICAgICAgaWYgKGYtPmZfbG9jYWxzID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJubyBsb2NhbHMgZm91bmQgd2hlbiBzZXR0aW5nIHVwIGFubm90YXRpb25zIik7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qIGNoZWNrIGlmIF9fYW5ub3RhdGlvbnNfXyBpbiBsb2NhbHMoKS4uLiAqLworICAgICAgICAgICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KGYtPmZfbG9jYWxzKSkgeworICAgICAgICAgICAgICAgIGFubl9kaWN0ID0gX1B5RGljdF9HZXRJdGVtSWQoZi0+Zl9sb2NhbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlJZF9fX2Fubm90YXRpb25zX18pOworICAgICAgICAgICAgICAgIGlmIChhbm5fZGljdCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIC4uLmlmIG5vdCwgY3JlYXRlIGEgbmV3IG9uZSAqLworICAgICAgICAgICAgICAgICAgICBhbm5fZGljdCA9IFB5RGljdF9OZXcoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGFubl9kaWN0ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZXJyID0gX1B5RGljdF9TZXRJdGVtSWQoZi0+Zl9sb2NhbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX19fYW5ub3RhdGlvbnNfXywgYW5uX2RpY3QpOworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYW5uX2RpY3QpOworICAgICAgICAgICAgICAgICAgICBpZiAoZXJyICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAvKiBkbyB0aGUgc2FtZSBpZiBsb2NhbHMoKSBpcyBub3QgYSBkaWN0ICovCisgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFubl9zdHIgPSBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9fX2Fubm90YXRpb25zX18pOworICAgICAgICAgICAgICAgIGlmIChhbm5fc3RyID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYW5uX2RpY3QgPSBQeU9iamVjdF9HZXRJdGVtKGYtPmZfbG9jYWxzLCBhbm5fc3RyKTsKKyAgICAgICAgICAgICAgICBpZiAoYW5uX2RpY3QgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5RXJyb3IpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgICAgICAgICAgICAgIGFubl9kaWN0ID0gUHlEaWN0X05ldygpOworICAgICAgICAgICAgICAgICAgICBpZiAoYW5uX2RpY3QgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlcnIgPSBQeU9iamVjdF9TZXRJdGVtKGYtPmZfbG9jYWxzLCBhbm5fc3RyLCBhbm5fZGljdCk7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhbm5fZGljdCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChlcnIgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGFubl9kaWN0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBESVNQQVRDSCgpOworICAgICAgICB9CisKKyAgICAgICAgVEFSR0VUKEJVSUxEX0NPTlNUX0tFWV9NQVApIHsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICptYXA7CisgICAgICAgICAgICBQeU9iamVjdCAqa2V5cyA9IFRPUCgpOworICAgICAgICAgICAgaWYgKCFQeVR1cGxlX0NoZWNrRXhhY3Qoa2V5cykgfHwKKyAgICAgICAgICAgICAgICBQeVR1cGxlX0dFVF9TSVpFKGtleXMpICE9IChQeV9zc2l6ZV90KW9wYXJnKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmFkIEJVSUxEX0NPTlNUX0tFWV9NQVAga2V5cyBhcmd1bWVudCIpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtYXAgPSBfUHlEaWN0X05ld1ByZXNpemVkKChQeV9zc2l6ZV90KW9wYXJnKTsKKyAgICAgICAgICAgIGlmIChtYXAgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmb3IgKGkgPSBvcGFyZzsgaSA+IDA7IGktLSkgeworICAgICAgICAgICAgICAgIGludCBlcnI7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKmtleSA9IFB5VHVwbGVfR0VUX0lURU0oa2V5cywgb3BhcmcgLSBpKTsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqdmFsdWUgPSBQRUVLKGkgKyAxKTsKKyAgICAgICAgICAgICAgICBlcnIgPSBQeURpY3RfU2V0SXRlbShtYXAsIGtleSwgdmFsdWUpOworICAgICAgICAgICAgICAgIGlmIChlcnIgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobWFwKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFB5X0RFQ1JFRihQT1AoKSk7CisgICAgICAgICAgICB3aGlsZSAob3BhcmctLSkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihQT1AoKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQVVNIKG1hcCk7CisgICAgICAgICAgICBESVNQQVRDSCgpOworICAgICAgICB9CisKKyAgICAgICAgVEFSR0VUKEJVSUxEX01BUF9VTlBBQ0spIHsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKICAgICAgICAgICAgIFB5T2JqZWN0ICpzdW0gPSBQeURpY3RfTmV3KCk7CiAgICAgICAgICAgICBpZiAoc3VtID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIGlmICh3aXRoX2NhbGwpIHsKLSAgICAgICAgICAgICAgICBudW1fbWFwcyA9IG9wYXJnICYgMHhmZjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIG51bV9tYXBzID0gb3Bhcmc7Ci0gICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGZvciAoaSA9IG51bV9tYXBzOyBpID4gMDsgaS0tKSB7CisgICAgICAgICAgICBmb3IgKGkgPSBvcGFyZzsgaSA+IDA7IGktLSkgewogICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmcgPSBQRUVLKGkpOwotICAgICAgICAgICAgICAgIGlmICh3aXRoX2NhbGwpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmludGVyc2VjdGlvbiA9IF9QeURpY3RWaWV3X0ludGVyc2VjdChzdW0sIGFyZyk7Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKGludGVyc2VjdGlvbiA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAhUHlNYXBwaW5nX0NoZWNrKGFyZykpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZnVuY3Rpb25fbG9jYXRpb24gPSAob3Bhcmc+PjgpICYgMHhmZjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZnVuYyA9ICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBFRUsoZnVuY3Rpb25fbG9jYXRpb24gKyBudW1fbWFwcykpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzJS4yMDBzIGFyZ3VtZW50IGFmdGVyICoqICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IGJlIGEgbWFwcGluZywgbm90ICUuMjAwcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY05hbWUoZnVuYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY0Rlc2MoZnVuYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmctPm9iX3R5cGUtPnRwX25hbWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHN1bSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKFB5U2V0X0dFVF9TSVpFKGludGVyc2VjdGlvbikpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaWR4ID0gMDsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprZXk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgZnVuY3Rpb25fbG9jYXRpb24gPSAob3Bhcmc+PjgpICYgMHhmZjsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmdW5jID0gUEVFSyhmdW5jdGlvbl9sb2NhdGlvbiArIG51bV9tYXBzKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoOwotICAgICAgICAgICAgICAgICAgICAgICAgX1B5U2V0X05leHRFbnRyeShpbnRlcnNlY3Rpb24sICZpZHgsICZrZXksICZoYXNoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKGtleSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcyUuMjAwcyBrZXl3b3JkcyBtdXN0IGJlIHN0cmluZ3MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNOYW1lKGZ1bmMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNEZXNjKGZ1bmMpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMlLjIwMHMgZ290IG11bHRpcGxlICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZXMgZm9yIGtleXdvcmQgYXJndW1lbnQgJyVVJyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY05hbWUoZnVuYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY0Rlc2MoZnVuYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXkpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGludGVyc2VjdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoc3VtKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGludGVyc2VjdGlvbik7Ci0gICAgICAgICAgICAgICAgfQotCiAgICAgICAgICAgICAgICAgaWYgKFB5RGljdF9VcGRhdGUoc3VtLCBhcmcpIDwgMCkgewogICAgICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3aXRoX2NhbGwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZnVuY3Rpb25fbG9jYXRpb24gPSAob3Bhcmc+PjgpICYgMHhmZjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZnVuYyA9IFBFRUsoZnVuY3Rpb25fbG9jYXRpb24gKyBudW1fbWFwcyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMlLjIwMHMgYXJndW1lbnQgYWZ0ZXIgKiogIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm11c3QgYmUgYSBtYXBwaW5nLCBub3QgJS4yMDBzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jTmFtZShmdW5jKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jRGVzYyhmdW5jKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZy0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJyUuMjAwcycgb2JqZWN0IGlzIG5vdCBhIG1hcHBpbmciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmctPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzdW0pOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgd2hpbGUgKG9wYXJnLS0pCisgICAgICAgICAgICAgICAgUHlfREVDUkVGKFBPUCgpKTsKKyAgICAgICAgICAgIFBVU0goc3VtKTsKKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KKworICAgICAgICBUQVJHRVQoQlVJTERfTUFQX1VOUEFDS19XSVRIX0NBTEwpIHsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpzdW0gPSBQeURpY3RfTmV3KCk7CisgICAgICAgICAgICBpZiAoc3VtID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKworICAgICAgICAgICAgZm9yIChpID0gb3Bhcmc7IGkgPiAwOyBpLS0pIHsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJnID0gUEVFSyhpKTsKKyAgICAgICAgICAgICAgICBpZiAoX1B5RGljdF9NZXJnZUV4KHN1bSwgYXJnLCAyKSA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZ1bmMgPSBQRUVLKDIgKyBvcGFyZyk7CisgICAgICAgICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcyUuMjAwcyBhcmd1bWVudCBhZnRlciAqKiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IGJlIGEgbWFwcGluZywgbm90ICUuMjAwcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jTmFtZShmdW5jKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNEZXNjKGZ1bmMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmctPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5RXJyb3IpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZXhjLCAqdmFsLCAqdGI7CisgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9GZXRjaCgmZXhjLCAmdmFsLCAmdGIpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbCAmJiBQeVR1cGxlX0NoZWNrKHZhbCkgJiYgUHlUdXBsZV9HRVRfU0laRSh2YWwpID09IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqa2V5ID0gUHlUdXBsZV9HRVRfSVRFTSh2YWwsIDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKGtleSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzJS4yMDBzIGtleXdvcmRzIG11c3QgYmUgc3RyaW5ncyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNOYW1lKGZ1bmMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jRGVzYyhmdW5jKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzJS4yMDBzIGdvdCBtdWx0aXBsZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlcyBmb3Iga2V5d29yZCBhcmd1bWVudCAnJVUnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY05hbWUoZnVuYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNEZXNjKGZ1bmMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYoZXhjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHZhbCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih0Yik7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiclLjIwMHMnIG9iamVjdCBpcyBub3QgYSBtYXBwaW5nIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZy0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfUmVzdG9yZShleGMsIHZhbCwgdGIpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzdW0pOwpAQCAtMjcyOSw3ICsyNzg2LDcgQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHdoaWxlIChudW1fbWFwcy0tKQorICAgICAgICAgICAgd2hpbGUgKG9wYXJnLS0pCiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKFBPUCgpKTsKICAgICAgICAgICAgIFBVU0goc3VtKTsKICAgICAgICAgICAgIERJU1BBVENIKCk7CkBAIC0yNzc4LDQ1ICsyODM1LDEzIEBACiAgICAgICAgIH0KIAogICAgICAgICBUQVJHRVQoSU1QT1JUX05BTUUpIHsKLSAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKF9faW1wb3J0X18pOwogICAgICAgICAgICAgUHlPYmplY3QgKm5hbWUgPSBHRVRJVEVNKG5hbWVzLCBvcGFyZyk7Ci0gICAgICAgICAgICBQeU9iamVjdCAqZnVuYyA9IF9QeURpY3RfR2V0SXRlbUlkKGYtPmZfYnVpbHRpbnMsICZQeUlkX19faW1wb3J0X18pOwotICAgICAgICAgICAgUHlPYmplY3QgKmZyb20sICpsZXZlbCwgKmFyZ3MsICpyZXM7Ci0gICAgICAgICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX19pbXBvcnRfXyBub3QgZm91bmQiKTsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlfSU5DUkVGKGZ1bmMpOwotICAgICAgICAgICAgZnJvbSA9IFBPUCgpOwotICAgICAgICAgICAgbGV2ZWwgPSBUT1AoKTsKLSAgICAgICAgICAgIGlmIChQeUxvbmdfQXNMb25nKGxldmVsKSAhPSAtMSB8fCBQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgICAgIGFyZ3MgPSBQeVR1cGxlX1BhY2soNSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYtPmZfZ2xvYmFscywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLT5mX2xvY2FscyA9PSBOVUxMID8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9Ob25lIDogZi0+Zl9sb2NhbHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYXJncyA9IFB5VHVwbGVfUGFjayg0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZi0+Zl9nbG9iYWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYtPmZfbG9jYWxzID09IE5VTEwgPwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X05vbmUgOiBmLT5mX2xvY2FscywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpmcm9tbGlzdCA9IFBPUCgpOworICAgICAgICAgICAgUHlPYmplY3QgKmxldmVsID0gVE9QKCk7CisgICAgICAgICAgICBQeU9iamVjdCAqcmVzOworICAgICAgICAgICAgcmVzID0gaW1wb3J0X25hbWUoZiwgbmFtZSwgZnJvbWxpc3QsIGxldmVsKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihsZXZlbCk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoZnJvbSk7Ci0gICAgICAgICAgICBpZiAoYXJncyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwotICAgICAgICAgICAgICAgIFNUQUNLQURKKC0xKTsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUkVBRF9USU1FU1RBTVAoaW50cjApOwotICAgICAgICAgICAgcmVzID0gUHlFdmFsX0NhbGxPYmplY3QoZnVuYywgYXJncyk7Ci0gICAgICAgICAgICBSRUFEX1RJTUVTVEFNUChpbnRyMSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoYXJncyk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoZnVuYyk7CisgICAgICAgICAgICBQeV9ERUNSRUYoZnJvbWxpc3QpOwogICAgICAgICAgICAgU0VUX1RPUChyZXMpOwogICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC0yODM1LDkgKzI4NjAsNyBAQAogICAgICAgICAgICAgICAgICAgICAibm8gbG9jYWxzIGZvdW5kIGR1cmluZyAnaW1wb3J0IConIik7CiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFJFQURfVElNRVNUQU1QKGludHIwKTsKICAgICAgICAgICAgIGVyciA9IGltcG9ydF9hbGxfZnJvbShsb2NhbHMsIGZyb20pOwotICAgICAgICAgICAgUkVBRF9USU1FU1RBTVAoaW50cjEpOwogICAgICAgICAgICAgUHlGcmFtZV9Mb2NhbHNUb0Zhc3QoZiwgMCk7CiAgICAgICAgICAgICBQeV9ERUNSRUYoZnJvbSk7CiAgICAgICAgICAgICBpZiAoZXJyICE9IDApCkBAIC0yODQ5LDkgKzI4NzIsNyBAQAogICAgICAgICAgICAgUHlPYmplY3QgKm5hbWUgPSBHRVRJVEVNKG5hbWVzLCBvcGFyZyk7CiAgICAgICAgICAgICBQeU9iamVjdCAqZnJvbSA9IFRPUCgpOwogICAgICAgICAgICAgUHlPYmplY3QgKnJlczsKLSAgICAgICAgICAgIFJFQURfVElNRVNUQU1QKGludHIwKTsKICAgICAgICAgICAgIHJlcyA9IGltcG9ydF9mcm9tKGZyb20sIG5hbWUpOwotICAgICAgICAgICAgUkVBRF9USU1FU1RBTVAoaW50cjEpOwogICAgICAgICAgICAgUFVTSChyZXMpOwogICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC0yODYzLDcgKzI4ODQsNyBAQAogICAgICAgICAgICAgRkFTVF9ESVNQQVRDSCgpOwogICAgICAgICB9CiAKLSAgICAgICAgUFJFRElDVEVEX1dJVEhfQVJHKFBPUF9KVU1QX0lGX0ZBTFNFKTsKKyAgICAgICAgUFJFRElDVEVEKFBPUF9KVU1QX0lGX0ZBTFNFKTsKICAgICAgICAgVEFSR0VUKFBPUF9KVU1QX0lGX0ZBTFNFKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqY29uZCA9IFBPUCgpOwogICAgICAgICAgICAgaW50IGVycjsKQEAgLTI4ODcsNyArMjkwOCw3IEBACiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKLSAgICAgICAgUFJFRElDVEVEX1dJVEhfQVJHKFBPUF9KVU1QX0lGX1RSVUUpOworICAgICAgICBQUkVESUNURUQoUE9QX0pVTVBfSUZfVFJVRSk7CiAgICAgICAgIFRBUkdFVChQT1BfSlVNUF9JRl9UUlVFKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqY29uZCA9IFBPUCgpOwogICAgICAgICAgICAgaW50IGVycjsKQEAgLTI5NjQsNyArMjk4NSw3IEBACiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKLSAgICAgICAgUFJFRElDVEVEX1dJVEhfQVJHKEpVTVBfQUJTT0xVVEUpOworICAgICAgICBQUkVESUNURUQoSlVNUF9BQlNPTFVURSk7CiAgICAgICAgIFRBUkdFVChKVU1QX0FCU09MVVRFKSB7CiAgICAgICAgICAgICBKVU1QVE8ob3BhcmcpOwogI2lmIEZBU1RfTE9PUFMKQEAgLTI5OTAsNiArMzAxMSw3IEBACiAgICAgICAgICAgICBpZiAoaXRlciA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICBQUkVESUNUKEZPUl9JVEVSKTsKKyAgICAgICAgICAgIFBSRURJQ1QoQ0FMTF9GVU5DVElPTik7CiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKQEAgLTMwMTgsMTAgKzMwNDAsMTEgQEAKICAgICAgICAgICAgICAgICBpZiAoaXRlciA9PSBOVUxMKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgUFJFRElDVChMT0FEX0NPTlNUKTsKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAotICAgICAgICBQUkVESUNURURfV0lUSF9BUkcoRk9SX0lURVIpOworICAgICAgICBQUkVESUNURUQoRk9SX0lURVIpOwogICAgICAgICBUQVJHRVQoRk9SX0lURVIpIHsKICAgICAgICAgICAgIC8qIGJlZm9yZTogW2l0ZXJdOyBhZnRlcjogW2l0ZXIsIGl0ZXIoKV0gKm9yKiBbXSAqLwogICAgICAgICAgICAgUHlPYmplY3QgKml0ZXIgPSBUT1AoKTsKQEAgLTMwNDMsNiArMzA2Niw3IEBACiAgICAgICAgICAgICBTVEFDS0FESigtMSk7CiAgICAgICAgICAgICBQeV9ERUNSRUYoaXRlcik7CiAgICAgICAgICAgICBKVU1QQlkob3BhcmcpOworICAgICAgICAgICAgUFJFRElDVChQT1BfQkxPQ0spOwogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCkBAIC0zMDU5LDEwICszMDgzLDkgQEAKICAgICAgICAgICAgIGdvdG8gZmFzdF9ibG9ja19lbmQ7CiAgICAgICAgIH0KIAotICAgICAgICBUQVJHRVRfV0lUSF9JTVBMKFNFVFVQX0xPT1AsIF9zZXR1cF9maW5hbGx5KQotICAgICAgICBUQVJHRVRfV0lUSF9JTVBMKFNFVFVQX0VYQ0VQVCwgX3NldHVwX2ZpbmFsbHkpCi0gICAgICAgIFRBUkdFVChTRVRVUF9GSU5BTExZKQotICAgICAgICBfc2V0dXBfZmluYWxseTogeworICAgICAgICBUQVJHRVQoU0VUVVBfTE9PUCkKKyAgICAgICAgVEFSR0VUKFNFVFVQX0VYQ0VQVCkKKyAgICAgICAgVEFSR0VUKFNFVFVQX0ZJTkFMTFkpIHsKICAgICAgICAgICAgIC8qIE5PVEU6IElmIHlvdSBhZGQgYW55IG5ldyBibG9jay1zZXR1cCBvcGNvZGVzIHRoYXQKICAgICAgICAgICAgICAgIGFyZSBub3QgdHJ5L2V4Y2VwdC9maW5hbGx5IGhhbmRsZXJzLCB5b3UgbWF5IG5lZWQKICAgICAgICAgICAgICAgIHRvIHVwZGF0ZSB0aGUgUHlHZW5fTmVlZHNGaW5hbGl6aW5nKCkgZnVuY3Rpb24uCkBAIC0zMDkzLDYgKzMxMTYsNyBAQAogICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICBQVVNIKHJlcyk7CisgICAgICAgICAgICBQUkVESUNUKEdFVF9BV0FJVEFCTEUpOwogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCkBAIC0zMTEwLDE1ICszMTM0LDE3IEBACiAgICAgICAgICAgICBfUHlfSURFTlRJRklFUihfX2V4aXRfXyk7CiAgICAgICAgICAgICBfUHlfSURFTlRJRklFUihfX2VudGVyX18pOwogICAgICAgICAgICAgUHlPYmplY3QgKm1nciA9IFRPUCgpOwotICAgICAgICAgICAgUHlPYmplY3QgKmV4aXQgPSBzcGVjaWFsX2xvb2t1cChtZ3IsICZQeUlkX19fZXhpdF9fKSwgKmVudGVyOworICAgICAgICAgICAgUHlPYmplY3QgKmVudGVyID0gc3BlY2lhbF9sb29rdXAobWdyLCAmUHlJZF9fX2VudGVyX18pLCAqZXhpdDsKICAgICAgICAgICAgIFB5T2JqZWN0ICpyZXM7Ci0gICAgICAgICAgICBpZiAoZXhpdCA9PSBOVUxMKQotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICBTRVRfVE9QKGV4aXQpOwotICAgICAgICAgICAgZW50ZXIgPSBzcGVjaWFsX2xvb2t1cChtZ3IsICZQeUlkX19fZW50ZXJfXyk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYobWdyKTsKICAgICAgICAgICAgIGlmIChlbnRlciA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBleGl0ID0gc3BlY2lhbF9sb29rdXAobWdyLCAmUHlJZF9fX2V4aXRfXyk7CisgICAgICAgICAgICBpZiAoZXhpdCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGVudGVyKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgU0VUX1RPUChleGl0KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihtZ3IpOwogICAgICAgICAgICAgcmVzID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhlbnRlciwgTlVMTCk7CiAgICAgICAgICAgICBQeV9ERUNSRUYoZW50ZXIpOwogICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQpAQCAtMzI0MSwxNzggKzMyNjcsMTM1IEBACiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKKyAgICAgICAgUFJFRElDVEVEKENBTExfRlVOQ1RJT04pOwogICAgICAgICBUQVJHRVQoQ0FMTF9GVU5DVElPTikgewogICAgICAgICAgICAgUHlPYmplY3QgKipzcCwgKnJlczsKICAgICAgICAgICAgIFBDQUxMKFBDQUxMX0FMTCk7CiAgICAgICAgICAgICBzcCA9IHN0YWNrX3BvaW50ZXI7Ci0jaWZkZWYgV0lUSF9UU0MKLSAgICAgICAgICAgIHJlcyA9IGNhbGxfZnVuY3Rpb24oJnNwLCBvcGFyZywgJmludHIwLCAmaW50cjEpOwotI2Vsc2UKLSAgICAgICAgICAgIHJlcyA9IGNhbGxfZnVuY3Rpb24oJnNwLCBvcGFyZyk7Ci0jZW5kaWYKKyAgICAgICAgICAgIHJlcyA9IGNhbGxfZnVuY3Rpb24oJnNwLCBvcGFyZywgTlVMTCk7CiAgICAgICAgICAgICBzdGFja19wb2ludGVyID0gc3A7CiAgICAgICAgICAgICBQVVNIKHJlcyk7Ci0gICAgICAgICAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgICAgICBpZiAocmVzID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCi0gICAgICAgIFRBUkdFVF9XSVRIX0lNUEwoQ0FMTF9GVU5DVElPTl9WQVIsIF9jYWxsX2Z1bmN0aW9uX3Zhcl9rdykKLSAgICAgICAgVEFSR0VUX1dJVEhfSU1QTChDQUxMX0ZVTkNUSU9OX0tXLCBfY2FsbF9mdW5jdGlvbl92YXJfa3cpCi0gICAgICAgIFRBUkdFVChDQUxMX0ZVTkNUSU9OX1ZBUl9LVykKLSAgICAgICAgX2NhbGxfZnVuY3Rpb25fdmFyX2t3OiB7Ci0gICAgICAgICAgICBpbnQgbmEgPSBvcGFyZyAmIDB4ZmY7Ci0gICAgICAgICAgICBpbnQgbmsgPSAob3Bhcmc+PjgpICYgMHhmZjsKLSAgICAgICAgICAgIGludCBmbGFncyA9IChvcGNvZGUgLSBDQUxMX0ZVTkNUSU9OKSAmIDM7Ci0gICAgICAgICAgICBpbnQgbiA9IG5hICsgMiAqIG5rOwotICAgICAgICAgICAgUHlPYmplY3QgKipwZnVuYywgKmZ1bmMsICoqc3AsICpyZXM7CisgICAgICAgIFRBUkdFVChDQUxMX0ZVTkNUSU9OX0tXKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqKnNwLCAqcmVzLCAqbmFtZXM7CisKKyAgICAgICAgICAgIG5hbWVzID0gUE9QKCk7CisgICAgICAgICAgICBhc3NlcnQoUHlUdXBsZV9DaGVja0V4YWN0KG5hbWVzKSAmJiBQeVR1cGxlX0dFVF9TSVpFKG5hbWVzKSA8PSBvcGFyZyk7CiAgICAgICAgICAgICBQQ0FMTChQQ0FMTF9BTEwpOwotICAgICAgICAgICAgaWYgKGZsYWdzICYgQ0FMTF9GTEFHX1ZBUikKLSAgICAgICAgICAgICAgICBuKys7Ci0gICAgICAgICAgICBpZiAoZmxhZ3MgJiBDQUxMX0ZMQUdfS1cpCi0gICAgICAgICAgICAgICAgbisrOwotICAgICAgICAgICAgcGZ1bmMgPSBzdGFja19wb2ludGVyIC0gbiAtIDE7Ci0gICAgICAgICAgICBmdW5jID0gKnBmdW5jOwotCi0gICAgICAgICAgICBpZiAoUHlNZXRob2RfQ2hlY2soZnVuYykKLSAgICAgICAgICAgICAgICAmJiBQeU1ldGhvZF9HRVRfU0VMRihmdW5jKSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3QgKnNlbGYgPSBQeU1ldGhvZF9HRVRfU0VMRihmdW5jKTsKLSAgICAgICAgICAgICAgICBQeV9JTkNSRUYoc2VsZik7Ci0gICAgICAgICAgICAgICAgZnVuYyA9IFB5TWV0aG9kX0dFVF9GVU5DVElPTihmdW5jKTsKLSAgICAgICAgICAgICAgICBQeV9JTkNSRUYoZnVuYyk7Ci0gICAgICAgICAgICAgICAgUHlfU0VUUkVGKCpwZnVuYywgc2VsZik7Ci0gICAgICAgICAgICAgICAgbmErKzsKLSAgICAgICAgICAgICAgICAvKiBuKys7ICovCi0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBQeV9JTkNSRUYoZnVuYyk7CiAgICAgICAgICAgICBzcCA9IHN0YWNrX3BvaW50ZXI7Ci0gICAgICAgICAgICBSRUFEX1RJTUVTVEFNUChpbnRyMCk7Ci0gICAgICAgICAgICByZXMgPSBleHRfZG9fY2FsbChmdW5jLCAmc3AsIGZsYWdzLCBuYSwgbmspOwotICAgICAgICAgICAgUkVBRF9USU1FU1RBTVAoaW50cjEpOworICAgICAgICAgICAgcmVzID0gY2FsbF9mdW5jdGlvbigmc3AsIG9wYXJnLCBuYW1lcyk7CiAgICAgICAgICAgICBzdGFja19wb2ludGVyID0gc3A7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoZnVuYyk7Ci0KLSAgICAgICAgICAgIHdoaWxlIChzdGFja19wb2ludGVyID4gcGZ1bmMpIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqbyA9IFBPUCgpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihvKTsKLSAgICAgICAgICAgIH0KICAgICAgICAgICAgIFBVU0gocmVzKTsKLSAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgICAgIFB5X0RFQ1JFRihuYW1lcyk7CisKKyAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKLSAgICAgICAgVEFSR0VUX1dJVEhfSU1QTChNQUtFX0NMT1NVUkUsIF9tYWtlX2Z1bmN0aW9uKQotICAgICAgICBUQVJHRVQoTUFLRV9GVU5DVElPTikKLSAgICAgICAgX21ha2VfZnVuY3Rpb246IHsKLSAgICAgICAgICAgIGludCBwb3NkZWZhdWx0cyA9IG9wYXJnICYgMHhmZjsKLSAgICAgICAgICAgIGludCBrd2RlZmF1bHRzID0gKG9wYXJnPj44KSAmIDB4ZmY7Ci0gICAgICAgICAgICBpbnQgbnVtX2Fubm90YXRpb25zID0gKG9wYXJnID4+IDE2KSAmIDB4N2ZmZjsKKyAgICAgICAgVEFSR0VUKENBTExfRlVOQ1RJT05fRVgpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpmdW5jLCAqY2FsbGFyZ3MsICprd2FyZ3MgPSBOVUxMLCAqcmVzdWx0OworICAgICAgICAgICAgUENBTEwoUENBTExfQUxMKTsKKyAgICAgICAgICAgIGlmIChvcGFyZyAmIDB4MDEpIHsKKyAgICAgICAgICAgICAgICBrd2FyZ3MgPSBQT1AoKTsKKyAgICAgICAgICAgICAgICBpZiAoIVB5RGljdF9DaGVja0V4YWN0KGt3YXJncykpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmQgPSBQeURpY3RfTmV3KCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChkID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICBpZiAoUHlEaWN0X1VwZGF0ZShkLCBrd2FyZ3MpICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIFB5RGljdF9VcGRhdGUgcmFpc2VzIGF0dHJpYnV0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICogZXJyb3IgKHBlcmNvbGF0ZWQgZnJvbSBhbiBhdHRlbXB0CisgICAgICAgICAgICAgICAgICAgICAgICAgKiB0byBnZXQgJ2tleXMnIGF0dHJpYnV0ZSkgaW5zdGVhZCBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICogYSB0eXBlIGVycm9yIGlmIGl0cyBzZWNvbmQgYXJndW1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAqIGlzIG5vdCBhIG1hcHBpbmcuCisgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmMgPSBTRUNPTkQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzJS4yMDBzIGFyZ3VtZW50IGFmdGVyICoqICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm11c3QgYmUgYSBtYXBwaW5nLCBub3QgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNOYW1lKGZ1bmMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY0Rlc2MoZnVuYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3YXJncy0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoa3dhcmdzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGt3YXJncyk7CisgICAgICAgICAgICAgICAgICAgIGt3YXJncyA9IGQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGFzc2VydChQeURpY3RfQ2hlY2tFeGFjdChrd2FyZ3MpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhbGxhcmdzID0gUE9QKCk7CisgICAgICAgICAgICBmdW5jID0gVE9QKCk7CisgICAgICAgICAgICBpZiAoIVB5VHVwbGVfQ2hlY2tFeGFjdChjYWxsYXJncykpIHsKKyAgICAgICAgICAgICAgICBpZiAoUHlfVFlQRShjYWxsYXJncyktPnRwX2l0ZXIgPT0gTlVMTCAmJgorICAgICAgICAgICAgICAgICAgICAgICAgIVB5U2VxdWVuY2VfQ2hlY2soY2FsbGFyZ3MpKSB7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzJS4yMDBzIGFyZ3VtZW50IGFmdGVyICogIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm11c3QgYmUgYW4gaXRlcmFibGUsIG5vdCAlLjIwMHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNOYW1lKGZ1bmMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNEZXNjKGZ1bmMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGFyZ3MtPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoY2FsbGFyZ3MpOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBQeV9TRVRSRUYoY2FsbGFyZ3MsIFB5U2VxdWVuY2VfVHVwbGUoY2FsbGFyZ3MpKTsKKyAgICAgICAgICAgICAgICBpZiAoY2FsbGFyZ3MgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGFzc2VydChQeVR1cGxlX0NoZWNrRXhhY3QoY2FsbGFyZ3MpKTsKIAotICAgICAgICAgICAgUHlPYmplY3QgKnF1YWxuYW1lID0gUE9QKCk7IC8qIHF1YWxuYW1lICovCi0gICAgICAgICAgICBQeU9iamVjdCAqY29kZSA9IFBPUCgpOyAvKiBjb2RlIG9iamVjdCAqLwotICAgICAgICAgICAgUHlPYmplY3QgKmZ1bmMgPSBQeUZ1bmN0aW9uX05ld1dpdGhRdWFsTmFtZShjb2RlLCBmLT5mX2dsb2JhbHMsIHF1YWxuYW1lKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihjb2RlKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihxdWFsbmFtZSk7CisgICAgICAgICAgICByZXN1bHQgPSBkb19jYWxsX2NvcmUoZnVuYywgY2FsbGFyZ3MsIGt3YXJncyk7CisgICAgICAgICAgICBQeV9ERUNSRUYoZnVuYyk7CisgICAgICAgICAgICBQeV9ERUNSRUYoY2FsbGFyZ3MpOworICAgICAgICAgICAgUHlfWERFQ1JFRihrd2FyZ3MpOwogCi0gICAgICAgICAgICBpZiAoZnVuYyA9PSBOVUxMKQorICAgICAgICAgICAgU0VUX1RPUChyZXN1bHQpOworICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKG9wY29kZSA9PSBNQUtFX0NMT1NVUkUpIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqY2xvc3VyZSA9IFBPUCgpOwotICAgICAgICAgICAgICAgIGlmIChQeUZ1bmN0aW9uX1NldENsb3N1cmUoZnVuYywgY2xvc3VyZSkgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICAvKiBDYW4ndCBoYXBwZW4gdW5sZXNzIGJ5dGVjb2RlIGlzIGNvcnJ1cHQuICovCi0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGNsb3N1cmUpOwotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoY2xvc3VyZSk7CisgICAgICAgIFRBUkdFVChNQUtFX0ZVTkNUSU9OKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqcXVhbG5hbWUgPSBQT1AoKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpjb2Rlb2JqID0gUE9QKCk7CisgICAgICAgICAgICBQeUZ1bmN0aW9uT2JqZWN0ICpmdW5jID0gKFB5RnVuY3Rpb25PYmplY3QgKikKKyAgICAgICAgICAgICAgICBQeUZ1bmN0aW9uX05ld1dpdGhRdWFsTmFtZShjb2Rlb2JqLCBmLT5mX2dsb2JhbHMsIHF1YWxuYW1lKTsKKworICAgICAgICAgICAgUHlfREVDUkVGKGNvZGVvYmopOworICAgICAgICAgICAgUHlfREVDUkVGKHF1YWxuYW1lKTsKKyAgICAgICAgICAgIGlmIChmdW5jID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAobnVtX2Fubm90YXRpb25zID4gMCkgewotICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbmFtZV9peDsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqbmFtZXMgPSBQT1AoKTsgLyogbmFtZXMgb2YgYXJncyB3aXRoIGFubm90YXRpb25zICovCi0gICAgICAgICAgICAgICAgUHlPYmplY3QgKmFubnMgPSBQeURpY3RfTmV3KCk7Ci0gICAgICAgICAgICAgICAgaWYgKGFubnMgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZnVuYyk7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuYW1lcyk7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG5hbWVfaXggPSBQeVR1cGxlX1NpemUobmFtZXMpOwotICAgICAgICAgICAgICAgIGFzc2VydChudW1fYW5ub3RhdGlvbnMgPT0gbmFtZV9peCsxKTsKLSAgICAgICAgICAgICAgICB3aGlsZSAobmFtZV9peCA+IDApIHsKLSAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm5hbWUsICp2YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgaW50IGVycjsKLSAgICAgICAgICAgICAgICAgICAgLS1uYW1lX2l4OwotICAgICAgICAgICAgICAgICAgICBuYW1lID0gUHlUdXBsZV9HRVRfSVRFTShuYW1lcywgbmFtZV9peCk7Ci0gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gUE9QKCk7Ci0gICAgICAgICAgICAgICAgICAgIGVyciA9IFB5RGljdF9TZXRJdGVtKGFubnMsIG5hbWUsIHZhbHVlKTsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGVyciAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYW5ucyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZnVuYyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmFtZXMpOwotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmFtZXMpOwotCi0gICAgICAgICAgICAgICAgaWYgKFB5RnVuY3Rpb25fU2V0QW5ub3RhdGlvbnMoZnVuYywgYW5ucykgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICAvKiBDYW4ndCBoYXBwZW4gdW5sZXNzCi0gICAgICAgICAgICAgICAgICAgICAgIFB5RnVuY3Rpb25fU2V0QW5ub3RhdGlvbnMgY2hhbmdlcy4gKi8KLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGFubnMpOwotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZnVuYyk7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhbm5zKTsKKyAgICAgICAgICAgIGlmIChvcGFyZyAmIDB4MDgpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQoUHlUdXBsZV9DaGVja0V4YWN0KFRPUCgpKSk7CisgICAgICAgICAgICAgICAgZnVuYyAtPmZ1bmNfY2xvc3VyZSA9IFBPUCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG9wYXJnICYgMHgwNCkgeworICAgICAgICAgICAgICAgIGFzc2VydChQeURpY3RfQ2hlY2tFeGFjdChUT1AoKSkpOworICAgICAgICAgICAgICAgIGZ1bmMtPmZ1bmNfYW5ub3RhdGlvbnMgPSBQT1AoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChvcGFyZyAmIDB4MDIpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQoUHlEaWN0X0NoZWNrRXhhY3QoVE9QKCkpKTsKKyAgICAgICAgICAgICAgICBmdW5jLT5mdW5jX2t3ZGVmYXVsdHMgPSBQT1AoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChvcGFyZyAmIDB4MDEpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQoUHlUdXBsZV9DaGVja0V4YWN0KFRPUCgpKSk7CisgICAgICAgICAgICAgICAgZnVuYy0+ZnVuY19kZWZhdWx0cyA9IFBPUCgpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAvKiBYWFggTWF5YmUgdGhpcyBzaG91bGQgYmUgYSBzZXBhcmF0ZSBvcGNvZGU/ICovCi0gICAgICAgICAgICBpZiAoa3dkZWZhdWx0cyA+IDApIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqZGVmcyA9IFB5RGljdF9OZXcoKTsKLSAgICAgICAgICAgICAgICBpZiAoZGVmcyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgd2hpbGUgKC0ta3dkZWZhdWx0cyA+PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp2ID0gUE9QKCk7IC8qIGRlZmF1bHQgdmFsdWUgKi8KLSAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmtleSA9IFBPUCgpOyAvKiBrdyBvbmx5IGFyZyBuYW1lICovCi0gICAgICAgICAgICAgICAgICAgIGludCBlcnIgPSBQeURpY3RfU2V0SXRlbShkZWZzLCBrZXksIHYpOwotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwotICAgICAgICAgICAgICAgICAgICBpZiAoZXJyICE9IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkZWZzKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5RnVuY3Rpb25fU2V0S3dEZWZhdWx0cyhmdW5jLCBkZWZzKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qIENhbid0IGhhcHBlbiB1bmxlc3MKLSAgICAgICAgICAgICAgICAgICAgICAgUHlGdW5jdGlvbl9TZXRLd0RlZmF1bHRzIGNoYW5nZXMuICovCi0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGRlZnMpOwotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZGVmcyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAocG9zZGVmYXVsdHMgPiAwKSB7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3QgKmRlZnMgPSBQeVR1cGxlX05ldyhwb3NkZWZhdWx0cyk7Ci0gICAgICAgICAgICAgICAgaWYgKGRlZnMgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZnVuYyk7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHdoaWxlICgtLXBvc2RlZmF1bHRzID49IDApCi0gICAgICAgICAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oZGVmcywgcG9zZGVmYXVsdHMsIFBPUCgpKTsKLSAgICAgICAgICAgICAgICBpZiAoUHlGdW5jdGlvbl9TZXREZWZhdWx0cyhmdW5jLCBkZWZzKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qIENhbid0IGhhcHBlbiB1bmxlc3MKLSAgICAgICAgICAgICAgICAgICAgICAgUHlGdW5jdGlvbl9TZXREZWZhdWx0cyBjaGFuZ2VzLiAqLwotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZGVmcyk7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGRlZnMpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUFVTSChmdW5jKTsKKyAgICAgICAgICAgIFBVU0goKFB5T2JqZWN0ICopZnVuYyk7CiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKQEAgLTM0MzQsOSArMzQxNyw2OCBAQAogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCisgICAgICAgIFRBUkdFVChGT1JNQVRfVkFMVUUpIHsKKyAgICAgICAgICAgIC8qIEhhbmRsZXMgZi1zdHJpbmcgdmFsdWUgZm9ybWF0dGluZy4gKi8KKyAgICAgICAgICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgICAgICAgICBQeU9iamVjdCAqZm10X3NwZWM7CisgICAgICAgICAgICBQeU9iamVjdCAqdmFsdWU7CisgICAgICAgICAgICBQeU9iamVjdCAqKCpjb252X2ZuKShQeU9iamVjdCAqKTsKKyAgICAgICAgICAgIGludCB3aGljaF9jb252ZXJzaW9uID0gb3BhcmcgJiBGVkNfTUFTSzsKKyAgICAgICAgICAgIGludCBoYXZlX2ZtdF9zcGVjID0gKG9wYXJnICYgRlZTX01BU0spID09IEZWU19IQVZFX1NQRUM7CisKKyAgICAgICAgICAgIGZtdF9zcGVjID0gaGF2ZV9mbXRfc3BlYyA/IFBPUCgpIDogTlVMTDsKKyAgICAgICAgICAgIHZhbHVlID0gUE9QKCk7CisKKyAgICAgICAgICAgIC8qIFNlZSBpZiBhbnkgY29udmVyc2lvbiBpcyBzcGVjaWZpZWQuICovCisgICAgICAgICAgICBzd2l0Y2ggKHdoaWNoX2NvbnZlcnNpb24pIHsKKyAgICAgICAgICAgIGNhc2UgRlZDX1NUUjogICBjb252X2ZuID0gUHlPYmplY3RfU3RyOyAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBGVkNfUkVQUjogIGNvbnZfZm4gPSBQeU9iamVjdF9SZXByOyAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZWQ19BU0NJSTogY29udl9mbiA9IFB5T2JqZWN0X0FTQ0lJOyBicmVhazsKKworICAgICAgICAgICAgLyogTXVzdCBiZSAwIChtZWFuaW5nIG5vIGNvbnZlcnNpb24pLCBzaW5jZSBvbmx5IGZvdXIKKyAgICAgICAgICAgICAgIHZhbHVlcyBhcmUgYWxsb3dlZCBieSAob3BhcmcgJiBGVkNfTUFTSykuICovCisgICAgICAgICAgICBkZWZhdWx0OiAgICAgICAgY29udl9mbiA9IE5VTEw7ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogSWYgdGhlcmUncyBhIGNvbnZlcnNpb24gZnVuY3Rpb24sIGNhbGwgaXQgYW5kIHJlcGxhY2UKKyAgICAgICAgICAgICAgIHZhbHVlIHdpdGggdGhhdCByZXN1bHQuIE90aGVyd2lzZSwganVzdCB1c2UgdmFsdWUsCisgICAgICAgICAgICAgICB3aXRob3V0IGNvbnZlcnNpb24uICovCisgICAgICAgICAgICBpZiAoY29udl9mbiAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gY29udl9mbih2YWx1ZSk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRihmbXRfc3BlYyk7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHZhbHVlID0gcmVzdWx0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBJZiB2YWx1ZSBpcyBhIHVuaWNvZGUgb2JqZWN0LCBhbmQgdGhlcmUncyBubyBmbXRfc3BlYywKKyAgICAgICAgICAgICAgIHRoZW4gd2Uga25vdyB0aGUgcmVzdWx0IG9mIGZvcm1hdCh2YWx1ZSkgaXMgdmFsdWUKKyAgICAgICAgICAgICAgIGl0c2VsZi4gSW4gdGhhdCBjYXNlLCBza2lwIGNhbGxpbmcgZm9ybWF0KCkuIEkgcGxhbiB0bworICAgICAgICAgICAgICAgbW92ZSB0aGlzIG9wdGltaXphdGlvbiBpbiB0byBQeU9iamVjdF9Gb3JtYXQoKQorICAgICAgICAgICAgICAgaXRzZWxmLiAqLworICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KHZhbHVlKSAmJiBmbXRfc3BlYyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgLyogRG8gbm90aGluZywganVzdCB0cmFuc2ZlciBvd25lcnNoaXAgdG8gcmVzdWx0LiAqLworICAgICAgICAgICAgICAgIHJlc3VsdCA9IHZhbHVlOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvKiBBY3R1YWxseSBjYWxsIGZvcm1hdCgpLiAqLworICAgICAgICAgICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0Zvcm1hdCh2YWx1ZSwgZm10X3NwZWMpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgICAgICAgICAgUHlfWERFQ1JFRihmbXRfc3BlYyk7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBQVVNIKHJlc3VsdCk7CisgICAgICAgICAgICBESVNQQVRDSCgpOworICAgICAgICB9CisKICAgICAgICAgVEFSR0VUKEVYVEVOREVEX0FSRykgewotICAgICAgICAgICAgb3Bjb2RlID0gTkVYVE9QKCk7Ci0gICAgICAgICAgICBvcGFyZyA9IG9wYXJnPDwxNiB8IE5FWFRBUkcoKTsKKyAgICAgICAgICAgIGludCBvbGRvcGFyZyA9IG9wYXJnOworICAgICAgICAgICAgTkVYVE9QQVJHKCk7CisgICAgICAgICAgICBvcGFyZyB8PSBvbGRvcGFyZyA8PCA4OwogICAgICAgICAgICAgZ290byBkaXNwYXRjaF9vcGNvZGU7CiAgICAgICAgIH0KIApAQCAtMzQ2Myw3ICszNTA1LDYgQEAKICAgICAgICAgYXNzZXJ0KDApOwogCiBlcnJvcjoKLSAgICAgICAgUkVBRF9USU1FU1RBTVAoaW5zdDEpOwogCiAgICAgICAgIGFzc2VydCh3aHkgPT0gV0hZX05PVCk7CiAgICAgICAgIHdoeSA9IFdIWV9FWENFUFRJT047CkBAIC0zNTY3LDcgKzM2MDgsNiBAQAogCiAgICAgICAgIGlmICh3aHkgIT0gV0hZX05PVCkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBSRUFEX1RJTUVTVEFNUChsb29wMSk7CiAKICAgICAgICAgYXNzZXJ0KCFQeUVycl9PY2N1cnJlZCgpKTsKIApAQCAtMzU4Niw3ICszNjI2LDcgQEAKICAgICBhc3NlcnQoKHJldHZhbCAhPSBOVUxMKSBeIChQeUVycl9PY2N1cnJlZCgpICE9IE5VTEwpKTsKIAogZmFzdF95aWVsZDoKLSAgICBpZiAoY28tPmNvX2ZsYWdzICYgKENPX0dFTkVSQVRPUiB8IENPX0NPUk9VVElORSkpIHsKKyAgICBpZiAoY28tPmNvX2ZsYWdzICYgKENPX0dFTkVSQVRPUiB8IENPX0NPUk9VVElORSB8IENPX0FTWU5DX0dFTkVSQVRPUikpIHsKIAogICAgICAgICAvKiBUaGUgcHVycG9zZSBvZiB0aGlzIGJsb2NrIGlzIHRvIHB1dCBhc2lkZSB0aGUgZ2VuZXJhdG9yJ3MgZXhjZXB0aW9uCiAgICAgICAgICAgIHN0YXRlIGFuZCByZXN0b3JlIHRoYXQgb2YgdGhlIGNhbGxpbmcgZnJhbWUuIElmIHRoZSBjdXJyZW50CkBAIC0zNTk3LDkgKzM2MzcsMTEgQEAKICAgICAgICAgICAgc3RhdGUgY2FtZSBpbnRvIGV4aXN0ZW5jZSBpbiB0aGlzIGZyYW1lLiAoQW4gdW5jYXVnaHQgZXhjZXB0aW9uCiAgICAgICAgICAgIHdvdWxkIGhhdmUgd2h5ID09IFdIWV9FWENFUFRJT04sIGFuZCB3ZSB3b3VsZG4ndCBiZSBoZXJlKS4gKi8KICAgICAgICAgaW50IGk7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBmLT5mX2libG9jazsgaSsrKQotICAgICAgICAgICAgaWYgKGYtPmZfYmxvY2tzdGFja1tpXS5iX3R5cGUgPT0gRVhDRVBUX0hBTkRMRVIpCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBmLT5mX2libG9jazsgaSsrKSB7CisgICAgICAgICAgICBpZiAoZi0+Zl9ibG9ja3N0YWNrW2ldLmJfdHlwZSA9PSBFWENFUFRfSEFORExFUikgewogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAgIGlmIChpID09IGYtPmZfaWJsb2NrKQogICAgICAgICAgICAgLyogV2UgZGlkIG5vdCBjcmVhdGUgdGhpcyBleGNlcHRpb24uICovCiAgICAgICAgICAgICByZXN0b3JlX2FuZF9jbGVhcl9leGNfc3RhdGUodHN0YXRlLCBmKTsKQEAgLTM2NDAsNiArMzY4Miw4IEBACiAKICAgICAvKiBwb3AgZnJhbWUgKi8KIGV4aXRfZXZhbF9mcmFtZToKKyAgICBpZiAoUHlEVHJhY2VfRlVOQ1RJT05fUkVUVVJOX0VOQUJMRUQoKSkKKyAgICAgICAgZHRyYWNlX2Z1bmN0aW9uX3JldHVybihmKTsKICAgICBQeV9MZWF2ZVJlY3Vyc2l2ZUNhbGwoKTsKICAgICBmLT5mX2V4ZWN1dGluZyA9IDA7CiAgICAgdHN0YXRlLT5mcmFtZSA9IGYtPmZfYmFjazsKQEAgLTM3MTAsMTIgKzM3NTQsMTIgQEAKIH0KIAogc3RhdGljIHZvaWQKLW1pc3NpbmdfYXJndW1lbnRzKFB5Q29kZU9iamVjdCAqY28sIGludCBtaXNzaW5nLCBpbnQgZGVmY291bnQsCittaXNzaW5nX2FyZ3VtZW50cyhQeUNvZGVPYmplY3QgKmNvLCBQeV9zc2l6ZV90IG1pc3NpbmcsIFB5X3NzaXplX3QgZGVmY291bnQsCiAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKmZhc3Rsb2NhbHMpCiB7Ci0gICAgaW50IGksIGogPSAwOwotICAgIGludCBzdGFydCwgZW5kOwotICAgIGludCBwb3NpdGlvbmFsID0gZGVmY291bnQgIT0gLTE7CisgICAgUHlfc3NpemVfdCBpLCBqID0gMDsKKyAgICBQeV9zc2l6ZV90IHN0YXJ0LCBlbmQ7CisgICAgaW50IHBvc2l0aW9uYWwgPSAoZGVmY291bnQgIT0gLTEpOwogICAgIGNvbnN0IGNoYXIgKmtpbmQgPSBwb3NpdGlvbmFsID8gInBvc2l0aW9uYWwiIDogImtleXdvcmQtb25seSI7CiAgICAgUHlPYmplY3QgKm1pc3NpbmdfbmFtZXM7CiAKQEAgLTM3NDgsMzMgKzM3OTIsMzkgQEAKIH0KIAogc3RhdGljIHZvaWQKLXRvb19tYW55X3Bvc2l0aW9uYWwoUHlDb2RlT2JqZWN0ICpjbywgaW50IGdpdmVuLCBpbnQgZGVmY291bnQsIFB5T2JqZWN0ICoqZmFzdGxvY2FscykKK3Rvb19tYW55X3Bvc2l0aW9uYWwoUHlDb2RlT2JqZWN0ICpjbywgUHlfc3NpemVfdCBnaXZlbiwgUHlfc3NpemVfdCBkZWZjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipmYXN0bG9jYWxzKQogewogICAgIGludCBwbHVyYWw7Ci0gICAgaW50IGt3b25seV9naXZlbiA9IDA7Ci0gICAgaW50IGk7CisgICAgUHlfc3NpemVfdCBrd29ubHlfZ2l2ZW4gPSAwOworICAgIFB5X3NzaXplX3QgaTsKICAgICBQeU9iamVjdCAqc2lnLCAqa3dvbmx5X3NpZzsKKyAgICBQeV9zc2l6ZV90IGNvX2FyZ2NvdW50ID0gY28tPmNvX2FyZ2NvdW50OwogCiAgICAgYXNzZXJ0KChjby0+Y29fZmxhZ3MgJiBDT19WQVJBUkdTKSA9PSAwKTsKICAgICAvKiBDb3VudCBtaXNzaW5nIGtleXdvcmQtb25seSBhcmdzLiAqLwotICAgIGZvciAoaSA9IGNvLT5jb19hcmdjb3VudDsgaSA8IGNvLT5jb19hcmdjb3VudCArIGNvLT5jb19rd29ubHlhcmdjb3VudDsgaSsrKQotICAgICAgICBpZiAoR0VUTE9DQUwoaSkgIT0gTlVMTCkKKyAgICBmb3IgKGkgPSBjb19hcmdjb3VudDsgaSA8IGNvX2FyZ2NvdW50ICsgY28tPmNvX2t3b25seWFyZ2NvdW50OyBpKyspIHsKKyAgICAgICAgaWYgKEdFVExPQ0FMKGkpICE9IE5VTEwpIHsKICAgICAgICAgICAgIGt3b25seV9naXZlbisrOworICAgICAgICB9CisgICAgfQogICAgIGlmIChkZWZjb3VudCkgewotICAgICAgICBpbnQgYXRsZWFzdCA9IGNvLT5jb19hcmdjb3VudCAtIGRlZmNvdW50OworICAgICAgICBQeV9zc2l6ZV90IGF0bGVhc3QgPSBjb19hcmdjb3VudCAtIGRlZmNvdW50OwogICAgICAgICBwbHVyYWwgPSAxOwotICAgICAgICBzaWcgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiZnJvbSAlZCB0byAlZCIsIGF0bGVhc3QsIGNvLT5jb19hcmdjb3VudCk7CisgICAgICAgIHNpZyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCJmcm9tICV6ZCB0byAlemQiLCBhdGxlYXN0LCBjb19hcmdjb3VudCk7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBwbHVyYWwgPSBjby0+Y29fYXJnY291bnQgIT0gMTsKLSAgICAgICAgc2lnID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVkIiwgY28tPmNvX2FyZ2NvdW50KTsKKyAgICAgICAgcGx1cmFsID0gKGNvX2FyZ2NvdW50ICE9IDEpOworICAgICAgICBzaWcgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJXpkIiwgY29fYXJnY291bnQpOwogICAgIH0KICAgICBpZiAoc2lnID09IE5VTEwpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoa3dvbmx5X2dpdmVuKSB7Ci0gICAgICAgIGNvbnN0IGNoYXIgKmZvcm1hdCA9ICIgcG9zaXRpb25hbCBhcmd1bWVudCVzIChhbmQgJWQga2V5d29yZC1vbmx5IGFyZ3VtZW50JXMpIjsKLSAgICAgICAga3dvbmx5X3NpZyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KGZvcm1hdCwgZ2l2ZW4gIT0gMSA/ICJzIiA6ICIiLCBrd29ubHlfZ2l2ZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dvbmx5X2dpdmVuICE9IDEgPyAicyIgOiAiIik7CisgICAgICAgIGNvbnN0IGNoYXIgKmZvcm1hdCA9ICIgcG9zaXRpb25hbCBhcmd1bWVudCVzIChhbmQgJXpkIGtleXdvcmQtb25seSBhcmd1bWVudCVzKSI7CisgICAgICAgIGt3b25seV9zaWcgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdChmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaXZlbiAhPSAxID8gInMiIDogIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd29ubHlfZ2l2ZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd29ubHlfZ2l2ZW4gIT0gMSA/ICJzIiA6ICIiKTsKICAgICAgICAgaWYgKGt3b25seV9zaWcgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlfREVDUkVGKHNpZyk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0zNzg2LDcgKzM4MzYsNyBAQAogICAgICAgICBhc3NlcnQoa3dvbmx5X3NpZyAhPSBOVUxMKTsKICAgICB9CiAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgIiVVKCkgdGFrZXMgJVUgcG9zaXRpb25hbCBhcmd1bWVudCVzIGJ1dCAlZCVVICVzIGdpdmVuIiwKKyAgICAgICAgICAgICAgICAgIiVVKCkgdGFrZXMgJVUgcG9zaXRpb25hbCBhcmd1bWVudCVzIGJ1dCAlemQlVSAlcyBnaXZlbiIsCiAgICAgICAgICAgICAgICAgIGNvLT5jb19uYW1lLAogICAgICAgICAgICAgICAgICBzaWcsCiAgICAgICAgICAgICAgICAgIHBsdXJhbCA/ICJzIiA6ICIiLApAQCAtMzgwMywyMCArMzg1MywyMiBAQAogCiBzdGF0aWMgUHlPYmplY3QgKgogX1B5RXZhbF9FdmFsQ29kZVdpdGhOYW1lKFB5T2JqZWN0ICpfY28sIFB5T2JqZWN0ICpnbG9iYWxzLCBQeU9iamVjdCAqbG9jYWxzLAotICAgICAgICAgICBQeU9iamVjdCAqKmFyZ3MsIGludCBhcmdjb3VudCwgUHlPYmplY3QgKiprd3MsIGludCBrd2NvdW50LAotICAgICAgICAgICBQeU9iamVjdCAqKmRlZnMsIGludCBkZWZjb3VudCwgUHlPYmplY3QgKmt3ZGVmcywgUHlPYmplY3QgKmNsb3N1cmUsCisgICAgICAgICAgIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBhcmdjb3VudCwKKyAgICAgICAgICAgUHlPYmplY3QgKiprd25hbWVzLCBQeU9iamVjdCAqKmt3YXJncywKKyAgICAgICAgICAgUHlfc3NpemVfdCBrd2NvdW50LCBpbnQga3dzdGVwLAorICAgICAgICAgICBQeU9iamVjdCAqKmRlZnMsIFB5X3NzaXplX3QgZGVmY291bnQsCisgICAgICAgICAgIFB5T2JqZWN0ICprd2RlZnMsIFB5T2JqZWN0ICpjbG9zdXJlLAogICAgICAgICAgICBQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnF1YWxuYW1lKQogewogICAgIFB5Q29kZU9iamVjdCogY28gPSAoUHlDb2RlT2JqZWN0KilfY287CiAgICAgUHlGcmFtZU9iamVjdCAqZjsKICAgICBQeU9iamVjdCAqcmV0dmFsID0gTlVMTDsKICAgICBQeU9iamVjdCAqKmZhc3Rsb2NhbHMsICoqZnJlZXZhcnM7Ci0gICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CiAgICAgUHlPYmplY3QgKngsICp1OwotICAgIGludCB0b3RhbF9hcmdzID0gY28tPmNvX2FyZ2NvdW50ICsgY28tPmNvX2t3b25seWFyZ2NvdW50OwotICAgIGludCBpOwotICAgIGludCBuID0gYXJnY291bnQ7Ci0gICAgUHlPYmplY3QgKmt3ZGljdCA9IE5VTEw7CisgICAgY29uc3QgUHlfc3NpemVfdCB0b3RhbF9hcmdzID0gY28tPmNvX2FyZ2NvdW50ICsgY28tPmNvX2t3b25seWFyZ2NvdW50OworICAgIFB5X3NzaXplX3QgaSwgbjsKKyAgICBQeU9iamVjdCAqa3dkaWN0OwogCiAgICAgaWYgKGdsb2JhbHMgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCkBAIC0zODI0LDM2ICszODc2LDUwIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAorICAgIC8qIENyZWF0ZSB0aGUgZnJhbWUgKi8KKyAgICB0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOwogICAgIGFzc2VydCh0c3RhdGUgIT0gTlVMTCk7Ci0gICAgYXNzZXJ0KGdsb2JhbHMgIT0gTlVMTCk7CiAgICAgZiA9IFB5RnJhbWVfTmV3KHRzdGF0ZSwgY28sIGdsb2JhbHMsIGxvY2Fscyk7Ci0gICAgaWYgKGYgPT0gTlVMTCkKKyAgICBpZiAoZiA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwotCisgICAgfQogICAgIGZhc3Rsb2NhbHMgPSBmLT5mX2xvY2Fsc3BsdXM7CiAgICAgZnJlZXZhcnMgPSBmLT5mX2xvY2Fsc3BsdXMgKyBjby0+Y29fbmxvY2FsczsKIAotICAgIC8qIFBhcnNlIGFyZ3VtZW50cy4gKi8KKyAgICAvKiBDcmVhdGUgYSBkaWN0aW9uYXJ5IGZvciBrZXl3b3JkIHBhcmFtZXRlcnMgKCoqa3dhZ3MpICovCiAgICAgaWYgKGNvLT5jb19mbGFncyAmIENPX1ZBUktFWVdPUkRTKSB7CiAgICAgICAgIGt3ZGljdCA9IFB5RGljdF9OZXcoKTsKICAgICAgICAgaWYgKGt3ZGljdCA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICBpID0gdG90YWxfYXJnczsKLSAgICAgICAgaWYgKGNvLT5jb19mbGFncyAmIENPX1ZBUkFSR1MpCisgICAgICAgIGlmIChjby0+Y29fZmxhZ3MgJiBDT19WQVJBUkdTKSB7CiAgICAgICAgICAgICBpKys7CisgICAgICAgIH0KICAgICAgICAgU0VUTE9DQUwoaSwga3dkaWN0KTsKICAgICB9Ci0gICAgaWYgKGFyZ2NvdW50ID4gY28tPmNvX2FyZ2NvdW50KQorICAgIGVsc2UgeworICAgICAgICBrd2RpY3QgPSBOVUxMOworICAgIH0KKworICAgIC8qIENvcHkgcG9zaXRpb25hbCBhcmd1bWVudHMgaW50byBsb2NhbCB2YXJpYWJsZXMgKi8KKyAgICBpZiAoYXJnY291bnQgPiBjby0+Y29fYXJnY291bnQpIHsKICAgICAgICAgbiA9IGNvLT5jb19hcmdjb3VudDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIG4gPSBhcmdjb3VudDsKKyAgICB9CiAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgICB4ID0gYXJnc1tpXTsKICAgICAgICAgUHlfSU5DUkVGKHgpOwogICAgICAgICBTRVRMT0NBTChpLCB4KTsKICAgICB9CisKKyAgICAvKiBQYWNrIG90aGVyIHBvc2l0aW9uYWwgYXJndW1lbnRzIGludG8gdGhlICphcmdzIGFyZ3VtZW50ICovCiAgICAgaWYgKGNvLT5jb19mbGFncyAmIENPX1ZBUkFSR1MpIHsKICAgICAgICAgdSA9IFB5VHVwbGVfTmV3KGFyZ2NvdW50IC0gbik7Ci0gICAgICAgIGlmICh1ID09IE5VTEwpCisgICAgICAgIGlmICh1ID09IE5VTEwpIHsKICAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgfQogICAgICAgICBTRVRMT0NBTCh0b3RhbF9hcmdzLCB1KTsKICAgICAgICAgZm9yIChpID0gbjsgaSA8IGFyZ2NvdW50OyBpKyspIHsKICAgICAgICAgICAgIHggPSBhcmdzW2ldOwpAQCAtMzg2MSw2OSArMzkyNyw4MiBAQAogICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTSh1LCBpLW4sIHgpOwogICAgICAgICB9CiAgICAgfQotICAgIGZvciAoaSA9IDA7IGkgPCBrd2NvdW50OyBpKyspIHsKKworICAgIC8qIEhhbmRsZSBrZXl3b3JkIGFyZ3VtZW50cyBwYXNzZWQgYXMgdHdvIHN0cmlkZWQgYXJyYXlzICovCisgICAga3djb3VudCAqPSBrd3N0ZXA7CisgICAgZm9yIChpID0gMDsgaSA8IGt3Y291bnQ7IGkgKz0ga3dzdGVwKSB7CiAgICAgICAgIFB5T2JqZWN0ICoqY29fdmFybmFtZXM7Ci0gICAgICAgIFB5T2JqZWN0ICprZXl3b3JkID0ga3dzWzIqaV07Ci0gICAgICAgIFB5T2JqZWN0ICp2YWx1ZSA9IGt3c1syKmkgKyAxXTsKLSAgICAgICAgaW50IGo7CisgICAgICAgIFB5T2JqZWN0ICprZXl3b3JkID0ga3duYW1lc1tpXTsKKyAgICAgICAgUHlPYmplY3QgKnZhbHVlID0ga3dhcmdzW2ldOworICAgICAgICBQeV9zc2l6ZV90IGo7CisKICAgICAgICAgaWYgKGtleXdvcmQgPT0gTlVMTCB8fCAhUHlVbmljb2RlX0NoZWNrKGtleXdvcmQpKSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICIlVSgpIGtleXdvcmRzIG11c3QgYmUgc3RyaW5ncyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY28tPmNvX25hbWUpOwogICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICB9CisKICAgICAgICAgLyogU3BlZWQgaGFjazogZG8gcmF3IHBvaW50ZXIgY29tcGFyZXMuIEFzIG5hbWVzIGFyZQogICAgICAgICAgICBub3JtYWxseSBpbnRlcm5lZCB0aGlzIHNob3VsZCBhbG1vc3QgYWx3YXlzIGhpdC4gKi8KICAgICAgICAgY29fdmFybmFtZXMgPSAoKFB5VHVwbGVPYmplY3QgKikoY28tPmNvX3Zhcm5hbWVzKSktPm9iX2l0ZW07CiAgICAgICAgIGZvciAoaiA9IDA7IGogPCB0b3RhbF9hcmdzOyBqKyspIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpubSA9IGNvX3Zhcm5hbWVzW2pdOwotICAgICAgICAgICAgaWYgKG5tID09IGtleXdvcmQpCisgICAgICAgICAgICBQeU9iamVjdCAqbmFtZSA9IGNvX3Zhcm5hbWVzW2pdOworICAgICAgICAgICAgaWYgKG5hbWUgPT0ga2V5d29yZCkgewogICAgICAgICAgICAgICAgIGdvdG8ga3dfZm91bmQ7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KKwogICAgICAgICAvKiBTbG93IGZhbGxiYWNrLCBqdXN0IGluIGNhc2UgKi8KICAgICAgICAgZm9yIChqID0gMDsgaiA8IHRvdGFsX2FyZ3M7IGorKykgewotICAgICAgICAgICAgUHlPYmplY3QgKm5tID0gY29fdmFybmFtZXNbal07Ci0gICAgICAgICAgICBpbnQgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKAotICAgICAgICAgICAgICAgIGtleXdvcmQsIG5tLCBQeV9FUSk7Ci0gICAgICAgICAgICBpZiAoY21wID4gMCkKKyAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lID0gY29fdmFybmFtZXNbal07CisgICAgICAgICAgICBpbnQgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKCBrZXl3b3JkLCBuYW1lLCBQeV9FUSk7CisgICAgICAgICAgICBpZiAoY21wID4gMCkgewogICAgICAgICAgICAgICAgIGdvdG8ga3dfZm91bmQ7Ci0gICAgICAgICAgICBlbHNlIGlmIChjbXAgPCAwKQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoY21wIDwgMCkgewogICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQorCiAgICAgICAgIGlmIChqID49IHRvdGFsX2FyZ3MgJiYga3dkaWN0ID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIiVVKCkgZ290IGFuIHVuZXhwZWN0ZWQgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJrZXl3b3JkIGFyZ3VtZW50ICclUyciLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvLT5jb19uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmQpOworICAgICAgICAgICAgICAgICAgICAgICAgICIlVSgpIGdvdCBhbiB1bmV4cGVjdGVkIGtleXdvcmQgYXJndW1lbnQgJyVTJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgY28tPmNvX25hbWUsIGtleXdvcmQpOwogICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICB9CisKICAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtKGt3ZGljdCwga2V5d29yZCwgdmFsdWUpID09IC0xKSB7CiAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIH0KICAgICAgICAgY29udGludWU7CisKICAgICAgIGt3X2ZvdW5kOgogICAgICAgICBpZiAoR0VUTE9DQUwoaikgIT0gTlVMTCkgewogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiJVUoKSBnb3QgbXVsdGlwbGUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZXMgZm9yIGFyZ3VtZW50ICclUyciLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvLT5jb19uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmQpOworICAgICAgICAgICAgICAgICAgICAgICAgICIlVSgpIGdvdCBtdWx0aXBsZSB2YWx1ZXMgZm9yIGFyZ3VtZW50ICclUyciLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvLT5jb19uYW1lLCBrZXl3b3JkKTsKICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgfQogICAgICAgICBQeV9JTkNSRUYodmFsdWUpOwogICAgICAgICBTRVRMT0NBTChqLCB2YWx1ZSk7CiAgICAgfQorCisgICAgLyogQ2hlY2sgdGhlIG51bWJlciBvZiBwb3NpdGlvbmFsIGFyZ3VtZW50cyAqLwogICAgIGlmIChhcmdjb3VudCA+IGNvLT5jb19hcmdjb3VudCAmJiAhKGNvLT5jb19mbGFncyAmIENPX1ZBUkFSR1MpKSB7CiAgICAgICAgIHRvb19tYW55X3Bvc2l0aW9uYWwoY28sIGFyZ2NvdW50LCBkZWZjb3VudCwgZmFzdGxvY2Fscyk7CiAgICAgICAgIGdvdG8gZmFpbDsKICAgICB9CisKKyAgICAvKiBBZGQgbWlzc2luZyBwb3NpdGlvbmFsIGFyZ3VtZW50cyAoY29weSBkZWZhdWx0IHZhbHVlcyBmcm9tIGRlZnMpICovCiAgICAgaWYgKGFyZ2NvdW50IDwgY28tPmNvX2FyZ2NvdW50KSB7Ci0gICAgICAgIGludCBtID0gY28tPmNvX2FyZ2NvdW50IC0gZGVmY291bnQ7Ci0gICAgICAgIGludCBtaXNzaW5nID0gMDsKLSAgICAgICAgZm9yIChpID0gYXJnY291bnQ7IGkgPCBtOyBpKyspCi0gICAgICAgICAgICBpZiAoR0VUTE9DQUwoaSkgPT0gTlVMTCkKKyAgICAgICAgUHlfc3NpemVfdCBtID0gY28tPmNvX2FyZ2NvdW50IC0gZGVmY291bnQ7CisgICAgICAgIFB5X3NzaXplX3QgbWlzc2luZyA9IDA7CisgICAgICAgIGZvciAoaSA9IGFyZ2NvdW50OyBpIDwgbTsgaSsrKSB7CisgICAgICAgICAgICBpZiAoR0VUTE9DQUwoaSkgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIG1pc3NpbmcrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICBpZiAobWlzc2luZykgewogICAgICAgICAgICAgbWlzc2luZ19hcmd1bWVudHMoY28sIG1pc3NpbmcsIGRlZmNvdW50LCBmYXN0bG9jYWxzKTsKICAgICAgICAgICAgIGdvdG8gZmFpbDsKQEAgLTM5NDAsOCArNDAxOSwxMCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQorCisgICAgLyogQWRkIG1pc3Npbmcga2V5d29yZCBhcmd1bWVudHMgKGNvcHkgZGVmYXVsdCB2YWx1ZXMgZnJvbSBrd2RlZnMpICovCiAgICAgaWYgKGNvLT5jb19rd29ubHlhcmdjb3VudCA+IDApIHsKLSAgICAgICAgaW50IG1pc3NpbmcgPSAwOworICAgICAgICBQeV9zc2l6ZV90IG1pc3NpbmcgPSAwOwogICAgICAgICBmb3IgKGkgPSBjby0+Y29fYXJnY291bnQ7IGkgPCB0b3RhbF9hcmdzOyBpKyspIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lOwogICAgICAgICAgICAgaWYgKEdFVExPQ0FMKGkpICE9IE5VTEwpCkBAIC0zOTgyLDEzICs0MDYzLDE2IEBACiAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIFNFVExPQ0FMKGNvLT5jb19ubG9jYWxzICsgaSwgYyk7CiAgICAgfQorCisgICAgLyogQ29weSBjbG9zdXJlIHZhcmlhYmxlcyB0byBmcmVlIHZhcmlhYmxlcyAqLwogICAgIGZvciAoaSA9IDA7IGkgPCBQeVR1cGxlX0dFVF9TSVpFKGNvLT5jb19mcmVldmFycyk7ICsraSkgewogICAgICAgICBQeU9iamVjdCAqbyA9IFB5VHVwbGVfR0VUX0lURU0oY2xvc3VyZSwgaSk7CiAgICAgICAgIFB5X0lOQ1JFRihvKTsKICAgICAgICAgZnJlZXZhcnNbUHlUdXBsZV9HRVRfU0laRShjby0+Y29fY2VsbHZhcnMpICsgaV0gPSBvOwogICAgIH0KIAotICAgIGlmIChjby0+Y29fZmxhZ3MgJiAoQ09fR0VORVJBVE9SIHwgQ09fQ09ST1VUSU5FKSkgeworICAgIC8qIEhhbmRsZSBnZW5lcmF0b3IvY29yb3V0aW5lL2FzeW5jaHJvbm91cyBnZW5lcmF0b3IgKi8KKyAgICBpZiAoY28tPmNvX2ZsYWdzICYgKENPX0dFTkVSQVRPUiB8IENPX0NPUk9VVElORSB8IENPX0FTWU5DX0dFTkVSQVRPUikpIHsKICAgICAgICAgUHlPYmplY3QgKmdlbjsKICAgICAgICAgUHlPYmplY3QgKmNvcm9fd3JhcHBlciA9IHRzdGF0ZS0+Y29yb3V0aW5lX3dyYXBwZXI7CiAgICAgICAgIGludCBpc19jb3JvID0gY28tPmNvX2ZsYWdzICYgQ09fQ09ST1VUSU5FOwpAQCAtNDAxMyw2ICs0MDk3LDggQEAKICAgICAgICAgICogYW5kIHJldHVybiB0aGF0IGFzIHRoZSB2YWx1ZS4gKi8KICAgICAgICAgaWYgKGlzX2Nvcm8pIHsKICAgICAgICAgICAgIGdlbiA9IFB5Q29yb19OZXcoZiwgbmFtZSwgcXVhbG5hbWUpOworICAgICAgICB9IGVsc2UgaWYgKGNvLT5jb19mbGFncyAmIENPX0FTWU5DX0dFTkVSQVRPUikgeworICAgICAgICAgICAgZ2VuID0gUHlBc3luY0dlbl9OZXcoZiwgbmFtZSwgcXVhbG5hbWUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgZ2VuID0gUHlHZW5fTmV3V2l0aFF1YWxOYW1lKGYsIG5hbWUsIHF1YWxuYW1lKTsKICAgICAgICAgfQpAQCAtNDA1Miw4ICs0MTM4LDEwIEBACiAgICAgICAgICAgIFB5T2JqZWN0ICoqZGVmcywgaW50IGRlZmNvdW50LCBQeU9iamVjdCAqa3dkZWZzLCBQeU9iamVjdCAqY2xvc3VyZSkKIHsKICAgICByZXR1cm4gX1B5RXZhbF9FdmFsQ29kZVdpdGhOYW1lKF9jbywgZ2xvYmFscywgbG9jYWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncywgYXJnY291bnQsIGt3cywga3djb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZnMsIGRlZmNvdW50LCBrd2RlZnMsIGNsb3N1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLCBhcmdjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3cywga3dzICsgMSwga3djb3VudCwgMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZnMsIGRlZmNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dkZWZzLCBjbG9zdXJlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCk7CiB9CiAKQEAgLTQzMTIsNyArNDQwMCw3IEBACiAKICNpZmRlZiBMTFRSQUNFCiBzdGF0aWMgaW50Ci1wcnRyYWNlKFB5T2JqZWN0ICp2LCBjaGFyICpzdHIpCitwcnRyYWNlKFB5T2JqZWN0ICp2LCBjb25zdCBjaGFyICpzdHIpCiB7CiAgICAgcHJpbnRmKCIlcyAiLCBzdHIpOwogICAgIGlmIChQeU9iamVjdF9QcmludCh2LCBzdGRvdXQsIDApICE9IDApCkBAIC00NDg5LDYgKzQ1NzcsMzggQEAKICAgICByZXR1cm4gdHN0YXRlLT5jb3JvdXRpbmVfd3JhcHBlcjsKIH0KIAordm9pZAorX1B5RXZhbF9TZXRBc3luY0dlbkZpcnN0aXRlcihQeU9iamVjdCAqZmlyc3RpdGVyKQoreworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CisKKyAgICBQeV9YSU5DUkVGKGZpcnN0aXRlcik7CisgICAgUHlfWFNFVFJFRih0c3RhdGUtPmFzeW5jX2dlbl9maXJzdGl0ZXIsIGZpcnN0aXRlcik7Cit9CisKK1B5T2JqZWN0ICoKK19QeUV2YWxfR2V0QXN5bmNHZW5GaXJzdGl0ZXIodm9pZCkKK3sKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOworICAgIHJldHVybiB0c3RhdGUtPmFzeW5jX2dlbl9maXJzdGl0ZXI7Cit9CisKK3ZvaWQKK19QeUV2YWxfU2V0QXN5bmNHZW5GaW5hbGl6ZXIoUHlPYmplY3QgKmZpbmFsaXplcikKK3sKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOworCisgICAgUHlfWElOQ1JFRihmaW5hbGl6ZXIpOworICAgIFB5X1hTRVRSRUYodHN0YXRlLT5hc3luY19nZW5fZmluYWxpemVyLCBmaW5hbGl6ZXIpOworfQorCitQeU9iamVjdCAqCitfUHlFdmFsX0dldEFzeW5jR2VuRmluYWxpemVyKHZvaWQpCit7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKKyAgICByZXR1cm4gdHN0YXRlLT5hc3luY19nZW5fZmluYWxpemVyOworfQorCiBQeU9iamVjdCAqCiBQeUV2YWxfR2V0QnVpbHRpbnModm9pZCkKIHsKQEAgLTQ1NjEsMTAgKzQ2ODEsOCBAQAogICAgVGhlIGFyZyBtdXN0IGJlIGEgdHVwbGUgb3IgTlVMTC4gIFRoZSBrdyBtdXN0IGJlIGEgZGljdCBvciBOVUxMLiAqLwogCiBQeU9iamVjdCAqCi1QeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3JkcyhQeU9iamVjdCAqZnVuYywgUHlPYmplY3QgKmFyZywgUHlPYmplY3QgKmt3KQorUHlFdmFsX0NhbGxPYmplY3RXaXRoS2V5d29yZHMoUHlPYmplY3QgKmZ1bmMsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewotICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0KICNpZmRlZiBQeV9ERUJVRwogICAgIC8qIFB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzKCkgbXVzdCBub3QgYmUgY2FsbGVkIHdpdGggYW4gZXhjZXB0aW9uCiAgICAgICAgc2V0LiBJdCByYWlzZXMgYSBuZXcgZXhjZXB0aW9uIGlmIHBhcmFtZXRlcnMgYXJlIGludmFsaWQgb3IgaWYKQEAgLTQ1NzIsMzAgKzQ2OTAsMjMgQEAKICAgICBhc3NlcnQoIVB5RXJyX09jY3VycmVkKCkpOwogI2VuZGlmCiAKLSAgICBpZiAoYXJnID09IE5VTEwpIHsKLSAgICAgICAgYXJnID0gUHlUdXBsZV9OZXcoMCk7Ci0gICAgICAgIGlmIChhcmcgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChhcmdzID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIF9QeU9iamVjdF9GYXN0Q2FsbERpY3QoZnVuYywgTlVMTCwgMCwga3dhcmdzKTsKICAgICB9Ci0gICAgZWxzZSBpZiAoIVB5VHVwbGVfQ2hlY2soYXJnKSkgeworCisgICAgaWYgKCFQeVR1cGxlX0NoZWNrKGFyZ3MpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgbGlzdCBtdXN0IGJlIGEgdHVwbGUiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGVsc2UKLSAgICAgICAgUHlfSU5DUkVGKGFyZyk7CiAKLSAgICBpZiAoa3cgIT0gTlVMTCAmJiAhUHlEaWN0X0NoZWNrKGt3KSkgeworICAgIGlmIChrd2FyZ3MgIT0gTlVMTCAmJiAhUHlEaWN0X0NoZWNrKGt3YXJncykpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJrZXl3b3JkIGxpc3QgbXVzdCBiZSBhIGRpY3Rpb25hcnkiKTsKLSAgICAgICAgUHlfREVDUkVGKGFyZyk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGwoZnVuYywgYXJnLCBrdyk7Ci0gICAgUHlfREVDUkVGKGFyZyk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBQeU9iamVjdF9DYWxsKGZ1bmMsIGFyZ3MsIGt3YXJncyk7CiB9CiAKIGNvbnN0IGNoYXIgKgpAQCAtNDYwNCw3ICs0NzE1LDcgQEAKICAgICBpZiAoUHlNZXRob2RfQ2hlY2soZnVuYykpCiAgICAgICAgIHJldHVybiBQeUV2YWxfR2V0RnVuY05hbWUoUHlNZXRob2RfR0VUX0ZVTkNUSU9OKGZ1bmMpKTsKICAgICBlbHNlIGlmIChQeUZ1bmN0aW9uX0NoZWNrKGZ1bmMpKQotICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9Bc1N0cmluZygoKFB5RnVuY3Rpb25PYmplY3QqKWZ1bmMpLT5mdW5jX25hbWUpOworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0FzVVRGOCgoKFB5RnVuY3Rpb25PYmplY3QqKWZ1bmMpLT5mdW5jX25hbWUpOwogICAgIGVsc2UgaWYgKFB5Q0Z1bmN0aW9uX0NoZWNrKGZ1bmMpKQogICAgICAgICByZXR1cm4gKChQeUNGdW5jdGlvbk9iamVjdCopZnVuYyktPm1fbWwtPm1sX25hbWU7CiAgICAgZWxzZQpAQCAtNDYyNCwyMSArNDczNSw2IEBACiAgICAgICAgIHJldHVybiAiIG9iamVjdCI7CiB9CiAKLXN0YXRpYyB2b2lkCi1lcnJfYXJncyhQeU9iamVjdCAqZnVuYywgaW50IGZsYWdzLCBpbnQgbmFyZ3MpCi17Ci0gICAgaWYgKGZsYWdzICYgTUVUSF9OT0FSR1MpCi0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiJS4yMDBzKCkgdGFrZXMgbm8gYXJndW1lbnRzICglZCBnaXZlbikiLAotICAgICAgICAgICAgICAgICAgICAgKChQeUNGdW5jdGlvbk9iamVjdCAqKWZ1bmMpLT5tX21sLT5tbF9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgbmFyZ3MpOwotICAgIGVsc2UKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMoKSB0YWtlcyBleGFjdGx5IG9uZSBhcmd1bWVudCAoJWQgZ2l2ZW4pIiwKLSAgICAgICAgICAgICAgICAgICAgICgoUHlDRnVuY3Rpb25PYmplY3QgKilmdW5jKS0+bV9tbC0+bWxfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgIG5hcmdzKTsKLX0KLQogI2RlZmluZSBDX1RSQUNFKHgsIGNhbGwpIFwKIGlmICh0c3RhdGUtPnVzZV90cmFjaW5nICYmIHRzdGF0ZS0+Y19wcm9maWxlZnVuYykgeyBcCiAgICAgaWYgKGNhbGxfdHJhY2UodHN0YXRlLT5jX3Byb2ZpbGVmdW5jLCB0c3RhdGUtPmNfcHJvZmlsZW9iaiwgXApAQCAtNDY3MSw2MCArNDc2NywyNSBAQAogICAgIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLWNhbGxfZnVuY3Rpb24oUHlPYmplY3QgKioqcHBfc3RhY2ssIGludCBvcGFyZwotI2lmZGVmIFdJVEhfVFNDCi0gICAgICAgICAgICAgICAgLCB1aW50NjQqIHBpbnRyMCwgdWludDY0KiBwaW50cjEKLSNlbmRpZgotICAgICAgICAgICAgICAgICkKK2NhbGxfZnVuY3Rpb24oUHlPYmplY3QgKioqcHBfc3RhY2ssIFB5X3NzaXplX3Qgb3BhcmcsIFB5T2JqZWN0ICprd25hbWVzKQogewotICAgIGludCBuYSA9IG9wYXJnICYgMHhmZjsKLSAgICBpbnQgbmsgPSAob3Bhcmc+PjgpICYgMHhmZjsKLSAgICBpbnQgbiA9IG5hICsgMiAqIG5rOwotICAgIFB5T2JqZWN0ICoqcGZ1bmMgPSAoKnBwX3N0YWNrKSAtIG4gLSAxOworICAgIFB5T2JqZWN0ICoqcGZ1bmMgPSAoKnBwX3N0YWNrKSAtIG9wYXJnIC0gMTsKICAgICBQeU9iamVjdCAqZnVuYyA9ICpwZnVuYzsKICAgICBQeU9iamVjdCAqeCwgKnc7CisgICAgUHlfc3NpemVfdCBua3dhcmdzID0gKGt3bmFtZXMgPT0gTlVMTCkgPyAwIDogUHlUdXBsZV9HRVRfU0laRShrd25hbWVzKTsKKyAgICBQeV9zc2l6ZV90IG5hcmdzID0gb3BhcmcgLSBua3dhcmdzOworICAgIFB5T2JqZWN0ICoqc3RhY2s7CiAKICAgICAvKiBBbHdheXMgZGlzcGF0Y2ggUHlDRnVuY3Rpb24gZmlyc3QsIGJlY2F1c2UgdGhlc2UgYXJlCiAgICAgICAgcHJlc3VtZWQgdG8gYmUgdGhlIG1vc3QgZnJlcXVlbnQgY2FsbGFibGUgb2JqZWN0LgogICAgICovCi0gICAgaWYgKFB5Q0Z1bmN0aW9uX0NoZWNrKGZ1bmMpICYmIG5rID09IDApIHsKLSAgICAgICAgaW50IGZsYWdzID0gUHlDRnVuY3Rpb25fR0VUX0ZMQUdTKGZ1bmMpOworICAgIGlmIChQeUNGdW5jdGlvbl9DaGVjayhmdW5jKSkgewogICAgICAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOwogCiAgICAgICAgIFBDQUxMKFBDQUxMX0NGVU5DVElPTik7Ci0gICAgICAgIGlmIChmbGFncyAmIChNRVRIX05PQVJHUyB8IE1FVEhfTykpIHsKLSAgICAgICAgICAgIFB5Q0Z1bmN0aW9uIG1ldGggPSBQeUNGdW5jdGlvbl9HRVRfRlVOQ1RJT04oZnVuYyk7Ci0gICAgICAgICAgICBQeU9iamVjdCAqc2VsZiA9IFB5Q0Z1bmN0aW9uX0dFVF9TRUxGKGZ1bmMpOwotICAgICAgICAgICAgaWYgKGZsYWdzICYgTUVUSF9OT0FSR1MgJiYgbmEgPT0gMCkgewotICAgICAgICAgICAgICAgIENfVFJBQ0UoeCwgKCptZXRoKShzZWxmLE5VTEwpKTsKIAotICAgICAgICAgICAgICAgIHggPSBfUHlfQ2hlY2tGdW5jdGlvblJlc3VsdChmdW5jLCB4LCBOVUxMKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKGZsYWdzICYgTUVUSF9PICYmIG5hID09IDEpIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJnID0gRVhUX1BPUCgqcHBfc3RhY2spOwotICAgICAgICAgICAgICAgIENfVFJBQ0UoeCwgKCptZXRoKShzZWxmLGFyZykpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhcmcpOwotCi0gICAgICAgICAgICAgICAgeCA9IF9QeV9DaGVja0Z1bmN0aW9uUmVzdWx0KGZ1bmMsIHgsIE5VTEwpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgZXJyX2FyZ3MoZnVuYywgZmxhZ3MsIG5hKTsKLSAgICAgICAgICAgICAgICB4ID0gTlVMTDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpjYWxsYXJnczsKLSAgICAgICAgICAgIGNhbGxhcmdzID0gbG9hZF9hcmdzKHBwX3N0YWNrLCBuYSk7Ci0gICAgICAgICAgICBpZiAoY2FsbGFyZ3MgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFJFQURfVElNRVNUQU1QKCpwaW50cjApOwotICAgICAgICAgICAgICAgIENfVFJBQ0UoeCwgUHlDRnVuY3Rpb25fQ2FsbChmdW5jLGNhbGxhcmdzLE5VTEwpKTsKLSAgICAgICAgICAgICAgICBSRUFEX1RJTUVTVEFNUCgqcGludHIxKTsKLSAgICAgICAgICAgICAgICBQeV9YREVDUkVGKGNhbGxhcmdzKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHggPSBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgICAgIHN0YWNrID0gKCpwcF9zdGFjaykgLSBuYXJncyAtIG5rd2FyZ3M7CisgICAgICAgIENfVFJBQ0UoeCwgX1B5Q0Z1bmN0aW9uX0Zhc3RDYWxsS2V5d29yZHMoZnVuYywgc3RhY2ssIG5hcmdzLCBrd25hbWVzKSk7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBpZiAoUHlNZXRob2RfQ2hlY2soZnVuYykgJiYgUHlNZXRob2RfR0VUX1NFTEYoZnVuYykgIT0gTlVMTCkgewpAQCAtNDczNiwyMSArNDc5NywyNiBAQAogICAgICAgICAgICAgZnVuYyA9IFB5TWV0aG9kX0dFVF9GVU5DVElPTihmdW5jKTsKICAgICAgICAgICAgIFB5X0lOQ1JFRihmdW5jKTsKICAgICAgICAgICAgIFB5X1NFVFJFRigqcGZ1bmMsIHNlbGYpOwotICAgICAgICAgICAgbmErKzsKLSAgICAgICAgICAgIG4rKzsKLSAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBuYXJncysrOworICAgICAgICB9CisgICAgICAgIGVsc2UgewogICAgICAgICAgICAgUHlfSU5DUkVGKGZ1bmMpOwotICAgICAgICBSRUFEX1RJTUVTVEFNUCgqcGludHIwKTsKLSAgICAgICAgaWYgKFB5RnVuY3Rpb25fQ2hlY2soZnVuYykpCi0gICAgICAgICAgICB4ID0gZmFzdF9mdW5jdGlvbihmdW5jLCBwcF9zdGFjaywgbiwgbmEsIG5rKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgeCA9IGRvX2NhbGwoZnVuYywgcHBfc3RhY2ssIG5hLCBuayk7Ci0gICAgICAgIFJFQURfVElNRVNUQU1QKCpwaW50cjEpOwotICAgICAgICBQeV9ERUNSRUYoZnVuYyk7CisgICAgICAgIH0KIAotICAgICAgICBhc3NlcnQoKHggIT0gTlVMTCkgXiAoUHlFcnJfT2NjdXJyZWQoKSAhPSBOVUxMKSk7CisgICAgICAgIHN0YWNrID0gKCpwcF9zdGFjaykgLSBuYXJncyAtIG5rd2FyZ3M7CisKKyAgICAgICAgaWYgKFB5RnVuY3Rpb25fQ2hlY2soZnVuYykpIHsKKyAgICAgICAgICAgIHggPSBmYXN0X2Z1bmN0aW9uKGZ1bmMsIHN0YWNrLCBuYXJncywga3duYW1lcyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB4ID0gX1B5T2JqZWN0X0Zhc3RDYWxsS2V5d29yZHMoZnVuYywgc3RhY2ssIG5hcmdzLCBrd25hbWVzKTsKKyAgICAgICAgfQorCisgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKICAgICB9CiAKKyAgICBhc3NlcnQoKHggIT0gTlVMTCkgXiAoUHlFcnJfT2NjdXJyZWQoKSAhPSBOVUxMKSk7CisKICAgICAvKiBDbGVhciB0aGUgc3RhY2sgb2YgdGhlIGZ1bmN0aW9uIG9iamVjdC4gIEFsc28gcmVtb3ZlcwogICAgICAgIHRoZSBhcmd1bWVudHMgaW4gY2FzZSB0aGV5IHdlcmVuJ3QgY29uc3VtZWQgYWxyZWFkeQogICAgICAgIChmYXN0X2Z1bmN0aW9uKCkgYW5kIGVycl9hcmdzKCkgbGVhdmUgdGhlbSBvbiB0aGUgc3RhY2spLgpAQCAtNDc2MSw3ICs0ODI3LDYgQEAKICAgICAgICAgUENBTEwoUENBTExfUE9QKTsKICAgICB9CiAKLSAgICBhc3NlcnQoKHggIT0gTlVMTCkgXiAoUHlFcnJfT2NjdXJyZWQoKSAhPSBOVUxMKSk7CiAgICAgcmV0dXJuIHg7CiB9CiAKQEAgLTQ3NzQsMTU5ICs0ODM5LDE5NyBAQAogICAgZG9uZSBiZWZvcmUgZXZhbHVhdGluZyB0aGUgZnJhbWUuCiAqLwogCitzdGF0aWMgUHlPYmplY3QqCitfUHlGdW5jdGlvbl9GYXN0Q2FsbChQeUNvZGVPYmplY3QgKmNvLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZ2xvYmFscykKK3sKKyAgICBQeUZyYW1lT2JqZWN0ICpmOworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CisgICAgUHlPYmplY3QgKipmYXN0bG9jYWxzOworICAgIFB5X3NzaXplX3QgaTsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgUENBTEwoUENBTExfRkFTVEVSX0ZVTkNUSU9OKTsKKyAgICBhc3NlcnQoZ2xvYmFscyAhPSBOVUxMKTsKKyAgICAvKiBYWFggUGVyaGFwcyB3ZSBzaG91bGQgY3JlYXRlIGEgc3BlY2lhbGl6ZWQKKyAgICAgICBQeUZyYW1lX05ldygpIHRoYXQgZG9lc24ndCB0YWtlIGxvY2FscywgYnV0IGRvZXMKKyAgICAgICB0YWtlIGJ1aWx0aW5zIHdpdGhvdXQgc2FuaXR5IGNoZWNraW5nIHRoZW0uCisgICAgICAgKi8KKyAgICBhc3NlcnQodHN0YXRlICE9IE5VTEwpOworICAgIGYgPSBQeUZyYW1lX05ldyh0c3RhdGUsIGNvLCBnbG9iYWxzLCBOVUxMKTsKKyAgICBpZiAoZiA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGZhc3Rsb2NhbHMgPSBmLT5mX2xvY2Fsc3BsdXM7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbmFyZ3M7IGkrKykgeworICAgICAgICBQeV9JTkNSRUYoKmFyZ3MpOworICAgICAgICBmYXN0bG9jYWxzW2ldID0gKmFyZ3MrKzsKKyAgICB9CisgICAgcmVzdWx0ID0gUHlFdmFsX0V2YWxGcmFtZUV4KGYsMCk7CisKKyAgICArK3RzdGF0ZS0+cmVjdXJzaW9uX2RlcHRoOworICAgIFB5X0RFQ1JFRihmKTsKKyAgICAtLXRzdGF0ZS0+cmVjdXJzaW9uX2RlcHRoOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogc3RhdGljIFB5T2JqZWN0ICoKLWZhc3RfZnVuY3Rpb24oUHlPYmplY3QgKmZ1bmMsIFB5T2JqZWN0ICoqKnBwX3N0YWNrLCBpbnQgbiwgaW50IG5hLCBpbnQgbmspCitmYXN0X2Z1bmN0aW9uKFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqKnN0YWNrLAorICAgICAgICAgICAgICBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeUNvZGVPYmplY3QgKmNvID0gKFB5Q29kZU9iamVjdCAqKVB5RnVuY3Rpb25fR0VUX0NPREUoZnVuYyk7CiAgICAgUHlPYmplY3QgKmdsb2JhbHMgPSBQeUZ1bmN0aW9uX0dFVF9HTE9CQUxTKGZ1bmMpOwogICAgIFB5T2JqZWN0ICphcmdkZWZzID0gUHlGdW5jdGlvbl9HRVRfREVGQVVMVFMoZnVuYyk7Ci0gICAgUHlPYmplY3QgKmt3ZGVmcyA9IFB5RnVuY3Rpb25fR0VUX0tXX0RFRkFVTFRTKGZ1bmMpOwotICAgIFB5T2JqZWN0ICpuYW1lID0gKChQeUZ1bmN0aW9uT2JqZWN0ICopZnVuYykgLT4gZnVuY19uYW1lOwotICAgIFB5T2JqZWN0ICpxdWFsbmFtZSA9ICgoUHlGdW5jdGlvbk9iamVjdCAqKWZ1bmMpIC0+IGZ1bmNfcXVhbG5hbWU7Ci0gICAgUHlPYmplY3QgKipkID0gTlVMTDsKLSAgICBpbnQgbmQgPSAwOworICAgIFB5T2JqZWN0ICprd2RlZnMsICpjbG9zdXJlLCAqbmFtZSwgKnF1YWxuYW1lOworICAgIFB5T2JqZWN0ICoqZDsKKyAgICBQeV9zc2l6ZV90IG5rd2FyZ3MgPSAoa3duYW1lcyA9PSBOVUxMKSA/IDAgOiBQeVR1cGxlX0dFVF9TSVpFKGt3bmFtZXMpOworICAgIFB5X3NzaXplX3QgbmQ7CisKKyAgICBhc3NlcnQoUHlGdW5jdGlvbl9DaGVjayhmdW5jKSk7CisgICAgYXNzZXJ0KG5hcmdzID49IDApOworICAgIGFzc2VydChrd25hbWVzID09IE5VTEwgfHwgUHlUdXBsZV9DaGVja0V4YWN0KGt3bmFtZXMpKTsKKyAgICBhc3NlcnQoKG5hcmdzID09IDAgJiYgbmt3YXJncyA9PSAwKSB8fCBzdGFjayAhPSBOVUxMKTsKKyAgICAvKiBrd25hbWVzIG11c3Qgb25seSBjb250YWlucyBzdHIgc3RyaW5ncywgbm8gc3ViY2xhc3MsIGFuZCBhbGwga2V5cyBtdXN0CisgICAgICAgYmUgdW5pcXVlICovCiAKICAgICBQQ0FMTChQQ0FMTF9GVU5DVElPTik7CiAgICAgUENBTEwoUENBTExfRkFTVF9GVU5DVElPTik7Ci0gICAgaWYgKGFyZ2RlZnMgPT0gTlVMTCAmJiBjby0+Y29fYXJnY291bnQgPT0gbiAmJgotICAgICAgICBjby0+Y29fa3dvbmx5YXJnY291bnQgPT0gMCAmJiBuaz09MCAmJgotICAgICAgICBjby0+Y29fZmxhZ3MgPT0gKENPX09QVElNSVpFRCB8IENPX05FV0xPQ0FMUyB8IENPX05PRlJFRSkpIHsKLSAgICAgICAgUHlGcmFtZU9iamVjdCAqZjsKLSAgICAgICAgUHlPYmplY3QgKnJldHZhbCA9IE5VTEw7Ci0gICAgICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7Ci0gICAgICAgIFB5T2JqZWN0ICoqZmFzdGxvY2FscywgKipzdGFjazsKLSAgICAgICAgaW50IGk7CiAKLSAgICAgICAgUENBTEwoUENBTExfRkFTVEVSX0ZVTkNUSU9OKTsKLSAgICAgICAgYXNzZXJ0KGdsb2JhbHMgIT0gTlVMTCk7Ci0gICAgICAgIC8qIFhYWCBQZXJoYXBzIHdlIHNob3VsZCBjcmVhdGUgYSBzcGVjaWFsaXplZAotICAgICAgICAgICBQeUZyYW1lX05ldygpIHRoYXQgZG9lc24ndCB0YWtlIGxvY2FscywgYnV0IGRvZXMKLSAgICAgICAgICAgdGFrZSBidWlsdGlucyB3aXRob3V0IHNhbml0eSBjaGVja2luZyB0aGVtLgotICAgICAgICAqLwotICAgICAgICBhc3NlcnQodHN0YXRlICE9IE5VTEwpOwotICAgICAgICBmID0gUHlGcmFtZV9OZXcodHN0YXRlLCBjbywgZ2xvYmFscywgTlVMTCk7Ci0gICAgICAgIGlmIChmID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgICAgICBmYXN0bG9jYWxzID0gZi0+Zl9sb2NhbHNwbHVzOwotICAgICAgICBzdGFjayA9ICgqcHBfc3RhY2spIC0gbjsKLQotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7Ci0gICAgICAgICAgICBQeV9JTkNSRUYoKnN0YWNrKTsKLSAgICAgICAgICAgIGZhc3Rsb2NhbHNbaV0gPSAqc3RhY2srKzsKKyAgICBpZiAoY28tPmNvX2t3b25seWFyZ2NvdW50ID09IDAgJiYgbmt3YXJncyA9PSAwICYmCisgICAgICAgIGNvLT5jb19mbGFncyA9PSAoQ09fT1BUSU1JWkVEIHwgQ09fTkVXTE9DQUxTIHwgQ09fTk9GUkVFKSkKKyAgICB7CisgICAgICAgIGlmIChhcmdkZWZzID09IE5VTEwgJiYgY28tPmNvX2FyZ2NvdW50ID09IG5hcmdzKSB7CisgICAgICAgICAgICByZXR1cm4gX1B5RnVuY3Rpb25fRmFzdENhbGwoY28sIHN0YWNrLCBuYXJncywgZ2xvYmFscyk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dmFsID0gUHlFdmFsX0V2YWxGcmFtZUV4KGYsMCk7Ci0gICAgICAgICsrdHN0YXRlLT5yZWN1cnNpb25fZGVwdGg7Ci0gICAgICAgIFB5X0RFQ1JFRihmKTsKLSAgICAgICAgLS10c3RhdGUtPnJlY3Vyc2lvbl9kZXB0aDsKLSAgICAgICAgcmV0dXJuIHJldHZhbDsKKyAgICAgICAgZWxzZSBpZiAobmFyZ3MgPT0gMCAmJiBhcmdkZWZzICE9IE5VTEwKKyAgICAgICAgICAgICAgICAgJiYgY28tPmNvX2FyZ2NvdW50ID09IFB5X1NJWkUoYXJnZGVmcykpIHsKKyAgICAgICAgICAgIC8qIGZ1bmN0aW9uIGNhbGxlZCB3aXRoIG5vIGFyZ3VtZW50cywgYnV0IGFsbCBwYXJhbWV0ZXJzIGhhdmUKKyAgICAgICAgICAgICAgIGEgZGVmYXVsdCB2YWx1ZTogdXNlIGRlZmF1bHQgdmFsdWVzIGFzIGFyZ3VtZW50cyAuKi8KKyAgICAgICAgICAgIHN0YWNrID0gJlB5VHVwbGVfR0VUX0lURU0oYXJnZGVmcywgMCk7CisgICAgICAgICAgICByZXR1cm4gX1B5RnVuY3Rpb25fRmFzdENhbGwoY28sIHN0YWNrLCBQeV9TSVpFKGFyZ2RlZnMpLCBnbG9iYWxzKTsKKyAgICAgICAgfQogICAgIH0KKworICAgIGt3ZGVmcyA9IFB5RnVuY3Rpb25fR0VUX0tXX0RFRkFVTFRTKGZ1bmMpOworICAgIGNsb3N1cmUgPSBQeUZ1bmN0aW9uX0dFVF9DTE9TVVJFKGZ1bmMpOworICAgIG5hbWUgPSAoKFB5RnVuY3Rpb25PYmplY3QgKilmdW5jKSAtPiBmdW5jX25hbWU7CisgICAgcXVhbG5hbWUgPSAoKFB5RnVuY3Rpb25PYmplY3QgKilmdW5jKSAtPiBmdW5jX3F1YWxuYW1lOworCiAgICAgaWYgKGFyZ2RlZnMgIT0gTlVMTCkgewogICAgICAgICBkID0gJlB5VHVwbGVfR0VUX0lURU0oYXJnZGVmcywgMCk7CiAgICAgICAgIG5kID0gUHlfU0laRShhcmdkZWZzKTsKICAgICB9Ci0gICAgcmV0dXJuIF9QeUV2YWxfRXZhbENvZGVXaXRoTmFtZSgoUHlPYmplY3QqKWNvLCBnbG9iYWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0ICopTlVMTCwgKCpwcF9zdGFjayktbiwgbmEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKnBwX3N0YWNrKS0yKm5rLCBuaywgZCwgbmQsIGt3ZGVmcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RnVuY3Rpb25fR0VUX0NMT1NVUkUoZnVuYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLCBxdWFsbmFtZSk7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi11cGRhdGVfa2V5d29yZF9hcmdzKFB5T2JqZWN0ICpvcmlnX2t3ZGljdCwgaW50IG5rLCBQeU9iamVjdCAqKipwcF9zdGFjaywKLSAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZ1bmMpCi17Ci0gICAgUHlPYmplY3QgKmt3ZGljdCA9IE5VTEw7Ci0gICAgaWYgKG9yaWdfa3dkaWN0ID09IE5VTEwpCi0gICAgICAgIGt3ZGljdCA9IFB5RGljdF9OZXcoKTsKICAgICBlbHNlIHsKLSAgICAgICAga3dkaWN0ID0gUHlEaWN0X0NvcHkob3JpZ19rd2RpY3QpOwotICAgICAgICBQeV9ERUNSRUYob3JpZ19rd2RpY3QpOworICAgICAgICBkID0gTlVMTDsKKyAgICAgICAgbmQgPSAwOwogICAgIH0KLSAgICBpZiAoa3dkaWN0ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHdoaWxlICgtLW5rID49IDApIHsKLSAgICAgICAgaW50IGVycjsKLSAgICAgICAgUHlPYmplY3QgKnZhbHVlID0gRVhUX1BPUCgqcHBfc3RhY2spOwotICAgICAgICBQeU9iamVjdCAqa2V5ID0gRVhUX1BPUCgqcHBfc3RhY2spOwotICAgICAgICBpZiAoUHlEaWN0X0dldEl0ZW0oa3dkaWN0LCBrZXkpICE9IE5VTEwpIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcyVzIGdvdCBtdWx0aXBsZSB2YWx1ZXMgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJmb3Iga2V5d29yZCBhcmd1bWVudCAnJVUnIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY05hbWUoZnVuYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNEZXNjKGZ1bmMpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGtleSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoa3dkaWN0KTsKKyAgICByZXR1cm4gX1B5RXZhbF9FdmFsQ29kZVdpdGhOYW1lKChQeU9iamVjdCopY28sIGdsb2JhbHMsIChQeU9iamVjdCAqKU5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFjaywgbmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBua3dhcmdzID8gJlB5VHVwbGVfR0VUX0lURU0oa3duYW1lcywgMCkgOiBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2sgKyBuYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5rd2FyZ3MsIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLCAoaW50KW5kLCBrd2RlZnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zdXJlLCBuYW1lLCBxdWFsbmFtZSk7Cit9CisKK1B5T2JqZWN0ICoKK19QeUZ1bmN0aW9uX0Zhc3RDYWxsS2V5d29yZHMoUHlPYmplY3QgKmZ1bmMsIFB5T2JqZWN0ICoqc3RhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQoreworICAgIHJldHVybiBmYXN0X2Z1bmN0aW9uKGZ1bmMsIHN0YWNrLCBuYXJncywga3duYW1lcyk7Cit9CisKK1B5T2JqZWN0ICoKK19QeUZ1bmN0aW9uX0Zhc3RDYWxsRGljdChQeU9iamVjdCAqZnVuYywgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlDb2RlT2JqZWN0ICpjbyA9IChQeUNvZGVPYmplY3QgKilQeUZ1bmN0aW9uX0dFVF9DT0RFKGZ1bmMpOworICAgIFB5T2JqZWN0ICpnbG9iYWxzID0gUHlGdW5jdGlvbl9HRVRfR0xPQkFMUyhmdW5jKTsKKyAgICBQeU9iamVjdCAqYXJnZGVmcyA9IFB5RnVuY3Rpb25fR0VUX0RFRkFVTFRTKGZ1bmMpOworICAgIFB5T2JqZWN0ICprd2RlZnMsICpjbG9zdXJlLCAqbmFtZSwgKnF1YWxuYW1lOworICAgIFB5T2JqZWN0ICprd3R1cGxlLCAqKms7CisgICAgUHlPYmplY3QgKipkOworICAgIFB5X3NzaXplX3QgbmQsIG5rOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICBhc3NlcnQoZnVuYyAhPSBOVUxMKTsKKyAgICBhc3NlcnQobmFyZ3MgPj0gMCk7CisgICAgYXNzZXJ0KG5hcmdzID09IDAgfHwgYXJncyAhPSBOVUxMKTsKKyAgICBhc3NlcnQoa3dhcmdzID09IE5VTEwgfHwgUHlEaWN0X0NoZWNrKGt3YXJncykpOworCisgICAgUENBTEwoUENBTExfRlVOQ1RJT04pOworICAgIFBDQUxMKFBDQUxMX0ZBU1RfRlVOQ1RJT04pOworCisgICAgaWYgKGNvLT5jb19rd29ubHlhcmdjb3VudCA9PSAwICYmCisgICAgICAgIChrd2FyZ3MgPT0gTlVMTCB8fCBQeURpY3RfU2l6ZShrd2FyZ3MpID09IDApICYmCisgICAgICAgIGNvLT5jb19mbGFncyA9PSAoQ09fT1BUSU1JWkVEIHwgQ09fTkVXTE9DQUxTIHwgQ09fTk9GUkVFKSkKKyAgICB7CisgICAgICAgIC8qIEZhc3QgcGF0aHMgKi8KKyAgICAgICAgaWYgKGFyZ2RlZnMgPT0gTlVMTCAmJiBjby0+Y29fYXJnY291bnQgPT0gbmFyZ3MpIHsKKyAgICAgICAgICAgIHJldHVybiBfUHlGdW5jdGlvbl9GYXN0Q2FsbChjbywgYXJncywgbmFyZ3MsIGdsb2JhbHMpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKG5hcmdzID09IDAgJiYgYXJnZGVmcyAhPSBOVUxMCisgICAgICAgICAgICAgICAgICYmIGNvLT5jb19hcmdjb3VudCA9PSBQeV9TSVpFKGFyZ2RlZnMpKSB7CisgICAgICAgICAgICAvKiBmdW5jdGlvbiBjYWxsZWQgd2l0aCBubyBhcmd1bWVudHMsIGJ1dCBhbGwgcGFyYW1ldGVycyBoYXZlCisgICAgICAgICAgICAgICBhIGRlZmF1bHQgdmFsdWU6IHVzZSBkZWZhdWx0IHZhbHVlcyBhcyBhcmd1bWVudHMgLiovCisgICAgICAgICAgICBhcmdzID0gJlB5VHVwbGVfR0VUX0lURU0oYXJnZGVmcywgMCk7CisgICAgICAgICAgICByZXR1cm4gX1B5RnVuY3Rpb25fRmFzdENhbGwoY28sIGFyZ3MsIFB5X1NJWkUoYXJnZGVmcyksIGdsb2JhbHMpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGt3YXJncyAhPSBOVUxMKSB7CisgICAgICAgIFB5X3NzaXplX3QgcG9zLCBpOworICAgICAgICBuayA9IFB5RGljdF9TaXplKGt3YXJncyk7CisKKyAgICAgICAga3d0dXBsZSA9IFB5VHVwbGVfTmV3KDIgKiBuayk7CisgICAgICAgIGlmIChrd3R1cGxlID09IE5VTEwpIHsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIGVyciA9IFB5RGljdF9TZXRJdGVtKGt3ZGljdCwga2V5LCB2YWx1ZSk7Ci0gICAgICAgIFB5X0RFQ1JFRihrZXkpOwotICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwotICAgICAgICBpZiAoZXJyKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoa3dkaWN0KTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOworCisgICAgICAgIGsgPSAmUHlUdXBsZV9HRVRfSVRFTShrd3R1cGxlLCAwKTsKKyAgICAgICAgcG9zID0gaSA9IDA7CisgICAgICAgIHdoaWxlIChQeURpY3RfTmV4dChrd2FyZ3MsICZwb3MsICZrW2ldLCAma1tpKzFdKSkgeworICAgICAgICAgICAgUHlfSU5DUkVGKGtbaV0pOworICAgICAgICAgICAgUHlfSU5DUkVGKGtbaSsxXSk7CisgICAgICAgICAgICBpICs9IDI7CiAgICAgICAgIH0KKyAgICAgICAgbmsgPSBpIC8gMjsKICAgICB9Ci0gICAgcmV0dXJuIGt3ZGljdDsKKyAgICBlbHNlIHsKKyAgICAgICAga3d0dXBsZSA9IE5VTEw7CisgICAgICAgIGsgPSBOVUxMOworICAgICAgICBuayA9IDA7CisgICAgfQorCisgICAga3dkZWZzID0gUHlGdW5jdGlvbl9HRVRfS1dfREVGQVVMVFMoZnVuYyk7CisgICAgY2xvc3VyZSA9IFB5RnVuY3Rpb25fR0VUX0NMT1NVUkUoZnVuYyk7CisgICAgbmFtZSA9ICgoUHlGdW5jdGlvbk9iamVjdCAqKWZ1bmMpIC0+IGZ1bmNfbmFtZTsKKyAgICBxdWFsbmFtZSA9ICgoUHlGdW5jdGlvbk9iamVjdCAqKWZ1bmMpIC0+IGZ1bmNfcXVhbG5hbWU7CisKKyAgICBpZiAoYXJnZGVmcyAhPSBOVUxMKSB7CisgICAgICAgIGQgPSAmUHlUdXBsZV9HRVRfSVRFTShhcmdkZWZzLCAwKTsKKyAgICAgICAgbmQgPSBQeV9TSVpFKGFyZ2RlZnMpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZCA9IE5VTEw7CisgICAgICAgIG5kID0gMDsKKyAgICB9CisKKyAgICByZXN1bHQgPSBfUHlFdmFsX0V2YWxDb2RlV2l0aE5hbWUoKFB5T2JqZWN0KiljbywgZ2xvYmFscywgKFB5T2JqZWN0ICopTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncywgbmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGssIGsgKyAxLCBuaywgMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCwgbmQsIGt3ZGVmcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc3VyZSwgbmFtZSwgcXVhbG5hbWUpOworICAgIFB5X1hERUNSRUYoa3d0dXBsZSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLXVwZGF0ZV9zdGFyX2FyZ3MoaW50IG5zdGFjaywgaW50IG5zdGFyLCBQeU9iamVjdCAqc3RhcmFyZywKLSAgICAgICAgICAgICAgICAgUHlPYmplY3QgKioqcHBfc3RhY2spCitkb19jYWxsX2NvcmUoUHlPYmplY3QgKmZ1bmMsIFB5T2JqZWN0ICpjYWxsYXJncywgUHlPYmplY3QgKmt3ZGljdCkKIHsKLSAgICBQeU9iamVjdCAqY2FsbGFyZ3MsICp3OwotCi0gICAgY2FsbGFyZ3MgPSBQeVR1cGxlX05ldyhuc3RhY2sgKyBuc3Rhcik7Ci0gICAgaWYgKGNhbGxhcmdzID09IE5VTEwpIHsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmIChuc3RhcikgewotICAgICAgICBpbnQgaTsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IG5zdGFyOyBpKyspIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICphID0gUHlUdXBsZV9HRVRfSVRFTShzdGFyYXJnLCBpKTsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihhKTsKLSAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oY2FsbGFyZ3MsIG5zdGFjayArIGksIGEpOwotICAgICAgICB9Ci0gICAgfQotICAgIHdoaWxlICgtLW5zdGFjayA+PSAwKSB7Ci0gICAgICAgIHcgPSBFWFRfUE9QKCpwcF9zdGFjayk7Ci0gICAgICAgIFB5VHVwbGVfU0VUX0lURU0oY2FsbGFyZ3MsIG5zdGFjaywgdyk7Ci0gICAgfQotICAgIHJldHVybiBjYWxsYXJnczsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWxvYWRfYXJncyhQeU9iamVjdCAqKipwcF9zdGFjaywgaW50IG5hKQotewotICAgIFB5T2JqZWN0ICphcmdzID0gUHlUdXBsZV9OZXcobmEpOwotICAgIFB5T2JqZWN0ICp3OwotCi0gICAgaWYgKGFyZ3MgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgd2hpbGUgKC0tbmEgPj0gMCkgewotICAgICAgICB3ID0gRVhUX1BPUCgqcHBfc3RhY2spOwotICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIG5hLCB3KTsKLSAgICB9Ci0gICAgcmV0dXJuIGFyZ3M7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1kb19jYWxsKFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqKipwcF9zdGFjaywgaW50IG5hLCBpbnQgbmspCi17Ci0gICAgUHlPYmplY3QgKmNhbGxhcmdzID0gTlVMTDsKLSAgICBQeU9iamVjdCAqa3dkaWN0ID0gTlVMTDsKLSAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKLQotICAgIGlmIChuayA+IDApIHsKLSAgICAgICAga3dkaWN0ID0gdXBkYXRlX2tleXdvcmRfYXJncyhOVUxMLCBuaywgcHBfc3RhY2ssIGZ1bmMpOwotICAgICAgICBpZiAoa3dkaWN0ID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGNhbGxfZmFpbDsKLSAgICB9Ci0gICAgY2FsbGFyZ3MgPSBsb2FkX2FyZ3MocHBfc3RhY2ssIG5hKTsKLSAgICBpZiAoY2FsbGFyZ3MgPT0gTlVMTCkKLSAgICAgICAgZ290byBjYWxsX2ZhaWw7CiAjaWZkZWYgQ0FMTF9QUk9GSUxFCiAgICAgLyogQXQgdGhpcyBwb2ludCwgd2UgaGF2ZSB0byBsb29rIGF0IHRoZSB0eXBlIG9mIGZ1bmMgdG8KICAgICAgICB1cGRhdGUgdGhlIGNhbGwgc3RhdHMgcHJvcGVybHkuICBEbyBpdCBoZXJlIHNvIGFzIHRvIGF2b2lkCkBAIC00OTQzLDExNSArNTA0NiwxNiBAQAogICAgIGVsc2UKICAgICAgICAgUENBTEwoUENBTExfT1RIRVIpOwogI2VuZGlmCisKICAgICBpZiAoUHlDRnVuY3Rpb25fQ2hlY2soZnVuYykpIHsKKyAgICAgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICAgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKICAgICAgICAgQ19UUkFDRShyZXN1bHQsIFB5Q0Z1bmN0aW9uX0NhbGwoZnVuYywgY2FsbGFyZ3MsIGt3ZGljdCkpOworICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGwoZnVuYywgY2FsbGFyZ3MsIGt3ZGljdCk7Ci1jYWxsX2ZhaWw6Ci0gICAgUHlfWERFQ1JFRihjYWxsYXJncyk7Ci0gICAgUHlfWERFQ1JFRihrd2RpY3QpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1leHRfZG9fY2FsbChQeU9iamVjdCAqZnVuYywgUHlPYmplY3QgKioqcHBfc3RhY2ssIGludCBmbGFncywgaW50IG5hLCBpbnQgbmspCi17Ci0gICAgaW50IG5zdGFyID0gMDsKLSAgICBQeU9iamVjdCAqY2FsbGFyZ3MgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpzdGFyYXJnID0gTlVMTDsKLSAgICBQeU9iamVjdCAqa3dkaWN0ID0gTlVMTDsKLSAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKLQotICAgIGlmIChmbGFncyAmIENBTExfRkxBR19LVykgewotICAgICAgICBrd2RpY3QgPSBFWFRfUE9QKCpwcF9zdGFjayk7Ci0gICAgICAgIGlmICghUHlEaWN0X0NoZWNrKGt3ZGljdCkpIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpkOwotICAgICAgICAgICAgZCA9IFB5RGljdF9OZXcoKTsKLSAgICAgICAgICAgIGlmIChkID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZ290byBleHRfY2FsbF9mYWlsOwotICAgICAgICAgICAgaWYgKFB5RGljdF9VcGRhdGUoZCwga3dkaWN0KSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGQpOwotICAgICAgICAgICAgICAgIC8qIFB5RGljdF9VcGRhdGUgcmFpc2VzIGF0dHJpYnV0ZQotICAgICAgICAgICAgICAgICAqIGVycm9yIChwZXJjb2xhdGVkIGZyb20gYW4gYXR0ZW1wdAotICAgICAgICAgICAgICAgICAqIHRvIGdldCAna2V5cycgYXR0cmlidXRlKSBpbnN0ZWFkIG9mCi0gICAgICAgICAgICAgICAgICogYSB0eXBlIGVycm9yIGlmIGl0cyBzZWNvbmQgYXJndW1lbnQKLSAgICAgICAgICAgICAgICAgKiBpcyBub3QgYSBtYXBwaW5nLgotICAgICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkgewotICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcyUuMjAwcyBhcmd1bWVudCBhZnRlciAqKiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibXVzdCBiZSBhIG1hcHBpbmcsIG5vdCAlLjIwMHMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNOYW1lKGZ1bmMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNEZXNjKGZ1bmMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dkaWN0LT5vYl90eXBlLT50cF9uYW1lKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZ290byBleHRfY2FsbF9mYWlsOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlfREVDUkVGKGt3ZGljdCk7Ci0gICAgICAgICAgICBrd2RpY3QgPSBkOwotICAgICAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHVybiBQeU9iamVjdF9DYWxsKGZ1bmMsIGNhbGxhcmdzLCBrd2RpY3QpOwogICAgIH0KLSAgICBpZiAobmsgPiAwKSB7Ci0gICAgICAgIGt3ZGljdCA9IHVwZGF0ZV9rZXl3b3JkX2FyZ3Moa3dkaWN0LCBuaywgcHBfc3RhY2ssIGZ1bmMpOwotICAgICAgICBpZiAoa3dkaWN0ID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGV4dF9jYWxsX2ZhaWw7Ci0gICAgfQotCi0gICAgaWYgKGZsYWdzICYgQ0FMTF9GTEFHX1ZBUikgewotICAgICAgICBzdGFyYXJnID0gRVhUX1BPUCgqcHBfc3RhY2spOwotICAgICAgICBpZiAoIVB5VHVwbGVfQ2hlY2soc3RhcmFyZykpIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICp0ID0gTlVMTDsKLSAgICAgICAgICAgIGlmIChQeV9UWVBFKHN0YXJhcmcpLT50cF9pdGVyID09IE5VTEwgJiYKLSAgICAgICAgICAgICAgICAgICAgIVB5U2VxdWVuY2VfQ2hlY2soc3RhcmFyZykpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzJS4yMDBzIGFyZ3VtZW50IGFmdGVyICogIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibXVzdCBiZSBhbiBpdGVyYWJsZSwgbm90ICUuMjAwcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jTmFtZShmdW5jKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNEZXNjKGZ1bmMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFyYXJnLT5vYl90eXBlLT50cF9uYW1lKTsKLSAgICAgICAgICAgICAgICBnb3RvIGV4dF9jYWxsX2ZhaWw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0ID0gUHlTZXF1ZW5jZV9UdXBsZShzdGFyYXJnKTsKLSAgICAgICAgICAgIGlmICh0ID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBnb3RvIGV4dF9jYWxsX2ZhaWw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeV9ERUNSRUYoc3RhcmFyZyk7Ci0gICAgICAgICAgICBzdGFyYXJnID0gdDsKLSAgICAgICAgfQotICAgICAgICBuc3RhciA9IFB5VHVwbGVfR0VUX1NJWkUoc3RhcmFyZyk7Ci0gICAgfQotICAgIGNhbGxhcmdzID0gdXBkYXRlX3N0YXJfYXJncyhuYSwgbnN0YXIsIHN0YXJhcmcsIHBwX3N0YWNrKTsKLSAgICBpZiAoY2FsbGFyZ3MgPT0gTlVMTCkKLSAgICAgICAgZ290byBleHRfY2FsbF9mYWlsOwotI2lmZGVmIENBTExfUFJPRklMRQotICAgIC8qIEF0IHRoaXMgcG9pbnQsIHdlIGhhdmUgdG8gbG9vayBhdCB0aGUgdHlwZSBvZiBmdW5jIHRvCi0gICAgICAgdXBkYXRlIHRoZSBjYWxsIHN0YXRzIHByb3Blcmx5LiAgRG8gaXQgaGVyZSBzbyBhcyB0byBhdm9pZAotICAgICAgIGV4cG9zaW5nIHRoZSBjYWxsIHN0YXRzIG1hY2hpbmVyeSBvdXRzaWRlIGNldmFsLmMKLSAgICAqLwotICAgIGlmIChQeUZ1bmN0aW9uX0NoZWNrKGZ1bmMpKQotICAgICAgICBQQ0FMTChQQ0FMTF9GVU5DVElPTik7Ci0gICAgZWxzZSBpZiAoUHlNZXRob2RfQ2hlY2soZnVuYykpCi0gICAgICAgIFBDQUxMKFBDQUxMX01FVEhPRCk7Ci0gICAgZWxzZSBpZiAoUHlUeXBlX0NoZWNrKGZ1bmMpKQotICAgICAgICBQQ0FMTChQQ0FMTF9UWVBFKTsKLSAgICBlbHNlIGlmIChQeUNGdW5jdGlvbl9DaGVjayhmdW5jKSkKLSAgICAgICAgUENBTEwoUENBTExfQ0ZVTkNUSU9OKTsKLSAgICBlbHNlCi0gICAgICAgIFBDQUxMKFBDQUxMX09USEVSKTsKLSNlbmRpZgotICAgIGlmIChQeUNGdW5jdGlvbl9DaGVjayhmdW5jKSkgewotICAgICAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOwotICAgICAgICBDX1RSQUNFKHJlc3VsdCwgUHlDRnVuY3Rpb25fQ2FsbChmdW5jLCBjYWxsYXJncywga3dkaWN0KSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbChmdW5jLCBjYWxsYXJncywga3dkaWN0KTsKLWV4dF9jYWxsX2ZhaWw6Ci0gICAgUHlfWERFQ1JFRihjYWxsYXJncyk7Ci0gICAgUHlfWERFQ1JFRihrd2RpY3QpOwotICAgIFB5X1hERUNSRUYoc3RhcmFyZyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogLyogRXh0cmFjdCBhIHNsaWNlIGluZGV4IGZyb20gYSBQeUxvbmcgb3IgYW4gb2JqZWN0IHdpdGggdGhlCkBAIC01MTQxLDYgKzUxNDUsNDYgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKK2ltcG9ydF9uYW1lKFB5RnJhbWVPYmplY3QgKmYsIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqZnJvbWxpc3QsIFB5T2JqZWN0ICpsZXZlbCkKK3sKKyAgICBfUHlfSURFTlRJRklFUihfX2ltcG9ydF9fKTsKKyAgICBQeU9iamVjdCAqaW1wb3J0X2Z1bmMsICpyZXM7CisgICAgUHlPYmplY3QqIHN0YWNrWzVdOworCisgICAgaW1wb3J0X2Z1bmMgPSBfUHlEaWN0X0dldEl0ZW1JZChmLT5mX2J1aWx0aW5zLCAmUHlJZF9fX2ltcG9ydF9fKTsKKyAgICBpZiAoaW1wb3J0X2Z1bmMgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW1wb3J0RXJyb3IsICJfX2ltcG9ydF9fIG5vdCBmb3VuZCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiBGYXN0IHBhdGggZm9yIG5vdCBvdmVybG9hZGVkIF9faW1wb3J0X18uICovCisgICAgaWYgKGltcG9ydF9mdW5jID09IFB5VGhyZWFkU3RhdGVfR0VUKCktPmludGVycC0+aW1wb3J0X2Z1bmMpIHsKKyAgICAgICAgaW50IGlsZXZlbCA9IF9QeUxvbmdfQXNJbnQobGV2ZWwpOworICAgICAgICBpZiAoaWxldmVsID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHJlcyA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsT2JqZWN0KAorICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGYtPmZfZ2xvYmFscywKKyAgICAgICAgICAgICAgICAgICAgICAgIGYtPmZfbG9jYWxzID09IE5VTEwgPyBQeV9Ob25lIDogZi0+Zl9sb2NhbHMsCisgICAgICAgICAgICAgICAgICAgICAgICBmcm9tbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGlsZXZlbCk7CisgICAgICAgIHJldHVybiByZXM7CisgICAgfQorCisgICAgUHlfSU5DUkVGKGltcG9ydF9mdW5jKTsKKworICAgIHN0YWNrWzBdID0gbmFtZTsKKyAgICBzdGFja1sxXSA9IGYtPmZfZ2xvYmFsczsKKyAgICBzdGFja1syXSA9IGYtPmZfbG9jYWxzID09IE5VTEwgPyBQeV9Ob25lIDogZi0+Zl9sb2NhbHM7CisgICAgc3RhY2tbM10gPSBmcm9tbGlzdDsKKyAgICBzdGFja1s0XSA9IGxldmVsOworICAgIHJlcyA9IF9QeU9iamVjdF9GYXN0Q2FsbChpbXBvcnRfZnVuYywgc3RhY2ssIDUpOworICAgIFB5X0RFQ1JFRihpbXBvcnRfZnVuYyk7CisgICAgcmV0dXJuIHJlczsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKIGltcG9ydF9mcm9tKFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqbmFtZSkKIHsKICAgICBQeU9iamVjdCAqeDsKQEAgLTUyNDUsNyArNTI4OSw3IEBACiAgICAgaWYgKCFvYmopCiAgICAgICAgIHJldHVybjsKIAotICAgIG9ial9zdHIgPSBfUHlVbmljb2RlX0FzU3RyaW5nKG9iaik7CisgICAgb2JqX3N0ciA9IFB5VW5pY29kZV9Bc1VURjgob2JqKTsKICAgICBpZiAoIW9ial9zdHIpCiAgICAgICAgIHJldHVybjsKIApAQCAtNTI3Niw3ICs1MzIwLDcgQEAKIAogc3RhdGljIFB5T2JqZWN0ICoKIHVuaWNvZGVfY29uY2F0ZW5hdGUoUHlPYmplY3QgKnYsIFB5T2JqZWN0ICp3LAotICAgICAgICAgICAgICAgICAgICBQeUZyYW1lT2JqZWN0ICpmLCB1bnNpZ25lZCBjaGFyICpuZXh0X2luc3RyKQorICAgICAgICAgICAgICAgICAgICBQeUZyYW1lT2JqZWN0ICpmLCBjb25zdCBfUHlfQ09ERVVOSVQgKm5leHRfaW5zdHIpCiB7CiAgICAgUHlPYmplY3QgKnJlczsKICAgICBpZiAoUHlfUkVGQ05UKHYpID09IDIpIHsKQEAgLTUyODYsMTAgKzUzMzAsMTEgQEAKICAgICAgICAgICogJ3ZhcmlhYmxlJy4gIFdlIHRyeSB0byBkZWxldGUgdGhlIHZhcmlhYmxlIG5vdyB0byByZWR1Y2UKICAgICAgICAgICogdGhlIHJlZmNudCB0byAxLgogICAgICAgICAgKi8KLSAgICAgICAgc3dpdGNoICgqbmV4dF9pbnN0cikgeworICAgICAgICBpbnQgb3Bjb2RlLCBvcGFyZzsKKyAgICAgICAgTkVYVE9QQVJHKCk7CisgICAgICAgIHN3aXRjaCAob3Bjb2RlKSB7CiAgICAgICAgIGNhc2UgU1RPUkVfRkFTVDoKICAgICAgICAgewotICAgICAgICAgICAgaW50IG9wYXJnID0gUEVFS0FSRygpOwogICAgICAgICAgICAgUHlPYmplY3QgKipmYXN0bG9jYWxzID0gZi0+Zl9sb2NhbHNwbHVzOwogICAgICAgICAgICAgaWYgKEdFVExPQ0FMKG9wYXJnKSA9PSB2KQogICAgICAgICAgICAgICAgIFNFVExPQ0FMKG9wYXJnLCBOVUxMKTsKQEAgLTUyOTksNyArNTM0NCw3IEBACiAgICAgICAgIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICoqZnJlZXZhcnMgPSAoZi0+Zl9sb2NhbHNwbHVzICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi0+Zl9jb2RlLT5jb19ubG9jYWxzKTsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpjID0gZnJlZXZhcnNbUEVFS0FSRygpXTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpjID0gZnJlZXZhcnNbb3BhcmddOwogICAgICAgICAgICAgaWYgKFB5Q2VsbF9HRVQoYykgPT0gdikKICAgICAgICAgICAgICAgICBQeUNlbGxfU2V0KGMsIE5VTEwpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC01MzA3LDcgKzUzNTIsNyBAQAogICAgICAgICBjYXNlIFNUT1JFX05BTUU6CiAgICAgICAgIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lcyA9IGYtPmZfY29kZS0+Y29fbmFtZXM7Ci0gICAgICAgICAgICBQeU9iamVjdCAqbmFtZSA9IEdFVElURU0obmFtZXMsIFBFRUtBUkcoKSk7CisgICAgICAgICAgICBQeU9iamVjdCAqbmFtZSA9IEdFVElURU0obmFtZXMsIG9wYXJnKTsKICAgICAgICAgICAgIFB5T2JqZWN0ICpsb2NhbHMgPSBmLT5mX2xvY2FsczsKICAgICAgICAgICAgIGlmIChQeURpY3RfQ2hlY2tFeGFjdChsb2NhbHMpICYmCiAgICAgICAgICAgICAgICAgUHlEaWN0X0dldEl0ZW0obG9jYWxzLCBuYW1lKSA9PSB2KSB7CkBAIC01MzY3LDMgKzU0MTIsNzkgQEAKIH0KIAogI2VuZGlmCisKK1B5X3NzaXplX3QKK19QeUV2YWxfUmVxdWVzdENvZGVFeHRyYUluZGV4KGZyZWVmdW5jIGZyZWUpCit7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HZXQoKTsKKyAgICBQeV9zc2l6ZV90IG5ld19pbmRleDsKKworICAgIGlmICh0c3RhdGUtPmNvX2V4dHJhX3VzZXJfY291bnQgPT0gTUFYX0NPX0VYVFJBX1VTRVJTIC0gMSkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIG5ld19pbmRleCA9IHRzdGF0ZS0+Y29fZXh0cmFfdXNlcl9jb3VudCsrOworICAgIHRzdGF0ZS0+Y29fZXh0cmFfZnJlZWZ1bmNzW25ld19pbmRleF0gPSBmcmVlOworICAgIHJldHVybiBuZXdfaW5kZXg7Cit9CisKK3N0YXRpYyB2b2lkCitkdHJhY2VfZnVuY3Rpb25fZW50cnkoUHlGcmFtZU9iamVjdCAqZikKK3sKKyAgICBjaGFyKiBmaWxlbmFtZTsKKyAgICBjaGFyKiBmdW5jbmFtZTsKKyAgICBpbnQgbGluZW5vOworCisgICAgZmlsZW5hbWUgPSBQeVVuaWNvZGVfQXNVVEY4KGYtPmZfY29kZS0+Y29fZmlsZW5hbWUpOworICAgIGZ1bmNuYW1lID0gUHlVbmljb2RlX0FzVVRGOChmLT5mX2NvZGUtPmNvX25hbWUpOworICAgIGxpbmVubyA9IFB5Q29kZV9BZGRyMkxpbmUoZi0+Zl9jb2RlLCBmLT5mX2xhc3RpKTsKKworICAgIFB5RFRyYWNlX0ZVTkNUSU9OX0VOVFJZKGZpbGVuYW1lLCBmdW5jbmFtZSwgbGluZW5vKTsKK30KKworc3RhdGljIHZvaWQKK2R0cmFjZV9mdW5jdGlvbl9yZXR1cm4oUHlGcmFtZU9iamVjdCAqZikKK3sKKyAgICBjaGFyKiBmaWxlbmFtZTsKKyAgICBjaGFyKiBmdW5jbmFtZTsKKyAgICBpbnQgbGluZW5vOworCisgICAgZmlsZW5hbWUgPSBQeVVuaWNvZGVfQXNVVEY4KGYtPmZfY29kZS0+Y29fZmlsZW5hbWUpOworICAgIGZ1bmNuYW1lID0gUHlVbmljb2RlX0FzVVRGOChmLT5mX2NvZGUtPmNvX25hbWUpOworICAgIGxpbmVubyA9IFB5Q29kZV9BZGRyMkxpbmUoZi0+Zl9jb2RlLCBmLT5mX2xhc3RpKTsKKworICAgIFB5RFRyYWNlX0ZVTkNUSU9OX1JFVFVSTihmaWxlbmFtZSwgZnVuY25hbWUsIGxpbmVubyk7Cit9CisKKy8qIERUcmFjZSBlcXVpdmFsZW50IG9mIG1heWJlX2NhbGxfbGluZV90cmFjZS4gKi8KK3N0YXRpYyB2b2lkCittYXliZV9kdHJhY2VfbGluZShQeUZyYW1lT2JqZWN0ICpmcmFtZSwKKyAgICAgICAgICAgICAgICAgIGludCAqaW5zdHJfbGIsIGludCAqaW5zdHJfdWIsIGludCAqaW5zdHJfcHJldikKK3sKKyAgICBpbnQgbGluZSA9IGZyYW1lLT5mX2xpbmVubzsKKyAgICBjaGFyICpjb19maWxlbmFtZSwgKmNvX25hbWU7CisKKyAgICAvKiBJZiB0aGUgbGFzdCBpbnN0cnVjdGlvbiBleGVjdXRlZCBpc24ndCBpbiB0aGUgY3VycmVudAorICAgICAgIGluc3RydWN0aW9uIHdpbmRvdywgcmVzZXQgdGhlIHdpbmRvdy4KKyAgICAqLworICAgIGlmIChmcmFtZS0+Zl9sYXN0aSA8ICppbnN0cl9sYiB8fCBmcmFtZS0+Zl9sYXN0aSA+PSAqaW5zdHJfdWIpIHsKKyAgICAgICAgUHlBZGRyUGFpciBib3VuZHM7CisgICAgICAgIGxpbmUgPSBfUHlDb2RlX0NoZWNrTGluZU51bWJlcihmcmFtZS0+Zl9jb2RlLCBmcmFtZS0+Zl9sYXN0aSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZib3VuZHMpOworICAgICAgICAqaW5zdHJfbGIgPSBib3VuZHMuYXBfbG93ZXI7CisgICAgICAgICppbnN0cl91YiA9IGJvdW5kcy5hcF91cHBlcjsKKyAgICB9CisgICAgLyogSWYgdGhlIGxhc3QgaW5zdHJ1Y3Rpb24gZmFsbHMgYXQgdGhlIHN0YXJ0IG9mIGEgbGluZSBvciBpZgorICAgICAgIGl0IHJlcHJlc2VudHMgYSBqdW1wIGJhY2t3YXJkcywgdXBkYXRlIHRoZSBmcmFtZSdzIGxpbmUKKyAgICAgICBudW1iZXIgYW5kIGNhbGwgdGhlIHRyYWNlIGZ1bmN0aW9uLiAqLworICAgIGlmIChmcmFtZS0+Zl9sYXN0aSA9PSAqaW5zdHJfbGIgfHwgZnJhbWUtPmZfbGFzdGkgPCAqaW5zdHJfcHJldikgeworICAgICAgICBmcmFtZS0+Zl9saW5lbm8gPSBsaW5lOworICAgICAgICBjb19maWxlbmFtZSA9IFB5VW5pY29kZV9Bc1VURjgoZnJhbWUtPmZfY29kZS0+Y29fZmlsZW5hbWUpOworICAgICAgICBpZiAoIWNvX2ZpbGVuYW1lKQorICAgICAgICAgICAgY29fZmlsZW5hbWUgPSAiPyI7CisgICAgICAgIGNvX25hbWUgPSBQeVVuaWNvZGVfQXNVVEY4KGZyYW1lLT5mX2NvZGUtPmNvX25hbWUpOworICAgICAgICBpZiAoIWNvX25hbWUpCisgICAgICAgICAgICBjb19uYW1lID0gIj8iOworICAgICAgICBQeURUcmFjZV9MSU5FKGNvX2ZpbGVuYW1lLCBjb19uYW1lLCBsaW5lKTsKKyAgICB9CisgICAgKmluc3RyX3ByZXYgPSBmcmFtZS0+Zl9sYXN0aTsKK30KZGlmZiAtLWdpdCBhL1B5dGhvbi9jZXZhbF9naWwuaCBiL1B5dGhvbi9jZXZhbF9naWwuaAppbmRleCA4ZDM4ZWU5Li5hM2I0NTBiIDEwMDY0NAotLS0gYS9QeXRob24vY2V2YWxfZ2lsLmgKKysrIGIvUHl0aG9uL2NldmFsX2dpbC5oCkBAIC0xNzgsNyArMTc4LDcgQEAKICAgICAgICAgLyogU3ViLWludGVycHJldGVyIHN1cHBvcnQ6IHRocmVhZHMgbWlnaHQgaGF2ZSBiZWVuIHN3aXRjaGVkCiAgICAgICAgICAgIHVuZGVyIG91ciBmZWV0IHVzaW5nIFB5VGhyZWFkU3RhdGVfU3dhcCgpLiBGaXggdGhlIEdJTCBsYXN0CiAgICAgICAgICAgIGhvbGRlciB2YXJpYWJsZSBzbyB0aGF0IG91ciBoZXVyaXN0aWNzIHdvcmsuICovCi0gICAgICAgIF9QeV9hdG9taWNfc3RvcmVfcmVsYXhlZCgmZ2lsX2xhc3RfaG9sZGVyLCAoUHlfdWludHB0cl90KXRzdGF0ZSk7CisgICAgICAgIF9QeV9hdG9taWNfc3RvcmVfcmVsYXhlZCgmZ2lsX2xhc3RfaG9sZGVyLCAodWludHB0cl90KXRzdGF0ZSk7CiAgICAgfQogCiAgICAgTVVURVhfTE9DSyhnaWxfbXV0ZXgpOwpAQCAtMjQwLDcgKzI0MCw3IEBACiAgICAgX1B5X0FOTk9UQVRFX1JXTE9DS19BQ1FVSVJFRCgmZ2lsX2xvY2tlZCwgLyppc193cml0ZT0qLzEpOwogCiAgICAgaWYgKHRzdGF0ZSAhPSAoUHlUaHJlYWRTdGF0ZSopX1B5X2F0b21pY19sb2FkX3JlbGF4ZWQoJmdpbF9sYXN0X2hvbGRlcikpIHsKLSAgICAgICAgX1B5X2F0b21pY19zdG9yZV9yZWxheGVkKCZnaWxfbGFzdF9ob2xkZXIsIChQeV91aW50cHRyX3QpdHN0YXRlKTsKKyAgICAgICAgX1B5X2F0b21pY19zdG9yZV9yZWxheGVkKCZnaWxfbGFzdF9ob2xkZXIsICh1aW50cHRyX3QpdHN0YXRlKTsKICAgICAgICAgKytnaWxfc3dpdGNoX251bWJlcjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1B5dGhvbi9jbGluaWMvYmx0aW5tb2R1bGUuYy5oIGIvUHl0aG9uL2NsaW5pYy9ibHRpbm1vZHVsZS5jLmgKaW5kZXggNGUyYjFmMS4uYzg4ZGVlZiAxMDA2NDQKLS0tIGEvUHl0aG9uL2NsaW5pYy9ibHRpbm1vZHVsZS5jLmgKKysrIGIvUHl0aG9uL2NsaW5pYy9ibHRpbm1vZHVsZS5jLmgKQEAgLTkzLDggKzkzLDkgQEAKICAgICBQeU9iamVjdCAqZm9ybWF0X3NwZWMgPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfFU6Zm9ybWF0IiwKLSAgICAgICAgJnZhbHVlLCAmZm9ybWF0X3NwZWMpKQorICAgICAgICAmdmFsdWUsICZmb3JtYXRfc3BlYykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX2Zvcm1hdF9pbXBsKG1vZHVsZSwgdmFsdWUsIGZvcm1hdF9zcGVjKTsKIAogZXhpdDoKQEAgLTExOSw4ICsxMjAsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBpOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmNociIsICZpKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6Y2hyIiwgJmkpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9jaHJfaW1wbChtb2R1bGUsIGkpOwogCiBleGl0OgpAQCAtMTQ2LDcgKzE0OCw3IEBACiAiaW4gYWRkaXRpb24gdG8gYW55IGZlYXR1cmVzIGV4cGxpY2l0bHkgc3BlY2lmaWVkLiIpOwogCiAjZGVmaW5lIEJVSUxUSU5fQ09NUElMRV9NRVRIT0RERUYgICAgXAotICAgIHsiY29tcGlsZSIsIChQeUNGdW5jdGlvbilidWlsdGluX2NvbXBpbGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBidWlsdGluX2NvbXBpbGVfX2RvY19ffSwKKyAgICB7ImNvbXBpbGUiLCAoUHlDRnVuY3Rpb24pYnVpbHRpbl9jb21waWxlLCBNRVRIX0ZBU1RDQUxMLCBidWlsdGluX2NvbXBpbGVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ1aWx0aW5fY29tcGlsZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzb3VyY2UsIFB5T2JqZWN0ICpmaWxlbmFtZSwKQEAgLTE1NCwxMCArMTU2LDExIEBACiAgICAgICAgICAgICAgICAgICAgICBpbnQgb3B0aW1pemUpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnVpbHRpbl9jb21waWxlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorYnVpbHRpbl9jb21waWxlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzb3VyY2UiLCAiZmlsZW5hbWUiLCAibW9kZSIsICJmbGFncyIsICJkb250X2luaGVyaXQiLCAib3B0aW1pemUiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzb3VyY2UiLCAiZmlsZW5hbWUiLCAibW9kZSIsICJmbGFncyIsICJkb250X2luaGVyaXQiLCAib3B0aW1pemUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPTyZzfGlpaTpjb21waWxlIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqc291cmNlOwogICAgIFB5T2JqZWN0ICpmaWxlbmFtZTsKICAgICBjb25zdCBjaGFyICptb2RlOwpAQCAtMTY1LDkgKzE2OCwxMCBAQAogICAgIGludCBkb250X2luaGVyaXQgPSAwOwogICAgIGludCBvcHRpbWl6ZSA9IC0xOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT08mc3xpaWk6Y29tcGlsZSIsIF9rZXl3b3JkcywKLSAgICAgICAgJnNvdXJjZSwgUHlVbmljb2RlX0ZTRGVjb2RlciwgJmZpbGVuYW1lLCAmbW9kZSwgJmZsYWdzLCAmZG9udF9pbmhlcml0LCAmb3B0aW1pemUpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc291cmNlLCBQeVVuaWNvZGVfRlNEZWNvZGVyLCAmZmlsZW5hbWUsICZtb2RlLCAmZmxhZ3MsICZkb250X2luaGVyaXQsICZvcHRpbWl6ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX2NvbXBpbGVfaW1wbChtb2R1bGUsIHNvdXJjZSwgZmlsZW5hbWUsIG1vZGUsIGZsYWdzLCBkb250X2luaGVyaXQsIG9wdGltaXplKTsKIAogZXhpdDoKQEAgLTE5NSw4ICsxOTksOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZGl2bW9kIiwKICAgICAgICAgMiwgMiwKLSAgICAgICAgJngsICZ5KSkKKyAgICAgICAgJngsICZ5KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5fZGl2bW9kX2ltcGwobW9kdWxlLCB4LCB5KTsKIAogZXhpdDoKQEAgLTIzMiw4ICsyMzcsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZXZhbCIsCiAgICAgICAgIDEsIDMsCi0gICAgICAgICZzb3VyY2UsICZnbG9iYWxzLCAmbG9jYWxzKSkKKyAgICAgICAgJnNvdXJjZSwgJmdsb2JhbHMsICZsb2NhbHMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9ldmFsX2ltcGwobW9kdWxlLCBzb3VyY2UsIGdsb2JhbHMsIGxvY2Fscyk7CiAKIGV4aXQ6CkBAIC0yNjksOCArMjc1LDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImV4ZWMiLAogICAgICAgICAxLCAzLAotICAgICAgICAmc291cmNlLCAmZ2xvYmFscywgJmxvY2FscykpCisgICAgICAgICZzb3VyY2UsICZnbG9iYWxzLCAmbG9jYWxzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5fZXhlY19pbXBsKG1vZHVsZSwgc291cmNlLCBnbG9iYWxzLCBsb2NhbHMpOwogCiBleGl0OgpAQCAtMzIxLDggKzMyOCw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJoYXNhdHRyIiwKICAgICAgICAgMiwgMiwKLSAgICAgICAgJm9iaiwgJm5hbWUpKQorICAgICAgICAmb2JqLCAmbmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX2hhc2F0dHJfaW1wbChtb2R1bGUsIG9iaiwgbmFtZSk7CiAKIGV4aXQ6CkBAIC0zNjYsOCArMzc0LDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInNldGF0dHIiLAogICAgICAgICAzLCAzLAotICAgICAgICAmb2JqLCAmbmFtZSwgJnZhbHVlKSkKKyAgICAgICAgJm9iaiwgJm5hbWUsICZ2YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX3NldGF0dHJfaW1wbChtb2R1bGUsIG9iaiwgbmFtZSwgdmFsdWUpOwogCiBleGl0OgpAQCAtMzk3LDggKzQwNiw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJkZWxhdHRyIiwKICAgICAgICAgMiwgMiwKLSAgICAgICAgJm9iaiwgJm5hbWUpKQorICAgICAgICAmb2JqLCAmbmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX2RlbGF0dHJfaW1wbChtb2R1bGUsIG9iaiwgbmFtZSk7CiAKIGV4aXQ6CkBAIC01MDYsOCArNTE2LDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInBvdyIsCiAgICAgICAgIDIsIDMsCi0gICAgICAgICZ4LCAmeSwgJnopKQorICAgICAgICAmeCwgJnksICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5fcG93X2ltcGwobW9kdWxlLCB4LCB5LCB6KTsKIAogZXhpdDoKQEAgLTU0MCw4ICs1NTEsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiaW5wdXQiLAogICAgICAgICAwLCAxLAotICAgICAgICAmcHJvbXB0KSkKKyAgICAgICAgJnByb21wdCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX2lucHV0X2ltcGwobW9kdWxlLCBwcm9tcHQpOwogCiBleGl0OgpAQCAtNTg0LDggKzU5Niw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzdW0iLAogICAgICAgICAxLCAyLAotICAgICAgICAmaXRlcmFibGUsICZzdGFydCkpCisgICAgICAgICZpdGVyYWJsZSwgJnN0YXJ0KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5fc3VtX2ltcGwobW9kdWxlLCBpdGVyYWJsZSwgc3RhcnQpOwogCiBleGl0OgpAQCAtNjE4LDggKzYzMSw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJpc2luc3RhbmNlIiwKICAgICAgICAgMiwgMiwKLSAgICAgICAgJm9iaiwgJmNsYXNzX29yX3R1cGxlKSkKKyAgICAgICAgJm9iaiwgJmNsYXNzX29yX3R1cGxlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5faXNpbnN0YW5jZV9pbXBsKG1vZHVsZSwgb2JqLCBjbGFzc19vcl90dXBsZSk7CiAKIGV4aXQ6CkBAIC02NTIsMTEgKzY2NiwxMiBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiaXNzdWJjbGFzcyIsCiAgICAgICAgIDIsIDIsCi0gICAgICAgICZjbHMsICZjbGFzc19vcl90dXBsZSkpCisgICAgICAgICZjbHMsICZjbGFzc19vcl90dXBsZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX2lzc3ViY2xhc3NfaW1wbChtb2R1bGUsIGNscywgY2xhc3Nfb3JfdHVwbGUpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTAzMTI3MGI2NGM3OTRiOCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjM0ODNkZWI3NTgwNWY3YyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9QeXRob24vY2xpbmljL2ltcG9ydC5jLmggYi9QeXRob24vY2xpbmljL2ltcG9ydC5jLmgKaW5kZXggMDVkNzlhYy4uYjM0NjBiMCAxMDA2NDQKLS0tIGEvUHl0aG9uL2NsaW5pYy9pbXBvcnQuYy5oCisrKyBiL1B5dGhvbi9jbGluaWMvaW1wb3J0LmMuaApAQCAtODksOCArODksOSBAQAogICAgIFB5T2JqZWN0ICpwYXRoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPIVU6X2ZpeF9jb19maWxlbmFtZSIsCi0gICAgICAgICZQeUNvZGVfVHlwZSwgJmNvZGUsICZwYXRoKSkKKyAgICAgICAgJlB5Q29kZV9UeXBlLCAmY29kZSwgJnBhdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2ltcF9fZml4X2NvX2ZpbGVuYW1lX2ltcGwobW9kdWxlLCBjb2RlLCBwYXRoKTsKIAogZXhpdDoKQEAgLTE0Miw4ICsxNDMsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpuYW1lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOmluaXRfZnJvemVuIiwgJm5hbWUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTppbml0X2Zyb3plbiIsICZuYW1lKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pbXBfaW5pdF9mcm96ZW5faW1wbChtb2R1bGUsIG5hbWUpOwogCiBleGl0OgpAQCAtMTY4LDggKzE3MCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKm5hbWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6Z2V0X2Zyb3plbl9vYmplY3QiLCAmbmFtZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOmdldF9mcm96ZW5fb2JqZWN0IiwgJm5hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2ltcF9nZXRfZnJvemVuX29iamVjdF9pbXBsKG1vZHVsZSwgbmFtZSk7CiAKIGV4aXQ6CkBAIC0xOTQsOCArMTk3LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeU9iamVjdCAqbmFtZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTppc19mcm96ZW5fcGFja2FnZSIsICZuYW1lKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6aXNfZnJvemVuX3BhY2thZ2UiLCAmbmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW1wX2lzX2Zyb3plbl9wYWNrYWdlX2ltcGwobW9kdWxlLCBuYW1lKTsKIAogZXhpdDoKQEAgLTIyMCw4ICsyMjQsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpuYW1lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOmlzX2J1aWx0aW4iLCAmbmFtZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOmlzX2J1aWx0aW4iLCAmbmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW1wX2lzX2J1aWx0aW5faW1wbChtb2R1bGUsIG5hbWUpOwogCiBleGl0OgpAQCAtMjQ2LDggKzI1MSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKm5hbWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6aXNfZnJvemVuIiwgJm5hbWUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTppc19mcm96ZW4iLCAmbmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW1wX2lzX2Zyb3plbl9pbXBsKG1vZHVsZSwgbmFtZSk7CiAKIGV4aXQ6CkBAIC0yNzcsOCArMjgzLDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImNyZWF0ZV9keW5hbWljIiwKICAgICAgICAgMSwgMiwKLSAgICAgICAgJnNwZWMsICZmaWxlKSkKKyAgICAgICAgJnNwZWMsICZmaWxlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pbXBfY3JlYXRlX2R5bmFtaWNfaW1wbChtb2R1bGUsIHNwZWMsIGZpbGUpOwogCiBleGl0OgpAQCAtMzA4LDggKzMxNSw5IEBACiAgICAgaW50IF9yZXR1cm5fdmFsdWU7CiAKICAgICBfcmV0dXJuX3ZhbHVlID0gX2ltcF9leGVjX2R5bmFtaWNfaW1wbChtb2R1bGUsIG1vZCk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTMzNyw4ICszNDUsOSBAQAogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCiAgICAgX3JldHVybl92YWx1ZSA9IF9pbXBfZXhlY19idWlsdGluX2ltcGwobW9kdWxlLCBtb2QpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0zNTIsNCArMzYxLDQgQEAKICNpZm5kZWYgX0lNUF9FWEVDX0RZTkFNSUNfTUVUSE9EREVGCiAgICAgI2RlZmluZSBfSU1QX0VYRUNfRFlOQU1JQ19NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChfSU1QX0VYRUNfRFlOQU1JQ19NRVRIT0RERUYpICovCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTBhZDZlNTgzM2U2MTcwZCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDI0ZDdmNzM3MDJhOTA3ZiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9QeXRob24vY29tcGlsZS5jIGIvUHl0aG9uL2NvbXBpbGUuYwppbmRleCBhZGMzM2FjLi4wZTE2MDc1IDEwMDY0NAotLS0gYS9QeXRob24vY29tcGlsZS5jCisrKyBiL1B5dGhvbi9jb21waWxlLmMKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJjb2RlLmgiCiAjaW5jbHVkZSAic3ltdGFibGUuaCIKICNpbmNsdWRlICJvcGNvZGUuaCIKKyNpbmNsdWRlICJ3b3JkY29kZV9oZWxwZXJzLmgiCiAKICNkZWZpbmUgREVGQVVMVF9CTE9DS19TSVpFIDE2CiAjZGVmaW5lIERFRkFVTFRfQkxPQ0tTIDgKQEAgLTQzLDcgKzQ0LDYgQEAKIHN0cnVjdCBpbnN0ciB7CiAgICAgdW5zaWduZWQgaV9qYWJzIDogMTsKICAgICB1bnNpZ25lZCBpX2pyZWwgOiAxOwotICAgIHVuc2lnbmVkIGlfaGFzYXJnIDogMTsKICAgICB1bnNpZ25lZCBjaGFyIGlfb3Bjb2RlOwogICAgIGludCBpX29wYXJnOwogICAgIHN0cnVjdCBiYXNpY2Jsb2NrXyAqaV90YXJnZXQ7IC8qIHRhcmdldCBibG9jayAoaWYganVtcCBpbnN0cnVjdGlvbikgKi8KQEAgLTE3MSw3ICsxNzEsNiBAQAogc3RhdGljIGludCBjb21waWxlcl9hZGRvcF9vKHN0cnVjdCBjb21waWxlciAqLCBpbnQsIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogc3RhdGljIGludCBjb21waWxlcl9hZGRvcF9pKHN0cnVjdCBjb21waWxlciAqLCBpbnQsIFB5X3NzaXplX3QpOwogc3RhdGljIGludCBjb21waWxlcl9hZGRvcF9qKHN0cnVjdCBjb21waWxlciAqLCBpbnQsIGJhc2ljYmxvY2sgKiwgaW50KTsKLXN0YXRpYyBiYXNpY2Jsb2NrICpjb21waWxlcl91c2VfbmV3X2Jsb2NrKHN0cnVjdCBjb21waWxlciAqKTsKIHN0YXRpYyBpbnQgY29tcGlsZXJfZXJyb3Ioc3RydWN0IGNvbXBpbGVyICosIGNvbnN0IGNoYXIgKik7CiBzdGF0aWMgaW50IGNvbXBpbGVyX25hbWVvcChzdHJ1Y3QgY29tcGlsZXIgKiwgaWRlbnRpZmllciwgZXhwcl9jb250ZXh0X3R5KTsKIApAQCAtMTgwLDYgKzE3OSw3IEBACiBzdGF0aWMgaW50IGNvbXBpbGVyX3Zpc2l0X2tleXdvcmQoc3RydWN0IGNvbXBpbGVyICosIGtleXdvcmRfdHkpOwogc3RhdGljIGludCBjb21waWxlcl92aXNpdF9leHByKHN0cnVjdCBjb21waWxlciAqLCBleHByX3R5KTsKIHN0YXRpYyBpbnQgY29tcGlsZXJfYXVnYXNzaWduKHN0cnVjdCBjb21waWxlciAqLCBzdG10X3R5KTsKK3N0YXRpYyBpbnQgY29tcGlsZXJfYW5uYXNzaWduKHN0cnVjdCBjb21waWxlciAqLCBzdG10X3R5KTsKIHN0YXRpYyBpbnQgY29tcGlsZXJfdmlzaXRfc2xpY2Uoc3RydWN0IGNvbXBpbGVyICosIHNsaWNlX3R5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByX2NvbnRleHRfdHkpOwogCkBAIC0xOTYsMTIgKzE5NiwyMiBAQAogc3RhdGljIGludCBjb21waWxlcl93aXRoKHN0cnVjdCBjb21waWxlciAqLCBzdG10X3R5LCBpbnQpOwogc3RhdGljIGludCBjb21waWxlcl9hc3luY193aXRoKHN0cnVjdCBjb21waWxlciAqLCBzdG10X3R5LCBpbnQpOwogc3RhdGljIGludCBjb21waWxlcl9hc3luY19mb3Ioc3RydWN0IGNvbXBpbGVyICosIHN0bXRfdHkpOwotc3RhdGljIGludCBjb21waWxlcl9jYWxsX2hlbHBlcihzdHJ1Y3QgY29tcGlsZXIgKmMsIFB5X3NzaXplX3QgbiwKK3N0YXRpYyBpbnQgY29tcGlsZXJfY2FsbF9oZWxwZXIoc3RydWN0IGNvbXBpbGVyICpjLCBpbnQgbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKmFyZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICprZXl3b3Jkcyk7CiBzdGF0aWMgaW50IGNvbXBpbGVyX3RyeV9leGNlcHQoc3RydWN0IGNvbXBpbGVyICosIHN0bXRfdHkpOwogc3RhdGljIGludCBjb21waWxlcl9zZXRfcXVhbG5hbWUoc3RydWN0IGNvbXBpbGVyICopOwogCitzdGF0aWMgaW50IGNvbXBpbGVyX3N5bmNfY29tcHJlaGVuc2lvbl9nZW5lcmF0b3IoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb21waWxlciAqYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKmdlbmVyYXRvcnMsIGludCBnZW5faW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdHkgZWx0LCBleHByX3R5IHZhbCwgaW50IHR5cGUpOworCitzdGF0aWMgaW50IGNvbXBpbGVyX2FzeW5jX2NvbXByZWhlbnNpb25fZ2VuZXJhdG9yKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY29tcGlsZXIgKmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICpnZW5lcmF0b3JzLCBpbnQgZ2VuX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByX3R5IGVsdCwgZXhwcl90eSB2YWwsIGludCB0eXBlKTsKKwogc3RhdGljIFB5Q29kZU9iamVjdCAqYXNzZW1ibGUoc3RydWN0IGNvbXBpbGVyICosIGludCBhZGROb25lKTsKIHN0YXRpYyBQeU9iamVjdCAqX19kb2NfXzsKIApAQCAtNDc3LDkgKzQ4Nyw5IEBACiB7CiAgICAgYmFzaWNibG9jayAqYmxvY2s7CiAgICAgZm9yIChibG9jayA9IHUtPnVfYmxvY2tzOyBibG9jayAhPSBOVUxMOyBibG9jayA9IGJsb2NrLT5iX2xpc3QpIHsKLSAgICAgICAgYXNzZXJ0KCh2b2lkICopYmxvY2sgIT0gKHZvaWQgKikweGNiY2JjYmNiKTsKLSAgICAgICAgYXNzZXJ0KCh2b2lkICopYmxvY2sgIT0gKHZvaWQgKikweGZiZmJmYmZiKTsKLSAgICAgICAgYXNzZXJ0KCh2b2lkICopYmxvY2sgIT0gKHZvaWQgKikweGRiZGJkYmRiKTsKKyAgICAgICAgYXNzZXJ0KCh1aW50cHRyX3QpYmxvY2sgIT0gMHhjYmNiY2JjYlUpOworICAgICAgICBhc3NlcnQoKHVpbnRwdHJfdClibG9jayAhPSAweGZiZmJmYmZiVSk7CisgICAgICAgIGFzc2VydCgodWludHB0cl90KWJsb2NrICE9IDB4ZGJkYmRiZGJVKTsKICAgICAgICAgaWYgKGJsb2NrLT5iX2luc3RyICE9IE5VTEwpIHsKICAgICAgICAgICAgIGFzc2VydChibG9jay0+Yl9pYWxsb2MgPiAwKTsKICAgICAgICAgICAgIGFzc2VydChibG9jay0+Yl9pdXNlZCA+IDApOwpAQCAtNTIzLDYgKzUzMyw3IEBACiAgICAgICAgICAgICAgICAgICAgICBpbnQgc2NvcGVfdHlwZSwgdm9pZCAqa2V5LCBpbnQgbGluZW5vKQogewogICAgIHN0cnVjdCBjb21waWxlcl91bml0ICp1OworICAgIGJhc2ljYmxvY2sgKmJsb2NrOwogCiAgICAgdSA9IChzdHJ1Y3QgY29tcGlsZXJfdW5pdCAqKVB5T2JqZWN0X01hbGxvYyhzaXplb2YoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb21waWxlcl91bml0KSk7CkBAIC02MjAsOCArNjMxLDExIEBACiAgICAgYy0+dSA9IHU7CiAKICAgICBjLT5jX25lc3RsZXZlbCsrOwotICAgIGlmIChjb21waWxlcl91c2VfbmV3X2Jsb2NrKGMpID09IE5VTEwpCisKKyAgICBibG9jayA9IGNvbXBpbGVyX25ld19ibG9jayhjKTsKKyAgICBpZiAoYmxvY2sgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIDA7CisgICAgYy0+dS0+dV9jdXJibG9jayA9IGJsb2NrOwogCiAgICAgaWYgKHUtPnVfc2NvcGVfdHlwZSAhPSBDT01QSUxFUl9TQ09QRV9NT0RVTEUpIHsKICAgICAgICAgaWYgKCFjb21waWxlcl9zZXRfcXVhbG5hbWUoYykpCkBAIC03MzEsNiArNzQ1LDcgQEAKICAgICByZXR1cm4gMTsKIH0KIAorCiAvKiBBbGxvY2F0ZSBhIG5ldyBibG9jayBhbmQgcmV0dXJuIGEgcG9pbnRlciB0byBpdC4KICAgIFJldHVybnMgTlVMTCBvbiBlcnJvci4KICovCkBAIC03NTUsMTYgKzc3MCw2IEBACiB9CiAKIHN0YXRpYyBiYXNpY2Jsb2NrICoKLWNvbXBpbGVyX3VzZV9uZXdfYmxvY2soc3RydWN0IGNvbXBpbGVyICpjKQotewotICAgIGJhc2ljYmxvY2sgKmJsb2NrID0gY29tcGlsZXJfbmV3X2Jsb2NrKGMpOwotICAgIGlmIChibG9jayA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBjLT51LT51X2N1cmJsb2NrID0gYmxvY2s7Ci0gICAgcmV0dXJuIGJsb2NrOwotfQotCi1zdGF0aWMgYmFzaWNibG9jayAqCiBjb21waWxlcl9uZXh0X2Jsb2NrKHN0cnVjdCBjb21waWxlciAqYykKIHsKICAgICBiYXNpY2Jsb2NrICpibG9jayA9IGNvbXBpbGVyX25ld19ibG9jayhjKTsKQEAgLTgxMCw3ICs4MTUsNyBAQAogICAgICAgICBvbGRzaXplID0gYi0+Yl9pYWxsb2MgKiBzaXplb2Yoc3RydWN0IGluc3RyKTsKICAgICAgICAgbmV3c2l6ZSA9IG9sZHNpemUgPDwgMTsKIAotICAgICAgICBpZiAob2xkc2l6ZSA+IChQWV9TSVpFX01BWCA+PiAxKSkgeworICAgICAgICBpZiAob2xkc2l6ZSA+IChTSVpFX01BWCA+PiAxKSkgewogICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQpAQCAtOTM5LDYgKzk0NCw4IEBACiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIGNhc2UgSU1QT1JUX1NUQVI6CiAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGNhc2UgU0VUVVBfQU5OT1RBVElPTlM6CisgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgY2FzZSBZSUVMRF9WQUxVRToKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBjYXNlIFlJRUxEX0ZST006CkBAIC05NzYsMTYgKzk4MywxOSBAQAogICAgICAgICBjYXNlIEJVSUxEX1RVUExFOgogICAgICAgICBjYXNlIEJVSUxEX0xJU1Q6CiAgICAgICAgIGNhc2UgQlVJTERfU0VUOgorICAgICAgICBjYXNlIEJVSUxEX1NUUklORzoKICAgICAgICAgICAgIHJldHVybiAxLW9wYXJnOwogICAgICAgICBjYXNlIEJVSUxEX0xJU1RfVU5QQUNLOgogICAgICAgICBjYXNlIEJVSUxEX1RVUExFX1VOUEFDSzoKKyAgICAgICAgY2FzZSBCVUlMRF9UVVBMRV9VTlBBQ0tfV0lUSF9DQUxMOgogICAgICAgICBjYXNlIEJVSUxEX1NFVF9VTlBBQ0s6CiAgICAgICAgIGNhc2UgQlVJTERfTUFQX1VOUEFDSzoKLSAgICAgICAgICAgIHJldHVybiAxIC0gb3Bhcmc7CiAgICAgICAgIGNhc2UgQlVJTERfTUFQX1VOUEFDS19XSVRIX0NBTEw6Ci0gICAgICAgICAgICByZXR1cm4gMSAtIChvcGFyZyAmIDB4RkYpOworICAgICAgICAgICAgcmV0dXJuIDEgLSBvcGFyZzsKICAgICAgICAgY2FzZSBCVUlMRF9NQVA6CiAgICAgICAgICAgICByZXR1cm4gMSAtIDIqb3Bhcmc7CisgICAgICAgIGNhc2UgQlVJTERfQ09OU1RfS0VZX01BUDoKKyAgICAgICAgICAgIHJldHVybiAtb3Bhcmc7CiAgICAgICAgIGNhc2UgTE9BRF9BVFRSOgogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGNhc2UgQ09NUEFSRV9PUDoKQEAgLTEwMjMsMjIgKzEwMzMsMjAgQEAKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgY2FzZSBERUxFVEVfRkFTVDoKICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBjYXNlIFNUT1JFX0FOTk9UQVRJT046CisgICAgICAgICAgICByZXR1cm4gLTE7CiAKICAgICAgICAgY2FzZSBSQUlTRV9WQVJBUkdTOgogICAgICAgICAgICAgcmV0dXJuIC1vcGFyZzsKLSNkZWZpbmUgTkFSR1MobykgKCgobykgJSAyNTYpICsgMiooKChvKSAvIDI1NikgJSAyNTYpKQogICAgICAgICBjYXNlIENBTExfRlVOQ1RJT046Ci0gICAgICAgICAgICByZXR1cm4gLU5BUkdTKG9wYXJnKTsKLSAgICAgICAgY2FzZSBDQUxMX0ZVTkNUSU9OX1ZBUjoKKyAgICAgICAgICAgIHJldHVybiAtb3Bhcmc7CiAgICAgICAgIGNhc2UgQ0FMTF9GVU5DVElPTl9LVzoKLSAgICAgICAgICAgIHJldHVybiAtTkFSR1Mob3BhcmcpLTE7Ci0gICAgICAgIGNhc2UgQ0FMTF9GVU5DVElPTl9WQVJfS1c6Ci0gICAgICAgICAgICByZXR1cm4gLU5BUkdTKG9wYXJnKS0yOworICAgICAgICAgICAgcmV0dXJuIC1vcGFyZy0xOworICAgICAgICBjYXNlIENBTExfRlVOQ1RJT05fRVg6CisgICAgICAgICAgICByZXR1cm4gLSAoKG9wYXJnICYgMHgwMSkgIT0gMCkgLSAoKG9wYXJnICYgMHgwMikgIT0gMCk7CiAgICAgICAgIGNhc2UgTUFLRV9GVU5DVElPTjoKLSAgICAgICAgICAgIHJldHVybiAtMSAtTkFSR1Mob3BhcmcpIC0gKChvcGFyZyA+PiAxNikgJiAweGZmZmYpOwotICAgICAgICBjYXNlIE1BS0VfQ0xPU1VSRToKLSAgICAgICAgICAgIHJldHVybiAtMiAtIE5BUkdTKG9wYXJnKSAtICgob3BhcmcgPj4gMTYpICYgMHhmZmZmKTsKLSN1bmRlZiBOQVJHUworICAgICAgICAgICAgcmV0dXJuIC0xIC0gKChvcGFyZyAmIDB4MDEpICE9IDApIC0gKChvcGFyZyAmIDB4MDIpICE9IDApIC0KKyAgICAgICAgICAgICAgICAoKG9wYXJnICYgMHgwNCkgIT0gMCkgLSAoKG9wYXJnICYgMHgwOCkgIT0gMCk7CiAgICAgICAgIGNhc2UgQlVJTERfU0xJQ0U6CiAgICAgICAgICAgICBpZiAob3BhcmcgPT0gMykKICAgICAgICAgICAgICAgICByZXR1cm4gLTI7CkBAIC0xMDY2LDYgKzEwNzQsMTAgQEAKICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICBjYXNlIEdFVF9ZSUVMRF9GUk9NX0lURVI6CiAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBGT1JNQVRfVkFMVUU6CisgICAgICAgICAgICAvKiBJZiB0aGVyZSdzIGEgZm10X3NwZWMgb24gdGhlIHN0YWNrLCB3ZSBnbyBmcm9tIDItPjEsCisgICAgICAgICAgICAgICBlbHNlIDEtPjEuICovCisgICAgICAgICAgICByZXR1cm4gKG9wYXJnICYgRlZTX01BU0spID09IEZWU19IQVZFX1NQRUMgPyAtMSA6IDA7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gUFlfSU5WQUxJRF9TVEFDS19FRkZFQ1Q7CiAgICAgfQpAQCAtMTA4MiwxMyArMTA5NCwxNCBAQAogICAgIGJhc2ljYmxvY2sgKmI7CiAgICAgc3RydWN0IGluc3RyICppOwogICAgIGludCBvZmY7CisgICAgYXNzZXJ0KCFIQVNfQVJHKG9wY29kZSkpOwogICAgIG9mZiA9IGNvbXBpbGVyX25leHRfaW5zdHIoYywgYy0+dS0+dV9jdXJibG9jayk7CiAgICAgaWYgKG9mZiA8IDApCiAgICAgICAgIHJldHVybiAwOwogICAgIGIgPSBjLT51LT51X2N1cmJsb2NrOwogICAgIGkgPSAmYi0+Yl9pbnN0cltvZmZdOwogICAgIGktPmlfb3Bjb2RlID0gb3Bjb2RlOwotICAgIGktPmlfaGFzYXJnID0gMDsKKyAgICBpLT5pX29wYXJnID0gMDsKICAgICBpZiAob3Bjb2RlID09IFJFVFVSTl9WQUxVRSkKICAgICAgICAgYi0+Yl9yZXR1cm4gPSAxOwogICAgIGNvbXBpbGVyX3NldF9saW5lbm8oYywgb2ZmKTsKQEAgLTExNjUsMTAgKzExNzgsMTUgQEAKICAgICBzdHJ1Y3QgaW5zdHIgKmk7CiAgICAgaW50IG9mZjsKIAotICAgIC8qIEludGVnZXIgYXJndW1lbnRzIGFyZSBsaW1pdCB0byAxNi1iaXQuIFRoZXJlIGlzIGFuIGV4dGVuc2lvbiBmb3IgMzItYml0Ci0gICAgICAgaW50ZWdlciBhcmd1bWVudHMuICovCi0gICAgYXNzZXJ0KCgtMjE0NzQ4MzY0Ny0xKSA8PSBvcGFyZyk7Ci0gICAgYXNzZXJ0KG9wYXJnIDw9IDIxNDc0ODM2NDcpOworICAgIC8qIG9wYXJnIHZhbHVlIGlzIHVuc2lnbmVkLCBidXQgYSBzaWduZWQgQyBpbnQgaXMgdXN1YWxseSB1c2VkIHRvIHN0b3JlCisgICAgICAgaXQgaW4gdGhlIEMgY29kZSAobGlrZSBQeXRob24vY2V2YWwuYykuCisKKyAgICAgICBMaW1pdCB0byAzMi1iaXQgc2lnbmVkIEMgaW50IChyYXRoZXIgdGhhbiBJTlRfTUFYKSBmb3IgcG9ydGFiaWxpdHkuCisKKyAgICAgICBUaGUgYXJndW1lbnQgb2YgYSBjb25jcmV0ZSBieXRlY29kZSBpbnN0cnVjdGlvbiBpcyBsaW1pdGVkIHRvIDgtYml0LgorICAgICAgIEVYVEVOREVEX0FSRyBpcyB1c2VkIGZvciAxNiwgMjQsIGFuZCAzMi1iaXQgYXJndW1lbnRzLiAqLworICAgIGFzc2VydChIQVNfQVJHKG9wY29kZSkpOworICAgIGFzc2VydCgwIDw9IG9wYXJnICYmIG9wYXJnIDw9IDIxNDc0ODM2NDcpOwogCiAgICAgb2ZmID0gY29tcGlsZXJfbmV4dF9pbnN0cihjLCBjLT51LT51X2N1cmJsb2NrKTsKICAgICBpZiAob2ZmIDwgMCkKQEAgLTExNzYsNyArMTE5NCw2IEBACiAgICAgaSA9ICZjLT51LT51X2N1cmJsb2NrLT5iX2luc3RyW29mZl07CiAgICAgaS0+aV9vcGNvZGUgPSBvcGNvZGU7CiAgICAgaS0+aV9vcGFyZyA9IFB5X1NBRkVfRE9XTkNBU1Qob3BhcmcsIFB5X3NzaXplX3QsIGludCk7Ci0gICAgaS0+aV9oYXNhcmcgPSAxOwogICAgIGNvbXBpbGVyX3NldF9saW5lbm8oYywgb2ZmKTsKICAgICByZXR1cm4gMTsKIH0KQEAgLTExODcsNiArMTIwNCw3IEBACiAgICAgc3RydWN0IGluc3RyICppOwogICAgIGludCBvZmY7CiAKKyAgICBhc3NlcnQoSEFTX0FSRyhvcGNvZGUpKTsKICAgICBhc3NlcnQoYiAhPSBOVUxMKTsKICAgICBvZmYgPSBjb21waWxlcl9uZXh0X2luc3RyKGMsIGMtPnUtPnVfY3VyYmxvY2spOwogICAgIGlmIChvZmYgPCAwKQpAQCAtMTE5NCw3ICsxMjEyLDYgQEAKICAgICBpID0gJmMtPnUtPnVfY3VyYmxvY2stPmJfaW5zdHJbb2ZmXTsKICAgICBpLT5pX29wY29kZSA9IG9wY29kZTsKICAgICBpLT5pX3RhcmdldCA9IGI7Ci0gICAgaS0+aV9oYXNhcmcgPSAxOwogICAgIGlmIChhYnNvbHV0ZSkKICAgICAgICAgaS0+aV9qYWJzID0gMTsKICAgICBlbHNlCkBAIC0xMjAzLDIyICsxMjIwLDEyIEBACiAgICAgcmV0dXJuIDE7CiB9CiAKLS8qIFRoZSBkaXN0aW5jdGlvbiBiZXR3ZWVuIE5FV19CTE9DSyBhbmQgTkVYVF9CTE9DSyBpcyBzdWJ0bGUuICAoSSdkCi0gICBsaWtlIHRvIGZpbmQgYmV0dGVyIG5hbWVzLikgIE5FV19CTE9DSygpIGNyZWF0ZXMgYSBuZXcgYmxvY2sgYW5kIHNldHMKLSAgIGl0IGFzIHRoZSBjdXJyZW50IGJsb2NrLiAgTkVYVF9CTE9DSygpIGFsc28gY3JlYXRlcyBhbiBpbXBsaWNpdCBqdW1wCi0gICBmcm9tIHRoZSBjdXJyZW50IGJsb2NrIHRvIHRoZSBuZXcgYmxvY2suCisvKiBORVhUX0JMT0NLKCkgY3JlYXRlcyBhbiBpbXBsaWNpdCBqdW1wIGZyb20gdGhlIGN1cnJlbnQgYmxvY2sKKyAgIHRvIHRoZSBuZXcgYmxvY2suCisKKyAgIFRoZSByZXR1cm5zIGluc2lkZSB0aGlzIG1hY3JvIG1ha2UgaXQgaW1wb3NzaWJsZSB0byBkZWNyZWYgb2JqZWN0cworICAgY3JlYXRlZCBpbiB0aGUgbG9jYWwgZnVuY3Rpb24uIExvY2FsIG9iamVjdHMgc2hvdWxkIHVzZSB0aGUgYXJlbmEuCiAqLwotCi0vKiBUaGUgcmV0dXJucyBpbnNpZGUgdGhlc2UgbWFjcm9zIG1ha2UgaXQgaW1wb3NzaWJsZSB0byBkZWNyZWYgb2JqZWN0cwotICAgY3JlYXRlZCBpbiB0aGUgbG9jYWwgZnVuY3Rpb24uICBMb2NhbCBvYmplY3RzIHNob3VsZCB1c2UgdGhlIGFyZW5hLgotKi8KLQotCi0jZGVmaW5lIE5FV19CTE9DSyhDKSB7IFwKLSAgICBpZiAoY29tcGlsZXJfdXNlX25ld19ibG9jaygoQykpID09IE5VTEwpIFwKLSAgICAgICAgcmV0dXJuIDA7IFwKLX0KLQogI2RlZmluZSBORVhUX0JMT0NLKEMpIHsgXAogICAgIGlmIChjb21waWxlcl9uZXh0X2Jsb2NrKChDKSkgPT0gTlVMTCkgXAogICAgICAgICByZXR1cm4gMDsgXApAQCAtMTI0MSw2ICsxMjQ4LDE1IEBACiAgICAgICAgIHJldHVybiAwOyBcCiB9CiAKKy8qIFNhbWUgYXMgQURET1BfTywgYnV0IHN0ZWFscyBhIHJlZmVyZW5jZS4gKi8KKyNkZWZpbmUgQURET1BfTihDLCBPUCwgTywgVFlQRSkgeyBcCisgICAgaWYgKCFjb21waWxlcl9hZGRvcF9vKChDKSwgKE9QKSwgKEMpLT51LT51XyAjIyBUWVBFLCAoTykpKSB7IFwKKyAgICAgICAgUHlfREVDUkVGKChPKSk7IFwKKyAgICAgICAgcmV0dXJuIDA7IFwKKyAgICB9IFwKKyAgICBQeV9ERUNSRUYoKE8pKTsgXAorfQorCiAjZGVmaW5lIEFERE9QX05BTUUoQywgT1AsIE8sIFRZUEUpIHsgXAogICAgIGlmICghY29tcGlsZXJfYWRkb3BfbmFtZSgoQyksIChPUCksIChDKS0+dS0+dV8gIyMgVFlQRSwgKE8pKSkgXAogICAgICAgICByZXR1cm4gMDsgXApAQCAtMTMwOSwxMCArMTMyNSwxMTAgQEAKIHsKICAgICBpZiAocy0+a2luZCAhPSBFeHByX2tpbmQpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBzLT52LkV4cHIudmFsdWUtPmtpbmQgPT0gU3RyX2tpbmQ7CisgICAgaWYgKHMtPnYuRXhwci52YWx1ZS0+a2luZCA9PSBTdHJfa2luZCkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgaWYgKHMtPnYuRXhwci52YWx1ZS0+a2luZCA9PSBDb25zdGFudF9raW5kKQorICAgICAgICByZXR1cm4gUHlVbmljb2RlX0NoZWNrRXhhY3Qocy0+di5FeHByLnZhbHVlLT52LkNvbnN0YW50LnZhbHVlKTsKKyAgICByZXR1cm4gMDsKIH0KIAotLyogQ29tcGlsZSBhIHNlcXVlbmNlIG9mIHN0YXRlbWVudHMsIGNoZWNraW5nIGZvciBhIGRvY3N0cmluZy4gKi8KK3N0YXRpYyBpbnQKK2lzX2NvbnN0KGV4cHJfdHkgZSkKK3sKKyAgICBzd2l0Y2ggKGUtPmtpbmQpIHsKKyAgICBjYXNlIENvbnN0YW50X2tpbmQ6CisgICAgY2FzZSBOdW1fa2luZDoKKyAgICBjYXNlIFN0cl9raW5kOgorICAgIGNhc2UgQnl0ZXNfa2luZDoKKyAgICBjYXNlIEVsbGlwc2lzX2tpbmQ6CisgICAgY2FzZSBOYW1lQ29uc3RhbnRfa2luZDoKKyAgICAgICAgcmV0dXJuIDE7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCitzdGF0aWMgUHlPYmplY3QgKgorZ2V0X2NvbnN0X3ZhbHVlKGV4cHJfdHkgZSkKK3sKKyAgICBzd2l0Y2ggKGUtPmtpbmQpIHsKKyAgICBjYXNlIENvbnN0YW50X2tpbmQ6CisgICAgICAgIHJldHVybiBlLT52LkNvbnN0YW50LnZhbHVlOworICAgIGNhc2UgTnVtX2tpbmQ6CisgICAgICAgIHJldHVybiBlLT52Lk51bS5uOworICAgIGNhc2UgU3RyX2tpbmQ6CisgICAgICAgIHJldHVybiBlLT52LlN0ci5zOworICAgIGNhc2UgQnl0ZXNfa2luZDoKKyAgICAgICAgcmV0dXJuIGUtPnYuQnl0ZXMuczsKKyAgICBjYXNlIEVsbGlwc2lzX2tpbmQ6CisgICAgICAgIHJldHVybiBQeV9FbGxpcHNpczsKKyAgICBjYXNlIE5hbWVDb25zdGFudF9raW5kOgorICAgICAgICByZXR1cm4gZS0+di5OYW1lQ29uc3RhbnQudmFsdWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYXNzZXJ0KCFpc19jb25zdChlKSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KK30KKworLyogU2VhcmNoIGlmIHZhcmlhYmxlIGFubm90YXRpb25zIGFyZSBwcmVzZW50IHN0YXRpY2FsbHkgaW4gYSBibG9jay4gKi8KKworc3RhdGljIGludAorZmluZF9hbm4oYXNkbF9zZXEgKnN0bXRzKQoreworICAgIGludCBpLCBqLCByZXMgPSAwOworICAgIHN0bXRfdHkgc3Q7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgYXNkbF9zZXFfTEVOKHN0bXRzKTsgaSsrKSB7CisgICAgICAgIHN0ID0gKHN0bXRfdHkpYXNkbF9zZXFfR0VUKHN0bXRzLCBpKTsKKyAgICAgICAgc3dpdGNoIChzdC0+a2luZCkgeworICAgICAgICBjYXNlIEFubkFzc2lnbl9raW5kOgorICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIGNhc2UgRm9yX2tpbmQ6CisgICAgICAgICAgICByZXMgPSBmaW5kX2FubihzdC0+di5Gb3IuYm9keSkgfHwKKyAgICAgICAgICAgICAgICAgIGZpbmRfYW5uKHN0LT52LkZvci5vcmVsc2UpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQXN5bmNGb3Jfa2luZDoKKyAgICAgICAgICAgIHJlcyA9IGZpbmRfYW5uKHN0LT52LkFzeW5jRm9yLmJvZHkpIHx8CisgICAgICAgICAgICAgICAgICBmaW5kX2FubihzdC0+di5Bc3luY0Zvci5vcmVsc2UpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV2hpbGVfa2luZDoKKyAgICAgICAgICAgIHJlcyA9IGZpbmRfYW5uKHN0LT52LldoaWxlLmJvZHkpIHx8CisgICAgICAgICAgICAgICAgICBmaW5kX2FubihzdC0+di5XaGlsZS5vcmVsc2UpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSWZfa2luZDoKKyAgICAgICAgICAgIHJlcyA9IGZpbmRfYW5uKHN0LT52LklmLmJvZHkpIHx8CisgICAgICAgICAgICAgICAgICBmaW5kX2FubihzdC0+di5JZi5vcmVsc2UpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV2l0aF9raW5kOgorICAgICAgICAgICAgcmVzID0gZmluZF9hbm4oc3QtPnYuV2l0aC5ib2R5KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFzeW5jV2l0aF9raW5kOgorICAgICAgICAgICAgcmVzID0gZmluZF9hbm4oc3QtPnYuQXN5bmNXaXRoLmJvZHkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVHJ5X2tpbmQ6CisgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgYXNkbF9zZXFfTEVOKHN0LT52LlRyeS5oYW5kbGVycyk7IGorKykgeworICAgICAgICAgICAgICAgIGV4Y2VwdGhhbmRsZXJfdHkgaGFuZGxlciA9IChleGNlcHRoYW5kbGVyX3R5KWFzZGxfc2VxX0dFVCgKKyAgICAgICAgICAgICAgICAgICAgc3QtPnYuVHJ5LmhhbmRsZXJzLCBqKTsKKyAgICAgICAgICAgICAgICBpZiAoZmluZF9hbm4oaGFuZGxlci0+di5FeGNlcHRIYW5kbGVyLmJvZHkpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJlcyA9IGZpbmRfYW5uKHN0LT52LlRyeS5ib2R5KSB8fAorICAgICAgICAgICAgICAgICAgZmluZF9hbm4oc3QtPnYuVHJ5LmZpbmFsYm9keSkgfHwKKyAgICAgICAgICAgICAgICAgIGZpbmRfYW5uKHN0LT52LlRyeS5vcmVsc2UpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXMgPSAwOworICAgICAgICB9CisgICAgICAgIGlmIChyZXMpIHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiByZXM7Cit9CisKKy8qIENvbXBpbGUgYSBzZXF1ZW5jZSBvZiBzdGF0ZW1lbnRzLCBjaGVja2luZyBmb3IgYSBkb2NzdHJpbmcKKyAgIGFuZCBmb3IgYW5ub3RhdGlvbnMuICovCiAKIHN0YXRpYyBpbnQKIGNvbXBpbGVyX2JvZHkoc3RydWN0IGNvbXBpbGVyICpjLCBhc2RsX3NlcSAqc3RtdHMpCkBAIC0xMzIwLDYgKzE0MzYsMTkgQEAKICAgICBpbnQgaSA9IDA7CiAgICAgc3RtdF90eSBzdDsKIAorICAgIC8qIFNldCBjdXJyZW50IGxpbmUgbnVtYmVyIHRvIHRoZSBsaW5lIG51bWJlciBvZiBmaXJzdCBzdGF0ZW1lbnQuCisgICAgICAgVGhpcyB3YXkgbGluZSBudW1iZXIgZm9yIFNFVFVQX0FOTk9UQVRJT05TIHdpbGwgYWx3YXlzCisgICAgICAgY29pbmNpZGUgd2l0aCB0aGUgbGluZSBudW1iZXIgb2YgZmlyc3QgInJlYWwiIHN0YXRlbWVudCBpbiBtb2R1bGUuCisgICAgICAgSWYgYm9keSBpcyBlbXB5LCB0aGVuIGxpbmVubyB3aWxsIGJlIHNldCBsYXRlciBpbiBhc3NlbWJsZS4gKi8KKyAgICBpZiAoYy0+dS0+dV9zY29wZV90eXBlID09IENPTVBJTEVSX1NDT1BFX01PRFVMRSAmJgorICAgICAgICAhYy0+dS0+dV9saW5lbm8gJiYgYXNkbF9zZXFfTEVOKHN0bXRzKSkgeworICAgICAgICBzdCA9IChzdG10X3R5KWFzZGxfc2VxX0dFVChzdG10cywgMCk7CisgICAgICAgIGMtPnUtPnVfbGluZW5vID0gc3QtPmxpbmVubzsKKyAgICB9CisgICAgLyogRXZlcnkgYW5ub3RhdGVkIGNsYXNzIGFuZCBtb2R1bGUgc2hvdWxkIGhhdmUgX19hbm5vdGF0aW9uc19fLiAqLworICAgIGlmIChmaW5kX2FubihzdG10cykpIHsKKyAgICAgICAgQURET1AoYywgU0VUVVBfQU5OT1RBVElPTlMpOworICAgIH0KICAgICBpZiAoIWFzZGxfc2VxX0xFTihzdG10cykpCiAgICAgICAgIHJldHVybiAxOwogICAgIHN0ID0gKHN0bXRfdHkpYXNkbF9zZXFfR0VUKHN0bXRzLCAwKTsKQEAgLTEzNTcsNiArMTQ4Niw5IEBACiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJbnRlcmFjdGl2ZV9raW5kOgorICAgICAgICBpZiAoZmluZF9hbm4obW9kLT52LkludGVyYWN0aXZlLmJvZHkpKSB7CisgICAgICAgICAgICBBRERPUChjLCBTRVRVUF9BTk5PVEFUSU9OUyk7CisgICAgICAgIH0KICAgICAgICAgYy0+Y19pbnRlcmFjdGl2ZSA9IDE7CiAgICAgICAgIFZJU0lUX1NFUV9JTl9TQ09QRShjLCBzdG10LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2QtPnYuSW50ZXJhY3RpdmUuYm9keSk7CkBAIC0xNDI2LDUzICsxNTU4LDUwIEBACiB9CiAKIHN0YXRpYyBpbnQKLWNvbXBpbGVyX21ha2VfY2xvc3VyZShzdHJ1Y3QgY29tcGlsZXIgKmMsIFB5Q29kZU9iamVjdCAqY28sIFB5X3NzaXplX3QgYXJncywgUHlPYmplY3QgKnF1YWxuYW1lKQorY29tcGlsZXJfbWFrZV9jbG9zdXJlKHN0cnVjdCBjb21waWxlciAqYywgUHlDb2RlT2JqZWN0ICpjbywgUHlfc3NpemVfdCBmbGFncywgUHlPYmplY3QgKnF1YWxuYW1lKQogewogICAgIFB5X3NzaXplX3QgaSwgZnJlZSA9IFB5Q29kZV9HZXROdW1GcmVlKGNvKTsKICAgICBpZiAocXVhbG5hbWUgPT0gTlVMTCkKICAgICAgICAgcXVhbG5hbWUgPSBjby0+Y29fbmFtZTsKIAotICAgIGlmIChmcmVlID09IDApIHsKLSAgICAgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCAoUHlPYmplY3QqKWNvLCBjb25zdHMpOwotICAgICAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIHF1YWxuYW1lLCBjb25zdHMpOwotICAgICAgICBBRERPUF9JKGMsIE1BS0VfRlVOQ1RJT04sIGFyZ3MpOwotICAgICAgICByZXR1cm4gMTsKLSAgICB9Ci0gICAgZm9yIChpID0gMDsgaSA8IGZyZWU7ICsraSkgewotICAgICAgICAvKiBCeXBhc3MgY29tX2FkZG9wX3Zhcm5hbWUgYmVjYXVzZSBpdCB3aWxsIGdlbmVyYXRlCi0gICAgICAgICAgIExPQURfREVSRUYgYnV0IExPQURfQ0xPU1VSRSBpcyBuZWVkZWQuCi0gICAgICAgICovCi0gICAgICAgIFB5T2JqZWN0ICpuYW1lID0gUHlUdXBsZV9HRVRfSVRFTShjby0+Y29fZnJlZXZhcnMsIGkpOwotICAgICAgICBpbnQgYXJnLCByZWZ0eXBlOworICAgIGlmIChmcmVlKSB7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBmcmVlOyArK2kpIHsKKyAgICAgICAgICAgIC8qIEJ5cGFzcyBjb21fYWRkb3BfdmFybmFtZSBiZWNhdXNlIGl0IHdpbGwgZ2VuZXJhdGUKKyAgICAgICAgICAgICAgIExPQURfREVSRUYgYnV0IExPQURfQ0xPU1VSRSBpcyBuZWVkZWQuCisgICAgICAgICAgICAqLworICAgICAgICAgICAgUHlPYmplY3QgKm5hbWUgPSBQeVR1cGxlX0dFVF9JVEVNKGNvLT5jb19mcmVldmFycywgaSk7CisgICAgICAgICAgICBpbnQgYXJnLCByZWZ0eXBlOwogCi0gICAgICAgIC8qIFNwZWNpYWwgY2FzZTogSWYgYSBjbGFzcyBjb250YWlucyBhIG1ldGhvZCB3aXRoIGEKLSAgICAgICAgICAgZnJlZSB2YXJpYWJsZSB0aGF0IGhhcyB0aGUgc2FtZSBuYW1lIGFzIGEgbWV0aG9kLAotICAgICAgICAgICB0aGUgbmFtZSB3aWxsIGJlIGNvbnNpZGVyZWQgZnJlZSAqYW5kKiBsb2NhbCBpbiB0aGUKLSAgICAgICAgICAgY2xhc3MuICBJdCBzaG91bGQgYmUgaGFuZGxlZCBieSB0aGUgY2xvc3VyZSwgYXMKLSAgICAgICAgICAgd2VsbCBhcyBieSB0aGUgbm9ybWFsIG5hbWUgbG9vb2t1cCBsb2dpYy4KLSAgICAgICAgKi8KLSAgICAgICAgcmVmdHlwZSA9IGdldF9yZWZfdHlwZShjLCBuYW1lKTsKLSAgICAgICAgaWYgKHJlZnR5cGUgPT0gQ0VMTCkKLSAgICAgICAgICAgIGFyZyA9IGNvbXBpbGVyX2xvb2t1cF9hcmcoYy0+dS0+dV9jZWxsdmFycywgbmFtZSk7Ci0gICAgICAgIGVsc2UgLyogKHJlZnR5cGUgPT0gRlJFRSkgKi8KLSAgICAgICAgICAgIGFyZyA9IGNvbXBpbGVyX2xvb2t1cF9hcmcoYy0+dS0+dV9mcmVldmFycywgbmFtZSk7Ci0gICAgICAgIGlmIChhcmcgPT0gLTEpIHsKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLAotICAgICAgICAgICAgICAgICJsb29rdXAgJXMgaW4gJXMgJWQgJWRcbiIKLSAgICAgICAgICAgICAgICAiZnJlZXZhcnMgb2YgJXM6ICVzXG4iLAotICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Bc1VURjgoUHlPYmplY3RfUmVwcihuYW1lKSksCi0gICAgICAgICAgICAgICAgUHlVbmljb2RlX0FzVVRGOChjLT51LT51X25hbWUpLAotICAgICAgICAgICAgICAgIHJlZnR5cGUsIGFyZywKLSAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQXNVVEY4KGNvLT5jb19uYW1lKSwKLSAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQXNVVEY4KFB5T2JqZWN0X1JlcHIoY28tPmNvX2ZyZWV2YXJzKSkpOwotICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiY29tcGlsZXJfbWFrZV9jbG9zdXJlKCkiKTsKKyAgICAgICAgICAgIC8qIFNwZWNpYWwgY2FzZTogSWYgYSBjbGFzcyBjb250YWlucyBhIG1ldGhvZCB3aXRoIGEKKyAgICAgICAgICAgICAgIGZyZWUgdmFyaWFibGUgdGhhdCBoYXMgdGhlIHNhbWUgbmFtZSBhcyBhIG1ldGhvZCwKKyAgICAgICAgICAgICAgIHRoZSBuYW1lIHdpbGwgYmUgY29uc2lkZXJlZCBmcmVlICphbmQqIGxvY2FsIGluIHRoZQorICAgICAgICAgICAgICAgY2xhc3MuICBJdCBzaG91bGQgYmUgaGFuZGxlZCBieSB0aGUgY2xvc3VyZSwgYXMKKyAgICAgICAgICAgICAgIHdlbGwgYXMgYnkgdGhlIG5vcm1hbCBuYW1lIGxvb29rdXAgbG9naWMuCisgICAgICAgICAgICAqLworICAgICAgICAgICAgcmVmdHlwZSA9IGdldF9yZWZfdHlwZShjLCBuYW1lKTsKKyAgICAgICAgICAgIGlmIChyZWZ0eXBlID09IENFTEwpCisgICAgICAgICAgICAgICAgYXJnID0gY29tcGlsZXJfbG9va3VwX2FyZyhjLT51LT51X2NlbGx2YXJzLCBuYW1lKTsKKyAgICAgICAgICAgIGVsc2UgLyogKHJlZnR5cGUgPT0gRlJFRSkgKi8KKyAgICAgICAgICAgICAgICBhcmcgPSBjb21waWxlcl9sb29rdXBfYXJnKGMtPnUtPnVfZnJlZXZhcnMsIG5hbWUpOworICAgICAgICAgICAgaWYgKGFyZyA9PSAtMSkgeworICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLAorICAgICAgICAgICAgICAgICAgICAibG9va3VwICVzIGluICVzICVkICVkXG4iCisgICAgICAgICAgICAgICAgICAgICJmcmVldmFycyBvZiAlczogJXNcbiIsCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Bc1VURjgoUHlPYmplY3RfUmVwcihuYW1lKSksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Bc1VURjgoYy0+dS0+dV9uYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgcmVmdHlwZSwgYXJnLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQXNVVEY4KGNvLT5jb19uYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0FzVVRGOChQeU9iamVjdF9SZXByKGNvLT5jb19mcmVldmFycykpKTsKKyAgICAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJjb21waWxlcl9tYWtlX2Nsb3N1cmUoKSIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQURET1BfSShjLCBMT0FEX0NMT1NVUkUsIGFyZyk7CiAgICAgICAgIH0KLSAgICAgICAgQURET1BfSShjLCBMT0FEX0NMT1NVUkUsIGFyZyk7CisgICAgICAgIGZsYWdzIHw9IDB4MDg7CisgICAgICAgIEFERE9QX0koYywgQlVJTERfVFVQTEUsIGZyZWUpOwogICAgIH0KLSAgICBBRERPUF9JKGMsIEJVSUxEX1RVUExFLCBmcmVlKTsKICAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIChQeU9iamVjdCopY28sIGNvbnN0cyk7CiAgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBxdWFsbmFtZSwgY29uc3RzKTsKLSAgICBBRERPUF9JKGMsIE1BS0VfQ0xPU1VSRSwgYXJncyk7CisgICAgQURET1BfSShjLCBNQUtFX0ZVTkNUSU9OLCBmbGFncyk7CiAgICAgcmV0dXJuIDE7CiB9CiAKQEAgLTE0OTQsMjYgKzE2MjMsNjAgQEAKIGNvbXBpbGVyX3Zpc2l0X2t3b25seWRlZmF1bHRzKHN0cnVjdCBjb21waWxlciAqYywgYXNkbF9zZXEgKmt3b25seWFyZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqa3dfZGVmYXVsdHMpCiB7Ci0gICAgLyogUmV0dXJuIHRoZSBudW1iZXIgb2YgZGVmYXVsdHMgKyAxLgotICAgICAgIFJldHVybnMgMCBvbiBlcnJvci4KLSAgICAgKi8KLSAgICBpbnQgaSwgZGVmYXVsdF9jb3VudCA9IDA7CisgICAgLyogUHVzaCBhIGRpY3Qgb2Yga2V5d29yZC1vbmx5IGRlZmF1bHQgdmFsdWVzLgorCisgICAgICAgUmV0dXJuIDAgb24gZXJyb3IsIC0xIGlmIG5vIGRpY3QgcHVzaGVkLCAxIGlmIGEgZGljdCBpcyBwdXNoZWQuCisgICAgICAgKi8KKyAgICBpbnQgaTsKKyAgICBQeU9iamVjdCAqa2V5cyA9IE5VTEw7CisKICAgICBmb3IgKGkgPSAwOyBpIDwgYXNkbF9zZXFfTEVOKGt3b25seWFyZ3MpOyBpKyspIHsKICAgICAgICAgYXJnX3R5IGFyZyA9IGFzZGxfc2VxX0dFVChrd29ubHlhcmdzLCBpKTsKICAgICAgICAgZXhwcl90eSBkZWZhdWx0XyA9IGFzZGxfc2VxX0dFVChrd19kZWZhdWx0cywgaSk7CiAgICAgICAgIGlmIChkZWZhdWx0XykgewogICAgICAgICAgICAgUHlPYmplY3QgKm1hbmdsZWQgPSBfUHlfTWFuZ2xlKGMtPnUtPnVfcHJpdmF0ZSwgYXJnLT5hcmcpOwotICAgICAgICAgICAgaWYgKCFtYW5nbGVkKQotICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBtYW5nbGVkLCBjb25zdHMpOwotICAgICAgICAgICAgUHlfREVDUkVGKG1hbmdsZWQpOwotICAgICAgICAgICAgaWYgKCFjb21waWxlcl92aXNpdF9leHByKGMsIGRlZmF1bHRfKSkgewotICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgaWYgKCFtYW5nbGVkKSB7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGRlZmF1bHRfY291bnQrKzsKKyAgICAgICAgICAgIGlmIChrZXlzID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBrZXlzID0gUHlMaXN0X05ldygxKTsKKyAgICAgICAgICAgICAgICBpZiAoa2V5cyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihtYW5nbGVkKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFB5TGlzdF9TRVRfSVRFTShrZXlzLCAwLCBtYW5nbGVkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGludCByZXMgPSBQeUxpc3RfQXBwZW5kKGtleXMsIG1hbmdsZWQpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihtYW5nbGVkKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzID09IC0xKSB7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFjb21waWxlcl92aXNpdF9leHByKGMsIGRlZmF1bHRfKSkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIGRlZmF1bHRfY291bnQgKyAxOworICAgIGlmIChrZXlzICE9IE5VTEwpIHsKKyAgICAgICAgUHlfc3NpemVfdCBkZWZhdWx0X2NvdW50ID0gUHlMaXN0X0dFVF9TSVpFKGtleXMpOworICAgICAgICBQeU9iamVjdCAqa2V5c190dXBsZSA9IFB5TGlzdF9Bc1R1cGxlKGtleXMpOworICAgICAgICBQeV9ERUNSRUYoa2V5cyk7CisgICAgICAgIGlmIChrZXlzX3R1cGxlID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIEFERE9QX04oYywgTE9BRF9DT05TVCwga2V5c190dXBsZSwgY29uc3RzKTsKKyAgICAgICAgQURET1BfSShjLCBCVUlMRF9DT05TVF9LRVlfTUFQLCBkZWZhdWx0X2NvdW50KTsKKyAgICAgICAgYXNzZXJ0KGRlZmF1bHRfY291bnQgPiAwKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCitlcnJvcjoKKyAgICBQeV9YREVDUkVGKGtleXMpOworICAgIHJldHVybiAwOwogfQogCiBzdGF0aWMgaW50CkBAIC0xNTU2LDExICsxNzE5LDEwIEBACiBjb21waWxlcl92aXNpdF9hbm5vdGF0aW9ucyhzdHJ1Y3QgY29tcGlsZXIgKmMsIGFyZ3VtZW50c190eSBhcmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcl90eSByZXR1cm5zKQogewotICAgIC8qIFB1c2ggYXJnIGFubm90YXRpb25zIGFuZCBhIGxpc3Qgb2YgdGhlIGFyZ3VtZW50IG5hbWVzLiBSZXR1cm4gdGhlICMKLSAgICAgICBvZiBpdGVtcyBwdXNoZWQgKyAxLiBUaGUgZXhwcmVzc2lvbnMgYXJlIGV2YWx1YXRlZCBvdXQtb2Ytb3JkZXIgd3J0IHRoZQotICAgICAgIHNvdXJjZSBjb2RlLgorICAgIC8qIFB1c2ggYXJnIGFubm90YXRpb24gZGljdC4KKyAgICAgICBUaGUgZXhwcmVzc2lvbnMgYXJlIGV2YWx1YXRlZCBvdXQtb2Ytb3JkZXIgd3J0IHRoZSBzb3VyY2UgY29kZS4KIAotICAgICAgIE1vcmUgdGhhbiAyXjE2LTEgYW5ub3RhdGlvbnMgaXMgYSBTeW50YXhFcnJvci4gUmV0dXJucyAwIG9uIGVycm9yLgorICAgICAgIFJldHVybiAwIG9uIGVycm9yLCAtMSBpZiBubyBkaWN0IHB1c2hlZCwgMSBpZiBhIGRpY3QgaXMgcHVzaGVkLgogICAgICAgICovCiAgICAgc3RhdGljIGlkZW50aWZpZXIgcmV0dXJuX3N0cjsKICAgICBQeU9iamVjdCAqbmFtZXM7CkBAIC0xNTkyLDMyICsxNzU0LDIwIEBACiAgICAgfQogCiAgICAgbGVuID0gUHlMaXN0X0dFVF9TSVpFKG5hbWVzKTsKLSAgICBpZiAobGVuID4gNjU1MzQpIHsKLSAgICAgICAgLyogbGVuIG11c3QgZml0IGluIDE2IGJpdHMsIGFuZCBsZW4gaXMgaW5jcmVtZW50ZWQgYmVsb3cgKi8KLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5bnRheEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInRvbyBtYW55IGFubm90YXRpb25zIik7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQogICAgIGlmIChsZW4pIHsKLSAgICAgICAgLyogY29udmVydCBuYW1lcyB0byBhIHR1cGxlIGFuZCBwbGFjZSBvbiBzdGFjayAqLwotICAgICAgICBQeU9iamVjdCAqZWx0OwotICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgIFB5T2JqZWN0ICpzID0gUHlUdXBsZV9OZXcobGVuKTsKLSAgICAgICAgaWYgKCFzKQotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgICAgICBlbHQgPSBQeUxpc3RfR0VUX0lURU0obmFtZXMsIGkpOwotICAgICAgICAgICAgUHlfSU5DUkVGKGVsdCk7Ci0gICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHMsIGksIGVsdCk7CisgICAgICAgIFB5T2JqZWN0ICprZXl0dXBsZSA9IFB5TGlzdF9Bc1R1cGxlKG5hbWVzKTsKKyAgICAgICAgUHlfREVDUkVGKG5hbWVzKTsKKyAgICAgICAgaWYgKGtleXR1cGxlID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9Ci0gICAgICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgcywgY29uc3RzKTsKLSAgICAgICAgUHlfREVDUkVGKHMpOwotICAgICAgICBsZW4rKzsgLyogaW5jbHVkZSB0aGUganVzdC1wdXNoZWQgdHVwbGUgKi8KKyAgICAgICAgQURET1BfTihjLCBMT0FEX0NPTlNULCBrZXl0dXBsZSwgY29uc3RzKTsKKyAgICAgICAgQURET1BfSShjLCBCVUlMRF9DT05TVF9LRVlfTUFQLCBsZW4pOworICAgICAgICByZXR1cm4gMTsKICAgICB9Ci0gICAgUHlfREVDUkVGKG5hbWVzKTsKLQotICAgIC8qIFdlIGp1c3QgY2hlY2tlZCB0aGF0IGxlbiA8PSA2NTUzNSwgc2VlIGFib3ZlICovCi0gICAgcmV0dXJuIFB5X1NBRkVfRE9XTkNBU1QobGVuICsgMSwgUHlfc3NpemVfdCwgaW50KTsKKyAgICBlbHNlIHsKKyAgICAgICAgUHlfREVDUkVGKG5hbWVzKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KIAogZXJyb3I6CiAgICAgUHlfREVDUkVGKG5hbWVzKTsKQEAgLTE2MjUsNiArMTc3NSwzNiBAQAogfQogCiBzdGF0aWMgaW50Citjb21waWxlcl92aXNpdF9kZWZhdWx0cyhzdHJ1Y3QgY29tcGlsZXIgKmMsIGFyZ3VtZW50c190eSBhcmdzKQoreworICAgIFZJU0lUX1NFUShjLCBleHByLCBhcmdzLT5kZWZhdWx0cyk7CisgICAgQURET1BfSShjLCBCVUlMRF9UVVBMRSwgYXNkbF9zZXFfTEVOKGFyZ3MtPmRlZmF1bHRzKSk7CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBQeV9zc2l6ZV90Citjb21waWxlcl9kZWZhdWx0X2FyZ3VtZW50cyhzdHJ1Y3QgY29tcGlsZXIgKmMsIGFyZ3VtZW50c190eSBhcmdzKQoreworICAgIFB5X3NzaXplX3QgZnVuY2ZsYWdzID0gMDsKKyAgICBpZiAoYXJncy0+ZGVmYXVsdHMgJiYgYXNkbF9zZXFfTEVOKGFyZ3MtPmRlZmF1bHRzKSA+IDApIHsKKyAgICAgICAgaWYgKCFjb21waWxlcl92aXNpdF9kZWZhdWx0cyhjLCBhcmdzKSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgZnVuY2ZsYWdzIHw9IDB4MDE7CisgICAgfQorICAgIGlmIChhcmdzLT5rd29ubHlhcmdzKSB7CisgICAgICAgIGludCByZXMgPSBjb21waWxlcl92aXNpdF9rd29ubHlkZWZhdWx0cyhjLCBhcmdzLT5rd29ubHlhcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy0+a3dfZGVmYXVsdHMpOworICAgICAgICBpZiAocmVzID09IDApIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChyZXMgPiAwKSB7CisgICAgICAgICAgICBmdW5jZmxhZ3MgfD0gMHgwMjsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZnVuY2ZsYWdzOworfQorCitzdGF0aWMgaW50CiBjb21waWxlcl9mdW5jdGlvbihzdHJ1Y3QgY29tcGlsZXIgKmMsIHN0bXRfdHkgcywgaW50IGlzX2FzeW5jKQogewogICAgIFB5Q29kZU9iamVjdCAqY287CkBAIC0xNjM1LDEyICsxODE1LDExIEBACiAgICAgYXNkbF9zZXEqIGRlY29zOwogICAgIGFzZGxfc2VxICpib2R5OwogICAgIHN0bXRfdHkgc3Q7Ci0gICAgUHlfc3NpemVfdCBpLCBuLCBhcmdsZW5ndGg7Ci0gICAgaW50IGRvY3N0cmluZywga3dfZGVmYXVsdF9jb3VudCA9IDA7Ci0gICAgaW50IG51bV9hbm5vdGF0aW9uczsKKyAgICBQeV9zc2l6ZV90IGksIG4sIGZ1bmNmbGFnczsKKyAgICBpbnQgZG9jc3RyaW5nOworICAgIGludCBhbm5vdGF0aW9uczsKICAgICBpbnQgc2NvcGVfdHlwZTsKIAotCiAgICAgaWYgKGlzX2FzeW5jKSB7CiAgICAgICAgIGFzc2VydChzLT5raW5kID09IEFzeW5jRnVuY3Rpb25EZWZfa2luZCk7CiAKQEAgLTE2NjUsMzAgKzE4NDQsMzIgQEAKIAogICAgIGlmICghY29tcGlsZXJfZGVjb3JhdG9ycyhjLCBkZWNvcykpCiAgICAgICAgIHJldHVybiAwOwotICAgIGlmIChhcmdzLT5kZWZhdWx0cykKLSAgICAgICAgVklTSVRfU0VRKGMsIGV4cHIsIGFyZ3MtPmRlZmF1bHRzKTsKLSAgICBpZiAoYXJncy0+a3dvbmx5YXJncykgewotICAgICAgICBpbnQgcmVzID0gY29tcGlsZXJfdmlzaXRfa3dvbmx5ZGVmYXVsdHMoYywgYXJncy0+a3dvbmx5YXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MtPmt3X2RlZmF1bHRzKTsKLSAgICAgICAgaWYgKHJlcyA9PSAwKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGt3X2RlZmF1bHRfY291bnQgPSByZXMgLSAxOwotICAgIH0KLSAgICBudW1fYW5ub3RhdGlvbnMgPSBjb21waWxlcl92aXNpdF9hbm5vdGF0aW9ucyhjLCBhcmdzLCByZXR1cm5zKTsKLSAgICBpZiAobnVtX2Fubm90YXRpb25zID09IDApCi0gICAgICAgIHJldHVybiAwOwotICAgIG51bV9hbm5vdGF0aW9ucy0tOwotICAgIGFzc2VydCgobnVtX2Fubm90YXRpb25zICYgMHhGRkZGKSA9PSBudW1fYW5ub3RhdGlvbnMpOwogCi0gICAgaWYgKCFjb21waWxlcl9lbnRlcl9zY29wZShjLCBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGVfdHlwZSwgKHZvaWQgKilzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+bGluZW5vKSkKKyAgICBmdW5jZmxhZ3MgPSBjb21waWxlcl9kZWZhdWx0X2FyZ3VtZW50cyhjLCBhcmdzKTsKKyAgICBpZiAoZnVuY2ZsYWdzID09IC0xKSB7CiAgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGFubm90YXRpb25zID0gY29tcGlsZXJfdmlzaXRfYW5ub3RhdGlvbnMoYywgYXJncywgcmV0dXJucyk7CisgICAgaWYgKGFubm90YXRpb25zID09IDApIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGVsc2UgaWYgKGFubm90YXRpb25zID4gMCkgeworICAgICAgICBmdW5jZmxhZ3MgfD0gMHgwNDsKKyAgICB9CisKKyAgICBpZiAoIWNvbXBpbGVyX2VudGVyX3Njb3BlKGMsIG5hbWUsIHNjb3BlX3R5cGUsICh2b2lkICopcywgcy0+bGluZW5vKSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAKICAgICBzdCA9IChzdG10X3R5KWFzZGxfc2VxX0dFVChib2R5LCAwKTsKICAgICBkb2NzdHJpbmcgPSBjb21waWxlcl9pc2RvY3N0cmluZyhzdCk7Ci0gICAgaWYgKGRvY3N0cmluZyAmJiBjLT5jX29wdGltaXplIDwgMikKLSAgICAgICAgZmlyc3RfY29uc3QgPSBzdC0+di5FeHByLnZhbHVlLT52LlN0ci5zOworICAgIGlmIChkb2NzdHJpbmcgJiYgYy0+Y19vcHRpbWl6ZSA8IDIpIHsKKyAgICAgICAgaWYgKHN0LT52LkV4cHIudmFsdWUtPmtpbmQgPT0gQ29uc3RhbnRfa2luZCkKKyAgICAgICAgICAgIGZpcnN0X2NvbnN0ID0gc3QtPnYuRXhwci52YWx1ZS0+di5Db25zdGFudC52YWx1ZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZmlyc3RfY29uc3QgPSBzdC0+di5FeHByLnZhbHVlLT52LlN0ci5zOworICAgIH0KICAgICBpZiAoY29tcGlsZXJfYWRkX28oYywgYy0+dS0+dV9jb25zdHMsIGZpcnN0X2NvbnN0KSA8IDApICAgICAgewogICAgICAgICBjb21waWxlcl9leGl0X3Njb3BlKGMpOwogICAgICAgICByZXR1cm4gMDsKQEAgLTE3MTIsMTIgKzE4OTMsNyBAQAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBhcmdsZW5ndGggPSBhc2RsX3NlcV9MRU4oYXJncy0+ZGVmYXVsdHMpOwotICAgIGFyZ2xlbmd0aCB8PSBrd19kZWZhdWx0X2NvdW50IDw8IDg7Ci0gICAgYXJnbGVuZ3RoIHw9IG51bV9hbm5vdGF0aW9ucyA8PCAxNjsKLSAgICBpZiAoaXNfYXN5bmMpCi0gICAgICAgIGNvLT5jb19mbGFncyB8PSBDT19DT1JPVVRJTkU7Ci0gICAgY29tcGlsZXJfbWFrZV9jbG9zdXJlKGMsIGNvLCBhcmdsZW5ndGgsIHF1YWxuYW1lKTsKKyAgICBjb21waWxlcl9tYWtlX2Nsb3N1cmUoYywgY28sIGZ1bmNmbGFncywgcXVhbG5hbWUpOwogICAgIFB5X0RFQ1JFRihxdWFsbmFtZSk7CiAgICAgUHlfREVDUkVGKGNvKTsKIApAQCAtMTc5MSw4ICsxOTY3LDkgQEAKICAgICAgICAgICAgIGNvbXBpbGVyX2V4aXRfc2NvcGUoYyk7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQorICAgICAgICAvKiBSZXR1cm4gX19jbGFzc2NlbGxfXyBpZiBpdCBpcyByZWZlcmVuY2VkLCBvdGhlcndpc2UgcmV0dXJuIE5vbmUgKi8KICAgICAgICAgaWYgKGMtPnUtPnVfc3RlLT5zdGVfbmVlZHNfY2xhc3NfY2xvc3VyZSkgewotICAgICAgICAgICAgLyogcmV0dXJuIHRoZSAoZW1wdHkpIF9fY2xhc3NfXyBjZWxsICovCisgICAgICAgICAgICAvKiBTdG9yZSBfX2NsYXNzY2VsbF9fIGludG8gY2xhc3MgbmFtZXNwYWNlICYgcmV0dXJuIGl0ICovCiAgICAgICAgICAgICBzdHIgPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygiX19jbGFzc19fIik7CiAgICAgICAgICAgICBpZiAoc3RyID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBjb21waWxlcl9leGl0X3Njb3BlKGMpOwpAQCAtMTgwNSwxMiArMTk4MiwyMCBAQAogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYXNzZXJ0KGkgPT0gMCk7Ci0gICAgICAgICAgICAvKiBSZXR1cm4gdGhlIGNlbGwgd2hlcmUgdG8gc3RvcmUgX19jbGFzc19fICovCisKICAgICAgICAgICAgIEFERE9QX0koYywgTE9BRF9DTE9TVVJFLCBpKTsKKyAgICAgICAgICAgIEFERE9QKGMsIERVUF9UT1ApOworICAgICAgICAgICAgc3RyID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoIl9fY2xhc3NjZWxsX18iKTsKKyAgICAgICAgICAgIGlmICghc3RyIHx8ICFjb21waWxlcl9uYW1lb3AoYywgc3RyLCBTdG9yZSkpIHsKKyAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHN0cik7CisgICAgICAgICAgICAgICAgY29tcGlsZXJfZXhpdF9zY29wZShjKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X0RFQ1JFRihzdHIpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLyogTm8gbWV0aG9kcyByZWZlcmVuY2VkIF9fY2xhc3NfXywgc28ganVzdCByZXR1cm4gTm9uZSAqLwogICAgICAgICAgICAgYXNzZXJ0KFB5RGljdF9TaXplKGMtPnUtPnVfY2VsbHZhcnMpID09IDApOwotICAgICAgICAgICAgLyogVGhpcyBoYXBwZW5zIHdoZW4gbm9ib2R5IHJlZmVyZW5jZXMgdGhlIGNlbGwuIFJldHVybiBOb25lLiAqLwogICAgICAgICAgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBQeV9Ob25lLCBjb25zdHMpOwogICAgICAgICB9CiAgICAgICAgIEFERE9QX0lOX1NDT1BFKGMsIFJFVFVSTl9WQUxVRSk7CkBAIC0xODc3LDggKzIwNjIsNyBAQAogICAgIFB5Q29kZU9iamVjdCAqY287CiAgICAgUHlPYmplY3QgKnF1YWxuYW1lOwogICAgIHN0YXRpYyBpZGVudGlmaWVyIG5hbWU7Ci0gICAgaW50IGt3X2RlZmF1bHRfY291bnQgPSAwOwotICAgIFB5X3NzaXplX3QgYXJnbGVuZ3RoOworICAgIFB5X3NzaXplX3QgZnVuY2ZsYWdzOwogICAgIGFyZ3VtZW50c190eSBhcmdzID0gZS0+di5MYW1iZGEuYXJnczsKICAgICBhc3NlcnQoZS0+a2luZCA9PSBMYW1iZGFfa2luZCk7CiAKQEAgLTE4ODgsMTQgKzIwNzIsMTEgQEAKICAgICAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGlmIChhcmdzLT5kZWZhdWx0cykKLSAgICAgICAgVklTSVRfU0VRKGMsIGV4cHIsIGFyZ3MtPmRlZmF1bHRzKTsKLSAgICBpZiAoYXJncy0+a3dvbmx5YXJncykgewotICAgICAgICBpbnQgcmVzID0gY29tcGlsZXJfdmlzaXRfa3dvbmx5ZGVmYXVsdHMoYywgYXJncy0+a3dvbmx5YXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MtPmt3X2RlZmF1bHRzKTsKLSAgICAgICAgaWYgKHJlcyA9PSAwKSByZXR1cm4gMDsKLSAgICAgICAga3dfZGVmYXVsdF9jb3VudCA9IHJlcyAtIDE7CisgICAgZnVuY2ZsYWdzID0gY29tcGlsZXJfZGVmYXVsdF9hcmd1bWVudHMoYywgYXJncyk7CisgICAgaWYgKGZ1bmNmbGFncyA9PSAtMSkgeworICAgICAgICByZXR1cm4gMDsKICAgICB9CisKICAgICBpZiAoIWNvbXBpbGVyX2VudGVyX3Njb3BlKGMsIG5hbWUsIENPTVBJTEVSX1NDT1BFX0xBTUJEQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopZSwgZS0+bGluZW5vKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xOTIxLDkgKzIxMDIsNyBAQAogICAgIGlmIChjbyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGFyZ2xlbmd0aCA9IGFzZGxfc2VxX0xFTihhcmdzLT5kZWZhdWx0cyk7Ci0gICAgYXJnbGVuZ3RoIHw9IGt3X2RlZmF1bHRfY291bnQgPDwgODsKLSAgICBjb21waWxlcl9tYWtlX2Nsb3N1cmUoYywgY28sIGFyZ2xlbmd0aCwgcXVhbG5hbWUpOworICAgIGNvbXBpbGVyX21ha2VfY2xvc3VyZShjLCBjbywgZnVuY2ZsYWdzLCBxdWFsbmFtZSk7CiAgICAgUHlfREVDUkVGKHF1YWxuYW1lKTsKICAgICBQeV9ERUNSRUYoY28pOwogCkBAIC0yMDAyLDE0ICsyMTgxLDE0IEBACiBzdGF0aWMgaW50CiBjb21waWxlcl9hc3luY19mb3Ioc3RydWN0IGNvbXBpbGVyICpjLCBzdG10X3R5IHMpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpzdG9waXRlcl9lcnJvciA9IE5VTEw7CisgICAgX1B5X0lERU5USUZJRVIoU3RvcEFzeW5jSXRlcmF0aW9uKTsKKwogICAgIGJhc2ljYmxvY2sgKnRyeSwgKmV4Y2VwdCwgKmVuZCwgKmFmdGVyX3RyeSwgKnRyeV9jbGVhbnVwLAogICAgICAgICAgICAgICAgKmFmdGVyX2xvb3AsICphZnRlcl9sb29wX2Vsc2U7CiAKLSAgICBpZiAoc3RvcGl0ZXJfZXJyb3IgPT0gTlVMTCkgewotICAgICAgICBzdG9waXRlcl9lcnJvciA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJTdG9wQXN5bmNJdGVyYXRpb24iKTsKLSAgICAgICAgaWYgKHN0b3BpdGVyX2Vycm9yID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICBQeU9iamVjdCAqc3RvcF9haXRlcl9lcnJvciA9IF9QeVVuaWNvZGVfRnJvbUlkKCZQeUlkX1N0b3BBc3luY0l0ZXJhdGlvbik7CisgICAgaWYgKHN0b3BfYWl0ZXJfZXJyb3IgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKICAgICB0cnkgPSBjb21waWxlcl9uZXdfYmxvY2soYyk7CkBAIC0yMDUxLDcgKzIyMzAsNyBAQAogCiAgICAgY29tcGlsZXJfdXNlX25leHRfYmxvY2soYywgZXhjZXB0KTsKICAgICBBRERPUChjLCBEVVBfVE9QKTsKLSAgICBBRERPUF9PKGMsIExPQURfR0xPQkFMLCBzdG9waXRlcl9lcnJvciwgbmFtZXMpOworICAgIEFERE9QX08oYywgTE9BRF9HTE9CQUwsIHN0b3BfYWl0ZXJfZXJyb3IsIG5hbWVzKTsKICAgICBBRERPUF9JKGMsIENPTVBBUkVfT1AsIFB5Q21wX0VYQ19NQVRDSCk7CiAgICAgQURET1BfSkFCUyhjLCBQT1BfSlVNUF9JRl9GQUxTRSwgdHJ5X2NsZWFudXApOwogCkBAIC0yNTk5LDYgKzI3NzgsMjUgQEAKIH0KIAogc3RhdGljIGludAorY29tcGlsZXJfdmlzaXRfc3RtdF9leHByKHN0cnVjdCBjb21waWxlciAqYywgZXhwcl90eSB2YWx1ZSkKK3sKKyAgICBpZiAoYy0+Y19pbnRlcmFjdGl2ZSAmJiBjLT5jX25lc3RsZXZlbCA8PSAxKSB7CisgICAgICAgIFZJU0lUKGMsIGV4cHIsIHZhbHVlKTsKKyAgICAgICAgQURET1AoYywgUFJJTlRfRVhQUik7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIGlmIChpc19jb25zdCh2YWx1ZSkpIHsKKyAgICAgICAgLyogaWdub3JlIGNvbnN0YW50IHN0YXRlbWVudCAqLworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICBWSVNJVChjLCBleHByLCB2YWx1ZSk7CisgICAgQURET1AoYywgUE9QX1RPUCk7CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQKIGNvbXBpbGVyX3Zpc2l0X3N0bXQoc3RydWN0IGNvbXBpbGVyICpjLCBzdG10X3R5IHMpCiB7CiAgICAgUHlfc3NpemVfdCBpLCBuOwpAQCAtMjYxNyw2ICsyODE1LDkgQEAKICAgICAgICAgaWYgKGMtPnUtPnVfc3RlLT5zdGVfdHlwZSAhPSBGdW5jdGlvbkJsb2NrKQogICAgICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2Vycm9yKGMsICIncmV0dXJuJyBvdXRzaWRlIGZ1bmN0aW9uIik7CiAgICAgICAgIGlmIChzLT52LlJldHVybi52YWx1ZSkgeworICAgICAgICAgICAgaWYgKGMtPnUtPnVfc3RlLT5zdGVfY29yb3V0aW5lICYmIGMtPnUtPnVfc3RlLT5zdGVfZ2VuZXJhdG9yKQorICAgICAgICAgICAgICAgIHJldHVybiBjb21waWxlcl9lcnJvcigKKyAgICAgICAgICAgICAgICAgICAgYywgIidyZXR1cm4nIHdpdGggdmFsdWUgaW4gYXN5bmMgZ2VuZXJhdG9yIik7CiAgICAgICAgICAgICBWSVNJVChjLCBleHByLCBzLT52LlJldHVybi52YWx1ZSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQpAQCAtMjYzOCw2ICsyODM5LDggQEAKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBdWdBc3NpZ25fa2luZDoKICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2F1Z2Fzc2lnbihjLCBzKTsKKyAgICBjYXNlIEFubkFzc2lnbl9raW5kOgorICAgICAgICByZXR1cm4gY29tcGlsZXJfYW5uYXNzaWduKGMsIHMpOwogICAgIGNhc2UgRm9yX2tpbmQ6CiAgICAgICAgIHJldHVybiBjb21waWxlcl9mb3IoYywgcyk7CiAgICAgY2FzZSBXaGlsZV9raW5kOgpAQCAtMjY2OCwxNiArMjg3MSw3IEBACiAgICAgY2FzZSBOb25sb2NhbF9raW5kOgogICAgICAgICBicmVhazsKICAgICBjYXNlIEV4cHJfa2luZDoKLSAgICAgICAgaWYgKGMtPmNfaW50ZXJhY3RpdmUgJiYgYy0+Y19uZXN0bGV2ZWwgPD0gMSkgewotICAgICAgICAgICAgVklTSVQoYywgZXhwciwgcy0+di5FeHByLnZhbHVlKTsKLSAgICAgICAgICAgIEFERE9QKGMsIFBSSU5UX0VYUFIpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKHMtPnYuRXhwci52YWx1ZS0+a2luZCAhPSBTdHJfa2luZCAmJgotICAgICAgICAgICAgICAgICBzLT52LkV4cHIudmFsdWUtPmtpbmQgIT0gTnVtX2tpbmQpIHsKLSAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIHMtPnYuRXhwci52YWx1ZSk7Ci0gICAgICAgICAgICBBRERPUChjLCBQT1BfVE9QKTsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIGNvbXBpbGVyX3Zpc2l0X3N0bXRfZXhwcihjLCBzLT52LkV4cHIudmFsdWUpOwogICAgIGNhc2UgUGFzc19raW5kOgogICAgICAgICBicmVhazsKICAgICBjYXNlIEJyZWFrX2tpbmQ6CkBAIC0zMDc5LDkgKzMyNzMsNTMgQEAKIH0KIAogc3RhdGljIGludAorYXJlX2FsbF9pdGVtc19jb25zdChhc2RsX3NlcSAqc2VxLCBQeV9zc2l6ZV90IGJlZ2luLCBQeV9zc2l6ZV90IGVuZCkKK3sKKyAgICBQeV9zc2l6ZV90IGk7CisgICAgZm9yIChpID0gYmVnaW47IGkgPCBlbmQ7IGkrKykgeworICAgICAgICBleHByX3R5IGtleSA9IChleHByX3R5KWFzZGxfc2VxX0dFVChzZXEsIGkpOworICAgICAgICBpZiAoa2V5ID09IE5VTEwgfHwgIWlzX2NvbnN0KGtleSkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQKK2NvbXBpbGVyX3N1YmRpY3Qoc3RydWN0IGNvbXBpbGVyICpjLCBleHByX3R5IGUsIFB5X3NzaXplX3QgYmVnaW4sIFB5X3NzaXplX3QgZW5kKQoreworICAgIFB5X3NzaXplX3QgaSwgbiA9IGVuZCAtIGJlZ2luOworICAgIFB5T2JqZWN0ICprZXlzLCAqa2V5OworICAgIGlmIChuID4gMSAmJiBhcmVfYWxsX2l0ZW1zX2NvbnN0KGUtPnYuRGljdC5rZXlzLCBiZWdpbiwgZW5kKSkgeworICAgICAgICBmb3IgKGkgPSBiZWdpbjsgaSA8IGVuZDsgaSsrKSB7CisgICAgICAgICAgICBWSVNJVChjLCBleHByLCAoZXhwcl90eSlhc2RsX3NlcV9HRVQoZS0+di5EaWN0LnZhbHVlcywgaSkpOworICAgICAgICB9CisgICAgICAgIGtleXMgPSBQeVR1cGxlX05ldyhuKTsKKyAgICAgICAgaWYgKGtleXMgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChpID0gYmVnaW47IGkgPCBlbmQ7IGkrKykgeworICAgICAgICAgICAga2V5ID0gZ2V0X2NvbnN0X3ZhbHVlKChleHByX3R5KWFzZGxfc2VxX0dFVChlLT52LkRpY3Qua2V5cywgaSkpOworICAgICAgICAgICAgUHlfSU5DUkVGKGtleSk7CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGtleXMsIGkgLSBiZWdpbiwga2V5KTsKKyAgICAgICAgfQorICAgICAgICBBRERPUF9OKGMsIExPQURfQ09OU1QsIGtleXMsIGNvbnN0cyk7CisgICAgICAgIEFERE9QX0koYywgQlVJTERfQ09OU1RfS0VZX01BUCwgbik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBmb3IgKGkgPSBiZWdpbjsgaSA8IGVuZDsgaSsrKSB7CisgICAgICAgICAgICBWSVNJVChjLCBleHByLCAoZXhwcl90eSlhc2RsX3NlcV9HRVQoZS0+di5EaWN0LmtleXMsIGkpKTsKKyAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIChleHByX3R5KWFzZGxfc2VxX0dFVChlLT52LkRpY3QudmFsdWVzLCBpKSk7CisgICAgICAgIH0KKyAgICAgICAgQURET1BfSShjLCBCVUlMRF9NQVAsIG4pOworICAgIH0KKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIGludAogY29tcGlsZXJfZGljdChzdHJ1Y3QgY29tcGlsZXIgKmMsIGV4cHJfdHkgZSkKIHsKLSAgICBQeV9zc2l6ZV90IGksIG4sIGNvbnRhaW5lcnMsIGVsZW1lbnRzOworICAgIFB5X3NzaXplX3QgaSwgbiwgZWxlbWVudHM7CisgICAgaW50IGNvbnRhaW5lcnM7CiAgICAgaW50IGlzX3VucGFja2luZyA9IDA7CiAgICAgbiA9IGFzZGxfc2VxX0xFTihlLT52LkRpY3QudmFsdWVzKTsKICAgICBjb250YWluZXJzID0gMDsKQEAgLTMwODksNyArMzMyNyw4IEBACiAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgICBpc191bnBhY2tpbmcgPSAoZXhwcl90eSlhc2RsX3NlcV9HRVQoZS0+di5EaWN0LmtleXMsIGkpID09IE5VTEw7CiAgICAgICAgIGlmIChlbGVtZW50cyA9PSAweEZGRkYgfHwgKGVsZW1lbnRzICYmIGlzX3VucGFja2luZykpIHsKLSAgICAgICAgICAgIEFERE9QX0koYywgQlVJTERfTUFQLCBlbGVtZW50cyk7CisgICAgICAgICAgICBpZiAoIWNvbXBpbGVyX3N1YmRpY3QoYywgZSwgaSAtIGVsZW1lbnRzLCBpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIGNvbnRhaW5lcnMrKzsKICAgICAgICAgICAgIGVsZW1lbnRzID0gMDsKICAgICAgICAgfQpAQCAtMzA5OCwxMyArMzMzNywxMiBAQAogICAgICAgICAgICAgY29udGFpbmVycysrOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgVklTSVQoYywgZXhwciwgKGV4cHJfdHkpYXNkbF9zZXFfR0VUKGUtPnYuRGljdC5rZXlzLCBpKSk7Ci0gICAgICAgICAgICBWSVNJVChjLCBleHByLCAoZXhwcl90eSlhc2RsX3NlcV9HRVQoZS0+di5EaWN0LnZhbHVlcywgaSkpOwogICAgICAgICAgICAgZWxlbWVudHMrKzsKICAgICAgICAgfQogICAgIH0KICAgICBpZiAoZWxlbWVudHMgfHwgY29udGFpbmVycyA9PSAwKSB7Ci0gICAgICAgIEFERE9QX0koYywgQlVJTERfTUFQLCBlbGVtZW50cyk7CisgICAgICAgIGlmICghY29tcGlsZXJfc3ViZGljdChjLCBlLCBuIC0gZWxlbWVudHMsIG4pKQorICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGNvbnRhaW5lcnMrKzsKICAgICB9CiAgICAgLyogSWYgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZSBkaWN0LCB0aGV5IG5lZWQgdG8gYmUgbWVyZ2VkIGludG8gYSBuZXcKQEAgLTMxNzMsMjggKzM0MTEsMTI1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUtPnYuQ2FsbC5rZXl3b3Jkcyk7CiB9CiAKK3N0YXRpYyBpbnQKK2NvbXBpbGVyX2pvaW5lZF9zdHIoc3RydWN0IGNvbXBpbGVyICpjLCBleHByX3R5IGUpCit7CisgICAgVklTSVRfU0VRKGMsIGV4cHIsIGUtPnYuSm9pbmVkU3RyLnZhbHVlcyk7CisgICAgaWYgKGFzZGxfc2VxX0xFTihlLT52LkpvaW5lZFN0ci52YWx1ZXMpICE9IDEpCisgICAgICAgIEFERE9QX0koYywgQlVJTERfU1RSSU5HLCBhc2RsX3NlcV9MRU4oZS0+di5Kb2luZWRTdHIudmFsdWVzKSk7CisgICAgcmV0dXJuIDE7Cit9CisKKy8qIFVzZWQgdG8gaW1wbGVtZW50IGYtc3RyaW5ncy4gRm9ybWF0IGEgc2luZ2xlIHZhbHVlLiAqLworc3RhdGljIGludAorY29tcGlsZXJfZm9ybWF0dGVkX3ZhbHVlKHN0cnVjdCBjb21waWxlciAqYywgZXhwcl90eSBlKQoreworICAgIC8qIE91ciBvcGFyZyBlbmNvZGVzIDIgcGllY2VzIG9mIGluZm9ybWF0aW9uOiB0aGUgY29udmVyc2lvbgorICAgICAgIGNoYXJhY3RlciwgYW5kIHdoZXRoZXIgb3Igbm90IGEgZm9ybWF0X3NwZWMgd2FzIHByb3ZpZGVkLgorCisgICAgICAgQ29udmVydCB0aGUgY29udmVyc2lvbiBjaGFyIHRvIDIgYml0czoKKyAgICAgICBOb25lOiAwMDAgIDB4MCAgRlZDX05PTkUKKyAgICAgICAhcyAgOiAwMDEgIDB4MSAgRlZDX1NUUgorICAgICAgICFyICA6IDAxMCAgMHgyICBGVkNfUkVQUgorICAgICAgICFhICA6IDAxMSAgMHgzICBGVkNfQVNDSUkKKworICAgICAgIG5leHQgYml0IGlzIHdoZXRoZXIgb3Igbm90IHdlIGhhdmUgYSBmb3JtYXQgc3BlYzoKKyAgICAgICB5ZXMgOiAxMDAgIDB4NAorICAgICAgIG5vICA6IDAwMCAgMHgwCisgICAgKi8KKworICAgIGludCBvcGFyZzsKKworICAgIC8qIEV2YWx1YXRlIHRoZSBleHByZXNzaW9uIHRvIGJlIGZvcm1hdHRlZC4gKi8KKyAgICBWSVNJVChjLCBleHByLCBlLT52LkZvcm1hdHRlZFZhbHVlLnZhbHVlKTsKKworICAgIHN3aXRjaCAoZS0+di5Gb3JtYXR0ZWRWYWx1ZS5jb252ZXJzaW9uKSB7CisgICAgY2FzZSAncyc6IG9wYXJnID0gRlZDX1NUUjsgICBicmVhazsKKyAgICBjYXNlICdyJzogb3BhcmcgPSBGVkNfUkVQUjsgIGJyZWFrOworICAgIGNhc2UgJ2EnOiBvcGFyZyA9IEZWQ19BU0NJSTsgYnJlYWs7CisgICAgY2FzZSAtMTogIG9wYXJnID0gRlZDX05PTkU7ICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiVW5yZWNvZ25pemVkIGNvbnZlcnNpb24gY2hhcmFjdGVyIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBpZiAoZS0+di5Gb3JtYXR0ZWRWYWx1ZS5mb3JtYXRfc3BlYykgeworICAgICAgICAvKiBFdmFsdWF0ZSB0aGUgZm9ybWF0IHNwZWMsIGFuZCB1cGRhdGUgb3VyIG9wY29kZSBhcmcuICovCisgICAgICAgIFZJU0lUKGMsIGV4cHIsIGUtPnYuRm9ybWF0dGVkVmFsdWUuZm9ybWF0X3NwZWMpOworICAgICAgICBvcGFyZyB8PSBGVlNfSEFWRV9TUEVDOworICAgIH0KKworICAgIC8qIEFuZCBwdXNoIG91ciBvcGNvZGUgYW5kIG9wYXJnICovCisgICAgQURET1BfSShjLCBGT1JNQVRfVkFMVUUsIG9wYXJnKTsKKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIGludAorY29tcGlsZXJfc3Via3dhcmdzKHN0cnVjdCBjb21waWxlciAqYywgYXNkbF9zZXEgKmtleXdvcmRzLCBQeV9zc2l6ZV90IGJlZ2luLCBQeV9zc2l6ZV90IGVuZCkKK3sKKyAgICBQeV9zc2l6ZV90IGksIG4gPSBlbmQgLSBiZWdpbjsKKyAgICBrZXl3b3JkX3R5IGt3OworICAgIFB5T2JqZWN0ICprZXlzLCAqa2V5OworICAgIGFzc2VydChuID4gMCk7CisgICAgaWYgKG4gPiAxKSB7CisgICAgICAgIGZvciAoaSA9IGJlZ2luOyBpIDwgZW5kOyBpKyspIHsKKyAgICAgICAgICAgIGt3ID0gYXNkbF9zZXFfR0VUKGtleXdvcmRzLCBpKTsKKyAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIGt3LT52YWx1ZSk7CisgICAgICAgIH0KKyAgICAgICAga2V5cyA9IFB5VHVwbGVfTmV3KG4pOworICAgICAgICBpZiAoa2V5cyA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGkgPSBiZWdpbjsgaSA8IGVuZDsgaSsrKSB7CisgICAgICAgICAgICBrZXkgPSAoKGtleXdvcmRfdHkpIGFzZGxfc2VxX0dFVChrZXl3b3JkcywgaSkpLT5hcmc7CisgICAgICAgICAgICBQeV9JTkNSRUYoa2V5KTsKKyAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oa2V5cywgaSAtIGJlZ2luLCBrZXkpOworICAgICAgICB9CisgICAgICAgIEFERE9QX04oYywgTE9BRF9DT05TVCwga2V5cywgY29uc3RzKTsKKyAgICAgICAgQURET1BfSShjLCBCVUlMRF9DT05TVF9LRVlfTUFQLCBuKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIGEgZm9yIGxvb3Agb25seSBleGVjdXRlcyBvbmNlICovCisgICAgICAgIGZvciAoaSA9IGJlZ2luOyBpIDwgZW5kOyBpKyspIHsKKyAgICAgICAgICAgIGt3ID0gYXNkbF9zZXFfR0VUKGtleXdvcmRzLCBpKTsKKyAgICAgICAgICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwga3ctPmFyZywgY29uc3RzKTsKKyAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIGt3LT52YWx1ZSk7CisgICAgICAgIH0KKyAgICAgICAgQURET1BfSShjLCBCVUlMRF9NQVAsIG4pOworICAgIH0KKyAgICByZXR1cm4gMTsKK30KKwogLyogc2hhcmVkIGNvZGUgYmV0d2VlbiBjb21waWxlcl9jYWxsIGFuZCBjb21waWxlcl9jbGFzcyAqLwogc3RhdGljIGludAogY29tcGlsZXJfY2FsbF9oZWxwZXIoc3RydWN0IGNvbXBpbGVyICpjLAotICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBuLCAvKiBBcmdzIGFscmVhZHkgcHVzaGVkICovCisgICAgICAgICAgICAgICAgICAgICBpbnQgbiwgLyogQXJncyBhbHJlYWR5IHB1c2hlZCAqLwogICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKmFyZ3MsCiAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqa2V5d29yZHMpCiB7Ci0gICAgaW50IGNvZGUgPSAwOwotICAgIFB5X3NzaXplX3QgbmVsdHMsIGksIG5zZWVuLCBua3c7CisgICAgUHlfc3NpemVfdCBpLCBuc2VlbiwgbmVsdHMsIG5rd2VsdHM7CisgICAgaW50IG11c3RkaWN0dW5wYWNrID0gMDsKIAogICAgIC8qIHRoZSBudW1iZXIgb2YgdHVwbGVzIGFuZCBkaWN0aW9uYXJpZXMgb24gdGhlIHN0YWNrICovCiAgICAgUHlfc3NpemVfdCBuc3ViYXJncyA9IDAsIG5zdWJrd2FyZ3MgPSAwOwogCi0gICAgbmt3ID0gMDsKLSAgICBuc2VlbiA9IDA7ICAvKiB0aGUgbnVtYmVyIG9mIHBvc2l0aW9uYWwgYXJndW1lbnRzIG9uIHRoZSBzdGFjayAqLwogICAgIG5lbHRzID0gYXNkbF9zZXFfTEVOKGFyZ3MpOworICAgIG5rd2VsdHMgPSBhc2RsX3NlcV9MRU4oa2V5d29yZHMpOworCisgICAgZm9yIChpID0gMDsgaSA8IG5rd2VsdHM7IGkrKykgeworICAgICAgICBrZXl3b3JkX3R5IGt3ID0gYXNkbF9zZXFfR0VUKGtleXdvcmRzLCBpKTsKKyAgICAgICAgaWYgKGt3LT5hcmcgPT0gTlVMTCkgeworICAgICAgICAgICAgbXVzdGRpY3R1bnBhY2sgPSAxOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBuc2VlbiA9IG47ICAvKiB0aGUgbnVtYmVyIG9mIHBvc2l0aW9uYWwgYXJndW1lbnRzIG9uIHRoZSBzdGFjayAqLwogICAgIGZvciAoaSA9IDA7IGkgPCBuZWx0czsgaSsrKSB7CiAgICAgICAgIGV4cHJfdHkgZWx0ID0gYXNkbF9zZXFfR0VUKGFyZ3MsIGkpOwogICAgICAgICBpZiAoZWx0LT5raW5kID09IFN0YXJyZWRfa2luZCkgewogICAgICAgICAgICAgLyogQSBzdGFyLWFyZy4gSWYgd2UndmUgc2VlbiBwb3NpdGlvbmFsIGFyZ3VtZW50cywKLSAgICAgICAgICAgICAgIHBhY2sgdGhlIHBvc2l0aW9uYWwgYXJndW1lbnRzIGludG8gYQotICAgICAgICAgICAgICAgdHVwbGUuICovCisgICAgICAgICAgICAgICBwYWNrIHRoZSBwb3NpdGlvbmFsIGFyZ3VtZW50cyBpbnRvIGEgdHVwbGUuICovCiAgICAgICAgICAgICBpZiAobnNlZW4pIHsKICAgICAgICAgICAgICAgICBBRERPUF9JKGMsIEJVSUxEX1RVUExFLCBuc2Vlbik7CiAgICAgICAgICAgICAgICAgbnNlZW4gPSAwOwpAQCAtMzIwMyw5MiArMzUzOCw3OCBAQAogICAgICAgICAgICAgVklTSVQoYywgZXhwciwgZWx0LT52LlN0YXJyZWQudmFsdWUpOwogICAgICAgICAgICAgbnN1YmFyZ3MrKzsKICAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChuc3ViYXJncykgewotICAgICAgICAgICAgLyogV2UndmUgc2VlbiBzdGFyLWFyZ3MgYWxyZWFkeSwgc28gd2UKLSAgICAgICAgICAgICAgIGNvdW50IHRvd2FyZHMgaXRlbXMtdG8tcGFjay1pbnRvLXR1cGxlLiAqLworICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIGVsdCk7CiAgICAgICAgICAgICBuc2VlbisrOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgLyogUG9zaXRpb25hbCBhcmd1bWVudHMgYmVmb3JlIHN0YXItYXJndW1lbnRzCi0gICAgICAgICAgICAgICBhcmUgbGVmdCBvbiB0aGUgc3RhY2suICovCi0gICAgICAgICAgICBWSVNJVChjLCBleHByLCBlbHQpOwotICAgICAgICAgICAgbisrOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmIChuc2VlbikgewotICAgICAgICAvKiBQYWNrIHVwIGFueSB0cmFpbGluZyBwb3NpdGlvbmFsIGFyZ3VtZW50cy4gKi8KLSAgICAgICAgQURET1BfSShjLCBCVUlMRF9UVVBMRSwgbnNlZW4pOwotICAgICAgICBuc3ViYXJncysrOwotICAgIH0KLSAgICBpZiAobnN1YmFyZ3MpIHsKLSAgICAgICAgY29kZSB8PSAxOwotICAgICAgICBpZiAobnN1YmFyZ3MgPiAxKSB7Ci0gICAgICAgICAgICAvKiBJZiB3ZSBlbmRlZCB1cCB3aXRoIG1vcmUgdGhhbiBvbmUgc3RhcmFyZywgd2UgbmVlZAotICAgICAgICAgICAgICAgdG8gY29uY2F0ZW5hdGUgdGhlbSBpbnRvIGEgc2luZ2xlIHNlcXVlbmNlLiAqLwotICAgICAgICAgICAgQURET1BfSShjLCBCVUlMRF9MSVNUX1VOUEFDSywgbnN1YmFyZ3MpOwotICAgICAgICB9CiAgICAgfQogCiAgICAgLyogU2FtZSBkYW5jZSBhZ2FpbiBmb3Iga2V5d29yZCBhcmd1bWVudHMgKi8KLSAgICBuc2VlbiA9IDA7ICAvKiB0aGUgbnVtYmVyIG9mIGtleXdvcmQgYXJndW1lbnRzIG9uIHRoZSBzdGFjayBmb2xsb3dpbmcgKi8KLSAgICBuZWx0cyA9IGFzZGxfc2VxX0xFTihrZXl3b3Jkcyk7Ci0gICAgZm9yIChpID0gMDsgaSA8IG5lbHRzOyBpKyspIHsKLSAgICAgICAga2V5d29yZF90eSBrdyA9IGFzZGxfc2VxX0dFVChrZXl3b3JkcywgaSk7Ci0gICAgICAgIGlmIChrdy0+YXJnID09IE5VTEwpIHsKLSAgICAgICAgICAgIC8qIEEga2V5d29yZCBhcmd1bWVudCB1bnBhY2tpbmcuICovCi0gICAgICAgICAgICBpZiAobnNlZW4pIHsKLSAgICAgICAgICAgICAgICBBRERPUF9JKGMsIEJVSUxEX01BUCwgbnNlZW4pOwotICAgICAgICAgICAgICAgIG5zZWVuID0gMDsKKyAgICBpZiAobnN1YmFyZ3MgfHwgbXVzdGRpY3R1bnBhY2spIHsKKyAgICAgICAgaWYgKG5zZWVuKSB7CisgICAgICAgICAgICAvKiBQYWNrIHVwIGFueSB0cmFpbGluZyBwb3NpdGlvbmFsIGFyZ3VtZW50cy4gKi8KKyAgICAgICAgICAgIEFERE9QX0koYywgQlVJTERfVFVQTEUsIG5zZWVuKTsKKyAgICAgICAgICAgIG5zdWJhcmdzKys7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5zdWJhcmdzID4gMSkgeworICAgICAgICAgICAgLyogSWYgd2UgZW5kZWQgdXAgd2l0aCBtb3JlIHRoYW4gb25lIHN0YXJhcmcsIHdlIG5lZWQKKyAgICAgICAgICAgICAgIHRvIGNvbmNhdGVuYXRlIHRoZW0gaW50byBhIHNpbmdsZSBzZXF1ZW5jZS4gKi8KKyAgICAgICAgICAgIEFERE9QX0koYywgQlVJTERfVFVQTEVfVU5QQUNLX1dJVEhfQ0FMTCwgbnN1YmFyZ3MpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKG5zdWJhcmdzID09IDApIHsKKyAgICAgICAgICAgIEFERE9QX0koYywgQlVJTERfVFVQTEUsIDApOworICAgICAgICB9CisgICAgICAgIG5zZWVuID0gMDsgIC8qIHRoZSBudW1iZXIgb2Yga2V5d29yZCBhcmd1bWVudHMgb24gdGhlIHN0YWNrIGZvbGxvd2luZyAqLworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbmt3ZWx0czsgaSsrKSB7CisgICAgICAgICAgICBrZXl3b3JkX3R5IGt3ID0gYXNkbF9zZXFfR0VUKGtleXdvcmRzLCBpKTsKKyAgICAgICAgICAgIGlmIChrdy0+YXJnID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAvKiBBIGtleXdvcmQgYXJndW1lbnQgdW5wYWNraW5nLiAqLworICAgICAgICAgICAgICAgIGlmIChuc2VlbikgeworICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbXBpbGVyX3N1Ymt3YXJncyhjLCBrZXl3b3JkcywgaSAtIG5zZWVuLCBpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgICAgICBuc3Via3dhcmdzKys7CisgICAgICAgICAgICAgICAgICAgIG5zZWVuID0gMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgVklTSVQoYywgZXhwciwga3ctPnZhbHVlKTsKICAgICAgICAgICAgICAgICBuc3Via3dhcmdzKys7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBWSVNJVChjLCBleHByLCBrdy0+dmFsdWUpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgbnNlZW4rKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAobnNlZW4pIHsKKyAgICAgICAgICAgIC8qIFBhY2sgdXAgYW55IHRyYWlsaW5nIGtleXdvcmQgYXJndW1lbnRzLiAqLworICAgICAgICAgICAgaWYgKCFjb21waWxlcl9zdWJrd2FyZ3MoYywga2V5d29yZHMsIG5rd2VsdHMgLSBuc2Vlbiwgbmt3ZWx0cykpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICBuc3Via3dhcmdzKys7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAobnN1Ymt3YXJncykgewotICAgICAgICAgICAgLyogQSBrZXl3b3JkIGFyZ3VtZW50IGFuZCB3ZSBhbHJlYWR5IGhhdmUgYSBkaWN0LiAqLwotICAgICAgICAgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBrdy0+YXJnLCBjb25zdHMpOwotICAgICAgICAgICAgVklTSVQoYywgZXhwciwga3ctPnZhbHVlKTsKLSAgICAgICAgICAgIG5zZWVuKys7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAvKiBrZXl3b3JkIGFyZ3VtZW50ICovCi0gICAgICAgICAgICBWSVNJVChjLCBrZXl3b3JkLCBrdykKLSAgICAgICAgICAgIG5rdysrOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmIChuc2VlbikgewotICAgICAgICAvKiBQYWNrIHVwIGFueSB0cmFpbGluZyBrZXl3b3JkIGFyZ3VtZW50cy4gKi8KLSAgICAgICAgQURET1BfSShjLCBCVUlMRF9NQVAsIG5zZWVuKTsKLSAgICAgICAgbnN1Ymt3YXJncysrOwotICAgIH0KLSAgICBpZiAobnN1Ymt3YXJncykgewotICAgICAgICBjb2RlIHw9IDI7CiAgICAgICAgIGlmIChuc3Via3dhcmdzID4gMSkgewogICAgICAgICAgICAgLyogUGFjayBpdCBhbGwgdXAgKi8KLSAgICAgICAgICAgIGludCBmdW5jdGlvbl9wb3MgPSBuICsgKGNvZGUgJiAxKSArIDIgKiBua3cgKyAxOwotICAgICAgICAgICAgQURET1BfSShjLCBCVUlMRF9NQVBfVU5QQUNLX1dJVEhfQ0FMTCwgbnN1Ymt3YXJncyB8IChmdW5jdGlvbl9wb3MgPDwgOCkpOworICAgICAgICAgICAgQURET1BfSShjLCBCVUlMRF9NQVBfVU5QQUNLX1dJVEhfQ0FMTCwgbnN1Ymt3YXJncyk7CiAgICAgICAgIH0KKyAgICAgICAgQURET1BfSShjLCBDQUxMX0ZVTkNUSU9OX0VYLCBuc3Via3dhcmdzID4gMCk7CisgICAgICAgIHJldHVybiAxOwogICAgIH0KLSAgICBhc3NlcnQobiA8IDE8PDgpOwotICAgIGFzc2VydChua3cgPCAxPDwyNCk7Ci0gICAgbiB8PSBua3cgPDwgODsKLQotICAgIHN3aXRjaCAoY29kZSkgewotICAgIGNhc2UgMDoKLSAgICAgICAgQURET1BfSShjLCBDQUxMX0ZVTkNUSU9OLCBuKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAxOgotICAgICAgICBBRERPUF9JKGMsIENBTExfRlVOQ1RJT05fVkFSLCBuKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAyOgotICAgICAgICBBRERPUF9JKGMsIENBTExfRlVOQ1RJT05fS1csIG4pOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIDM6Ci0gICAgICAgIEFERE9QX0koYywgQ0FMTF9GVU5DVElPTl9WQVJfS1csIG4pOwotICAgICAgICBicmVhazsKKyAgICBlbHNlIGlmIChua3dlbHRzKSB7CisgICAgICAgIFB5T2JqZWN0ICpuYW1lczsKKyAgICAgICAgVklTSVRfU0VRKGMsIGtleXdvcmQsIGtleXdvcmRzKTsKKyAgICAgICAgbmFtZXMgPSBQeVR1cGxlX05ldyhua3dlbHRzKTsKKyAgICAgICAgaWYgKG5hbWVzID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBua3dlbHRzOyBpKyspIHsKKyAgICAgICAgICAgIGtleXdvcmRfdHkga3cgPSBhc2RsX3NlcV9HRVQoa2V5d29yZHMsIGkpOworICAgICAgICAgICAgUHlfSU5DUkVGKGt3LT5hcmcpOworICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShuYW1lcywgaSwga3ctPmFyZyk7CisgICAgICAgIH0KKyAgICAgICAgQURET1BfTihjLCBMT0FEX0NPTlNULCBuYW1lcywgY29uc3RzKTsKKyAgICAgICAgQURET1BfSShjLCBDQUxMX0ZVTkNUSU9OX0tXLCBuICsgbmVsdHMgKyBua3dlbHRzKTsKKyAgICAgICAgcmV0dXJuIDE7CiAgICAgfQotICAgIHJldHVybiAxOworICAgIGVsc2UgeworICAgICAgICBBRERPUF9JKGMsIENBTExfRlVOQ1RJT04sIG4gKyBuZWx0cyk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KIH0KIAogCkBAIC0zMzA3LDExICszNjI4LDI4IEBACiAgICAgLSBpdGVyYXRlIG92ZXIgdGhlIGdlbmVyYXRvciBzZXF1ZW5jZSBpbnN0ZWFkIG9mIHVzaW5nIHJlY3Vyc2lvbgogKi8KIAorCiBzdGF0aWMgaW50CiBjb21waWxlcl9jb21wcmVoZW5zaW9uX2dlbmVyYXRvcihzdHJ1Y3QgY29tcGlsZXIgKmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqZ2VuZXJhdG9ycywgaW50IGdlbl9pbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdHkgZWx0LCBleHByX3R5IHZhbCwgaW50IHR5cGUpCiB7CisgICAgY29tcHJlaGVuc2lvbl90eSBnZW47CisgICAgZ2VuID0gKGNvbXByZWhlbnNpb25fdHkpYXNkbF9zZXFfR0VUKGdlbmVyYXRvcnMsIGdlbl9pbmRleCk7CisgICAgaWYgKGdlbi0+aXNfYXN5bmMpIHsKKyAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2FzeW5jX2NvbXByZWhlbnNpb25fZ2VuZXJhdG9yKAorICAgICAgICAgICAgYywgZ2VuZXJhdG9ycywgZ2VuX2luZGV4LCBlbHQsIHZhbCwgdHlwZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIGNvbXBpbGVyX3N5bmNfY29tcHJlaGVuc2lvbl9nZW5lcmF0b3IoCisgICAgICAgICAgICBjLCBnZW5lcmF0b3JzLCBnZW5faW5kZXgsIGVsdCwgdmFsLCB0eXBlKTsKKyAgICB9Cit9CisKK3N0YXRpYyBpbnQKK2NvbXBpbGVyX3N5bmNfY29tcHJlaGVuc2lvbl9nZW5lcmF0b3Ioc3RydWN0IGNvbXBpbGVyICpjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqZ2VuZXJhdG9ycywgaW50IGdlbl9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcl90eSBlbHQsIGV4cHJfdHkgdmFsLCBpbnQgdHlwZSkKK3sKICAgICAvKiBnZW5lcmF0ZSBjb2RlIGZvciB0aGUgaXRlcmF0b3IsIHRoZW4gZWFjaCBvZiB0aGUgaWZzLAogICAgICAgIGFuZCB0aGVuIHdyaXRlIHRvIHRoZSBlbGVtZW50ICovCiAKQEAgLTMzOTgsMjAgKzM3MzYsMTY3IEBACiB9CiAKIHN0YXRpYyBpbnQKK2NvbXBpbGVyX2FzeW5jX2NvbXByZWhlbnNpb25fZ2VuZXJhdG9yKHN0cnVjdCBjb21waWxlciAqYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKmdlbmVyYXRvcnMsIGludCBnZW5faW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdHkgZWx0LCBleHByX3R5IHZhbCwgaW50IHR5cGUpCit7CisgICAgX1B5X0lERU5USUZJRVIoU3RvcEFzeW5jSXRlcmF0aW9uKTsKKworICAgIGNvbXByZWhlbnNpb25fdHkgZ2VuOworICAgIGJhc2ljYmxvY2sgKmFuY2hvciwgKnNraXAsICppZl9jbGVhbnVwLCAqdHJ5LAorICAgICAgICAgICAgICAgKmFmdGVyX3RyeSwgKmV4Y2VwdCwgKnRyeV9jbGVhbnVwOworICAgIFB5X3NzaXplX3QgaSwgbjsKKworICAgIFB5T2JqZWN0ICpzdG9wX2FpdGVyX2Vycm9yID0gX1B5VW5pY29kZV9Gcm9tSWQoJlB5SWRfU3RvcEFzeW5jSXRlcmF0aW9uKTsKKyAgICBpZiAoc3RvcF9haXRlcl9lcnJvciA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHRyeSA9IGNvbXBpbGVyX25ld19ibG9jayhjKTsKKyAgICBhZnRlcl90cnkgPSBjb21waWxlcl9uZXdfYmxvY2soYyk7CisgICAgdHJ5X2NsZWFudXAgPSBjb21waWxlcl9uZXdfYmxvY2soYyk7CisgICAgZXhjZXB0ID0gY29tcGlsZXJfbmV3X2Jsb2NrKGMpOworICAgIHNraXAgPSBjb21waWxlcl9uZXdfYmxvY2soYyk7CisgICAgaWZfY2xlYW51cCA9IGNvbXBpbGVyX25ld19ibG9jayhjKTsKKyAgICBhbmNob3IgPSBjb21waWxlcl9uZXdfYmxvY2soYyk7CisKKyAgICBpZiAoc2tpcCA9PSBOVUxMIHx8IGlmX2NsZWFudXAgPT0gTlVMTCB8fCBhbmNob3IgPT0gTlVMTCB8fAorICAgICAgICAgICAgdHJ5ID09IE5VTEwgfHwgYWZ0ZXJfdHJ5ID09IE5VTEwgfHwKKyAgICAgICAgICAgIGV4Y2VwdCA9PSBOVUxMIHx8IGFmdGVyX3RyeSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGdlbiA9IChjb21wcmVoZW5zaW9uX3R5KWFzZGxfc2VxX0dFVChnZW5lcmF0b3JzLCBnZW5faW5kZXgpOworCisgICAgaWYgKGdlbl9pbmRleCA9PSAwKSB7CisgICAgICAgIC8qIFJlY2VpdmUgb3V0ZXJtb3N0IGl0ZXIgYXMgYW4gaW1wbGljaXQgYXJndW1lbnQgKi8KKyAgICAgICAgYy0+dS0+dV9hcmdjb3VudCA9IDE7CisgICAgICAgIEFERE9QX0koYywgTE9BRF9GQVNULCAwKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIFN1Yi1pdGVyIC0gY2FsY3VsYXRlIG9uIHRoZSBmbHkgKi8KKyAgICAgICAgVklTSVQoYywgZXhwciwgZ2VuLT5pdGVyKTsKKyAgICAgICAgQURET1AoYywgR0VUX0FJVEVSKTsKKyAgICAgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBQeV9Ob25lLCBjb25zdHMpOworICAgICAgICBBRERPUChjLCBZSUVMRF9GUk9NKTsKKyAgICB9CisKKyAgICBjb21waWxlcl91c2VfbmV4dF9ibG9jayhjLCB0cnkpOworCisKKyAgICBBRERPUF9KUkVMKGMsIFNFVFVQX0VYQ0VQVCwgZXhjZXB0KTsKKyAgICBpZiAoIWNvbXBpbGVyX3B1c2hfZmJsb2NrKGMsIEVYQ0VQVCwgdHJ5KSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBBRERPUChjLCBHRVRfQU5FWFQpOworICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgUHlfTm9uZSwgY29uc3RzKTsKKyAgICBBRERPUChjLCBZSUVMRF9GUk9NKTsKKyAgICBWSVNJVChjLCBleHByLCBnZW4tPnRhcmdldCk7CisgICAgQURET1AoYywgUE9QX0JMT0NLKTsKKyAgICBjb21waWxlcl9wb3BfZmJsb2NrKGMsIEVYQ0VQVCwgdHJ5KTsKKyAgICBBRERPUF9KUkVMKGMsIEpVTVBfRk9SV0FSRCwgYWZ0ZXJfdHJ5KTsKKworCisgICAgY29tcGlsZXJfdXNlX25leHRfYmxvY2soYywgZXhjZXB0KTsKKyAgICBBRERPUChjLCBEVVBfVE9QKTsKKyAgICBBRERPUF9PKGMsIExPQURfR0xPQkFMLCBzdG9wX2FpdGVyX2Vycm9yLCBuYW1lcyk7CisgICAgQURET1BfSShjLCBDT01QQVJFX09QLCBQeUNtcF9FWENfTUFUQ0gpOworICAgIEFERE9QX0pBQlMoYywgUE9QX0pVTVBfSUZfRkFMU0UsIHRyeV9jbGVhbnVwKTsKKworICAgIEFERE9QKGMsIFBPUF9UT1ApOworICAgIEFERE9QKGMsIFBPUF9UT1ApOworICAgIEFERE9QKGMsIFBPUF9UT1ApOworICAgIEFERE9QKGMsIFBPUF9FWENFUFQpOyAvKiBmb3IgU0VUVVBfRVhDRVBUICovCisgICAgQURET1BfSkFCUyhjLCBKVU1QX0FCU09MVVRFLCBhbmNob3IpOworCisKKyAgICBjb21waWxlcl91c2VfbmV4dF9ibG9jayhjLCB0cnlfY2xlYW51cCk7CisgICAgQURET1AoYywgRU5EX0ZJTkFMTFkpOworCisgICAgY29tcGlsZXJfdXNlX25leHRfYmxvY2soYywgYWZ0ZXJfdHJ5KTsKKworICAgIG4gPSBhc2RsX3NlcV9MRU4oZ2VuLT5pZnMpOworICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgZXhwcl90eSBlID0gKGV4cHJfdHkpYXNkbF9zZXFfR0VUKGdlbi0+aWZzLCBpKTsKKyAgICAgICAgVklTSVQoYywgZXhwciwgZSk7CisgICAgICAgIEFERE9QX0pBQlMoYywgUE9QX0pVTVBfSUZfRkFMU0UsIGlmX2NsZWFudXApOworICAgICAgICBORVhUX0JMT0NLKGMpOworICAgIH0KKworICAgIGlmICgrK2dlbl9pbmRleCA8IGFzZGxfc2VxX0xFTihnZW5lcmF0b3JzKSkKKyAgICAgICAgaWYgKCFjb21waWxlcl9jb21wcmVoZW5zaW9uX2dlbmVyYXRvcihjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvcnMsIGdlbl9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHQsIHZhbCwgdHlwZSkpCisgICAgICAgIHJldHVybiAwOworCisgICAgLyogb25seSBhcHBlbmQgYWZ0ZXIgdGhlIGxhc3QgZm9yIGdlbmVyYXRvciAqLworICAgIGlmIChnZW5faW5kZXggPj0gYXNkbF9zZXFfTEVOKGdlbmVyYXRvcnMpKSB7CisgICAgICAgIC8qIGNvbXByZWhlbnNpb24gc3BlY2lmaWMgY29kZSAqLworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgY2FzZSBDT01QX0dFTkVYUDoKKyAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIGVsdCk7CisgICAgICAgICAgICBBRERPUChjLCBZSUVMRF9WQUxVRSk7CisgICAgICAgICAgICBBRERPUChjLCBQT1BfVE9QKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENPTVBfTElTVENPTVA6CisgICAgICAgICAgICBWSVNJVChjLCBleHByLCBlbHQpOworICAgICAgICAgICAgQURET1BfSShjLCBMSVNUX0FQUEVORCwgZ2VuX2luZGV4ICsgMSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDT01QX1NFVENPTVA6CisgICAgICAgICAgICBWSVNJVChjLCBleHByLCBlbHQpOworICAgICAgICAgICAgQURET1BfSShjLCBTRVRfQURELCBnZW5faW5kZXggKyAxKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENPTVBfRElDVENPTVA6CisgICAgICAgICAgICAvKiBXaXRoICdkW2tdID0gdicsIHYgaXMgZXZhbHVhdGVkIGJlZm9yZSBrLCBzbyB3ZSBkbworICAgICAgICAgICAgICAgdGhlIHNhbWUuICovCisgICAgICAgICAgICBWSVNJVChjLCBleHByLCB2YWwpOworICAgICAgICAgICAgVklTSVQoYywgZXhwciwgZWx0KTsKKyAgICAgICAgICAgIEFERE9QX0koYywgTUFQX0FERCwgZ2VuX2luZGV4ICsgMSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAgICAgY29tcGlsZXJfdXNlX25leHRfYmxvY2soYywgc2tpcCk7CisgICAgfQorICAgIGNvbXBpbGVyX3VzZV9uZXh0X2Jsb2NrKGMsIGlmX2NsZWFudXApOworICAgIEFERE9QX0pBQlMoYywgSlVNUF9BQlNPTFVURSwgdHJ5KTsKKyAgICBjb21waWxlcl91c2VfbmV4dF9ibG9jayhjLCBhbmNob3IpOworICAgIEFERE9QKGMsIFBPUF9UT1ApOworCisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQKIGNvbXBpbGVyX2NvbXByZWhlbnNpb24oc3RydWN0IGNvbXBpbGVyICpjLCBleHByX3R5IGUsIGludCB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyIG5hbWUsIGFzZGxfc2VxICpnZW5lcmF0b3JzLCBleHByX3R5IGVsdCwKICAgICAgICAgICAgICAgICAgICAgICAgZXhwcl90eSB2YWwpCiB7CiAgICAgUHlDb2RlT2JqZWN0ICpjbyA9IE5VTEw7Ci0gICAgZXhwcl90eSBvdXRlcm1vc3RfaXRlcjsKKyAgICBjb21wcmVoZW5zaW9uX3R5IG91dGVybW9zdDsKICAgICBQeU9iamVjdCAqcXVhbG5hbWUgPSBOVUxMOworICAgIGludCBpc19hc3luY19mdW5jdGlvbiA9IGMtPnUtPnVfc3RlLT5zdGVfY29yb3V0aW5lOworICAgIGludCBpc19hc3luY19nZW5lcmF0b3IgPSAwOwogCi0gICAgb3V0ZXJtb3N0X2l0ZXIgPSAoKGNvbXByZWhlbnNpb25fdHkpCi0gICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXFfR0VUKGdlbmVyYXRvcnMsIDApKS0+aXRlcjsKKyAgICBvdXRlcm1vc3QgPSAoY29tcHJlaGVuc2lvbl90eSkgYXNkbF9zZXFfR0VUKGdlbmVyYXRvcnMsIDApOwogCiAgICAgaWYgKCFjb21waWxlcl9lbnRlcl9zY29wZShjLCBuYW1lLCBDT01QSUxFUl9TQ09QRV9DT01QUkVIRU5TSU9OLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKillLCBlLT5saW5lbm8pKQorICAgIHsKICAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBpc19hc3luY19nZW5lcmF0b3IgPSBjLT51LT51X3N0ZS0+c3RlX2Nvcm91dGluZTsKKworICAgIGlmIChpc19hc3luY19nZW5lcmF0b3IgJiYgIWlzX2FzeW5jX2Z1bmN0aW9uKSB7CisgICAgICAgIGlmIChlLT5saW5lbm8gPiBjLT51LT51X2xpbmVubykgeworICAgICAgICAgICAgYy0+dS0+dV9saW5lbm8gPSBlLT5saW5lbm87CisgICAgICAgICAgICBjLT51LT51X2xpbmVub19zZXQgPSAwOworICAgICAgICB9CisgICAgICAgIGNvbXBpbGVyX2Vycm9yKGMsICJhc3luY2hyb25vdXMgY29tcHJlaGVuc2lvbiBvdXRzaWRlIG9mICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImFuIGFzeW5jaHJvbm91cyBmdW5jdGlvbiIpOworICAgICAgICBnb3RvIGVycm9yX2luX3Njb3BlOworICAgIH0KIAogICAgIGlmICh0eXBlICE9IENPTVBfR0VORVhQKSB7CiAgICAgICAgIGludCBvcDsKQEAgLTM0NTQsOSArMzkzOSwyNCBAQAogICAgIFB5X0RFQ1JFRihxdWFsbmFtZSk7CiAgICAgUHlfREVDUkVGKGNvKTsKIAotICAgIFZJU0lUKGMsIGV4cHIsIG91dGVybW9zdF9pdGVyKTsKLSAgICBBRERPUChjLCBHRVRfSVRFUik7CisgICAgVklTSVQoYywgZXhwciwgb3V0ZXJtb3N0LT5pdGVyKTsKKworICAgIGlmIChvdXRlcm1vc3QtPmlzX2FzeW5jKSB7CisgICAgICAgIEFERE9QKGMsIEdFVF9BSVRFUik7CisgICAgICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgUHlfTm9uZSwgY29uc3RzKTsKKyAgICAgICAgQURET1AoYywgWUlFTERfRlJPTSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgQURET1AoYywgR0VUX0lURVIpOworICAgIH0KKwogICAgIEFERE9QX0koYywgQ0FMTF9GVU5DVElPTiwgMSk7CisKKyAgICBpZiAoaXNfYXN5bmNfZ2VuZXJhdG9yICYmIHR5cGUgIT0gQ09NUF9HRU5FWFApIHsKKyAgICAgICAgQURET1AoYywgR0VUX0FXQUlUQUJMRSk7CisgICAgICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgUHlfTm9uZSwgY29uc3RzKTsKKyAgICAgICAgQURET1AoYywgWUlFTERfRlJPTSk7CisgICAgfQorCiAgICAgcmV0dXJuIDE7CiBlcnJvcl9pbl9zY29wZToKICAgICBjb21waWxlcl9leGl0X3Njb3BlKGMpOwpAQCAtMzUzMSw3ICs0MDMxLDYgQEAKIHN0YXRpYyBpbnQKIGNvbXBpbGVyX3Zpc2l0X2tleXdvcmQoc3RydWN0IGNvbXBpbGVyICpjLCBrZXl3b3JkX3R5IGspCiB7Ci0gICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBrLT5hcmcsIGNvbnN0cyk7CiAgICAgVklTSVQoYywgZXhwciwgay0+dmFsdWUpOwogICAgIHJldHVybiAxOwogfQpAQCAtMzU0OSw2ICs0MDQ4LDggQEAKICAgICBzd2l0Y2ggKGUtPmtpbmQpIHsKICAgICBjYXNlIEVsbGlwc2lzX2tpbmQ6CiAgICAgICAgIHJldHVybiAxOworICAgIGNhc2UgQ29uc3RhbnRfa2luZDoKKyAgICAgICAgcmV0dXJuIFB5T2JqZWN0X0lzVHJ1ZShlLT52LkNvbnN0YW50LnZhbHVlKTsKICAgICBjYXNlIE51bV9raW5kOgogICAgICAgICByZXR1cm4gUHlPYmplY3RfSXNUcnVlKGUtPnYuTnVtLm4pOwogICAgIGNhc2UgU3RyX2tpbmQ6CkBAIC0zNTkyLDkgKzQwOTMsOSBAQAogICAgICAgIEJMT0NLCiAgICBmaW5hbGx5OgogICAgICAgIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkOgotICAgICAgIGV4YyA9IGNvcHkgb2YgKGV4Y2VwdGlvbiwgaW5zdGFuY2UsIHRyYWNlYmFjaykKKyAgICAgICAgICAgZXhjID0gY29weSBvZiAoZXhjZXB0aW9uLCBpbnN0YW5jZSwgdHJhY2ViYWNrKQogICAgICAgIGVsc2U6Ci0gICAgICAgZXhjID0gKE5vbmUsIE5vbmUsIE5vbmUpCisgICAgICAgICAgIGV4YyA9IChOb25lLCBOb25lLCBOb25lKQogICAgICAgIGlmIG5vdCAoYXdhaXQgZXhpdCgqZXhjKSk6CiAgICAgICAgICAgIHJhaXNlCiAgKi8KQEAgLTM3OTQsOCArNDI5NSw2IEBACiAgICAgY2FzZSBZaWVsZF9raW5kOgogICAgICAgICBpZiAoYy0+dS0+dV9zdGUtPnN0ZV90eXBlICE9IEZ1bmN0aW9uQmxvY2spCiAgICAgICAgICAgICByZXR1cm4gY29tcGlsZXJfZXJyb3IoYywgIid5aWVsZCcgb3V0c2lkZSBmdW5jdGlvbiIpOwotICAgICAgICBpZiAoYy0+dS0+dV9zY29wZV90eXBlID09IENPTVBJTEVSX1NDT1BFX0FTWU5DX0ZVTkNUSU9OKQotICAgICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2Vycm9yKGMsICIneWllbGQnIGluc2lkZSBhc3luYyBmdW5jdGlvbiIpOwogICAgICAgICBpZiAoZS0+di5ZaWVsZC52YWx1ZSkgewogICAgICAgICAgICAgVklTSVQoYywgZXhwciwgZS0+di5ZaWVsZC52YWx1ZSk7CiAgICAgICAgIH0KQEAgLTM4MjAsMTEgKzQzMTksOCBAQAogICAgICAgICBpZiAoYy0+dS0+dV9zdGUtPnN0ZV90eXBlICE9IEZ1bmN0aW9uQmxvY2spCiAgICAgICAgICAgICByZXR1cm4gY29tcGlsZXJfZXJyb3IoYywgIidhd2FpdCcgb3V0c2lkZSBmdW5jdGlvbiIpOwogCi0gICAgICAgIGlmIChjLT51LT51X3Njb3BlX3R5cGUgPT0gQ09NUElMRVJfU0NPUEVfQ09NUFJFSEVOU0lPTikKLSAgICAgICAgICAgIHJldHVybiBjb21waWxlcl9lcnJvcigKLSAgICAgICAgICAgICAgICBjLCAiJ2F3YWl0JyBleHByZXNzaW9ucyBpbiBjb21wcmVoZW5zaW9ucyBhcmUgbm90IHN1cHBvcnRlZCIpOwotCi0gICAgICAgIGlmIChjLT51LT51X3Njb3BlX3R5cGUgIT0gQ09NUElMRVJfU0NPUEVfQVNZTkNfRlVOQ1RJT04pCisgICAgICAgIGlmIChjLT51LT51X3Njb3BlX3R5cGUgIT0gQ09NUElMRVJfU0NPUEVfQVNZTkNfRlVOQ1RJT04gJiYKKyAgICAgICAgICAgICAgICBjLT51LT51X3Njb3BlX3R5cGUgIT0gQ09NUElMRVJfU0NPUEVfQ09NUFJFSEVOU0lPTikKICAgICAgICAgICAgIHJldHVybiBjb21waWxlcl9lcnJvcihjLCAiJ2F3YWl0JyBvdXRzaWRlIGFzeW5jIGZ1bmN0aW9uIik7CiAKICAgICAgICAgVklTSVQoYywgZXhwciwgZS0+di5Bd2FpdC52YWx1ZSk7CkBAIC0zODM2LDEyICs0MzMyLDE5IEBACiAgICAgICAgIHJldHVybiBjb21waWxlcl9jb21wYXJlKGMsIGUpOwogICAgIGNhc2UgQ2FsbF9raW5kOgogICAgICAgICByZXR1cm4gY29tcGlsZXJfY2FsbChjLCBlKTsKKyAgICBjYXNlIENvbnN0YW50X2tpbmQ6CisgICAgICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgZS0+di5Db25zdGFudC52YWx1ZSwgY29uc3RzKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOdW1fa2luZDoKICAgICAgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBlLT52Lk51bS5uLCBjb25zdHMpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFN0cl9raW5kOgogICAgICAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIGUtPnYuU3RyLnMsIGNvbnN0cyk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgSm9pbmVkU3RyX2tpbmQ6CisgICAgICAgIHJldHVybiBjb21waWxlcl9qb2luZWRfc3RyKGMsIGUpOworICAgIGNhc2UgRm9ybWF0dGVkVmFsdWVfa2luZDoKKyAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2Zvcm1hdHRlZF92YWx1ZShjLCBlKTsKICAgICBjYXNlIEJ5dGVzX2tpbmQ6CiAgICAgICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgZS0+di5CeXRlcy5zLCBjb25zdHMpOwogICAgICAgICBicmVhazsKQEAgLTM5NzYsNiArNDQ3OSwxNDQgQEAKIH0KIAogc3RhdGljIGludAorY2hlY2tfYW5uX2V4cHIoc3RydWN0IGNvbXBpbGVyICpjLCBleHByX3R5IGUpCit7CisgICAgVklTSVQoYywgZXhwciwgZSk7CisgICAgQURET1AoYywgUE9QX1RPUCk7CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQKK2NoZWNrX2Fubm90YXRpb24oc3RydWN0IGNvbXBpbGVyICpjLCBzdG10X3R5IHMpCit7CisgICAgLyogQW5ub3RhdGlvbnMgYXJlIG9ubHkgZXZhbHVhdGVkIGluIGEgbW9kdWxlIG9yIGNsYXNzLiAqLworICAgIGlmIChjLT51LT51X3Njb3BlX3R5cGUgPT0gQ09NUElMRVJfU0NPUEVfTU9EVUxFIHx8CisgICAgICAgIGMtPnUtPnVfc2NvcGVfdHlwZSA9PSBDT01QSUxFUl9TQ09QRV9DTEFTUykgeworICAgICAgICByZXR1cm4gY2hlY2tfYW5uX2V4cHIoYywgcy0+di5Bbm5Bc3NpZ24uYW5ub3RhdGlvbik7CisgICAgfQorICAgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50CitjaGVja19hbm5fc2xpY2Uoc3RydWN0IGNvbXBpbGVyICpjLCBzbGljZV90eSBzbCkKK3sKKyAgICBzd2l0Y2goc2wtPmtpbmQpIHsKKyAgICBjYXNlIEluZGV4X2tpbmQ6CisgICAgICAgIHJldHVybiBjaGVja19hbm5fZXhwcihjLCBzbC0+di5JbmRleC52YWx1ZSk7CisgICAgY2FzZSBTbGljZV9raW5kOgorICAgICAgICBpZiAoc2wtPnYuU2xpY2UubG93ZXIgJiYgIWNoZWNrX2Fubl9leHByKGMsIHNsLT52LlNsaWNlLmxvd2VyKSkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNsLT52LlNsaWNlLnVwcGVyICYmICFjaGVja19hbm5fZXhwcihjLCBzbC0+di5TbGljZS51cHBlcikpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGlmIChzbC0+di5TbGljZS5zdGVwICYmICFjaGVja19hbm5fZXhwcihjLCBzbC0+di5TbGljZS5zdGVwKSkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInVuZXhwZWN0ZWQgc2xpY2Uga2luZCIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQKK2NoZWNrX2Fubl9zdWJzY3Ioc3RydWN0IGNvbXBpbGVyICpjLCBzbGljZV90eSBzbCkKK3sKKyAgICAvKiBXZSBjaGVjayB0aGF0IGV2ZXJ5dGhpbmcgaW4gYSBzdWJzY3JpcHQgaXMgZGVmaW5lZCBhdCBydW50aW1lLiAqLworICAgIFB5X3NzaXplX3QgaSwgbjsKKworICAgIHN3aXRjaCAoc2wtPmtpbmQpIHsKKyAgICBjYXNlIEluZGV4X2tpbmQ6CisgICAgY2FzZSBTbGljZV9raW5kOgorICAgICAgICBpZiAoIWNoZWNrX2Fubl9zbGljZShjLCBzbCkpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXh0U2xpY2Vfa2luZDoKKyAgICAgICAgbiA9IGFzZGxfc2VxX0xFTihzbC0+di5FeHRTbGljZS5kaW1zKTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworICAgICAgICAgICAgc2xpY2VfdHkgc3Vic2wgPSAoc2xpY2VfdHkpYXNkbF9zZXFfR0VUKHNsLT52LkV4dFNsaWNlLmRpbXMsIGkpOworICAgICAgICAgICAgc3dpdGNoIChzdWJzbC0+a2luZCkgeworICAgICAgICAgICAgY2FzZSBJbmRleF9raW5kOgorICAgICAgICAgICAgY2FzZSBTbGljZV9raW5kOgorICAgICAgICAgICAgICAgIGlmICghY2hlY2tfYW5uX3NsaWNlKGMsIHN1YnNsKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEV4dFNsaWNlX2tpbmQ6CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4dGVuZGVkIHNsaWNlIGludmFsaWQgaW4gbmVzdGVkIHNsaWNlIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgc3Vic2NyaXB0IGtpbmQgJWQiLCBzbC0+a2luZCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIGludAorY29tcGlsZXJfYW5uYXNzaWduKHN0cnVjdCBjb21waWxlciAqYywgc3RtdF90eSBzKQoreworICAgIGV4cHJfdHkgdGFyZyA9IHMtPnYuQW5uQXNzaWduLnRhcmdldDsKKyAgICBQeU9iamVjdCogbWFuZ2xlZDsKKworICAgIGFzc2VydChzLT5raW5kID09IEFubkFzc2lnbl9raW5kKTsKKworICAgIC8qIFdlIHBlcmZvcm0gdGhlIGFjdHVhbCBhc3NpZ25tZW50IGZpcnN0LiAqLworICAgIGlmIChzLT52LkFubkFzc2lnbi52YWx1ZSkgeworICAgICAgICBWSVNJVChjLCBleHByLCBzLT52LkFubkFzc2lnbi52YWx1ZSk7CisgICAgICAgIFZJU0lUKGMsIGV4cHIsIHRhcmcpOworICAgIH0KKyAgICBzd2l0Y2ggKHRhcmctPmtpbmQpIHsKKyAgICBjYXNlIE5hbWVfa2luZDoKKyAgICAgICAgLyogSWYgd2UgaGF2ZSBhIHNpbXBsZSBuYW1lIGluIGEgbW9kdWxlIG9yIGNsYXNzLCBzdG9yZSBhbm5vdGF0aW9uLiAqLworICAgICAgICBpZiAocy0+di5Bbm5Bc3NpZ24uc2ltcGxlICYmCisgICAgICAgICAgICAoYy0+dS0+dV9zY29wZV90eXBlID09IENPTVBJTEVSX1NDT1BFX01PRFVMRSB8fAorICAgICAgICAgICAgIGMtPnUtPnVfc2NvcGVfdHlwZSA9PSBDT01QSUxFUl9TQ09QRV9DTEFTUykpIHsKKyAgICAgICAgICAgIG1hbmdsZWQgPSBfUHlfTWFuZ2xlKGMtPnUtPnVfcHJpdmF0ZSwgdGFyZy0+di5OYW1lLmlkKTsKKyAgICAgICAgICAgIGlmICghbWFuZ2xlZCkgeworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgVklTSVQoYywgZXhwciwgcy0+di5Bbm5Bc3NpZ24uYW5ub3RhdGlvbik7CisgICAgICAgICAgICAvKiBBRERPUF9OIGRlY3JlZnMgaXRzIGFyZ3VtZW50ICovCisgICAgICAgICAgICBBRERPUF9OKGMsIFNUT1JFX0FOTk9UQVRJT04sIG1hbmdsZWQsIG5hbWVzKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEF0dHJpYnV0ZV9raW5kOgorICAgICAgICBpZiAoIXMtPnYuQW5uQXNzaWduLnZhbHVlICYmCisgICAgICAgICAgICAhY2hlY2tfYW5uX2V4cHIoYywgdGFyZy0+di5BdHRyaWJ1dGUudmFsdWUpKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIFN1YnNjcmlwdF9raW5kOgorICAgICAgICBpZiAoIXMtPnYuQW5uQXNzaWduLnZhbHVlICYmCisgICAgICAgICAgICAoIWNoZWNrX2Fubl9leHByKGMsIHRhcmctPnYuU3Vic2NyaXB0LnZhbHVlKSB8fAorICAgICAgICAgICAgICFjaGVja19hbm5fc3Vic2NyKGMsIHRhcmctPnYuU3Vic2NyaXB0LnNsaWNlKSkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBub2RlIHR5cGUgKCVkKSBmb3IgYW5ub3RhdGVkIGFzc2lnbm1lbnQiLAorICAgICAgICAgICAgICAgICAgICAgdGFyZy0+a2luZCk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgLyogQW5ub3RhdGlvbiBpcyBldmFsdWF0ZWQgbGFzdC4gKi8KKyAgICBpZiAoIXMtPnYuQW5uQXNzaWduLnNpbXBsZSAmJiAhY2hlY2tfYW5ub3RhdGlvbihjLCBzKSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQKIGNvbXBpbGVyX3B1c2hfZmJsb2NrKHN0cnVjdCBjb21waWxlciAqYywgZW51bSBmYmxvY2t0eXBlIHQsIGJhc2ljYmxvY2sgKmIpCiB7CiAgICAgc3RydWN0IGZibG9ja2luZm8gKmY7CkBAIC00MjczLDcgKzQ5MTQsNyBAQAogICAgIGEtPmFfbG5vdGFiID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBERUZBVUxUX0xOT1RBQl9TSVpFKTsKICAgICBpZiAoIWEtPmFfbG5vdGFiKQogICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoKHNpemVfdCluYmxvY2tzID4gUFlfU0laRV9NQVggLyBzaXplb2YoYmFzaWNibG9jayAqKSkgeworICAgIGlmICgoc2l6ZV90KW5ibG9ja3MgPiBTSVpFX01BWCAvIHNpemVvZihiYXNpY2Jsb2NrICopKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTQyOTUsMTggKzQ5MzYsNiBAQAogICAgICAgICBQeU9iamVjdF9GcmVlKGEtPmFfcG9zdG9yZGVyKTsKIH0KIAotLyogUmV0dXJuIHRoZSBzaXplIG9mIGEgYmFzaWMgYmxvY2sgaW4gYnl0ZXMuICovCi0KLXN0YXRpYyBpbnQKLWluc3Ryc2l6ZShzdHJ1Y3QgaW5zdHIgKmluc3RyKQotewotICAgIGlmICghaW5zdHItPmlfaGFzYXJnKQotICAgICAgICByZXR1cm4gMTsgICAgICAgICAgICAgICAvKiAxIGJ5dGUgZm9yIHRoZSBvcGNvZGUqLwotICAgIGlmIChpbnN0ci0+aV9vcGFyZyA+IDB4ZmZmZikKLSAgICAgICAgcmV0dXJuIDY7ICAgICAgICAgICAgICAgLyogMSAob3Bjb2RlKSArIDEgKEVYVEVOREVEX0FSRyBvcGNvZGUpICsgMiAob3BhcmcpICsgMihvcGFyZyBleHRlbmRlZCkgKi8KLSAgICByZXR1cm4gMzsgICAgICAgICAgICAgICAgICAgLyogMSAob3Bjb2RlKSArIDIgKG9wYXJnKSAqLwotfQotCiBzdGF0aWMgaW50CiBibG9ja3NpemUoYmFzaWNibG9jayAqYikKIHsKQEAgLTQzMTQsNyArNDk0Myw3IEBACiAgICAgaW50IHNpemUgPSAwOwogCiAgICAgZm9yIChpID0gMDsgaSA8IGItPmJfaXVzZWQ7IGkrKykKLSAgICAgICAgc2l6ZSArPSBpbnN0cnNpemUoJmItPmJfaW5zdHJbaV0pOworICAgICAgICBzaXplICs9IGluc3Ryc2l6ZShiLT5iX2luc3RyW2ldLmlfb3BhcmcpOwogICAgIHJldHVybiBzaXplOwogfQogCkBAIC00MzI5LDExICs0OTU4LDEwIEBACiAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgdW5zaWduZWQgY2hhciAqbG5vdGFiOwogCi0gICAgZF9ieXRlY29kZSA9IGEtPmFfb2Zmc2V0IC0gYS0+YV9saW5lbm9fb2ZmOworICAgIGRfYnl0ZWNvZGUgPSAoYS0+YV9vZmZzZXQgLSBhLT5hX2xpbmVub19vZmYpICogc2l6ZW9mKF9QeV9DT0RFVU5JVCk7CiAgICAgZF9saW5lbm8gPSBpLT5pX2xpbmVubyAtIGEtPmFfbGluZW5vOwogCiAgICAgYXNzZXJ0KGRfYnl0ZWNvZGUgPj0gMCk7Ci0gICAgYXNzZXJ0KGRfbGluZW5vID49IDApOwogCiAgICAgaWYoZF9ieXRlY29kZSA9PSAwICYmIGRfbGluZW5vID09IDApCiAgICAgICAgIHJldHVybiAxOwpAQCAtNDM2Myw5ICs0OTkxLDIxIEBACiAgICAgICAgIGRfYnl0ZWNvZGUgLT0gbmNvZGVzICogMjU1OwogICAgICAgICBhLT5hX2xub3RhYl9vZmYgKz0gbmNvZGVzICogMjsKICAgICB9Ci0gICAgYXNzZXJ0KGRfYnl0ZWNvZGUgPD0gMjU1KTsKLSAgICBpZiAoZF9saW5lbm8gPiAyNTUpIHsKLSAgICAgICAgaW50IGosIG5ieXRlcywgbmNvZGVzID0gZF9saW5lbm8gLyAyNTU7CisgICAgYXNzZXJ0KDAgPD0gZF9ieXRlY29kZSAmJiBkX2J5dGVjb2RlIDw9IDI1NSk7CisKKyAgICBpZiAoZF9saW5lbm8gPCAtMTI4IHx8IDEyNyA8IGRfbGluZW5vKSB7CisgICAgICAgIGludCBqLCBuYnl0ZXMsIG5jb2RlcywgazsKKyAgICAgICAgaWYgKGRfbGluZW5vIDwgMCkgeworICAgICAgICAgICAgayA9IC0xMjg7CisgICAgICAgICAgICAvKiB1c2UgZGl2aXNpb24gb24gcG9zaXRpdmUgbnVtYmVycyAqLworICAgICAgICAgICAgbmNvZGVzID0gKC1kX2xpbmVubykgLyAxMjg7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBrID0gMTI3OworICAgICAgICAgICAgbmNvZGVzID0gZF9saW5lbm8gLyAxMjc7CisgICAgICAgIH0KKyAgICAgICAgZF9saW5lbm8gLT0gbmNvZGVzICogazsKKyAgICAgICAgYXNzZXJ0KG5jb2RlcyA+PSAxKTsKICAgICAgICAgbmJ5dGVzID0gYS0+YV9sbm90YWJfb2ZmICsgMiAqIG5jb2RlczsKICAgICAgICAgbGVuID0gUHlCeXRlc19HRVRfU0laRShhLT5hX2xub3RhYik7CiAgICAgICAgIGlmIChuYnl0ZXMgPj0gbGVuKSB7CkBAIC00MzgzLDE1ICs1MDIzLDE1IEBACiAgICAgICAgIGxub3RhYiA9ICh1bnNpZ25lZCBjaGFyICopCiAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoYS0+YV9sbm90YWIpICsgYS0+YV9sbm90YWJfb2ZmOwogICAgICAgICAqbG5vdGFiKysgPSBkX2J5dGVjb2RlOwotICAgICAgICAqbG5vdGFiKysgPSAyNTU7CisgICAgICAgICpsbm90YWIrKyA9IGs7CiAgICAgICAgIGRfYnl0ZWNvZGUgPSAwOwogICAgICAgICBmb3IgKGogPSAxOyBqIDwgbmNvZGVzOyBqKyspIHsKICAgICAgICAgICAgICpsbm90YWIrKyA9IDA7Ci0gICAgICAgICAgICAqbG5vdGFiKysgPSAyNTU7CisgICAgICAgICAgICAqbG5vdGFiKysgPSBrOwogICAgICAgICB9Ci0gICAgICAgIGRfbGluZW5vIC09IG5jb2RlcyAqIDI1NTsKICAgICAgICAgYS0+YV9sbm90YWJfb2ZmICs9IG5jb2RlcyAqIDI7CiAgICAgfQorICAgIGFzc2VydCgtMTI4IDw9IGRfbGluZW5vICYmIGRfbGluZW5vIDw9IDEyNyk7CiAKICAgICBsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKGEtPmFfbG5vdGFiKTsKICAgICBpZiAoYS0+YV9sbm90YWJfb2ZmICsgMiA+PSBsZW4pIHsKQEAgLTQ0MjMsMzggKzUwNjMsMjMgQEAKIHN0YXRpYyBpbnQKIGFzc2VtYmxlX2VtaXQoc3RydWN0IGFzc2VtYmxlciAqYSwgc3RydWN0IGluc3RyICppKQogewotICAgIGludCBzaXplLCBhcmcgPSAwLCBleHQgPSAwOworICAgIGludCBzaXplLCBhcmcgPSAwOwogICAgIFB5X3NzaXplX3QgbGVuID0gUHlCeXRlc19HRVRfU0laRShhLT5hX2J5dGVjb2RlKTsKLSAgICBjaGFyICpjb2RlOworICAgIF9QeV9DT0RFVU5JVCAqY29kZTsKIAotICAgIHNpemUgPSBpbnN0cnNpemUoaSk7Ci0gICAgaWYgKGktPmlfaGFzYXJnKSB7Ci0gICAgICAgIGFyZyA9IGktPmlfb3Bhcmc7Ci0gICAgICAgIGV4dCA9IGFyZyA+PiAxNjsKLSAgICB9CisgICAgYXJnID0gaS0+aV9vcGFyZzsKKyAgICBzaXplID0gaW5zdHJzaXplKGFyZyk7CiAgICAgaWYgKGktPmlfbGluZW5vICYmICFhc3NlbWJsZV9sbm90YWIoYSwgaSkpCiAgICAgICAgIHJldHVybiAwOwotICAgIGlmIChhLT5hX29mZnNldCArIHNpemUgPj0gbGVuKSB7CisgICAgaWYgKGEtPmFfb2Zmc2V0ICsgc2l6ZSA+PSBsZW4gLyAoaW50KXNpemVvZihfUHlfQ09ERVVOSVQpKSB7CiAgICAgICAgIGlmIChsZW4gPiBQWV9TU0laRV9UX01BWCAvIDIpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmYS0+YV9ieXRlY29kZSwgbGVuICogMikgPCAwKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIGNvZGUgPSBQeUJ5dGVzX0FTX1NUUklORyhhLT5hX2J5dGVjb2RlKSArIGEtPmFfb2Zmc2V0OworICAgIGNvZGUgPSAoX1B5X0NPREVVTklUICopUHlCeXRlc19BU19TVFJJTkcoYS0+YV9ieXRlY29kZSkgKyBhLT5hX29mZnNldDsKICAgICBhLT5hX29mZnNldCArPSBzaXplOwotICAgIGlmIChzaXplID09IDYpIHsKLSAgICAgICAgYXNzZXJ0KGktPmlfaGFzYXJnKTsKLSAgICAgICAgKmNvZGUrKyA9IChjaGFyKUVYVEVOREVEX0FSRzsKLSAgICAgICAgKmNvZGUrKyA9IGV4dCAmIDB4ZmY7Ci0gICAgICAgICpjb2RlKysgPSBleHQgPj4gODsKLSAgICAgICAgYXJnICY9IDB4ZmZmZjsKLSAgICB9Ci0gICAgKmNvZGUrKyA9IGktPmlfb3Bjb2RlOwotICAgIGlmIChpLT5pX2hhc2FyZykgewotICAgICAgICBhc3NlcnQoc2l6ZSA9PSAzIHx8IHNpemUgPT0gNik7Ci0gICAgICAgICpjb2RlKysgPSBhcmcgJiAweGZmOwotICAgICAgICAqY29kZSsrID0gYXJnID4+IDg7Ci0gICAgfQorICAgIHdyaXRlX29wX2FyZyhjb2RlLCBpLT5pX29wY29kZSwgYXJnLCBzaXplKTsKICAgICByZXR1cm4gMTsKIH0KIApAQCAtNDQ2Miw3ICs1MDg3LDcgQEAKIGFzc2VtYmxlX2p1bXBfb2Zmc2V0cyhzdHJ1Y3QgYXNzZW1ibGVyICphLCBzdHJ1Y3QgY29tcGlsZXIgKmMpCiB7CiAgICAgYmFzaWNibG9jayAqYjsKLSAgICBpbnQgYnNpemUsIHRvdHNpemUsIGV4dGVuZGVkX2FyZ19jb3VudCA9IDAsIGxhc3RfZXh0ZW5kZWRfYXJnX2NvdW50OworICAgIGludCBic2l6ZSwgdG90c2l6ZSwgZXh0ZW5kZWRfYXJnX3JlY29tcGlsZTsKICAgICBpbnQgaTsKIAogICAgIC8qIENvbXB1dGUgdGhlIHNpemUgb2YgZWFjaCBibG9jayBhbmQgZml4dXAganVtcCBhcmdzLgpAQCAtNDQ3NSwyNyArNTEwMCwyNyBAQAogICAgICAgICAgICAgYi0+Yl9vZmZzZXQgPSB0b3RzaXplOwogICAgICAgICAgICAgdG90c2l6ZSArPSBic2l6ZTsKICAgICAgICAgfQotICAgICAgICBsYXN0X2V4dGVuZGVkX2FyZ19jb3VudCA9IGV4dGVuZGVkX2FyZ19jb3VudDsKLSAgICAgICAgZXh0ZW5kZWRfYXJnX2NvdW50ID0gMDsKKyAgICAgICAgZXh0ZW5kZWRfYXJnX3JlY29tcGlsZSA9IDA7CiAgICAgICAgIGZvciAoYiA9IGMtPnUtPnVfYmxvY2tzOyBiICE9IE5VTEw7IGIgPSBiLT5iX2xpc3QpIHsKICAgICAgICAgICAgIGJzaXplID0gYi0+Yl9vZmZzZXQ7CiAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYi0+Yl9pdXNlZDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgc3RydWN0IGluc3RyICppbnN0ciA9ICZiLT5iX2luc3RyW2ldOworICAgICAgICAgICAgICAgIGludCBpc2l6ZSA9IGluc3Ryc2l6ZShpbnN0ci0+aV9vcGFyZyk7CiAgICAgICAgICAgICAgICAgLyogUmVsYXRpdmUganVtcHMgYXJlIGNvbXB1dGVkIHJlbGF0aXZlIHRvCiAgICAgICAgICAgICAgICAgICAgdGhlIGluc3RydWN0aW9uIHBvaW50ZXIgYWZ0ZXIgZmV0Y2hpbmcKICAgICAgICAgICAgICAgICAgICB0aGUganVtcCBpbnN0cnVjdGlvbi4KICAgICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgICAgIGJzaXplICs9IGluc3Ryc2l6ZShpbnN0cik7Ci0gICAgICAgICAgICAgICAgaWYgKGluc3RyLT5pX2phYnMpCisgICAgICAgICAgICAgICAgYnNpemUgKz0gaXNpemU7CisgICAgICAgICAgICAgICAgaWYgKGluc3RyLT5pX2phYnMgfHwgaW5zdHItPmlfanJlbCkgewogICAgICAgICAgICAgICAgICAgICBpbnN0ci0+aV9vcGFyZyA9IGluc3RyLT5pX3RhcmdldC0+Yl9vZmZzZXQ7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoaW5zdHItPmlfanJlbCkgewotICAgICAgICAgICAgICAgICAgICBpbnQgZGVsdGEgPSBpbnN0ci0+aV90YXJnZXQtPmJfb2Zmc2V0IC0gYnNpemU7Ci0gICAgICAgICAgICAgICAgICAgIGluc3RyLT5pX29wYXJnID0gZGVsdGE7CisgICAgICAgICAgICAgICAgICAgIGlmIChpbnN0ci0+aV9qcmVsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnN0ci0+aV9vcGFyZyAtPSBic2l6ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpbnN0ci0+aV9vcGFyZyAqPSBzaXplb2YoX1B5X0NPREVVTklUKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGluc3Ryc2l6ZShpbnN0ci0+aV9vcGFyZykgIT0gaXNpemUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuZGVkX2FyZ19yZWNvbXBpbGUgPSAxOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgaWYgKGluc3RyLT5pX29wYXJnID4gMHhmZmZmKQotICAgICAgICAgICAgICAgICAgICBleHRlbmRlZF9hcmdfY291bnQrKzsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC00NTA1LDcgKzUxMzAsNyBAQAogCiAgICAgICAgIFRoZSBpc3N1ZSBpcyB0aGF0IGluIHRoZSBmaXJzdCBsb29wIGJsb2Nrc2l6ZSgpIGlzIGNhbGxlZAogICAgICAgICB3aGljaCBjYWxscyBpbnN0cnNpemUoKSB3aGljaCByZXF1aXJlcyBpX29wYXJnIGJlIHNldAotICAgICAgICBhcHByb3ByaWF0ZWx5LiAgICAgICAgICBUaGVyZSBpcyBhIGJvb3RzdHJhcCBwcm9ibGVtIGJlY2F1c2UKKyAgICAgICAgYXBwcm9wcmlhdGVseS4gVGhlcmUgaXMgYSBib290c3RyYXAgcHJvYmxlbSBiZWNhdXNlCiAgICAgICAgIGlfb3BhcmcgaXMgY2FsY3VsYXRlZCBpbiB0aGUgc2Vjb25kIGxvb3AgYWJvdmUuCiAKICAgICAgICAgU28gd2UgbG9vcCB1bnRpbCB3ZSBzdG9wIHNlZWluZyBuZXcgRVhURU5ERURfQVJHcy4KQEAgLTQ1MTMsNyArNTEzOCw3IEBACiAgICAgICAgIG9uZXMgaW4ganVtcCBpbnN0cnVjdGlvbnMuICBTbyB0aGlzIHNob3VsZCBjb252ZXJnZQogICAgICAgICBmYWlybHkgcXVpY2tseS4KICAgICAqLwotICAgIH0gd2hpbGUgKGxhc3RfZXh0ZW5kZWRfYXJnX2NvdW50ICE9IGV4dGVuZGVkX2FyZ19jb3VudCk7CisgICAgfSB3aGlsZSAoZXh0ZW5kZWRfYXJnX3JlY29tcGlsZSk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC00NTQ5LDggKzUxNzQsMTIgQEAKICAgICAgICAgZmxhZ3MgfD0gQ09fTkVXTE9DQUxTIHwgQ09fT1BUSU1JWkVEOwogICAgICAgICBpZiAoc3RlLT5zdGVfbmVzdGVkKQogICAgICAgICAgICAgZmxhZ3MgfD0gQ09fTkVTVEVEOwotICAgICAgICBpZiAoc3RlLT5zdGVfZ2VuZXJhdG9yKQorICAgICAgICBpZiAoc3RlLT5zdGVfZ2VuZXJhdG9yICYmICFzdGUtPnN0ZV9jb3JvdXRpbmUpCiAgICAgICAgICAgICBmbGFncyB8PSBDT19HRU5FUkFUT1I7CisgICAgICAgIGlmICghc3RlLT5zdGVfZ2VuZXJhdG9yICYmIHN0ZS0+c3RlX2Nvcm91dGluZSkKKyAgICAgICAgICAgIGZsYWdzIHw9IENPX0NPUk9VVElORTsKKyAgICAgICAgaWYgKHN0ZS0+c3RlX2dlbmVyYXRvciAmJiBzdGUtPnN0ZV9jb3JvdXRpbmUpCisgICAgICAgICAgICBmbGFncyB8PSBDT19BU1lOQ19HRU5FUkFUT1I7CiAgICAgICAgIGlmIChzdGUtPnN0ZV92YXJhcmdzKQogICAgICAgICAgICAgZmxhZ3MgfD0gQ09fVkFSQVJHUzsKICAgICAgICAgaWYgKHN0ZS0+c3RlX3ZhcmtleXdvcmRzKQpAQCAtNDY1OSw5ICs1Mjg4LDkgQEAKICAgICBjaGFyIGFyZ1sxMjhdOwogCiAgICAgKmFyZyA9ICdcMCc7Ci0gICAgaWYgKGktPmlfaGFzYXJnKQorICAgIGlmIChIQVNfQVJHKGktPmlfb3Bjb2RlKSkgewogICAgICAgICBzcHJpbnRmKGFyZywgImFyZzogJWQgIiwgaS0+aV9vcGFyZyk7Ci0KKyAgICB9CiAgICAgZnByaW50ZihzdGRlcnIsICJsaW5lOiAlZCwgb3Bjb2RlOiAlZCAlcyVzJXNcbiIsCiAgICAgICAgICAgICAgICAgICAgIGktPmlfbGluZW5vLCBpLT5pX29wY29kZSwgYXJnLCBqYWJzLCBqcmVsKTsKIH0KQEAgLTQ3MTEsNyArNTM0MCw3IEBACiAKICAgICAvKiBTZXQgZmlyc3RsaW5lbm8gaWYgaXQgd2Fzbid0IGV4cGxpY2l0bHkgc2V0LiAqLwogICAgIGlmICghYy0+dS0+dV9maXJzdGxpbmVubykgewotICAgICAgICBpZiAoZW50cnlibG9jayAmJiBlbnRyeWJsb2NrLT5iX2luc3RyKQorICAgICAgICBpZiAoZW50cnlibG9jayAmJiBlbnRyeWJsb2NrLT5iX2luc3RyICYmIGVudHJ5YmxvY2stPmJfaW5zdHItPmlfbGluZW5vKQogICAgICAgICAgICAgYy0+dS0+dV9maXJzdGxpbmVubyA9IGVudHJ5YmxvY2stPmJfaW5zdHItPmlfbGluZW5vOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjLT51LT51X2ZpcnN0bGluZW5vID0gMTsKQEAgLTQ3MzMsNyArNTM2Miw3IEBACiAKICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZhLmFfbG5vdGFiLCBhLmFfbG5vdGFiX29mZikgPCAwKQogICAgICAgICBnb3RvIGVycm9yOwotICAgIGlmIChfUHlCeXRlc19SZXNpemUoJmEuYV9ieXRlY29kZSwgYS5hX29mZnNldCkgPCAwKQorICAgIGlmIChfUHlCeXRlc19SZXNpemUoJmEuYV9ieXRlY29kZSwgYS5hX29mZnNldCAqIHNpemVvZihfUHlfQ09ERVVOSVQpKSA8IDApCiAgICAgICAgIGdvdG8gZXJyb3I7CiAKICAgICBjbyA9IG1ha2Vjb2RlKGMsICZhKTsKQEAgLTQ3NDksNCArNTM3OCwzIEBACiB7CiAgICAgcmV0dXJuIFB5QVNUX0NvbXBpbGVFeChtb2QsIGZpbGVuYW1lLCBmbGFncywgLTEsIGFyZW5hKTsKIH0KLQpkaWZmIC0tZ2l0IGEvUHl0aG9uL2NvbmR2YXIuaCBiL1B5dGhvbi9jb25kdmFyLmgKaW5kZXggY2VkOTEwZi4uOWE3MWIxNyAxMDA2NDQKLS0tIGEvUHl0aG9uL2NvbmR2YXIuaAorKysgYi9QeXRob24vY29uZHZhci5oCkBAIC04OSw3ICs4OSw3IEBACiAKIC8qIHJldHVybiAwIGZvciBzdWNjZXNzLCAxIG9uIHRpbWVvdXQsIC0xIG9uIGVycm9yICovCiBQeV9MT0NBTF9JTkxJTkUoaW50KQotUHlDT05EX1RJTUVEV0FJVChQeUNPTkRfVCAqY29uZCwgUHlNVVRFWF9UICptdXQsIFBZX0xPTkdfTE9ORyB1cykKK1B5Q09ORF9USU1FRFdBSVQoUHlDT05EX1QgKmNvbmQsIFB5TVVURVhfVCAqbXV0LCBsb25nIGxvbmcgdXMpCiB7CiAgICAgaW50IHI7CiAgICAgc3RydWN0IHRpbWVzcGVjIHRzOwpAQCAtMjcwLDcgKzI3MCw3IEBACiB9CiAKIFB5X0xPQ0FMX0lOTElORShpbnQpCi1QeUNPTkRfVElNRURXQUlUKFB5Q09ORF9UICpjdiwgUHlNVVRFWF9UICpjcywgUFlfTE9OR19MT05HIHVzKQorUHlDT05EX1RJTUVEV0FJVChQeUNPTkRfVCAqY3YsIFB5TVVURVhfVCAqY3MsIGxvbmcgbG9uZyB1cykKIHsKICAgICByZXR1cm4gX1B5Q09ORF9XQUlUX01TKGN2LCBjcywgKERXT1JEKSh1cy8xMDAwKSk7CiB9CkBAIC0zNjMsNyArMzYzLDcgQEAKICAqIDIgdG8gaW5kaWNhdGUgdGhhdCB3ZSBkb24ndCBrbm93LgogICovCiBQeV9MT0NBTF9JTkxJTkUoaW50KQotUHlDT05EX1RJTUVEV0FJVChQeUNPTkRfVCAqY3YsIFB5TVVURVhfVCAqY3MsIFBZX0xPTkdfTE9ORyB1cykKK1B5Q09ORF9USU1FRFdBSVQoUHlDT05EX1QgKmN2LCBQeU1VVEVYX1QgKmNzLCBsb25nIGxvbmcgdXMpCiB7CiAgICAgcmV0dXJuIFNsZWVwQ29uZGl0aW9uVmFyaWFibGVTUlcoY3YsIGNzLCAoRFdPUkQpKHVzLzEwMDApLCAwKSA/IDIgOiAtMTsKIH0KZGlmZiAtLWdpdCBhL1B5dGhvbi9kdG9hLmMgYi9QeXRob24vZHRvYS5jCmluZGV4IDNkYTU0NmUuLmVmY2FkYzMgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9kdG9hLmMKKysrIGIvUHl0aG9uL2R0b2EuYwpAQCAtMTUxLDE4ICsxNTEsOSBAQAogI2VuZGlmCiAKIAotI2lmIGRlZmluZWQoSEFWRV9VSU5UMzJfVCkgJiYgZGVmaW5lZChIQVZFX0lOVDMyX1QpCi10eXBlZGVmIFBZX1VJTlQzMl9UIFVMb25nOwotdHlwZWRlZiBQWV9JTlQzMl9UIExvbmc7Ci0jZWxzZQotI2Vycm9yICJGYWlsZWQgdG8gZmluZCBhbiBleGFjdC13aWR0aCAzMi1iaXQgaW50ZWdlciB0eXBlIgotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKEhBVkVfVUlOVDY0X1QpCi0jZGVmaW5lIFVMTG9uZyBQWV9VSU5UNjRfVAotI2Vsc2UKLSN1bmRlZiBVTExvbmcKLSNlbmRpZgordHlwZWRlZiB1aW50MzJfdCBVTG9uZzsKK3R5cGVkZWYgaW50MzJfdCBMb25nOwordHlwZWRlZiB1aW50NjRfdCBVTExvbmc7CiAKICN1bmRlZiBERUJVRwogI2lmZGVmIFB5X0RFQlVHCkBAIC00NTcsMTMgKzQ0OCw4IEBACiBtdWx0YWRkKEJpZ2ludCAqYiwgaW50IG0sIGludCBhKSAgICAgICAvKiBtdWx0aXBseSBieSBtIGFuZCBhZGQgYSAqLwogewogICAgIGludCBpLCB3ZHM7Ci0jaWZkZWYgVUxMb25nCiAgICAgVUxvbmcgKng7CiAgICAgVUxMb25nIGNhcnJ5LCB5OwotI2Vsc2UKLSAgICBVTG9uZyBjYXJyeSwgKngsIHk7Ci0gICAgVUxvbmcgeGksIHo7Ci0jZW5kaWYKICAgICBCaWdpbnQgKmIxOwogCiAgICAgd2RzID0gYi0+d2RzOwpAQCAtNDcxLDE3ICs0NTcsOSBAQAogICAgIGkgPSAwOwogICAgIGNhcnJ5ID0gYTsKICAgICBkbyB7Ci0jaWZkZWYgVUxMb25nCiAgICAgICAgIHkgPSAqeCAqIChVTExvbmcpbSArIGNhcnJ5OwogICAgICAgICBjYXJyeSA9IHkgPj4gMzI7CiAgICAgICAgICp4KysgPSAoVUxvbmcpKHkgJiBGRkZGRkZGRik7Ci0jZWxzZQotICAgICAgICB4aSA9ICp4OwotICAgICAgICB5ID0gKHhpICYgMHhmZmZmKSAqIG0gKyBjYXJyeTsKLSAgICAgICAgeiA9ICh4aSA+PiAxNikgKiBtICsgKHkgPj4gMTYpOwotICAgICAgICBjYXJyeSA9IHogPj4gMTY7Ci0gICAgICAgICp4KysgPSAoeiA8PCAxNikgKyAoeSAmIDB4ZmZmZik7Ci0jZW5kaWYKICAgICB9CiAgICAgd2hpbGUoKytpIDwgd2RzKTsKICAgICBpZiAoY2FycnkpIHsKQEAgLTY0MiwxMiArNjIwLDcgQEAKICAgICBpbnQgaywgd2EsIHdiLCB3YzsKICAgICBVTG9uZyAqeCwgKnhhLCAqeGFlLCAqeGIsICp4YmUsICp4YywgKnhjMDsKICAgICBVTG9uZyB5OwotI2lmZGVmIFVMTG9uZwogICAgIFVMTG9uZyBjYXJyeSwgejsKLSNlbHNlCi0gICAgVUxvbmcgY2FycnksIHo7Ci0gICAgVUxvbmcgejI7Ci0jZW5kaWYKIAogICAgIGlmICgoIWEtPnhbMF0gJiYgYS0+d2RzID09IDEpIHx8ICghYi0+eFswXSAmJiBiLT53ZHMgPT0gMSkpIHsKICAgICAgICAgYyA9IEJhbGxvYygwKTsKQEAgLTY3OSw3ICs2NTIsNiBAQAogICAgIHhiID0gYi0+eDsKICAgICB4YmUgPSB4YiArIHdiOwogICAgIHhjMCA9IGMtPng7Ci0jaWZkZWYgVUxMb25nCiAgICAgZm9yKDsgeGIgPCB4YmU7IHhjMCsrKSB7CiAgICAgICAgIGlmICgoeSA9ICp4YisrKSkgewogICAgICAgICAgICAgeCA9IHhhOwpAQCAtNjk0LDM5ICs2NjYsNiBAQAogICAgICAgICAgICAgKnhjID0gKFVMb25nKWNhcnJ5OwogICAgICAgICB9CiAgICAgfQotI2Vsc2UKLSAgICBmb3IoOyB4YiA8IHhiZTsgeGIrKywgeGMwKyspIHsKLSAgICAgICAgaWYgKHkgPSAqeGIgJiAweGZmZmYpIHsKLSAgICAgICAgICAgIHggPSB4YTsKLSAgICAgICAgICAgIHhjID0geGMwOwotICAgICAgICAgICAgY2FycnkgPSAwOwotICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgIHogPSAoKnggJiAweGZmZmYpICogeSArICgqeGMgJiAweGZmZmYpICsgY2Fycnk7Ci0gICAgICAgICAgICAgICAgY2FycnkgPSB6ID4+IDE2OwotICAgICAgICAgICAgICAgIHoyID0gKCp4KysgPj4gMTYpICogeSArICgqeGMgPj4gMTYpICsgY2Fycnk7Ci0gICAgICAgICAgICAgICAgY2FycnkgPSB6MiA+PiAxNjsKLSAgICAgICAgICAgICAgICBTdG9yZWluYyh4YywgejIsIHopOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgd2hpbGUoeCA8IHhhZSk7Ci0gICAgICAgICAgICAqeGMgPSBjYXJyeTsKLSAgICAgICAgfQotICAgICAgICBpZiAoeSA9ICp4YiA+PiAxNikgewotICAgICAgICAgICAgeCA9IHhhOwotICAgICAgICAgICAgeGMgPSB4YzA7Ci0gICAgICAgICAgICBjYXJyeSA9IDA7Ci0gICAgICAgICAgICB6MiA9ICp4YzsKLSAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICB6ID0gKCp4ICYgMHhmZmZmKSAqIHkgKyAoKnhjID4+IDE2KSArIGNhcnJ5OwotICAgICAgICAgICAgICAgIGNhcnJ5ID0geiA+PiAxNjsKLSAgICAgICAgICAgICAgICBTdG9yZWluYyh4YywgeiwgejIpOwotICAgICAgICAgICAgICAgIHoyID0gKCp4KysgPj4gMTYpICogeSArICgqeGMgJiAweGZmZmYpICsgY2Fycnk7Ci0gICAgICAgICAgICAgICAgY2FycnkgPSB6MiA+PiAxNjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHdoaWxlKHggPCB4YWUpOwotICAgICAgICAgICAgKnhjID0gejI7Ci0gICAgICAgIH0KLSAgICB9Ci0jZW5kaWYKICAgICBmb3IoeGMwID0gYy0+eCwgeGMgPSB4YzAgKyB3Yzsgd2MgPiAwICYmICEqLS14YzsgLS13YykgOwogICAgIGMtPndkcyA9IHdjOwogICAgIHJldHVybiBjOwpAQCAtNzQ3LDcgKzY4Niw3IEBACiB7CiAgICAgQmlnaW50ICpiMSwgKnA1LCAqcDUxOwogICAgIGludCBpOwotICAgIHN0YXRpYyBpbnQgcDA1WzNdID0geyA1LCAyNSwgMTI1IH07CisgICAgc3RhdGljIGNvbnN0IGludCBwMDVbM10gPSB7IDUsIDI1LCAxMjUgfTsKIAogICAgIGlmICgoaSA9IGsgJiAzKSkgewogICAgICAgICBiID0gbXVsdGFkZChiLCBwMDVbaS0xXSwgMCk7CkBAIC04MDMsNyArNzQyLDcgQEAKIHsKICAgICBCaWdpbnQgKmIxLCAqcDUsICpwNTE7CiAgICAgaW50IGk7Ci0gICAgc3RhdGljIGludCBwMDVbM10gPSB7IDUsIDI1LCAxMjUgfTsKKyAgICBzdGF0aWMgY29uc3QgaW50IHAwNVszXSA9IHsgNSwgMjUsIDEyNSB9OwogCiAgICAgaWYgKChpID0gayAmIDMpKSB7CiAgICAgICAgIGIgPSBtdWx0YWRkKGIsIHAwNVtpLTFdLCAwKTsKQEAgLTkzNSwxMiArODc0LDcgQEAKICAgICBCaWdpbnQgKmM7CiAgICAgaW50IGksIHdhLCB3YjsKICAgICBVTG9uZyAqeGEsICp4YWUsICp4YiwgKnhiZSwgKnhjOwotI2lmZGVmIFVMTG9uZwogICAgIFVMTG9uZyBib3Jyb3csIHk7Ci0jZWxzZQotICAgIFVMb25nIGJvcnJvdywgeTsKLSAgICBVTG9uZyB6OwotI2VuZGlmCiAKICAgICBpID0gY21wKGEsYik7CiAgICAgaWYgKCFpKSB7CkBAIC05NzEsNyArOTA1LDYgQEAKICAgICB4YmUgPSB4YiArIHdiOwogICAgIHhjID0gYy0+eDsKICAgICBib3Jyb3cgPSAwOwotI2lmZGVmIFVMTG9uZwogICAgIGRvIHsKICAgICAgICAgeSA9IChVTExvbmcpKnhhKysgLSAqeGIrKyAtIGJvcnJvdzsKICAgICAgICAgYm9ycm93ID0geSA+PiAzMiAmIChVTG9uZykxOwpAQCAtOTgzLDIzICs5MTYsNiBAQAogICAgICAgICBib3Jyb3cgPSB5ID4+IDMyICYgKFVMb25nKTE7CiAgICAgICAgICp4YysrID0gKFVMb25nKSh5ICYgRkZGRkZGRkYpOwogICAgIH0KLSNlbHNlCi0gICAgZG8gewotICAgICAgICB5ID0gKCp4YSAmIDB4ZmZmZikgLSAoKnhiICYgMHhmZmZmKSAtIGJvcnJvdzsKLSAgICAgICAgYm9ycm93ID0gKHkgJiAweDEwMDAwKSA+PiAxNjsKLSAgICAgICAgeiA9ICgqeGErKyA+PiAxNikgLSAoKnhiKysgPj4gMTYpIC0gYm9ycm93OwotICAgICAgICBib3Jyb3cgPSAoeiAmIDB4MTAwMDApID4+IDE2OwotICAgICAgICBTdG9yZWluYyh4YywgeiwgeSk7Ci0gICAgfQotICAgIHdoaWxlKHhiIDwgeGJlKTsKLSAgICB3aGlsZSh4YSA8IHhhZSkgewotICAgICAgICB5ID0gKCp4YSAmIDB4ZmZmZikgLSBib3Jyb3c7Ci0gICAgICAgIGJvcnJvdyA9ICh5ICYgMHgxMDAwMCkgPj4gMTY7Ci0gICAgICAgIHogPSAoKnhhKysgPj4gMTYpIC0gYm9ycm93OwotICAgICAgICBib3Jyb3cgPSAoeiAmIDB4MTAwMDApID4+IDE2OwotICAgICAgICBTdG9yZWluYyh4YywgeiwgeSk7Ci0gICAgfQotI2VuZGlmCiAgICAgd2hpbGUoISotLXhjKQogICAgICAgICB3YS0tOwogICAgIGMtPndkcyA9IHdhOwpAQCAtMTI0NCwxMiArMTE2MCw3IEBACiB7CiAgICAgaW50IG47CiAgICAgVUxvbmcgKmJ4LCAqYnhlLCBxLCAqc3gsICpzeGU7Ci0jaWZkZWYgVUxMb25nCiAgICAgVUxMb25nIGJvcnJvdywgY2FycnksIHksIHlzOwotI2Vsc2UKLSAgICBVTG9uZyBib3Jyb3csIGNhcnJ5LCB5LCB5czsKLSAgICBVTG9uZyBzaSwgeiwgenM7Ci0jZW5kaWYKIAogICAgIG4gPSBTLT53ZHM7CiAjaWZkZWYgREVCVUcKQEAgLTEyNzEsMjMgKzExODIsMTEgQEAKICAgICAgICAgYm9ycm93ID0gMDsKICAgICAgICAgY2FycnkgPSAwOwogICAgICAgICBkbyB7Ci0jaWZkZWYgVUxMb25nCiAgICAgICAgICAgICB5cyA9ICpzeCsrICogKFVMTG9uZylxICsgY2Fycnk7CiAgICAgICAgICAgICBjYXJyeSA9IHlzID4+IDMyOwogICAgICAgICAgICAgeSA9ICpieCAtICh5cyAmIEZGRkZGRkZGKSAtIGJvcnJvdzsKICAgICAgICAgICAgIGJvcnJvdyA9IHkgPj4gMzIgJiAoVUxvbmcpMTsKICAgICAgICAgICAgICpieCsrID0gKFVMb25nKSh5ICYgRkZGRkZGRkYpOwotI2Vsc2UKLSAgICAgICAgICAgIHNpID0gKnN4Kys7Ci0gICAgICAgICAgICB5cyA9IChzaSAmIDB4ZmZmZikgKiBxICsgY2Fycnk7Ci0gICAgICAgICAgICB6cyA9IChzaSA+PiAxNikgKiBxICsgKHlzID4+IDE2KTsKLSAgICAgICAgICAgIGNhcnJ5ID0genMgPj4gMTY7Ci0gICAgICAgICAgICB5ID0gKCpieCAmIDB4ZmZmZikgLSAoeXMgJiAweGZmZmYpIC0gYm9ycm93OwotICAgICAgICAgICAgYm9ycm93ID0gKHkgJiAweDEwMDAwKSA+PiAxNjsKLSAgICAgICAgICAgIHogPSAoKmJ4ID4+IDE2KSAtICh6cyAmIDB4ZmZmZikgLSBib3Jyb3c7Ci0gICAgICAgICAgICBib3Jyb3cgPSAoeiAmIDB4MTAwMDApID4+IDE2OwotICAgICAgICAgICAgU3RvcmVpbmMoYngsIHosIHkpOwotI2VuZGlmCiAgICAgICAgIH0KICAgICAgICAgd2hpbGUoc3ggPD0gc3hlKTsKICAgICAgICAgaWYgKCEqYnhlKSB7CkBAIC0xMzA0LDIzICsxMjAzLDExIEBACiAgICAgICAgIGJ4ID0gYi0+eDsKICAgICAgICAgc3ggPSBTLT54OwogICAgICAgICBkbyB7Ci0jaWZkZWYgVUxMb25nCiAgICAgICAgICAgICB5cyA9ICpzeCsrICsgY2Fycnk7CiAgICAgICAgICAgICBjYXJyeSA9IHlzID4+IDMyOwogICAgICAgICAgICAgeSA9ICpieCAtICh5cyAmIEZGRkZGRkZGKSAtIGJvcnJvdzsKICAgICAgICAgICAgIGJvcnJvdyA9IHkgPj4gMzIgJiAoVUxvbmcpMTsKICAgICAgICAgICAgICpieCsrID0gKFVMb25nKSh5ICYgRkZGRkZGRkYpOwotI2Vsc2UKLSAgICAgICAgICAgIHNpID0gKnN4Kys7Ci0gICAgICAgICAgICB5cyA9IChzaSAmIDB4ZmZmZikgKyBjYXJyeTsKLSAgICAgICAgICAgIHpzID0gKHNpID4+IDE2KSArICh5cyA+PiAxNik7Ci0gICAgICAgICAgICBjYXJyeSA9IHpzID4+IDE2OwotICAgICAgICAgICAgeSA9ICgqYnggJiAweGZmZmYpIC0gKHlzICYgMHhmZmZmKSAtIGJvcnJvdzsKLSAgICAgICAgICAgIGJvcnJvdyA9ICh5ICYgMHgxMDAwMCkgPj4gMTY7Ci0gICAgICAgICAgICB6ID0gKCpieCA+PiAxNikgLSAoenMgJiAweGZmZmYpIC0gYm9ycm93OwotICAgICAgICAgICAgYm9ycm93ID0gKHogJiAweDEwMDAwKSA+PiAxNjsKLSAgICAgICAgICAgIFN0b3JlaW5jKGJ4LCB6LCB5KTsKLSNlbmRpZgogICAgICAgICB9CiAgICAgICAgIHdoaWxlKHN4IDw9IHN4ZSk7CiAgICAgICAgIGJ4ID0gYi0+eDsKQEAgLTIzMTUsNyArMjIwMiw3IEBACiB9CiAKIHN0YXRpYyBjaGFyICoKLW5ydl9hbGxvYyhjaGFyICpzLCBjaGFyICoqcnZlLCBpbnQgbikKK25ydl9hbGxvYyhjb25zdCBjaGFyICpzLCBjaGFyICoqcnZlLCBpbnQgbikKIHsKICAgICBjaGFyICpydiwgKnQ7CiAKZGlmZiAtLWdpdCBhL1B5dGhvbi9keW5sb2FkX3dpbi5jIGIvUHl0aG9uL2R5bmxvYWRfd2luLmMKaW5kZXggZjJjNzk2ZS4uMDUwNTBjZiAxMDA2NDQKLS0tIGEvUHl0aG9uL2R5bmxvYWRfd2luLmMKKysrIGIvUHl0aG9uL2R5bmxvYWRfd2luLmMKQEAgLTI0LDEyICsyNCwxMCBAQAogI2RlZmluZSBQWURfREVCVUdfU1VGRklYICIiCiAjZW5kaWYKIAotI2RlZmluZSBTVFJJTkdJWkUyKHgpICN4Ci0jZGVmaW5lIFNUUklOR0laRSh4KSBTVFJJTkdJWkUyKHgpCiAjaWZkZWYgUFlEX1BMQVRGT1JNX1RBRwotI2RlZmluZSBQWURfVEFHR0VEX1NVRkZJWCBQWURfREVCVUdfU1VGRklYICIuY3AiIFNUUklOR0laRShQWV9NQUpPUl9WRVJTSU9OKSBTVFJJTkdJWkUoUFlfTUlOT1JfVkVSU0lPTikgIi0iIFBZRF9QTEFURk9STV9UQUcgIi5weWQiCisjZGVmaW5lIFBZRF9UQUdHRURfU1VGRklYIFBZRF9ERUJVR19TVUZGSVggIi5jcCIgUHlfU1RSSU5HSUZZKFBZX01BSk9SX1ZFUlNJT04pIFB5X1NUUklOR0lGWShQWV9NSU5PUl9WRVJTSU9OKSAiLSIgUFlEX1BMQVRGT1JNX1RBRyAiLnB5ZCIKICNlbHNlCi0jZGVmaW5lIFBZRF9UQUdHRURfU1VGRklYIFBZRF9ERUJVR19TVUZGSVggIi5jcCIgU1RSSU5HSVpFKFBZX01BSk9SX1ZFUlNJT04pIFNUUklOR0laRShQWV9NSU5PUl9WRVJTSU9OKSAiLnB5ZCIKKyNkZWZpbmUgUFlEX1RBR0dFRF9TVUZGSVggUFlEX0RFQlVHX1NVRkZJWCAiLmNwIiBQeV9TVFJJTkdJRlkoUFlfTUFKT1JfVkVSU0lPTikgUHlfU1RSSU5HSUZZKFBZX01JTk9SX1ZFUlNJT04pICIucHlkIgogI2VuZGlmCiAKICNkZWZpbmUgUFlEX1VOVEFHR0VEX1NVRkZJWCBQWURfREVCVUdfU1VGRklYICIucHlkIgpAQCAtNDMsNyArNDEsNyBAQAogLyogQ2FzZSBpbnNlbnNpdGl2ZSBzdHJpbmcgY29tcGFyZSwgdG8gYXZvaWQgYW55IGRlcGVuZGVuY2llcyBvbiBwYXJ0aWN1bGFyCiAgICBDIFJUTCBpbXBsZW1lbnRhdGlvbnMgKi8KIAotc3RhdGljIGludCBzdHJjYXNlY21wIChjaGFyICpzdHJpbmcxLCBjaGFyICpzdHJpbmcyKQorc3RhdGljIGludCBzdHJjYXNlY21wIChjb25zdCBjaGFyICpzdHJpbmcxLCBjb25zdCBjaGFyICpzdHJpbmcyKQogewogICAgIGludCBmaXJzdCwgc2Vjb25kOwogCmRpZmYgLS1naXQgYS9QeXRob24vZXJyb3JzLmMgYi9QeXRob24vZXJyb3JzLmMKaW5kZXggYjgyMDcyMi4uNjA5NTg0MyAxMDA2NDQKLS0tIGEvUHl0aG9uL2Vycm9ycy5jCisrKyBiL1B5dGhvbi9lcnJvcnMuYwpAQCAtNTIsNiArNTIsMjAgQEAKICAgICBQeV9YREVDUkVGKG9sZHRyYWNlYmFjayk7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCoKK19QeUVycl9DcmVhdGVFeGNlcHRpb24oUHlPYmplY3QgKmV4Y2VwdGlvbiwgUHlPYmplY3QgKnZhbHVlKQoreworICAgIGlmICh2YWx1ZSA9PSBOVUxMIHx8IHZhbHVlID09IFB5X05vbmUpIHsKKyAgICAgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTm9BcmcoZXhjZXB0aW9uKTsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlUdXBsZV9DaGVjayh2YWx1ZSkpIHsKKyAgICAgICAgcmV0dXJuIFB5T2JqZWN0X0NhbGwoZXhjZXB0aW9uLCB2YWx1ZSwgTlVMTCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxBcmcxKGV4Y2VwdGlvbiwgdmFsdWUpOworICAgIH0KK30KKwogdm9pZAogUHlFcnJfU2V0T2JqZWN0KFB5T2JqZWN0ICpleGNlcHRpb24sIFB5T2JqZWN0ICp2YWx1ZSkKIHsKQEAgLTY2LDYgKzgwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbik7CiAgICAgICAgIHJldHVybjsKICAgICB9CisKICAgICBQeV9YSU5DUkVGKHZhbHVlKTsKICAgICBleGNfdmFsdWUgPSB0c3RhdGUtPmV4Y192YWx1ZTsKICAgICBpZiAoZXhjX3ZhbHVlICE9IE5VTEwgJiYgZXhjX3ZhbHVlICE9IFB5X05vbmUpIHsKQEAgLTczLDI4ICs4OCwyMSBAQAogICAgICAgICBQeV9JTkNSRUYoZXhjX3ZhbHVlKTsKICAgICAgICAgaWYgKHZhbHVlID09IE5VTEwgfHwgIVB5RXhjZXB0aW9uSW5zdGFuY2VfQ2hlY2sodmFsdWUpKSB7CiAgICAgICAgICAgICAvKiBXZSBtdXN0IG5vcm1hbGl6ZSB0aGUgdmFsdWUgcmlnaHQgbm93ICovCi0gICAgICAgICAgICBQeU9iamVjdCAqYXJncywgKmZpeGVkX3ZhbHVlOworICAgICAgICAgICAgUHlPYmplY3QgKmZpeGVkX3ZhbHVlOwogCi0gICAgICAgICAgICAvKiBJc3N1ZSAjMjM1NzE6IFB5RXZhbF9DYWxsT2JqZWN0KCkgbXVzdCBub3QgYmUgY2FsbGVkIHdpdGggYW4KKyAgICAgICAgICAgIC8qIElzc3VlICMyMzU3MTogZnVuY3Rpb25zIG11c3Qgbm90IGJlIGNhbGxlZCB3aXRoIGFuCiAgICAgICAgICAgICAgICBleGNlcHRpb24gc2V0ICovCiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogCi0gICAgICAgICAgICBpZiAodmFsdWUgPT0gTlVMTCB8fCB2YWx1ZSA9PSBQeV9Ob25lKQotICAgICAgICAgICAgICAgIGFyZ3MgPSBQeVR1cGxlX05ldygwKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKFB5VHVwbGVfQ2hlY2sodmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgUHlfSU5DUkVGKHZhbHVlKTsKLSAgICAgICAgICAgICAgICBhcmdzID0gdmFsdWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYXJncyA9IFB5VHVwbGVfUGFjaygxLCB2YWx1ZSk7Ci0gICAgICAgICAgICBmaXhlZF92YWx1ZSA9IGFyZ3MgPwotICAgICAgICAgICAgICAgIFB5RXZhbF9DYWxsT2JqZWN0KGV4Y2VwdGlvbiwgYXJncykgOiBOVUxMOwotICAgICAgICAgICAgUHlfWERFQ1JFRihhcmdzKTsKKyAgICAgICAgICAgIGZpeGVkX3ZhbHVlID0gX1B5RXJyX0NyZWF0ZUV4Y2VwdGlvbihleGNlcHRpb24sIHZhbHVlKTsKICAgICAgICAgICAgIFB5X1hERUNSRUYodmFsdWUpOwotICAgICAgICAgICAgaWYgKGZpeGVkX3ZhbHVlID09IE5VTEwpCisgICAgICAgICAgICBpZiAoZml4ZWRfdmFsdWUgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgdmFsdWUgPSBmaXhlZF92YWx1ZTsKICAgICAgICAgfQorCiAgICAgICAgIC8qIEF2b2lkIHJlZmVyZW5jZSBjeWNsZXMgdGhyb3VnaCB0aGUgY29udGV4dCBjaGFpbi4KICAgICAgICAgICAgVGhpcyBpcyBPKGNoYWluIGxlbmd0aCkgYnV0IGNvbnRleHQgY2hhaW5zIGFyZQogICAgICAgICAgICB1c3VhbGx5IHZlcnkgc2hvcnQuIFNlbnNpdGl2ZSByZWFkZXJzIG1heSB0cnkKQEAgLTExMCw3ICsxMTgsOCBAQAogICAgICAgICAgICAgICAgIG8gPSBjb250ZXh0OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgUHlFeGNlcHRpb25fU2V0Q29udGV4dCh2YWx1ZSwgZXhjX3ZhbHVlKTsKLSAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihleGNfdmFsdWUpOwogICAgICAgICB9CiAgICAgfQpAQCAtMjU4LDI1ICsyNjcsMTUgQEAKICAgICAgICAgICAgY2xhc3MuCiAgICAgICAgICovCiAgICAgICAgIGlmICghaW5jbGFzcyB8fCAhaXNfc3ViY2xhc3MpIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzLCAqcmVzOworICAgICAgICAgICAgUHlPYmplY3QgKmZpeGVkX3ZhbHVlOwogCi0gICAgICAgICAgICBpZiAodmFsdWUgPT0gUHlfTm9uZSkKLSAgICAgICAgICAgICAgICBhcmdzID0gUHlUdXBsZV9OZXcoMCk7Ci0gICAgICAgICAgICBlbHNlIGlmIChQeVR1cGxlX0NoZWNrKHZhbHVlKSkgewotICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgYXJncyA9IHZhbHVlOworICAgICAgICAgICAgZml4ZWRfdmFsdWUgPSBfUHlFcnJfQ3JlYXRlRXhjZXB0aW9uKHR5cGUsIHZhbHVlKTsKKyAgICAgICAgICAgIGlmIChmaXhlZF92YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgZ290byBmaW5hbGx5OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGFyZ3MgPSBQeVR1cGxlX1BhY2soMSwgdmFsdWUpOwogCi0gICAgICAgICAgICBpZiAoYXJncyA9PSBOVUxMKQotICAgICAgICAgICAgICAgIGdvdG8gZmluYWxseTsKLSAgICAgICAgICAgIHJlcyA9IFB5RXZhbF9DYWxsT2JqZWN0KHR5cGUsIGFyZ3MpOwotICAgICAgICAgICAgUHlfREVDUkVGKGFyZ3MpOwotICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQotICAgICAgICAgICAgICAgIGdvdG8gZmluYWxseTsKICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0gICAgICAgICAgICB2YWx1ZSA9IHJlczsKKyAgICAgICAgICAgIHZhbHVlID0gZml4ZWRfdmFsdWU7CiAgICAgICAgIH0KICAgICAgICAgLyogaWYgdGhlIGNsYXNzIG9mIHRoZSBpbnN0YW5jZSBkb2Vzbid0IGV4YWN0bHkgbWF0Y2ggdGhlCiAgICAgICAgICAgIGNsYXNzIG9mIHRoZSB0eXBlLCBiZWxpZXZlIHRoZSBpbnN0YW5jZQpAQCAtNDAyLDYgKzQwMSw0NyBAQAogICAgIH0KIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK19QeUVycl9Gb3JtYXRWRnJvbUNhdXNlKFB5T2JqZWN0ICpleGNlcHRpb24sIGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCB2YXJncykKK3sKKyAgICBQeU9iamVjdCAqZXhjLCAqdmFsLCAqdmFsMiwgKnRiOworCisgICAgYXNzZXJ0KFB5RXJyX09jY3VycmVkKCkpOworICAgIFB5RXJyX0ZldGNoKCZleGMsICZ2YWwsICZ0Yik7CisgICAgUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uKCZleGMsICZ2YWwsICZ0Yik7CisgICAgaWYgKHRiICE9IE5VTEwpIHsKKyAgICAgICAgUHlFeGNlcHRpb25fU2V0VHJhY2ViYWNrKHZhbCwgdGIpOworICAgICAgICBQeV9ERUNSRUYodGIpOworICAgIH0KKyAgICBQeV9ERUNSRUYoZXhjKTsKKyAgICBhc3NlcnQoIVB5RXJyX09jY3VycmVkKCkpOworCisgICAgUHlFcnJfRm9ybWF0VihleGNlcHRpb24sIGZvcm1hdCwgdmFyZ3MpOworCisgICAgUHlFcnJfRmV0Y2goJmV4YywgJnZhbDIsICZ0Yik7CisgICAgUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uKCZleGMsICZ2YWwyLCAmdGIpOworICAgIFB5X0lOQ1JFRih2YWwpOworICAgIFB5RXhjZXB0aW9uX1NldENhdXNlKHZhbDIsIHZhbCk7CisgICAgUHlFeGNlcHRpb25fU2V0Q29udGV4dCh2YWwyLCB2YWwpOworICAgIFB5RXJyX1Jlc3RvcmUoZXhjLCB2YWwyLCB0Yik7CisKKyAgICByZXR1cm4gTlVMTDsKK30KKworUHlPYmplY3QgKgorX1B5RXJyX0Zvcm1hdEZyb21DYXVzZShQeU9iamVjdCAqZXhjZXB0aW9uLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKK3sKKyAgICB2YV9saXN0IHZhcmdzOworI2lmZGVmIEhBVkVfU1REQVJHX1BST1RPVFlQRVMKKyAgICB2YV9zdGFydCh2YXJncywgZm9ybWF0KTsKKyNlbHNlCisgICAgdmFfc3RhcnQodmFyZ3MpOworI2VuZGlmCisgICAgX1B5RXJyX0Zvcm1hdFZGcm9tQ2F1c2UoZXhjZXB0aW9uLCBmb3JtYXQsIHZhcmdzKTsKKyAgICB2YV9lbmQodmFyZ3MpOworICAgIHJldHVybiBOVUxMOworfQorCiAvKiBDb252ZW5pZW5jZSBmdW5jdGlvbnMgdG8gc2V0IGEgdHlwZSBlcnJvciBleGNlcHRpb24gYW5kIHJldHVybiAwICovCiAKIGludApAQCAtNzAxLDUxICs3NDEsNjEgQEAKICNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAKIFB5T2JqZWN0ICoKLVB5RXJyX1NldEltcG9ydEVycm9yKFB5T2JqZWN0ICptc2csIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqcGF0aCkKK1B5RXJyX1NldEltcG9ydEVycm9yU3ViY2xhc3MoUHlPYmplY3QgKmV4Y2VwdGlvbiwgUHlPYmplY3QgKm1zZywKKyAgICBQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnBhdGgpCiB7Ci0gICAgUHlPYmplY3QgKmFyZ3MsICprd2FyZ3MsICplcnJvcjsKKyAgICBpbnQgaXNzdWJjbGFzczsKKyAgICBQeU9iamVjdCAqa3dhcmdzLCAqZXJyb3I7CiAKLSAgICBpZiAobXNnID09IE5VTEwpCisgICAgaXNzdWJjbGFzcyA9IFB5T2JqZWN0X0lzU3ViY2xhc3MoZXhjZXB0aW9uLCBQeUV4Y19JbXBvcnRFcnJvcik7CisgICAgaWYgKGlzc3ViY2xhc3MgPCAwKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgYXJncyA9IFB5VHVwbGVfTmV3KDEpOwotICAgIGlmIChhcmdzID09IE5VTEwpCisgICAgfQorICAgIGVsc2UgaWYgKCFpc3N1YmNsYXNzKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJleHBlY3RlZCBhIHN1YmNsYXNzIG9mIEltcG9ydEVycm9yIik7CiAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAotICAgIGt3YXJncyA9IFB5RGljdF9OZXcoKTsKLSAgICBpZiAoa3dhcmdzID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKGFyZ3MpOworICAgIGlmIChtc2cgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZXhwZWN0ZWQgYSBtZXNzYWdlIGFyZ3VtZW50Iik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAogICAgIGlmIChuYW1lID09IE5VTEwpIHsKICAgICAgICAgbmFtZSA9IFB5X05vbmU7CiAgICAgfQotCiAgICAgaWYgKHBhdGggPT0gTlVMTCkgewogICAgICAgICBwYXRoID0gUHlfTm9uZTsKICAgICB9CiAKLSAgICBQeV9JTkNSRUYobXNnKTsKLSAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDAsIG1zZyk7Ci0KLSAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoa3dhcmdzLCAibmFtZSIsIG5hbWUpIDwgMCkKKyAgICBrd2FyZ3MgPSBQeURpY3RfTmV3KCk7CisgICAgaWYgKGt3YXJncyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoa3dhcmdzLCAibmFtZSIsIG5hbWUpIDwgMCkgewogICAgICAgICBnb3RvIGRvbmU7Ci0gICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGt3YXJncywgInBhdGgiLCBwYXRoKSA8IDApCisgICAgfQorICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhrd2FyZ3MsICJwYXRoIiwgcGF0aCkgPCAwKSB7CiAgICAgICAgIGdvdG8gZG9uZTsKKyAgICB9CiAKLSAgICBlcnJvciA9IFB5T2JqZWN0X0NhbGwoUHlFeGNfSW1wb3J0RXJyb3IsIGFyZ3MsIGt3YXJncyk7CisgICAgZXJyb3IgPSBfUHlPYmplY3RfRmFzdENhbGxEaWN0KGV4Y2VwdGlvbiwgJm1zZywgMSwga3dhcmdzKTsKICAgICBpZiAoZXJyb3IgIT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRPYmplY3QoKFB5T2JqZWN0ICopUHlfVFlQRShlcnJvciksIGVycm9yKTsKICAgICAgICAgUHlfREVDUkVGKGVycm9yKTsKICAgICB9CiAKIGRvbmU6Ci0gICAgUHlfREVDUkVGKGFyZ3MpOwogICAgIFB5X0RFQ1JFRihrd2FyZ3MpOwogICAgIHJldHVybiBOVUxMOwogfQogCitQeU9iamVjdCAqCitQeUVycl9TZXRJbXBvcnRFcnJvcihQeU9iamVjdCAqbXNnLCBQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnBhdGgpCit7CisgICAgcmV0dXJuIFB5RXJyX1NldEltcG9ydEVycm9yU3ViY2xhc3MoUHlFeGNfSW1wb3J0RXJyb3IsIG1zZywgbmFtZSwgcGF0aCk7Cit9CisKIHZvaWQKIF9QeUVycl9CYWRJbnRlcm5hbENhbGwoY29uc3QgY2hhciAqZmlsZW5hbWUsIGludCBsaW5lbm8pCiB7CmRpZmYgLS1naXQgYS9QeXRob24vZmlsZXV0aWxzLmMgYi9QeXRob24vZmlsZXV0aWxzLmMKaW5kZXggMjNlZWQ3MS4uZTg0ZDY2ZSAxMDA2NDQKLS0tIGEvUHl0aG9uL2ZpbGV1dGlscy5jCisrKyBiL1B5dGhvbi9maWxldXRpbHMuYwpAQCAtMjAsNyArMjAsNyBAQAogI2luY2x1ZGUgPGZjbnRsLmg+CiAjZW5kaWYgLyogSEFWRV9GQ05UTF9IICovCiAKLSNpZmRlZiBfX0FQUExFX18KKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX0FORFJPSURfXykKIGV4dGVybiB3Y2hhcl90KiBfUHlfRGVjb2RlVVRGOF9zdXJyb2dhdGVlc2NhcGUoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBzaXplKTsKICNlbmRpZgogCkBAIC00NCw3ICs0NCw3IEBACiAjZW5kaWYKICAgICBpbnQgdmFsaWQ7CiAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAotICAgIHZhbGlkID0gX1B5VmVyaWZ5X2ZkKGZkKSAmJiBpc2F0dHkoZmQpOworICAgIHZhbGlkID0gaXNhdHR5KGZkKTsKICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAogICAgIGlmICghdmFsaWQpCiAgICAgICAgIFB5X1JFVFVSTl9OT05FOwpAQCAtMTA0LDIzICsxMDQsMjQgQEAKICAgICBjaGFyICpsb2M7CiAjaWYgZGVmaW5lZChIQVZFX0xBTkdJTkZPX0gpICYmIGRlZmluZWQoQ09ERVNFVCkKICAgICBjaGFyICpjb2Rlc2V0LCAqKmFsaWFzOwotICAgIGNoYXIgZW5jb2RpbmdbMTAwXTsKKyAgICBjaGFyIGVuY29kaW5nWzIwXTsgICAvKiBsb25nZXN0IG5hbWU6ICJpc29fNjQ2Lmlydl8xOTkxXDAiICovCiAgICAgaW50IGlzX2FzY2lpOwogICAgIHVuc2lnbmVkIGludCBpOwogICAgIGNoYXIqIGFzY2lpX2FsaWFzZXNbXSA9IHsKICAgICAgICAgImFzY2lpIiwKKyAgICAgICAgLyogQWxpYXNlcyBmcm9tIExpYi9lbmNvZGluZ3MvYWxpYXNlcy5weSAqLwogICAgICAgICAiNjQ2IiwKLSAgICAgICAgImFuc2kteDMuNC0xOTY4IiwKLSAgICAgICAgImFuc2kteDMtNC0xOTY4IiwKLSAgICAgICAgImFuc2kteDMuNC0xOTg2IiwKKyAgICAgICAgImFuc2lfeDMuNF8xOTY4IiwKKyAgICAgICAgImFuc2lfeDMuNF8xOTg2IiwKKyAgICAgICAgImFuc2lfeDNfNF8xOTY4IiwKICAgICAgICAgImNwMzY3IiwKICAgICAgICAgImNzYXNjaWkiLAogICAgICAgICAiaWJtMzY3IiwKLSAgICAgICAgImlzbzY0Ni11cyIsCi0gICAgICAgICJpc28tNjQ2Lmlydi0xOTkxIiwKLSAgICAgICAgImlzby1pci02IiwKKyAgICAgICAgImlzbzY0Nl91cyIsCisgICAgICAgICJpc29fNjQ2Lmlydl8xOTkxIiwKKyAgICAgICAgImlzb19pcl82IiwKICAgICAgICAgInVzIiwKLSAgICAgICAgInVzLWFzY2lpIiwKKyAgICAgICAgInVzX2FzY2lpIiwKICAgICAgICAgTlVMTAogICAgIH07CiAjZW5kaWYKQEAgLTI3Miw3ICsyNzMsNyBAQAogd2NoYXJfdCoKIFB5X0RlY29kZUxvY2FsZShjb25zdCBjaGFyKiBhcmcsIHNpemVfdCAqc2l6ZSkKIHsKLSNpZmRlZiBfX0FQUExFX18KKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX0FORFJPSURfXykKICAgICB3Y2hhcl90ICp3c3RyOwogICAgIHdzdHIgPSBfUHlfRGVjb2RlVVRGOF9zdXJyb2dhdGVlc2NhcGUoYXJnLCBzdHJsZW4oYXJnKSk7CiAgICAgaWYgKHNpemUgIT0gTlVMTCkgewpAQCAtNDA1LDcgKzQwNiw3IEBACiAgICAgaWYgKHNpemUgIT0gTlVMTCkKICAgICAgICAgKnNpemUgPSAoc2l6ZV90KS0xOwogICAgIHJldHVybiBOVUxMOwotI2VuZGlmICAgLyogX19BUFBMRV9fICovCisjZW5kaWYgICAvKiBfX0FQUExFX18gb3IgX19BTkRST0lEX18gKi8KIH0KIAogLyogRW5jb2RlIGEgd2lkZSBjaGFyYWN0ZXIgc3RyaW5nIHRvIHRoZSBsb2NhbGUgZW5jb2Rpbmcgd2l0aCB0aGUKQEAgLTQyMyw3ICs0MjQsNyBAQAogY2hhcioKIFB5X0VuY29kZUxvY2FsZShjb25zdCB3Y2hhcl90ICp0ZXh0LCBzaXplX3QgKmVycm9yX3BvcykKIHsKLSNpZmRlZiBfX0FQUExFX18KKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX0FORFJPSURfXykKICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICBQeU9iamVjdCAqdW5pY29kZSwgKmJ5dGVzID0gTlVMTDsKICAgICBjaGFyICpjcGF0aDsKQEAgLTUyMSw3ICs1MjIsNyBAQAogICAgICAgICBieXRlcyA9IHJlc3VsdDsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKLSNlbmRpZiAgIC8qIF9fQVBQTEVfXyAqLworI2VuZGlmICAgLyogX19BUFBMRV9fIG9yIF9fQU5EUk9JRF9fICovCiB9CiAKIApAQCAtNjEzLDEzICs2MTQsOSBAQAogICAgIEhBTkRMRSBoOwogICAgIGludCB0eXBlOwogCi0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKQotICAgICAgICBoID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7Ci0gICAgZWxzZSB7Ci0gICAgICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKLSAgICAgICAgaCA9IChIQU5ETEUpX2dldF9vc2ZoYW5kbGUoZmQpOwotICAgICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAotICAgIH0KKyAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisgICAgaCA9IChIQU5ETEUpX2dldF9vc2ZoYW5kbGUoZmQpOworICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICiAKICAgICBpZiAoaCA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewogICAgICAgICAvKiBlcnJubyBpcyBhbHJlYWR5IHNldCBieSBfZ2V0X29zZmhhbmRsZSwgYnV0IHdlIGFsc28gc2V0CkBAIC02ODMsNiArNjgwLDEwIEBACiB7CiAgICAgaW50IHJlczsKIAorI2lmZGVmIFdJVEhfVEhSRUFECisgICAgYXNzZXJ0KFB5R0lMU3RhdGVfQ2hlY2soKSk7CisjZW5kaWYKKwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICByZXMgPSBfUHlfZnN0YXRfbm9yYWlzZShmZCwgc3RhdHVzKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwpAQCAtNzM4LDEyICs3MzksNiBAQAogICAgIEhBTkRMRSBoYW5kbGU7CiAgICAgRFdPUkQgZmxhZ3M7CiAKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKLSAgICAgICAgaWYgKHJhaXNlKQotICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotCiAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogICAgIGhhbmRsZSA9IChIQU5ETEUpX2dldF9vc2ZoYW5kbGUoZmQpOwogICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICkBAIC03OTQsNyArNzg5LDcgQEAKICAgICBpbnQgcmVxdWVzdDsKICAgICBpbnQgZXJyOwogI2VuZGlmCi0gICAgaW50IGZsYWdzOworICAgIGludCBmbGFncywgbmV3X2ZsYWdzOwogICAgIGludCByZXM7CiAjZW5kaWYKIApAQCAtODE1LDEyICs4MTAsNiBAQAogICAgIH0KIAogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKLSAgICAgICAgaWYgKHJhaXNlKQotICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotCiAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogICAgIGhhbmRsZSA9IChIQU5ETEUpX2dldF9vc2ZoYW5kbGUoZmQpOwogICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICkBAIC04ODUsMTEgKzg3NCwxOSBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgaWYgKGluaGVyaXRhYmxlKQotICAgICAgICBmbGFncyAmPSB+RkRfQ0xPRVhFQzsKLSAgICBlbHNlCi0gICAgICAgIGZsYWdzIHw9IEZEX0NMT0VYRUM7Ci0gICAgcmVzID0gZmNudGwoZmQsIEZfU0VURkQsIGZsYWdzKTsKKyAgICBpZiAoaW5oZXJpdGFibGUpIHsKKyAgICAgICAgbmV3X2ZsYWdzID0gZmxhZ3MgJiB+RkRfQ0xPRVhFQzsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIG5ld19mbGFncyA9IGZsYWdzIHwgRkRfQ0xPRVhFQzsKKyAgICB9CisKKyAgICBpZiAobmV3X2ZsYWdzID09IGZsYWdzKSB7CisgICAgICAgIC8qIEZEX0NMT0VYRUMgZmxhZyBhbHJlYWR5IHNldC9jbGVhcmVkOiBub3RoaW5nIHRvIGRvICovCisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHJlcyA9IGZjbnRsKGZkLCBGX1NFVEZELCBuZXdfZmxhZ3MpOwogICAgIGlmIChyZXMgPCAwKSB7CiAgICAgICAgIGlmIChyYWlzZSkKICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKQEAgLTExNjksMTkgKzExNjYsMTUgQEAKICAgICBpbnQgZXJyOwogICAgIGludCBhc3luY19lcnIgPSAwOwogCisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBhc3NlcnQoUHlHSUxTdGF0ZV9DaGVjaygpKTsKKyNlbmRpZgorCiAgICAgLyogX1B5X3JlYWQoKSBtdXN0IG5vdCBiZSBjYWxsZWQgd2l0aCBhbiBleGNlcHRpb24gc2V0LCBvdGhlcndpc2UgdGhlCiAgICAgICogY2FsbGVyIG1heSB0aGluayB0aGF0IHJlYWQoKSB3YXMgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwgYW5kIHRoZSBzaWduYWwKICAgICAgKiBoYW5kbGVyIHJhaXNlZCBhbiBleGNlcHRpb24uICovCiAgICAgYXNzZXJ0KCFQeUVycl9PY2N1cnJlZCgpKTsKIAotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkgewotICAgICAgICAvKiBzYXZlL3Jlc3RvcmUgZXJybm8gYmVjYXVzZSBQeUVycl9TZXRGcm9tRXJybm8oKSBjYW4gbW9kaWZ5IGl0ICovCi0gICAgICAgIGVyciA9IGVycm5vOwotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7Ci0gICAgICAgIGVycm5vID0gZXJyOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotCiAjaWZkZWYgTVNfV0lORE9XUwogICAgIGlmIChjb3VudCA+IElOVF9NQVgpIHsKICAgICAgICAgLyogT24gV2luZG93cywgdGhlIGNvdW50IHBhcmFtZXRlciBvZiByZWFkKCkgaXMgYW4gaW50ICovCkBAIC0xMjM1LDE2ICsxMjI4LDYgQEAKICAgICBpbnQgZXJyOwogICAgIGludCBhc3luY19lcnIgPSAwOwogCi0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKSB7Ci0gICAgICAgIGlmIChnaWxfaGVsZCkgewotICAgICAgICAgICAgLyogc2F2ZS9yZXN0b3JlIGVycm5vIGJlY2F1c2UgUHlFcnJfU2V0RnJvbUVycm5vKCkgY2FuIG1vZGlmeSBpdCAqLwotICAgICAgICAgICAgZXJyID0gZXJybm87Ci0gICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7Ci0gICAgICAgICAgICBlcnJubyA9IGVycjsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotCiAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBpZiAoY291bnQgPiAzMjc2NyAmJiBpc2F0dHkoZmQpKSB7CkBAIC0xMzI0LDYgKzEzMDcsMTAgQEAKIFB5X3NzaXplX3QKIF9QeV93cml0ZShpbnQgZmQsIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGNvdW50KQogeworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgYXNzZXJ0KFB5R0lMU3RhdGVfQ2hlY2soKSk7CisjZW5kaWYKKwogICAgIC8qIF9QeV93cml0ZSgpIG11c3Qgbm90IGJlIGNhbGxlZCB3aXRoIGFuIGV4Y2VwdGlvbiBzZXQsIG90aGVyd2lzZSB0aGUKICAgICAgKiBjYWxsZXIgbWF5IHRoaW5rIHRoYXQgd3JpdGUoKSB3YXMgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwgYW5kIHRoZSBzaWduYWwKICAgICAgKiBoYW5kbGVyIHJhaXNlZCBhbiBleGNlcHRpb24uICovCkBAIC0xNDczLDEwICsxNDYwLDkgQEAKICAgICBEV09SRCBmdHlwZTsKICNlbmRpZgogCi0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKSB7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIGFzc2VydChQeUdJTFN0YXRlX0NoZWNrKCkpOworI2VuZGlmCiAKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSApAQCAtMTYwMCw4NCArMTU4NiwzIEBACiAgICAgcmV0dXJuIC0xOwogfQogI2VuZGlmCi0KLSNpZiBkZWZpbmVkIF9NU0NfVkVSICYmIF9NU0NfVkVSID49IDE0MDAgJiYgX01TQ19WRVIgPCAxOTAwCi0vKiBMZWdhY3kgaW1wbGVtZW50YXRpb24gb2YgX1B5VmVyaWZ5X2ZkIHdoaWxlIHRyYW5zaXRpb25pbmcgdG8KLSAqIE1TVkMgMTQuMC4gVGhpcyBzaG91bGQgZXZlbnR1YWxseSBiZSByZW1vdmVkLiAoaXNzdWUyMzUyNCkKLSAqLwotCi0vKiBNaWNyb3NvZnQgQ1JUIGluIFZTMjAwNSBhbmQgaGlnaGVyIHdpbGwgdmVyaWZ5IHRoYXQgYSBmaWxlaGFuZGxlIGlzCi0gKiB2YWxpZCBhbmQgcmFpc2UgYW4gYXNzZXJ0aW9uIGlmIGl0IGlzbid0LgotICogTm9ybWFsbHksIGFuIGludmFsaWQgZmQgaXMgbGlrZWx5IHRvIGJlIGEgQyBwcm9ncmFtIGVycm9yIGFuZCB0aGVyZWZvcmUKLSAqIGFuIGFzc2VydGlvbiBjYW4gYmUgdXNlZnVsLCBidXQgaXQgZG9lcyBjb250cmFkaWN0IHRoZSBQT1NJWCBzdGFuZGFyZAotICogd2hpY2ggZm9yIHdyaXRlKDIpIHN0YXRlczoKLSAqICAgICJPdGhlcndpc2UsIC0xIHNoYWxsIGJlIHJldHVybmVkIGFuZCBlcnJubyBzZXQgdG8gaW5kaWNhdGUgdGhlIGVycm9yLiIKLSAqICAgICJbRUJBREZdIFRoZSBmaWxkZXMgYXJndW1lbnQgaXMgbm90IGEgdmFsaWQgZmlsZSBkZXNjcmlwdG9yIG9wZW4gZm9yCi0gKiAgICAgd3JpdGluZy4iCi0gKiBGdXJ0aGVybW9yZSwgcHl0aG9uIGFsbG93cyB0aGUgdXNlciB0byBlbnRlciBhbnkgb2xkIGludGVnZXIKLSAqIGFzIGEgZmQgYW5kIHNob3VsZCBtZXJlbHkgcmFpc2UgYSBweXRob24gZXhjZXB0aW9uIG9uIGVycm9yLgotICogVGhlIE1pY3Jvc29mdCBDUlQgZG9lc24ndCBwcm92aWRlIGFuIG9mZmljaWFsIHdheSB0byBjaGVjayBmb3IgdGhlCi0gKiB2YWxpZGl0eSBvZiBhIGZpbGUgZGVzY3JpcHRvciwgYnV0IHdlIGNhbiBlbXVsYXRlIGl0cyBpbnRlcm5hbCBiZWhhdmlvdXIKLSAqIGJ5IHVzaW5nIHRoZSBleHBvcnRlZCBfX3BpbmZvIGRhdGEgbWVtYmVyIGFuZCBrbm93bGVkZ2Ugb2YgdGhlCi0gKiBpbnRlcm5hbCBzdHJ1Y3R1cmVzIGludm9sdmVkLgotICogVGhlIHN0cnVjdHVyZXMgYmVsb3cgbXVzdCBiZSB1cGRhdGVkIGZvciBlYWNoIHZlcnNpb24gb2YgdmlzdWFsIHN0dWRpbwotICogYWNjb3JkaW5nIHRvIHRoZSBmaWxlIGludGVybmFsLmggaW4gdGhlIENSVCBzb3VyY2UsIHVudGlsIE1TIGNvbWVzCi0gKiB1cCB3aXRoIGEgbGVzcyBoYWNreSB3YXkgdG8gZG8gdGhpcy4KLSAqIChhbGwgb2YgdGhpcyBpcyB0byBhdm9pZCBnbG9iYWxseSBtb2RpZnlpbmcgdGhlIENSVCBiZWhhdmlvdXIgdXNpbmcKLSAqIF9zZXRfaW52YWxpZF9wYXJhbWV0ZXJfaGFuZGxlcigpIGFuZCBfQ3J0U2V0UmVwb3J0TW9kZSgpKQotICovCi0vKiBUaGUgYWN0dWFsIHNpemUgb2YgdGhlIHN0cnVjdHVyZSBpcyBkZXRlcm1pbmVkIGF0IHJ1bnRpbWUuCi0gKiBPbmx5IHRoZSBmaXJzdCBpdGVtcyBtdXN0IGJlIHByZXNlbnQuCi0gKi8KLXR5cGVkZWYgc3RydWN0IHsKLSAgICBpbnRwdHJfdCBvc2ZobmQ7Ci0gICAgY2hhciBvc2ZpbGU7Ci19IG15X2lvaW5mbzsKLQotZXh0ZXJuIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBjaGFyICogX19waW9pbmZvW107Ci0jZGVmaW5lIElPSU5GT19MMkUgNQotI2RlZmluZSBJT0lORk9fQVJSQVlTIDY0Ci0jZGVmaW5lIElPSU5GT19BUlJBWV9FTFRTICAgKDEgPDwgSU9JTkZPX0wyRSkKLSNkZWZpbmUgX05IQU5ETEVfICAgICAgICAgICAoSU9JTkZPX0FSUkFZUyAqIElPSU5GT19BUlJBWV9FTFRTKQotI2RlZmluZSBGT1BFTiAweDAxCi0jZGVmaW5lIF9OT19DT05TT0xFX0ZJTEVOTyAoaW50cHRyX3QpLTIKLQotLyogVGhpcyBmdW5jdGlvbiBlbXVsYXRlcyB3aGF0IHRoZSB3aW5kb3dzIENSVCBkb2VzIHRvIHZhbGlkYXRlIGZpbGUgaGFuZGxlcyAqLwotaW50Ci1fUHlWZXJpZnlfZmQoaW50IGZkKQotewotICAgIGNvbnN0IGludCBpMSA9IGZkID4+IElPSU5GT19MMkU7Ci0gICAgY29uc3QgaW50IGkyID0gZmQgJiAoKDEgPDwgSU9JTkZPX0wyRSkgLSAxKTsKLQotICAgIHN0YXRpYyBzaXplX3Qgc2l6ZW9mX2lvaW5mbyA9IDA7Ci0KLSAgICAvKiBEZXRlcm1pbmUgdGhlIGFjdHVhbCBzaXplIG9mIHRoZSBpb2luZm8gc3RydWN0dXJlLAotICAgICAqIGFzIHVzZWQgYnkgdGhlIENSVCBsb2FkZWQgaW4gbWVtb3J5Ci0gICAgICovCi0gICAgaWYgKHNpemVvZl9pb2luZm8gPT0gMCAmJiBfX3Bpb2luZm9bMF0gIT0gTlVMTCkgewotICAgICAgICBzaXplb2ZfaW9pbmZvID0gX21zaXplKF9fcGlvaW5mb1swXSkgLyBJT0lORk9fQVJSQVlfRUxUUzsKLSAgICB9Ci0gICAgaWYgKHNpemVvZl9pb2luZm8gPT0gMCkgewotICAgICAgICAvKiBUaGlzIHNob3VsZCBub3QgaGFwcGVuLi4uICovCi0gICAgICAgIGdvdG8gZmFpbDsKLSAgICB9Ci0KLSAgICAvKiBTZWUgdGhhdCBpdCBpc24ndCBhIHNwZWNpYWwgQ0xFQVIgZmlsZW5vICovCi0gICAgaWYgKGZkICE9IF9OT19DT05TT0xFX0ZJTEVOTykgewotICAgICAgICAvKiBNaWNyb3NvZnQgQ1JUIHdvdWxkIGNoZWNrIHRoYXQgMDw9ZmQ8X25oYW5kbGUgYnV0IHdlIGNhbid0IGRvIHRoYXQuICBJbnN0ZWFkCi0gICAgICAgICAqIHdlIGNoZWNrIHBvaW50ZXIgdmFsaWRpdHkgYW5kIG90aGVyIGluZm8KLSAgICAgICAgICovCi0gICAgICAgIGlmICgwIDw9IGkxICYmIGkxIDwgSU9JTkZPX0FSUkFZUyAmJiBfX3Bpb2luZm9baTFdICE9IE5VTEwpIHsKLSAgICAgICAgICAgIC8qIGZpbmFsbHksIGNoZWNrIHRoYXQgdGhlIGZpbGUgaXMgb3BlbiAqLwotICAgICAgICAgICAgbXlfaW9pbmZvKiBpbmZvID0gKG15X2lvaW5mbyopKF9fcGlvaW5mb1tpMV0gKyBpMiAqIHNpemVvZl9pb2luZm8pOwotICAgICAgICAgICAgaWYgKGluZm8tPm9zZmlsZSAmIEZPUEVOKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gIGZhaWw6Ci0gICAgZXJybm8gPSBFQkFERjsKLSAgICByZXR1cm4gMDsKLX0KLQotI2VuZGlmIC8qIGRlZmluZWQgX01TQ19WRVIgJiYgX01TQ19WRVIgPj0gMTQwMCAmJiBfTVNDX1ZFUiA8IDE5MDAgKi8KZGlmZiAtLWdpdCBhL1B5dGhvbi9mb3JtYXR0ZXJfdW5pY29kZS5jIGIvUHl0aG9uL2Zvcm1hdHRlcl91bmljb2RlLmMKaW5kZXggNjE3ZDU4Yi4uYTJjMmIzNiAxMDA2NDQKLS0tIGEvUHl0aG9uL2Zvcm1hdHRlcl91bmljb2RlLmMKKysrIGIvUHl0aG9uL2Zvcm1hdHRlcl91bmljb2RlLmMKQEAgLTMyLDE0ICszMiwyMCBAQAogewogICAgIGlmIChwcmVzZW50YXRpb25fdHlwZSA+IDMyICYmIHByZXNlbnRhdGlvbl90eXBlIDwgMTI4KQogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJDYW5ub3Qgc3BlY2lmeSAnLCcgd2l0aCAnJWMnLiIsCisgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHNwZWNpZnkgJywnIG9yICdfJyB3aXRoICclYycuIiwKICAgICAgICAgICAgICAgICAgICAgIChjaGFyKXByZXNlbnRhdGlvbl90eXBlKTsKICAgICBlbHNlCiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBzcGVjaWZ5ICcsJyB3aXRoICdcXHgleCcuIiwKKyAgICAgICAgICAgICAgICAgICAgICJDYW5ub3Qgc3BlY2lmeSAnLCcgb3IgJ18nIHdpdGggJ1xceCV4Jy4iLAogICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGludClwcmVzZW50YXRpb25fdHlwZSk7CiB9CiAKK3N0YXRpYyB2b2lkCitpbnZhbGlkX2NvbW1hX2FuZF91bmRlcnNjb3JlKHZvaWQpCit7CisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsICJDYW5ub3Qgc3BlY2lmeSBib3RoICcsJyBhbmQgJ18nLiIpOworfQorCiAvKgogICAgIGdldF9pbnRlZ2VyIGNvbnN1bWVzIDAgb3IgbW9yZSBkZWNpbWFsIGRpZ2l0IGNoYXJhY3RlcnMgZnJvbSBhbgogICAgIGlucHV0IHN0cmluZywgdXBkYXRlcyAqcmVzdWx0IHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgcG9zaXRpdmUKQEAgLTQ4LDE2ICs1NCwxNyBAQAogICAgIHJldHVybnMgLTEgb24gZXJyb3IuCiAqLwogc3RhdGljIGludAotZ2V0X2ludGVnZXIoUHlPYmplY3QgKnN0ciwgUHlfc3NpemVfdCAqcG9zLCBQeV9zc2l6ZV90IGVuZCwKK2dldF9pbnRlZ2VyKFB5T2JqZWN0ICpzdHIsIFB5X3NzaXplX3QgKnBwb3MsIFB5X3NzaXplX3QgZW5kLAogICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqcmVzdWx0KQogewotICAgIFB5X3NzaXplX3QgYWNjdW11bGF0b3IsIGRpZ2l0dmFsOworICAgIFB5X3NzaXplX3QgYWNjdW11bGF0b3IsIGRpZ2l0dmFsLCBwb3MgPSAqcHBvczsKICAgICBpbnQgbnVtZGlnaXRzOworICAgIGludCBraW5kID0gUHlVbmljb2RlX0tJTkQoc3RyKTsKKyAgICB2b2lkICpkYXRhID0gUHlVbmljb2RlX0RBVEEoc3RyKTsKKwogICAgIGFjY3VtdWxhdG9yID0gbnVtZGlnaXRzID0gMDsKLSAgICBmb3IgKDs7KCpwb3MpKyssIG51bWRpZ2l0cysrKSB7Ci0gICAgICAgIGlmICgqcG9zID49IGVuZCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkaWdpdHZhbCA9IFB5X1VOSUNPREVfVE9ERUNJTUFMKFB5VW5pY29kZV9SRUFEX0NIQVIoc3RyLCAqcG9zKSk7CisgICAgZm9yICg7IHBvcyA8IGVuZDsgcG9zKyssIG51bWRpZ2l0cysrKSB7CisgICAgICAgIGRpZ2l0dmFsID0gUHlfVU5JQ09ERV9UT0RFQ0lNQUwoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgcG9zKSk7CiAgICAgICAgIGlmIChkaWdpdHZhbCA8IDApCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgLyoKQEAgLTY5LDEwICs3NiwxMiBAQAogICAgICAgICBpZiAoYWNjdW11bGF0b3IgPiAoUFlfU1NJWkVfVF9NQVggLSBkaWdpdHZhbCkgLyAxMCkgewogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIlRvbyBtYW55IGRlY2ltYWwgZGlnaXRzIGluIGZvcm1hdCBzdHJpbmciKTsKKyAgICAgICAgICAgICpwcG9zID0gcG9zOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgICAgIGFjY3VtdWxhdG9yID0gYWNjdW11bGF0b3IgKiAxMCArIGRpZ2l0dmFsOwogICAgIH0KKyAgICAqcHBvcyA9IHBvczsKICAgICAqcmVzdWx0ID0gYWNjdW11bGF0b3I7CiAgICAgcmV0dXJuIG51bWRpZ2l0czsKIH0KQEAgLTEwNSw2ICsxMTQsMTQgQEAKICAgICB9CiB9CiAKKy8qIExvY2FsZSB0eXBlIGNvZGVzLiBMVF9OT19MT0NBTEUgbXVzdCBiZSB6ZXJvLiAqLworZW51bSBMb2NhbGVUeXBlIHsKKyAgICBMVF9OT19MT0NBTEUgPSAwLAorICAgIExUX0RFRkFVTFRfTE9DQUxFLAorICAgIExUX1VOREVSU0NPUkVfTE9DQUxFLAorICAgIExUX1VOREVSX0ZPVVJfTE9DQUxFLAorICAgIExUX0NVUlJFTlRfTE9DQUxFCit9OwogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlfVUNTNCBmaWxsX2NoYXI7CkBAIC0xMTIsNyArMTI5LDcgQEAKICAgICBpbnQgYWx0ZXJuYXRlOwogICAgIFB5X1VDUzQgc2lnbjsKICAgICBQeV9zc2l6ZV90IHdpZHRoOwotICAgIGludCB0aG91c2FuZHNfc2VwYXJhdG9yczsKKyAgICBlbnVtIExvY2FsZVR5cGUgdGhvdXNhbmRzX3NlcGFyYXRvcnM7CiAgICAgUHlfc3NpemVfdCBwcmVjaXNpb247CiAgICAgUHlfVUNTNCB0eXBlOwogfSBJbnRlcm5hbEZvcm1hdFNwZWM7CkBAIC0xNTAsOSArMTY3LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBkZWZhdWx0X2FsaWduKQogewogICAgIFB5X3NzaXplX3QgcG9zID0gc3RhcnQ7CisgICAgaW50IGtpbmQgPSBQeVVuaWNvZGVfS0lORChmb3JtYXRfc3BlYyk7CisgICAgdm9pZCAqZGF0YSA9IFB5VW5pY29kZV9EQVRBKGZvcm1hdF9zcGVjKTsKICAgICAvKiBlbmQtcG9zIGlzIHVzZWQgdGhyb3VnaG91dCB0aGlzIGNvZGUgdG8gc3BlY2lmeSB0aGUgbGVuZ3RoIG9mCiAgICAgICAgdGhlIGlucHV0IHN0cmluZyAqLwotI2RlZmluZSBSRUFEX3NwZWMoaW5kZXgpIFB5VW5pY29kZV9SRUFEX0NIQVIoZm9ybWF0X3NwZWMsIGluZGV4KQorI2RlZmluZSBSRUFEX3NwZWMoaW5kZXgpIFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGluZGV4KQogCiAgICAgUHlfc3NpemVfdCBjb25zdW1lZDsKICAgICBpbnQgYWxpZ25fc3BlY2lmaWVkID0gMDsKQEAgLTE2Myw3ICsxODIsNyBAQAogICAgIGZvcm1hdC0+YWx0ZXJuYXRlID0gMDsKICAgICBmb3JtYXQtPnNpZ24gPSAnXDAnOwogICAgIGZvcm1hdC0+d2lkdGggPSAtMTsKLSAgICBmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzID0gMDsKKyAgICBmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzID0gTFRfTk9fTE9DQUxFOwogICAgIGZvcm1hdC0+cHJlY2lzaW9uID0gLTE7CiAgICAgZm9ybWF0LT50eXBlID0gZGVmYXVsdF90eXBlOwogCkBAIC0yMTgsOSArMjM3LDIyIEBACiAKICAgICAvKiBDb21tYSBzaWduaWZpZXMgYWRkIHRob3VzYW5kcyBzZXBhcmF0b3JzICovCiAgICAgaWYgKGVuZC1wb3MgJiYgUkVBRF9zcGVjKHBvcykgPT0gJywnKSB7Ci0gICAgICAgIGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMgPSAxOworICAgICAgICBmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzID0gTFRfREVGQVVMVF9MT0NBTEU7CiAgICAgICAgICsrcG9zOwogICAgIH0KKyAgICAvKiBVbmRlcnNjb3JlIHNpZ25pZmllcyBhZGQgdGhvdXNhbmRzIHNlcGFyYXRvcnMgKi8KKyAgICBpZiAoZW5kLXBvcyAmJiBSRUFEX3NwZWMocG9zKSA9PSAnXycpIHsKKyAgICAgICAgaWYgKGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMgIT0gTFRfTk9fTE9DQUxFKSB7CisgICAgICAgICAgICBpbnZhbGlkX2NvbW1hX2FuZF91bmRlcnNjb3JlKCk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzID0gTFRfVU5ERVJTQ09SRV9MT0NBTEU7CisgICAgICAgICsrcG9zOworICAgIH0KKyAgICBpZiAoZW5kLXBvcyAmJiBSRUFEX3NwZWMocG9zKSA9PSAnLCcpIHsKKyAgICAgICAgaW52YWxpZF9jb21tYV9hbmRfdW5kZXJzY29yZSgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAKICAgICAvKiBQYXJzZSBmaWVsZCBwcmVjaXNpb24gKi8KICAgICBpZiAoZW5kLXBvcyAmJiBSRUFEX3NwZWMocG9zKSA9PSAnLicpIHsKQEAgLTI3MCw2ICszMDIsMTYgQEAKICAgICAgICAgY2FzZSAnXDAnOgogICAgICAgICAgICAgLyogVGhlc2UgYXJlIGFsbG93ZWQuIFNlZSBQRVAgMzc4LiovCiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAnYic6CisgICAgICAgIGNhc2UgJ28nOgorICAgICAgICBjYXNlICd4JzoKKyAgICAgICAgY2FzZSAnWCc6CisgICAgICAgICAgICAvKiBVbmRlcnNjb3JlcyBhcmUgYWxsb3dlZCBpbiBiaW4vb2N0L2hleC4gU2VlIFBFUCA1MTUuICovCisgICAgICAgICAgICBpZiAoZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycyA9PSBMVF9VTkRFUlNDT1JFX0xPQ0FMRSkgeworICAgICAgICAgICAgICAgIC8qIEV2ZXJ5IGZvdXIgZGlnaXRzLCBub3QgZXZlcnkgdGhyZWUsIGluIGJpbi9vY3QvaGV4LiAqLworICAgICAgICAgICAgICAgIGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMgPSBMVF9VTkRFUl9GT1VSX0xPQ0FMRTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGludmFsaWRfY29tbWFfdHlwZShmb3JtYXQtPnR5cGUpOwogICAgICAgICAgICAgcmV0dXJuIDA7CkBAIC0zNDYsMTMgKzM4OCw2IEBACiAvKioqKioqKioqKiogY29tbW9uIHJvdXRpbmVzIGZvciBudW1lcmljIGZvcm1hdHRpbmcgKioqKioqKioqKioqKioqKioqKioqLwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAotLyogTG9jYWxlIHR5cGUgY29kZXMuICovCi1lbnVtIExvY2FsZVR5cGUgewotICAgIExUX0NVUlJFTlRfTE9DQUxFLAotICAgIExUX0RFRkFVTFRfTE9DQUxFLAotICAgIExUX05PX0xPQ0FMRQotfTsKLQogLyogTG9jYWxlIGluZm8gbmVlZGVkIGZvciBmb3JtYXR0aW5nIGludGVnZXJzIGFuZCB0aGUgcGFydCBvZiBmbG9hdHMKICAgIGJlZm9yZSBhbmQgaW5jbHVkaW5nIHRoZSBkZWNpbWFsLiBOb3RlIHRoYXQgbG9jYWxlcyBvbmx5IHN1cHBvcnQKICAgIDgtYml0IGNoYXJzLCBub3QgdW5pY29kZS4gKi8KQEAgLTQwNCwxMyArNDM5LDE1IEBACiAgICAgICAgICAgICAgUHlfc3NpemVfdCAqbl9yZW1haW5kZXIsIGludCAqaGFzX2RlY2ltYWwpCiB7CiAgICAgUHlfc3NpemVfdCByZW1haW5kZXI7CisgICAgaW50IGtpbmQgPSBQeVVuaWNvZGVfS0lORChzKTsKKyAgICB2b2lkICpkYXRhID0gUHlVbmljb2RlX0RBVEEocyk7CiAKLSAgICB3aGlsZSAocG9zPGVuZCAmJiBQeV9JU0RJR0lUKFB5VW5pY29kZV9SRUFEX0NIQVIocywgcG9zKSkpCisgICAgd2hpbGUgKHBvczxlbmQgJiYgUHlfSVNESUdJVChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBwb3MpKSkKICAgICAgICAgKytwb3M7CiAgICAgcmVtYWluZGVyID0gcG9zOwogCiAgICAgLyogRG9lcyByZW1haW5kZXIgc3RhcnQgd2l0aCBhIGRlY2ltYWwgcG9pbnQ/ICovCi0gICAgKmhhc19kZWNpbWFsID0gcG9zPGVuZCAmJiBQeVVuaWNvZGVfUkVBRF9DSEFSKHMsIHJlbWFpbmRlcikgPT0gJy4nOworICAgICpoYXNfZGVjaW1hbCA9IHBvczxlbmQgJiYgUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgcmVtYWluZGVyKSA9PSAnLic7CiAKICAgICAvKiBTa2lwIHRoZSBkZWNpbWFsIHBvaW50LiAqLwogICAgIGlmICgqaGFzX2RlY2ltYWwpCkBAIC02NTgsMTIgKzY5NSwxMiBAQAogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgY2hhciBub19ncm91cGluZ1sxXSA9IHtDSEFSX01BWH07CitzdGF0aWMgY29uc3QgY2hhciBub19ncm91cGluZ1sxXSA9IHtDSEFSX01BWH07CiAKIC8qIEZpbmQgdGhlIGRlY2ltYWwgcG9pbnQgY2hhcmFjdGVyKHM/KSwgdGhvdXNhbmRzX3NlcGFyYXRvcihzPyksIGFuZAogICAgZ3JvdXBpbmcgZGVzY3JpcHRpb24sIGVpdGhlciBmb3IgdGhlIGN1cnJlbnQgbG9jYWxlIGlmIHR5cGUgaXMKLSAgIExUX0NVUlJFTlRfTE9DQUxFLCBhIGhhcmQtY29kZWQgbG9jYWxlIGlmIExUX0RFRkFVTFRfTE9DQUxFLCBvcgotICAgbm9uZSBpZiBMVF9OT19MT0NBTEUuICovCisgICBMVF9DVVJSRU5UX0xPQ0FMRSwgYSBoYXJkLWNvZGVkIGxvY2FsZSBpZiBMVF9ERUZBVUxUX0xPQ0FMRSBvcgorICAgTFRfVU5ERVJTQ09SRV9MT0NBTEUvTFRfVU5ERVJfRk9VUl9MT0NBTEUsIG9yIG5vbmUgaWYgTFRfTk9fTE9DQUxFLiAqLwogc3RhdGljIGludAogZ2V0X2xvY2FsZV9pbmZvKGVudW0gTG9jYWxlVHlwZSB0eXBlLCBMb2NhbGVJbmZvICpsb2NhbGVfaW5mbykKIHsKQEAgLTY4NCwxMyArNzIxLDE5IEBACiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIExUX0RFRkFVTFRfTE9DQUxFOgorICAgIGNhc2UgTFRfVU5ERVJTQ09SRV9MT0NBTEU6CisgICAgY2FzZSBMVF9VTkRFUl9GT1VSX0xPQ0FMRToKICAgICAgICAgbG9jYWxlX2luZm8tPmRlY2ltYWxfcG9pbnQgPSBQeVVuaWNvZGVfRnJvbU9yZGluYWwoJy4nKTsKLSAgICAgICAgbG9jYWxlX2luZm8tPnRob3VzYW5kc19zZXAgPSBQeVVuaWNvZGVfRnJvbU9yZGluYWwoJywnKTsKKyAgICAgICAgbG9jYWxlX2luZm8tPnRob3VzYW5kc19zZXAgPSBQeVVuaWNvZGVfRnJvbU9yZGluYWwoCisgICAgICAgICAgICB0eXBlID09IExUX0RFRkFVTFRfTE9DQUxFID8gJywnIDogJ18nKTsKICAgICAgICAgaWYgKCFsb2NhbGVfaW5mby0+ZGVjaW1hbF9wb2ludCB8fCAhbG9jYWxlX2luZm8tPnRob3VzYW5kc19zZXApCiAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIGxvY2FsZV9pbmZvLT5ncm91cGluZyA9ICJcMyI7IC8qIEdyb3VwIGV2ZXJ5IDMgY2hhcmFjdGVycy4gIFRoZQorICAgICAgICBpZiAodHlwZSAhPSBMVF9VTkRFUl9GT1VSX0xPQ0FMRSkKKyAgICAgICAgICAgIGxvY2FsZV9pbmZvLT5ncm91cGluZyA9ICJcMyI7IC8qIEdyb3VwIGV2ZXJ5IDMgY2hhcmFjdGVycy4gIFRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW1wbGljaXQpIHRyYWlsaW5nIDAgbWVhbnMgcmVwZWF0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZmluaXRlbHkuICovCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxvY2FsZV9pbmZvLT5ncm91cGluZyA9ICJcNCI7IC8qIEJpbi9vY3QvaGV4IGdyb3VwIGV2ZXJ5IGZvdXIuICovCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTFRfTk9fTE9DQUxFOgogICAgICAgICBsb2NhbGVfaW5mby0+ZGVjaW1hbF9wb2ludCA9IFB5VW5pY29kZV9Gcm9tT3JkaW5hbCgnLicpOwpAQCAtOTM3LDkgKzk4MCw3IEBACiAKICAgICAvKiBEZXRlcm1pbmUgdGhlIGdyb3VwaW5nLCBzZXBhcmF0b3IsIGFuZCBkZWNpbWFsIHBvaW50LCBpZiBhbnkuICovCiAgICAgaWYgKGdldF9sb2NhbGVfaW5mbyhmb3JtYXQtPnR5cGUgPT0gJ24nID8gTFRfQ1VSUkVOVF9MT0NBTEUgOgotICAgICAgICAgICAgICAgICAgICAgICAgKGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMgPwotICAgICAgICAgICAgICAgICAgICAgICAgIExUX0RFRkFVTFRfTE9DQUxFIDoKLSAgICAgICAgICAgICAgICAgICAgICAgICBMVF9OT19MT0NBTEUpLAorICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycywKICAgICAgICAgICAgICAgICAgICAgICAgICZsb2NhbGUpID09IC0xKQogICAgICAgICBnb3RvIGRvbmU7CiAKQEAgLTEwODQsOSArMTEyNSw3IEBACiAKICAgICAvKiBEZXRlcm1pbmUgdGhlIGdyb3VwaW5nLCBzZXBhcmF0b3IsIGFuZCBkZWNpbWFsIHBvaW50LCBpZiBhbnkuICovCiAgICAgaWYgKGdldF9sb2NhbGVfaW5mbyhmb3JtYXQtPnR5cGUgPT0gJ24nID8gTFRfQ1VSUkVOVF9MT0NBTEUgOgotICAgICAgICAgICAgICAgICAgICAgICAgKGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMgPwotICAgICAgICAgICAgICAgICAgICAgICAgIExUX0RFRkFVTFRfTE9DQUxFIDoKLSAgICAgICAgICAgICAgICAgICAgICAgICBMVF9OT19MT0NBTEUpLAorICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycywKICAgICAgICAgICAgICAgICAgICAgICAgICZsb2NhbGUpID09IC0xKQogICAgICAgICBnb3RvIGRvbmU7CiAKQEAgLTEyNjIsOSArMTMwMSw3IEBACiAKICAgICAvKiBEZXRlcm1pbmUgdGhlIGdyb3VwaW5nLCBzZXBhcmF0b3IsIGFuZCBkZWNpbWFsIHBvaW50LCBpZiBhbnkuICovCiAgICAgaWYgKGdldF9sb2NhbGVfaW5mbyhmb3JtYXQtPnR5cGUgPT0gJ24nID8gTFRfQ1VSUkVOVF9MT0NBTEUgOgotICAgICAgICAgICAgICAgICAgICAgICAgKGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMgPwotICAgICAgICAgICAgICAgICAgICAgICAgIExUX0RFRkFVTFRfTE9DQUxFIDoKLSAgICAgICAgICAgICAgICAgICAgICAgICBMVF9OT19MT0NBTEUpLAorICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycywKICAgICAgICAgICAgICAgICAgICAgICAgICZsb2NhbGUpID09IC0xKQogICAgICAgICBnb3RvIGRvbmU7CiAKZGlmZiAtLWdpdCBhL1B5dGhvbi9mcm96ZW4uYyBiL1B5dGhvbi9mcm96ZW4uYwppbmRleCA2NzZmMzk1Li43ZTA0ZjNjIDEwMDY0NAotLS0gYS9QeXRob24vZnJvemVuLmMKKysrIGIvUHl0aG9uL2Zyb3plbi5jCkBAIC0xNCwxNyArMTQsMTUgQEAKICAgIHRoZSBhcHByb3ByaWF0ZSBieXRlcyBmcm9tIE1fX19tYWluX18uYy4gKi8KIAogc3RhdGljIHVuc2lnbmVkIGNoYXIgTV9fX2hlbGxvX19bXSA9IHsKLSAgICA5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMCwKLSAgICAwLDY0LDAsMCwwLDExNSwyMCwwLDAsMCwxMDAsMiwwLDkwLDEsMCwKLSAgICAxMDEsMiwwLDEwMCwwLDAsMTMxLDEsMCwxLDEwMCwxLDAsODMsNDAsMywKLSAgICAwLDAsMCwxMTcsMTIsMCwwLDAsNzIsMTAxLDEwOCwxMDgsMTExLDMyLDExOSwxMTEsCi0gICAgMTE0LDEwOCwxMDAsMzMsNzgsODQsNDAsMywwLDAsMCwxMTcsNCwwLDAsMCwKLSAgICA4NCwxMTQsMTE3LDEwMSwxMTcsMTEsMCwwLDAsMTA1LDExMCwxMDUsMTE2LDEwNSw5NywxMDgsCi0gICAgMTA1LDEyMiwxMDEsMTAwLDExNyw1LDAsMCwwLDExMiwxMTQsMTA1LDExMCwxMTYsNDAsMCwKLSAgICAwLDAsMCw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDcsMCwKLSAgICAwLDAsMTAyLDEwOCw5NywxMDMsNDYsMTEyLDEyMSwxMTcsOCwwLDAsMCw2MCwxMDksCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSw2MiwxLDAsMCwwLDExNSwyLDAsMCwwLDYsCi0gICAgMSwKKyAgICAyMjcsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDAsCisgICAgMCw2NCwwLDAsMCwxMTUsMTYsMCwwLDAsMTAwLDAsOTAsMCwxMDEsMSwKKyAgICAxMDAsMSwxMzEsMSwxLDAsMTAwLDIsODMsMCw0MSwzLDg0LDEyMiwxMiw3MiwKKyAgICAxMDEsMTA4LDEwOCwxMTEsMzIsMTE5LDExMSwxMTQsMTA4LDEwMCwzMyw3OCw0MSwyLDIxOCwxMSwKKyAgICAxMDUsMTEwLDEwNSwxMTYsMTA1LDk3LDEwOCwxMDUsMTIyLDEwMSwxMDAsMjE4LDUsMTEyLDExNCwxMDUsCisgICAgMTEwLDExNiwxNjksMCwxMTQsMywwLDAsMCwxMTQsMywwLDAsMCwyNTAsMjIsCisgICAgNDYsNDcsODQsMTExLDExMSwxMDgsMTE1LDQ3LDEwMiwxMTQsMTAxLDEwMSwxMjIsMTAxLDQ3LDEwMiwKKyAgICAxMDgsOTcsMTAzLDQ2LDExMiwxMjEsMjE4LDgsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNjIsCisgICAgMSwwLDAsMCwxMTUsMiwwLDAsMCw0LDEsCiB9OwogCiAjZGVmaW5lIFNJWkUgKGludClzaXplb2YoTV9fX2hlbGxvX18pCmRpZmYgLS1naXQgYS9QeXRob24vZnJvemVubWFpbi5jIGIvUHl0aG9uL2Zyb3plbm1haW4uYwppbmRleCBkZThiZDM1Li43NjliMzNkIDEwMDY0NAotLS0gYS9QeXRob24vZnJvemVubWFpbi5jCisrKyBiL1B5dGhvbi9mcm96ZW5tYWluLmMKQEAgLTk5LDcgKzk5LDkgQEAKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgUHlXaW5GcmVlemVfRXhlVGVybSgpOwogI2VuZGlmCi0gICAgUHlfRmluYWxpemUoKTsKKyAgICBpZiAoUHlfRmluYWxpemVFeCgpIDwgMCkgeworICAgICAgICBzdHMgPSAxMjA7CisgICAgfQogCiBlcnJvcjoKICAgICBQeU1lbV9SYXdGcmVlKGFyZ3ZfY29weSk7CmRpZmYgLS1naXQgYS9QeXRob24vZnV0dXJlLmMgYi9QeXRob24vZnV0dXJlLmMKaW5kZXggNGRlODAxYi4uOWMxZjQzMCAxMDA2NDQKLS0tIGEvUHl0aG9uL2Z1dHVyZS5jCisrKyBiL1B5dGhvbi9mdXR1cmUuYwpAQCAtMjEsNyArMjEsNyBAQAogICAgIG5hbWVzID0gcy0+di5JbXBvcnRGcm9tLm5hbWVzOwogICAgIGZvciAoaSA9IDA7IGkgPCBhc2RsX3NlcV9MRU4obmFtZXMpOyBpKyspIHsKICAgICAgICAgYWxpYXNfdHkgbmFtZSA9IChhbGlhc190eSlhc2RsX3NlcV9HRVQobmFtZXMsIGkpOwotICAgICAgICBjb25zdCBjaGFyICpmZWF0dXJlID0gX1B5VW5pY29kZV9Bc1N0cmluZyhuYW1lLT5uYW1lKTsKKyAgICAgICAgY29uc3QgY2hhciAqZmVhdHVyZSA9IFB5VW5pY29kZV9Bc1VURjgobmFtZS0+bmFtZSk7CiAgICAgICAgIGlmICghZmVhdHVyZSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBpZiAoc3RyY21wKGZlYXR1cmUsIEZVVFVSRV9ORVNURURfU0NPUEVTKSA9PSAwKSB7CkBAIC03OSw3ICs3OSwxMCBAQAogCiAgICAgaSA9IDA7CiAgICAgZmlyc3QgPSAoc3RtdF90eSlhc2RsX3NlcV9HRVQobW9kLT52Lk1vZHVsZS5ib2R5LCBpKTsKLSAgICBpZiAoZmlyc3QtPmtpbmQgPT0gRXhwcl9raW5kICYmIGZpcnN0LT52LkV4cHIudmFsdWUtPmtpbmQgPT0gU3RyX2tpbmQpCisgICAgaWYgKGZpcnN0LT5raW5kID09IEV4cHJfa2luZAorICAgICAgICAmJiAoZmlyc3QtPnYuRXhwci52YWx1ZS0+a2luZCA9PSBTdHJfa2luZAorICAgICAgICAgICAgfHwgKGZpcnN0LT52LkV4cHIudmFsdWUtPmtpbmQgPT0gQ29uc3RhbnRfa2luZAorICAgICAgICAgICAgICAgICYmIFB5VW5pY29kZV9DaGVja0V4YWN0KGZpcnN0LT52LkV4cHIudmFsdWUtPnYuQ29uc3RhbnQudmFsdWUpKSkpCiAgICAgICAgIGkrKzsKIAogCmRpZmYgLS1naXQgYS9QeXRob24vZ2V0YXJncy5jIGIvUHl0aG9uL2dldGFyZ3MuYwppbmRleCBiMTBlNzc2Li42MTZjNmViIDEwMDY0NAotLS0gYS9QeXRob24vZ2V0YXJncy5jCisrKyBiL1B5dGhvbi9nZXRhcmdzLmMKQEAgLTE4LDE2ICsxOCwyOCBAQAogaW50IFB5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiwgY2hhciAqKiwgdmFfbGlzdCk7CiAKK2ludCBfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChQeU9iamVjdCAqLCBQeU9iamVjdCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqLCAuLi4pOworaW50IF9QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9QeUFyZ19QYXJzZXIgKiwgdmFfbGlzdCk7CisKICNpZmRlZiBIQVZFX0RFQ0xTUEVDX0RMTAogLyogRXhwb3J0IGZ1bmN0aW9ucyAqLwotUHlBUElfRlVOQyhpbnQpIF9QeUFyZ19QYXJzZV9TaXplVChQeU9iamVjdCAqLCBjaGFyICosIC4uLik7Ci1QeUFQSV9GVU5DKGludCkgX1B5QXJnX1BhcnNlVHVwbGVfU2l6ZVQoUHlPYmplY3QgKiwgY2hhciAqLCAuLi4pOworUHlBUElfRlVOQyhpbnQpIF9QeUFyZ19QYXJzZV9TaXplVChQeU9iamVjdCAqLCBjb25zdCBjaGFyICosIC4uLik7CitQeUFQSV9GVU5DKGludCkgX1B5QXJnX1BhcnNlU3RhY2tfU2l6ZVQoUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqcGFyc2VyLCAuLi4pOworUHlBUElfRlVOQyhpbnQpIF9QeUFyZ19QYXJzZVR1cGxlX1NpemVUKFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKIFB5QVBJX0ZVTkMoaW50KSBfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiwgY2hhciAqKiwgLi4uKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5X0J1aWxkVmFsdWVfU2l6ZVQoY29uc3QgY2hhciAqLCAuLi4pOwotUHlBUElfRlVOQyhpbnQpIF9QeUFyZ19WYVBhcnNlX1NpemVUKFB5T2JqZWN0ICosIGNoYXIgKiwgdmFfbGlzdCk7CitQeUFQSV9GVU5DKGludCkgX1B5QXJnX1ZhUGFyc2VfU2l6ZVQoUHlPYmplY3QgKiwgY29uc3QgY2hhciAqLCB2YV9saXN0KTsKIFB5QVBJX0ZVTkMoaW50KSBfUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICosIGNoYXIgKiosIHZhX2xpc3QpOworCitQeUFQSV9GVU5DKGludCkgX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3RfU2l6ZVQoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9QeUFyZ19QYXJzZXIgKiwgLi4uKTsKK1B5QVBJX0ZVTkMoaW50KSBfUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0X1NpemVUKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlBcmdfUGFyc2VyICosIHZhX2xpc3QpOwogI2VuZGlmCiAKICNkZWZpbmUgRkxBR19DT01QQVQgMQpAQCAtNTYsMTggKzY4LDI0IEBACiAvKiBGb3J3YXJkICovCiBzdGF0aWMgaW50IHZnZXRhcmdzMShQeU9iamVjdCAqLCBjb25zdCBjaGFyICosIHZhX2xpc3QgKiwgaW50KTsKIHN0YXRpYyB2b2lkIHNldGVycm9yKFB5X3NzaXplX3QsIGNvbnN0IGNoYXIgKiwgaW50ICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKLXN0YXRpYyBjaGFyICpjb252ZXJ0aXRlbShQeU9iamVjdCAqLCBjb25zdCBjaGFyICoqLCB2YV9saXN0ICosIGludCwgaW50ICosCi0gICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqLCBzaXplX3QsIGZyZWVsaXN0X3QgKik7Ci1zdGF0aWMgY2hhciAqY29udmVydHR1cGxlKFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKiosIHZhX2xpc3QgKiwgaW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKiwgY2hhciAqLCBzaXplX3QsIGludCwgZnJlZWxpc3RfdCAqKTsKLXN0YXRpYyBjaGFyICpjb252ZXJ0c2ltcGxlKFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKiosIHZhX2xpc3QgKiwgaW50LCBjaGFyICosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QsIGZyZWVsaXN0X3QgKik7Ci1zdGF0aWMgUHlfc3NpemVfdCBjb252ZXJ0YnVmZmVyKFB5T2JqZWN0ICosIHZvaWQgKipwLCBjaGFyICoqKTsKLXN0YXRpYyBpbnQgZ2V0YnVmZmVyKFB5T2JqZWN0ICosIFB5X2J1ZmZlciAqLCBjaGFyKiopOworc3RhdGljIGNvbnN0IGNoYXIgKmNvbnZlcnRpdGVtKFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKiosIHZhX2xpc3QgKiwgaW50LCBpbnQgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICosIHNpemVfdCwgZnJlZWxpc3RfdCAqKTsKK3N0YXRpYyBjb25zdCBjaGFyICpjb252ZXJ0dHVwbGUoUHlPYmplY3QgKiwgY29uc3QgY2hhciAqKiwgdmFfbGlzdCAqLCBpbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqLCBjaGFyICosIHNpemVfdCwgaW50LCBmcmVlbGlzdF90ICopOworc3RhdGljIGNvbnN0IGNoYXIgKmNvbnZlcnRzaW1wbGUoUHlPYmplY3QgKiwgY29uc3QgY2hhciAqKiwgdmFfbGlzdCAqLCBpbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICosIHNpemVfdCwgZnJlZWxpc3RfdCAqKTsKK3N0YXRpYyBQeV9zc2l6ZV90IGNvbnZlcnRidWZmZXIoUHlPYmplY3QgKiwgdm9pZCAqKnAsIGNvbnN0IGNoYXIgKiopOworc3RhdGljIGludCBnZXRidWZmZXIoUHlPYmplY3QgKiwgUHlfYnVmZmVyICosIGNvbnN0IGNoYXIqKik7CiAKIHN0YXRpYyBpbnQgdmdldGFyZ3NrZXl3b3JkcyhQeU9iamVjdCAqLCBQeU9iamVjdCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiwgY2hhciAqKiwgdmFfbGlzdCAqLCBpbnQpOwotc3RhdGljIGNoYXIgKnNraXBpdGVtKGNvbnN0IGNoYXIgKiosIHZhX2xpc3QgKiwgaW50KTsKK3N0YXRpYyBpbnQgdmdldGFyZ3NrZXl3b3Jkc2Zhc3QoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqLCB2YV9saXN0ICosIGludCk7CitzdGF0aWMgaW50IHZnZXRhcmdza2V5d29yZHNmYXN0X2ltcGwoUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqa2V5d29yZHMsIFB5T2JqZWN0ICprd25hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqcGFyc2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9saXN0ICpwX3ZhLCBpbnQgZmxhZ3MpOworc3RhdGljIGNvbnN0IGNoYXIgKnNraXBpdGVtKGNvbnN0IGNoYXIgKiosIHZhX2xpc3QgKiwgaW50KTsKIAogaW50CiBQeUFyZ19QYXJzZShQeU9iamVjdCAqYXJncywgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCkBAIC04Miw3ICsxMDAsNyBAQAogfQogCiBpbnQKLV9QeUFyZ19QYXJzZV9TaXplVChQeU9iamVjdCAqYXJncywgY2hhciAqZm9ybWF0LCAuLi4pCitfUHlBcmdfUGFyc2VfU2l6ZVQoUHlPYmplY3QgKmFyZ3MsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQogewogICAgIGludCByZXR2YWw7CiAgICAgdmFfbGlzdCB2YTsKQEAgLTEwNyw3ICsxMjUsNyBAQAogfQogCiBpbnQKLV9QeUFyZ19QYXJzZVR1cGxlX1NpemVUKFB5T2JqZWN0ICphcmdzLCBjaGFyICpmb3JtYXQsIC4uLikKK19QeUFyZ19QYXJzZVR1cGxlX1NpemVUKFB5T2JqZWN0ICphcmdzLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKIHsKICAgICBpbnQgcmV0dmFsOwogICAgIHZhX2xpc3QgdmE7CkBAIC0xMjMsMjAgKzE0MSwyNiBAQAogUHlBcmdfVmFQYXJzZShQeU9iamVjdCAqYXJncywgY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IHZhKQogewogICAgIHZhX2xpc3QgbHZhOworICAgIGludCByZXR2YWw7CiAKLSAgICAgICAgUHlfVkFfQ09QWShsdmEsIHZhKTsKKyAgICB2YV9jb3B5KGx2YSwgdmEpOwogCi0gICAgcmV0dXJuIHZnZXRhcmdzMShhcmdzLCBmb3JtYXQsICZsdmEsIDApOworICAgIHJldHZhbCA9IHZnZXRhcmdzMShhcmdzLCBmb3JtYXQsICZsdmEsIDApOworICAgIHZhX2VuZChsdmEpOworICAgIHJldHVybiByZXR2YWw7CiB9CiAKIGludAotX1B5QXJnX1ZhUGFyc2VfU2l6ZVQoUHlPYmplY3QgKmFyZ3MsIGNoYXIgKmZvcm1hdCwgdmFfbGlzdCB2YSkKK19QeUFyZ19WYVBhcnNlX1NpemVUKFB5T2JqZWN0ICphcmdzLCBjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgdmEpCiB7CiAgICAgdmFfbGlzdCBsdmE7CisgICAgaW50IHJldHZhbDsKIAotICAgICAgICBQeV9WQV9DT1BZKGx2YSwgdmEpOworICAgIHZhX2NvcHkobHZhLCB2YSk7CiAKLSAgICByZXR1cm4gdmdldGFyZ3MxKGFyZ3MsIGZvcm1hdCwgJmx2YSwgRkxBR19TSVpFX1QpOworICAgIHJldHZhbCA9IHZnZXRhcmdzMShhcmdzLCBmb3JtYXQsICZsdmEsIEZMQUdfU0laRV9UKTsKKyAgICB2YV9lbmQobHZhKTsKKyAgICByZXR1cm4gcmV0dmFsOwogfQogCiAKQEAgLTIwOCw3ICsyMzIsNyBAQAogICAgIGludCBlbmRmbXQgPSAwOwogICAgIGNvbnN0IGNoYXIgKmZvcm1hdHNhdmUgPSBmb3JtYXQ7CiAgICAgUHlfc3NpemVfdCBpLCBsZW47Ci0gICAgY2hhciAqbXNnOworICAgIGNvbnN0IGNoYXIgKm1zZzsKICAgICBpbnQgY29tcGF0ID0gZmxhZ3MgJiBGTEFHX0NPTVBBVDsKICAgICBmcmVlbGlzdGVudHJ5X3Qgc3RhdGljX2VudHJpZXNbU1RBVElDX0ZSRUVMSVNUX0VOVFJJRVNdOwogICAgIGZyZWVsaXN0X3QgZnJlZWxpc3Q7CkBAIC0zOTQsNyArNDE4LDEyIEBACiAgICAgICAgIFB5T1Nfc25wcmludGYocCwgc2l6ZW9mKGJ1ZikgLSAocCAtIGJ1ZiksICIgJS4yNTZzIiwgbXNnKTsKICAgICAgICAgbWVzc2FnZSA9IGJ1ZjsKICAgICB9Ci0gICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgbWVzc2FnZSk7CisgICAgaWYgKG1zZ1swXSA9PSAnKCcpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLCBtZXNzYWdlKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsIG1lc3NhZ2UpOworICAgIH0KIH0KIAogCkBAIC00MTYsNyArNDQ1LDcgQEAKICAgICAgIGFuZCBtc2didWYgaXMgcmV0dXJuZWQuCiAqLwogCi1zdGF0aWMgY2hhciAqCitzdGF0aWMgY29uc3QgY2hhciAqCiBjb252ZXJ0dHVwbGUoUHlPYmplY3QgKmFyZywgY29uc3QgY2hhciAqKnBfZm9ybWF0LCB2YV9saXN0ICpwX3ZhLCBpbnQgZmxhZ3MsCiAgICAgICAgICAgICAgaW50ICpsZXZlbHMsIGNoYXIgKm1zZ2J1Ziwgc2l6ZV90IGJ1ZnNpemUsIGludCB0b3BsZXZlbCwKICAgICAgICAgICAgICBmcmVlbGlzdF90ICpmcmVlbGlzdCkKQEAgLTQ3NCw3ICs1MDMsNyBAQAogCiAgICAgZm9ybWF0ID0gKnBfZm9ybWF0OwogICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKLSAgICAgICAgY2hhciAqbXNnOworICAgICAgICBjb25zdCBjaGFyICptc2c7CiAgICAgICAgIFB5T2JqZWN0ICppdGVtOwogICAgICAgICBpdGVtID0gUHlTZXF1ZW5jZV9HZXRJdGVtKGFyZywgaSk7CiAgICAgICAgIGlmIChpdGVtID09IE5VTEwpIHsKQEAgLTUwMSwxMSArNTMwLDExIEBACiAKIC8qIENvbnZlcnQgYSBzaW5nbGUgaXRlbS4gKi8KIAotc3RhdGljIGNoYXIgKgorc3RhdGljIGNvbnN0IGNoYXIgKgogY29udmVydGl0ZW0oUHlPYmplY3QgKmFyZywgY29uc3QgY2hhciAqKnBfZm9ybWF0LCB2YV9saXN0ICpwX3ZhLCBpbnQgZmxhZ3MsCiAgICAgICAgICAgICBpbnQgKmxldmVscywgY2hhciAqbXNnYnVmLCBzaXplX3QgYnVmc2l6ZSwgZnJlZWxpc3RfdCAqZnJlZWxpc3QpCiB7Ci0gICAgY2hhciAqbXNnOworICAgIGNvbnN0IGNoYXIgKm1zZzsKICAgICBjb25zdCBjaGFyICpmb3JtYXQgPSAqcF9mb3JtYXQ7CiAKICAgICBpZiAoKmZvcm1hdCA9PSAnKCcgLyogJyknICovKSB7CkBAIC01MzAsNyArNTU5LDcgQEAKIAogLyogRm9ybWF0IGFuIGVycm9yIG1lc3NhZ2UgZ2VuZXJhdGVkIGJ5IGNvbnZlcnRzaW1wbGUoKS4gKi8KIAotc3RhdGljIGNoYXIgKgorc3RhdGljIGNvbnN0IGNoYXIgKgogY29udmVydGVycihjb25zdCBjaGFyICpleHBlY3RlZCwgUHlPYmplY3QgKmFyZywgY2hhciAqbXNnYnVmLCBzaXplX3QgYnVmc2l6ZSkKIHsKICAgICBhc3NlcnQoZXhwZWN0ZWQgIT0gTlVMTCk7CkBAIC01NzIsNyArNjAxLDcgQEAKICAgIFdoZW4geW91IGFkZCBuZXcgZm9ybWF0IGNvZGVzLCBwbGVhc2UgZG9uJ3QgZm9yZ2V0IHBvb3Igc2tpcGl0ZW0oKSBiZWxvdy4KICovCiAKLXN0YXRpYyBjaGFyICoKK3N0YXRpYyBjb25zdCBjaGFyICoKIGNvbnZlcnRzaW1wbGUoUHlPYmplY3QgKmFyZywgY29uc3QgY2hhciAqKnBfZm9ybWF0LCB2YV9saXN0ICpwX3ZhLCBpbnQgZmxhZ3MsCiAgICAgICAgICAgICAgIGNoYXIgKm1zZ2J1Ziwgc2l6ZV90IGJ1ZnNpemUsIGZyZWVsaXN0X3QgKmZyZWVsaXN0KQogewpAQCAtNzUyLDE0ICs3ODEsMTMgQEAKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICBjYXNlICdMJzogey8qIFBZX0xPTkdfTE9ORyAqLwotICAgICAgICBQWV9MT05HX0xPTkcgKnAgPSB2YV9hcmcoICpwX3ZhLCBQWV9MT05HX0xPTkcgKiApOwotICAgICAgICBQWV9MT05HX0xPTkcgaXZhbDsKKyAgICBjYXNlICdMJzogey8qIGxvbmcgbG9uZyAqLworICAgICAgICBsb25nIGxvbmcgKnAgPSB2YV9hcmcoICpwX3ZhLCBsb25nIGxvbmcgKiApOworICAgICAgICBsb25nIGxvbmcgaXZhbDsKICAgICAgICAgaWYgKGZsb2F0X2FyZ3VtZW50X2Vycm9yKGFyZykpCiAgICAgICAgICAgICBSRVRVUk5fRVJSX09DQ1VSUkVEOwogICAgICAgICBpdmFsID0gUHlMb25nX0FzTG9uZ0xvbmcoYXJnKTsKLSAgICAgICAgaWYgKGl2YWwgPT0gKFBZX0xPTkdfTE9ORyktMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBpZiAoaXZhbCA9PSAobG9uZyBsb25nKS0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICBSRVRVUk5fRVJSX09DQ1VSUkVEOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICAqcCA9IGl2YWw7CkBAIC03NjcsOCArNzk1LDggQEAKICAgICB9CiAKICAgICBjYXNlICdLJzogeyAvKiBsb25nIGxvbmcgc2l6ZWQgYml0ZmllbGQgKi8KLSAgICAgICAgdW5zaWduZWQgUFlfTE9OR19MT05HICpwID0gdmFfYXJnKCpwX3ZhLCB1bnNpZ25lZCBQWV9MT05HX0xPTkcgKik7Ci0gICAgICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBpdmFsOworICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgKnAgPSB2YV9hcmcoKnBfdmEsIHVuc2lnbmVkIGxvbmcgbG9uZyAqKTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGl2YWw7CiAgICAgICAgIGlmIChQeUxvbmdfQ2hlY2soYXJnKSkKICAgICAgICAgICAgIGl2YWwgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzayhhcmcpOwogICAgICAgICBlbHNlCkBAIC03NzYsNyArODA0LDYgQEAKICAgICAgICAgKnAgPSBpdmFsOwogICAgICAgICBicmVhazsKICAgICB9Ci0jZW5kaWYKIAogICAgIGNhc2UgJ2YnOiB7LyogZmxvYXQgKi8KICAgICAgICAgZmxvYXQgKnAgPSB2YV9hcmcoKnBfdmEsIGZsb2F0ICopOwpAQCAtODU3LDcgKzg4NCw3IEBACiAKICAgICBjYXNlICd5Jzogey8qIGFueSBieXRlcy1saWtlIG9iamVjdCAqLwogICAgICAgICB2b2lkICoqcCA9ICh2b2lkICoqKXZhX2FyZygqcF92YSwgY2hhciAqKik7Ci0gICAgICAgIGNoYXIgKmJ1ZjsKKyAgICAgICAgY29uc3QgY2hhciAqYnVmOwogICAgICAgICBQeV9zc2l6ZV90IGNvdW50OwogICAgICAgICBpZiAoKmZvcm1hdCA9PSAnKicpIHsKICAgICAgICAgICAgIGlmIChnZXRidWZmZXIoYXJnLCAoUHlfYnVmZmVyKilwLCAmYnVmKSA8IDApCkBAIC05MDQsNyArOTMxLDcgQEAKICAgICAgICAgICAgICAgICBQeUJ1ZmZlcl9GaWxsSW5mbyhwLCBhcmcsIHNhcmcsIGxlbiwgMSwgMCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsgLyogYW55IGJ5dGVzLWxpa2Ugb2JqZWN0ICovCi0gICAgICAgICAgICAgICAgY2hhciAqYnVmOworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmJ1ZjsKICAgICAgICAgICAgICAgICBpZiAoZ2V0YnVmZmVyKGFyZywgcCwgJmJ1ZikgPCAwKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycihidWYsIGFyZywgbXNnYnVmLCBidWZzaXplKTsKICAgICAgICAgICAgIH0KQEAgLTkzNCw3ICs5NjEsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7IC8qIHJlYWQtb25seSBieXRlcy1saWtlIG9iamVjdCAqLwogICAgICAgICAgICAgICAgIC8qIFhYWCBSZWFsbHk/ICovCi0gICAgICAgICAgICAgICAgY2hhciAqYnVmOworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmJ1ZjsKICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGNvdW50ID0gY29udmVydGJ1ZmZlcihhcmcsIHAsICZidWYpOwogICAgICAgICAgICAgICAgIGlmIChjb3VudCA8IDApCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKGJ1ZiwgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwpAQCAtMTA1MSwzNSArMTA3OCwyNSBAQAogICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKCIoQXNDaGFyQnVmZmVyIGZhaWxlZCkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywgbXNnYnVmLCBidWZzaXplKTsKICAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICp1OwotCi0gICAgICAgICAgICAvKiBDb252ZXJ0IG9iamVjdCB0byBVbmljb2RlICovCi0gICAgICAgICAgICB1ID0gUHlVbmljb2RlX0Zyb21PYmplY3QoYXJnKTsKLSAgICAgICAgICAgIGlmICh1ID09IE5VTEwpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoCi0gICAgICAgICAgICAgICAgICAgICJzdHJpbmcgb3IgdW5pY29kZSBvciB0ZXh0IGJ1ZmZlciIsCi0gICAgICAgICAgICAgICAgICAgIGFyZywgbXNnYnVmLCBidWZzaXplKTsKLQorICAgICAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2soYXJnKSkgewogICAgICAgICAgICAgLyogRW5jb2RlIG9iamVjdDsgdXNlIGRlZmF1bHQgZXJyb3IgaGFuZGxpbmcgKi8KLSAgICAgICAgICAgIHMgPSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKHUsCisgICAgICAgICAgICBzID0gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyhhcmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwotICAgICAgICAgICAgUHlfREVDUkVGKHUpOwogICAgICAgICAgICAgaWYgKHMgPT0gTlVMTCkKICAgICAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycigiKGVuY29kaW5nIGZhaWxlZCkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywgbXNnYnVmLCBidWZzaXplKTsKLSAgICAgICAgICAgIGlmICghUHlCeXRlc19DaGVjayhzKSkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycigKLSAgICAgICAgICAgICAgICAgICAgIihlbmNvZGVyIGZhaWxlZCB0byByZXR1cm4gYnl0ZXMpIiwKLSAgICAgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgYXNzZXJ0KFB5Qnl0ZXNfQ2hlY2socykpOwogICAgICAgICAgICAgc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUocyk7CiAgICAgICAgICAgICBwdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhzKTsKICAgICAgICAgICAgIGlmIChwdHIgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBwdHIgPSAiIjsKICAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKAorICAgICAgICAgICAgICAgIHJlY29kZV9zdHJpbmdzID8gInN0ciIgOiAic3RyLCBieXRlcyBvciBieXRlYXJyYXkiLAorICAgICAgICAgICAgICAgIGFyZywgbXNnYnVmLCBidWZzaXplKTsKKyAgICAgICAgfQogCiAgICAgICAgIC8qIFdyaXRlIG91dHB1dDsgb3V0cHV0IGlzIGd1YXJhbnRlZWQgdG8gYmUgMC10ZXJtaW5hdGVkICovCiAgICAgICAgIGlmICgqZm9ybWF0ID09ICcjJykgewpAQCAtMTEyOSw3ICsxMTQ2LDcgQEAKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgaWYgKHNpemUgKyAxID4gQlVGRkVSX0xFTikgewogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocyk7Ci0gICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuY29kZWQgc3RyaW5nIHRvbyBsb25nICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIoJXpkLCBtYXhpbXVtIGxlbmd0aCAlemQpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeV9zc2l6ZV90KXNpemUsIChQeV9zc2l6ZV90KShCVUZGRVJfTEVOLTEpKTsKQEAgLTEyODMsNyArMTMwMCw3IEBACiB9CiAKIHN0YXRpYyBQeV9zc2l6ZV90Ci1jb252ZXJ0YnVmZmVyKFB5T2JqZWN0ICphcmcsIHZvaWQgKipwLCBjaGFyICoqZXJybXNnKQorY29udmVydGJ1ZmZlcihQeU9iamVjdCAqYXJnLCB2b2lkICoqcCwgY29uc3QgY2hhciAqKmVycm1zZykKIHsKICAgICBQeUJ1ZmZlclByb2NzICpwYiA9IFB5X1RZUEUoYXJnKS0+dHBfYXNfYnVmZmVyOwogICAgIFB5X3NzaXplX3QgY291bnQ7CkBAIC0xMzA1LDcgKzEzMjIsNyBAQAogfQogCiBzdGF0aWMgaW50Ci1nZXRidWZmZXIoUHlPYmplY3QgKmFyZywgUHlfYnVmZmVyICp2aWV3LCBjaGFyICoqZXJybXNnKQorZ2V0YnVmZmVyKFB5T2JqZWN0ICphcmcsIFB5X2J1ZmZlciAqdmlldywgY29uc3QgY2hhciAqKmVycm1zZykKIHsKICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGFyZywgdmlldywgUHlCVUZfU0lNUExFKSAhPSAwKSB7CiAgICAgICAgICplcnJtc2cgPSAiYnl0ZXMtbGlrZSBvYmplY3QiOwpAQCAtMTM5MSw5ICsxNDA4LDEwIEBACiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgICAgICBQeV9WQV9DT1BZKGx2YSwgdmEpOworICAgIHZhX2NvcHkobHZhLCB2YSk7CiAKICAgICByZXR2YWwgPSB2Z2V0YXJnc2tleXdvcmRzKGFyZ3MsIGtleXdvcmRzLCBmb3JtYXQsIGt3bGlzdCwgJmx2YSwgMCk7CisgICAgdmFfZW5kKGx2YSk7CiAgICAgcmV0dXJuIHJldHZhbDsKIH0KIApAQCAtMTQxNSwxMCArMTQzMywxMzggQEAKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgICAgIFB5X1ZBX0NPUFkobHZhLCB2YSk7CisgICAgdmFfY29weShsdmEsIHZhKTsKIAogICAgIHJldHZhbCA9IHZnZXRhcmdza2V5d29yZHMoYXJncywga2V5d29yZHMsIGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJmx2YSwgRkxBR19TSVpFX1QpOworICAgIHZhX2VuZChsdmEpOworICAgIHJldHVybiByZXR2YWw7Cit9CisKK2ludAorX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprZXl3b3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqcGFyc2VyLCAuLi4pCit7CisgICAgaW50IHJldHZhbDsKKyAgICB2YV9saXN0IHZhOworCisgICAgaWYgKChhcmdzID09IE5VTEwgfHwgIVB5VHVwbGVfQ2hlY2soYXJncykpIHx8CisgICAgICAgIChrZXl3b3JkcyAhPSBOVUxMICYmICFQeURpY3RfQ2hlY2soa2V5d29yZHMpKSB8fAorICAgICAgICBwYXJzZXIgPT0gTlVMTCkKKyAgICB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICB2YV9zdGFydCh2YSwgcGFyc2VyKTsKKyAgICByZXR2YWwgPSB2Z2V0YXJnc2tleXdvcmRzZmFzdChhcmdzLCBrZXl3b3JkcywgcGFyc2VyLCAmdmEsIDApOworICAgIHZhX2VuZCh2YSk7CisgICAgcmV0dXJuIHJldHZhbDsKK30KKworaW50CitfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdF9TaXplVChQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmtleXdvcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlBcmdfUGFyc2VyICpwYXJzZXIsIC4uLikKK3sKKyAgICBpbnQgcmV0dmFsOworICAgIHZhX2xpc3QgdmE7CisKKyAgICBpZiAoKGFyZ3MgPT0gTlVMTCB8fCAhUHlUdXBsZV9DaGVjayhhcmdzKSkgfHwKKyAgICAgICAgKGtleXdvcmRzICE9IE5VTEwgJiYgIVB5RGljdF9DaGVjayhrZXl3b3JkcykpIHx8CisgICAgICAgIHBhcnNlciA9PSBOVUxMKQorICAgIHsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHZhX3N0YXJ0KHZhLCBwYXJzZXIpOworICAgIHJldHZhbCA9IHZnZXRhcmdza2V5d29yZHNmYXN0KGFyZ3MsIGtleXdvcmRzLCBwYXJzZXIsICZ2YSwgRkxBR19TSVpFX1QpOworICAgIHZhX2VuZCh2YSk7CisgICAgcmV0dXJuIHJldHZhbDsKK30KKworaW50CitfUHlBcmdfUGFyc2VTdGFjayhQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzLAorICAgICAgICAgICAgICAgICAgc3RydWN0IF9QeUFyZ19QYXJzZXIgKnBhcnNlciwgLi4uKQoreworICAgIGludCByZXR2YWw7CisgICAgdmFfbGlzdCB2YTsKKworICAgIGlmICgoa3duYW1lcyAhPSBOVUxMICYmICFQeVR1cGxlX0NoZWNrKGt3bmFtZXMpKSB8fAorICAgICAgICBwYXJzZXIgPT0gTlVMTCkKKyAgICB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICB2YV9zdGFydCh2YSwgcGFyc2VyKTsKKyAgICByZXR2YWwgPSB2Z2V0YXJnc2tleXdvcmRzZmFzdF9pbXBsKGFyZ3MsIG5hcmdzLCBOVUxMLCBrd25hbWVzLCBwYXJzZXIsICZ2YSwgMCk7CisgICAgdmFfZW5kKHZhKTsKKyAgICByZXR1cm4gcmV0dmFsOworfQorCitpbnQKK19QeUFyZ19QYXJzZVN0YWNrX1NpemVUKFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqcGFyc2VyLCAuLi4pCit7CisgICAgaW50IHJldHZhbDsKKyAgICB2YV9saXN0IHZhOworCisgICAgaWYgKChrd25hbWVzICE9IE5VTEwgJiYgIVB5VHVwbGVfQ2hlY2soa3duYW1lcykpIHx8CisgICAgICAgIHBhcnNlciA9PSBOVUxMKQorICAgIHsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHZhX3N0YXJ0KHZhLCBwYXJzZXIpOworICAgIHJldHZhbCA9IHZnZXRhcmdza2V5d29yZHNmYXN0X2ltcGwoYXJncywgbmFyZ3MsIE5VTEwsIGt3bmFtZXMsIHBhcnNlciwgJnZhLCBGTEFHX1NJWkVfVCk7CisgICAgdmFfZW5kKHZhKTsKKyAgICByZXR1cm4gcmV0dmFsOworfQorCisKK2ludAorX1B5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmtleXdvcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlBcmdfUGFyc2VyICpwYXJzZXIsIHZhX2xpc3QgdmEpCit7CisgICAgaW50IHJldHZhbDsKKyAgICB2YV9saXN0IGx2YTsKKworICAgIGlmICgoYXJncyA9PSBOVUxMIHx8ICFQeVR1cGxlX0NoZWNrKGFyZ3MpKSB8fAorICAgICAgICAoa2V5d29yZHMgIT0gTlVMTCAmJiAhUHlEaWN0X0NoZWNrKGtleXdvcmRzKSkgfHwKKyAgICAgICAgcGFyc2VyID09IE5VTEwpCisgICAgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgdmFfY29weShsdmEsIHZhKTsKKworICAgIHJldHZhbCA9IHZnZXRhcmdza2V5d29yZHNmYXN0KGFyZ3MsIGtleXdvcmRzLCBwYXJzZXIsICZsdmEsIDApOworICAgIHZhX2VuZChsdmEpOworICAgIHJldHVybiByZXR2YWw7Cit9CisKK2ludAorX1B5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdF9TaXplVChQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmtleXdvcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlBcmdfUGFyc2VyICpwYXJzZXIsIHZhX2xpc3QgdmEpCit7CisgICAgaW50IHJldHZhbDsKKyAgICB2YV9saXN0IGx2YTsKKworICAgIGlmICgoYXJncyA9PSBOVUxMIHx8ICFQeVR1cGxlX0NoZWNrKGFyZ3MpKSB8fAorICAgICAgICAoa2V5d29yZHMgIT0gTlVMTCAmJiAhUHlEaWN0X0NoZWNrKGtleXdvcmRzKSkgfHwKKyAgICAgICAgcGFyc2VyID09IE5VTEwpCisgICAgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgdmFfY29weShsdmEsIHZhKTsKKworICAgIHJldHZhbCA9IHZnZXRhcmdza2V5d29yZHNmYXN0KGFyZ3MsIGtleXdvcmRzLCBwYXJzZXIsICZsdmEsIEZMQUdfU0laRV9UKTsKKyAgICB2YV9lbmQobHZhKTsKICAgICByZXR1cm4gcmV0dmFsOwogfQogCkBAIC0xNDQ4LDcgKzE1OTQsOCBAQAogICAgIGNvbnN0IGNoYXIgKmZuYW1lLCAqbXNnLCAqY3VzdG9tX21zZywgKmtleXdvcmQ7CiAgICAgaW50IG1pbiA9IElOVF9NQVg7CiAgICAgaW50IG1heCA9IElOVF9NQVg7Ci0gICAgaW50IGksIGxlbjsKKyAgICBpbnQgaSwgcG9zLCBsZW47CisgICAgaW50IHNraXAgPSAwOwogICAgIFB5X3NzaXplX3QgbmFyZ3MsIG5rZXl3b3JkczsKICAgICBQeU9iamVjdCAqY3VycmVudF9hcmc7CiAgICAgZnJlZWxpc3RlbnRyeV90IHN0YXRpY19lbnRyaWVzW1NUQVRJQ19GUkVFTElTVF9FTlRSSUVTXTsKQEAgLTE0NzYsOSArMTYyMywxNyBAQAogICAgICAgICAgICAgY3VzdG9tX21zZysrOwogICAgIH0KIAorICAgIC8qIHNjYW4ga3dsaXN0IGFuZCBjb3VudCB0aGUgbnVtYmVyIG9mIHBvc2l0aW9uYWwtb25seSBwYXJhbWV0ZXJzICovCisgICAgZm9yIChwb3MgPSAwOyBrd2xpc3RbcG9zXSAmJiAhKmt3bGlzdFtwb3NdOyBwb3MrKykgeworICAgIH0KICAgICAvKiBzY2FuIGt3bGlzdCBhbmQgZ2V0IGdyZWF0ZXN0IHBvc3NpYmxlIG5iciBvZiBhcmdzICovCi0gICAgZm9yIChsZW49MDsga3dsaXN0W2xlbl07IGxlbisrKQotICAgICAgICBjb250aW51ZTsKKyAgICBmb3IgKGxlbiA9IHBvczsga3dsaXN0W2xlbl07IGxlbisrKSB7CisgICAgICAgIGlmICghKmt3bGlzdFtsZW5dKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVtcHR5IGtleXdvcmQgcGFyYW1ldGVyIG5hbWUiKTsKKyAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOworICAgICAgICB9CisgICAgfQogCiAgICAgaWYgKGxlbiA+IFNUQVRJQ19GUkVFTElTVF9FTlRSSUVTKSB7CiAgICAgICAgIGZyZWVsaXN0LmVudHJpZXMgPSBQeU1lbV9ORVcoZnJlZWxpc3RlbnRyeV90LCBsZW4pOwpAQCAtMTUwNyw3ICsxNjYyLDcgQEAKICAgICAgICAga2V5d29yZCA9IGt3bGlzdFtpXTsKICAgICAgICAgaWYgKCpmb3JtYXQgPT0gJ3wnKSB7CiAgICAgICAgICAgICBpZiAobWluICE9IElOVF9NQVgpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgZm9ybWF0IHN0cmluZyAofCBzcGVjaWZpZWQgdHdpY2UpIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgICAgICAgICB9CkBAIC0xNTE2LDE0ICsxNjcxLDE0IEBACiAgICAgICAgICAgICBmb3JtYXQrKzsKIAogICAgICAgICAgICAgaWYgKG1heCAhPSBJTlRfTUFYKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGZvcm1hdCBzdHJpbmcgKCQgYmVmb3JlIHwpIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgaWYgKCpmb3JtYXQgPT0gJyQnKSB7CiAgICAgICAgICAgICBpZiAobWF4ICE9IElOVF9NQVgpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgZm9ybWF0IHN0cmluZyAoJCBzcGVjaWZpZWQgdHdpY2UpIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgICAgICAgICB9CkBAIC0xNTMxLDYgKzE2ODYsMTcgQEAKICAgICAgICAgICAgIG1heCA9IGk7CiAgICAgICAgICAgICBmb3JtYXQrKzsKIAorICAgICAgICAgICAgaWYgKG1heCA8IHBvcykgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVtcHR5IHBhcmFtZXRlciBuYW1lIGFmdGVyICQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChza2lwKSB7CisgICAgICAgICAgICAgICAgLyogTm93IHdlIGtub3cgdGhlIG1pbmltYWwgYW5kIHRoZSBtYXhpbWFsIG51bWJlcnMgb2YKKyAgICAgICAgICAgICAgICAgKiBwb3NpdGlvbmFsIGFyZ3VtZW50cyBhbmQgY2FuIHJhaXNlIGFuIGV4Y2VwdGlvbiB3aXRoCisgICAgICAgICAgICAgICAgICogaW5mb3JtYXRpdmUgbWVzc2FnZSAoc2VlIGJlbG93KS4gKi8KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChtYXggPCBuYXJncykgewogICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGdW5jdGlvbiB0YWtlcyAlcyAlZCBwb3NpdGlvbmFsIGFyZ3VtZW50cyIKQEAgLTE1NDEsNjYgKzE3MDcsOTAgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAoSVNfRU5EX09GX0ZPUk1BVCgqZm9ybWF0KSkgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAiTW9yZSBrZXl3b3JkIGxpc3QgZW50cmllcyAoJWQpIHRoYW4gIgogICAgICAgICAgICAgICAgICAgICAgICAgICJmb3JtYXQgc3BlY2lmaWVycyAoJWQpIiwgbGVuLCBpKTsKICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOwogICAgICAgICB9Ci0gICAgICAgIGN1cnJlbnRfYXJnID0gTlVMTDsKLSAgICAgICAgaWYgKG5rZXl3b3JkcykgewotICAgICAgICAgICAgY3VycmVudF9hcmcgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhrZXl3b3Jkcywga2V5d29yZCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGN1cnJlbnRfYXJnKSB7Ci0gICAgICAgICAgICAtLW5rZXl3b3JkczsKLSAgICAgICAgICAgIGlmIChpIDwgbmFyZ3MpIHsKLSAgICAgICAgICAgICAgICAvKiBhcmcgcHJlc2VudCBpbiB0dXBsZSBhbmQgaW4gZGljdCAqLwotICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBcmd1bWVudCBnaXZlbiBieSBuYW1lICgnJXMnKSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbmQgcG9zaXRpb24gKCVkKSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmQsIGkrMSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CisgICAgICAgIGlmICghc2tpcCkgeworICAgICAgICAgICAgY3VycmVudF9hcmcgPSBOVUxMOworICAgICAgICAgICAgaWYgKG5rZXl3b3JkcyAmJiBpID49IHBvcykgeworICAgICAgICAgICAgICAgIGN1cnJlbnRfYXJnID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoa2V5d29yZHMsIGtleXdvcmQpOworICAgICAgICAgICAgICAgIGlmICghY3VycmVudF9hcmcgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoY3VycmVudF9hcmcpIHsKKyAgICAgICAgICAgICAgICAtLW5rZXl3b3JkczsKKyAgICAgICAgICAgICAgICBpZiAoaSA8IG5hcmdzKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIGFyZyBwcmVzZW50IGluIHR1cGxlIGFuZCBpbiBkaWN0ICovCisgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQXJndW1lbnQgZ2l2ZW4gYnkgbmFtZSAoJyVzJykgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFuZCBwb3NpdGlvbiAoJWQpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmQsIGkrMSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGkgPCBuYXJncykKKyAgICAgICAgICAgICAgICBjdXJyZW50X2FyZyA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgaSk7CisKKyAgICAgICAgICAgIGlmIChjdXJyZW50X2FyZykgeworICAgICAgICAgICAgICAgIG1zZyA9IGNvbnZlcnRpdGVtKGN1cnJlbnRfYXJnLCAmZm9ybWF0LCBwX3ZhLCBmbGFncywKKyAgICAgICAgICAgICAgICAgICAgbGV2ZWxzLCBtc2didWYsIHNpemVvZihtc2didWYpLCAmZnJlZWxpc3QpOworICAgICAgICAgICAgICAgIGlmIChtc2cpIHsKKyAgICAgICAgICAgICAgICAgICAgc2V0ZXJyb3IoaSsxLCBtc2csIGxldmVscywgZm5hbWUsIGN1c3RvbV9tc2cpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChpIDwgbWluKSB7CisgICAgICAgICAgICAgICAgaWYgKGkgPCBwb3MpIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChtaW4gPT0gSU5UX01BWCk7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydCAobWF4ID09IElOVF9NQVgpOworICAgICAgICAgICAgICAgICAgICBza2lwID0gMTsKKyAgICAgICAgICAgICAgICAgICAgLyogQXQgdGhhdCBtb21lbnQgd2Ugc3RpbGwgZG9uJ3Qga25vdyB0aGUgbWluaW1hbCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICogdGhlIG1heGltYWwgbnVtYmVycyBvZiBwb3NpdGlvbmFsIGFyZ3VtZW50cy4gIFJhaXNpbmcKKyAgICAgICAgICAgICAgICAgICAgICogYW4gZXhjZXB0aW9uIGlzIGRlZmVycmVkIHVudGlsIHdlIGVuY291bnRlciB8IGFuZCAkCisgICAgICAgICAgICAgICAgICAgICAqIG9yIHRoZSBlbmQgb2YgdGhlIGZvcm1hdC4gKi8KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJSZXF1aXJlZCBhcmd1bWVudCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICInJXMnIChwb3MgJWQpIG5vdCBmb3VuZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmQsIGkrMSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qIGN1cnJlbnQgY29kZSByZXBvcnRzIHN1Y2Nlc3Mgd2hlbiBhbGwgcmVxdWlyZWQgYXJncworICAgICAgICAgICAgICogZnVsZmlsbGVkIGFuZCBubyBrZXl3b3JkIGFyZ3MgbGVmdCwgd2l0aCBubyBmdXJ0aGVyCisgICAgICAgICAgICAgKiB2YWxpZGF0aW9uLiBYWFggTWF5YmUgc2tpcCB0aGlzIGluIGRlYnVnIGJ1aWxkID8KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYgKCFua2V5d29yZHMgJiYgIXNraXApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMSwgJmZyZWVsaXN0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChua2V5d29yZHMgJiYgUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOwotICAgICAgICBlbHNlIGlmIChpIDwgbmFyZ3MpCi0gICAgICAgICAgICBjdXJyZW50X2FyZyA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgaSk7Ci0KLSAgICAgICAgaWYgKGN1cnJlbnRfYXJnKSB7Ci0gICAgICAgICAgICBtc2cgPSBjb252ZXJ0aXRlbShjdXJyZW50X2FyZywgJmZvcm1hdCwgcF92YSwgZmxhZ3MsCi0gICAgICAgICAgICAgICAgbGV2ZWxzLCBtc2didWYsIHNpemVvZihtc2didWYpLCAmZnJlZWxpc3QpOwotICAgICAgICAgICAgaWYgKG1zZykgewotICAgICAgICAgICAgICAgIHNldGVycm9yKGkrMSwgbXNnLCBsZXZlbHMsIGZuYW1lLCBjdXN0b21fbXNnKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGkgPCBtaW4pIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJSZXF1aXJlZCBhcmd1bWVudCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgIiclcycgKHBvcyAlZCkgbm90IGZvdW5kIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBrZXl3b3JkLCBpKzEpOwotICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7Ci0gICAgICAgIH0KLSAgICAgICAgLyogY3VycmVudCBjb2RlIHJlcG9ydHMgc3VjY2VzcyB3aGVuIGFsbCByZXF1aXJlZCBhcmdzCi0gICAgICAgICAqIGZ1bGZpbGxlZCBhbmQgbm8ga2V5d29yZCBhcmdzIGxlZnQsIHdpdGggbm8gZnVydGhlcgotICAgICAgICAgKiB2YWxpZGF0aW9uLiBYWFggTWF5YmUgc2tpcCB0aGlzIGluIGRlYnVnIGJ1aWxkID8KLSAgICAgICAgICovCi0gICAgICAgIGlmICghbmtleXdvcmRzKQotICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDEsICZmcmVlbGlzdCk7CiAKICAgICAgICAgLyogV2UgYXJlIGludG8gb3B0aW9uYWwgYXJncywgc2tpcCB0aHJ1IHRvIGFueSByZW1haW5pbmcKICAgICAgICAgICoga2V5d29yZCBhcmdzICovCiAgICAgICAgIG1zZyA9IHNraXBpdGVtKCZmb3JtYXQsIHBfdmEsIGZsYWdzKTsKICAgICAgICAgaWYgKG1zZykgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1J1bnRpbWVFcnJvciwgIiVzOiAnJXMnIiwgbXNnLAorICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLCAiJXM6ICclcyciLCBtc2csCiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0KTsKICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOwogICAgICAgICB9CiAgICAgfQogCisgICAgaWYgKHNraXApIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJGdW5jdGlvbiB0YWtlcyAlcyAlZCBwb3NpdGlvbmFsIGFyZ3VtZW50cyIKKyAgICAgICAgICAgICAgICAgICAgICIgKCVkIGdpdmVuKSIsCisgICAgICAgICAgICAgICAgICAgICAoUHlfTUlOKHBvcywgbWluKSA8IGkpID8gImF0IGxlYXN0IiA6ICJleGFjdGx5IiwKKyAgICAgICAgICAgICAgICAgICAgIFB5X01JTihwb3MsIG1pbiksIG5hcmdzKTsKKyAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CisgICAgfQorCiAgICAgaWYgKCFJU19FTkRfT0ZfRk9STUFUKCpmb3JtYXQpICYmICgqZm9ybWF0ICE9ICd8JykgJiYgKCpmb3JtYXQgIT0gJyQnKSkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCiAgICAgICAgICAgICAibW9yZSBhcmd1bWVudCBzcGVjaWZpZXJzIHRoYW4ga2V5d29yZCBsaXN0IGVudHJpZXMgIgogICAgICAgICAgICAgIihyZW1haW5pbmcgZm9ybWF0OiclcycpIiwgZm9ybWF0KTsKICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CkBAIC0xNjE4LDcgKzE4MDgsNyBAQAogICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVfRXF1YWxUb0FTQ0lJU3RyaW5nKGtleSwga3dsaXN0W2ldKSkgeworICAgICAgICAgICAgICAgIGlmICgqa3dsaXN0W2ldICYmIF9QeVVuaWNvZGVfRXF1YWxUb0FTQ0lJU3RyaW5nKGtleSwga3dsaXN0W2ldKSkgewogICAgICAgICAgICAgICAgICAgICBtYXRjaCA9IDE7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KQEAgLTE2MzcsNyArMTgyNywzODggQEAKIH0KIAogCi1zdGF0aWMgY2hhciAqCisvKiBMaXN0IG9mIHN0YXRpYyBwYXJzZXJzLiAqLworc3RhdGljIHN0cnVjdCBfUHlBcmdfUGFyc2VyICpzdGF0aWNfYXJnX3BhcnNlcnMgPSBOVUxMOworCitzdGF0aWMgaW50CitwYXJzZXJfaW5pdChzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqcGFyc2VyKQoreworICAgIGNvbnN0IGNoYXIgKiBjb25zdCAqa2V5d29yZHM7CisgICAgY29uc3QgY2hhciAqZm9ybWF0LCAqbXNnOworICAgIGludCBpLCBsZW4sIG1pbiwgbWF4LCBua3c7CisgICAgUHlPYmplY3QgKmt3dHVwbGU7CisKKyAgICBhc3NlcnQocGFyc2VyLT5mb3JtYXQgIT0gTlVMTCk7CisgICAgYXNzZXJ0KHBhcnNlci0+a2V5d29yZHMgIT0gTlVMTCk7CisgICAgaWYgKHBhcnNlci0+a3d0dXBsZSAhPSBOVUxMKSB7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIC8qIGdyYWIgdGhlIGZ1bmN0aW9uIG5hbWUgb3IgY3VzdG9tIGVycm9yIG1zZyBmaXJzdCAobXV0dWFsbHkgZXhjbHVzaXZlKSAqLworICAgIHBhcnNlci0+Zm5hbWUgPSBzdHJjaHIocGFyc2VyLT5mb3JtYXQsICc6Jyk7CisgICAgaWYgKHBhcnNlci0+Zm5hbWUpIHsKKyAgICAgICAgcGFyc2VyLT5mbmFtZSsrOworICAgICAgICBwYXJzZXItPmN1c3RvbV9tc2cgPSBOVUxMOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcGFyc2VyLT5jdXN0b21fbXNnID0gc3RyY2hyKHBhcnNlci0+Zm9ybWF0LCc7Jyk7CisgICAgICAgIGlmIChwYXJzZXItPmN1c3RvbV9tc2cpCisgICAgICAgICAgICBwYXJzZXItPmN1c3RvbV9tc2crKzsKKyAgICB9CisKKyAgICBrZXl3b3JkcyA9IHBhcnNlci0+a2V5d29yZHM7CisgICAgLyogc2NhbiBrZXl3b3JkcyBhbmQgY291bnQgdGhlIG51bWJlciBvZiBwb3NpdGlvbmFsLW9ubHkgcGFyYW1ldGVycyAqLworICAgIGZvciAoaSA9IDA7IGtleXdvcmRzW2ldICYmICEqa2V5d29yZHNbaV07IGkrKykgeworICAgIH0KKyAgICBwYXJzZXItPnBvcyA9IGk7CisgICAgLyogc2NhbiBrZXl3b3JkcyBhbmQgZ2V0IGdyZWF0ZXN0IHBvc3NpYmxlIG5iciBvZiBhcmdzICovCisgICAgZm9yICg7IGtleXdvcmRzW2ldOyBpKyspIHsKKyAgICAgICAgaWYgKCEqa2V5d29yZHNbaV0pIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRW1wdHkga2V5d29yZCBwYXJhbWV0ZXIgbmFtZSIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisgICAgbGVuID0gaTsKKworICAgIG1pbiA9IG1heCA9IElOVF9NQVg7CisgICAgZm9ybWF0ID0gcGFyc2VyLT5mb3JtYXQ7CisgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgIGlmICgqZm9ybWF0ID09ICd8JykgeworICAgICAgICAgICAgaWYgKG1pbiAhPSBJTlRfTUFYKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBmb3JtYXQgc3RyaW5nICh8IHNwZWNpZmllZCB0d2ljZSkiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChtYXggIT0gSU5UX01BWCkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgZm9ybWF0IHN0cmluZyAoJCBiZWZvcmUgfCkiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1pbiA9IGk7CisgICAgICAgICAgICBmb3JtYXQrKzsKKyAgICAgICAgfQorICAgICAgICBpZiAoKmZvcm1hdCA9PSAnJCcpIHsKKyAgICAgICAgICAgIGlmIChtYXggIT0gSU5UX01BWCkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgZm9ybWF0IHN0cmluZyAoJCBzcGVjaWZpZWQgdHdpY2UpIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoaSA8IHBhcnNlci0+cG9zKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRW1wdHkgcGFyYW1ldGVyIG5hbWUgYWZ0ZXIgJCIpOworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbWF4ID0gaTsKKyAgICAgICAgICAgIGZvcm1hdCsrOworICAgICAgICB9CisgICAgICAgIGlmIChJU19FTkRfT0ZfRk9STUFUKCpmb3JtYXQpKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIk1vcmUga2V5d29yZCBsaXN0IGVudHJpZXMgKCVkKSB0aGFuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZm9ybWF0IHNwZWNpZmllcnMgKCVkKSIsIGxlbiwgaSk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgICAgIG1zZyA9IHNraXBpdGVtKCZmb3JtYXQsIE5VTEwsIDApOworICAgICAgICBpZiAobXNnKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsICIlczogJyVzJyIsIG1zZywKKyAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisgICAgcGFyc2VyLT5taW4gPSBQeV9NSU4obWluLCBsZW4pOworICAgIHBhcnNlci0+bWF4ID0gUHlfTUlOKG1heCwgbGVuKTsKKworICAgIGlmICghSVNfRU5EX09GX0ZPUk1BVCgqZm9ybWF0KSAmJiAoKmZvcm1hdCAhPSAnfCcpICYmICgqZm9ybWF0ICE9ICckJykpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgIm1vcmUgYXJndW1lbnQgc3BlY2lmaWVycyB0aGFuIGtleXdvcmQgbGlzdCBlbnRyaWVzICIKKyAgICAgICAgICAgICIocmVtYWluaW5nIGZvcm1hdDonJXMnKSIsIGZvcm1hdCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIG5rdyA9IGxlbiAtIHBhcnNlci0+cG9zOworICAgIGt3dHVwbGUgPSBQeVR1cGxlX05ldyhua3cpOworICAgIGlmIChrd3R1cGxlID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGtleXdvcmRzID0gcGFyc2VyLT5rZXl3b3JkcyArIHBhcnNlci0+cG9zOworICAgIGZvciAoaSA9IDA7IGkgPCBua3c7IGkrKykgeworICAgICAgICBQeU9iamVjdCAqc3RyID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoa2V5d29yZHNbaV0pOworICAgICAgICBpZiAoc3RyID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihrd3R1cGxlKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIFB5VW5pY29kZV9JbnRlcm5JblBsYWNlKCZzdHIpOworICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGt3dHVwbGUsIGksIHN0cik7CisgICAgfQorICAgIHBhcnNlci0+a3d0dXBsZSA9IGt3dHVwbGU7CisKKyAgICBhc3NlcnQocGFyc2VyLT5uZXh0ID09IE5VTEwpOworICAgIHBhcnNlci0+bmV4dCA9IHN0YXRpY19hcmdfcGFyc2VyczsKKyAgICBzdGF0aWNfYXJnX3BhcnNlcnMgPSBwYXJzZXI7CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyB2b2lkCitwYXJzZXJfY2xlYXIoc3RydWN0IF9QeUFyZ19QYXJzZXIgKnBhcnNlcikKK3sKKyAgICBQeV9DTEVBUihwYXJzZXItPmt3dHVwbGUpOworfQorCitzdGF0aWMgUHlPYmplY3QqCitmaW5kX2tleXdvcmQoUHlPYmplY3QgKmt3bmFtZXMsIFB5T2JqZWN0ICoqa3dzdGFjaywgUHlPYmplY3QgKmtleSkKK3sKKyAgICBQeV9zc2l6ZV90IGksIG5rd2FyZ3M7CisKKyAgICBua3dhcmdzID0gUHlUdXBsZV9HRVRfU0laRShrd25hbWVzKTsKKyAgICBmb3IgKGk9MDsgaSA8IG5rd2FyZ3M7IGkrKykgeworICAgICAgICBQeU9iamVjdCAqa3duYW1lID0gUHlUdXBsZV9HRVRfSVRFTShrd25hbWVzLCBpKTsKKworICAgICAgICAvKiBwdHI9PXB0ciBzaG91bGQgbWF0Y2ggaW4gbW9zdCBjYXNlcyBzaW5jZSBrZXl3b3JkIGtleXMKKyAgICAgICAgICAgc2hvdWxkIGJlIGludGVybmVkIHN0cmluZ3MgKi8KKyAgICAgICAgaWYgKGt3bmFtZSA9PSBrZXkpIHsKKyAgICAgICAgICAgIHJldHVybiBrd3N0YWNrW2ldOworICAgICAgICB9CisgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKGt3bmFtZSkpIHsKKyAgICAgICAgICAgIC8qIGlnbm9yZSBub24tc3RyaW5nIGtleXdvcmQga2V5czoKKyAgICAgICAgICAgICAgIGFuIGVycm9yIHdpbGwgYmUgcmFpc2VkIGFib3ZlICovCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoX1B5VW5pY29kZV9FUShrd25hbWUsIGtleSkpIHsKKyAgICAgICAgICAgIHJldHVybiBrd3N0YWNrW2ldOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgaW50Cit2Z2V0YXJnc2tleXdvcmRzZmFzdF9pbXBsKFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmtleXdvcmRzLCBQeU9iamVjdCAqa3duYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9QeUFyZ19QYXJzZXIgKnBhcnNlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfbGlzdCAqcF92YSwgaW50IGZsYWdzKQoreworICAgIFB5T2JqZWN0ICprd3R1cGxlOworICAgIGNoYXIgbXNnYnVmWzUxMl07CisgICAgaW50IGxldmVsc1szMl07CisgICAgY29uc3QgY2hhciAqZm9ybWF0OworICAgIGNvbnN0IGNoYXIgKm1zZzsKKyAgICBQeU9iamVjdCAqa2V5d29yZDsKKyAgICBpbnQgaSwgcG9zLCBsZW47CisgICAgUHlfc3NpemVfdCBua2V5d29yZHM7CisgICAgUHlPYmplY3QgKmN1cnJlbnRfYXJnOworICAgIGZyZWVsaXN0ZW50cnlfdCBzdGF0aWNfZW50cmllc1tTVEFUSUNfRlJFRUxJU1RfRU5UUklFU107CisgICAgZnJlZWxpc3RfdCBmcmVlbGlzdDsKKyAgICBQeU9iamVjdCAqKmt3c3RhY2sgPSBOVUxMOworCisgICAgZnJlZWxpc3QuZW50cmllcyA9IHN0YXRpY19lbnRyaWVzOworICAgIGZyZWVsaXN0LmZpcnN0X2F2YWlsYWJsZSA9IDA7CisgICAgZnJlZWxpc3QuZW50cmllc19tYWxsb2NlZCA9IDA7CisKKyAgICBhc3NlcnQoa2V5d29yZHMgPT0gTlVMTCB8fCBQeURpY3RfQ2hlY2soa2V5d29yZHMpKTsKKyAgICBhc3NlcnQoa3duYW1lcyA9PSBOVUxMIHx8IFB5VHVwbGVfQ2hlY2soa3duYW1lcykpOworICAgIGFzc2VydCgoa2V5d29yZHMgIT0gTlVMTCB8fCBrd25hbWVzICE9IE5VTEwpCisgICAgICAgICAgIHx8IChrZXl3b3JkcyA9PSBOVUxMICYmIGt3bmFtZXMgPT0gTlVMTCkpOworICAgIGFzc2VydChwYXJzZXIgIT0gTlVMTCk7CisgICAgYXNzZXJ0KHBfdmEgIT0gTlVMTCk7CisKKyAgICBpZiAoIXBhcnNlcl9pbml0KHBhcnNlcikpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAga3d0dXBsZSA9IHBhcnNlci0+a3d0dXBsZTsKKyAgICBwb3MgPSBwYXJzZXItPnBvczsKKyAgICBsZW4gPSBwb3MgKyBQeVR1cGxlX0dFVF9TSVpFKGt3dHVwbGUpOworCisgICAgaWYgKGxlbiA+IFNUQVRJQ19GUkVFTElTVF9FTlRSSUVTKSB7CisgICAgICAgIGZyZWVsaXN0LmVudHJpZXMgPSBQeU1lbV9ORVcoZnJlZWxpc3RlbnRyeV90LCBsZW4pOworICAgICAgICBpZiAoZnJlZWxpc3QuZW50cmllcyA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgZnJlZWxpc3QuZW50cmllc19tYWxsb2NlZCA9IDE7CisgICAgfQorCisgICAgaWYgKGtleXdvcmRzICE9IE5VTEwpIHsKKyAgICAgICAgbmtleXdvcmRzID0gUHlEaWN0X1NpemUoa2V5d29yZHMpOworICAgIH0KKyAgICBlbHNlIGlmIChrd25hbWVzICE9IE5VTEwpIHsKKyAgICAgICAgbmtleXdvcmRzID0gUHlUdXBsZV9HRVRfU0laRShrd25hbWVzKTsKKyAgICAgICAga3dzdGFjayA9IGFyZ3MgKyBuYXJnczsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIG5rZXl3b3JkcyA9IDA7CisgICAgfQorICAgIGlmIChuYXJncyArIG5rZXl3b3JkcyA+IGxlbikgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIiVzJXMgdGFrZXMgYXQgbW9zdCAlZCBhcmd1bWVudCVzICglemQgZ2l2ZW4pIiwKKyAgICAgICAgICAgICAgICAgICAgIChwYXJzZXItPmZuYW1lID09IE5VTEwpID8gImZ1bmN0aW9uIiA6IHBhcnNlci0+Zm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAocGFyc2VyLT5mbmFtZSA9PSBOVUxMKSA/ICIiIDogIigpIiwKKyAgICAgICAgICAgICAgICAgICAgIGxlbiwKKyAgICAgICAgICAgICAgICAgICAgIChsZW4gPT0gMSkgPyAiIiA6ICJzIiwKKyAgICAgICAgICAgICAgICAgICAgIG5hcmdzICsgbmtleXdvcmRzKTsKKyAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CisgICAgfQorICAgIGlmIChwYXJzZXItPm1heCA8IG5hcmdzKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiRnVuY3Rpb24gdGFrZXMgJXMgJWQgcG9zaXRpb25hbCBhcmd1bWVudHMgKCVkIGdpdmVuKSIsCisgICAgICAgICAgICAgICAgICAgICAocGFyc2VyLT5taW4gIT0gSU5UX01BWCkgPyAiYXQgbW9zdCIgOiAiZXhhY3RseSIsCisgICAgICAgICAgICAgICAgICAgICBwYXJzZXItPm1heCwgbmFyZ3MpOworICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKKyAgICB9CisKKyAgICBmb3JtYXQgPSBwYXJzZXItPmZvcm1hdDsKKyAgICAvKiBjb252ZXJ0IHR1cGxlIGFyZ3MgYW5kIGtleXdvcmQgYXJncyBpbiBzYW1lIGxvb3AsIHVzaW5nIGt3dHVwbGUgdG8gZHJpdmUgcHJvY2VzcyAqLworICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICBrZXl3b3JkID0gKGkgPj0gcG9zKSA/IFB5VHVwbGVfR0VUX0lURU0oa3d0dXBsZSwgaSAtIHBvcykgOiBOVUxMOworICAgICAgICBpZiAoKmZvcm1hdCA9PSAnfCcpIHsKKyAgICAgICAgICAgIGZvcm1hdCsrOworICAgICAgICB9CisgICAgICAgIGlmICgqZm9ybWF0ID09ICckJykgeworICAgICAgICAgICAgZm9ybWF0Kys7CisgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0KCFJU19FTkRfT0ZfRk9STUFUKCpmb3JtYXQpKTsKKworICAgICAgICBjdXJyZW50X2FyZyA9IE5VTEw7CisgICAgICAgIGlmIChua2V5d29yZHMgJiYgaSA+PSBwb3MpIHsKKyAgICAgICAgICAgIGlmIChrZXl3b3JkcyAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgY3VycmVudF9hcmcgPSBQeURpY3RfR2V0SXRlbShrZXl3b3Jkcywga2V5d29yZCk7CisgICAgICAgICAgICAgICAgaWYgKCFjdXJyZW50X2FyZyAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGN1cnJlbnRfYXJnID0gZmluZF9rZXl3b3JkKGt3bmFtZXMsIGt3c3RhY2ssIGtleXdvcmQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChjdXJyZW50X2FyZykgeworICAgICAgICAgICAgLS1ua2V5d29yZHM7CisgICAgICAgICAgICBpZiAoaSA8IG5hcmdzKSB7CisgICAgICAgICAgICAgICAgLyogYXJnIHByZXNlbnQgaW4gdHVwbGUgYW5kIGluIGRpY3QgKi8KKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQXJndW1lbnQgZ2l2ZW4gYnkgbmFtZSAoJyVVJykgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYW5kIHBvc2l0aW9uICglZCkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXl3b3JkLCBpKzEpOworICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGkgPCBuYXJncykgeworICAgICAgICAgICAgY3VycmVudF9hcmcgPSBhcmdzW2ldOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGN1cnJlbnRfYXJnKSB7CisgICAgICAgICAgICBtc2cgPSBjb252ZXJ0aXRlbShjdXJyZW50X2FyZywgJmZvcm1hdCwgcF92YSwgZmxhZ3MsCisgICAgICAgICAgICAgICAgbGV2ZWxzLCBtc2didWYsIHNpemVvZihtc2didWYpLCAmZnJlZWxpc3QpOworICAgICAgICAgICAgaWYgKG1zZykgeworICAgICAgICAgICAgICAgIHNldGVycm9yKGkrMSwgbXNnLCBsZXZlbHMsIHBhcnNlci0+Zm5hbWUsIHBhcnNlci0+Y3VzdG9tX21zZyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChpIDwgcGFyc2VyLT5taW4pIHsKKyAgICAgICAgICAgIC8qIExlc3MgYXJndW1lbnRzIHRoYW4gcmVxdWlyZWQgKi8KKyAgICAgICAgICAgIGlmIChpIDwgcG9zKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZ1bmN0aW9uIHRha2VzICVzICVkIHBvc2l0aW9uYWwgYXJndW1lbnRzIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICglZCBnaXZlbikiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlfTUlOKHBvcywgcGFyc2VyLT5taW4pIDwgcGFyc2VyLT5tYXgpID8gImF0IGxlYXN0IiA6ICJleGFjdGx5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfTUlOKHBvcywgcGFyc2VyLT5taW4pLCBuYXJncyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiUmVxdWlyZWQgYXJndW1lbnQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJyVVJyAocG9zICVkKSBub3QgZm91bmQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXl3b3JkLCBpKzEpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CisgICAgICAgIH0KKyAgICAgICAgLyogY3VycmVudCBjb2RlIHJlcG9ydHMgc3VjY2VzcyB3aGVuIGFsbCByZXF1aXJlZCBhcmdzCisgICAgICAgICAqIGZ1bGZpbGxlZCBhbmQgbm8ga2V5d29yZCBhcmdzIGxlZnQsIHdpdGggbm8gZnVydGhlcgorICAgICAgICAgKiB2YWxpZGF0aW9uLiBYWFggTWF5YmUgc2tpcCB0aGlzIGluIGRlYnVnIGJ1aWxkID8KKyAgICAgICAgICovCisgICAgICAgIGlmICghbmtleXdvcmRzKSB7CisgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMSwgJmZyZWVsaXN0KTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIFdlIGFyZSBpbnRvIG9wdGlvbmFsIGFyZ3MsIHNraXAgdGhydSB0byBhbnkgcmVtYWluaW5nCisgICAgICAgICAqIGtleXdvcmQgYXJncyAqLworICAgICAgICBtc2cgPSBza2lwaXRlbSgmZm9ybWF0LCBwX3ZhLCBmbGFncyk7CisgICAgICAgIGFzc2VydChtc2cgPT0gTlVMTCk7CisgICAgfQorCisgICAgYXNzZXJ0KElTX0VORF9PRl9GT1JNQVQoKmZvcm1hdCkgfHwgKCpmb3JtYXQgPT0gJ3wnKSB8fCAoKmZvcm1hdCA9PSAnJCcpKTsKKworICAgIC8qIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gZXh0cmFuZW91cyBrZXl3b3JkIGFyZ3VtZW50cyAqLworICAgIGlmIChua2V5d29yZHMgPiAwKSB7CisgICAgICAgIGlmIChrZXl3b3JkcyAhPSBOVUxMKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqa2V5LCAqdmFsdWU7CisgICAgICAgICAgICBQeV9zc2l6ZV90IHBvcyA9IDA7CisgICAgICAgICAgICB3aGlsZSAoUHlEaWN0X05leHQoa2V5d29yZHMsICZwb3MsICZrZXksICZ2YWx1ZSkpIHsKKyAgICAgICAgICAgICAgICBpbnQgbWF0Y2g7CisgICAgICAgICAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soa2V5KSkgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImtleXdvcmRzIG11c3QgYmUgc3RyaW5ncyIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbWF0Y2ggPSBQeVNlcXVlbmNlX0NvbnRhaW5zKGt3dHVwbGUsIGtleSk7CisgICAgICAgICAgICAgICAgaWYgKG1hdGNoIDw9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFtYXRjaCkgeworICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJyVVJyBpcyBhbiBpbnZhbGlkIGtleXdvcmQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCBmb3IgdGhpcyBmdW5jdGlvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGosIG5rd2FyZ3M7CisKKyAgICAgICAgICAgIG5rd2FyZ3MgPSBQeVR1cGxlX0dFVF9TSVpFKGt3bmFtZXMpOworICAgICAgICAgICAgZm9yIChqPTA7IGogPCBua3dhcmdzOyBqKyspIHsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqa2V5ID0gUHlUdXBsZV9HRVRfSVRFTShrd25hbWVzLCBqKTsKKyAgICAgICAgICAgICAgICBpbnQgbWF0Y2g7CisKKyAgICAgICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhrZXkpKSB7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAia2V5d29yZHMgbXVzdCBiZSBzdHJpbmdzIik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIG1hdGNoID0gUHlTZXF1ZW5jZV9Db250YWlucyhrd3R1cGxlLCBrZXkpOworICAgICAgICAgICAgICAgIGlmIChtYXRjaCA8PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghbWF0Y2gpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiclVScgaXMgYW4gaW52YWxpZCBrZXl3b3JkICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgZm9yIHRoaXMgZnVuY3Rpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGNsZWFucmV0dXJuKDEsICZmcmVlbGlzdCk7Cit9CisKK3N0YXRpYyBpbnQKK3ZnZXRhcmdza2V5d29yZHNmYXN0KFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqcGFyc2VyLCB2YV9saXN0ICpwX3ZhLCBpbnQgZmxhZ3MpCit7CisgICAgUHlPYmplY3QgKipzdGFjazsKKyAgICBQeV9zc2l6ZV90IG5hcmdzOworCisgICAgYXNzZXJ0KGFyZ3MgIT0gTlVMTCAmJiBQeVR1cGxlX0NoZWNrKGFyZ3MpKTsKKworICAgIHN0YWNrID0gJlB5VHVwbGVfR0VUX0lURU0oYXJncywgMCk7CisgICAgbmFyZ3MgPSBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpOworICAgIHJldHVybiB2Z2V0YXJnc2tleXdvcmRzZmFzdF9pbXBsKHN0YWNrLCBuYXJncywga2V5d29yZHMsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLCBwX3ZhLCBmbGFncyk7Cit9CisKKworc3RhdGljIGNvbnN0IGNoYXIgKgogc2tpcGl0ZW0oY29uc3QgY2hhciAqKnBfZm9ybWF0LCB2YV9saXN0ICpwX3ZhLCBpbnQgZmxhZ3MpCiB7CiAgICAgY29uc3QgY2hhciAqZm9ybWF0ID0gKnBfZm9ybWF0OwpAQCAtMTY1OCwxMCArMjIyOSw4IEBACiAgICAgY2FzZSAnSSc6IC8qIGludCBzaXplZCBiaXRmaWVsZCAqLwogICAgIGNhc2UgJ2wnOiAvKiBsb25nIGludCAqLwogICAgIGNhc2UgJ2snOiAvKiBsb25nIGludCBzaXplZCBiaXRmaWVsZCAqLwotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgY2FzZSAnTCc6IC8qIFBZX0xPTkdfTE9ORyAqLwotICAgIGNhc2UgJ0snOiAvKiBQWV9MT05HX0xPTkcgc2l6ZWQgYml0ZmllbGQgKi8KLSNlbmRpZgorICAgIGNhc2UgJ0wnOiAvKiBsb25nIGxvbmcgKi8KKyAgICBjYXNlICdLJzogLyogbG9uZyBsb25nIHNpemVkIGJpdGZpZWxkICovCiAgICAgY2FzZSAnbic6IC8qIFB5X3NzaXplX3QgKi8KICAgICBjYXNlICdmJzogLyogZmxvYXQgKi8KICAgICBjYXNlICdkJzogLyogZG91YmxlICovCkBAIC0xNjczLDcgKzIyNDIsOSBAQAogICAgIGNhc2UgJ1knOiAvKiBzdHJpbmcgb2JqZWN0ICovCiAgICAgY2FzZSAnVSc6IC8qIHVuaWNvZGUgc3RyaW5nIG9iamVjdCAqLwogICAgICAgICB7Ci0gICAgICAgICAgICAodm9pZCkgdmFfYXJnKCpwX3ZhLCB2b2lkICopOworICAgICAgICAgICAgaWYgKHBfdmEgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIHZvaWQgKik7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC0xNjgxLDcgKzIyNTIsOSBAQAogCiAgICAgY2FzZSAnZSc6IC8qIHN0cmluZyB3aXRoIGVuY29kaW5nICovCiAgICAgICAgIHsKLSAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIGNvbnN0IGNoYXIgKik7CisgICAgICAgICAgICBpZiAocF92YSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgY29uc3QgY2hhciAqKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghKCpmb3JtYXQgPT0gJ3MnIHx8ICpmb3JtYXQgPT0gJ3QnKSkKICAgICAgICAgICAgICAgICAvKiBhZnRlciAnZScsIG9ubHkgJ3MnIGFuZCAndCcgaXMgYWxsb3dlZCAqLwogICAgICAgICAgICAgICAgIGdvdG8gZXJyOwpAQCAtMTY5NiwxMiArMjI2OSwxNiBAQAogICAgIGNhc2UgJ1onOiAvKiB1bmljb2RlIHN0cmluZyBvciBOb25lICovCiAgICAgY2FzZSAndyc6IC8qIGJ1ZmZlciwgcmVhZC13cml0ZSAqLwogICAgICAgICB7Ci0gICAgICAgICAgICAodm9pZCkgdmFfYXJnKCpwX3ZhLCBjaGFyICoqKTsKKyAgICAgICAgICAgIGlmIChwX3ZhICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAodm9pZCkgdmFfYXJnKCpwX3ZhLCBjaGFyICoqKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICgqZm9ybWF0ID09ICcjJykgewotICAgICAgICAgICAgICAgIGlmIChmbGFncyAmIEZMQUdfU0laRV9UKQotICAgICAgICAgICAgICAgICAgICAodm9pZCkgdmFfYXJnKCpwX3ZhLCBQeV9zc2l6ZV90ICopOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgaW50ICopOworICAgICAgICAgICAgICAgIGlmIChwX3ZhICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgRkxBR19TSVpFX1QpCisgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCkgdmFfYXJnKCpwX3ZhLCBQeV9zc2l6ZV90ICopOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCkgdmFfYXJnKCpwX3ZhLCBpbnQgKik7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGZvcm1hdCsrOwogICAgICAgICAgICAgfSBlbHNlIGlmICgoYyA9PSAncycgfHwgYyA9PSAneicgfHwgYyA9PSAneScpICYmICpmb3JtYXQgPT0gJyonKSB7CiAgICAgICAgICAgICAgICAgZm9ybWF0Kys7CkBAIC0xNzEzLDI0ICsyMjkwLDMwIEBACiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICgqZm9ybWF0ID09ICchJykgewogICAgICAgICAgICAgICAgIGZvcm1hdCsrOwotICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIFB5VHlwZU9iamVjdCopOwotICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIFB5T2JqZWN0ICoqKTsKKyAgICAgICAgICAgICAgICBpZiAocF92YSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIFB5VHlwZU9iamVjdCopOworICAgICAgICAgICAgICAgICAgICAodm9pZCkgdmFfYXJnKCpwX3ZhLCBQeU9iamVjdCAqKik7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAoKmZvcm1hdCA9PSAnJicpIHsKICAgICAgICAgICAgICAgICB0eXBlZGVmIGludCAoKmNvbnZlcnRlcikoUHlPYmplY3QgKiwgdm9pZCAqKTsKLSAgICAgICAgICAgICAgICAodm9pZCkgdmFfYXJnKCpwX3ZhLCBjb252ZXJ0ZXIpOwotICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIHZvaWQgKik7CisgICAgICAgICAgICAgICAgaWYgKHBfdmEgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICAodm9pZCkgdmFfYXJnKCpwX3ZhLCBjb252ZXJ0ZXIpOworICAgICAgICAgICAgICAgICAgICAodm9pZCkgdmFfYXJnKCpwX3ZhLCB2b2lkICopOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBmb3JtYXQrKzsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIFB5T2JqZWN0ICoqKTsKKyAgICAgICAgICAgICAgICBpZiAocF92YSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIFB5T2JqZWN0ICoqKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCiAgICAgY2FzZSAnKCc6ICAgICAgICAgICAvKiBieXBhc3MgdHVwbGUsIG5vdCBoYW5kbGVkIGF0IGFsbCBwcmV2aW91c2x5ICovCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNoYXIgKm1zZzsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKm1zZzsKICAgICAgICAgICAgIGZvciAoOzspIHsKICAgICAgICAgICAgICAgICBpZiAoKmZvcm1hdD09JyknKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTE3NjYsMTYgKzIzNDksOSBAQAogICAgIFB5T2JqZWN0ICoqbzsKICAgICB2YV9saXN0IHZhcmdzOwogCi0jaWZkZWYgSEFWRV9TVERBUkdfUFJPVE9UWVBFUwotICAgIHZhX3N0YXJ0KHZhcmdzLCBtYXgpOwotI2Vsc2UKLSAgICB2YV9zdGFydCh2YXJncyk7Ci0jZW5kaWYKLQogICAgIGFzc2VydChtaW4gPj0gMCk7CiAgICAgYXNzZXJ0KG1pbiA8PSBtYXgpOwogICAgIGlmICghUHlUdXBsZV9DaGVjayhhcmdzKSkgewotICAgICAgICB2YV9lbmQodmFyZ3MpOwogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCiAgICAgICAgICAgICAiUHlBcmdfVW5wYWNrVHVwbGUoKSBhcmd1bWVudCBsaXN0IGlzIG5vdCBhIHR1cGxlIik7CiAgICAgICAgIHJldHVybiAwOwpAQCAtMTc5Myw5ICsyMzY5LDEwIEBACiAgICAgICAgICAgICAgICAgInVucGFja2VkIHR1cGxlIHNob3VsZCBoYXZlICVzJXpkIGVsZW1lbnRzLCIKICAgICAgICAgICAgICAgICAiIGJ1dCBoYXMgJXpkIiwKICAgICAgICAgICAgICAgICAobWluID09IG1heCA/ICIiIDogImF0IGxlYXN0ICIpLCBtaW4sIGwpOwotICAgICAgICB2YV9lbmQodmFyZ3MpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CisgICAgaWYgKGwgPT0gMCkKKyAgICAgICAgcmV0dXJuIDE7CiAgICAgaWYgKGwgPiBtYXgpIHsKICAgICAgICAgaWYgKG5hbWUgIT0gTlVMTCkKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdCgKQEAgLTE4MDgsOSArMjM4NSwxNCBAQAogICAgICAgICAgICAgICAgICJ1bnBhY2tlZCB0dXBsZSBzaG91bGQgaGF2ZSAlcyV6ZCBlbGVtZW50cywiCiAgICAgICAgICAgICAgICAgIiBidXQgaGFzICV6ZCIsCiAgICAgICAgICAgICAgICAgKG1pbiA9PSBtYXggPyAiIiA6ICJhdCBtb3N0ICIpLCBtYXgsIGwpOwotICAgICAgICB2YV9lbmQodmFyZ3MpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CisKKyNpZmRlZiBIQVZFX1NUREFSR19QUk9UT1RZUEVTCisgICAgdmFfc3RhcnQodmFyZ3MsIG1heCk7CisjZWxzZQorICAgIHZhX3N0YXJ0KHZhcmdzKTsKKyNlbmRpZgogICAgIGZvciAoaSA9IDA7IGkgPCBsOyBpKyspIHsKICAgICAgICAgbyA9IHZhX2FyZyh2YXJncywgUHlPYmplY3QgKiopOwogICAgICAgICAqbyA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgaSk7CkBAIC0xODYwLDYgKzI0NDIsMTkgQEAKICAgICByZXR1cm4gMDsKIH0KIAordm9pZAorX1B5QXJnX0Zpbmkodm9pZCkKK3sKKyAgICBzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqdG1wLCAqcyA9IHN0YXRpY19hcmdfcGFyc2VyczsKKyAgICB3aGlsZSAocykgeworICAgICAgICB0bXAgPSBzLT5uZXh0OworICAgICAgICBzLT5uZXh0ID0gTlVMTDsKKyAgICAgICAgcGFyc2VyX2NsZWFyKHMpOworICAgICAgICBzID0gdG1wOworICAgIH0KKyAgICBzdGF0aWNfYXJnX3BhcnNlcnMgPSBOVUxMOworfQorCiAjaWZkZWYgX19jcGx1c3BsdXMKIH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1B5dGhvbi9ncmFtaW5pdC5jIGIvUHl0aG9uL2dyYW1pbml0LmMKaW5kZXggODIxMmIyYS4uZjI1ODRlMCAxMDA2NDQKLS0tIGEvUHl0aG9uL2dyYW1pbml0LmMKKysrIGIvUHl0aG9uL2dyYW1pbml0LmMKQEAgLTIwNCwxMSArMjA0LDEzIEBACiAgICAgezMyLCA3fSwKICAgICB7MCwgNn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzlfN1syXSA9IHsKK3N0YXRpYyBhcmMgYXJjc185XzdbM10gPSB7CiAgICAgezMwLCAxMn0sCiAgICAgezM0LCAzfSwKKyAgICB7MCwgN30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzlfOFsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc185XzhbMl0gPSB7CisgICAgezMyLCAxM30sCiAgICAgezAsIDh9LAogfTsKIHN0YXRpYyBhcmMgYXJjc185XzlbMl0gPSB7CkBAIC0yMjEsMzUgKzIyMywzOSBAQAogICAgIHswLCAxMH0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzlfMTFbM10gPSB7Ci0gICAgezMwLCAxM30sCi0gICAgezMyLCAxNH0sCisgICAgezMwLCAxNH0sCisgICAgezMyLCAxNX0sCiAgICAgezAsIDExfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfOV8xMlszXSA9IHsKICAgICB7MzIsIDd9LAotICAgIHszMSwgMTV9LAorICAgIHszMSwgMTZ9LAogICAgIHswLCAxMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzlfMTNbMl0gPSB7Ci0gICAgezMyLCAxNH0sCitzdGF0aWMgYXJjIGFyY3NfOV8xM1sxXSA9IHsKICAgICB7MCwgMTN9LAogfTsKIHN0YXRpYyBhcmMgYXJjc185XzE0WzJdID0gewotICAgIHszMCwgMTZ9LAotICAgIHszNCwgM30sCisgICAgezMyLCAxNX0sCisgICAgezAsIDE0fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfOV8xNVsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc185XzE1WzNdID0geworICAgIHszMCwgMTd9LAorICAgIHszNCwgM30sCisgICAgezAsIDE1fSwKK307CitzdGF0aWMgYXJjIGFyY3NfOV8xNlsxXSA9IHsKICAgICB7MjYsIDZ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc185XzE2WzNdID0gewotICAgIHszMiwgMTR9LAotICAgIHszMSwgMTd9LAotICAgIHswLCAxNn0sCitzdGF0aWMgYXJjIGFyY3NfOV8xN1szXSA9IHsKKyAgICB7MzIsIDE1fSwKKyAgICB7MzEsIDE4fSwKKyAgICB7MCwgMTd9LAogfTsKLXN0YXRpYyBhcmMgYXJjc185XzE3WzFdID0gewotICAgIHsyNiwgMTN9LAorc3RhdGljIGFyYyBhcmNzXzlfMThbMV0gPSB7CisgICAgezI2LCAxNH0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc185WzE4XSA9IHsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfOVsxOV0gPSB7CiAgICAgezMsIGFyY3NfOV8wfSwKICAgICB7MywgYXJjc185XzF9LAogICAgIHszLCBhcmNzXzlfMn0sCkBAIC0yNTcsMTcgKzI2MywxOCBAQAogICAgIHsxLCBhcmNzXzlfNH0sCiAgICAgezQsIGFyY3NfOV81fSwKICAgICB7MiwgYXJjc185XzZ9LAotICAgIHsyLCBhcmNzXzlfN30sCi0gICAgezEsIGFyY3NfOV84fSwKKyAgICB7MywgYXJjc185Xzd9LAorICAgIHsyLCBhcmNzXzlfOH0sCiAgICAgezIsIGFyY3NfOV85fSwKICAgICB7MywgYXJjc185XzEwfSwKICAgICB7MywgYXJjc185XzExfSwKICAgICB7MywgYXJjc185XzEyfSwKLSAgICB7MiwgYXJjc185XzEzfSwKKyAgICB7MSwgYXJjc185XzEzfSwKICAgICB7MiwgYXJjc185XzE0fSwKLSAgICB7MSwgYXJjc185XzE1fSwKLSAgICB7MywgYXJjc185XzE2fSwKLSAgICB7MSwgYXJjc185XzE3fSwKKyAgICB7MywgYXJjc185XzE1fSwKKyAgICB7MSwgYXJjc185XzE2fSwKKyAgICB7MywgYXJjc185XzE3fSwKKyAgICB7MSwgYXJjc185XzE4fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMTBfMFsxXSA9IHsKICAgICB7MjMsIDF9LApAQCAtMzE5LDExICszMjYsMTMgQEAKICAgICB7MzIsIDd9LAogICAgIHswLCA2fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTFfN1syXSA9IHsKK3N0YXRpYyBhcmMgYXJjc18xMV83WzNdID0gewogICAgIHszNiwgMTJ9LAogICAgIHszNCwgM30sCisgICAgezAsIDd9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xMV84WzFdID0geworc3RhdGljIGFyYyBhcmNzXzExXzhbMl0gPSB7CisgICAgezMyLCAxM30sCiAgICAgezAsIDh9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18xMV85WzJdID0gewpAQCAtMzM2LDM1ICszNDUsMzkgQEAKICAgICB7MCwgMTB9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18xMV8xMVszXSA9IHsKLSAgICB7MzYsIDEzfSwKLSAgICB7MzIsIDE0fSwKKyAgICB7MzYsIDE0fSwKKyAgICB7MzIsIDE1fSwKICAgICB7MCwgMTF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18xMV8xMlszXSA9IHsKICAgICB7MzIsIDd9LAotICAgIHszMSwgMTV9LAorICAgIHszMSwgMTZ9LAogICAgIHswLCAxMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzExXzEzWzJdID0gewotICAgIHszMiwgMTR9LAorc3RhdGljIGFyYyBhcmNzXzExXzEzWzFdID0gewogICAgIHswLCAxM30sCiB9Owogc3RhdGljIGFyYyBhcmNzXzExXzE0WzJdID0gewotICAgIHszNiwgMTZ9LAotICAgIHszNCwgM30sCisgICAgezMyLCAxNX0sCisgICAgezAsIDE0fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTFfMTVbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfMTFfMTVbM10gPSB7CisgICAgezM2LCAxN30sCisgICAgezM0LCAzfSwKKyAgICB7MCwgMTV9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xMV8xNlsxXSA9IHsKICAgICB7MjYsIDZ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xMV8xNlszXSA9IHsKLSAgICB7MzIsIDE0fSwKLSAgICB7MzEsIDE3fSwKLSAgICB7MCwgMTZ9LAorc3RhdGljIGFyYyBhcmNzXzExXzE3WzNdID0geworICAgIHszMiwgMTV9LAorICAgIHszMSwgMTh9LAorICAgIHswLCAxN30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzExXzE3WzFdID0gewotICAgIHsyNiwgMTN9LAorc3RhdGljIGFyYyBhcmNzXzExXzE4WzFdID0geworICAgIHsyNiwgMTR9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMTFbMThdID0geworc3RhdGljIHN0YXRlIHN0YXRlc18xMVsxOV0gPSB7CiAgICAgezMsIGFyY3NfMTFfMH0sCiAgICAgezMsIGFyY3NfMTFfMX0sCiAgICAgezMsIGFyY3NfMTFfMn0sCkBAIC0zNzIsMTcgKzM4NSwxOCBAQAogICAgIHsxLCBhcmNzXzExXzR9LAogICAgIHs0LCBhcmNzXzExXzV9LAogICAgIHsyLCBhcmNzXzExXzZ9LAotICAgIHsyLCBhcmNzXzExXzd9LAotICAgIHsxLCBhcmNzXzExXzh9LAorICAgIHszLCBhcmNzXzExXzd9LAorICAgIHsyLCBhcmNzXzExXzh9LAogICAgIHsyLCBhcmNzXzExXzl9LAogICAgIHszLCBhcmNzXzExXzEwfSwKICAgICB7MywgYXJjc18xMV8xMX0sCiAgICAgezMsIGFyY3NfMTFfMTJ9LAotICAgIHsyLCBhcmNzXzExXzEzfSwKKyAgICB7MSwgYXJjc18xMV8xM30sCiAgICAgezIsIGFyY3NfMTFfMTR9LAotICAgIHsxLCBhcmNzXzExXzE1fSwKLSAgICB7MywgYXJjc18xMV8xNn0sCi0gICAgezEsIGFyY3NfMTFfMTd9LAorICAgIHszLCBhcmNzXzExXzE1fSwKKyAgICB7MSwgYXJjc18xMV8xNn0sCisgICAgezMsIGFyY3NfMTFfMTd9LAorICAgIHsxLCBhcmNzXzExXzE4fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMTJfMFsxXSA9IHsKICAgICB7MjMsIDF9LApAQCAtNDQ1LDU0ICs0NTksNzcgQEAKIHN0YXRpYyBhcmMgYXJjc18xNl8wWzFdID0gewogICAgIHs0NywgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzE2XzFbM10gPSB7CitzdGF0aWMgYXJjIGFyY3NfMTZfMVs0XSA9IHsKICAgICB7NDgsIDJ9LAotICAgIHszMSwgM30sCisgICAgezQ5LCAzfSwKKyAgICB7MzEsIDR9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTZfMlsyXSA9IHsKLSAgICB7NDksIDR9LAotICAgIHs5LCA0fSwKK3N0YXRpYyBhcmMgYXJjc18xNl8yWzFdID0geworICAgIHswLCAyfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMTZfM1syXSA9IHsKLSAgICB7NDksIDV9LAorICAgIHs1MCwgMn0sCisgICAgezksIDJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xNl80WzJdID0geworICAgIHs1MCwgNX0sCiAgICAgezQ3LCA1fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTZfNFsxXSA9IHsKLSAgICB7MCwgNH0sCi19Owogc3RhdGljIGFyYyBhcmNzXzE2XzVbMl0gPSB7Ci0gICAgezMxLCAzfSwKKyAgICB7MzEsIDR9LAogICAgIHswLCA1fSwKIH07CiBzdGF0aWMgc3RhdGUgc3RhdGVzXzE2WzZdID0gewogICAgIHsxLCBhcmNzXzE2XzB9LAotICAgIHszLCBhcmNzXzE2XzF9LAotICAgIHsyLCBhcmNzXzE2XzJ9LAorICAgIHs0LCBhcmNzXzE2XzF9LAorICAgIHsxLCBhcmNzXzE2XzJ9LAogICAgIHsyLCBhcmNzXzE2XzN9LAotICAgIHsxLCBhcmNzXzE2XzR9LAorICAgIHsyLCBhcmNzXzE2XzR9LAogICAgIHsyLCBhcmNzXzE2XzV9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xN18wWzJdID0gewotICAgIHsyNiwgMX0sCi0gICAgezUwLCAxfSwKK3N0YXRpYyBhcmMgYXJjc18xN18wWzFdID0geworICAgIHsyNywgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzE3XzFbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfMTdfMVsxXSA9IHsKKyAgICB7MjYsIDJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xN18yWzJdID0geworICAgIHszMSwgM30sCisgICAgezAsIDJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xN18zWzFdID0geworICAgIHsyNiwgNH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzE3XzRbMV0gPSB7CisgICAgezAsIDR9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMTdbNV0gPSB7CisgICAgezEsIGFyY3NfMTdfMH0sCisgICAgezEsIGFyY3NfMTdfMX0sCisgICAgezIsIGFyY3NfMTdfMn0sCisgICAgezEsIGFyY3NfMTdfM30sCisgICAgezEsIGFyY3NfMTdfNH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzE4XzBbMl0gPSB7CisgICAgezI2LCAxfSwKKyAgICB7NTEsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xOF8xWzJdID0gewogICAgIHszMiwgMn0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xN18yWzNdID0geworc3RhdGljIGFyYyBhcmNzXzE4XzJbM10gPSB7CiAgICAgezI2LCAxfSwKLSAgICB7NTAsIDF9LAorICAgIHs1MSwgMX0sCiAgICAgezAsIDJ9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMTdbM10gPSB7Ci0gICAgezIsIGFyY3NfMTdfMH0sCi0gICAgezIsIGFyY3NfMTdfMX0sCi0gICAgezMsIGFyY3NfMTdfMn0sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzE4WzNdID0geworICAgIHsyLCBhcmNzXzE4XzB9LAorICAgIHsyLCBhcmNzXzE4XzF9LAorICAgIHszLCBhcmNzXzE4XzJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xOF8wWzEzXSA9IHsKLSAgICB7NTEsIDF9LAorc3RhdGljIGFyYyBhcmNzXzE5XzBbMTNdID0gewogICAgIHs1MiwgMX0sCiAgICAgezUzLCAxfSwKICAgICB7NTQsIDF9LApAQCAtNTA1LDYwICs1NDIsNTEgQEAKICAgICB7NjEsIDF9LAogICAgIHs2MiwgMX0sCiAgICAgezYzLCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMThfMVsxXSA9IHsKLSAgICB7MCwgMX0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc18xOFsyXSA9IHsKLSAgICB7MTMsIGFyY3NfMThfMH0sCi0gICAgezEsIGFyY3NfMThfMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzE5XzBbMV0gPSB7CiAgICAgezY0LCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMTlfMVsxXSA9IHsKLSAgICB7NjUsIDJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18xOV8yWzFdID0gewotICAgIHswLCAyfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzE5WzNdID0gewotICAgIHsxLCBhcmNzXzE5XzB9LAotICAgIHsxLCBhcmNzXzE5XzF9LAotICAgIHsxLCBhcmNzXzE5XzJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18yMF8wWzFdID0gewotICAgIHs2NiwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzIwXzFbMV0gPSB7CiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMjBbMl0gPSB7CitzdGF0aWMgc3RhdGUgc3RhdGVzXzE5WzJdID0geworICAgIHsxMywgYXJjc18xOV8wfSwKKyAgICB7MSwgYXJjc18xOV8xfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMjBfMFsxXSA9IHsKKyAgICB7NjUsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18yMF8xWzFdID0geworICAgIHs2NiwgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzIwXzJbMV0gPSB7CisgICAgezAsIDJ9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMjBbM10gPSB7CiAgICAgezEsIGFyY3NfMjBfMH0sCiAgICAgezEsIGFyY3NfMjBfMX0sCisgICAgezEsIGFyY3NfMjBfMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzIxXzBbNV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfMjFfMFsxXSA9IHsKICAgICB7NjcsIDF9LAotICAgIHs2OCwgMX0sCi0gICAgezY5LCAxfSwKLSAgICB7NzAsIDF9LAotICAgIHs3MSwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzIxXzFbMV0gPSB7CiAgICAgezAsIDF9LAogfTsKIHN0YXRpYyBzdGF0ZSBzdGF0ZXNfMjFbMl0gPSB7Ci0gICAgezUsIGFyY3NfMjFfMH0sCisgICAgezEsIGFyY3NfMjFfMH0sCiAgICAgezEsIGFyY3NfMjFfMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzIyXzBbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfMjJfMFs1XSA9IHsKKyAgICB7NjgsIDF9LAorICAgIHs2OSwgMX0sCisgICAgezcwLCAxfSwKKyAgICB7NzEsIDF9LAogICAgIHs3MiwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzIyXzFbMV0gPSB7CiAgICAgezAsIDF9LAogfTsKIHN0YXRpYyBzdGF0ZSBzdGF0ZXNfMjJbMl0gPSB7Ci0gICAgezEsIGFyY3NfMjJfMH0sCisgICAgezUsIGFyY3NfMjJfMH0sCiAgICAgezEsIGFyY3NfMjJfMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzIzXzBbMV0gPSB7CkBAIC01NzQsMTQyICs2MDIsMTMzIEBACiBzdGF0aWMgYXJjIGFyY3NfMjRfMFsxXSA9IHsKICAgICB7NzQsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18yNF8xWzJdID0geworc3RhdGljIGFyYyBhcmNzXzI0XzFbMV0gPSB7CisgICAgezAsIDF9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMjRbMl0gPSB7CisgICAgezEsIGFyY3NfMjRfMH0sCisgICAgezEsIGFyY3NfMjRfMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzI1XzBbMV0gPSB7CisgICAgezc1LCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMjVfMVsyXSA9IHsKICAgICB7OSwgMn0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18yNF8yWzFdID0geworc3RhdGljIGFyYyBhcmNzXzI1XzJbMV0gPSB7CiAgICAgezAsIDJ9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMjRbM10gPSB7Ci0gICAgezEsIGFyY3NfMjRfMH0sCi0gICAgezIsIGFyY3NfMjRfMX0sCi0gICAgezEsIGFyY3NfMjRfMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzI1XzBbMV0gPSB7Ci0gICAgezQ5LCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjVfMVsxXSA9IHsKLSAgICB7MCwgMX0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc18yNVsyXSA9IHsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMjVbM10gPSB7CiAgICAgezEsIGFyY3NfMjVfMH0sCi0gICAgezEsIGFyY3NfMjVfMX0sCisgICAgezIsIGFyY3NfMjVfMX0sCisgICAgezEsIGFyY3NfMjVfMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzI2XzBbMV0gPSB7Ci0gICAgezc1LCAxfSwKKyAgICB7NTAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18yNl8xWzJdID0geworc3RhdGljIGFyYyBhcmNzXzI2XzFbMV0gPSB7CisgICAgezAsIDF9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMjZbMl0gPSB7CisgICAgezEsIGFyY3NfMjZfMH0sCisgICAgezEsIGFyY3NfMjZfMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzI3XzBbMV0gPSB7CisgICAgezc2LCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMjdfMVsyXSA9IHsKICAgICB7MjYsIDJ9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMjZfMlsyXSA9IHsKLSAgICB7NzYsIDN9LAorc3RhdGljIGFyYyBhcmNzXzI3XzJbMl0gPSB7CisgICAgezc3LCAzfSwKICAgICB7MCwgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzI2XzNbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfMjdfM1sxXSA9IHsKICAgICB7MjYsIDR9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18yNl80WzFdID0geworc3RhdGljIGFyYyBhcmNzXzI3XzRbMV0gPSB7CiAgICAgezAsIDR9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMjZbNV0gPSB7Ci0gICAgezEsIGFyY3NfMjZfMH0sCi0gICAgezIsIGFyY3NfMjZfMX0sCi0gICAgezIsIGFyY3NfMjZfMn0sCi0gICAgezEsIGFyY3NfMjZfM30sCi0gICAgezEsIGFyY3NfMjZfNH0sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzI3WzVdID0geworICAgIHsxLCBhcmNzXzI3XzB9LAorICAgIHsyLCBhcmNzXzI3XzF9LAorICAgIHsyLCBhcmNzXzI3XzJ9LAorICAgIHsxLCBhcmNzXzI3XzN9LAorICAgIHsxLCBhcmNzXzI3XzR9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18yN18wWzJdID0gewotICAgIHs3NywgMX0sCitzdGF0aWMgYXJjIGFyY3NfMjhfMFsyXSA9IHsKICAgICB7NzgsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18yN18xWzFdID0gewotICAgIHswLCAxfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzI3WzJdID0gewotICAgIHsyLCBhcmNzXzI3XzB9LAotICAgIHsxLCBhcmNzXzI3XzF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18yOF8wWzFdID0gewogICAgIHs3OSwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzI4XzFbMV0gPSB7Ci0gICAgezgwLCAyfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjhfMlsxXSA9IHsKLSAgICB7MCwgMn0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc18yOFszXSA9IHsKLSAgICB7MSwgYXJjc18yOF8wfSwKLSAgICB7MSwgYXJjc18yOF8xfSwKLSAgICB7MSwgYXJjc18yOF8yfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjlfMFsxXSA9IHsKLSAgICB7NzYsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18yOV8xWzNdID0gewotICAgIHs4MSwgMn0sCi0gICAgezgyLCAyfSwKLSAgICB7MTIsIDN9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18yOV8yWzRdID0gewotICAgIHs4MSwgMn0sCi0gICAgezgyLCAyfSwKLSAgICB7MTIsIDN9LAotICAgIHs3OSwgNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzI5XzNbMV0gPSB7Ci0gICAgezc5LCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjlfNFszXSA9IHsKLSAgICB7MzMsIDV9LAotICAgIHsxMywgNn0sCi0gICAgezgzLCA1fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjlfNVsxXSA9IHsKLSAgICB7MCwgNX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzI5XzZbMV0gPSB7Ci0gICAgezgzLCA3fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjlfN1sxXSA9IHsKLSAgICB7MTUsIDV9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMjlbOF0gPSB7Ci0gICAgezEsIGFyY3NfMjlfMH0sCi0gICAgezMsIGFyY3NfMjlfMX0sCi0gICAgezQsIGFyY3NfMjlfMn0sCi0gICAgezEsIGFyY3NfMjlfM30sCi0gICAgezMsIGFyY3NfMjlfNH0sCi0gICAgezEsIGFyY3NfMjlfNX0sCi0gICAgezEsIGFyY3NfMjlfNn0sCi0gICAgezEsIGFyY3NfMjlfN30sCi19Owotc3RhdGljIGFyYyBhcmNzXzMwXzBbMV0gPSB7Ci0gICAgezIzLCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMzBfMVsyXSA9IHsKLSAgICB7ODUsIDJ9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMzBfMlsxXSA9IHsKLSAgICB7MjMsIDN9LAorc3RhdGljIHN0YXRlIHN0YXRlc18yOFsyXSA9IHsKKyAgICB7MiwgYXJjc18yOF8wfSwKKyAgICB7MSwgYXJjc18yOF8xfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMjlfMFsxXSA9IHsKKyAgICB7ODAsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18yOV8xWzFdID0geworICAgIHs4MSwgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzI5XzJbMV0gPSB7CisgICAgezAsIDJ9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMjlbM10gPSB7CisgICAgezEsIGFyY3NfMjlfMH0sCisgICAgezEsIGFyY3NfMjlfMX0sCisgICAgezEsIGFyY3NfMjlfMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzMwXzBbMV0gPSB7CisgICAgezc3LCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMzBfMVszXSA9IHsKKyAgICB7ODIsIDJ9LAorICAgIHs4MywgMn0sCisgICAgezEyLCAzfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMzBfMls0XSA9IHsKKyAgICB7ODIsIDJ9LAorICAgIHs4MywgMn0sCisgICAgezEyLCAzfSwKKyAgICB7ODAsIDR9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18zMF8zWzFdID0gewotICAgIHswLCAzfSwKKyAgICB7ODAsIDR9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMzBbNF0gPSB7CitzdGF0aWMgYXJjIGFyY3NfMzBfNFszXSA9IHsKKyAgICB7MzMsIDV9LAorICAgIHsxMywgNn0sCisgICAgezg0LCA1fSwKK307CitzdGF0aWMgYXJjIGFyY3NfMzBfNVsxXSA9IHsKKyAgICB7MCwgNX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzMwXzZbMV0gPSB7CisgICAgezg0LCA3fSwKK307CitzdGF0aWMgYXJjIGFyY3NfMzBfN1sxXSA9IHsKKyAgICB7MTUsIDV9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMzBbOF0gPSB7CiAgICAgezEsIGFyY3NfMzBfMH0sCi0gICAgezIsIGFyY3NfMzBfMX0sCi0gICAgezEsIGFyY3NfMzBfMn0sCisgICAgezMsIGFyY3NfMzBfMX0sCisgICAgezQsIGFyY3NfMzBfMn0sCiAgICAgezEsIGFyY3NfMzBfM30sCisgICAgezMsIGFyY3NfMzBfNH0sCisgICAgezEsIGFyY3NfMzBfNX0sCisgICAgezEsIGFyY3NfMzBfNn0sCisgICAgezEsIGFyY3NfMzBfN30sCiB9Owogc3RhdGljIGFyYyBhcmNzXzMxXzBbMV0gPSB7Ci0gICAgezEyLCAxfSwKKyAgICB7MjMsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18zMV8xWzJdID0gewotICAgIHs4NSwgMn0sCisgICAgezg2LCAyfSwKICAgICB7MCwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzMxXzJbMV0gPSB7CkBAIC03MjUsMzcgKzc0NCw0NSBAQAogICAgIHsxLCBhcmNzXzMxXzN9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18zMl8wWzFdID0gewotICAgIHs4NCwgMX0sCisgICAgezEyLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzJfMVsyXSA9IHsKKyAgICB7ODYsIDJ9LAorICAgIHswLCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMzJfMlsxXSA9IHsKKyAgICB7MjMsIDN9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18zMl8zWzFdID0geworICAgIHswLCAzfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzMyWzRdID0geworICAgIHsxLCBhcmNzXzMyXzB9LAorICAgIHsyLCBhcmNzXzMyXzF9LAorICAgIHsxLCBhcmNzXzMyXzJ9LAorICAgIHsxLCBhcmNzXzMyXzN9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18zM18wWzFdID0geworICAgIHs4NSwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzMzXzFbMl0gPSB7CiAgICAgezMyLCAyfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzMyXzJbMl0gPSB7Ci0gICAgezg0LCAxfSwKK3N0YXRpYyBhcmMgYXJjc18zM18yWzJdID0geworICAgIHs4NSwgMX0sCiAgICAgezAsIDJ9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMzJbM10gPSB7Ci0gICAgezEsIGFyY3NfMzJfMH0sCi0gICAgezIsIGFyY3NfMzJfMX0sCi0gICAgezIsIGFyY3NfMzJfMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzMzXzBbMV0gPSB7Ci0gICAgezg2LCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMzNfMVsyXSA9IHsKLSAgICB7MzIsIDB9LAotICAgIHswLCAxfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzMzWzJdID0geworc3RhdGljIHN0YXRlIHN0YXRlc18zM1szXSA9IHsKICAgICB7MSwgYXJjc18zM18wfSwKICAgICB7MiwgYXJjc18zM18xfSwKKyAgICB7MiwgYXJjc18zM18yfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzRfMFsxXSA9IHsKLSAgICB7MjMsIDF9LAorICAgIHs4NywgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzM0XzFbMl0gPSB7Ci0gICAgezgxLCAwfSwKKyAgICB7MzIsIDB9LAogICAgIHswLCAxfSwKIH07CiBzdGF0aWMgc3RhdGUgc3RhdGVzXzM0WzJdID0gewpAQCAtNzYzLDE5ICs3OTAsMTUgQEAKICAgICB7MiwgYXJjc18zNF8xfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzVfMFsxXSA9IHsKLSAgICB7ODcsIDF9LAorICAgIHsyMywgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzM1XzFbMV0gPSB7Ci0gICAgezIzLCAyfSwKK3N0YXRpYyBhcmMgYXJjc18zNV8xWzJdID0geworICAgIHs4MiwgMH0sCisgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18zNV8yWzJdID0gewotICAgIHszMiwgMX0sCi0gICAgezAsIDJ9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMzVbM10gPSB7CitzdGF0aWMgc3RhdGUgc3RhdGVzXzM1WzJdID0gewogICAgIHsxLCBhcmNzXzM1XzB9LAotICAgIHsxLCBhcmNzXzM1XzF9LAotICAgIHsyLCBhcmNzXzM1XzJ9LAorICAgIHsyLCBhcmNzXzM1XzF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18zNl8wWzFdID0gewogICAgIHs4OCwgMX0sCkBAIC03OTYsOTcgKzgxOSw3NiBAQAogICAgIHs4OSwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzM3XzFbMV0gPSB7Ci0gICAgezI2LCAyfSwKKyAgICB7MjMsIDJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18zN18yWzJdID0gewotICAgIHszMiwgM30sCisgICAgezMyLCAxfSwKICAgICB7MCwgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzM3XzNbMV0gPSB7Ci0gICAgezI2LCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMzdfNFsxXSA9IHsKLSAgICB7MCwgNH0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc18zN1s1XSA9IHsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMzdbM10gPSB7CiAgICAgezEsIGFyY3NfMzdfMH0sCiAgICAgezEsIGFyY3NfMzdfMX0sCiAgICAgezIsIGFyY3NfMzdfMn0sCi0gICAgezEsIGFyY3NfMzdfM30sCi0gICAgezEsIGFyY3NfMzdfNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzM4XzBbOV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfMzhfMFsxXSA9IHsKICAgICB7OTAsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18zOF8xWzFdID0geworICAgIHsyNiwgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzM4XzJbMl0gPSB7CisgICAgezMyLCAzfSwKKyAgICB7MCwgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzM4XzNbMV0gPSB7CisgICAgezI2LCA0fSwKK307CitzdGF0aWMgYXJjIGFyY3NfMzhfNFsxXSA9IHsKKyAgICB7MCwgNH0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc18zOFs1XSA9IHsKKyAgICB7MSwgYXJjc18zOF8wfSwKKyAgICB7MSwgYXJjc18zOF8xfSwKKyAgICB7MiwgYXJjc18zOF8yfSwKKyAgICB7MSwgYXJjc18zOF8zfSwKKyAgICB7MSwgYXJjc18zOF80fSwKK307CitzdGF0aWMgYXJjIGFyY3NfMzlfMFs5XSA9IHsKICAgICB7OTEsIDF9LAogICAgIHs5MiwgMX0sCiAgICAgezkzLCAxfSwKICAgICB7OTQsIDF9LAorICAgIHs5NSwgMX0sCiAgICAgezE5LCAxfSwKICAgICB7MTgsIDF9LAogICAgIHsxNywgMX0sCi0gICAgezk1LCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMzhfMVsxXSA9IHsKLSAgICB7MCwgMX0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc18zOFsyXSA9IHsKLSAgICB7OSwgYXJjc18zOF8wfSwKLSAgICB7MSwgYXJjc18zOF8xfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMzlfMFsxXSA9IHsKLSAgICB7MjEsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18zOV8xWzNdID0gewotICAgIHsxOSwgMn0sCi0gICAgezk0LCAyfSwKLSAgICB7OTIsIDJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18zOV8yWzFdID0gewotICAgIHswLCAyfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzM5WzNdID0gewotICAgIHsxLCBhcmNzXzM5XzB9LAotICAgIHszLCBhcmNzXzM5XzF9LAotICAgIHsxLCBhcmNzXzM5XzJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180MF8wWzFdID0gewogICAgIHs5NiwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQwXzFbMV0gPSB7Ci0gICAgezI2LCAyfSwKK3N0YXRpYyBhcmMgYXJjc18zOV8xWzFdID0geworICAgIHswLCAxfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzM5WzJdID0geworICAgIHs5LCBhcmNzXzM5XzB9LAorICAgIHsxLCBhcmNzXzM5XzF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180MF8wWzFdID0geworICAgIHsyMSwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQwXzFbM10gPSB7CisgICAgezE5LCAyfSwKKyAgICB7OTUsIDJ9LAorICAgIHs5MywgMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQwXzJbMV0gPSB7Ci0gICAgezI3LCAzfSwKKyAgICB7MCwgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQwXzNbMV0gPSB7Ci0gICAgezI4LCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNDBfNFszXSA9IHsKLSAgICB7OTcsIDF9LAotICAgIHs5OCwgNX0sCi0gICAgezAsIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180MF81WzFdID0gewotICAgIHsyNywgNn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzQwXzZbMV0gPSB7Ci0gICAgezI4LCA3fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNDBfN1sxXSA9IHsKLSAgICB7MCwgN30sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc180MFs4XSA9IHsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNDBbM10gPSB7CiAgICAgezEsIGFyY3NfNDBfMH0sCi0gICAgezEsIGFyY3NfNDBfMX0sCisgICAgezMsIGFyY3NfNDBfMX0sCiAgICAgezEsIGFyY3NfNDBfMn0sCi0gICAgezEsIGFyY3NfNDBfM30sCi0gICAgezMsIGFyY3NfNDBfNH0sCi0gICAgezEsIGFyY3NfNDBfNX0sCi0gICAgezEsIGFyY3NfNDBfNn0sCi0gICAgezEsIGFyY3NfNDBfN30sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQxXzBbMV0gPSB7Ci0gICAgezk5LCAxfSwKKyAgICB7OTcsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180MV8xWzFdID0gewogICAgIHsyNiwgMn0sCkBAIC04OTcsOCArODk5LDkgQEAKIHN0YXRpYyBhcmMgYXJjc180MV8zWzFdID0gewogICAgIHsyOCwgNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQxXzRbMl0gPSB7Ci0gICAgezk4LCA1fSwKK3N0YXRpYyBhcmMgYXJjc180MV80WzNdID0geworICAgIHs5OCwgMX0sCisgICAgezk5LCA1fSwKICAgICB7MCwgNH0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQxXzVbMV0gPSB7CkBAIC05MTUsNyArOTE4LDcgQEAKICAgICB7MSwgYXJjc180MV8xfSwKICAgICB7MSwgYXJjc180MV8yfSwKICAgICB7MSwgYXJjc180MV8zfSwKLSAgICB7MiwgYXJjc180MV80fSwKKyAgICB7MywgYXJjc180MV80fSwKICAgICB7MSwgYXJjc180MV81fSwKICAgICB7MSwgYXJjc180MV82fSwKICAgICB7MSwgYXJjc180MV83fSwKQEAgLTkyNCwyNTggKzkyNywyNzAgQEAKICAgICB7MTAwLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDJfMVsxXSA9IHsKLSAgICB7NjUsIDJ9LAorICAgIHsyNiwgMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQyXzJbMV0gPSB7Ci0gICAgezEwMSwgM30sCisgICAgezI3LCAzfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDJfM1sxXSA9IHsKLSAgICB7OSwgNH0sCisgICAgezI4LCA0fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDJfNFsxXSA9IHsKLSAgICB7MjcsIDV9LAorc3RhdGljIGFyYyBhcmNzXzQyXzRbMl0gPSB7CisgICAgezk5LCA1fSwKKyAgICB7MCwgNH0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQyXzVbMV0gPSB7Ci0gICAgezI4LCA2fSwKKyAgICB7MjcsIDZ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180Ml82WzJdID0gewotICAgIHs5OCwgN30sCi0gICAgezAsIDZ9LAorc3RhdGljIGFyYyBhcmNzXzQyXzZbMV0gPSB7CisgICAgezI4LCA3fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDJfN1sxXSA9IHsKLSAgICB7MjcsIDh9LAorICAgIHswLCA3fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDJfOFsxXSA9IHsKLSAgICB7MjgsIDl9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180Ml85WzFdID0gewotICAgIHswLCA5fSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzQyWzEwXSA9IHsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNDJbOF0gPSB7CiAgICAgezEsIGFyY3NfNDJfMH0sCiAgICAgezEsIGFyY3NfNDJfMX0sCiAgICAgezEsIGFyY3NfNDJfMn0sCiAgICAgezEsIGFyY3NfNDJfM30sCi0gICAgezEsIGFyY3NfNDJfNH0sCisgICAgezIsIGFyY3NfNDJfNH0sCiAgICAgezEsIGFyY3NfNDJfNX0sCi0gICAgezIsIGFyY3NfNDJfNn0sCisgICAgezEsIGFyY3NfNDJfNn0sCiAgICAgezEsIGFyY3NfNDJfN30sCi0gICAgezEsIGFyY3NfNDJfOH0sCi0gICAgezEsIGFyY3NfNDJfOX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQzXzBbMV0gPSB7Ci0gICAgezEwMiwgMX0sCisgICAgezEwMSwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQzXzFbMV0gPSB7Ci0gICAgezI3LCAyfSwKKyAgICB7NjYsIDJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180M18yWzFdID0gewotICAgIHsyOCwgM30sCisgICAgezEwMiwgM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQzXzNbMl0gPSB7Ci0gICAgezEwMywgNH0sCi0gICAgezEwNCwgNX0sCitzdGF0aWMgYXJjIGFyY3NfNDNfM1sxXSA9IHsKKyAgICB7OSwgNH0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQzXzRbMV0gPSB7Ci0gICAgezI3LCA2fSwKKyAgICB7MjcsIDV9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180M181WzFdID0gewotICAgIHsyNywgN30sCisgICAgezI4LCA2fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDNfNlsxXSA9IHsKLSAgICB7MjgsIDh9LAorc3RhdGljIGFyYyBhcmNzXzQzXzZbMl0gPSB7CisgICAgezk5LCA3fSwKKyAgICB7MCwgNn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQzXzdbMV0gPSB7Ci0gICAgezI4LCA5fSwKKyAgICB7MjcsIDh9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180M184WzRdID0gewotICAgIHsxMDMsIDR9LAotICAgIHs5OCwgMTB9LAotICAgIHsxMDQsIDV9LAotICAgIHswLCA4fSwKK3N0YXRpYyBhcmMgYXJjc180M184WzFdID0geworICAgIHsyOCwgOX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQzXzlbMV0gPSB7CiAgICAgezAsIDl9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180M18xMFsxXSA9IHsKLSAgICB7MjcsIDExfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNDNfMTFbMV0gPSB7Ci0gICAgezI4LCAxMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzQzXzEyWzJdID0gewotICAgIHsxMDQsIDV9LAotICAgIHswLCAxMn0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc180M1sxM10gPSB7CitzdGF0aWMgc3RhdGUgc3RhdGVzXzQzWzEwXSA9IHsKICAgICB7MSwgYXJjc180M18wfSwKICAgICB7MSwgYXJjc180M18xfSwKICAgICB7MSwgYXJjc180M18yfSwKLSAgICB7MiwgYXJjc180M18zfSwKKyAgICB7MSwgYXJjc180M18zfSwKICAgICB7MSwgYXJjc180M180fSwKICAgICB7MSwgYXJjc180M181fSwKLSAgICB7MSwgYXJjc180M182fSwKKyAgICB7MiwgYXJjc180M182fSwKICAgICB7MSwgYXJjc180M183fSwKLSAgICB7NCwgYXJjc180M184fSwKKyAgICB7MSwgYXJjc180M184fSwKICAgICB7MSwgYXJjc180M185fSwKLSAgICB7MSwgYXJjc180M18xMH0sCi0gICAgezEsIGFyY3NfNDNfMTF9LAotICAgIHsyLCBhcmNzXzQzXzEyfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDRfMFsxXSA9IHsKLSAgICB7MTA1LCAxfSwKKyAgICB7MTAzLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDRfMVsxXSA9IHsKLSAgICB7MTA2LCAyfSwKKyAgICB7MjcsIDJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180NF8yWzJdID0geworc3RhdGljIGFyYyBhcmNzXzQ0XzJbMV0gPSB7CisgICAgezI4LCAzfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDRfM1syXSA9IHsKKyAgICB7MTA0LCA0fSwKKyAgICB7MTA1LCA1fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDRfNFsxXSA9IHsKKyAgICB7MjcsIDZ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180NF81WzFdID0geworICAgIHsyNywgN30sCit9Oworc3RhdGljIGFyYyBhcmNzXzQ0XzZbMV0gPSB7CisgICAgezI4LCA4fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDRfN1sxXSA9IHsKKyAgICB7MjgsIDl9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180NF84WzRdID0geworICAgIHsxMDQsIDR9LAorICAgIHs5OSwgMTB9LAorICAgIHsxMDUsIDV9LAorICAgIHswLCA4fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDRfOVsxXSA9IHsKKyAgICB7MCwgOX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQ0XzEwWzFdID0geworICAgIHsyNywgMTF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180NF8xMVsxXSA9IHsKKyAgICB7MjgsIDEyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDRfMTJbMl0gPSB7CisgICAgezEwNSwgNX0sCisgICAgezAsIDEyfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzQ0WzEzXSA9IHsKKyAgICB7MSwgYXJjc180NF8wfSwKKyAgICB7MSwgYXJjc180NF8xfSwKKyAgICB7MSwgYXJjc180NF8yfSwKKyAgICB7MiwgYXJjc180NF8zfSwKKyAgICB7MSwgYXJjc180NF80fSwKKyAgICB7MSwgYXJjc180NF81fSwKKyAgICB7MSwgYXJjc180NF82fSwKKyAgICB7MSwgYXJjc180NF83fSwKKyAgICB7NCwgYXJjc180NF84fSwKKyAgICB7MSwgYXJjc180NF85fSwKKyAgICB7MSwgYXJjc180NF8xMH0sCisgICAgezEsIGFyY3NfNDRfMTF9LAorICAgIHsyLCBhcmNzXzQ0XzEyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDVfMFsxXSA9IHsKKyAgICB7MTA2LCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDVfMVsxXSA9IHsKKyAgICB7MTA3LCAyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDVfMlsyXSA9IHsKICAgICB7MzIsIDF9LAogICAgIHsyNywgM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQ0XzNbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNDVfM1sxXSA9IHsKICAgICB7MjgsIDR9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180NF80WzFdID0geworc3RhdGljIGFyYyBhcmNzXzQ1XzRbMV0gPSB7CiAgICAgezAsIDR9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNDRbNV0gPSB7Ci0gICAgezEsIGFyY3NfNDRfMH0sCi0gICAgezEsIGFyY3NfNDRfMX0sCi0gICAgezIsIGFyY3NfNDRfMn0sCi0gICAgezEsIGFyY3NfNDRfM30sCi0gICAgezEsIGFyY3NfNDRfNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzQ1XzBbMV0gPSB7Ci0gICAgezI2LCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNDVfMVsyXSA9IHsKLSAgICB7ODUsIDJ9LAotICAgIHswLCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNDVfMlsxXSA9IHsKLSAgICB7MTA3LCAzfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNDVfM1sxXSA9IHsKLSAgICB7MCwgM30sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc180NVs0XSA9IHsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNDVbNV0gPSB7CiAgICAgezEsIGFyY3NfNDVfMH0sCi0gICAgezIsIGFyY3NfNDVfMX0sCi0gICAgezEsIGFyY3NfNDVfMn0sCisgICAgezEsIGFyY3NfNDVfMX0sCisgICAgezIsIGFyY3NfNDVfMn0sCiAgICAgezEsIGFyY3NfNDVfM30sCisgICAgezEsIGFyY3NfNDVfNH0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQ2XzBbMV0gPSB7Ci0gICAgezEwOCwgMX0sCisgICAgezI2LCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDZfMVsyXSA9IHsKKyAgICB7ODYsIDJ9LAorICAgIHswLCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDZfMlsxXSA9IHsKKyAgICB7MTA4LCAzfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDZfM1sxXSA9IHsKKyAgICB7MCwgM30sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc180Nls0XSA9IHsKKyAgICB7MSwgYXJjc180Nl8wfSwKKyAgICB7MiwgYXJjc180Nl8xfSwKKyAgICB7MSwgYXJjc180Nl8yfSwKKyAgICB7MSwgYXJjc180Nl8zfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDdfMFsxXSA9IHsKKyAgICB7MTA5LCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDdfMVsyXSA9IHsKICAgICB7MjYsIDJ9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDZfMlsyXSA9IHsKLSAgICB7ODUsIDN9LAorc3RhdGljIGFyYyBhcmNzXzQ3XzJbMl0gPSB7CisgICAgezg2LCAzfSwKICAgICB7MCwgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQ2XzNbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNDdfM1sxXSA9IHsKICAgICB7MjMsIDR9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180Nl80WzFdID0geworc3RhdGljIGFyYyBhcmNzXzQ3XzRbMV0gPSB7CiAgICAgezAsIDR9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNDZbNV0gPSB7Ci0gICAgezEsIGFyY3NfNDZfMH0sCi0gICAgezIsIGFyY3NfNDZfMX0sCi0gICAgezIsIGFyY3NfNDZfMn0sCi0gICAgezEsIGFyY3NfNDZfM30sCi0gICAgezEsIGFyY3NfNDZfNH0sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzQ3WzVdID0geworICAgIHsxLCBhcmNzXzQ3XzB9LAorICAgIHsyLCBhcmNzXzQ3XzF9LAorICAgIHsyLCBhcmNzXzQ3XzJ9LAorICAgIHsxLCBhcmNzXzQ3XzN9LAorICAgIHsxLCBhcmNzXzQ3XzR9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180N18wWzJdID0geworc3RhdGljIGFyYyBhcmNzXzQ4XzBbMl0gPSB7CiAgICAgezMsIDF9LAogICAgIHsyLCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDdfMVsxXSA9IHsKLSAgICB7MCwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzQ3XzJbMV0gPSB7Ci0gICAgezEwOSwgM30sCi19Owotc3RhdGljIGFyYyBhcmNzXzQ3XzNbMV0gPSB7Ci0gICAgezYsIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180N180WzJdID0gewotICAgIHs2LCA0fSwKLSAgICB7MTEwLCAxfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzQ3WzVdID0gewotICAgIHsyLCBhcmNzXzQ3XzB9LAotICAgIHsxLCBhcmNzXzQ3XzF9LAotICAgIHsxLCBhcmNzXzQ3XzJ9LAotICAgIHsxLCBhcmNzXzQ3XzN9LAotICAgIHsyLCBhcmNzXzQ3XzR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180OF8wWzJdID0gewotICAgIHsxMTEsIDF9LAotICAgIHsxMTIsIDJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180OF8xWzJdID0gewotICAgIHs5NiwgM30sCitzdGF0aWMgYXJjIGFyY3NfNDhfMVsxXSA9IHsKICAgICB7MCwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQ4XzJbMV0gPSB7Ci0gICAgezAsIDJ9LAorICAgIHsxMTAsIDN9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180OF8zWzFdID0gewotICAgIHsxMTEsIDR9LAorICAgIHs2LCA0fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDhfNFsxXSA9IHsKLSAgICB7OTgsIDV9LAorc3RhdGljIGFyYyBhcmNzXzQ4XzRbMl0gPSB7CisgICAgezYsIDR9LAorICAgIHsxMTEsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180OF81WzFdID0gewotICAgIHsyNiwgMn0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc180OFs2XSA9IHsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNDhbNV0gPSB7CiAgICAgezIsIGFyY3NfNDhfMH0sCi0gICAgezIsIGFyY3NfNDhfMX0sCisgICAgezEsIGFyY3NfNDhfMX0sCiAgICAgezEsIGFyY3NfNDhfMn0sCiAgICAgezEsIGFyY3NfNDhfM30sCi0gICAgezEsIGFyY3NfNDhfNH0sCi0gICAgezEsIGFyY3NfNDhfNX0sCisgICAgezIsIGFyY3NfNDhfNH0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQ5XzBbMl0gPSB7Ci0gICAgezExMSwgMX0sCi0gICAgezExNCwgMX0sCisgICAgezExMiwgMX0sCisgICAgezExMywgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQ5XzFbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNDlfMVsyXSA9IHsKKyAgICB7OTcsIDN9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzQ5WzJdID0gewotICAgIHsyLCBhcmNzXzQ5XzB9LAotICAgIHsxLCBhcmNzXzQ5XzF9LAorc3RhdGljIGFyYyBhcmNzXzQ5XzJbMV0gPSB7CisgICAgezAsIDJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc181MF8wWzFdID0geworc3RhdGljIGFyYyBhcmNzXzQ5XzNbMV0gPSB7CisgICAgezExMiwgNH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQ5XzRbMV0gPSB7CisgICAgezk5LCA1fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDlfNVsxXSA9IHsKKyAgICB7MjYsIDJ9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNDlbNl0gPSB7CisgICAgezIsIGFyY3NfNDlfMH0sCisgICAgezIsIGFyY3NfNDlfMX0sCisgICAgezEsIGFyY3NfNDlfMn0sCisgICAgezEsIGFyY3NfNDlfM30sCisgICAgezEsIGFyY3NfNDlfNH0sCisgICAgezEsIGFyY3NfNDlfNX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzUwXzBbMl0gPSB7CisgICAgezExMiwgMX0sCiAgICAgezExNSwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzUwXzFbMl0gPSB7Ci0gICAgezM1LCAyfSwKLSAgICB7MjcsIDN9LAorc3RhdGljIGFyYyBhcmNzXzUwXzFbMV0gPSB7CisgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc181MF8yWzFdID0gewotICAgIHsyNywgM30sCi19Owotc3RhdGljIGFyYyBhcmNzXzUwXzNbMV0gPSB7Ci0gICAgezI2LCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNTBfNFsxXSA9IHsKLSAgICB7MCwgNH0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc181MFs1XSA9IHsKLSAgICB7MSwgYXJjc181MF8wfSwKLSAgICB7MiwgYXJjc181MF8xfSwKLSAgICB7MSwgYXJjc181MF8yfSwKLSAgICB7MSwgYXJjc181MF8zfSwKLSAgICB7MSwgYXJjc181MF80fSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNTBbMl0gPSB7CisgICAgezIsIGFyY3NfNTBfMH0sCisgICAgezEsIGFyY3NfNTBfMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzUxXzBbMV0gPSB7Ci0gICAgezExNSwgMX0sCisgICAgezExNiwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzUxXzFbMl0gPSB7CiAgICAgezM1LCAyfSwKQEAgLTExODUsNyArMTIwMCw3IEBACiAgICAgezI3LCAzfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNTFfM1sxXSA9IHsKLSAgICB7MTEzLCA0fSwKKyAgICB7MjYsIDR9LAogfTsKIHN0YXRpYyBhcmMgYXJjc181MV80WzFdID0gewogICAgIHswLCA0fSwKQEAgLTEyMDEsMTA4ICsxMjE2LDEyMCBAQAogICAgIHsxMTYsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc181Ml8xWzJdID0gewotICAgIHsxMTcsIDB9LAotICAgIHswLCAxfSwKKyAgICB7MzUsIDJ9LAorICAgIHsyNywgM30sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc181MlsyXSA9IHsKK3N0YXRpYyBhcmMgYXJjc181Ml8yWzFdID0geworICAgIHsyNywgM30sCit9Oworc3RhdGljIGFyYyBhcmNzXzUyXzNbMV0gPSB7CisgICAgezExNCwgNH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzUyXzRbMV0gPSB7CisgICAgezAsIDR9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNTJbNV0gPSB7CiAgICAgezEsIGFyY3NfNTJfMH0sCiAgICAgezIsIGFyY3NfNTJfMX0sCisgICAgezEsIGFyY3NfNTJfMn0sCisgICAgezEsIGFyY3NfNTJfM30sCisgICAgezEsIGFyY3NfNTJfNH0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzUzXzBbMV0gPSB7Ci0gICAgezExOCwgMX0sCisgICAgezExNywgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzUzXzFbMl0gPSB7Ci0gICAgezExOSwgMH0sCisgICAgezExOCwgMH0sCiAgICAgezAsIDF9LAogfTsKIHN0YXRpYyBzdGF0ZSBzdGF0ZXNfNTNbMl0gPSB7CiAgICAgezEsIGFyY3NfNTNfMH0sCiAgICAgezIsIGFyY3NfNTNfMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzU0XzBbMl0gPSB7Ci0gICAgezEyMCwgMX0sCi0gICAgezEyMSwgMn0sCitzdGF0aWMgYXJjIGFyY3NfNTRfMFsxXSA9IHsKKyAgICB7MTE5LCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNTRfMVsxXSA9IHsKLSAgICB7MTE4LCAyfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNTRfMlsxXSA9IHsKLSAgICB7MCwgMn0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc181NFszXSA9IHsKLSAgICB7MiwgYXJjc181NF8wfSwKLSAgICB7MSwgYXJjc181NF8xfSwKLSAgICB7MSwgYXJjc181NF8yfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNTVfMFsxXSA9IHsKLSAgICB7MTA3LCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNTVfMVsyXSA9IHsKLSAgICB7MTIyLCAwfSwKK3N0YXRpYyBhcmMgYXJjc181NF8xWzJdID0geworICAgIHsxMjAsIDB9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzU1WzJdID0gewotICAgIHsxLCBhcmNzXzU1XzB9LAotICAgIHsyLCBhcmNzXzU1XzF9LAorc3RhdGljIHN0YXRlIHN0YXRlc181NFsyXSA9IHsKKyAgICB7MSwgYXJjc181NF8wfSwKKyAgICB7MiwgYXJjc181NF8xfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNTZfMFsxMF0gPSB7Ci0gICAgezEyMywgMX0sCitzdGF0aWMgYXJjIGFyY3NfNTVfMFsyXSA9IHsKKyAgICB7MTIxLCAxfSwKKyAgICB7MTIyLCAyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNTVfMVsxXSA9IHsKKyAgICB7MTE5LCAyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNTVfMlsxXSA9IHsKKyAgICB7MCwgMn0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc181NVszXSA9IHsKKyAgICB7MiwgYXJjc181NV8wfSwKKyAgICB7MSwgYXJjc181NV8xfSwKKyAgICB7MSwgYXJjc181NV8yfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNTZfMFsxXSA9IHsKKyAgICB7MTA4LCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNTZfMVsyXSA9IHsKKyAgICB7MTIzLCAwfSwKKyAgICB7MCwgMX0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc181NlsyXSA9IHsKKyAgICB7MSwgYXJjc181Nl8wfSwKKyAgICB7MiwgYXJjc181Nl8xfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNTdfMFsxMF0gPSB7CiAgICAgezEyNCwgMX0sCiAgICAgezEyNSwgMX0sCiAgICAgezEyNiwgMX0sCiAgICAgezEyNywgMX0sCiAgICAgezEyOCwgMX0sCiAgICAgezEyOSwgMX0sCi0gICAgezEwMSwgMX0sCi0gICAgezEyMCwgMn0sCi0gICAgezEzMCwgM30sCi19Owotc3RhdGljIGFyYyBhcmNzXzU2XzFbMV0gPSB7Ci0gICAgezAsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc181Nl8yWzFdID0gewotICAgIHsxMDEsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc181Nl8zWzJdID0gewotICAgIHsxMjAsIDF9LAotICAgIHswLCAzfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzU2WzRdID0gewotICAgIHsxMCwgYXJjc181Nl8wfSwKLSAgICB7MSwgYXJjc181Nl8xfSwKLSAgICB7MSwgYXJjc181Nl8yfSwKLSAgICB7MiwgYXJjc181Nl8zfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNTdfMFsxXSA9IHsKLSAgICB7MzMsIDF9LAorICAgIHsxMzAsIDF9LAorICAgIHsxMDIsIDF9LAorICAgIHsxMjEsIDJ9LAorICAgIHsxMzEsIDN9LAogfTsKIHN0YXRpYyBhcmMgYXJjc181N18xWzFdID0gewotICAgIHsxMDcsIDJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc181N18yWzFdID0gewotICAgIHswLCAyfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzU3WzNdID0gewotICAgIHsxLCBhcmNzXzU3XzB9LAotICAgIHsxLCBhcmNzXzU3XzF9LAotICAgIHsxLCBhcmNzXzU3XzJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc181OF8wWzFdID0gewotICAgIHsxMzEsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc181OF8xWzJdID0gewotICAgIHsxMzIsIDB9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzU4WzJdID0geworc3RhdGljIGFyYyBhcmNzXzU3XzJbMV0gPSB7CisgICAgezEwMiwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzU3XzNbMl0gPSB7CisgICAgezEyMSwgMX0sCisgICAgezAsIDN9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNTdbNF0gPSB7CisgICAgezEwLCBhcmNzXzU3XzB9LAorICAgIHsxLCBhcmNzXzU3XzF9LAorICAgIHsxLCBhcmNzXzU3XzJ9LAorICAgIHsyLCBhcmNzXzU3XzN9LAorfTsKK3N0YXRpYyBhcmMgYXJjc181OF8wWzFdID0geworICAgIHszMywgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzU4XzFbMV0gPSB7CisgICAgezEwOCwgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzU4XzJbMV0gPSB7CisgICAgezAsIDJ9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNThbM10gPSB7CiAgICAgezEsIGFyY3NfNThfMH0sCi0gICAgezIsIGFyY3NfNThfMX0sCisgICAgezEsIGFyY3NfNThfMX0sCisgICAgezEsIGFyY3NfNThfMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzU5XzBbMV0gPSB7Ci0gICAgezEzMywgMX0sCisgICAgezEzMiwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzU5XzFbMl0gPSB7Ci0gICAgezEzNCwgMH0sCisgICAgezEzMywgMH0sCiAgICAgezAsIDF9LAogfTsKIHN0YXRpYyBzdGF0ZSBzdGF0ZXNfNTlbMl0gPSB7CkBAIC0xMzEwLDEwICsxMzM3LDEwIEBACiAgICAgezIsIGFyY3NfNTlfMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzYwXzBbMV0gPSB7Ci0gICAgezEzNSwgMX0sCisgICAgezEzNCwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzYwXzFbMl0gPSB7Ci0gICAgezEzNiwgMH0sCisgICAgezEzNSwgMH0sCiAgICAgezAsIDF9LAogfTsKIHN0YXRpYyBzdGF0ZSBzdGF0ZXNfNjBbMl0gPSB7CkBAIC0xMzIxLDIzICsxMzQ4LDIyIEBACiAgICAgezIsIGFyY3NfNjBfMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzYxXzBbMV0gPSB7Ci0gICAgezEzNywgMX0sCisgICAgezEzNiwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzYxXzFbM10gPSB7Ci0gICAgezEzOCwgMH0sCi0gICAgezEzOSwgMH0sCitzdGF0aWMgYXJjIGFyY3NfNjFfMVsyXSA9IHsKKyAgICB7MTM3LCAwfSwKICAgICB7MCwgMX0sCiB9Owogc3RhdGljIHN0YXRlIHN0YXRlc182MVsyXSA9IHsKICAgICB7MSwgYXJjc182MV8wfSwKLSAgICB7MywgYXJjc182MV8xfSwKKyAgICB7MiwgYXJjc182MV8xfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNjJfMFsxXSA9IHsKLSAgICB7MTQwLCAxfSwKKyAgICB7MTM4LCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNjJfMVszXSA9IHsKLSAgICB7MTQxLCAwfSwKLSAgICB7MTQyLCAwfSwKKyAgICB7MTM5LCAwfSwKKyAgICB7MTQwLCAwfSwKICAgICB7MCwgMX0sCiB9Owogc3RhdGljIHN0YXRlIHN0YXRlc182MlsyXSA9IHsKQEAgLTEzNDUsNTI4ICsxMzcxLDU0NSBAQAogICAgIHszLCBhcmNzXzYyXzF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc182M18wWzFdID0gewotICAgIHsxNDMsIDF9LAorICAgIHsxNDEsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182M18xWzZdID0gewotICAgIHszMywgMH0sCi0gICAgezExLCAwfSwKLSAgICB7MTQ0LCAwfSwKLSAgICB7MTQ1LCAwfSwKLSAgICB7MTQ2LCAwfSwKK3N0YXRpYyBhcmMgYXJjc182M18xWzNdID0geworICAgIHsxNDIsIDB9LAorICAgIHsxNDMsIDB9LAogICAgIHswLCAxfSwKIH07CiBzdGF0aWMgc3RhdGUgc3RhdGVzXzYzWzJdID0gewogICAgIHsxLCBhcmNzXzYzXzB9LAotICAgIHs2LCBhcmNzXzYzXzF9LAorICAgIHszLCBhcmNzXzYzXzF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182NF8wWzRdID0gewotICAgIHsxNDEsIDF9LAorc3RhdGljIGFyYyBhcmNzXzY0XzBbMV0gPSB7CisgICAgezE0NCwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzY0XzFbNl0gPSB7CisgICAgezMzLCAwfSwKKyAgICB7MTEsIDB9LAorICAgIHsxNDUsIDB9LAorICAgIHsxNDYsIDB9LAorICAgIHsxNDcsIDB9LAorICAgIHswLCAxfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzY0WzJdID0geworICAgIHsxLCBhcmNzXzY0XzB9LAorICAgIHs2LCBhcmNzXzY0XzF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc182NV8wWzRdID0gewogICAgIHsxNDIsIDF9LAotICAgIHsxNDcsIDF9LAotICAgIHsxNDgsIDJ9LAorICAgIHsxNDMsIDF9LAorICAgIHsxNDgsIDF9LAorICAgIHsxNDksIDJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182NF8xWzFdID0gewotICAgIHsxNDMsIDJ9LAorc3RhdGljIGFyYyBhcmNzXzY1XzFbMV0gPSB7CisgICAgezE0NCwgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY0XzJbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNjVfMlsxXSA9IHsKICAgICB7MCwgMn0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc182NFszXSA9IHsKLSAgICB7NCwgYXJjc182NF8wfSwKLSAgICB7MSwgYXJjc182NF8xfSwKLSAgICB7MSwgYXJjc182NF8yfSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNjVbM10gPSB7CisgICAgezQsIGFyY3NfNjVfMH0sCisgICAgezEsIGFyY3NfNjVfMX0sCisgICAgezEsIGFyY3NfNjVfMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY1XzBbMV0gPSB7Ci0gICAgezE0OSwgMX0sCitzdGF0aWMgYXJjIGFyY3NfNjZfMFsxXSA9IHsKKyAgICB7MTUwLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjVfMVsyXSA9IHsKK3N0YXRpYyBhcmMgYXJjc182Nl8xWzJdID0gewogICAgIHszNCwgMn0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182NV8yWzFdID0gewotICAgIHsxNDMsIDN9LAorc3RhdGljIGFyYyBhcmNzXzY2XzJbMV0gPSB7CisgICAgezE0NCwgM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY1XzNbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNjZfM1sxXSA9IHsKICAgICB7MCwgM30sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc182NVs0XSA9IHsKLSAgICB7MSwgYXJjc182NV8wfSwKLSAgICB7MiwgYXJjc182NV8xfSwKLSAgICB7MSwgYXJjc182NV8yfSwKLSAgICB7MSwgYXJjc182NV8zfSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNjZbNF0gPSB7CisgICAgezEsIGFyY3NfNjZfMH0sCisgICAgezIsIGFyY3NfNjZfMX0sCisgICAgezEsIGFyY3NfNjZfMn0sCisgICAgezEsIGFyY3NfNjZfM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY2XzBbMl0gPSB7Ci0gICAgezE1MCwgMX0sCi0gICAgezE1MSwgMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzY2XzFbMV0gPSB7Ci0gICAgezE1MSwgMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzY2XzJbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNjdfMFsyXSA9IHsKKyAgICB7MTUxLCAxfSwKICAgICB7MTUyLCAyfSwKLSAgICB7MCwgMn0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc182NlszXSA9IHsKLSAgICB7MiwgYXJjc182Nl8wfSwKLSAgICB7MSwgYXJjc182Nl8xfSwKLSAgICB7MiwgYXJjc182Nl8yfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNjdfMFsxMF0gPSB7Ci0gICAgezEzLCAxfSwKLSAgICB7MTU0LCAyfSwKLSAgICB7MTU2LCAzfSwKLSAgICB7MjMsIDR9LAotICAgIHsxNTksIDR9LAotICAgIHsxNjAsIDV9LAotICAgIHs4MiwgNH0sCi0gICAgezE2MSwgNH0sCi0gICAgezE2MiwgNH0sCi0gICAgezE2MywgNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzY3XzFbM10gPSB7Ci0gICAgezQ5LCA2fSwKLSAgICB7MTUzLCA2fSwKLSAgICB7MTUsIDR9LAorc3RhdGljIGFyYyBhcmNzXzY3XzFbMV0gPSB7CisgICAgezE1MiwgMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzY3XzJbMl0gPSB7Ci0gICAgezE1MywgN30sCi0gICAgezE1NSwgNH0sCisgICAgezE1MywgMn0sCisgICAgezAsIDJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182N18zWzJdID0gewotICAgIHsxNTcsIDh9LAotICAgIHsxNTgsIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc182N180WzFdID0gewotICAgIHswLCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNjdfNVsyXSA9IHsKLSAgICB7MTYwLCA1fSwKLSAgICB7MCwgNX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzY3XzZbMV0gPSB7Ci0gICAgezE1LCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNjdfN1sxXSA9IHsKLSAgICB7MTU1LCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNjdfOFsxXSA9IHsKLSAgICB7MTU4LCA0fSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzY3WzldID0gewotICAgIHsxMCwgYXJjc182N18wfSwKLSAgICB7MywgYXJjc182N18xfSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNjdbM10gPSB7CisgICAgezIsIGFyY3NfNjdfMH0sCisgICAgezEsIGFyY3NfNjdfMX0sCiAgICAgezIsIGFyY3NfNjdfMn0sCi0gICAgezIsIGFyY3NfNjdfM30sCi0gICAgezEsIGFyY3NfNjdfNH0sCi0gICAgezIsIGFyY3NfNjdfNX0sCi0gICAgezEsIGFyY3NfNjdfNn0sCi0gICAgezEsIGFyY3NfNjdfN30sCi0gICAgezEsIGFyY3NfNjdfOH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY4XzBbMl0gPSB7Ci0gICAgezI2LCAxfSwKLSAgICB7NTAsIDF9LAorc3RhdGljIGFyYyBhcmNzXzY4XzBbMTBdID0geworICAgIHsxMywgMX0sCisgICAgezE1NSwgMn0sCisgICAgezE1NywgM30sCisgICAgezIzLCA0fSwKKyAgICB7MTYwLCA0fSwKKyAgICB7MTYxLCA1fSwKKyAgICB7ODMsIDR9LAorICAgIHsxNjIsIDR9LAorICAgIHsxNjMsIDR9LAorICAgIHsxNjQsIDR9LAogfTsKIHN0YXRpYyBhcmMgYXJjc182OF8xWzNdID0gewotICAgIHsxNjQsIDJ9LAorICAgIHs1MCwgNn0sCisgICAgezE1NCwgNn0sCisgICAgezE1LCA0fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNjhfMlsyXSA9IHsKKyAgICB7MTU0LCA3fSwKKyAgICB7MTU2LCA0fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNjhfM1syXSA9IHsKKyAgICB7MTU4LCA4fSwKKyAgICB7MTU5LCA0fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNjhfNFsxXSA9IHsKKyAgICB7MCwgNH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzY4XzVbMl0gPSB7CisgICAgezE2MSwgNX0sCisgICAgezAsIDV9LAorfTsKK3N0YXRpYyBhcmMgYXJjc182OF82WzFdID0geworICAgIHsxNSwgNH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzY4XzdbMV0gPSB7CisgICAgezE1NiwgNH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzY4XzhbMV0gPSB7CisgICAgezE1OSwgNH0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc182OFs5XSA9IHsKKyAgICB7MTAsIGFyY3NfNjhfMH0sCisgICAgezMsIGFyY3NfNjhfMX0sCisgICAgezIsIGFyY3NfNjhfMn0sCisgICAgezIsIGFyY3NfNjhfM30sCisgICAgezEsIGFyY3NfNjhfNH0sCisgICAgezIsIGFyY3NfNjhfNX0sCisgICAgezEsIGFyY3NfNjhfNn0sCisgICAgezEsIGFyY3NfNjhfN30sCisgICAgezEsIGFyY3NfNjhfOH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzY5XzBbMl0gPSB7CisgICAgezI2LCAxfSwKKyAgICB7NTEsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc182OV8xWzNdID0geworICAgIHsxNjUsIDJ9LAogICAgIHszMiwgM30sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182OF8yWzFdID0geworc3RhdGljIGFyYyBhcmNzXzY5XzJbMV0gPSB7CiAgICAgezAsIDJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182OF8zWzNdID0geworc3RhdGljIGFyYyBhcmNzXzY5XzNbM10gPSB7CiAgICAgezI2LCA0fSwKLSAgICB7NTAsIDR9LAorICAgIHs1MSwgNH0sCiAgICAgezAsIDN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182OF80WzJdID0geworc3RhdGljIGFyYyBhcmNzXzY5XzRbMl0gPSB7CiAgICAgezMyLCAzfSwKICAgICB7MCwgNH0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc182OFs1XSA9IHsKLSAgICB7MiwgYXJjc182OF8wfSwKLSAgICB7MywgYXJjc182OF8xfSwKLSAgICB7MSwgYXJjc182OF8yfSwKLSAgICB7MywgYXJjc182OF8zfSwKLSAgICB7MiwgYXJjc182OF80fSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNjlbNV0gPSB7CisgICAgezIsIGFyY3NfNjlfMH0sCisgICAgezMsIGFyY3NfNjlfMX0sCisgICAgezEsIGFyY3NfNjlfMn0sCisgICAgezMsIGFyY3NfNjlfM30sCisgICAgezIsIGFyY3NfNjlfNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY5XzBbM10gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzBfMFszXSA9IHsKICAgICB7MTMsIDF9LAotICAgIHsxNTQsIDJ9LAotICAgIHs4MSwgM30sCisgICAgezE1NSwgMn0sCisgICAgezgyLCAzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjlfMVsyXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183MF8xWzJdID0gewogICAgIHsxNCwgNH0sCiAgICAgezE1LCA1fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjlfMlsxXSA9IHsKLSAgICB7MTY1LCA2fSwKK3N0YXRpYyBhcmMgYXJjc183MF8yWzFdID0geworICAgIHsxNjYsIDZ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182OV8zWzFdID0geworc3RhdGljIGFyYyBhcmNzXzcwXzNbMV0gPSB7CiAgICAgezIzLCA1fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjlfNFsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183MF80WzFdID0gewogICAgIHsxNSwgNX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY5XzVbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzBfNVsxXSA9IHsKICAgICB7MCwgNX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY5XzZbMV0gPSB7Ci0gICAgezE1NSwgNX0sCitzdGF0aWMgYXJjIGFyY3NfNzBfNlsxXSA9IHsKKyAgICB7MTU2LCA1fSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzY5WzddID0gewotICAgIHszLCBhcmNzXzY5XzB9LAotICAgIHsyLCBhcmNzXzY5XzF9LAotICAgIHsxLCBhcmNzXzY5XzJ9LAotICAgIHsxLCBhcmNzXzY5XzN9LAotICAgIHsxLCBhcmNzXzY5XzR9LAotICAgIHsxLCBhcmNzXzY5XzV9LAotICAgIHsxLCBhcmNzXzY5XzZ9LAorc3RhdGljIHN0YXRlIHN0YXRlc183MFs3XSA9IHsKKyAgICB7MywgYXJjc183MF8wfSwKKyAgICB7MiwgYXJjc183MF8xfSwKKyAgICB7MSwgYXJjc183MF8yfSwKKyAgICB7MSwgYXJjc183MF8zfSwKKyAgICB7MSwgYXJjc183MF80fSwKKyAgICB7MSwgYXJjc183MF81fSwKKyAgICB7MSwgYXJjc183MF82fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzBfMFsxXSA9IHsKLSAgICB7MTY2LCAxfSwKK3N0YXRpYyBhcmMgYXJjc183MV8wWzFdID0geworICAgIHsxNjcsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183MF8xWzJdID0geworc3RhdGljIGFyYyBhcmNzXzcxXzFbMl0gPSB7CiAgICAgezMyLCAyfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzcwXzJbMl0gPSB7Ci0gICAgezE2NiwgMX0sCitzdGF0aWMgYXJjIGFyY3NfNzFfMlsyXSA9IHsKKyAgICB7MTY3LCAxfSwKICAgICB7MCwgMn0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc183MFszXSA9IHsKLSAgICB7MSwgYXJjc183MF8wfSwKLSAgICB7MiwgYXJjc183MF8xfSwKLSAgICB7MiwgYXJjc183MF8yfSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNzFbM10gPSB7CisgICAgezEsIGFyY3NfNzFfMH0sCisgICAgezIsIGFyY3NfNzFfMX0sCisgICAgezIsIGFyY3NfNzFfMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzcxXzBbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzJfMFsyXSA9IHsKICAgICB7MjYsIDF9LAogICAgIHsyNywgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzcxXzFbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzJfMVsyXSA9IHsKICAgICB7MjcsIDJ9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzFfMlszXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183Ml8yWzNdID0gewogICAgIHsyNiwgM30sCi0gICAgezE2NywgNH0sCisgICAgezE2OCwgNH0sCiAgICAgezAsIDJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183MV8zWzJdID0gewotICAgIHsxNjcsIDR9LAorc3RhdGljIGFyYyBhcmNzXzcyXzNbMl0gPSB7CisgICAgezE2OCwgNH0sCiAgICAgezAsIDN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183MV80WzFdID0geworc3RhdGljIGFyYyBhcmNzXzcyXzRbMV0gPSB7CiAgICAgezAsIDR9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNzFbNV0gPSB7Ci0gICAgezIsIGFyY3NfNzFfMH0sCi0gICAgezIsIGFyY3NfNzFfMX0sCi0gICAgezMsIGFyY3NfNzFfMn0sCi0gICAgezIsIGFyY3NfNzFfM30sCi0gICAgezEsIGFyY3NfNzFfNH0sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzcyWzVdID0geworICAgIHsyLCBhcmNzXzcyXzB9LAorICAgIHsyLCBhcmNzXzcyXzF9LAorICAgIHszLCBhcmNzXzcyXzJ9LAorICAgIHsyLCBhcmNzXzcyXzN9LAorICAgIHsxLCBhcmNzXzcyXzR9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183Ml8wWzFdID0geworc3RhdGljIGFyYyBhcmNzXzczXzBbMV0gPSB7CiAgICAgezI3LCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzJfMVsyXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183M18xWzJdID0gewogICAgIHsyNiwgMn0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183Ml8yWzFdID0gewotICAgIHswLCAyfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzcyWzNdID0gewotICAgIHsxLCBhcmNzXzcyXzB9LAotICAgIHsyLCBhcmNzXzcyXzF9LAotICAgIHsxLCBhcmNzXzcyXzJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183M18wWzJdID0gewotICAgIHsxMDcsIDF9LAotICAgIHs1MCwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzczXzFbMl0gPSB7Ci0gICAgezMyLCAyfSwKLSAgICB7MCwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzczXzJbM10gPSB7Ci0gICAgezEwNywgMX0sCi0gICAgezUwLCAxfSwKK3N0YXRpYyBhcmMgYXJjc183M18yWzFdID0gewogICAgIHswLCAyfSwKIH07CiBzdGF0aWMgc3RhdGUgc3RhdGVzXzczWzNdID0gewotICAgIHsyLCBhcmNzXzczXzB9LAorICAgIHsxLCBhcmNzXzczXzB9LAogICAgIHsyLCBhcmNzXzczXzF9LAotICAgIHszLCBhcmNzXzczXzJ9LAorICAgIHsxLCBhcmNzXzczXzJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183NF8wWzFdID0gewotICAgIHsyNiwgMX0sCitzdGF0aWMgYXJjIGFyY3NfNzRfMFsyXSA9IHsKKyAgICB7MTA4LCAxfSwKKyAgICB7NTEsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc183NF8xWzJdID0gewogICAgIHszMiwgMn0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183NF8yWzJdID0gewotICAgIHsyNiwgMX0sCitzdGF0aWMgYXJjIGFyY3NfNzRfMlszXSA9IHsKKyAgICB7MTA4LCAxfSwKKyAgICB7NTEsIDF9LAogICAgIHswLCAyfSwKIH07CiBzdGF0aWMgc3RhdGUgc3RhdGVzXzc0WzNdID0gewotICAgIHsxLCBhcmNzXzc0XzB9LAorICAgIHsyLCBhcmNzXzc0XzB9LAogICAgIHsyLCBhcmNzXzc0XzF9LAotICAgIHsyLCBhcmNzXzc0XzJ9LAorICAgIHszLCBhcmNzXzc0XzJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183NV8wWzNdID0geworc3RhdGljIGFyYyBhcmNzXzc1XzBbMV0gPSB7CisgICAgezI2LCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzVfMVsyXSA9IHsKKyAgICB7MzIsIDJ9LAorICAgIHswLCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzVfMlsyXSA9IHsKKyAgICB7MjYsIDF9LAorICAgIHswLCAyfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzc1WzNdID0geworICAgIHsxLCBhcmNzXzc1XzB9LAorICAgIHsyLCBhcmNzXzc1XzF9LAorICAgIHsyLCBhcmNzXzc1XzJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc183Nl8wWzNdID0gewogICAgIHsyNiwgMX0sCiAgICAgezM0LCAyfSwKLSAgICB7NTAsIDN9LAorICAgIHs1MSwgM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc1XzFbNF0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzZfMVs0XSA9IHsKICAgICB7MjcsIDR9LAotICAgIHsxNjQsIDV9LAorICAgIHsxNjUsIDV9LAogICAgIHszMiwgNn0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183NV8yWzFdID0gewotICAgIHsxMDcsIDd9LAorc3RhdGljIGFyYyBhcmNzXzc2XzJbMV0gPSB7CisgICAgezEwOCwgN30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc1XzNbM10gPSB7Ci0gICAgezE2NCwgNX0sCitzdGF0aWMgYXJjIGFyY3NfNzZfM1szXSA9IHsKKyAgICB7MTY1LCA1fSwKICAgICB7MzIsIDZ9LAogICAgIHswLCAzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzVfNFsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183Nl80WzFdID0gewogICAgIHsyNiwgN30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc1XzVbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzZfNVsxXSA9IHsKICAgICB7MCwgNX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc1XzZbM10gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzZfNlszXSA9IHsKICAgICB7MjYsIDh9LAotICAgIHs1MCwgOH0sCisgICAgezUxLCA4fSwKICAgICB7MCwgNn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc1XzdbM10gPSB7Ci0gICAgezE2NCwgNX0sCitzdGF0aWMgYXJjIGFyY3NfNzZfN1szXSA9IHsKKyAgICB7MTY1LCA1fSwKICAgICB7MzIsIDl9LAogICAgIHswLCA3fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzVfOFsyXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183Nl84WzJdID0gewogICAgIHszMiwgNn0sCiAgICAgezAsIDh9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183NV85WzNdID0geworc3RhdGljIGFyYyBhcmNzXzc2XzlbM10gPSB7CiAgICAgezI2LCAxMH0sCiAgICAgezM0LCAxMX0sCiAgICAgezAsIDl9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183NV8xMFsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183Nl8xMFsxXSA9IHsKICAgICB7MjcsIDEyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzVfMTFbMV0gPSB7Ci0gICAgezEwNywgMTN9LAorc3RhdGljIGFyYyBhcmNzXzc2XzExWzFdID0geworICAgIHsxMDgsIDEzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzVfMTJbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzZfMTJbMV0gPSB7CiAgICAgezI2LCAxM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc1XzEzWzJdID0geworc3RhdGljIGFyYyBhcmNzXzc2XzEzWzJdID0gewogICAgIHszMiwgOX0sCiAgICAgezAsIDEzfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzc1WzE0XSA9IHsKLSAgICB7MywgYXJjc183NV8wfSwKLSAgICB7NCwgYXJjc183NV8xfSwKLSAgICB7MSwgYXJjc183NV8yfSwKLSAgICB7MywgYXJjc183NV8zfSwKLSAgICB7MSwgYXJjc183NV80fSwKLSAgICB7MSwgYXJjc183NV81fSwKLSAgICB7MywgYXJjc183NV82fSwKLSAgICB7MywgYXJjc183NV83fSwKLSAgICB7MiwgYXJjc183NV84fSwKLSAgICB7MywgYXJjc183NV85fSwKLSAgICB7MSwgYXJjc183NV8xMH0sCi0gICAgezEsIGFyY3NfNzVfMTF9LAotICAgIHsxLCBhcmNzXzc1XzEyfSwKLSAgICB7MiwgYXJjc183NV8xM30sCi19Owotc3RhdGljIGFyYyBhcmNzXzc2XzBbMV0gPSB7Ci0gICAgezE2OCwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzc2XzFbMV0gPSB7Ci0gICAgezIzLCAyfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzZfMlsyXSA9IHsKLSAgICB7MTMsIDN9LAotICAgIHsyNywgNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzc2XzNbMl0gPSB7Ci0gICAgezE0LCA1fSwKLSAgICB7MTUsIDZ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183Nl80WzFdID0gewotICAgIHsyOCwgN30sCi19Owotc3RhdGljIGFyYyBhcmNzXzc2XzVbMV0gPSB7Ci0gICAgezE1LCA2fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzZfNlsxXSA9IHsKLSAgICB7MjcsIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183Nl83WzFdID0gewotICAgIHswLCA3fSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzc2WzhdID0gewotICAgIHsxLCBhcmNzXzc2XzB9LAotICAgIHsxLCBhcmNzXzc2XzF9LAotICAgIHsyLCBhcmNzXzc2XzJ9LAotICAgIHsyLCBhcmNzXzc2XzN9LAorc3RhdGljIHN0YXRlIHN0YXRlc183NlsxNF0gPSB7CisgICAgezMsIGFyY3NfNzZfMH0sCisgICAgezQsIGFyY3NfNzZfMX0sCisgICAgezEsIGFyY3NfNzZfMn0sCisgICAgezMsIGFyY3NfNzZfM30sCiAgICAgezEsIGFyY3NfNzZfNH0sCiAgICAgezEsIGFyY3NfNzZfNX0sCi0gICAgezEsIGFyY3NfNzZfNn0sCi0gICAgezEsIGFyY3NfNzZfN30sCisgICAgezMsIGFyY3NfNzZfNn0sCisgICAgezMsIGFyY3NfNzZfN30sCisgICAgezIsIGFyY3NfNzZfOH0sCisgICAgezMsIGFyY3NfNzZfOX0sCisgICAgezEsIGFyY3NfNzZfMTB9LAorICAgIHsxLCBhcmNzXzc2XzExfSwKKyAgICB7MSwgYXJjc183Nl8xMn0sCisgICAgezIsIGFyY3NfNzZfMTN9LAogfTsKIHN0YXRpYyBhcmMgYXJjc183N18wWzFdID0gewogICAgIHsxNjksIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183N18xWzJdID0geworc3RhdGljIGFyYyBhcmNzXzc3XzFbMV0gPSB7CisgICAgezIzLCAyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzdfMlsyXSA9IHsKKyAgICB7MTMsIDN9LAorICAgIHsyNywgNH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzc3XzNbMl0gPSB7CisgICAgezE0LCA1fSwKKyAgICB7MTUsIDZ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc183N180WzFdID0geworICAgIHsyOCwgN30sCit9Oworc3RhdGljIGFyYyBhcmNzXzc3XzVbMV0gPSB7CisgICAgezE1LCA2fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzdfNlsxXSA9IHsKKyAgICB7MjcsIDR9LAorfTsKK3N0YXRpYyBhcmMgYXJjc183N183WzFdID0geworICAgIHswLCA3fSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzc3WzhdID0geworICAgIHsxLCBhcmNzXzc3XzB9LAorICAgIHsxLCBhcmNzXzc3XzF9LAorICAgIHsyLCBhcmNzXzc3XzJ9LAorICAgIHsyLCBhcmNzXzc3XzN9LAorICAgIHsxLCBhcmNzXzc3XzR9LAorICAgIHsxLCBhcmNzXzc3XzV9LAorICAgIHsxLCBhcmNzXzc3XzZ9LAorICAgIHsxLCBhcmNzXzc3Xzd9LAorfTsKK3N0YXRpYyBhcmMgYXJjc183OF8wWzFdID0geworICAgIHsxNzAsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc183OF8xWzJdID0gewogICAgIHszMiwgMn0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183N18yWzJdID0gewotICAgIHsxNjksIDF9LAorc3RhdGljIGFyYyBhcmNzXzc4XzJbMl0gPSB7CisgICAgezE3MCwgMX0sCiAgICAgezAsIDJ9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNzdbM10gPSB7Ci0gICAgezEsIGFyY3NfNzdfMH0sCi0gICAgezIsIGFyY3NfNzdfMX0sCi0gICAgezIsIGFyY3NfNzdfMn0sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzc4WzNdID0geworICAgIHsxLCBhcmNzXzc4XzB9LAorICAgIHsyLCBhcmNzXzc4XzF9LAorICAgIHsyLCBhcmNzXzc4XzJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183OF8wWzNdID0geworc3RhdGljIGFyYyBhcmNzXzc5XzBbM10gPSB7CiAgICAgezI2LCAxfSwKICAgICB7MzQsIDJ9LAogICAgIHszMywgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc4XzFbM10gPSB7Ci0gICAgezE2NCwgM30sCitzdGF0aWMgYXJjIGFyY3NfNzlfMVszXSA9IHsKKyAgICB7MTY1LCAzfSwKICAgICB7MzEsIDJ9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzhfMlsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183OV8yWzFdID0gewogICAgIHsyNiwgM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc4XzNbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzlfM1sxXSA9IHsKICAgICB7MCwgM30sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc183OFs0XSA9IHsKLSAgICB7MywgYXJjc183OF8wfSwKLSAgICB7MywgYXJjc183OF8xfSwKLSAgICB7MSwgYXJjc183OF8yfSwKLSAgICB7MSwgYXJjc183OF8zfSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNzlbNF0gPSB7CisgICAgezMsIGFyY3NfNzlfMH0sCisgICAgezMsIGFyY3NfNzlfMX0sCisgICAgezEsIGFyY3NfNzlfMn0sCisgICAgezEsIGFyY3NfNzlfM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc5XzBbMl0gPSB7Ci0gICAgezE2NCwgMX0sCi0gICAgezE3MSwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzc5XzFbMV0gPSB7Ci0gICAgezAsIDF9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNzlbMl0gPSB7Ci0gICAgezIsIGFyY3NfNzlfMH0sCi0gICAgezEsIGFyY3NfNzlfMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzgwXzBbMV0gPSB7Ci0gICAgezEwMCwgMX0sCitzdGF0aWMgYXJjIGFyY3NfODBfMFsyXSA9IHsKKyAgICB7MTY1LCAxfSwKKyAgICB7MTcyLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfODBfMVsxXSA9IHsKLSAgICB7NjUsIDJ9LAorICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfODBfMlsxXSA9IHsKLSAgICB7MTAxLCAzfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfODBfM1sxXSA9IHsKLSAgICB7MTExLCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfODBfNFsyXSA9IHsKLSAgICB7MTcwLCA1fSwKLSAgICB7MCwgNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzgwXzVbMV0gPSB7Ci0gICAgezAsIDV9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfODBbNl0gPSB7Ci0gICAgezEsIGFyY3NfODBfMH0sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzgwWzJdID0geworICAgIHsyLCBhcmNzXzgwXzB9LAogICAgIHsxLCBhcmNzXzgwXzF9LAotICAgIHsxLCBhcmNzXzgwXzJ9LAotICAgIHsxLCBhcmNzXzgwXzN9LAotICAgIHsyLCBhcmNzXzgwXzR9LAotICAgIHsxLCBhcmNzXzgwXzV9LAogfTsKLXN0YXRpYyBhcmMgYXJjc184MV8wWzFdID0gewotICAgIHs5NiwgMX0sCitzdGF0aWMgYXJjIGFyY3NfODFfMFsyXSA9IHsKKyAgICB7MjEsIDF9LAorICAgIHsxMDEsIDJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc184MV8xWzFdID0gewotICAgIHsxMTMsIDJ9LAorICAgIHsxMDEsIDJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc184MV8yWzJdID0gewotICAgIHsxNzAsIDN9LAotICAgIHswLCAyfSwKK3N0YXRpYyBhcmMgYXJjc184MV8yWzFdID0geworICAgIHs2NiwgM30sCiB9Owogc3RhdGljIGFyYyBhcmNzXzgxXzNbMV0gPSB7Ci0gICAgezAsIDN9LAorICAgIHsxMDIsIDR9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfODFbNF0gPSB7Ci0gICAgezEsIGFyY3NfODFfMH0sCitzdGF0aWMgYXJjIGFyY3NfODFfNFsxXSA9IHsKKyAgICB7MTEyLCA1fSwKK307CitzdGF0aWMgYXJjIGFyY3NfODFfNVsyXSA9IHsKKyAgICB7MTcxLCA2fSwKKyAgICB7MCwgNX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzgxXzZbMV0gPSB7CisgICAgezAsIDZ9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfODFbN10gPSB7CisgICAgezIsIGFyY3NfODFfMH0sCiAgICAgezEsIGFyY3NfODFfMX0sCi0gICAgezIsIGFyY3NfODFfMn0sCisgICAgezEsIGFyY3NfODFfMn0sCiAgICAgezEsIGFyY3NfODFfM30sCisgICAgezEsIGFyY3NfODFfNH0sCisgICAgezIsIGFyY3NfODFfNX0sCisgICAgezEsIGFyY3NfODFfNn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzgyXzBbMV0gPSB7Ci0gICAgezIzLCAxfSwKKyAgICB7OTcsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc184Ml8xWzFdID0gewotICAgIHswLCAxfSwKKyAgICB7MTE0LCAyfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzgyWzJdID0gewotICAgIHsxLCBhcmNzXzgyXzB9LAotICAgIHsxLCBhcmNzXzgyXzF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc184M18wWzFdID0gewotICAgIHsxNzMsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc184M18xWzJdID0gewotICAgIHsxNzQsIDJ9LAotICAgIHswLCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfODNfMlsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc184Ml8yWzJdID0geworICAgIHsxNzEsIDN9LAogICAgIHswLCAyfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzgzWzNdID0geworc3RhdGljIGFyYyBhcmNzXzgyXzNbMV0gPSB7CisgICAgezAsIDN9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfODJbNF0gPSB7CisgICAgezEsIGFyY3NfODJfMH0sCisgICAgezEsIGFyY3NfODJfMX0sCisgICAgezIsIGFyY3NfODJfMn0sCisgICAgezEsIGFyY3NfODJfM30sCit9Oworc3RhdGljIGFyYyBhcmNzXzgzXzBbMV0gPSB7CisgICAgezIzLCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfODNfMVsxXSA9IHsKKyAgICB7MCwgMX0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc184M1syXSA9IHsKICAgICB7MSwgYXJjc184M18wfSwKLSAgICB7MiwgYXJjc184M18xfSwKLSAgICB7MSwgYXJjc184M18yfSwKKyAgICB7MSwgYXJjc184M18xfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfODRfMFsyXSA9IHsKLSAgICB7NzYsIDF9LAotICAgIHs5LCAyfSwKK3N0YXRpYyBhcmMgYXJjc184NF8wWzFdID0geworICAgIHsxNzQsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc184NF8xWzFdID0gewotICAgIHsyNiwgMn0sCitzdGF0aWMgYXJjIGFyY3NfODRfMVsyXSA9IHsKKyAgICB7MTc1LCAyfSwKKyAgICB7MCwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzg0XzJbMV0gPSB7CiAgICAgezAsIDJ9LAogfTsKIHN0YXRpYyBzdGF0ZSBzdGF0ZXNfODRbM10gPSB7Ci0gICAgezIsIGFyY3NfODRfMH0sCi0gICAgezEsIGFyY3NfODRfMX0sCisgICAgezEsIGFyY3NfODRfMH0sCisgICAgezIsIGFyY3NfODRfMX0sCiAgICAgezEsIGFyY3NfODRfMn0sCiB9Owotc3RhdGljIGRmYSBkZmFzWzg1XSA9IHsKK3N0YXRpYyBhcmMgYXJjc184NV8wWzJdID0geworICAgIHs3NywgMX0sCisgICAgezksIDJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc184NV8xWzFdID0geworICAgIHsyNiwgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzg1XzJbMV0gPSB7CisgICAgezAsIDJ9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfODVbM10gPSB7CisgICAgezIsIGFyY3NfODVfMH0sCisgICAgezEsIGFyY3NfODVfMX0sCisgICAgezEsIGFyY3NfODVfMn0sCit9Oworc3RhdGljIGRmYSBkZmFzWzg2XSA9IHsKICAgICB7MjU2LCAic2luZ2xlX2lucHV0IiwgMCwgMywgc3RhdGVzXzAsCi0gICAgICJcMDA0XDA1MFwzNDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDVcMjM3XDIwNFwwMDNcMTMxXDAwMlwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDQxIn0sCisgICAgICJcMDA0XDA1MFwzNDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMTJcMDc2XDAxMVwwMDdcMjYyXDAwNFwwMjBcMDAyXDAwMFwzMDBcMjIwXDA1MFwwMzdcMTAyIn0sCiAgICAgezI1NywgImZpbGVfaW5wdXQiLCAwLCAyLCBzdGF0ZXNfMSwKLSAgICAgIlwyMDRcMDUwXDM0MFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwNVwyMzdcMjA0XDAwM1wxMzFcMDAyXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwNDEifSwKKyAgICAgIlwyMDRcMDUwXDM0MFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAxMlwwNzZcMDExXDAwN1wyNjJcMDA0XDAyMFwwMDJcMDAwXDMwMFwyMjBcMDUwXDAzN1wxMDIifSwKICAgICB7MjU4LCAiZXZhbF9pbnB1dCIsIDAsIDMsIHN0YXRlc18yLAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDIwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAogICAgIHsyNTksICJkZWNvcmF0b3IiLCAwLCA3LCBzdGF0ZXNfMywKICAgICAgIlwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKICAgICB7MjYwLCAiZGVjb3JhdG9ycyIsIDAsIDIsIHN0YXRlc180LApAQCAtMTg3OSwxNzkgKzE5MjIsMTgxIEBACiAgICAgICJcMDAwXDAwMFwxMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCiAgICAgezI2NCwgInBhcmFtZXRlcnMiLCAwLCA0LCBzdGF0ZXNfOCwKICAgICAgIlwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjY1LCAidHlwZWRhcmdzbGlzdCIsIDAsIDE4LCBzdGF0ZXNfOSwKKyAgICB7MjY1LCAidHlwZWRhcmdzbGlzdCIsIDAsIDE5LCBzdGF0ZXNfOSwKICAgICAgIlwwMDBcMDAwXDIwMFwwMDBcMDA2XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKICAgICB7MjY2LCAidGZwZGVmIiwgMCwgNCwgc3RhdGVzXzEwLAogICAgICAiXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNjcsICJ2YXJhcmdzbGlzdCIsIDAsIDE4LCBzdGF0ZXNfMTEsCisgICAgezI2NywgInZhcmFyZ3NsaXN0IiwgMCwgMTksIHN0YXRlc18xMSwKICAgICAgIlwwMDBcMDAwXDIwMFwwMDBcMDA2XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKICAgICB7MjY4LCAidmZwZGVmIiwgMCwgMiwgc3RhdGVzXzEyLAogICAgICAiXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAogICAgIHsyNjksICJzdG10IiwgMCwgMiwgc3RhdGVzXzEzLAotICAgICAiXDAwMFwwNTBcMzQwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDA1XDIzN1wyMDRcMDAzXDEzMVwwMDJcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDA0MSJ9LAorICAgICAiXDAwMFwwNTBcMzQwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDEyXDA3NlwwMTFcMDA3XDI2MlwwMDRcMDIwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDEwMiJ9LAogICAgIHsyNzAsICJzaW1wbGVfc3RtdCIsIDAsIDQsIHN0YXRlc18xNCwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwNVwyMzdcMjA0XDAwM1wwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwNDAifSwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAxMlwwNzZcMDExXDAwN1wwMDBcMDAwXDAyMFwwMDJcMDAwXDMwMFwyMjBcMDUwXDAzN1wxMDAifSwKICAgICB7MjcxLCAic21hbGxfc3RtdCIsIDAsIDIsIHN0YXRlc18xNSwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwNVwyMzdcMjA0XDAwM1wwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwNDAifSwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAxMlwwNzZcMDExXDAwN1wwMDBcMDAwXDAyMFwwMDJcMDAwXDMwMFwyMjBcMDUwXDAzN1wxMDAifSwKICAgICB7MjcyLCAiZXhwcl9zdG10IiwgMCwgNiwgc3RhdGVzXzE2LAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHsyNzMsICJ0ZXN0bGlzdF9zdGFyX2V4cHIiLCAwLCAzLCBzdGF0ZXNfMTcsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezI3NCwgImF1Z2Fzc2lnbiIsIDAsIDIsIHN0YXRlc18xOCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwzNzBcMzc3XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjc1LCAiZGVsX3N0bXQiLCAwLCAzLCBzdGF0ZXNfMTksCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI3NiwgInBhc3Nfc3RtdCIsIDAsIDIsIHN0YXRlc18yMCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjc3LCAiZmxvd19zdG10IiwgMCwgMiwgc3RhdGVzXzIxLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxN1wwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA0MCJ9LAotICAgIHsyNzgsICJicmVha19zdG10IiwgMCwgMiwgc3RhdGVzXzIyLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNzksICJjb250aW51ZV9zdG10IiwgMCwgMiwgc3RhdGVzXzIzLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyODAsICJyZXR1cm5fc3RtdCIsIDAsIDMsIHN0YXRlc18yNCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjgxLCAieWllbGRfc3RtdCIsIDAsIDIsIHN0YXRlc18yNSwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNDAifSwKLSAgICB7MjgyLCAicmFpc2Vfc3RtdCIsIDAsIDUsIHN0YXRlc18yNiwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjgzLCAiaW1wb3J0X3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjcsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4NCwgImltcG9ydF9uYW1lIiwgMCwgMywgc3RhdGVzXzI4LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyODUsICJpbXBvcnRfZnJvbSIsIDAsIDgsIHN0YXRlc18yOSwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjg2LCAiaW1wb3J0X2FzX25hbWUiLCAwLCA0LCBzdGF0ZXNfMzAsCi0gICAgICJcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4NywgImRvdHRlZF9hc19uYW1lIiwgMCwgNCwgc3RhdGVzXzMxLAotICAgICAiXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyODgsICJpbXBvcnRfYXNfbmFtZXMiLCAwLCAzLCBzdGF0ZXNfMzIsCi0gICAgICJcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4OSwgImRvdHRlZF9hc19uYW1lcyIsIDAsIDIsIHN0YXRlc18zMywKLSAgICAgIlwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjkwLCAiZG90dGVkX25hbWUiLCAwLCAyLCBzdGF0ZXNfMzQsCi0gICAgICJcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI5MSwgImdsb2JhbF9zdG10IiwgMCwgMywgc3RhdGVzXzM1LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTIsICJub25sb2NhbF9zdG10IiwgMCwgMywgc3RhdGVzXzM2LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTMsICJhc3NlcnRfc3RtdCIsIDAsIDUsIHN0YXRlc18zNywKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjk0LCAiY29tcG91bmRfc3RtdCIsIDAsIDIsIHN0YXRlc18zOCwKLSAgICAgIlwwMDBcMDEwXDE0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxMzFcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDEifSwKLSAgICB7Mjk1LCAiYXN5bmNfc3RtdCIsIDAsIDMsIHN0YXRlc18zOSwKLSAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjk2LCAiaWZfc3RtdCIsIDAsIDgsIHN0YXRlc180MCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjk3LCAid2hpbGVfc3RtdCIsIDAsIDgsIHN0YXRlc180MSwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjk4LCAiZm9yX3N0bXQiLCAwLCAxMCwgc3RhdGVzXzQyLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTksICJ0cnlfc3RtdCIsIDAsIDEzLCBzdGF0ZXNfNDMsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMwMCwgIndpdGhfc3RtdCIsIDAsIDUsIHN0YXRlc180NCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzAxLCAid2l0aF9pdGVtIiwgMCwgNCwgc3RhdGVzXzQ1LAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMDIsICJleGNlcHRfY2xhdXNlIiwgMCwgNSwgc3RhdGVzXzQ2LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMDMsICJzdWl0ZSIsIDAsIDUsIHN0YXRlc180NywKLSAgICAgIlwwMDRcMDQwXDIwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwNVwyMzdcMjA0XDAwM1wwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwNDAifSwKLSAgICB7MzA0LCAidGVzdCIsIDAsIDYsIHN0YXRlc180OCwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzA1LCAidGVzdF9ub2NvbmQiLCAwLCAyLCBzdGF0ZXNfNDksCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMwNiwgImxhbWJkZWYiLCAwLCA1LCBzdGF0ZXNfNTAsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMwNywgImxhbWJkZWZfbm9jb25kIiwgMCwgNSwgc3RhdGVzXzUxLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMDgsICJvcl90ZXN0IiwgMCwgMiwgc3RhdGVzXzUyLAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMDksICJhbmRfdGVzdCIsIDAsIDIsIHN0YXRlc181MywKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzEwLCAibm90X3Rlc3QiLCAwLCAzLCBzdGF0ZXNfNTQsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMxMSwgImNvbXBhcmlzb24iLCAwLCAyLCBzdGF0ZXNfNTUsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMxMiwgImNvbXBfb3AiLCAwLCA0LCBzdGF0ZXNfNTYsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQwXDAwMFwwMDBcMzcxXDAwN1wwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMxMywgInN0YXJfZXhwciIsIDAsIDMsIHN0YXRlc181NywKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzE0LCAiZXhwciIsIDAsIDIsIHN0YXRlc181OCwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzE1LCAieG9yX2V4cHIiLCAwLCAyLCBzdGF0ZXNfNTksCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMxNiwgImFuZF9leHByIiwgMCwgMiwgc3RhdGVzXzYwLAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMTcsICJzaGlmdF9leHByIiwgMCwgMiwgc3RhdGVzXzYxLAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMTgsICJhcml0aF9leHByIiwgMCwgMiwgc3RhdGVzXzYyLAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMTksICJ0ZXJtIiwgMCwgMiwgc3RhdGVzXzYzLAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMjAsICJmYWN0b3IiLCAwLCAzLCBzdGF0ZXNfNjQsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMyMSwgInBvd2VyIiwgMCwgNCwgc3RhdGVzXzY1LAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDEwMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMjIsICJhdG9tX2V4cHIiLCAwLCAzLCBzdGF0ZXNfNjYsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTAwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMyMywgImF0b20iLCAwLCA5LCBzdGF0ZXNfNjcsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMyNCwgInRlc3RsaXN0X2NvbXAiLCAwLCA1LCBzdGF0ZXNfNjgsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMyNSwgInRyYWlsZXIiLCAwLCA3LCBzdGF0ZXNfNjksCi0gICAgICJcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwIn0sCi0gICAgezMyNiwgInN1YnNjcmlwdGxpc3QiLCAwLCAzLCBzdGF0ZXNfNzAsCi0gICAgICJcMDAwXDA0MFwyMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMyNywgInN1YnNjcmlwdCIsIDAsIDUsIHN0YXRlc183MSwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzI4LCAic2xpY2VvcCIsIDAsIDMsIHN0YXRlc183MiwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAyMFwwMDJcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MjczLCAiYW5uYXNzaWduIiwgMCwgNSwgc3RhdGVzXzE3LAogICAgICAiXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMjksICJleHBybGlzdCIsIDAsIDMsIHN0YXRlc183MywKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzMwLCAidGVzdGxpc3QiLCAwLCAzLCBzdGF0ZXNfNzQsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMzMSwgImRpY3RvcnNldG1ha2VyIiwgMCwgMTQsIHN0YXRlc183NSwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDA2XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzMyLCAiY2xhc3NkZWYiLCAwLCA4LCBzdGF0ZXNfNzYsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxIn0sCi0gICAgezMzMywgImFyZ2xpc3QiLCAwLCAzLCBzdGF0ZXNfNzcsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwNlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMzNCwgImFyZ3VtZW50IiwgMCwgNCwgc3RhdGVzXzc4LAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDZcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMzUsICJjb21wX2l0ZXIiLCAwLCAyLCBzdGF0ZXNfNzksCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMzNiwgImNvbXBfZm9yIiwgMCwgNiwgc3RhdGVzXzgwLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMzcsICJjb21wX2lmIiwgMCwgNCwgc3RhdGVzXzgxLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMzgsICJlbmNvZGluZ19kZWNsIiwgMCwgMiwgc3RhdGVzXzgyLAorICAgIHsyNzQsICJ0ZXN0bGlzdF9zdGFyX2V4cHIiLCAwLCAzLCBzdGF0ZXNfMTgsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMjBcMDAyXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCisgICAgezI3NSwgImF1Z2Fzc2lnbiIsIDAsIDIsIHN0YXRlc18xOSwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwzNjBcMzc3XDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjc2LCAiZGVsX3N0bXQiLCAwLCAzLCBzdGF0ZXNfMjAsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI3NywgInBhc3Nfc3RtdCIsIDAsIDIsIHN0YXRlc18yMSwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjc4LCAiZmxvd19zdG10IiwgMCwgMiwgc3RhdGVzXzIyLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAzNlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDEwMCJ9LAorICAgIHsyNzksICJicmVha19zdG10IiwgMCwgMiwgc3RhdGVzXzIzLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyODAsICJjb250aW51ZV9zdG10IiwgMCwgMiwgc3RhdGVzXzI0LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyODEsICJyZXR1cm5fc3RtdCIsIDAsIDMsIHN0YXRlc18yNSwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjgyLCAieWllbGRfc3RtdCIsIDAsIDIsIHN0YXRlc18yNiwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxMDAifSwKKyAgICB7MjgzLCAicmFpc2Vfc3RtdCIsIDAsIDUsIHN0YXRlc18yNywKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjg0LCAiaW1wb3J0X3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjgsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI4NSwgImltcG9ydF9uYW1lIiwgMCwgMywgc3RhdGVzXzI5LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyODYsICJpbXBvcnRfZnJvbSIsIDAsIDgsIHN0YXRlc18zMCwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjg3LCAiaW1wb3J0X2FzX25hbWUiLCAwLCA0LCBzdGF0ZXNfMzEsCiAgICAgICJcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMzOSwgInlpZWxkX2V4cHIiLCAwLCAzLCBzdGF0ZXNfODMsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQwIn0sCi0gICAgezM0MCwgInlpZWxkX2FyZyIsIDAsIDMsIHN0YXRlc184NCwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKKyAgICB7Mjg4LCAiZG90dGVkX2FzX25hbWUiLCAwLCA0LCBzdGF0ZXNfMzIsCisgICAgICJcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI4OSwgImltcG9ydF9hc19uYW1lcyIsIDAsIDMsIHN0YXRlc18zMywKKyAgICAgIlwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjkwLCAiZG90dGVkX2FzX25hbWVzIiwgMCwgMiwgc3RhdGVzXzM0LAorICAgICAiXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyOTEsICJkb3R0ZWRfbmFtZSIsIDAsIDIsIHN0YXRlc18zNSwKKyAgICAgIlwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjkyLCAiZ2xvYmFsX3N0bXQiLCAwLCAzLCBzdGF0ZXNfMzYsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI5MywgIm5vbmxvY2FsX3N0bXQiLCAwLCAzLCBzdGF0ZXNfMzcsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI5NCwgImFzc2VydF9zdG10IiwgMCwgNSwgc3RhdGVzXzM4LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyOTUsICJjb21wb3VuZF9zdG10IiwgMCwgMiwgc3RhdGVzXzM5LAorICAgICAiXDAwMFwwMTBcMTQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDI2MlwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMiJ9LAorICAgIHsyOTYsICJhc3luY19zdG10IiwgMCwgMywgc3RhdGVzXzQwLAorICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyOTcsICJpZl9zdG10IiwgMCwgOCwgc3RhdGVzXzQxLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyOTgsICJ3aGlsZV9zdG10IiwgMCwgOCwgc3RhdGVzXzQyLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyOTksICJmb3Jfc3RtdCIsIDAsIDEwLCBzdGF0ZXNfNDMsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMwMCwgInRyeV9zdG10IiwgMCwgMTMsIHN0YXRlc180NCwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzAxLCAid2l0aF9zdG10IiwgMCwgNSwgc3RhdGVzXzQ1LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMDIsICJ3aXRoX2l0ZW0iLCAwLCA0LCBzdGF0ZXNfNDYsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMjBcMDAyXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCisgICAgezMwMywgImV4Y2VwdF9jbGF1c2UiLCAwLCA1LCBzdGF0ZXNfNDcsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMwNCwgInN1aXRlIiwgMCwgNSwgc3RhdGVzXzQ4LAorICAgICAiXDAwNFwwNDBcMjAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDEyXDA3NlwwMTFcMDA3XDAwMFwwMDBcMDIwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDEwMCJ9LAorICAgIHszMDUsICJ0ZXN0IiwgMCwgNiwgc3RhdGVzXzQ5LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDIwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMDYsICJ0ZXN0X25vY29uZCIsIDAsIDIsIHN0YXRlc181MCwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAyMFwwMDJcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzA3LCAibGFtYmRlZiIsIDAsIDUsIHN0YXRlc181MSwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzA4LCAibGFtYmRlZl9ub2NvbmQiLCAwLCA1LCBzdGF0ZXNfNTIsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMwOSwgIm9yX3Rlc3QiLCAwLCAyLCBzdGF0ZXNfNTMsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCisgICAgezMxMCwgImFuZF90ZXN0IiwgMCwgMiwgc3RhdGVzXzU0LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMTEsICJub3RfdGVzdCIsIDAsIDMsIHN0YXRlc181NSwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDJcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzEyLCAiY29tcGFyaXNvbiIsIDAsIDIsIHN0YXRlc181NiwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzEzLCAiY29tcF9vcCIsIDAsIDQsIHN0YXRlc181NywKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxMDBcMDAwXDAwMFwzNjJcMDE3XDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzE0LCAic3Rhcl9leHByIiwgMCwgMywgc3RhdGVzXzU4LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMTUsICJleHByIiwgMCwgMiwgc3RhdGVzXzU5LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMTYsICJ4b3JfZXhwciIsIDAsIDIsIHN0YXRlc182MCwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzE3LCAiYW5kX2V4cHIiLCAwLCAyLCBzdGF0ZXNfNjEsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCisgICAgezMxOCwgInNoaWZ0X2V4cHIiLCAwLCAyLCBzdGF0ZXNfNjIsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCisgICAgezMxOSwgImFyaXRoX2V4cHIiLCAwLCAyLCBzdGF0ZXNfNjMsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCisgICAgezMyMCwgInRlcm0iLCAwLCAyLCBzdGF0ZXNfNjQsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCisgICAgezMyMSwgImZhY3RvciIsIDAsIDMsIHN0YXRlc182NSwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzIyLCAicG93ZXIiLCAwLCA0LCBzdGF0ZXNfNjYsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDA1MFwwMzdcMDAwIn0sCisgICAgezMyMywgImF0b21fZXhwciIsIDAsIDMsIHN0YXRlc182NywKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzI0LCAiYXRvbSIsIDAsIDksIHN0YXRlc182OCwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzI1LCAidGVzdGxpc3RfY29tcCIsIDAsIDUsIHN0YXRlc182OSwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAyMFwwMDJcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzI2LCAidHJhaWxlciIsIDAsIDcsIHN0YXRlc183MCwKKyAgICAgIlwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDAifSwKKyAgICB7MzI3LCAic3Vic2NyaXB0bGlzdCIsIDAsIDMsIHN0YXRlc183MSwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAyMFwwMDJcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzI4LCAic3Vic2NyaXB0IiwgMCwgNSwgc3RhdGVzXzcyLAorICAgICAiXDAwMFwwNDBcMjAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDIwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMjksICJzbGljZW9wIiwgMCwgMywgc3RhdGVzXzczLAorICAgICAiXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMzAsICJleHBybGlzdCIsIDAsIDMsIHN0YXRlc183NCwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzMxLCAidGVzdGxpc3QiLCAwLCAzLCBzdGF0ZXNfNzUsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMjBcMDAyXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCisgICAgezMzMiwgImRpY3RvcnNldG1ha2VyIiwgMCwgMTQsIHN0YXRlc183NiwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDA2XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAyMFwwMDJcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzMzLCAiY2xhc3NkZWYiLCAwLCA4LCBzdGF0ZXNfNzcsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAyIn0sCisgICAgezMzNCwgImFyZ2xpc3QiLCAwLCAzLCBzdGF0ZXNfNzgsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwNlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMjBcMDAyXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCisgICAgezMzNSwgImFyZ3VtZW50IiwgMCwgNCwgc3RhdGVzXzc5LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDZcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDIwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMzYsICJjb21wX2l0ZXIiLCAwLCAyLCBzdGF0ZXNfODAsCisgICAgICJcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMzNywgImNvbXBfZm9yIiwgMCwgNywgc3RhdGVzXzgxLAorICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMzgsICJjb21wX2lmIiwgMCwgNCwgc3RhdGVzXzgyLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMzksICJlbmNvZGluZ19kZWNsIiwgMCwgMiwgc3RhdGVzXzgzLAorICAgICAiXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszNDAsICJ5aWVsZF9leHByIiwgMCwgMywgc3RhdGVzXzg0LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDEwMCJ9LAorICAgIHszNDEsICJ5aWVsZF9hcmciLCAwLCAzLCBzdGF0ZXNfODUsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQwXDAxMFwwMDBcMDAwXDAwMFwwMjBcMDAyXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCiB9Owotc3RhdGljIGxhYmVsIGxhYmVsc1sxNzVdID0geworc3RhdGljIGxhYmVsIGxhYmVsc1sxNzZdID0gewogICAgIHswLCAiRU1QVFkifSwKICAgICB7MjU2LCAwfSwKICAgICB7NCwgMH0sCiAgICAgezI3MCwgMH0sCi0gICAgezI5NCwgMH0sCisgICAgezI5NSwgMH0sCiAgICAgezI1NywgMH0sCiAgICAgezI2OSwgMH0sCiAgICAgezAsIDB9LAogICAgIHsyNTgsIDB9LAotICAgIHszMzAsIDB9LAorICAgIHszMzEsIDB9LAogICAgIHsyNTksIDB9LAogICAgIHs0OSwgMH0sCi0gICAgezI5MCwgMH0sCisgICAgezI5MSwgMH0sCiAgICAgezcsIDB9LAotICAgIHszMzMsIDB9LAorICAgIHszMzQsIDB9LAogICAgIHs4LCAwfSwKICAgICB7MjYwLCAwfSwKICAgICB7MjYxLCAwfSwKLSAgICB7MzMyLCAwfSwKKyAgICB7MzMzLCAwfSwKICAgICB7MjYzLCAwfSwKICAgICB7MjYyLCAwfSwKICAgICB7NTUsIDB9LApAQCAtMjA1OSw5ICsyMTA0LDkgQEAKICAgICB7MSwgMH0sCiAgICAgezI2NCwgMH0sCiAgICAgezUxLCAwfSwKLSAgICB7MzA0LCAwfSwKKyAgICB7MzA1LCAwfSwKICAgICB7MTEsIDB9LAotICAgIHszMDMsIDB9LAorICAgIHszMDQsIDB9LAogICAgIHsyNjUsIDB9LAogICAgIHsyNjYsIDB9LAogICAgIHsyMiwgMH0sCkBAIC0yMDczLDE3ICsyMTE4LDE4IEBACiAgICAgezI3MSwgMH0sCiAgICAgezEzLCAwfSwKICAgICB7MjcyLCAwfSwKLSAgICB7Mjc1LCAwfSwKICAgICB7Mjc2LCAwfSwKICAgICB7Mjc3LCAwfSwKLSAgICB7MjgzLCAwfSwKLSAgICB7MjkxLCAwfSwKKyAgICB7Mjc4LCAwfSwKKyAgICB7Mjg0LCAwfSwKICAgICB7MjkyLCAwfSwKICAgICB7MjkzLCAwfSwKLSAgICB7MjczLCAwfSwKKyAgICB7Mjk0LCAwfSwKICAgICB7Mjc0LCAwfSwKLSAgICB7MzM5LCAwfSwKLSAgICB7MzEzLCAwfSwKKyAgICB7MjczLCAwfSwKKyAgICB7Mjc1LCAwfSwKKyAgICB7MzQwLCAwfSwKKyAgICB7MzE0LCAwfSwKICAgICB7MzYsIDB9LAogICAgIHszNywgMH0sCiAgICAgezM4LCAwfSwKQEAgLTIwOTgsMzcgKzIxNDQsMzcgQEAKICAgICB7NDYsIDB9LAogICAgIHs0OCwgMH0sCiAgICAgezEsICJkZWwifSwKLSAgICB7MzI5LCAwfSwKKyAgICB7MzMwLCAwfSwKICAgICB7MSwgInBhc3MifSwKLSAgICB7Mjc4LCAwfSwKICAgICB7Mjc5LCAwfSwKICAgICB7MjgwLCAwfSwKLSAgICB7MjgyLCAwfSwKICAgICB7MjgxLCAwfSwKKyAgICB7MjgzLCAwfSwKKyAgICB7MjgyLCAwfSwKICAgICB7MSwgImJyZWFrIn0sCiAgICAgezEsICJjb250aW51ZSJ9LAogICAgIHsxLCAicmV0dXJuIn0sCiAgICAgezEsICJyYWlzZSJ9LAogICAgIHsxLCAiZnJvbSJ9LAotICAgIHsyODQsIDB9LAogICAgIHsyODUsIDB9LAorICAgIHsyODYsIDB9LAogICAgIHsxLCAiaW1wb3J0In0sCi0gICAgezI4OSwgMH0sCisgICAgezI5MCwgMH0sCiAgICAgezIzLCAwfSwKICAgICB7NTIsIDB9LAotICAgIHsyODgsIDB9LAotICAgIHsyODYsIDB9LAotICAgIHsxLCAiYXMifSwKKyAgICB7Mjg5LCAwfSwKICAgICB7Mjg3LCAwfSwKKyAgICB7MSwgImFzIn0sCisgICAgezI4OCwgMH0sCiAgICAgezEsICJnbG9iYWwifSwKICAgICB7MSwgIm5vbmxvY2FsIn0sCiAgICAgezEsICJhc3NlcnQifSwKLSAgICB7Mjk2LCAwfSwKICAgICB7Mjk3LCAwfSwKICAgICB7Mjk4LCAwfSwKICAgICB7Mjk5LCAwfSwKICAgICB7MzAwLCAwfSwKLSAgICB7Mjk1LCAwfSwKKyAgICB7MzAxLCAwfSwKKyAgICB7Mjk2LCAwfSwKICAgICB7MSwgImlmIn0sCiAgICAgezEsICJlbGlmIn0sCiAgICAgezEsICJlbHNlIn0sCkBAIC0yMTM2LDI2ICsyMTgyLDI2IEBACiAgICAgezEsICJmb3IifSwKICAgICB7MSwgImluIn0sCiAgICAgezEsICJ0cnkifSwKLSAgICB7MzAyLCAwfSwKKyAgICB7MzAzLCAwfSwKICAgICB7MSwgImZpbmFsbHkifSwKICAgICB7MSwgIndpdGgifSwKLSAgICB7MzAxLCAwfSwKLSAgICB7MzE0LCAwfSwKKyAgICB7MzAyLCAwfSwKKyAgICB7MzE1LCAwfSwKICAgICB7MSwgImV4Y2VwdCJ9LAogICAgIHs1LCAwfSwKICAgICB7NiwgMH0sCi0gICAgezMwOCwgMH0sCi0gICAgezMwNiwgMH0sCi0gICAgezMwNSwgMH0sCi0gICAgezMwNywgMH0sCi0gICAgezEsICJsYW1iZGEifSwKICAgICB7MzA5LCAwfSwKLSAgICB7MSwgIm9yIn0sCisgICAgezMwNywgMH0sCisgICAgezMwNiwgMH0sCisgICAgezMwOCwgMH0sCisgICAgezEsICJsYW1iZGEifSwKICAgICB7MzEwLCAwfSwKKyAgICB7MSwgIm9yIn0sCisgICAgezMxMSwgMH0sCiAgICAgezEsICJhbmQifSwKICAgICB7MSwgIm5vdCJ9LAotICAgIHszMTEsIDB9LAogICAgIHszMTIsIDB9LAorICAgIHszMTMsIDB9LAogICAgIHsyMCwgMH0sCiAgICAgezIxLCAwfSwKICAgICB7MjcsIDB9LApAQCAtMjE2NCw1NCArMjIxMCw1NCBAQAogICAgIHsyOCwgMH0sCiAgICAgezI4LCAwfSwKICAgICB7MSwgImlzIn0sCi0gICAgezMxNSwgMH0sCi0gICAgezE4LCAwfSwKICAgICB7MzE2LCAwfSwKLSAgICB7MzIsIDB9LAorICAgIHsxOCwgMH0sCiAgICAgezMxNywgMH0sCi0gICAgezE5LCAwfSwKKyAgICB7MzIsIDB9LAogICAgIHszMTgsIDB9LAorICAgIHsxOSwgMH0sCisgICAgezMxOSwgMH0sCiAgICAgezMzLCAwfSwKICAgICB7MzQsIDB9LAotICAgIHszMTksIDB9LAorICAgIHszMjAsIDB9LAogICAgIHsxNCwgMH0sCiAgICAgezE1LCAwfSwKLSAgICB7MzIwLCAwfSwKKyAgICB7MzIxLCAwfSwKICAgICB7MTcsIDB9LAogICAgIHsyNCwgMH0sCiAgICAgezQ3LCAwfSwKICAgICB7MzEsIDB9LAotICAgIHszMjEsIDB9LAogICAgIHszMjIsIDB9LAotICAgIHs1NCwgMH0sCiAgICAgezMyMywgMH0sCi0gICAgezMyNSwgMH0sCisgICAgezU0LCAwfSwKICAgICB7MzI0LCAwfSwKKyAgICB7MzI2LCAwfSwKKyAgICB7MzI1LCAwfSwKICAgICB7OSwgMH0sCiAgICAgezEwLCAwfSwKICAgICB7MjUsIDB9LAotICAgIHszMzEsIDB9LAorICAgIHszMzIsIDB9LAogICAgIHsyNiwgMH0sCiAgICAgezIsIDB9LAogICAgIHszLCAwfSwKICAgICB7MSwgIk5vbmUifSwKICAgICB7MSwgIlRydWUifSwKICAgICB7MSwgIkZhbHNlIn0sCi0gICAgezMzNiwgMH0sCi0gICAgezMyNiwgMH0sCisgICAgezMzNywgMH0sCiAgICAgezMyNywgMH0sCiAgICAgezMyOCwgMH0sCisgICAgezMyOSwgMH0sCiAgICAgezEsICJjbGFzcyJ9LAotICAgIHszMzQsIDB9LAogICAgIHszMzUsIDB9LAotICAgIHszMzcsIDB9LAorICAgIHszMzYsIDB9LAogICAgIHszMzgsIDB9LAorICAgIHszMzksIDB9LAogICAgIHsxLCAieWllbGQifSwKLSAgICB7MzQwLCAwfSwKKyAgICB7MzQxLCAwfSwKIH07CiBncmFtbWFyIF9QeVBhcnNlcl9HcmFtbWFyID0gewotICAgIDg1LAorICAgIDg2LAogICAgIGRmYXMsCi0gICAgezE3NSwgbGFiZWxzfSwKKyAgICB7MTc2LCBsYWJlbHN9LAogICAgIDI1NgogfTsKZGlmZiAtLWdpdCBhL1B5dGhvbi9pbXBvcnQuYyBiL1B5dGhvbi9pbXBvcnQuYwppbmRleCAzNTc5MjczLi5jZDg2NWE1IDEwMDY0NAotLS0gYS9QeXRob24vaW1wb3J0LmMKKysrIGIvUHl0aG9uL2ltcG9ydC5jCkBAIC0zOCwxNCArMzgsNiBAQAogCiAjaW5jbHVkZSAiY2xpbmljL2ltcG9ydC5jLmgiCiAKLS8qW3B5dGhvbiBpbnB1dF0KLWNsYXNzIGZzX3VuaWNvZGVfY29udmVydGVyKENDb252ZXJ0ZXIpOgotICAgIHR5cGUgPSAnUHlPYmplY3QgKicKLSAgICBjb252ZXJ0ZXIgPSAnUHlVbmljb2RlX0ZTRGVjb2RlcicKLQotW3B5dGhvbiBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwotLypbcHl0aG9uIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9OWQ2Nzg2MjMwMTY2MDA2ZV0qLwotCiAvKiBJbml0aWFsaXplIHRoaW5ncyAqLwogCiB2b2lkCkBAIC0zMjAsNyArMzEyLDcgQEAKIAogCiAvKiBMaXN0IG9mIG5hbWVzIHRvIGNsZWFyIGluIHN5cyAqLwotc3RhdGljIGNoYXIqIHN5c19kZWxldGVzW10gPSB7CitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHN5c19kZWxldGVzW10gPSB7CiAgICAgInBhdGgiLCAiYXJndiIsICJwczEiLCAicHMyIiwKICAgICAibGFzdF90eXBlIiwgImxhc3RfdmFsdWUiLCAibGFzdF90cmFjZWJhY2siLAogICAgICJwYXRoX2hvb2tzIiwgInBhdGhfaW1wb3J0ZXJfY2FjaGUiLCAibWV0YV9wYXRoIiwKQEAgLTMzMCw3ICszMjIsNyBAQAogICAgIE5VTEwKIH07CiAKLXN0YXRpYyBjaGFyKiBzeXNfZmlsZXNbXSA9IHsKK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3Qgc3lzX2ZpbGVzW10gPSB7CiAgICAgInN0ZGluIiwgIl9fc3RkaW5fXyIsCiAgICAgInN0ZG91dCIsICJfX3N0ZG91dF9fIiwKICAgICAic3RkZXJyIiwgIl9fc3RkZXJyX18iLApAQCAtMzQ3LDcgKzMzOSw3IEBACiAgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAgPSBQeVRocmVhZFN0YXRlX0dFVCgpLT5pbnRlcnA7CiAgICAgUHlPYmplY3QgKm1vZHVsZXMgPSBpbnRlcnAtPm1vZHVsZXM7CiAgICAgUHlPYmplY3QgKndlYWtsaXN0ID0gTlVMTDsKLSAgICBjaGFyICoqcDsKKyAgICBjb25zdCBjaGFyICogY29uc3QgKnA7CiAKICAgICBpZiAobW9kdWxlcyA9PSBOVUxMKQogICAgICAgICByZXR1cm47IC8qIEFscmVhZHkgZG9uZSAqLwpAQCAtODgzLDEwICs4NzUsOCBAQAogICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZShjby0+Y29fZmlsZW5hbWUsIG9sZG5hbWUpKQogICAgICAgICByZXR1cm47CiAKLSAgICB0bXAgPSBjby0+Y29fZmlsZW5hbWU7Ci0gICAgY28tPmNvX2ZpbGVuYW1lID0gbmV3bmFtZTsKLSAgICBQeV9JTkNSRUYoY28tPmNvX2ZpbGVuYW1lKTsKLSAgICBQeV9ERUNSRUYodG1wKTsKKyAgICBQeV9JTkNSRUYobmV3bmFtZSk7CisgICAgUHlfWFNFVFJFRihjby0+Y29fZmlsZW5hbWUsIG5ld25hbWUpOwogCiAgICAgY29uc3RhbnRzID0gY28tPmNvX2NvbnN0czsKICAgICBuID0gUHlUdXBsZV9HRVRfU0laRShjb25zdGFudHMpOwpAQCAtMTA4Niw2ICsxMDc2LDEwIEBACiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8qIFJlbWVtYmVyIHBvaW50ZXIgdG8gbW9kdWxlIGluaXQgZnVuY3Rpb24uICovCiAgICAgICAgICAgICAgICAgZGVmID0gUHlNb2R1bGVfR2V0RGVmKG1vZCk7CisgICAgICAgICAgICAgICAgaWYgKGRlZiA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGRlZi0+bV9iYXNlLm1faW5pdCA9IHAtPmluaXRmdW5jOwogICAgICAgICAgICAgICAgIGlmIChfUHlJbXBvcnRfRml4dXBFeHRlbnNpb25PYmplY3QobW9kLCBuYW1lLCBuYW1lKSA8IDApIHsKICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKG5hbWUpOwpAQCAtMTMyNiwxMCArMTMyMCw4IEBACiAgICAgICAgIGlmIChpbl9pbXBvcnRsaWIgJiYKICAgICAgICAgICAgIChhbHdheXNfdHJpbSB8fAogICAgICAgICAgICAgIF9QeVVuaWNvZGVfRXF1YWxUb0FTQ0lJU3RyaW5nKGNvZGUtPmNvX25hbWUsIHJlbW92ZV9mcmFtZXMpKSkgewotICAgICAgICAgICAgUHlPYmplY3QgKnRtcCA9ICpvdXRlcl9saW5rOwotICAgICAgICAgICAgKm91dGVyX2xpbmsgPSBuZXh0OwogICAgICAgICAgICAgUHlfWElOQ1JFRihuZXh0KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih0bXApOworICAgICAgICAgICAgUHlfWFNFVFJFRigqb3V0ZXJfbGluaywgbmV4dCk7CiAgICAgICAgICAgICBwcmV2X2xpbmsgPSBvdXRlcl9saW5rOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewpAQCAtMTM0Miw2MSArMTMzNCwxNzAgQEAKIH0KIAogCi1QeU9iamVjdCAqCi1QeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbE9iamVjdChQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKmdpdmVuX2dsb2JhbHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbG9jYWxzLCBQeU9iamVjdCAqZ2l2ZW5fZnJvbWxpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGV2ZWwpCitzdGF0aWMgUHlPYmplY3QgKgorcmVzb2x2ZV9uYW1lKFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqZ2xvYmFscywgaW50IGxldmVsKQogewotICAgIF9QeV9JREVOVElGSUVSKF9faW1wb3J0X18pOwogICAgIF9QeV9JREVOVElGSUVSKF9fc3BlY19fKTsKLSAgICBfUHlfSURFTlRJRklFUihfaW5pdGlhbGl6aW5nKTsKICAgICBfUHlfSURFTlRJRklFUihfX3BhY2thZ2VfXyk7CiAgICAgX1B5X0lERU5USUZJRVIoX19wYXRoX18pOwogICAgIF9QeV9JREVOVElGSUVSKF9fbmFtZV9fKTsKKyAgICBfUHlfSURFTlRJRklFUihwYXJlbnQpOworICAgIFB5T2JqZWN0ICphYnNfbmFtZTsKKyAgICBQeU9iamVjdCAqcGFja2FnZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnNwZWM7CisgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAgPSBQeVRocmVhZFN0YXRlX0dFVCgpLT5pbnRlcnA7CisgICAgUHlfc3NpemVfdCBsYXN0X2RvdDsKKyAgICBQeU9iamVjdCAqYmFzZTsKKyAgICBpbnQgbGV2ZWxfdXA7CisKKyAgICBpZiAoZ2xvYmFscyA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19LZXlFcnJvciwgIidfX25hbWVfXycgbm90IGluIGdsb2JhbHMiKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgaWYgKCFQeURpY3RfQ2hlY2soZ2xvYmFscykpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImdsb2JhbHMgbXVzdCBiZSBhIGRpY3QiKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgcGFja2FnZSA9IF9QeURpY3RfR2V0SXRlbUlkKGdsb2JhbHMsICZQeUlkX19fcGFja2FnZV9fKTsKKyAgICBpZiAocGFja2FnZSA9PSBQeV9Ob25lKSB7CisgICAgICAgIHBhY2thZ2UgPSBOVUxMOworICAgIH0KKyAgICBzcGVjID0gX1B5RGljdF9HZXRJdGVtSWQoZ2xvYmFscywgJlB5SWRfX19zcGVjX18pOworCisgICAgaWYgKHBhY2thZ2UgIT0gTlVMTCkgeworICAgICAgICBQeV9JTkNSRUYocGFja2FnZSk7CisgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHBhY2thZ2UpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicGFja2FnZSBtdXN0IGJlIGEgc3RyaW5nIik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHNwZWMgIT0gTlVMTCAmJiBzcGVjICE9IFB5X05vbmUpIHsKKyAgICAgICAgICAgIGludCBlcXVhbDsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpwYXJlbnQgPSBfUHlPYmplY3RfR2V0QXR0cklkKHNwZWMsICZQeUlkX3BhcmVudCk7CisgICAgICAgICAgICBpZiAocGFyZW50ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBlcXVhbCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChwYWNrYWdlLCBwYXJlbnQsIFB5X0VRKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihwYXJlbnQpOworICAgICAgICAgICAgaWYgKGVxdWFsIDwgMCkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChlcXVhbCA9PSAwKSB7CisgICAgICAgICAgICAgICAgaWYgKFB5RXJyX1dhcm5FeChQeUV4Y19JbXBvcnRXYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgIl9fcGFja2FnZV9fICE9IF9fc3BlY19fLnBhcmVudCIsIDEpIDwgMCkgeworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChzcGVjICE9IE5VTEwgJiYgc3BlYyAhPSBQeV9Ob25lKSB7CisgICAgICAgIHBhY2thZ2UgPSBfUHlPYmplY3RfR2V0QXR0cklkKHNwZWMsICZQeUlkX3BhcmVudCk7CisgICAgICAgIGlmIChwYWNrYWdlID09IE5VTEwpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoIVB5VW5pY29kZV9DaGVjayhwYWNrYWdlKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgIl9fc3BlY19fLnBhcmVudCBtdXN0IGJlIGEgc3RyaW5nIik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAoUHlFcnJfV2FybkV4KFB5RXhjX0ltcG9ydFdhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICJjYW4ndCByZXNvbHZlIHBhY2thZ2UgZnJvbSBfX3NwZWNfXyBvciBfX3BhY2thZ2VfXywgIgorICAgICAgICAgICAgICAgICAgICAiZmFsbGluZyBiYWNrIG9uIF9fbmFtZV9fIGFuZCBfX3BhdGhfXyIsIDEpIDwgMCkgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorCisgICAgICAgIHBhY2thZ2UgPSBfUHlEaWN0X0dldEl0ZW1JZChnbG9iYWxzLCAmUHlJZF9fX25hbWVfXyk7CisgICAgICAgIGlmIChwYWNrYWdlID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19LZXlFcnJvciwgIidfX25hbWVfXycgbm90IGluIGdsb2JhbHMiKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKworICAgICAgICBQeV9JTkNSRUYocGFja2FnZSk7CisgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHBhY2thZ2UpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiX19uYW1lX18gbXVzdCBiZSBhIHN0cmluZyIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChfUHlEaWN0X0dldEl0ZW1JZChnbG9iYWxzLCAmUHlJZF9fX3BhdGhfXykgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfc3NpemVfdCBkb3Q7CisKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocGFja2FnZSkgPCAwKSB7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZG90ID0gUHlVbmljb2RlX0ZpbmRDaGFyKHBhY2thZ2UsICcuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBQeVVuaWNvZGVfR0VUX0xFTkdUSChwYWNrYWdlKSwgLTEpOworICAgICAgICAgICAgaWYgKGRvdCA9PSAtMikgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChkb3QgPj0gMCkgeworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdWJzdHIgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKHBhY2thZ2UsIDAsIGRvdCk7CisgICAgICAgICAgICAgICAgaWYgKHN1YnN0ciA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFB5X1NFVFJFRihwYWNrYWdlLCBzdWJzdHIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgbGFzdF9kb3QgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChwYWNrYWdlKTsKKyAgICBpZiAobGFzdF9kb3QgPT0gMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW1wb3J0RXJyb3IsCisgICAgICAgICAgICAgICAgImF0dGVtcHRlZCByZWxhdGl2ZSBpbXBvcnQgd2l0aCBubyBrbm93biBwYXJlbnQgcGFja2FnZSIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBlbHNlIGlmIChQeURpY3RfR2V0SXRlbShpbnRlcnAtPm1vZHVsZXMsIHBhY2thZ2UpID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICJQYXJlbnQgbW9kdWxlICVSIG5vdCBsb2FkZWQsIGNhbm5vdCBwZXJmb3JtIHJlbGF0aXZlICIKKyAgICAgICAgICAgICAgICAiaW1wb3J0IiwgcGFja2FnZSk7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgZm9yIChsZXZlbF91cCA9IDE7IGxldmVsX3VwIDwgbGV2ZWw7IGxldmVsX3VwICs9IDEpIHsKKyAgICAgICAgbGFzdF9kb3QgPSBQeVVuaWNvZGVfRmluZENoYXIocGFja2FnZSwgJy4nLCAwLCBsYXN0X2RvdCwgLTEpOworICAgICAgICBpZiAobGFzdF9kb3QgPT0gLTIpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAobGFzdF9kb3QgPT0gLTEpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhdHRlbXB0ZWQgcmVsYXRpdmUgaW1wb3J0IGJleW9uZCB0b3AtbGV2ZWwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYWNrYWdlIik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQorCisgICAgYmFzZSA9IFB5VW5pY29kZV9TdWJzdHJpbmcocGFja2FnZSwgMCwgbGFzdF9kb3QpOworICAgIFB5X0RFQ1JFRihwYWNrYWdlKTsKKyAgICBpZiAoYmFzZSA9PSBOVUxMIHx8IFB5VW5pY29kZV9HRVRfTEVOR1RIKG5hbWUpID09IDApIHsKKyAgICAgICAgcmV0dXJuIGJhc2U7CisgICAgfQorCisgICAgYWJzX25hbWUgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVUuJVUiLCBiYXNlLCBuYW1lKTsKKyAgICBQeV9ERUNSRUYoYmFzZSk7CisgICAgcmV0dXJuIGFic19uYW1lOworCisgIGVycm9yOgorICAgIFB5X1hERUNSRUYocGFja2FnZSk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK1B5T2JqZWN0ICoKK1B5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsT2JqZWN0KFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqZ2xvYmFscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpsb2NhbHMsIFB5T2JqZWN0ICpmcm9tbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsZXZlbCkKK3sKICAgICBfUHlfSURFTlRJRklFUihfZmluZF9hbmRfbG9hZCk7CiAgICAgX1B5X0lERU5USUZJRVIoX2hhbmRsZV9mcm9tbGlzdCk7Ci0gICAgX1B5X0lERU5USUZJRVIoX2xvY2tfdW5sb2NrX21vZHVsZSk7Ci0gICAgX1B5X3N0YXRpY19zdHJpbmcoc2luZ2xlX2RvdCwgIi4iKTsKICAgICBQeU9iamVjdCAqYWJzX25hbWUgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpidWlsdGluc19pbXBvcnQgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpmaW5hbF9tb2QgPSBOVUxMOwogICAgIFB5T2JqZWN0ICptb2QgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpwYWNrYWdlID0gTlVMTDsKLSAgICBQeU9iamVjdCAqZ2xvYmFscyA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmZyb21saXN0ID0gTlVMTDsKICAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycCA9IFB5VGhyZWFkU3RhdGVfR0VUKCktPmludGVycDsKICAgICBpbnQgaGFzX2Zyb207CiAKLSAgICAvKiBNYWtlIHN1cmUgdG8gdXNlIGRlZmF1bHQgdmFsdWVzIHNvIGFzIHRvIG5vdCBoYXZlCi0gICAgICAgUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3MoKSB0cnVuY2F0ZSB0aGUgcGFyYW1ldGVyIGxpc3QgYmVjYXVzZSBvZiBhCi0gICAgICAgTlVMTCBhcmd1bWVudC4gKi8KLSAgICBpZiAoZ2l2ZW5fZ2xvYmFscyA9PSBOVUxMKSB7Ci0gICAgICAgIGdsb2JhbHMgPSBQeURpY3RfTmV3KCk7Ci0gICAgICAgIGlmIChnbG9iYWxzID09IE5VTEwpIHsKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8qIE9ubHkgaGF2ZSB0byBjYXJlIHdoYXQgZ2l2ZW5fZ2xvYmFscyBpcyBpZiBpdCB3aWxsIGJlIHVzZWQKLSAgICAgICAgICAgZm9yIHNvbWV0aGluZy4gKi8KLSAgICAgICAgaWYgKGxldmVsID4gMCAmJiAhUHlEaWN0X0NoZWNrKGdpdmVuX2dsb2JhbHMpKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZ2xvYmFscyBtdXN0IGJlIGEgZGljdCIpOwotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgfQotICAgICAgICBnbG9iYWxzID0gZ2l2ZW5fZ2xvYmFsczsKLSAgICAgICAgUHlfSU5DUkVGKGdsb2JhbHMpOwotICAgIH0KLQotICAgIGlmIChnaXZlbl9mcm9tbGlzdCA9PSBOVUxMKSB7Ci0gICAgICAgIGZyb21saXN0ID0gUHlMaXN0X05ldygwKTsKLSAgICAgICAgaWYgKGZyb21saXN0ID09IE5VTEwpIHsKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGZyb21saXN0ID0gZ2l2ZW5fZnJvbWxpc3Q7Ci0gICAgICAgIFB5X0lOQ1JFRihmcm9tbGlzdCk7Ci0gICAgfQogICAgIGlmIChuYW1lID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJFbXB0eSBtb2R1bGUgbmFtZSIpOwogICAgICAgICBnb3RvIGVycm9yOwpAQCAtMTQwOSwxNDAgKzE1MTAsNDQgQEAKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIm1vZHVsZSBuYW1lIG11c3QgYmUgYSBzdHJpbmciKTsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9Ci0gICAgZWxzZSBpZiAoUHlVbmljb2RlX1JFQURZKG5hbWUpIDwgMCkgeworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkobmFtZSkgPCAwKSB7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogICAgIGlmIChsZXZlbCA8IDApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJsZXZlbCBtdXN0IGJlID49IDAiKTsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9Ci0gICAgZWxzZSBpZiAobGV2ZWwgPiAwKSB7Ci0gICAgICAgIHBhY2thZ2UgPSBfUHlEaWN0X0dldEl0ZW1JZChnbG9iYWxzLCAmUHlJZF9fX3BhY2thZ2VfXyk7Ci0gICAgICAgIGlmIChwYWNrYWdlICE9IE5VTEwgJiYgcGFja2FnZSAhPSBQeV9Ob25lKSB7Ci0gICAgICAgICAgICBQeV9JTkNSRUYocGFja2FnZSk7Ci0gICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhwYWNrYWdlKSkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJwYWNrYWdlIG11c3QgYmUgYSBzdHJpbmciKTsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgcGFja2FnZSA9IF9QeURpY3RfR2V0SXRlbUlkKGdsb2JhbHMsICZQeUlkX19fbmFtZV9fKTsKLSAgICAgICAgICAgIGlmIChwYWNrYWdlID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfS2V5RXJyb3IsICInX19uYW1lX18nIG5vdCBpbiBnbG9iYWxzIik7Ci0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKCFQeVVuaWNvZGVfQ2hlY2socGFja2FnZSkpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiX19uYW1lX18gbXVzdCBiZSBhIHN0cmluZyIpOwotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeV9JTkNSRUYocGFja2FnZSk7CiAKLSAgICAgICAgICAgIGlmIChfUHlEaWN0X0dldEl0ZW1JZChnbG9iYWxzLCAmUHlJZF9fX3BhdGhfXykgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpwYXJ0aXRpb24gPSBOVUxMOwotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpib3Jyb3dlZF9kb3QgPSBfUHlVbmljb2RlX0Zyb21JZCgmc2luZ2xlX2RvdCk7Ci0gICAgICAgICAgICAgICAgaWYgKGJvcnJvd2VkX2RvdCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHBhcnRpdGlvbiA9IFB5VW5pY29kZV9SUGFydGl0aW9uKHBhY2thZ2UsIGJvcnJvd2VkX2RvdCk7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHBhY2thZ2UpOwotICAgICAgICAgICAgICAgIGlmIChwYXJ0aXRpb24gPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBwYWNrYWdlID0gUHlUdXBsZV9HRVRfSVRFTShwYXJ0aXRpb24sIDApOwotICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihwYWNrYWdlKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYocGFydGl0aW9uKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmIChQeURpY3RfR2V0SXRlbShpbnRlcnAtPm1vZHVsZXMsIHBhY2thZ2UpID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKLSAgICAgICAgICAgICAgICAgICAgIlBhcmVudCBtb2R1bGUgJVIgbm90IGxvYWRlZCwgY2Fubm90IHBlcmZvcm0gcmVsYXRpdmUgIgotICAgICAgICAgICAgICAgICAgICAiaW1wb3J0IiwgcGFja2FnZSk7CisgICAgaWYgKGxldmVsID4gMCkgeworICAgICAgICBhYnNfbmFtZSA9IHJlc29sdmVfbmFtZShuYW1lLCBnbG9iYWxzLCBsZXZlbCk7CisgICAgICAgIGlmIChhYnNfbmFtZSA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsgIC8qIGxldmVsID09IDAgKi8KICAgICAgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKG5hbWUpID09IDApIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiRW1wdHkgbW9kdWxlIG5hbWUiKTsKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KLSAgICAgICAgcGFja2FnZSA9IFB5X05vbmU7Ci0gICAgICAgIFB5X0lOQ1JFRihwYWNrYWdlKTsKLSAgICB9Ci0KLSAgICBpZiAobGV2ZWwgPiAwKSB7Ci0gICAgICAgIFB5X3NzaXplX3QgbGFzdF9kb3QgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChwYWNrYWdlKTsKLSAgICAgICAgUHlPYmplY3QgKmJhc2UgPSBOVUxMOwotICAgICAgICBpbnQgbGV2ZWxfdXAgPSAxOwotCi0gICAgICAgIGZvciAobGV2ZWxfdXAgPSAxOyBsZXZlbF91cCA8IGxldmVsOyBsZXZlbF91cCArPSAxKSB7Ci0gICAgICAgICAgICBsYXN0X2RvdCA9IFB5VW5pY29kZV9GaW5kQ2hhcihwYWNrYWdlLCAnLicsIDAsIGxhc3RfZG90LCAtMSk7Ci0gICAgICAgICAgICBpZiAobGFzdF9kb3QgPT0gLTIpIHsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAobGFzdF9kb3QgPT0gLTEpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImF0dGVtcHRlZCByZWxhdGl2ZSBpbXBvcnQgYmV5b25kIHRvcC1sZXZlbCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYWNrYWdlIik7Ci0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGJhc2UgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKHBhY2thZ2UsIDAsIGxhc3RfZG90KTsKLSAgICAgICAgaWYgKGJhc2UgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0KLSAgICAgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKG5hbWUpID4gMCkgewotICAgICAgICAgICAgUHlPYmplY3QgKmJvcnJvd2VkX2RvdCwgKnNlcSA9IE5VTEw7Ci0KLSAgICAgICAgICAgIGJvcnJvd2VkX2RvdCA9IF9QeVVuaWNvZGVfRnJvbUlkKCZzaW5nbGVfZG90KTsKLSAgICAgICAgICAgIHNlcSA9IFB5VHVwbGVfUGFjaygyLCBiYXNlLCBuYW1lKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihiYXNlKTsKLSAgICAgICAgICAgIGlmIChib3Jyb3dlZF9kb3QgPT0gTlVMTCB8fCBzZXEgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGFic19uYW1lID0gUHlVbmljb2RlX0pvaW4oYm9ycm93ZWRfZG90LCBzZXEpOwotICAgICAgICAgICAgUHlfREVDUkVGKHNlcSk7Ci0gICAgICAgICAgICBpZiAoYWJzX25hbWUgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBhYnNfbmFtZSA9IGJhc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSB7CiAgICAgICAgIGFic19uYW1lID0gbmFtZTsKICAgICAgICAgUHlfSU5DUkVGKGFic19uYW1lKTsKICAgICB9CiAKLSNpZmRlZiBXSVRIX1RIUkVBRAotICAgIF9QeUltcG9ydF9BY3F1aXJlTG9jaygpOwotI2VuZGlmCi0gICAvKiBGcm9tIHRoaXMgcG9pbnQgZm9yd2FyZCwgZ290byBlcnJvcl93aXRoX3VubG9jayEgKi8KLSAgICAvKiBYWFggaW50ZXJwLT5idWlsdGluc19jb3B5IGlzIE5VTEwgaW4gc3ViaW50ZXJwcmV0ZXIhICovCi0gICAgYnVpbHRpbnNfaW1wb3J0ID0gX1B5RGljdF9HZXRJdGVtSWQoaW50ZXJwLT5idWlsdGluc19jb3B5ID8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnAtPmJ1aWx0aW5zX2NvcHkgOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVycC0+YnVpbHRpbnMsICZQeUlkX19faW1wb3J0X18pOwotICAgIGlmIChidWlsdGluc19pbXBvcnQgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW1wb3J0RXJyb3IsICJfX2ltcG9ydF9fIG5vdCBmb3VuZCIpOwotICAgICAgICBnb3RvIGVycm9yX3dpdGhfdW5sb2NrOwotICAgIH0KLSAgICBQeV9JTkNSRUYoYnVpbHRpbnNfaW1wb3J0KTsKLQogICAgIG1vZCA9IFB5RGljdF9HZXRJdGVtKGludGVycC0+bW9kdWxlcywgYWJzX25hbWUpOwogICAgIGlmIChtb2QgPT0gUHlfTm9uZSkgewogICAgICAgICBQeU9iamVjdCAqbXNnID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoImltcG9ydCBvZiAlUiBoYWx0ZWQ7ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOb25lIGluIHN5cy5tb2R1bGVzIiwgYWJzX25hbWUpOwogICAgICAgICBpZiAobXNnICE9IE5VTEwpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldEltcG9ydEVycm9yKG1zZywgYWJzX25hbWUsIE5VTEwpOworICAgICAgICAgICAgUHlFcnJfU2V0SW1wb3J0RXJyb3JTdWJjbGFzcyhQeUV4Y19Nb2R1bGVOb3RGb3VuZEVycm9yLCBtc2csCisgICAgICAgICAgICAgICAgICAgIGFic19uYW1lLCBOVUxMKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihtc2cpOwogICAgICAgICB9CiAgICAgICAgIG1vZCA9IE5VTEw7Ci0gICAgICAgIGdvdG8gZXJyb3Jfd2l0aF91bmxvY2s7CisgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogICAgIGVsc2UgaWYgKG1vZCAhPSBOVUxMKSB7CisgICAgICAgIF9QeV9JREVOVElGSUVSKF9fc3BlY19fKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoX2luaXRpYWxpemluZyk7CisgICAgICAgIF9QeV9JREVOVElGSUVSKF9sb2NrX3VubG9ja19tb2R1bGUpOwogICAgICAgICBQeU9iamVjdCAqdmFsdWUgPSBOVUxMOwogICAgICAgICBQeU9iamVjdCAqc3BlYzsKICAgICAgICAgaW50IGluaXRpYWxpemluZyA9IDA7CkBAIC0xNTY1LDkxICsxNTcwLDgzIEBACiAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgaWYgKGluaXRpYWxpemluZyA9PSAtMSkKICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChpbml0aWFsaXppbmcgPiAwKSB7Ci0gICAgICAgICAgICAvKiBfYm9vdHN0cmFwLl9sb2NrX3VubG9ja19tb2R1bGUoKSByZWxlYXNlcyB0aGUgaW1wb3J0IGxvY2sgKi8KLSAgICAgICAgICAgIHZhbHVlID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZE9iakFyZ3MoaW50ZXJwLT5pbXBvcnRsaWIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX19sb2NrX3VubG9ja19tb2R1bGUsIGFic19uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLSAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMKQotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKGluaXRpYWxpemluZyA+IDApIHsKICNpZmRlZiBXSVRIX1RIUkVBRAotICAgICAgICAgICAgaWYgKF9QeUltcG9ydF9SZWxlYXNlTG9jaygpIDwgMCkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJub3QgaG9sZGluZyB0aGUgaW1wb3J0IGxvY2siKTsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIF9QeUltcG9ydF9BY3F1aXJlTG9jaygpOwogI2VuZGlmCisgICAgICAgICAgICAgICAgLyogX2Jvb3RzdHJhcC5fbG9ja191bmxvY2tfbW9kdWxlKCkgcmVsZWFzZXMgdGhlIGltcG9ydCBsb2NrICovCisgICAgICAgICAgICAgICAgdmFsdWUgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkT2JqQXJncyhpbnRlcnAtPmltcG9ydGxpYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX19sb2NrX3VubG9ja19tb2R1bGUsIGFic19uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgICAgICAgICAgICAgaWYgKHZhbHVlID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgICAgICBfUHlJbXBvcnRfQWNxdWlyZUxvY2soKTsKKyNlbmRpZgogICAgICAgICAvKiBfYm9vdHN0cmFwLl9maW5kX2FuZF9sb2FkKCkgcmVsZWFzZXMgdGhlIGltcG9ydCBsb2NrICovCiAgICAgICAgIG1vZCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWRPYmpBcmdzKGludGVycC0+aW1wb3J0bGliLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlJZF9fZmluZF9hbmRfbG9hZCwgYWJzX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWx0aW5zX2ltcG9ydCwgTlVMTCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVycC0+aW1wb3J0X2Z1bmMsIE5VTEwpOwogICAgICAgICBpZiAobW9kID09IE5VTEwpIHsKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KICAgICB9Ci0gICAgLyogRnJvbSBub3cgb24gd2UgZG9uJ3QgaG9sZCB0aGUgaW1wb3J0IGxvY2sgYW55bW9yZS4gKi8KIAotICAgIGhhc19mcm9tID0gUHlPYmplY3RfSXNUcnVlKGZyb21saXN0KTsKLSAgICBpZiAoaGFzX2Zyb20gPCAwKQotICAgICAgICBnb3RvIGVycm9yOworICAgIGhhc19mcm9tID0gMDsKKyAgICBpZiAoZnJvbWxpc3QgIT0gTlVMTCAmJiBmcm9tbGlzdCAhPSBQeV9Ob25lKSB7CisgICAgICAgIGhhc19mcm9tID0gUHlPYmplY3RfSXNUcnVlKGZyb21saXN0KTsKKyAgICAgICAgaWYgKGhhc19mcm9tIDwgMCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQogICAgIGlmICghaGFzX2Zyb20pIHsKLSAgICAgICAgaWYgKGxldmVsID09IDAgfHwgUHlVbmljb2RlX0dFVF9MRU5HVEgobmFtZSkgPiAwKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqZnJvbnQgPSBOVUxMOwotICAgICAgICAgICAgUHlPYmplY3QgKnBhcnRpdGlvbiA9IE5VTEw7Ci0gICAgICAgICAgICBQeU9iamVjdCAqYm9ycm93ZWRfZG90ID0gX1B5VW5pY29kZV9Gcm9tSWQoJnNpbmdsZV9kb3QpOworICAgICAgICBQeV9zc2l6ZV90IGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG5hbWUpOworICAgICAgICBpZiAobGV2ZWwgPT0gMCB8fCBsZW4gPiAwKSB7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGRvdDsKIAotICAgICAgICAgICAgaWYgKGJvcnJvd2VkX2RvdCA9PSBOVUxMKSB7CisgICAgICAgICAgICBkb3QgPSBQeVVuaWNvZGVfRmluZENoYXIobmFtZSwgJy4nLCAwLCBsZW4sIDEpOworICAgICAgICAgICAgaWYgKGRvdCA9PSAtMikgewogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHBhcnRpdGlvbiA9IFB5VW5pY29kZV9QYXJ0aXRpb24obmFtZSwgYm9ycm93ZWRfZG90KTsKLSAgICAgICAgICAgIGlmIChwYXJ0aXRpb24gPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChQeVR1cGxlX0dFVF9JVEVNKHBhcnRpdGlvbiwgMSkpID09IDApIHsKKyAgICAgICAgICAgIGlmIChkb3QgPT0gLTEpIHsKICAgICAgICAgICAgICAgICAvKiBObyBkb3QgaW4gbW9kdWxlIG5hbWUsIHNpbXBsZSBleGl0ICovCi0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHBhcnRpdGlvbik7CiAgICAgICAgICAgICAgICAgZmluYWxfbW9kID0gbW9kOwogICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihtb2QpOwogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGZyb250ID0gUHlUdXBsZV9HRVRfSVRFTShwYXJ0aXRpb24sIDApOwotICAgICAgICAgICAgUHlfSU5DUkVGKGZyb250KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihwYXJ0aXRpb24pOwotCiAgICAgICAgICAgICBpZiAobGV2ZWwgPT0gMCkgewotICAgICAgICAgICAgICAgIGZpbmFsX21vZCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoYnVpbHRpbnNfaW1wb3J0LCBmcm9udCwgTlVMTCk7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZyb250ID0gUHlVbmljb2RlX1N1YnN0cmluZyhuYW1lLCAwLCBkb3QpOworICAgICAgICAgICAgICAgIGlmIChmcm9udCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZmluYWxfbW9kID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWxPYmplY3QoZnJvbnQsIE5VTEwsIE5VTEwsIE5VTEwsIDApOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmcm9udCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGN1dF9vZmYgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChuYW1lKSAtCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoZnJvbnQpOworICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgY3V0X29mZiA9IGxlbiAtIGRvdDsKICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGFic19uYW1lX2xlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGFic19uYW1lKTsKICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdG9fcmV0dXJuID0gUHlVbmljb2RlX1N1YnN0cmluZyhhYnNfbmFtZSwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzX25hbWVfbGVuIC0gY3V0X29mZik7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGZyb250KTsKICAgICAgICAgICAgICAgICBpZiAodG9fcmV0dXJuID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBmaW5hbF9tb2QgPSBQeURpY3RfR2V0SXRlbShpbnRlcnAtPm1vZHVsZXMsIHRvX3JldHVybik7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHRvX3JldHVybik7CiAgICAgICAgICAgICAgICAgaWYgKGZpbmFsX21vZCA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19LZXlFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlUiBub3QgaW4gc3lzLm1vZHVsZXMgYXMgZXhwZWN0ZWQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9fcmV0dXJuKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihmaW5hbF9tb2QpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodG9fcmV0dXJuKTsKKyAgICAgICAgICAgICAgICBQeV9JTkNSRUYoZmluYWxfbW9kKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlIHsKQEAgLTE2NjAsMjQgKzE2NTcsMTQgQEAKICAgICBlbHNlIHsKICAgICAgICAgZmluYWxfbW9kID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZE9iakFyZ3MoaW50ZXJwLT5pbXBvcnRsaWIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX19oYW5kbGVfZnJvbWxpc3QsIG1vZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbWxpc3QsIGJ1aWx0aW5zX2ltcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbWxpc3QsIGludGVycC0+aW1wb3J0X2Z1bmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwogICAgIH0KLSAgICBnb3RvIGVycm9yOwogCi0gIGVycm9yX3dpdGhfdW5sb2NrOgotI2lmZGVmIFdJVEhfVEhSRUFECi0gICAgaWYgKF9QeUltcG9ydF9SZWxlYXNlTG9jaygpIDwgMCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAibm90IGhvbGRpbmcgdGhlIGltcG9ydCBsb2NrIik7Ci0gICAgfQotI2VuZGlmCiAgIGVycm9yOgogICAgIFB5X1hERUNSRUYoYWJzX25hbWUpOwotICAgIFB5X1hERUNSRUYoYnVpbHRpbnNfaW1wb3J0KTsKICAgICBQeV9YREVDUkVGKG1vZCk7CiAgICAgUHlfWERFQ1JFRihwYWNrYWdlKTsKLSAgICBQeV9YREVDUkVGKGdsb2JhbHMpOwotICAgIFB5X1hERUNSRUYoZnJvbWxpc3QpOwogICAgIGlmIChmaW5hbF9tb2QgPT0gTlVMTCkKICAgICAgICAgcmVtb3ZlX2ltcG9ydGxpYl9mcmFtZXMoKTsKICAgICByZXR1cm4gZmluYWxfbW9kOwpAQCAtMTk1MywxOSArMTk0MCwxNSBAQAogCiAgICAgZGVmID0gUHlNb2R1bGVfR2V0RGVmKG1vZCk7CiAgICAgaWYgKGRlZiA9PSBOVUxMKSB7Ci0gICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorCiAgICAgc3RhdGUgPSBQeU1vZHVsZV9HZXRTdGF0ZShtb2QpOwotICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9CiAgICAgaWYgKHN0YXRlKSB7CiAgICAgICAgIC8qIEFscmVhZHkgaW5pdGlhbGl6ZWQ7IHNraXAgcmVsb2FkICovCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KKwogICAgIHJldHVybiBQeU1vZHVsZV9FeGVjRGVmKG1vZCwgZGVmKTsKIH0KIApkaWZmIC0tZ2l0IGEvUHl0aG9uL2ltcG9ydGRsLmMgYi9QeXRob24vaW1wb3J0ZGwuYwppbmRleCBlYTRmMGU3Li5mNTZmYTk0IDEwMDY0NAotLS0gYS9QeXRob24vaW1wb3J0ZGwuYworKysgYi9QeXRob24vaW1wb3J0ZGwuYwpAQCAtMjMsOCArMjMsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBGSUxFICpmcCk7CiAjZW5kaWYKIAotc3RhdGljIGNvbnN0IGNoYXIgKmFzY2lpX29ubHlfcHJlZml4ID0gIlB5SW5pdCI7Ci1zdGF0aWMgY29uc3QgY2hhciAqbm9uYXNjaWlfcHJlZml4ID0gIlB5SW5pdFUiOworc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBhc2NpaV9vbmx5X3ByZWZpeCA9ICJQeUluaXQiOworc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBub25hc2NpaV9wcmVmaXggPSAiUHlJbml0VSI7CiAKIC8qIEdldCB0aGUgdmFyaWFibGUgcGFydCBvZiBhIG1vZHVsZSdzIGV4cG9ydCBzeW1ib2wgbmFtZS4KICAqIFJldHVybnMgYSBieXRlcyBpbnN0YW5jZS4gRm9yIG5vbi1BU0NJSS1uYW1lZCBtb2R1bGVzLCB0aGUgbmFtZSBpcwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2ltcG9ydGxpYi5oIGIvUHl0aG9uL2ltcG9ydGxpYi5oCmluZGV4IGE1ZmM5MzYuLjE5NWZiZmQgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9pbXBvcnRsaWIuaAorKysgYi9QeXRob24vaW1wb3J0bGliLmgKQEAgLTEsMTIyNiArMSwxMjE5IEBACiAvKiBBdXRvLWdlbmVyYXRlZCBieSBQcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYi5jICovCiBjb25zdCB1bnNpZ25lZCBjaGFyIF9QeV9NX19pbXBvcnRsaWJbXSA9IHsKLSAgICA5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw2LDAsMCwKLSAgICAwLDY0LDAsMCwwLDExNSwxNjksMiwwLDAsMTAwLDAsMCw5MCwwLDAsCi0gICAgMTAwLDEsMCw5NywxLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsOTAsCi0gICAgMiwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLDMsMCw3MSwxMDAsCi0gICAgNiwwLDEwMCw3LDAsMTMyLDAsMCwxMDAsNywwLDEzMSwyLDAsOTAsNCwKLSAgICAwLDEwNSwwLDAsOTAsNSwwLDEwNSwwLDAsOTAsNiwwLDcxLDEwMCw4LAotICAgIDAsMTAwLDksMCwxMzIsMCwwLDEwMCw5LDAsMTAxLDcsMCwxMzEsMywwLAotICAgIDkwLDgsMCw3MSwxMDAsMTAsMCwxMDAsMTEsMCwxMzIsMCwwLDEwMCwxMSwwLAotICAgIDEzMSwyLDAsOTAsOSwwLDcxLDEwMCwxMiwwLDEwMCwxMywwLDEzMiwwLDAsCi0gICAgMTAwLDEzLDAsMTMxLDIsMCw5MCwxMCwwLDcxLDEwMCwxNCwwLDEwMCwxNSwwLAotICAgIDEzMiwwLDAsMTAwLDE1LDAsMTMxLDIsMCw5MCwxMSwwLDEwMCwxNiwwLDEwMCwKLSAgICAxNywwLDEzMiwwLDAsOTAsMTIsMCwxMDAsMTgsMCwxMDAsMTksMCwxMzIsMCwKLSAgICAwLDkwLDEzLDAsMTAwLDIwLDAsMTAwLDIxLDAsMTMyLDAsMCw5MCwxNCwwLAotICAgIDEwMCwyMiwwLDEwMCwyMywwLDEwMCwyNCwwLDEwMCwyNSwwLDEzMiwwLDEsOTAsCi0gICAgMTUsMCwxMDAsMjYsMCwxMDAsMjcsMCwxMzIsMCwwLDkwLDE2LDAsMTAwLDI4LAotICAgIDAsMTAwLDI5LDAsMTMyLDAsMCw5MCwxNywwLDEwMCwzMCwwLDEwMCwzMSwwLAotICAgIDEzMiwwLDAsOTAsMTgsMCwxMDAsMzIsMCwxMDAsMzMsMCwxMzIsMCwwLDkwLAotICAgIDE5LDAsNzEsMTAwLDM0LDAsMTAwLDM1LDAsMTMyLDAsMCwxMDAsMzUsMCwxMzEsCi0gICAgMiwwLDkwLDIwLDAsNzEsMTAwLDM2LDAsMTAwLDM3LDAsMTMyLDAsMCwxMDAsCi0gICAgMzcsMCwxMzEsMiwwLDkwLDIxLDAsMTAwLDM4LDAsMTAwLDEsMCwxMDAsMzksCi0gICAgMCwxMDAsMSwwLDEwMCw0MCwwLDEwMCw0MSwwLDEzMiwwLDIsOTAsMjIsMCwKLSAgICAxMDEsMjMsMCwxMzEsMCwwLDkwLDI0LDAsMTAwLDEsMCwxMDAsMSwwLDEwMCwKLSAgICA0MiwwLDEwMCw0MywwLDEzMiwyLDAsOTAsMjUsMCwxMDAsNDQsMCwxMDAsNDUsCi0gICAgMCwxMDAsNDYsMCwxMDAsNDcsMCwxMzIsMCwxLDkwLDI2LDAsMTAwLDQ4LDAsCi0gICAgMTAwLDQ5LDAsMTMyLDAsMCw5MCwyNywwLDEwMCw1MCwwLDEwMCw1MSwwLDEzMiwKLSAgICAwLDAsOTAsMjgsMCwxMDAsNTIsMCwxMDAsNTMsMCwxMzIsMCwwLDkwLDI5LAotICAgIDAsMTAwLDU0LDAsMTAwLDU1LDAsMTMyLDAsMCw5MCwzMCwwLDEwMCw1NiwwLAotICAgIDEwMCw1NywwLDEzMiwwLDAsOTAsMzEsMCwxMDAsNTgsMCwxMDAsNTksMCwxMzIsCi0gICAgMCwwLDkwLDMyLDAsNzEsMTAwLDYwLDAsMTAwLDYxLDAsMTMyLDAsMCwxMDAsCi0gICAgNjEsMCwxMzEsMiwwLDkwLDMzLDAsNzEsMTAwLDYyLDAsMTAwLDYzLDAsMTMyLAotICAgIDAsMCwxMDAsNjMsMCwxMzEsMiwwLDkwLDM0LDAsNzEsMTAwLDY0LDAsMTAwLAotICAgIDY1LDAsMTMyLDAsMCwxMDAsNjUsMCwxMzEsMiwwLDkwLDM1LDAsMTAwLDY2LAotICAgIDAsMTAwLDY3LDAsMTMyLDAsMCw5MCwzNiwwLDEwMCw2OCwwLDEwMCw2OSwwLAotICAgIDEzMiwwLDAsOTAsMzcsMCwxMDAsMSwwLDEwMCw3MCwwLDEwMCw3MSwwLDEzMiwKLSAgICAxLDAsOTAsMzgsMCwxMDAsNzIsMCwxMDAsNzMsMCwxMzIsMCwwLDkwLDM5LAotICAgIDAsMTAwLDc0LDAsOTAsNDAsMCwxMDEsNDAsMCwxMDAsNzUsMCwyMyw5MCw0MSwKLSAgICAwLDEwMCw3NiwwLDEwMCw3NywwLDEzMiwwLDAsOTAsNDIsMCwxMDAsNzgsMCwKLSAgICAxMDAsNzksMCwxMzIsMCwwLDkwLDQzLDAsMTAwLDEsMCwxMDAsODAsMCwxMDAsCi0gICAgODEsMCwxMDAsODIsMCwxMzIsMiwwLDkwLDQ0LDAsMTAwLDgzLDAsMTAwLDg0LAotICAgIDAsMTMyLDAsMCw5MCw0NSwwLDEwMCw4NSwwLDEwMCw4NiwwLDEzMiwwLDAsCi0gICAgOTAsNDYsMCwxMDAsMSwwLDEwMCwxLDAsMTAyLDAsMCwxMDAsODAsMCwxMDAsCi0gICAgODcsMCwxMDAsODgsMCwxMzIsNCwwLDkwLDQ3LDAsMTAwLDg5LDAsMTAwLDkwLAotICAgIDAsMTMyLDAsMCw5MCw0OCwwLDEwMCw5MSwwLDEwMCw5MiwwLDEzMiwwLDAsCi0gICAgOTAsNDksMCwxMDAsOTMsMCwxMDAsOTQsMCwxMzIsMCwwLDkwLDUwLDAsMTAwLAotICAgIDEsMCw4Myw0MSw5NSw5Nyw4MywxLDAsMCw2NywxMTEsMTE0LDEwMSwzMiwxMDUsCi0gICAgMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwKLSAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0NiwxMCwxMCw4NCwxMDQsMTA1LDExNSwzMiwxMDksCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDc4LDc5LDg0LDMyLDEwOSwxMDEsOTcsCi0gICAgMTEwLDExNiwzMiwxMTYsMTExLDMyLDk4LDEwMSwzMiwxMDAsMTA1LDExNCwxMDEsOTksMTE2LDEwOCwKLSAgICAxMjEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwzMywzMiw3MywxMTYsMzIsMTA0LAotICAgIDk3LDExNSwzMiw5OCwxMDEsMTAxLDExMCwzMiwxMDAsMTAxLDExNSwxMDUsMTAzLDExMCwxMDEsMTAwLAotICAgIDMyLDExNSwxMTcsOTksMTA0LDEwLDExNiwxMDQsOTcsMTE2LDMyLDEwNSwxMTYsMzIsOTksOTcsCi0gICAgMTEwLDMyLDk4LDEwMSwzMiw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsMTEyLDEwMSwKLSAgICAxMDAsMzIsMTA1LDExMCwxMTYsMTExLDMyLDgwLDEyMSwxMTYsMTA0LDExMSwxMTAsMzIsOTcsMTE1LAotICAgIDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwKLSAgICAxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDQ2LDMyLDY1LAotICAgIDExNSwxMCwxMTUsMTE3LDk5LDEwNCwzMiwxMDUsMTE2LDMyLDExNCwxMDEsMTEzLDExNywxMDUsMTE0LAotICAgIDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDExMCwxMDYsMTAxLDk5LDExNiwxMDUsMTExLDExMCwKLSAgICAzMiwxMTEsMTAyLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDk5LDMyLDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDExNSwzMiw5NywxMTAsMTAwLDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsCi0gICAgMTE2LDEwMSwxMTUsMzIsMTA1LDExMCwzMiwxMTEsMTE0LDEwMCwxMDEsMTE0LDMyLDExNiwxMTEsMTAsCi0gICAgMTE5LDExMSwxMTQsMTA3LDQ2LDMyLDc5LDExMCwxMDEsMzIsMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsCi0gICAgMzIsMTE3LDExNSwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwzMiw5NywKLSAgICAxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDExNyw5OCwxMDgsMTA1LDk5LDQ1LDEwMiw5Nyw5OSwKLSAgICAxMDUsMTEwLDEwMywzMiwxMTgsMTAxLDExNCwxMTUsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMTYsCi0gICAgMTA0LDEwNSwxMTUsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsNzgsOTksMiwKLSAgICAwLDAsMCwwLDAsMCwwLDMsMCwwLDAsNywwLDAsMCw2NywKLSAgICAwLDAsMCwxMTUsOTIsMCwwLDAsMTIwLDY2LDAsMTAwLDEsMCwxMDAsMiwKLSAgICAwLDEwMCwzLDAsMTAwLDQsMCwxMDMsNCwwLDY4LDkzLDQ2LDAsMTI1LDIsCi0gICAgMCwxMTYsMCwwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMiwwLDExNCwxOSwwLAotICAgIDExNiwxLDAsMTI0LDAsMCwxMjQsMiwwLDExNiwyLDAsMTI0LDEsMCwxMjQsCi0gICAgMiwwLDEzMSwyLDAsMTMxLDMsMCwxLDExMywxOSwwLDg3LDEyNCwwLDAsCi0gICAgMTA2LDMsMCwxMDYsNCwwLDEyNCwxLDAsMTA2LDMsMCwxMzEsMSwwLDEsCi0gICAgMTAwLDUsMCw4Myw0MSw2LDEyMiw0Nyw4MywxMDUsMTA5LDExMiwxMDgsMTAxLDMyLDExNSwKLSAgICAxMTcsOTgsMTE1LDExNiwxMDUsMTE2LDExNywxMTYsMTAxLDMyLDEwMiwxMTEsMTE0LDMyLDEwMiwxMTcsCi0gICAgMTEwLDk5LDExNiwxMTEsMTExLDEwOCwxMTUsNDYsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSw5NSwxMTksCi0gICAgMTE0LDk3LDExMiwxMTIsMTAxLDExNCw0NiwyMTgsMTAsOTUsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwKLSAgICAxMDEsOTUsOTUsMjE4LDgsOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMjE4LDEyLDk1LAotICAgIDk1LDExMywxMTcsOTcsMTA4LDExMCw5NywxMDksMTAxLDk1LDk1LDIxOCw3LDk1LDk1LDEwMCwKLSAgICAxMTEsOTksOTUsOTUsNzgsNDEsNSwyMTgsNywxMDQsOTcsMTE1LDk3LDExNiwxMTYsMTE0LAotICAgIDIxOCw3LDExNSwxMDEsMTE2LDk3LDExNiwxMTYsMTE0LDIxOCw3LDEwMywxMDEsMTE2LDk3LDExNiwKLSAgICAxMTYsMTE0LDIxOCw4LDk1LDk1LDEwMCwxMDUsOTksMTE2LDk1LDk1LDIxOCw2LDExNywxMTIsCi0gICAgMTAwLDk3LDExNiwxMDEsNDEsMyw5MCwzLDExMCwxMDEsMTE5LDkwLDMsMTExLDEwOCwxMDAsCi0gICAgMjE4LDcsMTE0LDEwMSwxMTIsMTA4LDk3LDk5LDEwMSwxNjksMCwxMTQsMTAsMCwwLDAsCi0gICAgMjUwLDI5LDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAotICAgIDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDIxOCwKLSAgICA1LDk1LDExOSwxMTQsOTcsMTEyLDI3LDAsMCwwLDExNSw4LDAsMCwwLDAsCi0gICAgMiwyNSwxLDE1LDEsMjksMSwxMTQsMTIsMCwwLDAsOTksMSwwLDAsCi0gICAgMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsMTYsMCwwLDAsMTE2LDAsMCwxMTYsMSwwLDEzMSwxLDAsMTI0LAotICAgIDAsMCwxMzEsMSwwLDgzLDQxLDEsNzgsNDEsMiwyMTgsNCwxMTYsMTIxLDExMiwKLSAgICAxMDEsMjE4LDMsMTE1LDEyMSwxMTUsNDEsMSwyMTgsNCwxMTAsOTcsMTA5LDEwMSwxMTQsMTAsCi0gICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTEsOTUsCi0gICAgMTEwLDEwMSwxMTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzUsMCwwLDAsMTE1LDIsCi0gICAgMCwwLDAsMCwxLDExNCwxNiwwLDAsMCw5OSwwLDAsMCwwLDAsCi0gICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDY0LDAsMCwwLDExNSwKLSAgICA1OCwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwKLSAgICAxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCw5MCwKLSAgICA0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLDEwMCw2LAotICAgIDAsMTAwLDcsMCwxMzIsMCwwLDkwLDYsMCwxMDAsOCwwLDgzLDQxLDksCi0gICAgMjE4LDEzLDk1LDc3LDk3LDExMCw5NywxMDMsMTAxLDgyLDEwMSwxMDgsMTExLDk3LDEwMCwxMjIsCi0gICAgNjMsNzcsOTcsMTEwLDk3LDEwMywxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMiwxMTEsMTE1LAotICAgIDExNSwxMDUsOTgsMTA4LDEwMSwzMiw5OSwxMDgsMTAxLDk3LDExMCw0NSwxMTcsMTEyLDMyLDExMSwKLSAgICAxMDIsMzIsMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDEwMiwxMTEsCi0gICAgMTE0LDMyLDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDQxLDQ2LAotICAgIDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwwLAotICAgIDAsNjcsMCwwLDAsMTE1LDEzLDAsMCwwLDEyNCwxLDAsMTI0LDAsMCwKLSAgICA5NSwwLDAsMTAwLDAsMCw4Myw0MSwxLDc4LDQxLDEsMjE4LDUsOTUsMTEwLAotICAgIDk3LDEwOSwxMDEsNDEsMiwyMTgsNCwxMTUsMTAxLDEwOCwxMDIsMTE0LDE1LDAsMCwwLAotICAgIDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwKLSAgICA4LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw0MywwLDAsMCwxMTUsMiwwLAotICAgIDAsMCwwLDEsMTIyLDIyLDk1LDc3LDk3LDExMCw5NywxMDMsMTAxLDgyLDEwMSwxMDgsCi0gICAgMTExLDk3LDEwMCw0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTksMSwwLDAsCi0gICAgMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsMjUsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDExNiwxLDAsMTA2LAotICAgIDIsMCwxMDcsNiwwLDEyNCwwLDAsOTUsMywwLDEwMCwwLDAsODMsNDEsCi0gICAgMSw3OCw0MSw0LDExNCwxOCwwLDAsMCwxMTQsMTQsMCwwLDAsMjE4LDcsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDIxOCwxMCw5NSwxMDUsMTE1LDk1LDExNCwxMDEsMTA4LAotICAgIDExMSw5NywxMDAsNDEsMSwxMTQsMTksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKLSAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDksOTUsOTUsMTAxLDExMCwxMTYsCi0gICAgMTAxLDExNCw5NSw5NSw0NiwwLDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLAotICAgIDIzLDk1LDc3LDk3LDExMCw5NywxMDMsMTAxLDgyLDEwMSwxMDgsMTExLDk3LDEwMCw0Niw5NSwKLSAgICA5NSwxMDEsMTEwLDExNiwxMDEsMTE0LDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsCi0gICAgMCwyLDAsMCwwLDExLDAsMCwwLDcxLDAsMCwwLDExNSw3NywwLAotICAgIDAsMCwxMTYsMCwwLDEwMCwxLDAsMTAwLDIsMCwxMzIsMCwwLDEyNCwxLAotICAgIDAsNjgsMTMxLDEsMCwxMzEsMSwwLDExNCw3MywwLDEyNCwwLDAsMTA2LDEsCi0gICAgMCwxMiwxMTQsNzMsMCwxMjEsMTcsMCwxMTYsMiwwLDEwNiwzLDAsMTI0LDAsCi0gICAgMCwxMDYsNCwwLDYxLDg3LDExMCwxOCwwLDQsMTE2LDUsMCwxMDcsMTAsMCwKLSAgICAxMTQsNzIsMCwxLDEsMSw4OSwxMTAsMSwwLDg4LDEwMCwwLDAsODMsNDEsCi0gICAgMyw3OCw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLAotICAgIDAsMCwwLDExNSwwLDAsMCwxMTUsMjcsMCwwLDAsMTI0LDAsMCw5MywKLSAgICAxNywwLDEyNSwxLDAsMTI0LDEsMCwxMDAsMCwwLDEwNyw5LDAsODYsMSwKLSAgICAxMTMsMywwLDEwMCwwLDAsODMsNDEsMSw3OCwxMTQsMTAsMCwwLDAsNDEsCi0gICAgMiwyMTgsMiw0Niw0OCwyMTgsMyw5NywxMTQsMTAzLDExNCwxMCwwLDAsMCwxMTQsCi0gICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDI1MCw5LDYwLDEwMywxMDEsMTEwLDEwMSwKLSAgICAxMjAsMTEyLDExNCw2Miw1MCwwLDAsMCwxMTUsMiwwLDAsMCw2LDAsMTIyLAotICAgIDQxLDk1LDc3LDk3LDExMCw5NywxMDMsMTAxLDgyLDEwMSwxMDgsMTExLDk3LDEwMCw0Niw5NSwKLSAgICA5NSwxMDEsMTIwLDEwNSwxMTYsOTUsOTUsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLAotICAgIDQ2LDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCw2Miw0MSw2LDIxOCwzLDk3LDExMCwKLSAgICAxMjEsMTE0LDIyLDAsMCwwLDExNCwxNCwwLDAsMCwxMTQsMjEsMCwwLDAsCi0gICAgMTE0LDE4LDAsMCwwLDIxOCw4LDc1LDEwMSwxMjEsNjksMTE0LDExNCwxMTEsMTE0LDQxLAotICAgIDIsMTE0LDE5LDAsMCwwLDIxOCw0LDk3LDExNCwxMDMsMTE1LDExNCwxMCwwLDAsCi0gICAgMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCw4LDk1LDk1LDEwMSwKLSAgICAxMjAsMTA1LDExNiw5NSw5NSw0OSwwLDAsMCwxMTUsMTAsMCwwLDAsMCwxLAotICAgIDM1LDEsMywxLDE3LDEsMTMsMSwxMjIsMjIsOTUsNzcsOTcsMTEwLDk3LDEwMywKLSAgICAxMDEsODIsMTAxLDEwOCwxMTEsOTcsMTAwLDQ2LDk1LDk1LDEwMSwxMjAsMTA1LDExNiw5NSw5NSwKLSAgICA3OCw0MSw3LDExNCwxLDAsMCwwLDExNCwwLDAsMCwwLDExNCwyLDAsCi0gICAgMCwwLDExNCwzLDAsMCwwLDExNCwyMCwwLDAsMCwxMTQsMjMsMCwwLAotICAgIDAsMTE0LDMwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsCi0gICAgMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTcsMCwwLDAsMzksCi0gICAgMCwwLDAsMTE1LDgsMCwwLDAsMTIsMiw2LDIsMTIsMywxMiwzLAotICAgIDExNCwxNywwLDAsMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLAotICAgIDAsMCwxLDAsMCwwLDY0LDAsMCwwLDExNSwxNiwwLDAsMCwxMDEsCi0gICAgMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDgzLDQxLAotICAgIDIsMjE4LDE0LDk1LDY4LDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsNjksMTE0LDExNCwxMTEsCi0gICAgMTE0LDc4LDQxLDMsMTE0LDEsMCwwLDAsMTE0LDAsMCwwLDAsMTE0LDIsCi0gICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwKLSAgICAwLDAsMTE0LDExLDAsMCwwLDExNCwzMSwwLDAsMCw2NCwwLDAsMCwKLSAgICAxMTUsMiwwLDAsMCwxMiwxLDExNCwzMSwwLDAsMCw5OSwwLDAsMCwKLSAgICAwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDY0LDAsMCwKLSAgICAwLDExNSw4MiwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLAotICAgIDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsCi0gICAgMCw5MCw0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLAotICAgIDEwMCw2LDAsMTAwLDcsMCwxMzIsMCwwLDkwLDYsMCwxMDAsOCwwLDEwMCwKLSAgICA5LDAsMTMyLDAsMCw5MCw3LDAsMTAwLDEwLDAsMTAwLDExLDAsMTMyLDAsCi0gICAgMCw5MCw4LDAsMTAwLDEyLDAsODMsNDEsMTMsMjE4LDExLDk1LDc3LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNywxMjIsMTY5LDY1LDMyLDExNCwxMDEsOTksMTE3LDExNCwKLSAgICAxMTUsMTA1LDExOCwxMDEsMzIsMTA4LDExMSw5OSwxMDcsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksCi0gICAgMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMDUsCi0gICAgMTE1LDMyLDk3LDk4LDEwOCwxMDEsMzIsMTE2LDExMSwzMiwxMDAsMTAxLDExNiwxMDEsOTksMTE2LAotICAgIDMyLDEwMCwxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LDExNSwxMCwzMiwzMiwzMiwzMiw0MCwKLSAgICAxMDEsNDYsMTAzLDQ2LDMyLDExNiwxMDQsMTE0LDEwMSw5NywxMDAsMzIsNDksMzIsMTE2LDExNCwKLSAgICAxMjEsMTA1LDExMCwxMDMsMzIsMTE2LDExMSwzMiwxMTYsOTcsMTA3LDEwMSwzMiwxMDgsMTExLDk5LAotICAgIDEwNywxMTUsMzIsNjUsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDY2LDQ0LDMyLDk3LDExMCwxMDAsCi0gICAgMzIsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCwzMiw1MCwzMiwxMTYsMTE0LDEyMSwxMDUsMTEwLDEwMywKLSAgICAzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDExNiw5NywxMDcsMTAxLDMyLDEwOCwxMTEsOTksCi0gICAgMTA3LDExNSwzMiw2NiwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsNjUsNDEsNDYsMTAsMzIsMzIsCi0gICAgMzIsMzIsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMiwKLSAgICAwLDAsMCw2NywwLDAsMCwxMTUsNzAsMCwwLDAsMTE2LDAsMCwxMDYsCi0gICAgMSwwLDEzMSwwLDAsMTI0LDAsMCw5NSwyLDAsMTE2LDAsMCwxMDYsMSwKLSAgICAwLDEzMSwwLDAsMTI0LDAsMCw5NSwzLDAsMTI0LDEsMCwxMjQsMCwwLAotICAgIDk1LDQsMCwxMDAsMCwwLDEyNCwwLDAsOTUsNSwwLDEwMCwxLDAsMTI0LAotICAgIDAsMCw5NSw2LDAsMTAwLDEsMCwxMjQsMCwwLDk1LDcsMCwxMDAsMCwKLSAgICAwLDgzLDQxLDIsNzgsMjMzLDAsMCwwLDAsNDEsOCwyMTgsNyw5NSwxMTYsCi0gICAgMTA0LDExNCwxMDEsOTcsMTAwLDkwLDEzLDk3LDEwOCwxMDgsMTExLDk5LDk3LDExNiwxMDEsOTUsCi0gICAgMTA4LDExMSw5OSwxMDcsMjE4LDQsMTA4LDExMSw5OSwxMDcsMjE4LDYsMTE5LDk3LDEwNywxMDEsCi0gICAgMTE3LDExMiwxMTQsMTUsMCwwLDAsMjE4LDUsMTExLDExOSwxMTAsMTAxLDExNCwyMTgsNSwKLSAgICA5OSwxMTEsMTE3LDExMCwxMTYsMjE4LDcsMTE5LDk3LDEwNSwxMTYsMTAxLDExNCwxMTUsNDEsMiwKLSAgICAxMTQsMTksMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCi0gICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwyMCwwLDAsMCw3NCwwLAotICAgIDAsMCwxMTUsMTIsMCwwLDAsMCwxLDE1LDEsMTUsMSw5LDEsOSwKLSAgICAxLDksMSwxMjIsMjAsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LAotICAgIDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw5OSwxLDAsMCwwLDAsMCwKLSAgICAwLDAsNCwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSw4OCwKLSAgICAwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTMxLDAsMCwxMjUsMSwwLDEyNCwKLSAgICAwLDAsMTA2LDIsMCwxMjUsMiwwLDEyMCw2MCwwLDExNiwzLDAsMTA2LDQsCi0gICAgMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDMsMCwxMjQsMywwLDEwMCwwLDAsCi0gICAgMTA3LDgsMCwxMTQsNTUsMCwxMDAsMSwwLDgzLDEyNCwzLDAsMTA2LDIsMCwKLSAgICAxMjUsMiwwLDEyNCwyLDAsMTI0LDEsMCwxMDcsMiwwLDExNCwyNCwwLDEwMCwKLSAgICAyLDAsODMsMTEzLDI0LDAsODcsMTAwLDAsMCw4Myw0MSwzLDc4LDcwLDg0LAotICAgIDQxLDUsMTE0LDM0LDAsMCwwLDIxOCw5LDEwMywxMDEsMTE2LDk1LDEwNSwxMDAsMTAxLAotICAgIDExMCwxMTYsMTE0LDM3LDAsMCwwLDIxOCwxMiw5NSw5OCwxMDgsMTExLDk5LDEwNywxMDUsCi0gICAgMTEwLDEwMyw5NSwxMTEsMTEwLDIxOCwzLDEwMywxMDEsMTE2LDQxLDQsMTE0LDE5LDAsMCwKLSAgICAwLDkwLDIsMTA5LDEwMSwyMTgsMywxMTYsMTA1LDEwMCwxMTQsMzUsMCwwLDAsMTE0LAotICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDEyLAotICAgIDEwNCw5NywxMTUsOTUsMTAwLDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsODIsMCwwLDAsCi0gICAgMTE1LDE4LDAsMCwwLDAsMiwxMiwxLDksMSwzLDEsMTUsMSwxMiwKLSAgICAxLDQsMSw5LDEsMTIsMSwxMjIsMjQsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICA3NiwxMTEsOTksMTA3LDQ2LDEwNCw5NywxMTUsOTUsMTAwLDEwMSw5NywxMDAsMTA4LDExMSw5OSwKLSAgICAxMDcsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMTYsMCwKLSAgICAwLDAsNjcsMCwwLDAsMTE1LDIxMCwwLDAsMCwxMTYsMCwwLDEwNiwxLAotICAgIDAsMTMxLDAsMCwxMjUsMSwwLDEyNCwwLDAsMTE2LDIsMCwxMjQsMSwwLAotICAgIDYwLDEyMiwxNzMsMCwxMjAsMTY2LDAsMTI0LDAsMCwxMDYsMywwLDE0MywxMjQsMCwKLSAgICAxLDEyNCwwLDAsMTA2LDQsMCwxMDAsMSwwLDEwNywyLDAsMTE1LDY4LDAsCi0gICAgMTI0LDAsMCwxMDYsNSwwLDEyNCwxLDAsMTA3LDIsMCwxMTQsOTYsMCwxMjQsCi0gICAgMSwwLDEyNCwwLDAsOTUsNSwwLDEyNCwwLDAsNCwxMDYsNCwwLDEwMCwKLSAgICAyLDAsNTUsMiw5NSw0LDAsMTAwLDMsMCw4MywxMjQsMCwwLDEwNiw2LAotICAgIDAsMTMxLDAsMCwxMTQsMTI0LDAsMTE2LDcsMCwxMDAsNCwwLDEyNCwwLDAsCi0gICAgMjIsMTMxLDEsMCwxMzAsMSwwLDEyNCwwLDAsMTA2LDgsMCwxMDYsOSwwLAotICAgIDEwMCw1LDAsMTMxLDEsMCwxMTQsMTU3LDAsMTI0LDAsMCw0LDEwNiwxMCwwLAotICAgIDEwMCwyLDAsNTUsMiw5NSwxMCwwLDg3LDEwMCw2LDAsODEsODIsODgsMTI0LAotICAgIDAsMCwxMDYsOCwwLDEwNiw5LDAsMTMxLDAsMCwxLDEyNCwwLDAsMTA2LAotICAgIDgsMCwxMDYsMTEsMCwxMzEsMCwwLDEsMTEzLDI4LDAsODcsODcsMTAwLDYsCi0gICAgMCwxMTYsMiwwLDEyNCwxLDAsNjEsODgsMTAwLDYsMCw4Myw0MSw3LDEyMiwKLSAgICAxODUsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNjUsOTksMTEzLDExNywxMDUsMTE0LAotICAgIDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDgsMTExLDk5LAotICAgIDEwNyw0NiwzMiwzMiw3MywxMDIsMzIsOTcsMzIsMTEyLDExMSwxMTYsMTAxLDExMCwxMTYsMTA1LAotICAgIDk3LDEwOCwzMiwxMDAsMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNywzMiwxMDUsMTE1LDMyLDEwMCwKLSAgICAxMDEsMTE2LDEwMSw5OSwxMTYsMTAxLDEwMCw0NCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiw5NywzMiw5NSw2OCwxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LDY5LDExNCwxMTQsMTExLAotICAgIDExNCwzMiwxMDUsMTE1LDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsNDYsMTAsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsMzIsMzIsNzksMTE2LDEwNCwxMDEsMTE0LDExOSwxMDUsMTE1LDEwMSw0NCwzMiwKLSAgICAxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk5LDEwNywzMiwxMDUsMTE1LDMyLDk3LDEwOCwxMTksOTcsCi0gICAgMTIxLDExNSwzMiw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDEwMCwzMiw5NywxMTAsMTAwLDMyLAotICAgIDg0LDExNCwxMTcsMTAxLDMyLDEwNSwxMTUsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTAxLDEwMCwKLSAgICA0NiwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTQsMzMsMCwwLDAsMjMzLAotICAgIDEsMCwwLDAsODQsMTIyLDIzLDEwMCwxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LDMyLAotICAgIDEwMCwxMDEsMTE2LDEwMSw5OSwxMTYsMTAxLDEwMCwzMiw5OCwxMjEsMzIsMzcsMTE0LDcwLDc4LAotICAgIDQxLDEyLDExNCwzNCwwLDAsMCwxMTQsNDAsMCwwLDAsMTE0LDQxLDAsMCwKLSAgICAwLDExNCwzNSwwLDAsMCwxMTQsMzgsMCwwLDAsMTE0LDM3LDAsMCwwLAotICAgIDExNCw0NCwwLDAsMCwxMTQsMzEsMCwwLDAsMTE0LDM2LDAsMCwwLDIxOCwKLSAgICA3LDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsMTE0LDM5LDAsMCwwLDIxOCw3LDExNCwKLSAgICAxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDQxLDIsMTE0LDE5LDAsMCwwLDExNCw0MywwLAotICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsCi0gICAgMCwxMTQsNDYsMCwwLDAsOTQsMCwwLDAsMTE1LDMyLDAsMCwwLDAsCi0gICAgNiwxMiwxLDEwLDEsMywxLDMsMSwxMCwxLDMwLDEsOSwxLDE1LAotICAgIDEsNCwxLDEyLDEsMTYsMSwxOCwxLDIyLDIsMTMsMSwyMSwyLDEyMiwKLSAgICAxOSw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsOTcsOTksMTEzLAotICAgIDExNywxMDUsMTE0LDEwMSw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsCi0gICAgMCwxMCwwLDAsMCw2NywwLDAsMCwxMTUsMTU3LDAsMCwwLDExNiwwLAotICAgIDAsMTA2LDEsMCwxMzEsMCwwLDEyNSwxLDAsMTI0LDAsMCwxMDYsMiwwLAotICAgIDE0MywxMjksMCwxLDEyNCwwLDAsMTA2LDMsMCwxMjQsMSwwLDEwNywzLDAsCi0gICAgMTE0LDQ5LDAsMTE2LDQsMCwxMDAsMSwwLDEzMSwxLDAsMTMwLDEsMCwxMjQsCi0gICAgMCwwLDEwNiw1LDAsMTAwLDIsMCwxMDcsNCwwLDExNSw3MCwwLDExNiw2LAotICAgIDAsMTMwLDEsMCwxMjQsMCwwLDQsMTA2LDUsMCwxMDAsMywwLDU2LDIsCi0gICAgOTUsNSwwLDEyNCwwLDAsMTA2LDUsMCwxMDAsMiwwLDEwNywyLDAsMTE0LAotICAgIDE0NiwwLDEwMCwwLDAsMTI0LDAsMCw5NSwzLDAsMTI0LDAsMCwxMDYsNywKLSAgICAwLDExNCwxNDYsMCwxMjQsMCwwLDQsMTA2LDcsMCwxMDAsMywwLDU2LDIsCi0gICAgOTUsNywwLDEyNCwwLDAsMTA2LDgsMCwxMDYsOSwwLDEzMSwwLDAsMSwKLSAgICA4NywxMDAsMCwwLDgxLDgyLDg4LDEwMCwwLDAsODMsNDEsNCw3OCwxMjIsMzEsCi0gICAgOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDMyLDExNywKLSAgICAxMTAsNDUsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSwxMDAsMzIsMTA4LDExMSw5OSwxMDcsMTE0LAotICAgIDMzLDAsMCwwLDExNCw0NSwwLDAsMCw0MSwxMCwxMTQsMzQsMCwwLDAsCi0gICAgMTE0LDQwLDAsMCwwLDExNCwzNSwwLDAsMCwxMTQsMzcsMCwwLDAsMjE4LAotICAgIDEyLDgyLDExNywxMTAsMTE2LDEwNSwxMDksMTAxLDY5LDExNCwxMTQsMTExLDExNCwxMTQsMzgsMCwKLSAgICAwLDAsMjE4LDE0LDY1LDExNSwxMTUsMTAxLDExNCwxMTYsMTA1LDExMSwxMTAsNjksMTE0LDExNCwKLSAgICAxMTEsMTE0LDExNCwzOSwwLDAsMCwxMTQsMzYsMCwwLDAsMTE0LDQ3LDAsMCwKLSAgICAwLDQxLDIsMTE0LDE5LDAsMCwwLDExNCw0MywwLDAsMCwxMTQsMTAsMCwKLSAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsNDcsMCwwLAotICAgIDAsMTE5LDAsMCwwLDExNSwyMiwwLDAsMCwwLDEsMTIsMSwxMCwxLAotICAgIDE1LDEsMTIsMSwyMSwxLDE1LDEsMTUsMSw5LDEsOSwxLDE1LDEsCi0gICAgMTIyLDE5LDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0NiwxMTQsMTAxLAotICAgIDEwOCwxMDEsOTcsMTE1LDEwMSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLAotICAgIDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSwyNSwwLDAsMCwxMDAsCi0gICAgMSwwLDEwNiwwLDAsMTI0LDAsMCwxMDYsMSwwLDExNiwyLDAsMTI0LDAsCi0gICAgMCwxMzEsMSwwLDEzMSwyLDAsODMsNDEsMiw3OCwxMjIsMjMsOTUsNzcsMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQwLDEyMywzMywxMTQsMTI1LDQxLDMyLDk3LAotICAgIDExNiwzMiwxMjMsMTI1LDQxLDMsMjE4LDYsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMTQsMTUsCi0gICAgMCwwLDAsMjE4LDIsMTA1LDEwMCw0MSwxLDExNCwxOSwwLDAsMCwxMTQsMTAsCi0gICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsOCw5NSwKLSAgICA5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsMTMyLDAsMCwwLDExNSwyLDAsMCwwLAotICAgIDAsMSwxMjIsMjAsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LAotICAgIDk1LDk1LDExNCwxMDEsMTEyLDExNCw5NSw5NSw3OCw0MSw5LDExNCwxLDAsMCwwLAotICAgIDExNCwwLDAsMCwwLDExNCwyLDAsMCwwLDExNCwzLDAsMCwwLDExNCwKLSAgICAyMCwwLDAsMCwxMTQsNDQsMCwwLDAsMTE0LDQ2LDAsMCwwLDExNCw0NywKLSAgICAwLDAsMCwxMTQsNTIsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAotICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwzMiwwLDAsCi0gICAgMCw2OCwwLDAsMCwxMTUsMTIsMCwwLDAsMTIsNCw2LDIsMTIsOCwKLSAgICAxMiwxMiwxMiwyNSwxMiwxMywxMTQsMzIsMCwwLDAsOTksMCwwLDAsMCwKLSAgICAwLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw2NCwwLDAsMCwKLSAgICAxMTUsNzAsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLAotICAgIDAsMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsCi0gICAgOTAsNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLDUsMCwxMDAsCi0gICAgNiwwLDEwMCw3LDAsMTMyLDAsMCw5MCw2LDAsMTAwLDgsMCwxMDAsOSwKLSAgICAwLDEzMiwwLDAsOTAsNywwLDEwMCwxMCwwLDgzLDQxLDExLDIxOCwxNiw5NSwKLSAgICA2OCwxMTcsMTA5LDEwOSwxMjEsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDEyMiwKLSAgICA4Niw2NSwzMiwxMTUsMTA1LDEwOSwxMTIsMTA4LDEwMSwzMiw5NSw3NywxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDc2LDExMSw5OSwxMDcsMzIsMTAxLDExMywxMTcsMTA1LDExOCw5NywxMDgsMTAxLDExMCwxMTYsCi0gICAgMzIsMTAyLDExMSwxMTQsMzIsODAsMTIxLDExNiwxMDQsMTExLDExMCwzMiw5OCwxMTcsMTA1LDEwOCwKLSAgICAxMDAsMTE1LDMyLDExOSwxMDUsMTE2LDEwNCwxMTEsMTE3LDExNiwxMCwzMiwzMiwzMiwzMiwxMDksCi0gICAgMTE3LDEwOCwxMTYsMTA1LDQ1LDExNiwxMDQsMTE0LDEwMSw5NywxMDAsMTA1LDExMCwxMDMsMzIsMTE1LAotICAgIDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDQ2LDk5LDIsMCwwLDAsMCwwLDAsMCwKLSAgICAyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDIyLDAsMCwKLSAgICAwLDEyNCwxLDAsMTI0LDAsMCw5NSwwLDAsMTAwLDEsMCwxMjQsMCwwLAotICAgIDk1LDEsMCwxMDAsMCwwLDgzLDQxLDIsNzgsMTE0LDMzLDAsMCwwLDQxLAotICAgIDIsMTE0LDE1LDAsMCwwLDExNCwzOCwwLDAsMCw0MSwyLDExNCwxOSwwLAotICAgIDAsMCwxMTQsMTUsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsCi0gICAgMCwxMTQsMTEsMCwwLDAsMTE0LDIwLDAsMCwwLDE0MCwwLDAsMCwxMTUsCi0gICAgNCwwLDAsMCwwLDEsOSwxLDEyMiwyNSw5NSw2OCwxMTcsMTA5LDEwOSwxMjEsCisgICAgOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNCwwLDAsCisgICAgMCw2NCwwLDAsMCwxMTUsMjAyLDEsMCwwLDEwMCwwLDkwLDAsMTAwLDEsCisgICAgOTcsMSwxMDAsMiwxMDAsMywxMzIsMCw5MCwyLDEwMCw0LDEwMCw1LDEzMiwwLAorICAgIDkwLDMsMTA1LDAsOTAsNCwxMDUsMCw5MCw1LDcxLDAsMTAwLDYsMTAwLDcsCisgICAgMTMyLDAsMTAwLDcsMTAxLDYsMTMxLDMsOTAsNyw3MSwwLDEwMCw4LDEwMCw5LAorICAgIDEzMiwwLDEwMCw5LDEzMSwyLDkwLDgsNzEsMCwxMDAsMTAsMTAwLDExLDEzMiwwLAorICAgIDEwMCwxMSwxMzEsMiw5MCw5LDcxLDAsMTAwLDEyLDEwMCwxMywxMzIsMCwxMDAsMTMsCisgICAgMTMxLDIsOTAsMTAsMTAwLDE0LDEwMCwxNSwxMzIsMCw5MCwxMSwxMDAsMTYsMTAwLDE3LAorICAgIDEzMiwwLDkwLDEyLDEwMCwxOCwxMDAsMTksMTMyLDAsOTAsMTMsMTAwLDIwLDEwMCwyMSwKKyAgICAxNTYsMSwxMDAsMjIsMTAwLDIzLDEzMiwyLDkwLDE0LDEwMCwyNCwxMDAsMjUsMTMyLDAsCisgICAgOTAsMTUsMTAwLDI2LDEwMCwyNywxMzIsMCw5MCwxNiwxMDAsMjgsMTAwLDI5LDEzMiwwLAorICAgIDkwLDE3LDEwMCwzMCwxMDAsMzEsMTMyLDAsOTAsMTgsNzEsMCwxMDAsMzIsMTAwLDMzLAorICAgIDEzMiwwLDEwMCwzMywxMzEsMiw5MCwxOSw3MSwwLDEwMCwzNCwxMDAsMzUsMTMyLDAsCisgICAgMTAwLDM1LDEzMSwyLDkwLDIwLDEwMCwxLDEwMCwxLDEwMCwzNiwxNTYsMiwxMDAsMzcsCisgICAgMTAwLDM4LDEzMiwyLDkwLDIxLDEwMSwyMiwxMzEsMCw5MCwyMywxMDAsOTIsMTAwLDM5LAorICAgIDEwMCw0MCwxMzIsMSw5MCwyNCwxMDAsNDEsMTAwLDQyLDE1NiwxLDEwMCw0MywxMDAsNDQsCisgICAgMTMyLDIsOTAsMjUsMTAwLDQ1LDEwMCw0NiwxMzIsMCw5MCwyNiwxMDAsNDcsMTAwLDQ4LAorICAgIDEzMiwwLDkwLDI3LDEwMCw0OSwxMDAsNTAsMTMyLDAsOTAsMjgsMTAwLDUxLDEwMCw1MiwKKyAgICAxMzIsMCw5MCwyOSwxMDAsNTMsMTAwLDU0LDEzMiwwLDkwLDMwLDEwMCw1NSwxMDAsNTYsCisgICAgMTMyLDAsOTAsMzEsNzEsMCwxMDAsNTcsMTAwLDU4LDEzMiwwLDEwMCw1OCwxMzEsMiwKKyAgICA5MCwzMiw3MSwwLDEwMCw1OSwxMDAsNjAsMTMyLDAsMTAwLDYwLDEzMSwyLDkwLDMzLAorICAgIDcxLDAsMTAwLDYxLDEwMCw2MiwxMzIsMCwxMDAsNjIsMTMxLDIsOTAsMzQsMTAwLDYzLAorICAgIDEwMCw2NCwxMzIsMCw5MCwzNSwxMDAsNjUsMTAwLDY2LDEzMiwwLDkwLDM2LDEwMCw5MywKKyAgICAxMDAsNjcsMTAwLDY4LDEzMiwxLDkwLDM3LDEwMCw2OSwxMDAsNzAsMTMyLDAsOTAsMzgsCisgICAgMTAwLDcxLDkwLDM5LDEwMSwzOSwxMDAsNzIsMjMsMCw5MCw0MCwxMDAsNzMsMTAwLDc0LAorICAgIDEzMiwwLDkwLDQxLDEwMCw3NSwxMDAsNzYsMTMyLDAsOTAsNDIsMTAwLDk0LDEwMCw3OCwKKyAgICAxMDAsNzksMTMyLDEsOTAsNDMsMTAwLDgwLDEwMCw4MSwxMzIsMCw5MCw0NCwxMDAsODIsCisgICAgMTAwLDgzLDEzMiwwLDkwLDQ1LDEwMCwxLDEwMCwxLDEwMiwwLDEwMCw3NywxMDIsNCwKKyAgICAxMDAsODQsMTAwLDg1LDEzMiwxLDkwLDQ2LDEwMCw4NiwxMDAsODcsMTMyLDAsOTAsNDcsCisgICAgMTAwLDg4LDEwMCw4OSwxMzIsMCw5MCw0OCwxMDAsOTAsMTAwLDkxLDEzMiwwLDkwLDQ5LAorICAgIDEwMCwxLDgzLDAsNDEsOTUsOTcsODMsMSwwLDAsNjcsMTExLDExNCwxMDEsMzIsCisgICAgMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwKKyAgICAxMDIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsNDYsMTAsMTAsODQsMTA0LDEwNSwxMTUsMzIsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw3OCw3OSw4NCwzMiwxMDksMTAxLAorICAgIDk3LDExMCwxMTYsMzIsMTE2LDExMSwzMiw5OCwxMDEsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwKKyAgICAxMDgsMTIxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsMzMsMzIsNzMsMTE2LDMyLAorICAgIDEwNCw5NywxMTUsMzIsOTgsMTAxLDEwMSwxMTAsMzIsMTAwLDEwMSwxMTUsMTA1LDEwMywxMTAsMTAxLAorICAgIDEwMCwzMiwxMTUsMTE3LDk5LDEwNCwxMCwxMTYsMTA0LDk3LDExNiwzMiwxMDUsMTE2LDMyLDk5LAorICAgIDk3LDExMCwzMiw5OCwxMDEsMzIsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDExMiwKKyAgICAxMDEsMTAwLDMyLDEwNSwxMTAsMTE2LDExMSwzMiw4MCwxMjEsMTE2LDEwNCwxMTEsMTEwLDMyLDk3LAorICAgIDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywKKyAgICAxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0NiwzMiwKKyAgICA2NSwxMTUsMTAsMTE1LDExNyw5OSwxMDQsMzIsMTA1LDExNiwzMiwxMTQsMTAxLDExMywxMTcsMTA1LAorICAgIDExNCwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMTAsMTA2LDEwMSw5OSwxMTYsMTA1LDExMSwKKyAgICAxMTAsMzIsMTExLDEwMiwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSw5OSwzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsMTEwLDEwMCwzMiw5NywxMTYsMTE2LDExNCwxMDUsOTgsCisgICAgMTE3LDExNiwxMDEsMTE1LDMyLDEwNSwxMTAsMzIsMTExLDExNCwxMDAsMTAxLDExNCwzMiwxMTYsMTExLAorICAgIDEwLDExOSwxMTEsMTE0LDEwNyw0NiwzMiw3OSwxMTAsMTAxLDMyLDExNSwxMDQsMTExLDExNywxMDgsCisgICAgMTAwLDMyLDExNywxMTUsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsMzIsCisgICAgOTcsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMiwxMTcsOTgsMTA4LDEwNSw5OSw0NSwxMDIsOTcsCisgICAgOTksMTA1LDExMCwxMDMsMzIsMTE4LDEwMSwxMTQsMTE1LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsCisgICAgMTE2LDEwNCwxMDUsMTE1LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDc4LDk5LAorICAgIDIsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDcsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDYwLDAsMCwwLDEyMCw0MCwxMDAsNiw2OCwwLDkzLAorICAgIDMyLDEyNSwyLDExNiwwLDEyNCwxLDEyNCwyLDEzMSwyLDExNCw2LDExNiwxLDEyNCwKKyAgICAwLDEyNCwyLDExNiwyLDEyNCwxLDEyNCwyLDEzMSwyLDEzMSwzLDEsMCwxMTMsCisgICAgNiw4NywwLDEyNCwwLDEwNiwzLDEwNiw0LDEyNCwxLDEwNiwzLDEzMSwxLDEsCisgICAgMCwxMDAsNSw4MywwLDQxLDcsMTIyLDQ3LDgzLDEwNSwxMDksMTEyLDEwOCwxMDEsMzIsCisgICAgMTE1LDExNyw5OCwxMTUsMTE2LDEwNSwxMTYsMTE3LDExNiwxMDEsMzIsMTAyLDExMSwxMTQsMzIsMTAyLAorICAgIDExNywxMTAsOTksMTE2LDExMSwxMTEsMTA4LDExNSw0NiwxMTcsMTEyLDEwMCw5NywxMTYsMTAxLDk1LAorICAgIDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDQ2LDIxOCwxMCw5NSw5NSwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSw5NSw5NSwyMTgsOCw5NSw5NSwxMTAsOTcsMTA5LDEwMSw5NSw5NSwyMTgsMTIsCisgICAgOTUsOTUsMTEzLDExNyw5NywxMDgsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMjE4LDcsOTUsOTUsCisgICAgMTAwLDExMSw5OSw5NSw5NSw3OCw0MSw0LDExNCwwLDAsMCwwLDExNCwxLDAsCisgICAgMCwwLDExNCwyLDAsMCwwLDExNCwzLDAsMCwwLDQxLDUsMjE4LDcsCisgICAgMTA0LDk3LDExNSw5NywxMTYsMTE2LDExNCwyMTgsNywxMTUsMTAxLDExNiw5NywxMTYsMTE2LDExNCwKKyAgICAyMTgsNywxMDMsMTAxLDExNiw5NywxMTYsMTE2LDExNCwyMTgsOCw5NSw5NSwxMDAsMTA1LDk5LAorICAgIDExNiw5NSw5NSwyMTgsNiwxMTcsMTEyLDEwMCw5NywxMTYsMTAxLDQxLDMsOTAsMywxMTAsCisgICAgMTAxLDExOSw5MCwzLDExMSwxMDgsMTAwLDIxOCw3LDExNCwxMDEsMTEyLDEwOCw5Nyw5OSwxMDEsCisgICAgMTY5LDAsMTE0LDEwLDAsMCwwLDI1MCwyOSw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LAorICAgIDExNSwxMTYsMTE0LDk3LDExMiw2MiwyMTgsNSw5NSwxMTksMTE0LDk3LDExMiwyNywwLDAsCisgICAgMCwxMTUsOCwwLDAsMCwwLDIsMTAsMSwxMCwxLDIyLDEsMTE0LDEyLAorICAgIDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLAorICAgIDIsMCwwLDAsNjcsMCwwLDAsMTE1LDEyLDAsMCwwLDExNiwwLDExNiwKKyAgICAxLDEzMSwxLDEyNCwwLDEzMSwxLDgzLDAsNDEsMSw3OCw0MSwyLDIxOCw0LAorICAgIDExNiwxMjEsMTEyLDEwMSwyMTgsMywxMTUsMTIxLDExNSw0MSwxLDIxOCw0LDExMCw5NywxMDksCisgICAgMTAxLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLAorICAgIDIxOCwxMSw5NSwxMTAsMTAxLDExOSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzNSwwLDAsCisgICAgMCwxMTUsMiwwLDAsMCwwLDEsMTE0LDE2LDAsMCwwLDk5LDAsMCwKKyAgICAwLDAsMCwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsNjQsMCwKKyAgICAwLDAsMTE1LDEyLDAsMCwwLDEwMSwwLDkwLDEsMTAwLDAsOTAsMiwxMDAsCisgICAgMSw4MywwLDQxLDIsMjE4LDE0LDk1LDY4LDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsCisgICAgNjksMTE0LDExNCwxMTEsMTE0LDc4LDQxLDMsMTE0LDEsMCwwLDAsMTE0LDAsMCwKKyAgICAwLDAsMTE0LDIsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsCisgICAgMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxNywwLDAsMCwKKyAgICA0NywwLDAsMCwxMTUsMiwwLDAsMCw4LDEsMTE0LDE3LDAsMCwwLAorICAgIDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwwLAorICAgIDAsNjQsMCwwLDAsMTE1LDU2LDAsMCwwLDEwMSwwLDkwLDEsMTAwLDAsCisgICAgOTAsMiwxMDAsMSw5MCwzLDEwMCwyLDEwMCwzLDEzMiwwLDkwLDQsMTAwLDQsCisgICAgMTAwLDUsMTMyLDAsOTAsNSwxMDAsNiwxMDAsNywxMzIsMCw5MCw2LDEwMCw4LAorICAgIDEwMCw5LDEzMiwwLDkwLDcsMTAwLDEwLDEwMCwxMSwxMzIsMCw5MCw4LDEwMCwxMiwKKyAgICA4MywwLDQxLDEzLDIxOCwxMSw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwKKyAgICAxMDcsMTIyLDE2OSw2NSwzMiwxMTQsMTAxLDk5LDExNywxMTQsMTE1LDEwNSwxMTgsMTAxLDMyLDEwOCwKKyAgICAxMTEsOTksMTA3LDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsCisgICAgMTExLDExMCwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTA1LDExNSwzMiw5Nyw5OCwxMDgsMTAxLAorICAgIDMyLDExNiwxMTEsMzIsMTAwLDEwMSwxMTYsMTAxLDk5LDExNiwzMiwxMDAsMTAxLDk3LDEwMCwxMDgsCisgICAgMTExLDk5LDEwNywxMTUsMTAsMzIsMzIsMzIsMzIsNDAsMTAxLDQ2LDEwMyw0NiwzMiwxMTYsCisgICAgMTA0LDExNCwxMDEsOTcsMTAwLDMyLDQ5LDMyLDExNiwxMTQsMTIxLDEwNSwxMTAsMTAzLDMyLDExNiwKKyAgICAxMTEsMzIsMTE2LDk3LDEwNywxMDEsMzIsMTA4LDExMSw5OSwxMDcsMTE1LDMyLDY1LDMyLDExNiwKKyAgICAxMDQsMTAxLDExMCwzMiw2Niw0NCwzMiw5NywxMTAsMTAwLDMyLDExNiwxMDQsMTE0LDEwMSw5NywKKyAgICAxMDAsMzIsNTAsMzIsMTE2LDExNCwxMjEsMTA1LDExMCwxMDMsMzIsMTE2LDExMSwxMCwzMiwzMiwKKyAgICAzMiwzMiwxMTYsOTcsMTA3LDEwMSwzMiwxMDgsMTExLDk5LDEwNywxMTUsMzIsNjYsMzIsMTE2LAorICAgIDEwNCwxMDEsMTEwLDMyLDY1LDQxLDQ2LDEwLDMyLDMyLDMyLDMyLDk5LDIsMCwwLAorICAgIDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDQ4LDAsMCwwLDExNiwwLDEwNiwxLDEzMSwwLDEyNCwwLDk1LDIsCisgICAgMTE2LDAsMTA2LDEsMTMxLDAsMTI0LDAsOTUsMywxMjQsMSwxMjQsMCw5NSw0LAorICAgIDEwMCwwLDEyNCwwLDk1LDUsMTAwLDEsMTI0LDAsOTUsNiwxMDAsMSwxMjQsMCwKKyAgICA5NSw3LDEwMCwwLDgzLDAsNDEsMiw3OCwyMzMsMCwwLDAsMCw0MSw4LAorICAgIDIxOCw3LDk1LDExNiwxMDQsMTE0LDEwMSw5NywxMDAsOTAsMTMsOTcsMTA4LDEwOCwxMTEsOTksCisgICAgOTcsMTE2LDEwMSw5NSwxMDgsMTExLDk5LDEwNywyMTgsNCwxMDgsMTExLDk5LDEwNywyMTgsNiwKKyAgICAxMTksOTcsMTA3LDEwMSwxMTcsMTEyLDExNCwxNSwwLDAsMCwyMTgsNSwxMTEsMTE5LDExMCwKKyAgICAxMDEsMTE0LDIxOCw1LDk5LDExMSwxMTcsMTEwLDExNiwyMTgsNywxMTksOTcsMTA1LDExNiwxMDEsCisgICAgMTE0LDExNSw0MSwyLDIxOCw0LDExNSwxMDEsMTA4LDEwMiwxMTQsMTUsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDgsCisgICAgOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDU3LDAsMCwwLDExNSwxMiwwLDAsCisgICAgMCwwLDEsMTAsMSwxMCwxLDYsMSw2LDEsNiwxLDEyMiwyMCw5NSwKICAgICA3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsOTUsOTUsMTA1LDExMCwxMDUsCi0gICAgMTE2LDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLAotICAgIDMsMCwwLDAsNjcsMCwwLDAsMTE1LDE5LDAsMCwwLDEyNCwwLDAsCi0gICAgNCwxMDYsMCwwLDEwMCwxLDAsNTUsMiw5NSwwLDAsMTAwLDIsMCw4MywKLSAgICA0MSwzLDc4LDExNCw0NSwwLDAsMCw4NCw0MSwxLDExNCwzOCwwLDAsMCwKLSAgICA0MSwxLDExNCwxOSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwKLSAgICAwLDExNCwxMSwwLDAsMCwxMTQsNDYsMCwwLDAsMTQ0LDAsMCwwLDExNSwKLSAgICA0LDAsMCwwLDAsMSwxNSwxLDEyMiwyNCw5NSw2OCwxMTcsMTA5LDEwOSwxMjEsCi0gICAgNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LDk3LDk5LDExMywxMTcsMTA1LAotICAgIDExNCwxMDEsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMywKLSAgICAwLDAsMCw2NywwLDAsMCwxMTUsNDYsMCwwLDAsMTI0LDAsMCwxMDYsCi0gICAgMCwwLDEwMCwxLDAsMTA3LDIsMCwxMTQsMjcsMCwxMTYsMSwwLDEwMCwyLAotICAgIDAsMTMxLDEsMCwxMzAsMSwwLDEyNCwwLDAsNCwxMDYsMCwwLDEwMCwzLAotICAgIDAsNTYsMiw5NSwwLDAsMTAwLDAsMCw4Myw0MSw0LDc4LDExNCwzMywwLAotICAgIDAsMCwxMjIsMzEsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDExNCwxMDEsMTA4LDEwMSw5NywKLSAgICAxMTUsMTAxLDMyLDExNywxMTAsNDUsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSwxMDAsMzIsMTA4LAotICAgIDExMSw5OSwxMDcsMTE0LDQ1LDAsMCwwLDQxLDIsMTE0LDM4LDAsMCwwLDExNCwKLSAgICA0OCwwLDAsMCw0MSwxLDExNCwxOSwwLDAsMCwxMTQsMTAsMCwwLDAsCi0gICAgMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsNDcsMCwwLDAsMTQ4LAotICAgIDAsMCwwLDExNSw2LDAsMCwwLDAsMSwxNSwxLDEyLDEsMTIyLDI0LAorICAgIDExNiw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwKKyAgICAyLDAsMCwwLDY3LDAsMCwwLDExNSw2NCwwLDAsMCwxMTYsMCwxMDYsCisgICAgMSwxMzEsMCwxMjUsMSwxMjQsMCwxMDYsMiwxMjUsMiwxMjAsNDQsMTE2LDMsMTA2LAorICAgIDQsMTI0LDIsMTMxLDEsMTI1LDMsMTI0LDMsMTAwLDAsMTA3LDgsMTE0LDM4LDEwMCwKKyAgICAxLDgzLDAsMTI0LDMsMTA2LDIsMTI1LDIsMTI0LDIsMTI0LDEsMTA3LDIsMTE0LAorICAgIDE2LDEwMCwyLDgzLDAsMTEzLDE2LDg3LDAsMTAwLDAsODMsMCw0MSwzLDc4LAorICAgIDcwLDg0LDQxLDUsMTE0LDIwLDAsMCwwLDIxOCw5LDEwMywxMDEsMTE2LDk1LDEwNSwKKyAgICAxMDAsMTAxLDExMCwxMTYsMTE0LDIzLDAsMCwwLDIxOCwxMiw5NSw5OCwxMDgsMTExLDk5LAorICAgIDEwNywxMDUsMTEwLDEwMyw5NSwxMTEsMTEwLDIxOCwzLDEwMywxMDEsMTE2LDQxLDQsMTE0LDI2LAorICAgIDAsMCwwLDkwLDIsMTA5LDEwMSwyMTgsMywxMTYsMTA1LDEwMCwxMTQsMjEsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsCisgICAgMjE4LDEyLDEwNCw5NywxMTUsOTUsMTAwLDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsNjUsMCwKKyAgICAwLDAsMTE1LDE4LDAsMCwwLDAsMiw4LDEsNiwxLDIsMSwxMCwKKyAgICAxLDgsMSw0LDEsNiwxLDgsMSwxMjIsMjQsOTUsNzcsMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LDEwNCw5NywxMTUsOTUsMTAwLDEwMSw5NywxMDAsMTA4LAorICAgIDExMSw5OSwxMDcsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsCisgICAgMTYsMCwwLDAsNjcsMCwwLDAsMTE1LDE2OCwwLDAsMCwxMTYsMCwxMDYsCisgICAgMSwxMzEsMCwxMjUsMSwxMjQsMCwxMTYsMiwxMjQsMSw2MCwwLDEyMiwxMzgsMTIwLAorICAgIDEzMiwxMjQsMCwxMDYsMywxNDMsOTYsMSwwLDEyNCwwLDEwNiw0LDEwMCwxLDEwNywKKyAgICAyLDExNSw0OCwxMjQsMCwxMDYsNSwxMjQsMSwxMDcsMiwxMTQsNzIsMTI0LDEsMTI0LAorICAgIDAsOTUsNSwxMjQsMCw0LDAsMTA2LDQsMTAwLDIsNTUsMCwyLDAsOTUsCisgICAgNCwxMDAsMyw4MywwLDEyNCwwLDEwNiw2LDEzMSwwLDExNCw5MiwxMTYsNywxMDAsCisgICAgNCwxMjQsMCwyMiwwLDEzMSwxLDEzMCwxLDEyNCwwLDEwNiw4LDEwNiw5LDEwMCwKKyAgICA1LDEzMSwxLDExNCwxMTgsMTI0LDAsNCwwLDEwNiwxMCwxMDAsMiw1NSwwLDIsCisgICAgMCw5NSwxMCw4NywwLDEwMCw2LDgxLDAsODIsMCw4OCwwLDEyNCwwLDEwNiwKKyAgICA4LDEwNiw5LDEzMSwwLDEsMCwxMjQsMCwxMDYsOCwxMDYsMTEsMTMxLDAsMSwKKyAgICAwLDExMywyMCw4NywwLDg3LDAsMTAwLDYsMTE2LDIsMTI0LDEsNjEsMCw4OCwKKyAgICAwLDEwMCw2LDgzLDAsNDEsNywxMjIsMTg1LDEwLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDY1LDk5LDExMywxMTcsMTA1LDExNCwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMzIsMTA4LDExMSw5OSwxMDcsNDYsMzIsMzIsNzMsMTAyLDMyLDk3LAorICAgIDMyLDExMiwxMTEsMTE2LDEwMSwxMTAsMTE2LDEwNSw5NywxMDgsMzIsMTAwLDEwMSw5NywxMDAsMTA4LAorICAgIDExMSw5OSwxMDcsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExNiwxMDEsOTksMTE2LDEwMSwxMDAsNDQsCisgICAgMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsOTcsMzIsOTUsNjgsMTAxLDk3LDEwMCwKKyAgICAxMDgsMTExLDk5LDEwNyw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTA1LDExNSwzMiwxMTQsOTcsMTA1LAorICAgIDExNSwxMDEsMTAwLDQ2LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc5LDExNiwxMDQsCisgICAgMTAxLDExNCwxMTksMTA1LDExNSwxMDEsNDQsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5OSwxMDcsCisgICAgMzIsMTA1LDExNSwzMiw5NywxMDgsMTE5LDk3LDEyMSwxMTUsMzIsOTcsOTksMTEzLDExNywxMDUsCisgICAgMTE0LDEwMSwxMDAsMzIsOTcsMTEwLDEwMCwzMiw4NCwxMTQsMTE3LDEwMSwzMiwxMDUsMTE1LDMyLAorICAgIDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDEwMSwxMDAsNDYsMTAsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMTE0LDE5LDAsMCwwLDIzMywxLDAsMCwwLDg0LDEyMiwyMywxMDAsCisgICAgMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNywzMiwxMDAsMTAxLDExNiwxMDEsOTksMTE2LDEwMSwxMDAsCisgICAgMzIsOTgsMTIxLDMyLDM3LDExNCw3MCw3OCw0MSwxMiwxMTQsMjAsMCwwLDAsMTE0LAorICAgIDI4LDAsMCwwLDExNCwyOSwwLDAsMCwxMTQsMjEsMCwwLDAsMTE0LDI0LAorICAgIDAsMCwwLDExNCwyMywwLDAsMCwxMTQsMzIsMCwwLDAsMTE0LDE3LDAsCisgICAgMCwwLDExNCwyMiwwLDAsMCwyMTgsNyw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLAorICAgIDExNCwyNSwwLDAsMCwyMTgsNywxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSw0MSwyLAorICAgIDExNCwyNiwwLDAsMCwxMTQsMzEsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDM0LDAsMCwwLDc3LDAsCisgICAgMCwwLDExNSwzMiwwLDAsMCwwLDYsOCwxLDgsMSwyLDEsMiwKKyAgICAxLDgsMSwyMCwxLDYsMSwxNCwxLDQsMSw4LDEsMTIsMSwxMiwKKyAgICAxLDI0LDIsMTAsMSwxOCwyLDEyMiwxOSw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDc2LDExMSw5OSwxMDcsNDYsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSw5OSwxLDAsMCwKKyAgICAwLDAsMCwwLDAsMiwwLDAsMCwxMCwwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsMTIyLDAsMCwwLDExNiwwLDEwNiwxLDEzMSwwLDEyNSwxLDEyNCwwLAorICAgIDEwNiwyLDE0Myw5OCwxLDAsMTI0LDAsMTA2LDMsMTI0LDEsMTA3LDMsMTE0LDM0LAorICAgIDExNiw0LDEwMCwxLDEzMSwxLDEzMCwxLDEyNCwwLDEwNiw1LDEwMCwyLDEwNyw0LAorICAgIDExNSw0OCwxMTYsNiwxMzAsMSwxMjQsMCw0LDAsMTA2LDUsMTAwLDMsNTYsMCwKKyAgICAyLDAsOTUsNSwxMjQsMCwxMDYsNSwxMDAsMiwxMDcsMiwxMTQsMTA4LDEwMCwwLAorICAgIDEyNCwwLDk1LDMsMTI0LDAsMTA2LDcsMTE0LDEwOCwxMjQsMCw0LDAsMTA2LDcsCisgICAgMTAwLDMsNTYsMCwyLDAsOTUsNywxMjQsMCwxMDYsOCwxMDYsOSwxMzEsMCwKKyAgICAxLDAsODcsMCwxMDAsMCw4MSwwLDgyLDAsODgsMCwxMDAsMCw4MywwLAorICAgIDQxLDQsNzgsMTIyLDMxLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiwxMTQsMTAxLDEwOCwxMDEsCisgICAgOTcsMTE1LDEwMSwzMiwxMTcsMTEwLDQ1LDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsMTAwLDMyLAorICAgIDEwOCwxMTEsOTksMTA3LDExNCwxOSwwLDAsMCwxMTQsMzMsMCwwLDAsNDEsMTAsCisgICAgMTE0LDIwLDAsMCwwLDExNCwyOCwwLDAsMCwxMTQsMjEsMCwwLDAsMTE0LAorICAgIDIzLDAsMCwwLDIxOCwxMiw4MiwxMTcsMTEwLDExNiwxMDUsMTA5LDEwMSw2OSwxMTQsMTE0LAorICAgIDExMSwxMTQsMTE0LDI0LDAsMCwwLDIxOCwxNCw2NSwxMTUsMTE1LDEwMSwxMTQsMTE2LDEwNSwKKyAgICAxMTEsMTEwLDY5LDExNCwxMTQsMTExLDExNCwxMTQsMjUsMCwwLDAsMTE0LDIyLDAsMCwKKyAgICAwLDExNCwzNSwwLDAsMCw0MSwyLDExNCwyNiwwLDAsMCwxMTQsMzEsMCwKKyAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLAorICAgIDAsMTE0LDM1LDAsMCwwLDEwMiwwLDAsMCwxMTUsMjIsMCwwLDAsMCwKKyAgICAxLDgsMSw4LDEsMTAsMSw4LDEsMTQsMSwxNCwxLDEwLDEsNiwKKyAgICAxLDYsMSwxNCwxLDEyMiwxOSw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSwKKyAgICA5OSwxMDcsNDYsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsOTksMSwwLDAsMCwwLAorICAgIDAsMCwwLDEsMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsCisgICAgMTgsMCwwLDAsMTAwLDEsMTA2LDAsMTI0LDAsMTA2LDEsMTE2LDIsMTI0LDAsCisgICAgMTMxLDEsMTMxLDIsODMsMCw0MSwyLDc4LDEyMiwyMyw5NSw3NywxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDAsMTIzLDMzLDExNCwxMjUsNDEsMzIsOTcsMTE2LDMyLAorICAgIDEyMywxMjUsNDEsMywyMTgsNiwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNCwxNSwwLDAsCisgICAgMCwyMTgsMiwxMDUsMTAwLDQxLDEsMTE0LDI2LDAsMCwwLDExNCwxMCwwLDAsCisgICAgMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCw4LDk1LDk1LDExNCwKKyAgICAxMDEsMTEyLDExNCw5NSw5NSwxMTUsMCwwLDAsMTE1LDIsMCwwLDAsMCwxLAorICAgIDEyMiwyMCw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsOTUsOTUsCisgICAgMTE0LDEwMSwxMTIsMTE0LDk1LDk1LDc4LDQxLDksMTE0LDEsMCwwLDAsMTE0LDAsCisgICAgMCwwLDAsMTE0LDIsMCwwLDAsMTE0LDMsMCwwLDAsMTE0LDI3LDAsCisgICAgMCwwLDExNCwzMiwwLDAsMCwxMTQsMzQsMCwwLDAsMTE0LDM1LDAsMCwKKyAgICAwLDExNCw0MCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLAorICAgIDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDE4LDAsMCwwLDUxLAorICAgIDAsMCwwLDExNSwxMiwwLDAsMCw4LDQsNCwyLDgsOCw4LDEyLAorICAgIDgsMjUsOCwxMywxMTQsMTgsMCwwLDAsOTksMCwwLDAsMCwwLDAsCisgICAgMCwwLDAsMCwwLDAsMiwwLDAsMCw2NCwwLDAsMCwxMTUsNDgsCisgICAgMCwwLDAsMTAxLDAsOTAsMSwxMDAsMCw5MCwyLDEwMCwxLDkwLDMsMTAwLAorICAgIDIsMTAwLDMsMTMyLDAsOTAsNCwxMDAsNCwxMDAsNSwxMzIsMCw5MCw1LDEwMCwKKyAgICA2LDEwMCw3LDEzMiwwLDkwLDYsMTAwLDgsMTAwLDksMTMyLDAsOTAsNywxMDAsCisgICAgMTAsODMsMCw0MSwxMSwyMTgsMTYsOTUsNjgsMTE3LDEwOSwxMDksMTIxLDc3LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNywxMjIsODYsNjUsMzIsMTE1LDEwNSwxMDksMTEyLDEwOCwKKyAgICAxMDEsMzIsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDMyLDEwMSwxMTMsCisgICAgMTE3LDEwNSwxMTgsOTcsMTA4LDEwMSwxMTAsMTE2LDMyLDEwMiwxMTEsMTE0LDMyLDgwLDEyMSwxMTYsCisgICAgMTA0LDExMSwxMTAsMzIsOTgsMTE3LDEwNSwxMDgsMTAwLDExNSwzMiwxMTksMTA1LDExNiwxMDQsMTExLAorICAgIDExNywxMTYsMTAsMzIsMzIsMzIsMzIsMTA5LDExNywxMDgsMTE2LDEwNSw0NSwxMTYsMTA0LDExNCwKKyAgICAxMDEsOTcsMTAwLDEwNSwxMTAsMTAzLDMyLDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiw0Niw5OSwKKyAgICAyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSwxNiwwLDAsMCwxMjQsMSwxMjQsMCw5NSwwLDEwMCwKKyAgICAxLDEyNCwwLDk1LDEsMTAwLDAsODMsMCw0MSwyLDc4LDExNCwxOSwwLDAsCisgICAgMCw0MSwyLDExNCwxNSwwLDAsMCwxMTQsMjQsMCwwLDAsNDEsMiwxMTQsCisgICAgMjYsMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsCisgICAgMCwwLDAsMTE0LDExLDAsMCwwLDExNCwyNywwLDAsMCwxMjMsMCwwLAorICAgIDAsMTE1LDQsMCwwLDAsMCwxLDYsMSwxMjIsMjUsOTUsNjgsMTE3LDEwOSwKKyAgICAxMDksMTIxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0Niw5NSw5NSwxMDUsCisgICAgMTEwLDEwNSwxMTYsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwKKyAgICAwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMTgsMCwwLDAsMTI0LAorICAgIDAsNCwwLDEwNiwwLDEwMCwxLDU1LDAsMiwwLDk1LDAsMTAwLDIsODMsCisgICAgMCw0MSwzLDc4LDExNCwzMywwLDAsMCw4NCw0MSwxLDExNCwyNCwwLDAsCisgICAgMCw0MSwxLDExNCwyNiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCisgICAgMCwwLDExNCwxMSwwLDAsMCwxMTQsMzQsMCwwLDAsMTI3LDAsMCwwLAorICAgIDExNSw0LDAsMCwwLDAsMSwxNCwxLDEyMiwyNCw5NSw2OCwxMTcsMTA5LDEwOSwKKyAgICAxMjEsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LDk3LDk5LDExMywxMTcsCisgICAgMTA1LDExNCwxMDEsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsCisgICAgMywwLDAsMCw2NywwLDAsMCwxMTUsMzYsMCwwLDAsMTI0LDAsMTA2LAorICAgIDAsMTAwLDEsMTA3LDIsMTE0LDE4LDExNiwxLDEwMCwyLDEzMSwxLDEzMCwxLDEyNCwKKyAgICAwLDQsMCwxMDYsMCwxMDAsMyw1NiwwLDIsMCw5NSwwLDEwMCwwLDgzLAorICAgIDAsNDEsNCw3OCwxMTQsMTksMCwwLDAsMTIyLDMxLDk5LDk3LDExMCwxMTAsMTExLAorICAgIDExNiwzMiwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwzMiwxMTcsMTEwLDQ1LDk3LDk5LDExMywKKyAgICAxMTcsMTA1LDExNCwxMDEsMTAwLDMyLDEwOCwxMTEsOTksMTA3LDExNCwzMywwLDAsMCw0MSwKKyAgICAyLDExNCwyNCwwLDAsMCwxMTQsMzYsMCwwLDAsNDEsMSwxMTQsMjYsMCwKKyAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLAorICAgIDAsMTE0LDM1LDAsMCwwLDEzMSwwLDAsMCwxMTUsNiwwLDAsMCwwLAorICAgIDEsMTAsMSw4LDEsMTIyLDI0LDk1LDY4LDExNywxMDksMTA5LDEyMSw3NywxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsOTksCisgICAgMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsNCwwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsMTgsMCwwLDAsMTAwLDEsMTA2LDAsMTI0LDAsMTA2LAorICAgIDEsMTE2LDIsMTI0LDAsMTMxLDEsMTMxLDIsODMsMCw0MSwyLDc4LDEyMiwyOCwKICAgICA5NSw2OCwxMTcsMTA5LDEwOSwxMjEsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LAotICAgIDQ2LDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDk5LDEsMCwwLDAsMCwwLDAsCi0gICAgMCwxLDAsMCwwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDI1LDAsCi0gICAgMCwwLDEwMCwxLDAsMTA2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTE2LDIsCi0gICAgMCwxMjQsMCwwLDEzMSwxLDAsMTMxLDIsMCw4Myw0MSwyLDc4LDEyMiwyOCwKLSAgICA5NSw2OCwxMTcsMTA5LDEwOSwxMjEsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LAotICAgIDQwLDEyMywzMywxMTQsMTI1LDQxLDMyLDk3LDExNiwzMiwxMjMsMTI1LDQxLDMsMTE0LDUwLAotICAgIDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsNTEsMCwwLDAsNDEsMSwxMTQsCi0gICAgMTksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsCi0gICAgMCwwLDAsMTE0LDUyLDAsMCwwLDE1MywwLDAsMCwxMTUsMiwwLDAsCisgICAgNDAsMTIzLDMzLDExNCwxMjUsNDEsMzIsOTcsMTE2LDMyLDEyMywxMjUsNDEsMywxMTQsMzgsCisgICAgMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwzOSwwLDAsMCw0MSwxLDExNCwKKyAgICAyNiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwKKyAgICAwLDAsMCwxMTQsNDAsMCwwLDAsMTM2LDAsMCwwLDExNSwyLDAsMCwKICAgICAwLDAsMSwxMjIsMjUsOTUsNjgsMTE3LDEwOSwxMDksMTIxLDc3LDExMSwxMDAsMTE3LDEwOCwKICAgICAxMDEsNzYsMTExLDk5LDEwNyw0Niw5NSw5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsNzgsNDEsCiAgICAgOCwxMTQsMSwwLDAsMCwxMTQsMCwwLDAsMCwxMTQsMiwwLDAsMCwKLSAgICAxMTQsMywwLDAsMCwxMTQsMjAsMCwwLDAsMTE0LDQ2LDAsMCwwLDExNCwKLSAgICA0NywwLDAsMCwxMTQsNTIsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwKLSAgICAwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCw1MywwLAotICAgIDAsMCwxMzYsMCwwLDAsMTE1LDEwLDAsMCwwLDEyLDIsNiwyLDEyLAotICAgIDQsMTIsNCwxMiw1LDExNCw1MywwLDAsMCw5OSwwLDAsMCwwLDAsCisgICAgMTE0LDMsMCwwLDAsMTE0LDI3LDAsMCwwLDExNCwzNCwwLDAsMCwxMTQsCisgICAgMzUsMCwwLDAsMTE0LDQwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsCisgICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsNDEsMCwKKyAgICAwLDAsMTE5LDAsMCwwLDExNSwxMCwwLDAsMCw4LDIsNCwyLDgsCisgICAgNCw4LDQsOCw1LDExNCw0MSwwLDAsMCw5OSwwLDAsMCwwLDAsCiAgICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDY0LDAsMCwwLDExNSwKLSAgICA1MiwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwKLSAgICAxMDAsMSwwLDEwMCwyLDAsMTMyLDAsMCw5MCwzLDAsMTAwLDMsMCwxMDAsCi0gICAgNCwwLDEzMiwwLDAsOTAsNCwwLDEwMCw1LDAsMTAwLDYsMCwxMzIsMCwKLSAgICAwLDkwLDUsMCwxMDAsNywwLDgzLDQxLDgsMjE4LDE4LDk1LDc3LDExMSwxMDAsCisgICAgMzYsMCwwLDAsMTAxLDAsOTAsMSwxMDAsMCw5MCwyLDEwMCwxLDEwMCwyLAorICAgIDEzMiwwLDkwLDMsMTAwLDMsMTAwLDQsMTMyLDAsOTAsNCwxMDAsNSwxMDAsNiwKKyAgICAxMzIsMCw5MCw1LDEwMCw3LDgzLDAsNDEsOCwyMTgsMTgsOTUsNzcsMTExLDEwMCwKICAgICAxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDc3LDk3LDExMCw5NywxMDMsMTAxLDExNCw5OSwyLAogICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSwyMiwwLDAsMCwxMjQsMSwwLDEyNCwwLDAsOTUsMCwKLSAgICAwLDEwMCwwLDAsMTI0LDAsMCw5NSwxLDAsMTAwLDAsMCw4Myw0MSwxLAotICAgIDc4LDQxLDIsMTE0LDE4LDAsMCwwLDIxOCw1LDk1LDEwOCwxMTEsOTksMTA3LDQxLAotICAgIDIsMTE0LDE5LDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsMTAsMCwwLDAsCi0gICAgMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMjAsMCwwLDAsMTU5LAotICAgIDAsMCwwLDExNSw0LDAsMCwwLDAsMSw5LDEsMTIyLDI3LDk1LDc3LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw3Nyw5NywxMTAsOTcsMTAzLDEwMSwxMTQsCi0gICAgNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDEsMCwwLDAsMCwwLAotICAgIDAsMCwxLDAsMCwwLDEwLDAsMCwwLDY3LDAsMCwwLDExNSw1MywKLSAgICAwLDAsMCwxMjIsMjIsMCwxMTYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsCi0gICAgMSwwLDEyNCwwLDAsOTUsMiwwLDg3LDEwMCwwLDAsMTE2LDMsMCwxMDYsCi0gICAgNCwwLDEzMSwwLDAsMSw4OCwxMjQsMCwwLDEwNiwyLDAsMTA2LDUsMCwKLSAgICAxMzEsMCwwLDEsMTAwLDAsMCw4Myw0MSwxLDc4LDQxLDYsMjE4LDE2LDk1LAotICAgIDEwMywxMDEsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwOCwxMTEsOTksMTA3LDExNCwKLSAgICAxOCwwLDAsMCwxMTQsNTUsMCwwLDAsMjE4LDQsOTUsMTA1LDEwOSwxMTIsMjE4LAotICAgIDEyLDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDk1LDEwOCwxMTEsOTksMTA3LDExNCw0NiwwLAotICAgIDAsMCw0MSwxLDExNCwxOSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLAotICAgIDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMjMsMCwwLDAsMTYzLDAsMCwKLSAgICAwLDExNSw4LDAsMCwwLDAsMSwzLDEsMjIsMiwxMSwxLDEyMiwyOCwKLSAgICA5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNzcsOTcsMTEwLDk3LDEwMywKLSAgICAxMDEsMTE0LDQ2LDk1LDk1LDEwMSwxMTAsMTE2LDEwMSwxMTQsOTUsOTUsOTksMSwwLDAsCi0gICAgMCwwLDAsMCwwLDMsMCwwLDAsMSwwLDAsMCw3OSwwLDAsCi0gICAgMCwxMTUsMTcsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEwNiwxLDAsMTMxLAotICAgIDAsMCwxLDEwMCwwLDAsODMsNDEsMSw3OCw0MSwyLDExNCw1NSwwLDAsCi0gICAgMCwxMTQsNDcsMCwwLDAsNDEsMywxMTQsMTksMCwwLDAsMTE0LDI5LDAsCi0gICAgMCwwLDkwLDYsMTA3LDExOSw5NywxMTQsMTAzLDExNSwxMTQsMTAsMCwwLDAsMTE0LAotICAgIDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMzAsMCwwLDAsMTcwLDAsCi0gICAgMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjcsOTUsNzcsMTExLDEwMCwxMTcsCi0gICAgMTA4LDEwMSw3NiwxMTEsOTksMTA3LDc3LDk3LDExMCw5NywxMDMsMTAxLDExNCw0Niw5NSw5NSwKLSAgICAxMDEsMTIwLDEwNSwxMTYsOTUsOTUsNzgsNDEsNiwxMTQsMSwwLDAsMCwxMTQsMCwKLSAgICAwLDAsMCwxMTQsMiwwLDAsMCwxMTQsMjAsMCwwLDAsMTE0LDIzLDAsCi0gICAgMCwwLDExNCwzMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwKLSAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDU0LDAsMCwwLAotICAgIDE1NywwLDAsMCwxMTUsNiwwLDAsMCwxMiwyLDEyLDQsMTIsNywxMTQsCi0gICAgNTQsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDMsMCwwLAotICAgIDAsMTEsMCwwLDAsMywwLDAsMCwxMTUsMTM5LDAsMCwwLDEwMCwxLAotICAgIDAsMTI1LDEsMCwxMjEsMTcsMCwxMTYsMCwwLDEzNiwwLDAsMjUsMTMxLDAsCi0gICAgMCwxMjUsMSwwLDg3LDExMCwxOCwwLDQsMTE2LDEsMCwxMDcsMTAsMCwxMTQsCi0gICAgNDMsMCwxLDEsMSw4OSwxMTAsMSwwLDg4LDEyNCwxLDAsMTAwLDEsMCwKLSAgICAxMDcsOCwwLDExNCwxMzUsMCwxMTYsMiwwLDEwMCwxLDAsMTA3LDgsMCwxMTQsCi0gICAgODMsMCwxMTYsMywwLDEzNiwwLDAsMTMxLDEsMCwxMjUsMSwwLDExMCwxMiwKLSAgICAwLDExNiw0LDAsMTM2LDAsMCwxMzEsMSwwLDEyNSwxLDAsMTM1LDAsMCwKLSAgICAxMDIsMSwwLDEwMCwyLDAsMTAwLDMsMCwxMzQsMCwwLDEyNSwyLDAsMTE2LAotICAgIDUsMCwxMDYsNiwwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMiwwLDExNiwwLAotICAgIDAsMTM2LDAsMCw2MCwxMjQsMSwwLDgzLDQxLDQsMTIyLDEwOSw3MSwxMDEsMTE2LAotICAgIDMyLDExMSwxMTQsMzIsOTksMTE0LDEwMSw5NywxMTYsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwOCwxMTEsOTksMTA3LDMyLDEwMiwxMTEsMTE0LDMyLDk3LAotICAgIDMyLDEwMywxMDUsMTE4LDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LAotICAgIDEwOSwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODMsMTA0LDExMSwxMTcsMTA4LDEwMCwzMiwKLSAgICAxMTEsMTEwLDEwOCwxMjEsMzIsOTgsMTAxLDMyLDk5LDk3LDEwOCwxMDgsMTAxLDEwMCwzMiwxMTksCi0gICAgMTA1LDExNiwxMDQsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA4LAotICAgIDExMSw5OSwxMDcsMzIsMTE2LDk3LDEwNywxMDEsMTEwLDQ2LDc4LDk5LDEsMCwwLDAsCi0gICAgMCwwLDAsMCwxLDAsMCwwLDIsMCwwLDAsMTksMCwwLDAsCi0gICAgMTE1LDExLDAsMCwwLDExNiwwLDAsMTM2LDAsMCw2MSwxMDAsMCwwLDgzLAotICAgIDQxLDEsNzgsNDEsMSwyMTgsMTMsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTA4LAotICAgIDExMSw5OSwxMDcsMTE1LDQxLDEsMjE4LDEsOTUsNDEsMSwxMTQsMTUsMCwwLDAsCi0gICAgMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMiw5OSw5OCwxOTAsMCwKLSAgICAwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwyOCw5NSwxMDMsMTAxLDExNiw5NSwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDgsMTExLDk5LDEwNyw0Niw2MCwxMDgsMTExLDk5LAotICAgIDk3LDEwOCwxMTUsNjIsNDYsOTksOTgsNDEsNywxMTQsNTksMCwwLDAsMTE0LDI4LAotICAgIDAsMCwwLDExNCwzNCwwLDAsMCwxMTQsNTMsMCwwLDAsMTE0LDMyLDAsCi0gICAgMCwwLDIxOCw4LDk1LDExOSwxMDEsOTcsMTA3LDExNCwxMDEsMTAyLDkwLDMsMTE0LDEwMSwKLSAgICAxMDIsNDEsMywxMTQsMTUsMCwwLDAsMTE0LDM1LDAsMCwwLDExNCw2MSwwLAotICAgIDAsMCwxMTQsMTAsMCwwLDAsNDEsMSwxMTQsMTUsMCwwLDAsMTE0LDExLAotICAgIDAsMCwwLDExNCw1NiwwLDAsMCwxNzYsMCwwLDAsMTE1LDI0LDAsMCwKLSAgICAwLDAsNCw2LDEsMywxLDE3LDEsMTMsMSw1LDEsMTIsMSwxMiwKLSAgICAxLDE1LDIsMTIsMSwxOCwyLDIyLDEsMTE0LDU2LDAsMCwwLDk5LDEsCi0gICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDExLDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSw3MSwwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTMxLDEsCi0gICAgMCwxMjUsMSwwLDExNiwxLDAsMTA2LDIsMCwxMzEsMCwwLDEsMTIxLDE0LAotICAgIDAsMTI0LDEsMCwxMDYsMywwLDEzMSwwLDAsMSw4NywxMTAsMTgsMCw0LAotICAgIDExNiw0LDAsMTA3LDEwLDAsMTE0LDU2LDAsMSwxLDEsODksMTEwLDExLDAsCi0gICAgODgsMTI0LDEsMCwxMDYsNSwwLDEzMSwwLDAsMSwxMDAsMSwwLDgzLDQxLAotICAgIDIsOTcsMjEsMSwwLDAsODIsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwzMiwxMTYsMTA0LAotICAgIDEwMSwzMiwxMDMsMTA4LDExMSw5OCw5NywxMDgsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsCi0gICAgMTA4LDExMSw5OSwxMDcsNDQsMzIsOTcsMTEwLDEwMCwzMiw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsCi0gICAgMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsMzIsCi0gICAgMTE2LDEwNCwxMDEsMTAsMzIsMzIsMzIsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA4LAorICAgIDAsMCwwLDExNSwxNiwwLDAsMCwxMjQsMSwxMjQsMCw5NSwwLDEwMCwwLAorICAgIDEyNCwwLDk1LDEsMTAwLDAsODMsMCw0MSwxLDc4LDQxLDIsMjE4LDUsOTUsCisgICAgMTEwLDk3LDEwOSwxMDEsMjE4LDUsOTUsMTA4LDExMSw5OSwxMDcsNDEsMiwxMTQsMjYsMCwKKyAgICAwLDAsMTE0LDE1LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLAorICAgIDAsMTE0LDExLDAsMCwwLDExNCwyNywwLDAsMCwxNDIsMCwwLDAsMTE1LAorICAgIDQsMCwwLDAsMCwxLDYsMSwxMjIsMjcsOTUsNzcsMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw3NiwxMTEsOTksMTA3LDc3LDk3LDExMCw5NywxMDMsMTAxLDExNCw0Niw5NSw5NSwxMDUsCisgICAgMTEwLDEwNSwxMTYsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwKKyAgICAwLDAsMTAsMCwwLDAsNjcsMCwwLDAsMTE1LDQyLDAsMCwwLDEyMiwKKyAgICAxNiwxMTYsMCwxMjQsMCwxMDYsMSwxMzEsMSwxMjQsMCw5NSwyLDg3LDAsMTAwLAorICAgIDAsMTE2LDMsMTA2LDQsMTMxLDAsMSwwLDg4LDAsMTI0LDAsMTA2LDIsMTA2LAorICAgIDUsMTMxLDAsMSwwLDEwMCwwLDgzLDAsNDEsMSw3OCw0MSw2LDIxOCwxNiwKKyAgICA5NSwxMDMsMTAxLDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDgsMTExLDk5LDEwNywKKyAgICAxMTQsNDMsMCwwLDAsMTE0LDQ0LDAsMCwwLDIxOCw0LDk1LDEwNSwxMDksMTEyLAorICAgIDIxOCwxMiwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSw5NSwxMDgsMTExLDk5LDEwNywxMTQsMzQsCisgICAgMCwwLDAsNDEsMSwxMTQsMjYsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDksOTUsOTUsMTAxLDExMCwxMTYsCisgICAgMTAxLDExNCw5NSw5NSwxNDYsMCwwLDAsMTE1LDgsMCwwLDAsMCwxLDIsCisgICAgMSwxNiwyLDEwLDEsMTIyLDI4LDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLAorICAgIDk5LDEwNyw3Nyw5NywxMTAsOTcsMTAzLDEwMSwxMTQsNDYsOTUsOTUsMTAxLDExMCwxMTYsMTAxLAorICAgIDExNCw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwKKyAgICAxLDAsMCwwLDc5LDAsMCwwLDExNSwxNCwwLDAsMCwxMjQsMCwxMDYsCisgICAgMCwxMDYsMSwxMzEsMCwxLDAsMTAwLDAsODMsMCw0MSwxLDc4LDQxLDIsCisgICAgMTE0LDQ0LDAsMCwwLDExNCwzNSwwLDAsMCw0MSwzLDExNCwyNiwwLDAsCisgICAgMCwyMTgsNCw5NywxMTQsMTAzLDExNSw5MCw2LDEwNywxMTksOTcsMTE0LDEwMywxMTUsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDgsCisgICAgOTUsOTUsMTAxLDEyMCwxMDUsMTE2LDk1LDk1LDE1MywwLDAsMCwxMTUsMiwwLDAsCisgICAgMCwwLDEsMTIyLDI3LDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNywKKyAgICA3Nyw5NywxMTAsOTcsMTAzLDEwMSwxMTQsNDYsOTUsOTUsMTAxLDEyMCwxMDUsMTE2LDk1LDk1LAorICAgIDc4LDQxLDYsMTE0LDEsMCwwLDAsMTE0LDAsMCwwLDAsMTE0LDIsMCwKKyAgICAwLDAsMTE0LDI3LDAsMCwwLDExNCw0OCwwLDAsMCwxMTQsNTAsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsCisgICAgMTE0LDExLDAsMCwwLDExNCw0MiwwLDAsMCwxNDAsMCwwLDAsMTE1LDYsCisgICAgMCwwLDAsOCwyLDgsNCw4LDcsMTE0LDQyLDAsMCwwLDk5LDEsCisgICAgMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDExLDAsMCwwLDMsCisgICAgMCwwLDAsMTE1LDEwNiwwLDAsMCwxMDAsMSwxMjUsMSwxMjEsMTQsMTE2LDAsCisgICAgMTM2LDAsMjUsMCwxMzEsMCwxMjUsMSw4NywwLDExMCwyMCw0LDAsMTE2LDEsCisgICAgMTA3LDEwLDExNCwzOCwxLDAsMSwwLDEsMCw4OSwwLDExMCwyLDg4LDAsCisgICAgMTI0LDEsMTAwLDEsMTA3LDgsMTE0LDEwMiwxMTYsMiwxMDAsMSwxMDcsOCwxMTQsNjYsCisgICAgMTE2LDMsMTM2LDAsMTMxLDEsMTI1LDEsMTEwLDgsMTE2LDQsMTM2LDAsMTMxLDEsCisgICAgMTI1LDEsMTM1LDAsMTAyLDEsMTAwLDIsMTAwLDMsMTMyLDgsMTI1LDIsMTE2LDUsCisgICAgMTA2LDYsMTI0LDEsMTI0LDIsMTMxLDIsMTE2LDAsMTM2LDAsNjAsMCwxMjQsMSwKKyAgICA4MywwLDQxLDQsMTIyLDEwOSw3MSwxMDEsMTE2LDMyLDExMSwxMTQsMzIsOTksMTE0LDEwMSwKKyAgICA5NywxMTYsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwOCwKICAgICAxMTEsOTksMTA3LDMyLDEwMiwxMTEsMTE0LDMyLDk3LDMyLDEwMywxMDUsMTE4LDEwMSwxMTAsMzIsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsNDYsMTAsMzIsMzIsMzIsCi0gICAgMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA1LDExNSwzMiwxMTcsMTE1LDEwMSwxMDAsMzIsMTE2LDExMSwKLSAgICAzMiwxMDEsMTEwLDExNSwxMTcsMTE0LDEwMSwzMiw5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICAzMiwxMDUsMTE1LDMyLDk5LDExMSwxMDksMTEyLDEwOCwxMDEsMTE2LDEwMSwxMDgsMTIxLDMyLDEwNSwKLSAgICAxMTAsMTA1LDExNiwxMDUsOTcsMTA4LDEwNSwxMjIsMTAxLDEwMCw0NCwzMiwxMDUsMTEwLDMyLDExNiwKLSAgICAxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDEwMSwxMTgsMTAxLDExMCwxMTYsMzIsMTA1LDExNiwzMiwKLSAgICAxMDUsMTE1LDMyLDk4LDEwMSwxMDUsMTEwLDEwMywzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsCi0gICAgMTAwLDMyLDk4LDEyMSwzMiw5NywxMTAsMTExLDExNiwxMDQsMTAxLDExNCwzMiwxMTYsMTA0LDExNCwKLSAgICAxMDEsOTcsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDgzLDEwNCwxMTEsMTE3LDEwOCwxMDAsCi0gICAgMzIsMTExLDExMCwxMDgsMTIxLDMyLDk4LDEwMSwzMiw5OSw5NywxMDgsMTA4LDEwMSwxMDAsMzIsCi0gICAgMTE5LDEwNSwxMTYsMTA0LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLAotICAgIDEwOCwxMTEsOTksMTA3LDMyLDExNiw5NywxMDcsMTAxLDExMCw0Niw3OCw0MSw2LDExNCw1NiwKLSAgICAwLDAsMCwxMTQsNTcsMCwwLDAsMTE0LDU4LDAsMCwwLDExNCw0NiwwLAotICAgIDAsMCwxMTQsMzEsMCwwLDAsMTE0LDQ3LDAsMCwwLDQxLDIsMTE0LDE1LAotICAgIDAsMCwwLDExNCwzNSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCi0gICAgMCwwLDExNCwxMSwwLDAsMCwyMTgsMTksOTUsMTA4LDExMSw5OSwxMDcsOTUsMTE3LAotICAgIDExMCwxMDgsMTExLDk5LDEwNyw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxOTUsMCwwLDAsCi0gICAgMTE1LDE0LDAsMCwwLDAsNywxMiwxLDEwLDEsMywxLDE0LDEsMTMsCi0gICAgMyw1LDIsMTE0LDYzLDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsCi0gICAgMCwzLDAsMCwwLDMsMCwwLDAsNzksMCwwLDAsMTE1LDEzLDAsCi0gICAgMCwwLDEyNCwwLDAsMTI0LDEsMCwxMjQsMiwwLDE0MiwwLDAsODMsNDEsCi0gICAgMSw5Nyw0NiwxLDAsMCwxMTQsMTAxLDEwOSwxMTEsMTE4LDEwMSw5NSwxMDUsMTA5LDExMiwKLSAgICAxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDk1LDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsMzIsMTA1LDExMCwKLSAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0Niw5OSwzMiwxMTksMTA1LDEwOCwxMDgsMzIsOTcsCi0gICAgMTA4LDExOSw5NywxMjEsMTE1LDMyLDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLDMyLDExNSwxMDEsMTEzLAotICAgIDExNywxMDEsMTEwLDk5LDEwMSwxMTUsMTAsMzIsMzIsMzIsMzIsMTExLDEwMiwzMiwxMDUsMTA5LAotICAgIDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDMyLDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsMzIsMTE2LAotICAgIDEwNCw5NywxMTYsMzIsMTAxLDExMCwxMDAsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDk3LDMyLDk5LAotICAgIDk3LDEwOCwxMDgsMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTAyLDExNywxMTAsOTksCi0gICAgMTE2LDEwNSwxMTEsMTEwLDEwLDEwLDMyLDMyLDMyLDMyLDg1LDExNSwxMDEsMzIsMTA1LDExNiwKLSAgICAzMiwxMDUsMTEwLDExNSwxMTYsMTAxLDk3LDEwMCwzMiwxMTEsMTAyLDMyLDk3LDMyLDExMCwxMTEsCi0gICAgMTE0LDEwOSw5NywxMDgsMzIsOTksOTcsMTA4LDEwOCwzMiwxMDUsMTEwLDMyLDExMiwxMDgsOTcsCi0gICAgOTksMTAxLDExNSwzMiwxMTksMTA0LDEwMSwxMTQsMTAxLDMyLDEwNSwxMTAsOTksMTA4LDExNywxMDAsCi0gICAgMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSwKLSAgICA5OCwxMCwzMiwzMiwzMiwzMiwxMDIsMTE0LDk3LDEwOSwxMDEsMTE1LDMyLDEwNSwxMTAsMTE2LAotICAgIDExNCwxMTEsMTAwLDExNyw5OSwxMDEsMTE1LDMyLDExNywxMTAsMTE5LDk3LDExMCwxMTYsMTAxLDEwMCwKLSAgICAzMiwxMTAsMTExLDEwNSwxMTUsMTAxLDMyLDEwNSwxMTAsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICAxMTYsMTE0LDk3LDk5LDEwMSw5OCw5Nyw5OSwxMDcsMzIsNDAsMTAxLDQ2LDEwMyw0NiwzMiwKLSAgICAxMTksMTA0LDEwMSwxMTAsMzIsMTAxLDEyMCwxMDEsOTksMTE3LDExNiwxMDUsMTEwLDEwMywxMCwzMiwKLSAgICAzMiwzMiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSw0MSwxMCwKLSAgICAzMiwzMiwzMiwzMiwxMTQsMTAsMCwwLDAsNDEsMywyMTgsMSwxMDIsMTE0LDI5LAotICAgIDAsMCwwLDkwLDQsMTA3LDExOSwxMDAsMTE1LDExNCwxMCwwLDAsMCwxMTQsMTAsCi0gICAgMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwyNSw5NSw5OSw5NywxMDgsMTA4LDk1LAotICAgIDExOSwxMDUsMTE2LDEwNCw5NSwxMDIsMTE0LDk3LDEwOSwxMDEsMTE1LDk1LDExNCwxMDEsMTA5LDExMSwKLSAgICAxMTgsMTAxLDEwMCwyMTQsMCwwLDAsMTE1LDIsMCwwLDAsMCw4LDExNCw2NSwKLSAgICAwLDAsMCwyMTgsOSwxMTgsMTAxLDExNCw5OCwxMTEsMTE1LDEwNSwxMTYsMTIxLDExNCw0NSwKLSAgICAwLDAsMCw5OSwxLDAsMCwwLDEsMCwwLDAsMywwLDAsMCwKLSAgICA0LDAsMCwwLDcxLDAsMCwwLDExNSw3NSwwLDAsMCwxMTYsMCwwLAotICAgIDEwNiwxLDAsMTA2LDIsMCwxMjQsMSwwLDEwNyw1LDAsMTE0LDcxLDAsMTI0LAotICAgIDAsMCwxMDYsMywwLDEwMCw2LDAsMTMxLDEsMCwxMTUsNDMsMCwxMDAsMywKLSAgICAwLDEyNCwwLDAsMjMsMTI1LDAsMCwxMTYsNCwwLDEyNCwwLDAsMTA2LDUsCi0gICAgMCwxMjQsMiwwLDE0MCwwLDAsMTAwLDQsMCwxMTYsMCwwLDEwNiw2LDAsCi0gICAgMTMxLDEsMSwxLDEwMCw1LDAsODMsNDEsNywxMjIsNjEsODAsMTE0LDEwNSwxMTAsCi0gICAgMTE2LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLDMyLDExNiwxMTEsCi0gICAgMzIsMTE1LDExNiwxMDAsMTAxLDExNCwxMTQsMzIsMTA1LDEwMiwzMiw0NSwxMTgsNDcsODAsODksCi0gICAgODQsNzIsNzksNzgsODYsNjksODIsNjYsNzksODMsNjksMzIsMTA1LDExNSwzMiwxMTYsCi0gICAgMTE3LDExNCwxMTAsMTAxLDEwMCwzMiwxMTEsMTEwLDQ2LDI1MCwxLDM1LDI1MCw3LDEwNSwxMDksCi0gICAgMTEyLDExMSwxMTQsMTE2LDMyLDEyMiwyLDM1LDMyLDkwLDQsMTAyLDEwNSwxMDgsMTAxLDc4LAotICAgIDQxLDIsMTE0LDY3LDAsMCwwLDExNCw2OCwwLDAsMCw0MSw3LDExNCwxNCwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSw0NiwxMCwxMCwzMiwzMiwKKyAgICAzMiwzMiw4MywxMDQsMTExLDExNywxMDgsMTAwLDMyLDExMSwxMTAsMTA4LDEyMSwzMiw5OCwxMDEsCisgICAgMzIsOTksOTcsMTA4LDEwOCwxMDEsMTAwLDMyLDExOSwxMDUsMTE2LDEwNCwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNywzMiwxMTYsOTcsMTA3LAorICAgIDEwMSwxMTAsNDYsNzgsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLAorICAgIDAsMiwwLDAsMCwxOSwwLDAsMCwxMTUsMTAsMCwwLDAsMTE2LDAsCisgICAgMTM2LDAsNjEsMCwxMDAsMCw4MywwLDQxLDEsNzgsNDEsMSwyMTgsMTMsOTUsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTA4LDExMSw5OSwxMDcsMTE1LDQxLDEsMjE4LDEsCisgICAgOTUsNDEsMSwxMTQsMTUsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLAorICAgIDAsMCwyMTgsMiw5OSw5OCwxNzMsMCwwLDAsMTE1LDIsMCwwLDAsMCwKKyAgICAxLDEyMiwyOCw5NSwxMDMsMTAxLDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDgsCisgICAgMTExLDk5LDEwNyw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsOTksOTgsNDEsCisgICAgNywxMTQsNTEsMCwwLDAsMjE4LDgsNzUsMTAxLDEyMSw2OSwxMTQsMTE0LDExMSwxMTQsCisgICAgMTE0LDIwLDAsMCwwLDExNCw0MSwwLDAsMCwxMTQsMTgsMCwwLDAsMjE4LAorICAgIDgsOTUsMTE5LDEwMSw5NywxMDcsMTE0LDEwMSwxMDIsOTAsMywxMTQsMTAxLDEwMiw0MSwzLAorICAgIDExNCwxNSwwLDAsMCwxMTQsMjEsMCwwLDAsMTE0LDUzLDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCw0MSwxLDExNCwxNSwwLDAsMCwxMTQsMTEsMCwwLDAsCisgICAgMTE0LDQ1LDAsMCwwLDE1OSwwLDAsMCwxMTUsMjQsMCwwLDAsMCw0LAorICAgIDQsMSwyLDEsMTQsMSwxNCwxLDYsMSw4LDEsOCwxLDEwLDIsCisgICAgOCwxLDEyLDIsMTYsMSwxMTQsNDUsMCwwLDAsOTksMSwwLDAsMCwKKyAgICAwLDAsMCwwLDIsMCwwLDAsMTEsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDYyLDAsMCwwLDExNiwwLDEyNCwwLDEzMSwxLDEyNSwxLDExNiwxLDEwNiwKKyAgICAyLDEzMSwwLDEsMCwxMjEsMTIsMTI0LDEsMTA2LDMsMTMxLDAsMSwwLDg3LAorICAgIDAsMTEwLDIwLDQsMCwxMTYsNCwxMDcsMTAsMTE0LDQ4LDEsMCwxLDAsMSwKKyAgICAwLDg5LDAsMTEwLDEwLDg4LDAsMTI0LDEsMTA2LDUsMTMxLDAsMSwwLDEwMCwKKyAgICAxLDgzLDAsNDEsMiw5NywyMSwxLDAsMCw4MiwxMDEsMTA4LDEwMSw5NywxMTUsCisgICAgMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwMywxMDgsMTExLDk4LDk3LDEwOCwzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNyw0NCwzMiw5NywxMTAsMTAwLDMyLDk3LDk5LAorICAgIDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDExMCwzMiwxMTQsMTAxLDEwOCwxMDEsCisgICAgOTcsMTE1LDEwMSwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwzMiwxMDgsMTExLDk5LDEwNywzMiwxMDIsMTExLDExNCwzMiw5NywzMiwxMDMsMTA1LAorICAgIDExOCwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDQ2LAorICAgIDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwNSwxMTUsMzIsMTE3LDExNSwxMDEsCisgICAgMTAwLDMyLDExNiwxMTEsMzIsMTAxLDExMCwxMTUsMTE3LDExNCwxMDEsMzIsOTcsMzIsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw5OSwxMTEsMTA5LDExMiwxMDgsMTAxLDExNiwxMDEsCisgICAgMTA4LDEyMSwzMiwxMDUsMTEwLDEwNSwxMTYsMTA1LDk3LDEwOCwxMDUsMTIyLDEwMSwxMDAsNDQsMzIsCisgICAgMTA1LDExMCwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwxMDEsMTE4LDEwMSwxMTAsMTE2LAorICAgIDMyLDEwNSwxMTYsMzIsMTA1LDExNSwzMiw5OCwxMDEsMTA1LDExMCwxMDMsMzIsMTA1LDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsMTAxLDEwMCwzMiw5OCwxMjEsMzIsOTcsMTEwLDExMSwxMTYsMTA0LDEwMSwxMTQsCisgICAgMzIsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4MywxMDQsCisgICAgMTExLDExNywxMDgsMTAwLDMyLDExMSwxMTAsMTA4LDEyMSwzMiw5OCwxMDEsMzIsOTksOTcsMTA4LAorICAgIDEwOCwxMDEsMTAwLDMyLDExOSwxMDUsMTE2LDEwNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNywzMiwxMTYsOTcsMTA3LDEwMSwxMTAsNDYsNzgsCisgICAgNDEsNiwxMTQsNDUsMCwwLDAsMTE0LDQ2LDAsMCwwLDExNCw0NywwLDAsCisgICAgMCwxMTQsMzQsMCwwLDAsMTE0LDE3LDAsMCwwLDExNCwzNSwwLDAsMCwKKyAgICA0MSwyLDExNCwxNSwwLDAsMCwxMTQsMjEsMCwwLDAsMTE0LDEwLDAsMCwKKyAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE5LDk1LDEwOCwxMTEsCisgICAgOTksMTA3LDk1LDExNywxMTAsMTA4LDExMSw5OSwxMDcsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgMTc4LDAsMCwwLDExNSwxNCwwLDAsMCwwLDcsOCwxLDgsMSwyLAorICAgIDEsMTIsMSwxNCwzLDYsMiwxMTQsNTYsMCwwLDAsOTksMSwwLDAsCisgICAgMCwwLDAsMCwwLDMsMCwwLDAsMywwLDAsMCw3OSwwLDAsCisgICAgMCwxMTUsMTAsMCwwLDAsMTI0LDAsMTI0LDEsMTI0LDIsMTQyLDEsODMsMCwKKyAgICA0MSwxLDk3LDQ2LDEsMCwwLDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLDk1LDEwNSwxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsOTUsMTAyLDExNCw5NywxMDksMTAxLDExNSwzMiwxMDUsCisgICAgMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDQ2LDk5LDMyLDExOSwxMDUsMTA4LDEwOCwzMiwKKyAgICA5NywxMDgsMTE5LDk3LDEyMSwxMTUsMzIsMTE0LDEwMSwxMDksMTExLDExOCwxMDEsMzIsMTE1LDEwMSwKKyAgICAxMTMsMTE3LDEwMSwxMTAsOTksMTAxLDExNSwxMCwzMiwzMiwzMiwzMiwxMTEsMTAyLDMyLDEwNSwKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsMzIsMTAyLDExNCw5NywxMDksMTAxLDExNSwzMiwKKyAgICAxMTYsMTA0LDk3LDExNiwzMiwxMDEsMTEwLDEwMCwzMiwxMTksMTA1LDExNiwxMDQsMzIsOTcsMzIsCisgICAgOTksOTcsMTA4LDEwOCwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDIsMTE3LDExMCwKKyAgICA5OSwxMTYsMTA1LDExMSwxMTAsMTAsMTAsMzIsMzIsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDUsCisgICAgMTE2LDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsMTAwLDMyLDExMSwxMDIsMzIsOTcsMzIsMTEwLAorICAgIDExMSwxMTQsMTA5LDk3LDEwOCwzMiw5OSw5NywxMDgsMTA4LDMyLDEwNSwxMTAsMzIsMTEyLDEwOCwKKyAgICA5Nyw5OSwxMDEsMTE1LDMyLDExOSwxMDQsMTAxLDExNCwxMDEsMzIsMTA1LDExMCw5OSwxMDgsMTE3LAorICAgIDEwMCwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsCisgICAgMTA1LDk4LDEwLDMyLDMyLDMyLDMyLDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsMzIsMTA1LDExMCwKKyAgICAxMTYsMTE0LDExMSwxMDAsMTE3LDk5LDEwMSwxMTUsMzIsMTE3LDExMCwxMTksOTcsMTEwLDExNiwxMDEsCisgICAgMTAwLDMyLDExMCwxMTEsMTA1LDExNSwxMDEsMzIsMTA1LDExMCwxMTYsMTExLDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDExNiwxMTQsOTcsOTksMTAxLDk4LDk3LDk5LDEwNywzMiw0MCwxMDEsNDYsMTAzLDQ2LAorICAgIDMyLDExOSwxMDQsMTAxLDExMCwzMiwxMDEsMTIwLDEwMSw5OSwxMTcsMTE2LDEwNSwxMTAsMTAzLDEwLAorICAgIDMyLDMyLDMyLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk5LDExMSwxMDAsMTAxLDQxLAorICAgIDEwLDMyLDMyLDMyLDMyLDExNCwxMCwwLDAsMCw0MSwzLDIxOCwxLDEwMiwxMTQsCisgICAgNDksMCwwLDAsOTAsNCwxMDcsMTE5LDEwMCwxMTUsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDI1LDk1LDk5LDk3LDEwOCwxMDgsCisgICAgOTUsMTE5LDEwNSwxMTYsMTA0LDk1LDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsOTUsMTE0LDEwMSwxMDksCisgICAgMTExLDExOCwxMDEsMTAwLDE5NywwLDAsMCwxMTUsMiwwLDAsMCwwLDgsMTE0LAorICAgIDU4LDAsMCwwLDExNCwzMywwLDAsMCw0MSwxLDIxOCw5LDExOCwxMDEsMTE0LAorICAgIDk4LDExMSwxMTUsMTA1LDExNiwxMjEsOTksMSwwLDAsMCwxLDAsMCwwLDMsCisgICAgMCwwLDAsNSwwLDAsMCw3MSwwLDAsMCwxMTUsNTQsMCwwLDAsCisgICAgMTE2LDAsMTA2LDEsMTA2LDIsMTI0LDEsMTA3LDUsMTE0LDUwLDEyNCwwLDEwNiwzLAorICAgIDEwMCw2LDEzMSwxLDExNSwzMCwxMDAsMywxMjQsMCwyMywwLDEyNSwwLDExNiw0LAorICAgIDEyNCwwLDEwNiw1LDEyNCwyLDE0MiwwLDExNiwwLDEwNiw2LDEwMCw0LDE0MSwyLAorICAgIDEsMCwxMDAsNSw4MywwLDQxLDcsMTIyLDYxLDgwLDExNCwxMDUsMTEwLDExNiwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwzMiwxMTYsMTExLDMyLDExNSwKKyAgICAxMTYsMTAwLDEwMSwxMTQsMTE0LDMyLDEwNSwxMDIsMzIsNDUsMTE4LDQ3LDgwLDg5LDg0LDcyLAorICAgIDc5LDc4LDg2LDY5LDgyLDY2LDc5LDgzLDY5LDMyLDEwNSwxMTUsMzIsMTE2LDExNywxMTQsCisgICAgMTEwLDEwMSwxMDAsMzIsMTExLDExMCw0NiwyNTAsMSwzNSwyNTAsNywxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwzMiwxMjIsMiwzNSwzMiw0MSwxLDkwLDQsMTAyLDEwNSwxMDgsMTAxLDc4LAorICAgIDQxLDIsMTE0LDYwLDAsMCwwLDExNCw2MSwwLDAsMCw0MSw3LDExNCwxNCwKICAgICAwLDAsMCwyMTgsNSwxMDIsMTA4LDk3LDEwMywxMTUsMjE4LDcsMTE4LDEwMSwxMTQsOTgsCiAgICAgMTExLDExNSwxMDEsMjE4LDEwLDExNSwxMTYsOTcsMTE0LDExNiwxMTUsMTE5LDEwNSwxMTYsMTA0LDIxOCwKLSAgICA1LDExMiwxMTQsMTA1LDExMCwxMTYsMTE0LDUwLDAsMCwwLDIxOCw2LDExNSwxMTYsMTAwLAotICAgIDEwMSwxMTQsMTE0LDQxLDMsMjE4LDcsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsMTE0LDY2LAotICAgIDAsMCwwLDExNCwyOSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCisgICAgNSwxMTIsMTE0LDEwNSwxMTAsMTE2LDExNCwzOCwwLDAsMCwyMTgsNiwxMTUsMTE2LDEwMCwKKyAgICAxMDEsMTE0LDExNCw0MSwzLDIxOCw3LDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLDExNCw1OSwKKyAgICAwLDAsMCwxMTQsNDksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAogICAgIDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE2LDk1LDExOCwxMDEsMTE0LDk4LDExMSwxMTUsCi0gICAgMTAxLDk1LDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLDIyNSwwLDAsMCwxMTUsOCwwLAotICAgIDAsMCwwLDIsMTgsMSwxNSwxLDEwLDEsMTE0LDc1LDAsMCwwLDk5LAorICAgIDEwMSw5NSwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwyMDgsMCwwLDAsMTE1LDgsMCwKKyAgICAwLDAsMCwyLDEyLDEsMTAsMSw4LDEsMTE0LDY4LDAsMCwwLDk5LAogICAgIDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsMCwwLDAsCi0gICAgMywwLDAsMCwxMTUsMzUsMCwwLDAsMTM1LDAsMCwxMDIsMSwwLDEwMCwKLSAgICAxLDAsMTAwLDIsMCwxMzQsMCwwLDEyNSwxLDAsMTE2LDAsMCwxMjQsMSwKLSAgICAwLDEzNiwwLDAsMTMxLDIsMCwxLDEyNCwxLDAsODMsNDEsMywxMjIsNDksCi0gICAgNjgsMTAxLDk5LDExMSwxMTQsOTcsMTE2LDExMSwxMTQsMzIsMTE2LDExMSwzMiwxMTgsMTAxLDExNCwKLSAgICAxMDUsMTAyLDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMDAsMzIsMTA5LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwKLSAgICA0Niw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw0LDAsCi0gICAgMCwwLDE5LDAsMCwwLDExNSw1NSwwLDAsMCwxMjQsMSwwLDExNiwwLAotICAgIDAsMTA2LDEsMCwxMDcsNywwLDExNCw0MiwwLDExNiwyLDAsMTAwLDEsMCwKLSAgICAxMDYsMywwLDEyNCwxLDAsMTMxLDEsMCwxMDAsMiwwLDEyNCwxLDAsMTMxLAotICAgIDEsMSwxMzAsMSwwLDEzNiwwLDAsMTI0LDAsMCwxMjQsMSwwLDEzMSwyLAotICAgIDAsODMsNDEsMyw3OCwxMjIsMjksMTIzLDMzLDExNCwxMjUsMzIsMTA1LDExNSwzMiwxMTAsCi0gICAgMTExLDExNiwzMiw5NywzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSwxMTQsMTUsMCwwLDAsNDEsNCwxMTQsMTQsMCwwLDAsCi0gICAgMjE4LDIwLDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDk1LDExMCw5NywxMDksMTAxLDExNSwyMTgsMTEsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw2OSwxMTQsCi0gICAgMTE0LDExMSwxMTQsMTE0LDUwLDAsMCwwLDQxLDIsMTE0LDE5LDAsMCwwLDIxOCwKLSAgICA4LDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSw0MSwxLDIxOCwzLDEwMiwxMjAsMTEwLAotICAgIDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDI1LDk1LDExNCwxMDEsMTEzLAotICAgIDExNywxMDUsMTE0LDEwMSwxMTUsOTUsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsOTUsMTE5LDExNCwKLSAgICA5NywxMTIsMTEyLDEwMSwxMTQsMjM1LDAsMCwwLDExNSw4LDAsMCwwLDAsMSwKLSAgICAxNSwxLDE4LDEsOSwxLDEyMiw1Miw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsCi0gICAgMTE1LDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LAotICAgIDExNSw2Miw0Niw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDk4LDExNywxMDUsCi0gICAgMTA4LDExNiwxMDUsMTEwLDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDQxLDEsMTE0LDEyLAotICAgIDAsMCwwLDQxLDIsMTE0LDc5LDAsMCwwLDExNCw4MCwwLDAsMCwxMTQsCi0gICAgMTAsMCwwLDAsNDEsMSwxMTQsNzksMCwwLDAsMTE0LDExLDAsMCwwLAotICAgIDIxOCwxNyw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDk4LDExNywxMDUsMTA4LAotICAgIDExNiwxMDUsMTEwLDIzMywwLDAsMCwxMTUsNiwwLDAsMCwwLDIsMTgsNSwKLSAgICAxMywxLDExNCw4MSwwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsCi0gICAgMiwwLDAsMCwzLDAsMCwwLDMsMCwwLDAsMTE1LDM1LDAsMCwKLSAgICAwLDEzNSwwLDAsMTAyLDEsMCwxMDAsMSwwLDEwMCwyLDAsMTM0LDAsMCwKLSAgICAxMjUsMSwwLDExNiwwLDAsMTI0LDEsMCwxMzYsMCwwLDEzMSwyLDAsMSwKLSAgICAxMjQsMSwwLDgzLDQxLDMsMTIyLDQ3LDY4LDEwMSw5OSwxMTEsMTE0LDk3LDExNiwxMTEsCi0gICAgMTE0LDMyLDExNiwxMTEsMzIsMTE4LDEwMSwxMTQsMTA1LDEwMiwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgMTEwLDk3LDEwOSwxMDEsMTAwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsCi0gICAgMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsNDYsOTksMiwwLDAsMCwwLDAsMCwwLAotICAgIDIsMCwwLDAsNCwwLDAsMCwxOSwwLDAsMCwxMTUsNTUsMCwwLAotICAgIDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwxLDAsMTMxLDEsMCwxMTUsNDIsMCwKLSAgICAxMTYsMiwwLDEwMCwxLDAsMTA2LDMsMCwxMjQsMSwwLDEzMSwxLDAsMTAwLAotICAgIDIsMCwxMjQsMSwwLDEzMSwxLDEsMTMwLDEsMCwxMzYsMCwwLDEyNCwwLAotICAgIDAsMTI0LDEsMCwxMzEsMiwwLDgzLDQxLDMsNzgsMTIyLDI3LDEyMywzMywxMTQsCi0gICAgMTI1LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwKLSAgICAxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE0LDE1LDAsMCwwLDQxLDQsMTE0LAotICAgIDU3LDAsMCwwLDIxOCw5LDEwNSwxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMTE0LAotICAgIDc3LDAsMCwwLDExNCw1MCwwLDAsMCw0MSwyLDExNCwxOSwwLDAsMCwKLSAgICAxMTQsNzgsMCwwLDAsNDEsMSwxMTQsNzksMCwwLDAsMTE0LDEwLDAsMCwKKyAgICAzLDAsMCwwLDExNSwyNiwwLDAsMCwxMzUsMCwxMDIsMSwxMDAsMSwxMDAsCisgICAgMiwxMzIsOCwxMjUsMSwxMTYsMCwxMjQsMSwxMzYsMCwxMzEsMiwxLDAsMTI0LAorICAgIDEsODMsMCw0MSwzLDEyMiw0OSw2OCwxMDEsOTksMTExLDExNCw5NywxMTYsMTExLDExNCwKKyAgICAzMiwxMTYsMTExLDMyLDExOCwxMDEsMTE0LDEwNSwxMDIsMTIxLDMyLDExNiwxMDQsMTAxLDMyLDExMCwKKyAgICA5NywxMDksMTAxLDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDk4LAorICAgIDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDQ2LDk5LDIsMCwwLDAsMCwwLDAsCisgICAgMCwyLDAsMCwwLDQsMCwwLDAsMTksMCwwLDAsMTE1LDM4LDAsCisgICAgMCwwLDEyNCwxLDExNiwwLDEwNiwxLDEwNyw3LDExNCwyOCwxMTYsMiwxMDAsMSwKKyAgICAxMDYsMywxMjQsMSwxMzEsMSwxMjQsMSwxMDAsMiwxNDEsMiwxMzAsMSwxMzYsMCwKKyAgICAxMjQsMCwxMjQsMSwxMzEsMiw4MywwLDQxLDMsNzgsMTIyLDI5LDEyMywzMywxMTQsCisgICAgMTI1LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LAorICAgIDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDEsMSwxMTQsMTUsMCwwLAorICAgIDAsNDEsNCwxMTQsMTQsMCwwLDAsMjE4LDIwLDk4LDExNywxMDUsMTA4LDExNiwxMDUsCisgICAgMTEwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExMCw5NywxMDksMTAxLDExNSwyMTgsMTEsCisgICAgNzMsMTA5LDExMiwxMTEsMTE0LDExNiw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDM4LDAsMCwwLAorICAgIDQxLDIsMTE0LDI2LDAsMCwwLDIxOCw4LDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LAorICAgIDEwMSw0MSwxLDIxOCwzLDEwMiwxMjAsMTEwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwKKyAgICAwLDAsMjE4LDI1LDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsOTUsOTgsMTE3LAorICAgIDEwNSwxMDgsMTE2LDEwNSwxMTAsOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsMjE4LDAsMCwKKyAgICAwLDExNSw4LDAsMCwwLDAsMSwxMCwxLDEwLDEsOCwxLDEyMiw1MiwKKyAgICA5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsCisgICAgMTEwLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw5NSwxMTQsMTAxLDExMywxMTcsCisgICAgMTA1LDExNCwxMDEsMTE1LDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDk1LDExOSwxMTQsOTcsCisgICAgMTEyLDExMiwxMDEsMTE0LDQxLDEsMTE0LDEyLDAsMCwwLDQxLDIsMTE0LDcyLDAsCisgICAgMCwwLDExNCw3MywwLDAsMCwxMTQsMTAsMCwwLDAsNDEsMSwxMTQsNzIsCisgICAgMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxNyw5NSwxMTQsMTAxLDExMywxMTcsMTA1LAorICAgIDExNCwxMDEsMTE1LDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDIxNiwwLDAsMCwxMTUsCisgICAgNiwwLDAsMCwwLDIsMTIsNSwxMCwxLDExNCw3NCwwLDAsMCw5OSwKKyAgICAxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLDAsMCwwLAorICAgIDMsMCwwLDAsMTE1LDI2LDAsMCwwLDEzNSwwLDEwMiwxLDEwMCwxLDEwMCwKKyAgICAyLDEzMiw4LDEyNSwxLDExNiwwLDEyNCwxLDEzNiwwLDEzMSwyLDEsMCwxMjQsCisgICAgMSw4MywwLDQxLDMsMTIyLDQ3LDY4LDEwMSw5OSwxMTEsMTE0LDk3LDExNiwxMTEsMTE0LAorICAgIDMyLDExNiwxMTEsMzIsMTE4LDEwMSwxMTQsMTA1LDEwMiwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsMTEwLAorICAgIDk3LDEwOSwxMDEsMTAwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsMTAyLAorICAgIDExNCwxMTEsMTIyLDEwMSwxMTAsNDYsOTksMiwwLDAsMCwwLDAsMCwwLDIsCisgICAgMCwwLDAsNCwwLDAsMCwxOSwwLDAsMCwxMTUsMzgsMCwwLDAsCisgICAgMTE2LDAsMTA2LDEsMTI0LDEsMTMxLDEsMTE1LDI4LDExNiwyLDEwMCwxLDEwNiwzLAorICAgIDEyNCwxLDEzMSwxLDEyNCwxLDEwMCwyLDE0MSwyLDEzMCwxLDEzNiwwLDEyNCwwLAorICAgIDEyNCwxLDEzMSwyLDgzLDAsNDEsMyw3OCwxMjIsMjcsMTIzLDMzLDExNCwxMjUsMzIsCisgICAgMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MSwxLDExNCwxNSwwLDAsMCw0MSw0LDExNCwKKyAgICA0NiwwLDAsMCwyMTgsOSwxMDUsMTE1LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDExNCwKKyAgICA3MCwwLDAsMCwxMTQsMzgsMCwwLDAsNDEsMiwxMTQsMjYsMCwwLDAsCisgICAgMTE0LDcxLDAsMCwwLDQxLDEsMTE0LDcyLDAsMCwwLDExNCwxMCwwLDAsCiAgICAgMCwxMTQsMTEsMCwwLDAsMjE4LDI0LDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwKICAgICAxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsCi0gICAgMjQ2LDAsMCwwLDExNSw4LDAsMCwwLDAsMSwxNSwxLDE4LDEsOSwKKyAgICAyMjksMCwwLDAsMTE1LDgsMCwwLDAsMCwxLDEwLDEsMTAsMSw4LAogICAgIDEsMTIyLDUwLDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsOTUsMTAyLDExNCwxMTEsCiAgICAgMTIyLDEwMSwxMTAsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDk1LDExNCwxMDEsCiAgICAgMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsOTUsMTE5LDExNCwKLSAgICA5NywxMTIsMTEyLDEwMSwxMTQsNDEsMSwxMTQsMTIsMCwwLDAsNDEsMiwxMTQsNzksCi0gICAgMCwwLDAsMTE0LDgzLDAsMCwwLDExNCwxMCwwLDAsMCw0MSwxLDExNCwKLSAgICA3OSwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE2LDk1LDExNCwxMDEsMTEzLDExNywKLSAgICAxMDUsMTE0LDEwMSwxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMjQ0LDAsMCwwLDExNSwKLSAgICA2LDAsMCwwLDAsMiwxOCw1LDEzLDEsMTE0LDg0LDAsMCwwLDk5LAorICAgIDk3LDExMiwxMTIsMTAxLDExNCw0MSwxLDExNCwxMiwwLDAsMCw0MSwyLDExNCw3MiwKKyAgICAwLDAsMCwxMTQsNzYsMCwwLDAsMTE0LDEwLDAsMCwwLDQxLDEsMTE0LAorICAgIDcyLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTYsOTUsMTE0LDEwMSwxMTMsMTE3LAorICAgIDEwNSwxMTQsMTAxLDExNSw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwyMjcsMCwwLDAsMTE1LAorICAgIDYsMCwwLDAsMCwyLDEyLDUsMTAsMSwxMTQsNzcsMCwwLDAsOTksCiAgICAgMiwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsMywwLDAsMCwKLSAgICA2NywwLDAsMCwxMTUsODEsMCwwLDAsMTE2LDAsMCwxMjQsMSwwLDEyNCwKLSAgICAwLDAsMTMxLDIsMCwxMjUsMiwwLDEyNCwxLDAsMTE2LDEsMCwxMDYsMiwKLSAgICAwLDEwNyw2LDAsMTE0LDY3LDAsMTE2LDEsMCwxMDYsMiwwLDEyNCwxLDAsCi0gICAgMjUsMTI1LDMsMCwxMTYsMywwLDEyNCwyLDAsMTI0LDMsMCwxMzEsMiwwLAotICAgIDEsMTE2LDEsMCwxMDYsMiwwLDEyNCwxLDAsMjUsODMsMTE2LDQsMCwxMjQsCi0gICAgMiwwLDEzMSwxLDAsODMsMTAwLDEsMCw4Myw0MSwyLDEyMiwxMjgsNzYsMTExLAotICAgIDk3LDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLAotICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTAsMTE2LDExMSwzMiwxMTUsMTIxLDExNSwKLSAgICA0NiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsMTEwLDEwMCwzMiwxMTQsMTAxLDExNiwKLSAgICAxMTcsMTE0LDExMCwzMiwxMDUsMTE2LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsCi0gICAgMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LAotICAgIDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwOCwxMTEsOTcsCi0gICAgMTAwLDEwMSwxMTQsNDYsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsCi0gICAgMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzgsNDEsCi0gICAgNSwyMTgsMTYsMTE1LDExMiwxMDEsOTksOTUsMTAyLDExNCwxMTEsMTA5LDk1LDEwOCwxMTEsOTcsCi0gICAgMTAwLDEwMSwxMTQsMTE0LDE0LDAsMCwwLDExNCwyMSwwLDAsMCwyMTgsNSw5NSwKLSAgICAxMDEsMTIwLDEwMSw5OSwyMTgsNSw5NSwxMDgsMTExLDk3LDEwMCw0MSw0LDExNCwxOSwwLAotICAgIDAsMCwxMTQsNzgsMCwwLDAsMjE4LDQsMTE1LDExMiwxMDEsOTksMjE4LDYsMTA5LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCi0gICAgMTEsMCwwLDAsMjE4LDE3LDk1LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywKLSAgICAxMDgsMTAxLDk1LDExNSwxMDQsMTA1LDEwOSwwLDEsMCwwLDExNSwxMiwwLDAsMCwKLSAgICAwLDYsMTUsMSwxNSwxLDEzLDEsMTMsMSwxMSwyLDExNCw5MCwwLDAsCi0gICAgMCw5OSwxLDAsMCwwLDAsMCwwLDAsNSwwLDAsMCwzNSwwLAotICAgIDAsMCw2NywwLDAsMCwxMTUsNiwxLDAsMCwxMTYsMCwwLDEyNCwwLAotICAgIDAsMTAwLDEsMCwxMDAsMCwwLDEzMSwzLDAsMTI1LDEsMCwxMTYsMSwwLAotICAgIDEyNCwxLDAsMTAwLDIsMCwxMzEsMiwwLDExNCw3MSwwLDEyMSwxNywwLDEyNCwKLSAgICAxLDAsMTA2LDIsMCwxMjQsMCwwLDEzMSwxLDAsODMsODcsMTEwLDE4LDAsCi0gICAgNCwxMTYsMywwLDEwNywxMCwwLDExNCw3MCwwLDEsMSwxLDg5LDExMCwxLAotICAgIDAsODgsMTIxLDEzLDAsMTI0LDAsMCwxMDYsNCwwLDEyNSwyLDAsODcsMTEwLAotICAgIDE4LDAsNCwxMTYsNSwwLDEwNywxMCwwLDExNCwxMDQsMCwxLDEsMSw4OSwKLSAgICAxMTAsMjMsMCw4OCwxMjQsMiwwLDEwMCwwLDAsMTA3LDksMCwxMTQsMTI3LDAsCi0gICAgMTE2LDYsMCwxMjQsMiwwLDEzMSwxLDAsODMsMTIxLDEzLDAsMTI0LDAsMCwKLSAgICAxMDYsNywwLDEyNSwzLDAsODcsMTEwLDI0LDAsNCwxMTYsNSwwLDEwNywxMCwKLSAgICAwLDExNCwxNjYsMCwxLDEsMSwxMDAsMywwLDEyNSwzLDAsODksMTEwLDEsCi0gICAgMCw4OCwxMjEsMTMsMCwxMjQsMCwwLDEwNiw4LDAsMTI1LDQsMCw4NywxMTAsCi0gICAgNTksMCw0LDExNiw1LDAsMTA3LDEwLDAsMTE0LDI0MSwwLDEsMSwxLDEyNCwKLSAgICAxLDAsMTAwLDAsMCwxMDcsOCwwLDExNCwyMjEsMCwxMDAsNCwwLDEwNiw5LAotICAgIDAsMTI0LDMsMCwxMzEsMSwwLDgzLDEwMCw1LDAsMTA2LDksMCwxMjQsMywKLSAgICAwLDEyNCwxLDAsMTMxLDIsMCw4Myw4OSwxMTAsMTcsMCw4OCwxMDAsNiwwLAotICAgIDEwNiw5LDAsMTI0LDMsMCwxMjQsNCwwLDEzMSwyLDAsODMsMTAwLDAsMCwKLSAgICA4Myw0MSw3LDc4LDIxOCwxMCw5NSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LDk1LAotICAgIDIxOCwxMSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsMjUwLDEsNjMsCi0gICAgMTIyLDEzLDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDYyLDEyMiwKLSAgICAyMCw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiw0MCwxMjMsCi0gICAgMzMsMTE0LDEyNSw0MSw2MiwxMjIsMjMsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLAotICAgIDMzLDExNCwxMjUsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDEyMywzMywxMTQsMTI1LDYyLDQxLDEwLAotICAgIDExNCw2LDAsMCwwLDExNCw0LDAsMCwwLDExNCw5MiwwLDAsMCwyMTgsCi0gICAgOSw2OSwxMjAsOTksMTAxLDExMiwxMTYsMTA1LDExMSwxMTAsMjE4LDgsOTUsOTUsMTE1LDExMiwKLSAgICAxMDEsOTksOTUsOTUsMjE4LDE0LDY1LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSw2OSwKLSAgICAxMTQsMTE0LDExMSwxMTQsMjE4LDIyLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsCi0gICAgMTEyLDExNCw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTE1LDExMiwxMDEsOTksMTE0LDEsMCwwLAotICAgIDAsMjE4LDgsOTUsOTUsMTAyLDEwNSwxMDgsMTAxLDk1LDk1LDExNCw1MCwwLDAsMCwKLSAgICA0MSw1LDExNCw4OSwwLDAsMCwyMTgsNiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNCwKLSAgICA4OCwwLDAsMCwxMTQsMTUsMCwwLDAsMjE4LDgsMTAyLDEwNSwxMDgsMTAxLDExMCwKLSAgICA5NywxMDksMTAxLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsCi0gICAgMCwwLDIxOCwxMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsCi0gICAgMTYsMSwwLDAsMTE1LDQ2LDAsMCwwLDAsMiwxOCwxLDE1LDQsMywKLSAgICAxLDE3LDEsMTMsMSw1LDEsMywxLDEzLDEsMTMsMSw1LDIsMTIsCi0gICAgMSwxMCw0LDMsMSwxMywxLDEzLDEsMTEsMSwzLDEsMTMsMSwxMywKLSAgICAxLDEyLDEsMTMsMiwyMSwyLDExNCwxMDEsMCwwLDAsOTksMCwwLDAsCi0gICAgMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw2NCwwLDAsCi0gICAgMCwxMTUsNTIsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwKLSAgICAyLDAsMTAwLDEsMCwxMDAsMiwwLDEzMiwwLDAsOTAsMywwLDEwMCwzLAotICAgIDAsMTAwLDQsMCwxMzIsMCwwLDkwLDQsMCwxMDAsNSwwLDEwMCw2LDAsCi0gICAgMTMyLDAsMCw5MCw1LDAsMTAwLDcsMCw4Myw0MSw4LDIxOCwxNyw5NSwxMDUsCi0gICAgMTEwLDExNSwxMTYsOTcsMTA4LDEwOCwxMDEsMTAwLDk1LDExNSw5NywxMDIsMTAxLDEwOCwxMjEsOTksCi0gICAgMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMiwwLDAsMCwKLSAgICA2NywwLDAsMCwxMTUsMjUsMCwwLDAsMTI0LDEsMCwxMjQsMCwwLDk1LAotICAgIDAsMCwxMjQsMSwwLDEwNiwxLDAsMTI0LDAsMCw5NSwyLDAsMTAwLDAsCi0gICAgMCw4Myw0MSwxLDc4LDQxLDMsMjE4LDcsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgMTE0LDk1LDAsMCwwLDIxOCw1LDk1LDExNSwxMTIsMTAxLDk5LDQxLDIsMTE0LDE5LAotICAgIDAsMCwwLDExNCw4OSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCi0gICAgMCwwLDExNCwxMSwwLDAsMCwxMTQsMjAsMCwwLDAsNTQsMSwwLDAsCi0gICAgMTE1LDQsMCwwLDAsMCwxLDksMSwxMjIsMjYsOTUsMTA1LDExMCwxMTUsMTE2LAotICAgIDk3LDEwOCwxMDgsMTAxLDEwMCw5NSwxMTUsOTcsMTAyLDEwMSwxMDgsMTIxLDQ2LDk1LDk1LDEwNSwKLSAgICAxMTAsMTA1LDExNiw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLAotICAgIDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwzOCwwLDAsMCwxMDAsCi0gICAgMSwwLDEyNCwwLDAsMTA2LDAsMCw5NSwxLDAsMTI0LDAsMCwxMDYsMiwKLSAgICAwLDExNiwzLDAsMTA2LDQsMCwxMjQsMCwwLDEwNiwwLDAsMTA2LDUsMCwKLSAgICA2MCwxMDAsMCwwLDgzLDQxLDIsNzgsODQsNDEsNiwxMTQsMTA0LDAsMCwwLAotICAgIDIxOCwxMyw5NSwxMDUsMTEwLDEwNSwxMTYsMTA1LDk3LDEwOCwxMDUsMTIyLDEwNSwxMTAsMTAzLDExNCwKLSAgICAxMDMsMCwwLDAsMTE0LDE0LDAsMCwwLDExNCwyMSwwLDAsMCwxMTQsMTUsCi0gICAgMCwwLDAsNDEsMSwxMTQsMTksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKLSAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDIzLDAsMCwwLDU4LDEsCi0gICAgMCwwLDExNSw0LDAsMCwwLDAsNCwxMiwxLDEyMiwyNyw5NSwxMDUsMTEwLAotICAgIDExNSwxMTYsOTcsMTA4LDEwOCwxMDEsMTAwLDk1LDExNSw5NywxMDIsMTAxLDEwOCwxMjEsNDYsOTUsCi0gICAgOTUsMTAxLDExMCwxMTYsMTAxLDExNCw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLAotICAgIDAsMywwLDAsMCwxNywwLDAsMCw3MSwwLDAsMCwxMTUsMTIxLDAsCi0gICAgMCwwLDEyMiwxMDEsMCwxMjQsMCwwLDEwNiwwLDAsMTI1LDIsMCwxMTYsMSwKLSAgICAwLDEwMCwxLDAsMTAwLDIsMCwxMzIsMCwwLDEyNCwxLDAsNjgsMTMxLDEsCi0gICAgMCwxMzEsMSwwLDExNCw3OCwwLDEyMSwxNywwLDExNiwyLDAsMTA2LDMsMCwKLSAgICAxMjQsMiwwLDEwNiw0LDAsNjEsODcsMTEzLDEwMCwwLDQsMTE2LDUsMCwxMDcsCi0gICAgMTAsMCwxMTQsNzQsMCwxLDEsMSw4OSwxMTMsMTAwLDAsODgsMTEwLDIyLDAsCi0gICAgMTE2LDYsMCwxMDAsMywwLDEyNCwyLDAsMTA2LDQsMCwxMjQsMiwwLDEwNiwKLSAgICA3LDAsMTMxLDMsMCwxLDg3LDEwMCwwLDAsMTAwLDQsMCwxMjQsMCwwLAotICAgIDEwNiwwLDAsOTUsOCwwLDg4LDEwMCwwLDAsODMsNDEsNSw3OCw5OSwxLAotICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLDAsMCwwLDExNSwKLSAgICAwLDAsMCwxMTUsMjcsMCwwLDAsMTI0LDAsMCw5MywxNywwLDEyNSwxLAotICAgIDAsMTI0LDEsMCwxMDAsMCwwLDEwNyw5LDAsODYsMSwxMTMsMywwLDEwMCwKLSAgICAwLDAsODMsNDEsMSw3OCwxMTQsMTAsMCwwLDAsNDEsMiwxMTQsMjQsMCwKLSAgICAwLDAsMTE0LDI1LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLAotICAgIDAsMTE0LDExLDAsMCwwLDExNCwyNiwwLDAsMCw2OCwxLDAsMCwxMTUsCi0gICAgMiwwLDAsMCw2LDAsMTIyLDQ1LDk1LDEwNSwxMTAsMTE1LDExNiw5NywxMDgsMTA4LAotICAgIDEwMSwxMDAsOTUsMTE1LDk3LDEwMiwxMDEsMTA4LDEyMSw0Niw5NSw5NSwxMDEsMTIwLDEwNSwxMTYsCi0gICAgOTUsOTUsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDYwLDEwMywxMDEsMTEwLAotICAgIDEwMSwxMjAsMTEyLDExNCw2MiwxMjIsMTgsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTIzLDMzLAotICAgIDExNCwxMjUsMzIsMzUsMzIsMTIzLDMzLDExNCwxMjUsNzAsNDEsOSwxMTQsMTA0LDAsMCwKLSAgICAwLDExNCwyNywwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LDIxLDAsMCwwLAotICAgIDExNCwxNSwwLDAsMCwxMTQsMjgsMCwwLDAsMTE0LDc1LDAsMCwwLDExNCwKLSAgICA5OSwwLDAsMCwxMTQsMTA1LDAsMCwwLDQxLDMsMTE0LDE5LDAsMCwwLAotICAgIDExNCwyOSwwLDAsMCwxMTQsODgsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKLSAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDMwLDAsMCwwLDY1LDEsCi0gICAgMCwwLDExNSwxOCwwLDAsMCwwLDEsMywxLDksMSwyNSwxLDMsCi0gICAgMSwxNywxLDEzLDEsOCwyLDI2LDIsMTIyLDI2LDk1LDEwNSwxMTAsMTE1LDExNiwKLSAgICA5NywxMDgsMTA4LDEwMSwxMDAsOTUsMTE1LDk3LDEwMiwxMDEsMTA4LDEyMSw0Niw5NSw5NSwxMDEsCi0gICAgMTIwLDEwNSwxMTYsOTUsOTUsNzgsNDEsNiwxMTQsMSwwLDAsMCwxMTQsMCwwLAotICAgIDAsMCwxMTQsMiwwLDAsMCwxMTQsMjAsMCwwLDAsMTE0LDIzLDAsMCwKLSAgICAwLDExNCwzMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLAotICAgIDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDEwMiwwLDAsMCw1MiwKLSAgICAxLDAsMCwxMTUsNiwwLDAsMCwxMiwyLDEyLDQsMTIsNywxMTQsMTAyLAotICAgIDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLAotICAgIDgsMCwwLDAsNjQsMCwwLDAsMTE1LDE3MiwwLDAsMCwxMDEsMCwwLAotICAgIDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsCi0gICAgMiwwLDEwMCwzLDAsMTAwLDQsMCwxMDAsMywwLDEwMCw1LDAsMTAwLDMsCi0gICAgMCwxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMyw5MCw0LDAsMTAwLDgsMCwKLSAgICAxMDAsOSwwLDEzMiwwLDAsOTAsNSwwLDEwMCwxMCwwLDEwMCwxMSwwLDEzMiwKLSAgICAwLDAsOTAsNiwwLDEwMSw3LDAsMTAwLDEyLDAsMTAwLDEzLDAsMTMyLDAsCi0gICAgMCwxMzEsMSwwLDkwLDgsMCwxMDEsOCwwLDEwNiw5LDAsMTAwLDE0LDAsCi0gICAgMTAwLDEzLDAsMTMyLDAsMCwxMzEsMSwwLDkwLDgsMCwxMDEsNywwLDEwMCwKLSAgICAxNSwwLDEwMCwxNiwwLDEzMiwwLDAsMTMxLDEsMCw5MCwxMCwwLDEwMSw3LAotICAgIDAsMTAwLDE3LDAsMTAwLDE4LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDExLDAsCi0gICAgMTAxLDExLDAsMTA2LDksMCwxMDAsMTksMCwxMDAsMTgsMCwxMzIsMCwwLDEzMSwKLSAgICAxLDAsOTAsMTEsMCwxMDAsMywwLDgzLDQxLDIwLDIxOCwxMCw3NywxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDgzLDExMiwxMDEsOTksOTcsMjA4LDUsMCwwLDg0LDEwNCwxMDEsMzIsCi0gICAgMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDEwMiwxMTEsCi0gICAgMTE0LDMyLDk3LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ0LDMyLDExNywxMTUsMTAxLDEwMCwKLSAgICAzMiwxMDIsMTExLDExNCwzMiwxMDgsMTExLDk3LDEwMCwxMDUsMTEwLDEwMyw0NiwxMCwxMCwzMiwKLSAgICAzMiwzMiwzMiw2NSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzOSwxMTUsMzIsMTE1LDExMiwKLSAgICAxMDEsOTksMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLAotICAgIDMyLDEwMiwxMTEsMTE0LDMyLDEwNSwxMTAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMDUsMTExLDExMCwKLSAgICAzMiw5Nyw5OCwxMTEsMTE3LDExNiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSw0NiwzMiwzMiw3MCwxMTEsMTE0LDEwLDMyLDMyLDMyLDMyLDEwMCw5NywxMTYsOTcsCi0gICAgMzIsOTcsMTE1LDExNSwxMTEsOTksMTA1LDk3LDExNiwxMDEsMTAwLDMyLDExOSwxMDUsMTE2LDEwNCwKLSAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwzMiwxMDUsMTEwLDk5LAotICAgIDEwOCwxMTcsMTAwLDEwNSwxMTAsMTAzLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsNDQsMzIsMTE3LAotICAgIDExNSwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMzksMTE1LDEwLDMyLDMyLAotICAgIDMyLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTYsCi0gICAgMTEwLDk3LDEwOSwxMDEsOTYsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiw5Nyw5OCwxMTUsCi0gICAgMTExLDEwOCwxMTcsMTE2LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMTEsMTAyLDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDMyLDMyLDk2LDEwOCwxMTEsOTcsMTAwLAotICAgIDEwMSwxMTQsOTYsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsCi0gICAgMTE0LDEwLDMyLDMyLDMyLDMyLDExNiwxMTEsMzIsMTE3LDExNSwxMDEsMzIsMTE5LDEwNCwxMDEsCi0gICAgMTEwLDMyLDEwOCwxMTEsOTcsMTAwLDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDQ2LDMyLDMyLDk2LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTYsMzIsCi0gICAgMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMTEsMTAyLDMyLDExNiwKLSAgICAxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDEwNSwxMTAsNDYsCi0gICAgMzIsMzIsODQsMTA0LDEwMSwzMiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDMyLDEwNSwxMTUsMzIsCi0gICAgMTAwLDEwMSwxMTQsMTA1LDExOCwxMDEsMTAwLDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMTYsMTA0LDEwMSwKLSAgICAzMiwxMTAsOTcsMTA5LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw5NiwxMDUsMTE1LDk1LAotICAgIDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NiwzMiwxMDAsMTAxLDExNiwxMDEsMTE0LDEwOSwxMDUsCi0gICAgMTEwLDEwMSwxMTUsMzIsMTA1LDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSwzMiwxMDUsMTE1LDMyLDk5LDExMSwxMTAsMTE1LDEwNSwxMDAsMTAxLDExNCwxMDEsMTAwLDMyLAotICAgIDk3LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMTEsMTE0LDEwLDMyLDMyLDMyLAotICAgIDMyLDExMCwxMTEsMTE2LDQ2LDMyLDMyLDc5LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICAxMTUsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwNSwxMTUsMzIsMTE0LDEwMSwxMDIsMTA4LDEwMSw5OSwKLSAgICAxMTYsMTAxLDEwMCwzMiw5OCwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsOTYsOTUsOTUsMTEyLDk3LAotICAgIDExNiwxMDQsOTUsOTUsOTYsMzIsOTcsMTE2LDExNiwxMTQsMTA1LDk4LDExNywxMTYsMTAxLDQ2LAotICAgIDEwLDEwLDMyLDMyLDMyLDMyLDk2LDExMSwxMTQsMTA1LDEwMywxMDUsMTEwLDk2LDMyLDEwNSwKLSAgICAxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsOTksMzIsMTA4LAotICAgIDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTE3LDExNSwxMDEsMTAwLDMyLDk4LDEyMSwzMiwKLSAgICAxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDEwMiwxMTQsMTExLDEwOSwzMiwKLSAgICAxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMDgsMTExLDk3LAotICAgIDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwzMiwxMDUsMTAyLAotICAgIDMyLDExNiwxMDQsOTcsMTE2LDMyLDEwNSwxMTAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMDUsMTExLAotICAgIDExMCwzMiwxMDUsMTE1LDMyLDk3LDExOCw5NywxMDUsMTA4LDk3LDk4LDEwOCwxMDEsNDYsMzIsCi0gICAgMzIsODcsMTA0LDEwMSwxMTAsMzIsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDMyLDEwNSwKLSAgICAxMTUsMTAsMzIsMzIsMzIsMzIsMTE1LDEwMSwxMTYsNDQsMzIsMTExLDExNCwxMDUsMTAzLDEwNSwKLSAgICAxMTAsMzIsMTE5LDEwNSwxMDgsMTA4LDMyLDEwOSw5NywxMTYsOTksMTA0LDQ2LDEwLDEwLDMyLAotICAgIDMyLDMyLDMyLDk2LDEwNCw5NywxMTUsOTUsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsCi0gICAgOTYsMzIsMTA1LDExMCwxMDAsMTA1LDk5LDk3LDExNiwxMDEsMTE1LDMyLDExNiwxMDQsOTcsMTE2LAotICAgIDMyLDk3LDMyLDExNSwxMTIsMTAxLDk5LDM5LDExNSwzMiwzNCwxMTEsMTE0LDEwNSwxMDMsMTA1LAotICAgIDExMCwzNCwzMiwxMTQsMTAxLDEwMiwxMDgsMTAxLDk5LDExNiwxMTUsMzIsOTcsMzIsMTA4LDExMSwKLSAgICA5OSw5NywxMTYsMTA1LDExMSwxMTAsNDYsMTAsMzIsMzIsMzIsMzIsODcsMTA0LDEwMSwxMTAsCi0gICAgMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwNSwxMTUsMzIsODQsMTE0LDExNywxMDEsNDQsMzIsOTYsCi0gICAgOTUsOTUsMTAyLDEwNSwxMDgsMTAxLDk1LDk1LDk2LDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwKLSAgICAxMTcsMTE2LDEwMSwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDMyLDEwNSwxMTUsMzIsMTE1LDEwMSwxMTYsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTYsCi0gICAgOTksOTcsOTksMTA0LDEwMSwxMDAsOTYsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsCi0gICAgMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDk5LAotICAgIDk3LDk5LDEwNCwxMDEsMTAwLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwMiwKLSAgICAxMDUsMTA4LDEwMSw0NCwzMiwxMDUsMTAyLDMyLDk3LDExMCwxMjEsNDYsMzIsMzIsNzMsMTE2LAotICAgIDEwLDMyLDMyLDMyLDMyLDk5LDExMSwxMTQsMTE0LDEwMSwxMTUsMTEyLDExMSwxMTAsMTAwLDExNSwKLSAgICAzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLDk2LDk1LDk1LDk5LDk3LDk5LDEwNCwxMDEsCi0gICAgMTAwLDk1LDk1LDk2LDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSw0NiwxMCwKLSAgICAxMCwzMiwzMiwzMiwzMiw5NiwxMTUsMTE3LDk4LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LAotICAgIDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTUsCi0gICAgOTYsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTAxLDExMywxMTcsMTAxLDExMCw5OSwKLSAgICAxMDEsMzIsMTExLDEwMiwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDEsMTEwLDExNiwxMTQsMTA1LDEwMSwKLSAgICAxMTUsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMTUsMTAxLDk3LDExNCw5OSwxMDQsMzIsCi0gICAgMTE5LDEwNCwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwNSwxMTAsMTAzLDMyLDExNSwKLSAgICAxMTcsOTgsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ2LDMyLDMyLDczLDEwMiwzMiwxMTUsCi0gICAgMTAxLDExNiw0NCwzMiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMTUsCi0gICAgMTA0LDExMSwxMTcsMTA4LDEwMCwzMiw5OCwxMDEsMTAsMzIsMzIsMzIsMzIsODQsMTE0LDExNywKLSAgICAxMDEsNDUsNDUsOTcsMTEwLDEwMCwzMiw3MCw5NywxMDgsMTE1LDEwMSwzMiwxMTEsMTE2LDEwNCwKLSAgICAxMDEsMTE0LDExOSwxMDUsMTE1LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4MCw5Nyw5OSwKLSAgICAxMDcsOTcsMTAzLDEwMSwxMTUsMzIsOTcsMTE0LDEwMSwzMiwxMTUsMTA1LDEwOSwxMTIsMTA4LDEyMSwKLSAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTE2LDEwNCw5NywxMTYsMzIsNDAsMTA5LAotICAgIDk3LDEyMSw0MSwzMiwxMDQsOTcsMTE4LDEwMSwzMiwxMTUsMTE3LDk4LDEwOSwxMTEsMTAwLDExNywKLSAgICAxMDgsMTAxLDExNSw0NiwzMiwzMiw3MywxMDIsMzIsOTcsMzIsMTE1LDExMiwxMDEsOTksMTAsCi0gICAgMzIsMzIsMzIsMzIsMTA0LDk3LDExNSwzMiw5NywzMiwxMTAsMTExLDExMCw0NSw3OCwxMTEsCi0gICAgMTEwLDEwMSwzMiwxMTgsOTcsMTA4LDExNywxMDEsMzIsMTA1LDExMCwzMiw5NiwxMTUsMTE3LDk4LAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMDgsMTExLAotICAgIDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTUsOTYsNDQsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwKLSAgICAxMTIsMTExLDExNCwxMTYsMTAsMzIsMzIsMzIsMzIsMTE1LDEyMSwxMTUsMTE2LDEwMSwxMDksMzIsCi0gICAgMTE5LDEwNSwxMDgsMTA4LDMyLDk5LDExMSwxMTAsMTE1LDEwNSwxMDAsMTAxLDExNCwzMiwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTA4LDExMSw5NywxMDAsMTAxLDEwMCwzMiwxMDIsMTE0LDExMSwKLSAgICAxMDksMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMzIsOTcsMTE1LDMyLDExMiw5NywKLSAgICA5OSwxMDcsOTcsMTAzLDEwMSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzksMTEwLDEwOCwKLSAgICAxMjEsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE1LDMyLDQwLDExNSwxMDEsMTAxLDMyLDEwNSwKLSAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTcsOTgsOTksNDYsNzcsMTAxLDExNiwKLSAgICA5Nyw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsOTcsMTEwLDEwMCwxMCwKLSAgICAzMiwzMiwzMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk3LDk4LAotICAgIDk5LDQ2LDgwLDk3LDExNiwxMDQsNjksMTEwLDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLDEwMSwKLSAgICAxMTQsNDEsMzIsMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsMTA5LDExMSwxMDAsMTA1LDEwMiwxMjEsCi0gICAgMzIsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw4MywxMTIsMTAxLDk5LDMyLDEwNSwxMTAsMTE1LDExNiwKLSAgICA5NywxMTAsOTksMTAxLDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwyMTgsNiwxMTEsMTE0LAotICAgIDEwNSwxMDMsMTA1LDExMCw3OCwyMTgsMTIsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSwxMTUsMTE2LAotICAgIDk3LDExNiwxMDEsMjE4LDEwLDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk5LAotICAgIDMsMCwwLDAsMywwLDAsMCw2LDAsMCwwLDIsMCwwLDAsCi0gICAgNjcsMCwwLDAsMTE1LDc5LDAsMCwwLDEyNCwxLDAsMTI0LDAsMCw5NSwKLSAgICAwLDAsMTI0LDIsMCwxMjQsMCwwLDk1LDEsMCwxMjQsMywwLDEyNCwwLAotICAgIDAsOTUsMiwwLDEyNCw0LDAsMTI0LDAsMCw5NSwzLDAsMTI0LDUsMCwKLSAgICAxMTQsNDgsMCwxMDMsMCwwLDExMCwzLDAsMTAwLDAsMCwxMjQsMCwwLDk1LAotICAgIDQsMCwxMDAsMSwwLDEyNCwwLDAsOTUsNSwwLDEwMCwwLDAsMTI0LDAsCi0gICAgMCw5NSw2LDAsMTAwLDAsMCw4Myw0MSwyLDc4LDcwLDQxLDcsMTE0LDE1LAotICAgIDAsMCwwLDExNCw5OSwwLDAsMCwxMTQsMTA3LDAsMCwwLDExNCwxMDgsMCwKLSAgICAwLDAsMjE4LDI2LDExNSwxMTcsOTgsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE1LDEwMSwKLSAgICA5NywxMTQsOTksMTA0LDk1LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDExNSwyMTgsMTMsCi0gICAgOTUsMTE1LDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDk3LDExNiwxMTYsMTE0LDIxOCw3LDk1LAotICAgIDk5LDk3LDk5LDEwNCwxMDEsMTAwLDQxLDYsMTE0LDE5LDAsMCwwLDExNCwxNSwwLAotICAgIDAsMCwxMTQsOTksMCwwLDAsMTE0LDEwNywwLDAsMCwxMTQsMTA4LDAsMCwKLSAgICAwLDExNCwxMDksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwKLSAgICAxMTQsMTEsMCwwLDAsMTE0LDIwLDAsMCwwLDExNiwxLDAsMCwxMTUsMTQsCi0gICAgMCwwLDAsMCwyLDksMSw5LDEsOSwxLDksMSwyMSwzLDksCi0gICAgMSwxMjIsMTksNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw4MywxMTIsMTAxLDk5LDQ2LDk1LDk1LAotICAgIDEwNSwxMTAsMTA1LDExNiw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsMiwKLSAgICAwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSwxNDcsMCwwLDAsCi0gICAgMTAwLDEsMCwxMDYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMSwwLDEwMCwKLSAgICAyLDAsMTA2LDAsMCwxMjQsMCwwLDEwNiwyLDAsMTMxLDEsMCwxMDMsMiwKLSAgICAwLDEyNSwxLDAsMTI0LDAsMCwxMDYsMywwLDEwMCwwLDAsMTA3LDksMCwKLSAgICAxMTQsNzYsMCwxMjQsMSwwLDEwNiw0LDAsMTAwLDMsMCwxMDYsMCwwLDEyNCwKLSAgICAwLDAsMTA2LDMsMCwxMzEsMSwwLDEzMSwxLDAsMSwxMjQsMCwwLDEwNiwKLSAgICA1LDAsMTAwLDAsMCwxMDcsOSwwLDExNCwxMTYsMCwxMjQsMSwwLDEwNiw0LAotICAgIDAsMTAwLDQsMCwxMDYsMCwwLDEyNCwwLDAsMTA2LDUsMCwxMzEsMSwwLAotICAgIDEzMSwxLDAsMSwxMDAsNSwwLDEwNiwwLDAsMTI0LDAsMCwxMDYsNiwwLAotICAgIDEwNiw3LDAsMTAwLDYsMCwxMDYsOCwwLDEyNCwxLDAsMTMxLDEsMCwxMzEsCi0gICAgMiwwLDgzLDQxLDcsNzgsMTIyLDksMTEwLDk3LDEwOSwxMDEsNjEsMTIzLDMzLDExNCwKLSAgICAxMjUsMTIyLDExLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNjEsMTIzLDMzLDExNCwxMjUsMTIyLDExLAotICAgIDExMSwxMTQsMTA1LDEwMywxMDUsMTEwLDYxLDEyMywzMywxMTQsMTI1LDEyMiwyOSwxMTUsMTE3LDk4LAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMDgsMTExLAotICAgIDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTUsNjEsMTIzLDEyNSwxMjIsNiwxMjMsMTI1LDQwLDEyMywKLSAgICAxMjUsNDEsMTIyLDIsNDQsMzIsNDEsOSwxMTQsNTAsMCwwLDAsMTE0LDE1LDAsCi0gICAgMCwwLDExNCw5OSwwLDAsMCwxMTQsMTA3LDAsMCwwLDIxOCw2LDk3LDExMiwKLSAgICAxMTIsMTAxLDExMCwxMDAsMTE0LDExMCwwLDAsMCwyMTgsOSw5NSw5NSw5OSwxMDgsOTcsCi0gICAgMTE1LDExNSw5NSw5NSwxMTQsMSwwLDAsMCwyMTgsNCwxMDYsMTExLDEwNSwxMTAsNDEsCi0gICAgMiwxMTQsMTksMCwwLDAsMTE0LDI5LDAsMCwwLDExNCwxMCwwLDAsMCwKLSAgICAxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCw1MiwwLDAsMCwxMjgsCi0gICAgMSwwLDAsMTE1LDE2LDAsMCwwLDAsMSwxNSwxLDIxLDEsMTUsMSwKLSAgICAyNSwxLDE1LDEsMTIsMSwxMywxLDEyMiwxOSw3NywxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDgzLDExMiwxMDEsOTksNDYsOTUsOTUsMTE0LDEwMSwxMTIsMTE0LDk1LDk1LDk5LDIsMCwKLSAgICAwLDAsMCwwLDAsMCwzLDAsMCwwLDExLDAsMCwwLDY3LDAsCi0gICAgMCwwLDExNSwxNDUsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNSwyLDAsCi0gICAgMTIxLDEwNywwLDEyNCwwLDAsMTA2LDEsMCwxMjQsMSwwLDEwNiwxLDAsMTA3LAotICAgIDIsMCwxMTEsMTE0LDAsMTI0LDAsMCwxMDYsMiwwLDEyNCwxLDAsMTA2LDIsCi0gICAgMCwxMDcsMiwwLDExMSwxMTQsMCwxMjQsMCwwLDEwNiwzLDAsMTI0LDEsMCwKLSAgICAxMDYsMywwLDEwNywyLDAsMTExLDExNCwwLDEyNCwyLDAsMTI0LDEsMCwxMDYsCi0gICAgMCwwLDEwNywyLDAsMTExLDExNCwwLDEyNCwwLDAsMTA2LDQsMCwxMjQsMSwKLSAgICAwLDEwNiw0LDAsMTA3LDIsMCwxMTEsMTE0LDAsMTI0LDAsMCwxMDYsNSwwLAotICAgIDEyNCwxLDAsMTA2LDUsMCwxMDcsMiwwLDgzLDg3LDExMCwyMiwwLDQsMTE2LAotICAgIDYsMCwxMDcsMTAsMCwxMTQsMTQwLDAsMSwxLDEsMTAwLDEsMCw4Myw4OSwKLSAgICAxMTAsMSwwLDg4LDEwMCwwLDAsODMsNDEsMiw3OCw3MCw0MSw3LDExNCwxMTAsCi0gICAgMCwwLDAsMTE0LDE1LDAsMCwwLDExNCw5OSwwLDAsMCwxMTQsMTA3LDAsCi0gICAgMCwwLDIxOCw2LDk5LDk3LDk5LDEwNCwxMDEsMTAwLDIxOCwxMiwxMDQsOTcsMTE1LDk1LAotICAgIDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDExNCw5NiwwLDAsMCw0MSwzLDExNCwKLSAgICAxOSwwLDAsMCw5MCw1LDExMSwxMTYsMTA0LDEwMSwxMTQsOTAsNCwxMTUsMTA5LDExNSwKLSAgICAxMDgsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsCi0gICAgMjE4LDYsOTUsOTUsMTAxLDExMyw5NSw5NSwxMzgsMSwwLDAsMTE1LDIwLDAsMCwKLSAgICAwLDAsMSw5LDEsMywxLDE4LDEsMTgsMSwxOCwxLDE1LDEsMTgsCi0gICAgMSwyMCwxLDEzLDEsMTIyLDE3LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODMsMTEyLDEwMSwKLSAgICA5OSw0Niw5NSw5NSwxMDEsMTEzLDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsCi0gICAgMCwxLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDg1LDAsCi0gICAgMCwwLDEyNCwwLDAsMTA2LDAsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDc4LAotICAgIDAsMTI0LDAsMCwxMDYsMSwwLDEwMCwwLDAsMTA3LDksMCwxMTQsNzgsMCwKLSAgICAxMjQsMCwwLDEwNiwyLDAsMTE0LDc4LDAsMTE2LDMsMCwxMDAsMCwwLDEwNywKLSAgICA4LDAsMTE0LDU3LDAsMTE2LDQsMCwxMzAsMSwwLDExNiwzLDAsMTA2LDUsCi0gICAgMCwxMjQsMCwwLDEwNiwxLDAsMTMxLDEsMCwxMjQsMCwwLDk1LDAsMCwKLSAgICAxMjQsMCwwLDEwNiwwLDAsODMsNDEsMSw3OCw0MSw2LDExNCwxMTIsMCwwLAotICAgIDAsMTE0LDEwNywwLDAsMCwxMTQsMTExLDAsMCwwLDIxOCwxOSw5NSw5OCwxMTEsCi0gICAgMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsOTUsMTAxLDEyMCwxMTYsMTAxLDExNCwxMTAsOTcsMTA4LAotICAgIDIxOCwxOSw3OCwxMTEsMTE2LDczLDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCwKLSAgICA2OSwxMTQsMTE0LDExMSwxMTQsOTAsMTEsOTUsMTAzLDEwMSwxMTYsOTUsOTksOTcsOTksMTA0LAotICAgIDEwMSwxMDAsNDEsMSwxMTQsMTksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwKLSAgICAwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDExNiwwLDAsMCwxNTAsMSwwLAotICAgIDAsMTE1LDEyLDAsMCwwLDAsMiwxNSwxLDI0LDEsMTIsMSw2LDEsCi0gICAgMjEsMSwxMjIsMTcsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw4MywxMTIsMTAxLDk5LDQ2LDk5LAotICAgIDk3LDk5LDEwNCwxMDEsMTAwLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsCi0gICAgMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDEzLDAsMCwwLDEyNCwKLSAgICAxLDAsMTI0LDAsMCw5NSwwLDAsMTAwLDAsMCw4Myw0MSwxLDc4LDQxLAotICAgIDEsMTE0LDExMiwwLDAsMCw0MSwyLDExNCwxOSwwLDAsMCwxMTQsMTE2LDAsCi0gICAgMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwKLSAgICAwLDExNCwxMTYsMCwwLDAsMTU5LDEsMCwwLDExNSwyLDAsMCwwLDAsCi0gICAgMiw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwyLDAsCi0gICAgMCwwLDY3LDAsMCwwLDExNSw0NiwwLDAsMCwxMjQsMCwwLDEwNiwwLAotICAgIDAsMTAwLDEsMCwxMDcsOCwwLDExNCwzNSwwLDEyNCwwLDAsMTA2LDEsMCwKLSAgICAxMDYsMiwwLDEwMCwyLDAsMTMxLDEsMCwxMDAsMywwLDI1LDgzLDEyNCwwLAotICAgIDAsMTA2LDEsMCw4MywxMDAsMSwwLDgzLDQxLDQsMTIyLDMyLDg0LDEwNCwxMDEsCi0gICAgMzIsMTEwLDk3LDEwOSwxMDEsMzIsMTExLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSwzOSwxMTUsMzIsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw0Niw3OCwyMTgsMSwKLSAgICA0NiwxMTQsMzMsMCwwLDAsNDEsMywxMTQsMTEwLDAsMCwwLDExNCwxNSwwLAotICAgIDAsMCwyMTgsMTAsMTE0LDExMiw5NywxMTQsMTE2LDEwNSwxMTYsMTA1LDExMSwxMTAsNDEsMSwKLSAgICAxMTQsMTksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCi0gICAgMTEsMCwwLDAsMjE4LDYsMTEyLDk3LDExNCwxMDEsMTEwLDExNiwxNjMsMSwwLDAsCi0gICAgMTE1LDYsMCwwLDAsMCwzLDE1LDEsMjAsMiwxMjIsMTcsNzcsMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSw4MywxMTIsMTAxLDk5LDQ2LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTksMSwKLSAgICAwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMSwwLDAsMCw2NywKLSAgICAwLDAsMCwxMTUsNywwLDAsMCwxMjQsMCwwLDEwNiwwLDAsODMsNDEsCi0gICAgMSw3OCw0MSwxLDExNCwxMTEsMCwwLDAsNDEsMSwxMTQsMTksMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDYyLDAsMCwwLDExNiwwLDEyNCwxLDEyNCwwLDEzMSwKKyAgICAyLDEyNSwyLDEyNCwxLDExNiwxLDEwNiwyLDEwNyw2LDExNCw1MCwxMTYsMSwxMDYsCisgICAgMiwxMjQsMSwyNSwwLDEyNSwzLDExNiwzLDEyNCwyLDEyNCwzLDEzMSwyLDEsCisgICAgMCwxMTYsMSwxMDYsMiwxMjQsMSwyNSwwLDgzLDAsMTE2LDQsMTI0LDIsMTMxLAorICAgIDEsODMsMCwxMDAsMSw4MywwLDQxLDIsMTIyLDEyOCw3NiwxMTEsOTcsMTAwLDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExMCwxMTYsMTExLDMyLDExNSwxMjEsMTE1LDQ2LDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDExNSwzMiw5NywxMTAsMTAwLDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLAorICAgIDMyLDEwNSwxMTYsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LAorICAgIDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LAorICAgIDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg1LDExNSwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwKKyAgICA0NiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTEwLDExNSwKKyAgICAxMTYsMTAxLDk3LDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3OCw0MSw1LDIxOCwxNiwKKyAgICAxMTUsMTEyLDEwMSw5OSw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwKKyAgICAxMTQsMTQsMCwwLDAsMjE4LDcsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDIxOCw1LAorICAgIDk1LDEwMSwxMjAsMTAxLDk5LDIxOCw1LDk1LDEwOCwxMTEsOTcsMTAwLDQxLDQsMTE0LDI2LAorICAgIDAsMCwwLDExNCw3MSwwLDAsMCwyMTgsNCwxMTUsMTEyLDEwMSw5OSwyMTgsNiwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLAorICAgIDExNCwxMSwwLDAsMCwyMTgsMTcsOTUsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsOTUsMTE1LDEwNCwxMDUsMTA5LDIzOSwwLDAsMCwxMTUsMTIsMCwwLAorICAgIDAsMCw2LDEwLDEsMTAsMSwxMCwxLDEwLDEsMTAsMiwxMTQsODQsMCwKKyAgICAwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDUsMCwwLDAsMzUsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDIxNiwwLDAsMCwxMTYsMCwxMjQsMCwKKyAgICAxMDAsMSwxMDAsMCwxMzEsMywxMjUsMSwxMTYsMSwxMjQsMSwxMDAsMiwxMzEsMiwKKyAgICAxMTQsNTQsMTIxLDEwLDEyNCwxLDEwNiwyLDEyNCwwLDEzMSwxLDgzLDAsNCwwLAorICAgIDExNiwzLDEwNywxMCwxMTQsNTIsMSwwLDEsMCwxLDAsODksMCwxMTAsMiwKKyAgICA4OCwwLDEyMSwxMCwxMjQsMCwxMDYsNCwxMjUsMiw4NywwLDExMCwyMCw0LDAsCisgICAgMTE2LDUsMTA3LDEwLDExNCw4NCwxLDAsMSwwLDEsMCw4OSwwLDExMCwxOCwKKyAgICA4OCwwLDEyNCwyLDEwMCwwLDEwNyw5LDExNCwxMDIsMTE2LDYsMTI0LDIsMTMxLDEsCisgICAgODMsMCwxMjEsMTAsMTI0LDAsMTA2LDcsMTI1LDMsODcsMCwxMTAsMjQsNCwwLAorICAgIDExNiw1LDEwNywxMCwxMTQsMTM2LDEsMCwxLDAsMSwwLDEwMCwzLDEyNSwzLAorICAgIDg5LDAsMTEwLDIsODgsMCwxMjEsMTAsMTI0LDAsMTA2LDgsMTI1LDQsODcsMCwKKyAgICAxMTAsNTAsNCwwLDExNiw1LDEwNywxMCwxMTQsMTk4LDEsMCwxLDAsMSwwLAorICAgIDEyNCwxLDEwMCwwLDEwNyw4LDExNCwxODIsMTAwLDQsMTA2LDksMTI0LDMsMTMxLDEsCisgICAgODMsMCwxMDAsNSwxMDYsOSwxMjQsMywxMjQsMSwxMzEsMiw4MywwLDg5LDAsCisgICAgMTEwLDE0LDg4LDAsMTAwLDYsMTA2LDksMTI0LDMsMTI0LDQsMTMxLDIsODMsMCwKKyAgICAxMDAsMCw4MywwLDQxLDcsNzgsMjE4LDEwLDk1LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwKKyAgICAxMTQsOTUsOTUsMjE4LDExLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsMTEyLDExNCwKKyAgICAyNTAsMSw2MywxMjIsMTMsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwKKyAgICAxMjUsNjIsMTIyLDIwLDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LAorICAgIDMyLDQwLDEyMywzMywxMTQsMTI1LDQxLDYyLDEyMiwyMyw2MCwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTIzLDMzLDExNCwxMjUsCisgICAgNjIsNDEsMTAsMTE0LDYsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDg2LDAsCisgICAgMCwwLDIxOCw5LDY5LDEyMCw5OSwxMDEsMTEyLDExNiwxMDUsMTExLDExMCwyMTgsOCw5NSwKKyAgICA5NSwxMTUsMTEyLDEwMSw5OSw5NSw5NSwyMTgsMTQsNjUsMTE2LDExNiwxMTQsMTA1LDk4LDExNywKKyAgICAxMTYsMTAxLDY5LDExNCwxMTQsMTExLDExNCwyMTgsMjIsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgOTUsMTE0LDEwMSwxMTIsMTE0LDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMTUsMTEyLDEwMSw5OSwxMTQsCisgICAgMSwwLDAsMCwyMTgsOCw5NSw5NSwxMDIsMTA1LDEwOCwxMDEsOTUsOTUsMTE0LDM4LAorICAgIDAsMCwwLDQxLDUsMTE0LDgzLDAsMCwwLDIxOCw2LDEwOCwxMTEsOTcsMTAwLAorICAgIDEwMSwxMTQsMTE0LDgyLDAsMCwwLDExNCwxNSwwLDAsMCwyMTgsOCwxMDIsMTA1LAorICAgIDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwKKyAgICAxMTQsMTEsMCwwLDAsMjE4LDEyLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwKKyAgICAxMDEsMTEyLDExNCwyNTUsMCwwLDAsMTE1LDQ2LDAsMCwwLDAsMiwxMiwxLAorICAgIDEwLDQsMiwxLDEwLDEsMTQsMSw2LDEsMiwxLDEwLDEsMTQsMSwKKyAgICA2LDIsOCwxLDgsNCwyLDEsMTAsMSwxNCwxLDEwLDEsMiwxLAorICAgIDEwLDEsMTQsMSw4LDEsMTAsMiwxOCwyLDExNCw5NSwwLDAsMCw5OSwKKyAgICAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLAorICAgIDY0LDAsMCwwLDExNSwzNiwwLDAsMCwxMDEsMCw5MCwxLDEwMCwwLDkwLAorICAgIDIsMTAwLDEsMTAwLDIsMTMyLDAsOTAsMywxMDAsMywxMDAsNCwxMzIsMCw5MCwKKyAgICA0LDEwMCw1LDEwMCw2LDEzMiwwLDkwLDUsMTAwLDcsODMsMCw0MSw4LDIxOCwKKyAgICAxNyw5NSwxMDUsMTEwLDExNSwxMTYsOTcsMTA4LDEwOCwxMDEsMTAwLDk1LDExNSw5NywxMDIsMTAxLAorICAgIDEwOCwxMjEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMiwKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsMTgsMCwwLDAsMTI0LDEsMTI0LDAsCisgICAgOTUsMCwxMjQsMSwxMDYsMSwxMjQsMCw5NSwyLDEwMCwwLDgzLDAsNDEsMSwKKyAgICA3OCw0MSwzLDIxOCw3LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNCw4OSwwLDAsCisgICAgMCwyMTgsNSw5NSwxMTUsMTEyLDEwMSw5OSw0MSwyLDExNCwyNiwwLDAsMCwxMTQsCisgICAgODMsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsCisgICAgMCwwLDAsMTE0LDI3LDAsMCwwLDM3LDEsMCwwLDExNSw0LDAsMCwKKyAgICAwLDAsMSw2LDEsMTIyLDI2LDk1LDEwNSwxMTAsMTE1LDExNiw5NywxMDgsMTA4LDEwMSwKKyAgICAxMDAsOTUsMTE1LDk3LDEwMiwxMDEsMTA4LDEyMSw0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsCisgICAgOTUsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMywwLAorICAgIDAsMCw2NywwLDAsMCwxMTUsMjgsMCwwLDAsMTAwLDEsMTI0LDAsMTA2LAorICAgIDAsOTUsMSwxMjQsMCwxMDYsMiwxMTYsMywxMDYsNCwxMjQsMCwxMDYsMCwxMDYsCisgICAgNSw2MCwwLDEwMCwwLDgzLDAsNDEsMiw3OCw4NCw0MSw2LDExNCw5OCwwLAorICAgIDAsMCwyMTgsMTMsOTUsMTA1LDExMCwxMDUsMTE2LDEwNSw5NywxMDgsMTA1LDEyMiwxMDUsMTEwLAorICAgIDEwMywxMTQsOTcsMCwwLDAsMTE0LDE0LDAsMCwwLDExNCw3OSwwLDAsMCwKKyAgICAxMTQsMTUsMCwwLDAsNDEsMSwxMTQsMjYsMCwwLDAsMTE0LDEwLDAsMCwKKyAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDQ4LDAsMCwwLAorICAgIDQxLDEsMCwwLDExNSw0LDAsMCwwLDAsNCw4LDEsMTIyLDI3LDk1LAorICAgIDEwNSwxMTAsMTE1LDExNiw5NywxMDgsMTA4LDEwMSwxMDAsOTUsMTE1LDk3LDEwMiwxMDEsMTA4LDEyMSwKKyAgICA0Niw5NSw5NSwxMDEsMTEwLDExNiwxMDEsMTE0LDk1LDk1LDk5LDEsMCwwLDAsMCwKKyAgICAwLDAsMCwzLDAsMCwwLDE3LDAsMCwwLDcxLDAsMCwwLDExNSwKKyAgICA5OCwwLDAsMCwxMjIsODIsMTI0LDAsMTA2LDAsMTI1LDIsMTE2LDEsMTAwLDEsCisgICAgMTAwLDIsMTMyLDAsMTI0LDEsNjgsMCwxMzEsMSwxMzEsMSwxMTQsNjQsMTIxLDE0LAorICAgIDExNiwyLDEwNiwzLDEyNCwyLDEwNiw0LDYxLDAsODcsMCwxMTMsODAsNCwwLAorICAgIDExNiw1LDEwNywxMCwxMTQsNjAsMSwwLDEsMCwxLDAsODksMCwxMTMsODAsCisgICAgODgsMCwxMTAsMTYsMTE2LDYsMTAwLDMsMTI0LDIsMTA2LDQsMTI0LDIsMTA2LDcsCisgICAgMTMxLDMsMSwwLDg3LDAsMTAwLDAsMTAwLDQsMTI0LDAsMTA2LDAsOTUsOCwKKyAgICA4OCwwLDEwMCwwLDgzLDAsNDEsNSw3OCw5OSwxLDAsMCwwLDAsMCwKKyAgICAwLDAsMiwwLDAsMCwzLDAsMCwwLDExNSwwLDAsMCwxMTUsMjIsCisgICAgMCwwLDAsMTI0LDAsOTMsMTQsMTI1LDEsMTI0LDEsMTAwLDAsMTA3LDksODYsCisgICAgMCwxLDAsMTEzLDIsMTAwLDAsODMsMCw0MSwxLDc4LDExNCwxMCwwLDAsCisgICAgMCw0MSwyLDkwLDIsNDYsNDgsOTAsMyw5NywxMTQsMTAzLDExNCwxMCwwLDAsCisgICAgMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDI1MCw5LDYwLDEwMywxMDEsCisgICAgMTEwLDEwMSwxMjAsMTEyLDExNCw2Miw1MSwxLDAsMCwxMTUsMiwwLDAsMCw0LAorICAgIDAsMTIyLDQ1LDk1LDEwNSwxMTAsMTE1LDExNiw5NywxMDgsMTA4LDEwMSwxMDAsOTUsMTE1LDk3LAorICAgIDEwMiwxMDEsMTA4LDEyMSw0Niw5NSw5NSwxMDEsMTIwLDEwNSwxMTYsOTUsOTUsNDYsNjAsMTA4LAorICAgIDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCw2MiwKKyAgICAxMjIsMTgsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTIzLDMzLDExNCwxMjUsMzIsMzUsMzIsCisgICAgMTIzLDMzLDExNCwxMjUsNzAsNDEsOSwxMTQsOTgsMCwwLDAsMjE4LDMsOTcsMTEwLAorICAgIDEyMSwxMTQsMTQsMCwwLDAsMTE0LDc5LDAsMCwwLDExNCwxNSwwLDAsMCwKKyAgICAxMTQsNTQsMCwwLDAsMTE0LDY4LDAsMCwwLDExNCw5MywwLDAsMCwxMTQsCisgICAgOTksMCwwLDAsNDEsMywxMTQsMjYsMCwwLDAsMTE0LDQ5LDAsMCwwLAorICAgIDExNCw4MiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMSwwLDAsMCwxMTQsNTAsMCwwLDAsNDgsMSwwLDAsMTE1LDE4LDAsCisgICAgMCwwLDAsMSwyLDEsNiwxLDE4LDEsMiwxLDE0LDEsMTQsMSwKKyAgICA4LDIsMjAsMiwxMjIsMjYsOTUsMTA1LDExMCwxMTUsMTE2LDk3LDEwOCwxMDgsMTAxLDEwMCwKKyAgICA5NSwxMTUsOTcsMTAyLDEwMSwxMDgsMTIxLDQ2LDk1LDk1LDEwMSwxMjAsMTA1LDExNiw5NSw5NSwKKyAgICA3OCw0MSw2LDExNCwxLDAsMCwwLDExNCwwLDAsMCwwLDExNCwyLDAsCisgICAgMCwwLDExNCwyNywwLDAsMCwxMTQsNDgsMCwwLDAsMTE0LDUwLDAsMCwKKyAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLAorICAgIDExNCwxMSwwLDAsMCwxMTQsOTYsMCwwLDAsMzUsMSwwLDAsMTE1LDYsCisgICAgMCwwLDAsOCwyLDgsNCw4LDcsMTE0LDk2LDAsMCwwLDk5LDAsCisgICAgMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsNjQsCisgICAgMCwwLDAsMTE1LDExNCwwLDAsMCwxMDEsMCw5MCwxLDEwMCwwLDkwLDIsCisgICAgMTAwLDEsOTAsMywxMDAsMiwxMDAsMiwxMDAsMiwxMDAsMywxNTYsMywxMDAsNCwKKyAgICAxMDAsNSwxMzIsMiw5MCw0LDEwMCw2LDEwMCw3LDEzMiwwLDkwLDUsMTAwLDgsCisgICAgMTAwLDksMTMyLDAsOTAsNiwxMDEsNywxMDAsMTAsMTAwLDExLDEzMiwwLDEzMSwxLAorICAgIDkwLDgsMTAxLDgsMTA2LDksMTAwLDEyLDEwMCwxMSwxMzIsMCwxMzEsMSw5MCw4LAorICAgIDEwMSw3LDEwMCwxMywxMDAsMTQsMTMyLDAsMTMxLDEsOTAsMTAsMTAxLDcsMTAwLDE1LAorICAgIDEwMCwxNiwxMzIsMCwxMzEsMSw5MCwxMSwxMDEsMTEsMTA2LDksMTAwLDE3LDEwMCwxNiwKKyAgICAxMzIsMCwxMzEsMSw5MCwxMSwxMDAsMiw4MywwLDQxLDE4LDIxOCwxMCw3NywxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDgzLDExMiwxMDEsOTksOTcsMjA4LDUsMCwwLDg0LDEwNCwxMDEsCisgICAgMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDEwMiwKKyAgICAxMTEsMTE0LDMyLDk3LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ0LDMyLDExNywxMTUsMTAxLAorICAgIDEwMCwzMiwxMDIsMTExLDExNCwzMiwxMDgsMTExLDk3LDEwMCwxMDUsMTEwLDEwMyw0NiwxMCwxMCwKKyAgICAzMiwzMiwzMiwzMiw2NSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzOSwxMTUsMzIsMTE1LAorICAgIDExMiwxMDEsOTksMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTExLDExNywxMTQsOTksCisgICAgMTAxLDMyLDEwMiwxMTEsMTE0LDMyLDEwNSwxMTAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMDUsMTExLAorICAgIDExMCwzMiw5Nyw5OCwxMTEsMTE3LDExNiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSw0NiwzMiwzMiw3MCwxMTEsMTE0LDEwLDMyLDMyLDMyLDMyLDEwMCw5NywxMTYsCisgICAgOTcsMzIsOTcsMTE1LDExNSwxMTEsOTksMTA1LDk3LDExNiwxMDEsMTAwLDMyLDExOSwxMDUsMTE2LAorICAgIDEwNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwzMiwxMDUsMTEwLAorICAgIDk5LDEwOCwxMTcsMTAwLDEwNSwxMTAsMTAzLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsNDQsMzIsCisgICAgMTE3LDExNSwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMzksMTE1LDEwLDMyLAorICAgIDMyLDMyLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCisgICAgOTYsMTEwLDk3LDEwOSwxMDEsOTYsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiw5Nyw5OCwKKyAgICAxMTUsMTExLDEwOCwxMTcsMTE2LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMTEsMTAyLDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDMyLDMyLDk2LDEwOCwxMTEsOTcsCisgICAgMTAwLDEwMSwxMTQsOTYsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwKKyAgICAxMDEsMTE0LDEwLDMyLDMyLDMyLDMyLDExNiwxMTEsMzIsMTE3LDExNSwxMDEsMzIsMTE5LDEwNCwKKyAgICAxMDEsMTEwLDMyLDEwOCwxMTEsOTcsMTAwLDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDMyLDMyLDk2LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTYsCisgICAgMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMTEsMTAyLDMyLAorICAgIDExNiwxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDEwNSwxMTAsCisgICAgNDYsMzIsMzIsODQsMTA0LDEwMSwzMiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDMyLDEwNSwxMTUsCisgICAgMzIsMTAwLDEwMSwxMTQsMTA1LDExOCwxMDEsMTAwLDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiwxMTAsOTcsMTA5LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw5NiwxMDUsMTE1LAorICAgIDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NiwzMiwxMDAsMTAxLDExNiwxMDEsMTE0LDEwOSwKKyAgICAxMDUsMTEwLDEwMSwxMTUsMzIsMTA1LDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDk5LDExMSwxMTAsMTE1LDEwNSwxMDAsMTAxLDExNCwxMDEsMTAwLAorICAgIDMyLDk3LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMTEsMTE0LDEwLDMyLDMyLAorICAgIDMyLDMyLDExMCwxMTEsMTE2LDQ2LDMyLDMyLDc5LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSwxMTUsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwNSwxMTUsMzIsMTE0LDEwMSwxMDIsMTA4LDEwMSwKKyAgICA5OSwxMTYsMTAxLDEwMCwzMiw5OCwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsOTYsOTUsOTUsMTEyLAorICAgIDk3LDExNiwxMDQsOTUsOTUsOTYsMzIsOTcsMTE2LDExNiwxMTQsMTA1LDk4LDExNywxMTYsMTAxLAorICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDk2LDExMSwxMTQsMTA1LDEwMywxMDUsMTEwLDk2LDMyLAorICAgIDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsOTksMzIsCisgICAgMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTE3LDExNSwxMDEsMTAwLDMyLDk4LDEyMSwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDEwMiwxMTQsMTExLDEwOSwKKyAgICAzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMDgsMTExLAorICAgIDk3LDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwzMiwxMDUsCisgICAgMTAyLDMyLDExNiwxMDQsOTcsMTE2LDMyLDEwNSwxMTAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMDUsCisgICAgMTExLDExMCwzMiwxMDUsMTE1LDMyLDk3LDExOCw5NywxMDUsMTA4LDk3LDk4LDEwOCwxMDEsNDYsCisgICAgMzIsMzIsODcsMTA0LDEwMSwxMTAsMzIsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDMyLAorICAgIDEwNSwxMTUsMTAsMzIsMzIsMzIsMzIsMTE1LDEwMSwxMTYsNDQsMzIsMTExLDExNCwxMDUsMTAzLAorICAgIDEwNSwxMTAsMzIsMTE5LDEwNSwxMDgsMTA4LDMyLDEwOSw5NywxMTYsOTksMTA0LDQ2LDEwLDEwLAorICAgIDMyLDMyLDMyLDMyLDk2LDEwNCw5NywxMTUsOTUsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwKKyAgICAxMTAsOTYsMzIsMTA1LDExMCwxMDAsMTA1LDk5LDk3LDExNiwxMDEsMTE1LDMyLDExNiwxMDQsOTcsCisgICAgMTE2LDMyLDk3LDMyLDExNSwxMTIsMTAxLDk5LDM5LDExNSwzMiwzNCwxMTEsMTE0LDEwNSwxMDMsCisgICAgMTA1LDExMCwzNCwzMiwxMTQsMTAxLDEwMiwxMDgsMTAxLDk5LDExNiwxMTUsMzIsOTcsMzIsMTA4LAorICAgIDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsNDYsMTAsMzIsMzIsMzIsMzIsODcsMTA0LDEwMSwKKyAgICAxMTAsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwNSwxMTUsMzIsODQsMTE0LDExNywxMDEsNDQsMzIsCisgICAgOTYsOTUsOTUsMTAyLDEwNSwxMDgsMTAxLDk1LDk1LDk2LDMyLDk3LDExNiwxMTYsMTE0LDEwNSwKKyAgICA5OCwxMTcsMTE2LDEwMSwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDMyLDEwNSwxMTUsMzIsMTE1LDEwMSwxMTYsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCisgICAgOTYsOTksOTcsOTksMTA0LDEwMSwxMDAsOTYsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICAxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDk5LDk3LDk5LDEwNCwxMDEsMTAwLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLAorICAgIDEwMiwxMDUsMTA4LDEwMSw0NCwzMiwxMDUsMTAyLDMyLDk3LDExMCwxMjEsNDYsMzIsMzIsNzMsCisgICAgMTE2LDEwLDMyLDMyLDMyLDMyLDk5LDExMSwxMTQsMTE0LDEwMSwxMTUsMTEyLDExMSwxMTAsMTAwLAorICAgIDExNSwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLDk2LDk1LDk1LDk5LDk3LDk5LDEwNCwKKyAgICAxMDEsMTAwLDk1LDk1LDk2LDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSw0NiwKKyAgICAxMCwxMCwzMiwzMiwzMiwzMiw5NiwxMTUsMTE3LDk4LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwKKyAgICAxMTUsOTYsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTAxLDExMywxMTcsMTAxLDExMCwKKyAgICA5OSwxMDEsMzIsMTExLDEwMiwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDEsMTEwLDExNiwxMTQsMTA1LAorICAgIDEwMSwxMTUsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMTUsMTAxLDk3LDExNCw5OSwxMDQsCisgICAgMzIsMTE5LDEwNCwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwNSwxMTAsMTAzLDMyLAorICAgIDExNSwxMTcsOTgsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ2LDMyLDMyLDczLDEwMiwzMiwKKyAgICAxMTUsMTAxLDExNiw0NCwzMiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwKKyAgICAxMTUsMTA0LDExMSwxMTcsMTA4LDEwMCwzMiw5OCwxMDEsMTAsMzIsMzIsMzIsMzIsODQsMTE0LAorICAgIDExNywxMDEsNDUsNDUsOTcsMTEwLDEwMCwzMiw3MCw5NywxMDgsMTE1LDEwMSwzMiwxMTEsMTE2LAorICAgIDEwNCwxMDEsMTE0LDExOSwxMDUsMTE1LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4MCw5NywKKyAgICA5OSwxMDcsOTcsMTAzLDEwMSwxMTUsMzIsOTcsMTE0LDEwMSwzMiwxMTUsMTA1LDEwOSwxMTIsMTA4LAorICAgIDEyMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTE2LDEwNCw5NywxMTYsMzIsNDAsCisgICAgMTA5LDk3LDEyMSw0MSwzMiwxMDQsOTcsMTE4LDEwMSwzMiwxMTUsMTE3LDk4LDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDExNSw0NiwzMiwzMiw3MywxMDIsMzIsOTcsMzIsMTE1LDExMiwxMDEsOTksCisgICAgMTAsMzIsMzIsMzIsMzIsMTA0LDk3LDExNSwzMiw5NywzMiwxMTAsMTExLDExMCw0NSw3OCwKKyAgICAxMTEsMTEwLDEwMSwzMiwxMTgsOTcsMTA4LDExNywxMDEsMzIsMTA1LDExMCwzMiw5NiwxMTUsMTE3LAorICAgIDk4LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMDgsCisgICAgMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTUsOTYsNDQsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTAsMzIsMzIsMzIsMzIsMTE1LDEyMSwxMTUsMTE2LDEwMSwxMDksCisgICAgMzIsMTE5LDEwNSwxMDgsMTA4LDMyLDk5LDExMSwxMTAsMTE1LDEwNSwxMDAsMTAxLDExNCwzMiwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTA4LDExMSw5NywxMDAsMTAxLDEwMCwzMiwxMDIsMTE0LAorICAgIDExMSwxMDksMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMzIsOTcsMTE1LDMyLDExMiwKKyAgICA5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzksMTEwLAorICAgIDEwOCwxMjEsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE1LDMyLDQwLDExNSwxMDEsMTAxLDMyLAorICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTcsOTgsOTksNDYsNzcsMTAxLAorICAgIDExNiw5Nyw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsOTcsMTEwLDEwMCwKKyAgICAxMCwzMiwzMiwzMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk3LAorICAgIDk4LDk5LDQ2LDgwLDk3LDExNiwxMDQsNjksMTEwLDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLAorICAgIDEwMSwxMTQsNDEsMzIsMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsMTA5LDExMSwxMDAsMTA1LDEwMiwKKyAgICAxMjEsMzIsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw4MywxMTIsMTAxLDk5LDMyLDEwNSwxMTAsMTE1LAorICAgIDExNiw5NywxMTAsOTksMTAxLDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3OCw0MSwzLAorICAgIDIxOCw2LDExMSwxMTQsMTA1LDEwMywxMDUsMTEwLDIxOCwxMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LAorICAgIDk1LDExNSwxMTYsOTcsMTE2LDEwMSwyMTgsMTAsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LAorICAgIDEwMywxMDEsOTksMywwLDAsMCwzLDAsMCwwLDYsMCwwLDAsMiwKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsNTQsMCwwLDAsMTI0LDEsMTI0LDAsCisgICAgOTUsMCwxMjQsMiwxMjQsMCw5NSwxLDEyNCwzLDEyNCwwLDk1LDIsMTI0LDQsCisgICAgMTI0LDAsOTUsMywxMjQsNSwxMTQsMzIsMTAzLDAsMTEwLDIsMTAwLDAsMTI0LDAsCisgICAgOTUsNCwxMDAsMSwxMjQsMCw5NSw1LDEwMCwwLDEyNCwwLDk1LDYsMTAwLDAsCisgICAgODMsMCw0MSwyLDc4LDcwLDQxLDcsMTE0LDE1LDAsMCwwLDExNCw5MywwLAorICAgIDAsMCwxMTQsMTAzLDAsMCwwLDExNCwxMDQsMCwwLDAsMjE4LDI2LDExNSwxMTcsCisgICAgOTgsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE1LDEwMSw5NywxMTQsOTksMTA0LDk1LDEwOCwKKyAgICAxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDExNSwyMTgsMTMsOTUsMTE1LDEwMSwxMTYsOTUsMTAyLAorICAgIDEwNSwxMDgsMTAxLDk3LDExNiwxMTYsMTE0LDIxOCw3LDk1LDk5LDk3LDk5LDEwNCwxMDEsMTAwLAorICAgIDQxLDYsMTE0LDI2LDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsOTMsMCwwLAorICAgIDAsMTE0LDEwMywwLDAsMCwxMTQsMTA0LDAsMCwwLDExNCwxMDUsMCwwLDAsCiAgICAgMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LAotICAgIDExNywwLDAsMCwxNzEsMSwwLDAsMTE1LDIsMCwwLDAsMCwyLDEyMiwKLSAgICAyMyw3NywxMTEsMTAwLDExNywxMDgsMTAxLDgzLDExMiwxMDEsOTksNDYsMTA0LDk3LDExNSw5NSwKLSAgICAxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCw5OSwyLDAsMCwwLDAsMCwwLAotICAgIDAsMiwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxOSwwLAotICAgIDAsMCwxMTYsMCwwLDEyNCwxLDAsMTMxLDEsMCwxMjQsMCwwLDk1LDEsCi0gICAgMCwxMDAsMCwwLDgzLDQxLDEsNzgsNDEsMiwyMTgsNCw5OCwxMTEsMTExLDEwOCwKLSAgICAxMTQsMTExLDAsMCwwLDQxLDIsMTE0LDE5LDAsMCwwLDIxOCw1LDExOCw5NywKLSAgICAxMDgsMTE3LDEwMSwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLAotICAgIDAsMCwxMTQsMTE3LDAsMCwwLDE3NSwxLDAsMCwxMTUsMiwwLDAsMCwKLSAgICAwLDIsNDEsMTIsMTE0LDEsMCwwLDAsMTE0LDAsMCwwLDAsMTE0LDIsCi0gICAgMCwwLDAsMTE0LDMsMCwwLDAsMTE0LDIwLDAsMCwwLDExNCw1MiwwLAotICAgIDAsMCwxMTQsMTE4LDAsMCwwLDIxOCw4LDExMiwxMTQsMTExLDExMiwxMDEsMTE0LDExNiwKLSAgICAxMjEsMTE0LDExNiwwLDAsMCwyMTgsNiwxMTUsMTAxLDExNiwxMTYsMTAxLDExNCwxMTQsMTIzLAotICAgIDAsMCwwLDExNCwxMTcsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAotICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxMDYsMCwwLAotICAgIDAsNzksMSwwLDAsMTE1LDIwLDAsMCwwLDEyLDM1LDYsMiwxNSwxLAotICAgIDE1LDExLDEyLDEwLDEyLDEyLDE4LDksMjEsNCwxOCw4LDE4LDQsMTE0LDEwNiwKLSAgICAwLDAsMCwxMTQsMTA3LDAsMCwwLDExNCwxMDksMCwwLDAsOTksMiwwLAotICAgIDAsMCwyLDAsMCwwLDYsMCwwLDAsMTUsMCwwLDAsNjcsMCwKLSAgICAwLDAsMTE1LDIxNywwLDAsMCwxMTYsMCwwLDEyNCwxLDAsMTAwLDEsMCwKLSAgICAxMzEsMiwwLDExNCwxMTAsMCwxMTYsMSwwLDEwMCwyLDAsMTA3LDgsMCwxMTQsCi0gICAgMzMsMCwxMTYsMiwwLDEzMCwxLDAsMTE2LDEsMCwxMDYsMywwLDEyNSw0LAotICAgIDAsMTI0LDMsMCwxMDAsMiwwLDEwNyw4LDAsMTE0LDcwLDAsMTI0LDQsMCwKLSAgICAxMjQsMCwwLDEwMCwzLDAsMTI0LDEsMCwxMzEsMSwxLDgzLDEyNCwzLDAsCi0gICAgMTE0LDgyLDAsMTAzLDAsMCwxMTAsMywwLDEwMCwyLDAsMTI1LDUsMCwxMjQsCi0gICAgNCwwLDEyNCwwLDAsMTAwLDMsMCwxMjQsMSwwLDEwMCw0LDAsMTI0LDUsCi0gICAgMCwxMzEsMSwyLDgzLDEyNCwzLDAsMTAwLDIsMCwxMDcsOCwwLDExNCwxOTIsCi0gICAgMCwxMTYsMCwwLDEyNCwxLDAsMTAwLDUsMCwxMzEsMiwwLDExNCwxODYsMCwKLSAgICAxMjEsMTksMCwxMjQsMSwwLDEwNiw0LDAsMTI0LDAsMCwxMzEsMSwwLDEyNSwKLSAgICAzLDAsODcsMTEzLDE5MiwwLDQsMTE2LDUsMCwxMDcsMTAsMCwxMTQsMTgyLDAsCi0gICAgMSwxLDEsMTAwLDIsMCwxMjUsMywwLDg5LDExMywxOTIsMCw4OCwxMTAsNiwKLSAgICAwLDEwMCw2LDAsMTI1LDMsMCwxMTYsNiwwLDEyNCwwLDAsMTI0LDEsMCwKLSAgICAxMDAsNywwLDEyNCwyLDAsMTAwLDUsMCwxMjQsMywwLDEzMSwyLDIsODMsCi0gICAgNDEsOCwxMjIsNTMsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw5NywzMiwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwzMiw5OCw5NywxMTUsMTAxLDEwMCwzMiwxMTEsCi0gICAgMTEwLDMyLDExOCw5NywxMTQsMTA1LDExMSwxMTcsMTE1LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsCi0gICAgMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LDQ2LDkwLDEyLDEwMywxMDEsMTE2LDk1LDEwMiwKLSAgICAxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSw3OCwxMTQsOTksMCwwLDAsMTE0LDExMCwwLAotICAgIDAsMCwxMTQsMTA5LDAsMCwwLDcwLDExNCwxMDcsMCwwLDAsNDEsNywxMTQsCi0gICAgNCwwLDAsMCwxMTQsMTE5LDAsMCwwLDExNCwxMjAsMCwwLDAsMjE4LDIzLAotICAgIDExNSwxMTIsMTAxLDk5LDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMDIsMTA1LDEwOCwxMDEsOTUsMTA4LAotICAgIDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMTE0LDEwOSwwLDAsMCwxMTQsNzcsMCwwLAotICAgIDAsMTE0LDEwNiwwLDAsMCw0MSw2LDExNCwxNSwwLDAsMCwxMTQsOTksMCwKLSAgICAwLDAsMTE0LDEwNywwLDAsMCwxMTQsMTA5LDAsMCwwLDExNCwxMjgsMCwwLAotICAgIDAsOTAsNiwxMTUsMTAxLDk3LDExNCw5OSwxMDQsMTE0LDEwLDAsMCwwLDExNCwxMCwKLSAgICAwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDg1LDAsMCwwLDE4MCwxLDAsCi0gICAgMCwxMTUsMzQsMCwwLDAsMCwyLDE1LDEsMTIsMSw2LDEsOSwyLAotICAgIDEyLDEsMTYsMSwxOCwxLDE1LDEsNywyLDEyLDEsMTUsMSwzLDEsCi0gICAgMTksMSwxMywxLDE0LDMsNiwyLDExNCw4NSwwLDAsMCw5OSwzLDAsCi0gICAgMCwwLDAsMCwwLDAsOCwwLDAsMCw1MywwLDAsMCw2NywwLAotICAgIDAsMCwxMTUsMTE4LDEsMCwwLDEyMSwxMywwLDEyNCwwLDAsMTA2LDAsMCwKLSAgICAxMjUsMywwLDg3LDExMCwxOCwwLDQsMTE2LDEsMCwxMDcsMTAsMCwxMTQsMzMsCi0gICAgMCwxLDEsMSw4OSwxMTAsMTcsMCw4OCwxMjQsMywwLDEwMCwwLDAsMTA3LAotICAgIDksMCwxMTQsNTAsMCwxMjQsMywwLDgzLDEyNCwwLDAsMTA2LDIsMCwxMjUsCi0gICAgNCwwLDEyNCwxLDAsMTAwLDAsMCwxMDcsOCwwLDExNCwxMDUsMCwxMjEsMTMsCi0gICAgMCwxMjQsMCwwLDEwNiwzLDAsMTI1LDEsMCw4NywxMTAsMTgsMCw0LDExNiwKLSAgICAxLDAsMTA3LDEwLDAsMTE0LDEwNCwwLDEsMSwxLDg5LDExMCwxLDAsODgsCi0gICAgMTIxLDEzLDAsMTI0LDAsMCwxMDYsNCwwLDEyNSw1LDAsODcsMTEwLDI0LDAsCi0gICAgNCwxMTYsMSwwLDEwNywxMCwwLDExNCwxNDQsMCwxLDEsMSwxMDAsMCwwLAotICAgIDEyNSw1LDAsODksMTEwLDEsMCw4OCwxMjQsMiwwLDEwMCwwLDAsMTA3LDgsCi0gICAgMCwxMTQsMjE4LDAsMTI0LDUsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDIxMiwwLAotICAgIDEyMSwxMywwLDEyNCwxLDAsMTA2LDUsMCwxMjUsMiwwLDg3LDExMywyMTgsMCwKLSAgICA0LDExNiwxLDAsMTA3LDEwLDAsMTE0LDIwOCwwLDEsMSwxLDEwMCwwLDAsCi0gICAgMTI1LDIsMCw4OSwxMTMsMjE4LDAsODgsMTEwLDYsMCwxMjQsNSwwLDEyNSwyLAotICAgIDAsMTIxLDEzLDAsMTI0LDAsMCwxMDYsNiwwLDEyNSw2LDAsODcsMTEwLDI0LAotICAgIDAsNCwxMTYsMSwwLDEwNywxMCwwLDExNCwxLDEsMSwxLDEsMTAwLDAsCi0gICAgMCwxMjUsNiwwLDg5LDExMCwxLDAsODgsMTIxLDE5LDAsMTE2LDcsMCwxMjQsCi0gICAgMCwwLDEwNiw4LDAsMTMxLDEsMCwxMjUsNywwLDg3LDExMCwyNCwwLDQsCi0gICAgMTE2LDEsMCwxMDcsMTAsMCwxMTQsNDcsMSwxLDEsMSwxMDAsMCwwLDEyNSwKLSAgICA3LDAsODksMTEwLDEsMCw4OCwxMTYsOSwwLDEyNCw0LDAsMTI0LDEsMCwKLSAgICAxMDAsMSwwLDEyNCwyLDAsMTMxLDIsMSwxMjUsMywwLDEyNCw1LDAsMTAwLAotICAgIDAsMCwxMDcsOCwwLDExNCw4NywxLDEwMCwyLDAsMTEwLDMsMCwxMDAsMywKLSAgICAwLDEyNCwzLDAsOTUsMTAsMCwxMjQsNiwwLDEyNCwzLDAsOTUsMTEsMCwKLSAgICAxMjQsNywwLDEyNCwzLDAsOTUsMTIsMCwxMjQsMywwLDgzLDQxLDQsNzgsCi0gICAgMTE0LDEwNywwLDAsMCw3MCw4NCw0MSwxMywxMTQsOTUsMCwwLDAsMTE0LDk2LAotICAgIDAsMCwwLDExNCwxLDAsMCwwLDExNCw5MSwwLDAsMCwxMTQsOTgsMCwKLSAgICAwLDAsOTAsNyw5NSw3OSw4Miw3Myw3MSw3Myw3OCwyMTgsMTAsOTUsOTUsOTksCi0gICAgOTcsOTksMTA0LDEwMSwxMDAsOTUsOTUsMjE4LDQsMTA4LDEwNSwxMTUsMTE2LDIxOCw4LDk1LAotICAgIDk1LDExMiw5NywxMTYsMTA0LDk1LDk1LDExNCwxMDYsMCwwLDAsMTE0LDExMSwwLDAsCi0gICAgMCwxMTQsMTE2LDAsMCwwLDExNCwxMTAsMCwwLDAsNDEsOCwxMTQsODksMCwKLSAgICAwLDAsMTE0LDk5LDAsMCwwLDExNCwxMDcsMCwwLDAsMTE0LDg4LDAsMCwKLSAgICAwLDExNCwxNSwwLDAsMCw5MCw4LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLAotICAgIDExNCwxMTYsMCwwLDAsMTE0LDExMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAotICAgIDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTcsOTUsMTE1LDExMiwxMDEsOTksCi0gICAgOTUsMTAyLDExNCwxMTEsMTA5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDIwOSwxLDAsMCwKLSAgICAxMTUsNzIsMCwwLDAsMCwyLDMsMSwxMywxLDEzLDEsNSwyLDEyLAotICAgIDEsNCwyLDksMSwxMiwxLDMsMSwxMywxLDEzLDIsNSwxLDMsCi0gICAgMSwxMywxLDEzLDEsMTEsMSwxMiwxLDEyLDEsMywxLDEzLDEsMTMsCi0gICAgMSwxNCwyLDYsMSwzLDEsMTMsMSwxMywxLDExLDEsMywxLDE5LAotICAgIDEsMTMsMSwxMSwyLDIxLDEsMjcsMSw5LDEsOSwxLDExNCwxMzIsMCwKLSAgICAwLDAsMjE4LDgsMTExLDExOCwxMDEsMTE0LDExNCwxMDUsMTAwLDEwMSw3MCw5OSwyLDAsCi0gICAgMCwwLDEsMCwwLDAsNSwwLDAsMCw1OSwwLDAsMCw2NywwLAotICAgIDAsMCwxMTUsNTQsMiwwLDAsMTI0LDIsMCwxMTUsMzAsMCwxMTYsMCwwLAotICAgIDEyNCwxLDAsMTAwLDEsMCwxMDAsMCwwLDEzMSwzLDAsMTAwLDAsMCwxMDcsCi0gICAgOCwwLDExNCw2NywwLDEyMSwxNiwwLDEyNCwwLDAsMTA2LDEsMCwxMjQsMSwKLSAgICAwLDk1LDIsMCw4NywxMTAsMTgsMCw0LDExNiwzLDAsMTA3LDEwLDAsMTE0LAotICAgIDY2LDAsMSwxLDEsODksMTEwLDEsMCw4OCwxMjQsMiwwLDExNSw5NywwLAotICAgIDExNiwwLDAsMTI0LDEsMCwxMDAsMiwwLDEwMCwwLDAsMTMxLDMsMCwxMDAsCi0gICAgMCwwLDEwNyw4LDAsMTE0LDIyMSwwLDEyNCwwLDAsMTA2LDQsMCwxMjUsMywKLSAgICAwLDEyNCwzLDAsMTAwLDAsMCwxMDcsOCwwLDExNCwxODcsMCwxMjQsMCwwLAotICAgIDEwNiw1LDAsMTAwLDAsMCwxMDcsOSwwLDExNCwxODcsMCwxMTYsNiwwLDEwMCwKLSAgICAwLDAsMTA3LDgsMCwxMTQsMTUxLDAsMTE2LDcsMCwxMzAsMSwwLDExNiw2LAotICAgIDAsMTA2LDgsMCwxMjUsNCwwLDEyNCw0LDAsMTA2LDksMCwxMjQsNCwwLAotICAgIDEzMSwxLDAsMTI1LDMsMCwxMjQsMCwwLDEwNiw1LDAsMTI0LDMsMCw5NSwKLSAgICAxMCwwLDEyMSwxMywwLDEyNCwzLDAsMTI0LDEsMCw5NSwxMSwwLDg3LDExMCwKLSAgICAxOCwwLDQsMTE2LDMsMCwxMDcsMTAsMCwxMTQsMjIwLDAsMSwxLDEsODksCi0gICAgMTEwLDEsMCw4OCwxMjQsMiwwLDExNSwyNTEsMCwxMTYsMCwwLDEyNCwxLDAsCi0gICAgMTAwLDMsMCwxMDAsMCwwLDEzMSwzLDAsMTAwLDAsMCwxMDcsOCwwLDExNCwKLSAgICAzMiwxLDEyMSwxNiwwLDEyNCwwLDAsMTA2LDEyLDAsMTI0LDEsMCw5NSwxMywKLSAgICAwLDg3LDExMCwxOCwwLDQsMTE2LDMsMCwxMDcsMTAsMCwxMTQsMzEsMSwxLAotICAgIDEsMSw4OSwxMTAsMSwwLDg4LDEyMSwxMywwLDEyNCwwLDAsMTI0LDEsMCwKLSAgICA5NSwxNCwwLDg3LDExMCwxOCwwLDQsMTE2LDMsMCwxMDcsMTAsMCwxMTQsNjUsCi0gICAgMSwxLDEsMSw4OSwxMTAsMSwwLDg4LDEyNCwyLDAsMTE1LDk2LDEsMTE2LAotICAgIDAsMCwxMjQsMSwwLDEwMCw0LDAsMTAwLDAsMCwxMzEsMywwLDEwMCwwLAotICAgIDAsMTA3LDgsMCwxMTQsMTQ4LDEsMTI0LDAsMCwxMDYsNSwwLDEwMCwwLDAsCi0gICAgMTA3LDksMCwxMTQsMTQ4LDEsMTIxLDE2LDAsMTI0LDAsMCwxMDYsNSwwLDEyNCwKLSAgICAxLDAsOTUsMTUsMCw4NywxMTAsMTgsMCw0LDExNiwzLDAsMTA3LDEwLDAsCi0gICAgMTE0LDE0NywxLDEsMSwxLDg5LDExMCwxLDAsODgsMTI0LDAsMCwxMDYsMTYsCi0gICAgMCwxMTQsNTAsMiwxMjQsMiwwLDExNSwxODcsMSwxMTYsMCwwLDEyNCwxLDAsCi0gICAgMTAwLDUsMCwxMDAsMCwwLDEzMSwzLDAsMTAwLDAsMCwxMDcsOCwwLDExNCwKLSAgICAyMjQsMSwxMjEsMTYsMCwxMjQsMCwwLDEwNiwxNywwLDEyNCwxLDAsOTUsMTgsCi0gICAgMCw4NywxMTAsMTgsMCw0LDExNiwzLDAsMTA3LDEwLDAsMTE0LDIyMywxLDEsCi0gICAgMSwxLDg5LDExMCwxLDAsODgsMTI0LDIsMCwxMTUsMjU0LDEsMTE2LDAsMCwKLSAgICAxMjQsMSwwLDEwMCw2LDAsMTAwLDAsMCwxMzEsMywwLDEwMCwwLDAsMTA3LAotICAgIDgsMCwxMTQsNTAsMiwxMjQsMCwwLDEwNiwxOSwwLDEwMCwwLDAsMTA3LDksCi0gICAgMCwxMTQsNTAsMiwxMjEsMTYsMCwxMjQsMCwwLDEwNiwxOSwwLDEyNCwxLDAsCi0gICAgOTUsMjAsMCw4NywxMTAsMTgsMCw0LDExNiwzLDAsMTA3LDEwLDAsMTE0LDQ5LAotICAgIDIsMSwxLDEsODksMTEwLDEsMCw4OCwxMjQsMSwwLDgzLDQxLDcsNzgsCi0gICAgMTE0LDEsMCwwLDAsMTE0LDkxLDAsMCwwLDIxOCwxMSw5NSw5NSwxMTIsOTcsCi0gICAgOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsMTE0LDEzMSwwLDAsMCwxMTQsOTgsMCwwLAotICAgIDAsMTE0LDEyOSwwLDAsMCw0MSwyMSwxMTQsNiwwLDAsMCwxMTQsMTUsMCwKLSAgICAwLDAsMTE0LDEsMCwwLDAsMTE0LDk2LDAsMCwwLDExNCw5OSwwLDAsCi0gICAgMCwxMTQsMTEwLDAsMCwwLDExNCwxMTksMCwwLDAsMTE0LDEyMCwwLDAsMCwKLSAgICAyMTgsMTYsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLAotICAgIDEwMSwxMTQsMjE4LDcsOTUsOTUsMTEwLDEwMSwxMTksOTUsOTUsOTAsNSw5NSwxMTIsOTcsCi0gICAgMTE2LDEwNCwxMTQsOTEsMCwwLDAsMTE0LDEyMywwLDAsMCwxMTQsMTM0LDAsMCwKLSAgICAwLDExNCw5NSwwLDAsMCwxMTQsMTMxLDAsMCwwLDExNCwxMTcsMCwwLDAsCi0gICAgMTE0LDEwNywwLDAsMCwxMTQsOTgsMCwwLDAsMTE0LDExNiwwLDAsMCwxMTQsCi0gICAgMTI5LDAsMCwwLDQxLDUsMTE0LDg4LDAsMCwwLDExNCw4OSwwLDAsMCwKLSAgICAxMTQsMTMzLDAsMCwwLDExNCw5OSwwLDAsMCwxMTQsMTM1LDAsMCwwLDExNCwKLSAgICAxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxOCwKLSAgICA5NSwxMDUsMTEwLDEwNSwxMTYsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsOTcsMTE2LDExNiwKLSAgICAxMTQsMTE1LDI1NCwxLDAsMCwxMTUsOTIsMCwwLDAsMCw0LDMwLDEsMywKLSAgICAxLDE2LDEsMTMsMSw1LDIsMzAsMSw5LDEsMTIsMiwxNSwxLDEyLAotICAgIDEsNiwxLDksMiwxNSwxLDEyLDEsMywxLDEzLDEsMTMsMSw1LAotICAgIDIsMzAsMSwzLDEsMTYsMSwxMywxLDUsMiwzLDEsMTMsMSwxMywKLSAgICAxLDUsMiwzMCwxLDE1LDEsMywxLDE2LDEsMTMsMSw1LDIsOSwKLSAgICAxLDMwLDEsMywxLDE2LDEsMTMsMSw1LDIsMzAsMSwxNSwxLDMsCi0gICAgMSwxNiwxLDEzLDEsNSwxLDExNCwxMzcsMCwwLDAsOTksMSwwLDAsCi0gICAgMCwwLDAsMCwwLDIsMCwwLDAsNSwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsMTI5LDAsMCwwLDEwMCwxLDAsMTI1LDEsMCwxMTYsMCwwLDEyNCwKLSAgICAwLDAsMTA2LDEsMCwxMDAsMiwwLDEzMSwyLDAsMTE0LDQ1LDAsMTI0LDAsCi0gICAgMCwxMDYsMSwwLDEwNiwyLDAsMTI0LDAsMCwxMzEsMSwwLDEyNSwxLDAsCi0gICAgMTEwLDQwLDAsMTE2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTAwLDMsMCwxMzEsCi0gICAgMiwwLDExNCw4NSwwLDExNiwzLDAsMTA2LDQsMCwxMDAsNCwwLDExNiw1LAotICAgIDAsMTAwLDUsMCwxMDAsNiwwLDEzMSwyLDEsMSwxMjQsMSwwLDEwMCwxLAotICAgIDAsMTA3LDgsMCwxMTQsMTEyLDAsMTE2LDYsMCwxMjQsMCwwLDEwNiw3LDAsCi0gICAgMTMxLDEsMCwxMjUsMSwwLDExNiw4LDAsMTI0LDAsMCwxMjQsMSwwLDEzMSwKLSAgICAyLDAsMSwxMjQsMSwwLDgzLDQxLDcsMTIyLDQzLDY3LDExNCwxMDEsOTcsMTE2LAotICAgIDEwMSwzMiw5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OCw5NywxMTUsMTAxLDEwMCwKLSAgICAzMiwxMTEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExMiwxMTQsMTExLDExOCwxMDUsMTAwLDEwMSwxMDAsCi0gICAgMzIsMTE1LDExMiwxMDEsOTksNDYsNzgsMjE4LDEzLDk5LDExNCwxMDEsOTcsMTE2LDEwMSw5NSwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwyMTgsMTEsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsMTIyLDg3LDExNSwxMTYsOTcsMTE0LDExNiwxMDUsMTEwLDEwMywzMiwxMDUsMTEwLAotICAgIDMyLDgwLDEyMSwxMTYsMTA0LDExMSwxMTAsMzIsNTEsNDYsNTQsNDQsMzIsMTA4LDExMSw5NywKLSAgICAxMDAsMTAxLDExNCwxMTUsMzIsMTAwLDEwMSwxMDIsMTA1LDExMCwxMDUsMTEwLDEwMywzMiwxMDEsMTIwLAotICAgIDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MCw0MSwzMiwxMDksMTE3LDExNSwxMTYsCi0gICAgMzIsOTcsMTA4LDExNSwxMTEsMzIsMTAwLDEwMSwxMDIsMTA1LDExMCwxMDEsMzIsOTksMTE0LDEwMSwKLSAgICA5NywxMTYsMTAxLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDQxLDkwLDEwLDExNSwxMTYsCi0gICAgOTcsOTksMTA3LDEwOCwxMDEsMTE4LDEwMSwxMDgsMjMzLDIsMCwwLDAsNDEsOSwxMTQsCi0gICAgNCwwLDAsMCwxMTQsOTksMCwwLDAsMTE0LDEzOCwwLDAsMCwyMTgsOSwKLSAgICA5NSwxMTksOTcsMTE0LDExMCwxMDUsMTEwLDEwMywxMTUsMjE4LDQsMTE5LDk3LDExNCwxMTAsMjE4LAotICAgIDE4LDY4LDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsODcsOTcsMTE0LDExMCwKLSAgICAxMDUsMTEwLDEwMywxMTQsMTYsMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwxMzcsMCwKLSAgICAwLDAsNDEsMiwxMTQsODgsMCwwLDAsMTE0LDg5LDAsMCwwLDExNCwxMCwKLSAgICAwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxNiwxMDksCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTE1LDExMiwxMDEsOTksNTgsCi0gICAgMiwwLDAsMTE1LDIwLDAsMCwwLDAsMyw2LDEsMTgsMywyMSwxLAotICAgIDE4LDEsOSwyLDEzLDEsMTIsMSwxNSwxLDEzLDEsMTE0LDE0NCwwLDAsCi0gICAgMCw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLDAsCi0gICAgMCwwLDY3LDAsMCwwLDExNSwxNDksMCwwLDAsMTI0LDAsMCwxMDYsMCwKLSAgICAwLDEwMCwxLDAsMTA3LDgsMCwxMTQsMjEsMCwxMDAsMiwwLDExMCw2LDAsCi0gICAgMTI0LDAsMCwxMDYsMCwwLDEyNSwxLDAsMTI0LDAsMCwxMDYsMSwwLDEwMCwKLSAgICAxLDAsMTA3LDgsMCwxMTQsOTUsMCwxMjQsMCwwLDEwNiwyLDAsMTAwLDEsCi0gICAgMCwxMDcsOCwwLDExNCw3MywwLDEwMCwzLDAsMTA2LDMsMCwxMjQsMSwwLAotICAgIDEzMSwxLDAsODMsMTAwLDQsMCwxMDYsMywwLDEyNCwxLDAsMTI0LDAsMCwKLSAgICAxMDYsMiwwLDEzMSwyLDAsODMsMTEwLDUwLDAsMTI0LDAsMCwxMDYsNCwwLAotICAgIDExNCwxMjMsMCwxMDAsNSwwLDEwNiwzLDAsMTI0LDEsMCwxMjQsMCwwLDEwNiwKLSAgICAxLDAsMTMxLDIsMCw4MywxMDAsNiwwLDEwNiwzLDAsMTI0LDAsMCwxMDYsCi0gICAgMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMiwwLDgzLDEwMCwxLDAsODMsCi0gICAgNDEsNywxMjIsMzgsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTQsCi0gICAgMTAxLDExMiwxMTQsMzIsMTE2LDExMSwzMiwxMTcsMTE1LDEwMSwzMiwxMDIsMTExLDExNCwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0Niw3OCwxMTQsOTMsMCwwLDAsCi0gICAgMTIyLDEzLDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDYyLDEyMiwKLSAgICAyMCw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiw0MCwxMjMsCi0gICAgMzMsMTE0LDEyNSw0MSw2MiwxMjIsMjMsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLAotICAgIDMzLDExNCwxMjUsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDEyMywzMywxMTQsMTI1LDYyLDEyMiwxOCwKLSAgICA2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiw0MCwxMjMsMTI1LAotICAgIDQxLDYyLDQxLDUsMTE0LDE1LDAsMCwwLDExNCwxMDcsMCwwLDAsMTE0LDk5LAotICAgIDAsMCwwLDExNCw1MCwwLDAsMCwxMTQsMTE3LDAsMCwwLDQxLDIsMTE0LAotICAgIDg4LDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLAotICAgIDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsOTcsMCwwLDAsNzYsMiwwLAotICAgIDAsMTE1LDE2LDAsMCwwLDAsMywzMCwxLDE1LDEsMTUsMSwxMywyLAotICAgIDIyLDIsOSwxLDE5LDIsMTE0LDk3LDAsMCwwLDk5LDIsMCwwLDAsCi0gICAgMCwwLDAsMCw0LDAsMCwwLDEyLDAsMCwwLDY3LDAsMCwwLAotICAgIDExNSwyNTMsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNSwyLDAsMTE2LDEsCi0gICAgMCwxMDYsMiwwLDEzMSwwLDAsMSwxMTYsMywwLDEyNCwyLDAsMTMxLDEsCi0gICAgMCwxNDMsMjA4LDAsMSwxMTYsNCwwLDEwNiw1LDAsMTA2LDYsMCwxMjQsMiwKLSAgICAwLDEzMSwxLDAsMTI0LDEsMCwxMDcsOSwwLDExNCw4OSwwLDEwMCwxLDAsCi0gICAgMTA2LDcsMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDMsMCwxMTYsOCwwLDEyNCwKLSAgICAzLDAsMTAwLDIsMCwxMjQsMiwwLDEzMSwxLDEsMTMwLDEsMCwxMjQsMCwKLSAgICAwLDEwNiw5LDAsMTAwLDMsMCwxMDcsOCwwLDExNCwxNjMsMCwxMjQsMCwwLAotICAgIDEwNiwxMCwwLDEwMCwzLDAsMTA3LDgsMCwxMTQsMTQwLDAsMTE2LDgsMCwxMDAsCi0gICAgNCwwLDEwMCwyLDAsMTI0LDAsMCwxMDYsMCwwLDEzMSwxLDEsMTMwLDEsCi0gICAgMCwxMTYsMTEsMCwxMjQsMCwwLDEyNCwxLDAsMTAwLDUsMCwxMDAsNiwwLAotICAgIDEzMSwyLDEsMSwxMjQsMSwwLDgzLDExNiwxMSwwLDEyNCwwLDAsMTI0LDEsCi0gICAgMCwxMDAsNSwwLDEwMCw2LDAsMTMxLDIsMSwxLDExNiwxMiwwLDEyNCwwLAotICAgIDAsMTA2LDksMCwxMDAsNywwLDEzMSwyLDAsMTE1LDIxOSwwLDEyNCwwLDAsCi0gICAgMTA2LDksMCwxMDYsMTMsMCwxMjQsMiwwLDEzMSwxLDAsMSwxMTAsMTYsMCwKLSAgICAxMjQsMCwwLDEwNiw5LDAsMTA2LDE0LDAsMTI0LDEsMCwxMzEsMSwwLDEsCi0gICAgODcsMTAwLDMsMCw4MSw4Miw4OCwxMTYsNCwwLDEwNiw1LDAsMTI0LDIsMCwKLSAgICAyNSw4Myw0MSw4LDEyMiw1MSw2OSwxMjAsMTAxLDk5LDExNywxMTYsMTAxLDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDExNSwxMTIsMTAxLDk5LDMyLDEwNSwxMTAsMzIsOTcsMTEwLDMyLDEwMSwxMjAsMTA1LAotICAgIDExNSwxMTYsMTA1LDExMCwxMDMsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzksMTE1LDMyLDExMCwKLSAgICA5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDQ2LDEyMiwzMCwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiwxMTAsMTExLDExNiwzMiwxMDUsMTEwLDMyLDExNSwxMjEsCi0gICAgMTE1LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwxMTQsMTUsMCwwLDAsNzgsMTIyLAotICAgIDE0LDEwOSwxMDUsMTE1LDExNSwxMDUsMTEwLDEwMywzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNCwKLSAgICAxMzMsMCwwLDAsODQsMTE0LDEzOSwwLDAsMCw0MSwxNSwxMTQsMTUsMCwwLAotICAgIDAsMTE0LDU3LDAsMCwwLDIxOCwxMiw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDk1LAotICAgIDEwOCwxMTEsOTksMTA3LDExNCw1NCwwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LDIxLAotICAgIDAsMCwwLDExNCw0MiwwLDAsMCwxMTQsNTAsMCwwLDAsMTE0LDc3LDAsCi0gICAgMCwwLDExNCw5OSwwLDAsMCwxMTQsMTEwLDAsMCwwLDExNCwxMzcsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMjE4LDExLDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDExNCwxMzksMCwwLDAsNDEsNCwxMTQsODgsMCwwLDAsMTE0LAotICAgIDg5LDAsMCwwLDExNCwxNSwwLDAsMCwyMTgsMywxMDksMTE1LDEwMywxMTQsMTAsCi0gICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsODYsMCwKLSAgICAwLDAsOTMsMiwwLDAsMTE1LDMyLDAsMCwwLDAsMiw5LDEsMTAsCi0gICAgMSwxMywxLDI0LDEsMTUsMSwxOCwxLDE1LDEsMTUsMSwyMSwyLDE5LAotICAgIDEsNCwxLDE5LDEsMTgsNCwxOSwyLDIzLDEsMTE0LDg2LDAsMCwwLAotICAgIDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDI3LDAsMCwKLSAgICAwLDY3LDAsMCwwLDExNSwzLDEsMCwwLDEyNCwwLDAsMTA2LDAsMCwKLSAgICAxMDYsMSwwLDEyNCwwLDAsMTA2LDIsMCwxMzEsMSwwLDEsMTE2LDMsMCwKLSAgICAxMDYsNCwwLDEyNCwwLDAsMTA2LDIsMCwyNSwxMjUsMSwwLDExNiw1LDAsCi0gICAgMTI0LDEsMCwxMDAsMSwwLDEwMCwwLDAsMTMxLDMsMCwxMDAsMCwwLDEwNywKLSAgICA4LDAsMTE0LDk2LDAsMTIxLDE2LDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLAotICAgIDAsOTUsNiwwLDg3LDExMCwxOCwwLDQsMTE2LDcsMCwxMDcsMTAsMCwxMTQsCi0gICAgOTUsMCwxLDEsMSw4OSwxMTAsMSwwLDg4LDExNiw1LDAsMTI0LDEsMCwKLSAgICAxMDAsMiwwLDEwMCwwLDAsMTMxLDMsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LAotICAgIDE5NywwLDEyMSw1NiwwLDEyNCwxLDAsMTA2LDgsMCwxMjQsMSwwLDk1LDksCi0gICAgMCwxMTYsMTAsMCwxMjQsMSwwLDEwMCwzLDAsMTMxLDIsMCwxMTUsMTc1LDAsCi0gICAgMTI0LDAsMCwxMDYsMiwwLDEwNiwxMSwwLDEwMCw0LDAsMTMxLDEsMCwxMDAsCi0gICAgNSwwLDI1LDEyNCwxLDAsOTUsOSwwLDg3LDExMCwxOCwwLDQsMTE2LDcsCi0gICAgMCwxMDcsMTAsMCwxMTQsMTk2LDAsMSwxLDEsODksMTEwLDEsMCw4OCwxMTYsCi0gICAgNSwwLDEyNCwxLDAsMTAwLDYsMCwxMDAsMCwwLDEzMSwzLDAsMTAwLDAsCi0gICAgMCwxMDcsOCwwLDExNCwyNTUsMCwxMjEsMTMsMCwxMjQsMCwwLDEyNCwxLDAsCi0gICAgOTUsMTIsMCw4NywxMTAsMTgsMCw0LDExNiw3LDAsMTA3LDEwLDAsMTE0LDI1NCwKLSAgICAwLDEsMSwxLDg5LDExMCwxLDAsODgsMTI0LDEsMCw4Myw0MSw3LDc4LAotICAgIDExNCw5MSwwLDAsMCwxMTQsMTM0LDAsMCwwLDExNCwxMzEsMCwwLDAsMTE0LAotICAgIDEyMSwwLDAsMCwxMTQsMzMsMCwwLDAsMTE0LDk1LDAsMCwwLDQxLDEzLAotICAgIDExNCw5OSwwLDAsMCwxMTQsMTQ2LDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsCi0gICAgMTQsMCwwLDAsMTE0LDIxLDAsMCwwLDExNCw2LDAsMCwwLDExNCw5MSwKLSAgICAwLDAsMCwxMTQsOTYsMCwwLDAsMTE0LDEsMCwwLDAsMTE0LDEzNCwwLAotICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsMTIyLDAsMCwwLDExNCw5NSwwLDAsCi0gICAgMCw0MSwyLDExNCw4OCwwLDAsMCwxMTQsODksMCwwLDAsMTE0LDEwLDAsCi0gICAgMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDI1LDk1LDEwOCwKLSAgICAxMTEsOTcsMTAwLDk1LDk4LDk3LDk5LDEwNywxMTksOTcsMTE0LDEwMCw5NSw5OSwxMTEsMTA5LAotICAgIDExMiw5NywxMTYsMTA1LDk4LDEwOCwxMDEsMTE4LDIsMCwwLDExNSw0MCwwLDAsMCwKLSAgICAwLDQsMTksMiwxNiwxLDI0LDEsMywxLDE2LDEsMTMsMSw1LDEsCi0gICAgMjQsMSwzLDQsMTIsMSwxNSwxLDI5LDEsMTMsMSw1LDEsMjQsMSwKLSAgICAzLDEsMTMsMSwxMywxLDUsMSwxMTQsMTQ4LDAsMCwwLDk5LDEsMCwKLSAgICAwLDAsMCwwLDAsMCwyLDAsMCwwLDExLDAsMCwwLDY3LDAsCi0gICAgMCwwLDExNSwxNTksMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEwMCwwLDAsCi0gICAgMTA3LDksMCwxMTQsNDMsMCwxMTYsMSwwLDEyNCwwLDAsMTA2LDAsMCwxMDAsCi0gICAgMSwwLDEzMSwyLDAsMTE1LDQzLDAsMTE2LDIsMCwxMjQsMCwwLDEzMSwxLAotICAgIDAsODMsMTE2LDMsMCwxMjQsMCwwLDEzMSwxLDAsMTI1LDEsMCwxMTYsNCwKLSAgICAwLDEyNCwxLDAsMTMxLDEsMCwxNDMsNzUsMCwxLDEyNCwwLDAsMTA2LDAsCi0gICAgMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDEyMiwwLDEyNCwwLDAsMTA2LDUsMCwKLSAgICAxMDAsMCwwLDEwNyw4LDAsMTE0LDEzOCwwLDExNiw2LDAsMTAwLDIsMCwxMDAsCi0gICAgMywwLDEyNCwwLDAsMTA2LDcsMCwxMzEsMSwxLDEzMCwxLDAsMTEwLDE2LAotICAgIDAsMTI0LDAsMCwxMDYsMCwwLDEwNiw4LDAsMTI0LDEsMCwxMzEsMSwwLAotICAgIDEsODcsMTAwLDAsMCw4MSw4Miw4OCwxMTYsOSwwLDEwNiwxMCwwLDEyNCwwLAotICAgIDAsMTA2LDcsMCwyNSw4Myw0MSw0LDc4LDExNCwxMzksMCwwLDAsMTIyLDE0LAotICAgIDEwOSwxMDUsMTE1LDExNSwxMDUsMTEwLDEwMywzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNCwxNSwKLSAgICAwLDAsMCw0MSwxMSwxMTQsOTksMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDE0OCwwLDAsMCwxMTQsMTQ0LDAsMCwwLDExNCwxMDIsMCwwLDAsMTE0LDExMCwKLSAgICAwLDAsMCwxMTQsNzcsMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwxMzksMCwKLSAgICAwLDAsMTE0LDE0LDAsMCwwLDExNCwyMSwwLDAsMCw0MSwyLDExNCw4OCwKLSAgICAwLDAsMCwxMTQsODksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAotICAgIDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE0LDk1LDEwOCwxMTEsOTcsMTAwLDk1LDExNywKLSAgICAxMTAsMTA4LDExMSw5OSwxMDcsMTAxLDEwMCwxNDcsMiwwLDAsMTE1LDIwLDAsMCwwLAotICAgIDAsMiwxNSwyLDE4LDEsMTAsMiwxMiwxLDEzLDEsMTUsMSwxNSwxLAotICAgIDI0LDMsMjMsNSwxMTQsMTQ5LDAsMCwwLDk5LDEsMCwwLDAsMCwwLAotICAgIDAsMCwxLDAsMCwwLDksMCwwLDAsNjcsMCwwLDAsMTE1LDQ3LAotICAgIDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMzEsMCwwLDEsMTE2LDIsMCwKLSAgICAxMjQsMCwwLDEwNiwzLDAsMTMxLDEsMCwxNDMsMTUsMCwxLDExNiw0LDAsCi0gICAgMTI0LDAsMCwxMzEsMSwwLDgzLDg3LDEwMCwxLDAsODEsODIsODgsMTAwLDEsCi0gICAgMCw4Myw0MSwyLDEyMiwxOTEsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw5NywzMiwxMTAsCi0gICAgMTAxLDExOSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsCi0gICAgNDQsMzIsMTA4LDExMSw5NywxMDAsMTAxLDEwMCwzMiw5OCwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgMTE1LDExMiwxMDEsOTksMzksMTE1LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAsMTAsCi0gICAgMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsCi0gICAgMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk3LDEwMCwxMDAsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwNSwKLSAgICAxMTYsMTE1LDMyLDExMiw5NywxMTQsMTAxLDExMCwxMTYsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCi0gICAgNzMsMTAyLDMyLDk3LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsOTcsCi0gICAgMTA4LDExNCwxMDEsOTcsMTAwLDEyMSwzMiwxMDUsMTEwLDMyLDExNSwxMjEsMTE1LDQ2LDEwOSwxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDExNSw0NCwzMiwxMTYsMTA0LDk3LDExNiwzMiwxMDEsMTIwLDEwNSwxMTUsCi0gICAgMTE2LDEwNSwxMTAsMTAzLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwMywxMDEsMTE2LDExNSwKLSAgICAxMCwzMiwzMiwzMiwzMiw5OSwxMDgsMTExLDk4LDk4LDEwMSwxMTQsMTAxLDEwMCw0NiwxMCwKLSAgICAxMCwzMiwzMiwzMiwzMiw3OCw0MSw1LDExNCw1NywwLDAsMCwxMTQsMTQ1LDAsCi0gICAgMCwwLDExNCw1NCwwLDAsMCwxMTQsMTUsMCwwLDAsMTE0LDE0OSwwLDAsCi0gICAgMCw0MSwxLDExNCw4OCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCi0gICAgMCwwLDExNCwxMSwwLDAsMCwxMTQsODcsMCwwLDAsMTcwLDIsMCwwLAotICAgIDExNSw2LDAsMCwwLDAsOSwxMCwxLDE2LDEsMTE0LDg3LDAsMCwwLAotICAgIDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDUsMCwwLAotICAgIDAsNjQsMCwwLDAsMTE1LDIwNSwwLDAsMCwxMDEsMCwwLDkwLDEsMCwKLSAgICAxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDEsNCwwLDEwMCwKLSAgICAyLDAsMTAwLDMsMCwxMzIsMCwwLDEzMSwxLDAsOTAsNSwwLDEwMSw2LAotICAgIDAsMTAwLDQsMCwxMDAsNCwwLDEwMCw1LDAsMTAwLDYsMCwxMzIsMiwwLAotICAgIDEzMSwxLDAsOTAsNywwLDEwMSw2LDAsMTAwLDQsMCwxMDAsNywwLDEwMCwKLSAgICA4LDAsMTMyLDEsMCwxMzEsMSwwLDkwLDgsMCwxMDEsNiwwLDEwMCw5LAotICAgIDAsMTAwLDEwLDAsMTMyLDAsMCwxMzEsMSwwLDkwLDksMCwxMDEsNiwwLAotICAgIDEwMCwxMSwwLDEwMCwxMiwwLDEzMiwwLDAsMTMxLDEsMCw5MCwxMCwwLDEwMSwKLSAgICA2LDAsMTAxLDExLDAsMTAwLDEzLDAsMTAwLDE0LDAsMTMyLDAsMCwxMzEsMSwKLSAgICAwLDEzMSwxLDAsOTAsMTIsMCwxMDEsNiwwLDEwMSwxMSwwLDEwMCwxNSwwLAotICAgIDEwMCwxNiwwLDEzMiwwLDAsMTMxLDEsMCwxMzEsMSwwLDkwLDEzLDAsMTAxLAotICAgIDYsMCwxMDEsMTEsMCwxMDAsMTcsMCwxMDAsMTgsMCwxMzIsMCwwLDEzMSwxLAotICAgIDAsMTMxLDEsMCw5MCwxNCwwLDEwMSw2LDAsMTAxLDE1LDAsMTMxLDEsMCwKLSAgICA5MCwxNiwwLDEwMCw0LDAsODMsNDEsMTksMjE4LDE1LDY2LDExNywxMDUsMTA4LDExNiwKLSAgICAxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCwxMjIsMTQ0LDc3LDEwMSwxMTYsOTcsCi0gICAgMzIsMTEyLDk3LDExNiwxMDQsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTAyLDExMSwxMTQsCi0gICAgMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgMjcsMCwwLDAsOTksMSwwLDAsMTE1LDE0LDAsMCwwLDAsMiw2LAorICAgIDEsNiwxLDYsMSw2LDEsMTQsMyw2LDEsMTIyLDE5LDc3LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsODMsMTEyLDEwMSw5OSw0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsCisgICAgOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNCwwLDAsCisgICAgMCw2NywwLDAsMCwxMTUsMTAyLDAsMCwwLDEwMCwxLDEwNiwwLDEyNCwwLAorICAgIDEwNiwxLDEzMSwxLDEwMCwyLDEwNiwwLDEyNCwwLDEwNiwyLDEzMSwxLDEwMywyLAorICAgIDEyNSwxLDEyNCwwLDEwNiwzLDEwMCwwLDEwNyw5LDExNCw1MiwxMjQsMSwxMDYsNCwKKyAgICAxMDAsMywxMDYsMCwxMjQsMCwxMDYsMywxMzEsMSwxMzEsMSwxLDAsMTI0LDAsCisgICAgMTA2LDUsMTAwLDAsMTA3LDksMTE0LDgwLDEyNCwxLDEwNiw0LDEwMCw0LDEwNiwwLAorICAgIDEyNCwwLDEwNiw1LDEzMSwxLDEzMSwxLDEsMCwxMDAsNSwxMDYsMCwxMjQsMCwKKyAgICAxMDYsNiwxMDYsNywxMDAsNiwxMDYsOCwxMjQsMSwxMzEsMSwxMzEsMiw4MywwLAorICAgIDQxLDcsNzgsMTIyLDksMTEwLDk3LDEwOSwxMDEsNjEsMTIzLDMzLDExNCwxMjUsMTIyLDExLAorICAgIDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNjEsMTIzLDMzLDExNCwxMjUsMTIyLDExLDExMSwxMTQsMTA1LAorICAgIDEwMywxMDUsMTEwLDYxLDEyMywzMywxMTQsMTI1LDEyMiwyOSwxMTUsMTE3LDk4LDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMDgsMTExLDk5LDk3LDExNiwKKyAgICAxMDUsMTExLDExMCwxMTUsNjEsMTIzLDEyNSwxMjIsNiwxMjMsMTI1LDQwLDEyMywxMjUsNDEsMTIyLAorICAgIDIsNDQsMzIsNDEsOSwxMTQsMzgsMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwKKyAgICA5MywwLDAsMCwxMTQsMTAzLDAsMCwwLDIxOCw2LDk3LDExMiwxMTIsMTAxLDExMCwKKyAgICAxMDAsMTE0LDEwNiwwLDAsMCwyMTgsOSw5NSw5NSw5OSwxMDgsOTcsMTE1LDExNSw5NSwKKyAgICA5NSwxMTQsMSwwLDAsMCwyMTgsNCwxMDYsMTExLDEwNSwxMTAsNDEsMiwxMTQsMjYsCisgICAgMCwwLDAsMTE0LDQ5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwKKyAgICAwLDAsMTE0LDExLDAsMCwwLDExNCw0MCwwLDAsMCwxMTEsMSwwLDAsCisgICAgMTE1LDE2LDAsMCwwLDAsMSwxMCwxLDE0LDEsMTAsMSwxOCwxLDEwLAorICAgIDEsOCwxLDEwLDEsMTIyLDE5LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODMsMTEyLDEwMSwKKyAgICA5OSw0Niw5NSw5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsOTksMiwwLDAsMCwwLAorICAgIDAsMCwwLDMsMCwwLDAsMTEsMCwwLDAsNjcsMCwwLDAsMTE1LAorICAgIDEwMiwwLDAsMCwxMjQsMCwxMDYsMCwxMjUsMiwxMjEsNzAsMTI0LDAsMTA2LDEsCisgICAgMTI0LDEsMTA2LDEsMTA3LDIsMTExLDc2LDEyNCwwLDEwNiwyLDEyNCwxLDEwNiwyLAorICAgIDEwNywyLDExMSw3NiwxMjQsMCwxMDYsMywxMjQsMSwxMDYsMywxMDcsMiwxMTEsNzYsCisgICAgMTI0LDIsMTI0LDEsMTA2LDAsMTA3LDIsMTExLDc2LDEyNCwwLDEwNiw0LDEyNCwxLAorICAgIDEwNiw0LDEwNywyLDExMSw3NiwxMjQsMCwxMDYsNSwxMjQsMSwxMDYsNSwxMDcsMiwKKyAgICA4MywwLDQsMCwxMTYsNiwxMDcsMTAsMTE0LDk2LDEsMCwxLDAsMSwwLAorICAgIDEwMCwxLDgzLDAsODgsMCwxMDAsMCw4MywwLDQxLDIsNzgsNzAsNDEsNywKKyAgICAxMTQsMTA2LDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsOTMsMCwwLDAsMTE0LAorICAgIDEwMywwLDAsMCwyMTgsNiw5OSw5Nyw5OSwxMDQsMTAxLDEwMCwyMTgsMTIsMTA0LDk3LAorICAgIDExNSw5NSwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTQsOTAsMCwwLDAsNDEsCisgICAgMywxMTQsMjYsMCwwLDAsOTAsNSwxMTEsMTE2LDEwNCwxMDEsMTE0LDkwLDQsMTE1LAorICAgIDEwOSwxMTUsMTA4LDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsCisgICAgMCwwLDIxOCw2LDk1LDk1LDEwMSwxMTMsOTUsOTUsMTIxLDEsMCwwLDExNSwyMCwKKyAgICAwLDAsMCwwLDEsNiwxLDIsMSwxMiwxLDEyLDEsMTIsMSwxMCwKKyAgICAxLDEyLDEsMTIsMSwxNCwxLDEyMiwxNyw3NywxMTEsMTAwLDExNywxMDgsMTAxLDgzLAorICAgIDExMiwxMDEsOTksNDYsOTUsOTUsMTAxLDExMyw5NSw5NSw5OSwxLDAsMCwwLDAsCisgICAgMCwwLDAsMSwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwKKyAgICA1OCwwLDAsMCwxMjQsMCwxMDYsMCwxMDAsMCwxMDcsOCwxMTQsNTIsMTI0LDAsCisgICAgMTA2LDEsMTAwLDAsMTA3LDksMTE0LDUyLDEyNCwwLDEwNiwyLDExNCw1MiwxMTYsMywKKyAgICAxMDAsMCwxMDcsOCwxMTQsMzgsMTE2LDQsMTMwLDEsMTE2LDMsMTA2LDUsMTI0LDAsCisgICAgMTA2LDEsMTMxLDEsMTI0LDAsOTUsMCwxMjQsMCwxMDYsMCw4MywwLDQxLDEsCisgICAgNzgsNDEsNiwxMTQsMTA4LDAsMCwwLDExNCwxMDMsMCwwLDAsMTE0LDEwNywwLAorICAgIDAsMCwyMTgsMTksOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDk1LDEwMSwKKyAgICAxMjAsMTE2LDEwMSwxMTQsMTEwLDk3LDEwOCwyMTgsMTksNzgsMTExLDExNiw3MywxMDksMTEyLDEwOCwKKyAgICAxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsNjksMTE0LDExNCwxMTEsMTE0LDkwLDExLDk1LDEwMywKKyAgICAxMDEsMTE2LDk1LDk5LDk3LDk5LDEwNCwxMDEsMTAwLDQxLDEsMTE0LDI2LDAsMCwwLAorICAgIDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwKKyAgICAxMTIsMCwwLDAsMTMzLDEsMCwwLDExNSwxMiwwLDAsMCwwLDIsMTAsCisgICAgMSwxNiwxLDgsMSw0LDEsMTQsMSwxMjIsMTcsNzcsMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw4MywxMTIsMTAxLDk5LDQ2LDk5LDk3LDk5LDEwNCwxMDEsMTAwLDk5LDIsMCwwLAorICAgIDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDEwLDAsMCwwLDEyNCwxLDEyNCwwLDk1LDAsMTAwLDAsODMsMCwKKyAgICA0MSwxLDc4LDQxLDEsMTE0LDEwOCwwLDAsMCw0MSwyLDExNCwyNiwwLDAsCisgICAgMCwxMTQsMTEyLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsCisgICAgMTE0LDExLDAsMCwwLDExNCwxMTIsMCwwLDAsMTQyLDEsMCwwLDExNSwyLAorICAgIDAsMCwwLDAsMiw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLAorICAgIDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwzNiwwLDAsMCwxMjQsCisgICAgMCwxMDYsMCwxMDAsMSwxMDcsOCwxMTQsMjYsMTI0LDAsMTA2LDEsMTA2LDIsMTAwLAorICAgIDIsMTMxLDEsMTAwLDMsMjUsMCw4MywwLDEyNCwwLDEwNiwxLDgzLDAsMTAwLAorICAgIDEsODMsMCw0MSw0LDEyMiwzMiw4NCwxMDQsMTAxLDMyLDExMCw5NywxMDksMTAxLDMyLAorICAgIDExMSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzksMTE1LDMyLAorICAgIDExMiw5NywxMTQsMTAxLDExMCwxMTYsNDYsNzgsMjE4LDEsNDYsMTE0LDE5LDAsMCwwLAorICAgIDQxLDMsMTE0LDEwNiwwLDAsMCwxMTQsMTUsMCwwLDAsMjE4LDEwLDExNCwxMTIsCisgICAgOTcsMTE0LDExNiwxMDUsMTE2LDEwNSwxMTEsMTEwLDQxLDEsMTE0LDI2LDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCw2LAorICAgIDExMiw5NywxMTQsMTAxLDExMCwxMTYsMTQ2LDEsMCwwLDExNSw2LDAsMCwwLDAsCisgICAgMywxMCwxLDE2LDIsMTIyLDE3LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODMsMTEyLDEwMSwKKyAgICA5OSw0NiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk5LDEsMCwwLDAsMCwwLDAsCisgICAgMCwxLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDYsMCwKKyAgICAwLDAsMTI0LDAsMTA2LDAsODMsMCw0MSwxLDc4LDQxLDEsMTE0LDEwNywwLAorICAgIDAsMCw0MSwxLDExNCwyNiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLAorICAgIDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTEzLDAsMCwwLDE1NCwxLDAsCisgICAgMCwxMTUsMiwwLDAsMCwwLDIsMTIyLDIzLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgODMsMTEyLDEwMSw5OSw0NiwxMDQsOTcsMTE1LDk1LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsCisgICAgMTEwLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDE0LDAsMCwwLDExNiwwLDEyNCwxLDEzMSwKKyAgICAxLDEyNCwwLDk1LDEsMTAwLDAsODMsMCw0MSwxLDc4LDQxLDIsMjE4LDQsCisgICAgOTgsMTExLDExMSwxMDgsMTE0LDEwNywwLDAsMCw0MSwyLDExNCwyNiwwLDAsMCwKKyAgICAyMTgsNSwxMTgsOTcsMTA4LDExNywxMDEsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsCisgICAgMCwxMTQsMTEsMCwwLDAsMTE0LDExMywwLDAsMCwxNTgsMSwwLDAsMTE1LAorICAgIDIsMCwwLDAsMCwyLDQxLDEyLDExNCwxLDAsMCwwLDExNCwwLDAsCisgICAgMCwwLDExNCwyLDAsMCwwLDExNCwzLDAsMCwwLDExNCwyNywwLDAsCisgICAgMCwxMTQsNDAsMCwwLDAsMTE0LDExNCwwLDAsMCwyMTgsOCwxMTIsMTE0LDExMSwKKyAgICAxMTIsMTAxLDExNCwxMTYsMTIxLDExNCwxMTIsMCwwLDAsMjE4LDYsMTE1LDEwMSwxMTYsMTE2LAorICAgIDEwMSwxMTQsMTE0LDExOSwwLDAsMCwxMTQsMTEzLDAsMCwwLDExNCwxMCwwLDAsCisgICAgMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwKKyAgICAxMTQsMTAyLDAsMCwwLDYyLDEsMCwwLDExNSwyMCwwLDAsMCw4LDM1LAorICAgIDQsMiw0LDEsMTQsMTEsOCwxMCw4LDEyLDEyLDksMTQsNCwxMiw4LAorICAgIDEyLDQsMTE0LDEwMiwwLDAsMCw0MSwyLDExNCwxMDMsMCwwLDAsMTE0LDEwNSwKKyAgICAwLDAsMCw5OSwyLDAsMCwwLDIsMCwwLDAsNiwwLDAsMCwKKyAgICAxNCwwLDAsMCw2NywwLDAsMCwxMTUsMTU0LDAsMCwwLDExNiwwLDEyNCwKKyAgICAxLDEwMCwxLDEzMSwyLDExNCw3NCwxMTYsMSwxMDAsMiwxMDcsOCwxMTQsMjIsMTE2LAorICAgIDIsMTMwLDEsMTE2LDEsMTA2LDMsMTI1LDQsMTI0LDMsMTAwLDIsMTA3LDgsMTE0LAorICAgIDQ4LDEyNCw0LDEyNCwwLDEyNCwxLDEwMCwzLDE0MSwyLDgzLDAsMTI0LDMsMTE0LAorICAgIDU2LDEwMywwLDExMCwyLDEwMCwyLDEyNSw1LDEyNCw0LDEyNCwwLDEyNCwxLDEyNCwKKyAgICA1LDEwMCw0LDE0MSwzLDgzLDAsMTI0LDMsMTAwLDIsMTA3LDgsMTE0LDEzOCwxMTYsCisgICAgMCwxMjQsMSwxMDAsNSwxMzEsMiwxMTQsMTM0LDEyMSwxNCwxMjQsMSwxMDYsNCwxMjQsCisgICAgMCwxMzEsMSwxMjUsMyw4NywwLDExMywxMzgsNCwwLDExNiw1LDEwNywxMCwxMTQsCisgICAgMTMwLDEsMCwxLDAsMSwwLDEwMCwyLDEyNSwzLDg5LDAsMTEzLDEzOCw4OCwKKyAgICAwLDExMCw0LDEwMCw2LDEyNSwzLDExNiw2LDEyNCwwLDEyNCwxLDEyNCwyLDEyNCwKKyAgICAzLDEwMCw3LDE0MSw0LDgzLDAsNDEsOCwxMjIsNTMsODIsMTAxLDExNiwxMTcsMTE0LAorICAgIDExMCwzMiw5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwzMiwKKyAgICA5OCw5NywxMTUsMTAxLDEwMCwzMiwxMTEsMTEwLDMyLDExOCw5NywxMTQsMTA1LDExMSwxMTcsMTE1LAorICAgIDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LDQ2LAorICAgIDkwLDEyLDEwMywxMDEsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSw3OCw0MSwKKyAgICAxLDExNCw5MywwLDAsMCw0MSwyLDExNCw5MywwLDAsMCwxMTQsMTA2LDAsCisgICAgMCwwLDExNCwxMDUsMCwwLDAsNzAsNDEsMiwxMTQsMTAzLDAsMCwwLDExNCwKKyAgICAxMDUsMCwwLDAsNDEsNywxMTQsNCwwLDAsMCwxMTQsMTE1LDAsMCwwLAorICAgIDExNCwxMTYsMCwwLDAsMjE4LDIzLDExNSwxMTIsMTAxLDk5LDk1LDEwMiwxMTQsMTExLDEwOSwKKyAgICA5NSwxMDIsMTA1LDEwOCwxMDEsOTUsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMTE0LDEwNSwKKyAgICAwLDAsMCwxMTQsNzAsMCwwLDAsMTE0LDEwMiwwLDAsMCw0MSw2LDExNCwKKyAgICAxNSwwLDAsMCwxMTQsOTMsMCwwLDAsMTE0LDEwMywwLDAsMCwxMTQsMTA1LAorICAgIDAsMCwwLDExNCwxMjQsMCwwLDAsOTAsNiwxMTUsMTAxLDk3LDExNCw5OSwxMDQsCisgICAgMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LAorICAgIDc4LDAsMCwwLDE2MywxLDAsMCwxMTUsMzQsMCwwLDAsMCwyLDEwLAorICAgIDEsOCwxLDQsMSw2LDIsOCwxLDEyLDEsMTIsMSw2LDEsOCwKKyAgICAyLDgsMSwxMCwxLDIsMSwxNCwxLDE0LDEsMTIsMyw0LDIsMTE0LAorICAgIDc4LDAsMCwwLDk5LDMsMCwwLDAsMCwwLDAsMCw4LDAsMCwKKyAgICAwLDUzLDAsMCwwLDY3LDAsMCwwLDExNSw1NiwxLDAsMCwxMjEsMTAsCisgICAgMTI0LDAsMTA2LDAsMTI1LDMsODcsMCwxMTAsMjAsNCwwLDExNiwxLDEwNywxMCwKKyAgICAxMTQsMzAsMSwwLDEsMCwxLDAsODksMCwxMTAsMTQsODgsMCwxMjQsMywKKyAgICAxMDAsMCwxMDcsOSwxMTQsNDQsMTI0LDMsODMsMCwxMjQsMCwxMDYsMiwxMjUsNCwKKyAgICAxMjQsMSwxMDAsMCwxMDcsOCwxMTQsOTAsMTIxLDEwLDEyNCwwLDEwNiwzLDEyNSwxLAorICAgIDg3LDAsMTEwLDIwLDQsMCwxMTYsMSwxMDcsMTAsMTE0LDg4LDEsMCwxLDAsCisgICAgMSwwLDg5LDAsMTEwLDIsODgsMCwxMjEsMTAsMTI0LDAsMTA2LDQsMTI1LDUsCisgICAgODcsMCwxMTAsMjQsNCwwLDExNiwxLDEwNywxMCwxMTQsMTI0LDEsMCwxLDAsCisgICAgMSwwLDEwMCwwLDEyNSw1LDg5LDAsMTEwLDIsODgsMCwxMjQsMiwxMDAsMCwKKyAgICAxMDcsOCwxMTQsMTg0LDEyNCw1LDEwMCwwLDEwNyw4LDExNCwxODAsMTIxLDEwLDEyNCwxLAorICAgIDEwNiw1LDEyNSwyLDg3LDAsMTEzLDE4NCw0LDAsMTE2LDEsMTA3LDEwLDExNCwxNzYsCisgICAgMSwwLDEsMCwxLDAsMTAwLDAsMTI1LDIsODksMCwxMTMsMTg0LDg4LDAsCisgICAgMTEwLDQsMTI0LDUsMTI1LDIsMTIxLDEwLDEyNCwwLDEwNiw2LDEyNSw2LDg3LDAsCisgICAgMTEwLDI0LDQsMCwxMTYsMSwxMDcsMTAsMTE0LDIxOCwxLDAsMSwwLDEsMCwKKyAgICAxMDAsMCwxMjUsNiw4OSwwLDExMCwyLDg4LDAsMTIxLDE0LDExNiw3LDEyNCwwLAorICAgIDEwNiw4LDEzMSwxLDEyNSw3LDg3LDAsMTEwLDI2LDQsMCwxMTYsMSwxMDcsMTAsCisgICAgMTQ0LDEsMTE0LDQsMSwwLDEsMCwxLDAsMTAwLDAsMTI1LDcsODksMCwKKyAgICAxMTAsMiw4OCwwLDExNiw5LDEyNCw0LDEyNCwxLDEyNCwyLDEwMCwxLDE0MSwzLAorICAgIDEyNSwzLDEyNCw1LDEwMCwwLDEwNyw4LDE0NCwxLDExNCwzNCwxMDAsMiwxMTAsMiwKKyAgICAxMDAsMywxMjQsMyw5NSwxMCwxMjQsNiwxMjQsMyw5NSwxMSwxMjQsNywxMjQsMywKKyAgICA5NSwxMiwxMjQsMyw4MywwLDQxLDQsNzgsNDEsMSwxMTQsMTAzLDAsMCwwLAorICAgIDcwLDg0LDQxLDEzLDExNCw4OSwwLDAsMCwxMTQsOTAsMCwwLDAsMTE0LDEsCisgICAgMCwwLDAsMTE0LDg1LDAsMCwwLDExNCw5MiwwLDAsMCw5MCw3LDk1LAorICAgIDc5LDgyLDczLDcxLDczLDc4LDIxOCwxMCw5NSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDEwMCwKKyAgICA5NSw5NSwyMTgsNCwxMDgsMTA1LDExNSwxMTYsMjE4LDgsOTUsOTUsMTEyLDk3LDExNiwxMDQsCisgICAgOTUsOTUsMTE0LDEwMiwwLDAsMCwxMTQsMTA3LDAsMCwwLDExNCwxMTIsMCwwLAorICAgIDAsMTE0LDEwNiwwLDAsMCw0MSw4LDExNCw4MywwLDAsMCwxMTQsOTMsMCwKKyAgICAwLDAsMTE0LDEwMywwLDAsMCwxMTQsODIsMCwwLDAsMTE0LDE1LDAsMCwKKyAgICAwLDkwLDgsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMTE0LDExMiwwLDAsMCwKKyAgICAxMTQsMTA2LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDExLDAsMCwwLDIxOCwxNyw5NSwxMTUsMTEyLDEwMSw5OSw5NSwxMDIsMTE0LDExMSwxMDksCisgICAgOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTkyLDEsMCwwLDExNSw3MiwwLDAsMCwKKyAgICAwLDIsMiwxLDEwLDEsMTQsMSw2LDIsOCwxLDQsMiw2LDEsCisgICAgOCwxLDIsMSwxMCwxLDE0LDIsNiwxLDIsMSwxMCwxLDE0LDEsCisgICAgMTAsMSw4LDEsOCwxLDIsMSwxMCwxLDE0LDEsMTIsMiw0LDEsCisgICAgMiwxLDEwLDEsMTQsMSwxMCwxLDIsMSwxNCwxLDE2LDEsMTAsMiwKKyAgICAxNCwxLDIwLDEsNiwxLDYsMSwxMTQsMTI4LDAsMCwwLDcwLDQxLDEsCisgICAgMjE4LDgsMTExLDExOCwxMDEsMTE0LDExNCwxMDUsMTAwLDEwMSw5OSwyLDAsMCwwLDEsCisgICAgMCwwLDAsNSwwLDAsMCw1OSwwLDAsMCw2NywwLDAsMCwxMTUsCisgICAgMjEyLDEsMCwwLDEyNCwyLDExNSwyMCwxMTYsMCwxMjQsMSwxMDAsMSwxMDAsMCwKKyAgICAxMzEsMywxMDAsMCwxMDcsOCwxMTQsNTQsMTIxLDEyLDEyNCwwLDEwNiwxLDEyNCwxLAorICAgIDk1LDIsODcsMCwxMTAsMjAsNCwwLDExNiwzLDEwNywxMCwxMTQsNTIsMSwwLAorICAgIDEsMCwxLDAsODksMCwxMTAsMiw4OCwwLDEyNCwyLDExNSw3NCwxMTYsMCwKKyAgICAxMjQsMSwxMDAsMiwxMDAsMCwxMzEsMywxMDAsMCwxMDcsOCwxMTQsMTY2LDEyNCwwLAorICAgIDEwNiw0LDEyNSwzLDEyNCwzLDEwMCwwLDEwNyw4LDExNCwxMzQsMTI0LDAsMTA2LDUsCisgICAgMTAwLDAsMTA3LDksMTE0LDEzNCwxMTYsNiwxMDAsMCwxMDcsOCwxMTQsMTEwLDExNiw3LAorICAgIDEzMCwxLDExNiw2LDEwNiw4LDEyNSw0LDEyNCw0LDEwNiw5LDEyNCw0LDEzMSwxLAorICAgIDEyNSwzLDEyNCwwLDEwNiw1LDEyNCwzLDk1LDEwLDEyMSwxMCwxMjQsMywxMjQsMSwKKyAgICA5NSwxMSw4NywwLDExMCwyMCw0LDAsMTE2LDMsMTA3LDEwLDExNCwxNjQsMSwwLAorICAgIDEsMCwxLDAsODksMCwxMTAsMiw4OCwwLDEyNCwyLDExNSwxODYsMTE2LDAsCisgICAgMTI0LDEsMTAwLDMsMTAwLDAsMTMxLDMsMTAwLDAsMTA3LDgsMTE0LDIyMCwxMjEsMTIsCisgICAgMTI0LDAsMTA2LDEyLDEyNCwxLDk1LDEzLDg3LDAsMTEwLDIwLDQsMCwxMTYsMywKKyAgICAxMDcsMTAsMTE0LDIxOCwxLDAsMSwwLDEsMCw4OSwwLDExMCwyLDg4LDAsCisgICAgMTIxLDEwLDEyNCwwLDEyNCwxLDk1LDE0LDg3LDAsMTEwLDIwLDQsMCwxMTYsMywKKyAgICAxMDcsMTAsMTE0LDI1MCwxLDAsMSwwLDEsMCw4OSwwLDExMCwyLDg4LDAsCisgICAgMTI0LDIsMTQ0LDEsMTE1LDIwLDExNiwwLDEyNCwxLDEwMCw0LDEwMCwwLDEzMSwzLAorICAgIDEwMCwwLDEwNyw4LDE0NCwxLDExNCw2OCwxMjQsMCwxMDYsNSwxMDAsMCwxMDcsOSwKKyAgICAxNDQsMSwxMTQsNjgsMTIxLDEyLDEyNCwwLDEwNiw1LDEyNCwxLDk1LDE1LDg3LDAsCisgICAgMTEwLDIyLDQsMCwxMTYsMywxMDcsMTAsMTQ0LDEsMTE0LDY2LDEsMCwxLDAsCisgICAgMSwwLDg5LDAsMTEwLDIsODgsMCwxMjQsMCwxMDYsMTYsMTQ0LDEsMTE0LDIwOCwKKyAgICAxMjQsMiwxNDQsMSwxMTUsMTAwLDExNiwwLDEyNCwxLDEwMCw1LDEwMCwwLDEzMSwzLAorICAgIDEwMCwwLDEwNyw4LDE0NCwxLDExNCwxMzYsMTIxLDEyLDEyNCwwLDEwNiwxNywxMjQsMSwKKyAgICA5NSwxOCw4NywwLDExMCwyMiw0LDAsMTE2LDMsMTA3LDEwLDE0NCwxLDExNCwxMzQsCisgICAgMSwwLDEsMCwxLDAsODksMCwxMTAsMiw4OCwwLDEyNCwyLDE0NCwxLAorICAgIDExNSwxNjAsMTE2LDAsMTI0LDEsMTAwLDYsMTAwLDAsMTMxLDMsMTAwLDAsMTA3LDgsCisgICAgMTQ0LDEsMTE0LDIwOCwxMjQsMCwxMDYsMTksMTAwLDAsMTA3LDksMTQ0LDEsMTE0LDIwOCwKKyAgICAxMjEsMTIsMTI0LDAsMTA2LDE5LDEyNCwxLDk1LDIwLDg3LDAsMTEwLDIyLDQsMCwKKyAgICAxMTYsMywxMDcsMTAsMTQ0LDEsMTE0LDIwNiwxLDAsMSwwLDEsMCw4OSwwLAorICAgIDExMCwyLDg4LDAsMTI0LDEsODMsMCw0MSw3LDc4LDExNCwxLDAsMCwwLAorICAgIDExNCw4NSwwLDAsMCwyMTgsMTEsOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLAorICAgIDk1LDk1LDExNCwxMjcsMCwwLDAsMTE0LDkyLDAsMCwwLDExNCwxMjUsMCwwLAorICAgIDAsNDEsMjEsMTE0LDYsMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwxLDAsCisgICAgMCwwLDExNCw5MCwwLDAsMCwxMTQsOTMsMCwwLDAsMTE0LDEwNiwwLDAsCisgICAgMCwxMTQsMTE1LDAsMCwwLDExNCwxMTYsMCwwLDAsMjE4LDE2LDk1LDc4LDk3LAorICAgIDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDIxOCw3LDk1LAorICAgIDk1LDExMCwxMDEsMTE5LDk1LDk1LDkwLDUsOTUsMTEyLDk3LDExNiwxMDQsMTE0LDg1LDAsCisgICAgMCwwLDExNCwxMTksMCwwLDAsMTE0LDEzMCwwLDAsMCwxMTQsODksMCwwLAorICAgIDAsMTE0LDEyNywwLDAsMCwxMTQsMTEzLDAsMCwwLDExNCwxMDMsMCwwLDAsCisgICAgMTE0LDkyLDAsMCwwLDExNCwxMTIsMCwwLDAsMTE0LDEyNSwwLDAsMCw0MSwKKyAgICA1LDExNCw4MiwwLDAsMCwxMTQsODMsMCwwLDAsMTE0LDEyOSwwLDAsMCwKKyAgICAxMTQsOTMsMCwwLDAsMTE0LDEzMSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTgsOTUsMTA1LDExMCwxMDUsMTE2LAorICAgIDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDk3LDExNiwxMTYsMTE0LDExNSwyMzcsMSwwLAorICAgIDAsMTE1LDkyLDAsMCwwLDAsNCwyMCwxLDIsMSwxMiwxLDE0LDEsCisgICAgNiwyLDIwLDEsNiwxLDgsMiwxMCwxLDgsMSw0LDEsNiwyLAorICAgIDEwLDEsOCwxLDIsMSwxMCwxLDE0LDEsNiwyLDIwLDEsMiwxLAorICAgIDEyLDEsMTQsMSw2LDIsMiwxLDEwLDEsMTQsMSw2LDIsMjQsMSwKKyAgICAxMiwxLDIsMSwxMiwxLDE2LDEsNiwyLDgsMSwyNCwxLDIsMSwKKyAgICAxMiwxLDE2LDEsNiwyLDI0LDEsMTIsMSwyLDEsMTIsMSwxNiwxLAorICAgIDYsMSwxMTQsMTMzLDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwKKyAgICAyLDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDgyLDAsMCwKKyAgICAwLDEwMCwxLDEyNSwxLDExNiwwLDEyNCwwLDEwNiwxLDEwMCwyLDEzMSwyLDExNCwKKyAgICAzMCwxMjQsMCwxMDYsMSwxMDYsMiwxMjQsMCwxMzEsMSwxMjUsMSwxMTAsMjAsMTE2LAorICAgIDAsMTI0LDAsMTA2LDEsMTAwLDMsMTMxLDIsMTE0LDUwLDExNiwzLDEwMCw0LDEzMSwKKyAgICAxLDEzMCwxLDEyNCwxLDEwMCwxLDEwNyw4LDExNCw2OCwxMTYsNCwxMjQsMCwxMDYsCisgICAgNSwxMzEsMSwxMjUsMSwxMTYsNiwxMjQsMCwxMjQsMSwxMzEsMiwxLDAsMTI0LAorICAgIDEsODMsMCw0MSw1LDEyMiw0Myw2NywxMTQsMTAxLDk3LDExNiwxMDEsMzIsOTcsMzIsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTExLDExMCwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMTIsMTE0LDExMSwxMTgsMTA1LDEwMCwxMDEsMTAwLDMyLDExNSwxMTIsMTAxLAorICAgIDk5LDQ2LDc4LDIxOCwxMyw5OSwxMTQsMTAxLDk3LDExNiwxMDEsOTUsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsMjE4LDExLDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDEyMiwKKyAgICA2NiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNSwzMiwxMTYsMTA0LDk3LDExNiwzMiwxMDAsMTAxLAorICAgIDEwMiwxMDUsMTEwLDEwMSwzMiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICA0MCw0MSwzMiwxMDksMTE3LDExNSwxMTYsMzIsOTcsMTA4LDExNSwxMTEsMzIsMTAwLDEwMSwxMDIsCisgICAgMTA1LDExMCwxMDEsMzIsOTksMTE0LDEwMSw5NywxMTYsMTAxLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDQwLDQxLDQxLDcsMTE0LDQsMCwwLDAsMTE0LDkzLDAsMCwwLDExNCwKKyAgICAxMzQsMCwwLDAsMTE0LDcwLDAsMCwwLDExNCwxNiwwLDAsMCwxMTQsMTUsCisgICAgMCwwLDAsMTE0LDEzMywwLDAsMCw0MSwyLDExNCw4MiwwLDAsMCwxMTQsCisgICAgODMsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsCisgICAgMCwwLDAsMjE4LDE2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwMiwxMTQsMTExLDEwOSwKKyAgICA5NSwxMTUsMTEyLDEwMSw5OSw0MSwyLDAsMCwxMTUsMTgsMCwwLDAsMCwzLAorICAgIDQsMSwxMiwzLDE0LDEsMTIsMSw4LDIsOCwxLDEwLDEsMTAsMSwKKyAgICAxMTQsMTM2LDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsCisgICAgMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDEwNiwwLDAsMCwxMjQsCisgICAgMCwxMDYsMCwxMDAsMSwxMDcsOCwxMTQsMTQsMTAwLDIsMTEwLDQsMTI0LDAsMTA2LAorICAgIDAsMTI1LDEsMTI0LDAsMTA2LDEsMTAwLDEsMTA3LDgsMTE0LDY2LDEyNCwwLDEwNiwKKyAgICAyLDEwMCwxLDEwNyw4LDExNCw1MCwxMDAsMywxMDYsMywxMjQsMSwxMzEsMSw4MywKKyAgICAwLDEwMCw0LDEwNiwzLDEyNCwxLDEyNCwwLDEwNiwyLDEzMSwyLDgzLDAsMTEwLAorICAgIDM2LDEyNCwwLDEwNiw0LDExNCw4NiwxMDAsNSwxMDYsMywxMjQsMSwxMjQsMCwxMDYsCisgICAgMSwxMzEsMiw4MywwLDEwMCw2LDEwNiwzLDEyNCwwLDEwNiwwLDEyNCwwLDEwNiwKKyAgICAxLDEzMSwyLDgzLDAsMTAwLDEsODMsMCw0MSw3LDEyMiwzOCw4MiwxMDEsMTE2LAorICAgIDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExNCwxMDEsMTEyLDExNCwzMiwxMTYsMTExLDMyLAorICAgIDExNywxMTUsMTAxLDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDQ2LDc4LDExNCw4NywwLDAsMCwxMjIsMTMsNjAsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsNjIsMTIyLDIwLDYwLDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDQwLDEyMywzMywxMTQsMTI1LDQxLDYyLDEyMiwyMywKKyAgICA2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiwxMDIsMTE0LDExMSwKKyAgICAxMDksMzIsMTIzLDMzLDExNCwxMjUsNjIsMTIyLDE4LDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDMyLDEyMywzMywxMTQsMTI1LDMyLDQwLDEyMywxMjUsNDEsNjIsNDEsNSwxMTQsMTUsMCwKKyAgICAwLDAsMTE0LDEwMywwLDAsMCwxMTQsOTMsMCwwLDAsMTE0LDM4LDAsMCwKKyAgICAwLDExNCwxMTMsMCwwLDAsNDEsMiwxMTQsODIsMCwwLDAsMTE0LDE1LDAsCisgICAgMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwKKyAgICAwLDExNCw5MSwwLDAsMCw1OCwyLDAsMCwxMTUsMTYsMCwwLDAsMCwKKyAgICAzLDIwLDEsMTAsMSwxMCwxLDEwLDIsMTYsMiw2LDEsMTQsMiwxMTQsCisgICAgOTEsMCwwLDAsOTksMiwwLDAsMCwwLDAsMCwwLDQsMCwwLAorICAgIDAsMTIsMCwwLDAsNjcsMCwwLDAsMTE1LDE4NiwwLDAsMCwxMjQsMCwKKyAgICAxMDYsMCwxMjUsMiwxMTYsMSwxMDYsMiwxMzEsMCwxLDAsMTE2LDMsMTI0LDIsCisgICAgMTMxLDEsMTQzLDE0OCwxLDAsMTE2LDQsMTA2LDUsMTA2LDYsMTI0LDIsMTMxLDEsCisgICAgMTI0LDEsMTA3LDksMTE0LDYyLDEwMCwxLDEwNiw3LDEyNCwyLDEzMSwxLDEyNSwzLAorICAgIDExNiw4LDEyNCwzLDEyNCwyLDEwMCwyLDE0MSwyLDEzMCwxLDEyNCwwLDEwNiw5LAorICAgIDEwMCwzLDEwNyw4LDExNCwxMTQsMTI0LDAsMTA2LDEwLDEwMCwzLDEwNyw4LDExNCw5NiwKKyAgICAxMTYsOCwxMDAsNCwxMjQsMCwxMDYsMCwxMDAsMiwxNDEsMiwxMzAsMSwxMTYsMTEsCisgICAgMTI0LDAsMTI0LDEsMTAwLDUsMTAwLDYsMTQxLDMsMSwwLDEyNCwxLDgzLDAsCisgICAgMTE2LDExLDEyNCwwLDEyNCwxLDEwMCw1LDEwMCw2LDE0MSwzLDEsMCwxMTYsMTIsCisgICAgMTI0LDAsMTA2LDksMTAwLDcsMTMxLDIsMTE1LDE1NCwxMjQsMCwxMDYsOSwxMDYsMTMsCisgICAgMTI0LDIsMTMxLDEsMSwwLDExMCwxMiwxMjQsMCwxMDYsOSwxMDYsMTQsMTI0LDEsCisgICAgMTMxLDEsMSwwLDg3LDAsMTAwLDMsODEsMCw4MiwwLDg4LDAsMTE2LDQsCisgICAgMTA2LDUsMTI0LDIsMjUsMCw4MywwLDQxLDgsMTIyLDcwLDY5LDEyMCwxMDEsOTksCisgICAgMTE3LDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMzksMTE1LDMyLDExNSwKKyAgICAxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsCisgICAgMTA1LDExMCwzMiw5NywxMTAsMzIsMTAxLDEyMCwxMDUsMTE1LDExNiwxMDUsMTEwLDEwMywzMiwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwzOSwxMTUsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwKKyAgICAxMDEsNDYsMTIyLDMwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLAorICAgIDExMCwxMTEsMTE2LDMyLDEwNSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMTE1LDQxLDEsMTE0LDE1LDAsMCwwLDc4LDEyMiwxNCwxMDksMTA1LDExNSwxMTUsCisgICAgMTA1LDExMCwxMDMsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCw4NCw0MSwxLDExNCwxMjksMCwKKyAgICAwLDAsMTE0LDEzNSwwLDAsMCw0MSwxNSwxMTQsMTUsMCwwLDAsMTE0LDQ2LAorICAgIDAsMCwwLDIxOCwxMiw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDk1LDEwOCwxMTEsOTksCisgICAgMTA3LDExNCw0MiwwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LDc5LDAsMCwwLAorICAgIDExNCwzMCwwLDAsMCwxMTQsMzgsMCwwLDAsMTE0LDcwLDAsMCwwLDExNCwKKyAgICA5MywwLDAsMCwxMTQsMTA2LDAsMCwwLDExNCwxMzMsMCwwLDAsMTE0LDQsCisgICAgMCwwLDAsMjE4LDExLDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDExNCwxMzUsMCwwLDAsNDEsNCwxMTQsODIsMCwwLDAsMTE0LDgzLDAsMCwKKyAgICAwLDExNCwxNSwwLDAsMCwyMTgsMywxMDksMTE1LDEwMywxMTQsMTAsMCwwLDAsCisgICAgMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsODAsMCwwLDAsNzUsCisgICAgMiwwLDAsMTE1LDMyLDAsMCwwLDAsMiw2LDEsOCwxLDEwLDEsCisgICAgMTYsMSwxMCwxLDEyLDEsMTAsMSwxMCwxLDE0LDIsMTQsMSw0LDEsCisgICAgMTQsMSwxMiw0LDE0LDIsMjIsMSwxMTQsODAsMCwwLDAsOTksMSwwLAorICAgIDAsMCwwLDAsMCwwLDIsMCwwLDAsMjcsMCwwLDAsNjcsMCwKKyAgICAwLDAsMTE1LDIwNiwwLDAsMCwxMjQsMCwxMDYsMCwxMDYsMSwxMjQsMCwxMDYsCisgICAgMiwxMzEsMSwxLDAsMTE2LDMsMTA2LDQsMTI0LDAsMTA2LDIsMjUsMCwxMjUsCisgICAgMSwxMTYsNSwxMjQsMSwxMDAsMSwxMDAsMCwxMzEsMywxMDAsMCwxMDcsOCwxMTQsCisgICAgNzYsMTIxLDEyLDEyNCwwLDEwNiwwLDEyNCwxLDk1LDYsODcsMCwxMTAsMjAsNCwKKyAgICAwLDExNiw3LDEwNywxMCwxMTQsNzQsMSwwLDEsMCwxLDAsODksMCwxMTAsCisgICAgMiw4OCwwLDExNiw1LDEyNCwxLDEwMCwyLDEwMCwwLDEzMSwzLDEwMCwwLDEwNywKKyAgICA4LDExNCwxNTQsMTIxLDQwLDEyNCwxLDEwNiw4LDEyNCwxLDk1LDksMTE2LDEwLDEyNCwKKyAgICAxLDEwMCwzLDEzMSwyLDExNSwxMzAsMTI0LDAsMTA2LDIsMTA2LDExLDEwMCw0LDEzMSwKKyAgICAxLDEwMCw1LDI1LDAsMTI0LDEsOTUsOSw4NywwLDExMCwyMCw0LDAsMTE2LAorICAgIDcsMTA3LDEwLDExNCwxNTIsMSwwLDEsMCwxLDAsODksMCwxMTAsMiw4OCwKKyAgICAwLDExNiw1LDEyNCwxLDEwMCw2LDEwMCwwLDEzMSwzLDEwMCwwLDEwNyw4LDExNCwKKyAgICAyMDIsMTIxLDEwLDEyNCwwLDEyNCwxLDk1LDEyLDg3LDAsMTEwLDIwLDQsMCwxMTYsCisgICAgNywxMDcsMTAsMTE0LDIwMCwxLDAsMSwwLDEsMCw4OSwwLDExMCwyLDg4LAorICAgIDAsMTI0LDEsODMsMCw0MSw3LDc4LDExNCw4NSwwLDAsMCwxMTQsMTMwLDAsCisgICAgMCwwLDExNCwxMjcsMCwwLDAsMTE0LDExNywwLDAsMCwxMTQsMTksMCwwLAorICAgIDAsMTE0LDg5LDAsMCwwLDQxLDEzLDExNCw5MywwLDAsMCwxMTQsMTM4LDAsCisgICAgMCwwLDExNCwxNSwwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LDc5LDAsMCwKKyAgICAwLDExNCw2LDAsMCwwLDExNCw4NSwwLDAsMCwxMTQsOTAsMCwwLDAsCisgICAgMTE0LDEsMCwwLDAsMTE0LDEzMCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgMTE4LDAsMCwwLDExNCw4OSwwLDAsMCw0MSwyLDExNCw4MiwwLDAsMCwKKyAgICAxMTQsODMsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCisgICAgMTEsMCwwLDAsMjE4LDI1LDk1LDEwOCwxMTEsOTcsMTAwLDk1LDk4LDk3LDk5LDEwNywKKyAgICAxMTksOTcsMTE0LDEwMCw5NSw5OSwxMTEsMTA5LDExMiw5NywxMTYsMTA1LDk4LDEwOCwxMDEsMTAwLAorICAgIDIsMCwwLDExNSw0MCwwLDAsMCwwLDQsMTQsMiwxMiwxLDE2LDEsCisgICAgMiwxLDEyLDEsMTQsMSw2LDEsMTYsMSwyLDQsOCwxLDEwLDEsCisgICAgMjIsMSwxNCwxLDYsMSwxNiwxLDIsMSwxMCwxLDE0LDEsNiwxLAorICAgIDExNCwxNDAsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwKKyAgICAwLDAsMTEsMCwwLDAsNjcsMCwwLDAsMTE1LDExOCwwLDAsMCwxMjQsCisgICAgMCwxMDYsMCwxMDAsMCwxMDcsOSwxMTQsMzAsMTE2LDEsMTI0LDAsMTA2LDAsMTAwLAorICAgIDEsMTMxLDIsMTE1LDMwLDExNiwyLDEyNCwwLDEzMSwxLDgzLDAsMTE2LDMsMTI0LAorICAgIDAsMTMxLDEsMTI1LDEsMTE2LDQsMTI0LDEsMTMxLDEsMTQzLDU0LDEsMCwxMjQsCisgICAgMCwxMDYsMCwxMDAsMCwxMDcsOCwxMTQsODQsMTI0LDAsMTA2LDUsMTAwLDAsMTA3LAorICAgIDgsMTE0LDk2LDExNiw2LDEwMCwyLDEyNCwwLDEwNiw3LDEwMCwzLDE0MSwyLDEzMCwKKyAgICAxLDExMCwxMiwxMjQsMCwxMDYsMCwxMDYsOCwxMjQsMSwxMzEsMSwxLDAsODcsCisgICAgMCwxMDAsMCw4MSwwLDgyLDAsODgsMCwxMTYsOSwxMDYsMTAsMTI0LDAsMTA2LAorICAgIDcsMjUsMCw4MywwLDQxLDQsNzgsMTE0LDEzNSwwLDAsMCwxMjIsMTQsMTA5LAorICAgIDEwNSwxMTUsMTE1LDEwNSwxMTAsMTAzLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNDEsMSwxMTQsCisgICAgMTUsMCwwLDAsNDEsMTEsMTE0LDkzLDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCwxNDAsMCwwLDAsMTE0LDEzNiwwLDAsMCwxMTQsOTYsMCwwLDAsMTE0LAorICAgIDEwNiwwLDAsMCwxMTQsNzAsMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwxMzUsCisgICAgMCwwLDAsMTE0LDE0LDAsMCwwLDExNCw3OSwwLDAsMCw0MSwyLDExNCwKKyAgICA4MiwwLDAsMCwxMTQsODMsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwKKyAgICAwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE0LDk1LDEwOCwxMTEsOTcsMTAwLDk1LAorICAgIDExNywxMTAsMTA4LDExMSw5OSwxMDcsMTAxLDEwMCwxMjksMiwwLDAsMTE1LDIwLDAsMCwKKyAgICAwLDAsMiwxMCwyLDEyLDEsOCwyLDgsMSwxMCwxLDEwLDEsMTAsCisgICAgMSwxNiwzLDIyLDUsMTE0LDE0MSwwLDAsMCw5OSwxLDAsMCwwLDAsCisgICAgMCwwLDAsMSwwLDAsMCw5LDAsMCwwLDY3LDAsMCwwLDExNSwKKyAgICAzOCwwLDAsMCwxMTYsMCwxMDYsMSwxMzEsMCwxLDAsMTE2LDIsMTI0LDAsCisgICAgMTA2LDMsMTMxLDEsMTQzLDEwLDEsMCwxMTYsNCwxMjQsMCwxMzEsMSw4MywwLAorICAgIDgxLDAsODIsMCw4OCwwLDEwMCwxLDgzLDAsNDEsMiwxMjIsMTkxLDgyLDEwMSwKKyAgICAxMTYsMTE3LDExNCwxMTAsMzIsOTcsMzIsMTEwLDEwMSwxMTksMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDQ0LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMDAsCisgICAgMzIsOTgsMTIxLDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDM5LDExNSwzMiwxMDgsCisgICAgMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywxMDAsCisgICAgMTAwLDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDUsMTE2LDExNSwzMiwxMTIsOTcsMTE0LDEwMSwxMTAsCisgICAgMTE2LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDczLDEwMiwzMiw5NywzMiwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDk3LDEwOCwxMTQsMTAxLDk3LDEwMCwxMjEsMzIsMTA1LAorICAgIDExMCwzMiwxMTUsMTIxLDExNSw0NiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsNDQsMzIsMTE2LAorICAgIDEwNCw5NywxMTYsMzIsMTAxLDEyMCwxMDUsMTE1LDExNiwxMDUsMTEwLDEwMywzMiwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSwzMiwxMDMsMTAxLDExNiwxMTUsMTAsMzIsMzIsMzIsMzIsOTksMTA4LDExMSwKKyAgICA5OCw5OCwxMDEsMTE0LDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzgsNDEsNSwKKyAgICAxMTQsNDYsMCwwLDAsMTE0LDEzNywwLDAsMCwxMTQsNDIsMCwwLDAsMTE0LAorICAgIDE1LDAsMCwwLDExNCwxNDEsMCwwLDAsNDEsMSwxMTQsODIsMCwwLDAsCisgICAgMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LAorICAgIDgxLDAsMCwwLDE1MiwyLDAsMCwxMTUsNiwwLDAsMCwwLDksOCwKKyAgICAxLDEyLDEsMTE0LDgxLDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsCisgICAgMCwwLDAsMCwwLDQsMCwwLDAsNjQsMCwwLDAsMTE1LDEzNiwwLAorICAgIDAsMCwxMDEsMCw5MCwxLDEwMCwwLDkwLDIsMTAwLDEsOTAsMywxMDEsNCwKKyAgICAxMDAsMiwxMDAsMywxMzIsMCwxMzEsMSw5MCw1LDEwMSw2LDEwMCwxOSwxMDAsNSwKKyAgICAxMDAsNiwxMzIsMSwxMzEsMSw5MCw3LDEwMSw2LDEwMCwyMCwxMDAsNywxMDAsOCwKKyAgICAxMzIsMSwxMzEsMSw5MCw4LDEwMSw2LDEwMCw5LDEwMCwxMCwxMzIsMCwxMzEsMSwKKyAgICA5MCw5LDEwMSw2LDEwMCwxMSwxMDAsMTIsMTMyLDAsMTMxLDEsOTAsMTAsMTAxLDYsCisgICAgMTAxLDExLDEwMCwxMywxMDAsMTQsMTMyLDAsMTMxLDEsMTMxLDEsOTAsMTIsMTAxLDYsCisgICAgMTAxLDExLDEwMCwxNSwxMDAsMTYsMTMyLDAsMTMxLDEsMTMxLDEsOTAsMTMsMTAxLDYsCisgICAgMTAxLDExLDEwMCwxNywxMDAsMTgsMTMyLDAsMTMxLDEsMTMxLDEsOTAsMTQsMTAxLDYsCisgICAgMTAxLDE1LDEzMSwxLDkwLDE2LDEwMCw0LDgzLDAsNDEsMjEsMjE4LDE1LDY2LDExNywKKyAgICAxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCwxMjIsMTQ0LDc3LAorICAgIDEwMSwxMTYsOTcsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsCisgICAgMTAyLDExMSwxMTQsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDY1LDEwOCwxMDgsMzIsMTA5LAorICAgIDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LDMyLDk3LDExNCwxMDEsMzIsMTAxLDEwNSwxMTYsMTA0LDEwMSwKKyAgICAxMTQsMzIsOTksMTA4LDk3LDExNSwxMTUsMzIsMTExLDExNCwzMiwxMTUsMTE2LDk3LDExNiwxMDUsCisgICAgOTksMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LDMyLDExNiwxMTEsMzIsOTcsMTE4LDExMSwKKyAgICAxMDUsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDExMCwxMDEsMTAxLDEwMCwzMiwxMTYsMTExLDEwLDMyLAorICAgIDMyLDMyLDMyLDEwNSwxMTAsMTE1LDExNiw5NywxMTAsMTE2LDEwNSw5NywxMTYsMTAxLDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDk5LDEwOCw5NywxMTUsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDk5LAorICAgIDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDIsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDEyLDAsMCwwLDEwMCwxLDEwNiwwLDEyNCwwLDEwNiwKKyAgICAxLDEzMSwxLDgzLDAsNDEsMiwxMjIsMTE1LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsCisgICAgMTE0LDEwMSwxMTIsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwKKyAgICAxMDEsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsCisgICAgMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsMzIsMTA5LDk3LDk5LDEwNCwxMDUsMTEwLDEwMSwxMTQsMTIxLDMyLDEwMCwxMTEsCisgICAgMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDYsMTExLDk4LDMyLDEwNSwxMTYsMTE1LDEwMSwxMDgsCisgICAgMTAyLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDEyMiwyNCw2MCwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiw0MCw5OCwxMTcsMTA1LDEwOCwKKyAgICAxMTYsNDUsMTA1LDExMCw0MSw2Miw0MSwyLDExNCwzOCwwLDAsMCwxMTQsMSwwLAorICAgIDAsMCw0MSwxLDExNCw4MywwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLAorICAgIDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsODYsMCwwLDAsMTc3LDIsMCwKKyAgICAwLDExNSwyLDAsMCwwLDAsNywxMjIsMjcsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwKKyAgICAxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDk1LDExNCwxMDEsMTEyLDExNCw3OCw5OSw0LDAsMCwwLDAsMCwwLDAsNCwKKyAgICAwLDAsMCw1LDAsMCwwLDY3LDAsMCwwLDExNSw0NCwwLDAsMCwKKyAgICAxMjQsMiwxMDAsMCwxMDcsOSwxMTQsMTIsMTAwLDAsODMsMCwxMTYsMCwxMDYsMSwKKyAgICAxMjQsMSwxMzEsMSwxMTQsMzYsMTE2LDIsMTI0LDEsMTI0LDAsMTAwLDEsMTAwLDIsCisgICAgMTQxLDMsODMsMCwxMDAsMCw4MywwLDEwMCwwLDgzLDAsNDEsMyw3OCwxMjIsCisgICAgOCw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCw0MSwxLDExNCwxMDMsMCwwLDAsCisgICAgNDEsMywxMTQsNDYsMCwwLDAsOTAsMTAsMTA1LDExNSw5NSw5OCwxMTcsMTA1LDEwOCwKKyAgICAxMTYsMTA1LDExMCwxMTQsNzgsMCwwLDAsNDEsNCwyMTgsMyw5OSwxMDgsMTE1LDExNCwKKyAgICA3MSwwLDAsMCwyMTgsNCwxMTIsOTcsMTE2LDEwNCwyMTgsNiwxMTYsOTcsMTE0LDEwMywKKyAgICAxMDEsMTE2LDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwKKyAgICAwLDIxOCw5LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSwxODYsMiwwLDAsCisgICAgMTE1LDEwLDAsMCwwLDAsMiw4LDEsNCwxLDEwLDEsMTQsMiwxMjIsCisgICAgMjUsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LAorICAgIDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw5OSwzLDAsMCwwLDAsCisgICAgMCwwLDAsNCwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwKKyAgICAzMCwwLDAsMCwxMjQsMCwxMDYsMCwxMjQsMSwxMjQsMiwxMzEsMiwxMjUsMywKKyAgICAxMjQsMywxMDAsMSwxMDcsOSwxMTQsMjYsMTI0LDMsMTA2LDEsODMsMCwxMDAsMSwKKyAgICA4MywwLDQxLDIsMTIyLDE3NSw3MCwxMDUsMTEwLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiw5OCwKKyAgICAxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwKKyAgICAxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3MywxMDIsMzIsMzksMTEyLDk3LDExNiwKKyAgICAxMDQsMzksMzIsMTA1LDExNSwzMiwxMDEsMTE4LDEwMSwxMTQsMzIsMTE1LDExMiwxMDEsOTksMTA1LAorICAgIDEwMiwxMDUsMTAxLDEwMCwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDEwMSwKKyAgICA5NywxMTQsOTksMTA0LDMyLDEwNSwxMTUsMzIsOTksMTExLDExMCwxMTUsMTA1LDEwMCwxMDEsMTE0LAorICAgIDEwMSwxMDAsMzIsOTcsMzIsMTAyLDk3LDEwNSwxMDgsMTE3LDExNCwxMDEsNDYsMTAsMTAsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LAorICAgIDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLAorICAgIDQ2LDMyLDMyLDg1LDExNSwxMDEsMzIsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LAorICAgIDQwLDQxLDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDc4LDQxLDIsMTE0LDE0NiwwLDAsMCwxMTQsOTMsMCwKKyAgICAwLDAsNDEsNCwxMTQsMTQzLDAsMCwwLDExNCw3MSwwLDAsMCwxMTQsMTQ0LAorICAgIDAsMCwwLDExNCw4MiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCisgICAgMCwwLDExNCwxMSwwLDAsMCwyMTgsMTEsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDE5NSwyLDAsMCwxMTUsNCwwLDAsMCwwLDksMTIsCisgICAgMSwxMjIsMjcsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICAxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwyLAorICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw0LDAsMCwwLDY3LAorICAgIDAsMCwwLDExNSw0NiwwLDAsMCwxMjQsMSwxMDYsMCwxMTYsMSwxMDYsMiwKKyAgICAxMDcsNywxMTQsMzQsMTE2LDMsMTAwLDEsMTA2LDQsMTI0LDEsMTA2LDAsMTMxLDEsCisgICAgMTI0LDEsMTA2LDAsMTAwLDIsMTQxLDIsMTMwLDEsMTE2LDUsMTE2LDYsMTA2LDcsCisgICAgMTI0LDEsMTMxLDIsODMsMCw0MSwzLDEyMiwyNCw2NywxMTQsMTAxLDk3LDExNiwxMDEsCisgICAgMzIsOTcsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsMTIyLDI5LDEyMywzMywxMTQsMTI1LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsCisgICAgOTcsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsNDEsMSwxMTQsMTUsMCwwLDAsNDEsOCwxMTQsMTUsMCwwLDAsMTE0LAorICAgIDE0LDAsMCwwLDExNCw2OSwwLDAsMCwxMTQsNzAsMCwwLDAsMTE0LDM4LAorICAgIDAsMCwwLDExNCw1OCwwLDAsMCwxMTQsNDYsMCwwLDAsOTAsMTQsOTksCisgICAgMTE0LDEwMSw5NywxMTYsMTAxLDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDQxLDIsMTE0LAorICAgIDI2LDAsMCwwLDExNCw4MiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLAorICAgIDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTM0LDAsMCwwLDIwNywyLDAsCisgICAgMCwxMTUsOCwwLDAsMCwwLDMsMTIsMSwxMiwxLDEwLDEsMTIyLDI5LAorICAgIDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwKKyAgICA5OSwxMTQsMTAxLDk3LDExNiwxMDEsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLAorICAgIDAsMCwwLDAsMCwwLDIsMCwwLDAsMywwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsMTYsMCwwLDAsMTE2LDAsMTE2LDEsMTA2LDIsMTI0LDEsMTMxLAorICAgIDIsMSwwLDEwMCwxLDgzLDAsNDEsMiwxMjIsMjIsNjksMTIwLDEwMSw5OSwzMiwKKyAgICA5NywzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw3OCw0MSwzLDExNCw1OCwwLDAsMCwxMTQsNDYsMCwwLDAsOTAsMTIsCisgICAgMTAxLDEyMCwxMDEsOTksOTUsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNDEsMiwxMTQsMjYsCisgICAgMCwwLDAsMTE0LDgzLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwKKyAgICAwLDAsMTE0LDExLDAsMCwwLDExNCwxMzUsMCwwLDAsMjE1LDIsMCwwLAorICAgIDExNSwyLDAsMCwwLDAsMywxMjIsMjcsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsCisgICAgNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwKKyAgICAwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsCisgICAgODMsMCw0MSwyLDEyMiw1Nyw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDc4LDExMSwxMTAsCisgICAgMTAxLDMyLDk3LDExNSwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTAwLDExMSwzMiwxMTAsMTExLDExNiwzMiwxMDQsOTcsMTE4LAorICAgIDEwMSwzMiw5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMTE1LDQ2LDc4LAorICAgIDExNCwxMCwwLDAsMCw0MSwyLDExNCwxNDMsMCwwLDAsMTE0LDcxLDAsMCwKKyAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLAorICAgIDIxOCw4LDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDIyMCwyLDAsMCwxMTUsMiwKKyAgICAwLDAsMCwwLDQsMTIyLDI0LDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwKKyAgICAxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSw5OSwKKyAgICAyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDgzLDAsNDEsMiwxMjIsCisgICAgNTYsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw3OCwxMTEsMTEwLDEwMSwzMiw5NywxMTUsMzIsCisgICAgOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LAorICAgIDMyLDEwMCwxMTEsMzIsMTEwLDExMSwxMTYsMzIsMTA0LDk3LDExOCwxMDEsMzIsMTE1LDExMSwxMTcsCisgICAgMTE0LDk5LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSw0Niw3OCwxMTQsMTAsMCwwLDAsNDEsCisgICAgMiwxMTQsMTQzLDAsMCwwLDExNCw3MSwwLDAsMCwxMTQsMTAsMCwwLDAsCisgICAgMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTAsMTAzLDEwMSwxMTYsOTUsCisgICAgMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwyMjYsMiwwLDAsMTE1LDIsMCwwLDAsMCwKKyAgICA0LDEyMiwyNiw2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5OSwyLDAsCisgICAgMCwwLDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSw0LDAsMCwwLDEwMCwxLDgzLDAsNDEsMiwxMjIsNTIsODIsCisgICAgMTAxLDExNiwxMTcsMTE0LDExMCwzMiw3MCw5NywxMDgsMTE1LDEwMSwzMiw5NywxMTUsMzIsOTgsCisgICAgMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLAorICAgIDk3LDExNCwxMDEsMzIsMTEwLDEwMSwxMTgsMTAxLDExNCwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywKKyAgICAxMDEsMTE1LDQ2LDcwLDExNCwxMCwwLDAsMCw0MSwyLDExNCwxNDMsMCwwLDAsCisgICAgMTE0LDcxLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDExLDAsMCwwLDExNCwxMDUsMCwwLDAsMjMyLDIsMCwwLDExNSwyLDAsCisgICAgMCwwLDAsNCwxMjIsMjYsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLAorICAgIDQxLDIsNzgsNzgsNDEsMSw3OCw0MSwxNywxMTQsMSwwLDAsMCwxMTQsMCwKKyAgICAwLDAsMCwxMTQsMiwwLDAsMCwxMTQsMywwLDAsMCwyMTgsMTIsMTE1LAorICAgIDExNiw5NywxMTYsMTA1LDk5LDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDExNCw4NiwwLDAsMCwKKyAgICAyMTgsMTEsOTksMTA4LDk3LDExNSwxMTUsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE0LDE0NiwwLAorICAgIDAsMCwxMTQsMTQ3LDAsMCwwLDExNCwxMzQsMCwwLDAsMTE0LDEzNSwwLDAsCisgICAgMCwxMTQsNzQsMCwwLDAsMTE0LDE0OCwwLDAsMCwxMTQsMTQ5LDAsMCwwLAorICAgIDExNCwxMDUsMCwwLDAsMTE0LDg0LDAsMCwwLDExNCwxMzgsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLAorICAgIDAsMCwwLDExNCwxNDIsMCwwLDAsMTY4LDIsMCwwLDExNSwzMCwwLDAsCisgICAgMCw4LDcsNCwyLDEyLDksMiwxLDEyLDgsMiwxLDEyLDExLDEyLAorICAgIDgsMTIsNSwyLDEsMTQsNSwyLDEsMTQsNSwyLDEsMTQsNSwxMTQsCisgICAgMTQyLDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwKKyAgICAwLDQsMCwwLDAsNjQsMCwwLDAsMTE1LDE0MCwwLDAsMCwxMDEsMCwKKyAgICA5MCwxLDEwMCwwLDkwLDIsMTAwLDEsOTAsMywxMDEsNCwxMDAsMiwxMDAsMywKKyAgICAxMzIsMCwxMzEsMSw5MCw1LDEwMSw2LDEwMCwyMSwxMDAsNSwxMDAsNiwxMzIsMSwKKyAgICAxMzEsMSw5MCw3LDEwMSw2LDEwMCwyMiwxMDAsNywxMDAsOCwxMzIsMSwxMzEsMSwKKyAgICA5MCw4LDEwMSw2LDEwMCw5LDEwMCwxMCwxMzIsMCwxMzEsMSw5MCw5LDEwMSw0LAorICAgIDEwMCwxMSwxMDAsMTIsMTMyLDAsMTMxLDEsOTAsMTAsMTAxLDYsMTAwLDEzLDEwMCwxNCwKKyAgICAxMzIsMCwxMzEsMSw5MCwxMSwxMDEsNiwxMDEsMTIsMTAwLDE1LDEwMCwxNiwxMzIsMCwKKyAgICAxMzEsMSwxMzEsMSw5MCwxMywxMDEsNiwxMDEsMTIsMTAwLDE3LDEwMCwxOCwxMzIsMCwKKyAgICAxMzEsMSwxMzEsMSw5MCwxNCwxMDEsNiwxMDEsMTIsMTAwLDE5LDEwMCwyMCwxMzIsMCwKKyAgICAxMzEsMSwxMzEsMSw5MCwxNSwxMDAsNCw4MywwLDQxLDIzLDIxOCwxNCw3MCwxMTQsCisgICAgMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCwxMjIsMTQyLDc3LDEwMSwKKyAgICAxMTYsOTcsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTAyLAorICAgIDExMSwxMTQsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCiAgICAgMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDY1LDEwOCwxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LAogICAgIDExMSwxMDAsMTE1LDMyLDk3LDExNCwxMDEsMzIsMTAxLDEwNSwxMTYsMTA0LDEwMSwxMTQsMzIsOTksCiAgICAgMTA4LDk3LDExNSwxMTUsMzIsMTExLDExNCwzMiwxMTUsMTE2LDk3LDExNiwxMDUsOTksMzIsMTA5LApAQCAtMTIyOSw3NjAgKzEyMjIsNjAxIEBACiAgICAgMTA1LDExMCwxMTUsMTE2LDk3LDExMCwxMTYsMTA1LDk3LDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsCiAgICAgOTksMTA4LDk3LDExNSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTksMSwwLDAsCiAgICAgMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsMTYsMCwwLDAsMTAwLDEsMCwxMDYsMCwwLDEyNCwwLDAsMTA2LAotICAgIDEsMCwxMzEsMSwwLDgzLDQxLDIsMTIyLDExNSw4MiwxMDEsMTE2LDExNywxMTQsMTEwLAotICAgIDMyLDExNCwxMDEsMTEyLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwKLSAgICAxMDQsMTAxLDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsCi0gICAgMTE0LDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwNSwxMDksCi0gICAgMTEyLDExMSwxMTQsMTE2LDMyLDEwOSw5Nyw5OSwxMDQsMTA1LDExMCwxMDEsMTE0LDEyMSwzMiwxMDAsCi0gICAgMTExLDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA2LDExMSw5OCwzMiwxMDUsMTE2LDExNSwxMDEsCi0gICAgMTA4LDEwMiw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMjIsMjQsNjAsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsNDAsOTgsMTE3LDEwNSwKLSAgICAxMDgsMTE2LDQ1LDEwNSwxMTAsNDEsNjIsNDEsMiwxMTQsNTAsMCwwLDAsMTE0LDEsCi0gICAgMCwwLDAsNDEsMSwxMTQsODksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKLSAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDkyLDAsMCwwLDE5NSwyLAotICAgIDAsMCwxMTUsMiwwLDAsMCwwLDcsMTIyLDI3LDY2LDExNywxMDUsMTA4LDExNiwKLSAgICAxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsNzgsOTksNCwwLDAsMCwwLDAsMCwwLAotICAgIDQsMCwwLDAsNSwwLDAsMCw2NywwLDAsMCwxMTUsNTgsMCwwLAotICAgIDAsMTI0LDIsMCwxMDAsMCwwLDEwNyw5LDAsMTE0LDE2LDAsMTAwLDAsMCwKLSAgICA4MywxMTYsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMzEsMSwwLDExNCw1MCwwLAotICAgIDExNiwyLDAsMTI0LDEsMCwxMjQsMCwwLDEwMCwxLDAsMTAwLDIsMCwxMzEsCi0gICAgMiwxLDgzLDEwMCwwLDAsODMsMTAwLDAsMCw4Myw0MSwzLDc4LDExNCwxMDcsCi0gICAgMCwwLDAsMTIyLDgsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsNDEsMywxMTQsCi0gICAgNTcsMCwwLDAsOTAsMTAsMTA1LDExNSw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCwKLSAgICAxMTQsODUsMCwwLDAsNDEsNCwyMTgsMyw5OSwxMDgsMTE1LDExNCw3OCwwLDAsCi0gICAgMCwyMTgsNCwxMTIsOTcsMTE2LDEwNCwyMTgsNiwxMTYsOTcsMTE0LDEwMywxMDEsMTE2LDExNCwKLSAgICAxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCw5LAotICAgIDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSwyMDQsMiwwLDAsMTE1LDEwLDAsCi0gICAgMCwwLDAsMiwxMiwxLDQsMSwxNSwxLDE5LDIsMTIyLDI1LDY2LDExNywKLSAgICAxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDIsMTA1LAotICAgIDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksOTksMywwLDAsMCwwLDAsMCwwLAotICAgIDQsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsNDEsMCwwLAotICAgIDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMiwwLAotICAgIDEyNSwzLDAsMTI0LDMsMCwxMDAsMSwwLDEwNyw5LDAsMTE0LDM3LDAsMTI0LAotICAgIDMsMCwxMDYsMSwwLDgzLDEwMCwxLDAsODMsNDEsMiwxMjIsMTc1LDcwLDEwNSwKLSAgICAxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDczLDEwMiwzMiwzOSwxMTIsOTcsMTE2LDEwNCwzOSwzMiwxMDUsMTE1LDMyLDEwMSwxMTgsCi0gICAgMTAxLDExNCwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDExNiwxMDQsMTAxLAotICAgIDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTAxLDk3LDExNCw5OSwxMDQsMzIsMTA1LDExNSwzMiwKLSAgICA5OSwxMTEsMTEwLDExNSwxMDUsMTAwLDEwMSwxMTQsMTAxLDEwMCwzMiw5NywzMiwxMDIsOTcsMTA1LAotICAgIDEwOCwxMTcsMTE0LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwKLSAgICAxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsCi0gICAgMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDIsCi0gICAgMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksNDAsNDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSwKLSAgICA5NywxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsNDEsMiwKLSAgICAxMTQsMTU0LDAsMCwwLDExNCw5OSwwLDAsMCw0MSw0LDExNCwxNTEsMCwwLAotICAgIDAsMTE0LDc4LDAsMCwwLDExNCwxNTIsMCwwLDAsMTE0LDg4LDAsMCwwLAotICAgIDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwKLSAgICAxMSwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMjEzLDIsMCwwLAotICAgIDExNSw0LDAsMCwwLDAsOSwxOCwxLDEyMiwyNyw2NiwxMTcsMTA1LDEwOCwxMTYsCi0gICAgMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLAotICAgIDAsMCwwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDY3LDAsMCwwLAotICAgIDEyNCwxLDAsMTA2LDAsMCwxMTYsMSwwLDEwNiwyLDAsMTA3LDcsMCwxMTQsCi0gICAgNTEsMCwxMTYsMywwLDEwMCwxLDAsMTA2LDQsMCwxMjQsMSwwLDEwNiwwLAotICAgIDAsMTMxLDEsMCwxMDAsMiwwLDEyNCwxLDAsMTA2LDAsMCwxMzEsMSwxLAotICAgIDEzMCwxLDAsMTE2LDUsMCwxMTYsNiwwLDEwNiw3LDAsMTI0LDEsMCwxMzEsCi0gICAgMiwwLDgzLDQxLDMsMTIyLDI0LDY3LDExNCwxMDEsOTcsMTE2LDEwMSwzMiw5NywzMiwKLSAgICA5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMjIsCi0gICAgMjksMTIzLDMzLDExNCwxMjUsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywzMiw5OCwKLSAgICAxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTQsMTUsCi0gICAgMCwwLDAsNDEsOCwxMTQsMTUsMCwwLDAsMTE0LDE0LDAsMCwwLDExNCwKLSAgICA3NiwwLDAsMCwxMTQsNzcsMCwwLDAsMTE0LDUwLDAsMCwwLDExNCw2NSwKLSAgICAwLDAsMCwxMTQsNTcsMCwwLDAsOTAsMTQsOTksMTE0LDEwMSw5NywxMTYsMTAxLAotICAgIDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDQxLDIsMTE0LDE5LDAsMCwwLDExNCwKLSAgICA4OCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwKLSAgICAwLDAsMCwxMTQsMTM4LDAsMCwwLDIyNSwyLDAsMCwxMTUsOCwwLDAsCi0gICAgMCwwLDMsMTgsMSwyMSwxLDEyLDEsMTIyLDI5LDY2LDExNywxMDUsMTA4LDExNiwKLSAgICAxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0Niw5OSwxMTQsMTAxLDk3LDExNiwKLSAgICAxMDEsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwKLSAgICAwLDIsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMjAsMCwKLSAgICAwLDAsMTE2LDAsMCwxMTYsMSwwLDEwNiwyLDAsMTI0LDEsMCwxMzEsMiwKLSAgICAwLDEsMTAwLDEsMCw4Myw0MSwyLDEyMiwyMiw2OSwxMjAsMTAxLDk5LDMyLDk3LAotICAgIDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDc4LDQxLDMsMTE0LDY1LDAsMCwwLDExNCw1NywwLDAsMCw5MCwxMiwxMDEsCi0gICAgMTIwLDEwMSw5OSw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw0MSwyLDExNCwxOSwwLAotICAgIDAsMCwxMTQsODksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsCi0gICAgMCwxMTQsMTEsMCwwLDAsMTE0LDEzOSwwLDAsMCwyMzMsMiwwLDAsMTE1LAotICAgIDIsMCwwLDAsMCwzLDEyMiwyNyw2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywKLSAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsCi0gICAgMSwwLDAsMCw2NywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSwwLAotICAgIDgzLDQxLDIsMTIyLDU3LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsNzgsMTExLDExMCwxMDEsCi0gICAgMzIsOTcsMTE1LDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDExNSwzMiwxMDAsMTExLDMyLDExMCwxMTEsMTE2LDMyLDEwNCw5NywxMTgsMTAxLAotICAgIDMyLDk5LDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwxMTUsNDYsNzgsMTE0LAotICAgIDEwLDAsMCwwLDQxLDIsMTE0LDE1MSwwLDAsMCwxMTQsNzgsMCwwLDAsCi0gICAgMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LAotICAgIDgsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsMjM4LDIsMCwwLDExNSwyLDAsCi0gICAgMCwwLDAsNCwxMjIsMjQsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwKLSAgICAxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDk5LDIsCi0gICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDEsMCwwLDAsNjcsCi0gICAgMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsMCw4Myw0MSwyLDEyMiw1NiwKLSAgICA4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDc4LDExMSwxMTAsMTAxLDMyLDk3LDExNSwzMiw5OCwKLSAgICAxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsCi0gICAgMTAwLDExMSwzMiwxMTAsMTExLDExNiwzMiwxMDQsOTcsMTE4LDEwMSwzMiwxMTUsMTExLDExNywxMTQsCi0gICAgOTksMTAxLDMyLDk5LDExMSwxMDAsMTAxLDQ2LDc4LDExNCwxMCwwLDAsMCw0MSwyLAotICAgIDExNCwxNTEsMCwwLDAsMTE0LDc4LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCi0gICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxMCwxMDMsMTAxLDExNiw5NSwxMTUsCi0gICAgMTExLDExNywxMTQsOTksMTAxLDI0NCwyLDAsMCwxMTUsMiwwLDAsMCwwLDQsCi0gICAgMTIyLDI2LDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLAotICAgIDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDk5LDIsMCwwLAotICAgIDAsMCwwLDAsMCwyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLAotICAgIDAsMTE1LDQsMCwwLDAsMTAwLDEsMCw4Myw0MSwyLDEyMiw1Miw4MiwxMDEsCi0gICAgMTE2LDExNywxMTQsMTEwLDMyLDcwLDk3LDEwOCwxMTUsMTAxLDMyLDk3LDExNSwzMiw5OCwxMTcsCi0gICAgMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsCi0gICAgMTE0LDEwMSwzMiwxMTAsMTAxLDExOCwxMDEsMTE0LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwKLSAgICAxMTUsNDYsNzAsMTE0LDEwLDAsMCwwLDQxLDIsMTE0LDE1MSwwLDAsMCwxMTQsCi0gICAgNzgsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsCi0gICAgMCwwLDAsMTE0LDEwOSwwLDAsMCwyNTAsMiwwLDAsMTE1LDIsMCwwLAotICAgIDAsMCw0LDEyMiwyNiw2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLDExMSwKLSAgICAxMTQsMTE2LDEwMSwxMTQsNDYsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNDEsCi0gICAgMTcsMTE0LDEsMCwwLDAsMTE0LDAsMCwwLDAsMTE0LDIsMCwwLDAsCi0gICAgMTE0LDMsMCwwLDAsMjE4LDEyLDExNSwxMTYsOTcsMTE2LDEwNSw5OSwxMDksMTAxLDExNiwKLSAgICAxMDQsMTExLDEwMCwxMTQsOTIsMCwwLDAsMjE4LDExLDk5LDEwOCw5NywxMTUsMTE1LDEwOSwKLSAgICAxMDEsMTE2LDEwNCwxMTEsMTAwLDExNCwxNTQsMCwwLDAsMTE0LDE1NSwwLDAsMCwxMTQsCi0gICAgMTM4LDAsMCwwLDExNCwxMzksMCwwLDAsMTE0LDgxLDAsMCwwLDExNCwxNTYsCi0gICAgMCwwLDAsMTE0LDE1NywwLDAsMCwxMTQsMTA5LDAsMCwwLDExNCw5MCwwLAotICAgIDAsMCwxMTQsMTQ2LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLAotICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTUwLDAsMCwwLAotICAgIDE4NiwyLDAsMCwxMTUsMzAsMCwwLDAsMTIsNyw2LDIsMTgsOSwzLAotICAgIDEsMjEsOCwzLDEsMTgsMTEsMTgsOCwxOCw1LDMsMSwyMSw1LDMsCi0gICAgMSwyMSw1LDMsMSwyMSw1LDExNCwxNTAsMCwwLDAsOTksMCwwLDAsCi0gICAgMCwwLDAsMCwwLDAsMCwwLDAsNSwwLDAsMCw2NCwwLDAsCi0gICAgMCwxMTUsMjExLDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsCi0gICAgMiwwLDEwMCwxLDAsOTAsMywwLDEwMSw0LDAsMTAwLDIsMCwxMDAsMywKLSAgICAwLDEzMiwwLDAsMTMxLDEsMCw5MCw1LDAsMTAxLDYsMCwxMDAsNCwwLAotICAgIDEwMCw0LDAsMTAwLDUsMCwxMDAsNiwwLDEzMiwyLDAsMTMxLDEsMCw5MCwKLSAgICA3LDAsMTAxLDYsMCwxMDAsNCwwLDEwMCw3LDAsMTAwLDgsMCwxMzIsMSwKLSAgICAwLDEzMSwxLDAsOTAsOCwwLDEwMSw2LDAsMTAwLDksMCwxMDAsMTAsMCwKLSAgICAxMzIsMCwwLDEzMSwxLDAsOTAsOSwwLDEwMSw0LDAsMTAwLDExLDAsMTAwLAotICAgIDEyLDAsMTMyLDAsMCwxMzEsMSwwLDkwLDEwLDAsMTAxLDYsMCwxMDAsMTMsCi0gICAgMCwxMDAsMTQsMCwxMzIsMCwwLDEzMSwxLDAsOTAsMTEsMCwxMDEsNiwwLAotICAgIDEwMSwxMiwwLDEwMCwxNSwwLDEwMCwxNiwwLDEzMiwwLDAsMTMxLDEsMCwxMzEsCi0gICAgMSwwLDkwLDEzLDAsMTAxLDYsMCwxMDEsMTIsMCwxMDAsMTcsMCwxMDAsMTgsCi0gICAgMCwxMzIsMCwwLDEzMSwxLDAsMTMxLDEsMCw5MCwxNCwwLDEwMSw2LDAsCi0gICAgMTAxLDEyLDAsMTAwLDE5LDAsMTAwLDIwLDAsMTMyLDAsMCwxMzEsMSwwLDEzMSwKLSAgICAxLDAsOTAsMTUsMCwxMDAsNCwwLDgzLDQxLDIxLDIxOCwxNCw3MCwxMTQsMTExLAotICAgIDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCwxMjIsMTQyLDc3LDEwMSwxMTYsCi0gICAgOTcsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTAyLDExMSwKLSAgICAxMTQsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LAotICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDY1LDEwOCwxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwKLSAgICAxMDAsMTE1LDMyLDk3LDExNCwxMDEsMzIsMTAxLDEwNSwxMTYsMTA0LDEwMSwxMTQsMzIsOTksMTA4LAotICAgIDk3LDExNSwxMTUsMzIsMTExLDExNCwzMiwxMTUsMTE2LDk3LDExNiwxMDUsOTksMzIsMTA5LDEwMSwKLSAgICAxMTYsMTA0LDExMSwxMDAsMTE1LDMyLDExNiwxMTEsMzIsOTcsMTE4LDExMSwxMDUsMTAwLDMyLDExNiwKLSAgICAxMDQsMTAxLDMyLDExMCwxMDEsMTAxLDEwMCwzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDEwNSwKLSAgICAxMTAsMTE1LDExNiw5NywxMTAsMTE2LDEwNSw5NywxMTYsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDk5LAotICAgIDEwOCw5NywxMTUsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDk5LDEsMCwwLDAsCi0gICAgMCwwLDAsMCwxLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsCi0gICAgMTE1LDE2LDAsMCwwLDEwMCwxLDAsMTA2LDAsMCwxMjQsMCwwLDEwNiwxLAotICAgIDAsMTMxLDEsMCw4Myw0MSwyLDEyMiwxMTUsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwKLSAgICAxMTQsMTAxLDExMiwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LAotICAgIDEwMSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwKLSAgICAxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODQsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwKLSAgICAxMTEsMTE0LDExNiwzMiwxMDksOTcsOTksMTA0LDEwNSwxMTAsMTAxLDExNCwxMjEsMzIsMTAwLDExMSwKLSAgICAxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwNiwxMTEsOTgsMzIsMTA1LDExNiwxMTUsMTAxLDEwOCwKLSAgICAxMDIsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTIyLDIyLDYwLDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDQwLDEwMiwxMTQsMTExLDEyMiwKLSAgICAxMDEsMTEwLDQxLDYyLDQxLDIsMTE0LDUwLDAsMCwwLDExNCwxLDAsMCwwLAotICAgIDQxLDEsMjE4LDEsMTA5LDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAotICAgIDExLDAsMCwwLDExNCw5MiwwLDAsMCwxMiwzLDAsMCwxMTUsMiwwLAotICAgIDAsMCwwLDcsMTIyLDI2LDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsCi0gICAgMTE0LDExNiwxMDEsMTE0LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsMTEyLDExNCwKLSAgICA3OCw5OSw0LDAsMCwwLDAsMCwwLDAsNCwwLDAsMCw1LDAsCi0gICAgMCwwLDY3LDAsMCwwLDExNSw0MiwwLDAsMCwxMTYsMCwwLDEwNiwxLAotICAgIDAsMTI0LDEsMCwxMzEsMSwwLDExNCwzNCwwLDExNiwyLDAsMTI0LDEsMCwKLSAgICAxMjQsMCwwLDEwMCwxLDAsMTAwLDIsMCwxMzEsMiwxLDgzLDEwMCwwLDAsCi0gICAgODMsMTAwLDAsMCw4Myw0MSwzLDc4LDExNCwxMDcsMCwwLDAsOTAsNiwxMDIsCi0gICAgMTE0LDExMSwxMjIsMTAxLDExMCw0MSwzLDExNCw1NywwLDAsMCwxMTQsODIsMCwwLAotICAgIDAsMTE0LDg1LDAsMCwwLDQxLDQsMTE0LDE1MSwwLDAsMCwxMTQsNzgsMCwKLSAgICAwLDAsMTE0LDE1MiwwLDAsMCwxMTQsMTUzLDAsMCwwLDExNCwxMCwwLDAsCi0gICAgMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxNTQsMCwwLDAsCi0gICAgMjEsMywwLDAsMTE1LDYsMCwwLDAsMCwyLDE1LDEsMTksMiwxMjIsCi0gICAgMjQsNzAsMTE0LDExMSwxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsCi0gICAgMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDk5LDMsMCwwLDAsMCwwLAotICAgIDAsMCwzLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDIzLAotICAgIDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMjQsMSwwLDEzMSwxLDAsMTE0LAotICAgIDE5LDAsMTI0LDAsMCw4MywxMDAsMSwwLDgzLDQxLDIsMTIyLDkzLDcwLDEwNSwKKyAgICAwLDExNSwxMiwwLDAsMCwxMDAsMSwxMDYsMCwxMjQsMCwxMDYsMSwxMzEsMSwKKyAgICA4MywwLDQxLDIsMTIyLDExNSw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNCwxMDEsMTEyLAorICAgIDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwOSwKKyAgICAxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSw5NywKKyAgICAxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDMyLDEwOSw5Nyw5OSwxMDQsMTA1LDExMCwxMDEsMTE0LDEyMSwzMiwxMDAsMTExLDEwMSwxMTUsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTA2LDExMSw5OCwzMiwxMDUsMTE2LDExNSwxMDEsMTA4LDEwMiw0NiwxMCwKKyAgICAxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMjIsMjIsNjAsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsNDAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsNDEsCisgICAgNjIsNDEsMiwxMTQsMzgsMCwwLDAsMTE0LDEsMCwwLDAsNDEsMSwyMTgsCisgICAgMSwxMDksMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLAorICAgIDAsMTE0LDg2LDAsMCwwLDI1MCwyLDAsMCwxMTUsMiwwLDAsMCwwLAorICAgIDcsMTIyLDI2LDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsCisgICAgMTE0LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsMTEyLDExNCw3OCw5OSw0LAorICAgIDAsMCwwLDAsMCwwLDAsNCwwLDAsMCw1LDAsMCwwLDY3LAorICAgIDAsMCwwLDExNSwzMiwwLDAsMCwxMTYsMCwxMDYsMSwxMjQsMSwxMzEsMSwKKyAgICAxMTQsMjQsMTE2LDIsMTI0LDEsMTI0LDAsMTAwLDEsMTAwLDIsMTQxLDMsODMsMCwKKyAgICAxMDAsMCw4MywwLDEwMCwwLDgzLDAsNDEsMyw3OCw5MCw2LDEwMiwxMTQsMTExLAorICAgIDEyMiwxMDEsMTEwLDQxLDEsMTE0LDEwMywwLDAsMCw0MSwzLDExNCw0NiwwLDAsCisgICAgMCwxMTQsNzUsMCwwLDAsMTE0LDc4LDAsMCwwLDQxLDQsMTE0LDE0MywwLAorICAgIDAsMCwxMTQsNzEsMCwwLDAsMTE0LDE0NCwwLDAsMCwxMTQsMTQ1LDAsMCwKKyAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLAorICAgIDExNCwxNDYsMCwwLDAsMywzLDAsMCwxMTUsNiwwLDAsMCwwLDIsCisgICAgMTAsMSwxNCwyLDEyMiwyNCw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksOTksMywKKyAgICAwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMiwwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsMTgsMCwwLDAsMTE2LDAsMTA2LDEsMTI0LDEsMTMxLDEsCisgICAgMTE0LDE0LDEyNCwwLDgzLDAsMTAwLDEsODMsMCw0MSwyLDEyMiw5Myw3MCwxMDUsCiAgICAgMTEwLDEwMCwzMiw5NywzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksMTExLDEwMCwxMTcsCiAgICAgMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LAogICAgIDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwKICAgICAxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDIsMTA1LDExMCwKICAgICAxMDAsOTUsMTE1LDExMiwxMDEsOTksNDAsNDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsCi0gICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsNDEsMiwxMTQsNTcsCi0gICAgMCwwLDAsMTE0LDgyLDAsMCwwLDQxLDMsMTE0LDE1MSwwLDAsMCwxMTQsCi0gICAgNzgsMCwwLDAsMTE0LDE1MiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLAotICAgIDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTU1LDAsMCwwLDI4LDMsMCwKKyAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3OCw0MSwyLDExNCw0NiwKKyAgICAwLDAsMCwxMTQsNzUsMCwwLDAsNDEsMywxMTQsMTQzLDAsMCwwLDExNCwKKyAgICA3MSwwLDAsMCwxMTQsMTQ0LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsCisgICAgMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxNDcsMCwwLDAsMTAsMywwLAogICAgIDAsMTE1LDIsMCwwLDAsMCw3LDEyMiwyNiw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLAogICAgIDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwKICAgICAxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLAogICAgIDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSwKLSAgICAwLDgzLDQxLDIsMTIyLDQyLDg1LDExNSwxMDEsMzIsMTAwLDEwMSwxMDIsOTcsMTE3LDEwOCwKKyAgICA4MywwLDQxLDIsMTIyLDQyLDg1LDExNSwxMDEsMzIsMTAwLDEwMSwxMDIsOTcsMTE3LDEwOCwKICAgICAxMTYsMzIsMTE1LDEwMSwxMDksOTcsMTEwLDExNiwxMDUsOTksMTE1LDMyLDEwMiwxMTEsMTE0LDMyLAogICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk5LDExNCwxMDEsOTcsMTE2LDEwNSwxMTEsMTEwLDQ2LAotICAgIDc4LDExNCwxMCwwLDAsMCw0MSwyLDExNCwxNTEsMCwwLDAsMTE0LDg4LDAsCisgICAgNzgsMTE0LDEwLDAsMCwwLDQxLDIsMTE0LDE0MywwLDAsMCwxMTQsODIsMCwKICAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLAotICAgIDAsMTE0LDEzOCwwLDAsMCwzNywzLDAsMCwxMTUsMCwwLDAsMCwxMjIsCisgICAgMCwxMTQsMTM0LDAsMCwwLDE5LDMsMCwwLDExNSwwLDAsMCwwLDEyMiwKICAgICAyOCw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwKICAgICA5OSwxMTQsMTAxLDk3LDExNiwxMDEsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMSwwLAogICAgIDAsMCwwLDAsMCwwLDMsMCwwLDAsNCwwLDAsMCw2NywwLAotICAgIDAsMCwxMTUsOTIsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEwNiwxLDAsCi0gICAgMTI1LDEsMCwxMTYsMiwwLDEwNiwzLDAsMTI0LDEsMCwxMzEsMSwwLDExNSwKLSAgICA1NCwwLDExNiw0LDAsMTAwLDEsMCwxMDYsNSwwLDEyNCwxLDAsMTMxLDEsCi0gICAgMCwxMDAsMiwwLDEyNCwxLDAsMTMxLDEsMSwxMzAsMSwwLDExNiw2LDAsCi0gICAgMTE2LDIsMCwxMDYsNywwLDEyNCwxLDAsMTMxLDIsMCwxMjUsMiwwLDExNiwKLSAgICA4LDAsMTI0LDIsMCwxMjQsMCwwLDEwNiw5LDAsMTMxLDIsMCwxLDEwMCwKLSAgICAwLDAsODMsNDEsMyw3OCwxMjIsMjcsMTIzLDMzLDExNCwxMjUsMzIsMTA1LDExNSwzMiwKLSAgICAxMTAsMTExLDExNiwzMiw5NywzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSwxMTQsMTUsMCwwLDAsNDEsMTAsMTE0LDk1LDAsMCwwLDExNCwKLSAgICAxNSwwLDAsMCwxMTQsNTcsMCwwLDAsMTE0LDgyLDAsMCwwLDExNCw3NywKLSAgICAwLDAsMCwxMTQsNTAsMCwwLDAsMTE0LDY1LDAsMCwwLDIxOCwxNywxMDMsCi0gICAgMTAxLDExNiw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCw5NSwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsCi0gICAgMjE4LDQsMTAxLDEyMCwxMDEsOTksMTE0LDcsMCwwLDAsNDEsMywxMTQsODksMCwKLSAgICAwLDAsMTE0LDE1LDAsMCwwLDIxOCw0LDk5LDExMSwxMDAsMTAxLDExNCwxMCwwLAotICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxMzksMCwwLAotICAgIDAsNDEsMywwLDAsMTE1LDEyLDAsMCwwLDAsMiwxMiwxLDE1LDEsCi0gICAgMTgsMSw5LDEsMTgsMSwxMjIsMjYsNzAsMTE0LDExMSwxMjIsMTAxLDExMCw3MywxMDksCi0gICAgMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LAotICAgIDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywKLSAgICAwLDAsMCw2NywwLDAsMCwxMTUsMTMsMCwwLDAsMTE2LDAsMCwxMjQsCi0gICAgMCwwLDEyNCwxLDAsMTMxLDIsMCw4Myw0MSwxLDEyMiw5NSw3NiwxMTEsOTcsCi0gICAgMTAwLDMyLDk3LDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LAotICAgIDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSwKLSAgICA5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwMSwxMjAsMTAxLDk5LAotICAgIDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDQxLDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsCi0gICAgMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDQxLDEsMTE0LDkwLAotICAgIDAsMCwwLDQxLDIsMTE0LDE1MSwwLDAsMCwxMTQsNzgsMCwwLDAsMTE0LAotICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDE0NiwKLSAgICAwLDAsMCw1MCwzLDAsMCwxMTUsMiwwLDAsMCwwLDcsMTIyLDI2LAotICAgIDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwOCwKLSAgICAxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLDAsMCwKLSAgICAwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LAotICAgIDEzLDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMjQsMSwwLDEzMSwxLDAsCi0gICAgODMsNDEsMSwxMjIsNDUsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICAwLDAsMTE1LDY0LDAsMCwwLDEyNCwwLDEwNiwwLDEwNiwxLDEyNSwxLDExNiwKKyAgICAyLDEwNiwzLDEyNCwxLDEzMSwxLDExNSwzNiwxMTYsNCwxMDAsMSwxMDYsNSwxMjQsCisgICAgMSwxMzEsMSwxMjQsMSwxMDAsMiwxNDEsMiwxMzAsMSwxMTYsNiwxMTYsMiwxMDYsCisgICAgNywxMjQsMSwxMzEsMiwxMjUsMiwxMTYsOCwxMjQsMiwxMjQsMCwxMDYsOSwxMzEsCisgICAgMiwxLDAsMTAwLDAsODMsMCw0MSwzLDc4LDEyMiwyNywxMjMsMzMsMTE0LDEyNSwKKyAgICAzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk3LDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLAorICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQxLDEsMTE0LDE1LDAsMCwwLDQxLDEwLAorICAgIDExNCw4OSwwLDAsMCwxMTQsMTUsMCwwLDAsMTE0LDQ2LDAsMCwwLDExNCwKKyAgICA3NSwwLDAsMCwxMTQsNzAsMCwwLDAsMTE0LDM4LDAsMCwwLDExNCw1OCwKKyAgICAwLDAsMCwyMTgsMTcsMTAzLDEwMSwxMTYsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsOTUsCisgICAgMTExLDk4LDEwNiwxMDEsOTksMTE2LDIxOCw0LDEwMSwxMjAsMTAxLDk5LDExNCw3LDAsMCwKKyAgICAwLDQxLDMsMTE0LDgzLDAsMCwwLDExNCwxNSwwLDAsMCwyMTgsNCw5OSwKKyAgICAxMTEsMTAwLDEwMSwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLAorICAgIDAsMCwxMTQsMTM1LDAsMCwwLDIzLDMsMCwwLDExNSwxMiwwLDAsMCwKKyAgICAwLDIsOCwxLDEwLDEsMTAsMSw4LDEsMTIsMSwxMjIsMjYsNzAsMTE0LAorICAgIDExMSwxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAxLDEyMCwxMDEsCisgICAgOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwKKyAgICAwLDIsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMTAsMCwKKyAgICAwLDAsMTE2LDAsMTI0LDAsMTI0LDEsMTMxLDIsODMsMCw0MSwxLDEyMiw5NSwKKyAgICA3NiwxMTEsOTcsMTAwLDMyLDk3LDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LAorICAgIDEwNCwxMDUsMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwKKyAgICAxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwMSwKKyAgICAxMjAsMTAxLDk5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDQxLDMyLDEwNSwxMTAsMTE1LAorICAgIDExNiwxMDEsOTcsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDQxLAorICAgIDEsMTE0LDg0LDAsMCwwLDQxLDIsMTE0LDE0MywwLDAsMCwxMTQsNzEsMCwKKyAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLAorICAgIDAsMTE0LDEzOCwwLDAsMCwzMiwzLDAsMCwxMTUsMiwwLDAsMCwwLAorICAgIDcsMTIyLDI2LDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsCisgICAgMTE0LDQ2LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsMCwKKyAgICAwLDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwKKyAgICAwLDAsMTE1LDEwLDAsMCwwLDExNiwwLDEwNiwxLDEyNCwxLDEzMSwxLDgzLAorICAgIDAsNDEsMSwxMjIsNDUsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwKICAgICA5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMzIsMTAyLDExMSwxMTQsMzIsCiAgICAgMTE2LDEwNCwxMDEsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKLSAgICAxMDEsNDYsNDEsMiwxMTQsNTcsMCwwLDAsMTE0LDE2MiwwLDAsMCw0MSwyLAotICAgIDExNCwxNTEsMCwwLDAsMTE0LDc4LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCi0gICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxNTYsMCwwLDAsNTksMywKKyAgICAxMDEsNDYsNDEsMiwxMTQsNDYsMCwwLDAsMTE0LDE1NCwwLDAsMCw0MSwyLAorICAgIDExNCwxNDMsMCwwLDAsMTE0LDcxLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCisgICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxNDgsMCwwLDAsNDEsMywKICAgICAwLDAsMTE1LDIsMCwwLDAsMCw0LDEyMiwyMyw3MCwxMTQsMTExLDEyMiwxMDEsCiAgICAgMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsCiAgICAgMTAwLDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsODMsMCwKICAgICA0MSwyLDEyMiw1NCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDc4LDExMSwxMTAsMTAxLDMyLAogICAgIDk3LDExNSwzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKICAgICAxMTUsMzIsMTAwLDExMSwzMiwxMTAsMTExLDExNiwzMiwxMDQsOTcsMTE4LDEwMSwzMiwxMTUsMTExLAogICAgIDExNywxMTQsOTksMTAxLDMyLDk5LDExMSwxMDAsMTAxLDQ2LDc4LDExNCwxMCwwLDAsMCwKLSAgICA0MSwyLDExNCwxNTEsMCwwLDAsMTE0LDc4LDAsMCwwLDExNCwxMCwwLDAsCi0gICAgMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxNTcsMCwwLDAsCi0gICAgNjUsMywwLDAsMTE1LDIsMCwwLDAsMCw0LDEyMiwyNSw3MCwxMTQsMTExLAorICAgIDQxLDIsMTE0LDE0MywwLDAsMCwxMTQsNzEsMCwwLDAsMTE0LDEwLDAsMCwKKyAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDE0OSwwLDAsMCwKKyAgICA0NywzLDAsMCwxMTUsMiwwLDAsMCwwLDQsMTIyLDI1LDcwLDExNCwxMTEsCiAgICAgMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LAogICAgIDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsCi0gICAgMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTMsMCwwLDAsCi0gICAgMTE2LDAsMCwxMDYsMSwwLDEyNCwxLDAsMTMxLDEsMCw4Myw0MSwxLDEyMiwKLSAgICA0Niw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDg0LDExNCwxMTcsMTAxLDMyLDEwNSwxMDIsMzIsCi0gICAgMTE2LDEwNCwxMDEsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKLSAgICAxMDEsMzIsMTA1LDExNSwzMiw5NywzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNDYsNDEsCi0gICAgMiwxMTQsNTcsMCwwLDAsOTAsMTcsMTA1LDExNSw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLAotICAgIDExMCw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNDEsMiwxMTQsMTUxLDAsMCwwLAotICAgIDExNCw3OCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKLSAgICAxMSwwLDAsMCwxMTQsMTA5LDAsMCwwLDcxLDMsMCwwLDExNSwyLDAsCi0gICAgMCwwLDAsNCwxMjIsMjUsNzAsMTE0LDExMSwxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwKLSAgICAxMTQsMTE2LDEwMSwxMTQsNDYsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNDEsCi0gICAgMTYsMTE0LDEsMCwwLDAsMTE0LDAsMCwwLDAsMTE0LDIsMCwwLDAsCi0gICAgMTE0LDMsMCwwLDAsMTE0LDE1OCwwLDAsMCwxMTQsOTIsMCwwLDAsMTE0LAotICAgIDE1OSwwLDAsMCwxMTQsMTU0LDAsMCwwLDExNCwxNTUsMCwwLDAsMTE0LDEzOCwKLSAgICAwLDAsMCwxMTQsMTM5LDAsMCwwLDExNCwxNDYsMCwwLDAsMTE0LDg0LDAsCi0gICAgMCwwLDExNCwxNTYsMCwwLDAsMTE0LDE1NywwLDAsMCwxMTQsMTA5LDAsMCwKLSAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLAotICAgIDExNCwxMSwwLDAsMCwxMTQsMTYwLDAsMCwwLDMsMywwLDAsMTE1LDMwLAotICAgIDAsMCwwLDEyLDcsNiwyLDE4LDksMywxLDIxLDYsMywxLDE4LAotICAgIDgsMTgsNCwxOCw5LDE4LDksMywxLDIxLDUsMywxLDIxLDUsMywKLSAgICAxLDExNCwxNjAsMCwwLDAsOTksMCwwLDAsMCwwLDAsMCwwLDAsCi0gICAgMCwwLDAsMiwwLDAsMCw2NCwwLDAsMCwxMTUsNDYsMCwwLDAsCi0gICAgMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCw5MCwKLSAgICAzLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsOTAsNCwwLDEwMCw0LAotICAgIDAsMTAwLDUsMCwxMzIsMCwwLDkwLDUsMCwxMDAsNiwwLDgzLDQxLDcsCi0gICAgMjE4LDE4LDk1LDczLDEwOSwxMTIsMTExLDExNCwxMTYsNzYsMTExLDk5LDEwNyw2NywxMTEsMTEwLAotICAgIDExNiwxMDEsMTIwLDExNiwxMjIsMzYsNjcsMTExLDExMCwxMTYsMTAxLDEyMCwxMTYsMzIsMTA5LDk3LAotICAgIDExMCw5NywxMDMsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LAotICAgIDExMiwxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNyw0Niw5OSwxLDAsMCwwLDAsCi0gICAgMCwwLDAsMSwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSwKLSAgICAxNCwwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTMxLDAsMCwxLDEwMCwxLAotICAgIDAsODMsNDEsMiwxMjIsMjQsNjUsOTksMTEzLDExNywxMDUsMTE0LDEwMSwzMiwxMTYsMTA0LAotICAgIDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNyw0Niw3OCw0MSwKLSAgICAyLDExNCw1NywwLDAsMCwxMTQsMTQ1LDAsMCwwLDQxLDEsMTE0LDE5LDAsCisgICAgMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTAsMCwwLDAsCisgICAgMTE2LDAsMTA2LDEsMTI0LDEsMTMxLDEsODMsMCw0MSwxLDEyMiw0Niw4MiwxMDEsCisgICAgMTE2LDExNywxMTQsMTEwLDMyLDg0LDExNCwxMTcsMTAxLDMyLDEwNSwxMDIsMzIsMTE2LDEwNCwxMDEsCisgICAgMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LAorICAgIDExNSwzMiw5NywzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNDYsNDEsMiwxMTQsNDYsCisgICAgMCwwLDAsOTAsMTcsMTA1LDExNSw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCw5NSwxMTIsCisgICAgOTcsOTksMTA3LDk3LDEwMywxMDEsNDEsMiwxMTQsMTQzLDAsMCwwLDExNCw3MSwwLAogICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsCi0gICAgMCwxMTQsMjMsMCwwLDAsODQsMywwLDAsMTE1LDIsMCwwLDAsMCwKLSAgICAyLDEyMiwyOCw5NSw3MywxMDksMTEyLDExMSwxMTQsMTE2LDc2LDExMSw5OSwxMDcsNjcsMTExLAotICAgIDExMCwxMTYsMTAxLDEyMCwxMTYsNDYsOTUsOTUsMTAxLDExMCwxMTYsMTAxLDExNCw5NSw5NSw5OSwKLSAgICA0LDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwxLDAsMCwwLAotICAgIDY3LDAsMCwwLDExNSwxNCwwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTMxLAotICAgIDAsMCwxLDEwMCwxLDAsODMsNDEsMiwxMjIsNjAsODIsMTAxLDEwOCwxMDEsOTcsCi0gICAgMTE1LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDgsMTExLAotICAgIDk5LDEwNywzMiwxMTQsMTAxLDEwMyw5NywxMTQsMTAwLDEwOCwxMDEsMTE1LDExNSwzMiwxMTEsMTAyLAotICAgIDMyLDk3LDExMCwxMjEsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCwzMiwxMDEsMTIwLDk5LDEwMSwKLSAgICAxMTIsMTE2LDEwNSwxMTEsMTEwLDExNSw0Niw3OCw0MSwyLDExNCw1NywwLDAsMCwxMTQsCi0gICAgNTgsMCwwLDAsNDEsNCwxMTQsMTksMCwwLDAsOTAsOCwxMDEsMTIwLDk5LAotICAgIDk1LDExNiwxMjEsMTEyLDEwMSw5MCw5LDEwMSwxMjAsOTksOTUsMTE4LDk3LDEwOCwxMTcsMTAxLAotICAgIDkwLDEzLDEwMSwxMjAsOTksOTUsMTE2LDExNCw5Nyw5OSwxMDEsOTgsOTcsOTksMTA3LDExNCwKLSAgICAxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwzMCwKLSAgICAwLDAsMCw4OCwzLDAsMCwxMTUsMiwwLDAsMCwwLDIsMTIyLDI3LAotICAgIDk1LDczLDEwOSwxMTIsMTExLDExNCwxMTYsNzYsMTExLDk5LDEwNyw2NywxMTEsMTEwLDExNiwxMDEsCi0gICAgMTIwLDExNiw0Niw5NSw5NSwxMDEsMTIwLDEwNSwxMTYsOTUsOTUsNzgsNDEsNiwxMTQsMSwKLSAgICAwLDAsMCwxMTQsMCwwLDAsMCwxMTQsMiwwLDAsMCwxMTQsMywwLAotICAgIDAsMCwxMTQsMjMsMCwwLDAsMTE0LDMwLDAsMCwwLDExNCwxMCwwLDAsCi0gICAgMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwKLSAgICAxMTQsMTY1LDAsMCwwLDgwLDMsMCwwLDExNSw2LDAsMCwwLDEyLDIsCi0gICAgNiwyLDEyLDQsMTE0LDE2NSwwLDAsMCw5OSwzLDAsMCwwLDAsMCwKLSAgICAwLDAsNSwwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSw4OCwKLSAgICAwLDAsMCwxMjQsMSwwLDEwNiwwLDAsMTAwLDEsMCwxMjQsMiwwLDEwMCwKLSAgICAyLDAsMjQsMTMxLDIsMCwxMjUsMywwLDExNiwxLDAsMTI0LDMsMCwxMzEsCi0gICAgMSwwLDEyNCwyLDAsMTA3LDAsMCwxMTQsNTIsMCwxMTYsMiwwLDEwMCwzLAotICAgIDAsMTMxLDEsMCwxMzAsMSwwLDEyNCwzLDAsMTAwLDQsMCwyNSwxMjUsNCwKLSAgICAwLDEyNCwwLDAsMTE0LDg0LDAsMTAwLDUsMCwxMDYsMywwLDEyNCw0LDAsCi0gICAgMTI0LDAsMCwxMzEsMiwwLDgzLDEyNCw0LDAsODMsNDEsNiwxMjIsNTAsODIsCi0gICAgMTAxLDExNSwxMTEsMTA4LDExOCwxMDEsMzIsOTcsMzIsMTE0LDEwMSwxMDgsOTcsMTE2LDEwNSwxMTgsCi0gICAgMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDMyLDExNiwxMTEsCi0gICAgMzIsOTcsMTEwLDMyLDk3LDk4LDExNSwxMTEsMTA4LDExNywxMTYsMTAxLDMyLDExMSwxMTAsMTAxLAotICAgIDQ2LDExNCwxMjEsMCwwLDAsMTE0LDQ1LDAsMCwwLDEyMiw1MCw5NywxMTYsMTE2LAotICAgIDEwMSwxMDksMTEyLDExNiwxMDEsMTAwLDMyLDExNCwxMDEsMTA4LDk3LDExNiwxMDUsMTE4LDEwMSwzMiwKLSAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiw5OCwxMDEsMTIxLDExMSwxMTAsMTAwLDMyLDExNiwxMTEsCi0gICAgMTEyLDQ1LDEwOCwxMDEsMTE4LDEwMSwxMDgsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDExNCwKLSAgICAzMywwLDAsMCwxMjIsNSwxMjMsMTI1LDQ2LDEyMywxMjUsNDEsNCwyMTgsNiwxMTQsCi0gICAgMTE1LDExMiwxMDgsMTA1LDExNiwyMTgsMywxMDgsMTAxLDExMCwyMTgsMTAsODYsOTcsMTA4LDExNywKLSAgICAxMDEsNjksMTE0LDExNCwxMTEsMTE0LDExNCw1MCwwLDAsMCw0MSw1LDExNCwxNSwwLAotICAgIDAsMCwyMTgsNywxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMjE4LDUsMTA4LDEwMSwxMTgsCi0gICAgMTAxLDEwOCw5MCw0LDk4LDEwNSwxMTYsMTE1LDkwLDQsOTgsOTcsMTE1LDEwMSwxMTQsMTAsCi0gICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTMsOTUsCi0gICAgMTE0LDEwMSwxMTUsMTExLDEwOCwxMTgsMTAxLDk1LDExMCw5NywxMDksMTAxLDkzLDMsMCwwLAotICAgIDExNSwxMCwwLDAsMCwwLDIsMjIsMSwxOCwxLDEyLDEsMTAsMSwxMTQsCi0gICAgMTcxLDAsMCwwLDk5LDMsMCwwLDAsMCwwLDAsMCw0LDAsMCwKLSAgICAwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDQ3LDAsMCwwLDEyNCwwLAotICAgIDAsMTA2LDAsMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDIsMCwxMjUsMywwLAotICAgIDEyNCwzLDAsMTAwLDAsMCwxMDcsOCwwLDExNCwzNCwwLDEwMCwwLDAsODMsCi0gICAgMTE2LDEsMCwxMjQsMSwwLDEyNCwzLDAsMTMxLDIsMCw4Myw0MSwxLDc4LAotICAgIDQxLDIsMTE0LDE1NSwwLDAsMCwxMTQsODUsMCwwLDAsNDEsNCwyMTgsNiwKLSAgICAxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwxMTQsMTUsMCwwLDAsMTE0LDE1MiwwLDAsMCwKLSAgICAxMTQsOTksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCi0gICAgMTEsMCwwLDAsMjE4LDE3LDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSwKLSAgICA5NSwxMDgsMTAxLDEwMyw5Nyw5OSwxMjEsMTAyLDMsMCwwLDExNSw4LDAsMCwwLAotICAgIDAsMywxOCwxLDEyLDEsNCwxLDExNCwxNzMsMCwwLDAsOTksMywwLAotICAgIDAsMCwwLDAsMCwwLDksMCwwLDAsMjcsMCwwLDAsNjcsMCwKLSAgICAwLDAsMTE1LDQyLDEsMCwwLDExNiwwLDAsMTA2LDEsMCwxMDAsMSwwLAotICAgIDEwNyw5LDAsMTE0LDQxLDAsMTE2LDAsMCwxMDYsMSwwLDEyLDExNCw0MSwwLAotICAgIDExNiwyLDAsMTA2LDMsMCwxMDAsMiwwLDExNiw0LDAsMTMxLDIsMCwxLAotICAgIDEyNCwwLDAsMTE2LDAsMCwxMDYsNSwwLDEwNyw2LDAsMTI1LDMsMCwxMjAsCi0gICAgMjM1LDAsMTE2LDAsMCwxMDYsMSwwLDY4LDkzLDIyMCwwLDEyNSw0LDAsMTE2LAotICAgIDYsMCwxMzEsMCwwLDE0Myw5MCwwLDEsMTIxLDEzLDAsMTI0LDQsMCwxMDYsCi0gICAgNywwLDEyNSw1LDAsODcsMTEwLDUxLDAsNCwxMTYsOCwwLDEwNywxMCwwLAotICAgIDExNCwxNDgsMCwxLDEsMSwxMTYsOSwwLDEyNCw0LDAsMTI0LDAsMCwxMjQsCi0gICAgMSwwLDEzMSwzLDAsMTI1LDYsMCwxMjQsNiwwLDEwMCwxLDAsMTA3LDgsCi0gICAgMCwxMTQsMTQ0LDAsMTE5LDY2LDAsODksMTEwLDE5LDAsODgsMTI0LDUsMCwxMjQsCi0gICAgMCwwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMywwLDEyNSw2LDAsODcsMTAwLAotICAgIDEsMCw4MSw4Miw4OCwxMjQsNiwwLDEwMCwxLDAsMTA3LDksMCwxMTQsNjYsCi0gICAgMCwxMjQsMywwLDEyLDExNCwyNiwxLDEyNCwwLDAsMTE2LDAsMCwxMDYsNSwKLSAgICAwLDEwNyw2LDAsMTE0LDI2LDEsMTE2LDAsMCwxMDYsNSwwLDEyNCwwLDAsCi0gICAgMjUsMTI1LDcsMCwxMjEsMTMsMCwxMjQsNywwLDEwNiwxMCwwLDEyNSw4LDAsCi0gICAgODcsMTEwLDIyLDAsNCwxMTYsOCwwLDEwNywxMCwwLDExNCwyLDEsMSwxLAotICAgIDEsMTI0LDYsMCw4Myw4OSwxMTMsMzAsMSw4OCwxMjQsOCwwLDEwMCwxLDAsCi0gICAgMTA3LDgsMCwxMTQsMTksMSwxMjQsNiwwLDgzLDEyNCw4LDAsODMsMTEzLDY2LAotICAgIDAsMTI0LDYsMCw4MywxMTMsNjYsMCw4NywxMDAsMSwwLDgzLDEwMCwxLDAsCi0gICAgODMsNDEsMywxMjIsMjMsNzAsMTA1LDExMCwxMDAsMzIsOTcsMzIsMTA5LDExMSwxMDAsMTE3LAotICAgIDEwOCwxMDEsMzksMTE1LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsNzgsMTIyLDIyLDExNSwKLSAgICAxMjEsMTE1LDQ2LDEwOSwxMDEsMTE2LDk3LDk1LDExMiw5NywxMTYsMTA0LDMyLDEwNSwxMTUsMzIsCi0gICAgMTAxLDEwOSwxMTIsMTE2LDEyMSw0MSwxMSwxMTQsMTQsMCwwLDAsMjE4LDksMTA5LDEwMSwKLSAgICAxMTYsOTcsOTUsMTEyLDk3LDExNiwxMDQsMTE0LDE0MSwwLDAsMCwxMTQsMTQyLDAsMCwKLSAgICAwLDIxOCwxMyw3MywxMDksMTEyLDExMSwxMTQsMTE2LDg3LDk3LDExNCwxMTAsMTA1LDExMCwxMDMsCi0gICAgMTE0LDIxLDAsMCwwLDExNCwxNjUsMCwwLDAsMTE0LDE1NCwwLDAsMCwxMTQsCi0gICAgOTYsMCwwLDAsMTE0LDE3MywwLDAsMCwxMTQsOTUsMCwwLDAsNDEsOSwKLSAgICAxMTQsMTUsMCwwLDAsMTE0LDE1MiwwLDAsMCwxMTQsMTUzLDAsMCwwLDkwLAotICAgIDksMTA1LDExNSw5NSwxMTQsMTAxLDEwOCwxMTEsOTcsMTAwLDExNCwxNzIsMCwwLDAsMTE0LAotICAgIDE1NCwwLDAsMCwxMTQsODgsMCwwLDAsMTE0LDg5LDAsMCwwLDExNCw5NSwKKyAgICAwLDExNCwxMDUsMCwwLDAsNTMsMywwLDAsMTE1LDIsMCwwLDAsMCwKKyAgICA0LDEyMiwyNSw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLAorICAgIDExNCw0NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0MSwyLDc4LDc4LAorICAgIDQxLDEsNzgsNDEsMTYsMTE0LDEsMCwwLDAsMTE0LDAsMCwwLDAsMTE0LAorICAgIDIsMCwwLDAsMTE0LDMsMCwwLDAsMTE0LDE1MCwwLDAsMCwxMTQsODYsCisgICAgMCwwLDAsMTE0LDE1MSwwLDAsMCwxMTQsMTQ2LDAsMCwwLDExNCwxNDcsMCwKKyAgICAwLDAsMTE0LDEzNCwwLDAsMCwxMTQsMTM1LDAsMCwwLDExNCwxMzgsMCwwLAorICAgIDAsMTE0LDc3LDAsMCwwLDExNCwxNDgsMCwwLDAsMTE0LDE0OSwwLDAsMCwKKyAgICAxMTQsMTA1LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTUyLDAsMCwwLDI0MSwyLAorICAgIDAsMCwxMTUsMzAsMCwwLDAsOCw3LDQsMiwxMiw5LDIsMSwxMiwKKyAgICA2LDIsMSwxMiw4LDEyLDQsMTIsOSwxMiw5LDIsMSwxNCw1LDIsCisgICAgMSwxNCw1LDIsMSwxMTQsMTUyLDAsMCwwLDk5LDAsMCwwLDAsMCwKKyAgICAwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNjQsMCwwLDAsMTE1LAorICAgIDMyLDAsMCwwLDEwMSwwLDkwLDEsMTAwLDAsOTAsMiwxMDAsMSw5MCwzLAorICAgIDEwMCwyLDEwMCwzLDEzMiwwLDkwLDQsMTAwLDQsMTAwLDUsMTMyLDAsOTAsNSwKKyAgICAxMDAsNiw4MywwLDQxLDcsMjE4LDE4LDk1LDczLDEwOSwxMTIsMTExLDExNCwxMTYsNzYsCisgICAgMTExLDk5LDEwNyw2NywxMTEsMTEwLDExNiwxMDEsMTIwLDExNiwxMjIsMzYsNjcsMTExLDExMCwxMTYsCisgICAgMTAxLDEyMCwxMTYsMzIsMTA5LDk3LDExMCw5NywxMDMsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNyw0NiwKKyAgICA5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwxLDAsMCwKKyAgICAwLDY3LDAsMCwwLDExNSwxMiwwLDAsMCwxMTYsMCwxMDYsMSwxMzEsMCwKKyAgICAxLDAsMTAwLDEsODMsMCw0MSwyLDEyMiwyNCw2NSw5OSwxMTMsMTE3LDEwNSwxMTQsCisgICAgMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsOTksCisgICAgMTA3LDQ2LDc4LDQxLDIsMTE0LDQ2LDAsMCwwLDExNCwxMzcsMCwwLDAsNDEsCisgICAgMSwxMTQsMjYsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwKKyAgICAxMTQsMTEsMCwwLDAsMTE0LDQ4LDAsMCwwLDY2LDMsMCwwLDExNSwyLAorICAgIDAsMCwwLDAsMiwxMjIsMjgsOTUsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw3NiwxMTEsCisgICAgOTksMTA3LDY3LDExMSwxMTAsMTE2LDEwMSwxMjAsMTE2LDQ2LDk1LDk1LDEwMSwxMTAsMTE2LDEwMSwKKyAgICAxMTQsOTUsOTUsOTksNCwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsCisgICAgMSwwLDAsMCw2NywwLDAsMCwxMTUsMTIsMCwwLDAsMTE2LDAsMTA2LAorICAgIDEsMTMxLDAsMSwwLDEwMCwxLDgzLDAsNDEsMiwxMjIsNjAsODIsMTAxLDEwOCwKKyAgICAxMDEsOTcsMTE1LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwKKyAgICAxMDgsMTExLDk5LDEwNywzMiwxMTQsMTAxLDEwMyw5NywxMTQsMTAwLDEwOCwxMDEsMTE1LDExNSwzMiwKKyAgICAxMTEsMTAyLDMyLDk3LDExMCwxMjEsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCwzMiwxMDEsMTIwLAorICAgIDk5LDEwMSwxMTIsMTE2LDEwNSwxMTEsMTEwLDExNSw0Niw3OCw0MSwyLDExNCw0NiwwLDAsCisgICAgMCwxMTQsNDcsMCwwLDAsNDEsNCwxMTQsMjYsMCwwLDAsOTAsOCwxMDEsCisgICAgMTIwLDk5LDk1LDExNiwxMjEsMTEyLDEwMSw5MCw5LDEwMSwxMjAsOTksOTUsMTE4LDk3LDEwOCwKKyAgICAxMTcsMTAxLDkwLDEzLDEwMSwxMjAsOTksOTUsMTE2LDExNCw5Nyw5OSwxMDEsOTgsOTcsOTksCisgICAgMTA3LDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLAorICAgIDExNCw1MCwwLDAsMCw3MCwzLDAsMCwxMTUsMiwwLDAsMCwwLDIsCisgICAgMTIyLDI3LDk1LDczLDEwOSwxMTIsMTExLDExNCwxMTYsNzYsMTExLDk5LDEwNyw2NywxMTEsMTEwLAorICAgIDExNiwxMDEsMTIwLDExNiw0Niw5NSw5NSwxMDEsMTIwLDEwNSwxMTYsOTUsOTUsNzgsNDEsNiwKKyAgICAxMTQsMSwwLDAsMCwxMTQsMCwwLDAsMCwxMTQsMiwwLDAsMCwxMTQsCisgICAgMywwLDAsMCwxMTQsNDgsMCwwLDAsMTE0LDUwLDAsMCwwLDExNCwxMCwKICAgICAwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLAotICAgIDAsMCwyMTgsMTAsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDExMSwzLAotICAgIDAsMCwxMTUsNDgsMCwwLDAsMCwyLDI1LDEsMTYsNCwxNSwxLDE2LAotICAgIDEsMTAsMSwzLDEsMTMsMSwxMywxLDE4LDEsMTIsMSw4LDIsMjUsCi0gICAgMSwxMiwyLDIyLDEsMTMsMSwzLDEsMTMsMSwxMyw0LDksMiwxMiwKLSAgICAxLDQsMiw3LDIsOCwyLDExNCwxNzYsMCwwLDAsOTksMywwLDAsCi0gICAgMCwwLDAsMCwwLDQsMCwwLDAsNCwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsMTg1LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMTYsMSwwLDEzMSwKLSAgICAyLDAsMTE1LDQyLDAsMTE2LDIsMCwxMDAsMSwwLDEwNiwzLDAsMTE2LDQsCi0gICAgMCwxMjQsMCwwLDEzMSwxLDAsMTMxLDEsMCwxMzEsMSwwLDEzMCwxLDAsCi0gICAgMTI0LDIsMCwxMDAsMiwwLDEwNywwLDAsMTE0LDY2LDAsMTE2LDUsMCwxMDAsCi0gICAgMywwLDEzMSwxLDAsMTMwLDEsMCwxMjQsMiwwLDEwMCwyLDAsMTA3LDQsCi0gICAgMCwxMTQsMTUwLDAsMTE2LDAsMCwxMjQsMSwwLDExNiwxLDAsMTMxLDIsMCwKLSAgICAxMTUsMTA4LDAsMTE2LDIsMCwxMDAsNCwwLDEzMSwxLDAsMTMwLDEsMCwxMTAsCi0gICAgNDIsMCwxMjQsMSwwLDExNiw2LDAsMTA2LDcsMCwxMDcsNywwLDExNCwxNTAsCi0gICAgMCwxMDAsNSwwLDEyNSwzLDAsMTE2LDgsMCwxMjQsMywwLDEwNiwzLDAsCi0gICAgMTI0LDEsMCwxMzEsMSwwLDEzMSwxLDAsMTMwLDEsMCwxMjQsMCwwLDEyLAotICAgIDExNCwxODEsMCwxMjQsMiwwLDEwMCwyLDAsMTA3LDIsMCwxMTQsMTgxLDAsMTE2LAotICAgIDUsMCwxMDAsNiwwLDEzMSwxLDAsMTMwLDEsMCwxMDAsNywwLDgzLDQxLAotICAgIDgsMTIyLDI4LDg2LDEwMSwxMTQsMTA1LDEwMiwxMjEsMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwKLSAgICAxMTAsMTE2LDExNSwzMiw5NywxMTQsMTAxLDMyLDM0LDExNSw5NywxMTAsMTAxLDM0LDQ2LDEyMiwKLSAgICAzMSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMDksMTE3LDExNSwKLSAgICAxMTYsMzIsOTgsMTAxLDMyLDExNSwxMTYsMTE0LDQ0LDMyLDExMCwxMTEsMTE2LDMyLDEyMywxMjUsCi0gICAgMTE0LDMzLDAsMCwwLDEyMiwxOCwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDEwOSwxMTcsMTE1LAotICAgIDExNiwzMiw5OCwxMDEsMzIsNjIsNjEsMzIsNDgsMTIyLDMxLDk1LDk1LDExMiw5Nyw5OSwKLSAgICAxMDcsOTcsMTAzLDEwMSw5NSw5NSwzMiwxMTAsMTExLDExNiwzMiwxMTUsMTAxLDExNiwzMiwxMTYsCi0gICAgMTExLDMyLDk3LDMyLDExNSwxMTYsMTE0LDEwNSwxMTAsMTAzLDEyMiw2MSw4MCw5NywxMTQsMTAxLAotICAgIDExMCwxMTYsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsMTEwLAotICAgIDExMSwxMTYsMzIsMTA4LDExMSw5NywxMDAsMTAxLDEwMCw0NCwzMiw5OSw5NywxMTAsMTEwLDExMSwKLSAgICAxMTYsMzIsMTEyLDEwMSwxMTQsMTAyLDExMSwxMTQsMTA5LDMyLDExNCwxMDEsMTA4LDk3LDExNiwxMDUsCi0gICAgMTE4LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMjIsMTcsNjksMTA5LDExMiwxMTYsMTIxLAotICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDc4LDQxLDksMjE4LAotICAgIDEwLDEwNSwxMTUsMTA1LDExMCwxMTUsMTE2LDk3LDExMCw5OSwxMDEsMjE4LDMsMTE1LDExNiwxMTQsCi0gICAgMjE4LDksODQsMTIxLDExMiwxMDEsNjksMTE0LDExNCwxMTEsMTE0LDExNCw1MCwwLDAsMCwKLSAgICAxMTQsMTMsMCwwLDAsMTE0LDE2OCwwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LAotICAgIDIxLDAsMCwwLDIxOCwxMSw4MywxMjEsMTE1LDExNiwxMDEsMTA5LDY5LDExNCwxMTQsMTExLAotICAgIDExNCw0MSw0LDExNCwxNSwwLDAsMCwxMTQsMTY5LDAsMCwwLDExNCwxNzAsMCwKLSAgICAwLDAsMTE0LDE0NywwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwKLSAgICAwLDExNCwxMSwwLDAsMCwyMTgsMTMsOTUsMTE1LDk3LDExMCwxMDUsMTE2LDEyMSw5NSwKLSAgICA5OSwxMDQsMTAxLDk5LDEwNywxNTEsMywwLDAsMTE1LDI0LDAsMCwwLDAsMiwKLSAgICAxNSwxLDI3LDEsMTIsMSwxMiwxLDEyLDEsMTUsMSwxNSwxLDE1LDEsCi0gICAgNiwyLDIxLDEsMTksMSwxMTQsMTgxLDAsMCwwLDEyMiwxNiw3OCwxMTEsMzIsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMTAwLDMyLDEyMiw0LDEyMywKLSAgICAzMywxMTQsMTI1LDk5LDIsMCwwLDAsMCwwLDAsMCw4LDAsMCwwLAotICAgIDEyLDAsMCwwLDY3LDAsMCwwLDExNSw0MCwxLDAsMCwxMDAsMCwwLAotICAgIDEyNSwyLDAsMTI0LDAsMCwxMDYsMCwwLDEwMCwxLDAsMTMxLDEsMCwxMDAsCi0gICAgMiwwLDI1LDEyNSwzLDAsMTI0LDMsMCwxMTQsMTc1LDAsMTI0LDMsMCwxMTYsCi0gICAgMSwwLDEwNiwyLDAsMTA3LDcsMCwxMTQsNTksMCwxMTYsMywwLDEyNCwxLAotICAgIDAsMTI0LDMsMCwxMzEsMiwwLDEsMTI0LDAsMCwxMTYsMSwwLDEwNiwyLAotICAgIDAsMTA3LDYsMCwxMTQsODUsMCwxMTYsMSwwLDEwNiwyLDAsMTI0LDAsMCwKLSAgICAyNSw4MywxMTYsMSwwLDEwNiwyLDAsMTI0LDMsMCwyNSwxMjUsNCwwLDEyMSwKLSAgICAxMywwLDEyNCw0LDAsMTA2LDQsMCwxMjUsMiwwLDg3LDExMCw2MSwwLDQsCi0gICAgMTE2LDUsMCwxMDcsMTAsMCwxMTQsMTc0LDAsMSwxLDEsMTE2LDYsMCwxMDAsCi0gICAgMywwLDIzLDEwNiw3LDAsMTI0LDAsMCwxMjQsMywwLDEzMSwyLDAsMTI1LAotICAgIDUsMCwxMTYsOCwwLDEyNCw1LDAsMTAwLDQsMCwxMjQsMCwwLDEzMSwxLAotICAgIDEsMTAwLDAsMCwxMzAsMiwwLDg5LDExMCwxLDAsODgsMTE2LDksMCwxMjQsCi0gICAgMCwwLDEyNCwyLDAsMTMxLDIsMCwxMjUsNiwwLDEyNCw2LDAsMTAwLDAsCi0gICAgMCwxMDcsOCwwLDExNCwyMzIsMCwxMTYsOCwwLDExNiw2LDAsMTA2LDcsMCwKLSAgICAxMjQsMCwwLDEzMSwxLDAsMTAwLDQsMCwxMjQsMCwwLDEzMSwxLDEsMTMwLAotICAgIDEsMCwxMTAsMTIsMCwxMTYsMTAsMCwxMjQsNiwwLDEzMSwxLDAsMTI1LDcsCi0gICAgMCwxMjQsMywwLDExNCwzNiwxLDExNiwxLDAsMTA2LDIsMCwxMjQsMywwLAotICAgIDI1LDEyNSw0LDAsMTE2LDExLDAsMTI0LDQsMCwxMjQsMCwwLDEwNiwwLDAsCi0gICAgMTAwLDEsMCwxMzEsMSwwLDEwMCw1LDAsMjUsMTI0LDcsMCwxMzEsMywwLAotICAgIDEsMTI0LDcsMCw4Myw0MSw2LDc4LDExNCwxMjEsMCwwLDAsMTE0LDMzLDAsCi0gICAgMCwwLDEyMiwyMyw1OSwzMiwxMjMsMzMsMTE0LDEyNSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsCi0gICAgMTE2LDMyLDk3LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMTQsMTUsMCwwLDAsCi0gICAgMTE0LDE0MCwwLDAsMCw0MSwxMiwxMTQsMTIyLDAsMCwwLDExNCwxNCwwLDAsCi0gICAgMCwxMTQsMjEsMCwwLDAsMTE0LDY1LDAsMCwwLDExNCwxMzEsMCwwLDAsCi0gICAgMTE0LDk2LDAsMCwwLDIxOCw4LDk1LDY5LDgyLDgyLDk1LDc3LDgzLDcxLDExNCwKLSAgICA1MCwwLDAsMCwxMTQsNzcsMCwwLDAsMTE0LDE3NiwwLDAsMCwxMTQsMTQ5LAotICAgIDAsMCwwLDExNCw1LDAsMCwwLDQxLDgsMTE0LDE1LDAsMCwwLDIxOCwKLSAgICA3LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDExNCwxNTIsMCwwLDAsMTE0LDEyMywwLAotICAgIDAsMCw5MCwxMywxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDExNCwxNDcsMCwwLDAsMTE0LDg4LDAsMCwwLDExNCw4OSwwLDAsMCwKLSAgICAxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsCi0gICAgMjMsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDk3LDExMCwxMDAsOTUsMTA4LDExMSw5NywxMDAsOTUsCi0gICAgMTE3LDExMCwxMDgsMTExLDk5LDEwNywxMDEsMTAwLDE3MSwzLDAsMCwxMTUsNDIsMCwwLAotICAgIDAsMCwxLDYsMSwxOSwxLDYsMSwxNSwxLDEzLDIsMTUsMSwxMSwKLSAgICAxLDEzLDEsMywxLDEzLDEsMTMsMSwyMiwxLDI2LDEsMTUsMSwxMiwKLSAgICAxLDMwLDIsMTIsMSw2LDIsMTMsMSwyOSwxLDExNCwxODQsMCwwLDAsCi0gICAgOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMTAsMCwwLAotICAgIDAsNjcsMCwwLDAsMTE1LDM3LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwKLSAgICAxMzEsMSwwLDE0MywxOCwwLDEsMTE2LDEsMCwxMjQsMCwwLDEyNCwxLDAsCi0gICAgMTMxLDIsMCw4Myw4NywxMDAsMSwwLDgxLDgyLDg4LDEwMCwxLDAsODMsNDEsCi0gICAgMiwxMjIsNTQsNzAsMTA1LDExMCwxMDAsMzIsOTcsMTEwLDEwMCwzMiwxMDgsMTExLDk3LDEwMCwKLSAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwzMiw5NywxMTAsMTAwLAotICAgIDMyLDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLAotICAgIDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsOTksMTA3LDQ2LDc4LDQxLDIsMTE0LDU0LDAsMCwKLSAgICAwLDExNCwxODQsMCwwLDAsNDEsMiwxMTQsMTUsMCwwLDAsMTE0LDE4MywwLAorICAgIDAsMCwxMTQsMTU3LDAsMCwwLDYyLDMsMCwwLDExNSw2LDAsMCwwLAorICAgIDgsMiw0LDIsOCw0LDExNCwxNTcsMCwwLDAsOTksMywwLDAsMCwKKyAgICAwLDAsMCwwLDUsMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwKKyAgICAxMTUsNjQsMCwwLDAsMTI0LDEsMTA2LDAsMTAwLDEsMTI0LDIsMTAwLDIsMjQsCisgICAgMCwxMzEsMiwxMjUsMywxMTYsMSwxMjQsMywxMzEsMSwxMjQsMiwxMDcsMCwxMTQsCisgICAgMzYsMTE2LDIsMTAwLDMsMTMxLDEsMTMwLDEsMTI0LDMsMTAwLDQsMjUsMCwxMjUsCisgICAgNCwxMjQsMCwxMTQsNjAsMTAwLDUsMTA2LDMsMTI0LDQsMTI0LDAsMTMxLDIsODMsCisgICAgMCwxMjQsNCw4MywwLDQxLDYsMTIyLDUwLDgyLDEwMSwxMTUsMTExLDEwOCwxMTgsMTAxLAorICAgIDMyLDk3LDMyLDExNCwxMDEsMTA4LDk3LDExNiwxMDUsMTE4LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMTYsMTExLDMyLDk3LDExMCwzMiw5Nyw5OCwKKyAgICAxMTUsMTExLDEwOCwxMTcsMTE2LDEwMSwzMiwxMTEsMTEwLDEwMSw0NiwxMTQsMTE3LDAsMCwwLAorICAgIDExNCwzMywwLDAsMCwxMjIsNTAsOTcsMTE2LDExNiwxMDEsMTA5LDExMiwxMTYsMTAxLDEwMCwKKyAgICAzMiwxMTQsMTAxLDEwOCw5NywxMTYsMTA1LDExOCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgMzIsOTgsMTAxLDEyMSwxMTEsMTEwLDEwMCwzMiwxMTYsMTExLDExMiw0NSwxMDgsMTAxLDExOCwxMDEsCisgICAgMTA4LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMTQsMTksMCwwLDAsMTIyLDUsCisgICAgMTIzLDEyNSw0NiwxMjMsMTI1LDQxLDQsMjE4LDYsMTE0LDExNSwxMTIsMTA4LDEwNSwxMTYsMjE4LAorICAgIDMsMTA4LDEwMSwxMTAsMjE4LDEwLDg2LDk3LDEwOCwxMTcsMTAxLDY5LDExNCwxMTQsMTExLDExNCwKKyAgICAxMTQsMzgsMCwwLDAsNDEsNSwxMTQsMTUsMCwwLDAsMjE4LDcsMTEyLDk3LAorICAgIDk5LDEwNyw5NywxMDMsMTAxLDIxOCw1LDEwOCwxMDEsMTE4LDEwMSwxMDgsOTAsNCw5OCwxMDUsCisgICAgMTE2LDExNSw5MCw0LDk4LDk3LDExNSwxMDEsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAorICAgIDAsMCwxMTQsMTEsMCwwLDAsMjE4LDEzLDk1LDExNCwxMDEsMTE1LDExMSwxMDgsMTE4LAorICAgIDEwMSw5NSwxMTAsOTcsMTA5LDEwMSw3NSwzLDAsMCwxMTUsMTAsMCwwLDAsMCwKKyAgICAyLDE2LDEsMTIsMSw4LDEsOCwxLDExNCwxNjMsMCwwLDAsOTksMywKKyAgICAwLDAsMCwwLDAsMCwwLDQsMCwwLDAsMywwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsMzQsMCwwLDAsMTI0LDAsMTA2LDAsMTI0LDEsMTI0LDIsCisgICAgMTMxLDIsMTI1LDMsMTI0LDMsMTAwLDAsMTA3LDgsMTE0LDI0LDEwMCwwLDgzLDAsCisgICAgMTE2LDEsMTI0LDEsMTI0LDMsMTMxLDIsODMsMCw0MSwxLDc4LDQxLDIsMTE0LAorICAgIDE0NywwLDAsMCwxMTQsNzgsMCwwLDAsNDEsNCwyMTgsNiwxMDIsMTA1LDExMCwKKyAgICAxMDAsMTAxLDExNCwxMTQsMTUsMCwwLDAsMTE0LDE0NCwwLDAsMCwxMTQsOTMsMCwKICAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLAotICAgIDAsMjE4LDE0LDk1LDEwMiwxMDUsMTEwLDEwMCw5NSw5NywxMTAsMTAwLDk1LDEwOCwxMTEsOTcsCi0gICAgMTAwLDE5OCwzLDAsMCwxMTUsNCwwLDAsMCwwLDIsMTMsMSwxMTQsMTg1LAotICAgIDAsMCwwLDExNCwzMywwLDAsMCw5OSwzLDAsMCwwLDAsMCwwLAotICAgIDAsNSwwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSwxNjYsMCwKLSAgICAwLDAsMTE2LDAsMCwxMjQsMCwwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMywKLSAgICAwLDEsMTI0LDIsMCwxMDAsMSwwLDEwNyw0LDAsMTE0LDQ2LDAsMTE2LDEsCi0gICAgMCwxMjQsMCwwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMywwLDEyNSwwLDAsCi0gICAgMTE2LDIsMCwxMDYsMywwLDEzMSwwLDAsMSwxMjQsMCwwLDExNiw0LDAsCi0gICAgMTA2LDUsMCwxMDcsNywwLDExNCw4NCwwLDExNiw2LDAsMTI0LDAsMCwxMTYsCi0gICAgNywwLDEzMSwyLDAsODMsMTE2LDQsMCwxMDYsNSwwLDEyNCwwLDAsMjUsCi0gICAgMTI1LDMsMCwxMjQsMywwLDEwMCwyLDAsMTA3LDgsMCwxMTQsMTUyLDAsMTE2LAotICAgIDIsMCwxMDYsOCwwLDEzMSwwLDAsMSwxMDAsMywwLDEwNiw5LDAsMTI0LAotICAgIDAsMCwxMzEsMSwwLDEyNSw0LDAsMTE2LDEwLDAsMTI0LDQsMCwxMDAsNCwKLSAgICAwLDEyNCwwLDAsMTMxLDEsMSwxMzAsMSwwLDExNiwxMSwwLDEyNCwwLDAsCi0gICAgMTMxLDEsMCwxLDEyNCwzLDAsODMsNDEsNSw5Nyw1MCwxLDAsMCw3MywKLSAgICAxMDksMTEyLDExMSwxMTQsMTE2LDMyLDk3LDExMCwxMDAsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsCi0gICAgMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTgsOTcsMTE1LDEwMSwKLSAgICAxMDAsMzIsMTExLDExMCwzMiwxMDUsMTE2LDExNSwzMiwxMTAsOTcsMTA5LDEwMSw0NCwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsMTE2LDEwNCwxMDEsMzIsOTksCi0gICAgOTcsMTA4LDEwOCwzMiwxMDUsMTE1LDEwLDMyLDMyLDMyLDMyLDk4LDEwMSwxMDUsMTEwLDEwMywKLSAgICAzMiwxMDksOTcsMTAwLDEwMSwzMiwxMDIsMTE0LDExMSwxMDksNDQsMzIsOTcsMTEwLDEwMCwzMiwKLSAgICAxMTYsMTA0LDEwMSwzMiwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDk3LDEwMCwxMDYsMTE3LDExNSwxMTYsCi0gICAgMTA5LDEwMSwxMTAsMTE2LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLAotICAgIDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCwzMiwxMTQsMTAxLDExMiwxMTQsMTAxLDExNSwxMDEsCi0gICAgMTEwLDExNiwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTAzLDExNCwxMDEsOTcsMTE2LDEwMSwxMTUsMTE2LAotICAgIDMyLDk5LDExMSwxMDksMTA5LDExMSwxMTAsMzIsMTAwLDEwMSwxMTAsMTExLDEwOSwxMDUsMTEwLDk3LAotICAgIDExNiwxMTEsMTE0LDMyLDExMSwxMDIsMzIsMTAyLDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDk3LAotICAgIDEwOCwxMDUsMTE2LDEyMSwxMCwzMiwzMiwzMiwzMiw5OCwxMDEsMTE2LDExOSwxMDEsMTAxLDExMCwKLSAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5NywKLSAgICAxMTAsMTAwLDMyLDk1LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDk1LDQ2LDMyLDg0LAotICAgIDEwNCwxMDUsMTE1LDMyLDEwNSwxMTAsOTksMTA4LDExNywxMDAsMTAxLDExNSwzMiwxMTUsMTAxLDExNiwKLSAgICAxMTYsMTA1LDExMCwxMDMsMzIsOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LAotICAgIDMyLDEwNSwxMDIsMTAsMzIsMzIsMzIsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5NywxMDAsCi0gICAgMTAxLDExNCwzMiwxMDAsMTA1LDEwMCwzMiwxMTAsMTExLDExNiw0NiwxMCwxMCwzMiwzMiwzMiwKLSAgICAzMiwxMTQsMzMsMCwwLDAsNzgsMTIyLDQwLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLAotICAgIDExMSwxMDIsMzIsMTIzLDEyNSwzMiwxMDQsOTcsMTA4LDExNiwxMDEsMTAwLDU5LDMyLDc4LDExMSwKLSAgICAxMTAsMTAxLDMyLDEwNSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgMTE1LDExNCwxNSwwLDAsMCw0MSwxMiwxMTQsMTgxLDAsMCwwLDExNCwxNzEsMCwKLSAgICAwLDAsMTE0LDU3LDAsMCwwLDExNCwxNDUsMCwwLDAsMTE0LDE0LDAsMCwKLSAgICAwLDExNCwyMSwwLDAsMCwxMTQsMTg1LDAsMCwwLDIxOCwxMSw5NSwxMDMsOTksCi0gICAgMTAwLDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDExNCw1OCwwLDAsMCwxMTQsNTAsMCwKLSAgICAwLDAsMTE0LDc3LDAsMCwwLDExNCw2MywwLDAsMCw0MSw1LDExNCwxNSwKLSAgICAwLDAsMCwxMTQsMTY5LDAsMCwwLDExNCwxNzAsMCwwLDAsMTE0LDg5LDAsCi0gICAgMCwwLDExNCw3NCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwKLSAgICAwLDExNCwxMSwwLDAsMCwxMTQsMTg2LDAsMCwwLDIwNCwzLDAsMCwxMTUsCi0gICAgMjgsMCwwLDAsMCw5LDE2LDEsMTIsMSwxOCwxLDEwLDEsMTUsMSwKLSAgICAxMywxLDEzLDEsMTIsMSwxMCwxLDYsMSw5LDEsMTgsMSwxMCwxLAotICAgIDExNCwxODYsMCwwLDAsOTksMywwLDAsMCwwLDAsMCwwLDYsMCwKLSAgICAwLDAsMTcsMCwwLDAsNjcsMCwwLDAsMTE1LDIzOSwwLDAsMCwxMTYsCi0gICAgMCwwLDEyNCwwLDAsMTAwLDEsMCwxMzEsMiwwLDExNCwyMzUsMCwxMDAsMiwKLSAgICAwLDEyNCwxLDAsMTA3LDYsMCwxMTQsODMsMCwxMTYsMSwwLDEyNCwxLDAsCi0gICAgMTMxLDEsMCwxMjUsMSwwLDEyNCwxLDAsMTA2LDIsMCwxMDAsMiwwLDEzMSwKLSAgICAxLDAsMSwxMTYsMCwwLDEyNCwwLDAsMTAwLDMsMCwxMzEsMiwwLDExNCwKLSAgICA4MywwLDEyNCwxLDAsMTA2LDMsMCwxMjQsMCwwLDEwNiw0LDAsMTMxLDEsCi0gICAgMCwxLDEyMCwxNDksMCwxMjQsMSwwLDY4LDkzLDE0MSwwLDEyNSwzLDAsMTE2LAotICAgIDAsMCwxMjQsMCwwLDEyNCwzLDAsMTMxLDIsMCwxMTUsOTAsMCwxMDAsNCwKLSAgICAwLDEwNiw1LDAsMTI0LDAsMCwxMDYsNiwwLDEyNCwzLDAsMTMxLDIsMCwKLSAgICAxMjUsNCwwLDEyMSwxNywwLDExNiw3LDAsMTI0LDIsMCwxMjQsNCwwLDEzMSwKLSAgICAyLDAsMSw4NywxMTMsOTAsMCw0LDExNiw4LDAsMTA3LDEwLDAsMTE0LDIzMCwKLSAgICAwLDEsMTI1LDUsMCwxLDEyMiw0NywwLDExNiw5LDAsMTI0LDUsMCwxMzEsCi0gICAgMSwwLDEwNiwxMCwwLDExNiwxMSwwLDEzMSwxLDAsMTE0LDIwOSwwLDEyNCw1LAotICAgIDAsMTA2LDEyLDAsMTI0LDQsMCwxMDcsMiwwLDExNCwyMDksMCwxMTksOTAsMCwKLSAgICAxMzAsMCwwLDg3LDg5LDEwMCw1LDAsMTAwLDUsMCwxMjUsNSwwLDEyNiw1LAotICAgIDAsODgsMTEzLDkwLDAsODgsMTEzLDkwLDAsODcsMTI0LDAsMCw4Myw0MSw2LAotICAgIDEyMiwyMzgsNzAsMTA1LDEwMywxMTcsMTE0LDEwMSwzMiwxMTEsMTE3LDExNiwzMiwxMTksMTA0LDk3LAotICAgIDExNiwzMiw5NSw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw5NSw5NSwzMiwxMTUsMTA0LDExMSwKLSAgICAxMTcsMTA4LDEwMCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCw0NiwxMCwxMCwzMiwzMiwzMiwKLSAgICAzMiw4NCwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDMyLDExMiw5NywxMTQsCi0gICAgOTcsMTA5LDEwMSwxMTYsMTAxLDExNCwzMiwxMDUsMTE1LDMyLDk3LDMyLDk5LDk3LDEwOCwxMDgsCi0gICAgOTcsOTgsMTA4LDEwMSwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE2LDk3LDEwNywxMDEsMTE1LAotICAgIDMyLDExNiwxMDQsMTAxLDMyLDExMCw5NywxMDksMTAxLDMyLDExMSwxMDIsMzIsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LAotICAgIDExNiw0NiwzMiw3MywxMTYsMzIsMTA1LDExNSwzMiwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsCi0gICAgMTAwLDMyLDExNiwxMTEsMzIsMTAwLDEwMSw5OSwxMTEsMTE3LDExMiwxMDgsMTAxLDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCwzMiwxMDIsMTE0LDExMSwxMDksMzIsCi0gICAgOTcsMTE1LDExNSwxMTcsMTA5LDEwNSwxMTAsMTAzLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwKLSAgICAxMDUsOTgsMzksMTE1LDEwLDMyLDMyLDMyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLAotICAgIDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMDUsCi0gICAgMTE1LDMyLDEwMCwxMDEsMTE1LDEwNSwxMTQsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwKLSAgICAxMTQsMTMxLDAsMCwwLDI1MCwxLDQyLDIxOCw3LDk1LDk1LDk3LDEwOCwxMDgsOTUsCi0gICAgOTUsMTIyLDUsMTIzLDEyNSw0NiwxMjMsMTI1LDc4LDQxLDEzLDExNCw0LDAsMCwwLAotICAgIDExNCwxMzAsMCwwLDAsMjE4LDYsMTE0LDEwMSwxMDksMTExLDExOCwxMDEsMjE4LDYsMTAxLAotICAgIDEyMCwxMTYsMTAxLDExMCwxMDAsMTE0LDE4OCwwLDAsMCwxMTQsNTAsMCwwLDAsMTE0LAotICAgIDEsMCwwLDAsMTE0LDY1LDAsMCwwLDExNCw3NywwLDAsMCwxMTQsMTc4LAotICAgIDAsMCwwLDExNCw3MSwwLDAsMCwyMTgsMTUsOTUsNjksODIsODIsOTUsNzcsCi0gICAgODMsNzEsOTUsODAsODIsNjksNzAsNzMsODgsMTE0LDE1LDAsMCwwLDQxLDYsCi0gICAgMTE0LDg5LDAsMCwwLDIxOCw4LDEwMiwxMTQsMTExLDEwOSwxMDgsMTA1LDExNSwxMTYsMTE0LAotICAgIDE4MywwLDAsMCwyMTgsMSwxMjAsOTAsOSwxMDIsMTE0LDExMSwxMDksOTUsMTEwLDk3LAotICAgIDEwOSwxMDEsOTAsMywxMDEsMTIwLDk5LDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLAotICAgIDAsMTE0LDExLDAsMCwwLDIxOCwxNiw5NSwxMDQsOTcsMTEwLDEwMCwxMDgsMTAxLDk1LAotICAgIDEwMiwxMTQsMTExLDEwOSwxMDgsMTA1LDExNSwxMTYsMjI4LDMsMCwwLDExNSwzNCwwLDAsCi0gICAgMCwwLDEwLDE1LDEsMTIsMSwxMiwxLDEzLDEsMTUsMSwxNiwxLDEzLAotICAgIDEsMTUsMSwyMSwxLDMsMSwxNywxLDE4LDQsMjEsMSwxNSwxLDMsCi0gICAgMSwyNiwxLDExNCwxOTQsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwKLSAgICAwLDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsNzIsMCwKLSAgICAwLDAsMTI0LDAsMCwxMDYsMCwwLDEwMCwxLDAsMTMxLDEsMCwxMjUsMSwKLSAgICAwLDEyNCwxLDAsMTAwLDIsMCwxMDcsOCwwLDExNCw2OCwwLDEyNCwwLDAsCi0gICAgMTAwLDMsMCwyNSwxMjUsMSwwLDEwMCw0LDAsMTI0LDAsMCwxMDcsNywwLAotICAgIDExNCw2OCwwLDEyNCwxLDAsMTA2LDEsMCwxMDAsNSwwLDEzMSwxLDAsMTAwLAotICAgIDYsMCwyNSwxMjUsMSwwLDEyNCwxLDAsODMsNDEsNywxMjIsMTY3LDY3LDk3LAotICAgIDEwOCw5OSwxMTcsMTA4LDk3LDExNiwxMDEsMzIsMTE5LDEwNCw5NywxMTYsMzIsOTUsOTUsMTEyLAotICAgIDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LDMyLDExNSwxMDQsMTExLDExNywxMDgsMTAwLDMyLAotICAgIDk4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw5NSw5NSwxMTIsOTcsOTksMTA3LDk3LAotICAgIDEwMywxMDEsOTUsOTUsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiwxMDMsMTE3LDk3LDExNCwKLSAgICA5NywxMTAsMTE2LDEwMSwxMDEsMTAwLDMyLDExNiwxMTEsMzIsOTgsMTAxLDMyLDEwMCwxMDEsMTAyLAotICAgIDEwNSwxMTAsMTAxLDEwMCwzMiwxMTEsMTE0LDMyLDk5LDExMSwxMTcsMTA4LDEwMCwzMiw5OCwxMDEsCi0gICAgMzIsMTE1LDEwMSwxMTYsMzIsMTE2LDExMSwzMiw3OCwxMTEsMTEwLDEwMSwxMCwzMiwzMiwzMiwKLSAgICAzMiwxMTYsMTExLDMyLDExNCwxMDEsMTEyLDExNCwxMDEsMTE1LDEwMSwxMTAsMTE2LDMyLDExNiwxMDQsCi0gICAgOTcsMTE2LDMyLDEwNSwxMTYsMTE1LDMyLDExMiwxMTQsMTExLDExMiwxMDEsMTE0LDMyLDExOCw5NywKLSAgICAxMDgsMTE3LDEwMSwzMiwxMDUsMTE1LDMyLDExNywxMTAsMTA3LDExMCwxMTEsMTE5LDExMCw0NiwxMCwKLSAgICAxMCwzMiwzMiwzMiwzMiwxMTQsMTM0LDAsMCwwLDc4LDExNCwxLDAsMCwwLAotICAgIDExNCwxMzEsMCwwLDAsMTE0LDEyMSwwLDAsMCwxMTQsMzMsMCwwLDAsNDEsCi0gICAgMiwxMTQsNDIsMCwwLDAsMTE0LDEyMiwwLDAsMCw0MSwyLDIxOCw3LDEwMywKLSAgICAxMDgsMTExLDk4LDk3LDEwOCwxMTUsMTE0LDE2OSwwLDAsMCwxMTQsMTAsMCwwLDAsCi0gICAgMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTcsOTUsOTksOTcsMTA4LAotICAgIDk5LDk1LDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSw0LDQsMCwKLSAgICAwLDExNSwxMiwwLDAsMCwwLDcsMTUsMSwxMiwxLDEwLDEsMTIsMSwKLSAgICAxOSwxLDExNCwxOTYsMCwwLDAsOTksNSwwLDAsMCwwLDAsMCwwLAotICAgIDksMCwwLDAsNSwwLDAsMCw2NywwLDAsMCwxMTUsMjI3LDAsMCwKLSAgICAwLDEyNCw0LDAsMTAwLDEsMCwxMDcsMiwwLDExNCwyNywwLDExNiwwLDAsCi0gICAgMTI0LDAsMCwxMzEsMSwwLDEyNSw1LDAsMTEwLDU0LDAsMTI0LDEsMCwxMDAsCi0gICAgMiwwLDEwNyw5LDAsMTE0LDQ1LDAsMTI0LDEsMCwxMTAsMywwLDEwNSwwLAotICAgIDAsMTI1LDYsMCwxMTYsMSwwLDEyNCw2LDAsMTMxLDEsMCwxMjUsNywwLAotICAgIDExNiwwLDAsMTI0LDAsMCwxMjQsNywwLDEyNCw0LDAsMTMxLDMsMCwxMjUsCi0gICAgNSwwLDEyNCwzLDAsMTE1LDIwNywwLDEyNCw0LDAsMTAwLDEsMCwxMDcsMiwKLSAgICAwLDExNCwxMjIsMCwxMTYsMCwwLDEyNCwwLDAsMTA2LDIsMCwxMDAsMywwLAotICAgIDEzMSwxLDAsMTAwLDEsMCwyNSwxMzEsMSwwLDgzLDEyNCwwLDAsMTE1LDEzMiwKLSAgICAwLDEyNCw1LDAsODMsMTE2LDMsMCwxMjQsMCwwLDEzMSwxLDAsMTE2LDMsCi0gICAgMCwxMjQsMCwwLDEwNiwyLDAsMTAwLDMsMCwxMzEsMSwwLDEwMCwxLDAsCi0gICAgMjUsMTMxLDEsMCwyNCwxMjUsOCwwLDExNiw0LDAsMTA2LDUsMCwxMjQsNSwKLSAgICAwLDEwNiw2LDAsMTAwLDIsMCwxMTYsMywwLDEyNCw1LDAsMTA2LDYsMCwKLSAgICAxMzEsMSwwLDEyNCw4LDAsMjQsMTMzLDIsMCwyNSwyNSw4MywxMTAsMTYsMCwKLSAgICAxMTYsNywwLDEyNCw1LDAsMTI0LDMsMCwxMTYsMCwwLDEzMSwzLDAsODMsCi0gICAgMTAwLDIsMCw4Myw0MSw0LDk3LDIxNSwxLDAsMCw3MywxMDksMTEyLDExMSwxMTQsCi0gICAgMTE2LDMyLDk3LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLAotICAgIDMyLDg0LDEwNCwxMDEsMzIsMzksMTAzLDEwOCwxMTEsOTgsOTcsMTA4LDExNSwzOSwzMiw5NywKLSAgICAxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsMTA1LDExNSwzMiwxMTcsMTE1LDEwMSwxMDAsMzIsCi0gICAgMTE2LDExMSwzMiwxMDUsMTEwLDEwMiwxMDEsMTE0LDMyLDExOSwxMDQsMTAxLDExNCwxMDEsMzIsMTE2LAotICAgIDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA1LDExNSwzMiwxMTEsOTksOTksCi0gICAgMTE3LDExNCwxMTQsMTA1LDExMCwxMDMsMzIsMTAyLDExNCwxMTEsMTA5LDEwLDMyLDMyLDMyLDMyLAotICAgIDExNiwxMTEsMzIsMTA0LDk3LDExMCwxMDAsMTA4LDEwMSwzMiwxMTQsMTAxLDEwOCw5NywxMTYsMTA1LAotICAgIDExOCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTE1LDQ2LDMyLDg0LDEwNCwxMDEsMzIsCi0gICAgMzksMTA4LDExMSw5OSw5NywxMDgsMTE1LDM5LDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLAotICAgIDExNiwzMiwxMDUsMTE1LDMyLDEwNSwxMDMsMTEwLDExMSwxMTQsMTAxLDEwMCw0NiwzMiw4NCwxMDQsCi0gICAgMTAxLDEwLDMyLDMyLDMyLDMyLDM5LDEwMiwxMTQsMTExLDEwOSwxMDgsMTA1LDExNSwxMTYsMzksCi0gICAgMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsCi0gICAgMTA1LDEwMSwxMTUsMzIsMTE5LDEwNCw5NywxMTYsMzIsMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsCi0gICAgMTAxLDEyMCwxMDUsMTE1LDExNiwzMiw5NywxMTUsMzIsOTcsMTE2LDExNiwxMTQsMTA1LDk4LDExNywKLSAgICAxMTYsMTAxLDExNSwzMiwxMTEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDEwLDMyLDMyLDMyLDMyLDk4LDEwMSwxMDUsMTEwLDEwMywzMiwxMDUsMTA5LDExMiwxMTEsCi0gICAgMTE0LDExNiwxMDEsMTAwLDMyLDQwLDEwMSw0NiwxMDMsNDYsMzIsOTYsOTYsMTAyLDExNCwxMTEsCi0gICAgMTA5LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLAotICAgIDYwLDEwMiwxMTQsMTExLDEwOSwxMDgsMTA1LDExNSwxMTYsNjIsOTYsOTYsNDEsNDYsMzIsMzIsCi0gICAgODQsMTA0LDEwMSwzMiwzOSwxMDgsMTAxLDExOCwxMDEsMTA4LDM5LDEwLDMyLDMyLDMyLDMyLAotICAgIDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwzMiwxMTQsMTAxLDExMiwxMTQsMTAxLDExNSwxMDEsCi0gICAgMTEwLDExNiwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLAotICAgIDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExNiwxMTEsMzIsMTA1LDEwOSwxMTIsMTExLAotICAgIDExNCwxMTYsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDEwNSwxMTAsMzIsOTcsMzIsMTE0LDEwMSwxMDgsCi0gICAgOTcsMTE2LDEwNSwxMTgsMTAxLDEwLDMyLDMyLDMyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAotICAgIDMyLDQwLDEwMSw0NiwxMDMsNDYsMzIsOTYsOTYsMTAyLDExNCwxMTEsMTA5LDMyLDQ2LDQ2LAotICAgIDExMiwxMDcsMTAzLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOSwxMTEsMTAwLDk2LDk2LAotICAgIDMyLDExOSwxMTEsMTE3LDEwOCwxMDAsMzIsMTA0LDk3LDExOCwxMDEsMzIsOTcsMzIsMzksMTA4LAotICAgIDEwMSwxMTgsMTAxLDEwOCwzOSwzMiwxMTEsMTAyLDMyLDUwLDQxLDQ2LDEwLDEwLDMyLDMyLAotICAgIDMyLDMyLDExNCwzMywwLDAsMCw3OCwxMTQsMTIxLDAsMCwwLDQxLDgsMTE0LAotICAgIDE4NiwwLDAsMCwxMTQsMTk2LDAsMCwwLDIxOCw5LDExMiw5NywxMTQsMTE2LDEwNSwKLSAgICAxMTYsMTA1LDExMSwxMTAsMTE0LDE2NywwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LDIxLAotICAgIDAsMCwwLDExNCwxLDAsMCwwLDExNCwxOTQsMCwwLDAsNDEsOSwxMTQsCi0gICAgMTUsMCwwLDAsMTE0LDE5NSwwLDAsMCwyMTgsNiwxMDgsMTExLDk5LDk3LDEwOCwKLSAgICAxMTUsMTE0LDE5MiwwLDAsMCwxMTQsMTcwLDAsMCwwLDExNCw4OSwwLDAsMCwKLSAgICA5MCw4LDEwMywxMDgsMTExLDk4LDk3LDEwOCwxMTUsOTUsMTE0LDE2OSwwLDAsMCw5MCwKLSAgICA3LDk5LDExNywxMTYsOTUsMTExLDEwMiwxMDIsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAotICAgIDAsMCwxMTQsMTEsMCwwLDAsMjE4LDEwLDk1LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsCi0gICAgMTE2LDk1LDk1LDE5LDQsMCwwLDExNSwyNiwwLDAsMCwwLDExLDEyLDEsCi0gICAgMTUsMiwyNCwxLDEyLDEsMTgsMSw2LDMsMTIsMSwyMywxLDYsMSwKLSAgICA0LDQsMzUsMyw0MCwyLDExNCwxOTksMCwwLDAsOTksMSwwLDAsMCwKLSAgICAwLDAsMCwwLDIsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwKLSAgICAxMTUsNTMsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwwLDAsMTMxLDEsCi0gICAgMCwxMjUsMSwwLDEyNCwxLDAsMTAwLDAsMCwxMDcsOCwwLDExNCw0MywwLAotICAgIDExNiwyLDAsMTAwLDEsMCwxMjQsMCwwLDIzLDEzMSwxLDAsMTMwLDEsMCwKLSAgICAxMTYsMywwLDEyNCwxLDAsMTMxLDEsMCw4Myw0MSwyLDc4LDEyMiwyNSwxMTAsCi0gICAgMTExLDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDMyLDExMCw5NywxMDksMTAxLDEwMCwzMiw0MSw0LDExNCwxNTAsMCwwLDAsMTE0LAotICAgIDE1NCwwLDAsMCwxMTQsNzcsMCwwLDAsMTE0LDE0OSwwLDAsMCw0MSwyLAotICAgIDExNCwxNSwwLDAsMCwxMTQsODgsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKLSAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE4LDk1LDk4LDExNywxMDUsMTA4LAotICAgIDExNiwxMDUsMTEwLDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMTAsOTcsMTA5LDEwMSw1NCw0LDAsCi0gICAgMCwxMTUsOCwwLDAsMCwwLDEsMTUsMSwxMiwxLDE2LDEsMTE0LDIwMCwKLSAgICAwLDAsMCw5OSwyLDAsMCwwLDAsMCwwLDAsMTIsMCwwLDAsCi0gICAgMTIsMCwwLDAsNjcsMCwwLDAsMTE1LDc0LDEsMCwwLDEyNCwxLDAsCi0gICAgOTcsMCwwLDEyNCwwLDAsOTcsMSwwLDExNiwyLDAsMTE2LDEsMCwxMzEsCi0gICAgMSwwLDEyNSwyLDAsMTIwLDEyMywwLDExNiwxLDAsMTA2LDMsMCwxMDYsNCwKLSAgICAwLDEzMSwwLDAsNjgsOTMsMTA2LDAsOTIsMiwwLDEyNSwzLDAsMTI1LDQsCi0gICAgMCwxMTYsNSwwLDEyNCw0LDAsMTI0LDIsMCwxMzEsMiwwLDExNCw0MCwwLAotICAgIDEyNCwzLDAsMTE2LDEsMCwxMDYsNiwwLDEwNyw2LDAsMTE0LDkxLDAsMTE2LAotICAgIDcsMCwxMjUsNSwwLDExMCwyNywwLDExNiwwLDAsMTA2LDgsMCwxMjQsMywKLSAgICAwLDEzMSwxLDAsMTE0LDQwLDAsMTE2LDksMCwxMjUsNSwwLDExMCwzLDAsCi0gICAgMTEzLDQwLDAsMTE2LDEwLDAsMTI0LDQsMCwxMjQsNSwwLDEzMSwyLDAsMTI1LAotICAgIDYsMCwxMTYsMTEsMCwxMjQsNiwwLDEyNCw0LDAsMTMxLDIsMCwxLDExMywKLSAgICA0MCwwLDg3LDExNiwxLDAsMTA2LDMsMCwxMTYsMTIsMCwyNSwxMjUsNywwLAotICAgIDEyMCw3MywwLDEwMCw1LDAsNjgsOTMsNjUsMCwxMjUsOCwwLDEyNCw4LDAsCi0gICAgMTE2LDEsMCwxMDYsMywwLDEwNyw3LDAsMTE0LDIwNiwwLDExNiwxMywwLDEyNCwKLSAgICA4LDAsMTMxLDEsMCwxMjUsOSwwLDExMCwxMywwLDExNiwxLDAsMTA2LDMsCi0gICAgMCwxMjQsOCwwLDI1LDEyNSw5LDAsMTE2LDE0LDAsMTI0LDcsMCwxMjQsOCwKLSAgICAwLDEyNCw5LDAsMTMxLDMsMCwxLDExMywxNzAsMCw4NywxMjEsMTYsMCwxMTYsCi0gICAgMTMsMCwxMDAsMiwwLDEzMSwxLDAsMTI1LDEwLDAsODcsMTEwLDI0LDAsNCwKLSAgICAxMTYsMTUsMCwxMDcsMTAsMCwxMTQsMjUsMSwxLDEsMSwxMDAsMywwLDEyNSwKLSAgICAxMCwwLDg5LDExMCwxLDAsODgsMTE2LDE0LDAsMTI0LDcsMCwxMDAsMiwwLAotICAgIDEyNCwxMCwwLDEzMSwzLDAsMSwxMTYsMTMsMCwxMDAsNCwwLDEzMSwxLDAsCi0gICAgMTI1LDExLDAsMTE2LDE0LDAsMTI0LDcsMCwxMDAsNCwwLDEyNCwxMSwwLDEzMSwKLSAgICAzLDAsMSwxMDAsMywwLDgzLDQxLDYsMTIyLDI1MCw4MywxMDEsMTE2LDExNywxMTIsCi0gICAgMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwzMiw5OCwxMjEsMzIsMTA1LDEwOSwKLSAgICAxMTIsMTExLDExNCwxMTYsMTA1LDExMCwxMDMsMzIsMTEwLDEwMSwxMDEsMTAwLDEwMSwxMDAsMzIsOTgsCi0gICAgMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLAotICAgIDk3LDExMCwxMDAsMzIsMTA1LDExMCwxMDYsMTAxLDk5LDExNiwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LAotICAgIDEwMSwxMDksMTAsMzIsMzIsMzIsMzIsMTA1LDExMCwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLAotICAgIDEwMywxMDgsMTExLDk4LDk3LDEwOCwzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwKLSAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiw2NSwxMTUsMzIsMTE1LDEyMSwxMTUsMzIsMTA1LDExNSwKLSAgICAzMiwxMTAsMTAxLDEwMSwxMDAsMTAxLDEwMCwzMiwxMDIsMTExLDExNCwzMiwxMTUsMTIxLDExNSw0NiwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsOTksOTksMTAxLDExNSwxMTUsMzIsOTcsCi0gICAgMTEwLDEwMCwzMiw5NSwxMDUsMTA5LDExMiwzMiwxMDUsMTE1LDMyLDExMCwxMDEsMTAxLDEwMCwxMDEsCi0gICAgMTAwLDMyLDExNiwxMTEsMzIsMTA4LDExMSw5NywxMDAsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LAotICAgIDEwNSwxMTAsMTAsMzIsMzIsMzIsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ0LDMyLAotICAgIDExNiwxMDQsMTExLDExNSwxMDEsMzIsMTE2LDExOSwxMTEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgMTE1LDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5OCwxMDEsMzIsMTAxLDEyMCwxMTIsMTA4LDEwNSw5OSwKLSAgICAxMDUsMTE2LDEwOCwxMjEsMzIsMTEyLDk3LDExNSwxMTUsMTAxLDEwMCwzMiwxMDUsMTEwLDQ2LDEwLAotICAgIDEwLDMyLDMyLDMyLDMyLDExNCwxNDEsMCwwLDAsMTE0LDM0LDAsMCwwLDc4LAotICAgIDExNCw2MiwwLDAsMCw0MSwxLDExNCwxNDEsMCwwLDAsNDEsMTYsMTE0LDU3LAotICAgIDAsMCwwLDExNCwxNCwwLDAsMCwxMTQsMTMsMCwwLDAsMTE0LDIxLDAsCi0gICAgMCwwLDIxOCw1LDEwNSwxMTYsMTAxLDEwOSwxMTUsMTE0LDE3NywwLDAsMCwxMTQsNzYsCi0gICAgMCwwLDAsMTE0LDE1MCwwLDAsMCwxMTQsODIsMCwwLDAsMTE0LDE2MCwwLAotICAgIDAsMCwxMTQsMTMyLDAsMCwwLDExNCwxMzcsMCwwLDAsMTE0LDEsMCwwLAotICAgIDAsMTE0LDIwMCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsNzcsMCwwLDAsCi0gICAgNDEsMTIsMjE4LDEwLDExNSwxMjEsMTE1LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDIxOCwxMSwKLSAgICA5NSwxMDUsMTA5LDExMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxMSwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSw5NSwxMTYsMTIxLDExMiwxMDEsMTE0LDE1LDAsMCwwLDExNCw4OSwwLAotICAgIDAsMCwxMTQsOTksMCwwLDAsMTE0LDg4LDAsMCwwLDkwLDExLDExNSwxMDEsCi0gICAgMTA4LDEwMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxMiw5OCwxMTcsMTA1LDEwOCwxMTYsCi0gICAgMTA1LDExMCw5NSwxMTAsOTcsMTA5LDEwMSw5MCwxNCw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCwKLSAgICA5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxMywxMTYsMTA0LDExNCwxMDEsOTcsMTAwLDk1LAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDkwLDE0LDExOSwxMDEsOTcsMTA3LDExNCwxMDEsMTAyLDk1LAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsCi0gICAgMTE0LDExLDAsMCwwLDIxOCw2LDk1LDExNSwxMDEsMTE2LDExNywxMTIsNjEsNCwwLAotICAgIDAsMTE1LDUwLDAsMCwwLDAsOSw2LDEsNiwzLDEyLDEsMjgsMSwKLSAgICAxNSwxLDE1LDEsOSwxLDE1LDEsOSwyLDMsMSwxNSwxLDE3LDMsCi0gICAgMTMsMSwxMywxLDE1LDEsMTUsMiwxMywxLDIwLDMsMywxLDE2LDEsCi0gICAgMTMsMiwxMSwxLDE2LDMsMTIsMSwxMTQsMjA0LDAsMCwwLDk5LDIsMCwKLSAgICAwLDAsMCwwLDAsMCwzLDAsMCwwLDMsMCwwLDAsNjcsMCwKLSAgICAwLDAsMTE1LDg3LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMjQsMSwwLAotICAgIDEzMSwyLDAsMSwxMTYsMSwwLDEwNiwyLDAsMTA2LDMsMCwxMTYsNCwwLAotICAgIDEzMSwxLDAsMSwxMTYsMSwwLDEwNiwyLDAsMTA2LDMsMCwxMTYsNSwwLAotICAgIDEzMSwxLDAsMSwxMDAsMSwwLDEwMCwyLDAsMTA4LDYsMCwxMjUsMiwwLAotICAgIDEyNCwyLDAsOTcsNywwLDEyNCwyLDAsMTA2LDgsMCwxMTYsMSwwLDEwNiwKLSAgICA5LDAsMTE2LDEwLDAsMjUsMTMxLDEsMCwxLDEwMCwyLDAsODMsNDEsMywKLSAgICAxMjIsNTAsNzMsMTEwLDExNSwxMTYsOTcsMTA4LDEwOCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKLSAgICAxMDgsMTA1LDk4LDMyLDk3LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLAotICAgIDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMDUsMTA5LDExMiwKLSAgICAxMTEsMTE0LDExNiw0NiwxMTQsMzMsMCwwLDAsNzgsNDEsMTEsMTE0LDIwNCwwLDAsCi0gICAgMCwxMTQsMTQsMCwwLDAsMTE0LDE3NCwwLDAsMCwxMTQsMTEzLDAsMCwwLAotICAgIDExNCwxNTAsMCwwLDAsMTE0LDE2MCwwLDAsMCwyMTgsMjYsOTUsMTAyLDExNCwxMTEsCi0gICAgMTIyLDEwMSwxMTAsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw5NSwxMDEsMTIwLAotICAgIDExNiwxMDEsMTE0LDExMCw5NywxMDgsMTE0LDExOSwwLDAsMCwyMTgsOCw5NSwxMDUsMTEwLAotICAgIDExNSwxMTYsOTcsMTA4LDEwOCwxMTQsMjEsMCwwLDAsMTE0LDEsMCwwLDAsNDEsCi0gICAgMywxMTQsMjAyLDAsMCwwLDExNCwyMDMsMCwwLDAsMTE0LDIwNSwwLDAsMCwKLSAgICAxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsCi0gICAgMjA2LDAsMCwwLDEwOCw0LDAsMCwxMTUsMTIsMCwwLDAsMCwyLDEzLAotICAgIDIsMTYsMSwxNiwzLDEyLDEsNiwxLDExNCwyMDYsMCwwLDAsNDEsNTEsCi0gICAgMTE0LDMsMCwwLDAsMTE0LDExOSwwLDAsMCwxMTQsMTIsMCwwLDAsMTE0LAotICAgIDE2LDAsMCwwLDExNCwxNywwLDAsMCwxMTQsNTksMCwwLDAsMTE0LDQxLAotICAgIDAsMCwwLDExNCw0OCwwLDAsMCwxMTQsMzEsMCwwLDAsMTE0LDMyLDAsCi0gICAgMCwwLDExNCw1MywwLDAsMCwxMTQsNTQsMCwwLDAsMTE0LDU2LDAsMCwKLSAgICAwLDExNCw2MywwLDAsMCwxMTQsNjUsMCwwLDAsMTE0LDc1LDAsMCwwLAotICAgIDExNCw4MSwwLDAsMCwxMTQsODQsMCwwLDAsMTE0LDkwLDAsMCwwLDExNCwKLSAgICAxMDEsMCwwLDAsMTE0LDEwMiwwLDAsMCwxMTQsMTA2LDAsMCwwLDExNCw4NSwKLSAgICAwLDAsMCwyMTgsNiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsOTAsOSw5NSw4MCw3OSwKLSAgICA4MCw4NSw3Niw2NSw4NCw2OSwxMTQsMTMyLDAsMCwwLDExNCwxMzcsMCwwLDAsCi0gICAgMTE0LDE0NCwwLDAsMCwxMTQsOTcsMCwwLDAsMTE0LDg2LDAsMCwwLDExNCwKLSAgICAxNDgsMCwwLDAsMTE0LDE0OSwwLDAsMCwxMTQsODcsMCwwLDAsMTE0LDE1MCwKLSAgICAwLDAsMCwxMTQsMTYwLDAsMCwwLDExNCwxNjUsMCwwLDAsMTE0LDE3MSwwLAotICAgIDAsMCwxMTQsMTczLDAsMCwwLDExNCwxNzYsMCwwLDAsMTE0LDE4MSwwLDAsCi0gICAgMCwxMTQsMTkxLDAsMCwwLDExNCwxODIsMCwwLDAsMTE0LDE4NCwwLDAsMCwKLSAgICAxMTQsMTg1LDAsMCwwLDExNCwxODYsMCwwLDAsMTE0LDE5NCwwLDAsMCwxMTQsCi0gICAgMTk2LDAsMCwwLDExNCwxOTksMCwwLDAsMTE0LDIwMCwwLDAsMCwxMTQsMjA0LAotICAgIDAsMCwwLDExNCwyMDYsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAotICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCw4LDYwLDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDYyLDgsMCwwLDAsMTE1LDk2LDAsMCwwLDYsCi0gICAgMTcsNiwyLDEyLDgsMTIsNCwxOSwyMCw2LDIsNiwzLDIyLDQsMTksCi0gICAgNjgsMTksMjEsMTksMTksMTIsMTksMTIsMTksMTIsMTEsMTgsOCwxMiwxMSwxMiwKLSAgICAxMiwxMiwxNiwxMiwzNiwxOSwyNywxOSwxMDEsMjQsMjYsOSwzLDE4LDQ1LDE4LAotICAgIDYwLDEyLDE4LDEyLDE3LDEyLDI1LDEyLDI5LDEyLDIzLDEyLDE2LDE5LDczLDE5LAotICAgIDc3LDE5LDEzLDEyLDksMTIsOSwxNSw0MCwxMiwxNyw2LDEsMTAsMiwxMiwKLSAgICAyNywxMiw2LDE4LDI0LDEyLDMyLDEyLDE1LDI0LDM1LDEyLDcsMTIsNDcsCisgICAgMCwyMTgsMTcsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDk1LDEwOCwxMDEsCisgICAgMTAzLDk3LDk5LDEyMSw4NCwzLDAsMCwxMTUsOCwwLDAsMCwwLDMsMTIsCisgICAgMSw4LDEsNCwxLDExNCwxNjUsMCwwLDAsOTksMywwLDAsMCwwLAorICAgIDAsMCwwLDEwLDAsMCwwLDI3LDAsMCwwLDY3LDAsMCwwLDExNSwKKyAgICAyNDIsMCwwLDAsMTE2LDAsMTA2LDEsMTI1LDMsMTI0LDMsMTAwLDEsMTA3LDgsCisgICAgMTE0LDIyLDExNiwyLDEwMCwyLDEzMSwxLDEzMCwxLDEyNCwzLDExNSwzOCwxMTYsMywKKyAgICAxMDYsNCwxMDAsMywxMTYsNSwxMzEsMiwxLDAsMTI0LDAsMTE2LDAsMTA2LDYsCisgICAgMTA3LDYsMTI1LDQsMTIwLDE4OCwxMjQsMyw2OCwwLDkzLDE3NiwxMjUsNSwxMTYsNywKKyAgICAxMzEsMCwxNDMsNzIsMSwwLDEyMSwxMCwxMjQsNSwxMDYsOCwxMjUsNiw4NywwLAorICAgIDExMCw0Miw0LDAsMTE2LDksMTA3LDEwLDExNCwxMTgsMSwwLDEsMCwxLDAsCisgICAgMTE2LDEwLDEyNCw1LDEyNCwwLDEyNCwxLDEzMSwzLDEyNSw3LDEyNCw3LDEwMCwxLAorICAgIDEwNyw4LDExNCwxMTQsMTE5LDU0LDg5LDAsMTEwLDE0LDg4LDAsMTI0LDYsMTI0LDAsCisgICAgMTI0LDEsMTI0LDIsMTMxLDMsMTI1LDcsODcsMCwxMDAsMSw4MSwwLDgyLDAsCisgICAgODgsMCwxMjQsNywxMDAsMSwxMDcsOSwxMTQsNTQsMTI0LDQsMTIsMCwxMTQsMjI2LAorICAgIDEyNCwwLDExNiwwLDEwNiw2LDEwNyw2LDExNCwyMjYsMTE2LDAsMTA2LDYsMTI0LDAsCisgICAgMjUsMCwxMjUsOCwxMjEsMTAsMTI0LDgsMTA2LDExLDEyNSw5LDg3LDAsMTEwLDIwLAorICAgIDQsMCwxMTYsOSwxMDcsMTAsMTE0LDIwNiwxLDAsMSwwLDEsMCwxMjQsNywKKyAgICA4MywwLDg4LDAsMTI0LDksMTAwLDEsMTA3LDgsMTE0LDIyMCwxMjQsNyw4MywwLAorICAgIDEyNCw5LDgzLDAsMTEzLDU0LDEyNCw3LDgzLDAsMTEzLDU0LDg3LDAsMTAwLDEsCisgICAgODMsMCwxMDAsMSw4MywwLDQxLDQsMTIyLDIxLDcwLDEwNSwxMTAsMTAwLDMyLDk3LAorICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDM5LDExNSwzMiwxMTUsMTEyLDEwMSw5OSw0Niw3OCwKKyAgICAxMjIsNTMsMTE1LDEyMSwxMTUsNDYsMTA5LDEwMSwxMTYsOTcsOTUsMTEyLDk3LDExNiwxMDQsMzIsCisgICAgMTA1LDExNSwzMiw3OCwxMTEsMTEwLDEwMSw0NCwzMiw4MCwxMjEsMTE2LDEwNCwxMTEsMTEwLDMyLAorICAgIDEwNSwxMTUsMzIsMTA4LDEwNSwxMDcsMTAxLDEwOCwxMjEsMzIsMTE1LDEwNCwxMTcsMTE2LDExNiwxMDUsCisgICAgMTEwLDEwMywzMiwxMDAsMTExLDExOSwxMTAsMTIyLDIyLDExNSwxMjEsMTE1LDQ2LDEwOSwxMDEsMTE2LAorICAgIDk3LDk1LDExMiw5NywxMTYsMTA0LDMyLDEwNSwxMTUsMzIsMTAxLDEwOSwxMTIsMTE2LDEyMSw0MSwKKyAgICAxMiwxMTQsMTQsMCwwLDAsMjE4LDksMTA5LDEwMSwxMTYsOTcsOTUsMTEyLDk3LDExNiwKKyAgICAxMDQsMTE0LDcwLDAsMCwwLDIxOCw5LDk1LDExOSw5NywxMTQsMTEwLDEwNSwxMTAsMTAzLAorICAgIDExNSwyMTgsNCwxMTksOTcsMTE0LDExMCwyMTgsMTMsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw4NywKKyAgICA5NywxMTQsMTEwLDEwNSwxMTAsMTAzLDExNCw3OSwwLDAsMCwxMTQsMTU3LDAsMCwwLAorICAgIDExNCwxNDYsMCwwLDAsMTE0LDkwLDAsMCwwLDExNCwxNjUsMCwwLDAsMTE0LAorICAgIDg5LDAsMCwwLDQxLDEwLDExNCwxNSwwLDAsMCwxMTQsMTQ0LDAsMCwwLAorICAgIDExNCwxNDUsMCwwLDAsMTE0LDE2NiwwLDAsMCw5MCw5LDEwNSwxMTUsOTUsMTE0LAorICAgIDEwMSwxMDgsMTExLDk3LDEwMCwxMTQsMTY0LDAsMCwwLDExNCwxNDYsMCwwLDAsMTE0LAorICAgIDgyLDAsMCwwLDExNCw4MywwLDAsMCwxMTQsODksMCwwLDAsMTE0LDEwLAorICAgIDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDEwLDk1LAorICAgIDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw5MywzLDAsMCwxMTUsNTQsMCwKKyAgICAwLDAsMCwyLDYsMSw4LDIsOCwzLDQsMSwxMiw1LDEwLDEsCisgICAgMTAsMSw4LDEsMiwxLDEwLDEsMTQsMSwxMiwxLDgsMSw4LDIsCisgICAgMjIsMSw4LDIsMTYsMSwxMCwxLDIsMSwxMCwxLDE0LDQsNiwyLAorICAgIDgsMSw0LDIsNiwyLDgsMiwxMTQsMTcwLDAsMCwwLDk5LDMsMCwKKyAgICAwLDAsMCwwLDAsMCw0LDAsMCwwLDQsMCwwLDAsNjcsMCwKKyAgICAwLDAsMTE1LDE0MCwwLDAsMCwxMTYsMCwxMjQsMCwxMTYsMSwxMzEsMiwxMTUsCisgICAgMjgsMTE2LDIsMTAwLDEsMTA2LDMsMTE2LDQsMTI0LDAsMTMxLDEsMTMxLDEsMTMxLAorICAgIDEsMTMwLDEsMTI0LDIsMTAwLDIsMTA3LDAsMTE0LDQ0LDExNiw1LDEwMCwzLDEzMSwKKyAgICAxLDEzMCwxLDEyNCwyLDEwMCwyLDEwNyw0LDExNCwxMTQsMTE2LDAsMTI0LDEsMTE2LAorICAgIDEsMTMxLDIsMTE1LDcyLDExNiwyLDEwMCw0LDEzMSwxLDEzMCwxLDExMCw0MiwxMjQsCisgICAgMSwxMTUsODYsMTE2LDYsMTAwLDUsMTMxLDEsMTMwLDEsMTEwLDI4LDEyNCwxLDExNiwKKyAgICA3LDEwNiw4LDEwNyw3LDExNCwxMTQsMTAwLDYsMTI1LDMsMTE2LDksMTI0LDMsMTA2LAorICAgIDMsMTI0LDEsMTMxLDEsMTMxLDEsMTMwLDEsMTI0LDAsMTIsMCwxMTQsMTM2LDEyNCwKKyAgICAyLDEwMCwyLDEwNywyLDExNCwxMzYsMTE2LDUsMTAwLDcsMTMxLDEsMTMwLDEsMTAwLAorICAgIDgsODMsMCw0MSw5LDEyMiwyOCw4NiwxMDEsMTE0LDEwNSwxMDIsMTIxLDMyLDk3LDExNCwKKyAgICAxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwxMTUsMzIsOTcsMTE0LDEwMSwzMiwzNCwxMTUsOTcsMTEwLAorICAgIDEwMSwzNCw0NiwxMjIsMzEsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsCisgICAgMzIsMTA5LDExNywxMTUsMTE2LDMyLDk4LDEwMSwzMiwxMTUsMTE2LDExNCw0NCwzMiwxMTAsMTExLAorICAgIDExNiwzMiwxMjMsMTI1LDExNCwxOSwwLDAsMCwxMjIsMTgsMTA4LDEwMSwxMTgsMTAxLDEwOCwKKyAgICAzMiwxMDksMTE3LDExNSwxMTYsMzIsOTgsMTAxLDMyLDYyLDYxLDMyLDQ4LDEyMiwzMSw5NSwKKyAgICA5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsMzIsMTEwLDExMSwxMTYsMzIsMTE1LAorICAgIDEwMSwxMTYsMzIsMTE2LDExMSwzMiw5NywzMiwxMTUsMTE2LDExNCwxMDUsMTEwLDEwMywxMjIsNTQsCisgICAgOTcsMTE2LDExNiwxMDEsMTA5LDExMiwxMTYsMTAxLDEwMCwzMiwxMTQsMTAxLDEwOCw5NywxMTYsMTA1LAorICAgIDExOCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDExMCwKKyAgICAxMTEsMzIsMTA3LDExMCwxMTEsMTE5LDExMCwzMiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDMyLDExMiwKKyAgICA5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMjIsNjEsODAsOTcsMTE0LDEwMSwxMTAsMTE2LDMyLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDExMCwxMTEsMTE2LDMyLDEwOCwKKyAgICAxMTEsOTcsMTAwLDEwMSwxMDAsNDQsMzIsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDExMiwxMDEsCisgICAgMTE0LDEwMiwxMTEsMTE0LDEwOSwzMiwxMTQsMTAxLDEwOCw5NywxMTYsMTA1LDExOCwxMDEsMzIsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTIyLDE3LDY5LDEwOSwxMTIsMTE2LDEyMSwzMiwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSw3OCw0MSwxMCwyMTgsMTAsMTA1LDExNSwxMDUsCisgICAgMTEwLDExNSwxMTYsOTcsMTEwLDk5LDEwMSwyMTgsMywxMTUsMTE2LDExNCwyMTgsOSw4NCwxMjEsCisgICAgMTEyLDEwMSw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDM4LDAsMCwwLDExNCwxMywwLDAsCisgICAgMCwxMTQsMTYwLDAsMCwwLDExNCw3MCwwLDAsMCwxMTQsMTQsMCwwLDAsCisgICAgMTE0LDc5LDAsMCwwLDIxOCwxMSw4MywxMjEsMTE1LDExNiwxMDEsMTA5LDY5LDExNCwxMTQsCisgICAgMTExLDExNCw0MSw0LDExNCwxNSwwLDAsMCwxMTQsMTYxLDAsMCwwLDExNCwxNjIsCisgICAgMCwwLDAsMTE0LDEzOSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCisgICAgMCwwLDExNCwxMSwwLDAsMCwyMTgsMTMsOTUsMTE1LDk3LDExMCwxMDUsMTE2LDEyMSwKKyAgICA5NSw5OSwxMDQsMTAxLDk5LDEwNywxNDAsMywwLDAsMTE1LDI4LDAsMCwwLDAsCisgICAgMiwxMCwxLDE4LDEsOCwxLDgsMSw4LDEsMTAsMSwxMCwxLDQsCisgICAgMSwxMCwyLDEwLDEsNCwyLDE0LDEsMTQsMSwxMTQsMTc1LDAsMCwwLAorICAgIDEyMiwxNiw3OCwxMTEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsCisgICAgMTAwLDMyLDEyMiw0LDEyMywzMywxMTQsMTI1LDk5LDIsMCwwLDAsMCwwLDAsCisgICAgMCw4LDAsMCwwLDEyLDAsMCwwLDY3LDAsMCwwLDExNSwyMjAsMCwKKyAgICAwLDAsMTAwLDAsMTI1LDIsMTI0LDAsMTA2LDAsMTAwLDEsMTMxLDEsMTAwLDIsCisgICAgMjUsMCwxMjUsMywxMjQsMywxMTQsMTM0LDEyNCwzLDExNiwxLDEwNiwyLDEwNyw3LAorICAgIDExNCw0MiwxMTYsMywxMjQsMSwxMjQsMywxMzEsMiwxLDAsMTI0LDAsMTE2LDEsCisgICAgMTA2LDIsMTA3LDYsMTE0LDYyLDExNiwxLDEwNiwyLDEyNCwwLDI1LDAsODMsMCwKKyAgICAxMTYsMSwxMDYsMiwxMjQsMywyNSwwLDEyNSw0LDEyMSwxMCwxMjQsNCwxMDYsNCwKKyAgICAxMjUsMiw4NywwLDExMCw1MCw0LDAsMTE2LDUsMTA3LDEwLDExNCwxMzIsMSwwLAorICAgIDEsMCwxLDAsMTE2LDYsMTAwLDMsMjMsMCwxMDYsNywxMjQsMCwxMjQsMywKKyAgICAxMzEsMiwxMjUsNSwxMTYsOCwxMjQsNSwxMjQsMCwxMDAsNCwxNDEsMiwxMDAsMCwKKyAgICAxMzAsMiw4OSwwLDExMCwyLDg4LDAsMTE2LDksMTI0LDAsMTI0LDIsMTMxLDIsCisgICAgMTI1LDYsMTI0LDYsMTAwLDAsMTA3LDgsMTE0LDE3MiwxMTYsOCwxMTYsNiwxMDYsNywKKyAgICAxMjQsMCwxMzEsMSwxMjQsMCwxMDAsNCwxNDEsMiwxMzAsMSwxMTAsOCwxMTYsMTAsCisgICAgMTI0LDYsMTMxLDEsMTI1LDcsMTI0LDMsMTE0LDIxNiwxMTYsMSwxMDYsMiwxMjQsMywKKyAgICAyNSwwLDEyNSw0LDExNiwxMSwxMjQsNCwxMjQsMCwxMDYsMCwxMDAsMSwxMzEsMSwKKyAgICAxMDAsNSwyNSwwLDEyNCw3LDEzMSwzLDEsMCwxMjQsNyw4MywwLDQxLDYsCisgICAgNzgsMTE0LDExNywwLDAsMCwxMTQsMTksMCwwLDAsMTIyLDIzLDU5LDMyLDEyMywKKyAgICAzMywxMTQsMTI1LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMzIsMTEyLDk3LDk5LAorICAgIDEwNyw5NywxMDMsMTAxLDQxLDEsMTE0LDE1LDAsMCwwLDIzMywyLDAsMCwwLAorICAgIDQxLDEyLDExNCwxMTgsMCwwLDAsMTE0LDE0LDAsMCwwLDExNCw3OSwwLDAsCisgICAgMCwxMTQsNTgsMCwwLDAsMTE0LDEyNywwLDAsMCwxMTQsOTAsMCwwLDAsCisgICAgMjE4LDgsOTUsNjksODIsODIsOTUsNzcsODMsNzEsMTE0LDM4LDAsMCwwLDIxOCwKKyAgICAxOSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc4LDExMSwxMTYsNzAsMTExLDExNywxMTAsMTAwLDY5LAorICAgIDExNCwxMTQsMTExLDExNCwxMTQsMTcwLDAsMCwwLDExNCwxNDEsMCwwLDAsMTE0LDUsCisgICAgMCwwLDAsNDEsOCwxMTQsMTUsMCwwLDAsMjE4LDcsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsOTUsMTE0LDE0NCwwLDAsMCwxMTQsMTE5LDAsMCwwLDkwLDEzLDExMiwKKyAgICA5NywxMTQsMTAxLDExMCwxMTYsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE0LDEzOSwwLDAsCisgICAgMCwxMTQsODIsMCwwLDAsMTE0LDgzLDAsMCwwLDExNCwxMCwwLDAsMCwKKyAgICAxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwyMyw5NSwxMDIsMTA1LDExMCwKKyAgICAxMDAsOTUsOTcsMTEwLDEwMCw5NSwxMDgsMTExLDk3LDEwMCw5NSwxMTcsMTEwLDEwOCwxMTEsOTksCisgICAgMTA3LDEwMSwxMDAsMTYzLDMsMCwwLDExNSw0MiwwLDAsMCwwLDEsNCwxLAorICAgIDE0LDEsNCwxLDEwLDEsMTAsMiwxMCwxLDEwLDEsMTAsMSwyLDEsCisgICAgMTAsMSwxNCwxLDE2LDEsMjAsMSwxMCwxLDgsMSwyMCwyLDgsMSwKKyAgICA0LDIsMTAsMSwyMiwxLDExNCwxODAsMCwwLDAsOTksMiwwLDAsMCwKKyAgICAwLDAsMCwwLDIsMCwwLDAsMTAsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDMwLDAsMCwwLDExNiwwLDEyNCwwLDEzMSwxLDE0MywxMiwxLDAsMTE2LAorICAgIDEsMTI0LDAsMTI0LDEsMTMxLDIsODMsMCw4MSwwLDgyLDAsODgsMCwxMDAsCisgICAgMSw4MywwLDQxLDIsMTIyLDU0LDcwLDEwNSwxMTAsMTAwLDMyLDk3LDExMCwxMDAsMzIsCisgICAgMTA4LDExMSw5NywxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDQsCisgICAgMzIsOTcsMTEwLDEwMCwzMiwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNyw0Niw3OCw0MSwyLAorICAgIDExNCw0MiwwLDAsMCwxMTQsMTgwLDAsMCwwLDQxLDIsMTE0LDE1LDAsMCwKKyAgICAwLDExNCwxNzksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwKKyAgICAxMTQsMTEsMCwwLDAsMjE4LDE0LDk1LDEwMiwxMDUsMTEwLDEwMCw5NSw5NywxMTAsMTAwLAorICAgIDk1LDEwOCwxMTEsOTcsMTAwLDE5MCwzLDAsMCwxMTUsNCwwLDAsMCwwLDIsCisgICAgMTAsMSwxMTQsMTgxLDAsMCwwLDExNCwxOSwwLDAsMCw5OSwzLDAsMCwKKyAgICAwLDAsMCwwLDAsNSwwLDAsMCw0LDAsMCwwLDY3LDAsMCwKKyAgICAwLDExNSwxMjAsMCwwLDAsMTE2LDAsMTI0LDAsMTI0LDEsMTI0LDIsMTMxLDMsCisgICAgMSwwLDEyNCwyLDEwMCwxLDEwNyw0LDExNCwzMiwxMTYsMSwxMjQsMCwxMjQsMSwKKyAgICAxMjQsMiwxMzEsMywxMjUsMCwxMTYsMiwxMDYsMywxMzEsMCwxLDAsMTI0LDAsCisgICAgMTE2LDQsMTA2LDUsMTA3LDcsMTE0LDYwLDExNiw2LDEyNCwwLDExNiw3LDEzMSwyLAorICAgIDgzLDAsMTE2LDQsMTA2LDUsMTI0LDAsMjUsMCwxMjUsMywxMjQsMywxMDAsMiwKKyAgICAxMDcsOCwxMTQsMTA4LDExNiwyLDEwNiw4LDEzMSwwLDEsMCwxMDAsMywxMDYsOSwKKyAgICAxMjQsMCwxMzEsMSwxMjUsNCwxMTYsMTAsMTI0LDQsMTI0LDAsMTAwLDQsMTQxLDIsCisgICAgMTMwLDEsMTE2LDExLDEyNCwwLDEzMSwxLDEsMCwxMjQsMyw4MywwLDQxLDUsCisgICAgOTcsNTAsMSwwLDAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwzMiw5NywxMTAsMTAwLDMyLAorICAgIDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDMyLDk4LDk3LDExNSwxMDEsMTAwLDMyLDExMSwxMTAsMzIsMTA1LDExNiwxMTUsMzIsMTEwLAorICAgIDk3LDEwOSwxMDEsNDQsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLAorICAgIDMyLDExNiwxMDQsMTAxLDMyLDk5LDk3LDEwOCwxMDgsMzIsMTA1LDExNSwxMCwzMiwzMiwzMiwKKyAgICAzMiw5OCwxMDEsMTA1LDExMCwxMDMsMzIsMTA5LDk3LDEwMCwxMDEsMzIsMTAyLDExNCwxMTEsMTA5LAorICAgIDQ0LDMyLDk3LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDEwMSwxMTgsMTAxLDEwOCwzMiwKKyAgICA5NywxMDAsMTA2LDExNywxMTUsMTE2LDEwOSwxMDEsMTEwLDExNiw0NiwxMCwxMCwzMiwzMiwzMiwKKyAgICAzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMTE0LAorICAgIDEwMSwxMTIsMTE0LDEwMSwxMTUsMTAxLDExMCwxMTYsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwMywxMTQsCisgICAgMTAxLDk3LDExNiwxMDEsMTE1LDExNiwzMiw5OSwxMTEsMTA5LDEwOSwxMTEsMTEwLDMyLDEwMCwxMDEsCisgICAgMTEwLDExMSwxMDksMTA1LDExMCw5NywxMTYsMTExLDExNCwzMiwxMTEsMTAyLDMyLDEwMiwxMTcsMTEwLAorICAgIDk5LDExNiwxMDUsMTExLDExMCw5NywxMDgsMTA1LDExNiwxMjEsMTAsMzIsMzIsMzIsMzIsOTgsCisgICAgMTAxLDExNiwxMTksMTAxLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsOTUsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMzIsOTcsMTEwLDEwMCwzMiw5NSw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LAorICAgIDExNiw5NSw5NSw0NiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDUsMTEwLDk5LDEwOCwxMTcsMTAwLAorICAgIDEwMSwxMTUsMzIsMTE1LDEwMSwxMTYsMTE2LDEwNSwxMTAsMTAzLDMyLDk1LDk1LDExMiw5Nyw5OSwKKyAgICAxMDcsOTcsMTAzLDEwMSw5NSw5NSwzMiwxMDUsMTAyLDEwLDMyLDMyLDMyLDMyLDExNiwxMDQsCisgICAgMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTAwLDEwNSwxMDAsMzIsMTEwLDExMSwxMTYsCisgICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsMTE0LDE5LDAsMCwwLDc4LDEyMiw0MCwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMTEsMTAyLDMyLDEyMywxMjUsMzIsMTA0LDk3LDEwOCwxMTYsCisgICAgMTAxLDEwMCw1OSwzMiw3OCwxMTEsMTEwLDEwMSwzMiwxMDUsMTEwLDMyLDExNSwxMjEsMTE1LDQ2LAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSw0MSwxLDExNCwxNSwwLDAsMCw0MSwxMiwKKyAgICAxMTQsMTc1LDAsMCwwLDExNCwxNjMsMCwwLDAsMTE0LDQ2LDAsMCwwLDExNCwKKyAgICAxMzcsMCwwLDAsMTE0LDE0LDAsMCwwLDExNCw3OSwwLDAsMCwxMTQsMTgxLAorICAgIDAsMCwwLDIxOCwxMSw5NSwxMDMsOTksMTAwLDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDExNCw0NywwLDAsMCwxMTQsMzgsMCwwLDAsMTE0LDE3OCwwLDAsMCwxMTQsCisgICAgNTYsMCwwLDAsNDEsNSwxMTQsMTUsMCwwLDAsMTE0LDE2MSwwLDAsMCwKKyAgICAxMTQsMTYyLDAsMCwwLDExNCw4MywwLDAsMCwxMTQsNjcsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDE4MiwKKyAgICAwLDAsMCwxOTYsMywwLDAsMTE1LDI4LDAsMCwwLDAsOSwxMiwxLAorICAgIDgsMSwxMiwxLDgsMSwxMCwxLDEwLDEsMTAsMSw4LDEsOCwxLAorICAgIDQsMSw2LDEsMTIsMSw4LDEsMTE0LDE4MiwwLDAsMCw5OSwzLDAsCisgICAgMCwwLDAsMCwwLDAsNiwwLDAsMCwxNywwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsMTY0LDAsMCwwLDExNiwwLDEyNCwwLDEwMCwxLDEzMSwyLDExNCwKKyAgICAxNjAsMTAwLDIsMTI0LDEsMTA3LDYsMTE0LDU4LDExNiwxLDEyNCwxLDEzMSwxLDEyNSwKKyAgICAxLDEyNCwxLDEwNiwyLDEwMCwyLDEzMSwxLDEsMCwxMTYsMCwxMjQsMCwxMDAsCisgICAgMywxMzEsMiwxMTQsNTgsMTI0LDEsMTA2LDMsMTI0LDAsMTA2LDQsMTMxLDEsMSwKKyAgICAwLDEyMCwxMDAsMTI0LDEsNjgsMCw5Myw5MiwxMjUsMywxMTYsMCwxMjQsMCwxMjQsCisgICAgMywxMzEsMiwxMTUsNjQsMTAwLDQsMTA2LDUsMTI0LDAsMTA2LDYsMTI0LDMsMTMxLAorICAgIDIsMTI1LDQsMTIxLDE0LDExNiw3LDEyNCwyLDEyNCw0LDEzMSwyLDEsMCw4NywKKyAgICAwLDExMyw2NCw0LDAsMTE2LDgsMTA3LDEwLDExNCwxNTQsMSwwLDEyNSw1LDEsCisgICAgMCwxMjIsMjAsMTI0LDUsMTA2LDksMTI0LDQsMTA3LDIsMTE0LDEzNiwxMTksNjQsMTMwLAorICAgIDAsODcsMCw4OSwwLDEwMCw1LDEwMCw1LDEyNSw1LDEyNiw1LDg4LDAsMTEzLAorICAgIDY0LDg4LDAsMTEzLDY0LDg3LDAsMTI0LDAsODMsMCw0MSw2LDEyMiwyMzgsNzAsCisgICAgMTA1LDEwMywxMTcsMTE0LDEwMSwzMiwxMTEsMTE3LDExNiwzMiwxMTksMTA0LDk3LDExNiwzMiw5NSwKKyAgICA5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw5NSw5NSwzMiwxMTUsMTA0LDExMSwxMTcsMTA4LDEwMCwKKyAgICAzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsCisgICAgMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDMyLDExMiw5NywxMTQsOTcsMTA5LDEwMSwKKyAgICAxMTYsMTAxLDExNCwzMiwxMDUsMTE1LDMyLDk3LDMyLDk5LDk3LDEwOCwxMDgsOTcsOTgsMTA4LAorICAgIDEwMSwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE2LDk3LDEwNywxMDEsMTE1LDMyLDExNiwxMDQsCisgICAgMTAxLDMyLDExMCw5NywxMDksMTAxLDMyLDExMSwxMDIsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0NiwzMiwKKyAgICA3MywxMTYsMzIsMTA1LDExNSwzMiwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTAwLDMyLDExNiwKKyAgICAxMTEsMzIsMTAwLDEwMSw5OSwxMTEsMTE3LDExMiwxMDgsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwMiwKKyAgICAxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCwzMiwxMDIsMTE0LDExMSwxMDksMzIsOTcsMTE1LDExNSwKKyAgICAxMTcsMTA5LDEwNSwxMTAsMTAzLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsMzksCisgICAgMTE1LDEwLDMyLDMyLDMyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwNSwxMDksMTEyLAorICAgIDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMDUsMTE1LDMyLDEwMCwKKyAgICAxMDEsMTE1LDEwNSwxMTQsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwxMTQsMTI3LDAsCisgICAgMCwwLDI1MCwxLDQyLDIxOCw3LDk1LDk1LDk3LDEwOCwxMDgsOTUsOTUsMTIyLDUsCisgICAgMTIzLDEyNSw0NiwxMjMsMTI1LDc4LDQxLDEwLDExNCw0LDAsMCwwLDExNCwxMjYsMCwKKyAgICAwLDAsMjE4LDYsMTE0LDEwMSwxMDksMTExLDExOCwxMDEsMjE4LDYsMTAxLDEyMCwxMTYsMTAxLAorICAgIDExMCwxMDAsMTE0LDE4NCwwLDAsMCwxMTQsMzgsMCwwLDAsMTE0LDEsMCwwLAorICAgIDAsMTE0LDU4LDAsMCwwLDExNCwxNzgsMCwwLDAsMTE0LDE1LDAsMCwwLAorICAgIDQxLDYsMTE0LDgzLDAsMCwwLDIxOCw4LDEwMiwxMTQsMTExLDEwOSwxMDgsMTA1LDExNSwKKyAgICAxMTYsMTE0LDE3OSwwLDAsMCwyMTgsMSwxMjAsOTAsOSwxMDIsMTE0LDExMSwxMDksOTUsCisgICAgMTEwLDk3LDEwOSwxMDEsOTAsMywxMDEsMTIwLDk5LDExNCwxMCwwLDAsMCwxMTQsMTAsCisgICAgMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxNiw5NSwxMDQsOTcsMTEwLDEwMCwxMDgsCisgICAgMTAxLDk1LDEwMiwxMTQsMTExLDEwOSwxMDgsMTA1LDExNSwxMTYsMjIxLDMsMCwwLDExNSwzMiwKKyAgICAwLDAsMCwwLDEwLDEwLDEsOCwxLDgsMSwxMCwxLDEwLDEsMTIsCisgICAgMSwxMCwxLDEwLDEsMTQsMSwyLDEsMTQsMSwxNiw0LDEwLDEsMiwKKyAgICAxLDI0LDEsMTE0LDE4OSwwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLAorICAgIDAsMywwLDAsMCw2LDAsMCwwLDY3LDAsMCwwLDExNSwxNDYsMCwKKyAgICAwLDAsMTI0LDAsMTA2LDAsMTAwLDEsMTMxLDEsMTI1LDEsMTI0LDAsMTA2LDAsCisgICAgMTAwLDIsMTMxLDEsMTI1LDIsMTI0LDEsMTAwLDMsMTA3LDksMTE0LDgyLDEyNCwyLAorICAgIDEwMCwzLDEwNyw5LDExNCw3OCwxMjQsMSwxMjQsMiwxMDYsMSwxMDcsMywxMTQsNzgsCisgICAgMTE2LDIsMTA2LDMsMTAwLDQsMTI0LDEsMTU1LDIsMTAwLDUsMTI0LDIsMTA2LDEsCisgICAgMTU1LDIsMTAwLDYsMTU3LDUsMTE2LDQsMTAwLDcsMTAwLDgsMTQxLDMsMSwwLAorICAgIDEyNCwxLDgzLDAsMTI0LDIsMTAwLDMsMTA3LDksMTE0LDk2LDEyNCwyLDEwNiwxLAorICAgIDgzLDAsMTE2LDIsMTA2LDMsMTAwLDksMTE2LDQsMTAwLDcsMTAwLDgsMTQxLDMsCisgICAgMSwwLDEyNCwwLDEwMCwxMCwyNSwwLDEyNSwxLDEwMCwxMSwxMjQsMCwxMDcsNywKKyAgICAxMTQsMTQyLDEyNCwxLDEwNiw1LDEwMCwxMiwxMzEsMSwxMDAsMTMsMjUsMCwxMjUsMSwKKyAgICAxMjQsMSw4MywwLDQxLDE0LDEyMiwxNjcsNjcsOTcsMTA4LDk5LDExNywxMDgsOTcsMTE2LAorICAgIDEwMSwzMiwxMTksMTA0LDk3LDExNiwzMiw5NSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsCisgICAgOTUsOTUsMzIsMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsOTgsMTAxLDQ2LDEwLDEwLDMyLAorICAgIDMyLDMyLDMyLDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwzMiwxMDUsCisgICAgMTE1LDMyLDExMCwxMTEsMTE2LDMyLDEwMywxMTcsOTcsMTE0LDk3LDExMCwxMTYsMTAxLDEwMSwxMDAsCisgICAgMzIsMTE2LDExMSwzMiw5OCwxMDEsMzIsMTAwLDEwMSwxMDIsMTA1LDExMCwxMDEsMTAwLDMyLDExMSwKKyAgICAxMTQsMzIsOTksMTExLDExNywxMDgsMTAwLDMyLDk4LDEwMSwzMiwxMTUsMTAxLDExNiwzMiwxMTYsCisgICAgMTExLDMyLDc4LDExMSwxMTAsMTAxLDEwLDMyLDMyLDMyLDMyLDExNiwxMTEsMzIsMTE0LDEwMSwKKyAgICAxMTIsMTE0LDEwMSwxMTUsMTAxLDExMCwxMTYsMzIsMTE2LDEwNCw5NywxMTYsMzIsMTA1LDExNiwxMTUsCisgICAgMzIsMTEyLDExNCwxMTEsMTEyLDEwMSwxMTQsMzIsMTE4LDk3LDEwOCwxMTcsMTAxLDMyLDEwNSwxMTUsCisgICAgMzIsMTE3LDExMCwxMDcsMTEwLDExMSwxMTksMTEwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDExNCwKKyAgICAxMzAsMCwwLDAsMTE0LDg5LDAsMCwwLDc4LDEyMiwzMiw5NSw5NSwxMTIsOTcsCisgICAgOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsMzIsMzMsNjEsMzIsOTUsOTUsMTE1LDExMiwxMDEsCisgICAgOTksOTUsOTUsNDYsMTEyLDk3LDExNCwxMDEsMTEwLDExNiwzMiw0MCwxMjIsNCwzMiwzMywKKyAgICA2MSwzMiwyNTAsMSw0MSwyMzMsMywwLDAsMCw0MSwxLDkwLDEwLDExNSwxMTYsCisgICAgOTcsOTksMTA3LDEwOCwxMDEsMTE4LDEwMSwxMDgsMTIyLDg5LDk5LDk3LDExMCwzOSwxMTYsMzIsCisgICAgMTE0LDEwMSwxMTUsMTExLDEwOCwxMTgsMTAxLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwKKyAgICAxMDIsMTE0LDExMSwxMDksMzIsOTUsOTUsMTE1LDExMiwxMDEsOTksOTUsOTUsMzIsMTExLDExNCwKKyAgICAzMiw5NSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsNDQsMzIsMTAyLDk3LAorICAgIDEwOCwxMDgsMTA1LDExMCwxMDMsMzIsOTgsOTcsOTksMTA3LDMyLDExMSwxMTAsMzIsOTUsOTUsCisgICAgMTEwLDk3LDEwOSwxMDEsOTUsOTUsMzIsOTcsMTEwLDEwMCwzMiw5NSw5NSwxMTIsOTcsMTE2LAorICAgIDEwNCw5NSw5NSwxMTQsMSwwLDAsMCwxMTQsMTI3LDAsMCwwLDExNCwxMTcsMCwKKyAgICAwLDAsMTE0LDE5LDAsMCwwLDQxLDYsMTE0LDMwLDAsMCwwLDExNCwxMTksCisgICAgMCwwLDAsMTE0LDE2NywwLDAsMCwxMTQsMTY4LDAsMCwwLDExNCwxNjksMCwKKyAgICAwLDAsMTE0LDExOCwwLDAsMCw0MSwzLDIxOCw3LDEwMywxMDgsMTExLDk4LDk3LAorICAgIDEwOCwxMTUsMTE0LDE2MSwwLDAsMCwxMTQsODIsMCwwLDAsMTE0LDEwLDAsMCwKKyAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE3LDk1LDk5LDk3LAorICAgIDEwOCw5OSw5NSw5NSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsMjUyLDMsCisgICAgMCwwLDExNSwzMCwwLDAsMCwwLDcsMTAsMSwxMCwxLDgsMSwxOCwKKyAgICAxLDIyLDIsMTAsMSw0LDEsOCwxLDYsMiw2LDIsMTAsMSw4LAorICAgIDEsOCwxLDE0LDEsMTE0LDE5MywwLDAsMCw5OSw1LDAsMCwwLDAsCisgICAgMCwwLDAsOSwwLDAsMCw1LDAsMCwwLDY3LDAsMCwwLDExNSwKKyAgICAxNjYsMCwwLDAsMTI0LDQsMTAwLDEsMTA3LDIsMTE0LDE4LDExNiwwLDEyNCwwLAorICAgIDEzMSwxLDEyNSw1LDExMCwzNiwxMjQsMSwxMDAsMiwxMDcsOSwxMTQsMzAsMTI0LDEsCisgICAgMTEwLDIsMTA1LDAsMTI1LDYsMTE2LDEsMTI0LDYsMTMxLDEsMTI1LDcsMTE2LDAsCisgICAgMTI0LDAsMTI0LDcsMTI0LDQsMTMxLDMsMTI1LDUsMTI0LDMsMTE1LDE1MCwxMjQsNCwKKyAgICAxMDAsMSwxMDcsMiwxMTQsODQsMTE2LDAsMTI0LDAsMTA2LDIsMTAwLDMsMTMxLDEsCisgICAgMTAwLDEsMjUsMCwxMzEsMSw4MywwLDEyNCwwLDExNSw5MiwxMjQsNSw4MywwLAorICAgIDExNiwzLDEyNCwwLDEzMSwxLDExNiwzLDEyNCwwLDEwNiwyLDEwMCwzLDEzMSwxLAorICAgIDEwMCwxLDI1LDAsMTMxLDEsMjQsMCwxMjUsOCwxMTYsNCwxMDYsNSwxMjQsNSwKKyAgICAxMDYsNiwxMDAsMiwxMTYsMywxMjQsNSwxMDYsNiwxMzEsMSwxMjQsOCwyNCwwLAorICAgIDEzMywyLDI1LDAsMjUsMCw4MywwLDExMCwxMiwxMTYsNywxMjQsNSwxMjQsMywKKyAgICAxMTYsMCwxMzEsMyw4MywwLDEwMCwyLDgzLDAsNDEsNCw5NywyMTUsMSwwLAorICAgIDAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwzMiw5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDM5LDEwMywxMDgsMTExLDk4LAorICAgIDk3LDEwOCwxMTUsMzksMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDMyLDEwNSwxMTUsCisgICAgMzIsMTE3LDExNSwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTA1LDExMCwxMDIsMTAxLDExNCwzMiwxMTksCisgICAgMTA0LDEwMSwxMTQsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLAorICAgIDEwNSwxMTUsMzIsMTExLDk5LDk5LDExNywxMTQsMTE0LDEwNSwxMTAsMTAzLDMyLDEwMiwxMTQsMTExLAorICAgIDEwOSwxMCwzMiwzMiwzMiwzMiwxMTYsMTExLDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsMzIsCisgICAgMTE0LDEwMSwxMDgsOTcsMTE2LDEwNSwxMTgsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDExNSwKKyAgICA0NiwzMiw4NCwxMDQsMTAxLDMyLDM5LDEwOCwxMTEsOTksOTcsMTA4LDExNSwzOSwzMiw5NywKKyAgICAxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsMTA1LDExNSwzMiwxMDUsMTAzLDExMCwxMTEsMTE0LAorICAgIDEwMSwxMDAsNDYsMzIsODQsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwzOSwxMDIsMTE0LDExMSwKKyAgICAxMDksMTA4LDEwNSwxMTUsMTE2LDM5LDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwzMiwKKyAgICAxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTE1LDMyLDExOSwxMDQsOTcsMTE2LDMyLDExNSwKKyAgICAxMDQsMTExLDExNywxMDgsMTAwLDMyLDEwMSwxMjAsMTA1LDExNSwxMTYsMzIsOTcsMTE1LDMyLDk3LAorICAgIDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSwxMTUsMzIsMTExLDExMCwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMCwzMiwzMiwzMiwzMiw5OCwxMDEsMTA1LDExMCwKKyAgICAxMDMsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwzMiw0MCwxMDEsNDYsMTAzLDQ2LAorICAgIDMyLDk2LDk2LDEwMiwxMTQsMTExLDEwOSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiwzMiw2MCwxMDIsMTE0LDExMSwxMDksMTA4LDEwNSwxMTUsMTE2LDYyLAorICAgIDk2LDk2LDQxLDQ2LDMyLDMyLDg0LDEwNCwxMDEsMzIsMzksMTA4LDEwMSwxMTgsMTAxLDEwOCwKKyAgICAzOSwxMCwzMiwzMiwzMiwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsMTE0LAorICAgIDEwMSwxMTIsMTE0LDEwMSwxMTUsMTAxLDExMCwxMTYsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywKKyAgICA5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTYsCisgICAgMTExLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMDUsMTEwLAorICAgIDMyLDk3LDMyLDExNCwxMDEsMTA4LDk3LDExNiwxMDUsMTE4LDEwMSwxMCwzMiwzMiwzMiwzMiwKKyAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiw0MCwxMDEsNDYsMTAzLDQ2LDMyLDk2LDk2LDEwMiwKKyAgICAxMTQsMTExLDEwOSwzMiw0Niw0NiwxMTIsMTA3LDEwMywzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICAzMiwxMDksMTExLDEwMCw5Niw5NiwzMiwxMTksMTExLDExNywxMDgsMTAwLDMyLDEwNCw5NywxMTgsCisgICAgMTAxLDMyLDk3LDMyLDM5LDEwOCwxMDEsMTE4LDEwMSwxMDgsMzksMzIsMTExLDEwMiwzMiw1MCwKKyAgICA0MSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwxMTQsMTksMCwwLDAsNzgsMTE0LDExNywKKyAgICAwLDAsMCw0MSw4LDExNCwxODIsMCwwLDAsMTE0LDE5MywwLDAsMCwyMTgsCisgICAgOSwxMTIsOTcsMTE0LDExNiwxMDUsMTE2LDEwNSwxMTEsMTEwLDExNCwxNTksMCwwLDAsMTE0LAorICAgIDE0LDAsMCwwLDExNCw3OSwwLDAsMCwxMTQsMSwwLDAsMCwxMTQsMTg5LAorICAgIDAsMCwwLDQxLDksMTE0LDE1LDAsMCwwLDExNCwxOTIsMCwwLDAsMjE4LAorICAgIDYsMTA4LDExMSw5OSw5NywxMDgsMTE1LDExNCwxODcsMCwwLDAsMTE0LDE2MiwwLDAsCisgICAgMCwxMTQsODMsMCwwLDAsOTAsOCwxMDMsMTA4LDExMSw5OCw5NywxMDgsMTE1LDk1LAorICAgIDExNCwxNjEsMCwwLDAsOTAsNyw5OSwxMTcsMTE2LDk1LDExMSwxMDIsMTAyLDExNCwxMCwKKyAgICAwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxMCw5NSwKKyAgICA5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw5NSw5NSwyMyw0LDAsMCwxMTUsMjYsMCwKKyAgICAwLDAsMCwxMSw4LDEsMTAsMiwxNiwxLDgsMSwxMiwxLDQsMywKKyAgICA4LDEsMTgsMSw0LDEsNCw0LDI2LDMsMzIsMiwxMTQsMTk2LDAsMCwKKyAgICAwLDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDM4LDAsMCwwLDExNiwwLDEwNiwxLDEyNCwKKyAgICAwLDEzMSwxLDEyNSwxLDEyNCwxLDEwMCwwLDEwNyw4LDExNCwzMCwxMTYsMiwxMDAsCisgICAgMSwxMjQsMCwyMywwLDEzMSwxLDEzMCwxLDExNiwzLDEyNCwxLDEzMSwxLDgzLAorICAgIDAsNDEsMiw3OCwxMjIsMjUsMTEwLDExMSwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LAorICAgIDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMDAsMzIsNDEsCisgICAgNCwxMTQsMTQyLDAsMCwwLDExNCwxNDYsMCwwLDAsMTE0LDcwLDAsMCwwLAorICAgIDExNCwxNDEsMCwwLDAsNDEsMiwxMTQsMTUsMCwwLDAsMTE0LDgyLDAsMCwKKyAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLAorICAgIDIxOCwxOCw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw5NSwxMDIsMTE0LDExMSwxMDksOTUsCisgICAgMTEwLDk3LDEwOSwxMDEsNTgsNCwwLDAsMTE1LDgsMCwwLDAsMCwxLDEwLAorICAgIDEsOCwxLDEyLDEsMTE0LDE5NywwLDAsMCw5OSwyLDAsMCwwLDAsCisgICAgMCwwLDAsMTIsMCwwLDAsMTIsMCwwLDAsNjcsMCwwLDAsMTE1LAorICAgIDI0NCwwLDAsMCwxMjQsMSw5NywwLDEyNCwwLDk3LDEsMTE2LDIsMTE2LDEsCisgICAgMTMxLDEsMTI1LDIsMTIwLDg2LDExNiwxLDEwNiwzLDEwNiw0LDEzMSwwLDY4LDAsCisgICAgOTMsNzIsOTIsMiwxMjUsMywxMjUsNCwxMTYsNSwxMjQsNCwxMjQsMiwxMzEsMiwKKyAgICAxMTQsMjgsMTI0LDMsMTE2LDEsMTA2LDYsMTA3LDYsMTE0LDYyLDExNiw3LDEyNSw1LAorICAgIDExMCwxOCwxMTYsMCwxMDYsOCwxMjQsMywxMzEsMSwxMTQsMjgsMTE2LDksMTI1LDUsCisgICAgMTEwLDIsMTEzLDI4LDExNiwxMCwxMjQsNCwxMjQsNSwxMzEsMiwxMjUsNiwxMTYsMTEsCisgICAgMTI0LDYsMTI0LDQsMTMxLDIsMSwwLDExMywyOCw4NywwLDExNiwxLDEwNiwzLAorICAgIDExNiwxMiwyNSwwLDEyNSw3LDEyMCw1NCwxMDAsNSw2OCwwLDkzLDQ2LDEyNSw4LAorICAgIDEyNCw4LDExNiwxLDEwNiwzLDEwNyw3LDExNCwxNDQsMTE2LDEzLDEyNCw4LDEzMSwxLAorICAgIDEyNSw5LDExMCwxMCwxMTYsMSwxMDYsMywxMjQsOCwyNSwwLDEyNSw5LDExNiwxNCwKKyAgICAxMjQsNywxMjQsOCwxMjQsOSwxMzEsMywxLDAsMTEzLDEyMCw4NywwLDEyMSwxMiwKKyAgICAxMTYsMTMsMTAwLDIsMTMxLDEsMTI1LDEwLDg3LDAsMTEwLDI0LDQsMCwxMTYsMTUsCisgICAgMTA3LDEwLDExNCwyMDYsMSwwLDEsMCwxLDAsMTAwLDMsMTI1LDEwLDg5LDAsCisgICAgMTEwLDIsODgsMCwxMTYsMTQsMTI0LDcsMTAwLDIsMTI0LDEwLDEzMSwzLDEsMCwKKyAgICAxMTYsMTMsMTAwLDQsMTMxLDEsMTI1LDExLDExNiwxNCwxMjQsNywxMDAsNCwxMjQsMTEsCisgICAgMTMxLDMsMSwwLDEwMCwzLDgzLDAsNDEsNiwxMjIsMjUwLDgzLDEwMSwxMTYsMTE3LAorICAgIDExMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDMyLDk4LDEyMSwzMiwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiwxMDUsMTEwLDEwMywzMiwxMTAsMTAxLDEwMSwxMDAsMTAxLDEwMCwzMiwKKyAgICA5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsCisgICAgMzIsOTcsMTEwLDEwMCwzMiwxMDUsMTEwLDEwNiwxMDEsOTksMTE2LDEwNSwxMTAsMTAzLDMyLDExNiwKKyAgICAxMDQsMTAxLDEwOSwxMCwzMiwzMiwzMiwzMiwxMDUsMTEwLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsCisgICAgMzIsMTAzLDEwOCwxMTEsOTgsOTcsMTA4LDMyLDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksCisgICAgMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDY1LDExNSwzMiwxMTUsMTIxLDExNSwzMiwxMDUsCisgICAgMTE1LDMyLDExMCwxMDEsMTAxLDEwMCwxMDEsMTAwLDMyLDEwMiwxMTEsMTE0LDMyLDExNSwxMjEsMTE1LAorICAgIDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiw5Nyw5OSw5OSwxMDEsMTE1LDExNSwzMiwKKyAgICA5NywxMTAsMTAwLDMyLDk1LDEwNSwxMDksMTEyLDMyLDEwNSwxMTUsMzIsMTEwLDEwMSwxMDEsMTAwLAorICAgIDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDgsMTExLDk3LDEwMCwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsCisgICAgNDUsMTA1LDExMCwxMCwzMiwzMiwzMiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsNDQsCisgICAgMzIsMTE2LDEwNCwxMTEsMTE1LDEwMSwzMiwxMTYsMTE5LDExMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSwxMTUsMzIsMTA5LDExNywxMTUsMTE2LDMyLDk4LDEwMSwzMiwxMDEsMTIwLDExMiwxMDgsMTA1LAorICAgIDk5LDEwNSwxMTYsMTA4LDEyMSwzMiwxMTIsOTcsMTE1LDExNSwxMDEsMTAwLDMyLDEwNSwxMTAsNDYsCisgICAgMTAsMTAsMzIsMzIsMzIsMzIsMTE0LDE2NywwLDAsMCwxMTQsMjAsMCwwLDAsCisgICAgNzgsMTE0LDU1LDAsMCwwLDQxLDEsMTE0LDE2NywwLDAsMCw0MSwxNiwxMTQsCisgICAgNDYsMCwwLDAsMTE0LDE0LDAsMCwwLDExNCwxMywwLDAsMCwxMTQsNzksCisgICAgMCwwLDAsMjE4LDUsMTA1LDExNiwxMDEsMTA5LDExNSwxMTQsMTcxLDAsMCwwLDExNCwKKyAgICA2OSwwLDAsMCwxMTQsMTQyLDAsMCwwLDExNCw3NSwwLDAsMCwxMTQsMTUyLAorICAgIDAsMCwwLDExNCwxMjgsMCwwLDAsMTE0LDEzMywwLDAsMCwxMTQsMSwwLAorICAgIDAsMCwxMTQsMTk3LDAsMCwwLDExNCw1LDAsMCwwLDExNCw3MCwwLDAsCisgICAgMCw0MSwxMiwyMTgsMTAsMTE1LDEyMSwxMTUsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMjE4LAorICAgIDExLDk1LDEwNSwxMDksMTEyLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDkwLDExLDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDk1LDExNiwxMjEsMTEyLDEwMSwxMTQsMTUsMCwwLDAsMTE0LDgzLAorICAgIDAsMCwwLDExNCw5MywwLDAsMCwxMTQsODIsMCwwLDAsOTAsMTEsMTE1LAorICAgIDEwMSwxMDgsMTAyLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDkwLDEyLDk4LDExNywxMDUsMTA4LAorICAgIDExNiwxMDUsMTEwLDk1LDExMCw5NywxMDksMTAxLDkwLDE0LDk4LDExNywxMDUsMTA4LDExNiwxMDUsCisgICAgMTEwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDkwLDEzLDExNiwxMDQsMTE0LDEwMSw5NywxMDAsCisgICAgOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsMTQsMTE5LDEwMSw5NywxMDcsMTE0LDEwMSwxMDIsCisgICAgOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsCisgICAgMCwxMTQsMTEsMCwwLDAsMjE4LDYsOTUsMTE1LDEwMSwxMTYsMTE3LDExMiw2NSw0LAorICAgIDAsMCwxMTUsNTAsMCwwLDAsMCw5LDQsMSw0LDMsOCwxLDIwLAorICAgIDEsMTAsMSwxMCwxLDYsMSwxMCwxLDYsMiwyLDEsMTAsMSwxNCwKKyAgICAzLDEwLDEsMTAsMSwxMCwxLDEwLDIsMTAsMSwxNiwzLDIsMSwxMiwKKyAgICAxLDE0LDIsMTAsMSwxMiwzLDgsMSwxMTQsMjAxLDAsMCwwLDk5LDIsCisgICAgMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDMsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDY2LDAsMCwwLDExNiwwLDEyNCwwLDEyNCwxLDEzMSwyLAorICAgIDEsMCwxMTYsMSwxMDYsMiwxMDYsMywxMTYsNCwxMzEsMSwxLDAsMTE2LDEsCisgICAgMTA2LDIsMTA2LDMsMTE2LDUsMTMxLDEsMSwwLDEwMCwxLDEwMCwyLDEwOCw2LAorICAgIDEyNSwyLDEyNCwyLDk3LDcsMTI0LDIsMTA2LDgsMTE2LDEsMTA2LDksMTE2LDEwLAorICAgIDI1LDAsMTMxLDEsMSwwLDEwMCwyLDgzLDAsNDEsMywxMjIsNTAsNzMsMTEwLAorICAgIDExNSwxMTYsOTcsMTA4LDEwOCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDMyLAorICAgIDk3LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwKKyAgICA5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0NiwKKyAgICAxMTQsMTksMCwwLDAsNzgsNDEsMTEsMTE0LDIwMSwwLDAsMCwxMTQsMTQsMCwKKyAgICAwLDAsMTE0LDE2NiwwLDAsMCwxMTQsMTA5LDAsMCwwLDExNCwxNDIsMCwwLAorICAgIDAsMTE0LDE1MiwwLDAsMCwyMTgsMjYsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsOTUsCisgICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw5NSwxMDEsMTIwLDExNiwxMDEsMTE0LDExMCwKKyAgICA5NywxMDgsMTE0LDExNSwwLDAsMCwyMTgsOCw5NSwxMDUsMTEwLDExNSwxMTYsOTcsMTA4LAorICAgIDEwOCwxMTQsNzksMCwwLDAsMTE0LDEsMCwwLDAsNDEsMywxMTQsMTk5LDAsCisgICAgMCwwLDExNCwyMDAsMCwwLDAsMTE0LDIwMiwwLDAsMCwxMTQsMTAsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMjAzLDAsMCwwLAorICAgIDExMiw0LDAsMCwxMTUsMTIsMCwwLDAsMCwyLDEwLDIsMTIsMSwxMiwKKyAgICAzLDgsMSw0LDEsMTE0LDIwMywwLDAsMCw0MSwyLDc4LDc4LDQxLDEsCisgICAgNzgsNDEsMiw3OCwxMTQsMTksMCwwLDAsNDEsNTAsMTE0LDMsMCwwLDAsCisgICAgMTE0LDExNSwwLDAsMCwxMTQsMTIsMCwwLDAsMTE0LDE2LDAsMCwwLDExNCwKKyAgICA1MSwwLDAsMCwxMTQsMjksMCwwLDAsMTE0LDM2LDAsMCwwLDExNCwxNywKKyAgICAwLDAsMCwxMTQsMTgsMCwwLDAsMTE0LDQxLDAsMCwwLDExNCw0MiwwLAorICAgIDAsMCwxMTQsNDUsMCwwLDAsMTE0LDU2LDAsMCwwLDExNCw1OCwwLDAsCisgICAgMCwxMTQsNjgsMCwwLDAsMTE0LDc0LDAsMCwwLDExNCw3NywwLDAsMCwKKyAgICAxMTQsODQsMCwwLDAsMTE0LDk1LDAsMCwwLDExNCw5NiwwLDAsMCwxMTQsCisgICAgMTAyLDAsMCwwLDExNCw3OCwwLDAsMCwyMTgsNiwxMTEsOTgsMTA2LDEwMSw5OSwKKyAgICAxMTYsOTAsOSw5NSw4MCw3OSw4MCw4NSw3Niw2NSw4NCw2OSwxMTQsMTI4LDAsMCwKKyAgICAwLDExNCwxMzMsMCwwLDAsMTE0LDEzNiwwLDAsMCwxMTQsOTEsMCwwLDAsCisgICAgMTE0LDgwLDAsMCwwLDExNCwxNDAsMCwwLDAsMTE0LDE0MSwwLDAsMCwxMTQsCisgICAgODEsMCwwLDAsMTE0LDE0MiwwLDAsMCwxMTQsMTUyLDAsMCwwLDExNCwxNTcsCisgICAgMCwwLDAsMTE0LDE2MywwLDAsMCwxMTQsMTY1LDAsMCwwLDExNCwxNzAsMCwKKyAgICAwLDAsMTE0LDE3NSwwLDAsMCw5MCwxNSw5NSw2OSw4Miw4Miw5NSw3Nyw4MywKKyAgICA3MSw5NSw4MCw4Miw2OSw3MCw3Myw4OCwxMTQsMTc3LDAsMCwwLDExNCwxODAsMCwKKyAgICAwLDAsMTE0LDE4MSwwLDAsMCwxMTQsMTgyLDAsMCwwLDExNCwxODksMCwwLAorICAgIDAsMTE0LDE5MywwLDAsMCwxMTQsMTk2LDAsMCwwLDExNCwxOTcsMCwwLDAsCisgICAgMTE0LDIwMSwwLDAsMCwxMTQsMjAzLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCisgICAgMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsOCwKKyAgICA2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw2Miw4LDAsMCwwLDExNSw5NCwwLDAsCisgICAgMCw0LDE3LDQsMiw4LDgsOCw3LDQsMiw0LDMsMTYsNCwxNCwKKyAgICA2OCwxNCwyMSwxNCwxOSw4LDE5LDgsMTksOCwxMSwxNCw4LDgsMTEsOCwKKyAgICAxMiw4LDE2LDgsMzYsMTQsMjcsMTQsMTAxLDE2LDI2LDYsMywxMCw0NSwxNCwKKyAgICA2MCw4LDE3LDgsMTcsOCwyNSw4LDI5LDgsMjMsOCwxNiwxNCw3MywxNCwKKyAgICA3NywxNCwxMyw4LDksOCw5LDEwLDQ3LDgsMjAsNCwxLDgsMiw4LAorICAgIDI3LDgsNiwxMCwyNSw4LDMxLDgsMjcsMTgsMzUsOCw3LDgsNDcsCiB9OwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2ltcG9ydGxpYl9leHRlcm5hbC5oIGIvUHl0aG9uL2ltcG9ydGxpYl9leHRlcm5hbC5oCmluZGV4IDVlZTg0M2EuLjJmNDA5NzggMTAwNjQ0Ci0tLSBhL1B5dGhvbi9pbXBvcnRsaWJfZXh0ZXJuYWwuaAorKysgYi9QeXRob24vaW1wb3J0bGliX2V4dGVybmFsLmgKQEAgLTEsNzkxICsxLDcxNyBAQAogLyogQXV0by1nZW5lcmF0ZWQgYnkgUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYyAqLwogY29uc3QgdW5zaWduZWQgY2hhciBfUHlfTV9faW1wb3J0bGliX2V4dGVybmFsW10gPSB7Ci0gICAgOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNywwLDAsCi0gICAgMCw2NCwwLDAsMCwxMTUsMjQ0LDIsMCwwLDEwMCwwLDAsOTAsMCwwLAotICAgIDEwMCw5NiwwLDkwLDEsMCwxMDAsOTcsMCw5MCwyLDAsMTAxLDIsMCwxMDEsCi0gICAgMSwwLDIzLDkwLDMsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCwKLSAgICA0LDAsMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsOTAsNSwwLDEwMCw4LAotICAgIDAsMTAwLDksMCwxMzIsMCwwLDkwLDYsMCwxMDAsMTAsMCwxMDAsMTEsMCwKLSAgICAxMzIsMCwwLDkwLDcsMCwxMDAsMTIsMCwxMDAsMTMsMCwxMzIsMCwwLDkwLAotICAgIDgsMCwxMDAsMTQsMCwxMDAsMTUsMCwxMzIsMCwwLDkwLDksMCwxMDAsMTYsCi0gICAgMCwxMDAsMTcsMCwxMzIsMCwwLDkwLDEwLDAsMTAwLDE4LDAsMTAwLDE5LDAsCi0gICAgMTMyLDAsMCw5MCwxMSwwLDEwMCwyMCwwLDEwMCwyMSwwLDEzMiwwLDAsOTAsCi0gICAgMTIsMCwxMDAsMjIsMCwxMDAsMjMsMCwxMDAsMjQsMCwxMzIsMSwwLDkwLDEzLAotICAgIDAsMTAxLDE0LDAsMTAxLDEzLDAsMTA2LDE1LDAsMTMxLDEsMCw5MCwxNiwwLAotICAgIDEwMCwyNSwwLDEwNiwxNywwLDEwMCwyNiwwLDEwMCwyNywwLDEzMSwyLDAsMTAwLAotICAgIDI4LDAsMjMsOTAsMTgsMCwxMDEsMTksMCwxMDYsMjAsMCwxMDEsMTgsMCwxMDAsCi0gICAgMjcsMCwxMzEsMiwwLDkwLDIxLDAsMTAwLDI5LDAsOTAsMjIsMCwxMDAsMzAsCi0gICAgMCw5MCwyMywwLDEwMCwzMSwwLDEwMywxLDAsOTAsMjQsMCwxMDAsMzIsMCwKLSAgICAxMDMsMSwwLDkwLDI1LDAsMTAxLDI1LDAsNCw5MCwyNiwwLDkwLDI3LDAsCi0gICAgMTAwLDMzLDAsMTAwLDM0LDAsMTAwLDMzLDAsMTAwLDM1LDAsMTAwLDM2LDAsMTMyLAotICAgIDEsMSw5MCwyOCwwLDEwMCwzNywwLDEwMCwzOCwwLDEzMiwwLDAsOTAsMjksCi0gICAgMCwxMDAsMzksMCwxMDAsNDAsMCwxMzIsMCwwLDkwLDMwLDAsMTAwLDQxLDAsCi0gICAgMTAwLDQyLDAsMTMyLDAsMCw5MCwzMSwwLDEwMCw0MywwLDEwMCw0NCwwLDEzMiwKLSAgICAwLDAsOTAsMzIsMCwxMDAsNDUsMCwxMDAsNDYsMCwxMDAsNDcsMCwxMDAsNDgsCi0gICAgMCwxMzIsMCwxLDkwLDMzLDAsMTAwLDQ5LDAsMTAwLDUwLDAsMTMyLDAsMCwKLSAgICA5MCwzNCwwLDEwMCw1MSwwLDEwMCw1MiwwLDEzMiwwLDAsOTAsMzUsMCwxMDAsCi0gICAgMzMsMCwxMDAsMzMsMCwxMDAsMzMsMCwxMDAsNTMsMCwxMDAsNTQsMCwxMzIsMywKLSAgICAwLDkwLDM2LDAsMTAwLDMzLDAsMTAwLDMzLDAsMTAwLDMzLDAsMTAwLDU1LDAsCi0gICAgMTAwLDU2LDAsMTMyLDMsMCw5MCwzNywwLDEwMCw1NywwLDEwMCw1NywwLDEwMCwKLSAgICA1OCwwLDEwMCw1OSwwLDEzMiwyLDAsOTAsMzgsMCwxMDAsNjAsMCwxMDAsNjEsCi0gICAgMCwxMzIsMCwwLDkwLDM5LDAsMTAxLDQwLDAsMTMxLDAsMCw5MCw0MSwwLAotICAgIDEwMCwzMywwLDEwMCw2MiwwLDEwMCwzMywwLDEwMCw2MywwLDEwMSw0MSwwLDEwMCwKLSAgICA2NCwwLDEwMCw2NSwwLDEzMiwxLDIsOTAsNDIsMCw3MSwxMDAsNjYsMCwxMDAsCi0gICAgNjcsMCwxMzIsMCwwLDEwMCw2NywwLDEzMSwyLDAsOTAsNDMsMCw3MSwxMDAsCi0gICAgNjgsMCwxMDAsNjksMCwxMzIsMCwwLDEwMCw2OSwwLDEzMSwyLDAsOTAsNDQsCi0gICAgMCw3MSwxMDAsNzAsMCwxMDAsNzEsMCwxMzIsMCwwLDEwMCw3MSwwLDEwMSw0NCwKLSAgICAwLDEzMSwzLDAsOTAsNDUsMCw3MSwxMDAsNzIsMCwxMDAsNzMsMCwxMzIsMCwKLSAgICAwLDEwMCw3MywwLDEzMSwyLDAsOTAsNDYsMCw3MSwxMDAsNzQsMCwxMDAsNzUsCi0gICAgMCwxMzIsMCwwLDEwMCw3NSwwLDEwMSw0NiwwLDEwMSw0NSwwLDEzMSw0LDAsCi0gICAgOTAsNDcsMCw3MSwxMDAsNzYsMCwxMDAsNzcsMCwxMzIsMCwwLDEwMCw3NywwLAotICAgIDEwMSw0NiwwLDEwMSw0NCwwLDEzMSw0LDAsOTAsNDgsMCwxMDMsMCwwLDkwLAotICAgIDQ5LDAsNzEsMTAwLDc4LDAsMTAwLDc5LDAsMTMyLDAsMCwxMDAsNzksMCwxMDEsCi0gICAgNDYsMCwxMDEsNDQsMCwxMzEsNCwwLDkwLDUwLDAsNzEsMTAwLDgwLDAsMTAwLAotICAgIDgxLDAsMTMyLDAsMCwxMDAsODEsMCwxMzEsMiwwLDkwLDUxLDAsNzEsMTAwLAotICAgIDgyLDAsMTAwLDgzLDAsMTMyLDAsMCwxMDAsODMsMCwxMzEsMiwwLDkwLDUyLAotICAgIDAsNzEsMTAwLDg0LDAsMTAwLDg1LDAsMTMyLDAsMCwxMDAsODUsMCwxMzEsMiwKLSAgICAwLDkwLDUzLDAsNzEsMTAwLDg2LDAsMTAwLDg3LDAsMTMyLDAsMCwxMDAsODcsCi0gICAgMCwxMzEsMiwwLDkwLDU0LDAsMTAwLDMzLDAsMTAwLDg4LDAsMTAwLDg5LDAsCi0gICAgMTMyLDEsMCw5MCw1NSwwLDEwMCw5MCwwLDEwMCw5MSwwLDEzMiwwLDAsOTAsCi0gICAgNTYsMCwxMDAsOTIsMCwxMDAsOTMsMCwxMzIsMCwwLDkwLDU3LDAsMTAwLDk0LAotICAgIDAsMTAwLDk1LDAsMTMyLDAsMCw5MCw1OCwwLDEwMCwzMywwLDgzLDQxLDk4LAotICAgIDk3LDk0LDEsMCwwLDY3LDExMSwxMTQsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LAotICAgIDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDExMiw5NywxMTYsMTA0LAotICAgIDQ1LDk4LDk3LDExNSwxMDEsMTAwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDQ2LDEwLDEwLAotICAgIDg0LDEwNCwxMDUsMTE1LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsNzgsCi0gICAgNzksODQsMzIsMTA5LDEwMSw5NywxMTAsMTE2LDMyLDExNiwxMTEsMzIsOTgsMTAxLDMyLDEwMCwKLSAgICAxMDUsMTE0LDEwMSw5OSwxMTYsMTA4LDEyMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLAotICAgIDMzLDMyLDczLDExNiwzMiwxMDQsOTcsMTE1LDMyLDk4LDEwMSwxMDEsMTEwLDMyLDEwMCwxMDEsCi0gICAgMTE1LDEwNSwxMDMsMTEwLDEwMSwxMDAsMzIsMTE1LDExNyw5OSwxMDQsMTAsMTE2LDEwNCw5NywxMTYsCi0gICAgMzIsMTA1LDExNiwzMiw5OSw5NywxMTAsMzIsOTgsMTAxLDMyLDk4LDExMSwxMTEsMTE2LDExNSwKLSAgICAxMTYsMTE0LDk3LDExMiwxMTIsMTAxLDEwMCwzMiwxMDUsMTEwLDExNiwxMTEsMzIsODAsMTIxLDExNiwKLSAgICAxMDQsMTExLDExMCwzMiw5NywxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwKLSAgICAxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsMTA1LDEwOSwxMTIsCi0gICAgMTExLDExNCwxMTYsNDYsMzIsNjUsMTE1LDEwLDExNSwxMTcsOTksMTA0LDMyLDEwNSwxMTYsMzIsCi0gICAgMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTEwLDEwNiwKLSAgICAxMDEsOTksMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwKLSAgICAxMDUsOTksMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDk3LDExMCwxMDAsMzIsOTcsCi0gICAgMTE2LDExNiwxMTQsMTA1LDk4LDExNywxMTYsMTAxLDExNSwzMiwxMDUsMTEwLDMyLDExMSwxMTQsMTAwLAotICAgIDEwMSwxMTQsMzIsMTE2LDExMSwxMCwxMTksMTExLDExNCwxMDcsNDYsMzIsNzksMTEwLDEwMSwzMiwKLSAgICAxMTUsMTA0LDExMSwxMTcsMTA4LDEwMCwzMiwxMTcsMTE1LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LAotICAgIDExNiwxMDgsMTA1LDk4LDMyLDk3LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsMTE3LDk4LDEwOCwKLSAgICAxMDUsOTksNDUsMTAyLDk3LDk5LDEwNSwxMTAsMTAzLDMyLDExOCwxMDEsMTE0LDExNSwxMDUsMTExLAotICAgIDExMCwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICA0NiwxMCwxMCwyMTgsMywxMTksMTA1LDExMCwyMTgsNiw5OSwxMjEsMTAzLDExOSwxMDUsMTEwLAotICAgIDIxOCw2LDEwMCw5NywxMTQsMTE5LDEwNSwxMTAsOTksMCwwLDAsMCwwLDAsMCwKLSAgICAwLDEsMCwwLDAsMywwLDAsMCwzLDAsMCwwLDExNSw4OCwwLAotICAgIDAsMCwxMTYsMCwwLDEwNiwxLDAsMTA2LDIsMCwxMTYsMywwLDEzMSwxLAotICAgIDAsMTE0LDcyLDAsMTE2LDAsMCwxMDYsMSwwLDEwNiwyLDAsMTE2LDQsMCwKLSAgICAxMzEsMSwwLDExNCw0NSwwLDEwMCwxLDAsMTM3LDAsMCwxMTAsNiwwLDEwMCwKLSAgICAyLDAsMTM3LDAsMCwxMzUsMCwwLDEwMiwxLDAsMTAwLDMsMCwxMDAsNCwKLSAgICAwLDEzNCwwLDAsMTI1LDAsMCwxMTAsMTIsMCwxMDAsNSwwLDEwMCw0LDAsCi0gICAgMTMyLDAsMCwxMjUsMCwwLDEyNCwwLDAsODMsNDEsNiw3OCw5MCwxMiw4MCwKLSAgICA4OSw4NCw3Miw3OSw3OCw2Nyw2NSw4Myw2OSw3OSw3NSwxMTUsMTIsMCwwLDAsCi0gICAgODAsODksODQsNzIsNzksNzgsNjcsNjUsODMsNjksNzksNzUsOTksMCwwLDAsCi0gICAgMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxOSwwLDAsCi0gICAgMCwxMTUsMTMsMCwwLDAsMTM2LDAsMCwxMTYsMCwwLDEwNiwxLDAsMTA3LAotICAgIDYsMCw4Myw0MSwxLDEyMiw1Myw4NCwxMTQsMTE3LDEwMSwzMiwxMDUsMTAyLDMyLDEwMiwKLSAgICAxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxMTUsMzIsMTA5LDExNywxMTUsMTE2LDMyLDk4LDEwMSwKLSAgICAzMiw5OSwxMDQsMTAxLDk5LDEwNywxMDEsMTAwLDMyLDk5LDk3LDExNSwxMDEsNDUsMTA1LDExMCwKLSAgICAxMTUsMTAxLDExMCwxMTUsMTA1LDExNiwxMDUsMTE4LDEwMSwxMDgsMTIxLDQ2LDQxLDIsMjE4LDMsCi0gICAgOTUsMTExLDExNSw5MCw3LDEwMSwxMTAsMTE4LDEwNSwxMTQsMTExLDExMCwxNjksMCw0MSwxLAotICAgIDIxOCwzLDEwNywxMDEsMTIxLDExNCw0LDAsMCwwLDI1MCwzOCw2MCwxMDIsMTE0LDExMSwKLSAgICAxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LAotICAgIDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw5NSwxMDEsMTIwLDExNiwxMDEsMTE0LDExMCw5NywKLSAgICAxMDgsNjIsMjE4LDExLDk1LDExNCwxMDEsMTA4LDk3LDEyMCw5NSw5OSw5NywxMTUsMTAxLDM3LAotICAgIDAsMCwwLDExNSwyLDAsMCwwLDAsMiwxMjIsMzcsOTUsMTA5LDk3LDEwNywKLSAgICAxMDEsOTUsMTE0LDEwMSwxMDgsOTcsMTIwLDk1LDk5LDk3LDExNSwxMDEsNDYsNjAsMTA4LDExMSwKLSAgICA5OSw5NywxMDgsMTE1LDYyLDQ2LDk1LDExNCwxMDEsMTA4LDk3LDEyMCw5NSw5OSw5NywxMTUsCi0gICAgMTAxLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDEsMCwKLSAgICAwLDAsODMsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsMCw4Myw0MSwKLSAgICAyLDEyMiw1Myw4NCwxMTQsMTE3LDEwMSwzMiwxMDUsMTAyLDMyLDEwMiwxMDUsMTA4LDEwMSwxMTAsCi0gICAgOTcsMTA5LDEwMSwxMTUsMzIsMTA5LDExNywxMTUsMTE2LDMyLDk4LDEwMSwzMiw5OSwxMDQsMTAxLAotICAgIDk5LDEwNywxMDEsMTAwLDMyLDk5LDk3LDExNSwxMDEsNDUsMTA1LDExMCwxMTUsMTAxLDExMCwxMTUsCi0gICAgMTA1LDExNiwxMDUsMTE4LDEwMSwxMDgsMTIxLDQ2LDcwLDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsCi0gICAgMCwwLDExNCw3LDAsMCwwLDQxLDAsMCwwLDExNSwyLDAsMCwwLAotICAgIDAsMiw0MSw1LDIxOCwzLDExNSwxMjEsMTE1LDIxOCw4LDExMiwxMDgsOTcsMTE2LDEwMiwKLSAgICAxMTEsMTE0LDEwOSwyMTgsMTAsMTE1LDExNiw5NywxMTQsMTE2LDExNSwxMTksMTA1LDExNiwxMDQsMjE4LAotICAgIDI3LDk1LDY3LDY1LDgzLDY5LDk1LDczLDc4LDgzLDY5LDc4LDgzLDczLDg0LDczLAotICAgIDg2LDY5LDk1LDgwLDc2LDY1LDg0LDcwLDc5LDgyLDc3LDgzLDIxOCwzNSw5NSw2NywKLSAgICA2NSw4Myw2OSw5NSw3Myw3OCw4Myw2OSw3OCw4Myw3Myw4NCw3Myw4Niw2OSw5NSwKLSAgICA4MCw3Niw2NSw4NCw3MCw3OSw4Miw3Nyw4Myw5NSw4Myw4NCw4Miw5NSw3NSw2OSwKLSAgICA4OSw0MSwxLDExNCw3LDAsMCwwLDExNCw0LDAsMCwwLDQxLDEsMTE0LAotICAgIDUsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDE2LDk1LDEwOSw5NywxMDcsMTAxLAotICAgIDk1LDExNCwxMDEsMTA4LDk3LDEyMCw5NSw5OSw5NywxMTUsMTAxLDMwLDAsMCwwLDExNSwKLSAgICAxNCwwLDAsMCwwLDEsMTgsMSwxOCwxLDksMiw2LDIsMjEsNCwKLSAgICAxMiwzLDExNCwxMywwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsCi0gICAgMSwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwyNiwwLDAsCi0gICAgMCwxMTYsMCwwLDEyNCwwLDAsMTMxLDEsMCwxMDAsMSwwLDY0LDEwNiwxLAotICAgIDAsMTAwLDIsMCwxMDAsMywwLDEzMSwyLDAsODMsNDEsNCwxMjIsNDIsNjcsCi0gICAgMTExLDExMCwxMTgsMTAxLDExNCwxMTYsMzIsOTcsMzIsNTEsNTAsNDUsOTgsMTA1LDExNiwzMiwKLSAgICAxMDUsMTEwLDExNiwxMDEsMTAzLDEwMSwxMTQsMzIsMTE2LDExMSwzMiwxMDgsMTA1LDExNiwxMTYsMTA4LAotICAgIDEwMSw0NSwxMDEsMTEwLDEwMCwxMDUsOTcsMTEwLDQ2LDEwOCwzLDAsMCwwLDI1NSwxMjcsCi0gICAgMjU1LDEyNywzLDAsMjMzLDQsMCwwLDAsMjE4LDYsMTA4LDEwNSwxMTYsMTE2LDEwOCwKLSAgICAxMDEsNDEsMiwyMTgsMywxMDUsMTEwLDExNiwyMTgsOCwxMTYsMTExLDk1LDk4LDEyMSwxMTYsCi0gICAgMTAxLDExNSw0MSwxLDIxOCwxLDEyMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNiwwLDAsMCwyMTgsNyw5NSwxMTksOTUsMTA4LDExMSwxMTAsMTAzLDQ3LAotICAgIDAsMCwwLDExNSwyLDAsMCwwLDAsMiwxMTQsMTksMCwwLDAsOTksCi0gICAgMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMywwLDAsMCwKLSAgICA2NywwLDAsMCwxMTUsMTYsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwKLSAgICAwLDAsMTAwLDEsMCwxMzEsMiwwLDgzLDQxLDIsMTIyLDQ3LDY3LDExMSwxMTAsCi0gICAgMTE4LDEwMSwxMTQsMTE2LDMyLDUyLDMyLDk4LDEyMSwxMTYsMTAxLDExNSwzMiwxMDUsMTEwLDMyLAotICAgIDEwOCwxMDUsMTE2LDExNiwxMDgsMTAxLDQ1LDEwMSwxMTAsMTAwLDEwNSw5NywxMTAsMzIsMTE2LDExMSwKLSAgICAzMiw5NywxMTAsMzIsMTA1LDExMCwxMTYsMTAxLDEwMywxMDEsMTE0LDQ2LDExNCwxNSwwLDAsCi0gICAgMCw0MSwyLDExNCwxNiwwLDAsMCwyMTgsMTAsMTAyLDExNCwxMTEsMTA5LDk1LDk4LAotICAgIDEyMSwxMTYsMTAxLDExNSw0MSwxLDkwLDksMTA1LDExMCwxMTYsOTUsOTgsMTIxLDExNiwxMDEsCi0gICAgMTE1LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLAotICAgIDIxOCw3LDk1LDExNCw5NSwxMDgsMTExLDExMCwxMDMsNTIsMCwwLDAsMTE1LDIsMCwKLSAgICAwLDAsMCwyLDExNCwyMSwwLDAsMCw5OSwwLDAsMCwwLDAsMCwKLSAgICAwLDAsMSwwLDAsMCwzLDAsMCwwLDcxLDAsMCwwLDExNSwyNiwKLSAgICAwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTAwLDEsMCwxMDAsMiwwLDEzMiwKLSAgICAwLDAsMTI0LDAsMCw2OCwxMzEsMSwwLDEzMSwxLDAsODMsNDEsMywxMjIsCi0gICAgMzEsODIsMTAxLDExMiwxMDgsOTcsOTksMTAxLDEwOSwxMDEsMTEwLDExNiwzMiwxMDIsMTExLDExNCwKLSAgICAzMiwxMTEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDQ2LDEwNiwxMTEsMTA1LDExMCw0MCw0MSw0NiwKLSAgICA5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw0LDAsMCwKLSAgICAwLDgzLDAsMCwwLDExNSwzNywwLDAsMCwxMDMsMCwwLDEyNCwwLDAsCi0gICAgOTMsMjcsMCwxMjUsMSwwLDEyNCwxLDAsMTE0LDYsMCwxMjQsMSwwLDEwNiwKLSAgICAwLDAsMTE2LDEsMCwxMzEsMSwwLDE0NSwyLDAsMTEzLDYsMCw4MywxMTQsCi0gICAgNCwwLDAsMCw0MSwyLDIxOCw2LDExNCwxMTUsMTE2LDExNCwxMDUsMTEyLDIxOCwxNSwKLSAgICAxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTAxLDExMiw5NywxMTQsOTcsMTE2LDExMSwxMTQsMTE1LDQxLAotICAgIDIsMjE4LDIsNDYsNDgsMjE4LDQsMTEyLDk3LDExNCwxMTYsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjUwLDEwLDYwLDEwOCwxMDUsMTE1LAotICAgIDExNiw5OSwxMTEsMTA5LDExMiw2Miw1OSwwLDAsMCwxMTUsMiwwLDAsMCw5LAotICAgIDEsMTIyLDMwLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNiwxMTEsMTA1LDExMCw0Niw2MCwxMDgsCi0gICAgMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsNjAsMTA4LDEwNSwxMTUsMTE2LDk5LDExMSwxMDksMTEyLAotICAgIDYyLDQxLDIsMjE4LDgsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDEwMSwxMTIsMjE4LDQsMTA2LAotICAgIDExMSwxMDUsMTEwLDQxLDEsMjE4LDEwLDExMiw5NywxMTYsMTA0LDk1LDExMiw5NywxMTQsMTE2LAotICAgIDExNSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKLSAgICAyMTgsMTAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA2LDExMSwxMDUsMTEwLDU3LDAsMCwwLAotICAgIDExNSw0LDAsMCwwLDAsMiwxNSwxLDExNCwzMCwwLDAsMCw5OSwxLAotICAgIDAsMCwwLDAsMCwwLDAsNSwwLDAsMCw1LDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSwxMzQsMCwwLDAsMTE2LDAsMCwxMTYsMSwwLDEzMSwxLAotICAgIDAsMTAwLDEsMCwxMDcsMiwwLDExNCw1MiwwLDEyNCwwLDAsMTA2LDIsMCwKLSAgICAxMTYsMywwLDEzMSwxLDAsOTIsMywwLDEyNSwxLDAsMTI1LDIsMCwxMjUsCi0gICAgMywwLDEyNCwxLDAsMTI0LDMsMCwxMDIsMiwwLDgzLDEyMCw2OSwwLDExNiwKLSAgICA0LDAsMTI0LDAsMCwxMzEsMSwwLDY4LDkzLDU1LDAsMTI1LDQsMCwxMjQsCi0gICAgNCwwLDExNiwxLDAsMTA3LDYsMCwxMTQsNjUsMCwxMjQsMCwwLDEwNiw1LAotICAgIDAsMTI0LDQsMCwxMDAsMiwwLDEwMCwxLDAsMTMxLDEsMSw5MiwyLDAsCi0gICAgMTI1LDEsMCwxMjUsMywwLDEyNCwxLDAsMTI0LDMsMCwxMDIsMiwwLDgzLAotICAgIDExMyw2NSwwLDg3LDEwMCwzLDAsMTI0LDAsMCwxMDIsMiwwLDgzLDQxLDQsCi0gICAgMTIyLDMyLDgyLDEwMSwxMTIsMTA4LDk3LDk5LDEwMSwxMDksMTAxLDExMCwxMTYsMzIsMTAyLDExMSwKLSAgICAxMTQsMzIsMTExLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw0NiwxMTUsMTEyLDEwOCwxMDUsMTE2LDQwLAotICAgIDQxLDQ2LDIzMywxLDAsMCwwLDkwLDgsMTA5LDk3LDEyMCwxMTUsMTEyLDEwOCwxMDUsCi0gICAgMTE2LDIxOCwwLDQxLDYsMjE4LDMsMTA4LDEwMSwxMTAsMTE0LDIzLDAsMCwwLDIxOCwKLSAgICAxMCwxMTQsMTEyLDk3LDExNCwxMTYsMTA1LDExNiwxMDUsMTExLDExMCwxMTQsMjcsMCwwLDAsCi0gICAgMjE4LDgsMTE0LDEwMSwxMTgsMTAxLDExNCwxMTUsMTAxLDEwMCwyMTgsNiwxMTQsMTE1LDExMiwxMDgsCi0gICAgMTA1LDExNiw0MSw1LDIxOCw0LDExMiw5NywxMTYsMTA0LDkwLDUsMTAyLDExNCwxMTEsMTEwLAotICAgIDExNiwyMTgsMSw5NSwyMTgsNCwxMTYsOTcsMTA1LDEwOCwxMTQsMTgsMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDExLAotICAgIDk1LDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTIsMTA4LDEwNSwxMTYsNjMsMCwwLDAsMTE1LAotICAgIDE2LDAsMCwwLDAsMiwxOCwxLDI0LDEsMTAsMSwxOSwxLDEyLDEsCi0gICAgMjcsMSwxNCwxLDExNCw0MCwwLDAsMCw5OSwxLDAsMCwwLDAsMCwKLSAgICAwLDAsMSwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxMywKLSAgICAwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTI0LDAsMCwxMzEsMSwwLDgzLAotICAgIDQxLDEsMTIyLDEyNiw4MywxMTYsOTcsMTE2LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsCi0gICAgMTA0LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDc3LDk3LDEwMCwxMDEsMzIsOTcsMzIsMTE1LAotICAgIDEwMSwxMTIsOTcsMTE0LDk3LDExNiwxMDEsMzIsMTAyLDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLAotICAgIDMyLDExNiwxMTEsMzIsMTA5LDk3LDEwNywxMDEsMzIsMTA1LDExNiwzMiwxMDEsOTcsMTE1LDEwNSwKLSAgICAxMDEsMTE0LDMyLDExNiwxMTEsMzIsMTExLDExOCwxMDEsMTE0LDExNCwxMDUsMTAwLDEwMSwzMiwxMDUsCi0gICAgMTEwLDMyLDEwMSwxMjAsMTEyLDEwMSwxMTQsMTA1LDEwOSwxMDEsMTEwLDExNiwxMTUsMTAsMzIsMzIsCi0gICAgMzIsMzIsNDAsMTAxLDQ2LDEwMyw0NiwzMiw5OSw5Nyw5OSwxMDQsMTAxLDMyLDExNSwxMTYsCi0gICAgOTcsMTE2LDMyLDExNCwxMDEsMTE1LDExNywxMDgsMTE2LDExNSw0MSw0NiwxMCwxMCwzMiwzMiwKLSAgICAzMiwzMiw0MSwyLDExNCwzLDAsMCwwLDkwLDQsMTE1LDExNiw5NywxMTYsNDEsCi0gICAgMSwxMTQsMzcsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDYsMCwwLDAsMjE4LDEwLDk1LDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTYsOTcsCi0gICAgMTE2LDc1LDAsMCwwLDExNSwyLDAsMCwwLDAsNywxMTQsNDEsMCwwLAotICAgIDAsOTksMiwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMTEsMCwKLSAgICAwLDAsNjcsMCwwLDAsMTE1LDU4LDAsMCwwLDEyMSwxNiwwLDExNiwwLAotICAgIDAsMTI0LDAsMCwxMzEsMSwwLDEyNSwyLDAsODcsMTEwLDIyLDAsNCwxMTYsCi0gICAgMSwwLDEwNywxMCwwLDExNCw0MCwwLDEsMSwxLDEwMCwxLDAsODMsODksCi0gICAgMTEwLDEsMCw4OCwxMjQsMiwwLDEwNiwyLDAsMTAwLDIsMCw2NCwxMjQsMSwKLSAgICAwLDEwNywyLDAsODMsNDEsMywxMjIsNDksODQsMTAxLDExNSwxMTYsMzIsMTE5LDEwNCwKLSAgICAxMDEsMTE2LDEwNCwxMDEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwNSwKLSAgICAxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwzMiwKLSAgICAxMDksMTExLDEwMCwxMDEsMzIsMTE2LDEyMSwxMTIsMTAxLDQ2LDcwLDEwNSwwLDI0MCwwLDAsCi0gICAgNDEsMywxMTQsNDEsMCwwLDAsMjE4LDcsNzksODMsNjksMTE0LDExNCwxMTEsMTE0LAotICAgIDIxOCw3LDExNSwxMTYsOTUsMTA5LDExMSwxMDAsMTAxLDQxLDMsMTE0LDM3LDAsMCwwLAotICAgIDIxOCw0LDEwOSwxMTEsMTAwLDEwMSw5MCw5LDExNSwxMTYsOTcsMTE2LDk1LDEwNSwxMTAsMTAyLAotICAgIDExMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKLSAgICAyMTgsMTgsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDExNSw5NSwxMDksMTExLDEwMCwxMDEsOTUsCi0gICAgMTE2LDEyMSwxMTIsMTAxLDg1LDAsMCwwLDExNSwxMCwwLDAsMCwwLDIsMywKLSAgICAxLDE2LDEsMTMsMSw5LDEsMTE0LDQ1LDAsMCwwLDk5LDEsMCwwLAorICAgIDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDUsMCwwLAorICAgIDAsNjQsMCwwLDAsMTE1LDI0OCwxLDAsMCwxMDAsMCw5MCwwLDEwMCw5MSwKKyAgICA5MCwxLDEwMCw5Miw5MCwyLDEwMSwyLDEwMSwxLDIzLDAsOTAsMywxMDAsNCwKKyAgICAxMDAsNSwxMzIsMCw5MCw0LDEwMCw2LDEwMCw3LDEzMiwwLDkwLDUsMTAwLDgsCisgICAgMTAwLDksMTMyLDAsOTAsNiwxMDAsMTAsMTAwLDExLDEzMiwwLDkwLDcsMTAwLDEyLAorICAgIDEwMCwxMywxMzIsMCw5MCw4LDEwMCwxNCwxMDAsMTUsMTMyLDAsOTAsOSwxMDAsMTYsCisgICAgMTAwLDE3LDEzMiwwLDkwLDEwLDEwMCwxOCwxMDAsMTksMTMyLDAsOTAsMTEsMTAwLDIwLAorICAgIDEwMCwyMSwxMzIsMCw5MCwxMiwxMDAsOTMsMTAwLDIzLDEwMCwyNCwxMzIsMSw5MCwxMywKKyAgICAxMDEsMTQsMTAxLDEzLDEwNiwxNSwxMzEsMSw5MCwxNiwxMDAsMjUsMTA2LDE3LDEwMCwyNiwKKyAgICAxMDAsMjcsMTMxLDIsMTAwLDI4LDIzLDAsOTAsMTgsMTAxLDE5LDEwNiwyMCwxMDEsMTgsCisgICAgMTAwLDI3LDEzMSwyLDkwLDIxLDEwMCwyOSw5MCwyMiwxMDAsMzAsOTAsMjMsMTAwLDMxLAorICAgIDEwMywxLDkwLDI0LDEwMCwzMiwxMDMsMSw5MCwyNSwxMDEsMjUsNCwwLDkwLDI2LAorICAgIDkwLDI3LDEwMCw5NCwxMDAsMzMsMTAwLDM0LDE1NiwxLDEwMCwzNSwxMDAsMzYsMTMyLDMsCisgICAgOTAsMjgsMTAwLDM3LDEwMCwzOCwxMzIsMCw5MCwyOSwxMDAsMzksMTAwLDQwLDEzMiwwLAorICAgIDkwLDMwLDEwMCw0MSwxMDAsNDIsMTMyLDAsOTAsMzEsMTAwLDQzLDEwMCw0NCwxMzIsMCwKKyAgICA5MCwzMiwxMDAsNDUsMTAwLDQ2LDEzMiwwLDkwLDMzLDEwMCw0NywxMDAsNDgsMTMyLDAsCisgICAgOTAsMzQsMTAwLDk1LDEwMCw0OSwxMDAsNTAsMTMyLDEsOTAsMzUsMTAwLDk2LDEwMCw1MSwKKyAgICAxMDAsNTIsMTMyLDEsOTAsMzYsMTAwLDk3LDEwMCw1NCwxMDAsNTUsMTMyLDEsOTAsMzcsCisgICAgMTAwLDU2LDEwMCw1NywxMzIsMCw5MCwzOCwxMDEsMzksMTMxLDAsOTAsNDAsMTAwLDk4LAorICAgIDEwMCwzMywxMDEsNDAsMTAwLDU4LDE1NiwyLDEwMCw1OSwxMDAsNjAsMTMyLDMsOTAsNDEsCisgICAgNzEsMCwxMDAsNjEsMTAwLDYyLDEzMiwwLDEwMCw2MiwxMzEsMiw5MCw0Miw3MSwwLAorICAgIDEwMCw2MywxMDAsNjQsMTMyLDAsMTAwLDY0LDEzMSwyLDkwLDQzLDcxLDAsMTAwLDY1LAorICAgIDEwMCw2NiwxMzIsMCwxMDAsNjYsMTAxLDQzLDEzMSwzLDkwLDQ0LDcxLDAsMTAwLDY3LAorICAgIDEwMCw2OCwxMzIsMCwxMDAsNjgsMTMxLDIsOTAsNDUsNzEsMCwxMDAsNjksMTAwLDcwLAorICAgIDEzMiwwLDEwMCw3MCwxMDEsNDUsMTAxLDQ0LDEzMSw0LDkwLDQ2LDcxLDAsMTAwLDcxLAorICAgIDEwMCw3MiwxMzIsMCwxMDAsNzIsMTAxLDQ1LDEwMSw0MywxMzEsNCw5MCw0NywxMDMsMCwKKyAgICA5MCw0OCw3MSwwLDEwMCw3MywxMDAsNzQsMTMyLDAsMTAwLDc0LDEwMSw0NSwxMDEsNDMsCisgICAgMTMxLDQsOTAsNDksNzEsMCwxMDAsNzUsMTAwLDc2LDEzMiwwLDEwMCw3NiwxMzEsMiwKKyAgICA5MCw1MCw3MSwwLDEwMCw3NywxMDAsNzgsMTMyLDAsMTAwLDc4LDEzMSwyLDkwLDUxLAorICAgIDcxLDAsMTAwLDc5LDEwMCw4MCwxMzIsMCwxMDAsODAsMTMxLDIsOTAsNTIsNzEsMCwKKyAgICAxMDAsODEsMTAwLDgyLDEzMiwwLDEwMCw4MiwxMzEsMiw5MCw1MywxMDAsOTksMTAwLDgzLAorICAgIDEwMCw4NCwxMzIsMSw5MCw1NCwxMDAsODUsMTAwLDg2LDEzMiwwLDkwLDU1LDEwMCw4NywKKyAgICAxMDAsODgsMTMyLDAsOTAsNTYsMTAwLDg5LDEwMCw5MCwxMzIsMCw5MCw1NywxMDAsMzMsCisgICAgODMsMCw0MSwxMDAsOTcsOTQsMSwwLDAsNjcsMTExLDExNCwxMDEsMzIsMTA1LDEwOSwKKyAgICAxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsCisgICAgMTEyLDk3LDExNiwxMDQsNDUsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwKKyAgICAxMTYsNDYsMTAsMTAsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsCisgICAgMTA1LDExNSwzMiw3OCw3OSw4NCwzMiwxMDksMTAxLDk3LDExMCwxMTYsMzIsMTE2LDExMSwzMiwKKyAgICA5OCwxMDEsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMDgsMTIxLDMyLDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDEwMSwxMDAsMzMsMzIsNzMsMTE2LDMyLDEwNCw5NywxMTUsMzIsOTgsMTAxLDEwMSwKKyAgICAxMTAsMzIsMTAwLDEwMSwxMTUsMTA1LDEwMywxMTAsMTAxLDEwMCwzMiwxMTUsMTE3LDk5LDEwNCwxMCwKKyAgICAxMTYsMTA0LDk3LDExNiwzMiwxMDUsMTE2LDMyLDk5LDk3LDExMCwzMiw5OCwxMDEsMzIsOTgsCisgICAgMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDExMiwxMDEsMTAwLDMyLDEwNSwxMTAsMTE2LDExMSwKKyAgICAzMiw4MCwxMjEsMTE2LDEwNCwxMTEsMTEwLDMyLDk3LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsCisgICAgMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0NiwzMiw2NSwxMTUsMTAsMTE1LDExNyw5OSwxMDQsCisgICAgMzIsMTA1LDExNiwzMiwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDEwNSwxMTAsMTA2LDEwMSw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMTUsMTEyLAorICAgIDEwMSw5OSwxMDUsMTAyLDEwNSw5OSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsCisgICAgMTEwLDEwMCwzMiw5NywxMTYsMTE2LDExNCwxMDUsOTgsMTE3LDExNiwxMDEsMTE1LDMyLDEwNSwxMTAsCisgICAgMzIsMTExLDExNCwxMDAsMTAxLDExNCwzMiwxMTYsMTExLDEwLDExOSwxMTEsMTE0LDEwNyw0NiwzMiwKKyAgICA3OSwxMTAsMTAxLDMyLDExNSwxMDQsMTExLDExNywxMDgsMTAwLDMyLDExNywxMTUsMTAxLDMyLDEwNSwKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsMzIsOTcsMTE1LDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDExMiwxMTcsOTgsMTA4LDEwNSw5OSw0NSwxMDIsOTcsOTksMTA1LDExMCwxMDMsMzIsMTE4LDEwMSwKKyAgICAxMTQsMTE1LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDIxOCwzLDExOSwxMDUsMTEwLDIxOCw2LDk5LDEyMSwKKyAgICAxMDMsMTE5LDEwNSwxMTAsMjE4LDYsMTAwLDk3LDExNCwxMTksMTA1LDExMCw5OSwwLDAsMCwKKyAgICAwLDAsMCwwLDAsMSwwLDAsMCwzLDAsMCwwLDMsMCwwLAorICAgIDAsMTE1LDYwLDAsMCwwLDExNiwwLDEwNiwxLDEwNiwyLDExNiwzLDEzMSwxLAorICAgIDExNCw0OCwxMTYsMCwxMDYsMSwxMDYsMiwxMTYsNCwxMzEsMSwxMTQsMzAsMTAwLDEsCisgICAgMTM3LDAsMTEwLDQsMTAwLDIsMTM3LDAsMTM1LDAsMTAyLDEsMTAwLDMsMTAwLDQsCisgICAgMTMyLDgsMTI1LDAsMTEwLDgsMTAwLDUsMTAwLDQsMTMyLDAsMTI1LDAsMTI0LDAsCisgICAgODMsMCw0MSw2LDc4LDkwLDEyLDgwLDg5LDg0LDcyLDc5LDc4LDY3LDY1LDgzLAorICAgIDY5LDc5LDc1LDExNSwxMiwwLDAsMCw4MCw4OSw4NCw3Miw3OSw3OCw2Nyw2NSwKKyAgICA4Myw2OSw3OSw3NSw5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsCisgICAgMCwyLDAsMCwwLDE5LDAsMCwwLDExNSwxMCwwLDAsMCwxMzYsMCwKKyAgICAxMTYsMCwxMDYsMSwxMDcsNiw4MywwLDQxLDEsMTIyLDUzLDg0LDExNCwxMTcsMTAxLAorICAgIDMyLDEwNSwxMDIsMzIsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNSwzMiwxMDksMTE3LAorICAgIDExNSwxMTYsMzIsOTgsMTAxLDMyLDk5LDEwNCwxMDEsOTksMTA3LDEwMSwxMDAsMzIsOTksOTcsCisgICAgMTE1LDEwMSw0NSwxMDUsMTEwLDExNSwxMDEsMTEwLDExNSwxMDUsMTE2LDEwNSwxMTgsMTAxLDEwOCwxMjEsCisgICAgNDYsNDEsMiwyMTgsMyw5NSwxMTEsMTE1LDkwLDcsMTAxLDExMCwxMTgsMTA1LDExNCwxMTEsCisgICAgMTEwLDE2OSwwLDQxLDEsMjE4LDMsMTA3LDEwMSwxMjEsMTE0LDQsMCwwLDAsMjUwLAorICAgIDM4LDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwKKyAgICAxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDk1LDEwMSwxMjAsCisgICAgMTE2LDEwMSwxMTQsMTEwLDk3LDEwOCw2MiwyMTgsMTEsOTUsMTE0LDEwMSwxMDgsOTcsMTIwLDk1LAorICAgIDk5LDk3LDExNSwxMDEsMzcsMCwwLDAsMTE1LDIsMCwwLDAsMCwyLDEyMiwKKyAgICAzNyw5NSwxMDksOTcsMTA3LDEwMSw5NSwxMTQsMTAxLDEwOCw5NywxMjAsOTUsOTksOTcsMTE1LAorICAgIDEwMSw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsOTUsMTE0LDEwMSwxMDgsOTcsCisgICAgMTIwLDk1LDk5LDk3LDExNSwxMDEsOTksMCwwLDAsMCwwLDAsMCwwLDAsCisgICAgMCwwLDAsMSwwLDAsMCw4MywwLDAsMCwxMTUsNCwwLDAsMCwKKyAgICAxMDAsMSw4MywwLDQxLDIsMTIyLDUzLDg0LDExNCwxMTcsMTAxLDMyLDEwNSwxMDIsMzIsCisgICAgMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNSwzMiwxMDksMTE3LDExNSwxMTYsMzIsOTgsCisgICAgMTAxLDMyLDk5LDEwNCwxMDEsOTksMTA3LDEwMSwxMDAsMzIsOTksOTcsMTE1LDEwMSw0NSwxMDUsCisgICAgMTEwLDExNSwxMDEsMTEwLDExNSwxMDUsMTE2LDEwNSwxMTgsMTAxLDEwOCwxMjEsNDYsNzAsMTE0LDQsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDYsMCwwLDAsMTE0LDcsMCwwLDAsNDEsMCwwLDAsCisgICAgMTE1LDIsMCwwLDAsMCwyLDQxLDUsMjE4LDMsMTE1LDEyMSwxMTUsMjE4LDgsCisgICAgMTEyLDEwOCw5NywxMTYsMTAyLDExMSwxMTQsMTA5LDIxOCwxMCwxMTUsMTE2LDk3LDExNCwxMTYsMTE1LAorICAgIDExOSwxMDUsMTE2LDEwNCwyMTgsMjcsOTUsNjcsNjUsODMsNjksOTUsNzMsNzgsODMsNjksCisgICAgNzgsODMsNzMsODQsNzMsODYsNjksOTUsODAsNzYsNjUsODQsNzAsNzksODIsNzcsCisgICAgODMsMjE4LDM1LDk1LDY3LDY1LDgzLDY5LDk1LDczLDc4LDgzLDY5LDc4LDgzLDczLAorICAgIDg0LDczLDg2LDY5LDk1LDgwLDc2LDY1LDg0LDcwLDc5LDgyLDc3LDgzLDk1LDgzLAorICAgIDg0LDgyLDk1LDc1LDY5LDg5LDQxLDEsMTE0LDcsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsNDEsMSwxMTQsNSwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTYsCisgICAgOTUsMTA5LDk3LDEwNywxMDEsOTUsMTE0LDEwMSwxMDgsOTcsMTIwLDk1LDk5LDk3LDExNSwxMDEsCisgICAgMzAsMCwwLDAsMTE1LDE0LDAsMCwwLDAsMSwxMiwxLDEyLDEsNiwKKyAgICAyLDQsMiwxNCw0LDgsMywxMTQsMTMsMCwwLDAsOTksMSwwLDAsCiAgICAgMCwwLDAsMCwwLDEsMCwwLDAsMywwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsMTMsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEwMCwxLDAsMTMxLAotICAgIDIsMCw4Myw0MSwyLDEyMiwzMSw4MiwxMDEsMTEyLDEwOCw5Nyw5OSwxMDEsMTA5LDEwMSwKLSAgICAxMTAsMTE2LDMyLDEwMiwxMTEsMTE0LDMyLDExMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsNDYsMTA1LAotICAgIDExNSwxMDIsMTA1LDEwOCwxMDEsNDYsMTA1LDAsMTI4LDAsMCw0MSwxLDExNCw0NSwwLAotICAgIDAsMCw0MSwxLDExNCwzNywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTIsOTUsMTEyLDk3LDExNiwxMDQsOTUsCi0gICAgMTA1LDExNSwxMDIsMTA1LDEwOCwxMDEsOTQsMCwwLDAsMTE1LDIsMCwwLDAsMCwKLSAgICAyLDExNCw0NiwwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsMSwKLSAgICAwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwzMSwwLDAsMCwKLSAgICAxMjQsMCwwLDExNSwxOCwwLDExNiwwLDAsMTA2LDEsMCwxMzEsMCwwLDEyNSwKLSAgICAwLDAsMTE2LDIsMCwxMjQsMCwwLDEwMCwxLDAsMTMxLDIsMCw4Myw0MSwKLSAgICAyLDEyMiwzMCw4MiwxMDEsMTEyLDEwOCw5Nyw5OSwxMDEsMTA5LDEwMSwxMTAsMTE2LDMyLDEwMiwKLSAgICAxMTEsMTE0LDMyLDExMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsNDYsMTA1LDExNSwxMDAsMTA1LDExNCwKLSAgICA0NiwxMDUsMCw2NCwwLDAsNDEsMywxMTQsMywwLDAsMCwyMTgsNiwxMDMsCi0gICAgMTAxLDExNiw5OSwxMTksMTAwLDExNCw0NSwwLDAsMCw0MSwxLDExNCwzNywwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKLSAgICAyMTgsMTEsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDExNSwxMDAsMTA1LDExNCw5OSwwLDAsCi0gICAgMCwxMTUsNiwwLDAsMCwwLDIsNiwxLDEyLDEsMTE0LDQ4LDAsMCwKLSAgICAwLDEwNSwxODIsMSwwLDAsOTksMywwLDAsMCwwLDAsMCwwLDYsCi0gICAgMCwwLDAsMTcsMCwwLDAsNjcsMCwwLDAsMTE1LDE5MywwLDAsMCwKLSAgICAxMDAsMSwwLDEwNiwwLDAsMTI0LDAsMCwxMTYsMSwwLDEyNCwwLDAsMTMxLAotICAgIDEsMCwxMzEsMiwwLDEyNSwzLDAsMTE2LDIsMCwxMDYsMywwLDEyNCwzLAotICAgIDAsMTE2LDIsMCwxMDYsNCwwLDExNiwyLDAsMTA2LDUsMCw2NiwxMTYsMiwKLSAgICAwLDEwNiw2LDAsNjYsMTI0LDIsMCwxMDAsMiwwLDY0LDEzMSwzLDAsMTI1LAotICAgIDQsMCwxMjEsNjEsMCwxMTYsNywwLDEwNiw4LDAsMTI0LDQsMCwxMDAsMywKLSAgICAwLDEzMSwyLDAsMTQzLDIwLDAsMTI1LDUsMCwxMjQsNSwwLDEwNiw5LDAsCi0gICAgMTI0LDEsMCwxMzEsMSwwLDEsODcsMTAwLDQsMCw4MSw4Miw4OCwxMTYsMiwKLSAgICAwLDEwNiwxMCwwLDEyNCwzLDAsMTI0LDAsMCwxMzEsMiwwLDEsODcsMTEwLAotICAgIDU5LDAsNCwxMTYsMTEsMCwxMDcsMTAsMCwxMTQsMTg4LDAsMSwxLDEsMTIxLAotICAgIDE3LDAsMTE2LDIsMCwxMDYsMTIsMCwxMjQsMywwLDEzMSwxLDAsMSw4NywKLSAgICAxMTAsMTgsMCw0LDExNiwxMSwwLDEwNywxMCwwLDExNCwxODAsMCwxLDEsMSwKLSAgICA4OSwxMTAsMSwwLDg4LDEzMCwwLDAsODksMTEwLDEsMCw4OCwxMDAsNCwwLAotICAgIDgzLDQxLDUsMTIyLDE2Miw2NiwxMDEsMTE1LDExNiw0NSwxMDEsMTAyLDEwMiwxMTEsMTE0LDExNiwKLSAgICAzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMTE2LDExMSwzMiwxMTksMTE0LDEwNSwKLSAgICAxMTYsMTAxLDMyLDEwMCw5NywxMTYsOTcsMzIsMTE2LDExMSwzMiw5NywzMiwxMTIsOTcsMTE2LAotICAgIDEwNCwzMiw5NywxMTYsMTExLDEwOSwxMDUsOTksOTcsMTA4LDEwOCwxMjEsNDYsMTAsMzIsMzIsCi0gICAgMzIsMzIsNjYsMTAxLDMyLDExMiwxMTQsMTAxLDExMiw5NywxMTQsMTAxLDEwMCwzMiwxMTYsMTExLAotICAgIDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsMzIsOTcsMzIsNzAsMTA1LDEwOCwxMDEsNjksMTIwLAotICAgIDEwNSwxMTUsMTE2LDExNSw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTA1LDEwMiwzMiw5OSwxMTEsMTEwLAotICAgIDk5LDExNywxMTQsMTE0LDEwMSwxMTAsMTE2LDMyLDExOSwxMTQsMTA1LDExNiwxMDUsMTEwLDEwMywzMiwKLSAgICAxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDExNiwxMDEsMTA5LDExMiwxMTEsCi0gICAgMTE0LDk3LDExNCwxMjEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwNSwxMTUsMzIsOTcsMTE2LDExNiwKLSAgICAxMDEsMTA5LDExMiwxMTYsMTAxLDEwMCw0NiwxMjIsNSwxMjMsMTI1LDQ2LDEyMywxMjUsMTA1LDE4MiwKLSAgICAxLDAsMCw5MCwyLDExOSw5OCw3OCw0MSwxMywyMTgsNiwxMDIsMTExLDExNCwxMDksCi0gICAgOTcsMTE2LDIxOCwyLDEwNSwxMDAsMTE0LDMsMCwwLDAsOTAsNCwxMTEsMTEyLDEwMSwKLSAgICAxMTAsOTAsNiw3OSw5NSw2OSw4OCw2Nyw3Niw5MCw3LDc5LDk1LDY3LDgyLDY5LAotICAgIDY1LDg0LDkwLDgsNzksOTUsODcsODIsNzksNzgsNzYsODksMjE4LDMsOTUsMTA1LAotICAgIDExMSwyMTgsNiw3MCwxMDUsMTA4LDEwMSw3Myw3OSwyMTgsNSwxMTksMTE0LDEwNSwxMTYsMTAxLAotICAgIDIxOCw3LDExNCwxMDEsMTEyLDEwOCw5Nyw5OSwxMDEsMTE0LDQyLDAsMCwwLDkwLDYsCi0gICAgMTE3LDExMCwxMDgsMTA1LDExMCwxMDcsNDEsNiwxMTQsMzcsMCwwLDAsMjE4LDQsMTAwLAotICAgIDk3LDExNiw5NywxMTQsNDQsMCwwLDAsOTAsOCwxMTIsOTcsMTE2LDEwNCw5NSwxMTYsCi0gICAgMTA5LDExMiw5MCwyLDEwMiwxMDAsMjE4LDQsMTAyLDEwNSwxMDgsMTAxLDExNCw0LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMyw5NSwxMTksMTE0LAotICAgIDEwNSwxMTYsMTAxLDk1LDk3LDExNiwxMTEsMTA5LDEwNSw5OSwxMDYsMCwwLDAsMTE1LDI2LAotICAgIDAsMCwwLDAsNSwyNCwxLDksMSwzMywxLDMsMywyMSwxLDIwLAotICAgIDEsMjAsMSwxMywxLDMsMSwxNywxLDEzLDEsNSwxLDExNCw1NywwLAotICAgIDAsMCwxMDUsMjMsMTMsMCwwLDIzMywyLDAsMCwwLDExNCwxNSwwLDAsCi0gICAgMCwxMTUsMiwwLDAsMCwxMywxMCw5MCwxMSw5NSw5NSwxMTIsMTIxLDk5LDk3LAotICAgIDk5LDEwNCwxMDEsOTUsOTUsMTIyLDQsMTExLDExMiwxMTYsNDUsMTIyLDMsNDYsMTEyLDEyMSwKLSAgICAxMjIsNCw0NiwxMTIsMTIxLDk5LDc4LDIxOCwxMiwxMTEsMTEyLDExNiwxMDUsMTA5LDEwNSwxMjIsCisgICAgMCwxMTUsMjAsMCwwLDAsMTE2LDAsMTI0LDAsMTMxLDEsMTAwLDEsNjQsMCwKKyAgICAxMDYsMSwxMDAsMiwxMDAsMywxMzEsMiw4MywwLDQxLDQsMTIyLDQyLDY3LDExMSwKKyAgICAxMTAsMTE4LDEwMSwxMTQsMTE2LDMyLDk3LDMyLDUxLDUwLDQ1LDk4LDEwNSwxMTYsMzIsMTA1LAorICAgIDExMCwxMTYsMTAxLDEwMywxMDEsMTE0LDMyLDExNiwxMTEsMzIsMTA4LDEwNSwxMTYsMTE2LDEwOCwxMDEsCisgICAgNDUsMTAxLDExMCwxMDAsMTA1LDk3LDExMCw0NiwxMDgsMywwLDAsMCwyNTUsMTI3LDI1NSwKKyAgICAxMjcsMywwLDIzMyw0LDAsMCwwLDIxOCw2LDEwOCwxMDUsMTE2LDExNiwxMDgsMTAxLAorICAgIDQxLDIsMjE4LDMsMTA1LDExMCwxMTYsMjE4LDgsMTE2LDExMSw5NSw5OCwxMjEsMTE2LDEwMSwKKyAgICAxMTUsNDEsMSwyMTgsMSwxMjAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDYsMCwwLDAsMjE4LDcsOTUsMTE5LDk1LDEwOCwxMTEsMTEwLDEwMyw0NywwLAorICAgIDAsMCwxMTUsMiwwLDAsMCwwLDIsMTE0LDE5LDAsMCwwLDk5LDEsCisgICAgMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDMsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDEyLDAsMCwwLDExNiwwLDEwNiwxLDEyNCwwLDEwMCwxLAorICAgIDEzMSwyLDgzLDAsNDEsMiwxMjIsNDcsNjcsMTExLDExMCwxMTgsMTAxLDExNCwxMTYsMzIsCisgICAgNTIsMzIsOTgsMTIxLDExNiwxMDEsMTE1LDMyLDEwNSwxMTAsMzIsMTA4LDEwNSwxMTYsMTE2LDEwOCwKKyAgICAxMDEsNDUsMTAxLDExMCwxMDAsMTA1LDk3LDExMCwzMiwxMTYsMTExLDMyLDk3LDExMCwzMiwxMDUsCisgICAgMTEwLDExNiwxMDEsMTAzLDEwMSwxMTQsNDYsMTE0LDE1LDAsMCwwLDQxLDIsMTE0LDE2LAorICAgIDAsMCwwLDIxOCwxMCwxMDIsMTE0LDExMSwxMDksOTUsOTgsMTIxLDExNiwxMDEsMTE1LDQxLAorICAgIDEsOTAsOSwxMDUsMTEwLDExNiw5NSw5OCwxMjEsMTE2LDEwMSwxMTUsMTE0LDQsMCwwLAorICAgIDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDcsOTUsMTE0LDk1LAorICAgIDEwOCwxMTEsMTEwLDEwMyw1MiwwLDAsMCwxMTUsMiwwLDAsMCwwLDIsMTE0LAorICAgIDIxLDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwxLDAsMCwKKyAgICAwLDMsMCwwLDAsNzEsMCwwLDAsMTE1LDIwLDAsMCwwLDExNiwwLAorICAgIDEwNiwxLDEwMCwxLDEwMCwyLDEzMiwwLDEyNCwwLDY4LDAsMTMxLDEsMTMxLDEsCisgICAgODMsMCw0MSwzLDEyMiwzMSw4MiwxMDEsMTEyLDEwOCw5Nyw5OSwxMDEsMTA5LDEwMSwxMTAsCisgICAgMTE2LDMyLDEwMiwxMTEsMTE0LDMyLDExMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsNDYsMTA2LDExMSwKKyAgICAxMDUsMTEwLDQwLDQxLDQ2LDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsCisgICAgMCwwLDQsMCwwLDAsODMsMCwwLDAsMTE1LDI2LDAsMCwwLDEwMywKKyAgICAwLDEyNCwwLDkzLDE4LDEyNSwxLDEyNCwxLDExNCw0LDEyNCwxLDEwNiwwLDExNiwKKyAgICAxLDEzMSwxLDE0NSwyLDExMyw0LDgzLDAsMTE0LDQsMCwwLDAsNDEsMiwKKyAgICAyMTgsNiwxMTQsMTE1LDExNiwxMTQsMTA1LDExMiwyMTgsMTUsMTEyLDk3LDExNiwxMDQsOTUsMTE1LAorICAgIDEwMSwxMTIsOTcsMTE0LDk3LDExNiwxMTEsMTE0LDExNSw0MSwyLDIxOCwyLDQ2LDQ4LDIxOCwKKyAgICA0LDExMiw5NywxMTQsMTE2LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA2LDAsMCwwLDI1MCwxMCw2MCwxMDgsMTA1LDExNSwxMTYsOTksMTExLDEwOSwxMTIsNjIsCisgICAgNTksMCwwLDAsMTE1LDIsMCwwLDAsNiwxLDEyMiwzMCw5NSwxMTIsOTcsCisgICAgMTE2LDEwNCw5NSwxMDYsMTExLDEwNSwxMTAsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLAorICAgIDQ2LDYwLDEwOCwxMDUsMTE1LDExNiw5OSwxMTEsMTA5LDExMiw2Miw0MSwyLDIxOCw4LDExMiwKKyAgICA5NywxMTYsMTA0LDk1LDExNSwxMDEsMTEyLDIxOCw0LDEwNiwxMTEsMTA1LDExMCw0MSwxLDIxOCwKKyAgICAxMCwxMTIsOTcsMTE2LDEwNCw5NSwxMTIsOTcsMTE0LDExNiwxMTUsMTE0LDQsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDEwLDk1LDExMiw5NywxMTYsCisgICAgMTA0LDk1LDEwNiwxMTEsMTA1LDExMCw1NywwLDAsMCwxMTUsNCwwLDAsMCwwLAorICAgIDIsMTAsMSwxMTQsMzAsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwKKyAgICAwLDUsMCwwLDAsNSwwLDAsMCw2NywwLDAsMCwxMTUsOTYsMCwKKyAgICAwLDAsMTE2LDAsMTE2LDEsMTMxLDEsMTAwLDEsMTA3LDIsMTE0LDM2LDEyNCwwLAorICAgIDEwNiwyLDExNiwzLDEzMSwxLDkyLDMsMTI1LDEsMTI1LDIsMTI1LDMsMTI0LDEsCisgICAgMTI0LDMsMTAyLDIsODMsMCwxMjAsNTAsMTE2LDQsMTI0LDAsMTMxLDEsNjgsMCwKKyAgICA5MywzOCwxMjUsNCwxMjQsNCwxMTYsMSwxMDcsNiwxMTQsNDYsMTI0LDAsMTA2LDUsCisgICAgMTI0LDQsMTAwLDEsMTAwLDIsMTQxLDIsOTIsMiwxMjUsMSwxMjUsMywxMjQsMSwKKyAgICAxMjQsMywxMDIsMiw4MywwLDExMyw0Niw4NywwLDEwMCwzLDEyNCwwLDEwMiwyLAorICAgIDgzLDAsNDEsNCwxMjIsMzIsODIsMTAxLDExMiwxMDgsOTcsOTksMTAxLDEwOSwxMDEsMTEwLAorICAgIDExNiwzMiwxMDIsMTExLDExNCwzMiwxMTEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDQ2LDExNSwxMTIsCisgICAgMTA4LDEwNSwxMTYsNDAsNDEsNDYsMjMzLDEsMCwwLDAsNDEsMSw5MCw4LDEwOSwKKyAgICA5NywxMjAsMTE1LDExMiwxMDgsMTA1LDExNiwyMTgsMCw0MSw2LDIxOCwzLDEwOCwxMDEsMTEwLAorICAgIDExNCwyMywwLDAsMCwyMTgsMTAsMTE0LDExMiw5NywxMTQsMTE2LDEwNSwxMTYsMTA1LDExMSwKKyAgICAxMTAsMTE0LDI3LDAsMCwwLDIxOCw4LDExNCwxMDEsMTE4LDEwMSwxMTQsMTE1LDEwMSwxMDAsCisgICAgMjE4LDYsMTE0LDExNSwxMTIsMTA4LDEwNSwxMTYsNDEsNSwyMTgsNCwxMTIsOTcsMTE2LDEwNCwKKyAgICA5MCw1LDEwMiwxMTQsMTExLDExMCwxMTYsMjE4LDEsOTUsMjE4LDQsMTE2LDk3LDEwNSwxMDgsCisgICAgMTE0LDE4LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA2LDAsMCwwLDIxOCwxMSw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTEyLDEwOCwxMDUsCisgICAgMTE2LDYzLDAsMCwwLDExNSwxNiwwLDAsMCwwLDIsMTIsMSwxNiwxLAorICAgIDgsMSwxNCwxLDgsMSwxOCwxLDEyLDEsMTE0LDQwLDAsMCwwLDk5LAorICAgIDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDIsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDEwLDAsMCwwLDExNiwwLDEwNiwxLDEyNCwwLDEzMSwKKyAgICAxLDgzLDAsNDEsMSwxMjIsMTI2LDgzLDExNiw5NywxMTYsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgMTEyLDk3LDExNiwxMDQsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzcsOTcsMTAwLDEwMSwzMiwKKyAgICA5NywzMiwxMTUsMTAxLDExMiw5NywxMTQsOTcsMTE2LDEwMSwzMiwxMDIsMTE3LDExMCw5OSwxMTYsCisgICAgMTA1LDExMSwxMTAsMzIsMTE2LDExMSwzMiwxMDksOTcsMTA3LDEwMSwzMiwxMDUsMTE2LDMyLDEwMSwKKyAgICA5NywxMTUsMTA1LDEwMSwxMTQsMzIsMTE2LDExMSwzMiwxMTEsMTE4LDEwMSwxMTQsMTE0LDEwNSwxMDAsCisgICAgMTAxLDMyLDEwNSwxMTAsMzIsMTAxLDEyMCwxMTIsMTAxLDExNCwxMDUsMTA5LDEwMSwxMTAsMTE2LDExNSwKKyAgICAxMCwzMiwzMiwzMiwzMiw0MCwxMDEsNDYsMTAzLDQ2LDMyLDk5LDk3LDk5LDEwNCwxMDEsCisgICAgMzIsMTE1LDExNiw5NywxMTYsMzIsMTE0LDEwMSwxMTUsMTE3LDEwOCwxMTYsMTE1LDQxLDQ2LDEwLAorICAgIDEwLDMyLDMyLDMyLDMyLDQxLDIsMTE0LDMsMCwwLDAsOTAsNCwxMTUsMTE2LAorICAgIDk3LDExNiw0MSwxLDExNCwzNywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKKyAgICAwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTAsOTUsMTEyLDk3LDExNiwxMDQsOTUsCisgICAgMTE1LDExNiw5NywxMTYsNzUsMCwwLDAsMTE1LDIsMCwwLDAsMCw3LDExNCwKKyAgICA0MSwwLDAsMCw5OSwyLDAsMCwwLDAsMCwwLDAsMywwLDAsCisgICAgMCwxMSwwLDAsMCw2NywwLDAsMCwxMTUsNDgsMCwwLDAsMTIxLDEyLAorICAgIDExNiwwLDEyNCwwLDEzMSwxLDEyNSwyLDg3LDAsMTEwLDIwLDQsMCwxMTYsMSwKKyAgICAxMDcsMTAsMTE0LDMyLDEsMCwxLDAsMSwwLDEwMCwxLDgzLDAsODgsMCwKKyAgICAxMjQsMiwxMDYsMiwxMDAsMiw2NCwwLDEyNCwxLDEwNywyLDgzLDAsNDEsMywKKyAgICAxMjIsNDksODQsMTAxLDExNSwxMTYsMzIsMTE5LDEwNCwxMDEsMTE2LDEwNCwxMDEsMTE0LDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LAorICAgIDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwzMiwxMDksMTExLDEwMCwxMDEsMzIsMTE2LDEyMSwKKyAgICAxMTIsMTAxLDQ2LDcwLDEwNSwwLDI0MCwwLDAsNDEsMywxMTQsNDEsMCwwLDAsCisgICAgMjE4LDcsNzksODMsNjksMTE0LDExNCwxMTEsMTE0LDIxOCw3LDExNSwxMTYsOTUsMTA5LDExMSwKKyAgICAxMDAsMTAxLDQxLDMsMTE0LDM3LDAsMCwwLDIxOCw0LDEwOSwxMTEsMTAwLDEwMSw5MCwKKyAgICA5LDExNSwxMTYsOTcsMTE2LDk1LDEwNSwxMTAsMTAyLDExMSwxMTQsNCwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTgsOTUsMTEyLDk3LDExNiwxMDQsCisgICAgOTUsMTA1LDExNSw5NSwxMDksMTExLDEwMCwxMDEsOTUsMTE2LDEyMSwxMTIsMTAxLDg1LDAsMCwKKyAgICAwLDExNSwxMCwwLDAsMCwwLDIsMiwxLDEyLDEsMTQsMSw2LDEsCisgICAgMTE0LDQ1LDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsCisgICAgMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDEwLDAsMCwwLDExNiwKKyAgICAwLDEyNCwwLDEwMCwxLDEzMSwyLDgzLDAsNDEsMiwxMjIsMzEsODIsMTAxLDExMiwKKyAgICAxMDgsOTcsOTksMTAxLDEwOSwxMDEsMTEwLDExNiwzMiwxMDIsMTExLDExNCwzMiwxMTEsMTE1LDQ2LAorICAgIDExMiw5NywxMTYsMTA0LDQ2LDEwNSwxMTUsMTAyLDEwNSwxMDgsMTAxLDQ2LDEwNSwwLDEyOCwwLAorICAgIDAsNDEsMSwxMTQsNDUsMCwwLDAsNDEsMSwxMTQsMzcsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDEyLAorICAgIDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMTUsMTAyLDEwNSwxMDgsMTAxLDk0LDAsMCwwLAorICAgIDExNSwyLDAsMCwwLDAsMiwxMTQsNDYsMCwwLDAsOTksMSwwLDAsCisgICAgMCwwLDAsMCwwLDEsMCwwLDAsMywwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsMjIsMCwwLDAsMTI0LDAsMTE1LDEyLDExNiwwLDEwNiwxLDEzMSwwLAorICAgIDEyNSwwLDExNiwyLDEyNCwwLDEwMCwxLDEzMSwyLDgzLDAsNDEsMiwxMjIsMzAsCisgICAgODIsMTAxLDExMiwxMDgsOTcsOTksMTAxLDEwOSwxMDEsMTEwLDExNiwzMiwxMDIsMTExLDExNCwzMiwKKyAgICAxMTEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDQ2LDEwNSwxMTUsMTAwLDEwNSwxMTQsNDYsMTA1LDAsCisgICAgNjQsMCwwLDQxLDMsMTE0LDMsMCwwLDAsMjE4LDYsMTAzLDEwMSwxMTYsOTksCisgICAgMTE5LDEwMCwxMTQsNDUsMCwwLDAsNDEsMSwxMTQsMzcsMCwwLDAsMTE0LDQsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDExLDk1LAorICAgIDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMTUsMTAwLDEwNSwxMTQsOTksMCwwLDAsMTE1LDYsCisgICAgMCwwLDAsMCwyLDQsMSw4LDEsMTE0LDQ4LDAsMCwwLDIzMywxODIsCisgICAgMSwwLDAsOTksMywwLDAsMCwwLDAsMCwwLDYsMCwwLDAsCisgICAgMTcsMCwwLDAsNjcsMCwwLDAsMTE1LDE2MiwwLDAsMCwxMDAsMSwxMDYsCisgICAgMCwxMjQsMCwxMTYsMSwxMjQsMCwxMzEsMSwxMzEsMiwxMjUsMywxMTYsMiwxMDYsCisgICAgMywxMjQsMywxMTYsMiwxMDYsNCwxMTYsMiwxMDYsNSw2NiwwLDExNiwyLDEwNiwKKyAgICA2LDY2LDAsMTI0LDIsMTAwLDIsNjQsMCwxMzEsMywxMjUsNCwxMjEsNTAsMTE2LAorICAgIDcsMTA2LDgsMTI0LDQsMTAwLDMsMTMxLDIsMTQzLDE2LDEyNSw1LDEyNCw1LDEwNiwKKyAgICA5LDEyNCwxLDEzMSwxLDEsMCw4NywwLDEwMCw0LDgxLDAsODIsMCw4OCwKKyAgICAwLDExNiwyLDEwNiwxMCwxMjQsMywxMjQsMCwxMzEsMiwxLDAsODcsMCwxMTAsCisgICAgNTgsNCwwLDExNiwxMSwxMDcsMTAsMTE0LDE1NiwxLDAsMSwwLDEsMCwxMjEsCisgICAgMTQsMTE2LDIsMTA2LDEyLDEyNCwzLDEzMSwxLDEsMCw4NywwLDExMCwyMCw0LAorICAgIDAsMTE2LDExLDEwNywxMCwxMTQsMTQ4LDEsMCwxLDAsMSwwLDg5LDAsMTEwLAorICAgIDIsODgsMCwxMzAsMCw4OSwwLDExMCwyLDg4LDAsMTAwLDQsODMsMCw0MSwKKyAgICA1LDEyMiwxNjIsNjYsMTAxLDExNSwxMTYsNDUsMTAxLDEwMiwxMDIsMTExLDExNCwxMTYsMzIsMTAyLAorICAgIDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDMyLDExNiwxMTEsMzIsMTE5LDExNCwxMDUsMTE2LDEwMSwKKyAgICAzMiwxMDAsOTcsMTE2LDk3LDMyLDExNiwxMTEsMzIsOTcsMzIsMTEyLDk3LDExNiwxMDQsMzIsCisgICAgOTcsMTE2LDExMSwxMDksMTA1LDk5LDk3LDEwOCwxMDgsMTIxLDQ2LDEwLDMyLDMyLDMyLDMyLAorICAgIDY2LDEwMSwzMiwxMTIsMTE0LDEwMSwxMTIsOTcsMTE0LDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDQsCisgICAgOTcsMTEwLDEwMCwxMDgsMTAxLDMyLDk3LDMyLDcwLDEwNSwxMDgsMTAxLDY5LDEyMCwxMDUsMTE1LAorICAgIDExNiwxMTUsNjksMTE0LDExNCwxMTEsMTE0LDMyLDEwNSwxMDIsMzIsOTksMTExLDExMCw5OSwxMTcsCisgICAgMTE0LDExNCwxMDEsMTEwLDExNiwzMiwxMTksMTE0LDEwNSwxMTYsMTA1LDExMCwxMDMsMzIsMTExLDEwMiwKKyAgICAzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwxMTYsMTAxLDEwOSwxMTIsMTExLDExNCw5NywKKyAgICAxMTQsMTIxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDk3LDExNiwxMTYsMTAxLDEwOSwKKyAgICAxMTIsMTE2LDEwMSwxMDAsNDYsMTIyLDUsMTIzLDEyNSw0NiwxMjMsMTI1LDEwNSwxODIsMSwwLAorICAgIDAsOTAsMiwxMTksOTgsNzgsNDEsMTMsMjE4LDYsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwKKyAgICAyMTgsMiwxMDUsMTAwLDExNCwzLDAsMCwwLDkwLDQsMTExLDExMiwxMDEsMTEwLDkwLAorICAgIDYsNzksOTUsNjksODgsNjcsNzYsOTAsNyw3OSw5NSw2Nyw4Miw2OSw2NSw4NCwKKyAgICA5MCw4LDc5LDk1LDg3LDgyLDc5LDc4LDc2LDg5LDIxOCwzLDk1LDEwNSwxMTEsMjE4LAorICAgIDYsNzAsMTA1LDEwOCwxMDEsNzMsNzksMjE4LDUsMTE5LDExNCwxMDUsMTE2LDEwMSwyMTgsNywKKyAgICAxMTQsMTAxLDExMiwxMDgsOTcsOTksMTAxLDExNCw0MiwwLDAsMCw5MCw2LDExNywxMTAsCisgICAgMTA4LDEwNSwxMTAsMTA3LDQxLDYsMTE0LDM3LDAsMCwwLDIxOCw0LDEwMCw5NywxMTYsCisgICAgOTcsMTE0LDQ0LDAsMCwwLDkwLDgsMTEyLDk3LDExNiwxMDQsOTUsMTE2LDEwOSwxMTIsCisgICAgOTAsMiwxMDIsMTAwLDIxOCw0LDEwMiwxMDUsMTA4LDEwMSwxMTQsNCwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTMsOTUsMTE5LDExNCwxMDUsMTE2LAorICAgIDEwMSw5NSw5NywxMTYsMTExLDEwOSwxMDUsOTksMTA2LDAsMCwwLDExNSwyNiwwLDAsCisgICAgMCwwLDUsMTYsMSw2LDEsMjYsMSwyLDMsMTQsMSwyMCwxLDE2LAorICAgIDEsMTQsMSwyLDEsMTQsMSwxNCwxLDYsMSwxMTQsNTgsMCwwLDAsCisgICAgMTA1LDUxLDEzLDAsMCwyMzMsMiwwLDAsMCwxMTQsMTUsMCwwLDAsMTE1LAorICAgIDIsMCwwLDAsMTMsMTAsOTAsMTEsOTUsOTUsMTEyLDEyMSw5OSw5Nyw5OSwxMDQsCisgICAgMTAxLDk1LDk1LDEyMiw0LDExMSwxMTIsMTE2LDQ1LDEyMiwzLDQ2LDExMiwxMjEsMTIyLDQsCisgICAgNDYsMTEyLDEyMSw5OSw3OCw0MSwxLDIxOCwxMiwxMTEsMTEyLDExNiwxMDUsMTA5LDEwNSwxMjIsCiAgICAgOTcsMTE2LDEwNSwxMTEsMTEwLDk5LDIsMCwwLDAsMSwwLDAsMCwxMSwwLAotICAgIDAsMCw2LDAsMCwwLDY3LDAsMCwwLDExNSw4NywxLDAsMCwxMjQsCi0gICAgMSwwLDEwMCwxLDAsMTA3LDksMCwxMTQsNzYsMCwxMTYsMCwwLDEwNiwxLAotICAgIDAsMTAwLDIsMCwxMTYsMiwwLDEzMSwyLDAsMSwxMjQsMiwwLDEwMCwxLAotICAgIDAsMTA3LDksMCwxMTQsNTgsMCwxMDAsMywwLDEyNSwzLDAsMTE2LDMsMCwKLSAgICAxMjQsMywwLDEzMSwxLDAsMTMwLDEsMCwxMjQsMSwwLDExNCw3MCwwLDEwMCwKLSAgICA0LDAsMTEwLDMsMCwxMDAsNSwwLDEyNSwyLDAsMTE2LDQsMCwxMjQsMCwKLSAgICAwLDEzMSwxLDAsOTIsMiwwLDEyNSw0LDAsMTI1LDUsMCwxMjQsNSwwLAotICAgIDEwNiw1LDAsMTAwLDYsMCwxMzEsMSwwLDkyLDMsMCwxMjUsNiwwLDEyNSwKLSAgICA3LDAsMTI1LDgsMCwxMTYsNiwwLDEwNiw3LDAsMTA2LDgsMCwxMjUsOSwKLSAgICAwLDEyNCw5LDAsMTAwLDEsMCwxMDcsOCwwLDExNCwxNTQsMCwxMTYsOSwwLAotICAgIDEwMCw3LDAsMTMxLDEsMCwxMzAsMSwwLDEwMCw0LDAsMTA2LDEwLDAsMTI0LAotICAgIDYsMCwxMTQsMTcyLDAsMTI0LDYsMCwxMTAsMywwLDEyNCw4LDAsMTI0LDcsCi0gICAgMCwxMjQsOSwwLDEwMywzLDAsMTMxLDEsMCwxMjUsMTAsMCwxMjQsMiwwLAotICAgIDEwMCwxLDAsMTA3LDgsMCwxMTQsMjQxLDAsMTE2LDYsMCwxMDYsMTEsMCwxMDYsCi0gICAgMTIsMCwxMDAsOCwwLDEwNywyLDAsMTE0LDIyOSwwLDEwMCw0LDAsMTI1LDIsCi0gICAgMCwxMTAsMTIsMCwxMTYsNiwwLDEwNiwxMSwwLDEwNiwxMiwwLDEyNSwyLDAsCi0gICAgMTE2LDEzLDAsMTI0LDIsMCwxMzEsMSwwLDEyNSwyLDAsMTI0LDIsMCwxMDAsCi0gICAgNCwwLDEwNywzLDAsMTE0LDYzLDEsMTI0LDIsMCwxMDYsMTQsMCwxMzEsMCwKLSAgICAwLDExNSw0MiwxLDExNiwxNSwwLDEwMCw5LDAsMTA2LDE2LDAsMTI0LDIsMCwKLSAgICAxMzEsMSwwLDEzMSwxLDAsMTMwLDEsMCwxMDAsMTAsMCwxMDYsMTYsMCwxMjQsCi0gICAgMTAsMCwxMTYsMTcsMCwxMjQsMiwwLDEzMSwzLDAsMTI1LDEwLDAsMTE2LDE4LAotICAgIDAsMTI0LDQsMCwxMTYsMTksMCwxMjQsMTAsMCwxMTYsMjAsMCwxMDAsOCwwLAotICAgIDI1LDIzLDEzMSwzLDAsODMsNDEsMTEsOTcsMjU0LDIsMCwwLDcxLDEwNSwxMTgsCi0gICAgMTAxLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDk3LAotICAgIDMyLDQ2LDExMiwxMjEsMzIsMTAyLDEwNSwxMDgsMTAxLDQ0LDMyLDExNCwxMDEsMTE2LDExNywxMTQsCi0gICAgMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsMTA1LDExNiwKLSAgICAxMTUsMzIsNDYsMTEyLDEyMSw5OSwzMiwxMDIsMTA1LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsCi0gICAgMzIsMzIsODQsMTA0LDEwMSwzMiw0NiwxMTIsMTIxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDAsCi0gICAgMTExLDEwMSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTEwLDEwMSwxMDEsMTAwLDMyLDExNiwxMTEsMzIsCi0gICAgMTAxLDEyMCwxMDUsMTE1LDExNiw1OSwzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTE1LDEwNSwxMDksMTEyLAotICAgIDEwOCwxMjEsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMiwKLSAgICA5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMTAsMzIsMzIsMzIsMzIsNDYsCi0gICAgMTEyLDEyMSw5OSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsOTksOTcsMTA4LDk5LDExNywxMDgsOTcsCi0gICAgMTE2LDEwMSwxMDAsMzIsOTcsMTE1LDMyLDEwNSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsNDYsMTEyLAotICAgIDEyMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTE5LDEwMSwxMTQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwKLSAgICAxMTQsMTE2LDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwzOSwKLSAgICAxMTEsMTEyLDExNiwxMDUsMTA5LDEwNSwxMjIsOTcsMTE2LDEwNSwxMTEsMTEwLDM5LDMyLDExMiw5NywKLSAgICAxMTQsOTcsMTA5LDEwMSwxMTYsMTAxLDExNCwzMiw5OSwxMTEsMTEwLDExNiwxMTQsMTExLDEwOCwxMTUsCi0gICAgMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDExNCwxMDEsMTE1LDExNywxMDksMTAxLDEwMCwzMiwxMTEsMTEyLAotICAgIDExNiwxMDUsMTA5LDEwNSwxMjIsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDEwOCwxMDEsMTE4LDEwMSwxMDgsCi0gICAgMzIsMTExLDEwMiwxMCwzMiwzMiwzMiwzMiwxMTYsMTA0LDEwMSwzMiw5OCwxMjEsMTE2LDEwMSwKLSAgICA5OSwxMTEsMTAwLDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsNDYsMzIsNzMsMTAyLDMyLDM5LDExMSwKLSAgICAxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiw5NywxMTYsMTA1LDExMSwxMTAsMzksMzIsMTA1LDExNSwzMiwKLSAgICAxMTAsMTExLDExNiwzMiw3OCwxMTEsMTEwLDEwMSw0NCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTE2LAotICAgIDExNCwxMDUsMTEwLDEwMywzMiwxMTQsMTAxLDExMiwxMTQsMTAxLDExNSwxMDEsMTEwLDExNiw5NywxMTYsCi0gICAgMTA1LDExMSwxMTAsMTAsMzIsMzIsMzIsMzIsMTExLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiw5NywKLSAgICAxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsMTA1LDExNSwzMiwxMTYsOTcsMTA3LDEwMSwxMTAsCi0gICAgMzIsOTcsMTEwLDEwMCwzMiwxMTgsMTAxLDExNCwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDExNiwxMTEsCi0gICAgMzIsOTgsMTAxLDMyLDk3LDEwOCwxMTIsMTA0LDk3LDExMCwxMTcsMTA5LDEwMSwxMTQsMTA1LDk5LAotICAgIDMyLDQwLDEwMSwxMDgsMTE1LDEwMSwzMiw4Niw5NywxMDgsMTE3LDEwMSw2OSwxMTQsMTE0LDExMSwKLSAgICAxMTQsMTAsMzIsMzIsMzIsMzIsMTA1LDExNSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDQxLAotICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMTAwLDEwMSw5OCwxMTcsMTAzLAotICAgIDk1LDExMSwxMTgsMTAxLDExNCwxMTQsMTA1LDEwMCwxMDEsMzIsMTEyLDk3LDExNCw5NywxMDksMTAxLAotICAgIDExNiwxMDEsMTE0LDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTAxLAotICAgIDEwMCw0NiwzMiw3MywxMDIsMzIsMTAwLDEwMSw5OCwxMTcsMTAzLDk1LDExMSwxMTgsMTAxLDExNCwKLSAgICAxMTQsMTA1LDEwMCwxMDEsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw3OCwxMTEsMTEwLDEwMSwKLSAgICA0NCwxMCwzMiwzMiwzMiwzMiw5NywzMiw4NCwxMTQsMTE3LDEwMSwzMiwxMTgsOTcsMTA4LAotICAgIDExNywxMDEsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsOTcsMTA5LDEwMSwzMiw5NywKLSAgICAxMTUsMzIsMTE1LDEwMSwxMTYsMTE2LDEwNSwxMTAsMTAzLDMyLDM5LDExMSwxMTIsMTE2LDEwNSwxMDksCi0gICAgMTA1LDEyMiw5NywxMTYsMTA1LDExMSwxMTAsMzksMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICAxMDEsMTA5LDExMiwxMTYsMTIxLDMyLDExNSwxMTYsMTE0LDEwNSwxMTAsMTAzLDEwLDMyLDMyLDMyLAotICAgIDMyLDExOSwxMDQsMTA1LDEwOCwxMDEsMzIsOTcsMzIsNzAsOTcsMTA4LDExNSwxMDEsMzIsMTE4LAotICAgIDk3LDEwOCwxMTcsMTAxLDMyLDEwNSwxMTUsMzIsMTAxLDExMywxMTcsMTA1LDExOCw5NywxMDgsMTAxLAotICAgIDExMCwxMTYsMzIsMTE2LDExMSwzMiwxMTUsMTAxLDExNiwxMTYsMTA1LDExMCwxMDMsMzIsMzksMTExLAotICAgIDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLDk3LDExNiwxMDUsMTExLDExMCwzOSwzMiwxMTYsMTExLDMyLAotICAgIDM5LDQ5LDM5LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDczLDEwMiwzMiwxMTUsMTIxLDExNSwKLSAgICA0NiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsNDYsCi0gICAgOTksOTcsOTksMTA0LDEwMSw5NSwxMTYsOTcsMTAzLDMyLDEwNSwxMTUsMzIsNzgsMTExLDExMCwKLSAgICAxMDEsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDc4LDExMSwxMTYsNzMsMTA5LDExMiwxMDgsMTAxLDEwOSwKLSAgICAxMDEsMTEwLDExNiwxMDEsMTAwLDY5LDExNCwxMTQsMTExLDExNCwzMiwxMDUsMTE1LDMyLDExNCw5NywKLSAgICAxMDUsMTE1LDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzgsMTIyLDcwLDExNiwxMDQsCi0gICAgMTAxLDMyLDEwMCwxMDEsOTgsMTE3LDEwMyw5NSwxMTEsMTE4LDEwMSwxMTQsMTE0LDEwNSwxMDAsMTAxLAotICAgIDMyLDExMiw5NywxMTQsOTcsMTA5LDEwMSwxMTYsMTAxLDExNCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsCi0gICAgMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNTksMzIsMTE3LDExNSwxMDEsMzIsMzksMTExLAotICAgIDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLDk3LDExNiwxMDUsMTExLDExMCwzOSwzMiwxMDUsMTEwLDExNSwKLSAgICAxMTYsMTAxLDk3LDEwMCwxMjIsNTAsMTAwLDEwMSw5OCwxMTcsMTAzLDk1LDExMSwxMTgsMTAxLDExNCwKLSAgICAxMTQsMTA1LDEwMCwxMDEsMzIsMTExLDExNCwzMiwxMTEsMTEyLDExNiwxMDUsMTA5LDEwNSwxMjIsOTcsCi0gICAgMTE2LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5OCwxMDEsMzIsMTE1LDEwMSwxMTYsCi0gICAgMzIsMTE2LDExMSwzMiw3OCwxMTEsMTEwLDEwMSwxMTQsMzIsMCwwLDAsMTE0LDMxLDAsCi0gICAgMCwwLDIxOCwxLDQ2LDEyMiwzNiwxMTUsMTIxLDExNSw0NiwxMDUsMTA5LDExMiwxMDgsMTAxLAotICAgIDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsNDYsOTksOTcsOTksMTA0LDEwMSw5NSwKLSAgICAxMTYsOTcsMTAzLDMyLDEwNSwxMTUsMzIsNzgsMTExLDExMCwxMDEsMjMzLDAsMCwwLDAsCi0gICAgMTIyLDI0LDEyMywzMywxMTQsMTI1LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMTA4LAotICAgIDExMiwxMDQsOTcsMTEwLDExNywxMDksMTAxLDExNCwxMDUsOTksMTIyLDcsMTIzLDEyNSw0NiwxMjMsCi0gICAgMTI1LDEyMywxMjUsNDEsMjEsMjE4LDksOTUsMTE5LDk3LDExNCwxMTAsMTA1LDExMCwxMDMsMTE1LAotICAgIDIxOCw0LDExOSw5NywxMTQsMTEwLDIxOCwxOCw2OCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LAotICAgIDEwNSwxMTEsMTEwLDg3LDk3LDExNCwxMTAsMTA1LDExMCwxMDMsMjE4LDksODQsMTIxLDExMiwxMDEsCi0gICAgNjksMTE0LDExNCwxMTEsMTE0LDExNCw0MCwwLDAsMCwxMTQsMzQsMCwwLDAsMTE0LAotICAgIDgsMCwwLDAsMjE4LDE0LDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LAotICAgIDExNiwxMDUsMTExLDExMCwyMTgsOSw5OSw5Nyw5OSwxMDQsMTAxLDk1LDExNiw5NywxMDMsMjE4LAotICAgIDE5LDc4LDExMSwxMTYsNzMsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDEsMTAwLDY5LAotICAgIDExNCwxMTQsMTExLDExNCwxMTQsMjgsMCwwLDAsMjE4LDUsMTAyLDEwOCw5NywxMDMsMTE1LAotICAgIDIxOCw4LDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiwxMDEsMjE4LDMsMTE1LDExNiwxMTQsMjE4LAotICAgIDcsMTA1LDExNSw5NywxMDgsMTEwLDExNywxMDksMjE4LDEwLDg2LDk3LDEwOCwxMTcsMTAxLDY5LAotICAgIDExNCwxMTQsMTExLDExNCwxMTQsNDksMCwwLDAsMjE4LDQsOTUsNzksODAsODQsMTE0LAotICAgIDMwLDAsMCwwLDIxOCw4LDk1LDgwLDg5LDY3LDY1LDY3LDcyLDY5LDIxOCwxNywKLSAgICA2Niw4OSw4NCw2OSw2Nyw3OSw2OCw2OSw5NSw4Myw4NSw3MCw3MCw3Myw4OCw2OSwKLSAgICA4Myw0MSwxMSwxMTQsMzcsMCwwLDAsOTAsMTQsMTAwLDEwMSw5OCwxMTcsMTAzLDk1LAotICAgIDExMSwxMTgsMTAxLDExNCwxMTQsMTA1LDEwMCwxMDEsMTE0LDU5LDAsMCwwLDIxOCw3LDEwOSwKLSAgICAxMDEsMTE1LDExNSw5NywxMDMsMTAxLDIxOCw0LDEwNCwxMDEsOTcsMTAwLDExNCwzOSwwLDAsCi0gICAgMCw5MCw0LDk4LDk3LDExNSwxMDEsMjE4LDMsMTE1LDEwMSwxMTIsMjE4LDQsMTE0LDEwMSwKLSAgICAxMTUsMTE2LDkwLDMsMTE2LDk3LDEwMyw5MCwxNSw5NywxMDgsMTA5LDExMSwxMTUsMTE2LDk1LAotICAgIDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNiwwLDAsMCwyMTgsMTcsOTksOTcsOTksMTA0LDEwMSw5NSwxMDIsCi0gICAgMTE0LDExMSwxMDksOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwyNTQsMCwwLDAsMTE1LDQ2LAotICAgIDAsMCwwLDAsMTgsMTIsMSw5LDEsNywxLDEyLDEsNiwxLDEyLAotICAgIDEsMTgsMSwxOCwxLDI0LDEsMTIsMSwxMiwxLDEyLDEsMzYsMSwxMiwKLSAgICAxLDE4LDEsOSwyLDEyLDEsMTIsMSwxMiwxLDEyLDEsMjEsMSwyMSwKLSAgICAxLDExNCw4MSwwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsOCwKLSAgICAwLDAsMCw1LDAsMCwwLDY3LDAsMCwwLDExNSw2MiwxLDAsMCwKLSAgICAxMTYsMCwwLDEwNiwxLDAsMTA2LDIsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LAotICAgIDMwLDAsMTE2LDMsMCwxMDAsMiwwLDEzMSwxLDAsMTMwLDEsMCwxMTYsNCwKLSAgICAwLDEyNCwwLDAsMTMxLDEsMCw5MiwyLDAsMTI1LDEsMCwxMjUsMiwwLAotICAgIDExNiw0LDAsMTI0LDEsMCwxMzEsMSwwLDkyLDIsMCwxMjUsMSwwLDEyNSwKLSAgICAzLDAsMTI0LDMsMCwxMTYsNSwwLDEwNywzLDAsMTE0LDEwMiwwLDExNiw2LAotICAgIDAsMTAwLDMsMCwxMDYsNywwLDExNiw1LDAsMTI0LDAsMCwxMzEsMiwwLAotICAgIDEzMSwxLDAsMTMwLDEsMCwxMjQsMiwwLDEwNiw4LDAsMTAwLDQsMCwxMzEsCi0gICAgMSwwLDEyNSw0LDAsMTI0LDQsMCwxMDAsMTEsMCwxMDcsNywwLDExNCwxNTMsCi0gICAgMCwxMTYsNiwwLDEwMCw3LDAsMTA2LDcsMCwxMjQsMiwwLDEzMSwxLDAsCi0gICAgMTMxLDEsMCwxMzAsMSwwLDExMCwxMjUsMCwxMjQsNCwwLDEwMCw2LDAsMTA3LAotICAgIDIsMCwxMTQsMjIsMSwxMjQsMiwwLDEwNiw5LDAsMTAwLDQsMCwxMDAsNSwKLSAgICAwLDEzMSwyLDAsMTAwLDEyLDAsMjUsMTI1LDUsMCwxMjQsNSwwLDEwNiwxMCwKLSAgICAwLDExNiwxMSwwLDEzMSwxLDAsMTE1LDIyMywwLDExNiw2LDAsMTAwLDgsMCwKLSAgICAxMDYsNywwLDExNiwxMSwwLDEzMSwxLDAsMTMxLDEsMCwxMzAsMSwwLDEyNCwKLSAgICA1LDAsMTE2LDEyLDAsMTE2LDExLDAsMTMxLDEsMCwxMDAsMSwwLDEzMywyLAotICAgIDAsMjUsMTI1LDYsMCwxMjQsNiwwLDEwNiwxMywwLDEzMSwwLDAsMTE1LDIyLAotICAgIDEsMTE2LDYsMCwxMDAsOSwwLDEwNiw3LDAsMTI0LDUsMCwxMzEsMSwwLAotICAgIDEzMSwxLDAsMTMwLDEsMCwxMjQsMiwwLDEwNiwxNCwwLDEwMCw0LDAsMTMxLAotICAgIDEsMCwxMDAsMTAsMCwyNSwxMjUsNywwLDExNiwxNSwwLDEyNCwxLDAsMTI0LAotICAgIDcsMCwxMTYsMTYsMCwxMDAsMTAsMCwyNSwyMywxMzEsMiwwLDgzLDQxLDEzLAotICAgIDk3LDExMCwxLDAsMCw3MSwxMDUsMTE4LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLAotICAgIDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiw5NywzMiw0NiwxMTIsMTIxLDk5LDQ2LDMyLDEwMiwKLSAgICAxMDUsMTA4LDEwMSw0NCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICAxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDEwNSwxMTYsMTE1LDMyLDQ2LDExMiwxMjEsMzIsCi0gICAgMTAyLDEwNSwxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsNDYsCi0gICAgMTEyLDEyMSw5OSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTAwLDExMSwxMDEsMTE1LDMyLDExMCwxMTEsCi0gICAgMTE2LDMyLDExMCwxMDEsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwMSwxMjAsMTA1LDExNSwxMTYsNTksCi0gICAgMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDExNSwxMDUsMTA5LDExMiwxMDgsMTIxLDMyLDExNCwxMDEsMTE2LAotICAgIDExNywxMTQsMTEwLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLAotICAgIDEwLDMyLDMyLDMyLDMyLDExNiwxMDQsMTAxLDMyLDQ2LDExMiwxMjEsMzIsMTAyLDEwNSwxMDgsCi0gICAgMTAxLDMyLDk5LDk3LDEwOCw5OSwxMTcsMTA4LDk3LDExNiwxMDEsMTAwLDMyLDExNiwxMTEsMzIsCi0gICAgOTksMTExLDExNCwxMTQsMTAxLDExNSwxMTIsMTExLDExMCwxMDAsMzIsMTE2LDExMSwzMiwxMTYsMTA0LAotICAgIDEwMSwzMiw0NiwxMTIsMTIxLDk5LDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwzMiwzMiw3MywxMDIsCi0gICAgMzIsMTEyLDk3LDExNiwxMDQsMzIsMTAwLDExMSwxMDEsMTE1LDEwLDMyLDMyLDMyLDMyLDExMCwKLSAgICAxMTEsMTE2LDMyLDk5LDExMSwxMTAsMTAyLDExMSwxMTQsMTA5LDMyLDExNiwxMTEsMzIsODAsNjksCi0gICAgODAsMzIsNTEsNDksNTIsNTUsNDcsNTIsNTYsNTYsMzIsMTAyLDExMSwxMTQsMTA5LDk3LAotICAgIDExNiw0NCwzMiw4Niw5NywxMDgsMTE3LDEwMSw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTE5LDEwNSwKLSAgICAxMDgsMTA4LDMyLDk4LDEwMSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDQ2LDMyLDczLDEwMiwKLSAgICAxMCwzMiwzMiwzMiwzMiwxMTUsMTIxLDExNSw0NiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsCi0gICAgMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsNDYsOTksOTcsOTksMTA0LDEwMSw5NSwxMTYsOTcsCi0gICAgMTAzLDMyLDEwNSwxMTUsMzIsNzgsMTExLDExMCwxMDEsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDc4LAotICAgIDExMSwxMTYsNzMsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDEsMTAwLDY5LDExNCwxMTQsCi0gICAgMTExLDExNCwzMiwxMDUsMTE1LDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsNDYsMTAsMTAsMzIsCi0gICAgMzIsMzIsMzIsNzgsMTIyLDM2LDExNSwxMjEsMTE1LDQ2LDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LAotICAgIDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCw0Niw5OSw5Nyw5OSwxMDQsMTAxLDk1LDExNiwKLSAgICA5NywxMDMsMzIsMTA1LDExNSwzMiw3OCwxMTEsMTEwLDEwMSwxMjIsMzcsMTIzLDEyNSwzMiwxMTAsCi0gICAgMTExLDExNiwzMiw5OCwxMTEsMTE2LDExNiwxMTEsMTA5LDQ1LDEwOCwxMDEsMTE4LDEwMSwxMDgsMzIsCi0gICAgMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSwzMiwxMDUsMTEwLDMyLDEyMywzMywxMTQsCi0gICAgMTI1LDExNCw2MCwwLDAsMCwxMTQsNTgsMCwwLDAsMjMzLDMsMCwwLDAsCi0gICAgMTIyLDMzLDEwMSwxMjAsMTEyLDEwMSw5OSwxMTYsMTAxLDEwMCwzMiwxMTEsMTEwLDEwOCwxMjEsMzIsCi0gICAgNTAsMzIsMTExLDExNCwzMiw1MSwzMiwxMDAsMTExLDExNiwxMTUsMzIsMTA1LDExMCwzMiwxMjMsCi0gICAgMzMsMTE0LDEyNSwxMjIsNTcsMTExLDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLDk3LDExNiwxMDUsMTExLAotICAgIDExMCwzMiwxMTIsMTExLDExNCwxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMDIsMTA1LDEwOCwKLSAgICAxMDEsMTEwLDk3LDEwOSwxMDEsMzIsMTAwLDExMSwxMDEsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDExNSwKLSAgICAxMTYsOTcsMTE0LDExNiwzMiwxMTksMTA1LDExNiwxMDQsMzIsMTIzLDMzLDExNCwxMjUsMTIyLDUyLAotICAgIDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTA4LDEwMSwxMTgsCi0gICAgMTAxLDEwOCwzMiwxMjMsMzMsMTE0LDEyNSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk3LAotICAgIDExMCwzMiw5NywxMDgsMTEyLDEwNCw5NywxMTAsMTE3LDEwOSwxMDEsMTE0LDEwNSw5OSwzMiwxMTgsCi0gICAgOTcsMTA4LDExNywxMDEsMTE0LDYxLDAsMCwwLDYyLDIsMCwwLDAsMTE0LDU4LAotICAgIDAsMCwwLDExNCw4MiwwLDAsMCwyMzMsMjU0LDI1NSwyNTUsMjU1LDQxLDE3LDExNCwKLSAgICA4LDAsMCwwLDExNCw2NiwwLDAsMCwxMTQsNjcsMCwwLDAsMTE0LDY4LAotICAgIDAsMCwwLDExNCw0MCwwLDAsMCwxMTQsNzUsMCwwLDAsMTE0LDczLDAsCi0gICAgMCwwLDExNCw0OSwwLDAsMCwyMTgsNSw5OSwxMTEsMTE3LDExMCwxMTYsMTE0LDM2LAotICAgIDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsNzQsMCwwLDAsMTE0LDMzLDAsCi0gICAgMCwwLDExNCw3MiwwLDAsMCwyMTgsOSwxMTIsOTcsMTE0LDExNiwxMDUsMTE2LDEwNSwKLSAgICAxMTEsMTEwLDExNCwzMCwwLDAsMCwyMTgsMTUsODMsNzksODUsODIsNjcsNjksOTUsCi0gICAgODMsODUsNzAsNzAsNzMsODgsNjksODMsNDEsOCwxMTQsMzcsMCwwLDAsMTE0LAotICAgIDc4LDAsMCwwLDkwLDE2LDExMiwxMjEsOTksOTcsOTksMTA0LDEwMSw5NSwxMDIsMTA1LAotICAgIDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsOTAsNywxMTIsMTIxLDk5LDk3LDk5LDEwNCwxMDEsOTAsCi0gICAgOSwxMDAsMTExLDExNiw5NSw5OSwxMTEsMTE3LDExMCwxMTYsMTE0LDU5LDAsMCwwLDkwLAotICAgIDksMTExLDExMiwxMTYsOTUsMTA4LDEwMSwxMTgsMTAxLDEwOCw5MCwxMyw5OCw5NywxMTUsMTAxLAotICAgIDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTcsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwKLSAgICA5NSwxMDIsMTE0LDExMSwxMDksOTUsOTksOTcsOTksMTA0LDEwMSw0MiwxLDAsMCwxMTUsCi0gICAgNDQsMCwwLDAsMCw5LDE4LDEsMTIsMSwxOCwxLDE4LDEsMTIsMSwKLSAgICA5LDEsMTUsMSwxNSwxLDEyLDEsOSwxLDE1LDEsMTIsMSwyMiwxLAotICAgIDE1LDEsOSwxLDEyLDEsMjIsMSwxMiwxLDksMSwxMiwxLDE5LDEsCi0gICAgMTE0LDg3LDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCw1LDAsCi0gICAgMCwwLDEyLDAsMCwwLDY3LDAsMCwwLDExNSwxNjQsMCwwLDAsMTE2LAotICAgIDAsMCwxMjQsMCwwLDEzMSwxLDAsMTAwLDEsMCwxMDcsMiwwLDExNCwyMiwKLSAgICAwLDEwMCwyLDAsODMsMTI0LDAsMCwxMDYsMSwwLDEwMCwzLDAsMTMxLDEsCi0gICAgMCw5MiwzLDAsMTI1LDEsMCwxMjUsMiwwLDEyNSwzLDAsMTI0LDEsMCwKLSAgICAxMiwxMTUsODEsMCwxMjQsMywwLDEwNiwyLDAsMTMxLDAsMCwxMDAsNywwLAotICAgIDEwMCw4LDAsMTMzLDIsMCwyNSwxMDAsNiwwLDEwNywzLDAsMTE0LDg1LDAsCi0gICAgMTI0LDAsMCw4MywxMjEsMTYsMCwxMTYsMywwLDEyNCwwLDAsMTMxLDEsMCwKLSAgICAxMjUsNCwwLDg3LDExMCw0MCwwLDQsMTE2LDQsMCwxMTYsNSwwLDEwMiwyLAotICAgIDAsMTA3LDEwLDAsMTE0LDE0MywwLDEsMSwxLDEyNCwwLDAsMTAwLDIsMCwKLSAgICAxMDAsOSwwLDEzMywyLDAsMjUsMTI1LDQsMCw4OSwxMTAsMSwwLDg4LDExNiwKLSAgICA2LDAsMTI0LDQsMCwxMzEsMSwwLDExNCwxNjAsMCwxMjQsNCwwLDgzLDEyNCwKLSAgICAwLDAsODMsNDEsMTAsMTIyLDE4OCw2NywxMTEsMTEwLDExOCwxMDEsMTE0LDExNiwzMiw5NywKLSAgICAzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTEyLAotICAgIDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiw5NywzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLAotICAgIDExMiw5NywxMTYsMTA0LDMyLDQwLDEwNSwxMDIsMzIsMTEyLDExMSwxMTUsMTE1LDEwNSw5OCwxMDgsCi0gICAgMTAxLDQxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwMiwxMTcsCi0gICAgMTEwLDk5LDExNiwxMDUsMTExLDExMCwzMiwxMDEsMTIwLDEwNSwxMTUsMTE2LDExNSwzMiwxMTIsMTE3LAotICAgIDExNCwxMDEsMTA4LDEyMSwzMiwxMDIsMTExLDExNCwzMiw5OCw5Nyw5OSwxMDcsMTE5LDk3LDExNCwKLSAgICAxMDAsMTE1LDQ1LDk5LDExMSwxMDksMTEyLDk3LDExNiwxMDUsOTgsMTA1LDEwOCwxMDUsMTE2LDEyMSwKLSAgICAzMiwxMDIsMTExLDExNCwxMCwzMiwzMiwzMiwzMiw4MCwxMjEsNzMsMTA5LDExMiwxMTEsMTE0LAotICAgIDExNiw5NSw2OSwxMjAsMTAxLDk5LDY3LDExMSwxMDAsMTAxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgODcsMTA1LDExNiwxMDQsNzAsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE1LDQwLDQxLDMyLAotICAgIDEwNSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsNjcsMzIsNjUsODAsNzMsNDYsMTAsMTAsMzIsCi0gICAgMzIsMzIsMzIsMTE0LDYxLDAsMCwwLDc4LDExNCw2MCwwLDAsMCwxMTQsODIsCi0gICAgMCwwLDAsMTE0LDMxLDAsMCwwLDkwLDIsMTEyLDEyMSwyMzMsMjUzLDI1NSwyNTUsCi0gICAgMjU1LDIzMywyNTUsMjU1LDI1NSwyNTUsMTE0LDg5LDAsMCwwLDQxLDcsMTE0LDMzLDAsCi0gICAgMCwwLDExNCwzNCwwLDAsMCwyMTgsNSwxMDgsMTExLDExOSwxMDEsMTE0LDExNCw4NywKLSAgICAwLDAsMCwxMTQsNjgsMCwwLDAsMTE0LDczLDAsMCwwLDExNCw0NiwwLAotICAgIDAsMCw0MSw1LDIxOCwxMyw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSw5NSwxMTIsCi0gICAgOTcsMTE2LDEwNCwxMTQsODAsMCwwLDAsMTE0LDM4LDAsMCwwLDkwLDksMTAxLAotICAgIDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsMjE4LDExLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsCi0gICAgOTUsMTEyLDk3LDExNiwxMDQsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDYsMCwwLDAsMjE4LDE1LDk1LDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwKLSAgICAxMDEsMTAyLDEwNSwxMDgsMTAxLDc1LDEsMCwwLDExNSwyMCwwLDAsMCwwLDcsCi0gICAgMTgsMSw0LDEsMjQsMSwzNSwxLDQsMSwzLDEsMTYsMSwxOSwxLAotICAgIDIxLDEsMTE0LDkzLDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwKLSAgICAxLDAsMCwwLDExLDAsMCwwLDY3LDAsMCwwLDExNSw5MiwwLDAsCi0gICAgMCwxMjQsMCwwLDEwNiwwLDAsMTE2LDEsMCwxMTYsMiwwLDEzMSwxLDAsCi0gICAgMTMxLDEsMCwxMTQsNTksMCwxMjEsMTQsMCwxMTYsMywwLDEyNCwwLDAsMTMxLAotICAgIDEsMCw4Myw4NywxMTMsODgsMCw0LDExNiw0LDAsMTA3LDEwLDAsMTE0LDU1LAotICAgIDAsMSwxLDEsODksMTEzLDg4LDAsODgsMTEwLDI5LDAsMTI0LDAsMCwxMDYsCi0gICAgMCwwLDExNiwxLDAsMTE2LDUsMCwxMzEsMSwwLDEzMSwxLDAsMTE0LDg0LAotICAgIDAsMTI0LDAsMCw4MywxMDAsMCwwLDgzLDEwMCwwLDAsODMsNDEsMSw3OCwKLSAgICA0MSw2LDIxOCw4LDEwMSwxMTAsMTAwLDExNSwxMTksMTA1LDExNiwxMDQsMjE4LDUsMTE2LDExNywKLSAgICAxMTIsMTA4LDEwMSwxMTQsODYsMCwwLDAsMTE0LDgxLDAsMCwwLDExNCw2OCwwLAotICAgIDAsMCwxMTQsNzYsMCwwLDAsNDEsMSwyMTgsOCwxMDIsMTA1LDEwOCwxMDEsMTEwLAotICAgIDk3LDEwOSwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwKLSAgICAwLDAsMjE4LDExLDk1LDEwMywxMDEsMTE2LDk1LDk5LDk3LDk5LDEwNCwxMDEsMTAwLDk0LAotICAgIDEsMCwwLDExNSwxNiwwLDAsMCwwLDEsMjEsMSwzLDEsMTQsMSwKLSAgICAxMywxLDgsMSwyMSwxLDQsMiwxMTQsOTcsMCwwLDAsOTksMSwwLAotICAgIDAsMCwwLDAsMCwwLDIsMCwwLDAsMTEsMCwwLDAsNjcsMCwKLSAgICAwLDAsMTE1LDYwLDAsMCwwLDEyMSwxOSwwLDExNiwwLDAsMTI0LDAsMCwKLSAgICAxMzEsMSwwLDEwNiwxLDAsMTI1LDEsMCw4NywxMTAsMjQsMCw0LDExNiwyLAotICAgIDAsMTA3LDEwLDAsMTE0LDQ1LDAsMSwxLDEsMTAwLDEsMCwxMjUsMSwwLAotICAgIDg5LDExMCwxLDAsODgsMTI0LDEsMCwxMDAsMiwwLDc5LDEyNSwxLDAsMTI0LAotICAgIDEsMCw4Myw0MSwzLDEyMiw1MSw2Nyw5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLAorICAgIDAsMCw2LDAsMCwwLDY3LDAsMCwwLDExNSwyNDQsMCwwLDAsMTI0LAorICAgIDEsMTAwLDEsMTA3LDksMTE0LDUyLDExNiwwLDEwNiwxLDEwMCwyLDExNiwyLDEzMSwKKyAgICAyLDEsMCwxMjQsMiwxMDAsMSwxMDcsOSwxMTQsNDAsMTAwLDMsMTI1LDMsMTE2LAorICAgIDMsMTI0LDMsMTMxLDEsMTMwLDEsMTI0LDEsMTE0LDQ4LDEwMCw0LDExMCwyLDEwMCwKKyAgICA1LDEyNSwyLDExNiw0LDEwNiw1LDEyNCwwLDEzMSwxLDEyNSwwLDExNiw2LDEyNCwKKyAgICAwLDEzMSwxLDkyLDIsMTI1LDQsMTI1LDUsMTI0LDUsMTA2LDcsMTAwLDYsMTMxLAorICAgIDEsOTIsMywxMjUsNiwxMjUsNywxMjUsOCwxMTYsOCwxMDYsOSwxMDYsMTAsMTI1LAorICAgIDksMTI0LDksMTAwLDEsMTA3LDgsMTE0LDExNCwxMTYsMTEsMTAwLDcsMTMxLDEsMTMwLAorICAgIDEsMTAwLDQsMTA2LDEyLDEyNCw2LDExNCwxMjYsMTI0LDYsMTEwLDIsMTI0LDgsMTI0LAorICAgIDcsMTI0LDksMTAzLDMsMTMxLDEsMTI1LDEwLDEyNCwyLDEwMCwxLDEwNyw4LDExNCwKKyAgICAxNzIsMTE2LDgsMTA2LDEzLDEwNiwxNCwxMDAsOCwxMDcsMiwxMTQsMTY0LDEwMCw0LDEyNSwKKyAgICAyLDExMCw4LDExNiw4LDEwNiwxMywxMDYsMTQsMTI1LDIsMTE2LDE1LDEyNCwyLDEzMSwKKyAgICAxLDEyNSwyLDEyNCwyLDEwMCw0LDEwNywzLDExNCwyMjQsMTI0LDIsMTA2LDE2LDEzMSwKKyAgICAwLDExNSwyMTAsMTE2LDE3LDEwMCw5LDEwNiwxOCwxMjQsMiwxMzEsMSwxMzEsMSwxMzAsCisgICAgMSwxMDAsMTAsMTA2LDE4LDEyNCwxMCwxMTYsMTksMTI0LDIsMTMxLDMsMTI1LDEwLDExNiwKKyAgICAyMCwxMjQsNCwxMTYsMjEsMTI0LDEwLDExNiwyMiwxMDAsOCwyNSwwLDIzLDAsMTMxLAorICAgIDMsODMsMCw0MSwxMSw5NywyNTQsMiwwLDAsNzEsMTA1LDExOCwxMDEsMTEwLDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsOTcsMzIsNDYsMTEyLAorICAgIDEyMSwzMiwxMDIsMTA1LDEwOCwxMDEsNDQsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMDUsMTE2LDExNSwzMiw0NiwKKyAgICAxMTIsMTIxLDk5LDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwKKyAgICAxMDQsMTAxLDMyLDQ2LDExMiwxMjEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwMCwxMTEsMTAxLDExNSwKKyAgICAzMiwxMTAsMTExLDExNiwzMiwxMTAsMTAxLDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDEsMTIwLDEwNSwKKyAgICAxMTUsMTE2LDU5LDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMTUsMTA1LDEwOSwxMTIsMTA4LDEyMSwzMiwKKyAgICAxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsCisgICAgMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiw0NiwxMTIsMTIxLDk5LAorICAgIDMyLDEwMiwxMDUsMTA4LDEwMSwzMiw5OSw5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLDEwMCwKKyAgICAzMiw5NywxMTUsMzIsMTA1LDEwMiwzMiwxMTYsMTA0LDEwMSwzMiw0NiwxMTIsMTIxLDMyLDEwMiwKKyAgICAxMDUsMTA4LDEwMSwzMiwxMTksMTAxLDExNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLAorICAgIDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDM5LDExMSwxMTIsMTE2LAorICAgIDEwNSwxMDksMTA1LDEyMiw5NywxMTYsMTA1LDExMSwxMTAsMzksMzIsMTEyLDk3LDExNCw5NywxMDksCisgICAgMTAxLDExNiwxMDEsMTE0LDMyLDk5LDExMSwxMTAsMTE2LDExNCwxMTEsMTA4LDExNSwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiwxMTIsMTE0LDEwMSwxMTUsMTE3LDEwOSwxMDEsMTAwLDMyLDExMSwxMTIsMTE2LDEwNSwxMDksCisgICAgMTA1LDEyMiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTA4LDEwMSwxMTgsMTAxLDEwOCwzMiwxMTEsMTAyLAorICAgIDEwLDMyLDMyLDMyLDMyLDExNiwxMDQsMTAxLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsCisgICAgMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwzMiw3MywxMDIsMzIsMzksMTExLDExMiwxMTYsMTA1LAorICAgIDEwOSwxMDUsMTIyLDk3LDExNiwxMDUsMTExLDExMCwzOSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LAorICAgIDMyLDc4LDExMSwxMTAsMTAxLDQ0LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTYsMTE0LDEwNSwxMTAsCisgICAgMTAzLDMyLDExNCwxMDEsMTEyLDExNCwxMDEsMTE1LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwKKyAgICAxMCwzMiwzMiwzMiwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDk3LDExNCwxMDMsMTE3LAorICAgIDEwOSwxMDEsMTEwLDExNiwzMiwxMDUsMTE1LDMyLDExNiw5NywxMDcsMTAxLDExMCwzMiw5NywxMTAsCisgICAgMTAwLDMyLDExOCwxMDEsMTE0LDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTE2LDExMSwzMiw5OCwxMDEsCisgICAgMzIsOTcsMTA4LDExMiwxMDQsOTcsMTEwLDExNywxMDksMTAxLDExNCwxMDUsOTksMzIsNDAsMTAxLAorICAgIDEwOCwxMTUsMTAxLDMyLDg2LDk3LDEwOCwxMTcsMTAxLDY5LDExNCwxMTQsMTExLDExNCwxMCwzMiwKKyAgICAzMiwzMiwzMiwxMDUsMTE1LDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsNDEsNDYsMTAsMTAsCisgICAgMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwxMDAsMTAxLDk4LDExNywxMDMsOTUsMTExLDExOCwKKyAgICAxMDEsMTE0LDExNCwxMDUsMTAwLDEwMSwzMiwxMTIsOTcsMTE0LDk3LDEwOSwxMDEsMTE2LDEwMSwxMTQsCisgICAgMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLAorICAgIDczLDEwMiwzMiwxMDAsMTAxLDk4LDExNywxMDMsOTUsMTExLDExOCwxMDEsMTE0LDExNCwxMDUsMTAwLAorICAgIDEwMSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDc4LDExMSwxMTAsMTAxLDQ0LDEwLDMyLAorICAgIDMyLDMyLDMyLDk3LDMyLDg0LDExNCwxMTcsMTAxLDMyLDExOCw5NywxMDgsMTE3LDEwMSwzMiwKKyAgICAxMDUsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExNSw5NywxMDksMTAxLDMyLDk3LDExNSwzMiwxMTUsCisgICAgMTAxLDExNiwxMTYsMTA1LDExMCwxMDMsMzIsMzksMTExLDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLDk3LAorICAgIDExNiwxMDUsMTExLDExMCwzOSwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLDEwMSwxMDksMTEyLAorICAgIDExNiwxMjEsMzIsMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsMTAsMzIsMzIsMzIsMzIsMTE5LDEwNCwKKyAgICAxMDUsMTA4LDEwMSwzMiw5NywzMiw3MCw5NywxMDgsMTE1LDEwMSwzMiwxMTgsOTcsMTA4LDExNywKKyAgICAxMDEsMzIsMTA1LDExNSwzMiwxMDEsMTEzLDExNywxMDUsMTE4LDk3LDEwOCwxMDEsMTEwLDExNiwzMiwKKyAgICAxMTYsMTExLDMyLDExNSwxMDEsMTE2LDExNiwxMDUsMTEwLDEwMywzMiwzOSwxMTEsMTEyLDExNiwxMDUsCisgICAgMTA5LDEwNSwxMjIsOTcsMTE2LDEwNSwxMTEsMTEwLDM5LDMyLDExNiwxMTEsMzIsMzksNDksMzksCisgICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzMsMTAyLDMyLDExNSwxMjEsMTE1LDQ2LDEwNSwxMDksCisgICAgMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCw0Niw5OSw5Nyw5OSwKKyAgICAxMDQsMTAxLDk1LDExNiw5NywxMDMsMzIsMTA1LDExNSwzMiw3OCwxMTEsMTEwLDEwMSwzMiwxMTYsCisgICAgMTA0LDEwMSwxMTAsMzIsNzgsMTExLDExNiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LAorICAgIDEwMSwxMDAsNjksMTE0LDExNCwxMTEsMTE0LDMyLDEwNSwxMTUsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLAorICAgIDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3OCwxMjIsNzAsMTE2LDEwNCwxMDEsMzIsMTAwLAorICAgIDEwMSw5OCwxMTcsMTAzLDk1LDExMSwxMTgsMTAxLDExNCwxMTQsMTA1LDEwMCwxMDEsMzIsMTEyLDk3LAorICAgIDExNCw5NywxMDksMTAxLDExNiwxMDEsMTE0LDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSwKKyAgICA5OSw5NywxMTYsMTAxLDEwMCw1OSwzMiwxMTcsMTE1LDEwMSwzMiwzOSwxMTEsMTEyLDExNiwxMDUsCisgICAgMTA5LDEwNSwxMjIsOTcsMTE2LDEwNSwxMTEsMTEwLDM5LDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsCisgICAgMTAwLDEyMiw1MCwxMDAsMTAxLDk4LDExNywxMDMsOTUsMTExLDExOCwxMDEsMTE0LDExNCwxMDUsMTAwLAorICAgIDEwMSwzMiwxMTEsMTE0LDMyLDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiw5NywxMTYsMTA1LDExMSwKKyAgICAxMTAsMzIsMTA5LDExNywxMTUsMTE2LDMyLDk4LDEwMSwzMiwxMTUsMTAxLDExNiwzMiwxMTYsMTExLAorICAgIDMyLDc4LDExMSwxMTAsMTAxLDExNCwzMiwwLDAsMCwxMTQsMzEsMCwwLDAsMjE4LAorICAgIDEsNDYsMTIyLDM2LDExNSwxMjEsMTE1LDQ2LDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsCisgICAgMTE2LDk3LDExNiwxMDUsMTExLDExMCw0Niw5OSw5Nyw5OSwxMDQsMTAxLDk1LDExNiw5NywxMDMsCisgICAgMzIsMTA1LDExNSwzMiw3OCwxMTEsMTEwLDEwMSwyMzMsMCwwLDAsMCwxMjIsMjQsMTIzLAorICAgIDMzLDExNCwxMjUsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywxMDgsMTEyLDEwNCw5NywKKyAgICAxMTAsMTE3LDEwOSwxMDEsMTE0LDEwNSw5OSwxMjIsNywxMjMsMTI1LDQ2LDEyMywxMjUsMTIzLDEyNSwKKyAgICA0MSwyMywyMTgsOSw5NSwxMTksOTcsMTE0LDExMCwxMDUsMTEwLDEwMywxMTUsMjE4LDQsMTE5LAorICAgIDk3LDExNCwxMTAsMjE4LDE4LDY4LDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsCisgICAgODcsOTcsMTE0LDExMCwxMDUsMTEwLDEwMywyMTgsOSw4NCwxMjEsMTEyLDEwMSw2OSwxMTQsMTE0LAorICAgIDExMSwxMTQsMTE0LDMsMCwwLDAsMjE4LDYsMTAyLDExNSwxMTIsOTcsMTE2LDEwNCwxMTQsCisgICAgNDAsMCwwLDAsMTE0LDM0LDAsMCwwLDExNCw4LDAsMCwwLDIxOCwxNCwKKyAgICAxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMjE4LDksCisgICAgOTksOTcsOTksMTA0LDEwMSw5NSwxMTYsOTcsMTAzLDIxOCwxOSw3OCwxMTEsMTE2LDczLDEwOSwKKyAgICAxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDI4LAorICAgIDAsMCwwLDIxOCw1LDEwMiwxMDgsOTcsMTAzLDExNSwyMTgsOCwxMTEsMTEyLDExNiwxMDUsCisgICAgMTA5LDEwNSwxMjIsMTAxLDIxOCwzLDExNSwxMTYsMTE0LDIxOCw3LDEwNSwxMTUsOTcsMTA4LDExMCwKKyAgICAxMTcsMTA5LDIxOCwxMCw4Niw5NywxMDgsMTE3LDEwMSw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDUwLAorICAgIDAsMCwwLDIxOCw0LDk1LDc5LDgwLDg0LDExNCwzMCwwLDAsMCwyMTgsOCwKKyAgICA5NSw4MCw4OSw2Nyw2NSw2Nyw3Miw2OSwyMTgsMTcsNjYsODksODQsNjksNjcsNzksCisgICAgNjgsNjksOTUsODMsODUsNzAsNzAsNzMsODgsNjksODMsNDEsMTEsMTE0LDM3LDAsCisgICAgMCwwLDkwLDE0LDEwMCwxMDEsOTgsMTE3LDEwMyw5NSwxMTEsMTE4LDEwMSwxMTQsMTE0LDEwNSwKKyAgICAxMDAsMTAxLDExNCw2MCwwLDAsMCwyMTgsNywxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwKKyAgICAyMTgsNCwxMDQsMTAxLDk3LDEwMCwxMTQsMzksMCwwLDAsOTAsNCw5OCw5NywxMTUsCisgICAgMTAxLDIxOCwzLDExNSwxMDEsMTEyLDIxOCw0LDExNCwxMDEsMTE1LDExNiw5MCwzLDExNiw5NywKKyAgICAxMDMsOTAsMTUsOTcsMTA4LDEwOSwxMTEsMTE1LDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LAorICAgIDEwOSwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLAorICAgIDAsMjE4LDE3LDk5LDk3LDk5LDEwNCwxMDEsOTUsMTAyLDExNCwxMTEsMTA5LDk1LDExNSwxMTEsCisgICAgMTE3LDExNCw5OSwxMDEsNywxLDAsMCwxMTUsNDgsMCwwLDAsMCwxOCw4LAorICAgIDEsNiwxLDYsMSw4LDEsNCwxLDgsMSwxMiwxLDEwLDEsMTIsCisgICAgMSwxNiwxLDgsMSw4LDEsOCwxLDI0LDEsOCwxLDEyLDEsNiwKKyAgICAyLDgsMSw4LDEsOCwxLDgsMSwxNCwxLDE0LDEsMTE0LDgzLDAsCisgICAgMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCw4LDAsMCwwLDUsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDIzMCwwLDAsMCwxMTYsMCwxMDYsMSwKKyAgICAxMDYsMiwxMDAsMSwxMDcsOCwxMTQsMjAsMTE2LDMsMTAwLDIsMTMxLDEsMTMwLDEsCisgICAgMTE2LDQsMTA2LDUsMTI0LDAsMTMxLDEsMTI1LDAsMTE2LDYsMTI0LDAsMTMxLDEsCisgICAgOTIsMiwxMjUsMSwxMjUsMiwxMTYsNiwxMjQsMSwxMzEsMSw5MiwyLDEyNSwxLAorICAgIDEyNSwzLDEyNCwzLDExNiw3LDEwNywzLDExNCw3OCwxMTYsOCwxMDAsMywxMDYsOSwKKyAgICAxMTYsNywxMjQsMCwxMzEsMiwxMzEsMSwxMzAsMSwxMjQsMiwxMDYsMTAsMTAwLDQsCisgICAgMTMxLDEsMTI1LDQsMTI0LDQsMTAwLDExLDEwNyw3LDExNCwxMTIsMTE2LDgsMTAwLDcsCisgICAgMTA2LDksMTI0LDIsMTMxLDEsMTMxLDEsMTMwLDEsMTEwLDg2LDEyNCw0LDEwMCw2LAorICAgIDEwNywyLDExNCwxOTgsMTI0LDIsMTA2LDExLDEwMCw0LDEwMCw1LDEzMSwyLDEwMCwxMiwKKyAgICAyNSwwLDEyNSw1LDEyNCw1LDEwNiwxMiwxMTYsMTMsMTMxLDEsMTE1LDE2MCwxMTYsOCwKKyAgICAxMDAsOCwxMDYsOSwxMTYsMTMsMTMxLDEsMTMxLDEsMTMwLDEsMTI0LDUsMTE2LDE0LAorICAgIDExNiwxMywxMzEsMSwxMDAsMSwxMzMsMiwyNSwwLDEyNSw2LDEyNCw2LDEwNiwxNSwKKyAgICAxMzEsMCwxMTUsMTk4LDExNiw4LDEwMCw5LDEwNiw5LDEyNCw1LDEzMSwxLDEzMSwxLAorICAgIDEzMCwxLDEyNCwyLDEwNiwxNiwxMDAsNCwxMzEsMSwxMDAsMTAsMjUsMCwxMjUsNywKKyAgICAxMTYsMTcsMTI0LDEsMTI0LDcsMTE2LDE4LDEwMCwxMCwyNSwwLDIzLDAsMTMxLDIsCisgICAgODMsMCw0MSwxMyw5NywxMTAsMSwwLDAsNzEsMTA1LDExOCwxMDEsMTEwLDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsOTcsMzIsNDYsMTEyLDEyMSwKKyAgICA5OSw0NiwzMiwxMDIsMTA1LDEwOCwxMDEsNDQsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMDUsMTE2LDExNSwzMiwKKyAgICA0NiwxMTIsMTIxLDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwKKyAgICAxMDQsMTAxLDMyLDQ2LDExMiwxMjEsOTksMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwMCwxMTEsMTAxLAorICAgIDExNSwzMiwxMTAsMTExLDExNiwzMiwxMTAsMTAxLDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDEsMTIwLAorICAgIDEwNSwxMTUsMTE2LDU5LDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMTUsMTA1LDEwOSwxMTIsMTA4LDEyMSwKKyAgICAzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwKKyAgICAxMDQsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMTYsMTA0LDEwMSwzMiw0NiwxMTIsMTIxLAorICAgIDMyLDEwMiwxMDUsMTA4LDEwMSwzMiw5OSw5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLDEwMCwKKyAgICAzMiwxMTYsMTExLDMyLDk5LDExMSwxMTQsMTE0LDEwMSwxMTUsMTEyLDExMSwxMTAsMTAwLDMyLDExNiwKKyAgICAxMTEsMzIsMTE2LDEwNCwxMDEsMzIsNDYsMTEyLDEyMSw5OSwzMiwxMDIsMTA1LDEwOCwxMDEsNDYsCisgICAgMzIsMzIsNzMsMTAyLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwMCwxMTEsMTAxLDExNSwxMCwzMiwKKyAgICAzMiwzMiwzMiwxMTAsMTExLDExNiwzMiw5OSwxMTEsMTEwLDEwMiwxMTEsMTE0LDEwOSwzMiwxMTYsCisgICAgMTExLDMyLDgwLDY5LDgwLDMyLDUxLDQ5LDUyLDU1LDQ3LDUyLDU2LDU2LDMyLDEwMiwKKyAgICAxMTEsMTE0LDEwOSw5NywxMTYsNDQsMzIsODYsOTcsMTA4LDExNywxMDEsNjksMTE0LDExNCwxMTEsCisgICAgMTE0LDMyLDExOSwxMDUsMTA4LDEwOCwzMiw5OCwxMDEsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCwKKyAgICA0NiwzMiw3MywxMDIsMTAsMzIsMzIsMzIsMzIsMTE1LDEyMSwxMTUsNDYsMTA1LDEwOSwxMTIsCisgICAgMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDQ2LDk5LDk3LDk5LDEwNCwKKyAgICAxMDEsOTUsMTE2LDk3LDEwMywzMiwxMDUsMTE1LDMyLDc4LDExMSwxMTAsMTAxLDMyLDExNiwxMDQsCisgICAgMTAxLDExMCwzMiw3OCwxMTEsMTE2LDczLDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLAorICAgIDEwMCw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTA1LDExNSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLAorICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDc4LDEyMiwzNiwxMTUsMTIxLDExNSw0NiwxMDUsMTA5LAorICAgIDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsNDYsOTksOTcsOTksCisgICAgMTA0LDEwMSw5NSwxMTYsOTcsMTAzLDMyLDEwNSwxMTUsMzIsNzgsMTExLDExMCwxMDEsMTIyLDM3LAorICAgIDEyMywxMjUsMzIsMTEwLDExMSwxMTYsMzIsOTgsMTExLDExNiwxMTYsMTExLDEwOSw0NSwxMDgsMTAxLAorICAgIDExOCwxMDEsMTA4LDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwxMjEsMzIsMTA1LDExMCwKKyAgICAzMiwxMjMsMzMsMTE0LDEyNSwxMTQsNjEsMCwwLDAsMTE0LDU5LDAsMCwwLDIzMywKKyAgICAzLDAsMCwwLDEyMiwzMywxMDEsMTIwLDExMiwxMDEsOTksMTE2LDEwMSwxMDAsMzIsMTExLAorICAgIDExMCwxMDgsMTIxLDMyLDUwLDMyLDExMSwxMTQsMzIsNTEsMzIsMTAwLDExMSwxMTYsMTE1LDMyLAorICAgIDEwNSwxMTAsMzIsMTIzLDMzLDExNCwxMjUsMTIyLDU3LDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiwKKyAgICA5NywxMTYsMTA1LDExMSwxMTAsMzIsMTEyLDExMSwxMTQsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsCisgICAgMzIsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDMyLDEwMCwxMTEsMTAxLDExNSwzMiwxMTAsCisgICAgMTExLDExNiwzMiwxMTUsMTE2LDk3LDExNCwxMTYsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDEyMywzMywKKyAgICAxMTQsMTI1LDEyMiw1MiwxMTEsMTEyLDExNiwxMDUsMTA5LDEwNSwxMjIsOTcsMTE2LDEwNSwxMTEsMTEwLAorICAgIDMyLDEwOCwxMDEsMTE4LDEwMSwxMDgsMzIsMTIzLDMzLDExNCwxMjUsMzIsMTA1LDExNSwzMiwxMTAsCisgICAgMTExLDExNiwzMiw5NywxMTAsMzIsOTcsMTA4LDExMiwxMDQsOTcsMTEwLDExNywxMDksMTAxLDExNCwKKyAgICAxMDUsOTksMzIsMTE4LDk3LDEwOCwxMTcsMTAxLDExNCw2MiwwLDAsMCw2MiwyLDAsCisgICAgMCwwLDExNCw1OSwwLDAsMCwxMTQsODQsMCwwLDAsMjMzLDI1NCwyNTUsMjU1LAorICAgIDI1NSw0MSwxOSwxMTQsOCwwLDAsMCwxMTQsNjgsMCwwLDAsMTE0LDY5LDAsCisgICAgMCwwLDExNCw3MCwwLDAsMCwxMTQsMywwLDAsMCwxMTQsNjcsMCwwLAorICAgIDAsMTE0LDQwLDAsMCwwLDExNCw3NywwLDAsMCwxMTQsNzUsMCwwLDAsCisgICAgMTE0LDUwLDAsMCwwLDIxOCw1LDk5LDExMSwxMTcsMTEwLDExNiwxMTQsMzYsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCw3NiwwLDAsMCwxMTQsMzMsMCwwLDAsCisgICAgMTE0LDc0LDAsMCwwLDIxOCw5LDExMiw5NywxMTQsMTE2LDEwNSwxMTYsMTA1LDExMSwxMTAsCisgICAgMTE0LDMwLDAsMCwwLDIxOCwxNSw4Myw3OSw4NSw4Miw2Nyw2OSw5NSw4Myw4NSwKKyAgICA3MCw3MCw3Myw4OCw2OSw4Myw0MSw4LDExNCwzNywwLDAsMCwxMTQsODAsMCwKKyAgICAwLDAsOTAsMTYsMTEyLDEyMSw5OSw5Nyw5OSwxMDQsMTAxLDk1LDEwMiwxMDUsMTA4LDEwMSwKKyAgICAxMTAsOTcsMTA5LDEwMSw5MCw3LDExMiwxMjEsOTksOTcsOTksMTA0LDEwMSw5MCw5LDEwMCwKKyAgICAxMTEsMTE2LDk1LDk5LDExMSwxMTcsMTEwLDExNiwxMTQsNjAsMCwwLDAsOTAsOSwxMTEsCisgICAgMTEyLDExNiw5NSwxMDgsMTAxLDExOCwxMDEsMTA4LDkwLDEzLDk4LDk3LDExNSwxMDEsOTUsMTAyLAorICAgIDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwKKyAgICAwLDExNCw2LDAsMCwwLDIxOCwxNywxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDEwMiwKKyAgICAxMTQsMTExLDEwOSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDUyLDEsMCwwLDExNSw0NiwwLAorICAgIDAsMCwwLDksMTIsMSw4LDEsMTAsMSwxMiwxLDEyLDEsOCwxLAorICAgIDYsMSwxMCwxLDEwLDEsOCwxLDYsMSwxMCwxLDgsMSwxNiwxLAorICAgIDEwLDEsNiwxLDgsMSwxNiwxLDgsMSw2LDEsOCwxLDE0LDEsCisgICAgMTE0LDg5LDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCw1LDAsCisgICAgMCwwLDEyLDAsMCwwLDY3LDAsMCwwLDExNSwxMjgsMCwwLDAsMTE2LAorICAgIDAsMTI0LDAsMTMxLDEsMTAwLDEsMTA3LDIsMTE0LDE2LDEwMCwyLDgzLDAsMTI0LAorICAgIDAsMTA2LDEsMTAwLDMsMTMxLDEsOTIsMywxMjUsMSwxMjUsMiwxMjUsMywxMjQsCisgICAgMSwxMiwwLDExNSw1OCwxMjQsMywxMDYsMiwxMzEsMCwxMDAsNywxMDAsOCwxMzMsCisgICAgMiwyNSwwLDEwMCw2LDEwNywzLDExNCw2MiwxMjQsMCw4MywwLDEyMSwxMiwxMTYsCisgICAgMywxMjQsMCwxMzEsMSwxMjUsNCw4NywwLDExMCwzNiw0LDAsMTE2LDQsMTE2LAorICAgIDUsMTAyLDIsMTA3LDEwLDExNCwxMTAsMSwwLDEsMCwxLDAsMTI0LDAsMTAwLAorICAgIDIsMTAwLDksMTMzLDIsMjUsMCwxMjUsNCw4OSwwLDExMCwyLDg4LDAsMTE2LAorICAgIDYsMTI0LDQsMTMxLDEsMTE0LDEyNCwxMjQsNCw4MywwLDEyNCwwLDgzLDAsNDEsCisgICAgMTAsMTIyLDE4OCw2NywxMTEsMTEwLDExOCwxMDEsMTE0LDExNiwzMiw5NywzMiw5OCwxMjEsMTE2LAorICAgIDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsCisgICAgMTE2LDExMSwzMiw5NywzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDExMiw5NywxMTYsMTA0LAorICAgIDMyLDQwLDEwNSwxMDIsMzIsMTEyLDExMSwxMTUsMTE1LDEwNSw5OCwxMDgsMTAxLDQxLDQ2LDEwLAorICAgIDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsCisgICAgMTExLDExMCwzMiwxMDEsMTIwLDEwNSwxMTUsMTE2LDExNSwzMiwxMTIsMTE3LDExNCwxMDEsMTA4LDEyMSwKKyAgICAzMiwxMDIsMTExLDExNCwzMiw5OCw5Nyw5OSwxMDcsMTE5LDk3LDExNCwxMDAsMTE1LDQ1LDk5LAorICAgIDExMSwxMDksMTEyLDk3LDExNiwxMDUsOTgsMTA1LDEwOCwxMDUsMTE2LDEyMSwzMiwxMDIsMTExLDExNCwKKyAgICAxMCwzMiwzMiwzMiwzMiw4MCwxMjEsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw5NSw2OSwxMjAsCisgICAgMTAxLDk5LDY3LDExMSwxMDAsMTAxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODcsMTA1LDExNiwxMDQsCisgICAgNzAsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE1LDQwLDQxLDMyLDEwNSwxMTAsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsNjcsMzIsNjUsODAsNzMsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMTE0LAorICAgIDYyLDAsMCwwLDc4LDExNCw2MSwwLDAsMCwxMTQsODQsMCwwLDAsMTE0LAorICAgIDMxLDAsMCwwLDkwLDIsMTEyLDEyMSwyMzMsMjUzLDI1NSwyNTUsMjU1LDIzMywyNTUsMjU1LAorICAgIDI1NSwyNTUsMTE0LDkxLDAsMCwwLDQxLDcsMTE0LDMzLDAsMCwwLDExNCwzNCwKKyAgICAwLDAsMCwyMTgsNSwxMDgsMTExLDExOSwxMDEsMTE0LDExNCw4OSwwLDAsMCwxMTQsCisgICAgNzAsMCwwLDAsMTE0LDc1LDAsMCwwLDExNCw0NiwwLDAsMCw0MSw1LAorICAgIDIxOCwxMyw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSw5NSwxMTIsOTcsMTE2LDEwNCwxMTQsCisgICAgODIsMCwwLDAsMTE0LDM4LDAsMCwwLDkwLDksMTAxLDEyMCwxMTYsMTAxLDExMCwKKyAgICAxMTUsMTA1LDExMSwxMTAsMjE4LDExLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTEyLDk3LDExNiwKKyAgICAxMDQsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsCisgICAgMjE4LDE1LDk1LDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTAyLDEwNSwxMDgsCisgICAgMTAxLDg2LDEsMCwwLDExNSwyMCwwLDAsMCwwLDcsMTIsMSw0LDEsCisgICAgMTYsMSwyNiwxLDQsMSwyLDEsMTIsMSwxOCwxLDE4LDEsMTE0LDk1LAorICAgIDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLAorICAgIDExLDAsMCwwLDY3LDAsMCwwLDExNSw3MiwwLDAsMCwxMjQsMCwxMDYsCisgICAgMCwxMTYsMSwxMTYsMiwxMzEsMSwxMzEsMSwxMTQsNDYsMTIxLDgsMTE2LDMsMTI0LAorICAgIDAsMTMxLDEsODMsMCw0LDAsMTE2LDQsMTA3LDEwLDExNCw0MiwxLDAsMSwKKyAgICAwLDEsMCw4OSwwLDExMyw2OCw4OCwwLDExMCwyMiwxMjQsMCwxMDYsMCwxMTYsCisgICAgMSwxMTYsNSwxMzEsMSwxMzEsMSwxMTQsNjQsMTI0LDAsODMsMCwxMDAsMCw4MywKKyAgICAwLDEwMCwwLDgzLDAsNDEsMSw3OCw0MSw2LDIxOCw4LDEwMSwxMTAsMTAwLDExNSwKKyAgICAxMTksMTA1LDExNiwxMDQsMjE4LDUsMTE2LDExNywxMTIsMTA4LDEwMSwxMTQsODgsMCwwLDAsCisgICAgMTE0LDgzLDAsMCwwLDExNCw3MCwwLDAsMCwxMTQsNzgsMCwwLDAsNDEsCisgICAgMSwyMTgsOCwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE0LDQsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDExLDk1LDEwMywxMDEsMTE2LAorICAgIDk1LDk5LDk3LDk5LDEwNCwxMDEsMTAwLDEwNSwxLDAsMCwxMTUsMTYsMCwwLDAsCisgICAgMCwxLDE0LDEsMiwxLDgsMSwxNCwxLDgsMSwxNCwxLDQsMiwKKyAgICAxMTQsOTksMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwKKyAgICAwLDAsMTEsMCwwLDAsNjcsMCwwLDAsMTE1LDUyLDAsMCwwLDEyMSwKKyAgICAxNCwxMTYsMCwxMjQsMCwxMzEsMSwxMDYsMSwxMjUsMSw4NywwLDExMCwyNCw0LAorICAgIDAsMTE2LDIsMTA3LDEwLDExNCwzOCwxLDAsMSwwLDEsMCwxMDAsMSwxMjUsCisgICAgMSw4OSwwLDExMCwyLDg4LDAsMTI0LDEsMTAwLDIsNzksMCwxMjUsMSwxMjQsCisgICAgMSw4MywwLDQxLDMsMTIyLDUxLDY3LDk3LDEwOCw5OSwxMTcsMTA4LDk3LDExNiwxMDEsCiAgICAgMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTAxLDMyLDExMiwxMDEsMTE0LDEwOSwxMDUsMTE1LAogICAgIDExNSwxMDUsMTExLDExMCwxMTUsMzIsMTAyLDExMSwxMTQsMzIsOTcsMzIsOTgsMTIxLDExNiwxMDEsCiAgICAgOTksMTExLDEwMCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDQ2LDEwNSwxODIsMSwwLDAsMjMzLAogICAgIDEyOCwwLDAsMCw0MSwzLDExNCw0MSwwLDAsMCwxMTQsNDMsMCwwLDAsCiAgICAgMTE0LDQyLDAsMCwwLDQxLDIsMTE0LDM3LDAsMCwwLDExNCw0NCwwLDAsCiAgICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKLSAgICAyMTgsMTAsOTUsOTksOTcsMTA4LDk5LDk1LDEwOSwxMTEsMTAwLDEwMSwxMDYsMSwwLDAsCi0gICAgMTE1LDEyLDAsMCwwLDAsMiwzLDEsMTksMSwxMywxLDExLDMsMTAsCi0gICAgMSwxMTQsOTksMCwwLDAsMjE4LDksMTE4LDEwMSwxMTQsOTgsMTExLDExNSwxMDUsMTE2LAotICAgIDEyMSwxMTQsMzEsMCwwLDAsOTksMSwwLDAsMCwxLDAsMCwwLDMsCi0gICAgMCwwLDAsNCwwLDAsMCw3MSwwLDAsMCwxMTUsNzUsMCwwLDAsCi0gICAgMTE2LDAsMCwxMDYsMSwwLDEwNiwyLDAsMTI0LDEsMCwxMDcsNSwwLDExNCwKLSAgICA3MSwwLDEyNCwwLDAsMTA2LDMsMCwxMDAsNiwwLDEzMSwxLDAsMTE1LDQzLAotICAgIDAsMTAwLDMsMCwxMjQsMCwwLDIzLDEyNSwwLDAsMTE2LDQsMCwxMjQsMCwKLSAgICAwLDEwNiw1LDAsMTI0LDIsMCwxNDAsMCwwLDEwMCw0LDAsMTE2LDAsMCwKLSAgICAxMDYsNiwwLDEzMSwxLDEsMSwxMDAsNSwwLDgzLDQxLDcsMTIyLDYxLDgwLAotICAgIDExNCwxMDUsMTEwLDExNiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwKLSAgICAzMiwxMTYsMTExLDMyLDExNSwxMTYsMTAwLDEwMSwxMTQsMTE0LDMyLDEwNSwxMDIsMzIsNDUsMTE4LAotICAgIDQ3LDgwLDg5LDg0LDcyLDc5LDc4LDg2LDY5LDgyLDY2LDc5LDgzLDY5LDMyLDEwNSwKLSAgICAxMTUsMzIsMTE2LDExNywxMTQsMTEwLDEwMSwxMDAsMzIsMTExLDExMCw0NiwyNTAsMSwzNSwyNTAsCi0gICAgNywxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMjIsMiwzNSwzMiwxMTQsNTYsMCwwLAotICAgIDAsNzgsNDEsMiwxMTQsMTAxLDAsMCwwLDExNCwxMDIsMCwwLDAsNDEsNywKLSAgICAxMTQsOCwwLDAsMCwxMTQsNjksMCwwLDAsMjE4LDcsMTE4LDEwMSwxMTQsOTgsCi0gICAgMTExLDExNSwxMDEsMTE0LDEwLDAsMCwwLDIxOCw1LDExMiwxMTQsMTA1LDExMCwxMTYsMTE0LAotICAgIDQ5LDAsMCwwLDIxOCw2LDExNSwxMTYsMTAwLDEwMSwxMTQsMTE0LDQxLDMsMTE0LDc3LAotICAgIDAsMCwwLDExNCwxMDAsMCwwLDAsMjE4LDQsOTcsMTE0LDEwMywxMTUsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDE2LDk1LAotICAgIDExOCwxMDEsMTE0LDk4LDExMSwxMTUsMTAxLDk1LDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLDExOCwKLSAgICAxLDAsMCwxMTUsOCwwLDAsMCwwLDIsMTgsMSwxNSwxLDEwLDEsCi0gICAgMTE0LDEwNywwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsMywwLAotICAgIDAsMCwxMSwwLDAsMCwzLDAsMCwwLDExNSw4NCwwLDAsMCwxMDAsCi0gICAgMSwwLDEzNSwwLDAsMTAyLDEsMCwxMDAsMiwwLDEwMCwzLDAsMTM0LDEsCi0gICAgMCwxMjUsMSwwLDEyMSwxMywwLDExNiwwLDAsMTA2LDEsMCwxMjUsMiwwLAotICAgIDg3LDExMCwzMCwwLDQsMTE2LDIsMCwxMDcsMTAsMCwxMTQsNjYsMCwxLDEsCi0gICAgMSwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCwxMjUsMiwwLDg5LDExMCwxLAotICAgIDAsODgsMTI0LDIsMCwxMjQsMSwwLDEzNiwwLDAsMTMxLDIsMCwxLDEyNCwKLSAgICAxLDAsODMsNDEsNiwxMjIsMjUyLDY4LDEwMSw5OSwxMTEsMTE0LDk3LDExNiwxMTEsMTE0LAotICAgIDMyLDExNiwxMTEsMzIsMTE4LDEwMSwxMTQsMTA1LDEwMiwxMjEsMzIsMTE2LDEwNCw5NywxMTYsMzIsCi0gICAgMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTgsMTAxLDEwNSwxMTAsMTAzLAotICAgIDMyLDExNCwxMDEsMTEzLDExNywxMDEsMTE1LDExNiwxMDEsMTAwLDMyLDEwOSw5NywxMTYsOTksMTA0LAotICAgIDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTExLDExMCwxMDEsMzIsMTE2LDEwNCwxMDEsMTAsMzIsCi0gICAgMzIsMzIsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiw5OSw5NywxMTAsMzIsMTA0LDk3LAotICAgIDExMCwxMDAsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwMiwKLSAgICAxMDUsMTE0LDExNSwxMTYsMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDMyLDQwLDExNSwKLSAgICAxMDEsMTA4LDEwMiw0MSwzMiwxMDksMTE3LDExNSwxMTYsMzIsMTAwLDEwMSwxMDIsMTA1LDExMCwxMDEsCi0gICAgMzIsOTUsMTEwLDk3LDEwOSwxMDEsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDExNiwxMDQsMTAxLAotICAgIDMyLDExNSwxMDEsOTksMTExLDExMCwxMDAsMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LAotICAgIDMyLDEwNSwxMTUsMTAsMzIsMzIsMzIsMzIsOTksMTExLDEwOSwxMTIsOTcsMTE0LDEwMSwxMDAsCi0gICAgMzIsOTcsMTAzLDk3LDEwNSwxMTAsMTE1LDExNiw0NiwzMiw3MywxMDIsMzIsMTE2LDEwNCwxMDEsCi0gICAgMzIsOTksMTExLDEwOSwxMTIsOTcsMTE0LDEwNSwxMTUsMTExLDExMCwzMiwxMDIsOTcsMTA1LDEwOCwKLSAgICAxMTUsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksMTE0LDExNCwKLSAgICAxMTEsMTE0LDMyLDEwNSwxMTUsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCw0NiwxMCwxMCwzMiwKLSAgICAzMiwzMiwzMiw3OCw5OSwyLDAsMCwwLDAsMCwwLDAsNCwwLDAsCi0gICAgMCw1LDAsMCwwLDMxLDAsMCwwLDExNSw4OSwwLDAsMCwxMjQsMSwKLSAgICAwLDEwMCwwLDAsMTA3LDgsMCwxMTQsMjQsMCwxMjQsMCwwLDEwNiwwLDAsCi0gICAgMTI1LDEsMCwxMTAsNDYsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsMCwxMDcsCi0gICAgMywwLDExNCw3MCwwLDExNiwxLDAsMTAwLDEsMCwxMjQsMCwwLDEwNiwwLAotICAgIDAsMTI0LDEsMCwxMDIsMiwwLDIyLDEwMCwyLDAsMTI0LDEsMCwxMzEsMSwKLSAgICAxLDEzMCwxLDAsMTM2LDAsMCwxMjQsMCwwLDEyNCwxLDAsMTI0LDIsMCwKLSAgICAxMjQsMywwLDE0MiwyLDAsODMsNDEsMyw3OCwxMjIsMzAsMTA4LDExMSw5NywxMDAsCi0gICAgMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwzNywxMTUsMzIsOTksOTcsMTEwLDExMCwxMTEsMTE2LAotICAgIDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsMzIsMzcsMTE1LDIxOCw0LDExMCw5NywxMDksMTAxLAotICAgIDQxLDIsMTE0LDEwOCwwLDAsMCwyMTgsMTEsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw2OSwKLSAgICAxMTQsMTE0LDExMSwxMTQsNDEsNCwyMTgsNCwxMTUsMTAxLDEwOCwxMDIsMTE0LDEwOCwwLDAsCi0gICAgMCwxMTQsMTA2LDAsMCwwLDkwLDYsMTA3LDExOSw5NywxMTQsMTAzLDExNSw0MSwxLAotICAgIDIxOCw2LDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDExNCw0LDAsMCwwLDExNCw2LDAsCi0gICAgMCwwLDIxOCwxOSw5NSw5OSwxMDQsMTAxLDk5LDEwNyw5NSwxMTAsOTcsMTA5LDEwMSw5NSwKLSAgICAxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCwxMzQsMSwwLDAsMTE1LDEyLDAsMCwwLAotICAgIDAsMSwxMiwxLDEyLDEsMTUsMSw2LDEsMjUsMSwxMjIsNDAsOTUsOTksCi0gICAgMTA0LDEwMSw5OSwxMDcsOTUsMTEwLDk3LDEwOSwxMDEsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsCi0gICAgMTE1LDYyLDQ2LDk1LDk5LDEwNCwxMDEsOTksMTA3LDk1LDExMCw5NywxMDksMTAxLDk1LDExOSwKLSAgICAxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDk5LDIsMCwwLDAsMCwwLDAsMCwzLAotICAgIDAsMCwwLDcsMCwwLDAsODMsMCwwLDAsMTE1LDkyLDAsMCwwLAotICAgIDEyMCw2NiwwLDEwMCwxLDAsMTAwLDIsMCwxMDAsMywwLDEwMCw0LDAsMTAzLAotICAgIDQsMCw2OCw5Myw0NiwwLDEyNSwyLDAsMTE2LDAsMCwxMjQsMSwwLDEyNCwKLSAgICAyLDAsMTMxLDIsMCwxMTQsMTksMCwxMTYsMSwwLDEyNCwwLDAsMTI0LDIsCi0gICAgMCwxMTYsMiwwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMiwwLDEzMSwzLDAsCi0gICAgMSwxMTMsMTksMCw4NywxMjQsMCwwLDEwNiwzLDAsMTA2LDQsMCwxMjQsMSwKLSAgICAwLDEwNiwzLDAsMTMxLDEsMCwxLDEwMCwwLDAsODMsNDEsNSw3OCwyMTgsCi0gICAgMTAsOTUsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsOTUsMjE4LDgsOTUsOTUsMTEwLAotICAgIDk3LDEwOSwxMDEsOTUsOTUsMjE4LDEyLDk1LDk1LDExMywxMTcsOTcsMTA4LDExMCw5NywxMDksCi0gICAgMTAxLDk1LDk1LDIxOCw3LDk1LDk1LDEwMCwxMTEsOTksOTUsOTUsNDEsNSwyMTgsNywKLSAgICAxMDQsOTcsMTE1LDk3LDExNiwxMTYsMTE0LDIxOCw3LDExNSwxMDEsMTE2LDk3LDExNiwxMTYsMTE0LAotICAgIDIxOCw3LDEwMywxMDEsMTE2LDk3LDExNiwxMTYsMTE0LDIxOCw4LDk1LDk1LDEwMCwxMDUsOTksCi0gICAgMTE2LDk1LDk1LDIxOCw2LDExNywxMTIsMTAwLDk3LDExNiwxMDEsNDEsMyw5MCwzLDExMCwKLSAgICAxMDEsMTE5LDkwLDMsMTExLDEwOCwxMDAsMTE0LDU0LDAsMCwwLDExNCw0LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCw1LDk1LDExOSwxMTQsCi0gICAgOTcsMTEyLDE0NSwxLDAsMCwxMTUsOCwwLDAsMCwwLDEsMjUsMSwxNSwKLSAgICAxLDI5LDEsMTIyLDI2LDk1LDk5LDEwNCwxMDEsOTksMTA3LDk1LDExMCw5NywxMDksMTAxLAotICAgIDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw5NSwxMTksMTE0LDk3LDExMiw0MSwKLSAgICAzLDIxOCwxMCw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsMTE0LDEyMiwwLAotICAgIDAsMCwyMTgsOSw3OCw5NywxMDksMTAxLDY5LDExNCwxMTQsMTExLDExNCw0MSwzLDExNCwKLSAgICAxMTEsMCwwLDAsMTE0LDExMiwwLDAsMCwxMTQsMTIyLDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDQxLDEsMTE0LDExMSwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsCi0gICAgMTEsOTUsOTksMTA0LDEwMSw5OSwxMDcsOTUsMTEwLDk3LDEwOSwxMDEsMTI2LDEsMCwwLAotICAgIDExNSwxNCwwLDAsMCwwLDgsMjEsNywzLDEsMTMsMSwxMywyLDE3LAotICAgIDUsMTMsMSwxMTQsMTI1LDAsMCwwLDk5LDIsMCwwLDAsMCwwLDAsCi0gICAgMCw1LDAsMCwwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDg0LDAsCi0gICAgMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjQsMSwwLDEzMSwxLDAsOTIsMiwKLSAgICAwLDEyNSwyLDAsMTI1LDMsMCwxMjQsMiwwLDEwMCwxLDAsMTA3LDgsMCwKLSAgICAxMTQsODAsMCwxMTYsMSwwLDEyNCwzLDAsMTMxLDEsMCwxMTQsODAsMCwxMDAsCi0gICAgMiwwLDEyNSw0LDAsMTE2LDIsMCwxMDYsMywwLDEyNCw0LDAsMTA2LDQsCi0gICAgMCwxMjQsMywwLDEwMCwzLDAsMjUsMTMxLDEsMCwxMTYsNSwwLDEzMSwyLAotICAgIDAsMSwxMjQsMiwwLDgzLDQxLDQsMTIyLDE1NSw4NCwxMTQsMTIxLDMyLDExNiwxMTEsCi0gICAgMzIsMTAyLDEwNSwxMTAsMTAwLDMyLDk3LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTAyLAotICAgIDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwKLSAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OCwxMjEsMzIsMTAwLDEwMSwxMDgsMTAxLDEwMywKLSAgICA5NywxMTYsMTA1LDExMCwxMDMsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMTUsMTAxLDEwOCwKLSAgICAxMDIsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNDAsNDEsNDYsCi0gICAgMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwKLSAgICAxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDMyLAotICAgIDEwNSwxMTAsMzIsMTAyLDk3LDExOCwxMTEsMTE0LDMyLDExMSwxMDIsMzIsMTAyLDEwNSwxMTAsMTAwLAotICAgIDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDQwLDQxLDQ2LDEwLAotICAgIDEwLDMyLDMyLDMyLDMyLDc4LDEyMiw0NCw3OCwxMTEsMTE2LDMyLDEwNSwxMDksMTEyLDExMSwKLSAgICAxMTQsMTE2LDEwNSwxMTAsMTAzLDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwxMjEsMzIsCi0gICAgMTIzLDEyNSw1OCwzMiwxMDksMTA1LDExNSwxMTUsMTA1LDExMCwxMDMsMzIsOTUsOTUsMTA1LDExMCwKLSAgICAxMDUsMTE2LDk1LDk1LDExNCw2MSwwLDAsMCw0MSw2LDIxOCwxMSwxMDIsMTA1LDExMCwKLSAgICAxMDAsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTQsMzMsMCwwLDAsMTE0LDYyLDAsCi0gICAgMCwwLDExNCw2MywwLDAsMCwxMTQsNDksMCwwLDAsMjE4LDEzLDczLDEwOSwKLSAgICAxMTIsMTExLDExNCwxMTYsODcsOTcsMTE0LDExMCwxMDUsMTEwLDEwMyw0MSw1LDExNCwxMTAsMCwKLSAgICAwLDAsMjE4LDgsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDIxOCw2LDEwOCwxMTEsCi0gICAgOTcsMTAwLDEwMSwxMTQsMjE4LDgsMTEyLDExMSwxMTQsMTE2LDEwNSwxMTEsMTEwLDExNSwyMTgsMywKLSAgICAxMDksMTE1LDEwMywxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLAotICAgIDAsMCwyMTgsMTcsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDk1LDExNSwxMDQsMTA1LDEwOSwxNTQsMSwwLDAsMTE1LDEwLDAsMCwwLDAsMTAsCi0gICAgMjEsMSwyNCwxLDYsMSwyOSwxLDExNCwxMzIsMCwwLDAsOTksNCwwLAotICAgIDAsMCwwLDAsMCwwLDExLDAsMCwwLDE5LDAsMCwwLDY3LDAsCi0gICAgMCwwLDExNSwyNDAsMSwwLDAsMTA1LDAsMCwxMjUsNCwwLDEyNCwyLDAsCi0gICAgMTAwLDEsMCwxMDcsOSwwLDExNCwzMSwwLDEyNCwyLDAsMTI0LDQsMCwxMDAsCi0gICAgMiwwLDYwLDExMCw2LDAsMTAwLDMsMCwxMjUsMiwwLDEyNCwzLDAsMTAwLAotICAgIDEsMCwxMDcsOSwwLDExNCw1OSwwLDEyNCwzLDAsMTI0LDQsMCwxMDAsNCwKLSAgICAwLDYwLDEyNCwwLDAsMTAwLDEsMCwxMDAsNSwwLDEzMywyLDAsMjUsMTI1LAotICAgIDUsMCwxMjQsMCwwLDEwMCw1LDAsMTAwLDYsMCwxMzMsMiwwLDI1LDEyNSwKLSAgICA2LDAsMTI0LDAsMCwxMDAsNiwwLDEwMCw3LDAsMTMzLDIsMCwyNSwxMjUsCi0gICAgNywwLDEyNCw1LDAsMTE2LDAsMCwxMDcsMywwLDExNCwxNjgsMCwxMDAsOCwKLSAgICAwLDEwNiwxLDAsMTI0LDIsMCwxMjQsNSwwLDEzMSwyLDAsMTI1LDgsMCwKLSAgICAxMTYsMiwwLDEwMCw5LDAsMTI0LDgsMCwxMzEsMiwwLDEsMTE2LDMsMCwKLSAgICAxMjQsOCwwLDEyNCw0LDAsMTQxLDEsMCwxMzAsMSwwLDExMCwxMTksMCwxMTYsCi0gICAgNCwwLDEyNCw2LDAsMTMxLDEsMCwxMDAsNSwwLDEwNywzLDAsMTE0LDIyOSwKLSAgICAwLDEwMCwxMCwwLDEwNiwxLDAsMTI0LDIsMCwxMzEsMSwwLDEyNSw4LDAsCi0gICAgMTE2LDIsMCwxMDAsOSwwLDEyNCw4LDAsMTMxLDIsMCwxLDExNiw1LDAsCi0gICAgMTI0LDgsMCwxMzEsMSwwLDEzMCwxLDAsMTEwLDU4LDAsMTE2LDQsMCwxMjQsCi0gICAgNywwLDEzMSwxLDAsMTAwLDUsMCwxMDcsMywwLDExNCwzMSwxLDEwMCwxMSwKLSAgICAwLDEwNiwxLDAsMTI0LDIsMCwxMzEsMSwwLDEyNSw4LDAsMTE2LDIsMCwKLSAgICAxMDAsOSwwLDEyNCw4LDAsMTMxLDIsMCwxLDExNiw1LDAsMTI0LDgsMCwKLSAgICAxMzEsMSwwLDEzMCwxLDAsMTI0LDEsMCwxMDAsMSwwLDEwNyw5LDAsMTE0LAotICAgIDIyNiwxLDEyMSwyMCwwLDExNiw2LDAsMTI0LDEsMCwxMDAsMTIsMCwyNSwxMzEsCi0gICAgMSwwLDEyNSw5LDAsODcsMTEwLDE4LDAsNCwxMTYsNywwLDEwNywxMCwwLAotICAgIDExNCw4MywxLDEsMSwxLDg5LDExMCw2MiwwLDg4LDExNiw4LDAsMTI0LDYsCi0gICAgMCwxMzEsMSwwLDEyNCw5LDAsMTA3LDMsMCwxMTQsMTQ1LDEsMTAwLDEzLDAsCi0gICAgMTA2LDEsMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDgsMCwxMTYsMiwwLDEwMCwKLSAgICA5LDAsMTI0LDgsMCwxMzEsMiwwLDEsMTE2LDMsMCwxMjQsOCwwLDEyNCwKLSAgICA0LDAsMTQxLDEsMCwxMzAsMSwwLDEyMSwxOCwwLDEyNCwxLDAsMTAwLDE0LAotICAgIDAsMjUsMTAwLDE1LDAsNjQsMTI1LDEwLDAsODcsMTEwLDE4LDAsNCwxMTYsNywKLSAgICAwLDEwNywxMCwwLDExNCwxODMsMSwxLDEsMSw4OSwxMTAsNDMsMCw4OCwxMTYsCi0gICAgOCwwLDEyNCw3LDAsMTMxLDEsMCwxMjQsMTAsMCwxMDcsMywwLDExNCwyMjYsCi0gICAgMSwxMTYsMywwLDEwMCwxMywwLDEwNiwxLDAsMTI0LDIsMCwxMzEsMSwwLAotICAgIDEyNCw0LDAsMTQxLDEsMCwxMzAsMSwwLDEyNCwwLDAsMTAwLDcsMCwxMDAsCi0gICAgMSwwLDEzMywyLDAsMjUsODMsNDEsMTYsOTcsMTIyLDEsMCwwLDg2LDk3LAotICAgIDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA0LDEwMSw5NywxMDAsMTAxLAotICAgIDExNCwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTUsMTE1LDEwMSwxMDAsNDUsCi0gICAgMTA1LDExMCwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiw5NywxMDMsOTcsMTA1LAotICAgIDExMCwxMTUsMTE2LDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTE1LDExNiw5NywxMTYsMTE1LAotICAgIDMyLDQwLDEwNSwxMDIsMTAsMzIsMzIsMzIsMzIsMTAzLDEwNSwxMTgsMTAxLDExMCw0MSwzMiwKLSAgICA5NywxMTAsMTAwLDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDExNiwxMDQsOTcsMTE2LDMyLAotICAgIDk5LDk3LDExMCwzMiw5OCwxMDEsMzIsOTksMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsMTAwLDMyLAotICAgIDk4LDEyMSwzMiw5OSwxMTEsMTA5LDExMiwxMDUsMTA4LDEwMSw0MCw0MSw0NiwxMCwxMCwzMiwKLSAgICAzMiwzMiwzMiw2NSwxMDgsMTA4LDMyLDExMSwxMTYsMTA0LDEwMSwxMTQsMzIsOTcsMTE0LDEwMywKLSAgICAxMTcsMTA5LDEwMSwxMTAsMTE2LDExNSwzMiw5NywxMTQsMTAxLDMyLDExNywxMTUsMTAxLDEwMCwzMiwKLSAgICAxMTYsMTExLDMyLDEwMSwxMTAsMTA0LDk3LDExMCw5OSwxMDEsMzIsMTAxLDExNCwxMTQsMTExLDExNCwKLSAgICAzMiwxMTQsMTAxLDExMiwxMTEsMTE0LDExNiwxMDUsMTEwLDEwMyw0NiwxMCwxMCwzMiwzMiwzMiwKLSAgICAzMiw3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LDExNCwxMTQsMTExLDExNCwzMiwxMDUsMTE1LDMyLAotICAgIDExNCw5NywxMDUsMTE1LDEwMSwxMDAsMzIsMTE5LDEwNCwxMDEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLAotICAgIDEwOSw5NywxMDMsMTA1LDk5LDMyLDExMCwxMTcsMTA5LDk4LDEwMSwxMTQsMzIsMTA1LDExNSwzMiwKLSAgICAxMDUsMTEwLDk5LDExMSwxMTQsMTE0LDEwMSw5OSwxMTYsMzIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwKLSAgICAzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDUsMTE1LDEwLDMyLDMyLDMyLAotICAgIDMyLDEwMiwxMTEsMTE3LDExMCwxMDAsMzIsMTE2LDExMSwzMiw5OCwxMDEsMzIsMTE1LDExNiw5NywKLSAgICAxMDgsMTAxLDQ2LDMyLDY5LDc5LDcwLDY5LDExNCwxMTQsMTExLDExNCwzMiwxMDUsMTE1LDMyLAotICAgIDExNCw5NywxMDUsMTE1LDEwMSwxMDAsMzIsMTE5LDEwNCwxMDEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLAotICAgIDEwMCw5NywxMTYsOTcsMzIsMTA1LDExNSwzMiwxMDIsMTExLDExNywxMTAsMTAwLDMyLDExNiwxMTEsCi0gICAgMzIsOTgsMTAxLDEwLDMyLDMyLDMyLDMyLDExNiwxMTQsMTE3LDExMCw5OSw5NywxMTYsMTAxLAotICAgIDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3OCwxMTQsMTA4LDAsMCwwLDEyMiwxMCwKLSAgICA2MCw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSw2MiwxMTQsMzcsMCwwLDAsMTE0LAotICAgIDE0LDAsMCwwLDIzMyw4LDAsMCwwLDIzMywxMiwwLDAsMCwxMjIsMzAsCi0gICAgOTgsOTcsMTAwLDMyLDEwOSw5NywxMDMsMTA1LDk5LDMyLDExMCwxMTcsMTA5LDk4LDEwMSwxMTQsCi0gICAgMzIsMTA1LDExMCwzMiwxMjMsMzMsMTE0LDEyNSw1OCwzMiwxMjMsMzMsMTE0LDEyNSwxMjIsMiwKLSAgICAxMjMsMTI1LDEyMiw0MywxMTQsMTAxLDk3LDk5LDEwNCwxMDEsMTAwLDMyLDY5LDc5LDcwLDMyLAotICAgIDExOSwxMDQsMTA1LDEwOCwxMDEsMzIsMTE0LDEwMSw5NywxMDAsMTA1LDExMCwxMDMsMzIsMTE2LDEwNSwKLSAgICAxMDksMTAxLDExNSwxMTYsOTcsMTA5LDExMiwzMiwxMDUsMTEwLDMyLDEyMywzMywxMTQsMTI1LDEyMiwKLSAgICA0OCwxMTQsMTAxLDk3LDk5LDEwNCwxMDEsMTAwLDMyLDY5LDc5LDcwLDMyLDExOSwxMDQsMTA1LAotICAgIDEwOCwxMDEsMzIsMTE0LDEwMSw5NywxMDAsMTA1LDExMCwxMDMsMzIsMTE1LDEwNSwxMjIsMTAxLDMyLAotICAgIDExMSwxMDIsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiwxMDUsMTEwLDMyLDEyMywzMywxMTQsCi0gICAgMTI1LDIxOCw1LDEwOSwxMTYsMTA1LDEwOSwxMDEsMTIyLDI2LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwKLSAgICAxMDAsMTAxLDMyLDEwNSwxMTUsMzIsMTE1LDExNiw5NywxMDgsMTAxLDMyLDEwMiwxMTEsMTE0LDMyLAotICAgIDEyMywzMywxMTQsMTI1LDIxOCw0LDExNSwxMDUsMTIyLDEwMSwxMDgsMywwLDAsMCwyNTUsCi0gICAgMTI3LDI1NSwxMjcsMywwLDQxLDksMjE4LDEyLDc3LDY1LDcxLDczLDY3LDk1LDc4LAotICAgIDg1LDc3LDY2LDY5LDgyLDExNCw0OSwwLDAsMCwxMTQsMTA3LDAsMCwwLDExNCwKLSAgICAxMDksMCwwLDAsMTE0LDMzLDAsMCwwLDIxOCw4LDY5LDc5LDcwLDY5LDExNCwKLSAgICAxMTQsMTExLDExNCwxMTQsMTYsMCwwLDAsMjE4LDgsNzUsMTAxLDEyMSw2OSwxMTQsMTE0LAotICAgIDExMSwxMTQsMTE0LDIxLDAsMCwwLDQxLDExLDExNCw1NSwwLDAsMCwyMTgsMTIsCi0gICAgMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMTUsMTE2LDk3LDExNiwxMTUsMTE0LDEwOCwwLDAsCi0gICAgMCwxMTQsMzcsMCwwLDAsOTAsMTEsMTAxLDEyMCw5OSw5NSwxMDAsMTAxLDExNiw5NywKLSAgICAxMDUsMTA4LDExNSw5MCw1LDEwOSw5NywxMDMsMTA1LDk5LDkwLDEzLDExNCw5NywxMTksOTUsCi0gICAgMTE2LDEwNSwxMDksMTAxLDExNSwxMTYsOTcsMTA5LDExMiw5MCw4LDExNCw5NywxMTksOTUsMTE1LAotICAgIDEwNSwxMjIsMTAxLDExNCw3NywwLDAsMCwyMTgsMTIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwKLSAgICA5NSwxMDksMTE2LDEwNSwxMDksMTAxLDIxOCwxMSwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDExNSwKLSAgICAxMDUsMTIyLDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLAotICAgIDAsMCwyMTgsMjUsOTUsMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsOTUsOTgsMTIxLAotICAgIDExNiwxMDEsOTksMTExLDEwMCwxMDEsOTUsMTA0LDEwMSw5NywxMDAsMTAxLDExNCwxNzEsMSwwLAotICAgIDAsMTE1LDc2LDAsMCwwLDAsMTEsNiwxLDEyLDEsMTMsMyw2LDEsCi0gICAgMTIsMSwxMCwxLDE2LDEsMTYsMSwxNiwxLDEyLDEsMTgsMSwxMywxLAotICAgIDE4LDEsMTgsMSwxNSwxLDEzLDEsMTUsMSwxOCwxLDE1LDEsMTMsMSwKLSAgICAxMiwxLDEyLDEsMywxLDIwLDEsMTMsMSw1LDIsMTgsMSwxNSwxLAotICAgIDEzLDEsMTUsMSwzLDEsMTgsMSwxMywxLDUsMiwxOCwxLDE1LDEsCi0gICAgOSwxLDExNCwxNDMsMCwwLDAsOTksNCwwLDAsMCwwLDAsMCwwLAotICAgIDUsMCwwLDAsNiwwLDAsMCw2NywwLDAsMCwxMTUsMTEyLDAsMCwKLSAgICAwLDExNiwwLDAsMTA2LDEsMCwxMjQsMCwwLDEzMSwxLDAsMTI1LDQsMCwKLSAgICAxMTYsMiwwLDEyNCw0LDAsMTE2LDMsMCwxMzEsMiwwLDExNCw3NSwwLDExNiwKLSAgICA0LDAsMTAwLDEsMCwxMjQsMiwwLDEzMSwyLDAsMSwxMjQsMywwLDEwMCwKLSAgICAyLDAsMTA3LDksMCwxMTQsNzEsMCwxMTYsNSwwLDEwNiw2LDAsMTI0LDQsCi0gICAgMCwxMjQsMywwLDEzMSwyLDAsMSwxMjQsNCwwLDgzLDExNiw3LDAsMTAwLAotICAgIDMsMCwxMDYsOCwwLDEyNCwyLDAsMTMxLDEsMCwxMDAsNCwwLDEyNCwxLAotICAgIDAsMTAwLDUsMCwxMjQsMiwwLDEzMSwxLDIsMTMwLDEsMCwxMDAsMiwwLAotICAgIDgzLDQxLDYsMTIyLDYwLDY3LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLDMyLDk4LDEyMSwxMTYsCi0gICAgMTAxLDk5LDExMSwxMDAsMTAxLDMyLDk3LDExNSwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMDEsCi0gICAgMTAwLDMyLDk4LDEyMSwzMiw5NSwxMTgsOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSw5NSw5OCwKLSAgICAxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSw5NSwxMDQsMTAxLDk3LDEwMCwxMDEsMTE0LDQwLDQxLAotICAgIDQ2LDEyMiwyMSw5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMzIsMTAyLAotICAgIDExNCwxMTEsMTA5LDMyLDEyMywzMywxMTQsMTI1LDc4LDEyMiwyMyw3OCwxMTEsMTEwLDQ1LDk5LAotICAgIDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiwxMDUsMTEwLDMyLDEyMywzMywKLSAgICAxMTQsMTI1LDExNCwxMDgsMCwwLDAsMTE0LDM3LDAsMCwwLDQxLDksMjE4LDcsCi0gICAgMTA5LDk3LDExNCwxMTUsMTA0LDk3LDEwOCw5MCw1LDEwOCwxMTEsOTcsMTAwLDExNSwyMTgsMTAsCi0gICAgMTA1LDExNSwxMDUsMTEwLDExNSwxMTYsOTcsMTEwLDk5LDEwMSwyMTgsMTAsOTUsOTksMTExLDEwMCwKLSAgICAxMDEsOTUsMTE2LDEyMSwxMTIsMTAxLDExNCwxMDcsMCwwLDAsMjE4LDQsOTUsMTA1LDEwOSwKLSAgICAxMTIsOTAsMTYsOTUsMTAyLDEwNSwxMjAsOTUsOTksMTExLDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsCi0gICAgOTcsMTA5LDEwMSwxMTQsMTA5LDAsMCwwLDExNCw0OSwwLDAsMCw0MSw1LDExNCwKLSAgICA1NSwwLDAsMCwxMTQsMTA4LDAsMCwwLDExNCw5MSwwLDAsMCwxMTQsOTIsCi0gICAgMCwwLDAsMjE4LDQsOTksMTExLDEwMCwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDE3LDk1LDk5LDExMSwxMDksMTEyLDEwNSwKLSAgICAxMDgsMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDIyNiwxLDAsMCwxMTUsCi0gICAgMTYsMCwwLDAsMCwyLDE1LDEsMTUsMSwxMywxLDEyLDEsMTYsMSwKLSAgICA0LDIsMTgsMSwxMTQsMTQ5LDAsMCwwLDExNCw2MSwwLDAsMCw5OSwzLAotICAgIDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwzLDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSw3NiwwLDAsMCwxMTYsMCwwLDExNiwxLDAsMTMxLDEsCi0gICAgMCwxMjUsMywwLDEyNCwzLDAsMTA2LDIsMCwxMTYsMywwLDEyNCwxLDAsCi0gICAgMTMxLDEsMCwxMzEsMSwwLDEsMTI0LDMsMCwxMDYsMiwwLDExNiwzLDAsCi0gICAgMTI0LDIsMCwxMzEsMSwwLDEzMSwxLDAsMSwxMjQsMywwLDEwNiwyLDAsCi0gICAgMTE2LDQsMCwxMDYsNSwwLDEyNCwwLDAsMTMxLDEsMCwxMzEsMSwwLDEsCi0gICAgMTI0LDMsMCw4Myw0MSwxLDEyMiw4MCw2NywxMTEsMTA5LDExMiwxMDUsMTA4LDEwMSwzMiwKLSAgICA5NywzMiw5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMzIsMTA1LDExMCwKLSAgICAxMTYsMTExLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwMiwxMTEsMTE0LDMyLAotICAgIDExOSwxMTQsMTA1LDExNiwxMDUsMTEwLDEwMywzMiwxMTEsMTE3LDExNiwzMiwxMTYsMTExLDMyLDk3LAotICAgIDMyLDk4LDEyMSwxMTYsMTAxLDQ1LDk5LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLDEwMCwxMCwzMiwKLSAgICAzMiwzMiwzMiwxMDIsMTA1LDEwOCwxMDEsNDYsNDEsNiwyMTgsOSw5OCwxMjEsMTE2LDEwMSwKLSAgICA5NywxMTQsMTE0LDk3LDEyMSwxMTQsMTM3LDAsMCwwLDIxOCw2LDEwMSwxMjAsMTE2LDEwMSwKLSAgICAxMTAsMTAwLDExNCwxOSwwLDAsMCwxMTQsMTQ0LDAsMCwwLDkwLDUsMTAwLDExNywKLSAgICAxMDksMTEyLDExNSw0MSw0LDExNCwxNDgsMCwwLDAsMTE0LDEzNSwwLDAsMCwxMTQsCi0gICAgMTQyLDAsMCwwLDExNCw1NSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTcsOTUsOTksMTExLDEwMCwxMDEsOTUsCi0gICAgMTE2LDExMSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwyMzgsMSwwLDAsMTE1LAotICAgIDEwLDAsMCwwLDAsMywxMiwxLDE5LDEsMTksMSwyMiwxLDExNCwxNTIsCi0gICAgMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDUsMCwwLDAsCi0gICAgNCwwLDAsMCw2NywwLDAsMCwxMTUsODksMCwwLDAsMTAwLDEsMCwKLSAgICAxMDAsMiwwLDEwOCwwLDAsMTI1LDEsMCwxMTYsMSwwLDEwNiwyLDAsMTI0LAotICAgIDAsMCwxMzEsMSwwLDEwNiwzLDAsMTI1LDIsMCwxMjQsMSwwLDEwNiw0LAotICAgIDAsMTI0LDIsMCwxMzEsMSwwLDEyNSwzLDAsMTE2LDEsMCwxMDYsNSwwLAotICAgIDEwMCwyLDAsMTAwLDMsMCwxMzEsMiwwLDEyNSw0LDAsMTI0LDQsMCwxMDYsCi0gICAgNiwwLDEyNCwwLDAsMTA2LDYsMCwxMjQsMywwLDEwMCwxLDAsMjUsMTMxLAotICAgIDEsMCwxMzEsMSwwLDgzLDQxLDQsMTIyLDEyMSw2OCwxMDEsOTksMTExLDEwMCwxMDEsCisgICAgMjE4LDEwLDk1LDk5LDk3LDEwOCw5OSw5NSwxMDksMTExLDEwMCwxMDEsMTE3LDEsMCwwLAorICAgIDExNSwxMiwwLDAsMCwwLDIsMiwxLDE0LDEsMTQsMSwxMCwzLDgsCisgICAgMSwxMTQsMTAxLDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwzLAorICAgIDAsMCwwLDExLDAsMCwwLDMsMCwwLDAsMTE1LDY4LDAsMCwwLAorICAgIDEwMCw2LDEzNSwwLDEwMiwxLDEwMCwyLDEwMCwzLDEzMiw5LDEyNSwxLDEyMSwxMCwKKyAgICAxMTYsMCwxMDYsMSwxMjUsMiw4NywwLDExMCwyOCw0LDAsMTE2LDIsMTA3LDEwLAorICAgIDExNCw1MiwxLDAsMSwwLDEsMCwxMDAsNCwxMDAsNSwxMzIsMCwxMjUsMiwKKyAgICA4OSwwLDExMCwyLDg4LDAsMTI0LDIsMTI0LDEsMTM2LDAsMTMxLDIsMSwwLAorICAgIDEyNCwxLDgzLDAsNDEsNywxMjIsMjUyLDY4LDEwMSw5OSwxMTEsMTE0LDk3LDExNiwxMTEsCisgICAgMTE0LDMyLDExNiwxMTEsMzIsMTE4LDEwMSwxMTQsMTA1LDEwMiwxMjEsMzIsMTE2LDEwNCw5NywxMTYsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTgsMTAxLDEwNSwxMTAsCisgICAgMTAzLDMyLDExNCwxMDEsMTEzLDExNywxMDEsMTE1LDExNiwxMDEsMTAwLDMyLDEwOSw5NywxMTYsOTksCisgICAgMTA0LDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTExLDExMCwxMDEsMzIsMTE2LDEwNCwxMDEsMTAsCisgICAgMzIsMzIsMzIsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiw5OSw5NywxMTAsMzIsMTA0LAorICAgIDk3LDExMCwxMDAsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLAorICAgIDEwMiwxMDUsMTE0LDExNSwxMTYsMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDMyLDQwLAorICAgIDExNSwxMDEsMTA4LDEwMiw0MSwzMiwxMDksMTE3LDExNSwxMTYsMzIsMTAwLDEwMSwxMDIsMTA1LDExMCwKKyAgICAxMDEsMzIsOTUsMTEwLDk3LDEwOSwxMDEsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDExNiwxMDQsCisgICAgMTAxLDMyLDExNSwxMDEsOTksMTExLDExMCwxMDAsMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsCisgICAgMTE2LDMyLDEwNSwxMTUsMTAsMzIsMzIsMzIsMzIsOTksMTExLDEwOSwxMTIsOTcsMTE0LDEwMSwKKyAgICAxMDAsMzIsOTcsMTAzLDk3LDEwNSwxMTAsMTE1LDExNiw0NiwzMiw3MywxMDIsMzIsMTE2LDEwNCwKKyAgICAxMDEsMzIsOTksMTExLDEwOSwxMTIsOTcsMTE0LDEwNSwxMTUsMTExLDExMCwzMiwxMDIsOTcsMTA1LAorICAgIDEwOCwxMTUsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksMTE0LAorICAgIDExNCwxMTEsMTE0LDMyLDEwNSwxMTUsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCw0NiwxMCwxMCwKKyAgICAzMiwzMiwzMiwzMiw3OCw5OSwyLDAsMCwwLDAsMCwwLDAsNCwwLAorICAgIDAsMCw0LDAsMCwwLDMxLDAsMCwwLDExNSw2NiwwLDAsMCwxMjQsCisgICAgMSwxMDAsMCwxMDcsOCwxMTQsMTYsMTI0LDAsMTA2LDAsMTI1LDEsMTEwLDMyLDEyNCwKKyAgICAwLDEwNiwwLDEyNCwxLDEwNywzLDExNCw0OCwxMTYsMSwxMDAsMSwxMjQsMCwxMDYsCisgICAgMCwxMjQsMSwxMDIsMiwyMiwwLDEyNCwxLDEwMCwyLDE0MSwyLDEzMCwxLDEzNiwKKyAgICAwLDEyNCwwLDEyNCwxLDEwMiwyLDEyNCwyLDE1OCwyLDEyNCwzLDE0MiwxLDgzLAorICAgIDAsNDEsMyw3OCwxMjIsMzAsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwKKyAgICAzMiwzNywxMTUsMzIsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDEwNCw5NywxMTAsMTAwLDEwOCwKKyAgICAxMDEsMzIsMzcsMTE1LDQxLDEsMjE4LDQsMTEwLDk3LDEwOSwxMDEsNDEsMiwxMTQsMTAyLAorICAgIDAsMCwwLDIxOCwxMSw3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LDExNCwxMTQsMTExLDExNCwKKyAgICA0MSw0LDIxOCw0LDExNSwxMDEsMTA4LDEwMiwxMTQsMTAyLDAsMCwwLDIxOCw0LDk3LAorICAgIDExNCwxMDMsMTE1LDkwLDYsMTA3LDExOSw5NywxMTQsMTAzLDExNSw0MSwxLDIxOCw2LDEwOSwKKyAgICAxMDEsMTE2LDEwNCwxMTEsMTAwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwKKyAgICAxOSw5NSw5OSwxMDQsMTAxLDk5LDEwNyw5NSwxMTAsOTcsMTA5LDEwMSw5NSwxMTksMTE0LDk3LAorICAgIDExMiwxMTIsMTAxLDExNCwxMzcsMSwwLDAsMTE1LDEyLDAsMCwwLDAsMSw4LAorICAgIDEsOCwxLDEwLDEsNCwxLDE4LDEsMTIyLDQwLDk1LDk5LDEwNCwxMDEsOTksCisgICAgMTA3LDk1LDExMCw5NywxMDksMTAxLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0NiwKKyAgICA5NSw5OSwxMDQsMTAxLDk5LDEwNyw5NSwxMTAsOTcsMTA5LDEwMSw5NSwxMTksMTE0LDk3LDExMiwKKyAgICAxMTIsMTAxLDExNCw5OSwyLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwKKyAgICA3LDAsMCwwLDgzLDAsMCwwLDExNSw2MCwwLDAsMCwxMjAsNDAsMTAwLAorICAgIDUsNjgsMCw5MywzMiwxMjUsMiwxMTYsMCwxMjQsMSwxMjQsMiwxMzEsMiwxMTQsCisgICAgNiwxMTYsMSwxMjQsMCwxMjQsMiwxMTYsMiwxMjQsMSwxMjQsMiwxMzEsMiwxMzEsCisgICAgMywxLDAsMTEzLDYsODcsMCwxMjQsMCwxMDYsMywxMDYsNCwxMjQsMSwxMDYsCisgICAgMywxMzEsMSwxLDAsMTAwLDAsODMsMCw0MSw2LDc4LDIxOCwxMCw5NSw5NSwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSw5NSwyMTgsOCw5NSw5NSwxMTAsOTcsMTA5LDEwMSwKKyAgICA5NSw5NSwyMTgsMTIsOTUsOTUsMTEzLDExNyw5NywxMDgsMTEwLDk3LDEwOSwxMDEsOTUsOTUsCisgICAgMjE4LDcsOTUsOTUsMTAwLDExMSw5OSw5NSw5NSw0MSw0LDExNCwxMDgsMCwwLDAsCisgICAgMTE0LDEwOSwwLDAsMCwxMTQsMTEwLDAsMCwwLDExNCwxMTEsMCwwLDAsNDEsCisgICAgNSwyMTgsNywxMDQsOTcsMTE1LDk3LDExNiwxMTYsMTE0LDIxOCw3LDExNSwxMDEsMTE2LDk3LAorICAgIDExNiwxMTYsMTE0LDIxOCw3LDEwMywxMDEsMTE2LDk3LDExNiwxMTYsMTE0LDIxOCw4LDk1LDk1LAorICAgIDEwMCwxMDUsOTksMTE2LDk1LDk1LDIxOCw2LDExNywxMTIsMTAwLDk3LDExNiwxMDEsNDEsMywKKyAgICA5MCwzLDExMCwxMDEsMTE5LDkwLDMsMTExLDEwOCwxMDAsMTE0LDU1LDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCw1LAorICAgIDk1LDExOSwxMTQsOTcsMTEyLDE0OCwxLDAsMCwxMTUsOCwwLDAsMCwwLDEsCisgICAgMTAsMSwxMCwxLDIyLDEsMTIyLDI2LDk1LDk5LDEwNCwxMDEsOTksMTA3LDk1LDExMCwKKyAgICA5NywxMDksMTAxLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw5NSwxMTksMTE0LAorICAgIDk3LDExMiw0MSwxLDc4LDQxLDMsMjE4LDEwLDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsCisgICAgMTE0LDk3LDExMiwxMTQsMTE3LDAsMCwwLDIxOCw5LDc4LDk3LDEwOSwxMDEsNjksMTE0LAorICAgIDExNCwxMTEsMTE0LDQxLDMsMTE0LDEwNiwwLDAsMCwxMTQsMTA3LDAsMCwwLDExNCwKKyAgICAxMTcsMCwwLDAsMTE0LDQsMCwwLDAsNDEsMSwxMTQsMTA2LDAsMCwwLAorICAgIDExNCw2LDAsMCwwLDIxOCwxMSw5NSw5OSwxMDQsMTAxLDk5LDEwNyw5NSwxMTAsOTcsCisgICAgMTA5LDEwMSwxMjksMSwwLDAsMTE1LDE0LDAsMCwwLDAsOCwxNCw3LDIsCisgICAgMSwxMCwxLDE0LDIsMTQsNSwxMCwxLDExNCwxMjAsMCwwLDAsOTksMiwKKyAgICAwLDAsMCwwLDAsMCwwLDUsMCwwLDAsNCwwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsNjAsMCwwLDAsMTI0LDAsMTA2LDAsMTI0LDEsMTMxLDEsCisgICAgOTIsMiwxMjUsMiwxMjUsMywxMjQsMiwxMDAsMSwxMDcsOCwxMTQsNTYsMTE2LDEsCisgICAgMTI0LDMsMTMxLDEsMTE0LDU2LDEwMCwyLDEyNSw0LDExNiwyLDEwNiwzLDEyNCw0LAorICAgIDEwNiw0LDEyNCwzLDEwMCwzLDI1LDAsMTMxLDEsMTE2LDUsMTMxLDIsMSwwLAorICAgIDEyNCwyLDgzLDAsNDEsNCwxMjIsMTU1LDg0LDExNCwxMjEsMzIsMTE2LDExMSwzMiwxMDIsCisgICAgMTA1LDExMCwxMDAsMzIsOTcsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk4LDEyMSwzMiwxMDAsMTAxLDEwOCwxMDEsMTAzLDk3LDExNiwKKyAgICAxMDUsMTEwLDEwMywzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDExNSwxMDEsMTA4LDEwMiw0NiwKKyAgICAxMDIsMTA1LDExMCwxMDAsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw0MCw0MSw0NiwxMCwxMCwKKyAgICAzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwKKyAgICAxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsMzIsMTA1LDExMCwKKyAgICAzMiwxMDIsOTcsMTE4LDExMSwxMTQsMzIsMTExLDEwMiwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwKKyAgICA0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksNDAsNDEsNDYsMTAsMTAsMzIsCisgICAgMzIsMzIsMzIsNzgsMTIyLDQ0LDc4LDExMSwxMTYsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgMTA1LDExMCwxMDMsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSwzMiwxMjMsMTI1LAorICAgIDU4LDMyLDEwOSwxMDUsMTE1LDExNSwxMDUsMTEwLDEwMywzMiw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsCisgICAgOTUsOTUsMTE0LDYyLDAsMCwwLDQxLDYsMjE4LDExLDEwMiwxMDUsMTEwLDEwMCw5NSwKKyAgICAxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNCwzMywwLDAsMCwxMTQsNjMsMCwwLDAsCisgICAgMTE0LDY0LDAsMCwwLDExNCw1MCwwLDAsMCwyMTgsMTMsNzMsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiw4Nyw5NywxMTQsMTEwLDEwNSwxMTAsMTAzLDQxLDUsMTE0LDEwNCwwLDAsMCwKKyAgICAyMTgsOCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsMjE4LDYsMTA4LDExMSw5NywxMDAsCisgICAgMTAxLDExNCwyMTgsOCwxMTIsMTExLDExNCwxMTYsMTA1LDExMSwxMTAsMTE1LDIxOCwzLDEwOSwxMTUsCisgICAgMTAzLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLAorICAgIDIxOCwxNyw5NSwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE1LAorICAgIDEwNCwxMDUsMTA5LDE1NywxLDAsMCwxMTUsMTAsMCwwLDAsMCwxMCwxNCwxLAorICAgIDE2LDEsNCwxLDIyLDEsMTE0LDEyNywwLDAsMCw5OSw0LDAsMCwwLAorICAgIDAsMCwwLDAsMTEsMCwwLDAsMjIsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDEzNiwxLDAsMCwxMDUsMCwxMjUsNCwxMjQsMiwxMDAsMSwxMDcsOSwxMTQsCisgICAgMjIsMTI0LDIsMTI0LDQsMTAwLDIsNjAsMCwxMTAsNCwxMDAsMywxMjUsMiwxMjQsCisgICAgMywxMDAsMSwxMDcsOSwxMTQsNDIsMTI0LDMsMTI0LDQsMTAwLDQsNjAsMCwxMjQsCisgICAgMCwxMDAsMSwxMDAsNSwxMzMsMiwyNSwwLDEyNSw1LDEyNCwwLDEwMCw1LDEwMCwKKyAgICA2LDEzMywyLDI1LDAsMTI1LDYsMTI0LDAsMTAwLDYsMTAwLDcsMTMzLDIsMjUsCisgICAgMCwxMjUsNywxMjQsNSwxMTYsMCwxMDcsMywxMTQsMTI0LDEwMCw4LDEwNiwxLDEyNCwKKyAgICAyLDEyNCw1LDEzMSwyLDEyNSw4LDExNiwyLDEwNiwzLDEwMCw5LDEyNCw4LDEzMSwKKyAgICAyLDEsMCwxMTYsNCwxMjQsOCwxMDIsMSwxMjQsNCwxNDIsMSwxMzAsMSwxMTAsCisgICAgODYsMTE2LDUsMTI0LDYsMTMxLDEsMTAwLDUsMTA3LDMsMTE0LDE2OCwxMDAsMTAsMTA2LAorICAgIDEsMTI0LDIsMTMxLDEsMTI1LDgsMTE2LDIsMTA2LDMsMTAwLDksMTI0LDgsMTMxLAorICAgIDIsMSwwLDExNiw2LDEyNCw4LDEzMSwxLDEzMCwxLDExMCw0MiwxMTYsNSwxMjQsCisgICAgNywxMzEsMSwxMDAsNSwxMDcsMywxMTQsMjEwLDEwMCwxMSwxMDYsMSwxMjQsMiwxMzEsCisgICAgMSwxMjUsOCwxMTYsMiwxMDYsMywxMDAsOSwxMjQsOCwxMzEsMiwxLDAsMTE2LAorICAgIDYsMTI0LDgsMTMxLDEsMTMwLDEsMTI0LDEsMTAwLDEsMTA3LDksMTQ0LDEsMTE0LAorICAgIDEyNCwxMjEsMTYsMTE2LDcsMTI0LDEsMTAwLDEyLDI1LDAsMTMxLDEsMTI1LDksODcsCisgICAgMCwxMTAsMjIsNCwwLDExNiw4LDEwNywxMCwxNDQsMSwxMTQsMiwxLDAsMSwKKyAgICAwLDEsMCw4OSwwLDExMCw1MCw4OCwwLDExNiw5LDEyNCw2LDEzMSwxLDEyNCwKKyAgICA5LDEwNywzLDE0NCwxLDExNCw1MiwxMDAsMTMsMTA2LDEsMTI0LDIsMTMxLDEsMTI1LAorICAgIDgsMTE2LDIsMTA2LDMsMTAwLDksMTI0LDgsMTMxLDIsMSwwLDExNiw0LDEyNCwKKyAgICA4LDEwMiwxLDEyNCw0LDE0MiwxLDEzMCwxLDEyMSwxNiwxMjQsMSwxMDAsMTQsMjUsCisgICAgMCwxMDAsMTUsNjQsMCwxMjUsMTAsODcsMCwxMTAsMjIsNCwwLDExNiw4LDEwNywKKyAgICAxMCwxNDQsMSwxMTQsOTAsMSwwLDEsMCwxLDAsODksMCwxMTAsMzQsODgsCisgICAgMCwxMTYsOSwxMjQsNywxMzEsMSwxMjQsMTAsMTA3LDMsMTQ0LDEsMTE0LDEyNCwxMTYsCisgICAgNCwxMDAsMTMsMTA2LDEsMTI0LDIsMTMxLDEsMTAyLDEsMTI0LDQsMTQyLDEsMTMwLAorICAgIDEsMTI0LDAsMTAwLDcsMTAwLDEsMTMzLDIsMjUsMCw4MywwLDQxLDE2LDk3LAorICAgIDEyMiwxLDAsMCw4Niw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDEwNCwxMDEsOTcsMTAwLDEwMSwxMTQsMzIsMTExLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsCisgICAgOTcsMTE1LDExNSwxMDEsMTAwLDQ1LDEwNSwxMTAsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwKKyAgICAxMDEsMzIsOTcsMTAzLDk3LDEwNSwxMTAsMTE1LDExNiwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLAorICAgIDk1LDExNSwxMTYsOTcsMTE2LDExNSwzMiw0MCwxMDUsMTAyLDEwLDMyLDMyLDMyLDMyLDEwMywKKyAgICAxMDUsMTE4LDEwMSwxMTAsNDEsMzIsOTcsMTEwLDEwMCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwKKyAgICAxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwKKyAgICAzMiwxMTYsMTA0LDk3LDExNiwzMiw5OSw5NywxMTAsMzIsOTgsMTAxLDMyLDk5LDExMSwxMDksCisgICAgMTEyLDEwNSwxMDgsMTAxLDEwMCwzMiw5OCwxMjEsMzIsOTksMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsCisgICAgNDAsNDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNjUsMTA4LDEwOCwzMiwxMTEsMTE2LDEwNCwKKyAgICAxMDEsMTE0LDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwxMTUsMzIsOTcsMTE0LDEwMSwKKyAgICAzMiwxMTcsMTE1LDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDEsMTEwLDEwNCw5NywxMTAsOTksMTAxLAorICAgIDMyLDEwMSwxMTQsMTE0LDExMSwxMTQsMzIsMTE0LDEwMSwxMTIsMTExLDExNCwxMTYsMTA1LDExMCwxMDMsCisgICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw2OSwxMTQsMTE0LAorICAgIDExMSwxMTQsMzIsMTA1LDExNSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDMyLDExOSwxMDQsMTAxLAorICAgIDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksOTcsMTAzLDEwNSw5OSwzMiwxMTAsMTE3LDEwOSw5OCwKKyAgICAxMDEsMTE0LDMyLDEwNSwxMTUsMzIsMTA1LDExMCw5OSwxMTEsMTE0LDExNCwxMDEsOTksMTE2LDMyLAorICAgIDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsCisgICAgMTA1LDExNSwxMCwzMiwzMiwzMiwzMiwxMDIsMTExLDExNywxMTAsMTAwLDMyLDExNiwxMTEsMzIsCisgICAgOTgsMTAxLDMyLDExNSwxMTYsOTcsMTA4LDEwMSw0NiwzMiw2OSw3OSw3MCw2OSwxMTQsMTE0LAorICAgIDExMSwxMTQsMzIsMTA1LDExNSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDMyLDExOSwxMDQsMTAxLAorICAgIDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDAsOTcsMTE2LDk3LDMyLDEwNSwxMTUsMzIsMTAyLDExMSwKKyAgICAxMTcsMTEwLDEwMCwzMiwxMTYsMTExLDMyLDk4LDEwMSwxMCwzMiwzMiwzMiwzMiwxMTYsMTE0LAorICAgIDExNywxMTAsOTksOTcsMTE2LDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzgsMTE0LAorICAgIDEwMiwwLDAsMCwxMjIsMTAsNjAsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsNjIsCisgICAgMTE0LDM3LDAsMCwwLDExNCwxNCwwLDAsMCwyMzMsOCwwLDAsMCwyMzMsCisgICAgMTIsMCwwLDAsMTIyLDMwLDk4LDk3LDEwMCwzMiwxMDksOTcsMTAzLDEwNSw5OSwzMiwKKyAgICAxMTAsMTE3LDEwOSw5OCwxMDEsMTE0LDMyLDEwNSwxMTAsMzIsMTIzLDMzLDExNCwxMjUsNTgsMzIsCisgICAgMTIzLDMzLDExNCwxMjUsMTIyLDIsMTIzLDEyNSwxMjIsNDMsMTE0LDEwMSw5Nyw5OSwxMDQsMTAxLAorICAgIDEwMCwzMiw2OSw3OSw3MCwzMiwxMTksMTA0LDEwNSwxMDgsMTAxLDMyLDExNCwxMDEsOTcsMTAwLAorICAgIDEwNSwxMTAsMTAzLDMyLDExNiwxMDUsMTA5LDEwMSwxMTUsMTE2LDk3LDEwOSwxMTIsMzIsMTA1LDExMCwKKyAgICAzMiwxMjMsMzMsMTE0LDEyNSwxMjIsNDgsMTE0LDEwMSw5Nyw5OSwxMDQsMTAxLDEwMCwzMiw2OSwKKyAgICA3OSw3MCwzMiwxMTksMTA0LDEwNSwxMDgsMTAxLDMyLDExNCwxMDEsOTcsMTAwLDEwNSwxMTAsMTAzLAorICAgIDMyLDExNSwxMDUsMTIyLDEwMSwzMiwxMTEsMTAyLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsCisgICAgMTA1LDExMCwzMiwxMjMsMzMsMTE0LDEyNSwyMTgsNSwxMDksMTE2LDEwNSwxMDksMTAxLDEyMiwyNiwKKyAgICA5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDUsMTE1LDMyLDExNSwxMTYsOTcsMTA4LAorICAgIDEwMSwzMiwxMDIsMTExLDExNCwzMiwxMjMsMzMsMTE0LDEyNSwyMTgsNCwxMTUsMTA1LDEyMiwxMDEsCisgICAgMTA4LDMsMCwwLDAsMjU1LDEyNywyNTUsMTI3LDMsMCw0MSwxMCwyMTgsMTIsNzcsCisgICAgNjUsNzEsNzMsNjcsOTUsNzgsODUsNzcsNjYsNjksODIsMTE0LDUwLDAsMCwwLAorICAgIDExNCwxMTgsMCwwLDAsMjE4LDE2LDk1LDExOCwxMDEsMTE0LDk4LDExMSwxMTUsMTAxLDk1LAorICAgIDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLDExNCwxMDMsMCwwLDAsMTE0LDMzLDAsMCwKKyAgICAwLDIxOCw4LDY5LDc5LDcwLDY5LDExNCwxMTQsMTExLDExNCwxMTQsMTYsMCwwLDAsCisgICAgMjE4LDgsNzUsMTAxLDEyMSw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDIxLDAsMCwwLDQxLAorICAgIDExLDExNCw1NiwwLDAsMCwyMTgsMTIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMTUsCisgICAgMTE2LDk3LDExNiwxMTUsMTE0LDEwMiwwLDAsMCwxMTQsMzcsMCwwLDAsOTAsMTEsCisgICAgMTAxLDEyMCw5OSw5NSwxMDAsMTAxLDExNiw5NywxMDUsMTA4LDExNSw5MCw1LDEwOSw5NywxMDMsCisgICAgMTA1LDk5LDkwLDEzLDExNCw5NywxMTksOTUsMTE2LDEwNSwxMDksMTAxLDExNSwxMTYsOTcsMTA5LAorICAgIDExMiw5MCw4LDExNCw5NywxMTksOTUsMTE1LDEwNSwxMjIsMTAxLDExNCw3OSwwLDAsMCwKKyAgICAyMTgsMTIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMDksMTE2LDEwNSwxMDksMTAxLDIxOCwxMSwKKyAgICAxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDExNSwxMDUsMTIyLDEwMSwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMjUsOTUsMTE4LDk3LDEwOCwKKyAgICAxMDUsMTAwLDk3LDExNiwxMDEsOTUsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsOTUsMTA0LAorICAgIDEwMSw5NywxMDAsMTAxLDExNCwxNzQsMSwwLDAsMTE1LDc2LDAsMCwwLDAsMTEsCisgICAgNCwxLDgsMSwxMCwzLDQsMSw4LDEsOCwxLDEyLDEsMTIsMSwKKyAgICAxMiwxLDgsMSwxMiwxLDEyLDEsMTQsMSwxMiwxLDEwLDEsMTIsMSwKKyAgICAxMCwxLDEyLDEsMTAsMSwxMiwxLDgsMSwxMCwxLDIsMSwxNiwxLAorICAgIDE2LDEsNiwyLDE0LDEsMTAsMSwxMiwxLDEyLDEsMiwxLDE2LDEsCisgICAgMTYsMSw2LDIsMTQsMSwxMiwxLDYsMSwxMTQsMTM5LDAsMCwwLDk5LAorICAgIDQsMCwwLDAsMCwwLDAsMCw1LDAsMCwwLDUsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDgwLDAsMCwwLDExNiwwLDEwNiwxLDEyNCwwLDEzMSwKKyAgICAxLDEyNSw0LDExNiwyLDEyNCw0LDExNiwzLDEzMSwyLDExNCw1NiwxMTYsNCwxMDYsCisgICAgNSwxMDAsMSwxMjQsMiwxMzEsMiwxLDAsMTI0LDMsMTAwLDIsMTA3LDksMTE0LAorICAgIDUyLDExNiw2LDEwNiw3LDEyNCw0LDEyNCwzLDEzMSwyLDEsMCwxMjQsNCw4MywKKyAgICAwLDExNiw4LDEwMCwzLDEwNiw5LDEyNCwyLDEzMSwxLDEyNCwxLDEyNCwyLDEwMCwKKyAgICA0LDE0MSwzLDEzMCwxLDEwMCwyLDgzLDAsNDEsNSwxMjIsNjAsNjcsMTExLDEwOSwKKyAgICAxMTIsMTA1LDEwOCwxMDEsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsOTcsMTE1LAorICAgIDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDEwMSwxMDAsMzIsOTgsMTIxLDMyLDk1LDExOCw5NywKKyAgICAxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDk1LAorICAgIDEwNCwxMDEsOTcsMTAwLDEwMSwxMTQsNDAsNDEsNDYsMTIyLDIxLDk5LDExMSwxMDAsMTAxLDMyLAorICAgIDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTIzLDMzLDExNCwxMjUsCisgICAgNzgsMTIyLDIzLDc4LDExMSwxMTAsNDUsOTksMTExLDEwMCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsCisgICAgOTksMTE2LDMyLDEwNSwxMTAsMzIsMTIzLDMzLDExNCwxMjUsNDEsMiwxMTQsMTAyLDAsMCwKKyAgICAwLDExNCwzNywwLDAsMCw0MSwxMCwyMTgsNywxMDksOTcsMTE0LDExNSwxMDQsOTcsCisgICAgMTA4LDkwLDUsMTA4LDExMSw5NywxMDAsMTE1LDIxOCwxMCwxMDUsMTE1LDEwNSwxMTAsMTE1LDExNiwKKyAgICA5NywxMTAsOTksMTAxLDIxOCwxMCw5NSw5OSwxMTEsMTAwLDEwMSw5NSwxMTYsMTIxLDExMiwxMDEsCisgICAgMTE0LDExOCwwLDAsMCwxMTQsMTMzLDAsMCwwLDIxOCw0LDk1LDEwNSwxMDksMTEyLAorICAgIDkwLDE2LDk1LDEwMiwxMDUsMTIwLDk1LDk5LDExMSw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LAorICAgIDEwOSwxMDEsMTE0LDEwMywwLDAsMCwxMTQsNTAsMCwwLDAsNDEsNSwxMTQsNTYsCisgICAgMCwwLDAsMTE0LDEwMiwwLDAsMCwxMTQsOTMsMCwwLDAsMTE0LDk0LDAsCisgICAgMCwwLDIxOCw0LDk5LDExMSwxMDAsMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw2LDAsMCwwLDIxOCwxNyw5NSw5OSwxMTEsMTA5LDExMiwxMDUsMTA4LAorICAgIDEwMSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwyMjksMSwwLDAsMTE1LDE2LAorICAgIDAsMCwwLDAsMiwxMCwxLDEwLDEsMTIsMSw4LDEsMTIsMSw0LAorICAgIDIsMTAsMSwxMTQsMTQ1LDAsMCwwLDExNCw2MiwwLDAsMCw5OSwzLDAsCisgICAgMCwwLDAsMCwwLDAsNCwwLDAsMCwzLDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSw1NiwwLDAsMCwxMTYsMCwxMTYsMSwxMzEsMSwxMjUsMywxMjQsCisgICAgMywxMDYsMiwxMTYsMywxMjQsMSwxMzEsMSwxMzEsMSwxLDAsMTI0LDMsMTA2LAorICAgIDIsMTE2LDMsMTI0LDIsMTMxLDEsMTMxLDEsMSwwLDEyNCwzLDEwNiwyLDExNiwKKyAgICA0LDEwNiw1LDEyNCwwLDEzMSwxLDEzMSwxLDEsMCwxMjQsMyw4MywwLDQxLAorICAgIDEsMTIyLDgwLDY3LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLDMyLDk3LDMyLDk5LDExMSwxMDAsCisgICAgMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiwxMDUsMTEwLDExNiwxMTEsMzIsOTgsMTIxLAorICAgIDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTAyLDExMSwxMTQsMzIsMTE5LDExNCwxMDUsMTE2LDEwNSwKKyAgICAxMTAsMTAzLDMyLDExMSwxMTcsMTE2LDMyLDExNiwxMTEsMzIsOTcsMzIsOTgsMTIxLDExNiwxMDEsCisgICAgNDUsOTksMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsMTAwLDEwLDMyLDMyLDMyLDMyLDEwMiwxMDUsCisgICAgMTA4LDEwMSw0Niw0MSw2LDIxOCw5LDk4LDEyMSwxMTYsMTAxLDk3LDExNCwxMTQsOTcsMTIxLAorICAgIDExNCwxMzIsMCwwLDAsMjE4LDYsMTAxLDEyMCwxMTYsMTAxLDExMCwxMDAsMTE0LDE5LDAsCisgICAgMCwwLDExNCwxNDAsMCwwLDAsOTAsNSwxMDAsMTE3LDEwOSwxMTIsMTE1LDQxLDQsCisgICAgMTE0LDE0NCwwLDAsMCwxMTQsMTMwLDAsMCwwLDExNCwxMzgsMCwwLDAsMTE0LAorICAgIDU2LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LAorICAgIDAsMCwwLDIxOCwxNyw5NSw5OSwxMTEsMTAwLDEwMSw5NSwxMTYsMTExLDk1LDk4LDEyMSwKKyAgICAxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDI0MSwxLDAsMCwxMTUsMTAsMCwwLDAsMCwKKyAgICAzLDgsMSwxNCwxLDE0LDEsMTYsMSwxMTQsMTQ4LDAsMCwwLDk5LDEsCisgICAgMCwwLDAsMCwwLDAsMCw1LDAsMCwwLDQsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDYyLDAsMCwwLDEwMCwxLDEwMCwyLDEwOCwwLDEyNSwxLAorICAgIDExNiwxLDEwNiwyLDEyNCwwLDEzMSwxLDEwNiwzLDEyNSwyLDEyNCwxLDEwNiw0LAorICAgIDEyNCwyLDEzMSwxLDEyNSwzLDExNiwxLDEwNiw1LDEwMCwyLDEwMCwzLDEzMSwyLAorICAgIDEyNSw0LDEyNCw0LDEwNiw2LDEyNCwwLDEwNiw2LDEyNCwzLDEwMCwxLDI1LDAsCisgICAgMTMxLDEsMTMxLDEsODMsMCw0MSw0LDEyMiwxMjEsNjgsMTAxLDk5LDExMSwxMDAsMTAxLAogICAgIDMyLDk4LDEyMSwxMTYsMTAxLDExNSwzMiwxMTQsMTAxLDExMiwxMTQsMTAxLDExNSwxMDEsMTEwLDExNiwKICAgICAxMDUsMTEwLDEwMywzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDk5LDExMSwxMDAsMTAxLDMyLAogICAgIDk3LDExMCwxMDAsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LApAQCAtNzkzLDk4ICs3MTksOTIgQEAKICAgICAxMDEsMTE0LDExNSw5NywxMDgsMzIsMTEwLDEwMSwxMTksMTA4LDEwNSwxMTAsMTAxLDMyLDExNSwxMTcsCiAgICAgMTEyLDExMiwxMTEsMTE0LDExNiwzMiwxMDUsMTE1LDMyLDExNywxMTUsMTAxLDEwMCwzMiwxMDUsMTEwLAogICAgIDMyLDExNiwxMDQsMTAxLDMyLDEwMCwxMDEsOTksMTExLDEwMCwxMDUsMTEwLDEwMyw0NiwxMCwzMiwKLSAgICAzMiwzMiwzMiwxMTQsNjEsMCwwLDAsNzgsODQsNDEsNywyMTgsOCwxMTYsMTExLAotICAgIDEwNywxMDEsMTEwLDEwNSwxMjIsMTAxLDExNCw1MSwwLDAsMCw5MCw3LDY2LDEyMSwxMTYsCisgICAgMzIsMzIsMzIsMTE0LDYyLDAsMCwwLDc4LDg0LDQxLDcsMjE4LDgsMTE2LDExMSwKKyAgICAxMDcsMTAxLDExMCwxMDUsMTIyLDEwMSwxMTQsNTIsMCwwLDAsOTAsNyw2NiwxMjEsMTE2LAogICAgIDEwMSwxMTUsNzMsNzksOTAsOCwxMTQsMTAxLDk3LDEwMCwxMDgsMTA1LDExMCwxMDEsOTAsMTUsCiAgICAgMTAwLDEwMSwxMTYsMTAxLDk5LDExNiw5NSwxMDEsMTEwLDk5LDExMSwxMDAsMTA1LDExMCwxMDMsOTAsCiAgICAgMjUsNzMsMTEwLDk5LDExNCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDEwOCw3OCwxMDEsMTE5LDEwOCwKICAgICAxMDUsMTEwLDEwMSw2OCwxMDEsOTksMTExLDEwMCwxMDEsMTE0LDIxOCw2LDEwMCwxMDEsOTksMTExLAogICAgIDEwMCwxMDEsNDEsNSwyMTgsMTIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSw5OCwxMjEsMTE2LAotICAgIDEwMSwxMTUsMTE0LDE1MywwLDAsMCw5MCwyMSwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LAorICAgIDEwMSwxMTUsMTE0LDE0OSwwLDAsMCw5MCwyMSwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LAogICAgIDk4LDEyMSwxMTYsMTAxLDExNSw5NSwxMTQsMTAxLDk3LDEwMCwxMDgsMTA1LDExMCwxMDEsMjE4LDgsCiAgICAgMTAxLDExMCw5OSwxMTEsMTAwLDEwNSwxMTAsMTAzLDkwLDE1LDExMCwxMDEsMTE5LDEwOCwxMDUsMTEwLAogICAgIDEwMSw5NSwxMDAsMTAxLDk5LDExMSwxMDAsMTAxLDExNCwxMTQsNCwwLDAsMCwxMTQsNCwKICAgICAwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTMsMTAwLDEwMSw5OSwxMTEsMTAwLDEwMSwKLSAgICA5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDI0OCwxLDAsMCwxMTUsMTAsMCwwLDAsCi0gICAgMCw1LDEyLDEsMTgsMSwxNSwxLDE4LDEsMTE0LDE1NywwLDAsMCwxMTQsCi0gICAgMTI5LDAsMCwwLDIxOCwyNiwxMTUsMTE3LDk4LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LAotICAgIDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTUsCi0gICAgOTksMiwwLDAsMCwyLDAsMCwwLDksMCwwLDAsMTksMCwwLAotICAgIDAsNjcsMCwwLDAsMTE1LDg5LDEsMCwwLDEyNCwxLDAsMTAwLDEsMCwKLSAgICAxMDcsOCwwLDExNCw3MywwLDEwMCwyLDAsMTI1LDEsMCwxMTYsMCwwLDEyNCwKLSAgICAyLDAsMTAwLDMsMCwxMzEsMiwwLDExNCw3MywwLDEyMSwxOSwwLDEyNCwyLAotICAgIDAsMTA2LDEsMCwxMjQsMCwwLDEzMSwxLDAsMTI1LDEsMCw4NywxMTAsMTgsCi0gICAgMCw0LDExNiwyLDAsMTA3LDEwLDAsMTE0LDcyLDAsMSwxLDEsODksMTEwLAotICAgIDEsMCw4OCwxMTYsMywwLDEwNiw0LDAsMTI0LDAsMCwxMjQsMiwwLDEwMCwKLSAgICA0LDAsMTI0LDEsMCwxMzEsMiwxLDEyNSw0LDAsMTAwLDUsMCwxMjQsNCwKLSAgICAwLDk1LDUsMCwxMjQsMiwwLDEwMCwxLDAsMTA3LDgsMCwxMTQsMTk0LDAsCi0gICAgMTIwLDczLDAsMTE2LDYsMCwxMzEsMCwwLDY4LDkzLDU4LDAsOTIsMiwwLAotICAgIDEyNSw1LDAsMTI1LDYsMCwxMjQsMSwwLDEwNiw3LDAsMTE2LDgsMCwxMjQsCi0gICAgNiwwLDEzMSwxLDAsMTMxLDEsMCwxMTQsMTI4LDAsMTI0LDUsMCwxMjQsMCwKLSAgICAwLDEyNCwxLDAsMTMxLDIsMCwxMjUsMiwwLDEyNCwyLDAsMTI0LDQsMCwKLSAgICA5NSw5LDAsODAsMTEzLDEyOCwwLDg3LDEwMCwxLDAsODMsMTI0LDMsMCwxMTYsCi0gICAgMTAsMCwxMDcsOCwwLDExNCwyMywxLDExNiwwLDAsMTI0LDIsMCwxMDAsNiwKLSAgICAwLDEzMSwyLDAsMTE0LDMyLDEsMTIxLDE5LDAsMTI0LDIsMCwxMDYsMTEsMCwKLSAgICAxMjQsMCwwLDEzMSwxLDAsMTI1LDcsMCw4NywxMTAsMTgsMCw0LDExNiwyLAotICAgIDAsMTA3LDEwLDAsMTE0LDQsMSwxLDEsMSw4OSwxMTMsMzIsMSw4OCwxMjQsCi0gICAgNywwLDExNCwzMiwxLDEwMywwLDAsMTI0LDQsMCw5NSwxMiwwLDExMCw5LAotICAgIDAsMTI0LDMsMCwxMjQsNCwwLDk1LDEyLDAsMTI0LDQsMCwxMDYsMTIsMCwKLSAgICAxMDMsMCwwLDEwNywyLDAsMTE0LDg1LDEsMTI0LDEsMCwxMTQsODUsMSwxMTYsCi0gICAgMTMsMCwxMjQsMSwwLDEzMSwxLDAsMTAwLDcsMCwyNSwxMjUsOCwwLDEyNCwKLSAgICA0LDAsMTA2LDEyLDAsMTA2LDE0LDAsMTI0LDgsMCwxMzEsMSwwLDEsMTI0LAotICAgIDQsMCw4Myw0MSw4LDk3LDYxLDEsMCwwLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsCi0gICAgMzIsOTcsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMzIsOTgsCi0gICAgOTcsMTE1LDEwMSwxMDAsMzIsMTExLDExMCwzMiw5NywzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTA4LAotICAgIDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTExLAotICAgIDMyLDEwNSwxMTAsMTAwLDEwNSw5OSw5NywxMTYsMTAxLDMyLDExNiwxMDQsOTcsMTE2LDMyLDExNiwKLSAgICAxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsOTcsMzIsMTEyLAotICAgIDk3LDk5LDEwNyw5NywxMDMsMTAxLDQ0LDMyLDExNSwxMDEsMTE2LDEwLDMyLDMyLDMyLDMyLAotICAgIDExNSwxMTcsOTgsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE1LDEwMSw5NywxMTQsOTksMTA0LAotICAgIDk1LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDExNSwzMiwxMTYsMTExLDMyLDk3LDMyLAotICAgIDEwOCwxMDUsMTE1LDExNiwzMiwxMTEsMTAyLDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwKLSAgICAxMjEsMzIsMTEyLDk3LDExNiwxMDQsMTE1LDQ2LDMyLDMyLDY1LDExMCwxMCwzMiwzMiwzMiwKLSAgICAzMiwxMDEsMTA5LDExMiwxMTYsMTIxLDMyLDEwOCwxMDUsMTE1LDExNiwzMiwxMDUsMTE1LDMyLDExNSwKLSAgICAxMTcsMTAyLDEwMiwxMDUsOTksMTA1LDEwMSwxMTAsMTE2LDQ0LDMyLDExNiwxMDQsMTExLDExNywxMDMsCi0gICAgMTA0LDMyLDEwNSwxMTYsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDExMSwxMTYsMTA0LDEwMSwxMTQsMTE5LAotICAgIDEwNSwxMTUsMTAxLDMyLDExNywxMTUsMTAxLDEwMiwxMTcsMTA4LDMyLDExNiwxMTEsMzIsMTE2LDEwNCwKLSAgICAxMDEsMTAsMzIsMzIsMzIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTE1LDEyMSwxMTUsCi0gICAgMTE2LDEwMSwxMDksNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwxMDgsMTExLAotICAgIDk3LDEwMCwxMDEsMTE0LDMyLDEwOSwxMTcsMTE1LDExNiwzMiwxMTYsOTcsMTA3LDEwMSwzMiw5NywKLSAgICAzMiwxMTUsMTEyLDEwMSw5OSwzMiw5NywxMTUsMzIsMTA1LDExNiwxMTUsMzIsMTExLDExMCwxMDgsCi0gICAgMTIxLDMyLDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw0MCw0MSwzMiw5NywxMTQsMTAzLAotICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDc4LDEyMiw5LDYwLDExNywxMTAsMTA3LDExMCwxMTEsCi0gICAgMTE5LDExMCw2MiwyMTgsMTIsMTAzLDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksCi0gICAgMTAxLDIxOCw2LDExMSwxMTQsMTA1LDEwMywxMDUsMTEwLDg0LDIxOCwxMCwxMDUsMTE1LDk1LDExMiwKLSAgICA5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMTQsNjEsMCwwLDAsNDEsMTUsMTE0LDExNywwLAotICAgIDAsMCwxMTQsMTU5LDAsMCwwLDExNCwxMDksMCwwLDAsMTE0LDEyMywwLDAsCi0gICAgMCwyMTgsMTAsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw4MywxMTIsMTAxLDk5LDkwLDEzLDk1LAotICAgIDExNSwxMDEsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSw5NywxMTYsMTE2LDExNCwyMTgsMjcsOTUsMTAzLAotICAgIDEwMSwxMTYsOTUsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsOTUsMTAyLDEwNSwxMDgsCi0gICAgMTAxLDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LDExNCw5NCwwLDAsMCwxMTQsOTUsCi0gICAgMCwwLDAsMTE0LDEyOSwwLDAsMCwyMTgsOSw5NSw4MCw3OSw4MCw4NSw3NiwKLSAgICA2NSw4NCw2OSwxMTQsMTYxLDAsMCwwLDExNCwxNTgsMCwwLDAsMTE0LDQwLDAsCi0gICAgMCwwLDIxOCw2LDk3LDExMiwxMTIsMTAxLDExMCwxMDAsNDEsOSwxMTQsMTA4LDAsMCwKLSAgICAwLDkwLDgsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMTE0LDEyOSwwLDAsMCwKLSAgICAxMTQsMTU4LDAsMCwwLDIxOCw0LDExNSwxMTIsMTAxLDk5LDIxOCwxMiwxMDgsMTExLDk3LAotICAgIDEwMCwxMDEsMTE0LDk1LDk5LDEwOCw5NywxMTUsMTE1LDIxOCw4LDExNSwxMTcsMTAyLDEwMiwxMDUsCi0gICAgMTIwLDEwMSwxMTUsMTE0LDE2MSwwLDAsMCw5MCw3LDEwMCwxMDUsMTE0LDExMCw5NywxMDksCi0gICAgMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLAotICAgIDIxOCwyMywxMTUsMTEyLDEwMSw5OSw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTAyLDEwNSwxMDgsMTAxLAotICAgIDk1LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDksMiwwLDAsMTE1LDYwLDAsCi0gICAgMCwwLDAsMTIsMTIsNCw2LDEsMTUsMiwzLDEsMTksMSwxMywxLAotICAgIDUsOCwyNCwxLDksMywxMiwxLDIyLDEsMjEsMSwxNSwxLDksMSwKLSAgICA1LDIsNCwzLDEyLDIsMTUsMSwzLDEsMTksMSwxMywxLDUsMiwKLSAgICA2LDEsMTIsMiw5LDEsMTUsMSw2LDEsMTYsMSwxNiwyLDExNCwxNjksCi0gICAgMCwwLDAsOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsCi0gICAgNSwwLDAsMCw2NCwwLDAsMCwxMTUsMTIxLDAsMCwwLDEwMSwwLDAsCi0gICAgOTAsMSwwLDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMCwKLSAgICAyLDAsOTAsNCwwLDEwMCwzLDAsOTAsNSwwLDEwMCw0LDAsOTAsNiwKLSAgICAwLDEwMSw3LDAsMTAwLDUsMCwxMDAsNiwwLDEzMiwwLDAsMTMxLDEsMCwKLSAgICA5MCw4LDAsMTAxLDcsMCwxMDAsNywwLDEwMCw4LDAsMTMyLDAsMCwxMzEsCi0gICAgMSwwLDkwLDksMCwxMDEsNywwLDEwMCw5LDAsMTAwLDksMCwxMDAsMTAsCi0gICAgMCwxMDAsMTEsMCwxMzIsMiwwLDEzMSwxLDAsOTAsMTAsMCwxMDEsNywwLAotICAgIDEwMCw5LDAsMTAwLDEyLDAsMTAwLDEzLDAsMTMyLDEsMCwxMzEsMSwwLDkwLAotICAgIDExLDAsMTAwLDksMCw4Myw0MSwxNCwyMTgsMjEsODcsMTA1LDExMCwxMDAsMTExLDExOSwKKyAgICA5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDI1MSwxLDAsMCwxMTUsMTAsMCwwLDAsCisgICAgMCw1LDgsMSwxMiwxLDEwLDEsMTIsMSwxMTQsMTUzLDAsMCwwLDQxLAorICAgIDIsMTE0LDEyNCwwLDAsMCwyMTgsMjYsMTE1LDExNyw5OCwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw5NSwxMTUsMTAxLDk3LDExNCw5OSwxMDQsOTUsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwKKyAgICAxMTAsMTE1LDk5LDIsMCwwLDAsMiwwLDAsMCw5LDAsMCwwLDE5LAorICAgIDAsMCwwLDY3LDAsMCwwLDExNSwxOCwxLDAsMCwxMjQsMSwxMDAsMSwKKyAgICAxMDcsOCwxMTQsNjAsMTAwLDIsMTI1LDEsMTE2LDAsMTI0LDIsMTAwLDMsMTMxLDIsCisgICAgMTE0LDcwLDEyMSwxNCwxMjQsMiwxMDYsMSwxMjQsMCwxMzEsMSwxMjUsMSw4NywwLAorICAgIDExMyw3MCw0LDAsMTE2LDIsMTA3LDEwLDExNCw1NiwxLDAsMSwwLDEsMCwKKyAgICA4OSwwLDExMyw3MCw4OCwwLDExMCwxMCwxMTYsMywxMDYsNCwxMjQsMSwxMzEsMSwKKyAgICAxMjUsMSwxMTYsNSwxMDYsNiwxMjQsMCwxMjQsMiwxMjQsMSwxMDAsNCwxNDEsMywKKyAgICAxMjUsNCwxMDAsNSwxMjQsNCw5NSw3LDEyNCwyLDEwMCwxLDEwNyw4LDExNCwxNTYsCisgICAgMTIwLDU0LDExNiw4LDEzMSwwLDY4LDAsOTMsNDAsOTIsMiwxMjUsNSwxMjUsNiwKKyAgICAxMjQsMSwxMDYsOSwxMTYsMTAsMTI0LDYsMTMxLDEsMTMxLDEsMTE0LDEwOCwxMjQsNSwKKyAgICAxMjQsMCwxMjQsMSwxMzEsMiwxMjUsMiwxMjQsMiwxMjQsNCw5NSwxMSw4MCwwLAorICAgIDExMywxMDgsODcsMCwxMDAsMSw4MywwLDEyNCwzLDExNiwxMiwxMDcsOCwxMTQsMjIyLAorICAgIDExNiwwLDEyNCwyLDEwMCw2LDEzMSwyLDExNCwyMjgsMTIxLDE0LDEyNCwyLDEwNiwxMywKKyAgICAxMjQsMCwxMzEsMSwxMjUsNyw4NywwLDExMCwyMCw0LDAsMTE2LDIsMTA3LDEwLAorICAgIDExNCwyMDgsMSwwLDEsMCwxLDAsODksMCwxMTMsMjI4LDg4LDAsMTI0LDcsCisgICAgMTE0LDIyOCwxMDMsMCwxMjQsNCw5NSwxNCwxMTAsNiwxMjQsMywxMjQsNCw5NSwxNCwKKyAgICAxMjQsNCwxMDYsMTQsMTAzLDAsMTA3LDIsMTQ0LDEsMTE0LDE0LDEyNCwxLDE0NCwxLAorICAgIDExNCwxNCwxMTYsMTUsMTI0LDEsMTMxLDEsMTAwLDcsMjUsMCwxMjUsOCwxMjQsNCwKKyAgICAxMDYsMTQsMTA2LDE2LDEyNCw4LDEzMSwxLDEsMCwxMjQsNCw4MywwLDQxLDgsCisgICAgOTcsNjEsMSwwLDAsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw5NywzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwzMiw5OCw5NywxMTUsMTAxLDEwMCwzMiwKKyAgICAxMTEsMTEwLDMyLDk3LDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDgsMTExLDk5LDk3LDExNiwxMDUsCisgICAgMTExLDExMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMTEsMzIsMTA1LDExMCwxMDAsMTA1LAorICAgIDk5LDk3LDExNiwxMDEsMzIsMTE2LDEwNCw5NywxMTYsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw5NywzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywKKyAgICAxMDEsNDQsMzIsMTE1LDEwMSwxMTYsMTAsMzIsMzIsMzIsMzIsMTE1LDExNyw5OCwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSw5NSwxMTUsMTAxLDk3LDExNCw5OSwxMDQsOTUsMTA4LDExMSw5OSw5NywKKyAgICAxMTYsMTA1LDExMSwxMTAsMTE1LDMyLDExNiwxMTEsMzIsOTcsMzIsMTA4LDEwNSwxMTUsMTE2LDMyLAorICAgIDExMSwxMDIsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSwzMiwxMTIsOTcsMTE2LAorICAgIDEwNCwxMTUsNDYsMzIsMzIsNjUsMTEwLDEwLDMyLDMyLDMyLDMyLDEwMSwxMDksMTEyLDExNiwKKyAgICAxMjEsMzIsMTA4LDEwNSwxMTUsMTE2LDMyLDEwNSwxMTUsMzIsMTE1LDExNywxMDIsMTAyLDEwNSw5OSwKKyAgICAxMDUsMTAxLDExMCwxMTYsNDQsMzIsMTE2LDEwNCwxMTEsMTE3LDEwMywxMDQsMzIsMTA1LDExNiwxMTUsCisgICAgMzIsMTEwLDExMSwxMTYsMzIsMTExLDExNiwxMDQsMTAxLDExNCwxMTksMTA1LDExNSwxMDEsMzIsMTE3LAorICAgIDExNSwxMDEsMTAyLDExNywxMDgsMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMTUsMTIxLDExNSwxMTYsMTAxLDEwOSw0NiwxMCwKKyAgICAxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsCisgICAgMTA5LDExNywxMTUsMTE2LDMyLDExNiw5NywxMDcsMTAxLDMyLDk3LDMyLDExNSwxMTIsMTAxLDk5LAorICAgIDMyLDk3LDExNSwzMiwxMDUsMTE2LDExNSwzMiwxMTEsMTEwLDEwOCwxMjEsMzIsOTUsOTUsMTA1LAorICAgIDExMCwxMDUsMTE2LDk1LDk1LDQwLDQxLDMyLDk3LDExNCwxMDMsNDYsMTAsMTAsMzIsMzIsCisgICAgMzIsMzIsNzgsMTIyLDksNjAsMTE3LDExMCwxMDcsMTEwLDExMSwxMTksMTEwLDYyLDIxOCwxMiwKKyAgICAxMDMsMTAxLDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsNDEsMSwyMTgsNiwKKyAgICAxMTEsMTE0LDEwNSwxMDMsMTA1LDExMCw4NCwyMTgsMTAsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LAorICAgIDk3LDEwMywxMDEsMTE0LDYyLDAsMCwwLDQxLDE3LDExNCwxMTIsMCwwLDAsMTE0LAorICAgIDE1NSwwLDAsMCwxMTQsMTAzLDAsMCwwLDExNCwzLDAsMCwwLDExNCw2NywKKyAgICAwLDAsMCwxMTQsMTE4LDAsMCwwLDIxOCwxMCw3NywxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDgzLDExMiwxMDEsOTksOTAsMTMsOTUsMTE1LDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDk3LAorICAgIDExNiwxMTYsMTE0LDIxOCwyNyw5NSwxMDMsMTAxLDExNiw5NSwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwKKyAgICAxMTYsMTAxLDEwMCw5NSwxMDIsMTA1LDEwOCwxMDEsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsCisgICAgMTE0LDk2LDAsMCwwLDExNCw5NywwLDAsMCwxMTQsMTI0LDAsMCwwLDIxOCwKKyAgICA5LDk1LDgwLDc5LDgwLDg1LDc2LDY1LDg0LDY5LDExNCwxNTcsMCwwLDAsMTE0LAorICAgIDE1NCwwLDAsMCwxMTQsNDAsMCwwLDAsMjE4LDYsOTcsMTEyLDExMiwxMDEsMTEwLAorICAgIDEwMCw0MSw5LDExNCwxMDIsMCwwLDAsOTAsOCwxMDgsMTExLDk5LDk3LDExNiwxMDUsCisgICAgMTExLDExMCwxMTQsMTI0LDAsMCwwLDExNCwxNTQsMCwwLDAsMjE4LDQsMTE1LDExMiwKKyAgICAxMDEsOTksMjE4LDEyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsOTksMTA4LDk3LDExNSwxMTUsCisgICAgMjE4LDgsMTE1LDExNywxMDIsMTAyLDEwNSwxMjAsMTAxLDExNSwxMTQsMTU3LDAsMCwwLDkwLAorICAgIDcsMTAwLDEwNSwxMTQsMTEwLDk3LDEwOSwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDYsMCwwLDAsMjE4LDIzLDExNSwxMTIsMTAxLDk5LDk1LDEwMiwxMTQsCisgICAgMTExLDEwOSw5NSwxMDIsMTA1LDEwOCwxMDEsOTUsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsCisgICAgMTIsMiwwLDAsMTE1LDYyLDAsMCwwLDAsMTIsOCw0LDQsMSwxMCwKKyAgICAyLDIsMSwxNCwxLDE0LDEsOCwyLDEwLDgsMTYsMSw2LDMsOCwKKyAgICAxLDE2LDEsMTQsMSwxMCwxLDYsMSw2LDIsNCwzLDgsMiwxMCwKKyAgICAxLDIsMSwxNCwxLDE0LDEsNiwyLDQsMSw4LDIsNiwxLDEyLAorICAgIDEsNiwxLDEyLDEsMTIsMiwxMTQsMTY1LDAsMCwwLDk5LDAsMCwwLAorICAgIDAsMCwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsNjQsMCwwLAorICAgIDAsMTE1LDgwLDAsMCwwLDEwMSwwLDkwLDEsMTAwLDAsOTAsMiwxMDAsMSwKKyAgICA5MCwzLDEwMCwyLDkwLDQsMTAwLDMsOTAsNSwxMDAsNCw5MCw2LDEwMSw3LAorICAgIDEwMCw1LDEwMCw2LDEzMiwwLDEzMSwxLDkwLDgsMTAxLDcsMTAwLDcsMTAwLDgsCisgICAgMTMyLDAsMTMxLDEsOTAsOSwxMDEsNywxMDAsMTQsMTAwLDEwLDEwMCwxMSwxMzIsMSwKKyAgICAxMzEsMSw5MCwxMCwxMDEsNywxMDAsMTUsMTAwLDEyLDEwMCwxMywxMzIsMSwxMzEsMSwKKyAgICA5MCwxMSwxMDAsOSw4MywwLDQxLDE2LDIxOCwyMSw4NywxMDUsMTEwLDEwMCwxMTEsMTE5LAogICAgIDExNSw4MiwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwxMjIsCiAgICAgNjIsNzcsMTAxLDExNiw5NywzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLAogICAgIDExNCwzMiwxMDIsMTExLDExNCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTAwLDEwMSwKQEAgLTg5OSwxMDYgKzgxOSwxMDAgQEAKICAgICAxMTQsMTE1LDEwNSwxMTEsMTEwLDEyNSw5Miw3NywxMTEsMTAwLDExNywxMDgsMTAxLDExNSw5MiwxMjMsCiAgICAgMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDEyNSw5Miw2OCwxMDEsOTgsMTE3LDEwMyw3MCwKICAgICA5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxMSwwLDAsCi0gICAgMCw2NywwLDAsMCwxMTUsNjcsMCwwLDAsMTIxLDIzLDAsMTE2LDAsMCwKLSAgICAxMDYsMSwwLDExNiwwLDAsMTA2LDIsMCwxMjQsMSwwLDEzMSwyLDAsODMsCi0gICAgODcsMTEwLDM3LDAsNCwxMTYsMywwLDEwNywxMCwwLDExNCw2MiwwLDEsMSwKLSAgICAxLDExNiwwLDAsMTA2LDEsMCwxMTYsMCwwLDEwNiw0LDAsMTI0LDEsMCwKLSAgICAxMzEsMiwwLDgzLDg5LDExMCwxLDAsODgsMTAwLDAsMCw4Myw0MSwxLDc4LAotICAgIDQxLDUsMjE4LDcsOTUsMTE5LDEwNSwxMTAsMTE0LDEwMSwxMDMsOTAsNyw3OSwxMTIsMTAxLAotICAgIDExMCw3NSwxMDEsMTIxLDkwLDE3LDcyLDc1LDY5LDg5LDk1LDY3LDg1LDgyLDgyLDY5LAotICAgIDc4LDg0LDk1LDg1LDgzLDY5LDgyLDExNCw0MiwwLDAsMCw5MCwxOCw3Miw3NSwKLSAgICA2OSw4OSw5NSw3Niw3OSw2Nyw2NSw3Niw5NSw3Nyw2NSw2Nyw3Miw3Myw3OCw2OSwKLSAgICA0MSwyLDIxOCwzLDk5LDEwOCwxMTUsMTE0LDUsMCwwLDAsMTE0LDQsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDE0LDk1LDExMSwxMTIsCi0gICAgMTAxLDExMCw5NSwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDg3LDIsMCwwLDExNSwKLSAgICA4LDAsMCwwLDAsMiwzLDEsMjMsMSwxMywxLDEyMiwzNiw4NywxMDUsCisgICAgMCw2NywwLDAsMCwxMTUsNTAsMCwwLDAsMTIxLDE0LDExNiwwLDEwNiwxLAorICAgIDExNiwwLDEwNiwyLDEyNCwxLDEzMSwyLDgzLDAsNCwwLDExNiwzLDEwNywxMCwKKyAgICAxMTQsNDQsMSwwLDEsMCwxLDAsMTE2LDAsMTA2LDEsMTE2LDAsMTA2LDQsCisgICAgMTI0LDEsMTMxLDIsODMsMCw4OCwwLDEwMCwwLDgzLDAsNDEsMSw3OCw0MSwKKyAgICA1LDIxOCw3LDk1LDExOSwxMDUsMTEwLDExNCwxMDEsMTAzLDkwLDcsNzksMTEyLDEwMSwxMTAsCisgICAgNzUsMTAxLDEyMSw5MCwxNyw3Miw3NSw2OSw4OSw5NSw2Nyw4NSw4Miw4Miw2OSw3OCwKKyAgICA4NCw5NSw4NSw4Myw2OSw4MiwxMTQsNDIsMCwwLDAsOTAsMTgsNzIsNzUsNjksCisgICAgODksOTUsNzYsNzksNjcsNjUsNzYsOTUsNzcsNjUsNjcsNzIsNzMsNzgsNjksNDEsCisgICAgMiwyMTgsMyw5OSwxMDgsMTE1LDExNCw1LDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxNCw5NSwxMTEsMTEyLDEwMSwKKyAgICAxMTAsOTUsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw5MiwyLDAsMCwxMTUsOCwKKyAgICAwLDAsMCwwLDIsMiwxLDE0LDEsMTQsMSwxMjIsMzYsODcsMTA1LDExMCwKKyAgICAxMDAsMTExLDExOSwxMTUsODIsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLAorICAgIDEwMSwxMTQsNDYsOTUsMTExLDExMiwxMDEsMTEwLDk1LDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwKKyAgICAxMjEsOTksMiwwLDAsMCwwLDAsMCwwLDYsMCwwLDAsMTYsMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDExMiwwLDAsMCwxMjQsMCwxMDYsMCwxMTQsCisgICAgMTQsMTI0LDAsMTA2LDEsMTI1LDIsMTEwLDYsMTI0LDAsMTA2LDIsMTI1LDIsMTI0LAorICAgIDIsMTA2LDMsMTI0LDEsMTAwLDEsMTE2LDQsMTA2LDUsMTAwLDAsMTAwLDIsMTMzLAorICAgIDIsMjUsMCwyMiwwLDEwMCwzLDE0MSwyLDEyNSwzLDEyMSwzOCwxMjQsMCwxMDYsCisgICAgNiwxMjQsMywxMzEsMSwxNDMsMTgsMTI1LDQsMTE2LDcsMTA2LDgsMTI0LDQsMTAwLAorICAgIDQsMTMxLDIsMTI1LDUsODcsMCwxMDAsMCw4MSwwLDgyLDAsODgsMCw4NywKKyAgICAwLDExMCwyMCw0LDAsMTE2LDksMTA3LDEwLDExNCwxMDYsMSwwLDEsMCwxLAorICAgIDAsMTAwLDAsODMsMCw4OCwwLDEyNCw1LDgzLDAsNDEsNSw3OCwxMjIsNSwKKyAgICAzNywxMDAsNDYsMzcsMTAwLDExNCw1OSwwLDAsMCw0MSwyLDExNCwxMjMsMCwwLAorICAgIDAsOTAsMTEsMTE1LDEyMSwxMTUsOTUsMTE4LDEwMSwxMTQsMTE1LDEwNSwxMTEsMTEwLDExNCwzMiwKKyAgICAwLDAsMCw0MSwxMCwyMTgsMTEsNjgsNjksNjYsODUsNzEsOTUsNjYsODUsNzMsCisgICAgNzYsNjgsMjE4LDE4LDgyLDY5LDcxLDczLDgzLDg0LDgyLDg5LDk1LDc1LDY5LDg5LAorICAgIDk1LDY4LDY5LDY2LDg1LDcxLDIxOCwxMiw4Miw2OSw3MSw3Myw4Myw4NCw4Miw4OSwKKyAgICA5NSw3NSw2OSw4OSwxMTQsNTAsMCwwLDAsMTE0LDgsMCwwLDAsMjE4LDEyLAorICAgIDExOCwxMDEsMTE0LDExNSwxMDUsMTExLDExMCw5NSwxMDUsMTEwLDEwMiwxMTEsMTE0LDE2OSwwLDAsCisgICAgMCwxMTQsMTY3LDAsMCwwLDkwLDEwLDgxLDExNywxMDEsMTE0LDEyMSw4Niw5NywxMDgsCisgICAgMTE3LDEwMSwxMTQsNDIsMCwwLDAsNDEsNiwxMTQsMTY4LDAsMCwwLDExNCwxMjMsCisgICAgMCwwLDAsOTAsMTIsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw5NSwxMDcsMTAxLAorICAgIDEyMSwxMTQsNSwwLDAsMCw5MCw0LDEwNCwxMDcsMTAxLDEyMSwyMTgsOCwxMDIsMTA1LAorICAgIDEwOCwxMDEsMTEyLDk3LDExNiwxMDQsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDYsMCwwLDAsMjE4LDE2LDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMTQsCisgICAgMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDk5LDIsMCwwLDExNSwyMiwwLDAsMCwKKyAgICAwLDIsNiwxLDgsMiw2LDEsNiwxLDIyLDEsMiwxLDEyLDEsCisgICAgMjYsMSwxNCwxLDYsMSwxMjIsMzgsODcsMTA1LDExMCwxMDAsMTExLDExOSwxMTUsODIsCisgICAgMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTE1LAorICAgIDEwMSw5NywxMTQsOTksMTA0LDk1LDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNzgsOTksCisgICAgNCwwLDAsMCwwLDAsMCwwLDgsMCwwLDAsMTQsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDEyMCwwLDAsMCwxMjQsMCwxMDYsMCwxMjQsMSwxMzEsCisgICAgMSwxMjUsNCwxMjQsNCwxMDAsMCwxMDcsOCwxMTQsMjIsMTAwLDAsODMsMCwxMjEsCisgICAgMTIsMTE2LDEsMTI0LDQsMTMxLDEsMSwwLDg3LDAsMTEwLDIwLDQsMCwxMTYsCisgICAgMiwxMDcsMTAsMTE0LDU0LDEsMCwxLDAsMSwwLDEwMCwwLDgzLDAsODgsCisgICAgMCwxMjAsNTgsMTE2LDMsMTMxLDAsNjgsMCw5Myw0OCw5MiwyLDEyNSw1LDEyNSwKKyAgICA2LDEyNCw0LDEwNiw0LDExNiw1LDEyNCw2LDEzMSwxLDEzMSwxLDExNCw2NCwxMTYsCisgICAgNiwxMDYsNywxMjQsMSwxMjQsNSwxMjQsMSwxMjQsNCwxMzEsMiwxMjQsNCwxMDAsCisgICAgMSwxNDEsMywxMjUsNywxMjQsNyw4MywwLDExMyw2NCw4NywwLDEwMCwwLDgzLAorICAgIDAsNDEsMiw3OCw0MSwxLDExNCwxNTYsMCwwLDAsNDEsOCwxMTQsMTc1LDAsCisgICAgMCwwLDExNCw0MSwwLDAsMCwxMTQsNDIsMCwwLDAsMTE0LDE1OSwwLDAsCisgICAgMCwxMTQsOTYsMCwwLDAsMTE0LDk3LDAsMCwwLDExNCwxMTgsMCwwLDAsCisgICAgMjE4LDE2LDExNSwxMTIsMTAxLDk5LDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMDgsMTExLDk3LDEwMCwKKyAgICAxMDEsMTE0LDQxLDgsMTE0LDE2OCwwLDAsMCwxMTQsMTIzLDAsMCwwLDExNCwzNywKKyAgICAwLDAsMCwyMTgsNiwxMTYsOTcsMTE0LDEwMywxMDEsMTE2LDExNCwxNzQsMCwwLDAsCisgICAgMTE0LDEyNCwwLDAsMCwxMTQsMTY0LDAsMCwwLDExNCwxNjIsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDksCisgICAgMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDExNCwyLDAsMCwxMTUsMjYsMCwKKyAgICAwLDAsMCwyLDEwLDEsOCwxLDQsMSwyLDEsMTIsMSwxNCwxLAorICAgIDYsMSwxNiwxLDE0LDEsNiwxLDgsMSw4LDEsMTIyLDMxLDg3LDEwNSwKICAgICAxMTAsMTAwLDExMSwxMTksMTE1LDgyLDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLAotICAgIDEwMCwxMDEsMTE0LDQ2LDk1LDExMSwxMTIsMTAxLDExMCw5NSwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwKLSAgICAxMTQsMTIxLDk5LDIsMCwwLDAsMCwwLDAsMCw2LDAsMCwwLDE2LAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSwxNDMsMCwwLDAsMTI0LDAsMCwxMDYsCi0gICAgMCwwLDExNCwyMSwwLDEyNCwwLDAsMTA2LDEsMCwxMjUsMiwwLDExMCw5LAotICAgIDAsMTI0LDAsMCwxMDYsMiwwLDEyNSwyLDAsMTI0LDIsMCwxMDYsMywwLAotICAgIDEwMCwxLDAsMTI0LDEsMCwxMDAsMiwwLDExNiw0LDAsMTA2LDUsMCwxMDAsCi0gICAgMCwwLDEwMCwzLDAsMTMzLDIsMCwyNSwxMzEsMCwyLDEyNSwzLDAsMTIxLAotICAgIDQ3LDAsMTI0LDAsMCwxMDYsNiwwLDEyNCwzLDAsMTMxLDEsMCwxNDMsMjUsCi0gICAgMCwxMjUsNCwwLDExNiw3LDAsMTA2LDgsMCwxMjQsNCwwLDEwMCw0LDAsCi0gICAgMTMxLDIsMCwxMjUsNSwwLDg3LDEwMCwwLDAsODEsODIsODgsODcsMTEwLDIyLAotICAgIDAsNCwxMTYsOSwwLDEwNywxMCwwLDExNCwxMzgsMCwxLDEsMSwxMDAsMCwKLSAgICAwLDgzLDg5LDExMCwxLDAsODgsMTI0LDUsMCw4Myw0MSw1LDc4LDExNCwxMjgsCi0gICAgMCwwLDAsOTAsMTEsMTE1LDEyMSwxMTUsOTUsMTE4LDEwMSwxMTQsMTE1LDEwNSwxMTEsMTEwLAotICAgIDExNCw4MiwwLDAsMCwxMTQsMzIsMCwwLDAsNDEsMTAsMjE4LDExLDY4LDY5LAotICAgIDY2LDg1LDcxLDk1LDY2LDg1LDczLDc2LDY4LDIxOCwxOCw4Miw2OSw3MSw3Myw4MywKLSAgICA4NCw4Miw4OSw5NSw3NSw2OSw4OSw5NSw2OCw2OSw2Niw4NSw3MSwyMTgsMTIsODIsCi0gICAgNjksNzEsNzMsODMsODQsODIsODksOTUsNzUsNjksODksMTE0LDQ5LDAsMCwwLAotICAgIDExNCw4LDAsMCwwLDIxOCw3LDExOCwxMDEsMTE0LDExNSwxMDUsMTExLDExMCwxMTQsMTczLAotICAgIDAsMCwwLDExNCwxNzEsMCwwLDAsOTAsMTAsODEsMTE3LDEwMSwxMTQsMTIxLDg2LAotICAgIDk3LDEwOCwxMTcsMTAxLDExNCw0MiwwLDAsMCw0MSw2LDExNCwxNzIsMCwwLDAsCi0gICAgMTE0LDEyOCwwLDAsMCw5MCwxMiwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDk1LAotICAgIDEwNywxMDEsMTIxLDExNCw1LDAsMCwwLDkwLDQsMTA0LDEwNywxMDEsMTIxLDIxOCw4LAotICAgIDEwMiwxMDUsMTA4LDEwMSwxMTIsOTcsMTE2LDEwNCwxMTQsNCwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNiwwLDAsMCwyMTgsMTYsOTUsMTE1LDEwMSw5NywxMTQsOTksMTA0LAotICAgIDk1LDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsOTQsMiwwLDAsMTE1LDIyLDAsCi0gICAgMCwwLDAsMiw5LDEsMTIsMiw5LDEsMTUsMSwyMiwxLDMsMSwKLSAgICAxOCwxLDI5LDEsMTMsMSw5LDEsMTIyLDM4LDg3LDEwNSwxMTAsMTAwLDExMSwxMTksCi0gICAgMTE1LDgyLDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LAotICAgIDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLAotICAgIDc4LDk5LDQsMCwwLDAsMCwwLDAsMCw4LDAsMCwwLDE0LDAsCi0gICAgMCwwLDY3LDAsMCwwLDExNSwxNTgsMCwwLDAsMTI0LDAsMCwxMDYsMCwKLSAgICAwLDEyNCwxLDAsMTMxLDEsMCwxMjUsNCwwLDEyNCw0LDAsMTAwLDAsMCwKLSAgICAxMDcsOCwwLDExNCwzMSwwLDEwMCwwLDAsODMsMTIxLDE0LDAsMTE2LDEsMCwKLSAgICAxMjQsNCwwLDEzMSwxLDAsMSw4NywxMTAsMjIsMCw0LDExNiwyLDAsMTA3LAotICAgIDEwLDAsMTE0LDY5LDAsMSwxLDEsMTAwLDAsMCw4Myw4OSwxMTAsMSwwLAotICAgIDg4LDEyMCw4MSwwLDExNiwzLDAsMTMxLDAsMCw2OCw5Myw3MCwwLDkyLDIsCi0gICAgMCwxMjUsNSwwLDEyNSw2LDAsMTI0LDQsMCwxMDYsNCwwLDExNiw1LDAsCi0gICAgMTI0LDYsMCwxMzEsMSwwLDEzMSwxLDAsMTE0LDgwLDAsMTE2LDYsMCwxMDYsCi0gICAgNywwLDEyNCwxLDAsMTI0LDUsMCwxMjQsMSwwLDEyNCw0LDAsMTMxLDIsCi0gICAgMCwxMDAsMSwwLDEyNCw0LDAsMTMxLDIsMSwxMjUsNywwLDEyNCw3LDAsCi0gICAgODMsMTEzLDgwLDAsODcsMTAwLDAsMCw4Myw0MSwyLDc4LDExNCwxNjAsMCwwLAotICAgIDAsNDEsOCwxMTQsMTc5LDAsMCwwLDExNCw0MSwwLDAsMCwxMTQsNDIsMCwKLSAgICAwLDAsMTE0LDE2MywwLDAsMCwxMTQsOTQsMCwwLDAsMTE0LDk1LDAsMCwKLSAgICAwLDExNCwxMjMsMCwwLDAsMjE4LDE2LDExNSwxMTIsMTAxLDk5LDk1LDEwMiwxMTQsMTExLAotICAgIDEwOSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQxLDgsMTE0LDE3MiwwLDAsMCwxMTQsCi0gICAgMTI4LDAsMCwwLDExNCwzNywwLDAsMCwyMTgsNiwxMTYsOTcsMTE0LDEwMywxMDEsCi0gICAgMTE2LDExNCwxNzgsMCwwLDAsMTE0LDEyOSwwLDAsMCwxMTQsMTY4LDAsMCwwLAotICAgIDExNCwxNjYsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDYsMCwwLDAsMjE4LDksMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDEwOSwKLSAgICAyLDAsMCwxMTUsMjYsMCwwLDAsMCwyLDE1LDEsMTIsMSw0LDEsCi0gICAgMywxLDE0LDEsMTMsMSw5LDEsMjIsMSwyMSwxLDksMSwxNSwxLAotICAgIDksMSwxMjIsMzEsODcsMTA1LDExMCwxMDAsMTExLDExOSwxMTUsODIsMTAxLDEwMywxMDUsMTE1LAotICAgIDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwKLSAgICAxMTIsMTAxLDk5LDk5LDMsMCwwLDAsMCwwLDAsMCw0LDAsMCwwLAotICAgIDMsMCwwLDAsNjcsMCwwLDAsMTE1LDQ1LDAsMCwwLDEyNCwwLDAsCi0gICAgMTA2LDAsMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDIsMCwxMjUsMywwLDEyNCwKLSAgICAzLDAsMTAwLDEsMCwxMDcsOSwwLDExNCwzNywwLDEyNCwzLDAsMTA2LDEsCi0gICAgMCw4MywxMDAsMSwwLDgzLDEwMCwxLDAsODMsNDEsMiwxMjIsMTA4LDcwLDEwNSwKLSAgICAxMTAsMTAwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDEwMCwzMiwKLSAgICAxMDUsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNDYsCi0gICAgMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LAotICAgIDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LAotICAgIDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg1LDExNSwxMDEsMzIsMTAxLDEyMCwxMDEsOTksOTUsMTA5LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsNDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsNDYsCi0gICAgMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsNDEsMiwxMTQsMTgyLDAsCi0gICAgMCwwLDExNCwxMjksMCwwLDAsNDEsNCwxMTQsMTcyLDAsMCwwLDExNCwxMjgsCi0gICAgMCwwLDAsMTE0LDM3LDAsMCwwLDExNCwxNjYsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDExLDEwMiwxMDUsCi0gICAgMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMjUsMiwwLDAsMTE1LDgsMCwKLSAgICAwLDAsMCw3LDE4LDEsMTIsMSw3LDIsMTIyLDMzLDg3LDEwNSwxMTAsMTAwLAotICAgIDExMSwxMTksMTE1LDgyLDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsCi0gICAgMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MSwxMiwxMTQsCi0gICAgMTE0LDAsMCwwLDExNCwxMTMsMCwwLDAsMTE0LDExNSwwLDAsMCwxMTQsMTE2LAotICAgIDAsMCwwLDExNCwxNzYsMCwwLDAsMTE0LDE3NSwwLDAsMCwxMTQsMTc0LDAsCi0gICAgMCwwLDIxOCwxMSw5OSwxMDgsOTcsMTE1LDExNSwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwxMTQsCi0gICAgMTczLDAsMCwwLDExNCwxNzksMCwwLDAsMTE0LDE4MiwwLDAsMCwxMTQsMTgzLAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw2LDAsMCwwLDExNCwxNzAsMCwwLDAsNzUsMiwwLDAsCi0gICAgMTE1LDIwLDAsMCwwLDEyLDIsNiwzLDYsMyw2LDIsNiwyLDE4LAotICAgIDcsMTgsMTUsMywxLDIxLDE1LDMsMSwxMTQsMTcwLDAsMCwwLDk5LDAsCi0gICAgMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNjQsCi0gICAgMCwwLDAsMTE1LDcwLDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLAotICAgIDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsMCwKLSAgICAxMzIsMCwwLDkwLDQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCwKLSAgICA1LDAsMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsOTAsNiwwLDEwMCw4LAotICAgIDAsMTAwLDksMCwxMzIsMCwwLDkwLDcsMCwxMDAsMTAsMCw4Myw0MSwxMSwKKyAgICAxMDAsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksOTksMywwLAorICAgIDAsMCwwLDAsMCwwLDQsMCwwLDAsMywwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsMzQsMCwwLDAsMTI0LDAsMTA2LDAsMTI0LDEsMTI0LDIsMTMxLAorICAgIDIsMTI1LDMsMTI0LDMsMTAwLDEsMTA3LDksMTE0LDI2LDEyNCwzLDEwNiwxLDgzLAorICAgIDAsMTAwLDEsODMsMCwxMDAsMSw4MywwLDQxLDIsMTIyLDEwOCw3MCwxMDUsMTEwLAorICAgIDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMDAsMzIsMTA1LAorICAgIDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDQ2LDEwLAorICAgIDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwOSwxMDEsCisgICAgMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsCisgICAgMTAxLDEwMCw0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDQwLDQxLDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsMTAwLDQ2LDEwLAorICAgIDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc4LDQxLDIsMTE0LDE3OCwwLDAsCisgICAgMCwxMTQsMTI0LDAsMCwwLDQxLDQsMTE0LDE2OCwwLDAsMCwxMTQsMTIzLDAsCisgICAgMCwwLDExNCwzNywwLDAsMCwxMTQsMTYyLDAsMCwwLDExNCw0LDAsMCwKKyAgICAwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMSwxMDIsMTA1LDExMCwKKyAgICAxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTMwLDIsMCwwLDExNSw4LDAsMCwKKyAgICAwLDAsNywxMiwxLDgsMSw2LDIsMTIyLDMzLDg3LDEwNSwxMTAsMTAwLDExMSwKKyAgICAxMTksMTE1LDgyLDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LAorICAgIDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MSwyLDc4LDc4LAorICAgIDQxLDEsNzgsNDEsMTIsMTE0LDEwOSwwLDAsMCwxMTQsMTA4LDAsMCwwLDExNCwKKyAgICAxMTAsMCwwLDAsMTE0LDExMSwwLDAsMCwxMTQsMTcyLDAsMCwwLDExNCwxNzEsCisgICAgMCwwLDAsMTE0LDE3MCwwLDAsMCwyMTgsMTEsOTksMTA4LDk3LDExNSwxMTUsMTA5LAorICAgIDEwMSwxMTYsMTA0LDExMSwxMDAsMTE0LDE2OSwwLDAsMCwxMTQsMTc1LDAsMCwwLDExNCwKKyAgICAxNzgsMCwwLDAsMTE0LDE3OSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTY2LDAsCisgICAgMCwwLDgwLDIsMCwwLDExNSwyMCwwLDAsMCw4LDIsNCwzLDQsCisgICAgMyw0LDIsNCwyLDEyLDcsMTIsMTUsMiwxLDEyLDE1LDIsMSwxMTQsCisgICAgMTY2LDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwKKyAgICAwLDIsMCwwLDAsNjQsMCwwLDAsMTE1LDQ4LDAsMCwwLDEwMSwwLAorICAgIDkwLDEsMTAwLDAsOTAsMiwxMDAsMSw5MCwzLDEwMCwyLDEwMCwzLDEzMiwwLAorICAgIDkwLDQsMTAwLDQsMTAwLDUsMTMyLDAsOTAsNSwxMDAsNiwxMDAsNywxMzIsMCwKKyAgICA5MCw2LDEwMCw4LDEwMCw5LDEzMiwwLDkwLDcsMTAwLDEwLDgzLDAsNDEsMTEsCiAgICAgMjE4LDEzLDk1LDc2LDExMSw5NywxMDAsMTAxLDExNCw2Niw5NywxMTUsMTA1LDk5LDExNSwxMjIsCiAgICAgODMsNjYsOTcsMTE1LDEwMSwzMiw5OSwxMDgsOTcsMTE1LDExNSwzMiwxMTEsMTAyLDMyLDk5LAogICAgIDExMSwxMDksMTA5LDExMSwxMTAsMzIsOTksMTExLDEwMCwxMDEsMzIsMTEwLDEwMSwxMDEsMTAwLDEwMSwKQEAgLTEwMDYsMTEwICs5MjAsMTA2IEBACiAgICAgNzYsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDk3LDExMCwxMDAsMTAsMzIsMzIsMzIsMzIsODMsCiAgICAgMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsCiAgICAgMTAwLDEwMSwxMTQsNDYsOTksMiwwLDAsMCwwLDAsMCwwLDUsMCwwLAotICAgIDAsMywwLDAsMCw2NywwLDAsMCwxMTUsODgsMCwwLDAsMTE2LDAsCi0gICAgMCwxMjQsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMzEsMSwwLDEzMSwxLDAsCi0gICAgMTAwLDEsMCwyNSwxMjUsMiwwLDEyNCwyLDAsMTA2LDIsMCwxMDAsMiwwLAotICAgIDEwMCwxLDAsMTMxLDIsMCwxMDAsMywwLDI1LDEyNSwzLDAsMTI0LDEsMCwKLSAgICAxMDYsMywwLDEwMCwyLDAsMTMxLDEsMCwxMDAsNCwwLDI1LDEyNSw0LDAsCi0gICAgMTI0LDMsMCwxMDAsNSwwLDEwNywyLDAsMTExLDg3LDAsMTI0LDQsMCwxMDAsCi0gICAgNSwwLDEwNywzLDAsODMsNDEsNiwxMjIsMTQxLDY3LDExMSwxMTAsOTksMTE0LDEwMSwKLSAgICAxMTYsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLAotICAgIDExMCwzMiwxMTEsMTAyLDMyLDczLDExMCwxMTUsMTEyLDEwMSw5OSwxMTYsNzYsMTExLDk3LDEwMCwKLSAgICAxMDEsMTE0LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLDk4LDEyMSwKLSAgICAzMiw5OSwxMDQsMTAxLDk5LDEwNywxMDUsMTEwLDEwMywzMiwxMDUsMTAyLDEwLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDMyLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNCwxMDEsCi0gICAgMTE2LDExNywxMTQsMTEwLDEwMSwxMDAsMzIsOTgsMTIxLDMyLDEwMywxMDEsMTE2LDk1LDEwMiwxMDUsCi0gICAgMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwzMiwxMDQsOTcsMTE1LDMyLDk3LDMyLDEwMiwxMDUsMTA4LAotICAgIDEwMSwxMTAsOTcsMTA5LDEwMSwzMiwxMTEsMTAyLDMyLDM5LDk1LDk1LDEwNSwxMTAsMTA1LDExNiwKLSAgICA5NSw5NSw0NiwxMTIsMTIxLDM5LDQ2LDExNCwzMSwwLDAsMCwxMTQsNjAsMCwwLAotICAgIDAsMTE0LDYxLDAsMCwwLDExNCw1OCwwLDAsMCwyMTgsOCw5NSw5NSwxMDUsCi0gICAgMTEwLDEwNSwxMTYsOTUsOTUsNDEsNCwxMTQsNDAsMCwwLDAsMTE0LDE1OSwwLDAsCi0gICAgMCwxMTQsMzYsMCwwLDAsMTE0LDM0LDAsMCwwLDQxLDUsMTE0LDExMCwwLAotICAgIDAsMCwxMTQsMTI4LDAsMCwwLDExNCw5NiwwLDAsMCw5MCwxMywxMDIsMTA1LAotICAgIDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsOTUsOTgsOTcsMTE1LDEwMSw5MCw5LDExNiw5NywxMDUsCi0gICAgMTA4LDk1LDExMCw5NywxMDksMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw2LDAsMCwwLDExNCwxNjEsMCwwLDAsMTQ0LDIsMCwwLDExNSw4LAotICAgIDAsMCwwLDAsMywyNSwxLDIyLDEsMTksMSwxMjIsMjQsOTUsNzYsMTExLAotICAgIDk3LDEwMCwxMDEsMTE0LDY2LDk3LDExNSwxMDUsOTksMTE1LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LAotICAgIDk5LDEwNyw5NywxMDMsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsCi0gICAgMCwwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLAotICAgIDEsMCw4Myw0MSwyLDEyMiw0Miw4NSwxMTUsMTAxLDMyLDEwMCwxMDEsMTAyLDk3LDExNywKLSAgICAxMDgsMTE2LDMyLDExNSwxMDEsMTA5LDk3LDExMCwxMTYsMTA1LDk5LDExNSwzMiwxMDIsMTExLDExNCwKLSAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OSwxMTQsMTAxLDk3LDExNiwxMDUsMTExLDExMCwKLSAgICA0Niw3OCwxMTQsNCwwLDAsMCw0MSwyLDExNCwxMTAsMCwwLDAsMTE0LDE2NiwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLAotICAgIDAsMCwyMTgsMTMsOTksMTE0LDEwMSw5NywxMTYsMTAxLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDE1MiwyLDAsMCwxMTUsMCwwLDAsMCwxMjIsMjcsOTUsNzYsMTExLDk3LAotICAgIDEwMCwxMDEsMTE0LDY2LDk3LDExNSwxMDUsOTksMTE1LDQ2LDk5LDExNCwxMDEsOTcsMTE2LDEwMSwKLSAgICA5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsCi0gICAgMywwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSw4MCwwLDAsCi0gICAgMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsMCwxMDYsMSwwLDEzMSwxLDAsCi0gICAgMTI1LDIsMCwxMjQsMiwwLDEwMCwxLDAsMTA3LDgsMCwxMTQsNTQsMCwxMTYsCi0gICAgMiwwLDEwMCwyLDAsMTA2LDMsMCwxMjQsMSwwLDEwNiwxLDAsMTMxLDEsCi0gICAgMCwxMzEsMSwwLDEzMCwxLDAsMTE2LDQsMCwxMDYsNSwwLDExNiw2LDAsCi0gICAgMTI0LDIsMCwxMjQsMSwwLDEwNiw3LDAsMTMxLDMsMCwxLDEwMCwxLDAsCi0gICAgODMsNDEsMywxMjIsMTksNjksMTIwLDEwMSw5OSwxMTcsMTE2LDEwMSwzMiwxMTYsMTA0LDEwMSwKKyAgICAwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDY0LDAsMCwwLDExNiwwLAorICAgIDEyNCwwLDEwNiwxLDEyNCwxLDEzMSwxLDEzMSwxLDEwMCwxLDI1LDAsMTI1LDIsCisgICAgMTI0LDIsMTA2LDIsMTAwLDIsMTAwLDEsMTMxLDIsMTAwLDMsMjUsMCwxMjUsMywKKyAgICAxMjQsMSwxMDYsMywxMDAsMiwxMzEsMSwxMDAsNCwyNSwwLDEyNSw0LDEyNCwzLAorICAgIDEwMCw1LDEwNywyLDExMSw2MiwxMjQsNCwxMDAsNSwxMDcsMyw4MywwLDQxLDYsCisgICAgMTIyLDE0MSw2NywxMTEsMTEwLDk5LDExNCwxMDEsMTE2LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLAorICAgIDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiw3MywxMTAsMTE1LAorICAgIDExMiwxMDEsOTksMTE2LDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDUsMTE1LDk1LDExMiw5NywKKyAgICA5OSwxMDcsOTcsMTAzLDEwMSwzMiw5OCwxMjEsMzIsOTksMTA0LDEwMSw5OSwxMDcsMTA1LDExMCwKKyAgICAxMDMsMzIsMTA1LDEwMiwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMDEsMTAwLDMyLDk4LAorICAgIDEyMSwzMiwxMDMsMTAxLDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMzIsMTA0LAorICAgIDk3LDExNSwzMiw5NywzMiwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMzIsMTExLDEwMiwKKyAgICAzMiwzOSw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsNDYsMTEyLDEyMSwzOSw0NiwxMTQsCisgICAgMzEsMCwwLDAsMTE0LDYxLDAsMCwwLDExNCw2MiwwLDAsMCwxMTQsNTksCisgICAgMCwwLDAsMjE4LDgsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDQxLDQsMTE0LAorICAgIDQwLDAsMCwwLDExNCwxNTUsMCwwLDAsMTE0LDM2LDAsMCwwLDExNCwzNCwKKyAgICAwLDAsMCw0MSw1LDExNCwxMDQsMCwwLDAsMTE0LDEyMywwLDAsMCwxMTQsCisgICAgOTgsMCwwLDAsOTAsMTMsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDk1LDk4LAorICAgIDk3LDExNSwxMDEsOTAsOSwxMTYsOTcsMTA1LDEwOCw5NSwxMTAsOTcsMTA5LDEwMSwxMTQsNCwKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTU3LDAsCisgICAgMCwwLDE0OSwyLDAsMCwxMTUsOCwwLDAsMCwwLDMsMTgsMSwxNiwKKyAgICAxLDE0LDEsMTIyLDI0LDk1LDc2LDExMSw5NywxMDAsMTAxLDExNCw2Niw5NywxMTUsMTA1LAorICAgIDk5LDExNSw0NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5OSwyLDAsCisgICAgMCwwLDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSw0LDAsMCwwLDEwMCwxLDgzLDAsNDEsMiwxMjIsNDIsODUsCisgICAgMTE1LDEwMSwzMiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LDExNiwzMiwxMTUsMTAxLDEwOSw5NywxMTAsCisgICAgMTE2LDEwNSw5OSwxMTUsMzIsMTAyLDExMSwxMTQsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsCisgICAgOTksMTE0LDEwMSw5NywxMTYsMTA1LDExMSwxMTAsNDYsNzgsMTE0LDQsMCwwLDAsNDEsCisgICAgMiwxMTQsMTA0LDAsMCwwLDExNCwxNjIsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDEzLDk5LDExNCwxMDEsOTcsCisgICAgMTE2LDEwMSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxNTcsMiwwLDAsMTE1LDAsMCwKKyAgICAwLDAsMTIyLDI3LDk1LDc2LDExMSw5NywxMDAsMTAxLDExNCw2Niw5NywxMTUsMTA1LDk5LAorICAgIDExNSw0Niw5OSwxMTQsMTAxLDk3LDExNiwxMDEsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksCisgICAgMiwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsNCwwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsNTYsMCwwLDAsMTI0LDAsMTA2LDAsMTI0LDEsMTA2LAorICAgIDEsMTMxLDEsMTI1LDIsMTI0LDIsMTAwLDEsMTA3LDgsMTE0LDM2LDExNiwyLDEwMCwKKyAgICAyLDEwNiwzLDEyNCwxLDEwNiwxLDEzMSwxLDEzMSwxLDEzMCwxLDExNiw0LDEwNiwKKyAgICA1LDExNiw2LDEyNCwyLDEyNCwxLDEwNiw3LDEzMSwzLDEsMCwxMDAsMSw4MywKKyAgICAwLDQxLDMsMTIyLDE5LDY5LDEyMCwxMDEsOTksMTE3LDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsCiAgICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsNzgsMTIyLDUyLDk5LDk3LDExMCwxMTAsMTExLAogICAgIDExNiwzMiwxMDgsMTExLDk3LDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsCiAgICAgMTE0LDEyNSwzMiwxMTksMTA0LDEwMSwxMTAsMzIsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsCiAgICAgNDAsNDEsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDc4LDExMSwxMTAsMTAxLDQxLAotICAgIDgsMjE4LDgsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsMTE0LDExNCwwLDAsMCwKLSAgICAxMTQsMTA5LDAsMCwwLDExNCw0OSwwLDAsMCwxMTQsMTIzLDAsMCwwLDIxOCwKKyAgICA4LDIxOCw4LDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDExNCwxMDksMCwwLDAsCisgICAgMTE0LDEwMywwLDAsMCwxMTQsNTAsMCwwLDAsMTE0LDExOCwwLDAsMCwyMTgsCiAgICAgMjUsOTUsOTksOTcsMTA4LDEwOCw5NSwxMTksMTA1LDExNiwxMDQsOTUsMTAyLDExNCw5NywxMDksCiAgICAgMTAxLDExNSw5NSwxMTQsMTAxLDEwOSwxMTEsMTE4LDEwMSwxMDAsMjE4LDQsMTAxLDEyMCwxMDEsOTksCi0gICAgMTE0LDEyMCwwLDAsMCw0MSwzLDExNCwxMTAsMCwwLDAsMjE4LDYsMTA5LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsMTE0LDE0OCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKKyAgICAxMTQsMTE1LDAsMCwwLDQxLDMsMTE0LDEwNCwwLDAsMCwyMTgsNiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwxMTQsMTQ0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAogICAgIDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMSwxMDEsMTIwLDEwMSw5OSw5NSwxMDksCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSwxNTUsMiwwLDAsMTE1LDEwLDAsMCwwLDAsMiwKLSAgICAxOCwxLDEyLDEsOSwxLDE1LDEsMTIyLDI1LDk1LDc2LDExMSw5NywxMDAsMTAxLAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMTYwLDIsMCwwLDExNSwxMCwwLDAsMCwwLDIsCisgICAgMTIsMSw4LDEsNiwxLDEwLDEsMTIyLDI1LDk1LDc2LDExMSw5NywxMDAsMTAxLAogICAgIDExNCw2Niw5NywxMTUsMTA1LDk5LDExNSw0NiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwKICAgICAxMTcsMTA4LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwKLSAgICAzLDAsMCwwLDY3LDAsMCwwLDExNSwxNiwwLDAsMCwxMTYsMCwwLAotICAgIDEwNiwxLDAsMTI0LDAsMCwxMjQsMSwwLDEzMSwyLDAsODMsNDEsMSw3OCwKLSAgICA0MSwyLDExNCwxMjMsMCwwLDAsMjE4LDE3LDk1LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDQsMTA1LDEwOSw0MSwyLDExNCwxMTAsMCwwLAotICAgIDAsMTE0LDEyOCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNiwwLDAsMCwyMTgsMTEsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LAotICAgIDEwOCwxMDEsMTYzLDIsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjUsOTUsCi0gICAgNzYsMTExLDk3LDEwMCwxMDEsMTE0LDY2LDk3LDExNSwxMDUsOTksMTE1LDQ2LDEwOCwxMTEsOTcsCi0gICAgMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDc4LDQxLDgsMTE0LDExNCwwLDAsMCwKLSAgICAxMTQsMTEzLDAsMCwwLDExNCwxMTUsMCwwLDAsMTE0LDExNiwwLDAsMCwxMTQsCi0gICAgMTYxLDAsMCwwLDExNCwxODcsMCwwLDAsMTE0LDE5MiwwLDAsMCwxMTQsMTk0LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw2LDAsMCwwLDExNCwxODUsMCwwLDAsMTM5LDIsMCwwLAotICAgIDExNSwxMCwwLDAsMCwxMiwzLDYsMiwxMiw4LDEyLDMsMTIsOCwxMTQsCi0gICAgMTg1LDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwKLSAgICAwLDQsMCwwLDAsNjQsMCwwLDAsMTE1LDEwNiwwLDAsMCwxMDEsMCwKLSAgICAwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDEwMCwyLDAsCi0gICAgMTMyLDAsMCw5MCwzLDAsMTAwLDMsMCwxMDAsNCwwLDEzMiwwLDAsOTAsCi0gICAgNCwwLDEwMCw1LDAsMTAwLDYsMCwxMzIsMCwwLDkwLDUsMCwxMDAsNywKLSAgICAwLDEwMCw4LDAsMTMyLDAsMCw5MCw2LDAsMTAwLDksMCwxMDAsMTAsMCwKLSAgICAxMzIsMCwwLDkwLDcsMCwxMDAsMTEsMCwxMDAsMTgsMCwxMDAsMTMsMCwxMDAsCi0gICAgMTQsMCwxMzIsMCwxLDkwLDgsMCwxMDAsMTUsMCwxMDAsMTYsMCwxMzIsMCwKLSAgICAwLDkwLDksMCwxMDAsMTcsMCw4Myw0MSwxOSwyMTgsMTIsODMsMTExLDExNywxMTQsCi0gICAgOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw5OSwyLDAsMCwwLDAsMCwwLAotICAgIDAsMiwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSwxMCwwLAotICAgIDAsMCwxMTYsMCwwLDEzMCwxLDAsMTAwLDEsMCw4Myw0MSwyLDEyMiwxNzgsCi0gICAgNzksMTEyLDExNiwxMDUsMTExLDExMCw5NywxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsCi0gICAgMTE2LDEwNCw5NywxMTYsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDExNiwxMDQsMTAxLAotICAgIDMyLDEwOSwxMTEsMTAwLDEwNSwxMDIsMTA1LDk5LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTYsMTA1LAotICAgIDEwOSwxMDEsMzIsNDAsOTcsMTEwLDMyLDEwNSwxMTAsMTE2LDQxLDMyLDEwMiwxMTEsMTE0LDMyLAotICAgIDExNiwxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNSwxMTIsMTAxLDk5LAotICAgIDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTEyLDk3LDExNiwxMDQsNDQsMzIsMTE5LDEwNCwxMDEsMTE0LAotICAgIDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDUsMTE1LDMyLDk3LDMyLDExNSwxMTYsMTE0LDQ2LAotICAgIDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDgyLDk3LDEwNSwxMTUsMTAxLDExNSwKLSAgICAzMiw3Myw3OSw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTE5LDEwNCwxMDEsMTEwLDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiw5OCwxMDEsCi0gICAgMzIsMTA0LDk3LDExMCwxMDAsMTA4LDEwMSwxMDAsNDYsMTAsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsNzgsNDEsMSwyMTgsNyw3Myw3OSw2OSwxMTQsMTE0LDExMSwxMTQsNDEsMiwKLSAgICAxMTQsMTEwLDAsMCwwLDExNCwzNywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTAsMTEyLDk3LDExNiwxMDQsOTUsCi0gICAgMTA5LDExNiwxMDUsMTA5LDEwMSwxNjksMiwwLDAsMTE1LDIsMCwwLDAsMCw2LAotICAgIDEyMiwyMyw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDExMiwKLSAgICA5NywxMTYsMTA0LDk1LDEwOSwxMTYsMTA1LDEwOSwxMDEsOTksMiwwLDAsMCwwLDAsCi0gICAgMCwwLDIsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMTksCi0gICAgMCwwLDAsMTAwLDEsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsMCwxMzEsCi0gICAgMSwwLDEwNSwxLDAsODMsNDEsMiw5NywxNzAsMSwwLDAsNzksMTEyLDExNiwKKyAgICAzLDAsMCwwLDY3LDAsMCwwLDExNSwxMiwwLDAsMCwxMTYsMCwxMDYsCisgICAgMSwxMjQsMCwxMjQsMSwxMzEsMiw4MywwLDQxLDEsMTIyLDI2LDg0LDEwNCwxMDUsCisgICAgMTE1LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LAorICAgIDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0Niw0MSwyLDExNCwxMTgsMCwwLDAsMjE4LDE3LAorICAgIDk1LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDQsMTA1LAorICAgIDEwOSw0MSwyLDExNCwxMDQsMCwwLDAsMTE0LDEyMywwLDAsMCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTEsMTA4LDExMSwKKyAgICA5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTY4LDIsMCwwLDExNSwyLDAsCisgICAgMCwwLDAsMiwxMjIsMjUsOTUsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDY2LDk3LDExNSwKKyAgICAxMDUsOTksMTE1LDQ2LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDc4LAorICAgIDQxLDgsMTE0LDEwOSwwLDAsMCwxMTQsMTA4LDAsMCwwLDExNCwxMTAsMCwwLAorICAgIDAsMTE0LDExMSwwLDAsMCwxMTQsMTU3LDAsMCwwLDExNCwxODMsMCwwLDAsCisgICAgMTE0LDE4OCwwLDAsMCwxMTQsMTkwLDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxODEsCisgICAgMCwwLDAsMTQ0LDIsMCwwLDExNSwxMCwwLDAsMCw4LDMsNCwyLAorICAgIDgsOCw4LDMsOCw4LDExNCwxODEsMCwwLDAsOTksMCwwLDAsMCwKKyAgICAwLDAsMCwwLDAsMCwwLDAsMywwLDAsMCw2NCwwLDAsMCwKKyAgICAxMTUsNzQsMCwwLDAsMTAxLDAsOTAsMSwxMDAsMCw5MCwyLDEwMCwxLDEwMCwKKyAgICAyLDEzMiwwLDkwLDMsMTAwLDMsMTAwLDQsMTMyLDAsOTAsNCwxMDAsNSwxMDAsCisgICAgNiwxMzIsMCw5MCw1LDEwMCw3LDEwMCw4LDEzMiwwLDkwLDYsMTAwLDksMTAwLAorICAgIDEwLDEzMiwwLDkwLDcsMTAwLDE4LDEwMCwxMiwxNTYsMSwxMDAsMTMsMTAwLDE0LDEzMiwKKyAgICAyLDkwLDgsMTAwLDE1LDEwMCwxNiwxMzIsMCw5MCw5LDEwMCwxNyw4MywwLDQxLAorICAgIDE5LDIxOCwxMiw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDk5LAorICAgIDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDEsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDgsMCwwLDAsMTE2LDAsMTMwLDEsMTAwLDEsODMsCisgICAgMCw0MSwyLDEyMiwxNzgsNzksMTEyLDExNiwxMDUsMTExLDExMCw5NywxMDgsMzIsMTA5LDEwMSwKKyAgICAxMTYsMTA0LDExMSwxMDAsMzIsMTE2LDEwNCw5NywxMTYsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsCisgICAgMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDEwNSwxMDIsMTA1LDk5LDk3LDExNiwxMDUsCisgICAgMTExLDExMCwzMiwxMTYsMTA1LDEwOSwxMDEsMzIsNDAsOTcsMTEwLDMyLDEwNSwxMTAsMTE2LDQxLAorICAgIDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTEyLDk3LDExNiwxMDQsNDQsCisgICAgMzIsMTE5LDEwNCwxMDEsMTE0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDUsMTE1LDMyLDk3LAorICAgIDMyLDExNSwxMTYsMTE0LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDgyLAorICAgIDk3LDEwNSwxMTUsMTAxLDExNSwzMiw3Myw3OSw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTE5LDEwNCwKKyAgICAxMDEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDk5LDk3LDExMCwxMTAsCisgICAgMTExLDExNiwzMiw5OCwxMDEsMzIsMTA0LDk3LDExMCwxMDAsMTA4LDEwMSwxMDAsNDYsMTAsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsNDEsMSwyMTgsNyw3Myw3OSw2OSwxMTQsCisgICAgMTE0LDExMSwxMTQsNDEsMiwxMTQsMTA0LDAsMCwwLDExNCwzNywwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTAsCisgICAgMTEyLDk3LDExNiwxMDQsOTUsMTA5LDExNiwxMDUsMTA5LDEwMSwxNzUsMiwwLDAsMTE1LDIsCisgICAgMCwwLDAsMCw2LDEyMiwyMyw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwOSwxMTYsMTA1LDEwOSwxMDEsOTksMiwKKyAgICAwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsMTQsMCwwLDAsMTAwLDEsMTI0LDAsMTA2LDAsMTI0LDEsCisgICAgMTMxLDEsMTA1LDEsODMsMCw0MSwyLDk3LDE3MCwxLDAsMCw3OSwxMTIsMTE2LAogICAgIDEwNSwxMTEsMTEwLDk3LDEwOCwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMTQsMTAxLDExNiwKICAgICAxMTcsMTE0LDExMCwxMDUsMTEwLDEwMywzMiw5NywzMiwxMDksMTAxLDExNiw5NywxMDAsOTcsMTE2LAogICAgIDk3LDMyLDEwMCwxMDUsOTksMTE2LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExNSwKQEAgLTExMzYsMTAxNyArMTA0Niw5NjggQEAKICAgICA5NywxMDUsMTE1LDEwMSwxMTUsMzIsNzMsNzksNjksMTE0LDExNCwxMTEsMTE0LDMyLDExOSwxMDQsCiAgICAgMTAxLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiw5OSw5NywxMTAsMTEwLAogICAgIDExMSwxMTYsMzIsOTgsMTAxLDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsMTAwLDQ2LDEwLDMyLAotICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNCwxMzUsMCwwLDAsNDEsMSwxMTQsMTk3LAotICAgIDAsMCwwLDQxLDIsMTE0LDExMCwwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNCwxMzAsMCwwLDAsNDEsMSwxMTQsMTkzLAorICAgIDAsMCwwLDQxLDIsMTE0LDEwNCwwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LAogICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDEwLAotICAgIDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTYsOTcsMTE2LDExNSwxNzcsMiwwLDAsMTE1LDIsCisgICAgMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExNiw5NywxMTYsMTE1LDE4MywyLDAsMCwxMTUsMiwKICAgICAwLDAsMCwwLDExLDEyMiwyMyw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LAogICAgIDEwMCwxMDEsMTE0LDQ2LDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTYsOTcsMTE2LDExNSw5OSw0LAogICAgIDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwzLDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSwxNiwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDIsCi0gICAgMCwxMjQsMywwLDEzMSwyLDAsODMsNDEsMSwxMjIsMjI4LDc5LDExMiwxMTYsMTA1LAotICAgIDExMSwxMTAsOTcsMTA4LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDExOSwxMDQsMTA1LDk5LAotICAgIDEwNCwzMiwxMTksMTE0LDEwNSwxMTYsMTAxLDExNSwzMiwxMDAsOTcsMTE2LDk3LDMyLDQwLDk4LAotICAgIDEyMSwxMTYsMTAxLDExNSw0MSwzMiwxMTYsMTExLDMyLDk3LDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwKLSAgICAxMTIsOTcsMTE2LDEwNCwzMiw0MCw5NywzMiwxMTUsMTE2LDExNCw0MSw0NiwxMCwxMCwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LAotICAgIDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwKLSAgICA5NywxMDgsMTA4LDExMSwxMTksMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExOSwKLSAgICAxMTQsMTA1LDExNiwxMDUsMTEwLDEwMywzMiwxMTEsMTAyLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwKLSAgICAxMDAsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDExMiw5NywKLSAgICAxMTYsMTA0LDMyLDEwNSwxMTUsMzIsMTEwLDEwMSwxMDEsMTAwLDEwMSwxMDAsMzIsMTA1LDExMCwzMiwKLSAgICAxMTEsMTE0LDEwMCwxMDEsMTE0LDMyLDExNiwxMTEsMzIsOTksMTExLDExNCwxMTQsMTAxLDk5LDExNiwKLSAgICAxMDgsMTIxLDMyLDExNiwxMTQsOTcsMTEwLDExNSwxMDIsMTAxLDExNCwzMiwxMTIsMTAxLDExNCwxMDksCi0gICAgMTA1LDExNSwxMTUsMTA1LDExMSwxMTAsMTE1LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDQxLDEsMjE4LDgsMTE1LDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5Nyw0MSw0LDExNCwxMTAsCi0gICAgMCwwLDAsMTE0LDkyLDAsMCwwLDkwLDEwLDk5LDk3LDk5LDEwNCwxMDEsOTUsCi0gICAgMTEyLDk3LDExNiwxMDQsMTE0LDU1LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxNSw5NSw5OSw5Nyw5OSwxMDQsMTAxLAotICAgIDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDE5MCwyLDAsMCwxMTUsMiwwLAotICAgIDAsMCwwLDgsMTIyLDI4LDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLAotICAgIDEwMSwxMTQsNDYsOTUsOTksOTcsOTksMTA0LDEwMSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsCi0gICAgMTAwLDEwMSw5OSwzLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwxLAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsCi0gICAgNDEsMiwxMjIsMTUwLDc5LDExMiwxMTYsMTA1LDExMSwxMTAsOTcsMTA4LDMyLDEwOSwxMDEsMTE2LAotICAgIDEwNCwxMTEsMTAwLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMTksMTE0LDEwNSwxMTYsMTAxLDExNSwKLSAgICAzMiwxMDAsOTcsMTE2LDk3LDMyLDQwLDk4LDEyMSwxMTYsMTAxLDExNSw0MSwzMiwxMTYsMTExLAotICAgIDMyLDk3LDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiw0MCw5NywzMiwKLSAgICAxMTUsMTE2LDExNCw0MSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3MywKLSAgICAxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTA1LDExNSwKLSAgICAzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiw5NywxMDgsMTA4LDExMSwxMTksMTE1LDMyLDEwMiwKLSAgICAxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExOSwxMTQsMTA1LDExNiwxMDUsMTEwLDEwMywzMiwxMTEsCi0gICAgMTAyLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwxMTUsCi0gICAgNDYsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsMTE0LDQsMCwwLDAsCi0gICAgNDEsMywxMTQsMTEwLDAsMCwwLDExNCwzNywwLDAsMCwxMTQsNTUsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsCi0gICAgMTE0LDE5OSwwLDAsMCwyMDAsMiwwLDAsMTE1LDAsMCwwLDAsMTIyLDIxLAotICAgIDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTE1LDEwMSwxMTYsCi0gICAgOTUsMTAwLDk3LDExNiw5Nyw5OSwyLDAsMCwwLDAsMCwwLDAsNSwwLAotICAgIDAsMCwxNiwwLDAsMCw2NywwLDAsMCwxMTUsMTA1LDAsMCwwLDEyNCwKLSAgICAwLDAsMTA2LDAsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDIsMCwxMjEsMTksCi0gICAgMCwxMjQsMCwwLDEwNiwxLDAsMTI0LDIsMCwxMzEsMSwwLDEyNSwzLDAsCi0gICAgODcsMTEwLDU4LDAsNCwxMTYsMiwwLDEwNywxMCwwLDExNCw5NCwwLDEsMTI1LAotICAgIDQsMCwxLDEyMiwyNiwwLDExNiwzLDAsMTAwLDEsMCwxMDAsMiwwLDEyNCwKLSAgICAxLDAsMTMxLDEsMSwxMjQsNCwwLDEzMCwyLDAsODcsODksMTAwLDMsMCwKLSAgICAxMDAsMywwLDEyNSw0LDAsMTI2LDQsMCw4OCwxMTAsMSwwLDg4LDExNiw0LAotICAgIDAsMTI0LDMsMCwxMzEsMSwwLDgzLDQxLDQsMTIyLDUyLDY3LDExMSwxMTAsOTksCi0gICAgMTE0LDEwMSwxMTYsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwKLSAgICAxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDczLDExMCwxMTUsMTEyLDEwMSw5OSwxMTYsNzYsMTExLAotICAgIDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsNDYsCi0gICAgMTIyLDM5LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsMTEwLDExMSwxMTYsMzIsOTcsMTE4LDk3LAotICAgIDEwNSwxMDgsOTcsOTgsMTA4LDEwMSwzMiwxMTYsMTA0LDExNCwxMTEsMTE3LDEwMywxMDQsMzIsMTAzLAotICAgIDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5Nyw0MCw0MSwxMTQsMTA4LDAsMCwwLDc4LDQxLAotICAgIDUsMTE0LDE1OSwwLDAsMCwyMTgsOCwxMDMsMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LAotICAgIDExNCw0MiwwLDAsMCwxMTQsMTA5LDAsMCwwLDExNCwxNTcsMCwwLDAsNDEsCi0gICAgNSwxMTQsMTEwLDAsMCwwLDExNCwxMjgsMCwwLDAsMTE0LDM3LDAsMCwwLAotICAgIDExNCwxNTUsMCwwLDAsMjE4LDMsMTAxLDEyMCw5OSwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTAsMTAzLDEwMSwxMTYsOTUsMTE1LAotICAgIDExMSwxMTcsMTE0LDk5LDEwMSwyMDcsMiwwLDAsMTE1LDE0LDAsMCwwLDAsMiwKLSAgICAxNSwxLDMsMSwxOSwxLDE4LDEsOSwxLDMxLDEsMTIyLDIzLDgzLDExMSwKLSAgICAxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LAotICAgIDExMSwxMTcsMTE0LDk5LDEwMSwyMTgsOSw5NSwxMTEsMTEyLDExNiwxMDUsMTA5LDEwNSwxMjIsMTAxLAotICAgIDExNCwzMSwwLDAsMCw5OSwzLDAsMCwwLDEsMCwwLDAsNCwwLAotICAgIDAsMCw5LDAsMCwwLDY3LDAsMCwwLDExNSwzNCwwLDAsMCwxMTYsCi0gICAgMCwwLDEwNiwxLDAsMTE2LDIsMCwxMjQsMSwwLDEyNCwyLDAsMTAwLDEsCi0gICAgMCwxMDAsMiwwLDEwMCwzLDAsMTAwLDQsMCwxMjQsMywwLDEzMSw0LDIsCi0gICAgODMsNDEsNSwxMjIsMTMwLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgOTksMTExLDEwMCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDMyLDk5LDExMSwxMDksMTEyLAotICAgIDEwNSwxMDgsMTAxLDEwMCwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwKLSAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDM5LAotICAgIDEwMCw5NywxMTYsOTcsMzksMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDMyLDk5LAotICAgIDk3LDExMCwzMiw5OCwxMDEsMzIsOTcsMTEwLDEyMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsCi0gICAgMzIsMTE2LDEyMSwxMTIsMTAxLDMyLDExNiwxMDQsOTcsMTE2LDMyLDk5LDExMSwxMDksMTEyLDEwNSwKLSAgICAxMDgsMTAxLDQwLDQxLDMyLDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMTUsNDYsMTAsMzIsCi0gICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE0LDE5MCwwLDAsMCwyMTgsMTIsMTAwLDExMSwKLSAgICAxMTAsMTE2LDk1LDEwNSwxMTAsMTA0LDEwMSwxMTQsMTA1LDExNiw4NCwxMTQsNzAsMCwwLDAsCi0gICAgNDEsMywxMTQsMTIzLDAsMCwwLDExNCwxODksMCwwLDAsMjE4LDcsOTksMTExLAotICAgIDEwOSwxMTIsMTA1LDEwOCwxMDEsNDEsNCwxMTQsMTEwLDAsMCwwLDExNCw1NSwwLDAsCi0gICAgMCwxMTQsMzcsMCwwLDAsMTE0LDIwNCwwLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTQsMTE1LDExMSwxMTcsMTE0LAotICAgIDk5LDEwMSw5NSwxMTYsMTExLDk1LDk5LDExMSwxMDAsMTAxLDIxNywyLDAsMCwxMTUsNCwKLSAgICAwLDAsMCwwLDUsMjEsMSwxMjIsMjcsODMsMTExLDExNywxMTQsOTksMTAxLDc2LAotICAgIDExMSw5NywxMDAsMTAxLDExNCw0NiwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDExNiwxMTEsOTUsCi0gICAgOTksMTExLDEwMCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDEwLDAsMCwKLSAgICAwLDQzLDAsMCwwLDY3LDAsMCwwLDExNSwxNzQsMSwwLDAsMTI0LDAsCi0gICAgMCwxMDYsMCwwLDEyNCwxLDAsMTMxLDEsMCwxMjUsMiwwLDEwMCwxLDAsCi0gICAgMTI1LDMsMCwxMjEsMTYsMCwxMTYsMSwwLDEyNCwyLDAsMTMxLDEsMCwxMjUsCi0gICAgNCwwLDg3LDExMCwyNCwwLDQsMTE2LDIsMCwxMDcsMTAsMCwxMTQsNjMsMCwKLSAgICAxLDEsMSwxMDAsMSwwLDEyNSw0LDAsODksMTEwLDIwMiwwLDg4LDEyMSwxOSwKLSAgICAwLDEyNCwwLDAsMTA2LDMsMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDUsMCwKLSAgICA4NywxMTAsMTgsMCw0LDExNiw0LDAsMTA3LDEwLDAsMTE0LDEwMywwLDEsMSwKLSAgICAxLDg5LDExMCwxNjIsMCw4OCwxMTYsNSwwLDEyNCw1LDAsMTAwLDIsMCwyNSwKLSAgICAxMzEsMSwwLDEyNSwzLDAsMTIxLDE5LDAsMTI0LDAsMCwxMDYsNiwwLDEyNCwKLSAgICA0LDAsMTMxLDEsMCwxMjUsNiwwLDg3LDExMCwxOCwwLDQsMTE2LDcsMCwKLSAgICAxMDcsMTAsMCwxMTQsMTU5LDAsMSwxLDEsODksMTEwLDEwNiwwLDg4LDEyMSwzNCwKLSAgICAwLDExNiw4LDAsMTI0LDYsMCwxMDAsMywwLDEyNCw1LDAsMTAwLDQsMCwKLSAgICAxMjQsMSwwLDEwMCw1LDAsMTI0LDQsMCwxMzEsMSwzLDEyNSw3LDAsODcsCi0gICAgMTEwLDI0LDAsNCwxMTYsOSwwLDExNiwxMCwwLDEwMiwyLDAsMTA3LDEwLDAsCi0gICAgMTE0LDIyMCwwLDEsMSwxLDg5LDExMCw0NSwwLDg4LDExNiwxMSwwLDEwMCw2LAotICAgIDAsMTI0LDQsMCwxMjQsMiwwLDEzMSwzLDAsMSwxMTYsMTIsMCwxMjQsNywKLSAgICAwLDEwMCw0LDAsMTI0LDEsMCwxMDAsNywwLDEyNCw0LDAsMTAwLDgsMCwKLSAgICAxMjQsMiwwLDEzMSwxLDMsODMsMTI0LDAsMCwxMDYsNiwwLDEyNCwyLDAsCi0gICAgMTMxLDEsMCwxMjUsOCwwLDEyNCwwLDAsMTA2LDEzLDAsMTI0LDgsMCwxMjQsCi0gICAgMiwwLDEzMSwyLDAsMTI1LDksMCwxMTYsMTEsMCwxMDAsOSwwLDEyNCwyLAotICAgIDAsMTMxLDIsMCwxLDExNiwxNCwwLDEwNiwxNSwwLDEyLDExNCwxNzAsMSwxMjQsCi0gICAgNCwwLDEwMCwxLDAsMTA3LDksMCwxMTQsMTcwLDEsMTI0LDMsMCwxMDAsMSwKLSAgICAwLDEwNyw5LDAsMTE0LDE3MCwxLDExNiwxNiwwLDEyNCw5LDAsMTI0LDMsMCwKLSAgICAxMTYsMTcsMCwxMjQsOCwwLDEzMSwxLDAsMTMxLDMsMCwxMjUsNiwwLDEyMSwKLSAgICAzNiwwLDEyNCwwLDAsMTA2LDE4LDAsMTI0LDIsMCwxMjQsNCwwLDEyNCw2LAotICAgIDAsMTMxLDMsMCwxLDExNiwxMSwwLDEwMCwxMCwwLDEyNCw0LDAsMTMxLDIsCi0gICAgMCwxLDg3LDExMCwxOCwwLDQsMTE2LDIsMCwxMDcsMTAsMCwxMTQsMTY5LDEsCi0gICAgMSwxLDEsODksMTEwLDEsMCw4OCwxMjQsOSwwLDgzLDQxLDExLDEyMiwxOTAsCi0gICAgNjcsMTExLDExMCw5OSwxMTQsMTAxLDExNiwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLAotICAgIDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsNzMsMTEwLDExNSwxMTIsMTAxLAotICAgIDk5LDExNiw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwKLSAgICAxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODIsMTAxLDk3LDEwMCwKLSAgICAxMDUsMTEwLDEwMywzMiwxMTEsMTAyLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLAotICAgIDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsMzIsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExNiwKLSAgICA5NywxMTYsMTE1LDMyLDExNiwxMTEsMzIsOTgsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LAotICAgIDEwMSwxMTAsMTE2LDEwMSwxMDAsNDYsMzIsODQsMTExLDMyLDExOSwxMTQsMTA1LDExNiwxMDEsMTAsCi0gICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsCi0gICAgNDQsMzIsMTE1LDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5NywzMiwxMDksMTE3LDExNSwxMTYsMzIsCi0gICAgOTcsMTA4LDExNSwxMTEsMzIsOTgsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsCi0gICAgMTE2LDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsMTE0LAotICAgIDEzNSwwLDAsMCwxMTQsMTQwLDAsMCwwLDExNCwxMDgsMCwwLDAsMTE0LDM3LAotICAgIDAsMCwwLDEyMiwxMywxMjMsMTI1LDMyLDEwOSw5NywxMTYsOTksMTA0LDEwMSwxMTUsMzIsCi0gICAgMTIzLDEyNSwxMTQsOTEsMCwwLDAsMTE0LDkyLDAsMCwwLDEyMiwxOSw5OSwxMTEsCi0gICAgMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDEyMywKLSAgICAxMjUsMTIyLDEwLDExOSwxMTQsMTExLDExNiwxMDEsMzIsMTIzLDMzLDExNCwxMjUsNDEsMTksMTE0LAotICAgIDE1OSwwLDAsMCwxMTQsODEsMCwwLDAsMTE0LDY4LDAsMCwwLDExNCwxOTgsCi0gICAgMCwwLDAsMTE0LDE5NiwwLDAsMCwxMTQsMTYsMCwwLDAsMTE0LDIwMSwwLAotICAgIDAsMCwxMTQsNDIsMCwwLDAsMTE0LDE0MywwLDAsMCwxMTQsMTA5LDAsMCwKLSAgICAwLDExNCwxMzgsMCwwLDAsMTE0LDEwNywwLDAsMCwxMTQsMTQ5LDAsMCwwLAotICAgIDExNCwyMDcsMCwwLDAsMTE0LDgsMCwwLDAsMjE4LDE5LDEwMCwxMTEsMTEwLDExNiwKLSAgICA5NSwxMTksMTE0LDEwNSwxMTYsMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDExNCwKLSAgICAxNTIsMCwwLDAsMTE0LDMzLDAsMCwwLDExNCwyMDAsMCwwLDAsNDEsMTAsCi0gICAgMTE0LDExMCwwLDAsMCwxMTQsMTI4LDAsMCwwLDExNCw5MiwwLDAsMCwxMTQsCi0gICAgMTQxLDAsMCwwLDExNCw5MSwwLDAsMCwyMTgsMiwxMTUsMTE2LDExNCw1NSwwLAotICAgIDAsMCwyMTgsMTAsOTgsMTIxLDExNiwxMDEsMTE1LDk1LDEwMCw5NywxMTYsOTcsMTE0LDE1NSwKLSAgICAwLDAsMCw5MCwxMSw5OSwxMTEsMTAwLDEwMSw5NSwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsCi0gICAgMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LAotICAgIDE4OCwwLDAsMCwyMjUsMiwwLDAsMTE1LDc4LDAsMCwwLDAsNywxNSwKLSAgICAxLDYsMSwzLDEsMTYsMSwxMywxLDExLDIsMywxLDE5LDEsMTMsCi0gICAgMSw1LDIsMTYsMSwzLDEsMTksMSwxMywxLDUsMiwzLDEsOSwKLSAgICAxLDEyLDEsMTMsMSwxOSwxLDUsMiw5LDEsNywxLDE1LDEsNiwKLSAgICAxLDcsMSwxNSwxLDE4LDEsMTMsMSwyMiwxLDEyLDEsOSwxLDE1LAotICAgIDEsMywxLDE5LDEsMTcsMSwxMywxLDUsMSwxMjIsMjEsODMsMTExLDExNywKLSAgICAxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsCi0gICAgMTAwLDEwMSw3OCwxMTQsODksMCwwLDAsNDEsMTAsMTE0LDExNCwwLDAsMCwxMTQsCi0gICAgMTEzLDAsMCwwLDExNCwxMTUsMCwwLDAsMTE0LDE5NywwLDAsMCwxMTQsMTk4LAotICAgIDAsMCwwLDExNCwyMDAsMCwwLDAsMTE0LDE5OSwwLDAsMCwxMTQsMjAzLDAsCi0gICAgMCwwLDExNCwyMDcsMCwwLDAsMTE0LDE4OCwwLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKLSAgICAxMTQsMTk1LDAsMCwwLDE2NywyLDAsMCwxMTUsMTQsMCwwLDAsMTIsMiwKLSAgICAxMiw4LDEyLDEzLDEyLDEwLDEyLDcsMTIsMTAsMTgsOCwxMTQsMTk1LDAsMCwKLSAgICAwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDQsMCwKLSAgICAwLDAsMCwwLDAsMCwxMTUsMTEyLDAsMCwwLDEwMSwwLDAsOTAsMSwKLSAgICAwLDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsCi0gICAgMTAwLDMsMCwxMzIsMCwwLDkwLDQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLAotICAgIDAsMCw5MCw1LDAsMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsOTAsNiwKLSAgICAwLDEwMSw3LDAsMTM1LDAsMCwxMDIsMSwwLDEwMCw4LDAsMTAwLDksMCwKLSAgICAxMzQsMCwwLDEzMSwxLDAsOTAsOCwwLDEwMSw3LDAsMTAwLDEwLDAsMTAwLAotICAgIDExLDAsMTMyLDAsMCwxMzEsMSwwLDkwLDksMCwxMDAsMTIsMCwxMDAsMTMsCi0gICAgMCwxMzIsMCwwLDkwLDEwLDAsMTM1LDAsMCw4Myw0MSwxNCwyMTgsMTAsNzAsCi0gICAgMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDEyMiwxMDMsNjYsOTcsMTE1LDEwMSwzMiwKLSAgICAxMDIsMTA1LDEwOCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiw5OSwxMDgsOTcsMTE1LAotICAgIDExNSwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwKLSAgICAxMTYsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTEyLDExNCwKLSAgICAxMTEsMTE2LDExMSw5OSwxMTEsMTA4LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDExNSwzMiwxMTYsCi0gICAgMTA0LDk3LDExNiwxMCwzMiwzMiwzMiwzMiwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMzIsCi0gICAgMTAyLDEwNSwxMDgsMTAxLDMyLDExNSwxMjEsMTE1LDExNiwxMDEsMTA5LDMyLDExNywxMTUsOTcsMTAzLAotICAgIDEwMSw0Niw5OSwzLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwyLAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSwyMiwwLDAsMCwxMjQsMSwwLDEyNCwKLSAgICAwLDAsOTUsMCwwLDEyNCwyLDAsMTI0LDAsMCw5NSwxLDAsMTAwLDEsCi0gICAgMCw4Myw0MSwyLDEyMiw3NSw2Nyw5Nyw5OSwxMDQsMTAxLDMyLDExNiwxMDQsMTAxLDMyLAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDMyLDk3LDExMCwxMDAsMzIsCi0gICAgMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICAxMDIsMTA1LDEwOCwxMDEsMzIsMTAyLDExMSwxMTcsMTEwLDEwMCwzMiw5OCwxMjEsMzIsMTE2LDEwNCwKLSAgICAxMDEsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsCi0gICAgNDYsNzgsNDEsMiwxMTQsMTA4LDAsMCwwLDExNCwzNywwLDAsMCw0MSwzLAotICAgIDExNCwxMTAsMCwwLDAsMTE0LDEyOCwwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE4NiwKLSAgICAwLDAsMCwyNiwzLDAsMCwxMTUsNCwwLDAsMCwwLDMsOSwxLAotICAgIDEyMiwxOSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTA1LAotICAgIDExMCwxMDUsMTE2LDk1LDk1LDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsCi0gICAgMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDM0LDAsMCwwLDEyNCwKLSAgICAwLDAsMTA2LDAsMCwxMjQsMSwwLDEwNiwwLDAsMTA3LDIsMCwxMTEsMzMsCi0gICAgMCwxMjQsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMDYsMSwwLDEwNywyLDAsCi0gICAgODMsNDEsMSw3OCw0MSwyLDIxOCw5LDk1LDk1LDk5LDEwOCw5NywxMTUsMTE1LDk1LAotICAgIDk1LDExNCwxMjAsMCwwLDAsNDEsMiwxMTQsMTEwLDAsMCwwLDIxOCw1LDExMSwKLSAgICAxMTYsMTA0LDEwMSwxMTQsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsCi0gICAgMCwwLDAsMjE4LDYsOTUsOTUsMTAxLDExMyw5NSw5NSwzMiwzLDAsMCwxMTUsCi0gICAgNCwwLDAsMCwwLDEsMTgsMSwxMjIsMTcsNzAsMTA1LDEwOCwxMDEsNzYsMTExLAotICAgIDk3LDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDEwMSwxMTMsOTUsOTUsOTksMSwwLDAsMCwKLSAgICAwLDAsMCwwLDEsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwKLSAgICAxMTUsMjYsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTMxLDEsCi0gICAgMCwxMTYsMCwwLDEyNCwwLDAsMTA2LDIsMCwxMzEsMSwwLDY1LDgzLDQxLAotICAgIDEsNzgsNDEsMywyMTgsNCwxMDQsOTcsMTE1LDEwNCwxMTQsMTA4LDAsMCwwLDExNCwKLSAgICAzNywwLDAsMCw0MSwxLDExNCwxMTAsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDgsOTUsOTUsMTA0LDk3LAotICAgIDExNSwxMDQsOTUsOTUsMzYsMywwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwKLSAgICAxOSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTA0LDk3LAotICAgIDExNSwxMDQsOTUsOTUsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLAotICAgIDAsMywwLDAsMCwzLDAsMCwwLDExNSwyMiwwLDAsMCwxMTYsMCwKLSAgICAwLDExNiwxLDAsMTI0LDAsMCwxMzEsMiwwLDEwNiwyLDAsMTI0LDEsMCwKLSAgICAxMzEsMSwwLDgzLDQxLDEsMTIyLDEwMCw3NiwxMTEsOTcsMTAwLDMyLDk3LDMyLDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwMiwxMTQsMTExLDEwOSwzMiw5NywzMiwxMDIsMTA1LDEwOCwKLSAgICAxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsCi0gICAgMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLAotICAgIDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg1LDExNSwxMDEsMzIsMTAxLDEyMCwxMDEsOTksCi0gICAgOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsNDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywKLSAgICAxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNDEsMywyMTgsNSwKLSAgICAxMTUsMTE3LDExMiwxMDEsMTE0LDExNCwyMTEsMCwwLDAsMTE0LDE5NCwwLDAsMCw0MSwKLSAgICAyLDExNCwxMTAsMCwwLDAsMTE0LDEyOCwwLDAsMCw0MSwxLDExNCwyMTIsMCwKLSAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE5NCwwLDAsCi0gICAgMCwzOSwzLDAsMCwxMTUsMiwwLDAsMCwwLDEwLDEyMiwyMiw3MCwxMDUsCi0gICAgMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLAotICAgIDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsNywwLDAsMCwxMjQsMCwKLSAgICAwLDEwNiwwLDAsODMsNDEsMSwxMjIsNTgsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwKKyAgICAwLDAsMCwxMTUsMTIsMCwwLDAsMTI0LDAsMTA2LDAsMTI0LDIsMTI0LDMsCisgICAgMTMxLDIsODMsMCw0MSwxLDEyMiwyMjgsNzksMTEyLDExNiwxMDUsMTExLDExMCw5NywxMDgsCisgICAgMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDExOSwxMTQsCisgICAgMTA1LDExNiwxMDEsMTE1LDMyLDEwMCw5NywxMTYsOTcsMzIsNDAsOTgsMTIxLDExNiwxMDEsMTE1LAorICAgIDQxLDMyLDExNiwxMTEsMzIsOTcsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDExMiw5NywxMTYsMTA0LAorICAgIDMyLDQwLDk3LDMyLDExNSwxMTYsMTE0LDQxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDczLDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTA1LDExMCwxMDMsMzIsCisgICAgMTE2LDEwNCwxMDUsMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDk3LDEwOCwxMDgsMTExLAorICAgIDExOSwxMTUsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTE5LDExNCwxMDUsMTE2LDEwNSwKKyAgICAxMTAsMTAzLDMyLDExMSwxMDIsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTAyLAorICAgIDEwNSwxMDgsMTAxLDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwKKyAgICAxMDQsMTAxLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTA1LAorICAgIDExNSwzMiwxMTAsMTAxLDEwMSwxMDAsMTAxLDEwMCwzMiwxMDUsMTEwLDMyLDExMSwxMTQsMTAwLDEwMSwKKyAgICAxMTQsMzIsMTE2LDExMSwzMiw5OSwxMTEsMTE0LDExNCwxMDEsOTksMTE2LDEwOCwxMjEsMzIsMTE2LAorICAgIDExNCw5NywxMTAsMTE1LDEwMiwxMDEsMTE0LDMyLDExMiwxMDEsMTE0LDEwOSwxMDUsMTE1LDExNSwxMDUsCisgICAgMTExLDExMCwxMTUsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNDEsMSwyMTgsOCwKKyAgICAxMTUsMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDQxLDQsMTE0LDEwNCwwLDAsMCwxMTQsCisgICAgOTQsMCwwLDAsOTAsMTAsOTksOTcsOTksMTA0LDEwMSw5NSwxMTIsOTcsMTE2LDEwNCwKKyAgICAxMTQsNTYsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDYsMCwwLDAsMjE4LDE1LDk1LDk5LDk3LDk5LDEwNCwxMDEsOTUsOTgsMTIxLDExNiwKKyAgICAxMDEsOTksMTExLDEwMCwxMDEsMTk2LDIsMCwwLDExNSwyLDAsMCwwLDAsOCwKKyAgICAxMjIsMjgsODMsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0Niw5NSwKKyAgICA5OSw5Nyw5OSwxMDQsMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDk5LDMsCisgICAgMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDEsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsODMsMCw0MSwyLDEyMiwxNTAsCisgICAgNzksMTEyLDExNiwxMDUsMTExLDExMCw5NywxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsCisgICAgMTE5LDEwNCwxMDUsOTksMTA0LDMyLDExOSwxMTQsMTA1LDExNiwxMDEsMTE1LDMyLDEwMCw5NywxMTYsCisgICAgOTcsMzIsNDAsOTgsMTIxLDExNiwxMDEsMTE1LDQxLDMyLDExNiwxMTEsMzIsOTcsMzIsMTAyLAorICAgIDEwNSwxMDgsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDQwLDk3LDMyLDExNSwxMTYsMTE0LDQxLAorICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDczLDEwOSwxMTIsMTA4LDEwMSwKKyAgICAxMDksMTAxLDExMCwxMTYsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwOSwxMDEsMTE2LAorICAgIDEwNCwxMTEsMTAwLDMyLDk3LDEwOCwxMDgsMTExLDExOSwxMTUsMzIsMTAyLDExMSwxMTQsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTE5LDExNCwxMDUsMTE2LDEwNSwxMTAsMTAzLDMyLDExMSwxMDIsMzIsOTgsMTIxLAorICAgIDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDExNSw0NiwxMCwzMiwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiw3OCwxMTQsNCwwLDAsMCw0MSwzLDExNCwxMDQsCisgICAgMCwwLDAsMTE0LDM3LDAsMCwwLDExNCw1NiwwLDAsMCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTk1LDAsMCwKKyAgICAwLDIwNiwyLDAsMCwxMTUsMCwwLDAsMCwxMjIsMjEsODMsMTExLDExNywxMTQsCisgICAgOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMTUsMTAxLDExNiw5NSwxMDAsOTcsMTE2LAorICAgIDk3LDk5LDIsMCwwLDAsMCwwLDAsMCw1LDAsMCwwLDE2LDAsCisgICAgMCwwLDY3LDAsMCwwLDExNSw4MiwwLDAsMCwxMjQsMCwxMDYsMCwxMjQsCisgICAgMSwxMzEsMSwxMjUsMiwxMjEsMTQsMTI0LDAsMTA2LDEsMTI0LDIsMTMxLDEsMTI1LAorICAgIDMsODcsMCwxMTAsNDgsNCwwLDExNiwyLDEwNywxMCwxMTQsNzIsMSwwLDEyNSwKKyAgICA0LDEsMCwxMjIsMjAsMTE2LDMsMTAwLDEsMTI0LDEsMTAwLDIsMTQxLDIsMTI0LAorICAgIDQsMTMwLDIsODcsMCw4OSwwLDEwMCwzLDEwMCwzLDEyNSw0LDEyNiw0LDg4LAorICAgIDAsMTEwLDIsODgsMCwxMTYsNCwxMjQsMywxMzEsMSw4MywwLDQxLDQsMTIyLAorICAgIDUyLDY3LDExMSwxMTAsOTksMTE0LDEwMSwxMTYsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LAorICAgIDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDczLDExMCwxMTUsMTEyLAorICAgIDEwMSw5OSwxMTYsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDExNSwxMTEsCisgICAgMTE3LDExNCw5OSwxMDEsNDYsMTIyLDM5LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsMTEwLDExMSwKKyAgICAxMTYsMzIsOTcsMTE4LDk3LDEwNSwxMDgsOTcsOTgsMTA4LDEwMSwzMiwxMTYsMTA0LDExNCwxMTEsCisgICAgMTE3LDEwMywxMDQsMzIsMTAzLDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5Nyw0MCw0MSw0MSwxLAorICAgIDExNCwxMDIsMCwwLDAsNzgsNDEsNSwxMTQsMTU1LDAsMCwwLDIxOCw4LDEwMywKKyAgICAxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsMTE0LDQyLDAsMCwwLDExNCwxMDMsMCwwLAorICAgIDAsMTE0LDE1MywwLDAsMCw0MSw1LDExNCwxMDQsMCwwLDAsMTE0LDEyMywwLAorICAgIDAsMCwxMTQsMzcsMCwwLDAsMTE0LDE1MSwwLDAsMCwyMTgsMywxMDEsMTIwLAorICAgIDk5LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLAorICAgIDIxOCwxMCwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDIxMywyLDAsMCwKKyAgICAxMTUsMTQsMCwwLDAsMCwyLDEwLDEsMiwxLDE0LDEsMTYsMSw0LAorICAgIDEsMjgsMSwxMjIsMjMsODMsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLAorICAgIDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDExNCwzMSwwLDAsCisgICAgMCw0MSwxLDIxOCw5LDk1LDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiwxMDEsOTksMywKKyAgICAwLDAsMCwxLDAsMCwwLDQsMCwwLDAsOCwwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsMjIsMCwwLDAsMTE2LDAsMTA2LDEsMTE2LDIsMTI0LDEsCisgICAgMTI0LDIsMTAwLDEsMTAwLDIsMTI0LDMsMTAwLDMsMTQxLDYsODMsMCw0MSw0LAorICAgIDEyMiwxMzAsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiw5OSwxMTEsMTAwLAorICAgIDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMzIsOTksMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsCisgICAgMTAwLDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDQ2LDEwLDEwLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMzksMTAwLDk3LDExNiwKKyAgICA5NywzOSwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsOTksOTcsMTEwLDMyLAorICAgIDk4LDEwMSwzMiw5NywxMTAsMTIxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiwxMTYsMTIxLAorICAgIDExMiwxMDEsMzIsMTE2LDEwNCw5NywxMTYsMzIsOTksMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsNDAsCisgICAgNDEsMzIsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDExNSw0NiwxMCwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiwzMiwxMTQsMTg2LDAsMCwwLDg0LDQxLDIsMjE4LDEyLDEwMCwxMTEsCisgICAgMTEwLDExNiw5NSwxMDUsMTEwLDEwNCwxMDEsMTE0LDEwNSwxMTYsMTE0LDcyLDAsMCwwLDQxLAorICAgIDMsMTE0LDExOCwwLDAsMCwxMTQsMTg1LDAsMCwwLDIxOCw3LDk5LDExMSwxMDksCisgICAgMTEyLDEwNSwxMDgsMTAxLDQxLDQsMTE0LDEwNCwwLDAsMCwxMTQsNTYsMCwwLDAsCisgICAgMTE0LDM3LDAsMCwwLDExNCwyMDAsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDE0LDExNSwxMTEsMTE3LDExNCw5OSwKKyAgICAxMDEsOTUsMTE2LDExMSw5NSw5OSwxMTEsMTAwLDEwMSwyMjMsMiwwLDAsMTE1LDQsMCwKKyAgICAwLDAsMCw1LDEyLDEsMTIyLDI3LDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsNDYsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMTYsMTExLDk1LDk5LAorICAgIDExMSwxMDAsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwxMCwwLDAsMCwKKyAgICA0MywwLDAsMCw2NywwLDAsMCwxMTUsOTQsMSwwLDAsMTI0LDAsMTA2LAorICAgIDAsMTI0LDEsMTMxLDEsMTI1LDIsMTAwLDEsMTI1LDMsMTIxLDEyLDExNiwxLDEyNCwKKyAgICAyLDEzMSwxLDEyNSw0LDg3LDAsMTEwLDI0LDQsMCwxMTYsMiwxMDcsMTAsMTE0LAorICAgIDUwLDEsMCwxLDAsMSwwLDEwMCwxLDEyNSw0LDg5LDAsMTEwLDE2Miw4OCwKKyAgICAwLDEyMSwxNCwxMjQsMCwxMDYsMywxMjQsMiwxMzEsMSwxMjUsNSw4NywwLDExMCwKKyAgICAyMCw0LDAsMTE2LDQsMTA3LDEwLDExNCw4NiwxLDAsMSwwLDEsMCw4OSwKKyAgICAwLDExMCwxMjYsODgsMCwxMTYsNSwxMjQsNSwxMDAsMiwyNSwwLDEzMSwxLDEyNSwKKyAgICAzLDEyMSwxNCwxMjQsMCwxMDYsNiwxMjQsNCwxMzEsMSwxMjUsNiw4NywwLDExMCwKKyAgICAyMCw0LDAsMTE2LDcsMTA3LDEwLDExNCwxMzQsMSwwLDEsMCwxLDAsODksCisgICAgMCwxMTAsNzgsODgsMCwxMjEsMjAsMTE2LDgsMTI0LDYsMTI0LDUsMTI0LDEsMTI0LAorICAgIDQsMTAwLDMsMTQxLDQsMTI1LDcsODcsMCwxMTAsMjQsNCwwLDExNiw5LDExNiwKKyAgICAxMCwxMDIsMiwxMDcsMTAsMTE0LDE4MCwxLDAsMSwwLDEsMCw4OSwwLDExMCwKKyAgICAzMiw4OCwwLDExNiwxMSwxMDYsMTIsMTAwLDQsMTI0LDQsMTI0LDIsMTMxLDMsMSwKKyAgICAwLDExNiwxMywxMjQsNywxMjQsMSwxMjQsNCwxMjQsMiwxMDAsNSwxNDEsNCw4MywKKyAgICAwLDEyNCwwLDEwNiw2LDEyNCwyLDEzMSwxLDEyNSw4LDEyNCwwLDEwNiwxNCwxMjQsCisgICAgOCwxMjQsMiwxMzEsMiwxMjUsOSwxMTYsMTEsMTA2LDEyLDEwMCw2LDEyNCwyLDEzMSwKKyAgICAyLDEsMCwxMTYsMTUsMTA2LDE2LDEyLDAsMTQ0LDEsMTE0LDkwLDEyNCw0LDEwMCwKKyAgICAxLDEwNyw5LDE0NCwxLDExNCw5MCwxMjQsMywxMDAsMSwxMDcsOSwxNDQsMSwxMTQsCisgICAgOTAsMTE2LDE3LDEyNCw5LDEyNCwzLDExNiwxOCwxMjQsOCwxMzEsMSwxMzEsMywxMjUsCisgICAgNiwxMjEsMzAsMTI0LDAsMTA2LDE5LDEyNCwyLDEyNCw0LDEyNCw2LDEzMSwzLDEsCisgICAgMCwxMTYsMTEsMTA2LDEyLDEwMCw3LDEyNCw0LDEzMSwyLDEsMCw4NywwLDExMCwKKyAgICAyMiw0LDAsMTE2LDIsMTA3LDEwLDE0NCwxLDExNCw4OCwxLDAsMSwwLDEsCisgICAgMCw4OSwwLDExMCwyLDg4LDAsMTI0LDksODMsMCw0MSw4LDEyMiwxOTAsNjcsCisgICAgMTExLDExMCw5OSwxMTQsMTAxLDExNiwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwKKyAgICAxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsNzMsMTEwLDExNSwxMTIsMTAxLDk5LAorICAgIDExNiw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsCisgICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODIsMTAxLDk3LDEwMCwxMDUsCisgICAgMTEwLDEwMywzMiwxMTEsMTAyLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDExNCwKKyAgICAxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsMzIsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExNiw5NywKKyAgICAxMTYsMTE1LDMyLDExNiwxMTEsMzIsOTgsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwKKyAgICAxMTAsMTE2LDEwMSwxMDAsNDYsMzIsODQsMTExLDMyLDExOSwxMTQsMTA1LDExNiwxMDEsMTAsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsNDQsCisgICAgMzIsMTE1LDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5NywzMiwxMDksMTE3LDExNSwxMTYsMzIsOTcsCisgICAgMTA4LDExNSwxMTEsMzIsOTgsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LAorICAgIDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsMTE0LDEzMCwKKyAgICAwLDAsMCw0MSwzLDExNCwxMzYsMCwwLDAsMTE0LDEwMiwwLDAsMCwxMTQsCisgICAgMzcsMCwwLDAsMTIyLDEzLDEyMywxMjUsMzIsMTA5LDk3LDExNiw5OSwxMDQsMTAxLDExNSwKKyAgICAzMiwxMjMsMTI1LDQxLDMsMTE0LDEwMiwwLDAsMCwxMTQsOTMsMCwwLDAsMTE0LAorICAgIDk0LDAsMCwwLDEyMiwxOSw5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwKKyAgICAxMTYsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDEyMywxMjUsMTIyLDEwLDExOSwxMTQsMTExLDExNiwxMDEsCisgICAgMzIsMTIzLDMzLDExNCwxMjUsNDEsMjAsMTE0LDE1NSwwLDAsMCwxMTQsODMsMCwwLAorICAgIDAsMTE0LDcwLDAsMCwwLDExNCwxOTQsMCwwLDAsMTE0LDE5MiwwLDAsMCwKKyAgICAxMTQsMTYsMCwwLDAsMTE0LDE5NywwLDAsMCwxMTQsNDIsMCwwLDAsMTE0LAorICAgIDEzOSwwLDAsMCwxMTQsMTAzLDAsMCwwLDExNCwxMzQsMCwwLDAsMTE0LDExOCwKKyAgICAwLDAsMCwxMTQsMTMzLDAsMCwwLDExNCwxNDUsMCwwLDAsMTE0LDIwMywwLAorICAgIDAsMCwxMTQsOCwwLDAsMCwyMTgsMTksMTAwLDExMSwxMTAsMTE2LDk1LDExOSwxMTQsCisgICAgMTA1LDExNiwxMDEsOTUsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMTE0LDE0OCwwLDAsCisgICAgMCwxMTQsMzMsMCwwLDAsMTE0LDE5NiwwLDAsMCw0MSwxMCwxMTQsMTA0LDAsCisgICAgMCwwLDExNCwxMjMsMCwwLDAsMTE0LDk0LDAsMCwwLDExNCwxMzcsMCwwLAorICAgIDAsMTE0LDkzLDAsMCwwLDIxOCwyLDExNSwxMTYsMTE0LDU2LDAsMCwwLDIxOCwKKyAgICAxMCw5OCwxMjEsMTE2LDEwMSwxMTUsOTUsMTAwLDk3LDExNiw5NywxMTQsMTUxLDAsMCwwLAorICAgIDkwLDExLDk5LDExMSwxMDAsMTAxLDk1LDExMSw5OCwxMDYsMTAxLDk5LDExNiwxMTQsNCwwLAorICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTg0LDAsMCwKKyAgICAwLDIzMSwyLDAsMCwxMTUsNzgsMCwwLDAsMCw3LDEwLDEsNCwxLAorICAgIDIsMSwxMiwxLDE0LDEsMTAsMiwyLDEsMTQsMSwxNCwxLDYsMiwKKyAgICAxMiwxLDIsMSwxNCwxLDE0LDEsNiwyLDIsMSw0LDEsNCwxLAorICAgIDEyLDEsMTgsMSw2LDIsOCwxLDYsMSw2LDEsMiwxLDgsMSwKKyAgICAxMCwxLDEyLDEsMTIsMSwyMCwxLDEwLDEsNiwxLDEwLDEsMiwxLAorICAgIDE0LDEsMTYsMSwxNiwxLDYsMSwxMjIsMjEsODMsMTExLDExNywxMTQsOTksMTAxLAorICAgIDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSw3OCwKKyAgICAxMTQsOTEsMCwwLDAsNDEsMTAsMTE0LDEwOSwwLDAsMCwxMTQsMTA4LDAsMCwKKyAgICAwLDExNCwxMTAsMCwwLDAsMTE0LDE5MywwLDAsMCwxMTQsMTk0LDAsMCwwLAorICAgIDExNCwxOTYsMCwwLDAsMTE0LDE5NSwwLDAsMCwxMTQsMTk5LDAsMCwwLDExNCwKKyAgICAyMDMsMCwwLDAsMTE0LDE4NCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTkxLDAsCisgICAgMCwwLDE3MywyLDAsMCwxMTUsMTQsMCwwLDAsOCwyLDgsOCw4LAorICAgIDEzLDgsMTAsOCw3LDgsMTAsMTQsOCwxMTQsMTkxLDAsMCwwLDk5LDAsCisgICAgMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsMCwKKyAgICAwLDAsMCwxMTUsODAsMCwwLDAsMTAxLDAsOTAsMSwxMDAsMCw5MCwyLAorICAgIDEwMCwxLDkwLDMsMTAwLDIsMTAwLDMsMTMyLDAsOTAsNCwxMDAsNCwxMDAsNSwKKyAgICAxMzIsMCw5MCw1LDEwMCw2LDEwMCw3LDEzMiwwLDkwLDYsMTAxLDcsMTM1LDAsCisgICAgMTAyLDEsMTAwLDgsMTAwLDksMTMyLDgsMTMxLDEsOTAsOCwxMDEsNywxMDAsMTAsCisgICAgMTAwLDExLDEzMiwwLDEzMSwxLDkwLDksMTAwLDEyLDEwMCwxMywxMzIsMCw5MCwxMCwKKyAgICAxMzUsMCw0LDAsOTAsMTEsODMsMCw0MSwxNCwyMTgsMTAsNzAsMTA1LDEwOCwxMDEsCisgICAgNzYsMTExLDk3LDEwMCwxMDEsMTE0LDEyMiwxMDMsNjYsOTcsMTE1LDEwMSwzMiwxMDIsMTA1LDEwOCwKKyAgICAxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiw5OSwxMDgsOTcsMTE1LDExNSwzMiwxMTksCisgICAgMTA0LDEwNSw5OSwxMDQsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTE1LDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTEyLDExNCwxMTEsMTE2LDExMSwKKyAgICA5OSwxMTEsMTA4LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDExNSwzMiwxMTYsMTA0LDk3LDExNiwKKyAgICAxMCwzMiwzMiwzMiwzMiwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMzIsMTAyLDEwNSwxMDgsCisgICAgMTAxLDMyLDExNSwxMjEsMTE1LDExNiwxMDEsMTA5LDMyLDExNywxMTUsOTcsMTAzLDEwMSw0Niw5OSwKKyAgICAzLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwyLDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSwxNiwwLDAsMCwxMjQsMSwxMjQsMCw5NSwwLDEyNCwKKyAgICAyLDEyNCwwLDk1LDEsMTAwLDEsODMsMCw0MSwyLDEyMiw3NSw2Nyw5Nyw5OSwKKyAgICAxMDQsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywKKyAgICAxMDksMTAxLDMyLDk3LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsCisgICAgMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTAyLDExMSwxMTcsMTEwLAorICAgIDEwMCwzMiw5OCwxMjEsMzIsMTE2LDEwNCwxMDEsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsNzgsNDEsMiwxMTQsMTAyLDAsMCwwLAorICAgIDExNCwzNywwLDAsMCw0MSwzLDExNCwxMDQsMCwwLDAsMTE0LDEyMywwLDAsCisgICAgMCwxMTQsMzcsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDYsMCwwLDAsMTE0LDE4MiwwLDAsMCwzMiwzLDAsMCwxMTUsNCwKKyAgICAwLDAsMCwwLDMsNiwxLDEyMiwxOSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsCisgICAgMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDIsMCwwLAorICAgIDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDI0LDAsMCwwLDEyNCwwLDEwNiwwLDEyNCwxLDEwNiwwLDEwNywyLAorICAgIDExMSwyMiwxMjQsMCwxMDYsMSwxMjQsMSwxMDYsMSwxMDcsMiw4MywwLDQxLDEsCisgICAgNzgsNDEsMiwyMTgsOSw5NSw5NSw5OSwxMDgsOTcsMTE1LDExNSw5NSw5NSwxMTQsMTE1LAorICAgIDAsMCwwLDQxLDIsMTE0LDEwNCwwLDAsMCwyMTgsNSwxMTEsMTE2LDEwNCwxMDEsCisgICAgMTE0LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLAorICAgIDIxOCw2LDk1LDk1LDEwMSwxMTMsOTUsOTUsMzgsMywwLDAsMTE1LDQsMCwwLAorICAgIDAsMCwxLDEyLDEsMTIyLDE3LDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLAorICAgIDExNCw0Niw5NSw5NSwxMDEsMTEzLDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsCisgICAgMCwxLDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDIwLDAsCisgICAgMCwwLDExNiwwLDEyNCwwLDEwNiwxLDEzMSwxLDExNiwwLDEyNCwwLDEwNiwyLAorICAgIDEzMSwxLDY1LDAsODMsMCw0MSwxLDc4LDQxLDMsMjE4LDQsMTA0LDk3LDExNSwKKyAgICAxMDQsMTE0LDEwMiwwLDAsMCwxMTQsMzcsMCwwLDAsNDEsMSwxMTQsMTA0LDAsCisgICAgMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwKKyAgICAwLDIxOCw4LDk1LDk1LDEwNCw5NywxMTUsMTA0LDk1LDk1LDQyLDMsMCwwLDExNSwKKyAgICAyLDAsMCwwLDAsMSwxMjIsMTksNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwKKyAgICAxMDEsMTE0LDQ2LDk1LDk1LDEwNCw5NywxMTUsMTA0LDk1LDk1LDk5LDIsMCwwLDAsCisgICAgMCwwLDAsMCwyLDAsMCwwLDMsMCwwLDAsMywwLDAsMCwKKyAgICAxMTUsMTYsMCwwLDAsMTE2LDAsMTE2LDEsMTI0LDAsMTMxLDIsMTA2LDIsMTI0LAorICAgIDEsMTMxLDEsODMsMCw0MSwxLDEyMiwxMDAsNzYsMTExLDk3LDEwMCwzMiw5NywzMiwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDIsMTE0LDExMSwxMDksMzIsOTcsMzIsMTAyLDEwNSwKKyAgICAxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsCisgICAgMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LAorICAgIDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwMSwxMjAsMTAxLAorICAgIDk5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDQxLDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsCisgICAgOTcsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDQxLDMsMjE4LAorICAgIDUsMTE1LDExNywxMTIsMTAxLDExNCwxMTQsMjA3LDAsMCwwLDExNCwxOTAsMCwwLDAsCisgICAgNDEsMiwxMTQsMTA0LDAsMCwwLDExNCwxMjMsMCwwLDAsNDEsMSwxMTQsMjA4LAorICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxOTAsMCwKKyAgICAwLDAsNDUsMywwLDAsMTE1LDIsMCwwLDAsMCwxMCwxMjIsMjIsNzAsCisgICAgMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsCisgICAgMCwwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDYsMCwwLDAsMTI0LAorICAgIDAsMTA2LDAsODMsMCw0MSwxLDEyMiw1OCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLAogICAgIDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMzIsCiAgICAgMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsOTcsMTE1LDMyLDEwMiwKICAgICAxMTEsMTE3LDExMCwxMDAsMzIsOTgsMTIxLDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTEwLDEwMCwKLSAgICAxMDEsMTE0LDQ2LDQxLDEsMTE0LDM3LDAsMCwwLDQxLDIsMTE0LDExMCwwLDAsCi0gICAgMCwxMTQsMTI4LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw2LDAsMCwwLDExNCwxNTksMCwwLDAsNTEsMywwLDAsMTE1LDIsCisgICAgMTAxLDExNCw0Niw0MSwxLDExNCwzNywwLDAsMCw0MSwyLDExNCwxMDQsMCwwLAorICAgIDAsMTE0LDEyMywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNiwwLDAsMCwxMTQsMTU1LDAsMCwwLDU3LDMsMCwwLDExNSwyLAogICAgIDAsMCwwLDAsMywxMjIsMjMsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsCiAgICAgMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSw5OSwyLAogICAgIDAsMCwwLDAsMCwwLDAsMywwLDAsMCw5LDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSw0MiwwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTI0LDEsCi0gICAgMCwxMDAsMSwwLDEzMSwyLDAsMTQzLDE3LDAsMTI1LDIsMCwxMjQsMiwwLAotICAgIDEwNiwyLDAsMTMxLDAsMCw4Myw4NywxMDAsMiwwLDgxLDgyLDg4LDEwMCwyLAotICAgIDAsODMsNDEsMywxMjIsMzksODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwKLSAgICAzMiwxMDAsOTcsMTE2LDk3LDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwKLSAgICA5NywxMTUsMzIsMTE0LDk3LDExOSwzMiw5OCwxMjEsMTE2LDEwMSwxMTUsNDYsMjE4LDEsMTE0LAotICAgIDc4LDQxLDMsMTE0LDUxLDAsMCwwLDExNCw1MiwwLDAsMCw5MCw0LDExNCwKLSAgICAxMDEsOTcsMTAwLDQxLDMsMTE0LDExMCwwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LAotICAgIDU2LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LAotICAgIDAsMCwwLDExNCwyMDEsMCwwLDAsNTYsMywwLDAsMTE1LDQsMCwwLAotICAgIDAsMCwyLDIxLDEsMTIyLDE5LDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLAotICAgIDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDQxLDExLDExNCwxMTQsMCwwLAotICAgIDAsMTE0LDExMywwLDAsMCwxMTQsMTE1LDAsMCwwLDExNCwxMTYsMCwwLDAsCi0gICAgMTE0LDE4NiwwLDAsMCwxMTQsMjE0LDAsMCwwLDExNCwyMTYsMCwwLDAsMTE0LAotICAgIDEyNSwwLDAsMCwxMTQsMTk0LDAsMCwwLDExNCwxNTksMCwwLDAsMTE0LDIwMSwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCw0MSwxLDExNCwKLSAgICAyMTIsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDIxMSwwLDAsMCwyMSwzLAotICAgIDAsMCwxMTUsMTQsMCwwLDAsMTIsMyw2LDIsMTIsNiwxMiw0LDEyLAotICAgIDMsMjQsMTIsMTgsNSwxMTQsMjExLDAsMCwwLDk5LDAsMCwwLDAsMCwKLSAgICAwLDAsMCwwLDAsMCwwLDQsMCwwLDAsNjQsMCwwLDAsMTE1LAotICAgIDY0LDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwwLAotICAgIDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwwLDkwLAotICAgIDQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCw1LDAsMTAwLDYsCi0gICAgMCwxMDAsNywwLDEwMCw4LDAsMTAwLDksMCwxMzIsMCwxLDkwLDYsMCwKLSAgICAxMDAsMTAsMCw4Myw0MSwxMSwyMTgsMTYsODMsMTExLDExNywxMTQsOTksMTAxLDcwLDEwNSwKLSAgICAxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwxMjIsNjIsNjcsMTExLDExMCw5OSwxMTQsMTAxLAotICAgIDExNiwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsCi0gICAgMTEwLDMyLDExMSwxMDIsMzIsODMsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLAotICAgIDExNCwzMiwxMTcsMTE1LDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwKLSAgICAzMiwxMTUsMTIxLDExNSwxMTYsMTAxLDEwOSw0Niw5OSwyLDAsMCwwLDAsMCwwLAotICAgIDAsMywwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSwzNCwwLAotICAgIDAsMCwxMTYsMCwwLDEyNCwxLDAsMTMxLDEsMCwxMjUsMiwwLDEwMCwxLAotICAgIDAsMTI0LDIsMCwxMDYsMSwwLDEwMCwyLDAsMTI0LDIsMCwxMDYsMiwwLAotICAgIDEwNSwyLDAsODMsNDEsMywxMjIsMzMsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMDksMTAxLDExNiw5NywxMDAsOTcsMTE2LDk3LDMyLDEwMiwxMTEsMTE0LDMyLAotICAgIDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDQ2LDExNCwxMzUsMCwwLDAsMTE0LDEzNiwKLSAgICAwLDAsMCw0MSwzLDExNCw0MSwwLDAsMCwyMTgsOCwxMTUsMTE2LDk1LDEwOSwKLSAgICAxMTYsMTA1LDEwOSwxMDEsOTAsNywxMTUsMTE2LDk1LDExNSwxMDUsMTIyLDEwMSw0MSwzLDExNCwKLSAgICAxMTAsMCwwLDAsMTE0LDM3LDAsMCwwLDExNCwyMDksMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE5OCwwLAotICAgIDAsMCw2NiwzLDAsMCwxMTUsNCwwLDAsMCwwLDIsMTIsMSwxMjIsCi0gICAgMjcsODMsMTExLDExNywxMTQsOTksMTAxLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLAotICAgIDExNCw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTE2LDk3LDExNiwxMTUsOTksNCwwLDAsCi0gICAgMCwwLDAsMCwwLDUsMCwwLDAsNSwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsMzQsMCwwLDAsMTE2LDAsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LAotICAgIDQsMCwxMjQsMCwwLDEwNiwxLDAsMTI0LDIsMCwxMjQsMywwLDEwMCwxLAotICAgIDAsMTI0LDQsMCwxMzEsMiwxLDgzLDQxLDIsNzgsMjE4LDUsOTUsMTA5LDExMSwKLSAgICAxMDAsMTAxLDQxLDIsMTE0LDk5LDAsMCwwLDExNCwxOTksMCwwLDAsNDEsNSwKLSAgICAxMTQsMTEwLDAsMCwwLDExNCw5MiwwLDAsMCwxMTQsOTEsMCwwLDAsMTE0LAotICAgIDU1LDAsMCwwLDExNCw0NCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMjAwLDAsMCwwLDcxLDMsMCwKLSAgICAwLDExNSw0LDAsMCwwLDAsMiwxMiwxLDEyMiwzMiw4MywxMTEsMTE3LDExNCwKLSAgICA5OSwxMDEsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDk1LDk5LDk3LAotICAgIDk5LDEwNCwxMDEsOTUsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMTE0LDIyMSwwLDAsCi0gICAgMCwxMDUsMTgyLDEsMCwwLDk5LDMsMCwwLDAsMSwwLDAsMCw5LAotICAgIDAsMCwwLDE3LDAsMCwwLDY3LDAsMCwwLDExNSw1MywxLDAsMCwKLSAgICAxMTYsMCwwLDEyNCwxLDAsMTMxLDEsMCw5MiwyLDAsMTI1LDQsMCwxMjUsCi0gICAgNSwwLDEwMywwLDAsMTI1LDYsMCwxMjAsNTQsMCwxMjQsNCwwLDExNCw4MCwKLSAgICAwLDExNiwxLDAsMTI0LDQsMCwxMzEsMSwwLDEyLDExNCw4MCwwLDExNiwwLAotICAgIDAsMTI0LDQsMCwxMzEsMSwwLDkyLDIsMCwxMjUsNCwwLDEyNSw3LDAsCi0gICAgMTI0LDYsMCwxMDYsMiwwLDEyNCw3LDAsMTMxLDEsMCwxLDExMywyNywwLAotICAgIDg3LDEyMCwxMzIsMCwxMTYsMywwLDEyNCw2LDAsMTMxLDEsMCw2OCw5MywxMTgsCi0gICAgMCwxMjUsNywwLDExNiw0LDAsMTI0LDQsMCwxMjQsNywwLDEzMSwyLDAsCi0gICAgMTI1LDQsMCwxMjEsMTcsMCwxMTYsNSwwLDEwNiw2LDAsMTI0LDQsMCwxMzEsCi0gICAgMSwwLDEsODcsMTEzLDk0LDAsNCwxMTYsNywwLDEwNywxMCwwLDExNCwxNTUsCi0gICAgMCwxLDEsMSwxMTksOTQsMCw4OSwxMTMsOTQsMCw0LDExNiw4LDAsMTA3LAotICAgIDEwLDAsMTE0LDIxMSwwLDEsMTI1LDgsMCwxLDEyMiwyNSwwLDExNiw5LDAsCi0gICAgMTAwLDEsMCwxMjQsNCwwLDEyNCw4LDAsMTMxLDMsMCwxLDEwMCwyLDAsCi0gICAgODMsODcsODksMTAwLDIsMCwxMDAsMiwwLDEyNSw4LDAsMTI2LDgsMCw4OCwKLSAgICAxMTMsOTQsMCw4OCwxMTMsOTQsMCw4NywxMjEsMzMsMCwxMTYsMTAsMCwxMjQsMSwKLSAgICAwLDEyNCwyLDAsMTI0LDMsMCwxMzEsMywwLDEsMTE2LDksMCwxMDAsMywKLSAgICAwLDEyNCwxLDAsMTMxLDIsMCwxLDg3LDExMCw1MywwLDQsMTE2LDgsMCwKLSAgICAxMDcsMTAsMCwxMTQsNDgsMSwxLDEyNSw4LDAsMSwxMjIsMjEsMCwxMTYsOSwKLSAgICAwLDEwMCwxLDAsMTI0LDEsMCwxMjQsOCwwLDEzMSwzLDAsMSw4Nyw4OSwKLSAgICAxMDAsMiwwLDEwMCwyLDAsMTI1LDgsMCwxMjYsOCwwLDg4LDExMCwxLDAsCi0gICAgODgsMTAwLDIsMCw4Myw0MSw0LDEyMiwyNyw4NywxMTQsMTA1LDExNiwxMDEsMzIsOTgsCi0gICAgMTIxLDExNiwxMDEsMTE1LDMyLDEwMCw5NywxMTYsOTcsMzIsMTE2LDExMSwzMiw5NywzMiwxMDIsCi0gICAgMTA1LDEwOCwxMDEsNDYsMTIyLDI3LDk5LDExMSwxMTcsMTA4LDEwMCwzMiwxMTAsMTExLDExNiwzMiwKLSAgICA5OSwxMTQsMTAxLDk3LDExNiwxMDEsMzIsMTIzLDMzLDExNCwxMjUsNTgsMzIsMTIzLDMzLDExNCwKLSAgICAxMjUsNzgsMTIyLDEyLDk5LDExNCwxMDEsOTcsMTE2LDEwMSwxMDAsMzIsMTIzLDMzLDExNCwxMjUsCi0gICAgNDEsMTEsMTE0LDQwLDAsMCwwLDExNCw0OCwwLDAsMCwxMTQsMTY1LDAsMCwKLSAgICAwLDExNCwzNSwwLDAsMCwxMTQsMzAsMCwwLDAsMTE0LDMsMCwwLDAsCi0gICAgOTAsNSwxMDksMTA3LDEwMCwxMDUsMTE0LDIxOCwxNSw3MCwxMDUsMTA4LDEwMSw2OSwxMjAsMTA1LAotICAgIDExNSwxMTYsMTE1LDY5LDExNCwxMTQsMTExLDExNCwxMTQsNDIsMCwwLDAsMTE0LDEwNywwLAotICAgIDAsMCwxMTQsNTcsMCwwLDAsNDEsOSwxMTQsMTEwLDAsMCwwLDExNCwzNywKLSAgICAwLDAsMCwxMTQsNTUsMCwwLDAsMTE0LDIyMSwwLDAsMCwyMTgsNiwxMTIsCi0gICAgOTcsMTE0LDEwMSwxMTAsMTE2LDExNCw5NiwwLDAsMCwxMTQsMjksMCwwLDAsMTE0LAotICAgIDI1LDAsMCwwLDExNCwyMDIsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE5OSwwLDAsMCw3NiwzLDAsCi0gICAgMCwxMTUsMzgsMCwwLDAsMCwyLDE4LDEsNiwyLDIyLDEsMTgsMSwKLSAgICAxNywyLDE5LDEsMTUsMSwzLDEsMTcsMSwxMywyLDcsMSwxOCwzLAotICAgIDE2LDEsMjcsMSwzLDEsMTYsMSwxNywxLDE4LDIsMTIyLDI1LDgzLDExMSwKLSAgICAxMTcsMTE0LDk5LDEwMSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTE1LAotICAgIDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5Nyw3OCw0MSw3LDExNCwxMTQsMCwwLDAsMTE0LAotICAgIDExMywwLDAsMCwxMTQsMTE1LDAsMCwwLDExNCwxMTYsMCwwLDAsMTE0LDE5OCwKLSAgICAwLDAsMCwxMTQsMjAwLDAsMCwwLDExNCwxOTksMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLAotICAgIDAsMTE0LDIxOSwwLDAsMCw2MiwzLDAsMCwxMTUsOCwwLDAsMCwxMiwKLSAgICAyLDYsMiwxMiw1LDEyLDUsMTE0LDIxOSwwLDAsMCw5OSwwLDAsMCwKLSAgICAwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDY0LDAsMCwKLSAgICAwLDExNSw0NiwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLAotICAgIDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsCi0gICAgMCw5MCw0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLAotICAgIDEwMCw2LDAsODMsNDEsNywyMTgsMjAsODMsMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsCi0gICAgMTE1LDExNSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMTIyLDQ1LDc2LDExMSwKLSAgICA5NywxMDAsMTAxLDExNCwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTA0LDk3LDExMCwxMDAsMTA4LAotICAgIDEwMSwxMTUsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwxMDgsMTAxLDExNSwxMTUsMzIsMTAyLDEwNSwKLSAgICAxMDgsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDExNSw0Niw5OSwyLDAsMCwwLAotICAgIDAsMCwwLDAsNSwwLDAsMCw2LDAsMCwwLDY3LDAsMCwwLAotICAgIDExNSw3NiwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsMCwxMzEsMSwKLSAgICAwLDEyNSwyLDAsMTI0LDAsMCwxMDYsMSwwLDEyNCwyLDAsMTMxLDEsMCwKLSAgICAxMjUsMywwLDExNiwyLDAsMTI0LDMsMCwxMDAsMSwwLDEyNCwxLDAsMTAwLAotICAgIDIsMCwxMjQsMiwwLDEzMSwxLDIsMTI1LDQsMCwxMTYsMywwLDEyNCw0LAotICAgIDAsMTAwLDEsMCwxMjQsMSwwLDEwMCwzLDAsMTI0LDIsMCwxMzEsMSwyLAotICAgIDgzLDQxLDQsNzgsMTE0LDEwOCwwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LDkxLAotICAgIDAsMCwwLDQxLDQsMTE0LDE1OSwwLDAsMCwxMTQsMjAxLDAsMCwwLDExNCwKLSAgICAxNDMsMCwwLDAsMTE0LDE0OSwwLDAsMCw0MSw1LDExNCwxMTAsMCwwLDAsCi0gICAgMTE0LDEyOCwwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LDU1LDAsMCwwLDExNCwKLSAgICAyMTAsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsCi0gICAgMCwwLDAsMTE0LDE4OCwwLDAsMCwxMDksMywwLDAsMTE1LDgsMCwwLAotICAgIDAsMCwxLDE1LDEsMTUsMSwyNCwxLDEyMiwyOSw4MywxMTEsMTE3LDExNCw5OSwKKyAgICAwLDAsMCwxMTUsMzIsMCwwLDAsMTE2LDAsMTA2LDEsMTI0LDEsMTAwLDEsCisgICAgMTMxLDIsMTQzLDEwLDEyNSwyLDEyNCwyLDEwNiwyLDEzMSwwLDgzLDAsODEsMCwKKyAgICA4MiwwLDg4LDAsMTAwLDIsODMsMCw0MSwzLDEyMiwzOSw4MiwxMDEsMTE2LDExNywKKyAgICAxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDEwMCw5NywxMTYsOTcsMzIsMTAyLDExNCwxMTEsMTA5LAorICAgIDMyLDExMiw5NywxMTYsMTA0LDMyLDk3LDExNSwzMiwxMTQsOTcsMTE5LDMyLDk4LDEyMSwxMTYsCisgICAgMTAxLDExNSw0NiwyMTgsMSwxMTQsNzgsNDEsMywxMTQsNTIsMCwwLDAsMTE0LDUzLAorICAgIDAsMCwwLDkwLDQsMTE0LDEwMSw5NywxMDAsNDEsMywxMTQsMTA0LDAsMCwwLAorICAgIDExNCwzNywwLDAsMCwxMTQsNTcsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE5NywwLDAsMCw2MiwzLAorICAgIDAsMCwxMTUsNCwwLDAsMCwwLDIsMTQsMSwxMjIsMTksNzAsMTA1LDEwOCwKKyAgICAxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsCisgICAgNDEsMTIsMTE0LDEwOSwwLDAsMCwxMTQsMTA4LDAsMCwwLDExNCwxMTAsMCwwLAorICAgIDAsMTE0LDExMSwwLDAsMCwxMTQsMTgyLDAsMCwwLDExNCwyMTAsMCwwLDAsCisgICAgMTE0LDIxMiwwLDAsMCwxMTQsMTIwLDAsMCwwLDExNCwxOTAsMCwwLDAsMTE0LAorICAgIDE1NSwwLDAsMCwxMTQsMTk3LDAsMCwwLDkwLDEzLDk1LDk1LDk5LDEwOCw5NywKKyAgICAxMTUsMTE1LDk5LDEwMSwxMDgsMTA4LDk1LDk1LDExNCw0LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDQxLDEsMTE0LDIwOCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMjA3LAorICAgIDAsMCwwLDI3LDMsMCwwLDExNSwxNCwwLDAsMCw4LDMsNCwyLAorICAgIDgsNiw4LDQsOCwzLDE2LDEyLDEyLDUsMTE0LDIwNywwLDAsMCw5OSwKKyAgICAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLAorICAgIDY0LDAsMCwwLDExNSw0NiwwLDAsMCwxMDEsMCw5MCwxLDEwMCwwLDkwLAorICAgIDIsMTAwLDEsOTAsMywxMDAsMiwxMDAsMywxMzIsMCw5MCw0LDEwMCw0LDEwMCwKKyAgICA1LDEzMiwwLDkwLDUsMTAwLDYsMTAwLDcsMTU2LDEsMTAwLDgsMTAwLDksMTMyLAorICAgIDIsOTAsNiwxMDAsMTAsODMsMCw0MSwxMSwyMTgsMTYsODMsMTExLDExNywxMTQsOTksCisgICAgMTAxLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwxMjIsNjIsNjcsMTExLDExMCwKKyAgICA5OSwxMTQsMTAxLDExNiwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsCisgICAgMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsODMsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCwzMiwxMTcsMTE1LDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLDEwMiwKKyAgICAxMDUsMTA4LDEwMSwzMiwxMTUsMTIxLDExNSwxMTYsMTAxLDEwOSw0Niw5OSwyLDAsMCwwLAorICAgIDAsMCwwLDAsMywwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLAorICAgIDExNSwyMiwwLDAsMCwxMTYsMCwxMjQsMSwxMzEsMSwxMjUsMiwxMjQsMiwxMDYsCisgICAgMSwxMjQsMiwxMDYsMiwxMDAsMSwxNTYsMiw4MywwLDQxLDIsMTIyLDMzLDgyLAorICAgIDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDEwMSwxMTYsOTcsMTAwLDk3LAorICAgIDExNiw5NywzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCw0NiwKKyAgICA0MSwyLDExNCwxMzAsMCwwLDAsMTE0LDEzMSwwLDAsMCw0MSwzLDExNCw0MSwKKyAgICAwLDAsMCwyMTgsOCwxMTUsMTE2LDk1LDEwOSwxMTYsMTA1LDEwOSwxMDEsOTAsNywxMTUsCisgICAgMTE2LDk1LDExNSwxMDUsMTIyLDEwMSw0MSwzLDExNCwxMDQsMCwwLDAsMTE0LDM3LDAsCisgICAgMCwwLDExNCwyMDUsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLAorICAgIDAsMTE0LDYsMCwwLDAsMTE0LDE5NCwwLDAsMCw3MiwzLDAsMCwxMTUsCisgICAgNCwwLDAsMCwwLDIsOCwxLDEyMiwyNyw4MywxMTEsMTE3LDExNCw5OSwxMDEsCisgICAgNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDExMiw5NywxMTYsMTA0LDk1LAorICAgIDExNSwxMTYsOTcsMTE2LDExNSw5OSw0LDAsMCwwLDAsMCwwLDAsNSwwLAorICAgIDAsMCw1LDAsMCwwLDY3LDAsMCwwLDExNSwyNCwwLDAsMCwxMTYsCisgICAgMCwxMjQsMSwxMzEsMSwxMjUsNCwxMjQsMCwxMDYsMSwxMjQsMiwxMjQsMywxMjQsCisgICAgNCwxMDAsMSwxNDEsMyw4MywwLDQxLDIsNzgsNDEsMSwyMTgsNSw5NSwxMDksCisgICAgMTExLDEwMCwxMDEsNDEsMiwxMTQsMTAxLDAsMCwwLDExNCwxOTUsMCwwLDAsNDEsCisgICAgNSwxMTQsMTA0LDAsMCwwLDExNCw5NCwwLDAsMCwxMTQsOTMsMCwwLDAsCisgICAgMTE0LDU2LDAsMCwwLDExNCw0NCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTk2LDAsMCwwLDc3LDMsCisgICAgMCwwLDExNSw0LDAsMCwwLDAsMiw4LDEsMTIyLDMyLDgzLDExMSwxMTcsCisgICAgMTE0LDk5LDEwMSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTUsOTksCisgICAgOTcsOTksMTA0LDEwMSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwxMDUsMTgyLDEsCisgICAgMCwwLDQxLDEsMTE0LDIxNywwLDAsMCw5OSwzLDAsMCwwLDEsMCwKKyAgICAwLDAsOSwwLDAsMCwxNywwLDAsMCw2NywwLDAsMCwxMTUsMjUwLAorICAgIDAsMCwwLDExNiwwLDEyNCwxLDEzMSwxLDkyLDIsMTI1LDQsMTI1LDUsMTAzLAorICAgIDAsMTI1LDYsMTIwLDQwLDEyNCw0LDExNCw1NiwxMTYsMSwxMjQsNCwxMzEsMSwxMiwKKyAgICAwLDExNCw1NiwxMTYsMCwxMjQsNCwxMzEsMSw5MiwyLDEyNSw0LDEyNSw3LDEyNCwKKyAgICA2LDEwNiwyLDEyNCw3LDEzMSwxLDEsMCwxMTMsMTgsODcsMCwxMjAsMTA4LDExNiwKKyAgICAzLDEyNCw2LDEzMSwxLDY4LDAsOTMsOTYsMTI1LDcsMTE2LDQsMTI0LDQsMTI0LAorICAgIDcsMTMxLDIsMTI1LDQsMTIxLDE0LDExNiw1LDEwNiw2LDEyNCw0LDEzMSwxLDEsCisgICAgMCw4NywwLDExMyw2OCw0LDAsMTE2LDcsMTA3LDEwLDExNCwxMTgsMSwwLDEsCisgICAgMCwxLDAsMTE5LDY4LDg5LDAsMTEzLDY4LDQsMCwxMTYsOCwxMDcsMTAsMTE0LAorICAgIDE2MiwxLDAsMTI1LDgsMSwwLDEyMiwxOCwxMTYsOSwxMDYsMTAsMTAwLDEsMTI0LAorICAgIDQsMTI0LDgsMTMxLDMsMSwwLDEwMCwyLDgzLDAsMTAwLDIsMTI1LDgsMTI2LAorICAgIDgsODgsMCwxMTMsNjgsODgsMCwxMTMsNjgsODcsMCwxMjEsMjgsMTE2LDExLDEyNCwKKyAgICAxLDEyNCwyLDEyNCwzLDEzMSwzLDEsMCwxMTYsOSwxMDYsMTAsMTAwLDMsMTI0LAorICAgIDEsMTMxLDIsMSwwLDg3LDAsMTEwLDQ4LDQsMCwxMTYsOCwxMDcsMTAsMTE0LAorICAgIDI0NCwxLDAsMTI1LDgsMSwwLDEyMiwyMCwxMTYsOSwxMDYsMTAsMTAwLDEsMTI0LAorICAgIDEsMTI0LDgsMTMxLDMsMSwwLDg3LDAsODksMCwxMDAsMiwxMDAsMiwxMjUsCisgICAgOCwxMjYsOCw4OCwwLDExMCwyLDg4LDAsMTAwLDIsODMsMCw0MSw0LDEyMiwKKyAgICAyNyw4NywxMTQsMTA1LDExNiwxMDEsMzIsOTgsMTIxLDExNiwxMDEsMTE1LDMyLDEwMCw5NywxMTYsCisgICAgOTcsMzIsMTE2LDExMSwzMiw5NywzMiwxMDIsMTA1LDEwOCwxMDEsNDYsMTIyLDI3LDk5LDExMSwKKyAgICAxMTcsMTA4LDEwMCwzMiwxMTAsMTExLDExNiwzMiw5OSwxMTQsMTAxLDk3LDExNiwxMDEsMzIsMTIzLAorICAgIDMzLDExNCwxMjUsNTgsMzIsMTIzLDMzLDExNCwxMjUsNzgsMTIyLDEyLDk5LDExNCwxMDEsOTcsCisgICAgMTE2LDEwMSwxMDAsMzIsMTIzLDMzLDExNCwxMjUsNDEsMTIsMTE0LDQwLDAsMCwwLDExNCwKKyAgICA0OCwwLDAsMCwxMTQsMTYxLDAsMCwwLDExNCwzNSwwLDAsMCwxMTQsMzAsCisgICAgMCwwLDAsMTE0LDMsMCwwLDAsOTAsNSwxMDksMTA3LDEwMCwxMDUsMTE0LDIxOCwKKyAgICAxNSw3MCwxMDUsMTA4LDEwMSw2OSwxMjAsMTA1LDExNSwxMTYsMTE1LDY5LDExNCwxMTQsMTExLDExNCwKKyAgICAxMTQsNDIsMCwwLDAsMTE0LDExOCwwLDAsMCwxMTQsMTMzLDAsMCwwLDExNCwKKyAgICA1OCwwLDAsMCw0MSw5LDExNCwxMDQsMCwwLDAsMTE0LDM3LDAsMCwwLAorICAgIDExNCw1NiwwLDAsMCwxMTQsMjE3LDAsMCwwLDIxOCw2LDExMiw5NywxMTQsMTAxLAorICAgIDExMCwxMTYsMTE0LDk4LDAsMCwwLDExNCwyOSwwLDAsMCwxMTQsMjUsMCwwLAorICAgIDAsMTE0LDE5OCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNiwwLDAsMCwxMTQsMTk1LDAsMCwwLDgyLDMsMCwwLDExNSw0MiwKKyAgICAwLDAsMCwwLDIsMTIsMSw0LDIsMTYsMSwxMiwxLDE0LDIsMTQsCisgICAgMSwxMCwxLDIsMSwxNCwxLDE0LDIsNiwxLDE2LDMsNiwxLDgsCisgICAgMSwyMCwxLDIsMSwxMiwxLDE2LDEsMTYsMiw4LDEsMTIyLDI1LDgzLAorICAgIDExMSwxMTcsMTE0LDk5LDEwMSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsCisgICAgMTE1LDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5Nyw3OCw0MSw3LDExNCwxMDksMCwwLDAsCisgICAgMTE0LDEwOCwwLDAsMCwxMTQsMTEwLDAsMCwwLDExNCwxMTEsMCwwLDAsMTE0LAorICAgIDE5NCwwLDAsMCwxMTQsMTk2LDAsMCwwLDExNCwxOTUsMCwwLDAsMTE0LDQsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwKKyAgICAwLDAsMTE0LDIxNSwwLDAsMCw2OCwzLDAsMCwxMTUsOCwwLDAsMCwKKyAgICA4LDIsNCwyLDgsNSw4LDUsMTE0LDIxNSwwLDAsMCw5OSwwLDAsCisgICAgMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDY0LDAsCisgICAgMCwwLDExNSwzMiwwLDAsMCwxMDEsMCw5MCwxLDEwMCwwLDkwLDIsMTAwLAorICAgIDEsOTAsMywxMDAsMiwxMDAsMywxMzIsMCw5MCw0LDEwMCw0LDEwMCw1LDEzMiwKKyAgICAwLDkwLDUsMTAwLDYsODMsMCw0MSw3LDIxOCwyMCw4MywxMTEsMTE3LDExNCw5OSwKKyAgICAxMDEsMTA4LDEwMSwxMTUsMTE1LDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwxMjIsCisgICAgNDUsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMDQsOTcsCisgICAgMTEwLDEwMCwxMDgsMTAxLDExNSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSwKKyAgICAzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTE1LDQ2LDk5LDIsCisgICAgMCwwLDAsMCwwLDAsMCw1LDAsMCwwLDUsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDQ4LDAsMCwwLDEyNCwwLDEwNiwwLDEyNCwxLDEzMSwxLAorICAgIDEyNSwyLDEyNCwwLDEwNiwxLDEyNCwyLDEzMSwxLDEyNSwzLDExNiwyLDEyNCwzLAorICAgIDEyNCwxLDEyNCwyLDEwMCwxLDE0MSwzLDEyNSw0LDExNiwzLDEyNCw0LDEyNCwxLAorICAgIDEyNCwyLDEwMCwyLDE0MSwzLDgzLDAsNDEsMyw3OCw0MSwyLDExNCwxMDIsMCwKKyAgICAwLDAsMTE0LDM3LDAsMCwwLDQxLDIsMTE0LDEwMiwwLDAsMCwxMTQsOTMsCisgICAgMCwwLDAsNDEsNCwxMTQsMTU1LDAsMCwwLDExNCwxOTcsMCwwLDAsMTE0LAorICAgIDEzOSwwLDAsMCwxMTQsMTQ1LDAsMCwwLDQxLDUsMTE0LDEwNCwwLDAsMCwKKyAgICAxMTQsMTIzLDAsMCwwLDExNCwzNywwLDAsMCwxMTQsNTYsMCwwLDAsMTE0LAorICAgIDIwNiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwKKyAgICAwLDAsMCwxMTQsMTg0LDAsMCwwLDExNywzLDAsMCwxMTUsOCwwLDAsCisgICAgMCwwLDEsMTAsMSwxMCwxLDE0LDEsMTIyLDI5LDgzLDExMSwxMTcsMTE0LDk5LAogICAgIDEwMSwxMDgsMTAxLDExNSwxMTUsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LAogICAgIDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDk5LDIsMCwwLDAsMCwwLDAsCiAgICAgMCwyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwKLSAgICAwLDAsMTAwLDEsMCw4Myw0MSwyLDEyMiwzOSw4MiwxMDEsMTE2LDExNywxMTQsMTEwLAorICAgIDAsMCwxMDAsMSw4MywwLDQxLDIsMTIyLDM5LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsCiAgICAgMzIsNzgsMTExLDExMCwxMDEsMzIsOTcsMTE1LDMyLDExNiwxMDQsMTAxLDExNCwxMDEsMzIsMTA1LAogICAgIDExNSwzMiwxMTAsMTExLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsOTksMTExLDEwMCwxMDEsCi0gICAgNDYsNzgsMTE0LDQsMCwwLDAsNDEsMiwxMTQsMTEwLDAsMCwwLDExNCwxMjgsCisgICAgNDYsNzgsMTE0LDQsMCwwLDAsNDEsMiwxMTQsMTA0LDAsMCwwLDExNCwxMjMsCiAgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwKLSAgICAwLDAsMTE0LDIwMywwLDAsMCwxMTUsMywwLDAsMTE1LDIsMCwwLDAsCisgICAgMCwwLDExNCwxOTksMCwwLDAsMTIzLDMsMCwwLDExNSwyLDAsMCwwLAogICAgIDAsMiwxMjIsMzEsODMsMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSw3MCwxMDUsCiAgICAgMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsCi0gICAgMTE0LDk5LDEwMSw3OCw0MSw2LDExNCwxMTQsMCwwLDAsMTE0LDExMywwLDAsMCwKLSAgICAxMTQsMTE1LDAsMCwwLDExNCwxMTYsMCwwLDAsMTE0LDE4OCwwLDAsMCwxMTQsCi0gICAgMjAzLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw2LDAsMCwwLDExNCwyMjQsMCwwLDAsMTA1LDMsMCwKLSAgICAwLDExNSw2LDAsMCwwLDEyLDIsNiwyLDEyLDYsMTE0LDIyNCwwLDAsCisgICAgMTE0LDk5LDEwMSw3OCw0MSw2LDExNCwxMDksMCwwLDAsMTE0LDEwOCwwLDAsMCwKKyAgICAxMTQsMTEwLDAsMCwwLDExNCwxMTEsMCwwLDAsMTE0LDE4NCwwLDAsMCwxMTQsCisgICAgMTk5LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAorICAgIDAsMCwwLDExNCw2LDAsMCwwLDExNCwyMjAsMCwwLDAsMTEzLDMsMCwKKyAgICAwLDExNSw2LDAsMCwwLDgsMiw0LDIsOCw2LDExNCwyMjAsMCwwLAogICAgIDAsOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMywwLAotICAgIDAsMCw2NCwwLDAsMCwxMTUsMTM2LDAsMCwwLDEwMSwwLDAsOTAsMSwKLSAgICAwLDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsCi0gICAgMTAwLDMsMCwxMzIsMCwwLDkwLDQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLAotICAgIDAsMCw5MCw1LDAsMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsOTAsNiwKLSAgICAwLDEwMCw4LDAsMTAwLDksMCwxMzIsMCwwLDkwLDcsMCwxMDAsMTAsMCwKLSAgICAxMDAsMTEsMCwxMzIsMCwwLDkwLDgsMCwxMDAsMTIsMCwxMDAsMTMsMCwxMzIsCi0gICAgMCwwLDkwLDksMCwxMDAsMTQsMCwxMDAsMTUsMCwxMzIsMCwwLDkwLDEwLAotICAgIDAsMTAwLDE2LDAsMTAwLDE3LDAsMTMyLDAsMCw5MCwxMSwwLDEwMSwxMiwwLAotICAgIDEwMCwxOCwwLDEwMCwxOSwwLDEzMiwwLDAsMTMxLDEsMCw5MCwxMywwLDEwMCwKLSAgICAyMCwwLDgzLDQxLDIxLDIxOCwxOSw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLAotICAgIDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwxMjIsOTMsNzYsMTExLDk3LDEwMCwKLSAgICAxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLAotICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwKLSAgICAxMDQsMTAxLDMyLDk5LDExMSwxMTAsMTE1LDExNiwxMTQsMTE3LDk5LDExNiwxMTEsMTE0LDMyLDEwNSwKLSAgICAxMTUsMzIsMTAwLDEwMSwxMTUsMTA1LDEwMywxMTAsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDExOSwxMTEsCi0gICAgMTE0LDEwNywzMiwxMTksMTA1LDExNiwxMDQsMzIsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsCi0gICAgMTAxLDExNCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw5OSwzLDAsMCwwLDAsMCwKLSAgICAwLDAsMywwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwyMiwKLSAgICAwLDAsMCwxMjQsMSwwLDEyNCwwLDAsOTUsMCwwLDEyNCwyLDAsMTI0LAotICAgIDAsMCw5NSwxLDAsMTAwLDAsMCw4Myw0MSwxLDc4LDQxLDIsMTE0LDEwOCwKLSAgICAwLDAsMCwxMTQsMzcsMCwwLDAsNDEsMywxMTQsMTEwLDAsMCwwLDExNCwKLSAgICAxMDgsMCwwLDAsMTE0LDM3LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw2LDAsMCwwLDExNCwxODYsMCwwLDAsMTMyLDMsMCwKLSAgICAwLDExNSw0LDAsMCwwLDAsMSw5LDEsMTIyLDI4LDY5LDEyMCwxMTYsMTAxLAotICAgIDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LAotICAgIDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw5OSwyLDAsMCwwLDAsMCwwLAotICAgIDAsMiwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwzNCwwLAotICAgIDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsMCwxMDYsMCwwLDEwNywyLAotICAgIDAsMTExLDMzLDAsMTI0LDAsMCwxMDYsMSwwLDEyNCwxLDAsMTA2LDEsMCwKLSAgICAxMDcsMiwwLDgzLDQxLDEsNzgsNDEsMiwxMTQsMjEyLDAsMCwwLDExNCwxMjAsCi0gICAgMCwwLDAsNDEsMiwxMTQsMTEwLDAsMCwwLDExNCwyMTMsMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDIxNCwKLSAgICAwLDAsMCwxMzYsMywwLDAsMTE1LDQsMCwwLDAsMCwxLDE4LDEsCi0gICAgMTIyLDI2LDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsCi0gICAgMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDEwMSwxMTMsOTUsOTUsOTksMSwwLDAsCi0gICAgMCwwLDAsMCwwLDEsMCwwLDAsMywwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsMjYsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTMxLAotICAgIDEsMCwxMTYsMCwwLDEyNCwwLDAsMTA2LDIsMCwxMzEsMSwwLDY1LDgzLAotICAgIDQxLDEsNzgsNDEsMywxMTQsMjE1LDAsMCwwLDExNCwxMDgsMCwwLDAsMTE0LAotICAgIDM3LDAsMCwwLDQxLDEsMTE0LDExMCwwLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMjE2LDAsMCwwLDE0MCwKLSAgICAzLDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDI4LDY5LDEyMCwxMTYsMTAxLAotICAgIDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LAotICAgIDk1LDk1LDEwNCw5NywxMTUsMTA0LDk1LDk1LDk5LDIsMCwwLDAsMCwwLDAsCi0gICAgMCwzLDAsMCwwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDQ3LDAsCi0gICAgMCwwLDExNiwwLDAsMTA2LDEsMCwxMTYsMiwwLDEwNiwzLDAsMTI0LDEsCi0gICAgMCwxMzEsMiwwLDEyNSwyLDAsMTE2LDQsMCwxMDAsMSwwLDEyNCwxLDAsCi0gICAgMTA2LDUsMCwxMjQsMCwwLDEwNiw2LDAsMTMxLDMsMCwxLDEyNCwyLDAsCi0gICAgODMsNDEsMiwxMjIsMzgsNjcsMTE0LDEwMSw5NywxMTYsMTAxLDMyLDk3LDExMCwzMiwxMTcsCi0gICAgMTEwLDEwNSwxMTYsMTA1LDk3LDEwOCwxMDUsMTIyLDEwMSwxMDAsMzIsMTAxLDEyMCwxMTYsMTAxLDExMCwKLSAgICAxMTUsMTA1LDExMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTIyLDM4LDEwMSwxMjAsMTE2LAotICAgIDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywKLSAgICAxMTQsMTI1LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMDAsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDEyMywKLSAgICAzMywxMTQsMTI1LDQxLDcsMTE0LDEyMywwLDAsMCwxMTQsMTg5LDAsMCwwLDExNCwKLSAgICAxNDcsMCwwLDAsOTAsMTQsOTksMTE0LDEwMSw5NywxMTYsMTAxLDk1LDEwMCwxMjEsMTEwLAotICAgIDk3LDEwOSwxMDUsOTksMTE0LDEwNywwLDAsMCwxMTQsMTA4LDAsMCwwLDExNCwzNywKLSAgICAwLDAsMCw0MSwzLDExNCwxMTAsMCwwLDAsMTE0LDE2NiwwLDAsMCwxMTQsCi0gICAgMTkxLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LAotICAgIDAsMCwwLDExNCwxODcsMCwwLDAsMTQzLDMsMCwwLDExNSwxMCwwLDAsCi0gICAgMCwwLDIsNiwxLDE1LDEsNiwxLDE2LDEsMTIyLDMzLDY5LDEyMCwxMTYsCi0gICAgMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LAotICAgIDQ2LDk5LDExNCwxMDEsOTcsMTE2LDEwMSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwyLAotICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw0LDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSw0NSwwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTE2LDIsCi0gICAgMCwxMDYsMywwLDEyNCwxLDAsMTMxLDIsMCwxLDExNiw0LDAsMTAwLDEsCi0gICAgMCwxMjQsMCwwLDEwNiw1LDAsMTI0LDAsMCwxMDYsNiwwLDEzMSwzLDAsCi0gICAgMSwxMDAsMiwwLDgzLDQxLDMsMTIyLDMwLDczLDExMCwxMDUsMTE2LDEwNSw5NywxMDgsCi0gICAgMTA1LDEyMiwxMDEsMzIsOTcsMTEwLDMyLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLAotICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDEyMiw0MCwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsCi0gICAgMTExLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiwxMDEsCi0gICAgMTIwLDEwMSw5OSwxMTcsMTE2LDEwMSwxMDAsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDEyMywzMywxMTQsCi0gICAgMTI1LDc4LDQxLDcsMTE0LDEyMywwLDAsMCwxMTQsMTg5LDAsMCwwLDExNCwxNDcsCi0gICAgMCwwLDAsOTAsMTIsMTAxLDEyMCwxMDEsOTksOTUsMTAwLDEyMSwxMTAsOTcsMTA5LDEwNSwKLSAgICA5OSwxMTQsMTA3LDAsMCwwLDExNCwxMDgsMCwwLDAsMTE0LDM3LDAsMCwwLAotICAgIDQxLDIsMTE0LDExMCwwLDAsMCwxMTQsMTkxLDAsMCwwLDExNCw0LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxOTIsMCwwLDAsCi0gICAgMTUxLDMsMCwwLDExNSw2LDAsMCwwLDAsMiwxOSwxLDYsMSwxMjIsCi0gICAgMzEsNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsCi0gICAgOTcsMTAwLDEwMSwxMTQsNDYsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNCwwLDAsCi0gICAgMCwzLDAsMCwwLDExNSw0OCwwLDAsMCwxMTYsMCwwLDEyNCwwLDAsCi0gICAgMTA2LDEsMCwxMzEsMSwwLDEwMCwxLDAsMjUsMTM3LDAsMCwxMTYsMiwwLAotICAgIDEzNSwwLDAsMTAyLDEsMCwxMDAsMiwwLDEwMCwzLDAsMTM0LDAsMCwxMTYsCi0gICAgMywwLDY4LDEzMSwxLDAsMTMxLDEsMCw4Myw0MSw0LDEyMiw0OSw4MiwxMDEsCi0gICAgMTE2LDExNywxMTQsMTEwLDMyLDg0LDExNCwxMTcsMTAxLDMyLDEwNSwxMDIsMzIsMTE2LDEwNCwxMDEsCi0gICAgMzIsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKLSAgICAxMDEsMzIsMTA1LDExNSwzMiw5NywzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNDYsMTE0LAotICAgIDMxLDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwKLSAgICAwLDQsMCwwLDAsNTEsMCwwLDAsMTE1LDMxLDAsMCwwLDEyNCwwLAotICAgIDAsOTMsMjEsMCwxMjUsMSwwLDEzNiwwLDAsMTAwLDAsMCwxMjQsMSwwLAotICAgIDIzLDEwNywyLDAsODYsMSwxMTMsMywwLDEwMCwxLDAsODMsNDEsMiwxMTQsCi0gICAgMTg2LDAsMCwwLDc4LDExNCw0LDAsMCwwLDQxLDIsMTE0LDI0LDAsMCwKLSAgICAwLDIxOCw2LDExNSwxMTcsMTAyLDEwMiwxMDUsMTIwLDQxLDEsMjE4LDksMTAyLDEwNSwxMDgsCi0gICAgMTAxLDk1LDExMCw5NywxMDksMTAxLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLAotICAgIDI1MCw5LDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCw2MiwxNjAsMywwLDAsMTE1LAotICAgIDIsMCwwLDAsNiwxLDEyMiw0OSw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsCi0gICAgMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDUsMTE1LDk1LDExMiwKLSAgICA5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsCi0gICAgNjAsMTAzLDEwMSwxMTAsMTAxLDEyMCwxMTIsMTE0LDYyLDQxLDQsMTE0LDQwLDAsMCwwLAotICAgIDExNCwzNywwLDAsMCwyMTgsMyw5NywxMTAsMTIxLDIxOCwxOCw2OSw4OCw4NCw2OSwKLSAgICA3OCw4Myw3Myw3OSw3OCw5NSw4Myw4NSw3MCw3MCw3Myw4OCw2OSw4Myw0MSwyLAotICAgIDExNCwxMTAsMCwwLDAsMTE0LDEyOCwwLDAsMCwxMTQsNCwwLDAsMCw0MSwKLSAgICAxLDExNCwyMjcsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE2MSwwLDAsMCwKLSAgICAxNTcsMywwLDAsMTE1LDYsMCwwLDAsMCwyLDE5LDEsMTgsMSwxMjIsCi0gICAgMzAsNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsCi0gICAgOTcsMTAwLDEwMSwxMTQsNDYsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTksCi0gICAgMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMSwwLDAsMCwKLSAgICA2NywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSwwLDgzLDQxLDIsMTIyLAotICAgIDYzLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsNzgsMTExLDExMCwxMDEsMzIsOTcsMTE1LDMyLAotICAgIDk3LDExMCwzMiwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwzMiwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSwzMiw5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsOTksMTE0LDEwMSw5NywxMTYsCi0gICAgMTAxLDMyLDk3LDMyLDk5LDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiw0NiwKLSAgICA3OCwxMTQsNCwwLDAsMCw0MSwyLDExNCwxMTAsMCwwLDAsMTE0LDEyOCwwLAotICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsCi0gICAgMCwxMTQsMTg4LDAsMCwwLDE2MywzLDAsMCwxMTUsMiwwLDAsMCwwLAotICAgIDIsMTIyLDI4LDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsCi0gICAgNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDk5LAotICAgIDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDEsMCwwLDAsCi0gICAgNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsMCw4Myw0MSwyLDEyMiwKLSAgICA1Myw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDc4LDExMSwxMTAsMTAxLDMyLDk3LDExNSwzMiwKKyAgICAwLDAsNjQsMCwwLDAsMTE1LDkyLDAsMCwwLDEwMSwwLDkwLDEsMTAwLAorICAgIDAsOTAsMiwxMDAsMSw5MCwzLDEwMCwyLDEwMCwzLDEzMiwwLDkwLDQsMTAwLAorICAgIDQsMTAwLDUsMTMyLDAsOTAsNSwxMDAsNiwxMDAsNywxMzIsMCw5MCw2LDEwMCwKKyAgICA4LDEwMCw5LDEzMiwwLDkwLDcsMTAwLDEwLDEwMCwxMSwxMzIsMCw5MCw4LDEwMCwKKyAgICAxMiwxMDAsMTMsMTMyLDAsOTAsOSwxMDAsMTQsMTAwLDE1LDEzMiwwLDkwLDEwLDEwMCwKKyAgICAxNiwxMDAsMTcsMTMyLDAsOTAsMTEsMTAxLDEyLDEwMCwxOCwxMDAsMTksMTMyLDAsMTMxLAorICAgIDEsOTAsMTMsMTAwLDIwLDgzLDAsNDEsMjEsMjE4LDE5LDY5LDEyMCwxMTYsMTAxLDExMCwKKyAgICAxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDEyMiw5MywKKyAgICA3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTAxLDEyMCwxMTYsMTAxLDExMCwKKyAgICAxMTUsMTA1LDExMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ2LDEwLDEwLDMyLAorICAgIDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsOTksMTExLDExMCwxMTUsMTE2LDExNCwxMTcsOTksMTE2LAorICAgIDExMSwxMTQsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExNSwxMDUsMTAzLDExMCwxMDEsMTAwLDMyLDExNiwKKyAgICAxMTEsMzIsMTE5LDExMSwxMTQsMTA3LDMyLDExOSwxMDUsMTE2LDEwNCwzMiw3MCwxMDUsMTA4LDEwMSwKKyAgICA3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDk5LDMsMCwKKyAgICAwLDAsMCwwLDAsMCwzLDAsMCwwLDIsMCwwLDAsNjcsMCwKKyAgICAwLDAsMTE1LDE2LDAsMCwwLDEyNCwxLDEyNCwwLDk1LDAsMTI0LDIsMTI0LAorICAgIDAsOTUsMSwxMDAsMCw4MywwLDQxLDEsNzgsNDEsMiwxMTQsMTAyLDAsMCwKKyAgICAwLDExNCwzNywwLDAsMCw0MSwzLDExNCwxMDQsMCwwLDAsMTE0LDEwMiwwLAorICAgIDAsMCwxMTQsMzcsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLAorICAgIDAsMTE0LDYsMCwwLDAsMTE0LDE4MiwwLDAsMCwxNDAsMywwLDAsMTE1LAorICAgIDQsMCwwLDAsMCwxLDYsMSwxMjIsMjgsNjksMTIwLDExNiwxMDEsMTEwLDExNSwKKyAgICAxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTUsOTUsCisgICAgMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDIsMCwwLDAsMCwwLDAsMCwyLAorICAgIDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDI0LDAsMCwwLAorICAgIDEyNCwwLDEwNiwwLDEyNCwxLDEwNiwwLDEwNywyLDExMSwyMiwxMjQsMCwxMDYsMSwKKyAgICAxMjQsMSwxMDYsMSwxMDcsMiw4MywwLDQxLDEsNzgsNDEsMiwxMTQsMjA4LDAsCisgICAgMCwwLDExNCwxMTUsMCwwLDAsNDEsMiwxMTQsMTA0LDAsMCwwLDExNCwyMDksCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwKKyAgICAwLDAsMTE0LDIxMCwwLDAsMCwxNDQsMywwLDAsMTE1LDQsMCwwLDAsCisgICAgMCwxLDEyLDEsMTIyLDI2LDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsCisgICAgMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDEwMSwxMTMsOTUsOTUsCisgICAgOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMywwLDAsCisgICAgMCw2NywwLDAsMCwxMTUsMjAsMCwwLDAsMTE2LDAsMTI0LDAsMTA2LDEsCisgICAgMTMxLDEsMTE2LDAsMTI0LDAsMTA2LDIsMTMxLDEsNjUsMCw4MywwLDQxLDEsCisgICAgNzgsNDEsMywxMTQsMjExLDAsMCwwLDExNCwxMDIsMCwwLDAsMTE0LDM3LDAsCisgICAgMCwwLDQxLDEsMTE0LDEwNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKKyAgICAwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMjEyLDAsMCwwLDE0OCwzLDAsCisgICAgMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDI4LDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsCisgICAgMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDk1LDk1LAorICAgIDEwNCw5NywxMTUsMTA0LDk1LDk1LDk5LDIsMCwwLDAsMCwwLDAsMCwzLAorICAgIDAsMCwwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDM2LDAsMCwwLAorICAgIDExNiwwLDEwNiwxLDExNiwyLDEwNiwzLDEyNCwxLDEzMSwyLDEyNSwyLDExNiwwLAorICAgIDEwNiw0LDEwMCwxLDEyNCwxLDEwNiw1LDEyNCwwLDEwNiw2LDEzMSwzLDEsMCwKKyAgICAxMjQsMiw4MywwLDQxLDIsMTIyLDM4LDY3LDExNCwxMDEsOTcsMTE2LDEwMSwzMiw5NywKKyAgICAxMTAsMzIsMTE3LDExMCwxMDUsMTE2LDEwNSw5NywxMDgsMTA1LDEyMiwxMDEsMTAwLDMyLDEwMSwxMjAsCisgICAgMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDEyMiwzOCwKICAgICAxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICAxMTUsMzIsMTA0LDk3LDExOCwxMDEsMzIsMTEwLDExMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLAotICAgIDMyLDk5LDExMSwxMDAsMTAxLDQ2LDc4LDExNCw0LDAsMCwwLDQxLDIsMTE0LDExMCwKLSAgICAwLDAsMCwxMTQsMTI4LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw2LDAsMCwwLDExNCwyMDMsMCwwLDAsMTY3LDMsMCwwLAotICAgIDExNSwyLDAsMCwwLDAsMiwxMjIsMzAsNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsCi0gICAgMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsCi0gICAgOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsCi0gICAgMiwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSw3LDAsMCwKLSAgICAwLDEyNCwwLDAsMTA2LDAsMCw4Myw0MSwxLDEyMiw1OCw4MiwxMDEsMTE2LDExNywKLSAgICAxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsMTE2LAotICAgIDEwNCwxMDEsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsOTcsCi0gICAgMTE1LDMyLDEwMiwxMTEsMTE3LDExMCwxMDAsMzIsOTgsMTIxLDMyLDExNiwxMDQsMTAxLDMyLDEwMiwKLSAgICAxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDQxLDEsMTE0LDM3LDAsMCwwLDQxLDIsMTE0LAotICAgIDExMCwwLDAsMCwxMTQsMTI4LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw2LDAsMCwwLDExNCwxNTksMCwwLDAsMTcxLDMsMCwKLSAgICAwLDExNSwyLDAsMCwwLDAsMywxMjIsMzIsNjksMTIwLDExNiwxMDEsMTEwLDExNSwKLSAgICAxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwKLSAgICAxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDc4LDQxLDE0LDExNCwxMTQsMCwKLSAgICAwLDAsMTE0LDExMywwLDAsMCwxMTQsMTE1LDAsMCwwLDExNCwxMTYsMCwwLAotICAgIDAsMTE0LDE4NiwwLDAsMCwxMTQsMjE0LDAsMCwwLDExNCwyMTYsMCwwLDAsCi0gICAgMTE0LDE4NywwLDAsMCwxMTQsMTkyLDAsMCwwLDExNCwxNjEsMCwwLDAsMTE0LAotICAgIDE4OCwwLDAsMCwxMTQsMjAzLDAsMCwwLDExNCwxMjUsMCwwLDAsMTE0LDE1OSwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNiwwLDAsMCwxMTQsMjI1LDAsMCwwLDEyNCwzLDAsMCwKLSAgICAxMTUsMjAsMCwwLDAsMTIsNiw2LDIsMTIsNCwxMiw0LDEyLDMsMTIsCi0gICAgOCwxMiw2LDEyLDYsMTIsNCwxMiw0LDExNCwyMjUsMCwwLDAsOTksMCwKLSAgICAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw2NCwKLSAgICAwLDAsMCwxMTUsMTMwLDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLAotICAgIDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsMCwKLSAgICAxMzIsMCwwLDkwLDQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCwKLSAgICA1LDAsMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsOTAsNiwwLDEwMCw4LAotICAgIDAsMTAwLDksMCwxMzIsMCwwLDkwLDcsMCwxMDAsMTAsMCwxMDAsMTEsMCwKLSAgICAxMzIsMCwwLDkwLDgsMCwxMDAsMTIsMCwxMDAsMTMsMCwxMzIsMCwwLDkwLAotICAgIDksMCwxMDAsMTQsMCwxMDAsMTUsMCwxMzIsMCwwLDkwLDEwLDAsMTAwLDE2LAotICAgIDAsMTAwLDE3LDAsMTMyLDAsMCw5MCwxMSwwLDEwMCwxOCwwLDEwMCwxOSwwLAotICAgIDEzMiwwLDAsOTAsMTIsMCwxMDAsMjAsMCw4Myw0MSwyMSwyMTgsMTQsOTUsNzgsCi0gICAgOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDk3LDM4LDEsMCwKLSAgICAwLDgyLDEwMSwxMTIsMTE0LDEwMSwxMTUsMTAxLDExMCwxMTYsMTE1LDMyLDk3LDMyLDExMCw5NywKLSAgICAxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzOSwKLSAgICAxMTUsMzIsMTEyLDk3LDExNiwxMDQsNDYsMzIsMzIsNzMsMTE2LDMyLDExNywxMTUsMTAxLDExNSwKLSAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwKLSAgICAxMCwzMiwzMiwzMiwzMiwxMTYsMTExLDMyLDEwMiwxMDUsMTEwLDEwMCwzMiwxMDUsMTE2LDExNSwKLSAgICAzMiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ0LDMyLAotICAgIDk3LDExMCwxMDAsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDExNiwxMDQsMTAxLDExNCwxMDEsMzIsMTA1LAotICAgIDExNiwzMiwxMDgsMTExLDExMSwxMDcsMTE1LDMyLDExNywxMTIsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLAotICAgIDk3LDExNCwxMDEsMTEwLDExNiwzOSwxMTUsMTAsMzIsMzIsMzIsMzIsOTUsOTUsMTEyLDk3LAotICAgIDExNiwxMDQsOTUsOTUsNDYsMzIsMzIsODcsMTA0LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDUsMTE1LAotICAgIDMyLDk5LDEwNCw5NywxMTAsMTAzLDEwMSwxMTUsNDQsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsMzksMTE1LDMyLDExMSwxMTksMTEwLDMyLDExMiw5NywxMTYsMTA0LDMyLAotICAgIDEwNSwxMTUsMzIsMTE0LDEwMSw5OSwxMTEsMTA5LDExMiwxMTcsMTE2LDEwMSwxMDAsNDQsMTAsMzIsCi0gICAgMzIsMzIsMzIsMTE3LDExNSwxMDUsMTEwLDEwMywzMiwxMTIsOTcsMTE2LDEwNCw5NSwxMDIsMTA1LAotICAgIDExMCwxMDAsMTAxLDExNCw0NiwzMiwzMiw3MCwxMTEsMTE0LDMyLDExNiwxMTEsMTEyLDQ1LDEwOCwKLSAgICAxMDEsMTE4LDEwMSwxMDgsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ0LDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDExMiw5NywxMTQsMTAxLDExMCwxMTYsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzksCi0gICAgMTE1LDMyLDExMiw5NywxMTYsMTA0LDEwLDMyLDMyLDMyLDMyLDEwNSwxMTUsMzIsMTE1LDEyMSwKLSAgICAxMTUsNDYsMTEyLDk3LDExNiwxMDQsNDYsOTksNCwwLDAsMCwwLDAsMCwwLAotICAgIDQsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsNTIsMCwwLAotICAgIDAsMTI0LDEsMCwxMjQsMCwwLDk1LDAsMCwxMjQsMiwwLDEyNCwwLDAsCi0gICAgOTUsMSwwLDExNiwyLDAsMTI0LDAsMCwxMDYsMywwLDEzMSwwLDAsMTMxLAotICAgIDEsMCwxMjQsMCwwLDk1LDQsMCwxMjQsMywwLDEyNCwwLDAsOTUsNSwKLSAgICAwLDEwMCwwLDAsODMsNDEsMSw3OCw0MSw2LDIxOCw1LDk1LDExMCw5NywxMDksCi0gICAgMTAxLDIxOCw1LDk1LDExMiw5NywxMTYsMTA0LDExNCw5NSwwLDAsMCwyMTgsMTYsOTUsCi0gICAgMTAzLDEwMSwxMTYsOTUsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsOTcsMTE2LDEwNCwyMTgsCi0gICAgMTcsOTUsMTA4LDk3LDExNSwxMTYsOTUsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsOTcsCi0gICAgMTE2LDEwNCwyMTgsMTIsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsCi0gICAgNDEsNCwxMTQsMTEwLDAsMCwwLDExNCwxMDgsMCwwLDAsMTE0LDM3LDAsMCwKLSAgICAwLDIxOCwxMSwxMTIsOTcsMTE2LDEwNCw5NSwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTg2LDAsCi0gICAgMCwwLDE4NCwzLDAsMCwxMTUsOCwwLDAsMCwwLDEsOSwxLDksCi0gICAgMSwyMSwxLDEyMiwyMyw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLAotICAgIDk3LDExNiwxMDQsNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDEsMCwwLAotICAgIDAsMCwwLDAsMCw0LDAsMCwwLDMsMCwwLDAsNjcsMCwwLAotICAgIDAsMTE1LDUzLDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMDYsMSwwLDEwMCwKLSAgICAxLDAsMTMxLDEsMCw5MiwzLDAsMTI1LDEsMCwxMjUsMiwwLDEyNSwzLAotICAgIDAsMTI0LDIsMCwxMDAsMiwwLDEwNywyLDAsMTE0LDQzLDAsMTAwLDYsMCwKLSAgICA4MywxMjQsMSwwLDEwMCw1LDAsMTAyLDIsMCw4Myw0MSw3LDEyMiw2Miw4MiwKLSAgICAxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiw5NywzMiwxMTYsMTE3LDExMiwxMDgsMTAxLDMyLDExMSwKLSAgICAxMDIsMzIsNDAsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw0NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICA0NSwxMTAsOTcsMTA5LDEwMSw0NCwzMiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDQ1LDExMiw5NywKLSAgICAxMTYsMTA0LDQ1LDk3LDExNiwxMTYsMTE0LDQ1LDExMCw5NywxMDksMTAxLDQxLDExNCw2MCwwLAotICAgIDAsMCwxMTQsMzIsMCwwLDAsMTE0LDgsMCwwLDAsMTE0LDM3LDAsMCwKLSAgICAwLDkwLDgsOTUsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTUsNDEsMiwxMTQsOCwwLAotICAgIDAsMCwxMTQsMzcsMCwwLDAsNDEsMiwxMTQsMjMyLDAsMCwwLDExNCwzNCwKLSAgICAwLDAsMCw0MSw0LDExNCwxMTAsMCwwLDAsMTE0LDIyMywwLDAsMCwyMTgsCi0gICAgMywxMDAsMTExLDExNiw5MCwyLDEwOSwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDYsMCwwLDAsMjE4LDIzLDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTIsCi0gICAgOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDExMiw5NywxMTYsMTA0LDk1LDExMCw5NywxMDksMTAxLDExNSwKLSAgICAxOTAsMywwLDAsMTE1LDgsMCwwLDAsMCwyLDI3LDEsMTIsMiw0LAotICAgIDMsMTIyLDM4LDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LAotICAgIDEwNCw0Niw5NSwxMDIsMTA1LDExMCwxMDAsOTUsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsCi0gICAgOTcsMTE2LDEwNCw5NSwxMTAsOTcsMTA5LDEwMSwxMTUsOTksMSwwLDAsMCwwLDAsCi0gICAgMCwwLDMsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMzgsCi0gICAgMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEzMSwwLDAsOTIsMiwwLDEyNSwKLSAgICAxLDAsMTI1LDIsMCwxMTYsMSwwLDExNiwyLDAsMTA2LDMsMCwxMjQsMSwKLSAgICAwLDI1LDEyNCwyLDAsMTMxLDIsMCw4Myw0MSwxLDc4LDQxLDQsMTE0LDIzOSwKLSAgICAwLDAsMCwxMTQsMTE5LDAsMCwwLDExNCw4LDAsMCwwLDIxOCw3LDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDExNSw0MSwzLDExNCwxMTAsMCwwLDAsOTAsMTgsMTEyLAotICAgIDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTAsOTcsMTA5LAotICAgIDEwMSw5MCwxNCwxMTIsOTcsMTE2LDEwNCw5NSw5NywxMTYsMTE2LDExNCw5NSwxMTAsOTcsMTA5LAotICAgIDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKLSAgICAxMTQsMjM0LDAsMCwwLDIwMCwzLDAsMCwxMTUsNCwwLDAsMCwwLDEsCi0gICAgMTgsMSwxMjIsMzEsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywKLSAgICAxMTYsMTA0LDQ2LDk1LDEwMywxMDEsMTE2LDk1LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLAotICAgIDk3LDExNiwxMDQsOTksMSwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsCi0gICAgMywwLDAsMCw2NywwLDAsMCwxMTUsMTE4LDAsMCwwLDExNiwwLDAsCi0gICAgMTI0LDAsMCwxMDYsMSwwLDEzMSwwLDAsMTMxLDEsMCwxMjUsMSwwLDEyNCwKLSAgICAxLDAsMTI0LDAsMCwxMDYsMiwwLDEwNywzLDAsMTE0LDExMSwwLDEyNCwwLAotICAgIDAsMTA2LDMsMCwxMjQsMCwwLDEwNiw0LDAsMTI0LDEsMCwxMzEsMiwwLAotICAgIDEyNSwyLDAsMTI0LDIsMCwxMDAsMCwwLDEwNyw5LDAsMTE0LDEwMiwwLDEyNCwKLSAgICAyLDAsMTA2LDUsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDEwMiwwLDEyNCwyLAotICAgIDAsMTA2LDYsMCwxMTQsMTAyLDAsMTI0LDIsMCwxMDYsNiwwLDEyNCwwLDAsCi0gICAgOTUsNywwLDEyNCwxLDAsMTI0LDAsMCw5NSwyLDAsMTI0LDAsMCwxMDYsCi0gICAgNywwLDgzLDQxLDEsNzgsNDEsOCwxMTQsOTUsMCwwLDAsMTE0LDIzNCwwLAotICAgIDAsMCwxMTQsMjM1LDAsMCwwLDExNCwyMzYsMCwwLDAsMTE0LDIzMiwwLDAsCi0gICAgMCwxMTQsMTI5LDAsMCwwLDExNCwxNTgsMCwwLDAsMTE0LDIzMywwLDAsMCwKLSAgICA0MSwzLDExNCwxMTAsMCwwLDAsOTAsMTEsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwKLSAgICAxMTIsOTcsMTE2LDEwNCwxMTQsMTY2LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMiw5NSwxMTQsMTAxLDk5LDk3LDEwOCwKLSAgICA5OSwxMTcsMTA4LDk3LDExNiwxMDEsMjA0LDMsMCwwLDExNSwxNiwwLDAsMCwwLAotICAgIDIsMTgsMSwxNSwxLDIxLDMsMjcsMSw5LDEsMTIsMSw5LDEsMTIyLAotICAgIDI3LDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0NiwKLSAgICA5NSwxMTQsMTAxLDk5LDk3LDEwOCw5OSwxMTcsMTA4LDk3LDExNiwxMDEsOTksMSwwLDAsCi0gICAgMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsMTYsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTMxLAotICAgIDAsMCwxMzEsMSwwLDgzLDQxLDEsNzgsNDEsMiwyMTgsNCwxMDUsMTE2LDEwMSwKLSAgICAxMTQsMTE0LDI0MSwwLDAsMCw0MSwxLDExNCwxMTAsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDgsOTUsOTUsCi0gICAgMTA1LDExNiwxMDEsMTE0LDk1LDk1LDIxNywzLDAsMCwxMTUsMiwwLDAsMCwwLAotICAgIDEsMTIyLDIzLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LAotICAgIDEwNCw0Niw5NSw5NSwxMDUsMTE2LDEwMSwxMTQsOTUsOTUsOTksMSwwLDAsMCwwLAotICAgIDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsCi0gICAgMTYsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTMxLDAsMCwKLSAgICAxMzEsMSwwLDgzLDQxLDEsNzgsNDEsMiwxMTQsMzMsMCwwLDAsMTE0LDI0MSwKLSAgICAwLDAsMCw0MSwxLDExNCwxMTAsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDcsOTUsOTUsMTA4LDEwMSwxMTAsCi0gICAgOTUsOTUsMjIwLDMsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjIsOTUsCi0gICAgNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDQ2LDk1LDk1LAotICAgIDEwOCwxMDEsMTEwLDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsCi0gICAgMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDE2LDAsMCwwLDEwMCwKLSAgICAxLDAsMTA2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTMxLDEsMCw4Myw0MSwKLSAgICAyLDc4LDEyMiwyMCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LAotICAgIDExNiwxMDQsNDAsMTIzLDMzLDExNCwxMjUsNDEsNDEsMiwxMTQsNDksMCwwLDAsMTE0LAotICAgIDIzMywwLDAsMCw0MSwxLDExNCwxMTAsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDgsOTUsOTUsMTE0LDEwMSwKLSAgICAxMTIsMTE0LDk1LDk1LDIyMywzLDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLAotICAgIDIzLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0NiwKLSAgICA5NSw5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsOTksMiwwLDAsMCwwLDAsMCwKLSAgICAwLDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTYsMCwKLSAgICAwLDAsMTI0LDEsMCwxMjQsMCwwLDEwNiwwLDAsMTMxLDAsMCwxMDcsNiwKLSAgICAwLDgzLDQxLDEsNzgsNDEsMSwxMTQsMjQxLDAsMCwwLDQxLDIsMTE0LDExMCwKLSAgICAwLDAsMCwyMTgsNCwxMDUsMTE2LDEwMSwxMDksMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDEyLDk1LDk1LDk5LDExMSwxMTAsMTE2LAotICAgIDk3LDEwNSwxMTAsMTE1LDk1LDk1LDIyNiwzLDAsMCwxMTUsMiwwLDAsMCwwLAotICAgIDEsMTIyLDI3LDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LAotICAgIDEwNCw0Niw5NSw5NSw5OSwxMTEsMTEwLDExNiw5NywxMDUsMTEwLDExNSw5NSw5NSw5OSwyLAotICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSwyMCwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTA2LDEsCi0gICAgMCwxMjQsMSwwLDEzMSwxLDAsMSwxMDAsMCwwLDgzLDQxLDEsNzgsNDEsCi0gICAgMiwxMTQsMjMzLDAsMCwwLDExNCwxNjUsMCwwLDAsNDEsMiwxMTQsMTEwLDAsCi0gICAgMCwwLDExNCwyNDYsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLAotICAgIDAsMTE0LDYsMCwwLDAsMTE0LDE2NSwwLDAsMCwyMjksMywwLDAsMTE1LAotICAgIDIsMCwwLDAsMCwxLDEyMiwyMSw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsCi0gICAgOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsOTcsMTEyLDExMiwxMDEsMTEwLDEwMCw3OCw0MSwxMywKLSAgICAxMTQsMTE0LDAsMCwwLDExNCwxMTMsMCwwLDAsMTE0LDExNSwwLDAsMCwxMTQsCi0gICAgMTE2LDAsMCwwLDExNCwxODYsMCwwLDAsMTE0LDIzOSwwLDAsMCwxMTQsMjM0LAotICAgIDAsMCwwLDExNCwyNDEsMCwwLDAsMTE0LDI0MywwLDAsMCwxMTQsMjQ0LDAsCi0gICAgMCwwLDExNCwyNDUsMCwwLDAsMTE0LDI0NywwLDAsMCwxMTQsMTY1LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw2LDAsMCwwLDExNCwyMzEsMCwwLDAsMTc3LDMsMCwwLDExNSwyMCwKLSAgICAwLDAsMCwxMiw1LDYsMiwxMiw2LDEyLDEwLDEyLDQsMTIsMTMsMTIsCi0gICAgMywxMiwzLDEyLDMsMTIsMywxMTQsMjMxLDAsMCwwLDk5LDAsMCwwLAotICAgIDAsMCwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsNjQsMCwwLAotICAgIDAsMTE1LDExOCwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLAotICAgIDIsMCwxMDAsMSwwLDEwMCwyLDAsMTMyLDAsMCw5MCwzLDAsMTAxLDQsCi0gICAgMCwxMDAsMywwLDEwMCw0LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDUsMCwKLSAgICAxMDAsNSwwLDEwMCw2LDAsMTMyLDAsMCw5MCw2LDAsMTAwLDcsMCwxMDAsCi0gICAgOCwwLDEzMiwwLDAsOTAsNywwLDEwMCw5LDAsMTAwLDEwLDAsMTMyLDAsCi0gICAgMCw5MCw4LDAsMTAwLDExLDAsMTAwLDEyLDAsMTMyLDAsMCw5MCw5LDAsCi0gICAgMTAwLDEzLDAsMTAwLDE0LDAsMTMyLDAsMCw5MCwxMCwwLDEwMCwxNSwwLDEwMCwKLSAgICAxNiwwLDEzMiwwLDAsOTAsMTEsMCwxMDAsMTcsMCw4Myw0MSwxOCwyMTgsMTYsCi0gICAgOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsCi0gICAgOTksNCwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsNCwwLDAsCi0gICAgMCw2NywwLDAsMCwxMTUsMjUsMCwwLDAsMTE2LDAsMCwxMjQsMSwwLAotICAgIDEyNCwyLDAsMTI0LDMsMCwxMzEsMywwLDEyNCwwLDAsOTUsMSwwLDEwMCwKLSAgICAwLDAsODMsNDEsMSw3OCw0MSwyLDExNCwyMzEsMCwwLDAsMTE0LDIzMywwLAotICAgIDAsMCw0MSw0LDExNCwxMTAsMCwwLDAsMTE0LDEwOCwwLDAsMCwxMTQsMzcsCi0gICAgMCwwLDAsMTE0LDIzNywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNiwwLDAsMCwxMTQsMTg2LDAsMCwwLDIzNSwzLDAsMCwKLSAgICAxMTUsMiwwLDAsMCwwLDEsMTIyLDI1LDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiwKLSAgICA5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiwKLSAgICA5NSw5NSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwyLAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSwxNiwwLDAsMCwxMDAsMSwwLDEwNiwKLSAgICAwLDAsMTI0LDEsMCwxMDYsMSwwLDEzMSwxLDAsODMsNDEsMiwxMjIsMTE1LAotICAgIDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE0LDEwMSwxMTIsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLAotICAgIDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsCi0gICAgMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLAotICAgIDg0LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA5LDk3LDk5LDEwNCwxMDUsCi0gICAgMTEwLDEwMSwxMTQsMTIxLDMyLDEwMCwxMTEsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDYsMTExLAotICAgIDk4LDMyLDEwNSwxMTYsMTE1LDEwMSwxMDgsMTAyLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDEyMiwyNSw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LAotICAgIDEyNSwzMiw0MCwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw0MSw2Miw0MSwyLAotICAgIDExNCw0OSwwLDAsMCwxMTQsMTE0LDAsMCwwLDQxLDIsMTE0LDE3MiwwLDAsCi0gICAgMCwxMTQsMTkxLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw2LDAsMCwwLDIxOCwxMSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLAotICAgIDExMiwxMTQsMjM4LDMsMCwwLDExNSwyLDAsMCwwLDAsNywxMjIsMjgsOTUsCi0gICAgNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE0LDEwMSwxMTIsMTE0LDk5LDIsMCwwLDAsCi0gICAgMCwwLDAsMCwyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsCi0gICAgMTE1LDQsMCwwLDAsMTAwLDEsMCw4Myw0MSwyLDc4LDg0LDExNCw0LDAsCi0gICAgMCwwLDQxLDIsMTE0LDExMCwwLDAsMCwxMTQsMTI4LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxNjEsMCwKLSAgICAwLDAsMjQ3LDMsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjcsOTUsCi0gICAgNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsCi0gICAgMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTksMiwwLDAsMCwwLAotICAgIDAsMCwwLDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsCi0gICAgNCwwLDAsMCwxMDAsMSwwLDgzLDQxLDIsNzgsMTE0LDMyLDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDQxLDIsMTE0LDExMCwwLDAsMCwxMTQsMTI4LDAsMCwKKyAgICAzMiwxMjMsMzMsMTE0LDEyNSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTAwLDMyLDEwMiwxMTQsMTExLAorICAgIDEwOSwzMiwxMjMsMzMsMTE0LDEyNSw0MSw3LDExNCwxMTgsMCwwLDAsMTE0LDE4NSwwLAorICAgIDAsMCwxMTQsMTQzLDAsMCwwLDkwLDE0LDk5LDExNCwxMDEsOTcsMTE2LDEwMSw5NSwKKyAgICAxMDAsMTIxLDExMCw5NywxMDksMTA1LDk5LDExNCwxMzMsMCwwLDAsMTE0LDEwMiwwLDAsCisgICAgMCwxMTQsMzcsMCwwLDAsNDEsMywxMTQsMTA0LDAsMCwwLDExNCwxNjIsMCwKKyAgICAwLDAsMTE0LDE4NywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsCisgICAgMCwxMTQsNiwwLDAsMCwxMTQsMTgzLDAsMCwwLDE1MSwzLDAsMCwxMTUsCisgICAgMTAsMCwwLDAsMCwyLDQsMSwxMCwxLDYsMSwxMiwxLDEyMiwzMywKKyAgICA2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywKKyAgICAxMDAsMTAxLDExNCw0Niw5OSwxMTQsMTAxLDk3LDExNiwxMDEsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNCwwLAorICAgIDAsMCw2NywwLDAsMCwxMTUsMzYsMCwwLDAsMTE2LDAsMTA2LDEsMTE2LAorICAgIDIsMTA2LDMsMTI0LDEsMTMxLDIsMSwwLDExNiwwLDEwNiw0LDEwMCwxLDEyNCwKKyAgICAwLDEwNiw1LDEyNCwwLDEwNiw2LDEzMSwzLDEsMCwxMDAsMiw4MywwLDQxLAorICAgIDMsMTIyLDMwLDczLDExMCwxMDUsMTE2LDEwNSw5NywxMDgsMTA1LDEyMiwxMDEsMzIsOTcsMTEwLAorICAgIDMyLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDEyMiw0MCwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwzMiwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiwxMDEsMTIwLDEwMSw5OSwxMTcsMTE2LDEwMSwKKyAgICAxMDAsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDEyMywzMywxMTQsMTI1LDc4LDQxLDcsMTE0LDExOCwKKyAgICAwLDAsMCwxMTQsMTg1LDAsMCwwLDExNCwxNDMsMCwwLDAsOTAsMTIsMTAxLAorICAgIDEyMCwxMDEsOTksOTUsMTAwLDEyMSwxMTAsOTcsMTA5LDEwNSw5OSwxMTQsMTMzLDAsMCwwLAorICAgIDExNCwxMDIsMCwwLDAsMTE0LDM3LDAsMCwwLDQxLDIsMTE0LDEwNCwwLDAsCisgICAgMCwxMTQsMTg3LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw2LDAsMCwwLDExNCwxODgsMCwwLDAsMTU5LDMsMCwwLDExNSw2LAorICAgIDAsMCwwLDAsMiwxNCwxLDYsMSwxMjIsMzEsNjksMTIwLDExNiwxMDEsMTEwLAorICAgIDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAxLAorICAgIDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLAorICAgIDAsMCwwLDIsMCwwLDAsNCwwLDAsMCwzLDAsMCwwLDExNSwKKyAgICAzNiwwLDAsMCwxMTYsMCwxMjQsMCwxMDYsMSwxMzEsMSwxMDAsMSwyNSwwLAorICAgIDEzNywwLDExNiwyLDEzNSwwLDEwMiwxLDEwMCwyLDEwMCwzLDEzMiw4LDExNiwzLAorICAgIDY4LDAsMTMxLDEsMTMxLDEsODMsMCw0MSw0LDEyMiw0OSw4MiwxMDEsMTE2LDExNywKKyAgICAxMTQsMTEwLDMyLDg0LDExNCwxMTcsMTAxLDMyLDEwNSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTAxLAorICAgIDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsCisgICAgMTA1LDExNSwzMiw5NywzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNDYsMTE0LDMxLDAsCisgICAgMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDQsCisgICAgMCwwLDAsNTEsMCwwLDAsMTE1LDI2LDAsMCwwLDEyNCwwLDkzLDE4LAorICAgIDEyNSwxLDEzNiwwLDEwMCwwLDEyNCwxLDIzLDAsMTA3LDIsODYsMCwxLDAsCisgICAgMTEzLDIsMTAwLDEsODMsMCw0MSwyLDExNCwxODIsMCwwLDAsNzgsMTE0LDQsCisgICAgMCwwLDAsNDEsMiwxMTQsMjQsMCwwLDAsMjE4LDYsMTE1LDExNywxMDIsMTAyLAorICAgIDEwNSwxMjAsNDEsMSwyMTgsOSwxMDIsMTA1LDEwOCwxMDEsOTUsMTEwLDk3LDEwOSwxMDEsMTE0LAorICAgIDQsMCwwLDAsMTE0LDYsMCwwLDAsMjUwLDksNjAsMTAzLDEwMSwxMTAsMTAxLAorICAgIDEyMCwxMTIsMTE0LDYyLDE2OCwzLDAsMCwxMTUsMiwwLDAsMCw0LDEsMTIyLAorICAgIDQ5LDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDQ2LAorICAgIDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw2MCwxMDMsMTAxLDExMCwxMDEsMTIwLDExMiwKKyAgICAxMTQsNjIsNDEsNCwxMTQsNDAsMCwwLDAsMTE0LDM3LDAsMCwwLDIxOCwzLAorICAgIDk3LDExMCwxMjEsMjE4LDE4LDY5LDg4LDg0LDY5LDc4LDgzLDczLDc5LDc4LDk1LDgzLAorICAgIDg1LDcwLDcwLDczLDg4LDY5LDgzLDQxLDIsMTE0LDEwNCwwLDAsMCwxMTQsMTIzLAorICAgIDAsMCwwLDExNCw0LDAsMCwwLDQxLDEsMTE0LDIyMywwLDAsMCwxMTQsCisgICAgNiwwLDAsMCwxMTQsMTU3LDAsMCwwLDE2NSwzLDAsMCwxMTUsNiwwLAorICAgIDAsMCwwLDIsMTQsMSwxMiwxLDEyMiwzMCw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LAorICAgIDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDUsMTE1LAorICAgIDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5OSwyLDAsMCwwLDAsMCwwLAorICAgIDAsMiwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsCisgICAgMCwwLDEwMCwxLDgzLDAsNDEsMiwxMjIsNjMsODIsMTAxLDExNiwxMTcsMTE0LDExMCwKKyAgICAzMiw3OCwxMTEsMTEwLDEwMSwzMiw5NywxMTUsMzIsOTcsMTEwLDMyLDEwMSwxMjAsMTE2LDEwMSwKKyAgICAxMTAsMTE1LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk5LDk3LDExMCwKKyAgICAxMTAsMTExLDExNiwzMiw5OSwxMTQsMTAxLDk3LDExNiwxMDEsMzIsOTcsMzIsOTksMTExLDEwMCwKKyAgICAxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDQ2LDc4LDExNCw0LDAsMCwwLDQxLAorICAgIDIsMTE0LDEwNCwwLDAsMCwxMTQsMTIzLDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxODQsMCwwLDAsMTcxLAorICAgIDMsMCwwLDExNSwyLDAsMCwwLDAsMiwxMjIsMjgsNjksMTIwLDExNiwxMDEsCisgICAgMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsCisgICAgMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsOTksMiwwLDAsMCwwLDAsMCwKKyAgICAwLDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsNCwwLAorICAgIDAsMCwxMDAsMSw4MywwLDQxLDIsMTIyLDUzLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsCisgICAgMzIsNzgsMTExLDExMCwxMDEsMzIsOTcsMTE1LDMyLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwKKyAgICAxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiwxMDQsOTcsMTE4LDEwMSwzMiwKKyAgICAxMTAsMTExLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsOTksMTExLDEwMCwxMDEsNDYsNzgsCisgICAgMTE0LDQsMCwwLDAsNDEsMiwxMTQsMTA0LDAsMCwwLDExNCwxMjMsMCwwLAogICAgIDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsCi0gICAgMTE0LDIwMywwLDAsMCwyNTAsMywwLDAsMTE1LDIsMCwwLDAsMCwxLAotICAgIDEyMiwyNyw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsCi0gICAgMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDk5LDIsMCwKLSAgICAwLDAsMCwwLDAsMCwyLDAsMCwwLDYsMCwwLDAsNjcsMCwKLSAgICAwLDAsMTE1LDIyLDAsMCwwLDExNiwwLDAsMTAwLDEsMCwxMDAsMiwwLAotICAgIDEwMCwzLDAsMTAwLDQsMCwxMDAsNSwwLDEzMSwzLDEsODMsNDEsNiw3OCwKLSAgICAxMTQsMzIsMCwwLDAsMTIyLDgsNjAsMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsNjIsMTE0LAotICAgIDE5MCwwLDAsMCwxMTQsMjA1LDAsMCwwLDg0LDQxLDEsMTE0LDIwNiwwLDAsCi0gICAgMCw0MSwyLDExNCwxMTAsMCwwLDAsMTE0LDEyOCwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTg4LDAsMCwKLSAgICAwLDI1MywzLDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDI1LDk1LDc4LAotICAgIDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywKLSAgICAxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwKLSAgICAyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwwLAotICAgIDAsMTAwLDEsMCw4Myw0MSwyLDEyMiw0Miw4NSwxMTUsMTAxLDMyLDEwMCwxMDEsMTAyLAotICAgIDk3LDExNywxMDgsMTE2LDMyLDExNSwxMDEsMTA5LDk3LDExMCwxMTYsMTA1LDk5LDExNSwzMiwxMDIsCi0gICAgMTExLDExNCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OSwxMTQsMTAxLDk3LDExNiwxMDUsCi0gICAgMTExLDExMCw0Niw3OCwxMTQsNCwwLDAsMCw0MSwyLDExNCwxMTAsMCwwLDAsCi0gICAgMTE0LDE2NiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNiwwLDAsMCwxMTQsMTg3LDAsMCwwLDAsNCwwLDAsMTE1LDAsMCwKLSAgICAwLDAsMTIyLDMwLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLAotICAgIDk3LDEwMCwxMDEsMTE0LDQ2LDk5LDExNCwxMDEsOTcsMTE2LDEwMSw5NSwxMDksMTExLDEwMCwxMTcsCi0gICAgMTA4LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwwLDAsODMsCi0gICAgNDEsMSw3OCwxMTQsNCwwLDAsMCw0MSwyLDExNCwxMTAsMCwwLDAsMTE0LAotICAgIDE5MSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwKLSAgICAwLDAsMCwxMTQsMTkyLDAsMCwwLDMsNCwwLDAsMTE1LDIsMCwwLAotICAgIDAsMCwxLDEyMiwyOCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LAotICAgIDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLDAsCi0gICAgMCwwLDY3LDAsMCwwLDExNSwzMiwwLDAsMCwxMTYsMCwwLDEwMCwxLAotICAgIDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwyLDAsMSwxMTYsMiwwLDEwNiwzLAotICAgIDAsMTI0LDAsMCwxMjQsMSwwLDEzMSwyLDAsODMsNDEsMiwxMjIsOTgsNzYsCi0gICAgMTExLDk3LDEwMCwzMiw5NywzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwzMiwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLAotICAgIDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODUsMTE1LDEwMSwKLSAgICAzMiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MCw0MSwzMiwxMDUsCi0gICAgMTEwLDExNSwxMTYsMTAxLDk3LDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiwxMjIsMzgsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsMzIsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDEwMCwzMiwxMTksMTA1LDExNiwxMDQsMzIsCi0gICAgMTEyLDk3LDExNiwxMDQsMzIsMTIzLDMzLDExNCwxMjUsNDEsNCwxMTQsMTA3LDAsMCwwLAotICAgIDExNCwyMzMsMCwwLDAsMTE0LDEyMywwLDAsMCwxMTQsMTkzLDAsMCwwLDQxLAotICAgIDIsMTE0LDExMCwwLDAsMCwxMTQsMTI4LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxOTQsMCwwLDAsNiwKLSAgICA0LDAsMCwxMTUsNCwwLDAsMCwwLDcsMTYsMSwxMjIsMjgsOTUsNzgsCi0gICAgOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTA4LAotICAgIDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNzgsNDEsMTIsMTE0LDExNCwwLAotICAgIDAsMCwxMTQsMTEzLDAsMCwwLDExNCwxMTUsMCwwLDAsMTE0LDE4NiwwLDAsCi0gICAgMCwxMTQsMTg0LDAsMCwwLDExNCwyNDksMCwwLDAsMTE0LDE2MSwwLDAsMCwKLSAgICAxMTQsMjAzLDAsMCwwLDExNCwxODgsMCwwLDAsMTE0LDE4NywwLDAsMCwxMTQsCi0gICAgMTkyLDAsMCwwLDExNCwxOTQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDI0OCwwLAotICAgIDAsMCwyMzQsMywwLDAsMTE1LDE2LDAsMCwwLDEyLDEsMTIsMywxOCwKLSAgICA5LDEyLDMsMTIsMywxMiwzLDEyLDMsMTIsMywxMTQsMjQ4LDAsMCwwLAotICAgIDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDUsMCwwLAotICAgIDAsNjQsMCwwLDAsMTE1LDE2MCwwLDAsMCwxMDEsMCwwLDkwLDEsMCwKLSAgICAxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDEsNCwwLDEwMCwKLSAgICAyLDAsMTAwLDMsMCwxMzIsMCwwLDEzMSwxLDAsOTAsNSwwLDEwMSw0LAotICAgIDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsMTMxLDEsMCw5MCw2LDAsCi0gICAgMTAxLDQsMCwxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMCwxMzEsMSwwLDkwLAotICAgIDcsMCwxMDEsNCwwLDEwMCw4LDAsMTAwLDksMCwxMzIsMCwwLDEzMSwxLAotICAgIDAsOTAsOCwwLDEwMSw0LDAsMTAwLDEwLDAsMTAwLDExLDAsMTAwLDEyLDAsCi0gICAgMTMyLDEsMCwxMzEsMSwwLDkwLDksMCwxMDEsNCwwLDEwMCwxMCwwLDEwMCwKLSAgICAxMCwwLDEwMCwxMywwLDEwMCwxNCwwLDEzMiwyLDAsMTMxLDEsMCw5MCwxMCwKLSAgICAwLDEwMSw0LDAsMTAwLDEwLDAsMTAwLDE1LDAsMTAwLDE2LDAsMTMyLDEsMCwKLSAgICAxMzEsMSwwLDkwLDExLDAsMTAwLDEwLDAsODMsNDEsMTcsMjE4LDEwLDgwLDk3LAotICAgIDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwxMjIsNjIsNzcsMTAxLDExNiw5NywzMiwxMTIsCi0gICAgOTcsMTE2LDEwNCwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTUsCi0gICAgMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCwzMiw5NywxMTAsMTAwLDMyLDExMiw5Nyw5OSwxMDcsCi0gICAgOTcsMTAzLDEwMSwzMiw5NSw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5NSwzMiw5NywxMTYsMTE2LAotICAgIDExNCwxMDUsOTgsMTE3LDExNiwxMDEsMTE1LDQ2LDk5LDEsMCwwLDAsMCwwLDAsCi0gICAgMCwyLDAsMCwwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDU1LDAsCi0gICAgMCwwLDEyMCw0OCwwLDExNiwwLDAsMTA2LDEsMCwxMDYsMiwwLDEzMSwwLAotICAgIDAsNjgsOTMsMzEsMCwxMjUsMSwwLDExNiwzLDAsMTI0LDEsMCwxMDAsMSwKLSAgICAwLDEzMSwyLDAsMTE0LDE2LDAsMTI0LDEsMCwxMDYsNCwwLDEzMSwwLDAsCi0gICAgMSwxMTMsMTYsMCw4NywxMDAsMiwwLDgzLDQxLDMsMTIyLDEyNSw2Nyw5NywxMDgsCi0gICAgMTA4LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsCi0gICAgOTUsOTksOTcsOTksMTA0LDEwMSwxMTUsNDAsNDEsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsCi0gICAgMzIsMTExLDExMCwzMiw5NywxMDgsMTA4LDMyLDExMiw5NywxMTYsMTA0LDMyLDEwMSwxMTAsMTE2LAotICAgIDExNCwxMjEsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE1LDEwLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDExNSwxMTYsMTExLDExNCwxMDEsMTAwLDMyLDEwNSwxMTAsMzIsMTE1LDEyMSwxMTUsCi0gICAgNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw5NSw5OSwKLSAgICA5Nyw5OSwxMDQsMTAxLDExNSwzMiw0MCwxMTksMTA0LDEwMSwxMTQsMTAxLDMyLDEwNSwxMDksMTEyLAotICAgIDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsNDEsNDYsMjE4LDE3LDEwNSwxMTAsMTE4LDk3LAotICAgIDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsOTUsOTksOTcsOTksMTA0LDEwMSwxMTUsNzgsNDEsNSwKLSAgICAxMTQsOCwwLDAsMCwyMTgsMTksMTEyLDk3LDExNiwxMDQsOTUsMTA1LDEwOSwxMTIsMTExLAotICAgIDExNCwxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDIxOCw2LDExOCw5NywxMDgsMTE3LAotICAgIDEwMSwxMTUsMTE0LDExNywwLDAsMCwxMTQsMjUxLDAsMCwwLDQxLDIsMTE0LDE3MiwKLSAgICAwLDAsMCwyMTgsNiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMjUxLDAsMCwwLDIzLAotICAgIDQsMCwwLDExNSw2LDAsMCwwLDAsNCwyMiwxLDE1LDEsMTIyLDI4LAotICAgIDgwLDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMDUsMTEwLDExOCw5NywxMDgsCi0gICAgMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE1LDk5LDIsMCwwLAotICAgIDAsMCwwLDAsMCwzLDAsMCwwLDEyLDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSwxMDcsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEwMCwxLDAsMTA3LAotICAgIDksMCwxMTQsNDEsMCwxMTYsMCwwLDEwNiwxLDAsMTIsMTE0LDQxLDAsMTE2LAotICAgIDIsMCwxMDYsMywwLDEwMCwyLDAsMTE2LDQsMCwxMzEsMiwwLDEsMTIwLAotICAgIDU5LDAsMTE2LDAsMCwxMDYsMSwwLDY4LDkzLDQ0LDAsMTI1LDIsMCwxMjEsCi0gICAgMTQsMCwxMjQsMiwwLDEyNCwxLDAsMTMxLDEsMCw4Myw4NywxMTMsNTEsMCwKLSAgICA0LDExNiw1LDAsMTA3LDEwLDAsMTE0LDk0LDAsMSwxLDEsMTE5LDUxLDAsCi0gICAgODksMTEzLDUxLDAsODgsMTEzLDUxLDAsODcsMTAwLDEsMCw4MywxMDAsMSwwLAotICAgIDgzLDQxLDMsMTIyLDExMyw4MywxMDEsOTcsMTE0LDk5LDEwNCwzMiwxMTUsMTAxLDExMywxMTcsCi0gICAgMTAxLDExMCw5OSwxMDEsMzIsMTExLDEwMiwzMiwxMDQsMTExLDExMSwxMDcsMTE1LDMyLDEwMiwxMTEsCi0gICAgMTE0LDMyLDk3LDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDM5LAotICAgIDExMiw5NywxMTYsMTA0LDM5LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDczLDEwMiwzMiwzOSwxMDQsMTExLDExMSwxMDcsMTE1LDM5LDMyLDEwNSwxMTUsMzIsMTAyLDk3LAotICAgIDEwOCwxMTUsMTAxLDMyLDExNiwxMDQsMTAxLDExMCwzMiwxMTcsMTE1LDEwMSwzMiwxMTUsMTIxLDExNSwKLSAgICA0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTE1LDQ2LDEwLDEwLDMyLDMyLAotICAgIDMyLDMyLDMyLDMyLDMyLDMyLDc4LDEyMiwyMywxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LAotICAgIDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTE1LDMyLDEwNSwxMTUsMzIsMTAxLDEwOSwxMTIsMTE2LDEyMSwKLSAgICA0MSw2LDExNCw4LDAsMCwwLDIxOCwxMCwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLAotICAgIDExMSwxMDcsMTE1LDExNCw2MiwwLDAsMCwxMTQsNjMsMCwwLDAsMTE0LDEyNywwLAotICAgIDAsMCwxMTQsMTA5LDAsMCwwLDQxLDMsMTE0LDE3MiwwLDAsMCwxMTQsMzcsCi0gICAgMCwwLDAsOTAsNCwxMDQsMTExLDExMSwxMDcsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDExLDk1LDExMiw5NywxMTYsMTA0LDk1LAotICAgIDEwNCwxMTEsMTExLDEwNywxMTUsMzEsNCwwLDAsMTE1LDE2LDAsMCwwLDAsNywKLSAgICAyNSwxLDE2LDEsMTYsMSwzLDEsMTQsMSwxMywxLDEyLDIsMTIyLDIyLAotICAgIDgwLDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMTIsOTcsMTE2LDEwNCwKLSAgICA5NSwxMDQsMTExLDExMSwxMDcsMTE1LDk5LDIsMCwwLDAsMCwwLDAsMCwzLAotICAgIDAsMCwwLDE5LDAsMCwwLDY3LDAsMCwwLDExNSwxMjMsMCwwLDAsCi0gICAgMTI0LDEsMCwxMDAsMSwwLDEwNywyLDAsMTE0LDUzLDAsMTIxLDE2LDAsMTE2LAotICAgIDAsMCwxMDYsMSwwLDEzMSwwLDAsMTI1LDEsMCw4NywxMTAsMjIsMCw0LAotICAgIDExNiwyLDAsMTA3LDEwLDAsMTE0LDUyLDAsMSwxLDEsMTAwLDIsMCw4MywKLSAgICA4OSwxMTAsMSwwLDg4LDEyMSwxNywwLDExNiwzLDAsMTA2LDQsMCwxMjQsMSwKLSAgICAwLDI1LDEyNSwyLDAsODcsMTEwLDQ2LDAsNCwxMTYsNSwwLDEwNywxMCwwLAotICAgIDExNCwxMTgsMCwxLDEsMSwxMjQsMCwwLDEwNiw2LDAsMTI0LDEsMCwxMzEsCi0gICAgMSwwLDEyNSwyLDAsMTI0LDIsMCwxMTYsMywwLDEwNiw0LDAsMTI0LDEsCi0gICAgMCw2MCw4OSwxMTAsMSwwLDg4LDEyNCwyLDAsODMsNDEsMywxMjIsMjEwLDcxLAotICAgIDEwMSwxMTYsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsMTAyLDExMSwKLSAgICAxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTAxLDExMCwxMTYsMTE0LDEyMSwKLSAgICAzMiwxMDIsMTE0LDExMSwxMDksMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA1LAotICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDQ2LDEwLDEwLAotICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDczLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsCi0gICAgOTcsMTE2LDEwNCwzMiwxMDEsMTEwLDExNiwxMTQsMTIxLDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsCi0gICAgMzIsMTA1LDExMCwzMiwxMTYsMTA0LDEwMSwzMiw5OSw5Nyw5OSwxMDQsMTAxLDQ0LDMyLDEwMiwKLSAgICAxMDUsMTEwLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiw5NywxMTIsMTEyLDExNCwxMTEsMTEyLDExNCwxMDUsCi0gICAgOTcsMTE2LDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwxMCwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiw5NywxMTAsMTAwLDMyLDk5LDk3LDk5LDEwNCwxMDEsMzIsMTA1LDExNiw0NiwKLSAgICAzMiw3MywxMDIsMzIsMTEwLDExMSwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwzMiwxMDUsMTE1LAotICAgIDMyLDk3LDExOCw5NywxMDUsMTA4LDk3LDk4LDEwOCwxMDEsNDQsMzIsMTE1LDExNiwxMTEsMTE0LAotICAgIDEwMSwzMiw3OCwxMTEsMTEwLDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiwxMTQsMzIsMCwwLDAsNzgsNDEsNywxMTQsMywwLDAsMCwxMTQsNDcsCi0gICAgMCwwLDAsMjE4LDE3LDcwLDEwNSwxMDgsMTAxLDc4LDExMSwxMTYsNzAsMTExLDExNywxMTAsCi0gICAgMTAwLDY5LDExNCwxMTQsMTExLDExNCwxMTQsOCwwLDAsMCwxMTQsMjUyLDAsMCwwLAotICAgIDExNCwxMzksMCwwLDAsMTE0LDAsMSwwLDAsNDEsMywxMTQsMTcyLDAsMCwKLSAgICAwLDExNCwzNywwLDAsMCwxMTQsMjU0LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwyMCw5NSwxMTIsOTcsMTE2LAotICAgIDEwNCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDk1LDk5LDk3LDk5LDEwNCwxMDEsCi0gICAgNDgsNCwwLDAsMTE1LDIyLDAsMCwwLDAsOCwxMiwxLDMsMSwxNiwKLSAgICAxLDEzLDMsOSwxLDMsMSwxNywxLDEzLDEsMTUsMSwxOCwxLDEyMiwKLSAgICAzMSw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTEyLDk3LDExNiwKLSAgICAxMDQsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLAotICAgIDk5LDMsMCwwLDAsMCwwLDAsMCw2LDAsMCwwLDMsMCwwLAotICAgIDAsNjcsMCwwLDAsMTE1LDExOSwwLDAsMCwxMTYsMCwwLDEyNCwyLDAsCi0gICAgMTAwLDEsMCwxMzEsMiwwLDExNCwzOSwwLDEyNCwyLDAsMTA2LDEsMCwxMjQsCi0gICAgMSwwLDEzMSwxLDAsOTIsMiwwLDEyNSwzLDAsMTI1LDQsMCwxMTAsMjEsCi0gICAgMCwxMjQsMiwwLDEwNiwyLDAsMTI0LDEsMCwxMzEsMSwwLDEyNSwzLDAsCi0gICAgMTAzLDAsMCwxMjUsNCwwLDEyNCwzLDAsMTAwLDAsMCwxMDcsOSwwLDExNCwKLSAgICA4OCwwLDExNiwzLDAsMTA2LDQsMCwxMjQsMSwwLDEyNCwzLDAsMTMxLDIsCi0gICAgMCw4MywxMTYsMywwLDEwNiw1LDAsMTI0LDEsMCwxMDAsMCwwLDEzMSwyLAotICAgIDAsMTI1LDUsMCwxMjQsNCwwLDEyNCw1LDAsOTUsNiwwLDEyNCw1LDAsCi0gICAgODMsNDEsMiw3OCwxMTQsMTI2LDAsMCwwLDQxLDcsMTE0LDExNywwLDAsMCwKLSAgICAxMTQsMTI2LDAsMCwwLDExNCwxODMsMCwwLDAsMTE0LDEyMywwLDAsMCwxMTQsCi0gICAgMTgwLDAsMCwwLDExNCwxNjIsMCwwLDAsMTE0LDE1OCwwLDAsMCw0MSw2LAotICAgIDExNCwxNzIsMCwwLDAsMTE0LDEyOCwwLDAsMCwxMTQsMjU0LDAsMCwwLDExNCwKLSAgICAxMjksMCwwLDAsMTE0LDEzMCwwLDAsMCwxMTQsMTY2LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxNiw5NSwKLSAgICAxMDgsMTAxLDEwMyw5Nyw5OSwxMjEsOTUsMTAzLDEwMSwxMTYsOTUsMTE1LDExMiwxMDEsOTksNzAsCi0gICAgNCwwLDAsMTE1LDE4LDAsMCwwLDAsNCwxNSwxLDI0LDIsMTUsMSwKLSAgICA2LDEsMTIsMSwxNiwxLDE4LDEsOSwxLDEyMiwyNyw4MCw5NywxMTYsMTA0LAotICAgIDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTA4LDEwMSwxMDMsOTcsOTksMTIxLDk1LDEwMywKLSAgICAxMDEsMTE2LDk1LDExNSwxMTIsMTAxLDk5LDc4LDk5LDQsMCwwLDAsMCwwLDAsCi0gICAgMCw5LDAsMCwwLDUsMCwwLDAsNjcsMCwwLDAsMTE1LDI0MywwLAotICAgIDAsMCwxMDMsMCwwLDEyNSw0LDAsMTIwLDIzMCwwLDEyNCwyLDAsNjgsOTMsCi0gICAgMTkxLDAsMTI1LDUsMCwxMTYsMCwwLDEyNCw1LDAsMTE2LDEsMCwxMTYsMiwKLSAgICAwLDEwMiwyLDAsMTMxLDIsMCwxMTUsNDMsMCwxMTMsMTMsMCwxMjQsMCwwLAotICAgIDEwNiwzLDAsMTI0LDUsMCwxMzEsMSwwLDEyNSw2LDAsMTI0LDYsMCwxMDAsCi0gICAgMSwwLDEwNyw5LDAsMTE0LDEzLDAsMTE2LDQsMCwxMjQsNiwwLDEwMCwyLAotICAgIDAsMTMxLDIsMCwxMTQsMTA2LDAsMTI0LDYsMCwxMDYsNSwwLDEyNCwxLDAsCi0gICAgMTI0LDMsMCwxMzEsMiwwLDEyNSw3LDAsMTEwLDE4LDAsMTI0LDAsMCwxMDYsCi0gICAgNiwwLDEyNCwxLDAsMTI0LDYsMCwxMzEsMiwwLDEyNSw3LDAsMTI0LDcsCi0gICAgMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDEzOSwwLDExMywxMywwLDEyNCw3LDAsCi0gICAgMTA2LDcsMCwxMDAsMSwwLDEwNyw5LDAsMTE0LDE1OCwwLDEyNCw3LDAsODMsCi0gICAgMTI0LDcsMCwxMDYsOCwwLDEyNSw4LDAsMTI0LDgsMCwxMDAsMSwwLDEwNywKLSAgICA4LDAsMTE0LDE5MSwwLDExNiw5LDAsMTAwLDMsMCwxMzEsMSwwLDEzMCwxLAotICAgIDAsMTI0LDQsMCwxMDYsMTAsMCwxMjQsOCwwLDEzMSwxLDAsMSwxMTMsMTMsCi0gICAgMCw4NywxMTYsMTEsMCwxMDYsMTIsMCwxMjQsMSwwLDEwMCwxLDAsMTMxLDIsCi0gICAgMCwxMjUsNywwLDEyNCw0LDAsMTI0LDcsMCw5NSw4LDAsMTI0LDcsMCwKLSAgICA4MywxMDAsMSwwLDgzLDQxLDQsMTIyLDYzLDcwLDEwNSwxMTAsMTAwLDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTExLDExNCwzMiwxMTAsOTcsMTA5LDEwMSwKLSAgICAxMTUsMTEyLDk3LDk5LDEwMSw5NSwxMTIsOTcsMTE2LDEwNCwzMiwxMDIsMTExLDExNCwzMiwxMTYsCi0gICAgMTA0LDEwNSwxMTUsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDcsMTEyLDk3LDk5LDEwNyw5NywKLSAgICAxMDMsMTAxLDMyLDExMCw5NywxMDksMTAxLDQ2LDc4LDExNCwxODIsMCwwLDAsMTIyLDE5LAotICAgIDExNSwxMTIsMTAxLDk5LDMyLDEwOSwxMDUsMTE1LDExNSwxMDUsMTEwLDEwMywzMiwxMDgsMTExLDk3LAotICAgIDEwMCwxMDEsMTE0LDQxLDEzLDExNCwxNDUsMCwwLDAsMTE0LDcxLDAsMCwwLDIxOCwKLSAgICA1LDk4LDEyMSwxMTYsMTAxLDExNSwxMTQsMiwxLDAsMCwxMTQsMTE3LDAsMCwwLAotICAgIDExNCwxODIsMCwwLDAsMTE0LDMsMSwwLDAsMTE0LDEyOSwwLDAsMCwxMTQsCi0gICAgMTU4LDAsMCwwLDExNCwxMDksMCwwLDAsMTE0LDE1MSwwLDAsMCwxMTQsMTIzLAotICAgIDAsMCwwLDExNCwxNjIsMCwwLDAsNDEsOSwxMTQsMTcyLDAsMCwwLDExNCwKLSAgICAxMjgsMCwwLDAsMTE0LDM3LDAsMCwwLDExNCwxODEsMCwwLDAsMjE4LDE0LAotICAgIDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDk1LDExMiw5NywxMTYsMTA0LDkwLDUsCi0gICAgMTAxLDExMCwxMTYsMTE0LDEyMSwxMTQsMjU0LDAsMCwwLDExNCwxNjYsMCwwLDAsMTE0LAotICAgIDEzMCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwKLSAgICAwLDAsMCwyMTgsOSw5NSwxMDMsMTAxLDExNiw5NSwxMTUsMTEyLDEwMSw5OSw4NSw0LAotICAgIDAsMCwxMTUsNDAsMCwwLDAsMCw1LDYsMSwxMywxLDIxLDEsMywKLSAgICAxLDE1LDEsMTIsMSwxNSwxLDIxLDIsMTgsMSwxMiwxLDMsMSwxNSwKLSAgICAxLDQsMSw5LDEsMTIsMSwxMiw1LDE3LDIsMTgsMSw5LDEsMTIyLAotICAgIDIwLDgwLDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMDMsMTAxLDExNiwKLSAgICA5NSwxMTUsMTEyLDEwMSw5OSw5OSw0LDAsMCwwLDAsMCwwLDAsNiwwLAotICAgIDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSwxNDAsMCwwLDAsMTI0LAotICAgIDIsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDIxLDAsMTE2LDAsMCwxMDYsMSwKLSAgICAwLDEyNSwyLDAsMTI0LDAsMCwxMDYsMiwwLDEyNCwxLDAsMTI0LDIsMCwKLSAgICAxMjQsMywwLDEzMSwzLDAsMTI1LDQsMCwxMjQsNCwwLDEwMCwxLDAsMTA3LAotICAgIDgsMCwxMTQsNTgsMCwxMDAsMSwwLDgzLDEyNCw0LDAsMTA2LDMsMCwxMDAsCi0gICAgMSwwLDEwNyw4LDAsMTE0LDEzMiwwLDEyNCw0LDAsMTA2LDQsMCwxMjUsNSwKLSAgICAwLDEyNCw1LDAsMTE0LDEyNSwwLDEwMCwyLDAsMTI0LDQsMCw5NSw1LDAsCi0gICAgMTE2LDYsMCwxMjQsMSwwLDEyNCw1LDAsMTI0LDAsMCwxMDYsMiwwLDEzMSwKLSAgICAzLDAsMTI0LDQsMCw5NSw0LDAsMTI0LDQsMCw4MywxMDAsMSwwLDgzLAotICAgIDExMCw0LDAsMTI0LDQsMCw4MywxMDAsMSwwLDgzLDQxLDMsMTIyLDk4LDEwMiwKLSAgICAxMDUsMTEwLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTEsCi0gICAgMTEwLDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDMyLDExMSwxMTQsMzIsMzksMTEyLAotICAgIDk3LDExNiwxMDQsMzksMzIsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTExLDExMCwzMiwxMTUsMTIxLAotICAgIDExNSw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTE1LDMyLDk3LDExMCwxMDAsCi0gICAgMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwKLSAgICAxMDQsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLAotICAgIDQ2LDc4LDkwLDksMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNDEsNywxMTQsCi0gICAgOCwwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LDYsMSwwLDAsMTE0LDEyOSwKLSAgICAwLDAsMCwxMTQsMTU4LDAsMCwwLDExNCwxNjAsMCwwLDAsMTE0LDIzMSwwLAotICAgIDAsMCw0MSw2LDExNCwxNzIsMCwwLDAsMTE0LDEyOCwwLDAsMCwxMTQsMzcsCi0gICAgMCwwLDAsMTE0LDE4MSwwLDAsMCwxMTQsMTY2LDAsMCwwLDExNCw1LDEsCisgICAgMTE0LDE5OSwwLDAsMCwxNzUsMywwLDAsMTE1LDIsMCwwLDAsMCwyLAorICAgIDEyMiwzMCw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LAorICAgIDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLAorICAgIDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDEsMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDYsMCwwLDAsMTI0LDAsMTA2LDAsODMsMCwKKyAgICA0MSwxLDEyMiw1OCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExMiwKKyAgICA5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMSwxMTcsMTE0LDk5LAorICAgIDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsOTcsMTE1LDMyLDEwMiwxMTEsMTE3LDExMCwxMDAsMzIsCisgICAgOTgsMTIxLDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDQxLDEsCisgICAgMTE0LDM3LDAsMCwwLDQxLDIsMTE0LDEwNCwwLDAsMCwxMTQsMTIzLDAsMCwKKyAgICAwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLAorICAgIDExNCwxNTUsMCwwLDAsMTc5LDMsMCwwLDExNSwyLDAsMCwwLDAsMywKKyAgICAxMjIsMzIsNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwKKyAgICAxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywKKyAgICAxMDksMTAxLDc4LDQxLDE0LDExNCwxMDksMCwwLDAsMTE0LDEwOCwwLDAsMCwxMTQsCisgICAgMTEwLDAsMCwwLDExNCwxMTEsMCwwLDAsMTE0LDE4MiwwLDAsMCwxMTQsMjEwLAorICAgIDAsMCwwLDExNCwyMTIsMCwwLDAsMTE0LDE4MywwLDAsMCwxMTQsMTg4LDAsCisgICAgMCwwLDExNCwxNTcsMCwwLDAsMTE0LDE4NCwwLDAsMCwxMTQsMTk5LDAsMCwKKyAgICAwLDExNCwxMjAsMCwwLDAsMTE0LDE1NSwwLDAsMCwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsCisgICAgMjIxLDAsMCwwLDEzMiwzLDAsMCwxMTUsMjAsMCwwLDAsOCw2LDQsCisgICAgMiw4LDQsOCw0LDgsMyw4LDgsOCw2LDgsNiw4LDQsOCwKKyAgICA0LDExNCwyMjEsMCwwLDAsOTksMCwwLDAsMCwwLDAsMCwwLDAsCisgICAgMCwwLDAsMiwwLDAsMCw2NCwwLDAsMCwxMTUsOTYsMCwwLDAsCisgICAgMTAxLDAsOTAsMSwxMDAsMCw5MCwyLDEwMCwxLDkwLDMsMTAwLDIsMTAwLDMsCisgICAgMTMyLDAsOTAsNCwxMDAsNCwxMDAsNSwxMzIsMCw5MCw1LDEwMCw2LDEwMCw3LAorICAgIDEzMiwwLDkwLDYsMTAwLDgsMTAwLDksMTMyLDAsOTAsNywxMDAsMTAsMTAwLDExLAorICAgIDEzMiwwLDkwLDgsMTAwLDEyLDEwMCwxMywxMzIsMCw5MCw5LDEwMCwxNCwxMDAsMTUsCisgICAgMTMyLDAsOTAsMTAsMTAwLDE2LDEwMCwxNywxMzIsMCw5MCwxMSwxMDAsMTgsMTAwLDE5LAorICAgIDEzMiwwLDkwLDEyLDEwMCwyMCwxMDAsMjEsMTMyLDAsOTAsMTMsMTAwLDIyLDgzLDAsCisgICAgNDEsMjMsMjE4LDE0LDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsCisgICAgMTE2LDEwNCw5NywzOCwxLDAsMCw4MiwxMDEsMTEyLDExNCwxMDEsMTE1LDEwMSwxMTAsMTE2LAorICAgIDExNSwzMiw5NywzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwzMiwxMTIsOTcsCisgICAgOTksMTA3LDk3LDEwMywxMDEsMzksMTE1LDMyLDExMiw5NywxMTYsMTA0LDQ2LDMyLDMyLDczLAorICAgIDExNiwzMiwxMTcsMTE1LDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMTAsMzIsMzIsMzIsMzIsMTE2LDExMSwzMiwxMDIsMTA1LAorICAgIDExMCwxMDAsMzIsMTA1LDExNiwxMTUsMzIsMTEyLDk3LDExNCwxMDEsMTEwLDExNiwzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSw0NCwzMiw5NywxMTAsMTAwLDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMTYsCisgICAgMTA0LDEwMSwxMTQsMTAxLDMyLDEwNSwxMTYsMzIsMTA4LDExMSwxMTEsMTA3LDExNSwzMiwxMTcsMTEyLAorICAgIDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTQsMTAxLDExMCwxMTYsMzksMTE1LDEwLDMyLDMyLAorICAgIDMyLDMyLDk1LDk1LDExMiw5NywxMTYsMTA0LDk1LDk1LDQ2LDMyLDMyLDg3LDEwNCwxMDEsCisgICAgMTEwLDMyLDExNiwxMDQsMTA1LDExNSwzMiw5OSwxMDQsOTcsMTEwLDEwMywxMDEsMTE1LDQ0LDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDM5LDExNSwzMiwxMTEsMTE5LDExMCwKKyAgICAzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDUsMTE1LDMyLDExNCwxMDEsOTksMTExLDEwOSwxMTIsMTE3LAorICAgIDExNiwxMDEsMTAwLDQ0LDEwLDMyLDMyLDMyLDMyLDExNywxMTUsMTA1LDExMCwxMDMsMzIsMTEyLAorICAgIDk3LDExNiwxMDQsOTUsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMzIsMzIsNzAsMTExLDExNCwKKyAgICAzMiwxMTYsMTExLDExMiw0NSwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDExNSw0NCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDMyLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDM5LDExNSwzMiwxMTIsOTcsMTE2LDEwNCwxMCwzMiwzMiwzMiwKKyAgICAzMiwxMDUsMTE1LDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDQ2LDk5LDQsMCwKKyAgICAwLDAsMCwwLDAsMCw0LDAsMCwwLDIsMCwwLDAsNjcsMCwKKyAgICAwLDAsMTE1LDM2LDAsMCwwLDEyNCwxLDEyNCwwLDk1LDAsMTI0LDIsMTI0LAorICAgIDAsOTUsMSwxMTYsMiwxMjQsMCwxMDYsMywxMzEsMCwxMzEsMSwxMjQsMCw5NSwKKyAgICA0LDEyNCwzLDEyNCwwLDk1LDUsMTAwLDAsODMsMCw0MSwxLDc4LDQxLDYsCisgICAgMjE4LDUsOTUsMTEwLDk3LDEwOSwxMDEsMjE4LDUsOTUsMTEyLDk3LDExNiwxMDQsMTE0LDk3LAorICAgIDAsMCwwLDIxOCwxNiw5NSwxMDMsMTAxLDExNiw5NSwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LAorICAgIDk1LDExMiw5NywxMTYsMTA0LDIxOCwxNyw5NSwxMDgsOTcsMTE1LDExNiw5NSwxMTIsOTcsMTE0LAorICAgIDEwMSwxMTAsMTE2LDk1LDExMiw5NywxMTYsMTA0LDIxOCwxMiw5NSwxMTIsOTcsMTE2LDEwNCw5NSwKKyAgICAxMDIsMTA1LDExMCwxMDAsMTAxLDExNCw0MSw0LDExNCwxMDQsMCwwLDAsMTE0LDEwMiwwLAorICAgIDAsMCwxMTQsMzcsMCwwLDAsMjE4LDExLDExMiw5NywxMTYsMTA0LDk1LDEwMiwxMDUsCisgICAgMTEwLDEwMCwxMDEsMTE0LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LAorICAgIDAsMCwwLDExNCwxODIsMCwwLDAsMTkyLDMsMCwwLDExNSw4LDAsMCwKKyAgICAwLDAsMSw2LDEsNiwxLDE0LDEsMTIyLDIzLDk1LDc4LDk3LDEwOSwxMDEsCisgICAgMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsCisgICAgOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsMywKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsMzgsMCwwLDAsMTI0LDAsMTA2LDAsCisgICAgMTA2LDEsMTAwLDEsMTMxLDEsOTIsMywxMjUsMSwxMjUsMiwxMjUsMywxMjQsMiwKKyAgICAxMDAsMiwxMDcsMiwxMTQsMzAsMTAwLDYsODMsMCwxMjQsMSwxMDAsNSwxMDIsMiwKKyAgICA4MywwLDQxLDcsMTIyLDYyLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDk3LDMyLAorICAgIDExNiwxMTcsMTEyLDEwOCwxMDEsMzIsMTExLDEwMiwzMiw0MCwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LAorICAgIDQ1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ1LDExMCw5NywxMDksMTAxLDQ0LDMyLDExMiw5NywKKyAgICAxMTQsMTAxLDExMCwxMTYsNDUsMTEyLDk3LDExNiwxMDQsNDUsOTcsMTE2LDExNiwxMTQsNDUsMTEwLAorICAgIDk3LDEwOSwxMDEsNDEsMTE0LDYxLDAsMCwwLDExNCwzMiwwLDAsMCwxMTQsOCwKKyAgICAwLDAsMCwxMTQsMzcsMCwwLDAsOTAsOCw5NSw5NSwxMTIsOTcsMTE2LDEwNCwKKyAgICA5NSw5NSw0MSwyLDExNCw4LDAsMCwwLDExNCwzNywwLDAsMCw0MSwyLAorICAgIDExNCwyMjgsMCwwLDAsMTE0LDM0LDAsMCwwLDQxLDQsMTE0LDEwNCwwLDAsCisgICAgMCwxMTQsMjE5LDAsMCwwLDIxOCwzLDEwMCwxMTEsMTE2LDkwLDIsMTA5LDEwMSwxMTQsCisgICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMjMsCisgICAgOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLDk3LDExNiwKKyAgICAxMDQsOTUsMTEwLDk3LDEwOSwxMDEsMTE1LDE5OCwzLDAsMCwxMTUsOCwwLDAsMCwKKyAgICAwLDIsMTgsMSw4LDIsNCwzLDEyMiwzOCw5NSw3OCw5NywxMDksMTAxLDExNSwKKyAgICAxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDExMiwKKyAgICA5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTEwLDk3LDEwOSwxMDEsMTE1LAorICAgIDk5LDEsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDMsMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDI4LDAsMCwwLDEyNCwwLDEwNiwwLDEzMSwwLAorICAgIDkyLDIsMTI1LDEsMTI1LDIsMTE2LDEsMTE2LDIsMTA2LDMsMTI0LDEsMjUsMCwKKyAgICAxMjQsMiwxMzEsMiw4MywwLDQxLDEsNzgsNDEsNCwxMTQsMjM1LDAsMCwwLAorICAgIDExNCwxMTQsMCwwLDAsMTE0LDgsMCwwLDAsMjE4LDcsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsMTE1LDQxLDMsMTE0LDEwNCwwLDAsMCw5MCwxOCwxMTIsOTcsMTE0LDEwMSwKKyAgICAxMTAsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExMCw5NywxMDksMTAxLDkwLDE0LAorICAgIDExMiw5NywxMTYsMTA0LDk1LDk3LDExNiwxMTYsMTE0LDk1LDExMCw5NywxMDksMTAxLDExNCw0LAorICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwyMzAsMCwKKyAgICAwLDAsMjA4LDMsMCwwLDExNSw0LDAsMCwwLDAsMSwxMiwxLDEyMiwKKyAgICAzMSw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsCisgICAgOTUsMTAzLDEwMSwxMTYsOTUsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsOTcsMTE2LDEwNCwKKyAgICA5OSwxLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwzLDAsMCwKKyAgICAwLDY3LDAsMCwwLDExNSw4MCwwLDAsMCwxMTYsMCwxMjQsMCwxMDYsMSwKKyAgICAxMzEsMCwxMzEsMSwxMjUsMSwxMjQsMSwxMjQsMCwxMDYsMiwxMDcsMywxMTQsNzQsCisgICAgMTI0LDAsMTA2LDMsMTI0LDAsMTA2LDQsMTI0LDEsMTMxLDIsMTI1LDIsMTI0LDIsCisgICAgMTAwLDAsMTA3LDksMTE0LDY4LDEyNCwyLDEwNiw1LDEwMCwwLDEwNyw4LDExNCw2OCwKKyAgICAxMjQsMiwxMDYsNiwxMTQsNjgsMTI0LDIsMTA2LDYsMTI0LDAsOTUsNywxMjQsMSwKKyAgICAxMjQsMCw5NSwyLDEyNCwwLDEwNiw3LDgzLDAsNDEsMSw3OCw0MSw4LDExNCwKKyAgICA5NywwLDAsMCwxMTQsMjMwLDAsMCwwLDExNCwyMzEsMCwwLDAsMTE0LDIzMiwKKyAgICAwLDAsMCwxMTQsMjI4LDAsMCwwLDExNCwxMjQsMCwwLDAsMTE0LDE1NCwwLAorICAgIDAsMCwxMTQsMjI5LDAsMCwwLDQxLDMsMTE0LDEwNCwwLDAsMCw5MCwxMSwKKyAgICAxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDExMiw5NywxMTYsMTA0LDExNCwxNjIsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LAorICAgIDEyLDk1LDExNCwxMDEsOTksOTcsMTA4LDk5LDExNywxMDgsOTcsMTE2LDEwMSwyMTIsMywwLAorICAgIDAsMTE1LDE2LDAsMCwwLDAsMiwxMiwxLDEwLDEsMTQsMywxOCwxLAorICAgIDYsMSw4LDEsNiwxLDEyMiwyNyw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsCisgICAgOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsOTUsMTE0LDEwMSw5OSw5NywxMDgsOTksMTE3LDEwOCwKKyAgICA5NywxMTYsMTAxLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLAorICAgIDIsMCwwLDAsNjcsMCwwLDAsMTE1LDEyLDAsMCwwLDExNiwwLDEyNCwKKyAgICAwLDEwNiwxLDEzMSwwLDEzMSwxLDgzLDAsNDEsMSw3OCw0MSwyLDIxOCw0LAorICAgIDEwNSwxMTYsMTAxLDExNCwxMTQsMjM3LDAsMCwwLDQxLDEsMTE0LDEwNCwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsCisgICAgOCw5NSw5NSwxMDUsMTE2LDEwMSwxMTQsOTUsOTUsMjI1LDMsMCwwLDExNSwyLDAsCisgICAgMCwwLDAsMSwxMjIsMjMsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwKKyAgICA4MCw5NywxMTYsMTA0LDQ2LDk1LDk1LDEwNSwxMTYsMTAxLDExNCw5NSw5NSw5OSwzLDAsCisgICAgMCwwLDAsMCwwLDAsMywwLDAsMCwzLDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSwxNCwwLDAsMCwxMjQsMiwxMjQsMCwxMDYsMCwxMjQsMSw2MCwKKyAgICAwLDEwMCwwLDgzLDAsNDEsMSw3OCw0MSwxLDExNCwyMjksMCwwLDAsNDEsCisgICAgMywxMTQsMTA0LDAsMCwwLDIxOCw1LDEwNSwxMTAsMTAwLDEwMSwxMjAsMTE0LDM3LDAsCiAgICAgMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwKLSAgICAwLDExNCwxODIsMCwwLDAsMTE3LDQsMCwwLDExNSwyNiwwLDAsMCwwLAotICAgIDQsMTIsMSw5LDEsMjEsMSwxMiwxLDQsMSwxNSwxLDksMSw2LAotICAgIDMsOSwxLDI0LDEsNCwyLDcsMiwxMjIsMjAsODAsOTcsMTE2LDEwNCw3MCwKLSAgICAxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw5OSwKLSAgICAzLDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwzLDAsMCwwLAotICAgIDY3LDAsMCwwLDExNSw0MSwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LAotICAgIDEsMCwxMjQsMiwwLDEzMSwyLDAsMTI1LDMsMCwxMjQsMywwLDEwMCwxLAotICAgIDAsMTA3LDgsMCwxMTQsMzQsMCwxMDAsMSwwLDgzLDEyNCwzLDAsMTA2LDEsCi0gICAgMCw4Myw0MSwyLDEyMiwxNzAsMTAyLDEwNSwxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwKLSAgICAxMDQsMzIsMTExLDExNCwzMiwzOSwxMTIsOTcsMTE2LDEwNCwzOSwzMiw5OCw5NywxMTUsMTAxLAotICAgIDEwMCwzMiwxMTEsMTEwLDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsCi0gICAgMTExLDEwNywxMTUsMzIsOTcsMTEwLDEwMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsCi0gICAgMTE0LDk1LDk5LDk3LDk5LDEwNCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwKLSAgICAzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg1LDExNSwKLSAgICAxMDEsMzIsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDQwLDQxLDMyLDEwNSwxMTAsCi0gICAgMTE1LDExNiwxMDEsOTcsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDc4LDQxLDIsMTE0LDE4MiwwLDAsMCwxMTQsMTI5LDAsMCwwLDQxLDQsMTE0LAotICAgIDE3MiwwLDAsMCwxMTQsMTI4LDAsMCwwLDExNCwzNywwLDAsMCwxMTQsMTY2LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsCi0gICAgMCwwLDExNCwxODMsMCwwLDAsMTM5LDQsMCwwLDExNSw4LDAsMCwwLAotICAgIDAsOCwxOCwxLDEyLDEsNCwxLDEyMiwyMiw4MCw5NywxMTYsMTA0LDcwLDEwNSwKLSAgICAxMTAsMTAwLDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDQxLDEyLDExNCwxMTQsMCwwLDAsMTE0LDExMywwLDAsMCwxMTQsMTE1LDAsMCwKLSAgICAwLDExNCwxMTYsMCwwLDAsMTE0LDE4NCwwLDAsMCwxMTQsMjUxLDAsMCwwLAotICAgIDExNCwwLDEsMCwwLDExNCwyLDEsMCwwLDExNCwzLDEsMCwwLDExNCwKLSAgICA2LDEsMCwwLDExNCwxODIsMCwwLDAsMTE0LDE4MywwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLAotICAgIDAsMCwxMTQsMjUwLDAsMCwwLDE5LDQsMCwwLDExNSwyMiwwLDAsMCwKLSAgICAxMiwyLDYsMiwxOCw4LDE4LDE3LDE4LDIyLDE4LDE1LDMsMSwxOCwzMSwKLSAgICAzLDEsMjEsMjEsMywxLDExNCwyNTAsMCwwLDAsOTksMCwwLDAsMCwKLSAgICAwLDAsMCwwLDAsMCwwLDAsMywwLDAsMCw2NCwwLDAsMCwKLSAgICAxMTUsMTMzLDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwKLSAgICAwLDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwwLAotICAgIDkwLDQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCw1LDAsMTAxLAotICAgIDYsMCw5MCw3LDAsMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsOTAsOCwKLSAgICAwLDEwMCw4LDAsMTAwLDksMCwxMzIsMCwwLDkwLDksMCwxMDAsMTAsMCwKLSAgICAxMDAsMTEsMCwxMDAsMTIsMCwxMzIsMSwwLDkwLDEwLDAsMTAwLDEzLDAsMTAwLAotICAgIDE0LDAsMTMyLDAsMCw5MCwxMSwwLDEwMSwxMiwwLDEwMCwxNSwwLDEwMCwxNiwKLSAgICAwLDEzMiwwLDAsMTMxLDEsMCw5MCwxMywwLDEwMCwxNywwLDEwMCwxOCwwLAotICAgIDEzMiwwLDAsOTAsMTQsMCwxMDAsMTAsMCw4Myw0MSwxOSwyMTgsMTAsNzAsMTA1LAotICAgIDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwxMjIsMTcyLDcwLDEwNSwxMDgsMTAxLDQ1LDk4LAotICAgIDk3LDExNSwxMDEsMTAwLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwLDEwLDMyLDMyLAotICAgIDMyLDMyLDczLDExMCwxMTYsMTAxLDExNCw5Nyw5OSwxMTYsMTA1LDExMSwxMTAsMTE1LDMyLDExOSwKLSAgICAxMDUsMTE2LDEwNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTE1LDEyMSwxMTUsCi0gICAgMTE2LDEwMSwxMDksMzIsOTcsMTE0LDEwMSwzMiw5OSw5Nyw5OSwxMDQsMTAxLDEwMCwzMiwxMDIsCi0gICAgMTExLDExNCwzMiwxMTIsMTAxLDExNCwxMDIsMTExLDExNCwxMDksOTcsMTEwLDk5LDEwMSw0NCwzMiwKLSAgICA5OCwxMDEsMTA1LDExMCwxMDMsMTAsMzIsMzIsMzIsMzIsMTE0LDEwMSwxMDIsMTE0LDEwMSwxMTUsCi0gICAgMTA0LDEwMSwxMDAsMzIsMTE5LDEwNCwxMDEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDEwMCwxMDUsMTE0LAotICAgIDEwMSw5OSwxMTYsMTExLDExNCwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwKLSAgICAxMTQsMzIsMTA1LDExNSwzMiwxMDQsOTcsMTEwLDEwMCwxMDgsMTA1LDExMCwxMDMsMzIsMTA0LDk3LAotICAgIDExNSwzMiw5OCwxMDEsMTAxLDExMCwzMiwxMDksMTExLDEwMCwxMDUsMTAyLDEwNSwxMDEsMTAwLDQ2LAotICAgIDEwLDEwLDMyLDMyLDMyLDMyLDk5LDIsMCwwLDAsMCwwLDAsMCw1LAotICAgIDAsMCwwLDUsMCwwLDAsNywwLDAsMCwxMTUsMTIyLDAsMCwwLAotICAgIDEwMywwLDAsMTI1LDMsMCwxMjAsNTIsMCwxMjQsMiwwLDY4LDkzLDQ0LDAsCi0gICAgOTIsMiwwLDEzNywwLDAsMTI1LDQsMCwxMjQsMywwLDEwNiwwLDAsMTM1LAotICAgIDAsMCwxMDIsMSwwLDEwMCwxLDAsMTAwLDIsMCwxMzQsMCwwLDEyNCw0LAotICAgIDAsNjgsMTMxLDEsMCwxMzEsMSwwLDEsMTEzLDEzLDAsODcsMTI0LDMsMCwKLSAgICAxMjQsMCwwLDk1LDEsMCwxMjQsMSwwLDExMiw3OSwwLDEwMCwzLDAsMTI0LAotICAgIDAsMCw5NSwyLDAsMTAwLDYsMCwxMjQsMCwwLDk1LDMsMCwxMTYsNCwKLSAgICAwLDEzMSwwLDAsMTI0LDAsMCw5NSw1LDAsMTE2LDQsMCwxMzEsMCwwLAotICAgIDEyNCwwLDAsOTUsNiwwLDEwMCw1LDAsODMsNDEsNywxMjIsMTU0LDczLDExMCwKKyAgICAwLDIxOCwxMSw5NSw5NSwxMTUsMTAxLDExNiwxMDUsMTE2LDEwMSwxMDksOTUsOTUsMjI4LDMsCisgICAgMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjYsOTUsNzgsOTcsMTA5LDEwMSwKKyAgICAxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDQ2LDk1LDk1LDExNSwxMDEsMTE2LDEwNSwKKyAgICAxMTYsMTAxLDEwOSw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLAorICAgIDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxMiwwLDAsMCwxMTYsCisgICAgMCwxMjQsMCwxMDYsMSwxMzEsMCwxMzEsMSw4MywwLDQxLDEsNzgsNDEsMiwKKyAgICAxMTQsMzMsMCwwLDAsMTE0LDIzNywwLDAsMCw0MSwxLDExNCwxMDQsMCwwLAorICAgIDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsCisgICAgMjE4LDcsOTUsOTUsMTA4LDEwMSwxMTAsOTUsOTUsMjMxLDMsMCwwLDExNSwyLDAsCisgICAgMCwwLDAsMSwxMjIsMjIsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwKKyAgICA4MCw5NywxMTYsMTA0LDQ2LDk1LDk1LDEwOCwxMDEsMTEwLDk1LDk1LDk5LDEsMCwwLAorICAgIDAsMCwwLDAsMCwxLDAsMCwwLDIsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDEyLDAsMCwwLDEwMCwxLDEwNiwwLDEyNCwwLDEwNiwxLDEzMSwxLAorICAgIDgzLDAsNDEsMiw3OCwxMjIsMjAsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LAorICAgIDEwMSw4MCw5NywxMTYsMTA0LDQwLDEyMywzMywxMTQsMTI1LDQxLDQxLDIsMTE0LDUwLDAsCisgICAgMCwwLDExNCwyMjksMCwwLDAsNDEsMSwxMTQsMTA0LDAsMCwwLDExNCw0LAorICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCw4LDk1LAorICAgIDk1LDExNCwxMDEsMTEyLDExNCw5NSw5NSwyMzQsMywwLDAsMTE1LDIsMCwwLDAsCisgICAgMCwxLDEyMiwyMyw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LAorICAgIDExNiwxMDQsNDYsOTUsOTUsMTE0LDEwMSwxMTIsMTE0LDk1LDk1LDk5LDIsMCwwLDAsCisgICAgMCwwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDEyLDAsMCwwLDEyNCwxLDEyNCwwLDEwNiwwLDEzMSwwLDEwNyw2LDgzLAorICAgIDAsNDEsMSw3OCw0MSwxLDExNCwyMzcsMCwwLDAsNDEsMiwxMTQsMTA0LDAsCisgICAgMCwwLDIxOCw0LDEwNSwxMTYsMTAxLDEwOSwxMTQsNCwwLDAsMCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNiwwLDAsMCwyMTgsMTIsOTUsOTUsOTksMTExLDExMCwxMTYsOTcsCisgICAgMTA1LDExMCwxMTUsOTUsOTUsMjM3LDMsMCwwLDExNSwyLDAsMCwwLDAsMSwKKyAgICAxMjIsMjcsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LAorICAgIDQ2LDk1LDk1LDk5LDExMSwxMTAsMTE2LDk3LDEwNSwxMTAsMTE1LDk1LDk1LDk5LDIsMCwKKyAgICAwLDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwKKyAgICAwLDAsMTE1LDE2LDAsMCwwLDEyNCwwLDEwNiwwLDEwNiwxLDEyNCwxLDEzMSwKKyAgICAxLDEsMCwxMDAsMCw4MywwLDQxLDEsNzgsNDEsMiwxMTQsMjI5LDAsMCwKKyAgICAwLDExNCwxNjEsMCwwLDAsNDEsMiwxMTQsMTA0LDAsMCwwLDExNCwyNDQsMCwKKyAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLAorICAgIDAsMTE0LDE2MSwwLDAsMCwyNDAsMywwLDAsMTE1LDIsMCwwLDAsMCwKKyAgICAxLDEyMiwyMSw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwKKyAgICAxMDQsNDYsOTcsMTEyLDExMiwxMDEsMTEwLDEwMCw3OCw0MSwxNCwxMTQsMTA5LDAsMCwwLAorICAgIDExNCwxMDgsMCwwLDAsMTE0LDExMCwwLDAsMCwxMTQsMTExLDAsMCwwLDExNCwKKyAgICAxODIsMCwwLDAsMTE0LDIzNSwwLDAsMCwxMTQsMjMwLDAsMCwwLDExNCwyMzcsCisgICAgMCwwLDAsMTE0LDIzOSwwLDAsMCwxMTQsMjQxLDAsMCwwLDExNCwyNDIsMCwKKyAgICAwLDAsMTE0LDI0MywwLDAsMCwxMTQsMjQ1LDAsMCwwLDExNCwxNjEsMCwwLAorICAgIDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDYsMCwwLDAsMTE0LDIyNywwLDAsMCwxODUsMywwLDAsMTE1LDIyLAorICAgIDAsMCwwLDgsNSw0LDIsOCw2LDgsMTAsOCw0LDgsMTMsOCwKKyAgICAzLDgsMyw4LDMsOCwzLDgsMywxMTQsMjI3LDAsMCwwLDk5LDAsCisgICAgMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsNjQsCisgICAgMCwwLDAsMTE1LDgwLDAsMCwwLDEwMSwwLDkwLDEsMTAwLDAsOTAsMiwKKyAgICAxMDAsMSwxMDAsMiwxMzIsMCw5MCwzLDEwMSw0LDEwMCwzLDEwMCw0LDEzMiwwLAorICAgIDEzMSwxLDkwLDUsMTAwLDUsMTAwLDYsMTMyLDAsOTAsNiwxMDAsNywxMDAsOCwKKyAgICAxMzIsMCw5MCw3LDEwMCw5LDEwMCwxMCwxMzIsMCw5MCw4LDEwMCwxMSwxMDAsMTIsCisgICAgMTMyLDAsOTAsOSwxMDAsMTMsMTAwLDE0LDEzMiwwLDkwLDEwLDEwMCwxNSwxMDAsMTYsCisgICAgMTMyLDAsOTAsMTEsMTAwLDE3LDgzLDAsNDEsMTgsMjE4LDE2LDk1LDc4LDk3LDEwOSwKKyAgICAxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDk5LDQsMCwwLAorICAgIDAsMCwwLDAsMCw0LDAsMCwwLDQsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDE4LDAsMCwwLDExNiwwLDEyNCwxLDEyNCwyLDEyNCwzLDEzMSwzLAorICAgIDEyNCwwLDk1LDEsMTAwLDAsODMsMCw0MSwxLDc4LDQxLDIsMTE0LDIyNywwLAorICAgIDAsMCwxMTQsMjI5LDAsMCwwLDQxLDQsMTE0LDEwNCwwLDAsMCwxMTQsMTAyLAorICAgIDAsMCwwLDExNCwzNywwLDAsMCwxMTQsMjMzLDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxODIsMCwwLAorICAgIDAsMjQ2LDMsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjUsOTUsNzgsCisgICAgOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTUsCisgICAgOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDIsMCwwLDAsMCwwLDAsMCwKKyAgICAyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDEyLDAsMCwKKyAgICAwLDEwMCwxLDEwNiwwLDEyNCwxLDEwNiwxLDEzMSwxLDgzLDAsNDEsMiwxMjIsCisgICAgMTE1LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE0LDEwMSwxMTIsMTE0LDMyLDEwMiwxMTEsMTE0LAorICAgIDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsCisgICAgMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLAorICAgIDMyLDg0LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA5LDk3LDk5LDEwNCwKKyAgICAxMDUsMTEwLDEwMSwxMTQsMTIxLDMyLDEwMCwxMTEsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDYsCisgICAgMTExLDk4LDMyLDEwNSwxMTYsMTE1LDEwMSwxMDgsMTAyLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDEyMiwyNSw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsCisgICAgMTE0LDEyNSwzMiw0MCwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw0MSw2Miw0MSwKKyAgICAyLDExNCw1MCwwLDAsMCwxMTQsMTA5LDAsMCwwLDQxLDIsMTE0LDE2OCwwLAorICAgIDAsMCwxMTQsMTg3LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwKKyAgICAwLDExNCw2LDAsMCwwLDIxOCwxMSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsCisgICAgMTAxLDExMiwxMTQsMjQ5LDMsMCwwLDExNSwyLDAsMCwwLDAsNywxMjIsMjgsCisgICAgOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE0LDEwMSwxMTIsMTE0LDk5LDIsMCwwLAorICAgIDAsMCwwLDAsMCwyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDQsMCwwLDAsMTAwLDEsODMsMCw0MSwyLDc4LDg0LDExNCw0LAorICAgIDAsMCwwLDQxLDIsMTE0LDEwNCwwLDAsMCwxMTQsMTIzLDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxNTcsCisgICAgMCwwLDAsMiw0LDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDI3LAorICAgIDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LAorICAgIDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk5LDIsMCwwLDAsCisgICAgMCwwLDAsMCwyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDQsMCwwLDAsMTAwLDEsODMsMCw0MSwyLDc4LDExNCwzMiwwLDAsCisgICAgMCwxMTQsNCwwLDAsMCw0MSwyLDExNCwxMDQsMCwwLDAsMTE0LDEyMywwLAorICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsCisgICAgMCwxMTQsMTk5LDAsMCwwLDUsNCwwLDAsMTE1LDIsMCwwLDAsMCwKKyAgICAxLDEyMiwyNyw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywKKyAgICAxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDk5LDIsCisgICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDYsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDE2LDAsMCwwLDExNiwwLDEwMCwxLDEwMCwyLDEwMCwzLAorICAgIDEwMCw0LDEwMCw1LDE0MSw0LDgzLDAsNDEsNiw3OCwxMTQsMzIsMCwwLDAsCisgICAgMTIyLDgsNjAsMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsNjIsMTE0LDE4NiwwLDAsMCw4NCwKKyAgICA0MSwxLDExNCwyMDEsMCwwLDAsNDEsMSwxMTQsMjAyLDAsMCwwLDQxLDIsCisgICAgMTE0LDEwNCwwLDAsMCwxMTQsMTIzLDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxODQsMCwwLDAsOCw0LAorICAgIDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDI1LDk1LDc4LDk3LDEwOSwxMDEsCisgICAgMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LAorICAgIDk5LDExMSwxMDAsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwKKyAgICAwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsCisgICAgODMsMCw0MSwyLDEyMiw0Miw4NSwxMTUsMTAxLDMyLDEwMCwxMDEsMTAyLDk3LDExNywxMDgsCisgICAgMTE2LDMyLDExNSwxMDEsMTA5LDk3LDExMCwxMTYsMTA1LDk5LDExNSwzMiwxMDIsMTExLDExNCwzMiwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OSwxMTQsMTAxLDk3LDExNiwxMDUsMTExLDExMCw0NiwKKyAgICA3OCwxMTQsNCwwLDAsMCw0MSwyLDExNCwxMDQsMCwwLDAsMTE0LDE2MiwwLAorICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsCisgICAgMCwxMTQsMTgzLDAsMCwwLDExLDQsMCwwLDExNSwwLDAsMCwwLDEyMiwKKyAgICAzMCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLAorICAgIDExNCw0Niw5OSwxMTQsMTAxLDk3LDExNiwxMDEsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksCisgICAgMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMSwwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMCw4MywwLDQxLDEsNzgsCisgICAgMTE0LDQsMCwwLDAsNDEsMiwxMTQsMTA0LDAsMCwwLDExNCwxODcsMCwwLAorICAgIDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsCisgICAgMTE0LDE4OCwwLDAsMCwxNCw0LDAsMCwxMTUsMiwwLDAsMCwwLDEsCisgICAgMTIyLDI4LDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwKKyAgICAxMDEsMTE0LDQ2LDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsCisgICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDI2LDAsMCwwLDExNiwwLDEwNiwxLDEwMCwxLDEyNCwwLAorICAgIDEwNiwyLDEzMSwyLDEsMCwxMTYsMCwxMDYsMywxMjQsMCwxMjQsMSwxMzEsMiwKKyAgICA4MywwLDQxLDIsMTIyLDk4LDc2LDExMSw5NywxMDAsMzIsOTcsMzIsMTEwLDk3LDEwOSwKKyAgICAxMDEsMTE1LDExMiw5Nyw5OSwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsCisgICAgMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsCisgICAgMTAwLDQ2LDMyLDMyLDg1LDExNSwxMDEsMzIsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsNDAsNDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsNDYsMTAsMTAsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTIyLDM4LDExMCw5NywxMDksMTAxLDExNSwxMTIsCisgICAgOTcsOTksMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwKKyAgICAxMDAsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDExMiw5NywxMTYsMTA0LDMyLDEyMywzMywxMTQsMTI1LAorICAgIDQxLDQsMTE0LDExOCwwLDAsMCwxMTQsMTMzLDAsMCwwLDExNCwyMjksMCwwLAorICAgIDAsMTE0LDE4OSwwLDAsMCw0MSwyLDExNCwxMDQsMCwwLDAsMTE0LDEyMywwLAorICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsCisgICAgMCwxMTQsMTkwLDAsMCwwLDE3LDQsMCwwLDExNSw2LDAsMCwwLDAsCisgICAgNyw2LDEsOCwxLDEyMiwyOCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksCisgICAgMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSw3OCw0MSwxMiwxMTQsMTA5LDAsMCwwLDExNCwxMDgsMCwwLDAsCisgICAgMTE0LDExMCwwLDAsMCwxMTQsMTgyLDAsMCwwLDExNCwxODAsMCwwLDAsMTE0LAorICAgIDI0NywwLDAsMCwxMTQsMTU3LDAsMCwwLDExNCwxOTksMCwwLDAsMTE0LDE4NCwKKyAgICAwLDAsMCwxMTQsMTgzLDAsMCwwLDExNCwxODgsMCwwLDAsMTE0LDE5MCwwLAorICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsCisgICAgMCwxMTQsNiwwLDAsMCwxMTQsMjQ2LDAsMCwwLDI0NSwzLDAsMCwxMTUsCisgICAgMTYsMCwwLDAsOCwxLDgsMywxMiw5LDgsMyw4LDMsOCwzLAorICAgIDgsMyw4LDMsMTE0LDI0NiwwLDAsMCw5OSwwLDAsMCwwLDAsMCwKKyAgICAwLDAsMCwwLDAsMCw0LDAsMCwwLDY0LDAsMCwwLDExNSwxMDYsCisgICAgMCwwLDAsMTAxLDAsOTAsMSwxMDAsMCw5MCwyLDEwMCwxLDkwLDMsMTAxLAorICAgIDQsMTAwLDIsMTAwLDMsMTMyLDAsMTMxLDEsOTAsNSwxMDEsNCwxMDAsNCwxMDAsCisgICAgNSwxMzIsMCwxMzEsMSw5MCw2LDEwMSw0LDEwMCw2LDEwMCw3LDEzMiwwLDEzMSwKKyAgICAxLDkwLDcsMTAxLDQsMTAwLDgsMTAwLDksMTMyLDAsMTMxLDEsOTAsOCwxMDEsCisgICAgNCwxMDAsMTcsMTAwLDExLDEwMCwxMiwxMzIsMSwxMzEsMSw5MCw5LDEwMSw0LDEwMCwKKyAgICAxOCwxMDAsMTMsMTAwLDE0LDEzMiwxLDEzMSwxLDkwLDEwLDEwMSw0LDEwMCwxOSwxMDAsCisgICAgMTUsMTAwLDE2LDEzMiwxLDEzMSwxLDkwLDExLDEwMCwxMCw4MywwLDQxLDIwLDIxOCwKKyAgICAxMCw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTIyLDYyLDc3LDEwMSwxMTYsCisgICAgOTcsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsMTAyLDExMSwKKyAgICAxMTQsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsMzIsOTcsMTEwLDEwMCwzMiwxMTIsCisgICAgOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsOTUsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTUsMzIsCisgICAgOTcsMTE2LDExNiwxMTQsMTA1LDk4LDExNywxMTYsMTAxLDExNSw0Niw5OSwxLDAsMCwwLAorICAgIDAsMCwwLDAsMiwwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLAorICAgIDExNSw0MiwwLDAsMCwxMjAsMzYsMTE2LDAsMTA2LDEsMTA2LDIsMTMxLDAsNjgsCisgICAgMCw5MywyMiwxMjUsMSwxMTYsMywxMjQsMSwxMDAsMSwxMzEsMiwxMTQsMTIsMTI0LAorICAgIDEsMTA2LDQsMTMxLDAsMSwwLDExMywxMiw4NywwLDEwMCwyLDgzLDAsNDEsCisgICAgMywxMjIsMTI1LDY3LDk3LDEwOCwxMDgsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDExMCwxMTgsOTcsCisgICAgMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNSw0MCw0MSwzMiwKKyAgICAxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMTEsMTEwLDMyLDk3LDEwOCwxMDgsMzIsMTEyLDk3LAorICAgIDExNiwxMDQsMzIsMTAxLDExMCwxMTYsMTE0LDEyMSwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwxMTUsCisgICAgMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE1LDExNiwxMTEsMTE0LDEwMSwxMDAsMzIsCisgICAgMTA1LDExMCwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwxMDEsMTE0LDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE1LDMyLDQwLDExOSwxMDQsMTAxLAorICAgIDExNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCw0MSw0NiwKKyAgICAyMTgsMTcsMTA1LDExMCwxMTgsOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSw5NSw5OSw5Nyw5OSwKKyAgICAxMDQsMTAxLDExNSw3OCw0MSw1LDExNCw4LDAsMCwwLDIxOCwxOSwxMTIsOTcsMTE2LAorICAgIDEwNCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDk1LDk5LDk3LDk5LDEwNCwxMDEsCisgICAgMjE4LDYsMTE4LDk3LDEwOCwxMTcsMTAxLDExNSwxMTQsMTEyLDAsMCwwLDExNCwyNDksMCwKKyAgICAwLDAsNDEsMiwxMTQsMTY4LDAsMCwwLDIxOCw2LDEwMiwxMDUsMTEwLDEwMCwxMDEsCisgICAgMTE0LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLAorICAgIDExNCwyNDksMCwwLDAsMzUsNCwwLDAsMTE1LDYsMCwwLDAsMCw0LAorICAgIDE2LDEsMTAsMSwxMjIsMjgsODAsOTcsMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LAorICAgIDQ2LDEwNSwxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsOTUsOTksOTcsOTksMTA0LAorICAgIDEwMSwxMTUsOTksMiwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMTIsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDg2LDAsMCwwLDExNiwwLDEwNiwxLAorICAgIDEwMCwxLDEwNyw5LDExNCwzMCwxMTYsMCwxMDYsMSwxMiwwLDExNCwzMCwxMTYsMiwKKyAgICAxMDYsMywxMDAsMiwxMTYsNCwxMzEsMiwxLDAsMTIwLDUwLDExNiwwLDEwNiwxLAorICAgIDY4LDAsOTMsMzYsMTI1LDIsMTIxLDgsMTI0LDIsMTI0LDEsMTMxLDEsODMsMCwKKyAgICA0LDAsMTE2LDUsMTA3LDEwLDExNCw3MiwxLDAsMSwwLDEsMCwxMTksMzgsCisgICAgODksMCwxMTMsMzgsODgsMCwxMTMsMzgsODcsMCwxMDAsMSw4MywwLDEwMCwxLAorICAgIDgzLDAsNDEsMywxMjIsNDYsODMsMTAxLDk3LDExNCw5OSwxMDQsMzIsMTE1LDEyMSwxMTUsCisgICAgNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDExNSwzMiwxMDIsMTExLDExNCwzMiwKKyAgICA5NywzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwzOSwxMTIsOTcsCisgICAgMTE2LDEwNCwzOSw0Niw3OCwxMjIsMjMsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsOTUsCisgICAgMTA0LDExMSwxMTEsMTA3LDExNSwzMiwxMDUsMTE1LDMyLDEwMSwxMDksMTEyLDExNiwxMjEsNDEsNiwKKyAgICAxMTQsOCwwLDAsMCwyMTgsMTAsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LAorICAgIDExNSwxMTQsNjMsMCwwLDAsMTE0LDY0LDAsMCwwLDExNCwxMjIsMCwwLDAsCisgICAgMTE0LDEwMywwLDAsMCw0MSwzLDExNCwxNjgsMCwwLDAsMTE0LDM3LDAsMCwKKyAgICAwLDkwLDQsMTA0LDExMSwxMTEsMTA3LDExNCw0LDAsMCwwLDExNCw0LDAsMCwKKyAgICAwLDExNCw2LDAsMCwwLDIxOCwxMSw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLAorICAgIDExMSwxMDcsMTE1LDQzLDQsMCwwLDExNSwxNiwwLDAsMCwwLDMsMTgsMSwKKyAgICAxMiwxLDEyLDEsMiwxLDgsMSwxNCwxLDEyLDIsMTIyLDIyLDgwLDk3LAorICAgIDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsCisgICAgMTExLDExMSwxMDcsMTE1LDk5LDIsMCwwLDAsMCwwLDAsMCwzLDAsMCwKKyAgICAwLDE5LDAsMCwwLDY3LDAsMCwwLDExNSwxMDIsMCwwLDAsMTI0LDEsCisgICAgMTAwLDEsMTA3LDIsMTE0LDQyLDEyMSwxMiwxMTYsMCwxMDYsMSwxMzEsMCwxMjUsMSwKKyAgICA4NywwLDExMCwyMCw0LDAsMTE2LDIsMTA3LDEwLDExNCw0MCwxLDAsMSwwLAorICAgIDEsMCwxMDAsMiw4MywwLDg4LDAsMTIxLDE0LDExNiwzLDEwNiw0LDEyNCwxLAorICAgIDI1LDAsMTI1LDIsODcsMCwxMTAsNDAsNCwwLDExNiw1LDEwNywxMCwxMTQsOTYsCisgICAgMSwwLDEsMCwxLDAsMTI0LDAsMTA2LDYsMTI0LDEsMTMxLDEsMTI1LDIsCisgICAgMTI0LDIsMTE2LDMsMTA2LDQsMTI0LDEsNjAsMCw4OSwwLDExMCwyLDg4LDAsCisgICAgMTI0LDIsODMsMCw0MSwzLDEyMiwyMTAsNzEsMTAxLDExNiwzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICAxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsCisgICAgOTcsMTE2LDEwNCwzMiwxMDEsMTEwLDExNiwxMTQsMTIxLDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMTUsCisgICAgMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LAorICAgIDk1LDk5LDk3LDk5LDEwNCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsNzMsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwMSwxMTAsMTE2LAorICAgIDExNCwxMjEsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiwxMDUsMTEwLDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDk5LDk3LDk5LDEwNCwxMDEsNDQsMzIsMTAyLDEwNSwxMTAsMTAwLDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDk3LDExMiwxMTIsMTE0LDExMSwxMTIsMTE0LDEwNSw5NywxMTYsMTAxLDMyLDEwMiwxMDUsMTEwLAorICAgIDEwMCwxMDEsMTE0LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDk3LDExMCwxMDAsMzIsCisgICAgOTksOTcsOTksMTA0LDEwMSwzMiwxMDUsMTE2LDQ2LDMyLDczLDEwMiwzMiwxMTAsMTExLDMyLAorICAgIDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDMyLDEwNSwxMTUsMzIsOTcsMTE4LDk3LDEwNSwxMDgsOTcsCisgICAgOTgsMTA4LDEwMSw0NCwzMiwxMTUsMTE2LDExMSwxMTQsMTAxLDMyLDc4LDExMSwxMTAsMTAxLDQ2LAorICAgIDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNCwzMiwwLDAsMCw3OCwKKyAgICA0MSw3LDExNCwzLDAsMCwwLDExNCw0NywwLDAsMCwyMTgsMTcsNzAsMTA1LAorICAgIDEwOCwxMDEsNzgsMTExLDExNiw3MCwxMTEsMTE3LDExMCwxMDAsNjksMTE0LDExNCwxMTEsMTE0LDExNCwKKyAgICA4LDAsMCwwLDExNCwyNTAsMCwwLDAsMTE0LDEzNSwwLDAsMCwxMTQsMjU0LAorICAgIDAsMCwwLDQxLDMsMTE0LDE2OCwwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LAorICAgIDI1MiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwKKyAgICAwLDAsMCwyMTgsMjAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwKKyAgICAxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDU2LDQsMCwwLDExNSwyMiwwLAorICAgIDAsMCwwLDgsOCwxLDIsMSwxMiwxLDE0LDMsNiwxLDIsMSwKKyAgICAxNCwxLDE0LDEsMTAsMSwxNiwxLDEyMiwzMSw4MCw5NywxMTYsMTA0LDcwLDEwNSwKKyAgICAxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwKKyAgICAxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDk5LDMsMCwwLDAsMCwwLAorICAgIDAsMCw2LDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDgyLAorICAgIDAsMCwwLDExNiwwLDEyNCwyLDEwMCwxLDEzMSwyLDExNCwyNiwxMjQsMiwxMDYsCisgICAgMSwxMjQsMSwxMzEsMSw5MiwyLDEyNSwzLDEyNSw0LDExMCwxNCwxMjQsMiwxMDYsCisgICAgMiwxMjQsMSwxMzEsMSwxMjUsMywxMDMsMCwxMjUsNCwxMjQsMywxMDAsMCwxMDcsCisgICAgOSwxMTQsNjAsMTE2LDMsMTA2LDQsMTI0LDEsMTI0LDMsMTMxLDIsODMsMCwxMTYsCisgICAgMywxMDYsNSwxMjQsMSwxMDAsMCwxMzEsMiwxMjUsNSwxMjQsNCwxMjQsNSw5NSwKKyAgICA2LDEyNCw1LDgzLDAsNDEsMiw3OCwxMTQsMTIxLDAsMCwwLDQxLDcsMTE0LAorICAgIDExMiwwLDAsMCwxMTQsMTIxLDAsMCwwLDExNCwxNzksMCwwLDAsMTE0LDExOCwKKyAgICAwLDAsMCwxMTQsMTc2LDAsMCwwLDExNCwxNTgsMCwwLDAsMTE0LDE1NCwwLAorICAgIDAsMCw0MSw2LDExNCwxNjgsMCwwLDAsMTE0LDEyMywwLDAsMCwxMTQsMjUyLAorICAgIDAsMCwwLDExNCwxMjQsMCwwLDAsMTE0LDEyNSwwLDAsMCwxMTQsMTYyLDAsCisgICAgMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwKKyAgICAwLDIxOCwxNiw5NSwxMDgsMTAxLDEwMyw5Nyw5OSwxMjEsOTUsMTAzLDEwMSwxMTYsOTUsMTE1LAorICAgIDExMiwxMDEsOTksNzgsNCwwLDAsMTE1LDE4LDAsMCwwLDAsNCwxMCwxLAorICAgIDE2LDIsMTAsMSw0LDEsOCwxLDEyLDEsMTIsMSw2LDEsMTIyLDI3LAorICAgIDgwLDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMDgsMTAxLDEwMyw5NywKKyAgICA5OSwxMjEsOTUsMTAzLDEwMSwxMTYsOTUsMTE1LDExMiwxMDEsOTksNzgsOTksNCwwLDAsCisgICAgMCwwLDAsMCwwLDksMCwwLDAsNSwwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsMTcwLDAsMCwwLDEwMywwLDEyNSw0LDEyMCwxNjAsMTI0LDIsNjgsMCwKKyAgICA5MywxMzAsMTI1LDUsMTE2LDAsMTI0LDUsMTE2LDEsMTE2LDIsMTAyLDIsMTMxLDIsCisgICAgMTE1LDMwLDExMywxMCwxMjQsMCwxMDYsMywxMjQsNSwxMzEsMSwxMjUsNiwxMjQsNiwKKyAgICAxMDAsMSwxMDcsOSwxMTQsMTAsMTE2LDQsMTI0LDYsMTAwLDIsMTMxLDIsMTE0LDcyLAorICAgIDEyNCw2LDEwNiw1LDEyNCwxLDEyNCwzLDEzMSwyLDEyNSw3LDExMCwxMiwxMjQsMCwKKyAgICAxMDYsNiwxMjQsMSwxMjQsNiwxMzEsMiwxMjUsNywxMjQsNywxMDAsMSwxMDcsOCwKKyAgICAxMTQsOTQsMTEzLDEwLDEyNCw3LDEwNiw3LDEwMCwxLDEwNyw5LDExNCwxMDgsMTI0LDcsCisgICAgODMsMCwxMjQsNywxMDYsOCwxMjUsOCwxMjQsOCwxMDAsMSwxMDcsOCwxMTQsMTMwLAorICAgIDExNiw5LDEwMCwzLDEzMSwxLDEzMCwxLDEyNCw0LDEwNiwxMCwxMjQsOCwxMzEsMSwKKyAgICAxLDAsMTEzLDEwLDg3LDAsMTE2LDExLDEwNiwxMiwxMjQsMSwxMDAsMSwxMzEsMiwKKyAgICAxMjUsNywxMjQsNCwxMjQsNyw5NSw4LDEyNCw3LDgzLDAsMTAwLDEsODMsMCwKKyAgICA0MSw0LDEyMiw2Myw3MCwxMDUsMTEwLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDMyLDExMSwxMTQsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsCisgICAgOTUsMTEyLDk3LDExNiwxMDQsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDQ3LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMTAsOTcsCisgICAgMTA5LDEwMSw0Niw3OCwxMTQsMTc4LDAsMCwwLDEyMiwxOSwxMTUsMTEyLDEwMSw5OSwzMiwKKyAgICAxMDksMTA1LDExNSwxMTUsMTA1LDExMCwxMDMsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCw0MSwxMywKKyAgICAxMTQsMTQxLDAsMCwwLDExNCw3MywwLDAsMCwyMTgsNSw5OCwxMjEsMTE2LDEwMSwKKyAgICAxMTUsMTE0LDAsMSwwLDAsMTE0LDExMiwwLDAsMCwxMTQsMTc4LDAsMCwwLAorICAgIDExNCwxLDEsMCwwLDExNCwxMjQsMCwwLDAsMTE0LDE1NCwwLDAsMCwxMTQsCisgICAgMTAzLDAsMCwwLDExNCwxNDcsMCwwLDAsMTE0LDExOCwwLDAsMCwxMTQsMTU4LAorICAgIDAsMCwwLDQxLDksMTE0LDE2OCwwLDAsMCwxMTQsMTIzLDAsMCwwLDExNCwKKyAgICAzNywwLDAsMCwxMTQsMTc3LDAsMCwwLDIxOCwxNCwxMTAsOTcsMTA5LDEwMSwxMTUsCisgICAgMTEyLDk3LDk5LDEwMSw5NSwxMTIsOTcsMTE2LDEwNCw5MCw1LDEwMSwxMTAsMTE2LDExNCwxMjEsCisgICAgMTE0LDI1MiwwLDAsMCwxMTQsMTYyLDAsMCwwLDExNCwxMjUsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDksCisgICAgOTUsMTAzLDEwMSwxMTYsOTUsMTE1LDExMiwxMDEsOTksOTMsNCwwLDAsMTE1LDQwLDAsCisgICAgMCwwLDAsNSw0LDEsMTAsMSwxNCwxLDIsMSwxMCwxLDgsMSwKKyAgICAxMCwxLDE0LDIsMTIsMSw4LDEsMiwxLDEwLDEsNCwxLDYsMSwKKyAgICA4LDEsOCw1LDE0LDIsMTIsMSw2LDEsMTIyLDIwLDgwLDk3LDExNiwxMDQsCisgICAgNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMDMsMTAxLDExNiw5NSwxMTUsMTEyLDEwMSw5OSwKKyAgICA5OSw0LDAsMCwwLDAsMCwwLDAsNiwwLDAsMCw0LDAsMCwKKyAgICAwLDY3LDAsMCwwLDExNSwxMDAsMCwwLDAsMTI0LDIsMTAwLDEsMTA3LDgsCisgICAgMTE0LDE0LDExNiwwLDEwNiwxLDEyNSwyLDEyNCwwLDEwNiwyLDEyNCwxLDEyNCwyLAorICAgIDEyNCwzLDEzMSwzLDEyNSw0LDEyNCw0LDEwMCwxLDEwNyw4LDExNCw0MCwxMDAsMSwKKyAgICA4MywwLDEyNCw0LDEwNiwzLDEwMCwxLDEwNyw4LDExNCw5MiwxMjQsNCwxMDYsNCwKKyAgICAxMjUsNSwxMjQsNSwxMTQsODYsMTAwLDIsMTI0LDQsOTUsNSwxMTYsNiwxMjQsMSwKKyAgICAxMjQsNSwxMjQsMCwxMDYsMiwxMzEsMywxMjQsNCw5NSw0LDEyNCw0LDgzLDAsCisgICAgMTAwLDEsODMsMCwxMTAsNCwxMjQsNCw4MywwLDEwMCwxLDgzLDAsNDEsMywKKyAgICAxMjIsMTQxLDg0LDExNCwxMjEsMzIsMTE2LDExMSwzMiwxMDIsMTA1LDExMCwxMDAsMzIsOTcsMzIsCisgICAgMTE1LDExMiwxMDEsOTksMzIsMTAyLDExMSwxMTQsMzIsMzksMTAyLDExNywxMDgsMTA4LDExMCw5NywKKyAgICAxMDksMTAxLDM5LDMyLDExMSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsMzIsCisgICAgMTExLDExNCwzMiwzOSwxMTIsOTcsMTE2LDEwNCwzOSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDExNSwxMDEsOTcsMTE0LDk5LDEwNCwzMiwxMDUsCisgICAgMTE1LDMyLDk4LDk3LDExNSwxMDEsMTAwLDMyLDExMSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLAorICAgIDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDExNSwzMiw5NywxMTAsMTAwLDMyLDExNSwxMjEsCisgICAgMTE1LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsOTUsCisgICAgOTksOTcsOTksMTA0LDEwMSw0NiwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3OCwKKyAgICA5MCw5LDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDQxLDcsMTE0LDgsMCwKKyAgICAwLDAsMTE0LDM3LDAsMCwwLDExNCw0LDEsMCwwLDExNCwxMjQsMCwwLAorICAgIDAsMTE0LDE1NCwwLDAsMCwxMTQsMTU2LDAsMCwwLDExNCwyMjcsMCwwLDAsCisgICAgNDEsNiwxMTQsMTY4LDAsMCwwLDExNCwxMjMsMCwwLDAsMTE0LDM3LDAsMCwKKyAgICAwLDExNCwxNzcsMCwwLDAsMTE0LDE2MiwwLDAsMCwxMTQsMywxLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsCisgICAgMTc4LDAsMCwwLDEyNSw0LDAsMCwxMTUsMjYsMCwwLDAsMCw2LDgsCisgICAgMSw2LDEsMTQsMSw4LDEsNCwxLDEwLDEsNiwxLDQsMyw2LAorICAgIDEsMTYsMSw0LDIsNiwyLDEyMiwyMCw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsCisgICAgMTAwLDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDk5LDMsMCwKKyAgICAwLDAsMCwwLDAsMCw0LDAsMCwwLDMsMCwwLDAsNjcsMCwKKyAgICAwLDAsMTE1LDMwLDAsMCwwLDEyNCwwLDEwNiwwLDEyNCwxLDEyNCwyLDEzMSwKKyAgICAyLDEyNSwzLDEyNCwzLDEwMCwxLDEwNyw4LDExNCwyNCwxMDAsMSw4MywwLDEyNCwKKyAgICAzLDEwNiwxLDgzLDAsNDEsMiwxMjIsMTcwLDEwMiwxMDUsMTEwLDEwMCwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTEsMTEwLDMyLDExNSwxMjEsMTE1LDQ2LAorICAgIDExMiw5NywxMTYsMTA0LDMyLDExMSwxMTQsMzIsMzksMTEyLDk3LDExNiwxMDQsMzksMzIsOTgsCisgICAgOTcsMTE1LDEwMSwxMDAsMzIsMTExLDExMCwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCwKKyAgICA5NSwxMDQsMTExLDExMSwxMDcsMTE1LDMyLDk3LDExMCwxMDAsMTAsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLAorICAgIDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwKKyAgICAzMiw4NSwxMTUsMTAxLDMyLDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw0MCw0MSwKKyAgICAzMiwxMDUsMTEwLDExNSwxMTYsMTAxLDk3LDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiw3OCw0MSwyLDExNCwxNzgsMCwwLDAsMTE0LDEyNCwwLDAsMCwKKyAgICA0MSw0LDExNCwxNjgsMCwwLDAsMTE0LDEyMywwLDAsMCwxMTQsMzcsMCwwLAorICAgIDAsMTE0LDE2MiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNiwwLDAsMCwxMTQsMTc5LDAsMCwwLDE0OSw0LDAsMCwxMTUsOCwKKyAgICAwLDAsMCwwLDgsMTIsMSw4LDEsNCwxLDEyMiwyMiw4MCw5NywxMTYsCisgICAgMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDQxLDEsNzgsNDEsMiw3OCw3OCw0MSwxLDc4LDQxLDEyLDExNCwKKyAgICAxMDksMCwwLDAsMTE0LDEwOCwwLDAsMCwxMTQsMTEwLDAsMCwwLDExNCwxMTEsCisgICAgMCwwLDAsMTE0LDE4MCwwLDAsMCwxMTQsMjQ5LDAsMCwwLDExNCwyNTQsMCwKKyAgICAwLDAsMTE0LDAsMSwwLDAsMTE0LDEsMSwwLDAsMTE0LDQsMSwwLAorICAgIDAsMTE0LDE3OCwwLDAsMCwxMTQsMTc5LDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwKKyAgICAyNDgsMCwwLDAsMzEsNCwwLDAsMTE1LDIyLDAsMCwwLDgsMiw0LAorICAgIDIsMTIsOCwxMiwxMywxMiwyMiwxMiwxNSwyLDEsMTIsMzEsMiwxLDEyLAorICAgIDIzLDIsMSwxMTQsMjQ4LDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsCisgICAgMCwwLDAsMCwwLDMsMCwwLDAsNjQsMCwwLDAsMTE1LDkwLDAsCisgICAgMCwwLDEwMSwwLDkwLDEsMTAwLDAsOTAsMiwxMDAsMSw5MCwzLDEwMCwyLAorICAgIDEwMCwzLDEzMiwwLDkwLDQsMTAwLDQsMTAwLDUsMTMyLDAsOTAsNSwxMDEsNiwKKyAgICA5MCw3LDEwMCw2LDEwMCw3LDEzMiwwLDkwLDgsMTAwLDgsMTAwLDksMTMyLDAsCisgICAgOTAsOSwxMDAsMTksMTAwLDExLDEwMCwxMiwxMzIsMSw5MCwxMCwxMDAsMTMsMTAwLDE0LAorICAgIDEzMiwwLDkwLDExLDEwMSwxMiwxMDAsMTUsMTAwLDE2LDEzMiwwLDEzMSwxLDkwLDEzLAorICAgIDEwMCwxNywxMDAsMTgsMTMyLDAsOTAsMTQsMTAwLDEwLDgzLDAsNDEsMjAsMjE4LDEwLAorICAgIDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTIyLDE3Miw3MCwxMDUsMTA4LDEwMSwKKyAgICA0NSw5OCw5NywxMTUsMTAxLDEwMCwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMCwxMCwKKyAgICAzMiwzMiwzMiwzMiw3MywxMTAsMTE2LDEwMSwxMTQsOTcsOTksMTE2LDEwNSwxMTEsMTEwLDExNSwKKyAgICAzMiwxMTksMTA1LDExNiwxMDQsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDExNSwKKyAgICAxMjEsMTE1LDExNiwxMDEsMTA5LDMyLDk3LDExNCwxMDEsMzIsOTksOTcsOTksMTA0LDEwMSwxMDAsCisgICAgMzIsMTAyLDExMSwxMTQsMzIsMTEyLDEwMSwxMTQsMTAyLDExMSwxMTQsMTA5LDk3LDExMCw5OSwxMDEsCisgICAgNDQsMzIsOTgsMTAxLDEwNSwxMTAsMTAzLDEwLDMyLDMyLDMyLDMyLDExNCwxMDEsMTAyLDExNCwKKyAgICAxMDEsMTE1LDEwNCwxMDEsMTAwLDMyLDExOSwxMDQsMTAxLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDAsCisgICAgMTA1LDExNCwxMDEsOTksMTE2LDExMSwxMTQsMTIxLDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTEwLAorICAgIDEwMCwxMDEsMTE0LDMyLDEwNSwxMTUsMzIsMTA0LDk3LDExMCwxMDAsMTA4LDEwNSwxMTAsMTAzLDMyLAorICAgIDEwNCw5NywxMTUsMzIsOTgsMTAxLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTA1LDEwMiwxMDUsMTAxLAorICAgIDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw5OSwyLDAsMCwwLDAsMCwwLAorICAgIDAsNSwwLDAsMCw1LDAsMCwwLDcsMCwwLDAsMTE1LDg4LDAsCisgICAgMCwwLDEwMywwLDEyNSwzLDEyMCw0MCwxMjQsMiw2OCwwLDkzLDMyLDkyLDIsCisgICAgMTM3LDAsMTI1LDQsMTI0LDMsMTA2LDAsMTM1LDAsMTAyLDEsMTAwLDEsMTAwLDIsCisgICAgMTMyLDgsMTI0LDQsNjgsMCwxMzEsMSwxMzEsMSwxLDAsMTEzLDEwLDg3LDAsCisgICAgMTI0LDMsMTI0LDAsOTUsMSwxMjQsMSwxMTIsNTgsMTAwLDMsMTI0LDAsOTUsMiwKKyAgICAxMDAsNiwxMjQsMCw5NSwzLDExNiw0LDEzMSwwLDEyNCwwLDk1LDUsMTE2LDQsCisgICAgMTMxLDAsMTI0LDAsOTUsNiwxMDAsNSw4MywwLDQxLDcsMTIyLDE1NCw3MywxMTAsCiAgICAgMTA1LDExNiwxMDUsOTcsMTA4LDEwNSwxMjIsMTAxLDMyLDExOSwxMDUsMTE2LDEwNCwzMiwxMTYsMTA0LAogICAgIDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDExNSwxMDEsOTcsMTE0LDk5LDEwNCwKICAgICAzMiwxMTEsMTEwLDMyLDk3LDExMCwxMDAsMzIsOTcsMzIsMTE4LDk3LDExNCwxMDUsOTcsOTgsCkBAIC0yMTU3LDM3NyArMjAxOCwzNDggQEAKICAgICAzMiwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsCiAgICAgOTcsMTAwLDEwMSwxMTQsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE0LDEwMSw5OSwKICAgICAxMTEsMTAzLDExMCwxMDUsMTIyLDEwMSwxMTUsNDYsOTksMSwwLDAsMCwwLDAsMCwKLSAgICAwLDIsMCwwLDAsMywwLDAsMCw1MSwwLDAsMCwxMTUsMjcsMCwKLSAgICAwLDAsMTI0LDAsMCw5MywxNywwLDEyNSwxLDAsMTI0LDEsMCwxMzYsMCwKLSAgICAwLDEwMiwyLDAsODYsMSwxMTMsMywwLDEwMCwwLDAsODMsNDEsMSw3OCwKLSAgICAxMTQsNCwwLDAsMCw0MSwyLDExNCwyNCwwLDAsMCwxMTQsMjI2LDAsMCwKLSAgICAwLDQxLDEsMTE0LDEyOSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLAotICAgIDAsMCwxMTQsMjI4LDAsMCwwLDE2OCw0LDAsMCwxMTUsMiwwLDAsMCwKLSAgICA2LDAsMTIyLDM4LDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsCi0gICAgOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2MiwKLSAgICA0Niw2MCwxMDMsMTAxLDExMCwxMDEsMTIwLDExMiwxMTQsNjIsMTE0LDYwLDAsMCwwLDExNCwKLSAgICAzMSwwLDAsMCw3OCwxMTQsODksMCwwLDAsNDEsNywxMTQsMTUxLDAsMCwKLSAgICAwLDIxOCw4LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LDExNCwzNywwLDAsMCwKLSAgICAyMTgsMTEsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA5LDExNiwxMDUsMTA5LDEwMSwyMTgsMywxMTUsCi0gICAgMTAxLDExNiwyMTgsMTEsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTksOTcsOTksMTA0LDEwMSwyMTgsCi0gICAgMTksOTUsMTE0LDEwMSwxMDgsOTcsMTIwLDEwMSwxMDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTksCi0gICAgOTcsOTksMTA0LDEwMSw0MSw1LDExNCwxMTAsMCwwLDAsMTE0LDM3LDAsMCwwLAotICAgIDIxOCwxNCwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LDEwMCwxMDEsMTE2LDk3LDEwNSwxMDgsMTE1LAotICAgIDkwLDcsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsMTE0LDE2OCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCw0MSwxLDExNCwxMjksMCwwLDAsMTE0LDYsMCwwLDAsMTE0LAotICAgIDE4NiwwLDAsMCwxNjIsNCwwLDAsMTE1LDE2LDAsMCwwLDAsNCw2LAotICAgIDEsMTksMSwzNiwxLDksMiwxNSwxLDksMSwxMiwxLDEyMiwxOSw3MCwKKyAgICAwLDIsMCwwLDAsMywwLDAsMCw1MSwwLDAsMCwxMTUsMjIsMCwKKyAgICAwLDAsMTI0LDAsOTMsMTQsMTI1LDEsMTI0LDEsMTM2LDAsMTAyLDIsODYsMCwKKyAgICAxLDAsMTEzLDIsMTAwLDAsODMsMCw0MSwxLDc4LDExNCw0LDAsMCwwLAorICAgIDQxLDIsMTE0LDI0LDAsMCwwLDExNCwyMjIsMCwwLDAsNDEsMSwxMTQsMTI0LAorICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwyMjQsMCwKKyAgICAwLDAsMTc4LDQsMCwwLDExNSwyLDAsMCwwLDQsMCwxMjIsMzgsNzAsCiAgICAgMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsCi0gICAgOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMiwKLSAgICAwLDAsMCw2NywwLDAsMCwxMTUsMTMsMCwwLDAsMTAwLDMsMCwxMjQsCi0gICAgMCwwLDk1LDAsMCwxMDAsMiwwLDgzLDQxLDQsMTIyLDMxLDczLDExMCwxMTgsCi0gICAgOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDAsMTA1LDExNCwxMDEsCi0gICAgOTksMTE2LDExMSwxMTQsMTIxLDMyLDEwOSwxMTYsMTA1LDEwOSwxMDEsNDYsMTE0LDMxLDAsMCwKLSAgICAwLDc4LDExNCw4OSwwLDAsMCw0MSwxLDExNCw5LDEsMCwwLDQxLDEsCi0gICAgMTE0LDExMCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNiwwLDAsMCwxMTQsMjUxLDAsMCwwLDE3Niw0LDAsMCwxMTUsMiwwLAotICAgIDAsMCwwLDIsMTIyLDI4LDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsCi0gICAgNDYsMTA1LDExMCwxMTgsOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSw5NSw5OSw5Nyw5OSwxMDQsCi0gICAgMTAxLDExNSw5OSwyLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwyLAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSw1OSwwLDAsMCwxMjQsMCwwLDEwNiwKLSAgICAwLDAsMTI0LDEsMCwxMzEsMSwwLDEyNSwyLDAsMTI0LDIsMCwxMDAsMSwKLSAgICAwLDEwNyw4LDAsMTE0LDM3LDAsMTAwLDEsMCwxMDMsMCwwLDEwMiwyLDAsCi0gICAgODMsMTI0LDIsMCwxMDYsMSwwLDEyNCwyLDAsMTA2LDIsMCwxMTIsNTUsMCwKLSAgICAxMDMsMCwwLDEwMiwyLDAsODMsNDEsMiwxMjIsMTk3LDg0LDExNCwxMjEsMzIsMTE2LAotICAgIDExMSwzMiwxMDIsMTA1LDExMCwxMDAsMzIsOTcsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwKLSAgICAxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsCi0gICAgMTAwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ0LDMyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsCi0gICAgMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsMTAsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLDExMiwxMTEsMTE0LDExNiwxMDUsCi0gICAgMTExLDExMCwxMTUsNDYsMzIsODIsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsNDAsMTA4LDExMSwKLSAgICA5NywxMDAsMTAxLDExNCw0NCwzMiwxMDgsMTA1LDExNSwxMTYsNDUsMTExLDEwMiw0NSwxMTIsMTExLAotICAgIDExNCwxMTYsMTA1LDExMSwxMTAsMTE1LDQxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsCi0gICAgMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NSwxMTUsCi0gICAgMTAxLDMyLDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw0MCw0MSwzMiwxMDUsMTEwLAotICAgIDExNSwxMTYsMTAxLDk3LDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICA3OCw0MSwzLDExNCwxODIsMCwwLDAsMTE0LDEyOSwwLDAsMCwxMTQsMTU4LDAsCi0gICAgMCwwLDQxLDMsMTE0LDExMCwwLDAsMCwxMTQsMTI4LDAsMCwwLDExNCwxNjYsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwKLSAgICAwLDAsMTE0LDEyNiwwLDAsMCwxODIsNCwwLDAsMTE1LDgsMCwwLDAsCi0gICAgMCw3LDE1LDEsMTIsMSwxMCwxLDEyMiwyMiw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsCi0gICAgMTEwLDEwMCwxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LAotICAgIDk5LDYsMCwwLDAsMCwwLDAsMCw3LDAsMCwwLDcsMCwwLAotICAgIDAsNjcsMCwwLDAsMTE1LDQwLDAsMCwwLDEyNCwxLDAsMTI0LDIsMCwKLSAgICAxMjQsMywwLDEzMSwyLDAsMTI1LDYsMCwxMTYsMCwwLDEyNCwyLDAsMTI0LAotICAgIDMsMCwxMDAsMSwwLDEyNCw2LDAsMTAwLDIsMCwxMjQsNCwwLDEzMSwyLAotICAgIDIsODMsNDEsMyw3OCwxMTQsMTI5LDAsMCwwLDExNCwxNTgsMCwwLDAsNDEsCi0gICAgMSwxMTQsMTY5LDAsMCwwLDQxLDcsMTE0LDExMCwwLDAsMCwxMTQsMTY3LDAsCi0gICAgMCwwLDExNCwxMjgsMCwwLDAsMTE0LDM3LDAsMCwwLDkwLDQsMTE1LDEwOSwKLSAgICAxMTUsMTA4LDExNCwxODEsMCwwLDAsMTE0LDEyOSwwLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsNiwxLDAsMCwKLSAgICAxOTQsNCwwLDAsMTE1LDYsMCwwLDAsMCwxLDE1LDEsMTgsMSwxMjIsCi0gICAgMjAsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMDMsMTAxLDExNiwKLSAgICA5NSwxMTUsMTEyLDEwMSw5OSw3OCw5OSwzLDAsMCwwLDAsMCwwLDAsMTQsCi0gICAgMCwwLDAsMTUsMCwwLDAsNjcsMCwwLDAsMTE1LDIzNCwxLDAsMCwKLSAgICAxMDAsMSwwLDEyNSwzLDAsMTI0LDEsMCwxMDYsMCwwLDEwMCwyLDAsMTMxLAotICAgIDEsMCwxMDAsMywwLDI1LDEyNSw0LDAsMTIxLDM0LDAsMTE2LDEsMCwxMjQsCi0gICAgMCwwLDEwNiwyLDAsMTEyLDQ5LDAsMTE2LDMsMCwxMDYsNCwwLDEzMSwwLAotICAgIDAsMTMxLDEsMCwxMDYsNSwwLDEyNSw1LDAsODcsMTEwLDI0LDAsNCwxMTYsCi0gICAgNiwwLDEwNywxMCwwLDExNCw4NSwwLDEsMSwxLDEwMCwxMCwwLDEyNSw1LAotICAgIDAsODksMTEwLDEsMCw4OCwxMjQsNSwwLDEyNCwwLDAsMTA2LDcsMCwxMDcsCi0gICAgMywwLDExNCwxMjAsMCwxMjQsMCwwLDEwNiw4LDAsMTMxLDAsMCwxLDEyNCwKLSAgICA1LDAsMTI0LDAsMCw5NSw3LDAsMTE2LDksMCwxMzEsMCwwLDExNCwxNTMsCi0gICAgMCwxMjQsMCwwLDEwNiwxMCwwLDEyNSw2LDAsMTI0LDQsMCwxMDYsMTEsMCwKLSAgICAxMzEsMCwwLDEyNSw3LDAsMTEwLDE1LDAsMTI0LDAsMCwxMDYsMTIsMCwxMjUsCi0gICAgNiwwLDEyNCw0LDAsMTI1LDcsMCwxMjQsNywwLDEyNCw2LDAsMTA3LDYsCi0gICAgMCwxMTQsNDUsMSwxMTYsMTMsMCwxMjQsMCwwLDEwNiwyLDAsMTI0LDQsMCwKLSAgICAxMzEsMiwwLDEyNSw4LDAsMTIwLDEwMCwwLDEyNCwwLDAsMTA2LDE0LDAsNjgsCi0gICAgOTMsNzcsMCw5MiwyLDAsMTI1LDksMCwxMjUsMTAsMCwxMDAsNSwwLDEyNCwKLSAgICA5LDAsMjMsMTI1LDExLDAsMTE2LDEzLDAsMTI0LDgsMCwxMjQsMTEsMCwxMzEsCi0gICAgMiwwLDEyNSwxMiwwLDExNiwxNSwwLDEyNCwxMiwwLDEzMSwxLDAsMTE0LDIwOCwKLSAgICAwLDEyNCwwLDAsMTA2LDE2LDAsMTI0LDEwLDAsMTI0LDEsMCwxMjQsMTIsMCwKLSAgICAxMjQsOCwwLDEwMywxLDAsMTI0LDIsMCwxMzEsNSwwLDgzLDExMywyMDgsMCwKLSAgICA4NywxMTYsMTcsMCwxMjQsOCwwLDEzMSwxLDAsMTI1LDMsMCwxMjAsMTIzLDAsCi0gICAgMTI0LDAsMCwxMDYsMTQsMCw2OCw5MywxMTIsMCw5MiwyLDAsMTI1LDksMCwKLSAgICAxMjUsMTAsMCwxMTYsMTMsMCwxMjQsMCwwLDEwNiwyLDAsMTI0LDQsMCwxMjQsCi0gICAgOSwwLDIzLDEzMSwyLDAsMTI1LDEyLDAsMTE2LDE4LDAsMTAwLDYsMCwxMDYsCi0gICAgMTksMCwxMjQsMTIsMCwxMzEsMSwwLDEwMCw3LDAsMTAwLDMsMCwxMzEsMSwKLSAgICAxLDEsMTI0LDcsMCwxMjQsOSwwLDIzLDEyNCw2LDAsMTA3LDYsMCwxMTQsCi0gICAgNTUsMSwxMTYsMTUsMCwxMjQsMTIsMCwxMzEsMSwwLDExNCw1NSwxLDEyNCwwLAotICAgIDAsMTA2LDE2LDAsMTI0LDEwLDAsMTI0LDEsMCwxMjQsMTIsMCwxMDAsOCwwLAotICAgIDEyNCwyLDAsMTMxLDUsMCw4MywxMTMsNTUsMSw4NywxMjQsMywwLDExNCwyMzAsCi0gICAgMSwxMTYsMTgsMCwxMDAsOSwwLDEwNiwxOSwwLDEyNCw4LDAsMTMxLDEsMCwKLSAgICAxMzEsMSwwLDEsMTE2LDIwLDAsMTA2LDIxLDAsMTI0LDEsMCwxMDAsOCwwLAotICAgIDEzMSwyLDAsMTI1LDEzLDAsMTI0LDgsMCwxMDMsMSwwLDEyNCwxMywwLDk1LAotICAgIDIyLDAsMTI0LDEzLDAsODMsMTAwLDgsMCw4Myw0MSwxMSwxMjIsMTAyLDg0LDExNCwKLSAgICAxMjEsMzIsMTE2LDExMSwzMiwxMDIsMTA1LDExMCwxMDAsMzIsOTcsMzIsMTE1LDExMiwxMDEsOTksCi0gICAgMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsCi0gICAgMTAxLDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwzMiwzMiw4MiwxMDEsMTE2LDExNywKLSAgICAxMTQsMTEwLDExNSwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAxMDksOTcsMTE2LDk5LDEwNCwxMDUsMTEwLDEwMywzMiwxMTUsMTEyLDEwMSw5OSw0NCwzMiwxMTEsCi0gICAgMTE0LDMyLDc4LDExMSwxMTAsMTAxLDMyLDEwNSwxMDIsMzIsMTEwLDExMSwxMTYsMzIsMTAyLDExMSwKLSAgICAxMTcsMTEwLDEwMCw0Niw3MCwxMTQsNjAsMCwwLDAsMTE0LDU4LDAsMCwwLDExNCwKLSAgICAzMSwwLDAsMCwxMTQsMTg2LDAsMCwwLDEyMiw5LDExNiwxMTQsMTIxLDEwNSwxMTAsCi0gICAgMTAzLDMyLDEyMywxMjUsMTE0LDEwMCwwLDAsMCw3OCwxMjIsMjUsMTEyLDExMSwxMTUsMTE1LAotICAgIDEwNSw5OCwxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDMyLDEwMiwKLSAgICAxMTEsMTE0LDMyLDEyMywxMjUsMTE0LDg5LDAsMCwwLDQxLDIzLDExNCwzNCwwLDAsCi0gICAgMCwxMTQsNDEsMCwwLDAsMTE0LDM3LDAsMCwwLDExNCwzLDAsMCwwLAotICAgIDExNCw0NywwLDAsMCwxMTQsMjIwLDAsMCwwLDExNCw0MiwwLDAsMCwxMTQsCi0gICAgOSwxLDAsMCwyMTgsMTEsOTUsMTAyLDEwNSwxMDgsMTA4LDk1LDk5LDk3LDk5LDEwNCwKLSAgICAxMDEsMTE0LDcsMCwwLDAsMTE0LDEyLDEsMCwwLDExNCw5MCwwLDAsMCwKLSAgICAxMTQsMTEsMSwwLDAsMTE0LDMwLDAsMCwwLDExNCw4LDEsMCwwLDExNCwKLSAgICA0NiwwLDAsMCwxMTQsNiwxLDAsMCwxMTQsNDgsMCwwLDAsMTE0LDEwNywKLSAgICAwLDAsMCwxMTQsNDksMCwwLDAsMTE0LDEyMywwLDAsMCwxMTQsMTYyLDAsCi0gICAgMCwwLDExNCwxNTgsMCwwLDAsNDEsMTQsMTE0LDExMCwwLDAsMCwxMTQsMTI4LAotICAgIDAsMCwwLDExNCwxODEsMCwwLDAsOTAsMTIsMTA1LDExNSw5NSwxMTAsOTcsMTA5LAotICAgIDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw5MCwxMSwxMTYsOTcsMTA1LDEwOCw5NSwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSwxMTQsMTM1LDAsMCwwLDkwLDUsOTksOTcsOTksMTA0LDEwMSw5MCwKLSAgICAxMiw5OSw5Nyw5OSwxMDQsMTAxLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDkwLDksOTgsCi0gICAgOTcsMTE1LDEwMSw5NSwxMTIsOTcsMTE2LDEwNCwxMTQsMjI2LDAsMCwwLDExNCwxNjcsMCwKLSAgICAwLDAsOTAsMTMsMTA1LDExMCwxMDUsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LAotICAgIDEwMSw5MCw5LDEwMiwxMTcsMTA4LDEwOCw5NSwxMTIsOTcsMTE2LDEwNCwxMTQsMTY2LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLAotICAgIDExNCwxODIsMCwwLDAsMTk5LDQsMCwwLDExNSw2OCwwLDAsMCwwLDMsCi0gICAgNiwxLDE5LDEsMywxLDM0LDEsMTMsMSwxMSwxLDE1LDEsMTAsMSwKLSAgICA5LDIsOSwxLDksMSwxNSwyLDksMSw2LDIsMTIsMSwxOCwxLAotICAgIDIyLDEsMTAsMSwxNSwxLDEyLDEsMzIsNCwxMiwyLDIyLDEsMjIsMSwKLSAgICAyNSwxLDE2LDEsMTIsMSwyOSwxLDYsMSwxOSwxLDE4LDEsMTIsMSwKLSAgICA0LDEsMTIyLDIwLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTAyLAotICAgIDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDk5LDEsMCwwLDAsMCwwLDAsCi0gICAgMCw5LDAsMCwwLDEzLDAsMCwwLDY3LDAsMCwwLDExNSwxMSwxLAotICAgIDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI1LDEsMCwxMjEsMzEsMCwxMTYsMSwKLSAgICAwLDEwNiwyLDAsMTI0LDEsMCwxMTIsMzMsMCwxMTYsMSwwLDEwNiwzLDAsCi0gICAgMTMxLDAsMCwxMzEsMSwwLDEyNSwyLDAsODcsMTEwLDMzLDAsNCwxMTYsNCwKLSAgICAwLDExNiw1LDAsMTE2LDYsMCwxMDIsMywwLDEwNywxMCwwLDExNCw3NSwwLAotICAgIDEsMSwxLDEwMywwLDAsMTI1LDIsMCw4OSwxMTAsMSwwLDg4LDExNiw3LAotICAgIDAsMTA2LDgsMCwxMDYsOSwwLDEwMCwxLDAsMTMxLDEsMCwxMTUsMTEyLDAsCi0gICAgMTE2LDEwLDAsMTI0LDIsMCwxMzEsMSwwLDEyNCwwLDAsOTUsMTEsMCwxMTAsCi0gICAgMTExLDAsMTE2LDEwLDAsMTMxLDAsMCwxMjUsMywwLDEyMCw5MCwwLDEyNCwyLAotICAgIDAsNjgsOTMsODIsMCwxMjUsNCwwLDEyNCw0LDAsMTA2LDEyLDAsMTAwLDIsCi0gICAgMCwxMzEsMSwwLDkyLDMsMCwxMjUsNSwwLDEyNSw2LDAsMTI1LDcsMCwKLSAgICAxMjQsNiwwLDExNCwxOTEsMCwxMDAsMywwLDEwNiwxMywwLDEyNCw1LDAsMTI0LAotICAgIDcsMCwxMDYsMTQsMCwxMzEsMCwwLDEzMSwyLDAsMTI1LDgsMCwxMTAsNiwKLSAgICAwLDEyNCw1LDAsMTI1LDgsMCwxMjQsMywwLDEwNiwxNSwwLDEyNCw4LDAsCi0gICAgMTMxLDEsMCwxLDExMywxMjgsMCw4NywxMjQsMywwLDEyNCwwLDAsOTUsMTEsCi0gICAgMCwxMTYsNywwLDEwNiw4LDAsMTA2LDksMCwxMTYsMTYsMCwxMzEsMSwwLAotICAgIDExNCw3LDEsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsMTI0LDIsMCw2OCwKLSAgICAxMzEsMSwwLDEyNCwwLDAsOTUsMTcsMCwxMDAsNiwwLDgzLDQxLDcsMTIyLAotICAgIDY4LDcwLDEwNSwxMDgsMTA4LDMyLDExNiwxMDQsMTAxLDMyLDk5LDk3LDk5LDEwNCwxMDEsMzIsCi0gICAgMTExLDEwMiwzMiwxMTIsMTExLDExNiwxMDEsMTEwLDExNiwxMDUsOTcsMTA4LDMyLDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDExNSwzMiw5NywxMTAsMTAwLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwKLSAgICAxMTUsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwKLSAgICAxMTYsMTExLDExNCwxMjEsNDYsMTE0LDAsMCwwLDAsMTE0LDYwLDAsMCwwLDEyMiwKLSAgICA1LDEyMywxMjUsNDYsMTIzLDEyNSw5OSwxLDAsMCwwLDAsMCwwLDAsMiwKLSAgICAwLDAsMCwzLDAsMCwwLDgzLDAsMCwwLDExNSwyOCwwLDAsMCwKLSAgICAxMDQsMCwwLDEyNCwwLDAsOTMsMTgsMCwxMjUsMSwwLDEyNCwxLDAsMTA2LAotICAgIDAsMCwxMzEsMCwwLDE0NiwyLDAsMTEzLDYsMCw4MywxMTQsNCwwLDAsCi0gICAgMCw0MSwxLDExNCw5MCwwLDAsMCw0MSwyLDExNCwyNCwwLDAsMCw5MCwKKyAgICA5NSw5NSw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsNjAsMTAzLDEwMSwxMTAsCisgICAgMTAxLDEyMCwxMTIsMTE0LDYyLDExNCw2MSwwLDAsMCwxMTQsMzEsMCwwLDAsNzgsCisgICAgMTE0LDkxLDAsMCwwLDQxLDcsMTE0LDE0NywwLDAsMCwyMTgsOCw5NSwxMDgsCisgICAgMTExLDk3LDEwMCwxMDEsMTE0LDExNSwxMTQsMzcsMCwwLDAsMjE4LDExLDk1LDExMiw5NywKKyAgICAxMTYsMTA0LDk1LDEwOSwxMTYsMTA1LDEwOSwxMDEsMjE4LDMsMTE1LDEwMSwxMTYsMjE4LDExLDk1LAorICAgIDExMiw5NywxMTYsMTA0LDk1LDk5LDk3LDk5LDEwNCwxMDEsMjE4LDE5LDk1LDExNCwxMDEsMTA4LAorICAgIDk3LDEyMCwxMDEsMTAwLDk1LDExMiw5NywxMTYsMTA0LDk1LDk5LDk3LDk5LDEwNCwxMDEsNDEsCisgICAgNSwxMTQsMTA0LDAsMCwwLDExNCwzNywwLDAsMCwyMTgsMTQsMTA4LDExMSw5NywKKyAgICAxMDAsMTAxLDExNCw5NSwxMDAsMTAxLDExNiw5NywxMDUsMTA4LDExNSw5MCw3LDEwOCwxMTEsOTcsCisgICAgMTAwLDEwMSwxMTQsMTE1LDExNCwxNjQsMCwwLDAsMTE0LDQsMCwwLDAsNDEsMSwKKyAgICAxMTQsMTI0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxODIsMCwwLDAsMTcyLAorICAgIDQsMCwwLDExNSwxNiwwLDAsMCwwLDQsNCwxLDE0LDEsMjgsMSwKKyAgICA2LDIsMTAsMSw2LDEsOCwxLDEyMiwxOSw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsCisgICAgMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw5OSwxLDAsCisgICAgMCwwLDAsMCwwLDAsMSwwLDAsMCwyLDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSwxMCwwLDAsMCwxMDAsMywxMjQsMCw5NSwwLDEwMCwyLDgzLAorICAgIDAsNDEsNCwxMjIsMzEsNzMsMTEwLDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwxMjEsMzIsMTA5LDExNiwKKyAgICAxMDUsMTA5LDEwMSw0NiwxMTQsMzEsMCwwLDAsNzgsMTE0LDkxLDAsMCwwLDQxLAorICAgIDEsMTE0LDcsMSwwLDAsNDEsMSwxMTQsMTA0LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwyNDksMCwwLAorICAgIDAsMTg2LDQsMCwwLDExNSwyLDAsMCwwLDAsMiwxMjIsMjgsNzAsMTA1LAorICAgIDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMDUsMTEwLDExOCw5NywxMDgsMTA1LDEwMCwKKyAgICA5NywxMTYsMTAxLDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE1LDk5LDIsMCwwLDAsMCwKKyAgICAwLDAsMCwzLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LAorICAgIDQyLDAsMCwwLDEyNCwwLDEwNiwwLDEyNCwxLDEzMSwxLDEyNSwyLDEyNCwyLAorICAgIDEwMCwxLDEwNyw4LDExNCwyNiwxMDAsMSwxMDMsMCwxMDIsMiw4MywwLDEyNCwyLAorICAgIDEwNiwxLDEyNCwyLDEwNiwyLDExMiwzOCwxMDMsMCwxMDIsMiw4MywwLDQxLDIsCisgICAgMTIyLDE5Nyw4NCwxMTQsMTIxLDMyLDExNiwxMTEsMzIsMTAyLDEwNSwxMTAsMTAwLDMyLDk3LDMyLAorICAgIDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LAorICAgIDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwKKyAgICAzMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksCisgICAgMTAxLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLAorICAgIDEwMSwzMiwxMTIsMTExLDExNCwxMTYsMTA1LDExMSwxMTAsMTE1LDQ2LDMyLDgyLDEwMSwxMTYsMTE3LAorICAgIDExNCwxMTAsMTE1LDMyLDQwLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNDQsMzIsMTA4LDEwNSwxMTUsCisgICAgMTE2LDQ1LDExMSwxMDIsNDUsMTEyLDExMSwxMTQsMTE2LDEwNSwxMTEsMTEwLDExNSw0MSw0NiwxMCwKKyAgICAxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDksMTAxLAorICAgIDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LAorICAgIDEwMSwxMDAsNDYsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwKKyAgICAxMDEsOTksNDAsNDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsNDYsMTAsMTAsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsNDEsMywxMTQsMTc4LDAsMCwwLDExNCwKKyAgICAxMjQsMCwwLDAsMTE0LDE1NCwwLDAsMCw0MSwzLDExNCwxMDQsMCwwLDAsCisgICAgMTE0LDEyMywwLDAsMCwxMTQsMTYyLDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxMjEsMCwwLDAsMTkyLDQsCisgICAgMCwwLDExNSw4LDAsMCwwLDAsNywxMCwxLDgsMSw4LDEsMTIyLAorICAgIDIyLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLAorICAgIDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTksNiwwLDAsMCwwLDAsMCwwLAorICAgIDcsMCwwLDAsNiwwLDAsMCw2NywwLDAsMCwxMTUsMjYsMCwwLAorICAgIDAsMTI0LDEsMTI0LDIsMTI0LDMsMTMxLDIsMTI1LDYsMTE2LDAsMTI0LDIsMTI0LAorICAgIDMsMTI0LDYsMTI0LDQsMTAwLDEsMTQxLDQsODMsMCw0MSwyLDc4LDQxLDIsCisgICAgMTE0LDEyNCwwLDAsMCwxMTQsMTU0LDAsMCwwLDQxLDEsMTE0LDE2NSwwLDAsCisgICAgMCw0MSw3LDExNCwxMDQsMCwwLDAsMTE0LDE2MywwLDAsMCwxMTQsMTIzLDAsCisgICAgMCwwLDExNCwzNywwLDAsMCw5MCw0LDExNSwxMDksMTE1LDEwOCwxMTQsMTc3LDAsCisgICAgMCwwLDExNCwxMjQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLAorICAgIDAsMTE0LDYsMCwwLDAsMTE0LDQsMSwwLDAsMjA0LDQsMCwwLDExNSwKKyAgICA2LDAsMCwwLDAsMSwxMCwxLDgsMSwxMjIsMjAsNzAsMTA1LDEwOCwxMDEsCisgICAgNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMDMsMTAxLDExNiw5NSwxMTUsMTEyLDEwMSw5OSwKKyAgICA3OCw5OSwzLDAsMCwwLDAsMCwwLDAsMTQsMCwwLDAsMTUsMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDk4LDEsMCwwLDEwMCwxLDEyNSwzLDEyNCwKKyAgICAxLDEwNiwwLDEwMCwyLDEzMSwxLDEwMCwzLDI1LDAsMTI1LDQsMTIxLDI0LDExNiwKKyAgICAxLDEyNCwwLDEwNiwyLDExMiwzNCwxMTYsMywxMDYsNCwxMzEsMCwxMzEsMSwxMDYsCisgICAgNSwxMjUsNSw4NywwLDExMCwyNCw0LDAsMTE2LDYsMTA3LDEwLDExNCw2NiwxLAorICAgIDAsMSwwLDEsMCwxMDAsMTAsMTI1LDUsODksMCwxMTAsMiw4OCwwLDEyNCwKKyAgICA1LDEyNCwwLDEwNiw3LDEwNywzLDExNCw5MiwxMjQsMCwxMDYsOCwxMzEsMCwxLAorICAgIDAsMTI0LDUsMTI0LDAsOTUsNywxMTYsOSwxMzEsMCwxMTQsMTE0LDEyNCwwLDEwNiwKKyAgICAxMCwxMjUsNiwxMjQsNCwxMDYsMTEsMTMxLDAsMTI1LDcsMTEwLDEwLDEyNCwwLDEwNiwKKyAgICAxMiwxMjUsNiwxMjQsNCwxMjUsNywxMjQsNywxMjQsNiwxMDcsNiwxMTQsMjE4LDExNiwKKyAgICAxMywxMjQsMCwxMDYsMiwxMjQsNCwxMzEsMiwxMjUsOCwxMjAsNzIsMTI0LDAsMTA2LAorICAgIDE0LDY4LDAsOTMsNTQsOTIsMiwxMjUsOSwxMjUsMTAsMTAwLDUsMTI0LDksMjMsCisgICAgMCwxMjUsMTEsMTE2LDEzLDEyNCw4LDEyNCwxMSwxMzEsMiwxMjUsMTIsMTE2LDE1LDEyNCwKKyAgICAxMiwxMzEsMSwxMTQsMTUyLDEyNCwwLDEwNiwxNiwxMjQsMTAsMTI0LDEsMTI0LDEyLDEyNCwKKyAgICA4LDEwMywxLDEyNCwyLDEzMSw1LDgzLDAsMTEzLDE1Miw4NywwLDExNiwxNywxMjQsCisgICAgOCwxMzEsMSwxMjUsMywxMjAsODgsMTI0LDAsMTA2LDE0LDY4LDAsOTMsNzgsOTIsCisgICAgMiwxMjUsOSwxMjUsMTAsMTE2LDEzLDEyNCwwLDEwNiwyLDEyNCw0LDEyNCw5LDIzLAorICAgIDAsMTMxLDIsMTI1LDEyLDExNiwxOCwxMDYsMTksMTAwLDYsMTI0LDEyLDEwMCwzLDEwMCwKKyAgICA3LDE0MSwzLDEsMCwxMjQsNywxMjQsOSwyMywwLDEyNCw2LDEwNyw2LDExNCwKKyAgICAyMjYsMTE2LDE1LDEyNCwxMiwxMzEsMSwxMTQsMjI2LDEyNCwwLDEwNiwxNiwxMjQsMTAsMTI0LAorICAgIDEsMTI0LDEyLDEwMCw4LDEyNCwyLDEzMSw1LDgzLDAsMTEzLDIyNiw4NywwLDEyNCwKKyAgICAzLDE0NCwxLDExNCw5NCwxMTYsMTgsMTA2LDE5LDEwMCw5LDEyNCw4LDEzMSwyLDEsCisgICAgMCwxMTYsMTgsMTA2LDIwLDEyNCwxLDEwMCw4LDEzMSwyLDEyNSwxMywxMjQsOCwxMDMsCisgICAgMSwxMjQsMTMsOTUsMjEsMTI0LDEzLDgzLDAsMTAwLDgsODMsMCw0MSwxMSwxMjIsCisgICAgMTExLDg0LDExNCwxMjEsMzIsMTE2LDExMSwzMiwxMDIsMTA1LDExMCwxMDAsMzIsOTcsMzIsMTE1LAorICAgIDExMiwxMDEsOTksMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksCisgICAgMTA1LDEwMiwxMDUsMTAxLDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiwxMTYsCisgICAgMTA0LDEwMSwzMiwxMDksOTcsMTE2LDk5LDEwNCwxMDUsMTEwLDEwMywzMiwxMTUsMTEyLDEwMSw5OSwKKyAgICA0NCwzMiwxMTEsMTE0LDMyLDc4LDExMSwxMTAsMTAxLDMyLDEwNSwxMDIsMzIsMTEwLDExMSwxMTYsCisgICAgMzIsMTAyLDExMSwxMTcsMTEwLDEwMCw0NiwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICA3MCwxMTQsNjEsMCwwLDAsMTE0LDU5LDAsMCwwLDExNCwzMSwwLDAsMCwKKyAgICAxMTQsMTgyLDAsMCwwLDEyMiw5LDExNiwxMTQsMTIxLDEwNSwxMTAsMTAzLDMyLDEyMywxMjUsCisgICAgNDEsMSw5MCw5LDExOCwxMDEsMTE0LDk4LDExMSwxMTUsMTA1LDExNiwxMjEsNzgsMTIyLDI1LAorICAgIDExMiwxMTEsMTE1LDExNSwxMDUsOTgsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LAorICAgIDk5LDEwMSwzMiwxMDIsMTExLDExNCwzMiwxMjMsMTI1LDExNCw5MSwwLDAsMCw0MSwyMiwKKyAgICAxMTQsMzQsMCwwLDAsMTE0LDQxLDAsMCwwLDExNCwzNywwLDAsMCwxMTQsCisgICAgMywwLDAsMCwxMTQsNDcsMCwwLDAsMTE0LDIxNiwwLDAsMCwxMTQsNDIsCisgICAgMCwwLDAsMTE0LDcsMSwwLDAsMjE4LDExLDk1LDEwMiwxMDUsMTA4LDEwOCw5NSwKKyAgICA5OSw5Nyw5OSwxMDQsMTAxLDExNCw3LDAsMCwwLDExNCwxMCwxLDAsMCwxMTQsCisgICAgOTIsMCwwLDAsMTE0LDksMSwwLDAsMTE0LDMwLDAsMCwwLDExNCw2LAorICAgIDEsMCwwLDExNCw0NiwwLDAsMCwxMTQsNCwxLDAsMCwxMTQsNDgsMCwKKyAgICAwLDAsMTE0LDExOCwwLDAsMCwxMTQsMTMzLDAsMCwwLDExNCwxNTgsMCwwLAorICAgIDAsMTE0LDE1NCwwLDAsMCw0MSwxNCwxMTQsMTA0LDAsMCwwLDExNCwxMjMsMCwKKyAgICAwLDAsMTE0LDE3NywwLDAsMCw5MCwxMiwxMDUsMTE1LDk1LDExMCw5NywxMDksMTAxLAorICAgIDExNSwxMTIsOTcsOTksMTAxLDkwLDExLDExNiw5NywxMDUsMTA4LDk1LDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDExNCwxMzAsMCwwLDAsOTAsNSw5OSw5Nyw5OSwxMDQsMTAxLDkwLDEyLAorICAgIDk5LDk3LDk5LDEwNCwxMDEsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsOSw5OCw5NywKKyAgICAxMTUsMTAxLDk1LDExMiw5NywxMTYsMTA0LDExNCwyMjIsMCwwLDAsMTE0LDE2MywwLDAsCisgICAgMCw5MCwxMywxMDUsMTEwLDEwNSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLAorICAgIDkwLDksMTAyLDExNywxMDgsMTA4LDk1LDExMiw5NywxMTYsMTA0LDExNCwxNjIsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LAorICAgIDE3OCwwLDAsMCwyMDksNCwwLDAsMTE1LDcwLDAsMCwwLDAsNSw0LAorICAgIDEsMTQsMSwyLDEsMjQsMSwxNCwxLDEwLDEsMTAsMSw4LDEsNiwKKyAgICAyLDYsMSw2LDEsMTAsMiw2LDEsNCwyLDgsMSwxMiwxLDE2LAorICAgIDEsOCwxLDEwLDEsOCwxLDI0LDQsOCwyLDE2LDEsMTYsMSwxNiwKKyAgICAxLDEyLDEsOCwxLDEwLDEsMTIsMSw2LDEsMTIsMSwxMiwxLDgsCisgICAgMSw0LDEsMTIyLDIwLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsCisgICAgMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDk5LDEsMCwwLDAsMCwwLAorICAgIDAsMCw5LDAsMCwwLDEzLDAsMCwwLDY3LDAsMCwwLDExNSwxOTQsCisgICAgMCwwLDAsMTI0LDAsMTA2LDAsMTI1LDEsMTIxLDIyLDExNiwxLDEwNiwyLDEyNCwKKyAgICAxLDExMiwyMiwxMTYsMSwxMDYsMywxMzEsMCwxMzEsMSwxMjUsMiw4NywwLDExMCwKKyAgICAzMCw0LDAsMTE2LDQsMTE2LDUsMTE2LDYsMTAyLDMsMTA3LDEwLDExNCw1OCwxLAorICAgIDAsMSwwLDEsMCwxMDMsMCwxMjUsMiw4OSwwLDExMCwyLDg4LDAsMTE2LAorICAgIDcsMTA2LDgsMTA2LDksMTAwLDEsMTMxLDEsMTE1LDg0LDExNiwxMCwxMjQsMiwxMzEsCisgICAgMSwxMjQsMCw5NSwxMSwxMTAsNzgsMTE2LDEwLDEzMSwwLDEyNSwzLDEyMCw2NCwxMjQsCisgICAgMiw2OCwwLDkzLDU2LDEyNSw0LDEyNCw0LDEwNiwxMiwxMDAsMiwxMzEsMSw5MiwKKyAgICAzLDEyNSw1LDEyNSw2LDEyNSw3LDEyNCw2LDExNCwxMzgsMTAwLDMsMTA2LDEzLDEyNCwKKyAgICA1LDEyNCw3LDEwNiwxNCwxMzEsMCwxMzEsMiwxMjUsOCwxMTAsNCwxMjQsNSwxMjUsCisgICAgOCwxMjQsMywxMDYsMTUsMTI0LDgsMTMxLDEsMSwwLDExMyw5Niw4NywwLDEyNCwKKyAgICAzLDEyNCwwLDk1LDExLDExNiw3LDEwNiw4LDEwNiw5LDExNiwxNiwxMzEsMSwxMTQsCisgICAgMTkwLDEwMCw0LDEwMCw1LDEzMiwwLDEyNCwyLDY4LDAsMTMxLDEsMTI0LDAsOTUsCisgICAgMTcsMTAwLDYsODMsMCw0MSw3LDEyMiw2OCw3MCwxMDUsMTA4LDEwOCwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiw5OSw5Nyw5OSwxMDQsMTAxLDMyLDExMSwxMDIsMzIsMTEyLDExMSwxMTYsMTAxLDExMCwKKyAgICAxMTYsMTA1LDk3LDEwOCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsMTEwLDEwMCwKKyAgICAzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsCisgICAgMTA1LDExNSwzMiwxMDAsMTA1LDExNCwxMDEsOTksMTE2LDExMSwxMTQsMTIxLDQ2LDExNCwwLDAsCisgICAgMCwwLDExNCw2MSwwLDAsMCwxMjIsNSwxMjMsMTI1LDQ2LDEyMywxMjUsOTksMSwKKyAgICAwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywwLDAsMCw4MywKKyAgICAwLDAsMCwxMTUsMjAsMCwwLDAsMTA0LDAsMTI0LDAsOTMsMTIsMTI1LDEsCisgICAgMTI0LDEsMTA2LDAsMTMxLDAsMTQ2LDIsMTEzLDQsODMsMCwxMTQsNCwwLDAsCisgICAgMCw0MSwxLDExNCw5MiwwLDAsMCw0MSwyLDExNCwyNCwwLDAsMCw5MCwKICAgICAyLDEwMiwxMTAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwKLSAgICAwLDAsMjUwLDksNjAsMTE1LDEwMSwxMTYsOTksMTExLDEwOSwxMTIsNjIsMTcsNSwwLAotICAgIDAsMTE1LDIsMCwwLDAsOSwwLDEyMiw0MSw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsCisgICAgMCwwLDI1MCw5LDYwLDExNSwxMDEsMTE2LDk5LDExMSwxMDksMTEyLDYyLDMwLDUsMCwKKyAgICAwLDExNSwyLDAsMCwwLDYsMCwxMjIsNDEsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LAogICAgIDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMDIsMTA1LDEwOCwxMDgsOTUsOTksOTcsOTksMTA0LDEwMSwKICAgICA0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsNjAsMTE1LDEwMSwxMTYsOTksMTExLAogICAgIDEwOSwxMTIsNjIsNzgsNDEsMTgsMTE0LDM3LDAsMCwwLDExNCwzLDAsMCwwLAotICAgIDkwLDcsMTA4LDEwNSwxMTUsMTE2LDEwMCwxMDUsMTE0LDExNCw0NywwLDAsMCwxMTQsMSwKLSAgICAxLDAsMCwyMTgsMTUsODAsMTAxLDExNCwxMDksMTA1LDExNSwxMTUsMTA1LDExMSwxMTAsNjksCisgICAgOTAsNywxMDgsMTA1LDExNSwxMTYsMTAwLDEwNSwxMTQsMTE0LDQ3LDAsMCwwLDExNCwyNTUsCisgICAgMCwwLDAsMjE4LDE1LDgwLDEwMSwxMTQsMTA5LDEwNSwxMTUsMTE1LDEwNSwxMTEsMTEwLDY5LAogICAgIDExNCwxMTQsMTExLDExNCwyMTgsMTgsNzgsMTExLDExNiw2NSw2OCwxMDUsMTE0LDEwMSw5OSwxMTYsCiAgICAgMTExLDExNCwxMjEsNjksMTE0LDExNCwxMTEsMTE0LDExNCw4LDAsMCwwLDExNCw5LDAsCi0gICAgMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMSwwLDAsMTE0LDExLDEsMCwKLSAgICAwLDExNCw4NSwwLDAsMCwxMTQsNDksMCwwLDAsMTE0LDkwLDAsMCwwLAotICAgIDIxOCwzLDk3LDEwMCwxMDAsMTE0LDExLDAsMCwwLDExNCwxMiwxLDAsMCw0MSwKLSAgICA5LDExNCwxMTAsMCwwLDAsMTE0LDM3LDAsMCwwLDkwLDgsOTksMTExLDExMCwKKyAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCw4LDEsMCwwLDExNCw5LDEsMCwKKyAgICAwLDExNCw4NywwLDAsMCwxMTQsNTAsMCwwLDAsMTE0LDkyLDAsMCwwLAorICAgIDIxOCwzLDk3LDEwMCwxMDAsMTE0LDExLDAsMCwwLDExNCwxMCwxLDAsMCw0MSwKKyAgICA5LDExNCwxMDQsMCwwLDAsMTE0LDM3LDAsMCwwLDkwLDgsOTksMTExLDExMCwKICAgICAxMTYsMTAxLDExMCwxMTYsMTE1LDkwLDIxLDEwOCwxMTEsMTE5LDEwMSwxMTQsOTUsMTE1LDExNywxMDIsCi0gICAgMTAyLDEwNSwxMjAsOTUsOTksMTExLDExMCwxMTYsMTAxLDExMCwxMTYsMTE1LDExNCwyNDYsMCwwLAotICAgIDAsMTE0LDEwOCwwLDAsMCwxMTQsMjM4LDAsMCwwLDExNCwyMjYsMCwwLDAsCisgICAgMTAyLDEwNSwxMjAsOTUsOTksMTExLDExMCwxMTYsMTAxLDExMCwxMTYsMTE1LDExNCwyNDQsMCwwLAorICAgIDAsMTE0LDEwMiwwLDAsMCwxMTQsMjM0LDAsMCwwLDExNCwyMjIsMCwwLDAsCiAgICAgOTAsOCwxMTAsMTAxLDExOSw5NSwxMTAsOTcsMTA5LDEwMSwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTQsMSwwLDAsMjQ0LDQsCi0gICAgMCwwLDExNSwzNCwwLDAsMCwwLDIsOSwxLDMsMSwzMSwxLDIyLAotICAgIDMsMTEsMywxOCwxLDE4LDcsOSwxLDEzLDEsMjQsMSw2LDEsMjcsCi0gICAgMiw2LDEsMTcsMSw5LDEsMTgsMSwxMjIsMjIsNzAsMTA1LDEwOCwxMDEsNzAsCisgICAgNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTIsMSwwLDAsMSw1LAorICAgIDAsMCwxMTUsMzQsMCwwLDAsMCwyLDYsMSwyLDEsMjIsMSwyMCwKKyAgICAzLDEwLDMsMTIsMSwxMiw3LDYsMSwxMCwxLDE2LDEsNCwxLDE4LAorICAgIDIsNCwxLDE0LDEsNiwxLDEyLDEsMTIyLDIyLDcwLDEwNSwxMDgsMTAxLDcwLAogICAgIDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTAyLDEwNSwxMDgsMTA4LDk1LDk5LDk3LDk5LDEwNCwKICAgICAxMDEsOTksMSwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMywwLAotICAgIDAsMCw3LDAsMCwwLDExNSwyNSwwLDAsMCwxMzUsMCwwLDEzNSwxLAotICAgIDAsMTAyLDIsMCwxMDAsMSwwLDEwMCwyLDAsMTM0LDAsMCwxMjUsMiwwLAotICAgIDEyNCwyLDAsODMsNDEsMyw5NywyMCwxLDAsMCw2NSwzMiw5OSwxMDgsOTcsCi0gICAgMTE1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsCi0gICAgMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDk3LDMyLDk5LDEwOCwxMTEsMTE1LDExNywxMTQsCi0gICAgMTAxLDMyLDExNiwxMTEsMzIsMTE3LDExNSwxMDEsMzIsMTExLDExMCwzMiwxMTUsMTIxLDExNSw0NiwKLSAgICAxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTAsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDExOSwxMDUsMTA4LDEwOCwzMiwxMTQsMTAxLDExNiwKLSAgICAxMTcsMTE0LDExMCwzMiw5NywxMTAsMzIsMTA1LDExMCwxMTUsMTE2LDk3LDExMCw5OSwxMDEsMzIsCi0gICAgMTE3LDExNSwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLAotICAgIDEwNSwxMDEsMTAwLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LDMyLDk3LDExMCwxMDAsMzIsCi0gICAgMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsOTksOTcsMTA4LDEwOCwxMDEsMTAwLDMyLDExMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsOTksCi0gICAgMTA4LDExMSwxMTUsMTE3LDExNCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsNzMsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDk5LDk3LDEwOCwKLSAgICAxMDgsMTAxLDEwMCwzMiwxMTEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDk5LDEwOCwxMTEsMTE1LDExNywKLSAgICAxMTQsMTAxLDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMzIsMTAwLDEwNSwxMTQsMTAxLAotICAgIDk5LDExNiwxMTEsMTE0LDEyMSw0NCwzMiw3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LDExNCwxMTQsCi0gICAgMTExLDExNCwzMiwxMDUsMTE1LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNCw5NywKLSAgICAxMDUsMTE1LDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsOTksCi0gICAgMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsNCwwLDAsMCwKLSAgICAxOSwwLDAsMCwxMTUsNDMsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEzMSwKLSAgICAxLDAsMTE1LDMwLDAsMTE2LDEsMCwxMDAsMSwwLDEwMCwyLDAsMTI0LDAsCi0gICAgMCwxMzEsMSwxLDEzMCwxLDAsMTM2LDAsMCwxMjQsMCwwLDEzNiwxLDAsCi0gICAgMTQwLDEsMCw4Myw0MSwzLDEyMiw0NSw4MCw5NywxMTYsMTA0LDMyLDEwNCwxMTEsMTExLAorICAgIDAsMCw3LDAsMCwwLDExNSwxOCwwLDAsMCwxMzUsMCwxMzUsMSwxMDIsCisgICAgMiwxMDAsMSwxMDAsMiwxMzIsOCwxMjUsMiwxMjQsMiw4MywwLDQxLDMsOTcsCisgICAgMjAsMSwwLDAsNjUsMzIsOTksMTA4LDk3LDExNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LAorICAgIDExMSwxMDAsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDExNSwKKyAgICAzMiw5NywzMiw5OSwxMDgsMTExLDExNSwxMTcsMTE0LDEwMSwzMiwxMTYsMTExLDMyLDExNywxMTUsCisgICAgMTAxLDMyLDExMSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwKKyAgICAxMTEsMTA3LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwKKyAgICAzMiwxMTksMTA1LDEwOCwxMDgsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsOTcsMTEwLDMyLAorICAgIDEwNSwxMTAsMTE1LDExNiw5NywxMTAsOTksMTAxLDMyLDExNywxMTUsMTA1LDExMCwxMDMsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwzMiwxMDgsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDExNSwzMiw5NywxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsCisgICAgMTA0LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDk5LDk3LDEwOCwxMDgsMTAxLDEwMCwKKyAgICAzMiwxMTEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDk5LDEwOCwxMTEsMTE1LDExNywxMTQsMTAxLDQ2LAorICAgIDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDczLDEwMiwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMTIsOTcsMTE2LDEwNCwzMiw5OSw5NywxMDgsMTA4LDEwMSwxMDAsMzIsMTExLDExMCwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiw5OSwxMDgsMTExLDExNSwxMTcsMTE0LDEwMSwzMiwxMDUsMTE1LDMyLDExMCwKKyAgICAxMTEsMTE2LDMyLDk3LDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwxMjEsNDQsMzIsCisgICAgNzMsMTA5LDExMiwxMTEsMTE0LDExNiw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTA1LDExNSwxMCwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDQ2LDEwLDEwLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDk5LDEsMCwwLDAsMCwwLDAsCisgICAgMCwxLDAsMCwwLDQsMCwwLDAsMTksMCwwLDAsMTE1LDM0LDAsCisgICAgMCwwLDExNiwwLDEyNCwwLDEzMSwxLDExNSwyMCwxMTYsMSwxMDAsMSwxMjQsMCwKKyAgICAxMDAsMiwxNDEsMiwxMzAsMSwxMzYsMCwxMjQsMCwxMDIsMSwxMzYsMSwxNTgsMiwKKyAgICAxNDIsMCw4MywwLDQxLDMsMTIyLDQ1LDgwLDk3LDExNiwxMDQsMzIsMTA0LDExMSwxMTEsCiAgICAgMTA3LDMyLDEwMiwxMTEsMTE0LDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsCiAgICAgMTA5LDk3LDk5LDEwNCwxMDUsMTEwLDEwMSwxMTQsMTIxLDQ2LDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwKICAgICAxMTAsMTAwLDEwMSwxMTQsNDYsMTIyLDMwLDExMSwxMTAsMTA4LDEyMSwzMiwxMDAsMTA1LDExNCwxMDEsCiAgICAgOTksMTE2LDExMSwxMTQsMTA1LDEwMSwxMTUsMzIsOTcsMTE0LDEwMSwzMiwxMTUsMTE3LDExMiwxMTIsCi0gICAgMTExLDExNCwxMTYsMTAxLDEwMCwxMTQsMzcsMCwwLDAsNDEsMiwxMTQsNDgsMCwwLAotICAgIDAsMTE0LDEwOSwwLDAsMCw0MSwxLDExNCwzNywwLDAsMCw0MSwyLDExNCwKLSAgICAxNzIsMCwwLDAsMTE0LDEzLDEsMCwwLDExNCw0LDAsMCwwLDExNCw2LAotICAgIDAsMCwwLDIxOCwyNCwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsOTUsMTAyLAotICAgIDExMSwxMTQsOTUsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwyOSw1LDAsCi0gICAgMCwxMTUsNiwwLDAsMCwwLDIsMTIsMSwxOCwxLDEyMiw1NCw3MCwxMDUsCi0gICAgMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsCi0gICAgMTExLDEwNyw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsMTEyLDk3LDExNiwxMDQsCi0gICAgOTUsMTA0LDExMSwxMTEsMTA3LDk1LDEwMiwxMTEsMTE0LDk1LDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwKLSAgICAxMTAsMTAwLDEwMSwxMTQsMTE0LDQsMCwwLDAsNDEsMywxMTQsMTcyLDAsMCwwLAotICAgIDExNCwxMywxLDAsMCwxMTQsMTksMSwwLDAsMTE0LDQsMCwwLDAsNDEsCi0gICAgMiwxMTQsMTcyLDAsMCwwLDExNCwxMywxLDAsMCwxMTQsNiwwLDAsMCwKLSAgICAyMTgsOSwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTksNSwwLDAsMTE1LAotICAgIDQsMCwwLDAsMCwxMCwyMSw2LDEyMiwyMCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsCi0gICAgMTEwLDEwMCwxMDEsMTE0LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNyw5OSwxLAotICAgIDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwyLDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSwxNiwwLDAsMCwxMDAsMSwwLDEwNiwwLDAsMTI0LDAsCi0gICAgMCwxMDYsMSwwLDEzMSwxLDAsODMsNDEsMiw3OCwxMjIsMTYsNzAsMTA1LDEwOCwKLSAgICAxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0MCwxMjMsMzMsMTE0LDEyNSw0MSw0MSwyLDExNCwKLSAgICA0OSwwLDAsMCwxMTQsMzcsMCwwLDAsNDEsMSwxMTQsMTEwLDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwKLSAgICAyNDUsMCwwLDAsMzcsNSwwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwKLSAgICAxOSw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDExNCwxMDEsCi0gICAgMTEyLDExNCw5NSw5NSw0MSwxNSwxMTQsMTE0LDAsMCwwLDExNCwxMTMsMCwwLDAsCi0gICAgMTE0LDExNSwwLDAsMCwxMTQsMTE2LDAsMCwwLDExNCwxODYsMCwwLDAsMTE0LAotICAgIDI1MSwwLDAsMCwxMTQsMTMyLDAsMCwwLDExNCwxODMsMCwwLDAsMTE0LDEyNiwKLSAgICAwLDAsMCwxMTQsNiwxLDAsMCwxMTQsMTgyLDAsMCwwLDExNCwxNCwxLAotICAgIDAsMCwxMTQsMTg0LDAsMCwwLDExNCwyMCwxLDAsMCwxMTQsMjQ1LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw2LDAsMCwwLDExNCw3LDEsMCwwLDE1Myw0LDAsMCwxMTUsMjAsCi0gICAgMCwwLDAsMTIsNyw2LDIsMTIsMTQsMTIsNCw2LDIsMTIsMTIsMTIsCi0gICAgNSwxNSw0NSwxMiwzMSwxOCwxOCwxMTQsNywxLDAsMCw5OSw0LDAsMCwKLSAgICAwLDAsMCwwLDAsNiwwLDAsMCwxMSwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsMTk1LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMDAsMSwwLDEzMSwKLSAgICAxLDAsMTI1LDQsMCwxMjQsMCwwLDEwNiwwLDAsMTAwLDIsMCwxMzEsMSwKLSAgICAwLDEyNSw1LDAsMTI0LDQsMCwxMTUsOTksMCwxMjQsNSwwLDExNCw1NCwwLAotICAgIDEyNCw1LDAsMTA2LDEsMCwxMjUsNCwwLDExMCw0NSwwLDEyNCwyLDAsMTI0LAotICAgIDMsMCwxMDcsMiwwLDExNCw4NCwwLDExNiwyLDAsMTI0LDEsMCwxMjQsMiwKLSAgICAwLDEzMSwyLDAsMTI1LDQsMCwxMTAsMTUsMCwxMTYsMywwLDEyNCwxLDAsCi0gICAgMTI0LDIsMCwxMzEsMiwwLDEyNSw0LDAsMTI0LDUsMCwxMTUsMTI2LDAsMTE2LAotICAgIDQsMCwxMjQsMSwwLDEyNCwyLDAsMTAwLDMsMCwxMjQsNCwwLDEzMSwyLAotICAgIDEsMTI1LDUsMCwxMjEsNDQsMCwxMjQsNSwwLDEyNCwwLDAsMTAwLDIsMCwKLSAgICA2MCwxMjQsNCwwLDEyNCwwLDAsMTAwLDEsMCw2MCwxMjQsMiwwLDEyNCwwLAotICAgIDAsMTAwLDQsMCw2MCwxMjQsMywwLDEyNCwwLDAsMTAwLDUsMCw2MCw4NywKLSAgICAxMTAsMTgsMCw0LDExNiw1LDAsMTA3LDEwLDAsMTE0LDE5MCwwLDEsMSwxLAotICAgIDg5LDExMCwxLDAsODgsMTAwLDAsMCw4Myw0MSw2LDc4LDIxOCwxMCw5NSw5NSwKKyAgICAxMTEsMTE0LDExNiwxMDEsMTAwLDQxLDEsMTE0LDM3LDAsMCwwLDQxLDIsMTE0LDQ4LAorICAgIDAsMCwwLDExNCwxMDMsMCwwLDAsNDEsMSwxMTQsMzcsMCwwLDAsNDEsCisgICAgMiwxMTQsMTY4LDAsMCwwLDExNCwxMSwxLDAsMCwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNiwwLDAsMCwyMTgsMjQsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LAorICAgIDk1LDEwMiwxMTEsMTE0LDk1LDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDIsCisgICAgNSwwLDAsMTE1LDYsMCwwLDAsMCwyLDgsMSwxMiwxLDEyMiw1NCwKKyAgICA3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDExMiw5NywxMTYsMTA0LDk1LAorICAgIDEwNCwxMTEsMTExLDEwNyw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsMTEyLDk3LAorICAgIDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDk1LDEwMiwxMTEsMTE0LDk1LDcwLDEwNSwxMDgsMTAxLAorICAgIDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE0LDQsMCwwLDAsNDEsMywxMTQsMTY4LDAsCisgICAgMCwwLDExNCwxMSwxLDAsMCwxMTQsMTcsMSwwLDAsMTE0LDQsMCwwLAorICAgIDAsNDEsMiwxMTQsMTY4LDAsMCwwLDExNCwxMSwxLDAsMCwxMTQsNiwwLAorICAgIDAsMCwyMTgsOSwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMzIsNSwwLAorICAgIDAsMTE1LDQsMCwwLDAsMCwxMCwxNCw2LDEyMiwyMCw3MCwxMDUsMTA4LDEwMSwKKyAgICA3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywKKyAgICA5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwyLDAsMCwKKyAgICAwLDY3LDAsMCwwLDExNSwxMiwwLDAsMCwxMDAsMSwxMDYsMCwxMjQsMCwKKyAgICAxMDYsMSwxMzEsMSw4MywwLDQxLDIsNzgsMTIyLDE2LDcwLDEwNSwxMDgsMTAxLDcwLAorICAgIDEwNSwxMTAsMTAwLDEwMSwxMTQsNDAsMTIzLDMzLDExNCwxMjUsNDEsNDEsMiwxMTQsNTAsMCwKKyAgICAwLDAsMTE0LDM3LDAsMCwwLDQxLDEsMTE0LDEwNCwwLDAsMCwxMTQsNCwKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMjQzLDAsCisgICAgMCwwLDUwLDUsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMTksNzAsCisgICAgMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSw5NSwxMTQsMTAxLDExMiwxMTQsCisgICAgOTUsOTUsNDEsMSw3OCw0MSwxNSwxMTQsMTA5LDAsMCwwLDExNCwxMDgsMCwwLAorICAgIDAsMTE0LDExMCwwLDAsMCwxMTQsMTExLDAsMCwwLDExNCwxODIsMCwwLDAsCisgICAgMTE0LDI0OSwwLDAsMCwxMTQsMTI3LDAsMCwwLDExNCwxNzksMCwwLDAsMTE0LAorICAgIDEyMSwwLDAsMCwxMTQsNCwxLDAsMCwxMTQsMTc4LDAsMCwwLDExNCwxMiwKKyAgICAxLDAsMCwxMTQsMTgwLDAsMCwwLDExNCwxOCwxLDAsMCwxMTQsMjQzLDAsCisgICAgMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwKKyAgICAwLDExNCw2LDAsMCwwLDExNCw1LDEsMCwwLDE2Myw0LDAsMCwxMTUsCisgICAgMjAsMCwwLDAsOCw3LDQsMiw4LDE0LDgsNCw0LDIsOCwxMiwKKyAgICA4LDUsMTAsNDgsOCwzMSwxMiwxOCwxMTQsNSwxLDAsMCw5OSw0LDAsCisgICAgMCwwLDAsMCwwLDAsNiwwLDAsMCwxMSwwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsMTQ2LDAsMCwwLDEyNCwwLDEwNiwwLDEwMCwxLDEzMSwxLDEyNSwKKyAgICA0LDEyNCwwLDEwNiwwLDEwMCwyLDEzMSwxLDEyNSw1LDEyNCw0LDExNSw2NiwxMjQsCisgICAgNSwxMTQsMzYsMTI0LDUsMTA2LDEsMTI1LDQsMTEwLDMwLDEyNCwyLDEyNCwzLDEwNywKKyAgICAyLDExNCw1NiwxMTYsMiwxMjQsMSwxMjQsMiwxMzEsMiwxMjUsNCwxMTAsMTAsMTE2LAorICAgIDMsMTI0LDEsMTI0LDIsMTMxLDIsMTI1LDQsMTI0LDUsMTE1LDg0LDExNiw0LDEyNCwKKyAgICAxLDEyNCwyLDEyNCw0LDEwMCwzLDE0MSwzLDEyNSw1LDEyMSwzNiwxMjQsNSwxMjQsCisgICAgMCwxMDAsMiw2MCwwLDEyNCw0LDEyNCwwLDEwMCwxLDYwLDAsMTI0LDIsMTI0LAorICAgIDAsMTAwLDQsNjAsMCwxMjQsMywxMjQsMCwxMDAsNSw2MCwwLDg3LDAsMTEwLAorICAgIDIwLDQsMCwxMTYsNSwxMDcsMTAsMTE0LDE0MCwxLDAsMSwwLDEsMCw4OSwKKyAgICAwLDExMCwyLDg4LDAsMTAwLDAsODMsMCw0MSw2LDc4LDIxOCwxMCw5NSw5NSwKICAgICAxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LDk1LDIxOCw4LDk1LDk1LDExNSwxMTIsMTAxLDk5LAotICAgIDk1LDk1LDExNCwxMjksMCwwLDAsOTAsOCw5NSw5NSwxMDIsMTA1LDEwOCwxMDEsOTUsCi0gICAgOTUsOTAsMTAsOTUsOTUsOTksOTcsOTksMTA0LDEwMSwxMDAsOTUsOTUsNDEsNiwyMTgsCi0gICAgMywxMDMsMTAxLDExNiwxMTQsMTI5LDAsMCwwLDExNCwyMjQsMCwwLDAsMTE0LDIxOSwKLSAgICAwLDAsMCwxMTQsMTY5LDAsMCwwLDIxOCw5LDY5LDEyMCw5OSwxMDEsMTEyLDExNiwKLSAgICAxMDUsMTExLDExMCw0MSw2LDkwLDIsMTEwLDExNSwxMTQsMTA4LDAsMCwwLDkwLDgsCi0gICAgMTEyLDk3LDExNiwxMDQsMTEwLDk3LDEwOSwxMDEsOTAsOSw5OSwxMTIsOTcsMTE2LDEwNCwxMTAsCi0gICAgOTcsMTA5LDEwMSwxMTQsMTI5LDAsMCwwLDExNCwxNjYsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDE0LDk1LDEwMiwKLSAgICAxMDUsMTIwLDk1LDExNywxMTIsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDMsNSwwLDAsCi0gICAgMTE1LDM0LDAsMCwwLDAsMiwxNSwxLDE1LDEsNiwxLDYsMSwxMiwKLSAgICAxLDEyLDEsMTgsMiwxNSwxLDYsMSwyMSwxLDMsMSwxMCwxLDEwLAotICAgIDEsMTAsMSwxNCwxLDEzLDIsMTE0LDI1LDEsMCwwLDk5LDAsMCwwLAotICAgIDAsMCwwLDAsMCwzLDAsMCwwLDMsMCwwLDAsNjcsMCwwLAotICAgIDAsMTE1LDU1LDAsMCwwLDExNiwwLDAsMTE2LDEsMCwxMDYsMiwwLDEzMSwKLSAgICAwLDAsMTAyLDIsMCwxMjUsMCwwLDExNiwzLDAsMTE2LDQsMCwxMDIsMiwKLSAgICAwLDEyNSwxLDAsMTE2LDUsMCwxMTYsNiwwLDEwMiwyLDAsMTI1LDIsMCwKLSAgICAxMjQsMCwwLDEyNCwxLDAsMTI0LDIsMCwxMDMsMywwLDgzLDQxLDEsMTIyLAotICAgIDk1LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDk3LDMyLDEwOCwxMDUsMTE1LDExNiwzMiwKLSAgICAxMTEsMTAyLDMyLDEwMiwxMDUsMTA4LDEwMSw0NSw5OCw5NywxMTUsMTAxLDEwMCwzMiwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNSw0NiwxMCwxMCwzMiwKLSAgICAzMiwzMiwzMiw2OSw5Nyw5OSwxMDQsMzIsMTA1LDExNiwxMDEsMTA5LDMyLDEwNSwxMTUsMzIsCi0gICAgOTcsMzIsMTE2LDExNywxMTIsMTA4LDEwMSwzMiw0MCwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQ0LAotICAgIDMyLDExNSwxMTcsMTAyLDEwMiwxMDUsMTIwLDEwMSwxMTUsNDEsNDYsMTAsMzIsMzIsMzIsMzIsCi0gICAgNDEsNywxMTQsMjI1LDAsMCwwLDExNCwxNDcsMCwwLDAsMjE4LDE4LDEwMSwxMjAsCi0gICAgMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDk1LDExNSwxMTcsMTAyLDEwMiwxMDUsMTIwLDEwMSwxMTUsCi0gICAgMTE0LDIxOSwwLDAsMCwxMTQsODYsMCwwLDAsMTE0LDIyNCwwLDAsMCwxMTQsCi0gICAgNzYsMCwwLDAsNDEsMyw5MCwxMCwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLAotICAgIDExMCwxMTUsOTAsNiwxMTUsMTExLDExNywxMTQsOTksMTAxLDkwLDgsOTgsMTIxLDExNiwxMDEsCi0gICAgOTksMTExLDEwMCwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsCi0gICAgMCwwLDAsMTE0LDE2MywwLDAsMCw2Niw1LDAsMCwxMTUsOCwwLDAsCi0gICAgMCwwLDUsMTgsMSwxMiwxLDEyLDEsMTE0LDE2MywwLDAsMCw5OSwxLAotICAgIDAsMCwwLDAsMCwwLDAsMTIsMCwwLDAsMTIsMCwwLDAsNjcsCi0gICAgMCwwLDAsMTE1LDcwLDIsMCwwLDEyNCwwLDAsOTcsMCwwLDExNiwwLAotICAgIDAsMTA2LDEsMCw5NywxLDAsMTE2LDAsMCwxMDYsMiwwLDk3LDIsMCwKLSAgICAxMTYsMSwwLDEwNiwzLDAsMTE2LDQsMCwyNSwxMjUsMSwwLDEyMCw3NiwwLAotICAgIDEwMCwyNiwwLDY4LDkzLDY4LDAsMTI1LDIsMCwxMjQsMiwwLDExNiwxLDAsCi0gICAgMTA2LDMsMCwxMDcsNywwLDExNCw4MywwLDExNiwwLDAsMTA2LDUsMCwxMjQsCi0gICAgMiwwLDEzMSwxLDAsMTI1LDMsMCwxMTAsMTMsMCwxMTYsMSwwLDEwNiwzLAotICAgIDAsMTI0LDIsMCwyNSwxMjUsMywwLDExNiw2LDAsMTI0LDEsMCwxMjQsMiwKLSAgICAwLDEyNCwzLDAsMTMxLDMsMCwxLDExMyw0NCwwLDg3LDEwMCw1LDAsMTAwLAotICAgIDYsMCwxMDMsMSwwLDEwMiwyLDAsMTAwLDcsMCwxMDAsOCwwLDEwMCw2LAotICAgIDAsMTAzLDIsMCwxMDIsMiwwLDEwMiwyLDAsMTI1LDQsMCwxMjAsMTQ5LDAsCi0gICAgMTI0LDQsMCw2OCw5MywxMjksMCw5MiwyLDAsMTI1LDUsMCwxMjUsNiwwLAotICAgIDExNiw3LDAsMTAwLDksMCwxMDAsMTAsMCwxMzIsMCwwLDEyNCw2LDAsNjgsCi0gICAgMTMxLDEsMCwxMzEsMSwwLDExNSwxOTksMCwxMTYsOCwwLDEzMCwxLDAsMTI0LAotICAgIDYsMCwxMDAsMTEsMCwyNSwxMjUsNywwLDEyNCw1LDAsMTE2LDEsMCwxMDYsCi0gICAgMywwLDEwNyw2LDAsMTE0LDI0MSwwLDExNiwxLDAsMTA2LDMsMCwxMjQsNSwKLSAgICAwLDI1LDEyNSw4LDAsODAsMTEzLDE1NiwwLDEyMSwyMCwwLDExNiwwLDAsMTA2LAotICAgIDUsMCwxMjQsNSwwLDEzMSwxLDAsMTI1LDgsMCw4MCw4NywxMTMsMTU2LDAsCi0gICAgNCwxMTYsOSwwLDEwNywxMCwwLDExNCwyOCwxLDEsMSwxLDExOSwxNTYsMCwKLSAgICA4OSwxMTMsMTU2LDAsODgsMTEzLDE1NiwwLDg3LDExNiw5LDAsMTAwLDEyLDAsMTMxLAotICAgIDEsMCwxMzAsMSwwLDExNiw2LDAsMTI0LDEsMCwxMDAsMTMsMCwxMjQsOCwKLSAgICAwLDEzMSwzLDAsMSwxMTYsNiwwLDEyNCwxLDAsMTAwLDE0LDAsMTI0LDcsCi0gICAgMCwxMzEsMywwLDEsMTE2LDYsMCwxMjQsMSwwLDEwMCwxNSwwLDEwMCwxNiwKLSAgICAwLDEwNiwxMCwwLDEyNCw2LDAsMTMxLDEsMCwxMzEsMywwLDEsMTIxLDE5LAotICAgIDAsMTE2LDAsMCwxMDYsNSwwLDEwMCwxNywwLDEzMSwxLDAsMTI1LDksMCwKLSAgICA4NywxMTAsMjQsMCw0LDExNiw5LDAsMTA3LDEwLDAsMTE0LDE0NywxLDEsMSwKLSAgICAxLDEwMCwxOCwwLDEyNSw5LDAsODksMTEwLDEsMCw4OCwxMTYsNiwwLDEyNCwKLSAgICAxLDAsMTAwLDE3LDAsMTI0LDksMCwxMzEsMywwLDEsMTE2LDAsMCwxMDYsCi0gICAgNSwwLDEwMCwxOSwwLDEzMSwxLDAsMTI1LDEwLDAsMTE2LDYsMCwxMjQsMSwKLSAgICAwLDEwMCwxOSwwLDEyNCwxMCwwLDEzMSwzLDAsMSwxMjQsNSwwLDEwMCw3LAotICAgIDAsMTA3LDIsMCwxMTQsMjM4LDEsMTE2LDAsMCwxMDYsNSwwLDEwMCwyMCwwLAotICAgIDEzMSwxLDAsMTI1LDExLDAsMTE2LDYsMCwxMjQsMSwwLDEwMCwyMSwwLDEyNCwKLSAgICAxMSwwLDEzMSwzLDAsMSwxMTYsNiwwLDEyNCwxLDAsMTAwLDIyLDAsMTE2LAotICAgIDExLDAsMTMxLDAsMCwxMzEsMywwLDEsMTE2LDEyLDAsMTA2LDEzLDAsMTE2LAotICAgIDIsMCwxMDYsMTQsMCwxMzEsMCwwLDEzMSwxLDAsMSwxMjQsNSwwLDEwMCwKLSAgICA3LDAsMTA3LDIsMCwxMTQsNjYsMiwxMTYsMTUsMCwxMDYsMTYsMCwxMDAsMjMsCi0gICAgMCwxMzEsMSwwLDEsMTAwLDI0LDAsMTE2LDEyLDAsMTA3LDYsMCwxMTQsNjYsCi0gICAgMiwxMDAsMjUsMCwxMTYsMTcsMCw5NSwxOCwwLDEwMCwxOCwwLDgzLDQxLDI3LAotICAgIDEyMiwyMDUsODMsMTAxLDExNiwxMTcsMTEyLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LAotICAgIDQ1LDk4LDk3LDExNSwxMDEsMTAwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsMTE1LAotICAgIDMyLDEwMiwxMTEsMTE0LDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsMzIsOTgsCi0gICAgMTIxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwNSwxMTAsMTAzLDMyLDExMCwxMDEsMTAxLDEwMCwKLSAgICAxMDEsMTAwLDEwLDMyLDMyLDMyLDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiw5NywxMTAsMTAwLDMyLDEwNSwxMTAsMTA2LDEwMSwKLSAgICA5OSwxMTYsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMTA5LDMyLDEwNSwxMTAsMTE2LDExMSwzMiwKLSAgICAxMTYsMTA0LDEwMSwzMiwxMDMsMTA4LDExMSw5OCw5NywxMDgsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LAotICAgIDExMiw5Nyw5OSwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzksMTE2LDEwNCwxMDEsMTE0LAotICAgIDMyLDk5LDExMSwxMDksMTEyLDExMSwxMTAsMTAxLDExMCwxMTYsMTE1LDMyLDk3LDExNCwxMDEsMzIsCi0gICAgMTAxLDEyMCwxMTYsMTE0LDk3LDk5LDExNiwxMDEsMTAwLDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiw5OSwxMTEsMTE0LDEwMSwzMiw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywKLSAgICAxMTIsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMTE0LAotICAgIDUxLDAsMCwwLDExNCw2MiwwLDAsMCwyMTgsOCw5OCwxMTcsMTA1LDEwOCwxMTYsCi0gICAgMTA1LDExMCwxMTUsMTE0LDE0NCwwLDAsMCw5MCw1LDExMiwxMTEsMTE1LDEwNSwxMjAsMjUwLAotICAgIDEsNDcsMjE4LDIsMTEwLDExNiwyNTAsMSw5Miw5OSwxLDAsMCwwLDAsMCwKLSAgICAwLDAsMiwwLDAsMCwzLDAsMCwwLDExNSwwLDAsMCwxMTUsMzMsCi0gICAgMCwwLDAsMTI0LDAsMCw5MywyMywwLDEyNSwxLDAsMTE2LDAsMCwxMjQsCi0gICAgMSwwLDEzMSwxLDAsMTAwLDAsMCwxMDcsMiwwLDg2LDEsMTEzLDMsMCwKLSAgICAxMDAsMSwwLDgzLDQxLDIsMTE0LDMxLDAsMCwwLDc4LDQxLDEsMTE0LDMzLAotICAgIDAsMCwwLDQxLDIsMTE0LDI0LDAsMCwwLDExNCw3OSwwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMjI4LAotICAgIDAsMCwwLDEwMiw1LDAsMCwxMTUsMiwwLDAsMCw2LDAsMTIyLDI1LAorICAgIDk1LDk1LDQxLDEsMTE0LDEyNCwwLDAsMCw5MCw4LDk1LDk1LDEwMiwxMDUsMTA4LAorICAgIDEwMSw5NSw5NSw5MCwxMCw5NSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDEwMCw5NSw5NSw0MSwKKyAgICA2LDIxOCwzLDEwMywxMDEsMTE2LDExNCwxMjQsMCwwLDAsMTE0LDIyMCwwLDAsMCwKKyAgICAxMTQsMjE1LDAsMCwwLDExNCwxNjUsMCwwLDAsMjE4LDksNjksMTIwLDk5LDEwMSwKKyAgICAxMTIsMTE2LDEwNSwxMTEsMTEwLDQxLDYsOTAsMiwxMTAsMTE1LDExNCwxMDIsMCwwLDAsCisgICAgOTAsOCwxMTIsOTcsMTE2LDEwNCwxMTAsOTcsMTA5LDEwMSw5MCw5LDk5LDExMiw5NywxMTYsCisgICAgMTA0LDExMCw5NywxMDksMTAxLDExNCwxMjQsMCwwLDAsMTE0LDE2MiwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTQsCisgICAgOTUsMTAyLDEwNSwxMjAsOTUsMTE3LDExMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw1Niw1LAorICAgIDAsMCwxMTUsMzQsMCwwLDAsMCwyLDEwLDEsMTAsMSw0LDEsNCwKKyAgICAxLDgsMSw4LDEsMTIsMiwxMCwxLDQsMSwxNCwxLDIsMSw4LAorICAgIDEsOCwxLDgsMSwxMiwxLDE0LDIsMTE0LDIzLDEsMCwwLDk5LDAsCisgICAgMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDMsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDM4LDAsMCwwLDExNiwwLDExNiwxLDEwNiwyLDEzMSwwLAorICAgIDEwMiwyLDEyNSwwLDExNiwzLDExNiw0LDEwMiwyLDEyNSwxLDExNiw1LDExNiw2LAorICAgIDEwMiwyLDEyNSwyLDEyNCwwLDEyNCwxLDEyNCwyLDEwMywzLDgzLDAsNDEsMSwKKyAgICAxMjIsOTUsODIsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsOTcsMzIsMTA4LDEwNSwxMTUsMTE2LAorICAgIDMyLDExMSwxMDIsMzIsMTAyLDEwNSwxMDgsMTAxLDQ1LDk4LDk3LDExNSwxMDEsMTAwLDMyLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LDQ2LDEwLDEwLAorICAgIDMyLDMyLDMyLDMyLDY5LDk3LDk5LDEwNCwzMiwxMDUsMTE2LDEwMSwxMDksMzIsMTA1LDExNSwKKyAgICAzMiw5NywzMiwxMTYsMTE3LDExMiwxMDgsMTAxLDMyLDQwLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgNDQsMzIsMTE1LDExNywxMDIsMTAyLDEwNSwxMjAsMTAxLDExNSw0MSw0NiwxMCwzMiwzMiwzMiwKKyAgICAzMiw0MSw3LDExNCwyMjEsMCwwLDAsMTE0LDE0MywwLDAsMCwyMTgsMTgsMTAxLAorICAgIDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsOTUsMTE1LDExNywxMDIsMTAyLDEwNSwxMjAsMTAxLAorICAgIDExNSwxMTQsMjE1LDAsMCwwLDExNCw4OCwwLDAsMCwxMTQsMjIwLDAsMCwwLAorICAgIDExNCw3OCwwLDAsMCw0MSwzLDkwLDEwLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwKKyAgICAxMTEsMTEwLDExNSw5MCw2LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTAsOCw5OCwxMjEsMTE2LAorICAgIDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNiwwLDAsMCwxMTQsMTU5LDAsMCwwLDc5LDUsMCwwLDExNSw4LDAsCisgICAgMCwwLDAsNSwxMiwxLDgsMSw4LDEsMTE0LDE1OSwwLDAsMCw5OSwKKyAgICAxLDAsMCwwLDAsMCwwLDAsMTIsMCwwLDAsMTIsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDE4OCwxLDAsMCwxMjQsMCw5NywwLDExNiwwLDEwNiwKKyAgICAxLDk3LDEsMTE2LDAsMTA2LDIsOTcsMiwxMTYsMSwxMDYsMywxMTYsNCwyNSwKKyAgICAwLDEyNSwxLDEyMCw1NiwxMDAsMjYsNjgsMCw5Myw0OCwxMjUsMiwxMjQsMiwxMTYsCisgICAgMSwxMDYsMywxMDcsNywxMTQsNTgsMTE2LDAsMTA2LDUsMTI0LDIsMTMxLDEsMTI1LAorICAgIDMsMTEwLDEwLDExNiwxLDEwNiwzLDEyNCwyLDI1LDAsMTI1LDMsMTE2LDYsMTI0LAorICAgIDEsMTI0LDIsMTI0LDMsMTMxLDMsMSwwLDExMywzMiw4NywwLDEwMCw1LDEwMCwKKyAgICA2LDEwMywxLDEwMiwyLDEwMCw3LDEwMCw4LDEwMCw2LDEwMywyLDEwMiwyLDEwMiwKKyAgICAyLDEyNSw0LDEyMCwxMTgsMTI0LDQsNjgsMCw5MywxMDIsOTIsMiwxMjUsNSwxMjUsCisgICAgNiwxMTYsNywxMDAsOSwxMDAsMTAsMTMyLDAsMTI0LDYsNjgsMCwxMzEsMSwxMzEsCisgICAgMSwxMTUsMTQyLDExNiw4LDEzMCwxLDEyNCw2LDEwMCwxMSwyNSwwLDEyNSw3LDEyNCwKKyAgICA1LDExNiwxLDEwNiwzLDEwNyw2LDExNCwxNzQsMTE2LDEsMTA2LDMsMTI0LDUsMjUsCisgICAgMCwxMjUsOCw4MCwwLDExMywxMTIsMTIxLDE2LDExNiwwLDEwNiw1LDEyNCw1LDEzMSwKKyAgICAxLDEyNSw4LDgwLDAsODcsMCwxMTMsMTEyLDQsMCwxMTYsOSwxMDcsMTAsMTE0LAorICAgIDIxMiwxLDAsMSwwLDEsMCwxMTksMTEyLDg5LDAsMTEzLDExMiw4OCwwLDExMywKKyAgICAxMTIsODcsMCwxMTYsOSwxMDAsMTIsMTMxLDEsMTMwLDEsMTE2LDYsMTI0LDEsMTAwLAorICAgIDEzLDEyNCw4LDEzMSwzLDEsMCwxMTYsNiwxMjQsMSwxMDAsMTQsMTI0LDcsMTMxLAorICAgIDMsMSwwLDExNiw2LDEyNCwxLDEwMCwxNSwxMDAsMTYsMTA2LDEwLDEyNCw2LDEzMSwKKyAgICAxLDEzMSwzLDEsMCwxMjEsMTQsMTE2LDAsMTA2LDUsMTAwLDE3LDEzMSwxLDEyNSwKKyAgICA5LDg3LDAsMTEwLDI2LDQsMCwxMTYsOSwxMDcsMTAsMTQ0LDEsMTE0LDUyLDEsCisgICAgMCwxLDAsMSwwLDEwMCwxOCwxMjUsOSw4OSwwLDExMCwyLDg4LDAsMTE2LAorICAgIDYsMTI0LDEsMTAwLDE3LDEyNCw5LDEzMSwzLDEsMCwxMTYsMCwxMDYsNSwxMDAsCisgICAgMTksMTMxLDEsMTI1LDEwLDExNiw2LDEyNCwxLDEwMCwxOSwxMjQsMTAsMTMxLDMsMSwKKyAgICAwLDEyNCw1LDEwMCw3LDEwNywyLDE0NCwxLDExNCwxMjAsMTE2LDAsMTA2LDUsMTAwLAorICAgIDIwLDEzMSwxLDEyNSwxMSwxMTYsNiwxMjQsMSwxMDAsMjEsMTI0LDExLDEzMSwzLDEsCisgICAgMCwxMTYsNiwxMjQsMSwxMDAsMjIsMTE2LDExLDEzMSwwLDEzMSwzLDEsMCwxMTYsCisgICAgMTIsMTA2LDEzLDExNiwyLDEwNiwxNCwxMzEsMCwxMzEsMSwxLDAsMTI0LDUsMTAwLAorICAgIDcsMTA3LDIsMTQ0LDEsMTE0LDE4NCwxMTYsMTUsMTA2LDE2LDEwMCwyMywxMzEsMSwxLAorICAgIDAsMTAwLDI0LDExNiwxMiwxMDcsNiwxNDQsMSwxMTQsMTg0LDEwMCwyNSwxMTYsMTcsOTUsCisgICAgMTgsMTAwLDE4LDgzLDAsNDEsMjcsMTIyLDIwNSw4MywxMDEsMTE2LDExNywxMTIsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsNDUsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTA1LDEwOSwKKyAgICAxMTIsMTExLDExNCwxMTYsMTAxLDExNCwxMTUsMzIsMTAyLDExMSwxMTQsMzIsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMTA4LDEwNSw5OCwzMiw5OCwxMjEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA1LAorICAgIDExMCwxMDMsMzIsMTEwLDEwMSwxMDEsMTAwLDEwMSwxMDAsMTAsMzIsMzIsMzIsMzIsOTgsMTE3LAorICAgIDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDk3LAorICAgIDExMCwxMDAsMzIsMTA1LDExMCwxMDYsMTAxLDk5LDExNiwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwKKyAgICAxMDksMzIsMTA1LDExMCwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLDEwMywxMDgsMTExLDk4LDk3LAorICAgIDEwOCwzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw0NiwxMCwxMCwzMiwzMiwKKyAgICAzMiwzMiw3OSwxMTYsMTA0LDEwMSwxMTQsMzIsOTksMTExLDEwOSwxMTIsMTExLDExMCwxMDEsMTEwLAorICAgIDExNiwxMTUsMzIsOTcsMTE0LDEwMSwzMiwxMDEsMTIwLDExNiwxMTQsOTcsOTksMTE2LDEwMSwxMDAsCisgICAgMzIsMTAyLDExNCwxMTEsMTA5LDMyLDExNiwxMDQsMTAxLDMyLDk5LDExMSwxMTQsMTAxLDMyLDk4LAorICAgIDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwKKyAgICAxMCwxMCwzMiwzMiwzMiwzMiwxMTQsNTIsMCwwLDAsMTE0LDYzLDAsMCwwLAorICAgIDIxOCw4LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDExNSwxMTQsMTQwLDAsMCwwLDkwLAorICAgIDUsMTEyLDExMSwxMTUsMTA1LDEyMCwyNTAsMSw0Nyw5MCwyLDExMCwxMTYsMjUwLDEsOTIsCisgICAgOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywwLDAsCisgICAgMCwxMTUsMCwwLDAsMTE1LDI2LDAsMCwwLDEyNCwwLDkzLDE4LDEyNSwxLAorICAgIDExNiwwLDEyNCwxLDEzMSwxLDEwMCwwLDEwNywyLDg2LDAsMSwwLDExMywyLAorICAgIDEwMCwxLDgzLDAsNDEsMiwxMTQsMzEsMCwwLDAsNzgsNDEsMSwxMTQsMzMsCisgICAgMCwwLDAsNDEsMiwxMTQsMjQsMCwwLDAsMTE0LDgxLDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwyMjQsCisgICAgMCwwLDAsMTE1LDUsMCwwLDExNSwyLDAsMCwwLDQsMCwxMjIsMjUsCiAgICAgOTUsMTE1LDEwMSwxMTYsMTE3LDExMiw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsCi0gICAgNjAsMTAzLDEwMSwxMTAsMTAxLDEyMCwxMTIsMTE0LDYyLDExNCw2MSwwLDAsMCwxMjIsMzAsCisgICAgNjAsMTAzLDEwMSwxMTAsMTAxLDEyMCwxMTIsMTE0LDYyLDExNCw2MiwwLDAsMCwxMjIsMzAsCiAgICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwzMiwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwKICAgICAxMDEsMTE1LDMyLDExMiwxMTEsMTE1LDEwNSwxMjAsMzIsMTExLDExNCwzMiwxMTAsMTE2LDExNCwzLAogICAgIDAsMCwwLDExNCwyNywwLDAsMCwxMTQsMjMsMCwwLDAsMTE0LDMyLDAsCiAgICAgMCwwLDkwLDcsOTUsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCw3OCw5MCw4LDk1LDExOSwKLSAgICAxMDEsOTcsMTA3LDExNCwxMDEsMTAyLDkwLDYsMTE5LDEwNSwxMTAsMTE0LDEwMSwxMDMsMTE0LDE3MSwKKyAgICAxMDEsOTcsMTA3LDExNCwxMDEsMTAyLDkwLDYsMTE5LDEwNSwxMTAsMTE0LDEwMSwxMDMsMTE0LDE2NywKICAgICAwLDAsMCwxMTQsNywwLDAsMCwxMjIsNCw0NiwxMTIsMTIxLDExOSwxMjIsNiwKLSAgICA5NSwxMDAsNDYsMTEyLDEyMSwxMDAsODQsNDEsNCwxMTQsNTEsMCwwLDAsMTE0LDYyLAotICAgIDAsMCwwLDExNCwyNywxLDAsMCwxMTQsMTQ0LDAsMCwwLDQxLDE5LDExNCwKLSAgICAxMjMsMCwwLDAsMTE0LDgsMCwwLDAsMTE0LDE0NywwLDAsMCwxMTQsMjQwLAotICAgIDAsMCwwLDExNCwxMTQsMCwwLDAsOTAsMTgsOTUsOTgsMTE3LDEwNSwxMDgsMTE2LAotICAgIDEwNSwxMTAsOTUsMTAyLDExNCwxMTEsMTA5LDk1LDExMCw5NywxMDksMTAxLDExNCwxMTgsMCwwLAorICAgIDk1LDEwMCw0NiwxMTIsMTIxLDEwMCw4NCw0MSw0LDExNCw1MiwwLDAsMCwxMTQsNjMsCisgICAgMCwwLDAsMTE0LDI1LDEsMCwwLDExNCwxNDAsMCwwLDAsNDEsMTksMTE0LAorICAgIDExOCwwLDAsMCwxMTQsOCwwLDAsMCwxMTQsMTQzLDAsMCwwLDExNCwyMzYsCisgICAgMCwwLDAsMTE0LDEwOSwwLDAsMCw5MCwxOCw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsCisgICAgMTA1LDExMCw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTEwLDk3LDEwOSwxMDEsMTE0LDExMywwLDAsCiAgICAgMCwyMTgsMyw5NywxMDgsMTA4LDIxOCwxNCw2NSwxMTUsMTE1LDEwMSwxMTQsMTE2LDEwNSwxMTEsCi0gICAgMTEwLDY5LDExNCwxMTQsMTExLDExNCwxMTQsMTA5LDAsMCwwLDExNCwyOCwwLDAsMCwKLSAgICAxMTQsMTMsMCwwLDAsMTE0LDIzMCwwLDAsMCwxMTQsMTUxLDAsMCwwLDExNCwKLSAgICAyNiwxLDAsMCwxMTQsODYsMCwwLDAsMTE0LDE2NSwwLDAsMCwxMTQsMTcwLAotICAgIDAsMCwwLDExNCwxNzQsMCwwLDAsNDEsMTIsMjE4LDE3LDk1LDk4LDExMSwxMTEsCisgICAgMTEwLDY5LDExNCwxMTQsMTExLDExNCwxMTQsMTAzLDAsMCwwLDExNCwyOCwwLDAsMCwKKyAgICAxMTQsMTMsMCwwLDAsMTE0LDIyNiwwLDAsMCwxMTQsMTQ3LDAsMCwwLDExNCwKKyAgICAyNCwxLDAsMCwxMTQsODgsMCwwLDAsMTE0LDE2MSwwLDAsMCwxMTQsMTY2LAorICAgIDAsMCwwLDExNCwxNzAsMCwwLDAsNDEsMTIsMjE4LDE3LDk1LDk4LDExMSwxMTEsCiAgICAgMTE2LDExNSwxMTYsMTE0LDk3LDExMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxMSwxMTUsCiAgICAgMTAxLDEwOCwxMDIsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsMTIsOTgsMTE3LDEwNSwxMDgsCiAgICAgMTE2LDEwNSwxMTAsOTUsMTEwLDk3LDEwOSwxMDEsOTAsMTQsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwKQEAgLTI1MzgsNjggKzIzNzAsNjQgQEAKICAgICAxMDAsMTE3LDEwOCwxMDEsOTAsMTQsMTE5LDEwMSw5NywxMDcsMTE0LDEwMSwxMDIsOTUsMTA5LDExMSwKICAgICAxMDAsMTE3LDEwOCwxMDEsOTAsMTMsMTE5LDEwNSwxMTAsMTE0LDEwMSwxMDMsOTUsMTA5LDExMSwxMDAsCiAgICAgMTE3LDEwOCwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwKLSAgICAwLDAsMjE4LDYsOTUsMTE1LDEwMSwxMTYsMTE3LDExMiw3Nyw1LDAsMCwxMTUsODIsCi0gICAgMCwwLDAsMCw4LDYsMSw5LDEsOSwzLDEzLDEsMTMsMSwxNSwKLSAgICAxLDE4LDIsMTMsMSwyMCwzLDMzLDEsMTksMiwzMSwxLDEwLDEsMTUsCi0gICAgMSwxMywxLDQsMiwzLDEsMTUsMSw1LDEsMTMsMSwxMiwyLDEyLAotICAgIDEsMTYsMSwxNiwxLDI1LDMsMywxLDE5LDEsMTMsMiwxMSwxLDE2LAotICAgIDMsMTUsMSwxNiwzLDEyLDEsMTUsMSwxNiwzLDE5LDEsMTksMSwxMiwKLSAgICAxLDEzLDEsMTIsMSwxMTQsMzQsMSwwLDAsOTksMSwwLDAsMCwwLAorICAgIDAsMCwyMTgsNiw5NSwxMTUsMTAxLDExNiwxMTcsMTEyLDkwLDUsMCwwLDExNSw4MiwKKyAgICAwLDAsMCwwLDgsNCwxLDYsMSw2LDMsMTAsMSwxMCwxLDEwLAorICAgIDEsMTIsMiwxMCwxLDE2LDMsMjIsMSwxNCwyLDIyLDEsOCwxLDEwLAorICAgIDEsMTAsMSw0LDIsMiwxLDEwLDEsNiwxLDE0LDEsMTIsMiw4LAorICAgIDEsMTIsMSwxMiwxLDE4LDMsMiwxLDE0LDEsMTYsMiwxMCwxLDEyLAorICAgIDMsMTAsMSwxMiwzLDEwLDEsMTAsMSwxMiwzLDE0LDEsMTQsMSwxMCwKKyAgICAxLDEwLDEsMTAsMSwxMTQsMzEsMSwwLDAsOTksMSwwLDAsMCwwLAogICAgIDAsMCwwLDIsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsCi0gICAgMTE2LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMzEsMSwwLDEsMTE2LDEsCi0gICAgMCwxMzEsMCwwLDEyNSwxLDAsMTE2LDIsMCwxMDYsMywwLDEwNiw0LDAsCi0gICAgMTE2LDUsMCwxMDYsNiwwLDEyNCwxLDAsMTQwLDAsMCwxMDMsMSwwLDEzMSwKLSAgICAxLDAsMSwxMTYsNywwLDEwNiw4LDAsMTAwLDEsMCwxMDcsMiwwLDExNCwKLSAgICA3OCwwLDExNiwyLDAsMTA2LDksMCwxMDYsMTAsMCwxMTYsMTEsMCwxMzEsMSwKLSAgICAwLDEsMTE2LDIsMCwxMDYsOSwwLDEwNiwxMCwwLDExNiwxMiwwLDEzMSwxLAotICAgIDAsMSwxMTYsNSwwLDEyNCwwLDAsOTUsNSwwLDExNiwxMywwLDEyNCwwLAotICAgIDAsOTUsMTMsMCwxMDAsMiwwLDgzLDQxLDMsMTIyLDQxLDczLDExMCwxMTUsMTE2LAotICAgIDk3LDEwOCwxMDgsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsNDUsOTgsOTcsMTE1LAotICAgIDEwMSwxMDAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsOTksMTExLDEwOSwxMTIsMTExLDExMCwKLSAgICAxMDEsMTEwLDExNiwxMTUsNDYsMTE0LDI5LDEsMCwwLDc4LDQxLDE0LDExNCwzNCwxLAotICAgIDAsMCwxMTQsMTYzLDAsMCwwLDExNCw4LDAsMCwwLDExNCwyNTUsMCwwLAotICAgIDAsMTE0LDE1MSwwLDAsMCwxMTQsNywxLDAsMCwxMTQsMjAsMSwwLDAsCi0gICAgMTE0LDMsMCwwLDAsMTE0LDExNCwwLDAsMCwyMTgsOSwxMDksMTAxLDExNiw5NywKLSAgICA5NSwxMTIsOTcsMTE2LDEwNCwxMTQsMTY1LDAsMCwwLDExNCwxNzAsMCwwLDAsMTE0LAotICAgIDI1MCwwLDAsMCwxMTQsMjE5LDAsMCwwLDQxLDIsMTE0LDMzLDEsMCwwLAotICAgIDkwLDE3LDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDk1LDEwOCwxMTEsOTcsMTAwLAotICAgIDEwMSwxMTQsMTE1LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsCi0gICAgMCwwLDIxOCw4LDk1LDEwNSwxMTAsMTE1LDExNiw5NywxMDgsMTA4LDE0NSw1LDAsMCwKLSAgICAxMTUsMTYsMCwwLDAsMCwyLDEwLDEsOSwxLDI4LDEsMTUsMSwxNiwKLSAgICAxLDE2LDQsOSwxLDExNCwzNiwxLDAsMCw0MSwxLDExNCwwLDAsMCwKLSAgICAwLDQxLDIsMTE0LDEsMCwwLDAsMTE0LDIsMCwwLDAsNDEsNTksMTE0LAotICAgIDExNiwwLDAsMCwxMTQsMTIsMCwwLDAsOTAsMzcsOTUsNjcsNjUsODMsNjksCi0gICAgOTUsNzMsNzgsODMsNjksNzgsODMsNzMsODQsNzMsODYsNjksOTUsODAsNzYsNjUsCi0gICAgODQsNzAsNzksODIsNzcsODMsOTUsNjYsODksODQsNjksODMsOTUsNzUsNjksODksCi0gICAgMTE0LDExLDAsMCwwLDExNCwxMywwLDAsMCwxMTQsMTksMCwwLDAsMTE0LAotICAgIDIxLDAsMCwwLDExNCwzMCwwLDAsMCwxMTQsNDAsMCwwLDAsMTE0LDQxLAotICAgIDAsMCwwLDExNCw0NSwwLDAsMCwxMTQsNDYsMCwwLDAsMTE0LDQ4LDAsCi0gICAgMCwwLDExNCw1NywwLDAsMCwyMTgsNCwxMTYsMTIxLDExMiwxMDEsMjE4LDgsOTUsCi0gICAgOTUsOTksMTExLDEwMCwxMDEsOTUsOTUsMTE0LDE0NiwwLDAsMCwxMTQsMTcsMCwwLAotICAgIDAsMTE0LDEzNywwLDAsMCwxMTQsMTYsMCwwLDAsMTE0LDIwLDAsMCwwLAotICAgIDkwLDE3LDk1LDgyLDY1LDg3LDk1LDc3LDY1LDcxLDczLDY3LDk1LDc4LDg1LDc3LAotICAgIDY2LDY5LDgyLDExNCw3NSwwLDAsMCwxMTQsNzQsMCwwLDAsMTE0LDg2LDAsCi0gICAgMCwwLDExNCw3NiwwLDAsMCw5MCwyMyw2OCw2OSw2Niw4NSw3MSw5NSw2NiwKKyAgICA1MCwwLDAsMCwxMTYsMCwxMjQsMCwxMzEsMSwxLDAsMTE2LDEsMTMxLDAsCisgICAgMTI1LDEsMTE2LDIsMTA2LDMsMTA2LDQsMTE2LDUsMTA2LDYsMTI0LDEsMTQyLDAsCisgICAgMTAzLDEsMTMxLDEsMSwwLDExNiwyLDEwNiw3LDEwNiw4LDExNiw5LDEzMSwxLAorICAgIDEsMCwxMDAsMSw4MywwLDQxLDIsMTIyLDQxLDczLDExMCwxMTUsMTE2LDk3LDEwOCwKKyAgICAxMDgsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsNDUsOTgsOTcsMTE1LDEwMSwxMDAsCisgICAgMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsOTksMTExLDEwOSwxMTIsMTExLDExMCwxMDEsMTEwLAorICAgIDExNiwxMTUsNDYsNzgsNDEsMTAsMTE0LDMxLDEsMCwwLDExNCwxNTksMCwwLDAsCisgICAgMTE0LDgsMCwwLDAsMTE0LDI1MywwLDAsMCwxMTQsMTQ3LDAsMCwwLDExNCwKKyAgICA1LDEsMCwwLDExNCwxOCwxLDAsMCwyMTgsOSwxMDksMTAxLDExNiw5Nyw5NSwKKyAgICAxMTIsOTcsMTE2LDEwNCwxMTQsMTYxLDAsMCwwLDExNCwyNDgsMCwwLDAsNDEsMiwKKyAgICAxMTQsMzAsMSwwLDAsOTAsMTcsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsCisgICAgOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsMTE0LDQsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDYsMCwwLDAsMjE4LDgsOTUsMTA1LDExMCwxMTUsMTE2LDk3LDEwOCwKKyAgICAxMDgsMTU4LDUsMCwwLDExNSw4LDAsMCwwLDAsMiw4LDEsNiwxLAorICAgIDIwLDEsMTE0LDMzLDEsMCwwLDQxLDEsMTE0LDAsMCwwLDAsNDEsMiwKKyAgICAxMTQsMSwwLDAsMCwxMTQsMiwwLDAsMCw0MSwxLDExNCw0OSwwLDAsCisgICAgMCw0MSwxLDc4LDQxLDMsNzgsNzgsNzgsNDEsMyw3OCw3OCw3OCw0MSwyLAorICAgIDExNCw2MiwwLDAsMCwxMTQsNjIsMCwwLDAsNDEsMSw3OCw0MSwxLDc4LAorICAgIDQxLDU4LDExNCwxMTEsMCwwLDAsMTE0LDEyLDAsMCwwLDkwLDM3LDk1LDY3LAorICAgIDY1LDgzLDY5LDk1LDczLDc4LDgzLDY5LDc4LDgzLDczLDg0LDczLDg2LDY5LDk1LAorICAgIDgwLDc2LDY1LDg0LDcwLDc5LDgyLDc3LDgzLDk1LDY2LDg5LDg0LDY5LDgzLDk1LAorICAgIDc1LDY5LDg5LDExNCwxMSwwLDAsMCwxMTQsMTMsMCwwLDAsMTE0LDE5LDAsCisgICAgMCwwLDExNCwyMSwwLDAsMCwxMTQsMzAsMCwwLDAsMTE0LDQwLDAsMCwKKyAgICAwLDExNCw0MSwwLDAsMCwxMTQsNDUsMCwwLDAsMTE0LDQ2LDAsMCwwLAorICAgIDExNCw0OCwwLDAsMCwxMTQsNTgsMCwwLDAsMjE4LDQsMTE2LDEyMSwxMTIsMTAxLAorICAgIDIxOCw4LDk1LDk1LDk5LDExMSwxMDAsMTAxLDk1LDk1LDExNCwxNDIsMCwwLDAsMTE0LAorICAgIDE3LDAsMCwwLDExNCwxMzIsMCwwLDAsMTE0LDE2LDAsMCwwLDExNCwyMCwKKyAgICAwLDAsMCw5MCwxNyw5NSw4Miw2NSw4Nyw5NSw3Nyw2NSw3MSw3Myw2Nyw5NSwKKyAgICA3OCw4NSw3Nyw2Niw2OSw4MiwxMTQsNzcsMCwwLDAsMTE0LDc2LDAsMCwwLAorICAgIDExNCw4OCwwLDAsMCwxMTQsNzgsMCwwLDAsOTAsMjMsNjgsNjksNjYsODUsCisgICAgNzEsOTUsNjYsODksODQsNjksNjcsNzksNjgsNjksOTUsODMsODUsNzAsNzAsNzMsCisgICAgODgsNjksODMsOTAsMjcsNzksODAsODQsNzMsNzcsNzMsOTAsNjksNjgsOTUsNjYsCiAgICAgODksODQsNjksNjcsNzksNjgsNjksOTUsODMsODUsNzAsNzAsNzMsODgsNjksODMsCi0gICAgOTAsMjcsNzksODAsODQsNzMsNzcsNzMsOTAsNjksNjgsOTUsNjYsODksODQsNjksCi0gICAgNjcsNzksNjgsNjksOTUsODMsODUsNzAsNzAsNzMsODgsNjksODMsMTE0LDgxLDAsCi0gICAgMCwwLDExNCw4NywwLDAsMCwxMTQsOTMsMCwwLDAsMTE0LDk3LDAsMCwKLSAgICAwLDExNCw5OSwwLDAsMCwxMTQsMTA3LDAsMCwwLDExNCwxMjUsMCwwLDAsCi0gICAgMTE0LDEzMiwwLDAsMCwxMTQsMTQzLDAsMCwwLDExNCwxNDksMCwwLDAsMTE0LAotICAgIDE1MiwwLDAsMCwxMTQsMTU3LDAsMCwwLDIxOCw2LDExMSw5OCwxMDYsMTAxLDk5LAotICAgIDExNiwxMTQsMTY0LDAsMCwwLDExNCwxNjksMCwwLDAsMTE0LDE3MCwwLDAsMCwKLSAgICAxMTQsMTg1LDAsMCwwLDExNCwxOTUsMCwwLDAsMTE0LDIxMSwwLDAsMCwxMTQsCi0gICAgMjE5LDAsMCwwLDExNCwyMjQsMCwwLDAsMTE0LDIzMCwwLDAsMCwxMTQsMjI1LAotICAgIDAsMCwwLDExNCwyMzEsMCwwLDAsMTE0LDI0OCwwLDAsMCwxMTQsMjUwLDAsCi0gICAgMCwwLDExNCw3LDEsMCwwLDExNCwyNSwxLDAsMCwxMTQsMTYzLDAsMCwKLSAgICAwLDExNCwzNCwxLDAsMCwxMTQsMzYsMSwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LAotICAgIDgsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNjIsOCwwLDAsMCwxMTUsMTA2LDAsCi0gICAgMCwwLDYsMTYsNiwxLDYsMSwzLDEsNywzLDEyLDE3LDEyLDUsCi0gICAgMTIsNSwxMiw2LDEyLDEyLDEyLDEwLDEyLDksMTIsNSwxMiw3LDE1LDIyLAotICAgIDE1LDExNCwyMiwxLDE4LDIsNiwxLDYsMiw5LDIsOSwyLDEwLDIsCi0gICAgMjEsNDQsMTIsMzMsMTIsMTksMTIsMTIsMTIsMTIsMTgsOCwxMiwyOCwxMiwxNywKLSAgICAyMSw1NSwyMSwxMiwxOCwxMCwxMiwxNCw5LDMsMTIsMSwxNSw2NSwxOSw2NCwKLSAgICAxOSwyOCwyMiwxMTAsMTksNDEsMjUsNDMsMjUsMTYsNiwzLDI1LDUzLDE5LDU3LAotICAgIDE5LDQxLDE5LDEzNCwxOSwxNDYsMTUsMjMsMTIsMTEsMTIsNjgsCisgICAgMTE0LDgzLDAsMCwwLDExNCw4OSwwLDAsMCwxMTQsOTUsMCwwLDAsMTE0LAorICAgIDk5LDAsMCwwLDExNCwxMDEsMCwwLDAsMTE0LDEyMCwwLDAsMCwxMTQsMTI3LAorICAgIDAsMCwwLDExNCwxMzksMCwwLDAsMTE0LDE0NSwwLDAsMCwxMTQsMTQ4LDAsCisgICAgMCwwLDExNCwxNTMsMCwwLDAsMjE4LDYsMTExLDk4LDEwNiwxMDEsOTksMTE2LDExNCwKKyAgICAxNjAsMCwwLDAsMTE0LDE2NSwwLDAsMCwxMTQsMTY2LDAsMCwwLDExNCwxODEsCisgICAgMCwwLDAsMTE0LDE5MSwwLDAsMCwxMTQsMjA3LDAsMCwwLDExNCwyMTUsMCwKKyAgICAwLDAsMTE0LDIyMCwwLDAsMCwxMTQsMjI2LDAsMCwwLDExNCwyMjEsMCwwLAorICAgIDAsMTE0LDIyNywwLDAsMCwxMTQsMjQ2LDAsMCwwLDExNCwyNDgsMCwwLDAsCisgICAgMTE0LDUsMSwwLDAsMTE0LDIzLDEsMCwwLDExNCwxNTksMCwwLDAsMTE0LAorICAgIDMxLDEsMCwwLDExNCwzMywxLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsOCw2MCwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw2Miw4LDAsMCwwLDExNSwxMDgsMCwwLDAsCisgICAgNCwxNiw0LDEsNCwxLDIsMSw2LDMsOCwxNyw4LDUsOCw1LAorICAgIDgsNiw4LDEyLDgsMTAsOCw5LDgsNSw4LDcsMTAsMjIsMTAsMTIzLAorICAgIDE2LDEsMTIsMiw0LDEsNCwyLDYsMiw2LDIsOCwyLDE2LDQ1LAorICAgIDgsMzQsOCwxOSw4LDEyLDgsMTIsOCwyOCw4LDE3LDEwLDU1LDEwLDEyLAorICAgIDEwLDEwLDgsMTQsNiwzLDQsMSwxNCw2NywxNCw2NCwxNCwyOSwxNiwxMTAsCisgICAgMTQsNDEsMTgsNDUsMTgsMTYsNCwzLDE4LDUzLDE0LDYwLDE0LDQyLDE0LDEyNywKKyAgICAwLDUsMTQsMTI3LDAsMjIsMTAsMjMsOCwxMSw4LDY4LAogfTsKZGlmZiAtLWdpdCBhL1B5dGhvbi9tYWtlb3Bjb2RldGFyZ2V0cy5weSBiL1B5dGhvbi9tYWtlb3Bjb2RldGFyZ2V0cy5weQppbmRleCBkOWEwODU1Li4wMjNjOWU2IDEwMDc1NQotLS0gYS9QeXRob24vbWFrZW9wY29kZXRhcmdldHMucHkKKysrIGIvUHl0aG9uL21ha2VvcGNvZGV0YXJnZXRzLnB5CkBAIC0zLDI0ICszLDM0IEBACiAoZm9yIGNvbXBpbGVycyBzdXBwb3J0aW5nIGNvbXB1dGVkIGdvdG9zIG9yICJsYWJlbHMtYXMtdmFsdWVzIiwgc3VjaCBhcyBnY2MpLgogIiIiCiAKLSMgVGhpcyBjb2RlIHNob3VsZCBzdGF5IGNvbXBhdGlibGUgd2l0aCBQeXRob24gMi4zLCBhdCBsZWFzdCB3aGlsZQotIyBzb21lIG9mIHRoZSBidWlsZGJvdHMgaGF2ZSBQeXRob24gMi4zIGFzIHRoZWlyIHN5c3RlbSBQeXRob24uCi0KLWltcG9ydCBpbXAKIGltcG9ydCBvcworaW1wb3J0IHN5cwogCiAKLWRlZiBmaW5kX21vZHVsZShtb2RuYW1lKToKLSAgICAiIiJGaW5kcyBhbmQgcmV0dXJucyBhIG1vZHVsZSBpbiB0aGUgbG9jYWwgZGlzdC9jaGVja291dC4KLSAgICAiIiIKLSAgICBtb2RwYXRoID0gb3MucGF0aC5qb2luKAotICAgICAgICBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSksICJMaWIiKQotICAgIHJldHVybiBpbXAubG9hZF9tb2R1bGUobW9kbmFtZSwgKmltcC5maW5kX21vZHVsZShtb2RuYW1lLCBbbW9kcGF0aF0pKQordHJ5OgorICAgIGZyb20gaW1wb3J0bGliLm1hY2hpbmVyeSBpbXBvcnQgU291cmNlRmlsZUxvYWRlcgorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGltcG9ydCBpbXAKKworICAgIGRlZiBmaW5kX21vZHVsZShtb2RuYW1lKToKKyAgICAgICAgIiIiRmluZHMgYW5kIHJldHVybnMgYSBtb2R1bGUgaW4gdGhlIGxvY2FsIGRpc3QvY2hlY2tvdXQuCisgICAgICAgICIiIgorICAgICAgICBtb2RwYXRoID0gb3MucGF0aC5qb2luKAorICAgICAgICAgICAgb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykpLCAiTGliIikKKyAgICAgICAgcmV0dXJuIGltcC5sb2FkX21vZHVsZShtb2RuYW1lLCAqaW1wLmZpbmRfbW9kdWxlKG1vZG5hbWUsIFttb2RwYXRoXSkpCitlbHNlOgorICAgIGRlZiBmaW5kX21vZHVsZShtb2RuYW1lKToKKyAgICAgICAgIiIiRmluZHMgYW5kIHJldHVybnMgYSBtb2R1bGUgaW4gdGhlIGxvY2FsIGRpc3QvY2hlY2tvdXQuCisgICAgICAgICIiIgorICAgICAgICBtb2RwYXRoID0gb3MucGF0aC5qb2luKAorICAgICAgICAgICAgb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykpLCAiTGliIiwgbW9kbmFtZSArICIucHkiKQorICAgICAgICByZXR1cm4gU291cmNlRmlsZUxvYWRlcihtb2RuYW1lLCBtb2RwYXRoKS5sb2FkX21vZHVsZSgpCisKIAogZGVmIHdyaXRlX2NvbnRlbnRzKGYpOgogICAgICIiIldyaXRlIEMgY29kZSBjb250ZW50cyB0byB0aGUgdGFyZ2V0IGZpbGUgb2JqZWN0LgogICAgICIiIgotICAgIG9wY29kZSA9IGZpbmRfbW9kdWxlKCJvcGNvZGUiKQorICAgIG9wY29kZSA9IGZpbmRfbW9kdWxlKCdvcGNvZGUnKQogICAgIHRhcmdldHMgPSBbJ191bmtub3duX29wY29kZSddICogMjU2CiAgICAgZm9yIG9wbmFtZSwgb3AgaW4gb3Bjb2RlLm9wbWFwLml0ZW1zKCk6CiAgICAgICAgIHRhcmdldHNbb3BdID0gIlRBUkdFVF8lcyIgJSBvcG5hbWUKQEAgLTI5LDE1ICszOSwxNyBAQAogICAgIGYud3JpdGUoIlxufTtcbiIpCiAKIAotaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICBpbXBvcnQgc3lzCi0gICAgYXNzZXJ0IGxlbihzeXMuYXJndikgPCAzLCAiVG9vIG1hbnkgYXJndW1lbnRzIgorZGVmIG1haW4oKToKKyAgICBpZiBsZW4oc3lzLmFyZ3YpID49IDM6CisgICAgICAgIHN5cy5leGl0KCJUb28gbWFueSBhcmd1bWVudHMiKQogICAgIGlmIGxlbihzeXMuYXJndikgPT0gMjoKICAgICAgICAgdGFyZ2V0ID0gc3lzLmFyZ3ZbMV0KICAgICBlbHNlOgogICAgICAgICB0YXJnZXQgPSAiUHl0aG9uL29wY29kZV90YXJnZXRzLmgiCi0gICAgZiA9IG9wZW4odGFyZ2V0LCAidyIpCi0gICAgdHJ5OgorICAgIHdpdGggb3Blbih0YXJnZXQsICJ3IikgYXMgZjoKICAgICAgICAgd3JpdGVfY29udGVudHMoZikKLSAgICBmaW5hbGx5OgotICAgICAgICBmLmNsb3NlKCkKKyAgICBwcmludCgiSnVtcCB0YWJsZSB3cml0dGVuIGludG8gJXMiICUgdGFyZ2V0KQorCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgbWFpbigpCmRpZmYgLS1naXQgYS9QeXRob24vbWFyc2hhbC5jIGIvUHl0aG9uL21hcnNoYWwuYwppbmRleCA1YjhkZTk5Li44N2E0YjI0IDEwMDY0NAotLS0gYS9QeXRob24vbWFyc2hhbC5jCisrKyBiL1B5dGhvbi9tYXJzaGFsLmMKQEAgLTEzMCw3ICsxMzAsNyBAQAogICAgIG0gPSBwLT5lbmQgLSBwLT5wdHI7CiAgICAgaWYgKHAtPmZwICE9IE5VTEwpIHsKICAgICAgICAgaWYgKG4gPD0gbSkgewotICAgICAgICAgICAgUHlfTUVNQ1BZKHAtPnB0ciwgcywgbik7CisgICAgICAgICAgICBtZW1jcHkocC0+cHRyLCBzLCBuKTsKICAgICAgICAgICAgIHAtPnB0ciArPSBuOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewpAQCAtMTQwLDcgKzE0MCw3IEBACiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBpZiAobiA8PSBtIHx8IHdfcmVzZXJ2ZShwLCBuIC0gbSkpIHsKLSAgICAgICAgICAgIFB5X01FTUNQWShwLT5wdHIsIHMsIG4pOworICAgICAgICAgICAgbWVtY3B5KHAtPnB0ciwgcywgbik7CiAgICAgICAgICAgICBwLT5wdHIgKz0gbjsKICAgICAgICAgfQogICAgIH0KQEAgLTI2MywxMCArMjYzLDEwIEBACiAgICAgaWYgKFB5X1JFRkNOVCh2KSA9PSAxKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGVudHJ5ID0gX1B5X2hhc2h0YWJsZV9nZXRfZW50cnkocC0+aGFzaHRhYmxlLCB2KTsKKyAgICBlbnRyeSA9IF9QeV9IQVNIVEFCTEVfR0VUX0VOVFJZKHAtPmhhc2h0YWJsZSwgdik7CiAgICAgaWYgKGVudHJ5ICE9IE5VTEwpIHsKICAgICAgICAgLyogd3JpdGUgdGhlIHJlZmVyZW5jZSBpbmRleCB0byB0aGUgc3RyZWFtICovCi0gICAgICAgIF9QeV9IQVNIVEFCTEVfRU5UUllfUkVBRF9EQVRBKHAtPmhhc2h0YWJsZSwgJncsIHNpemVvZih3KSwgZW50cnkpOworICAgICAgICBfUHlfSEFTSFRBQkxFX0VOVFJZX1JFQURfREFUQShwLT5oYXNodGFibGUsIGVudHJ5LCB3KTsKICAgICAgICAgLyogd2UgZG9uJ3Qgc3RvcmUgImxvbmciIGluZGljZXMgaW4gdGhlIGRpY3QgKi8KICAgICAgICAgYXNzZXJ0KDAgPD0gdyAmJiB3IDw9IDB4N2ZmZmZmZmYpOwogICAgICAgICB3X2J5dGUoVFlQRV9SRUYsIHApOwpAQCAtNTcxLDcgKzU3MSw4IEBACiB3X2luaXRfcmVmcyhXRklMRSAqd2YsIGludCB2ZXJzaW9uKQogewogICAgIGlmICh2ZXJzaW9uID49IDMpIHsKLSAgICAgICAgd2YtPmhhc2h0YWJsZSA9IF9QeV9oYXNodGFibGVfbmV3KHNpemVvZihpbnQpLCBfUHlfaGFzaHRhYmxlX2hhc2hfcHRyLAorICAgICAgICB3Zi0+aGFzaHRhYmxlID0gX1B5X2hhc2h0YWJsZV9uZXcoc2l6ZW9mKFB5T2JqZWN0ICopLCBzaXplb2YoaW50KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9oYXNodGFibGVfaGFzaF9wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2NvbXBhcmVfZGlyZWN0KTsKICAgICAgICAgaWYgKHdmLT5oYXNodGFibGUgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKQEAgLTU4Miw5ICs1ODMsMTMgQEAKIH0KIAogc3RhdGljIGludAotd19kZWNyZWZfZW50cnkoX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeSwgdm9pZCAqUHlfVU5VU0VEKGRhdGEpKQord19kZWNyZWZfZW50cnkoX1B5X2hhc2h0YWJsZV90ICpodCwgX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeSwKKyAgICAgICAgICAgICAgIHZvaWQgKlB5X1VOVVNFRChkYXRhKSkKIHsKLSAgICBQeV9YREVDUkVGKGVudHJ5LT5rZXkpOworICAgIFB5T2JqZWN0ICplbnRyeV9rZXk7CisKKyAgICBfUHlfSEFTSFRBQkxFX0VOVFJZX1JFQURfS0VZKGh0LCBlbnRyeSwgZW50cnlfa2V5KTsKKyAgICBQeV9YREVDUkVGKGVudHJ5X2tleSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTY0Myw3ICs2NDgsNyBAQAogICAgIFB5T2JqZWN0ICpyZWZzOyAgLyogYSBsaXN0ICovCiB9IFJGSUxFOwogCi1zdGF0aWMgY2hhciAqCitzdGF0aWMgY29uc3QgY2hhciAqCiByX3N0cmluZyhQeV9zc2l6ZV90IG4sIFJGSUxFICpwKQogewogICAgIFB5X3NzaXplX3QgcmVhZCA9IC0xOwpAQCAtNzI5LDcgKzczNCw3IEBACiAgICAgICAgIGMgPSBnZXRjKHAtPmZwKTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIGNoYXIgKnB0ciA9IHJfc3RyaW5nKDEsIHApOworICAgICAgICBjb25zdCBjaGFyICpwdHIgPSByX3N0cmluZygxLCBwKTsKICAgICAgICAgaWYgKHB0ciAhPSBOVUxMKQogICAgICAgICAgICAgYyA9ICoodW5zaWduZWQgY2hhciAqKSBwdHI7CiAgICAgfQpAQCAtNzQwLDkgKzc0NSw5IEBACiByX3Nob3J0KFJGSUxFICpwKQogewogICAgIHNob3J0IHggPSAtMTsKLSAgICB1bnNpZ25lZCBjaGFyICpidWZmZXI7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYnVmZmVyOwogCi0gICAgYnVmZmVyID0gKHVuc2lnbmVkIGNoYXIgKikgcl9zdHJpbmcoMiwgcCk7CisgICAgYnVmZmVyID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgcl9zdHJpbmcoMiwgcCk7CiAgICAgaWYgKGJ1ZmZlciAhPSBOVUxMKSB7CiAgICAgICAgIHggPSBidWZmZXJbMF07CiAgICAgICAgIHggfD0gYnVmZmVyWzFdIDw8IDg7CkBAIC03NTYsOSArNzYxLDkgQEAKIHJfbG9uZyhSRklMRSAqcCkKIHsKICAgICBsb25nIHggPSAtMTsKLSAgICB1bnNpZ25lZCBjaGFyICpidWZmZXI7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYnVmZmVyOwogCi0gICAgYnVmZmVyID0gKHVuc2lnbmVkIGNoYXIgKikgcl9zdHJpbmcoNCwgcCk7CisgICAgYnVmZmVyID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgcl9zdHJpbmcoNCwgcCk7CiAgICAgaWYgKGJ1ZmZlciAhPSBOVUxMKSB7CiAgICAgICAgIHggPSBidWZmZXJbMF07CiAgICAgICAgIHggfD0gKGxvbmcpYnVmZmVyWzFdIDw8IDg7CkBAIC05NzgsNyArOTgzLDggQEAKIAogICAgIGNhc2UgVFlQRV9GTE9BVDoKICAgICAgICAgewotICAgICAgICAgICAgY2hhciBidWZbMjU2XSwgKnB0cjsKKyAgICAgICAgICAgIGNoYXIgYnVmWzI1Nl07CisgICAgICAgICAgICBjb25zdCBjaGFyICpwdHI7CiAgICAgICAgICAgICBkb3VibGUgZHg7CiAgICAgICAgICAgICBuID0gcl9ieXRlKHApOwogICAgICAgICAgICAgaWYgKG4gPT0gRU9GKSB7CkBAIC0xMDAxLDkgKzEwMDcsOSBAQAogCiAgICAgY2FzZSBUWVBFX0JJTkFSWV9GTE9BVDoKICAgICAgICAgewotICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqYnVmOworICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYnVmOwogICAgICAgICAgICAgZG91YmxlIHg7Ci0gICAgICAgICAgICBidWYgPSAodW5zaWduZWQgY2hhciAqKSByX3N0cmluZyg4LCBwKTsKKyAgICAgICAgICAgIGJ1ZiA9IChjb25zdCB1bnNpZ25lZCBjaGFyICopIHJfc3RyaW5nKDgsIHApOwogICAgICAgICAgICAgaWYgKGJ1ZiA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgeCA9IF9QeUZsb2F0X1VucGFjazgoYnVmLCAxKTsKQEAgLTEwMTYsNyArMTAyMiw4IEBACiAKICAgICBjYXNlIFRZUEVfQ09NUExFWDoKICAgICAgICAgewotICAgICAgICAgICAgY2hhciBidWZbMjU2XSwgKnB0cjsKKyAgICAgICAgICAgIGNoYXIgYnVmWzI1Nl07CisgICAgICAgICAgICBjb25zdCBjaGFyICpwdHI7CiAgICAgICAgICAgICBQeV9jb21wbGV4IGM7CiAgICAgICAgICAgICBuID0gcl9ieXRlKHApOwogICAgICAgICAgICAgaWYgKG4gPT0gRU9GKSB7CkBAIC0xMDUzLDE1ICsxMDYwLDE1IEBACiAKICAgICBjYXNlIFRZUEVfQklOQVJZX0NPTVBMRVg6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKmJ1ZjsKKyAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1ZjsKICAgICAgICAgICAgIFB5X2NvbXBsZXggYzsKLSAgICAgICAgICAgIGJ1ZiA9ICh1bnNpZ25lZCBjaGFyICopIHJfc3RyaW5nKDgsIHApOworICAgICAgICAgICAgYnVmID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgcl9zdHJpbmcoOCwgcCk7CiAgICAgICAgICAgICBpZiAoYnVmID09IE5VTEwpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjLnJlYWwgPSBfUHlGbG9hdF9VbnBhY2s4KGJ1ZiwgMSk7CiAgICAgICAgICAgICBpZiAoYy5yZWFsID09IC0xLjAgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGJ1ZiA9ICh1bnNpZ25lZCBjaGFyICopIHJfc3RyaW5nKDgsIHApOworICAgICAgICAgICAgYnVmID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgcl9zdHJpbmcoOCwgcCk7CiAgICAgICAgICAgICBpZiAoYnVmID09IE5VTEwpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjLmltYWcgPSBfUHlGbG9hdF9VbnBhY2s4KGJ1ZiwgMSk7CkBAIC0xMDc0LDcgKzEwODEsNyBAQAogCiAgICAgY2FzZSBUWVBFX1NUUklORzoKICAgICAgICAgewotICAgICAgICAgICAgY2hhciAqcHRyOworICAgICAgICAgICAgY29uc3QgY2hhciAqcHRyOwogICAgICAgICAgICAgbiA9IHJfbG9uZyhwKTsKICAgICAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTExOSw3ICsxMTI2LDcgQEAKICAgICAgICAgfQogICAgIF9yZWFkX2FzY2lpOgogICAgICAgICB7Ci0gICAgICAgICAgICBjaGFyICpwdHI7CisgICAgICAgICAgICBjb25zdCBjaGFyICpwdHI7CiAgICAgICAgICAgICBwdHIgPSByX3N0cmluZyhuLCBwKTsKICAgICAgICAgICAgIGlmIChwdHIgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTExMzcsNyArMTE0NCw3IEBACiAgICAgICAgIGlzX2ludGVybmVkID0gMTsKICAgICBjYXNlIFRZUEVfVU5JQ09ERToKICAgICAgICAgewotICAgICAgICBjaGFyICpidWZmZXI7CisgICAgICAgIGNvbnN0IGNoYXIgKmJ1ZmZlcjsKIAogICAgICAgICBuID0gcl9sb25nKHApOwogICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKQEAgLTEyNjQsNDEgKzEyNzEsNTIgQEAKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiYmFkIG1hcnNoYWwgZGF0YSAoc2V0IHNpemUgb3V0IG9mIHJhbmdlKSIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgdiA9ICh0eXBlID09IFRZUEVfU0VUKSA/IFB5U2V0X05ldyhOVUxMKSA6IFB5RnJvemVuU2V0X05ldyhOVUxMKTsKLSAgICAgICAgaWYgKHR5cGUgPT0gVFlQRV9TRVQpIHsKLSAgICAgICAgICAgIFJfUkVGKHYpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLyogbXVzdCB1c2UgZGVsYXllZCByZWdpc3RyYXRpb24gb2YgZnJvemVuc2V0cyBiZWNhdXNlIHRoZXkgbXVzdAotICAgICAgICAgICAgICogYmUgaW5pdCB3aXRoIGEgcmVmY291bnQgb2YgMQotICAgICAgICAgICAgICovCi0gICAgICAgICAgICBpZHggPSByX3JlZl9yZXNlcnZlKGZsYWcsIHApOwotICAgICAgICAgICAgaWYgKGlkeCA8IDApCi0gICAgICAgICAgICAgICAgUHlfQ0xFQVIodik7IC8qIHNpZ25hbCBlcnJvciAqLwotICAgICAgICB9Ci0gICAgICAgIGlmICh2ID09IE5VTEwpCi0gICAgICAgICAgICBicmVhazsKIAotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7Ci0gICAgICAgICAgICB2MiA9IHJfb2JqZWN0KHApOwotICAgICAgICAgICAgaWYgKCB2MiA9PSBOVUxMICkgewotICAgICAgICAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJOVUxMIG9iamVjdCBpbiBtYXJzaGFsIGRhdGEgZm9yIHNldCIpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgICAgICB2ID0gTlVMTDsKKyAgICAgICAgaWYgKG4gPT0gMCAmJiB0eXBlID09IFRZUEVfRlJPWkVOU0VUKSB7CisgICAgICAgICAgICAvKiBjYWxsIGZyb3plbnNldCgpIHRvIGdldCB0aGUgZW1wdHkgZnJvemVuc2V0IHNpbmdsZXRvbiAqLworICAgICAgICAgICAgdiA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbigoUHlPYmplY3QqKSZQeUZyb3plblNldF9UeXBlLCBOVUxMKTsKKyAgICAgICAgICAgIGlmICh2ID09IE5VTEwpCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoUHlTZXRfQWRkKHYsIHYyKSA9PSAtMSkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodjIpOwotICAgICAgICAgICAgICAgIHYgPSBOVUxMOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlfREVDUkVGKHYyKTsKKyAgICAgICAgICAgIFJfUkVGKHYpOworICAgICAgICAgICAgcmV0dmFsID0gdjsKICAgICAgICAgfQotICAgICAgICBpZiAodHlwZSAhPSBUWVBFX1NFVCkKLSAgICAgICAgICAgIHYgPSByX3JlZl9pbnNlcnQodiwgaWR4LCBmbGFnLCBwKTsKLSAgICAgICAgcmV0dmFsID0gdjsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB2ID0gKHR5cGUgPT0gVFlQRV9TRVQpID8gUHlTZXRfTmV3KE5VTEwpIDogUHlGcm96ZW5TZXRfTmV3KE5VTEwpOworICAgICAgICAgICAgaWYgKHR5cGUgPT0gVFlQRV9TRVQpIHsKKyAgICAgICAgICAgICAgICBSX1JFRih2KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLyogbXVzdCB1c2UgZGVsYXllZCByZWdpc3RyYXRpb24gb2YgZnJvemVuc2V0cyBiZWNhdXNlIHRoZXkgbXVzdAorICAgICAgICAgICAgICAgICAqIGJlIGluaXQgd2l0aCBhIHJlZmNvdW50IG9mIDEKKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBpZHggPSByX3JlZl9yZXNlcnZlKGZsYWcsIHApOworICAgICAgICAgICAgICAgIGlmIChpZHggPCAwKQorICAgICAgICAgICAgICAgICAgICBQeV9DTEVBUih2KTsgLyogc2lnbmFsIGVycm9yICovCisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodiA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgICAgICAgICAgICAgdjIgPSByX29iamVjdChwKTsKKyAgICAgICAgICAgICAgICBpZiAoIHYyID09IE5VTEwgKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5VTEwgb2JqZWN0IGluIG1hcnNoYWwgZGF0YSBmb3Igc2V0Iik7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKKyAgICAgICAgICAgICAgICAgICAgdiA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoUHlTZXRfQWRkKHYsIHYyKSA9PSAtMSkgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodik7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2Mik7CisgICAgICAgICAgICAgICAgICAgIHYgPSBOVUxMOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHYyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh0eXBlICE9IFRZUEVfU0VUKQorICAgICAgICAgICAgICAgIHYgPSByX3JlZl9pbnNlcnQodiwgaWR4LCBmbGFnLCBwKTsKKyAgICAgICAgICAgIHJldHZhbCA9IHY7CisgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFRZUEVfQ09ERToKZGlmZiAtLWdpdCBhL1B5dGhvbi9tb2RzdXBwb3J0LmMgYi9QeXRob24vbW9kc3VwcG9ydC5jCmluZGV4IDBkMDkzNzEuLmFhYmVlOGYgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9tb2RzdXBwb3J0LmMKKysrIGIvUHl0aG9uL21vZHN1cHBvcnQuYwpAQCAtMjYwLDEzICsyNjAsMTIgQEAKICAgICAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZyhuKTsKICAgICAgICAgfQogCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICAgICAgY2FzZSAnTCc6Ci0gICAgICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZygoUFlfTE9OR19MT05HKXZhX2FyZygqcF92YSwgUFlfTE9OR19MT05HKSk7CisgICAgICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZygobG9uZyBsb25nKXZhX2FyZygqcF92YSwgbG9uZyBsb25nKSk7CiAKICAgICAgICAgY2FzZSAnSyc6Ci0gICAgICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKChQWV9MT05HX0xPTkcpdmFfYXJnKCpwX3ZhLCB1bnNpZ25lZCBQWV9MT05HX0xPTkcpKTsKLSNlbmRpZgorICAgICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZygobG9uZyBsb25nKXZhX2FyZygqcF92YSwgdW5zaWduZWQgbG9uZyBsb25nKSk7CisKICAgICAgICAgY2FzZSAndSc6CiAgICAgICAgIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICp2OwpAQCAtMzE4LDcgKzMxNyw3IEBACiAgICAgICAgIGNhc2UgJ1UnOiAgIC8qIFhYWCBkZXByZWNhdGVkIGFsaWFzICovCiAgICAgICAgIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICp2OwotICAgICAgICAgICAgY2hhciAqc3RyID0gdmFfYXJnKCpwX3ZhLCBjaGFyICopOworICAgICAgICAgICAgY29uc3QgY2hhciAqc3RyID0gdmFfYXJnKCpwX3ZhLCBjb25zdCBjaGFyICopOwogICAgICAgICAgICAgUHlfc3NpemVfdCBuOwogICAgICAgICAgICAgaWYgKCoqcF9mb3JtYXQgPT0gJyMnKSB7CiAgICAgICAgICAgICAgICAgKysqcF9mb3JtYXQ7CkBAIC0zNTEsNyArMzUwLDcgQEAKICAgICAgICAgY2FzZSAneSc6CiAgICAgICAgIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICp2OwotICAgICAgICAgICAgY2hhciAqc3RyID0gdmFfYXJnKCpwX3ZhLCBjaGFyICopOworICAgICAgICAgICAgY29uc3QgY2hhciAqc3RyID0gdmFfYXJnKCpwX3ZhLCBjb25zdCBjaGFyICopOwogICAgICAgICAgICAgUHlfc3NpemVfdCBuOwogICAgICAgICAgICAgaWYgKCoqcF9mb3JtYXQgPT0gJyMnKSB7CiAgICAgICAgICAgICAgICAgKysqcF9mb3JtYXQ7CkBAIC00NjgsOCArNDY3LDcgQEAKICAgICBjb25zdCBjaGFyICpmID0gZm9ybWF0OwogICAgIGludCBuID0gY291bnRmb3JtYXQoZiwgJ1wwJyk7CiAgICAgdmFfbGlzdCBsdmE7Ci0KLSAgICAgICAgUHlfVkFfQ09QWShsdmEsIHZhKTsKKyAgICBQeU9iamVjdCAqcmV0dmFsOwogCiAgICAgaWYgKG4gPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTQ3Nyw5ICs0NzUsMTQgQEAKICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgICAgICByZXR1cm4gUHlfTm9uZTsKICAgICB9Ci0gICAgaWYgKG4gPT0gMSkKLSAgICAgICAgcmV0dXJuIGRvX21rdmFsdWUoJmYsICZsdmEsIGZsYWdzKTsKLSAgICByZXR1cm4gZG9fbWt0dXBsZSgmZiwgJmx2YSwgJ1wwJywgbiwgZmxhZ3MpOworICAgIHZhX2NvcHkobHZhLCB2YSk7CisgICAgaWYgKG4gPT0gMSkgeworICAgICAgICByZXR2YWwgPSBkb19ta3ZhbHVlKCZmLCAmbHZhLCBmbGFncyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dmFsID0gZG9fbWt0dXBsZSgmZiwgJmx2YSwgJ1wwJywgbiwgZmxhZ3MpOworICAgIH0KKyAgICB2YV9lbmQobHZhKTsKKyAgICByZXR1cm4gcmV0dmFsOwogfQogCiAKZGlmZiAtLWdpdCBhL1B5dGhvbi9teXN0cnRvdWwuYyBiL1B5dGhvbi9teXN0cnRvdWwuYwppbmRleCA5ODQyOWQ0Li5hODU3OTBlIDEwMDY0NAotLS0gYS9QeXRob24vbXlzdHJ0b3VsLmMKKysrIGIvUHl0aG9uL215c3RydG91bC5jCkBAIC0xNyw3ICsxNyw3IEBACiAgKiBzbWFsbG1heFtiYXNlXSBpcyB0aGUgbGFyZ2VzdCB1bnNpZ25lZCBsb25nIGkgc3VjaCB0aGF0CiAgKiBpICogYmFzZSBkb2Vzbid0IG92ZXJmbG93IHVuc2lnbmVkIGxvbmcuCiAgKi8KLXN0YXRpYyB1bnNpZ25lZCBsb25nIHNtYWxsbWF4W10gPSB7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgbG9uZyBzbWFsbG1heFtdID0gewogICAgIDAsIC8qIGJhc2VzIDAgYW5kIDEgYXJlIGludmFsaWQgKi8KICAgICAwLAogICAgIFVMT05HX01BWCAvIDIsCkBAIC02MiwxNCArNjIsMTQgQEAKICAqIE5vdGUgdGhhdCB0aGlzIGlzIHBlc3NpbWlzdGljIGlmIHNpemVvZihsb25nKSA+IDQuCiAgKi8KICNpZiBTSVpFT0ZfTE9ORyA9PSA0Ci1zdGF0aWMgaW50IGRpZ2l0bGltaXRbXSA9IHsKK3N0YXRpYyBjb25zdCBpbnQgZGlnaXRsaW1pdFtdID0gewogICAgIDAsICAwLCAzMiwgMjAsIDE2LCAxMywgMTIsIDExLCAxMCwgMTAsICAvKiAgMCAtICA5ICovCiAgICAgOSwgIDksICA4LCAgOCwgIDgsICA4LCAgOCwgIDcsICA3LCAgNywgIC8qIDEwIC0gMTkgKi8KICAgICA3LCAgNywgIDcsICA3LCAgNiwgIDYsICA2LCAgNiwgIDYsICA2LCAgLyogMjAgLSAyOSAqLwogICAgIDYsICA2LCAgNiwgIDYsICA2LCAgNiwgIDZ9OyAgICAgICAgICAgICAvKiAzMCAtIDM2ICovCiAjZWxpZiBTSVpFT0ZfTE9ORyA9PSA4CiAvKiBbaW50KG1hdGguZmxvb3IobWF0aC5sb2coMioqNjQsIGkpKSkgZm9yIGkgaW4gcmFuZ2UoMiwgMzcpXSAqLwotc3RhdGljIGludCBkaWdpdGxpbWl0W10gPSB7CitzdGF0aWMgY29uc3QgaW50IGRpZ2l0bGltaXRbXSA9IHsKICAgICAgICAgIDAsICAgMCwgNjQsIDQwLCAzMiwgMjcsIDI0LCAyMiwgMjEsIDIwLCAgLyogIDAgLSAgOSAqLwogICAgIDE5LCAgMTgsIDE3LCAxNywgMTYsIDE2LCAxNiwgMTUsIDE1LCAxNSwgIC8qIDEwIC0gMTkgKi8KICAgICAxNCwgIDE0LCAxNCwgMTQsIDEzLCAxMywgMTMsIDEzLCAxMywgMTMsICAvKiAyMCAtIDI5ICovCmRpZmYgLS1naXQgYS9QeXRob24vb3Bjb2RlX3RhcmdldHMuaCBiL1B5dGhvbi9vcGNvZGVfdGFyZ2V0cy5oCmluZGV4IDE5MjU5ZTEuLjcyZDI0MDggMTAwNjQ0Ci0tLSBhL1B5dGhvbi9vcGNvZGVfdGFyZ2V0cy5oCisrKyBiL1B5dGhvbi9vcGNvZGVfdGFyZ2V0cy5oCkBAIC04NCw3ICs4NCw3IEBACiAgICAgJiZUQVJHRVRfV0lUSF9DTEVBTlVQX0ZJTklTSCwKICAgICAmJlRBUkdFVF9SRVRVUk5fVkFMVUUsCiAgICAgJiZUQVJHRVRfSU1QT1JUX1NUQVIsCi0gICAgJiZfdW5rbm93bl9vcGNvZGUsCisgICAgJiZUQVJHRVRfU0VUVVBfQU5OT1RBVElPTlMsCiAgICAgJiZUQVJHRVRfWUlFTERfVkFMVUUsCiAgICAgJiZUQVJHRVRfUE9QX0JMT0NLLAogICAgICYmVEFSR0VUX0VORF9GSU5BTExZLApAQCAtMTI2LDIyICsxMjYsMjIgQEAKICAgICAmJlRBUkdFVF9MT0FEX0ZBU1QsCiAgICAgJiZUQVJHRVRfU1RPUkVfRkFTVCwKICAgICAmJlRBUkdFVF9ERUxFVEVfRkFTVCwKLSAgICAmJl91bmtub3duX29wY29kZSwKKyAgICAmJlRBUkdFVF9TVE9SRV9BTk5PVEFUSU9OLAogICAgICYmX3Vua25vd25fb3Bjb2RlLAogICAgICYmX3Vua25vd25fb3Bjb2RlLAogICAgICYmVEFSR0VUX1JBSVNFX1ZBUkFSR1MsCiAgICAgJiZUQVJHRVRfQ0FMTF9GVU5DVElPTiwKICAgICAmJlRBUkdFVF9NQUtFX0ZVTkNUSU9OLAogICAgICYmVEFSR0VUX0JVSUxEX1NMSUNFLAotICAgICYmVEFSR0VUX01BS0VfQ0xPU1VSRSwKKyAgICAmJl91bmtub3duX29wY29kZSwKICAgICAmJlRBUkdFVF9MT0FEX0NMT1NVUkUsCiAgICAgJiZUQVJHRVRfTE9BRF9ERVJFRiwKICAgICAmJlRBUkdFVF9TVE9SRV9ERVJFRiwKICAgICAmJlRBUkdFVF9ERUxFVEVfREVSRUYsCiAgICAgJiZfdW5rbm93bl9vcGNvZGUsCi0gICAgJiZUQVJHRVRfQ0FMTF9GVU5DVElPTl9WQVIsCisgICAgJiZfdW5rbm93bl9vcGNvZGUsCiAgICAgJiZUQVJHRVRfQ0FMTF9GVU5DVElPTl9LVywKLSAgICAmJlRBUkdFVF9DQUxMX0ZVTkNUSU9OX1ZBUl9LVywKKyAgICAmJlRBUkdFVF9DQUxMX0ZVTkNUSU9OX0VYLAogICAgICYmVEFSR0VUX1NFVFVQX1dJVEgsCiAgICAgJiZUQVJHRVRfRVhURU5ERURfQVJHLAogICAgICYmVEFSR0VUX0xJU1RfQVBQRU5ELApAQCAtMTU0LDEwICsxNTQsMTAgQEAKICAgICAmJlRBUkdFVF9CVUlMRF9UVVBMRV9VTlBBQ0ssCiAgICAgJiZUQVJHRVRfQlVJTERfU0VUX1VOUEFDSywKICAgICAmJlRBUkdFVF9TRVRVUF9BU1lOQ19XSVRILAotICAgICYmX3Vua25vd25fb3Bjb2RlLAotICAgICYmX3Vua25vd25fb3Bjb2RlLAotICAgICYmX3Vua25vd25fb3Bjb2RlLAotICAgICYmX3Vua25vd25fb3Bjb2RlLAorICAgICYmVEFSR0VUX0ZPUk1BVF9WQUxVRSwKKyAgICAmJlRBUkdFVF9CVUlMRF9DT05TVF9LRVlfTUFQLAorICAgICYmVEFSR0VUX0JVSUxEX1NUUklORywKKyAgICAmJlRBUkdFVF9CVUlMRF9UVVBMRV9VTlBBQ0tfV0lUSF9DQUxMLAogICAgICYmX3Vua25vd25fb3Bjb2RlLAogICAgICYmX3Vua25vd25fb3Bjb2RlLAogICAgICYmX3Vua25vd25fb3Bjb2RlLApkaWZmIC0tZ2l0IGEvUHl0aG9uL3BlZXBob2xlLmMgYi9QeXRob24vcGVlcGhvbGUuYwppbmRleCA0ZTY1N2ZhLi5kZDhmM2U0IDEwMDY0NAotLS0gYS9QeXRob24vcGVlcGhvbGUuYworKysgYi9QeXRob24vcGVlcGhvbGUuYwpAQCAtOCw4ICs4LDggQEAKICNpbmNsdWRlICJjb2RlLmgiCiAjaW5jbHVkZSAic3ltdGFibGUuaCIKICNpbmNsdWRlICJvcGNvZGUuaCIKKyNpbmNsdWRlICJ3b3JkY29kZV9oZWxwZXJzLmgiCiAKLSNkZWZpbmUgR0VUQVJHKGFyciwgaSkgKChpbnQpKChhcnJbaSsyXTw8OCkgKyBhcnJbaSsxXSkpCiAjZGVmaW5lIFVOQ09ORElUSU9OQUxfSlVNUChvcCkgIChvcD09SlVNUF9BQlNPTFVURSB8fCBvcD09SlVNUF9GT1JXQVJEKQogI2RlZmluZSBDT05ESVRJT05BTF9KVU1QKG9wKSAob3A9PVBPUF9KVU1QX0lGX0ZBTFNFIHx8IG9wPT1QT1BfSlVNUF9JRl9UUlVFIFwKICAgICB8fCBvcD09SlVNUF9JRl9GQUxTRV9PUl9QT1AgfHwgb3A9PUpVTVBfSUZfVFJVRV9PUl9QT1ApCkBAIC0xNywyMiArMTcsMTYgQEAKICAgICB8fCBvcD09UE9QX0pVTVBfSUZfRkFMU0UgfHwgb3A9PVBPUF9KVU1QX0lGX1RSVUUgXAogICAgIHx8IG9wPT1KVU1QX0lGX0ZBTFNFX09SX1BPUCB8fCBvcD09SlVNUF9JRl9UUlVFX09SX1BPUCkKICNkZWZpbmUgSlVNUFNfT05fVFJVRShvcCkgKG9wPT1QT1BfSlVNUF9JRl9UUlVFIHx8IG9wPT1KVU1QX0lGX1RSVUVfT1JfUE9QKQotI2RlZmluZSBHRVRKVU1QVEdUKGFyciwgaSkgKEdFVEFSRyhhcnIsaSkgKyAoQUJTT0xVVEVfSlVNUChhcnJbaV0pID8gMCA6IGkrMykpCi0jZGVmaW5lIFNFVEFSRyhhcnIsIGksIHZhbCkgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgYXNzZXJ0KDAgPD0gdmFsICYmIHZhbCA8PSAweGZmZmYpOyAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgYXJyW2krMl0gPSAodW5zaWduZWQgY2hhcikoKCh1bnNpZ25lZCBpbnQpdmFsKT4+OCk7ICAgICBcCi0gICAgYXJyW2krMV0gPSAodW5zaWduZWQgY2hhcikoKCh1bnNpZ25lZCBpbnQpdmFsKSAmIDI1NSk7ICBcCi19IHdoaWxlKDApCi0jZGVmaW5lIENPREVTSVpFKG9wKSAgKEhBU19BUkcob3ApID8gMyA6IDEpCi0jZGVmaW5lIElTQkFTSUNCTE9DSyhibG9ja3MsIHN0YXJ0LCBieXRlcykgXAotICAgIChibG9ja3Nbc3RhcnRdPT1ibG9ja3Nbc3RhcnQrYnl0ZXMtMV0pCisjZGVmaW5lIEdFVEpVTVBUR1QoYXJyLCBpKSAoZ2V0X2FyZyhhcnIsIGkpIC8gc2l6ZW9mKF9QeV9DT0RFVU5JVCkgKyBcCisgICAgICAgIChBQlNPTFVURV9KVU1QKF9QeV9PUENPREUoYXJyW2ldKSkgPyAwIDogaSsxKSkKKyNkZWZpbmUgSVNCQVNJQ0JMT0NLKGJsb2Nrcywgc3RhcnQsIGVuZCkgXAorICAgIChibG9ja3Nbc3RhcnRdPT1ibG9ja3NbZW5kXSkKIAogCiAjZGVmaW5lIENPTlNUX1NUQUNLX0NSRUFURSgpIHsgXAogICAgIGNvbnN0X3N0YWNrX3NpemUgPSAyNTY7IFwKICAgICBjb25zdF9zdGFjayA9IFB5TWVtX05ldyhQeU9iamVjdCAqLCBjb25zdF9zdGFja19zaXplKTsgXAotICAgIGxvYWRfY29uc3Rfc3RhY2sgPSBQeU1lbV9OZXcoUHlfc3NpemVfdCwgY29uc3Rfc3RhY2tfc2l6ZSk7IFwKLSAgICBpZiAoIWNvbnN0X3N0YWNrIHx8ICFsb2FkX2NvbnN0X3N0YWNrKSB7IFwKKyAgICBpZiAoIWNvbnN0X3N0YWNrKSB7IFwKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsgXAogICAgICAgICBnb3RvIGV4aXRFcnJvcjsgXAogICAgIH0gXApAQCAtNDEsMjcgKzM1LDIzIEBACiAjZGVmaW5lIENPTlNUX1NUQUNLX0RFTEVURSgpIGRvIHsgXAogICAgIGlmIChjb25zdF9zdGFjaykgXAogICAgICAgICBQeU1lbV9GcmVlKGNvbnN0X3N0YWNrKTsgXAotICAgIGlmIChsb2FkX2NvbnN0X3N0YWNrKSBcCi0gICAgICAgIFB5TWVtX0ZyZWUobG9hZF9jb25zdF9zdGFjayk7IFwKICAgICB9IHdoaWxlKDApCiAKLSNkZWZpbmUgQ09OU1RfU1RBQ0tfTEVOKCkgKGNvbnN0X3N0YWNrX3RvcCArIDEpCisjZGVmaW5lIENPTlNUX1NUQUNLX0xFTigpICgodW5zaWduZWQpKGNvbnN0X3N0YWNrX3RvcCArIDEpKQogCiAjZGVmaW5lIENPTlNUX1NUQUNLX1BVU0hfT1AoaSkgZG8geyBcCiAgICAgUHlPYmplY3QgKl94OyBcCi0gICAgYXNzZXJ0KGNvZGVzdHJbaV0gPT0gTE9BRF9DT05TVCk7IFwKLSAgICBhc3NlcnQoUHlMaXN0X0dFVF9TSVpFKGNvbnN0cykgPiBHRVRBUkcoY29kZXN0ciwgaSkpOyBcCi0gICAgX3ggPSBQeUxpc3RfR0VUX0lURU0oY29uc3RzLCBHRVRBUkcoY29kZXN0ciwgaSkpOyBcCisgICAgYXNzZXJ0KF9QeV9PUENPREUoY29kZXN0cltpXSkgPT0gTE9BRF9DT05TVCk7IFwKKyAgICBhc3NlcnQoUHlMaXN0X0dFVF9TSVpFKGNvbnN0cykgPiAoUHlfc3NpemVfdClnZXRfYXJnKGNvZGVzdHIsIGkpKTsgXAorICAgIF94ID0gUHlMaXN0X0dFVF9JVEVNKGNvbnN0cywgZ2V0X2FyZyhjb2Rlc3RyLCBpKSk7IFwKICAgICBpZiAoKytjb25zdF9zdGFja190b3AgPj0gY29uc3Rfc3RhY2tfc2l6ZSkgeyBcCiAgICAgICAgIGNvbnN0X3N0YWNrX3NpemUgKj0gMjsgXAogICAgICAgICBQeU1lbV9SZXNpemUoY29uc3Rfc3RhY2ssIFB5T2JqZWN0ICosIGNvbnN0X3N0YWNrX3NpemUpOyBcCi0gICAgICAgIFB5TWVtX1Jlc2l6ZShsb2FkX2NvbnN0X3N0YWNrLCBQeV9zc2l6ZV90LCBjb25zdF9zdGFja19zaXplKTsgXAotICAgICAgICBpZiAoIWNvbnN0X3N0YWNrIHx8ICFsb2FkX2NvbnN0X3N0YWNrKSB7IFwKKyAgICAgICAgaWYgKCFjb25zdF9zdGFjaykgeyBcCiAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOyBcCiAgICAgICAgICAgICBnb3RvIGV4aXRFcnJvcjsgXAogICAgICAgICB9IFwKICAgICB9IFwKLSAgICBsb2FkX2NvbnN0X3N0YWNrW2NvbnN0X3N0YWNrX3RvcF0gPSBpOyBcCiAgICAgY29uc3Rfc3RhY2tbY29uc3Rfc3RhY2tfdG9wXSA9IF94OyBcCiAgICAgaW5fY29uc3RzID0gMTsgXAogICAgIH0gd2hpbGUoMCkKQEAgLTcwLDIyICs2MCwxMTQgQEAKICAgICBjb25zdF9zdGFja190b3AgPSAtMTsgXAogICAgIH0gd2hpbGUoMCkKIAotI2RlZmluZSBDT05TVF9TVEFDS19UT1AoKSBcCi0gICAgY29uc3Rfc3RhY2tbY29uc3Rfc3RhY2tfdG9wXQotCiAjZGVmaW5lIENPTlNUX1NUQUNLX0xBU1ROKGkpIFwKLSAgICAmY29uc3Rfc3RhY2tbY29uc3Rfc3RhY2tfdG9wIC0gaSArIDFdCisgICAgJmNvbnN0X3N0YWNrW0NPTlNUX1NUQUNLX0xFTigpIC0gaV0KIAogI2RlZmluZSBDT05TVF9TVEFDS19QT1AoaSkgZG8geyBcCi0gICAgYXNzZXJ0KGNvbnN0X3N0YWNrX3RvcCArIDEgPj0gaSk7IFwKKyAgICBhc3NlcnQoQ09OU1RfU1RBQ0tfTEVOKCkgPj0gaSk7IFwKICAgICBjb25zdF9zdGFja190b3AgLT0gaTsgXAogICAgIH0gd2hpbGUoMCkKIAotI2RlZmluZSBDT05TVF9TVEFDS19PUF9MQVNUTihpKSBcCi0gICAgKChjb25zdF9zdGFja190b3AgPj0gaSAtIDEpID8gbG9hZF9jb25zdF9zdGFja1tjb25zdF9zdGFja190b3AgLSBpICsgMV0gOiAtMSkKKy8qIFNjYW5zIGJhY2sgTiBjb25zZWN1dGl2ZSBMT0FEX0NPTlNUIGluc3RydWN0aW9ucywgc2tpcHBpbmcgTk9QcywKKyAgIHJldHVybnMgaW5kZXggb2YgdGhlIE50aCBsYXN0J3MgTE9BRF9DT05TVCdzIEVYVEVOREVEX0FSRyBwcmVmaXguCisgICBDYWxsZXJzIGFyZSByZXNwb25zaWJsZSB0byBjaGVjayBDT05TVF9TVEFDS19MRU4gYmVmb3JlaGFuZC4KKyovCitzdGF0aWMgUHlfc3NpemVfdAorbGFzdG5fY29uc3Rfc3RhcnQoY29uc3QgX1B5X0NPREVVTklUICpjb2Rlc3RyLCBQeV9zc2l6ZV90IGksIFB5X3NzaXplX3QgbikKK3sKKyAgICBhc3NlcnQobiA+IDApOworICAgIGZvciAoOzspIHsKKyAgICAgICAgaS0tOworICAgICAgICBhc3NlcnQoaSA+PSAwKTsKKyAgICAgICAgaWYgKF9QeV9PUENPREUoY29kZXN0cltpXSkgPT0gTE9BRF9DT05TVCkgeworICAgICAgICAgICAgaWYgKCEtLW4pIHsKKyAgICAgICAgICAgICAgICB3aGlsZSAoaSA+IDAgJiYgX1B5X09QQ09ERShjb2Rlc3RyW2ktMV0pID09IEVYVEVOREVEX0FSRykgeworICAgICAgICAgICAgICAgICAgICBpLS07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYXNzZXJ0KF9QeV9PUENPREUoY29kZXN0cltpXSkgPT0gTk9QIHx8CisgICAgICAgICAgICAgICAgICAgX1B5X09QQ09ERShjb2Rlc3RyW2ldKSA9PSBFWFRFTkRFRF9BUkcpOworICAgICAgICB9CisgICAgfQorfQogCisvKiBTY2FucyB0aHJvdWdoIEVYVEVOREVEIEFSR3MsIHNlZWtpbmcgdGhlIGluZGV4IG9mIHRoZSBlZmZlY3RpdmUgb3Bjb2RlICovCitzdGF0aWMgUHlfc3NpemVfdAorZmluZF9vcChjb25zdCBfUHlfQ09ERVVOSVQgKmNvZGVzdHIsIFB5X3NzaXplX3QgaSkKK3sKKyAgICB3aGlsZSAoX1B5X09QQ09ERShjb2Rlc3RyW2ldKSA9PSBFWFRFTkRFRF9BUkcpIHsKKyAgICAgICAgaSsrOworICAgIH0KKyAgICByZXR1cm4gaTsKK30KIAotLyogUmVwbGFjZSBMT0FEX0NPTlNUIGMxLiBMT0FEX0NPTlNUIGMyIC4uLiBMT0FEX0NPTlNUIGNuIEJVSUxEX1RVUExFIG4KKy8qIEdpdmVuIHRoZSBpbmRleCBvZiB0aGUgZWZmZWN0aXZlIG9wY29kZSwKKyAgIHNjYW4gYmFjayB0byBjb25zdHJ1Y3QgdGhlIG9wYXJnIHdpdGggRVhURU5ERURfQVJHICovCitzdGF0aWMgdW5zaWduZWQgaW50CitnZXRfYXJnKGNvbnN0IF9QeV9DT0RFVU5JVCAqY29kZXN0ciwgUHlfc3NpemVfdCBpKQoreworICAgIF9QeV9DT0RFVU5JVCB3b3JkOworICAgIHVuc2lnbmVkIGludCBvcGFyZyA9IF9QeV9PUEFSRyhjb2Rlc3RyW2ldKTsKKyAgICBpZiAoaSA+PSAxICYmIF9QeV9PUENPREUod29yZCA9IGNvZGVzdHJbaS0xXSkgPT0gRVhURU5ERURfQVJHKSB7CisgICAgICAgIG9wYXJnIHw9IF9QeV9PUEFSRyh3b3JkKSA8PCA4OworICAgICAgICBpZiAoaSA+PSAyICYmIF9QeV9PUENPREUod29yZCA9IGNvZGVzdHJbaS0yXSkgPT0gRVhURU5ERURfQVJHKSB7CisgICAgICAgICAgICBvcGFyZyB8PSBfUHlfT1BBUkcod29yZCkgPDwgMTY7CisgICAgICAgICAgICBpZiAoaSA+PSAzICYmIF9QeV9PUENPREUod29yZCA9IGNvZGVzdHJbaS0zXSkgPT0gRVhURU5ERURfQVJHKSB7CisgICAgICAgICAgICAgICAgb3BhcmcgfD0gX1B5X09QQVJHKHdvcmQpIDw8IDI0OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBvcGFyZzsKK30KKworLyogRmlsbCB0aGUgcmVnaW9uIHdpdGggTk9Qcy4gKi8KK3N0YXRpYyB2b2lkCitmaWxsX25vcHMoX1B5X0NPREVVTklUICpjb2Rlc3RyLCBQeV9zc2l6ZV90IHN0YXJ0LCBQeV9zc2l6ZV90IGVuZCkKK3sKKyAgICBtZW1zZXQoY29kZXN0ciArIHN0YXJ0LCBOT1AsIChlbmQgLSBzdGFydCkgKiBzaXplb2YoX1B5X0NPREVVTklUKSk7Cit9CisKKy8qIEdpdmVuIHRoZSBpbmRleCBvZiB0aGUgZWZmZWN0aXZlIG9wY29kZSwKKyAgIGF0dGVtcHQgdG8gcmVwbGFjZSB0aGUgYXJndW1lbnQsIHRha2luZyBpbnRvIGFjY291bnQgRVhURU5ERURfQVJHLgorICAgUmV0dXJucyAtMSBvbiBmYWlsdXJlLCBvciB0aGUgbmV3IG9wIGluZGV4IG9uIHN1Y2Nlc3MgKi8KK3N0YXRpYyBQeV9zc2l6ZV90CitzZXRfYXJnKF9QeV9DT0RFVU5JVCAqY29kZXN0ciwgUHlfc3NpemVfdCBpLCB1bnNpZ25lZCBpbnQgb3BhcmcpCit7CisgICAgdW5zaWduZWQgaW50IGN1cmFyZyA9IGdldF9hcmcoY29kZXN0ciwgaSk7CisgICAgaW50IGN1cmlsZW4sIG5ld2lsZW47CisgICAgaWYgKGN1cmFyZyA9PSBvcGFyZykKKyAgICAgICAgcmV0dXJuIGk7CisgICAgY3VyaWxlbiA9IGluc3Ryc2l6ZShjdXJhcmcpOworICAgIG5ld2lsZW4gPSBpbnN0cnNpemUob3BhcmcpOworICAgIGlmIChjdXJpbGVuIDwgbmV3aWxlbikgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgd3JpdGVfb3BfYXJnKGNvZGVzdHIgKyBpICsgMSAtIGN1cmlsZW4sIF9QeV9PUENPREUoY29kZXN0cltpXSksIG9wYXJnLCBuZXdpbGVuKTsKKyAgICBmaWxsX25vcHMoY29kZXN0ciwgaSArIDEgLSBjdXJpbGVuICsgbmV3aWxlbiwgaSArIDEpOworICAgIHJldHVybiBpLWN1cmlsZW4rbmV3aWxlbjsKK30KKworLyogQXR0ZW1wdCB0byB3cml0ZSBvcC9hcmcgYXQgZW5kIG9mIHNwZWNpZmllZCByZWdpb24gb2YgbWVtb3J5LgorICAgUHJlY2VkaW5nIG1lbW9yeSBpbiB0aGUgcmVnaW9uIGlzIG92ZXJ3cml0dGVuIHdpdGggTk9Qcy4KKyAgIFJldHVybnMgLTEgb24gZmFpbHVyZSwgb3AgaW5kZXggb24gc3VjY2VzcyAqLworc3RhdGljIFB5X3NzaXplX3QKK2NvcHlfb3BfYXJnKF9QeV9DT0RFVU5JVCAqY29kZXN0ciwgUHlfc3NpemVfdCBpLCB1bnNpZ25lZCBjaGFyIG9wLAorICAgICAgICAgICAgdW5zaWduZWQgaW50IG9wYXJnLCBQeV9zc2l6ZV90IG1heGkpCit7CisgICAgaW50IGlsZW4gPSBpbnN0cnNpemUob3BhcmcpOworICAgIGlmIChpICsgaWxlbiA+IG1heGkpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICB3cml0ZV9vcF9hcmcoY29kZXN0ciArIG1heGkgLSBpbGVuLCBvcCwgb3BhcmcsIGlsZW4pOworICAgIGZpbGxfbm9wcyhjb2Rlc3RyLCBpLCBtYXhpIC0gaWxlbik7CisgICAgcmV0dXJuIG1heGkgLSAxOworfQorCisvKiBSZXBsYWNlIExPQURfQ09OU1QgYzEsIExPQURfQ09OU1QgYzIgLi4uIExPQURfQ09OU1QgY24sIEJVSUxEX1RVUExFIG4KICAgIHdpdGggICAgTE9BRF9DT05TVCAoYzEsIGMyLCAuLi4gY24pLgogICAgVGhlIGNvbnN0cyB0YWJsZSBtdXN0IHN0aWxsIGJlIGluIGxpc3QgZm9ybSBzbyB0aGF0IHRoZQogICAgbmV3IGNvbnN0YW50IChjMSwgYzIsIC4uLiBjbikgY2FuIGJlIGFwcGVuZGVkLgpAQCAtOTQsOSArMTc2LDEwIEBACiAgICBBbHNvIHdvcmtzIGZvciBCVUlMRF9MSVNUIGFuZCBCVUlMVF9TRVQgd2hlbiBmb2xsb3dlZCBieSBhbiAiaW4iIG9yICJub3QgaW4iCiAgICB0ZXN0OyBmb3IgQlVJTERfU0VUIGl0IGFzc2VtYmxlcyBhIGZyb3plbnNldCByYXRoZXIgdGhhbiBhIHR1cGxlLgogKi8KLXN0YXRpYyBpbnQKLXR1cGxlX29mX2NvbnN0YW50cyh1bnNpZ25lZCBjaGFyICpjb2Rlc3RyLCBQeV9zc2l6ZV90IG4sCi0gICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNvbnN0cywgUHlPYmplY3QgKipvYmpzKQorc3RhdGljIFB5X3NzaXplX3QKK2ZvbGRfdHVwbGVfb25fY29uc3RhbnRzKF9QeV9DT0RFVU5JVCAqY29kZXN0ciwgUHlfc3NpemVfdCBjX3N0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBvcGNvZGVfZW5kLCB1bnNpZ25lZCBjaGFyIG9wY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjb25zdHMsIFB5T2JqZWN0ICoqb2JqcywgaW50IG4pCiB7CiAgICAgUHlPYmplY3QgKm5ld2NvbnN0LCAqY29uc3RhbnQ7CiAgICAgUHlfc3NpemVfdCBpLCBsZW5fY29uc3RzOwpAQCAtMTA2LDkgKzE4OSw5IEBACiAKICAgICAvKiBCdWlsZHVwIG5ldyB0dXBsZSBvZiBjb25zdGFudHMgKi8KICAgICBuZXdjb25zdCA9IFB5VHVwbGVfTmV3KG4pOwotICAgIGlmIChuZXdjb25zdCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gMDsKLSAgICBsZW5fY29uc3RzID0gUHlMaXN0X0dFVF9TSVpFKGNvbnN0cyk7CisgICAgaWYgKG5ld2NvbnN0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KICAgICBmb3IgKGk9MCA7IGk8biA7IGkrKykgewogICAgICAgICBjb25zdGFudCA9IG9ianNbaV07CiAgICAgICAgIFB5X0lOQ1JFRihjb25zdGFudCk7CkBAIC0xMTYsMzAgKzE5OSwyNiBAQAogICAgIH0KIAogICAgIC8qIElmIGl0J3MgYSBCVUlMRF9TRVQsIHVzZSB0aGUgUHlUdXBsZSB3ZSBqdXN0IGJ1aWx0IHRvIGNyZWF0ZSBhCi0gICAgICBQeUZyb3plblNldCwgYW5kIHVzZSB0aGF0IGFzIHRoZSBjb25zdGFudCBpbnN0ZWFkOiAqLwotICAgIGlmIChjb2Rlc3RyWzBdID09IEJVSUxEX1NFVCkgewotICAgICAgICBQeU9iamVjdCAqdHVwbGUgPSBuZXdjb25zdDsKLSAgICAgICAgbmV3Y29uc3QgPSBQeUZyb3plblNldF9OZXcodHVwbGUpOwotICAgICAgICBQeV9ERUNSRUYodHVwbGUpOwotICAgICAgICBpZiAobmV3Y29uc3QgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgIFB5RnJvemVuU2V0LCBhbmQgdXNlIHRoYXQgYXMgdGhlIGNvbnN0YW50IGluc3RlYWQ6ICovCisgICAgaWYgKG9wY29kZSA9PSBCVUlMRF9TRVQpIHsKKyAgICAgICAgUHlfU0VUUkVGKG5ld2NvbnN0LCBQeUZyb3plblNldF9OZXcobmV3Y29uc3QpKTsKKyAgICAgICAgaWYgKG5ld2NvbnN0ID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIC8qIEFwcGVuZCBmb2xkZWQgY29uc3RhbnQgb250byBjb25zdHMgKi8KKyAgICBsZW5fY29uc3RzID0gUHlMaXN0X0dFVF9TSVpFKGNvbnN0cyk7CiAgICAgaWYgKFB5TGlzdF9BcHBlbmQoY29uc3RzLCBuZXdjb25zdCkpIHsKICAgICAgICAgUHlfREVDUkVGKG5ld2NvbnN0KTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgUHlfREVDUkVGKG5ld2NvbnN0KTsKIAotICAgIC8qIFdyaXRlIE5PUHMgb3ZlciBvbGQgTE9BRF9DT05TVFMgYW5kCi0gICAgICAgYWRkIGEgbmV3IExPQURfQ09OU1QgbmV3Y29uc3Qgb24gdG9wIG9mIHRoZSBCVUlMRF9UVVBMRSBuICovCi0gICAgY29kZXN0clswXSA9IExPQURfQ09OU1Q7Ci0gICAgU0VUQVJHKGNvZGVzdHIsIDAsIGxlbl9jb25zdHMpOwotICAgIHJldHVybiAxOworICAgIHJldHVybiBjb3B5X29wX2FyZyhjb2Rlc3RyLCBjX3N0YXJ0LCBMT0FEX0NPTlNULCBsZW5fY29uc3RzLCBvcGNvZGVfZW5kKTsKIH0KIAotLyogUmVwbGFjZSBMT0FEX0NPTlNUIGMxLiBMT0FEX0NPTlNUIGMyIEJJTk9QCisvKiBSZXBsYWNlIExPQURfQ09OU1QgYzEsIExPQURfQ09OU1QgYzIsIEJJTk9QCiAgICB3aXRoICAgIExPQURfQ09OU1QgYmlub3AoYzEsYzIpCiAgICBUaGUgY29uc3RzIHRhYmxlIG11c3Qgc3RpbGwgYmUgaW4gbGlzdCBmb3JtIHNvIHRoYXQgdGhlCiAgICBuZXcgY29uc3RhbnQgY2FuIGJlIGFwcGVuZGVkLgpAQCAtMTQ5LDIwICsyMjgsMjEgQEAKICAgIGlzIGJlbG93IGEgdGhyZXNob2xkIHZhbHVlLiAgVGhhdCBrZWVwcyBweWMgZmlsZXMgZnJvbQogICAgYmVjb21pbmcgbGFyZ2UgaW4gdGhlIHByZXNlbmNlIG9mIGNvZGUgbGlrZTogIChOb25lLCkqMTAwMC4KICovCi1zdGF0aWMgaW50Ci1mb2xkX2Jpbm9wc19vbl9jb25zdGFudHModW5zaWduZWQgY2hhciAqY29kZXN0ciwgUHlPYmplY3QgKmNvbnN0cywgUHlPYmplY3QgKipvYmpzKQorc3RhdGljIFB5X3NzaXplX3QKK2ZvbGRfYmlub3BzX29uX2NvbnN0YW50cyhfUHlfQ09ERVVOSVQgKmNvZGVzdHIsIFB5X3NzaXplX3QgY19zdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG9wY29kZV9lbmQsIHVuc2lnbmVkIGNoYXIgb3Bjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjb25zdHMsIFB5T2JqZWN0ICoqb2JqcykKIHsKICAgICBQeU9iamVjdCAqbmV3Y29uc3QsICp2LCAqdzsKICAgICBQeV9zc2l6ZV90IGxlbl9jb25zdHMsIHNpemU7Ci0gICAgaW50IG9wY29kZTsKIAogICAgIC8qIFByZS1jb25kaXRpb25zICovCiAgICAgYXNzZXJ0KFB5TGlzdF9DaGVja0V4YWN0KGNvbnN0cykpOworICAgIGxlbl9jb25zdHMgPSBQeUxpc3RfR0VUX1NJWkUoY29uc3RzKTsKIAogICAgIC8qIENyZWF0ZSBuZXcgY29uc3RhbnQgKi8KICAgICB2ID0gb2Jqc1swXTsKICAgICB3ID0gb2Jqc1sxXTsKLSAgICBvcGNvZGUgPSBjb2Rlc3RyWzBdOwogICAgIHN3aXRjaCAob3Bjb2RlKSB7CiAgICAgICAgIGNhc2UgQklOQVJZX1BPV0VSOgogICAgICAgICAgICAgbmV3Y29uc3QgPSBQeU51bWJlcl9Qb3dlcih2LCB3LCBQeV9Ob25lKTsKQEAgLTIwOCw1MCArMjg4LDQ4IEBACiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCiAgICAgICAgICAgICAgICAgICJ1bmV4cGVjdGVkIGJpbmFyeSBvcGVyYXRpb24gJWQgb24gYSBjb25zdGFudCIsCiAgICAgICAgICAgICAgICAgICAgICBvcGNvZGUpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIGlmIChuZXdjb25zdCA9PSBOVUxMKSB7Ci0gICAgICAgIGlmKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0tleWJvYXJkSW50ZXJydXB0KSkKKyAgICAgICAgaWYoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5Ym9hcmRJbnRlcnJ1cHQpKSB7CiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIHNpemUgPSBQeU9iamVjdF9TaXplKG5ld2NvbnN0KTsKICAgICBpZiAoc2l6ZSA9PSAtMSkgewotICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlib2FyZEludGVycnVwdCkpCi0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5Ym9hcmRJbnRlcnJ1cHQpKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICB9IGVsc2UgaWYgKHNpemUgPiAyMCkgewogICAgICAgICBQeV9ERUNSRUYobmV3Y29uc3QpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAogICAgIC8qIEFwcGVuZCBmb2xkZWQgY29uc3RhbnQgaW50byBjb25zdHMgdGFibGUgKi8KLSAgICBsZW5fY29uc3RzID0gUHlMaXN0X0dFVF9TSVpFKGNvbnN0cyk7CiAgICAgaWYgKFB5TGlzdF9BcHBlbmQoY29uc3RzLCBuZXdjb25zdCkpIHsKICAgICAgICAgUHlfREVDUkVGKG5ld2NvbnN0KTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgUHlfREVDUkVGKG5ld2NvbnN0KTsKIAotICAgIC8qIFdyaXRlIE5PUCBOT1AgTk9QIE5PUCBMT0FEX0NPTlNUIG5ld2NvbnN0ICovCi0gICAgY29kZXN0clstMl0gPSBMT0FEX0NPTlNUOwotICAgIFNFVEFSRyhjb2Rlc3RyLCAtMiwgbGVuX2NvbnN0cyk7Ci0gICAgcmV0dXJuIDE7CisgICAgcmV0dXJuIGNvcHlfb3BfYXJnKGNvZGVzdHIsIGNfc3RhcnQsIExPQURfQ09OU1QsIGxlbl9jb25zdHMsIG9wY29kZV9lbmQpOwogfQogCi1zdGF0aWMgaW50Ci1mb2xkX3VuYXJ5b3BzX29uX2NvbnN0YW50cyh1bnNpZ25lZCBjaGFyICpjb2Rlc3RyLCBQeU9iamVjdCAqY29uc3RzLCBQeU9iamVjdCAqdikKK3N0YXRpYyBQeV9zc2l6ZV90Citmb2xkX3VuYXJ5b3BzX29uX2NvbnN0YW50cyhfUHlfQ09ERVVOSVQgKmNvZGVzdHIsIFB5X3NzaXplX3QgY19zdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgb3Bjb2RlX2VuZCwgdW5zaWduZWQgY2hhciBvcGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY29uc3RzLCBQeU9iamVjdCAqdikKIHsKICAgICBQeU9iamVjdCAqbmV3Y29uc3Q7CiAgICAgUHlfc3NpemVfdCBsZW5fY29uc3RzOwotICAgIGludCBvcGNvZGU7CiAKICAgICAvKiBQcmUtY29uZGl0aW9ucyAqLwogICAgIGFzc2VydChQeUxpc3RfQ2hlY2tFeGFjdChjb25zdHMpKTsKLSAgICBhc3NlcnQoY29kZXN0clswXSA9PSBMT0FEX0NPTlNUKTsKKyAgICBsZW5fY29uc3RzID0gUHlMaXN0X0dFVF9TSVpFKGNvbnN0cyk7CiAKICAgICAvKiBDcmVhdGUgbmV3IGNvbnN0YW50ICovCi0gICAgb3Bjb2RlID0gY29kZXN0clszXTsKICAgICBzd2l0Y2ggKG9wY29kZSkgewogICAgICAgICBjYXNlIFVOQVJZX05FR0FUSVZFOgogICAgICAgICAgICAgbmV3Y29uc3QgPSBQeU51bWJlcl9OZWdhdGl2ZSh2KTsKQEAgLTI2NywzNSArMzQ1LDMxIEBACiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCiAgICAgICAgICAgICAgICAgICJ1bmV4cGVjdGVkIHVuYXJ5IG9wZXJhdGlvbiAlZCBvbiBhIGNvbnN0YW50IiwKICAgICAgICAgICAgICAgICAgICAgIG9wY29kZSk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgaWYgKG5ld2NvbnN0ID09IE5VTEwpIHsKLSAgICAgICAgaWYoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5Ym9hcmRJbnRlcnJ1cHQpKQorICAgICAgICBpZighUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlib2FyZEludGVycnVwdCkpIHsKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKICAgICAvKiBBcHBlbmQgZm9sZGVkIGNvbnN0YW50IGludG8gY29uc3RzIHRhYmxlICovCi0gICAgbGVuX2NvbnN0cyA9IFB5TGlzdF9HRVRfU0laRShjb25zdHMpOwogICAgIGlmIChQeUxpc3RfQXBwZW5kKGNvbnN0cywgbmV3Y29uc3QpKSB7CiAgICAgICAgIFB5X0RFQ1JFRihuZXdjb25zdCk7CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIFB5X0RFQ1JFRihuZXdjb25zdCk7CiAKLSAgICAvKiBXcml0ZSBOT1AgTE9BRF9DT05TVCBuZXdjb25zdCAqLwotICAgIGNvZGVzdHJbMF0gPSBOT1A7Ci0gICAgY29kZXN0clsxXSA9IExPQURfQ09OU1Q7Ci0gICAgU0VUQVJHKGNvZGVzdHIsIDEsIGxlbl9jb25zdHMpOwotICAgIHJldHVybiAxOworICAgIHJldHVybiBjb3B5X29wX2FyZyhjb2Rlc3RyLCBjX3N0YXJ0LCBMT0FEX0NPTlNULCBsZW5fY29uc3RzLCBvcGNvZGVfZW5kKTsKIH0KIAogc3RhdGljIHVuc2lnbmVkIGludCAqCi1tYXJrYmxvY2tzKHVuc2lnbmVkIGNoYXIgKmNvZGUsIFB5X3NzaXplX3QgbGVuKQorbWFya2Jsb2NrcyhfUHlfQ09ERVVOSVQgKmNvZGUsIFB5X3NzaXplX3QgbGVuKQogewogICAgIHVuc2lnbmVkIGludCAqYmxvY2tzID0gUHlNZW1fTmV3KHVuc2lnbmVkIGludCwgbGVuKTsKLSAgICBpbnQgaSxqLCBvcGNvZGUsIGJsb2NrY250ID0gMDsKKyAgICBpbnQgaSwgaiwgb3Bjb2RlLCBibG9ja2NudCA9IDA7CiAKICAgICBpZiAoYmxvY2tzID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKQEAgLTMwNCw4ICszNzgsOCBAQAogICAgIG1lbXNldChibG9ja3MsIDAsIGxlbipzaXplb2YoaW50KSk7CiAKICAgICAvKiBNYXJrIGxhYmVscyBpbiB0aGUgZmlyc3QgcGFzcyAqLwotICAgIGZvciAoaT0wIDsgaTxsZW4gOyBpKz1DT0RFU0laRShvcGNvZGUpKSB7Ci0gICAgICAgIG9wY29kZSA9IGNvZGVbaV07CisgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgIG9wY29kZSA9IF9QeV9PUENPREUoY29kZVtpXSk7CiAgICAgICAgIHN3aXRjaCAob3Bjb2RlKSB7CiAgICAgICAgICAgICBjYXNlIEZPUl9JVEVSOgogICAgICAgICAgICAgY2FzZSBKVU1QX0ZPUldBUkQ6CkBAIC0zMjEsMTIgKzM5NSwxMyBAQAogICAgICAgICAgICAgY2FzZSBTRVRVUF9XSVRIOgogICAgICAgICAgICAgY2FzZSBTRVRVUF9BU1lOQ19XSVRIOgogICAgICAgICAgICAgICAgIGogPSBHRVRKVU1QVEdUKGNvZGUsIGkpOworICAgICAgICAgICAgICAgIGFzc2VydChqIDwgbGVuKTsKICAgICAgICAgICAgICAgICBibG9ja3Nbal0gPSAxOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQogICAgIC8qIEJ1aWxkIGJsb2NrIG51bWJlcnMgaW4gdGhlIHNlY29uZCBwYXNzICovCi0gICAgZm9yIChpPTAgOyBpPGxlbiA7IGkrKykgeworICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgewogICAgICAgICBibG9ja2NudCArPSBibG9ja3NbaV07ICAgICAgICAgIC8qIGluY3JlbWVudCBibG9ja2NudCBvdmVyIGxhYmVscyAqLwogICAgICAgICBibG9ja3NbaV0gPSBibG9ja2NudDsKICAgICB9CkBAIC0zMzcsMzMgKzQxMiwyNyBAQAogICAgVGhlIGNvbnN0cyBvYmplY3Qgc2hvdWxkIHN0aWxsIGJlIGluIGxpc3QgZm9ybSB0byBhbGxvdyBuZXcgY29uc3RhbnRzCiAgICB0byBiZSBhcHBlbmRlZC4KIAotICAgVG8ga2VlcCB0aGUgb3B0aW1pemVyIHNpbXBsZSwgaXQgYmFpbHMgb3V0IChkb2VzIG5vdGhpbmcpIGZvciBjb2RlIHRoYXQKLSAgIGhhcyBhIGxlbmd0aCBvdmVyIDMyLDcwMCwgYW5kIGRvZXMgbm90IGNhbGN1bGF0ZSBleHRlbmRlZCBhcmd1bWVudHMuCi0gICBUaGF0IGFsbG93cyB1cyB0byBhdm9pZCBvdmVyZmxvdyBhbmQgc2lnbiBpc3N1ZXMuIExpa2V3aXNlLCBpdCBiYWlscyB3aGVuCi0gICB0aGUgbGluZW5vIHRhYmxlIGhhcyBjb21wbGV4IGVuY29kaW5nIGZvciBnYXBzID49IDI1NS4gRVhURU5ERURfQVJHIGNhbgotICAgYXBwZWFyIGJlZm9yZSBNQUtFX0ZVTkNUSU9OOyBpbiB0aGlzIGNhc2UgYm90aCBvcGNvZGVzIGFyZSBza2lwcGVkLgotICAgRVhURU5ERURfQVJHIHByZWNlZGluZyBhbnkgb3RoZXIgb3Bjb2RlIGNhdXNlcyB0aGUgb3B0aW1pemVyIHRvIGJhaWwuCisgICBUbyBrZWVwIHRoZSBvcHRpbWl6ZXIgc2ltcGxlLCBpdCBiYWlscyB3aGVuIHRoZSBsaW5lbm8gdGFibGUgaGFzIGNvbXBsZXgKKyAgIGVuY29kaW5nIGZvciBnYXBzID49IDI1NS4KIAogICAgT3B0aW1pemF0aW9ucyBhcmUgcmVzdHJpY3RlZCB0byBzaW1wbGUgdHJhbnNmb3JtYXRpb25zIG9jY3VycmluZyB3aXRoaW4gYQogICAgc2luZ2xlIGJhc2ljIGJsb2NrLiAgQWxsIHRyYW5zZm9ybWF0aW9ucyBrZWVwIHRoZSBjb2RlIHNpemUgdGhlIHNhbWUgb3IKICAgIHNtYWxsZXIuICBGb3IgdGhvc2UgdGhhdCByZWR1Y2Ugc2l6ZSwgdGhlIGdhcHMgYXJlIGluaXRpYWxseSBmaWxsZWQgd2l0aAogICAgTk9Qcy4gIExhdGVyIHRob3NlIE5PUHMgYXJlIHJlbW92ZWQgYW5kIHRoZSBqdW1wIGFkZHJlc3NlcyByZXRhcmdldGVkIGluCi0gICBhIHNpbmdsZSBwYXNzLiAgTGluZSBudW1iZXJpbmcgaXMgYWRqdXN0ZWQgYWNjb3JkaW5nbHkuICovCisgICBhIHNpbmdsZSBwYXNzLiAqLwogCiBQeU9iamVjdCAqCiBQeUNvZGVfT3B0aW1pemUoUHlPYmplY3QgKmNvZGUsIFB5T2JqZWN0KiBjb25zdHMsIFB5T2JqZWN0ICpuYW1lcywKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqbGluZW5vX29iaikKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqbG5vdGFiX29iaikKIHsKLSAgICBQeV9zc2l6ZV90IGksIGosIGNvZGVsZW47Ci0gICAgaW50IG5vcHMsIGgsIGFkajsKLSAgICBpbnQgdGd0LCB0Z3R0Z3QsIG9wY29kZTsKLSAgICB1bnNpZ25lZCBjaGFyICpjb2Rlc3RyID0gTlVMTDsKLSAgICB1bnNpZ25lZCBjaGFyICpsaW5lbm87Ci0gICAgaW50ICphZGRybWFwID0gTlVMTDsKLSAgICBpbnQgbmV3X2xpbmUsIGN1bV9vcmlnX2xpbmUsIGxhc3RfbGluZTsKKyAgICBQeV9zc2l6ZV90IGgsIGksIG5leHRpLCBvcF9zdGFydCwgY29kZWxlbiwgdGd0OworICAgIHVuc2lnbmVkIGludCBqLCBub3BzOworICAgIHVuc2lnbmVkIGNoYXIgb3Bjb2RlLCBuZXh0b3A7CisgICAgX1B5X0NPREVVTklUICpjb2Rlc3RyID0gTlVMTDsKKyAgICB1bnNpZ25lZCBjaGFyICpsbm90YWI7CisgICAgdW5zaWduZWQgaW50IGN1bV9vcmlnX29mZnNldCwgbGFzdF9vZmZzZXQ7CiAgICAgUHlfc3NpemVfdCB0YWJzaXo7CiAgICAgUHlPYmplY3QgKipjb25zdF9zdGFjayA9IE5VTEw7Ci0gICAgUHlfc3NpemVfdCAqbG9hZF9jb25zdF9zdGFjayA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBjb25zdF9zdGFja190b3AgPSAtMTsKICAgICBQeV9zc2l6ZV90IGNvbnN0X3N0YWNrX3NpemUgPSAwOwogICAgIGludCBpbl9jb25zdHMgPSAwOyAgLyogd2hldGhlciB3ZSBhcmUgaW4gYSBMT0FEX0NPTlNUIHNlcXVlbmNlICovCkBAIC0zNzMsNDIgKzQ0MiwzMCBAQAogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICBnb3RvIGV4aXRFcnJvcjsKIAotICAgIC8qIEJ5cGFzcyBvcHRpbWl6YXRpb24gd2hlbiB0aGUgbGluZW5vIHRhYmxlIGlzIHRvbyBjb21wbGV4ICovCi0gICAgYXNzZXJ0KFB5Qnl0ZXNfQ2hlY2sobGluZW5vX29iaikpOwotICAgIGxpbmVubyA9ICh1bnNpZ25lZCBjaGFyKilQeUJ5dGVzX0FTX1NUUklORyhsaW5lbm9fb2JqKTsKLSAgICB0YWJzaXogPSBQeUJ5dGVzX0dFVF9TSVpFKGxpbmVub19vYmopOwotICAgIGlmIChtZW1jaHIobGluZW5vLCAyNTUsIHRhYnNpeikgIT0gTlVMTCkKKyAgICAvKiBCeXBhc3Mgb3B0aW1pemF0aW9uIHdoZW4gdGhlIGxub3RhYiB0YWJsZSBpcyB0b28gY29tcGxleCAqLworICAgIGFzc2VydChQeUJ5dGVzX0NoZWNrKGxub3RhYl9vYmopKTsKKyAgICBsbm90YWIgPSAodW5zaWduZWQgY2hhciopUHlCeXRlc19BU19TVFJJTkcobG5vdGFiX29iaik7CisgICAgdGFic2l6ID0gUHlCeXRlc19HRVRfU0laRShsbm90YWJfb2JqKTsKKyAgICBhc3NlcnQodGFic2l6ID09IDAgfHwgUHlfUkVGQ05UKGxub3RhYl9vYmopID09IDEpOworICAgIGlmIChtZW1jaHIobG5vdGFiLCAyNTUsIHRhYnNpeikgIT0gTlVMTCkgeworICAgICAgICAvKiAyNTUgdmFsdWUgYXJlIHVzZWQgZm9yIG11bHRpYnl0ZSBieXRlY29kZSBpbnN0cnVjdGlvbnMgKi8KICAgICAgICAgZ290byBleGl0VW5jaGFuZ2VkOworICAgIH0KKyAgICAvKiBOb3RlOiAtMTI4IGFuZCAxMjcgc3BlY2lhbCB2YWx1ZXMgZm9yIGxpbmUgbnVtYmVyIGRlbHRhIGFyZSBvaywKKyAgICAgICB0aGUgcGVlcGhvbGUgb3B0aW1pemVyIGRvZXNuJ3QgbW9kaWZ5IGxpbmUgbnVtYmVycy4gKi8KIAotICAgIC8qIEF2b2lkIHNpdHVhdGlvbnMgd2hlcmUganVtcCByZXRhcmdldGluZyBjb3VsZCBvdmVyZmxvdyAqLwogICAgIGFzc2VydChQeUJ5dGVzX0NoZWNrKGNvZGUpKTsKICAgICBjb2RlbGVuID0gUHlCeXRlc19HRVRfU0laRShjb2RlKTsKLSAgICBpZiAoY29kZWxlbiA+IDMyNzAwKQotICAgICAgICBnb3RvIGV4aXRVbmNoYW5nZWQ7CisgICAgYXNzZXJ0KGNvZGVsZW4gJSBzaXplb2YoX1B5X0NPREVVTklUKSA9PSAwKTsKIAogICAgIC8qIE1ha2UgYSBtb2RpZmlhYmxlIGNvcHkgb2YgdGhlIGNvZGUgc3RyaW5nICovCi0gICAgY29kZXN0ciA9ICh1bnNpZ25lZCBjaGFyICopUHlNZW1fTWFsbG9jKGNvZGVsZW4pOworICAgIGNvZGVzdHIgPSAoX1B5X0NPREVVTklUICopUHlNZW1fTWFsbG9jKGNvZGVsZW4pOwogICAgIGlmIChjb2Rlc3RyID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgZ290byBleGl0RXJyb3I7CiAgICAgfQotICAgIGNvZGVzdHIgPSAodW5zaWduZWQgY2hhciAqKW1lbWNweShjb2Rlc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhjb2RlKSwgY29kZWxlbik7Ci0KLSAgICAvKiBWZXJpZnkgdGhhdCBSRVRVUk5fVkFMVUUgdGVybWluYXRlcyB0aGUgY29kZXN0cmluZy4gICAgICBUaGlzIGFsbG93cwotICAgICAgIHRoZSB2YXJpb3VzIHRyYW5zZm9ybWF0aW9uIHBhdHRlcm5zIHRvIGxvb2sgYWhlYWQgc2V2ZXJhbAotICAgICAgIGluc3RydWN0aW9ucyB3aXRob3V0IGFkZGl0aW9uYWwgY2hlY2tzIHRvIG1ha2Ugc3VyZSB0aGV5IGFyZSBub3QKLSAgICAgICBsb29raW5nIGJleW9uZCB0aGUgZW5kIG9mIHRoZSBjb2RlIHN0cmluZy4KLSAgICAqLwotICAgIGlmIChjb2Rlc3RyW2NvZGVsZW4tMV0gIT0gUkVUVVJOX1ZBTFVFKQotICAgICAgICBnb3RvIGV4aXRVbmNoYW5nZWQ7Ci0KLSAgICAvKiBNYXBwaW5nIHRvIG5ldyBqdW1wIHRhcmdldHMgYWZ0ZXIgTk9QcyBhcmUgcmVtb3ZlZCAqLwotICAgIGFkZHJtYXAgPSBQeU1lbV9OZXcoaW50LCBjb2RlbGVuKTsKLSAgICBpZiAoYWRkcm1hcCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIGdvdG8gZXhpdEVycm9yOwotICAgIH0KKyAgICBtZW1jcHkoY29kZXN0ciwgUHlCeXRlc19BU19TVFJJTkcoY29kZSksIGNvZGVsZW4pOworICAgIGNvZGVsZW4gLz0gc2l6ZW9mKF9QeV9DT0RFVU5JVCk7CiAKICAgICBibG9ja3MgPSBtYXJrYmxvY2tzKGNvZGVzdHIsIGNvZGVsZW4pOwogICAgIGlmIChibG9ja3MgPT0gTlVMTCkKQEAgLTQxNyw5ICs0NzQsMTcgQEAKIAogICAgIENPTlNUX1NUQUNLX0NSRUFURSgpOwogCi0gICAgZm9yIChpPTAgOyBpPGNvZGVsZW4gOyBpICs9IENPREVTSVpFKGNvZGVzdHJbaV0pKSB7Ci0gICAgICByZW9wdGltaXplX2N1cnJlbnQ6Ci0gICAgICAgIG9wY29kZSA9IGNvZGVzdHJbaV07CisgICAgZm9yIChpPWZpbmRfb3AoY29kZXN0ciwgMCkgOyBpPGNvZGVsZW4gOyBpPW5leHRpKSB7CisgICAgICAgIG9wY29kZSA9IF9QeV9PUENPREUoY29kZXN0cltpXSk7CisgICAgICAgIG9wX3N0YXJ0ID0gaTsKKyAgICAgICAgd2hpbGUgKG9wX3N0YXJ0ID49IDEgJiYgX1B5X09QQ09ERShjb2Rlc3RyW29wX3N0YXJ0LTFdKSA9PSBFWFRFTkRFRF9BUkcpIHsKKyAgICAgICAgICAgIG9wX3N0YXJ0LS07CisgICAgICAgIH0KKworICAgICAgICBuZXh0aSA9IGkgKyAxOworICAgICAgICB3aGlsZSAobmV4dGkgPCBjb2RlbGVuICYmIF9QeV9PUENPREUoY29kZXN0cltuZXh0aV0pID09IEVYVEVOREVEX0FSRykKKyAgICAgICAgICAgIG5leHRpKys7CisgICAgICAgIG5leHRvcCA9IG5leHRpIDwgY29kZWxlbiA/IF9QeV9PUENPREUoY29kZXN0cltuZXh0aV0pIDogMDsKIAogICAgICAgICBpZiAoIWluX2NvbnN0cykgewogICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUkVTRVQoKTsKQEAgLTQzMCwxNCArNDk1LDEyIEBACiAgICAgICAgICAgICAvKiBSZXBsYWNlIFVOQVJZX05PVCBQT1BfSlVNUF9JRl9GQUxTRQogICAgICAgICAgICAgICAgd2l0aCAgICBQT1BfSlVNUF9JRl9UUlVFICovCiAgICAgICAgICAgICBjYXNlIFVOQVJZX05PVDoKLSAgICAgICAgICAgICAgICBpZiAoY29kZXN0cltpKzFdICE9IFBPUF9KVU1QX0lGX0ZBTFNFCi0gICAgICAgICAgICAgICAgICAgIHx8ICFJU0JBU0lDQkxPQ0soYmxvY2tzLGksNCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGogPSBHRVRBUkcoY29kZXN0ciwgaSsxKTsKLSAgICAgICAgICAgICAgICBjb2Rlc3RyW2ldID0gUE9QX0pVTVBfSUZfVFJVRTsKLSAgICAgICAgICAgICAgICBTRVRBUkcoY29kZXN0ciwgaSwgaik7Ci0gICAgICAgICAgICAgICAgY29kZXN0cltpKzNdID0gTk9QOwotICAgICAgICAgICAgICAgIGdvdG8gcmVvcHRpbWl6ZV9jdXJyZW50OworICAgICAgICAgICAgICAgIGlmIChuZXh0b3AgIT0gUE9QX0pVTVBfSUZfRkFMU0UKKyAgICAgICAgICAgICAgICAgICAgfHwgIUlTQkFTSUNCTE9DSyhibG9ja3MsIG9wX3N0YXJ0LCBpICsgMSkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGZpbGxfbm9wcyhjb2Rlc3RyLCBvcF9zdGFydCwgaSArIDEpOworICAgICAgICAgICAgICAgIGNvZGVzdHJbbmV4dGldID0gUEFDS09QQVJHKFBPUF9KVU1QX0lGX1RSVUUsIF9QeV9PUEFSRyhjb2Rlc3RyW25leHRpXSkpOworICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAgICAgLyogbm90IGEgaXMgYiAtLT4gIGEgaXMgbm90IGIKICAgICAgICAgICAgICAgICAgICBub3QgYSBpbiBiIC0tPiAgYSBub3QgaW4gYgpAQCAtNDQ1LDc4ICs1MDgsNzYgQEAKICAgICAgICAgICAgICAgICAgICBub3QgYSBub3QgaW4gYiAtLT4gIGEgaW4gYgogICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICBjYXNlIENPTVBBUkVfT1A6Ci0gICAgICAgICAgICAgICAgaiA9IEdFVEFSRyhjb2Rlc3RyLCBpKTsKLSAgICAgICAgICAgICAgICBpZiAoaiA8IDYgIHx8ICBqID4gOSAgfHwKLSAgICAgICAgICAgICAgICAgICAgY29kZXN0cltpKzNdICE9IFVOQVJZX05PVCAgfHwKLSAgICAgICAgICAgICAgICAgICAgIUlTQkFTSUNCTE9DSyhibG9ja3MsaSw0KSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgU0VUQVJHKGNvZGVzdHIsIGksIChqXjEpKTsKLSAgICAgICAgICAgICAgICBjb2Rlc3RyW2krM10gPSBOT1A7CisgICAgICAgICAgICAgICAgaiA9IGdldF9hcmcoY29kZXN0ciwgaSk7CisgICAgICAgICAgICAgICAgaWYgKGogPCA2IHx8IGogPiA5IHx8CisgICAgICAgICAgICAgICAgICAgIG5leHRvcCAhPSBVTkFSWV9OT1QgfHwKKyAgICAgICAgICAgICAgICAgICAgIUlTQkFTSUNCTE9DSyhibG9ja3MsIG9wX3N0YXJ0LCBpICsgMSkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNvZGVzdHJbaV0gPSBQQUNLT1BBUkcob3Bjb2RlLCBqXjEpOworICAgICAgICAgICAgICAgIGZpbGxfbm9wcyhjb2Rlc3RyLCBpICsgMSwgbmV4dGkgKyAxKTsKICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgICAgIC8qIFNraXAgb3ZlciBMT0FEX0NPTlNUIHRydWVjb25zdAotICAgICAgICAgICAgICAgICAgIFBPUF9KVU1QX0lGX0ZBTFNFIHh4LiBUaGlzIGltcHJvdmVzCi0gICAgICAgICAgICAgICAgICAgIndoaWxlIDEiIHBlcmZvcm1hbmNlLiAqLworICAgICAgICAgICAgICAgICAgIFBPUF9KVU1QX0lGX0ZBTFNFIHh4LiAgVGhpcyBpbXByb3ZlcworICAgICAgICAgICAgICAgICAgICJ3aGlsZSAxIiBwZXJmb3JtYW5jZS4gICovCiAgICAgICAgICAgICBjYXNlIExPQURfQ09OU1Q6CiAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUFVTSF9PUChpKTsKLSAgICAgICAgICAgICAgICBqID0gR0VUQVJHKGNvZGVzdHIsIGkpOwotICAgICAgICAgICAgICAgIGlmIChjb2Rlc3RyW2krM10gIT0gUE9QX0pVTVBfSUZfRkFMU0UgIHx8Ci0gICAgICAgICAgICAgICAgICAgICFJU0JBU0lDQkxPQ0soYmxvY2tzLGksNikgIHx8Ci0gICAgICAgICAgICAgICAgICAgICFQeU9iamVjdF9Jc1RydWUoUHlMaXN0X0dFVF9JVEVNKGNvbnN0cywgaikpKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBtZW1zZXQoY29kZXN0citpLCBOT1AsIDYpOwotICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1JFU0VUKCk7CisgICAgICAgICAgICAgICAgaWYgKG5leHRvcCAhPSBQT1BfSlVNUF9JRl9GQUxTRSAgfHwKKyAgICAgICAgICAgICAgICAgICAgIUlTQkFTSUNCTE9DSyhibG9ja3MsIG9wX3N0YXJ0LCBpICsgMSkgIHx8CisgICAgICAgICAgICAgICAgICAgICFQeU9iamVjdF9Jc1RydWUoUHlMaXN0X0dFVF9JVEVNKGNvbnN0cywgZ2V0X2FyZyhjb2Rlc3RyLCBpKSkpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBmaWxsX25vcHMoY29kZXN0ciwgb3Bfc3RhcnQsIG5leHRpICsgMSk7CisgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUE9QKDEpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICAgICAgLyogVHJ5IHRvIGZvbGQgdHVwbGVzIG9mIGNvbnN0YW50cyAoaW5jbHVkZXMgYSBjYXNlIGZvciBsaXN0cyBhbmQgc2V0cwotICAgICAgICAgICAgICAgICAgIHdoaWNoIGFyZSBvbmx5IHVzZWQgZm9yICJpbiIgYW5kICJub3QgaW4iIHRlc3RzKS4KKyAgICAgICAgICAgICAgICAvKiBUcnkgdG8gZm9sZCB0dXBsZXMgb2YgY29uc3RhbnRzIChpbmNsdWRlcyBhIGNhc2UgZm9yIGxpc3RzCisgICAgICAgICAgICAgICAgICAgYW5kIHNldHMgd2hpY2ggYXJlIG9ubHkgdXNlZCBmb3IgImluIiBhbmQgIm5vdCBpbiIgdGVzdHMpLgogICAgICAgICAgICAgICAgICAgIFNraXAgb3ZlciBCVUlMRF9TRVFOIDEgVU5QQUNLX1NFUU4gMS4KICAgICAgICAgICAgICAgICAgICBSZXBsYWNlIEJVSUxEX1NFUU4gMiBVTlBBQ0tfU0VRTiAyIHdpdGggUk9UMi4KICAgICAgICAgICAgICAgICAgICBSZXBsYWNlIEJVSUxEX1NFUU4gMyBVTlBBQ0tfU0VRTiAzIHdpdGggUk9UMyBST1QyLiAqLwogICAgICAgICAgICAgY2FzZSBCVUlMRF9UVVBMRToKICAgICAgICAgICAgIGNhc2UgQlVJTERfTElTVDoKICAgICAgICAgICAgIGNhc2UgQlVJTERfU0VUOgotICAgICAgICAgICAgICAgIGogPSBHRVRBUkcoY29kZXN0ciwgaSk7Ci0gICAgICAgICAgICAgICAgaWYgKGogPT0gMCkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgaCA9IENPTlNUX1NUQUNLX09QX0xBU1ROKGopOwotICAgICAgICAgICAgICAgIGFzc2VydCgoaCA+PSAwIHx8IENPTlNUX1NUQUNLX0xFTigpIDwgaikpOwotICAgICAgICAgICAgICAgIGlmIChoID49IDAgJiYgaiA+IDAgJiYgaiA8PSBDT05TVF9TVEFDS19MRU4oKSAmJgotICAgICAgICAgICAgICAgICAgICAoKG9wY29kZSA9PSBCVUlMRF9UVVBMRSAmJgotICAgICAgICAgICAgICAgICAgICAgIElTQkFTSUNCTE9DSyhibG9ja3MsIGgsIGktaCszKSkgfHwKLSAgICAgICAgICAgICAgICAgICAgICgob3Bjb2RlID09IEJVSUxEX0xJU1QgfHwgb3Bjb2RlID09IEJVSUxEX1NFVCkgJiYKLSAgICAgICAgICAgICAgICAgICAgICBjb2Rlc3RyW2krM109PUNPTVBBUkVfT1AgJiYKLSAgICAgICAgICAgICAgICAgICAgICBJU0JBU0lDQkxPQ0soYmxvY2tzLCBoLCBpLWgrNikgJiYKLSAgICAgICAgICAgICAgICAgICAgICAoR0VUQVJHKGNvZGVzdHIsaSszKT09NiB8fAotICAgICAgICAgICAgICAgICAgICAgICBHRVRBUkcoY29kZXN0cixpKzMpPT03KSkpICYmCi0gICAgICAgICAgICAgICAgICAgIHR1cGxlX29mX2NvbnN0YW50cygmY29kZXN0cltpXSwgaiwgY29uc3RzLCBDT05TVF9TVEFDS19MQVNUTihqKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KGNvZGVzdHJbaV0gPT0gTE9BRF9DT05TVCk7Ci0gICAgICAgICAgICAgICAgICAgIG1lbXNldCgmY29kZXN0cltoXSwgTk9QLCBpIC0gaCk7Ci0gICAgICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1BPUChqKTsKLSAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUFVTSF9PUChpKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgaiA9IGdldF9hcmcoY29kZXN0ciwgaSk7CisgICAgICAgICAgICAgICAgaWYgKGogPiAwICYmIENPTlNUX1NUQUNLX0xFTigpID49IGopIHsKKyAgICAgICAgICAgICAgICAgICAgaCA9IGxhc3RuX2NvbnN0X3N0YXJ0KGNvZGVzdHIsIG9wX3N0YXJ0LCBqKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKChvcGNvZGUgPT0gQlVJTERfVFVQTEUgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgSVNCQVNJQ0JMT0NLKGJsb2NrcywgaCwgb3Bfc3RhcnQpKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICgob3Bjb2RlID09IEJVSUxEX0xJU1QgfHwgb3Bjb2RlID09IEJVSUxEX1NFVCkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKChuZXh0b3A9PUNPTVBBUkVfT1AgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKF9QeV9PUEFSRyhjb2Rlc3RyW25leHRpXSkgPT0gUHlDbXBfSU4gfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9PUEFSRyhjb2Rlc3RyW25leHRpXSkgPT0gUHlDbXBfTk9UX0lOKSkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dG9wID09IEdFVF9JVEVSKSAmJiBJU0JBU0lDQkxPQ0soYmxvY2tzLCBoLCBpICsgMSkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBoID0gZm9sZF90dXBsZV9vbl9jb25zdGFudHMoY29kZXN0ciwgaCwgaSArIDEsIG9wY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHMsIENPTlNUX1NUQUNLX0xBU1ROKGopLCBqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoID49IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19QT1Aoaik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUFVTSF9PUChoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChjb2Rlc3RyW2krM10gIT0gVU5QQUNLX1NFUVVFTkNFICB8fAotICAgICAgICAgICAgICAgICAgICAhSVNCQVNJQ0JMT0NLKGJsb2NrcyxpLDYpIHx8Ci0gICAgICAgICAgICAgICAgICAgIGogIT0gR0VUQVJHKGNvZGVzdHIsIGkrMykgfHwKKyAgICAgICAgICAgICAgICBpZiAobmV4dG9wICE9IFVOUEFDS19TRVFVRU5DRSAgfHwKKyAgICAgICAgICAgICAgICAgICAgIUlTQkFTSUNCTE9DSyhibG9ja3MsIG9wX3N0YXJ0LCBpICsgMSkgfHwKKyAgICAgICAgICAgICAgICAgICAgaiAhPSBnZXRfYXJnKGNvZGVzdHIsIG5leHRpKSB8fAogICAgICAgICAgICAgICAgICAgICBvcGNvZGUgPT0gQlVJTERfU0VUKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBpZiAoaiA9PSAxKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1lbXNldChjb2Rlc3RyK2ksIE5PUCwgNik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGlmIChqIDwgMikgeworICAgICAgICAgICAgICAgICAgICBmaWxsX25vcHMoY29kZXN0ciwgb3Bfc3RhcnQsIG5leHRpICsgMSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChqID09IDIpIHsKLSAgICAgICAgICAgICAgICAgICAgY29kZXN0cltpXSA9IFJPVF9UV087Ci0gICAgICAgICAgICAgICAgICAgIG1lbXNldChjb2Rlc3RyK2krMSwgTk9QLCA1KTsKKyAgICAgICAgICAgICAgICAgICAgY29kZXN0cltvcF9zdGFydF0gPSBQQUNLT1BBUkcoUk9UX1RXTywgMCk7CisgICAgICAgICAgICAgICAgICAgIGZpbGxfbm9wcyhjb2Rlc3RyLCBvcF9zdGFydCArIDEsIG5leHRpICsgMSk7CiAgICAgICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1JFU0VUKCk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChqID09IDMpIHsKLSAgICAgICAgICAgICAgICAgICAgY29kZXN0cltpXSA9IFJPVF9USFJFRTsKLSAgICAgICAgICAgICAgICAgICAgY29kZXN0cltpKzFdID0gUk9UX1RXTzsKLSAgICAgICAgICAgICAgICAgICAgbWVtc2V0KGNvZGVzdHIraSsyLCBOT1AsIDQpOworICAgICAgICAgICAgICAgICAgICBjb2Rlc3RyW29wX3N0YXJ0XSA9IFBBQ0tPUEFSRyhST1RfVEhSRUUsIDApOworICAgICAgICAgICAgICAgICAgICBjb2Rlc3RyW29wX3N0YXJ0ICsgMV0gPSBQQUNLT1BBUkcoUk9UX1RXTywgMCk7CisgICAgICAgICAgICAgICAgICAgIGZpbGxfbm9wcyhjb2Rlc3RyLCBvcF9zdGFydCArIDIsIG5leHRpICsgMSk7CiAgICAgICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1JFU0VUKCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAgICAgLyogRm9sZCBiaW5hcnkgb3BzIG9uIGNvbnN0YW50cy4KLSAgICAgICAgICAgICAgICAgICBMT0FEX0NPTlNUIGMxIExPQURfQ09OU1QgYzIgQklOT1AgLS0+ICBMT0FEX0NPTlNUIGJpbm9wKGMxLGMyKSAqLworICAgICAgICAgICAgICAgICAgIExPQURfQ09OU1QgYzEgTE9BRF9DT05TVCBjMiBCSU5PUCAtLT4gTE9BRF9DT05TVCBiaW5vcChjMSxjMikgKi8KICAgICAgICAgICAgIGNhc2UgQklOQVJZX1BPV0VSOgogICAgICAgICAgICAgY2FzZSBCSU5BUllfTVVMVElQTFk6CiAgICAgICAgICAgICBjYXNlIEJJTkFSWV9UUlVFX0RJVklERToKQEAgLTUzMCwzNSArNTkxLDM0IEBACiAgICAgICAgICAgICBjYXNlIEJJTkFSWV9BTkQ6CiAgICAgICAgICAgICBjYXNlIEJJTkFSWV9YT1I6CiAgICAgICAgICAgICBjYXNlIEJJTkFSWV9PUjoKLSAgICAgICAgICAgICAgICAvKiBOT1RFOiBMT0FEX0NPTlNUIGlzIHNhdmVkIGF0IGBpLTJgIHNpbmNlIGl0IGhhcyBhbiBhcmcKLSAgICAgICAgICAgICAgICAgICB3aGlsZSBCSU5PUCBoYXNuJ3QgKi8KLSAgICAgICAgICAgICAgICBoID0gQ09OU1RfU1RBQ0tfT1BfTEFTVE4oMik7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KChoID49IDAgfHwgQ09OU1RfU1RBQ0tfTEVOKCkgPCAyKSk7Ci0gICAgICAgICAgICAgICAgaWYgKGggPj0gMCAmJgotICAgICAgICAgICAgICAgICAgICBJU0JBU0lDQkxPQ0soYmxvY2tzLCBoLCBpLWgrMSkgICYmCi0gICAgICAgICAgICAgICAgICAgIGZvbGRfYmlub3BzX29uX2NvbnN0YW50cygmY29kZXN0cltpXSwgY29uc3RzLCBDT05TVF9TVEFDS19MQVNUTigyKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgaSAtPSAyOwotICAgICAgICAgICAgICAgICAgICBtZW1zZXQoJmNvZGVzdHJbaF0sIE5PUCwgaSAtIGgpOwotICAgICAgICAgICAgICAgICAgICBhc3NlcnQoY29kZXN0cltpXSA9PSBMT0FEX0NPTlNUKTsKLSAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUE9QKDIpOwotICAgICAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19QVVNIX09QKGkpOworICAgICAgICAgICAgICAgIGlmIChDT05TVF9TVEFDS19MRU4oKSA8IDIpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGggPSBsYXN0bl9jb25zdF9zdGFydChjb2Rlc3RyLCBvcF9zdGFydCwgMik7CisgICAgICAgICAgICAgICAgaWYgKElTQkFTSUNCTE9DSyhibG9ja3MsIGgsIG9wX3N0YXJ0KSkgeworICAgICAgICAgICAgICAgICAgICBoID0gZm9sZF9iaW5vcHNfb25fY29uc3RhbnRzKGNvZGVzdHIsIGgsIGkgKyAxLCBvcGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RzLCBDT05TVF9TVEFDS19MQVNUTigyKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChoID49IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1BPUCgyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1BVU0hfT1AoaCk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgICAgICAvKiBGb2xkIHVuYXJ5IG9wcyBvbiBjb25zdGFudHMuCi0gICAgICAgICAgICAgICAgICAgTE9BRF9DT05TVCBjMSAgVU5BUllfT1AgLS0+ICAgICAgICAgICAgICAgICAgTE9BRF9DT05TVCB1bmFyeV9vcChjKSAqLworICAgICAgICAgICAgICAgICAgIExPQURfQ09OU1QgYzEgIFVOQVJZX09QIC0tPiBMT0FEX0NPTlNUIHVuYXJ5X29wKGMpICovCiAgICAgICAgICAgICBjYXNlIFVOQVJZX05FR0FUSVZFOgogICAgICAgICAgICAgY2FzZSBVTkFSWV9JTlZFUlQ6CiAgICAgICAgICAgICBjYXNlIFVOQVJZX1BPU0lUSVZFOgotICAgICAgICAgICAgICAgIGggPSBDT05TVF9TVEFDS19PUF9MQVNUTigxKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQoKGggPj0gMCB8fCBDT05TVF9TVEFDS19MRU4oKSA8IDEpKTsKLSAgICAgICAgICAgICAgICBpZiAoaCA+PSAwICYmCi0gICAgICAgICAgICAgICAgICAgIElTQkFTSUNCTE9DSyhibG9ja3MsIGgsIGktaCsxKSAgJiYKLSAgICAgICAgICAgICAgICAgICAgZm9sZF91bmFyeW9wc19vbl9jb25zdGFudHMoJmNvZGVzdHJbaS0zXSwgY29uc3RzLCBDT05TVF9TVEFDS19UT1AoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgaSAtPSAyOwotICAgICAgICAgICAgICAgICAgICBhc3NlcnQoY29kZXN0cltpXSA9PSBMT0FEX0NPTlNUKTsKLSAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUE9QKDEpOwotICAgICAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19QVVNIX09QKGkpOworICAgICAgICAgICAgICAgIGlmIChDT05TVF9TVEFDS19MRU4oKSA8IDEpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGggPSBsYXN0bl9jb25zdF9zdGFydChjb2Rlc3RyLCBvcF9zdGFydCwgMSk7CisgICAgICAgICAgICAgICAgaWYgKElTQkFTSUNCTE9DSyhibG9ja3MsIGgsIG9wX3N0YXJ0KSkgeworICAgICAgICAgICAgICAgICAgICBoID0gZm9sZF91bmFyeW9wc19vbl9jb25zdGFudHMoY29kZXN0ciwgaCwgaSArIDEsIG9wY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cywgKkNPTlNUX1NUQUNLX0xBU1ROKDEpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGggPj0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUE9QKDEpOworICAgICAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUFVTSF9PUChoKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKIApAQCAtNTczLDM5ICs2MzMsMzYgQEAKICAgICAgICAgICAgICAgICAgICB4OkpVTVBfSUZfRkFMU0VfT1JfUE9QIHkgICB5OkpVTVBfSUZfRkFMU0VfT1JfUE9QIHoKICAgICAgICAgICAgICAgICAgICAgICAtLT4gIHg6SlVNUF9JRl9GQUxTRV9PUl9QT1AgegogICAgICAgICAgICAgICAgICAgIHg6SlVNUF9JRl9GQUxTRV9PUl9QT1AgeSAgIHk6SlVNUF9JRl9UUlVFX09SX1BPUCB6Ci0gICAgICAgICAgICAgICAgICAgICAgLS0+ICB4OlBPUF9KVU1QX0lGX0ZBTFNFIHkrMwotICAgICAgICAgICAgICAgICAgIHdoZXJlIHkrMyBpcyB0aGUgaW5zdHJ1Y3Rpb24gZm9sbG93aW5nIHRoZSBzZWNvbmQgdGVzdC4KKyAgICAgICAgICAgICAgICAgICAgICAtLT4gIHg6UE9QX0pVTVBfSUZfRkFMU0UgeSsxCisgICAgICAgICAgICAgICAgICAgd2hlcmUgeSsxIGlzIHRoZSBpbnN0cnVjdGlvbiBmb2xsb3dpbmcgdGhlIHNlY29uZCB0ZXN0LgogICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICBjYXNlIEpVTVBfSUZfRkFMU0VfT1JfUE9QOgogICAgICAgICAgICAgY2FzZSBKVU1QX0lGX1RSVUVfT1JfUE9QOgotICAgICAgICAgICAgICAgIHRndCA9IEdFVEpVTVBUR1QoY29kZXN0ciwgaSk7Ci0gICAgICAgICAgICAgICAgaiA9IGNvZGVzdHJbdGd0XTsKKyAgICAgICAgICAgICAgICBoID0gZ2V0X2FyZyhjb2Rlc3RyLCBpKSAvIHNpemVvZihfUHlfQ09ERVVOSVQpOworICAgICAgICAgICAgICAgIHRndCA9IGZpbmRfb3AoY29kZXN0ciwgaCk7CisKKyAgICAgICAgICAgICAgICBqID0gX1B5X09QQ09ERShjb2Rlc3RyW3RndF0pOwogICAgICAgICAgICAgICAgIGlmIChDT05ESVRJT05BTF9KVU1QKGopKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qIE5PVEU6IGFsbCBwb3NzaWJsZSBqdW1wcyBoZXJlIGFyZQotICAgICAgICAgICAgICAgICAgICAgICBhYnNvbHV0ZSEgKi8KKyAgICAgICAgICAgICAgICAgICAgLyogTk9URTogYWxsIHBvc3NpYmxlIGp1bXBzIGhlcmUgYXJlIGFic29sdXRlLiAqLwogICAgICAgICAgICAgICAgICAgICBpZiAoSlVNUFNfT05fVFJVRShqKSA9PSBKVU1QU19PTl9UUlVFKG9wY29kZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRoZSBzZWNvbmQganVtcCB3aWxsIGJlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB0YWtlbiBpZmYgdGhlIGZpcnN0IGlzLiAqLwotICAgICAgICAgICAgICAgICAgICAgICAgdGd0dGd0ID0gR0VUSlVNUFRHVChjb2Rlc3RyLCB0Z3QpOwotICAgICAgICAgICAgICAgICAgICAgICAgLyogVGhlIGN1cnJlbnQgb3Bjb2RlIGluaGVyaXRzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBpdHMgdGFyZ2V0J3Mgc3RhY2sgYmVoYXZpb3VyICovCi0gICAgICAgICAgICAgICAgICAgICAgICBjb2Rlc3RyW2ldID0gajsKLSAgICAgICAgICAgICAgICAgICAgICAgIFNFVEFSRyhjb2Rlc3RyLCBpLCB0Z3R0Z3QpOwotICAgICAgICAgICAgICAgICAgICAgICAgZ290byByZW9wdGltaXplX2N1cnJlbnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAvKiBUaGUgc2Vjb25kIGp1bXAgd2lsbCBiZSB0YWtlbiBpZmYgdGhlIGZpcnN0IGlzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGN1cnJlbnQgb3Bjb2RlIGluaGVyaXRzIGl0cyB0YXJnZXQncworICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2sgZWZmZWN0ICovCisgICAgICAgICAgICAgICAgICAgICAgICBoID0gc2V0X2FyZyhjb2Rlc3RyLCBpLCBnZXRfYXJnKGNvZGVzdHIsIHRndCkpOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgLyogVGhlIHNlY29uZCBqdW1wIGlzIG5vdCB0YWtlbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGhlIGZpcnN0IGlzIChzbyBqdW1wIHBhc3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0KSwgYW5kIGFsbCBjb25kaXRpb25hbAotICAgICAgICAgICAgICAgICAgICAgICAgICAganVtcHMgcG9wIHRoZWlyIGFyZ3VtZW50IHdoZW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZXkncmUgbm90IHRha2VuIChzbyBjaGFuZ2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmaXJzdCBqdW1wIHRvIHBvcCBpdHMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50IHdoZW4gaXQncyB0YWtlbikuICovCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoSlVNUFNfT05fVFJVRShvcGNvZGUpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVzdHJbaV0gPSBQT1BfSlVNUF9JRl9UUlVFOwotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVzdHJbaV0gPSBQT1BfSlVNUF9JRl9GQUxTRTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFNFVEFSRyhjb2Rlc3RyLCBpLCAodGd0ICsgMykpOwotICAgICAgICAgICAgICAgICAgICAgICAgZ290byByZW9wdGltaXplX2N1cnJlbnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAvKiBUaGUgc2Vjb25kIGp1bXAgaXMgbm90IHRha2VuIGlmIHRoZSBmaXJzdCBpcyAoc28KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGp1bXAgcGFzdCBpdCksIGFuZCBhbGwgY29uZGl0aW9uYWwganVtcHMgcG9wIHRoZWlyCisgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudCB3aGVuIHRoZXkncmUgbm90IHRha2VuIChzbyBjaGFuZ2UgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdCBqdW1wIHRvIHBvcCBpdHMgYXJndW1lbnQgd2hlbiBpdCdzIHRha2VuKS4gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGggPSBzZXRfYXJnKGNvZGVzdHIsIGksICh0Z3QgKyAxKSAqIHNpemVvZihfUHlfQ09ERVVOSVQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGogPSBvcGNvZGUgPT0gSlVNUF9JRl9UUlVFX09SX1BPUCA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUE9QX0pVTVBfSUZfVFJVRSA6IFBPUF9KVU1QX0lGX0ZBTFNFOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGggPj0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbmV4dGkgPSBoOworICAgICAgICAgICAgICAgICAgICAgICAgY29kZXN0cltuZXh0aV0gPSBQQUNLT1BBUkcoaiwgX1B5X09QQVJHKGNvZGVzdHJbbmV4dGldKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAvKiBJbnRlbnRpb25hbCBmYWxsdGhyb3VnaCAqLwpAQCAtNjIyLDczICs2NzksNzQgQEAKICAgICAgICAgICAgIGNhc2UgU0VUVVBfRklOQUxMWToKICAgICAgICAgICAgIGNhc2UgU0VUVVBfV0lUSDoKICAgICAgICAgICAgIGNhc2UgU0VUVVBfQVNZTkNfV0lUSDoKLSAgICAgICAgICAgICAgICB0Z3QgPSBHRVRKVU1QVEdUKGNvZGVzdHIsIGkpOworICAgICAgICAgICAgICAgIGggPSBHRVRKVU1QVEdUKGNvZGVzdHIsIGkpOworICAgICAgICAgICAgICAgIHRndCA9IGZpbmRfb3AoY29kZXN0ciwgaCk7CiAgICAgICAgICAgICAgICAgLyogUmVwbGFjZSBKVU1QXyogdG8gYSBSRVRVUk4gaW50byBqdXN0IGEgUkVUVVJOICovCiAgICAgICAgICAgICAgICAgaWYgKFVOQ09ORElUSU9OQUxfSlVNUChvcGNvZGUpICYmCi0gICAgICAgICAgICAgICAgICAgIGNvZGVzdHJbdGd0XSA9PSBSRVRVUk5fVkFMVUUpIHsKLSAgICAgICAgICAgICAgICAgICAgY29kZXN0cltpXSA9IFJFVFVSTl9WQUxVRTsKLSAgICAgICAgICAgICAgICAgICAgbWVtc2V0KGNvZGVzdHIraSsxLCBOT1AsIDIpOwotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgX1B5X09QQ09ERShjb2Rlc3RyW3RndF0pID09IFJFVFVSTl9WQUxVRSkgeworICAgICAgICAgICAgICAgICAgICBjb2Rlc3RyW29wX3N0YXJ0XSA9IFBBQ0tPUEFSRyhSRVRVUk5fVkFMVUUsIDApOworICAgICAgICAgICAgICAgICAgICBmaWxsX25vcHMoY29kZXN0ciwgb3Bfc3RhcnQgKyAxLCBpICsgMSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChVTkNPTkRJVElPTkFMX0pVTVAoX1B5X09QQ09ERShjb2Rlc3RyW3RndF0pKSkgeworICAgICAgICAgICAgICAgICAgICBqID0gR0VUSlVNUFRHVChjb2Rlc3RyLCB0Z3QpOworICAgICAgICAgICAgICAgICAgICBpZiAob3Bjb2RlID09IEpVTVBfRk9SV0FSRCkgeyAvKiBKTVBfQUJTIGNhbiBnbyBiYWNrd2FyZHMgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIG9wY29kZSA9IEpVTVBfQUJTT0xVVEU7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIUFCU09MVVRFX0pVTVAob3Bjb2RlKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChQeV9zc2l6ZV90KWogPCBpICsgMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgLyogTm8gYmFja3dhcmQgcmVsYXRpdmUganVtcHMgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGogLT0gaSArIDE7ICAgICAgICAgIC8qIENhbGMgcmVsYXRpdmUganVtcCBhZGRyICovCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaiAqPSBzaXplb2YoX1B5X0NPREVVTklUKTsKKyAgICAgICAgICAgICAgICAgICAgY29weV9vcF9hcmcoY29kZXN0ciwgb3Bfc3RhcnQsIG9wY29kZSwgaiwgaSArIDEpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoIVVOQ09ORElUSU9OQUxfSlVNUChjb2Rlc3RyW3RndF0pKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB0Z3R0Z3QgPSBHRVRKVU1QVEdUKGNvZGVzdHIsIHRndCk7Ci0gICAgICAgICAgICAgICAgaWYgKG9wY29kZSA9PSBKVU1QX0ZPUldBUkQpIC8qIEpNUF9BQlMgY2FuIGdvIGJhY2t3YXJkcyAqLwotICAgICAgICAgICAgICAgICAgICBvcGNvZGUgPSBKVU1QX0FCU09MVVRFOwotICAgICAgICAgICAgICAgIGlmICghQUJTT0xVVEVfSlVNUChvcGNvZGUpKQotICAgICAgICAgICAgICAgICAgICB0Z3R0Z3QgLT0gaSArIDM7ICAgICAvKiBDYWxjIHJlbGF0aXZlIGp1bXAgYWRkciAqLwotICAgICAgICAgICAgICAgIGlmICh0Z3R0Z3QgPCAwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vIGJhY2t3YXJkIHJlbGF0aXZlIGp1bXBzICovCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGNvZGVzdHJbaV0gPSBvcGNvZGU7Ci0gICAgICAgICAgICAgICAgU0VUQVJHKGNvZGVzdHIsIGksIHRndHRndCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgIGNhc2UgRVhURU5ERURfQVJHOgotICAgICAgICAgICAgICAgIGlmIChjb2Rlc3RyW2krM10gIT0gTUFLRV9GVU5DVElPTikKLSAgICAgICAgICAgICAgICAgICAgZ290byBleGl0VW5jaGFuZ2VkOwotICAgICAgICAgICAgICAgIC8qIGRvbid0IHZpc2l0IE1BS0VfRlVOQ1RJT04gYXMgR0VUQVJHIHdpbGwgYmUgd3JvbmcgKi8KLSAgICAgICAgICAgICAgICBpICs9IDM7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICAvKiBSZXBsYWNlIFJFVFVSTiBMT0FEX0NPTlNUIE5vbmUgUkVUVVJOIHdpdGgganVzdCBSRVRVUk4gKi8KLSAgICAgICAgICAgICAgICAvKiBSZW1vdmUgdW5yZWFjaGFibGUgSlVNUHMgYWZ0ZXIgUkVUVVJOICovCisgICAgICAgICAgICAgICAgLyogUmVtb3ZlIHVucmVhY2hhYmxlIG9wcyBhZnRlciBSRVRVUk4gKi8KICAgICAgICAgICAgIGNhc2UgUkVUVVJOX1ZBTFVFOgotICAgICAgICAgICAgICAgIGlmIChpKzQgPj0gY29kZWxlbikKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgaWYgKGNvZGVzdHJbaSs0XSA9PSBSRVRVUk5fVkFMVUUgJiYKLSAgICAgICAgICAgICAgICAgICAgSVNCQVNJQ0JMT0NLKGJsb2NrcyxpLDUpKQotICAgICAgICAgICAgICAgICAgICBtZW1zZXQoY29kZXN0citpKzEsIE5PUCwgNCk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoVU5DT05ESVRJT05BTF9KVU1QKGNvZGVzdHJbaSsxXSkgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICBJU0JBU0lDQkxPQ0soYmxvY2tzLGksNCkpCi0gICAgICAgICAgICAgICAgICAgIG1lbXNldChjb2Rlc3RyK2krMSwgTk9QLCAzKTsKKyAgICAgICAgICAgICAgICBoID0gaSArIDE7CisgICAgICAgICAgICAgICAgd2hpbGUgKGggPCBjb2RlbGVuICYmIElTQkFTSUNCTE9DSyhibG9ja3MsIGksIGgpKSB7CisgICAgICAgICAgICAgICAgICAgIGgrKzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGggPiBpICsgMSkgeworICAgICAgICAgICAgICAgICAgICBmaWxsX25vcHMoY29kZXN0ciwgaSArIDEsIGgpOworICAgICAgICAgICAgICAgICAgICBuZXh0aSA9IGZpbmRfb3AoY29kZXN0ciwgaCk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQogCi0gICAgLyogRml4dXAgbGluZW5vdGFiICovCi0gICAgZm9yIChpPTAsIG5vcHM9MCA7IGk8Y29kZWxlbiA7IGkgKz0gQ09ERVNJWkUoY29kZXN0cltpXSkpIHsKKyAgICAvKiBGaXh1cCBsbm90YWIgKi8KKyAgICBmb3IgKGkgPSAwLCBub3BzID0gMDsgaSA8IGNvZGVsZW47IGkrKykgewogICAgICAgICBhc3NlcnQoaSAtIG5vcHMgPD0gSU5UX01BWCk7Ci0gICAgICAgIGFkZHJtYXBbaV0gPSAoaW50KShpIC0gbm9wcyk7Ci0gICAgICAgIGlmIChjb2Rlc3RyW2ldID09IE5PUCkKKyAgICAgICAgLyogb3JpZ2luYWwgY29kZSBvZmZzZXQgPT4gbmV3IGNvZGUgb2Zmc2V0ICovCisgICAgICAgIGJsb2Nrc1tpXSA9IGkgLSBub3BzOworICAgICAgICBpZiAoX1B5X09QQ09ERShjb2Rlc3RyW2ldKSA9PSBOT1ApCiAgICAgICAgICAgICBub3BzKys7CiAgICAgfQotICAgIGN1bV9vcmlnX2xpbmUgPSAwOwotICAgIGxhc3RfbGluZSA9IDA7CisgICAgY3VtX29yaWdfb2Zmc2V0ID0gMDsKKyAgICBsYXN0X29mZnNldCA9IDA7CiAgICAgZm9yIChpPTAgOyBpIDwgdGFic2l6IDsgaSs9MikgewotICAgICAgICBjdW1fb3JpZ19saW5lICs9IGxpbmVub1tpXTsKLSAgICAgICAgbmV3X2xpbmUgPSBhZGRybWFwW2N1bV9vcmlnX2xpbmVdOwotICAgICAgICBhc3NlcnQgKG5ld19saW5lIC0gbGFzdF9saW5lIDwgMjU1KTsKLSAgICAgICAgbGluZW5vW2ldID0oKHVuc2lnbmVkIGNoYXIpKG5ld19saW5lIC0gbGFzdF9saW5lKSk7Ci0gICAgICAgIGxhc3RfbGluZSA9IG5ld19saW5lOworICAgICAgICB1bnNpZ25lZCBpbnQgb2Zmc2V0X2RlbHRhLCBuZXdfb2Zmc2V0OworICAgICAgICBjdW1fb3JpZ19vZmZzZXQgKz0gbG5vdGFiW2ldOworICAgICAgICBhc3NlcnQoY3VtX29yaWdfb2Zmc2V0ICUgc2l6ZW9mKF9QeV9DT0RFVU5JVCkgPT0gMCk7CisgICAgICAgIG5ld19vZmZzZXQgPSBibG9ja3NbY3VtX29yaWdfb2Zmc2V0IC8gc2l6ZW9mKF9QeV9DT0RFVU5JVCldICoKKyAgICAgICAgICAgICAgICBzaXplb2YoX1B5X0NPREVVTklUKTsKKyAgICAgICAgb2Zmc2V0X2RlbHRhID0gbmV3X29mZnNldCAtIGxhc3Rfb2Zmc2V0OworICAgICAgICBhc3NlcnQob2Zmc2V0X2RlbHRhIDw9IDI1NSk7CisgICAgICAgIGxub3RhYltpXSA9ICh1bnNpZ25lZCBjaGFyKW9mZnNldF9kZWx0YTsKKyAgICAgICAgbGFzdF9vZmZzZXQgPSBuZXdfb2Zmc2V0OwogICAgIH0KIAogICAgIC8qIFJlbW92ZSBOT1BzIGFuZCBmaXh1cCBqdW1wIHRhcmdldHMgKi8KLSAgICBmb3IgKGk9MCwgaD0wIDsgaTxjb2RlbGVuIDsgKSB7Ci0gICAgICAgIG9wY29kZSA9IGNvZGVzdHJbaV07CisgICAgZm9yIChvcF9zdGFydCA9IGkgPSBoID0gMDsgaSA8IGNvZGVsZW47IGkrKywgb3Bfc3RhcnQgPSBpKSB7CisgICAgICAgIGogPSBfUHlfT1BBUkcoY29kZXN0cltpXSk7CisgICAgICAgIHdoaWxlIChfUHlfT1BDT0RFKGNvZGVzdHJbaV0pID09IEVYVEVOREVEX0FSRykgeworICAgICAgICAgICAgaSsrOworICAgICAgICAgICAgaiA9IGo8PDggfCBfUHlfT1BBUkcoY29kZXN0cltpXSk7CisgICAgICAgIH0KKyAgICAgICAgb3Bjb2RlID0gX1B5X09QQ09ERShjb2Rlc3RyW2ldKTsKICAgICAgICAgc3dpdGNoIChvcGNvZGUpIHsKLSAgICAgICAgICAgIGNhc2UgTk9QOgotICAgICAgICAgICAgICAgIGkrKzsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGNhc2UgTk9QOmNvbnRpbnVlOwogCiAgICAgICAgICAgICBjYXNlIEpVTVBfQUJTT0xVVEU6CiAgICAgICAgICAgICBjYXNlIENPTlRJTlVFX0xPT1A6CkBAIC02OTYsOCArNzU0LDcgQEAKICAgICAgICAgICAgIGNhc2UgUE9QX0pVTVBfSUZfVFJVRToKICAgICAgICAgICAgIGNhc2UgSlVNUF9JRl9GQUxTRV9PUl9QT1A6CiAgICAgICAgICAgICBjYXNlIEpVTVBfSUZfVFJVRV9PUl9QT1A6Ci0gICAgICAgICAgICAgICAgaiA9IGFkZHJtYXBbR0VUQVJHKGNvZGVzdHIsIGkpXTsKLSAgICAgICAgICAgICAgICBTRVRBUkcoY29kZXN0ciwgaSwgaik7CisgICAgICAgICAgICAgICAgaiA9IGJsb2Nrc1tqIC8gc2l6ZW9mKF9QeV9DT0RFVU5JVCldICogc2l6ZW9mKF9QeV9DT0RFVU5JVCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIGNhc2UgRk9SX0lURVI6CkBAIC03MDcsMzQgKzc2NCwzMiBAQAogICAgICAgICAgICAgY2FzZSBTRVRVUF9GSU5BTExZOgogICAgICAgICAgICAgY2FzZSBTRVRVUF9XSVRIOgogICAgICAgICAgICAgY2FzZSBTRVRVUF9BU1lOQ19XSVRIOgotICAgICAgICAgICAgICAgIGogPSBhZGRybWFwW0dFVEFSRyhjb2Rlc3RyLCBpKSArIGkgKyAzXSAtIGFkZHJtYXBbaV0gLSAzOwotICAgICAgICAgICAgICAgIFNFVEFSRyhjb2Rlc3RyLCBpLCBqKTsKKyAgICAgICAgICAgICAgICBqID0gYmxvY2tzW2ogLyBzaXplb2YoX1B5X0NPREVVTklUKSArIGkgKyAxXSAtIGJsb2Nrc1tpXSAtIDE7CisgICAgICAgICAgICAgICAgaiAqPSBzaXplb2YoX1B5X0NPREVVTklUKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBhZGogPSBDT0RFU0laRShvcGNvZGUpOwotICAgICAgICB3aGlsZSAoYWRqLS0pCi0gICAgICAgICAgICBjb2Rlc3RyW2grK10gPSBjb2Rlc3RyW2krK107CisgICAgICAgIG5leHRpID0gaSAtIG9wX3N0YXJ0ICsgMTsKKyAgICAgICAgaWYgKGluc3Ryc2l6ZShqKSA+IG5leHRpKQorICAgICAgICAgICAgZ290byBleGl0VW5jaGFuZ2VkOworICAgICAgICAvKiBJZiBpbnN0cnNpemUoaikgPCBuZXh0aSwgd2UnbGwgZW1pdCBFWFRFTkRFRF9BUkcgMCAqLworICAgICAgICB3cml0ZV9vcF9hcmcoY29kZXN0ciArIGgsIG9wY29kZSwgaiwgbmV4dGkpOworICAgICAgICBoICs9IG5leHRpOwogICAgIH0KLSAgICBhc3NlcnQoaCArIG5vcHMgPT0gY29kZWxlbik7CisgICAgYXNzZXJ0KGggKyAoUHlfc3NpemVfdClub3BzID09IGNvZGVsZW4pOwogCi0gICAgY29kZSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNoYXIgKiljb2Rlc3RyLCBoKTsKICAgICBDT05TVF9TVEFDS19ERUxFVEUoKTsKLSAgICBQeU1lbV9GcmVlKGFkZHJtYXApOwotICAgIFB5TWVtX0ZyZWUoY29kZXN0cik7CiAgICAgUHlNZW1fRnJlZShibG9ja3MpOworICAgIGNvZGUgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopY29kZXN0ciwgaCAqIHNpemVvZihfUHlfQ09ERVVOSVQpKTsKKyAgICBQeU1lbV9GcmVlKGNvZGVzdHIpOwogICAgIHJldHVybiBjb2RlOwogCiAgZXhpdEVycm9yOgogICAgIGNvZGUgPSBOVUxMOwogCiAgZXhpdFVuY2hhbmdlZDoKLSAgICBDT05TVF9TVEFDS19ERUxFVEUoKTsKLSAgICBpZiAoYmxvY2tzICE9IE5VTEwpCi0gICAgICAgIFB5TWVtX0ZyZWUoYmxvY2tzKTsKLSAgICBpZiAoYWRkcm1hcCAhPSBOVUxMKQotICAgICAgICBQeU1lbV9GcmVlKGFkZHJtYXApOwotICAgIGlmIChjb2Rlc3RyICE9IE5VTEwpCi0gICAgICAgIFB5TWVtX0ZyZWUoY29kZXN0cik7CiAgICAgUHlfWElOQ1JFRihjb2RlKTsKKyAgICBDT05TVF9TVEFDS19ERUxFVEUoKTsKKyAgICBQeU1lbV9GcmVlKGJsb2Nrcyk7CisgICAgUHlNZW1fRnJlZShjb2Rlc3RyKTsKICAgICByZXR1cm4gY29kZTsKIH0KZGlmZiAtLWdpdCBhL1B5dGhvbi9weWhhc2guYyBiL1B5dGhvbi9weWhhc2guYwppbmRleCA5N2NiNTQ3Li41N2EyZGE3IDEwMDY0NAotLS0gYS9QeXRob24vcHloYXNoLmMKKysrIGIvUHl0aG9uL3B5aGFzaC5jCkBAIC0zMTgsNDAgKzMxOCwzNyBAQAogCiAgTW9kaWZpZWQgZm9yIFB5dGhvbiBieSBDaHJpc3RpYW4gSGVpbWVzOgogICAgIC0gQzg5IC8gTVNWQyBjb21wYXRpYmlsaXR5Ci0gICAgLSBQWV9VSU5UNjRfVCwgUFlfVUlOVDMyX1QgYW5kIFBZX1VJTlQ4X1QKICAgICAtIF9yb3RsNjQoKSBvbiBXaW5kb3dzCiAgICAgLSBsZXRvaDY0KCkgZmFsbGJhY2sKICovCiAKLXR5cGVkZWYgdW5zaWduZWQgY2hhciBQWV9VSU5UOF9UOwotCiAvKiBieXRlIHN3YXAgbGl0dGxlIGVuZGlhbiB0byBob3N0IGVuZGlhbgogICogRW5kaWFuIGNvbnZlcnNpb24gbm90IG9ubHkgZW5zdXJlcyB0aGF0IHRoZSBoYXNoIGZ1bmN0aW9uIHJldHVybnMgdGhlIHNhbWUKICAqIHZhbHVlIG9uIGFsbCBwbGF0Zm9ybXMuIEl0IGlzIGFsc28gcmVxdWlyZWQgdG8gZm9yIGEgZ29vZCBkaXNwZXJzaW9uIG9mCiAgKiB0aGUgaGFzaCB2YWx1ZXMnIGxlYXN0IHNpZ25pZmljYW50IGJpdHMuCiAgKi8KICNpZiBQWV9MSVRUTEVfRU5ESUFOCi0jICBkZWZpbmUgX2xlNjR0b2goeCkgKChQWV9VSU5UNjRfVCkoeCkpCisjICBkZWZpbmUgX2xlNjR0b2goeCkgKCh1aW50NjRfdCkoeCkpCiAjZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKICMgIGRlZmluZSBfbGU2NHRvaCh4KSBPU1N3YXBMaXR0bGVUb0hvc3RJbnQ2NCh4KQogI2VsaWYgZGVmaW5lZChIQVZFX0xFVE9INjQpCiAjICBkZWZpbmUgX2xlNjR0b2goeCkgbGU2NHRvaCh4KQogI2Vsc2UKLSMgIGRlZmluZSBfbGU2NHRvaCh4KSAoKChQWV9VSU5UNjRfVCkoeCkgPDwgNTYpIHwgXAotICAgICAgICAgICAgICAgICAgICAgICgoKFBZX1VJTlQ2NF9UKSh4KSA8PCA0MCkgJiAweGZmMDAwMDAwMDAwMDAwVUxMKSB8IFwKLSAgICAgICAgICAgICAgICAgICAgICAoKChQWV9VSU5UNjRfVCkoeCkgPDwgMjQpICYgMHhmZjAwMDAwMDAwMDBVTEwpIHwgXAotICAgICAgICAgICAgICAgICAgICAgICgoKFBZX1VJTlQ2NF9UKSh4KSA8PCA4KSAgJiAweGZmMDAwMDAwMDBVTEwpIHwgXAotICAgICAgICAgICAgICAgICAgICAgICgoKFBZX1VJTlQ2NF9UKSh4KSA+PiA4KSAgJiAweGZmMDAwMDAwVUxMKSB8IFwKLSAgICAgICAgICAgICAgICAgICAgICAoKChQWV9VSU5UNjRfVCkoeCkgPj4gMjQpICYgMHhmZjAwMDBVTEwpIHwgXAotICAgICAgICAgICAgICAgICAgICAgICgoKFBZX1VJTlQ2NF9UKSh4KSA+PiA0MCkgJiAweGZmMDBVTEwpIHwgXAotICAgICAgICAgICAgICAgICAgICAgICgoUFlfVUlOVDY0X1QpKHgpICA+PiA1NikpCisjICBkZWZpbmUgX2xlNjR0b2goeCkgKCgodWludDY0X3QpKHgpIDw8IDU2KSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAoKCh1aW50NjRfdCkoeCkgPDwgNDApICYgMHhmZjAwMDAwMDAwMDAwMFVMTCkgfCBcCisgICAgICAgICAgICAgICAgICAgICAgKCgodWludDY0X3QpKHgpIDw8IDI0KSAmIDB4ZmYwMDAwMDAwMDAwVUxMKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAoKCh1aW50NjRfdCkoeCkgPDwgOCkgICYgMHhmZjAwMDAwMDAwVUxMKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAoKCh1aW50NjRfdCkoeCkgPj4gOCkgICYgMHhmZjAwMDAwMFVMTCkgfCBcCisgICAgICAgICAgICAgICAgICAgICAgKCgodWludDY0X3QpKHgpID4+IDI0KSAmIDB4ZmYwMDAwVUxMKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAoKCh1aW50NjRfdCkoeCkgPj4gNDApICYgMHhmZjAwVUxMKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ2NF90KSh4KSAgPj4gNTYpKQogI2VuZGlmCiAKIAogI2lmZGVmIF9NU0NfVkVSCiAjICBkZWZpbmUgUk9UQVRFKHgsIGIpICBfcm90bDY0KHgsIGIpCiAjZWxzZQotIyAgZGVmaW5lIFJPVEFURSh4LCBiKSAoUFlfVUlOVDY0X1QpKCAoKHgpIDw8IChiKSkgfCAoICh4KSA+PiAoNjQgLSAoYikpKSApCisjICBkZWZpbmUgUk9UQVRFKHgsIGIpICh1aW50NjRfdCkoICgoeCkgPDwgKGIpKSB8ICggKHgpID4+ICg2NCAtIChiKSkpICkKICNlbmRpZgogCiAjZGVmaW5lIEhBTEZfUk9VTkQoYSxiLGMsZCxzLHQpICAgICAgICAgXApAQCAtMzY5LDIyICszNjYsMjIgQEAKIAogc3RhdGljIFB5X2hhc2hfdAogc2lwaGFzaDI0KGNvbnN0IHZvaWQgKnNyYywgUHlfc3NpemVfdCBzcmNfc3opIHsKLSAgICBQWV9VSU5UNjRfVCBrMCA9IF9sZTY0dG9oKF9QeV9IYXNoU2VjcmV0LnNpcGhhc2guazApOwotICAgIFBZX1VJTlQ2NF9UIGsxID0gX2xlNjR0b2goX1B5X0hhc2hTZWNyZXQuc2lwaGFzaC5rMSk7Ci0gICAgUFlfVUlOVDY0X1QgYiA9IChQWV9VSU5UNjRfVClzcmNfc3ogPDwgNTY7Ci0gICAgY29uc3QgUFlfVUlOVDY0X1QgKmluID0gKFBZX1VJTlQ2NF9UKilzcmM7CisgICAgdWludDY0X3QgazAgPSBfbGU2NHRvaChfUHlfSGFzaFNlY3JldC5zaXBoYXNoLmswKTsKKyAgICB1aW50NjRfdCBrMSA9IF9sZTY0dG9oKF9QeV9IYXNoU2VjcmV0LnNpcGhhc2guazEpOworICAgIHVpbnQ2NF90IGIgPSAodWludDY0X3Qpc3JjX3N6IDw8IDU2OworICAgIGNvbnN0IHVpbnQ2NF90ICppbiA9ICh1aW50NjRfdCopc3JjOwogCi0gICAgUFlfVUlOVDY0X1QgdjAgPSBrMCBeIDB4NzM2ZjZkNjU3MDczNjU3NVVMTDsKLSAgICBQWV9VSU5UNjRfVCB2MSA9IGsxIF4gMHg2NDZmNzI2MTZlNjQ2ZjZkVUxMOwotICAgIFBZX1VJTlQ2NF9UIHYyID0gazAgXiAweDZjNzk2NzY1NmU2NTcyNjFVTEw7Ci0gICAgUFlfVUlOVDY0X1QgdjMgPSBrMSBeIDB4NzQ2NTY0NjI3OTc0NjU3M1VMTDsKKyAgICB1aW50NjRfdCB2MCA9IGswIF4gMHg3MzZmNmQ2NTcwNzM2NTc1VUxMOworICAgIHVpbnQ2NF90IHYxID0gazEgXiAweDY0NmY3MjYxNmU2NDZmNmRVTEw7CisgICAgdWludDY0X3QgdjIgPSBrMCBeIDB4NmM3OTY3NjU2ZTY1NzI2MVVMTDsKKyAgICB1aW50NjRfdCB2MyA9IGsxIF4gMHg3NDY1NjQ2Mjc5NzQ2NTczVUxMOwogCi0gICAgUFlfVUlOVDY0X1QgdDsKLSAgICBQWV9VSU5UOF9UICpwdDsKLSAgICBQWV9VSU5UOF9UICptOworICAgIHVpbnQ2NF90IHQ7CisgICAgdWludDhfdCAqcHQ7CisgICAgdWludDhfdCAqbTsKIAogICAgIHdoaWxlIChzcmNfc3ogPj0gOCkgewotICAgICAgICBQWV9VSU5UNjRfVCBtaSA9IF9sZTY0dG9oKCppbik7CisgICAgICAgIHVpbnQ2NF90IG1pID0gX2xlNjR0b2goKmluKTsKICAgICAgICAgaW4gKz0gMTsKICAgICAgICAgc3JjX3N6IC09IDg7CiAgICAgICAgIHYzIF49IG1pOwpAQCAtMzkzLDEzICszOTAsMTMgQEAKICAgICB9CiAKICAgICB0ID0gMDsKLSAgICBwdCA9IChQWV9VSU5UOF9UICopJnQ7Ci0gICAgbSA9IChQWV9VSU5UOF9UICopaW47CisgICAgcHQgPSAodWludDhfdCAqKSZ0OworICAgIG0gPSAodWludDhfdCAqKWluOwogICAgIHN3aXRjaCAoc3JjX3N6KSB7CiAgICAgICAgIGNhc2UgNzogcHRbNl0gPSBtWzZdOwogICAgICAgICBjYXNlIDY6IHB0WzVdID0gbVs1XTsKICAgICAgICAgY2FzZSA1OiBwdFs0XSA9IG1bNF07Ci0gICAgICAgIGNhc2UgNDogUHlfTUVNQ1BZKHB0LCBtLCBzaXplb2YoUFlfVUlOVDMyX1QpKTsgYnJlYWs7CisgICAgICAgIGNhc2UgNDogbWVtY3B5KHB0LCBtLCBzaXplb2YodWludDMyX3QpKTsgYnJlYWs7CiAgICAgICAgIGNhc2UgMzogcHRbMl0gPSBtWzJdOwogICAgICAgICBjYXNlIDI6IHB0WzFdID0gbVsxXTsKICAgICAgICAgY2FzZSAxOiBwdFswXSA9IG1bMF07CmRpZmYgLS1naXQgYS9QeXRob24vcHlsaWZlY3ljbGUuYyBiL1B5dGhvbi9weWxpZmVjeWNsZS5jCmluZGV4IGNlNTI5OTAuLmE0ZjdmODIgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9weWxpZmVjeWNsZS5jCisrKyBiL1B5dGhvbi9weWxpZmVjeWNsZS5jCkBAIC0zMSw2ICszMSw5IEBACiAjaWZkZWYgTVNfV0lORE9XUwogI3VuZGVmIEJZVEUKICNpbmNsdWRlICJ3aW5kb3dzLmgiCisKK2V4dGVybiBQeVR5cGVPYmplY3QgUHlXaW5kb3dzQ29uc29sZUlPX1R5cGU7CisjZGVmaW5lIFB5V2luZG93c0NvbnNvbGVJT19DaGVjayhvcCkgKFB5T2JqZWN0X1R5cGVDaGVjaygob3ApLCAmUHlXaW5kb3dzQ29uc29sZUlPX1R5cGUpKQogI2VuZGlmCiAKIF9QeV9JREVOVElGSUVSKGZsdXNoKTsKQEAgLTkwLDYgKzkzLDEwIEBACiBpbnQgUHlfVW5idWZmZXJlZFN0ZGlvRmxhZyA9IDA7IC8qIFVuYnVmZmVyZWQgYmluYXJ5IHN0ZHtpbixvdXQsZXJyfSAqLwogaW50IFB5X0hhc2hSYW5kb21pemF0aW9uRmxhZyA9IDA7IC8qIGZvciAtUiBhbmQgUFlUSE9OSEFTSFNFRUQgKi8KIGludCBQeV9Jc29sYXRlZEZsYWcgPSAwOyAvKiBmb3IgLUksIGlzb2xhdGUgZnJvbSB1c2VyJ3MgZW52ICovCisjaWZkZWYgTVNfV0lORE9XUworaW50IFB5X0xlZ2FjeVdpbmRvd3NGU0VuY29kaW5nRmxhZyA9IDA7IC8qIFVzZXMgbWJjcyBpbnN0ZWFkIG9mIHV0Zi04ICovCitpbnQgUHlfTGVnYWN5V2luZG93c1N0ZGlvRmxhZyA9IDA7IC8qIFVzZXMgRmlsZUlPIGluc3RlYWQgb2YgV2luZG93c0NvbnNvbGVJTyAqLworI2VuZGlmCiAKIFB5VGhyZWFkU3RhdGUgKl9QeV9GaW5hbGl6aW5nID0gTlVMTDsKIApAQCAtMTUxLDExICsxNTgsMTcgQEAKICAgICAgICAgICAgIHJldHVybiAtMzsKICAgICAgICAgfQogICAgIH0KKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaWYgKF9QeV9TdGFuZGFyZFN0cmVhbUVuY29kaW5nKSB7CisgICAgICAgIC8qIE92ZXJyaWRpbmcgdGhlIHN0cmVhbSBlbmNvZGluZyBpbXBsaWVzIGxlZ2FjeSBzdHJlYW1zICovCisgICAgICAgIFB5X0xlZ2FjeVdpbmRvd3NTdGRpb0ZsYWcgPSAxOworICAgIH0KKyNlbmRpZgogICAgIHJldHVybiAwOwogfQogCi0vKiBHbG9iYWwgaW5pdGlhbGl6YXRpb25zLiAgQ2FuIGJlIHVuZG9uZSBieSBQeV9GaW5hbGl6ZSgpLiAgRG9uJ3QKLSAgIGNhbGwgdGhpcyB0d2ljZSB3aXRob3V0IGFuIGludGVydmVuaW5nIFB5X0ZpbmFsaXplKCkgY2FsbC4gIFdoZW4KKy8qIEdsb2JhbCBpbml0aWFsaXphdGlvbnMuICBDYW4gYmUgdW5kb25lIGJ5IFB5X0ZpbmFsaXplRXgoKS4gIERvbid0CisgICBjYWxsIHRoaXMgdHdpY2Ugd2l0aG91dCBhbiBpbnRlcnZlbmluZyBQeV9GaW5hbGl6ZUV4KCkgY2FsbC4gIFdoZW4KICAgIGluaXRpYWxpemF0aW9ucyBmYWlsLCBhIGZhdGFsIGVycm9yIGlzIGlzc3VlZCBhbmQgdGhlIGZ1bmN0aW9uIGRvZXMKICAgIG5vdCByZXR1cm4uICBPbiByZXR1cm4sIHRoZSBmaXJzdCB0aHJlYWQgYW5kIGludGVycHJldGVyIHN0YXRlIGhhdmUKICAgIGJlZW4gY3JlYXRlZC4KQEAgLTE5Miw3ICsyMDUsNyBAQAogICAgIGlmICghbmFtZSkKICAgICAgICAgZ290byBlcnJvcjsKIAotICAgIG5hbWVfdXRmOCA9IF9QeVVuaWNvZGVfQXNTdHJpbmcobmFtZSk7CisgICAgbmFtZV91dGY4ID0gUHlVbmljb2RlX0FzVVRGOChuYW1lKTsKICAgICBpZiAobmFtZV91dGY4ID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgbmFtZV9zdHIgPSBfUHlNZW1fUmF3U3RyZHVwKG5hbWVfdXRmOCk7CkBAIC0yMjMsNiArMjM2LDggQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIHJldHVybiBnZXRfY29kZWNfbmFtZShjb2Rlc2V0KTsKKyNlbGlmIGRlZmluZWQoX19BTkRST0lEX18pCisgICAgcmV0dXJuIGdldF9jb2RlY19uYW1lKCJVVEYtOCIpOwogI2Vsc2UKICAgICBQeUVycl9TZXROb25lKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IpOwogICAgIHJldHVybiBOVUxMOwpAQCAtMjUyLDYgKzI2NywxMSBAQAogICAgIGludGVycC0+aW1wb3J0bGliID0gaW1wb3J0bGliOwogICAgIFB5X0lOQ1JFRihpbnRlcnAtPmltcG9ydGxpYik7CiAKKyAgICBpbnRlcnAtPmltcG9ydF9mdW5jID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoaW50ZXJwLT5idWlsdGlucywgIl9faW1wb3J0X18iKTsKKyAgICBpZiAoaW50ZXJwLT5pbXBvcnRfZnVuYyA9PSBOVUxMKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBfX2ltcG9ydF9fIG5vdCBmb3VuZCIpOworICAgIFB5X0lOQ1JFRihpbnRlcnAtPmltcG9ydF9mdW5jKTsKKwogICAgIC8qIEltcG9ydCB0aGUgX2ltcCBtb2R1bGUgKi8KICAgICBpbXBtb2QgPSBQeUluaXRfaW1wKCk7CiAgICAgaWYgKGltcG1vZCA9PSBOVUxMKSB7CkBAIC0yOTUsNyArMzE1LDcgQEAKICAgICBpbml0aWFsaXplZCA9IDE7CiAgICAgX1B5X0ZpbmFsaXppbmcgPSBOVUxMOwogCi0jaWYgZGVmaW5lZChIQVZFX0xBTkdJTkZPX0gpICYmIGRlZmluZWQoSEFWRV9TRVRMT0NBTEUpCisjaWZkZWYgSEFWRV9TRVRMT0NBTEUKICAgICAvKiBTZXQgdXAgdGhlIExDX0NUWVBFIGxvY2FsZSwgc28gd2UgY2FuIG9idGFpbgogICAgICAgIHRoZSBsb2NhbGUncyBjaGFyc2V0IHdpdGhvdXQgaGF2aW5nIHRvIHN3aXRjaAogICAgICAgIGxvY2FsZXMuICovCkBAIC0zMTQsNiArMzM0LDEyIEBACiAgICAgICAgY2hlY2sgaXRzIHZhbHVlIGZ1cnRoZXIuICovCiAgICAgaWYgKChwID0gUHlfR0VURU5WKCJQWVRIT05IQVNIU0VFRCIpKSAmJiAqcCAhPSAnXDAnKQogICAgICAgICBQeV9IYXNoUmFuZG9taXphdGlvbkZsYWcgPSBhZGRfZmxhZyhQeV9IYXNoUmFuZG9taXphdGlvbkZsYWcsIHApOworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpZiAoKHAgPSBQeV9HRVRFTlYoIlBZVEhPTkxFR0FDWVdJTkRPV1NGU0VOQ09ESU5HIikpICYmICpwICE9ICdcMCcpCisgICAgICAgIFB5X0xlZ2FjeVdpbmRvd3NGU0VuY29kaW5nRmxhZyA9IGFkZF9mbGFnKFB5X0xlZ2FjeVdpbmRvd3NGU0VuY29kaW5nRmxhZywgcCk7CisgICAgaWYgKChwID0gUHlfR0VURU5WKCJQWVRIT05MRUdBQ1lXSU5ET1dTU1RESU8iKSkgJiYgKnAgIT0gJ1wwJykKKyAgICAgICAgUHlfTGVnYWN5V2luZG93c1N0ZGlvRmxhZyA9IGFkZF9mbGFnKFB5X0xlZ2FjeVdpbmRvd3NTdGRpb0ZsYWcsIHApOworI2VuZGlmCiAKICAgICBfUHlSYW5kb21fSW5pdCgpOwogCkBAIC0zMjcsMTEgKzM1MywxMSBAQAogICAgICh2b2lkKSBQeVRocmVhZFN0YXRlX1N3YXAodHN0YXRlKTsKIAogI2lmZGVmIFdJVEhfVEhSRUFECi0gICAgLyogV2UgY2FuJ3QgY2FsbCBfUHlFdmFsX0ZpbmlUaHJlYWRzKCkgaW4gUHlfRmluYWxpemUgYmVjYXVzZQorICAgIC8qIFdlIGNhbid0IGNhbGwgX1B5RXZhbF9GaW5pVGhyZWFkcygpIGluIFB5X0ZpbmFsaXplRXggYmVjYXVzZQogICAgICAgIGRlc3Ryb3lpbmcgdGhlIEdJTCBtaWdodCBmYWlsIHdoZW4gaXQgaXMgYmVpbmcgcmVmZXJlbmNlZCBmcm9tCiAgICAgICAgYW5vdGhlciBydW5uaW5nIHRocmVhZCAoc2VlIGlzc3VlICM5OTAxKS4KICAgICAgICBJbnN0ZWFkIHdlIGRlc3Ryb3kgdGhlIHByZXZpb3VzbHkgY3JlYXRlZCBHSUwgaGVyZSwgd2hpY2ggZW5zdXJlcwotICAgICAgIHRoYXQgd2UgY2FuIGNhbGwgUHlfSW5pdGlhbGl6ZSAvIFB5X0ZpbmFsaXplIG11bHRpcGxlIHRpbWVzLiAqLworICAgICAgIHRoYXQgd2UgY2FuIGNhbGwgUHlfSW5pdGlhbGl6ZSAvIFB5X0ZpbmFsaXplRXggbXVsdGlwbGUgdGltZXMuICovCiAgICAgX1B5RXZhbF9GaW5pVGhyZWFkcygpOwogCiAgICAgLyogQXV0by10aHJlYWQtc3RhdGUgQVBJICovCkBAIC00NzcsMjggKzUwMywzNSBAQAogICAgIHJldHVybiByID4gMDsKIH0KIAotc3RhdGljIHZvaWQKK3N0YXRpYyBpbnQKIGZsdXNoX3N0ZF9maWxlcyh2b2lkKQogewogICAgIFB5T2JqZWN0ICpmb3V0ID0gX1B5U3lzX0dldE9iamVjdElkKCZQeUlkX3N0ZG91dCk7CiAgICAgUHlPYmplY3QgKmZlcnIgPSBfUHlTeXNfR2V0T2JqZWN0SWQoJlB5SWRfc3RkZXJyKTsKICAgICBQeU9iamVjdCAqdG1wOworICAgIGludCBzdGF0dXMgPSAwOwogCiAgICAgaWYgKGZvdXQgIT0gTlVMTCAmJiBmb3V0ICE9IFB5X05vbmUgJiYgIWZpbGVfaXNfY2xvc2VkKGZvdXQpKSB7Ci0gICAgICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZm91dCwgJlB5SWRfZmx1c2gsICIiKTsKLSAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQorICAgICAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZvdXQsICZQeUlkX2ZsdXNoLCBOVUxMKTsKKyAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUoZm91dCk7CisgICAgICAgICAgICBzdGF0dXMgPSAtMTsKKyAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgICAgICBQeV9ERUNSRUYodG1wKTsKICAgICB9CiAKICAgICBpZiAoZmVyciAhPSBOVUxMICYmIGZlcnIgIT0gUHlfTm9uZSAmJiAhZmlsZV9pc19jbG9zZWQoZmVycikpIHsKLSAgICAgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmZXJyLCAmUHlJZF9mbHVzaCwgIiIpOwotICAgICAgICBpZiAodG1wID09IE5VTEwpCisgICAgICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZmVyciwgJlB5SWRfZmx1c2gsIE5VTEwpOworICAgICAgICBpZiAodG1wID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgICAgICBzdGF0dXMgPSAtMTsKKyAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgICAgICBQeV9ERUNSRUYodG1wKTsKICAgICB9CisKKyAgICByZXR1cm4gc3RhdHVzOwogfQogCiAvKiBVbmRvIHRoZSBlZmZlY3Qgb2YgUHlfSW5pdGlhbGl6ZSgpLgpAQCAtNTE1LDE0ICs1NDgsMTUgQEAKIAogKi8KIAotdm9pZAotUHlfRmluYWxpemUodm9pZCkKK2ludAorUHlfRmluYWxpemVFeCh2b2lkKQogewogICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwOwogICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKKyAgICBpbnQgc3RhdHVzID0gMDsKIAogICAgIGlmICghaW5pdGlhbGl6ZWQpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHN0YXR1czsKIAogICAgIHdhaXRfZm9yX3RocmVhZF9zaHV0ZG93bigpOwogCkBAIC01NDcsNyArNTgxLDkgQEAKICAgICBpbml0aWFsaXplZCA9IDA7CiAKICAgICAvKiBGbHVzaCBzeXMuc3Rkb3V0IGFuZCBzeXMuc3RkZXJyICovCi0gICAgZmx1c2hfc3RkX2ZpbGVzKCk7CisgICAgaWYgKGZsdXNoX3N0ZF9maWxlcygpIDwgMCkgeworICAgICAgICBzdGF0dXMgPSAtMTsKKyAgICB9CiAKICAgICAvKiBEaXNhYmxlIHNpZ25hbCBoYW5kbGluZyAqLwogICAgIFB5T1NfRmluaUludGVycnVwdHMoKTsKQEAgLTU2NCwxOSArNjAwLDIxIEBACiAgICAgICogWFhYIGJ1dCBJJ20gdW5jbGVhciBvbiBleGFjdGx5IGhvdyB0aGF0IG9uZSBoYXBwZW5zLiAgSW4gYW55IGNhc2UsCiAgICAgICogWFhYIEkgaGF2ZW4ndCBzZWVuIGEgcmVhbC1saWZlIHJlcG9ydCBvZiBlaXRoZXIgb2YgdGhlc2UuCiAgICAgICovCi0gICAgUHlHQ19Db2xsZWN0KCk7CisgICAgX1B5R0NfQ29sbGVjdElmRW5hYmxlZCgpOwogI2lmZGVmIENPVU5UX0FMTE9DUwogICAgIC8qIFdpdGggQ09VTlRfQUxMT0NTLCBpdCBoZWxwcyB0byBydW4gR0MgbXVsdGlwbGUgdGltZXM6CiAgICAgICAgZWFjaCBjb2xsZWN0aW9uIG1pZ2h0IHJlbGVhc2Ugc29tZSB0eXBlcyBmcm9tIHRoZSB0eXBlCiAgICAgICAgbGlzdCwgc28gdGhleSBiZWNvbWUgZ2FyYmFnZS4gKi8KLSAgICB3aGlsZSAoUHlHQ19Db2xsZWN0KCkgPiAwKQorICAgIHdoaWxlIChfUHlHQ19Db2xsZWN0SWZFbmFibGVkKCkgPiAwKQogICAgICAgICAvKiBub3RoaW5nICovOwogI2VuZGlmCiAgICAgLyogRGVzdHJveSBhbGwgbW9kdWxlcyAqLwogICAgIFB5SW1wb3J0X0NsZWFudXAoKTsKIAogICAgIC8qIEZsdXNoIHN5cy5zdGRvdXQgYW5kIHN5cy5zdGRlcnIgKGFnYWluLCBpbiBjYXNlIG1vcmUgd2FzIHByaW50ZWQpICovCi0gICAgZmx1c2hfc3RkX2ZpbGVzKCk7CisgICAgaWYgKGZsdXNoX3N0ZF9maWxlcygpIDwgMCkgeworICAgICAgICBzdGF0dXMgPSAtMTsKKyAgICB9CiAKICAgICAvKiBDb2xsZWN0IGZpbmFsIGdhcmJhZ2UuICBUaGlzIGRpc3Bvc2VzIG9mIGN5Y2xlcyBjcmVhdGVkIGJ5CiAgICAgICogY2xhc3MgZGVmaW5pdGlvbnMsIGZvciBleGFtcGxlLgpAQCAtNTk0LDcgKzYzMiw3IEBACiAgICAgICogWFhYIFB5dGhvbiBjb2RlIGdldHRpbmcgY2FsbGVkLgogICAgICAqLwogI2lmIDAKLSAgICBQeUdDX0NvbGxlY3QoKTsKKyAgICBfUHlHQ19Db2xsZWN0SWZFbmFibGVkKCk7CiAjZW5kaWYKIAogICAgIC8qIERpc2FibGUgdHJhY2VtYWxsb2MgYWZ0ZXIgYWxsIFB5dGhvbiBvYmplY3RzIGhhdmUgYmVlbiBkZXN0cm95ZWQsCkBAIC02MTIsNyArNjUwLDcgQEAKIAogICAgIC8qIERlYnVnZ2luZyBzdHVmZiAqLwogI2lmZGVmIENPVU5UX0FMTE9DUwotICAgIGR1bXBfY291bnRzKHN0ZG91dCk7CisgICAgZHVtcF9jb3VudHMoc3RkZXJyKTsKICNlbmRpZgogICAgIC8qIGR1bXAgaGFzaCBzdGF0cyAqLwogICAgIF9QeUhhc2hfRmluaSgpOwpAQCAtNjU1LDYgKzY5Myw4IEBACiAgICAgUHlTbGljZV9GaW5pKCk7CiAgICAgX1B5R0NfRmluaSgpOwogICAgIF9QeVJhbmRvbV9GaW5pKCk7CisgICAgX1B5QXJnX0ZpbmkoKTsKKyAgICBQeUFzeW5jR2VuX0ZpbmkoKTsKIAogICAgIC8qIENsZWFudXAgVW5pY29kZSBpbXBsZW1lbnRhdGlvbiAqLwogICAgIF9QeVVuaWNvZGVfRmluaSgpOwpAQCAtNjgwLDYgKzcyMCw3IEBACiAKICAgICAvKiBEZWxldGUgY3VycmVudCB0aHJlYWQuIEFmdGVyIHRoaXMsIG1hbnkgQyBBUEkgY2FsbHMgYmVjb21lIGNyYXNoeS4gKi8KICAgICBQeVRocmVhZFN0YXRlX1N3YXAoTlVMTCk7CisKICAgICBQeUludGVycHJldGVyU3RhdGVfRGVsZXRlKGludGVycCk7CiAKICNpZmRlZiBQeV9UUkFDRV9SRUZTCkBAIC02OTAsMTIgKzczMSwyMiBAQAogICAgIGlmIChQeV9HRVRFTlYoIlBZVEhPTkRVTVBSRUZTIikpCiAgICAgICAgIF9QeV9QcmludFJlZmVyZW5jZUFkZHJlc3NlcyhzdGRlcnIpOwogI2VuZGlmIC8qIFB5X1RSQUNFX1JFRlMgKi8KLSNpZmRlZiBQWU1BTExPQ19ERUJVRwotICAgIGlmIChQeV9HRVRFTlYoIlBZVEhPTk1BTExPQ1NUQVRTIikpCi0gICAgICAgIF9QeU9iamVjdF9EZWJ1Z01hbGxvY1N0YXRzKHN0ZGVycik7CisjaWZkZWYgV0lUSF9QWU1BTExPQworICAgIGlmIChfUHlNZW1fUHltYWxsb2NFbmFibGVkKCkpIHsKKyAgICAgICAgY2hhciAqb3B0ID0gUHlfR0VURU5WKCJQWVRIT05NQUxMT0NTVEFUUyIpOworICAgICAgICBpZiAob3B0ICE9IE5VTEwgJiYgKm9wdCAhPSAnXDAnKQorICAgICAgICAgICAgX1B5T2JqZWN0X0RlYnVnTWFsbG9jU3RhdHMoc3RkZXJyKTsKKyAgICB9CiAjZW5kaWYKIAogICAgIGNhbGxfbGxfZXhpdGZ1bmNzKCk7CisgICAgcmV0dXJuIHN0YXR1czsKK30KKwordm9pZAorUHlfRmluYWxpemUodm9pZCkKK3sKKyAgICBQeV9GaW5hbGl6ZUV4KCk7CiB9CiAKIC8qIENyZWF0ZSBhbmQgaW5pdGlhbGl6ZSBhIG5ldyBpbnRlcnByZXRlciBhbmQgdGhyZWFkLCBhbmQgcmV0dXJuIHRoZQpAQCAtNzIxLDYgKzc3MiwxMiBAQAogICAgIGlmICghaW5pdGlhbGl6ZWQpCiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X05ld0ludGVycHJldGVyOiBjYWxsIFB5X0luaXRpYWxpemUgZmlyc3QiKTsKIAorI2lmZGVmIFdJVEhfVEhSRUFECisgICAgLyogSXNzdWUgIzEwOTE1LCAjMTU3NTE6IFRoZSBHSUwgQVBJIGRvZXNuJ3Qgd29yayB3aXRoIG11bHRpcGxlCisgICAgICAgaW50ZXJwcmV0ZXJzOiBkaXNhYmxlIFB5R0lMU3RhdGVfQ2hlY2soKS4gKi8KKyAgICBfUHlHSUxTdGF0ZV9jaGVja19lbmFibGVkID0gMDsKKyNlbmRpZgorCiAgICAgaW50ZXJwID0gUHlJbnRlcnByZXRlclN0YXRlX05ldygpOwogICAgIGlmIChpbnRlcnAgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC03NzcsNyArODM0LDcgQEAKIAogICAgICAgICBpZiAoaW5pdHN0ZGlvKCkgPCAwKQogICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigKLSAgICAgICAgICAgICJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbml0aWFsaXplIHN5cyBzdGFuZGFyZCBzdHJlYW1zIik7CisgICAgICAgICAgICAgICAgIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXRpYWxpemUgc3lzIHN0YW5kYXJkIHN0cmVhbXMiKTsKICAgICAgICAgaW5pdG1haW4oaW50ZXJwKTsKICAgICAgICAgaWYgKCFQeV9Ob1NpdGVGbGFnKQogICAgICAgICAgICAgaW5pdHNpdGUoKTsKQEAgLTgwMyw3ICs4NjAsNyBAQAogICAgZnJhbWVzLCBhbmQgdGhhdCBpdCBpcyBpdHMgaW50ZXJwcmV0ZXIncyBvbmx5IHJlbWFpbmluZyB0aHJlYWQuCiAgICBJdCBpcyBhIGZhdGFsIGVycm9yIHRvIHZpb2xhdGUgdGhlc2UgY29uc3RyYWludHMuCiAKLSAgIChQeV9GaW5hbGl6ZSgpIGRvZXNuJ3QgaGF2ZSB0aGVzZSBjb25zdHJhaW50cyAtLSBpdCB6YXBzCisgICAoUHlfRmluYWxpemVFeCgpIGRvZXNuJ3QgaGF2ZSB0aGVzZSBjb25zdHJhaW50cyAtLSBpdCB6YXBzCiAgICBldmVyeXRoaW5nLCByZWdhcmRsZXNzLikKIAogICAgTG9ja2luZzogYXMgYWJvdmUuCkBAIC04ODEsMTEgKzkzOCwxNyBAQAogc3RhdGljIHZvaWQKIGluaXRtYWluKFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwKQogewotICAgIFB5T2JqZWN0ICptLCAqZCwgKmxvYWRlcjsKKyAgICBQeU9iamVjdCAqbSwgKmQsICpsb2FkZXIsICphbm5fZGljdDsKICAgICBtID0gUHlJbXBvcnRfQWRkTW9kdWxlKCJfX21haW5fXyIpOwogICAgIGlmIChtID09IE5VTEwpCiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImNhbid0IGNyZWF0ZSBfX21haW5fXyBtb2R1bGUiKTsKICAgICBkID0gUHlNb2R1bGVfR2V0RGljdChtKTsKKyAgICBhbm5fZGljdCA9IFB5RGljdF9OZXcoKTsKKyAgICBpZiAoKGFubl9kaWN0ID09IE5VTEwpIHx8CisgICAgICAgIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiX19hbm5vdGF0aW9uc19fIiwgYW5uX2RpY3QpIDwgMCkpIHsKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiRmFpbGVkIHRvIGluaXRpYWxpemUgX19tYWluX18uX19hbm5vdGF0aW9uc19fIik7CisgICAgfQorICAgIFB5X0RFQ1JFRihhbm5fZGljdCk7CiAgICAgaWYgKFB5RGljdF9HZXRJdGVtU3RyaW5nKGQsICJfX2J1aWx0aW5zX18iKSA9PSBOVUxMKSB7CiAgICAgICAgIFB5T2JqZWN0ICpiaW1vZCA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgiYnVpbHRpbnMiKTsKICAgICAgICAgaWYgKGJpbW9kID09IE5VTEwpIHsKQEAgLTkyMSw2ICs5ODQsMTggQEAKIHsKICAgICBQeU9iamVjdCAqY29kZWM7CiAKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaWYgKFB5X0xlZ2FjeVdpbmRvd3NGU0VuY29kaW5nRmxhZykKKyAgICB7CisgICAgICAgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPSAibWJjcyI7CisgICAgICAgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RlRXJyb3JzID0gInJlcGxhY2UiOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gInV0Zi04IjsKKyAgICAgICAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGVFcnJvcnMgPSAic3Vycm9nYXRlcGFzcyI7CisgICAgfQorI2Vsc2UKICAgICBpZiAoUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9PSBOVUxMKQogICAgIHsKICAgICAgICAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9IGdldF9sb2NhbGVfZW5jb2RpbmcoKTsKQEAgLTkzMSw2ICsxMDA2LDcgQEAKICAgICAgICAgaW50ZXJwLT5mc2NvZGVjX2luaXRpYWxpemVkID0gMTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorI2VuZGlmCiAKICAgICAvKiB0aGUgZW5jb2RpbmcgaXMgbWJjcywgdXRmLTggb3IgYXNjaWkgKi8KICAgICBjb2RlYyA9IF9QeUNvZGVjX0xvb2t1cChQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nKTsKQEAgLTk2OSw5ICsxMDQ1LDEyIEBACiBpc192YWxpZF9mZChpbnQgZmQpCiB7CiAgICAgaW50IGZkMjsKLSAgICBpZiAoZmQgPCAwIHx8ICFfUHlWZXJpZnlfZmQoZmQpKQorICAgIGlmIChmZCA8IDApCiAgICAgICAgIHJldHVybiAwOwogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyAgICAvKiBQcmVmZXIgZHVwKCkgb3ZlciBmc3RhdCgpLiBmc3RhdCgpIGNhbiByZXF1aXJlIGlucHV0L291dHB1dCB3aGVyZWFzCisgICAgICAgZHVwKCkgZG9lc24ndCwgdGhlcmUgaXMgYSBsb3cgcmlzayBvZiBFTUZJTEUvRU5GSUxFIGF0IFB5dGhvbgorICAgICAgIHN0YXJ0dXAuICovCiAgICAgZmQyID0gZHVwKGZkKTsKICAgICBpZiAoZmQyID49IDApCiAgICAgICAgIGNsb3NlKGZkMik7CkBAIC05ODIsOCArMTA2MSw4IEBACiAvKiByZXR1cm5zIFB5X05vbmUgaWYgdGhlIGZkIGlzIG5vdCB2YWxpZCAqLwogc3RhdGljIFB5T2JqZWN0KgogY3JlYXRlX3N0ZGlvKFB5T2JqZWN0KiBpbywKLSAgICBpbnQgZmQsIGludCB3cml0ZV9tb2RlLCBjaGFyKiBuYW1lLAotICAgIGNoYXIqIGVuY29kaW5nLCBjaGFyKiBlcnJvcnMpCisgICAgaW50IGZkLCBpbnQgd3JpdGVfbW9kZSwgY29uc3QgY2hhciogbmFtZSwKKyAgICBjb25zdCBjaGFyKiBlbmNvZGluZywgY29uc3QgY2hhciogZXJyb3JzKQogewogICAgIFB5T2JqZWN0ICpidWYgPSBOVUxMLCAqc3RyZWFtID0gTlVMTCwgKnRleHQgPSBOVUxMLCAqcmF3ID0gTlVMTCwgKnJlczsKICAgICBjb25zdCBjaGFyKiBtb2RlOwpAQCAtMTAxMyw3ICsxMDkyLDggQEAKICAgICAgICAgbW9kZSA9ICJyYiI7CiAgICAgYnVmID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChpbywgJlB5SWRfb3BlbiwgImlzaU9PT2kiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQsIG1vZGUsIGJ1ZmZlcmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X05vbmUsIFB5X05vbmUsIFB5X05vbmUsIDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfTm9uZSwgUHlfTm9uZSwgLyogZW5jb2RpbmcsIGVycm9ycyAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfTm9uZSwgMCk7IC8qIG5ld2xpbmUsIGNsb3NlZmQgKi8KICAgICBpZiAoYnVmID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAKQEAgLTEwMjgsMTAgKzExMDgsMTYgQEAKICAgICAgICAgUHlfSU5DUkVGKHJhdyk7CiAgICAgfQogCisjaWZkZWYgTVNfV0lORE9XUworICAgIC8qIFdpbmRvd3MgY29uc29sZSBJTyBpcyBhbHdheXMgVVRGLTggZW5jb2RlZCAqLworICAgIGlmIChQeVdpbmRvd3NDb25zb2xlSU9fQ2hlY2socmF3KSkKKyAgICAgICAgZW5jb2RpbmcgPSAidXRmLTgiOworI2VuZGlmCisKICAgICB0ZXh0ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcobmFtZSk7CiAgICAgaWYgKHRleHQgPT0gTlVMTCB8fCBfUHlPYmplY3RfU2V0QXR0cklkKHJhdywgJlB5SWRfbmFtZSwgdGV4dCkgPCAwKQogICAgICAgICBnb3RvIGVycm9yOwotICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocmF3LCAmUHlJZF9pc2F0dHksICIiKTsKKyAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHJhdywgJlB5SWRfaXNhdHR5LCBOVUxMKTsKICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgaXNhdHR5ID0gUHlPYmplY3RfSXNUcnVlKHJlcyk7CkBAIC0xMTk5LDcgKzEyODUsNyBAQAogICAgIGVuY29kaW5nX2F0dHIgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHN0ZCwgImVuY29kaW5nIik7CiAgICAgaWYgKGVuY29kaW5nX2F0dHIgIT0gTlVMTCkgewogICAgICAgICBjb25zdCBjaGFyICogc3RkX2VuY29kaW5nOwotICAgICAgICBzdGRfZW5jb2RpbmcgPSBfUHlVbmljb2RlX0FzU3RyaW5nKGVuY29kaW5nX2F0dHIpOworICAgICAgICBzdGRfZW5jb2RpbmcgPSBQeVVuaWNvZGVfQXNVVEY4KGVuY29kaW5nX2F0dHIpOwogICAgICAgICBpZiAoc3RkX2VuY29kaW5nICE9IE5VTEwpIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICpjb2RlY19pbmZvID0gX1B5Q29kZWNfTG9va3VwKHN0ZF9lbmNvZGluZyk7CiAgICAgICAgICAgICBQeV9YREVDUkVGKGNvZGVjX2luZm8pOwpAQCAtMTI0MywyNSArMTMyOSwxMSBAQAogc3RhdGljIHZvaWQKIF9QeV9GYXRhbEVycm9yX0R1bXBUcmFjZWJhY2tzKGludCBmZCkKIHsKLSAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7Ci0KLSNpZmRlZiBXSVRIX1RIUkVBRAotICAgIC8qIFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKCkgd29ya3MgZXZlbiBpZiB0aGUgR0lMIHdhcyByZWxlYXNlZCAqLwotICAgIHRzdGF0ZSA9IFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKCk7Ci0jZWxzZQotICAgIHRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7Ci0jZW5kaWYKLSAgICBpZiAodHN0YXRlID09IE5VTEwpIHsKLSAgICAgICAgLyogX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKCkgcmVxdWlyZXMgdGhlIHRocmVhZCBzdGF0ZSB0byBkaXNwbGF5Ci0gICAgICAgICAqIGZyYW1lcyAqLwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgZnB1dGMoJ1xuJywgc3RkZXJyKTsKICAgICBmZmx1c2goc3RkZXJyKTsKIAogICAgIC8qIGRpc3BsYXkgdGhlIGN1cnJlbnQgUHl0aG9uIHN0YWNrICovCi0gICAgX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKGZkLCB0c3RhdGUtPmludGVycCwgdHN0YXRlKTsKKyAgICBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHMoZmQsIE5VTEwsIE5VTEwpOwogfQogCiAvKiBQcmludCB0aGUgY3VycmVudCBleGNlcHRpb24gKGlmIGFuIGV4Y2VwdGlvbiBpcyBzZXQpIHdpdGggaXRzIHRyYWNlYmFjaywKQEAgLTEzMTYsNyArMTM4OCw3IEBACiAgICAgUHlfWERFQ1JFRih0Yik7CiAKICAgICAvKiBzeXMuc3RkZXJyIG1heSBiZSBidWZmZXJlZDogY2FsbCBzeXMuc3RkZXJyLmZsdXNoKCkgKi8KLSAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZlcnIsICZQeUlkX2ZsdXNoLCAiIik7CisgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmZXJyLCAmUHlJZF9mbHVzaCwgTlVMTCk7CiAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgIGVsc2UKQEAgLTEzODgsNyArMTQ2MCw3IEBACiAvKiBDbGVhbiB1cCBhbmQgZXhpdCAqLwogCiAjaWZkZWYgV0lUSF9USFJFQUQKLSNpbmNsdWRlICJweXRocmVhZC5oIgorIyAgaW5jbHVkZSAicHl0aHJlYWQuaCIKICNlbmRpZgogCiBzdGF0aWMgdm9pZCAoKnB5ZXhpdGZ1bmMpKHZvaWQpID0gTlVMTDsKQEAgLTE0MjYsNyArMTQ5OCw3IEBACiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCh0aHJlYWRpbmcsICZQeUlkX19zaHV0ZG93biwgIiIpOworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQodGhyZWFkaW5nLCAmUHlJZF9fc2h1dGRvd24sIE5VTEwpOwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUodGhyZWFkaW5nKTsKICAgICB9CkBAIC0xNDYyLDcgKzE1MzQsOSBAQAogdm9pZAogUHlfRXhpdChpbnQgc3RzKQogewotICAgIFB5X0ZpbmFsaXplKCk7CisgICAgaWYgKFB5X0ZpbmFsaXplRXgoKSA8IDApIHsKKyAgICAgICAgc3RzID0gMTIwOworICAgIH0KIAogICAgIGV4aXQoc3RzKTsKIH0KZGlmZiAtLWdpdCBhL1B5dGhvbi9weXN0YXRlLmMgYi9QeXRob24vcHlzdGF0ZS5jCmluZGV4IDI0ZTIwYzMuLjY1YzI0NGUgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9weXN0YXRlLmMKKysrIGIvUHl0aG9uL3B5c3RhdGUuYwpAQCAtNiw3ICs2LDcgQEAKICNkZWZpbmUgR0VUX1RTVEFURSgpIFwKICAgICAoKFB5VGhyZWFkU3RhdGUqKV9QeV9hdG9taWNfbG9hZF9yZWxheGVkKCZfUHlUaHJlYWRTdGF0ZV9DdXJyZW50KSkKICNkZWZpbmUgU0VUX1RTVEFURSh2YWx1ZSkgXAotICAgIF9QeV9hdG9taWNfc3RvcmVfcmVsYXhlZCgmX1B5VGhyZWFkU3RhdGVfQ3VycmVudCwgKFB5X3VpbnRwdHJfdCkodmFsdWUpKQorICAgIF9QeV9hdG9taWNfc3RvcmVfcmVsYXhlZCgmX1B5VGhyZWFkU3RhdGVfQ3VycmVudCwgKHVpbnRwdHJfdCkodmFsdWUpKQogI2RlZmluZSBHRVRfSU5URVJQX1NUQVRFKCkgXAogICAgIChHRVRfVFNUQVRFKCktPmludGVycCkKIApAQCAtMjUsNyArMjUsNyBAQAogI2lmZGVmIEhBVkVfRExGQ05fSAogI2luY2x1ZGUgPGRsZmNuLmg+CiAjZW5kaWYKLSNpZm5kZWYgUlRMRF9MQVpZCisjaWYgIUhBVkVfREVDTF9SVExEX0xBWlkKICNkZWZpbmUgUlRMRF9MQVpZIDEKICNlbmRpZgogI2VuZGlmCkBAIC0zNCw2ICszNCw4IEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCitpbnQgX1B5R0lMU3RhdGVfY2hlY2tfZW5hYmxlZCA9IDE7CisKICNpZmRlZiBXSVRIX1RIUkVBRAogI2luY2x1ZGUgInB5dGhyZWFkLmgiCiBzdGF0aWMgUHlUaHJlYWRfdHlwZV9sb2NrIGhlYWRfbXV0ZXggPSBOVUxMOyAvKiBQcm90ZWN0cyBpbnRlcnAtPnRzdGF0ZV9oZWFkICovCkBAIC00NSw3ICs0Nyw3IEBACiAgICBHSUxTdGF0ZSBpbXBsZW1lbnRhdGlvbgogKi8KIHN0YXRpYyBQeUludGVycHJldGVyU3RhdGUgKmF1dG9JbnRlcnByZXRlclN0YXRlID0gTlVMTDsKLXN0YXRpYyBpbnQgYXV0b1RMU2tleSA9IDA7CitzdGF0aWMgaW50IGF1dG9UTFNrZXkgPSAtMTsKICNlbHNlCiAjZGVmaW5lIEhFQURfSU5JVCgpIC8qIE5vdGhpbmcgKi8KICNkZWZpbmUgSEVBRF9MT0NLKCkgLyogTm90aGluZyAqLwpAQCAtODgsMTYgKzkwLDE1IEBACiAgICAgICAgIGludGVycC0+Y29kZWNzX2luaXRpYWxpemVkID0gMDsKICAgICAgICAgaW50ZXJwLT5mc2NvZGVjX2luaXRpYWxpemVkID0gMDsKICAgICAgICAgaW50ZXJwLT5pbXBvcnRsaWIgPSBOVUxMOworICAgICAgICBpbnRlcnAtPmltcG9ydF9mdW5jID0gTlVMTDsKKyAgICAgICAgaW50ZXJwLT5ldmFsX2ZyYW1lID0gX1B5RXZhbF9FdmFsRnJhbWVEZWZhdWx0OwogI2lmZGVmIEhBVkVfRExPUEVOCi0jaWZkZWYgUlRMRF9OT1cKKyNpZiBIQVZFX0RFQ0xfUlRMRF9OT1cKICAgICAgICAgaW50ZXJwLT5kbG9wZW5mbGFncyA9IFJUTERfTk9XOwogI2Vsc2UKICAgICAgICAgaW50ZXJwLT5kbG9wZW5mbGFncyA9IFJUTERfTEFaWTsKICNlbmRpZgogI2VuZGlmCi0jaWZkZWYgV0lUSF9UU0MKLSAgICAgICAgaW50ZXJwLT50c2NkdW1wID0gMDsKLSNlbmRpZgogCiAgICAgICAgIEhFQURfTE9DSygpOwogICAgICAgICBpbnRlcnAtPm5leHQgPSBpbnRlcnBfaGVhZDsKQEAgLTEyNiw2ICsxMjcsNyBAQAogICAgIFB5X0NMRUFSKGludGVycC0+YnVpbHRpbnMpOwogICAgIFB5X0NMRUFSKGludGVycC0+YnVpbHRpbnNfY29weSk7CiAgICAgUHlfQ0xFQVIoaW50ZXJwLT5pbXBvcnRsaWIpOworICAgIFB5X0NMRUFSKGludGVycC0+aW1wb3J0X2Z1bmMpOwogfQogCiAKQEAgLTIyMiw2ICsyMjQsMTAgQEAKIAogICAgICAgICB0c3RhdGUtPmNvcm91dGluZV93cmFwcGVyID0gTlVMTDsKICAgICAgICAgdHN0YXRlLT5pbl9jb3JvdXRpbmVfd3JhcHBlciA9IDA7CisgICAgICAgIHRzdGF0ZS0+Y29fZXh0cmFfdXNlcl9jb3VudCA9IDA7CisKKyAgICAgICAgdHN0YXRlLT5hc3luY19nZW5fZmlyc3RpdGVyID0gTlVMTDsKKyAgICAgICAgdHN0YXRlLT5hc3luY19nZW5fZmluYWxpemVyID0gTlVMTDsKIAogICAgICAgICBpZiAoaW5pdCkKICAgICAgICAgICAgIF9QeVRocmVhZFN0YXRlX0luaXQodHN0YXRlKTsKQEAgLTQwMiw2ICs0MDgsOCBAQAogICAgIFB5X0NMRUFSKHRzdGF0ZS0+Y190cmFjZW9iaik7CiAKICAgICBQeV9DTEVBUih0c3RhdGUtPmNvcm91dGluZV93cmFwcGVyKTsKKyAgICBQeV9DTEVBUih0c3RhdGUtPmFzeW5jX2dlbl9maXJzdGl0ZXIpOworICAgIFB5X0NMRUFSKHRzdGF0ZS0+YXN5bmNfZ2VuX2ZpbmFsaXplcik7CiB9CiAKIApAQCAtNDUxLDEwICs0NTksMTAgQEAKICAgICBpZiAodHN0YXRlID09IE5VTEwpCiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoCiAgICAgICAgICAgICAiUHlUaHJlYWRTdGF0ZV9EZWxldGVDdXJyZW50OiBubyBjdXJyZW50IHRzdGF0ZSIpOwotICAgIFNFVF9UU1RBVEUoTlVMTCk7CisgICAgdHN0YXRlX2RlbGV0ZV9jb21tb24odHN0YXRlKTsKICAgICBpZiAoYXV0b0ludGVycHJldGVyU3RhdGUgJiYgUHlUaHJlYWRfZ2V0X2tleV92YWx1ZShhdXRvVExTa2V5KSA9PSB0c3RhdGUpCiAgICAgICAgIFB5VGhyZWFkX2RlbGV0ZV9rZXlfdmFsdWUoYXV0b1RMU2tleSk7Ci0gICAgdHN0YXRlX2RlbGV0ZV9jb21tb24odHN0YXRlKTsKKyAgICBTRVRfVFNUQVRFKE5VTEwpOwogICAgIFB5RXZhbF9SZWxlYXNlTG9jaygpOwogfQogI2VuZGlmIC8qIFdJVEhfVEhSRUFEICovCkBAIC02OTgsNyArNzA2LDcgQEAKIH0KIAogLyogSW50ZXJuYWwgaW5pdGlhbGl6YXRpb24vZmluYWxpemF0aW9uIGZ1bmN0aW9ucyBjYWxsZWQgYnkKLSAgIFB5X0luaXRpYWxpemUvUHlfRmluYWxpemUKKyAgIFB5X0luaXRpYWxpemUvUHlfRmluYWxpemVFeAogKi8KIHZvaWQKIF9QeUdJTFN0YXRlX0luaXQoUHlJbnRlcnByZXRlclN0YXRlICppLCBQeVRocmVhZFN0YXRlICp0KQpAQCAtNzE0LDEwICs3MjIsMTcgQEAKICAgICBfUHlHSUxTdGF0ZV9Ob3RlVGhyZWFkU3RhdGUodCk7CiB9CiAKK1B5SW50ZXJwcmV0ZXJTdGF0ZSAqCitfUHlHSUxTdGF0ZV9HZXRJbnRlcnByZXRlclN0YXRlVW5zYWZlKHZvaWQpCit7CisgICAgcmV0dXJuIGF1dG9JbnRlcnByZXRlclN0YXRlOworfQorCiB2b2lkCiBfUHlHSUxTdGF0ZV9GaW5pKHZvaWQpCiB7CiAgICAgUHlUaHJlYWRfZGVsZXRlX2tleShhdXRvVExTa2V5KTsKKyAgICBhdXRvVExTa2V5ID0gLTE7CiAgICAgYXV0b0ludGVycHJldGVyU3RhdGUgPSBOVUxMOwogfQogCkBAIC03ODYsOCArODAxLDE5IEBACiBpbnQKIFB5R0lMU3RhdGVfQ2hlY2sodm9pZCkKIHsKLSAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBHRVRfVFNUQVRFKCk7Ci0gICAgcmV0dXJuIHRzdGF0ZSAmJiAodHN0YXRlID09IFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKCkpOworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKKworICAgIGlmICghX1B5R0lMU3RhdGVfY2hlY2tfZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICBpZiAoYXV0b1RMU2tleSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICB0c3RhdGUgPSBHRVRfVFNUQVRFKCk7CisgICAgaWYgKHRzdGF0ZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiAodHN0YXRlID09IFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKCkpOwogfQogCiBQeUdJTFN0YXRlX1NUQVRFCmRpZmYgLS1naXQgYS9QeXRob24vcHlzdHJ0b2QuYyBiL1B5dGhvbi9weXN0cnRvZC5jCmluZGV4IDIwOWM5MDguLjY0ZDBjNTIgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9weXN0cnRvZC5jCisrKyBiL1B5dGhvbi9weXN0cnRvZC5jCkBAIC0zNzAsNiArMzcwLDcyIEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorLyogUmVtb3ZlIHVuZGVyc2NvcmVzIHRoYXQgZm9sbG93IHRoZSB1bmRlcnNjb3JlIHBsYWNlbWVudCBydWxlIGZyb20KKyAgIHRoZSBzdHJpbmcgYW5kIHRoZW4gY2FsbCB0aGUgYGlubmVyZnVuY2AgZnVuY3Rpb24gb24gdGhlIHJlc3VsdC4KKyAgIEl0IHNob3VsZCByZXR1cm4gYSBuZXcgb2JqZWN0IG9yIE5VTEwgb24gZXhjZXB0aW9uLgorCisgICBgd2hhdGAgaXMgdXNlZCBmb3IgdGhlIGVycm9yIG1lc3NhZ2UgZW1pdHRlZCB3aGVuIHVuZGVyc2NvcmVzIGFyZSBkZXRlY3RlZAorICAgdGhhdCBkb24ndCBmb2xsb3cgdGhlIHJ1bGUuIGBhcmdgIGlzIGFuIG9wYXF1ZSBwb2ludGVyIHBhc3NlZCB0byB0aGUgaW5uZXIKKyAgIGZ1bmN0aW9uLgorCisgICBUaGlzIGlzIHVzZWQgdG8gaW1wbGVtZW50IHVuZGVyc2NvcmUtYWdub3N0aWMgY29udmVyc2lvbiBmb3IgZmxvYXRzCisgICBhbmQgY29tcGxleCBudW1iZXJzLgorKi8KK1B5T2JqZWN0ICoKK19QeV9zdHJpbmdfdG9fbnVtYmVyX3dpdGhfdW5kZXJzY29yZXMoCisgICAgY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBvcmlnX2xlbiwgY29uc3QgY2hhciAqd2hhdCwgUHlPYmplY3QgKm9iaiwgdm9pZCAqYXJnLAorICAgIFB5T2JqZWN0ICooKmlubmVyZnVuYykoY29uc3QgY2hhciAqLCBQeV9zc2l6ZV90LCB2b2lkICopKQoreworICAgIGNoYXIgcHJldjsKKyAgICBjb25zdCBjaGFyICpwLCAqbGFzdDsKKyAgICBjaGFyICpkdXAsICplbmQ7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgIGlmIChzdHJjaHIocywgJ18nKSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBpbm5lcmZ1bmMocywgb3JpZ19sZW4sIGFyZyk7CisgICAgfQorCisgICAgZHVwID0gUHlNZW1fTWFsbG9jKG9yaWdfbGVuICsgMSk7CisgICAgZW5kID0gZHVwOworICAgIHByZXYgPSAnXDAnOworICAgIGxhc3QgPSBzICsgb3JpZ19sZW47CisgICAgZm9yIChwID0gczsgKnA7IHArKykgeworICAgICAgICBpZiAoKnAgPT0gJ18nKSB7CisgICAgICAgICAgICAvKiBVbmRlcnNjb3JlcyBhcmUgb25seSBhbGxvd2VkIGFmdGVyIGRpZ2l0cy4gKi8KKyAgICAgICAgICAgIGlmICghKHByZXYgPj0gJzAnICYmIHByZXYgPD0gJzknKSkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAqZW5kKysgPSAqcDsKKyAgICAgICAgICAgIC8qIFVuZGVyc2NvcmVzIGFyZSBvbmx5IGFsbG93ZWQgYmVmb3JlIGRpZ2l0cy4gKi8KKyAgICAgICAgICAgIGlmIChwcmV2ID09ICdfJyAmJiAhKCpwID49ICcwJyAmJiAqcCA8PSAnOScpKSB7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBwcmV2ID0gKnA7CisgICAgfQorICAgIC8qIFVuZGVyc2NvcmVzIGFyZSBub3QgYWxsb3dlZCBhdCB0aGUgZW5kLiAqLworICAgIGlmIChwcmV2ID09ICdfJykgeworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICAvKiBObyBlbWJlZGRlZCBOVUxzIGFsbG93ZWQuICovCisgICAgaWYgKHAgIT0gbGFzdCkgeworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICAqZW5kID0gJ1wwJzsKKyAgICByZXN1bHQgPSBpbm5lcmZ1bmMoZHVwLCBlbmQgLSBkdXAsIGFyZyk7CisgICAgUHlNZW1fRnJlZShkdXApOworICAgIHJldHVybiByZXN1bHQ7CisKKyAgZXJyb3I6CisgICAgUHlNZW1fRnJlZShkdXApOworICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorCQkgImNvdWxkIG5vdCBjb252ZXJ0IHN0cmluZyB0byAlczogIgorCQkgIiVSIiwgd2hhdCwgb2JqKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKwogI2lmZGVmIFBZX05PX1NIT1JUX0ZMT0FUX1JFUFIKIAogLyogR2l2ZW4gYSBzdHJpbmcgdGhhdCBtYXkgaGF2ZSBhIGRlY2ltYWwgcG9pbnQgaW4gdGhlIGN1cnJlbnQKQEAgLTg4MSwxMiArOTQ3LDEyIEBACiAjZGVmaW5lIE9GU19FIDIKIAogLyogVGhlIGxlbmd0aHMgb2YgdGhlc2UgYXJlIGtub3duIHRvIHRoZSBjb2RlIGJlbG93LCBzbyBkb24ndCBjaGFuZ2UgdGhlbSAqLwotc3RhdGljIGNoYXIgKmxjX2Zsb2F0X3N0cmluZ3NbXSA9IHsKK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgbGNfZmxvYXRfc3RyaW5nc1tdID0gewogICAgICJpbmYiLAogICAgICJuYW4iLAogICAgICJlIiwKIH07Ci1zdGF0aWMgY2hhciAqdWNfZmxvYXRfc3RyaW5nc1tdID0geworc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCB1Y19mbG9hdF9zdHJpbmdzW10gPSB7CiAgICAgIklORiIsCiAgICAgIk5BTiIsCiAgICAgIkUiLApAQCAtOTI1LDcgKzk5MSw4IEBACiBmb3JtYXRfZmxvYXRfc2hvcnQoZG91YmxlIGQsIGNoYXIgZm9ybWF0X2NvZGUsCiAgICAgICAgICAgICAgICAgICAgaW50IG1vZGUsIGludCBwcmVjaXNpb24sCiAgICAgICAgICAgICAgICAgICAgaW50IGFsd2F5c19hZGRfc2lnbiwgaW50IGFkZF9kb3RfMF9pZl9pbnRlZ2VyLAotICAgICAgICAgICAgICAgICAgIGludCB1c2VfYWx0X2Zvcm1hdHRpbmcsIGNoYXIgKipmbG9hdF9zdHJpbmdzLCBpbnQgKnR5cGUpCisgICAgICAgICAgICAgICAgICAgaW50IHVzZV9hbHRfZm9ybWF0dGluZywgY29uc3QgY2hhciAqIGNvbnN0ICpmbG9hdF9zdHJpbmdzLAorICAgICAgICAgICAgICAgICAgIGludCAqdHlwZSkKIHsKICAgICBjaGFyICpidWYgPSBOVUxMOwogICAgIGNoYXIgKnAgPSBOVUxMOwpAQCAtMTE3Niw3ICsxMjQzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnR5cGUpCiB7Ci0gICAgY2hhciAqKmZsb2F0X3N0cmluZ3MgPSBsY19mbG9hdF9zdHJpbmdzOworICAgIGNvbnN0IGNoYXIgKiBjb25zdCAqZmxvYXRfc3RyaW5ncyA9IGxjX2Zsb2F0X3N0cmluZ3M7CiAgICAgaW50IG1vZGU7CiAKICAgICAvKiBWYWxpZGF0ZSBmb3JtYXRfY29kZSwgYW5kIG1hcCB1cHBlciBhbmQgbG93ZXIgY2FzZS4gQ29tcHV0ZSB0aGUKZGlmZiAtLWdpdCBhL1B5dGhvbi9weXRob25ydW4uYyBiL1B5dGhvbi9weXRob25ydW4uYwppbmRleCA5MGNiMmRlLi44YmVmYTU0IDEwMDY0NAotLS0gYS9QeXRob24vcHl0aG9ucnVuLmMKKysrIGIvUHl0aG9uL3B5dGhvbnJ1bi5jCkBAIC0xNzEsNyArMTcxLDcgQEAKICAgICAgICAgaWYgKHYgJiYgdiAhPSBQeV9Ob25lKSB7CiAgICAgICAgICAgICBvZW5jID0gX1B5T2JqZWN0X0dldEF0dHJJZCh2LCAmUHlJZF9lbmNvZGluZyk7CiAgICAgICAgICAgICBpZiAob2VuYykKLSAgICAgICAgICAgICAgICBlbmMgPSBfUHlVbmljb2RlX0FzU3RyaW5nKG9lbmMpOworICAgICAgICAgICAgICAgIGVuYyA9IFB5VW5pY29kZV9Bc1VURjgob2VuYyk7CiAgICAgICAgICAgICBpZiAoIWVuYykKICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICB9CkBAIC0xODIsNyArMTgyLDcgQEAKICAgICAgICAgaWYgKHYgPT0gTlVMTCkKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayh2KSkgewotICAgICAgICAgICAgcHMxID0gX1B5VW5pY29kZV9Bc1N0cmluZyh2KTsKKyAgICAgICAgICAgIHBzMSA9IFB5VW5pY29kZV9Bc1VURjgodik7CiAgICAgICAgICAgICBpZiAocHMxID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAgICAgICAgIHBzMSA9ICIiOwpAQCAtMTk1LDcgKzE5NSw3IEBACiAgICAgICAgIGlmICh3ID09IE5VTEwpCiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2sodykpIHsKLSAgICAgICAgICAgIHBzMiA9IF9QeVVuaWNvZGVfQXNTdHJpbmcodyk7CisgICAgICAgICAgICBwczIgPSBQeVVuaWNvZGVfQXNVVEY4KHcpOwogICAgICAgICAgICAgaWYgKHBzMiA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgICAgICAgICBwczIgPSAiIjsKQEAgLTQzMSw3ICs0MzEsNyBAQAogcGFyc2Vfc3ludGF4X2Vycm9yKFB5T2JqZWN0ICplcnIsIFB5T2JqZWN0ICoqbWVzc2FnZSwgUHlPYmplY3QgKipmaWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICBpbnQgKmxpbmVubywgaW50ICpvZmZzZXQsIFB5T2JqZWN0ICoqdGV4dCkKIHsKLSAgICBsb25nIGhvbGQ7CisgICAgaW50IGhvbGQ7CiAgICAgUHlPYmplY3QgKnY7CiAgICAgX1B5X0lERU5USUZJRVIobXNnKTsKICAgICBfUHlfSURFTlRJRklFUihmaWxlbmFtZSk7CkBAIC00NjQsMTEgKzQ2NCwxMSBAQAogICAgIHYgPSBfUHlPYmplY3RfR2V0QXR0cklkKGVyciwgJlB5SWRfbGluZW5vKTsKICAgICBpZiAoIXYpCiAgICAgICAgIGdvdG8gZmluYWxseTsKLSAgICBob2xkID0gUHlMb25nX0FzTG9uZyh2KTsKKyAgICBob2xkID0gX1B5TG9uZ19Bc0ludCh2KTsKICAgICBQeV9ERUNSRUYodik7CiAgICAgaWYgKGhvbGQgPCAwICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIGdvdG8gZmluYWxseTsKLSAgICAqbGluZW5vID0gKGludClob2xkOworICAgICpsaW5lbm8gPSBob2xkOwogCiAgICAgdiA9IF9QeU9iamVjdF9HZXRBdHRySWQoZXJyLCAmUHlJZF9vZmZzZXQpOwogICAgIGlmICghdikKQEAgLTQ3NywxMSArNDc3LDExIEBACiAgICAgICAgICpvZmZzZXQgPSAtMTsKICAgICAgICAgUHlfREVDUkVGKHYpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGhvbGQgPSBQeUxvbmdfQXNMb25nKHYpOworICAgICAgICBob2xkID0gX1B5TG9uZ19Bc0ludCh2KTsKICAgICAgICAgUHlfREVDUkVGKHYpOwogICAgICAgICBpZiAoaG9sZCA8IDAgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIGdvdG8gZmluYWxseTsKLSAgICAgICAgKm9mZnNldCA9IChpbnQpaG9sZDsKKyAgICAgICAgKm9mZnNldCA9IGhvbGQ7CiAgICAgfQogCiAgICAgdiA9IF9QeU9iamVjdF9HZXRBdHRySWQoZXJyLCAmUHlJZF90ZXh0KTsKQEAgLTUxNCw3ICs1MTQsNyBAQAogICAgIGNoYXIgKnRleHQ7CiAgICAgY2hhciAqbmw7CiAKLSAgICB0ZXh0ID0gX1B5VW5pY29kZV9Bc1N0cmluZyh0ZXh0X29iaik7CisgICAgdGV4dCA9IFB5VW5pY29kZV9Bc1VURjgodGV4dF9vYmopOwogICAgIGlmICh0ZXh0ID09IE5VTEwpCiAgICAgICAgIHJldHVybjsKIApAQCAtNjMwLDggKzYzMCwxMyBAQAogICAgIH0KICAgICBob29rID0gX1B5U3lzX0dldE9iamVjdElkKCZQeUlkX2V4Y2VwdGhvb2spOwogICAgIGlmIChob29rKSB7Ci0gICAgICAgIFB5T2JqZWN0ICphcmdzID0gUHlUdXBsZV9QYWNrKDMsIGV4Y2VwdGlvbiwgdiwgdGIpOwotICAgICAgICBQeU9iamVjdCAqcmVzdWx0ID0gUHlFdmFsX0NhbGxPYmplY3QoaG9vaywgYXJncyk7CisgICAgICAgIFB5T2JqZWN0KiBzdGFja1szXTsKKyAgICAgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgICAgICBzdGFja1swXSA9IGV4Y2VwdGlvbjsKKyAgICAgICAgc3RhY2tbMV0gPSB2OworICAgICAgICBzdGFja1syXSA9IHRiOworICAgICAgICByZXN1bHQgPSBfUHlPYmplY3RfRmFzdENhbGwoaG9vaywgc3RhY2ssIDMpOwogICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICpleGNlcHRpb24yLCAqdjIsICp0YjI7CiAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19TeXN0ZW1FeGl0KSkgewpAQCAtNjYwLDcgKzY2NSw2IEBACiAgICAgICAgICAgICBQeV9YREVDUkVGKHRiMik7CiAgICAgICAgIH0KICAgICAgICAgUHlfWERFQ1JFRihyZXN1bHQpOwotICAgICAgICBQeV9YREVDUkVGKGFyZ3MpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCJzeXMuZXhjZXB0aG9vayBpcyBtaXNzaW5nXG4iKTsKICAgICAgICAgUHlFcnJfRGlzcGxheShleGNlcHRpb24sIHYsIHRiKTsKQEAgLTc5MSwxMSArNzk1LDExIEBACiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyICpjYXVzZV9tZXNzYWdlID0KK3N0YXRpYyBjb25zdCBjaGFyIGNhdXNlX21lc3NhZ2VbXSA9CiAgICAgIlxuVGhlIGFib3ZlIGV4Y2VwdGlvbiB3YXMgdGhlIGRpcmVjdCBjYXVzZSAiCiAgICAgIm9mIHRoZSBmb2xsb3dpbmcgZXhjZXB0aW9uOlxuXG4iOwogCi1zdGF0aWMgY29uc3QgY2hhciAqY29udGV4dF9tZXNzYWdlID0KK3N0YXRpYyBjb25zdCBjaGFyIGNvbnRleHRfbWVzc2FnZVtdID0KICAgICAiXG5EdXJpbmcgaGFuZGxpbmcgb2YgdGhlIGFib3ZlIGV4Y2VwdGlvbiwgIgogICAgICJhbm90aGVyIGV4Y2VwdGlvbiBvY2N1cnJlZDpcblxuIjsKIApAQCAtOTQ2LDcgKzk1MCw3IEBACiAKICAgICBmID0gX1B5U3lzX0dldE9iamVjdElkKCZQeUlkX3N0ZGVycik7CiAgICAgaWYgKGYgIT0gTlVMTCkgewotICAgICAgICByID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmLCAmUHlJZF9mbHVzaCwgIiIpOworICAgICAgICByID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmLCAmUHlJZF9mbHVzaCwgTlVMTCk7CiAgICAgICAgIGlmIChyKQogICAgICAgICAgICAgUHlfREVDUkVGKHIpOwogICAgICAgICBlbHNlCkBAIC05NTQsNyArOTU4LDcgQEAKICAgICB9CiAgICAgZiA9IF9QeVN5c19HZXRPYmplY3RJZCgmUHlJZF9zdGRvdXQpOwogICAgIGlmIChmICE9IE5VTEwpIHsKLSAgICAgICAgciA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZiwgJlB5SWRfZmx1c2gsICIiKTsKKyAgICAgICAgciA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZiwgJlB5SWRfZmx1c2gsIE5VTEwpOwogICAgICAgICBpZiAocikKICAgICAgICAgICAgIFB5X0RFQ1JFRihyKTsKICAgICAgICAgZWxzZQpAQCAtMTE0NCw4ICsxMTQ4LDggQEAKIAogbW9kX3R5CiBQeVBhcnNlcl9BU1RGcm9tRmlsZU9iamVjdChGSUxFICpmcCwgUHlPYmplY3QgKmZpbGVuYW1lLCBjb25zdCBjaGFyKiBlbmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnQsIGNoYXIgKnBzMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKnBzMiwgUHlDb21waWxlckZsYWdzICpmbGFncywgaW50ICplcnJjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXJ0LCBjb25zdCBjaGFyICpwczEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwczIsIFB5Q29tcGlsZXJGbGFncyAqZmxhZ3MsIGludCAqZXJyY29kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5QXJlbmEgKmFyZW5hKQogewogICAgIG1vZF90eSBtb2Q7CkBAIC0xMTc3LDggKzExODEsOCBAQAogCiBtb2RfdHkKIFB5UGFyc2VyX0FTVEZyb21GaWxlKEZJTEUgKmZwLCBjb25zdCBjaGFyICpmaWxlbmFtZV9zdHIsIGNvbnN0IGNoYXIqIGVuYywKLSAgICAgICAgICAgICAgICAgICAgIGludCBzdGFydCwgY2hhciAqcHMxLAotICAgICAgICAgICAgICAgICAgICAgY2hhciAqcHMyLCBQeUNvbXBpbGVyRmxhZ3MgKmZsYWdzLCBpbnQgKmVycmNvZGUsCisgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnQsIGNvbnN0IGNoYXIgKnBzMSwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBzMiwgUHlDb21waWxlckZsYWdzICpmbGFncywgaW50ICplcnJjb2RlLAogICAgICAgICAgICAgICAgICAgICAgUHlBcmVuYSAqYXJlbmEpCiB7CiAgICAgbW9kX3R5IG1vZDsKZGlmZiAtLWdpdCBhL1B5dGhvbi9weXRpbWUuYyBiL1B5dGhvbi9weXRpbWUuYwppbmRleCA3ZjY1ODI0Li4zMDE1YTZiIDEwMDY0NAotLS0gYS9QeXRob24vcHl0aW1lLmMKKysrIGIvUHl0aG9uL3B5dGltZS5jCkBAIC03LDYgKzcsMTEgQEAKICNpbmNsdWRlIDxtYWNoL21hY2hfdGltZS5oPiAgIC8qIG1hY2hfYWJzb2x1dGVfdGltZSgpLCBtYWNoX3RpbWViYXNlX2luZm8oKSAqLwogI2VuZGlmCiAKKyNkZWZpbmUgX1B5VGltZV9jaGVja19tdWxfb3ZlcmZsb3coYSwgYikgXAorICAgIChhc3NlcnQoYiA+IDApLCBcCisgICAgIChfUHlUaW1lX3QpKGEpIDwgX1B5VGltZV9NSU4gLyAoX1B5VGltZV90KShiKSBcCisgICAgIHx8IF9QeVRpbWVfTUFYIC8gKF9QeVRpbWVfdCkoYikgPCAoX1B5VGltZV90KShhKSkKKwogLyogVG8gbWlsbGlzZWNvbmQgKDEwXi0zKSAqLwogI2RlZmluZSBTRUNfVE9fTVMgMTAwMAogCkBAIC0zMywxMiArMzgsMTIgQEAKIHRpbWVfdAogX1B5TG9uZ19Bc1RpbWVfdChQeU9iamVjdCAqb2JqKQogewotI2lmIGRlZmluZWQoSEFWRV9MT05HX0xPTkcpICYmIFNJWkVPRl9USU1FX1QgPT0gU0laRU9GX0xPTkdfTE9ORwotICAgIFBZX0xPTkdfTE9ORyB2YWw7CisjaWYgU0laRU9GX1RJTUVfVCA9PSBTSVpFT0ZfTE9OR19MT05HCisgICAgbG9uZyBsb25nIHZhbDsKICAgICB2YWwgPSBQeUxvbmdfQXNMb25nTG9uZyhvYmopOwogI2Vsc2UKICAgICBsb25nIHZhbDsKLSAgICBhc3NlcnQoc2l6ZW9mKHRpbWVfdCkgPD0gc2l6ZW9mKGxvbmcpKTsKKyAgICBQeV9CVUlMRF9BU1NFUlQoc2l6ZW9mKHRpbWVfdCkgPD0gc2l6ZW9mKGxvbmcpKTsKICAgICB2YWwgPSBQeUxvbmdfQXNMb25nKG9iaik7CiAjZW5kaWYKICAgICBpZiAodmFsID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKQEAgLTUyLDU4ICs1Nyw5MSBAQAogUHlPYmplY3QgKgogX1B5TG9uZ19Gcm9tVGltZV90KHRpbWVfdCB0KQogewotI2lmIGRlZmluZWQoSEFWRV9MT05HX0xPTkcpICYmIFNJWkVPRl9USU1FX1QgPT0gU0laRU9GX0xPTkdfTE9ORwotICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKChQWV9MT05HX0xPTkcpdCk7CisjaWYgU0laRU9GX1RJTUVfVCA9PSBTSVpFT0ZfTE9OR19MT05HCisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKGxvbmcgbG9uZyl0KTsKICNlbHNlCi0gICAgYXNzZXJ0KHNpemVvZih0aW1lX3QpIDw9IHNpemVvZihsb25nKSk7CisgICAgUHlfQlVJTERfQVNTRVJUKHNpemVvZih0aW1lX3QpIDw9IHNpemVvZihsb25nKSk7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZyl0KTsKICNlbmRpZgogfQogCisvKiBSb3VuZCB0byBuZWFyZXN0IHdpdGggdGllcyBnb2luZyB0byBuZWFyZXN0IGV2ZW4gaW50ZWdlcgorICAgKF9QeVRpbWVfUk9VTkRfSEFMRl9FVkVOKSAqLworc3RhdGljIGRvdWJsZQorX1B5VGltZV9Sb3VuZEhhbGZFdmVuKGRvdWJsZSB4KQoreworICAgIGRvdWJsZSByb3VuZGVkID0gcm91bmQoeCk7CisgICAgaWYgKGZhYnMoeC1yb3VuZGVkKSA9PSAwLjUpCisgICAgICAgIC8qIGhhbGZ3YXkgY2FzZTogcm91bmQgdG8gZXZlbiAqLworICAgICAgICByb3VuZGVkID0gMi4wKnJvdW5kKHgvMi4wKTsKKyAgICByZXR1cm4gcm91bmRlZDsKK30KKworc3RhdGljIGRvdWJsZQorX1B5VGltZV9Sb3VuZChkb3VibGUgeCwgX1B5VGltZV9yb3VuZF90IHJvdW5kKQoreworICAgIC8qIHZvbGF0aWxlIGF2b2lkcyBvcHRpbWl6YXRpb24gY2hhbmdpbmcgaG93IG51bWJlcnMgYXJlIHJvdW5kZWQgKi8KKyAgICB2b2xhdGlsZSBkb3VibGUgZDsKKworICAgIGQgPSB4OworICAgIGlmIChyb3VuZCA9PSBfUHlUaW1lX1JPVU5EX0hBTEZfRVZFTikKKyAgICAgICAgZCA9IF9QeVRpbWVfUm91bmRIYWxmRXZlbihkKTsKKyAgICBlbHNlIGlmIChyb3VuZCA9PSBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpCisgICAgICAgIGQgPSBjZWlsKGQpOworICAgIGVsc2UKKyAgICAgICAgZCA9IGZsb29yKGQpOworICAgIHJldHVybiBkOworfQorCitzdGF0aWMgaW50CitfUHlUaW1lX0RvdWJsZVRvRGVub21pbmF0b3IoZG91YmxlIGQsIHRpbWVfdCAqc2VjLCBsb25nICpudW1lcmF0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGRlbm9taW5hdG9yLCBfUHlUaW1lX3JvdW5kX3Qgcm91bmQpCit7CisgICAgZG91YmxlIGludHBhcnQsIGVycjsKKyAgICAvKiB2b2xhdGlsZSBhdm9pZHMgb3B0aW1pemF0aW9uIGNoYW5naW5nIGhvdyBudW1iZXJzIGFyZSByb3VuZGVkICovCisgICAgdm9sYXRpbGUgZG91YmxlIGZsb2F0cGFydDsKKworICAgIGZsb2F0cGFydCA9IG1vZGYoZCwgJmludHBhcnQpOworCisgICAgZmxvYXRwYXJ0ICo9IGRlbm9taW5hdG9yOworICAgIGZsb2F0cGFydCA9IF9QeVRpbWVfUm91bmQoZmxvYXRwYXJ0LCByb3VuZCk7CisgICAgaWYgKGZsb2F0cGFydCA+PSBkZW5vbWluYXRvcikgeworICAgICAgICBmbG9hdHBhcnQgLT0gZGVub21pbmF0b3I7CisgICAgICAgIGludHBhcnQgKz0gMS4wOworICAgIH0KKyAgICBlbHNlIGlmIChmbG9hdHBhcnQgPCAwKSB7CisgICAgICAgIGZsb2F0cGFydCArPSBkZW5vbWluYXRvcjsKKyAgICAgICAgaW50cGFydCAtPSAxLjA7CisgICAgfQorICAgIGFzc2VydCgwLjAgPD0gZmxvYXRwYXJ0ICYmIGZsb2F0cGFydCA8IGRlbm9taW5hdG9yKTsKKworICAgICpzZWMgPSAodGltZV90KWludHBhcnQ7CisgICAgKm51bWVyYXRvciA9IChsb25nKWZsb2F0cGFydDsKKworICAgIGVyciA9IGludHBhcnQgLSAoZG91YmxlKSpzZWM7CisgICAgaWYgKGVyciA8PSAtMS4wIHx8IGVyciA+PSAxLjApIHsKKyAgICAgICAgZXJyb3JfdGltZV90X292ZXJmbG93KCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBpbnQKIF9QeVRpbWVfT2JqZWN0VG9EZW5vbWluYXRvcihQeU9iamVjdCAqb2JqLCB0aW1lX3QgKnNlYywgbG9uZyAqbnVtZXJhdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBkZW5vbWluYXRvciwgX1B5VGltZV9yb3VuZF90IHJvdW5kKQogewotICAgIGFzc2VydChkZW5vbWluYXRvciA8PSBMT05HX01BWCk7CisgICAgYXNzZXJ0KGRlbm9taW5hdG9yIDw9IChkb3VibGUpTE9OR19NQVgpOworCiAgICAgaWYgKFB5RmxvYXRfQ2hlY2sob2JqKSkgewotICAgICAgICBkb3VibGUgZCwgaW50cGFydCwgZXJyOwotICAgICAgICAvKiB2b2xhdGlsZSBhdm9pZHMgdW5zYWZlIG9wdGltaXphdGlvbiBvbiBmbG9hdCBlbmFibGVkIGJ5IGdjYyAtTzMgKi8KLSAgICAgICAgdm9sYXRpbGUgZG91YmxlIGZsb2F0cGFydDsKLQotICAgICAgICBkID0gUHlGbG9hdF9Bc0RvdWJsZShvYmopOwotICAgICAgICBmbG9hdHBhcnQgPSBtb2RmKGQsICZpbnRwYXJ0KTsKLSAgICAgICAgaWYgKGZsb2F0cGFydCA8IDApIHsKLSAgICAgICAgICAgIGZsb2F0cGFydCA9IDEuMCArIGZsb2F0cGFydDsKLSAgICAgICAgICAgIGludHBhcnQgLT0gMS4wOwotICAgICAgICB9Ci0KLSAgICAgICAgZmxvYXRwYXJ0ICo9IGRlbm9taW5hdG9yOwotICAgICAgICBpZiAocm91bmQgPT0gX1B5VGltZV9ST1VORF9DRUlMSU5HKSB7Ci0gICAgICAgICAgICBmbG9hdHBhcnQgPSBjZWlsKGZsb2F0cGFydCk7Ci0gICAgICAgICAgICBpZiAoZmxvYXRwYXJ0ID49IGRlbm9taW5hdG9yKSB7Ci0gICAgICAgICAgICAgICAgZmxvYXRwYXJ0ID0gMC4wOwotICAgICAgICAgICAgICAgIGludHBhcnQgKz0gMS4wOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgZmxvYXRwYXJ0ID0gZmxvb3IoZmxvYXRwYXJ0KTsKLSAgICAgICAgfQotCi0gICAgICAgICpzZWMgPSAodGltZV90KWludHBhcnQ7Ci0gICAgICAgIGVyciA9IGludHBhcnQgLSAoZG91YmxlKSpzZWM7Ci0gICAgICAgIGlmIChlcnIgPD0gLTEuMCB8fCBlcnIgPj0gMS4wKSB7Ci0gICAgICAgICAgICBlcnJvcl90aW1lX3Rfb3ZlcmZsb3coKTsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotCi0gICAgICAgICpudW1lcmF0b3IgPSAobG9uZylmbG9hdHBhcnQ7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICBkb3VibGUgZCA9IFB5RmxvYXRfQXNEb3VibGUob2JqKTsKKyAgICAgICAgcmV0dXJuIF9QeVRpbWVfRG91YmxlVG9EZW5vbWluYXRvcihkLCBzZWMsIG51bWVyYXRvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZW5vbWluYXRvciwgcm91bmQpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgKnNlYyA9IF9QeUxvbmdfQXNUaW1lX3Qob2JqKTsKKyAgICAgICAgKm51bWVyYXRvciA9IDA7CiAgICAgICAgIGlmICgqc2VjID09ICh0aW1lX3QpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgKm51bWVyYXRvciA9IDA7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIH0KQEAgLTExMiwxMyArMTUwLDEyIEBACiBfUHlUaW1lX09iamVjdFRvVGltZV90KFB5T2JqZWN0ICpvYmosIHRpbWVfdCAqc2VjLCBfUHlUaW1lX3JvdW5kX3Qgcm91bmQpCiB7CiAgICAgaWYgKFB5RmxvYXRfQ2hlY2sob2JqKSkgewotICAgICAgICBkb3VibGUgZCwgaW50cGFydCwgZXJyOworICAgICAgICBkb3VibGUgaW50cGFydCwgZXJyOworICAgICAgICAvKiB2b2xhdGlsZSBhdm9pZHMgb3B0aW1pemF0aW9uIGNoYW5naW5nIGhvdyBudW1iZXJzIGFyZSByb3VuZGVkICovCisgICAgICAgIHZvbGF0aWxlIGRvdWJsZSBkOwogCiAgICAgICAgIGQgPSBQeUZsb2F0X0FzRG91YmxlKG9iaik7Ci0gICAgICAgIGlmIChyb3VuZCA9PSBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpCi0gICAgICAgICAgICBkID0gY2VpbChkKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZCA9IGZsb29yKGQpOworICAgICAgICBkID0gX1B5VGltZV9Sb3VuZChkLCByb3VuZCk7CiAgICAgICAgICh2b2lkKW1vZGYoZCwgJmludHBhcnQpOwogCiAgICAgICAgICpzZWMgPSAodGltZV90KWludHBhcnQ7CkBAIC0xNDEsMTQgKzE3OCwyMCBAQAogX1B5VGltZV9PYmplY3RUb1RpbWVzcGVjKFB5T2JqZWN0ICpvYmosIHRpbWVfdCAqc2VjLCBsb25nICpuc2VjLAogICAgICAgICAgICAgICAgICAgICAgICAgIF9QeVRpbWVfcm91bmRfdCByb3VuZCkKIHsKLSAgICByZXR1cm4gX1B5VGltZV9PYmplY3RUb0Rlbm9taW5hdG9yKG9iaiwgc2VjLCBuc2VjLCAxZTksIHJvdW5kKTsKKyAgICBpbnQgcmVzOworICAgIHJlcyA9IF9QeVRpbWVfT2JqZWN0VG9EZW5vbWluYXRvcihvYmosIHNlYywgbnNlYywgMWU5LCByb3VuZCk7CisgICAgYXNzZXJ0KDAgPD0gKm5zZWMgJiYgKm5zZWMgPCBTRUNfVE9fTlMpOworICAgIHJldHVybiByZXM7CiB9CiAKIGludAogX1B5VGltZV9PYmplY3RUb1RpbWV2YWwoUHlPYmplY3QgKm9iaiwgdGltZV90ICpzZWMsIGxvbmcgKnVzZWMsCiAgICAgICAgICAgICAgICAgICAgICAgICBfUHlUaW1lX3JvdW5kX3Qgcm91bmQpCiB7Ci0gICAgcmV0dXJuIF9QeVRpbWVfT2JqZWN0VG9EZW5vbWluYXRvcihvYmosIHNlYywgdXNlYywgMWU2LCByb3VuZCk7CisgICAgaW50IHJlczsKKyAgICByZXMgPSBfUHlUaW1lX09iamVjdFRvRGVub21pbmF0b3Iob2JqLCBzZWMsIHVzZWMsIDFlNiwgcm91bmQpOworICAgIGFzc2VydCgwIDw9ICp1c2VjICYmICp1c2VjIDwgU0VDX1RPX1VTKTsKKyAgICByZXR1cm4gcmVzOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMTYyLDIxICsyMDUsMjQgQEAKIF9QeVRpbWVfRnJvbVNlY29uZHMoaW50IHNlY29uZHMpCiB7CiAgICAgX1B5VGltZV90IHQ7CisgICAgdCA9IChfUHlUaW1lX3Qpc2Vjb25kczsKICAgICAvKiBlbnN1cmUgdGhhdCBpbnRlZ2VyIG92ZXJmbG93IGNhbm5vdCBoYXBwZW4sIGludCB0eXBlIHNob3VsZCBoYXZlIDMyCiAgICAgICAgYml0cywgd2hlcmVhcyBfUHlUaW1lX3QgdHlwZSBoYXMgYXQgbGVhc3QgNjQgYml0cyAoU0VDX1RPX01TIHRha2VzIDMwCiAgICAgICAgYml0cykuICovCi0gICAgYXNzZXJ0KChzZWNvbmRzID49IDAgJiYgc2Vjb25kcyA8PSBfUHlUaW1lX01BWCAvIFNFQ19UT19OUykKLSAgICAgICAgICAgfHwgKHNlY29uZHMgPCAwICYmIHNlY29uZHMgPj0gX1B5VGltZV9NSU4gLyBTRUNfVE9fTlMpKTsKLSAgICB0ID0gKF9QeVRpbWVfdClzZWNvbmRzICogU0VDX1RPX05TOworICAgIFB5X0JVSUxEX0FTU0VSVChJTlRfTUFYIDw9IF9QeVRpbWVfTUFYIC8gU0VDX1RPX05TKTsKKyAgICBQeV9CVUlMRF9BU1NFUlQoSU5UX01JTiA+PSBfUHlUaW1lX01JTiAvIFNFQ19UT19OUyk7CisgICAgYXNzZXJ0KCh0ID49IDAgJiYgdCA8PSBfUHlUaW1lX01BWCAvIFNFQ19UT19OUykKKyAgICAgICAgICAgfHwgKHQgPCAwICYmIHQgPj0gX1B5VGltZV9NSU4gLyBTRUNfVE9fTlMpKTsKKyAgICB0ICo9IFNFQ19UT19OUzsKICAgICByZXR1cm4gdDsKIH0KIAogX1B5VGltZV90Ci1fUHlUaW1lX0Zyb21OYW5vc2Vjb25kcyhQWV9MT05HX0xPTkcgbnMpCitfUHlUaW1lX0Zyb21OYW5vc2Vjb25kcyhsb25nIGxvbmcgbnMpCiB7CiAgICAgX1B5VGltZV90IHQ7Ci0gICAgYXNzZXJ0KHNpemVvZihQWV9MT05HX0xPTkcpIDw9IHNpemVvZihfUHlUaW1lX3QpKTsKLSAgICB0ID0gUHlfU0FGRV9ET1dOQ0FTVChucywgUFlfTE9OR19MT05HLCBfUHlUaW1lX3QpOworICAgIFB5X0JVSUxEX0FTU0VSVChzaXplb2YobG9uZyBsb25nKSA8PSBzaXplb2YoX1B5VGltZV90KSk7CisgICAgdCA9IFB5X1NBRkVfRE9XTkNBU1QobnMsIGxvbmcgbG9uZywgX1B5VGltZV90KTsKICAgICByZXR1cm4gdDsKIH0KIApAQCAtMTg3LDEyICsyMzMsMTUgQEAKICAgICBfUHlUaW1lX3QgdDsKICAgICBpbnQgcmVzID0gMDsKIAotICAgIHQgPSAoX1B5VGltZV90KXRzLT50dl9zZWMgKiBTRUNfVE9fTlM7Ci0gICAgaWYgKHQgLyBTRUNfVE9fTlMgIT0gdHMtPnR2X3NlYykgeworICAgIFB5X0JVSUxEX0FTU0VSVChzaXplb2YodHMtPnR2X3NlYykgPD0gc2l6ZW9mKF9QeVRpbWVfdCkpOworICAgIHQgPSAoX1B5VGltZV90KXRzLT50dl9zZWM7CisKKyAgICBpZiAoX1B5VGltZV9jaGVja19tdWxfb3ZlcmZsb3codCwgU0VDX1RPX05TKSkgewogICAgICAgICBpZiAocmFpc2UpCiAgICAgICAgICAgICBfUHlUaW1lX292ZXJmbG93KCk7CiAgICAgICAgIHJlcyA9IC0xOwogICAgIH0KKyAgICB0ID0gdCAqIFNFQ19UT19OUzsKIAogICAgIHQgKz0gdHMtPnR2X25zZWM7CiAKQEAgLTIwNiwxMiArMjU1LDE1IEBACiAgICAgX1B5VGltZV90IHQ7CiAgICAgaW50IHJlcyA9IDA7CiAKLSAgICB0ID0gKF9QeVRpbWVfdCl0di0+dHZfc2VjICogU0VDX1RPX05TOwotICAgIGlmICh0IC8gU0VDX1RPX05TICE9IHR2LT50dl9zZWMpIHsKKyAgICBQeV9CVUlMRF9BU1NFUlQoc2l6ZW9mKHR2LT50dl9zZWMpIDw9IHNpemVvZihfUHlUaW1lX3QpKTsKKyAgICB0ID0gKF9QeVRpbWVfdCl0di0+dHZfc2VjOworCisgICAgaWYgKF9QeVRpbWVfY2hlY2tfbXVsX292ZXJmbG93KHQsIFNFQ19UT19OUykpIHsKICAgICAgICAgaWYgKHJhaXNlKQogICAgICAgICAgICAgX1B5VGltZV9vdmVyZmxvdygpOwogICAgICAgICByZXMgPSAtMTsKICAgICB9CisgICAgdCA9IHQgKiBTRUNfVE9fTlM7CiAKICAgICB0ICs9IChfUHlUaW1lX3QpdHYtPnR2X3VzZWMgKiBVU19UT19OUzsKIApAQCAtMjIxLDUwICsyNzMsNTIgQEAKICNlbmRpZgogCiBzdGF0aWMgaW50CitfUHlUaW1lX0Zyb21GbG9hdE9iamVjdChfUHlUaW1lX3QgKnQsIGRvdWJsZSB2YWx1ZSwgX1B5VGltZV9yb3VuZF90IHJvdW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyB1bml0X3RvX25zKQoreworICAgIGRvdWJsZSBlcnI7CisgICAgLyogdm9sYXRpbGUgYXZvaWRzIG9wdGltaXphdGlvbiBjaGFuZ2luZyBob3cgbnVtYmVycyBhcmUgcm91bmRlZCAqLworICAgIHZvbGF0aWxlIGRvdWJsZSBkOworCisgICAgLyogY29udmVydCB0byBhIG51bWJlciBvZiBuYW5vc2Vjb25kcyAqLworICAgIGQgPSB2YWx1ZTsKKyAgICBkICo9IChkb3VibGUpdW5pdF90b19uczsKKyAgICBkID0gX1B5VGltZV9Sb3VuZChkLCByb3VuZCk7CisKKyAgICAqdCA9IChfUHlUaW1lX3QpZDsKKyAgICBlcnIgPSBkIC0gKGRvdWJsZSkqdDsKKyAgICBpZiAoZmFicyhlcnIpID49IDEuMCkgeworICAgICAgICBfUHlUaW1lX292ZXJmbG93KCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKIF9QeVRpbWVfRnJvbU9iamVjdChfUHlUaW1lX3QgKnQsIFB5T2JqZWN0ICpvYmosIF9QeVRpbWVfcm91bmRfdCByb3VuZCwKLSAgICAgICAgICAgICAgICAgICBsb25nIHRvX25hbm9zZWNvbmRzKQorICAgICAgICAgICAgICAgICAgIGxvbmcgdW5pdF90b19ucykKIHsKICAgICBpZiAoUHlGbG9hdF9DaGVjayhvYmopKSB7Ci0gICAgICAgIC8qIHZvbGF0aWxlIGF2b2lkcyB1bnNhZmUgb3B0aW1pemF0aW9uIG9uIGZsb2F0IGVuYWJsZWQgYnkgZ2NjIC1PMyAqLwotICAgICAgICB2b2xhdGlsZSBkb3VibGUgZCwgZXJyOwotCi0gICAgICAgIC8qIGNvbnZlcnQgdG8gYSBudW1iZXIgb2YgbmFub3NlY29uZHMgKi8KKyAgICAgICAgZG91YmxlIGQ7CiAgICAgICAgIGQgPSBQeUZsb2F0X0FzRG91YmxlKG9iaik7Ci0gICAgICAgIGQgKj0gdG9fbmFub3NlY29uZHM7Ci0KLSAgICAgICAgaWYgKHJvdW5kID09IF9QeVRpbWVfUk9VTkRfQ0VJTElORykKLSAgICAgICAgICAgIGQgPSBjZWlsKGQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBkID0gZmxvb3IoZCk7Ci0KLSAgICAgICAgKnQgPSAoX1B5VGltZV90KWQ7Ci0gICAgICAgIGVyciA9IGQgLSAoZG91YmxlKSp0OwotICAgICAgICBpZiAoZmFicyhlcnIpID49IDEuMCkgewotICAgICAgICAgICAgX1B5VGltZV9vdmVyZmxvdygpOwotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gX1B5VGltZV9Gcm9tRmxvYXRPYmplY3QodCwgZCwgcm91bmQsIHVuaXRfdG9fbnMpOwogICAgIH0KICAgICBlbHNlIHsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgICAgICBQWV9MT05HX0xPTkcgc2VjOworICAgICAgICBsb25nIGxvbmcgc2VjOworICAgICAgICBQeV9CVUlMRF9BU1NFUlQoc2l6ZW9mKGxvbmcgbG9uZykgPD0gc2l6ZW9mKF9QeVRpbWVfdCkpOworCiAgICAgICAgIHNlYyA9IFB5TG9uZ19Bc0xvbmdMb25nKG9iaik7Ci0gICAgICAgIGFzc2VydChzaXplb2YoUFlfTE9OR19MT05HKSA8PSBzaXplb2YoX1B5VGltZV90KSk7Ci0jZWxzZQotICAgICAgICBsb25nIHNlYzsKLSAgICAgICAgc2VjID0gUHlMb25nX0FzTG9uZyhvYmopOwotICAgICAgICBhc3NlcnQoc2l6ZW9mKFBZX0xPTkdfTE9ORykgPD0gc2l6ZW9mKF9QeVRpbWVfdCkpOwotI2VuZGlmCiAgICAgICAgIGlmIChzZWMgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfT3ZlcmZsb3dFcnJvcikpCiAgICAgICAgICAgICAgICAgX1B5VGltZV9vdmVyZmxvdygpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9Ci0gICAgICAgICp0ID0gc2VjICogdG9fbmFub3NlY29uZHM7Ci0gICAgICAgIGlmICgqdCAvIHRvX25hbm9zZWNvbmRzICE9IHNlYykgeworCisgICAgICAgIGlmIChfUHlUaW1lX2NoZWNrX211bF9vdmVyZmxvdyhzZWMsIHVuaXRfdG9fbnMpKSB7CiAgICAgICAgICAgICBfUHlUaW1lX292ZXJmbG93KCk7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KKyAgICAgICAgKnQgPSBzZWMgKiB1bml0X3RvX25zOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiB9CkBAIC0yODQsMjQgKzMzOCwyOCBAQAogZG91YmxlCiBfUHlUaW1lX0FzU2Vjb25kc0RvdWJsZShfUHlUaW1lX3QgdCkKIHsKLSAgICBfUHlUaW1lX3Qgc2VjLCBuczsKLSAgICAvKiBEaXZpZGUgdXNpbmcgaW50ZWdlcnMgdG8gYXZvaWQgcm91bmRpbmcgaXNzdWVzIG9uIHRoZSBpbnRlZ2VyIHBhcnQuCi0gICAgICAgMWUtOSBjYW5ub3QgYmUgc3RvcmVkIGV4YWN0bHkgaW4gSUVFRSA2NC1iaXQuICovCi0gICAgc2VjID0gdCAvIFNFQ19UT19OUzsKLSAgICBucyA9IHQgJSBTRUNfVE9fTlM7Ci0gICAgcmV0dXJuIChkb3VibGUpc2VjICsgKGRvdWJsZSlucyAqIDFlLTk7CisgICAgLyogdm9sYXRpbGUgYXZvaWRzIG9wdGltaXphdGlvbiBjaGFuZ2luZyBob3cgbnVtYmVycyBhcmUgcm91bmRlZCAqLworICAgIHZvbGF0aWxlIGRvdWJsZSBkOworCisgICAgaWYgKHQgJSBTRUNfVE9fTlMgPT0gMCkgeworICAgICAgICBfUHlUaW1lX3Qgc2VjczsKKyAgICAgICAgLyogRGl2aWRlIHVzaW5nIGludGVnZXJzIHRvIGF2b2lkIHJvdW5kaW5nIGlzc3VlcyBvbiB0aGUgaW50ZWdlciBwYXJ0LgorICAgICAgICAgICAxZS05IGNhbm5vdCBiZSBzdG9yZWQgZXhhY3RseSBpbiBJRUVFIDY0LWJpdC4gKi8KKyAgICAgICAgc2VjcyA9IHQgLyBTRUNfVE9fTlM7CisgICAgICAgIGQgPSAoZG91YmxlKXNlY3M7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBkID0gKGRvdWJsZSl0OworICAgICAgICBkIC89IDFlOTsKKyAgICB9CisgICAgcmV0dXJuIGQ7CiB9CiAKIFB5T2JqZWN0ICoKIF9QeVRpbWVfQXNOYW5vc2Vjb25kc09iamVjdChfUHlUaW1lX3QgdCkKIHsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgIGFzc2VydChzaXplb2YoUFlfTE9OR19MT05HKSA+PSBzaXplb2YoX1B5VGltZV90KSk7Ci0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKFBZX0xPTkdfTE9ORyl0KTsKLSNlbHNlCi0gICAgYXNzZXJ0KHNpemVvZihsb25nKSA+PSBzaXplb2YoX1B5VGltZV90KSk7Ci0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZyl0KTsKLSNlbmRpZgorICAgIFB5X0JVSUxEX0FTU0VSVChzaXplb2YobG9uZyBsb25nKSA+PSBzaXplb2YoX1B5VGltZV90KSk7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKGxvbmcgbG9uZyl0KTsKIH0KIAogc3RhdGljIF9QeVRpbWVfdApAQCAtMzA5LDcgKzM2NywyMCBAQAogICAgICAgICAgICAgICAgY29uc3QgX1B5VGltZV9yb3VuZF90IHJvdW5kKQogewogICAgIGFzc2VydChrID4gMSk7Ci0gICAgaWYgKHJvdW5kID09IF9QeVRpbWVfUk9VTkRfQ0VJTElORykgeworICAgIGlmIChyb3VuZCA9PSBfUHlUaW1lX1JPVU5EX0hBTEZfRVZFTikgeworICAgICAgICBfUHlUaW1lX3QgeCwgciwgYWJzX3I7CisgICAgICAgIHggPSB0IC8gazsKKyAgICAgICAgciA9IHQgJSBrOworICAgICAgICBhYnNfciA9IFB5X0FCUyhyKTsKKyAgICAgICAgaWYgKGFic19yID4gayAvIDIgfHwgKGFic19yID09IGsgLyAyICYmIChQeV9BQlMoeCkgJiAxKSkpIHsKKyAgICAgICAgICAgIGlmICh0ID49IDApCisgICAgICAgICAgICAgICAgeCsrOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHgtLTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4geDsKKyAgICB9CisgICAgZWxzZSBpZiAocm91bmQgPT0gX1B5VGltZV9ST1VORF9DRUlMSU5HKSB7CiAgICAgICAgIGlmICh0ID49IDApCiAgICAgICAgICAgICByZXR1cm4gKHQgKyBrIC0gMSkgLyBrOwogICAgICAgICBlbHNlCkBAIC0zNzMsNyArNDQ0LDcgQEAKIF9QeVRpbWVfQXNUaW1ldmFsU3RydWN0X2ltcGwoX1B5VGltZV90IHQsIHN0cnVjdCB0aW1ldmFsICp0diwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5VGltZV9yb3VuZF90IHJvdW5kLCBpbnQgcmFpc2UpCiB7Ci0gICAgX1B5VGltZV90IHNlY3M7CisgICAgX1B5VGltZV90IHNlY3MsIHNlY3MyOwogICAgIGludCB1czsKICAgICBpbnQgcmVzOwogCkBAIC0zODYsNyArNDU3LDggQEAKICNlbmRpZgogICAgIHR2LT50dl91c2VjID0gdXM7CiAKLSAgICBpZiAocmVzIDwgMCB8fCAoX1B5VGltZV90KXR2LT50dl9zZWMgIT0gc2VjcykgeworICAgIHNlY3MyID0gKF9QeVRpbWVfdCl0di0+dHZfc2VjOworICAgIGlmIChyZXMgPCAwIHx8IHNlY3MyICE9IHNlY3MpIHsKICAgICAgICAgaWYgKHJhaXNlKQogICAgICAgICAgICAgZXJyb3JfdGltZV90X292ZXJmbG93KCk7CiAgICAgICAgIHJldHVybiAtMTsKQEAgLTQyNCw2ICs0OTYsNyBAQAogICAgIHJldHVybiAwOwogfQogCisKICNpZiBkZWZpbmVkKEhBVkVfQ0xPQ0tfR0VUVElNRSkgfHwgZGVmaW5lZChIQVZFX0tRVUVVRSkKIGludAogX1B5VGltZV9Bc1RpbWVzcGVjKF9QeVRpbWVfdCB0LCBzdHJ1Y3QgdGltZXNwZWMgKnRzKQpAQCAtNDM3LDEzICs1MTAsMTMgQEAKICAgICAgICAgc2VjcyAtPSAxOwogICAgIH0KICAgICB0cy0+dHZfc2VjID0gKHRpbWVfdClzZWNzOwotICAgIGlmICgoX1B5VGltZV90KXRzLT50dl9zZWMgIT0gc2VjcykgewotICAgICAgICBfUHlUaW1lX292ZXJmbG93KCk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9CisgICAgYXNzZXJ0KDAgPD0gbnNlYyAmJiBuc2VjIDwgU0VDX1RPX05TKTsKICAgICB0cy0+dHZfbnNlYyA9IG5zZWM7CiAKLSAgICBhc3NlcnQoMCA8PSB0cy0+dHZfbnNlYyAmJiB0cy0+dHZfbnNlYyA8PSA5OTk5OTk5OTkpOworICAgIGlmICgoX1B5VGltZV90KXRzLT50dl9zZWMgIT0gc2VjcykgeworICAgICAgICBlcnJvcl90aW1lX3Rfb3ZlcmZsb3coKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KICAgICByZXR1cm4gMDsKIH0KICNlbmRpZgpAQCAtNTU3LDE5ICs2MzAsMjAgQEAKICAgICByZXR1cm4gcHlnZXR0aW1lb2ZkYXkodCwgaW5mbywgMSk7CiB9CiAKLQogc3RhdGljIGludAogcHltb25vdG9uaWMoX1B5VGltZV90ICp0cCwgX1B5X2Nsb2NrX2luZm9fdCAqaW5mbywgaW50IHJhaXNlKQogewogI2lmIGRlZmluZWQoTVNfV0lORE9XUykKLSAgICBVTE9OR0xPTkcgcmVzdWx0OworICAgIFVMT05HTE9ORyB0aWNrczsKKyAgICBfUHlUaW1lX3QgdDsKIAogICAgIGFzc2VydChpbmZvID09IE5VTEwgfHwgcmFpc2UpOwogCi0gICAgcmVzdWx0ID0gR2V0VGlja0NvdW50NjQoKTsKKyAgICB0aWNrcyA9IEdldFRpY2tDb3VudDY0KCk7CisgICAgUHlfQlVJTERfQVNTRVJUKHNpemVvZih0aWNrcykgPD0gc2l6ZW9mKF9QeVRpbWVfdCkpOworICAgIHQgPSAoX1B5VGltZV90KXRpY2tzOwogCi0gICAgKnRwID0gcmVzdWx0ICogTVNfVE9fTlM7Ci0gICAgaWYgKCp0cCAvIE1TX1RPX05TICE9IHJlc3VsdCkgeworICAgIGlmIChfUHlUaW1lX2NoZWNrX211bF9vdmVyZmxvdyh0LCBNU19UT19OUykpIHsKICAgICAgICAgaWYgKHJhaXNlKSB7CiAgICAgICAgICAgICBfUHlUaW1lX292ZXJmbG93KCk7CiAgICAgICAgICAgICByZXR1cm4gLTE7CkBAIC01NzcsNiArNjUxLDcgQEAKICAgICAgICAgLyogSGVsbG8sIHRpbWUgdHJhdmVsZXIhICovCiAgICAgICAgIGFzc2VydCgwKTsKICAgICB9CisgICAgKnRwID0gdCAqIE1TX1RPX05TOwogCiAgICAgaWYgKGluZm8pIHsKICAgICAgICAgRFdPUkQgdGltZUFkanVzdG1lbnQsIHRpbWVJbmNyZW1lbnQ7CkBAIC02ODksOCArNzY0LDU3IEBACiAgICAgaWYgKF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2tXaXRoSW5mbygmdCwgTlVMTCkgPCAwKQogICAgICAgICByZXR1cm4gLTE7CiAKLSAgICAvKiBjaGVjayB0aGF0IF9QeVRpbWVfRnJvbVNlY29uZHMoKSBjYW5ub3Qgb3ZlcmZsb3cgKi8KLSAgICBhc3NlcnQoSU5UX01BWCA8PSBfUHlUaW1lX01BWCAvIFNFQ19UT19OUyk7Ci0gICAgYXNzZXJ0KElOVF9NSU4gPj0gX1B5VGltZV9NSU4gLyBTRUNfVE9fTlMpOwogICAgIHJldHVybiAwOwogfQorCitpbnQKK19QeVRpbWVfbG9jYWx0aW1lKHRpbWVfdCB0LCBzdHJ1Y3QgdG0gKnRtKQoreworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpbnQgZXJyb3I7CisKKyAgICBlcnJvciA9IGxvY2FsdGltZV9zKHRtLCAmdCk7CisgICAgaWYgKGVycm9yICE9IDApIHsKKyAgICAgICAgZXJybm8gPSBlcnJvcjsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiAwOworI2Vsc2UgLyogIU1TX1dJTkRPV1MgKi8KKyAgICBpZiAobG9jYWx0aW1lX3IoJnQsIHRtKSA9PSBOVUxMKSB7CisjaWZkZWYgRUlOVkFMCisgICAgICAgIGlmIChlcnJubyA9PSAwKQorICAgICAgICAgICAgZXJybm8gPSBFSU5WQUw7CisjZW5kaWYKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiAwOworI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KK30KKworaW50CitfUHlUaW1lX2dtdGltZSh0aW1lX3QgdCwgc3RydWN0IHRtICp0bSkKK3sKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaW50IGVycm9yOworCisgICAgZXJyb3IgPSBnbXRpbWVfcyh0bSwgJnQpOworICAgIGlmIChlcnJvciAhPSAwKSB7CisgICAgICAgIGVycm5vID0gZXJyb3I7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gMDsKKyNlbHNlIC8qICFNU19XSU5ET1dTICovCisgICAgaWYgKGdtdGltZV9yKCZ0LCB0bSkgPT0gTlVMTCkgeworI2lmZGVmIEVJTlZBTAorICAgICAgICBpZiAoZXJybm8gPT0gMCkKKyAgICAgICAgICAgIGVycm5vID0gRUlOVkFMOworI2VuZGlmCisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gMDsKKyNlbmRpZiAvKiBNU19XSU5ET1dTICovCit9CmRpZmYgLS1naXQgYS9QeXRob24vcmFuZG9tLmMgYi9QeXRob24vcmFuZG9tLmMKaW5kZXggOTQ0ZWYzMS4uZjlkNjAwZiAxMDA2NDQKLS0tIGEvUHl0aG9uL3JhbmRvbS5jCisrKyBiL1B5dGhvbi9yYW5kb20uYwpAQCAtMSw2ICsxLDkgQEAKICNpbmNsdWRlICJQeXRob24uaCIKICNpZmRlZiBNU19XSU5ET1dTCiAjICBpbmNsdWRlIDx3aW5kb3dzLmg+CisvKiBBbGwgc2FtcGxlIE1TRE4gd2luY3J5cHQgcHJvZ3JhbXMgaW5jbHVkZSB0aGUgaGVhZGVyIGJlbG93LiBJdCBpcyBhdCBsZWFzdAorICogcmVxdWlyZWQgd2l0aCBNaW4gR1cuICovCisjICBpbmNsdWRlIDx3aW5jcnlwdC5oPgogI2Vsc2UKICMgIGluY2x1ZGUgPGZjbnRsLmg+CiAjICBpZmRlZiBIQVZFX1NZU19TVEFUX0gKQEAgLTM3LDEwICs0MCw5IEBACiAgICAgcmV0dXJuIDA7CiAKIGVycm9yOgotICAgIGlmIChyYWlzZSkKKyAgICBpZiAocmFpc2UpIHsKICAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7Ci0gICAgZWxzZQotICAgICAgICBQeV9GYXRhbEVycm9yKCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBXaW5kb3dzIHJhbmRvbSBBUEkgKENyeXB0b0dlbikiKTsKKyAgICB9CiAgICAgcmV0dXJuIC0xOwogfQogCkBAIC01Myw4ICs1NSw5IEBACiAKICAgICBpZiAoaENyeXB0UHJvdiA9PSAwKQogICAgIHsKLSAgICAgICAgaWYgKHdpbjMyX3VyYW5kb21faW5pdChyYWlzZSkgPT0gLTEpCisgICAgICAgIGlmICh3aW4zMl91cmFuZG9tX2luaXQocmFpc2UpID09IC0xKSB7CiAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KICAgICB9CiAKICAgICB3aGlsZSAoc2l6ZSA+IDApCkBAIC02MywxMSArNjYsOSBAQAogICAgICAgICBpZiAoIUNyeXB0R2VuUmFuZG9tKGhDcnlwdFByb3YsIChEV09SRCljaHVuaywgYnVmZmVyKSkKICAgICAgICAgewogICAgICAgICAgICAgLyogQ3J5cHRHZW5SYW5kb20oKSBmYWlsZWQgKi8KLSAgICAgICAgICAgIGlmIChyYWlzZSkKKyAgICAgICAgICAgIGlmIChyYWlzZSkgewogICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkZhaWxlZCB0byBpbml0aWFsaXplZCB0aGUgcmFuZG9taXplZCBoYXNoICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJzZWNyZXQgdXNpbmcgQ3J5cHRvR2VuKSIpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgICAgIGJ1ZmZlciArPSBjaHVuazsKQEAgLTg0LDI5ICs4NSwyOCBAQAogLyogRmlsbCBidWZmZXIgd2l0aCBzaXplIHBzZXVkby1yYW5kb20gYnl0ZXMgZ2VuZXJhdGVkIGJ5IGdldGVudHJvcHkoKS4KICAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIG9yIHJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLgogCi0gICBJZiBmYXRhbCBpcyBub256ZXJvLCBjYWxsIFB5X0ZhdGFsRXJyb3IoKSBpbnN0ZWFkIG9mIHJhaXNpbmcgYW4gZXhjZXB0aW9uCi0gICBvbiBlcnJvci4gKi8KKyAgIElmIHJhaXNlIGlzIHplcm8sIGRvbid0IHJhaXNlIGFuIGV4Y2VwdGlvbiBvbiBlcnJvci4gKi8KIHN0YXRpYyBpbnQKLXB5X2dldGVudHJvcHkodW5zaWduZWQgY2hhciAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUsIGludCBmYXRhbCkKK3B5X2dldGVudHJvcHkoY2hhciAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUsIGludCByYWlzZSkKIHsKICAgICB3aGlsZSAoc2l6ZSA+IDApIHsKICAgICAgICAgUHlfc3NpemVfdCBsZW4gPSBQeV9NSU4oc2l6ZSwgMjU2KTsKICAgICAgICAgaW50IHJlczsKIAotICAgICAgICBpZiAoIWZhdGFsKSB7CisgICAgICAgIGlmIChyYWlzZSkgewogICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgICAgICAgICAgcmVzID0gZ2V0ZW50cm9weShidWZmZXIsIGxlbik7CiAgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgICAgICAgICBpZiAocmVzIDwgMCkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICByZXMgPSBnZXRlbnRyb3B5KGJ1ZmZlciwgbGVuKTsKLSAgICAgICAgICAgIGlmIChyZXMgPCAwKQotICAgICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImdldGVudHJvcHkoKSBmYWlsZWQiKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChyZXMgPCAwKSB7CisgICAgICAgICAgICBpZiAocmFpc2UpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KIAogICAgICAgICBidWZmZXIgKz0gbGVuOwpAQCAtMTI5LDI1ICsxMjksMjIgQEAKICAgICAgZ2V0cmFuZG9tKCkgZmFpbGVkIHdpdGggRUlOVFIgYW5kIHRoZSBQeXRob24gc2lnbmFsIGhhbmRsZXIgcmFpc2VkIGFuCiAgICAgIGV4Y2VwdGlvbiwgb3IgZ2V0cmFuZG9tKCkgZmFpbGVkIHdpdGggYSBkaWZmZXJlbnQgZXJyb3IuICovCiBzdGF0aWMgaW50Ci1weV9nZXRyYW5kb20odm9pZCAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUsIGludCByYWlzZSkKK3B5X2dldHJhbmRvbSh2b2lkICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSwgaW50IGJsb2NraW5nLCBpbnQgcmFpc2UpCiB7CiAgICAgLyogSXMgZ2V0cmFuZG9tKCkgc3VwcG9ydGVkIGJ5IHRoZSBydW5uaW5nIGtlcm5lbD8gU2V0IHRvIDAgaWYgZ2V0cmFuZG9tKCkKICAgICAgICBmYWlsZWQgd2l0aCBFTk9TWVMgb3IgRVBFUk0uIE5lZWQgTGludXgga2VybmVsIDMuMTcgb3IgbmV3ZXIsIG9yIFNvbGFyaXMKICAgICAgICAxMS4zIG9yIG5ld2VyICovCiAgICAgc3RhdGljIGludCBnZXRyYW5kb21fd29ya3MgPSAxOwotCi0gICAgLyogZ2V0cmFuZG9tKCkgb24gTGludXggd2lsbCBibG9jayBpZiBjYWxsZWQgYmVmb3JlIHRoZSBrZXJuZWwgaGFzCi0gICAgICogaW5pdGlhbGl6ZWQgdGhlIHVyYW5kb20gZW50cm9weSBwb29sLiBUaGlzIHdpbGwgY2F1c2UgUHl0aG9uCi0gICAgICogdG8gaGFuZyBvbiBzdGFydHVwIGlmIGNhbGxlZCB2ZXJ5IGVhcmx5IGluIHRoZSBib290IHByb2Nlc3MgLQotICAgICAqIHNlZSBodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTI2ODM5LiBUbyBhdm9pZCB0aGlzLCB1c2UgdGhlCi0gICAgICogR1JORF9OT05CTE9DSyBmbGFnLiAqLwotICAgIGNvbnN0IGludCBmbGFncyA9IEdSTkRfTk9OQkxPQ0s7CisgICAgaW50IGZsYWdzOworICAgIGNoYXIgKmRlc3Q7CiAgICAgbG9uZyBuOwogCiAgICAgaWYgKCFnZXRyYW5kb21fd29ya3MpIHsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisgICAgZmxhZ3MgPSBibG9ja2luZyA/IDAgOiBHUk5EX05PTkJMT0NLOworICAgIGRlc3QgPSBidWZmZXI7CiAgICAgd2hpbGUgKDAgPCBzaXplKSB7CiAjaWZkZWYgc3VuCiAgICAgICAgIC8qIElzc3VlICMyNjczNTogT24gU29sYXJpcywgZ2V0cmFuZG9tKCkgaXMgbGltaXRlZCB0byByZXR1cm5pbmcgdXAKQEAgLTE2MSwyMyArMTU4LDIzIEBACiAjaWZkZWYgSEFWRV9HRVRSQU5ET00KICAgICAgICAgaWYgKHJhaXNlKSB7CiAgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgICAgICBuID0gZ2V0cmFuZG9tKGJ1ZmZlciwgbiwgZmxhZ3MpOworICAgICAgICAgICAgbiA9IGdldHJhbmRvbShkZXN0LCBuLCBmbGFncyk7CiAgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgbiA9IGdldHJhbmRvbShidWZmZXIsIG4sIGZsYWdzKTsKKyAgICAgICAgICAgIG4gPSBnZXRyYW5kb20oZGVzdCwgbiwgZmxhZ3MpOwogICAgICAgICB9CiAjZWxzZQogICAgICAgICAvKiBPbiBMaW51eCwgdXNlIHRoZSBzeXNjYWxsKCkgZnVuY3Rpb24gYmVjYXVzZSB0aGUgR05VIGxpYmMgZG9lc24ndAotICAgICAgICAgKiBleHBvc2UgdGhlIExpbnV4IGdldHJhbmRvbSgpIHN5c2NhbGwgeWV0LiBTZWU6Ci0gICAgICAgICAqIGh0dHBzOi8vc291cmNld2FyZS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTE3MjUyICovCisgICAgICAgICAgIGV4cG9zZSB0aGUgTGludXggZ2V0cmFuZG9tKCkgc3lzY2FsbCB5ZXQuIFNlZToKKyAgICAgICAgICAgaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MTcyNTIgKi8KICAgICAgICAgaWYgKHJhaXNlKSB7CiAgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgICAgICBuID0gc3lzY2FsbChTWVNfZ2V0cmFuZG9tLCBidWZmZXIsIG4sIGZsYWdzKTsKKyAgICAgICAgICAgIG4gPSBzeXNjYWxsKFNZU19nZXRyYW5kb20sIGRlc3QsIG4sIGZsYWdzKTsKICAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBuID0gc3lzY2FsbChTWVNfZ2V0cmFuZG9tLCBidWZmZXIsIG4sIGZsYWdzKTsKKyAgICAgICAgICAgIG4gPSBzeXNjYWxsKFNZU19nZXRyYW5kb20sIGRlc3QsIG4sIGZsYWdzKTsKICAgICAgICAgfQogI2VuZGlmCiAKQEAgLTE4OSw0MCArMTg2LDMzIEBACiAgICAgICAgICAgICAgICAgZ2V0cmFuZG9tX3dvcmtzID0gMDsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChlcnJubyA9PSBFQUdBSU4pIHsKLSAgICAgICAgICAgICAgICAvKiBnZXRyYW5kb20oR1JORF9OT05CTE9DSykgZmFpbHMgd2l0aCBFQUdBSU4gaWYgdGhlIHN5c3RlbQotICAgICAgICAgICAgICAgICAgIHVyYW5kb20gaXMgbm90IGluaXRpYWxpYXplZCB5ZXQuIEluIHRoaXMgY2FzZSwgZmFsbCBiYWNrIG9uCi0gICAgICAgICAgICAgICAgICAgcmVhZGluZyBmcm9tIC9kZXYvdXJhbmRvbS4KIAotICAgICAgICAgICAgICAgICAgIE5vdGU6IEluIHRoaXMgY2FzZSB0aGUgZGF0YSByZWFkIHdpbGwgbm90IGJlIHJhbmRvbSBzbwotICAgICAgICAgICAgICAgICAgIHNob3VsZCBub3QgYmUgdXNlZCBmb3IgY3J5cHRvZ3JhcGhpYyBwdXJwb3Nlcy4gUmV0YWluaW5nCi0gICAgICAgICAgICAgICAgICAgdGhlIGV4aXN0aW5nIHNlbWFudGljcyBmb3IgcHJhY3RpY2FsIHB1cnBvc2VzLiAqLwotICAgICAgICAgICAgICAgIGdldHJhbmRvbV93b3JrcyA9IDA7CisgICAgICAgICAgICAvKiBnZXRyYW5kb20oR1JORF9OT05CTE9DSykgZmFpbHMgd2l0aCBFQUdBSU4gaWYgdGhlIHN5c3RlbSB1cmFuZG9tCisgICAgICAgICAgICAgICBpcyBub3QgaW5pdGlhbGlhemVkIHlldC4gRm9yIF9QeVJhbmRvbV9Jbml0KCksIHdlIGlnbm9yZSB0aGVpcgorICAgICAgICAgICAgICAgZXJyb3IgYW5kIGZhbGwgYmFjayBvbiByZWFkaW5nIC9kZXYvdXJhbmRvbSB3aGljaCBuZXZlciBibG9ja3MsCisgICAgICAgICAgICAgICBldmVuIGlmIHRoZSBzeXN0ZW0gdXJhbmRvbSBpcyBub3QgaW5pdGlhbGl6ZWQgeWV0LiAqLworICAgICAgICAgICAgaWYgKGVycm5vID09IEVBR0FJTiAmJiAhcmFpc2UgJiYgIWJsb2NraW5nKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChlcnJubyA9PSBFSU5UUikgewotICAgICAgICAgICAgICAgIGlmIChQeUVycl9DaGVja1NpZ25hbHMoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoIXJhaXNlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJnZXRyYW5kb20oKSBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCIpOworICAgICAgICAgICAgICAgIGlmIChyYWlzZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgLyogcmV0cnkgZ2V0cmFuZG9tKCkgKi8KKyAgICAgICAgICAgICAgICAvKiByZXRyeSBnZXRyYW5kb20oKSBpZiBpdCB3YXMgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwgKi8KICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKHJhaXNlKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiZ2V0cmFuZG9tKCkgZmFpbGVkIik7Ci0gICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KIAotICAgICAgICBidWZmZXIgKz0gbjsKKyAgICAgICAgZGVzdCArPSBuOwogICAgICAgICBzaXplIC09IG47CiAgICAgfQogICAgIHJldHVybiAxOwpAQCAtMjM5LDY0ICsyMjksMjEgQEAKIC8qIFJlYWQgJ3NpemUnIHJhbmRvbSBieXRlcyBmcm9tIHB5X2dldHJhbmRvbSgpLiBGYWxsIGJhY2sgb24gcmVhZGluZyBmcm9tCiAgICAvZGV2L3VyYW5kb20gaWYgZ2V0cmFuZG9tKCkgaXMgbm90IGF2YWlsYWJsZS4KIAotICAgQ2FsbCBQeV9GYXRhbEVycm9yKCkgb24gZXJyb3IuICovCi1zdGF0aWMgdm9pZAotZGV2X3VyYW5kb21fbm9yYWlzZSh1bnNpZ25lZCBjaGFyICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSkKLXsKLSAgICBpbnQgZmQ7Ci0gICAgUHlfc3NpemVfdCBuOwotCi0gICAgYXNzZXJ0ICgwIDwgc2l6ZSk7Ci0KLSNpZmRlZiBQWV9HRVRSQU5ET00KLSAgICBpZiAocHlfZ2V0cmFuZG9tKGJ1ZmZlciwgc2l6ZSwgMCkgPT0gMSkgewotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIC8qIGdldHJhbmRvbSgpIGZhaWxlZCB3aXRoIEVOT1NZUyBvciBFUEVSTSwKLSAgICAgICBmYWxsIGJhY2sgb24gcmVhZGluZyAvZGV2L3VyYW5kb20gKi8KLSNlbmRpZgotCi0gICAgZmQgPSBfUHlfb3Blbl9ub3JhaXNlKCIvZGV2L3VyYW5kb20iLCBPX1JET05MWSk7Ci0gICAgaWYgKGZkIDwgMCkgewotICAgICAgICBQeV9GYXRhbEVycm9yKCJGYWlsZWQgdG8gb3BlbiAvZGV2L3VyYW5kb20iKTsKLSAgICB9Ci0KLSAgICB3aGlsZSAoMCA8IHNpemUpCi0gICAgewotICAgICAgICBkbyB7Ci0gICAgICAgICAgICBuID0gcmVhZChmZCwgYnVmZmVyLCAoc2l6ZV90KXNpemUpOwotICAgICAgICB9IHdoaWxlIChuIDwgMCAmJiBlcnJubyA9PSBFSU5UUik7Ci0KLSAgICAgICAgaWYgKG4gPD0gMCkgewotICAgICAgICAgICAgLyogcmVhZCgpIGZhaWxlZCBvciByZXR1cm5lZCAwIGJ5dGVzICovCi0gICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJGYWlsZWQgdG8gcmVhZCBieXRlcyBmcm9tIC9kZXYvdXJhbmRvbSIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgYnVmZmVyICs9IG47Ci0gICAgICAgIHNpemUgLT0gbjsKLSAgICB9Ci0gICAgY2xvc2UoZmQpOwotfQotCi0vKiBSZWFkICdzaXplJyByYW5kb20gYnl0ZXMgZnJvbSBweV9nZXRyYW5kb20oKS4gRmFsbCBiYWNrIG9uIHJlYWRpbmcgZnJvbQotICAgL2Rldi91cmFuZG9tIGlmIGdldHJhbmRvbSgpIGlzIG5vdCBhdmFpbGFibGUuCi0KLSAgIFJldHVybiAwIG9uIHN1Y2Nlc3MuIFJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLiAqLworICAgUmV0dXJuIDAgb24gc3VjY2Vzcy4gUmFpc2UgYW4gZXhjZXB0aW9uIChpZiByYWlzZSBpcyBub24temVybykgYW5kIHJldHVybiAtMQorICAgb24gZXJyb3IuICovCiBzdGF0aWMgaW50Ci1kZXZfdXJhbmRvbV9weXRob24oY2hhciAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUpCitkZXZfdXJhbmRvbShjaGFyICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSwgaW50IGJsb2NraW5nLCBpbnQgcmFpc2UpCiB7CiAgICAgaW50IGZkOwogICAgIFB5X3NzaXplX3QgbjsKLSAgICBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0IHN0OwogI2lmZGVmIFBZX0dFVFJBTkRPTQogICAgIGludCByZXM7CiAjZW5kaWYKIAotICAgIGlmIChzaXplIDw9IDApCi0gICAgICAgIHJldHVybiAwOworICAgIGFzc2VydChzaXplID4gMCk7CiAKICNpZmRlZiBQWV9HRVRSQU5ET00KLSAgICByZXMgPSBweV9nZXRyYW5kb20oYnVmZmVyLCBzaXplLCAxKTsKKyAgICByZXMgPSBweV9nZXRyYW5kb20oYnVmZmVyLCBzaXplLCBibG9ja2luZywgcmFpc2UpOwogICAgIGlmIChyZXMgPCAwKSB7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CkBAIC0zMDcsNjQgKzI1NCw5MCBAQAogICAgICAgIGZhbGwgYmFjayBvbiByZWFkaW5nIC9kZXYvdXJhbmRvbSAqLwogI2VuZGlmCiAKLSAgICBpZiAodXJhbmRvbV9jYWNoZS5mZCA+PSAwKSB7Ci0gICAgICAgIC8qIERvZXMgdGhlIGZkIHBvaW50IHRvIHRoZSBzYW1lIHRoaW5nIGFzIGJlZm9yZT8gKGlzc3VlICMyMTIwNykgKi8KLSAgICAgICAgaWYgKF9QeV9mc3RhdF9ub3JhaXNlKHVyYW5kb21fY2FjaGUuZmQsICZzdCkKLSAgICAgICAgICAgIHx8IHN0LnN0X2RldiAhPSB1cmFuZG9tX2NhY2hlLnN0X2RldgotICAgICAgICAgICAgfHwgc3Quc3RfaW5vICE9IHVyYW5kb21fY2FjaGUuc3RfaW5vKSB7Ci0gICAgICAgICAgICAvKiBTb21ldGhpbmcgY2hhbmdlZDogZm9yZ2V0IHRoZSBjYWNoZWQgZmQgKGJ1dCBkb24ndCBjbG9zZSBpdCwKLSAgICAgICAgICAgICAgIHNpbmNlIGl0IHByb2JhYmx5IHBvaW50cyB0byBzb21ldGhpbmcgaW1wb3J0YW50IGZvciBzb21lCi0gICAgICAgICAgICAgICB0aGlyZC1wYXJ0eSBjb2RlKS4gKi8KLSAgICAgICAgICAgIHVyYW5kb21fY2FjaGUuZmQgPSAtMTsKKworICAgIGlmIChyYWlzZSkgeworICAgICAgICBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0IHN0OworCisgICAgICAgIGlmICh1cmFuZG9tX2NhY2hlLmZkID49IDApIHsKKyAgICAgICAgICAgIC8qIERvZXMgdGhlIGZkIHBvaW50IHRvIHRoZSBzYW1lIHRoaW5nIGFzIGJlZm9yZT8gKGlzc3VlICMyMTIwNykgKi8KKyAgICAgICAgICAgIGlmIChfUHlfZnN0YXRfbm9yYWlzZSh1cmFuZG9tX2NhY2hlLmZkLCAmc3QpCisgICAgICAgICAgICAgICAgfHwgc3Quc3RfZGV2ICE9IHVyYW5kb21fY2FjaGUuc3RfZGV2CisgICAgICAgICAgICAgICAgfHwgc3Quc3RfaW5vICE9IHVyYW5kb21fY2FjaGUuc3RfaW5vKSB7CisgICAgICAgICAgICAgICAgLyogU29tZXRoaW5nIGNoYW5nZWQ6IGZvcmdldCB0aGUgY2FjaGVkIGZkIChidXQgZG9uJ3QgY2xvc2UgaXQsCisgICAgICAgICAgICAgICAgICAgc2luY2UgaXQgcHJvYmFibHkgcG9pbnRzIHRvIHNvbWV0aGluZyBpbXBvcnRhbnQgZm9yIHNvbWUKKyAgICAgICAgICAgICAgICAgICB0aGlyZC1wYXJ0eSBjb2RlKS4gKi8KKyAgICAgICAgICAgICAgICB1cmFuZG9tX2NhY2hlLmZkID0gLTE7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgaWYgKHVyYW5kb21fY2FjaGUuZmQgPj0gMCkKKyAgICAgICAgICAgIGZkID0gdXJhbmRvbV9jYWNoZS5mZDsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBmZCA9IF9QeV9vcGVuKCIvZGV2L3VyYW5kb20iLCBPX1JET05MWSk7CisgICAgICAgICAgICBpZiAoZmQgPCAwKSB7CisgICAgICAgICAgICAgICAgaWYgKGVycm5vID09IEVOT0VOVCB8fCBlcnJubyA9PSBFTlhJTyB8fAorICAgICAgICAgICAgICAgICAgICBlcnJubyA9PSBFTk9ERVYgfHwgZXJybm8gPT0gRUFDQ0VTKQorICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvZGV2L3VyYW5kb20gKG9yIGVxdWl2YWxlbnQpIG5vdCBmb3VuZCIpOworICAgICAgICAgICAgICAgIC8qIG90aGVyd2lzZSwga2VlcCB0aGUgT1NFcnJvciBleGNlcHRpb24gcmFpc2VkIGJ5IF9QeV9vcGVuKCkgKi8KKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodXJhbmRvbV9jYWNoZS5mZCA+PSAwKSB7CisgICAgICAgICAgICAgICAgLyogdXJhbmRvbV9mZCB3YXMgaW5pdGlhbGl6ZWQgYnkgYW5vdGhlciB0aHJlYWQgd2hpbGUgd2Ugd2VyZQorICAgICAgICAgICAgICAgICAgIG5vdCBob2xkaW5nIHRoZSBHSUwsIGtlZXAgaXQuICovCisgICAgICAgICAgICAgICAgY2xvc2UoZmQpOworICAgICAgICAgICAgICAgIGZkID0gdXJhbmRvbV9jYWNoZS5mZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChfUHlfZnN0YXQoZmQsICZzdCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xvc2UoZmQpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICB1cmFuZG9tX2NhY2hlLmZkID0gZmQ7CisgICAgICAgICAgICAgICAgICAgIHVyYW5kb21fY2FjaGUuc3RfZGV2ID0gc3Quc3RfZGV2OworICAgICAgICAgICAgICAgICAgICB1cmFuZG9tX2NhY2hlLnN0X2lubyA9IHN0LnN0X2lubzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBkbyB7CisgICAgICAgICAgICBuID0gX1B5X3JlYWQoZmQsIGJ1ZmZlciwgKHNpemVfdClzaXplKTsKKyAgICAgICAgICAgIGlmIChuID09IC0xKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIGlmIChuID09IDApIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byByZWFkICV6aSBieXRlcyBmcm9tIC9kZXYvdXJhbmRvbSIsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGJ1ZmZlciArPSBuOworICAgICAgICAgICAgc2l6ZSAtPSBuOworICAgICAgICB9IHdoaWxlICgwIDwgc2l6ZSk7CiAgICAgfQotICAgIGlmICh1cmFuZG9tX2NhY2hlLmZkID49IDApCi0gICAgICAgIGZkID0gdXJhbmRvbV9jYWNoZS5mZDsKICAgICBlbHNlIHsKLSAgICAgICAgZmQgPSBfUHlfb3BlbigiL2Rldi91cmFuZG9tIiwgT19SRE9OTFkpOworICAgICAgICBmZCA9IF9QeV9vcGVuX25vcmFpc2UoIi9kZXYvdXJhbmRvbSIsIE9fUkRPTkxZKTsKICAgICAgICAgaWYgKGZkIDwgMCkgewotICAgICAgICAgICAgaWYgKGVycm5vID09IEVOT0VOVCB8fCBlcnJubyA9PSBFTlhJTyB8fAotICAgICAgICAgICAgICAgIGVycm5vID09IEVOT0RFViB8fCBlcnJubyA9PSBFQUNDRVMpCi0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvZGV2L3VyYW5kb20gKG9yIGVxdWl2YWxlbnQpIG5vdCBmb3VuZCIpOwotICAgICAgICAgICAgLyogb3RoZXJ3aXNlLCBrZWVwIHRoZSBPU0Vycm9yIGV4Y2VwdGlvbiByYWlzZWQgYnkgX1B5X29wZW4oKSAqLwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9Ci0gICAgICAgIGlmICh1cmFuZG9tX2NhY2hlLmZkID49IDApIHsKLSAgICAgICAgICAgIC8qIHVyYW5kb21fZmQgd2FzIGluaXRpYWxpemVkIGJ5IGFub3RoZXIgdGhyZWFkIHdoaWxlIHdlIHdlcmUKLSAgICAgICAgICAgICAgIG5vdCBob2xkaW5nIHRoZSBHSUwsIGtlZXAgaXQuICovCi0gICAgICAgICAgICBjbG9zZShmZCk7Ci0gICAgICAgICAgICBmZCA9IHVyYW5kb21fY2FjaGUuZmQ7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBpZiAoX1B5X2ZzdGF0KGZkLCAmc3QpKSB7CisKKyAgICAgICAgd2hpbGUgKDAgPCBzaXplKQorICAgICAgICB7CisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgbiA9IHJlYWQoZmQsIGJ1ZmZlciwgKHNpemVfdClzaXplKTsKKyAgICAgICAgICAgIH0gd2hpbGUgKG4gPCAwICYmIGVycm5vID09IEVJTlRSKTsKKworICAgICAgICAgICAgaWYgKG4gPD0gMCkgeworICAgICAgICAgICAgICAgIC8qIHN0b3Agb24gZXJyb3Igb3IgaWYgcmVhZChzaXplKSByZXR1cm5lZCAwICovCiAgICAgICAgICAgICAgICAgY2xvc2UoZmQpOwogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHVyYW5kb21fY2FjaGUuZmQgPSBmZDsKLSAgICAgICAgICAgICAgICB1cmFuZG9tX2NhY2hlLnN0X2RldiA9IHN0LnN0X2RldjsKLSAgICAgICAgICAgICAgICB1cmFuZG9tX2NhY2hlLnN0X2lubyA9IHN0LnN0X2lubzsKLSAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYnVmZmVyICs9IG47CisgICAgICAgICAgICBzaXplIC09IG47CiAgICAgICAgIH0KKyAgICAgICAgY2xvc2UoZmQpOwogICAgIH0KLQotICAgIGRvIHsKLSAgICAgICAgbiA9IF9QeV9yZWFkKGZkLCBidWZmZXIsIChzaXplX3Qpc2l6ZSk7Ci0gICAgICAgIGlmIChuID09IC0xKSB7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG4gPT0gMCkgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1J1bnRpbWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byByZWFkICV6aSBieXRlcyBmcm9tIC9kZXYvdXJhbmRvbSIsCi0gICAgICAgICAgICAgICAgICAgIHNpemUpOwotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0KLSAgICAgICAgYnVmZmVyICs9IG47Ci0gICAgICAgIHNpemUgLT0gbjsKLSAgICB9IHdoaWxlICgwIDwgc2l6ZSk7Ci0KICAgICByZXR1cm4gMDsKIH0KIApAQCAtNDAwLDI5ICszNzMsNjIgQEAKICAgICB9CiB9CiAKKy8qIElmIHJhaXNlIGlzIHplcm86CisgICAtIERvbid0IHJhaXNlIGV4Y2VwdGlvbnMgb24gZXJyb3IKKyAgIC0gRG9uJ3QgY2FsbCBQeUVycl9DaGVja1NpZ25hbHMoKSBvbiBFSU5UUiAocmV0cnkgZGlyZWN0bHkgdGhlIGludGVycnVwdGVkCisgICAgIHN5c2NhbGwpCisgICAtIERvbid0IHJlbGVhc2UgdGhlIEdJTCB0byBjYWxsIHN5c2NhbGxzLiAqLworc3RhdGljIGludAorcHl1cmFuZG9tKHZvaWQgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplLCBpbnQgYmxvY2tpbmcsIGludCByYWlzZSkKK3sKKyAgICBpZiAoc2l6ZSA8IDApIHsKKyAgICAgICAgaWYgKHJhaXNlKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAibmVnYXRpdmUgYXJndW1lbnQgbm90IGFsbG93ZWQiKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKHNpemUgPT0gMCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgcmV0dXJuIHdpbjMyX3VyYW5kb20oKHVuc2lnbmVkIGNoYXIgKilidWZmZXIsIHNpemUsIHJhaXNlKTsKKyNlbGlmIGRlZmluZWQoUFlfR0VURU5UUk9QWSkKKyAgICByZXR1cm4gcHlfZ2V0ZW50cm9weShidWZmZXIsIHNpemUsIHJhaXNlKTsKKyNlbHNlCisgICAgcmV0dXJuIGRldl91cmFuZG9tKGJ1ZmZlciwgc2l6ZSwgYmxvY2tpbmcsIHJhaXNlKTsKKyNlbmRpZgorfQorCiAvKiBGaWxsIGJ1ZmZlciB3aXRoIHNpemUgcHNldWRvLXJhbmRvbSBieXRlcyBmcm9tIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHJhbmRvbQogICAgbnVtYmVyIGdlbmVyYXRvciAoUk5HKS4gSXQgaXMgc3VpdGFibGUgZm9yIG1vc3QgY3J5cHRvZ3JhcGhpYyBwdXJwb3NlcwogICAgZXhjZXB0IGxvbmcgbGl2aW5nIHByaXZhdGUga2V5cyBmb3IgYXN5bW1ldHJpYyBlbmNyeXB0aW9uLgogCi0gICBSZXR1cm4gMCBvbiBzdWNjZXNzLCByYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBvbiBlcnJvci4gKi8KKyAgIE9uIExpbnV4IDMuMTcgYW5kIG5ld2VyLCB0aGUgZ2V0cmFuZG9tKCkgc3lzY2FsbCBpcyB1c2VkIGluIGJsb2NraW5nIG1vZGU6CisgICBibG9jayB1bnRpbCB0aGUgc3lzdGVtIHVyYW5kb20gZW50cm9weSBwb29sIGlzIGluaXRpYWxpemVkICgxMjggYml0cyBhcmUKKyAgIGNvbGxlY3RlZCBieSB0aGUga2VybmVsKS4KKworICAgUmV0dXJuIDAgb24gc3VjY2Vzcy4gUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IuICovCiBpbnQKIF9QeU9TX1VSYW5kb20odm9pZCAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUpCiB7Ci0gICAgaWYgKHNpemUgPCAwKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIm5lZ2F0aXZlIGFyZ3VtZW50IG5vdCBhbGxvd2VkIik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgaWYgKHNpemUgPT0gMCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHB5dXJhbmRvbShidWZmZXIsIHNpemUsIDEsIDEpOworfQogCi0jaWZkZWYgTVNfV0lORE9XUwotICAgIHJldHVybiB3aW4zMl91cmFuZG9tKCh1bnNpZ25lZCBjaGFyICopYnVmZmVyLCBzaXplLCAxKTsKLSNlbGlmIGRlZmluZWQoUFlfR0VURU5UUk9QWSkKLSAgICByZXR1cm4gcHlfZ2V0ZW50cm9weShidWZmZXIsIHNpemUsIDApOwotI2Vsc2UKLSAgICByZXR1cm4gZGV2X3VyYW5kb21fcHl0aG9uKChjaGFyKilidWZmZXIsIHNpemUpOwotI2VuZGlmCisvKiBGaWxsIGJ1ZmZlciB3aXRoIHNpemUgcHNldWRvLXJhbmRvbSBieXRlcyBmcm9tIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHJhbmRvbQorICAgbnVtYmVyIGdlbmVyYXRvciAoUk5HKS4gSXQgaXMgbm90IHN1aXRhYmxlIGZvciBjcnlwdG9ncmFwaGljIHB1cnBvc2UuCisKKyAgIE9uIExpbnV4IDMuMTcgYW5kIG5ld2VyICh3aGVuIGdldHJhbmRvbSgpIHN5c2NhbGwgaXMgdXNlZCksIGlmIHRoZSBzeXN0ZW0KKyAgIHVyYW5kb20gaXMgbm90IGluaXRpYWxpemVkIHlldCwgdGhlIGZ1bmN0aW9uIHJldHVybnMgIndlYWsiIGVudHJvcHkgcmVhZAorICAgZnJvbSAvZGV2L3VyYW5kb20uCisKKyAgIFJldHVybiAwIG9uIHN1Y2Nlc3MuIFJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLiAqLworaW50CitfUHlPU19VUmFuZG9tTm9uYmxvY2sodm9pZCAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUpCit7CisgICAgcmV0dXJuIHB5dXJhbmRvbShidWZmZXIsIHNpemUsIDAsIDEpOwogfQogCiB2b2lkCkBAIC00MzEsNyArNDM3LDcgQEAKICAgICBjaGFyICplbnY7CiAgICAgdW5zaWduZWQgY2hhciAqc2VjcmV0ID0gKHVuc2lnbmVkIGNoYXIgKikmX1B5X0hhc2hTZWNyZXQudWM7CiAgICAgUHlfc3NpemVfdCBzZWNyZXRfc2l6ZSA9IHNpemVvZihfUHlfSGFzaFNlY3JldF90KTsKLSAgICBhc3NlcnQoc2VjcmV0X3NpemUgPT0gc2l6ZW9mKF9QeV9IYXNoU2VjcmV0LnVjKSk7CisgICAgUHlfQlVJTERfQVNTRVJUKHNpemVvZihfUHlfSGFzaFNlY3JldF90KSA9PSBzaXplb2YoX1B5X0hhc2hTZWNyZXQudWMpKTsKIAogICAgIGlmIChfUHlfSGFzaFNlY3JldF9Jbml0aWFsaXplZCkKICAgICAgICAgcmV0dXJuOwpAQCAtNDYzLDEzICs0NjksMTcgQEAKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgICAgICh2b2lkKXdpbjMyX3VyYW5kb20oc2VjcmV0LCBzZWNyZXRfc2l6ZSwgMCk7Ci0jZWxpZiBkZWZpbmVkKFBZX0dFVEVOVFJPUFkpCi0gICAgICAgICh2b2lkKXB5X2dldGVudHJvcHkoc2VjcmV0LCBzZWNyZXRfc2l6ZSwgMSk7Ci0jZWxzZQotICAgICAgICBkZXZfdXJhbmRvbV9ub3JhaXNlKHNlY3JldCwgc2VjcmV0X3NpemUpOwotI2VuZGlmCisgICAgICAgIGludCByZXM7CisKKyAgICAgICAgLyogX1B5UmFuZG9tX0luaXQoKSBpcyBjYWxsZWQgdmVyeSBlYXJseSBpbiB0aGUgUHl0aG9uIGluaXRpYWxpemF0aW9uCisgICAgICAgICAgIGFuZCBzbyBleGNlcHRpb25zIGNhbm5vdCBiZSB1c2VkICh1c2UgcmFpc2U9MCkuCisKKyAgICAgICAgICAgX1B5UmFuZG9tX0luaXQoKSBtdXN0IG5vdCBibG9jayBQeXRob24gaW5pdGlhbGl6YXRpb246IGNhbGwKKyAgICAgICAgICAgcHl1cmFuZG9tKCkgaXMgbm9uLWJsb2NraW5nIG1vZGUgKGJsb2NraW5nPTApOiBzZWUgdGhlIFBFUCA1MjQuICovCisgICAgICAgIHJlcyA9IHB5dXJhbmRvbShzZWNyZXQsIHNlY3JldF9zaXplLCAwLCAwKTsKKyAgICAgICAgaWYgKHJlcyA8IDApIHsKKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImZhaWxlZCB0byBnZXQgcmFuZG9tIG51bWJlcnMgdG8gaW5pdGlhbGl6ZSBQeXRob24iKTsKKyAgICAgICAgfQogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvUHl0aG9uL3N0cnVjdG1lbWJlci5jIGIvUHl0aG9uL3N0cnVjdG1lbWJlci5jCmluZGV4IGFmMDI5NmQuLmJlMjczN2QgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9zdHJ1Y3RtZW1iZXIuYworKysgYi9QeXRob24vc3RydWN0bWVtYmVyLmMKQEAgLTc0LDE0ICs3NCwxMiBAQAogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0F0dHJpYnV0ZUVycm9yLCBsLT5uYW1lKTsKICAgICAgICAgUHlfWElOQ1JFRih2KTsKICAgICAgICAgYnJlYWs7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICBjYXNlIFRfTE9OR0xPTkc6Ci0gICAgICAgIHYgPSBQeUxvbmdfRnJvbUxvbmdMb25nKCooUFlfTE9OR19MT05HICopYWRkcik7CisgICAgICAgIHYgPSBQeUxvbmdfRnJvbUxvbmdMb25nKCoobG9uZyBsb25nICopYWRkcik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVF9VTE9OR0xPTkc6Ci0gICAgICAgIHYgPSBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcoKih1bnNpZ25lZCBQWV9MT05HX0xPTkcgKilhZGRyKTsKKyAgICAgICAgdiA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZygqKHVuc2lnbmVkIGxvbmcgbG9uZyAqKWFkZHIpOwogICAgICAgICBicmVhazsKLSNlbmRpZiAvKiBIQVZFX0xPTkdfTE9ORyAqLwogICAgIGNhc2UgVF9OT05FOgogICAgICAgICB2ID0gUHlfTm9uZTsKICAgICAgICAgUHlfSU5DUkVGKHYpOwpAQCAtMjU0LDcgKzI1Miw3IEBACiAgICAgICAgIGNoYXIgKnN0cmluZzsKICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAKLSAgICAgICAgc3RyaW5nID0gX1B5VW5pY29kZV9Bc1N0cmluZ0FuZFNpemUodiwgJmxlbik7CisgICAgICAgIHN0cmluZyA9IFB5VW5pY29kZV9Bc1VURjhBbmRTaXplKHYsICZsZW4pOwogICAgICAgICBpZiAoc3RyaW5nID09IE5VTEwgfHwgbGVuICE9IDEpIHsKICAgICAgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CiAgICAgICAgICAgICByZXR1cm4gLTE7CkBAIC0yNjYsMjcgKzI2NCwyNSBAQAogICAgIGNhc2UgVF9TVFJJTkdfSU5QTEFDRToKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlYWRvbmx5IGF0dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm4gLTE7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICBjYXNlIFRfTE9OR0xPTkc6ewotICAgICAgICBQWV9MT05HX0xPTkcgdmFsdWU7Ci0gICAgICAgICooUFlfTE9OR19MT05HKilhZGRyID0gdmFsdWUgPSBQeUxvbmdfQXNMb25nTG9uZyh2KTsKKyAgICAgICAgbG9uZyBsb25nIHZhbHVlOworICAgICAgICAqKGxvbmcgbG9uZyopYWRkciA9IHZhbHVlID0gUHlMb25nX0FzTG9uZ0xvbmcodik7CiAgICAgICAgIGlmICgodmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgY2FzZSBUX1VMT05HTE9ORzp7Ci0gICAgICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB2YWx1ZTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIHZhbHVlOwogICAgICAgICAvKiA/Pz8gUHlMb25nX0FzTG9uZ0xvbmcgYWNjZXB0cyBhbiBpbnQsIGJ1dCBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nCiAgICAgICAgICAgICBkb2Vzbid0ID8/PyAqLwogICAgICAgICBpZiAoUHlMb25nX0NoZWNrKHYpKQotICAgICAgICAgICAgKih1bnNpZ25lZCBQWV9MT05HX0xPTkcqKWFkZHIgPSB2YWx1ZSA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcodik7CisgICAgICAgICAgICAqKHVuc2lnbmVkIGxvbmcgbG9uZyopYWRkciA9IHZhbHVlID0gUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZyh2KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgKih1bnNpZ25lZCBQWV9MT05HX0xPTkcqKWFkZHIgPSB2YWx1ZSA9IFB5TG9uZ19Bc0xvbmcodik7Ci0gICAgICAgIGlmICgodmFsdWUgPT0gKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyktMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgICoodW5zaWduZWQgbG9uZyBsb25nKilhZGRyID0gdmFsdWUgPSBQeUxvbmdfQXNMb25nKHYpOworICAgICAgICBpZiAoKHZhbHVlID09ICh1bnNpZ25lZCBsb25nIGxvbmcpLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0jZW5kaWYgLyogSEFWRV9MT05HX0xPTkcgKi8KICAgICBkZWZhdWx0OgogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAiYmFkIG1lbWJlcmRlc2NyIHR5cGUgZm9yICVzIiwgbC0+bmFtZSk7CmRpZmYgLS1naXQgYS9QeXRob24vc3ltdGFibGUuYyBiL1B5dGhvbi9zeW10YWJsZS5jCmluZGV4IGFkY2EyZGEuLjYxNjVjZmUgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9zeW10YWJsZS5jCisrKyBiL1B5dGhvbi9zeW10YWJsZS5jCkBAIC02LDE2ICs2LDIyIEBACiAKIC8qIGVycm9yIHN0cmluZ3MgdXNlZCBmb3Igd2FybmluZ3MgKi8KICNkZWZpbmUgR0xPQkFMX0FGVEVSX0FTU0lHTiBcCi0ibmFtZSAnJS40MDBzJyBpcyBhc3NpZ25lZCB0byBiZWZvcmUgZ2xvYmFsIGRlY2xhcmF0aW9uIgorIm5hbWUgJyVVJyBpcyBhc3NpZ25lZCB0byBiZWZvcmUgZ2xvYmFsIGRlY2xhcmF0aW9uIgogCiAjZGVmaW5lIE5PTkxPQ0FMX0FGVEVSX0FTU0lHTiBcCi0ibmFtZSAnJS40MDBzJyBpcyBhc3NpZ25lZCB0byBiZWZvcmUgbm9ubG9jYWwgZGVjbGFyYXRpb24iCisibmFtZSAnJVUnIGlzIGFzc2lnbmVkIHRvIGJlZm9yZSBub25sb2NhbCBkZWNsYXJhdGlvbiIKIAogI2RlZmluZSBHTE9CQUxfQUZURVJfVVNFIFwKLSJuYW1lICclLjQwMHMnIGlzIHVzZWQgcHJpb3IgdG8gZ2xvYmFsIGRlY2xhcmF0aW9uIgorIm5hbWUgJyVVJyBpcyB1c2VkIHByaW9yIHRvIGdsb2JhbCBkZWNsYXJhdGlvbiIKIAogI2RlZmluZSBOT05MT0NBTF9BRlRFUl9VU0UgXAotIm5hbWUgJyUuNDAwcycgaXMgdXNlZCBwcmlvciB0byBub25sb2NhbCBkZWNsYXJhdGlvbiIKKyJuYW1lICclVScgaXMgdXNlZCBwcmlvciB0byBub25sb2NhbCBkZWNsYXJhdGlvbiIKKworI2RlZmluZSBHTE9CQUxfQU5OT1QgXAorImFubm90YXRlZCBuYW1lICclVScgY2FuJ3QgYmUgZ2xvYmFsIgorCisjZGVmaW5lIE5PTkxPQ0FMX0FOTk9UIFwKKyJhbm5vdGF0ZWQgbmFtZSAnJVUnIGNhbid0IGJlIG5vbmxvY2FsIgogCiAjZGVmaW5lIElNUE9SVF9TVEFSX1dBUk5JTkcgImltcG9ydCAqIG9ubHkgYWxsb3dlZCBhdCBtb2R1bGUgbGV2ZWwiCiAKQEAgLTYzLDYgKzY5LDcgQEAKICAgICAgICAgc3RlLT5zdGVfbmVzdGVkID0gMTsKICAgICBzdGUtPnN0ZV9jaGlsZF9mcmVlID0gMDsKICAgICBzdGUtPnN0ZV9nZW5lcmF0b3IgPSAwOworICAgIHN0ZS0+c3RlX2Nvcm91dGluZSA9IDA7CiAgICAgc3RlLT5zdGVfcmV0dXJuc192YWx1ZSA9IDA7CiAgICAgc3RlLT5zdGVfbmVlZHNfY2xhc3NfY2xvc3VyZSA9IDA7CiAKQEAgLTE2MCw3ICsxNjcsNiBAQAogfTsKIAogc3RhdGljIGludCBzeW10YWJsZV9hbmFseXplKHN0cnVjdCBzeW10YWJsZSAqc3QpOwotc3RhdGljIGludCBzeW10YWJsZV93YXJuKHN0cnVjdCBzeW10YWJsZSAqc3QsIGNoYXIgKm1zZywgaW50IGxpbmVubyk7CiBzdGF0aWMgaW50IHN5bXRhYmxlX2VudGVyX2Jsb2NrKHN0cnVjdCBzeW10YWJsZSAqc3QsIGlkZW50aWZpZXIgbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X2Jsb2NrX3R5IGJsb2NrLCB2b2lkICphc3QsIGludCBsaW5lbm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjb2xfb2Zmc2V0KTsKQEAgLTM3OCw3ICszODQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0FzTG9uZyhQeVR1cGxlX0dFVF9JVEVNKGRhdGEsIDIpKSk7CiAKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9ICAgCisgICAgICAgIH0KICAgICB9CiAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgIkJVRzogaW50ZXJuYWwgZGlyZWN0aXZlIGJvb2trZWVwaW5nIGJyb2tlbiIpOwpAQCAtNjUyLDcgKzY1OCw3IEBACiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICAvKiBIYW5kbGUgZ2xvYmFsIHN5bWJvbCAqLwotICAgICAgICBpZiAoIVB5U2V0X0NvbnRhaW5zKGJvdW5kLCBuYW1lKSkgeworICAgICAgICBpZiAoYm91bmQgJiYgIVB5U2V0X0NvbnRhaW5zKGJvdW5kLCBuYW1lKSkgewogICAgICAgICAgICAgUHlfREVDUkVGKG5hbWUpOwogICAgICAgICAgICAgY29udGludWU7ICAgICAgIC8qIGl0J3MgYSBnbG9iYWwgKi8KICAgICAgICAgfQpAQCAtOTA2LDI3ICs5MTIsNiBAQAogICAgIHJldHVybiByOwogfQogCi0KLXN0YXRpYyBpbnQKLXN5bXRhYmxlX3dhcm4oc3RydWN0IHN5bXRhYmxlICpzdCwgY2hhciAqbXNnLCBpbnQgbGluZW5vKQotewotICAgIFB5T2JqZWN0ICptZXNzYWdlID0gUHlVbmljb2RlX0Zyb21TdHJpbmcobXNnKTsKLSAgICBpZiAobWVzc2FnZSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoUHlFcnJfV2FybkV4cGxpY2l0T2JqZWN0KFB5RXhjX1N5bnRheFdhcm5pbmcsIG1lc3NhZ2UsIHN0LT5zdF9maWxlbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVubywgTlVMTCwgTlVMTCkgPCAwKSAgICAgewotICAgICAgICBQeV9ERUNSRUYobWVzc2FnZSk7Ci0gICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1N5bnRheFdhcm5pbmcpKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3ludGF4RXJyb3IsIG1zZyk7Ci0gICAgICAgICAgICBQeUVycl9TeW50YXhMb2NhdGlvbk9iamVjdChzdC0+c3RfZmlsZW5hbWUsIHN0LT5zdF9jdXItPnN0ZV9saW5lbm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdC0+c3RfY3VyLT5zdGVfY29sX29mZnNldCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIFB5X0RFQ1JFRihtZXNzYWdlKTsKLSAgICByZXR1cm4gMTsKLX0KLQogLyogc3ltdGFibGVfZW50ZXJfYmxvY2soKSBnZXRzIGEgcmVmZXJlbmNlIHZpYSBzdGVfbmV3LgogICAgVGhpcyByZWZlcmVuY2UgaXMgcmVsZWFzZWQgd2hlbiB0aGUgYmxvY2sgaXMgZXhpdGVkLCB2aWEgdGhlIERFQ1JFRgogICAgaW4gc3ltdGFibGVfZXhpdF9ibG9jaygpLgpAQCAtMTIwMSw2ICsxMTg2LDQzIEBACiAgICAgICAgIFZJU0lUX1NFUShzdCwgZXhwciwgcy0+di5Bc3NpZ24udGFyZ2V0cyk7CiAgICAgICAgIFZJU0lUKHN0LCBleHByLCBzLT52LkFzc2lnbi52YWx1ZSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQW5uQXNzaWduX2tpbmQ6CisgICAgICAgIGlmIChzLT52LkFubkFzc2lnbi50YXJnZXQtPmtpbmQgPT0gTmFtZV9raW5kKSB7CisgICAgICAgICAgICBleHByX3R5IGVfbmFtZSA9IHMtPnYuQW5uQXNzaWduLnRhcmdldDsKKyAgICAgICAgICAgIGxvbmcgY3VyID0gc3ltdGFibGVfbG9va3VwKHN0LCBlX25hbWUtPnYuTmFtZS5pZCk7CisgICAgICAgICAgICBpZiAoY3VyIDwgMCkgeworICAgICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKChjdXIgJiAoREVGX0dMT0JBTCB8IERFRl9OT05MT0NBTCkpCisgICAgICAgICAgICAgICAgJiYgcy0+di5Bbm5Bc3NpZ24uc2ltcGxlKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5bnRheEVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXIgJiBERUZfR0xPQkFMID8gR0xPQkFMX0FOTk9UIDogTk9OTE9DQUxfQU5OT1QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVfbmFtZS0+di5OYW1lLmlkKTsKKyAgICAgICAgICAgICAgICBQeUVycl9TeW50YXhMb2NhdGlvbk9iamVjdChzdC0+c3RfZmlsZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+bGluZW5vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmNvbF9vZmZzZXQpOworICAgICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHMtPnYuQW5uQXNzaWduLnNpbXBsZSAmJgorICAgICAgICAgICAgICAgICFzeW10YWJsZV9hZGRfZGVmKHN0LCBlX25hbWUtPnYuTmFtZS5pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERUZfQU5OT1QgfCBERUZfTE9DQUwpKSB7CisgICAgICAgICAgICAgICAgVklTSVRfUVVJVChzdCwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAocy0+di5Bbm5Bc3NpZ24udmFsdWUKKyAgICAgICAgICAgICAgICAgICAgJiYgIXN5bXRhYmxlX2FkZF9kZWYoc3QsIGVfbmFtZS0+di5OYW1lLmlkLCBERUZfTE9DQUwpKSB7CisgICAgICAgICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFZJU0lUKHN0LCBleHByLCBzLT52LkFubkFzc2lnbi50YXJnZXQpOworICAgICAgICB9CisgICAgICAgIFZJU0lUKHN0LCBleHByLCBzLT52LkFubkFzc2lnbi5hbm5vdGF0aW9uKTsKKyAgICAgICAgaWYgKHMtPnYuQW5uQXNzaWduLnZhbHVlKSB7CisgICAgICAgICAgICBWSVNJVChzdCwgZXhwciwgcy0+di5Bbm5Bc3NpZ24udmFsdWUpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQXVnQXNzaWduX2tpbmQ6CiAgICAgICAgIFZJU0lUKHN0LCBleHByLCBzLT52LkF1Z0Fzc2lnbi50YXJnZXQpOwogICAgICAgICBWSVNJVChzdCwgZXhwciwgcy0+di5BdWdBc3NpZ24udmFsdWUpOwpAQCAtMTI1OCwyMSArMTI4MCwyMSBAQAogICAgICAgICAgICAgbG9uZyBjdXIgPSBzeW10YWJsZV9sb29rdXAoc3QsIG5hbWUpOwogICAgICAgICAgICAgaWYgKGN1ciA8IDApCiAgICAgICAgICAgICAgICAgVklTSVRfUVVJVChzdCwgMCk7Ci0gICAgICAgICAgICBpZiAoY3VyICYgKERFRl9MT0NBTCB8IFVTRSkpIHsKLSAgICAgICAgICAgICAgICBjaGFyIGJ1ZlsyNTZdOwotICAgICAgICAgICAgICAgIGNoYXIgKmNfbmFtZSA9IF9QeVVuaWNvZGVfQXNTdHJpbmcobmFtZSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFjX25hbWUpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgICAgIGlmIChjdXIgJiBERUZfTE9DQUwpCi0gICAgICAgICAgICAgICAgICAgIFB5T1Nfc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTE9CQUxfQUZURVJfQVNTSUdOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNfbmFtZSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBQeU9TX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xPQkFMX0FGVEVSX1VTRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjX25hbWUpOwotICAgICAgICAgICAgICAgIGlmICghc3ltdGFibGVfd2FybihzdCwgYnVmLCBzLT5saW5lbm8pKQotICAgICAgICAgICAgICAgICAgICBWSVNJVF9RVUlUKHN0LCAwKTsKKyAgICAgICAgICAgIGlmIChjdXIgJiAoREVGX0xPQ0FMIHwgVVNFIHwgREVGX0FOTk9UKSkgeworICAgICAgICAgICAgICAgIGNoYXIqIG1zZzsKKyAgICAgICAgICAgICAgICBpZiAoY3VyICYgVVNFKSB7CisgICAgICAgICAgICAgICAgICAgIG1zZyA9IEdMT0JBTF9BRlRFUl9VU0U7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjdXIgJiBERUZfQU5OT1QpIHsKKyAgICAgICAgICAgICAgICAgICAgbXNnID0gR0xPQkFMX0FOTk9UOworICAgICAgICAgICAgICAgIH0gZWxzZSB7ICAvKiBERUZfTE9DQUwgKi8KKyAgICAgICAgICAgICAgICAgICAgbXNnID0gR0xPQkFMX0FGVEVSX0FTU0lHTjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5bnRheEVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2csIG5hbWUpOworICAgICAgICAgICAgICAgIFB5RXJyX1N5bnRheExvY2F0aW9uT2JqZWN0KHN0LT5zdF9maWxlbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5saW5lbm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Y29sX29mZnNldCk7CisgICAgICAgICAgICAgICAgVklTSVRfUVVJVChzdCwgMCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoIXN5bXRhYmxlX2FkZF9kZWYoc3QsIG5hbWUsIERFRl9HTE9CQUwpKQogICAgICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOwpAQCAtMTI4OSwyMSArMTMxMSwyMCBAQAogICAgICAgICAgICAgbG9uZyBjdXIgPSBzeW10YWJsZV9sb29rdXAoc3QsIG5hbWUpOwogICAgICAgICAgICAgaWYgKGN1ciA8IDApCiAgICAgICAgICAgICAgICAgVklTSVRfUVVJVChzdCwgMCk7Ci0gICAgICAgICAgICBpZiAoY3VyICYgKERFRl9MT0NBTCB8IFVTRSkpIHsKLSAgICAgICAgICAgICAgICBjaGFyIGJ1ZlsyNTZdOwotICAgICAgICAgICAgICAgIGNoYXIgKmNfbmFtZSA9IF9QeVVuaWNvZGVfQXNTdHJpbmcobmFtZSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFjX25hbWUpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgICAgIGlmIChjdXIgJiBERUZfTE9DQUwpCi0gICAgICAgICAgICAgICAgICAgIFB5T1Nfc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOT05MT0NBTF9BRlRFUl9BU1NJR04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY19uYW1lKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIFB5T1Nfc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOT05MT0NBTF9BRlRFUl9VU0UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY19uYW1lKTsKLSAgICAgICAgICAgICAgICBpZiAoIXN5bXRhYmxlX3dhcm4oc3QsIGJ1Ziwgcy0+bGluZW5vKSkKLSAgICAgICAgICAgICAgICAgICAgVklTSVRfUVVJVChzdCwgMCk7CisgICAgICAgICAgICBpZiAoY3VyICYgKERFRl9MT0NBTCB8IFVTRSB8IERFRl9BTk5PVCkpIHsKKyAgICAgICAgICAgICAgICBjaGFyKiBtc2c7CisgICAgICAgICAgICAgICAgaWYgKGN1ciAmIFVTRSkgeworICAgICAgICAgICAgICAgICAgICBtc2cgPSBOT05MT0NBTF9BRlRFUl9VU0U7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjdXIgJiBERUZfQU5OT1QpIHsKKyAgICAgICAgICAgICAgICAgICAgbXNnID0gTk9OTE9DQUxfQU5OT1Q7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsgIC8qIERFRl9MT0NBTCAqLworICAgICAgICAgICAgICAgICAgICBtc2cgPSBOT05MT0NBTF9BRlRFUl9BU1NJR047CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeW50YXhFcnJvciwgbXNnLCBuYW1lKTsKKyAgICAgICAgICAgICAgICBQeUVycl9TeW50YXhMb2NhdGlvbk9iamVjdChzdC0+c3RfZmlsZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+bGluZW5vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmNvbF9vZmZzZXQpOworICAgICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFzeW10YWJsZV9hZGRfZGVmKHN0LCBuYW1lLCBERUZfTk9OTE9DQUwpKQogICAgICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOwpAQCAtMTM0MSw2ICsxMzYyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGdW5jdGlvbkJsb2NrLCAodm9pZCAqKXMsIHMtPmxpbmVubywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jb2xfb2Zmc2V0KSkKICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOworICAgICAgICBzdC0+c3RfY3VyLT5zdGVfY29yb3V0aW5lID0gMTsKICAgICAgICAgVklTSVQoc3QsIGFyZ3VtZW50cywgcy0+di5Bc3luY0Z1bmN0aW9uRGVmLmFyZ3MpOwogICAgICAgICBWSVNJVF9TRVEoc3QsIHN0bXQsIHMtPnYuQXN5bmNGdW5jdGlvbkRlZi5ib2R5KTsKICAgICAgICAgaWYgKCFzeW10YWJsZV9leGl0X2Jsb2NrKHN0LCBzKSkKQEAgLTE0MzYsNyArMTQ1OCw3IEBACiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQXdhaXRfa2luZDoKICAgICAgICAgVklTSVQoc3QsIGV4cHIsIGUtPnYuQXdhaXQudmFsdWUpOwotICAgICAgICBzdC0+c3RfY3VyLT5zdGVfZ2VuZXJhdG9yID0gMTsKKyAgICAgICAgc3QtPnN0X2N1ci0+c3RlX2Nvcm91dGluZSA9IDE7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29tcGFyZV9raW5kOgogICAgICAgICBWSVNJVChzdCwgZXhwciwgZS0+di5Db21wYXJlLmxlZnQpOwpAQCAtMTQ0Nyw2ICsxNDY5LDE1IEBACiAgICAgICAgIFZJU0lUX1NFUShzdCwgZXhwciwgZS0+di5DYWxsLmFyZ3MpOwogICAgICAgICBWSVNJVF9TRVFfV0lUSF9OVUxMKHN0LCBrZXl3b3JkLCBlLT52LkNhbGwua2V5d29yZHMpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEZvcm1hdHRlZFZhbHVlX2tpbmQ6CisgICAgICAgIFZJU0lUKHN0LCBleHByLCBlLT52LkZvcm1hdHRlZFZhbHVlLnZhbHVlKTsKKyAgICAgICAgaWYgKGUtPnYuRm9ybWF0dGVkVmFsdWUuZm9ybWF0X3NwZWMpCisgICAgICAgICAgICBWSVNJVChzdCwgZXhwciwgZS0+di5Gb3JtYXR0ZWRWYWx1ZS5mb3JtYXRfc3BlYyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSm9pbmVkU3RyX2tpbmQ6CisgICAgICAgIFZJU0lUX1NFUShzdCwgZXhwciwgZS0+di5Kb2luZWRTdHIudmFsdWVzKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDb25zdGFudF9raW5kOgogICAgIGNhc2UgTnVtX2tpbmQ6CiAgICAgY2FzZSBTdHJfa2luZDoKICAgICBjYXNlIEJ5dGVzX2tpbmQ6CkBAIC0xNjQ3LDYgKzE2NzgsOSBAQAogICAgIFZJU0lUKHN0LCBleHByLCBsYy0+dGFyZ2V0KTsKICAgICBWSVNJVChzdCwgZXhwciwgbGMtPml0ZXIpOwogICAgIFZJU0lUX1NFUShzdCwgZXhwciwgbGMtPmlmcyk7CisgICAgaWYgKGxjLT5pc19hc3luYykgeworICAgICAgICBzdC0+c3RfY3VyLT5zdGVfY29yb3V0aW5lID0gMTsKKyAgICB9CiAgICAgcmV0dXJuIDE7CiB9CiAKQEAgLTE2OTksNiArMTczMyw5IEBACiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBzdC0+c3RfY3VyLT5zdGVfZ2VuZXJhdG9yID0gaXNfZ2VuZXJhdG9yOworICAgIGlmIChvdXRlcm1vc3QtPmlzX2FzeW5jKSB7CisgICAgICAgIHN0LT5zdF9jdXItPnN0ZV9jb3JvdXRpbmUgPSAxOworICAgIH0KICAgICAvKiBPdXRlcm1vc3QgaXRlciBpcyByZWNlaXZlZCBhcyBhbiBhcmd1bWVudCAqLwogICAgIGlmICghc3ltdGFibGVfaW1wbGljaXRfYXJnKHN0LCAwKSkgewogICAgICAgICBzeW10YWJsZV9leGl0X2Jsb2NrKHN0LCAodm9pZCAqKWUpOwpkaWZmIC0tZ2l0IGEvUHl0aG9uL3N5c21vZHVsZS5jIGIvUHl0aG9uL3N5c21vZHVsZS5jCmluZGV4IDFkYzdkN2MuLjUyMDM0ZmYgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9zeXNtb2R1bGUuYworKysgYi9QeXRob24vc3lzbW9kdWxlLmMKQEAgLTIwLDYgKzIwLDcgQEAKICNpbmNsdWRlICJweXRocmVhZC5oIgogCiAjaW5jbHVkZSAib3NkZWZzLmgiCisjaW5jbHVkZSA8bG9jYWxlLmg+CiAKICNpZmRlZiBNU19XSU5ET1dTCiAjZGVmaW5lIFdJTjMyX0xFQU5fQU5EX01FQU4KQEAgLTMzLDcgKzM0LDYgQEAKICNlbmRpZgogCiAjaWZkZWYgSEFWRV9MQU5HSU5GT19ICi0jaW5jbHVkZSA8bG9jYWxlLmg+CiAjaW5jbHVkZSA8bGFuZ2luZm8uaD4KICNlbmRpZgogCkBAIC0xMTQsNyArMTE0LDcgQEAKICAgICBzdGRvdXRfZW5jb2RpbmcgPSBfUHlPYmplY3RfR2V0QXR0cklkKG91dGYsICZQeUlkX2VuY29kaW5nKTsKICAgICBpZiAoc3Rkb3V0X2VuY29kaW5nID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgc3Rkb3V0X2VuY29kaW5nX3N0ciA9IF9QeVVuaWNvZGVfQXNTdHJpbmcoc3Rkb3V0X2VuY29kaW5nKTsKKyAgICBzdGRvdXRfZW5jb2Rpbmdfc3RyID0gUHlVbmljb2RlX0FzVVRGOChzdGRvdXRfZW5jb2RpbmcpOwogICAgIGlmIChzdGRvdXRfZW5jb2Rpbmdfc3RyID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAKQEAgLTMxMSw2ICszMTEsMjMgQEAKICk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCitzeXNfZ2V0ZmlsZXN5c3RlbWVuY29kZWVycm9ycyhQeU9iamVjdCAqc2VsZikKK3sKKyAgICBpZiAoUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGVFcnJvcnMpCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyhQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9ycyk7CisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgImZpbGVzeXN0ZW0gZW5jb2RpbmcgaXMgbm90IGluaXRpYWxpemVkIik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK1B5RG9jX1NUUlZBUihnZXRmaWxlc3lzdGVtZW5jb2RlZXJyb3JzX2RvYywKKyAgICAiZ2V0ZmlsZXN5c3RlbWVuY29kZWVycm9ycygpIC0+IHN0cmluZ1xuXAorXG5cCitSZXR1cm4gdGhlIGVycm9yIG1vZGUgdXNlZCB0byBjb252ZXJ0IFVuaWNvZGUgZmlsZW5hbWVzIGluXG5cCitvcGVyYXRpbmcgc3lzdGVtIGZpbGVuYW1lcy4iCispOworCitzdGF0aWMgUHlPYmplY3QgKgogc3lzX2ludGVybihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlPYmplY3QgKnM7CkBAIC0zNDYsOCArMzYzLDEwIEBACiBzdGF0aWMgaW50CiB0cmFjZV9pbml0KHZvaWQpCiB7Ci0gICAgc3RhdGljIGNoYXIgKndoYXRuYW1lc1s3XSA9IHsiY2FsbCIsICJleGNlcHRpb24iLCAibGluZSIsICJyZXR1cm4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNfY2FsbCIsICJjX2V4Y2VwdGlvbiIsICJjX3JldHVybiJ9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3Qgd2hhdG5hbWVzWzddID0geworICAgICAgICAiY2FsbCIsICJleGNlcHRpb24iLCAibGluZSIsICJyZXR1cm4iLAorICAgICAgICAiY19jYWxsIiwgImNfZXhjZXB0aW9uIiwgImNfcmV0dXJuIgorICAgIH07CiAgICAgUHlPYmplY3QgKm5hbWU7CiAgICAgaW50IGk7CiAgICAgZm9yIChpID0gMDsgaSA8IDc7ICsraSkgewpAQCAtMzY2LDM0ICszODUsMjUgQEAKIGNhbGxfdHJhbXBvbGluZShQeU9iamVjdCogY2FsbGJhY2ssCiAgICAgICAgICAgICAgICAgUHlGcmFtZU9iamVjdCAqZnJhbWUsIGludCB3aGF0LCBQeU9iamVjdCAqYXJnKQogewotICAgIFB5T2JqZWN0ICphcmdzOwotICAgIFB5T2JqZWN0ICp3aGF0c3RyOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKnN0YWNrWzNdOwogCi0gICAgYXJncyA9IFB5VHVwbGVfTmV3KDMpOwotICAgIGlmIChhcmdzID09IE5VTEwpCisgICAgaWYgKFB5RnJhbWVfRmFzdFRvTG9jYWxzV2l0aEVycm9yKGZyYW1lKSA8IDApIHsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5RnJhbWVfRmFzdFRvTG9jYWxzV2l0aEVycm9yKGZyYW1lKSA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAotICAgIFB5X0lOQ1JFRihmcmFtZSk7Ci0gICAgd2hhdHN0ciA9IHdoYXRzdHJpbmdzW3doYXRdOwotICAgIFB5X0lOQ1JFRih3aGF0c3RyKTsKLSAgICBpZiAoYXJnID09IE5VTEwpCi0gICAgICAgIGFyZyA9IFB5X05vbmU7Ci0gICAgUHlfSU5DUkVGKGFyZyk7Ci0gICAgUHlUdXBsZV9TRVRfSVRFTShhcmdzLCAwLCAoUHlPYmplY3QgKilmcmFtZSk7Ci0gICAgUHlUdXBsZV9TRVRfSVRFTShhcmdzLCAxLCB3aGF0c3RyKTsKLSAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDIsIGFyZyk7CisgICAgc3RhY2tbMF0gPSAoUHlPYmplY3QgKilmcmFtZTsKKyAgICBzdGFja1sxXSA9IHdoYXRzdHJpbmdzW3doYXRdOworICAgIHN0YWNrWzJdID0gKGFyZyAhPSBOVUxMKSA/IGFyZyA6IFB5X05vbmU7CiAKICAgICAvKiBjYWxsIHRoZSBQeXRob24tbGV2ZWwgZnVuY3Rpb24gKi8KLSAgICByZXN1bHQgPSBQeUV2YWxfQ2FsbE9iamVjdChjYWxsYmFjaywgYXJncyk7Ci0gICAgUHlGcmFtZV9Mb2NhbHNUb0Zhc3QoZnJhbWUsIDEpOwotICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSAgICAgICAgUHlUcmFjZUJhY2tfSGVyZShmcmFtZSk7CisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0Zhc3RDYWxsKGNhbGxiYWNrLCBzdGFjaywgMyk7CiAKLSAgICAvKiBjbGVhbnVwICovCi0gICAgUHlfREVDUkVGKGFyZ3MpOworICAgIFB5RnJhbWVfTG9jYWxzVG9GYXN0KGZyYW1lLCAxKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgUHlUcmFjZUJhY2tfSGVyZShmcmFtZSk7CisgICAgfQorCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNDM0LDEwICs0NDQsNyBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIGlmIChyZXN1bHQgIT0gUHlfTm9uZSkgewotICAgICAgICBQeU9iamVjdCAqdGVtcCA9IGZyYW1lLT5mX3RyYWNlOwotICAgICAgICBmcmFtZS0+Zl90cmFjZSA9IE5VTEw7Ci0gICAgICAgIFB5X1hERUNSRUYodGVtcCk7Ci0gICAgICAgIGZyYW1lLT5mX3RyYWNlID0gcmVzdWx0OworICAgICAgICBQeV9YU0VUUkVGKGZyYW1lLT5mX3RyYWNlLCByZXN1bHQpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CkBAIC02MDIsMzMgKzYwOSw2IEBACiAKICNlbmRpZiAvKiBXSVRIX1RIUkVBRCAqLwogCi0jaWZkZWYgV0lUSF9UU0MKLXN0YXRpYyBQeU9iamVjdCAqCi1zeXNfc2V0dHNjZHVtcChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgaW50IGJvb2w7Ci0gICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HZXQoKTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpzZXR0c2NkdW1wIiwgJmJvb2wpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoYm9vbCkKLSAgICAgICAgdHN0YXRlLT5pbnRlcnAtPnRzY2R1bXAgPSAxOwotICAgIGVsc2UKLSAgICAgICAgdHN0YXRlLT5pbnRlcnAtPnRzY2R1bXAgPSAwOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKLQotfQotCi1QeURvY19TVFJWQVIoc2V0dHNjZHVtcF9kb2MsCi0ic2V0dHNjZHVtcChib29sKVxuXAotXG5cCi1JZiB0cnVlLCB0ZWxsIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIgdG8gZHVtcCBWTSBtZWFzdXJlbWVudHMgdG9cblwKLXN0ZGVyci4gIElmIGZhbHNlLCB0dXJuIG9mZiBkdW1wLiAgVGhlIG1lYXN1cmVtZW50cyBhcmUgYmFzZWQgb24gdGhlXG5cCi1wcm9jZXNzb3IncyB0aW1lLXN0YW1wIGNvdW50ZXIuIgotKTsKLSNlbmRpZiAvKiBUU0MgKi8KLQogc3RhdGljIFB5T2JqZWN0ICoKIHN5c19zZXRyZWN1cnNpb25saW1pdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CkBAIC03MTAsNiArNjkwLDExMyBAQAogKTsKIAogCitzdGF0aWMgUHlUeXBlT2JqZWN0IEFzeW5jR2VuSG9va3NUeXBlOworCitQeURvY19TVFJWQVIoYXN5bmNnZW5faG9va3NfZG9jLAorImFzeW5jZ2VuX2hvb2tzXG5cCitcblwKK0Egc3RydWN0IHNlcXVlbmNlIHByb3ZpZGluZyBpbmZvcm1hdGlvbiBhYm91dCBhc3luaHJvbm91c1xuXAorZ2VuZXJhdG9ycyBob29rcy4gIFRoZSBhdHRyaWJ1dGVzIGFyZSByZWFkIG9ubHkuIik7CisKK3N0YXRpYyBQeVN0cnVjdFNlcXVlbmNlX0ZpZWxkIGFzeW5jZ2VuX2hvb2tzX2ZpZWxkc1tdID0geworICAgIHsiZmlyc3RpdGVyIiwgIkhvb2sgdG8gaW50ZXJjZXB0IGZpcnN0IGl0ZXJhdGlvbiJ9LAorICAgIHsiZmluYWxpemVyIiwgIkhvb2sgdG8gaW50ZXJjZXB0IGZpbmFsaXphdGlvbiJ9LAorICAgIHswfQorfTsKKworc3RhdGljIFB5U3RydWN0U2VxdWVuY2VfRGVzYyBhc3luY2dlbl9ob29rc19kZXNjID0geworICAgICJhc3luY2dlbl9ob29rcyIsICAgICAgICAgIC8qIG5hbWUgKi8KKyAgICBhc3luY2dlbl9ob29rc19kb2MsICAgICAgICAvKiBkb2MgKi8KKyAgICBhc3luY2dlbl9ob29rc19maWVsZHMgLCAgICAvKiBmaWVsZHMgKi8KKyAgICAyCit9OworCisKK3N0YXRpYyBQeU9iamVjdCAqCitzeXNfc2V0X2FzeW5jZ2VuX2hvb2tzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3KQoreworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJmaXJzdGl0ZXIiLCAiZmluYWxpemVyIiwgTlVMTH07CisgICAgUHlPYmplY3QgKmZpcnN0aXRlciA9IE5VTEw7CisgICAgUHlPYmplY3QgKmZpbmFsaXplciA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcygKKyAgICAgICAgICAgIGFyZ3MsIGt3LCAifE9PIiwga2V5d29yZHMsCisgICAgICAgICAgICAmZmlyc3RpdGVyLCAmZmluYWxpemVyKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoZmluYWxpemVyICYmIGZpbmFsaXplciAhPSBQeV9Ob25lKSB7CisgICAgICAgIGlmICghUHlDYWxsYWJsZV9DaGVjayhmaW5hbGl6ZXIpKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJjYWxsYWJsZSBmaW5hbGl6ZXIgZXhwZWN0ZWQsIGdvdCAlLjUwcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShmaW5hbGl6ZXIpLT50cF9uYW1lKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIF9QeUV2YWxfU2V0QXN5bmNHZW5GaW5hbGl6ZXIoZmluYWxpemVyKTsKKyAgICB9CisgICAgZWxzZSBpZiAoZmluYWxpemVyID09IFB5X05vbmUpIHsKKyAgICAgICAgX1B5RXZhbF9TZXRBc3luY0dlbkZpbmFsaXplcihOVUxMKTsKKyAgICB9CisKKyAgICBpZiAoZmlyc3RpdGVyICYmIGZpcnN0aXRlciAhPSBQeV9Ob25lKSB7CisgICAgICAgIGlmICghUHlDYWxsYWJsZV9DaGVjayhmaXJzdGl0ZXIpKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJjYWxsYWJsZSBmaXJzdGl0ZXIgZXhwZWN0ZWQsIGdvdCAlLjUwcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShmaXJzdGl0ZXIpLT50cF9uYW1lKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIF9QeUV2YWxfU2V0QXN5bmNHZW5GaXJzdGl0ZXIoZmlyc3RpdGVyKTsKKyAgICB9CisgICAgZWxzZSBpZiAoZmlyc3RpdGVyID09IFB5X05vbmUpIHsKKyAgICAgICAgX1B5RXZhbF9TZXRBc3luY0dlbkZpcnN0aXRlcihOVUxMKTsKKyAgICB9CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworUHlEb2NfU1RSVkFSKHNldF9hc3luY2dlbl9ob29rc19kb2MsCisic2V0X2FzeW5jZ2VuX2hvb2tzKCosIGZpcnN0aXRlcj1Ob25lLCBmaW5hbGl6ZXI9Tm9uZSlcblwKK1xuXAorU2V0IGEgZmluYWxpemVyIGZvciBhc3luYyBnZW5lcmF0b3JzIG9iamVjdHMuIgorKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3N5c19nZXRfYXN5bmNnZW5faG9va3MoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXM7CisgICAgUHlPYmplY3QgKmZpcnN0aXRlciA9IF9QeUV2YWxfR2V0QXN5bmNHZW5GaXJzdGl0ZXIoKTsKKyAgICBQeU9iamVjdCAqZmluYWxpemVyID0gX1B5RXZhbF9HZXRBc3luY0dlbkZpbmFsaXplcigpOworCisgICAgcmVzID0gUHlTdHJ1Y3RTZXF1ZW5jZV9OZXcoJkFzeW5jR2VuSG9va3NUeXBlKTsKKyAgICBpZiAocmVzID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKGZpcnN0aXRlciA9PSBOVUxMKSB7CisgICAgICAgIGZpcnN0aXRlciA9IFB5X05vbmU7CisgICAgfQorCisgICAgaWYgKGZpbmFsaXplciA9PSBOVUxMKSB7CisgICAgICAgIGZpbmFsaXplciA9IFB5X05vbmU7CisgICAgfQorCisgICAgUHlfSU5DUkVGKGZpcnN0aXRlcik7CisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTShyZXMsIDAsIGZpcnN0aXRlcik7CisKKyAgICBQeV9JTkNSRUYoZmluYWxpemVyKTsKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHJlcywgMSwgZmluYWxpemVyKTsKKworICAgIHJldHVybiByZXM7Cit9CisKK1B5RG9jX1NUUlZBUihnZXRfYXN5bmNnZW5faG9va3NfZG9jLAorImdldF9hc3luY2dlbl9ob29rcygpXG5cCitcblwKK1JldHVybiBhIG5hbWVkdHVwbGUgb2YgaW5zdGFsbGVkIGFzeW5jaHJvbm91cyBnZW5lcmF0b3JzIGhvb2tzIFwKKyhmaXJzdGl0ZXIsIGZpbmFsaXplcikuIgorKTsKKworCiBzdGF0aWMgUHlUeXBlT2JqZWN0IEhhc2hfSW5mb1R5cGU7CiAKIFB5RG9jX1NUUlZBUihoYXNoX2luZm9fZG9jLApAQCAtODA3LDEwICs4OTQsMTEgQEAKIFRoZSBtZW1iZXJzIGFyZSBuYW1lZDogbWFqb3IsIG1pbm9yLCBidWlsZCwgcGxhdGZvcm0sIHNlcnZpY2VfcGFjayxcblwKIHNlcnZpY2VfcGFja19tYWpvciwgc2VydmljZV9wYWNrX21pbm9yLCBzdWl0ZV9tYXNrLCBhbmQgcHJvZHVjdF90eXBlLiBGb3JcblwKIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIG9ubHkgdGhlIGZpcnN0IDUgaXRlbXMgYXJlIGF2YWlsYWJsZSBieSBpbmRleGluZy5cblwKLUFsbCBlbGVtZW50cyBhcmUgbnVtYmVycywgZXhjZXB0IHNlcnZpY2VfcGFjayB3aGljaCBpcyBhIHN0cmluZy4gUGxhdGZvcm1cblwKLW1heSBiZSAwIGZvciB3aW4zMnMsIDEgZm9yIFdpbmRvd3MgOXgvTUUsIDIgZm9yIFdpbmRvd3MgTlQvMjAwMC9YUC9WaXN0YS83LFxuXAotMyBmb3IgV2luZG93cyBDRS4gUHJvZHVjdF90eXBlIG1heSBiZSAxIGZvciBhIHdvcmtzdGF0aW9uLCAyIGZvciBhIGRvbWFpblxuXAotY29udHJvbGxlciwgMyBmb3IgYSBzZXJ2ZXIuIgorQWxsIGVsZW1lbnRzIGFyZSBudW1iZXJzLCBleGNlcHQgc2VydmljZV9wYWNrIGFuZCBwbGF0Zm9ybV90eXBlIHdoaWNoIGFyZVxuXAorc3RyaW5ncywgYW5kIHBsYXRmb3JtX3ZlcnNpb24gd2hpY2ggaXMgYSAzLXR1cGxlLiBQbGF0Zm9ybSBpcyBhbHdheXMgMi5cblwKK1Byb2R1Y3RfdHlwZSBtYXkgYmUgMSBmb3IgYSB3b3Jrc3RhdGlvbiwgMiBmb3IgYSBkb21haW4gY29udHJvbGxlciwgMyBmb3IgYVxuXAorc2VydmVyLiBQbGF0Zm9ybV92ZXJzaW9uIGlzIGEgMy10dXBsZSBjb250YWluaW5nIGEgdmVyc2lvbiBudW1iZXIgdGhhdCBpc1xuXAoraW50ZW5kZWQgZm9yIGlkZW50aWZ5aW5nIHRoZSBPUyByYXRoZXIgdGhhbiBmZWF0dXJlIGRldGVjdGlvbi4iCiApOwogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IFdpbmRvd3NWZXJzaW9uVHlwZSA9IHswLCAwLCAwLCAwLCAwLCAwfTsKQEAgLTgyNSw3ICs5MTMsNyBAQAogICAgIHsic2VydmljZV9wYWNrX21pbm9yIiwgIlNlcnZpY2UgUGFjayBtaW5vciB2ZXJzaW9uIG51bWJlciJ9LAogICAgIHsic3VpdGVfbWFzayIsICJCaXQgbWFzayBpZGVudGlmeWluZyBhdmFpbGFibGUgcHJvZHVjdCBzdWl0ZXMifSwKICAgICB7InByb2R1Y3RfdHlwZSIsICJTeXN0ZW0gcHJvZHVjdCB0eXBlIn0sCi0gICAgeyJfcGxhdGZvcm1fdmVyc2lvbiIsICJEaWFnbm9zdGljIHZlcnNpb24gbnVtYmVyIn0sCisgICAgeyJwbGF0Zm9ybV92ZXJzaW9uIiwgIkRpYWdub3N0aWMgdmVyc2lvbiBudW1iZXIifSwKICAgICB7MH0KIH07CiAKQEAgLTkxMyw2ICsxMDAxLDI0IEBACiAKICNwcmFnbWEgd2FybmluZyhwb3ApCiAKK1B5RG9jX1NUUlZBUihlbmFibGVsZWdhY3l3aW5kb3dzZnNlbmNvZGluZ19kb2MsCisiX2VuYWJsZWxlZ2FjeXdpbmRvd3Nmc2VuY29kaW5nKClcblwKK1xuXAorQ2hhbmdlcyB0aGUgZGVmYXVsdCBmaWxlc3lzdGVtIGVuY29kaW5nIHRvIG1iY3M6cmVwbGFjZSBmb3IgY29uc2lzdGVuY3lcblwKK3dpdGggZWFybGllciB2ZXJzaW9ucyBvZiBQeXRob24uIFNlZSBQRVAgNTI5IGZvciBtb3JlIGluZm9ybWF0aW9uLlxuXAorXG5cCitUaGlzIGlzIGVxdWl2YWxlbnQgdG8gZGVmaW5pbmcgdGhlIFBZVEhPTkxFR0FDWVdJTkRPV1NGU0VOQ09ESU5HIFxuXAorZW52aXJvbm1lbnQgdmFyaWFibGUgYmVmb3JlIGxhdW5jaGluZyBQeXRob24uIgorKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3N5c19lbmFibGVsZWdhY3l3aW5kb3dzZnNlbmNvZGluZyhQeU9iamVjdCAqc2VsZikKK3sKKyAgICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gIm1iY3MiOworICAgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RlRXJyb3JzID0gInJlcGxhY2UiOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCiAjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogCiAjaWZkZWYgSEFWRV9ETE9QRU4KQEAgLTExODksOCArMTI5NSwxMCBAQAogc3lzX2RlYnVnbWFsbG9jc3RhdHMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogI2lmZGVmIFdJVEhfUFlNQUxMT0MKLSAgICBfUHlPYmplY3RfRGVidWdNYWxsb2NTdGF0cyhzdGRlcnIpOwotICAgIGZwdXRjKCdcbicsIHN0ZGVycik7CisgICAgaWYgKF9QeU1lbV9QeW1hbGxvY0VuYWJsZWQoKSkgeworICAgICAgICBfUHlPYmplY3RfRGVidWdNYWxsb2NTdGF0cyhzdGRlcnIpOworICAgICAgICBmcHV0YygnXG4nLCBzdGRlcnIpOworICAgIH0KICNlbmRpZgogICAgIF9QeU9iamVjdF9EZWJ1Z1R5cGVTdGF0cyhzdGRlcnIpOwogCkBAIC0xMjcwLDYgKzEzNzgsOCBAQAogI2VuZGlmCiAgICAgeyJnZXRmaWxlc3lzdGVtZW5jb2RpbmciLCAoUHlDRnVuY3Rpb24pc3lzX2dldGZpbGVzeXN0ZW1lbmNvZGluZywKICAgICAgTUVUSF9OT0FSR1MsIGdldGZpbGVzeXN0ZW1lbmNvZGluZ19kb2N9LAorICAgIHsgImdldGZpbGVzeXN0ZW1lbmNvZGVlcnJvcnMiLCAoUHlDRnVuY3Rpb24pc3lzX2dldGZpbGVzeXN0ZW1lbmNvZGVlcnJvcnMsCisgICAgIE1FVEhfTk9BUkdTLCBnZXRmaWxlc3lzdGVtZW5jb2RlZXJyb3JzX2RvYyB9LAogI2lmZGVmIFB5X1RSQUNFX1JFRlMKICAgICB7ImdldG9iamVjdHMiLCAgICAgIF9QeV9HZXRPYmplY3RzLCBNRVRIX1ZBUkFSR1N9LAogI2VuZGlmCkBAIC0xMjg1LDYgKzEzOTUsOCBAQAogI2lmZGVmIE1TX1dJTkRPV1MKICAgICB7ImdldHdpbmRvd3N2ZXJzaW9uIiwgKFB5Q0Z1bmN0aW9uKXN5c19nZXR3aW5kb3dzdmVyc2lvbiwgTUVUSF9OT0FSR1MsCiAgICAgIGdldHdpbmRvd3N2ZXJzaW9uX2RvY30sCisgICAgeyJfZW5hYmxlbGVnYWN5d2luZG93c2ZzZW5jb2RpbmciLCAoUHlDRnVuY3Rpb24pc3lzX2VuYWJsZWxlZ2FjeXdpbmRvd3Nmc2VuY29kaW5nLAorICAgICBNRVRIX05PQVJHUywgZW5hYmxlbGVnYWN5d2luZG93c2ZzZW5jb2RpbmdfZG9jIH0sCiAjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogICAgIHsiaW50ZXJuIiwgICAgICAgICAgc3lzX2ludGVybiwgICAgIE1FVEhfVkFSQVJHUywgaW50ZXJuX2RvY30sCiAgICAgeyJpc19maW5hbGl6aW5nIiwgICBzeXNfaXNfZmluYWxpemluZywgTUVUSF9OT0FSR1MsIGlzX2ZpbmFsaXppbmdfZG9jfSwKQEAgLTEzMDksOSArMTQyMSw2IEBACiAgICAgeyJnZXRwcm9maWxlIiwgICAgICBzeXNfZ2V0cHJvZmlsZSwgTUVUSF9OT0FSR1MsIGdldHByb2ZpbGVfZG9jfSwKICAgICB7InNldHJlY3Vyc2lvbmxpbWl0Iiwgc3lzX3NldHJlY3Vyc2lvbmxpbWl0LCBNRVRIX1ZBUkFSR1MsCiAgICAgIHNldHJlY3Vyc2lvbmxpbWl0X2RvY30sCi0jaWZkZWYgV0lUSF9UU0MKLSAgICB7InNldHRzY2R1bXAiLCBzeXNfc2V0dHNjZHVtcCwgTUVUSF9WQVJBUkdTLCBzZXR0c2NkdW1wX2RvY30sCi0jZW5kaWYKICAgICB7InNldHRyYWNlIiwgICAgICAgIHN5c19zZXR0cmFjZSwgTUVUSF9PLCBzZXR0cmFjZV9kb2N9LAogICAgIHsiZ2V0dHJhY2UiLCAgICAgICAgc3lzX2dldHRyYWNlLCBNRVRIX05PQVJHUywgZ2V0dHJhY2VfZG9jfSwKICAgICB7ImNhbGxfdHJhY2luZyIsIHN5c19jYWxsX3RyYWNpbmcsIE1FVEhfVkFSQVJHUywgY2FsbF90cmFjaW5nX2RvY30sCkBAIC0xMzIxLDYgKzE0MzAsMTAgQEAKICAgICAgc2V0X2Nvcm91dGluZV93cmFwcGVyX2RvY30sCiAgICAgeyJnZXRfY29yb3V0aW5lX3dyYXBwZXIiLCBzeXNfZ2V0X2Nvcm91dGluZV93cmFwcGVyLCBNRVRIX05PQVJHUywKICAgICAgZ2V0X2Nvcm91dGluZV93cmFwcGVyX2RvY30sCisgICAgeyJzZXRfYXN5bmNnZW5faG9va3MiLCAoUHlDRnVuY3Rpb24pc3lzX3NldF9hc3luY2dlbl9ob29rcywKKyAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgc2V0X2FzeW5jZ2VuX2hvb2tzX2RvY30sCisgICAgeyJnZXRfYXN5bmNnZW5faG9va3MiLCBzeXNfZ2V0X2FzeW5jZ2VuX2hvb2tzLCBNRVRIX05PQVJHUywKKyAgICAgZ2V0X2FzeW5jZ2VuX2hvb2tzX2RvY30sCiAgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTE1MDEsMTQgKzE2MTQsMjEgQEAKIHZlcnNpb25faW5mbyAtLSB2ZXJzaW9uIGluZm9ybWF0aW9uIGFzIGEgbmFtZWQgdHVwbGVcblwKICIKICkKLSNpZmRlZiBNU19XSU5ET1dTCisjaWZkZWYgTVNfQ09SRURMTAogLyogY29uY2F0ZW5hdGluZyBzdHJpbmcgaGVyZSAqLwogUHlEb2NfU1RSKAogImRsbGhhbmRsZSAtLSBbV2luZG93cyBvbmx5XSBpbnRlZ2VyIGhhbmRsZSBvZiB0aGUgUHl0aG9uIERMTFxuXAogd2ludmVyIC0tIFtXaW5kb3dzIG9ubHldIHZlcnNpb24gbnVtYmVyIG9mIHRoZSBQeXRob24gRExMXG5cCiAiCiApCi0jZW5kaWYgLyogTVNfV0lORE9XUyAqLworI2VuZGlmIC8qIE1TX0NPUkVETEwgKi8KKyNpZmRlZiBNU19XSU5ET1dTCisvKiBjb25jYXRlbmF0aW5nIHN0cmluZyBoZXJlICovCitQeURvY19TVFIoCisiX2VuYWJsZWxlZ2FjeXdpbmRvd3Nmc2VuY29kaW5nIC0tIFtXaW5kb3dzIG9ubHldIFxuXAorIgorKQorI2VuZGlmCiBQeURvY19TVFIoCiAiX19zdGRpbl9fIC0tIHRoZSBvcmlnaW5hbCBzdGRpbjsgZG9uJ3QgdG91Y2ghXG5cCiBfX3N0ZG91dF9fIC0tIHRoZSBvcmlnaW5hbCBzdGRvdXQ7IGRvbid0IHRvdWNoIVxuXApAQCAtMTY4MCwxNSArMTgwMCwxMSBAQAogLyogc3lzLmltcGxlbWVudGF0aW9uIHZhbHVlcyAqLwogI2RlZmluZSBOQU1FICJjcHl0aG9uIgogY29uc3QgY2hhciAqX1B5U3lzX0ltcGxOYW1lID0gTkFNRTsKLSNkZWZpbmUgUVVPVEUoYXJnKSAjYXJnCi0jZGVmaW5lIFNUUklGWShuYW1lKSBRVU9URShuYW1lKQotI2RlZmluZSBNQUpPUiBTVFJJRlkoUFlfTUFKT1JfVkVSU0lPTikKLSNkZWZpbmUgTUlOT1IgU1RSSUZZKFBZX01JTk9SX1ZFUlNJT04pCisjZGVmaW5lIE1BSk9SIFB5X1NUUklOR0lGWShQWV9NQUpPUl9WRVJTSU9OKQorI2RlZmluZSBNSU5PUiBQeV9TVFJJTkdJRlkoUFlfTUlOT1JfVkVSU0lPTikKICNkZWZpbmUgVEFHIE5BTUUgIi0iIE1BSk9SIE1JTk9SCiBjb25zdCBjaGFyICpfUHlTeXNfSW1wbENhY2hlVGFnID0gVEFHOwogI3VuZGVmIE5BTUUKLSN1bmRlZiBRVU9URQotI3VuZGVmIFNUUklGWQogI3VuZGVmIE1BSk9SCiAjdW5kZWYgTUlOT1IKICN1bmRlZiBUQUcKQEAgLTE3MzMsNiArMTg0OSwxNiBAQAogICAgIGlmIChyZXMgPCAwKQogICAgICAgICBnb3RvIGVycm9yOwogCisjaWZkZWYgTVVMVElBUkNICisgICAgdmFsdWUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhNVUxUSUFSQ0gpOworICAgIGlmICh2YWx1ZSA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworICAgIHJlcyA9IFB5RGljdF9TZXRJdGVtU3RyaW5nKGltcGxfaW5mbywgIl9tdWx0aWFyY2giLCB2YWx1ZSk7CisgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICBpZiAocmVzIDwgMCkKKyAgICAgICAgZ290byBlcnJvcjsKKyNlbmRpZgorCiAgICAgLyogZGljdCByZWFkeSAqLwogCiAgICAgbnMgPSBfUHlOYW1lc3BhY2VfTmV3KGltcGxfaW5mbyk7CkBAIC0xOTQzLDYgKzIwNjksMTQgQEAKICAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJ0aHJlYWRfaW5mbyIsIFB5VGhyZWFkX0dldEluZm8oKSk7CiAjZW5kaWYKIAorICAgIC8qIGluaXRpYWxpemUgYXN5bmNnZW5faG9va3MgKi8KKyAgICBpZiAoQXN5bmNHZW5Ib29rc1R5cGUudHBfbmFtZSA9PSBOVUxMKSB7CisgICAgICAgIGlmIChQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlMigKKyAgICAgICAgICAgICAgICAmQXN5bmNHZW5Ib29rc1R5cGUsICZhc3luY2dlbl9ob29rc19kZXNjKSA8IDApIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorCiAjdW5kZWYgU0VUX1NZU19GUk9NX1NUUklORwogI3VuZGVmIFNFVF9TWVNfRlJPTV9TVFJJTkdfQk9SUk9XCiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCkBAIC0yMDM5LDcgKzIxNzMsNyBAQAogI2VuZGlmCiAjaWYgZGVmaW5lZChIQVZFX1JFQUxQQVRIKQogICAgIHdjaGFyX3QgZnVsbHBhdGhbTUFYUEFUSExFTl07Ci0jZWxpZiBkZWZpbmVkKE1TX1dJTkRPV1MpICYmICFkZWZpbmVkKE1TX1dJTkNFKQorI2VsaWYgZGVmaW5lZChNU19XSU5ET1dTKQogICAgIHdjaGFyX3QgZnVsbHBhdGhbTUFYX1BBVEhdOwogI2VuZGlmCiAKQEAgLTIwNzgsMTAgKzIyMTIsOCBAQAogI2lmIFNFUCA9PSAnXFwnIC8qIFNwZWNpYWwgY2FzZSBmb3IgTVMgZmlsZW5hbWUgc3ludGF4ICovCiAgICAgaWYgKF9IQVZFX1NDUklQVF9BUkdVTUVOVChhcmdjLCBhcmd2KSkgewogICAgICAgICB3Y2hhcl90ICpxOwotI2lmIGRlZmluZWQoTVNfV0lORE9XUykgJiYgIWRlZmluZWQoTVNfV0lOQ0UpCi0gICAgICAgIC8qIFRoaXMgY29kZSBoZXJlIHJlcGxhY2VzIHRoZSBmaXJzdCBlbGVtZW50IGluIGFyZ3Ygd2l0aCB0aGUgZnVsbAotICAgICAgICBwYXRoIHRoYXQgaXQgcmVwcmVzZW50cy4gVW5kZXIgQ0UsIHRoZXJlIGFyZSBubyByZWxhdGl2ZSBwYXRocyBzbwotICAgICAgICB0aGUgYXJndW1lbnQgbXVzdCBiZSB0aGUgZnVsbCBwYXRoIGFueXdheS4gKi8KKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisgICAgICAgIC8qIFJlcGxhY2UgdGhlIGZpcnN0IGVsZW1lbnQgaW4gYXJndiB3aXRoIHRoZSBmdWxsIHBhdGguICovCiAgICAgICAgIHdjaGFyX3QgKnB0ZW1wOwogICAgICAgICBpZiAoR2V0RnVsbFBhdGhOYW1lVyhhcmd2MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0FSUkFZX0xFTkdUSChmdWxscGF0aCksCkBAIC0yMTUxLDcgKzIyODMsNyBAQAogc3RhdGljIGludAogc3lzX3B5ZmlsZV93cml0ZV91bmljb2RlKFB5T2JqZWN0ICp1bmljb2RlLCBQeU9iamVjdCAqZmlsZSkKIHsKLSAgICBQeU9iamVjdCAqd3JpdGVyID0gTlVMTCwgKmFyZ3MgPSBOVUxMLCAqcmVzdWx0ID0gTlVMTDsKKyAgICBQeU9iamVjdCAqd3JpdGVyID0gTlVMTCwgKnJlc3VsdCA9IE5VTEw7CiAgICAgaW50IGVycjsKIAogICAgIGlmIChmaWxlID09IE5VTEwpCkBAIC0yMTYxLDExICsyMjkzLDcgQEAKICAgICBpZiAod3JpdGVyID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAKLSAgICBhcmdzID0gUHlUdXBsZV9QYWNrKDEsIHVuaWNvZGUpOwotICAgIGlmIChhcmdzID09IE5VTEwpCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0KLSAgICByZXN1bHQgPSBQeUV2YWxfQ2FsbE9iamVjdCh3cml0ZXIsIGFyZ3MpOworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsQXJnMSh3cml0ZXIsIHVuaWNvZGUpOwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgewogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0gZWxzZSB7CkBAIC0yMTc3LDcgKzIzMDUsNiBAQAogICAgIGVyciA9IC0xOwogZmluYWxseToKICAgICBQeV9YREVDUkVGKHdyaXRlcik7Ci0gICAgUHlfWERFQ1JFRihhcmdzKTsKICAgICBQeV9YREVDUkVGKHJlc3VsdCk7CiAgICAgcmV0dXJuIGVycjsKIH0KQEAgLTIyODQsNyArMjQxMSw3IEBACiAgICAgaWYgKG1lc3NhZ2UgIT0gTlVMTCkgewogICAgICAgICBpZiAoc3lzX3B5ZmlsZV93cml0ZV91bmljb2RlKG1lc3NhZ2UsIGZpbGUpICE9IDApIHsKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgICAgICB1dGY4ID0gX1B5VW5pY29kZV9Bc1N0cmluZyhtZXNzYWdlKTsKKyAgICAgICAgICAgIHV0ZjggPSBQeVVuaWNvZGVfQXNVVEY4KG1lc3NhZ2UpOwogICAgICAgICAgICAgaWYgKHV0ZjggIT0gTlVMTCkKICAgICAgICAgICAgICAgICBmcHV0cyh1dGY4LCBmcCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1B5dGhvbi90aHJlYWRfbnQuaCBiL1B5dGhvbi90aHJlYWRfbnQuaAppbmRleCBiMjliMWI2Li43NGE2ZWU4IDEwMDY0NAotLS0gYS9QeXRob24vdGhyZWFkX250LmgKKysrIGIvUHl0aG9uL3RocmVhZF9udC5oCkBAIC03Nyw3ICs3Nyw3IEBACiAgICAgICAgIC8qIHdhaXQgYXQgbGVhc3QgdW50aWwgdGhlIHRhcmdldCAqLwogICAgICAgICBEV09SRCBub3csIHRhcmdldCA9IEdldFRpY2tDb3VudCgpICsgbWlsbGlzZWNvbmRzOwogICAgICAgICB3aGlsZSAobXV0ZXgtPmxvY2tlZCkgewotICAgICAgICAgICAgaWYgKFB5Q09ORF9USU1FRFdBSVQoJm11dGV4LT5jdiwgJm11dGV4LT5jcywgKFBZX0xPTkdfTE9ORyltaWxsaXNlY29uZHMqMTAwMCkgPCAwKSB7CisgICAgICAgICAgICBpZiAoUHlDT05EX1RJTUVEV0FJVCgmbXV0ZXgtPmN2LCAmbXV0ZXgtPmNzLCAobG9uZyBsb25nKW1pbGxpc2Vjb25kcyoxMDAwKSA8IDApIHsKICAgICAgICAgICAgICAgICByZXN1bHQgPSBXQUlUX0ZBSUxFRDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTE2MSwxMSArMTYxLDcgQEAKIAogLyogdGh1bmtlciB0byBjYWxsIGFkYXB0IGJldHdlZW4gdGhlIGZ1bmN0aW9uIHR5cGUgdXNlZCBieSB0aGUgc3lzdGVtJ3MKIHRocmVhZCBzdGFydCBmdW5jdGlvbiBhbmQgdGhlIGludGVybmFsbHkgdXNlZCBvbmUuICovCi0jaWYgZGVmaW5lZChNU19XSU5DRSkKLXN0YXRpYyBEV09SRCBXSU5BUEkKLSNlbHNlCiBzdGF0aWMgdW5zaWduZWQgX19zdGRjYWxsCi0jZW5kaWYKIGJvb3RzdHJhcCh2b2lkICpjYWxsKQogewogICAgIGNhbGxvYmogKm9iaiA9IChjYWxsb2JqKiljYWxsOwpAQCAtMTkzLDMyICsxODksMTggQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIG9iai0+ZnVuYyA9IGZ1bmM7CiAgICAgb2JqLT5hcmcgPSBhcmc7Ci0jaWYgZGVmaW5lZChNU19XSU5DRSkKLSAgICBoVGhyZWFkID0gQ3JlYXRlVGhyZWFkKE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9TQUZFX0RPV05DQVNUKF9weXRocmVhZF9zdGFja3NpemUsIFB5X3NzaXplX3QsIFNJWkVfVCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBib290c3RyYXAsIG9iaiwgMCwgJnRocmVhZElEKTsKLSNlbHNlCiAgICAgaFRocmVhZCA9IChIQU5ETEUpX2JlZ2ludGhyZWFkZXgoMCwKICAgICAgICAgICAgICAgICAgICAgICBQeV9TQUZFX0RPV05DQVNUKF9weXRocmVhZF9zdGFja3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90LCB1bnNpZ25lZCBpbnQpLAogICAgICAgICAgICAgICAgICAgICAgIGJvb3RzdHJhcCwgb2JqLAogICAgICAgICAgICAgICAgICAgICAgIDAsICZ0aHJlYWRJRCk7Ci0jZW5kaWYKICAgICBpZiAoaFRocmVhZCA9PSAwKSB7Ci0jaWYgZGVmaW5lZChNU19XSU5DRSkKLSAgICAgICAgLyogU2F2ZSBlcnJvciBpbiB2YXJpYWJsZSwgdG8gcHJldmVudCBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50Ci0gICAgICAgICAgIGZyb20gY2xvYmJlcmluZyBpdC4gKi8KLSAgICAgICAgdW5zaWduZWQgZSA9IEdldExhc3RFcnJvcigpOwotICAgICAgICBkcHJpbnRmKCgiJWxkOiBQeVRocmVhZF9zdGFydF9uZXdfdGhyZWFkIGZhaWxlZCwgd2luMzIgZXJyb3IgY29kZSAldVxuIiwKLSAgICAgICAgICAgICAgICAgUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCgpLCBlKSk7Ci0jZWxzZQogICAgICAgICAvKiBJJ3ZlIHNlZW4gZXJybm8gPT0gRUFHQUlOIGhlcmUsIHdoaWNoIG1lYW5zICJ0aGVyZSBhcmUKICAgICAgICAgICogdG9vIG1hbnkgdGhyZWFkcyIuCiAgICAgICAgICAqLwogICAgICAgICBpbnQgZSA9IGVycm5vOwogICAgICAgICBkcHJpbnRmKCgiJWxkOiBQeVRocmVhZF9zdGFydF9uZXdfdGhyZWFkIGZhaWxlZCwgZXJybm8gJWRcbiIsCiAgICAgICAgICAgICAgICAgIFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQoKSwgZSkpOwotI2VuZGlmCiAgICAgICAgIHRocmVhZElEID0gKHVuc2lnbmVkKS0xOwogICAgICAgICBIZWFwRnJlZShHZXRQcm9jZXNzSGVhcCgpLCAwLCBvYmopOwogICAgIH0KQEAgLTI0OSwxMSArMjMxLDcgQEAKICAgICBkcHJpbnRmKCgiJWxkOiBQeVRocmVhZF9leGl0X3RocmVhZCBjYWxsZWRcbiIsIFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQoKSkpOwogICAgIGlmICghaW5pdGlhbGl6ZWQpCiAgICAgICAgIGV4aXQoMCk7Ci0jaWYgZGVmaW5lZChNU19XSU5DRSkKLSAgICBFeGl0VGhyZWFkKDApOwotI2Vsc2UKICAgICBfZW5kdGhyZWFkZXgoMCk7Ci0jZW5kaWYKIH0KIAogLyoKZGlmZiAtLWdpdCBhL1B5dGhvbi90cmFjZWJhY2suYyBiL1B5dGhvbi90cmFjZWJhY2suYwppbmRleCA5ZTdmZTNiLi45ZjhjNTY4IDEwMDY0NAotLS0gYS9QeXRob24vdHJhY2ViYWNrLmMKKysrIGIvUHl0aG9uL3RyYWNlYmFjay5jCkBAIC0zMjAsNyArMzIwLDcgQEAKICAgICBpZiAoZm9iID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKIAotICAgICAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGJpbmFyeSwgJlB5SWRfY2xvc2UsICIiKTsKKyAgICAgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChiaW5hcnksICZQeUlkX2Nsb3NlLCBOVUxMKTsKICAgICAgICAgUHlfREVDUkVGKGJpbmFyeSk7CiAgICAgICAgIGlmIChyZXMpCiAgICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKQEAgLTM0MCw3ICszNDAsNyBAQAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmb2IsICZQeUlkX2Nsb3NlLCAiIik7CisgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmb2IsICZQeUlkX2Nsb3NlLCBOVUxMKTsKICAgICBpZiAocmVzKQogICAgICAgICBQeV9ERUNSRUYocmVzKTsKICAgICBlbHNlCkBAIC00MTgsNiArNDE4LDExIEBACiB7CiAgICAgaW50IGVyciA9IDA7CiAgICAgbG9uZyBkZXB0aCA9IDA7CisgICAgUHlPYmplY3QgKmxhc3RfZmlsZSA9IE5VTEw7CisgICAgaW50IGxhc3RfbGluZSA9IC0xOworICAgIFB5T2JqZWN0ICpsYXN0X25hbWUgPSBOVUxMOworICAgIGxvbmcgY250ID0gMDsKKyAgICBQeU9iamVjdCAqbGluZTsKICAgICBQeVRyYWNlYmFja09iamVjdCAqdGIxID0gdGI7CiAgICAgd2hpbGUgKHRiMSAhPSBOVUxMKSB7CiAgICAgICAgIGRlcHRoKys7CkBAIC00MjUsMTYgKzQzMCw0MSBAQAogICAgIH0KICAgICB3aGlsZSAodGIgIT0gTlVMTCAmJiBlcnIgPT0gMCkgewogICAgICAgICBpZiAoZGVwdGggPD0gbGltaXQpIHsKLSAgICAgICAgICAgIGVyciA9IHRiX2Rpc3BsYXlsaW5lKGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Yi0+dGJfZnJhbWUtPmZfY29kZS0+Y29fZmlsZW5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Yi0+dGJfbGluZW5vLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGItPnRiX2ZyYW1lLT5mX2NvZGUtPmNvX25hbWUpOworICAgICAgICAgICAgaWYgKGxhc3RfZmlsZSAhPSBOVUxMICYmCisgICAgICAgICAgICAgICAgdGItPnRiX2ZyYW1lLT5mX2NvZGUtPmNvX2ZpbGVuYW1lID09IGxhc3RfZmlsZSAmJgorICAgICAgICAgICAgICAgIGxhc3RfbGluZSAhPSAtMSAmJiB0Yi0+dGJfbGluZW5vID09IGxhc3RfbGluZSAmJgorICAgICAgICAgICAgICAgIGxhc3RfbmFtZSAhPSBOVUxMICYmCisgICAgICAgICAgICAgICAgdGItPnRiX2ZyYW1lLT5mX2NvZGUtPmNvX25hbWUgPT0gbGFzdF9uYW1lKSB7CisgICAgICAgICAgICAgICAgICAgIGNudCsrOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChjbnQgPiAzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICAiICBbUHJldmlvdXMgbGluZSByZXBlYXRlZCAlZCBtb3JlIHRpbWVzXVxuIiwgY250LTMpOworICAgICAgICAgICAgICAgICAgICAgICAgZXJyID0gUHlGaWxlX1dyaXRlT2JqZWN0KGxpbmUsIGYsIFB5X1BSSU5UX1JBVyk7CisgICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGluZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgbGFzdF9maWxlID0gdGItPnRiX2ZyYW1lLT5mX2NvZGUtPmNvX2ZpbGVuYW1lOworICAgICAgICAgICAgICAgICAgICBsYXN0X2xpbmUgPSB0Yi0+dGJfbGluZW5vOworICAgICAgICAgICAgICAgICAgICBsYXN0X25hbWUgPSB0Yi0+dGJfZnJhbWUtPmZfY29kZS0+Y29fbmFtZTsKKyAgICAgICAgICAgICAgICAgICAgY250ID0gMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoY250IDwgMykKKyAgICAgICAgICAgICAgICBlcnIgPSB0Yl9kaXNwbGF5bGluZShmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRiLT50Yl9mcmFtZS0+Zl9jb2RlLT5jb19maWxlbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Yi0+dGJfbGluZW5vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRiLT50Yl9mcmFtZS0+Zl9jb2RlLT5jb19uYW1lKTsKICAgICAgICAgfQogICAgICAgICBkZXB0aC0tOwogICAgICAgICB0YiA9IHRiLT50Yl9uZXh0OwogICAgICAgICBpZiAoZXJyID09IDApCiAgICAgICAgICAgICBlcnIgPSBQeUVycl9DaGVja1NpZ25hbHMoKTsKICAgICB9CisgICAgaWYgKGNudCA+IDMpIHsKKyAgICAgICAgbGluZSA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KAorICAgICAgICAiICBbUHJldmlvdXMgbGluZSByZXBlYXRlZCAlZCBtb3JlIHRpbWVzXVxuIiwgY250LTMpOworICAgICAgICBlcnIgPSBQeUZpbGVfV3JpdGVPYmplY3QobGluZSwgZiwgUHlfUFJJTlRfUkFXKTsKKyAgICAgICAgUHlfREVDUkVGKGxpbmUpOworICAgIH0KICAgICByZXR1cm4gZXJyOwogfQogCkBAIC00ODUsNDAgKzUxNSwyNiBAQAogCiAgICBUaGlzIGZ1bmN0aW9uIGlzIHNpZ25hbCBzYWZlLiAqLwogCi1zdGF0aWMgdm9pZAotcmV2ZXJzZV9zdHJpbmcoY2hhciAqdGV4dCwgY29uc3Qgc2l6ZV90IGxlbikKK3ZvaWQKK19QeV9EdW1wRGVjaW1hbChpbnQgZmQsIHVuc2lnbmVkIGxvbmcgdmFsdWUpCiB7Ci0gICAgY2hhciB0bXA7Ci0gICAgc2l6ZV90IGksIGo7Ci0gICAgaWYgKGxlbiA9PSAwKQotICAgICAgICByZXR1cm47Ci0gICAgZm9yIChpPTAsIGo9bGVuLTE7IGkgPCBqOyBpKyssIGotLSkgewotICAgICAgICB0bXAgPSB0ZXh0W2ldOwotICAgICAgICB0ZXh0W2ldID0gdGV4dFtqXTsKLSAgICAgICAgdGV4dFtqXSA9IHRtcDsKLSAgICB9Ci19CisgICAgLyogbWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyByZXF1aXJlZCBmb3Igb3V0cHV0IG9mICVsbGQgb3IgJXAuCisgICAgICAgV2UgbmVlZCBhdCBtb3N0IGNlaWwobG9nMTAoMjU2KSpTSVpFT0ZfTE9OR19MT05HKSBkaWdpdHMsCisgICAgICAgcGx1cyAxIGZvciB0aGUgbnVsbCBieXRlLiAgNTMvMjIgaXMgYW4gdXBwZXIgYm91bmQgZm9yIGxvZzEwKDI1NikuICovCisgICAgY2hhciBidWZmZXJbMSArIChzaXplb2YodW5zaWduZWQgbG9uZykqNTMtMSkgLyAyMiArIDFdOworICAgIGNoYXIgKnB0ciwgKmVuZDsKIAotLyogRm9ybWF0IGFuIGludGVnZXIgaW4gcmFuZ2UgWzA7IDk5OTk5OV0gdG8gZGVjaW1hbCwKLSAgIGFuZCB3cml0ZSBpdCBpbnRvIHRoZSBmaWxlIGZkLgotCi0gICBUaGlzIGZ1bmN0aW9uIGlzIHNpZ25hbCBzYWZlLiAqLwotCi1zdGF0aWMgdm9pZAotZHVtcF9kZWNpbWFsKGludCBmZCwgaW50IHZhbHVlKQotewotICAgIGNoYXIgYnVmZmVyWzddOwotICAgIGludCBsZW47Ci0gICAgaWYgKHZhbHVlIDwgMCB8fCA5OTk5OTkgPCB2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGxlbiA9IDA7CisgICAgZW5kID0gJmJ1ZmZlcltQeV9BUlJBWV9MRU5HVEgoYnVmZmVyKSAtIDFdOworICAgIHB0ciA9IGVuZDsKKyAgICAqcHRyID0gJ1wwJzsKICAgICBkbyB7Ci0gICAgICAgIGJ1ZmZlcltsZW5dID0gJzAnICsgKHZhbHVlICUgMTApOworICAgICAgICAtLXB0cjsKKyAgICAgICAgYXNzZXJ0KHB0ciA+PSBidWZmZXIpOworICAgICAgICAqcHRyID0gJzAnICsgKHZhbHVlICUgMTApOwogICAgICAgICB2YWx1ZSAvPSAxMDsKLSAgICAgICAgbGVuKys7CiAgICAgfSB3aGlsZSAodmFsdWUpOwotICAgIHJldmVyc2Vfc3RyaW5nKGJ1ZmZlciwgbGVuKTsKLSAgICBfUHlfd3JpdGVfbm9yYWlzZShmZCwgYnVmZmVyLCBsZW4pOworCisgICAgX1B5X3dyaXRlX25vcmFpc2UoZmQsIHB0ciwgZW5kIC0gcHRyKTsKIH0KIAogLyogRm9ybWF0IGFuIGludGVnZXIgaW4gcmFuZ2UgWzA7IDB4ZmZmZmZmZmZdIHRvIGhleGFkZWNpbWFsIG9mICd3aWR0aCcgZGlnaXRzLApAQCAtNTI2LDI3ICs1NDIsMzEgQEAKIAogICAgVGhpcyBmdW5jdGlvbiBpcyBzaWduYWwgc2FmZS4gKi8KIAotc3RhdGljIHZvaWQKLWR1bXBfaGV4YWRlY2ltYWwoaW50IGZkLCB1bnNpZ25lZCBsb25nIHZhbHVlLCBpbnQgd2lkdGgpCit2b2lkCitfUHlfRHVtcEhleGFkZWNpbWFsKGludCBmZCwgdW5zaWduZWQgbG9uZyB2YWx1ZSwgUHlfc3NpemVfdCB3aWR0aCkKIHsKLSAgICBpbnQgbGVuOwotICAgIGNoYXIgYnVmZmVyW3NpemVvZih1bnNpZ25lZCBsb25nKSAqIDIgKyAxXTsKLSAgICBsZW4gPSAwOworICAgIGNoYXIgYnVmZmVyW3NpemVvZih1bnNpZ25lZCBsb25nKSAqIDIgKyAxXSwgKnB0ciwgKmVuZDsKKyAgICBjb25zdCBQeV9zc2l6ZV90IHNpemUgPSBQeV9BUlJBWV9MRU5HVEgoYnVmZmVyKSAtIDE7CisKKyAgICBpZiAod2lkdGggPiBzaXplKQorICAgICAgICB3aWR0aCA9IHNpemU7CisgICAgLyogaXQncyBvayBpZiB3aWR0aCBpcyBuZWdhdGl2ZSAqLworCisgICAgZW5kID0gJmJ1ZmZlcltzaXplXTsKKyAgICBwdHIgPSBlbmQ7CisgICAgKnB0ciA9ICdcMCc7CiAgICAgZG8gewotICAgICAgICBidWZmZXJbbGVuXSA9IFB5X2hleGRpZ2l0c1t2YWx1ZSAmIDE1XTsKKyAgICAgICAgLS1wdHI7CisgICAgICAgIGFzc2VydChwdHIgPj0gYnVmZmVyKTsKKyAgICAgICAgKnB0ciA9IFB5X2hleGRpZ2l0c1t2YWx1ZSAmIDE1XTsKICAgICAgICAgdmFsdWUgPj49IDQ7Ci0gICAgICAgIGxlbisrOwotICAgIH0gd2hpbGUgKGxlbiA8IHdpZHRoIHx8IHZhbHVlKTsKLSAgICByZXZlcnNlX3N0cmluZyhidWZmZXIsIGxlbik7Ci0gICAgX1B5X3dyaXRlX25vcmFpc2UoZmQsIGJ1ZmZlciwgbGVuKTsKKyAgICB9IHdoaWxlICgoZW5kIC0gcHRyKSA8IHdpZHRoIHx8IHZhbHVlKTsKKworICAgIF9QeV93cml0ZV9ub3JhaXNlKGZkLCBwdHIsIGVuZCAtIHB0cik7CiB9CiAKLS8qIFdyaXRlIGFuIHVuaWNvZGUgb2JqZWN0IGludG8gdGhlIGZpbGUgZmQgdXNpbmcgYXNjaWkrYmFja3NsYXNocmVwbGFjZS4KLQotICAgVGhpcyBmdW5jdGlvbiBpcyBzaWduYWwgc2FmZS4gKi8KLQotc3RhdGljIHZvaWQKLWR1bXBfYXNjaWkoaW50IGZkLCBQeU9iamVjdCAqdGV4dCkKK3ZvaWQKK19QeV9EdW1wQVNDSUkoaW50IGZkLCBQeU9iamVjdCAqdGV4dCkKIHsKICAgICBQeUFTQ0lJT2JqZWN0ICphc2NpaSA9IChQeUFTQ0lJT2JqZWN0ICopdGV4dDsKICAgICBQeV9zc2l6ZV90IGksIHNpemU7CkBAIC01NTYsMzIgKzU3NiwzNiBAQAogICAgIHdjaGFyX3QgKndzdHIgPSBOVUxMOwogICAgIFB5X1VDUzQgY2g7CiAKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh0ZXh0KSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgc2l6ZSA9IGFzY2lpLT5sZW5ndGg7CiAgICAga2luZCA9IGFzY2lpLT5zdGF0ZS5raW5kOwotICAgIGlmIChhc2NpaS0+c3RhdGUuY29tcGFjdCkgeworICAgIGlmIChraW5kID09IFB5VW5pY29kZV9XQ0hBUl9LSU5EKSB7CisgICAgICAgIHdzdHIgPSAoKFB5QVNDSUlPYmplY3QgKil0ZXh0KS0+d3N0cjsKKyAgICAgICAgaWYgKHdzdHIgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgc2l6ZSA9ICgoUHlDb21wYWN0VW5pY29kZU9iamVjdCAqKXRleHQpLT53c3RyX2xlbmd0aDsKKyAgICB9CisgICAgZWxzZSBpZiAoYXNjaWktPnN0YXRlLmNvbXBhY3QpIHsKICAgICAgICAgaWYgKGFzY2lpLT5zdGF0ZS5hc2NpaSkKICAgICAgICAgICAgIGRhdGEgPSAoKFB5QVNDSUlPYmplY3QqKXRleHQpICsgMTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZGF0YSA9ICgoUHlDb21wYWN0VW5pY29kZU9iamVjdCopdGV4dCkgKyAxOwogICAgIH0KLSAgICBlbHNlIGlmIChraW5kICE9IFB5VW5pY29kZV9XQ0hBUl9LSU5EKSB7CisgICAgZWxzZSB7CiAgICAgICAgIGRhdGEgPSAoKFB5VW5pY29kZU9iamVjdCAqKXRleHQpLT5kYXRhLmFueTsKICAgICAgICAgaWYgKGRhdGEgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIHdzdHIgPSAoKFB5QVNDSUlPYmplY3QgKil0ZXh0KS0+d3N0cjsKLSAgICAgICAgaWYgKHdzdHIgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgc2l6ZSA9ICgoUHlDb21wYWN0VW5pY29kZU9iamVjdCAqKXRleHQpLT53c3RyX2xlbmd0aDsKLSAgICB9CiAKICAgICBpZiAoTUFYX1NUUklOR19MRU5HVEggPCBzaXplKSB7CiAgICAgICAgIHNpemUgPSBNQVhfU1RSSU5HX0xFTkdUSDsKICAgICAgICAgdHJ1bmNhdGVkID0gMTsKICAgICB9Ci0gICAgZWxzZQorICAgIGVsc2UgewogICAgICAgICB0cnVuY2F0ZWQgPSAwOworICAgIH0KIAogICAgIGZvciAoaT0wOyBpIDwgc2l6ZTsgaSsrKSB7CiAgICAgICAgIGlmIChraW5kICE9IFB5VW5pY29kZV9XQ0hBUl9LSU5EKQpAQCAtNTk1LDE5ICs2MTksMjAgQEAKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChjaCA8PSAweGZmKSB7CiAgICAgICAgICAgICBQVVRTKGZkLCAiXFx4Iik7Ci0gICAgICAgICAgICBkdW1wX2hleGFkZWNpbWFsKGZkLCBjaCwgMik7CisgICAgICAgICAgICBfUHlfRHVtcEhleGFkZWNpbWFsKGZkLCBjaCwgMik7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoY2ggPD0gMHhmZmZmKSB7CiAgICAgICAgICAgICBQVVRTKGZkLCAiXFx1Iik7Ci0gICAgICAgICAgICBkdW1wX2hleGFkZWNpbWFsKGZkLCBjaCwgNCk7CisgICAgICAgICAgICBfUHlfRHVtcEhleGFkZWNpbWFsKGZkLCBjaCwgNCk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBQVVRTKGZkLCAiXFxVIik7Ci0gICAgICAgICAgICBkdW1wX2hleGFkZWNpbWFsKGZkLCBjaCwgOCk7CisgICAgICAgICAgICBfUHlfRHVtcEhleGFkZWNpbWFsKGZkLCBjaCwgOCk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKHRydW5jYXRlZCkKKyAgICBpZiAodHJ1bmNhdGVkKSB7CiAgICAgICAgIFBVVFMoZmQsICIuLi4iKTsKKyAgICB9CiB9CiAKIC8qIFdyaXRlIGEgZnJhbWUgaW50byB0aGUgZmlsZSBmZDogIkZpbGUgInh4eCIsIGxpbmUgeHh4IGluIHh4eCIuCkBAIC02MjYsNyArNjUxLDcgQEAKICAgICAgICAgJiYgUHlVbmljb2RlX0NoZWNrKGNvZGUtPmNvX2ZpbGVuYW1lKSkKICAgICB7CiAgICAgICAgIFBVVFMoZmQsICJcIiIpOwotICAgICAgICBkdW1wX2FzY2lpKGZkLCBjb2RlLT5jb19maWxlbmFtZSk7CisgICAgICAgIF9QeV9EdW1wQVNDSUkoZmQsIGNvZGUtPmNvX2ZpbGVuYW1lKTsKICAgICAgICAgUFVUUyhmZCwgIlwiIik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgUFVUUyhmZCwgIj8/PyIpOwpAQCAtNjM1LDE0ICs2NjAsMjEgQEAKICAgICAvKiBQeUZyYW1lX0dldExpbmVOdW1iZXIoKSB3YXMgaW50cm9kdWNlZCBpbiBQeXRob24gMi43LjAgYW5kIDMuMi4wICovCiAgICAgbGluZW5vID0gUHlDb2RlX0FkZHIyTGluZShjb2RlLCBmcmFtZS0+Zl9sYXN0aSk7CiAgICAgUFVUUyhmZCwgIiwgbGluZSAiKTsKLSAgICBkdW1wX2RlY2ltYWwoZmQsIGxpbmVubyk7CisgICAgaWYgKGxpbmVubyA+PSAwKSB7CisgICAgICAgIF9QeV9EdW1wRGVjaW1hbChmZCwgKHVuc2lnbmVkIGxvbmcpbGluZW5vKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFBVVFMoZmQsICI/Pz8iKTsKKyAgICB9CiAgICAgUFVUUyhmZCwgIiBpbiAiKTsKIAogICAgIGlmIChjb2RlICE9IE5VTEwgJiYgY29kZS0+Y29fbmFtZSAhPSBOVUxMCi0gICAgICAgICYmIFB5VW5pY29kZV9DaGVjayhjb2RlLT5jb19uYW1lKSkKLSAgICAgICAgZHVtcF9hc2NpaShmZCwgY29kZS0+Y29fbmFtZSk7Ci0gICAgZWxzZQorICAgICAgICYmIFB5VW5pY29kZV9DaGVjayhjb2RlLT5jb19uYW1lKSkgeworICAgICAgICBfUHlfRHVtcEFTQ0lJKGZkLCBjb2RlLT5jb19uYW1lKTsKKyAgICB9CisgICAgZWxzZSB7CiAgICAgICAgIFBVVFMoZmQsICI/Pz8iKTsKKyAgICB9CiAKICAgICBQVVRTKGZkLCAiXG4iKTsKIH0KQEAgLTY5OCw3ICs3MzAsOSBAQAogICAgICAgICBQVVRTKGZkLCAiQ3VycmVudCB0aHJlYWQgMHgiKTsKICAgICBlbHNlCiAgICAgICAgIFBVVFMoZmQsICJUaHJlYWQgMHgiKTsKLSAgICBkdW1wX2hleGFkZWNpbWFsKGZkLCAodW5zaWduZWQgbG9uZyl0c3RhdGUtPnRocmVhZF9pZCwgc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKjIpOworICAgIF9QeV9EdW1wSGV4YWRlY2ltYWwoZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZyl0c3RhdGUtPnRocmVhZF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih1bnNpZ25lZCBsb25nKSAqIDIpOwogICAgIFBVVFMoZmQsICIgKG1vc3QgcmVjZW50IGNhbGwgZmlyc3QpOlxuIik7CiB9CiAKQEAgLTcxMCwxMSArNzQ0LDU2IEBACiAgICBoYW5kbGVycyBpZiBzaWduYWxzIHdlcmUgcmVjZWl2ZWQuICovCiBjb25zdCBjaGFyKgogX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKGludCBmZCwgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgUHlUaHJlYWRTdGF0ZSAqY3VycmVudF90aHJlYWQpCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlUaHJlYWRTdGF0ZSAqY3VycmVudF90c3RhdGUpCiB7CiAgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOwogICAgIHVuc2lnbmVkIGludCBudGhyZWFkczsKIAorI2lmZGVmIFdJVEhfVEhSRUFECisgICAgaWYgKGN1cnJlbnRfdHN0YXRlID09IE5VTEwpIHsKKyAgICAgICAgLyogX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKCkgaXMgY2FsbGVkIGZyb20gc2lnbmFsIGhhbmRsZXJzIGJ5CisgICAgICAgICAgIGZhdWx0aGFuZGxlci4KKworICAgICAgICAgICBTSUdTRUdWLCBTSUdGUEUsIFNJR0FCUlQsIFNJR0JVUyBhbmQgU0lHSUxMIGFyZSBzeW5jaHJvbm91cyBzaWduYWxzCisgICAgICAgICAgIGFuZCBhcmUgdGh1cyBkZWxpdmVyZWQgdG8gdGhlIHRocmVhZCB0aGF0IGNhdXNlZCB0aGUgZmF1bHQuIEdldCB0aGUKKyAgICAgICAgICAgUHl0aG9uIHRocmVhZCBzdGF0ZSBvZiB0aGUgY3VycmVudCB0aHJlYWQuCisKKyAgICAgICAgICAgUHlUaHJlYWRTdGF0ZV9HZXQoKSBkb2Vzbid0IGdpdmUgdGhlIHN0YXRlIG9mIHRoZSB0aHJlYWQgdGhhdCBjYXVzZWQKKyAgICAgICAgICAgdGhlIGZhdWx0IGlmIHRoZSB0aHJlYWQgcmVsZWFzZWQgdGhlIEdJTCwgYW5kIHNvIHRoaXMgZnVuY3Rpb24KKyAgICAgICAgICAgY2Fubm90IGJlIHVzZWQuIFJlYWQgdGhlIHRocmVhZCBsb2NhbCBzdG9yYWdlIChUTFMpIGluc3RlYWQ6IGNhbGwKKyAgICAgICAgICAgUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUoKS4gKi8KKyAgICAgICAgY3VycmVudF90c3RhdGUgPSBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZSgpOworICAgIH0KKworICAgIGlmIChpbnRlcnAgPT0gTlVMTCkgeworICAgICAgICBpZiAoY3VycmVudF90c3RhdGUgPT0gTlVMTCkgeworICAgICAgICAgICAgaW50ZXJwID0gX1B5R0lMU3RhdGVfR2V0SW50ZXJwcmV0ZXJTdGF0ZVVuc2FmZSgpOworICAgICAgICAgICAgaWYgKGludGVycCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgLyogV2UgbmVlZCB0aGUgaW50ZXJwcmV0ZXIgc3RhdGUgdG8gZ2V0IFB5dGhvbiB0aHJlYWRzICovCisgICAgICAgICAgICAgICAgcmV0dXJuICJ1bmFibGUgdG8gZ2V0IHRoZSBpbnRlcnByZXRlciBzdGF0ZSI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpbnRlcnAgPSBjdXJyZW50X3RzdGF0ZS0+aW50ZXJwOworICAgICAgICB9CisgICAgfQorI2Vsc2UKKyAgICBpZiAoY3VycmVudF90c3RhdGUgPT0gTlVMTCkgeworICAgICAgICAvKiBDYWxsIF9QeVRocmVhZFN0YXRlX1VuY2hlY2tlZEdldCgpIGluc3RlYWQgb2YgUHlUaHJlYWRTdGF0ZV9HZXQoKQorICAgICAgICAgICB0byBub3QgZmFpbCB3aXRoIGEgZmF0YWwgZXJyb3IgaWYgdGhlIHRocmVhZCBzdGF0ZSBpcyBOVUxMLiAqLworICAgICAgICBjdXJyZW50X3RzdGF0ZSA9IF9QeVRocmVhZFN0YXRlX1VuY2hlY2tlZEdldCgpOworICAgIH0KKworICAgIGlmIChpbnRlcnAgPT0gTlVMTCkgeworICAgICAgICBpZiAoY3VycmVudF90c3RhdGUgPT0gTlVMTCkgeworICAgICAgICAgICAgLyogV2UgbmVlZCB0aGUgaW50ZXJwcmV0ZXIgc3RhdGUgdG8gZ2V0IFB5dGhvbiB0aHJlYWRzICovCisgICAgICAgICAgICByZXR1cm4gInVuYWJsZSB0byBnZXQgdGhlIGludGVycHJldGVyIHN0YXRlIjsKKyAgICAgICAgfQorICAgICAgICBpbnRlcnAgPSBjdXJyZW50X3RzdGF0ZS0+aW50ZXJwOworICAgIH0KKyNlbmRpZgorICAgIGFzc2VydChpbnRlcnAgIT0gTlVMTCk7CisKICAgICAvKiBHZXQgdGhlIGN1cnJlbnQgaW50ZXJwcmV0ZXIgZnJvbSB0aGUgY3VycmVudCB0aHJlYWQgKi8KICAgICB0c3RhdGUgPSBQeUludGVycHJldGVyU3RhdGVfVGhyZWFkSGVhZChpbnRlcnApOwogICAgIGlmICh0c3RhdGUgPT0gTlVMTCkKQEAgLTczMiw3ICs4MTEsNyBAQAogICAgICAgICAgICAgUFVUUyhmZCwgIi4uLlxuIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICB3cml0ZV90aHJlYWRfaWQoZmQsIHRzdGF0ZSwgdHN0YXRlID09IGN1cnJlbnRfdGhyZWFkKTsKKyAgICAgICAgd3JpdGVfdGhyZWFkX2lkKGZkLCB0c3RhdGUsIHRzdGF0ZSA9PSBjdXJyZW50X3RzdGF0ZSk7CiAgICAgICAgIGR1bXBfdHJhY2ViYWNrKGZkLCB0c3RhdGUsIDApOwogICAgICAgICB0c3RhdGUgPSBQeVRocmVhZFN0YXRlX05leHQodHN0YXRlKTsKICAgICAgICAgbnRocmVhZHMrKzsKZGlmZiAtLWdpdCBhL1B5dGhvbi93b3JkY29kZV9oZWxwZXJzLmggYi9QeXRob24vd29yZGNvZGVfaGVscGVycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwZTNhOTEKLS0tIC9kZXYvbnVsbAorKysgYi9QeXRob24vd29yZGNvZGVfaGVscGVycy5oCkBAIC0wLDAgKzEsNDEgQEAKKy8qIFRoaXMgZmlsZSBjb250YWlucyBjb2RlIHNoYXJlZCBieSB0aGUgY29tcGlsZXIgYW5kIHRoZSBwZWVwaG9sZQorICAgb3B0aW1pemVyLgorICovCisKKyNpZmRlZiBXT1JEU19CSUdFTkRJQU4KKyMgIGRlZmluZSBQQUNLT1BBUkcob3Bjb2RlLCBvcGFyZykgKChfUHlfQ09ERVVOSVQpKCgob3Bjb2RlKSA8PCA4KSB8IChvcGFyZykpKQorI2Vsc2UKKyMgIGRlZmluZSBQQUNLT1BBUkcob3Bjb2RlLCBvcGFyZykgKChfUHlfQ09ERVVOSVQpKCgob3BhcmcpIDw8IDgpIHwgKG9wY29kZSkpKQorI2VuZGlmCisKKy8qIE1pbmltdW0gbnVtYmVyIG9mIGNvZGUgdW5pdHMgbmVjZXNzYXJ5IHRvIGVuY29kZSBpbnN0cnVjdGlvbiB3aXRoCisgICBFWFRFTkRFRF9BUkdzICovCitzdGF0aWMgaW50CitpbnN0cnNpemUodW5zaWduZWQgaW50IG9wYXJnKQoreworICAgIHJldHVybiBvcGFyZyA8PSAweGZmID8gMSA6CisgICAgICAgIG9wYXJnIDw9IDB4ZmZmZiA/IDIgOgorICAgICAgICBvcGFyZyA8PSAweGZmZmZmZiA/IDMgOgorICAgICAgICA0OworfQorCisvKiBTcGl0cyBvdXQgb3Avb3BhcmcgcGFpciB1c2luZyBpbGVuIGJ5dGVzLiBjb2Rlc3RyIHNob3VsZCBiZSBwb2ludGVkIGF0IHRoZQorICAgZGVzaXJlZCBsb2NhdGlvbiBvZiB0aGUgZmlyc3QgRVhURU5ERURfQVJHICovCitzdGF0aWMgdm9pZAord3JpdGVfb3BfYXJnKF9QeV9DT0RFVU5JVCAqY29kZXN0ciwgdW5zaWduZWQgY2hhciBvcGNvZGUsCisgICAgdW5zaWduZWQgaW50IG9wYXJnLCBpbnQgaWxlbikKK3sKKyAgICBzd2l0Y2ggKGlsZW4pIHsKKyAgICAgICAgY2FzZSA0OgorICAgICAgICAgICAgKmNvZGVzdHIrKyA9IFBBQ0tPUEFSRyhFWFRFTkRFRF9BUkcsIChvcGFyZyA+PiAyNCkgJiAweGZmKTsKKyAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgKmNvZGVzdHIrKyA9IFBBQ0tPUEFSRyhFWFRFTkRFRF9BUkcsIChvcGFyZyA+PiAxNikgJiAweGZmKTsKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgKmNvZGVzdHIrKyA9IFBBQ0tPUEFSRyhFWFRFTkRFRF9BUkcsIChvcGFyZyA+PiA4KSAmIDB4ZmYpOworICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAqY29kZXN0cisrID0gUEFDS09QQVJHKG9wY29kZSwgb3BhcmcgJiAweGZmKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYXNzZXJ0KDApOworICAgIH0KK30KZGlmZiAtLWdpdCBhL1JFQURNRSBiL1JFQURNRQppbmRleCA0OWZiZjNhLi5mODMzYzE0IDEwMDY0NAotLS0gYS9SRUFETUUKKysrIGIvUkVBRE1FCkBAIC0xLDQgKzEsNCBAQAotVGhpcyBpcyBQeXRob24gdmVyc2lvbiAzLjUuMyByZWxlYXNlIGNhbmRpZGF0ZSAxCitUaGlzIGlzIFB5dGhvbiB2ZXJzaW9uIDMuNi4wIHJlbGVhc2UgY2FuZGlkYXRlIDEKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEsCkBAIC0yOCw5ICsyOCw5IEBACiBlbHNld2hlcmUgaXQncyBqdXN0IHB5dGhvbi4KIAogT24gTWFjIE9TIFgsIGlmIHlvdSBoYXZlIGNvbmZpZ3VyZWQgUHl0aG9uIHdpdGggLS1lbmFibGUtZnJhbWV3b3JrLCB5b3Ugc2hvdWxkCi11c2UgIm1ha2UgZnJhbWV3b3JraW5zdGFsbCIgdG8gZG8gdGhlIGluc3RhbGxhdGlvbi4gIE5vdGUgdGhhdCB0aGlzIGluc3RhbGxzCi10aGUgUHl0aG9uIGV4ZWN1dGFibGUgaW4gYSBwbGFjZSB0aGF0IGlzIG5vdCBub3JtYWxseSBvbiB5b3VyIFBBVEgsIHlvdSBtYXkKLXdhbnQgdG8gc2V0IHVwIGEgc3ltbGluayBpbiAvdXNyL2xvY2FsL2Jpbi4KK3VzZSAibWFrZSBmcmFtZXdvcmtpbnN0YWxsIiB0byBkbyB0aGUgaW5zdGFsbGF0aW9uLiAgTm90ZSB0aGF0IHRoaXMgaW5zdGFsbHMgdGhlCitQeXRob24gZXhlY3V0YWJsZSBpbiBhIHBsYWNlIHRoYXQgaXMgbm90IG5vcm1hbGx5IG9uIHlvdXIgUEFUSCwgeW91IG1heSB3YW50IHRvCitzZXQgdXAgYSBzeW1saW5rIGluIC91c3IvbG9jYWwvYmluLgogCiBPbiBXaW5kb3dzLCBzZWUgUENidWlsZC9yZWFkbWUudHh0LgogCkBAIC04OSw5ICs4OSw5IEBACiAtLS0tLS0tLS0tCiAKIFdlIGhhdmUgYSBjb21wcmVoZW5zaXZlIG92ZXJ2aWV3IG9mIHRoZSBjaGFuZ2VzIGluIHRoZSAiV2hhdCdzIE5ldyBpbgotUHl0aG9uIDMuNSIgZG9jdW1lbnQsIGZvdW5kIGF0CitQeXRob24gMy42IiBkb2N1bWVudCwgZm91bmQgYXQKIAotICAgIGh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvMy41L3doYXRzbmV3LzMuNS5odG1sCisgICAgaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy42L3doYXRzbmV3LzMuNi5odG1sCiAKIEZvciBhIG1vcmUgZGV0YWlsZWQgY2hhbmdlIGxvZywgcmVhZCBNaXNjL05FV1MgKHRob3VnaCB0aGlzIGZpbGUsIHRvbywKIGlzIGluY29tcGxldGUsIGFuZCBhbHNvIGRvZXNuJ3QgbGlzdCBhbnl0aGluZyBtZXJnZWQgaW4gZnJvbSB0aGUgMi43CkBAIC0xMDQsOSArMTA0LDkgQEAKIERvY3VtZW50YXRpb24KIC0tLS0tLS0tLS0tLS0KIAotRG9jdW1lbnRhdGlvbiBmb3IgUHl0aG9uIDMuNSBpcyBvbmxpbmUsIHVwZGF0ZWQgZGFpbHk6CitEb2N1bWVudGF0aW9uIGZvciBQeXRob24gMy42IGlzIG9ubGluZSwgdXBkYXRlZCBkYWlseToKIAotICAgIGh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvMy41LworICAgIGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMuNi8KIAogSXQgY2FuIGFsc28gYmUgZG93bmxvYWRlZCBpbiBtYW55IGZvcm1hdHMgZm9yIGZhc3RlciBhY2Nlc3MuICBUaGUgZG9jdW1lbnRhdGlvbgogaXMgZG93bmxvYWRhYmxlIGluIEhUTUwsIFBERiwgYW5kIHJlU3RydWN0dXJlZFRleHQgZm9ybWF0czsgdGhlIGxhdHRlciB2ZXJzaW9uCkBAIC0xMTYsNyArMTE2LDcgQEAKIElmIHlvdSB3b3VsZCBsaWtlIHRvIGNvbnRyaWJ1dGUgdG8gdGhlIGRldmVsb3BtZW50IG9mIFB5dGhvbiwgcmVsZXZhbnQKIGRvY3VtZW50YXRpb24gaXMgYXZhaWxhYmxlIGF0OgogCi0gICAgaHR0cDovL2RvY3MucHl0aG9uLm9yZy9kZXZndWlkZS8KKyAgICBodHRwczovL2RvY3MucHl0aG9uLm9yZy9kZXZndWlkZS8KIAogRm9yIGluZm9ybWF0aW9uIGFib3V0IGJ1aWxkaW5nIFB5dGhvbidzIGRvY3VtZW50YXRpb24sIHJlZmVyIHRvIERvYy9SRUFETUUudHh0LgogCkBAIC0xMzEsNyArMTMxLDcgQEAKIEEgc291cmNlLXRvLXNvdXJjZSB0cmFuc2xhdGlvbiB0b29sLCAiMnRvMyIsIGNhbiB0YWtlIGNhcmUgb2YgdGhlIG11bmRhbmUgdGFzawogb2YgY29udmVydGluZyBsYXJnZSBhbW91bnRzIG9mIHNvdXJjZSBjb2RlLiAgSXQgaXMgbm90IGEgY29tcGxldGUgc29sdXRpb24gYnV0CiBpcyBjb21wbGVtZW50ZWQgYnkgdGhlIGRlcHJlY2F0aW9uIHdhcm5pbmdzIGluIDIuNi4gIFNlZQotaHR0cDovL2RvY3MucHl0aG9uLm9yZy8zLjUvbGlicmFyeS8ydG8zLmh0bWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uCitodHRwczovL2RvY3MucHl0aG9uLm9yZy8zLjYvbGlicmFyeS8ydG8zLmh0bWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAKIAogVGVzdGluZwpAQCAtMTYxLDE2ICsxNjEsMTYgQEAKIAogT24gVW5peCBhbmQgTWFjIHN5c3RlbXMgaWYgeW91IGludGVuZCB0byBpbnN0YWxsIG11bHRpcGxlIHZlcnNpb25zIG9mIFB5dGhvbgogdXNpbmcgdGhlIHNhbWUgaW5zdGFsbGF0aW9uIHByZWZpeCAoLS1wcmVmaXggYXJndW1lbnQgdG8gdGhlIGNvbmZpZ3VyZSBzY3JpcHQpCi15b3UgbXVzdCB0YWtlIGNhcmUgdGhhdCB5b3VyIHByaW1hcnkgcHl0aG9uIGV4ZWN1dGFibGUgaXMgbm90IG92ZXJ3cml0dGVuIGJ5Ci10aGUgaW5zdGFsbGF0aW9uIG9mIGEgZGlmZmVyZW50IHZlcnNpb24uICBBbGwgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIGluc3RhbGxlZAotdXNpbmcgIm1ha2UgYWx0aW5zdGFsbCIgY29udGFpbiB0aGUgbWFqb3IgYW5kIG1pbm9yIHZlcnNpb24gYW5kIGNhbiB0aHVzIGxpdmUKLXNpZGUtYnktc2lkZS4gICJtYWtlIGluc3RhbGwiIGFsc28gY3JlYXRlcyAke3ByZWZpeH0vYmluL3B5dGhvbjMgd2hpY2ggcmVmZXJzCi10byAke3ByZWZpeH0vYmluL3B5dGhvblguWS4gIElmIHlvdSBpbnRlbmQgdG8gaW5zdGFsbCBtdWx0aXBsZSB2ZXJzaW9ucyB1c2luZwotdGhlIHNhbWUgcHJlZml4IHlvdSBtdXN0IGRlY2lkZSB3aGljaCB2ZXJzaW9uIChpZiBhbnkpIGlzIHlvdXIgInByaW1hcnkiCi12ZXJzaW9uLiAgSW5zdGFsbCB0aGF0IHZlcnNpb24gdXNpbmcgIm1ha2UgaW5zdGFsbCIuICBJbnN0YWxsIGFsbCBvdGhlcgotdmVyc2lvbnMgdXNpbmcgIm1ha2UgYWx0aW5zdGFsbCIuCit5b3UgbXVzdCB0YWtlIGNhcmUgdGhhdCB5b3VyIHByaW1hcnkgcHl0aG9uIGV4ZWN1dGFibGUgaXMgbm90IG92ZXJ3cml0dGVuIGJ5IHRoZQoraW5zdGFsbGF0aW9uIG9mIGEgZGlmZmVyZW50IHZlcnNpb24uICBBbGwgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIGluc3RhbGxlZCB1c2luZworIm1ha2UgYWx0aW5zdGFsbCIgY29udGFpbiB0aGUgbWFqb3IgYW5kIG1pbm9yIHZlcnNpb24gYW5kIGNhbiB0aHVzIGxpdmUKK3NpZGUtYnktc2lkZS4gICJtYWtlIGluc3RhbGwiIGFsc28gY3JlYXRlcyAke3ByZWZpeH0vYmluL3B5dGhvbjMgd2hpY2ggcmVmZXJzIHRvCiske3ByZWZpeH0vYmluL3B5dGhvblguWS4gIElmIHlvdSBpbnRlbmQgdG8gaW5zdGFsbCBtdWx0aXBsZSB2ZXJzaW9ucyB1c2luZyB0aGUKK3NhbWUgcHJlZml4IHlvdSBtdXN0IGRlY2lkZSB3aGljaCB2ZXJzaW9uIChpZiBhbnkpIGlzIHlvdXIgInByaW1hcnkiIHZlcnNpb24uCitJbnN0YWxsIHRoYXQgdmVyc2lvbiB1c2luZyAibWFrZSBpbnN0YWxsIi4gIEluc3RhbGwgYWxsIG90aGVyIHZlcnNpb25zIHVzaW5nCisibWFrZSBhbHRpbnN0YWxsIi4KIAotRm9yIGV4YW1wbGUsIGlmIHlvdSB3YW50IHRvIGluc3RhbGwgUHl0aG9uIDIuNiwgMi43IGFuZCAzLjUgd2l0aCAyLjcgYmVpbmcgdGhlCitGb3IgZXhhbXBsZSwgaWYgeW91IHdhbnQgdG8gaW5zdGFsbCBQeXRob24gMi42LCAyLjcgYW5kIDMuNiB3aXRoIDIuNyBiZWluZyB0aGUKIHByaW1hcnkgdmVyc2lvbiwgeW91IHdvdWxkIGV4ZWN1dGUgIm1ha2UgaW5zdGFsbCIgaW4geW91ciAyLjcgYnVpbGQgZGlyZWN0b3J5CiBhbmQgIm1ha2UgYWx0aW5zdGFsbCIgaW4gdGhlIG90aGVycy4KIApAQCAtMTgxLDcgKzE4MSw3IEBACiBXZSdyZSBzb2xpY2l0aW5nIGJ1ZyByZXBvcnRzIGFib3V0IGFsbCBhc3BlY3RzIG9mIHRoZSBsYW5ndWFnZS4gIEZpeGVzIGFyZSBhbHNvCiB3ZWxjb21lLCBwcmVmZXJhYmx5IGluIHVuaWZpZWQgZGlmZiBmb3JtYXQuICBQbGVhc2UgdXNlIHRoZSBpc3N1ZSB0cmFja2VyOgogCi0gICAgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy8KKyAgICBodHRwczovL2J1Z3MucHl0aG9uLm9yZy8KIAogSWYgeW91J3JlIG5vdCBzdXJlIHdoZXRoZXIgeW91J3JlIGRlYWxpbmcgd2l0aCBhIGJ1ZyBvciBhIGZlYXR1cmUsIHVzZSB0aGUKIG1haWxpbmcgbGlzdDoKQEAgLTE5MCwyMyArMTkwLDIzIEBACiAKIFRvIHN1YnNjcmliZSB0byB0aGUgbGlzdCwgdXNlIHRoZSBtYWlsbWFuIGZvcm06CiAKLSAgICBodHRwOi8vbWFpbC5weXRob24ub3JnL21haWxtYW4vbGlzdGluZm8vcHl0aG9uLWRldi8KKyAgICBodHRwczovL21haWwucHl0aG9uLm9yZy9tYWlsbWFuL2xpc3RpbmZvL3B5dGhvbi1kZXYvCiAKIAogUHJvcG9zYWxzIGZvciBlbmhhbmNlbWVudAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBJZiB5b3UgaGF2ZSBhIHByb3Bvc2FsIHRvIGNoYW5nZSBQeXRob24sIHlvdSBtYXkgd2FudCB0byBzZW5kIGFuIGVtYWlsIHRvIHRoZQotY29tcC5sYW5nLnB5dGhvbiBvciBweXRob24taWRlYXMgbWFpbGluZyBsaXN0cyBmb3IgaW5pdGFsIGZlZWRiYWNrLiAgQSBQeXRob24KK2NvbXAubGFuZy5weXRob24gb3IgcHl0aG9uLWlkZWFzIG1haWxpbmcgbGlzdHMgZm9yIGluaXRpYWwgZmVlZGJhY2suICBBIFB5dGhvbgogRW5oYW5jZW1lbnQgUHJvcG9zYWwgKFBFUCkgbWF5IGJlIHN1Ym1pdHRlZCBpZiB5b3VyIGlkZWEgZ2FpbnMgZ3JvdW5kLiAgQWxsCiBjdXJyZW50IFBFUHMsIGFzIHdlbGwgYXMgZ3VpZGVsaW5lcyBmb3Igc3VibWl0dGluZyBhIG5ldyBQRVAsIGFyZSBsaXN0ZWQgYXQKLWh0dHA6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVwcy8uCitodHRwczovL3d3dy5weXRob24ub3JnL2Rldi9wZXBzLy4KIAogCiBSZWxlYXNlIFNjaGVkdWxlCiAtLS0tLS0tLS0tLS0tLS0tCiAKLVNlZSBQRVAgNDc4IGZvciByZWxlYXNlIGRldGFpbHM6IGh0dHA6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVwcy9wZXAtMDQ3OC8KK1NlZSBQRVAgNDk0IGZvciByZWxlYXNlIGRldGFpbHM6IGh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTA0OTQvCiAKIAogQ29weXJpZ2h0IGFuZCBMaWNlbnNlIEluZm9ybWF0aW9uCkBAIC0yMzAsMyArMjMwLDQgQEAKIGNvZGUgYnV0IHRoZXNlIGFyZSBlbnRpcmVseSBvcHRpb25hbC4KIAogQWxsIHRyYWRlbWFya3MgcmVmZXJlbmNlZCBoZXJlaW4gYXJlIHByb3BlcnR5IG9mIHRoZWlyIHJlc3BlY3RpdmUgaG9sZGVycy4KKwpkaWZmIC0tZ2l0IGEvVG9vbHMvYnVpbGRib3QvYnVpbGQtYW1kNjQuYmF0IGIvVG9vbHMvYnVpbGRib3QvYnVpbGQtYW1kNjQuYmF0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzc0MDdiLi4wMDAwMDAwCi0tLSBhL1Rvb2xzL2J1aWxkYm90L2J1aWxkLWFtZDY0LmJhdAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotQHJlbSBGb3JtZXJseSB1c2VkIGJ5IHRoZSBidWlsZGJvdCAiY29tcGlsZSIgc3RlcC4NCi1AZWNobyBUaGlzIHNjcmlwdCBpcyBubyBsb25nZXIgdXNlZCBhbmQgbWF5IGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZS4NCi1AZWNobyBUbyBnZXQgdGhlIHNhbWUgZWZmZWN0IGFzIHRoaXMgc2NyaXB0LCB1c2UNCi1AZWNobyAgICAgUENidWlsZFxidWlsZC5iYXQgLWQgLWUgLWsgLXAgeDY0DQotY2FsbCAiJX5kcDBidWlsZC5iYXQiIC1wIHg2NCAlKg0KZGlmZiAtLWdpdCBhL1Rvb2xzL2J1aWxkYm90L2NsZWFuLWFtZDY0LmJhdCBiL1Rvb2xzL2J1aWxkYm90L2NsZWFuLWFtZDY0LmJhdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjUzYzdjMS4uMDAwMDAwMAotLS0gYS9Ub29scy9idWlsZGJvdC9jbGVhbi1hbWQ2NC5iYXQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLUByZW0gRm9ybWVybHkgdXNlZCBieSB0aGUgYnVpbGRib3QgImNsZWFuIiBzdGVwLg0KLUBlY2hvIFRoaXMgc2NyaXB0IGlzIG5vIGxvbmdlciB1c2VkIGFuZCBtYXkgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLg0KLUBlY2hvIFRvIGdldCB0aGUgc2FtZSBlZmZlY3QgYXMgdGhpcyBzY3JpcHQsIHVzZSBgY2xlYW4uYmF0YCBmcm9tIHRoaXMNCi1AZWNobyBkaXJlY3RvcnkgYW5kIHBhc3MgYC1wIHg2NGAgYXMgdHdvIGFyZ3VtZW50cy4NCi1jYWxsICIlfmRwMGNsZWFuLmJhdCIgLXAgeDY0ICUqDQpkaWZmIC0tZ2l0IGEvVG9vbHMvYnVpbGRib3QvY2xlYW4uYmF0IGIvVG9vbHMvYnVpbGRib3QvY2xlYW4uYmF0CmluZGV4IDBmYzY4ZmQuLjEzZTY2NzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2J1aWxkYm90L2NsZWFuLmJhdAorKysgYi9Ub29scy9idWlsZGJvdC9jbGVhbi5iYXQKQEAgLTE0LDMgKzE0LDQgQEAKIA0KIGVjaG8gRGVsZXRpbmcgdGVzdCBsZWZ0b3ZlcnMgLi4uDQogcm1kaXIgL3MgL3EgIiVyb290JVxidWlsZCINCitkZWwgL3MgIiVwY2J1aWxkJVxweXRob24qLnppcCINCmRpZmYgLS1naXQgYS9Ub29scy9idWlsZGJvdC9leHRlcm5hbC1hbWQ2NC5iYXQgYi9Ub29scy9idWlsZGJvdC9leHRlcm5hbC1hbWQ2NC5iYXQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmYWVmMDUuLjAwMDAwMDAKLS0tIGEvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwtYW1kNjQuYmF0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1AZWNobyBUaGlzIHNjcmlwdCBpcyBubyBsb25nZXIgdXNlZCBhbmQgbWF5IGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZS4NCi1AZWNobyBQbGVhc2UgdXNlIFBDYnVpbGRcZ2V0X2V4dGVybmFscy5iYXQgaW5zdGVhZC4NCi1AIiV+ZHAwLi5cLi5cUENidWlsZFxnZXRfZXh0ZXJuYWxzLmJhdCIgJSoNCmRpZmYgLS1naXQgYS9Ub29scy9idWlsZGJvdC9leHRlcm5hbC5iYXQgYi9Ub29scy9idWlsZGJvdC9leHRlcm5hbC5iYXQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmYWVmMDUuLjAwMDAwMDAKLS0tIGEvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwuYmF0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1AZWNobyBUaGlzIHNjcmlwdCBpcyBubyBsb25nZXIgdXNlZCBhbmQgbWF5IGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZS4NCi1AZWNobyBQbGVhc2UgdXNlIFBDYnVpbGRcZ2V0X2V4dGVybmFscy5iYXQgaW5zdGVhZC4NCi1AIiV+ZHAwLi5cLi5cUENidWlsZFxnZXRfZXh0ZXJuYWxzLmJhdCIgJSoNCmRpZmYgLS1naXQgYS9Ub29scy9idWlsZGJvdC90ZXN0LWFtZDY0LmJhdCBiL1Rvb2xzL2J1aWxkYm90L3Rlc3QtYW1kNjQuYmF0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNDgzMjljLi4wMDAwMDAwCi0tLSBhL1Rvb2xzL2J1aWxkYm90L3Rlc3QtYW1kNjQuYmF0CisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1AcmVtIEZvcm1lcmx5IHVzZWQgYnkgdGhlIGJ1aWxkYm90ICJ0ZXN0IiBzdGVwLg0KLUBlY2hvIFRoaXMgc2NyaXB0IGlzIG5vIGxvbmdlciB1c2VkIGFuZCBtYXkgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLg0KLUBlY2hvIFRvIGdldCB0aGUgc2FtZSBlZmZlY3QgYXMgdGhpcyBzY3JpcHQsIHVzZQ0KLUBlY2hvICAgICBQQ2J1aWxkXHJ0LmJhdCAtcSAtZCAteDY0IC11YWxsIC1yd1cNCi1AZWNobyBvciB1c2UgYHRlc3QuYmF0YCBpbiB0aGlzIGRpcmVjdG9yeSBhbmQgcGFzcyBgLXg2NGAgYXMgYW4gYXJndW1lbnQuDQotY2FsbCAiJX5kcDB0ZXN0LmJhdCIgLXg2NCAlKg0KZGlmZiAtLWdpdCBhL1Rvb2xzL2J1aWxkYm90L3Rlc3QuYmF0IGIvVG9vbHMvYnVpbGRib3QvdGVzdC5iYXQKaW5kZXggZmY3ZDE2Ny4uYTMyZDM4YiAxMDA2NDQKLS0tIGEvVG9vbHMvYnVpbGRib3QvdGVzdC5iYXQKKysrIGIvVG9vbHMvYnVpbGRib3QvdGVzdC5iYXQKQEAgLTQsNyArNCw3IEBACiANCiBzZXQgaGVyZT0lfmRwMA0KIHNldCBydF9vcHRzPS1xIC1kDQotc2V0IHJlZ3J0ZXN0X2FyZ3M9DQorc2V0IHJlZ3J0ZXN0X2FyZ3M9LWoxDQogDQogOkNoZWNrT3B0cw0KIGlmICIlMSI9PSIteDY0IiAoc2V0IHJ0X29wdHM9JXJ0X29wdHMlICUxKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCkBAIC0xNiw0ICsxNiw0IEBACiBpZiBOT1QgIiUxIj09IiIgKHNldCByZWdydGVzdF9hcmdzPSVyZWdydGVzdF9hcmdzJSAlMSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQogDQogZWNobyBvbg0KLWNhbGwgIiVoZXJlJS4uXC4uXFBDYnVpbGRccnQuYmF0IiAlcnRfb3B0cyUgLXVhbGwgLXJ3VyAtLXRpbWVvdXQ9MzYwMCAlcmVncnRlc3RfYXJncyUNCitjYWxsICIlaGVyZSUuLlwuLlxQQ2J1aWxkXHJ0LmJhdCIgJXJ0X29wdHMlIC11YWxsIC1yd1cgLS1zbG93ZXN0IC0tdGltZW91dD0xMjAwICVyZWdydGVzdF9hcmdzJQ0KZGlmZiAtLWdpdCBhL1Rvb2xzL2NsaW5pYy9jbGluaWMucHkgYi9Ub29scy9jbGluaWMvY2xpbmljLnB5CmluZGV4IGY2MTVlZDkuLjc1YWM2NzMgMTAwNzU1Ci0tLSBhL1Rvb2xzL2NsaW5pYy9jbGluaWMucHkKKysrIGIvVG9vbHMvY2xpbmljL2NsaW5pYy5weQpAQCAtNjQ0LDcgKzY0NCw3IEBACiAgICAgICAgIGRlZmF1bHRfcmV0dXJuX2NvbnZlcnRlciA9IChub3QgZi5yZXR1cm5fY29udmVydGVyIG9yCiAgICAgICAgICAgICBmLnJldHVybl9jb252ZXJ0ZXIudHlwZSA9PSAnUHlPYmplY3QgKicpCiAKLSAgICAgICAgcG9zaXRpb25hbCA9IHBhcmFtZXRlcnMgYW5kIChwYXJhbWV0ZXJzWy0xXS5raW5kID09IGluc3BlY3QuUGFyYW1ldGVyLlBPU0lUSU9OQUxfT05MWSkKKyAgICAgICAgcG9zaXRpb25hbCA9IHBhcmFtZXRlcnMgYW5kIHBhcmFtZXRlcnNbLTFdLmlzX3Bvc2l0aW9uYWxfb25seSgpCiAgICAgICAgIGFsbF9ib3Jpbmdfb2JqZWN0cyA9IEZhbHNlICMgeWVzLCB0aGlzIHdpbGwgYmUgZmFsc2UgaWYgdGhlcmUgYXJlIDAgcGFyYW1ldGVycywgaXQncyBmaW5lCiAgICAgICAgIGZpcnN0X29wdGlvbmFsID0gbGVuKHBhcmFtZXRlcnMpCiAgICAgICAgIGZvciBpLCBwIGluIGVudW1lcmF0ZShwYXJhbWV0ZXJzKToKQEAgLTY2MSw3ICs2NjEsNyBAQAogICAgICAgICBuZXdfb3JfaW5pdCA9IGYua2luZCBpbiAoTUVUSE9EX05FVywgTUVUSE9EX0lOSVQpCiAKICAgICAgICAgbWV0aF9vID0gKGxlbihwYXJhbWV0ZXJzKSA9PSAxIGFuZAotICAgICAgICAgICAgICBwYXJhbWV0ZXJzWzBdLmtpbmQgPT0gaW5zcGVjdC5QYXJhbWV0ZXIuUE9TSVRJT05BTF9PTkxZIGFuZAorICAgICAgICAgICAgICBwYXJhbWV0ZXJzWzBdLmlzX3Bvc2l0aW9uYWxfb25seSgpIGFuZAogICAgICAgICAgICAgICBub3QgY29udmVydGVyc1swXS5pc19vcHRpb25hbCgpIGFuZAogICAgICAgICAgICAgICBub3QgbmV3X29yX2luaXQpCiAKQEAgLTcwNSw2ICs3MDUsMTEgQEAKICAgICAgICAgICAgIHtjX2Jhc2VuYW1lfSh7c2VsZl90eXBlfXtzZWxmX25hbWV9LCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKICAgICAgICAgICAgICIiIikKIAorICAgICAgICBwYXJzZXJfcHJvdG90eXBlX2Zhc3RjYWxsID0gbm9ybWFsaXplX3NuaXBwZXQoIiIiCisgICAgICAgICAgICBzdGF0aWMgUHlPYmplY3QgKgorICAgICAgICAgICAge2NfYmFzZW5hbWV9KHtzZWxmX3R5cGV9e3NlbGZfbmFtZX0sIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCisgICAgICAgICAgICAiIiIpCisKICAgICAgICAgcGFyc2VyX3Byb3RvdHlwZV92YXJhcmdzID0gbm9ybWFsaXplX3NuaXBwZXQoIiIiCiAgICAgICAgICAgICBzdGF0aWMgUHlPYmplY3QgKgogICAgICAgICAgICAge2NfYmFzZW5hbWV9KHtzZWxmX3R5cGV9e3NlbGZfbmFtZX0sIFB5T2JqZWN0ICphcmdzKQpAQCAtNzQzLDcgKzc0OCwxMCBAQAogICAgICAgICAgICAgcmV0dXJuIG91dHB1dCgpCiAKICAgICAgICAgZGVmIGluc2VydF9rZXl3b3JkcyhzKToKLSAgICAgICAgICAgIHJldHVybiBsaW5lYXJfZm9ybWF0KHMsIGRlY2xhcmF0aW9ucz0ic3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0ge3t7a2V5d29yZHN9LCBOVUxMfX07XG57ZGVjbGFyYXRpb25zfSIpCisgICAgICAgICAgICByZXR1cm4gbGluZWFyX2Zvcm1hdChzLCBkZWNsYXJhdGlvbnM9CisgICAgICAgICAgICAgICAgJ3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7e3trZXl3b3Jkc30sIE5VTEx9fTtcbicKKyAgICAgICAgICAgICAgICAnc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHt7Intmb3JtYXRfdW5pdHN9OntuYW1lfSIsIF9rZXl3b3JkcywgMH19O1xuJworICAgICAgICAgICAgICAgICd7ZGVjbGFyYXRpb25zfScpCiAKICAgICAgICAgaWYgbm90IHBhcmFtZXRlcnM6CiAgICAgICAgICAgICAjIG5vIHBhcmFtZXRlcnMsIE1FVEhfTk9BUkdTCkBAIC03OTcsOCArODA1LDkgQEAKICAgICAgICAgICAgICAgICAgICAgIiIiICUgYXJnbmFtZSkKIAogICAgICAgICAgICAgICAgIHBhcnNlcl9kZWZpbml0aW9uID0gcGFyc2VyX2JvZHkocGFyc2VyX3Byb3RvdHlwZSwgbm9ybWFsaXplX3NuaXBwZXQoIiIiCi0gICAgICAgICAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2UoJXMsICJ7Zm9ybWF0X3VuaXRzfTp7bmFtZX0iLCB7cGFyc2VfYXJndW1lbnRzfSkpCisgICAgICAgICAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2UoJXMsICJ7Zm9ybWF0X3VuaXRzfTp7bmFtZX0iLCB7cGFyc2VfYXJndW1lbnRzfSkpIHt7CiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICAgICAgICAgIH19CiAgICAgICAgICAgICAgICAgICAgICIiIiAlIGFyZ25hbWUsIGluZGVudD00KSkKIAogICAgICAgICBlbGlmIGhhc19vcHRpb25fZ3JvdXBzOgpAQCAtODIyLDggKzgzMSw5IEBACiAgICAgICAgICAgICBwYXJzZXJfZGVmaW5pdGlvbiA9IHBhcnNlcl9ib2R5KHBhcnNlcl9wcm90b3R5cGUsIG5vcm1hbGl6ZV9zbmlwcGV0KCIiIgogICAgICAgICAgICAgICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgIntuYW1lfSIsCiAgICAgICAgICAgICAgICAgICAgIHt1bnBhY2tfbWlufSwge3VucGFja19tYXh9LAotICAgICAgICAgICAgICAgICAgICB7cGFyc2VfYXJndW1lbnRzfSkpCisgICAgICAgICAgICAgICAgICAgIHtwYXJzZV9hcmd1bWVudHN9KSkge3sKICAgICAgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgICAgIH19CiAgICAgICAgICAgICAgICAgIiIiLCBpbmRlbnQ9NCkpCiAKICAgICAgICAgZWxpZiBwb3NpdGlvbmFsOgpAQCAtODM1LDEwICs4NDUsMjQgQEAKIAogICAgICAgICAgICAgcGFyc2VyX2RlZmluaXRpb24gPSBwYXJzZXJfYm9keShwYXJzZXJfcHJvdG90eXBlLCBub3JtYWxpemVfc25pcHBldCgiIiIKICAgICAgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIntmb3JtYXRfdW5pdHN9OntuYW1lfSIsCi0gICAgICAgICAgICAgICAgICAgIHtwYXJzZV9hcmd1bWVudHN9KSkKKyAgICAgICAgICAgICAgICAgICAge3BhcnNlX2FyZ3VtZW50c30pKSB7ewogICAgICAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICAgICAgfX0KICAgICAgICAgICAgICAgICAiIiIsIGluZGVudD00KSkKIAorICAgICAgICBlbGlmIG5vdCBuZXdfb3JfaW5pdDoKKyAgICAgICAgICAgIGZsYWdzID0gIk1FVEhfRkFTVENBTEwiCisKKyAgICAgICAgICAgIHBhcnNlcl9wcm90b3R5cGUgPSBwYXJzZXJfcHJvdG90eXBlX2Zhc3RjYWxsCisKKyAgICAgICAgICAgIGJvZHkgPSBub3JtYWxpemVfc25pcHBldCgiIiIKKyAgICAgICAgICAgICAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgICAgICAgICAgICAge3BhcnNlX2FyZ3VtZW50c30pKSB7eworICAgICAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICAgICAgfX0KKyAgICAgICAgICAgICAgICAiIiIsIGluZGVudD00KQorICAgICAgICAgICAgcGFyc2VyX2RlZmluaXRpb24gPSBwYXJzZXJfYm9keShwYXJzZXJfcHJvdG90eXBlLCBib2R5KQorICAgICAgICAgICAgcGFyc2VyX2RlZmluaXRpb24gPSBpbnNlcnRfa2V5d29yZHMocGFyc2VyX2RlZmluaXRpb24pCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjIHBvc2l0aW9uYWwtb3Ita2V5d29yZCBhcmd1bWVudHMKICAgICAgICAgICAgIGZsYWdzID0gIk1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTIgpAQCAtODQ2LDE1ICs4NzAsMTIgQEAKICAgICAgICAgICAgIHBhcnNlcl9wcm90b3R5cGUgPSBwYXJzZXJfcHJvdG90eXBlX2tleXdvcmQKIAogICAgICAgICAgICAgYm9keSA9IG5vcm1hbGl6ZV9zbmlwcGV0KCIiIgotICAgICAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIntmb3JtYXRfdW5pdHN9OntuYW1lfSIsIF9rZXl3b3JkcywKLSAgICAgICAgICAgICAgICAgICAge3BhcnNlX2FyZ3VtZW50c30pKQorICAgICAgICAgICAgICAgIGlmICghX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoYXJncywga3dhcmdzLCAmX3BhcnNlciwKKyAgICAgICAgICAgICAgICAgICAge3BhcnNlX2FyZ3VtZW50c30pKSB7ewogICAgICAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgICAgICAgICAiIiIsIGluZGVudD00KQotICAgICAgICAgICAgcGFyc2VyX2RlZmluaXRpb24gPSBwYXJzZXJfYm9keShwYXJzZXJfcHJvdG90eXBlLCBub3JtYWxpemVfc25pcHBldCgiIiIKLSAgICAgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ7Zm9ybWF0X3VuaXRzfTp7bmFtZX0iLCBfa2V5d29yZHMsCi0gICAgICAgICAgICAgICAgICAgIHtwYXJzZV9hcmd1bWVudHN9KSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBleGl0OwotICAgICAgICAgICAgICAgICIiIiwgaW5kZW50PTQpKQorICAgICAgICAgICAgICAgIH19CisgICAgICAgICAgICAgICAgIiIiLCBpbmRlbnQ9NCkKKyAgICAgICAgICAgIHBhcnNlcl9kZWZpbml0aW9uID0gcGFyc2VyX2JvZHkocGFyc2VyX3Byb3RvdHlwZSwgYm9keSkKICAgICAgICAgICAgIHBhcnNlcl9kZWZpbml0aW9uID0gaW5zZXJ0X2tleXdvcmRzKHBhcnNlcl9kZWZpbml0aW9uKQogCiAKQEAgLTg3OCwxMyArODk5LDE1IEBACiAKICAgICAgICAgICAgIGlmIG5vdCBwYXJzZXNfa2V5d29yZHM6CiAgICAgICAgICAgICAgICAgZmllbGRzLmluc2VydCgwLCBub3JtYWxpemVfc25pcHBldCgiIiIKLSAgICAgICAgICAgICAgICAgICAgaWYgKHtzZWxmX3R5cGVfY2hlY2t9IV9QeUFyZ19Ob0tleXdvcmRzKCJ7bmFtZX0iLCBrd2FyZ3MpKQorICAgICAgICAgICAgICAgICAgICBpZiAoe3NlbGZfdHlwZV9jaGVja30hX1B5QXJnX05vS2V5d29yZHMoIntuYW1lfSIsIGt3YXJncykpIHt7CiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICAgICAgICAgIH19CiAgICAgICAgICAgICAgICAgICAgICIiIiwgaW5kZW50PTQpKQogICAgICAgICAgICAgICAgIGlmIG5vdCBwYXJzZXNfcG9zaXRpb25hbDoKICAgICAgICAgICAgICAgICAgICAgZmllbGRzLmluc2VydCgwLCBub3JtYWxpemVfc25pcHBldCgiIiIKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh7c2VsZl90eXBlX2NoZWNrfSFfUHlBcmdfTm9Qb3NpdGlvbmFsKCJ7bmFtZX0iLCBhcmdzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh7c2VsZl90eXBlX2NoZWNrfSFfUHlBcmdfTm9Qb3NpdGlvbmFsKCJ7bmFtZX0iLCBhcmdzKSkge3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICAgICAgICAgICAgICB9fQogICAgICAgICAgICAgICAgICAgICAgICAgIiIiLCBpbmRlbnQ9NCkpCiAKICAgICAgICAgICAgIHBhcnNlcl9kZWZpbml0aW9uID0gcGFyc2VyX2JvZHkocGFyc2VyX3Byb3RvdHlwZSwgKmZpZWxkcykKQEAgLTEwMzIsOCArMTA1NSw5IEBACiAKICAgICAgICAgICAgIHMgPSAiIiIKICAgICBjYXNlIHtjb3VudH06Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAie2Zvcm1hdF91bml0c306e25hbWV9Iiwge3BhcnNlX2FyZ3VtZW50c30pKQorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIntmb3JtYXRfdW5pdHN9OntuYW1lfSIsIHtwYXJzZV9hcmd1bWVudHN9KSkge3sKICAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgfX0KICAgICAgICAge2dyb3VwX2Jvb2xlYW5zfQogICAgICAgICBicmVhazsKICIiIlsxOl0KQEAgLTEwNjcsNyArMTA5MSw3IEBACiAKICAgICAgICAgbGFzdF9ncm91cCA9IDAKICAgICAgICAgZmlyc3Rfb3B0aW9uYWwgPSBsZW4oc2VsZmxlc3MpCi0gICAgICAgIHBvc2l0aW9uYWwgPSBzZWxmbGVzcyBhbmQgc2VsZmxlc3NbLTFdLmtpbmQgPT0gaW5zcGVjdC5QYXJhbWV0ZXIuUE9TSVRJT05BTF9PTkxZCisgICAgICAgIHBvc2l0aW9uYWwgPSBzZWxmbGVzcyBhbmQgc2VsZmxlc3NbLTFdLmlzX3Bvc2l0aW9uYWxfb25seSgpCiAgICAgICAgIG5ld19vcl9pbml0ID0gZi5raW5kIGluIChNRVRIT0RfTkVXLCBNRVRIT0RfSU5JVCkKICAgICAgICAgZGVmYXVsdF9yZXR1cm5fY29udmVydGVyID0gKG5vdCBmLnJldHVybl9jb252ZXJ0ZXIgb3IKICAgICAgICAgICAgIGYucmV0dXJuX2NvbnZlcnRlci50eXBlID09ICdQeU9iamVjdCAqJykKQEAgLTEyMTYsNyArMTI0MCw3IEBACiAKIGRlZiBjcmVhdGVfcmVnZXgoYmVmb3JlLCBhZnRlciwgd29yZD1UcnVlLCB3aG9sZV9saW5lPVRydWUpOgogICAgICIiIkNyZWF0ZSBhbiByZSBvYmplY3QgZm9yIG1hdGNoaW5nIG1hcmtlciBsaW5lcy4iIiIKLSAgICBncm91cF9yZSA9ICJcdysiIGlmIHdvcmQgZWxzZSAiLisiCisgICAgZ3JvdXBfcmUgPSByIlx3KyIgaWYgd29yZCBlbHNlICIuKyIKICAgICBwYXR0ZXJuID0gcid7fSh7fSl7fScKICAgICBpZiB3aG9sZV9saW5lOgogICAgICAgICBwYXR0ZXJuID0gJ14nICsgcGF0dGVybiArICckJwpAQCAtMjM1OSw3ICsyMzgzLDEwIEBACiAgICAgICAgICAgICBkYXRhLm1vZGlmaWNhdGlvbnMuYXBwZW5kKCcvKiBtb2RpZmljYXRpb25zIGZvciAnICsgbmFtZSArICcgKi9cbicgKyBtb2RpZmljYXRpb25zLnJzdHJpcCgpKQogCiAgICAgICAgICMga2V5d29yZHMKLSAgICAgICAgZGF0YS5rZXl3b3Jkcy5hcHBlbmQocGFyYW1ldGVyLm5hbWUpCisgICAgICAgIGlmIHBhcmFtZXRlci5pc19wb3NpdGlvbmFsX29ubHkoKToKKyAgICAgICAgICAgIGRhdGEua2V5d29yZHMuYXBwZW5kKCcnKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZGF0YS5rZXl3b3Jkcy5hcHBlbmQocGFyYW1ldGVyLm5hbWUpCiAKICAgICAgICAgIyBmb3JtYXRfdW5pdHMKICAgICAgICAgaWYgc2VsZi5pc19vcHRpb25hbCgpIGFuZCAnfCcgbm90IGluIGRhdGEuZm9ybWF0X3VuaXRzOgpAQCAtMjU3MiwyMSArMjU5OSwyMSBAQAogICAgICAgICBpZiBub3QgYml0d2lzZToKICAgICAgICAgICAgIGZhaWwoIlVuc2lnbmVkIGxvbmdzIG11c3QgYmUgYml0d2lzZSAoZm9yIG5vdykuIikKIAotY2xhc3MgUFlfTE9OR19MT05HX2NvbnZlcnRlcihDQ29udmVydGVyKToKLSAgICB0eXBlID0gJ1BZX0xPTkdfTE9ORycKK2NsYXNzIGxvbmdfbG9uZ19jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CisgICAgdHlwZSA9ICdsb25nIGxvbmcnCiAgICAgZGVmYXVsdF90eXBlID0gaW50CiAgICAgZm9ybWF0X3VuaXQgPSAnTCcKICAgICBjX2lnbm9yZWRfZGVmYXVsdCA9ICIwIgogCi1jbGFzcyB1bnNpZ25lZF9QWV9MT05HX0xPTkdfY29udmVydGVyKENDb252ZXJ0ZXIpOgotICAgIHR5cGUgPSAndW5zaWduZWQgUFlfTE9OR19MT05HJworY2xhc3MgdW5zaWduZWRfbG9uZ19sb25nX2NvbnZlcnRlcihDQ29udmVydGVyKToKKyAgICB0eXBlID0gJ3Vuc2lnbmVkIGxvbmcgbG9uZycKICAgICBkZWZhdWx0X3R5cGUgPSBpbnQKICAgICBmb3JtYXRfdW5pdCA9ICdLJwogICAgIGNfaWdub3JlZF9kZWZhdWx0ID0gIjAiCiAKICAgICBkZWYgY29udmVydGVyX2luaXQoc2VsZiwgKiwgYml0d2lzZT1GYWxzZSk6CiAgICAgICAgIGlmIG5vdCBiaXR3aXNlOgotICAgICAgICAgICAgZmFpbCgiVW5zaWduZWQgUFlfTE9OR19MT05HcyBtdXN0IGJlIGJpdHdpc2UgKGZvciBub3cpLiIpCisgICAgICAgICAgICBmYWlsKCJVbnNpZ25lZCBsb25nIGxvbmcgbXVzdCBiZSBiaXR3aXNlIChmb3Igbm93KS4iKQogCiBjbGFzcyBQeV9zc2l6ZV90X2NvbnZlcnRlcihDQ29udmVydGVyKToKICAgICB0eXBlID0gJ1B5X3NzaXplX3QnCkBAIC0yNjc2LDcgKzI3MDMsNyBAQAogICAgIGRlZiBjbGVhbnVwKHNlbGYpOgogICAgICAgICBpZiBzZWxmLmVuY29kaW5nOgogICAgICAgICAgICAgbmFtZSA9IGVuc3VyZV9sZWdhbF9jX2lkZW50aWZpZXIoc2VsZi5uYW1lKQotICAgICAgICAgICAgcmV0dXJuICIiLmpvaW4oWyJpZiAoIiwgbmFtZSwgIilcbiAgIFB5TWVtX0ZSRUUoIiwgbmFtZSwgIik7XG4iXSkKKyAgICAgICAgICAgIHJldHVybiAiIi5qb2luKFsiaWYgKCIsIG5hbWUsICIpIHtcbiAgIFB5TWVtX0ZSRUUoIiwgbmFtZSwgIik7XG59XG4iXSkKIAogIwogIyBUaGlzIGlzIHRoZSBmb3VydGggb3IgZmlmdGggcmV3cml0ZSBvZiByZWdpc3RlcmluZyBhbGwgdGhlCkBAIC0yNzg2LDcgKzI4MTMsNyBAQAogCiAgICAgZGVmIGNsZWFudXAoc2VsZik6CiAgICAgICAgIG5hbWUgPSBlbnN1cmVfbGVnYWxfY19pZGVudGlmaWVyKHNlbGYubmFtZSkKLSAgICAgICAgcmV0dXJuICIiLmpvaW4oWyJpZiAoIiwgbmFtZSwgIi5vYmopXG4gICBQeUJ1ZmZlcl9SZWxlYXNlKCYiLCBuYW1lLCAiKTtcbiJdKQorICAgICAgICByZXR1cm4gIiIuam9pbihbImlmICgiLCBuYW1lLCAiLm9iaikge1xuICAgUHlCdWZmZXJfUmVsZWFzZSgmIiwgbmFtZSwgIik7XG59XG4iXSkKIAogCiBkZWYgY29ycmVjdF9uYW1lX2Zvcl9zZWxmKGYpOgpAQCAtMjk1OSwxMCArMjk4NiwxMCBAQAogICAgICAgICBkYXRhLnJldHVybl92YWx1ZSA9IG5hbWUKIAogICAgIGRlZiBlcnJfb2NjdXJyZWRfaWYoc2VsZiwgZXhwciwgZGF0YSk6Ci0gICAgICAgIGRhdGEucmV0dXJuX2NvbnZlcnNpb24uYXBwZW5kKCdpZiAoKHt9KSAmJiBQeUVycl9PY2N1cnJlZCgpKVxuICAgIGdvdG8gZXhpdDtcbicuZm9ybWF0KGV4cHIpKQorICAgICAgICBkYXRhLnJldHVybl9jb252ZXJzaW9uLmFwcGVuZCgnaWYgKCh7fSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkge3tcbiAgICBnb3RvIGV4aXQ7XG59fVxuJy5mb3JtYXQoZXhwcikpCiAKICAgICBkZWYgZXJyX29jY3VycmVkX2lmX251bGxfcG9pbnRlcihzZWxmLCB2YXJpYWJsZSwgZGF0YSk6Ci0gICAgICAgIGRhdGEucmV0dXJuX2NvbnZlcnNpb24uYXBwZW5kKCdpZiAoe30gPT0gTlVMTClcbiAgICBnb3RvIGV4aXQ7XG4nLmZvcm1hdCh2YXJpYWJsZSkpCisgICAgICAgIGRhdGEucmV0dXJuX2NvbnZlcnNpb24uYXBwZW5kKCdpZiAoe30gPT0gTlVMTCkge3tcbiAgICBnb3RvIGV4aXQ7XG59fVxuJy5mb3JtYXQodmFyaWFibGUpKQogCiAgICAgZGVmIHJlbmRlcihzZWxmLCBmdW5jdGlvbiwgZGF0YSk6CiAgICAgICAgICIiIgpAQCAtMjk3Nyw4ICszMDA0LDkgQEAKICAgICBkZWYgcmVuZGVyKHNlbGYsIGZ1bmN0aW9uLCBkYXRhKToKICAgICAgICAgc2VsZi5kZWNsYXJlKGRhdGEpCiAgICAgICAgIGRhdGEucmV0dXJuX2NvbnZlcnNpb24uYXBwZW5kKCcnJwotaWYgKF9yZXR1cm5fdmFsdWUgIT0gUHlfTm9uZSkKK2lmIChfcmV0dXJuX3ZhbHVlICE9IFB5X05vbmUpIHsKICAgICBnb3RvIGV4aXQ7Cit9CiByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOwogUHlfSU5DUkVGKFB5X05vbmUpOwogJycnLnN0cmlwKCkpCkBAIC0zMTgzLDYgKzMyMTEsNyBAQAogICAgICAgICBzZWxmLnN0YXRlID0gc2VsZi5zdGF0ZV9kc2xfc3RhcnQKICAgICAgICAgc2VsZi5wYXJhbWV0ZXJfaW5kZW50ID0gTm9uZQogICAgICAgICBzZWxmLmtleXdvcmRfb25seSA9IEZhbHNlCisgICAgICAgIHNlbGYucG9zaXRpb25hbF9vbmx5ID0gRmFsc2UKICAgICAgICAgc2VsZi5ncm91cCA9IDAKICAgICAgICAgc2VsZi5wYXJhbWV0ZXJfc3RhdGUgPSBzZWxmLnBzX3N0YXJ0CiAgICAgICAgIHNlbGYuc2Vlbl9wb3NpdGlvbmFsX3dpdGhfZGVmYXVsdCA9IEZhbHNlCkBAIC0zNTYxLDggKzM1OTAsOCBAQAogICAgICMgInBhcmFtZXRlcl9zdGF0ZSIuICAoUHJldmlvdXNseSB0aGUgY29kZSB3YXMgYSBtaWFzbWEgb2YgaWZzIGFuZAogICAgICMgc2VwYXJhdGUgYm9vbGVhbiBzdGF0ZSB2YXJpYWJsZXMuKSAgVGhlIHN0YXRlcyBhcmU6CiAgICAgIwotICAgICMgIFsgWyBhLCBiLCBdIGMsIF0gZCwgZSwgZj0zLCBbIGcsIGgsIFsgaSBdIF0gLyAgIDwtIGxpbmUKLSAgICAjIDAxICAgMiAgICAgICAgICAzICAgICAgIDQgICAgNSAgICAgICAgICAgNiAgIDcgICA8LSBzdGF0ZSB0cmFuc2l0aW9ucworICAgICMgIFsgWyBhLCBiLCBdIGMsIF0gZCwgZSwgZj0zLCBbIGcsIGgsIFsgaSBdIF0gICA8LSBsaW5lCisgICAgIyAwMSAgIDIgICAgICAgICAgMyAgICAgICA0ICAgIDUgICAgICAgICAgIDYgICAgIDwtIHN0YXRlIHRyYW5zaXRpb25zCiAgICAgIwogICAgICMgMDogcHNfc3RhcnQuICBiZWZvcmUgd2UndmUgc2VlbiBhbnl0aGluZy4gIGxlZ2FsIHRyYW5zaXRpb25zIGFyZSB0byAxIG9yIDMuCiAgICAgIyAxOiBwc19sZWZ0X3NxdWFyZV9iZWZvcmUuICBsZWZ0IHNxdWFyZSBicmFja2V0cyBiZWZvcmUgcmVxdWlyZWQgcGFyYW1ldGVycy4KQEAgLTM1NzMsOSArMzYwMiw4IEBACiAgICAgIyAgICBub3cgbXVzdCBoYXZlIGRlZmF1bHQgdmFsdWVzLgogICAgICMgNTogcHNfZ3JvdXBfYWZ0ZXIuICBpbiBhIGdyb3VwLCBhZnRlciByZXF1aXJlZCBwYXJhbWV0ZXJzLgogICAgICMgNjogcHNfcmlnaHRfc3F1YXJlX2FmdGVyLiAgcmlnaHQgc3F1YXJlIGJyYWNrZXRzIGFmdGVyIHJlcXVpcmVkIHBhcmFtZXRlcnMuCi0gICAgIyA3OiBwc19zZWVuX3NsYXNoLiAgc2VlbiBzbGFzaC4KICAgICBwc19zdGFydCwgcHNfbGVmdF9zcXVhcmVfYmVmb3JlLCBwc19ncm91cF9iZWZvcmUsIHBzX3JlcXVpcmVkLCBcCi0gICAgcHNfb3B0aW9uYWwsIHBzX2dyb3VwX2FmdGVyLCBwc19yaWdodF9zcXVhcmVfYWZ0ZXIsIHBzX3NlZW5fc2xhc2ggPSByYW5nZSg4KQorICAgIHBzX29wdGlvbmFsLCBwc19ncm91cF9hZnRlciwgcHNfcmlnaHRfc3F1YXJlX2FmdGVyID0gcmFuZ2UoNykKIAogICAgIGRlZiBzdGF0ZV9wYXJhbWV0ZXJzX3N0YXJ0KHNlbGYsIGxpbmUpOgogICAgICAgICBpZiBzZWxmLmlnbm9yZV9saW5lKGxpbmUpOgpAQCAtMzg1NCw5ICszODgyLDYgQEAKICAgICAgICAgcmV0dXJuIG5hbWUsIEZhbHNlLCBrd2FyZ3MKIAogICAgIGRlZiBwYXJzZV9zcGVjaWFsX3N5bWJvbChzZWxmLCBzeW1ib2wpOgotICAgICAgICBpZiBzZWxmLnBhcmFtZXRlcl9zdGF0ZSA9PSBzZWxmLnBzX3NlZW5fc2xhc2g6Ci0gICAgICAgICAgICBmYWlsKCJGdW5jdGlvbiAiICsgc2VsZi5mdW5jdGlvbi5uYW1lICsgIiBzcGVjaWZpZXMgIiArIHN5bWJvbCArICIgYWZ0ZXIgLywgd2hpY2ggaXMgdW5zdXBwb3J0ZWQuIikKLQogICAgICAgICBpZiBzeW1ib2wgPT0gJyonOgogICAgICAgICAgICAgaWYgc2VsZi5rZXl3b3JkX29ubHk6CiAgICAgICAgICAgICAgICAgZmFpbCgiRnVuY3Rpb24gIiArIHNlbGYuZnVuY3Rpb24ubmFtZSArICIgdXNlcyAnKicgbW9yZSB0aGFuIG9uY2UuIikKQEAgLTM4ODMsMTMgKzM5MDgsMTUgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgZmFpbCgiRnVuY3Rpb24gIiArIHNlbGYuZnVuY3Rpb24ubmFtZSArICIgaGFzIGFuIHVuc3VwcG9ydGVkIGdyb3VwIGNvbmZpZ3VyYXRpb24uIChVbmV4cGVjdGVkIHN0YXRlICIgKyBzdHIoc2VsZi5wYXJhbWV0ZXJfc3RhdGUpICsgIi5jKSIpCiAgICAgICAgIGVsaWYgc3ltYm9sID09ICcvJzoKKyAgICAgICAgICAgIGlmIHNlbGYucG9zaXRpb25hbF9vbmx5OgorICAgICAgICAgICAgICAgIGZhaWwoIkZ1bmN0aW9uICIgKyBzZWxmLmZ1bmN0aW9uLm5hbWUgKyAiIHVzZXMgJy8nIG1vcmUgdGhhbiBvbmNlLiIpCisgICAgICAgICAgICBzZWxmLnBvc2l0aW9uYWxfb25seSA9IFRydWUKICAgICAgICAgICAgICMgcHNfcmVxdWlyZWQgYW5kIHBzX29wdGlvbmFsIGFyZSBhbGxvd2VkIGhlcmUsIHRoYXQgYWxsb3dzIHBvc2l0aW9uYWwtb25seSB3aXRob3V0IG9wdGlvbiBncm91cHMKICAgICAgICAgICAgICMgdG8gd29yayAoYW5kIGhhdmUgZGVmYXVsdCB2YWx1ZXMhKQogICAgICAgICAgICAgaWYgKHNlbGYucGFyYW1ldGVyX3N0YXRlIG5vdCBpbiAoc2VsZi5wc19yZXF1aXJlZCwgc2VsZi5wc19vcHRpb25hbCwgc2VsZi5wc19yaWdodF9zcXVhcmVfYWZ0ZXIsIHNlbGYucHNfZ3JvdXBfYmVmb3JlKSkgb3Igc2VsZi5ncm91cDoKICAgICAgICAgICAgICAgICBmYWlsKCJGdW5jdGlvbiAiICsgc2VsZi5mdW5jdGlvbi5uYW1lICsgIiBoYXMgYW4gdW5zdXBwb3J0ZWQgZ3JvdXAgY29uZmlndXJhdGlvbi4gKFVuZXhwZWN0ZWQgc3RhdGUgIiArIHN0cihzZWxmLnBhcmFtZXRlcl9zdGF0ZSkgKyAiLmQpIikKICAgICAgICAgICAgIGlmIHNlbGYua2V5d29yZF9vbmx5OgogICAgICAgICAgICAgICAgIGZhaWwoIkZ1bmN0aW9uICIgKyBzZWxmLmZ1bmN0aW9uLm5hbWUgKyAiIG1peGVzIGtleXdvcmQtb25seSBhbmQgcG9zaXRpb25hbC1vbmx5IHBhcmFtZXRlcnMsIHdoaWNoIGlzIHVuc3VwcG9ydGVkLiIpCi0gICAgICAgICAgICBzZWxmLnBhcmFtZXRlcl9zdGF0ZSA9IHNlbGYucHNfc2Vlbl9zbGFzaAogICAgICAgICAgICAgIyBmaXh1cCBwcmVjZWRpbmcgcGFyYW1ldGVycwogICAgICAgICAgICAgZm9yIHAgaW4gc2VsZi5mdW5jdGlvbi5wYXJhbWV0ZXJzLnZhbHVlcygpOgogICAgICAgICAgICAgICAgIGlmIChwLmtpbmQgIT0gaW5zcGVjdC5QYXJhbWV0ZXIuUE9TSVRJT05BTF9PUl9LRVlXT1JEIGFuZCBub3QgaXNpbnN0YW5jZShwLmNvbnZlcnRlciwgc2VsZl9jb252ZXJ0ZXIpKToKQEAgLTM5NzcsMjMgKzQwMDQsMjAgQEAKICAgICAgICAgIyBwb3B1bGF0ZSAicmlnaHRfYnJhY2tldF9jb3VudCIgZmllbGQgZm9yIGV2ZXJ5IHBhcmFtZXRlcgogICAgICAgICBhc3NlcnQgcGFyYW1ldGVycywgIldlIHNob3VsZCBhbHdheXMgaGF2ZSBhIHNlbGYgcGFyYW1ldGVyLiAiICsgcmVwcihmKQogICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShwYXJhbWV0ZXJzWzBdLmNvbnZlcnRlciwgc2VsZl9jb252ZXJ0ZXIpCisgICAgICAgICMgc2VsZiBpcyBhbHdheXMgcG9zaXRpb25hbC1vbmx5LgorICAgICAgICBhc3NlcnQgcGFyYW1ldGVyc1swXS5pc19wb3NpdGlvbmFsX29ubHkoKQogICAgICAgICBwYXJhbWV0ZXJzWzBdLnJpZ2h0X2JyYWNrZXRfY291bnQgPSAwCi0gICAgICAgIHBhcmFtZXRlcnNfYWZ0ZXJfc2VsZiA9IHBhcmFtZXRlcnNbMTpdCi0gICAgICAgIGlmIHBhcmFtZXRlcnNfYWZ0ZXJfc2VsZjoKLSAgICAgICAgICAgICMgZm9yIG5vdywgdGhlIG9ubHkgd2F5IENsaW5pYyBzdXBwb3J0cyBwb3NpdGlvbmFsLW9ubHkgcGFyYW1ldGVycwotICAgICAgICAgICAgIyBpcyBpZiBhbGwgb2YgdGhlbSBhcmUgcG9zaXRpb25hbC1vbmx5Li4uCi0gICAgICAgICAgICAjCi0gICAgICAgICAgICAjIC4uLiBleGNlcHQgZm9yIHNlbGYhICBzZWxmIGlzIGFsd2F5cyBwb3NpdGlvbmFsLW9ubHkuCi0KLSAgICAgICAgICAgIHBvc2l0aW9uYWxfb25seV9wYXJhbWV0ZXJzID0gW3Aua2luZCA9PSBpbnNwZWN0LlBhcmFtZXRlci5QT1NJVElPTkFMX09OTFkgZm9yIHAgaW4gcGFyYW1ldGVyc19hZnRlcl9zZWxmXQotICAgICAgICAgICAgaWYgcGFyYW1ldGVyc19hZnRlcl9zZWxmWzBdLmtpbmQgPT0gaW5zcGVjdC5QYXJhbWV0ZXIuUE9TSVRJT05BTF9PTkxZOgotICAgICAgICAgICAgICAgIGFzc2VydCBhbGwocG9zaXRpb25hbF9vbmx5X3BhcmFtZXRlcnMpCi0gICAgICAgICAgICAgICAgZm9yIHAgaW4gcGFyYW1ldGVyczoKLSAgICAgICAgICAgICAgICAgICAgcC5yaWdodF9icmFja2V0X2NvdW50ID0gYWJzKHAuZ3JvdXApCisgICAgICAgIHBvc2l0aW9uYWxfb25seSA9IFRydWUKKyAgICAgICAgZm9yIHAgaW4gcGFyYW1ldGVyc1sxOl06CisgICAgICAgICAgICBpZiBub3QgcC5pc19wb3NpdGlvbmFsX29ubHkoKToKKyAgICAgICAgICAgICAgICBwb3NpdGlvbmFsX29ubHkgPSBGYWxzZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBhc3NlcnQgcG9zaXRpb25hbF9vbmx5CisgICAgICAgICAgICBpZiBwb3NpdGlvbmFsX29ubHk6CisgICAgICAgICAgICAgICAgcC5yaWdodF9icmFja2V0X2NvdW50ID0gYWJzKHAuZ3JvdXApCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICMgZG9uJ3QgcHV0IGFueSByaWdodCBicmFja2V0cyBhcm91bmQgbm9uLXBvc2l0aW9uYWwtb25seSBwYXJhbWV0ZXJzLCBldmVyLgotICAgICAgICAgICAgICAgIGZvciBwIGluIHBhcmFtZXRlcnNfYWZ0ZXJfc2VsZjoKLSAgICAgICAgICAgICAgICAgICAgcC5yaWdodF9icmFja2V0X2NvdW50ID0gMAorICAgICAgICAgICAgICAgIHAucmlnaHRfYnJhY2tldF9jb3VudCA9IDAKIAogICAgICAgICByaWdodF9icmFja2V0X2NvdW50ID0gMAogCmRpZmYgLS1naXQgYS9Ub29scy9kZW1vL3NzMS5weSBiL1Rvb2xzL2RlbW8vc3MxLnB5CmluZGV4IGM1MWYwNDEuLmJmODg4MjAgMTAwNzU1Ci0tLSBhL1Rvb2xzL2RlbW8vc3MxLnB5CisrKyBiL1Rvb2xzL2RlbW8vc3MxLnB5CkBAIC00MTMsNyArNDEzLDcgQEAKIAogICAgIGRlZiByZW51bWJlcihzZWxmLCB4MSwgeTEsIHgyLCB5MiwgZHgsIGR5KToKICAgICAgICAgb3V0ID0gW10KLSAgICAgICAgZm9yIHBhcnQgaW4gcmUuc3BsaXQoJyhcdyspJywgc2VsZi5mb3JtdWxhKToKKyAgICAgICAgZm9yIHBhcnQgaW4gcmUuc3BsaXQocicoXHcrKScsIHNlbGYuZm9ybXVsYSk6CiAgICAgICAgICAgICBtID0gcmUubWF0Y2goJ14oW0EtWl0rKShbMS05XVswLTldKikkJywgcGFydCkKICAgICAgICAgICAgIGlmIG0gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgc3gsIHN5ID0gbS5ncm91cHMoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvZnJlZXplL2ZyZWV6ZS5weSBiL1Rvb2xzL2ZyZWV6ZS9mcmVlemUucHkKaW5kZXggNDRlZGQ1Ny4uZDYwMmY1OCAxMDA3NTUKLS0tIGEvVG9vbHMvZnJlZXplL2ZyZWV6ZS5weQorKysgYi9Ub29scy9mcmVlemUvZnJlZXplLnB5CkBAIC0xMjQsOSArMTI0LDcgQEAKIAogICAgICMgZGVmYXVsdCB0aGUgZXhjbHVkZSBsaXN0IGZvciBlYWNoIHBsYXRmb3JtCiAgICAgaWYgd2luOiBleGNsdWRlID0gZXhjbHVkZSArIFsKLSAgICAgICAgJ2RvcycsICdkb3NwYXRoJywgJ21hYycsICdtYWNwYXRoJywgJ21hY2ZzJywgJ01BQ0ZTJywgJ3Bvc2l4JywKLSAgICAgICAgJ2NlJywKLSAgICAgICAgXQorICAgICAgICAnZG9zJywgJ2Rvc3BhdGgnLCAnbWFjJywgJ21hY3BhdGgnLCAnbWFjZnMnLCAnTUFDRlMnLCAncG9zaXgnLCBdCiAKICAgICBmYWlsX2ltcG9ydCA9IGV4Y2x1ZGVbOl0KIApAQCAtMjE4LDcgKzIxNiw3IEBACiAgICAgaXNob21lID0gb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHByZWZpeCwgJ1B5dGhvbicsICdjZXZhbC5jJykpCiAKICAgICAjIGxvY2F0aW9ucyBkZXJpdmVkIGZyb20gb3B0aW9ucwotICAgIHZlcnNpb24gPSBzeXMudmVyc2lvbls6M10KKyAgICB2ZXJzaW9uID0gJyVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdCiAgICAgZmxhZ2dlZF92ZXJzaW9uID0gdmVyc2lvbiArIHN5cy5hYmlmbGFncwogICAgIGlmIHdpbjoKICAgICAgICAgZXh0ZW5zaW9uc19jID0gJ2Zyb3plbl9leHRlbnNpb25zLmMnCmRpZmYgLS1naXQgYS9Ub29scy9mcmVlemUvd2lubWFrZW1ha2VmaWxlLnB5IGIvVG9vbHMvZnJlZXplL3dpbm1ha2VtYWtlZmlsZS5weQppbmRleCAzOTBkOGFjLi45YmIzZTZlIDEwMDY0NAotLS0gYS9Ub29scy9mcmVlemUvd2lubWFrZW1ha2VmaWxlLnB5CisrKyBiL1Rvb2xzL2ZyZWV6ZS93aW5tYWtlbWFrZWZpbGUucHkKQEAgLTk1LDcgKzk1LDcgQEAKICAgICBwcmludCgpCiAKICAgICBwcmludCgnJCh0ZW1wX2Rpcik6JykKLSAgICBwcmludCgnICBpZiBub3QgZXhpc3QgJCh0ZW1wX2RpcilcLiBta2RpciAkKHRlbXBfZGlyKScpCisgICAgcHJpbnQocicgIGlmIG5vdCBleGlzdCAkKHRlbXBfZGlyKVwuIG1rZGlyICQodGVtcF9kaXIpJykKICAgICBwcmludCgpCiAKICAgICBvYmplY3RzID0gW10KQEAgLTEwNiw3ICsxMDYsNyBAQAogICAgICAgICAgICAgYmFzZSA9IG9zLnBhdGguYmFzZW5hbWUoZmlsZSkKICAgICAgICAgICAgIGJhc2UsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQoYmFzZSkKICAgICAgICAgICAgIG9iamVjdHMuYXBwZW5kKGJhc2UgKyAiLm9iaiIpCi0gICAgICAgICAgICBwcmludCgnJCh0ZW1wX2RpcilcJXMub2JqOiAiJXMiJyAlIChiYXNlLCBmaWxlKSkKKyAgICAgICAgICAgIHByaW50KHInJCh0ZW1wX2RpcilcJXMub2JqOiAiJXMiJyAlIChiYXNlLCBmaWxlKSkKICAgICAgICAgICAgIHByaW50KCJcdEAkKENDKSAtYyAtbm9sb2dvIC9GbyQqICQoY2RsKSAkKGNfZGVidWcpIC9EIEJVSUxEX0ZSRUVaRSIsIGVuZD0nICcpCiAgICAgICAgICAgICBwcmludCgnIi1JJChweXRob25ob21lKS9JbmNsdWRlIiAgIi1JJChweXRob25ob21lKS9QQyIgXFwnKQogICAgICAgICAgICAgcHJpbnQoIlx0XHQkKGNmbGFncykgJChjZGVidWcpICQoY2luY2x1ZGUpIFxcIikKQEAgLTEyNiw3ICsxMjYsNyBAQAogICAgIHByaW50KCkgOyBwcmludCgpCiAKICAgICBwcmludCgiT0JKUz0iLCBlbmQ9JyAnKQotICAgIGZvciBvYmogaW4gb2JqZWN0czogcHJpbnQoJyIkKHRlbXBfZGlyKVwlcyInICUgKG9iaiksIGVuZD0nICcpCisgICAgZm9yIG9iaiBpbiBvYmplY3RzOiBwcmludChyJyIkKHRlbXBfZGlyKVwlcyInICUgKG9iaiksIGVuZD0nICcpCiAgICAgcHJpbnQoKSA7IHByaW50KCkKIAogICAgIHByaW50KCJMSUJTPSIsIGVuZD0nICcpCmRpZmYgLS1naXQgYS9Ub29scy9nZGIvbGlicHl0aG9uLnB5IGIvVG9vbHMvZ2RiL2xpYnB5dGhvbi5weQppbmRleCBlZDUxNWMwLi5jYzFhZmJlIDEwMDc1NQotLS0gYS9Ub29scy9nZGIvbGlicHl0aG9uLnB5CisrKyBiL1Rvb2xzL2dkYi9saWJweXRob24ucHkKQEAgLTQ0LDcgKzQ0LDcgQEAKICMgTk9URTogc29tZSBnZGJzIGFyZSBsaW5rZWQgd2l0aCBQeXRob24gMywgc28gdGhpcyBmaWxlIHNob3VsZCBiZSBkdWFsLXN5bnRheAogIyBjb21wYXRpYmxlICgyLjYrIGFuZCAzLjArKS4gIFNlZSAjMTkzMDguCiAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24sIHdpdGhfc3RhdGVtZW50Citmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCiBpbXBvcnQgZ2RiCiBpbXBvcnQgb3MKIGltcG9ydCBsb2NhbGUKQEAgLTY2Niw4ICs2NjYsOSBAQAogICAgICAgICAnJycKICAgICAgICAga2V5cyA9IHNlbGYuZmllbGQoJ21hX2tleXMnKQogICAgICAgICB2YWx1ZXMgPSBzZWxmLmZpZWxkKCdtYV92YWx1ZXMnKQotICAgICAgICBmb3IgaSBpbiBzYWZlX3JhbmdlKGtleXNbJ2RrX3NpemUnXSk6Ci0gICAgICAgICAgICBlcCA9IGtleXNbJ2RrX2VudHJpZXMnXS5hZGRyZXNzICsgaQorICAgICAgICBlbnRyaWVzLCBuZW50cmllcyA9IHNlbGYuX2dldF9lbnRyaWVzKGtleXMpCisgICAgICAgIGZvciBpIGluIHNhZmVfcmFuZ2UobmVudHJpZXMpOgorICAgICAgICAgICAgZXAgPSBlbnRyaWVzW2ldCiAgICAgICAgICAgICBpZiBsb25nKHZhbHVlcyk6CiAgICAgICAgICAgICAgICAgcHlvcF92YWx1ZSA9IFB5T2JqZWN0UHRyLmZyb21fcHlvYmplY3RfcHRyKHZhbHVlc1tpXSkKICAgICAgICAgICAgIGVsc2U6CkBAIC03MDcsNiArNzA4LDMzIEBACiAgICAgICAgICAgICBweW9wX3ZhbHVlLndyaXRlX3JlcHIob3V0LCB2aXNpdGVkKQogICAgICAgICBvdXQud3JpdGUoJ30nKQogCisgICAgZGVmIF9nZXRfZW50cmllcyhzZWxmLCBrZXlzKToKKyAgICAgICAgZGtfbmVudHJpZXMgPSBpbnQoa2V5c1snZGtfbmVudHJpZXMnXSkKKyAgICAgICAgZGtfc2l6ZSA9IGludChrZXlzWydka19zaXplJ10pCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgPD0gUHl0aG9uIDMuNQorICAgICAgICAgICAgcmV0dXJuIGtleXNbJ2RrX2VudHJpZXMnXSwgZGtfc2l6ZQorICAgICAgICBleGNlcHQgZ2RiLmVycm9yOgorICAgICAgICAgICAgIyA+PSBQeXRob24gMy42CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgaWYgZGtfc2l6ZSA8PSAweEZGOgorICAgICAgICAgICAgb2Zmc2V0ID0gZGtfc2l6ZQorICAgICAgICBlbGlmIGRrX3NpemUgPD0gMHhGRkZGOgorICAgICAgICAgICAgb2Zmc2V0ID0gMiAqIGRrX3NpemUKKyAgICAgICAgZWxpZiBka19zaXplIDw9IDB4RkZGRkZGRkY6CisgICAgICAgICAgICBvZmZzZXQgPSA0ICogZGtfc2l6ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgb2Zmc2V0ID0gOCAqIGRrX3NpemUKKworICAgICAgICBlbnRfYWRkciA9IGtleXNbJ2RrX2luZGljZXMnXVsnYXNfMSddLmFkZHJlc3MKKyAgICAgICAgZW50X2FkZHIgPSBlbnRfYWRkci5jYXN0KF90eXBlX3Vuc2lnbmVkX2NoYXJfcHRyKCkpICsgb2Zmc2V0CisgICAgICAgIGVudF9wdHJfdCA9IGdkYi5sb29rdXBfdHlwZSgnUHlEaWN0S2V5RW50cnknKS5wb2ludGVyKCkKKyAgICAgICAgZW50X2FkZHIgPSBlbnRfYWRkci5jYXN0KGVudF9wdHJfdCkKKworICAgICAgICByZXR1cm4gZW50X2FkZHIsIGRrX25lbnRyaWVzCisKKwogY2xhc3MgUHlMaXN0T2JqZWN0UHRyKFB5T2JqZWN0UHRyKToKICAgICBfdHlwZW5hbWUgPSAnUHlMaXN0T2JqZWN0JwogCkBAIC0xNDY0LDIzICsxNDkyLDM4IEBACiAgICAgICAgICAnJycKICAgICAgICAgaWYgc2VsZi5pc193YWl0aW5nX2Zvcl9naWwoKToKICAgICAgICAgICAgIHJldHVybiAnV2FpdGluZyBmb3IgdGhlIEdJTCcKLSAgICAgICAgZWxpZiBzZWxmLmlzX2djX2NvbGxlY3QoKToKKworICAgICAgICBpZiBzZWxmLmlzX2djX2NvbGxlY3QoKToKICAgICAgICAgICAgIHJldHVybiAnR2FyYmFnZS1jb2xsZWN0aW5nJwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBEZXRlY3QgaW52b2NhdGlvbnMgb2YgUHlDRnVuY3Rpb24gaW5zdGFuY2VzOgotICAgICAgICAgICAgb2xkZXIgPSBzZWxmLm9sZGVyKCkKLSAgICAgICAgICAgIGlmIG9sZGVyIGFuZCBvbGRlci5fZ2RiZnJhbWUubmFtZSgpID09ICdQeUNGdW5jdGlvbl9DYWxsJzoKLSAgICAgICAgICAgICAgICAjIFdpdGhpbiB0aGF0IGZyYW1lOgotICAgICAgICAgICAgICAgICMgICAiZnVuYyIgaXMgdGhlIGxvY2FsIGNvbnRhaW5pbmcgdGhlIFB5T2JqZWN0KiBvZiB0aGUKLSAgICAgICAgICAgICAgICAjIFB5Q0Z1bmN0aW9uT2JqZWN0IGluc3RhbmNlCi0gICAgICAgICAgICAgICAgIyAgICJmIiBpcyB0aGUgc2FtZSB2YWx1ZSwgYnV0IGNhc3QgdG8gKFB5Q0Z1bmN0aW9uT2JqZWN0KikKLSAgICAgICAgICAgICAgICAjICAgInNlbGYiIGlzIHRoZSAoUHlPYmplY3QqKSBvZiB0aGUgJ3NlbGYnCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAjIFVzZSB0aGUgcHJldHR5cHJpbnRlciBmb3IgdGhlIGZ1bmM6Ci0gICAgICAgICAgICAgICAgICAgIGZ1bmMgPSBvbGRlci5fZ2RiZnJhbWUucmVhZF92YXIoJ2Z1bmMnKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RyKGZ1bmMpCi0gICAgICAgICAgICAgICAgZXhjZXB0IFJ1bnRpbWVFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdQeUNGdW5jdGlvbiBpbnZvY2F0aW9uICh1bmFibGUgdG8gcmVhZCAiZnVuYyIpJworCisgICAgICAgICMgRGV0ZWN0IGludm9jYXRpb25zIG9mIFB5Q0Z1bmN0aW9uIGluc3RhbmNlczoKKyAgICAgICAgb2xkZXIgPSBzZWxmLm9sZGVyKCkKKyAgICAgICAgaWYgbm90IG9sZGVyOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgY2FsbGVyID0gb2xkZXIuX2dkYmZyYW1lLm5hbWUoKQorICAgICAgICBpZiBub3QgY2FsbGVyOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgaWYgY2FsbGVyID09ICdQeUNGdW5jdGlvbl9DYWxsJzoKKyAgICAgICAgICAgICMgV2l0aGluIHRoYXQgZnJhbWU6CisgICAgICAgICAgICAjICAgImZ1bmMiIGlzIHRoZSBsb2NhbCBjb250YWluaW5nIHRoZSBQeU9iamVjdCogb2YgdGhlCisgICAgICAgICAgICAjIFB5Q0Z1bmN0aW9uT2JqZWN0IGluc3RhbmNlCisgICAgICAgICAgICAjICAgImYiIGlzIHRoZSBzYW1lIHZhbHVlLCBidXQgY2FzdCB0byAoUHlDRnVuY3Rpb25PYmplY3QqKQorICAgICAgICAgICAgIyAgICJzZWxmIiBpcyB0aGUgKFB5T2JqZWN0Kikgb2YgdGhlICdzZWxmJworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICMgVXNlIHRoZSBwcmV0dHlwcmludGVyIGZvciB0aGUgZnVuYzoKKyAgICAgICAgICAgICAgICBmdW5jID0gb2xkZXIuX2dkYmZyYW1lLnJlYWRfdmFyKCdmdW5jJykKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RyKGZ1bmMpCisgICAgICAgICAgICBleGNlcHQgUnVudGltZUVycm9yOgorICAgICAgICAgICAgICAgIHJldHVybiAnUHlDRnVuY3Rpb24gaW52b2NhdGlvbiAodW5hYmxlIHRvIHJlYWQgImZ1bmMiKScKKworICAgICAgICBlbGlmIGNhbGxlciA9PSAnX1B5Q0Z1bmN0aW9uX0Zhc3RDYWxsRGljdCc6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZnVuYyA9IG9sZGVyLl9nZGJmcmFtZS5yZWFkX3ZhcignZnVuY19vYmonKQorICAgICAgICAgICAgICAgIHJldHVybiBzdHIoZnVuYykKKyAgICAgICAgICAgIGV4Y2VwdCBSdW50aW1lRXJyb3I6CisgICAgICAgICAgICAgICAgcmV0dXJuICdQeUNGdW5jdGlvbiBpbnZvY2F0aW9uICh1bmFibGUgdG8gcmVhZCAiZnVuY19vYmoiKScKIAogICAgICAgICAjIFRoaXMgZnJhbWUgaXNuJ3Qgd29ydGggcmVwb3J0aW5nOgogICAgICAgICByZXR1cm4gRmFsc2UKZGlmZiAtLWdpdCBhL1Rvb2xzL2hnL2hndG91Y2gucHkgYi9Ub29scy9oZy9oZ3RvdWNoLnB5CmluZGV4IDExOWQ4MTIuLmZiY2E0NjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2hnL2hndG91Y2gucHkKKysrIGIvVG9vbHMvaGcvaGd0b3VjaC5weQpAQCAtNyw3ICs3LDYgQEAKIAogSW4gYWRkaXRpb24gdG8gdGhlIGRlcGVuZGVuY3kgc3ludGF4LCAjLWNvbW1lbnRzIGFyZSBzdXBwb3J0ZWQuCiAiIiIKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKIGltcG9ydCBlcnJubwogaW1wb3J0IG9zCiBpbXBvcnQgdGltZQpkaWZmIC0tZ2l0IGEvVG9vbHMvaTE4bi9weWdldHRleHQucHkgYi9Ub29scy9pMThuL3B5Z2V0dGV4dC5weQppbmRleCBkYTQyNDM4Li44ZWY1ZmY4IDEwMDc1NQotLS0gYS9Ub29scy9pMThuL3B5Z2V0dGV4dC5weQorKysgYi9Ub29scy9pMThuL3B5Z2V0dGV4dC5weQpAQCAtMTU2LDcgKzE1Niw4IEBACiAiIiIpCiAKIGltcG9ydCBvcwotaW1wb3J0IGltcAoraW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKK2ltcG9ydCBpbXBvcnRsaWIudXRpbAogaW1wb3J0IHN5cwogaW1wb3J0IGdsb2IKIGltcG9ydCB0aW1lCkBAIC0yNjMsOCArMjY0LDcgQEAKICAgICAjIGdldCBleHRlbnNpb24gZm9yIHB5dGhvbiBzb3VyY2UgZmlsZXMKICAgICBpZiAnX3B5X2V4dCcgbm90IGluIGdsb2JhbHMoKToKICAgICAgICAgZ2xvYmFsIF9weV9leHQKLSAgICAgICAgX3B5X2V4dCA9IFt0cmlwbGVbMF0gZm9yIHRyaXBsZSBpbiBpbXAuZ2V0X3N1ZmZpeGVzKCkKLSAgICAgICAgICAgICAgICAgICBpZiB0cmlwbGVbMl0gPT0gaW1wLlBZX1NPVVJDRV1bMF0KKyAgICAgICAgX3B5X2V4dCA9IGltcG9ydGxpYi5tYWNoaW5lcnkuU09VUkNFX1NVRkZJWEVTWzBdCiAKICAgICAjIGRvbid0IHJlY3Vyc2UgaW50byBDVlMgZGlyZWN0b3JpZXMKICAgICBpZiAnQ1ZTJyBpbiBuYW1lczoKQEAgLTI3Nyw0NSArMjc3LDYgQEAKICAgICAgICAgKQogCiAKLWRlZiBfZ2V0X21vZHBrZ19wYXRoKGRvdHRlZF9uYW1lLCBwYXRobGlzdD1Ob25lKToKLSAgICAiIiJHZXQgdGhlIGZpbGVzeXN0ZW0gcGF0aCBmb3IgYSBtb2R1bGUgb3IgYSBwYWNrYWdlLgotCi0gICAgUmV0dXJuIHRoZSBmaWxlIHN5c3RlbSBwYXRoIHRvIGEgZmlsZSBmb3IgYSBtb2R1bGUsIGFuZCB0byBhIGRpcmVjdG9yeSBmb3IKLSAgICBhIHBhY2thZ2UuIFJldHVybiBOb25lIGlmIHRoZSBuYW1lIGlzIG5vdCBmb3VuZCwgb3IgaXMgYSBidWlsdGluIG9yCi0gICAgZXh0ZW5zaW9uIG1vZHVsZS4KLSAgICAiIiIKLSAgICAjIHNwbGl0IG9mZiB0b3AtbW9zdCBuYW1lCi0gICAgcGFydHMgPSBkb3R0ZWRfbmFtZS5zcGxpdCgnLicsIDEpCi0KLSAgICBpZiBsZW4ocGFydHMpID4gMToKLSAgICAgICAgIyB3ZSBoYXZlIGEgZG90dGVkIHBhdGgsIGltcG9ydCB0b3AtbGV2ZWwgcGFja2FnZQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmaWxlLCBwYXRobmFtZSwgZGVzY3JpcHRpb24gPSBpbXAuZmluZF9tb2R1bGUocGFydHNbMF0sIHBhdGhsaXN0KQotICAgICAgICAgICAgaWYgZmlsZTogZmlsZS5jbG9zZSgpCi0gICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgIyBjaGVjayBpZiBpdCdzIGluZGVlZCBhIHBhY2thZ2UKLSAgICAgICAgaWYgZGVzY3JpcHRpb25bMl0gPT0gaW1wLlBLR19ESVJFQ1RPUlk6Ci0gICAgICAgICAgICAjIHJlY3Vyc2l2ZWx5IGhhbmRsZSB0aGUgcmVtYWluaW5nIG5hbWUgcGFydHMKLSAgICAgICAgICAgIHBhdGhuYW1lID0gX2dldF9tb2Rwa2dfcGF0aChwYXJ0c1sxXSwgW3BhdGhuYW1lXSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHBhdGhuYW1lID0gTm9uZQotICAgIGVsc2U6Ci0gICAgICAgICMgcGxhaW4gbmFtZQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmaWxlLCBwYXRobmFtZSwgZGVzY3JpcHRpb24gPSBpbXAuZmluZF9tb2R1bGUoCi0gICAgICAgICAgICAgICAgZG90dGVkX25hbWUsIHBhdGhsaXN0KQotICAgICAgICAgICAgaWYgZmlsZToKLSAgICAgICAgICAgICAgICBmaWxlLmNsb3NlKCkKLSAgICAgICAgICAgIGlmIGRlc2NyaXB0aW9uWzJdIG5vdCBpbiBbaW1wLlBZX1NPVVJDRSwgaW1wLlBLR19ESVJFQ1RPUlldOgotICAgICAgICAgICAgICAgIHBhdGhuYW1lID0gTm9uZQotICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICBwYXRobmFtZSA9IE5vbmUKLQotICAgIHJldHVybiBwYXRobmFtZQotCi0KIGRlZiBnZXRGaWxlc0Zvck5hbWUobmFtZSk6CiAgICAgIiIiR2V0IGEgbGlzdCBvZiBtb2R1bGUgZmlsZXMgZm9yIGEgZmlsZW5hbWUsIGEgbW9kdWxlIG9yIHBhY2thZ2UgbmFtZSwKICAgICBvciBhIGRpcmVjdG9yeS4KQEAgLTMzMCw3ICsyOTEsMTEgQEAKICAgICAgICAgICAgIHJldHVybiBsaXN0CiAKICAgICAgICAgIyB0cnkgdG8gZmluZCBtb2R1bGUgb3IgcGFja2FnZQotICAgICAgICBuYW1lID0gX2dldF9tb2Rwa2dfcGF0aChuYW1lKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzcGVjID0gaW1wb3J0bGliLnV0aWwuZmluZF9zcGVjKG5hbWUpCisgICAgICAgICAgICBuYW1lID0gc3BlYy5vcmlnaW4KKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgbmFtZSA9IE5vbmUKICAgICAgICAgaWYgbm90IG5hbWU6CiAgICAgICAgICAgICByZXR1cm4gW10KIApkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1aWxkcmVsZWFzZS5iYXQgYi9Ub29scy9tc2kvYnVpbGRyZWxlYXNlLmJhdAppbmRleCBmMjk2ZTYxLi40NjU5YTMyIDEwMDY0NAotLS0gYS9Ub29scy9tc2kvYnVpbGRyZWxlYXNlLmJhdAorKysgYi9Ub29scy9tc2kvYnVpbGRyZWxlYXNlLmJhdApAQCAtMzUsNyArMzUsNyBAQAogc2V0IEJVSUxEWDY0PQ0KIHNldCBUQVJHRVQ9UmVidWlsZA0KIHNldCBURVNUVEFSR0VURElSPQ0KLXNldCBQR089DQorc2V0IFBHTz0tbSB0ZXN0IC1xIC0tcGdvDQogc2V0IEJVSUxETlVHRVQ9MQ0KIHNldCBCVUlMRFpJUD0xDQogDQpAQCAtNTcsNiArNTcsNyBAQAogaWYgIiUxIiBFUVUgIi14ODYiIChzZXQgQlVJTERYODY9MSkgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCiBpZiAiJTEiIEVRVSAiLXg2NCIgKHNldCBCVUlMRFg2ND0xKSAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KIGlmICIlMSIgRVFVICItLXBnbyIgKHNldCBQR089JX4yKSAmJiBzaGlmdCAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlMSIgRVFVICItLXNraXAtcGdvIiAoc2V0IFBHTz0pICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQogaWYgIiUxIiBFUVUgIi0tc2tpcC1udWdldCIgKHNldCBCVUlMRE5VR0VUPSkgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCiBpZiAiJTEiIEVRVSAiLS1za2lwLXppcCIgKHNldCBCVUlMRFpJUD0pICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQogDQpAQCAtMTA5LDIxICsxMTAsMTQgQEAKIEBlY2hvIG9mZg0KIA0KIGlmICIlMSIgRVFVICJ4ODYiICgNCi0gICAgY2FsbCAiJVBDQlVJTEQlZW52LmJhdCIgeDg2DQorICAgIHNldCBQR089DQogICAgIHNldCBCVUlMRD0lUENCVUlMRCV3aW4zMlwNCiAgICAgc2V0IEJVSUxEX1BMQVQ9V2luMzINCiAgICAgc2V0IE9VVERJUl9QTEFUPXdpbjMyDQogICAgIHNldCBPQkpESVJfUExBVD14ODYNCi0pIGVsc2UgaWYgIiV+MiIgTkVRICIiICgNCi0gICAgY2FsbCAiJVBDQlVJTEQlZW52LmJhdCIgYW1kNjQNCi0gICAgc2V0IFBHTz0lfjINCi0gICAgc2V0IEJVSUxEPSVQQ0JVSUxEJWFtZDY0LXBnb1wNCi0gICAgc2V0IEJVSUxEX1BMQVQ9eDY0DQotICAgIHNldCBPVVRESVJfUExBVD1hbWQ2NA0KLSAgICBzZXQgT0JKRElSX1BMQVQ9eDY0DQogKSBlbHNlICgNCi0gICAgY2FsbCAiJVBDQlVJTEQlZW52LmJhdCIgYW1kNjQNCiAgICAgc2V0IEJVSUxEPSVQQ0JVSUxEJWFtZDY0XA0KKyAgICBzZXQgUEdPPSV+Mg0KICAgICBzZXQgQlVJTERfUExBVD14NjQNCiAgICAgc2V0IE9VVERJUl9QTEFUPWFtZDY0DQogICAgIHNldCBPQkpESVJfUExBVD14NjQNCkBAIC0xMzUsNiArMTI5LDEyIEBACiAgICAgaWYgZXJyb3JsZXZlbCAxIGV4aXQgL0INCiApDQogDQoraWYgZXhpc3QgIiVEJW9ialxEZWJ1Z18lT0JKRElSX1BMQVQlIiAoDQorICAgIGVjaG8gRGVsZXRpbmcgIiVEJW9ialxEZWJ1Z18lT0JKRElSX1BMQVQlIg0KKyAgICBybWRpciAvcS9zICIlRCVvYmpcRGVidWdfJU9CSkRJUl9QTEFUJSINCisgICAgaWYgZXJyb3JsZXZlbCAxIGV4aXQgL0INCispDQorDQogaWYgZXhpc3QgIiVEJW9ialxSZWxlYXNlXyVPQkpESVJfUExBVCUiICgNCiAgICAgZWNobyBEZWxldGluZyAiJUQlb2JqXFJlbGVhc2VfJU9CSkRJUl9QTEFUJSINCiAgICAgcm1kaXIgL3EvcyAiJUQlb2JqXFJlbGVhc2VfJU9CSkRJUl9QTEFUJSINCkBAIC0xNDYsNDUgKzE0NiwzOCBAQAogKSBlbHNlICgNCiAgICAgc2V0IENFUlRPUFRTPQ0KICkNCi0NCitpZiBub3QgIiVQR08lIiBFUVUgIiIgKA0KKyAgICBzZXQgUEdPT1BUUz0tLXBnby1qb2IgIiVQR08lIg0KKykgZWxzZSAoDQorICAgIHNldCBQR09PUFRTPQ0KKykNCiBpZiBub3QgIiVTS0lQQlVJTEQlIiBFUVUgIjEiICgNCi0gICAgQGNhbGwgIiVQQ0JVSUxEJWJ1aWxkLmJhdCIgLWUgLXAgJUJVSUxEX1BMQVQlIC1kIC10ICVUQVJHRVQlICVDRVJUT1BUUyUNCisgICAgQGVjaG8gY2FsbCAiJVBDQlVJTEQlYnVpbGQuYmF0IiAtZSAtcCAlQlVJTERfUExBVCUgLXQgJVRBUkdFVCUgJVBHT09QVFMlICVDRVJUT1BUUyUNCisgICAgQGNhbGwgIiVQQ0JVSUxEJWJ1aWxkLmJhdCIgLWUgLXAgJUJVSUxEX1BMQVQlIC10ICVUQVJHRVQlICVQR09PUFRTJSAlQ0VSVE9QVFMlDQogICAgIEBpZiBlcnJvcmxldmVsIDEgZXhpdCAvQg0KICAgICBAcmVtIGJ1aWxkLmJhdCB0dXJucyBlY2hvIGJhY2sgb24sIHNvIHdlIGRpc2FibGUgaXQgYWdhaW4NCiAgICAgQGVjaG8gb2ZmDQotICAgIA0KLSAgICBpZiAiJVBHTyUiIEVRVSAiIiAoDQotICAgICAgICBAY2FsbCAiJVBDQlVJTEQlYnVpbGQuYmF0IiAtZSAtcCAlQlVJTERfUExBVCUgLXQgJVRBUkdFVCUgJUNFUlRPUFRTJQ0KLSAgICApIGVsc2UgKA0KLSAgICAgICAgQGNhbGwgIiVQQ0JVSUxEJWJ1aWxkLmJhdCIgLWUgLXAgJUJVSUxEX1BMQVQlIC1jIFBHSW5zdHJ1bWVudCAtdCAlVEFSR0VUJSAlQ0VSVE9QVFMlDQotICAgICAgICBAaWYgZXJyb3JsZXZlbCAxIGV4aXQgL0INCi0gICAgICAgIA0KLSAgICAgICAgQGRlbCAiJUJVSUxEJSoucGdjIg0KLSAgICAgICAgaWYgIiVQR08lIiBFUVUgImRlZmF1bHQiICgNCi0gICAgICAgICAgICAiJUJVSUxEJXB5dGhvbi5leGUiIC1tIHRlc3QgLXEgLS1wZ28NCi0gICAgICAgICkgZWxzZSBpZiAiJVBHTyUiIEVRVSAiZGVmYXVsdDIiICgNCi0gICAgICAgICAgICAiJUJVSUxEJXB5dGhvbi5leGUiIC1tIHRlc3QgLXIgLXEgLS1wZ28NCi0gICAgICAgICAgICAiJUJVSUxEJXB5dGhvbi5leGUiIC1tIHRlc3QgLXIgLXEgLS1wZ28NCi0gICAgICAgICkgZWxzZSBpZiAiJVBHTyUiIEVRVSAiZGVmYXVsdDEwIiAoDQotICAgICAgICAgICAgZm9yIC9MICUlaSBpbiAoMCwgMSwgOSkgZG8gIiVCVUlMRCVweXRob24uZXhlIiAtbSB0ZXN0IC1xIC1yIC0tcGdvDQotICAgICAgICApIGVsc2UgaWYgIiVQR08lIiBFUVUgInB5YmVuY2giICgNCi0gICAgICAgICAgICAiJUJVSUxEJXB5dGhvbi5leGUiICIlUENCVUlMRCUuLlxUb29sc1xweWJlbmNoXHB5YmVuY2gucHkiDQotICAgICAgICApIGVsc2UgKA0KLSAgICAgICAgICAgICIlQlVJTEQlcHl0aG9uLmV4ZSIgJVBHTyUNCi0gICAgICAgICkNCi0gICAgICAgIA0KLSAgICAgICAgQGNhbGwgIiVQQ0JVSUxEJWJ1aWxkLmJhdCIgLWUgLXAgJUJVSUxEX1BMQVQlIC1jIFBHVXBkYXRlIC10IEJ1aWxkICVDRVJUT1BUUyUNCi0gICAgKQ0KKw0KKyAgICBAZWNobyBjYWxsICIlUENCVUlMRCVidWlsZC5iYXQiIC1kIC1lIC1wICVCVUlMRF9QTEFUJSAtdCAlVEFSR0VUJQ0KKyAgICBAY2FsbCAiJVBDQlVJTEQlYnVpbGQuYmF0IiAtZCAtZSAtcCAlQlVJTERfUExBVCUgLXQgJVRBUkdFVCUNCiAgICAgQGlmIGVycm9ybGV2ZWwgMSBleGl0IC9CDQorICAgIEByZW0gYnVpbGQuYmF0IHR1cm5zIGVjaG8gYmFjayBvbiwgc28gd2UgZGlzYWJsZSBpdCBhZ2Fpbg0KICAgICBAZWNobyBvZmYNCiApDQogDQotc2V0IEJVSUxET1BUUz0vcDpCdWlsZEZvclJlbGVhc2U9dHJ1ZSAvcDpEb3dubG9hZFVybD0lRE9XTkxPQURfVVJMJSAvcDpEb3dubG9hZFVybEJhc2U9JURPV05MT0FEX1VSTF9CQVNFJSAvcDpSZWxlYXNlVXJpPSVSRUxFQVNFX1VSSSUNCi1pZiAiJVBHTyUiIE5FUSAiIiBzZXQgQlVJTERPUFRTPSVCVUlMRE9QVFMlIC9wOlBHT0J1aWxkUGF0aD0lQlVJTEQlDQotbXNidWlsZCAiJUQlbGF1bmNoZXJcbGF1bmNoZXIud2l4cHJvaiIgL3A6UGxhdGZvcm09eDg2ICVDRVJUT1BUUyUgL3A6UmVsZWFzZVVyaT0lUkVMRUFTRV9VUkklDQotbXNidWlsZCAiJUQlYnVuZGxlXHJlbGVhc2Vsb2NhbC53aXhwcm9qIiAvdDpSZWJ1aWxkIC9wOlBsYXRmb3JtPSUxICVCVUlMRE9QVFMlICVDRVJUT1BUUyUgL3A6UmVidWlsZEFsbD10cnVlDQorY2FsbCAiJVBDQlVJTEQlZW52LmJhdCINCitpZiAiJU9VVERJUl9QTEFUJSIgRVFVICJ3aW4zMiIgKA0KKyAgICBtc2J1aWxkICIlRCVsYXVuY2hlclxsYXVuY2hlci53aXhwcm9qIiAvcDpQbGF0Zm9ybT14ODYgJUNFUlRPUFRTJSAvcDpSZWxlYXNlVXJpPSVSRUxFQVNFX1VSSSUNCisgICAgaWYgZXJyb3JsZXZlbCAxIGV4aXQgL0INCispIGVsc2UgaWYgbm90IGV4aXN0ICIlUENCVUlMRCV3aW4zMlxlbi11c1xsYXVuY2hlci5tc2kiICgNCisgICAgbXNidWlsZCAiJUQlbGF1bmNoZXJcbGF1bmNoZXIud2l4cHJvaiIgL3A6UGxhdGZvcm09eDg2ICVDRVJUT1BUUyUgL3A6UmVsZWFzZVVyaT0lUkVMRUFTRV9VUkklDQorICAgIGlmIGVycm9ybGV2ZWwgMSBleGl0IC9CDQorKQ0KKw0KK3NldCBCVUlMRE9QVFM9L3A6UGxhdGZvcm09JTEgL3A6QnVpbGRGb3JSZWxlYXNlPXRydWUgL3A6RG93bmxvYWRVcmw9JURPV05MT0FEX1VSTCUgL3A6RG93bmxvYWRVcmxCYXNlPSVET1dOTE9BRF9VUkxfQkFTRSUgL3A6UmVsZWFzZVVyaT0lUkVMRUFTRV9VUkklDQorbXNidWlsZCAiJUQlYnVuZGxlXHJlbGVhc2Vsb2NhbC53aXhwcm9qIiAvdDpSZWJ1aWxkICVCVUlMRE9QVFMlICVDRVJUT1BUUyUgL3A6UmVidWlsZEFsbD10cnVlDQogaWYgZXJyb3JsZXZlbCAxIGV4aXQgL0INCi1tc2J1aWxkICIlRCVidW5kbGVccmVsZWFzZXdlYi53aXhwcm9qIiAvdDpSZWJ1aWxkIC9wOlBsYXRmb3JtPSUxICVCVUlMRE9QVFMlICVDRVJUT1BUUyUgL3A6UmVidWlsZEFsbD1mYWxzZQ0KK21zYnVpbGQgIiVEJWJ1bmRsZVxyZWxlYXNld2ViLndpeHByb2oiIC90OlJlYnVpbGQgJUJVSUxET1BUUyUgJUNFUlRPUFRTJSAvcDpSZWJ1aWxkQWxsPWZhbHNlDQogaWYgZXJyb3JsZXZlbCAxIGV4aXQgL0INCiANCiBpZiBkZWZpbmVkIEJVSUxEWklQICgNCkBAIC0yMTAsNyArMjAzLDcgQEAKIA0KIDpIZWxwDQogZWNobyBidWlsZHJlbGVhc2UuYmF0IFstLW91dCBESVJdIFsteDg2XSBbLXg2NF0gWy0tY2VydGlmaWNhdGUgQ0VSVE5BTUVdIFstLWJ1aWxkXSBbLS1wZ28gQ09NTUFORF0NCi1lY2hvICAgICAgICAgICAgICAgICAgWy0tc2tpcC1idWlsZF0gWy0tc2tpcC1kb2NdIFstLXNraXAtbnVnZXRdIFstLXNraXAtemlwXQ0KK2VjaG8gICAgICAgICAgICAgICAgICBbLS1za2lwLWJ1aWxkXSBbLS1za2lwLWRvY10gWy0tc2tpcC1udWdldF0gWy0tc2tpcC16aXBdIFstLXNraXAtcGdvXQ0KIGVjaG8gICAgICAgICAgICAgICAgICBbLS1kb3dubG9hZCBET1dOTE9BRCBVUkxdIFstLXRlc3QgVEFSR0VURElSXQ0KIGVjaG8gICAgICAgICAgICAgICAgICBbLWhdDQogZWNoby4NCkBAIC0yMjAsOSArMjEzLDEwIEBACiBlY2hvICAgIC0tYnVpbGQgKC1iKSAgICAgICAgSW5jcmVtZW50YWxseSBidWlsZCBQeXRob24gcmF0aGVyIHRoYW4gcmVidWlsZGluZw0KIGVjaG8gICAgLS1za2lwLWJ1aWxkICgtQikgICBEbyBub3QgYnVpbGQgUHl0aG9uIChqdXN0IGRvIHRoZSBpbnN0YWxsZXJzKQ0KIGVjaG8gICAgLS1za2lwLWRvYyAoLUQpICAgICBEbyBub3QgYnVpbGQgZG9jdW1lbnRhdGlvbg0KK2VjaG8gICAgLS1wZ28gICAgICAgICAgICAgICBTcGVjaWZ5IFBHTyBjb21tYW5kIGZvciB4NjQgaW5zdGFsbGVycw0KK2VjaG8gICAgLS1za2lwLXBnbyAgICAgICAgICBCdWlsZCB4NjQgaW5zdGFsbGVycyB3aXRob3V0IHVzaW5nIFBHTw0KIGVjaG8gICAgLS1za2lwLW51Z2V0ICAgICAgICBEbyBub3QgYnVpbGQgTnVnZXQgcGFja2FnZXMNCiBlY2hvICAgIC0tc2tpcC16aXAgICAgICAgICAgRG8gbm90IGJ1aWxkIGVtYmVkZGFibGUgcGFja2FnZQ0KLWVjaG8gICAgLS1wZ28gICAgICAgICAgICAgICBCdWlsZCB4NjQgaW5zdGFsbGVycyB1c2luZyBQR08NCiBlY2hvICAgIC0tZG93bmxvYWQgICAgICAgICAgU3BlY2lmeSB0aGUgZnVsbCBkb3dubG9hZCBVUkwgZm9yIE1TSXMNCiBlY2hvICAgIC0tdGVzdCAgICAgICAgICAgICAgU3BlY2lmeSB0aGUgdGVzdCBkaXJlY3RvcnkgdG8gcnVuIHRoZSBpbnN0YWxsZXIgdGVzdHMNCiBlY2hvICAgIC1oICAgICAgICAgICAgICAgICAgRGlzcGxheSB0aGlzIGhlbHAgaW5mb3JtYXRpb24NCkBAIC0yMzAsMTMgKzIyNCw4IEBACiBlY2hvIElmIG5vIGFyY2hpdGVjdHVyZSBpcyBzcGVjaWZpZWQsIGFsbCBhcmNoaXRlY3R1cmVzIHdpbGwgYmUgYnVpbHQuDQogZWNobyBJZiAtLXRlc3QgaXMgbm90IHNwZWNpZmllZCwgdGhlIGluc3RhbGxlciB0ZXN0cyBhcmUgbm90IHJ1bi4NCiBlY2hvLg0KLWVjaG8gRm9yIHRoZSAtLXBnbyBvcHRpb24sIGFueSBQeXRob24gY29tbWFuZCBsaW5lIGNhbiBiZSB1c2VkIGFzIHdlbGwgYXMgdGhlDQotZWNobyBmb2xsb3dpbmcgc2hvcnRjdXRzOg0KLWVjaG8gICAgIFNob3J0Y3V0ICAgICAgICBEZXNjcmlwdGlvbg0KLWVjaG8gICAgIGRlZmF1bHQgICAgICAgICBUZXN0IHN1aXRlIHdpdGggLS1wZ28NCi1lY2hvICAgICBkZWZhdWx0MiAgICAgICAgMnggdGVzdCBzdWl0ZSB3aXRoIC0tcGdvIGFuZCByYW5kb21pemVkIHRlc3Qgb3JkZXINCi1lY2hvICAgICBkZWZhdWx0MTAgICAgICAgMTB4IHRlc3Qgc3VpdGUgd2l0aCAtLXBnbyBhbmQgcmFuZG9taXplZCB0ZXN0IG9yZGVyDQotZWNobyAgICAgcHliZW5jaCAgICAgICAgIHB5YmVuY2ggc2NyaXB0DQorZWNobyBGb3IgdGhlIC0tcGdvIG9wdGlvbiwgYW55IFB5dGhvbiBjb21tYW5kIGxpbmUgY2FuIGJlIHVzZWQsIG9yICdkZWZhdWx0JyB0bw0KK2VjaG8gdXNlIHRoZSBkZWZhdWx0IHRhc2sgKC1tIHRlc3QgLS1wZ28pLg0KIGVjaG8uDQogZWNobyBUaGUgZm9sbG93aW5nIHN1YnN0aXR1dGlvbnMgd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSBkb3dubG9hZCBVUkw6DQogZWNobyAgICAgVmFyaWFibGUgICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgRXhhbXBsZQ0KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvRGVmYXVsdC50aG0gYi9Ub29scy9tc2kvYnVuZGxlL0RlZmF1bHQudGhtCmluZGV4IDRkOWM5N2EuLjFjMGJkMDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9idW5kbGUvRGVmYXVsdC50aG0KKysrIGIvVG9vbHMvbXNpL2J1bmRsZS9EZWZhdWx0LnRobQpAQCAtMTE2LDEwICsxMTYsMTEgQEAKICAgICAgICAgPFRleHQgWD0iMTg1IiBZPSIxMSIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSIzNiIgRm9udElkPSIxIiBEaXNhYmxlUHJlZml4PSJ5ZXMiPiMobG9jLlN1Y2Nlc3NIZWFkZXIpPC9UZXh0PgogICAgICAgICA8SW1hZ2UgWD0iMCIgWT0iMCIgV2lkdGg9IjE3OCIgSGVpZ2h0PSIzODIiIEltYWdlRmlsZT0iU2lkZUJhci5wbmciLz4KIAotICAgICAgICA8SHlwZXJ0ZXh0IE5hbWU9IlN1Y2Nlc3NUZXh0IiBYPSIyMDUiIFk9IjcxIiBXaWR0aD0iLTMxIiBIZWlnaHQ9IjEwMCIgRm9udElkPSIzIiBEaXNhYmxlUHJlZml4PSJ5ZXMiPjwvSHlwZXJ0ZXh0PgorICAgICAgICA8SHlwZXJ0ZXh0IE5hbWU9IlN1Y2Nlc3NUZXh0IiBYPSIyMDUiIFk9IjcxIiBXaWR0aD0iLTcxIiBIZWlnaHQ9IjE1MCIgRm9udElkPSIzIiBEaXNhYmxlUHJlZml4PSJ5ZXMiPjwvSHlwZXJ0ZXh0PgogCi0gICAgICAgIDxUZXh0IE5hbWU9IlN1Y2Nlc3NSZXN0YXJ0VGV4dCIgWD0iMjA1IiBZPSItMTAwIiBXaWR0aD0iLTExIiBIZWlnaHQ9IjM0IiBGb250SWQ9IjMiIEhpZGVXaGVuRGlzYWJsZWQ9InllcyIgRGlzYWJsZVByZWZpeD0ieWVzIj4jKGxvYy5TdWNjZXNzUmVzdGFydFRleHQpPC9UZXh0PgotICAgICAgICA8QnV0dG9uIE5hbWU9IkxhdW5jaEJ1dHRvbiIgWD0iMTg1IiBZPSItNTAiIFdpZHRoPSItMTEiIEhlaWdodD0iNTkiIFRhYlN0b3A9InllcyIgRm9udElkPSIzIiBIZXhTdHlsZT0iMHhGIiBIaWRlV2hlbkRpc2FibGVkPSJ5ZXMiPiMobG9jLlN1Y2Nlc3NMYXVuY2hCdXR0b24pPC9CdXR0b24+CisgICAgICAgIDxCdXR0b24gTmFtZT0iU3VjY2Vzc01heFBhdGhCdXR0b24iIFg9IjE4NSIgWT0iLTcwIiBXaWR0aD0iLTExIiBIZWlnaHQ9IjgxIiBUYWJTdG9wPSJ5ZXMiIEZvbnRJZD0iMyIgSGV4U3R5bGU9IjB4RSIgSGlkZVdoZW5EaXNhYmxlZD0ieWVzIj4jKGxvYy5TdWNjZXNzTWF4UGF0aEJ1dHRvbik8L0J1dHRvbj4KKworICAgICAgICA8VGV4dCBOYW1lPSJTdWNjZXNzUmVzdGFydFRleHQiIFg9IjIwNSIgWT0iLTQwIiBXaWR0aD0iLTExIiBIZWlnaHQ9IjM0IiBGb250SWQ9IjMiIEhpZGVXaGVuRGlzYWJsZWQ9InllcyIgRGlzYWJsZVByZWZpeD0ieWVzIj4jKGxvYy5TdWNjZXNzUmVzdGFydFRleHQpPC9UZXh0PgogICAgICAgICA8QnV0dG9uIE5hbWU9IlN1Y2Nlc3NSZXN0YXJ0QnV0dG9uIiBYPSItMTAxIiBZPSItMTEiIFdpZHRoPSI4NSIgSGVpZ2h0PSIyNyIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjAiIEhpZGVXaGVuRGlzYWJsZWQ9InllcyI+Iyhsb2MuU3VjY2Vzc1Jlc3RhcnRCdXR0b24pPC9CdXR0b24+CiAgICAgICAgIDxCdXR0b24gTmFtZT0iU3VjY2Vzc0NhbmNlbEJ1dHRvbiIgWD0iLTExIiBZPSItMTEiIFdpZHRoPSI4NSIgSGVpZ2h0PSIyNyIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjAiPiMobG9jLkNsb3NlQnV0dG9uKTwvQnV0dG9uPgogICAgIDwvUGFnZT4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvRGVmYXVsdC53eGwgYi9Ub29scy9tc2kvYnVuZGxlL0RlZmF1bHQud3hsCmluZGV4IGVkNzkyNDYuLjQzNTA2ZDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9idW5kbGUvRGVmYXVsdC53eGwKKysrIGIvVG9vbHMvbXNpL2J1bmRsZS9EZWZhdWx0Lnd4bApAQCAtMTQyLDQgKzE0Miw3IEBACiAgIDxTdHJpbmcgSWQ9IkZhaWx1cmVXUzJLM09yRWFybGllciI+V2luZG93cyBTZXJ2ZXIgMjAwOCBTUDIgb3IgbGF0ZXIgaXMgcmVxdWlyZWQgdG8gaW5zdGFsbCBhbmQgdXNlIFtXaXhCdW5kbGVOYW1lXS4KIAogVmlzaXQgJmx0O2EgaHJlZj0iaHR0cHM6Ly93d3cucHl0aG9uLm9yZy8iJmd0O3B5dGhvbi5vcmcmbHQ7L2EmZ3Q7IHRvIGRvd25sb2FkIFB5dGhvbiAzLjQuPC9TdHJpbmc+CisKKyAgPFN0cmluZyBJZD0iU3VjY2Vzc01heFBhdGhCdXR0b24iPkRpc2FibGUgcGF0aCBsZW5ndGggbGltaXQ8L1N0cmluZz4KKyAgPFN0cmluZyBJZD0iU3VjY2Vzc01heFBhdGhCdXR0b25Ob3RlIj5DaGFuZ2VzIHlvdXIgbWFjaGluZSBjb25maWd1cmF0aW9uIHRvIGFsbG93IHByb2dyYW1zLCBpbmNsdWRpbmcgUHl0aG9uLCB0byBieXBhc3MgdGhlIDI2MCBjaGFyYWN0ZXIgIk1BWF9QQVRIIiBsaW1pdGF0aW9uLjwvU3RyaW5nPgogPC9XaXhMb2NhbGl6YXRpb24+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9QeXRob25Cb290c3RyYXBwZXJBcHBsaWNhdGlvbi5jcHAgYi9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9QeXRob25Cb290c3RyYXBwZXJBcHBsaWNhdGlvbi5jcHAKaW5kZXggNmE2N2VlMi4uZTg4OTgxZiAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL2J1bmRsZS9ib290c3RyYXAvUHl0aG9uQm9vdHN0cmFwcGVyQXBwbGljYXRpb24uY3BwCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvYm9vdHN0cmFwL1B5dGhvbkJvb3RzdHJhcHBlckFwcGxpY2F0aW9uLmNwcApAQCAtMTEsMTAgKzExLDYgQEAKICNpbmNsdWRlICJwY2guaCIKIAogc3RhdGljIGNvbnN0IExQQ1dTVFIgUFlCQV9XSU5ET1dfQ0xBU1MgPSBMIlB5dGhvbkJBIjsKLXN0YXRpYyBjb25zdCBMUENXU1RSIFBZQkFfVkFSSUFCTEVfTEFVTkNIX1RBUkdFVF9QQVRIID0gTCJMYXVuY2hUYXJnZXQiOwotc3RhdGljIGNvbnN0IExQQ1dTVFIgUFlCQV9WQVJJQUJMRV9MQVVOQ0hfVEFSR0VUX0VMRVZBVEVEX0lEID0gTCJMYXVuY2hUYXJnZXRFbGV2YXRlZElkIjsKLXN0YXRpYyBjb25zdCBMUENXU1RSIFBZQkFfVkFSSUFCTEVfTEFVTkNIX0FSR1VNRU5UUyA9IEwiTGF1bmNoQXJndW1lbnRzIjsKLXN0YXRpYyBjb25zdCBMUENXU1RSIFBZQkFfVkFSSUFCTEVfTEFVTkNIX0hJRERFTiA9IEwiTGF1bmNoSGlkZGVuIjsKIHN0YXRpYyBjb25zdCBEV09SRCBQWUJBX0FDUVVJUkVfUEVSQ0VOVEFHRSA9IDMwOwogc3RhdGljIGNvbnN0IExQQ1dTVFIgUFlCQV9WQVJJQUJMRV9CVU5ETEVfRklMRV9WRVJTSU9OID0gTCJXaXhCdW5kbGVGaWxlVmVyc2lvbiI7CiAKQEAgLTEyOSwxMSArMTI1LDExIEBACiAgICAgSURfUFJPR1JFU1NfQ0FOQ0VMX0JVVFRPTiwKIAogICAgIC8vIFN1Y2Nlc3MgcGFnZQotICAgIElEX0xBVU5DSF9CVVRUT04sCiAgICAgSURfU1VDQ0VTU19URVhULAogICAgIElEX1NVQ0NFU1NfUkVTVEFSVF9URVhULAogICAgIElEX1NVQ0NFU1NfUkVTVEFSVF9CVVRUT04sCiAgICAgSURfU1VDQ0VTU19DQU5DRUxfQlVUVE9OLAorICAgIElEX1NVQ0NFU1NfTUFYX1BBVEhfQlVUVE9OLAogCiAgICAgLy8gRmFpbHVyZSBwYWdlCiAgICAgSURfRkFJTFVSRV9MT0dGSUxFX0xJTkssCkBAIC0xODgsMTEgKzE4NCwxMSBAQAogICAgIHsgSURfT1ZFUkFMTF9QUk9HUkVTU19URVhULCBMIk92ZXJhbGxQcm9ncmVzc1RleHQiIH0sCiAgICAgeyBJRF9QUk9HUkVTU19DQU5DRUxfQlVUVE9OLCBMIlByb2dyZXNzQ2FuY2VsQnV0dG9uIiB9LAogCi0gICAgeyBJRF9MQVVOQ0hfQlVUVE9OLCBMIkxhdW5jaEJ1dHRvbiIgfSwKICAgICB7IElEX1NVQ0NFU1NfVEVYVCwgTCJTdWNjZXNzVGV4dCIgfSwKICAgICB7IElEX1NVQ0NFU1NfUkVTVEFSVF9URVhULCBMIlN1Y2Nlc3NSZXN0YXJ0VGV4dCIgfSwKICAgICB7IElEX1NVQ0NFU1NfUkVTVEFSVF9CVVRUT04sIEwiU3VjY2Vzc1Jlc3RhcnRCdXR0b24iIH0sCiAgICAgeyBJRF9TVUNDRVNTX0NBTkNFTF9CVVRUT04sIEwiU3VjY2Vzc0NhbmNlbEJ1dHRvbiIgfSwKKyAgICB7IElEX1NVQ0NFU1NfTUFYX1BBVEhfQlVUVE9OLCBMIlN1Y2Nlc3NNYXhQYXRoQnV0dG9uIiB9LAogCiAgICAgeyBJRF9GQUlMVVJFX0xPR0ZJTEVfTElOSywgTCJGYWlsdXJlTG9nRmlsZUxpbmsiIH0sCiAgICAgeyBJRF9GQUlMVVJFX01FU1NBR0VfVEVYVCwgTCJGYWlsdXJlTWVzc2FnZVRleHQiIH0sCkBAIC00MzYsNiArNDMyLDExIEBACiAgICAgICAgIGNhc2UgSURfVU5JTlNUQUxMX0JVVFRPTjoKICAgICAgICAgICAgIE9uUGxhbihCT09UU1RSQVBQRVJfQUNUSU9OX1VOSU5TVEFMTCk7CiAgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIElEX1NVQ0NFU1NfTUFYX1BBVEhfQlVUVE9OOgorICAgICAgICAgICAgRW5hYmxlTWF4UGF0aFN1cHBvcnQoKTsKKyAgICAgICAgICAgIFRoZW1lQ29udHJvbEVuYWJsZShfdGhlbWUsIElEX1NVQ0NFU1NfTUFYX1BBVEhfQlVUVE9OLCBGQUxTRSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCiAgICAgTEV4aXQ6CkBAIC01MzMsOSArNTM0LDggQEAKICAgICB9CiAKICAgICB2b2lkIFN1Y2Nlc3NQYWdlX1Nob3coKSB7Ci0gICAgICAgIC8vIG9uIHRoZSAiU3VjY2VzcyIgcGFnZSwgY2hlY2sgaWYgdGhlIHJlc3RhcnQgb3IgbGF1bmNoIGJ1dHRvbiBzaG91bGQgYmUgZW5hYmxlZC4KKyAgICAgICAgLy8gb24gdGhlICJTdWNjZXNzIiBwYWdlLCBjaGVjayBpZiB0aGUgcmVzdGFydCBidXR0b24gc2hvdWxkIGJlIGVuYWJsZWQuCiAgICAgICAgIEJPT0wgc2hvd1Jlc3RhcnRCdXR0b24gPSBGQUxTRTsKLSAgICAgICAgQk9PTCBsYXVuY2hUYXJnZXRFeGlzdHMgPSBGQUxTRTsKICAgICAgICAgTE9DX1NUUklORyAqc3VjY2Vzc1RleHQgPSBudWxscHRyOwogICAgICAgICBIUkVTVUxUIGhyID0gU19PSzsKICAgICAgICAgCkBAIC01NDMsOCArNTQzLDYgQEAKICAgICAgICAgICAgIGlmIChCT09UU1RSQVBQRVJfUkVTVEFSVF9QUk9NUFQgPT0gX2NvbW1hbmQucmVzdGFydCkgewogICAgICAgICAgICAgICAgIHNob3dSZXN0YXJ0QnV0dG9uID0gVFJVRTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChUaGVtZUNvbnRyb2xFeGlzdHMoX3RoZW1lLCBJRF9MQVVOQ0hfQlVUVE9OKSkgewotICAgICAgICAgICAgbGF1bmNoVGFyZ2V0RXhpc3RzID0gQmFsU3RyaW5nVmFyaWFibGVFeGlzdHMoUFlCQV9WQVJJQUJMRV9MQVVOQ0hfVEFSR0VUX1BBVEgpOwogICAgICAgICB9CiAKICAgICAgICAgc3dpdGNoIChfcGxhbm5lZEFjdGlvbikgewpAQCAtNTcxLDkgKzU2OSw0MSBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgVGhlbWVDb250cm9sRW5hYmxlKF90aGVtZSwgSURfTEFVTkNIX0JVVFRPTiwgbGF1bmNoVGFyZ2V0RXhpc3RzICYmIEJPT1RTVFJBUFBFUl9BQ1RJT05fVU5JTlNUQUxMIDwgX3BsYW5uZWRBY3Rpb24pOwogICAgICAgICBUaGVtZUNvbnRyb2xFbmFibGUoX3RoZW1lLCBJRF9TVUNDRVNTX1JFU1RBUlRfVEVYVCwgc2hvd1Jlc3RhcnRCdXR0b24pOwogICAgICAgICBUaGVtZUNvbnRyb2xFbmFibGUoX3RoZW1lLCBJRF9TVUNDRVNTX1JFU1RBUlRfQlVUVE9OLCBzaG93UmVzdGFydEJ1dHRvbik7CisKKyAgICAgICAgaWYgKF9jb21tYW5kLmFjdGlvbiAhPSBCT09UU1RSQVBQRVJfQUNUSU9OX0lOU1RBTEwgfHwKKyAgICAgICAgICAgICFJc1dpbmRvd3NWZXJzaW9uT3JHcmVhdGVyKDEwLCAwLCAwKSkgeworICAgICAgICAgICAgVGhlbWVDb250cm9sRW5hYmxlKF90aGVtZSwgSURfU1VDQ0VTU19NQVhfUEFUSF9CVVRUT04sIEZBTFNFKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIERXT1JEIGRhdGFUeXBlID0gMCwgYnVmZmVyID0gMCwgYnVmZmVyTGVuID0gc2l6ZW9mKGJ1ZmZlcik7CisgICAgICAgICAgICBIS0VZIGhLZXk7CisgICAgICAgICAgICBMUkVTVUxUIHJlcyA9IFJlZ09wZW5LZXlFeFcoCisgICAgICAgICAgICAgICAgSEtFWV9MT0NBTF9NQUNISU5FLAorICAgICAgICAgICAgICAgIEwiU1lTVEVNXFxDdXJyZW50Q29udHJvbFNldFxcQ29udHJvbFxcRmlsZVN5c3RlbSIsCisgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICBLRVlfUkVBRCwKKyAgICAgICAgICAgICAgICAmaEtleQorICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIGlmIChyZXMgPT0gRVJST1JfU1VDQ0VTUykgeworICAgICAgICAgICAgICAgIHJlcyA9IFJlZ1F1ZXJ5VmFsdWVFeFcoaEtleSwgTCJMb25nUGF0aHNFbmFibGVkIiwgbnVsbHB0ciwgJmRhdGFUeXBlLAorICAgICAgICAgICAgICAgICAgICAoTFBCWVRFKSZidWZmZXIsICZidWZmZXJMZW4pOworICAgICAgICAgICAgICAgIFJlZ0Nsb3NlS2V5KGhLZXkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgQmFsTG9nKEJPT1RTVFJBUFBFUl9MT0dfTEVWRUxfU1RBTkRBUkQsICJGYWlsZWQgdG8gb3BlbiBTWVNURU1cXEN1cnJlbnRDb250cm9sU2V0XFxDb250cm9sXFxGaWxlU3lzdGVtOiBlcnJvciBjb2RlICVkIiwgcmVzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChyZXMgPT0gRVJST1JfU1VDQ0VTUyAmJiBkYXRhVHlwZSA9PSBSRUdfRFdPUkQgJiYgYnVmZmVyID09IDApIHsKKyAgICAgICAgICAgICAgICBUaGVtZUNvbnRyb2xFbGV2YXRlcyhfdGhlbWUsIElEX1NVQ0NFU1NfTUFYX1BBVEhfQlVUVE9OLCBUUlVFKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChyZXMgPT0gRVJST1JfU1VDQ0VTUykKKyAgICAgICAgICAgICAgICAgICAgQmFsTG9nKEJPT1RTVFJBUFBFUl9MT0dfTEVWRUxfU1RBTkRBUkQsICJGYWlsZWQgdG8gcmVhZCBMb25nUGF0aHNFbmFibGVkIHZhbHVlOiBlcnJvciBjb2RlICVkIiwgcmVzKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIEJhbExvZyhCT09UU1RSQVBQRVJfTE9HX0xFVkVMX1NUQU5EQVJELCAiSGlkaW5nIE1BWF9QQVRIIGJ1dHRvbiBiZWNhdXNlIGl0IGlzIGFscmVhZHkgZW5hYmxlZCIpOworICAgICAgICAgICAgICAgIFRoZW1lQ29udHJvbEVuYWJsZShfdGhlbWUsIElEX1NVQ0NFU1NfTUFYX1BBVEhfQlVUVE9OLCBGQUxTRSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiAKICAgICB2b2lkIEZhaWx1cmVQYWdlX1Nob3coKSB7CkBAIC02MjYsNiArNjU2LDM0IEBACiAgICAgICAgIFRoZW1lQ29udHJvbEVuYWJsZShfdGhlbWUsIElEX0ZBSUxVUkVfUkVTVEFSVF9CVVRUT04sIHNob3dSZXN0YXJ0QnV0dG9uKTsKICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCBFbmFibGVNYXhQYXRoU3VwcG9ydCgpIHsKKyAgICAgICAgTFBXU1RSIHRhcmdldERpciA9IG51bGxwdHIsIGRlZmF1bHREaXIgPSBudWxscHRyOworICAgICAgICBIUkVTVUxUIGhyID0gQmFsR2V0U3RyaW5nVmFyaWFibGUoTCJUYXJnZXREaXIiLCAmdGFyZ2V0RGlyKTsKKyAgICAgICAgaWYgKEZBSUxFRChocikgfHwgIXRhcmdldERpciB8fCAhdGFyZ2V0RGlyWzBdKSB7CisgICAgICAgICAgICBCYWxMb2coQk9PVFNUUkFQUEVSX0xPR19MRVZFTF9FUlJPUiwgIkZhaWxlZCB0byBnZXQgVGFyZ2V0RGlyIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBMUFdTVFIgcHl0aG9udyA9IG51bGxwdHI7CisgICAgICAgIFN0ckFsbG9jRm9ybWF0dGVkKCZweXRob253LCBMIiVsc1xccHl0aG9udy5leGUiLCB0YXJnZXREaXIpOworICAgICAgICBpZiAoIXB5dGhvbncgfHwgIXB5dGhvbndbMF0pIHsKKyAgICAgICAgICAgIEJhbExvZyhCT09UU1RSQVBQRVJfTE9HX0xFVkVMX0VSUk9SLCAiRmFpbGVkIHRvIGNvbnN0cnVjdCBweXRob253LmV4ZSBwYXRoIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBMUENXU1RSIGFyZ3VtZW50cyA9IEwiLWMgXCJpbXBvcnQgd2lucmVnOyAiCisgICAgICAgICAgICAid2lucmVnLlNldFZhbHVlRXgoIgorICAgICAgICAgICAgICAgICJ3aW5yZWcuQ3JlYXRlS2V5KHdpbnJlZy5IS0VZX0xPQ0FMX01BQ0hJTkUsICIKKyAgICAgICAgICAgICAgICAgICAgInInU1lTVEVNXFxDdXJyZW50Q29udHJvbFNldFxcQ29udHJvbFxcRmlsZVN5c3RlbScpLCAiCisgICAgICAgICAgICAgICAgIidMb25nUGF0aHNFbmFibGVkJywgIgorICAgICAgICAgICAgICAgICJOb25lLCAiCisgICAgICAgICAgICAgICAgIndpbnJlZy5SRUdfRFdPUkQsICIKKyAgICAgICAgICAgICAgICAiMSIKKyAgICAgICAgICAgICIpXCIiOworICAgICAgICBCYWxMb2coQk9PVFNUUkFQUEVSX0xPR19MRVZFTF9TVEFOREFSRCwgIkV4ZWN1dGluZyAlbHMgJWxzIiwgcHl0aG9udywgYXJndW1lbnRzKTsKKyAgICAgICAgSElOU1RBTkNFIHJlcyA9IFNoZWxsRXhlY3V0ZVcoMCwgTCJydW5hcyIsIHB5dGhvbncsIGFyZ3VtZW50cywgTlVMTCwgU1dfSElERSk7CisgICAgICAgIEJhbExvZyhCT09UU1RSQVBQRVJfTE9HX0xFVkVMX1NUQU5EQVJELCAicmV0dXJuIGNvZGUgMHglMDh4IiwgcmVzKTsKKyAgICB9CiAKIHB1YmxpYzogLy8gSUJvb3RzdHJhcHBlckFwcGxpY2F0aW9uCiAgICAgdmlydHVhbCBTVERNRVRIT0RJTVAgT25TdGFydHVwKCkgewpAQCAtMTIxNiwxMiArMTI3NCw2IEBACiAgICAgfQogCiAgICAgdmlydHVhbCBTVERNRVRIT0RJTVBfKHZvaWQpIE9uTGF1bmNoQXBwcm92ZWRFeGVDb21wbGV0ZShfX2luIEhSRVNVTFQgaHJTdGF0dXMsIF9faW4gRFdPUkQgLypwcm9jZXNzSWQqLykgewotICAgICAgICBpZiAoSFJFU1VMVF9GUk9NX1dJTjMyKEVSUk9SX0FDQ0VTU19ERU5JRUQpID09IGhyU3RhdHVzKSB7Ci0gICAgICAgICAgICAvL3RyeSB3aXRoIFNoZWxFeGVjIG5leHQgdGltZQotICAgICAgICAgICAgT25DbGlja0xhdW5jaEJ1dHRvbigpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgOjpQb3N0TWVzc2FnZVcoX2hXbmQsIFdNX0NMT1NFLCAwLCAwKTsKLSAgICAgICAgfQogICAgIH0KIAogCkBAIC0xODY3LDEwICsxOTE5LDYgQEAKICAgICAgICAgICAgIHN3aXRjaCAoTE9XT1JEKHdQYXJhbSkpIHsKICAgICAgICAgICAgIC8vIEN1c3RvbWl6ZSBjb21tYW5kcwogICAgICAgICAgICAgLy8gU3VjY2Vzcy9mYWlsdXJlIGNvbW1hbmRzCi0gICAgICAgICAgICBjYXNlIElEX0xBVU5DSF9CVVRUT046Ci0gICAgICAgICAgICAgICAgcEJBLT5PbkNsaWNrTGF1bmNoQnV0dG9uKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0KICAgICAgICAgICAgIGNhc2UgSURfU1VDQ0VTU19SRVNUQVJUX0JVVFRPTjogX19mYWxsdGhyb3VnaDsKICAgICAgICAgICAgIGNhc2UgSURfRkFJTFVSRV9SRVNUQVJUX0JVVFRPTjoKICAgICAgICAgICAgICAgICBwQkEtPk9uQ2xpY2tSZXN0YXJ0QnV0dG9uKCk7CkBAIC0yMzcyLDY5ICsyNDIwLDYgQEAKICAgICB9CiAKIAotICAgIC8vCi0gICAgLy8gT25DbGlja0xhdW5jaEJ1dHRvbiAtIGxhdW5jaCB0aGUgYXBwIGZyb20gdGhlIHN1Y2Nlc3MgcGFnZS4KLSAgICAvLwotICAgIHZvaWQgT25DbGlja0xhdW5jaEJ1dHRvbigpIHsKLSAgICAgICAgSFJFU1VMVCBociA9IFNfT0s7Ci0gICAgICAgIExQV1NUUiBzY3pVbmZvcm1hdHRlZExhdW5jaFRhcmdldCA9IG51bGxwdHI7Ci0gICAgICAgIExQV1NUUiBzY3pMYXVuY2hUYXJnZXQgPSBudWxscHRyOwotICAgICAgICBMUFdTVFIgc2N6TGF1bmNoVGFyZ2V0RWxldmF0ZWRJZCA9IG51bGxwdHI7Ci0gICAgICAgIExQV1NUUiBzY3pVbmZvcm1hdHRlZEFyZ3VtZW50cyA9IG51bGxwdHI7Ci0gICAgICAgIExQV1NUUiBzY3pBcmd1bWVudHMgPSBudWxscHRyOwotICAgICAgICBpbnQgbkNtZFNob3cgPSBTV19TSE9XTk9STUFMOwotCi0gICAgICAgIGhyID0gQmFsR2V0U3RyaW5nVmFyaWFibGUoUFlCQV9WQVJJQUJMRV9MQVVOQ0hfVEFSR0VUX1BBVEgsICZzY3pVbmZvcm1hdHRlZExhdW5jaFRhcmdldCk7Ci0gICAgICAgIEJhbEV4aXRPbkZhaWx1cmUxKGhyLCAiRmFpbGVkIHRvIGdldCBsYXVuY2ggdGFyZ2V0IHZhcmlhYmxlICclbHMnLiIsIFBZQkFfVkFSSUFCTEVfTEFVTkNIX1RBUkdFVF9QQVRIKTsKLQotICAgICAgICBociA9IEJhbEZvcm1hdFN0cmluZyhzY3pVbmZvcm1hdHRlZExhdW5jaFRhcmdldCwgJnNjekxhdW5jaFRhcmdldCk7Ci0gICAgICAgIEJhbEV4aXRPbkZhaWx1cmUxKGhyLCAiRmFpbGVkIHRvIGZvcm1hdCBsYXVuY2ggdGFyZ2V0IHZhcmlhYmxlOiAlbHMiLCBzY3pVbmZvcm1hdHRlZExhdW5jaFRhcmdldCk7Ci0KLSAgICAgICAgaWYgKEJhbFN0cmluZ1ZhcmlhYmxlRXhpc3RzKFBZQkFfVkFSSUFCTEVfTEFVTkNIX1RBUkdFVF9FTEVWQVRFRF9JRCkpIHsKLSAgICAgICAgICAgIGhyID0gQmFsR2V0U3RyaW5nVmFyaWFibGUoUFlCQV9WQVJJQUJMRV9MQVVOQ0hfVEFSR0VUX0VMRVZBVEVEX0lELCAmc2N6TGF1bmNoVGFyZ2V0RWxldmF0ZWRJZCk7Ci0gICAgICAgICAgICBCYWxFeGl0T25GYWlsdXJlMShociwgIkZhaWxlZCB0byBnZXQgbGF1bmNoIHRhcmdldCBlbGV2YXRlZCBpZCAnJWxzJy4iLCBQWUJBX1ZBUklBQkxFX0xBVU5DSF9UQVJHRVRfRUxFVkFURURfSUQpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKEJhbFN0cmluZ1ZhcmlhYmxlRXhpc3RzKFBZQkFfVkFSSUFCTEVfTEFVTkNIX0FSR1VNRU5UUykpIHsKLSAgICAgICAgICAgIGhyID0gQmFsR2V0U3RyaW5nVmFyaWFibGUoUFlCQV9WQVJJQUJMRV9MQVVOQ0hfQVJHVU1FTlRTLCAmc2N6VW5mb3JtYXR0ZWRBcmd1bWVudHMpOwotICAgICAgICAgICAgQmFsRXhpdE9uRmFpbHVyZTEoaHIsICJGYWlsZWQgdG8gZ2V0IGxhdW5jaCBhcmd1bWVudHMgJyVscycuIiwgUFlCQV9WQVJJQUJMRV9MQVVOQ0hfQVJHVU1FTlRTKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChCYWxTdHJpbmdWYXJpYWJsZUV4aXN0cyhQWUJBX1ZBUklBQkxFX0xBVU5DSF9ISURERU4pKSB7Ci0gICAgICAgICAgICBuQ21kU2hvdyA9IFNXX0hJREU7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoc2N6TGF1bmNoVGFyZ2V0RWxldmF0ZWRJZCAmJiAhX3RyaWVkVG9MYXVuY2hFbGV2YXRlZCkgewotICAgICAgICAgICAgX3RyaWVkVG9MYXVuY2hFbGV2YXRlZCA9IFRSVUU7Ci0gICAgICAgICAgICBociA9IF9lbmdpbmUtPkxhdW5jaEFwcHJvdmVkRXhlKF9oV25kLCBzY3pMYXVuY2hUYXJnZXRFbGV2YXRlZElkLCBzY3pVbmZvcm1hdHRlZEFyZ3VtZW50cywgMCk7Ci0gICAgICAgICAgICBpZiAoRkFJTEVEKGhyKSkgewotICAgICAgICAgICAgICAgIEJhbExvZ0Vycm9yKGhyLCAiRmFpbGVkIHRvIGxhdW5jaCBlbGV2YXRlZCB0YXJnZXQ6ICVscyIsIHNjekxhdW5jaFRhcmdldEVsZXZhdGVkSWQpOwotCi0gICAgICAgICAgICAgICAgLy90cnkgd2l0aCBTaGVsRXhlYyBuZXh0IHRpbWUKLSAgICAgICAgICAgICAgICBPbkNsaWNrTGF1bmNoQnV0dG9uKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoc2N6VW5mb3JtYXR0ZWRBcmd1bWVudHMpIHsKLSAgICAgICAgICAgICAgICBociA9IEJhbEZvcm1hdFN0cmluZyhzY3pVbmZvcm1hdHRlZEFyZ3VtZW50cywgJnNjekFyZ3VtZW50cyk7Ci0gICAgICAgICAgICAgICAgQmFsRXhpdE9uRmFpbHVyZTEoaHIsICJGYWlsZWQgdG8gZm9ybWF0IGxhdW5jaCBhcmd1bWVudHMgdmFyaWFibGU6ICVscyIsIHNjelVuZm9ybWF0dGVkQXJndW1lbnRzKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaHIgPSBTaGVsRXhlYyhzY3pMYXVuY2hUYXJnZXQsIHNjekFyZ3VtZW50cywgTCJvcGVuIiwgbnVsbHB0ciwgbkNtZFNob3csIF9oV25kLCBudWxscHRyKTsKLSAgICAgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUxKGhyLCAiRmFpbGVkIHRvIGxhdW5jaCB0YXJnZXQ6ICVscyIsIHNjekxhdW5jaFRhcmdldCk7Ci0KLSAgICAgICAgICAgIDo6UG9zdE1lc3NhZ2VXKF9oV25kLCBXTV9DTE9TRSwgMCwgMCk7Ci0gICAgICAgIH0KLQotICAgIExFeGl0OgotICAgICAgICBTdHJTZWN1cmVaZXJvRnJlZVN0cmluZyhzY3pBcmd1bWVudHMpOwotICAgICAgICBSZWxlYXNlU3RyKHNjelVuZm9ybWF0dGVkQXJndW1lbnRzKTsKLSAgICAgICAgUmVsZWFzZVN0cihzY3pMYXVuY2hUYXJnZXRFbGV2YXRlZElkKTsKLSAgICAgICAgU3RyU2VjdXJlWmVyb0ZyZWVTdHJpbmcoc2N6TGF1bmNoVGFyZ2V0KTsKLSAgICAgICAgUmVsZWFzZVN0cihzY3pVbmZvcm1hdHRlZExhdW5jaFRhcmdldCk7Ci0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogCiAgICAgLy8KICAgICAvLyBPbkNsaWNrUmVzdGFydEJ1dHRvbiAtIGFsbG93cyB0aGUgcmVzdGFydCBhbmQgY2xvc2VzIHRoZSBhcHAuCkBAIC0zMTU3LDcgKzMxNDIsNiBAQAogICAgICAgICBfdGFza2JhckJ1dHRvbkNyZWF0ZWRNZXNzYWdlID0gVUlOVF9NQVg7CiAgICAgICAgIF90YXNrYmFyQnV0dG9uT0sgPSBGQUxTRTsKICAgICAgICAgX3Nob3dpbmdJbnRlcm5hbFVJVGhpc1BhY2thZ2UgPSBGQUxTRTsKLSAgICAgICAgX3RyaWVkVG9MYXVuY2hFbGV2YXRlZCA9IEZBTFNFOwogCiAgICAgICAgIF9zdXBwcmVzc1BhaW50ID0gRkFMU0U7CiAKQEAgLTMyNDIsNyArMzIyNiw2IEBACiAgICAgVUlOVCBfdGFza2JhckJ1dHRvbkNyZWF0ZWRNZXNzYWdlOwogICAgIEJPT0wgX3Rhc2tiYXJCdXR0b25PSzsKICAgICBCT09MIF9zaG93aW5nSW50ZXJuYWxVSVRoaXNQYWNrYWdlOwotICAgIEJPT0wgX3RyaWVkVG9MYXVuY2hFbGV2YXRlZDsKIAogICAgIEJPT0wgX3N1cHByZXNzUGFpbnQ7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvYnVuZGxlLmljbyBiL1Rvb2xzL21zaS9idW5kbGUvYnVuZGxlLmljbwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWFiNjI5ZS4uMDAwMDAwMAotLS0gYS9Ub29scy9tc2kvYnVuZGxlL2J1bmRsZS5pY28KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL2J1bmRsZS53eHMgYi9Ub29scy9tc2kvYnVuZGxlL2J1bmRsZS53eHMKaW5kZXggZWRhMDg4NC4uMDJhNDU2YiAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL2J1bmRsZS9idW5kbGUud3hzCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvYnVuZGxlLnd4cwpAQCAtNSw3ICs1LDcgQEAKICAgPEJ1bmRsZSBOYW1lPSIhKGxvYy5GdWxsUHJvZHVjdE5hbWUpIgogICAgICAgICAgIFVwZ3JhZGVDb2RlPSIkKHZhci5Db3JlVXBncmFkZUNvZGUpIgogICAgICAgICAgIFZlcnNpb249IiQodmFyLlZlcnNpb24pIgotICAgICAgICAgIEljb25Tb3VyY2VGaWxlPSJidW5kbGUuaWNvIgorICAgICAgICAgIEljb25Tb3VyY2VGaWxlPSIuLlwuLlwuLlxQQ1xpY29uc1xzZXR1cC5pY28iCiAgICAgICAgICAgTWFudWZhY3R1cmVyPSIhKGxvYy5NYW51ZmFjdHVyZXIpIgogICAgICAgICAgIEFib3V0VXJsPSJodHRwOi8vd3d3LnB5dGhvbi5vcmcvIgogICAgICAgICAgIERpc2FibGVNb2RpZnk9ImJ1dHRvbiIKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9jb21tb24ud3hzIGIvVG9vbHMvbXNpL2NvbW1vbi53eHMKaW5kZXggNGVmYWQ2NS4uMzk4ZDk0YSAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL2NvbW1vbi53eHMKKysrIGIvVG9vbHMvbXNpL2NvbW1vbi53eHMKQEAgLTEsNiArMSwxMCBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KIDxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgogICAgIDxGcmFnbWVudD4KKyAgICAgICAgPFByb3BlcnR5IElkPSJST09UUkVHSVNUUllLRVkiIFZhbHVlPSJTb2Z0d2FyZVxQeXRob25cUHl0aG9uQ29yZSIgLz4KKyAgICA8L0ZyYWdtZW50PgorICAgIAorICAgIDxGcmFnbWVudD4KICAgICAgICAgPFByb3BlcnR5IElkPSJSRUdJU1RSWUtFWSIgVmFsdWU9IlNvZnR3YXJlXFB5dGhvblxQeXRob25Db3JlXCQodmFyLlNob3J0VmVyc2lvbikkKHZhci5QeUFyY2hFeHQpJCh2YXIuUHlUZXN0RXh0KSIgLz4KICAgICA8L0ZyYWdtZW50PgogICAgIApAQCAtMTYsMTAgKzIwLDEyIEBACiAgICAgPEZyYWdtZW50PgogICAgICAgICA8UHJvcGVydHkgSWQ9IlVwZ3JhZGVUYWJsZSIgVmFsdWU9IjEiIC8+CiAgICAgICAgIAorICAgICAgICA8P2lmbmRlZiBTdXBwcmVzc1VwZ3JhZGVUYWJsZSA/PgogICAgICAgICA8VXBncmFkZSBJZD0iJCh2YXIuVXBncmFkZUNvZGUpIj4KICAgICAgICAgICAgIDxVcGdyYWRlVmVyc2lvbiBQcm9wZXJ0eT0iRE9XTkdSQURFIiBNaW5pbXVtPSIkKHZhci5WZXJzaW9uKSIgSW5jbHVkZU1pbmltdW09Im5vIiBPbmx5RGV0ZWN0PSJ5ZXMiIC8+CiAgICAgICAgICAgICA8VXBncmFkZVZlcnNpb24gUHJvcGVydHk9IlVQR1JBREUiIE1pbmltdW09IiQodmFyLlVwZ3JhZGVNaW5pbXVtVmVyc2lvbikiIEluY2x1ZGVNaW5pbXVtPSJ5ZXMiIE1heGltdW09IiQodmFyLlZlcnNpb24pIiBJbmNsdWRlTWF4aW11bT0ibm8iIC8+CiAgICAgICAgIDwvVXBncmFkZT4KKyAgICAgICAgPD9lbmRpZiA/PgogICAgICAgICAKICAgICAgICAgPD9pZmRlZiBDb3JlVXBncmFkZUNvZGUgPz4KICAgICAgICAgPD9pZiAkKHZhci5VcGdyYWRlQ29kZSkhPSQodmFyLkNvcmVVcGdyYWRlQ29kZSkgPz4KQEAgLTQwLDcgKzQ2LDcgQEAKICAgICAKICAgICA8RnJhZ21lbnQ+CiAgICAgICAgIDwhLS0gSW5jbHVkZSBhbiBpY29uIGZvciB0aGUgUHJvZ3JhbXMgYW5kIEZlYXR1cmVzIGRpYWxvZyAtLT4KLSAgICAgICAgPEljb24gSWQ9IkFSUEljb24iIFNvdXJjZUZpbGU9IiEoYmluZHBhdGguc3JjKVBDXHB5Y29uLmljbyIgLz4KKyAgICAgICAgPEljb24gSWQ9IkFSUEljb24iIFNvdXJjZUZpbGU9IiEoYmluZHBhdGguc3JjKVBDXGljb25zXHB5dGhvbi5pY28iIC8+CiAgICAgICAgIDxQcm9wZXJ0eSBJZD0iQVJQUFJPRFVDVElDT04iIFZhbHVlPSJBUlBJY29uIiAvPgogICAgICAgICA8UHJvcGVydHkgSWQ9IkFSUE5PTU9ESUZZIiBWYWx1ZT0iMSIgLz4KICAgICAgICAgPFByb3BlcnR5IElkPSJESVNBQkxFQURWVFNIT1JUQ1VUUyIgVmFsdWU9IjEiIC8+CkBAIC01Nyw3ICs2Myw5IEBACiAgICAgPCEtLSBUb3AtbGV2ZWwgZGlyZWN0b3JpZXMgLS0+CiAgICAgPEZyYWdtZW50PgogICAgICAgICA8RGlyZWN0b3J5UmVmIElkPSJJbnN0YWxsRGlyZWN0b3J5Ij4KLSAgICAgICAgICAgIDxEaXJlY3RvcnkgSWQ9IkRMTHMiIE5hbWU9IkRMTHMiIC8+CisgICAgICAgICAgICA8RGlyZWN0b3J5IElkPSJETExzIiBOYW1lPSJETExzIj4KKyAgICAgICAgICAgICAgICA8RGlyZWN0b3J5IElkPSJDYXRhbG9ncyIgLz4KKyAgICAgICAgICAgIDwvRGlyZWN0b3J5PgogICAgICAgICA8L0RpcmVjdG9yeVJlZj4KICAgICA8L0ZyYWdtZW50PgogCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvY29tbW9uX2VuLVVTLnd4bF90ZW1wbGF0ZSBiL1Rvb2xzL21zaS9jb21tb25fZW4tVVMud3hsX3RlbXBsYXRlCmluZGV4IDhkMDM1MjYuLmM5NWMyNzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9jb21tb25fZW4tVVMud3hsX3RlbXBsYXRlCisrKyBiL1Rvb2xzL21zaS9jb21tb25fZW4tVVMud3hsX3RlbXBsYXRlCkBAIC0xNCw0ICsxNCw1IEBACiAgICAgPFN0cmluZyBJZD0iTm9Eb3duZ3JhZGUiPkEgbmV3ZXIgdmVyc2lvbiBvZiAhKGxvYy5Qcm9kdWN0TmFtZSkgaXMgYWxyZWFkeSBpbnN0YWxsZWQuPC9TdHJpbmc+CiAgICAgPFN0cmluZyBJZD0iSW5jb3JyZWN0Q29yZSI+QW4gaW5jb3JyZWN0IHZlcnNpb24gb2YgYSBwcmVyZXF1aXNpdGUgcGFja2FnZSBpcyBpbnN0YWxsZWQuIFBsZWFzZSB1bmluc3RhbGwgYW55IG90aGVyIHZlcnNpb25zIG9mICEobG9jLlByb2R1Y3ROYW1lKSBhbmQgdHJ5IGluc3RhbGxpbmcgdGhpcyBhZ2Fpbi48L1N0cmluZz4KICAgICA8U3RyaW5nIElkPSJOb1RhcmdldERpciI+VGhlIFRBUkdFVERJUiB2YXJpYWJsZSBtdXN0IGJlIHByb3ZpZGVkIHdoZW4gaW52b2tpbmcgdGhpcyBpbnN0YWxsZXIuPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iTWFudWZhY3R1cmVyU3VwcG9ydFVybCI+aHR0cDovL3d3dy5weXRob24ub3JnLzwvU3RyaW5nPgogPC9XaXhMb2NhbGl6YXRpb24+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvZXhlL2V4ZS53aXhwcm9qIGIvVG9vbHMvbXNpL2V4ZS9leGUud2l4cHJvagppbmRleCBkMjZhNjAzLi4yNGRmMGY1IDEwMDY0NAotLS0gYS9Ub29scy9tc2kvZXhlL2V4ZS53aXhwcm9qCisrKyBiL1Rvb2xzL21zaS9leGUvZXhlLndpeHByb2oKQEAgLTE0LDYgKzE0LDcgQEAKICAgICA8SXRlbUdyb3VwPgogICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJleGUud3hzIiAvPgogICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJleGVfZmlsZXMud3hzIiAvPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJleGVfcmVnLnd4cyIgLz4KICAgICA8L0l0ZW1Hcm91cD4KICAgICA8SXRlbUdyb3VwPgogICAgICAgICA8RW1iZWRkZWRSZXNvdXJjZSBJbmNsdWRlPSIqLnd4bCIgLz4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9leGUvZXhlLnd4cyBiL1Rvb2xzL21zaS9leGUvZXhlLnd4cwppbmRleCAxNTRjZWU1Li4wM2Q0M2M2IDEwMDY0NAotLS0gYS9Ub29scy9tc2kvZXhlL2V4ZS53eHMKKysrIGIvVG9vbHMvbXNpL2V4ZS9leGUud3hzCkBAIC05LDYgKzksNyBAQAogICAgICAgICAKICAgICAgICAgPEZlYXR1cmUgSWQ9IkRlZmF1bHRGZWF0dXJlIiBBbGxvd0FkdmVydGlzZT0ibm8iIFRpdGxlPSIhKGxvYy5UaXRsZSkiIERlc2NyaXB0aW9uPSIhKGxvYy5EZXNjcmlwdGlvbikiPgogICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJleGVfcHl0aG9uIiBQcmltYXJ5PSJ5ZXMiIC8+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9ImV4ZV9yZWciIFByaW1hcnk9InllcyIgLz4KICAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0iZXhlX3R4dCIgLz4KICAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0iZXhlX2ljb25zIiAvPgogICAgICAgICAgICAgPENvbXBvbmVudFJlZiBJZD0iT3B0aW9uYWxGZWF0dXJlIiAvPgpAQCAtMjQsNyArMjUsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JraW5nRGlyZWN0b3J5PSJJbnN0YWxsRGlyZWN0b3J5IiAvPgogICAgICAgICAgICAgICAgIDxSZW1vdmVGb2xkZXIgSWQ9IlJlbW92ZV9NZW51RGlyIiBEaXJlY3Rvcnk9Ik1lbnVEaXIiIE9uPSJ1bmluc3RhbGwiIC8+CiAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5S2V5IFJvb3Q9IkhLTVUiIEtleT0iW1JFR0lTVFJZS0VZXSI+Ci0gICAgICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIEtleT0iSW5zdGFsbFBhdGhcSW5zdGFsbEdyb3VwIiBUeXBlPSJzdHJpbmciIFZhbHVlPSIhKGxvYy5Qcm9kdWN0TmFtZSkiIEtleVBhdGg9InllcyIgLz4KICAgICAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgS2V5PSJJbnN0YWxsZWRGZWF0dXJlcyIgTmFtZT0iU2hvcnRjdXRzIiBUeXBlPSJzdHJpbmciIFZhbHVlPSIkKHZhci5WZXJzaW9uKSIgLz4KICAgICAgICAgICAgICAgICA8L1JlZ2lzdHJ5S2V5PgogICAgICAgICAgICAgPC9Db21wb25lbnQ+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvZXhlL2V4ZV9kLndpeHByb2ogYi9Ub29scy9tc2kvZXhlL2V4ZV9kLndpeHByb2oKaW5kZXggMjc1NDVjYS4uY2YwODViZSAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL2V4ZS9leGVfZC53aXhwcm9qCisrKyBiL1Rvb2xzL21zaS9leGUvZXhlX2Qud2l4cHJvagpAQCAtMTAsNiArMTAsNyBAQAogICAgIDxJdGVtR3JvdXA+CiAgICAgICAgIDxDb21waWxlIEluY2x1ZGU9ImV4ZV9kLnd4cyIgLz4KICAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0iZXhlX2ZpbGVzLnd4cyIgLz4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0iZXhlX3JlZy53eHMiIC8+CiAgICAgPC9JdGVtR3JvdXA+CiAgICAgPEl0ZW1Hcm91cD4KICAgICAgICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5jbHVkZT0iKi53eGwiIC8+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvZXhlL2V4ZV9lbi1VUy53eGxfdGVtcGxhdGUgYi9Ub29scy9tc2kvZXhlL2V4ZV9lbi1VUy53eGxfdGVtcGxhdGUKaW5kZXggNTc3ZmJlNS4uMWY5ZTI5MCAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL2V4ZS9leGVfZW4tVVMud3hsX3RlbXBsYXRlCisrKyBiL1Rvb2xzL21zaS9leGUvZXhlX2VuLVVTLnd4bF90ZW1wbGF0ZQpAQCAtNCw0ICs0LDUgQEAKICAgICA8U3RyaW5nIElkPSJTaG9ydERlc2NyaXB0b3IiPmV4ZWN1dGFibGU8L1N0cmluZz4KICAgICA8U3RyaW5nIElkPSJTaG9ydGN1dE5hbWUiPlB5dGhvbiB7e1Nob3J0VmVyc2lvbn19ICh7e0JpdG5lc3N9fSk8L1N0cmluZz4KICAgICA8U3RyaW5nIElkPSJTaG9ydGN1dERlc2NyaXB0aW9uIj5MYXVuY2hlcyB0aGUgIShsb2MuUHJvZHVjdE5hbWUpIGludGVycHJldGVyLjwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9IlN1cHBvcnRVcmwiPmh0dHA6Ly93d3cucHl0aG9uLm9yZy88L1N0cmluZz4KIDwvV2l4TG9jYWxpemF0aW9uPgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2V4ZS9leGVfZmlsZXMud3hzIGIvVG9vbHMvbXNpL2V4ZS9leGVfZmlsZXMud3hzCmluZGV4IDllNDdiNWQuLjAxMzg1ODcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9leGUvZXhlX2ZpbGVzLnd4cworKysgYi9Ub29scy9tc2kvZXhlL2V4ZV9maWxlcy53eHMKQEAgLTI4LDYgKzI4LDkgQEAKICAgICAgICAgICAgIDwvQ29tcG9uZW50PgogICAgICAgICAgICAgPENvbXBvbmVudCBJZD0icHl0aG9udy5leGUiIERpcmVjdG9yeT0iSW5zdGFsbERpcmVjdG9yeSIgR3VpZD0iJCh2YXIuUHl0aG9ud0V4ZUNvbXBvbmVudEd1aWQpIj4KICAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSJweXRob253LmV4ZSIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgICAgIDxSZWdpc3RyeUtleSBSb290PSJIS01VIiBLZXk9IltSRUdJU1RSWUtFWV0iPgorICAgICAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBLZXk9Ikluc3RhbGxQYXRoIiBOYW1lPSJXaW5kb3dlZEV4ZWN1dGFibGVQYXRoIiBUeXBlPSJzdHJpbmciIFZhbHVlPSJbI3B5dGhvbncuZXhlXSIgS2V5UGF0aD0ibm8iIC8+CisgICAgICAgICAgICAgICAgPC9SZWdpc3RyeUtleT4KICAgICAgICAgICAgIDwvQ29tcG9uZW50PgogICAgICAgICAgICAgPENvbXBvbmVudCBJZD0idmNydW50aW1lMTQwLmRsbCIgRGlyZWN0b3J5PSJJbnN0YWxsRGlyZWN0b3J5IiBHdWlkPSIqIj4KICAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSJ2Y3J1bnRpbWUxNDAuZGxsIiBTb3VyY2U9IiEoYmluZHBhdGgucmVkaXN0KXZjcnVudGltZTE0MC5kbGwiIEtleVBhdGg9InllcyIgLz4KQEAgLTY2LDEwICs2OSwxMyBAQAogICAgIDxGcmFnbWVudD4KICAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJleGVfaWNvbnMiPgogICAgICAgICAgICAgPENvbXBvbmVudCBJZD0icHkuaWNvIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgotICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9InB5LmljbyIgU291cmNlPSIhKGJpbmRwYXRoLnNyYylQQ1xweS5pY28iIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSJweS5pY28iIFNvdXJjZT0iIShiaW5kcGF0aC5zcmMpUENcaWNvbnNccHkuaWNvIiBLZXlQYXRoPSJ5ZXMiIC8+CiAgICAgICAgICAgICA8L0NvbXBvbmVudD4KICAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9InB5Yy5pY28iIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+Ci0gICAgICAgICAgICAgICAgPEZpbGUgTmFtZT0icHljLmljbyIgU291cmNlPSIhKGJpbmRwYXRoLnNyYylQQ1xweWMuaWNvIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICAgICAgPEZpbGUgTmFtZT0icHljLmljbyIgU291cmNlPSIhKGJpbmRwYXRoLnNyYylQQ1xpY29uc1xweWMuaWNvIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9InB5ZC5pY28iIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgTmFtZT0icHlkLmljbyIgU291cmNlPSIhKGJpbmRwYXRoLnNyYylQQ1xpY29uc1xweWQuaWNvIiBLZXlQYXRoPSJ5ZXMiIC8+CiAgICAgICAgICAgICA8L0NvbXBvbmVudD4KICAgICAgICAgPC9Db21wb25lbnRHcm91cD4KICAgICA8L0ZyYWdtZW50PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2V4ZS9leGVfcGRiLndpeHByb2ogYi9Ub29scy9tc2kvZXhlL2V4ZV9wZGIud2l4cHJvagppbmRleCA0ZjRjODY5Li5iZjEyMTNlIDEwMDY0NAotLS0gYS9Ub29scy9tc2kvZXhlL2V4ZV9wZGIud2l4cHJvagorKysgYi9Ub29scy9tc2kvZXhlL2V4ZV9wZGIud2l4cHJvagpAQCAtMTAsNiArMTAsNyBAQAogICAgIDxJdGVtR3JvdXA+CiAgICAgICAgIDxDb21waWxlIEluY2x1ZGU9ImV4ZV9wZGIud3hzIiAvPgogICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJleGVfZmlsZXMud3hzIiAvPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJleGVfcmVnLnd4cyIgLz4KICAgICA8L0l0ZW1Hcm91cD4KICAgICA8SXRlbUdyb3VwPgogICAgICAgICA8RW1iZWRkZWRSZXNvdXJjZSBJbmNsdWRlPSIqLnd4bCIgLz4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9leGUvZXhlX3JlZy53eHMgYi9Ub29scy9tc2kvZXhlL2V4ZV9yZWcud3hzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0NDNjMjEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9tc2kvZXhlL2V4ZV9yZWcud3hzCkBAIC0wLDAgKzEsMjUgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxQcm9wZXJ0eVJlZiBJZD0iUk9PVFJFR0lTVFJZS0VZIiAvPgorICAgICAgICA8UHJvcGVydHlSZWYgSWQ9IlJFR0lTVFJZS0VZIiAvPgorICAgICAgICAKKyAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJleGVfcmVnIj4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9IkNvbW1vblB5dGhvblJlZ2lzdHJhdGlvbiIgRGlyZWN0b3J5PSJJbnN0YWxsRGlyZWN0b3J5IiBHdWlkPSIkKHZhci5Db21tb25QeXRob25SZWdDb21wb25lbnRHdWlkKSI+CisgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5S2V5IFJvb3Q9IkhLTVUiIEtleT0iW1JPT1RSRUdJU1RSWUtFWV0iPgorICAgICAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBOYW1lPSJEaXNwbGF5TmFtZSIgVHlwZT0ic3RyaW5nIiBWYWx1ZT0iIShsb2MuTWFudWZhY3R1cmVyKSIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBOYW1lPSJTdXBwb3J0VXJsIiBUeXBlPSJzdHJpbmciIFZhbHVlPSIhKGxvYy5NYW51ZmFjdHVyZXJTdXBwb3J0VXJsKSIgS2V5UGF0aD0ibm8iIC8+CisgICAgICAgICAgICAgICAgPC9SZWdpc3RyeUtleT4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iUHl0aG9uUmVnaXN0cmF0aW9uIiBEaXJlY3Rvcnk9Ikluc3RhbGxEaXJlY3RvcnkiIEd1aWQ9IiQodmFyLlB5dGhvblJlZ0NvbXBvbmVudEd1aWQpIj4KKyAgICAgICAgICAgICAgICA8UmVnaXN0cnlLZXkgUm9vdD0iSEtNVSIgS2V5PSJbUkVHSVNUUllLRVldIj4KKyAgICAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgTmFtZT0iRGlzcGxheU5hbWUiIFR5cGU9InN0cmluZyIgVmFsdWU9IiEobG9jLlNob3J0Y3V0TmFtZSkiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgTmFtZT0iU3VwcG9ydFVybCIgVHlwZT0ic3RyaW5nIiBWYWx1ZT0iIShsb2MuU3VwcG9ydFVybCkiIEtleVBhdGg9Im5vIiAvPgorICAgICAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBOYW1lPSJWZXJzaW9uIiBUeXBlPSJzdHJpbmciIFZhbHVlPSIkKHZhci5Mb25nVmVyc2lvbikiIEtleVBhdGg9Im5vIiAvPgorICAgICAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBOYW1lPSJTeXNWZXJzaW9uIiBUeXBlPSJzdHJpbmciIFZhbHVlPSIkKHZhci5TaG9ydFZlcnNpb24pIiBLZXlQYXRoPSJubyIgLz4KKyAgICAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgTmFtZT0iU3lzQXJjaGl0ZWN0dXJlIiBUeXBlPSJzdHJpbmciIFZhbHVlPSIkKHZhci5QbGF0Zm9ybUFyY2hpdGVjdHVyZSkiIEtleVBhdGg9Im5vIiAvPgorICAgICAgICAgICAgICAgIDwvUmVnaXN0cnlLZXk+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgPC9Db21wb25lbnRHcm91cD4KKyAgICA8L0ZyYWdtZW50PgorPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXIud2l4cHJvaiBiL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlci53aXhwcm9qCmluZGV4IDAxYTlkY2IuLjg5MzVjZTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlci53aXhwcm9qCisrKyBiL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlci53aXhwcm9qCkBAIC01LDcgKzUsNyBAQAogICAgICAgICA8U2NoZW1hVmVyc2lvbj4yLjA8L1NjaGVtYVZlcnNpb24+CiAgICAgICAgIDxPdXRwdXROYW1lPmxhdW5jaGVyPC9PdXRwdXROYW1lPgogICAgICAgICA8T3V0cHV0VHlwZT5QYWNrYWdlPC9PdXRwdXRUeXBlPgotICAgICAgICA8RGVmaW5lQ29uc3RhbnRzPlVwZ3JhZGVDb2RlPTFCNjhBMEVDLTRERDMtNTEzNC04NDBFLTczODU0QjA4NjNGMTskKERlZmluZUNvbnN0YW50cyk8L0RlZmluZUNvbnN0YW50cz4KKyAgICAgICAgPERlZmluZUNvbnN0YW50cz5VcGdyYWRlQ29kZT0xQjY4QTBFQy00REQzLTUxMzQtODQwRS03Mzg1NEIwODYzRjE7U3VwcHJlc3NVcGdyYWRlVGFibGU9MTskKERlZmluZUNvbnN0YW50cyk8L0RlZmluZUNvbnN0YW50cz4KICAgICAgICAgPElnbm9yZUNvbW1vbld4bFRlbXBsYXRlcz50cnVlPC9JZ25vcmVDb21tb25XeGxUZW1wbGF0ZXM+CiAgICAgICAgIDxTdXBwcmVzc0lDRXM+SUNFODA8L1N1cHByZXNzSUNFcz4KICAgICA8L1Byb3BlcnR5R3JvdXA+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXIud3hzIGIvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyLnd4cwppbmRleCBlYmQ4NzVjLi43ZGUxMzFhIDEwMDY0NAotLS0gYS9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXIud3hzCisrKyBiL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlci53eHMKQEAgLTUsNyArNSwxMCBAQAogICAgICAgICA8TWVkaWFUZW1wbGF0ZSBFbWJlZENhYj0ieWVzIiBDb21wcmVzc2lvbkxldmVsPSJoaWdoIiAvPgogICAgICAgICAKICAgICAgICAgPFByb3BlcnR5IElkPSJTdXBwcmVzc19UQVJHRVRESVJfQ2hlY2siIFZhbHVlPSIxIiAvPgotICAgICAgICA8UHJvcGVydHlSZWYgSWQ9IkFSUFBST0RVQ1RJQ09OIiAvPgorICAgICAgICA8SWNvbiBJZD0iQVJQSWNvbiIgU291cmNlRmlsZT0iIShiaW5kcGF0aC5zcmMpUENcaWNvbnNcbGF1bmNoZXIuaWNvIiAvPgorICAgICAgICA8UHJvcGVydHkgSWQ9IkFSUFBST0RVQ1RJQ09OIiBWYWx1ZT0iQVJQSWNvbiIgLz4KKyAgICAgICAgPFByb3BlcnR5IElkPSJBUlBOT01PRElGWSIgVmFsdWU9IjEiIC8+CisgICAgICAgIDxQcm9wZXJ0eSBJZD0iRElTQUJMRUFEVlRTSE9SVENVVFMiIFZhbHVlPSIxIiAvPgogCiAgICAgICAgIDxGZWF0dXJlIElkPSJEZWZhdWx0RmVhdHVyZSIgQWxsb3dBZHZlcnRpc2U9Im5vIiBUaXRsZT0iIShsb2MuVGl0bGUpIiBEZXNjcmlwdGlvbj0iIShsb2MuRGVzY3JpcHRpb24pIj4KICAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0ibGF1bmNoZXJfZXhlIiBQcmltYXJ5PSJ5ZXMiIC8+CkBAIC0yNiwxOCArMjksMjEgQEAKICAgICAgICAgICAgIDxDdXN0b20gQmVmb3JlPSJTZXRMYXVuY2hlckluc3RhbGxEaXJlY3RvcnlMTSIgQWN0aW9uPSJTZXRMYXVuY2hlckluc3RhbGxEaXJlY3RvcnlDVSI+Tk9UIEluc3RhbGxlZCBBTkQgTk9UIEFMTFVTRVJTPTE8L0N1c3RvbT4KICAgICAgICAgICAgIDxDdXN0b20gQmVmb3JlPSJDb3N0RmluYWxpemUiIEFjdGlvbj0iU2V0TGF1bmNoZXJJbnN0YWxsRGlyZWN0b3J5TE0iPk5PVCBJbnN0YWxsZWQgQU5EIEFMTFVTRVJTPTE8L0N1c3RvbT4KIAotICAgICAgICAgICAgPFJlbW92ZUV4aXN0aW5nUHJvZHVjdHMgQWZ0ZXI9Ikluc3RhbGxWYWxpZGF0ZSI+VVBHUkFERSBvciBSRU1PVkVfMzUwX0xBVU5DSEVSPC9SZW1vdmVFeGlzdGluZ1Byb2R1Y3RzPgorICAgICAgICAgICAgPFJlbW92ZUV4aXN0aW5nUHJvZHVjdHMgQWZ0ZXI9Ikluc3RhbGxWYWxpZGF0ZSI+VVBHUkFERSBvciBSRU1PVkVfMzUwX0xBVU5DSEVSIG9yIFJFTU9WRV8zNjBBMV9MQVVOQ0hFUjwvUmVtb3ZlRXhpc3RpbmdQcm9kdWN0cz4KICAgICAgICAgPC9JbnN0YWxsRXhlY3V0ZVNlcXVlbmNlPgogCisgICAgICAgIDwhLS0gVXBncmFkZSBhbGwgdmVyc2lvbnMgb2YgdGhlIGxhdW5jaGVyIC0tPgorICAgICAgICA8VXBncmFkZSBJZD0iJCh2YXIuVXBncmFkZUNvZGUpIj4KKyAgICAgICAgICAgIDxVcGdyYWRlVmVyc2lvbiBQcm9wZXJ0eT0iRE9XTkdSQURFIiBNaW5pbXVtPSIkKHZhci5WZXJzaW9uKSIgSW5jbHVkZU1pbmltdW09Im5vIiBPbmx5RGV0ZWN0PSJ5ZXMiIC8+CisgICAgICAgICAgICA8VXBncmFkZVZlcnNpb24gUHJvcGVydHk9IlVQR1JBREUiIE1pbmltdW09IjAuMC4wLjAiIEluY2x1ZGVNaW5pbXVtPSJ5ZXMiIE1heGltdW09IiQodmFyLlZlcnNpb24pIiBJbmNsdWRlTWF4aW11bT0ibm8iIC8+CisgICAgICAgIDwvVXBncmFkZT4KICAgICAgICAgPCEtLSBQeXRob24gMy41LjAgc2hpcHBlZCB3aXRoIGEgZGlmZmVyZW50IFVwZ3JhZGVDb2RlIC0tPgogICAgICAgICA8VXBncmFkZSBJZD0iQTcxNTMwQjktRTg5RC01M0RCLTlDMkQtQzZENzU1MTg3NkQ4Ij4KICAgICAgICAgICAgIDxVcGdyYWRlVmVyc2lvbiBNaW5pbXVtPSIwLjAuMC4wIiBQcm9wZXJ0eT0iUkVNT1ZFXzM1MF9MQVVOQ0hFUiIgLz4KICAgICAgICAgPC9VcGdyYWRlPgogICAgICAgICA8IS0tIFB5dGhvbiAzLjYuMGExIHNoaXBwZWQgd2l0aCBhIGRpZmZlcmVudCBVcGdyYWRlQ29kZSAtLT4KICAgICAgICAgPFVwZ3JhZGUgSWQ9IjM5NDc1MEMwLTc4ODAtNUE4Ri05OTlGLTkzMzk2NUZCQ0ZCNCI+Ci0gICAgICAgICAgICA8VXBncmFkZVZlcnNpb24gTWF4aW11bT0iJCh2YXIuVmVyc2lvbikiIFByb3BlcnR5PSJSRU1PVkVfMzYwQTFfTEFVTkNIRVIiIC8+Ci0gICAgICAgICAgICA8VXBncmFkZVZlcnNpb24gTWluaW11bT0iJCh2YXIuVmVyc2lvbikiIFByb3BlcnR5PSJCTE9DS18zNjBBMV9MQVVOQ0hFUiIgLz4KKyAgICAgICAgICAgIDxVcGdyYWRlVmVyc2lvbiBNaW5pbXVtPSIwLjAuMC4wIiBQcm9wZXJ0eT0iUkVNT1ZFXzM2MEExX0xBVU5DSEVSIiAvPgogICAgICAgICA8L1VwZ3JhZGU+Ci0gICAgICAgIDxDb25kaXRpb24gTWVzc2FnZT0iIShsb2MuTm9Eb3duZ3JhZGUpIj5JbnN0YWxsZWQgT1IgTk9UIEJMT0NLXzM2MEExX0xBVU5DSEVSPC9Db25kaXRpb24+CiAgICAgPC9Qcm9kdWN0PgogPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXJfZW4tVVMud3hsIGIvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyX2VuLVVTLnd4bAppbmRleCBlNGMxYWFhLi5hN2UzODI3IDEwMDY0NAotLS0gYS9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXJfZW4tVVMud3hsCisrKyBiL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlcl9lbi1VUy53eGwKQEAgLTExLDYgKzExLDcgQEAKICAgICA8U3RyaW5nIElkPSJQeXRob25GaWxlRGVzY3JpcHRpb24iPlB5dGhvbiBGaWxlPC9TdHJpbmc+CiAgICAgPFN0cmluZyBJZD0iUHl0aG9uTm9Db25GaWxlRGVzY3JpcHRpb24iPlB5dGhvbiBGaWxlIChubyBjb25zb2xlKTwvU3RyaW5nPgogICAgIDxTdHJpbmcgSWQ9IlB5dGhvbkNvbXBpbGVkRmlsZURlc2NyaXB0aW9uIj5Db21waWxlZCBQeXRob24gRmlsZTwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9IlB5dGhvbkV4dGVuc2lvbkRlc2NyaXB0aW9uIj5QeXRob24gRXh0ZW5zaW9uIE1vZHVsZTwvU3RyaW5nPgogICAgIDxTdHJpbmcgSWQ9IlB5dGhvbkFyY2hpdmVGaWxlRGVzY3JpcHRpb24iPlB5dGhvbiBaaXAgQXBwbGljYXRpb24gRmlsZTwvU3RyaW5nPgogICAgIDxTdHJpbmcgSWQ9IlB5dGhvbk5vQ29uQXJjaGl2ZUZpbGVEZXNjcmlwdGlvbiI+UHl0aG9uIFppcCBBcHBsaWNhdGlvbiBGaWxlIChubyBjb25zb2xlKTwvU3RyaW5nPgogPC9XaXhMb2NhbGl6YXRpb24+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXJfcmVnLnd4cyBiL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlcl9yZWcud3hzCmluZGV4IDk4MTk2MWEuLmRhY2U5N2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlcl9yZWcud3hzCisrKyBiL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlcl9yZWcud3hzCkBAIC0yNywxNCArMjcsMTggQEAKICAgICAgICAgICAgICAgICA8L1Byb2dJZD4KICAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBSb290PSJIS0NSIiBLZXk9IlB5dGhvbi5Db21waWxlZEZpbGVcc2hlbGxleFxEcm9wSGFuZGxlciIgVmFsdWU9IntCRUEyMThEMi02OTUwLTQ5N0ItOTQzNC02MTY4M0VDMDY1RkV9IiBUeXBlPSJzdHJpbmciIC8+CiAKLSAgICAgICAgICAgICAgICA8UHJvZ0lkIElkPSJQeXRob24uQXJjaGl2ZUZpbGUiIERlc2NyaXB0aW9uPSIhKGxvYy5QeXRob25BcmNoaXZlRmlsZURlc2NyaXB0aW9uKSIgQWR2ZXJ0aXNlPSJubyIgSWNvbj0icHkuZXhlIiBJY29uSW5kZXg9IjEiPgorICAgICAgICAgICAgICAgIDxQcm9nSWQgSWQ9IlB5dGhvbi5FeHRlbnNpb24iIERlc2NyaXB0aW9uPSIhKGxvYy5QeXRob25FeHRlbnNpb25EZXNjcmlwdGlvbikiIEFkdmVydGlzZT0ibm8iIEljb249InB5LmV4ZSIgSWNvbkluZGV4PSIzIj4KKyAgICAgICAgICAgICAgICAgICAgPEV4dGVuc2lvbiBJZD0icHlkIiAvPgorICAgICAgICAgICAgICAgIDwvUHJvZ0lkPgorCisgICAgICAgICAgICAgICAgPFByb2dJZCBJZD0iUHl0aG9uLkFyY2hpdmVGaWxlIiBEZXNjcmlwdGlvbj0iIShsb2MuUHl0aG9uQXJjaGl2ZUZpbGVEZXNjcmlwdGlvbikiIEFkdmVydGlzZT0ibm8iIEljb249InB5LmV4ZSIgSWNvbkluZGV4PSI1Ij4KICAgICAgICAgICAgICAgICAgICAgPEV4dGVuc2lvbiBJZD0icHl6IiBDb250ZW50VHlwZT0iYXBwbGljYXRpb24veC16aXAtY29tcHJlc3NlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICA8VmVyYiBJZD0ib3BlbiIgVGFyZ2V0RmlsZT0icHkuZXhlIiBBcmd1bWVudD0iJnF1b3Q7JUwmcXVvdDsgJSoiIC8+CiAgICAgICAgICAgICAgICAgICAgIDwvRXh0ZW5zaW9uPgogICAgICAgICAgICAgICAgIDwvUHJvZ0lkPgogICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIFJvb3Q9IkhLQ1IiIEtleT0iUHl0aG9uLkFyY2hpdmVGaWxlXHNoZWxsZXhcRHJvcEhhbmRsZXIiIFZhbHVlPSJ7QkVBMjE4RDItNjk1MC00OTdCLTk0MzQtNjE2ODNFQzA2NUZFfSIgVHlwZT0ic3RyaW5nIiAvPgogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIDxQcm9nSWQgSWQ9IlB5dGhvbi5Ob0NvbkFyY2hpdmVGaWxlIiBEZXNjcmlwdGlvbj0iIShsb2MuUHl0aG9uTm9Db25BcmNoaXZlRmlsZURlc2NyaXB0aW9uKSIgQWR2ZXJ0aXNlPSJubyIgSWNvbj0icHkuZXhlIiBJY29uSW5kZXg9IjEiPgorICAgICAgICAgICAgICAgIDxQcm9nSWQgSWQ9IlB5dGhvbi5Ob0NvbkFyY2hpdmVGaWxlIiBEZXNjcmlwdGlvbj0iIShsb2MuUHl0aG9uTm9Db25BcmNoaXZlRmlsZURlc2NyaXB0aW9uKSIgQWR2ZXJ0aXNlPSJubyIgSWNvbj0icHkuZXhlIiBJY29uSW5kZXg9IjUiPgogICAgICAgICAgICAgICAgICAgICA8RXh0ZW5zaW9uIElkPSJweXp3IiBDb250ZW50VHlwZT0iYXBwbGljYXRpb24veC16aXAtY29tcHJlc3NlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICA8VmVyYiBJZD0ib3BlbiIgVGFyZ2V0RmlsZT0icHl3LmV4ZSIgQXJndW1lbnQ9IiZxdW90OyVMJnF1b3Q7ICUqIiAvPgogICAgICAgICAgICAgICAgICAgICA8L0V4dGVuc2lvbj4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9saWIvbGliLndpeHByb2ogYi9Ub29scy9tc2kvbGliL2xpYi53aXhwcm9qCmluZGV4IDY0ZTU4NzguLjI2MzExZWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9saWIvbGliLndpeHByb2oKKysrIGIvVG9vbHMvbXNpL2xpYi9saWIud2l4cHJvagpAQCAtMjcsNiArMjcsNyBAQAogICAgICAgICAgICAgPFRhcmdldEJhc2U+JChQeVNvdXJjZVBhdGgpTGliPC9UYXJnZXRCYXNlPgogICAgICAgICAgICAgPFRhcmdldF8+TGliXDwvVGFyZ2V0Xz4KICAgICAgICAgICAgIDxHcm91cD5saWJfcHk8L0dyb3VwPgorICAgICAgICAgICAgPEluY2x1ZGVJbkNhdD50cnVlPC9JbmNsdWRlSW5DYXQ+CiAgICAgICAgIDwvSW5zdGFsbEZpbGVzPgogICAgIDwvSXRlbUdyb3VwPgogICAgIApkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2xpYi9saWIud3hzIGIvVG9vbHMvbXNpL2xpYi9saWIud3hzCmluZGV4IDJiMDRiY2IuLjJhM2I5ZWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9saWIvbGliLnd4cworKysgYi9Ub29scy9tc2kvbGliL2xpYi53eHMKQEAgLTExLDYgKzExLDcgQEAKICAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0ibGliX3B5IiAvPgogICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJsaWJfZmlsZXMiIC8+CiAgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9ImxpYl9leHRlbnNpb25zIiAvPgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJsaWJfY2F0IiAvPgogICAgICAgICAgICAgPENvbXBvbmVudFJlZiBJZD0iT3B0aW9uYWxGZWF0dXJlIiAvPgogICAgICAgICA8L0ZlYXR1cmU+CiAgICAgPC9Qcm9kdWN0PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2xpYi9saWJfZmlsZXMud3hzIGIvVG9vbHMvbXNpL2xpYi9saWJfZmlsZXMud3hzCmluZGV4IGE5OTI3ODQuLmE4M2Y1NDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9saWIvbGliX2ZpbGVzLnd4cworKysgYi9Ub29scy9tc2kvbGliL2xpYl9maWxlcy53eHMKQEAgLTEsNiArMSw2IEBACiDvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgogPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+Ci0gICAgPD9kZWZpbmUgZXh0cz1weWV4cGF0O3NlbGVjdDt1bmljb2RlZGF0YTt3aW5zb3VuZDtfYnoyO19lbGVtZW50dHJlZTtfc29ja2V0O19zc2w7X21zaTtfY3R5cGVzO19oYXNobGliO19tdWx0aXByb2Nlc3Npbmc7X2x6bWE7X2RlY2ltYWw7X292ZXJsYXBwZWQ7X3NxbGl0ZTMgPz4KKyAgICA8P2RlZmluZSBleHRzPXB5ZXhwYXQ7c2VsZWN0O3VuaWNvZGVkYXRhO3dpbnNvdW5kO19iejI7X2VsZW1lbnR0cmVlO19zb2NrZXQ7X3NzbDtfbXNpO19jdHlwZXM7X2hhc2hsaWI7X211bHRpcHJvY2Vzc2luZztfbHptYTtfZGVjaW1hbDtfb3ZlcmxhcHBlZDtfc3FsaXRlMztfYXN5bmNpbyA/PgogICAgIDxGcmFnbWVudD4KICAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJsaWJfZXh0ZW5zaW9ucyI+CiAgICAgICAgICAgICA8P2ZvcmVhY2ggZXh0IGluICQodmFyLmV4dHMpPz4KQEAgLTYzLDE2ICs2MywxNyBAQAogICAgICAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBLZXk9IlB5dGhvblBhdGgiIFR5cGU9InN0cmluZyIgVmFsdWU9IltMaWJdO1tETExzXSIgLz4KICAgICAgICAgICAgICAgICA8L1JlZ2lzdHJ5S2V5PgogICAgICAgICAgICAgPC9Db21wb25lbnQ+Ci0gICAgICAgICAgICA8Q29tcG9uZW50IElkPSJMaWJfc2l0ZV9wYWNrYWdlc19SRUFETUUiIERpcmVjdG9yeT0iTGliX3NpdGVfcGFja2FnZXMiIEd1aWQ9IioiPgotICAgICAgICAgICAgICAgIDxGaWxlIElkPSJMaWJfc2l0ZV9wYWNrYWdlc19SRUFETUUiIE5hbWU9IlJFQURNRS50eHQiIFNvdXJjZT0iIShiaW5kcGF0aC5zcmMpTGliXHNpdGUtcGFja2FnZXNcUkVBRE1FIiBLZXlQYXRoPSJ5ZXMiIC8+Ci0gICAgICAgICAgICA8L0NvbXBvbmVudD4KICAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9IkxpYjJ0bzNfcGlja2xlX3JlbW92ZSIgRGlyZWN0b3J5PSJMaWJfbGliMnRvMyIgR3VpZD0iJCh2YXIuUmVtb3ZlTGliMnRvM1BpY2tsZUNvbXBvbmVudEd1aWQpIj4KICAgICAgICAgICAgICAgICA8UmVtb3ZlRmlsZSBJZD0iTGliMnRvM19waWNrbGVfcmVtb3ZlX2ZpbGVzIiBOYW1lPSIqLnBpY2tsZSIgT249InVuaW5zdGFsbCIgLz4KICAgICAgICAgICAgICAgICA8UmVtb3ZlRm9sZGVyIElkPSJMaWIydG8zX3BpY2tsZV9yZW1vdmVfZm9sZGVyIiBPbj0idW5pbnN0YWxsIiAvPgogICAgICAgICAgICAgPC9Db21wb25lbnQ+CiAgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+Ci0gICAgICAgIDxEaXJlY3RvcnlSZWYgSWQ9IkxpYiI+Ci0gICAgICAgICAgICA8RGlyZWN0b3J5IElkPSJMaWJfc2l0ZV9wYWNrYWdlcyIgTmFtZT0ic2l0ZS1wYWNrYWdlcyIgLz4KLSAgICAgICAgPC9EaXJlY3RvcnlSZWY+CisgICAgPC9GcmFnbWVudD4KKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxDb21wb25lbnRHcm91cCBJZD0ibGliX2NhdCI+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJsaWJfY2F0IiBEaXJlY3Rvcnk9IkNhdGFsb2dzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSJweXRob25fbGliLmNhdCIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+CiAgICAgPC9GcmFnbWVudD4KIDwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL21ha2VfemlwLnByb2ogYi9Ub29scy9tc2kvbWFrZV96aXAucHJvagppbmRleCAxYWY2ZGQyLi5mNzhlNmZmIDEwMDY0NAotLS0gYS9Ub29scy9tc2kvbWFrZV96aXAucHJvagorKysgYi9Ub29scy9tc2kvbWFrZV96aXAucHJvagpAQCAtMTYsNyArMTYsNyBAQAogICAgICAgICA8VGFyZ2V0UGF0aD4kKE91dHB1dFBhdGgpXCQoVGFyZ2V0TmFtZSkkKFRhcmdldEV4dCk8L1RhcmdldFBhdGg+CiAgICAgICAgIDxDbGVhbkNvbW1hbmQ+cm1kaXIgL3EvcyAiJChJbnRlcm1lZGlhdGVPdXRwdXRQYXRoKVx6aXBfJChBcmNoTmFtZSkiPC9DbGVhbkNvbW1hbmQ+CiAgICAgICAgIDxBcmd1bWVudHM+IiQoUHl0aG9uRXhlKSIgIiQoTVNCdWlsZFRoaXNGaWxlRGlyZWN0b3J5KVxtYWtlX3ppcC5weSI8L0FyZ3VtZW50cz4KLSAgICAgICAgPEFyZ3VtZW50cz4kKEFyZ3VtZW50cykgLWUgLW8gIiQoVGFyZ2V0UGF0aCkiIC10ICIkKEludGVybWVkaWF0ZU91dHB1dFBhdGgpXHppcF8kKEFyY2hOYW1lKSIgLWIgIiQoQnVpbGRQYXRoLlRyaW1FbmQoJ1wnKSkiPC9Bcmd1bWVudHM+CisgICAgICAgIDxBcmd1bWVudHM+JChBcmd1bWVudHMpIC1lIC1vICIkKFRhcmdldFBhdGgpIiAtdCAiJChJbnRlcm1lZGlhdGVPdXRwdXRQYXRoKVx6aXBfJChBcmNoTmFtZSkiIC1hICQoQXJjaE5hbWUpPC9Bcmd1bWVudHM+CiAgICAgICAgIDxFbnZpcm9ubWVudD5zZXQgRE9DX0ZJTEVOQU1FPXB5dGhvbiQoUHl0aG9uVmVyc2lvbikuY2htCiBzZXQgVkNSRURJU1RfUEFUSD0kKFZTMTQwQ09NTlRPT0xTKVwuLlwuLlxWQ1xyZWRpc3RcJChQbGF0Zm9ybSlcTWljcm9zb2Z0LlZDMTQwLkNSVDwvRW52aXJvbm1lbnQ+CiAgICAgPC9Qcm9wZXJ0eUdyb3VwPgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL21ha2VfemlwLnB5IGIvVG9vbHMvbXNpL21ha2VfemlwLnB5CmluZGV4IDlkYjk2Y2IuLjhkYmU4M2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9tYWtlX3ppcC5weQorKysgYi9Ub29scy9tc2kvbWFrZV96aXAucHkKQEAgLTIwLDYgKzIwLDcgQEAKICAgICAnX2N0eXBlc190ZXN0JywKICAgICAnX3Rlc3RidWZmZXInLAogICAgICdfdGVzdGNhcGknLAorICAgICdfdGVzdGNvbnNvbGUnLAogICAgICdfdGVzdGltcG9ydG11bHRpcGxlJywKICAgICAnX3Rlc3RtdWx0aXBoYXNlJywKICAgICAneHhsaW1pdGVkJywKQEAgLTQyLDExICs0MywxNiBAQAogfQogCiBFWENMVURFX0ZJTEVfRlJPTV9MSUJTID0geworICAgICdsaWJsem1hJywKICAgICAnc3NsZWF5JywKICAgICAnbGliZWF5JywKICAgICAncHl0aG9uM3N0dWInLAogfQogCitFWENMVURFRF9GSUxFUyA9IHsKKyAgICAncHlzaGVsbGV4dCcsCit9CisKIGRlZiBpc19ub3RfZGVidWcocCk6CiAgICAgaWYgREVCVUdfUkUuc2VhcmNoKHAubmFtZSk6CiAgICAgICAgIHJldHVybiBGYWxzZQpAQCAtNTQsNyArNjAsNyBAQAogICAgIGlmIFRLVENMX1JFLnNlYXJjaChwLm5hbWUpOgogICAgICAgICByZXR1cm4gRmFsc2UKIAotICAgIHJldHVybiBwLnN0ZW0ubG93ZXIoKSBub3QgaW4gREVCVUdfRklMRVMKKyAgICByZXR1cm4gcC5zdGVtLmxvd2VyKCkgbm90IGluIERFQlVHX0ZJTEVTIGFuZCBwLnN0ZW0ubG93ZXIoKSBub3QgaW4gRVhDTFVERURfRklMRVMKIAogZGVmIGlzX25vdF9kZWJ1Z19vcl9weXRob24ocCk6CiAgICAgcmV0dXJuIGlzX25vdF9kZWJ1ZyhwKSBhbmQgbm90IFBZVEhPTl9ETExfUkUuc2VhcmNoKHAubmFtZSkKQEAgLTY0LDggKzcwLDYgQEAKICAgICBpZiBwLmlzX2RpcigpOgogICAgICAgICBpZiBuYW1lIGluIEVYQ0xVREVfRlJPTV9MSUJSQVJZOgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgncGxhdC0nKToKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICBpZiBuYW1lID09ICd0ZXN0JyBhbmQgcC5wYXJ0c1stMl0ubG93ZXIoKSA9PSAnbGliJzoKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICBpZiBuYW1lIGluIHsndGVzdCcsICd0ZXN0cyd9IGFuZCBwLnBhcnRzWy0zXS5sb3dlcigpID09ICdsaWInOgpAQCAtOTAsMjUgKzk0LDI3IEBACiAKICAgICByZXR1cm4gcC5zdWZmaXgubG93ZXIoKSBpbiB7Jy5weScsICcucHl3JywgJy50eHQnfQogCitCQVNFX05BTUUgPSAncHl0aG9uezAubWFqb3J9ezAubWlub3J9Jy5mb3JtYXQoc3lzLnZlcnNpb25faW5mbykKKwogRlVMTF9MQVlPVVQgPSBbCi0gICAgKCcvJywgJyRidWlsZCcsICdweXRob24uZXhlJywgaXNfbm90X2RlYnVnKSwKLSAgICAoJy8nLCAnJGJ1aWxkJywgJ3B5dGhvbncuZXhlJywgaXNfbm90X2RlYnVnKSwKLSAgICAoJy8nLCAnJGJ1aWxkJywgJ3B5dGhvbnswLm1ham9yfS5kbGwnLmZvcm1hdChzeXMudmVyc2lvbl9pbmZvKSwgaXNfbm90X2RlYnVnKSwKLSAgICAoJy8nLCAnJGJ1aWxkJywgJ3B5dGhvbnswLm1ham9yfXswLm1pbm9yfS5kbGwnLmZvcm1hdChzeXMudmVyc2lvbl9pbmZvKSwgaXNfbm90X2RlYnVnKSwKLSAgICAoJ0RMTHMvJywgJyRidWlsZCcsICcqLnB5ZCcsIGlzX25vdF9kZWJ1ZyksCi0gICAgKCdETExzLycsICckYnVpbGQnLCAnKi5kbGwnLCBpc19ub3RfZGVidWdfb3JfcHl0aG9uKSwKKyAgICAoJy8nLCAnUENCdWlsZC8kYXJjaCcsICdweXRob24uZXhlJywgaXNfbm90X2RlYnVnKSwKKyAgICAoJy8nLCAnUENCdWlsZC8kYXJjaCcsICdweXRob253LmV4ZScsIGlzX25vdF9kZWJ1ZyksCisgICAgKCcvJywgJ1BDQnVpbGQvJGFyY2gnLCAncHl0aG9ue30uZGxsJy5mb3JtYXQoc3lzLnZlcnNpb25faW5mby5tYWpvciksIGlzX25vdF9kZWJ1ZyksCisgICAgKCcvJywgJ1BDQnVpbGQvJGFyY2gnLCAne30uZGxsJy5mb3JtYXQoQkFTRV9OQU1FKSwgaXNfbm90X2RlYnVnKSwKKyAgICAoJ0RMTHMvJywgJ1BDQnVpbGQvJGFyY2gnLCAnKi5weWQnLCBpc19ub3RfZGVidWcpLAorICAgICgnRExMcy8nLCAnUENCdWlsZC8kYXJjaCcsICcqLmRsbCcsIGlzX25vdF9kZWJ1Z19vcl9weXRob24pLAogICAgICgnaW5jbHVkZS8nLCAnaW5jbHVkZScsICcqLmgnLCBOb25lKSwKICAgICAoJ2luY2x1ZGUvJywgJ1BDJywgJ3B5Y29uZmlnLmgnLCBOb25lKSwKICAgICAoJ0xpYi8nLCAnTGliJywgJyoqLyonLCBpbmNsdWRlX2luX2xpYiksCi0gICAgKCdsaWJzLycsICckYnVpbGQnLCAnKi5saWInLCBpbmNsdWRlX2luX2xpYnMpLAorICAgICgnbGlicy8nLCAnUENCdWlsZC8kYXJjaCcsICcqLmxpYicsIGluY2x1ZGVfaW5fbGlicyksCiAgICAgKCdUb29scy8nLCAnVG9vbHMnLCAnKiovKicsIGluY2x1ZGVfaW5fdG9vbHMpLAogXQogCiBFTUJFRF9MQVlPVVQgPSBbCi0gICAgKCcvJywgJyRidWlsZCcsICdweXRob24qLmV4ZScsIGlzX25vdF9kZWJ1ZyksCi0gICAgKCcvJywgJyRidWlsZCcsICcqLnB5ZCcsIGlzX25vdF9kZWJ1ZyksCi0gICAgKCcvJywgJyRidWlsZCcsICcqLmRsbCcsIGlzX25vdF9kZWJ1ZyksCi0gICAgKCdweXRob257MC5tYWpvcn17MC5taW5vcn0uemlwJy5mb3JtYXQoc3lzLnZlcnNpb25faW5mbyksICdMaWInLCAnKiovKicsIGluY2x1ZGVfaW5fbGliKSwKKyAgICAoJy8nLCAnUENCdWlsZC8kYXJjaCcsICdweXRob24qLmV4ZScsIGlzX25vdF9kZWJ1ZyksCisgICAgKCcvJywgJ1BDQnVpbGQvJGFyY2gnLCAnKi5weWQnLCBpc19ub3RfZGVidWcpLAorICAgICgnLycsICdQQ0J1aWxkLyRhcmNoJywgJyouZGxsJywgaXNfbm90X2RlYnVnKSwKKyAgICAoJ3t9LnppcCcuZm9ybWF0KEJBU0VfTkFNRSksICdMaWInLCAnKiovKicsIGluY2x1ZGVfaW5fbGliKSwKIF0KIAogaWYgb3MuZ2V0ZW52KCdET0NfRklMRU5BTUUnKToKQEAgLTE3MiwxNSArMTc4LDE1IEBACiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLW8nLCAnLS1vdXQnLCBtZXRhdmFyPSdmaWxlJywgaGVscD0nVGhlIG5hbWUgb2YgdGhlIG91dHB1dCBhcmNoaXZlJywgdHlwZT1QYXRoLCBkZWZhdWx0PU5vbmUpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXQnLCAnLS10ZW1wJywgbWV0YXZhcj0nZGlyJywgaGVscD0nQSBkaXJlY3RvcnkgdG8gdGVtcG9yYXJpbHkgZXh0cmFjdCBmaWxlcyBpbnRvJywgdHlwZT1QYXRoLCBkZWZhdWx0PU5vbmUpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWUnLCAnLS1lbWJlZCcsIGhlbHA9J0NyZWF0ZSBhbiBlbWJlZGRpbmcgbGF5b3V0JywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSkKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctYicsICctLWJ1aWxkJywgaGVscD0nU3BlY2lmeSB0aGUgYnVpbGQgZGlyZWN0b3J5JywgdHlwZT1QYXRoKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1hJywgJy0tYXJjaCcsIGhlbHA9J1NwZWNpZnkgdGhlIGFyY2hpdGVjdHVyZSB0byB1c2UgKHdpbjMyL2FtZDY0KScsIHR5cGU9c3RyLCBkZWZhdWx0PSJ3aW4zMiIpCiAgICAgbnMgPSBwYXJzZXIucGFyc2VfYXJncygpCiAKICAgICBzb3VyY2UgPSBucy5zb3VyY2Ugb3IgKFBhdGgoX19maWxlX18pLnJlc29sdmUoKS5wYXJlbnQucGFyZW50LnBhcmVudCkKICAgICBvdXQgPSBucy5vdXQKLSAgICBidWlsZCA9IG5zLmJ1aWxkCisgICAgYXJjaCA9IG5zLmFyY2gKICAgICBhc3NlcnQgaXNpbnN0YW5jZShzb3VyY2UsIFBhdGgpCiAgICAgYXNzZXJ0IG5vdCBvdXQgb3IgaXNpbnN0YW5jZShvdXQsIFBhdGgpCi0gICAgYXNzZXJ0IGlzaW5zdGFuY2UoYnVpbGQsIFBhdGgpCisgICAgYXNzZXJ0IGlzaW5zdGFuY2UoYXJjaCwgc3RyKQogCiAgICAgaWYgbnMudGVtcDoKICAgICAgICAgdGVtcCA9IG5zLnRlbXAKQEAgLTIwMywxMCArMjA5LDcgQEAKIAogICAgIHRyeToKICAgICAgICAgZm9yIHQsIHMsIHAsIGMgaW4gbGF5b3V0OgotICAgICAgICAgICAgaWYgcyA9PSAnJGJ1aWxkJzoKLSAgICAgICAgICAgICAgICBmcyA9IGJ1aWxkCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGZzID0gc291cmNlIC8gcworICAgICAgICAgICAgZnMgPSBzb3VyY2UgLyBzLnJlcGxhY2UoIiRhcmNoIiwgYXJjaCkKICAgICAgICAgICAgIGZpbGVzID0gcmdsb2IoZnMsIHAsIGMpCiAgICAgICAgICAgICBleHRyYV9maWxlcyA9IFtdCiAgICAgICAgICAgICBpZiBzID09ICdMaWInIGFuZCBwID09ICcqKi8qJzoKQEAgLTIxNyw4ICsyMjAsMTMgQEAKICAgICAgICAgICAgIGNvcGllZCA9IGNvcHlfdG9fbGF5b3V0KHRlbXAgLyB0LnJzdHJpcCgnLycpLCBjaGFpbihmaWxlcywgZXh0cmFfZmlsZXMpKQogICAgICAgICAgICAgcHJpbnQoJ0NvcGllZCB7fSBmaWxlcycuZm9ybWF0KGNvcGllZCkpCiAKLSAgICAgICAgd2l0aCBvcGVuKHN0cih0ZW1wIC8gJ3B5dmVudi5jZmcnKSwgJ3cnKSBhcyBmOgotICAgICAgICAgICAgcHJpbnQoJ2FwcGxvY2FsID0gdHJ1ZScsIGZpbGU9ZikKKyAgICAgICAgaWYgbnMuZW1iZWQ6CisgICAgICAgICAgICB3aXRoIG9wZW4oc3RyKHRlbXAgLyAoQkFTRV9OQU1FICsgJy5fcHRoJykpLCAndycpIGFzIGY6CisgICAgICAgICAgICAgICAgcHJpbnQoQkFTRV9OQU1FICsgJy56aXAnLCBmaWxlPWYpCisgICAgICAgICAgICAgICAgcHJpbnQoJy4nLCBmaWxlPWYpCisgICAgICAgICAgICAgICAgcHJpbnQoJycsIGZpbGU9ZikKKyAgICAgICAgICAgICAgICBwcmludCgnIyBVbmNvbW1lbnQgdG8gcnVuIHNpdGUubWFpbigpIGF1dG9tYXRpY2FsbHknLCBmaWxlPWYpCisgICAgICAgICAgICAgICAgcHJpbnQoJyNpbXBvcnQgc2l0ZScsIGZpbGU9ZikKIAogICAgICAgICBpZiBvdXQ6CiAgICAgICAgICAgICB0b3RhbCA9IGNvcHlfdG9fbGF5b3V0KG91dCwgcmdsb2IodGVtcCwgJyoqLyonLCBOb25lKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9tc2kucHJvcHMgYi9Ub29scy9tc2kvbXNpLnByb3BzCmluZGV4IDBjZjdjNzcuLjYwYWJiYTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9tc2kucHJvcHMKKysrIGIvVG9vbHMvbXNpL21zaS5wcm9wcwpAQCAtMTEsNiArMTEsNyBAQAogICAgICAgICA8Q29uZmlndXJhdGlvbiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pJyA9PSAnJyI+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KICAgICAgICAgPFBsYXRmb3JtIENvbmRpdGlvbj0iJyQoUGxhdGZvcm0pJyA9PSAnJyI+eDg2PC9QbGF0Zm9ybT4KICAgICAgICAgPEluc3RhbGxTY29wZSBDb25kaXRpb249IickKEluc3RhbGxTY29wZSknICE9ICdwZXJNYWNoaW5lJyI+cGVyVXNlcjwvSW5zdGFsbFNjb3BlPgorICAgICAgICA8X01ha2VDYXRDb21tYW5kIENvbmRpdGlvbj0iJyQoX01ha2VDYXRDb21tYW5kKScgPT0gJyciPm1ha2VjYXQ8L19NYWtlQ2F0Q29tbWFuZD4KICAgICA8L1Byb3BlcnR5R3JvdXA+CiAKICAgICA8SW1wb3J0IFByb2plY3Q9IndpeC5wcm9wcyIgLz4KQEAgLTY5LDYgKzcwLDggQEAKICAgICA8UHJvcGVydHlHcm91cD4KICAgICAgICAgPEJpdG5lc3M+MzItYml0PC9CaXRuZXNzPgogICAgICAgICA8Qml0bmVzcyBDb25kaXRpb249IiQoUGxhdGZvcm0pID09ICd4NjQnIj42NC1iaXQ8L0JpdG5lc3M+CisgICAgICAgIDxQbGF0Zm9ybUFyY2hpdGVjdHVyZT4zMmJpdDwvUGxhdGZvcm1BcmNoaXRlY3R1cmU+CisgICAgICAgIDxQbGF0Zm9ybUFyY2hpdGVjdHVyZSBDb25kaXRpb249IiQoUGxhdGZvcm0pID09ICd4NjQnIj42NGJpdDwvUGxhdGZvcm1BcmNoaXRlY3R1cmU+CiAgICAgICAgIDxEZWZpbmVDb25zdGFudHM+CiAgICAgICAgICAgICAkKERlZmluZUNvbnN0YW50cyk7CiAgICAgICAgICAgICBWZXJzaW9uPSQoSW5zdGFsbGVyVmVyc2lvbik7CkBAIC03OSw2ICs4Miw3IEBACiAgICAgICAgICAgICBVcGdyYWRlTWluaW11bVZlcnNpb249JChNYWpvclZlcnNpb25OdW1iZXIpLiQoTWlub3JWZXJzaW9uTnVtYmVyKS4wLjA7CiAgICAgICAgICAgICBOZXh0TWFqb3JWZXJzaW9uTnVtYmVyPSQoTWFqb3JWZXJzaW9uTnVtYmVyKS4kKFttc2J1aWxkXTo6QWRkKCQoTWlub3JWZXJzaW9uTnVtYmVyKSwgMSkpLjAuMDsKICAgICAgICAgICAgIEJpdG5lc3M9JChCaXRuZXNzKTsKKyAgICAgICAgICAgIFBsYXRmb3JtQXJjaGl0ZWN0dXJlPSQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpOwogICAgICAgICAgICAgUHlEZWJ1Z0V4dD0kKFB5RGVidWdFeHQpOwogICAgICAgICAgICAgUHlBcmNoRXh0PSQoUHlBcmNoRXh0KTsKICAgICAgICAgICAgIFB5VGVzdEV4dD0kKFB5VGVzdEV4dCk7CkBAIC0xMDAsNiArMTA0LDcgQEAKICAgICAgICAgICAgIDxHcm91cD5nZW5lcmF0ZWRfZmlsZWxpc3Q8L0dyb3VwPgogICAgICAgICAgICAgPENvbmRpdGlvbj48L0NvbmRpdGlvbj4KICAgICAgICAgICAgIDxEaXNrSWQ+PC9EaXNrSWQ+CisgICAgICAgICAgICA8SW5jbHVkZUluQ2F0PmZhbHNlPC9JbmNsdWRlSW5DYXQ+CiAgICAgICAgIDwvSW5zdGFsbEZpbGVzPgogICAgICAgICA8TGlua2VyQmluZElucHV0UGF0aHM+CiAgICAgICAgICAgICA8VmlzaWJsZT5mYWxzZTwvVmlzaWJsZT4KQEAgLTE1NSw2ICsxNjAsMTIgQEAKICAgICAgICAgPF9VdWlkIEluY2x1ZGU9IlJlbW92ZUxpYjJ0bzNQaWNrbGVDb21wb25lbnRHdWlkIj4KICAgICAgICAgICAgIDxVcmk+bGliMnRvMy9waWNrbGVzPC9Vcmk+CiAgICAgICAgIDwvX1V1aWQ+CisgICAgICAgIDxfVXVpZCBJbmNsdWRlPSJDb21tb25QeXRob25SZWdDb21wb25lbnRHdWlkIj4KKyAgICAgICAgICAgIDxVcmk+cmVnaXN0cnk8L1VyaT4KKyAgICAgICAgPC9fVXVpZD4KKyAgICAgICAgPF9VdWlkIEluY2x1ZGU9IlB5dGhvblJlZ0NvbXBvbmVudEd1aWQiPgorICAgICAgICAgICAgPFVyaT5yZWdpc3RyeS8kKE91dHB1dE5hbWUpPC9Vcmk+CisgICAgICAgIDwvX1V1aWQ+CiAgICAgPC9JdGVtR3JvdXA+CiAgICAgPFRhcmdldCBOYW1lPSJfR2VuZXJhdGVHdWlkcyIgQWZ0ZXJUYXJnZXRzPSJQcmVwYXJlRm9yQnVpbGQiIENvbmRpdGlvbj0iJChUYXJnZXROYW1lKSAhPSAnbGF1bmNoZXInIj4KICAgICAgICAgPFByb3BlcnR5R3JvdXA+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbXNpLnRhcmdldHMgYi9Ub29scy9tc2kvbXNpLnRhcmdldHMKaW5kZXggODZiZTM1Yi4uOTI4M2ExZSAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL21zaS50YXJnZXRzCisrKyBiL1Rvb2xzL21zaS9tc2kudGFyZ2V0cwpAQCAtMTIsOCArMTIsMTAgQEAKICAgICAgICAgICAgICAgICA8X1NvdXJjZT4lKFNvdXJjZSkkKFttc2J1aWxkXTo6TWFrZVJlbGF0aXZlKCUoU291cmNlQmFzZSksICUoRnVsbFBhdGgpKSk8L19Tb3VyY2U+CiAgICAgICAgICAgICAgICAgPF9UYXJnZXQ+JShUYXJnZXRfKSQoW21zYnVpbGRdOjpNYWtlUmVsYXRpdmUoJShUYXJnZXRCYXNlKSwgJShGdWxsUGF0aCkpKTwvX1RhcmdldD4KICAgICAgICAgICAgIDwvSW5zdGFsbEZpbGVzPgorICAgICAgICAgICAgCisgICAgICAgICAgICA8X0NhdGFsb2dGaWxlcyBJbmNsdWRlPSJAKEluc3RhbGxGaWxlcykiIENvbmRpdGlvbj0iJShJbnN0YWxsRmlsZXMuSW5jbHVkZUluQ2F0KSBhbmQgJychPSQoW1N5c3RlbS5JTy5GaWxlXTo6UmVhZEFsbFRleHQoJShJbnN0YWxsRmlsZXMuRnVsbFBhdGgpKSkiIC8+CiAgICAgICAgIDwvSXRlbUdyb3VwPgotICAgICAgICAKKwogICAgICAgICA8V3JpdGVMaW5lc1RvRmlsZSBGaWxlPSIkKF9GaWxlTGlzdFRhcmdldCkiIExpbmVzPSJAKEluc3RhbGxGaWxlcy0+JyZxdW90OyUoX1NvdXJjZSkmcXVvdDssJnF1b3Q7JShfVGFyZ2V0KSZxdW90OywmcXVvdDslKEdyb3VwKSZxdW90OywmcXVvdDslKERpc2tJZCkmcXVvdDssJnF1b3Q7JShDb25kaXRpb24pJnF1b3Q7JykiIE92ZXJ3cml0ZT0idHJ1ZSIgLz4KICAgICAgICAgPEV4ZWMgQ29tbWFuZD0nIiQoUHl0aG9uRXhlKSIgY3N2X3RvX3d4cy5weSAiJChfRmlsZUxpc3RUYXJnZXQpIiAiJChfSW5zdGFsbEZpbGVzVGFyZ2V0KSInCiAgICAgICAgICAgICAgIFdvcmtpbmdEaXJlY3Rvcnk9IiQoTVNCdWlsZFRoaXNGaWxlRGlyZWN0b3J5KSIgLz4KQEAgLTI0LDYgKzI2LDM1IEBACiAgICAgICAgIDwvSXRlbUdyb3VwPgogICAgIDwvVGFyZ2V0PgogCisgICAgPFRhcmdldCBOYW1lPSJHZW5lcmF0ZUNhdGFsb2ciIEFmdGVyVGFyZ2V0cz0iUHJvY2Vzc0luc3RhbGxGaWxlcyIgQ29uZGl0aW9uPSInQChfQ2F0YWxvZ0ZpbGVzKScgIT0gJyciPgorICAgICAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgICAgIDxfQ2F0RmlsZVNvdXJjZVRhcmdldD4kKEludGVybWVkaWF0ZU91dHB1dFBhdGgpJChNU0J1aWxkUHJvamVjdE5hbWUpLmNkZjwvX0NhdEZpbGVTb3VyY2VUYXJnZXQ+CisgICAgICAgICAgICA8X0NhdEZpbGVUYXJnZXQ+JChJbnRlcm1lZGlhdGVPdXRwdXRQYXRoKXB5dGhvbl8kKE1TQnVpbGRQcm9qZWN0TmFtZSkuY2F0PC9fQ2F0RmlsZVRhcmdldD4KKyAgICAgICAgICAgIDxfQ2F0RmlsZT5bQ2F0YWxvZ0hlYWRlcl0KK05hbWU9JChbU3lzdGVtLklPLlBhdGhdOjpHZXRGaWxlTmFtZSgkKF9DYXRGaWxlVGFyZ2V0KSkpCitSZXN1bHREaXI9JChbU3lzdGVtLklPLlBhdGhdOjpHZXREaXJlY3RvcnlOYW1lKCQoX0NhdEZpbGVUYXJnZXQpKSkKK1B1YmxpY1ZlcnNpb249MQorQ2F0YWxvZ1ZlcnNpb249MgorSGFzaEFsZ29yaXRobXM9U0hBMjU2CitQYWdlSGFzaGVzPWZhbHNlCitFbmNvZGluZ1R5cGU9CisKK1tDYXRhbG9nRmlsZXNdCitAKF9DYXRhbG9nRmlsZXMtPicmbHQ7SEFTSCZndDslKEZpbGVuYW1lKSUoRXh0ZW5zaW9uKT0lKEZ1bGxQYXRoKScsJworJykKKzwvX0NhdEZpbGU+CisgICAgICAgIDwvUHJvcGVydHlHcm91cD4KKworICAgICAgICA8V3JpdGVMaW5lc1RvRmlsZSBGaWxlPSIkKF9DYXRGaWxlU291cmNlVGFyZ2V0KSIgTGluZXM9IiQoX0NhdEZpbGUpIiBPdmVyd3JpdGU9InRydWUiIC8+CisgICAgICAgIDxFeGVjIENvbW1hbmQ9JyQoX01ha2VDYXRDb21tYW5kKSAiJChfQ2F0RmlsZVNvdXJjZVRhcmdldCkiJyBXb3JraW5nRGlyZWN0b3J5PSIkKE1TQnVpbGRUaGlzRmlsZURpcmVjdG9yeSkiIC8+CisgICAgICAgIDxFeGVjIENvbW1hbmQ9JyQoX1NpZ25Db21tYW5kKSAiJChfQ2F0RmlsZVRhcmdldCkiJyBXb3JraW5nRGlyZWN0b3J5PSIkKE1TQnVpbGRUaGlzRmlsZURpcmVjdG9yeSkiCisgICAgICAgICAgICAgIENvbmRpdGlvbj0iRXhpc3RzKCQoX0NhdEZpbGVUYXJnZXQpKSBhbmQgJyQoX1NpZ25Db21tYW5kKScgIT0gJyciIC8+CisKKyAgICAgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgICAgIDxGaWxlV3JpdGVzIEluY2x1ZGU9IiQoX0NhdEZpbGVTb3VyY2VUYXJnZXQpOyQoX0NhdEZpbGVUYXJnZXQpIiAvPgorICAgICAgICA8L0l0ZW1Hcm91cD4KKyAgICA8L1RhcmdldD4KKwogICAgIDxUYXJnZXQgTmFtZT0iX1RyYW5zZm9ybVd4bFRlbXBsYXRlcyIgQWZ0ZXJUYXJnZXRzPSJQcmVwYXJlRm9yQnVpbGQiIElucHV0cz0iQChXeGxUZW1wbGF0ZSk7JChQeVNvdXJjZVBhdGgpaW5jbHVkZVxwYXRjaGxldmVsLmgiIE91dHB1dHM9IiQoSW50ZXJtZWRpYXRlT3V0cHV0UGF0aCklKEZpbGVuYW1lKS53eGwiPgogICAgICAgICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IidAKFd4bFRlbXBsYXRlKScgIT0gJyciPgogICAgICAgICAgICAgPF9Db250ZW50PiQoW1N5c3RlbS5JTy5GaWxlXTo6UmVhZEFsbFRleHQoJShXeGxUZW1wbGF0ZS5GdWxsUGF0aCkpLlJlcGxhY2UoYHt7U2hvcnRWZXJzaW9ufX1gLCBgJChNYWpvclZlcnNpb25OdW1iZXIpLiQoTWlub3JWZXJzaW9uTnVtYmVyKSQoUHlUZXN0RXh0KWApLlJlcGxhY2UoYHt7TG9uZ1ZlcnNpb259fWAsIGAkKFB5dGhvblZlcnNpb24pJChQeVRlc3RFeHQpYCkuUmVwbGFjZShge3tCaXRuZXNzfX1gLCBgJChCaXRuZXNzKWApKTwvX0NvbnRlbnQ+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvdGVzdC90ZXN0X2ZpbGVzLnd4cyBiL1Rvb2xzL21zaS90ZXN0L3Rlc3RfZmlsZXMud3hzCmluZGV4IGU4MDNhYTAuLjgyYTkxMTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS90ZXN0L3Rlc3RfZmlsZXMud3hzCisrKyBiL1Rvb2xzL21zaS90ZXN0L3Rlc3RfZmlsZXMud3hzCkBAIC0xLDc3ICsxLDQyIEBACiDvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgogPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPD9kZWZpbmUgZXh0cz1fdGVzdGNhcGk7X2N0eXBlc190ZXN0O190ZXN0YnVmZmVyO190ZXN0aW1wb3J0bXVsdGlwbGU7X3Rlc3RtdWx0aXBoYXNlO190ZXN0Y29uc29sZSA/PgogICAgIDxGcmFnbWVudD4KICAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJ0ZXN0X2V4dGVuc2lvbnMiPgotICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iX3Rlc3RjYXBpLnB5ZCIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KLSAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3RjYXBpLnB5ZCIgTmFtZT0iX3Rlc3RjYXBpLnB5ZCIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgPD9mb3JlYWNoIGV4dCBpbiAkKHZhci5leHRzKT8+CisgICAgICAgIAorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iJCh2YXIuZXh0KS5weWQiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgTmFtZT0iJCh2YXIuZXh0KS5weWQiIEtleVBhdGg9InllcyIgLz4KICAgICAgICAgICAgIDwvQ29tcG9uZW50PgotICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iX2N0eXBlc190ZXN0LnB5ZCIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KLSAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX2N0eXBlc190ZXN0LnB5ZCIgTmFtZT0iX2N0eXBlc190ZXN0LnB5ZCIgS2V5UGF0aD0ieWVzIiAvPgotICAgICAgICAgICAgPC9Db21wb25lbnQ+Ci0gICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdGJ1ZmZlci5weWQiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+Ci0gICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il90ZXN0YnVmZmVyLnB5ZCIgTmFtZT0iX3Rlc3RidWZmZXIucHlkIiBLZXlQYXRoPSJ5ZXMiIC8+Ci0gICAgICAgICAgICA8L0NvbXBvbmVudD4KLSAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0aW1wb3J0bXVsdGlwbGUucHlkIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgotICAgICAgICAgICAgICAgIDxGaWxlIElkPSJfdGVzdGltcG9ydG11bHRpcGxlLnB5ZCIgTmFtZT0iX3Rlc3RpbXBvcnRtdWx0aXBsZS5weWQiIEtleVBhdGg9InllcyIgLz4KLSAgICAgICAgICAgIDwvQ29tcG9uZW50PgotICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iX3Rlc3RtdWx0aXBoYXNlLnB5ZCIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KLSAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3RtdWx0aXBoYXNlLnB5ZCIgTmFtZT0iX3Rlc3RtdWx0aXBoYXNlLnB5ZCIgS2V5UGF0aD0ieWVzIiAvPgotICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDw/ZW5kZm9yZWFjaCA/PgogICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgogICAgIDwvRnJhZ21lbnQ+CiAgICAgCiAgICAgPEZyYWdtZW50PgogICAgICAgICA8Q29tcG9uZW50R3JvdXAgSWQ9InRlc3RfZXh0ZW5zaW9uc19zeW1ib2xzIj4KLSAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0Y2FwaS5wZGIiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+Ci0gICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il90ZXN0Y2FwaS5wZGIiIE5hbWU9Il90ZXN0Y2FwaS5wZGIiIC8+CisgICAgICAgICAgICA8P2ZvcmVhY2ggZXh0IGluICQodmFyLmV4dHMpPz4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iJCh2YXIuZXh0KS5wZGIiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgTmFtZT0iJCh2YXIuZXh0KS5wZGIiIC8+CiAgICAgICAgICAgICA8L0NvbXBvbmVudD4KLSAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il9jdHlwZXNfdGVzdC5wZGIiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+Ci0gICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il9jdHlwZXNfdGVzdC5wZGIiIE5hbWU9Il9jdHlwZXNfdGVzdC5wZGIiIC8+Ci0gICAgICAgICAgICA8L0NvbXBvbmVudD4KLSAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0YnVmZmVyLnBkYiIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KLSAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3RidWZmZXIucGRiIiBOYW1lPSJfdGVzdGJ1ZmZlci5wZGIiIC8+Ci0gICAgICAgICAgICA8L0NvbXBvbmVudD4KLSAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0aW1wb3J0bXVsdGlwbGUucGRiIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgotICAgICAgICAgICAgICAgIDxGaWxlIElkPSJfdGVzdGltcG9ydG11bHRpcGxlLnBkYiIgTmFtZT0iX3Rlc3RpbXBvcnRtdWx0aXBsZS5wZGIiIC8+Ci0gICAgICAgICAgICA8L0NvbXBvbmVudD4KLSAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0bXVsdGlwaGFzZS5wZGIiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+Ci0gICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il90ZXN0bXVsdGlwaGFzZS5wZGIiIE5hbWU9Il90ZXN0bXVsdGlwaGFzZS5wZGIiIC8+Ci0gICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPD9lbmRmb3JlYWNoID8+CiAgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+CiAgICAgPC9GcmFnbWVudD4KICAgICAKICAgICA8RnJhZ21lbnQ+CiAgICAgICAgIDxDb21wb25lbnRHcm91cCBJZD0idGVzdF9leHRlbnNpb25zX2QiPgotICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iX3Rlc3RjYXBpX2QucHlkIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgotICAgICAgICAgICAgICAgIDxGaWxlIElkPSJfdGVzdGNhcGlfZC5weWQiIE5hbWU9Il90ZXN0Y2FwaV9kLnB5ZCIgLz4KKyAgICAgICAgICAgIDw/Zm9yZWFjaCBleHQgaW4gJCh2YXIuZXh0cyk/PgorICAgICAgICAgICAgCisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSIkKHZhci5leHQpX2QucHlkIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9IiQodmFyLmV4dClfZC5weWQiIC8+CiAgICAgICAgICAgICA8L0NvbXBvbmVudD4KLSAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il9jdHlwZXNfdGVzdF9kLnB5ZCIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KLSAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX2N0eXBlc190ZXN0X2QucHlkIiBOYW1lPSJfY3R5cGVzX3Rlc3RfZC5weWQiIC8+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSIkKHZhci5leHQpX2QucGRiIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9IiQodmFyLmV4dClfZC5wZGIiIC8+CiAgICAgICAgICAgICA8L0NvbXBvbmVudD4KLSAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0YnVmZmVyX2QucHlkIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgotICAgICAgICAgICAgICAgIDxGaWxlIElkPSJfdGVzdGJ1ZmZlcl9kLnB5ZCIgTmFtZT0iX3Rlc3RidWZmZXJfZC5weWQiIC8+Ci0gICAgICAgICAgICA8L0NvbXBvbmVudD4KLSAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0aW1wb3J0bXVsdGlwbGVfZC5weWQiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+Ci0gICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il90ZXN0aW1wb3J0bXVsdGlwbGVfZC5weWQiIE5hbWU9Il90ZXN0aW1wb3J0bXVsdGlwbGVfZC5weWQiIC8+Ci0gICAgICAgICAgICA8L0NvbXBvbmVudD4KLSAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0bXVsdGlwaGFzZV9kLnB5ZCIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KLSAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3RtdWx0aXBoYXNlX2QucHlkIiBOYW1lPSJfdGVzdG11bHRpcGhhc2VfZC5weWQiIC8+Ci0gICAgICAgICAgICA8L0NvbXBvbmVudD4KLSAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0Y2FwaV9kLnBkYiIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KLSAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3RjYXBpX2QucGRiIiBOYW1lPSJfdGVzdGNhcGlfZC5wZGIiIC8+Ci0gICAgICAgICAgICA8L0NvbXBvbmVudD4KLSAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il9jdHlwZXNfdGVzdF9kLnBkYiIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KLSAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX2N0eXBlc190ZXN0X2QucGRiIiBOYW1lPSJfY3R5cGVzX3Rlc3RfZC5wZGIiIC8+Ci0gICAgICAgICAgICA8L0NvbXBvbmVudD4KLSAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0YnVmZmVyX2QucGRiIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgotICAgICAgICAgICAgICAgIDxGaWxlIElkPSJfdGVzdGJ1ZmZlcl9kLnBkYiIgTmFtZT0iX3Rlc3RidWZmZXJfZC5wZGIiIC8+Ci0gICAgICAgICAgICA8L0NvbXBvbmVudD4KLSAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0aW1wb3J0bXVsdGlwbGVfZC5wZGIiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+Ci0gICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il90ZXN0aW1wb3J0bXVsdGlwbGVfZC5wZGIiIE5hbWU9Il90ZXN0aW1wb3J0bXVsdGlwbGVfZC5wZGIiIC8+Ci0gICAgICAgICAgICA8L0NvbXBvbmVudD4KLSAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0bXVsdGlwaGFzZV9kLnBkYiIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KLSAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3RtdWx0aXBoYXNlX2QucGRiIiBOYW1lPSJfdGVzdG11bHRpcGhhc2VfZC5wZGIiIC8+Ci0gICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPD9lbmRmb3JlYWNoID8+CiAgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+CiAgICAgPC9GcmFnbWVudD4KIDwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3Rvb2xzL3Rvb2xzLndpeHByb2ogYi9Ub29scy9tc2kvdG9vbHMvdG9vbHMud2l4cHJvagppbmRleCBmNDNjZjMzLi5iN2ZjNDFlIDEwMDY0NAotLS0gYS9Ub29scy9tc2kvdG9vbHMvdG9vbHMud2l4cHJvagorKysgYi9Ub29scy9tc2kvdG9vbHMvdG9vbHMud2l4cHJvagpAQCAtMzYsNiArMzYsNyBAQAogICAgICAgICAgICAgICAgIDxUYXJnZXRCYXNlPiQoUHlTb3VyY2VQYXRoKTwvVGFyZ2V0QmFzZT4KICAgICAgICAgICAgICAgICA8VGFyZ2V0Xz48L1RhcmdldF8+CiAgICAgICAgICAgICAgICAgPEdyb3VwPnRvb2xzX3B5PC9Hcm91cD4KKyAgICAgICAgICAgICAgICA8SW5jbHVkZUluQ2F0PnRydWU8L0luY2x1ZGVJbkNhdD4KICAgICAgICAgPC9JbnN0YWxsRmlsZXM+CiAgICAgPC9JdGVtR3JvdXA+CiAgICAgCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvdG9vbHMvdG9vbHMud3hzIGIvVG9vbHMvbXNpL3Rvb2xzL3Rvb2xzLnd4cwppbmRleCA4Zjg0MThhLi43YTgwNWQwIDEwMDY0NAotLS0gYS9Ub29scy9tc2kvdG9vbHMvdG9vbHMud3hzCisrKyBiL1Rvb2xzL21zaS90b29scy90b29scy53eHMKQEAgLTksNiArOSw3IEBACiAgICAgICAgIDxGZWF0dXJlIElkPSJEZWZhdWx0RmVhdHVyZSIgQWxsb3dBZHZlcnRpc2U9Im5vIiBUaXRsZT0iIShsb2MuVGl0bGUpIiBEZXNjcmlwdGlvbj0iIShsb2MuRGVzY3JpcHRpb24pIj4KICAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0idG9vbHNfcHkiIC8+CiAgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9InRvb2xzX3NjcmlwdHMiIC8+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9InRvb2xzX2NhdCIgLz4KICAgICAgICAgICAgIDxDb21wb25lbnRSZWYgSWQ9Ik9wdGlvbmFsRmVhdHVyZSIgLz4KICAgICAgICAgPC9GZWF0dXJlPgogICAgIDwvUHJvZHVjdD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS90b29scy90b29sc19maWxlcy53eHMgYi9Ub29scy9tc2kvdG9vbHMvdG9vbHNfZmlsZXMud3hzCmluZGV4IDNhZTBkYjIuLjljNzZiMWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS90b29scy90b29sc19maWxlcy53eHMKKysrIGIvVG9vbHMvbXNpL3Rvb2xzL3Rvb2xzX2ZpbGVzLnd4cwpAQCAtMTMsNCArMTMsMTEgQEAKICAgICAgICAgICAgIDwvQ29tcG9uZW50PgogICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgogICAgIDwvRnJhZ21lbnQ+CisgICAgPEZyYWdtZW50PgorICAgICAgICA8Q29tcG9uZW50R3JvdXAgSWQ9InRvb2xzX2NhdCI+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJ0b29sc19jYXQiIERpcmVjdG9yeT0iQ2F0YWxvZ3MiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9InB5dGhvbl90b29scy5jYXQiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgorICAgIDwvRnJhZ21lbnQ+CiA8L1dpeD4KZGlmZiAtLWdpdCBhL1Rvb2xzL251Z2V0L21ha2VfcGtnLnByb2ogYi9Ub29scy9udWdldC9tYWtlX3BrZy5wcm9qCmluZGV4IDgxYjg0ZjkuLmQ3ZTkzMmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL251Z2V0L21ha2VfcGtnLnByb2oKKysrIGIvVG9vbHMvbnVnZXQvbWFrZV9wa2cucHJvagpAQCAtMjMsNyArMjMsNyBAQAogICAgICAgICA8Q2xlYW5Db21tYW5kPnJtZGlyIC9xL3MgIiQoSW50ZXJtZWRpYXRlT3V0cHV0UGF0aCkiPC9DbGVhbkNvbW1hbmQ+CiAgICAgICAgIAogICAgICAgICA8UHl0aG9uQXJndW1lbnRzPiIkKFB5dGhvbkV4ZSkiICIkKE1TQnVpbGRUaGlzRmlsZURpcmVjdG9yeSlcLi5cbXNpXG1ha2VfemlwLnB5IjwvUHl0aG9uQXJndW1lbnRzPgotICAgICAgICA8UHl0aG9uQXJndW1lbnRzPiQoUHl0aG9uQXJndW1lbnRzKSAtdCAiJChJbnRlcm1lZGlhdGVPdXRwdXRQYXRoKSIgLWIgIiQoQnVpbGRQYXRoLlRyaW1FbmQoJ1wnKSkiPC9QeXRob25Bcmd1bWVudHM+CisgICAgICAgIDxQeXRob25Bcmd1bWVudHM+JChQeXRob25Bcmd1bWVudHMpIC10ICIkKEludGVybWVkaWF0ZU91dHB1dFBhdGgpIiAtYSAkKEFyY2hOYW1lKTwvUHl0aG9uQXJndW1lbnRzPgogICAgICAgICAKICAgICAgICAgPFBpcEFyZ3VtZW50cz4iJChJbnRlcm1lZGlhdGVPdXRwdXRQYXRoKVxweXRob24uZXhlIiAtQiAtYyAiaW1wb3J0IHN5czsgc3lzLnBhdGguYXBwZW5kKHInJChQeVNvdXJjZVBhdGgpXExpYicpOyBpbXBvcnQgZW5zdXJlcGlwOyBlbnN1cmVwaXAuX21haW4oKSI8L1BpcEFyZ3VtZW50cz4KICAgICAgICAgPFBhY2thZ2VBcmd1bWVudHMgQ29uZGl0aW9uPSIkKFBhY2thZ2VzKSAhPSAnJyI+IiQoSW50ZXJtZWRpYXRlT3V0cHV0UGF0aClccHl0aG9uLmV4ZSIgLUIgLW0gcGlwIGluc3RhbGwgLVUgJChQYWNrYWdlcyk8L1BhY2thZ2VBcmd1bWVudHM+CmRpZmYgLS1naXQgYS9Ub29scy9wYXJzZXIvdW5wYXJzZS5weSBiL1Rvb2xzL3BhcnNlci91bnBhcnNlLnB5CmluZGV4IDI4NTAzMGUuLjdlMWNjNGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3BhcnNlci91bnBhcnNlLnB5CisrKyBiL1Rvb2xzL3BhcnNlci91bnBhcnNlLnB5CkBAIC0xMDQsNiArMTA0LDE5IEBACiAgICAgICAgIHNlbGYud3JpdGUoIiAiK3NlbGYuYmlub3BbdC5vcC5fX2NsYXNzX18uX19uYW1lX19dKyI9ICIpCiAgICAgICAgIHNlbGYuZGlzcGF0Y2godC52YWx1ZSkKIAorICAgIGRlZiBfQW5uQXNzaWduKHNlbGYsIHQpOgorICAgICAgICBzZWxmLmZpbGwoKQorICAgICAgICBpZiBub3QgdC5zaW1wbGUgYW5kIGlzaW5zdGFuY2UodC50YXJnZXQsIGFzdC5OYW1lKToKKyAgICAgICAgICAgIHNlbGYud3JpdGUoJygnKQorICAgICAgICBzZWxmLmRpc3BhdGNoKHQudGFyZ2V0KQorICAgICAgICBpZiBub3QgdC5zaW1wbGUgYW5kIGlzaW5zdGFuY2UodC50YXJnZXQsIGFzdC5OYW1lKToKKyAgICAgICAgICAgIHNlbGYud3JpdGUoJyknKQorICAgICAgICBzZWxmLndyaXRlKCI6ICIpCisgICAgICAgIHNlbGYuZGlzcGF0Y2godC5hbm5vdGF0aW9uKQorICAgICAgICBpZiB0LnZhbHVlOgorICAgICAgICAgICAgc2VsZi53cml0ZSgiID0gIikKKyAgICAgICAgICAgIHNlbGYuZGlzcGF0Y2godC52YWx1ZSkKKwogICAgIGRlZiBfUmV0dXJuKHNlbGYsIHQpOgogICAgICAgICBzZWxmLmZpbGwoInJldHVybiIpCiAgICAgICAgIGlmIHQudmFsdWU6CkBAIC0zMjIsOSArMzM1LDcyIEBACiAgICAgZGVmIF9TdHIoc2VsZiwgdHJlZSk6CiAgICAgICAgIHNlbGYud3JpdGUocmVwcih0cmVlLnMpKQogCisgICAgZGVmIF9Kb2luZWRTdHIoc2VsZiwgdCk6CisgICAgICAgIHNlbGYud3JpdGUoImYiKQorICAgICAgICBzdHJpbmcgPSBpby5TdHJpbmdJTygpCisgICAgICAgIHNlbGYuX2ZzdHJpbmdfSm9pbmVkU3RyKHQsIHN0cmluZy53cml0ZSkKKyAgICAgICAgc2VsZi53cml0ZShyZXByKHN0cmluZy5nZXR2YWx1ZSgpKSkKKworICAgIGRlZiBfRm9ybWF0dGVkVmFsdWUoc2VsZiwgdCk6CisgICAgICAgIHNlbGYud3JpdGUoImYiKQorICAgICAgICBzdHJpbmcgPSBpby5TdHJpbmdJTygpCisgICAgICAgIHNlbGYuX2ZzdHJpbmdfRm9ybWF0dGVkVmFsdWUodCwgc3RyaW5nLndyaXRlKQorICAgICAgICBzZWxmLndyaXRlKHJlcHIoc3RyaW5nLmdldHZhbHVlKCkpKQorCisgICAgZGVmIF9mc3RyaW5nX0pvaW5lZFN0cihzZWxmLCB0LCB3cml0ZSk6CisgICAgICAgIGZvciB2YWx1ZSBpbiB0LnZhbHVlczoKKyAgICAgICAgICAgIG1ldGggPSBnZXRhdHRyKHNlbGYsICJfZnN0cmluZ18iICsgdHlwZSh2YWx1ZSkuX19uYW1lX18pCisgICAgICAgICAgICBtZXRoKHZhbHVlLCB3cml0ZSkKKworICAgIGRlZiBfZnN0cmluZ19TdHIoc2VsZiwgdCwgd3JpdGUpOgorICAgICAgICB2YWx1ZSA9IHQucy5yZXBsYWNlKCJ7IiwgInt7IikucmVwbGFjZSgifSIsICJ9fSIpCisgICAgICAgIHdyaXRlKHZhbHVlKQorCisgICAgZGVmIF9mc3RyaW5nX0NvbnN0YW50KHNlbGYsIHQsIHdyaXRlKToKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UodC52YWx1ZSwgc3RyKQorICAgICAgICB2YWx1ZSA9IHQudmFsdWUucmVwbGFjZSgieyIsICJ7eyIpLnJlcGxhY2UoIn0iLCAifX0iKQorICAgICAgICB3cml0ZSh2YWx1ZSkKKworICAgIGRlZiBfZnN0cmluZ19Gb3JtYXR0ZWRWYWx1ZShzZWxmLCB0LCB3cml0ZSk6CisgICAgICAgIHdyaXRlKCJ7IikKKyAgICAgICAgZXhwciA9IGlvLlN0cmluZ0lPKCkKKyAgICAgICAgVW5wYXJzZXIodC52YWx1ZSwgZXhwcikKKyAgICAgICAgZXhwciA9IGV4cHIuZ2V0dmFsdWUoKS5yc3RyaXAoIlxuIikKKyAgICAgICAgaWYgZXhwci5zdGFydHN3aXRoKCJ7Iik6CisgICAgICAgICAgICB3cml0ZSgiICIpICAjIFNlcGFyYXRlIHBhaXIgb2Ygb3BlbmluZyBicmFja2V0cyBhcyAieyB7IgorICAgICAgICB3cml0ZShleHByKQorICAgICAgICBpZiB0LmNvbnZlcnNpb24gIT0gLTE6CisgICAgICAgICAgICBjb252ZXJzaW9uID0gY2hyKHQuY29udmVyc2lvbikKKyAgICAgICAgICAgIGFzc2VydCBjb252ZXJzaW9uIGluICJzcmEiCisgICAgICAgICAgICB3cml0ZShmIiF7Y29udmVyc2lvbn0iKQorICAgICAgICBpZiB0LmZvcm1hdF9zcGVjOgorICAgICAgICAgICAgd3JpdGUoIjoiKQorICAgICAgICAgICAgbWV0aCA9IGdldGF0dHIoc2VsZiwgIl9mc3RyaW5nXyIgKyB0eXBlKHQuZm9ybWF0X3NwZWMpLl9fbmFtZV9fKQorICAgICAgICAgICAgbWV0aCh0LmZvcm1hdF9zcGVjLCB3cml0ZSkKKyAgICAgICAgd3JpdGUoIn0iKQorCiAgICAgZGVmIF9OYW1lKHNlbGYsIHQpOgogICAgICAgICBzZWxmLndyaXRlKHQuaWQpCiAKKyAgICBkZWYgX3dyaXRlX2NvbnN0YW50KHNlbGYsIHZhbHVlKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgKGZsb2F0LCBjb21wbGV4KSk6CisgICAgICAgICAgICBzZWxmLndyaXRlKHJlcHIodmFsdWUpLnJlcGxhY2UoImluZiIsIElORlNUUikpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLndyaXRlKHJlcHIodmFsdWUpKQorCisgICAgZGVmIF9Db25zdGFudChzZWxmLCB0KToKKyAgICAgICAgdmFsdWUgPSB0LnZhbHVlCisgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIHR1cGxlKToKKyAgICAgICAgICAgIHNlbGYud3JpdGUoIigiKQorICAgICAgICAgICAgaWYgbGVuKHZhbHVlKSA9PSAxOgorICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX2NvbnN0YW50KHZhbHVlWzBdKQorICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoIiwiKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpbnRlcmxlYXZlKGxhbWJkYTogc2VsZi53cml0ZSgiLCAiKSwgc2VsZi5fd3JpdGVfY29uc3RhbnQsIHZhbHVlKQorICAgICAgICAgICAgc2VsZi53cml0ZSgiKSIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl93cml0ZV9jb25zdGFudCh0LnZhbHVlKQorCiAgICAgZGVmIF9OYW1lQ29uc3RhbnQoc2VsZiwgdCk6CiAgICAgICAgIHNlbGYud3JpdGUocmVwcih0LnZhbHVlKSkKIApAQCAtMzY4LDcgKzQ0NCwxMCBAQAogICAgICAgICBzZWxmLndyaXRlKCJ9IikKIAogICAgIGRlZiBfY29tcHJlaGVuc2lvbihzZWxmLCB0KToKLSAgICAgICAgc2VsZi53cml0ZSgiIGZvciAiKQorICAgICAgICBpZiB0LmlzX2FzeW5jOgorICAgICAgICAgICAgc2VsZi53cml0ZSgiIGFzeW5jIGZvciAiKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi53cml0ZSgiIGZvciAiKQogICAgICAgICBzZWxmLmRpc3BhdGNoKHQudGFyZ2V0KQogICAgICAgICBzZWxmLndyaXRlKCIgaW4gIikKICAgICAgICAgc2VsZi5kaXNwYXRjaCh0Lml0ZXIpCkBAIC00MTMsNyArNDkyLDcgQEAKICAgICBkZWYgX1R1cGxlKHNlbGYsIHQpOgogICAgICAgICBzZWxmLndyaXRlKCIoIikKICAgICAgICAgaWYgbGVuKHQuZWx0cykgPT0gMToKLSAgICAgICAgICAgIChlbHQsKSA9IHQuZWx0cworICAgICAgICAgICAgZWx0ID0gdC5lbHRzWzBdCiAgICAgICAgICAgICBzZWxmLmRpc3BhdGNoKGVsdCkKICAgICAgICAgICAgIHNlbGYud3JpdGUoIiwiKQogICAgICAgICBlbHNlOgpAQCAtNDYwLDcgKzUzOSw4IEBACiAgICAgICAgICMgU3BlY2lhbCBjYXNlOiAzLl9fYWJzX18oKSBpcyBhIHN5bnRheCBlcnJvciwgc28gaWYgdC52YWx1ZQogICAgICAgICAjIGlzIGFuIGludGVnZXIgbGl0ZXJhbCB0aGVuIHdlIG5lZWQgdG8gZWl0aGVyIHBhcmVudGhlc2l6ZQogICAgICAgICAjIGl0IG9yIGFkZCBhbiBleHRyYSBzcGFjZSB0byBnZXQgMyAuX19hYnNfXygpLgotICAgICAgICBpZiBpc2luc3RhbmNlKHQudmFsdWUsIGFzdC5OdW0pIGFuZCBpc2luc3RhbmNlKHQudmFsdWUubiwgaW50KToKKyAgICAgICAgaWYgKChpc2luc3RhbmNlKHQudmFsdWUsIGFzdC5OdW0pIGFuZCBpc2luc3RhbmNlKHQudmFsdWUubiwgaW50KSkKKyAgICAgICAgICAgb3IgKGlzaW5zdGFuY2UodC52YWx1ZSwgYXN0LkNvbnN0YW50KSBhbmQgaXNpbnN0YW5jZSh0LnZhbHVlLnZhbHVlLCBpbnQpKSk6CiAgICAgICAgICAgICBzZWxmLndyaXRlKCIgIikKICAgICAgICAgc2VsZi53cml0ZSgiLiIpCiAgICAgICAgIHNlbGYud3JpdGUodC5hdHRyKQpkaWZmIC0tZ2l0IGEvVG9vbHMvcHliZW5jaC9Db21tYW5kTGluZS5weSBiL1Rvb2xzL3B5YmVuY2gvQ29tbWFuZExpbmUucHkKaW5kZXggMDczY2NhMC4uNTRhOGJhNyAxMDA2NDQKLS0tIGEvVG9vbHMvcHliZW5jaC9Db21tYW5kTGluZS5weQorKysgYi9Ub29scy9weWJlbmNoL0NvbW1hbmRMaW5lLnB5CkBAIC05OSw4ICs5OSw4IEBACiAjIEFsaWFzCiBnZXRwYXNzd2QgPSBpbnZpc2libGVfaW5wdXQKIAotX2ludGVnZXJSRSA9IHJlLmNvbXBpbGUoJ1xzKigtP1xkKylccyokJykKLV9pbnRlZ2VyUmFuZ2VSRSA9IHJlLmNvbXBpbGUoJ1xzKigtP1xkKylccyotXHMqKC0/XGQrKVxzKiQnKQorX2ludGVnZXJSRSA9IHJlLmNvbXBpbGUocidccyooLT9cZCspXHMqJCcpCitfaW50ZWdlclJhbmdlUkUgPSByZS5jb21waWxlKHInXHMqKC0/XGQrKVxzKi1ccyooLT9cZCspXHMqJCcpCiAKIGRlZiBzcmFuZ2UocywKIApkaWZmIC0tZ2l0IGEvVG9vbHMvcHliZW5jaC9XaXRoLnB5IGIvVG9vbHMvcHliZW5jaC9XaXRoLnB5CmluZGV4IDVmNTllOGMuLjMwY2QzYzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3B5YmVuY2gvV2l0aC5weQorKysgYi9Ub29scy9weWJlbmNoL1dpdGgucHkKQEAgLTEsNCArMSwzIEBACi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50CiBmcm9tIHB5YmVuY2ggaW1wb3J0IFRlc3QKIAogY2xhc3MgV2l0aEZpbmFsbHkoVGVzdCk6CmRpZmYgLS1naXQgYS9Ub29scy9weW5jaGUvQ29sb3JEQi5weSBiL1Rvb2xzL3B5bmNoZS9Db2xvckRCLnB5CmluZGV4IDVjZWQwZTcuLjAzNDgxNDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL3B5bmNoZS9Db2xvckRCLnB5CisrKyBiL1Rvb2xzL3B5bmNoZS9Db2xvckRCLnB5CkBAIC0xMzQsMTcgKzEzNCwxNyBAQAogDAogY2xhc3MgUkdCQ29sb3JEQihDb2xvckRCKToKICAgICBfcmUgPSByZS5jb21waWxlKAotICAgICAgICAnXHMqKD9QPHJlZD5cZCspXHMrKD9QPGdyZWVuPlxkKylccysoP1A8Ymx1ZT5cZCspXHMrKD9QPG5hbWU+LiopJykKKyAgICAgICAgcidccyooP1A8cmVkPlxkKylccysoP1A8Z3JlZW4+XGQrKVxzKyg/UDxibHVlPlxkKylccysoP1A8bmFtZT4uKiknKQogCiAKIGNsYXNzIEhUTUw0MERCKENvbG9yREIpOgotICAgIF9yZSA9IHJlLmNvbXBpbGUoJyg/UDxuYW1lPlxTKylccysoP1A8aGV4cmdiPiNbMC05YS1mQS1GXXs2fSknKQorICAgIF9yZSA9IHJlLmNvbXBpbGUocicoP1A8bmFtZT5cUyspXHMrKD9QPGhleHJnYj4jWzAtOWEtZkEtRl17Nn0pJykKIAogICAgIGRlZiBfZXh0cmFjdHJnYihzZWxmLCBtbyk6CiAgICAgICAgIHJldHVybiBycmdnYmJfdG9fdHJpcGxldChtby5ncm91cCgnaGV4cmdiJykpCiAKIGNsYXNzIExpZ2h0bGlua0RCKEhUTUw0MERCKToKLSAgICBfcmUgPSByZS5jb21waWxlKCcoP1A8bmFtZT4oLispKVxzKyg/UDxoZXhyZ2I+I1swLTlhLWZBLUZdezZ9KScpCisgICAgX3JlID0gcmUuY29tcGlsZShyJyg/UDxuYW1lPiguKykpXHMrKD9QPGhleHJnYj4jWzAtOWEtZkEtRl17Nn0pJykKIAogICAgIGRlZiBfZXh0cmFjdG5hbWUoc2VsZiwgbW8pOgogICAgICAgICByZXR1cm4gbW8uZ3JvdXAoJ25hbWUnKS5zdHJpcCgpCmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL2NvbWJpbmVyZWZzLnB5IGIvVG9vbHMvc2NyaXB0cy9jb21iaW5lcmVmcy5weQppbmRleCBlMTBlNDlhLi43Y2E5NTI2IDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL2NvbWJpbmVyZWZzLnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvY29tYmluZXJlZnMucHkKQEAgLTYsNyArNiw3IEBACiBBIGhlbHBlciBmb3IgYW5hbHl6aW5nIFBZVEhPTkRVTVBSRUZTIG91dHB1dC4KIAogV2hlbiB0aGUgUFlUSE9ORFVNUFJFRlMgZW52YXIgaXMgc2V0IGluIGEgZGVidWcgYnVpbGQsIGF0IFB5dGhvbiBzaHV0ZG93bgotdGltZSBQeV9GaW5hbGl6ZSgpIHByaW50cyB0aGUgbGlzdCBvZiBhbGwgbGl2ZSBvYmplY3RzIHR3aWNlOiAgZmlyc3QgaXQKK3RpbWUgUHlfRmluYWxpemVFeCgpIHByaW50cyB0aGUgbGlzdCBvZiBhbGwgbGl2ZSBvYmplY3RzIHR3aWNlOiAgZmlyc3QgaXQKIHByaW50cyB0aGUgcmVwcigpIG9mIGVhY2ggb2JqZWN0IHdoaWxlIHRoZSBpbnRlcnByZXRlciBpcyBzdGlsbCBmdWxseSBpbnRhY3QuCiBBZnRlciBjbGVhbmluZyB1cCBldmVyeXRoaW5nIGl0IGNhbiwgaXQgcHJpbnRzIGFsbCByZW1haW5pbmcgbGl2ZSBvYmplY3RzCiBhZ2FpbiwgYnV0IHRoZSBzZWNvbmQgdGltZSBqdXN0IHByaW50cyB0aGVpciBhZGRyZXNzZXMsIHJlZmNvdW50cywgYW5kIHR5cGUKQEAgLTQxLDcgKzQxLDcgQEAKIG9iamVjdHMgc2hvd24gaW4gdGhlIHJlcHI6ICB0aGUgcmVwciB3YXMgY2FwdHVyZWQgZnJvbSB0aGUgZmlyc3Qgb3V0cHV0IGJsb2NrLAogYW5kIHNvbWUgb2YgdGhlIGNvbnRhaW5lZXMgbWF5IGhhdmUgYmVlbiByZWxlYXNlZCBzaW5jZSB0aGVuLiAgRm9yIGV4YW1wbGUsCiBpdCdzIGNvbW1vbiBmb3IgdGhlIGxpbmUgc2hvd2luZyB0aGUgZGljdCBvZiBpbnRlcm5lZCBzdHJpbmdzIHRvIGRpc3BsYXkKLXN0cmluZ3MgdGhhdCBubyBsb25nZXIgZXhpc3QgYXQgdGhlIGVuZCBvZiBQeV9GaW5hbGl6ZTsgdGhpcyBjYW4gYmUgcmVjb2duaXplZAorc3RyaW5ncyB0aGF0IG5vIGxvbmdlciBleGlzdCBhdCB0aGUgZW5kIG9mIFB5X0ZpbmFsaXplRXg7IHRoaXMgY2FuIGJlIHJlY29nbml6ZWQKIChhbGJlaXQgcGFpbmZ1bGx5KSBiZWNhdXNlIHN1Y2ggY29udGFpbmVlcyBkb24ndCBoYXZlIGEgbGluZSBvZiB0aGVpciBvd24uCiAKIFRoZSBvYmplY3RzIGFyZSBsaXN0ZWQgaW4gYWxsb2NhdGlvbiBvcmRlciwgd2l0aCBtb3N0LXJlY2VudGx5IGFsbG9jYXRlZApkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9kaWZmLnB5IGIvVG9vbHMvc2NyaXB0cy9kaWZmLnB5CmluZGV4IDk3MjBhNDMuLjk2MTk5YjggMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvZGlmZi5weQorKysgYi9Ub29scy9zY3JpcHRzL2RpZmYucHkKQEAgLTgsNyArOCw3IEBACiAKICIiIgogCi1pbXBvcnQgc3lzLCBvcywgdGltZSwgZGlmZmxpYiwgYXJncGFyc2UKK2ltcG9ydCBzeXMsIG9zLCBkaWZmbGliLCBhcmdwYXJzZQogZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUsIHRpbWV6b25lCiAKIGRlZiBmaWxlX210aW1lKHBhdGgpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9maXhkaXYucHkgYi9Ub29scy9zY3JpcHRzL2ZpeGRpdi5weQppbmRleCAyMGYzMzg2Li4xMjEzYTRlIDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL2ZpeGRpdi5weQorKysgYi9Ub29scy9zY3JpcHRzL2ZpeGRpdi5weQpAQCAtMTc0LDggKzE3NCw4IEBACiAgICAgc3lzLnN0ZGVyci53cml0ZSgiVXNhZ2U6ICVzIFstbV0gd2FybmluZ3NcbiIgJSBzeXMuYXJndlswXSkKICAgICBzeXMuc3RkZXJyLndyaXRlKCJUcnkgYCVzIC1oJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIgJSBzeXMuYXJndlswXSkKIAotUEFUVEVSTiA9ICgiXiguKz8pOihcZCspOiBEZXByZWNhdGlvbldhcm5pbmc6ICIKLSAgICAgICAgICAgImNsYXNzaWMgKGludHxsb25nfGZsb2F0fGNvbXBsZXgpIGRpdmlzaW9uJCIpCitQQVRURVJOID0gKHIiXiguKz8pOihcZCspOiBEZXByZWNhdGlvbldhcm5pbmc6ICIKKyAgICAgICAgICAgciJjbGFzc2ljIChpbnR8bG9uZ3xmbG9hdHxjb21wbGV4KSBkaXZpc2lvbiQiKQogCiBkZWYgcmVhZHdhcm5pbmdzKHdhcm5pbmdzZmlsZSk6CiAgICAgcHJvZyA9IHJlLmNvbXBpbGUoUEFUVEVSTikKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvZ2VuZXJhdGVfb3Bjb2RlX2gucHkgYi9Ub29scy9zY3JpcHRzL2dlbmVyYXRlX29wY29kZV9oLnB5CmluZGV4IGM2MmY5YTUuLjk0OGI1NmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvZ2VuZXJhdGVfb3Bjb2RlX2gucHkKKysrIGIvVG9vbHMvc2NyaXB0cy9nZW5lcmF0ZV9vcGNvZGVfaC5weQpAQCAtMSw3ICsxLDUgQEAKICMgVGhpcyBzY3JpcHQgZ2VuZXJhdGVzIHRoZSBvcGNvZGUuaCBoZWFkZXIgZmlsZS4KIAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVudAotCiBpbXBvcnQgc3lzCiBoZWFkZXIgPSAiIiIvKiBBdXRvLWdlbmVyYXRlZCBieSBUb29scy9zY3JpcHRzL2dlbmVyYXRlX29wY29kZV9oLnB5ICovCiAjaWZuZGVmIFB5X09QQ09ERV9ICmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL2gycHkucHkgYi9Ub29scy9zY3JpcHRzL2gycHkucHkKaW5kZXggMDk2N2ZjMi4uNDM2M2MwYyAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy9oMnB5LnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvaDJweS5weQpAQCAtMjMsMTMgKzIzLDEzIEBACiAKIGltcG9ydCBzeXMsIHJlLCBnZXRvcHQsIG9zCiAKLXBfZGVmaW5lID0gcmUuY29tcGlsZSgnXltcdCBdKiNbXHQgXSpkZWZpbmVbXHQgXSsoW2EtekEtWjAtOV9dKylbXHQgXSsnKQorcF9kZWZpbmUgPSByZS5jb21waWxlKHInXltcdCBdKiNbXHQgXSpkZWZpbmVbXHQgXSsoW2EtekEtWjAtOV9dKylbXHQgXSsnKQogCiBwX21hY3JvID0gcmUuY29tcGlsZSgKLSAgJ15bXHQgXSojW1x0IF0qZGVmaW5lW1x0IF0rJwotICAnKFthLXpBLVowLTlfXSspXCgoW19hLXpBLVpdW19hLXpBLVowLTldKilcKVtcdCBdKycpCisgIHInXltcdCBdKiNbXHQgXSpkZWZpbmVbXHQgXSsnCisgIHInKFthLXpBLVowLTlfXSspXCgoW19hLXpBLVpdW19hLXpBLVowLTldKilcKVtcdCBdKycpCiAKLXBfaW5jbHVkZSA9IHJlLmNvbXBpbGUoJ15bXHQgXSojW1x0IF0qaW5jbHVkZVtcdCBdKzwoW14+XG5dKyk+JykKK3BfaW5jbHVkZSA9IHJlLmNvbXBpbGUocideW1x0IF0qI1tcdCBdKmluY2x1ZGVbXHQgXSs8KFtePlxuXSspPicpCiAKIHBfY29tbWVudCA9IHJlLmNvbXBpbGUocicvXCooW14qXSt8XCorW14vXSkqKFwqKy8pPycpCiBwX2NwcF9jb21tZW50ID0gcmUuY29tcGlsZSgnLy8uKicpCmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL2hpZ2hsaWdodC5weSBiL1Rvb2xzL3NjcmlwdHMvaGlnaGxpZ2h0LnB5CmluZGV4IDY2YWQ4NjguLjkyNzJmZWUgMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvaGlnaGxpZ2h0LnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvaGlnaGxpZ2h0LnB5CkBAIC0xNDcsMTQgKzE0NywxNCBAQAogIyMjIyBMYVRlWCBPdXRwdXQgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKIGRlZmF1bHRfbGF0ZXhfY29tbWFuZHMgPSB7Ci0gICAgJ2NvbW1lbnQnOiAne1xjb2xvcntyZWR9IzF9JywKLSAgICAnc3RyaW5nJzogJ3tcY29sb3J7Rm9yZXN0R3JlZW59IzF9JywKLSAgICAnZG9jc3RyaW5nJzogJ3tcZW1waHtcY29sb3J7Rm9yZXN0R3JlZW59IzF9fScsCi0gICAgJ2tleXdvcmQnOiAne1xjb2xvcntvcmFuZ2V9IzF9JywKLSAgICAnYnVpbHRpbic6ICd7XGNvbG9ye3B1cnBsZX0jMX0nLAotICAgICdkZWZpbml0aW9uJzogJ3tcY29sb3J7b3JhbmdlfSMxfScsCi0gICAgJ2RlZm5hbWUnOiAne1xjb2xvcntibHVlfSMxfScsCi0gICAgJ29wZXJhdG9yJzogJ3tcY29sb3J7YnJvd259IzF9JywKKyAgICAnY29tbWVudCc6IHIne1xjb2xvcntyZWR9IzF9JywKKyAgICAnc3RyaW5nJzogcid7XGNvbG9ye0ZvcmVzdEdyZWVufSMxfScsCisgICAgJ2RvY3N0cmluZyc6IHIne1xlbXBoe1xjb2xvcntGb3Jlc3RHcmVlbn0jMX19JywKKyAgICAna2V5d29yZCc6IHIne1xjb2xvcntvcmFuZ2V9IzF9JywKKyAgICAnYnVpbHRpbic6IHIne1xjb2xvcntwdXJwbGV9IzF9JywKKyAgICAnZGVmaW5pdGlvbic6IHIne1xjb2xvcntvcmFuZ2V9IzF9JywKKyAgICAnZGVmbmFtZSc6IHIne1xjb2xvcntibHVlfSMxfScsCisgICAgJ29wZXJhdG9yJzogcid7XGNvbG9ye2Jyb3dufSMxfScsCiB9CiAKIGRlZmF1bHRfbGF0ZXhfZG9jdW1lbnQgPSByJycnCmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL2lkbGUzIGIvVG9vbHMvc2NyaXB0cy9pZGxlMwppbmRleCA4ZWU5MmMyLi5kNzMzMmJjIDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL2lkbGUzCisrKyBiL1Rvb2xzL3NjcmlwdHMvaWRsZTMKQEAgLTEsNSArMSw1IEBACiAjISAvdXNyL2Jpbi9lbnYgcHl0aG9uMwogCi1mcm9tIGlkbGVsaWIuUHlTaGVsbCBpbXBvcnQgbWFpbgorZnJvbSBpZGxlbGliLnB5c2hlbGwgaW1wb3J0IG1haW4KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgbWFpbigpCmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL21haWxlcmRhZW1vbi5weSBiL1Rvb2xzL3NjcmlwdHMvbWFpbGVyZGFlbW9uLnB5CmluZGV4IGFlYjQ1MWUuLjYzNWU1NDggMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvbWFpbGVyZGFlbW9uLnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvbWFpbGVyZGFlbW9uLnB5CkBAIC04OCw3ICs4OCw3IEBACiAjIG5vIG1vcmUgZXhwcmVzc2lvbnMgYXJlIHNlYXJjaGVkIGZvci4gIFNvLCBvcmRlciBpcyBpbXBvcnRhbnQuCiBlbXBhcnNlX2xpc3RfcmVhc29uID0gWwogICAgIHInXjVcZHsyfSA8PlwuXC5cLiAoP1A8cmVhc29uPi4qKScsCi0gICAgJzw+XC5cLlwuICg/UDxyZWFzb24+LiopJywKKyAgICByJzw+XC5cLlwuICg/UDxyZWFzb24+LiopJywKICAgICByZS5jb21waWxlKHInXjw8PCA1XGR7Mn0gKD9QPHJlYXNvbj4uKiknLCByZS5NVUxUSUxJTkUpLAogICAgIHJlLmNvbXBpbGUoJz09PT09IHN0ZGVyciB3YXMgPT09PT1cbnJtYWlsOiAoP1A8cmVhc29uPi4qKScpLAogICAgIHJlLmNvbXBpbGUoJ15EaWFnbm9zdGljLUNvZGU6ICg/UDxyZWFzb24+LiopJywgcmUuTVVMVElMSU5FKSwKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvbm0yZGVmLnB5IGIvVG9vbHMvc2NyaXB0cy9ubTJkZWYucHkKaW5kZXggOGYwNzU1OS4uODNiYmNkNyAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy9ubTJkZWYucHkKKysrIGIvVG9vbHMvc2NyaXB0cy9ubTJkZWYucHkKQEAgLTM2LDggKzM2LDggQEAKICIiIgogaW1wb3J0IG9zLCBzeXMKIAotUFlUSE9OTElCID0gJ2xpYnB5dGhvbicrc3lzLnZlcnNpb25bOjNdKycuYScKLVBDX1BZVEhPTkxJQiA9ICdQeXRob24nK3N5cy52ZXJzaW9uWzBdK3N5cy52ZXJzaW9uWzJdKycuZGxsJworUFlUSE9OTElCID0gJ2xpYnB5dGhvbiVkLiVkLmEnICUgc3lzLnZlcnNpb25faW5mb1s6Ml0KK1BDX1BZVEhPTkxJQiA9ICdQeXRob24lZCVkLmRsbCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXQogTk0gPSAnbm0gLXAgLWcgJXMnICAgICAgICAgICAgICAgICAgICAgICMgRm9yIExpbnV4LCB1c2UgIm5tIC1nICVzIgogCiBkZWYgc3ltYm9scyhsaWI9UFlUSE9OTElCLHR5cGVzPSgnVCcsJ0MnLCdEJykpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9wYXJzZWVudGl0aWVzLnB5IGIvVG9vbHMvc2NyaXB0cy9wYXJzZWVudGl0aWVzLnB5CmluZGV4IGEwNDJkMWMuLmM2ODZiMDIgMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvcGFyc2VlbnRpdGllcy5weQorKysgYi9Ub29scy9zY3JpcHRzL3BhcnNlZW50aXRpZXMucHkKQEAgLTE0LDcgKzE0LDcgQEAKICIiIgogaW1wb3J0IHJlLHN5cwogCi1lbnRpdHlSRSA9IHJlLmNvbXBpbGUoJzwhRU5USVRZICsoXHcrKSArQ0RBVEEgKyIoW14iXSspIiArLS0gKygoPzoufFxuKSs/KSAqLS0+JykKK2VudGl0eVJFID0gcmUuY29tcGlsZShyJzwhRU5USVRZICsoXHcrKSArQ0RBVEEgKyIoW14iXSspIiArLS0gKygoPzoufFxuKSs/KSAqLS0+JykKIAogZGVmIHBhcnNlKHRleHQscG9zPTAsZW5kcG9zPU5vbmUpOgogCkBAIC0zOSw3ICszOSw3IEBACiAgICAgICAgIGlmIGNoYXJjb2RlWzoyXSA9PSAnJiMnOgogICAgICAgICAgICAgY29kZSA9IGludChjaGFyY29kZVsyOi0xXSkKICAgICAgICAgICAgIGlmIGNvZGUgPCAyNTY6Ci0gICAgICAgICAgICAgICAgY2hhcmNvZGUgPSAiJ1wlbyciICUgY29kZQorICAgICAgICAgICAgICAgIGNoYXJjb2RlID0gciInXCVvJyIgJSBjb2RlCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGNoYXJjb2RlID0gcmVwcihjaGFyY29kZSkKICAgICAgICAgZWxzZToKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvcGF0aGZpeC5weSBiL1Rvb2xzL3NjcmlwdHMvcGF0aGZpeC5weQppbmRleCAyMjQzMmQxLi41NjJiYmM3IDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL3BhdGhmaXgucHkKKysrIGIvVG9vbHMvc2NyaXB0cy9wYXRoZml4LnB5CkBAIC02NCw3ICs2NCw3IEBACiAgICAgICAgICAgICBpZiBmaXgoYXJnKTogYmFkID0gMQogICAgIHN5cy5leGl0KGJhZCkKIAotaXNweXRob25wcm9nID0gcmUuY29tcGlsZSgnXlthLXpBLVowLTlfXStcLnB5JCcpCitpc3B5dGhvbnByb2cgPSByZS5jb21waWxlKHInXlthLXpBLVowLTlfXStcLnB5JCcpCiBkZWYgaXNweXRob24obmFtZSk6CiAgICAgcmV0dXJuIGJvb2woaXNweXRob25wcm9nLm1hdGNoKG5hbWUpKQogCmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL3B0YWdzLnB5IGIvVG9vbHMvc2NyaXB0cy9wdGFncy5weQppbmRleCBjYTY0M2IzLi4zOTZjYmQwIDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL3B0YWdzLnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvcHRhZ3MucHkKQEAgLTI0LDcgKzI0LDcgQEAKICAgICAgICAgZm9yIHMgaW4gdGFnczogZnAud3JpdGUocykKIAogCi1leHByID0gJ15bIFx0XSooZGVmfGNsYXNzKVsgXHRdKyhbYS16QS1aMC05X10rKVsgXHRdKls6XChdJworZXhwciA9IHInXlsgXHRdKihkZWZ8Y2xhc3MpWyBcdF0rKFthLXpBLVowLTlfXSspWyBcdF0qWzpcKF0nCiBtYXRjaGVyID0gcmUuY29tcGlsZShleHByKQogCiBkZWYgdHJlYXRfZmlsZShmaWxlbmFtZSk6CmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL3B5dmVudiBiL1Rvb2xzL3NjcmlwdHMvcHl2ZW52CmluZGV4IDk3OGQ2OTEuLjFmYjQyYzYgMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvcHl2ZW52CisrKyBiL1Rvb2xzL3NjcmlwdHMvcHl2ZW52CkBAIC0xLDYgKzEsMTIgQEAKICMhL3Vzci9iaW4vZW52IHB5dGhvbjMKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgaW1wb3J0IHN5cworICAgIGltcG9ydCBwYXRobGliCisKKyAgICBleGVjdXRhYmxlID0gcGF0aGxpYi5QYXRoKHN5cy5leGVjdXRhYmxlIG9yICdweXRob24zJykubmFtZQorICAgIHByaW50KCdXQVJOSU5HOiB0aGUgcHllbnYgc2NyaXB0IGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mICcKKyAgICAgICAgICBmJ2B7ZXhlY3V0YWJsZX0gLW0gdmVudmAnLCBmaWxlPXN5cy5zdGRlcnIpCisKICAgICByYyA9IDEKICAgICB0cnk6CiAgICAgICAgIGltcG9ydCB2ZW52CmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL3N2bmVvbC5weSBiL1Rvb2xzL3NjcmlwdHMvc3ZuZW9sLnB5CmluZGV4IDhhYmRkMDEuLjZjNzBkYTkgMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvc3ZuZW9sLnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvc3ZuZW9sLnB5CkBAIC0xLDYgKzEsNiBAQAogIyEgL3Vzci9iaW4vZW52IHB5dGhvbjMKIAotIiIiCityIiIiCiBTVk4gaGVscGVyIHNjcmlwdC4KIAogVHJ5IHRvIHNldCB0aGUgc3ZuOmVvbC1zdHlsZSBwcm9wZXJ0eSB0byAibmF0aXZlIiBvbiBldmVyeSAucHksIC50eHQsIC5jIGFuZApkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy90ZXhpMmh0bWwucHkgYi9Ub29scy9zY3JpcHRzL3RleGkyaHRtbC5weQppbmRleCA5OTgzNTI4Li45YzFlOWZlIDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL3RleGkyaHRtbC5weQorKysgYi9Ub29scy9zY3JpcHRzL3RleGkyaHRtbC5weQpAQCAtNzgsMTEgKzc4LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcnVubmluZyB0ZXh0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBtZW51IGl0ZW0gKFl1Y2shKQotbWlwcm9nID0gcmUuY29tcGlsZSgnXlwqIChbXjpdKik6KDp8WyBcdF0qKFteXHQsXG4uXSspKFteIFx0XG5dKikpWyBcdFxuXSonKQotIyAgICAgICAgICAgICAgICAgICAwICAgIDEgICAgIDEgMiAgICAgICAgMyAgICAgICAgICAzNCAgICAgICAgIDQyICAgICAgICAwCi0jICAgICAgICAgICAgICAgICAgICAgICAgIC0tLS0tICAgICAgICAgICAgLS0tLS0tLS0tLSAgLS0tLS0tLS0tCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK21pcHJvZyA9IHJlLmNvbXBpbGUocideXCogKFteOl0qKTooOnxbIFx0XSooW15cdCxcbi5dKykoW14gXHRcbl0qKSlbIFx0XG5dKicpCisjICAgICAgICAgICAgICAgICAgICAwICAgIDEgICAgIDEgMiAgICAgICAgMyAgICAgICAgICAzNCAgICAgICAgIDQyICAgICAgICAwCisjICAgICAgICAgICAgICAgICAgICAgICAgICAtLS0tLSAgICAgICAgICAgIC0tLS0tLS0tLS0gIC0tLS0tLS0tLQorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL3NzbC90ZXN0X211bHRpcGxlX3ZlcnNpb25zLnB5IGIvVG9vbHMvc3NsL3Rlc3RfbXVsdGlwbGVfdmVyc2lvbnMucHkKaW5kZXggZGQ1N2RjZi4uMzBkNWZjZiAxMDA2NDQKLS0tIGEvVG9vbHMvc3NsL3Rlc3RfbXVsdGlwbGVfdmVyc2lvbnMucHkKKysrIGIvVG9vbHMvc3NsL3Rlc3RfbXVsdGlwbGVfdmVyc2lvbnMucHkKQEAgLTEwNSwxMSArMTA1LDExIEBACiAKICAgICBkZWYgX3N1YnByb2Nlc3NfY2FsbChzZWxmLCBjbWQsIHN0ZG91dD1zdWJwcm9jZXNzLkRFVk5VTEwsIGVudj1Ob25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICoqa3dhcmdzKToKLSAgICAgICAgbG9nLmRlYnVnKCJDYWxsICd7fSciLmZvcm1hdCgiICIuam9pbihjbWQpKSkKKyAgICAgICAgbG9nLmRlYnVnKCJDYWxsICclcyciLCAiICIuam9pbihjbWQpKQogICAgICAgICByZXR1cm4gc3VicHJvY2Vzcy5jaGVja19jYWxsKGNtZCwgc3Rkb3V0PXN0ZG91dCwgZW52PWVudiwgKiprd2FyZ3MpCiAKICAgICBkZWYgX3N1YnByb2Nlc3Nfb3V0cHV0KHNlbGYsIGNtZCwgZW52PU5vbmUsICoqa3dhcmdzKToKLSAgICAgICAgbG9nLmRlYnVnKCJDYWxsICd7fSciLmZvcm1hdCgiICIuam9pbihjbWQpKSkKKyAgICAgICAgbG9nLmRlYnVnKCJDYWxsICclcyciLCAiICIuam9pbihjbWQpKQogICAgICAgICBvdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQsIGVudj1lbnYpCiAgICAgICAgIHJldHVybiBvdXQuc3RyaXAoKS5kZWNvZGUoInV0Zi04IikKIApAQCAtMTY4LDcgKzE2OCw3IEBACiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5oYXNfc3JjOgogICAgICAgICAgICAgICAgIHNlbGYuX2Rvd25sb2FkX29wZW5zc2woKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBsb2cuZGVidWcoIkFscmVhZHkgaGFzIHNyYyB7fSIuZm9ybWF0KHNlbGYuc3JjX2ZpbGUpKQorICAgICAgICAgICAgICAgIGxvZy5kZWJ1ZygiQWxyZWFkeSBoYXMgc3JjICVzIiwgc2VsZi5zcmNfZmlsZSkKICAgICAgICAgICAgIHNlbGYuX3VucGFja19vcGVuc3NsKCkKICAgICAgICAgICAgIHNlbGYuX2J1aWxkX29wZW5zc2woKQogICAgICAgICAgICAgc2VsZi5faW5zdGFsbF9vcGVuc3NsKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL3R6L3pkdW1wLnB5IGIvVG9vbHMvdHovemR1bXAucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjk0YjQ4MwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL3R6L3pkdW1wLnB5CkBAIC0wLDAgKzEsODEgQEAKK2ltcG9ydCBzeXMKK2ltcG9ydCBvcworaW1wb3J0IHN0cnVjdAorZnJvbSBhcnJheSBpbXBvcnQgYXJyYXkKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUKK2Zyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lLCB0aW1lZGVsdGEKKwordHRpbmZvID0gbmFtZWR0dXBsZSgndHRpbmZvJywgWyd0dF9nbXRvZmYnLCAndHRfaXNkc3QnLCAndHRfYWJicmluZCddKQorCitjbGFzcyBUWkluZm86CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRyYW5zaXRpb25zLCB0eXBlX2luZGljZXMsIHR0aXMsIGFiYnJzKToKKyAgICAgICAgc2VsZi50cmFuc2l0aW9ucyA9IHRyYW5zaXRpb25zCisgICAgICAgIHNlbGYudHlwZV9pbmRpY2VzID0gdHlwZV9pbmRpY2VzCisgICAgICAgIHNlbGYudHRpcyA9IHR0aXMKKyAgICAgICAgc2VsZi5hYmJycyA9IGFiYnJzCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZnJvbWZpbGUoY2xzLCBmaWxlb2JqKToKKyAgICAgICAgaWYgZmlsZW9iai5yZWFkKDQpLmRlY29kZSgpICE9ICJUWmlmIjoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm5vdCBhIHpvbmVpbmZvIGZpbGUiKQorICAgICAgICBmaWxlb2JqLnNlZWsoMjApCisgICAgICAgIGhlYWRlciA9IGZpbGVvYmoucmVhZCgyNCkKKyAgICAgICAgdHpoID0gKHR6aF90dGlzZ210Y250LCB0emhfdHRpc3N0ZGNudCwgdHpoX2xlYXBjbnQsCisgICAgICAgICAgICAgICB0emhfdGltZWNudCwgdHpoX3R5cGVjbnQsIHR6aF9jaGFyY250KSA9IHN0cnVjdC51bnBhY2soIj42bCIsIGhlYWRlcikKKyAgICAgICAgdHJhbnNpdGlvbnMgPSBhcnJheSgnaScpCisgICAgICAgIHRyYW5zaXRpb25zLmZyb21maWxlKGZpbGVvYmosIHR6aF90aW1lY250KQorICAgICAgICBpZiBzeXMuYnl0ZW9yZGVyICE9ICdiaWcnOgorICAgICAgICAgICAgdHJhbnNpdGlvbnMuYnl0ZXN3YXAoKQorCisgICAgICAgIHR5cGVfaW5kaWNlcyA9IGFycmF5KCdCJykKKyAgICAgICAgdHlwZV9pbmRpY2VzLmZyb21maWxlKGZpbGVvYmosIHR6aF90aW1lY250KQorCisgICAgICAgIHR0aXMgPSBbXQorICAgICAgICBmb3IgaSBpbiByYW5nZSh0emhfdHlwZWNudCk6CisgICAgICAgICAgICB0dGlzLmFwcGVuZCh0dGluZm8uX21ha2Uoc3RydWN0LnVucGFjaygiPmxiYiIsIGZpbGVvYmoucmVhZCg2KSkpKQorCisgICAgICAgIGFiYnJzID0gZmlsZW9iai5yZWFkKHR6aF9jaGFyY250KQorCisgICAgICAgIHNlbGYgPSBjbHModHJhbnNpdGlvbnMsIHR5cGVfaW5kaWNlcywgdHRpcywgYWJicnMpCisgICAgICAgIHNlbGYudHpoID0gdHpoCisKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBkdW1wKHNlbGYsIHN0cmVhbSwgc3RhcnQ9Tm9uZSwgZW5kPU5vbmUpOgorICAgICAgICBmb3IgaiwgKHRyYW5zLCBpKSBpbiBlbnVtZXJhdGUoemlwKHNlbGYudHJhbnNpdGlvbnMsIHNlbGYudHlwZV9pbmRpY2VzKSk6CisgICAgICAgICAgICB1dGMgPSBkYXRldGltZS51dGNmcm9tdGltZXN0YW1wKHRyYW5zKQorICAgICAgICAgICAgdHRpID0gc2VsZi50dGlzW2ldCisgICAgICAgICAgICBsbXQgPSBkYXRldGltZS51dGNmcm9tdGltZXN0YW1wKHRyYW5zICsgdHRpLnR0X2dtdG9mZikKKyAgICAgICAgICAgIGFiYnJpbmQgPSB0dGkudHRfYWJicmluZAorICAgICAgICAgICAgYWJiciA9IHNlbGYuYWJicnNbYWJicmluZDpzZWxmLmFiYnJzLmZpbmQoMCwgYWJicmluZCldLmRlY29kZSgpCisgICAgICAgICAgICBpZiBqID4gMDoKKyAgICAgICAgICAgICAgICBwcmV2X3R0aSA9IHNlbGYudHRpc1tzZWxmLnR5cGVfaW5kaWNlc1tqIC0gMV1dCisgICAgICAgICAgICAgICAgc2hpZnQgPSAiICUrZyIgJSAoKHR0aS50dF9nbXRvZmYgLSBwcmV2X3R0aS50dF9nbXRvZmYpIC8gMzYwMCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2hpZnQgPSAnJworICAgICAgICAgICAgcHJpbnQoIiVzIFVUQyA9ICVzICUtNXMgaXNkc3Q9JWQiICUgKHV0YywgbG10LCBhYmJyLCB0dGlbMV0pICsgc2hpZnQsIGZpbGU9c3RyZWFtKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHpvbmVsaXN0KGNscywgem9uZWRpcj0nL3Vzci9zaGFyZS96b25laW5mbycpOgorICAgICAgICB6b25lcyA9IFtdCisgICAgICAgIGZvciByb290LCBfLCBmaWxlcyBpbiBvcy53YWxrKHpvbmVkaXIpOgorICAgICAgICAgICAgZm9yIGYgaW4gZmlsZXM6CisgICAgICAgICAgICAgICAgcCA9IG9zLnBhdGguam9pbihyb290LCBmKQorICAgICAgICAgICAgICAgIHdpdGggb3BlbihwLCAncmInKSBhcyBvOgorICAgICAgICAgICAgICAgICAgICBtYWdpYyA9ICBvLnJlYWQoNCkKKyAgICAgICAgICAgICAgICBpZiBtYWdpYyA9PSBiJ1RaaWYnOgorICAgICAgICAgICAgICAgICAgICB6b25lcy5hcHBlbmQocFtsZW4oem9uZWRpcikgKyAxOl0pCisgICAgICAgIHJldHVybiB6b25lcworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIGlmIGxlbihzeXMuYXJndikgPCAyOgorICAgICAgICB6b25lcyA9IFRaSW5mby56b25lbGlzdCgpCisgICAgICAgIGZvciB6IGluIHpvbmVzOgorICAgICAgICAgICAgcHJpbnQoeikKKyAgICAgICAgc3lzLmV4aXQoKQorICAgIGZpbGVwYXRoID0gc3lzLmFyZ3ZbMV0KKyAgICBpZiBub3QgZmlsZXBhdGguc3RhcnRzd2l0aCgnLycpOgorICAgICAgICBmaWxlcGF0aCA9IG9zLnBhdGguam9pbignL3Vzci9zaGFyZS96b25laW5mbycsIGZpbGVwYXRoKQorICAgIHdpdGggb3BlbihmaWxlcGF0aCwgJ3JiJykgYXMgZmlsZW9iajoKKyAgICAgICAgdHppID0gVFpJbmZvLmZyb21maWxlKGZpbGVvYmopCisgICAgdHppLmR1bXAoc3lzLnN0ZG91dCkKZGlmZiAtLWdpdCBhL1Rvb2xzL3VuaWNvZGUvZ2VuY29kZWMucHkgYi9Ub29scy91bmljb2RlL2dlbmNvZGVjLnB5CmluZGV4IDRjMjE0NjkuLjMxZjAxMTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3VuaWNvZGUvZ2VuY29kZWMucHkKKysrIGIvVG9vbHMvdW5pY29kZS9nZW5jb2RlYy5weQpAQCAtMzcsMTEgKzM3LDExIEBACiAjIFBsYWNlaG9sZGVyIGZvciBhIG1pc3NpbmcgY29kZSBwb2ludAogTUlTU0lOR19DT0RFID0gLTEKIAotbWFwUkUgPSByZS5jb21waWxlKCcoKD86MHhbMC05YS1mQS1GXStcKz8pKyknCi0gICAgICAgICAgICAgICAgICAgJ1xzKycKLSAgICAgICAgICAgICAgICAgICAnKCg/Oig/OjB4WzAtOWEtZkEtWl0rfDxbQS1aYS16XSs+KVwrPykqKScKLSAgICAgICAgICAgICAgICAgICAnXHMqJwotICAgICAgICAgICAgICAgICAgICcoIy4rKT8nKQorbWFwUkUgPSByZS5jb21waWxlKHInKCg/OjB4WzAtOWEtZkEtRl0rXCs/KSspJworICAgICAgICAgICAgICAgICAgIHInXHMrJworICAgICAgICAgICAgICAgICAgIHInKCg/Oig/OjB4WzAtOWEtZkEtWl0rfDxbQS1aYS16XSs+KVwrPykqKScKKyAgICAgICAgICAgICAgICAgICByJ1xzKicKKyAgICAgICAgICAgICAgICAgICByJygjLispPycpCiAKIGRlZiBwYXJzZWNvZGVzKGNvZGVzLCBsZW49bGVuLCByYW5nZT1yYW5nZSk6CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL3VuaWNvZGUvbWFrZXVuaWNvZGVkYXRhLnB5IGIvVG9vbHMvdW5pY29kZS9tYWtldW5pY29kZWRhdGEucHkKaW5kZXggNzEzZTE3NS4uNWQ4MDE0YSAxMDA2NDQKLS0tIGEvVG9vbHMvdW5pY29kZS9tYWtldW5pY29kZWRhdGEucHkKKysrIGIvVG9vbHMvdW5pY29kZS9tYWtldW5pY29kZWRhdGEucHkKQEAgLTQyLDcgKzQyLDcgQEAKICMgICAqIERvYy9saWJyYXJ5L3N0ZHR5cGVzLnJzdCwgYW5kCiAjICAgKiBEb2MvbGlicmFyeS91bmljb2RlZGF0YS5yc3QKICMgICAqIERvYy9yZWZlcmVuY2UvbGV4aWNhbF9hbmFseXNpcy5yc3QgKHR3byBvY2N1cnJlbmNlcykKLVVOSURBVEFfVkVSU0lPTiA9ICI4LjAuMCIKK1VOSURBVEFfVkVSU0lPTiA9ICI5LjAuMCIKIFVOSUNPREVfREFUQSA9ICJVbmljb2RlRGF0YSVzLnR4dCIKIENPTVBPU0lUSU9OX0VYQ0xVU0lPTlMgPSAiQ29tcG9zaXRpb25FeGNsdXNpb25zJXMudHh0IgogRUFTVEFTSUFOX1dJRFRIID0gIkVhc3RBc2lhbldpZHRoJXMudHh0IgpAQCAtNzk2LDYgKzc5Niw3IEBACiAgICAgY2F0ZWdvcnlfY2hhbmdlcyA9IFsweEZGXSoweDExMDAwMAogICAgIGRlY2ltYWxfY2hhbmdlcyA9IFsweEZGXSoweDExMDAwMAogICAgIG1pcnJvcmVkX2NoYW5nZXMgPSBbMHhGRl0qMHgxMTAwMDAKKyAgICBlYXN0X2FzaWFuX3dpZHRoX2NoYW5nZXMgPSBbMHhGRl0qMHgxMTAwMDAKICAgICAjIEluIG51bWVyaWMgZGF0YSwgMCBtZWFucyAibm8gY2hhbmdlIiwKICAgICAjIC0xIG1lYW5zICJkaWQgbm90IGhhdmUgYSBudW1lcmljIHZhbHVlCiAgICAgbnVtZXJpY19jaGFuZ2VzID0gWzBdICogMHgxMTAwMDAKQEAgLTg2Miw2ICs4NjMsOSBAQAogICAgICAgICAgICAgICAgICAgICBlbGlmIGsgPT0gMTQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAjIGNoYW5nZSB0byBzaW1wbGUgdGl0bGVjYXNlIG1hcHBpbmc7IGlnbm9yZQogICAgICAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgICAgICBlbGlmIGsgPT0gMTU6CisgICAgICAgICAgICAgICAgICAgICAgICAjIGNoYW5nZSB0byBlYXN0IGFzaWFuIHdpZHRoCisgICAgICAgICAgICAgICAgICAgICAgICBlYXN0X2FzaWFuX3dpZHRoX2NoYW5nZXNbaV0gPSBFQVNUQVNJQU5XSURUSF9OQU1FUy5pbmRleCh2YWx1ZSkKICAgICAgICAgICAgICAgICAgICAgZWxpZiBrID09IDE2OgogICAgICAgICAgICAgICAgICAgICAgICAgIyBkZXJpdmVkIHByb3BlcnR5IGNoYW5nZXM7IG5vdCB5ZXQKICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKQEAgLTg3Myw4ICs4NzcsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MgRGlmZmVyZW5jZShFeGNlcHRpb24pOnBhc3MKICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIERpZmZlcmVuY2UoaGV4KGkpLCBrLCBvbGQudGFibGVbaV0sIG5ldy50YWJsZVtpXSkKICAgICBuZXcuY2hhbmdlZC5hcHBlbmQoKHZlcnNpb24sIGxpc3QoemlwKGJpZGlyX2NoYW5nZXMsIGNhdGVnb3J5X2NoYW5nZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjaW1hbF9jaGFuZ2VzLCBtaXJyb3JlZF9jaGFuZ2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWVyaWNfY2hhbmdlcykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjaW1hbF9jaGFuZ2VzLCBtaXJyb3JlZF9jaGFuZ2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWFzdF9hc2lhbl93aWR0aF9jaGFuZ2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtZXJpY19jaGFuZ2VzKSksCiAgICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxpemF0aW9uX2NoYW5nZXMpKQogCiBkZWYgb3Blbl9kYXRhKHRlbXBsYXRlLCB2ZXJzaW9uKToKZGlmZiAtLWdpdCBhL2FjbG9jYWwubTQgYi9hY2xvY2FsLm00CmluZGV4IDJhNzQ1ZTUuLjlhOWNjNTUgMTAwNjQ0Ci0tLSBhL2FjbG9jYWwubTQKKysrIGIvYWNsb2NhbC5tNApAQCAtMTMsNyArMTMsNyBAQAogCiBtNF9pZm5kZWYoW0FDX0NPTkZJR19NQUNST19ESVJTXSwgW200X2RlZnVuKFtfQU1fQ09ORklHX01BQ1JPX0RJUlNdLCBbXSltNF9kZWZ1bihbQUNfQ09ORklHX01BQ1JPX0RJUlNdLCBbX0FNX0NPTkZJR19NQUNST19ESVJTKCRAKV0pXSkKIGRubCBwa2cubTQgLSBNYWNyb3MgdG8gbG9jYXRlIGFuZCB1dGlsaXNlIHBrZy1jb25maWcuICAgLSotIEF1dG9jb25mIC0qLQotZG5sIHNlcmlhbCAxMSAocGtnLWNvbmZpZy0wLjI5LjEpCitkbmwgc2VyaWFsIDExIChwa2ctY29uZmlnLTAuMjkpCiBkbmwKIGRubCBDb3B5cmlnaHQgwqkgMjAwNCBTY290dCBKYW1lcyBSZW1uYW50IDxzY290dEBuZXRzcGxpdC5jb20+LgogZG5sIENvcHlyaWdodCDCqSAyMDEyLTIwMTUgRGFuIE5pY2hvbHNvbiA8ZGJuLmxpc3RzQGdtYWlsLmNvbT4KQEAgLTU1LDcgKzU1LDcgQEAKIGRubCBTZWUgdGhlICJTaW5jZSIgY29tbWVudCBmb3IgZWFjaCBtYWNybyB5b3UgdXNlIHRvIHNlZSB3aGF0IHZlcnNpb24KIGRubCBvZiB0aGUgbWFjcm9zIHlvdSByZXF1aXJlLgogbTRfZGVmdW4oW1BLR19QUkVSRVFdLAotW200X2RlZmluZShbUEtHX01BQ1JPU19WRVJTSU9OXSwgWzAuMjkuMV0pCitbbTRfZGVmaW5lKFtQS0dfTUFDUk9TX1ZFUlNJT05dLCBbMC4yOV0pCiBtNF9pZihtNF92ZXJzaW9uX2NvbXBhcmUoUEtHX01BQ1JPU19WRVJTSU9OLCBbJDFdKSwgLTEsCiAgICAgW200X2ZhdGFsKFtwa2cubTQgdmVyc2lvbiAkMSBvciBoaWdoZXIgaXMgcmVxdWlyZWQgYnV0IF1QS0dfTUFDUk9TX1ZFUlNJT05bIGZvdW5kXSldKQogXSlkbmwgUEtHX1BSRVJFUQpkaWZmIC0tZ2l0IGEvY29uZmlnLmd1ZXNzIGIvY29uZmlnLmd1ZXNzCmluZGV4IDJlOWFkN2YuLjFmNWM1MGMgMTAwNzU1Ci0tLSBhL2NvbmZpZy5ndWVzcworKysgYi9jb25maWcuZ3Vlc3MKQEAgLTEsOCArMSw4IEBACiAjISAvYmluL3NoCiAjIEF0dGVtcHQgdG8gZ3Vlc3MgYSBjYW5vbmljYWwgc3lzdGVtIG5hbWUuCi0jICAgQ29weXJpZ2h0IDE5OTItMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgICBDb3B5cmlnaHQgMTk5Mi0yMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCi10aW1lc3RhbXA9JzIwMTYtMTAtMDInCit0aW1lc3RhbXA9JzIwMTQtMDMtMjMnCiAKICMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKICMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKQEAgLTI0LDEyICsyNCwxMiBAQAogIyBwcm9ncmFtLiAgVGhpcyBFeGNlcHRpb24gaXMgYW4gYWRkaXRpb25hbCBwZXJtaXNzaW9uIHVuZGVyIHNlY3Rpb24gNwogIyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMyAoIkdQTHYzIikuCiAjCi0jIE9yaWdpbmFsbHkgd3JpdHRlbiBieSBQZXIgQm90aG5lcjsgbWFpbnRhaW5lZCBzaW5jZSAyMDAwIGJ5IEJlbiBFbGxpc3Rvbi4KKyMgT3JpZ2luYWxseSB3cml0dGVuIGJ5IFBlciBCb3RobmVyLgogIwogIyBZb3UgY2FuIGdldCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBzY3JpcHQgZnJvbToKLSMgaHR0cDovL2dpdC5zYXZhbm5haC5nbnUub3JnL2dpdHdlYi8/cD1jb25maWcuZ2l0O2E9YmxvYl9wbGFpbjtmPWNvbmZpZy5ndWVzcworIyBodHRwOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvZ2l0d2ViLz9wPWNvbmZpZy5naXQ7YT1ibG9iX3BsYWluO2Y9Y29uZmlnLmd1ZXNzO2hiPUhFQUQKICMKLSMgUGxlYXNlIHNlbmQgcGF0Y2hlcyB0byA8Y29uZmlnLXBhdGNoZXNAZ251Lm9yZz4uCisjIFBsZWFzZSBzZW5kIHBhdGNoZXMgd2l0aCBhIENoYW5nZUxvZyBlbnRyeSB0byBjb25maWctcGF0Y2hlc0BnbnUub3JnLgogCiAKIG1lPWBlY2hvICIkMCIgfCBzZWQgLWUgJ3MsLiovLCwnYApAQCAtNTAsNyArNTAsNyBAQAogR05VIGNvbmZpZy5ndWVzcyAoJHRpbWVzdGFtcCkKIAogT3JpZ2luYWxseSB3cml0dGVuIGJ5IFBlciBCb3RobmVyLgotQ29weXJpZ2h0IDE5OTItMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KK0NvcHlyaWdodCAxOTkyLTIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKIFRoaXMgaXMgZnJlZSBzb2Z0d2FyZTsgc2VlIHRoZSBzb3VyY2UgZm9yIGNvcHlpbmcgY29uZGl0aW9ucy4gIFRoZXJlIGlzIE5PCiB3YXJyYW50eTsgbm90IGV2ZW4gZm9yIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4iCkBAIC0xNjgsMjkgKzE2OCwxOSBAQAogCSMgTm90ZTogTmV0QlNEIGRvZXNuJ3QgcGFydGljdWxhcmx5IGNhcmUgYWJvdXQgdGhlIHZlbmRvcgogCSMgcG9ydGlvbiBvZiB0aGUgbmFtZS4gIFdlIGFsd2F5cyBzZXQgaXQgdG8gInVua25vd24iLgogCXN5c2N0bD0ic3lzY3RsIC1uIGh3Lm1hY2hpbmVfYXJjaCIKLQlVTkFNRV9NQUNISU5FX0FSQ0g9YCh1bmFtZSAtcCAyPi9kZXYvbnVsbCB8fCBcCi0JICAgIC9zYmluLyRzeXNjdGwgMj4vZGV2L251bGwgfHwgXAotCSAgICAvdXNyL3NiaW4vJHN5c2N0bCAyPi9kZXYvbnVsbCB8fCBcCi0JICAgIGVjaG8gdW5rbm93bilgCisJVU5BTUVfTUFDSElORV9BUkNIPWAoL3NiaW4vJHN5c2N0bCAyPi9kZXYvbnVsbCB8fCBcCisJICAgIC91c3Ivc2Jpbi8kc3lzY3RsIDI+L2Rldi9udWxsIHx8IGVjaG8gdW5rbm93bilgCiAJY2FzZSAiJHtVTkFNRV9NQUNISU5FX0FSQ0h9IiBpbgogCSAgICBhcm1lYikgbWFjaGluZT1hcm1lYi11bmtub3duIDs7CiAJICAgIGFybSopIG1hY2hpbmU9YXJtLXVua25vd24gOzsKIAkgICAgc2gzZWwpIG1hY2hpbmU9c2hsLXVua25vd24gOzsKIAkgICAgc2gzZWIpIG1hY2hpbmU9c2gtdW5rbm93biA7OwogCSAgICBzaDVlbCkgbWFjaGluZT1zaDVsZS11bmtub3duIDs7Ci0JICAgIGVhcm12KikKLQkJYXJjaD1gZWNobyAke1VOQU1FX01BQ0hJTkVfQVJDSH0gfCBzZWQgLWUgJ3MsXmVcKGFybXZbMC05XVwpLiokLFwxLCdgCi0JCWVuZGlhbj1gZWNobyAke1VOQU1FX01BQ0hJTkVfQVJDSH0gfCBzZWQgLW5lICdzLF4uKlwoZWJcKSQsXDEscCdgCi0JCW1hY2hpbmU9JHthcmNofSR7ZW5kaWFufS11bmtub3duCi0JCTs7CiAJICAgICopIG1hY2hpbmU9JHtVTkFNRV9NQUNISU5FX0FSQ0h9LXVua25vd24gOzsKIAllc2FjCiAJIyBUaGUgT3BlcmF0aW5nIFN5c3RlbSBpbmNsdWRpbmcgb2JqZWN0IGZvcm1hdCwgaWYgaXQgaGFzIHN3aXRjaGVkCi0JIyB0byBFTEYgcmVjZW50bHkgKG9yIHdpbGwgaW4gdGhlIGZ1dHVyZSkgYW5kIEFCSS4KKwkjIHRvIEVMRiByZWNlbnRseSwgb3Igd2lsbCBpbiB0aGUgZnV0dXJlLgogCWNhc2UgIiR7VU5BTUVfTUFDSElORV9BUkNIfSIgaW4KLQkgICAgZWFybSopCi0JCW9zPW5ldGJzZGVsZgotCQk7OwogCSAgICBhcm0qfGkzODZ8bTY4a3xuczMya3xzaDMqfHNwYXJjfHZheCkKIAkJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAogCQlpZiBlY2hvIF9fRUxGX18gfCAkQ0NfRk9SX0JVSUxEIC1FIC0gMj4vZGV2L251bGwgXApAQCAtMjA3LDEzICsxOTcsNiBAQAogCQlvcz1uZXRic2QKIAkJOzsKIAllc2FjCi0JIyBEZXRlcm1pbmUgQUJJIHRhZ3MuCi0JY2FzZSAiJHtVTkFNRV9NQUNISU5FX0FSQ0h9IiBpbgotCSAgICBlYXJtKikKLQkJZXhwcj0ncy9eZWFybXZbMC05XS8tZWFiaS87cy9lYiQvLycKLQkJYWJpPWBlY2hvICR7VU5BTUVfTUFDSElORV9BUkNIfSB8IHNlZCAtZSAiJGV4cHIiYAotCQk7OwotCWVzYWMKIAkjIFRoZSBPUyByZWxlYXNlCiAJIyBEZWJpYW4gR05VL05ldEJTRCBtYWNoaW5lcyBoYXZlIGEgZGlmZmVyZW50IHVzZXJsYW5kLCBhbmQKIAkjIHRodXMsIG5lZWQgYSBkaXN0aW5jdCB0cmlwbGV0LiBIb3dldmVyLCB0aGV5IGRvIG5vdCBuZWVkCkBAIC0yMjQsMTMgKzIwNywxMyBAQAogCQlyZWxlYXNlPSctZ251JwogCQk7OwogCSAgICAqKQotCQlyZWxlYXNlPWBlY2hvICR7VU5BTUVfUkVMRUFTRX0gfCBzZWQgLWUgJ3MvWy1fXS4qLy8nIHwgY3V0IC1kLiAtZjEsMmAKKwkJcmVsZWFzZT1gZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bLV9dLiovXC4vJ2AKIAkJOzsKIAllc2FjCiAJIyBTaW5jZSBDUFVfVFlQRS1NQU5VRkFDVFVSRVItS0VSTkVMLU9QRVJBVElOR19TWVNURU06CiAJIyBjb250YWlucyByZWR1bmRhbnQgaW5mb3JtYXRpb24sIHRoZSBzaG9ydGVyIGZvcm06CiAJIyBDUFVfVFlQRS1NQU5VRkFDVFVSRVItT1BFUkFUSU5HX1NZU1RFTSBpcyB1c2VkLgotCWVjaG8gIiR7bWFjaGluZX0tJHtvc30ke3JlbGVhc2V9JHthYml9IgorCWVjaG8gIiR7bWFjaGluZX0tJHtvc30ke3JlbGVhc2V9IgogCWV4aXQgOzsKICAgICAqOkJpdHJpZzoqOiopCiAJVU5BTUVfTUFDSElORV9BUkNIPWBhcmNoIHwgc2VkICdzL0JpdHJpZy4vLydgCkBAIC0yNDAsMTAgKzIyMyw2IEBACiAJVU5BTUVfTUFDSElORV9BUkNIPWBhcmNoIHwgc2VkICdzL09wZW5CU0QuLy8nYAogCWVjaG8gJHtVTkFNRV9NQUNISU5FX0FSQ0h9LXVua25vd24tb3BlbmJzZCR7VU5BTUVfUkVMRUFTRX0KIAlleGl0IDs7Ci0gICAgKjpMaWJlcnR5QlNEOio6KikKLQlVTkFNRV9NQUNISU5FX0FSQ0g9YGFyY2ggfCBzZWQgJ3MvXi4qQlNEXC4vLydgCi0JZWNobyAke1VOQU1FX01BQ0hJTkVfQVJDSH0tdW5rbm93bi1saWJlcnR5YnNkJHtVTkFNRV9SRUxFQVNFfQotCWV4aXQgOzsKICAgICAqOmVra29CU0Q6KjoqKQogCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWVra29ic2Qke1VOQU1FX1JFTEVBU0V9CiAJZXhpdCA7OwpAQCAtMjU2LDkgKzIzNSw2IEBACiAgICAgKjpNaXJCU0Q6KjoqKQogCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLW1pcmJzZCR7VU5BTUVfUkVMRUFTRX0KIAlleGl0IDs7Ci0gICAgKjpTb3J0aXg6KjoqKQotCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLXNvcnRpeAotCWV4aXQgOzsKICAgICBhbHBoYTpPU0YxOio6KikKIAljYXNlICRVTkFNRV9SRUxFQVNFIGluCiAJKjQuMCkKQEAgLTI3NSw0MiArMjUxLDQyIEBACiAJQUxQSEFfQ1BVX1RZUEU9YC91c3Ivc2Jpbi9wc3JpbmZvIC12IHwgc2VkIC1uIC1lICdzL14gIFRoZSBhbHBoYSBcKC4qXCkgcHJvY2Vzc29yLiokL1wxL3AnIHwgaGVhZCAtbiAxYAogCWNhc2UgIiRBTFBIQV9DUFVfVFlQRSIgaW4KIAkgICAgIkVWNCAoMjEwNjQpIikKLQkJVU5BTUVfTUFDSElORT1hbHBoYSA7OworCQlVTkFNRV9NQUNISU5FPSJhbHBoYSIgOzsKIAkgICAgIkVWNC41ICgyMTA2NCkiKQotCQlVTkFNRV9NQUNISU5FPWFscGhhIDs7CisJCVVOQU1FX01BQ0hJTkU9ImFscGhhIiA7OwogCSAgICAiTENBNCAoMjEwNjYvMjEwNjgpIikKLQkJVU5BTUVfTUFDSElORT1hbHBoYSA7OworCQlVTkFNRV9NQUNISU5FPSJhbHBoYSIgOzsKIAkgICAgIkVWNSAoMjExNjQpIikKLQkJVU5BTUVfTUFDSElORT1hbHBoYWV2NSA7OworCQlVTkFNRV9NQUNISU5FPSJhbHBoYWV2NSIgOzsKIAkgICAgIkVWNS42ICgyMTE2NEEpIikKLQkJVU5BTUVfTUFDSElORT1hbHBoYWV2NTYgOzsKKwkJVU5BTUVfTUFDSElORT0iYWxwaGFldjU2IiA7OwogCSAgICAiRVY1LjYgKDIxMTY0UEMpIikKLQkJVU5BTUVfTUFDSElORT1hbHBoYXBjYTU2IDs7CisJCVVOQU1FX01BQ0hJTkU9ImFscGhhcGNhNTYiIDs7CiAJICAgICJFVjUuNyAoMjExNjRQQykiKQotCQlVTkFNRV9NQUNISU5FPWFscGhhcGNhNTcgOzsKKwkJVU5BTUVfTUFDSElORT0iYWxwaGFwY2E1NyIgOzsKIAkgICAgIkVWNiAoMjEyNjQpIikKLQkJVU5BTUVfTUFDSElORT1hbHBoYWV2NiA7OworCQlVTkFNRV9NQUNISU5FPSJhbHBoYWV2NiIgOzsKIAkgICAgIkVWNi43ICgyMTI2NEEpIikKLQkJVU5BTUVfTUFDSElORT1hbHBoYWV2NjcgOzsKKwkJVU5BTUVfTUFDSElORT0iYWxwaGFldjY3IiA7OwogCSAgICAiRVY2LjhDQiAoMjEyNjRDKSIpCi0JCVVOQU1FX01BQ0hJTkU9YWxwaGFldjY4IDs7CisJCVVOQU1FX01BQ0hJTkU9ImFscGhhZXY2OCIgOzsKIAkgICAgIkVWNi44QUwgKDIxMjY0QikiKQotCQlVTkFNRV9NQUNISU5FPWFscGhhZXY2OCA7OworCQlVTkFNRV9NQUNISU5FPSJhbHBoYWV2NjgiIDs7CiAJICAgICJFVjYuOENYICgyMTI2NEQpIikKLQkJVU5BTUVfTUFDSElORT1hbHBoYWV2NjggOzsKKwkJVU5BTUVfTUFDSElORT0iYWxwaGFldjY4IiA7OwogCSAgICAiRVY2LjlBICgyMTI2NC9FVjY5QSkiKQotCQlVTkFNRV9NQUNISU5FPWFscGhhZXY2OSA7OworCQlVTkFNRV9NQUNISU5FPSJhbHBoYWV2NjkiIDs7CiAJICAgICJFVjcgKDIxMzY0KSIpCi0JCVVOQU1FX01BQ0hJTkU9YWxwaGFldjcgOzsKKwkJVU5BTUVfTUFDSElORT0iYWxwaGFldjciIDs7CiAJICAgICJFVjcuOSAoMjEzNjRBKSIpCi0JCVVOQU1FX01BQ0hJTkU9YWxwaGFldjc5IDs7CisJCVVOQU1FX01BQ0hJTkU9ImFscGhhZXY3OSIgOzsKIAllc2FjCiAJIyBBIFBuLm4gdmVyc2lvbiBpcyBhIHBhdGNoZWQgdmVyc2lvbi4KIAkjIEEgVm4ubiB2ZXJzaW9uIGlzIGEgcmVsZWFzZWQgdmVyc2lvbi4KIAkjIEEgVG4ubiB2ZXJzaW9uIGlzIGEgcmVsZWFzZWQgZmllbGQgdGVzdCB2ZXJzaW9uLgogCSMgQSBYbi5uIHZlcnNpb24gaXMgYW4gdW5yZWxlYXNlZCBleHBlcmltZW50YWwgYmFzZWxldmVsLgogCSMgMS4yIHVzZXMgIjEuMiIgZm9yIHVuYW1lIC1yLgotCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1kZWMtb3NmYGVjaG8gJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy9eW1BWVFhdLy8nIHwgdHIgQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVogYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpgCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LWRlYy1vc2ZgZWNobyAke1VOQU1FX1JFTEVBU0V9IHwgc2VkIC1lICdzL15bUFZUWF0vLycgfCB0ciAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eidgCiAJIyBSZXNldCBFWElUIHRyYXAgYmVmb3JlIGV4aXRpbmcgdG8gYXZvaWQgc3B1cmlvdXMgbm9uLXplcm8gZXhpdCBjb2RlLgogCWV4aXRjb2RlPSQ/CiAJdHJhcCAnJyAwCkBAIC0zODMsMTYgKzM1OSwxNiBAQAogCWV4aXQgOzsKICAgICBpODZwYzpTdW5PUzo1Lio6KiB8IGk4NnhlbjpTdW5PUzo1Lio6KikKIAlldmFsICRzZXRfY2NfZm9yX2J1aWxkCi0JU1VOX0FSQ0g9aTM4NgorCVNVTl9BUkNIPSJpMzg2IgogCSMgSWYgdGhlcmUgaXMgYSBjb21waWxlciwgc2VlIGlmIGl0IGlzIGNvbmZpZ3VyZWQgZm9yIDY0LWJpdCBvYmplY3RzLgogCSMgTm90ZSB0aGF0IHRoZSBTdW4gY2MgZG9lcyBub3QgdHVybiBfX0xQNjRfXyBpbnRvIDEgbGlrZSBnY2MgZG9lcy4KIAkjIFRoaXMgdGVzdCB3b3JrcyBmb3IgYm90aCBjb21waWxlcnMuCi0JaWYgWyAiJENDX0ZPUl9CVUlMRCIgIT0gbm9fY29tcGlsZXJfZm91bmQgXTsgdGhlbgorCWlmIFsgIiRDQ19GT1JfQlVJTEQiICE9ICdub19jb21waWxlcl9mb3VuZCcgXTsgdGhlbgogCSAgICBpZiAoZWNobyAnI2lmZGVmIF9fYW1kNjQnOyBlY2hvIElTXzY0QklUX0FSQ0g7IGVjaG8gJyNlbmRpZicpIHwgXAotCQkoQ0NPUFRTPSIiICRDQ19GT1JfQlVJTEQgLUUgLSAyPi9kZXYvbnVsbCkgfCBcCisJCShDQ09QVFM9ICRDQ19GT1JfQlVJTEQgLUUgLSAyPi9kZXYvbnVsbCkgfCBcCiAJCWdyZXAgSVNfNjRCSVRfQVJDSCA+L2Rldi9udWxsCiAJICAgIHRoZW4KLQkJU1VOX0FSQ0g9eDg2XzY0CisJCVNVTl9BUkNIPSJ4ODZfNjQiCiAJICAgIGZpCiAJZmkKIAllY2hvICR7U1VOX0FSQ0h9LXBjLXNvbGFyaXMyYGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvW14uXSovLydgCkBAIC00MTcsNyArMzkzLDcgQEAKIAlleGl0IDs7CiAgICAgc3VuKjoqOjQuMkJTRDoqKQogCVVOQU1FX1JFTEVBU0U9YChzZWQgMXEgL2V0Yy9tb3RkIHwgYXdrICd7cHJpbnQgc3Vic3RyKCQ1LDEsMyl9JykgMj4vZGV2L251bGxgCi0JdGVzdCAieCR7VU5BTUVfUkVMRUFTRX0iID0geCAmJiBVTkFNRV9SRUxFQVNFPTMKKwl0ZXN0ICJ4JHtVTkFNRV9SRUxFQVNFfSIgPSAieCIgJiYgVU5BTUVfUkVMRUFTRT0zCiAJY2FzZSAiYC9iaW4vYXJjaGAiIGluCiAJICAgIHN1bjMpCiAJCWVjaG8gbTY4ay1zdW4tc3Vub3Mke1VOQU1FX1JFTEVBU0V9CkBAIC02MDMsOSArNTc5LDggQEAKIAllbHNlCiAJCUlCTV9BUkNIPXBvd2VycGMKIAlmaQotCWlmIFsgLXggL3Vzci9iaW4vbHNscHAgXSA7IHRoZW4KLQkJSUJNX1JFVj1gL3Vzci9iaW4vbHNscHAgLUxxYyBib3MucnRlLmxpYmMgfAotCQkJICAgYXdrIC1GOiAneyBwcmludCAkMyB9JyB8IHNlZCBzL1swLTldKiQvMC9gCisJaWYgWyAteCAvdXNyL2Jpbi9vc2xldmVsIF0gOyB0aGVuCisJCUlCTV9SRVY9YC91c3IvYmluL29zbGV2ZWxgCiAJZWxzZQogCQlJQk1fUkVWPSR7VU5BTUVfVkVSU0lPTn0uJHtVTkFNRV9SRUxFQVNFfQogCWZpCkBAIC02NDIsMTMgKzYxNywxMyBAQAogCQkgICAgc2NfY3B1X3ZlcnNpb249YC91c3IvYmluL2dldGNvbmYgU0NfQ1BVX1ZFUlNJT04gMj4vZGV2L251bGxgCiAJCSAgICBzY19rZXJuZWxfYml0cz1gL3Vzci9iaW4vZ2V0Y29uZiBTQ19LRVJORUxfQklUUyAyPi9kZXYvbnVsbGAKIAkJICAgIGNhc2UgIiR7c2NfY3B1X3ZlcnNpb259IiBpbgotCQkgICAgICA1MjMpIEhQX0FSQ0g9aHBwYTEuMCA7OyAjIENQVV9QQV9SSVNDMV8wCi0JCSAgICAgIDUyOCkgSFBfQVJDSD1ocHBhMS4xIDs7ICMgQ1BVX1BBX1JJU0MxXzEKKwkJICAgICAgNTIzKSBIUF9BUkNIPSJocHBhMS4wIiA7OyAjIENQVV9QQV9SSVNDMV8wCisJCSAgICAgIDUyOCkgSFBfQVJDSD0iaHBwYTEuMSIgOzsgIyBDUFVfUEFfUklTQzFfMQogCQkgICAgICA1MzIpICAgICAgICAgICAgICAgICAgICAgICMgQ1BVX1BBX1JJU0MyXzAKIAkJCWNhc2UgIiR7c2Nfa2VybmVsX2JpdHN9IiBpbgotCQkJICAzMikgSFBfQVJDSD1ocHBhMi4wbiA7OwotCQkJICA2NCkgSFBfQVJDSD1ocHBhMi4wdyA7OwotCQkJICAnJykgSFBfQVJDSD1ocHBhMi4wIDs7ICAgIyBIUC1VWCAxMC4yMAorCQkJICAzMikgSFBfQVJDSD0iaHBwYTIuMG4iIDs7CisJCQkgIDY0KSBIUF9BUkNIPSJocHBhMi4wdyIgOzsKKwkJCSAgJycpIEhQX0FSQ0g9ImhwcGEyLjAiIDs7ICAgIyBIUC1VWCAxMC4yMAogCQkJZXNhYyA7OwogCQkgICAgZXNhYwogCQlmaQpAQCAtNjg3LDExICs2NjIsMTEgQEAKIAkJICAgIGV4aXQgKDApOwogCQl9CiBFT0YKLQkJICAgIChDQ09QVFM9IiIgJENDX0ZPUl9CVUlMRCAtbyAkZHVtbXkgJGR1bW15LmMgMj4vZGV2L251bGwpICYmIEhQX0FSQ0g9YCRkdW1teWAKKwkJICAgIChDQ09QVFM9ICRDQ19GT1JfQlVJTEQgLW8gJGR1bW15ICRkdW1teS5jIDI+L2Rldi9udWxsKSAmJiBIUF9BUkNIPWAkZHVtbXlgCiAJCSAgICB0ZXN0IC16ICIkSFBfQVJDSCIgJiYgSFBfQVJDSD1ocHBhCiAJCWZpIDs7CiAJZXNhYwotCWlmIFsgJHtIUF9BUkNIfSA9IGhwcGEyLjB3IF0KKwlpZiBbICR7SFBfQVJDSH0gPSAiaHBwYTIuMHciIF0KIAl0aGVuCiAJICAgIGV2YWwgJHNldF9jY19mb3JfYnVpbGQKIApAQCAtNzA0LDEyICs2NzksMTIgQEAKIAkgICAgIyAkIENDX0ZPUl9CVUlMRD0iY2MgK0RBMi4wdyIgLi9jb25maWcuZ3Vlc3MKIAkgICAgIyA9PiBocHBhNjQtaHAtaHB1eDExLjIzCiAKLQkgICAgaWYgZWNobyBfX0xQNjRfXyB8IChDQ09QVFM9IiIgJENDX0ZPUl9CVUlMRCAtRSAtIDI+L2Rldi9udWxsKSB8CisJICAgIGlmIGVjaG8gX19MUDY0X18gfCAoQ0NPUFRTPSAkQ0NfRk9SX0JVSUxEIC1FIC0gMj4vZGV2L251bGwpIHwKIAkJZ3JlcCAtcSBfX0xQNjRfXwogCSAgICB0aGVuCi0JCUhQX0FSQ0g9aHBwYTIuMHcKKwkJSFBfQVJDSD0iaHBwYTIuMHciCiAJICAgIGVsc2UKLQkJSFBfQVJDSD1ocHBhNjQKKwkJSFBfQVJDSD0iaHBwYTY0IgogCSAgICBmaQogCWZpCiAJZWNobyAke0hQX0FSQ0h9LWhwLWhwdXgke0hQVVhfUkVWfQpAQCAtODE0LDE0ICs3ODksMTQgQEAKIAllY2hvIGNyYXludi1jcmF5LXVuaWNvc21wJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy9cLlteLl0qJC8uWC8nCiAJZXhpdCA7OwogICAgIEYzMFswMV06VU5JWF9TeXN0ZW1fVjoqOiogfCBGNzAwOlVOSVhfU3lzdGVtX1Y6KjoqKQotCUZVSklUU1VfUFJPQz1gdW5hbWUgLW0gfCB0ciBBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiBhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5emAKLQlGVUpJVFNVX1NZUz1gdW5hbWUgLXAgfCB0ciBBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiBhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiB8IHNlZCAtZSAncy9cLy8vJ2AKKwlGVUpJVFNVX1BST0M9YHVuYW1lIC1tIHwgdHIgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJyAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonYAorCUZVSklUU1VfU1lTPWB1bmFtZSAtcCB8IHRyICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicgJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6JyB8IHNlZCAtZSAncy9cLy8vJ2AKIAlGVUpJVFNVX1JFTD1gZWNobyAke1VOQU1FX1JFTEVBU0V9IHwgc2VkIC1lICdzLyAvXy8nYAogCWVjaG8gIiR7RlVKSVRTVV9QUk9DfS1mdWppdHN1LSR7RlVKSVRTVV9TWVN9JHtGVUpJVFNVX1JFTH0iCiAJZXhpdCA7OwogICAgIDUwMDA6VU5JWF9TeXN0ZW1fVjo0Lio6KikKLQlGVUpJVFNVX1NZUz1gdW5hbWUgLXAgfCB0ciBBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiBhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiB8IHNlZCAtZSAncy9cLy8vJ2AKLQlGVUpJVFNVX1JFTD1gZWNobyAke1VOQU1FX1JFTEVBU0V9IHwgdHIgQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVogYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXogfCBzZWQgLWUgJ3MvIC9fLydgCisJRlVKSVRTVV9TWVM9YHVuYW1lIC1wIHwgdHIgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJyAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonIHwgc2VkIC1lICdzL1wvLy8nYAorCUZVSklUU1VfUkVMPWBlY2hvICR7VU5BTUVfUkVMRUFTRX0gfCB0ciAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicgfCBzZWQgLWUgJ3MvIC9fLydgCiAJZWNobyAic3BhcmMtZnVqaXRzdS0ke0ZVSklUU1VfU1lTfSR7RlVKSVRTVV9SRUx9IgogCWV4aXQgOzsKICAgICBpKjg2OkJTRC8zODY6KjoqIHwgaSo4NjpCU0QvT1M6KjoqIHwgKjpBc2NlbmRcIEVtYmVkZGVkL09TOio6KikKQEAgLTkwMyw3ICs4NzgsNyBAQAogCWV4aXQgOzsKICAgICAqOkdOVS8qOio6KikKIAkjIG90aGVyIHN5c3RlbXMgd2l0aCBHTlUgbGliYyBhbmQgdXNlcmxhbmQKLQllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1gZWNobyAke1VOQU1FX1NZU1RFTX0gfCBzZWQgJ3MsXlteL10qLywsJyB8IHRyICJbOnVwcGVyOl0iICJbOmxvd2VyOl0iYGBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1stKF0uKi8vJ2AtJHtMSUJDfQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWBlY2hvICR7VU5BTUVfU1lTVEVNfSB8IHNlZCAncyxeW14vXSovLCwnIHwgdHIgJ1tBLVpdJyAnW2Etel0nYGBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1stKF0uKi8vJ2AtJHtMSUJDfQogCWV4aXQgOzsKICAgICBpKjg2Ok1pbml4Oio6KikKIAllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtbWluaXgKQEAgLTkyNiw3ICs5MDEsNyBAQAogCSAgRVY2OCopIFVOQU1FX01BQ0hJTkU9YWxwaGFldjY4IDs7CiAJZXNhYwogCW9iamR1bXAgLS1wcml2YXRlLWhlYWRlcnMgL2Jpbi9zaCB8IGdyZXAgLXEgbGQuc28uMQotCWlmIHRlc3QgIiQ/IiA9IDAgOyB0aGVuIExJQkM9Z251bGliYzEgOyBmaQorCWlmIHRlc3QgIiQ/IiA9IDAgOyB0aGVuIExJQkM9ImdudWxpYmMxIiA7IGZpCiAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtJHtMSUJDfQogCWV4aXQgOzsKICAgICBhcmM6TGludXg6KjoqIHwgYXJjZWI6TGludXg6KjoqKQpAQCAtOTU3LDkgKzkzMiw2IEBACiAgICAgY3Jpc3YzMjpMaW51eDoqOiopCiAJZWNobyAke1VOQU1FX01BQ0hJTkV9LWF4aXMtbGludXgtJHtMSUJDfQogCWV4aXQgOzsKLSAgICBlMms6TGludXg6KjoqKQotCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LSR7TElCQ30KLQlleGl0IDs7CiAgICAgZnJ2OkxpbnV4Oio6KikKIAllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC0ke0xJQkN9CiAJZXhpdCA7OwpAQCAtOTcyLDkgKzk0NCw2IEBACiAgICAgaWE2NDpMaW51eDoqOiopCiAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtJHtMSUJDfQogCWV4aXQgOzsKLSAgICBrMW9tOkxpbnV4Oio6KikKLQllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC0ke0xJQkN9Ci0JZXhpdCA7OwogICAgIG0zMnIqOkxpbnV4Oio6KikKIAllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC0ke0xJQkN9CiAJZXhpdCA7OwpAQCAtMTAwMCw5ICs5NjksNiBAQAogCWV2YWwgYCRDQ19GT1JfQlVJTEQgLUUgJGR1bW15LmMgMj4vZGV2L251bGwgfCBncmVwICdeQ1BVJ2AKIAl0ZXN0IHgiJHtDUFV9IiAhPSB4ICYmIHsgZWNobyAiJHtDUFV9LXVua25vd24tbGludXgtJHtMSUJDfSI7IGV4aXQ7IH0KIAk7OwotICAgIG1pcHM2NGVsOkxpbnV4Oio6KikKLQllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC0ke0xJQkN9Ci0JZXhpdCA7OwogICAgIG9wZW5yaXNjKjpMaW51eDoqOiopCiAJZWNobyBvcjFrLXVua25vd24tbGludXgtJHtMSUJDfQogCWV4aXQgOzsKQEAgLTEwMzUsOSArMTAwMSw2IEBACiAgICAgcHBjbGU6TGludXg6KjoqKQogCWVjaG8gcG93ZXJwY2xlLXVua25vd24tbGludXgtJHtMSUJDfQogCWV4aXQgOzsKLSAgICByaXNjdjMyOkxpbnV4Oio6KiB8IHJpc2N2NjQ6TGludXg6KjoqKQotCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LSR7TElCQ30KLQlleGl0IDs7CiAgICAgczM5MDpMaW51eDoqOiogfCBzMzkweDpMaW51eDoqOiopCiAJZWNobyAke1VOQU1FX01BQ0hJTkV9LWlibS1saW51eC0ke0xJQkN9CiAJZXhpdCA7OwpAQCAtMTA1Nyw3ICsxMDIwLDcgQEAKIAllY2hvICR7VU5BTUVfTUFDSElORX0tZGVjLWxpbnV4LSR7TElCQ30KIAlleGl0IDs7CiAgICAgeDg2XzY0OkxpbnV4Oio6KikKLQllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtbGludXgtJHtMSUJDfQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LSR7TElCQ30KIAlleGl0IDs7CiAgICAgeHRlbnNhKjpMaW51eDoqOiopCiAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtJHtMSUJDfQpAQCAtMTEzNiw3ICsxMDk5LDcgQEAKIAkjIHVuYW1lIC1tIHByaW50cyBmb3IgREpHUFAgYWx3YXlzICdwYycsIGJ1dCBpdCBwcmludHMgbm90aGluZyBhYm91dAogCSMgdGhlIHByb2Nlc3Nvciwgc28gd2UgcGxheSBzYWZlIGJ5IGFzc3VtaW5nIGk1ODYuCiAJIyBOb3RlOiB3aGF0ZXZlciB0aGlzIGlzLCBpdCBNVVNUIGJlIHRoZSBzYW1lIGFzIHdoYXQgY29uZmlnLnN1YgotCSMgcHJpbnRzIGZvciB0aGUgImRqZ3BwIiBob3N0LCBvciBlbHNlIEdEQiBjb25maWd1cmUgd2lsbCBkZWNpZGUgdGhhdAorCSMgcHJpbnRzIGZvciB0aGUgImRqZ3BwIiBob3N0LCBvciBlbHNlIEdEQiBjb25maWd1cnkgd2lsbCBkZWNpZGUgdGhhdAogCSMgdGhpcyBpcyBhIGNyb3NzLWJ1aWxkLgogCWVjaG8gaTU4Ni1wYy1tc2Rvc2RqZ3BwCiAJZXhpdCA7OwpAQCAtMTI4NSw5ICsxMjQ4LDYgQEAKICAgICBTWC04UjpTVVBFUi1VWDoqOiopCiAJZWNobyBzeDhyLW5lYy1zdXBlcnV4JHtVTkFNRV9SRUxFQVNFfQogCWV4aXQgOzsKLSAgICBTWC1BQ0U6U1VQRVItVVg6KjoqKQotCWVjaG8gc3hhY2UtbmVjLXN1cGVydXgke1VOQU1FX1JFTEVBU0V9Ci0JZXhpdCA7OwogICAgIFBvd2VyKjpSaGFwc29keToqOiopCiAJZWNobyBwb3dlcnBjLWFwcGxlLXJoYXBzb2R5JHtVTkFNRV9SRUxFQVNFfQogCWV4aXQgOzsKQEAgLTEzMDEsOSArMTI2MSw5IEBACiAJICAgIFVOQU1FX1BST0NFU1NPUj1wb3dlcnBjCiAJZmkKIAlpZiB0ZXN0IGBlY2hvICIkVU5BTUVfUkVMRUFTRSIgfCBzZWQgLWUgJ3MvXC4uKi8vJ2AgLWxlIDEwIDsgdGhlbgotCSAgICBpZiBbICIkQ0NfRk9SX0JVSUxEIiAhPSBub19jb21waWxlcl9mb3VuZCBdOyB0aGVuCisJICAgIGlmIFsgIiRDQ19GT1JfQlVJTEQiICE9ICdub19jb21waWxlcl9mb3VuZCcgXTsgdGhlbgogCQlpZiAoZWNobyAnI2lmZGVmIF9fTFA2NF9fJzsgZWNobyBJU182NEJJVF9BUkNIOyBlY2hvICcjZW5kaWYnKSB8IFwKLQkJICAgIChDQ09QVFM9IiIgJENDX0ZPUl9CVUlMRCAtRSAtIDI+L2Rldi9udWxsKSB8IFwKKwkJICAgIChDQ09QVFM9ICRDQ19GT1JfQlVJTEQgLUUgLSAyPi9kZXYvbnVsbCkgfCBcCiAJCSAgICBncmVwIElTXzY0QklUX0FSQ0ggPi9kZXYvbnVsbAogCQl0aGVuCiAJCSAgICBjYXNlICRVTkFNRV9QUk9DRVNTT1IgaW4KQEAgLTEzMjUsNyArMTI4NSw3IEBACiAJZXhpdCA7OwogICAgICo6cHJvY250byo6KjoqIHwgKjpRTlg6WzAxMjM0NTY3ODldKjoqKQogCVVOQU1FX1BST0NFU1NPUj1gdW5hbWUgLXBgCi0JaWYgdGVzdCAiJFVOQU1FX1BST0NFU1NPUiIgPSB4ODY7IHRoZW4KKwlpZiB0ZXN0ICIkVU5BTUVfUFJPQ0VTU09SIiA9ICJ4ODYiOyB0aGVuCiAJCVVOQU1FX1BST0NFU1NPUj1pMzg2CiAJCVVOQU1FX01BQ0hJTkU9cGMKIAlmaQpAQCAtMTM1Niw3ICsxMzE2LDcgQEAKIAkjICJ1bmFtZSAtbSIgaXMgbm90IGNvbnNpc3RlbnQsIHNvIHVzZSAkY3B1dHlwZSBpbnN0ZWFkLiAzODYKIAkjIGlzIGNvbnZlcnRlZCB0byBpMzg2IGZvciBjb25zaXN0ZW5jeSB3aXRoIG90aGVyIHg4NgogCSMgb3BlcmF0aW5nIHN5c3RlbXMuCi0JaWYgdGVzdCAiJGNwdXR5cGUiID0gMzg2OyB0aGVuCisJaWYgdGVzdCAiJGNwdXR5cGUiID0gIjM4NiI7IHRoZW4KIAkgICAgVU5BTUVfTUFDSElORT1pMzg2CiAJZWxzZQogCSAgICBVTkFNRV9NQUNISU5FPSIkY3B1dHlwZSIKQEAgLTEzOTgsNyArMTM1OCw3IEBACiAJZWNobyBpMzg2LXBjLXhlbml4CiAJZXhpdCA7OwogICAgIGkqODY6c2t5b3M6KjoqKQotCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1za3lvc2BlY2hvICR7VU5BTUVfUkVMRUFTRX0gfCBzZWQgLWUgJ3MvIC4qJC8vJ2AKKwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtc2t5b3NgZWNobyAke1VOQU1FX1JFTEVBU0V9YCB8IHNlZCAtZSAncy8gLiokLy8nCiAJZXhpdCA7OwogICAgIGkqODY6cmRvczoqOiopCiAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLXJkb3MKQEAgLTE0MDksMjUgKzEzNjksMjMgQEAKICAgICB4ODZfNjQ6Vk1rZXJuZWw6KjoqKQogCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWVzeAogCWV4aXQgOzsKLSAgICBhbWQ2NDpJc2lsb25cIE9uZUZTOio6KikKLQllY2hvIHg4Nl82NC11bmtub3duLW9uZWZzCi0JZXhpdCA7OwogZXNhYwogCiBjYXQgPiYyIDw8RU9GCiAkMDogdW5hYmxlIHRvIGd1ZXNzIHN5c3RlbSB0eXBlCiAKLVRoaXMgc2NyaXB0ICh2ZXJzaW9uICR0aW1lc3RhbXApLCBoYXMgZmFpbGVkIHRvIHJlY29nbml6ZSB0aGUKLW9wZXJhdGluZyBzeXN0ZW0geW91IGFyZSB1c2luZy4gSWYgeW91ciBzY3JpcHQgaXMgb2xkLCBvdmVyd3JpdGUKLWNvbmZpZy5ndWVzcyBhbmQgY29uZmlnLnN1YiB3aXRoIHRoZSBsYXRlc3QgdmVyc2lvbnMgZnJvbToKK1RoaXMgc2NyaXB0LCBsYXN0IG1vZGlmaWVkICR0aW1lc3RhbXAsIGhhcyBmYWlsZWQgdG8gcmVjb2duaXplCit0aGUgb3BlcmF0aW5nIHN5c3RlbSB5b3UgYXJlIHVzaW5nLiBJdCBpcyBhZHZpc2VkIHRoYXQgeW91Citkb3dubG9hZCB0aGUgbW9zdCB1cCB0byBkYXRlIHZlcnNpb24gb2YgdGhlIGNvbmZpZyBzY3JpcHRzIGZyb20KIAotICBodHRwOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvZ2l0d2ViLz9wPWNvbmZpZy5naXQ7YT1ibG9iX3BsYWluO2Y9Y29uZmlnLmd1ZXNzCisgIGh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9naXR3ZWIvP3A9Y29uZmlnLmdpdDthPWJsb2JfcGxhaW47Zj1jb25maWcuZ3Vlc3M7aGI9SEVBRAogYW5kCi0gIGh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9naXR3ZWIvP3A9Y29uZmlnLmdpdDthPWJsb2JfcGxhaW47Zj1jb25maWcuc3ViCisgIGh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9naXR3ZWIvP3A9Y29uZmlnLmdpdDthPWJsb2JfcGxhaW47Zj1jb25maWcuc3ViO2hiPUhFQUQKIAotSWYgJDAgaGFzIGFscmVhZHkgYmVlbiB1cGRhdGVkLCBzZW5kIHRoZSBmb2xsb3dpbmcgZGF0YSBhbmQgYW55Ci1pbmZvcm1hdGlvbiB5b3UgdGhpbmsgbWlnaHQgYmUgcGVydGluZW50IHRvIGNvbmZpZy1wYXRjaGVzQGdudS5vcmcgdG8KLXByb3ZpZGUgdGhlIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiB0byBoYW5kbGUgeW91ciBzeXN0ZW0uCitJZiB0aGUgdmVyc2lvbiB5b3UgcnVuICgkMCkgaXMgYWxyZWFkeSB1cCB0byBkYXRlLCBwbGVhc2UKK3NlbmQgdGhlIGZvbGxvd2luZyBkYXRhIGFuZCBhbnkgaW5mb3JtYXRpb24geW91IHRoaW5rIG1pZ2h0IGJlCitwZXJ0aW5lbnQgdG8gPGNvbmZpZy1wYXRjaGVzQGdudS5vcmc+IGluIG9yZGVyIHRvIHByb3ZpZGUgdGhlIG5lZWRlZAoraW5mb3JtYXRpb24gdG8gaGFuZGxlIHlvdXIgc3lzdGVtLgogCiBjb25maWcuZ3Vlc3MgdGltZXN0YW1wID0gJHRpbWVzdGFtcAogCmRpZmYgLS1naXQgYS9jb25maWcuc3ViIGIvY29uZmlnLnN1YgppbmRleCAzNDc4YzFmLi5kNjU0ZDAzIDEwMDc1NQotLS0gYS9jb25maWcuc3ViCisrKyBiL2NvbmZpZy5zdWIKQEAgLTEsOCArMSw4IEBACiAjISAvYmluL3NoCiAjIENvbmZpZ3VyYXRpb24gdmFsaWRhdGlvbiBzdWJyb3V0aW5lIHNjcmlwdC4KLSMgICBDb3B5cmlnaHQgMTk5Mi0yMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyAgIENvcHlyaWdodCAxOTkyLTIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKLXRpbWVzdGFtcD0nMjAxNi0xMS0xOScKK3RpbWVzdGFtcD0nMjAxNC0wNS0wMScKIAogIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAogIyB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQpAQCAtMjUsNyArMjUsNyBAQAogIyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMyAoIkdQTHYzIikuCiAKIAotIyBQbGVhc2Ugc2VuZCBwYXRjaGVzIHRvIDxjb25maWctcGF0Y2hlc0BnbnUub3JnPi4KKyMgUGxlYXNlIHNlbmQgcGF0Y2hlcyB3aXRoIGEgQ2hhbmdlTG9nIGVudHJ5IHRvIGNvbmZpZy1wYXRjaGVzQGdudS5vcmcuCiAjCiAjIENvbmZpZ3VyYXRpb24gc3Vicm91dGluZSB0byB2YWxpZGF0ZSBhbmQgY2Fub25pY2FsaXplIGEgY29uZmlndXJhdGlvbiB0eXBlLgogIyBTdXBwbHkgdGhlIHNwZWNpZmllZCBjb25maWd1cmF0aW9uIHR5cGUgYXMgYW4gYXJndW1lbnQuCkBAIC0zMyw3ICszMyw3IEBACiAjIE90aGVyd2lzZSwgd2UgcHJpbnQgdGhlIGNhbm9uaWNhbCBjb25maWcgdHlwZSBvbiBzdGRvdXQgYW5kIHN1Y2NlZWQuCiAKICMgWW91IGNhbiBnZXQgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgc2NyaXB0IGZyb206Ci0jIGh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9naXR3ZWIvP3A9Y29uZmlnLmdpdDthPWJsb2JfcGxhaW47Zj1jb25maWcuc3ViCisjIGh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9naXR3ZWIvP3A9Y29uZmlnLmdpdDthPWJsb2JfcGxhaW47Zj1jb25maWcuc3ViO2hiPUhFQUQKIAogIyBUaGlzIGZpbGUgaXMgc3VwcG9zZWQgdG8gYmUgdGhlIHNhbWUgZm9yIGFsbCBHTlUgcGFja2FnZXMKICMgYW5kIHJlY29nbml6ZSBhbGwgdGhlIENQVSB0eXBlcywgc3lzdGVtIHR5cGVzIGFuZCBhbGlhc2VzCkBAIC01Myw3ICs1Myw4IEBACiBtZT1gZWNobyAiJDAiIHwgc2VkIC1lICdzLC4qLywsJ2AKIAogdXNhZ2U9IlwKLVVzYWdlOiAkMCBbT1BUSU9OXSBDUFUtTUZSLU9QU1lTIG9yIEFMSUFTCitVc2FnZTogJDAgW09QVElPTl0gQ1BVLU1GUi1PUFNZUworICAgICAgICQwIFtPUFRJT05dIEFMSUFTCiAKIENhbm9uaWNhbGl6ZSBhIGNvbmZpZ3VyYXRpb24gbmFtZS4KIApAQCAtNjcsNyArNjgsNyBAQAogdmVyc2lvbj0iXAogR05VIGNvbmZpZy5zdWIgKCR0aW1lc3RhbXApCiAKLUNvcHlyaWdodCAxOTkyLTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitDb3B5cmlnaHQgMTk5Mi0yMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCiBUaGlzIGlzIGZyZWUgc29mdHdhcmU7IHNlZSB0aGUgc291cmNlIGZvciBjb3B5aW5nIGNvbmRpdGlvbnMuICBUaGVyZSBpcyBOTwogd2FycmFudHk7IG5vdCBldmVuIGZvciBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIgpAQCAtMTE2LDggKzExNyw4IEBACiBjYXNlICRtYXliZV9vcyBpbgogICBudG8tcW54KiB8IGxpbnV4LWdudSogfCBsaW51eC1hbmRyb2lkKiB8IGxpbnV4LWRpZXRsaWJjIHwgbGludXgtbmV3bGliKiB8IFwKICAgbGludXgtbXVzbCogfCBsaW51eC11Y2xpYmMqIHwgdWNsaW51eC11Y2xpYmMqIHwgdWNsaW51eC1nbnUqIHwga2ZyZWVic2QqLWdudSogfCBcCi0gIGtuZXRic2QqLWdudSogfCBuZXRic2QqLWdudSogfCBuZXRic2QqLWVhYmkqIHwgXAotICBrb3BlbnNvbGFyaXMqLWdudSogfCBjbG91ZGFiaSotZWFiaSogfCBcCisgIGtuZXRic2QqLWdudSogfCBuZXRic2QqLWdudSogfCBcCisgIGtvcGVuc29sYXJpcyotZ251KiB8IFwKICAgc3Rvcm0tY2hhb3MqIHwgb3MyLWVteCogfCBydG1rLW5vdmEqKQogICAgIG9zPS0kbWF5YmVfb3MKICAgICBiYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkICdzL15cKC4qXCktXChbXi1dKi1bXi1dKlwpJC9cMS8nYApAQCAtMjU0LDEzICsyNTUsMTIgQEAKIAl8IGFyYyB8IGFyY2ViIFwKIAl8IGFybSB8IGFybVtibF1lIHwgYXJtZVtsYl0gfCBhcm12WzItOF0gfCBhcm12WzMtOF1bbGJdIHwgYXJtdjdbYXJtXSBcCiAJfCBhdnIgfCBhdnIzMiBcCi0JfCBiYSBcCiAJfCBiZTMyIHwgYmU2NCBcCiAJfCBiZmluIFwKIAl8IGM0eCB8IGM4MDUxIHwgY2xpcHBlciBcCiAJfCBkMTB2IHwgZDMwdiB8IGRseCB8IGRzcDE2eHggXAotCXwgZTJrIHwgZXBpcGhhbnkgXAotCXwgZmlkbyB8IGZyMzAgfCBmcnYgfCBmdDMyIFwKKwl8IGVwaXBoYW55IFwKKwl8IGZpZG8gfCBmcjMwIHwgZnJ2IFwKIAl8IGg4MzAwIHwgaDg1MDAgfCBocHBhIHwgaHBwYTEuWzAxXSB8IGhwcGEyLjAgfCBocHBhMi4wW253XSB8IGhwcGE2NCBcCiAJfCBoZXhhZ29uIFwKIAl8IGkzNzAgfCBpODYwIHwgaTk2MCB8IGlhNjQgXApAQCAtMzAxLDEyICszMDEsMTAgQEAKIAl8IG9wZW44IHwgb3IxayB8IG9yMWtuZCB8IG9yMzIgXAogCXwgcGRwMTAgfCBwZHAxMSB8IHBqIHwgcGpsIFwKIAl8IHBvd2VycGMgfCBwb3dlcnBjNjQgfCBwb3dlcnBjNjRsZSB8IHBvd2VycGNsZSBcCi0JfCBwcnUgXAogCXwgcHlyYW1pZCBcCi0JfCByaXNjdjMyIHwgcmlzY3Y2NCBcCiAJfCBybDc4IHwgcnggXAogCXwgc2NvcmUgXAotCXwgc2ggfCBzaFsxMjM0XSB8IHNoWzI0XWEgfCBzaFsyNF1hZWIgfCBzaFsyM11lIHwgc2hbMjM0XWViIHwgc2hlYiB8IHNoYmUgfCBzaGxlIHwgc2hbMTIzNF1sZSB8IHNoM2VsZSBcCisJfCBzaCB8IHNoWzEyMzRdIHwgc2hbMjRdYSB8IHNoWzI0XWFlYiB8IHNoWzIzXWUgfCBzaFszNF1lYiB8IHNoZWIgfCBzaGJlIHwgc2hsZSB8IHNoWzEyMzRdbGUgfCBzaDNlbGUgXAogCXwgc2g2NCB8IHNoNjRsZSBcCiAJfCBzcGFyYyB8IHNwYXJjNjQgfCBzcGFyYzY0YiB8IHNwYXJjNjR2IHwgc3BhcmM4NnggfCBzcGFyY2xldCB8IHNwYXJjbGl0ZSBcCiAJfCBzcGFyY3Y4IHwgc3BhcmN2OSB8IHNwYXJjdjliIHwgc3BhcmN2OXYgXApAQCAtMzE0LDcgKzMxMiw2IEBACiAJfCB0YWhvZSB8IHRpYzR4IHwgdGljNTR4IHwgdGljNTV4IHwgdGljNnggfCB0aWM4MCB8IHRyb24gXAogCXwgdWJpY29tMzIgXAogCXwgdjg1MCB8IHY4NTBlIHwgdjg1MGUxIHwgdjg1MGUyIHwgdjg1MGVzIHwgdjg1MGUydjMgXAotCXwgdmlzaXVtIFwKIAl8IHdlMzJrIFwKIAl8IHg4NiB8IHhjMTZ4IHwgeHN0b3JteTE2IHwgeHRlbnNhIFwKIAl8IHo4ayB8IHo4MCkKQEAgLTMyOSw5ICszMjYsNiBAQAogCWM2eCkKIAkJYmFzaWNfbWFjaGluZT10aWM2eC11bmtub3duCiAJCTs7Ci0JbGVvbnxsZW9uWzMtOV0pCi0JCWJhc2ljX21hY2hpbmU9c3BhcmMtJGJhc2ljX21hY2hpbmUKLQkJOzsKIAltNjgxMSB8IG02OGhjMTEgfCBtNjgxMiB8IG02OGhjMTIgfCBtNjhoY3MxMnggfCBudnB0eCB8IHBpY29jaGlwKQogCQliYXNpY19tYWNoaW5lPSRiYXNpY19tYWNoaW5lLXVua25vd24KIAkJb3M9LW5vbmUKQEAgLTM3NywxMyArMzcxLDEyIEBACiAJfCBhbHBoYXBjYTVbNjddLSogfCBhbHBoYTY0cGNhNVs2N10tKiB8IGFyYy0qIHwgYXJjZWItKiBcCiAJfCBhcm0tKiAgfCBhcm1iZS0qIHwgYXJtbGUtKiB8IGFybWViLSogfCBhcm12Ki0qIFwKIAl8IGF2ci0qIHwgYXZyMzItKiBcCi0JfCBiYS0qIFwKIAl8IGJlMzItKiB8IGJlNjQtKiBcCiAJfCBiZmluLSogfCBiczIwMDAtKiBcCiAJfCBjWzEyM10qIHwgYzMwLSogfCBbY2p0XTkwLSogfCBjNHgtKiBcCiAJfCBjODA1MS0qIHwgY2xpcHBlci0qIHwgY3JheW52LSogfCBjeWRyYS0qIFwKIAl8IGQxMHYtKiB8IGQzMHYtKiB8IGRseC0qIFwKLQl8IGUyay0qIHwgZWx4c2ktKiBcCisJfCBlbHhzaS0qIFwKIAl8IGYzMFswMV0tKiB8IGY3MDAtKiB8IGZpZG8tKiB8IGZyMzAtKiB8IGZydi0qIHwgZng4MC0qIFwKIAl8IGg4MzAwLSogfCBoODUwMC0qIFwKIAl8IGhwcGEtKiB8IGhwcGExLlswMV0tKiB8IGhwcGEyLjAtKiB8IGhwcGEyLjBbbnddLSogfCBocHBhNjQtKiBcCkBAIC00MjksMTUgKzQyMiwxMyBAQAogCXwgb3Jpb24tKiBcCiAJfCBwZHAxMC0qIHwgcGRwMTEtKiB8IHBqLSogfCBwamwtKiB8IHBuLSogfCBwb3dlci0qIFwKIAl8IHBvd2VycGMtKiB8IHBvd2VycGM2NC0qIHwgcG93ZXJwYzY0bGUtKiB8IHBvd2VycGNsZS0qIFwKLQl8IHBydS0qIFwKIAl8IHB5cmFtaWQtKiBcCi0JfCByaXNjdjMyLSogfCByaXNjdjY0LSogXAogCXwgcmw3OC0qIHwgcm9tcC0qIHwgcnM2MDAwLSogfCByeC0qIFwKIAl8IHNoLSogfCBzaFsxMjM0XS0qIHwgc2hbMjRdYS0qIHwgc2hbMjRdYWViLSogfCBzaFsyM11lLSogfCBzaFszNF1lYi0qIHwgc2hlYi0qIHwgc2hiZS0qIFwKIAl8IHNobGUtKiB8IHNoWzEyMzRdbGUtKiB8IHNoM2VsZS0qIHwgc2g2NC0qIHwgc2g2NGxlLSogXAogCXwgc3BhcmMtKiB8IHNwYXJjNjQtKiB8IHNwYXJjNjRiLSogfCBzcGFyYzY0di0qIHwgc3BhcmM4NngtKiB8IHNwYXJjbGV0LSogXAogCXwgc3BhcmNsaXRlLSogXAotCXwgc3BhcmN2OC0qIHwgc3BhcmN2OS0qIHwgc3BhcmN2OWItKiB8IHNwYXJjdjl2LSogfCBzdjEtKiB8IHN4Ki0qIFwKKwl8IHNwYXJjdjgtKiB8IHNwYXJjdjktKiB8IHNwYXJjdjliLSogfCBzcGFyY3Y5di0qIHwgc3YxLSogfCBzeD8tKiBcCiAJfCB0YWhvZS0qIFwKIAl8IHRpYzMwLSogfCB0aWM0eC0qIHwgdGljNTR4LSogfCB0aWM1NXgtKiB8IHRpYzZ4LSogfCB0aWM4MC0qIFwKIAl8IHRpbGUqLSogXApAQCAtNDQ1LDcgKzQzNiw2IEBACiAJfCB1Ymljb20zMi0qIFwKIAl8IHY4NTAtKiB8IHY4NTBlLSogfCB2ODUwZTEtKiB8IHY4NTBlcy0qIHwgdjg1MGUyLSogfCB2ODUwZTJ2My0qIFwKIAl8IHZheC0qIFwKLQl8IHZpc2l1bS0qIFwKIAl8IHdlMzJrLSogXAogCXwgeDg2LSogfCB4ODZfNjQtKiB8IHhjMTZ4LSogfCB4cHMxMDAtKiBcCiAJfCB4c3Rvcm15MTYtKiB8IHh0ZW5zYSotKiBcCkBAIC01MjIsOSArNTEyLDYgQEAKIAkJYmFzaWNfbWFjaGluZT1pMzg2LXBjCiAJCW9zPS1hcm9zCiAJCTs7Ci0JYXNtanMpCi0JCWJhc2ljX21hY2hpbmU9YXNtanMtdW5rbm93bgotCQk7OwogCWF1eCkKIAkJYmFzaWNfbWFjaGluZT1tNjhrLWFwcGxlCiAJCW9zPS1hdXgKQEAgLTY0NSwxNCArNjMyLDYgQEAKIAkJYmFzaWNfbWFjaGluZT1tNjhrLWJ1bGwKIAkJb3M9LXN5c3YzCiAJCTs7Ci0JZTUwMHZbMTJdKQotCQliYXNpY19tYWNoaW5lPXBvd2VycGMtdW5rbm93bgotCQlvcz0kb3Mic3BlIgotCQk7OwotCWU1MDB2WzEyXS0qKQotCQliYXNpY19tYWNoaW5lPXBvd2VycGMtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKLQkJb3M9JG9zInNwZSIKLQkJOzsKIAllYm1vbjI5aykKIAkJYmFzaWNfbWFjaGluZT1hMjlrLWFtZAogCQlvcz0tZWJtb24KQEAgLTc5NCw5ICs3NzMsNiBAQAogCQliYXNpY19tYWNoaW5lPW02OGstaXNpCiAJCW9zPS1zeXN2CiAJCTs7Ci0JbGVvbi0qfGxlb25bMy05XS0qKQotCQliYXNpY19tYWNoaW5lPXNwYXJjLWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzLy0uKi8vJ2AKLQkJOzsKIAltNjhrbm9tbXUpCiAJCWJhc2ljX21hY2hpbmU9bTY4ay11bmtub3duCiAJCW9zPS1saW51eApAQCAtODUyLDEwICs4MjgsNiBAQAogCQliYXNpY19tYWNoaW5lPXBvd2VycGMtdW5rbm93bgogCQlvcz0tbW9ycGhvcwogCQk7OwotCW1veGllYm94KQotCQliYXNpY19tYWNoaW5lPW1veGllLXVua25vd24KLQkJb3M9LW1veGllYm94Ci0JCTs7CiAJbXNkb3MpCiAJCWJhc2ljX21hY2hpbmU9aTM4Ni1wYwogCQlvcz0tbXNkb3MKQEAgLTEwMzIsNyArMTAwNCw3IEBACiAJcHBjLSogfCBwcGNiZS0qKQogCQliYXNpY19tYWNoaW5lPXBvd2VycGMtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKIAkJOzsKLQlwcGNsZSB8IHBvd2VycGNsaXR0bGUpCisJcHBjbGUgfCBwb3dlcnBjbGl0dGxlIHwgcHBjLWxlIHwgcG93ZXJwYy1saXR0bGUpCiAJCWJhc2ljX21hY2hpbmU9cG93ZXJwY2xlLXVua25vd24KIAkJOzsKIAlwcGNsZS0qIHwgcG93ZXJwY2xpdHRsZS0qKQpAQCAtMTA0Miw3ICsxMDE0LDcgQEAKIAkJOzsKIAlwcGM2NC0qKSBiYXNpY19tYWNoaW5lPXBvd2VycGM2NC1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAogCQk7OwotCXBwYzY0bGUgfCBwb3dlcnBjNjRsaXR0bGUpCisJcHBjNjRsZSB8IHBvd2VycGM2NGxpdHRsZSB8IHBwYzY0LWxlIHwgcG93ZXJwYzY0LWxpdHRsZSkKIAkJYmFzaWNfbWFjaGluZT1wb3dlcnBjNjRsZS11bmtub3duCiAJCTs7CiAJcHBjNjRsZS0qIHwgcG93ZXJwYzY0bGl0dGxlLSopCkBAIC0xMzg4LDI4ICsxMzYwLDI3IEBACiAJICAgICAgfCAtaHB1eCogfCAtdW5vcyogfCAtb3NmKiB8IC1sdW5hKiB8IC1kZ3V4KiB8IC1hdXJvcmF1eCogfCAtc29sYXJpcyogXAogCSAgICAgIHwgLXN5bSogfCAta29wZW5zb2xhcmlzKiB8IC1wbGFuOSogXAogCSAgICAgIHwgLWFtaWdhb3MqIHwgLWFtaWdhZG9zKiB8IC1tc2RvcyogfCAtbmV3c29zKiB8IC11bmljb3MqIHwgLWFvZiogXAotCSAgICAgIHwgLWFvcyogfCAtYXJvcyogfCAtY2xvdWRhYmkqIHwgLXNvcnRpeCogXAorCSAgICAgIHwgLWFvcyogfCAtYXJvcyogXAogCSAgICAgIHwgLW5pbmR5KiB8IC12eHNpbSogfCAtdnh3b3JrcyogfCAtZWJtb24qIHwgLWhtcyogfCAtbXZzKiBcCiAJICAgICAgfCAtY2xpeCogfCAtcmlzY29zKiB8IC11bmlwbHVzKiB8IC1pcmlzKiB8IC1ydHUqIHwgLXhlbml4KiBcCiAJICAgICAgfCAtaGl1eCogfCAtMzg2YnNkKiB8IC1rbmV0YnNkKiB8IC1taXJic2QqIHwgLW5ldGJzZCogXAotCSAgICAgIHwgLWJpdHJpZyogfCAtb3BlbmJzZCogfCAtc29saWRic2QqIHwgLWxpYmVydHlic2QqIFwKKwkgICAgICB8IC1iaXRyaWcqIHwgLW9wZW5ic2QqIHwgLXNvbGlkYnNkKiBcCiAJICAgICAgfCAtZWtrb2JzZCogfCAta2ZyZWVic2QqIHwgLWZyZWVic2QqIHwgLXJpc2NpeCogfCAtbHlueG9zKiBcCiAJICAgICAgfCAtYm9zeCogfCAtbmV4dHN0ZXAqIHwgLWN4dXgqIHwgLWFvdXQqIHwgLWVsZiogfCAtb2FiaSogXAogCSAgICAgIHwgLXB0eCogfCAtY29mZiogfCAtZWNvZmYqIHwgLXdpbm50KiB8IC1kb21haW4qIHwgLXZzdGEqIFwKIAkgICAgICB8IC11ZGkqIHwgLWVhYmkqIHwgLWxpdGVzKiB8IC1pZWVlKiB8IC1nbzMyKiB8IC1hdXgqIFwKLQkgICAgICB8IC1jaG9ydXNvcyogfCAtY2hvcnVzcmRiKiB8IC1jZWdjYyogfCAtZ2xpZGl4KiBcCisJICAgICAgfCAtY2hvcnVzb3MqIHwgLWNob3J1c3JkYiogfCAtY2VnY2MqIFwKIAkgICAgICB8IC1jeWd3aW4qIHwgLW1zeXMqIHwgLXBlKiB8IC1wc29zKiB8IC1tb3NzKiB8IC1wcm9lbGYqIHwgLXJ0ZW1zKiBcCi0JICAgICAgfCAtbWlkaXBpeCogfCAtbWluZ3czMiogfCAtbWluZ3c2NCogfCAtbGludXgtZ251KiB8IC1saW51eC1hbmRyb2lkKiBcCisJICAgICAgfCAtbWluZ3czMiogfCAtbWluZ3c2NCogfCAtbGludXgtZ251KiB8IC1saW51eC1hbmRyb2lkKiBcCiAJICAgICAgfCAtbGludXgtbmV3bGliKiB8IC1saW51eC1tdXNsKiB8IC1saW51eC11Y2xpYmMqIFwKLQkgICAgICB8IC11eHB2KiB8IC1iZW9zKiB8IC1tcGVpeCogfCAtdWRrKiB8IC1tb3hpZWJveCogXAorCSAgICAgIHwgLXV4cHYqIHwgLWJlb3MqIHwgLW1wZWl4KiB8IC11ZGsqIFwKIAkgICAgICB8IC1pbnRlcml4KiB8IC11d2luKiB8IC1ta3MqIHwgLXJoYXBzb2R5KiB8IC1kYXJ3aW4qIHwgLW9wZW5lZCogXAogCSAgICAgIHwgLW9wZW5zdGVwKiB8IC1vc2tpdCogfCAtY29uaXgqIHwgLXB3MzIqIHwgLW5vbnN0b3B1eCogXAogCSAgICAgIHwgLXN0b3JtLWNoYW9zKiB8IC10b3BzMTAqIHwgLXRlbmV4KiB8IC10b3BzMjAqIHwgLWl0cyogXAogCSAgICAgIHwgLW9zMiogfCAtdm9zKiB8IC1wYWxtb3MqIHwgLXVjbGludXgqIHwgLW51Y2xldXMqIFwKIAkgICAgICB8IC1tb3JwaG9zKiB8IC1zdXBlcnV4KiB8IC1ydG1rKiB8IC1ydG1rLW5vdmEqIHwgLXdpbmRpc3MqIFwKIAkgICAgICB8IC1wb3dlcm1heCogfCAtZG5peCogfCAtbng2IHwgLW54NyB8IC1zZWkqIHwgLWRyYWdvbmZseSogXAotCSAgICAgIHwgLXNreW9zKiB8IC1oYWlrdSogfCAtcmRvcyogfCAtdG9wcGVycyogfCAtZHJvcHMqIHwgLWVzKiBcCi0JICAgICAgfCAtb25lZnMqIHwgLXRpcnRvcyogfCAtcGhvZW5peCogfCAtZnVjaHNpYSopCisJICAgICAgfCAtc2t5b3MqIHwgLWhhaWt1KiB8IC1yZG9zKiB8IC10b3BwZXJzKiB8IC1kcm9wcyogfCAtZXMqIHwgLXRpcnRvcyopCiAJIyBSZW1lbWJlciwgZWFjaCBhbHRlcm5hdGl2ZSBNVVNUIEVORCBJTiAqLCB0byBtYXRjaCBhIHZlcnNpb24gbnVtYmVyLgogCQk7OwogCS1xbngqKQpAQCAtMTU0MSw4ICsxNTEyLDYgQEAKIAkJOzsKIAktbmFjbCopCiAJCTs7Ci0JLWlvcykKLQkJOzsKIAktbm9uZSkKIAkJOzsKIAkqKQpkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCmluZGV4IDFmODQ2NDcuLmZkMDA1ZjggMTAwNzU1Ci0tLSBhL2NvbmZpZ3VyZQorKysgYi9jb25maWd1cmUKQEAgLTEsNiArMSw2IEBACiAjISAvYmluL3NoCiAjIEd1ZXNzIHZhbHVlcyBmb3Igc3lzdGVtLWRlcGVuZGVudCB2YXJpYWJsZXMgYW5kIGNyZWF0ZSBNYWtlZmlsZXMuCi0jIEdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OSBmb3IgcHl0aG9uIDMuNS4KKyMgR2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY5IGZvciBweXRob24gMy42LgogIwogIyBSZXBvcnQgYnVncyB0byA8aHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcvPi4KICMKQEAgLTU4MCw4ICs1ODAsOCBAQAogIyBJZGVudGl0eSBvZiB0aGlzIHBhY2thZ2UuCiBQQUNLQUdFX05BTUU9J3B5dGhvbicKIFBBQ0tBR0VfVEFSTkFNRT0ncHl0aG9uJwotUEFDS0FHRV9WRVJTSU9OPSczLjUnCi1QQUNLQUdFX1NUUklORz0ncHl0aG9uIDMuNScKK1BBQ0tBR0VfVkVSU0lPTj0nMy42JworUEFDS0FHRV9TVFJJTkc9J3B5dGhvbiAzLjYnCiBQQUNLQUdFX0JVR1JFUE9SVD0naHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcvJwogUEFDS0FHRV9VUkw9JycKIApAQCAtNjQyLDExICs2NDIsMTMgQEAKIE1BQ0hERVBfT0JKUwogRFlOTE9BREZJTEUKIERMSU5DTERJUgorRFRSQUNFX09CSlMKK0RUUkFDRV9IRUFERVJTCitERkxBR1MKK0RUUkFDRQogVEhSRUFET0JKCiBMRExBU1QKIFVTRV9USFJFQURfTU9EVUxFCi1TSUdOQUxfT0JKUwotVVNFX1NJR05BTF9NT0RVTEUKIFRDTFRLX0xJQlMKIFRDTFRLX0lOQ0xVREVTCiBMSUJGRklfSU5DTFVERURJUgpAQCAtNzA4LDEyICs3MTAsMTMgQEAKIEJVSUxERVhFRVhUCiBFR1JFUAogTk9fQVNfTkVFREVECitNVUxUSUFSQ0hfQ1BQRkxBR1MKIFBMQVRGT1JNX1RSSVBMRVQKLVBMQVRESVIKIE1VTFRJQVJDSAogYWNfY3RfQ1hYCiBNQUlOQ0MKIENYWAorU0VECiBHUkVQCiBDUFAKIE9CSkVYVApAQCAtNzgxLDcgKzc4NCw2IEBACiBkb2NkaXIKIG9sZGluY2x1ZGVkaXIKIGluY2x1ZGVkaXIKLXJ1bnN0YXRlZGlyCiBsb2NhbHN0YXRlZGlyCiBzaGFyZWRzdGF0ZWRpcgogc3lzY29uZmRpcgpAQCAtODI3LDE0ICs4MjksMTMgQEAKIHdpdGhfdGNsdGtfaW5jbHVkZXMKIHdpdGhfdGNsdGtfbGlicwogd2l0aF9kYm1saWJvcmRlcgotd2l0aF9zaWduYWxfbW9kdWxlCiB3aXRoX3RocmVhZHMKIHdpdGhfdGhyZWFkCiBlbmFibGVfaXB2Ngogd2l0aF9kb2Nfc3RyaW5ncwotd2l0aF90c2MKIHdpdGhfcHltYWxsb2MKIHdpdGhfdmFsZ3JpbmQKK3dpdGhfZHRyYWNlCiB3aXRoX2ZwZWN0bAogd2l0aF9saWJtCiB3aXRoX2xpYmMKQEAgLTg5Myw3ICs4OTQsNiBAQAogc3lzY29uZmRpcj0nJHtwcmVmaXh9L2V0YycKIHNoYXJlZHN0YXRlZGlyPScke3ByZWZpeH0vY29tJwogbG9jYWxzdGF0ZWRpcj0nJHtwcmVmaXh9L3ZhcicKLXJ1bnN0YXRlZGlyPScke2xvY2Fsc3RhdGVkaXJ9L3J1bicKIGluY2x1ZGVkaXI9JyR7cHJlZml4fS9pbmNsdWRlJwogb2xkaW5jbHVkZWRpcj0nL3Vzci9pbmNsdWRlJwogZG9jZGlyPScke2RhdGFyb290ZGlyfS9kb2MvJHtQQUNLQUdFX1RBUk5BTUV9JwpAQCAtMTE0NiwxNSArMTE0Niw2IEBACiAgIHwgLXNpbGVudCB8IC0tc2lsZW50IHwgLS1zaWxlbiB8IC0tc2lsZSB8IC0tc2lsKQogICAgIHNpbGVudD15ZXMgOzsKIAotICAtcnVuc3RhdGVkaXIgfCAtLXJ1bnN0YXRlZGlyIHwgLS1ydW5zdGF0ZWRpIHwgLS1ydW5zdGF0ZWQgXAotICB8IC0tcnVuc3RhdGUgfCAtLXJ1bnN0YXQgfCAtLXJ1bnN0YSB8IC0tcnVuc3QgfCAtLXJ1bnMgXAotICB8IC0tcnVuIHwgLS1ydSB8IC0tcikKLSAgICBhY19wcmV2PXJ1bnN0YXRlZGlyIDs7Ci0gIC1ydW5zdGF0ZWRpcj0qIHwgLS1ydW5zdGF0ZWRpcj0qIHwgLS1ydW5zdGF0ZWRpPSogfCAtLXJ1bnN0YXRlZD0qIFwKLSAgfCAtLXJ1bnN0YXRlPSogfCAtLXJ1bnN0YXQ9KiB8IC0tcnVuc3RhPSogfCAtLXJ1bnN0PSogfCAtLXJ1bnM9KiBcCi0gIHwgLS1ydW49KiB8IC0tcnU9KiB8IC0tcj0qKQotICAgIHJ1bnN0YXRlZGlyPSRhY19vcHRhcmcgOzsKLQogICAtc2JpbmRpciB8IC0tc2JpbmRpciB8IC0tc2JpbmRpIHwgLS1zYmluZCB8IC0tc2JpbiB8IC0tc2JpIHwgLS1zYikKICAgICBhY19wcmV2PXNiaW5kaXIgOzsKICAgLXNiaW5kaXI9KiB8IC0tc2JpbmRpcj0qIHwgLS1zYmluZGk9KiB8IC0tc2JpbmQ9KiB8IC0tc2Jpbj0qIFwKQEAgLTEyOTIsNyArMTI4Myw3IEBACiBmb3IgYWNfdmFyIGluCWV4ZWNfcHJlZml4IHByZWZpeCBiaW5kaXIgc2JpbmRpciBsaWJleGVjZGlyIGRhdGFyb290ZGlyIFwKIAkJZGF0YWRpciBzeXNjb25mZGlyIHNoYXJlZHN0YXRlZGlyIGxvY2Fsc3RhdGVkaXIgaW5jbHVkZWRpciBcCiAJCW9sZGluY2x1ZGVkaXIgZG9jZGlyIGluZm9kaXIgaHRtbGRpciBkdmlkaXIgcGRmZGlyIHBzZGlyIFwKLQkJbGliZGlyIGxvY2FsZWRpciBtYW5kaXIgcnVuc3RhdGVkaXIKKwkJbGliZGlyIGxvY2FsZWRpciBtYW5kaXIKIGRvCiAgIGV2YWwgYWNfdmFsPVwkJGFjX3ZhcgogICAjIFJlbW92ZSB0cmFpbGluZyBzbGFzaGVzLgpAQCAtMTQwNSw3ICsxMzk2LDcgQEAKICAgIyBPbWl0IHNvbWUgaW50ZXJuYWwgb3Igb2Jzb2xldGUgb3B0aW9ucyB0byBtYWtlIHRoZSBsaXN0IGxlc3MgaW1wb3NpbmcuCiAgICMgVGhpcyBtZXNzYWdlIGlzIHRvbyBsb25nIHRvIGJlIGEgc3RyaW5nIGluIHRoZSBBL1VYIDMuMSBzaC4KICAgY2F0IDw8X0FDRU9GCi1cYGNvbmZpZ3VyZScgY29uZmlndXJlcyBweXRob24gMy41IHRvIGFkYXB0IHRvIG1hbnkga2luZHMgb2Ygc3lzdGVtcy4KK1xgY29uZmlndXJlJyBjb25maWd1cmVzIHB5dGhvbiAzLjYgdG8gYWRhcHQgdG8gbWFueSBraW5kcyBvZiBzeXN0ZW1zLgogCiBVc2FnZTogJDAgW09QVElPTl0uLi4gW1ZBUj1WQUxVRV0uLi4KIApAQCAtMTQ0NSw3ICsxNDM2LDYgQEAKICAgLS1zeXNjb25mZGlyPURJUiAgICAgICAgcmVhZC1vbmx5IHNpbmdsZS1tYWNoaW5lIGRhdGEgW1BSRUZJWC9ldGNdCiAgIC0tc2hhcmVkc3RhdGVkaXI9RElSICAgIG1vZGlmaWFibGUgYXJjaGl0ZWN0dXJlLWluZGVwZW5kZW50IGRhdGEgW1BSRUZJWC9jb21dCiAgIC0tbG9jYWxzdGF0ZWRpcj1ESVIgICAgIG1vZGlmaWFibGUgc2luZ2xlLW1hY2hpbmUgZGF0YSBbUFJFRklYL3Zhcl0KLSAgLS1ydW5zdGF0ZWRpcj1ESVIgICAgICAgbW9kaWZpYWJsZSBwZXItcHJvY2VzcyBkYXRhIFtMT0NBTFNUQVRFRElSL3J1bl0KICAgLS1saWJkaXI9RElSICAgICAgICAgICAgb2JqZWN0IGNvZGUgbGlicmFyaWVzIFtFUFJFRklYL2xpYl0KICAgLS1pbmNsdWRlZGlyPURJUiAgICAgICAgQyBoZWFkZXIgZmlsZXMgW1BSRUZJWC9pbmNsdWRlXQogICAtLW9sZGluY2x1ZGVkaXI9RElSICAgICBDIGhlYWRlciBmaWxlcyBmb3Igbm9uLWdjYyBbL3Vzci9pbmNsdWRlXQpAQCAtMTQ3Miw3ICsxNDYyLDcgQEAKIAogaWYgdGVzdCAtbiAiJGFjX2luaXRfaGVscCI7IHRoZW4KICAgY2FzZSAkYWNfaW5pdF9oZWxwIGluCi0gICAgIHNob3J0IHwgcmVjdXJzaXZlICkgZWNobyAiQ29uZmlndXJhdGlvbiBvZiBweXRob24gMy41OiI7OworICAgICBzaG9ydCB8IHJlY3Vyc2l2ZSApIGVjaG8gIkNvbmZpZ3VyYXRpb24gb2YgcHl0aG9uIDMuNjoiOzsKICAgIGVzYWMKICAgY2F0IDw8XF9BQ0VPRgogCkBAIC0xNDg2LDggKzE0NzYsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICBCdWlsZCAoTWFjT1NYfERhcndpbikgZnJhbWV3b3JrCiAgIC0tZW5hYmxlLXNoYXJlZCAgICAgICAgIGRpc2FibGUvZW5hYmxlIGJ1aWxkaW5nIHNoYXJlZCBweXRob24gbGlicmFyeQogICAtLWVuYWJsZS1wcm9maWxpbmcgICAgICBlbmFibGUgQy1sZXZlbCBjb2RlIHByb2ZpbGluZwotICAtLWVuYWJsZS1vcHRpbWl6YXRpb25zICBFbmFibGUgZXhwZW5zaXZlIG9wdGltaXphdGlvbnMgKFBHTywgbWF5YmUgTFRPLAotICAgICAgICAgICAgICAgICAgICAgICAgICBldGMpLiBEaXNhYmxlZCBieSBkZWZhdWx0LgorICAtLWVuYWJsZS1vcHRpbWl6YXRpb25zICBFbmFibGUgZXhwZW5zaXZlIG9wdGltaXphdGlvbnMgKFBHTywgZXRjKS4gRGlzYWJsZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgZGVmYXVsdC4KICAgLS1lbmFibGUtbG9hZGFibGUtc3FsaXRlLWV4dGVuc2lvbnMKICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydCBsb2FkYWJsZSBleHRlbnNpb25zIGluIF9zcWxpdGUgbW9kdWxlCiAgIC0tZW5hYmxlLWlwdjYgICAgICAgICAgIEVuYWJsZSBpcHY2ICh3aXRoIGlwdjQpIHN1cHBvcnQKQEAgLTE1MzEsMTUgKzE1MjEsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXIgdG8gY2hlY2sgZGIgYmFja2VuZHMgZm9yIGRibS4gVmFsaWQgdmFsdWUgaXMgYQogICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvbiBzZXBhcmF0ZWQgc3RyaW5nIHdpdGggdGhlIGJhY2tlbmQgbmFtZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgYG5kYm0nLCBgZ2RibScgYW5kIGBiZGInLgotICAtLXdpdGgtc2lnbmFsLW1vZHVsZSAgICBkaXNhYmxlL2VuYWJsZSBzaWduYWwgbW9kdWxlCiAgIC0td2l0aChvdXQpLXRocmVhZHNbPURJUkVDVE9SWV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZS9lbmFibGUgdGhyZWFkIHN1cHBvcnQKICAgLS13aXRoKG91dCktdGhyZWFkWz1ESVJFQ1RPUlldCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHJlY2F0ZWQ7IHVzZSAtLXdpdGgob3V0KS10aHJlYWRzCiAgIC0td2l0aChvdXQpLWRvYy1zdHJpbmdzIGRpc2FibGUvZW5hYmxlIGRvY3VtZW50YXRpb24gc3RyaW5ncwotICAtLXdpdGgob3V0KS10c2MgICAgICAgICBlbmFibGUvZGlzYWJsZSB0aW1lc3RhbXAgY291bnRlciBwcm9maWxlCiAgIC0td2l0aChvdXQpLXB5bWFsbG9jICAgIGRpc2FibGUvZW5hYmxlIHNwZWNpYWxpemVkIG1hbGxvY3MKICAgLS13aXRoLXZhbGdyaW5kICAgICAgICAgRW5hYmxlIFZhbGdyaW5kIHN1cHBvcnQKKyAgLS13aXRoKG91dCktZHRyYWNlICAgICAgZGlzYWJsZS9lbmFibGUgRFRyYWNlIHN1cHBvcnQKICAgLS13aXRoLWZwZWN0bCAgICAgICAgICAgZW5hYmxlIFNJR0ZQRSBjYXRjaGluZwogICAtLXdpdGgtbGlibT1TVFJJTkcgICAgICBtYXRoIGxpYnJhcnkKICAgLS13aXRoLWxpYmM9U1RSSU5HICAgICAgQyBsaWJyYXJ5CkBAIC0xNjMxLDcgKzE2MjAsNyBAQAogdGVzdCAtbiAiJGFjX2luaXRfaGVscCIgJiYgZXhpdCAkYWNfc3RhdHVzCiBpZiAkYWNfaW5pdF92ZXJzaW9uOyB0aGVuCiAgIGNhdCA8PFxfQUNFT0YKLXB5dGhvbiBjb25maWd1cmUgMy41CitweXRob24gY29uZmlndXJlIDMuNgogZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY5CiAKIENvcHlyaWdodCAoQykgMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KQEAgLTE5ODQsMTM2ICsxOTczLDYgQEAKIAogfSAjIGFjX2ZuX2NfY2hlY2tfdHlwZQogCi0jIGFjX2ZuX2NfZmluZF91aW50WF90IExJTkVOTyBCSVRTIFZBUgotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgRmluZHMgYW4gdW5zaWduZWQgaW50ZWdlciB0eXBlIHdpdGggd2lkdGggQklUUywgc2V0dGluZyBjYWNoZSB2YXJpYWJsZSBWQVIKLSMgYWNjb3JkaW5nbHkuCi1hY19mbl9jX2ZpbmRfdWludFhfdCAoKQotewotICBhc19saW5lbm89JHthc19saW5lbm8tIiQxIn0gYXNfbGluZW5vX3N0YWNrPWFzX2xpbmVub19zdGFjaz0kYXNfbGluZW5vX3N0YWNrCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHVpbnQkMl90IiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciB1aW50JDJfdC4uLiAiID4mNjsgfQotaWYgZXZhbCBcJHskMys6fSBmYWxzZTsgdGhlbiA6Ci0gICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gIGV2YWwgIiQzPW5vIgotICAgICAjIE9yZGVyIGlzIGltcG9ydGFudCAtIG5ldmVyIGNoZWNrIGEgdHlwZSB0aGF0IGlzIHBvdGVudGlhbGx5IHNtYWxsZXIKLSAgICAgIyB0aGFuIGhhbGYgb2YgdGhlIGV4cGVjdGVkIHRhcmdldCB3aWR0aC4KLSAgICAgZm9yIGFjX3R5cGUgaW4gdWludCQyX3QgJ3Vuc2lnbmVkIGludCcgJ3Vuc2lnbmVkIGxvbmcgaW50JyBcCi0JICd1bnNpZ25lZCBsb25nIGxvbmcgaW50JyAndW5zaWduZWQgc2hvcnQgaW50JyAndW5zaWduZWQgY2hhcic7IGRvCi0gICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotLyogZW5kIGNvbmZkZWZzLmguICAqLwotJGFjX2luY2x1ZGVzX2RlZmF1bHQKLWludAotbWFpbiAoKQotewotc3RhdGljIGludCB0ZXN0X2FycmF5IFsxIC0gMiAqICEoKCgkYWNfdHlwZSkgLTEgPj4gKCQyIC8gMiAtIDEpKSA+PiAoJDIgLyAyIC0gMSkgPT0gMyldOwotdGVzdF9hcnJheSBbMF0gPSAwOwotcmV0dXJuIHRlc3RfYXJyYXkgWzBdOwotCi0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLWlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKLSAgY2FzZSAkYWNfdHlwZSBpbiAjKAotICB1aW50JDJfdCkgOgotICAgIGV2YWwgIiQzPXllcyIgOzsgIygKLSAgKikgOgotICAgIGV2YWwgIiQzPVwkYWNfdHlwZSIgOzsKLWVzYWMKLWZpCi1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSAgICAgICBpZiBldmFsIHRlc3QgXCJ4XCQiJDMiXCIgPSB4Im5vIjsgdGhlbiA6Ci0KLWVsc2UKLSAgYnJlYWsKLWZpCi0gICAgIGRvbmUKLWZpCi1ldmFsIGFjX3Jlcz1cJCQzCi0JICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfcmVzIiA+JjUKLSRhc19lY2hvICIkYWNfcmVzIiA+JjY7IH0KLSAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyAke2FzX2xpbmVub19zdGFjazorOn0gdW5zZXQgYXNfbGluZW5vCi0KLX0gIyBhY19mbl9jX2ZpbmRfdWludFhfdAotCi0jIGFjX2ZuX2NfZmluZF9pbnRYX3QgTElORU5PIEJJVFMgVkFSCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIEZpbmRzIGEgc2lnbmVkIGludGVnZXIgdHlwZSB3aXRoIHdpZHRoIEJJVFMsIHNldHRpbmcgY2FjaGUgdmFyaWFibGUgVkFSCi0jIGFjY29yZGluZ2x5LgotYWNfZm5fY19maW5kX2ludFhfdCAoKQotewotICBhc19saW5lbm89JHthc19saW5lbm8tIiQxIn0gYXNfbGluZW5vX3N0YWNrPWFzX2xpbmVub19zdGFjaz0kYXNfbGluZW5vX3N0YWNrCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGludCQyX3QiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGludCQyX3QuLi4gIiA+JjY7IH0KLWlmIGV2YWwgXCR7JDMrOn0gZmFsc2U7IHRoZW4gOgotICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotZWxzZQotICBldmFsICIkMz1ubyIKLSAgICAgIyBPcmRlciBpcyBpbXBvcnRhbnQgLSBuZXZlciBjaGVjayBhIHR5cGUgdGhhdCBpcyBwb3RlbnRpYWxseSBzbWFsbGVyCi0gICAgICMgdGhhbiBoYWxmIG9mIHRoZSBleHBlY3RlZCB0YXJnZXQgd2lkdGguCi0gICAgIGZvciBhY190eXBlIGluIGludCQyX3QgJ2ludCcgJ2xvbmcgaW50JyBcCi0JICdsb25nIGxvbmcgaW50JyAnc2hvcnQgaW50JyAnc2lnbmVkIGNoYXInOyBkbwotICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSRhY19pbmNsdWRlc19kZWZhdWx0Ci0JICAgICBlbnVtIHsgTiA9ICQyIC8gMiAtIDEgfTsKLWludAotbWFpbiAoKQotewotc3RhdGljIGludCB0ZXN0X2FycmF5IFsxIC0gMiAqICEoMCA8ICgkYWNfdHlwZSkgKCgoKCgkYWNfdHlwZSkgMSA8PCBOKSA8PCBOKSAtIDEpICogMiArIDEpKV07Ci10ZXN0X2FycmF5IFswXSA9IDA7Ci1yZXR1cm4gdGVzdF9hcnJheSBbMF07Ci0KLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0kYWNfaW5jbHVkZXNfZGVmYXVsdAotCSAgICAgICAgZW51bSB7IE4gPSAkMiAvIDIgLSAxIH07Ci1pbnQKLW1haW4gKCkKLXsKLXN0YXRpYyBpbnQgdGVzdF9hcnJheSBbMSAtIDIgKiAhKCgkYWNfdHlwZSkgKCgoKCgkYWNfdHlwZSkgMSA8PCBOKSA8PCBOKSAtIDEpICogMiArIDEpCi0JCSA8ICgkYWNfdHlwZSkgKCgoKCgkYWNfdHlwZSkgMSA8PCBOKSA8PCBOKSAtIDEpICogMiArIDIpKV07Ci10ZXN0X2FycmF5IFswXSA9IDA7Ci1yZXR1cm4gdGVzdF9hcnJheSBbMF07Ci0KLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotCi1lbHNlCi0gIGNhc2UgJGFjX3R5cGUgaW4gIygKLSAgaW50JDJfdCkgOgotICAgIGV2YWwgIiQzPXllcyIgOzsgIygKLSAgKikgOgotICAgIGV2YWwgIiQzPVwkYWNfdHlwZSIgOzsKLWVzYWMKLWZpCi1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLWZpCi1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSAgICAgICBpZiBldmFsIHRlc3QgXCJ4XCQiJDMiXCIgPSB4Im5vIjsgdGhlbiA6Ci0KLWVsc2UKLSAgYnJlYWsKLWZpCi0gICAgIGRvbmUKLWZpCi1ldmFsIGFjX3Jlcz1cJCQzCi0JICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfcmVzIiA+JjUKLSRhc19lY2hvICIkYWNfcmVzIiA+JjY7IH0KLSAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyAke2FzX2xpbmVub19zdGFjazorOn0gdW5zZXQgYXNfbGluZW5vCi0KLX0gIyBhY19mbl9jX2ZpbmRfaW50WF90Ci0KICMgYWNfZm5fY19jb21wdXRlX2ludCBMSU5FTk8gRVhQUiBWQVIgSU5DTFVERVMKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgVHJpZXMgdG8gZmluZCB0aGUgY29tcGlsZS10aW1lIHZhbHVlIG9mIEVYUFIgaW4gYSBwcm9ncmFtIHRoYXQgaW5jbHVkZXMKQEAgLTI0NzAsNyArMjMyOSw3IEBACiBUaGlzIGZpbGUgY29udGFpbnMgYW55IG1lc3NhZ2VzIHByb2R1Y2VkIGJ5IGNvbXBpbGVycyB3aGlsZQogcnVubmluZyBjb25maWd1cmUsIHRvIGFpZCBkZWJ1Z2dpbmcgaWYgY29uZmlndXJlIG1ha2VzIGEgbWlzdGFrZS4KIAotSXQgd2FzIGNyZWF0ZWQgYnkgcHl0aG9uICRhc19tZSAzLjUsIHdoaWNoIHdhcworSXQgd2FzIGNyZWF0ZWQgYnkgcHl0aG9uICRhc19tZSAzLjYsIHdoaWNoIHdhcwogZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY5LiAgSW52b2NhdGlvbiBjb21tYW5kIGxpbmUgd2FzCiAKICAgJCAkMCAkQApAQCAtMzA1OSw3ICsyOTE4LDcgQEAKICAgICBpZiB0ZXN0IC16ICIkUFlUSE9OX0ZPUl9CVUlMRCI7IHRoZW4KICAgICAgICAgZm9yIGludGVycCBpbiBweXRob24kUEFDS0FHRV9WRVJTSU9OIHB5dGhvbjMgcHl0aG9uOyBkbwogCSAgICB3aGljaCAkaW50ZXJwID4vZGV2L251bGwgMj4mMSB8fCBjb250aW51ZQotCSAgICBpZiAkaW50ZXJwIC1jICdpbXBvcnQgc3lzO3N5cy5leGl0KG5vdCBzeXMudmVyc2lvbl9pbmZvWzoyXSA+PSAoMywzKSknOyB0aGVuCisJICAgIGlmICRpbnRlcnAgLWMgImltcG9ydCBzeXM7c3lzLmV4aXQobm90ICcuJy5qb2luKHN0cihuKSBmb3IgbiBpbiBzeXMudmVyc2lvbl9pbmZvWzoyXSkgPT0gJyRQQUNLQUdFX1ZFUlNJT04nKSI7IHRoZW4KIAkgICAgICAgIGJyZWFrCiAJICAgIGZpCiAgICAgICAgICAgICBpbnRlcnA9CkBAIC0zMDY5LDcgKzI5MjgsNyBAQAogCWZpCiAgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkaW50ZXJwIiA+JjUKICRhc19lY2hvICIkaW50ZXJwIiA+JjY7IH0KLQlQWVRIT05fRk9SX0JVSUxEPSdfUFlUSE9OX1BST0pFQ1RfQkFTRT0kKGFic19idWlsZGRpcikgX1BZVEhPTl9IT1NUX1BMQVRGT1JNPSQoX1BZVEhPTl9IT1NUX1BMQVRGT1JNKSBQWVRIT05QQVRIPSQoc2hlbGwgdGVzdCAtZiBweWJ1aWxkZGlyLnR4dCAmJiBlY2hvICQoYWJzX2J1aWxkZGlyKS9gY2F0IHB5YnVpbGRkaXIudHh0YDopJChzcmNkaXIpL0xpYjokKHNyY2RpcikvTGliLyQoUExBVERJUikgJyRpbnRlcnAKKwlQWVRIT05fRk9SX0JVSUxEPSdfUFlUSE9OX1BST0pFQ1RfQkFTRT0kKGFic19idWlsZGRpcikgX1BZVEhPTl9IT1NUX1BMQVRGT1JNPSQoX1BZVEhPTl9IT1NUX1BMQVRGT1JNKSBQWVRIT05QQVRIPSQoc2hlbGwgdGVzdCAtZiBweWJ1aWxkZGlyLnR4dCAmJiBlY2hvICQoYWJzX2J1aWxkZGlyKS9gY2F0IHB5YnVpbGRkaXIudHh0YDopJChzcmNkaXIpL0xpYiBfUFlUSE9OX1NZU0NPTkZJR0RBVEFfTkFNRT1fc3lzY29uZmlnZGF0YV8kKEFCSUZMQUdTKV8kKE1BQ0hERVApXyQoTVVMVElBUkNIKSAnJGludGVycAogICAgIGZpCiAgICAgIyBVc2VkIHRvIGNvbW1lbnQgb3V0IHN0dWZmIGZvciByZWJ1aWxkaW5nIGdlbmVyYXRlZCBmaWxlcwogICAgIEdFTkVSQVRFRF9DT01NRU5UPScjJwpAQCAtMzA5Nyw3ICsyOTU2LDcgQEAKIG12IGNvbmZkZWZzLmgubmV3IGNvbmZkZWZzLmgKIAogCi1WRVJTSU9OPTMuNQorVkVSU0lPTj0zLjYKIAogIyBWZXJzaW9uIG51bWJlciBvZiBQeXRob24ncyBvd24gc2hhcmVkIGxpYnJhcnkgZmlsZS4KIApAQCAtNDcxNiw2ICs0NTc1LDc1IEBACiAgR1JFUD0iJGFjX2N2X3BhdGhfR1JFUCIKIAogCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhIHNlZCB0aGF0IGRvZXMgbm90IHRydW5jYXRlIG91dHB1dCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgYSBzZWQgdGhhdCBkb2VzIG5vdCB0cnVuY2F0ZSBvdXRwdXQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcGF0aF9TRUQrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICAgICAgICAgICAgYWNfc2NyaXB0PXMvYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEvYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiLworICAgICBmb3IgYWNfaSBpbiAxIDIgMyA0IDUgNiA3OyBkbworICAgICAgIGFjX3NjcmlwdD0iJGFjX3NjcmlwdCRhc19ubCRhY19zY3JpcHQiCisgICAgIGRvbmUKKyAgICAgZWNobyAiJGFjX3NjcmlwdCIgMj4vZGV2L251bGwgfCBzZWQgOTlxID5jb25mdGVzdC5zZWQKKyAgICAgeyBhY19zY3JpcHQ9OyB1bnNldCBhY19zY3JpcHQ7fQorICAgICBpZiB0ZXN0IC16ICIkU0VEIjsgdGhlbgorICBhY19wYXRoX1NFRF9mb3VuZD1mYWxzZQorICAjIExvb3AgdGhyb3VnaCB0aGUgdXNlcidzIHBhdGggYW5kIHRlc3QgZm9yIGVhY2ggb2YgUFJPR05BTUUtTElTVAorICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX3Byb2cgaW4gc2VkIGdzZWQ7IGRvCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgICAgICBhY19wYXRoX1NFRD0iJGFzX2Rpci8kYWNfcHJvZyRhY19leGVjX2V4dCIKKyAgICAgIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFjX3BhdGhfU0VEIiB8fCBjb250aW51ZQorIyBDaGVjayBmb3IgR05VIGFjX3BhdGhfU0VEIGFuZCBzZWxlY3QgaXQgaWYgaXQgaXMgZm91bmQuCisgICMgQ2hlY2sgZm9yIEdOVSAkYWNfcGF0aF9TRUQKK2Nhc2UgYCIkYWNfcGF0aF9TRUQiIC0tdmVyc2lvbiAyPiYxYCBpbgorKkdOVSopCisgIGFjX2N2X3BhdGhfU0VEPSIkYWNfcGF0aF9TRUQiIGFjX3BhdGhfU0VEX2ZvdW5kPTo7OworKikKKyAgYWNfY291bnQ9MAorICAkYXNfZWNob19uIDAxMjM0NTY3ODkgPiJjb25mdGVzdC5pbiIKKyAgd2hpbGUgOgorICBkbworICAgIGNhdCAiY29uZnRlc3QuaW4iICJjb25mdGVzdC5pbiIgPiJjb25mdGVzdC50bXAiCisgICAgbXYgImNvbmZ0ZXN0LnRtcCIgImNvbmZ0ZXN0LmluIgorICAgIGNwICJjb25mdGVzdC5pbiIgImNvbmZ0ZXN0Lm5sIgorICAgICRhc19lY2hvICcnID4+ICJjb25mdGVzdC5ubCIKKyAgICAiJGFjX3BhdGhfU0VEIiAtZiBjb25mdGVzdC5zZWQgPCAiY29uZnRlc3QubmwiID4iY29uZnRlc3Qub3V0IiAyPi9kZXYvbnVsbCB8fCBicmVhaworICAgIGRpZmYgImNvbmZ0ZXN0Lm91dCIgImNvbmZ0ZXN0Lm5sIiA+L2Rldi9udWxsIDI+JjEgfHwgYnJlYWsKKyAgICBhc19mbl9hcml0aCAkYWNfY291bnQgKyAxICYmIGFjX2NvdW50PSRhc192YWwKKyAgICBpZiB0ZXN0ICRhY19jb3VudCAtZ3QgJHthY19wYXRoX1NFRF9tYXgtMH07IHRoZW4KKyAgICAgICMgQmVzdCBvbmUgc28gZmFyLCBzYXZlIGl0IGJ1dCBrZWVwIGxvb2tpbmcgZm9yIGEgYmV0dGVyIG9uZQorICAgICAgYWNfY3ZfcGF0aF9TRUQ9IiRhY19wYXRoX1NFRCIKKyAgICAgIGFjX3BhdGhfU0VEX21heD0kYWNfY291bnQKKyAgICBmaQorICAgICMgMTAqKDJeMTApIGNoYXJzIGFzIGlucHV0IHNlZW1zIG1vcmUgdGhhbiBlbm91Z2gKKyAgICB0ZXN0ICRhY19jb3VudCAtZ3QgMTAgJiYgYnJlYWsKKyAgZG9uZQorICBybSAtZiBjb25mdGVzdC5pbiBjb25mdGVzdC50bXAgY29uZnRlc3QubmwgY29uZnRlc3Qub3V0OzsKK2VzYWMKKworICAgICAgJGFjX3BhdGhfU0VEX2ZvdW5kICYmIGJyZWFrIDMKKyAgICBkb25lCisgIGRvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworICBpZiB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9TRUQiOyB0aGVuCisgICAgYXNfZm5fZXJyb3IgJD8gIm5vIGFjY2VwdGFibGUgc2VkIGNvdWxkIGJlIGZvdW5kIGluIFwkUEFUSCIgIiRMSU5FTk8iIDUKKyAgZmkKK2Vsc2UKKyAgYWNfY3ZfcGF0aF9TRUQ9JFNFRAorZmkKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfcGF0aF9TRUQiID4mNQorJGFzX2VjaG8gIiRhY19jdl9wYXRoX1NFRCIgPiY2OyB9CisgU0VEPSIkYWNfY3ZfcGF0aF9TRUQiCisgIHJtIC1mIGNvbmZ0ZXN0LnNlZAorCiAKIAogCkBAIC01Mjg5LDcgKzUyMTcsOSBAQAogI3VuZGVmIHBvd2VycGMKICN1bmRlZiBzcGFyYwogI3VuZGVmIHVuaXgKLSNpZiBkZWZpbmVkKF9fbGludXhfXykKKyNpZiBkZWZpbmVkKF9fQU5EUk9JRF9fKQorICAgICMgQW5kcm9pZCBpcyBub3QgYSBtdWx0aWFyY2ggc3lzdGVtLgorI2VsaWYgZGVmaW5lZChfX2xpbnV4X18pCiAjIGlmIGRlZmluZWQoX194ODZfNjRfXykgJiYgZGVmaW5lZChfX0xQNjRfXykKICAgICAgICAgeDg2XzY0LWxpbnV4LWdudQogIyBlbGlmIGRlZmluZWQoX194ODZfNjRfXykgJiYgZGVmaW5lZChfX0lMUDMyX18pCkBAIC01NDA1LDEwICs1MzM1LDEzIEBACiAgIGlmIHRlc3QgeCRQTEFURk9STV9UUklQTEVUICE9IHgkTVVMVElBUkNIOyB0aGVuCiAgICAgYXNfZm5fZXJyb3IgJD8gImludGVybmFsIGNvbmZpZ3VyZSBlcnJvciBmb3IgdGhlIHBsYXRmb3JtIHRyaXBsZXQsIHBsZWFzZSBmaWxlIGEgYnVnIHJlcG9ydCIgIiRMSU5FTk8iIDUKICAgZmkKK2VsaWYgdGVzdCB4JFBMQVRGT1JNX1RSSVBMRVQgIT0geCAmJiB0ZXN0IHgkTVVMVElBUkNIID0geDsgdGhlbgorICBNVUxUSUFSQ0g9JFBMQVRGT1JNX1RSSVBMRVQKIGZpCi1QTEFURElSPXBsYXQtJE1BQ0hERVAKIAotCitpZiB0ZXN0IHgkTVVMVElBUkNIICE9IHg7IHRoZW4KKyAgTVVMVElBUkNIX0NQUEZMQUdTPSItRE1VTFRJQVJDSD1cXFwiJE1VTFRJQVJDSFxcXCIiCitmaQogCiAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIC1XbCwtLW5vLWFzLW5lZWRlZCIgPiY1CkBAIC01NzAyLDYgKzU2MzUsMzIgQEAKIAogCiAKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHRoZSBBbmRyb2lkIEFQSSBsZXZlbCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgdGhlIEFuZHJvaWQgQVBJIGxldmVsLi4uICIgPiY2OyB9CitjYXQgPj4gY29uZnRlc3QuYyA8PEVPRgorI2lmZGVmIF9fQU5EUk9JRF9fCisjaW5jbHVkZSA8YW5kcm9pZC9hcGktbGV2ZWwuaD4KK19fQU5EUk9JRF9BUElfXworI2Vsc2UKKyNlcnJvciBub3QgQW5kcm9pZAorI2VuZGlmCitFT0YKKworaWYgJENQUCAkQ1BQRkxBR1MgY29uZnRlc3QuYyA+Y29uZnRlc3Qub3V0IDI+L2Rldi9udWxsOyB0aGVuCisgIEFORFJPSURfQVBJX0xFVkVMPWBncmVwIC12ICdeIycgY29uZnRlc3Qub3V0IHwgZ3JlcCAtdiAnXiAqJCdgCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkQU5EUk9JRF9BUElfTEVWRUwiID4mNQorJGFzX2VjaG8gIiRBTkRST0lEX0FQSV9MRVZFTCIgPiY2OyB9CisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgQU5EUk9JRF9BUElfTEVWRUwgJEFORFJPSURfQVBJX0xFVkVMCitfQUNFT0YKKworZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm90IEFuZHJvaWQiID4mNQorJGFzX2VjaG8gIm5vdCBBbmRyb2lkIiA+JjY7IH0KK2ZpCitybSAtZiBjb25mdGVzdC5jIGNvbmZ0ZXN0Lm91dAorCiAjIENoZWNrIGZvciB1bnN1cHBvcnRlZCBzeXN0ZW1zCiBjYXNlICRhY19zeXNfc3lzdGVtLyRhY19zeXNfcmVsZWFzZSBpbgogYXRoZW9zKnxMaW51eCovMSopCkBAIC02NTY2LDcgKzY1MjUsNyBAQAogaWYgdGVzdCAiJFB5X09QVCIgPSAndHJ1ZScgOyB0aGVuCiAgICMgSW50ZW50aW9uYWxseSBub3QgZm9yY2luZyBQeV9MVE89J3RydWUnIGhlcmUuICBUb28gbWFueSB0b29sY2hhaW5zIGRvIG5vdAogICAjIGNvbXBpbGUgd29ya2luZyBjb2RlIHVzaW5nIGl0IGFuZCBib3RoIHRlc3RfZGlzdHV0aWxzIGFuZCB0ZXN0X2dkYiBhcmUKLSAgIyBicm9rZW4gd2hlbiB5b3UgZG8gbWFuYWdlZCB0byBnZXQgYSB0b29sY2hhaW4gdGhhdCB3b3JrcyB3aXRoIGl0LiAgUGVvcGxlCisgICMgYnJva2VuIHdoZW4geW91IGRvIG1hbmFnZSB0byBnZXQgYSB0b29sY2hhaW4gdGhhdCB3b3JrcyB3aXRoIGl0LiAgUGVvcGxlCiAgICMgd2hvIHdhbnQgTFRPIG5lZWQgdG8gdXNlIC0td2l0aC1sdG8gdGhlbXNlbHZlcy4KICAgREVGX01BS0VfQUxMX1JVTEU9InByb2ZpbGUtb3B0IgogICBSRVFVSVJFX1BHTz0ieWVzIgpAQCAtNjYwMywxMyArNjU2MiwyMCBAQAogaWYgdGVzdCAiJFB5X0xUTyIgPSAndHJ1ZScgOyB0aGVuCiAgIGNhc2UgJENDIGluCiAgICAgKmNsYW5nKikKLSAgICAgICMgQW55IGNoYW5nZXMgbWFkZSBoZXJlIHNob3VsZCBiZSByZWZsZWN0ZWQgaW4gdGhlIEdDQytEYXJ3aW4gY2FzZSBiZWxvdwotICAgICAgTFRPRkxBR1M9Ii1mbHRvIgorICAgICAgY2FzZSAkYWNfc3lzX3N5c3RlbSBpbgorICAgICAgICBEYXJ3aW4qKQorICAgICAgICAgICMgQW55IGNoYW5nZXMgbWFkZSBoZXJlIHNob3VsZCBiZSByZWZsZWN0ZWQgaW4gdGhlIEdDQytEYXJ3aW4gY2FzZSBiZWxvdworICAgICAgICAgIExUT0ZMQUdTPSItZmx0byAtV2wsLWV4cG9ydF9keW5hbWljIgorICAgICAgICAgIDs7CisgICAgICAgICopCisgICAgICAgICAgTFRPRkxBR1M9Ii1mbHRvIgorICAgICAgICAgIDs7CisgICAgICBlc2FjCiAgICAgICA7OwogICAgICpnY2MqKQogICAgICAgY2FzZSAkYWNfc3lzX3N5c3RlbSBpbgogICAgICAgICBEYXJ3aW4qKQotICAgICAgICAgIExUT0ZMQUdTPSItZmx0byIKKyAgICAgICAgICBMVE9GTEFHUz0iLWZsdG8gLVdsLC1leHBvcnRfZHluYW1pYyIKICAgICAgICAgICA7OwogICAgICAgICAqKQogICAgICAgICAgIExUT0ZMQUdTPSItZmx0byAtZnVzZS1saW5rZXItcGx1Z2luIC1mZmF0LWx0by1vYmplY3RzIC1mbHRvLXBhcnRpdGlvbj1ub25lIgpAQCAtNjkxNyw2ICs2ODgzLDQ5IEBACiAjIHR3ZWFrIEJBU0VDRkxBR1MgYmFzZWQgb24gY29tcGlsZXIgYW5kIHBsYXRmb3JtCiBjYXNlICRHQ0MgaW4KIHllcykKKyAgICBDRkxBR1NfTk9ESVNUPSIkQ0ZMQUdTX05PRElTVCAtc3RkPWM5OSIKKworICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIC1XZXh0cmEiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIC1XZXh0cmEuLi4gIiA+JjY7IH0KKyAgICAgYWNfc2F2ZV9jYz0iJENDIgorICAgICBDQz0iJENDIC1XZXh0cmEgLVdlcnJvciIKKyAgICAgaWYgJHthY19jdl9leHRyYV93YXJuaW5ncys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworCitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorCitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKworICAgICAgICAgICBhY19jdl9leHRyYV93YXJuaW5ncz15ZXMKKworZWxzZQorCisgICAgICAgICAgIGFjX2N2X2V4dHJhX3dhcm5pbmdzPW5vCisKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCisKKyAgICAgQ0M9IiRhY19zYXZlX2NjIgorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfZXh0cmFfd2FybmluZ3MiID4mNQorJGFzX2VjaG8gIiRhY19jdl9leHRyYV93YXJuaW5ncyIgPiY2OyB9CisKKyAgICBpZiB0ZXN0ICRhY19jdl9leHRyYV93YXJuaW5ncyA9IHllcworICAgIHRoZW4KKyAgICAgIENGTEFHU19OT0RJU1Q9IiRDRkxBR1NfTk9ESVNUIC1XZXh0cmEiCisgICAgZmkKKwogICAgICMgUHl0aG9uIGRvZXNuJ3QgdmlvbGF0ZSBDOTkgYWxpYXNpbmcgcnVsZXMsIGJ1dCBvbGRlciB2ZXJzaW9ucyBvZgogICAgICMgR0NDIHByb2R1Y2Ugd2FybmluZ3MgZm9yIGxlZ2FsIFB5dGhvbiBjb2RlLiAgRW5hYmxlCiAgICAgIyAtZm5vLXN0cmljdC1hbGlhc2luZyBvbiB2ZXJzaW9ucyBvZiBHQ0MgdGhhdCBzdXBwb3J0IGJ1dCBwcm9kdWNlCkBAIC03MDM3LDE0ICs3MDQ2LDE0IEBACiAgICAgaWYgdGVzdCAkYWNfY3ZfZGlzYWJsZV91bnVzZWRfcmVzdWx0X3dhcm5pbmcgPSB5ZXMKICAgICB0aGVuCiAgICAgICBCQVNFQ0ZMQUdTPSIkQkFTRUNGTEFHUyAtV25vLXVudXNlZC1yZXN1bHQiCisgICAgICBDRkxBR1NfTk9ESVNUPSIkQ0ZMQUdTX05PRElTVCAtV25vLXVudXNlZC1yZXN1bHQiCiAgICAgZmkKIAotICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIC1XZXJyb3I9ZGVjbGFyYXRpb24tYWZ0ZXItc3RhdGVtZW50IiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAtV2Vycm9yPWRlY2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudC4uLiAiID4mNjsgfQorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgd2UgY2FuIHR1cm4gb2ZmICRDQyB1bnVzZWQgcGFyYW1ldGVyIHdhcm5pbmciID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgd2UgY2FuIHR1cm4gb2ZmICRDQyB1bnVzZWQgcGFyYW1ldGVyIHdhcm5pbmcuLi4gIiA+JjY7IH0KICAgICAgYWNfc2F2ZV9jYz0iJENDIgotICAgICBDQz0iJENDIC1XZXJyb3I9ZGVjbGFyYXRpb24tYWZ0ZXItc3RhdGVtZW50IgotICAgICBzYXZlX0NGTEFHUz0iJENGTEFHUyIKLSAgICAgaWYgJHthY19jdl9kZWNsYXJhdGlvbl9hZnRlcl9zdGF0ZW1lbnRfd2FybmluZys6fSBmYWxzZTsgdGhlbiA6CisgICAgIENDPSIkQ0MgLVd1bnVzZWQtcGFyYW1ldGVyIC1XZXJyb3IiCisgICAgIGlmICR7YWNfY3ZfZGlzYWJsZV91bnVzZWRfcGFyYW1ldGVyX3dhcm5pbmcrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CkBAIC03MDYyLDI0ICs3MDcxLDY0IEBACiBfQUNFT0YKIGlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKIAotICAgICAgICAgICBhY19jdl9kZWNsYXJhdGlvbl9hZnRlcl9zdGF0ZW1lbnRfd2FybmluZz15ZXMKKyAgICAgICAgICAgYWNfY3ZfZGlzYWJsZV91bnVzZWRfcGFyYW1ldGVyX3dhcm5pbmc9eWVzCiAKIGVsc2UKIAotICAgICAgICAgICBhY19jdl9kZWNsYXJhdGlvbl9hZnRlcl9zdGF0ZW1lbnRfd2FybmluZz1ubworICAgICAgICAgICBhY19jdl9kaXNhYmxlX3VudXNlZF9wYXJhbWV0ZXJfd2FybmluZz1ubwogCiBmaQogcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CiBmaQogCi0gICAgIENGTEFHUz0iJHNhdmVfQ0ZMQUdTIgogICAgICBDQz0iJGFjX3NhdmVfY2MiCi0gICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9kZWNsYXJhdGlvbl9hZnRlcl9zdGF0ZW1lbnRfd2FybmluZyIgPiY1Ci0kYXNfZWNobyAiJGFjX2N2X2RlY2xhcmF0aW9uX2FmdGVyX3N0YXRlbWVudF93YXJuaW5nIiA+JjY7IH0KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2Rpc2FibGVfdW51c2VkX3BhcmFtZXRlcl93YXJuaW5nIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfZGlzYWJsZV91bnVzZWRfcGFyYW1ldGVyX3dhcm5pbmciID4mNjsgfQogCi0gICAgaWYgdGVzdCAkYWNfY3ZfZGVjbGFyYXRpb25fYWZ0ZXJfc3RhdGVtZW50X3dhcm5pbmcgPSB5ZXMKKyAgICBpZiB0ZXN0ICRhY19jdl9kaXNhYmxlX3VudXNlZF9wYXJhbWV0ZXJfd2FybmluZyA9IHllcwogICAgIHRoZW4KLSAgICAgIENGTEFHU19OT0RJU1Q9IiRDRkxBR1NfTk9ESVNUIC1XZXJyb3I9ZGVjbGFyYXRpb24tYWZ0ZXItc3RhdGVtZW50IgorICAgICAgQ0ZMQUdTX05PRElTVD0iJENGTEFHU19OT0RJU1QgLVduby11bnVzZWQtcGFyYW1ldGVyIgorICAgIGZpCisKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmIHdlIGNhbiB0dXJuIG9mZiAkQ0MgbWlzc2luZyBmaWVsZCBpbml0aWFsaXplcnMgd2FybmluZyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBpZiB3ZSBjYW4gdHVybiBvZmYgJENDIG1pc3NpbmcgZmllbGQgaW5pdGlhbGl6ZXJzIHdhcm5pbmcuLi4gIiA+JjY7IH0KKyAgICAgYWNfc2F2ZV9jYz0iJENDIgorICAgICBDQz0iJENDIC1XbWlzc2luZy1maWVsZC1pbml0aWFsaXplcnMgLVdlcnJvciIKKyAgICAgaWYgJHthY19jdl9kaXNhYmxlX21pc3NpbmdfZmllbGRfaW5pdGlhbGl6ZXJzKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisKK2ludAorbWFpbiAoKQoreworCisgIDsKKyAgcmV0dXJuIDA7Cit9CisKK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorCisgICAgICAgICAgIGFjX2N2X2Rpc2FibGVfbWlzc2luZ19maWVsZF9pbml0aWFsaXplcnM9eWVzCisKK2Vsc2UKKworICAgICAgICAgICBhY19jdl9kaXNhYmxlX21pc3NpbmdfZmllbGRfaW5pdGlhbGl6ZXJzPW5vCisKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCisKKyAgICAgQ0M9IiRhY19zYXZlX2NjIgorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfZGlzYWJsZV9taXNzaW5nX2ZpZWxkX2luaXRpYWxpemVycyIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2Rpc2FibGVfbWlzc2luZ19maWVsZF9pbml0aWFsaXplcnMiID4mNjsgfQorCisgICAgaWYgdGVzdCAkYWNfY3ZfZGlzYWJsZV9taXNzaW5nX2ZpZWxkX2luaXRpYWxpemVycyA9IHllcworICAgIHRoZW4KKyAgICAgIENGTEFHU19OT0RJU1Q9IiRDRkxBR1NfTk9ESVNUIC1Xbm8tbWlzc2luZy1maWVsZC1pbml0aWFsaXplcnMiCiAgICAgZmkKIAogICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgd2UgY2FuIHR1cm4gb24gJENDIG1peGVkIHNpZ24gY29tcGFyaXNvbiB3YXJuaW5nIiA+JjUKQEAgLTc3MDksNyArNzc1OCw3IEBACiBmb3IgYWNfaGVhZGVyIGluIGFzbS90eXBlcy5oIGNvbmlvLmggZGlyZWN0LmggZGxmY24uaCBlcnJuby5oIFwKIGZjbnRsLmggZ3JwLmggXAogaWVlZWZwLmggaW8uaCBsYW5naW5mby5oIGxpYmludGwuaCBwcm9jZXNzLmggcHRocmVhZC5oIFwKLXNjaGVkLmggc2hhZG93Lmggc2lnbmFsLmggc3RkaW50Lmggc3Ryb3B0cy5oIHRlcm1pb3MuaCBcCitzY2hlZC5oIHNoYWRvdy5oIHNpZ25hbC5oIHN0cm9wdHMuaCB0ZXJtaW9zLmggXAogdW5pc3RkLmggdXRpbWUuaCBcCiBwb2xsLmggc3lzL2RldnBvbGwuaCBzeXMvZXBvbGwuaCBzeXMvcG9sbC5oIFwKIHN5cy9hdWRpb2lvLmggc3lzL3hhdHRyLmggc3lzL2JzZHR0eS5oIHN5cy9ldmVudC5oIHN5cy9maWxlLmggc3lzL2lvY3RsLmggXApAQCAtNzcxOCw3ICs3NzY3LDcgQEAKIHN5cy9zdGF0Lmggc3lzL3N5c2NhbGwuaCBzeXMvc3lzX2RvbWFpbi5oIHN5cy90ZXJtaW8uaCBzeXMvdGltZS5oIFwKIHN5cy90aW1lcy5oIHN5cy90eXBlcy5oIHN5cy91aW8uaCBzeXMvdW4uaCBzeXMvdXRzbmFtZS5oIHN5cy93YWl0LmggcHR5LmggXAogbGlidXRpbC5oIHN5cy9yZXNvdXJjZS5oIG5ldHBhY2tldC9wYWNrZXQuaCBzeXNleGl0cy5oIGJsdWV0b290aC5oIFwKLWJsdWV0b290aC9ibHVldG9vdGguaCBsaW51eC90aXBjLmggbGludXgvcmFuZG9tLmggc3Bhd24uaCB1dGlsLmggYWxsb2NhLmggZW5kaWFuLmggXAorbGludXgvdGlwYy5oIGxpbnV4L3JhbmRvbS5oIHNwYXduLmggdXRpbC5oIGFsbG9jYS5oIGVuZGlhbi5oIFwKIHN5cy9lbmRpYW4uaAogZG8gOgogICBhc19hY19IZWFkZXI9YCRhc19lY2hvICJhY19jdl9oZWFkZXJfJGFjX2hlYWRlciIgfCAkYXNfdHJfc2hgCkBAIC03OTQxLDYgKzc5OTAsMjQgQEAKIGZpCiAKIAorIyBibHVldG9vdGgvYmx1ZXRvb3RoLmggaGFzIGJlZW4ga25vd24gdG8gbm90IGNvbXBpbGUgd2l0aCAtc3RkPWM5OS4KKyMgaHR0cDovL3Blcm1hbGluay5nbWFuZS5vcmcvZ21hbmUubGludXguYmx1ZXoua2VybmVsLzIyMjk0CitTQVZFX0NGTEFHUz0kQ0ZMQUdTCitDRkxBR1M9Ii1zdGQ9Yzk5ICRDRkxBR1MiCitmb3IgYWNfaGVhZGVyIGluIGJsdWV0b290aC9ibHVldG9vdGguaAorZG8gOgorICBhY19mbl9jX2NoZWNrX2hlYWRlcl9tb25ncmVsICIkTElORU5PIiAiYmx1ZXRvb3RoL2JsdWV0b290aC5oIiAiYWNfY3ZfaGVhZGVyX2JsdWV0b290aF9ibHVldG9vdGhfaCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgoraWYgdGVzdCAieCRhY19jdl9oZWFkZXJfYmx1ZXRvb3RoX2JsdWV0b290aF9oIiA9IHh5ZXM7IHRoZW4gOgorICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIEhBVkVfQkxVRVRPT1RIX0JMVUVUT09USF9IIDEKK19BQ0VPRgorCitmaQorCitkb25lCisKK0NGTEFHUz0kU0FWRV9DRkxBR1MKKwogIyBPbiBEYXJ3aW4gKE9TIFgpIG5ldC9pZi5oIHJlcXVpcmVzIHN5cy9zb2NrZXQuaCB0byBiZSBpbXBvcnRlZCBmaXJzdC4KIGZvciBhY19oZWFkZXIgaW4gbmV0L2lmLmgKIGRvIDoKQEAgLTgxNDYsNiArODIxMywxMSBAQAogICB1c2VfbGZzPW5vCiBmaQogCisjIERvbid0IHVzZSBsYXJnZWZpbGUgc3VwcG9ydCBmb3IgR05VL0h1cmQKK2Nhc2UgJGFjX3N5c19zeXN0ZW0gaW4gR05VKikKKyAgdXNlX2xmcz1ubworZXNhYworCiBpZiB0ZXN0ICIkdXNlX2xmcyIgPSAieWVzIjsgdGhlbgogIyBUd28gZGVmaW5lcyBuZWVkZWQgdG8gZW5hYmxlIGxhcmdlZmlsZSBzdXBwb3J0IG9uIHZhcmlvdXMgcGxhdGZvcm1zCiAjIFRoZXNlIG1heSBhZmZlY3Qgc29tZSB0eXBlZGVmcwpAQCAtODI1Miw5NSArODMyNCw2IEBACiBmaQogCiAKLSMgVGhlcmUgYXJlIHR3byBzZXBhcmF0ZSBjaGVja3MgZm9yIGVhY2ggb2YgdGhlIGV4YWN0LXdpZHRoIGludGVnZXIgdHlwZXMgd2UKLSMgbmVlZC4gIEZpcnN0IHdlIGNoZWNrIHdoZXRoZXIgdGhlIHR5cGUgaXMgYXZhaWxhYmxlIHVzaW5nIHRoZSB1c3VhbAotIyBBQ19DSEVDS19UWVBFIG1hY3JvIHdpdGggdGhlIGRlZmF1bHQgaW5jbHVkZXMgKHdoaWNoIGluY2x1ZGVzIDxpbnR0eXBlcy5oPgotIyBhbmQgPHN0ZGludC5oPiB3aGVyZSBhdmFpbGFibGUpLiAgV2UgdGhlbiBhbHNvIHVzZSB0aGUgc3BlY2lhbCB0eXBlIGNoZWNrcyBvZgotIyB0aGUgZm9ybSBBQ19UWVBFX1VJTlQzMl9ULCB3aGljaCBpbiB0aGUgY2FzZSB0aGF0IHVpbnQzMl90IGlzIG5vdCBhdmFpbGFibGUKLSMgZGlyZWN0bHksICNkZWZpbmUncyB1aW50MzJfdCB0byBiZSBhIHN1aXRhYmxlIHR5cGUuCi0KLWFjX2ZuX2NfY2hlY2tfdHlwZSAiJExJTkVOTyIgInVpbnQzMl90IiAiYWNfY3ZfdHlwZV91aW50MzJfdCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgotaWYgdGVzdCAieCRhY19jdl90eXBlX3VpbnQzMl90IiA9IHh5ZXM7IHRoZW4gOgotCi0kYXNfZWNobyAiI2RlZmluZSBIQVZFX1VJTlQzMl9UIDEiID4+Y29uZmRlZnMuaAotCi1maQotCi1hY19mbl9jX2ZpbmRfdWludFhfdCAiJExJTkVOTyIgIjMyIiAiYWNfY3ZfY191aW50MzJfdCIKLWNhc2UgJGFjX2N2X2NfdWludDMyX3QgaW4gIygKLSAgbm98eWVzKSA7OyAjKAotICAqKQotCi0kYXNfZWNobyAiI2RlZmluZSBfVUlOVDMyX1QgMSIgPj5jb25mZGVmcy5oCi0KLQotY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotI2RlZmluZSB1aW50MzJfdCAkYWNfY3ZfY191aW50MzJfdAotX0FDRU9GCi07OwotICBlc2FjCi0KLQotYWNfZm5fY19jaGVja190eXBlICIkTElORU5PIiAidWludDY0X3QiICJhY19jdl90eXBlX3VpbnQ2NF90IiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCi1pZiB0ZXN0ICJ4JGFjX2N2X3R5cGVfdWludDY0X3QiID0geHllczsgdGhlbiA6Ci0KLSRhc19lY2hvICIjZGVmaW5lIEhBVkVfVUlOVDY0X1QgMSIgPj5jb25mZGVmcy5oCi0KLWZpCi0KLWFjX2ZuX2NfZmluZF91aW50WF90ICIkTElORU5PIiAiNjQiICJhY19jdl9jX3VpbnQ2NF90IgotY2FzZSAkYWNfY3ZfY191aW50NjRfdCBpbiAjKAotICBub3x5ZXMpIDs7ICMoCi0gICopCi0KLSRhc19lY2hvICIjZGVmaW5lIF9VSU5UNjRfVCAxIiA+PmNvbmZkZWZzLmgKLQotCi1jYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCi0jZGVmaW5lIHVpbnQ2NF90ICRhY19jdl9jX3VpbnQ2NF90Ci1fQUNFT0YKLTs7Ci0gIGVzYWMKLQotCi1hY19mbl9jX2NoZWNrX3R5cGUgIiRMSU5FTk8iICJpbnQzMl90IiAiYWNfY3ZfdHlwZV9pbnQzMl90IiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCi1pZiB0ZXN0ICJ4JGFjX2N2X3R5cGVfaW50MzJfdCIgPSB4eWVzOyB0aGVuIDoKLQotJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9JTlQzMl9UIDEiID4+Y29uZmRlZnMuaAotCi1maQotCi1hY19mbl9jX2ZpbmRfaW50WF90ICIkTElORU5PIiAiMzIiICJhY19jdl9jX2ludDMyX3QiCi1jYXNlICRhY19jdl9jX2ludDMyX3QgaW4gIygKLSAgbm98eWVzKSA7OyAjKAotICAqKQotCi1jYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCi0jZGVmaW5lIGludDMyX3QgJGFjX2N2X2NfaW50MzJfdAotX0FDRU9GCi07OwotZXNhYwotCi0KLWFjX2ZuX2NfY2hlY2tfdHlwZSAiJExJTkVOTyIgImludDY0X3QiICJhY19jdl90eXBlX2ludDY0X3QiICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKLWlmIHRlc3QgIngkYWNfY3ZfdHlwZV9pbnQ2NF90IiA9IHh5ZXM7IHRoZW4gOgotCi0kYXNfZWNobyAiI2RlZmluZSBIQVZFX0lOVDY0X1QgMSIgPj5jb25mZGVmcy5oCi0KLWZpCi0KLWFjX2ZuX2NfZmluZF9pbnRYX3QgIiRMSU5FTk8iICI2NCIgImFjX2N2X2NfaW50NjRfdCIKLWNhc2UgJGFjX2N2X2NfaW50NjRfdCBpbiAjKAotICBub3x5ZXMpIDs7ICMoCi0gICopCi0KLWNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKLSNkZWZpbmUgaW50NjRfdCAkYWNfY3ZfY19pbnQ2NF90Ci1fQUNFT0YKLTs7Ci1lc2FjCi0KLQogYWNfZm5fY19jaGVja190eXBlICIkTElORU5PIiAic3NpemVfdCIgImFjX2N2X3R5cGVfc3NpemVfdCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgogaWYgdGVzdCAieCRhY19jdl90eXBlX3NzaXplX3QiID0geHllczsgdGhlbiA6CiAKQEAgLTg0MjgsNiArODQxMSwzOSBAQAogIyB2ZXJzaW9uIEhQOTI0NTMtMDEgQi4xMS4xMS4yMzcwOS5HUCwgd2hpY2ggaW5jb3JyZWN0bHkgcmVqZWN0cwogIyBkZWNsYXJhdGlvbnMgbGlrZSBgaW50IGEzW1soc2l6ZW9mICh1bnNpZ25lZCBjaGFyKSkgPj0gMF1dOycuCiAjIFRoaXMgYnVnIGlzIEhQIFNSIG51bWJlciA4NjA2MjIzMzY0LgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBzaXplIG9mIGxvbmcgbG9uZyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBzaXplIG9mIGxvbmcgbG9uZy4uLiAiID4mNjsgfQoraWYgJHthY19jdl9zaXplb2ZfbG9uZ19sb25nKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgYWNfZm5fY19jb21wdXRlX2ludCAiJExJTkVOTyIgIihsb25nIGludCkgKHNpemVvZiAobG9uZyBsb25nKSkiICJhY19jdl9zaXplb2ZfbG9uZ19sb25nIiAgICAgICAgIiRhY19pbmNsdWRlc19kZWZhdWx0IjsgdGhlbiA6CisKK2Vsc2UKKyAgaWYgdGVzdCAiJGFjX2N2X3R5cGVfbG9uZ19sb25nIiA9IHllczsgdGhlbgorICAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30KK2FzX2ZuX2Vycm9yIDc3ICJjYW5ub3QgY29tcHV0ZSBzaXplb2YgKGxvbmcgbG9uZykKK1NlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1OyB9CisgICBlbHNlCisgICAgIGFjX2N2X3NpemVvZl9sb25nX2xvbmc9MAorICAgZmkKK2ZpCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X3NpemVvZl9sb25nX2xvbmciID4mNQorJGFzX2VjaG8gIiRhY19jdl9zaXplb2ZfbG9uZ19sb25nIiA+JjY7IH0KKworCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgU0laRU9GX0xPTkdfTE9ORyAkYWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZworX0FDRU9GCisKKworIyBUaGUgY2FzdCB0byBsb25nIGludCB3b3JrcyBhcm91bmQgYSBidWcgaW4gdGhlIEhQIEMgQ29tcGlsZXIKKyMgdmVyc2lvbiBIUDkyNDUzLTAxIEIuMTEuMTEuMjM3MDkuR1AsIHdoaWNoIGluY29ycmVjdGx5IHJlamVjdHMKKyMgZGVjbGFyYXRpb25zIGxpa2UgYGludCBhM1tbKHNpemVvZiAodW5zaWduZWQgY2hhcikpID49IDBdXTsnLgorIyBUaGlzIGJ1ZyBpcyBIUCBTUiBudW1iZXIgODYwNjIyMzM2NC4KIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgc2l6ZSBvZiB2b2lkICoiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgc2l6ZSBvZiB2b2lkICouLi4gIiA+JjY7IH0KIGlmICR7YWNfY3Zfc2l6ZW9mX3ZvaWRfcCs6fSBmYWxzZTsgdGhlbiA6CkBAIC04NjU1LDY3ICs4NjcxLDM5IEBACiBfQUNFT0YKIAogCi0KLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGxvbmcgbG9uZyBzdXBwb3J0IiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciBsb25nIGxvbmcgc3VwcG9ydC4uLiAiID4mNjsgfQotaGF2ZV9sb25nX2xvbmc9bm8KLWNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLQotaW50Ci1tYWluICgpCi17Ci1sb25nIGxvbmcgeDsgeCA9IChsb25nIGxvbmcpMDsKLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotCi0KLSRhc19lY2hvICIjZGVmaW5lIEhBVkVfTE9OR19MT05HIDEiID4+Y29uZmRlZnMuaAotCi0gIGhhdmVfbG9uZ19sb25nPXllcwotCi1maQotcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGhhdmVfbG9uZ19sb25nIiA+JjUKLSRhc19lY2hvICIkaGF2ZV9sb25nX2xvbmciID4mNjsgfQotaWYgdGVzdCAiJGhhdmVfbG9uZ19sb25nIiA9IHllcyA7IHRoZW4KICMgVGhlIGNhc3QgdG8gbG9uZyBpbnQgd29ya3MgYXJvdW5kIGEgYnVnIGluIHRoZSBIUCBDIENvbXBpbGVyCiAjIHZlcnNpb24gSFA5MjQ1My0wMSBCLjExLjExLjIzNzA5LkdQLCB3aGljaCBpbmNvcnJlY3RseSByZWplY3RzCiAjIGRlY2xhcmF0aW9ucyBsaWtlIGBpbnQgYTNbWyhzaXplb2YgKHVuc2lnbmVkIGNoYXIpKSA+PSAwXV07Jy4KICMgVGhpcyBidWcgaXMgSFAgU1IgbnVtYmVyIDg2MDYyMjMzNjQuCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHNpemUgb2YgbG9uZyBsb25nIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIHNpemUgb2YgbG9uZyBsb25nLi4uICIgPiY2OyB9Ci1pZiAke2FjX2N2X3NpemVvZl9sb25nX2xvbmcrOn0gZmFsc2U7IHRoZW4gOgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBzaXplIG9mIHVpbnRwdHJfdCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBzaXplIG9mIHVpbnRwdHJfdC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9zaXplb2ZfdWludHB0cl90Kzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKLSAgaWYgYWNfZm5fY19jb21wdXRlX2ludCAiJExJTkVOTyIgIihsb25nIGludCkgKHNpemVvZiAobG9uZyBsb25nKSkiICJhY19jdl9zaXplb2ZfbG9uZ19sb25nIiAgICAgICAgIiRhY19pbmNsdWRlc19kZWZhdWx0IjsgdGhlbiA6CisgIGlmIGFjX2ZuX2NfY29tcHV0ZV9pbnQgIiRMSU5FTk8iICIobG9uZyBpbnQpIChzaXplb2YgKHVpbnRwdHJfdCkpIiAiYWNfY3Zfc2l6ZW9mX3VpbnRwdHJfdCIgICAgICAgICIkYWNfaW5jbHVkZXNfZGVmYXVsdCI7IHRoZW4gOgogCiBlbHNlCi0gIGlmIHRlc3QgIiRhY19jdl90eXBlX2xvbmdfbG9uZyIgPSB5ZXM7IHRoZW4KKyAgaWYgdGVzdCAiJGFjX2N2X3R5cGVfdWludHB0cl90IiA9IHllczsgdGhlbgogICAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKICRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30KLWFzX2ZuX2Vycm9yIDc3ICJjYW5ub3QgY29tcHV0ZSBzaXplb2YgKGxvbmcgbG9uZykKK2FzX2ZuX2Vycm9yIDc3ICJjYW5ub3QgY29tcHV0ZSBzaXplb2YgKHVpbnRwdHJfdCkKIFNlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1OyB9CiAgICBlbHNlCi0gICAgIGFjX2N2X3NpemVvZl9sb25nX2xvbmc9MAorICAgICBhY19jdl9zaXplb2ZfdWludHB0cl90PTAKICAgIGZpCiBmaQogCiBmaQoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9zaXplb2ZfbG9uZ19sb25nIiA+JjUKLSRhc19lY2hvICIkYWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZyIgPiY2OyB9Cit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X3NpemVvZl91aW50cHRyX3QiID4mNQorJGFzX2VjaG8gIiRhY19jdl9zaXplb2ZfdWludHB0cl90IiA+JjY7IH0KIAogCiAKIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKLSNkZWZpbmUgU0laRU9GX0xPTkdfTE9ORyAkYWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZworI2RlZmluZSBTSVpFT0ZfVUlOVFBUUl9UICRhY19jdl9zaXplb2ZfdWludHB0cl90CiBfQUNFT0YKIAogCi1maQogCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBsb25nIGRvdWJsZSBzdXBwb3J0IiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBsb25nIGRvdWJsZSBzdXBwb3J0Li4uICIgPiY2OyB9CkBAIC04Nzc4LDMzICs4NzY2LDYgQEAKIAogZmkKIAotCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBfQm9vbCBzdXBwb3J0IiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciBfQm9vbCBzdXBwb3J0Li4uICIgPiY2OyB9Ci1oYXZlX2M5OV9ib29sPW5vCi1jYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0KLWludAotbWFpbiAoKQotewotX0Jvb2wgeDsgeCA9IChfQm9vbCkwOwotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0KLQotJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9DOTlfQk9PTCAxIiA+PmNvbmZkZWZzLmgKLQotICBoYXZlX2M5OV9ib29sPXllcwotCi1maQotcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGhhdmVfYzk5X2Jvb2wiID4mNQotJGFzX2VjaG8gIiRoYXZlX2M5OV9ib29sIiA+JjY7IH0KLWlmIHRlc3QgIiRoYXZlX2M5OV9ib29sIiA9IHllcyA7IHRoZW4KICMgVGhlIGNhc3QgdG8gbG9uZyBpbnQgd29ya3MgYXJvdW5kIGEgYnVnIGluIHRoZSBIUCBDIENvbXBpbGVyCiAjIHZlcnNpb24gSFA5MjQ1My0wMSBCLjExLjExLjIzNzA5LkdQLCB3aGljaCBpbmNvcnJlY3RseSByZWplY3RzCiAjIGRlY2xhcmF0aW9ucyBsaWtlIGBpbnQgYTNbWyhzaXplb2YgKHVuc2lnbmVkIGNoYXIpKSA+PSAwXV07Jy4KQEAgLTg4MzgsNTYgKzg3OTksNiBAQAogX0FDRU9GCiAKIAotZmkKLQotYWNfZm5fY19jaGVja190eXBlICIkTElORU5PIiAidWludHB0cl90IiAiYWNfY3ZfdHlwZV91aW50cHRyX3QiICIjaWZkZWYgSEFWRV9TVERJTlRfSAotICAgICAgICAjaW5jbHVkZSA8c3RkaW50Lmg+Ci0gICAgICAgICNlbmRpZgotICAgICAgICAjaWZkZWYgSEFWRV9JTlRUWVBFU19ICi0gICAgICAgICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotICAgICAgICAjZW5kaWYKLSIKLWlmIHRlc3QgIngkYWNfY3ZfdHlwZV91aW50cHRyX3QiID0geHllczsgdGhlbiA6Ci0KLWNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKLSNkZWZpbmUgSEFWRV9VSU5UUFRSX1QgMQotX0FDRU9GCi0KLSMgVGhlIGNhc3QgdG8gbG9uZyBpbnQgd29ya3MgYXJvdW5kIGEgYnVnIGluIHRoZSBIUCBDIENvbXBpbGVyCi0jIHZlcnNpb24gSFA5MjQ1My0wMSBCLjExLjExLjIzNzA5LkdQLCB3aGljaCBpbmNvcnJlY3RseSByZWplY3RzCi0jIGRlY2xhcmF0aW9ucyBsaWtlIGBpbnQgYTNbWyhzaXplb2YgKHVuc2lnbmVkIGNoYXIpKSA+PSAwXV07Jy4KLSMgVGhpcyBidWcgaXMgSFAgU1IgbnVtYmVyIDg2MDYyMjMzNjQuCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHNpemUgb2YgdWludHB0cl90IiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIHNpemUgb2YgdWludHB0cl90Li4uICIgPiY2OyB9Ci1pZiAke2FjX2N2X3NpemVvZl91aW50cHRyX3QrOn0gZmFsc2U7IHRoZW4gOgotICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotZWxzZQotICBpZiBhY19mbl9jX2NvbXB1dGVfaW50ICIkTElORU5PIiAiKGxvbmcgaW50KSAoc2l6ZW9mICh1aW50cHRyX3QpKSIgImFjX2N2X3NpemVvZl91aW50cHRyX3QiICAgICAgICAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiOyB0aGVuIDoKLQotZWxzZQotICBpZiB0ZXN0ICIkYWNfY3ZfdHlwZV91aW50cHRyX3QiID0geWVzOyB0aGVuCi0gICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mNQotJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjI7fQotYXNfZm5fZXJyb3IgNzcgImNhbm5vdCBjb21wdXRlIHNpemVvZiAodWludHB0cl90KQotU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0KLSAgIGVsc2UKLSAgICAgYWNfY3Zfc2l6ZW9mX3VpbnRwdHJfdD0wCi0gICBmaQotZmkKLQotZmkKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3Zfc2l6ZW9mX3VpbnRwdHJfdCIgPiY1Ci0kYXNfZWNobyAiJGFjX2N2X3NpemVvZl91aW50cHRyX3QiID4mNjsgfQotCi0KLQotY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotI2RlZmluZSBTSVpFT0ZfVUlOVFBUUl9UICRhY19jdl9zaXplb2ZfdWludHB0cl90Ci1fQUNFT0YKLQotCi1maQotCiAKICMgVGhlIGNhc3QgdG8gbG9uZyBpbnQgd29ya3MgYXJvdW5kIGEgYnVnIGluIHRoZSBIUCBDIENvbXBpbGVyCiAjIHZlcnNpb24gSFA5MjQ1My0wMSBCLjExLjExLjIzNzA5LkdQLCB3aGljaCBpbmNvcnJlY3RseSByZWplY3RzCkBAIC04OTMwLDggKzg4NDEsNiBAQAogCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdG8gZW5hYmxlIGxhcmdlIGZpbGUgc3VwcG9ydCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRvIGVuYWJsZSBsYXJnZSBmaWxlIHN1cHBvcnQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiRoYXZlX2xvbmdfbG9uZyIgPSB5ZXMKLXRoZW4KIGlmIHRlc3QgIiRhY19jdl9zaXplb2Zfb2ZmX3QiIC1ndCAiJGFjX2N2X3NpemVvZl9sb25nIiAtYSBcCiAJIiRhY19jdl9zaXplb2ZfbG9uZ19sb25nIiAtZ2UgIiRhY19jdl9zaXplb2Zfb2ZmX3QiOyB0aGVuCiAKQEAgLTg5NDMsMTAgKzg4NTIsNiBAQAogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQogJGFzX2VjaG8gIm5vIiA+JjY7IH0KIGZpCi1lbHNlCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0kYXNfZWNobyAibm8iID4mNjsgfQotZmkKIAogIyBUaGUgY2FzdCB0byBsb25nIGludCB3b3JrcyBhcm91bmQgYSBidWcgaW4gdGhlIEhQIEMgQ29tcGlsZXIKICMgdmVyc2lvbiBIUDkyNDUzLTAxIEIuMTEuMTEuMjM3MDkuR1AsIHdoaWNoIGluY29ycmVjdGx5IHJlamVjdHMKQEAgLTEwMTA0LDExICsxMDAwOSwyNyBAQAogIyBDaGVjayB3aGV0aGVyIC0td2l0aC1zeXN0ZW1fZmZpIHdhcyBnaXZlbi4KIGlmIHRlc3QgIiR7d2l0aF9zeXN0ZW1fZmZpK3NldH0iID0gc2V0OyB0aGVuIDoKICAgd2l0aHZhbD0kd2l0aF9zeXN0ZW1fZmZpOwotZWxzZQotICB3aXRoX3N5c3RlbV9mZmk9Im5vIgogZmkKIAogCitjYXNlICIkd2l0aF9zeXN0ZW1fZmZpIiBpbgorICAgICIiKQorICAgICAgICBjYXNlICRhY19zeXNfc3lzdGVtIGluCisgICAgICAgICAgICBEYXJ3aW4pCisgICAgICAgICAgICAgICAgd2l0aF9zeXN0ZW1fZmZpPSJubyIKKyAgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgKikKKyAgICAgICAgICAgICAgICB3aXRoX3N5c3RlbV9mZmk9InllcyIKKyAgICAgICAgICAgICAgICA7OworICAgICAgICBlc2FjCisgICAgICAgIDs7CisgICAgeWVzfG5vKQorICAgICAgICA7OworICAgICopCisgICAgICAgIGFzX2ZuX2Vycm9yICQ/ICItLXdpdGgtc3lzdGVtLWZmaSBhY2NlcHRzIG5vIGFyZ3VtZW50cyIgIiRMSU5FTk8iIDUKKyAgICAgICAgOzsKK2VzYWMKKwogaWYgdGVzdCAiJHdpdGhfc3lzdGVtX2ZmaSIgPSAieWVzIiAmJiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KICAgICBMSUJGRklfSU5DTFVERURJUj0iYCIkUEtHX0NPTkZJRyIgbGliZmZpIC0tY2ZsYWdzLW9ubHktSSAyPi9kZXYvbnVsbCB8IHNlZCAtZSAncy9eLUkvLztzLyAqJC8vJ2AiCiBlbHNlCkBAIC0xMDIxMSwzMiArMTAxMzIsNiBAQAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR3aXRoX2RibWxpYm9yZGVyIiA+JjUKICRhc19lY2hvICIkd2l0aF9kYm1saWJvcmRlciIgPiY2OyB9CiAKLSMgRGV0ZXJtaW5lIGlmIHNpZ25hbG1vZHVsZSBzaG91bGQgYmUgdXNlZC4KLQotCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAtLXdpdGgtc2lnbmFsLW1vZHVsZSIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgLS13aXRoLXNpZ25hbC1tb2R1bGUuLi4gIiA+JjY7IH0KLQotIyBDaGVjayB3aGV0aGVyIC0td2l0aC1zaWduYWwtbW9kdWxlIHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7d2l0aF9zaWduYWxfbW9kdWxlK3NldH0iID0gc2V0OyB0aGVuIDoKLSAgd2l0aHZhbD0kd2l0aF9zaWduYWxfbW9kdWxlOwotZmkKLQotCi1pZiB0ZXN0IC16ICIkd2l0aF9zaWduYWxfbW9kdWxlIgotdGhlbiB3aXRoX3NpZ25hbF9tb2R1bGU9InllcyIKLWZpCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHdpdGhfc2lnbmFsX21vZHVsZSIgPiY1Ci0kYXNfZWNobyAiJHdpdGhfc2lnbmFsX21vZHVsZSIgPiY2OyB9Ci0KLWlmIHRlc3QgIiR7d2l0aF9zaWduYWxfbW9kdWxlfSIgPSAieWVzIjsgdGhlbgotCVVTRV9TSUdOQUxfTU9EVUxFPSIiCi0JU0lHTkFMX09CSlM9IiIKLWVsc2UKLQlVU0VfU0lHTkFMX01PRFVMRT0iIyIKLQlTSUdOQUxfT0JKUz0iUGFyc2VyL2ludHJjaGVjay5vIFB5dGhvbi9zaWdjaGVjay5vIgotZmkKLQogIyBUaGlzIGlzIHVzZWQgdG8gZ2VuZXJhdGUgU2V0dXAuY29uZmlnCiAKIFVTRV9USFJFQURfTU9EVUxFPSIiCkBAIC0xMTA1MywzNyArMTA5NDgsNiBAQAogZmkKIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAogCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBPU1ggMTAuNSBTREsgb3IgbGF0ZXIiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIE9TWCAxMC41IFNESyBvciBsYXRlci4uLiAiID4mNjsgfQotY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotLyogZW5kIGNvbmZkZWZzLmguICAqLwotCi0gICNpbmNsdWRlIDxDYXJib24vQ2FyYm9uLmg+Ci1pbnQKLW1haW4gKCkKLXsKLUZTSU9SZWZOdW0gZlJlZiA9IDAKLSAgOwotICByZXR1cm4gMDsKLX0KLQotX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0KLQotJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9PU1gxMDVfU0RLIDEiID4+Y29uZmRlZnMuaAotCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQotJGFzX2VjaG8gInllcyIgPiY2OyB9Ci0KLWVsc2UKLQotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotJGFzX2VjaG8gIm5vIiA+JjY7IH0KLQotZmkKLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotCiAjIENoZWNrIGZvciAtLXdpdGgtZG9jLXN0cmluZ3MKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIC0td2l0aC1kb2Mtc3RyaW5ncyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgLS13aXRoLWRvYy1zdHJpbmdzLi4uICIgPiY2OyB9CkBAIC0xMTEwNiwyOSArMTA5NzAsNiBAQAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR3aXRoX2RvY19zdHJpbmdzIiA+JjUKICRhc19lY2hvICIkd2l0aF9kb2Nfc3RyaW5ncyIgPiY2OyB9CiAKLSMgQ2hlY2sgaWYgZXZhbCBsb29wIHNob3VsZCB1c2UgdGltZXN0YW1wIGNvdW50ZXIgcHJvZmlsaW5nCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAtLXdpdGgtdHNjIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAtLXdpdGgtdHNjLi4uICIgPiY2OyB9Ci0KLSMgQ2hlY2sgd2hldGhlciAtLXdpdGgtdHNjIHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7d2l0aF90c2Mrc2V0fSIgPSBzZXQ7IHRoZW4gOgotICB3aXRodmFsPSR3aXRoX3RzYzsKLWlmIHRlc3QgIiR3aXRodmFsIiAhPSBubwotdGhlbgotCi0kYXNfZWNobyAiI2RlZmluZSBXSVRIX1RTQyAxIiA+PmNvbmZkZWZzLmgKLQotICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQotJGFzX2VjaG8gInllcyIgPiY2OyB9Ci1lbHNlIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0kYXNfZWNobyAibm8iID4mNjsgfQotZmkKLWVsc2UKLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSRhc19lY2hvICJubyIgPiY2OyB9Ci1maQotCi0KICMgQ2hlY2sgZm9yIFB5dGhvbi1zcGVjaWZpYyBtYWxsb2Mgc3VwcG9ydAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgLS13aXRoLXB5bWFsbG9jIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAtLXdpdGgtcHltYWxsb2MuLi4gIiA+JjY7IH0KQEAgLTExMTgxLDYgKzExMDIyLDEwMiBAQAogICAgIE9QVD0iLUREWU5BTUlDX0FOTk9UQVRJT05TX0VOQUJMRUQ9MSAkT1BUIgogZmkKIAorIyBDaGVjayBmb3IgRFRyYWNlIHN1cHBvcnQKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIC0td2l0aC1kdHJhY2UiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIC0td2l0aC1kdHJhY2UuLi4gIiA+JjY7IH0KKworIyBDaGVjayB3aGV0aGVyIC0td2l0aC1kdHJhY2Ugd2FzIGdpdmVuLgoraWYgdGVzdCAiJHt3aXRoX2R0cmFjZStzZXR9IiA9IHNldDsgdGhlbiA6CisgIHdpdGh2YWw9JHdpdGhfZHRyYWNlOworZWxzZQorICB3aXRoX2R0cmFjZT1ubworZmkKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR3aXRoX2R0cmFjZSIgPiY1CiskYXNfZWNobyAiJHdpdGhfZHRyYWNlIiA+JjY7IH0KKworCisKKworCitEVFJBQ0U9CitERkxBR1M9CitEVFJBQ0VfSEVBREVSUz0KK0RUUkFDRV9PQkpTPQorCitpZiB0ZXN0ICIkd2l0aF9kdHJhY2UiID0gInllcyIKK3RoZW4KKyAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImR0cmFjZSIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgZHRyYWNlOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcGF0aF9EVFJBQ0UrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXNlICREVFJBQ0UgaW4KKyAgW1xcL10qIHwgPzpbXFwvXSopCisgIGFjX2N2X3BhdGhfRFRSQUNFPSIkRFRSQUNFIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyAgKikKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisgICAgYWNfY3ZfcGF0aF9EVFJBQ0U9IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKKyAgdGVzdCAteiAiJGFjX2N2X3BhdGhfRFRSQUNFIiAmJiBhY19jdl9wYXRoX0RUUkFDRT0ibm90IGZvdW5kIgorICA7OworZXNhYworZmkKK0RUUkFDRT0kYWNfY3ZfcGF0aF9EVFJBQ0UKK2lmIHRlc3QgLW4gIiREVFJBQ0UiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkRFRSQUNFIiA+JjUKKyRhc19lY2hvICIkRFRSQUNFIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKKyAgICBpZiB0ZXN0ICIkRFRSQUNFIiA9ICJub3QgZm91bmQiOyB0aGVuCisgICAgICAgIGFzX2ZuX2Vycm9yICQ/ICJkdHJhY2UgY29tbWFuZCBub3QgZm91bmQgb24gXCRQQVRIIiAiJExJTkVOTyIgNQorICAgIGZpCisKKyRhc19lY2hvICIjZGVmaW5lIFdJVEhfRFRSQUNFIDEiID4+Y29uZmRlZnMuaAorCisgICAgRFRSQUNFX0hFQURFUlM9IkluY2x1ZGUvcHlkdHJhY2VfcHJvYmVzLmgiCisKKyAgICAjIE9uIE9TIFgsIERUcmFjZSBwcm92aWRlcnMgZG8gbm90IG5lZWQgdG8gYmUgZXhwbGljaXRseSBjb21waWxlZCBhbmQKKyAgICAjIGxpbmtlZCBpbnRvIHRoZSBiaW5hcnkuIENvcnJlc3BvbmRpbmdseSwgZHRyYWNlKDEpIGlzIG1pc3NpbmcgdGhlIEVMRgorICAgICMgZ2VuZXJhdGlvbiBmbGFnICctRycuIFdlIGNoZWNrIGZvciBwcmVzZW5jZSBvZiB0aGlzIGZsYWcsIHJhdGhlciB0aGFuCisgICAgIyBoYXJkY29kaW5nIHN1cHBvcnQgYnkgT1MsIGluIHRoZSBpbnRlcmVzdCBvZiByb2J1c3RuZXNzLgorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBEVHJhY2UgcHJvYmVzIHJlcXVpcmUgbGlua2luZyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIERUcmFjZSBwcm9iZXMgcmVxdWlyZSBsaW5raW5nLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X2R0cmFjZV9saW5rKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgICAgICAgICAgICAgYWNfY3ZfZHRyYWNlX2xpbms9bm8KKyAgICAgICAgICAgIGVjaG8gJ0JFR0lOJyA+IGNvbmZ0ZXN0LmQKKyAgICAgICAgICAgICIkRFRSQUNFIiAtRyAtcyBjb25mdGVzdC5kIC1vIGNvbmZ0ZXN0Lm8gPiAvZGV2L251bGwgMj4mMSAmJiBcCisgICAgICAgICAgICAgICAgYWNfY3ZfZHRyYWNlX2xpbms9eWVzCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2R0cmFjZV9saW5rIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfZHRyYWNlX2xpbmsiID4mNjsgfQorICAgIGlmIHRlc3QgIiRhY19jdl9kdHJhY2VfbGluayIgPSAieWVzIjsgdGhlbgorICAgICAgICBEVFJBQ0VfT0JKUz0iUHl0aG9uL3B5ZHRyYWNlLm8iCisgICAgZmkKK2ZpCisKICMgLUkke0RMSU5DTERJUn0gaXMgYWRkZWQgdG8gdGhlIGNvbXBpbGUgcnVsZSBmb3IgaW1wb3J0ZGwubwogCiBETElOQ0xESVI9LgpAQCAtMTI2MTEsNiArMTI1NDgsNjQgQEAKIGRvbmUKIAogCitmb3IgYWNfZnVuYyBpbiBjbG9ja19zZXR0aW1lCitkbyA6CisgIGFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgImNsb2NrX3NldHRpbWUiICJhY19jdl9mdW5jX2Nsb2NrX3NldHRpbWUiCitpZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfY2xvY2tfc2V0dGltZSIgPSB4eWVzOyB0aGVuIDoKKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX0NMT0NLX1NFVFRJTUUgMQorX0FDRU9GCisKK2Vsc2UKKworICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGNsb2NrX3NldHRpbWUgaW4gLWxydCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgY2xvY2tfc2V0dGltZSBpbiAtbHJ0Li4uICIgPiY2OyB9CitpZiAke2FjX2N2X2xpYl9ydF9jbG9ja19zZXR0aW1lKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUworTElCUz0iLWxydCAgJExJQlMiCitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKy8qIE92ZXJyaWRlIGFueSBHQ0MgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLgorICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKK2NoYXIgY2xvY2tfc2V0dGltZSAoKTsKK2ludAorbWFpbiAoKQoreworcmV0dXJuIGNsb2NrX3NldHRpbWUgKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfbGliX3J0X2Nsb2NrX3NldHRpbWU9eWVzCitlbHNlCisgIGFjX2N2X2xpYl9ydF9jbG9ja19zZXR0aW1lPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl9ydF9jbG9ja19zZXR0aW1lIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfbGliX3J0X2Nsb2NrX3NldHRpbWUiID4mNjsgfQoraWYgdGVzdCAieCRhY19jdl9saWJfcnRfY2xvY2tfc2V0dGltZSIgPSB4eWVzOyB0aGVuIDoKKworICAgICAgICAkYXNfZWNobyAiI2RlZmluZSBIQVZFX0NMT0NLX1NFVFRJTUUgMSIgPj5jb25mZGVmcy5oCisKKworZmkKKworCitmaQorZG9uZQorCisKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIG1ham9yIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBtYWpvci4uLiAiID4mNjsgfQogY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dApAQCAtMTMwMjgsNiArMTMwMjMsMzMgQEAKIAogZmkKIAorYWNfZm5fY19jaGVja19tZW1iZXIgIiRMSU5FTk8iICJzdHJ1Y3QgcGFzc3dkIiAicHdfZ2Vjb3MiICJhY19jdl9tZW1iZXJfc3RydWN0X3Bhc3N3ZF9wd19nZWNvcyIgIgorICAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgICNpbmNsdWRlIDxwd2QuaD4KKworIgoraWYgdGVzdCAieCRhY19jdl9tZW1iZXJfc3RydWN0X3Bhc3N3ZF9wd19nZWNvcyIgPSB4eWVzOyB0aGVuIDoKKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX1NUUlVDVF9QQVNTV0RfUFdfR0VDT1MgMQorX0FDRU9GCisKKworZmkKK2FjX2ZuX2NfY2hlY2tfbWVtYmVyICIkTElORU5PIiAic3RydWN0IHBhc3N3ZCIgInB3X3Bhc3N3ZCIgImFjX2N2X21lbWJlcl9zdHJ1Y3RfcGFzc3dkX3B3X3Bhc3N3ZCIgIgorICAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgICNpbmNsdWRlIDxwd2QuaD4KKworIgoraWYgdGVzdCAieCRhY19jdl9tZW1iZXJfc3RydWN0X3Bhc3N3ZF9wd19wYXNzd2QiID0geHllczsgdGhlbiA6CisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9TVFJVQ1RfUEFTU1dEX1BXX1BBU1NXRCAxCitfQUNFT0YKKworCitmaQorCiAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHRpbWUuaCB0aGF0IGRlZmluZXMgYWx0em9uZSIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgdGltZS5oIHRoYXQgZGVmaW5lcyBhbHR6b25lLi4uICIgPiY2OyB9CkBAIC0xMzE1OSw2ICsxMzE4MSw0MSBAQAogCiBmaQogCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzb2NrYWRkcl9hbGciID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHNvY2thZGRyX2FsZy4uLiAiID4mNjsgfQoraWYgJHthY19jdl9zdHJ1Y3Rfc29ja2FkZHJfYWxnKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisjCQlpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyMJCWluY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyMJCWluY2x1ZGUgPGxpbnV4L2lmX2FsZy5oPgoraW50CittYWluICgpCit7CitzdHJ1Y3Qgc29ja2FkZHJfYWxnIHMKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9zdHJ1Y3Rfc29ja2FkZHJfYWxnPXllcworZWxzZQorICBhY19jdl9zdHJ1Y3Rfc29ja2FkZHJfYWxnPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X3N0cnVjdF9zb2NrYWRkcl9hbGciID4mNQorJGFzX2VjaG8gIiRhY19jdl9zdHJ1Y3Rfc29ja2FkZHJfYWxnIiA+JjY7IH0KK2lmIHRlc3QgJGFjX2N2X3N0cnVjdF9zb2NrYWRkcl9hbGcgPSB5ZXM7IHRoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9TT0NLQUREUl9BTEcgMSIgPj5jb25mZGVmcy5oCisKK2ZpCisKICMgY2hlY2tzIGZvciBjb21waWxlciBjaGFyYWN0ZXJpc3RpY3MKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIGNoYXIgaXMgdW5zaWduZWQiID4mNQpAQCAtMTM0NDcsNDAgKzEzNTA0LDYgQEAKIGZpCiBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKIAotdmFfbGlzdF9pc19hcnJheT1ubwoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHZhX2xpc3QgaXMgYW4gYXJyYXkiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB2YV9saXN0IGlzIGFuIGFycmF5Li4uICIgPiY2OyB9Ci1jYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0KLSNpZmRlZiBIQVZFX1NUREFSR19QUk9UT1RZUEVTCi0jaW5jbHVkZSA8c3RkYXJnLmg+Ci0jZWxzZQotI2luY2x1ZGUgPHZhcmFyZ3MuaD4KLSNlbmRpZgotCi1pbnQKLW1haW4gKCkKLXsKLXZhX2xpc3QgbGlzdDEsIGxpc3QyOyBsaXN0MSA9IGxpc3QyOwotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0KLWVsc2UKLQotCi0kYXNfZWNobyAiI2RlZmluZSBWQV9MSVNUX0lTX0FSUkFZIDEiID4+Y29uZmRlZnMuaAotCi0gdmFfbGlzdF9pc19hcnJheT15ZXMKLQotZmkKLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR2YV9saXN0X2lzX2FycmF5IiA+JjUKLSRhc19lY2hvICIkdmFfbGlzdF9pc19hcnJheSIgPiY2OyB9Ci0KICMgc2lnaCAtLSBnZXRob3N0YnluYW1lX3IgaXMgYSBtZXNzOyBpdCBjYW4gaGF2ZSAzLCA1IG9yIDYgYXJndW1lbnRzIDotKAogCiAKQEAgLTE0MzM4LDYgKzE0MzYxLDg1IEBACiAKIGZpCiAKK2FjX2ZuX2NfY2hlY2tfZGVjbCAiJExJTkVOTyIgIlJUTERfTEFaWSIgImFjX2N2X2hhdmVfZGVjbF9SVExEX0xBWlkiICIjaW5jbHVkZSA8ZGxmY24uaD4KKyIKK2lmIHRlc3QgIngkYWNfY3ZfaGF2ZV9kZWNsX1JUTERfTEFaWSIgPSB4eWVzOyB0aGVuIDoKKyAgYWNfaGF2ZV9kZWNsPTEKK2Vsc2UKKyAgYWNfaGF2ZV9kZWNsPTAKK2ZpCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9ERUNMX1JUTERfTEFaWSAkYWNfaGF2ZV9kZWNsCitfQUNFT0YKK2FjX2ZuX2NfY2hlY2tfZGVjbCAiJExJTkVOTyIgIlJUTERfTk9XIiAiYWNfY3ZfaGF2ZV9kZWNsX1JUTERfTk9XIiAiI2luY2x1ZGUgPGRsZmNuLmg+CisiCitpZiB0ZXN0ICJ4JGFjX2N2X2hhdmVfZGVjbF9SVExEX05PVyIgPSB4eWVzOyB0aGVuIDoKKyAgYWNfaGF2ZV9kZWNsPTEKK2Vsc2UKKyAgYWNfaGF2ZV9kZWNsPTAKK2ZpCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9ERUNMX1JUTERfTk9XICRhY19oYXZlX2RlY2wKK19BQ0VPRgorYWNfZm5fY19jaGVja19kZWNsICIkTElORU5PIiAiUlRMRF9HTE9CQUwiICJhY19jdl9oYXZlX2RlY2xfUlRMRF9HTE9CQUwiICIjaW5jbHVkZSA8ZGxmY24uaD4KKyIKK2lmIHRlc3QgIngkYWNfY3ZfaGF2ZV9kZWNsX1JUTERfR0xPQkFMIiA9IHh5ZXM7IHRoZW4gOgorICBhY19oYXZlX2RlY2w9MQorZWxzZQorICBhY19oYXZlX2RlY2w9MAorZmkKKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX0RFQ0xfUlRMRF9HTE9CQUwgJGFjX2hhdmVfZGVjbAorX0FDRU9GCithY19mbl9jX2NoZWNrX2RlY2wgIiRMSU5FTk8iICJSVExEX0xPQ0FMIiAiYWNfY3ZfaGF2ZV9kZWNsX1JUTERfTE9DQUwiICIjaW5jbHVkZSA8ZGxmY24uaD4KKyIKK2lmIHRlc3QgIngkYWNfY3ZfaGF2ZV9kZWNsX1JUTERfTE9DQUwiID0geHllczsgdGhlbiA6CisgIGFjX2hhdmVfZGVjbD0xCitlbHNlCisgIGFjX2hhdmVfZGVjbD0wCitmaQorCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIEhBVkVfREVDTF9SVExEX0xPQ0FMICRhY19oYXZlX2RlY2wKK19BQ0VPRgorYWNfZm5fY19jaGVja19kZWNsICIkTElORU5PIiAiUlRMRF9OT0RFTEVURSIgImFjX2N2X2hhdmVfZGVjbF9SVExEX05PREVMRVRFIiAiI2luY2x1ZGUgPGRsZmNuLmg+CisiCitpZiB0ZXN0ICJ4JGFjX2N2X2hhdmVfZGVjbF9SVExEX05PREVMRVRFIiA9IHh5ZXM7IHRoZW4gOgorICBhY19oYXZlX2RlY2w9MQorZWxzZQorICBhY19oYXZlX2RlY2w9MAorZmkKKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX0RFQ0xfUlRMRF9OT0RFTEVURSAkYWNfaGF2ZV9kZWNsCitfQUNFT0YKK2FjX2ZuX2NfY2hlY2tfZGVjbCAiJExJTkVOTyIgIlJUTERfTk9MT0FEIiAiYWNfY3ZfaGF2ZV9kZWNsX1JUTERfTk9MT0FEIiAiI2luY2x1ZGUgPGRsZmNuLmg+CisiCitpZiB0ZXN0ICJ4JGFjX2N2X2hhdmVfZGVjbF9SVExEX05PTE9BRCIgPSB4eWVzOyB0aGVuIDoKKyAgYWNfaGF2ZV9kZWNsPTEKK2Vsc2UKKyAgYWNfaGF2ZV9kZWNsPTAKK2ZpCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9ERUNMX1JUTERfTk9MT0FEICRhY19oYXZlX2RlY2wKK19BQ0VPRgorYWNfZm5fY19jaGVja19kZWNsICIkTElORU5PIiAiUlRMRF9ERUVQQklORCIgImFjX2N2X2hhdmVfZGVjbF9SVExEX0RFRVBCSU5EIiAiI2luY2x1ZGUgPGRsZmNuLmg+CisiCitpZiB0ZXN0ICJ4JGFjX2N2X2hhdmVfZGVjbF9SVExEX0RFRVBCSU5EIiA9IHh5ZXM7IHRoZW4gOgorICBhY19oYXZlX2RlY2w9MQorZWxzZQorICBhY19oYXZlX2RlY2w9MAorZmkKKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX0RFQ0xfUlRMRF9ERUVQQklORCAkYWNfaGF2ZV9kZWNsCitfQUNFT0YKKworCiAjIGRldGVybWluZSB3aGF0IHNpemUgZGlnaXQgdG8gdXNlIGZvciBQeXRob24ncyBsb25ncwogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBkaWdpdCBzaXplIGZvciBQeXRob24ncyBsb25ncyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBkaWdpdCBzaXplIGZvciBQeXRob24ncyBsb25ncy4uLiAiID4mNjsgfQpAQCAtMTQ3NzEsNyArMTQ4NzMsMTEgQEAKICRhc19lY2hvICIkTERWRVJTSU9OIiA+JjY7IH0KIAogCi1MSUJQTD0nJChwcmVmaXgpJyIvbGliL3B5dGhvbiR7VkVSU0lPTn0vY29uZmlnLSR7TERWRVJTSU9OfSIKK2lmIHRlc3QgeCRQTEFURk9STV9UUklQTEVUID0geDsgdGhlbgorICBMSUJQTD0nJChwcmVmaXgpJyIvbGliL3B5dGhvbiR7VkVSU0lPTn0vY29uZmlnLSR7TERWRVJTSU9OfSIKK2Vsc2UKKyAgTElCUEw9JyQocHJlZml4KSciL2xpYi9weXRob24ke1ZFUlNJT059L2NvbmZpZy0ke0xEVkVSU0lPTn0tJHtQTEFURk9STV9UUklQTEVUfSIKK2ZpCiAKIAogIyBDaGVjayB3aGV0aGVyIHJpZ2h0IHNoaWZ0aW5nIGEgbmVnYXRpdmUgaW50ZWdlciBleHRlbmRzIHRoZSBzaWduIGJpdApAQCAtMTU1ODQsNyArMTU2OTAsOSBAQAogCiAjIGZpcnN0IGN1cnNlcyBoZWFkZXIgY2hlY2sKIGFjX3NhdmVfY3BwZmxhZ3M9IiRDUFBGTEFHUyIKLUNQUEZMQUdTPSIkQ1BQRkxBR1MgLUkvdXNyL2luY2x1ZGUvbmN1cnNlc3ciCitpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IG5vOyB0aGVuCisgIENQUEZMQUdTPSIkQ1BQRkxBR1MgLUkvdXNyL2luY2x1ZGUvbmN1cnNlc3ciCitmaQogCiBmb3IgYWNfaGVhZGVyIGluIGN1cnNlcy5oIG5jdXJzZXMuaAogZG8gOgpAQCAtMTU4NDQsMTAyICsxNTk1Miw2IEBACiAKIGZpCiAKLWlmIHRlc3QgIiRoYXZlX2xvbmdfbG9uZyIgPSB5ZXMKLXRoZW4KLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJWxsZCBhbmQgJWxsdSBwcmludGYoKSBmb3JtYXQgc3VwcG9ydCIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJWxsZCBhbmQgJWxsdSBwcmludGYoKSBmb3JtYXQgc3VwcG9ydC4uLiAiID4mNjsgfQotICBpZiAke2FjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdCs6fSBmYWxzZTsgdGhlbiA6Ci0gICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuIDoKLSAgYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0PSJjcm9zcyAtLSBhc3N1bWluZyBubyIKLSAgIGlmIHRlc3QgeCRHQ0MgPSB4eWVzOyB0aGVuCi0gICAgc2F2ZV9DRkxBR1M9JENGTEFHUwotICAgIENGTEFHUz0iJENGTEFHUyAtV2Vycm9yIC1XZm9ybWF0IgotICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLQotICAgICAgICAjaW5jbHVkZSA8c3RkaW8uaD4KLSAgICAgICAgI2luY2x1ZGUgPHN0ZGRlZi5oPgotCi1pbnQKLW1haW4gKCkKLXsKLQotICAgICAgY2hhciAqYnVmZmVyOwotICAgICAgc3ByaW50ZihidWZmZXIsICIlbGxkIiwgKGxvbmcgbG9uZykxMjMpOwotICAgICAgc3ByaW50ZihidWZmZXIsICIlbGxkIiwgKGxvbmcgbG9uZyktMTIzKTsKLSAgICAgIHNwcmludGYoYnVmZmVyLCAiJWxsdSIsICh1bnNpZ25lZCBsb25nIGxvbmcpMTIzKTsKLQotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0gIGFjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdD15ZXMKLQotZmkKLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotICAgIENGTEFHUz0kc2F2ZV9DRkxBR1MKLSAgIGZpCi1lbHNlCi0gIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLQotICAjaW5jbHVkZSA8c3RkaW8uaD4KLSAgI2luY2x1ZGUgPHN0ZGRlZi5oPgotICAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0KLSAgI2lmZGVmIEhBVkVfU1lTX1RZUEVTX0gKLSAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICAjZW5kaWYKLQotICBpbnQgbWFpbigpCi0gIHsKLSAgICAgIGNoYXIgYnVmZmVyWzI1Nl07Ci0KLSAgICAgIGlmIChzcHJpbnRmKGJ1ZmZlciwgIiVsbGQiLCAobG9uZyBsb25nKTEyMykgPCAwKQotICAgICAgICAgIHJldHVybiAxOwotICAgICAgaWYgKHN0cmNtcChidWZmZXIsICIxMjMiKSkKLSAgICAgICAgICByZXR1cm4gMTsKLQotICAgICAgaWYgKHNwcmludGYoYnVmZmVyLCAiJWxsZCIsIChsb25nIGxvbmcpLTEyMykgPCAwKQotICAgICAgICAgIHJldHVybiAxOwotICAgICAgaWYgKHN0cmNtcChidWZmZXIsICItMTIzIikpCi0gICAgICAgICAgcmV0dXJuIDE7Ci0KLSAgICAgIGlmIChzcHJpbnRmKGJ1ZmZlciwgIiVsbHUiLCAodW5zaWduZWQgbG9uZyBsb25nKTEyMykgPCAwKQotICAgICAgICAgIHJldHVybiAxOwotICAgICAgaWYgKHN0cmNtcChidWZmZXIsICIxMjMiKSkKLSAgICAgICAgICByZXR1cm4gMTsKLQotICAgICAgcmV0dXJuIDA7Ci0gIH0KLQotX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKLSAgYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0PXllcwotZWxzZQotICBhY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQ9bm8KLWZpCi1ybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCi0gIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0Ci1maQotCi0KLWZpCi0KLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQiID4mNQotJGFzX2VjaG8gIiRhY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQiID4mNjsgfQotZmkKLQotaWYgdGVzdCAiJGFjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdCIgPSB5ZXMKLXRoZW4KLQotJGFzX2VjaG8gIiNkZWZpbmUgUFlfRk9STUFUX0xPTkdfTE9ORyBcImxsXCIiID4+Y29uZmRlZnMuaAotCi1maQotCiBpZiB0ZXN0ICRhY19zeXNfc3lzdGVtID0gRGFyd2luCiB0aGVuCiAJTElCUz0iJExJQlMgLWZyYW1ld29yayBDb3JlRm91bmRhdGlvbiIKQEAgLTE3MDEzLDcgKzE3MDI1LDcgQEAKICMgcmVwb3J0IGFjdHVhbCBpbnB1dCB2YWx1ZXMgb2YgQ09ORklHX0ZJTEVTIGV0Yy4gaW5zdGVhZCBvZiB0aGVpcgogIyB2YWx1ZXMgYWZ0ZXIgb3B0aW9ucyBoYW5kbGluZy4KIGFjX2xvZz0iCi1UaGlzIGZpbGUgd2FzIGV4dGVuZGVkIGJ5IHB5dGhvbiAkYXNfbWUgMy41LCB3aGljaCB3YXMKK1RoaXMgZmlsZSB3YXMgZXh0ZW5kZWQgYnkgcHl0aG9uICRhc19tZSAzLjYsIHdoaWNoIHdhcwogZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY5LiAgSW52b2NhdGlvbiBjb21tYW5kIGxpbmUgd2FzCiAKICAgQ09ORklHX0ZJTEVTICAgID0gJENPTkZJR19GSUxFUwpAQCAtMTcwNzUsNyArMTcwODcsNyBAQAogY2F0ID4+JENPTkZJR19TVEFUVVMgPDxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCiBhY19jc19jb25maWc9ImAkYXNfZWNobyAiJGFjX2NvbmZpZ3VyZV9hcmdzIiB8IHNlZCAncy9eIC8vOyBzL1tcXCIiXGBcJF0vXFxcXCYvZydgIgogYWNfY3NfdmVyc2lvbj0iXFwKLXB5dGhvbiBjb25maWcuc3RhdHVzIDMuNQorcHl0aG9uIGNvbmZpZy5zdGF0dXMgMy42CiBjb25maWd1cmVkIGJ5ICQwLCBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjksCiAgIHdpdGggb3B0aW9ucyBcXCJcJGFjX2NzX2NvbmZpZ1xcIgogCkBAIC0xNzgyNyw3ICsxNzgzOSw3IEBACiBpZiB0ZXN0ICIkUHlfT1BUIiA9ICdmYWxzZScgLWEgIiRQeV9ERUJVRyIgIT0gJ3RydWUnOyB0aGVuCiAgICAgZWNobyAiIiA+JjYKICAgICBlY2hvICIiID4mNgotICAgIGVjaG8gIklmIHlvdSB3YW50IGEgcmVsZWFzZSBidWlsZCB3aXRoIGFsbCBvcHRpbWl6YXRpb25zIGFjdGl2ZSAoTFRPLCBQR08sIGV0YyksIgorICAgIGVjaG8gIklmIHlvdSB3YW50IGEgcmVsZWFzZSBidWlsZCB3aXRoIGFsbCBvcHRpbWl6YXRpb25zIGFjdGl2ZSAoTFRPLCBQR08sIGV0YyksIiA+JjYKICAgICBlY2hvICJwbGVhc2UgcnVuIC4vY29uZmlndXJlIC0tZW5hYmxlLW9wdGltaXphdGlvbnMiID4mNgogICAgIGVjaG8gIiIgPiY2CiAgICAgZWNobyAiIiA+JjYKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCA0OWQxYTM3Li45MDEzYzBlIDEwMDY0NAotLS0gYS9jb25maWd1cmUuYWMKKysrIGIvY29uZmlndXJlLmFjCkBAIC0zLDcgKzMsNyBAQAogZG5sICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAKICMgU2V0IFZFUlNJT04gc28gd2Ugb25seSBuZWVkIHRvIGVkaXQgaW4gb25lIHBsYWNlIChpLmUuLCBoZXJlKQotbTRfZGVmaW5lKFBZVEhPTl9WRVJTSU9OLCAzLjUpCittNF9kZWZpbmUoUFlUSE9OX1ZFUlNJT04sIDMuNikKIAogQUNfUFJFUkVRKDIuNjUpCiAKQEAgLTY5LDcgKzY5LDcgQEAKICAgICBpZiB0ZXN0IC16ICIkUFlUSE9OX0ZPUl9CVUlMRCI7IHRoZW4KICAgICAgICAgZm9yIGludGVycCBpbiBweXRob24kUEFDS0FHRV9WRVJTSU9OIHB5dGhvbjMgcHl0aG9uOyBkbwogCSAgICB3aGljaCAkaW50ZXJwID4vZGV2L251bGwgMj4mMSB8fCBjb250aW51ZQotCSAgICBpZiAkaW50ZXJwIC1jICdpbXBvcnQgc3lzO3N5cy5leGl0KG5vdCBzeXMudmVyc2lvbl9pbmZvQDw6QDoyQDo+QCA+PSAoMywzKSknOyB0aGVuCisJICAgIGlmICRpbnRlcnAgLWMgImltcG9ydCBzeXM7c3lzLmV4aXQobm90ICcuJy5qb2luKHN0cihuKSBmb3IgbiBpbiBzeXMudmVyc2lvbl9pbmZvQDw6QDoyQDo+QCkgPT0gJyRQQUNLQUdFX1ZFUlNJT04nKSI7IHRoZW4KIAkgICAgICAgIGJyZWFrCiAJICAgIGZpCiAgICAgICAgICAgICBpbnRlcnA9CkBAIC03OCw3ICs3OCw3IEBACiAJICAgIEFDX01TR19FUlJPUihbcHl0aG9uJFBBQ0tBR0VfVkVSU0lPTiBpbnRlcnByZXRlciBub3QgZm91bmRdKQogCWZpCiAgICAgICAgIEFDX01TR19SRVNVTFQoJGludGVycCkKLQlQWVRIT05fRk9SX0JVSUxEPSdfUFlUSE9OX1BST0pFQ1RfQkFTRT0kKGFic19idWlsZGRpcikgX1BZVEhPTl9IT1NUX1BMQVRGT1JNPSQoX1BZVEhPTl9IT1NUX1BMQVRGT1JNKSBQWVRIT05QQVRIPSQoc2hlbGwgdGVzdCAtZiBweWJ1aWxkZGlyLnR4dCAmJiBlY2hvICQoYWJzX2J1aWxkZGlyKS9gY2F0IHB5YnVpbGRkaXIudHh0YDopJChzcmNkaXIpL0xpYjokKHNyY2RpcikvTGliLyQoUExBVERJUikgJyRpbnRlcnAKKwlQWVRIT05fRk9SX0JVSUxEPSdfUFlUSE9OX1BST0pFQ1RfQkFTRT0kKGFic19idWlsZGRpcikgX1BZVEhPTl9IT1NUX1BMQVRGT1JNPSQoX1BZVEhPTl9IT1NUX1BMQVRGT1JNKSBQWVRIT05QQVRIPSQoc2hlbGwgdGVzdCAtZiBweWJ1aWxkZGlyLnR4dCAmJiBlY2hvICQoYWJzX2J1aWxkZGlyKS9gY2F0IHB5YnVpbGRkaXIudHh0YDopJChzcmNkaXIpL0xpYiBfUFlUSE9OX1NZU0NPTkZJR0RBVEFfTkFNRT1fc3lzY29uZmlnZGF0YV8kKEFCSUZMQUdTKV8kKE1BQ0hERVApXyQoTVVMVElBUkNIKSAnJGludGVycAogICAgIGZpCiAgICAgIyBVc2VkIHRvIGNvbW1lbnQgb3V0IHN0dWZmIGZvciByZWJ1aWxkaW5nIGdlbmVyYXRlZCBmaWxlcwogICAgIEdFTkVSQVRFRF9DT01NRU5UPScjJwpAQCAtNjk0LDYgKzY5NCw3IEBACiBBQ19QUk9HX0NDCiBBQ19QUk9HX0NQUAogQUNfUFJPR19HUkVQCitBQ19QUk9HX1NFRAogCiBBQ19TVUJTVChDWFgpCiBBQ19TVUJTVChNQUlOQ0MpCkBAIC03NjgsNyArNzY5LDkgQEAKICN1bmRlZiBwb3dlcnBjCiAjdW5kZWYgc3BhcmMKICN1bmRlZiB1bml4Ci0jaWYgZGVmaW5lZChfX2xpbnV4X18pCisjaWYgZGVmaW5lZChfX0FORFJPSURfXykKKyAgICAjIEFuZHJvaWQgaXMgbm90IGEgbXVsdGlhcmNoIHN5c3RlbS4KKyNlbGlmIGRlZmluZWQoX19saW51eF9fKQogIyBpZiBkZWZpbmVkKF9feDg2XzY0X18pICYmIGRlZmluZWQoX19MUDY0X18pCiAgICAgICAgIHg4Nl82NC1saW51eC1nbnUKICMgZWxpZiBkZWZpbmVkKF9feDg2XzY0X18pICYmIGRlZmluZWQoX19JTFAzMl9fKQpAQCAtODgyLDExICs4ODUsMTQgQEAKICAgaWYgdGVzdCB4JFBMQVRGT1JNX1RSSVBMRVQgIT0geCRNVUxUSUFSQ0g7IHRoZW4KICAgICBBQ19NU0dfRVJST1IoW2ludGVybmFsIGNvbmZpZ3VyZSBlcnJvciBmb3IgdGhlIHBsYXRmb3JtIHRyaXBsZXQsIHBsZWFzZSBmaWxlIGEgYnVnIHJlcG9ydF0pCiAgIGZpCitlbGlmIHRlc3QgeCRQTEFURk9STV9UUklQTEVUICE9IHggJiYgdGVzdCB4JE1VTFRJQVJDSCA9IHg7IHRoZW4KKyAgTVVMVElBUkNIPSRQTEFURk9STV9UUklQTEVUCiBmaQotUExBVERJUj1wbGF0LSRNQUNIREVQCi1BQ19TVUJTVChQTEFURElSKQogQUNfU1VCU1QoUExBVEZPUk1fVFJJUExFVCkKLQoraWYgdGVzdCB4JE1VTFRJQVJDSCAhPSB4OyB0aGVuCisgIE1VTFRJQVJDSF9DUFBGTEFHUz0iLURNVUxUSUFSQ0g9XFxcIiRNVUxUSUFSQ0hcXFwiIgorZmkKK0FDX1NVQlNUKE1VTFRJQVJDSF9DUFBGTEFHUykKIAogQUNfTVNHX0NIRUNLSU5HKFtmb3IgLVdsLC0tbm8tYXMtbmVlZGVkXSkKIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCkBAIC05MDMsNiArOTA5LDI1IEBACiAjIGNoZWNrcyBmb3IgVU5JWCB2YXJpYW50cyB0aGF0IHNldCBDIHByZXByb2Nlc3NvciB2YXJpYWJsZXMKIEFDX1VTRV9TWVNURU1fRVhURU5TSU9OUwogCitBQ19NU0dfQ0hFQ0tJTkcoW2ZvciB0aGUgQW5kcm9pZCBBUEkgbGV2ZWxdKQorY2F0ID4+IGNvbmZ0ZXN0LmMgPDxFT0YKKyNpZmRlZiBfX0FORFJPSURfXworI2luY2x1ZGUgPGFuZHJvaWQvYXBpLWxldmVsLmg+CitfX0FORFJPSURfQVBJX18KKyNlbHNlCisjZXJyb3Igbm90IEFuZHJvaWQKKyNlbmRpZgorRU9GCisKK2lmICRDUFAgJENQUEZMQUdTIGNvbmZ0ZXN0LmMgPmNvbmZ0ZXN0Lm91dCAyPi9kZXYvbnVsbDsgdGhlbgorICBBTkRST0lEX0FQSV9MRVZFTD1gZ3JlcCAtdiAnXiMnIGNvbmZ0ZXN0Lm91dCB8IGdyZXAgLXYgJ14gKiQnYAorICBBQ19NU0dfUkVTVUxUKFskQU5EUk9JRF9BUElfTEVWRUxdKQorICBBQ19ERUZJTkVfVU5RVU9URUQoQU5EUk9JRF9BUElfTEVWRUwsICRBTkRST0lEX0FQSV9MRVZFTCwgW1RoZSBBbmRyb2lkIEFQSSBsZXZlbC5dKQorZWxzZQorICBBQ19NU0dfUkVTVUxUKFtub3QgQW5kcm9pZF0pCitmaQorcm0gLWYgY29uZnRlc3QuYyBjb25mdGVzdC5vdXQKKwogIyBDaGVjayBmb3IgdW5zdXBwb3J0ZWQgc3lzdGVtcwogY2FzZSAkYWNfc3lzX3N5c3RlbS8kYWNfc3lzX3JlbGVhc2UgaW4KIGF0aGVvcyp8TGludXgqLzEqKQpAQCAtMTIzNSw3ICsxMjYwLDcgQEAKIEFDX1NVQlNUKERFRl9NQUtFX1JVTEUpCiBQeV9PUFQ9J2ZhbHNlJwogQUNfTVNHX0NIRUNLSU5HKGZvciAtLWVuYWJsZS1vcHRpbWl6YXRpb25zKQotQUNfQVJHX0VOQUJMRShvcHRpbWl6YXRpb25zLCBBU19IRUxQX1NUUklORyhbLS1lbmFibGUtb3B0aW1pemF0aW9uc10sIFtFbmFibGUgZXhwZW5zaXZlIG9wdGltaXphdGlvbnMgKFBHTywgbWF5YmUgTFRPLCBldGMpLiAgRGlzYWJsZWQgYnkgZGVmYXVsdC5dKSwKK0FDX0FSR19FTkFCTEUob3B0aW1pemF0aW9ucywgQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLW9wdGltaXphdGlvbnNdLCBbRW5hYmxlIGV4cGVuc2l2ZSBvcHRpbWl6YXRpb25zIChQR08sIGV0YykuICBEaXNhYmxlZCBieSBkZWZhdWx0Ll0pLAogWwogaWYgdGVzdCAiJHdpdGh2YWwiICE9IG5vCiB0aGVuCkBAIC0xMjQ5LDcgKzEyNzQsNyBAQAogaWYgdGVzdCAiJFB5X09QVCIgPSAndHJ1ZScgOyB0aGVuCiAgICMgSW50ZW50aW9uYWxseSBub3QgZm9yY2luZyBQeV9MVE89J3RydWUnIGhlcmUuICBUb28gbWFueSB0b29sY2hhaW5zIGRvIG5vdAogICAjIGNvbXBpbGUgd29ya2luZyBjb2RlIHVzaW5nIGl0IGFuZCBib3RoIHRlc3RfZGlzdHV0aWxzIGFuZCB0ZXN0X2dkYiBhcmUKLSAgIyBicm9rZW4gd2hlbiB5b3UgZG8gbWFuYWdlZCB0byBnZXQgYSB0b29sY2hhaW4gdGhhdCB3b3JrcyB3aXRoIGl0LiAgUGVvcGxlCisgICMgYnJva2VuIHdoZW4geW91IGRvIG1hbmFnZSB0byBnZXQgYSB0b29sY2hhaW4gdGhhdCB3b3JrcyB3aXRoIGl0LiAgUGVvcGxlCiAgICMgd2hvIHdhbnQgTFRPIG5lZWQgdG8gdXNlIC0td2l0aC1sdG8gdGhlbXNlbHZlcy4KICAgREVGX01BS0VfQUxMX1JVTEU9InByb2ZpbGUtb3B0IgogICBSRVFVSVJFX1BHTz0ieWVzIgpAQCAtMTI3NywxMyArMTMwMiwyMCBAQAogaWYgdGVzdCAiJFB5X0xUTyIgPSAndHJ1ZScgOyB0aGVuCiAgIGNhc2UgJENDIGluCiAgICAgKmNsYW5nKikKLSAgICAgICMgQW55IGNoYW5nZXMgbWFkZSBoZXJlIHNob3VsZCBiZSByZWZsZWN0ZWQgaW4gdGhlIEdDQytEYXJ3aW4gY2FzZSBiZWxvdwotICAgICAgTFRPRkxBR1M9Ii1mbHRvIgorICAgICAgY2FzZSAkYWNfc3lzX3N5c3RlbSBpbgorICAgICAgICBEYXJ3aW4qKQorICAgICAgICAgICMgQW55IGNoYW5nZXMgbWFkZSBoZXJlIHNob3VsZCBiZSByZWZsZWN0ZWQgaW4gdGhlIEdDQytEYXJ3aW4gY2FzZSBiZWxvdworICAgICAgICAgIExUT0ZMQUdTPSItZmx0byAtV2wsLWV4cG9ydF9keW5hbWljIgorICAgICAgICAgIDs7CisgICAgICAgICopCisgICAgICAgICAgTFRPRkxBR1M9Ii1mbHRvIgorICAgICAgICAgIDs7CisgICAgICBlc2FjCiAgICAgICA7OwogICAgICpnY2MqKQogICAgICAgY2FzZSAkYWNfc3lzX3N5c3RlbSBpbgogICAgICAgICBEYXJ3aW4qKQotICAgICAgICAgIExUT0ZMQUdTPSItZmx0byIKKyAgICAgICAgICBMVE9GTEFHUz0iLWZsdG8gLVdsLC1leHBvcnRfZHluYW1pYyIKICAgICAgICAgICA7OwogICAgICAgICAqKQogICAgICAgICAgIExUT0ZMQUdTPSItZmx0byAtZnVzZS1saW5rZXItcGx1Z2luIC1mZmF0LWx0by1vYmplY3RzIC1mbHRvLXBhcnRpdGlvbj1ub25lIgpAQCAtMTQ2MSw2ICsxNDkzLDI4IEBACiAjIHR3ZWFrIEJBU0VDRkxBR1MgYmFzZWQgb24gY29tcGlsZXIgYW5kIHBsYXRmb3JtCiBjYXNlICRHQ0MgaW4KIHllcykKKyAgICBDRkxBR1NfTk9ESVNUPSIkQ0ZMQUdTX05PRElTVCAtc3RkPWM5OSIKKworICAgIEFDX01TR19DSEVDS0lORyhmb3IgLVdleHRyYSkKKyAgICAgYWNfc2F2ZV9jYz0iJENDIgorICAgICBDQz0iJENDIC1XZXh0cmEgLVdlcnJvciIKKyAgICAgQUNfQ0FDSEVfVkFMKGFjX2N2X2V4dHJhX3dhcm5pbmdzLAorICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgWworICAgICAgICAgICBBQ19MQU5HX1BST0dSQU0oW1tdXSwgW1tdXSkKKyAgICAgICAgIF0sWworICAgICAgICAgICBhY19jdl9leHRyYV93YXJuaW5ncz15ZXMKKyAgICAgICAgIF0sWworICAgICAgICAgICBhY19jdl9leHRyYV93YXJuaW5ncz1ubworICAgICAgICAgXSkpCisgICAgIENDPSIkYWNfc2F2ZV9jYyIKKyAgICBBQ19NU0dfUkVTVUxUKCRhY19jdl9leHRyYV93YXJuaW5ncykKKworICAgIGlmIHRlc3QgJGFjX2N2X2V4dHJhX3dhcm5pbmdzID0geWVzCisgICAgdGhlbgorICAgICAgQ0ZMQUdTX05PRElTVD0iJENGTEFHU19OT0RJU1QgLVdleHRyYSIKKyAgICBmaQorCiAgICAgIyBQeXRob24gZG9lc24ndCB2aW9sYXRlIEM5OSBhbGlhc2luZyBydWxlcywgYnV0IG9sZGVyIHZlcnNpb25zIG9mCiAgICAgIyBHQ0MgcHJvZHVjZSB3YXJuaW5ncyBmb3IgbGVnYWwgUHl0aG9uIGNvZGUuICBFbmFibGUKICAgICAjIC1mbm8tc3RyaWN0LWFsaWFzaW5nIG9uIHZlcnNpb25zIG9mIEdDQyB0aGF0IHN1cHBvcnQgYnV0IHByb2R1Y2UKQEAgLTE1MjUsMjggKzE1NzksNDcgQEAKICAgICBpZiB0ZXN0ICRhY19jdl9kaXNhYmxlX3VudXNlZF9yZXN1bHRfd2FybmluZyA9IHllcwogICAgIHRoZW4KICAgICAgIEJBU0VDRkxBR1M9IiRCQVNFQ0ZMQUdTIC1Xbm8tdW51c2VkLXJlc3VsdCIKKyAgICAgIENGTEFHU19OT0RJU1Q9IiRDRkxBR1NfTk9ESVNUIC1Xbm8tdW51c2VkLXJlc3VsdCIKICAgICBmaQogCi0gICAgQUNfTVNHX0NIRUNLSU5HKGZvciAtV2Vycm9yPWRlY2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudCkKKyAgICBBQ19NU0dfQ0hFQ0tJTkcoaWYgd2UgY2FuIHR1cm4gb2ZmICRDQyB1bnVzZWQgcGFyYW1ldGVyIHdhcm5pbmcpCiAgICAgIGFjX3NhdmVfY2M9IiRDQyIKLSAgICAgQ0M9IiRDQyAtV2Vycm9yPWRlY2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudCIKLSAgICAgc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCi0gICAgIEFDX0NBQ0hFX1ZBTChhY19jdl9kZWNsYXJhdGlvbl9hZnRlcl9zdGF0ZW1lbnRfd2FybmluZywKKyAgICAgQ0M9IiRDQyAtV3VudXNlZC1wYXJhbWV0ZXIgLVdlcnJvciIKKyAgICAgQUNfQ0FDSEVfVkFMKGFjX2N2X2Rpc2FibGVfdW51c2VkX3BhcmFtZXRlcl93YXJuaW5nLAogICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAogICAgICAgICAgWwotCSAgIEFDX0xBTkdfUFJPR1JBTShbW11dLCBbW11dKQotCSBdLFsKLSAgICAgICAgICAgYWNfY3ZfZGVjbGFyYXRpb25fYWZ0ZXJfc3RhdGVtZW50X3dhcm5pbmc9eWVzCi0JIF0sWwotICAgICAgICAgICBhY19jdl9kZWNsYXJhdGlvbl9hZnRlcl9zdGF0ZW1lbnRfd2FybmluZz1ubwotCSBdKSkKLSAgICAgQ0ZMQUdTPSIkc2F2ZV9DRkxBR1MiCisgICAgICAgICAgIEFDX0xBTkdfUFJPR1JBTShbW11dLCBbW11dKQorICAgICAgICAgXSxbCisgICAgICAgICAgIGFjX2N2X2Rpc2FibGVfdW51c2VkX3BhcmFtZXRlcl93YXJuaW5nPXllcworICAgICAgICAgXSxbCisgICAgICAgICAgIGFjX2N2X2Rpc2FibGVfdW51c2VkX3BhcmFtZXRlcl93YXJuaW5nPW5vCisgICAgICAgICBdKSkKICAgICAgQ0M9IiRhY19zYXZlX2NjIgotICAgIEFDX01TR19SRVNVTFQoJGFjX2N2X2RlY2xhcmF0aW9uX2FmdGVyX3N0YXRlbWVudF93YXJuaW5nKQorICAgIEFDX01TR19SRVNVTFQoJGFjX2N2X2Rpc2FibGVfdW51c2VkX3BhcmFtZXRlcl93YXJuaW5nKQogCi0gICAgaWYgdGVzdCAkYWNfY3ZfZGVjbGFyYXRpb25fYWZ0ZXJfc3RhdGVtZW50X3dhcm5pbmcgPSB5ZXMKKyAgICBpZiB0ZXN0ICRhY19jdl9kaXNhYmxlX3VudXNlZF9wYXJhbWV0ZXJfd2FybmluZyA9IHllcwogICAgIHRoZW4KLSAgICAgIENGTEFHU19OT0RJU1Q9IiRDRkxBR1NfTk9ESVNUIC1XZXJyb3I9ZGVjbGFyYXRpb24tYWZ0ZXItc3RhdGVtZW50IgorICAgICAgQ0ZMQUdTX05PRElTVD0iJENGTEFHU19OT0RJU1QgLVduby11bnVzZWQtcGFyYW1ldGVyIgorICAgIGZpCisKKyAgICBBQ19NU0dfQ0hFQ0tJTkcoaWYgd2UgY2FuIHR1cm4gb2ZmICRDQyBtaXNzaW5nIGZpZWxkIGluaXRpYWxpemVycyB3YXJuaW5nKQorICAgICBhY19zYXZlX2NjPSIkQ0MiCisgICAgIENDPSIkQ0MgLVdtaXNzaW5nLWZpZWxkLWluaXRpYWxpemVycyAtV2Vycm9yIgorICAgICBBQ19DQUNIRV9WQUwoYWNfY3ZfZGlzYWJsZV9taXNzaW5nX2ZpZWxkX2luaXRpYWxpemVycywKKyAgICAgICBBQ19DT01QSUxFX0lGRUxTRSgKKyAgICAgICAgIFsKKyAgICAgICAgICAgQUNfTEFOR19QUk9HUkFNKFtbXV0sIFtbXV0pCisgICAgICAgICBdLFsKKyAgICAgICAgICAgYWNfY3ZfZGlzYWJsZV9taXNzaW5nX2ZpZWxkX2luaXRpYWxpemVycz15ZXMKKyAgICAgICAgIF0sWworICAgICAgICAgICBhY19jdl9kaXNhYmxlX21pc3NpbmdfZmllbGRfaW5pdGlhbGl6ZXJzPW5vCisgICAgICAgICBdKSkKKyAgICAgQ0M9IiRhY19zYXZlX2NjIgorICAgIEFDX01TR19SRVNVTFQoJGFjX2N2X2Rpc2FibGVfbWlzc2luZ19maWVsZF9pbml0aWFsaXplcnMpCisKKyAgICBpZiB0ZXN0ICRhY19jdl9kaXNhYmxlX21pc3NpbmdfZmllbGRfaW5pdGlhbGl6ZXJzID0geWVzCisgICAgdGhlbgorICAgICAgQ0ZMQUdTX05PRElTVD0iJENGTEFHU19OT0RJU1QgLVduby1taXNzaW5nLWZpZWxkLWluaXRpYWxpemVycyIKICAgICBmaQogCiAgICAgQUNfTVNHX0NIRUNLSU5HKGlmIHdlIGNhbiB0dXJuIG9uICRDQyBtaXhlZCBzaWduIGNvbXBhcmlzb24gd2FybmluZykKQEAgLTE5NDEsNyArMjAxNCw3IEBACiBBQ19DSEVDS19IRUFERVJTKGFzbS90eXBlcy5oIGNvbmlvLmggZGlyZWN0LmggZGxmY24uaCBlcnJuby5oIFwKIGZjbnRsLmggZ3JwLmggXAogaWVlZWZwLmggaW8uaCBsYW5naW5mby5oIGxpYmludGwuaCBwcm9jZXNzLmggcHRocmVhZC5oIFwKLXNjaGVkLmggc2hhZG93Lmggc2lnbmFsLmggc3RkaW50Lmggc3Ryb3B0cy5oIHRlcm1pb3MuaCBcCitzY2hlZC5oIHNoYWRvdy5oIHNpZ25hbC5oIHN0cm9wdHMuaCB0ZXJtaW9zLmggXAogdW5pc3RkLmggdXRpbWUuaCBcCiBwb2xsLmggc3lzL2RldnBvbGwuaCBzeXMvZXBvbGwuaCBzeXMvcG9sbC5oIFwKIHN5cy9hdWRpb2lvLmggc3lzL3hhdHRyLmggc3lzL2JzZHR0eS5oIHN5cy9ldmVudC5oIHN5cy9maWxlLmggc3lzL2lvY3RsLmggXApAQCAtMTk1MCwxMSArMjAyMywxOCBAQAogc3lzL3N0YXQuaCBzeXMvc3lzY2FsbC5oIHN5cy9zeXNfZG9tYWluLmggc3lzL3Rlcm1pby5oIHN5cy90aW1lLmggXAogc3lzL3RpbWVzLmggc3lzL3R5cGVzLmggc3lzL3Vpby5oIHN5cy91bi5oIHN5cy91dHNuYW1lLmggc3lzL3dhaXQuaCBwdHkuaCBcCiBsaWJ1dGlsLmggc3lzL3Jlc291cmNlLmggbmV0cGFja2V0L3BhY2tldC5oIHN5c2V4aXRzLmggYmx1ZXRvb3RoLmggXAotYmx1ZXRvb3RoL2JsdWV0b290aC5oIGxpbnV4L3RpcGMuaCBsaW51eC9yYW5kb20uaCBzcGF3bi5oIHV0aWwuaCBhbGxvY2EuaCBlbmRpYW4uaCBcCitsaW51eC90aXBjLmggbGludXgvcmFuZG9tLmggc3Bhd24uaCB1dGlsLmggYWxsb2NhLmggZW5kaWFuLmggXAogc3lzL2VuZGlhbi5oKQogQUNfSEVBREVSX0RJUkVOVAogQUNfSEVBREVSX01BSk9SCiAKKyMgYmx1ZXRvb3RoL2JsdWV0b290aC5oIGhhcyBiZWVuIGtub3duIHRvIG5vdCBjb21waWxlIHdpdGggLXN0ZD1jOTkuCisjIGh0dHA6Ly9wZXJtYWxpbmsuZ21hbmUub3JnL2dtYW5lLmxpbnV4LmJsdWV6Lmtlcm5lbC8yMjI5NAorU0FWRV9DRkxBR1M9JENGTEFHUworQ0ZMQUdTPSItc3RkPWM5OSAkQ0ZMQUdTIgorQUNfQ0hFQ0tfSEVBREVSUyhibHVldG9vdGgvYmx1ZXRvb3RoLmgpCitDRkxBR1M9JFNBVkVfQ0ZMQUdTCisKICMgT24gRGFyd2luIChPUyBYKSBuZXQvaWYuaCByZXF1aXJlcyBzeXMvc29ja2V0LmggdG8gYmUgaW1wb3J0ZWQgZmlyc3QuCiBBQ19DSEVDS19IRUFERVJTKFtuZXQvaWYuaF0sIFtdLCBbXSwKIFsjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTIwNDgsNiArMjEyOCwxMSBAQAogICB1c2VfbGZzPW5vCiBmaQogCisjIERvbid0IHVzZSBsYXJnZWZpbGUgc3VwcG9ydCBmb3IgR05VL0h1cmQKK2Nhc2UgJGFjX3N5c19zeXN0ZW0gaW4gR05VKikKKyAgdXNlX2xmcz1ubworZXNhYworCiBpZiB0ZXN0ICIkdXNlX2xmcyIgPSAieWVzIjsgdGhlbgogIyBUd28gZGVmaW5lcyBuZWVkZWQgdG8gZW5hYmxlIGxhcmdlZmlsZSBzdXBwb3J0IG9uIHZhcmlvdXMgcGxhdGZvcm1zCiAjIFRoZXNlIG1heSBhZmZlY3Qgc29tZSB0eXBlZGVmcwpAQCAtMjA3OCwyOSArMjE2Myw2IEBACiBBQ19UWVBFX1NJWkVfVAogQUNfVFlQRV9VSURfVAogCi0jIFRoZXJlIGFyZSB0d28gc2VwYXJhdGUgY2hlY2tzIGZvciBlYWNoIG9mIHRoZSBleGFjdC13aWR0aCBpbnRlZ2VyIHR5cGVzIHdlCi0jIG5lZWQuICBGaXJzdCB3ZSBjaGVjayB3aGV0aGVyIHRoZSB0eXBlIGlzIGF2YWlsYWJsZSB1c2luZyB0aGUgdXN1YWwKLSMgQUNfQ0hFQ0tfVFlQRSBtYWNybyB3aXRoIHRoZSBkZWZhdWx0IGluY2x1ZGVzICh3aGljaCBpbmNsdWRlcyA8aW50dHlwZXMuaD4KLSMgYW5kIDxzdGRpbnQuaD4gd2hlcmUgYXZhaWxhYmxlKS4gIFdlIHRoZW4gYWxzbyB1c2UgdGhlIHNwZWNpYWwgdHlwZSBjaGVja3Mgb2YKLSMgdGhlIGZvcm0gQUNfVFlQRV9VSU5UMzJfVCwgd2hpY2ggaW4gdGhlIGNhc2UgdGhhdCB1aW50MzJfdCBpcyBub3QgYXZhaWxhYmxlCi0jIGRpcmVjdGx5LCAjZGVmaW5lJ3MgdWludDMyX3QgdG8gYmUgYSBzdWl0YWJsZSB0eXBlLgotCi1BQ19DSEVDS19UWVBFKHVpbnQzMl90LAotICBBQ19ERUZJTkUoSEFWRV9VSU5UMzJfVCwgMSwgW0RlZmluZSBpZiB5b3VyIGNvbXBpbGVyIHByb3ZpZGVzIHVpbnQzMl90Ll0pLCwpCi1BQ19UWVBFX1VJTlQzMl9UCi0KLUFDX0NIRUNLX1RZUEUodWludDY0X3QsCi0gIEFDX0RFRklORShIQVZFX1VJTlQ2NF9ULCAxLCBbRGVmaW5lIGlmIHlvdXIgY29tcGlsZXIgcHJvdmlkZXMgdWludDY0X3QuXSksLCkKLUFDX1RZUEVfVUlOVDY0X1QKLQotQUNfQ0hFQ0tfVFlQRShpbnQzMl90LAotICBBQ19ERUZJTkUoSEFWRV9JTlQzMl9ULCAxLCBbRGVmaW5lIGlmIHlvdXIgY29tcGlsZXIgcHJvdmlkZXMgaW50MzJfdC5dKSwsKQotQUNfVFlQRV9JTlQzMl9UCi0KLUFDX0NIRUNLX1RZUEUoaW50NjRfdCwKLSAgQUNfREVGSU5FKEhBVkVfSU5UNjRfVCwgMSwgW0RlZmluZSBpZiB5b3VyIGNvbXBpbGVyIHByb3ZpZGVzIGludDY0X3QuXSksLCkKLUFDX1RZUEVfSU5UNjRfVAotCiBBQ19DSEVDS19UWVBFKHNzaXplX3QsCiAgIEFDX0RFRklORShIQVZFX1NTSVpFX1QsIDEsIFtEZWZpbmUgaWYgeW91ciBjb21waWxlciBwcm92aWRlcyBzc2l6ZV90XSksLCkKIEFDX0NIRUNLX1RZUEUoX191aW50MTI4X3QsCkBAIC0yMTEwLDYgKzIxNzIsNyBAQAogIyBBTlNJIEMgcmVxdWlyZXMgc2l6ZW9mKGNoYXIpID09IDEsIHNvIG5vIG5lZWQgdG8gY2hlY2sgaXQKIEFDX0NIRUNLX1NJWkVPRihpbnQsIDQpCiBBQ19DSEVDS19TSVpFT0YobG9uZywgNCkKK0FDX0NIRUNLX1NJWkVPRihsb25nIGxvbmcsIDgpCiBBQ19DSEVDS19TSVpFT0Yodm9pZCAqLCA0KQogQUNfQ0hFQ0tfU0laRU9GKHNob3J0LCAyKQogQUNfQ0hFQ0tfU0laRU9GKGZsb2F0LCA0KQpAQCAtMjExNywxNyArMjE4MCw3IEBACiBBQ19DSEVDS19TSVpFT0YoZnBvc190LCA0KQogQUNfQ0hFQ0tfU0laRU9GKHNpemVfdCwgNCkKIEFDX0NIRUNLX1NJWkVPRihwaWRfdCwgNCkKLQotQUNfTVNHX0NIRUNLSU5HKGZvciBsb25nIGxvbmcgc3VwcG9ydCkKLWhhdmVfbG9uZ19sb25nPW5vCi1BQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbXV0sIFtbbG9uZyBsb25nIHg7IHggPSAobG9uZyBsb25nKTA7XV0pXSxbCi0gIEFDX0RFRklORShIQVZFX0xPTkdfTE9ORywgMSwgW0RlZmluZSB0aGlzIGlmIHlvdSBoYXZlIHRoZSB0eXBlIGxvbmcgbG9uZy5dKQotICBoYXZlX2xvbmdfbG9uZz15ZXMKLV0sW10pCi1BQ19NU0dfUkVTVUxUKCRoYXZlX2xvbmdfbG9uZykKLWlmIHRlc3QgIiRoYXZlX2xvbmdfbG9uZyIgPSB5ZXMgOyB0aGVuCi1BQ19DSEVDS19TSVpFT0YobG9uZyBsb25nLCA4KQotZmkKK0FDX0NIRUNLX1NJWkVPRih1aW50cHRyX3QpCiAKIEFDX01TR19DSEVDS0lORyhmb3IgbG9uZyBkb3VibGUgc3VwcG9ydCkKIGhhdmVfbG9uZ19kb3VibGU9bm8KQEAgLTIxNDAsMjYgKzIxOTMsNyBAQAogQUNfQ0hFQ0tfU0laRU9GKGxvbmcgZG91YmxlLCAxNikKIGZpCiAKLQotQUNfTVNHX0NIRUNLSU5HKGZvciBfQm9vbCBzdXBwb3J0KQotaGF2ZV9jOTlfYm9vbD1ubwotQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbW11dLCBbW19Cb29sIHg7IHggPSAoX0Jvb2wpMDtdXSldLFsKLSAgQUNfREVGSU5FKEhBVkVfQzk5X0JPT0wsIDEsIFtEZWZpbmUgdGhpcyBpZiB5b3UgaGF2ZSB0aGUgdHlwZSBfQm9vbC5dKQotICBoYXZlX2M5OV9ib29sPXllcwotXSxbXSkKLUFDX01TR19SRVNVTFQoJGhhdmVfYzk5X2Jvb2wpCi1pZiB0ZXN0ICIkaGF2ZV9jOTlfYm9vbCIgPSB5ZXMgOyB0aGVuCiBBQ19DSEVDS19TSVpFT0YoX0Jvb2wsIDEpCi1maQotCi1BQ19DSEVDS19UWVBFUyh1aW50cHRyX3QsCi0gICBbQUNfQ0hFQ0tfU0laRU9GKHVpbnRwdHJfdCwgNCldLAotICAgW10sIFsjaWZkZWYgSEFWRV9TVERJTlRfSAotICAgICAgICAjaW5jbHVkZSA8c3RkaW50Lmg+Ci0gICAgICAgICNlbmRpZgotICAgICAgICAjaWZkZWYgSEFWRV9JTlRUWVBFU19ICi0gICAgICAgICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotICAgICAgICAjZW5kaWZdKQogCiBBQ19DSEVDS19TSVpFT0Yob2ZmX3QsIFtdLCBbCiAjaWZkZWYgSEFWRV9TWVNfVFlQRVNfSApAQCAtMjE2OCw4ICsyMjAyLDYgQEAKIF0pCiAKIEFDX01TR19DSEVDS0lORyh3aGV0aGVyIHRvIGVuYWJsZSBsYXJnZSBmaWxlIHN1cHBvcnQpCi1pZiB0ZXN0ICIkaGF2ZV9sb25nX2xvbmciID0geWVzCi10aGVuCiBpZiB0ZXN0ICIkYWNfY3Zfc2l6ZW9mX29mZl90IiAtZ3QgIiRhY19jdl9zaXplb2ZfbG9uZyIgLWEgXAogCSIkYWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZyIgLWdlICIkYWNfY3Zfc2l6ZW9mX29mZl90IjsgdGhlbgogICBBQ19ERUZJTkUoSEFWRV9MQVJHRUZJTEVfU1VQUE9SVCwgMSwKQEAgLTIxODEsOSArMjIxMyw2IEBACiBlbHNlCiAgIEFDX01TR19SRVNVTFQobm8pCiBmaQotZWxzZQotICBBQ19NU0dfUkVTVUxUKG5vKQotZmkKIAogQUNfQ0hFQ0tfU0laRU9GKHRpbWVfdCwgW10sIFsKICNpZmRlZiBIQVZFX1NZU19UWVBFU19ICkBAIC0yNzQyLDkgKzI3NzEsMjUgQEAKICMgQ2hlY2sgZm9yIHVzZSBvZiB0aGUgc3lzdGVtIGxpYmZmaSBsaWJyYXJ5CiBBQ19NU0dfQ0hFQ0tJTkcoZm9yIC0td2l0aC1zeXN0ZW0tZmZpKQogQUNfQVJHX1dJVEgoc3lzdGVtX2ZmaSwKLSAgICAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtc3lzdGVtLWZmaV0sIFtidWlsZCBfY3R5cGVzIG1vZHVsZSB1c2luZyBhbiBpbnN0YWxsZWQgZmZpIGxpYnJhcnldKSwKLSAgICAgICAgICAgIFtdLAotICAgICAgICAgICAgW3dpdGhfc3lzdGVtX2ZmaT0ibm8iXSkKKyAgICAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtc3lzdGVtLWZmaV0sIFtidWlsZCBfY3R5cGVzIG1vZHVsZSB1c2luZyBhbiBpbnN0YWxsZWQgZmZpIGxpYnJhcnldKSwsLCkKKworY2FzZSAiJHdpdGhfc3lzdGVtX2ZmaSIgaW4KKyAgICAiIikKKyAgICAgICAgY2FzZSAkYWNfc3lzX3N5c3RlbSBpbgorICAgICAgICAgICAgRGFyd2luKQorICAgICAgICAgICAgICAgIHdpdGhfc3lzdGVtX2ZmaT0ibm8iCisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICopCisgICAgICAgICAgICAgICAgd2l0aF9zeXN0ZW1fZmZpPSJ5ZXMiCisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgZXNhYworICAgICAgICA7OworICAgIHllc3xubykKKyAgICAgICAgOzsKKyAgICAqKQorICAgICAgICBBQ19NU0dfRVJST1IoWy0td2l0aC1zeXN0ZW0tZmZpIGFjY2VwdHMgbm8gYXJndW1lbnRzXSkKKyAgICAgICAgOzsKK2VzYWMKIAogaWYgdGVzdCAiJHdpdGhfc3lzdGVtX2ZmaSIgPSAieWVzIiAmJiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KICAgICBMSUJGRklfSU5DTFVERURJUj0iYCIkUEtHX0NPTkZJRyIgbGliZmZpIC0tY2ZsYWdzLW9ubHktSSAyPi9kZXYvbnVsbCB8IHNlZCAtZSAncy9eLUkvLztzLyAqJC8vJ2AiCkBAIC0yODE5LDI2ICsyODY0LDYgQEAKIGZpXSkKIEFDX01TR19SRVNVTFQoJHdpdGhfZGJtbGlib3JkZXIpCiAKLSMgRGV0ZXJtaW5lIGlmIHNpZ25hbG1vZHVsZSBzaG91bGQgYmUgdXNlZC4KLUFDX1NVQlNUKFVTRV9TSUdOQUxfTU9EVUxFKQotQUNfU1VCU1QoU0lHTkFMX09CSlMpCi1BQ19NU0dfQ0hFQ0tJTkcoZm9yIC0td2l0aC1zaWduYWwtbW9kdWxlKQotQUNfQVJHX1dJVEgoc2lnbmFsLW1vZHVsZSwKLSAgICAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtc2lnbmFsLW1vZHVsZV0sIFtkaXNhYmxlL2VuYWJsZSBzaWduYWwgbW9kdWxlXSkpCi0KLWlmIHRlc3QgLXogIiR3aXRoX3NpZ25hbF9tb2R1bGUiCi10aGVuIHdpdGhfc2lnbmFsX21vZHVsZT0ieWVzIgotZmkKLUFDX01TR19SRVNVTFQoJHdpdGhfc2lnbmFsX21vZHVsZSkKLQotaWYgdGVzdCAiJHt3aXRoX3NpZ25hbF9tb2R1bGV9IiA9ICJ5ZXMiOyB0aGVuCi0JVVNFX1NJR05BTF9NT0RVTEU9IiIKLQlTSUdOQUxfT0JKUz0iIgotZWxzZQotCVVTRV9TSUdOQUxfTU9EVUxFPSIjIgotCVNJR05BTF9PQkpTPSJQYXJzZXIvaW50cmNoZWNrLm8gUHl0aG9uL3NpZ2NoZWNrLm8iCi1maQotCiAjIFRoaXMgaXMgdXNlZCB0byBnZW5lcmF0ZSBTZXR1cC5jb25maWcKIEFDX1NVQlNUKFVTRV9USFJFQURfTU9EVUxFKQogVVNFX1RIUkVBRF9NT0RVTEU9IiIKQEAgLTMyMDgsMTYgKzMyMzMsNiBAQAogICBBQ19NU0dfUkVTVUxUKG5vKQogXSkKIAotQUNfTVNHX0NIRUNLSU5HKGZvciBPU1ggMTAuNSBTREsgb3IgbGF0ZXIpCi1BQ19DT01QSUxFX0lGRUxTRShbCi0gIEFDX0xBTkdfUFJPR1JBTShbWyNpbmNsdWRlIDxDYXJib24vQ2FyYm9uLmg+XV0sIFtbRlNJT1JlZk51bSBmUmVmID0gMF1dKQotXSxbCi0gIEFDX0RFRklORShIQVZFX09TWDEwNV9TREssIDEsIFtEZWZpbmUgaWYgY29tcGlsaW5nIHVzaW5nIE1hY09TIFggMTAuNSBTREsgb3IgbGF0ZXIuXSkKLSAgQUNfTVNHX1JFU1VMVCh5ZXMpCi1dLFsKLSAgQUNfTVNHX1JFU1VMVChubykKLV0pCi0KICMgQ2hlY2sgZm9yIC0td2l0aC1kb2Mtc3RyaW5ncwogQUNfTVNHX0NIRUNLSU5HKGZvciAtLXdpdGgtZG9jLXN0cmluZ3MpCiBBQ19BUkdfV0lUSChkb2Mtc3RyaW5ncywKQEAgLTMyMzMsMTkgKzMyNDgsNiBAQAogZmkKIEFDX01TR19SRVNVTFQoJHdpdGhfZG9jX3N0cmluZ3MpCiAKLSMgQ2hlY2sgaWYgZXZhbCBsb29wIHNob3VsZCB1c2UgdGltZXN0YW1wIGNvdW50ZXIgcHJvZmlsaW5nCi1BQ19NU0dfQ0hFQ0tJTkcoZm9yIC0td2l0aC10c2MpCi1BQ19BUkdfV0lUSCh0c2MsCi0JICAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgob3V0KS10c2NdLFtlbmFibGUvZGlzYWJsZSB0aW1lc3RhbXAgY291bnRlciBwcm9maWxlXSksWwotaWYgdGVzdCAiJHdpdGh2YWwiICE9IG5vCi10aGVuCi0gIEFDX0RFRklORShXSVRIX1RTQywgMSwKLSAgICBbRGVmaW5lIHRvIHByb2ZpbGUgd2l0aCB0aGUgUGVudGl1bSB0aW1lc3RhbXAgY291bnRlcl0pCi0gICAgQUNfTVNHX1JFU1VMVCh5ZXMpCi1lbHNlIEFDX01TR19SRVNVTFQobm8pCi1maV0sCi1bQUNfTVNHX1JFU1VMVChubyldKQotCiAjIENoZWNrIGZvciBQeXRob24tc3BlY2lmaWMgbWFsbG9jIHN1cHBvcnQKIEFDX01TR19DSEVDS0lORyhmb3IgLS13aXRoLXB5bWFsbG9jKQogQUNfQVJHX1dJVEgocHltYWxsb2MsCkBAIC0zMjc3LDYgKzMyNzksNDcgQEAKICAgICBPUFQ9Ii1ERFlOQU1JQ19BTk5PVEFUSU9OU19FTkFCTEVEPTEgJE9QVCIKIGZpCiAKKyMgQ2hlY2sgZm9yIERUcmFjZSBzdXBwb3J0CitBQ19NU0dfQ0hFQ0tJTkcoZm9yIC0td2l0aC1kdHJhY2UpCitBQ19BUkdfV0lUSChkdHJhY2UsCisgIEFDX0hFTFBfU1RSSU5HKC0td2l0aChvdXQpLWR0cmFjZSwgW2Rpc2FibGUvZW5hYmxlIERUcmFjZSBzdXBwb3J0XSksLAorICB3aXRoX2R0cmFjZT1ubykKK0FDX01TR19SRVNVTFQoJHdpdGhfZHRyYWNlKQorCitBQ19TVUJTVChEVFJBQ0UpCitBQ19TVUJTVChERkxBR1MpCitBQ19TVUJTVChEVFJBQ0VfSEVBREVSUykKK0FDX1NVQlNUKERUUkFDRV9PQkpTKQorRFRSQUNFPQorREZMQUdTPQorRFRSQUNFX0hFQURFUlM9CitEVFJBQ0VfT0JKUz0KKworaWYgdGVzdCAiJHdpdGhfZHRyYWNlIiA9ICJ5ZXMiCit0aGVuCisgICAgQUNfUEFUSF9QUk9HKERUUkFDRSwgW2R0cmFjZV0sIFtub3QgZm91bmRdKQorICAgIGlmIHRlc3QgIiREVFJBQ0UiID0gIm5vdCBmb3VuZCI7IHRoZW4KKyAgICAgICAgQUNfTVNHX0VSUk9SKFtkdHJhY2UgY29tbWFuZCBub3QgZm91bmQgb24gXCRQQVRIXSkKKyAgICBmaQorICAgIEFDX0RFRklORShXSVRIX0RUUkFDRSwgMSwgW0RlZmluZSBpZiB5b3Ugd2FudCB0byBjb21waWxlIGluIERUcmFjZSBzdXBwb3J0XSkKKyAgICBEVFJBQ0VfSEVBREVSUz0iSW5jbHVkZS9weWR0cmFjZV9wcm9iZXMuaCIKKworICAgICMgT24gT1MgWCwgRFRyYWNlIHByb3ZpZGVycyBkbyBub3QgbmVlZCB0byBiZSBleHBsaWNpdGx5IGNvbXBpbGVkIGFuZAorICAgICMgbGlua2VkIGludG8gdGhlIGJpbmFyeS4gQ29ycmVzcG9uZGluZ2x5LCBkdHJhY2UoMSkgaXMgbWlzc2luZyB0aGUgRUxGCisgICAgIyBnZW5lcmF0aW9uIGZsYWcgJy1HJy4gV2UgY2hlY2sgZm9yIHByZXNlbmNlIG9mIHRoaXMgZmxhZywgcmF0aGVyIHRoYW4KKyAgICAjIGhhcmRjb2Rpbmcgc3VwcG9ydCBieSBPUywgaW4gdGhlIGludGVyZXN0IG9mIHJvYnVzdG5lc3MuCisgICAgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgRFRyYWNlIHByb2JlcyByZXF1aXJlIGxpbmtpbmddLAorICAgICAgICBbYWNfY3ZfZHRyYWNlX2xpbmtdLCBbZG5sCisgICAgICAgICAgICBhY19jdl9kdHJhY2VfbGluaz1ubworICAgICAgICAgICAgZWNobyAnQkVHSU4nID4gY29uZnRlc3QuZAorICAgICAgICAgICAgIiREVFJBQ0UiIC1HIC1zIGNvbmZ0ZXN0LmQgLW8gY29uZnRlc3QubyA+IC9kZXYvbnVsbCAyPiYxICYmIFwKKyAgICAgICAgICAgICAgICBhY19jdl9kdHJhY2VfbGluaz15ZXMKKyAgICAgIF0pCisgICAgaWYgdGVzdCAiJGFjX2N2X2R0cmFjZV9saW5rIiA9ICJ5ZXMiOyB0aGVuCisgICAgICAgIERUUkFDRV9PQkpTPSJQeXRob24vcHlkdHJhY2UubyIKKyAgICBmaQorZmkKKwogIyAtSSR7RExJTkNMRElSfSBpcyBhZGRlZCB0byB0aGUgY29tcGlsZSBydWxlIGZvciBpbXBvcnRkbC5vCiBBQ19TVUJTVChETElOQ0xESVIpCiBETElOQ0xESVI9LgpAQCAtMzY2OSw2ICszNzEyLDEyIEBACiAgICAgXSkKIF0pCiAKK0FDX0NIRUNLX0ZVTkNTKGNsb2NrX3NldHRpbWUsIFtdLCBbCisgICAgQUNfQ0hFQ0tfTElCKHJ0LCBjbG9ja19zZXR0aW1lLCBbCisgICAgICAgIEFDX0RFRklORShIQVZFX0NMT0NLX1NFVFRJTUUsIDEpCisgICAgXSkKK10pCisKIEFDX01TR19DSEVDS0lORyhmb3IgbWFqb3IsIG1pbm9yLCBhbmQgbWFrZWRldikKIEFDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sKICNpZiBkZWZpbmVkKE1BSk9SX0lOX01LREVWKQpAQCAtMzgzMCw2ICszODc5LDEwIEBACiBBQ19DSEVDS19NRU1CRVJTKFtzdHJ1Y3Qgc3RhdC5zdF9nZW5dKQogQUNfQ0hFQ0tfTUVNQkVSUyhbc3RydWN0IHN0YXQuc3RfYmlydGh0aW1lXSkKIEFDX0NIRUNLX01FTUJFUlMoW3N0cnVjdCBzdGF0LnN0X2Jsb2Nrc10pCitBQ19DSEVDS19NRU1CRVJTKFtzdHJ1Y3QgcGFzc3dkLnB3X2dlY29zLCBzdHJ1Y3QgcGFzc3dkLnB3X3Bhc3N3ZF0sIFtdLCBbXSwgW1sKKyAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICAjaW5jbHVkZSA8cHdkLmg+CitdXSkKIAogQUNfTVNHX0NIRUNLSU5HKGZvciB0aW1lLmggdGhhdCBkZWZpbmVzIGFsdHpvbmUpCiBBQ19DQUNIRV9WQUwoYWNfY3ZfaGVhZGVyX3RpbWVfYWx0em9uZSxbCkBAIC0zODc4LDYgKzM5MzEsMTkgQEAKIAlBQ19ERUZJTkUoSEFWRV9TT0NLQUREUl9TVE9SQUdFLCAxLCBbc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKHN5cy9zb2NrZXQuaCldKQogZmkKIAorQUNfTVNHX0NIRUNLSU5HKGZvciBzb2NrYWRkcl9hbGcpCitBQ19DQUNIRV9WQUwoYWNfY3Zfc3RydWN0X3NvY2thZGRyX2FsZywKK0FDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sKKyMJCWluY2x1ZGUgPHN5cy90eXBlcy5oPgorIwkJaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorIwkJaW5jbHVkZSA8bGludXgvaWZfYWxnLmg+XV0sIFtbc3RydWN0IHNvY2thZGRyX2FsZyBzXV0pXSwKKyAgW2FjX2N2X3N0cnVjdF9zb2NrYWRkcl9hbGc9eWVzXSwKKyAgW2FjX2N2X3N0cnVjdF9zb2NrYWRkcl9hbGc9bm9dKSkKK0FDX01TR19SRVNVTFQoJGFjX2N2X3N0cnVjdF9zb2NrYWRkcl9hbGcpCitpZiB0ZXN0ICRhY19jdl9zdHJ1Y3Rfc29ja2FkZHJfYWxnID0geWVzOyB0aGVuCisJQUNfREVGSU5FKEhBVkVfU09DS0FERFJfQUxHLCAxLCBbc3RydWN0IHNvY2thZGRyX2FsZyAobGludXgvaWZfYWxnLmgpXSkKK2ZpCisKICMgY2hlY2tzIGZvciBjb21waWxlciBjaGFyYWN0ZXJpc3RpY3MKIAogQUNfQ19DSEFSX1VOU0lHTkVECkBAIC0zOTUwLDIwICs0MDE2LDYgQEAKICAgW0FDX01TR19SRVNVTFQobm8pXQogKQogCi12YV9saXN0X2lzX2FycmF5PW5vCi1BQ19NU0dfQ0hFQ0tJTkcod2hldGhlciB2YV9saXN0IGlzIGFuIGFycmF5KQotQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWwotI2lmZGVmIEhBVkVfU1REQVJHX1BST1RPVFlQRVMKLSNpbmNsdWRlIDxzdGRhcmcuaD4KLSNlbHNlCi0jaW5jbHVkZSA8dmFyYXJncy5oPgotI2VuZGlmCi1dXSwgW1t2YV9saXN0IGxpc3QxLCBsaXN0MjsgbGlzdDEgPSBsaXN0MjtdXSldLFtdLFsKLSBBQ19ERUZJTkUoVkFfTElTVF9JU19BUlJBWSwgMSwgW0RlZmluZSBpZiBhIHZhX2xpc3QgaXMgYW4gYXJyYXkgb2Ygc29tZSBraW5kXSkKLSB2YV9saXN0X2lzX2FycmF5PXllcwotXSkKLUFDX01TR19SRVNVTFQoJHZhX2xpc3RfaXNfYXJyYXkpCi0KICMgc2lnaCAtLSBnZXRob3N0YnluYW1lX3IgaXMgYSBtZXNzOyBpdCBjYW4gaGF2ZSAzLCA1IG9yIDYgYXJndW1lbnRzIDotKAogQUhfVEVNUExBVEUoSEFWRV9HRVRIT1NUQllOQU1FX1IsCiAgIFtEZWZpbmUgdGhpcyBpZiB5b3UgaGF2ZSBzb21lIHZlcnNpb24gb2YgZ2V0aG9zdGJ5bmFtZV9yKCldKQpAQCAtNDQwNiw2ICs0NDU4LDggQEAKICAgW2RlZmluZSB0byAxIGlmIHlvdXIgc2VtX2dldHZhbHVlIGlzIGJyb2tlbi5dKQogZmkKIAorQUNfQ0hFQ0tfREVDTFMoW1JUTERfTEFaWSwgUlRMRF9OT1csIFJUTERfR0xPQkFMLCBSVExEX0xPQ0FMLCBSVExEX05PREVMRVRFLCBSVExEX05PTE9BRCwgUlRMRF9ERUVQQklORF0sIFtdLCBbXSwgW1sjaW5jbHVkZSA8ZGxmY24uaD5dXSkKKwogIyBkZXRlcm1pbmUgd2hhdCBzaXplIGRpZ2l0IHRvIHVzZSBmb3IgUHl0aG9uJ3MgbG9uZ3MKIEFDX01TR19DSEVDS0lORyhbZGlnaXQgc2l6ZSBmb3IgUHl0aG9uJ3MgbG9uZ3NdKQogQUNfQVJHX0VOQUJMRShiaWctZGlnaXRzLApAQCAtNDUyNCw3ICs0NTc4LDExIEBACiAKIGRubCBkZWZpbmUgTElCUEwgYWZ0ZXIgQUJJRkxBR1MgYW5kIExEVkVSU0lPTiBpcyBkZWZpbmVkLgogQUNfU1VCU1QoUFlfRU5BQkxFX1NIQVJFRCkKLUxJQlBMPSckKHByZWZpeCknIi9saWIvcHl0aG9uJHtWRVJTSU9OfS9jb25maWctJHtMRFZFUlNJT059IgoraWYgdGVzdCB4JFBMQVRGT1JNX1RSSVBMRVQgPSB4OyB0aGVuCisgIExJQlBMPSckKHByZWZpeCknIi9saWIvcHl0aG9uJHtWRVJTSU9OfS9jb25maWctJHtMRFZFUlNJT059IgorZWxzZQorICBMSUJQTD0nJChwcmVmaXgpJyIvbGliL3B5dGhvbiR7VkVSU0lPTn0vY29uZmlnLSR7TERWRVJTSU9OfS0ke1BMQVRGT1JNX1RSSVBMRVR9IgorZmkKIEFDX1NVQlNUKExJQlBMKQogCiAjIENoZWNrIHdoZXRoZXIgcmlnaHQgc2hpZnRpbmcgYSBuZWdhdGl2ZSBpbnRlZ2VyIGV4dGVuZHMgdGhlIHNpZ24gYml0CkBAIC00ODI3LDcgKzQ4ODUsOSBAQAogCiAjIGZpcnN0IGN1cnNlcyBoZWFkZXIgY2hlY2sKIGFjX3NhdmVfY3BwZmxhZ3M9IiRDUFBGTEFHUyIKLUNQUEZMQUdTPSIkQ1BQRkxBR1MgLUkvdXNyL2luY2x1ZGUvbmN1cnNlc3ciCitpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IG5vOyB0aGVuCisgIENQUEZMQUdTPSIkQ1BQRkxBR1MgLUkvdXNyL2luY2x1ZGUvbmN1cnNlc3ciCitmaQogCiBBQ19DSEVDS19IRUFERVJTKGN1cnNlcy5oIG5jdXJzZXMuaCkKIApAQCAtNDkyMiw3MCArNDk4Miw2IEBACiAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgL2Rldi9wdGMgZGV2aWNlIGZpbGUuXSkKIGZpCiAKLWlmIHRlc3QgIiRoYXZlX2xvbmdfbG9uZyIgPSB5ZXMKLXRoZW4KLSAgQUNfTVNHX0NIRUNLSU5HKGZvciAlbGxkIGFuZCAlbGx1IHByaW50ZigpIGZvcm1hdCBzdXBwb3J0KQotICBBQ19DQUNIRV9WQUwoYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0LAotICBBQ19SVU5fSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbW1sKLSAgI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gICNpbmNsdWRlIDxzdGRkZWYuaD4KLSAgI2luY2x1ZGUgPHN0cmluZy5oPgotCi0gICNpZmRlZiBIQVZFX1NZU19UWVBFU19ICi0gICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAgI2VuZGlmCi0KLSAgaW50IG1haW4oKQotICB7Ci0gICAgICBjaGFyIGJ1ZmZlclsyNTZdOwotCi0gICAgICBpZiAoc3ByaW50ZihidWZmZXIsICIlbGxkIiwgKGxvbmcgbG9uZykxMjMpIDwgMCkKLSAgICAgICAgICByZXR1cm4gMTsKLSAgICAgIGlmIChzdHJjbXAoYnVmZmVyLCAiMTIzIikpCi0gICAgICAgICAgcmV0dXJuIDE7Ci0KLSAgICAgIGlmIChzcHJpbnRmKGJ1ZmZlciwgIiVsbGQiLCAobG9uZyBsb25nKS0xMjMpIDwgMCkKLSAgICAgICAgICByZXR1cm4gMTsKLSAgICAgIGlmIChzdHJjbXAoYnVmZmVyLCAiLTEyMyIpKQotICAgICAgICAgIHJldHVybiAxOwotCi0gICAgICBpZiAoc3ByaW50ZihidWZmZXIsICIlbGx1IiwgKHVuc2lnbmVkIGxvbmcgbG9uZykxMjMpIDwgMCkKLSAgICAgICAgICByZXR1cm4gMTsKLSAgICAgIGlmIChzdHJjbXAoYnVmZmVyLCAiMTIzIikpCi0gICAgICAgICAgcmV0dXJuIDE7Ci0KLSAgICAgIHJldHVybiAwOwotICB9Ci0gIF1dXSldLAotICBbYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0PXllc10sCi0gIFthY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQ9bm9dLAotICBbYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0PSJjcm9zcyAtLSBhc3N1bWluZyBubyIKLSAgIGlmIHRlc3QgeCRHQ0MgPSB4eWVzOyB0aGVuCi0gICAgc2F2ZV9DRkxBR1M9JENGTEFHUwotICAgIENGTEFHUz0iJENGTEFHUyAtV2Vycm9yIC1XZm9ybWF0IgotICAgIEFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sKLSAgICAgICAgI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gICAgICAgICNpbmNsdWRlIDxzdGRkZWYuaD4KLSAgICAgIF1dLCBbWwotICAgICAgY2hhciAqYnVmZmVyOwotICAgICAgc3ByaW50ZihidWZmZXIsICIlbGxkIiwgKGxvbmcgbG9uZykxMjMpOwotICAgICAgc3ByaW50ZihidWZmZXIsICIlbGxkIiwgKGxvbmcgbG9uZyktMTIzKTsKLSAgICAgIHNwcmludGYoYnVmZmVyLCAiJWxsdSIsICh1bnNpZ25lZCBsb25nIGxvbmcpMTIzKTsKLSAgICAgIF1dKV0sCi0gICAgICBhY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQ9eWVzCi0gICAgKQotICAgIENGTEFHUz0kc2F2ZV9DRkxBR1MKLSAgIGZpXSkKLSAgKQotICBBQ19NU0dfUkVTVUxUKCRhY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQpCi1maQotCi1pZiB0ZXN0ICIkYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0IiA9IHllcwotdGhlbgotICBBQ19ERUZJTkUoUFlfRk9STUFUX0xPTkdfTE9ORywgImxsIiwKLSAgW0RlZmluZSB0byBwcmludGYgZm9ybWF0IG1vZGlmaWVyIGZvciBsb25nIGxvbmcgdHlwZV0pCi1maQotCiBpZiB0ZXN0ICRhY19zeXNfc3lzdGVtID0gRGFyd2luCiB0aGVuCiAJTElCUz0iJExJQlMgLWZyYW1ld29yayBDb3JlRm91bmRhdGlvbiIKQEAgLTUzNzgsNyArNTM3NCw3IEBACiBpZiB0ZXN0ICIkUHlfT1BUIiA9ICdmYWxzZScgLWEgIiRQeV9ERUJVRyIgIT0gJ3RydWUnOyB0aGVuCiAgICAgZWNobyAiIiA+JkFTX01FU1NBR0VfRkQKICAgICBlY2hvICIiID4mQVNfTUVTU0FHRV9GRAotICAgIGVjaG8gIklmIHlvdSB3YW50IGEgcmVsZWFzZSBidWlsZCB3aXRoIGFsbCBvcHRpbWl6YXRpb25zIGFjdGl2ZSAoTFRPLCBQR08sIGV0YyksIgorICAgIGVjaG8gIklmIHlvdSB3YW50IGEgcmVsZWFzZSBidWlsZCB3aXRoIGFsbCBvcHRpbWl6YXRpb25zIGFjdGl2ZSAoTFRPLCBQR08sIGV0YyksIiA+JkFTX01FU1NBR0VfRkQKICAgICBlY2hvICJwbGVhc2UgcnVuIC4vY29uZmlndXJlIC0tZW5hYmxlLW9wdGltaXphdGlvbnMiID4mQVNfTUVTU0FHRV9GRAogICAgIGVjaG8gIiIgPiZBU19NRVNTQUdFX0ZECiAgICAgZWNobyAiIiA+JkFTX01FU1NBR0VfRkQKZGlmZiAtLWdpdCBhL3B5Y29uZmlnLmguaW4gYi9weWNvbmZpZy5oLmluCmluZGV4IDM5Y2NmNTMuLjZiMzc2YTYgMTAwNjQ0Ci0tLSBhL3B5Y29uZmlnLmguaW4KKysrIGIvcHljb25maWcuaC5pbgpAQCAtMTIsNiArMTIsOSBAQAogICAgc3VwcG9ydCBmb3IgQUlYIEMrKyBzaGFyZWQgZXh0ZW5zaW9uIG1vZHVsZXMuICovCiAjdW5kZWYgQUlYX0dFTlVJTkVfQ1BMVVNQTFVTCiAKKy8qIFRoZSBBbmRyb2lkIEFQSSBsZXZlbC4gKi8KKyN1bmRlZiBBTkRST0lEX0FQSV9MRVZFTAorCiAvKiBEZWZpbmUgaWYgQyBkb3VibGVzIGFyZSA2NC1iaXQgSUVFRSA3NTQgYmluYXJ5IGZvcm1hdCwgc3RvcmVkIGluIEFSTQogICAgbWl4ZWQtZW5kaWFuIG9yZGVyIChieXRlIG9yZGVyIDQ1NjcwMTIzKSAqLwogI3VuZGVmIERPVUJMRV9JU19BUk1fTUlYRURfRU5ESUFOX0lFRUU3NTQKQEAgLTEwNCw5ICsxMDcsNiBAQAogLyogSGFzIGJ1aWx0aW4gYXRvbWljcyAqLwogI3VuZGVmIEhBVkVfQlVJTFRJTl9BVE9NSUMKIAotLyogRGVmaW5lIHRoaXMgaWYgeW91IGhhdmUgdGhlIHR5cGUgX0Jvb2wuICovCi0jdW5kZWYgSEFWRV9DOTlfQk9PTAotCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgJ2NoZmxhZ3MnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfQ0hGTEFHUwogCkBAIC0xMjUsNiArMTI1LDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgY2xvY2tfZ2V0dGltZScgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9DTE9DS19HRVRUSU1FCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgY2xvY2tfc2V0dGltZScgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9DTE9DS19TRVRUSU1FCisKIC8qIERlZmluZSBpZiB0aGUgQyBjb21waWxlciBzdXBwb3J0cyBjb21wdXRlZCBnb3Rvcy4gKi8KICN1bmRlZiBIQVZFX0NPTVBVVEVEX0dPVE9TCiAKQEAgLTE2Nyw2ICsxNzAsMzQgQEAKICAgICovCiAjdW5kZWYgSEFWRV9ERUNMX0lTTkFOCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBkZWNsYXJhdGlvbiBvZiBgUlRMRF9ERUVQQklORCcsIGFuZCB0byAwIGlmIHlvdQorICAgZG9uJ3QuICovCisjdW5kZWYgSEFWRV9ERUNMX1JUTERfREVFUEJJTkQKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGRlY2xhcmF0aW9uIG9mIGBSVExEX0dMT0JBTCcsIGFuZCB0byAwIGlmIHlvdQorICAgZG9uJ3QuICovCisjdW5kZWYgSEFWRV9ERUNMX1JUTERfR0xPQkFMCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBkZWNsYXJhdGlvbiBvZiBgUlRMRF9MQVpZJywgYW5kIHRvIDAgaWYgeW91CisgICBkb24ndC4gKi8KKyN1bmRlZiBIQVZFX0RFQ0xfUlRMRF9MQVpZCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBkZWNsYXJhdGlvbiBvZiBgUlRMRF9MT0NBTCcsIGFuZCB0byAwIGlmIHlvdQorICAgZG9uJ3QuICovCisjdW5kZWYgSEFWRV9ERUNMX1JUTERfTE9DQUwKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGRlY2xhcmF0aW9uIG9mIGBSVExEX05PREVMRVRFJywgYW5kIHRvIDAgaWYgeW91CisgICBkb24ndC4gKi8KKyN1bmRlZiBIQVZFX0RFQ0xfUlRMRF9OT0RFTEVURQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgZGVjbGFyYXRpb24gb2YgYFJUTERfTk9MT0FEJywgYW5kIHRvIDAgaWYgeW91CisgICBkb24ndC4gKi8KKyN1bmRlZiBIQVZFX0RFQ0xfUlRMRF9OT0xPQUQKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGRlY2xhcmF0aW9uIG9mIGBSVExEX05PVycsIGFuZCB0byAwIGlmIHlvdQorICAgZG9uJ3QuICovCisjdW5kZWYgSEFWRV9ERUNMX1JUTERfTk9XCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBkZWNsYXJhdGlvbiBvZiBgdHpuYW1lJywgYW5kIHRvIDAgaWYgeW91IGRvbid0LgogICAgKi8KICN1bmRlZiBIQVZFX0RFQ0xfVFpOQU1FCkBAIC00NTMsMTIgKzQ4NCw2IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGluaXRncm91cHMnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfSU5JVEdST1VQUwogCi0vKiBEZWZpbmUgaWYgeW91ciBjb21waWxlciBwcm92aWRlcyBpbnQzMl90LiAqLwotI3VuZGVmIEhBVkVfSU5UMzJfVAotCi0vKiBEZWZpbmUgaWYgeW91ciBjb21waWxlciBwcm92aWRlcyBpbnQ2NF90LiAqLwotI3VuZGVmIEhBVkVfSU5UNjRfVAotCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGludHR5cGVzLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfSU5UVFlQRVNfSAogCkBAIC01NjEsOSArNTg2LDYgQEAKIC8qIERlZmluZSB0aGlzIGlmIHlvdSBoYXZlIHRoZSB0eXBlIGxvbmcgZG91YmxlLiAqLwogI3VuZGVmIEhBVkVfTE9OR19ET1VCTEUKIAotLyogRGVmaW5lIHRoaXMgaWYgeW91IGhhdmUgdGhlIHR5cGUgbG9uZyBsb25nLiAqLwotI3VuZGVmIEhBVkVfTE9OR19MT05HCi0KIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbHN0YXQnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfTFNUQVQKIApAQCAtNjMwLDkgKzY1Miw2IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG9wZW5wdHknIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfT1BFTlBUWQogCi0vKiBEZWZpbmUgaWYgY29tcGlsaW5nIHVzaW5nIE1hY09TIFggMTAuNSBTREsgb3IgbGF0ZXIuICovCi0jdW5kZWYgSEFWRV9PU1gxMDVfU0RLCi0KIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcGF0aGNvbmYnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfUEFUSENPTkYKIApAQCAtODYxLDYgKzg4MCw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNucHJpbnRmJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1NOUFJJTlRGCiAKKy8qIHN0cnVjdCBzb2NrYWRkcl9hbGcgKGxpbnV4L2lmX2FsZy5oKSAqLworI3VuZGVmIEhBVkVfU09DS0FERFJfQUxHCisKIC8qIERlZmluZSBpZiBzb2NrYWRkciBoYXMgc2FfbGVuIG1lbWJlciAqLwogI3VuZGVmIEhBVkVfU09DS0FERFJfU0FfTEVOCiAKQEAgLTkxNiw2ICs5MzgsMTIgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3Ryb3B0cy5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1NUUk9QVFNfSAogCisvKiBEZWZpbmUgdG8gMSBpZiBgcHdfZ2Vjb3MnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgcGFzc3dkJy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9QQVNTV0RfUFdfR0VDT1MKKworLyogRGVmaW5lIHRvIDEgaWYgYHB3X3Bhc3N3ZCcgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCBwYXNzd2QnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX1BBU1NXRF9QV19QQVNTV0QKKwogLyogRGVmaW5lIHRvIDEgaWYgYHN0X2JpcnRodGltZScgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCBzdGF0Jy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9TVEFUX1NUX0JJUlRIVElNRQogCkBAIC0xMTA2LDE1ICsxMTM0LDYgQEAKIC8qIERlZmluZSB0aGlzIGlmIHlvdSBoYXZlIHRjbCBhbmQgVENMX1VURl9NQVg9PTYgKi8KICN1bmRlZiBIQVZFX1VDUzRfVENMCiAKLS8qIERlZmluZSBpZiB5b3VyIGNvbXBpbGVyIHByb3ZpZGVzIHVpbnQzMl90LiAqLwotI3VuZGVmIEhBVkVfVUlOVDMyX1QKLQotLyogRGVmaW5lIGlmIHlvdXIgY29tcGlsZXIgcHJvdmlkZXMgdWludDY0X3QuICovCi0jdW5kZWYgSEFWRV9VSU5UNjRfVAotCi0vKiBEZWZpbmUgdG8gMSBpZiB0aGUgc3lzdGVtIGhhcyB0aGUgdHlwZSBgdWludHB0cl90Jy4gKi8KLSN1bmRlZiBIQVZFX1VJTlRQVFJfVAotCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHVuYW1lJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1VOQU1FCiAKQEAgLTEyMjUsOSArMTI0NCw2IEBACiAvKiBEZWZpbmUgYXMgdGhlIHByZWZlcnJlZCBzaXplIGluIGJpdHMgb2YgbG9uZyBkaWdpdHMgKi8KICN1bmRlZiBQWUxPTkdfQklUU19JTl9ESUdJVAogCi0vKiBEZWZpbmUgdG8gcHJpbnRmIGZvcm1hdCBtb2RpZmllciBmb3IgbG9uZyBsb25nIHR5cGUgKi8KLSN1bmRlZiBQWV9GT1JNQVRfTE9OR19MT05HCi0KIC8qIERlZmluZSB0byBwcmludGYgZm9ybWF0IG1vZGlmaWVyIGZvciBQeV9zc2l6ZV90ICovCiAjdW5kZWYgUFlfRk9STUFUX1NJWkVfVAogCkBAIC0xMzQ4LDkgKzEzNjQsNiBAQAogI2VuZGlmCiAKIAotLyogRGVmaW5lIGlmIGEgdmFfbGlzdCBpcyBhbiBhcnJheSBvZiBzb21lIGtpbmQgKi8KLSN1bmRlZiBWQV9MSVNUX0lTX0FSUkFZCi0KIC8qIERlZmluZSBpZiB5b3Ugd2FudCBTSUdGUEUgaGFuZGxlZCAoc2VlIEluY2x1ZGUvcHlmcGUuaCkuICovCiAjdW5kZWYgV0FOVF9TSUdGUEVfSEFORExFUgogCkBAIC0xMzYwLDYgKzEzNzMsOSBAQAogLyogRGVmaW5lIGlmIHlvdSB3YW50IGRvY3VtZW50YXRpb24gc3RyaW5ncyBpbiBleHRlbnNpb24gbW9kdWxlcyAqLwogI3VuZGVmIFdJVEhfRE9DX1NUUklOR1MKIAorLyogRGVmaW5lIGlmIHlvdSB3YW50IHRvIGNvbXBpbGUgaW4gRFRyYWNlIHN1cHBvcnQgKi8KKyN1bmRlZiBXSVRIX0RUUkFDRQorCiAvKiBEZWZpbmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBuZXctc3R5bGUgKE9wZW5zdGVwLCBSaGFwc29keSwgTWFjT1MpIGR5bmFtaWMKICAgIGxpbmtlciAoZHlsZCkgaW5zdGVhZCBvZiB0aGUgb2xkLXN0eWxlIChOZXh0U3RlcCkgZHluYW1pYyBsaW5rZXIgKHJsZCkuCiAgICBEeWxkIGlzIG5lY2Vzc2FyeSB0byBzdXBwb3J0IGZyYW1ld29ya3MuICovCkBAIC0xMzc4LDkgKzEzOTQsNiBAQAogLyogRGVmaW5lIGlmIHlvdSB3YW50IHRvIGNvbXBpbGUgaW4gcnVkaW1lbnRhcnkgdGhyZWFkIHN1cHBvcnQgKi8KICN1bmRlZiBXSVRIX1RIUkVBRAogCi0vKiBEZWZpbmUgdG8gcHJvZmlsZSB3aXRoIHRoZSBQZW50aXVtIHRpbWVzdGFtcCBjb3VudGVyICovCi0jdW5kZWYgV0lUSF9UU0MKLQogLyogRGVmaW5lIGlmIHlvdSB3YW50IHB5bWFsbG9jIHRvIGJlIGRpc2FibGVkIHdoZW4gcnVubmluZyB1bmRlciB2YWxncmluZCAqLwogI3VuZGVmIFdJVEhfVkFMR1JJTkQKIApAQCAtMTQ0NSwxNiArMTQ1OCw2IEBACiAvKiBEZWZpbmUgdG8gZm9yY2UgdXNlIG9mIHRocmVhZC1zYWZlIGVycm5vLCBoX2Vycm5vLCBhbmQgb3RoZXIgZnVuY3Rpb25zICovCiAjdW5kZWYgX1JFRU5UUkFOVAogCi0vKiBEZWZpbmUgZm9yIFNvbGFyaXMgMi41LjEgc28gdGhlIHVpbnQzMl90IHR5cGVkZWYgZnJvbSA8c3lzL3N5bmNoLmg+LAotICAgPHB0aHJlYWQuaD4sIG9yIDxzZW1hcGhvcmUuaD4gaXMgbm90IHVzZWQuIElmIHRoZSB0eXBlZGVmIHdlcmUgYWxsb3dlZCwgdGhlCi0gICAjZGVmaW5lIGJlbG93IHdvdWxkIGNhdXNlIGEgc3ludGF4IGVycm9yLiAqLwotI3VuZGVmIF9VSU5UMzJfVAotCi0vKiBEZWZpbmUgZm9yIFNvbGFyaXMgMi41LjEgc28gdGhlIHVpbnQ2NF90IHR5cGVkZWYgZnJvbSA8c3lzL3N5bmNoLmg+LAotICAgPHB0aHJlYWQuaD4sIG9yIDxzZW1hcGhvcmUuaD4gaXMgbm90IHVzZWQuIElmIHRoZSB0eXBlZGVmIHdlcmUgYWxsb3dlZCwgdGhlCi0gICAjZGVmaW5lIGJlbG93IHdvdWxkIGNhdXNlIGEgc3ludGF4IGVycm9yLiAqLwotI3VuZGVmIF9VSU5UNjRfVAotCiAvKiBEZWZpbmUgdG8gdGhlIGxldmVsIG9mIFgvT3BlbiB0aGF0IHlvdXIgc3lzdGVtIHN1cHBvcnRzICovCiAjdW5kZWYgX1hPUEVOX1NPVVJDRQogCkBAIC0xNDg0LDE0ICsxNDg3LDYgQEAKICN1bmRlZiBpbmxpbmUKICNlbmRpZgogCi0vKiBEZWZpbmUgdG8gdGhlIHR5cGUgb2YgYSBzaWduZWQgaW50ZWdlciB0eXBlIG9mIHdpZHRoIGV4YWN0bHkgMzIgYml0cyBpZgotICAgc3VjaCBhIHR5cGUgZXhpc3RzIGFuZCB0aGUgc3RhbmRhcmQgaW5jbHVkZXMgZG8gbm90IGRlZmluZSBpdC4gKi8KLSN1bmRlZiBpbnQzMl90Ci0KLS8qIERlZmluZSB0byB0aGUgdHlwZSBvZiBhIHNpZ25lZCBpbnRlZ2VyIHR5cGUgb2Ygd2lkdGggZXhhY3RseSA2NCBiaXRzIGlmCi0gICBzdWNoIGEgdHlwZSBleGlzdHMgYW5kIHRoZSBzdGFuZGFyZCBpbmNsdWRlcyBkbyBub3QgZGVmaW5lIGl0LiAqLwotI3VuZGVmIGludDY0X3QKLQogLyogRGVmaW5lIHRvIGBpbnQnIGlmIDxzeXMvdHlwZXMuaD4gZG9lcyBub3QgZGVmaW5lLiAqLwogI3VuZGVmIG1vZGVfdAogCkBAIC0xNTEzLDE0ICsxNTA4LDYgQEAKIC8qIERlZmluZSB0byBgaW50JyBpZiA8c3lzL3R5cGVzLmg+IGRvZXNuJ3QgZGVmaW5lLiAqLwogI3VuZGVmIHVpZF90CiAKLS8qIERlZmluZSB0byB0aGUgdHlwZSBvZiBhbiB1bnNpZ25lZCBpbnRlZ2VyIHR5cGUgb2Ygd2lkdGggZXhhY3RseSAzMiBiaXRzIGlmCi0gICBzdWNoIGEgdHlwZSBleGlzdHMgYW5kIHRoZSBzdGFuZGFyZCBpbmNsdWRlcyBkbyBub3QgZGVmaW5lIGl0LiAqLwotI3VuZGVmIHVpbnQzMl90Ci0KLS8qIERlZmluZSB0byB0aGUgdHlwZSBvZiBhbiB1bnNpZ25lZCBpbnRlZ2VyIHR5cGUgb2Ygd2lkdGggZXhhY3RseSA2NCBiaXRzIGlmCi0gICBzdWNoIGEgdHlwZSBleGlzdHMgYW5kIHRoZSBzdGFuZGFyZCBpbmNsdWRlcyBkbyBub3QgZGVmaW5lIGl0LiAqLwotI3VuZGVmIHVpbnQ2NF90Ci0KIC8qIERlZmluZSB0byBlbXB0eSBpZiB0aGUga2V5d29yZCBkb2VzIG5vdCB3b3JrLiAqLwogI3VuZGVmIHZvbGF0aWxlCiAKZGlmZiAtLWdpdCBhL3NldHVwLnB5IGIvc2V0dXAucHkKaW5kZXggNDBmOGJmMi4uZDIxODcyMiAxMDA2NDQKLS0tIGEvc2V0dXAucHkKKysrIGIvc2V0dXAucHkKQEAgLTE4NSw3ICsxODUsNyBAQAogICAgIGlmIG5vdCBsaXN0OgogICAgICAgICByZXR1cm4gbW9kdWxlCiAgICAgaWYgbGVuKGxpc3QpID4gMToKLSAgICAgICAgbG9nLmluZm8oIldBUk5JTkc6IG11bHRpcGxlIGNvcGllcyBvZiAlcyBmb3VuZCIlbW9kdWxlKQorICAgICAgICBsb2cuaW5mbygiV0FSTklORzogbXVsdGlwbGUgY29waWVzIG9mICVzIGZvdW5kIiwgbW9kdWxlKQogICAgIHJldHVybiBvcy5wYXRoLmpvaW4obGlzdFswXSwgbW9kdWxlKQogCiBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6CkBAIC01MzIsOCArNTMyLDkgQEAKICAgICAgICAgICAgICAgICAgICAgZm9yIGRpcmVjdG9yeSBpbiByZXZlcnNlZChvcHRpb25zLmRpcnMpOgogICAgICAgICAgICAgICAgICAgICAgICAgYWRkX2Rpcl90b19saXN0KGRpcl9saXN0LCBkaXJlY3RvcnkpCiAKLSAgICAgICAgaWYgb3MucGF0aC5ub3JtcGF0aChzeXMuYmFzZV9wcmVmaXgpICE9ICcvdXNyJyBcCi0gICAgICAgICAgICAgICAgYW5kIG5vdCBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1BZVEhPTkZSQU1FV09SSycpOgorICAgICAgICBpZiAobm90IGNyb3NzX2NvbXBpbGluZyBhbmQKKyAgICAgICAgICAgICAgICBvcy5wYXRoLm5vcm1wYXRoKHN5cy5iYXNlX3ByZWZpeCkgIT0gJy91c3InIGFuZAorICAgICAgICAgICAgICAgIG5vdCBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1BZVEhPTkZSQU1FV09SSycpKToKICAgICAgICAgICAgICMgT1NYIG5vdGU6IERvbid0IGFkZCBMSUJESVIgYW5kIElOQ0xVREVESVIgdG8gYnVpbGRpbmcgYSBmcmFtZXdvcmsKICAgICAgICAgICAgICMgKFBZVEhPTkZSQU1FV09SSyBpcyBzZXQpIHRvIGF2b2lkICMgbGlua2luZyBwcm9ibGVtcyB3aGVuCiAgICAgICAgICAgICAjIGJ1aWxkaW5nIGEgZnJhbWV3b3JrIHdpdGggZGlmZmVyZW50IGFyY2hpdGVjdHVyZXMgdGhhbgpAQCAtNjUxLDkgKzY1MiwxMiBAQAogICAgICAgICAjIHByb2ZpbGVyIChfbHNwcm9mIGlzIGZvciBjUHJvZmlsZS5weSkKICAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignX2xzcHJvZicsIFsnX2xzcHJvZi5jJywgJ3JvdGF0aW5ndHJlZS5jJ10pICkKICAgICAgICAgIyBzdGF0aWMgVW5pY29kZSBjaGFyYWN0ZXIgZGF0YWJhc2UKLSAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbigndW5pY29kZWRhdGEnLCBbJ3VuaWNvZGVkYXRhLmMnXSkgKQorICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCd1bmljb2RlZGF0YScsIFsndW5pY29kZWRhdGEuYyddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZHM9Wyd1bmljb2RlZGF0YV9kYi5oJywgJ3VuaWNvZGVuYW1lX2RiLmgnXSkgKQogICAgICAgICAjIF9vcGNvZGUgbW9kdWxlCiAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19vcGNvZGUnLCBbJ19vcGNvZGUuYyddKSApCisgICAgICAgICMgYXN5bmNpbyBzcGVlZHVwcworICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCJfYXN5bmNpbyIsIFsiX2FzeW5jaW9tb2R1bGUuYyJdKSApCiAKICAgICAgICAgIyBNb2R1bGVzIHdpdGggc29tZSBVTklYIGRlcGVuZGVuY2llcyAtLSBvbiBieSBkZWZhdWx0OgogICAgICAgICAjIChJZiB5b3UgaGF2ZSBhIHJlYWxseSBiYWNrd2FyZCBVTklYLCBzZWxlY3QgYW5kIHNvY2tldCBtYXkgbm90IGJlCkBAIC04MzcsNyArODQxLDcgQEAKICAgICAgICAgIyBmaW5kIG91dCB3aGljaCB2ZXJzaW9uIG9mIE9wZW5TU0wgd2UgaGF2ZQogICAgICAgICBvcGVuc3NsX3ZlciA9IDAKICAgICAgICAgb3BlbnNzbF92ZXJfcmUgPSByZS5jb21waWxlKAotICAgICAgICAgICAgJ15ccyojXHMqZGVmaW5lXHMrT1BFTlNTTF9WRVJTSU9OX05VTUJFUlxzKygweFswLTlhLWZBLUZdKyknICkKKyAgICAgICAgICAgIHInXlxzKiNccypkZWZpbmVccytPUEVOU1NMX1ZFUlNJT05fTlVNQkVSXHMrKDB4WzAtOWEtZkEtRl0rKScgKQogCiAgICAgICAgICMgbG9vayBmb3IgdGhlIG9wZW5zc2wgdmVyc2lvbiBoZWFkZXIgb24gdGhlIGNvbXBpbGVyIHNlYXJjaCBwYXRoLgogICAgICAgICBvcGVuc3Nsdl9oID0gZmluZF9maWxlKCdvcGVuc3NsL29wZW5zc2x2LmgnLCBbXSwKQEAgLTg4OCw2ICs4OTIsMjkgQEAKICAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignX3NoYTEnLCBbJ3NoYTFtb2R1bGUuYyddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZHM9WydoYXNobGliLmgnXSkgKQogCisgICAgICAgIGJsYWtlMl9kZXBzID0gZ2xvYihvcy5wYXRoLmpvaW4ob3MuZ2V0Y3dkKCksIHNyY2RpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTW9kdWxlcy9fYmxha2UyL2ltcGwvKicpKQorICAgICAgICBibGFrZTJfZGVwcy5hcHBlbmQoJ2hhc2hsaWIuaCcpCisKKyAgICAgICAgYmxha2UyX21hY3JvcyA9IFtdCisgICAgICAgIGlmIG5vdCBjcm9zc19jb21waWxpbmcgYW5kIG9zLnVuYW1lKCkubWFjaGluZSA9PSAieDg2XzY0IjoKKyAgICAgICAgICAgICMgRXZlcnkgeDg2XzY0IG1hY2hpbmUgaGFzIGF0IGxlYXN0IFNTRTIuCisgICAgICAgICAgICBibGFrZTJfbWFjcm9zLmFwcGVuZCgoJ0JMQUtFMl9VU0VfU1NFJywgJzEnKSkKKworICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfYmxha2UyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ19ibGFrZTIvYmxha2UybW9kdWxlLmMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX2JsYWtlMi9ibGFrZTJiX2ltcGwuYycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfYmxha2UyL2JsYWtlMnNfaW1wbC5jJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lX21hY3Jvcz1ibGFrZTJfbWFjcm9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZHM9Ymxha2UyX2RlcHMpICkKKworICAgICAgICBzaGEzX2RlcHMgPSBnbG9iKG9zLnBhdGguam9pbihvcy5nZXRjd2QoKSwgc3JjZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTW9kdWxlcy9fc2hhMy9rY3AvKicpKQorICAgICAgICBzaGEzX2RlcHMuYXBwZW5kKCdoYXNobGliLmgnKQorICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfc2hhMycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydfc2hhMy9zaGEzbW9kdWxlLmMnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRzPXNoYTNfZGVwcykpCisKICAgICAgICAgIyBNb2R1bGVzIHRoYXQgcHJvdmlkZSBwZXJzaXN0ZW50IGRpY3Rpb25hcnktbGlrZSBzZW1hbnRpY3MuICBZb3Ugd2lsbAogICAgICAgICAjIHByb2JhYmx5IHdhbnQgdG8gYXJyYW5nZSBmb3IgYXQgbGVhc3Qgb25lIG9mIHRoZW0gdG8gYmUgYXZhaWxhYmxlIG9uCiAgICAgICAgICMgeW91ciBtYWNoaW5lLCB0aG91Z2ggbm9uZSBhcmUgZGVmaW5lZCBieSBkZWZhdWx0IGJlY2F1c2Ugb2YgbGlicmFyeQpAQCAtMTMyMyw3ICsxMzUwLDggQEAKICAgICAgICAgcGFuZWxfbGlicmFyeSA9ICdwYW5lbCcKICAgICAgICAgaWYgY3Vyc2VzX2xpYnJhcnkgPT0gJ25jdXJzZXN3JzoKICAgICAgICAgICAgIGN1cnNlc19kZWZpbmVzLmFwcGVuZCgoJ0hBVkVfTkNVUlNFU1cnLCAnMScpKQotICAgICAgICAgICAgY3Vyc2VzX2luY2x1ZGVzLmFwcGVuZCgnL3Vzci9pbmNsdWRlL25jdXJzZXN3JykKKyAgICAgICAgICAgIGlmIG5vdCBjcm9zc19jb21waWxpbmc6CisgICAgICAgICAgICAgICAgY3Vyc2VzX2luY2x1ZGVzLmFwcGVuZCgnL3Vzci9pbmNsdWRlL25jdXJzZXN3JykKICAgICAgICAgICAgICMgQnVnIDE0NjQwNTY6IElmIF9jdXJzZXMuc28gbGlua3Mgd2l0aCBuY3Vyc2VzdywKICAgICAgICAgICAgICMgX2N1cnNlc19wYW5lbC5zbyBtdXN0IGxpbmsgd2l0aCBwYW5lbHcuCiAgICAgICAgICAgICBwYW5lbF9saWJyYXJ5ID0gJ3BhbmVsdycKQEAgLTE2MDQsNyArMTYzMiw3IEBACiAjIyAgICAgICAgIGV4dCA9IEV4dGVuc2lvbigneHgnLCBbJ3h4bW9kdWxlLmMnXSkKICMjICAgICAgICAgc2VsZi5leHRlbnNpb25zLmFwcGVuZChleHQpCiAKLSAgICAgICAgaWYgJ2QnIG5vdCBpbiBzeXMuYWJpZmxhZ3M6CisgICAgICAgIGlmICdkJyBub3QgaW4gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdBQklGTEFHUycpOgogICAgICAgICAgICAgZXh0ID0gRXh0ZW5zaW9uKCd4eGxpbWl0ZWQnLCBbJ3h4bGltaXRlZC5jJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lX21hY3Jvcz1bKCdQeV9MSU1JVEVEX0FQSScsICcweDAzMDUwMDAwJyldKQogICAgICAgICAgICAgc2VsZi5leHRlbnNpb25zLmFwcGVuZChleHQpCkBAIC0xNzAwLDcgKzE3MjgsNyBAQAogICAgICAgICAjIEFsbCBleGlzdGluZyBmcmFtZXdvcmsgYnVpbGRzIG9mIFRjbC9UayBkb24ndCBzdXBwb3J0IDY0LWJpdAogICAgICAgICAjIGFyY2hpdGVjdHVyZXMuCiAgICAgICAgIGNmbGFncyA9IHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcnMoJ0NGTEFHUycpWzBdCi0gICAgICAgIGFyY2hzID0gcmUuZmluZGFsbCgnLWFyY2hccysoXHcrKScsIGNmbGFncykKKyAgICAgICAgYXJjaHMgPSByZS5maW5kYWxsKHInLWFyY2hccysoXHcrKScsIGNmbGFncykKIAogICAgICAgICB0bXBmaWxlID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRfdGVtcCwgJ3RrLmFyY2gnKQogICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoc2VsZi5idWlsZF90ZW1wKToKQEAgLTE4ODcsNiArMTkxNSw5IEBACiAgICAgICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nOgogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNvbmZpZ3VyZV9jdHlwZXNfZGFyd2luKGV4dCkKIAorICAgICAgICAgICAgcHJpbnQoJ3dhcm5pbmc6IGJ1aWxkaW5nIHdpdGggdGhlIGJ1bmRsZWQgY29weSBvZiBsaWJmZmkgaXMnCisgICAgICAgICAgICAgICAgICAnIGRlcHJlY2F0ZWQgb24gdGhpcyBwbGF0Zm9ybS4gIEl0IHdpbGwgbm90IGJlJworICAgICAgICAgICAgICAgICAgJyBkaXN0cmlidXRlZCB3aXRoIFB5dGhvbiAzLjcnKQogICAgICAgICAgICAgc3JjZGlyID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdzcmNkaXInKQogICAgICAgICAgICAgZmZpX2J1aWxkZGlyID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRfdGVtcCwgJ2xpYmZmaScpCiAgICAgICAgICAgICBmZmlfc3JjZGlyID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihzcmNkaXIsICdNb2R1bGVzJywKQEAgLTE5ODMsMTMgKzIwMTQsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcz1tYXRoX2xpYnMpCiAgICAgICAgIHNlbGYuZXh0ZW5zaW9ucy5leHRlbmQoW2V4dCwgZXh0X3Rlc3RdKQogCi0gICAgICAgIGlmIG5vdCAnLS13aXRoLXN5c3RlbS1mZmknIGluIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcigiQ09ORklHX0FSR1MiKToKLSAgICAgICAgICAgIHJldHVybgotCiAgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgICAgICAgICBpZiAnLS13aXRoLXN5c3RlbS1mZmknIG5vdCBpbiBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoIkNPTkZJR19BUkdTIik6CisgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICAjIE9TIFggMTAuNSBjb21lcyB3aXRoIGxpYmZmaS5keWxpYjsgdGhlIGluY2x1ZGUgZmlsZXMgYXJlCiAgICAgICAgICAgICAjIGluIC91c3IvaW5jbHVkZS9mZmkKICAgICAgICAgICAgIGluY19kaXJzLmFwcGVuZCgnL3Vzci9pbmNsdWRlL2ZmaScpCisgICAgICAgIGVsaWYgJy0td2l0aG91dC1zeXN0ZW0tZmZpJyBpbiBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoIkNPTkZJR19BUkdTIik6CisgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICBmZmlfaW5jID0gW3N5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcigiTElCRkZJX0lOQ0xVREVESVIiKV0KICAgICAgICAgaWYgbm90IGZmaV9pbmMgb3IgZmZpX2luY1swXSA9PSAnJzoKQEAgLTIwMDgsNyArMjA0MCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICdmZmlfd3JhcHBlcl9oJy5mb3JtYXQoZmZpX2gpKQogICAgICAgICBmZmlfbGliID0gTm9uZQogICAgICAgICBpZiBmZmlfaW5jIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgZm9yIGxpYl9uYW1lIGluICgnZmZpX2NvbnZlbmllbmNlJywgJ2ZmaV9waWMnLCAnZmZpJyk6CisgICAgICAgICAgICBmb3IgbGliX25hbWUgaW4gKCdmZmknLCAnZmZpX3BpYycpOgogICAgICAgICAgICAgICAgIGlmIChzZWxmLmNvbXBpbGVyLmZpbmRfbGlicmFyeV9maWxlKGxpYl9kaXJzLCBsaWJfbmFtZSkpOgogICAgICAgICAgICAgICAgICAgICBmZmlfbGliID0gbGliX25hbWUKICAgICAgICAgICAgICAgICAgICAgYnJlYWsKQEAgLTIwNjEsNyArMjA5Myw3IEBACiAgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9mbnQuaCcsCiAgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9mb3Vyc3RlcC5oJywKICAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL2lvLmgnLAotICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvbWVtb3J5LmgnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvbXBhbGxvYy5oJywKICAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL21wZGVjaW1hbC5oJywKICAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL251bWJlcnRoZW9yeS5oJywKICAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL3NpeHN0ZXAuaCcsCkBAIC0yMTI3LDE1ICsyMTU5LDYgQEAKICAgICAgICAgaWYgbm90IHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignV0lUSF9USFJFQUQnKToKICAgICAgICAgICAgIGRlZmluZV9tYWNyb3MuYXBwZW5kKCgnV0lUSE9VVF9USFJFQURTJywgMSkpCiAKLSAgICAgICAgIyBJbmNyZWFzZSB3YXJuaW5nIGxldmVsIGZvciBnY2M6Ci0gICAgICAgIGlmICdnY2MnIGluIGNjOgotICAgICAgICAgICAgY21kID0gKCJlY2hvICcnIHwgJXMgLVdleHRyYSAtV25vLW1pc3NpbmctZmllbGQtaW5pdGlhbGl6ZXJzIC1FIC0gIgotICAgICAgICAgICAgICAgICAgICI+IC9kZXYvbnVsbCAyPiYxIiAlIGNjKQotICAgICAgICAgICAgcmV0ID0gb3Muc3lzdGVtKGNtZCkKLSAgICAgICAgICAgIGlmIHJldCA+PiA4ID09IDA6Ci0gICAgICAgICAgICAgICAgZXh0cmFfY29tcGlsZV9hcmdzLmV4dGVuZChbJy1XZXh0cmEnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctV25vLW1pc3NpbmctZmllbGQtaW5pdGlhbGl6ZXJzJ10pCi0KICAgICAgICAgIyBVbmNvbW1lbnQgZm9yIGV4dHJhIGZ1bmN0aW9uYWxpdHk6CiAgICAgICAgICNkZWZpbmVfbWFjcm9zLmFwcGVuZCgoJ0VYVFJBX0ZVTkNUSU9OQUxJVFknLCAxKSkKICAgICAgICAgZXh0ID0gRXh0ZW5zaW9uICgKQEAgLTIyMTQsNyArMjIzNyw3IEBACiAgICAgICAgICAgICAgICAgbmV3ZmlsZW5hbWUgPSBmaWxlbmFtZSArIGZ1bGx2ZXJzaW9uCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIG5ld2ZpbGVuYW1lID0gZmlsZW5hbWUgKyBtaW5vcm9ubHkKLSAgICAgICAgICAgIGxvZy5pbmZvKCdyZW5hbWluZyB7fSB0byB7fScuZm9ybWF0KGZpbGVuYW1lLCBuZXdmaWxlbmFtZSkpCisgICAgICAgICAgICBsb2cuaW5mbygncmVuYW1pbmcgJXMgdG8gJXMnLCBmaWxlbmFtZSwgbmV3ZmlsZW5hbWUpCiAgICAgICAgICAgICBvcy5yZW5hbWUoZmlsZW5hbWUsIG5ld2ZpbGVuYW1lKQogICAgICAgICAgICAgbmV3b3V0ZmlsZXMuYXBwZW5kKG5ld2ZpbGVuYW1lKQogICAgICAgICAgICAgaWYgZmlsZW5hbWUgaW4gdXBkYXRlZF9maWxlczoKQEAgLTIyNTYsNyArMjI3OSw3IEBACiAgICAgc2V0dXAoIyBQeVBJIE1ldGFkYXRhIChQRVAgMzAxKQogICAgICAgICAgIG5hbWUgPSAiUHl0aG9uIiwKICAgICAgICAgICB2ZXJzaW9uID0gc3lzLnZlcnNpb24uc3BsaXQoKVswXSwKLSAgICAgICAgICB1cmwgPSAiaHR0cDovL3d3dy5weXRob24ub3JnLyVzIiAlIHN5cy52ZXJzaW9uWzozXSwKKyAgICAgICAgICB1cmwgPSAiaHR0cDovL3d3dy5weXRob24ub3JnLyVkLiVkIiAlIHN5cy52ZXJzaW9uX2luZm9bOjJdLAogICAgICAgICAgIG1haW50YWluZXIgPSAiR3VpZG8gdmFuIFJvc3N1bSBhbmQgdGhlIFB5dGhvbiBjb21tdW5pdHkiLAogICAgICAgICAgIG1haW50YWluZXJfZW1haWwgPSAicHl0aG9uLWRldkBweXRob24ub3JnIiwKICAgICAgICAgICBkZXNjcmlwdGlvbiA9ICJBIGhpZ2gtbGV2ZWwgb2JqZWN0LW9yaWVudGVkIHByb2dyYW1taW5nIGxhbmd1YWdlIiwK